ZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvUkVBRE1FCmluZGV4IDBmN2NjOWIuLjk3ZDBlOTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL1JFQURNRQpAQCAtMTAsNjYgKzEwLDMxIEBACiBUaGlzIGxheWVyIGRlcGVuZHMgb246CiAKICAgVVJJOiBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlCi0gIGJyYW5jaDogMS4zNgorICBicmFuY2g6IG1hc3RlcgogCiAgIFVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUKICAgbGF5ZXJzOiBtZXRhCi0gIGJyYW5jaDogcm9ja28KKyAgYnJhbmNoOiBtYXN0ZXIKIAogICBVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL21ldGEtb3BlbmVtYmVkZGVkCiAgIGxheWVyczogbWV0YS1vZQotICBicmFuY2g6IHJvY2tvCisgIGJyYW5jaDogbWFzdGVyCiAKIFBhdGNoZXMKID09PT09PT0KIAogUGxlYXNlIHN1Ym1pdCBhbnkgcGF0Y2hlcyBhZ2FpbnN0IHRoZSBmaWxlc3lzdGVtcyBsYXllciB0byB0aGUKIE9wZW5FbWJlZGRlZCBkZXZlbG9wbWVudCBtYWlsaW5nIGxpc3QgKG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnKQotd2l0aCAnW21ldGEtZmlsZXN5c3RlbXNdW3JvY2tvXScgaW4gdGhlIHN1YmplY3QuCit3aXRoICdbbWV0YS1maWxlc3lzdGVtc10nIGluIHRoZSBzdWJqZWN0LgogCi1NYWludGFpbmVycyBMaXN0OgotICBwaHlzZnMgICAgICBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0KLSAgZnVzZSAgICAgICAgS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLSAgICAgICAgICAgICAgUGhpbGlwIEJhbGlzdGVyIDxwaGlsaXBAYmFsaXN0ZXIub3JnPgotICAgICAgICAgICAgICBob25neHUgamlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLSAgaWZ1c2UgICAgICAgU2FuZGVyIHZhbiBHcmlla2VuIDxzYW5kZXJAb3V0cmlnaHRzb2x1dGlvbnMubmw+Ci0gICAgICAgICAgICAgIEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci0KLSAgc3NoZnMtZnVzZSAgUGhpbGlwIEJhbGlzdGVyIDxwaGlsaXBAYmFsaXN0ZXIub3JnPgotICAgICAgICAgICAgICBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotCi0gIG93ZnMgICAgICAgIE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci0gICAgICAgICAgICAgIEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci0gICAgICAgICAgICAgIGhvbmd4dSBqaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotICBudGZzLTNnLW50ZnNwcm9ncyAgT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLSAgICAgICAgICAgICAgICAgICAgIGhvbmd4dSBqaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotICBjcmFtZnMgICAgICBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotCi0gIHNtYm5ldGZzICAgIFNhbmRlciB2YW4gR3JpZWtlbiA8c2FuZGVyQG91dHJpZ2h0c29sdXRpb25zLm5sPgotICAgICAgICAgICAgICBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotCi0gIGZ1c2UtZXhmYXQgIGhvbmd4dSBqaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotICBleGZhdC11dGlscyBob25neHUgamlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLSAgZjJmcy10b29scyAgTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotICAgICAgICAgICAgICBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotCi0gIHhmc3Byb2dzICAgIEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci0gICAgICAgICAgICAgIGhvbmd4dSBqaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0xheWVyIG1haW50YWluZXI6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CiAKIFdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzZSBzb21ldGhpbmcgbGlrZToKIAogICAgZ2l0IHNlbmQtZW1haWwgLTEgLU0gXAogICAgICAgICAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIFwKLSAgICAgICAgLS1zdWJqZWN0LXByZWZpeD1tZXRhLWZpbGVzeXN0ZW1zXVtyb2Nrb11bUEFUQ0gKKyAgICAgICAgLS1zdWJqZWN0LXByZWZpeD1tZXRhLWZpbGVzeXN0ZW1zXVtQQVRDSAogCi1yb2NrbyBCcmFuY2ggTWFpbnRhaW5lcjoKLUFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CiAKIFRhYmxlIG9mIENvbnRlbnRzCiA9PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9jb25mL2xheWVyLmNvbmYKaW5kZXggOWVkNmQxYi4uZGJjZmY0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvY29uZi9sYXllci5jb25mCkBAIC0xNCwzICsxNCw1IEBACiBMQVlFUlZFUlNJT05fZmlsZXN5c3RlbXMtbGF5ZXIgPSAiMSIKIAogTEFZRVJERVBFTkRTX2ZpbGVzeXN0ZW1zLWxheWVyID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgorCitMQVlFUlNFUklFU19DT01QQVRfZmlsZXN5c3RlbXMtbGF5ZXIgPSAic3VtbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzL1VzaW5nLVBLR19DSEVDS19NT0RVTEVTLXRvLWZvdW5kLWhlYWRlcnMtYW5kLWxpYnJhcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzL1VzaW5nLVBLR19DSEVDS19NT0RVTEVTLXRvLWZvdW5kLWhlYWRlcnMtYW5kLWxpYnJhcmllcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDYwYzlkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvc21ibmV0ZnMvc21ibmV0ZnMvVXNpbmctUEtHX0NIRUNLX01PRFVMRVMtdG8tZm91bmQtaGVhZGVycy1hbmQtbGlicmFyaWVzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gN2E1MjRkNDliM2Q0NDU5MjgwZjE4OTQyZGYyOTgwNjAzNDAwZWM1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJpYW4gTmFpbWVuZyA8Ymlhbm5tQGNuLmZ1aml0c3UuY29tPgorRGF0ZTogRnJpLCAxOSBKdW4gMjAxNSAxMTo1NDo0NCArMDkwMAorU3ViamVjdDogW1BBVENIXSBVc2luZyBQS0dfQ0hFQ0tfTU9EVUxFUyB0byBmb3VuZCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgb2YKKyBzbWJjbGllbnQKKworU2lnbmVkLW9mZi1ieTogQmlhbiBOYWltZW5nIDxiaWFubm1AY24uZnVqaXRzdS5jb20+CistLS0KKyBjb25maWd1cmUuaW4gICAgfCA1ICsrKysrCisgc3JjL01ha2VmaWxlLmFtIHwgMyArKysKKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0YzAzNDA5Li44ZDIyZTcxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMTksNiArMTE5LDExIEBAIEFDX0NIRUNLX0xJQihzbWJjbGllbnQsIHNtYmNfc2V0T3B0aW9uVXNlQ0NhY2hlLCBbXSwgWworIExJQlM9IiRMSUJTICRTTUJDTElFTlRfTElCUyIKKyBDRkxBR1M9IiRDRkxBR1MgJFNNQkNMSUVOVF9DRkxBR1MiCisgCisrZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrZG5sICoqKiBDaGVjayBsaWJzbWJjbGllbnQgYnkgcGtnY29uZmlnIHRvIGdldCBjZmxhZ3MgYW5kIGxkZmxhZ3MgKioqCisrZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrUEtHX0NIRUNLX01PRFVMRVMoU01CQ0xJRU5ULCBzbWJjbGllbnQpCisrCisgZG5sICoqKioqKioqKioqKioqKioqKgorIGRubCAqKiogRmluYWwgc3RlcCAqKioKKyBkbmwgKioqKioqKioqKioqKioqKioqCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCBjY2FhOGMzLi42NTk4MzE3IDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC0xNywzICsxNyw2IEBAIHNtYm5ldGZzX1NPVVJDRVMgPSBcCisgCWV2ZW50LmMJCQlldmVudC5oCQkJXAorIAlyZWNvbmZpZ3VyZS5jCQlyZWNvbmZpZ3VyZS5oCQlcCisgCW1haW4uYworKworK3NtYm5ldGZzX0NGTEFHUz0ke1NNQkNMSUVOVF9DRkxBR1N9Cisrc21ibmV0ZnNfTERGTEFHUz0ke1NNQkNMSUVOVF9MREZMQUdTfQorLS0gCisxLjguNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzL2NvbmZpZ3VyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTI3NTY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvc21ibmV0ZnMvc21ibmV0ZnMvY29uZmlndXJlLnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKK0luZGV4OiBnaXQvY29uZmlndXJlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDYtMTggMTY6MDY6MTYuMDQwNzIxMzQ5ICswMDAwCisrKysgZ2l0L2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE4IDA3OjQ5OjE3LjA4NTU1MjI1NiArMDAwMAorQEAgLTEsNSArMSw1IEBACisgQUNfSU5JVChbU01CTmV0RlNdLFswLjYuMV0pCistQU1fSU5JVF9BVVRPTUFLRQorK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQorIEFDX0NPTkZJR19IRUFERVJTKFtzcmMvY29uZmlnLmhdKQorIEFDX1BST0dfQ0MKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzI5MzZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvc21ibmV0ZnMvc21ibmV0ZnNfZ2l0LmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiRlVTRSBtb2R1bGUgZm9yIG1vdW50aW5nIGFuIGVudGlyZSBTTUIvTk1CIG5ldHdvcmsgaW4gYSBzaW5nbGUgZGlyZWN0b3J5IgorREVTQ1JJUFRJT04gPSAiU01CTmV0RlMgaXMgYSBMaW51eC9GcmVlQlNEIGZpbGVzeXN0ZW0gdGhhdCBhbGxvdyB5b3UgdG8gdXNlIFwKKyAgICAgICAgICAgICAgIHNhbWJhL21pY3Jvc29mdCBuZXR3b3JrIGluIHRoZSBzYW1lIG1hbm5lciBhcyB0aGUgbmV0d29yayBcCisgICAgICAgICAgICAgICBuZWlnaGJvcmhvb2QgaW4gTWljcm9zb2Z0IFdpbmRvd3MuIFBsZWFzZSBkb25hdGUgbWUgdG8gaGVscCBcCisgICAgICAgICAgICAgICBpbiBTTUJOZXRGUyBkZXZlbG9wbWVudC4iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSIKK0hPTUVQQUdFID0iaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9zbWJuZXRmcyIKKworREVQRU5EUyA9ICJmdXNlIHNhbWJhIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJleGVjaW5mbyIKKworIyBzYW1iYSBkZXBlbmRzIG9uIGxpYnBhbQoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdpdHBrZ3YgcGtnY29uZmlnCisKK1BLR1YgPSAiJHtHSVRQS0dWVEFHfSIKKworU1JDUkVWID0gImJjNmI5NGIwMTVmZGFmN2M0ZGFiNTZjY2I5OTZlZWNlYThiYzQzNzMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vc21ibmV0ZnMuZ2l0LnNvdXJjZWZvcmdlLm5ldC9naXRyb290L3NtYm5ldGZzL3NtYm5ldGZzO2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1VzaW5nLVBLR19DSEVDS19NT0RVTEVTLXRvLWZvdW5kLWhlYWRlcnMtYW5kLWxpYnJhcmllcy5wYXRjaCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbGlic2VjcmV0XSA9ICItLXdpdGgtbGlic2VjcmV0PXllcywtLXdpdGgtbGlic2VjcmV0PW5vLGxpYnNlY3JldCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGV4ZWNpbmZvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbC8wMDAxLWxpYmF1LURlZmluZS1TVFJJUC13ZWFrbHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9hdWZzLXV0aWwvYXVmcy11dGlsLzAwMDEtbGliYXUtRGVmaW5lLVNUUklQLXdlYWtseS5wYXRjaAppbmRleCA5ZWZlYTgwLi42NzMyZGM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9hdWZzLXV0aWwvYXVmcy11dGlsLzAwMDEtbGliYXUtRGVmaW5lLVNUUklQLXdlYWtseS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9hdWZzLXV0aWwvYXVmcy11dGlsLzAwMDEtbGliYXUtRGVmaW5lLVNUUklQLXdlYWtseS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYmI4ODAxZmIyMWFjOGQ3M2UzYjFhMTFhODU1NWFhZjgyMjE4MmE1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZGFmMDRkYzljYTFmMmU0YzY1ZWMzMzhhYjQzOWUwYTc5MmUxYThhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDUgU2VwIDIwMTcgMTA6MzY6NTIgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gbGliYXU6IERlZmluZSBTVFJJUCB3ZWFrbHkKQEAgLTYsMTAgKzYsMTEgQEAKIFNUUklQIGNhbiBiZSBzZXQgb24gZW52aXJvbm1lbnQgdG8gdXNlIGNyb3NzIHZlcnNpb24gb2Ygc3RyaXAgdXRpbGl0eQogaGFyZGNvZGluZyB0byBzdHJpcCBpcyBub3Qgd29ya2luZyBpbiBjcm9zcyBlbnZpcm9ubWVudAogCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAogCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0KICBsaWJhdS9NYWtlZmlsZSB8IDMgKystCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCkBAIC0zNCw2ICszNSwzIEBACiAgIwlyZWFkZWxmIC0tc3ltcyAtLXVzZS1keW5hbWljIGxpYmF1LnNvCiAgCiAgaW5zdGFsbF91bGliOiBGaWxlID0gJHtMaWJTb30uJHtMaWJTb01ham9yfS4ke0xpYlNvTWlub3J9Ci0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9hdWZzLXV0aWwvYXVmcy11dGlsL2F1ZnMtdXRpbC1hZGQtdG9vbC1jb25jZXB0LXRvLU1ha2VmaWxlLWZvci1jcm9zcy1jb20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9hdWZzLXV0aWwvYXVmcy11dGlsL2F1ZnMtdXRpbC1hZGQtdG9vbC1jb25jZXB0LXRvLU1ha2VmaWxlLWZvci1jcm9zcy1jb20ucGF0Y2gKaW5kZXggNWMzNTU4Ni4uYzgzMjY5NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbC9hdWZzLXV0aWwtYWRkLXRvb2wtY29uY2VwdC10by1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWwvYXVmcy11dGlsLWFkZC10b29sLWNvbmNlcHQtdG8tTWFrZWZpbGUtZm9yLWNyb3NzLWNvbS5wYXRjaApAQCAtMSwzICsxLDYgQEAKK0Zyb20gMTNhNjBjNjMxZDdjZjZjN2UxOTI2NDczZDgwNjk3OTVjMGRlZjliNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTkgSnVuIDIwMTQgMTU6MDk6NTYgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gYXVmcy11dGlsOiBhZGQgdG9vbCBjb25jZXB0IHRvIE1ha2VmaWxlIGZvciBjcm9zcyBjb21waWxpbmcKICBwdXJwb3NlCiAKQEAgLTcsMjMgKzEwLDIxIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBNYWtlZmlsZSB8ICAgIDIgKy0KKyBNYWtlZmlsZSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDJmOTA1YWQuLjQ5YzNjZDUgMTAwNjQ0CitpbmRleCBkYmJlNDNkLi5hZmY5NjllIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCi1AQCAtODUsNyArODUsNyBAQCBhdWZzLjU6IGF1ZnMuaW4uNSBjMnRtYWMKK0BAIC0xNTIsNyArMTUyLDcgQEAgYXVmcy41OiBhdWZzLmluLjUgYzJ0bWFjCiAgCWNobW9kIGEtdyAkQAogIAogIGMyc2ggYzJ0bWFjIHZlcjogQ0MgPSAke0hPU1RDQ30KIC0uSU5URVJNRURJQVRFOiBjMnNoIGMydG1hYyB2ZXIKICt0b29sczogYzJzaCBjMnRtYWMgdmVyCiAgCi0gSW5zdGFsbCA9IGluc3RhbGwgLW8gcm9vdCAtZyByb290IC1wCi0gaW5zdGFsbF9zYmluOiBGaWxlID0gYXVpYnVzeSBhdXBsaW5rIG1vdW50LmF1ZnMgdW1vdW50LmF1ZnMKLS0tIAotMS43LjkuNQotCisgaW5zdGFsbF9zYmluOiBGaWxlID0gYXVpYnVzeSBhdW12ZG93biBhdXBsaW5rIG1vdW50LmF1ZnMgdW1vdW50LmF1ZnMKKyBpZmVxICgke0dsaWJjfSxubykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWwvYXVmcy11dGlsLWRvbi10LXN0cmlwLWV4ZWN1dGFibGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbC9hdWZzLXV0aWwtZG9uLXQtc3RyaXAtZXhlY3V0YWJsZXMucGF0Y2gKaW5kZXggZmUyYTZhNS4uYjQwODIyYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbC9hdWZzLXV0aWwtZG9uLXQtc3RyaXAtZXhlY3V0YWJsZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbC9hdWZzLXV0aWwtZG9uLXQtc3RyaXAtZXhlY3V0YWJsZXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI0NDg2M2VjYTc3ZmNhYTExODc4ODQ4MzZjM2UyOGQ2YjZkMTUwNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDlkNWU3ZWZmNGFlOTA2ZjFlYTZlNjUyNzA4MGZkZWQwYjU5NWZiZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgOSBBcHIgMjAxMyAxODo1MDozNCAtMDcwMAogU3ViamVjdDogW1BBVENIXSBhdWZzLXV0aWw6IGRvbid0IHN0cmlwIGV4ZWN1dGFibGVzCkBAIC0xNCwxNiArMTQsMTkgQEAKIAogVG8gcHJldmVudCB0aGlzLCB3ZSByZW1vdmUgLXMgZnJvbSBMREZMQUdTLgogCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCiBTaWduZWQtb2ZmLWJ5OiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KKwogLS0tCi0gTWFrZWZpbGUgfCAgICAyICstCisgTWFrZWZpbGUgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAyZjkwNWFkLi5lMGM2ZGNkIDEwMDY0NAoraW5kZXggNTRmOGQ5Ny4uZGJiZTQzZCAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQotQEAgLTU2LDcgKzU2LDcgQEAgYWxsOiB2ZXJfdGVzdCAke01hbn0gJHtCaW59ICR7RXRjfQorQEAgLTExOCw3ICsxMTgsNyBAQCBjbGVhbjoKICB2ZXJfdGVzdDogdmVyCiAgCS4vdmVyCiAgCkBAIC0zMiw2ICszNSwzIEBACiAgJHtCaW59OiBMRExJQlMgPSAtTC4gLWxhdXRpbAogICR7QmluT2JqfTogJS5vOiAlLmMgJHtMaWJVdGlsSGRyfSAke0xpYlV0aWx9CiAgCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAveGZzZHVtcF8zLjEuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAveGZzZHVtcF8zLjEuNy5iYgppbmRleCAwYWM5OTFiLi4zOWYxMTg5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL3hmc2R1bXBfMy4xLjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC94ZnNkdW1wXzMuMS43LmJiCkBAIC0zNCw2ICszNCw4IEBACiAKIGRvX2NvbmZpZ3VyZSAoKSB7CiAgICAgZXhwb3J0IERFQlVHPSItRE5ERUJVRyIKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5ndWVzcyAke1N9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuc3ViICR7U30KICAgICBvZV9ydW5jb25mCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzLzAwMDEtYnVpbGQtQ2hlY2stZm9yLXN5bmNfZmlsZV9yYW5nZS1saWJjLWZ1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvMDAwMS1idWlsZC1DaGVjay1mb3Itc3luY19maWxlX3JhbmdlLWxpYmMtZnVuY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhmZjU1NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzLzAwMDEtYnVpbGQtQ2hlY2stZm9yLXN5bmNfZmlsZV9yYW5nZS1saWJjLWZ1bmN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsODIgQEAKK0Zyb20gYWU3MTcyMTk0ZDNmYmI1NjNmZjhiYmU3YzAyZDM0ZjFiZDBlNWVjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDIxOjI4OjUzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiBDaGVjayBmb3Igc3luY19maWxlX3JhbmdlIGxpYmMgZnVuY3Rpb24KKworZ2xpYmMgMi4yNyBub3cgaGFzIHN5bmNfZmlsZV9yYW5nZSgpCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgaW5jbHVkZS9idWlsZGRlZnMuaW4gfCAxICsKKyBpby9NYWtlZmlsZSAgICAgICAgICB8IDUgKysrKy0KKyBpby9pby5oICAgICAgICAgICAgICB8IDIgKy0KKyBpby9zeW5jX2ZpbGVfcmFuZ2UuYyB8IDMgKysrCisgNCBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2J1aWxkZGVmcy5pbiBiL2luY2x1ZGUvYnVpbGRkZWZzLmluCitpbmRleCA5MmQ1MDc2Li41MDQyMjVhIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9idWlsZGRlZnMuaW4KKysrKyBiL2luY2x1ZGUvYnVpbGRkZWZzLmluCitAQCAtMTA1LDYgKzEwNSw3IEBAIEhBVkVfRklFTUFQID0gQGhhdmVfZmllbWFwQAorIEhBVkVfUFJFQURWID0gQGhhdmVfcHJlYWR2QAorIEhBVkVfUFdSSVRFVjIgPSBAaGF2ZV9wd3JpdGV2MkAKKyBIQVZFX0NPUFlfRklMRV9SQU5HRSA9IEBoYXZlX2NvcHlfZmlsZV9yYW5nZUAKKytIQVZFX05SX0NPUFlfRklMRV9SQU5HRSA9IEBoYXZlX25yX2NvcHlfZmlsZV9yYW5nZUAKKyBIQVZFX1NZTkNfRklMRV9SQU5HRSA9IEBoYXZlX3N5bmNfZmlsZV9yYW5nZUAKKyBIQVZFX1NZTkNGUyA9IEBoYXZlX3N5bmNmc0AKKyBIQVZFX1JFQURESVIgPSBAaGF2ZV9yZWFkZGlyQAorZGlmZiAtLWdpdCBhL2lvL01ha2VmaWxlIGIvaW8vTWFrZWZpbGUKK2luZGV4IDY3MjU5MzYuLjE4NzZlOTUgMTAwNjQ0CistLS0gYS9pby9NYWtlZmlsZQorKysrIGIvaW8vTWFrZWZpbGUKK0BAIC01OSwxMCArNTksMTMgQEAgQ0ZJTEVTICs9IGluamVjdC5jIHJlc2Jsa3MuYworIExDRkxBR1MgKz0gLURIQVZFX0lOSkVDVCAtREhBVkVfUkVTQkxLUworIGVuZGlmCisgCistaWZlcSAoJChIQVZFX0NPUFlfRklMRV9SQU5HRSkseWVzKQorK2lmZXEgKCQoSEFWRV9OUl9DT1BZX0ZJTEVfUkFOR0UpLHllcykKKyBDRklMRVMgKz0gY29weV9maWxlX3JhbmdlLmMKKytMQ0ZMQUdTICs9IC1ESEFWRV9OUl9DT1BZX0ZJTEVfUkFOR0UKKytpZmVxICgkKEhBVkVfQ09QWV9GSUxFX1JBTkdFKSx5ZXMpCisgTENGTEFHUyArPSAtREhBVkVfQ09QWV9GSUxFX1JBTkdFCisgZW5kaWYKKytlbmRpZgorIAorIGlmZXEgKCQoSEFWRV9TWU5DX0ZJTEVfUkFOR0UpLHllcykKKyBDRklMRVMgKz0gc3luY19maWxlX3JhbmdlLmMKK2RpZmYgLS1naXQgYS9pby9pby5oIGIvaW8vaW8uaAoraW5kZXggMzg2Mjk4NS4uNzlkZGM3YiAxMDA2NDQKKy0tLSBhL2lvL2lvLmgKKysrKyBiL2lvL2lvLmgKK0BAIC0xNTgsNyArMTU4LDcgQEAgZXh0ZXJuIHZvaWQJCWZpZW1hcF9pbml0KHZvaWQpOworICNkZWZpbmUgZmllbWFwX2luaXQoKQlkbyB7IH0gd2hpbGUgKDApCisgI2VuZGlmCisgCistI2lmZGVmIEhBVkVfQ09QWV9GSUxFX1JBTkdFCisrI2lmIGRlZmluZWQoSEFWRV9OUl9DT1BZX0ZJTEVfUkFOR0UpICYmICFkZWZpbmVkKEhBVkVfQ09QWV9GSUxFX1JBTkdFKQorIGV4dGVybiB2b2lkCQljb3B5X3JhbmdlX2luaXQodm9pZCk7CisgI2Vsc2UKKyAjZGVmaW5lIGNvcHlfcmFuZ2VfaW5pdCgpCWRvIHsgfSB3aGlsZSAoMCkKK2RpZmYgLS1naXQgYS9pby9zeW5jX2ZpbGVfcmFuZ2UuYyBiL2lvL3N5bmNfZmlsZV9yYW5nZS5jCitpbmRleCA3ZTRmM2U2Li5hYWZlYTAxIDEwMDY0NAorLS0tIGEvaW8vc3luY19maWxlX3JhbmdlLmMKKysrKyBiL2lvL3N5bmNfZmlsZV9yYW5nZS5jCitAQCAtMTYsNiArMTYsNyBAQAorICAqIEluYy4sICA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICAqLworIAorKyNpZm5kZWYgSEFWRV9DT1BZX0ZJTEVfUkFOR0UKKyAjaW5jbHVkZSAiY29tbWFuZC5oIgorICNpbmNsdWRlICJpbnB1dC5oIgorICNpbmNsdWRlICJpbml0LmgiCitAQCAtMTA0LDMgKzEwNSw1IEBAIHN5bmNfcmFuZ2VfaW5pdCh2b2lkKQorIAorIAlhZGRfY29tbWFuZCgmc3luY19yYW5nZV9jbWQpOworIH0KKysKKysjZW5kaWYKKy0tIAorMi4xNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzLzAwMDEteGZzLXJlbW92ZS1kb3VibGUtdW5kZXJzY29yZS1pbnRlZ2VyLXR5cGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvMDAwMS14ZnMtcmVtb3ZlLWRvdWJsZS11bmRlcnNjb3JlLWludGVnZXItdHlwZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0N2M0ODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvMDAwMS14ZnMtcmVtb3ZlLWRvdWJsZS11bmRlcnNjb3JlLWludGVnZXItdHlwZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDgyICswLDAgQEAKLUZyb20gNGE0OTJlNzI1MTU1MDllZTcwMjI4NmE0MmFmZTdkOGY4OWQzNzYzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJEYXJyaWNrIEouIFdvbmciIDxkYXJyaWNrLndvbmdAb3JhY2xlLmNvbT4KLURhdGU6IE1vbiwgMzEgSnVsIDIwMTcgMTU6MDg6MTAgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0geGZzOiByZW1vdmUgZG91YmxlLXVuZGVyc2NvcmUgaW50ZWdlciB0eXBlcwotCi1Tb3VyY2Uga2VybmVsIGNvbW1pdDogYzhjZTU0MGRiNWY2N2QyNTRhYWZiMTRiNWQ3NjQyMmM2MmE5MDZkZgotCi1UaGlzIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgcGF0Y2ggdGhhdCByZW1vdmVzIHRoZSBwcml2YXRlCi1fX3t1LH1pbnR7OCwxNiwzMiw2NH1fdCB0eXBlZGVmcyBpbiBmYXZvciBvZiB1c2luZyB0aGUgc3lzdGVtCi17dSx9aW50ezgsMTYsMzIsNjR9X3QgdHlwZWRlZnMuICBUaGlzIGlzIHRoZSBzZWQgc2NyaXB0IHVzZWQgdG8gcGVyZm9ybQotdGhlIHRyYW5zZm9ybWF0aW9uIGFuZCBmaXggdGhlIHJlc3VsdGluZyB3aGl0ZXNwYWNlIGFuZCBpbmRlbnRhdGlvbgotZXJyb3JzOgotCi1zL3R5cGVkZWZcdF9fdWludDhfdC90eXBlZGVmIF9fdWludDhfdFx0L2cKLXMvdHlwZWRlZlx0X191aW50L3R5cGVkZWYgX191aW50L2cKLXMvdHlwZWRlZlx0X19pbnRcKFswLTldKlwpX3QvdHlwZWRlZiBpbnRcMV90XHQvZwotcy9fX3VpbnQ4X3RcdC9fX3VpbnQ4X3RcdFx0L2cKLXMvX191aW50L3VpbnQvZwotcy9fX2ludFwoWzAtOV0qXClfdFx0L19faW50XDFfdFx0XHQvZwotcy9fX2ludC9pbnQvZwotL150eXBlZGVmLippbnRbMC05XSpfdDskL2QKLQotU2lnbmVkLW9mZi1ieTogRGFycmljayBKLiBXb25nIDxkYXJyaWNrLndvbmdAb3JhY2xlLmNvbT4KLVJldmlld2VkLWJ5OiBDaHJpc3RvcGggSGVsbHdpZyA8aGNoQGxzdC5kZT4KLVNpZ25lZC1vZmYtYnk6IEVyaWMgU2FuZGVlbiA8c2FuZGVlbkBzYW5kZWVuLm5ldD4KLS0tLQotIGxpYnhmcy9saWJ4ZnNfcHJpdi5oICAgICAgICB8ICAgMSArCi0gbGlieGZzL3hmc19hbGxvY19idHJlZS5jICAgIHwgIDIwICsrLS0KLSBsaWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMgICAgfCAgIDggKy0KLSBsaWJ4ZnMveGZzX2F0dHJfc2YuaCAgICAgICAgfCAgMTAgKy0KLSBsaWJ4ZnMveGZzX2JpdC5oICAgICAgICAgICAgfCAgMjQgKystLS0KLSBsaWJ4ZnMveGZzX2JtYXBfYnRyZWUuYyAgICAgfCAgIDggKy0KLSBsaWJ4ZnMveGZzX2J0cmVlLmMgICAgICAgICAgfCAgMjIgKystLQotIGxpYnhmcy94ZnNfYnRyZWUuaCAgICAgICAgICB8ICAxOCArKy0tCi0gbGlieGZzL3hmc19ja3N1bS5oICAgICAgICAgIHwgIDE2ICstLQotIGxpYnhmcy94ZnNfZGFfYnRyZWUuYyAgICAgICB8ICAgMiArLQotIGxpYnhmcy94ZnNfZGFfYnRyZWUuaCAgICAgICB8ICAgOCArLQotIGxpYnhmcy94ZnNfZGFfZm9ybWF0LmMgICAgICB8ICAyOCArKy0tLQotIGxpYnhmcy94ZnNfZGFfZm9ybWF0LmggICAgICB8ICA2NCArKysrKy0tLS0tLQotIGxpYnhmcy94ZnNfZGlyMi5oICAgICAgICAgICB8ICAgOCArLQotIGxpYnhmcy94ZnNfZGlyMl9sZWFmLmMgICAgICB8ICAxMiArLS0KLSBsaWJ4ZnMveGZzX2RpcjJfcHJpdi5oICAgICAgfCAgIDIgKy0KLSBsaWJ4ZnMveGZzX2RpcjJfc2YuYyAgICAgICAgfCAgIDQgKy0KLSBsaWJ4ZnMveGZzX2Zvcm1hdC5oICAgICAgICAgfCAxMTIgKysrKysrKysrLS0tLS0tLS0tLQotIGxpYnhmcy94ZnNfZnMuaCAgICAgICAgICAgICB8ICAxMiArLS0KLSBsaWJ4ZnMveGZzX2lhbGxvYy5jICAgICAgICAgfCAgIDYgKy0KLSBsaWJ4ZnMveGZzX2lhbGxvY19idHJlZS5jICAgfCAgIDQgKy0KLSBsaWJ4ZnMveGZzX2lub2RlX2J1Zi5jICAgICAgfCAgIDIgKy0KLSBsaWJ4ZnMveGZzX2lub2RlX2J1Zi5oICAgICAgfCAgMjggKystLS0KLSBsaWJ4ZnMveGZzX2xvZ19mb3JtYXQuaCAgICAgfCAyNTYgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBsaWJ4ZnMveGZzX3F1b3RhX2RlZnMuaCAgICAgfCAgIDQgKy0KLSBsaWJ4ZnMveGZzX3JlZmNvdW50X2J0cmVlLmMgfCAgIDggKy0KLSBsaWJ4ZnMveGZzX3JtYXAuYyAgICAgICAgICAgfCAgIDggKy0KLSBsaWJ4ZnMveGZzX3JtYXAuaCAgICAgICAgICAgfCAgIDggKy0KLSBsaWJ4ZnMveGZzX3JtYXBfYnRyZWUuYyAgICAgfCAgMzAgKysrLS0tCi0gbGlieGZzL3hmc19ydGJpdG1hcC5jICAgICAgIHwgICAyICstCi0gbGlieGZzL3hmc19zYi5jICAgICAgICAgICAgIHwgICA0ICstCi0gbGlieGZzL3hmc190eXBlcy5oICAgICAgICAgIHwgIDQ2ICsrKystLS0tCi0gMzIgZmlsZXMgY2hhbmdlZCwgMzkzIGluc2VydGlvbnMoKyksIDM5MiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnhmcy9saWJ4ZnNfcHJpdi5oIGIvbGlieGZzL2xpYnhmc19wcml2LmgKLWluZGV4IDBiNGM0ODkwLi5iM2NjN2U1MyAxMDA2NDQKLS0tLSBhL2xpYnhmcy9saWJ4ZnNfcHJpdi5oCi0rKysgYi9saWJ4ZnMvbGlieGZzX3ByaXYuaAotQEAgLTUwNCw1ICs1MDQsNiBAQCBib29sIHhmc19sb2dfY2hlY2tfbHNuKHN0cnVjdCB4ZnNfbW91bnQgKiwgeGZzX2xzbl90KTsKLSAjZGVmaW5lIFhGU19TVEFUU19JTkNfT0ZGKG1wLCBvZmYpCi0gI2RlZmluZSBYRlNfU1RBVFNfQUREX09GRihtcCwgb2ZmLCB2YWwpCi0gCi0rdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4OwotIAotICNlbmRpZgkvKiBfX0xJQlhGU19JTlRFUk5BTF9YRlNfSF9fICovCi1kaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19hbGxvY19idHJlZS5jIGIvbGlieGZzL3hmc19hbGxvY19idHJlZS5jCi1pbmRleCBlMTFkODlhMy4uOGU3N2U2ZTMgMTAwNjQ0Ci0tLS0gYS9saWJ4ZnMveGZzX2FsbG9jX2J0cmVlLmMKLSsrKyBiL2xpYnhmcy94ZnNfYWxsb2NfYnRyZWUuYwotQEAgLTI1MSw3ICsyNTEsNyBAQCB4ZnNfYWxsb2NidF9pbml0X3B0cl9mcm9tX2N1cigKLSAJcHRyLT5zID0gYWdmLT5hZ2Zfcm9vdHNbY3VyLT5iY19idG51bV07Ci0gfQotIAotLVNUQVRJQyBfX2ludDY0X3QKLStTVEFUSUMgaW50NjRfdAotIHhmc19ibm9idF9rZXlfZGlmZigKLSAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKLSAJdW5pb24geGZzX2J0cmVlX2tleQkqa2V5KQotQEAgLTI1OSw0MiArMjU5LDQyIEBAIHhmc19ibm9idF9rZXlfZGlmZigKLSAJeGZzX2FsbG9jX3JlY19pbmNvcmVfdAkqcmVjID0gJmN1ci0+YmNfcmVjLmE7Ci0gCXhmc19hbGxvY19rZXlfdAkJKmtwID0gJmtleS0+YWxsb2M7Ci0gCi0tCXJldHVybiAoX19pbnQ2NF90KWJlMzJfdG9fY3B1KGtwLT5hcl9zdGFydGJsb2NrKSAtIHJlYy0+YXJfc3RhcnRibG9jazsKLSsJcmV0dXJuIChpbnQ2NF90KWJlMzJfdG9fY3B1KGtwLT5hcl9zdGFydGJsb2NrKSAtIHJlYy0+YXJfc3RhcnRibG9jazsKLSB9Ci0gCi0tU1RBVElDIF9faW50NjRfdAotK1NUQVRJQyBpbnQ2NF90Ci0geGZzX2NudGJ0X2tleV9kaWZmKAotIAlzdHJ1Y3QgeGZzX2J0cmVlX2N1cgkqY3VyLAotIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CSprZXkpCi0gewotIAl4ZnNfYWxsb2NfcmVjX2luY29yZV90CSpyZWMgPSAmY3VyLT5iY19yZWMuYTsKLSAJeGZzX2FsbG9jX2tleV90CQkqa3AgPSAma2V5LT5hbGxvYzsKLS0JX19pbnQ2NF90CQlkaWZmOwotKwlpbnQ2NF90CQkJZGlmZjsKLSAKLS0JZGlmZiA9IChfX2ludDY0X3QpYmUzMl90b19jcHUoa3AtPmFyX2Jsb2NrY291bnQpIC0gcmVjLT5hcl9ibG9ja2NvdW50OwotKwlkaWZmID0gKGludDY0X3QpYmUzMl90b19jcHUoa3AtPmFyX2Jsb2NrY291bnQpIC0gcmVjLT5hcl9ibG9ja2NvdW50OwotIAlpZiAoZGlmZikKLSAJCXJldHVybiBkaWZmOwotIAotLQlyZXR1cm4gKF9faW50NjRfdCliZTMyX3RvX2NwdShrcC0+YXJfc3RhcnRibG9jaykgLSByZWMtPmFyX3N0YXJ0YmxvY2s7Ci0rCXJldHVybiAoaW50NjRfdCliZTMyX3RvX2NwdShrcC0+YXJfc3RhcnRibG9jaykgLSByZWMtPmFyX3N0YXJ0YmxvY2s7Ci0gfQotIAotLVNUQVRJQyBfX2ludDY0X3QKLStTVEFUSUMgaW50NjRfdAotIHhmc19ibm9idF9kaWZmX3R3b19rZXlzKAotIAlzdHJ1Y3QgeGZzX2J0cmVlX2N1cgkqY3VyLAotIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CSprMSwKLSAJdW5pb24geGZzX2J0cmVlX2tleQkqazIpCi0gewotLQlyZXR1cm4gKF9faW50NjRfdCliZTMyX3RvX2NwdShrMS0+YWxsb2MuYXJfc3RhcnRibG9jaykgLQotKwlyZXR1cm4gKGludDY0X3QpYmUzMl90b19jcHUoazEtPmFsbG9jLmFyX3N0YXJ0YmxvY2spIC0KLSAJCQkgIGJlMzJfdG9fY3B1KGsyLT5hbGxvYy5hcl9zdGFydGJsb2NrKTsKLSB9Ci0gCi0tU1RBVElDIF9faW50NjRfdAotK1NUQVRJQyBpbnQ2NF90Ci0geGZzX2NudGJ0X2RpZmZfdHdvX2tleXMoCi0gCXN0cnVjdCB4ZnNfYnRyZWVfY3VyCSpjdXIsCi0gCXVuaW9uIHhmc19idHJlZV9rZXkJKmsxLAotIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CSprMikKLSB7Ci0tCV9faW50NjRfdAkJZGlmZjsKLSsJaW50NjRfdAkJCWRpZmY7Ci0gCi0gCWRpZmYgPSAgYmUzMl90b19jcHUoazEtPmFsbG9jLmFyX2Jsb2NrY291bnQpIC0KLSAJCWJlMzJfdG9fY3B1KGsyLT5hbGxvYy5hcl9ibG9ja2NvdW50KTsKLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMgYi9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMKLWluZGV4IGFiZTE3MDUyLi4xZjI1ZTM2MyAxMDA2NDQKLS0tLSBhL2xpYnhmcy94ZnNfYXR0cl9yZW1vdGUuYwotKysrIGIvbGlieGZzL3hmc19hdHRyX3JlbW90ZS5jCi1AQCAtMjQ4LDcgKzI0OCw3IEBAIHhmc19hdHRyX3JtdHZhbF9jb3B5b3V0KAotIAl4ZnNfaW5vX3QJaW5vLAotIAlpbnQJCSpvZmZzZXQsCi0gCWludAkJKnZhbHVlbGVuLAotLQlfX3VpbnQ4X3QJKipkc3QpCi0rCXVpbnQ4X3QJCSoqZHN0KQotIHsKLSAJY2hhcgkJKnNyYyA9IGJwLT5iX2FkZHI7Ci0gCXhmc19kYWRkcl90CWJubyA9IGJwLT5iX2JuOwotQEAgLTI5Niw3ICsyOTYsNyBAQCB4ZnNfYXR0cl9ybXR2YWxfY29weWluKAotIAl4ZnNfaW5vX3QJaW5vLAotIAlpbnQJCSpvZmZzZXQsCi0gCWludAkJKnZhbHVlbGVuLAotLQlfX3VpbnQ4X3QJKipzcmMpCi0rCXVpbnQ4X3QJCSoqc3JjKQotIHsKLSAJY2hhcgkJKmRzdCA9IGJwLT5iX2FkZHI7Ci0gCXhmc19kYWRkcl90CWJubyA9IGJwLT5iX2JuOwotQEAgLTM1MCw3ICszNTAsNyBAQCB4ZnNfYXR0cl9ybXR2YWxfZ2V0KAotIAlzdHJ1Y3QgeGZzX21vdW50CSptcCA9IGFyZ3MtPmRwLT5pX21vdW50OwotIAlzdHJ1Y3QgeGZzX2J1ZgkJKmJwOwotIAl4ZnNfZGFibGtfdAkJbGJsa25vID0gYXJncy0+cm10Ymxrbm87Ci0tCV9fdWludDhfdAkJKmRzdCA9IGFyZ3MtPnZhbHVlOwotKwl1aW50OF90CQkJKmRzdCA9IGFyZ3MtPnZhbHVlOwotIAlpbnQJCQl2YWx1ZWxlbjsKLSAJaW50CQkJbm1hcDsKLSAJaW50CQkJZXJyb3I7Ci1AQCAtNDE2LDcgKzQxNiw3IEBAIHhmc19hdHRyX3JtdHZhbF9zZXQoCi0gCXN0cnVjdCB4ZnNfYm1idF9pcmVjCW1hcDsKLSAJeGZzX2RhYmxrX3QJCWxibGtubzsKLSAJeGZzX2ZpbGVvZmZfdAkJbGZpbGVvZmYgPSAwOwotLQlfX3VpbnQ4X3QJCSpzcmMgPSBhcmdzLT52YWx1ZTsKLSsJdWludDhfdAkJCSpzcmMgPSBhcmdzLT52YWx1ZTsKLSAJaW50CQkJYmxrY250OwotIAlpbnQJCQl2YWx1ZWxlbjsKLSAJaW50CQkJbm1hcDsKLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2F0dHJfc2YuaCBiL2xpYnhmcy94ZnNfYXR0cl9zZi5oCi1pbmRleCA5MDkyOGJiZS4uYWZkNjg0YWUgMTAwNjQ0Ci0tLS0gYS9saWJ4ZnMveGZzX2F0dHJfc2YuaAotKysrIGIvbGlieGZzL3hmc19hdHRyX3NmLmgKLUBAIC0zMSwxMCArMzEsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX2F0dHJfc2ZfZW50cnkgeGZzX2F0dHJfc2ZfZW50cnlfdDsKLSAgKiBXZSBnZW5lcmF0ZSB0aGlzIHRoZW4gc29ydCBpdCwgYXR0cl9saXN0KCkgbXVzdCByZXR1cm4gdGhpbmdzIGluIGhhc2gtb3JkZXIuCi0gICovCi0gdHlwZWRlZiBzdHJ1Y3QgeGZzX2F0dHJfc2Zfc29ydCB7Ci0tCV9fdWludDhfdAllbnRubzsJCS8qIGVudHJ5IG51bWJlciBpbiBvcmlnaW5hbCBsaXN0ICovCi0tCV9fdWludDhfdAluYW1lbGVuOwkvKiBsZW5ndGggb2YgbmFtZSB2YWx1ZSAobm8gbnVsbCkgKi8KLS0JX191aW50OF90CXZhbHVlbGVuOwkvKiBsZW5ndGggb2YgdmFsdWUgKi8KLS0JX191aW50OF90CWZsYWdzOwkJLyogZmxhZ3MgYml0cyAoc2VlIHhmc19hdHRyX2xlYWYuaCkgKi8KLSsJdWludDhfdAkJZW50bm87CQkvKiBlbnRyeSBudW1iZXIgaW4gb3JpZ2luYWwgbGlzdCAqLwotKwl1aW50OF90CQluYW1lbGVuOwkvKiBsZW5ndGggb2YgbmFtZSB2YWx1ZSAobm8gbnVsbCkgKi8KLSsJdWludDhfdAkJdmFsdWVsZW47CS8qIGxlbmd0aCBvZiB2YWx1ZSAqLwotKwl1aW50OF90CQlmbGFnczsJCS8qIGZsYWdzIGJpdHMgKHNlZSB4ZnNfYXR0cl9sZWFmLmgpICovCi0gCXhmc19kYWhhc2hfdAloYXNoOwkJLyogdGhpcyBlbnRyeSdzIGhhc2ggdmFsdWUgKi8KLSAJdW5zaWduZWQgY2hhcgkqbmFtZTsJCS8qIG5hbWUgdmFsdWUsIHBvaW50ZXIgaW50byBidWZmZXIgKi8KLSB9IHhmc19hdHRyX3NmX3NvcnRfdDsKLUBAIC00Miw3ICs0Miw3IEBAIHR5cGVkZWYgc3RydWN0IHhmc19hdHRyX3NmX3NvcnQgewotICNkZWZpbmUgWEZTX0FUVFJfU0ZfRU5UU0laRV9CWU5BTUUobmxlbix2bGVuKQkvKiBzcGFjZSBuYW1lL3ZhbHVlIHVzZXMgKi8gXAotIAkoKChpbnQpc2l6ZW9mKHhmc19hdHRyX3NmX2VudHJ5X3QpLTEgKyAobmxlbikrKHZsZW4pKSkKLSAjZGVmaW5lIFhGU19BVFRSX1NGX0VOVFNJWkVfTUFYCQkJLyogbWF4IHNwYWNlIGZvciBuYW1lJnZhbHVlICovIFwKLS0JKCgxIDw8IChOQkJZKihpbnQpc2l6ZW9mKF9fdWludDhfdCkpKSAtIDEpCi0rCSgoMSA8PCAoTkJCWSooaW50KXNpemVvZih1aW50OF90KSkpIC0gMSkKLSAjZGVmaW5lIFhGU19BVFRSX1NGX0VOVFNJWkUoc2ZlcCkJCS8qIHNwYWNlIGFuIGVudHJ5IHVzZXMgKi8gXAotIAkoKGludClzaXplb2YoeGZzX2F0dHJfc2ZfZW50cnlfdCktMSArIChzZmVwKS0+bmFtZWxlbisoc2ZlcCktPnZhbHVlbGVuKQotICNkZWZpbmUgWEZTX0FUVFJfU0ZfTkVYVEVOVFJZKHNmZXApCQkvKiBuZXh0IGVudHJ5IGluIHN0cnVjdCAqLyBcCi1kaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19iaXQuaCBiL2xpYnhmcy94ZnNfYml0LmgKLWluZGV4IGUxNjQ5YzBkLi42MWM2YjIwMiAxMDA2NDQKLS0tLSBhL2xpYnhmcy94ZnNfYml0LmgKLSsrKyBiL2xpYnhmcy94ZnNfYml0LmgKLUBAIC0yNSw0NyArMjUsNDcgQEAKLSAvKgotICAqIG1hc2tzIHdpdGggbiBoaWdoL2xvdyBiaXRzIHNldCwgNjQtYml0IHZhbHVlcwotICAqLwotLXN0YXRpYyBpbmxpbmUgX191aW50NjRfdCB4ZnNfbWFzazY0aGkoaW50IG4pCi0rc3RhdGljIGlubGluZSB1aW50NjRfdCB4ZnNfbWFzazY0aGkoaW50IG4pCi0gewotLQlyZXR1cm4gKF9fdWludDY0X3QpLTEgPDwgKDY0IC0gKG4pKTsKLSsJcmV0dXJuICh1aW50NjRfdCktMSA8PCAoNjQgLSAobikpOwotIH0KLS1zdGF0aWMgaW5saW5lIF9fdWludDMyX3QgeGZzX21hc2szMmxvKGludCBuKQotK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgeGZzX21hc2szMmxvKGludCBuKQotIHsKLS0JcmV0dXJuICgoX191aW50MzJfdCkxIDw8IChuKSkgLSAxOwotKwlyZXR1cm4gKCh1aW50MzJfdCkxIDw8IChuKSkgLSAxOwotIH0KLS1zdGF0aWMgaW5saW5lIF9fdWludDY0X3QgeGZzX21hc2s2NGxvKGludCBuKQotK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgeGZzX21hc2s2NGxvKGludCBuKQotIHsKLS0JcmV0dXJuICgoX191aW50NjRfdCkxIDw8IChuKSkgLSAxOwotKwlyZXR1cm4gKCh1aW50NjRfdCkxIDw8IChuKSkgLSAxOwotIH0KLSAKLSAvKiBHZXQgaGlnaCBiaXQgc2V0IG91dCBvZiAzMi1iaXQgYXJndW1lbnQsIC0xIGlmIG5vbmUgc2V0ICovCi0tc3RhdGljIGlubGluZSBpbnQgeGZzX2hpZ2hiaXQzMihfX3VpbnQzMl90IHYpCi0rc3RhdGljIGlubGluZSBpbnQgeGZzX2hpZ2hiaXQzMih1aW50MzJfdCB2KQotIHsKLSAJcmV0dXJuIGZscyh2KSAtIDE7Ci0gfQotIAotIC8qIEdldCBoaWdoIGJpdCBzZXQgb3V0IG9mIDY0LWJpdCBhcmd1bWVudCwgLTEgaWYgbm9uZSBzZXQgKi8KLS1zdGF0aWMgaW5saW5lIGludCB4ZnNfaGlnaGJpdDY0KF9fdWludDY0X3QgdikKLStzdGF0aWMgaW5saW5lIGludCB4ZnNfaGlnaGJpdDY0KHVpbnQ2NF90IHYpCi0gewotIAlyZXR1cm4gZmxzNjQodikgLSAxOwotIH0KLSAKLSAvKiBHZXQgbG93IGJpdCBzZXQgb3V0IG9mIDMyLWJpdCBhcmd1bWVudCwgLTEgaWYgbm9uZSBzZXQgKi8KLS1zdGF0aWMgaW5saW5lIGludCB4ZnNfbG93Yml0MzIoX191aW50MzJfdCB2KQotK3N0YXRpYyBpbmxpbmUgaW50IHhmc19sb3diaXQzMih1aW50MzJfdCB2KQotIHsKLSAJcmV0dXJuIGZmcyh2KSAtIDE7Ci0gfQotIAotIC8qIEdldCBsb3cgYml0IHNldCBvdXQgb2YgNjQtYml0IGFyZ3VtZW50LCAtMSBpZiBub25lIHNldCAqLwotLXN0YXRpYyBpbmxpbmUgaW50IHhmc19sb3diaXQ2NChfX3VpbnQ2NF90IHYpCi0rc3RhdGljIGlubGluZSBpbnQgeGZzX2xvd2JpdDY0KHVpbnQ2NF90IHYpCi0gewotLQlfX3VpbnQzMl90CXcgPSAoX191aW50MzJfdCl2OwotKwl1aW50MzJfdAl3ID0gKHVpbnQzMl90KXY7Ci0gCWludAkJbiA9IDA7Ci0gCi0gCWlmICh3KSB7CS8qIGxvd2VyIGJpdHMgKi8KLSAJCW4gPSBmZnModyk7Ci0gCX0gZWxzZSB7CS8qIHVwcGVyIGJpdHMgKi8KLS0JCXcgPSAoX191aW50MzJfdCkodiA+PiAzMik7Ci0rCQl3ID0gKHVpbnQzMl90KSh2ID4+IDMyKTsKLSAJCWlmICh3KSB7Ci0gCQkJbiA9IGZmcyh3KTsKLSAJCQlpZiAobikKLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2JtYXBfYnRyZWUuYyBiL2xpYnhmcy94ZnNfYm1hcF9idHJlZS5jCi1pbmRleCBjNDhjYmVjMS4uOWVlNDBkOGIgMTAwNjQ0Ci0tLS0gYS9saWJ4ZnMveGZzX2JtYXBfYnRyZWUuYwotKysrIGIvbGlieGZzL3hmc19ibWFwX2J0cmVlLmMKLUBAIC05MSw4ICs5MSw4IEBAIHhmc19ibWRyX3RvX2JtYnQoCi0gICovCi0gU1RBVElDIHZvaWQKLSBfX3hmc19ibWJ0X2dldF9hbGwoCi0tCQlfX3VpbnQ2NF90IGwwLAotLQkJX191aW50NjRfdCBsMSwKLSsJCXVpbnQ2NF90IGwwLAotKwkJdWludDY0X3QgbDEsCi0gCQl4ZnNfYm1idF9pcmVjX3QgKnMpCi0gewotIAlpbnQJZXh0X2ZsYWc7Ci1AQCAtNTg1LDEyICs1ODUsMTIgQEAgeGZzX2JtYnRfaW5pdF9wdHJfZnJvbV9jdXIoCi0gCXB0ci0+bCA9IDA7Ci0gfQotIAotLVNUQVRJQyBfX2ludDY0X3QKLStTVEFUSUMgaW50NjRfdAotIHhmc19ibWJ0X2tleV9kaWZmKAotIAlzdHJ1Y3QgeGZzX2J0cmVlX2N1cgkqY3VyLAotIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CSprZXkpCi0gewotLQlyZXR1cm4gKF9faW50NjRfdCliZTY0X3RvX2NwdShrZXktPmJtYnQuYnJfc3RhcnRvZmYpIC0KLSsJcmV0dXJuIChpbnQ2NF90KWJlNjRfdG9fY3B1KGtleS0+Ym1idC5icl9zdGFydG9mZikgLQotIAkJCQkgICAgICBjdXItPmJjX3JlYy5iLmJyX3N0YXJ0b2ZmOwotIH0KLSAKLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2J0cmVlLmMgYi9saWJ4ZnMveGZzX2J0cmVlLmMKLWluZGV4IDNkMjkzNTIwLi41NmI1MGE1YiAxMDA2NDQKLS0tLSBhL2xpYnhmcy94ZnNfYnRyZWUuYwotKysrIGIvbGlieGZzL3hmc19idHJlZS5jCi1AQCAtMzksNyArMzksNyBAQCBrbWVtX3pvbmVfdAkqeGZzX2J0cmVlX2N1cl96b25lOwotIC8qCi0gICogQnRyZWUgbWFnaWMgbnVtYmVycy4KLSAgKi8KLS1zdGF0aWMgY29uc3QgX191aW50MzJfdCB4ZnNfbWFnaWNzWzJdW1hGU19CVE5VTV9NQVhdID0gewotK3N0YXRpYyBjb25zdCB1aW50MzJfdCB4ZnNfbWFnaWNzWzJdW1hGU19CVE5VTV9NQVhdID0gewotIAl7IFhGU19BQlRCX01BR0lDLCBYRlNfQUJUQ19NQUdJQywgMCwgWEZTX0JNQVBfTUFHSUMsIFhGU19JQlRfTUFHSUMsCi0gCSAgWEZTX0ZJQlRfTUFHSUMsIDAgfSwKLSAJeyBYRlNfQUJUQl9DUkNfTUFHSUMsIFhGU19BQlRDX0NSQ19NQUdJQywgWEZTX1JNQVBfQ1JDX01BR0lDLAotQEAgLTQ3LDEyICs0NywxMiBAQCBzdGF0aWMgY29uc3QgX191aW50MzJfdCB4ZnNfbWFnaWNzWzJdW1hGU19CVE5VTV9NQVhdID0gewotIAkgIFhGU19SRUZDX0NSQ19NQUdJQyB9Ci0gfTsKLSAKLS1fX3VpbnQzMl90Ci0rdWludDMyX3QKLSB4ZnNfYnRyZWVfbWFnaWMoCi0gCWludAkJCWNyYywKLSAJeGZzX2J0bnVtX3QJCWJ0bnVtKQotIHsKLS0JX191aW50MzJfdAkJbWFnaWMgPSB4ZnNfbWFnaWNzW2NyY11bYnRudW1dOwotKwl1aW50MzJfdAkJbWFnaWMgPSB4ZnNfbWFnaWNzW2NyY11bYnRudW1dOwotIAotIAkvKiBFbnN1cmUgd2UgYXNrZWQgZm9yIGNyYyBmb3IgY3JjLW9ubHkgbWFnaWNzLiAqLwotIAlBU1NFUlQobWFnaWMgIT0gMCk7Ci1AQCAtNzc0LDE0ICs3NzQsMTQgQEAgeGZzX2J0cmVlX2xhc3RyZWMoCi0gICovCi0gdm9pZAotIHhmc19idHJlZV9vZmZzZXRzKAotLQlfX2ludDY0X3QJZmllbGRzLAkJLyogYml0bWFzayBvZiBmaWVsZHMgKi8KLSsJaW50NjRfdAkJZmllbGRzLAkJLyogYml0bWFzayBvZiBmaWVsZHMgKi8KLSAJY29uc3Qgc2hvcnQJKm9mZnNldHMsCS8qIHRhYmxlIG9mIGZpZWxkIG9mZnNldHMgKi8KLSAJaW50CQluYml0cywJCS8qIG51bWJlciBvZiBiaXRzIHRvIGluc3BlY3QgKi8KLSAJaW50CQkqZmlyc3QsCQkvKiBvdXRwdXQ6IGZpcnN0IGJ5dGUgb2Zmc2V0ICovCi0gCWludAkJKmxhc3QpCQkvKiBvdXRwdXQ6IGxhc3QgYnl0ZSBvZmZzZXQgKi8KLSB7Ci0gCWludAkJaTsJCS8qIGN1cnJlbnQgYml0IG51bWJlciAqLwotLQlfX2ludDY0X3QJaW1hc2s7CQkvKiBtYXNrIGZvciBjdXJyZW50IGJpdCBudW1iZXIgKi8KLSsJaW50NjRfdAkJaW1hc2s7CQkvKiBtYXNrIGZvciBjdXJyZW50IGJpdCBudW1iZXIgKi8KLSAKLSAJQVNTRVJUKGZpZWxkcyAhPSAwKTsKLSAJLyoKLUBAIC0xODQyLDcgKzE4NDIsNyBAQCB4ZnNfYnRyZWVfbG9va3VwKAotIAlpbnQJCQkqc3RhdCkJLyogc3VjY2Vzcy9mYWlsdXJlICovCi0gewotIAlzdHJ1Y3QgeGZzX2J0cmVlX2Jsb2NrCSpibG9jazsJLyogY3VycmVudCBidHJlZSBibG9jayAqLwotLQlfX2ludDY0X3QJCWRpZmY7CS8qIGRpZmZlcmVuY2UgZm9yIHRoZSBjdXJyZW50IGtleSAqLwotKwlpbnQ2NF90CQkJZGlmZjsJLyogZGlmZmVyZW5jZSBmb3IgdGhlIGN1cnJlbnQga2V5ICovCi0gCWludAkJCWVycm9yOwkvKiBlcnJvciByZXR1cm4gdmFsdWUgKi8KLSAJaW50CQkJa2V5bm87CS8qIGN1cnJlbnQga2V5IG51bWJlciAqLwotIAlpbnQJCQlsZXZlbDsJLyogbGV2ZWwgaW4gdGhlIGJ0cmVlICovCi1AQCAtNDQzNSw3ICs0NDM1LDcgQEAgeGZzX2J0cmVlX3Zpc2l0X2Jsb2NrcygKLSAgKiByZWNvdmVyeSBjb21wbGV0aW9uIHdyaXRlcyB0aGUgY2hhbmdlcyB0byBkaXNrLgotICAqLwotIHN0cnVjdCB4ZnNfYnRyZWVfYmxvY2tfY2hhbmdlX293bmVyX2luZm8gewotLQlfX3VpbnQ2NF90CQluZXdfb3duZXI7Ci0rCXVpbnQ2NF90CQluZXdfb3duZXI7Ci0gCXN0cnVjdCBsaXN0X2hlYWQJKmJ1ZmZlcl9saXN0OwotIH07Ci0gCi1AQCAtNDQ4MSw3ICs0NDgxLDcgQEAgeGZzX2J0cmVlX2Jsb2NrX2NoYW5nZV9vd25lcigKLSBpbnQKLSB4ZnNfYnRyZWVfY2hhbmdlX293bmVyKAotIAlzdHJ1Y3QgeGZzX2J0cmVlX2N1cgkqY3VyLAotLQlfX3VpbnQ2NF90CQluZXdfb3duZXIsCi0rCXVpbnQ2NF90CQluZXdfb3duZXIsCi0gCXN0cnVjdCBsaXN0X2hlYWQJKmJ1ZmZlcl9saXN0KQotIHsKLSAJc3RydWN0IHhmc19idHJlZV9ibG9ja19jaGFuZ2Vfb3duZXJfaW5mbwliYmNvaTsKLUBAIC00NTg1LDcgKzQ1ODUsNyBAQCB4ZnNfYnRyZWVfc2ltcGxlX3F1ZXJ5X3JhbmdlKAotIHsKLSAJdW5pb24geGZzX2J0cmVlX3JlYwkJKnJlY3A7Ci0gCXVuaW9uIHhmc19idHJlZV9rZXkJCXJlY19rZXk7Ci0tCV9faW50NjRfdAkJCWRpZmY7Ci0rCWludDY0X3QJCQkJZGlmZjsKLSAJaW50CQkJCXN0YXQ7Ci0gCWJvb2wJCQkJZmlyc3RyZWMgPSB0cnVlOwotIAlpbnQJCQkJZXJyb3I7Ci1AQCAtNDY4Miw4ICs0NjgyLDggQEAgeGZzX2J0cmVlX292ZXJsYXBwZWRfcXVlcnlfcmFuZ2UoCi0gCXVuaW9uIHhmc19idHJlZV9rZXkJCSpoa3A7Ci0gCXVuaW9uIHhmc19idHJlZV9yZWMJCSpyZWNwOwotIAlzdHJ1Y3QgeGZzX2J0cmVlX2Jsb2NrCQkqYmxvY2s7Ci0tCV9faW50NjRfdAkJCWxkaWZmOwotLQlfX2ludDY0X3QJCQloZGlmZjsKLSsJaW50NjRfdAkJCQlsZGlmZjsKLSsJaW50NjRfdAkJCQloZGlmZjsKLSAJaW50CQkJCWxldmVsOwotIAlzdHJ1Y3QgeGZzX2J1ZgkJCSpicDsKLSAJaW50CQkJCWk7Ci1kaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19idHJlZS5oIGIvbGlieGZzL3hmc19idHJlZS5oCi1pbmRleCAwNWNmMzViNS4uM2MxZmVkMjMgMTAwNjQ0Ci0tLS0gYS9saWJ4ZnMveGZzX2J0cmVlLmgKLSsrKyBiL2xpYnhmcy94ZnNfYnRyZWUuaAotQEAgLTc2LDcgKzc2LDcgQEAgdW5pb24geGZzX2J0cmVlX3JlYyB7Ci0gI2RlZmluZQlYRlNfQlROVU1fUk1BUAkoKHhmc19idG51bV90KVhGU19CVE5VTV9STUFQaSkKLSAjZGVmaW5lCVhGU19CVE5VTV9SRUZDCSgoeGZzX2J0bnVtX3QpWEZTX0JUTlVNX1JFRkNpKQotIAotLV9fdWludDMyX3QgeGZzX2J0cmVlX21hZ2ljKGludCBjcmMsIHhmc19idG51bV90IGJ0bnVtKTsKLSt1aW50MzJfdCB4ZnNfYnRyZWVfbWFnaWMoaW50IGNyYywgeGZzX2J0bnVtX3QgYnRudW0pOwotIAotIC8qCi0gICogRm9yIGxvZ2dpbmcgcmVjb3JkIGZpZWxkcy4KLUBAIC0xNTAsMTQgKzE1MCwxNCBAQCBzdHJ1Y3QgeGZzX2J0cmVlX29wcyB7Ci0gCQkJCQkgIHVuaW9uIHhmc19idHJlZV9yZWMgKnJlYyk7Ci0gCi0gCS8qIGRpZmZlcmVuY2UgYmV0d2VlbiBrZXkgdmFsdWUgYW5kIGN1cnNvciB2YWx1ZSAqLwotLQlfX2ludDY0X3QgKCprZXlfZGlmZikoc3RydWN0IHhmc19idHJlZV9jdXIgKmN1ciwKLSsJaW50NjRfdCAoKmtleV9kaWZmKShzdHJ1Y3QgeGZzX2J0cmVlX2N1ciAqY3VyLAotIAkJCSAgICAgIHVuaW9uIHhmc19idHJlZV9rZXkgKmtleSk7Ci0gCi0gCS8qCi0gCSAqIERpZmZlcmVuY2UgYmV0d2VlbiBrZXkyIGFuZCBrZXkxIC0tIHBvc2l0aXZlIGlmIGtleTEgPiBrZXkyLAotIAkgKiBuZWdhdGl2ZSBpZiBrZXkxIDwga2V5MiwgYW5kIHplcm8gaWYgZXF1YWwuCi0gCSAqLwotLQlfX2ludDY0X3QgKCpkaWZmX3R3b19rZXlzKShzdHJ1Y3QgeGZzX2J0cmVlX2N1ciAqY3VyLAotKwlpbnQ2NF90ICgqZGlmZl90d29fa2V5cykoc3RydWN0IHhmc19idHJlZV9jdXIgKmN1ciwKLSAJCQkJICAgdW5pb24geGZzX2J0cmVlX2tleSAqa2V5MSwKLSAJCQkJICAgdW5pb24geGZzX2J0cmVlX2tleSAqa2V5Mik7Ci0gCi1AQCAtMjEzLDExICsyMTMsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX2J0cmVlX2N1cgotIAl1bmlvbiB4ZnNfYnRyZWVfaXJlYwliY19yZWM7CS8qIGN1cnJlbnQgaW5zZXJ0L3NlYXJjaCByZWNvcmQgdmFsdWUgKi8KLSAJc3RydWN0IHhmc19idWYJKmJjX2J1ZnNbWEZTX0JUUkVFX01BWExFVkVMU107CS8qIGJ1ZiBwdHIgcGVyIGxldmVsICovCi0gCWludAkJYmNfcHRyc1tYRlNfQlRSRUVfTUFYTEVWRUxTXTsJLyoga2V5L3JlY29yZCAjICovCi0tCV9fdWludDhfdAliY19yYVtYRlNfQlRSRUVfTUFYTEVWRUxTXTsJLyogcmVhZGFoZWFkIGJpdHMgKi8KLSsJdWludDhfdAkJYmNfcmFbWEZTX0JUUkVFX01BWExFVkVMU107CS8qIHJlYWRhaGVhZCBiaXRzICovCi0gI2RlZmluZQlYRlNfQlRDVVJfTEVGVFJBCTEJLyogbGVmdCBzaWJsaW5nIGhhcyBiZWVuIHJlYWQtYWhlYWQgKi8KLSAjZGVmaW5lCVhGU19CVENVUl9SSUdIVFJBCTIJLyogcmlnaHQgc2libGluZyBoYXMgYmVlbiByZWFkLWFoZWFkICovCi0tCV9fdWludDhfdAliY19ubGV2ZWxzOwkvKiBudW1iZXIgb2YgbGV2ZWxzIGluIHRoZSB0cmVlICovCi0tCV9fdWludDhfdAliY19ibG9ja2xvZzsJLyogbG9nMihibG9ja3NpemUpIG9mIGJ0cmVlIGJsb2NrcyAqLwotKwl1aW50OF90CQliY19ubGV2ZWxzOwkvKiBudW1iZXIgb2YgbGV2ZWxzIGluIHRoZSB0cmVlICovCi0rCXVpbnQ4X3QJCWJjX2Jsb2NrbG9nOwkvKiBsb2cyKGJsb2Nrc2l6ZSkgb2YgYnRyZWUgYmxvY2tzICovCi0gCXhmc19idG51bV90CWJjX2J0bnVtOwkvKiBpZGVudGlmaWVzIHdoaWNoIGJ0cmVlIHR5cGUgKi8KLSAJaW50CQliY19zdGF0b2ZmOwkvKiBvZmZzZXQgb2YgYnRyZSBzdGF0cyBhcnJheSAqLwotIAl1bmlvbiB7Ci1AQCAtMzMwLDcgKzMzMCw3IEBAIHhmc19idHJlZV9pc2xhc3RibG9jaygKLSAgKi8KLSB2b2lkCi0geGZzX2J0cmVlX29mZnNldHMoCi0tCV9faW50NjRfdAkJZmllbGRzLAkvKiBiaXRtYXNrIG9mIGZpZWxkcyAqLwotKwlpbnQ2NF90CQkJZmllbGRzLAkvKiBiaXRtYXNrIG9mIGZpZWxkcyAqLwotIAljb25zdCBzaG9ydAkJKm9mZnNldHMsLyogdGFibGUgb2YgZmllbGQgb2Zmc2V0cyAqLwotIAlpbnQJCQluYml0cywJLyogbnVtYmVyIG9mIGJpdHMgdG8gaW5zcGVjdCAqLwotIAlpbnQJCQkqZmlyc3QsCS8qIG91dHB1dDogZmlyc3QgYnl0ZSBvZmZzZXQgKi8KLUBAIC00MDgsNyArNDA4LDcgQEAgaW50IHhmc19idHJlZV9uZXdfaXJvb3Qoc3RydWN0IHhmc19idHJlZV9jdXIgKiwgaW50ICosIGludCAqKTsKLSBpbnQgeGZzX2J0cmVlX2luc2VydChzdHJ1Y3QgeGZzX2J0cmVlX2N1ciAqLCBpbnQgKik7Ci0gaW50IHhmc19idHJlZV9kZWxldGUoc3RydWN0IHhmc19idHJlZV9jdXIgKiwgaW50ICopOwotIGludCB4ZnNfYnRyZWVfZ2V0X3JlYyhzdHJ1Y3QgeGZzX2J0cmVlX2N1ciAqLCB1bmlvbiB4ZnNfYnRyZWVfcmVjICoqLCBpbnQgKik7Ci0taW50IHhmc19idHJlZV9jaGFuZ2Vfb3duZXIoc3RydWN0IHhmc19idHJlZV9jdXIgKmN1ciwgX191aW50NjRfdCBuZXdfb3duZXIsCi0raW50IHhmc19idHJlZV9jaGFuZ2Vfb3duZXIoc3RydWN0IHhmc19idHJlZV9jdXIgKmN1ciwgdWludDY0X3QgbmV3X293bmVyLAotIAkJCSAgIHN0cnVjdCBsaXN0X2hlYWQgKmJ1ZmZlcl9saXN0KTsKLSAKLSAvKgotQEAgLTQzNCw3ICs0MzQsNyBAQCBzdGF0aWMgaW5saW5lIGludCB4ZnNfYnRyZWVfZ2V0X251bXJlY3Moc3RydWN0IHhmc19idHJlZV9ibG9jayAqYmxvY2spCi0gfQotIAotIHN0YXRpYyBpbmxpbmUgdm9pZCB4ZnNfYnRyZWVfc2V0X251bXJlY3Moc3RydWN0IHhmc19idHJlZV9ibG9jayAqYmxvY2ssCi0tCQlfX3VpbnQxNl90IG51bXJlY3MpCi0rCQl1aW50MTZfdCBudW1yZWNzKQotIHsKLSAJYmxvY2stPmJiX251bXJlY3MgPSBjcHVfdG9fYmUxNihudW1yZWNzKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19ja3N1bS5oIGIvbGlieGZzL3hmc19ja3N1bS5oCi1pbmRleCBhNDE2YzdjYi4uODIxMWY0OGIgMTAwNjQ0Ci0tLS0gYS9saWJ4ZnMveGZzX2Nrc3VtLmgKLSsrKyBiL2xpYnhmcy94ZnNfY2tzdW0uaAotQEAgLTEsNyArMSw3IEBACi0gI2lmbmRlZiBfWEZTX0NLU1VNX0gKLSAjZGVmaW5lIF9YRlNfQ0tTVU1fSCAxCi0gCi0tI2RlZmluZSBYRlNfQ1JDX1NFRUQJKH4oX191aW50MzJfdCkwKQotKyNkZWZpbmUgWEZTX0NSQ19TRUVECSh+KHVpbnQzMl90KTApCi0gCi0gLyoKLSAgKiBDYWxjdWxhdGUgdGhlIGludGVybWVkaWF0ZSBjaGVja3N1bSBmb3IgYSBidWZmZXIgdGhhdCBoYXMgdGhlIENSQyBmaWVsZAotQEAgLTksMTEgKzksMTEgQEAKLSAgKiBja3N1bV9vZmZzZXQgcGFyYW1ldGVyLiBXZSBkbyBub3QgbW9kaWZ5IHRoZSBidWZmZXIgZHVyaW5nIHZlcmlmaWNhdGlvbiwKLSAgKiBoZW5jZSB3ZSBoYXZlIHRvIHNwbGl0IHRoZSBDUkMgY2FsY3VsYXRpb24gYWNyb3NzIHRoZSBja3N1bV9vZmZzZXQuCi0gICovCi0tc3RhdGljIGlubGluZSBfX3VpbnQzMl90Ci0rc3RhdGljIGlubGluZSB1aW50MzJfdAotIHhmc19zdGFydF9ja3N1bV9zYWZlKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgbG9uZyBja3N1bV9vZmZzZXQpCi0gewotLQlfX3VpbnQzMl90IHplcm8gPSAwOwotLQlfX3VpbnQzMl90IGNyYzsKLSsJdWludDMyX3QgemVybyA9IDA7Ci0rCXVpbnQzMl90IGNyYzsKLSAKLSAJLyogQ2FsY3VsYXRlIENSQyB1cCB0byB0aGUgY2hlY2tzdW0uICovCi0gCWNyYyA9IGNyYzMyYyhYRlNfQ1JDX1NFRUQsIGJ1ZmZlciwgY2tzdW1fb2Zmc2V0KTsKLUBAIC0zMCw3ICszMCw3IEBAIHhmc19zdGFydF9ja3N1bV9zYWZlKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgbG9uZyBja3N1bV9vZmZzZXQpCi0gICogRmFzdCBDUkMgbWV0aG9kIHdoZXJlIHRoZSBidWZmZXIgaXMgbW9kaWZpZWQuIENhbGxlcnMgbXVzdCBoYXZlIGV4Y2x1c2l2ZQotICAqIGFjY2VzcyB0byB0aGUgYnVmZmVyIHdoaWxlIHRoZSBjYWxjdWxhdGlvbiB0YWtlcyBwbGFjZS4KLSAgKi8KLS1zdGF0aWMgaW5saW5lIF9fdWludDMyX3QKLStzdGF0aWMgaW5saW5lIHVpbnQzMl90Ci0geGZzX3N0YXJ0X2Nrc3VtX3VwZGF0ZShjaGFyICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGxvbmcgY2tzdW1fb2Zmc2V0KQotIHsKLSAJLyogemVybyB0aGUgQ1JDIGZpZWxkICovCi1AQCAtNDgsNyArNDgsNyBAQCB4ZnNfc3RhcnRfY2tzdW1fdXBkYXRlKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgbG9uZyBja3N1bV9vZmZzZXQpCi0gICogc28gdGhhdCBpdCBpcyBjb25zaXN0ZW50IG9uIGRpc2suCi0gICovCi0gc3RhdGljIGlubGluZSBfX2xlMzIKLS14ZnNfZW5kX2Nrc3VtKF9fdWludDMyX3QgY3JjKQotK3hmc19lbmRfY2tzdW0odWludDMyX3QgY3JjKQotIHsKLSAJcmV0dXJuIH5jcHVfdG9fbGUzMihjcmMpOwotIH0KLUBAIC02Miw3ICs2Miw3IEBAIHhmc19lbmRfY2tzdW0oX191aW50MzJfdCBjcmMpCi0gc3RhdGljIGlubGluZSB2b2lkCi0geGZzX3VwZGF0ZV9ja3N1bShjaGFyICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGxvbmcgY2tzdW1fb2Zmc2V0KQotIHsKLS0JX191aW50MzJfdCBjcmMgPSB4ZnNfc3RhcnRfY2tzdW1fdXBkYXRlKGJ1ZmZlciwgbGVuZ3RoLCBja3N1bV9vZmZzZXQpOwotKwl1aW50MzJfdCBjcmMgPSB4ZnNfc3RhcnRfY2tzdW1fdXBkYXRlKGJ1ZmZlciwgbGVuZ3RoLCBja3N1bV9vZmZzZXQpOwotIAotIAkqKF9fbGUzMiAqKShidWZmZXIgKyBja3N1bV9vZmZzZXQpID0geGZzX2VuZF9ja3N1bShjcmMpOwotIH0KLUBAIC03Myw3ICs3Myw3IEBAIHhmc191cGRhdGVfY2tzdW0oY2hhciAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBsb25nIGNrc3VtX29mZnNldCkKLSBzdGF0aWMgaW5saW5lIGludAotIHhmc192ZXJpZnlfY2tzdW0oY2hhciAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBsb25nIGNrc3VtX29mZnNldCkKLSB7Ci0tCV9fdWludDMyX3QgY3JjID0geGZzX3N0YXJ0X2Nrc3VtX3NhZmUoYnVmZmVyLCBsZW5ndGgsIGNrc3VtX29mZnNldCk7Ci0rCXVpbnQzMl90IGNyYyA9IHhmc19zdGFydF9ja3N1bV9zYWZlKGJ1ZmZlciwgbGVuZ3RoLCBja3N1bV9vZmZzZXQpOwotIAotIAlyZXR1cm4gKihfX2xlMzIgKikoYnVmZmVyICsgY2tzdW1fb2Zmc2V0KSA9PSB4ZnNfZW5kX2Nrc3VtKGNyYyk7Ci0gfQotZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfZGFfYnRyZWUuYyBiL2xpYnhmcy94ZnNfZGFfYnRyZWUuYwotaW5kZXggYmMxMmY1OGYuLjA4NDQ3YmU4IDEwMDY0NAotLS0tIGEvbGlieGZzL3hmc19kYV9idHJlZS5jCi0rKysgYi9saWJ4ZnMveGZzX2RhX2J0cmVlLmMKLUBAIC0xOTQ3LDcgKzE5NDcsNyBAQCB4ZnNfZGEzX3BhdGhfc2hpZnQoCi0gICogVGhpcyBpcyBpbXBsZW1lbnRlZCB3aXRoIHNvbWUgc291cmNlLWxldmVsIGxvb3AgdW5yb2xsaW5nLgotICAqLwotIHhmc19kYWhhc2hfdAotLXhmc19kYV9oYXNobmFtZShjb25zdCBfX3VpbnQ4X3QgKm5hbWUsIGludCBuYW1lbGVuKQotK3hmc19kYV9oYXNobmFtZShjb25zdCB1aW50OF90ICpuYW1lLCBpbnQgbmFtZWxlbikKLSB7Ci0gCXhmc19kYWhhc2hfdCBoYXNoOwotIAotZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfZGFfYnRyZWUuaCBiL2xpYnhmcy94ZnNfZGFfYnRyZWUuaAotaW5kZXggNGUyOWNiNmEuLmFlNmRlMTc0IDEwMDY0NAotLS0tIGEvbGlieGZzL3hmc19kYV9idHJlZS5oCi0rKysgYi9saWJ4ZnMveGZzX2RhX2J0cmVlLmgKLUBAIC02MCwxMCArNjAsMTAgQEAgZW51bSB4ZnNfZGFjbXAgewotICAqLwotIHR5cGVkZWYgc3RydWN0IHhmc19kYV9hcmdzIHsKLSAJc3RydWN0IHhmc19kYV9nZW9tZXRyeSAqZ2VvOwkvKiBkYSBibG9jayBnZW9tZXRyeSAqLwotLQljb25zdCBfX3VpbnQ4X3QJKm5hbWU7CQkvKiBzdHJpbmcgKG1heWJlIG5vdCBOVUxMIHRlcm1pbmF0ZWQpICovCi0rCWNvbnN0IHVpbnQ4X3QJCSpuYW1lOwkJLyogc3RyaW5nIChtYXliZSBub3QgTlVMTCB0ZXJtaW5hdGVkKSAqLwotIAlpbnQJCW5hbWVsZW47CS8qIGxlbmd0aCBvZiBzdHJpbmcgKG1heWJlIG5vIE5VTEwpICovCi0tCV9fdWludDhfdAlmaWxldHlwZTsJLyogZmlsZXR5cGUgb2YgaW5vZGUgZm9yIGRpcmVjdG9yaWVzICovCi0tCV9fdWludDhfdAkqdmFsdWU7CQkvKiBzZXQgb2YgYnl0ZXMgKG1heWJlIGNvbnRhaW4gTlVMTHMpICovCi0rCXVpbnQ4X3QJCWZpbGV0eXBlOwkvKiBmaWxldHlwZSBvZiBpbm9kZSBmb3IgZGlyZWN0b3JpZXMgKi8KLSsJdWludDhfdAkJKnZhbHVlOwkJLyogc2V0IG9mIGJ5dGVzIChtYXliZSBjb250YWluIE5VTExzKSAqLwotIAlpbnQJCXZhbHVlbGVuOwkvKiBsZW5ndGggb2YgdmFsdWUgKi8KLSAJaW50CQlmbGFnczsJCS8qIGFyZ3VtZW50IGZsYWdzIChlZzogQVRUUl9OT0NSRUFURSkgKi8KLSAJeGZzX2RhaGFzaF90CWhhc2h2YWw7CS8qIGhhc2ggdmFsdWUgb2YgbmFtZSAqLwotQEAgLTIwNyw3ICsyMDcsNyBAQCBpbnQJeGZzX2RhX3JlYWRhX2J1ZihzdHJ1Y3QgeGZzX2lub2RlICpkcCwgeGZzX2RhYmxrX3QgYm5vLAotIGludAl4ZnNfZGFfc2hyaW5rX2lub2RlKHhmc19kYV9hcmdzX3QgKmFyZ3MsIHhmc19kYWJsa190IGRlYWRfYmxrbm8sCi0gCQkJCQkgIHN0cnVjdCB4ZnNfYnVmICpkZWFkX2J1Zik7Ci0gCi0tdWludCB4ZnNfZGFfaGFzaG5hbWUoY29uc3QgX191aW50OF90ICpuYW1lX3N0cmluZywgaW50IG5hbWVfbGVuZ3RoKTsKLSt1aW50IHhmc19kYV9oYXNobmFtZShjb25zdCB1aW50OF90ICpuYW1lX3N0cmluZywgaW50IG5hbWVfbGVuZ3RoKTsKLSBlbnVtIHhmc19kYWNtcCB4ZnNfZGFfY29tcG5hbWUoc3RydWN0IHhmc19kYV9hcmdzICphcmdzLAotIAkJCQljb25zdCB1bnNpZ25lZCBjaGFyICpuYW1lLCBpbnQgbGVuKTsKLSAKLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2RhX2Zvcm1hdC5jIGIvbGlieGZzL3hmc19kYV9mb3JtYXQuYwotaW5kZXggMmI3MzJiM2MuLmYzMDAwNGY2IDEwMDY0NAotLS0tIGEvbGlieGZzL3hmc19kYV9mb3JtYXQuYwotKysrIGIvbGlieGZzL3hmc19kYV9mb3JtYXQuYwotQEAgLTQ5LDcgKzQ5LDcgQEAgeGZzX2RpcjNfc2ZfZW50c2l6ZSgKLSAJc3RydWN0IHhmc19kaXIyX3NmX2hkcgkqaGRyLAotIAlpbnQJCQlsZW4pCi0gewotLQlyZXR1cm4geGZzX2RpcjJfc2ZfZW50c2l6ZShoZHIsIGxlbikgKyBzaXplb2YoX191aW50OF90KTsKLSsJcmV0dXJuIHhmc19kaXIyX3NmX2VudHNpemUoaGRyLCBsZW4pICsgc2l6ZW9mKHVpbnQ4X3QpOwotIH0KLSAKLSBzdGF0aWMgc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5ICoKLUBAIC03Nyw3ICs3Nyw3IEBAIHhmc19kaXIzX3NmX25leHRlbnRyeSgKLSAgKiBub3QgbmVjZXNzYXJ5LiBGb3Igbm9uLWZpbGV0eXBlIGVuYWJsZSBkaXJlY3RvcmllcywgdGhlIHR5cGUgaXMgYWx3YXlzCi0gICogdW5rbm93biBhbmQgd2UgbmV2ZXIgc3RvcmUgdGhlIHZhbHVlLgotICAqLwotLXN0YXRpYyBfX3VpbnQ4X3QKLStzdGF0aWMgdWludDhfdAotIHhmc19kaXIyX3NmZV9nZXRfZnR5cGUoCi0gCXN0cnVjdCB4ZnNfZGlyMl9zZl9lbnRyeSAqc2ZlcCkKLSB7Ci1AQCAtODcsMTYgKzg3LDE2IEBAIHhmc19kaXIyX3NmZV9nZXRfZnR5cGUoCi0gc3RhdGljIHZvaWQKLSB4ZnNfZGlyMl9zZmVfcHV0X2Z0eXBlKAotIAlzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKnNmZXAsCi0tCV9fdWludDhfdAkJZnR5cGUpCi0rCXVpbnQ4X3QJCQlmdHlwZSkKLSB7Ci0gCUFTU0VSVChmdHlwZSA8IFhGU19ESVIzX0ZUX01BWCk7Ci0gfQotIAotLXN0YXRpYyBfX3VpbnQ4X3QKLStzdGF0aWMgdWludDhfdAotIHhmc19kaXIzX3NmZV9nZXRfZnR5cGUoCi0gCXN0cnVjdCB4ZnNfZGlyMl9zZl9lbnRyeSAqc2ZlcCkKLSB7Ci0tCV9fdWludDhfdAlmdHlwZTsKLSsJdWludDhfdAkJZnR5cGU7Ci0gCi0gCWZ0eXBlID0gc2ZlcC0+bmFtZVtzZmVwLT5uYW1lbGVuXTsKLSAJaWYgKGZ0eXBlID49IFhGU19ESVIzX0ZUX01BWCkKLUBAIC0xMDcsNyArMTA3LDcgQEAgeGZzX2RpcjNfc2ZlX2dldF9mdHlwZSgKLSBzdGF0aWMgdm9pZAotIHhmc19kaXIzX3NmZV9wdXRfZnR5cGUoCi0gCXN0cnVjdCB4ZnNfZGlyMl9zZl9lbnRyeSAqc2ZlcCwKLS0JX191aW50OF90CQlmdHlwZSkKLSsJdWludDhfdAkJCWZ0eXBlKQotIHsKLSAJQVNTRVJUKGZ0eXBlIDwgWEZTX0RJUjNfRlRfTUFYKTsKLSAKLUBAIC0xMjQsNyArMTI0LDcgQEAgeGZzX2RpcjNfc2ZlX3B1dF9mdHlwZSgKLSBzdGF0aWMgeGZzX2lub190Ci0geGZzX2RpcjJfc2ZfZ2V0X2lubygKLSAJc3RydWN0IHhmc19kaXIyX3NmX2hkcgkqaGRyLAotLQlfX3VpbnQ4X3QJCSpmcm9tKQotKwl1aW50OF90CQkJKmZyb20pCi0gewotIAlpZiAoaGRyLT5pOGNvdW50KQotIAkJcmV0dXJuIGdldF91bmFsaWduZWRfYmU2NChmcm9tKSAmIDB4MDBmZmZmZmZmZmZmZmZmZlVMTDsKLUBAIC0xMzUsNyArMTM1LDcgQEAgeGZzX2RpcjJfc2ZfZ2V0X2lubygKLSBzdGF0aWMgdm9pZAotIHhmc19kaXIyX3NmX3B1dF9pbm8oCi0gCXN0cnVjdCB4ZnNfZGlyMl9zZl9oZHIJKmhkciwKLS0JX191aW50OF90CQkqdG8sCi0rCXVpbnQ4X3QJCQkqdG8sCi0gCXhmc19pbm9fdAkJaW5vKQotIHsKLSAJQVNTRVJUKChpbm8gJiAweGZmMDAwMDAwMDAwMDAwMDBVTEwpID09IDApOwotQEAgLTIyNSw3ICsyMjUsNyBAQCB4ZnNfZGlyM19zZmVfcHV0X2lubygKLSAKLSAjZGVmaW5lIFhGU19ESVIzX0RBVEFfRU5UU0laRShuKQkJCQkJXAotIAlyb3VuZF91cCgob2Zmc2V0b2Yoc3RydWN0IHhmc19kaXIyX2RhdGFfZW50cnksIG5hbWVbMF0pICsgKG4pICsJXAotLQkJIHNpemVvZih4ZnNfZGlyMl9kYXRhX29mZl90KSArIHNpemVvZihfX3VpbnQ4X3QpKSwJXAotKwkJIHNpemVvZih4ZnNfZGlyMl9kYXRhX29mZl90KSArIHNpemVvZih1aW50OF90KSksCVwKLSAJCVhGU19ESVIyX0RBVEFfQUxJR04pCi0gCi0gc3RhdGljIGludAotQEAgLTI0Miw3ICsyNDIsNyBAQCB4ZnNfZGlyM19kYXRhX2VudHNpemUoCi0gCXJldHVybiBYRlNfRElSM19EQVRBX0VOVFNJWkUobik7Ci0gfQotIAotLXN0YXRpYyBfX3VpbnQ4X3QKLStzdGF0aWMgdWludDhfdAotIHhmc19kaXIyX2RhdGFfZ2V0X2Z0eXBlKAotIAlzdHJ1Y3QgeGZzX2RpcjJfZGF0YV9lbnRyeSAqZGVwKQotIHsKLUBAIC0yNTIsMTYgKzI1MiwxNiBAQCB4ZnNfZGlyMl9kYXRhX2dldF9mdHlwZSgKLSBzdGF0aWMgdm9pZAotIHhmc19kaXIyX2RhdGFfcHV0X2Z0eXBlKAotIAlzdHJ1Y3QgeGZzX2RpcjJfZGF0YV9lbnRyeSAqZGVwLAotLQlfX3VpbnQ4X3QJCWZ0eXBlKQotKwl1aW50OF90CQkJZnR5cGUpCi0gewotIAlBU1NFUlQoZnR5cGUgPCBYRlNfRElSM19GVF9NQVgpOwotIH0KLSAKLS1zdGF0aWMgX191aW50OF90Ci0rc3RhdGljIHVpbnQ4X3QKLSB4ZnNfZGlyM19kYXRhX2dldF9mdHlwZSgKLSAJc3RydWN0IHhmc19kaXIyX2RhdGFfZW50cnkgKmRlcCkKLSB7Ci0tCV9fdWludDhfdAlmdHlwZSA9IGRlcC0+bmFtZVtkZXAtPm5hbWVsZW5dOwotKwl1aW50OF90CQlmdHlwZSA9IGRlcC0+bmFtZVtkZXAtPm5hbWVsZW5dOwotIAotIAlpZiAoZnR5cGUgPj0gWEZTX0RJUjNfRlRfTUFYKQotIAkJcmV0dXJuIFhGU19ESVIzX0ZUX1VOS05PV047Ci1AQCAtMjcxLDcgKzI3MSw3IEBAIHhmc19kaXIzX2RhdGFfZ2V0X2Z0eXBlKAotIHN0YXRpYyB2b2lkCi0geGZzX2RpcjNfZGF0YV9wdXRfZnR5cGUoCi0gCXN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5ICpkZXAsCi0tCV9fdWludDhfdAkJdHlwZSkKLSsJdWludDhfdAkJCXR5cGUpCi0gewotIAlBU1NFUlQodHlwZSA8IFhGU19ESVIzX0ZUX01BWCk7Ci0gCUFTU0VSVChkZXAtPm5hbWVsZW4gIT0gMCk7Ci1kaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19kYV9mb3JtYXQuaCBiL2xpYnhmcy94ZnNfZGFfZm9ybWF0LmgKLWluZGV4IDlhNDkyYTllLi4zNzcxZWRjYiAxMDA2NDQKLS0tLSBhL2xpYnhmcy94ZnNfZGFfZm9ybWF0LmgKLSsrKyBiL2xpYnhmcy94ZnNfZGFfZm9ybWF0LmgKLUBAIC0xMTEsMTEgKzExMSwxMSBAQCBzdHJ1Y3QgeGZzX2RhM19pbnRub2RlIHsKLSAgKiBhcHByb3ByaWF0ZS4KLSAgKi8KLSBzdHJ1Y3QgeGZzX2RhM19pY25vZGVfaGRyIHsKLS0JX191aW50MzJfdAlmb3J3OwotLQlfX3VpbnQzMl90CWJhY2s7Ci0tCV9fdWludDE2X3QJbWFnaWM7Ci0tCV9fdWludDE2X3QJY291bnQ7Ci0tCV9fdWludDE2X3QJbGV2ZWw7Ci0rCXVpbnQzMl90CWZvcnc7Ci0rCXVpbnQzMl90CWJhY2s7Ci0rCXVpbnQxNl90CW1hZ2ljOwotKwl1aW50MTZfdAljb3VudDsKLSsJdWludDE2X3QJbGV2ZWw7Ci0gfTsKLSAKLSAvKgotQEAgLTE4NywxNCArMTg3LDE0IEBAIHN0cnVjdCB4ZnNfZGEzX2ljbm9kZV9oZHIgewotIC8qCi0gICogQnl0ZSBvZmZzZXQgaW4gZGF0YSBibG9jayBhbmQgc2hvcnRmb3JtIGVudHJ5LgotICAqLwotLXR5cGVkZWYJX191aW50MTZfdAl4ZnNfZGlyMl9kYXRhX29mZl90OwotK3R5cGVkZWYgdWludDE2X3QJeGZzX2RpcjJfZGF0YV9vZmZfdDsKLSAjZGVmaW5lCU5VTExEQVRBT0ZGCTB4ZmZmZlUKLSB0eXBlZGVmIHVpbnQJCXhmc19kaXIyX2RhdGFfYW9mZl90OwkvKiBhcmd1bWVudCBmb3JtICovCi0gCi0gLyoKLSAgKiBPZmZzZXQgaW4gZGF0YSBzcGFjZSBvZiBhIGRhdGEgZW50cnkuCi0gICovCi0tdHlwZWRlZglfX3VpbnQzMl90CXhmc19kaXIyX2RhdGFwdHJfdDsKLSt0eXBlZGVmIHVpbnQzMl90CXhmc19kaXIyX2RhdGFwdHJfdDsKLSAjZGVmaW5lCVhGU19ESVIyX01BWF9EQVRBUFRSCSgoeGZzX2RpcjJfZGF0YXB0cl90KTB4ZmZmZmZmZmYpCi0gI2RlZmluZQlYRlNfRElSMl9OVUxMX0RBVEFQVFIJKCh4ZnNfZGlyMl9kYXRhcHRyX3QpMCkKLSAKLUBAIC0yMDYsNyArMjA2LDcgQEAgdHlwZWRlZgl4ZnNfb2ZmX3QJeGZzX2RpcjJfb2ZmX3Q7Ci0gLyoKLSAgKiBEaXJlY3RvcnkgYmxvY2sgbnVtYmVyIChsb2dpY2FsIGRpcmJsayBpbiBmaWxlKQotICAqLwotLXR5cGVkZWYJX191aW50MzJfdAl4ZnNfZGlyMl9kYl90OwotK3R5cGVkZWYgdWludDMyX3QJeGZzX2RpcjJfZGJfdDsKLSAKLSAjZGVmaW5lIFhGU19JTk8zMl9TSVpFCTQKLSAjZGVmaW5lIFhGU19JTk82NF9TSVpFCTgKLUBAIC0yMjYsOSArMjI2LDkgQEAgdHlwZWRlZglfX3VpbnQzMl90CXhmc19kaXIyX2RiX3Q7Ci0gICogb3ZlciB0aGVtLgotICAqLwotIHR5cGVkZWYgc3RydWN0IHhmc19kaXIyX3NmX2hkciB7Ci0tCV9fdWludDhfdAkJY291bnQ7CQkvKiBjb3VudCBvZiBlbnRyaWVzICovCi0tCV9fdWludDhfdAkJaThjb3VudDsJLyogY291bnQgb2YgOC1ieXRlIGlub2RlICNzICovCi0tCV9fdWludDhfdAkJcGFyZW50WzhdOwkvKiBwYXJlbnQgZGlyIGlub2RlIG51bWJlciAqLwotKwl1aW50OF90CQkJY291bnQ7CQkvKiBjb3VudCBvZiBlbnRyaWVzICovCi0rCXVpbnQ4X3QJCQlpOGNvdW50OwkvKiBjb3VudCBvZiA4LWJ5dGUgaW5vZGUgI3MgKi8KLSsJdWludDhfdAkJCXBhcmVudFs4XTsJLyogcGFyZW50IGRpciBpbm9kZSBudW1iZXIgKi8KLSB9IF9fcGFja2VkIHhmc19kaXIyX3NmX2hkcl90OwotIAotIHR5cGVkZWYgc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5IHsKLUBAIC00NDcsMTEgKzQ0NywxMSBAQCBzdHJ1Y3QgeGZzX2RpcjNfbGVhZl9oZHIgewotIH07Ci0gCi0gc3RydWN0IHhmc19kaXIzX2ljbGVhZl9oZHIgewotLQlfX3VpbnQzMl90CQlmb3J3OwotLQlfX3VpbnQzMl90CQliYWNrOwotLQlfX3VpbnQxNl90CQltYWdpYzsKLS0JX191aW50MTZfdAkJY291bnQ7Ci0tCV9fdWludDE2X3QJCXN0YWxlOwotKwl1aW50MzJfdAkJZm9ydzsKLSsJdWludDMyX3QJCWJhY2s7Ci0rCXVpbnQxNl90CQltYWdpYzsKLSsJdWludDE2X3QJCWNvdW50OwotKwl1aW50MTZfdAkJc3RhbGU7Ci0gfTsKLSAKLSAvKgotQEAgLTUzOCwxMCArNTM4LDEwIEBAIHN0cnVjdCB4ZnNfZGlyM19mcmVlIHsKLSAgKiB4ZnNfZGlyM19mcmVlX2hkcl9mcm9tX2Rpc2sveGZzX2RpcjNfZnJlZV9oZHJfdG9fZGlzay4KLSAgKi8KLSBzdHJ1Y3QgeGZzX2RpcjNfaWNmcmVlX2hkciB7Ci0tCV9fdWludDMyX3QJbWFnaWM7Ci0tCV9fdWludDMyX3QJZmlyc3RkYjsKLS0JX191aW50MzJfdAludmFsaWQ7Ci0tCV9fdWludDMyX3QJbnVzZWQ7Ci0rCXVpbnQzMl90CW1hZ2ljOwotKwl1aW50MzJfdAlmaXJzdGRiOwotKwl1aW50MzJfdAludmFsaWQ7Ci0rCXVpbnQzMl90CW51c2VkOwotIAotIH07Ci0gCi1AQCAtNjMyLDEwICs2MzIsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX2F0dHJfc2hvcnRmb3JtIHsKLSAJCV9fdTgJcGFkZGluZzsKLSAJfSBoZHI7Ci0gCXN0cnVjdCB4ZnNfYXR0cl9zZl9lbnRyeSB7Ci0tCQlfX3VpbnQ4X3QgbmFtZWxlbjsJLyogYWN0dWFsIGxlbmd0aCBvZiBuYW1lIChubyBOVUxMKSAqLwotLQkJX191aW50OF90IHZhbHVlbGVuOwkvKiBhY3R1YWwgbGVuZ3RoIG9mIHZhbHVlIChubyBOVUxMKSAqLwotLQkJX191aW50OF90IGZsYWdzOwkvKiBmbGFncyBiaXRzIChzZWUgeGZzX2F0dHJfbGVhZi5oKSAqLwotLQkJX191aW50OF90IG5hbWV2YWxbMV07CS8qIG5hbWUgJiB2YWx1ZSBieXRlcyBjb25jYXRlbmF0ZWQgKi8KLSsJCXVpbnQ4X3QgbmFtZWxlbjsJLyogYWN0dWFsIGxlbmd0aCBvZiBuYW1lIChubyBOVUxMKSAqLwotKwkJdWludDhfdCB2YWx1ZWxlbjsJLyogYWN0dWFsIGxlbmd0aCBvZiB2YWx1ZSAobm8gTlVMTCkgKi8KLSsJCXVpbnQ4X3QgZmxhZ3M7CS8qIGZsYWdzIGJpdHMgKHNlZSB4ZnNfYXR0cl9sZWFmLmgpICovCi0rCQl1aW50OF90IG5hbWV2YWxbMV07CS8qIG5hbWUgJiB2YWx1ZSBieXRlcyBjb25jYXRlbmF0ZWQgKi8KLSAJfSBsaXN0WzFdOwkJCS8qIHZhcmlhYmxlIHNpemVkIGFycmF5ICovCi0gfSB4ZnNfYXR0cl9zaG9ydGZvcm1fdDsKLSAKLUBAIC03MjUsMjIgKzcyNSwyMiBAQCBzdHJ1Y3QgeGZzX2F0dHIzX2xlYWZibG9jayB7Ci0gICogaW5jb3JlLCBuZXV0cmFsIHZlcnNpb24gb2YgdGhlIGF0dHJpYnV0ZSBsZWFmIGhlYWRlcgotICAqLwotIHN0cnVjdCB4ZnNfYXR0cjNfaWNsZWFmX2hkciB7Ci0tCV9fdWludDMyX3QJZm9ydzsKLS0JX191aW50MzJfdAliYWNrOwotLQlfX3VpbnQxNl90CW1hZ2ljOwotLQlfX3VpbnQxNl90CWNvdW50OwotLQlfX3VpbnQxNl90CXVzZWRieXRlczsKLSsJdWludDMyX3QJZm9ydzsKLSsJdWludDMyX3QJYmFjazsKLSsJdWludDE2X3QJbWFnaWM7Ci0rCXVpbnQxNl90CWNvdW50OwotKwl1aW50MTZfdAl1c2VkYnl0ZXM7Ci0gCS8qCi0gCSAqIGZpcnN0dXNlZCBpcyAzMi1iaXQgaGVyZSBpbnN0ZWFkIG9mIDE2LWJpdCBsaWtlIHRoZSBvbi1kaXNrIHZhcmlhbnQKLSAJICogdG8gc3VwcG9ydCBtYXhpbXVtIGZzYiBzaXplIG9mIDY0ayB3aXRob3V0IG92ZXJmbG93IGlzc3VlcyB0aHJvdWdob3V0Ci0gCSAqIHRoZSBhdHRyIGNvZGUuIEluc3RlYWQsIHRoZSBvdmVyZmxvdyBjb25kaXRpb24gaXMgaGFuZGxlZCBvbgotIAkgKiBjb252ZXJzaW9uIHRvL2Zyb20gZGlzay4KLSAJICovCi0tCV9fdWludDMyX3QJZmlyc3R1c2VkOwotKwl1aW50MzJfdAlmaXJzdHVzZWQ7Ci0gCV9fdTgJCWhvbGVzOwotIAlzdHJ1Y3QgewotLQkJX191aW50MTZfdAliYXNlOwotLQkJX191aW50MTZfdAlzaXplOwotKwkJdWludDE2X3QJYmFzZTsKLSsJCXVpbnQxNl90CXNpemU7Ci0gCX0gZnJlZW1hcFtYRlNfQVRUUl9MRUFGX01BUFNJWkVdOwotIH07Ci0gCi1kaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19kaXIyLmggYi9saWJ4ZnMveGZzX2RpcjIuaAotaW5kZXggZDZlNmQ5ZDEuLjIxYzhmOGJmIDEwMDY0NAotLS0tIGEvbGlieGZzL3hmc19kaXIyLmgKLSsrKyBiL2xpYnhmcy94ZnNfZGlyMi5oCi1AQCAtNDcsOSArNDcsOSBAQCBzdHJ1Y3QgeGZzX2Rpcl9vcHMgewotIAlzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKgotIAkJKCpzZl9uZXh0ZW50cnkpKHN0cnVjdCB4ZnNfZGlyMl9zZl9oZHIgKmhkciwKLSAJCQkJc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5ICpzZmVwKTsKLS0JX191aW50OF90ICgqc2ZfZ2V0X2Z0eXBlKShzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKnNmZXApOwotKwl1aW50OF90ICgqc2ZfZ2V0X2Z0eXBlKShzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKnNmZXApOwotIAl2b2lkCSgqc2ZfcHV0X2Z0eXBlKShzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKnNmZXAsCi0tCQkJCV9fdWludDhfdCBmdHlwZSk7Ci0rCQkJCXVpbnQ4X3QgZnR5cGUpOwotIAl4ZnNfaW5vX3QgKCpzZl9nZXRfaW5vKShzdHJ1Y3QgeGZzX2RpcjJfc2ZfaGRyICpoZHIsCi0gCQkJCXN0cnVjdCB4ZnNfZGlyMl9zZl9lbnRyeSAqc2ZlcCk7Ci0gCXZvaWQJKCpzZl9wdXRfaW5vKShzdHJ1Y3QgeGZzX2RpcjJfc2ZfaGRyICpoZHIsCi1AQCAtNjAsOSArNjAsOSBAQCBzdHJ1Y3QgeGZzX2Rpcl9vcHMgewotIAkJCQkgICAgIHhmc19pbm9fdCBpbm8pOwotIAotIAlpbnQJKCpkYXRhX2VudHNpemUpKGludCBsZW4pOwotLQlfX3VpbnQ4X3QgKCpkYXRhX2dldF9mdHlwZSkoc3RydWN0IHhmc19kaXIyX2RhdGFfZW50cnkgKmRlcCk7Ci0rCXVpbnQ4X3QgKCpkYXRhX2dldF9mdHlwZSkoc3RydWN0IHhmc19kaXIyX2RhdGFfZW50cnkgKmRlcCk7Ci0gCXZvaWQJKCpkYXRhX3B1dF9mdHlwZSkoc3RydWN0IHhmc19kaXIyX2RhdGFfZW50cnkgKmRlcCwKLS0JCQkJX191aW50OF90IGZ0eXBlKTsKLSsJCQkJdWludDhfdCBmdHlwZSk7Ci0gCV9fYmUxNiAqICgqZGF0YV9lbnRyeV90YWdfcCkoc3RydWN0IHhmc19kaXIyX2RhdGFfZW50cnkgKmRlcCk7Ci0gCXN0cnVjdCB4ZnNfZGlyMl9kYXRhX2ZyZWUgKgotIAkJKCpkYXRhX2Jlc3RmcmVlX3ApKHN0cnVjdCB4ZnNfZGlyMl9kYXRhX2hkciAqaGRyKTsKLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2RpcjJfbGVhZi5jIGIvbGlieGZzL3hmc19kaXIyX2xlYWYuYwotaW5kZXggZjgwZDkxZmMuLjQwYTM1Yjg0IDEwMDY0NAotLS0tIGEvbGlieGZzL3hmc19kaXIyX2xlYWYuYwotKysrIGIvbGlieGZzL3hmc19kaXIyX2xlYWYuYwotQEAgLTE0Miw3ICsxNDIsNyBAQCB4ZnNfZGlyM19sZWFmX2NoZWNrX2ludCgKLSBzdGF0aWMgYm9vbAotIHhmc19kaXIzX2xlYWZfdmVyaWZ5KAotIAlzdHJ1Y3QgeGZzX2J1ZgkJKmJwLAotLQlfX3VpbnQxNl90CQltYWdpYykKLSsJdWludDE2X3QJCW1hZ2ljKQotIHsKLSAJc3RydWN0IHhmc19tb3VudAkqbXAgPSBicC0+Yl90YXJnZXQtPmJ0X21vdW50OwotIAlzdHJ1Y3QgeGZzX2RpcjJfbGVhZgkqbGVhZiA9IGJwLT5iX2FkZHI7Ci1AQCAtMTUxLDcgKzE1MSw3IEBAIHhmc19kaXIzX2xlYWZfdmVyaWZ5KAotIAotIAlpZiAoeGZzX3NiX3ZlcnNpb25faGFzY3JjKCZtcC0+bV9zYikpIHsKLSAJCXN0cnVjdCB4ZnNfZGlyM19sZWFmX2hkciAqbGVhZjMgPSBicC0+Yl9hZGRyOwotLQkJX191aW50MTZfdAkJbWFnaWMzOwotKwkJdWludDE2X3QJCW1hZ2ljMzsKLSAKLSAJCW1hZ2ljMyA9IChtYWdpYyA9PSBYRlNfRElSMl9MRUFGMV9NQUdJQykgPyBYRlNfRElSM19MRUFGMV9NQUdJQwotIAkJCQkJCQkgOiBYRlNfRElSM19MRUFGTl9NQUdJQzsKLUBAIC0xNzUsNyArMTc1LDcgQEAgeGZzX2RpcjNfbGVhZl92ZXJpZnkoCi0gc3RhdGljIHZvaWQKLSBfX3JlYWRfdmVyaWZ5KAotIAlzdHJ1Y3QgeGZzX2J1ZiAgKmJwLAotLQlfX3VpbnQxNl90CW1hZ2ljKQotKwl1aW50MTZfdAltYWdpYykKLSB7Ci0gCXN0cnVjdCB4ZnNfbW91bnQJKm1wID0gYnAtPmJfdGFyZ2V0LT5idF9tb3VudDsKLSAKLUBAIC0xOTIsNyArMTkyLDcgQEAgX19yZWFkX3ZlcmlmeSgKLSBzdGF0aWMgdm9pZAotIF9fd3JpdGVfdmVyaWZ5KAotIAlzdHJ1Y3QgeGZzX2J1ZiAgKmJwLAotLQlfX3VpbnQxNl90CW1hZ2ljKQotKwl1aW50MTZfdAltYWdpYykKLSB7Ci0gCXN0cnVjdCB4ZnNfbW91bnQJKm1wID0gYnAtPmJfdGFyZ2V0LT5idF9tb3VudDsKLSAJc3RydWN0IHhmc19idWZfbG9nX2l0ZW0JKmJpcCA9IGJwLT5iX2ZzcHJpdjsKLUBAIC0yOTYsNyArMjk2LDcgQEAgeGZzX2RpcjNfbGVhZl9pbml0KAotIAlzdHJ1Y3QgeGZzX3RyYW5zCSp0cCwKLSAJc3RydWN0IHhmc19idWYJCSpicCwKLSAJeGZzX2lub190CQlvd25lciwKLS0JX191aW50MTZfdAkJdHlwZSkKLSsJdWludDE2X3QJCXR5cGUpCi0gewotIAlzdHJ1Y3QgeGZzX2RpcjJfbGVhZgkqbGVhZiA9IGJwLT5iX2FkZHI7Ci0gCi1AQCAtMzQwLDcgKzM0MCw3IEBAIHhmc19kaXIzX2xlYWZfZ2V0X2J1ZigKLSAJeGZzX2RhX2FyZ3NfdAkJKmFyZ3MsCi0gCXhmc19kaXIyX2RiX3QJCWJubywKLSAJc3RydWN0IHhmc19idWYJCSoqYnBwLAotLQlfX3VpbnQxNl90CQltYWdpYykKLSsJdWludDE2X3QJCW1hZ2ljKQotIHsKLSAJc3RydWN0IHhmc19pbm9kZQkqZHAgPSBhcmdzLT5kcDsKLSAJc3RydWN0IHhmc190cmFucwkqdHAgPSBhcmdzLT50cmFuczsKLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2RpcjJfcHJpdi5oIGIvbGlieGZzL3hmc19kaXIyX3ByaXYuaAotaW5kZXggMzlmODYwNGYuLjAxMWRmNGRhIDEwMDY0NAotLS0tIGEvbGlieGZzL3hmc19kaXIyX3ByaXYuaAotKysrIGIvbGlieGZzL3hmc19kaXIyX3ByaXYuaAotQEAgLTY5LDcgKzY5LDcgQEAgZXh0ZXJuIHZvaWQgeGZzX2RpcjNfbGVhZl9jb21wYWN0X3gxKHN0cnVjdCB4ZnNfZGlyM19pY2xlYWZfaGRyICpsZWFmaGRyLAotIAkJc3RydWN0IHhmc19kaXIyX2xlYWZfZW50cnkgKmVudHMsIGludCAqaW5kZXhwLAotIAkJaW50ICpsb3dzdGFsZXAsIGludCAqaGlnaHN0YWxlcCwgaW50ICpsb3dsb2dwLCBpbnQgKmhpZ2hsb2dwKTsKLSBleHRlcm4gaW50IHhmc19kaXIzX2xlYWZfZ2V0X2J1ZihzdHJ1Y3QgeGZzX2RhX2FyZ3MgKmFyZ3MsIHhmc19kaXIyX2RiX3QgYm5vLAotLQkJc3RydWN0IHhmc19idWYgKipicHAsIF9fdWludDE2X3QgbWFnaWMpOwotKwkJc3RydWN0IHhmc19idWYgKipicHAsIHVpbnQxNl90IG1hZ2ljKTsKLSBleHRlcm4gdm9pZCB4ZnNfZGlyM19sZWFmX2xvZ19lbnRzKHN0cnVjdCB4ZnNfZGFfYXJncyAqYXJncywKLSAJCXN0cnVjdCB4ZnNfYnVmICpicCwgaW50IGZpcnN0LCBpbnQgbGFzdCk7Ci0gZXh0ZXJuIHZvaWQgeGZzX2RpcjNfbGVhZl9sb2dfaGVhZGVyKHN0cnVjdCB4ZnNfZGFfYXJncyAqYXJncywKLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2RpcjJfc2YuYyBiL2xpYnhmcy94ZnNfZGlyMl9zZi5jCi1pbmRleCAxOTVmODE2ZC4uMGM0NTM5ODggMTAwNjQ0Ci0tLS0gYS9saWJ4ZnMveGZzX2RpcjJfc2YuYwotKysrIGIvbGlieGZzL3hmc19kaXIyX3NmLmMKLUBAIC0xMjUsNyArMTI1LDcgQEAgeGZzX2RpcjJfYmxvY2tfc2ZzaXplKAotIAkJICogQ2FsY3VsYXRlIHRoZSBuZXcgc2l6ZSwgc2VlIGlmIHdlIHNob3VsZCBnaXZlIHVwIHlldC4KLSAJCSAqLwotIAkJc2l6ZSA9IHhmc19kaXIyX3NmX2hkcl9zaXplKGk4Y291bnQpICsJLyogaGVhZGVyICovCi0tCQkgICAgICAgY291bnQgKiAzICogc2l6ZW9mKF9fdTgpICsJLyogbmFtZWxlbiArIG9mZnNldCAqLwotKwkJICAgICAgIGNvdW50ICogMyAqIHNpemVvZih1OCkgKwkJLyogbmFtZWxlbiArIG9mZnNldCAqLwotIAkJICAgICAgIG5hbWVsZW4gKwkJCS8qIG5hbWUgKi8KLSAJCSAgICAgICAoaThjb3VudCA/CQkJLyogaW51bWJlciAqLwotIAkJCQljb3VudCAqIFhGU19JTk82NF9TSVpFIDoKLUBAIC02NDUsNyArNjQ1LDcgQEAgeGZzX2RpcjJfc2ZfdmVyaWZ5KAotIAlpbnQJCQkJb2Zmc2V0OwotIAlpbnQJCQkJc2l6ZTsKLSAJaW50CQkJCWVycm9yOwotLQlfX3VpbnQ4X3QJCQlmaWxldHlwZTsKLSsJdWludDhfdAkJCQlmaWxldHlwZTsKLSAKLSAJQVNTRVJUKGlwLT5pX2QuZGlfZm9ybWF0ID09IFhGU19ESU5PREVfRk1UX0xPQ0FMKTsKLSAJLyoKLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2Zvcm1hdC5oIGIvbGlieGZzL3hmc19mb3JtYXQuaAotaW5kZXggNGMzZWQxZmQuLmE1M2YwMzVmIDEwMDY0NAotLS0tIGEvbGlieGZzL3hmc19mb3JtYXQuaAotKysrIGIvbGlieGZzL3hmc19mb3JtYXQuaAotQEAgLTEwMyw4ICsxMDMsOCBAQCBzdHJ1Y3QgeGZzX2lmb3JrOwotICAqIE11c3QgYmUgcGFkZGVkIHRvIDY0IGJpdCBhbGlnbm1lbnQuCi0gICovCi0gdHlwZWRlZiBzdHJ1Y3QgeGZzX3NiIHsKLS0JX191aW50MzJfdAlzYl9tYWdpY251bTsJLyogbWFnaWMgbnVtYmVyID09IFhGU19TQl9NQUdJQyAqLwotLQlfX3VpbnQzMl90CXNiX2Jsb2Nrc2l6ZTsJLyogbG9naWNhbCBibG9jayBzaXplLCBieXRlcyAqLwotKwl1aW50MzJfdAlzYl9tYWdpY251bTsJLyogbWFnaWMgbnVtYmVyID09IFhGU19TQl9NQUdJQyAqLwotKwl1aW50MzJfdAlzYl9ibG9ja3NpemU7CS8qIGxvZ2ljYWwgYmxvY2sgc2l6ZSwgYnl0ZXMgKi8KLSAJeGZzX3Jmc2Jsb2NrX3QJc2JfZGJsb2NrczsJLyogbnVtYmVyIG9mIGRhdGEgYmxvY2tzICovCi0gCXhmc19yZnNibG9ja190CXNiX3JibG9ja3M7CS8qIG51bWJlciBvZiByZWFsdGltZSBibG9ja3MgKi8KLSAJeGZzX3J0YmxvY2tfdAlzYl9yZXh0ZW50czsJLyogbnVtYmVyIG9mIHJlYWx0aW1lIGV4dGVudHMgKi8KLUBAIC0xMTgsNDUgKzExOCw0NSBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfc2IgewotIAl4ZnNfYWdudW1iZXJfdAlzYl9hZ2NvdW50OwkvKiBudW1iZXIgb2YgYWxsb2NhdGlvbiBncm91cHMgKi8KLSAJeGZzX2V4dGxlbl90CXNiX3JibWJsb2NrczsJLyogbnVtYmVyIG9mIHJ0IGJpdG1hcCBibG9ja3MgKi8KLSAJeGZzX2V4dGxlbl90CXNiX2xvZ2Jsb2NrczsJLyogbnVtYmVyIG9mIGxvZyBibG9ja3MgKi8KLS0JX191aW50MTZfdAlzYl92ZXJzaW9ubnVtOwkvKiBoZWFkZXIgdmVyc2lvbiA9PSBYRlNfU0JfVkVSU0lPTiAqLwotLQlfX3VpbnQxNl90CXNiX3NlY3RzaXplOwkvKiB2b2x1bWUgc2VjdG9yIHNpemUsIGJ5dGVzICovCi0tCV9fdWludDE2X3QJc2JfaW5vZGVzaXplOwkvKiBpbm9kZSBzaXplLCBieXRlcyAqLwotLQlfX3VpbnQxNl90CXNiX2lub3BibG9jazsJLyogaW5vZGVzIHBlciBibG9jayAqLwotKwl1aW50MTZfdAlzYl92ZXJzaW9ubnVtOwkvKiBoZWFkZXIgdmVyc2lvbiA9PSBYRlNfU0JfVkVSU0lPTiAqLwotKwl1aW50MTZfdAlzYl9zZWN0c2l6ZTsJLyogdm9sdW1lIHNlY3RvciBzaXplLCBieXRlcyAqLwotKwl1aW50MTZfdAlzYl9pbm9kZXNpemU7CS8qIGlub2RlIHNpemUsIGJ5dGVzICovCi0rCXVpbnQxNl90CXNiX2lub3BibG9jazsJLyogaW5vZGVzIHBlciBibG9jayAqLwotIAljaGFyCQlzYl9mbmFtZVsxMl07CS8qIGZpbGUgc3lzdGVtIG5hbWUgKi8KLS0JX191aW50OF90CXNiX2Jsb2NrbG9nOwkvKiBsb2cyIG9mIHNiX2Jsb2Nrc2l6ZSAqLwotLQlfX3VpbnQ4X3QJc2Jfc2VjdGxvZzsJLyogbG9nMiBvZiBzYl9zZWN0c2l6ZSAqLwotLQlfX3VpbnQ4X3QJc2JfaW5vZGVsb2c7CS8qIGxvZzIgb2Ygc2JfaW5vZGVzaXplICovCi0tCV9fdWludDhfdAlzYl9pbm9wYmxvZzsJLyogbG9nMiBvZiBzYl9pbm9wYmxvY2sgKi8KLS0JX191aW50OF90CXNiX2FnYmxrbG9nOwkvKiBsb2cyIG9mIHNiX2FnYmxvY2tzIChyb3VuZGVkIHVwKSAqLwotLQlfX3VpbnQ4X3QJc2JfcmV4dHNsb2c7CS8qIGxvZzIgb2Ygc2JfcmV4dGVudHMgKi8KLS0JX191aW50OF90CXNiX2lucHJvZ3Jlc3M7CS8qIG1rZnMgaXMgaW4gcHJvZ3Jlc3MsIGRvbid0IG1vdW50ICovCi0tCV9fdWludDhfdAlzYl9pbWF4X3BjdDsJLyogbWF4ICUgb2YgZnMgZm9yIGlub2RlIHNwYWNlICovCi0rCXVpbnQ4X3QJCXNiX2Jsb2NrbG9nOwkvKiBsb2cyIG9mIHNiX2Jsb2Nrc2l6ZSAqLwotKwl1aW50OF90CQlzYl9zZWN0bG9nOwkvKiBsb2cyIG9mIHNiX3NlY3RzaXplICovCi0rCXVpbnQ4X3QJCXNiX2lub2RlbG9nOwkvKiBsb2cyIG9mIHNiX2lub2Rlc2l6ZSAqLwotKwl1aW50OF90CQlzYl9pbm9wYmxvZzsJLyogbG9nMiBvZiBzYl9pbm9wYmxvY2sgKi8KLSsJdWludDhfdAkJc2JfYWdibGtsb2c7CS8qIGxvZzIgb2Ygc2JfYWdibG9ja3MgKHJvdW5kZWQgdXApICovCi0rCXVpbnQ4X3QJCXNiX3JleHRzbG9nOwkvKiBsb2cyIG9mIHNiX3JleHRlbnRzICovCi0rCXVpbnQ4X3QJCXNiX2lucHJvZ3Jlc3M7CS8qIG1rZnMgaXMgaW4gcHJvZ3Jlc3MsIGRvbid0IG1vdW50ICovCi0rCXVpbnQ4X3QJCXNiX2ltYXhfcGN0OwkvKiBtYXggJSBvZiBmcyBmb3IgaW5vZGUgc3BhY2UgKi8KLSAJCQkJCS8qIHN0YXRpc3RpY3MgKi8KLSAJLyoKLSAJICogVGhlc2UgZmllbGRzIG11c3QgcmVtYWluIGNvbnRpZ3VvdXMuICBJZiB5b3UgcmVhbGx5Ci0gCSAqIHdhbnQgdG8gY2hhbmdlIHRoZWlyIGxheW91dCwgbWFrZSBzdXJlIHlvdSBmaXggdGhlCi0gCSAqIGNvZGUgaW4geGZzX3RyYW5zX2FwcGx5X3NiX2RlbHRhcygpLgotIAkgKi8KLS0JX191aW50NjRfdAlzYl9pY291bnQ7CS8qIGFsbG9jYXRlZCBpbm9kZXMgKi8KLS0JX191aW50NjRfdAlzYl9pZnJlZTsJLyogZnJlZSBpbm9kZXMgKi8KLS0JX191aW50NjRfdAlzYl9mZGJsb2NrczsJLyogZnJlZSBkYXRhIGJsb2NrcyAqLwotLQlfX3VpbnQ2NF90CXNiX2ZyZXh0ZW50czsJLyogZnJlZSByZWFsdGltZSBleHRlbnRzICovCi0rCXVpbnQ2NF90CXNiX2ljb3VudDsJLyogYWxsb2NhdGVkIGlub2RlcyAqLwotKwl1aW50NjRfdAlzYl9pZnJlZTsJLyogZnJlZSBpbm9kZXMgKi8KLSsJdWludDY0X3QJc2JfZmRibG9ja3M7CS8qIGZyZWUgZGF0YSBibG9ja3MgKi8KLSsJdWludDY0X3QJc2JfZnJleHRlbnRzOwkvKiBmcmVlIHJlYWx0aW1lIGV4dGVudHMgKi8KLSAJLyoKLSAJICogRW5kIGNvbnRpZ3VvdXMgZmllbGRzLgotIAkgKi8KLSAJeGZzX2lub190CXNiX3VxdW90aW5vOwkvKiB1c2VyIHF1b3RhIGlub2RlICovCi0gCXhmc19pbm9fdAlzYl9ncXVvdGlubzsJLyogZ3JvdXAgcXVvdGEgaW5vZGUgKi8KLS0JX191aW50MTZfdAlzYl9xZmxhZ3M7CS8qIHF1b3RhIGZsYWdzICovCi0tCV9fdWludDhfdAlzYl9mbGFnczsJLyogbWlzYy4gZmxhZ3MgKi8KLS0JX191aW50OF90CXNiX3NoYXJlZF92bjsJLyogc2hhcmVkIHZlcnNpb24gbnVtYmVyICovCi0rCXVpbnQxNl90CXNiX3FmbGFnczsJLyogcXVvdGEgZmxhZ3MgKi8KLSsJdWludDhfdAkJc2JfZmxhZ3M7CS8qIG1pc2MuIGZsYWdzICovCi0rCXVpbnQ4X3QJCXNiX3NoYXJlZF92bjsJLyogc2hhcmVkIHZlcnNpb24gbnVtYmVyICovCi0gCXhmc19leHRsZW5fdAlzYl9pbm9hbGlnbm10OwkvKiBpbm9kZSBjaHVuayBhbGlnbm1lbnQsIGZzYmxvY2tzICovCi0tCV9fdWludDMyX3QJc2JfdW5pdDsJLyogc3RyaXBlIG9yIHJhaWQgdW5pdCAqLwotLQlfX3VpbnQzMl90CXNiX3dpZHRoOwkvKiBzdHJpcGUgb3IgcmFpZCB3aWR0aCAqLwotLQlfX3VpbnQ4X3QJc2JfZGlyYmxrbG9nOwkvKiBsb2cyIG9mIGRpciBibG9jayBzaXplIChmc2JzKSAqLwotLQlfX3VpbnQ4X3QJc2JfbG9nc2VjdGxvZzsJLyogbG9nMiBvZiB0aGUgbG9nIHNlY3RvciBzaXplICovCi0tCV9fdWludDE2X3QJc2JfbG9nc2VjdHNpemU7CS8qIHNlY3RvciBzaXplIGZvciB0aGUgbG9nLCBieXRlcyAqLwotLQlfX3VpbnQzMl90CXNiX2xvZ3N1bml0OwkvKiBzdHJpcGUgdW5pdCBzaXplIGZvciB0aGUgbG9nICovCi0tCV9fdWludDMyX3QJc2JfZmVhdHVyZXMyOwkvKiBhZGRpdGlvbmFsIGZlYXR1cmUgYml0cyAqLwotKwl1aW50MzJfdAlzYl91bml0OwkvKiBzdHJpcGUgb3IgcmFpZCB1bml0ICovCi0rCXVpbnQzMl90CXNiX3dpZHRoOwkvKiBzdHJpcGUgb3IgcmFpZCB3aWR0aCAqLwotKwl1aW50OF90CQlzYl9kaXJibGtsb2c7CS8qIGxvZzIgb2YgZGlyIGJsb2NrIHNpemUgKGZzYnMpICovCi0rCXVpbnQ4X3QJCXNiX2xvZ3NlY3Rsb2c7CS8qIGxvZzIgb2YgdGhlIGxvZyBzZWN0b3Igc2l6ZSAqLwotKwl1aW50MTZfdAlzYl9sb2dzZWN0c2l6ZTsJLyogc2VjdG9yIHNpemUgZm9yIHRoZSBsb2csIGJ5dGVzICovCi0rCXVpbnQzMl90CXNiX2xvZ3N1bml0OwkvKiBzdHJpcGUgdW5pdCBzaXplIGZvciB0aGUgbG9nICovCi0rCXVpbnQzMl90CXNiX2ZlYXR1cmVzMjsJLyogYWRkaXRpb25hbCBmZWF0dXJlIGJpdHMgKi8KLSAKLSAJLyoKLSAJICogYmFkIGZlYXR1cmVzMiBmaWVsZCBhcyBhIHJlc3VsdCBvZiBmYWlsaW5nIHRvIHBhZCB0aGUgc2Igc3RydWN0dXJlIHRvCi1AQCAtMTY3LDE3ICsxNjcsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX3NiIHsKLSAJICogdGhlIHZhbHVlIGluIHNiX2ZlYXR1cmVzMiB3aGVuIGZvcm1hdHRpbmcgdGhlIGluY29yZSBzdXBlcmJsb2NrIHRvCi0gCSAqIHRoZSBkaXNrIGJ1ZmZlci4KLSAJICovCi0tCV9fdWludDMyX3QJc2JfYmFkX2ZlYXR1cmVzMjsKLSsJdWludDMyX3QJc2JfYmFkX2ZlYXR1cmVzMjsKLSAKLSAJLyogdmVyc2lvbiA1IHN1cGVyYmxvY2sgZmllbGRzIHN0YXJ0IGhlcmUgKi8KLSAKLSAJLyogZmVhdHVyZSBtYXNrcyAqLwotLQlfX3VpbnQzMl90CXNiX2ZlYXR1cmVzX2NvbXBhdDsKLS0JX191aW50MzJfdAlzYl9mZWF0dXJlc19yb19jb21wYXQ7Ci0tCV9fdWludDMyX3QJc2JfZmVhdHVyZXNfaW5jb21wYXQ7Ci0tCV9fdWludDMyX3QJc2JfZmVhdHVyZXNfbG9nX2luY29tcGF0OwotKwl1aW50MzJfdAlzYl9mZWF0dXJlc19jb21wYXQ7Ci0rCXVpbnQzMl90CXNiX2ZlYXR1cmVzX3JvX2NvbXBhdDsKLSsJdWludDMyX3QJc2JfZmVhdHVyZXNfaW5jb21wYXQ7Ci0rCXVpbnQzMl90CXNiX2ZlYXR1cmVzX2xvZ19pbmNvbXBhdDsKLSAKLS0JX191aW50MzJfdAlzYl9jcmM7CQkvKiBzdXBlcmJsb2NrIGNyYyAqLwotKwl1aW50MzJfdAlzYl9jcmM7CQkvKiBzdXBlcmJsb2NrIGNyYyAqLwotIAl4ZnNfZXh0bGVuX3QJc2Jfc3Bpbm9fYWxpZ247CS8qIHNwYXJzZSBpbm9kZSBjaHVuayBhbGlnbm1lbnQgKi8KLSAKLSAJeGZzX2lub190CXNiX3BxdW90aW5vOwkvKiBwcm9qZWN0IHF1b3RhIGlub2RlICovCi1AQCAtNDQ5LDcgKzQ0OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB4ZnNfc2JfdmVyc2lvbl9hZGRwcm9qaWQzMmJpdChzdHJ1Y3QgeGZzX3NiICpzYnApCi0gc3RhdGljIGlubGluZSBib29sCi0geGZzX3NiX2hhc19jb21wYXRfZmVhdHVyZSgKLSAJc3RydWN0IHhmc19zYgkqc2JwLAotLQlfX3VpbnQzMl90CWZlYXR1cmUpCi0rCXVpbnQzMl90CWZlYXR1cmUpCi0gewotIAlyZXR1cm4gKHNicC0+c2JfZmVhdHVyZXNfY29tcGF0ICYgZmVhdHVyZSkgIT0gMDsKLSB9Ci1AQCAtNDY1LDcgKzQ2NSw3IEBAIHhmc19zYl9oYXNfY29tcGF0X2ZlYXR1cmUoCi0gc3RhdGljIGlubGluZSBib29sCi0geGZzX3NiX2hhc19yb19jb21wYXRfZmVhdHVyZSgKLSAJc3RydWN0IHhmc19zYgkqc2JwLAotLQlfX3VpbnQzMl90CWZlYXR1cmUpCi0rCXVpbnQzMl90CWZlYXR1cmUpCi0gewotIAlyZXR1cm4gKHNicC0+c2JfZmVhdHVyZXNfcm9fY29tcGF0ICYgZmVhdHVyZSkgIT0gMDsKLSB9Ci1AQCAtNDgyLDcgKzQ4Miw3IEBAIHhmc19zYl9oYXNfcm9fY29tcGF0X2ZlYXR1cmUoCi0gc3RhdGljIGlubGluZSBib29sCi0geGZzX3NiX2hhc19pbmNvbXBhdF9mZWF0dXJlKAotIAlzdHJ1Y3QgeGZzX3NiCSpzYnAsCi0tCV9fdWludDMyX3QJZmVhdHVyZSkKLSsJdWludDMyX3QJZmVhdHVyZSkKLSB7Ci0gCXJldHVybiAoc2JwLT5zYl9mZWF0dXJlc19pbmNvbXBhdCAmIGZlYXR1cmUpICE9IDA7Ci0gfQotQEAgLTQ5Miw3ICs0OTIsNyBAQCB4ZnNfc2JfaGFzX2luY29tcGF0X2ZlYXR1cmUoCi0gc3RhdGljIGlubGluZSBib29sCi0geGZzX3NiX2hhc19pbmNvbXBhdF9sb2dfZmVhdHVyZSgKLSAJc3RydWN0IHhmc19zYgkqc2JwLAotLQlfX3VpbnQzMl90CWZlYXR1cmUpCi0rCXVpbnQzMl90CWZlYXR1cmUpCi0gewotIAlyZXR1cm4gKHNicC0+c2JfZmVhdHVyZXNfbG9nX2luY29tcGF0ICYgZmVhdHVyZSkgIT0gMDsKLSB9Ci1AQCAtNTk0LDggKzU5NCw4IEBAIHhmc19pc19xdW90YV9pbm9kZShzdHJ1Y3QgeGZzX3NiICpzYnAsIHhmc19pbm9fdCBpbm8pCi0gICovCi0gI2RlZmluZSBYRlNfRlNCX1RPX0IobXAsZnNibm8pCSgoeGZzX2ZzaXplX3QpKGZzYm5vKSA8PCAobXApLT5tX3NiLnNiX2Jsb2NrbG9nKQotICNkZWZpbmUgWEZTX0JfVE9fRlNCKG1wLGIpCVwKLS0JKCgoKF9fdWludDY0X3QpKGIpKSArIChtcCktPm1fYmxvY2ttYXNrKSA+PiAobXApLT5tX3NiLnNiX2Jsb2NrbG9nKQotLSNkZWZpbmUgWEZTX0JfVE9fRlNCVChtcCxiKQkoKChfX3VpbnQ2NF90KShiKSkgPj4gKG1wKS0+bV9zYi5zYl9ibG9ja2xvZykKLSsJKCgoKHVpbnQ2NF90KShiKSkgKyAobXApLT5tX2Jsb2NrbWFzaykgPj4gKG1wKS0+bV9zYi5zYl9ibG9ja2xvZykKLSsjZGVmaW5lIFhGU19CX1RPX0ZTQlQobXAsYikJKCgodWludDY0X3QpKGIpKSA+PiAobXApLT5tX3NiLnNiX2Jsb2NrbG9nKQotICNkZWZpbmUgWEZTX0JfRlNCX09GRlNFVChtcCxiKQkoKGIpICYgKG1wKS0+bV9ibG9ja21hc2spCi0gCi0gLyoKLUBAIC0xMDcyLDcgKzEwNzIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgeGZzX2Rpbm9kZV9wdXRfcmRldihzdHJ1Y3QgeGZzX2Rpbm9kZSAqZGlwLCB4ZnNfZGV2X3QgcmRldikKLSAgKiBuZXh0IGFnbm9fbG9nIGJpdHMgLSBhZyBudW1iZXIKLSAgKiBoaWdoIGFnbm9fbG9nLWFnYmxrbG9nLWlub3BibG9nIGJpdHMgLSAwCi0gICovCi0tI2RlZmluZQlYRlNfSU5PX01BU0soaykJCQkoX191aW50MzJfdCkoKDFVTEwgPDwgKGspKSAtIDEpCi0rI2RlZmluZQlYRlNfSU5PX01BU0soaykJCQkodWludDMyX3QpKCgxVUxMIDw8IChrKSkgLSAxKQotICNkZWZpbmUJWEZTX0lOT19PRkZTRVRfQklUUyhtcCkJCShtcCktPm1fc2Iuc2JfaW5vcGJsb2cKLSAjZGVmaW5lCVhGU19JTk9fQUdCTk9fQklUUyhtcCkJCShtcCktPm1fc2Iuc2JfYWdibGtsb2cKLSAjZGVmaW5lCVhGU19JTk9fQUdJTk9fQklUUyhtcCkJCShtcCktPm1fYWdpbm9fbG9nCi1AQCAtMTI2OSwxNiArMTI2OSwxNiBAQCB0eXBlZGVmIF9fYmUzMiB4ZnNfYWxsb2NfcHRyX3Q7Ci0gI2RlZmluZQlYRlNfRklCVF9NQUdJQwkJMHg0NjQ5NDI1NAkvKiAnRklCVCcgKi8KLSAjZGVmaW5lCVhGU19GSUJUX0NSQ19NQUdJQwkweDQ2NDk0MjMzCS8qICdGSUIzJyAqLwotIAotLXR5cGVkZWYJX191aW50NjRfdAl4ZnNfaW5vZnJlZV90OwotK3R5cGVkZWYgdWludDY0X3QJeGZzX2lub2ZyZWVfdDsKLSAjZGVmaW5lCVhGU19JTk9ERVNfUEVSX0NIVU5LCQkoTkJCWSAqIHNpemVvZih4ZnNfaW5vZnJlZV90KSkKLSAjZGVmaW5lCVhGU19JTk9ERVNfUEVSX0NIVU5LX0xPRwkoWEZTX05CQllMT0cgKyAzKQotICNkZWZpbmUJWEZTX0lOT0JUX0FMTF9GUkVFCQkoKHhmc19pbm9mcmVlX3QpLTEpCi0gI2RlZmluZQlYRlNfSU5PQlRfTUFTSyhpKQkJKCh4ZnNfaW5vZnJlZV90KTEgPDwgKGkpKQotIAotICNkZWZpbmUgWEZTX0lOT0JUX0hPTEVNQVNLX0ZVTEwJCTAJLyogaG9sZW1hc2sgZm9yIGZ1bGwgY2h1bmsgKi8KLS0jZGVmaW5lIFhGU19JTk9CVF9IT0xFTUFTS19CSVRTCQkoTkJCWSAqIHNpemVvZihfX3VpbnQxNl90KSkKLSsjZGVmaW5lIFhGU19JTk9CVF9IT0xFTUFTS19CSVRTCQkoTkJCWSAqIHNpemVvZih1aW50MTZfdCkpCi0gI2RlZmluZSBYRlNfSU5PREVTX1BFUl9IT0xFTUFTS19CSVQJXAotLQkoWEZTX0lOT0RFU19QRVJfQ0hVTksgLyAoTkJCWSAqIHNpemVvZihfX3VpbnQxNl90KSkpCi0rCShYRlNfSU5PREVTX1BFUl9DSFVOSyAvIChOQkJZICogc2l6ZW9mKHVpbnQxNl90KSkpCi0gCi0gc3RhdGljIGlubGluZSB4ZnNfaW5vZnJlZV90IHhmc19pbm9idF9tYXNrbihpbnQgaSwgaW50IG4pCi0gewotQEAgLTEzMTIsOSArMTMxMiw5IEBAIHR5cGVkZWYgc3RydWN0IHhmc19pbm9idF9yZWMgewotIAotIHR5cGVkZWYgc3RydWN0IHhmc19pbm9idF9yZWNfaW5jb3JlIHsKLSAJeGZzX2FnaW5vX3QJaXJfc3RhcnRpbm87CS8qIHN0YXJ0aW5nIGlub2RlIG51bWJlciAqLwotLQlfX3VpbnQxNl90CWlyX2hvbGVtYXNrOwkvKiBob2xlIG1hc2sgZm9yIHNwYXJzZSBjaHVua3MgKi8KLS0JX191aW50OF90CWlyX2NvdW50OwkvKiB0b3RhbCBpbm9kZSBjb3VudCAqLwotLQlfX3VpbnQ4X3QJaXJfZnJlZWNvdW50OwkvKiBjb3VudCBvZiBmcmVlIGlub2RlcyAoc2V0IGJpdHMpICovCi0rCXVpbnQxNl90CWlyX2hvbGVtYXNrOwkvKiBob2xlIG1hc2sgZm9yIHNwYXJzZSBjaHVua3MgKi8KLSsJdWludDhfdAkJaXJfY291bnQ7CS8qIHRvdGFsIGlub2RlIGNvdW50ICovCi0rCXVpbnQ4X3QJCWlyX2ZyZWVjb3VudDsJLyogY291bnQgb2YgZnJlZSBpbm9kZXMgKHNldCBiaXRzKSAqLwotIAl4ZnNfaW5vZnJlZV90CWlyX2ZyZWU7CS8qIGZyZWUgaW5vZGUgbWFzayAqLwotIH0geGZzX2lub2J0X3JlY19pbmNvcmVfdDsKLSAKLUBAIC0xMzk3LDE1ICsxMzk3LDE1IEBAIHN0cnVjdCB4ZnNfcm1hcF9yZWMgewotICAqICBybV9vZmZzZXQ6NTQtNjAgYXJlbid0IHVzZWQgYW5kIHNob3VsZCBiZSB6ZXJvCi0gICogIHJtX29mZnNldDowLTUzIGlzIHRoZSBibG9jayBvZmZzZXQgd2l0aGluIHRoZSBpbm9kZQotICAqLwotLSNkZWZpbmUgWEZTX1JNQVBfT0ZGX0FUVFJfRk9SSwkoKF9fdWludDY0X3QpMVVMTCA8PCA2MykKLS0jZGVmaW5lIFhGU19STUFQX09GRl9CTUJUX0JMT0NLCSgoX191aW50NjRfdCkxVUxMIDw8IDYyKQotLSNkZWZpbmUgWEZTX1JNQVBfT0ZGX1VOV1JJVFRFTgkoKF9fdWludDY0X3QpMVVMTCA8PCA2MSkKLSsjZGVmaW5lIFhGU19STUFQX09GRl9BVFRSX0ZPUksJKCh1aW50NjRfdCkxVUxMIDw8IDYzKQotKyNkZWZpbmUgWEZTX1JNQVBfT0ZGX0JNQlRfQkxPQ0sJKCh1aW50NjRfdCkxVUxMIDw8IDYyKQotKyNkZWZpbmUgWEZTX1JNQVBfT0ZGX1VOV1JJVFRFTgkoKHVpbnQ2NF90KTFVTEwgPDwgNjEpCi0gCi0tI2RlZmluZSBYRlNfUk1BUF9MRU5fTUFYCSgoX191aW50MzJfdCl+MFUpCi0rI2RlZmluZSBYRlNfUk1BUF9MRU5fTUFYCSgodWludDMyX3QpfjBVKQotICNkZWZpbmUgWEZTX1JNQVBfT0ZGX0ZMQUdTCShYRlNfUk1BUF9PRkZfQVRUUl9GT1JLIHwgXAotIAkJCQkgWEZTX1JNQVBfT0ZGX0JNQlRfQkxPQ0sgfCBcCi0gCQkJCSBYRlNfUk1BUF9PRkZfVU5XUklUVEVOKQotLSNkZWZpbmUgWEZTX1JNQVBfT0ZGX01BU0sJKChfX3VpbnQ2NF90KTB4M0ZGRkZGRkZGRkZGRkZVTEwpCi0rI2RlZmluZSBYRlNfUk1BUF9PRkZfTUFTSwkoKHVpbnQ2NF90KTB4M0ZGRkZGRkZGRkZGRkZVTEwpCi0gCi0gI2RlZmluZSBYRlNfUk1BUF9PRkYob2ZmKQkJKChvZmYpICYgWEZTX1JNQVBfT0ZGX01BU0spCi0gCi1AQCAtMTQzMSw4ICsxNDMxLDggQEAgc3RydWN0IHhmc19ybWFwX3JlYyB7Ci0gc3RydWN0IHhmc19ybWFwX2lyZWMgewotIAl4ZnNfYWdibG9ja190CXJtX3N0YXJ0YmxvY2s7CS8qIGV4dGVudCBzdGFydCBibG9jayAqLwotIAl4ZnNfZXh0bGVuX3QJcm1fYmxvY2tjb3VudDsJLyogZXh0ZW50IGxlbmd0aCAqLwotLQlfX3VpbnQ2NF90CXJtX293bmVyOwkvKiBleHRlbnQgb3duZXIgKi8KLS0JX191aW50NjRfdAlybV9vZmZzZXQ7CS8qIG9mZnNldCB3aXRoaW4gdGhlIG93bmVyICovCi0rCXVpbnQ2NF90CXJtX293bmVyOwkvKiBleHRlbnQgb3duZXIgKi8KLSsJdWludDY0X3QJcm1fb2Zmc2V0OwkvKiBvZmZzZXQgd2l0aGluIHRoZSBvd25lciAqLwotIAl1bnNpZ25lZCBpbnQJcm1fZmxhZ3M7CS8qIHN0YXRlIGZsYWdzICovCi0gfTsKLSAKLUBAIC0xNTQ0LDExICsxNTQ0LDExIEBAIHR5cGVkZWYgc3RydWN0IHhmc19ibWJ0X3JlYyB7Ci0gCV9fYmU2NAkJCWwwLCBsMTsKLSB9IHhmc19ibWJ0X3JlY190OwotIAotLXR5cGVkZWYgX191aW50NjRfdAl4ZnNfYm1idF9yZWNfYmFzZV90OwkvKiB1c2UgdGhpcyBmb3IgY2FzdHMgKi8KLSt0eXBlZGVmIHVpbnQ2NF90CXhmc19ibWJ0X3JlY19iYXNlX3Q7CS8qIHVzZSB0aGlzIGZvciBjYXN0cyAqLwotIHR5cGVkZWYgeGZzX2JtYnRfcmVjX3QgeGZzX2JtZHJfcmVjX3Q7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgeGZzX2JtYnRfcmVjX2hvc3QgewotLQlfX3VpbnQ2NF90CQlsMCwgbDE7Ci0rCXVpbnQ2NF90CQlsMCwgbDE7Ci0gfSB4ZnNfYm1idF9yZWNfaG9zdF90OwotIAotIC8qCi1kaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19mcy5oIGIvbGlieGZzL3hmc19mcy5oCi1pbmRleCA5OWY3Zjg4MS4uOGEwYzBlZWMgMTAwNjQ0Ci0tLS0gYS9saWJ4ZnMveGZzX2ZzLmgKLSsrKyBiL2xpYnhmcy94ZnNfZnMuaAotQEAgLTMyMywxMCArMzIzLDEwIEBAIHR5cGVkZWYgc3RydWN0IHhmc19ic3RhdCB7Ci0gICogYW5kIHVzaW5nIHR3byAxNmJpdCB2YWx1ZXMgdG8gaG9sZCBuZXcgMzJiaXQgcHJvamlkIHdhcyBjaG9vc2VuCi0gICogdG8gcmV0YWluIGNvbXBhdGliaWxpdHkgd2l0aCAib2xkIiBmaWxlc3lzdGVtcykuCi0gICovCi0tc3RhdGljIGlubGluZSBfX3VpbnQzMl90Ci0rc3RhdGljIGlubGluZSB1aW50MzJfdAotIGJzdGF0X2dldF9wcm9qaWQoc3RydWN0IHhmc19ic3RhdCAqYnMpCi0gewotLQlyZXR1cm4gKF9fdWludDMyX3QpYnMtPmJzX3Byb2ppZF9oaSA8PCAxNiB8IGJzLT5ic19wcm9qaWRfbG87Ci0rCXJldHVybiAodWludDMyX3QpYnMtPmJzX3Byb2ppZF9oaSA8PCAxNiB8IGJzLT5ic19wcm9qaWRfbG87Ci0gfQotIAotIC8qCi1AQCAtNDcyLDEwICs0NzIsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX2hhbmRsZSB7Ci0gICovCi0gdHlwZWRlZiBzdHJ1Y3QgeGZzX3N3YXBleHQKLSB7Ci0tCV9faW50NjRfdAlzeF92ZXJzaW9uOwkvKiB2ZXJzaW9uICovCi0rCWludDY0X3QJCXN4X3ZlcnNpb247CS8qIHZlcnNpb24gKi8KLSAjZGVmaW5lIFhGU19TWF9WRVJTSU9OCQkwCi0tCV9faW50NjRfdAlzeF9mZHRhcmdldDsJLyogZmQgb2YgdGFyZ2V0IGZpbGUgKi8KLS0JX19pbnQ2NF90CXN4X2ZkdG1wOwkvKiBmZCBvZiB0bXAgZmlsZSAqLwotKwlpbnQ2NF90CQlzeF9mZHRhcmdldDsJLyogZmQgb2YgdGFyZ2V0IGZpbGUgKi8KLSsJaW50NjRfdAkJc3hfZmR0bXA7CS8qIGZkIG9mIHRtcCBmaWxlICovCi0gCXhmc19vZmZfdAlzeF9vZmZzZXQ7CS8qIG9mZnNldCBpbnRvIGZpbGUgKi8KLSAJeGZzX29mZl90CXN4X2xlbmd0aDsJLyogbGVuZyBmcm9tIG9mZnNldCAqLwotIAljaGFyCQlzeF9wYWRbMTZdOwkvKiBwYWQgc3BhY2UsIHVudXNlZCAqLwotQEAgLTU2Miw3ICs1NjIsNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfc3dhcGV4dAotICNkZWZpbmUgWEZTX0lPQ19BVFRSTElTVF9CWV9IQU5ETEUgICBfSU9XICgnWCcsIDEyMiwgc3RydWN0IHhmc19mc29wX2F0dHJsaXN0X2hhbmRsZXJlcSkKLSAjZGVmaW5lIFhGU19JT0NfQVRUUk1VTFRJX0JZX0hBTkRMRSAgX0lPVyAoJ1gnLCAxMjMsIHN0cnVjdCB4ZnNfZnNvcF9hdHRybXVsdGlfaGFuZGxlcmVxKQotICNkZWZpbmUgWEZTX0lPQ19GU0dFT01FVFJZCSAgICAgX0lPUiAoJ1gnLCAxMjQsIHN0cnVjdCB4ZnNfZnNvcF9nZW9tKQotLSNkZWZpbmUgWEZTX0lPQ19HT0lOR0RPV04JICAgICBfSU9SICgnWCcsIDEyNSwgX191aW50MzJfdCkKLSsjZGVmaW5lIFhGU19JT0NfR09JTkdET1dOCSAgICAgX0lPUiAoJ1gnLCAxMjUsIHVpbnQzMl90KQotIC8qCVhGU19JT0NfR0VURlNVVUlEIC0tLS0tLS0tLS0gZGVwcmVjYXRlZCAxNDAJICovCi0gCi0gLyogcmVmbGluayBpb2N0bHM7IHRoZXNlIE1VU1QgbWF0Y2ggdGhlIGJ0cmZzIGlvY3RsIGRlZmluaXRpb25zICovCi1kaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19pYWxsb2MuYyBiL2xpYnhmcy94ZnNfaWFsbG9jLmMKLWluZGV4IDU1Y2M0NTA3Li44ZDI0NTE4NCAxMDA2NDQKLS0tLSBhL2xpYnhmcy94ZnNfaWFsbG9jLmMKLSsrKyBiL2xpYnhmcy94ZnNfaWFsbG9jLmMKLUBAIC0xMzQsOSArMTM0LDkgQEAgeGZzX2lub2J0X2dldF9yZWMoCi0gU1RBVElDIGludAotIHhmc19pbm9idF9pbnNlcnRfcmVjKAotIAlzdHJ1Y3QgeGZzX2J0cmVlX2N1cgkqY3VyLAotLQlfX3VpbnQxNl90CQlob2xlbWFzaywKLS0JX191aW50OF90CQljb3VudCwKLS0JX19pbnQzMl90CQlmcmVlY291bnQsCi0rCXVpbnQxNl90CQlob2xlbWFzaywKLSsJdWludDhfdAkJCWNvdW50LAotKwlpbnQzMl90CQkJZnJlZWNvdW50LAotIAl4ZnNfaW5vZnJlZV90CQlmcmVlLAotIAlpbnQJCQkqc3RhdCkKLSB7Ci1kaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19pYWxsb2NfYnRyZWUuYyBiL2xpYnhmcy94ZnNfaWFsbG9jX2J0cmVlLmMKLWluZGV4IDdiNGJlNzY2Li41YjI4MTA1NCAxMDA2NDQKLS0tLSBhL2xpYnhmcy94ZnNfaWFsbG9jX2J0cmVlLmMKLSsrKyBiL2xpYnhmcy94ZnNfaWFsbG9jX2J0cmVlLmMKLUBAIC0yMTgsMTIgKzIxOCwxMiBAQCB4ZnNfZmlub2J0X2luaXRfcHRyX2Zyb21fY3VyKAotIAlwdHItPnMgPSBhZ2ktPmFnaV9mcmVlX3Jvb3Q7Ci0gfQotIAotLVNUQVRJQyBfX2ludDY0X3QKLStTVEFUSUMgaW50NjRfdAotIHhmc19pbm9idF9rZXlfZGlmZigKLSAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKLSAJdW5pb24geGZzX2J0cmVlX2tleQkqa2V5KQotIHsKLS0JcmV0dXJuIChfX2ludDY0X3QpYmUzMl90b19jcHUoa2V5LT5pbm9idC5pcl9zdGFydGlubykgLQotKwlyZXR1cm4gKGludDY0X3QpYmUzMl90b19jcHUoa2V5LT5pbm9idC5pcl9zdGFydGlubykgLQotIAkJCSAgY3VyLT5iY19yZWMuaS5pcl9zdGFydGlubzsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19pbm9kZV9idWYuYyBiL2xpYnhmcy94ZnNfaW5vZGVfYnVmLmMKLWluZGV4IDI5NzI3MDFkLi5mY2M2ZmI4ZSAxMDA2NDQKLS0tLSBhL2xpYnhmcy94ZnNfaW5vZGVfYnVmLmMKLSsrKyBiL2xpYnhmcy94ZnNfaW5vZGVfYnVmLmMKLUBAIC00NDIsNyArNDQyLDcgQEAgeGZzX2Rpbm9kZV9jYWxjX2NyYygKLSAJc3RydWN0IHhmc19tb3VudAkqbXAsCi0gCXN0cnVjdCB4ZnNfZGlub2RlCSpkaXApCi0gewotLQlfX3VpbnQzMl90CQljcmM7Ci0rCXVpbnQzMl90CQljcmM7Ci0gCi0gCWlmIChkaXAtPmRpX3ZlcnNpb24gPCAzKQotIAkJcmV0dXJuOwotZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfaW5vZGVfYnVmLmggYi9saWJ4ZnMveGZzX2lub2RlX2J1Zi5oCi1pbmRleCA2ODQ4YTBhZi4uMDgyN2Q3ZGUgMTAwNjQ0Ci0tLS0gYS9saWJ4ZnMveGZzX2lub2RlX2J1Zi5oCi0rKysgYi9saWJ4ZnMveGZzX2lub2RlX2J1Zi5oCi1AQCAtMjgsMjYgKzI4LDI2IEBAIHN0cnVjdCB4ZnNfZGlub2RlOwotICAqIGZvcm1hdCBzcGVjaWZpYyBzdHJ1Y3R1cmVzIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lLgotICAqLwotIHN0cnVjdCB4ZnNfaWNkaW5vZGUgewotLQlfX2ludDhfdAlkaV92ZXJzaW9uOwkvKiBpbm9kZSB2ZXJzaW9uICovCi0tCV9faW50OF90CWRpX2Zvcm1hdDsJLyogZm9ybWF0IG9mIGRpX2MgZGF0YSAqLwotLQlfX3VpbnQxNl90CWRpX2ZsdXNoaXRlcjsJLyogaW5jcmVtZW50ZWQgb24gZmx1c2ggKi8KLS0JX191aW50MzJfdAlkaV91aWQ7CQkvKiBvd25lcidzIHVzZXIgaWQgKi8KLS0JX191aW50MzJfdAlkaV9naWQ7CQkvKiBvd25lcidzIGdyb3VwIGlkICovCi0tCV9fdWludDE2X3QJZGlfcHJvamlkX2xvOwkvKiBsb3dlciBwYXJ0IG9mIG93bmVyJ3MgcHJvamVjdCBpZCAqLwotLQlfX3VpbnQxNl90CWRpX3Byb2ppZF9oaTsJLyogaGlnaGVyIHBhcnQgb2Ygb3duZXIncyBwcm9qZWN0IGlkICovCi0rCWludDhfdAkJZGlfdmVyc2lvbjsJLyogaW5vZGUgdmVyc2lvbiAqLwotKwlpbnQ4X3QJCWRpX2Zvcm1hdDsJLyogZm9ybWF0IG9mIGRpX2MgZGF0YSAqLwotKwl1aW50MTZfdAlkaV9mbHVzaGl0ZXI7CS8qIGluY3JlbWVudGVkIG9uIGZsdXNoICovCi0rCXVpbnQzMl90CWRpX3VpZDsJCS8qIG93bmVyJ3MgdXNlciBpZCAqLwotKwl1aW50MzJfdAlkaV9naWQ7CQkvKiBvd25lcidzIGdyb3VwIGlkICovCi0rCXVpbnQxNl90CWRpX3Byb2ppZF9sbzsJLyogbG93ZXIgcGFydCBvZiBvd25lcidzIHByb2plY3QgaWQgKi8KLSsJdWludDE2X3QJZGlfcHJvamlkX2hpOwkvKiBoaWdoZXIgcGFydCBvZiBvd25lcidzIHByb2plY3QgaWQgKi8KLSAJeGZzX2ZzaXplX3QJZGlfc2l6ZTsJLyogbnVtYmVyIG9mIGJ5dGVzIGluIGZpbGUgKi8KLSAJeGZzX3Jmc2Jsb2NrX3QJZGlfbmJsb2NrczsJLyogIyBvZiBkaXJlY3QgJiBidHJlZSBibG9ja3MgdXNlZCAqLwotIAl4ZnNfZXh0bGVuX3QJZGlfZXh0c2l6ZTsJLyogYmFzaWMvbWluaW11bSBleHRlbnQgc2l6ZSBmb3IgZmlsZSAqLwotIAl4ZnNfZXh0bnVtX3QJZGlfbmV4dGVudHM7CS8qIG51bWJlciBvZiBleHRlbnRzIGluIGRhdGEgZm9yayAqLwotIAl4ZnNfYWV4dG51bV90CWRpX2FuZXh0ZW50czsJLyogbnVtYmVyIG9mIGV4dGVudHMgaW4gYXR0cmlidXRlIGZvcmsqLwotLQlfX3VpbnQ4X3QJZGlfZm9ya29mZjsJLyogYXR0ciBmb3JrIG9mZnMsIDw8MyBmb3IgNjRiIGFsaWduICovCi0tCV9faW50OF90CWRpX2Fmb3JtYXQ7CS8qIGZvcm1hdCBvZiBhdHRyIGZvcmsncyBkYXRhICovCi0tCV9fdWludDMyX3QJZGlfZG1ldm1hc2s7CS8qIERNSUcgZXZlbnQgbWFzayAqLwotLQlfX3VpbnQxNl90CWRpX2Rtc3RhdGU7CS8qIERNSUcgc3RhdGUgaW5mbyAqLwotLQlfX3VpbnQxNl90CWRpX2ZsYWdzOwkvKiByYW5kb20gZmxhZ3MsIFhGU19ESUZMQUdfLi4uICovCi0rCXVpbnQ4X3QJCWRpX2ZvcmtvZmY7CS8qIGF0dHIgZm9yayBvZmZzLCA8PDMgZm9yIDY0YiBhbGlnbiAqLwotKwlpbnQ4X3QJCWRpX2Fmb3JtYXQ7CS8qIGZvcm1hdCBvZiBhdHRyIGZvcmsncyBkYXRhICovCi0rCXVpbnQzMl90CWRpX2RtZXZtYXNrOwkvKiBETUlHIGV2ZW50IG1hc2sgKi8KLSsJdWludDE2X3QJZGlfZG1zdGF0ZTsJLyogRE1JRyBzdGF0ZSBpbmZvICovCi0rCXVpbnQxNl90CWRpX2ZsYWdzOwkvKiByYW5kb20gZmxhZ3MsIFhGU19ESUZMQUdfLi4uICovCi0gCi0tCV9fdWludDY0X3QJZGlfZmxhZ3MyOwkvKiBtb3JlIHJhbmRvbSBmbGFncyAqLwotLQlfX3VpbnQzMl90CWRpX2Nvd2V4dHNpemU7CS8qIGJhc2ljIGNvdyBleHRlbnQgc2l6ZSBmb3IgZmlsZSAqLwotKwl1aW50NjRfdAlkaV9mbGFnczI7CS8qIG1vcmUgcmFuZG9tIGZsYWdzICovCi0rCXVpbnQzMl90CWRpX2Nvd2V4dHNpemU7CS8qIGJhc2ljIGNvdyBleHRlbnQgc2l6ZSBmb3IgZmlsZSAqLwotIAotIAl4ZnNfaWN0aW1lc3RhbXBfdCBkaV9jcnRpbWU7CS8qIHRpbWUgY3JlYXRlZCAqLwotIH07Ci1kaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19sb2dfZm9ybWF0LmggYi9saWJ4ZnMveGZzX2xvZ19mb3JtYXQuaAotaW5kZXggN2FlNTcxZjguLjgzNzJlOWJjIDEwMDY0NAotLS0tIGEvbGlieGZzL3hmc19sb2dfZm9ybWF0LmgKLSsrKyBiL2xpYnhmcy94ZnNfbG9nX2Zvcm1hdC5oCi1AQCAtMzEsNyArMzEsNyBAQCBzdHJ1Y3QgeGZzX3RyYW5zX3JlczsKLSAgKiB0aHJvdWdoIGFsbCB0aGUgbG9nIGl0ZW1zIGRlZmluaXRpb25zIGFuZCBldmVyeXRoaW5nIHRoZXkgZW5jb2RlIGludG8gdGhlCi0gICogbG9nLgotICAqLwotLXR5cGVkZWYgX191aW50MzJfdCB4bG9nX3RpZF90OwotK3R5cGVkZWYgdWludDMyX3QgeGxvZ190aWRfdDsKLSAKLSAjZGVmaW5lIFhMT0dfTUlOX0lDTE9HUwkJMgotICNkZWZpbmUgWExPR19NQVhfSUNMT0dTCQk4Ci1AQCAtMjExLDcgKzIxMSw3IEBAIHR5cGVkZWYgc3RydWN0IHhmc19sb2dfaW92ZWMgewotIHR5cGVkZWYgc3RydWN0IHhmc190cmFuc19oZWFkZXIgewotIAl1aW50CQl0aF9tYWdpYzsJCS8qIG1hZ2ljIG51bWJlciAqLwotIAl1aW50CQl0aF90eXBlOwkJLyogdHJhbnNhY3Rpb24gdHlwZSAqLwotLQlfX2ludDMyX3QJdGhfdGlkOwkJCS8qIHRyYW5zYWN0aW9uIGlkICh1bnVzZWQpICovCi0rCWludDMyX3QJCXRoX3RpZDsJCQkvKiB0cmFuc2FjdGlvbiBpZCAodW51c2VkKSAqLwotIAl1aW50CQl0aF9udW1faXRlbXM7CQkvKiBudW0gaXRlbXMgbG9nZ2VkIGJ5IHRyYW5zICovCi0gfSB4ZnNfdHJhbnNfaGVhZGVyX3Q7Ci0gCi1AQCAtMjY1LDUyICsyNjUsNTIgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX3RyYW5zX2hlYWRlciB7Ci0gICogbXVzdCBiZSBhZGRlZCBvbiB0byB0aGUgZW5kLgotICAqLwotIHR5cGVkZWYgc3RydWN0IHhmc19pbm9kZV9sb2dfZm9ybWF0IHsKLS0JX191aW50MTZfdAkJaWxmX3R5cGU7CS8qIGlub2RlIGxvZyBpdGVtIHR5cGUgKi8KLS0JX191aW50MTZfdAkJaWxmX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCi0tCV9fdWludDMyX3QJCWlsZl9maWVsZHM7CS8qIGZsYWdzIGZvciBmaWVsZHMgbG9nZ2VkICovCi0tCV9fdWludDE2X3QJCWlsZl9hc2l6ZTsJLyogc2l6ZSBvZiBhdHRyIGQvZXh0L3Jvb3QgKi8KLS0JX191aW50MTZfdAkJaWxmX2RzaXplOwkvKiBzaXplIG9mIGRhdGEvZXh0L3Jvb3QgKi8KLS0JX191aW50NjRfdAkJaWxmX2lubzsJLyogaW5vZGUgbnVtYmVyICovCi0rCXVpbnQxNl90CQlpbGZfdHlwZTsJLyogaW5vZGUgbG9nIGl0ZW0gdHlwZSAqLwotKwl1aW50MTZfdAkJaWxmX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCi0rCXVpbnQzMl90CQlpbGZfZmllbGRzOwkvKiBmbGFncyBmb3IgZmllbGRzIGxvZ2dlZCAqLwotKwl1aW50MTZfdAkJaWxmX2FzaXplOwkvKiBzaXplIG9mIGF0dHIgZC9leHQvcm9vdCAqLwotKwl1aW50MTZfdAkJaWxmX2RzaXplOwkvKiBzaXplIG9mIGRhdGEvZXh0L3Jvb3QgKi8KLSsJdWludDY0X3QJCWlsZl9pbm87CS8qIGlub2RlIG51bWJlciAqLwotIAl1bmlvbiB7Ci0tCQlfX3VpbnQzMl90CWlsZnVfcmRldjsJLyogcmRldiB2YWx1ZSBmb3IgZGV2IGlub2RlKi8KLSsJCXVpbnQzMl90CWlsZnVfcmRldjsJLyogcmRldiB2YWx1ZSBmb3IgZGV2IGlub2RlKi8KLSAJCXV1aWRfdAkJaWxmdV91dWlkOwkvKiBtb3VudCBwb2ludCB2YWx1ZSAqLwotIAl9IGlsZl91OwotLQlfX2ludDY0X3QJCWlsZl9ibGtubzsJLyogYmxrbm8gb2YgaW5vZGUgYnVmZmVyICovCi0tCV9faW50MzJfdAkJaWxmX2xlbjsJLyogbGVuIG9mIGlub2RlIGJ1ZmZlciAqLwotLQlfX2ludDMyX3QJCWlsZl9ib2Zmc2V0OwkvKiBvZmYgb2YgaW5vZGUgaW4gYnVmZmVyICovCi0rCWludDY0X3QJCQlpbGZfYmxrbm87CS8qIGJsa25vIG9mIGlub2RlIGJ1ZmZlciAqLwotKwlpbnQzMl90CQkJaWxmX2xlbjsJLyogbGVuIG9mIGlub2RlIGJ1ZmZlciAqLwotKwlpbnQzMl90CQkJaWxmX2JvZmZzZXQ7CS8qIG9mZiBvZiBpbm9kZSBpbiBidWZmZXIgKi8KLSB9IHhmc19pbm9kZV9sb2dfZm9ybWF0X3Q7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgeGZzX2lub2RlX2xvZ19mb3JtYXRfMzIgewotLQlfX3VpbnQxNl90CQlpbGZfdHlwZTsJLyogaW5vZGUgbG9nIGl0ZW0gdHlwZSAqLwotLQlfX3VpbnQxNl90CQlpbGZfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KLS0JX191aW50MzJfdAkJaWxmX2ZpZWxkczsJLyogZmxhZ3MgZm9yIGZpZWxkcyBsb2dnZWQgKi8KLS0JX191aW50MTZfdAkJaWxmX2FzaXplOwkvKiBzaXplIG9mIGF0dHIgZC9leHQvcm9vdCAqLwotLQlfX3VpbnQxNl90CQlpbGZfZHNpemU7CS8qIHNpemUgb2YgZGF0YS9leHQvcm9vdCAqLwotLQlfX3VpbnQ2NF90CQlpbGZfaW5vOwkvKiBpbm9kZSBudW1iZXIgKi8KLSsJdWludDE2X3QJCWlsZl90eXBlOwkvKiBpbm9kZSBsb2cgaXRlbSB0eXBlICovCi0rCXVpbnQxNl90CQlpbGZfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KLSsJdWludDMyX3QJCWlsZl9maWVsZHM7CS8qIGZsYWdzIGZvciBmaWVsZHMgbG9nZ2VkICovCi0rCXVpbnQxNl90CQlpbGZfYXNpemU7CS8qIHNpemUgb2YgYXR0ciBkL2V4dC9yb290ICovCi0rCXVpbnQxNl90CQlpbGZfZHNpemU7CS8qIHNpemUgb2YgZGF0YS9leHQvcm9vdCAqLwotKwl1aW50NjRfdAkJaWxmX2lubzsJLyogaW5vZGUgbnVtYmVyICovCi0gCXVuaW9uIHsKLS0JCV9fdWludDMyX3QJaWxmdV9yZGV2OwkvKiByZGV2IHZhbHVlIGZvciBkZXYgaW5vZGUqLwotKwkJdWludDMyX3QJaWxmdV9yZGV2OwkvKiByZGV2IHZhbHVlIGZvciBkZXYgaW5vZGUqLwotIAkJdXVpZF90CQlpbGZ1X3V1aWQ7CS8qIG1vdW50IHBvaW50IHZhbHVlICovCi0gCX0gaWxmX3U7Ci0tCV9faW50NjRfdAkJaWxmX2Jsa25vOwkvKiBibGtubyBvZiBpbm9kZSBidWZmZXIgKi8KLS0JX19pbnQzMl90CQlpbGZfbGVuOwkvKiBsZW4gb2YgaW5vZGUgYnVmZmVyICovCi0tCV9faW50MzJfdAkJaWxmX2JvZmZzZXQ7CS8qIG9mZiBvZiBpbm9kZSBpbiBidWZmZXIgKi8KLSsJaW50NjRfdAkJCWlsZl9ibGtubzsJLyogYmxrbm8gb2YgaW5vZGUgYnVmZmVyICovCi0rCWludDMyX3QJCQlpbGZfbGVuOwkvKiBsZW4gb2YgaW5vZGUgYnVmZmVyICovCi0rCWludDMyX3QJCQlpbGZfYm9mZnNldDsJLyogb2ZmIG9mIGlub2RlIGluIGJ1ZmZlciAqLwotIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgeGZzX2lub2RlX2xvZ19mb3JtYXRfMzJfdDsKLSAKLSB0eXBlZGVmIHN0cnVjdCB4ZnNfaW5vZGVfbG9nX2Zvcm1hdF82NCB7Ci0tCV9fdWludDE2X3QJCWlsZl90eXBlOwkvKiBpbm9kZSBsb2cgaXRlbSB0eXBlICovCi0tCV9fdWludDE2X3QJCWlsZl9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotLQlfX3VpbnQzMl90CQlpbGZfZmllbGRzOwkvKiBmbGFncyBmb3IgZmllbGRzIGxvZ2dlZCAqLwotLQlfX3VpbnQxNl90CQlpbGZfYXNpemU7CS8qIHNpemUgb2YgYXR0ciBkL2V4dC9yb290ICovCi0tCV9fdWludDE2X3QJCWlsZl9kc2l6ZTsJLyogc2l6ZSBvZiBkYXRhL2V4dC9yb290ICovCi0tCV9fdWludDMyX3QJCWlsZl9wYWQ7CS8qIHBhZCBmb3IgNjQgYml0IGJvdW5kYXJ5ICovCi0tCV9fdWludDY0X3QJCWlsZl9pbm87CS8qIGlub2RlIG51bWJlciAqLwotKwl1aW50MTZfdAkJaWxmX3R5cGU7CS8qIGlub2RlIGxvZyBpdGVtIHR5cGUgKi8KLSsJdWludDE2X3QJCWlsZl9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotKwl1aW50MzJfdAkJaWxmX2ZpZWxkczsJLyogZmxhZ3MgZm9yIGZpZWxkcyBsb2dnZWQgKi8KLSsJdWludDE2X3QJCWlsZl9hc2l6ZTsJLyogc2l6ZSBvZiBhdHRyIGQvZXh0L3Jvb3QgKi8KLSsJdWludDE2X3QJCWlsZl9kc2l6ZTsJLyogc2l6ZSBvZiBkYXRhL2V4dC9yb290ICovCi0rCXVpbnQzMl90CQlpbGZfcGFkOwkvKiBwYWQgZm9yIDY0IGJpdCBib3VuZGFyeSAqLwotKwl1aW50NjRfdAkJaWxmX2lubzsJLyogaW5vZGUgbnVtYmVyICovCi0gCXVuaW9uIHsKLS0JCV9fdWludDMyX3QJaWxmdV9yZGV2OwkvKiByZGV2IHZhbHVlIGZvciBkZXYgaW5vZGUqLwotKwkJdWludDMyX3QJaWxmdV9yZGV2OwkvKiByZGV2IHZhbHVlIGZvciBkZXYgaW5vZGUqLwotIAkJdXVpZF90CQlpbGZ1X3V1aWQ7CS8qIG1vdW50IHBvaW50IHZhbHVlICovCi0gCX0gaWxmX3U7Ci0tCV9faW50NjRfdAkJaWxmX2Jsa25vOwkvKiBibGtubyBvZiBpbm9kZSBidWZmZXIgKi8KLS0JX19pbnQzMl90CQlpbGZfbGVuOwkvKiBsZW4gb2YgaW5vZGUgYnVmZmVyICovCi0tCV9faW50MzJfdAkJaWxmX2JvZmZzZXQ7CS8qIG9mZiBvZiBpbm9kZSBpbiBidWZmZXIgKi8KLSsJaW50NjRfdAkJCWlsZl9ibGtubzsJLyogYmxrbm8gb2YgaW5vZGUgYnVmZmVyICovCi0rCWludDMyX3QJCQlpbGZfbGVuOwkvKiBsZW4gb2YgaW5vZGUgYnVmZmVyICovCi0rCWludDMyX3QJCQlpbGZfYm9mZnNldDsJLyogb2ZmIG9mIGlub2RlIGluIGJ1ZmZlciAqLwotIH0geGZzX2lub2RlX2xvZ19mb3JtYXRfNjRfdDsKLSAKLSAKLUBAIC0zNzksOCArMzc5LDggQEAgc3RhdGljIGlubGluZSBpbnQgeGZzX2lsb2dfZmRhdGEoaW50IHcpCi0gICogaW5mb3JtYXRpb24uCi0gICovCi0gdHlwZWRlZiBzdHJ1Y3QgeGZzX2ljdGltZXN0YW1wIHsKLS0JX19pbnQzMl90CXRfc2VjOwkJLyogdGltZXN0YW1wIHNlY29uZHMgKi8KLS0JX19pbnQzMl90CXRfbnNlYzsJCS8qIHRpbWVzdGFtcCBuYW5vc2Vjb25kcyAqLwotKwlpbnQzMl90CQl0X3NlYzsJCS8qIHRpbWVzdGFtcCBzZWNvbmRzICovCi0rCWludDMyX3QJCXRfbnNlYzsJCS8qIHRpbWVzdGFtcCBuYW5vc2Vjb25kcyAqLwotIH0geGZzX2ljdGltZXN0YW1wX3Q7Ci0gCi0gLyoKLUBAIC0zODgsMTggKzM4OCwxOCBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfaWN0aW1lc3RhbXAgewotICAqIGtlcHQgaWRlbnRpY2FsIHRvIHN0cnVjdCB4ZnNfZGlub2RlIGV4Y2VwdCBmb3IgdGhlIGVuZGlhbm5lc3MgYW5ub3RhdGlvbnMuCi0gICovCi0gc3RydWN0IHhmc19sb2dfZGlub2RlIHsKLS0JX191aW50MTZfdAlkaV9tYWdpYzsJLyogaW5vZGUgbWFnaWMgIyA9IFhGU19ESU5PREVfTUFHSUMgKi8KLS0JX191aW50MTZfdAlkaV9tb2RlOwkvKiBtb2RlIGFuZCB0eXBlIG9mIGZpbGUgKi8KLS0JX19pbnQ4X3QJZGlfdmVyc2lvbjsJLyogaW5vZGUgdmVyc2lvbiAqLwotLQlfX2ludDhfdAlkaV9mb3JtYXQ7CS8qIGZvcm1hdCBvZiBkaV9jIGRhdGEgKi8KLS0JX191aW50OF90CWRpX3BhZDNbMl07CS8qIHVudXNlZCBpbiB2Mi8zIGlub2RlcyAqLwotLQlfX3VpbnQzMl90CWRpX3VpZDsJCS8qIG93bmVyJ3MgdXNlciBpZCAqLwotLQlfX3VpbnQzMl90CWRpX2dpZDsJCS8qIG93bmVyJ3MgZ3JvdXAgaWQgKi8KLS0JX191aW50MzJfdAlkaV9ubGluazsJLyogbnVtYmVyIG9mIGxpbmtzIHRvIGZpbGUgKi8KLS0JX191aW50MTZfdAlkaV9wcm9qaWRfbG87CS8qIGxvd2VyIHBhcnQgb2Ygb3duZXIncyBwcm9qZWN0IGlkICovCi0tCV9fdWludDE2X3QJZGlfcHJvamlkX2hpOwkvKiBoaWdoZXIgcGFydCBvZiBvd25lcidzIHByb2plY3QgaWQgKi8KLS0JX191aW50OF90CWRpX3BhZFs2XTsJLyogdW51c2VkLCB6ZXJvZWQgc3BhY2UgKi8KLS0JX191aW50MTZfdAlkaV9mbHVzaGl0ZXI7CS8qIGluY3JlbWVudGVkIG9uIGZsdXNoICovCi0rCXVpbnQxNl90CWRpX21hZ2ljOwkvKiBpbm9kZSBtYWdpYyAjID0gWEZTX0RJTk9ERV9NQUdJQyAqLwotKwl1aW50MTZfdAlkaV9tb2RlOwkvKiBtb2RlIGFuZCB0eXBlIG9mIGZpbGUgKi8KLSsJaW50OF90CQlkaV92ZXJzaW9uOwkvKiBpbm9kZSB2ZXJzaW9uICovCi0rCWludDhfdAkJZGlfZm9ybWF0OwkvKiBmb3JtYXQgb2YgZGlfYyBkYXRhICovCi0rCXVpbnQ4X3QJCWRpX3BhZDNbMl07CS8qIHVudXNlZCBpbiB2Mi8zIGlub2RlcyAqLwotKwl1aW50MzJfdAlkaV91aWQ7CQkvKiBvd25lcidzIHVzZXIgaWQgKi8KLSsJdWludDMyX3QJZGlfZ2lkOwkJLyogb3duZXIncyBncm91cCBpZCAqLwotKwl1aW50MzJfdAlkaV9ubGluazsJLyogbnVtYmVyIG9mIGxpbmtzIHRvIGZpbGUgKi8KLSsJdWludDE2X3QJZGlfcHJvamlkX2xvOwkvKiBsb3dlciBwYXJ0IG9mIG93bmVyJ3MgcHJvamVjdCBpZCAqLwotKwl1aW50MTZfdAlkaV9wcm9qaWRfaGk7CS8qIGhpZ2hlciBwYXJ0IG9mIG93bmVyJ3MgcHJvamVjdCBpZCAqLwotKwl1aW50OF90CQlkaV9wYWRbNl07CS8qIHVudXNlZCwgemVyb2VkIHNwYWNlICovCi0rCXVpbnQxNl90CWRpX2ZsdXNoaXRlcjsJLyogaW5jcmVtZW50ZWQgb24gZmx1c2ggKi8KLSAJeGZzX2ljdGltZXN0YW1wX3QgZGlfYXRpbWU7CS8qIHRpbWUgbGFzdCBhY2Nlc3NlZCAqLwotIAl4ZnNfaWN0aW1lc3RhbXBfdCBkaV9tdGltZTsJLyogdGltZSBsYXN0IG1vZGlmaWVkICovCi0gCXhmc19pY3RpbWVzdGFtcF90IGRpX2N0aW1lOwkvKiB0aW1lIGNyZWF0ZWQvaW5vZGUgbW9kaWZpZWQgKi8KLUBAIC00MDgsMjMgKzQwOCwyMyBAQCBzdHJ1Y3QgeGZzX2xvZ19kaW5vZGUgewotIAl4ZnNfZXh0bGVuX3QJZGlfZXh0c2l6ZTsJLyogYmFzaWMvbWluaW11bSBleHRlbnQgc2l6ZSBmb3IgZmlsZSAqLwotIAl4ZnNfZXh0bnVtX3QJZGlfbmV4dGVudHM7CS8qIG51bWJlciBvZiBleHRlbnRzIGluIGRhdGEgZm9yayAqLwotIAl4ZnNfYWV4dG51bV90CWRpX2FuZXh0ZW50czsJLyogbnVtYmVyIG9mIGV4dGVudHMgaW4gYXR0cmlidXRlIGZvcmsqLwotLQlfX3VpbnQ4X3QJZGlfZm9ya29mZjsJLyogYXR0ciBmb3JrIG9mZnMsIDw8MyBmb3IgNjRiIGFsaWduICovCi0tCV9faW50OF90CWRpX2Fmb3JtYXQ7CS8qIGZvcm1hdCBvZiBhdHRyIGZvcmsncyBkYXRhICovCi0tCV9fdWludDMyX3QJZGlfZG1ldm1hc2s7CS8qIERNSUcgZXZlbnQgbWFzayAqLwotLQlfX3VpbnQxNl90CWRpX2Rtc3RhdGU7CS8qIERNSUcgc3RhdGUgaW5mbyAqLwotLQlfX3VpbnQxNl90CWRpX2ZsYWdzOwkvKiByYW5kb20gZmxhZ3MsIFhGU19ESUZMQUdfLi4uICovCi0tCV9fdWludDMyX3QJZGlfZ2VuOwkJLyogZ2VuZXJhdGlvbiBudW1iZXIgKi8KLSsJdWludDhfdAkJZGlfZm9ya29mZjsJLyogYXR0ciBmb3JrIG9mZnMsIDw8MyBmb3IgNjRiIGFsaWduICovCi0rCWludDhfdAkJZGlfYWZvcm1hdDsJLyogZm9ybWF0IG9mIGF0dHIgZm9yaydzIGRhdGEgKi8KLSsJdWludDMyX3QJZGlfZG1ldm1hc2s7CS8qIERNSUcgZXZlbnQgbWFzayAqLwotKwl1aW50MTZfdAlkaV9kbXN0YXRlOwkvKiBETUlHIHN0YXRlIGluZm8gKi8KLSsJdWludDE2X3QJZGlfZmxhZ3M7CS8qIHJhbmRvbSBmbGFncywgWEZTX0RJRkxBR18uLi4gKi8KLSsJdWludDMyX3QJZGlfZ2VuOwkJLyogZ2VuZXJhdGlvbiBudW1iZXIgKi8KLSAKLSAJLyogZGlfbmV4dF91bmxpbmtlZCBpcyB0aGUgb25seSBub24tY29yZSBmaWVsZCBpbiB0aGUgb2xkIGRpbm9kZSAqLwotIAl4ZnNfYWdpbm9fdAlkaV9uZXh0X3VubGlua2VkOy8qIGFnaSB1bmxpbmtlZCBsaXN0IHB0ciAqLwotIAotIAkvKiBzdGFydCBvZiB0aGUgZXh0ZW5kZWQgZGlub2RlLCB3cml0YWJsZSBmaWVsZHMgKi8KLS0JX191aW50MzJfdAlkaV9jcmM7CQkvKiBDUkMgb2YgdGhlIGlub2RlICovCi0tCV9fdWludDY0X3QJZGlfY2hhbmdlY291bnQ7CS8qIG51bWJlciBvZiBhdHRyaWJ1dGUgY2hhbmdlcyAqLwotKwl1aW50MzJfdAlkaV9jcmM7CQkvKiBDUkMgb2YgdGhlIGlub2RlICovCi0rCXVpbnQ2NF90CWRpX2NoYW5nZWNvdW50OwkvKiBudW1iZXIgb2YgYXR0cmlidXRlIGNoYW5nZXMgKi8KLSAJeGZzX2xzbl90CWRpX2xzbjsJCS8qIGZsdXNoIHNlcXVlbmNlICovCi0tCV9fdWludDY0X3QJZGlfZmxhZ3MyOwkvKiBtb3JlIHJhbmRvbSBmbGFncyAqLwotLQlfX3VpbnQzMl90CWRpX2Nvd2V4dHNpemU7CS8qIGJhc2ljIGNvdyBleHRlbnQgc2l6ZSBmb3IgZmlsZSAqLwotLQlfX3VpbnQ4X3QJZGlfcGFkMlsxMl07CS8qIG1vcmUgcGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLwotKwl1aW50NjRfdAlkaV9mbGFnczI7CS8qIG1vcmUgcmFuZG9tIGZsYWdzICovCi0rCXVpbnQzMl90CWRpX2Nvd2V4dHNpemU7CS8qIGJhc2ljIGNvdyBleHRlbnQgc2l6ZSBmb3IgZmlsZSAqLwotKwl1aW50OF90CQlkaV9wYWQyWzEyXTsJLyogbW9yZSBwYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCi0gCi0gCS8qIGZpZWxkcyBvbmx5IHdyaXR0ZW4gdG8gZHVyaW5nIGlub2RlIGNyZWF0aW9uICovCi0gCXhmc19pY3RpbWVzdGFtcF90IGRpX2NydGltZTsJLyogdGltZSBjcmVhdGVkICovCi1AQCAtNDgzLDcgKzQ4Myw3IEBAIHR5cGVkZWYgc3RydWN0IHhmc19idWZfbG9nX2Zvcm1hdCB7Ci0gCXVuc2lnbmVkIHNob3J0CWJsZl9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotIAl1bnNpZ25lZCBzaG9ydAlibGZfZmxhZ3M7CS8qIG1pc2Mgc3RhdGUgKi8KLSAJdW5zaWduZWQgc2hvcnQJYmxmX2xlbjsJLyogbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGlzIGJ1ZiAqLwotLQlfX2ludDY0X3QJYmxmX2Jsa25vOwkvKiBzdGFydGluZyBibGtubyBvZiB0aGlzIGJ1ZiAqLwotKwlpbnQ2NF90CQlibGZfYmxrbm87CS8qIHN0YXJ0aW5nIGJsa25vIG9mIHRoaXMgYnVmICovCi0gCXVuc2lnbmVkIGludAlibGZfbWFwX3NpemU7CS8qIHVzZWQgc2l6ZSBvZiBkYXRhIGJpdG1hcCBpbiB3b3JkcyAqLwotIAl1bnNpZ25lZCBpbnQJYmxmX2RhdGFfbWFwW1hGU19CTEZfREFUQU1BUF9TSVpFXTsgLyogZGlydHkgYml0bWFwICovCi0gfSB4ZnNfYnVmX2xvZ19mb3JtYXRfdDsKLUBAIC01MzMsNyArNTMzLDcgQEAgeGZzX2JsZnRfdG9fZmxhZ3Moc3RydWN0IHhmc19idWZfbG9nX2Zvcm1hdCAqYmxmLCBlbnVtIHhmc19ibGZ0IHR5cGUpCi0gCWJsZi0+YmxmX2ZsYWdzIHw9ICgodHlwZSA8PCBYRlNfQkxGVF9TSElGVCkgJiBYRlNfQkxGVF9NQVNLKTsKLSB9Ci0gCi0tc3RhdGljIGlubGluZSBfX3VpbnQxNl90Ci0rc3RhdGljIGlubGluZSB1aW50MTZfdAotIHhmc19ibGZ0X2Zyb21fZmxhZ3Moc3RydWN0IHhmc19idWZfbG9nX2Zvcm1hdCAqYmxmKQotIHsKLSAJcmV0dXJuIChibGYtPmJsZl9mbGFncyAmIFhGU19CTEZUX01BU0spID4+IFhGU19CTEZUX1NISUZUOwotQEAgLTU1NCwxNCArNTU0LDE0IEBAIHR5cGVkZWYgc3RydWN0IHhmc19leHRlbnQgewotICAqIGNvbnZlcnNpb24gcm91dGluZS4KLSAgKi8KLSB0eXBlZGVmIHN0cnVjdCB4ZnNfZXh0ZW50XzMyIHsKLS0JX191aW50NjRfdAlleHRfc3RhcnQ7Ci0tCV9fdWludDMyX3QJZXh0X2xlbjsKLSsJdWludDY0X3QJZXh0X3N0YXJ0OwotKwl1aW50MzJfdAlleHRfbGVuOwotIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgeGZzX2V4dGVudF8zMl90OwotIAotIHR5cGVkZWYgc3RydWN0IHhmc19leHRlbnRfNjQgewotLQlfX3VpbnQ2NF90CWV4dF9zdGFydDsKLS0JX191aW50MzJfdAlleHRfbGVuOwotLQlfX3VpbnQzMl90CWV4dF9wYWQ7Ci0rCXVpbnQ2NF90CWV4dF9zdGFydDsKLSsJdWludDMyX3QJZXh0X2xlbjsKLSsJdWludDMyX3QJZXh0X3BhZDsKLSB9IHhmc19leHRlbnRfNjRfdDsKLSAKLSAvKgotQEAgLTU3MCwyNiArNTcwLDI2IEBAIHR5cGVkZWYgc3RydWN0IHhmc19leHRlbnRfNjQgewotICAqIHNpemUgaXMgZ2l2ZW4gYnkgZWZpX25leHRlbnRzLgotICAqLwotIHR5cGVkZWYgc3RydWN0IHhmc19lZmlfbG9nX2Zvcm1hdCB7Ci0tCV9fdWludDE2X3QJCWVmaV90eXBlOwkvKiBlZmkgbG9nIGl0ZW0gdHlwZSAqLwotLQlfX3VpbnQxNl90CQllZmlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KLS0JX191aW50MzJfdAkJZWZpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLwotLQlfX3VpbnQ2NF90CQllZmlfaWQ7CQkvKiBlZmkgaWRlbnRpZmllciAqLwotKwl1aW50MTZfdAkJZWZpX3R5cGU7CS8qIGVmaSBsb2cgaXRlbSB0eXBlICovCi0rCXVpbnQxNl90CQllZmlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KLSsJdWludDMyX3QJCWVmaV9uZXh0ZW50czsJLyogIyBleHRlbnRzIHRvIGZyZWUgKi8KLSsJdWludDY0X3QJCWVmaV9pZDsJCS8qIGVmaSBpZGVudGlmaWVyICovCi0gCXhmc19leHRlbnRfdAkJZWZpX2V4dGVudHNbMV07CS8qIGFycmF5IG9mIGV4dGVudHMgdG8gZnJlZSAqLwotIH0geGZzX2VmaV9sb2dfZm9ybWF0X3Q7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgeGZzX2VmaV9sb2dfZm9ybWF0XzMyIHsKLS0JX191aW50MTZfdAkJZWZpX3R5cGU7CS8qIGVmaSBsb2cgaXRlbSB0eXBlICovCi0tCV9fdWludDE2X3QJCWVmaV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotLQlfX3VpbnQzMl90CQllZmlfbmV4dGVudHM7CS8qICMgZXh0ZW50cyB0byBmcmVlICovCi0tCV9fdWludDY0X3QJCWVmaV9pZDsJCS8qIGVmaSBpZGVudGlmaWVyICovCi0rCXVpbnQxNl90CQllZmlfdHlwZTsJLyogZWZpIGxvZyBpdGVtIHR5cGUgKi8KLSsJdWludDE2X3QJCWVmaV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotKwl1aW50MzJfdAkJZWZpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLwotKwl1aW50NjRfdAkJZWZpX2lkOwkJLyogZWZpIGlkZW50aWZpZXIgKi8KLSAJeGZzX2V4dGVudF8zMl90CQllZmlfZXh0ZW50c1sxXTsJLyogYXJyYXkgb2YgZXh0ZW50cyB0byBmcmVlICovCi0gfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSB4ZnNfZWZpX2xvZ19mb3JtYXRfMzJfdDsKLSAKLSB0eXBlZGVmIHN0cnVjdCB4ZnNfZWZpX2xvZ19mb3JtYXRfNjQgewotLQlfX3VpbnQxNl90CQllZmlfdHlwZTsJLyogZWZpIGxvZyBpdGVtIHR5cGUgKi8KLS0JX191aW50MTZfdAkJZWZpX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCi0tCV9fdWludDMyX3QJCWVmaV9uZXh0ZW50czsJLyogIyBleHRlbnRzIHRvIGZyZWUgKi8KLS0JX191aW50NjRfdAkJZWZpX2lkOwkJLyogZWZpIGlkZW50aWZpZXIgKi8KLSsJdWludDE2X3QJCWVmaV90eXBlOwkvKiBlZmkgbG9nIGl0ZW0gdHlwZSAqLwotKwl1aW50MTZfdAkJZWZpX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCi0rCXVpbnQzMl90CQllZmlfbmV4dGVudHM7CS8qICMgZXh0ZW50cyB0byBmcmVlICovCi0rCXVpbnQ2NF90CQllZmlfaWQ7CQkvKiBlZmkgaWRlbnRpZmllciAqLwotIAl4ZnNfZXh0ZW50XzY0X3QJCWVmaV9leHRlbnRzWzFdOwkvKiBhcnJheSBvZiBleHRlbnRzIHRvIGZyZWUgKi8KLSB9IHhmc19lZmlfbG9nX2Zvcm1hdF82NF90OwotIAotQEAgLTU5OSwyNiArNTk5LDI2IEBAIHR5cGVkZWYgc3RydWN0IHhmc19lZmlfbG9nX2Zvcm1hdF82NCB7Ci0gICogc2l6ZSBpcyBnaXZlbiBieSBlZmRfbmV4dGVudHM7Ci0gICovCi0gdHlwZWRlZiBzdHJ1Y3QgeGZzX2VmZF9sb2dfZm9ybWF0IHsKLS0JX191aW50MTZfdAkJZWZkX3R5cGU7CS8qIGVmZCBsb2cgaXRlbSB0eXBlICovCi0tCV9fdWludDE2X3QJCWVmZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotLQlfX3VpbnQzMl90CQllZmRfbmV4dGVudHM7CS8qICMgb2YgZXh0ZW50cyBmcmVlZCAqLwotLQlfX3VpbnQ2NF90CQllZmRfZWZpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIGVmaSAqLwotKwl1aW50MTZfdAkJZWZkX3R5cGU7CS8qIGVmZCBsb2cgaXRlbSB0eXBlICovCi0rCXVpbnQxNl90CQllZmRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KLSsJdWludDMyX3QJCWVmZF9uZXh0ZW50czsJLyogIyBvZiBleHRlbnRzIGZyZWVkICovCi0rCXVpbnQ2NF90CQllZmRfZWZpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIGVmaSAqLwotIAl4ZnNfZXh0ZW50X3QJCWVmZF9leHRlbnRzWzFdOwkvKiBhcnJheSBvZiBleHRlbnRzIGZyZWVkICovCi0gfSB4ZnNfZWZkX2xvZ19mb3JtYXRfdDsKLSAKLSB0eXBlZGVmIHN0cnVjdCB4ZnNfZWZkX2xvZ19mb3JtYXRfMzIgewotLQlfX3VpbnQxNl90CQllZmRfdHlwZTsJLyogZWZkIGxvZyBpdGVtIHR5cGUgKi8KLS0JX191aW50MTZfdAkJZWZkX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCi0tCV9fdWludDMyX3QJCWVmZF9uZXh0ZW50czsJLyogIyBvZiBleHRlbnRzIGZyZWVkICovCi0tCV9fdWludDY0X3QJCWVmZF9lZmlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgZWZpICovCi0rCXVpbnQxNl90CQllZmRfdHlwZTsJLyogZWZkIGxvZyBpdGVtIHR5cGUgKi8KLSsJdWludDE2X3QJCWVmZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotKwl1aW50MzJfdAkJZWZkX25leHRlbnRzOwkvKiAjIG9mIGV4dGVudHMgZnJlZWQgKi8KLSsJdWludDY0X3QJCWVmZF9lZmlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgZWZpICovCi0gCXhmc19leHRlbnRfMzJfdAkJZWZkX2V4dGVudHNbMV07CS8qIGFycmF5IG9mIGV4dGVudHMgZnJlZWQgKi8KLSB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIHhmc19lZmRfbG9nX2Zvcm1hdF8zMl90OwotIAotIHR5cGVkZWYgc3RydWN0IHhmc19lZmRfbG9nX2Zvcm1hdF82NCB7Ci0tCV9fdWludDE2X3QJCWVmZF90eXBlOwkvKiBlZmQgbG9nIGl0ZW0gdHlwZSAqLwotLQlfX3VpbnQxNl90CQllZmRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KLS0JX191aW50MzJfdAkJZWZkX25leHRlbnRzOwkvKiAjIG9mIGV4dGVudHMgZnJlZWQgKi8KLS0JX191aW50NjRfdAkJZWZkX2VmaV9pZDsJLyogaWQgb2YgY29ycmVzcG9uZGluZyBlZmkgKi8KLSsJdWludDE2X3QJCWVmZF90eXBlOwkvKiBlZmQgbG9nIGl0ZW0gdHlwZSAqLwotKwl1aW50MTZfdAkJZWZkX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCi0rCXVpbnQzMl90CQllZmRfbmV4dGVudHM7CS8qICMgb2YgZXh0ZW50cyBmcmVlZCAqLwotKwl1aW50NjRfdAkJZWZkX2VmaV9pZDsJLyogaWQgb2YgY29ycmVzcG9uZGluZyBlZmkgKi8KLSAJeGZzX2V4dGVudF82NF90CQllZmRfZXh0ZW50c1sxXTsJLyogYXJyYXkgb2YgZXh0ZW50cyBmcmVlZCAqLwotIH0geGZzX2VmZF9sb2dfZm9ybWF0XzY0X3Q7Ci0gCi1AQCAtNjI2LDExICs2MjYsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX2VmZF9sb2dfZm9ybWF0XzY0IHsKLSAgKiBSVUkvUlVEIChyZXZlcnNlIG1hcHBpbmcpIGxvZyBmb3JtYXQgZGVmaW5pdGlvbnMKLSAgKi8KLSBzdHJ1Y3QgeGZzX21hcF9leHRlbnQgewotLQlfX3VpbnQ2NF90CQltZV9vd25lcjsKLS0JX191aW50NjRfdAkJbWVfc3RhcnRibG9jazsKLS0JX191aW50NjRfdAkJbWVfc3RhcnRvZmY7Ci0tCV9fdWludDMyX3QJCW1lX2xlbjsKLS0JX191aW50MzJfdAkJbWVfZmxhZ3M7Ci0rCXVpbnQ2NF90CQltZV9vd25lcjsKLSsJdWludDY0X3QJCW1lX3N0YXJ0YmxvY2s7Ci0rCXVpbnQ2NF90CQltZV9zdGFydG9mZjsKLSsJdWludDMyX3QJCW1lX2xlbjsKLSsJdWludDMyX3QJCW1lX2ZsYWdzOwotIH07Ci0gCi0gLyogcm1hcCBtZV9mbGFnczogdXBwZXIgYml0cyBhcmUgZmxhZ3MsIGxvd2VyIGJ5dGUgaXMgdHlwZSBjb2RlICovCi1AQCAtNjU5LDEwICs2NTksMTAgQEAgc3RydWN0IHhmc19tYXBfZXh0ZW50IHsKLSAgKiBzaXplIGlzIGdpdmVuIGJ5IHJ1aV9uZXh0ZW50cy4KLSAgKi8KLSBzdHJ1Y3QgeGZzX3J1aV9sb2dfZm9ybWF0IHsKLS0JX191aW50MTZfdAkJcnVpX3R5cGU7CS8qIHJ1aSBsb2cgaXRlbSB0eXBlICovCi0tCV9fdWludDE2X3QJCXJ1aV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotLQlfX3VpbnQzMl90CQlydWlfbmV4dGVudHM7CS8qICMgZXh0ZW50cyB0byBmcmVlICovCi0tCV9fdWludDY0X3QJCXJ1aV9pZDsJCS8qIHJ1aSBpZGVudGlmaWVyICovCi0rCXVpbnQxNl90CQlydWlfdHlwZTsJLyogcnVpIGxvZyBpdGVtIHR5cGUgKi8KLSsJdWludDE2X3QJCXJ1aV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotKwl1aW50MzJfdAkJcnVpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLwotKwl1aW50NjRfdAkJcnVpX2lkOwkJLyogcnVpIGlkZW50aWZpZXIgKi8KLSAJc3RydWN0IHhmc19tYXBfZXh0ZW50CXJ1aV9leHRlbnRzW107CS8qIGFycmF5IG9mIGV4dGVudHMgdG8gcm1hcCAqLwotIH07Ci0gCi1AQCAtNjgwLDE5ICs2ODAsMTkgQEAgeGZzX3J1aV9sb2dfZm9ybWF0X3NpemVvZigKLSAgKiBzaXplIGlzIGdpdmVuIGJ5IHJ1ZF9uZXh0ZW50czsKLSAgKi8KLSBzdHJ1Y3QgeGZzX3J1ZF9sb2dfZm9ybWF0IHsKLS0JX191aW50MTZfdAkJcnVkX3R5cGU7CS8qIHJ1ZCBsb2cgaXRlbSB0eXBlICovCi0tCV9fdWludDE2X3QJCXJ1ZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotLQlfX3VpbnQzMl90CQlfX3BhZDsKLS0JX191aW50NjRfdAkJcnVkX3J1aV9pZDsJLyogaWQgb2YgY29ycmVzcG9uZGluZyBydWkgKi8KLSsJdWludDE2X3QJCXJ1ZF90eXBlOwkvKiBydWQgbG9nIGl0ZW0gdHlwZSAqLwotKwl1aW50MTZfdAkJcnVkX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCi0rCXVpbnQzMl90CQlfX3BhZDsKLSsJdWludDY0X3QJCXJ1ZF9ydWlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgcnVpICovCi0gfTsKLSAKLSAvKgotICAqIENVSS9DVUQgKHJlZmNvdW50IHVwZGF0ZSkgbG9nIGZvcm1hdCBkZWZpbml0aW9ucwotICAqLwotIHN0cnVjdCB4ZnNfcGh5c19leHRlbnQgewotLQlfX3VpbnQ2NF90CQlwZV9zdGFydGJsb2NrOwotLQlfX3VpbnQzMl90CQlwZV9sZW47Ci0tCV9fdWludDMyX3QJCXBlX2ZsYWdzOwotKwl1aW50NjRfdAkJcGVfc3RhcnRibG9jazsKLSsJdWludDMyX3QJCXBlX2xlbjsKLSsJdWludDMyX3QJCXBlX2ZsYWdzOwotIH07Ci0gCi0gLyogcmVmY291bnQgcGVfZmxhZ3M6IHVwcGVyIGJpdHMgYXJlIGZsYWdzLCBsb3dlciBieXRlIGlzIHR5cGUgY29kZSAqLwotQEAgLTcwNywxMCArNzA3LDEwIEBAIHN0cnVjdCB4ZnNfcGh5c19leHRlbnQgewotICAqIHNpemUgaXMgZ2l2ZW4gYnkgY3VpX25leHRlbnRzLgotICAqLwotIHN0cnVjdCB4ZnNfY3VpX2xvZ19mb3JtYXQgewotLQlfX3VpbnQxNl90CQljdWlfdHlwZTsJLyogY3VpIGxvZyBpdGVtIHR5cGUgKi8KLS0JX191aW50MTZfdAkJY3VpX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCi0tCV9fdWludDMyX3QJCWN1aV9uZXh0ZW50czsJLyogIyBleHRlbnRzIHRvIGZyZWUgKi8KLS0JX191aW50NjRfdAkJY3VpX2lkOwkJLyogY3VpIGlkZW50aWZpZXIgKi8KLSsJdWludDE2X3QJCWN1aV90eXBlOwkvKiBjdWkgbG9nIGl0ZW0gdHlwZSAqLwotKwl1aW50MTZfdAkJY3VpX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCi0rCXVpbnQzMl90CQljdWlfbmV4dGVudHM7CS8qICMgZXh0ZW50cyB0byBmcmVlICovCi0rCXVpbnQ2NF90CQljdWlfaWQ7CQkvKiBjdWkgaWRlbnRpZmllciAqLwotIAlzdHJ1Y3QgeGZzX3BoeXNfZXh0ZW50CWN1aV9leHRlbnRzW107CS8qIGFycmF5IG9mIGV4dGVudHMgKi8KLSB9OwotIAotQEAgLTcyOCwxMCArNzI4LDEwIEBAIHhmc19jdWlfbG9nX2Zvcm1hdF9zaXplb2YoCi0gICogc2l6ZSBpcyBnaXZlbiBieSBjdWRfbmV4dGVudHM7Ci0gICovCi0gc3RydWN0IHhmc19jdWRfbG9nX2Zvcm1hdCB7Ci0tCV9fdWludDE2X3QJCWN1ZF90eXBlOwkvKiBjdWQgbG9nIGl0ZW0gdHlwZSAqLwotLQlfX3VpbnQxNl90CQljdWRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KLS0JX191aW50MzJfdAkJX19wYWQ7Ci0tCV9fdWludDY0X3QJCWN1ZF9jdWlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgY3VpICovCi0rCXVpbnQxNl90CQljdWRfdHlwZTsJLyogY3VkIGxvZyBpdGVtIHR5cGUgKi8KLSsJdWludDE2X3QJCWN1ZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotKwl1aW50MzJfdAkJX19wYWQ7Ci0rCXVpbnQ2NF90CQljdWRfY3VpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIGN1aSAqLwotIH07Ci0gCi0gLyoKLUBAIC03NTUsMTAgKzc1NSwxMCBAQCBzdHJ1Y3QgeGZzX2N1ZF9sb2dfZm9ybWF0IHsKLSAgKiBzaXplIGlzIGdpdmVuIGJ5IGJ1aV9uZXh0ZW50cy4KLSAgKi8KLSBzdHJ1Y3QgeGZzX2J1aV9sb2dfZm9ybWF0IHsKLS0JX191aW50MTZfdAkJYnVpX3R5cGU7CS8qIGJ1aSBsb2cgaXRlbSB0eXBlICovCi0tCV9fdWludDE2X3QJCWJ1aV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotLQlfX3VpbnQzMl90CQlidWlfbmV4dGVudHM7CS8qICMgZXh0ZW50cyB0byBmcmVlICovCi0tCV9fdWludDY0X3QJCWJ1aV9pZDsJCS8qIGJ1aSBpZGVudGlmaWVyICovCi0rCXVpbnQxNl90CQlidWlfdHlwZTsJLyogYnVpIGxvZyBpdGVtIHR5cGUgKi8KLSsJdWludDE2X3QJCWJ1aV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotKwl1aW50MzJfdAkJYnVpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLwotKwl1aW50NjRfdAkJYnVpX2lkOwkJLyogYnVpIGlkZW50aWZpZXIgKi8KLSAJc3RydWN0IHhmc19tYXBfZXh0ZW50CWJ1aV9leHRlbnRzW107CS8qIGFycmF5IG9mIGV4dGVudHMgdG8gYm1hcCAqLwotIH07Ci0gCi1AQCAtNzc2LDEwICs3NzYsMTAgQEAgeGZzX2J1aV9sb2dfZm9ybWF0X3NpemVvZigKLSAgKiBzaXplIGlzIGdpdmVuIGJ5IGJ1ZF9uZXh0ZW50czsKLSAgKi8KLSBzdHJ1Y3QgeGZzX2J1ZF9sb2dfZm9ybWF0IHsKLS0JX191aW50MTZfdAkJYnVkX3R5cGU7CS8qIGJ1ZCBsb2cgaXRlbSB0eXBlICovCi0tCV9fdWludDE2X3QJCWJ1ZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLwotLQlfX3VpbnQzMl90CQlfX3BhZDsKLS0JX191aW50NjRfdAkJYnVkX2J1aV9pZDsJLyogaWQgb2YgY29ycmVzcG9uZGluZyBidWkgKi8KLSsJdWludDE2X3QJCWJ1ZF90eXBlOwkvKiBidWQgbG9nIGl0ZW0gdHlwZSAqLwotKwl1aW50MTZfdAkJYnVkX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCi0rCXVpbnQzMl90CQlfX3BhZDsKLSsJdWludDY0X3QJCWJ1ZF9idWlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgYnVpICovCi0gfTsKLSAKLSAvKgotQEAgLTc4OSwxMiArNzg5LDEyIEBAIHN0cnVjdCB4ZnNfYnVkX2xvZ19mb3JtYXQgewotICAqIDMyIGJpdHMgOiBsb2dfcmVjb3ZlcnkgY29kZSBhc3N1bWVzIHRoYXQuCi0gICovCi0gdHlwZWRlZiBzdHJ1Y3QgeGZzX2RxX2xvZ2Zvcm1hdCB7Ci0tCV9fdWludDE2X3QJCXFsZl90eXBlOyAgICAgIC8qIGRxdW90IGxvZyBpdGVtIHR5cGUgKi8KLS0JX191aW50MTZfdAkJcWxmX3NpemU7ICAgICAgLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KLSsJdWludDE2X3QJCXFsZl90eXBlOyAgICAgIC8qIGRxdW90IGxvZyBpdGVtIHR5cGUgKi8KLSsJdWludDE2X3QJCXFsZl9zaXplOyAgICAgIC8qIHNpemUgb2YgdGhpcyBpdGVtICovCi0gCXhmc19kcWlkX3QJCXFsZl9pZDsJICAgICAgIC8qIHVzci9ncnAvcHJvaiBpZCA6IDMyIGJpdHMgKi8KLS0JX19pbnQ2NF90CQlxbGZfYmxrbm87ICAgICAvKiBibGtubyBvZiBkcXVvdCBidWZmZXIgKi8KLS0JX19pbnQzMl90CQlxbGZfbGVuOyAgICAgICAvKiBsZW4gb2YgZHF1b3QgYnVmZmVyICovCi0tCV9fdWludDMyX3QJCXFsZl9ib2Zmc2V0OyAgIC8qIG9mZiBvZiBkcXVvdCBpbiBidWZmZXIgKi8KLSsJaW50NjRfdAkJCXFsZl9ibGtubzsgICAgIC8qIGJsa25vIG9mIGRxdW90IGJ1ZmZlciAqLwotKwlpbnQzMl90CQkJcWxmX2xlbjsgICAgICAgLyogbGVuIG9mIGRxdW90IGJ1ZmZlciAqLwotKwl1aW50MzJfdAkJcWxmX2JvZmZzZXQ7ICAgLyogb2ZmIG9mIGRxdW90IGluIGJ1ZmZlciAqLwotIH0geGZzX2RxX2xvZ2Zvcm1hdF90OwotIAotIC8qCi1AQCAtODUzLDggKzg1Myw4IEBAIHR5cGVkZWYgc3RydWN0IHhmc19xb2ZmX2xvZ2Zvcm1hdCB7Ci0gICogZGVjb2RpbmcgY2FuIGJlIGRvbmUgY29ycmVjdGx5LgotICAqLwotIHN0cnVjdCB4ZnNfaWNyZWF0ZV9sb2cgewotLQlfX3VpbnQxNl90CWljbF90eXBlOwkvKiB0eXBlIG9mIGxvZyBmb3JtYXQgc3RydWN0dXJlICovCi0tCV9fdWludDE2X3QJaWNsX3NpemU7CS8qIHNpemUgb2YgbG9nIGZvcm1hdCBzdHJ1Y3R1cmUgKi8KLSsJdWludDE2X3QJaWNsX3R5cGU7CS8qIHR5cGUgb2YgbG9nIGZvcm1hdCBzdHJ1Y3R1cmUgKi8KLSsJdWludDE2X3QJaWNsX3NpemU7CS8qIHNpemUgb2YgbG9nIGZvcm1hdCBzdHJ1Y3R1cmUgKi8KLSAJX19iZTMyCQlpY2xfYWc7CQkvKiBhZyBiZWluZyBhbGxvY2F0ZWQgaW4gKi8KLSAJX19iZTMyCQlpY2xfYWdibm87CS8qIHN0YXJ0IGJsb2NrIG9mIGlub2RlIHJhbmdlICovCi0gCV9fYmUzMgkJaWNsX2NvdW50OwkvKiBudW1iZXIgb2YgaW5vZGVzIHRvIGluaXRpYWxpc2UgKi8KLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX3F1b3RhX2RlZnMuaCBiL2xpYnhmcy94ZnNfcXVvdGFfZGVmcy5oCi1pbmRleCA4ZWVkNTEyNy4uZDY5Yzc3MjIgMTAwNjQ0Ci0tLS0gYS9saWJ4ZnMveGZzX3F1b3RhX2RlZnMuaAotKysrIGIvbGlieGZzL3hmc19xdW90YV9kZWZzLmgKLUBAIC0yNyw4ICsyNyw4IEBACi0gICogdGhleSBtYXkgbmVlZCA2NC1iaXQgYWNjb3VudGluZy4gSGVuY2UsIDY0LWJpdCBxdW90YS1jb3VudGVycywKLSAgKiBhbmQgcXVvdGEtbGltaXRzLiBUaGlzIGlzIGEgd2FzdGUgaW4gdGhlIGNvbW1vbiBjYXNlLCBidXQgaGV5IC4uLgotICAqLwotLXR5cGVkZWYgX191aW50NjRfdAl4ZnNfcWNudF90OwotLXR5cGVkZWYgX191aW50MTZfdAl4ZnNfcXdhcm5jbnRfdDsKLSt0eXBlZGVmIHVpbnQ2NF90CXhmc19xY250X3Q7Ci0rdHlwZWRlZiB1aW50MTZfdAl4ZnNfcXdhcm5jbnRfdDsKLSAKLSAvKgotICAqIGZsYWdzIGZvciBxX2ZsYWdzIGZpZWxkIGluIHRoZSBkcXVvdC4KLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX3JlZmNvdW50X2J0cmVlLmMgYi9saWJ4ZnMveGZzX3JlZmNvdW50X2J0cmVlLmMKLWluZGV4IDI4MTRmOTRmLi5iZDFhOGYyZCAxMDA2NDQKLS0tLSBhL2xpYnhmcy94ZnNfcmVmY291bnRfYnRyZWUuYwotKysrIGIvbGlieGZzL3hmc19yZWZjb3VudF9idHJlZS5jCi1AQCAtMjAxLDcgKzIwMSw3IEBAIHhmc19yZWZjb3VudGJ0X2luaXRfcHRyX2Zyb21fY3VyKAotIAlwdHItPnMgPSBhZ2YtPmFnZl9yZWZjb3VudF9yb290OwotIH0KLSAKLS1TVEFUSUMgX19pbnQ2NF90Ci0rU1RBVElDIGludDY0X3QKLSB4ZnNfcmVmY291bnRidF9rZXlfZGlmZigKLSAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKLSAJdW5pb24geGZzX2J0cmVlX2tleQkqa2V5KQotQEAgLTIwOSwxNiArMjA5LDE2IEBAIHhmc19yZWZjb3VudGJ0X2tleV9kaWZmKAotIAlzdHJ1Y3QgeGZzX3JlZmNvdW50X2lyZWMJKnJlYyA9ICZjdXItPmJjX3JlYy5yYzsKLSAJc3RydWN0IHhmc19yZWZjb3VudF9rZXkJCSprcCA9ICZrZXktPnJlZmM7Ci0gCi0tCXJldHVybiAoX19pbnQ2NF90KWJlMzJfdG9fY3B1KGtwLT5yY19zdGFydGJsb2NrKSAtIHJlYy0+cmNfc3RhcnRibG9jazsKLSsJcmV0dXJuIChpbnQ2NF90KWJlMzJfdG9fY3B1KGtwLT5yY19zdGFydGJsb2NrKSAtIHJlYy0+cmNfc3RhcnRibG9jazsKLSB9Ci0gCi0tU1RBVElDIF9faW50NjRfdAotK1NUQVRJQyBpbnQ2NF90Ci0geGZzX3JlZmNvdW50YnRfZGlmZl90d29fa2V5cygKLSAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKLSAJdW5pb24geGZzX2J0cmVlX2tleQkqazEsCi0gCXVuaW9uIHhmc19idHJlZV9rZXkJKmsyKQotIHsKLS0JcmV0dXJuIChfX2ludDY0X3QpYmUzMl90b19jcHUoazEtPnJlZmMucmNfc3RhcnRibG9jaykgLQotKwlyZXR1cm4gKGludDY0X3QpYmUzMl90b19jcHUoazEtPnJlZmMucmNfc3RhcnRibG9jaykgLQotIAkJCSAgYmUzMl90b19jcHUoazItPnJlZmMucmNfc3RhcnRibG9jayk7Ci0gfQotIAotZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfcm1hcC5jIGIvbGlieGZzL3hmc19ybWFwLmMKLWluZGV4IGY3ODc3MWQxLi4wZDZiNWQ0MSAxMDA2NDQKLS0tLSBhL2xpYnhmcy94ZnNfcm1hcC5jCi0rKysgYi9saWJ4ZnMveGZzX3JtYXAuYwotQEAgLTIwNTksNyArMjA1OSw3IEBAIGludAotIHhmc19ybWFwX2ZpbmlzaF9vbmUoCi0gCXN0cnVjdCB4ZnNfdHJhbnMJCSp0cCwKLSAJZW51bSB4ZnNfcm1hcF9pbnRlbnRfdHlwZQl0eXBlLAotLQlfX3VpbnQ2NF90CQkJb3duZXIsCi0rCXVpbnQ2NF90CQkJb3duZXIsCi0gCWludAkJCQl3aGljaGZvcmssCi0gCXhmc19maWxlb2ZmX3QJCQlzdGFydG9mZiwKLSAJeGZzX2ZzYmxvY2tfdAkJCXN0YXJ0YmxvY2ssCi1AQCAtMjE4MCw3ICsyMTgwLDcgQEAgX194ZnNfcm1hcF9hZGQoCi0gCXN0cnVjdCB4ZnNfbW91bnQJCSptcCwKLSAJc3RydWN0IHhmc19kZWZlcl9vcHMJCSpkZm9wcywKLSAJZW51bSB4ZnNfcm1hcF9pbnRlbnRfdHlwZQl0eXBlLAotLQlfX3VpbnQ2NF90CQkJb3duZXIsCi0rCXVpbnQ2NF90CQkJb3duZXIsCi0gCWludAkJCQl3aGljaGZvcmssCi0gCXN0cnVjdCB4ZnNfYm1idF9pcmVjCQkqYm1hcCkKLSB7Ci1AQCAtMjI2NCw3ICsyMjY0LDcgQEAgeGZzX3JtYXBfYWxsb2NfZXh0ZW50KAotIAl4ZnNfYWdudW1iZXJfdAkJYWdubywKLSAJeGZzX2FnYmxvY2tfdAkJYm5vLAotIAl4ZnNfZXh0bGVuX3QJCWxlbiwKLS0JX191aW50NjRfdAkJb3duZXIpCi0rCXVpbnQ2NF90CQlvd25lcikKLSB7Ci0gCXN0cnVjdCB4ZnNfYm1idF9pcmVjCWJtYXA7Ci0gCi1AQCAtMjI4OCw3ICsyMjg4LDcgQEAgeGZzX3JtYXBfZnJlZV9leHRlbnQoCi0gCXhmc19hZ251bWJlcl90CQlhZ25vLAotIAl4ZnNfYWdibG9ja190CQlibm8sCi0gCXhmc19leHRsZW5fdAkJbGVuLAotLQlfX3VpbnQ2NF90CQlvd25lcikKLSsJdWludDY0X3QJCW93bmVyKQotIHsKLSAJc3RydWN0IHhmc19ibWJ0X2lyZWMJYm1hcDsKLSAKLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX3JtYXAuaCBiL2xpYnhmcy94ZnNfcm1hcC5oCi1pbmRleCA5OGY5MDhmZS4uMjY1MTE2ZDAgMTAwNjQ0Ci0tLS0gYS9saWJ4ZnMveGZzX3JtYXAuaAotKysrIGIvbGlieGZzL3hmc19ybWFwLmgKLUBAIC0xNzksNyArMTc5LDcgQEAgZW51bSB4ZnNfcm1hcF9pbnRlbnRfdHlwZSB7Ci0gc3RydWN0IHhmc19ybWFwX2ludGVudCB7Ci0gCXN0cnVjdCBsaXN0X2hlYWQJCQlyaV9saXN0OwotIAllbnVtIHhmc19ybWFwX2ludGVudF90eXBlCQlyaV90eXBlOwotLQlfX3VpbnQ2NF90CQkJCXJpX293bmVyOwotKwl1aW50NjRfdAkJCQlyaV9vd25lcjsKLSAJaW50CQkJCQlyaV93aGljaGZvcms7Ci0gCXN0cnVjdCB4ZnNfYm1idF9pcmVjCQkJcmlfYm1hcDsKLSB9OwotQEAgLTE5NiwxNSArMTk2LDE1IEBAIGludCB4ZnNfcm1hcF9jb252ZXJ0X2V4dGVudChzdHJ1Y3QgeGZzX21vdW50ICptcCwgc3RydWN0IHhmc19kZWZlcl9vcHMgKmRmb3BzLAotIAkJc3RydWN0IHhmc19ibWJ0X2lyZWMgKmltYXApOwotIGludCB4ZnNfcm1hcF9hbGxvY19leHRlbnQoc3RydWN0IHhmc19tb3VudCAqbXAsIHN0cnVjdCB4ZnNfZGVmZXJfb3BzICpkZm9wcywKLSAJCXhmc19hZ251bWJlcl90IGFnbm8sIHhmc19hZ2Jsb2NrX3QgYm5vLCB4ZnNfZXh0bGVuX3QgbGVuLAotLQkJX191aW50NjRfdCBvd25lcik7Ci0rCQl1aW50NjRfdCBvd25lcik7Ci0gaW50IHhmc19ybWFwX2ZyZWVfZXh0ZW50KHN0cnVjdCB4ZnNfbW91bnQgKm1wLCBzdHJ1Y3QgeGZzX2RlZmVyX29wcyAqZGZvcHMsCi0gCQl4ZnNfYWdudW1iZXJfdCBhZ25vLCB4ZnNfYWdibG9ja190IGJubywgeGZzX2V4dGxlbl90IGxlbiwKLS0JCV9fdWludDY0X3Qgb3duZXIpOwotKwkJdWludDY0X3Qgb3duZXIpOwotIAotIHZvaWQgeGZzX3JtYXBfZmluaXNoX29uZV9jbGVhbnVwKHN0cnVjdCB4ZnNfdHJhbnMgKnRwLAotIAkJc3RydWN0IHhmc19idHJlZV9jdXIgKnJjdXIsIGludCBlcnJvcik7Ci0gaW50IHhmc19ybWFwX2ZpbmlzaF9vbmUoc3RydWN0IHhmc190cmFucyAqdHAsIGVudW0geGZzX3JtYXBfaW50ZW50X3R5cGUgdHlwZSwKLS0JCV9fdWludDY0X3Qgb3duZXIsIGludCB3aGljaGZvcmssIHhmc19maWxlb2ZmX3Qgc3RhcnRvZmYsCi0rCQl1aW50NjRfdCBvd25lciwgaW50IHdoaWNoZm9yaywgeGZzX2ZpbGVvZmZfdCBzdGFydG9mZiwKLSAJCXhmc19mc2Jsb2NrX3Qgc3RhcnRibG9jaywgeGZzX2ZpbGJsa3NfdCBibG9ja2NvdW50LAotIAkJeGZzX2V4bnRzdF90IHN0YXRlLCBzdHJ1Y3QgeGZzX2J0cmVlX2N1ciAqKnBjdXIpOwotIAotZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfcm1hcF9idHJlZS5jIGIvbGlieGZzL3hmc19ybWFwX2J0cmVlLmMKLWluZGV4IGExODZjODcyLi40NWFjNDM2ZiAxMDA2NDQKLS0tLSBhL2xpYnhmcy94ZnNfcm1hcF9idHJlZS5jCi0rKysgYi9saWJ4ZnMveGZzX3JtYXBfYnRyZWUuYwotQEAgLTE5Nyw3ICsxOTcsNyBAQCB4ZnNfcm1hcGJ0X2luaXRfaGlnaF9rZXlfZnJvbV9yZWMoCi0gCXVuaW9uIHhmc19idHJlZV9rZXkJKmtleSwKLSAJdW5pb24geGZzX2J0cmVlX3JlYwkqcmVjKQotIHsKLS0JX191aW50NjRfdAkJb2ZmOwotKwl1aW50NjRfdAkJb2ZmOwotIAlpbnQJCQlhZGo7Ci0gCi0gCWFkaiA9IGJlMzJfdG9fY3B1KHJlYy0+cm1hcC5ybV9ibG9ja2NvdW50KSAtIDE7Ci1AQCAtMjM5LDcgKzIzOSw3IEBAIHhmc19ybWFwYnRfaW5pdF9wdHJfZnJvbV9jdXIoCi0gCXB0ci0+cyA9IGFnZi0+YWdmX3Jvb3RzW2N1ci0+YmNfYnRudW1dOwotIH0KLSAKLS1TVEFUSUMgX19pbnQ2NF90Ci0rU1RBVElDIGludDY0X3QKLSB4ZnNfcm1hcGJ0X2tleV9kaWZmKAotIAlzdHJ1Y3QgeGZzX2J0cmVlX2N1cgkqY3VyLAotIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CSprZXkpCi1AQCAtMjQ3LDkgKzI0Nyw5IEBAIHhmc19ybWFwYnRfa2V5X2RpZmYoCi0gCXN0cnVjdCB4ZnNfcm1hcF9pcmVjCSpyZWMgPSAmY3VyLT5iY19yZWMucjsKLSAJc3RydWN0IHhmc19ybWFwX2tleQkqa3AgPSAma2V5LT5ybWFwOwotIAlfX3U2NAkJCXgsIHk7Ci0tCV9faW50NjRfdAkJZDsKLSsJaW50NjRfdAkJCWQ7Ci0gCi0tCWQgPSAoX19pbnQ2NF90KWJlMzJfdG9fY3B1KGtwLT5ybV9zdGFydGJsb2NrKSAtIHJlYy0+cm1fc3RhcnRibG9jazsKLSsJZCA9IChpbnQ2NF90KWJlMzJfdG9fY3B1KGtwLT5ybV9zdGFydGJsb2NrKSAtIHJlYy0+cm1fc3RhcnRibG9jazsKLSAJaWYgKGQpCi0gCQlyZXR1cm4gZDsKLSAKLUBAIC0yNjksNyArMjY5LDcgQEAgeGZzX3JtYXBidF9rZXlfZGlmZigKLSAJcmV0dXJuIDA7Ci0gfQotIAotLVNUQVRJQyBfX2ludDY0X3QKLStTVEFUSUMgaW50NjRfdAotIHhmc19ybWFwYnRfZGlmZl90d29fa2V5cygKLSAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKLSAJdW5pb24geGZzX2J0cmVlX2tleQkqazEsCi1AQCAtMjc3LDEwICsyNzcsMTAgQEAgeGZzX3JtYXBidF9kaWZmX3R3b19rZXlzKAotIHsKLSAJc3RydWN0IHhmc19ybWFwX2tleQkqa3AxID0gJmsxLT5ybWFwOwotIAlzdHJ1Y3QgeGZzX3JtYXBfa2V5CSprcDIgPSAmazItPnJtYXA7Ci0tCV9faW50NjRfdAkJZDsKLSsJaW50NjRfdAkJCWQ7Ci0gCV9fdTY0CQkJeCwgeTsKLSAKLS0JZCA9IChfX2ludDY0X3QpYmUzMl90b19jcHUoa3AxLT5ybV9zdGFydGJsb2NrKSAtCi0rCWQgPSAoaW50NjRfdCliZTMyX3RvX2NwdShrcDEtPnJtX3N0YXJ0YmxvY2spIC0KLSAJCSAgICAgICBiZTMyX3RvX2NwdShrcDItPnJtX3N0YXJ0YmxvY2spOwotIAlpZiAoZCkKLSAJCXJldHVybiBkOwotQEAgLTM4MiwxMCArMzgyLDEwIEBAIHhmc19ybWFwYnRfa2V5c19pbm9yZGVyKAotIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CSprMSwKLSAJdW5pb24geGZzX2J0cmVlX2tleQkqazIpCi0gewotLQlfX3VpbnQzMl90CQl4OwotLQlfX3VpbnQzMl90CQl5OwotLQlfX3VpbnQ2NF90CQlhOwotLQlfX3VpbnQ2NF90CQliOwotKwl1aW50MzJfdAkJeDsKLSsJdWludDMyX3QJCXk7Ci0rCXVpbnQ2NF90CQlhOwotKwl1aW50NjRfdAkJYjsKLSAKLSAJeCA9IGJlMzJfdG9fY3B1KGsxLT5ybWFwLnJtX3N0YXJ0YmxvY2spOwotIAl5ID0gYmUzMl90b19jcHUoazItPnJtYXAucm1fc3RhcnRibG9jayk7Ci1AQCAtNDEyLDEwICs0MTIsMTAgQEAgeGZzX3JtYXBidF9yZWNzX2lub3JkZXIoCi0gCXVuaW9uIHhmc19idHJlZV9yZWMJKnIxLAotIAl1bmlvbiB4ZnNfYnRyZWVfcmVjCSpyMikKLSB7Ci0tCV9fdWludDMyX3QJCXg7Ci0tCV9fdWludDMyX3QJCXk7Ci0tCV9fdWludDY0X3QJCWE7Ci0tCV9fdWludDY0X3QJCWI7Ci0rCXVpbnQzMl90CQl4OwotKwl1aW50MzJfdAkJeTsKLSsJdWludDY0X3QJCWE7Ci0rCXVpbnQ2NF90CQliOwotIAotIAl4ID0gYmUzMl90b19jcHUocjEtPnJtYXAucm1fc3RhcnRibG9jayk7Ci0gCXkgPSBiZTMyX3RvX2NwdShyMi0+cm1hcC5ybV9zdGFydGJsb2NrKTsKLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX3J0Yml0bWFwLmMgYi9saWJ4ZnMveGZzX3J0Yml0bWFwLmMKLWluZGV4IGRiZDJmODgxLi44ZjhhOTlkNiAxMDA2NDQKLS0tLSBhL2xpYnhmcy94ZnNfcnRiaXRtYXAuYwotKysrIGIvbGlieGZzL3hmc19ydGJpdG1hcC5jCi1AQCAtMTAwNiw3ICsxMDA2LDcgQEAgeGZzX3J0ZnJlZV9leHRlbnQoCi0gCSAgICBtcC0+bV9zYi5zYl9yZXh0ZW50cykgewotIAkJaWYgKCEobXAtPm1fcmJtaXAtPmlfZC5kaV9mbGFncyAmIFhGU19ESUZMQUdfTkVXUlRCTSkpCi0gCQkJbXAtPm1fcmJtaXAtPmlfZC5kaV9mbGFncyB8PSBYRlNfRElGTEFHX05FV1JUQk07Ci0tCQkqKF9fdWludDY0X3QgKikmVkZTX0kobXAtPm1fcmJtaXApLT5pX2F0aW1lID0gMDsKLSsJCSoodWludDY0X3QgKikmVkZTX0kobXAtPm1fcmJtaXApLT5pX2F0aW1lID0gMDsKLSAJCXhmc190cmFuc19sb2dfaW5vZGUodHAsIG1wLT5tX3JibWlwLCBYRlNfSUxPR19DT1JFKTsKLSAJfQotIAlyZXR1cm4gMDsKLWRpZmYgLS1naXQgYS9saWJ4ZnMveGZzX3NiLmMgYi9saWJ4ZnMveGZzX3NiLmMKLWluZGV4IDkzYTE4MTkwLi41MWY2OTcwNCAxMDA2NDQKLS0tLSBhL2xpYnhmcy94ZnNfc2IuYwotKysrIGIvbGlieGZzL3hmc19zYi5jCi1AQCAtNDMwLDcgKzQzMCw3IEBAIHhmc19zYl9xdW90YV90b19kaXNrKAotIAlzdHJ1Y3QgeGZzX2RzYgkqdG8sCi0gCXN0cnVjdCB4ZnNfc2IJKmZyb20pCi0gewotLQlfX3VpbnQxNl90CXFmbGFncyA9IGZyb20tPnNiX3FmbGFnczsKLSsJdWludDE2X3QJcWZsYWdzID0gZnJvbS0+c2JfcWZsYWdzOwotIAotIAl0by0+c2JfdXF1b3Rpbm8gPSBjcHVfdG9fYmU2NChmcm9tLT5zYl91cXVvdGlubyk7Ci0gCWlmICh4ZnNfc2JfdmVyc2lvbl9oYXNfcHF1b3Rpbm8oZnJvbSkpIHsKLUBAIC03MzgsNyArNzM4LDcgQEAgeGZzX3NiX21vdW50X2NvbW1vbigKLSAJbXAtPm1fcmVmY19tbnJbMV0gPSBtcC0+bV9yZWZjX214clsxXSAvIDI7Ci0gCi0gCW1wLT5tX2JzaXplID0gWEZTX0ZTQl9UT19CQihtcCwgMSk7Ci0tCW1wLT5tX2lhbGxvY19pbm9zID0gKGludClNQVgoKF9fdWludDE2X3QpWEZTX0lOT0RFU19QRVJfQ0hVTkssCi0rCW1wLT5tX2lhbGxvY19pbm9zID0gKGludClNQVgoKHVpbnQxNl90KVhGU19JTk9ERVNfUEVSX0NIVU5LLAotIAkJCQkJc2JwLT5zYl9pbm9wYmxvY2spOwotIAltcC0+bV9pYWxsb2NfYmxrcyA9IG1wLT5tX2lhbGxvY19pbm9zID4+IHNicC0+c2JfaW5vcGJsb2c7Ci0gCi1kaWZmIC0tZ2l0IGEvbGlieGZzL3hmc190eXBlcy5oIGIvbGlieGZzL3hmc190eXBlcy5oCi1pbmRleCA3MTc5MDlmMi4uMDIyMDE1OWIgMTAwNjQ0Ci0tLS0gYS9saWJ4ZnMveGZzX3R5cGVzLmgKLSsrKyBiL2xpYnhmcy94ZnNfdHlwZXMuaAotQEAgLTE4LDM0ICsxOCwzNCBAQAotICNpZm5kZWYgX19YRlNfVFlQRVNfSF9fCi0gI2RlZmluZQlfX1hGU19UWVBFU19IX18KLSAKLS10eXBlZGVmIF9fdWludDMyX3QJcHJpZF90OwkJLyogcHJvamVjdCBJRCAqLwotK3R5cGVkZWYgdWludDMyX3QJcHJpZF90OwkJLyogcHJvamVjdCBJRCAqLwotIAotLXR5cGVkZWYgX191aW50MzJfdAl4ZnNfYWdibG9ja190OwkvKiBibG9ja25vIGluIGFsbG9jLiBncm91cCAqLwotLXR5cGVkZWYJX191aW50MzJfdAl4ZnNfYWdpbm9fdDsJLyogaW5vZGUgIyB3aXRoaW4gYWxsb2NhdGlvbiBncnAgKi8KLS10eXBlZGVmCV9fdWludDMyX3QJeGZzX2V4dGxlbl90OwkvKiBleHRlbnQgbGVuZ3RoIGluIGJsb2NrcyAqLwotLXR5cGVkZWYJX191aW50MzJfdAl4ZnNfYWdudW1iZXJfdDsJLyogYWxsb2NhdGlvbiBncm91cCBudW1iZXIgKi8KLS10eXBlZGVmIF9faW50MzJfdAl4ZnNfZXh0bnVtX3Q7CS8qICMgb2YgZXh0ZW50cyBpbiBhIGZpbGUgKi8KLS10eXBlZGVmIF9faW50MTZfdAl4ZnNfYWV4dG51bV90OwkvKiAjIGV4dGVudHMgaW4gYW4gYXR0cmlidXRlIGZvcmsgKi8KLS10eXBlZGVmCV9faW50NjRfdAl4ZnNfZnNpemVfdDsJLyogYnl0ZXMgaW4gYSBmaWxlICovCi0tdHlwZWRlZiBfX3VpbnQ2NF90CXhmc191ZnNpemVfdDsJLyogdW5zaWduZWQgYnl0ZXMgaW4gYSBmaWxlICovCi0rdHlwZWRlZiB1aW50MzJfdAl4ZnNfYWdibG9ja190OwkvKiBibG9ja25vIGluIGFsbG9jLiBncm91cCAqLwotK3R5cGVkZWYgdWludDMyX3QJeGZzX2FnaW5vX3Q7CS8qIGlub2RlICMgd2l0aGluIGFsbG9jYXRpb24gZ3JwICovCi0rdHlwZWRlZiB1aW50MzJfdAl4ZnNfZXh0bGVuX3Q7CS8qIGV4dGVudCBsZW5ndGggaW4gYmxvY2tzICovCi0rdHlwZWRlZiB1aW50MzJfdAl4ZnNfYWdudW1iZXJfdDsJLyogYWxsb2NhdGlvbiBncm91cCBudW1iZXIgKi8KLSt0eXBlZGVmIGludDMyX3QJCXhmc19leHRudW1fdDsJLyogIyBvZiBleHRlbnRzIGluIGEgZmlsZSAqLwotK3R5cGVkZWYgaW50MTZfdAkJeGZzX2FleHRudW1fdDsJLyogIyBleHRlbnRzIGluIGFuIGF0dHJpYnV0ZSBmb3JrICovCi0rdHlwZWRlZiBpbnQ2NF90CQl4ZnNfZnNpemVfdDsJLyogYnl0ZXMgaW4gYSBmaWxlICovCi0rdHlwZWRlZiB1aW50NjRfdAl4ZnNfdWZzaXplX3Q7CS8qIHVuc2lnbmVkIGJ5dGVzIGluIGEgZmlsZSAqLwotIAotLXR5cGVkZWYJX19pbnQzMl90CXhmc19zdW1pbmZvX3Q7CS8qIHR5cGUgb2YgYml0bWFwIHN1bW1hcnkgaW5mbyAqLwotLXR5cGVkZWYJX19pbnQzMl90CXhmc19ydHdvcmRfdDsJLyogd29yZCB0eXBlIGZvciBiaXRtYXAgbWFuaXB1bGF0aW9ucyAqLwotK3R5cGVkZWYgaW50MzJfdAkJeGZzX3N1bWluZm9fdDsJLyogdHlwZSBvZiBiaXRtYXAgc3VtbWFyeSBpbmZvICovCi0rdHlwZWRlZiBpbnQzMl90CQl4ZnNfcnR3b3JkX3Q7CS8qIHdvcmQgdHlwZSBmb3IgYml0bWFwIG1hbmlwdWxhdGlvbnMgKi8KLSAKLS10eXBlZGVmCV9faW50NjRfdAl4ZnNfbHNuX3Q7CS8qIGxvZyBzZXF1ZW5jZSBudW1iZXIgKi8KLS10eXBlZGVmCV9faW50MzJfdAl4ZnNfdGlkX3Q7CS8qIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIgKi8KLSt0eXBlZGVmIGludDY0X3QJCXhmc19sc25fdDsJLyogbG9nIHNlcXVlbmNlIG51bWJlciAqLwotK3R5cGVkZWYgaW50MzJfdAkJeGZzX3RpZF90OwkvKiB0cmFuc2FjdGlvbiBpZGVudGlmaWVyICovCi0gCi0tdHlwZWRlZglfX3VpbnQzMl90CXhmc19kYWJsa190OwkvKiBkaXIvYXR0ciBibG9jayBudW1iZXIgKGluIGZpbGUpICovCi0tdHlwZWRlZglfX3VpbnQzMl90CXhmc19kYWhhc2hfdDsJLyogZGlyL2F0dHIgaGFzaCB2YWx1ZSAqLwotK3R5cGVkZWYgdWludDMyX3QJeGZzX2RhYmxrX3Q7CS8qIGRpci9hdHRyIGJsb2NrIG51bWJlciAoaW4gZmlsZSkgKi8KLSt0eXBlZGVmIHVpbnQzMl90CXhmc19kYWhhc2hfdDsJLyogZGlyL2F0dHIgaGFzaCB2YWx1ZSAqLwotIAotLXR5cGVkZWYJX191aW50NjRfdAl4ZnNfZnNibG9ja190OwkvKiBibG9ja25vIGluIGZpbGVzeXN0ZW0gKGFnbm98YWdibm8pICovCi0tdHlwZWRlZiBfX3VpbnQ2NF90CXhmc19yZnNibG9ja190OwkvKiBibG9ja25vIGluIGZpbGVzeXN0ZW0gKHJhdykgKi8KLS10eXBlZGVmIF9fdWludDY0X3QJeGZzX3J0YmxvY2tfdDsJLyogZXh0ZW50IChibG9jaykgaW4gcmVhbHRpbWUgYXJlYSAqLwotLXR5cGVkZWYgX191aW50NjRfdAl4ZnNfZmlsZW9mZl90OwkvKiBibG9jayBudW1iZXIgaW4gYSBmaWxlICovCi0tdHlwZWRlZiBfX3VpbnQ2NF90CXhmc19maWxibGtzX3Q7CS8qIG51bWJlciBvZiBibG9ja3MgaW4gYSBmaWxlICovCi0rdHlwZWRlZiB1aW50NjRfdAl4ZnNfZnNibG9ja190OwkvKiBibG9ja25vIGluIGZpbGVzeXN0ZW0gKGFnbm98YWdibm8pICovCi0rdHlwZWRlZiB1aW50NjRfdAl4ZnNfcmZzYmxvY2tfdDsJLyogYmxvY2tubyBpbiBmaWxlc3lzdGVtIChyYXcpICovCi0rdHlwZWRlZiB1aW50NjRfdAl4ZnNfcnRibG9ja190OwkvKiBleHRlbnQgKGJsb2NrKSBpbiByZWFsdGltZSBhcmVhICovCi0rdHlwZWRlZiB1aW50NjRfdAl4ZnNfZmlsZW9mZl90OwkvKiBibG9jayBudW1iZXIgaW4gYSBmaWxlICovCi0rdHlwZWRlZiB1aW50NjRfdAl4ZnNfZmlsYmxrc190OwkvKiBudW1iZXIgb2YgYmxvY2tzIGluIGEgZmlsZSAqLwotIAotLXR5cGVkZWYJX19pbnQ2NF90CXhmc19zcnRibG9ja190OwkvKiBzaWduZWQgdmVyc2lvbiBvZiB4ZnNfcnRibG9ja190ICovCi0tdHlwZWRlZiBfX2ludDY0X3QJeGZzX3NmaWxvZmZfdDsJLyogc2lnbmVkIGJsb2NrIG51bWJlciBpbiBhIGZpbGUgKi8KLSt0eXBlZGVmIGludDY0X3QJCXhmc19zcnRibG9ja190OwkvKiBzaWduZWQgdmVyc2lvbiBvZiB4ZnNfcnRibG9ja190ICovCi0rdHlwZWRlZiBpbnQ2NF90CQl4ZnNfc2ZpbG9mZl90OwkvKiBzaWduZWQgYmxvY2sgbnVtYmVyIGluIGEgZmlsZSAqLwotIAotIC8qCi0gICogTnVsbCB2YWx1ZXMgZm9yIHRoZSB0eXBlcy4KLUBAIC0xMjUsNyArMTI1LDcgQEAgc3RydWN0IHhmc19uYW1lIHsKLSAgKiB1aWRfdCBhbmQgZ2lkX3QgYXJlIGhhcmQtY29kZWQgdG8gMzIgYml0cyBpbiB0aGUgaW5vZGUuCi0gICogSGVuY2UsIGFuICdpZCcgaW4gYSBkcXVvdCBpcyAzMiBiaXRzLi4KLSAgKi8KLS10eXBlZGVmIF9fdWludDMyX3QJeGZzX2RxaWRfdDsKLSt0eXBlZGVmIHVpbnQzMl90CXhmc19kcWlkX3Q7Ci0gCi0gLyoKLSAgKiBDb25zdGFudHMgZm9yIGJpdCBtYW5pcHVsYXRpb25zLgotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvMDAwMS14ZnNwcm9ncy1yZW1vdmUtZG91YmxlLXVuZGVyc2NvcmUtaW50ZWdlci10eXBlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzLzAwMDEteGZzcHJvZ3MtcmVtb3ZlLWRvdWJsZS11bmRlcnNjb3JlLWludGVnZXItdHlwZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMDhmMGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvMDAwMS14ZnNwcm9ncy1yZW1vdmUtZG91YmxlLXVuZGVyc2NvcmUtaW50ZWdlci10eXBlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4MDAgKzAsMCBAQAotRnJvbSAxNGY4YjY4MTBiZDI0MGNjNTgxMzE0ODM3OTBhMDk5ZmNmNTZjMDczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkRhcnJpY2sgSi4gV29uZyIgPGRhcnJpY2sud29uZ0BvcmFjbGUuY29tPgotRGF0ZTogRnJpLCA0IEF1ZyAyMDE3IDE2OjMzOjUxIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHhmc3Byb2dzOiByZW1vdmUgZG91YmxlLXVuZGVyc2NvcmUgaW50ZWdlciB0eXBlcwotCi1UaGlzIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgcGF0Y2ggdGhhdCByZW1vdmVzIHRoZSBwcml2YXRlCi1fX3t1LH1pbnR7OCwxNiwzMiw2NH1fdCB0eXBlZGVmcyBpbiBmYXZvciBvZiB1c2luZyB0aGUgc3lzdGVtCi17dSx9aW50ezgsMTYsMzIsNjR9X3QgdHlwZWRlZnMuICBUaGlzIGlzIHRoZSBzZWQgc2NyaXB0IHVzZWQgdG8gcGVyZm9ybQotdGhlIHRyYW5zZm9ybWF0aW9uIGFuZCBmaXggdGhlIHJlc3VsdGluZyB3aGl0ZXNwYWNlIGFuZCBpbmRlbnRhdGlvbgotZXJyb3JzOgotCi1zL3R5cGVkZWZcdF9fdWludDhfdC90eXBlZGVmIF9fdWludDhfdFx0L2cKLXMvdHlwZWRlZlx0X191aW50L3R5cGVkZWYgX191aW50L2cKLXMvdHlwZWRlZlx0X19pbnRcKFswLTldKlwpX3QvdHlwZWRlZiBpbnRcMV90XHQvZwotcy9fX3VpbnQ4X3RcdC9fX3VpbnQ4X3RcdFx0L2cKLXMvX191aW50L3VpbnQvZwotcy9fX2ludFwoWzAtOV0qXClfdFx0L19faW50XDFfdFx0XHQvZwotcy9fX2ludC9pbnQvZwotL150eXBlZGVmLippbnRbMC05XSpfdDskL2QKLQotU2lnbmVkLW9mZi1ieTogRGFycmljayBKLiBXb25nIDxkYXJyaWNrLndvbmdAb3JhY2xlLmNvbT4KLVJldmlld2VkLWJ5OiBDYXJsb3MgTWFpb2xpbm8gPGNtYWlvbGlub0ByZWRoYXQuY29tPgotW3NhbmRlZW46IGZpeCB3aGl0ZXNwYWNlIGluY2lkZW50YWxzXQotUmV2aWV3ZWQtYnk6IERhcnJpY2sgSi4gV29uZyA8ZGFycmljay53b25nQG9yYWNsZS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBFcmljIFNhbmRlZW4gPHNhbmRlZW5Ac2FuZGVlbi5uZXQ+Ci0tLS0KLSBjb3B5L3hmc19jb3B5LmMgICAgICAgICAgIHwgMTQgKysrKy0tLS0tCi0gY29weS94ZnNfY29weS5oICAgICAgICAgICB8ICAyICstCi0gZGIvYXR0ci5jICAgICAgICAgICAgICAgICB8ICA4ICsrLS0tCi0gZGIvYXR0cnNob3J0LmMgICAgICAgICAgICB8ICA0ICstLQotIGRiL2JpdC5jICAgICAgICAgICAgICAgICAgfCAgNCArLS0KLSBkYi9iaXQuaCAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBkYi9ibG9jay5jICAgICAgICAgICAgICAgIHwgIDggKystLS0KLSBkYi9jaGVjay5jICAgICAgICAgICAgICAgIHwgMTggKysrKystLS0tLS0KLSBkYi9jb252ZXJ0LmMgICAgICAgICAgICAgIHwgMjggKysrKysrKystLS0tLS0tLS0KLSBkYi9mYWRkci5jICAgICAgICAgICAgICAgIHwgMTQgKysrKy0tLS0tCi0gZGIvZmllbGQuYyAgICAgICAgICAgICAgICB8IDQ0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIGRiL2ZwcmludC5jICAgICAgICAgICAgICAgfCAgOCArKy0tLQotIGRiL2ZyYWcuYyAgICAgICAgICAgICAgICAgfCAgOCArKy0tLQotIGRiL2lub2RlLmMgICAgICAgICAgICAgICAgfCAzNCArKysrKysrKysrLS0tLS0tLS0tLS0KLSBkYi9pby5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBkYi9pby5oICAgICAgICAgICAgICAgICAgIHwgIDYgKystLQotIGRiL21ldGFkdW1wLmMgICAgICAgICAgICAgfCAxMiArKysrLS0tLQotIGRiL3NiLmMgICAgICAgICAgICAgICAgICAgfCAgNiArKy0tCi0gZnNyL3hmc19mc3IuYyAgICAgICAgICAgICB8ICAyICstCi0gaW5jbHVkZS9kYXJ3aW4uaCAgICAgICAgICB8IDE4ICsrKysrLS0tLS0tCi0gaW5jbHVkZS9mcmVlYnNkLmggICAgICAgICB8ICA2ICsrLS0KLSBpbmNsdWRlL2dudWtmcmVlYnNkLmggICAgIHwgIDYgKystLQotIGluY2x1ZGUvbGlieGNtZC5oICAgICAgICAgfCAgNiArKy0tCi0gaW5jbHVkZS9saW51eC5oICAgICAgICAgICB8ICA4ICsrLS0tCi0gaW5jbHVkZS94ZnNfYXJjaC5oICAgICAgICB8IDIyICsrKysrKystLS0tLS0tCi0gaW5jbHVkZS94ZnNfaW5vZGUuaCAgICAgICB8ICA0ICstLQotIGluY2x1ZGUveGZzX2xvZ19yZWNvdmVyLmggfCAgMiArLQotIGluY2x1ZGUveGZzX21ldGFkdW1wLmggICAgfCAgNCArLS0KLSBpbmNsdWRlL3hmc19tb3VudC5oICAgICAgIHwgMjIgKysrKysrKy0tLS0tLS0KLSBsaWJoYW5kbGUvaGFuZGxlLmMgICAgICAgIHwgIDIgKy0KLSBsaWJoYW5kbGUvamRtLmMgICAgICAgICAgIHwgIDIgKy0KLSBsaWJ4Y21kL3RvcG9sb2d5LmMgICAgICAgIHwgMTQgKysrKy0tLS0tCi0gbGlieGZzL2Rhcndpbi5jICAgICAgICAgICB8ICAyICstCi0gbGlieGZzL2ZyZWVic2QuYyAgICAgICAgICB8ICAyICstCi0gbGlieGZzL2luaXQuYyAgICAgICAgICAgICB8ICAyICstCi0gbGlieGZzL2lyaXguYyAgICAgICAgICAgICB8ICAyICstCi0gbGlieGZzL2xpYnhmc19wcml2LmggICAgICB8ICA0ICstLQotIGxpYnhmcy9saW51eC5jICAgICAgICAgICAgfCAgMiArLQotIGxpYnhmcy9sb2dpdGVtLmMgICAgICAgICAgfCAgMiArLQotIGxpYnhmcy9yYWRpeC10cmVlLmMgICAgICAgfCAgOCArKy0tLQotIGxpYnhmcy9yZHdyLmMgICAgICAgICAgICAgfCAgNiArKy0tCi0gbGlieGZzL3V0aWwuYyAgICAgICAgICAgICB8ICA4ICsrLS0tCi0gbG9ncHJpbnQvbG9nX21pc2MuYyAgICAgICB8ICA2ICsrLS0KLSBtZHJlc3RvcmUveGZzX21kcmVzdG9yZS5jIHwgIDIgKy0KLSBta2ZzL3Byb3RvLmMgICAgICAgICAgICAgIHwgIDIgKy0KLSBta2ZzL3hmc19ta2ZzLmMgICAgICAgICAgIHwgNzYgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBxdW90YS9lZGl0LmMgICAgICAgICAgICAgIHwgNjQgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcXVvdGEvZnJlZS5jICAgICAgICAgICAgICB8IDQ0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIHF1b3RhL3F1b3QuYyAgICAgICAgICAgICAgfCAyNCArKysrKysrLS0tLS0tLS0KLSBxdW90YS9xdW90YS5jICAgICAgICAgICAgIHwgIDQgKy0tCi0gcXVvdGEvcXVvdGEuaCAgICAgICAgICAgICB8IDEyICsrKystLS0tCi0gcXVvdGEvcmVwb3J0LmMgICAgICAgICAgICB8ICA0ICstLQotIHF1b3RhL3N0YXRlLmMgICAgICAgICAgICAgfCAgMiArLQotIHF1b3RhL3V0aWwuYyAgICAgICAgICAgICAgfCA2NiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVwYWlyL1JFQURNRSAgICAgICAgICAgICB8ICAyICstCi0gcmVwYWlyL2FnaGVhZGVyLmggICAgICAgICB8IDE0ICsrKystLS0tLQotIHJlcGFpci9hdHRyX3JlcGFpci5oICAgICAgfCAyNiArKysrKysrKy0tLS0tLS0tCi0gcmVwYWlyL2F2bDY0LmMgICAgICAgICAgICB8IDM4ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIHJlcGFpci9hdmw2NC5oICAgICAgICAgICAgfCAxOCArKysrKy0tLS0tLQotIHJlcGFpci9kaW5vZGUuYyAgICAgICAgICAgfCAzOCArKysrKysrKysrKystLS0tLS0tLS0tLS0KLSByZXBhaXIvZGlub2RlLmggICAgICAgICAgIHwgIDQgKy0tCi0gcmVwYWlyL2RpcjIuYyAgICAgICAgICAgICB8ICAyICstCi0gcmVwYWlyL2dsb2JhbHMuaCAgICAgICAgICB8IDE4ICsrKysrLS0tLS0tCi0gcmVwYWlyL2luY29yZS5jICAgICAgICAgICB8IDEwICsrKy0tLS0KLSByZXBhaXIvaW5jb3JlLmggICAgICAgICAgIHwgNDYgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIHJlcGFpci9pbmNvcmVfZXh0LmMgICAgICAgfCAgNiArKy0tCi0gcmVwYWlyL2luY29yZV9pbm8uYyAgICAgICB8IDcyICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVwYWlyL3BoYXNlMi5jICAgICAgICAgICB8ICAyICstCi0gcmVwYWlyL3BoYXNlMy5jICAgICAgICAgICB8ICA2ICsrLS0KLSByZXBhaXIvcGhhc2U0LmMgICAgICAgICAgIHwgIDQgKy0tCi0gcmVwYWlyL3BoYXNlNS5jICAgICAgICAgICB8IDI4ICsrKysrKysrLS0tLS0tLS0tCi0gcmVwYWlyL3BoYXNlNi5jICAgICAgICAgICB8IDE2ICsrKysrLS0tLS0KLSByZXBhaXIvcGhhc2U3LmMgICAgICAgICAgIHwgIDYgKystLQotIHJlcGFpci9wcm9ncmVzcy5jICAgICAgICAgfCAzMCArKysrKysrKystLS0tLS0tLS0tCi0gcmVwYWlyL3Byb2dyZXNzLmggICAgICAgICB8ICA0ICstLQotIHJlcGFpci9ybWFwLmMgICAgICAgICAgICAgfCAxOCArKysrKy0tLS0tLQotIHJlcGFpci9ybWFwLmggICAgICAgICAgICAgfCAgMiArLQotIHJlcGFpci9zYi5jICAgICAgICAgICAgICAgfCAyNCArKysrKysrLS0tLS0tLS0KLSByZXBhaXIvc2Nhbi5jICAgICAgICAgICAgIHwgNTAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQotIHJlcGFpci9zY2FuLmggICAgICAgICAgICAgfCAxMiArKysrLS0tLQotIDgwIGZpbGVzIGNoYW5nZWQsIDU5MCBpbnNlcnRpb25zKCspLCA1OTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb3B5L3hmc19jb3B5LmMgYi9jb3B5L3hmc19jb3B5LmMKLWluZGV4IGE3ZGE4MjRmLi4zM2UwNWRmZCAxMDA2NDQKLS0tLSBhL2NvcHkveGZzX2NvcHkuYwotKysrIGIvY29weS94ZnNfY29weS5jCi1AQCAtNDMsNyArNDMsNyBAQCB1bnNpZ25lZCBpbnQJc291cmNlX3NlY3RvcnNpemU7CS8qIHNvdXJjZSBkaXNrIHNlY3RvcnNpemUgKi8KLSAKLSB4ZnNfYWdibG9ja190CWZpcnN0X2FnYm5vOwotIAotLV9fdWludDY0X3QJYmFyY291bnRbMTFdOwotK3VpbnQ2NF90CWJhcmNvdW50WzExXTsKLSAKLSB1bnNpZ25lZCBpbnQJbnVtX3RhcmdldHM7Ci0gdGFyZ2V0X2NvbnRyb2wJKnRhcmdldDsKLUBAIC0zMTMsNyArMzEzLDcgQEAgdXNhZ2Uodm9pZCkKLSB9Ci0gCi0gdm9pZAotLWluaXRfYmFyKF9fdWludDY0X3Qgc291cmNlX2Jsb2NrcykKLStpbml0X2Jhcih1aW50NjRfdCBzb3VyY2VfYmxvY2tzKQotIHsKLSAJaW50CWk7Ci0gCi1AQCAtMzIyLDcgKzMyMiw3IEBAIGluaXRfYmFyKF9fdWludDY0X3Qgc291cmNlX2Jsb2NrcykKLSB9Ci0gCi0gaW50Ci0tYnVtcF9iYXIoaW50IHRlbnRocywgX191aW50NjRfdCBudW1ibG9ja3MpCi0rYnVtcF9iYXIoaW50IHRlbnRocywgdWludDY0X3QgbnVtYmxvY2tzKQotIHsKLSAJc3RhdGljIGNoYXIgKmJhclsxMV0gPSB7Ci0gCQkiIDAlICIsCi1AQCAtNTM0LDggKzUzNCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAl4ZnNfb2ZmX3QJcG9zOwotIAlzaXplX3QJCWxlbmd0aDsKLSAJaW50CQljOwotLQlfX3VpbnQ2NF90CXNpemUsIHNpemViOwotLQlfX3VpbnQ2NF90CW51bWJsb2NrcyA9IDA7Ci0rCXVpbnQ2NF90CXNpemUsIHNpemViOwotKwl1aW50NjRfdAludW1ibG9ja3MgPSAwOwotIAlpbnQJCXdibG9ja3MgPSAwOwotIAlpbnQJCW51bV90aHJlYWRzID0gMDsKLSAJc3RydWN0IGRpb2F0dHIJZDsKLUBAIC05NTEsOCArOTUxLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCW51bV9hZ3MgPSBtcC0+bV9zYi5zYl9hZ2NvdW50OwotIAotIAlpbml0X2JhcihtcC0+bV9zYi5zYl9ibG9ja3NpemUgLyBCQlNJWkUKLS0JCQkqICgoX191aW50NjRfdCltcC0+bV9zYi5zYl9kYmxvY2tzCi0tCQkJICAgIC0gKF9fdWludDY0X3QpbXAtPm1fc2Iuc2JfZmRibG9ja3MgKyAxMCAqIG51bV9hZ3MpKTsKLSsJCQkqICgodWludDY0X3QpbXAtPm1fc2Iuc2JfZGJsb2NrcwotKwkJCSAgICAtICh1aW50NjRfdCltcC0+bV9zYi5zYl9mZGJsb2NrcyArIDEwICogbnVtX2FncykpOwotIAotIAlraWRzID0gbnVtX3RhcmdldHM7Ci0gCi1kaWZmIC0tZ2l0IGEvY29weS94ZnNfY29weS5oIGIvY29weS94ZnNfY29weS5oCi1pbmRleCAyNzM3MDY4OC4uNTNjNmU0MmMgMTAwNjQ0Ci0tLS0gYS9jb3B5L3hmc19jb3B5LmgKLSsrKyBiL2NvcHkveGZzX2NvcHkuaAotQEAgLTc2LDcgKzc2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewotIAotIHR5cGVkZWYgaW50IHRocmVhZF9pZDsKLSB0eXBlZGVmIGludCB0bV9pbmRleDsJCQkvKiBpbmRleCBpbnRvIHRocmVhZCBtYXNrIGFycmF5ICovCi0tdHlwZWRlZiBfX3VpbnQzMl90IHRocmVhZF9tYXNrOwkJLyogYSB0aHJlYWQgbWFzayAqLwotK3R5cGVkZWYgdWludDMyX3QgdGhyZWFkX21hc2s7CQkvKiBhIHRocmVhZCBtYXNrICovCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgewotIAljaGFyCQkqbmFtZTsKLWRpZmYgLS1naXQgYS9kYi9hdHRyLmMgYi9kYi9hdHRyLmMKLWluZGV4IDMxNTM2YThiLi4yM2ZmY2Q1ZiAxMDA2NDQKLS0tLSBhL2RiL2F0dHIuYwotKysrIGIvZGIvYXR0ci5jCi1AQCAtNzcsMTYgKzc3LDE2IEBAIGNvbnN0IGZpZWxkX3QJYXR0cl9sZWFmX2VudHJ5X2ZsZHNbXSA9IHsKLSAJeyAibmFtZWlkeCIsIEZMRFRfVUlOVDE2RCwgT0koTEVPRkYobmFtZWlkeCkpLCBDMSwgMCwgVFlQX05PTkUgfSwKLSAJeyAiZmxhZ3MiLCBGTERUX1VJTlQ4WCwgT0koTEVPRkYoZmxhZ3MpKSwgQzEsIEZMRF9TS0lQQUxMLCBUWVBfTk9ORSB9LAotIAl7ICJpbmNvbXBsZXRlIiwgRkxEVF9VSU5UMSwKLS0JICBPSShMRU9GRihmbGFncykgKyBiaXRzeihfX3VpbnQ4X3QpIC0gWEZTX0FUVFJfSU5DT01QTEVURV9CSVQgLSAxKSwgQzEsCi0rCSAgT0koTEVPRkYoZmxhZ3MpICsgYml0c3oodWludDhfdCkgLSBYRlNfQVRUUl9JTkNPTVBMRVRFX0JJVCAtIDEpLCBDMSwKLSAJICAwLCBUWVBfTk9ORSB9LAotIAl7ICJyb290IiwgRkxEVF9VSU5UMSwKLS0JICBPSShMRU9GRihmbGFncykgKyBiaXRzeihfX3VpbnQ4X3QpIC0gWEZTX0FUVFJfUk9PVF9CSVQgLSAxKSwgQzEsIDAsCi0rCSAgT0koTEVPRkYoZmxhZ3MpICsgYml0c3oodWludDhfdCkgLSBYRlNfQVRUUl9ST09UX0JJVCAtIDEpLCBDMSwgMCwKLSAJICBUWVBfTk9ORSB9LAotIAl7ICJzZWN1cmUiLCBGTERUX1VJTlQxLAotLQkgIE9JKExFT0ZGKGZsYWdzKSArIGJpdHN6KF9fdWludDhfdCkgLSBYRlNfQVRUUl9TRUNVUkVfQklUIC0gMSksIEMxLCAwLAotKwkgIE9JKExFT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQ4X3QpIC0gWEZTX0FUVFJfU0VDVVJFX0JJVCAtIDEpLCBDMSwgMCwKLSAJICBUWVBfTk9ORSB9LAotIAl7ICJsb2NhbCIsIEZMRFRfVUlOVDEsCi0tCSAgT0koTEVPRkYoZmxhZ3MpICsgYml0c3ooX191aW50OF90KSAtIFhGU19BVFRSX0xPQ0FMX0JJVCAtIDEpLCBDMSwgMCwKLSsJICBPSShMRU9GRihmbGFncykgKyBiaXRzeih1aW50OF90KSAtIFhGU19BVFRSX0xPQ0FMX0JJVCAtIDEpLCBDMSwgMCwKLSAJICBUWVBfTk9ORSB9LAotIAl7ICJwYWQyIiwgRkxEVF9VSU5UOFgsIE9JKExFT0ZGKHBhZDIpKSwgQzEsIEZMRF9TS0lQQUxMLCBUWVBfTk9ORSB9LAotIAl7IE5VTEwgfQotZGlmZiAtLWdpdCBhL2RiL2F0dHJzaG9ydC5jIGIvZGIvYXR0cnNob3J0LmMKLWluZGV4IGQ4MjU1OWNjLi4yZWYzNThmNSAxMDA2NDQKLS0tLSBhL2RiL2F0dHJzaG9ydC5jCi0rKysgYi9kYi9hdHRyc2hvcnQuYwotQEAgLTUxLDEwICs1MSwxMCBAQCBjb25zdCBmaWVsZF90CWF0dHJfc2ZfZW50cnlfZmxkc1tdID0gewotIAl7ICJ2YWx1ZWxlbiIsIEZMRFRfVUlOVDhELCBPSShFT0ZGKHZhbHVlbGVuKSksIEMxLCAwLCBUWVBfTk9ORSB9LAotIAl7ICJmbGFncyIsIEZMRFRfVUlOVDhYLCBPSShFT0ZGKGZsYWdzKSksIEMxLCBGTERfU0tJUEFMTCwgVFlQX05PTkUgfSwKLSAJeyAicm9vdCIsIEZMRFRfVUlOVDEsCi0tCSAgT0koRU9GRihmbGFncykgKyBiaXRzeihfX3VpbnQ4X3QpIC0gWEZTX0FUVFJfUk9PVF9CSVQgLSAxKSwgQzEsIDAsCi0rCSAgT0koRU9GRihmbGFncykgKyBiaXRzeih1aW50OF90KSAtIFhGU19BVFRSX1JPT1RfQklUIC0gMSksIEMxLCAwLAotIAkgIFRZUF9OT05FIH0sCi0gCXsgInNlY3VyZSIsIEZMRFRfVUlOVDEsCi0tCSAgT0koRU9GRihmbGFncykgKyBiaXRzeihfX3VpbnQ4X3QpIC0gWEZTX0FUVFJfU0VDVVJFX0JJVCAtIDEpLCBDMSwgMCwKLSsJICBPSShFT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQ4X3QpIC0gWEZTX0FUVFJfU0VDVVJFX0JJVCAtIDEpLCBDMSwgMCwKLSAJICBUWVBfTk9ORSB9LAotIAl7ICJuYW1lIiwgRkxEVF9DSEFSTlMsIE9JKEVPRkYobmFtZXZhbCkpLCBhdHRyX3NmX2VudHJ5X25hbWVfY291bnQsCi0gCSAgRkxEX0NPVU5ULCBUWVBfTk9ORSB9LAotZGlmZiAtLWdpdCBhL2RiL2JpdC5jIGIvZGIvYml0LmMKLWluZGV4IDI0ODcyYmY3Li5mNWViZjY4MSAxMDA2NDQKLS0tLSBhL2RiL2JpdC5jCi0rKysgYi9kYi9iaXQuYwotQEAgLTYwLDcgKzYwLDcgQEAgc2V0Yml0KAotIAl9Ci0gfQotIAotLV9faW50NjRfdAotK2ludDY0X3QKLSBnZXRiaXR2YWwoCi0gCXZvaWQJCSpvYmosCi0gCWludAkJYml0b2ZmLAotQEAgLTcwLDcgKzcwLDcgQEAgZ2V0Yml0dmFsKAotIAlpbnQJCWJpdDsKLSAJaW50CQlpOwotIAljaGFyCQkqcDsKLS0JX19pbnQ2NF90CXJ2YWw7Ci0rCWludDY0X3QJCXJ2YWw7Ci0gCWludAkJc2lnbmV4dDsKLSAJaW50CQl6MSwgejIsIHozLCB6NDsKLSAKLWRpZmYgLS1naXQgYS9kYi9iaXQuaCBiL2RiL2JpdC5oCi1pbmRleCA4MGJhMjRjNC4uOWZkNzFmNGIgMTAwNjQ0Ci0tLS0gYS9kYi9iaXQuaAotKysrIGIvZGIvYml0LmgKLUBAIC0yNSw1ICsyNSw1IEBACi0gI2RlZmluZQlCVlVOU0lHTkVECTAKLSAjZGVmaW5lCUJWU0lHTkVECTEKLSAKLS1leHRlcm4gX19pbnQ2NF90CWdldGJpdHZhbCh2b2lkICpvYmosIGludCBiaXRvZmYsIGludCBuYml0cywgaW50IGZsYWdzKTsKLStleHRlcm4gaW50NjRfdAkJZ2V0Yml0dmFsKHZvaWQgKm9iaiwgaW50IGJpdG9mZiwgaW50IG5iaXRzLCBpbnQgZmxhZ3MpOwotIGV4dGVybiB2b2lkICAgICAgICAgICAgIHNldGJpdHZhbCh2b2lkICpvYnVmLCBpbnQgYml0b2ZmLCBpbnQgbmJpdHMsIHZvaWQgKmlidWYpOwotZGlmZiAtLWdpdCBhL2RiL2Jsb2NrLmMgYi9kYi9ibG9jay5jCi1pbmRleCA0YTM1N2NlZC4uNWVjZDY4N2EgMTAwNjQ0Ci0tLS0gYS9kYi9ibG9jay5jCi0rKysgYi9kYi9ibG9jay5jCi1AQCAtOTgsNyArOTgsNyBAQCBhYmxvY2tfZigKLSAJfQotIAlkZnNibm8gPSBibS5zdGFydGJsb2NrICsgKGJubyAtIGJtLnN0YXJ0b2ZmKTsKLSAJQVNTRVJUKHR5cHRhYltUWVBfQVRUUl0udHlwbm0gPT0gVFlQX0FUVFIpOwotLQlzZXRfY3VyKCZ0eXB0YWJbVFlQX0FUVFJdLCAoX19pbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksCi0rCXNldF9jdXIoJnR5cHRhYltUWVBfQVRUUl0sIChpbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksCi0gCQlibGtiYiwgREJfUklOR19BREQsIE5VTEwpOwotIAlyZXR1cm4gMDsKLSB9Ci1AQCAtMTI4LDE0ICsxMjgsMTQgQEAgZGFkZHJfZigKLSAJaW50CQlhcmdjLAotIAljaGFyCQkqKmFyZ3YpCi0gewotLQlfX2ludDY0X3QJZDsKLSsJaW50NjRfdAkJZDsKLSAJY2hhcgkJKnA7Ci0gCi0gCWlmIChhcmdjID09IDEpIHsKLSAJCWRicHJpbnRmKF8oImN1cnJlbnQgZGFkZHIgaXMgJWxsZFxuIiksIGlvY3VyX3RvcC0+b2ZmID4+IEJCU0hJRlQpOwotIAkJcmV0dXJuIDA7Ci0gCX0KLS0JZCA9IChfX2ludDY0X3Qpc3RydG91bGwoYXJndlsxXSwgJnAsIDApOwotKwlkID0gKGludDY0X3Qpc3RydG91bGwoYXJndlsxXSwgJnAsIDApOwotIAlpZiAoKnAgIT0gJ1wwJyB8fAotIAkgICAgZCA+PSBtcC0+bV9zYi5zYl9kYmxvY2tzIDw8IChtcC0+bV9zYi5zYl9ibG9ja2xvZyAtIEJCU0hJRlQpKSB7Ci0gCQlkYnByaW50ZihfKCJiYWQgZGFkZHIgJXNcbiIpLCBhcmd2WzFdKTsKLUBAIC0xOTcsNyArMTk3LDcgQEAgZGJsb2NrX2YoCi0gCUFTU0VSVCh0eXB0YWJbdHlwZV0udHlwbm0gPT0gdHlwZSk7Ci0gCWlmIChuZXggPiAxKQotIAkJbWFrZV9iYm1hcCgmYmJtYXAsIG5leCwgYm1wKTsKLS0Jc2V0X2N1cigmdHlwdGFiW3R5cGVdLCAoX19pbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksCi0rCXNldF9jdXIoJnR5cHRhYlt0eXBlXSwgKGludDY0X3QpWEZTX0ZTQl9UT19EQUREUihtcCwgZGZzYm5vKSwKLSAJCW5iICogYmxrYmIsIERCX1JJTkdfQURELCBuZXggPiAxID8gJmJibWFwIDogTlVMTCk7Ci0gCWZyZWUoYm1wKTsKLSAJcmV0dXJuIDA7Ci1kaWZmIC0tZ2l0IGEvZGIvY2hlY2suYyBiL2RiL2NoZWNrLmMKLWluZGV4IDhlNjE4YTIzLi44MWJhNjNhNiAxMDA2NDQKLS0tLSBhL2RiL2NoZWNrLmMKLSsrKyBiL2RiL2NoZWNrLmMKLUBAIC0xMTQsOCArMTE0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgZGlyaGFzaCB7Ci0gCi0gc3RhdGljIHhmc19leHRsZW5fdAlhZ2ZmcmVlYmxrczsKLSBzdGF0aWMgeGZzX2V4dGxlbl90CWFnZmxvbmdlc3Q7Ci0tc3RhdGljIF9fdWludDY0X3QJYWdmX2FnZ3JfZnJlZWJsa3M7CS8qIGFnZ3JlZ2F0ZSBjb3VudCBvdmVyIGFsbCAqLwotLXN0YXRpYyBfX3VpbnQzMl90CWFnZmJ0cmVlYmxrczsKLStzdGF0aWMgdWludDY0X3QJYWdmX2FnZ3JfZnJlZWJsa3M7CS8qIGFnZ3JlZ2F0ZSBjb3VudCBvdmVyIGFsbCAqLwotK3N0YXRpYyB1aW50MzJfdAlhZ2ZidHJlZWJsa3M7Ci0gc3RhdGljIGludAkJbGF6eWNvdW50OwotIHN0YXRpYyB4ZnNfYWdpbm9fdAlhZ2ljb3VudDsKLSBzdGF0aWMgeGZzX2FnaW5vX3QJYWdpZnJlZWNvdW50OwotQEAgLTEyNCwxMCArMTI0LDEwIEBAIHN0YXRpYyBpbnQJCWJsaXN0X3NpemU7Ci0gc3RhdGljIGNoYXIJCSoqZGJtYXA7CS8qIHJlYWxseSBkYm1fdDo4ICovCi0gc3RhdGljIGRpcmhhc2hfdAkqKmRpcmhhc2g7Ci0gc3RhdGljIGludAkJZXJyb3I7Ci0tc3RhdGljIF9fdWludDY0X3QJZmRibG9ja3M7Ci0tc3RhdGljIF9fdWludDY0X3QJZnJleHRlbnRzOwotLXN0YXRpYyBfX3VpbnQ2NF90CWljb3VudDsKLS1zdGF0aWMgX191aW50NjRfdAlpZnJlZTsKLStzdGF0aWMgdWludDY0X3QJZmRibG9ja3M7Ci0rc3RhdGljIHVpbnQ2NF90CWZyZXh0ZW50czsKLStzdGF0aWMgdWludDY0X3QJaWNvdW50OwotK3N0YXRpYyB1aW50NjRfdAlpZnJlZTsKLSBzdGF0aWMgaW5vZGF0YV90CSoqKmlub2RhdGE7Ci0gc3RhdGljIGludAkJaW5vZGF0YV9oYXNoX3NpemU7Ci0gc3RhdGljIGlub2RhdGFfdAkqKippbm9tYXA7Ci1AQCAtMTE4Nyw3ICsxMTg3LDcgQEAgYmxvY2t0cmFzaF9mKAotIAkJZ290byBvdXQ7Ci0gCX0KLSAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLS0JCXJhbmRiID0gKHhmc19yZnNibG9ja190KSgoKChfX2ludDY0X3QpcmFuZG9tKCkgPDwgMzIpIHwKLSsJCXJhbmRiID0gKHhmc19yZnNibG9ja190KSgoKChpbnQ2NF90KXJhbmRvbSgpIDw8IDMyKSB8Ci0gCQkJCQkgcmFuZG9tKCkpICUgYmxvY2tzKTsKLSAJCWZvciAoYmkgPSAwLCBhZ25vID0gMCwgZG9uZSA9IDA7Ci0gCQkgICAgICFkb25lICYmIGFnbm8gPCBtcC0+bV9zYi5zYl9hZ2NvdW50OwotQEAgLTMwMzIsNyArMzAzMiw3IEBAIHByb2Nlc3NfbGVhZl9ub2RlX2Rpcl92MigKLSAJCX0KLSAJCWlmICh2KQotIAkJCWRicHJpbnRmKF8oImRpciBpbm9kZSAlbGxkIGJsb2NrICV1PSVsbHVcbiIpLCBpZC0+aW5vLAotLQkJCQkoX191aW50MzJfdClkYm5vLAotKwkJCQkodWludDMyX3QpZGJubywKLSAJCQkJKHhmc19mc2Jsb2NrX3QpYm1wLT5zdGFydGJsb2NrKTsKLSAJCXB1c2hfY3VyKCk7Ci0gCQlpZiAobmV4ID4gMSkKLUBAIC0zMDQ1LDcgKzMwNDUsNyBAQCBwcm9jZXNzX2xlYWZfbm9kZV9kaXJfdjIoCi0gCQkJaWYgKCFzZmxhZyB8fCB2KQotIAkJCQlkYnByaW50ZihfKCJjYW4ndCByZWFkIGJsb2NrICV1IGZvciBkaXJlY3RvcnkgIgotIAkJCQkJICJpbm9kZSAlbGxkXG4iKSwKLS0JCQkJCShfX3VpbnQzMl90KWRibm8sIGlkLT5pbm8pOwotKwkJCQkJKHVpbnQzMl90KWRibm8sIGlkLT5pbm8pOwotIAkJCWVycm9yKys7Ci0gCQkJcG9wX2N1cigpOwotIAkJCWRibm8gKz0gbXAtPm1fZGlyX2dlby0+ZnNiY291bnQgLSAxOwotZGlmZiAtLWdpdCBhL2RiL2NvbnZlcnQuYyBiL2RiL2NvbnZlcnQuYwotaW5kZXggYTMzN2FiZWEuLmZhNGY5NjIzIDEwMDY0NAotLS0tIGEvZGIvY29udmVydC5jCi0rKysgYi9kYi9jb252ZXJ0LmMKLUBAIC0yNCwxMyArMjQsMTMgQEAKLSAKLSAjZGVmaW5lCU0oQSkJKDEgPDwgQ1RfICMjIEEpCi0gI2RlZmluZQlhZ2Jsb2NrX3RvX2J5dGVzKHgpCVwKLS0JKChfX3VpbnQ2NF90KSh4KSA8PCBtcC0+bV9zYi5zYl9ibG9ja2xvZykKLSsJKCh1aW50NjRfdCkoeCkgPDwgbXAtPm1fc2Iuc2JfYmxvY2tsb2cpCi0gI2RlZmluZQlhZ2lub190b19ieXRlcyh4KQlcCi0tCSgoX191aW50NjRfdCkoeCkgPDwgbXAtPm1fc2Iuc2JfaW5vZGVsb2cpCi0rCSgodWludDY0X3QpKHgpIDw8IG1wLT5tX3NiLnNiX2lub2RlbG9nKQotICNkZWZpbmUJYWdudW1iZXJfdG9fYnl0ZXMoeCkJXAotLQlhZ2Jsb2NrX3RvX2J5dGVzKChfX3VpbnQ2NF90KSh4KSAqIG1wLT5tX3NiLnNiX2FnYmxvY2tzKQotKwlhZ2Jsb2NrX3RvX2J5dGVzKCh1aW50NjRfdCkoeCkgKiBtcC0+bV9zYi5zYl9hZ2Jsb2NrcykKLSAjZGVmaW5lCWRhZGRyX3RvX2J5dGVzKHgpCVwKLS0JKChfX3VpbnQ2NF90KSh4KSA8PCBCQlNISUZUKQotKwkoKHVpbnQ2NF90KSh4KSA8PCBCQlNISUZUKQotICNkZWZpbmUJZnNibG9ja190b19ieXRlcyh4KQlcCi0gCShhZ251bWJlcl90b19ieXRlcyhYRlNfRlNCX1RPX0FHTk8obXAsICh4KSkpICsgXAotIAkgYWdibG9ja190b19ieXRlcyhYRlNfRlNCX1RPX0FHQk5PKG1wLCAoeCkpKSkKLUBAIC0zOCw3ICszOCw3IEBACi0gCShhZ251bWJlcl90b19ieXRlcyhYRlNfSU5PX1RPX0FHTk8obXAsICh4KSkpICsgXAotIAkgYWdpbm9fdG9fYnl0ZXMoWEZTX0lOT19UT19BR0lOTyhtcCwgKHgpKSkpCi0gI2RlZmluZQlpbm9pZHhfdG9fYnl0ZXMoeCkJXAotLQkoKF9fdWludDY0X3QpKHgpIDw8IG1wLT5tX3NiLnNiX2lub2RlbG9nKQotKwkoKHVpbnQ2NF90KSh4KSA8PCBtcC0+bV9zYi5zYl9pbm9kZWxvZykKLSAKLSB0eXBlZGVmIGVudW0gewotIAlDVF9OT05FID0gLTEsCi1AQCAtNjgsNyArNjgsNyBAQCB0eXBlZGVmIHVuaW9uIHsKLSAJeGZzX2FnbnVtYmVyX3QJYWdudW1iZXI7Ci0gCWludAkJYmJvZmY7Ci0gCWludAkJYmxrb2ZmOwotLQlfX3VpbnQ2NF90CWJ5dGU7Ci0rCXVpbnQ2NF90CWJ5dGU7Ci0gCXhmc19kYWRkcl90CWRhZGRyOwotIAl4ZnNfZnNibG9ja190CWZzYmxvY2s7Ci0gCXhmc19pbm9fdAlpbm87Ci1AQCAtNzYsNyArNzYsNyBAQCB0eXBlZGVmIHVuaW9uIHsKLSAJaW50CQlpbm9vZmY7Ci0gfSBjdmFsX3Q7Ci0gCi0tc3RhdGljIF9fdWludDY0X3QJCWJ5dGV2YWx1ZShjdHlwZV90IGN0eXBlLCBjdmFsX3QgKnZhbCk7Ci0rc3RhdGljIHVpbnQ2NF90CQlieXRldmFsdWUoY3R5cGVfdCBjdHlwZSwgY3ZhbF90ICp2YWwpOwotIHN0YXRpYyBpbnQJCWNvbnZlcnRfZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwotIHN0YXRpYyBpbnQJCWdldHZhbHVlKGNoYXIgKnMsIGN0eXBlX3QgY3R5cGUsIGN2YWxfdCAqdmFsKTsKLSBzdGF0aWMgY3R5cGVfdAkJbG9va3VwY3R5KGNoYXIgKmN0eW5hbWUpOwotQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgY29uc3QgY21kaW5mb190CWNvbnZlcnRfY21kID0KLSAJeyAiY29udmVydCIsIE5VTEwsIGNvbnZlcnRfZiwgMywgOSwgMCwgInR5cGUgbnVtIFt0eXBlIG51bV0uLi4gdHlwZSIsCi0gCSAgImNvbnZlcnQgZnJvbSBvbmUgYWRkcmVzcyBmb3JtIHRvIGFub3RoZXIiLCBOVUxMIH07Ci0gCi0tc3RhdGljIF9fdWludDY0X3QKLStzdGF0aWMgdWludDY0X3QKLSBieXRldmFsdWUoY3R5cGVfdCBjdHlwZSwgY3ZhbF90ICp2YWwpCi0gewotIAlzd2l0Y2ggKGN0eXBlKSB7Ci1AQCAtMTI5LDkgKzEyOSw5IEBAIGJ5dGV2YWx1ZShjdHlwZV90IGN0eXBlLCBjdmFsX3QgKnZhbCkKLSAJY2FzZSBDVF9BR05VTUJFUjoKLSAJCXJldHVybiBhZ251bWJlcl90b19ieXRlcyh2YWwtPmFnbnVtYmVyKTsKLSAJY2FzZSBDVF9CQk9GRjoKLS0JCXJldHVybiAoX191aW50NjRfdCl2YWwtPmJib2ZmOwotKwkJcmV0dXJuICh1aW50NjRfdCl2YWwtPmJib2ZmOwotIAljYXNlIENUX0JMS09GRjoKLS0JCXJldHVybiAoX191aW50NjRfdCl2YWwtPmJsa29mZjsKLSsJCXJldHVybiAodWludDY0X3QpdmFsLT5ibGtvZmY7Ci0gCWNhc2UgQ1RfQllURToKLSAJCXJldHVybiB2YWwtPmJ5dGU7Ci0gCWNhc2UgQ1RfREFERFI6Ci1AQCAtMTQzLDcgKzE0Myw3IEBAIGJ5dGV2YWx1ZShjdHlwZV90IGN0eXBlLCBjdmFsX3QgKnZhbCkKLSAJY2FzZSBDVF9JTk9JRFg6Ci0gCQlyZXR1cm4gaW5vaWR4X3RvX2J5dGVzKHZhbC0+aW5vaWR4KTsKLSAJY2FzZSBDVF9JTk9PRkY6Ci0tCQlyZXR1cm4gKF9fdWludDY0X3QpdmFsLT5pbm9vZmY7Ci0rCQlyZXR1cm4gKHVpbnQ2NF90KXZhbC0+aW5vb2ZmOwotIAljYXNlIENUX05PTkU6Ci0gCWNhc2UgTkNUUzoKLSAJCWJyZWFrOwotQEAgLTE2MCw3ICsxNjAsNyBAQCBjb252ZXJ0X2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAljdmFsX3QJCWN2YWxzW05DVFNdID0ge307Ci0gCWludAkJaTsKLSAJaW50CQltYXNrOwotLQlfX3VpbnQ2NF90CXY7Ci0rCXVpbnQ2NF90CXY7Ci0gCWN0eXBlX3QJCXd0eXBlOwotIAotIAkvKiBtb3ZlIHBhc3QgdGhlICJjb252ZXJ0IiBjb21tYW5kICovCi1AQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBpbnQKLSBnZXR2YWx1ZShjaGFyICpzLCBjdHlwZV90IGN0eXBlLCBjdmFsX3QgKnZhbCkKLSB7Ci0gCWNoYXIJCSpwOwotLQlfX3VpbnQ2NF90CXY7Ci0rCXVpbnQ2NF90CXY7Ci0gCi0gCXYgPSBzdHJ0b3VsbChzLCAmcCwgMCk7Ci0gCWlmICgqcCAhPSAnXDAnKSB7Ci1AQCAtMjg2LDcgKzI4Niw3IEBAIGdldHZhbHVlKGNoYXIgKnMsIGN0eXBlX3QgY3R5cGUsIGN2YWxfdCAqdmFsKQotIAkJdmFsLT5ibGtvZmYgPSAoaW50KXY7Ci0gCQlicmVhazsKLSAJY2FzZSBDVF9CWVRFOgotLQkJdmFsLT5ieXRlID0gKF9fdWludDY0X3QpdjsKLSsJCXZhbC0+Ynl0ZSA9ICh1aW50NjRfdCl2OwotIAkJYnJlYWs7Ci0gCWNhc2UgQ1RfREFERFI6Ci0gCQl2YWwtPmRhZGRyID0gKHhmc19kYWRkcl90KXY7Ci1kaWZmIC0tZ2l0IGEvZGIvZmFkZHIuYyBiL2RiL2ZhZGRyLmMKLWluZGV4IDg3NzIwMGJmLi41NjIwNzY0OCAxMDA2NDQKLS0tLSBhL2RiL2ZhZGRyLmMKLSsrKyBiL2RiL2ZhZGRyLmMKLUBAIC03OSwxMSArNzksMTEgQEAgZmFfYXR0cmJsb2NrKAotIAl0eXBubV90CQluZXh0KQotIHsKLSAJYm1hcF9leHRfdAlibTsKLS0JX191aW50MzJfdAlibm87Ci0rCXVpbnQzMl90CWJubzsKLSAJeGZzX2ZzYmxvY2tfdAlkZnNibm87Ci0gCWludAkJbmV4OwotIAotLQlibm8gPSAoX191aW50MzJfdClnZXRiaXR2YWwob2JqLCBiaXQsIGJpdHN6KGJubyksIEJWVU5TSUdORUQpOwotKwlibm8gPSAodWludDMyX3QpZ2V0Yml0dmFsKG9iaiwgYml0LCBiaXRzeihibm8pLCBCVlVOU0lHTkVEKTsKLSAJaWYgKGJubyA9PSAwKSB7Ci0gCQlkYnByaW50ZihfKCJudWxsIGF0dHJpYnV0ZSBibG9jayBudW1iZXIsIGNhbm5vdCBzZXQgbmV3IGFkZHJcbiIpKTsKLSAJCXJldHVybjsKLUBAIC05Niw3ICs5Niw3IEBAIGZhX2F0dHJibG9jaygKLSAJfQotIAlkZnNibm8gPSBibS5zdGFydGJsb2NrICsgKGJubyAtIGJtLnN0YXJ0b2ZmKTsKLSAJQVNTRVJUKHR5cHRhYltuZXh0XS50eXBubSA9PSBuZXh0KTsKLS0Jc2V0X2N1cigmdHlwdGFiW25leHRdLCAoX19pbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksIGJsa2JiLAotKwlzZXRfY3VyKCZ0eXB0YWJbbmV4dF0sIChpbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksIGJsa2JiLAotIAkJREJfUklOR19BREQsIE5VTEwpOwotIH0KLSAKLUBAIC0yNzYsMTEgKzI3NiwxMSBAQCBmYV9kaXJibG9jaygKLSB7Ci0gCWJibWFwX3QJCWJibWFwOwotIAlibWFwX2V4dF90CSpibXA7Ci0tCV9fdWludDMyX3QJYm5vOwotKwl1aW50MzJfdAlibm87Ci0gCXhmc19mc2Jsb2NrX3QJZGZzYm5vOwotIAlpbnQJCW5leDsKLSAKLS0JYm5vID0gKF9fdWludDMyX3QpZ2V0Yml0dmFsKG9iaiwgYml0LCBiaXRzeihibm8pLCBCVlVOU0lHTkVEKTsKLSsJYm5vID0gKHVpbnQzMl90KWdldGJpdHZhbChvYmosIGJpdCwgYml0c3ooYm5vKSwgQlZVTlNJR05FRCk7Ci0gCWlmIChibm8gPT0gMCkgewotIAkJZGJwcmludGYoXygibnVsbCBkaXJlY3RvcnkgYmxvY2sgbnVtYmVyLCBjYW5ub3Qgc2V0IG5ldyBhZGRyXG4iKSk7Ci0gCQlyZXR1cm47Ci1AQCAtMjk3LDcgKzI5Nyw3IEBAIGZhX2RpcmJsb2NrKAotIAlBU1NFUlQodHlwdGFiW25leHRdLnR5cG5tID09IG5leHQpOwotIAlpZiAobmV4ID4gMSkKLSAJCW1ha2VfYmJtYXAoJmJibWFwLCBuZXgsIGJtcCk7Ci0tCXNldF9jdXIoJnR5cHRhYltuZXh0XSwgKF9faW50NjRfdClYRlNfRlNCX1RPX0RBRERSKG1wLCBkZnNibm8pLAotKwlzZXRfY3VyKCZ0eXB0YWJbbmV4dF0sIChpbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksCi0gCQlYRlNfRlNCX1RPX0JCKG1wLCBtcC0+bV9kaXJfZ2VvLT5mc2Jjb3VudCksIERCX1JJTkdfQURELAotIAkJbmV4ID4gMSA/ICZiYm1hcCA6IE5VTEwpOwotIAlmcmVlKGJtcCk7Ci1AQCAtMzE3LDcgKzMxNyw3IEBAIGZhX2RyZnNibm8oCi0gCQlyZXR1cm47Ci0gCX0KLSAJQVNTRVJUKHR5cHRhYltuZXh0XS50eXBubSA9PSBuZXh0KTsKLS0Jc2V0X2N1cigmdHlwdGFiW25leHRdLCAoX19pbnQ2NF90KVhGU19GU0JfVE9fQkIobXAsIGJubyksIGJsa2JiLAotKwlzZXRfY3VyKCZ0eXB0YWJbbmV4dF0sIChpbnQ2NF90KVhGU19GU0JfVE9fQkIobXAsIGJubyksIGJsa2JiLAotIAkJREJfUklOR19BREQsIE5VTEwpOwotIH0KLSAKLWRpZmYgLS1naXQgYS9kYi9maWVsZC5jIGIvZGIvZmllbGQuYwotaW5kZXggODY1YjBiNzEuLmYxZTVmMzVlIDEwMDY0NAotLS0tIGEvZGIvZmllbGQuYwotKysrIGIvZGIvZmllbGQuYwotQEAgLTgzLDcgKzgzLDcgQEAgY29uc3QgZnRhdHRyX3QJZnRhdHRydGFiW10gPSB7Ci0gCSAgYXR0cl9zZl9lbnRyeV9zaXplLCBGVEFSR19TSVpFLCBOVUxMLCBhdHRyX3NmX2VudHJ5X2ZsZHMgfSwKLSAJeyBGTERUX0FUVFJfU0ZfSERSLCAiYXR0cl9zZl9oZHIiLCBOVUxMLCAoY2hhciAqKWF0dHJfc2ZfaGRyX2ZsZHMsCi0gCSAgU0koYml0c3ooc3RydWN0IHhmc19hdHRyX3NmX2hkcikpLCAwLCBOVUxMLCBhdHRyX3NmX2hkcl9mbGRzIH0sCi0tCXsgRkxEVF9BVFRSQkxPQ0ssICJhdHRyYmxvY2siLCBmcF9udW0sICIldSIsIFNJKGJpdHN6KF9fdWludDMyX3QpKSwgMCwKLSsJeyBGTERUX0FUVFJCTE9DSywgImF0dHJibG9jayIsIGZwX251bSwgIiV1IiwgU0koYml0c3oodWludDMyX3QpKSwgMCwKLSAJICBmYV9hdHRyYmxvY2ssIE5VTEwgfSwKLSAJeyBGTERUX0FUVFJTSE9SVCwgImF0dHJzaG9ydCIsIE5VTEwsIChjaGFyICopYXR0cl9zaG9ydGZvcm1fZmxkcywKLSAJICBhdHRyc2hvcnRfc2l6ZSwgRlRBUkdfU0laRSwgTlVMTCwgYXR0cl9zaG9ydGZvcm1fZmxkcyB9LAotQEAgLTE5OSw3ICsxOTksNyBAQCBjb25zdCBmdGF0dHJfdAlmdGF0dHJ0YWJbXSA9IHsKLSAJICBTSShiaXRzeihzdHJ1Y3QgeGZzX3JlZmNvdW50X3JlYykpLCAwLCBOVUxMLCByZWZjYnRfcmVjX2ZsZHMgfSwKLSAKLSAvKiBDUkMgZmllbGQgKi8KLS0JeyBGTERUX0NSQywgImNyYyIsIGZwX2NyYywgIiUjeCAoJXMpIiwgU0koYml0c3ooX191aW50MzJfdCkpLAotKwl7IEZMRFRfQ1JDLCAiY3JjIiwgZnBfY3JjLCAiJSN4ICglcykiLCBTSShiaXRzeih1aW50MzJfdCkpLAotIAkgIDAsIE5VTEwsIE5VTEwgfSwKLSAKLSAJeyBGTERUX0RFViwgImRldiIsIGZwX251bSwgIiUjeCIsIFNJKGJpdHN6KHhmc19kZXZfdCkpLCAwLCBOVUxMLCBOVUxMIH0sCi1AQCAtMjE0LDcgKzIxNCw3IEBAIGNvbnN0IGZ0YXR0cl90CWZ0YXR0cnRhYltdID0gewotIAl7IEZMRFRfRElOT0RFX0NPUkUsICJkaW5vZGVfY29yZSIsIE5VTEwsIChjaGFyICopaW5vZGVfY29yZV9mbGRzLAotIAkgIFNJKGJpdHN6KHhmc19kaW5vZGVfdCkpLCAwLCBOVUxMLCBpbm9kZV9jb3JlX2ZsZHMgfSwKLSAJeyBGTERUX0RJTk9ERV9GTVQsICJkaW5vZGVfZm10IiwgZnBfZGlub2RlX2ZtdCwgTlVMTCwKLS0JICBTSShiaXRzeihfX2ludDhfdCkpLCAwLCBOVUxMLCBOVUxMIH0sCi0rCSAgU0koYml0c3ooaW50OF90KSksIDAsIE5VTEwsIE5VTEwgfSwKLSAJeyBGTERUX0RJTk9ERV9VLCAiZGlub2RlX3UiLCBOVUxMLCAoY2hhciAqKWlub2RlX3VfZmxkcywgaW5vZGVfdV9zaXplLAotIAkgIEZUQVJHX1NJWkV8RlRBUkdfT0tFTVBUWSwgTlVMTCwgaW5vZGVfdV9mbGRzIH0sCi0gCXsgRkxEVF9ESU5PREVfVjMsICJkaW5vZGVfdjMiLCBOVUxMLCAoY2hhciAqKWlub2RlX3YzX2ZsZHMsCi1AQCAtMjk1LDcgKzI5NSw3IEBAIGNvbnN0IGZ0YXR0cl90CWZ0YXR0cnRhYltdID0gewotIAl7IEZMRFRfREEzX05PREVfSERSLCAiZGlyX25vZGVfaGRyIiwgTlVMTCwgKGNoYXIgKilkYTNfbm9kZV9oZHJfZmxkcywKLSAJICBTSShiaXRzeihzdHJ1Y3QgeGZzX2RhM19ub2RlX2hkcikpLCAwLCBOVUxMLCBkYTNfbm9kZV9oZHJfZmxkcyB9LAotIAotLQl7IEZMRFRfRElSQkxPQ0ssICJkaXJibG9jayIsIGZwX251bSwgIiV1IiwgU0koYml0c3ooX191aW50MzJfdCkpLCAwLAotKwl7IEZMRFRfRElSQkxPQ0ssICJkaXJibG9jayIsIGZwX251bSwgIiV1IiwgU0koYml0c3oodWludDMyX3QpKSwgMCwKLSAJICBmYV9kaXJibG9jaywgTlVMTCB9LAotIAl7IEZMRFRfRElTS19EUVVPVCwgImRpc2tfZHF1b3QiLCBOVUxMLCAoY2hhciAqKWRpc2tfZHF1b3RfZmxkcywKLSAJICBTSShiaXRzeih4ZnNfZGlza19kcXVvdF90KSksIDAsIE5VTEwsIGRpc2tfZHF1b3RfZmxkcyB9LAotQEAgLTMzNSwxNSArMzM1LDE1IEBAIGNvbnN0IGZ0YXR0cl90CWZ0YXR0cnRhYltdID0gewotIAkgIEZUQVJHX1NJWkUsIE5VTEwsIGlub2RlX2NyY19mbGRzIH0sCi0gCXsgRkxEVF9JTk9GUkVFLCAiaW5vZnJlZSIsIGZwX251bSwgIiUjbGx4IiwgU0koYml0c3ooeGZzX2lub2ZyZWVfdCkpLCAwLAotIAkgIE5VTEwsIE5VTEwgfSwKLS0JeyBGTERUX0lOVDE2RCwgImludDE2ZCIsIGZwX251bSwgIiVkIiwgU0koYml0c3ooX19pbnQxNl90KSksCi0rCXsgRkxEVF9JTlQxNkQsICJpbnQxNmQiLCBmcF9udW0sICIlZCIsIFNJKGJpdHN6KGludDE2X3QpKSwKLSAJICBGVEFSR19TSUdORUQsIE5VTEwsIE5VTEwgfSwKLS0JeyBGTERUX0lOVDMyRCwgImludDMyZCIsIGZwX251bSwgIiVkIiwgU0koYml0c3ooX19pbnQzMl90KSksCi0rCXsgRkxEVF9JTlQzMkQsICJpbnQzMmQiLCBmcF9udW0sICIlZCIsIFNJKGJpdHN6KGludDMyX3QpKSwKLSAJICBGVEFSR19TSUdORUQsIE5VTEwsIE5VTEwgfSwKLS0JeyBGTERUX0lOVDY0RCwgImludDY0ZCIsIGZwX251bSwgIiVsbGQiLCBTSShiaXRzeihfX2ludDY0X3QpKSwKLSsJeyBGTERUX0lOVDY0RCwgImludDY0ZCIsIGZwX251bSwgIiVsbGQiLCBTSShiaXRzeihpbnQ2NF90KSksCi0gCSAgRlRBUkdfU0lHTkVELCBOVUxMLCBOVUxMIH0sCi0tCXsgRkxEVF9JTlQ4RCwgImludDhkIiwgZnBfbnVtLCAiJWQiLCBTSShiaXRzeihfX2ludDhfdCkpLCBGVEFSR19TSUdORUQsCi0rCXsgRkxEVF9JTlQ4RCwgImludDhkIiwgZnBfbnVtLCAiJWQiLCBTSShiaXRzeihpbnQ4X3QpKSwgRlRBUkdfU0lHTkVELAotIAkgIE5VTEwsIE5VTEwgfSwKLS0JeyBGTERUX05TRUMsICJuc2VjIiwgZnBfbnVtLCAiJTA5ZCIsIFNJKGJpdHN6KF9faW50MzJfdCkpLCBGVEFSR19TSUdORUQsCi0rCXsgRkxEVF9OU0VDLCAibnNlYyIsIGZwX251bSwgIiUwOWQiLCBTSShiaXRzeihpbnQzMl90KSksIEZUQVJHX1NJR05FRCwKLSAJICBOVUxMLCBOVUxMIH0sCi0gCXsgRkxEVF9RQ05ULCAicWNudCIsIGZwX251bSwgIiVsbHUiLCBTSShiaXRzeih4ZnNfcWNudF90KSksIDAsIE5VTEwsCi0gCSAgTlVMTCB9LAotQEAgLTM1NiwzNCArMzU2LDM0IEBAIGNvbnN0IGZ0YXR0cl90CWZ0YXR0cnRhYltdID0gewotIAl7IEZMRFRfU1lNTElOS19DUkMsICJzeW1saW5rIiwgTlVMTCwgKGNoYXIgKilzeW1saW5rX2NyY19mbGRzLAotIAkgIHN5bWxpbmtfc2l6ZSwgRlRBUkdfU0laRSwgTlVMTCwgc3ltbGlua19jcmNfZmxkcyB9LAotIAotLQl7IEZMRFRfVElNRSwgInRpbWUiLCBmcF90aW1lLCBOVUxMLCBTSShiaXRzeihfX2ludDMyX3QpKSwgRlRBUkdfU0lHTkVELAotKwl7IEZMRFRfVElNRSwgInRpbWUiLCBmcF90aW1lLCBOVUxMLCBTSShiaXRzeihpbnQzMl90KSksIEZUQVJHX1NJR05FRCwKLSAJICBOVUxMLCBOVUxMIH0sCi0gCXsgRkxEVF9USU1FU1RBTVAsICJ0aW1lc3RhbXAiLCBOVUxMLCAoY2hhciAqKXRpbWVzdGFtcF9mbGRzLAotIAkgIFNJKGJpdHN6KHhmc190aW1lc3RhbXBfdCkpLCAwLCBOVUxMLCB0aW1lc3RhbXBfZmxkcyB9LAotIAl7IEZMRFRfVUlOVDEsICJ1aW50MSIsIGZwX251bSwgIiV1IiwgU0koMSksIDAsIE5VTEwsIE5VTEwgfSwKLS0JeyBGTERUX1VJTlQxNkQsICJ1aW50MTZkIiwgZnBfbnVtLCAiJXUiLCBTSShiaXRzeihfX3VpbnQxNl90KSksIDAsIE5VTEwsCi0rCXsgRkxEVF9VSU5UMTZELCAidWludDE2ZCIsIGZwX251bSwgIiV1IiwgU0koYml0c3oodWludDE2X3QpKSwgMCwgTlVMTCwKLSAJICBOVUxMIH0sCi0tCXsgRkxEVF9VSU5UMTZPLCAidWludDE2byIsIGZwX251bSwgIiUjbyIsIFNJKGJpdHN6KF9fdWludDE2X3QpKSwgMCwKLSsJeyBGTERUX1VJTlQxNk8sICJ1aW50MTZvIiwgZnBfbnVtLCAiJSNvIiwgU0koYml0c3oodWludDE2X3QpKSwgMCwKLSAJICBOVUxMLCBOVUxMIH0sCi0tCXsgRkxEVF9VSU5UMTZYLCAidWludDE2eCIsIGZwX251bSwgIiUjeCIsIFNJKGJpdHN6KF9fdWludDE2X3QpKSwgMCwKLSsJeyBGTERUX1VJTlQxNlgsICJ1aW50MTZ4IiwgZnBfbnVtLCAiJSN4IiwgU0koYml0c3oodWludDE2X3QpKSwgMCwKLSAJICBOVUxMLCBOVUxMIH0sCi0tCXsgRkxEVF9VSU5UMzJELCAidWludDMyZCIsIGZwX251bSwgIiV1IiwgU0koYml0c3ooX191aW50MzJfdCkpLCAwLCBOVUxMLAotKwl7IEZMRFRfVUlOVDMyRCwgInVpbnQzMmQiLCBmcF9udW0sICIldSIsIFNJKGJpdHN6KHVpbnQzMl90KSksIDAsIE5VTEwsCi0gCSAgTlVMTCB9LAotLQl7IEZMRFRfVUlOVDMyTywgInVpbnQzMm8iLCBmcF9udW0sICIlI28iLCBTSShiaXRzeihfX3VpbnQzMl90KSksIDAsCi0rCXsgRkxEVF9VSU5UMzJPLCAidWludDMybyIsIGZwX251bSwgIiUjbyIsIFNJKGJpdHN6KHVpbnQzMl90KSksIDAsCi0gCSAgTlVMTCwgTlVMTCB9LAotLQl7IEZMRFRfVUlOVDMyWCwgInVpbnQzMngiLCBmcF9udW0sICIlI3giLCBTSShiaXRzeihfX3VpbnQzMl90KSksIDAsCi0rCXsgRkxEVF9VSU5UMzJYLCAidWludDMyeCIsIGZwX251bSwgIiUjeCIsIFNJKGJpdHN6KHVpbnQzMl90KSksIDAsCi0gCSAgTlVMTCwgTlVMTCB9LAotLQl7IEZMRFRfVUlOVDY0RCwgInVpbnQ2NGQiLCBmcF9udW0sICIlbGx1IiwgU0koYml0c3ooX191aW50NjRfdCkpLCAwLAotKwl7IEZMRFRfVUlOVDY0RCwgInVpbnQ2NGQiLCBmcF9udW0sICIlbGx1IiwgU0koYml0c3oodWludDY0X3QpKSwgMCwKLSAJICBOVUxMLCBOVUxMIH0sCi0tCXsgRkxEVF9VSU5UNjRPLCAidWludDY0byIsIGZwX251bSwgIiUjbGxvIiwgU0koYml0c3ooX191aW50NjRfdCkpLCAwLAotKwl7IEZMRFRfVUlOVDY0TywgInVpbnQ2NG8iLCBmcF9udW0sICIlI2xsbyIsIFNJKGJpdHN6KHVpbnQ2NF90KSksIDAsCi0gCSAgTlVMTCwgTlVMTCB9LAotLQl7IEZMRFRfVUlOVDY0WCwgInVpbnQ2NHgiLCBmcF9udW0sICIlI2xseCIsIFNJKGJpdHN6KF9fdWludDY0X3QpKSwgMCwKLSsJeyBGTERUX1VJTlQ2NFgsICJ1aW50NjR4IiwgZnBfbnVtLCAiJSNsbHgiLCBTSShiaXRzeih1aW50NjRfdCkpLCAwLAotIAkgIE5VTEwsIE5VTEwgfSwKLS0JeyBGTERUX1VJTlQ4RCwgInVpbnQ4ZCIsIGZwX251bSwgIiV1IiwgU0koYml0c3ooX191aW50OF90KSksIDAsIE5VTEwsCi0rCXsgRkxEVF9VSU5UOEQsICJ1aW50OGQiLCBmcF9udW0sICIldSIsIFNJKGJpdHN6KHVpbnQ4X3QpKSwgMCwgTlVMTCwKLSAJICBOVUxMIH0sCi0tCXsgRkxEVF9VSU5UOE8sICJ1aW50OG8iLCBmcF9udW0sICIlI28iLCBTSShiaXRzeihfX3VpbnQ4X3QpKSwgMCwgTlVMTCwKLSsJeyBGTERUX1VJTlQ4TywgInVpbnQ4byIsIGZwX251bSwgIiUjbyIsIFNJKGJpdHN6KHVpbnQ4X3QpKSwgMCwgTlVMTCwKLSAJICBOVUxMIH0sCi0tCXsgRkxEVF9VSU5UOFgsICJ1aW50OHgiLCBmcF9udW0sICIlI3giLCBTSShiaXRzeihfX3VpbnQ4X3QpKSwgMCwgTlVMTCwKLSsJeyBGTERUX1VJTlQ4WCwgInVpbnQ4eCIsIGZwX251bSwgIiUjeCIsIFNJKGJpdHN6KHVpbnQ4X3QpKSwgMCwgTlVMTCwKLSAJICBOVUxMIH0sCi0gCXsgRkxEVF9VVUlELCAidXVpZCIsIGZwX3V1aWQsIE5VTEwsIFNJKGJpdHN6KHV1aWRfdCkpLCAwLCBOVUxMLCBOVUxMIH0sCi0gCXsgRkxEVF9aWlosIE5VTEwgfQotZGlmZiAtLWdpdCBhL2RiL2ZwcmludC5jIGIvZGIvZnByaW50LmMKLWluZGV4IGZkN2U3ZjQ1Li4yNjFhMzFlZiAxMDA2NDQKLS0tLSBhL2RiL2ZwcmludC5jCi0rKysgYi9kYi9mcHJpbnQuYwotQEAgLTgwLDcgKzgwLDcgQEAgZnBfbnVtKAotIAlpbnQJCWJpdHBvczsKLSAJaW50CQlpOwotIAlpbnQJCWlzbnVsbDsKLS0JX19pbnQ2NF90CXZhbDsKLSsJaW50NjRfdAkJdmFsOwotIAotIAlmb3IgKGkgPSAwLCBiaXRwb3MgPSBiaXQ7Ci0gCSAgICAgaSA8IGNvdW50ICYmICFzZWVuaW50KCk7Ci1AQCAtMTAwLDcgKzEwMCw3IEBAIGZwX251bSgKLSAJCWVsc2UgaWYgKHNpemUgPiAzMikKLSAJCQlkYnByaW50ZihmbXRzdHIsIHZhbCk7Ci0gCQllbHNlCi0tCQkJZGJwcmludGYoZm10c3RyLCAoX19pbnQzMl90KXZhbCk7Ci0rCQkJZGJwcmludGYoZm10c3RyLCAoaW50MzJfdCl2YWwpOwotIAkJaWYgKGkgPCBjb3VudCAtIDEpCi0gCQkJZGJwcmludGYoIiAiKTsKLSAJfQotQEAgLTIwMyw3ICsyMDMsNyBAQCBmcF9jcmMoCi0gewotIAlpbnQJCWJpdHBvczsKLSAJaW50CQlpOwotLQlfX2ludDY0X3QJdmFsOwotKwlpbnQ2NF90CQl2YWw7Ci0gCWNoYXIJCSpvazsKLSAKLSAJc3dpdGNoIChpb2N1cl9jcmNfdmFsaWQoKSkgewotQEAgLTIzMCw3ICsyMzAsNyBAQCBmcF9jcmMoCi0gCQlpZiAoc2l6ZSA+IDMyKQotIAkJCWRicHJpbnRmKGZtdHN0ciwgdmFsLCBvayk7Ci0gCQllbHNlCi0tCQkJZGJwcmludGYoZm10c3RyLCAoX19pbnQzMl90KXZhbCwgb2spOwotKwkJCWRicHJpbnRmKGZtdHN0ciwgKGludDMyX3QpdmFsLCBvayk7Ci0gCQlpZiAoaSA8IGNvdW50IC0gMSkKLSAJCQlkYnByaW50ZigiICIpOwotIAl9Ci1kaWZmIC0tZ2l0IGEvZGIvZnJhZy5jIGIvZGIvZnJhZy5jCi1pbmRleCA4MDA1ZTQ1ZC4uZDIyNGYwYzIgMTAwNjQ0Ci0tLS0gYS9kYi9mcmFnLmMKLSsrKyBiL2RiL2ZyYWcuYwotQEAgLTQyLDggKzQyLDggQEAgdHlwZWRlZglzdHJ1Y3QgZXh0bWFwIHsKLSAKLSBzdGF0aWMgaW50CQlhZmxhZzsKLSBzdGF0aWMgaW50CQlkZmxhZzsKLS1zdGF0aWMgX191aW50NjRfdAlleHRjb3VudF9hY3R1YWw7Ci0tc3RhdGljIF9fdWludDY0X3QJZXh0Y291bnRfaWRlYWw7Ci0rc3RhdGljIHVpbnQ2NF90CWV4dGNvdW50X2FjdHVhbDsKLStzdGF0aWMgdWludDY0X3QJZXh0Y291bnRfaWRlYWw7Ci0gc3RhdGljIGludAkJZmZsYWc7Ci0gc3RhdGljIGludAkJbGZsYWc7Ci0gc3RhdGljIGludAkJcWZsYWc7Ci1AQCAtMzEwLDggKzMxMCw4IEBAIHByb2Nlc3NfaW5vZGUoCi0gCXhmc19hZ2lub190CQlhZ2lubywKLSAJeGZzX2Rpbm9kZV90CQkqZGlwKQotIHsKLS0JX191aW50NjRfdAkJYWN0dWFsOwotLQlfX3VpbnQ2NF90CQlpZGVhbDsKLSsJdWludDY0X3QJCWFjdHVhbDsKLSsJdWludDY0X3QJCWlkZWFsOwotIAl4ZnNfaW5vX3QJCWlubzsKLSAJaW50CQkJc2tpcGE7Ci0gCWludAkJCXNraXBkOwotZGlmZiAtLWdpdCBhL2RiL2lub2RlLmMgYi9kYi9pbm9kZS5jCi1pbmRleCA4YjdhNDFlNC4uNmNjNDdkNmEgMTAwNjQ0Ci0tLS0gYS9kYi9pbm9kZS5jCi0rKysgYi9kYi9pbm9kZS5jCi1AQCAtMTE5LDQ5ICsxMTksNDkgQEAgY29uc3QgZmllbGRfdAlpbm9kZV9jb3JlX2ZsZHNbXSA9IHsKLSAJeyAiZG1zdGF0ZSIsIEZMRFRfVUlOVDE2RCwgT0koQ09GRihkbXN0YXRlKSksIEMxLCAwLCBUWVBfTk9ORSB9LAotIAl7ICJmbGFncyIsIEZMRFRfVUlOVDE2WCwgT0koQ09GRihmbGFncykpLCBDMSwgRkxEX1NLSVBBTEwsIFRZUF9OT05FIH0sCi0gCXsgIm5ld3J0Ym0iLCBGTERUX1VJTlQxLAotLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX05FV1JUQk1fQklUIC0gMSksIEMxLAotKwkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3oodWludDE2X3QpIC0gWEZTX0RJRkxBR19ORVdSVEJNX0JJVCAtIDEpLCBDMSwKLSAJICAwLCBUWVBfTk9ORSB9LAotIAl7ICJwcmVhbGxvYyIsIEZMRFRfVUlOVDEsCi0tCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfUFJFQUxMT0NfQklUIC0gMSksIEMxLAotKwkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3oodWludDE2X3QpIC0gWEZTX0RJRkxBR19QUkVBTExPQ19CSVQgLSAxKSwgQzEsCi0gCSAgMCwgVFlQX05PTkUgfSwKLSAJeyAicmVhbHRpbWUiLCBGTERUX1VJTlQxLAotLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX1JFQUxUSU1FX0JJVCAtIDEpLCBDMSwKLSsJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfUkVBTFRJTUVfQklUIC0gMSksIEMxLAotIAkgIDAsIFRZUF9OT05FIH0sCi0gCXsgImltbXV0YWJsZSIsIEZMRFRfVUlOVDEsCi0tCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfSU1NVVRBQkxFX0JJVC0xKSwgQzEsCi0rCSAgT0koQ09GRihmbGFncykgKyBiaXRzeih1aW50MTZfdCkgLSBYRlNfRElGTEFHX0lNTVVUQUJMRV9CSVQtMSksIEMxLAotIAkgIDAsIFRZUF9OT05FIH0sCi0gCXsgImFwcGVuZCIsIEZMRFRfVUlOVDEsCi0tCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfQVBQRU5EX0JJVCAtIDEpLCBDMSwKLSsJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfQVBQRU5EX0JJVCAtIDEpLCBDMSwKLSAJICAwLCBUWVBfTk9ORSB9LAotIAl7ICJzeW5jIiwgRkxEVF9VSU5UMSwKLS0JICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KF9fdWludDE2X3QpIC0gWEZTX0RJRkxBR19TWU5DX0JJVCAtIDEpLCBDMSwKLSsJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfU1lOQ19CSVQgLSAxKSwgQzEsCi0gCSAgMCwgVFlQX05PTkUgfSwKLSAJeyAibm9hdGltZSIsIEZMRFRfVUlOVDEsCi0tCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9BVElNRV9CSVQgLSAxKSwgQzEsCi0rCSAgT0koQ09GRihmbGFncykgKyBiaXRzeih1aW50MTZfdCkgLSBYRlNfRElGTEFHX05PQVRJTUVfQklUIC0gMSksIEMxLAotIAkgIDAsIFRZUF9OT05FIH0sCi0gCXsgIm5vZHVtcCIsIEZMRFRfVUlOVDEsCi0tCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9EVU1QX0JJVCAtIDEpLCBDMSwKLSsJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9EVU1QX0JJVCAtIDEpLCBDMSwKLSAJICAwLCBUWVBfTk9ORSB9LAotIAl7ICJydGluaGVyaXQiLCBGTERUX1VJTlQxLAotLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX1JUSU5IRVJJVF9CSVQtMSksIEMxLAotKwkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3oodWludDE2X3QpIC0gWEZTX0RJRkxBR19SVElOSEVSSVRfQklULTEpLCBDMSwKLSAJICAwLCBUWVBfTk9ORSB9LAotIAl7ICJwcm9qaW5oZXJpdCIsIEZMRFRfVUlOVDEsCi0tCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfUFJPSklOSEVSSVRfQklULTEpLEMxLAotKwkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3oodWludDE2X3QpIC0gWEZTX0RJRkxBR19QUk9KSU5IRVJJVF9CSVQtMSksIEMxLAotIAkgIDAsIFRZUF9OT05FIH0sCi0gCXsgIm5vc3ltbGlua3MiLCBGTERUX1VJTlQxLAotLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX05PU1lNTElOS1NfQklULTEpLCBDMSwKLSsJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9TWU1MSU5LU19CSVQtMSksIEMxLAotIAkgIDAsIFRZUF9OT05FIH0sCi0gCXsgImV4dHN6IiwgRkxEVF9VSU5UMSwKLS0JICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KF9fdWludDE2X3QpIC0gWEZTX0RJRkxBR19FWFRTSVpFX0JJVC0xKSxDMSwKLSsJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfRVhUU0laRV9CSVQtMSksIEMxLAotIAkgIDAsIFRZUF9OT05FIH0sCi0gCXsgImV4dHN6aW5oZXJpdCIsIEZMRFRfVUlOVDEsCi0tCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfRVhUU1pJTkhFUklUX0JJVC0xKSxDMSwKLSsJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfRVhUU1pJTkhFUklUX0JJVC0xKSwgQzEsCi0gCSAgMCwgVFlQX05PTkUgfSwKLSAJeyAibm9kZWZyYWciLCBGTERUX1VJTlQxLAotLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX05PREVGUkFHX0JJVC0xKSxDMSwKLSsJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9ERUZSQUdfQklULTEpLCBDMSwKLSAJICAwLCBUWVBfTk9ORSB9LAotIAl7ICJmaWxlc3RyZWFtIiwgRkxEVF9VSU5UMSwKLS0JICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KF9fdWludDE2X3QpIC0gWEZTX0RJRkxBR19GSUxFU1RSRUFNX0JJVC0xKSxDMSwKLSsJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfRklMRVNUUkVBTV9CSVQtMSksIEMxLAotIAkgIDAsIFRZUF9OT05FIH0sCi0gCXsgImdlbiIsIEZMRFRfVUlOVDMyRCwgT0koQ09GRihnZW4pKSwgQzEsIDAsIFRZUF9OT05FIH0sCi0gCXsgTlVMTCB9Ci1AQCAtMTc3LDEwICsxNzcsMTAgQEAgY29uc3QgZmllbGRfdAlpbm9kZV92M19mbGRzW10gPSB7Ci0gCXsgImludW1iZXIiLCBGTERUX0lOTywgT0koQ09GRihpbm8pKSwgQzEsIDAsIFRZUF9OT05FIH0sCi0gCXsgInV1aWQiLCBGTERUX1VVSUQsIE9JKENPRkYodXVpZCkpLCBDMSwgMCwgVFlQX05PTkUgfSwKLSAJeyAicmVmbGluayIsIEZMRFRfVUlOVDEsCi0tCSAgT0koQ09GRihmbGFnczIpICsgYml0c3ooX191aW50NjRfdCkgLSBYRlNfRElGTEFHMl9SRUZMSU5LX0JJVC0xKSwgQzEsCi0rCSAgT0koQ09GRihmbGFnczIpICsgYml0c3oodWludDY0X3QpIC0gWEZTX0RJRkxBRzJfUkVGTElOS19CSVQtMSksIEMxLAotIAkgIDAsIFRZUF9OT05FIH0sCi0gCXsgImNvd2V4dHN6IiwgRkxEVF9VSU5UMSwKLS0JICBPSShDT0ZGKGZsYWdzMikgKyBiaXRzeihfX3VpbnQ2NF90KSAtIFhGU19ESUZMQUcyX0NPV0VYVFNJWkVfQklULTEpLCBDMSwKLSsJICBPSShDT0ZGKGZsYWdzMikgKyBiaXRzeih1aW50NjRfdCkgLSBYRlNfRElGTEFHMl9DT1dFWFRTSVpFX0JJVC0xKSwgQzEsCi0gCSAgMCwgVFlQX05PTkUgfSwKLSAJeyBOVUxMIH0KLSB9OwotZGlmZiAtLWdpdCBhL2RiL2lvLmMgYi9kYi9pby5jCi1pbmRleCAxZjI3ZjZiMy4uZmQ5YjlmNGIgMTAwNjQ0Ci0tLS0gYS9kYi9pby5jCi0rKysgYi9kYi9pby5jCi1AQCAtNTQ1LDcgKzU0NSw3IEBAIHNldF9jdXIoCi0gCXN0cnVjdCB4ZnNfYnVmCSpicDsKLSAJeGZzX2lub190CWRpcmlubzsKLSAJeGZzX2lub190CWlubzsKLS0JX191aW50MTZfdAltb2RlOwotKwl1aW50MTZfdAltb2RlOwotIAljb25zdCBzdHJ1Y3QgeGZzX2J1Zl9vcHMgKm9wcyA9IHR5cGUgPyB0eXBlLT5ib3BzIDogTlVMTDsKLSAKLSAJaWYgKGlvY3VyX3NwIDwgMCkgewotZGlmZiAtLWdpdCBhL2RiL2lvLmggYi9kYi9pby5oCi1pbmRleCA5OTczMDA0OC4uZGYwZmRkNzUgMTAwNjQ0Ci0tLS0gYS9kYi9pby5oCi0rKysgYi9kYi9pby5oCi1AQCAtMjUsNyArMjUsNyBAQCB0eXBlZGVmIHN0cnVjdCBiYm1hcCB7Ci0gfSBiYm1hcF90OwotIAotIHR5cGVkZWYgc3RydWN0IGlvY3VyIHsKLS0JX19pbnQ2NF90CQliYjsJLyogQkIgbnVtYmVyIGluIGZpbGVzeXN0ZW0gb2YgYnVmICovCi0rCWludDY0X3QJCQliYjsJLyogQkIgbnVtYmVyIGluIGZpbGVzeXN0ZW0gb2YgYnVmICovCi0gCWludAkJCWJsZW47CS8qIGxlbmd0aCBvZiAiYnVmIiwgYmIncyAqLwotIAlpbnQJCQlib2ZmOwkvKiBkYXRhIC0gYnVmICovCi0gCXZvaWQJCQkqYnVmOwkvKiBiYXNlIGFkZHJlc3Mgb2YgYnVmZmVyICovCi1AQCAtMzMsNyArMzMsNyBAQCB0eXBlZGVmIHN0cnVjdCBpb2N1ciB7Ci0gCXhmc19pbm9fdAkJZGlyaW5vOwkvKiBjdXJyZW50IGRpcmVjdG9yeSBpbm9kZSBudW1iZXIgKi8KLSAJeGZzX2lub190CQlpbm87CS8qIGN1cnJlbnQgaW5vZGUgbnVtYmVyICovCi0gCWludAkJCWxlbjsJLyogbGVuZ3RoIG9mICJkYXRhIiwgYnl0ZXMgKi8KLS0JX191aW50MTZfdAkJbW9kZTsJLyogY3VycmVudCBpbm9kZSdzIG1vZGUgKi8KLSsJdWludDE2X3QJCW1vZGU7CS8qIGN1cnJlbnQgaW5vZGUncyBtb2RlICovCi0gCXhmc19vZmZfdAkJb2ZmOwkvKiBmcyBvZmZzZXQgb2YgImRhdGEiIGluIGJ5dGVzICovCi0gCWNvbnN0IHN0cnVjdCB0eXAJKnR5cDsJLyogdHlwZSBvZiAiZGF0YSIgKi8KLSAJYmJtYXBfdAkJCSpiYm1hcDsJLyogbWFwIGRhZGRyIGlmIGZyYWdtZW50ZWQgKi8KLUBAIC01Nyw3ICs1Nyw3IEBAIGV4dGVybiB2b2lkCW9mZl9jdXIoaW50IG9mZiwgaW50IGxlbik7Ci0gZXh0ZXJuIHZvaWQJcG9wX2N1cih2b2lkKTsKLSBleHRlcm4gdm9pZAlwcmludF9pb2N1cihjaGFyICp0YWcsIGlvY3VyX3QgKmlvYyk7Ci0gZXh0ZXJuIHZvaWQJcHVzaF9jdXIodm9pZCk7Ci0tZXh0ZXJuIGludAlyZWFkX2J1ZihfX2ludDY0X3QgZGFkZHIsIGludCBjb3VudCwgdm9pZCAqYnVmcCk7Ci0rZXh0ZXJuIGludAlyZWFkX2J1ZihpbnQ2NF90IGRhZGRyLCBpbnQgY291bnQsIHZvaWQgKmJ1ZnApOwotIGV4dGVybiB2b2lkICAgICB3cml0ZV9jdXIodm9pZCk7Ci0gZXh0ZXJuIHZvaWQJc2V0X2N1cihjb25zdCBzdHJ1Y3QgdHlwICp0eXBlLCB4ZnNfZGFkZHJfdCBibGtudW0sCi0gCQkJaW50IGxlbiwgaW50IHJpbmdfYWRkLCBiYm1hcF90ICpiYm1hcCk7Ci1kaWZmIC0tZ2l0IGEvZGIvbWV0YWR1bXAuYyBiL2RiL21ldGFkdW1wLmMKLWluZGV4IDMxYmI1OTU5Li42N2JkZjE0ZSAxMDA2NDQKLS0tLSBhL2RiL21ldGFkdW1wLmMKLSsrKyBiL2RiL21ldGFkdW1wLmMKLUBAIC0xNzUsNyArMTc1LDcgQEAgd3JpdGVfaW5kZXgodm9pZCkKLSBzdGF0aWMgaW50Ci0gd3JpdGVfYnVmX3NlZ21lbnQoCi0gCWNoYXIJCSpkYXRhLAotLQlfX2ludDY0X3QJb2ZmLAotKwlpbnQ2NF90CQlvZmYsCi0gCWludAkJbGVuKQotIHsKLSAJaW50CQlpOwotQEAgLTEyNTYsNyArMTI1Niw3IEBAIHByb2Nlc3Nfc2ZfZGlyKAotIHsKLSAJc3RydWN0IHhmc19kaXIyX3NmX2hkcgkqc2ZwOwotIAl4ZnNfZGlyMl9zZl9lbnRyeV90CSpzZmVwOwotLQlfX3VpbnQ2NF90CQlpbm9fZGlyX3NpemU7Ci0rCXVpbnQ2NF90CQlpbm9fZGlyX3NpemU7Ci0gCWludAkJCWk7Ci0gCi0gCXNmcCA9IChzdHJ1Y3QgeGZzX2RpcjJfc2ZfaGRyICopWEZTX0RGT1JLX0RQVFIoZGlwKTsKLUBAIC0xMzIyLDcgKzEzMjIsNyBAQCBwcm9jZXNzX3NmX2RpcigKLSBzdGF0aWMgdm9pZAotIG9iZnVzY2F0ZV9wYXRoX2NvbXBvbmVudHMoCi0gCWNoYXIJCQkqYnVmLAotLQlfX3VpbnQ2NF90CQlsZW4pCi0rCXVpbnQ2NF90CQlsZW4pCi0gewotIAl1bnNpZ25lZCBjaGFyCQkqY29tcCA9ICh1bnNpZ25lZCBjaGFyICopYnVmOwotIAl1bnNpZ25lZCBjaGFyCQkqZW5kID0gY29tcCArIGxlbjsKLUBAIC0xMzU5LDcgKzEzNTksNyBAQCBzdGF0aWMgdm9pZAotIHByb2Nlc3Nfc2Zfc3ltbGluaygKLSAJeGZzX2Rpbm9kZV90CQkqZGlwKQotIHsKLS0JX191aW50NjRfdAkJbGVuOwotKwl1aW50NjRfdAkJbGVuOwotIAljaGFyCQkJKmJ1ZjsKLSAKLSAJbGVuID0gYmU2NF90b19jcHUoZGlwLT5kaV9zaXplKTsKLUBAIC0xNjMxLDcgKzE2MzEsNyBAQCBwcm9jZXNzX2F0dHJfYmxvY2soCi0gCXhmc19hdHRyX2xlYWZfZW50cnlfdCAJCSplbnRyeTsKLSAJeGZzX2F0dHJfbGVhZl9uYW1lX2xvY2FsX3QgCSpsb2NhbDsKLSAJeGZzX2F0dHJfbGVhZl9uYW1lX3JlbW90ZV90IAkqcmVtb3RlOwotLQlfX3VpbnQzMl90CQkJYnMgPSBtcC0+bV9zYi5zYl9ibG9ja3NpemU7Ci0rCXVpbnQzMl90CQkJYnMgPSBtcC0+bV9zYi5zYl9ibG9ja3NpemU7Ci0gCWNoYXIJCQkJKmZpcnN0X25hbWU7Ci0gCi0gCi1AQCAtMjI3MCw3ICsyMjcwLDcgQEAgZG9uZToKLSAJcmV0dXJuIHN1Y2Nlc3M7Ci0gfQotIAotLXN0YXRpYyBfX3VpbnQzMl90CWlub2Rlc19jb3BpZWQgPSAwOwotK3N0YXRpYyB1aW50MzJfdAlpbm9kZXNfY29waWVkOwotIAotIHN0YXRpYyBpbnQKLSBjb3B5X2lub2RlX2NodW5rKAotZGlmZiAtLWdpdCBhL2RiL3NiLmMgYi9kYi9zYi5jCi1pbmRleCA4ZTc3MjJjZC4uZjE5MjQ4ZDcgMTAwNjQ0Ci0tLS0gYS9kYi9zYi5jCi0rKysgYi9kYi9zYi5jCi1AQCAtNjA2LDcgKzYwNiw3IEBAIHZlcnNpb25faGVscCh2b2lkKQotIH0KLSAKLSBzdGF0aWMgaW50Ci0tZG9fdmVyc2lvbih4ZnNfYWdudW1iZXJfdCBhZ25vLCBfX3VpbnQxNl90IHZlcnNpb24sIF9fdWludDMyX3QgZmVhdHVyZXMpCi0rZG9fdmVyc2lvbih4ZnNfYWdudW1iZXJfdCBhZ25vLCB1aW50MTZfdCB2ZXJzaW9uLCB1aW50MzJfdCBmZWF0dXJlcykKLSB7Ci0gCXhmc19zYl90CXRzYjsKLSAKLUBAIC03MTAsOCArNzEwLDggQEAgdmVyc2lvbl9mKAotIAlpbnQJCWFyZ2MsCi0gCWNoYXIJCSoqYXJndikKLSB7Ci0tCV9fdWludDE2X3QJdmVyc2lvbiA9IDA7Ci0tCV9fdWludDMyX3QJZmVhdHVyZXMgPSAwOwotKwl1aW50MTZfdAl2ZXJzaW9uID0gMDsKLSsJdWludDMyX3QJZmVhdHVyZXMgPSAwOwotIAl4ZnNfYWdudW1iZXJfdAlhZzsKLSAKLSAJaWYgKGFyZ2MgPT0gMikgewkvKiBXUklURSBWRVJTSU9OICovCi1kaWZmIC0tZ2l0IGEvZnNyL3hmc19mc3IuYyBiL2Zzci94ZnNfZnNyLmMKLWluZGV4IDUxN2I3NWYwLi5kNDg0NmEzMiAxMDA2NDQKLS0tLSBhL2Zzci94ZnNfZnNyLmMKLSsrKyBiL2Zzci94ZnNfZnNyLmMKLUBAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBnZXRibWFwICAqb3V0bWFwID0gTlVMTDsKLSBpbnQgICAgICAgICAgICAgb3V0bWFwX3NpemUgPSAwOwotIGludAkJUmVhbFVpZDsKLSBpbnQJCXRtcF9hZ2k7Ci0tc3RhdGljIF9faW50NjRfdAltaW5pbXVtZnJlZSA9IDIwNDg7Ci0rc3RhdGljIGludDY0X3QJCW1pbmltdW1mcmVlID0gMjA0ODsKLSAKLSAjZGVmaW5lIE1OVFRZUEVfWEZTICAgICAgICAgICAgICJ4ZnMiCi0gCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9kYXJ3aW4uaCBiL2luY2x1ZGUvZGFyd2luLmgKLWluZGV4IDdiYmQ1NzY0Li41MTAzMWM0MiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvZGFyd2luLmgKLSsrKyBiL2luY2x1ZGUvZGFyd2luLmgKLUBAIC0xMjUsMTUgKzEyNSwxNSBAQCB0eXBlZGVmIHNpZ25lZCBpbnQJCV9fczMyOwotIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludAlfX3U2NDsKLSB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50CV9fczY0OwotIAotLSNkZWZpbmUgX19pbnQ4X3QJaW50OF90Ci0tI2RlZmluZSBfX2ludDE2X3QJaW50MTZfdAotLSNkZWZpbmUgX19pbnQzMl90CWludDMyX3QKLS0jZGVmaW5lIF9faW50MzJfdAlpbnQzMl90Ci0tI2RlZmluZSBfX2ludDY0X3QJaW50NjRfdAotLSNkZWZpbmUgX191aW50OF90CXVfaW50OF90Ci0tI2RlZmluZSBfX3VpbnQxNl90CXVfaW50MTZfdAotLSNkZWZpbmUgX191aW50MzJfdAl1X2ludDMyX3QKLS0jZGVmaW5lIF9fdWludDY0X3QJdV9pbnQ2NF90Ci0rI2RlZmluZSBpbnQ4X3QJCWludDhfdAotKyNkZWZpbmUgaW50MTZfdAkJaW50MTZfdAotKyNkZWZpbmUgaW50MzJfdAkJaW50MzJfdAotKyNkZWZpbmUgaW50MzJfdAkJaW50MzJfdAotKyNkZWZpbmUgaW50NjRfdAkJaW50NjRfdAotKyNkZWZpbmUgdWludDhfdAkJdV9pbnQ4X3QKLSsjZGVmaW5lIHVpbnQxNl90CXVfaW50MTZfdAotKyNkZWZpbmUgdWludDMyX3QJdV9pbnQzMl90Ci0rI2RlZmluZSB1aW50NjRfdAl1X2ludDY0X3QKLSAKLSB0eXBlZGVmIG9mZl90CQl4ZnNfb2ZmX3Q7Ci0gdHlwZWRlZiB1X2ludDY0X3QJeGZzX2lub190OwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZWJzZC5oIGIvaW5jbHVkZS9mcmVlYnNkLmgKLWluZGV4IGZiMzE4Yjg5Li5mNTJlZDBhOSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvZnJlZWJzZC5oCi0rKysgYi9pbmNsdWRlL2ZyZWVic2QuaAotQEAgLTUwLDkgKzUwLDkgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50CV9fdTY0OwotIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQJX19zNjQ7Ci0gCi0gdHlwZWRlZiBvZmZfdAkJeGZzX29mZl90OwotLXR5cGVkZWYgX191aW50NjRfdAl4ZnNfaW5vX3Q7Ci0tdHlwZWRlZiBfX3VpbnQzMl90CXhmc19kZXZfdDsKLS10eXBlZGVmIF9faW50NjRfdAl4ZnNfZGFkZHJfdDsKLSt0eXBlZGVmIHVpbnQ2NF90CXhmc19pbm9fdDsKLSt0eXBlZGVmIHVpbnQzMl90CXhmc19kZXZfdDsKLSt0eXBlZGVmIGludDY0X3QJCXhmc19kYWRkcl90OwotIHR5cGVkZWYgX191MzIJCXhmc19ubGlua190OwotIAotICNkZWZpbmUJT19MQVJHRUZJTEUJMAotZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ251a2ZyZWVic2QuaCBiL2luY2x1ZGUvZ251a2ZyZWVic2QuaAotaW5kZXggNjkxNmU2NWEuLjFkYjNmNGYwIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9nbnVrZnJlZWJzZC5oCi0rKysgYi9pbmNsdWRlL2dudWtmcmVlYnNkLmgKLUBAIC00Niw5ICs0Niw5IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludAlfX3U2NDsKLSB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50CV9fczY0OwotIAotIHR5cGVkZWYgb2ZmX3QJCXhmc19vZmZfdDsKLS10eXBlZGVmIF9fdWludDY0X3QJeGZzX2lub190OwotLXR5cGVkZWYgX191aW50MzJfdAl4ZnNfZGV2X3Q7Ci0tdHlwZWRlZiBfX2ludDY0X3QJeGZzX2RhZGRyX3Q7Ci0rdHlwZWRlZiB1aW50NjRfdAl4ZnNfaW5vX3Q7Ci0rdHlwZWRlZiB1aW50MzJfdAl4ZnNfZGV2X3Q7Ci0rdHlwZWRlZiBpbnQ2NF90CQl4ZnNfZGFkZHJfdDsKLSB0eXBlZGVmIF9fdTMyCQl4ZnNfbmxpbmtfdDsKLSAKLSAjZGVmaW5lIEhBVkVfRklECTEKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYnhjbWQuaCBiL2luY2x1ZGUvbGlieGNtZC5oCi1pbmRleCBlOGQyZmZjOC4uNjgwNjM4MGMgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2xpYnhjbWQuaAotKysrIGIvaW5jbHVkZS9saWJ4Y21kLmgKLUBAIC00MiwxMCArNDIsMTAgQEAgZ2V0X3RvcG9sb2d5KAotIGV4dGVybiB2b2lkCi0gY2FsY19kZWZhdWx0X2FnX2dlb21ldHJ5KAotIAlpbnQJCWJsb2NrbG9nLAotLQlfX3VpbnQ2NF90CWRibG9ja3MsCi0rCXVpbnQ2NF90CWRibG9ja3MsCi0gCWludAkJbXVsdGlkaXNrLAotLQlfX3VpbnQ2NF90CSphZ3NpemUsCi0tCV9fdWludDY0X3QJKmFnY291bnQpOwotKwl1aW50NjRfdAkqYWdzaXplLAotKwl1aW50NjRfdAkqYWdjb3VudCk7Ci0gCi0gZXh0ZXJuIGludAotIGNoZWNrX292ZXJ3cml0ZSgKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4LmggYi9pbmNsdWRlL2xpbnV4LmgKLWluZGV4IDk2MTFhMzdmLi42Y2UzNDRjNSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbGludXguaAotKysrIGIvaW5jbHVkZS9saW51eC5oCi1AQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgcGxhdGZvcm1fdXVpZF9jb3B5KHV1aWRfdCAqZHN0LCB1dWlkX3QgKnNyYykKLSBzdGF0aWMgX19pbmxpbmVfXyBpbnQKLSBwbGF0Zm9ybV9kaXNjYXJkX2Jsb2NrcyhpbnQgZmQsIHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBsZW4pCi0gewotLQlfX3VpbnQ2NF90IHJhbmdlWzJdID0geyBzdGFydCwgbGVuIH07Ci0rCXVpbnQ2NF90IHJhbmdlWzJdID0geyBzdGFydCwgbGVuIH07Ci0gCi0gCWlmIChpb2N0bChmZCwgQkxLRElTQ0FSRCwgJnJhbmdlKSA8IDApCi0gCQlyZXR1cm4gZXJybm87Ci1AQCAtMTQ0LDkgKzE0NCw5IEBAIHBsYXRmb3JtX2Rpc2NhcmRfYmxvY2tzKGludCBmZCwgdWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGxlbikKLSAjZGVmaW5lIEVGU0JBRENSQwlFQkFETVNHCS8qIEJhZCBDUkMgZGV0ZWN0ZWQgKi8KLSAKLSB0eXBlZGVmIG9mZl90CQl4ZnNfb2ZmX3Q7Ci0tdHlwZWRlZiBfX3VpbnQ2NF90CXhmc19pbm9fdDsKLS10eXBlZGVmIF9fdWludDMyX3QJeGZzX2Rldl90OwotLXR5cGVkZWYgX19pbnQ2NF90CXhmc19kYWRkcl90OwotK3R5cGVkZWYgdWludDY0X3QJeGZzX2lub190OwotK3R5cGVkZWYgdWludDMyX3QJeGZzX2Rldl90OwotK3R5cGVkZWYgaW50NjRfdAkJeGZzX2RhZGRyX3Q7Ci0gdHlwZWRlZiBfX3UzMgkJeGZzX25saW5rX3Q7Ci0gCi0gLyoqCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZnNfYXJjaC5oIGIvaW5jbHVkZS94ZnNfYXJjaC5oCi1pbmRleCAxMmNkNDNlNi4uMTg2Y2FkYmEgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL3hmc19hcmNoLmgKLSsrKyBiL2luY2x1ZGUveGZzX2FyY2guaAotQEAgLTI0NCwzOSArMjQ0LDM5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBiZTY0X2FkZF9jcHUoX19iZTY0ICphLCBfX3M2NCBiKQotIAkqYSA9IGNwdV90b19iZTY0KGJlNjRfdG9fY3B1KCphKSArIGIpOwotIH0KLSAKLS1zdGF0aWMgaW5saW5lIF9fdWludDE2X3QgZ2V0X3VuYWxpZ25lZF9iZTE2KHZvaWQgKnApCi0rc3RhdGljIGlubGluZSB1aW50MTZfdCBnZXRfdW5hbGlnbmVkX2JlMTYodm9pZCAqcCkKLSB7Ci0tCV9fdWludDhfdCAqX19wID0gcDsKLSsJdWludDhfdCAqX19wID0gcDsKLSAJcmV0dXJuIF9fcFswXSA8PCA4IHwgX19wWzFdOwotIH0KLSAKLS1zdGF0aWMgaW5saW5lIF9fdWludDMyX3QgZ2V0X3VuYWxpZ25lZF9iZTMyKHZvaWQgKnApCi0rc3RhdGljIGlubGluZSB1aW50MzJfdCBnZXRfdW5hbGlnbmVkX2JlMzIodm9pZCAqcCkKLSB7Ci0tCV9fdWludDhfdCAqX19wID0gcDsKLSsJdWludDhfdCAqX19wID0gcDsKLSAgICAgICAgIHJldHVybiBfX3BbMF0gPDwgMjQgfCBfX3BbMV0gPDwgMTYgfCBfX3BbMl0gPDwgOCB8IF9fcFszXTsKLSB9Ci0gCi0tc3RhdGljIGlubGluZSBfX3VpbnQ2NF90IGdldF91bmFsaWduZWRfYmU2NCh2b2lkICpwKQotK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgZ2V0X3VuYWxpZ25lZF9iZTY0KHZvaWQgKnApCi0gewotLQlyZXR1cm4gKF9fdWludDY0X3QpZ2V0X3VuYWxpZ25lZF9iZTMyKHApIDw8IDMyIHwKLSsJcmV0dXJuICh1aW50NjRfdClnZXRfdW5hbGlnbmVkX2JlMzIocCkgPDwgMzIgfAotIAkJCSAgIGdldF91bmFsaWduZWRfYmUzMihwICsgNCk7Ci0gfQotIAotLXN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfdW5hbGlnbmVkX2JlMTYoX191aW50MTZfdCB2YWwsIHZvaWQgKnApCi0rc3RhdGljIGlubGluZSB2b2lkIHB1dF91bmFsaWduZWRfYmUxNih1aW50MTZfdCB2YWwsIHZvaWQgKnApCi0gewotLQlfX3VpbnQ4X3QgKl9fcCA9IHA7Ci0rCXVpbnQ4X3QgKl9fcCA9IHA7Ci0gCSpfX3ArKyA9IHZhbCA+PiA4OwotIAkqX19wKysgPSB2YWw7Ci0gfQotIAotLXN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfdW5hbGlnbmVkX2JlMzIoX191aW50MzJfdCB2YWwsIHZvaWQgKnApCi0rc3RhdGljIGlubGluZSB2b2lkIHB1dF91bmFsaWduZWRfYmUzMih1aW50MzJfdCB2YWwsIHZvaWQgKnApCi0gewotLQlfX3VpbnQ4X3QgKl9fcCA9IHA7Ci0rCXVpbnQ4X3QgKl9fcCA9IHA7Ci0gCXB1dF91bmFsaWduZWRfYmUxNih2YWwgPj4gMTYsIF9fcCk7Ci0gCXB1dF91bmFsaWduZWRfYmUxNih2YWwsIF9fcCArIDIpOwotIH0KLSAKLS1zdGF0aWMgaW5saW5lIHZvaWQgcHV0X3VuYWxpZ25lZF9iZTY0KF9fdWludDY0X3QgdmFsLCB2b2lkICpwKQotK3N0YXRpYyBpbmxpbmUgdm9pZCBwdXRfdW5hbGlnbmVkX2JlNjQodWludDY0X3QgdmFsLCB2b2lkICpwKQotIHsKLSAJcHV0X3VuYWxpZ25lZF9iZTMyKHZhbCA+PiAzMiwgcCk7Ci0gCXB1dF91bmFsaWduZWRfYmUzMih2YWwsIHAgKyA0KTsKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3hmc19pbm9kZS5oIGIvaW5jbHVkZS94ZnNfaW5vZGUuaAotaW5kZXggZmI2YjU0MjkuLjg3NjYwMjRlIDEwMDY0NAotLS0tIGEvaW5jbHVkZS94ZnNfaW5vZGUuaAotKysrIGIvaW5jbHVkZS94ZnNfaW5vZGUuaAotQEAgLTEyMyw4ICsxMjMsOCBAQCB4ZnNfZ2V0X3Byb2ppZChzdHJ1Y3QgeGZzX2ljZGlub2RlICppZCkKLSBzdGF0aWMgaW5saW5lIHZvaWQKLSB4ZnNfc2V0X3Byb2ppZChzdHJ1Y3QgeGZzX2ljZGlub2RlICppZCwgcHJpZF90IHByb2ppZCkKLSB7Ci0tCWlkLT5kaV9wcm9qaWRfaGkgPSAoX191aW50MTZfdCkgKHByb2ppZCA+PiAxNik7Ci0tCWlkLT5kaV9wcm9qaWRfbG8gPSAoX191aW50MTZfdCkgKHByb2ppZCAmIDB4ZmZmZik7Ci0rCWlkLT5kaV9wcm9qaWRfaGkgPSAodWludDE2X3QpIChwcm9qaWQgPj4gMTYpOwotKwlpZC0+ZGlfcHJvamlkX2xvID0gKHVpbnQxNl90KSAocHJvamlkICYgMHhmZmZmKTsKLSB9Ci0gCi0gc3RhdGljIGlubGluZSBib29sIHhmc19pc19yZWZsaW5rX2lub2RlKHN0cnVjdCB4ZnNfaW5vZGUgKmlwKQotZGlmZiAtLWdpdCBhL2luY2x1ZGUveGZzX2xvZ19yZWNvdmVyLmggYi9pbmNsdWRlL3hmc19sb2dfcmVjb3Zlci5oCi1pbmRleCA3NTgyNjc2Yi4uMGQwOTg2MjggMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL3hmc19sb2dfcmVjb3Zlci5oCi0rKysgYi9pbmNsdWRlL3hmc19sb2dfcmVjb3Zlci5oCi1AQCAtMjYsNyArMjYsNyBAQAotICNkZWZpbmUgWExPR19SSEFTSF9TSVpFCTE2Ci0gI2RlZmluZSBYTE9HX1JIQVNIX1NISUZUIDIKLSAjZGVmaW5lIFhMT0dfUkhBU0godGlkKQlcCi0tCSgoKChfX3VpbnQzMl90KXRpZCk+PlhMT0dfUkhBU0hfU0hJRlQpICYgKFhMT0dfUkhBU0hfU0laRS0xKSkKLSsJKCgoKHVpbnQzMl90KXRpZCk+PlhMT0dfUkhBU0hfU0hJRlQpICYgKFhMT0dfUkhBU0hfU0laRS0xKSkKLSAKLSAjZGVmaW5lIFhMT0dfTUFYX1JFR0lPTlNfSU5fSVRFTSAgIChYRlNfTUFYX0JMT0NLU0laRSAvIFhGU19CTEZfQ0hVTksgLyAyICsgMSkKLSAKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3hmc19tZXRhZHVtcC5oIGIvaW5jbHVkZS94ZnNfbWV0YWR1bXAuaAotaW5kZXggN2YzMDM5ZWIuLjEzYWZiOGRkIDEwMDY0NAotLS0tIGEvaW5jbHVkZS94ZnNfbWV0YWR1bXAuaAotKysrIGIvaW5jbHVkZS94ZnNfbWV0YWR1bXAuaAotQEAgLTI0LDggKzI0LDggQEAKLSB0eXBlZGVmIHN0cnVjdCB4ZnNfbWV0YWJsb2NrIHsKLSAJX19iZTMyCQltYl9tYWdpYzsKLSAJX19iZTE2CQltYl9jb3VudDsKLS0JX191aW50OF90CW1iX2Jsb2NrbG9nOwotLQlfX3VpbnQ4X3QJbWJfaW5mbzsKLSsJdWludDhfdAkJbWJfYmxvY2tsb2c7Ci0rCXVpbnQ4X3QJCW1iX2luZm87Ci0gCS8qIGZvbGxvd2VkIGJ5IGFuIGFycmF5IG9mIHhmc19kYWRkcl90ICovCi0gfSB4ZnNfbWV0YWJsb2NrX3Q7Ci0gCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZnNfbW91bnQuaCBiL2luY2x1ZGUveGZzX21vdW50LmgKLWluZGV4IDVmZjI0ZWJmLi41YjMyM2JiMSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUveGZzX21vdW50LmgKLSsrKyBiL2luY2x1ZGUveGZzX21vdW50LmgKLUBAIC00OCwxMiArNDgsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX21vdW50IHsKLSAjZGVmaW5lIG1fZGV2CQltX2RkZXZfdGFyZ3AKLSAjZGVmaW5lIG1fbG9nZGV2CW1fbG9nZGV2X3RhcmdwCi0gI2RlZmluZSBtX3J0ZGV2CQltX3J0ZGV2X3RhcmdwCi0tCV9fdWludDhfdAkJbV9kaXJjb29rX2Vsb2c7CS8qIGxvZyBkLWNvb2tpZSBlbnRyeSBiaXRzICovCi0tCV9fdWludDhfdAkJbV9ibGtiaXRfbG9nOwkvKiBibG9ja2xvZyArIE5CQlkgKi8KLS0JX191aW50OF90CQltX2Jsa2JiX2xvZzsJLyogYmxvY2tsb2cgLSBCQlNISUZUICovCi0tCV9fdWludDhfdAkJbV9zZWN0YmJfbG9nOwkvKiBzZWN0b3Jsb2cgLSBCQlNISUZUICovCi0tCV9fdWludDhfdAkJbV9hZ25vX2xvZzsJLyogbG9nICNhZydzICovCi0tCV9fdWludDhfdAkJbV9hZ2lub19sb2c7CS8qICNiaXRzIGZvciBhZ2lubyBpbiBpbnVtICovCi0rCXVpbnQ4X3QJCQltX2RpcmNvb2tfZWxvZzsJLyogbG9nIGQtY29va2llIGVudHJ5IGJpdHMgKi8KLSsJdWludDhfdAkJCW1fYmxrYml0X2xvZzsJLyogYmxvY2tsb2cgKyBOQkJZICovCi0rCXVpbnQ4X3QJCQltX2Jsa2JiX2xvZzsJLyogYmxvY2tsb2cgLSBCQlNISUZUICovCi0rCXVpbnQ4X3QJCQltX3NlY3RiYl9sb2c7CS8qIHNlY3RvcmxvZyAtIEJCU0hJRlQgKi8KLSsJdWludDhfdAkJCW1fYWdub19sb2c7CS8qIGxvZyAjYWcncyAqLwotKwl1aW50OF90CQkJbV9hZ2lub19sb2c7CS8qICNiaXRzIGZvciBhZ2lubyBpbiBpbnVtICovCi0gCXVpbnQJCQltX2lub2RlX2NsdXN0ZXJfc2l6ZTsvKiBtaW4gaW5vZGUgYnVmIHNpemUgKi8KLSAJdWludAkJCW1fYmxvY2ttYXNrOwkvKiBzYl9ibG9ja3NpemUtMSAqLwotIAl1aW50CQkJbV9ibG9ja3dzaXplOwkvKiBzYl9ibG9ja3NpemUgaW4gd29yZHMgKi8KLUBAIC04OCw3ICs4OCw3IEBAIHR5cGVkZWYgc3RydWN0IHhmc19tb3VudCB7Ci0gCWludAkJCW1fbGl0aW5vOwkvKiBzaXplIG9mIGlub2RlIHVuaW9uIGFyZWEgKi8KLSAJaW50CQkJbV9pbm9hbGlnbl9tYXNrOy8qIG1hc2sgc2JfaW5vYWxpZ25tdCBpZiB1c2VkICovCi0gCXN0cnVjdCB4ZnNfdHJhbnNfcmVzdgltX3Jlc3Y7CQkvKiBwcmVjb21wdXRlZCByZXMgdmFsdWVzICovCi0tCV9fdWludDY0X3QJCW1fbWF4aWNvdW50OwkvKiBtYXhpbXVtIGlub2RlIGNvdW50ICovCi0rCXVpbnQ2NF90CQltX21heGljb3VudDsJLyogbWF4aW11bSBpbm9kZSBjb3VudCAqLwotIAlpbnQJCQltX2RhbGlnbjsJLyogc3RyaXBlIHVuaXQgKi8KLSAJaW50CQkJbV9zd2lkdGg7CS8qIHN0cmlwZSB3aWR0aCAqLwotIAlpbnQJCQltX3Npbm9hbGlnbjsJLyogc3RyaXBlIHVuaXQgaW5vZGUgYWxpZ25tbnQgKi8KLUBAIC0xNDQsMTIgKzE0NCwxMiBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfcGVyYWcgewotIAljaGFyCQlwYWdpX2luaXQ7CS8qIHRoaXMgYWdpJ3MgZW50cnkgaXMgaW5pdGlhbGl6ZWQgKi8KLSAJY2hhcgkJcGFnZl9tZXRhZGF0YTsJLyogdGhlIGFnZiBpcyBwcmVmZXJyZWQgdG8gYmUgbWV0YWRhdGEgKi8KLSAJY2hhcgkJcGFnaV9pbm9kZW9rOwkvKiBUaGUgYWdpIGlzIG9rIGZvciBpbm9kZXMgKi8KLS0JX191aW50OF90CXBhZ2ZfbGV2ZWxzW1hGU19CVE5VTV9BR0ZdOwotKwl1aW50OF90CQlwYWdmX2xldmVsc1tYRlNfQlROVU1fQUdGXTsKLSAJCQkJCS8qICMgb2YgbGV2ZWxzIGluIGJubyAmIGNudCBidHJlZSAqLwotLQlfX3VpbnQzMl90CXBhZ2ZfZmxjb3VudDsJLyogY291bnQgb2YgYmxvY2tzIGluIGZyZWVsaXN0ICovCi0rCXVpbnQzMl90CXBhZ2ZfZmxjb3VudDsJLyogY291bnQgb2YgYmxvY2tzIGluIGZyZWVsaXN0ICovCi0gCXhmc19leHRsZW5fdAlwYWdmX2ZyZWVibGtzOwkvKiB0b3RhbCBmcmVlIGJsb2NrcyAqLwotIAl4ZnNfZXh0bGVuX3QJcGFnZl9sb25nZXN0OwkvKiBsb25nZXN0IGZyZWUgc3BhY2UgKi8KLS0JX191aW50MzJfdAlwYWdmX2J0cmVlYmxrczsJLyogIyBvZiBibG9ja3MgaGVsZCBpbiBBR0YgYnRyZWVzICovCi0rCXVpbnQzMl90CXBhZ2ZfYnRyZWVibGtzOwkvKiAjIG9mIGJsb2NrcyBoZWxkIGluIEFHRiBidHJlZXMgKi8KLSAJeGZzX2FnaW5vX3QJcGFnaV9mcmVlY291bnQ7CS8qIG51bWJlciBvZiBmcmVlIGlub2RlcyAqLwotIAl4ZnNfYWdpbm9fdAlwYWdpX2NvdW50OwkvKiBudW1iZXIgb2YgYWxsb2NhdGVkIGlub2RlcyAqLwotIAotQEAgLTE2OSw3ICsxNjksNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfcGVyYWcgewotIAlzdHJ1Y3QgeGZzX2FnX3Jlc3YJcGFnX2FnZmxfcmVzdjsKLSAKLSAJLyogcmVmZXJlbmNlIGNvdW50ICovCi0tCV9fdWludDhfdAlwYWdmX3JlZmNvdW50X2xldmVsOwotKwl1aW50OF90CQlwYWdmX3JlZmNvdW50X2xldmVsOwotIH0geGZzX3BlcmFnX3Q7Ci0gCi0gc3RhdGljIGlubGluZSBzdHJ1Y3QgeGZzX2FnX3Jlc3YgKgotZGlmZiAtLWdpdCBhL2xpYmhhbmRsZS9oYW5kbGUuYyBiL2xpYmhhbmRsZS9oYW5kbGUuYwotaW5kZXggMjM2ZWQyMmEuLjAwMTI3YjNjIDEwMDY0NAotLS0tIGEvbGliaGFuZGxlL2hhbmRsZS5jCi0rKysgYi9saWJoYW5kbGUvaGFuZGxlLmMKLUBAIC0yMzIsNyArMjMyLDcgQEAgb2JqX3RvX2hhbmRsZSgKLSB7Ci0gCWNoYXIJCWhidWYgW01BWEhBTlNJWl07Ci0gCWludAkJcmV0OwotLQlfX3VpbnQzMl90CWhhbmRsZW47Ci0rCXVpbnQzMl90CWhhbmRsZW47Ci0gCXhmc19mc29wX2hhbmRsZXJlcV90IGhyZXE7Ci0gCi0gCWlmIChvcGNvZGUgPT0gWEZTX0lPQ19GRF9UT19IQU5ETEUpIHsKLWRpZmYgLS1naXQgYS9saWJoYW5kbGUvamRtLmMgYi9saWJoYW5kbGUvamRtLmMKLWluZGV4IGU1MmY1ZDgzLi44MjEwNjFiNCAxMDA2NDQKLS0tLSBhL2xpYmhhbmRsZS9qZG0uYwotKysrIGIvbGliaGFuZGxlL2pkbS5jCi1AQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBmaWxlaGFuZGxlIHsKLSAJZnNoYW5kbGVfdCBmaF9mc2hhbmRsZTsJCS8qIGhhbmRsZSBvZiBmcyBjb250YWluaW5nIHRoaXMgaW5vZGUgKi8KLSAJaW50MTZfdCBmaF9zel9mb2xsb3dpbmc7CS8qIGJ5dGVzIGluIGhhbmRsZSBhZnRlciB0aGlzIG1lbWJlciAqLwotIAljaGFyIGZoX3BhZFtGSUxFSEFORExFX1NaX1BBRF07CS8qIHBhZGRpbmcsIG11c3QgYmUgemVyb2VkICovCi0tCV9fdWludDMyX3QgZmhfZ2VuOwkJLyogZ2VuZXJhdGlvbiBjb3VudCAqLwotKwl1aW50MzJfdCBmaF9nZW47CQkvKiBnZW5lcmF0aW9uIGNvdW50ICovCi0gCXhmc19pbm9fdCBmaF9pbm87CQkvKiA2NCBiaXQgaW5vICovCi0gfSBmaWxlaGFuZGxlX3Q7Ci0gCi1kaWZmIC0tZ2l0IGEvbGlieGNtZC90b3BvbG9neS5jIGIvbGlieGNtZC90b3BvbG9neS5jCi1pbmRleCA4YjAyNzZhNy4uZjY2ZGQxYmMgMTAwNjQ0Ci0tLS0gYS9saWJ4Y21kL3RvcG9sb2d5LmMKLSsrKyBiL2xpYnhjbWQvdG9wb2xvZ3kuYwotQEAgLTIzLDE5ICsyMywxOSBAQAotICNlbmRpZiAvKiBFTkFCTEVfQkxLSUQgKi8KLSAjaW5jbHVkZSAieGZzX211bHRpZGlzay5oIgotIAotLSNkZWZpbmUgVEVSQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoNDAgLSAoYmxvZykpKQotLSNkZWZpbmUgR0lHQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoMzAgLSAoYmxvZykpKQotLSNkZWZpbmUgTUVHQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoMjAgLSAoYmxvZykpKQotKyNkZWZpbmUgVEVSQUJZVEVTKGNvdW50LCBibG9nKQkoKHVpbnQ2NF90KShjb3VudCkgPDwgKDQwIC0gKGJsb2cpKSkKLSsjZGVmaW5lIEdJR0FCWVRFUyhjb3VudCwgYmxvZykJKCh1aW50NjRfdCkoY291bnQpIDw8ICgzMCAtIChibG9nKSkpCi0rI2RlZmluZSBNRUdBQllURVMoY291bnQsIGJsb2cpCSgodWludDY0X3QpKGNvdW50KSA8PCAoMjAgLSAoYmxvZykpKQotIAotIHZvaWQKLSBjYWxjX2RlZmF1bHRfYWdfZ2VvbWV0cnkoCi0gCWludAkJYmxvY2tsb2csCi0tCV9fdWludDY0X3QJZGJsb2NrcywKLSsJdWludDY0X3QJZGJsb2NrcywKLSAJaW50CQltdWx0aWRpc2ssCi0tCV9fdWludDY0X3QJKmFnc2l6ZSwKLS0JX191aW50NjRfdAkqYWdjb3VudCkKLSsJdWludDY0X3QJKmFnc2l6ZSwKLSsJdWludDY0X3QJKmFnY291bnQpCi0gewotLQlfX3VpbnQ2NF90CWJsb2NrcyA9IDA7Ci0rCXVpbnQ2NF90CWJsb2NrcyA9IDA7Ci0gCWludAkJc2hpZnQgPSAwOwotIAotIAkvKgotZGlmZiAtLWdpdCBhL2xpYnhmcy9kYXJ3aW4uYyBiL2xpYnhmcy9kYXJ3aW4uYwotaW5kZXggNzQ1MDdlODEuLjE2ZDJjMzVjIDEwMDY0NAotLS0tIGEvbGlieGZzL2Rhcndpbi5jCi0rKysgYi9saWJ4ZnMvZGFyd2luLmMKLUBAIC02OCw3ICs2OCw3IEBAIHBsYXRmb3JtX2ZsdXNoX2RldmljZShpbnQgZmQsIGRldl90IGRldmljZSkKLSB2b2lkCi0gcGxhdGZvcm1fZmluZHNpemVzKGNoYXIgKnBhdGgsIGludCBmZCwgbG9uZyBsb25nICpzeiwgaW50ICpic3opCi0gewotLQlfX3VpbnQ2NF90CXNpemU7Ci0rCXVpbnQ2NF90CXNpemU7Ci0gCXN0cnVjdCBzdGF0CXN0OwotIAotIAlpZiAoZnN0YXQoZmQsICZzdCkgPCAwKSB7Ci1kaWZmIC0tZ2l0IGEvbGlieGZzL2ZyZWVic2QuYyBiL2xpYnhmcy9mcmVlYnNkLmMKLWluZGV4IDQ2NjdkMWY1Li5kN2JjYTE0MiAxMDA2NDQKLS0tLSBhL2xpYnhmcy9mcmVlYnNkLmMKLSsrKyBiL2xpYnhmcy9mcmVlYnNkLmMKLUBAIC0xMDksNyArMTA5LDcgQEAgdm9pZAotIHBsYXRmb3JtX2ZpbmRzaXplcyhjaGFyICpwYXRoLCBpbnQgZmQsIGxvbmcgbG9uZyAqc3osIGludCAqYnN6KQotIHsKLSAJc3RydWN0IHN0YXQJc3Q7Ci0tCV9faW50NjRfdAlzaXplOwotKwlpbnQ2NF90CQlzaXplOwotIAl1X2ludAkJc3NpemU7Ci0gCi0gCWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKLWRpZmYgLS1naXQgYS9saWJ4ZnMvaW5pdC5jIGIvbGlieGZzL2luaXQuYwotaW5kZXggZmMxNGM1ZTQuLjBmNDFhODUzIDEwMDY0NAotLS0tIGEvbGlieGZzL2luaXQuYwotKysrIGIvbGlieGZzL2luaXQuYwotQEAgLTU0Niw3ICs1NDYsNyBAQCBsaWJ4ZnNfaW5pdGlhbGl6ZV9wZXJhZygKLSAJCSAqIHRoZSBtYXggaW5vZGUgcGVyY2VudGFnZS4KLSAJCSAqLwotIAkJaWYgKG1wLT5tX21heGljb3VudCkgewotLQkJCV9fdWludDY0X3QJaWNvdW50OwotKwkJCXVpbnQ2NF90CWljb3VudDsKLSAKLSAJCQlpY291bnQgPSBzYnAtPnNiX2RibG9ja3MgKiBzYnAtPnNiX2ltYXhfcGN0OwotIAkJCWRvX2RpdihpY291bnQsIDEwMCk7Ci1kaWZmIC0tZ2l0IGEvbGlieGZzL2lyaXguYyBiL2xpYnhmcy9pcml4LmMKLWluZGV4IDMyZmNiM2U1Li4wZjE0YWVjNyAxMDA2NDQKLS0tLSBhL2xpYnhmcy9pcml4LmMKLSsrKyBiL2xpYnhmcy9pcml4LmMKLUBAIC0yMiw3ICsyMiw3IEBACi0gCi0gaW50IHBsYXRmb3JtX2hhc191dWlkID0gMDsKLSBleHRlcm4gY2hhciAqcHJvZ25hbWU7Ci0tZXh0ZXJuIF9faW50NjRfdCBmaW5kc2l6ZShjaGFyICopOwotK2V4dGVybiBpbnQ2NF90IGZpbmRzaXplKGNoYXIgKik7Ci0gCi0gaW50Ci0gcGxhdGZvcm1fY2hlY2tfaXNtb3VudGVkKGNoYXIgKm5hbWUsIGNoYXIgKmJsb2NrLCBzdHJ1Y3Qgc3RhdCAqcywgaW50IHZlcmJvc2UpCi1kaWZmIC0tZ2l0IGEvbGlieGZzL2xpYnhmc19wcml2LmggYi9saWJ4ZnMvbGlieGZzX3ByaXYuaAotaW5kZXggYjRmNzY2ZGIuLmQ1MjViNjY3IDEwMDY0NAotLS0tIGEvbGlieGZzL2xpYnhmc19wcml2LmgKLSsrKyBiL2xpYnhmcy9saWJ4ZnNfcHJpdi5oCi1AQCAtMjk2LDggKzI5Niw4IEBAIHJvdW5kdXBfcG93X29mX3R3byh1aW50IHYpCi0gCXJldHVybiAwOwotIH0KLSAKLS1zdGF0aWMgaW5saW5lIF9fdWludDY0X3QKLS1yb3VuZHVwXzY0KF9fdWludDY0X3QgeCwgX191aW50MzJfdCB5KQotK3N0YXRpYyBpbmxpbmUgdWludDY0X3QKLStyb3VuZHVwXzY0KHVpbnQ2NF90IHgsIHVpbnQzMl90IHkpCi0gewotIAl4ICs9IHkgLSAxOwotIAlkb19kaXYoeCwgeSk7Ci1kaWZmIC0tZ2l0IGEvbGlieGZzL2xpbnV4LmMgYi9saWJ4ZnMvbGludXguYwotaW5kZXggNjlmMDRhZDkuLjBiYWNlM2ViIDEwMDY0NAotLS0tIGEvbGlieGZzL2xpbnV4LmMKLSsrKyBiL2xpYnhmcy9saW51eC5jCi1AQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQKLSBwbGF0Zm9ybV9maW5kc2l6ZXMoY2hhciAqcGF0aCwgaW50IGZkLCBsb25nIGxvbmcgKnN6LCBpbnQgKmJzeikKLSB7Ci0gCXN0cnVjdCBzdGF0CXN0OwotLQlfX3VpbnQ2NF90CXNpemU7Ci0rCXVpbnQ2NF90CXNpemU7Ci0gCWludAkJZXJyb3I7Ci0gCi0gCWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKLWRpZmYgLS1naXQgYS9saWJ4ZnMvbG9naXRlbS5jIGIvbGlieGZzL2xvZ2l0ZW0uYwotaW5kZXggN2U5M2Y2MDkuLjQ2NmI0NDIxIDEwMDY0NAotLS0tIGEvbGlieGZzL2xvZ2l0ZW0uYwotKysrIGIvbGlieGZzL2xvZ2l0ZW0uYwotQEAgLTEyMSw3ICsxMjEsNyBAQCB4ZnNfYnVmX2l0ZW1faW5pdCgKLSAJYmlwLT5ibGlfaXRlbS5saV9tb3VudHAgPSBtcDsKLSAJYmlwLT5ibGlfYnVmID0gYnA7Ci0gCWJpcC0+YmxpX2Zvcm1hdC5ibGZfdHlwZSA9IFhGU19MSV9CVUY7Ci0tCWJpcC0+YmxpX2Zvcm1hdC5ibGZfYmxrbm8gPSAoX19pbnQ2NF90KVhGU19CVUZfQUREUihicCk7Ci0rCWJpcC0+YmxpX2Zvcm1hdC5ibGZfYmxrbm8gPSAoaW50NjRfdClYRlNfQlVGX0FERFIoYnApOwotIAliaXAtPmJsaV9mb3JtYXQuYmxmX2xlbiA9ICh1bnNpZ25lZCBzaG9ydClCVE9CQihYRlNfQlVGX0NPVU5UKGJwKSk7Ci0gCVhGU19CVUZfU0VUX0ZTUFJJVkFURShicCwgYmlwKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvbGlieGZzL3JhZGl4LXRyZWUuYyBiL2xpYnhmcy9yYWRpeC10cmVlLmMKLWluZGV4IGVlZjljMzZkLi4zZjAyNTdmZSAxMDA2NDQKLS0tLSBhL2xpYnhmcy9yYWRpeC10cmVlLmMKLSsrKyBiL2xpYnhmcy9yYWRpeC10cmVlLmMKLUBAIC02NiwyMSArNjYsMjEgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaGVpZ2h0X3RvX21heGluZGV4W1JBRElYX1RSRUVfTUFYX1BBVEhdOwotIHN0YXRpYyBpbmxpbmUgdm9pZCB0YWdfc2V0KHN0cnVjdCByYWRpeF90cmVlX25vZGUgKm5vZGUsIHVuc2lnbmVkIGludCB0YWcsCi0gCQlpbnQgb2Zmc2V0KQotIHsKLS0JKigoX191aW50MzJfdCAqKW5vZGUtPnRhZ3NbdGFnXSArIChvZmZzZXQgPj4gNSkpIHw9ICgxIDw8IChvZmZzZXQgJiAzMSkpOwotKwkqKCh1aW50MzJfdCAqKW5vZGUtPnRhZ3NbdGFnXSArIChvZmZzZXQgPj4gNSkpIHw9ICgxIDw8IChvZmZzZXQgJiAzMSkpOwotIH0KLSAKLSBzdGF0aWMgaW5saW5lIHZvaWQgdGFnX2NsZWFyKHN0cnVjdCByYWRpeF90cmVlX25vZGUgKm5vZGUsIHVuc2lnbmVkIGludCB0YWcsCi0gCQlpbnQgb2Zmc2V0KQotIHsKLS0JX191aW50MzJfdCAJKnAgPSAoX191aW50MzJfdCopbm9kZS0+dGFnc1t0YWddICsgKG9mZnNldCA+PiA1KTsKLS0JX191aW50MzJfdCAJbSA9IDEgPDwgKG9mZnNldCAmIDMxKTsKLSsJdWludDMyX3QgCSpwID0gKHVpbnQzMl90Kilub2RlLT50YWdzW3RhZ10gKyAob2Zmc2V0ID4+IDUpOwotKwl1aW50MzJfdCAJbSA9IDEgPDwgKG9mZnNldCAmIDMxKTsKLSAJKnAgJj0gfm07Ci0gfQotIAotIHN0YXRpYyBpbmxpbmUgaW50IHRhZ19nZXQoc3RydWN0IHJhZGl4X3RyZWVfbm9kZSAqbm9kZSwgdW5zaWduZWQgaW50IHRhZywKLSAJCWludCBvZmZzZXQpCi0gewotLQlyZXR1cm4gMSAmICgoKGNvbnN0IF9fdWludDMyX3QgKilub2RlLT50YWdzW3RhZ10pW29mZnNldCA+PiA1XSA+PiAob2Zmc2V0ICYgMzEpKTsKLSsJcmV0dXJuIDEgJiAoKChjb25zdCB1aW50MzJfdCAqKW5vZGUtPnRhZ3NbdGFnXSlbb2Zmc2V0ID4+IDVdID4+IChvZmZzZXQgJiAzMSkpOwotIH0KLSAKLSAvKgotZGlmZiAtLWdpdCBhL2xpYnhmcy9yZHdyLmMgYi9saWJ4ZnMvcmR3ci5jCi1pbmRleCAyMWM0MmYxNC4uNDc0ZTVlYmMgMTAwNjQ0Ci0tLS0gYS9saWJ4ZnMvcmR3ci5jCi0rKysgYi9saWJ4ZnMvcmR3ci5jCi1AQCAtMTE4LDkgKzExOCw5IEBAIHN0YXRpYyB2b2lkIHVubW91bnRfcmVjb3JkKHZvaWQgKnApCi0gCXhsb2dfb3BfaGVhZGVyX3QJKm9wID0gKHhsb2dfb3BfaGVhZGVyX3QgKilwOwotIAkvKiB0aGUgZGF0YSBzZWN0aW9uIG11c3QgYmUgMzIgYml0IHNpemUgYWxpZ25lZCAqLwotIAlzdHJ1Y3QgewotLQkgICAgX191aW50MTZfdCBtYWdpYzsKLS0JICAgIF9fdWludDE2X3QgcGFkMTsKLS0JICAgIF9fdWludDMyX3QgcGFkMjsgLyogbWF5IGFzIHdlbGwgbWFrZSBpdCA2NCBiaXRzICovCi0rCSAgICB1aW50MTZfdCBtYWdpYzsKLSsJICAgIHVpbnQxNl90IHBhZDE7Ci0rCSAgICB1aW50MzJfdCBwYWQyOyAvKiBtYXkgYXMgd2VsbCBtYWtlIGl0IDY0IGJpdHMgKi8KLSAJfSBtYWdpYyA9IHsgWExPR19VTk1PVU5UX1RZUEUsIDAsIDAgfTsKLSAKLSAJbWVtc2V0KHAsIDAsIEJCU0laRSk7Ci1kaWZmIC0tZ2l0IGEvbGlieGZzL3V0aWwuYyBiL2xpYnhmcy91dGlsLmMKLWluZGV4IGRjZmNhMzk3Li43OTM4ZTMxNyAxMDA2NDQKLS0tLSBhL2xpYnhmcy91dGlsLmMKLSsrKyBiL2xpYnhmcy91dGlsLmMKLUBAIC0xNzAsOCArMTcwLDggQEAgbGlieGZzX3RyYW5zX2ljaGd0aW1lKAotIAlpZiAoZmxhZ3MgJiBYRlNfSUNIR1RJTUVfQ0hHKQotIAkJVkZTX0koaXApLT5pX2N0aW1lID0gdHY7Ci0gCWlmIChmbGFncyAmIFhGU19JQ0hHVElNRV9DUkVBVEUpIHsKLS0JCWlwLT5pX2QuZGlfY3J0aW1lLnRfc2VjID0gKF9faW50MzJfdCl0di50dl9zZWM7Ci0tCQlpcC0+aV9kLmRpX2NydGltZS50X25zZWMgPSAoX19pbnQzMl90KXR2LnR2X25zZWM7Ci0rCQlpcC0+aV9kLmRpX2NydGltZS50X3NlYyA9IChpbnQzMl90KXR2LnR2X3NlYzsKLSsJCWlwLT5pX2QuZGlfY3J0aW1lLnRfbnNlYyA9IChpbnQzMl90KXR2LnR2X25zZWM7Ci0gCX0KLSB9Ci0gCi1AQCAtMjYxLDggKzI2MSw4IEBAIGxpYnhmc19pYWxsb2MoCi0gCQlBU1NFUlQodXVpZF9lcXVhbCgmaXAtPmlfZC5kaV91dWlkLCAmbXAtPm1fc2Iuc2JfbWV0YV91dWlkKSk7Ci0gCQlWRlNfSShpcCktPmlfdmVyc2lvbiA9IDE7Ci0gCQlpcC0+aV9kLmRpX2ZsYWdzMiA9IDA7Ci0tCQlpcC0+aV9kLmRpX2NydGltZS50X3NlYyA9IChfX2ludDMyX3QpVkZTX0koaXApLT5pX210aW1lLnR2X3NlYzsKLS0JCWlwLT5pX2QuZGlfY3J0aW1lLnRfbnNlYyA9IChfX2ludDMyX3QpVkZTX0koaXApLT5pX210aW1lLnR2X25zZWM7Ci0rCQlpcC0+aV9kLmRpX2NydGltZS50X3NlYyA9IChpbnQzMl90KVZGU19JKGlwKS0+aV9tdGltZS50dl9zZWM7Ci0rCQlpcC0+aV9kLmRpX2NydGltZS50X25zZWMgPSAoaW50MzJfdClWRlNfSShpcCktPmlfbXRpbWUudHZfbnNlYzsKLSAJfQotIAotIAlmbGFncyA9IFhGU19JTE9HX0NPUkU7Ci1kaWZmIC0tZ2l0IGEvbG9ncHJpbnQvbG9nX21pc2MuYyBiL2xvZ3ByaW50L2xvZ19taXNjLmMKLWluZGV4IDBkZmNmZDE5Li4yZmQwMWNlYiAxMDA2NDQKLS0tLSBhL2xvZ3ByaW50L2xvZ19taXNjLmMKLSsrKyBiL2xvZ3ByaW50L2xvZ19taXNjLmMKLUBAIC0xNjYsMTIgKzE2NiwxMiBAQCB4bG9nX3ByaW50X3RyYW5zX2hlYWRlcihjaGFyICoqcHRyLCBpbnQgbGVuKQotIHsKLSAgICAgeGZzX3RyYW5zX2hlYWRlcl90ICAqaDsKLSAgICAgY2hhcgkJKmNwdHIgPSAqcHRyOwotLSAgICBfX3VpbnQzMl90ICAgICAgICAgIG1hZ2ljOwotKyAgICB1aW50MzJfdCAgICAgICAgICBtYWdpYzsKLSAgICAgY2hhciAgICAgICAgICAgICAgICAqbWFnaWNfYyA9IChjaGFyICopJm1hZ2ljOwotIAotICAgICAqcHRyICs9IGxlbjsKLSAKLS0gICAgbWFnaWM9KihfX3VpbnQzMl90KiljcHRyOyAvKiBYWFggYmUzMl90b19jcHUgc29vbiAqLwotKyAgICBtYWdpYyA9ICoodWludDMyX3QgKiljcHRyOyAvKiBYWFggYmUzMl90b19jcHUgc29vbiAqLwotIAotICAgICBpZiAobGVuID49IDQpIHsKLSAjaWYgX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTgotQEAgLTIwMSw3ICsyMDEsNyBAQCB4bG9nX3ByaW50X3RyYW5zX2J1ZmZlcihjaGFyICoqcHRyLCBpbnQgbGVuLCBpbnQgKmksIGludCBudW1fb3BzKQotICAgICBpbnQJCQkgbnVtLCBza2lwOwotICAgICBpbnQJCQkgc3VwZXJfYmxvY2sgPSAwOwotICAgICBpbnQJCQkgYnVja2V0LCBjb2wsIGJ1Y2tldHM7Ci0tICAgIF9faW50NjRfdAkJIGJsa25vOwotKyAgICBpbnQ2NF90CQkJIGJsa25vOwotICAgICB4ZnNfYnVmX2xvZ19mb3JtYXRfdCBsYnVmOwotICAgICBpbnQJCQkgc2l6ZSwgYmxlbiwgbWFwX3NpemUsIHN0cnVjdF9zaXplOwotICAgICBfX2JlNjQJCSB4LCB5OwotZGlmZiAtLWdpdCBhL21kcmVzdG9yZS94ZnNfbWRyZXN0b3JlLmMgYi9tZHJlc3RvcmUveGZzX21kcmVzdG9yZS5jCi1pbmRleCA5ZDFiNGU4MC4uYzQ5YzEzYWEgMTAwNjQ0Ci0tLS0gYS9tZHJlc3RvcmUveGZzX21kcmVzdG9yZS5jCi0rKysgYi9tZHJlc3RvcmUveGZzX21kcmVzdG9yZS5jCi1AQCAtNjYsNyArNjYsNyBAQCBwZXJmb3JtX3Jlc3RvcmUoCi0gCWludAkJCW1iX2NvdW50OwotIAl4ZnNfbWV0YWJsb2NrX3QJCXRtYjsKLSAJeGZzX3NiX3QJCXNiOwotLQlfX2ludDY0X3QJCWJ5dGVzX3JlYWQ7Ci0rCWludDY0X3QJCQlieXRlc19yZWFkOwotIAotIAkvKgotIAkgKiByZWFkIGluIGZpcnN0IGJsb2NrcyAoc3VwZXJibG9jayAwKSwgc2V0ICJpbnByb2dyZXNzIiBmbGFnIGZvciBpdCwKLWRpZmYgLS1naXQgYS9ta2ZzL3Byb3RvLmMgYi9ta2ZzL3Byb3RvLmMKLWluZGV4IDg5Y2QyMzc5Li5jZjhjYzM5MSAxMDA2NDQKLS0tLSBhL21rZnMvcHJvdG8uYwotKysrIGIvbWtmcy9wcm90by5jCi1AQCAtNjY3LDcgKzY2Nyw3IEBAIHJ0aW5pdCgKLSAJbXAtPm1fc2Iuc2JfcmJtaW5vID0gcmJtaXAtPmlfaW5vOwotIAlyYm1pcC0+aV9kLmRpX3NpemUgPSBtcC0+bV9zYi5zYl9yYm1ibG9ja3MgKiBtcC0+bV9zYi5zYl9ibG9ja3NpemU7Ci0gCXJibWlwLT5pX2QuZGlfZmxhZ3MgPSBYRlNfRElGTEFHX05FV1JUQk07Ci0tCSooX191aW50NjRfdCAqKSZWRlNfSShyYm1pcCktPmlfYXRpbWUgPSAwOwotKwkqKHVpbnQ2NF90ICopJlZGU19JKHJibWlwKS0+aV9hdGltZSA9IDA7Ci0gCWxpYnhmc190cmFuc19sb2dfaW5vZGUodHAsIHJibWlwLCBYRlNfSUxPR19DT1JFKTsKLSAJbGlieGZzX2xvZ19zYih0cCk7Ci0gCW1wLT5tX3JibWlwID0gcmJtaXA7Ci1kaWZmIC0tZ2l0IGEvbWtmcy94ZnNfbWtmcy5jIGIvbWtmcy94ZnNfbWtmcy5jCi1pbmRleCBiNWMzYTU3ZS4uN2JiNjQwOGYgMTAwNjQ0Ci0tLS0gYS9ta2ZzL3hmc19ta2ZzLmMKLSsrKyBiL21rZnMveGZzX21rZnMuYwotQEAgLTcwNSw5ICs3MDUsOSBAQCBzdHJ1Y3Qgb3B0X3BhcmFtcyBtb3B0cyA9IHsKLSAJfSwKLSB9OwotIAotLSNkZWZpbmUgVEVSQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoNDAgLSAoYmxvZykpKQotLSNkZWZpbmUgR0lHQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoMzAgLSAoYmxvZykpKQotLSNkZWZpbmUgTUVHQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoMjAgLSAoYmxvZykpKQotKyNkZWZpbmUgVEVSQUJZVEVTKGNvdW50LCBibG9nKQkoKHVpbnQ2NF90KShjb3VudCkgPDwgKDQwIC0gKGJsb2cpKSkKLSsjZGVmaW5lIEdJR0FCWVRFUyhjb3VudCwgYmxvZykJKCh1aW50NjRfdCkoY291bnQpIDw8ICgzMCAtIChibG9nKSkpCi0rI2RlZmluZSBNRUdBQllURVMoY291bnQsIGJsb2cpCSgodWludDY0X3QpKGNvdW50KSA8PCAoMjAgLSAoYmxvZykpKQotIAotIC8qCi0gICogVXNlIHRoaXMgbWFjcm8gYmVmb3JlIHdlIGhhdmUgc3VwZXJibG9jayBhbmQgbW91bnQgc3RydWN0dXJlCi1AQCAtODc4LDcgKzg3OCw3IEBAIGZpeHVwX2xvZ19zdHJpcGVfdW5pdCgKLSAJeGZzX3Jmc2Jsb2NrX3QJKmxvZ2Jsb2NrcywKLSAJaW50CQlibG9ja2xvZykKLSB7Ci0tCV9fdWludDY0X3QJdG1wX2xvZ2Jsb2NrczsKLSsJdWludDY0X3QJdG1wX2xvZ2Jsb2NrczsKLSAKLSAJLyoKLSAJICogTWFrZSBzdXJlIHRoYXQgdGhlIGxvZyBzaXplIGlzIGEgbXVsdGlwbGUgb2YgdGhlIHN0cmlwZSB1bml0Ci1AQCAtOTEwLDcgKzkxMCw3IEBAIGZpeHVwX2ludGVybmFsX2xvZ19zdHJpcGUoCi0gCXhmc19tb3VudF90CSptcCwKLSAJaW50CQlsc2ZsYWcsCi0gCXhmc19mc2Jsb2NrX3QJbG9nc3RhcnQsCi0tCV9fdWludDY0X3QJYWdzaXplLAotKwl1aW50NjRfdAlhZ3NpemUsCi0gCWludAkJc3VuaXQsCi0gCXhmc19yZnNibG9ja190CSpsb2dibG9ja3MsCi0gCWludAkJYmxvY2tsb2csCi1AQCAtOTM0LDcgKzkzNCw3IEBAIGZpeHVwX2ludGVybmFsX2xvZ19zdHJpcGUoCi0gfQotIAotIHZvaWQKLS12YWxpZGF0ZV9sb2dfc2l6ZShfX3VpbnQ2NF90IGxvZ2Jsb2NrcywgaW50IGJsb2NrbG9nLCBpbnQgbWluX2xvZ2Jsb2NrcykKLSt2YWxpZGF0ZV9sb2dfc2l6ZSh1aW50NjRfdCBsb2dibG9ja3MsIGludCBibG9ja2xvZywgaW50IG1pbl9sb2dibG9ja3MpCi0gewotIAlpZiAobG9nYmxvY2tzIDwgbWluX2xvZ2Jsb2NrcykgewotIAkJZnByaW50ZihzdGRlcnIsCi1AQCAtOTU5LDcgKzk1OSw3IEBAIHZhbGlkYXRlX2xvZ19zaXplKF9fdWludDY0X3QgbG9nYmxvY2tzLCBpbnQgYmxvY2tsb2csIGludCBtaW5fbG9nYmxvY2tzKQotIHN0YXRpYyBpbnQKLSBjYWxjX2RlZmF1bHRfaW1heHBjdCgKLSAJaW50CQlibG9ja2xvZywKLS0JX191aW50NjRfdAlkYmxvY2tzKQotKwl1aW50NjRfdAlkYmxvY2tzKQotIHsKLSAJLyoKLSAJICogVGhpcyByZXR1cm5zIHRoZSAlIG9mIHRoZSBkaXNrIHNwYWNlIHRoYXQgaXMgdXNlZCBmb3IKLUBAIC05ODEsOSArOTgxLDkgQEAgY2FsY19kZWZhdWx0X2ltYXhwY3QoCi0gc3RhdGljIHZvaWQKLSB2YWxpZGF0ZV9hZ19nZW9tZXRyeSgKLSAJaW50CQlibG9ja2xvZywKLS0JX191aW50NjRfdAlkYmxvY2tzLAotLQlfX3VpbnQ2NF90CWFnc2l6ZSwKLS0JX191aW50NjRfdAlhZ2NvdW50KQotKwl1aW50NjRfdAlkYmxvY2tzLAotKwl1aW50NjRfdAlhZ3NpemUsCi0rCXVpbnQ2NF90CWFnY291bnQpCi0gewotIAlpZiAoYWdzaXplIDwgWEZTX0FHX01JTl9CTE9DS1MoYmxvY2tsb2cpKSB7Ci0gCQlmcHJpbnRmKHN0ZGVyciwKLUBAIC0xMDU5LDcgKzEwNTksNyBAQCB6ZXJvX29sZF94ZnNfc3RydWN0dXJlcygKLSB7Ci0gCXZvaWQgCQkJKmJ1ZjsKLSAJeGZzX3NiX3QgCQlzYjsKLS0JX191aW50MzJfdAkJYnNpemU7Ci0rCXVpbnQzMl90CQlic2l6ZTsKLSAJaW50CQkJaTsKLSAJeGZzX29mZl90CQlvZmY7Ci0gCi1AQCAtMTExMiw4ICsxMTEyLDggQEAgemVyb19vbGRfeGZzX3N0cnVjdHVyZXMoCi0gCQkJaSAhPSBzYi5zYl9ibG9ja2xvZykKLSAJCWdvdG8gZG9uZTsKLSAKLS0JaWYgKHNiLnNiX2RibG9ja3MgPiAoKF9fdWludDY0X3Qpc2Iuc2JfYWdjb3VudCAqIHNiLnNiX2FnYmxvY2tzKSB8fAotLQkJCXNiLnNiX2RibG9ja3MgPCAoKF9fdWludDY0X3QpKHNiLnNiX2FnY291bnQgLSAxKSAqCi0rCWlmIChzYi5zYl9kYmxvY2tzID4gKCh1aW50NjRfdClzYi5zYl9hZ2NvdW50ICogc2Iuc2JfYWdibG9ja3MpIHx8Ci0rCQkJc2Iuc2JfZGJsb2NrcyA8ICgodWludDY0X3QpKHNiLnNiX2FnY291bnQgLSAxKSAqCi0gCQkJCQkgc2Iuc2JfYWdibG9ja3MgKyBYRlNfTUlOX0FHX0JMT0NLUykpCi0gCQlnb3RvIGRvbmU7Ci0gCi1AQCAtMTEzMyw3ICsxMTMzLDcgQEAgZG9uZToKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1kaXNjYXJkX2Jsb2NrcyhkZXZfdCBkZXYsIF9fdWludDY0X3QgbnNlY3RvcnMpCi0rZGlzY2FyZF9ibG9ja3MoZGV2X3QgZGV2LCB1aW50NjRfdCBuc2VjdG9ycykKLSB7Ci0gCWludCBmZDsKLSAKLUBAIC0xMzk1LDExICsxMzk1LDExIEBAIG1haW4oCi0gCWludAkJCWFyZ2MsCi0gCWNoYXIJCQkqKmFyZ3YpCi0gewotLQlfX3VpbnQ2NF90CQlhZ2NvdW50OwotKwl1aW50NjRfdAkJYWdjb3VudDsKLSAJeGZzX2FnZl90CQkqYWdmOwotIAl4ZnNfYWdpX3QJCSphZ2k7Ci0gCXhmc19hZ251bWJlcl90CQlhZ25vOwotLQlfX3VpbnQ2NF90CQlhZ3NpemU7Ci0rCXVpbnQ2NF90CQlhZ3NpemU7Ci0gCXhmc19hbGxvY19yZWNfdAkJKmFyZWM7Ci0gCXN0cnVjdCB4ZnNfYnRyZWVfYmxvY2sJKmJsb2NrOwotIAlpbnQJCQlibGZsYWc7Ci1AQCAtMTQ3NSwxMCArMTQ3NSwxMCBAQCBtYWluKAotIAljaGFyCQkJKnJ0c2l6ZTsKLSAJeGZzX3NiX3QJCSpzYnA7Ci0gCWludAkJCXNlY3RvcmxvZzsKLS0JX191aW50NjRfdAkJc2VjdG9yX21hc2s7Ci0rCXVpbnQ2NF90CQlzZWN0b3JfbWFzazsKLSAJaW50CQkJc2xmbGFnOwotIAlpbnQJCQlzc2ZsYWc7Ci0tCV9fdWludDY0X3QJCXRtcF9hZ3NpemU7Ci0rCXVpbnQ2NF90CQl0bXBfYWdzaXplOwotIAl1dWlkX3QJCQl1dWlkOwotIAlpbnQJCQl3b3JzdF9mcmVlbGlzdDsKLSAJbGlieGZzX2luaXRfdAkJeGk7Ci1AQCAtMjE2Nyw3ICsyMTY3LDcgQEAgXygicm1hcGJ0IG5vdCBzdXBwb3J0ZWQgd2l0aCByZWFsdGltZSBkZXZpY2VzXG4iKSk7Ci0gCi0gCi0gCWlmIChkc2l6ZSkgewotLQkJX191aW50NjRfdCBkYnl0ZXM7Ci0rCQl1aW50NjRfdCBkYnl0ZXM7Ci0gCi0gCQlkYnl0ZXMgPSBnZXRudW0oZHNpemUsICZkb3B0cywgRF9TSVpFKTsKLSAJCWlmIChkYnl0ZXMgJSBYRlNfTUlOX0JMT0NLU0laRSkgewotQEAgLTIxOTksNyArMjE5OSw3IEBAIF8oInJtYXBidCBub3Qgc3VwcG9ydGVkIHdpdGggcmVhbHRpbWUgZGV2aWNlc1xuIikpOwotIAl9Ci0gCi0gCWlmIChsb2dzaXplKSB7Ci0tCQlfX3VpbnQ2NF90IGxvZ2J5dGVzOwotKwkJdWludDY0X3QgbG9nYnl0ZXM7Ci0gCi0gCQlsb2dieXRlcyA9IGdldG51bShsb2dzaXplLCAmbG9wdHMsIExfU0laRSk7Ci0gCQlpZiAobG9nYnl0ZXMgJSBYRlNfTUlOX0JMT0NLU0laRSkgewotQEAgLTIyMTYsNyArMjIxNiw3IEBAIF8oInJtYXBidCBub3Qgc3VwcG9ydGVkIHdpdGggcmVhbHRpbWUgZGV2aWNlc1xuIikpOwotIAkJCQkobG9uZyBsb25nKShsb2dibG9ja3MgPDwgYmxvY2tsb2cpKTsKLSAJfQotIAlpZiAocnRzaXplKSB7Ci0tCQlfX3VpbnQ2NF90IHJ0Ynl0ZXM7Ci0rCQl1aW50NjRfdCBydGJ5dGVzOwotIAotIAkJcnRieXRlcyA9IGdldG51bShydHNpemUsICZyb3B0cywgUl9TSVpFKTsKLSAJCWlmIChydGJ5dGVzICUgWEZTX01JTl9CTE9DS1NJWkUpIHsKLUBAIC0yMjM2LDcgKzIyMzYsNyBAQCBfKCJybWFwYnQgbm90IHN1cHBvcnRlZCB3aXRoIHJlYWx0aW1lIGRldmljZXNcbiIpKTsKLSAJICogSWYgc3BlY2lmaWVkLCBjaGVjayBydCBleHRlbnQgc2l6ZSBhZ2FpbnN0IGl0cyBjb25zdHJhaW50cy4KLSAJICovCi0gCWlmIChydGV4dHNpemUpIHsKLS0JCV9fdWludDY0X3QgcnRleHRieXRlczsKLSsJCXVpbnQ2NF90IHJ0ZXh0Ynl0ZXM7Ci0gCi0gCQlydGV4dGJ5dGVzID0gZ2V0bnVtKHJ0ZXh0c2l6ZSwgJnJvcHRzLCBSX0VYVFNJWkUpOwotIAkJaWYgKHJ0ZXh0Ynl0ZXMgJSBibG9ja3NpemUpIHsKLUBAIC0yMjUyLDggKzIyNTIsOCBAQCBfKCJybWFwYnQgbm90IHN1cHBvcnRlZCB3aXRoIHJlYWx0aW1lIGRldmljZXNcbiIpKTsKLSAJCSAqIGFuZCB0aGUgdW5kZXJseWluZyB2b2x1bWUgaXMgc3RyaXBlZCwgdGhlbiBzZXQgcnRleHRibG9ja3MKLSAJCSAqIHRvIHRoZSBzdHJpcGUgd2lkdGguCi0gCQkgKi8KLS0JCV9fdWludDY0X3QJcnN3aWR0aDsKLS0JCV9fdWludDY0X3QJcnRleHRieXRlczsKLSsJCXVpbnQ2NF90CXJzd2lkdGg7Ci0rCQl1aW50NjRfdAlydGV4dGJ5dGVzOwotIAotIAkJaWYgKCFub3JzZmxhZyAmJiAheGkucmlzZmlsZSAmJiAhKCFydHNpemUgJiYgeGkuZGlzZmlsZSkpCi0gCQkJcnN3aWR0aCA9IGZ0LnJ0c3dpZHRoOwotQEAgLTIzMzUsMTAgKzIzMzUsMTAgQEAgXygicm1hcGJ0IG5vdCBzdXBwb3J0ZWQgd2l0aCByZWFsdGltZSBkZXZpY2VzXG4iKSk7Ci0gCSAqIG11bHRpcGxlIG9mIHRoZSBzZWN0b3Igc2l6ZSwgb3IgMTAyNCwgd2hpY2hldmVyIGlzIGxhcmdlci4KLSAJICovCi0gCi0tCXNlY3Rvcl9tYXNrID0gKF9fdWludDY0X3QpLTEgPDwgKE1BWChzZWN0b3Jsb2csIDEwKSAtIEJCU0hJRlQpOwotKwlzZWN0b3JfbWFzayA9ICh1aW50NjRfdCktMSA8PCAoTUFYKHNlY3RvcmxvZywgMTApIC0gQkJTSElGVCk7Ci0gCXhpLmRzaXplICY9IHNlY3Rvcl9tYXNrOwotIAl4aS5ydHNpemUgJj0gc2VjdG9yX21hc2s7Ci0tCXhpLmxvZ0JCc2l6ZSAmPSAoX191aW50NjRfdCktMSA8PCAoTUFYKGxzZWN0b3Jsb2csIDEwKSAtIEJCU0hJRlQpOwotKwl4aS5sb2dCQnNpemUgJj0gKHVpbnQ2NF90KS0xIDw8IChNQVgobHNlY3RvcmxvZywgMTApIC0gQkJTSElGVCk7Ci0gCi0gCi0gCS8qIGRvbid0IGRvIGRpc2NhcmRzIG9uIHByaW50LW9ubHkgcnVucyBvciBvbiBmaWxlcyAqLwotQEAgLTI2OTYsOSArMjY5Niw5IEBAIF8oInNpemUgJXMgc3BlY2lmaWVkIGZvciBsb2cgc3Vidm9sdW1lIGlzIHRvbyBsYXJnZSwgbWF4aW11bSBpcyAlbGxkIGJsb2Nrc1xuIiksCi0gCW1wID0gJm1idWY7Ci0gCXNicCA9ICZtcC0+bV9zYjsKLSAJbWVtc2V0KG1wLCAwLCBzaXplb2YoeGZzX21vdW50X3QpKTsKLS0Jc2JwLT5zYl9ibG9ja2xvZyA9IChfX3VpbnQ4X3QpYmxvY2tsb2c7Ci0tCXNicC0+c2Jfc2VjdGxvZyA9IChfX3VpbnQ4X3Qpc2VjdG9ybG9nOwotLQlzYnAtPnNiX2FnYmxrbG9nID0gKF9fdWludDhfdClsaWJ4ZnNfbG9nMl9yb3VuZHVwKCh1bnNpZ25lZCBpbnQpYWdzaXplKTsKLSsJc2JwLT5zYl9ibG9ja2xvZyA9ICh1aW50OF90KWJsb2NrbG9nOwotKwlzYnAtPnNiX3NlY3Rsb2cgPSAodWludDhfdClzZWN0b3Jsb2c7Ci0rCXNicC0+c2JfYWdibGtsb2cgPSAodWludDhfdClsaWJ4ZnNfbG9nMl9yb3VuZHVwKCh1bnNpZ25lZCBpbnQpYWdzaXplKTsKLSAJc2JwLT5zYl9hZ2Jsb2NrcyA9ICh4ZnNfYWdibG9ja190KWFnc2l6ZTsKLSAJbXAtPm1fYmxrYmJfbG9nID0gc2JwLT5zYl9ibG9ja2xvZyAtIEJCU0hJRlQ7Ci0gCW1wLT5tX3NlY3RiYl9sb2cgPSBzYnAtPnNiX3NlY3Rsb2cgLSBCQlNISUZUOwotQEAgLTI4MDUsMTQgKzI4MDUsMTQgQEAgXygic2l6ZSAlcyBzcGVjaWZpZWQgZm9yIGxvZyBzdWJ2b2x1bWUgaXMgdG9vIGxhcmdlLCBtYXhpbXVtIGlzICVsbGQgYmxvY2tzXG4iKSwKLSAJc2JwLT5zYl9hZ2NvdW50ID0gKHhmc19hZ251bWJlcl90KWFnY291bnQ7Ci0gCXNicC0+c2JfcmJtYmxvY2tzID0gbmJtYmxvY2tzOwotIAlzYnAtPnNiX2xvZ2Jsb2NrcyA9ICh4ZnNfZXh0bGVuX3QpbG9nYmxvY2tzOwotLQlzYnAtPnNiX3NlY3RzaXplID0gKF9fdWludDE2X3Qpc2VjdG9yc2l6ZTsKLS0Jc2JwLT5zYl9pbm9kZXNpemUgPSAoX191aW50MTZfdClpc2l6ZTsKLS0Jc2JwLT5zYl9pbm9wYmxvY2sgPSAoX191aW50MTZfdCkoYmxvY2tzaXplIC8gaXNpemUpOwotLQlzYnAtPnNiX3NlY3Rsb2cgPSAoX191aW50OF90KXNlY3RvcmxvZzsKLS0Jc2JwLT5zYl9pbm9kZWxvZyA9IChfX3VpbnQ4X3QpaW5vZGVsb2c7Ci0tCXNicC0+c2JfaW5vcGJsb2cgPSAoX191aW50OF90KShibG9ja2xvZyAtIGlub2RlbG9nKTsKLSsJc2JwLT5zYl9zZWN0c2l6ZSA9ICh1aW50MTZfdClzZWN0b3JzaXplOwotKwlzYnAtPnNiX2lub2Rlc2l6ZSA9ICh1aW50MTZfdClpc2l6ZTsKLSsJc2JwLT5zYl9pbm9wYmxvY2sgPSAodWludDE2X3QpKGJsb2Nrc2l6ZSAvIGlzaXplKTsKLSsJc2JwLT5zYl9zZWN0bG9nID0gKHVpbnQ4X3Qpc2VjdG9ybG9nOwotKwlzYnAtPnNiX2lub2RlbG9nID0gKHVpbnQ4X3QpaW5vZGVsb2c7Ci0rCXNicC0+c2JfaW5vcGJsb2cgPSAodWludDhfdCkoYmxvY2tsb2cgLSBpbm9kZWxvZyk7Ci0gCXNicC0+c2JfcmV4dHNsb2cgPQotLQkJKF9fdWludDhfdCkocnRleHRlbnRzID8KLSsJCSh1aW50OF90KShydGV4dGVudHMgPwotIAkJCWxpYnhmc19oaWdoYml0MzIoKHVuc2lnbmVkIGludClydGV4dGVudHMpIDogMCk7Ci0gCXNicC0+c2JfaW5wcm9ncmVzcyA9IDE7CS8qIG1rZnMgaXMgaW4gcHJvZ3Jlc3MgKi8KLSAJc2JwLT5zYl9pbWF4X3BjdCA9IGltYXhwY3Q7Ci1AQCAtMjg0MCw4ICsyODQwLDggQEAgXygic2l6ZSAlcyBzcGVjaWZpZWQgZm9yIGxvZyBzdWJ2b2x1bWUgaXMgdG9vIGxhcmdlLCBtYXhpbXVtIGlzICVsbGQgYmxvY2tzXG4iKSwKLSAJfSBlbHNlCi0gCQlzYnAtPnNiX2lub2FsaWdubXQgPSAwOwotIAlpZiAobHNlY3RvcnNpemUgIT0gQkJTSVpFIHx8IHNlY3RvcnNpemUgIT0gQkJTSVpFKSB7Ci0tCQlzYnAtPnNiX2xvZ3NlY3Rsb2cgPSAoX191aW50OF90KWxzZWN0b3Jsb2c7Ci0tCQlzYnAtPnNiX2xvZ3NlY3RzaXplID0gKF9fdWludDE2X3QpbHNlY3RvcnNpemU7Ci0rCQlzYnAtPnNiX2xvZ3NlY3Rsb2cgPSAodWludDhfdClsc2VjdG9ybG9nOwotKwkJc2JwLT5zYl9sb2dzZWN0c2l6ZSA9ICh1aW50MTZfdClsc2VjdG9yc2l6ZTsKLSAJfSBlbHNlIHsKLSAJCXNicC0+c2JfbG9nc2VjdGxvZyA9IDA7Ci0gCQlzYnAtPnNiX2xvZ3NlY3RzaXplID0gMDsKLWRpZmYgLS1naXQgYS9xdW90YS9lZGl0LmMgYi9xdW90YS9lZGl0LmMKLWluZGV4IDM2YjMyN2E1Li44NDE4ZTg1OCAxMDA2NDQKLS0tLSBhL3F1b3RhL2VkaXQuYwotKysrIGIvcXVvdGEvZWRpdC5jCi1AQCAtMTE1LDE2ICsxMTUsMTYgQEAgd2Fybl9oZWxwKHZvaWQpCi0gCi0gc3RhdGljIHZvaWQKLSBzZXRfbGltaXRzKAotLQlfX3VpbnQzMl90CWlkLAotKwl1aW50MzJfdAlpZCwKLSAJdWludAkJdHlwZSwKLSAJdWludAkJbWFzaywKLSAJY2hhcgkJKmRldiwKLS0JX191aW50NjRfdAkqYnNvZnQsCi0tCV9fdWludDY0X3QJKmJoYXJkLAotLQlfX3VpbnQ2NF90CSppc29mdCwKLS0JX191aW50NjRfdAkqaWhhcmQsCi0tCV9fdWludDY0X3QJKnJ0YnNvZnQsCi0tCV9fdWludDY0X3QJKnJ0YmhhcmQpCi0rCXVpbnQ2NF90CSpic29mdCwKLSsJdWludDY0X3QJKmJoYXJkLAotKwl1aW50NjRfdAkqaXNvZnQsCi0rCXVpbnQ2NF90CSppaGFyZCwKLSsJdWludDY0X3QJKnJ0YnNvZnQsCi0rCXVpbnQ2NF90CSpydGJoYXJkKQotIHsKLSAJZnNfZGlza19xdW90YV90CWQ7Ci0gCi1AQCAtMTUyLDEyICsxNTIsMTIgQEAgc2V0X3VzZXJfbGltaXRzKAotIAljaGFyCQkqbmFtZSwKLSAJdWludAkJdHlwZSwKLSAJdWludAkJbWFzaywKLS0JX191aW50NjRfdAkqYnNvZnQsCi0tCV9fdWludDY0X3QJKmJoYXJkLAotLQlfX3VpbnQ2NF90CSppc29mdCwKLS0JX191aW50NjRfdAkqaWhhcmQsCi0tCV9fdWludDY0X3QJKnJ0YnNvZnQsCi0tCV9fdWludDY0X3QJKnJ0YmhhcmQpCi0rCXVpbnQ2NF90CSpic29mdCwKLSsJdWludDY0X3QJKmJoYXJkLAotKwl1aW50NjRfdAkqaXNvZnQsCi0rCXVpbnQ2NF90CSppaGFyZCwKLSsJdWludDY0X3QJKnJ0YnNvZnQsCi0rCXVpbnQ2NF90CSpydGJoYXJkKQotIHsKLSAJdWlkX3QJCXVpZCA9IHVpZF9mcm9tX3N0cmluZyhuYW1lKTsKLSAKLUBAIC0xNzUsMTIgKzE3NSwxMiBAQCBzZXRfZ3JvdXBfbGltaXRzKAotIAljaGFyCQkqbmFtZSwKLSAJdWludAkJdHlwZSwKLSAJdWludAkJbWFzaywKLS0JX191aW50NjRfdAkqYnNvZnQsCi0tCV9fdWludDY0X3QJKmJoYXJkLAotLQlfX3VpbnQ2NF90CSppc29mdCwKLS0JX191aW50NjRfdAkqaWhhcmQsCi0tCV9fdWludDY0X3QJKnJ0YnNvZnQsCi0tCV9fdWludDY0X3QJKnJ0YmhhcmQpCi0rCXVpbnQ2NF90CSpic29mdCwKLSsJdWludDY0X3QJKmJoYXJkLAotKwl1aW50NjRfdAkqaXNvZnQsCi0rCXVpbnQ2NF90CSppaGFyZCwKLSsJdWludDY0X3QJKnJ0YnNvZnQsCi0rCXVpbnQ2NF90CSpydGJoYXJkKQotIHsKLSAJZ2lkX3QJCWdpZCA9IGdpZF9mcm9tX3N0cmluZyhuYW1lKTsKLSAKLUBAIC0xOTgsMTIgKzE5OCwxMiBAQCBzZXRfcHJvamVjdF9saW1pdHMoCi0gCWNoYXIJCSpuYW1lLAotIAl1aW50CQl0eXBlLAotIAl1aW50CQltYXNrLAotLQlfX3VpbnQ2NF90CSpic29mdCwKLS0JX191aW50NjRfdAkqYmhhcmQsCi0tCV9fdWludDY0X3QJKmlzb2Z0LAotLQlfX3VpbnQ2NF90CSppaGFyZCwKLS0JX191aW50NjRfdAkqcnRic29mdCwKLS0JX191aW50NjRfdAkqcnRiaGFyZCkKLSsJdWludDY0X3QJKmJzb2Z0LAotKwl1aW50NjRfdAkqYmhhcmQsCi0rCXVpbnQ2NF90CSppc29mdCwKLSsJdWludDY0X3QJKmloYXJkLAotKwl1aW50NjRfdAkqcnRic29mdCwKLSsJdWludDY0X3QJKnJ0YmhhcmQpCi0gewotIAlwcmlkX3QJCXByaWQgPSBwcmlkX2Zyb21fc3RyaW5nKG5hbWUpOwotIAotQEAgLTIyNCw3ICsyMjQsNyBAQCBleHRyYWN0YigKLSAJaW50CQlsZW5ndGgsCi0gCXVpbnQJCWJsb2Nrc2l6ZSwKLSAJdWludAkJc2VjdG9yc2l6ZSwKLS0JX191aW50NjRfdAkqdmFsdWUpCi0rCXVpbnQ2NF90CSp2YWx1ZSkKLSB7Ci0gCWxvbmcgbG9uZwl2OwotIAljaGFyCQkqcyA9IHN0cmluZzsKLUBAIC0yMzgsNyArMjM4LDcgQEAgZXh0cmFjdGIoCi0gCQkJCXByb2duYW1lLCBzKTsKLSAJCQlyZXR1cm4gMDsKLSAJCX0KLS0JCSp2YWx1ZSA9IChfX3VpbnQ2NF90KXYgPj4gOTsJLyogc3lzY2FsbHMgdXNlIGJhc2ljIGJsb2NrcyAqLwotKwkJKnZhbHVlID0gKHVpbnQ2NF90KXYgPj4gOTsJLyogc3lzY2FsbHMgdXNlIGJhc2ljIGJsb2NrcyAqLwotIAkJaWYgKHYgPiAwICYmICp2YWx1ZSA9PSAwKQotIAkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogV2FybmluZzogYCVzJyBpbiBxdW90YSBibG9ja3MgaXMgMCAodW5saW1pdGVkKS5cbiIpLCBwcm9nbmFtZSwgcyk7Ci0gCQlyZXR1cm4gMTsKLUBAIC0yNTIsNyArMjUyLDcgQEAgZXh0cmFjdGkoCi0gCWNoYXIJCSpzdHJpbmcsCi0gCWNvbnN0IGNoYXIJKnByZWZpeCwKLSAJaW50CQlsZW5ndGgsCi0tCV9fdWludDY0X3QJKnZhbHVlKQotKwl1aW50NjRfdAkqdmFsdWUpCi0gewotIAljaGFyCQkqc3AsICpzID0gc3RyaW5nOwotIAotQEAgLTI3MCw3ICsyNzAsNyBAQCBsaW1pdF9mKAotIAljaGFyCQkqKmFyZ3YpCi0gewotIAljaGFyCQkqbmFtZTsKLS0JX191aW50NjRfdAlic29mdCwgYmhhcmQsIGlzb2Z0LCBpaGFyZCwgcnRic29mdCwgcnRiaGFyZDsKLSsJdWludDY0X3QJYnNvZnQsIGJoYXJkLCBpc29mdCwgaWhhcmQsIHJ0YnNvZnQsIHJ0YmhhcmQ7Ci0gCWludAkJYywgdHlwZSA9IDAsIG1hc2sgPSAwLCBmbGFncyA9IDA7Ci0gCXVpbnQJCWJzaXplLCBzc2l6ZSwgZW5kb3B0aW9uczsKLSAKLUBAIC0zODQsOCArMzg0LDggQEAgcmVzdG9yZV9maWxlKAotIAljaGFyCQkqZGV2ID0gTlVMTDsKLSAJdWludAkJbWFzazsKLSAJaW50CQljbnQ7Ci0tCV9fdWludDMyX3QJaWQ7Ci0tCV9fdWludDY0X3QJYnNvZnQsIGJoYXJkLCBpc29mdCwgaWhhcmQsIHJ0YnNvZnQsIHJ0YmhhcmQ7Ci0rCXVpbnQzMl90CWlkOwotKwl1aW50NjRfdAlic29mdCwgYmhhcmQsIGlzb2Z0LCBpaGFyZCwgcnRic29mdCwgcnRiaGFyZDsKLSAKLSAJd2hpbGUgKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGZwKSAhPSBOVUxMKSB7Ci0gCQlpZiAoc3RybmNtcCgiZnMgPSAiLCBidWZmZXIsIDUpID09IDApIHsKLUBAIC01NDYsNyArNTQ2LDcgQEAgdGltZXJfZigKLSAKLSBzdGF0aWMgdm9pZAotIHNldF93YXJuaW5ncygKLS0JX191aW50MzJfdAlpZCwKLSsJdWludDMyX3QJaWQsCi0gCXVpbnQJCXR5cGUsCi0gCXVpbnQJCW1hc2ssCi0gCWNoYXIJCSpkZXYsCi1kaWZmIC0tZ2l0IGEvcXVvdGEvZnJlZS5jIGIvcXVvdGEvZnJlZS5jCi1pbmRleCBjZWUxNWVlOS4uMWY4Mzc4ZDIgMTAwNjQ0Ci0tLS0gYS9xdW90YS9mcmVlLmMKLSsrKyBiL3F1b3RhL2ZyZWUuYwotQEAgLTQ5LDIwICs0OSwyMCBAQCBmcmVlX2hlbHAodm9pZCkKLSBzdGF0aWMgaW50Ci0gbW91bnRfZnJlZV9zcGFjZV9kYXRhKAotIAlzdHJ1Y3QgZnNfcGF0aAkJKm1vdW50LAotLQlfX3VpbnQ2NF90CQkqYmNvdW50LAotLQlfX3VpbnQ2NF90CQkqYnVzZWQsCi0tCV9fdWludDY0X3QJCSpiZnJlZSwKLS0JX191aW50NjRfdAkJKmljb3VudCwKLS0JX191aW50NjRfdAkJKml1c2VkLAotLQlfX3VpbnQ2NF90CQkqaWZyZWUsCi0tCV9fdWludDY0X3QJCSpyY291bnQsCi0tCV9fdWludDY0X3QJCSpydXNlZCwKLS0JX191aW50NjRfdAkJKnJmcmVlKQotKwl1aW50NjRfdAkJKmJjb3VudCwKLSsJdWludDY0X3QJCSpidXNlZCwKLSsJdWludDY0X3QJCSpiZnJlZSwKLSsJdWludDY0X3QJCSppY291bnQsCi0rCXVpbnQ2NF90CQkqaXVzZWQsCi0rCXVpbnQ2NF90CQkqaWZyZWUsCi0rCXVpbnQ2NF90CQkqcmNvdW50LAotKwl1aW50NjRfdAkJKnJ1c2VkLAotKwl1aW50NjRfdAkJKnJmcmVlKQotIHsKLSAJc3RydWN0IHhmc19mc29wX2NvdW50cwlmc2NvdW50czsKLSAJc3RydWN0IHhmc19mc29wX2dlb20JZnNnZW87Ci0gCXN0cnVjdCBzdGF0ZnMJCXN0OwotLQlfX3VpbnQ2NF90CQlsb2dzaXplLCBjb3VudCwgZnJlZTsKLSsJdWludDY0X3QJCWxvZ3NpemUsIGNvdW50LCBmcmVlOwotIAlpbnQJCQlmZDsKLSAKLSAJaWYgKChmZCA9IG9wZW4obW91bnQtPmZzX2RpciwgT19SRE9OTFkpKSA8IDApIHsKLUBAIC0xMzIsMTUgKzEzMiwxNSBAQCBtb3VudF9mcmVlX3NwYWNlX2RhdGEoCi0gc3RhdGljIGludAotIHByb2plY3RzX2ZyZWVfc3BhY2VfZGF0YSgKLSAJc3RydWN0IGZzX3BhdGgJCSpwYXRoLAotLQlfX3VpbnQ2NF90CQkqYmNvdW50LAotLQlfX3VpbnQ2NF90CQkqYnVzZWQsCi0tCV9fdWludDY0X3QJCSpiZnJlZSwKLS0JX191aW50NjRfdAkJKmljb3VudCwKLS0JX191aW50NjRfdAkJKml1c2VkLAotLQlfX3VpbnQ2NF90CQkqaWZyZWUsCi0tCV9fdWludDY0X3QJCSpyY291bnQsCi0tCV9fdWludDY0X3QJCSpydXNlZCwKLS0JX191aW50NjRfdAkJKnJmcmVlKQotKwl1aW50NjRfdAkJKmJjb3VudCwKLSsJdWludDY0X3QJCSpidXNlZCwKLSsJdWludDY0X3QJCSpiZnJlZSwKLSsJdWludDY0X3QJCSppY291bnQsCi0rCXVpbnQ2NF90CQkqaXVzZWQsCi0rCXVpbnQ2NF90CQkqaWZyZWUsCi0rCXVpbnQ2NF90CQkqcmNvdW50LAotKwl1aW50NjRfdAkJKnJ1c2VkLAotKwl1aW50NjRfdAkJKnJmcmVlKQotIHsKLSAJZnNfcXVvdGFfc3RhdF90CQlxZnM7Ci0gCWZzX2Rpc2tfcXVvdGFfdAkJZDsKLUBAIC0yMjYsOSArMjI2LDkgQEAgZnJlZV9zcGFjZSgKLSAJZnNfcGF0aF90CSpwYXRoLAotIAl1aW50CQlmbGFncykKLSB7Ci0tCV9fdWludDY0X3QJYmNvdW50LCBidXNlZCwgYmZyZWU7Ci0tCV9fdWludDY0X3QJaWNvdW50LCBpdXNlZCwgaWZyZWU7Ci0tCV9fdWludDY0X3QJcmNvdW50LCBydXNlZCwgcmZyZWU7Ci0rCXVpbnQ2NF90CWJjb3VudCwgYnVzZWQsIGJmcmVlOwotKwl1aW50NjRfdAlpY291bnQsIGl1c2VkLCBpZnJlZTsKLSsJdWludDY0X3QJcmNvdW50LCBydXNlZCwgcmZyZWU7Ci0gCWNoYXIJCWFbOF0sIHNbOF0sIHVbOF0sIHBbOF07Ci0gCWludAkJY291bnQ7Ci0gCi1kaWZmIC0tZ2l0IGEvcXVvdGEvcXVvdC5jIGIvcXVvdGEvcXVvdC5jCi1pbmRleCBjY2MxNTRmNS4uNjM3OGZiYjcgMTAwNjQ0Ci0tLS0gYS9xdW90YS9xdW90LmMKLSsrKyBiL3F1b3RhL3F1b3QuYwotQEAgLTI2LDE3ICsyNiwxNyBAQAotIAotIHR5cGVkZWYgc3RydWN0IGR1IHsKLSAJc3RydWN0IGR1CSpuZXh0OwotLQlfX3VpbnQ2NF90CWJsb2NrczsKLS0JX191aW50NjRfdAlibG9ja3MzMDsKLS0JX191aW50NjRfdAlibG9ja3M2MDsKLS0JX191aW50NjRfdAlibG9ja3M5MDsKLS0JX191aW50NjRfdAluZmlsZXM7Ci0tCV9fdWludDMyX3QJaWQ7Ci0rCXVpbnQ2NF90CWJsb2NrczsKLSsJdWludDY0X3QJYmxvY2tzMzA7Ci0rCXVpbnQ2NF90CWJsb2NrczYwOwotKwl1aW50NjRfdAlibG9ja3M5MDsKLSsJdWludDY0X3QJbmZpbGVzOwotKwl1aW50MzJfdAlpZDsKLSB9IGR1X3Q7Ci0gCi0gI2RlZmluZQlUU0laRQkJNTAwCi0tc3RhdGljIF9fdWludDY0X3QJc2l6ZXNbVFNJWkVdOwotLXN0YXRpYyBfX3VpbnQ2NF90CW92ZXJmbG93OwotK3N0YXRpYyB1aW50NjRfdAlzaXplc1tUU0laRV07Ci0rc3RhdGljIHVpbnQ2NF90CW92ZXJmbG93OwotIAotICNkZWZpbmUJTkRVCQk2MDAwMAotICNkZWZpbmUJRFVIQVNICQk4MjA5Ci1AQCAtODQsOCArODQsOCBAQCBxdW90X2J1bGtzdGF0X2FkZCgKLSB7Ci0gCWR1X3QJCSpkcDsKLSAJZHVfdAkJKipocDsKLS0JX191aW50NjRfdAlzaXplOwotLQlfX3VpbnQzMl90CWksIGlkOwotKwl1aW50NjRfdAlzaXplOwotKwl1aW50MzJfdAlpLCBpZDsKLSAKLSAJaWYgKChwLT5ic19tb2RlICYgU19JRk1UKSA9PSAwKQotIAkJcmV0dXJuOwotQEAgLTIwMyw3ICsyMDMsNyBAQCBxY29tcGFyZSgKLSAJcmV0dXJuIDA7Ci0gfQotIAotLXR5cGVkZWYgY2hhciAqKCppZHRvbmFtZV90KShfX3VpbnQzMl90KTsKLSt0eXBlZGVmIGNoYXIgKigqaWR0b25hbWVfdCkodWludDMyX3QpOwotIAotIHN0YXRpYyB2b2lkCi0gcXVvdF9yZXBvcnRfbW91bnRfYW55X3R5cGUoCi1AQCAtMjkxLDcgKzI5MSw3IEBAIHF1b3RfaGlzdG9ncmFtX21vdW50KAotIAlmc19wYXRoX3QJKm1vdW50LAotIAl1aW50CQlmbGFncykKLSB7Ci0tCV9fdWludDY0X3QJdCA9IDA7Ci0rCXVpbnQ2NF90CXQgPSAwOwotIAlpbnQJCWk7Ci0gCi0gCWZwcmludGYoZnAsIF8oIiVzICglcyk6XG4iKSwgbW91bnQtPmZzX25hbWUsIG1vdW50LT5mc19kaXIpOwotZGlmZiAtLWdpdCBhL3F1b3RhL3F1b3RhLmMgYi9xdW90YS9xdW90YS5jCi1pbmRleCBkMDllMjM5Yi4uNDc5Yjk3MGUgMTAwNjQ0Ci0tLS0gYS9xdW90YS9xdW90YS5jCi0rKysgYi9xdW90YS9xdW90YS5jCi1AQCAtNTIsNyArNTIsNyBAQCBxdW90YV9oZWxwKHZvaWQpCi0gc3RhdGljIGludAotIHF1b3RhX21vdW50KAotIAlGSUxFCQkqZnAsCi0tCV9fdWludDMyX3QJaWQsCi0rCXVpbnQzMl90CWlkLAotIAljaGFyCQkqbmFtZSwKLSAJdWludAkJZm9ybSwKLSAJdWludAkJdHlwZSwKLUBAIC0xODEsNyArMTgxLDcgQEAgcXVvdGFfbW91bnQoCi0gc3RhdGljIHZvaWQKLSBxdW90YSgKLSAJRklMRQkJKmZwLAotLQlfX3VpbnQzMl90CWlkLAotKwl1aW50MzJfdAlpZCwKLSAJY2hhcgkJKm5hbWUsCi0gCXVpbnQJCWZvcm0sCi0gCXVpbnQJCXR5cGUsCi1kaWZmIC0tZ2l0IGEvcXVvdGEvcXVvdGEuaCBiL3F1b3RhL3F1b3RhLmgKLWluZGV4IDRiZGUzNTEzLi45ZWQyOGJlZSAxMDA2NDQKLS0tLSBhL3F1b3RhL3F1b3RhLmgKLSsrKyBiL3F1b3RhL3F1b3RhLmgKLUBAIC01Myw5ICs1Myw5IEBAIGVudW0gewotIGV4dGVybiBjaGFyICp0eXBlX3RvX3N0cmluZyh1aW50IF9fdHlwZSk7Ci0gZXh0ZXJuIGNoYXIgKmZvcm1fdG9fc3RyaW5nKHVpbnQgX19mb3JtKTsKLSBleHRlcm4gY2hhciAqdGltZV90b19zdHJpbmcodGltZV90IF9fdGltZSwgdWludCBfX2ZsYWdzKTsKLS1leHRlcm4gY2hhciAqYmJzX3RvX3N0cmluZyhfX3VpbnQ2NF90IF9fdiwgY2hhciAqX19jLCB1aW50IF9fc2l6ZSk7Ci0tZXh0ZXJuIGNoYXIgKm51bV90b19zdHJpbmcoX191aW50NjRfdCBfX3YsIGNoYXIgKl9fYywgdWludCBfX3NpemUpOwotLWV4dGVybiBjaGFyICpwY3RfdG9fc3RyaW5nKF9fdWludDY0X3QgX192LCBfX3VpbnQ2NF90IF9fdCwgY2hhciAqX19jLCB1aW50IF9fcyk7Ci0rZXh0ZXJuIGNoYXIgKmJic190b19zdHJpbmcodWludDY0X3QgX192LCBjaGFyICpfX2MsIHVpbnQgX19zaXplKTsKLStleHRlcm4gY2hhciAqbnVtX3RvX3N0cmluZyh1aW50NjRfdCBfX3YsIGNoYXIgKl9fYywgdWludCBfX3NpemUpOwotK2V4dGVybiBjaGFyICpwY3RfdG9fc3RyaW5nKHVpbnQ2NF90IF9fdiwgdWludDY0X3QgX190LCBjaGFyICpfX2MsIHVpbnQgX19zKTsKLSAKLSBleHRlcm4gRklMRSAqZm9wZW5fd3JpdGVfc2VjdXJlKGNoYXIgKl9fZmlsZW5hbWUpOwotIAotQEAgLTgxLDcgKzgxLDcgQEAgZW51bSB7Ci0gICogSWRlbnRpZmllciAodWlkL2dpZC9wcmlkKSBjYWNoZSByb3V0aW5lcwotICAqLwotICNkZWZpbmUgTk1BWCAzMgotLWV4dGVybiBjaGFyICp1aWRfdG9fbmFtZShfX3VpbnQzMl90IF9fdWlkKTsKLS1leHRlcm4gY2hhciAqZ2lkX3RvX25hbWUoX191aW50MzJfdCBfX2dpZCk7Ci0tZXh0ZXJuIGNoYXIgKnByaWRfdG9fbmFtZShfX3VpbnQzMl90IF9fcHJpZCk7Ci0rZXh0ZXJuIGNoYXIgKnVpZF90b19uYW1lKHVpbnQzMl90IF9fdWlkKTsKLStleHRlcm4gY2hhciAqZ2lkX3RvX25hbWUodWludDMyX3QgX19naWQpOwotK2V4dGVybiBjaGFyICpwcmlkX3RvX25hbWUodWludDMyX3QgX19wcmlkKTsKLSBleHRlcm4gYm9vbCBpc2RpZ2l0c19vbmx5KGNvbnN0IGNoYXIgKik7Ci1kaWZmIC0tZ2l0IGEvcXVvdGEvcmVwb3J0LmMgYi9xdW90YS9yZXBvcnQuYwotaW5kZXggZDA1MDljMjUuLmIyZWEzYmJlIDEwMDY0NAotLS0tIGEvcXVvdGEvcmVwb3J0LmMKLSsrKyBiL3F1b3RhL3JlcG9ydC5jCi1AQCAtMzMzLDkgKzMzMyw5IEBAIHJlcG9ydF9oZWFkZXIoCi0gc3RhdGljIGludAotIHJlcG9ydF9tb3VudCgKLSAJRklMRQkJKmZwLAotLQlfX3VpbnQzMl90CWlkLAotKwl1aW50MzJfdAlpZCwKLSAJY2hhcgkJKm5hbWUsCi0tCV9fdWludDMyX3QJKm9pZCwKLSsJdWludDMyX3QJKm9pZCwKLSAJdWludAkJZm9ybSwKLSAJdWludAkJdHlwZSwKLSAJZnNfcGF0aF90CSptb3VudCwKLWRpZmYgLS1naXQgYS9xdW90YS9zdGF0ZS5jIGIvcXVvdGEvc3RhdGUuYwotaW5kZXggMDlkZmE3MDUuLmIwOGJmNTBiIDEwMDY0NAotLS0tIGEvcXVvdGEvc3RhdGUuYwotKysrIGIvcXVvdGEvc3RhdGUuYwotQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZAotIHN0YXRlX3RpbWVsaW1pdCgKLSAJRklMRQkJKmZwLAotIAl1aW50CQlmb3JtLAotLQlfX3VpbnQzMl90CXRpbWVsaW1pdCkKLSsJdWludDMyX3QJdGltZWxpbWl0KQotIHsKLSAJZnByaW50ZihmcCwgXygiJXMgZ3JhY2UgdGltZTogJXNcbiIpLAotIAkJZm9ybV90b19zdHJpbmcoZm9ybSksCi1kaWZmIC0tZ2l0IGEvcXVvdGEvdXRpbC5jIGIvcXVvdGEvdXRpbC5jCi1pbmRleCBjYWZkNDVmNS4uMzc4NDBhODYgMTAwNjQ0Ci0tLS0gYS9xdW90YS91dGlsLmMKLSsrKyBiL3F1b3RhL3V0aWwuYwotQEAgLTk0LDggKzk0LDggQEAgcm91bmRfc25wcmludGYoCi0gCXNpemVfdAkJc2l6ZSwKLSAJY29uc3QgY2hhcgkqZm10X3JvdW5kLAotIAljb25zdCBjaGFyCSpmbXRfbm90X3JvdW5kLAotLQlfX3VpbnQ2NF90CXZhbHVlLAotLQlfX3VpbnQ2NF90CWRpdmlzb3IpCi0rCXVpbnQ2NF90CXZhbHVlLAotKwl1aW50NjRfdAlkaXZpc29yKQotIHsKLSAJZG91YmxlCQl2ID0gKGRvdWJsZSl2YWx1ZSAvIGRpdmlzb3I7Ci0gCi1AQCAtMTA3LDIzICsxMDcsMjMgQEAgcm91bmRfc25wcmludGYoCi0gfQotIAotIC8qIEJhc2ljIGJsb2NrcyAoNTEyKSBieXRlcyBhcmUgcmV0dXJuZWQgZnJvbSBxdW90YWN0bCAqLwotLSNkZWZpbmUgQkJTX1RPX0VYQUJZVEVTKGJicykJKChfX3VpbnQ2NF90KShiYnMpPj41MSkKLS0jZGVmaW5lIEJCU19UT19QRVRBQllURVMoYmJzKQkoKF9fdWludDY0X3QpKGJicyk+PjQxKQotLSNkZWZpbmUgQkJTX1RPX1RFUkFCWVRFUyhiYnMpCSgoX191aW50NjRfdCkoYmJzKT4+MzEpCi0tI2RlZmluZSBCQlNfVE9fR0lHQUJZVEVTKGJicykJKChfX3VpbnQ2NF90KShiYnMpPj4yMSkKLS0jZGVmaW5lIEJCU19UT19NRUdBQllURVMoYmJzKQkoKF9fdWludDY0X3QpKGJicyk+PjExKQotLSNkZWZpbmUgQkJTX1RPX0tJTE9CWVRFUyhiYnMpCSgoX191aW50NjRfdCkoYmJzKT4+MSkKLS0KLS0jZGVmaW5lIEJCRVhBQllURQkJKChfX3VpbnQ2NF90KTE8PDUxKQotLSNkZWZpbmUgQkJQRVRBQllURQkJKChfX3VpbnQ2NF90KTE8PDQxKQotLSNkZWZpbmUgQkJURVJBQllURQkJKChfX3VpbnQ2NF90KTE8PDMxKQotLSNkZWZpbmUgQkJHSUdBQllURQkJKChfX3VpbnQ2NF90KTE8PDIxKQotLSNkZWZpbmUgQkJNRUdBQllURQkJKChfX3VpbnQ2NF90KTE8PDExKQotLSNkZWZpbmUgQkJLSUxPQllURQkJKChfX3VpbnQ2NF90KTE8PCAxKQotKyNkZWZpbmUgQkJTX1RPX0VYQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+NTEpCi0rI2RlZmluZSBCQlNfVE9fUEVUQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+NDEpCi0rI2RlZmluZSBCQlNfVE9fVEVSQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+MzEpCi0rI2RlZmluZSBCQlNfVE9fR0lHQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+MjEpCi0rI2RlZmluZSBCQlNfVE9fTUVHQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+MTEpCi0rI2RlZmluZSBCQlNfVE9fS0lMT0JZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+MSkKLSsKLSsjZGVmaW5lIEJCRVhBQllURQkJKCh1aW50NjRfdCkxPDw1MSkKLSsjZGVmaW5lIEJCUEVUQUJZVEUJCSgodWludDY0X3QpMTw8NDEpCi0rI2RlZmluZSBCQlRFUkFCWVRFCQkoKHVpbnQ2NF90KTE8PDMxKQotKyNkZWZpbmUgQkJHSUdBQllURQkJKCh1aW50NjRfdCkxPDwyMSkKLSsjZGVmaW5lIEJCTUVHQUJZVEUJCSgodWludDY0X3QpMTw8MTEpCi0rI2RlZmluZSBCQktJTE9CWVRFCQkoKHVpbnQ2NF90KTE8PCAxKQotIAotIGNoYXIgKgotIGJic190b19zdHJpbmcoCi0tCV9fdWludDY0X3QJdiwKLSsJdWludDY0X3QJdiwKLSAJY2hhcgkJKnNwLAotIAl1aW50CQlzaXplKQotIHsKLUBAIC0xNDYsMTcgKzE0NiwxNyBAQCBiYnNfdG9fc3RyaW5nKAotIAlyZXR1cm4gc3A7Ci0gfQotIAotLSNkZWZpbmUgVEhPVVNBTkQJCSgoX191aW50NjRfdCkxMDAwKQotLSNkZWZpbmUgTUlMTElPTgkJCSgoX191aW50NjRfdCkxMDAwKjEwMDApCi0tI2RlZmluZSBCSUxMSU9OCQkJKChfX3VpbnQ2NF90KTEwMDAqMTAwMCoxMDAwKQotLSNkZWZpbmUgVFJJTExJT04JCSgoX191aW50NjRfdCkxMDAwKjEwMDAqMTAwMCoxMDAwKQotLSNkZWZpbmUgR0FaSUxMSU9OCQkoKF9fdWludDY0X3QpMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKQotLSNkZWZpbmUgUklESUNVTE9VUwkJKChfX3VpbnQ2NF90KTEwMDAqMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKQotLSNkZWZpbmUgU1RPUEFMUkVBRFkJCSgoX191aW50NjRfdCkxMDAwKjEwMDAqMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKQotKyNkZWZpbmUgVEhPVVNBTkQJCSgodWludDY0X3QpMTAwMCkKLSsjZGVmaW5lIE1JTExJT04JCQkoKHVpbnQ2NF90KTEwMDAqMTAwMCkKLSsjZGVmaW5lIEJJTExJT04JCQkoKHVpbnQ2NF90KTEwMDAqMTAwMCoxMDAwKQotKyNkZWZpbmUgVFJJTExJT04JCSgodWludDY0X3QpMTAwMCoxMDAwKjEwMDAqMTAwMCkKLSsjZGVmaW5lIEdBWklMTElPTgkJKCh1aW50NjRfdCkxMDAwKjEwMDAqMTAwMCoxMDAwKjEwMDApCi0rI2RlZmluZSBSSURJQ1VMT1VTCQkoKHVpbnQ2NF90KTEwMDAqMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKQotKyNkZWZpbmUgU1RPUEFMUkVBRFkJCSgodWludDY0X3QpMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKjEwMDAqMTAwMCkKLSAKLSBjaGFyICoKLSBudW1fdG9fc3RyaW5nKAotLQlfX3VpbnQ2NF90CXYsCi0rCXVpbnQ2NF90CXYsCi0gCWNoYXIJCSpzcCwKLSAJdWludAkJc2l6ZSkKLSB7Ci1AQCAtMTgzLDggKzE4Myw4IEBAIG51bV90b19zdHJpbmcoCi0gCi0gY2hhciAqCi0gcGN0X3RvX3N0cmluZygKLS0JX191aW50NjRfdAlwb3J0aW9uLAotLQlfX3VpbnQ2NF90CXdob2xlLAotKwl1aW50NjRfdAlwb3J0aW9uLAotKwl1aW50NjRfdAl3aG9sZSwKLSAJY2hhcgkJKmJ1ZiwKLSAJdWludAkJc2l6ZSkKLSB7Ci1AQCAtMjM3LDcgKzIzNyw3IEBAIHR5cGVfdG9fc3RyaW5nKAotICNkZWZpbmUgSURNQVNLCQkoTklELTEpCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgewotLQlfX3VpbnQzMl90CWlkOwotKwl1aW50MzJfdAlpZDsKLSAJY2hhcgkJbmFtZVtOTUFYKzFdOwotIH0gaWRjYWNoZV90OwotIAotQEAgLTI1MCw3ICsyNTAsNyBAQCBzdGF0aWMgaW50CQlwZW50cmllc2xlZnQgPSBOSUQ7Ci0gCi0gc3RhdGljIGlkY2FjaGVfdCAqCi0gZ2V0bmV4dHB3ZW50KAotLQlfX3VpbnQzMl90CWlkLAotKwl1aW50MzJfdAlpZCwKLSAJaW50CQlieWlkKQotIHsKLSAJc3RydWN0IHBhc3N3ZAkqcHc7Ci1AQCAtMjY2LDcgKzI2Niw3IEBAIGdldG5leHRwd2VudCgKLSAKLSBzdGF0aWMgaWRjYWNoZV90ICoKLSBnZXRuZXh0Z3JlbnQoCi0tCV9fdWludDMyX3QJaWQsCi0rCXVpbnQzMl90CWlkLAotIAlpbnQJCWJ5aWQpCi0gewotIAlzdHJ1Y3QgZ3JvdXAJKmdyOwotQEAgLTI4MSw3ICsyODEsNyBAQCBnZXRuZXh0Z3JlbnQoCi0gCi0gc3RhdGljIGlkY2FjaGVfdCAqCi0gZ2V0bmV4dHByZW50KAotLQlfX3VpbnQzMl90CWlkLAotKwl1aW50MzJfdAlpZCwKLSAJaW50CQlieWlkKQotIHsKLSAJZnNfcHJvamVjdF90CSpwcjsKLUBAIC0yOTYsNyArMjk2LDcgQEAgZ2V0bmV4dHByZW50KAotIAotIGNoYXIgKgotIHVpZF90b19uYW1lKAotLQlfX3VpbnQzMl90CWlkKQotKwl1aW50MzJfdAlpZCkKLSB7Ci0gCWlkY2FjaGVfdAkqbmNwLCAqaWRwOwotIAotQEAgLTMzMyw3ICszMzMsNyBAQCB1aWRfdG9fbmFtZSgKLSAKLSBjaGFyICoKLSBnaWRfdG9fbmFtZSgKLS0JX191aW50MzJfdAlpZCkKLSsJdWludDMyX3QJaWQpCi0gewotIAlpZGNhY2hlX3QJKm5jcCwgKmlkcDsKLSAKLUBAIC0zNzAsNyArMzcwLDcgQEAgZ2lkX3RvX25hbWUoCi0gCi0gY2hhciAqCi0gcHJpZF90b19uYW1lKAotLQlfX3VpbnQzMl90CWlkKQotKwl1aW50MzJfdAlpZCkKLSB7Ci0gCWlkY2FjaGVfdAkqbmNwLCAqaWRwOwotIAotZGlmZiAtLWdpdCBhL3JlcGFpci9SRUFETUUgYi9yZXBhaXIvUkVBRE1FCi1pbmRleCA3ZjE2OGU2OS4uNDY5MjQ2M2QgMTAwNjQ0Ci0tLS0gYS9yZXBhaXIvUkVBRE1FCi0rKysgYi9yZXBhaXIvUkVBRE1FCi1AQCAtMTg5LDcgKzE4OSw3IEBAIEQgLSAwKSBsb29rIGF0IHVzYWdlIG9mIFhGU19NQUtFX0lQVFIoKS4gIEl0IGRvZXMgdGhlIHJpZ2h0Ci0gCi0gCi0gRCAtIDApIGxvb2sgYXQgcmVmZXJlbmNlcyB0byBYRlNfSU5PREVTX1BFUl9DSFVOSy4gIGNoYW5nZSB0aGUKLS0Jb25lcyB0aGF0IHJlYWxseSBtZWFuIHNpemVvZihfX3VpbnQ2NF90KSpOQkJZIHRvCi0rCW9uZXMgdGhhdCByZWFsbHkgbWVhbiBzaXplb2YodWludDY0X3QpKk5CQlkgdG8KLSAJc29tZXRoaW5nIGVsc2UgKGxpa2UgdGhhdCBvbmx5IGRlZmluZWQgYXMgYSBjb25zdGFudAotIAlJTk9TX1BFUl9JUkVDLiB0aGlzIGlzbid0IGFzIGltcG9ydGFudCBzaW5jZQotIAlYRlNfSU5PREVTX1BFUl9DSFVOSyB3aWxsIG5ldmVyIGNoYW5nCi1kaWZmIC0tZ2l0IGEvcmVwYWlyL2FnaGVhZGVyLmggYi9yZXBhaXIvYWdoZWFkZXIuaAotaW5kZXggNmIyOTc0Y2EuLjJmNzI0NmQyIDEwMDY0NAotLS0tIGEvcmVwYWlyL2FnaGVhZGVyLmgKLSsrKyBiL3JlcGFpci9hZ2hlYWRlci5oCi1AQCAtMjAsNyArMjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBmc19nZW9tZXRyeSAgewotIAkvKgotIAkgKiB0aGVzZSB0eXBlcyBzaG91bGQgbWF0Y2ggdGhlIHN1cGVyYmxvY2sgdHlwZXMKLSAJICovCi0tCV9fdWludDMyX3QJc2JfYmxvY2tzaXplOwkvKiBibG9ja3NpemUgKGJ5dGVzKSAqLwotKwl1aW50MzJfdAlzYl9ibG9ja3NpemU7CS8qIGJsb2Nrc2l6ZSAoYnl0ZXMpICovCi0gCXhmc19yZnNibG9ja190CXNiX2RibG9ja3M7CS8qICMgZGF0YSBibG9ja3MgKi8KLSAJeGZzX3Jmc2Jsb2NrX3QJc2JfcmJsb2NrczsJLyogIyByZWFsdGltZSBibG9ja3MgKi8KLSAJeGZzX3J0YmxvY2tfdAlzYl9yZXh0ZW50czsJLyogIyByZWFsdGltZSBleHRlbnRzICovCi1AQCAtMzAsOSArMzAsOSBAQCB0eXBlZGVmIHN0cnVjdCBmc19nZW9tZXRyeSAgewotIAl4ZnNfYWdudW1iZXJfdAlzYl9hZ2NvdW50OwkvKiAjIG9mIGFncyAqLwotIAl4ZnNfZXh0bGVuX3QJc2JfcmJtYmxvY2tzOwkvKiAjIG9mIHJ0IGJpdG1hcCBibG9ja3MgKi8KLSAJeGZzX2V4dGxlbl90CXNiX2xvZ2Jsb2NrczsJLyogIyBvZiBsb2cgYmxvY2tzICovCi0tCV9fdWludDE2X3QJc2Jfc2VjdHNpemU7CS8qIHZvbHVtZSBzZWN0b3Igc2l6ZSAoYnl0ZXMpICovCi0tCV9fdWludDE2X3QJc2JfaW5vZGVzaXplOwkvKiBpbm9kZSBzaXplIChieXRlcykgKi8KLS0JX191aW50OF90CXNiX2ltYXhfcGN0OwkvKiBtYXggJSBvZiBmcyBmb3IgaW5vZGUgc3BhY2UgKi8KLSsJdWludDE2X3QJc2Jfc2VjdHNpemU7CS8qIHZvbHVtZSBzZWN0b3Igc2l6ZSAoYnl0ZXMpICovCi0rCXVpbnQxNl90CXNiX2lub2Rlc2l6ZTsJLyogaW5vZGUgc2l6ZSAoYnl0ZXMpICovCi0rCXVpbnQ4X3QJCXNiX2ltYXhfcGN0OwkvKiBtYXggJSBvZiBmcyBmb3IgaW5vZGUgc3BhY2UgKi8KLSAKLSAJLyoKLSAJICogdGhlc2UgZG9uJ3QgaGF2ZSB0byBtYXRjaCB0aGUgc3VwZXJibG9jayB0eXBlcyBidXQgYXJlIHBsYWNlZAotQEAgLTQ5LDEwICs0OSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBmc19nZW9tZXRyeSAgewotIAkvKgotIAkgKiBmaWVsZHMgYWZ0ZXIgdGhpcyBwb2ludCBoYXZlIHRvIGJlIGNoZWNrZWQgbWFudWFsbHkgaW4gY29tcGFyZV9zYigpCi0gCSAqLwotLQlfX3VpbnQ4X3QJc2Jfc2hhcmVkX3ZuOwkvKiBzaGFyZWQgdmVyc2lvbiBudW1iZXIgKi8KLSsJdWludDhfdAkJc2Jfc2hhcmVkX3ZuOwkvKiBzaGFyZWQgdmVyc2lvbiBudW1iZXIgKi8KLSAJeGZzX2V4dGxlbl90CXNiX2lub2FsaWdubXQ7CS8qIGlub2RlIGNodW5rIGFsaWdubWVudCwgZnNibG9ja3MgKi8KLS0JX191aW50MzJfdAlzYl91bml0OwkvKiBzdHJpcGUgb3IgcmFpZCB1bml0ICovCi0tCV9fdWludDMyX3QJc2Jfd2lkdGg7CS8qIHN0cmlwZSBvciB3aWR0aCB1bml0ICovCi0rCXVpbnQzMl90CXNiX3VuaXQ7CS8qIHN0cmlwZSBvciByYWlkIHVuaXQgKi8KLSsJdWludDMyX3QJc2Jfd2lkdGg7CS8qIHN0cmlwZSBvciB3aWR0aCB1bml0ICovCi0gCi0gCS8qCi0gCSAqIHRoZXNlIGRvbid0IGhhdmUgdG8gbWF0Y2gsIHRoZXkgdHJhY2sgc3VwZXJibG9jayBwcm9wZXJ0aWVzCi1kaWZmIC0tZ2l0IGEvcmVwYWlyL2F0dHJfcmVwYWlyLmggYi9yZXBhaXIvYXR0cl9yZXBhaXIuaAotaW5kZXggNzAxMGU0ZmYuLjI5NGZhZDQ0IDEwMDY0NAotLS0tIGEvcmVwYWlyL2F0dHJfcmVwYWlyLmgKLSsrKyBiL3JlcGFpci9hdHRyX3JlcGFpci5oCi1AQCAtMzIsMTAgKzMyLDEwIEBACi0gI2RlZmluZSBBQ0xfV1JJVEUJMDIKLSAjZGVmaW5lIEFDTF9FWEVDVVRFCTAxCi0gCi0tdHlwZWRlZiBfX3VpbnQxNl90CXhmc19hY2xfcGVybV90OwotLXR5cGVkZWYgX19pbnQzMl90CXhmc19hY2xfdHlwZV90OwotLXR5cGVkZWYgX19pbnQzMl90CXhmc19hY2xfdGFnX3Q7Ci0tdHlwZWRlZiBfX2ludDMyX3QJeGZzX2FjbF9pZF90OwotK3R5cGVkZWYgdWludDE2X3QJeGZzX2FjbF9wZXJtX3Q7Ci0rdHlwZWRlZiBpbnQzMl90CQl4ZnNfYWNsX3R5cGVfdDsKLSt0eXBlZGVmIGludDMyX3QJCXhmc19hY2xfdGFnX3Q7Ci0rdHlwZWRlZiBpbnQzMl90CQl4ZnNfYWNsX2lkX3Q7Ci0gCi0gLyoKLSAgKiAiaWNhY2wiID0gaW4tY29yZSBBQ0wuIFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgaW4gdGhlIFhGUyBrZXJuZWwgY29kZSwKLUBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCB4ZnNfaWNhY2xfZW50cnkgewotIH07Ci0gCi0gc3RydWN0IHhmc19pY2FjbCB7Ci0tCV9faW50MzJfdAkJYWNsX2NudDsKLSsJaW50MzJfdAkJCWFjbF9jbnQ7Ci0gCXN0cnVjdCB4ZnNfaWNhY2xfZW50cnkJYWNsX2VudHJ5WzBdOwotIH07Ci0gCi1AQCAtNTksMTQgKzU5LDE0IEBAIHN0cnVjdCB4ZnNfaWNhY2wgewotICAqLwotICNkZWZpbmUgWEZTX01BQ19NQVhfU0VUUwkyNTAKLSB0eXBlZGVmIHN0cnVjdCB4ZnNfbWFjX2xhYmVsIHsKLS0JX191aW50OF90ICAgICAgIG1sX21zZW5fdHlwZTsJLyogTVNFTiBsYWJlbCB0eXBlICovCi0tCV9fdWludDhfdCAgICAgICBtbF9taW50X3R5cGU7CS8qIE1JTlQgbGFiZWwgdHlwZSAqLwotLQlfX3VpbnQ4X3QgICAgICAgbWxfbGV2ZWw7CS8qIEhpZXJhcmNoaWNhbCBsZXZlbCAqLwotLQlfX3VpbnQ4X3QgICAgICAgbWxfZ3JhZGU7CS8qIEhpZXJhcmNoaWNhbCBncmFkZSAqLwotLQlfX3VpbnQxNl90ICAgICAgbWxfY2F0Y291bnQ7CS8qIENhdGVnb3J5IGNvdW50ICovCi0tCV9fdWludDE2X3QgICAgICBtbF9kaXZjb3VudDsJLyogRGl2aXNpb24gY291bnQgKi8KLSsJdWludDhfdCAgICAgICBtbF9tc2VuX3R5cGU7CS8qIE1TRU4gbGFiZWwgdHlwZSAqLwotKwl1aW50OF90ICAgICAgIG1sX21pbnRfdHlwZTsJLyogTUlOVCBsYWJlbCB0eXBlICovCi0rCXVpbnQ4X3QgICAgICAgbWxfbGV2ZWw7CS8qIEhpZXJhcmNoaWNhbCBsZXZlbCAqLwotKwl1aW50OF90ICAgICAgIG1sX2dyYWRlOwkvKiBIaWVyYXJjaGljYWwgZ3JhZGUgKi8KLSsJdWludDE2X3QgICAgICBtbF9jYXRjb3VudDsJLyogQ2F0ZWdvcnkgY291bnQgKi8KLSsJdWludDE2X3QgICAgICBtbF9kaXZjb3VudDsJLyogRGl2aXNpb24gY291bnQgKi8KLSAJCQkJCS8qIENhdGVnb3J5IHNldCwgdGhlbiBEaXZpc2lvbiBzZXQgKi8KLS0JX191aW50MTZfdCAgICAgIG1sX2xpc3RbWEZTX01BQ19NQVhfU0VUU107Ci0rCXVpbnQxNl90ICAgICAgbWxfbGlzdFtYRlNfTUFDX01BWF9TRVRTXTsKLSB9IHhmc19tYWNfbGFiZWxfdDsKLSAKLSAvKiBNU0VOIGxhYmVsIHR5cGUgbmFtZXMuIENob29zZSBhbiB1cHBlciBjYXNlIEFTQ0lJIGNoYXJhY3Rlci4gICovCi1AQCAtOTMsNyArOTMsNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfbWFjX2xhYmVsIHsKLSAvKgotICAqIENhcGFiaWxpdGllcyAoSVJJWCkKLSAgKi8KLS10eXBlZGVmIF9fdWludDY0X3QgeGZzX2NhcF92YWx1ZV90OwotK3R5cGVkZWYgdWludDY0X3QgeGZzX2NhcF92YWx1ZV90OwotIAotIHR5cGVkZWYgc3RydWN0IHhmc19jYXBfc2V0IHsKLSAJeGZzX2NhcF92YWx1ZV90CWNhcF9lZmZlY3RpdmU7ICAvKiB1c2UgaW4gY2FwYWJpbGl0eSBjaGVja3MgKi8KLWRpZmYgLS1naXQgYS9yZXBhaXIvYXZsNjQuYyBiL3JlcGFpci9hdmw2NC5jCi1pbmRleCA1MWNkNjI0Yy4uOGY0YTEyMTEgMTAwNjQ0Ci0tLS0gYS9yZXBhaXIvYXZsNjQuYwotKysrIGIvcmVwYWlyL2F2bDY0LmMKLUBAIC03MCw4ICs3MCw4IEBAIGF2bDY0X2NoZWNrdHJlZSgKLSAJYXZsNjRub2RlX3QgKnJvb3QpCi0gewotIAlhdmw2NG5vZGVfdCAqbmxhc3QsICpubmV4dCwgKm5wOwotLQlfX3VpbnQ2NF90IG9mZnNldCA9IDA7Ci0tCV9fdWludDY0X3QgZW5kOwotKwl1aW50NjRfdCBvZmZzZXQgPSAwOwotKwl1aW50NjRfdCBlbmQ7Ci0gCi0gCW5sYXN0ID0gbm5leHQgPSByb290OwotIAotQEAgLTU4Myw4ICs1ODMsOCBAQCBhdHRhY2g6Ci0gYXZsNjRub2RlX3QgKgotIGF2bDY0X2ZpbmRhbnlyYW5nZSgKLSAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKLS0JX191aW50NjRfdCBzdGFydCwKLS0JX191aW50NjRfdCBlbmQsCi0rCXVpbnQ2NF90IHN0YXJ0LAotKwl1aW50NjRfdCBlbmQsCi0gCWludAljaGVja2xlbikKLSB7Ci0gCWF2bDY0bm9kZV90ICpucCA9IHRyZWUtPmF2bF9yb290OwotQEAgLTY1NSw3ICs2NTUsNyBAQCBhdmw2NF9maW5kYW55cmFuZ2UoCi0gYXZsNjRub2RlX3QgKgotIGF2bDY0X2ZpbmRyYW5nZSgKLSAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKLS0JX191aW50NjRfdCB2YWx1ZSkKLSsJdWludDY0X3QgdmFsdWUpCi0gewotIAlhdmw2NG5vZGVfdCAqbnAgPSB0cmVlLT5hdmxfcm9vdDsKLSAKLUBAIC02ODIsMTAgKzY4MiwxMCBAQCBhdmw2NF9maW5kcmFuZ2UoCi0gYXZsNjRub2RlX3QgKgotIGF2bDY0X2ZpbmQoCi0gCWF2bDY0dHJlZV9kZXNjX3QgKnRyZWUsCi0tCV9fdWludDY0X3QgdmFsdWUpCi0rCXVpbnQ2NF90IHZhbHVlKQotIHsKLSAJYXZsNjRub2RlX3QgKm5wID0gdHJlZS0+YXZsX3Jvb3Q7Ci0tCV9fdWludDY0X3QgbnZhbHVlOwotKwl1aW50NjRfdCBudmFsdWU7Ci0gCi0gCXdoaWxlIChucCkgewotIAkJbnZhbHVlID0gQVZMX1NUQVJUKHRyZWUsIG5wKTsKLUBAIC05MDksOCArOTA5LDggQEAgc3RhdGljCi0gYXZsNjRub2RlX3QgKgotIGF2bDY0X2luc2VydF9maW5kX2dyb3d0aCgKLSAJCWF2bDY0dHJlZV9kZXNjX3QgKnRyZWUsCi0tCQlfX3VpbnQ2NF90IHN0YXJ0LAkvKiByYW5nZSBzdGFydCBhdCBzdGFydCwgKi8KLS0JCV9fdWludDY0X3QgZW5kLAkvKiBleGNsdXNpdmUgKi8KLSsJCXVpbnQ2NF90IHN0YXJ0LAkvKiByYW5nZSBzdGFydCBhdCBzdGFydCwgKi8KLSsJCXVpbnQ2NF90IGVuZCwJLyogZXhjbHVzaXZlICovCi0gCQlpbnQgICAqZ3Jvd3RocCkJLyogT1VUICovCi0gewotIAlhdmw2NG5vZGVfdCAqcm9vdCA9IHRyZWUtPmF2bF9yb290OwotQEAgLTk2Myw3ICs5NjMsNyBAQCBhdmw2NF9pbnNlcnRfZ3JvdygKLSAJaW50IGdyb3d0aCkKLSB7Ci0gCWF2bDY0bm9kZV90ICpubmV4dDsKLS0JX191aW50NjRfdCBzdGFydCA9IEFWTF9TVEFSVCh0cmVlLCBuZXdub2RlKTsKLSsJdWludDY0X3Qgc3RhcnQgPSBBVkxfU1RBUlQodHJlZSwgbmV3bm9kZSk7Ci0gCi0gCWlmIChncm93dGggPT0gQVZMX0JBQ0spIHsKLSAKLUBAIC0xMDA1LDggKzEwMDUsOCBAQCBhdmw2NF9pbnNlcnQoCi0gCWF2bDY0bm9kZV90ICpuZXdub2RlKQotIHsKLSAJYXZsNjRub2RlX3QgKm5wOwotLQlfX3VpbnQ2NF90IHN0YXJ0ID0gQVZMX1NUQVJUKHRyZWUsIG5ld25vZGUpOwotLQlfX3VpbnQ2NF90IGVuZCA9IEFWTF9FTkQodHJlZSwgbmV3bm9kZSk7Ci0rCXVpbnQ2NF90IHN0YXJ0ID0gQVZMX1NUQVJUKHRyZWUsIG5ld25vZGUpOwotKwl1aW50NjRfdCBlbmQgPSBBVkxfRU5EKHRyZWUsIG5ld25vZGUpOwotIAlpbnQgZ3Jvd3RoOwotIAotIAlBU1NFUlQobmV3bm9kZSk7Ci1AQCAtMTE1OSwxNiArMTE1OSwxNiBAQCBhdmw2NG9wc190IGF2bF9kZWJ1Z19vcHMgPSB7Ci0gCWF2bF9kZWJ1Z19lbmQsCi0gfQotIAotLXN0YXRpYyBfX3VpbnQ2NF90Ci0rc3RhdGljIHVpbnQ2NF90Ci0gYXZsNjRfZGVidWdfc3RhcnQoYXZsNjRub2RlX3QgKm5vZGUpCi0gewotLQlyZXR1cm4gKF9fdWludDY0X3QpKHN0cnVjdCBhdmxfZGVidWdfbm9kZSAqKW5vZGUtPmF2bF9zdGFydDsKLSsJcmV0dXJuICh1aW50NjRfdCkoc3RydWN0IGF2bF9kZWJ1Z19ub2RlICopbm9kZS0+YXZsX3N0YXJ0OwotIH0KLSAKLS1zdGF0aWMgX191aW50NjRfdAotK3N0YXRpYyB1aW50NjRfdAotIGF2bDY0X2RlYnVnX2VuZChhdmw2NG5vZGVfdCAqbm9kZSkKLSB7Ci0tCXJldHVybiAoX191aW50NjRfdCkKLSsJcmV0dXJuICh1aW50NjRfdCkKLSAJCSgoc3RydWN0IGF2bF9kZWJ1Z19ub2RlICopbm9kZS0+YXZsX3N0YXJ0ICsKLSAJCSAoc3RydWN0IGF2bF9kZWJ1Z19ub2RlICopbm9kZS0+YXZsX3NpemUpOwotIH0KLUBAIC0xMzA0LDcgKzEzMDQsNyBAQCBtYWluKCkKLSBhdmw2NG5vZGVfdCAqCi0gYXZsNjRfZmluZGFkamFjZW50KAotIAlhdmw2NHRyZWVfZGVzY190ICp0cmVlLAotLQlfX3VpbnQ2NF90IHZhbHVlLAotKwl1aW50NjRfdCB2YWx1ZSwKLSAJaW50CQlkaXIpCi0gewotIAlhdmw2NG5vZGVfdCAqbnAgPSB0cmVlLT5hdmxfcm9vdDsKLUBAIC0xMzc4LDggKzEzNzgsOCBAQCBhdmw2NF9maW5kYWRqYWNlbnQoCi0gdm9pZAotIGF2bDY0X2ZpbmRyYW5nZXMoCi0gCWF2bDY0dHJlZV9kZXNjX3QgKnRyZWUsCi0tCV9fdWludDY0X3Qgc3RhcnQsCi0tCV9fdWludDY0X3QgZW5kLAotKwl1aW50NjRfdCBzdGFydCwKLSsJdWludDY0X3QgZW5kLAotIAlhdmw2NG5vZGVfdAkgICAgICAgICoqc3RhcnRwLAotIAlhdmw2NG5vZGVfdAkJKiplbmRwKQotIHsKLWRpZmYgLS1naXQgYS9yZXBhaXIvYXZsNjQuaCBiL3JlcGFpci9hdmw2NC5oCi1pbmRleCBmZDE5MzIxOC4uY2QwNzlhMDAgMTAwNjQ0Ci0tLS0gYS9yZXBhaXIvYXZsNjQuaAotKysrIGIvcmVwYWlyL2F2bDY0LmgKLUBAIC0zMiw4ICszMiw4IEBAIHR5cGVkZWYgc3RydWN0CWF2bDY0bm9kZSB7Ci0gICogYXZsLXRyZWUgb3BlcmF0aW9ucwotICAqLwotIHR5cGVkZWYgc3RydWN0IGF2bDY0b3BzIHsKLS0JX191aW50NjRfdAkoKmF2bF9zdGFydCkoYXZsNjRub2RlX3QgKik7Ci0tCV9fdWludDY0X3QJKCphdmxfZW5kKShhdmw2NG5vZGVfdCAqKTsKLSsJdWludDY0X3QJKCphdmxfc3RhcnQpKGF2bDY0bm9kZV90ICopOwotKwl1aW50NjRfdAkoKmF2bF9lbmQpKGF2bDY0bm9kZV90ICopOwotIH0gYXZsNjRvcHNfdDsKLSAKLSAvKgotQEAgLTg5LDMyICs4OSwzMiBAQCBhdmw2NF9pbml0X3RyZWUoCi0gYXZsNjRub2RlX3QgKgotIGF2bDY0X2ZpbmRyYW5nZSgKLSAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKLS0JX191aW50NjRfdCB2YWx1ZSk7Ci0rCXVpbnQ2NF90IHZhbHVlKTsKLSAKLSBhdmw2NG5vZGVfdCAqCi0gYXZsNjRfZmluZCgKLSAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKLS0JX191aW50NjRfdCB2YWx1ZSk7Ci0rCXVpbnQ2NF90IHZhbHVlKTsKLSAKLSBhdmw2NG5vZGVfdCAqCi0gYXZsNjRfZmluZGFueXJhbmdlKAotIAlhdmw2NHRyZWVfZGVzY190ICp0cmVlLAotLQlfX3VpbnQ2NF90CXN0YXJ0LAotLQlfX3VpbnQ2NF90CWVuZCwKLSsJdWludDY0X3QJc3RhcnQsCi0rCXVpbnQ2NF90CWVuZCwKLSAJaW50ICAgICBjaGVja2xlbik7Ci0gCi0gCi0gYXZsNjRub2RlX3QgKgotIGF2bDY0X2ZpbmRhZGphY2VudCgKLSAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKLS0JX191aW50NjRfdAl2YWx1ZSwKLSsJdWludDY0X3QJdmFsdWUsCi0gCWludAkJZGlyKTsKLSAKLSB2b2lkCi0gYXZsNjRfZmluZHJhbmdlcygKLSAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKLS0JX191aW50NjRfdAlzdGFydCwKLS0JX191aW50NjRfdAllbmQsCi0rCXVpbnQ2NF90CXN0YXJ0LAotKwl1aW50NjRfdAllbmQsCi0gCWF2bDY0bm9kZV90CSAgICAgICAgKipzdGFydHAsCi0gCWF2bDY0bm9kZV90CQkqKmVuZHApOwotIAotZGlmZiAtLWdpdCBhL3JlcGFpci9kaW5vZGUuYyBiL3JlcGFpci9kaW5vZGUuYwotaW5kZXggZDY2NGY4N2EuLmRhODcyMTc4IDEwMDY0NAotLS0tIGEvcmVwYWlyL2Rpbm9kZS5jCi0rKysgYi9yZXBhaXIvZGlub2RlLmMKLUBAIC03NDYsNyArNzQ2LDcgQEAgXygiJXMgZm9yayBpbiBpbm8gJSIgUFJJdTY0ICIgY2xhaW1zIGR1cCBleHRlbnQsICIKLSAJCQljYXNlIFhSX0VfRlJFRTE6Ci0gCQkJCWRvX3dhcm4oCi0gXygiJXMgZm9yayBpbiBpbm8gJSIgUFJJdTY0ICIgY2xhaW1zIGZyZWUgYmxvY2sgJSIgUFJJdTY0ICJcbiIpLAotLQkJCQkJZm9ya25hbWUsIGlubywgKF9fdWludDY0X3QpIGIpOwotKwkJCQkJZm9ya25hbWUsIGlubywgKHVpbnQ2NF90KSBiKTsKLSAJCQkJLyogZmFsbCB0aHJvdWdoIC4uLiAqLwotIAkJCWNhc2UgWFJfRV9JTlVTRTE6CS8qIHNlZW4gYnkgcm1hcCAqLwotIAkJCWNhc2UgWFJfRV9VTktOT1dOOgotQEAgLTkyMyw3ICs5MjMsNyBAQCBwcm9jZXNzX2J0aW5vZGUoCi0gCWludAkJCXR5cGUsCi0gCWludAkJCSpkaXJ0eSwKLSAJeGZzX3Jmc2Jsb2NrX3QJCSp0b3QsCi0tCV9fdWludDY0X3QJCSpuZXgsCi0rCXVpbnQ2NF90CQkqbmV4LAotIAlibGttYXBfdAkJKipibGttYXBwLAotIAlpbnQJCQl3aGljaGZvcmssCi0gCWludAkJCWNoZWNrX2R1cHMpCi1AQCAtOTM5LDcgKzkzOSw3IEBAIHByb2Nlc3NfYnRpbm9kZSgKLSAJaW50CQkJbGV2ZWw7Ci0gCWludAkJCW51bXJlY3M7Ci0gCWJtYXBfY3Vyc29yX3QJCWN1cnNvcjsKLS0JX191aW50NjRfdAkJbWFnaWM7Ci0rCXVpbnQ2NF90CQltYWdpYzsKLSAKLSAJZGliID0gKHhmc19ibWRyX2Jsb2NrX3QgKilYRlNfREZPUktfUFRSKGRpcCwgd2hpY2hmb3JrKTsKLSAJbGlubyA9IFhGU19BR0lOT19UT19JTk8obXAsIGFnbm8sIGlubyk7Ci1AQCAtMTA5OCw3ICsxMDk4LDcgQEAgcHJvY2Vzc19leGlub2RlKAotIAlpbnQJCQl0eXBlLAotIAlpbnQJCQkqZGlydHksCi0gCXhmc19yZnNibG9ja190CQkqdG90LAotLQlfX3VpbnQ2NF90CQkqbmV4LAotKwl1aW50NjRfdAkJKm5leCwKLSAJYmxrbWFwX3QJCSoqYmxrbWFwcCwKLSAJaW50CQkJd2hpY2hmb3JrLAotIAlpbnQJCQljaGVja19kdXBzKQotQEAgLTEyMDAsMTQgKzEyMDAsMTQgQEAgcHJvY2Vzc19zeW1saW5rX2V4dGxpc3QoeGZzX21vdW50X3QgKm1wLCB4ZnNfaW5vX3QgbGlubywgeGZzX2Rpbm9kZV90ICpkaW5vKQotIAkJZG9fd2FybigKLSBfKCJtaXNtYXRjaCBiZXR3ZWVuIGZvcm1hdCAoJWQpIGFuZCBzaXplICglIiBQUklkNjQgIikgaW4gc3ltbGluayBpbm8gJSIgUFJJdTY0ICJcbiIpLAotIAkJCWRpbm8tPmRpX2Zvcm1hdCwKLS0JCQkoX19pbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpLCBsaW5vKTsKLSsJCQkoaW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSwgbGlubyk7Ci0gCQlyZXR1cm4gMTsKLSAJfQotIAlpZiAoZGluby0+ZGlfZm9ybWF0ID09IFhGU19ESU5PREVfRk1UX0xPQ0FMKSB7Ci0gCQlkb193YXJuKAotIF8oIm1pc21hdGNoIGJldHdlZW4gZm9ybWF0ICglZCkgYW5kIHNpemUgKCUiIFBSSWQ2NCAiKSBpbiBzeW1saW5rIGlub2RlICUiIFBSSXU2NCAiXG4iKSwKLSAJCQlkaW5vLT5kaV9mb3JtYXQsCi0tCQkJKF9faW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSwgbGlubyk7Ci0rCQkJKGludDY0X3QpYmU2NF90b19jcHUoZGluby0+ZGlfc2l6ZSksIGxpbm8pOwotIAkJcmV0dXJuIDE7Ci0gCX0KLSAKLUBAIC0xNDU0LDIyICsxNDU0LDIyIEBAIF8oImlub2RlICUiIFBSSXU2NCAiIGhhcyBiYWQgaW5vZGUgdHlwZSAoSUZNTlQpXG4iKSwgbGlubyk7Ci0gCQljYXNlIFhSX0lOT19DSFJERVY6Ci0gCQkJZG9fd2FybigKLSBfKCJzaXplIG9mIGNoYXJhY3RlciBkZXZpY2UgaW5vZGUgJSIgUFJJdTY0ICIgIT0gMCAoJSIgUFJJZDY0ICIgYnl0ZXMpXG4iKSwgbGlubywKLS0JCQkJKF9faW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSk7Ci0rCQkJCShpbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpKTsKLSAJCQlicmVhazsKLSAJCWNhc2UgWFJfSU5PX0JMS0RFVjoKLSAJCQlkb193YXJuKAotIF8oInNpemUgb2YgYmxvY2sgZGV2aWNlIGlub2RlICUiIFBSSXU2NCAiICE9IDAgKCUiIFBSSWQ2NCAiIGJ5dGVzKVxuIiksIGxpbm8sCi0tCQkJCShfX2ludDY0X3QpYmU2NF90b19jcHUoZGluby0+ZGlfc2l6ZSkpOwotKwkJCQkoaW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSk7Ci0gCQkJYnJlYWs7Ci0gCQljYXNlIFhSX0lOT19TT0NLOgotIAkJCWRvX3dhcm4oCi0gXygic2l6ZSBvZiBzb2NrZXQgaW5vZGUgJSIgUFJJdTY0ICIgIT0gMCAoJSIgUFJJZDY0ICIgYnl0ZXMpXG4iKSwgbGlubywKLS0JCQkJKF9faW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSk7Ci0rCQkJCShpbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpKTsKLSAJCQlicmVhazsKLSAJCWNhc2UgWFJfSU5PX0ZJRk86Ci0gCQkJZG9fd2FybigKLSBfKCJzaXplIG9mIGZpZm8gaW5vZGUgJSIgUFJJdTY0ICIgIT0gMCAoJSIgUFJJZDY0ICIgYnl0ZXMpXG4iKSwgbGlubywKLS0JCQkJKF9faW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSk7Ci0rCQkJCShpbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpKTsKLSAJCQlicmVhazsKLSAJCWRlZmF1bHQ6Ci0gCQkJZG9fd2FybihfKCJJbnRlcm5hbCBlcnJvciAtIHByb2Nlc3NfbWlzY19pbm9fdHlwZXMsICIKLUBAIC0xNzQzLDEyICsxNzQzLDEyIEBAIF8oImZvdW5kIGlub2RlICUiIFBSSXU2NCAiIGNsYWltaW5nIHRvIGJlIGEgcmVhbC10aW1lIGZpbGVcbiIpLCBsaW5vKTsKLSAJCWJyZWFrOwotIAotIAljYXNlIFhSX0lOT19SVEJJVE1BUDoKLS0JCWlmIChzaXplICE9IChfX2ludDY0X3QpbXAtPm1fc2Iuc2JfcmJtYmxvY2tzICoKLSsJCWlmIChzaXplICE9IChpbnQ2NF90KW1wLT5tX3NiLnNiX3JibWJsb2NrcyAqCi0gCQkJCQltcC0+bV9zYi5zYl9ibG9ja3NpemUpIHsKLSAJCQlkb193YXJuKAotIF8oInJlYWx0aW1lIGJpdG1hcCBpbm9kZSAlIiBQUkl1NjQgIiBoYXMgYmFkIHNpemUgJSIgUFJJZDY0ICIgKHNob3VsZCBiZSAlIiBQUkl1NjQgIilcbiIpLAotIAkJCQlsaW5vLCBzaXplLAotLQkJCQkoX19pbnQ2NF90KSBtcC0+bV9zYi5zYl9yYm1ibG9ja3MgKgotKwkJCQkoaW50NjRfdCkgbXAtPm1fc2Iuc2JfcmJtYmxvY2tzICoKLSAJCQkJCW1wLT5tX3NiLnNiX2Jsb2Nrc2l6ZSk7Ci0gCQkJcmV0dXJuIDE7Ci0gCQl9Ci1AQCAtMTgxNyw4ICsxODE3LDggQEAgc3RhdGljIGludAotIHByb2Nlc3NfaW5vZGVfYmxvY2tzX2FuZF9leHRlbnRzKAotIAl4ZnNfZGlub2RlX3QJKmRpbm8sCi0gCXhmc19yZnNibG9ja190CW5ibG9ja3MsCi0tCV9fdWludDY0X3QJbmV4dGVudHMsCi0tCV9fdWludDY0X3QJYW5leHRlbnRzLAotKwl1aW50NjRfdAluZXh0ZW50cywKLSsJdWludDY0X3QJYW5leHRlbnRzLAotIAl4ZnNfaW5vX3QJbGlubywKLSAJaW50CQkqZGlydHkpCi0gewotQEAgLTE5MDgsNyArMTkwOCw3IEBAIHByb2Nlc3NfaW5vZGVfZGF0YV9mb3JrKAotIAlpbnQJCXR5cGUsCi0gCWludAkJKmRpcnR5LAotIAl4ZnNfcmZzYmxvY2tfdAkqdG90YmxvY2tzLAotLQlfX3VpbnQ2NF90CSpuZXh0ZW50cywKLSsJdWludDY0X3QJKm5leHRlbnRzLAotIAlibGttYXBfdAkqKmRibGttYXAsCi0gCWludAkJY2hlY2tfZHVwcykKLSB7Ci1AQCAtMjAxNyw3ICsyMDE3LDcgQEAgcHJvY2Vzc19pbm9kZV9hdHRyX2ZvcmsoCi0gCWludAkJdHlwZSwKLSAJaW50CQkqZGlydHksCi0gCXhmc19yZnNibG9ja190CSphdG90YmxvY2tzLAotLQlfX3VpbnQ2NF90CSphbmV4dGVudHMsCi0rCXVpbnQ2NF90CSphbmV4dGVudHMsCi0gCWludAkJY2hlY2tfZHVwcywKLSAJaW50CQlleHRyYV9hdHRyX2NoZWNrLAotIAlpbnQJCSpyZXR2YWwpCi1AQCAtMjIyOCw4ICsyMjI4LDggQEAgcHJvY2Vzc19kaW5vZGVfaW50KHhmc19tb3VudF90ICptcCwKLSAJaW50CQkJZGlfbW9kZTsKLSAJaW50CQkJdHlwZTsKLSAJaW50CQkJcmV0dmFsID0gMDsKLS0JX191aW50NjRfdAkJbmV4dGVudHM7Ci0tCV9fdWludDY0X3QJCWFuZXh0ZW50czsKLSsJdWludDY0X3QJCW5leHRlbnRzOwotKwl1aW50NjRfdAkJYW5leHRlbnRzOwotIAl4ZnNfaW5vX3QJCWxpbm87Ci0gCWNvbnN0IGludAkJaXNfZnJlZSA9IDA7Ci0gCWNvbnN0IGludAkJaXNfdXNlZCA9IDE7Ci1AQCAtMjM0Niw3ICsyMzQ2LDcgQEAgXygiaW5vZGUgaWRlbnRpZmllciAlbGx1IG1pc21hdGNoIG9uIGlub2RlICUiIFBSSXU2NCAiXG4iKSwKLSAJCWlmICghdW5jZXJ0YWluKQotIAkJCWRvX3dhcm4oCi0gXygiYmFkIChuZWdhdGl2ZSkgc2l6ZSAlIiBQUklkNjQgIiBvbiBpbm9kZSAlIiBQUkl1NjQgIlxuIiksCi0tCQkJCShfX2ludDY0X3QpYmU2NF90b19jcHUoZGluby0+ZGlfc2l6ZSksCi0rCQkJCShpbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpLAotIAkJCQlsaW5vKTsKLSAJCWlmICh2ZXJpZnlfbW9kZSkKLSAJCQlyZXR1cm4gMTsKLWRpZmYgLS1naXQgYS9yZXBhaXIvZGlub2RlLmggYi9yZXBhaXIvZGlub2RlLmgKLWluZGV4IDYxZDA3MzYzLi4zOWQ2YTcyZiAxMDA2NDQKLS0tLSBhL3JlcGFpci9kaW5vZGUuaAotKysrIGIvcmVwYWlyL2Rpbm9kZS5oCi1AQCAtNDYsOCArNDYsOCBAQCBwcm9jZXNzX2JtYnRfcmVjbGlzdCh4ZnNfbW91bnRfdAkqbXAsCi0gCQl4ZnNfaW5vX3QJCWlubywKLSAJCXhmc19yZnNibG9ja190CQkqdG90LAotIAkJc3RydWN0IGJsa21hcAkJKipibGttYXBwLAotLQkJX191aW50NjRfdAkJKmZpcnN0X2tleSwKLS0JCV9fdWludDY0X3QJCSpsYXN0X2tleSwKLSsJCXVpbnQ2NF90CQkqZmlyc3Rfa2V5LAotKwkJdWludDY0X3QJCSpsYXN0X2tleSwKLSAJCWludAkJCXdoaWNoZm9yayk7Ci0gCi0gaW50Ci1kaWZmIC0tZ2l0IGEvcmVwYWlyL2RpcjIuYyBiL3JlcGFpci9kaXIyLmMKLWluZGV4IGU2NDE1ZTQ5Li43M2RmZjkwMiAxMDA2NDQKLS0tLSBhL3JlcGFpci9kaXIyLmMKLSsrKyBiL3JlcGFpci9kaXIyLmMKLUBAIC0xNjAsNyArMTYwLDcgQEAgcHJvY2Vzc19zZl9kaXIyKAotIAlpbnQJCQliYWRfc2ZuYW1lbGVuOwotIAlpbnQJCQlpOwotIAlpbnQJCQlpODsKLS0JX19pbnQ2NF90CQlpbm9fZGlyX3NpemU7Ci0rCWludDY0X3QJCQlpbm9fZGlyX3NpemU7Ci0gCWludAkJCWlub19vZmY7Ci0gCWlub190cmVlX25vZGVfdAkJKmlyZWNfcDsKLSAJaW50CQkJanVua2l0OwotZGlmZiAtLWdpdCBhL3JlcGFpci9nbG9iYWxzLmggYi9yZXBhaXIvZ2xvYmFscy5oCi1pbmRleCA0MDg1Y2NjNC4uYzdiYmU2ZjEgMTAwNjQ0Ci0tLS0gYS9yZXBhaXIvZ2xvYmFscy5oCi0rKysgYi9yZXBhaXIvZ2xvYmFscy5oCi1AQCAtMTQxLDcgKzE0MSw3IEBAIEVYVEVSTiBpbnQJCWlub2Rlc19wZXJfY2x1c3RlcjsKLSBFWFRFUk4gdW5zaWduZWQgaW50CWdsb2JfYWdjb3VudDsKLSBFWFRFUk4gaW50CQljaHVua3NfcGJsb2NrOwkvKiAjIG9mIDY0LWlubyBjaHVua3MgcGVyIGFsbG9jYXRpb24gKi8KLSBFWFRFUk4gaW50CQltYXhfc3ltbGlua19ibG9ja3M7Ci0tRVhURVJOIF9faW50NjRfdAlmc19tYXhfZmlsZV9vZmZzZXQ7Ci0rRVhURVJOIGludDY0X3QJCWZzX21heF9maWxlX29mZnNldDsKLSAKLSAvKiByZWFsdGltZSBpbmZvICovCi0gCi1AQCAtMTYxLDI0ICsxNjEsMjQgQEAgRVhURVJOIGludAkJZnVsbF9pbm9fZXhfZGF0YTsvKgotIAotIC8qIHN1cGVyYmxvY2sgY291bnRlcnMgKi8KLSAKLS1FWFRFUk4gX191aW50NjRfdAlzYl9pY291bnQ7CS8qIGFsbG9jYXRlZCAobWFkZSkgaW5vZGVzICovCi0tRVhURVJOIF9fdWludDY0X3QJc2JfaWZyZWU7CS8qIGZyZWUgaW5vZGVzICovCi0tRVhURVJOIF9fdWludDY0X3QJc2JfZmRibG9ja3M7CS8qIGZyZWUgZGF0YSBibG9ja3MgKi8KLS1FWFRFUk4gX191aW50NjRfdAlzYl9mcmV4dGVudHM7CS8qIGZyZWUgcmVhbHRpbWUgZXh0ZW50cyAqLwotK0VYVEVSTiB1aW50NjRfdAlzYl9pY291bnQ7CS8qIGFsbG9jYXRlZCAobWFkZSkgaW5vZGVzICovCi0rRVhURVJOIHVpbnQ2NF90CXNiX2lmcmVlOwkvKiBmcmVlIGlub2RlcyAqLwotK0VYVEVSTiB1aW50NjRfdAlzYl9mZGJsb2NrczsJLyogZnJlZSBkYXRhIGJsb2NrcyAqLwotK0VYVEVSTiB1aW50NjRfdAlzYl9mcmV4dGVudHM7CS8qIGZyZWUgcmVhbHRpbWUgZXh0ZW50cyAqLwotIAotIC8qIHN1cGVyYmxvY2sgZ2VvbWV0cnkgaW5mbyAqLwotIAotIEVYVEVSTiB4ZnNfZXh0bGVuX3QJc2JfaW5vYWxpZ25tdDsKLS1FWFRFUk4gX191aW50MzJfdAlzYl91bml0OwotLUVYVEVSTiBfX3VpbnQzMl90CXNiX3dpZHRoOwotK0VYVEVSTiB1aW50MzJfdAlzYl91bml0OwotK0VYVEVSTiB1aW50MzJfdAlzYl93aWR0aDsKLSAKLSBzdHJ1Y3QgYWdsb2NrIHsKLSAJcHRocmVhZF9tdXRleF90CWxvY2sgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oNjQpKSk7Ci0gfTsKLSBFWFRFUk4gc3RydWN0IGFnbG9jawkqYWdfbG9ja3M7Ci0gCi0tRVhURVJOIGludCAJCXJlcG9ydF9pbnRlcnZhbDsKLS1FWFRFUk4gX191aW50NjRfdCAJKnByb2dfcnB0X2RvbmU7Ci0rRVhURVJOIGludAkJcmVwb3J0X2ludGVydmFsOwotK0VYVEVSTiB1aW50NjRfdAkJKnByb2dfcnB0X2RvbmU7Ci0gCi0gRVhURVJOIGludAkJYWdfc3RyaWRlOwotIEVYVEVSTiBpbnQJCXRocmVhZF9jb3VudDsKLWRpZmYgLS1naXQgYS9yZXBhaXIvaW5jb3JlLmMgYi9yZXBhaXIvaW5jb3JlLmMKLWluZGV4IGNiNTczMTY1Li5hOTE5MWFlMiAxMDA2NDQKLS0tLSBhL3JlcGFpci9pbmNvcmUuYwotKysrIGIvcmVwYWlyL2luY29yZS5jCi1AQCAtMTc5LDcgKzE3OSw3IEBAIGdldF9ibWFwX2V4dCgKLSBzdGF0aWMgdWludDY0X3QJCSpydF9ibWFwOwotIHN0YXRpYyBzaXplX3QJCXJ0X2JtYXBfc2l6ZTsKLSAKLS0vKiBibG9jayByZWNvcmRzIGZpdCBpbnRvIF9fdWludDY0X3QncyB1bml0cyAqLwotKy8qIGJsb2NrIHJlY29yZHMgZml0IGludG8gdWludDY0X3QncyB1bml0cyAqLwotICNkZWZpbmUgWFJfQkJfVU5JVAk2NAkJCS8qIG51bWJlciBvZiBiaXRzL3VuaXQgKi8KLSAjZGVmaW5lIFhSX0JCCQk0CQkJLyogYml0cyBwZXIgYmxvY2sgcmVjb3JkICovCi0gI2RlZmluZSBYUl9CQl9OVU0JKFhSX0JCX1VOSVQvWFJfQkIpCS8qIG51bWJlciBvZiByZWNvcmRzIHBlciB1bml0ICovCi1AQCAtMjAzLDggKzIwMyw4IEBAIHNldF9ydGJtYXAoCi0gewotIAkqKHJ0X2JtYXAgKyBibm8gLyBYUl9CQl9OVU0pID0KLSAJICgoKihydF9ibWFwICsgYm5vIC8gWFJfQkJfTlVNKSAmCi0tCSAgKH4oKF9fdWludDY0X3QpIFhSX0JCX01BU0sgPDwgKChibm8gJSBYUl9CQl9OVU0pICogWFJfQkIpKSkpIHwKLS0JICgoKF9fdWludDY0X3QpIHN0YXRlKSA8PCAoKGJubyAlIFhSX0JCX05VTSkgKiBYUl9CQikpKTsKLSsJICAofigodWludDY0X3QpIFhSX0JCX01BU0sgPDwgKChibm8gJSBYUl9CQl9OVU0pICogWFJfQkIpKSkpIHwKLSsJICgoKHVpbnQ2NF90KSBzdGF0ZSkgPDwgKChibm8gJSBYUl9CQl9OVU0pICogWFJfQkIpKSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMjIyLDkgKzIyMiw5IEBAIGluaXRfcnRfYm1hcCgKLSAJCXJldHVybjsKLSAKLSAJcnRfYm1hcF9zaXplID0gcm91bmR1cChtcC0+bV9zYi5zYl9yZXh0ZW50cyAvIChOQkJZIC8gWFJfQkIpLAotLQkJCSAgICAgICBzaXplb2YoX191aW50NjRfdCkpOwotKwkJCSAgICAgICBzaXplb2YodWludDY0X3QpKTsKLSAKLS0JcnRfYm1hcCA9IG1lbWFsaWduKHNpemVvZihfX3VpbnQ2NF90KSwgcnRfYm1hcF9zaXplKTsKLSsJcnRfYm1hcCA9IG1lbWFsaWduKHNpemVvZih1aW50NjRfdCksIHJ0X2JtYXBfc2l6ZSk7Ci0gCWlmICghcnRfYm1hcCkgewotIAkJZG9fZXJyb3IoCi0gCV8oImNvdWxkbid0IGFsbG9jYXRlIHJlYWx0aW1lIGJsb2NrIG1hcCwgc2l6ZSA9ICUiIFBSSXU2NCAiXG4iKSwKLWRpZmYgLS1naXQgYS9yZXBhaXIvaW5jb3JlLmggYi9yZXBhaXIvaW5jb3JlLmgKLWluZGV4IGMyM2EzYTNjLi5mZDY2MDg0ZiAxMDA2NDQKLS0tLSBhL3JlcGFpci9pbmNvcmUuaAotKysrIGIvcmVwYWlyL2luY29yZS5oCi1AQCAtMjU3LDcgKzI1Nyw3IEBAIHR5cGVkZWYgeGZzX2lub190IHBhcmVudF9lbnRyeV90OwotIHN0cnVjdCBubGlua19vcHM7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgcGFyZW50X2xpc3QgIHsKLS0JX191aW50NjRfdAkJcG1hc2s7Ci0rCXVpbnQ2NF90CQlwbWFzazsKLSAJcGFyZW50X2VudHJ5X3QJCSpwZW50cmllczsKLSAjaWZkZWYgREVCVUcKLSAJc2hvcnQJCQljbnQ7Ci1AQCAtMjY1LDE0ICsyNjUsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgcGFyZW50X2xpc3QgIHsKLSB9IHBhcmVudF9saXN0X3Q7Ci0gCi0gdW5pb24gaW5vX25saW5rIHsKLS0JX191aW50OF90CSp1bjg7Ci0tCV9fdWludDE2X3QJKnVuMTY7Ci0tCV9fdWludDMyX3QJKnVuMzI7Ci0rCXVpbnQ4X3QJCSp1bjg7Ci0rCXVpbnQxNl90CSp1bjE2OwotKwl1aW50MzJfdAkqdW4zMjsKLSB9OwotIAotIHR5cGVkZWYgc3RydWN0IGlub19leF9kYXRhICB7Ci0tCV9fdWludDY0X3QJCWlub19yZWFjaGVkOwkvKiBiaXQgPT0gMSBpZiByZWFjaGVkICovCi0tCV9fdWludDY0X3QJCWlub19wcm9jZXNzZWQ7CS8qIHJlZmVyZW5jZSBjaGVja2VkIGJpdCBtYXNrICovCi0rCXVpbnQ2NF90CQlpbm9fcmVhY2hlZDsJLyogYml0ID09IDEgaWYgcmVhY2hlZCAqLwotKwl1aW50NjRfdAkJaW5vX3Byb2Nlc3NlZDsJLyogcmVmZXJlbmNlIGNoZWNrZWQgYml0IG1hc2sgKi8KLSAJcGFyZW50X2xpc3RfdAkJKnBhcmVudHM7Ci0gCXVuaW9uIGlub19ubGluawkJY291bnRlZF9ubGlua3M7LyogY291bnRlZCBubGlua3MgaW4gUDYgKi8KLSB9IGlub19leF9kYXRhX3Q7Ci1AQCAtMjgxLDIyICsyODEsMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAgewotIAlhdmxub2RlX3QJCWF2bF9ub2RlOwotIAl4ZnNfYWdpbm9fdAkJaW5vX3N0YXJ0bnVtOwkvKiBzdGFydGluZyBpbm9kZSAjICovCi0gCXhmc19pbm9mcmVlX3QJCWlyX2ZyZWU7CS8qIGlub2RlIGZyZWUgYml0IG1hc2sgKi8KLS0JX191aW50NjRfdAkJaXJfc3BhcnNlOwkvKiBzcGFyc2UgaW5vZGUgYml0bWFzayAqLwotLQlfX3VpbnQ2NF90CQlpbm9fY29uZmlybWVkOwkvKiBjb25maXJtZWQgYml0bWFzayAqLwotLQlfX3VpbnQ2NF90CQlpbm9faXNhX2RpcjsJLyogYml0ID09IDEgaWYgYSBkaXJlY3RvcnkgKi8KLS0JX191aW50NjRfdAkJaW5vX3dhc19ybDsJLyogYml0ID09IDEgaWYgcmVmbGluayBmbGFnIHNldCAqLwotLQlfX3VpbnQ2NF90CQlpbm9faXNfcmw7CS8qIGJpdCA9PSAxIGlmIHJlZmxpbmsgZmxhZyBzaG91bGQgYmUgc2V0ICovCi0tCV9fdWludDhfdAkJbmxpbmtfc2l6ZTsKLSsJdWludDY0X3QJCWlyX3NwYXJzZTsJLyogc3BhcnNlIGlub2RlIGJpdG1hc2sgKi8KLSsJdWludDY0X3QJCWlub19jb25maXJtZWQ7CS8qIGNvbmZpcm1lZCBiaXRtYXNrICovCi0rCXVpbnQ2NF90CQlpbm9faXNhX2RpcjsJLyogYml0ID09IDEgaWYgYSBkaXJlY3RvcnkgKi8KLSsJdWludDY0X3QJCWlub193YXNfcmw7CS8qIGJpdCA9PSAxIGlmIHJlZmxpbmsgZmxhZyBzZXQgKi8KLSsJdWludDY0X3QJCWlub19pc19ybDsJLyogYml0ID09IDEgaWYgcmVmbGluayBmbGFnIHNob3VsZCBiZSBzZXQgKi8KLSsJdWludDhfdAkJCW5saW5rX3NpemU7Ci0gCXVuaW9uIGlub19ubGluawkJZGlza19ubGlua3M7CS8qIG9uLWRpc2sgbmxpbmtzLCBzZXQgaW4gUDMgKi8KLSAJdW5pb24gIHsKLSAJCWlub19leF9kYXRhX3QJKmV4X2RhdGE7CS8qIHBoYXNlcyA2LDcgKi8KLSAJCXBhcmVudF9saXN0X3QJKnBsaXN0OwkJLyogcGhhc2VzIDItNSAqLwotIAl9IGlub191bjsKLS0JX191aW50OF90CQkqZnR5cGVzOwkvKiBwaGFzZXMgMyw2ICovCi0rCXVpbnQ4X3QJCQkqZnR5cGVzOwkvKiBwaGFzZXMgMyw2ICovCi0gfSBpbm9fdHJlZV9ub2RlX3Q7Ci0gCi0tI2RlZmluZSBJTk9TX1BFUl9JUkVDCShzaXplb2YoX191aW50NjRfdCkgKiBOQkJZKQotLSNkZWZpbmUJSVJFQ19NQVNLKGkpCSgoX191aW50NjRfdCkxIDw8IChpKSkKLSsjZGVmaW5lIElOT1NfUEVSX0lSRUMJKHNpemVvZih1aW50NjRfdCkgKiBOQkJZKQotKyNkZWZpbmUJSVJFQ19NQVNLKGkpCSgodWludDY0X3QpMSA8PCAoaSkpCi0gCi0gdm9pZAkJYWRkX2lub19leF9kYXRhKHhmc19tb3VudF90ICptcCk7Ci0gCi1AQCAtNTQzLDEwICs1NDMsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgaW5vZGVfaXNfcmwoc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBvZmZzZXQpCi0gICovCi0gdm9pZCBhZGRfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KTsKLSB2b2lkIGRyb3BfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KTsKLS1fX3VpbnQzMl90IG51bV9pbm9kZV9yZWZlcmVuY2VzKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KTsKLSt1aW50MzJfdCBudW1faW5vZGVfcmVmZXJlbmNlcyhzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywgaW50IG9mZnNldCk7Ci0gCi0tdm9pZCBzZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBvZmZzZXQsIF9fdWludDMyX3QgbmxpbmtzKTsKLS1fX3VpbnQzMl90IGdldF9pbm9kZV9kaXNrX25saW5rcyhzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywgaW50IG9mZnNldCk7Ci0rdm9pZCBzZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBvZmZzZXQsIHVpbnQzMl90IG5saW5rcyk7Ci0rdWludDMyX3QgZ2V0X2lub2RlX2Rpc2tfbmxpbmtzKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KTsKLSAKLSBzdGF0aWMgaW5saW5lIGludCBpc19pbm9kZV9yZWFjaGVkKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KQotIHsKLUBAIC01NjcsMTMgKzU2NywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkX2lub2RlX3JlYWNoZWQoc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBvZmZzZXQpCi0gc3RhdGljIGlubGluZSB2b2lkCi0gc2V0X2lub2RlX2Z0eXBlKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLAotIAlpbnQJCWlub19vZmZzZXQsCi0tCV9fdWludDhfdAlmdHlwZSkKLSsJdWludDhfdAkJZnR5cGUpCi0gewotIAlpZiAoaXJlYy0+ZnR5cGVzKQotIAkJaXJlYy0+ZnR5cGVzW2lub19vZmZzZXRdID0gZnR5cGU7Ci0gfQotIAotLXN0YXRpYyBpbmxpbmUgX191aW50OF90Ci0rc3RhdGljIGlubGluZSB1aW50OF90Ci0gZ2V0X2lub2RlX2Z0eXBlKAotIAlzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywKLSAJaW50CQlpbm9fb2Zmc2V0KQotQEAgLTYwNiwxMSArNjA2LDExIEBAIHR5cGVkZWYgc3RydWN0IGJtX2xldmVsX3N0YXRlICB7Ci0gCXhmc19mc2Jsb2NrX3QJCWZzYm5vOwotIAl4ZnNfZnNibG9ja190CQlsZWZ0X2ZzYm5vOwotIAl4ZnNfZnNibG9ja190CQlyaWdodF9mc2JubzsKLS0JX191aW50NjRfdAkJZmlyc3Rfa2V5OwotLQlfX3VpbnQ2NF90CQlsYXN0X2tleTsKLSsJdWludDY0X3QJCWZpcnN0X2tleTsKLSsJdWludDY0X3QJCWxhc3Rfa2V5OwotIC8qCi0gCWludAkJCWxldmVsOwotLQlfX3VpbnQ2NF90CQlwcmV2X2xhc3Rfa2V5OwotKwl1aW50NjRfdAkJcHJldl9sYXN0X2tleTsKLSAJeGZzX2J1Zl90CQkqYnA7Ci0gCXhmc19ibWJ0X2Jsb2NrX3QJKmJsb2NrOwotICovCi1kaWZmIC0tZ2l0IGEvcmVwYWlyL2luY29yZV9leHQuYyBiL3JlcGFpci9pbmNvcmVfZXh0LmMKLWluZGV4IDdlNjc4NmM1Li4wYTgxMzhhOSAxMDA2NDQKLS0tLSBhL3JlcGFpci9pbmNvcmVfZXh0LmMKLSsrKyBiL3JlcGFpci9pbmNvcmVfZXh0LmMKLUBAIC03MjEsMTMgKzcyMSwxMyBAQCBzZWFyY2hfcnRfZHVwX2V4dGVudCh4ZnNfbW91bnRfdCAqbXAsIHhmc19ydGJsb2NrX3QgYm5vKQotIAlyZXR1cm4ocmV0KTsKLSB9Ci0gCi0tc3RhdGljIF9fdWludDY0X3QKLStzdGF0aWMgdWludDY0X3QKLSBhdmw2NF9ydF9leHRfc3RhcnQoYXZsNjRub2RlX3QgKm5vZGUpCi0gewotIAlyZXR1cm4oKChydF9leHRlbnRfdHJlZV9ub2RlX3QgKikgbm9kZSktPnJ0X3N0YXJ0YmxvY2spOwotIH0KLSAKLS1zdGF0aWMgX191aW50NjRfdAotK3N0YXRpYyB1aW50NjRfdAotIGF2bDY0X2V4dF9lbmQoYXZsNjRub2RlX3QgKm5vZGUpCi0gewotIAlyZXR1cm4oKChydF9leHRlbnRfdHJlZV9ub2RlX3QgKikgbm9kZSktPnJ0X3N0YXJ0YmxvY2sgKwotQEAgLTgzNCw3ICs4MzQsNyBAQCBjb3VudF9leHRlbnRzKHhmc19hZ251bWJlcl90IGFnbm8sIGF2bHRyZWVfZGVzY190ICp0cmVlLCBpbnQgd2hpY2h0cmVlKQotIGludAotIGNvdW50X2Jub19leHRlbnRzX2Jsb2Nrcyh4ZnNfYWdudW1iZXJfdCBhZ25vLCB1aW50ICpudW1ibG9ja3MpCi0gewotLQlfX3VpbnQ2NF90IG5ibG9ja3M7Ci0rCXVpbnQ2NF90IG5ibG9ja3M7Ci0gCWV4dGVudF90cmVlX25vZGVfdCAqbm9kZTsKLSAJaW50IGkgPSAwOwotIAotZGlmZiAtLWdpdCBhL3JlcGFpci9pbmNvcmVfaW5vLmMgYi9yZXBhaXIvaW5jb3JlX2luby5jCi1pbmRleCAyZWMxNzY1Ny4uM2I2YjQ0ZDQgMTAwNjQ0Ci0tLS0gYS9yZXBhaXIvaW5jb3JlX2luby5jCi0rKysgYi9yZXBhaXIvaW5jb3JlX2luby5jCi1AQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgYXZsdHJlZV9kZXNjX3QJKippbm9kZV91bmNlcnRhaW5fdHJlZV9wdHJzOwotIC8qIG1lbW9yeSBvcHRpbWlzZWQgbmxpbmsgY291bnRpbmcgZm9yIGFsbCBpbm9kZXMgKi8KLSAKLSBzdGF0aWMgdm9pZCAqCi0tYWxsb2NfbmxpbmtfYXJyYXkoX191aW50OF90IG5saW5rX3NpemUpCi0rYWxsb2NfbmxpbmtfYXJyYXkodWludDhfdCBubGlua19zaXplKQotIHsKLSAJdm9pZCAqcHRyOwotIAotQEAgLTUxLDEwICs1MSwxMCBAQCBhbGxvY19ubGlua19hcnJheShfX3VpbnQ4X3Qgbmxpbmtfc2l6ZSkKLSBzdGF0aWMgdm9pZAotIG5saW5rX2dyb3dfOF90b18xNihpbm9fdHJlZV9ub2RlX3QgKmlyZWMpCi0gewotLQlfX3VpbnQxNl90CSpuZXdfbmxpbmtzOwotKwl1aW50MTZfdAkqbmV3X25saW5rczsKLSAJaW50CQlpOwotIAotLQlpcmVjLT5ubGlua19zaXplID0gc2l6ZW9mKF9fdWludDE2X3QpOwotKwlpcmVjLT5ubGlua19zaXplID0gc2l6ZW9mKHVpbnQxNl90KTsKLSAKLSAJbmV3X25saW5rcyA9IGFsbG9jX25saW5rX2FycmF5KGlyZWMtPm5saW5rX3NpemUpOwotIAlmb3IgKGkgPSAwOyBpIDwgWEZTX0lOT0RFU19QRVJfQ0hVTks7IGkrKykKLUBAIC03NiwxMCArNzYsMTAgQEAgbmxpbmtfZ3Jvd184X3RvXzE2KGlub190cmVlX25vZGVfdCAqaXJlYykKLSBzdGF0aWMgdm9pZAotIG5saW5rX2dyb3dfMTZfdG9fMzIoaW5vX3RyZWVfbm9kZV90ICppcmVjKQotIHsKLS0JX191aW50MzJfdAkqbmV3X25saW5rczsKLSsJdWludDMyX3QJKm5ld19ubGlua3M7Ci0gCWludAkJaTsKLSAKLS0JaXJlYy0+bmxpbmtfc2l6ZSA9IHNpemVvZihfX3VpbnQzMl90KTsKLSsJaXJlYy0+bmxpbmtfc2l6ZSA9IHNpemVvZih1aW50MzJfdCk7Ci0gCi0gCW5ld19ubGlua3MgPSBhbGxvY19ubGlua19hcnJheShpcmVjLT5ubGlua19zaXplKTsKLSAJZm9yIChpID0gMDsgaSA8IFhGU19JTk9ERVNfUEVSX0NIVU5LOyBpKyspCi1AQCAtMTA0LDIxICsxMDQsMjEgQEAgdm9pZCBhZGRfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKLSAJQVNTRVJUKGlyZWMtPmlub191bi5leF9kYXRhICE9IE5VTEwpOwotIAotIAlzd2l0Y2ggKGlyZWMtPm5saW5rX3NpemUpIHsKLS0JY2FzZSBzaXplb2YoX191aW50OF90KToKLSsJY2FzZSBzaXplb2YodWludDhfdCk6Ci0gCQlpZiAoaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuOFtpbm9fb2Zmc2V0XSA8IDB4ZmYpIHsKLSAJCQlpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW44W2lub19vZmZzZXRdKys7Ci0gCQkJYnJlYWs7Ci0gCQl9Ci0gCQlubGlua19ncm93XzhfdG9fMTYoaXJlYyk7Ci0gCQkvKkZBTExUSFJVKi8KLS0JY2FzZSBzaXplb2YoX191aW50MTZfdCk6Ci0rCWNhc2Ugc2l6ZW9mKHVpbnQxNl90KToKLSAJCWlmIChpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW4xNltpbm9fb2Zmc2V0XSA8IDB4ZmZmZikgewotIAkJCWlyZWMtPmlub191bi5leF9kYXRhLT5jb3VudGVkX25saW5rcy51bjE2W2lub19vZmZzZXRdKys7Ci0gCQkJYnJlYWs7Ci0gCQl9Ci0gCQlubGlua19ncm93XzE2X3RvXzMyKGlyZWMpOwotIAkJLypGQUxMVEhSVSovCi0tCWNhc2Ugc2l6ZW9mKF9fdWludDMyX3QpOgotKwljYXNlIHNpemVvZih1aW50MzJfdCk6Ci0gCQlpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW4zMltpbm9fb2Zmc2V0XSsrOwotIAkJYnJlYWs7Ci0gCWRlZmF1bHQ6Ci1AQCAtMTI4LDIwICsxMjgsMjAgQEAgdm9pZCBhZGRfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKLSAKLSB2b2lkIGRyb3BfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKLSB7Ci0tCV9fdWludDMyX3QJcmVmcyA9IDA7Ci0rCXVpbnQzMl90CXJlZnMgPSAwOwotIAotIAlBU1NFUlQoaXJlYy0+aW5vX3VuLmV4X2RhdGEgIT0gTlVMTCk7Ci0gCi0gCXN3aXRjaCAoaXJlYy0+bmxpbmtfc2l6ZSkgewotLQljYXNlIHNpemVvZihfX3VpbnQ4X3QpOgotKwljYXNlIHNpemVvZih1aW50OF90KToKLSAJCUFTU0VSVChpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW44W2lub19vZmZzZXRdID4gMCk7Ci0gCQlyZWZzID0gLS1pcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW44W2lub19vZmZzZXRdOwotIAkJYnJlYWs7Ci0tCWNhc2Ugc2l6ZW9mKF9fdWludDE2X3QpOgotKwljYXNlIHNpemVvZih1aW50MTZfdCk6Ci0gCQlBU1NFUlQoaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuMTZbaW5vX29mZnNldF0gPiAwKTsKLSAJCXJlZnMgPSAtLWlyZWMtPmlub191bi5leF9kYXRhLT5jb3VudGVkX25saW5rcy51bjE2W2lub19vZmZzZXRdOwotIAkJYnJlYWs7Ci0tCWNhc2Ugc2l6ZW9mKF9fdWludDMyX3QpOgotKwljYXNlIHNpemVvZih1aW50MzJfdCk6Ci0gCQlBU1NFUlQoaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuMzJbaW5vX29mZnNldF0gPiAwKTsKLSAJCXJlZnMgPSAtLWlyZWMtPmlub191bi5leF9kYXRhLT5jb3VudGVkX25saW5rcy51bjMyW2lub19vZmZzZXRdOwotIAkJYnJlYWs7Ci1AQCAtMTUzLDE2ICsxNTMsMTYgQEAgdm9pZCBkcm9wX2lub2RlX3JlZihzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywgaW50IGlub19vZmZzZXQpCi0gCQlpcmVjLT5pbm9fdW4uZXhfZGF0YS0+aW5vX3JlYWNoZWQgJj0gfklSRUNfTUFTSyhpbm9fb2Zmc2V0KTsKLSB9Ci0gCi0tX191aW50MzJfdCBudW1faW5vZGVfcmVmZXJlbmNlcyhzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywgaW50IGlub19vZmZzZXQpCi0rdWludDMyX3QgbnVtX2lub2RlX3JlZmVyZW5jZXMoc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0KQotIHsKLSAJQVNTRVJUKGlyZWMtPmlub191bi5leF9kYXRhICE9IE5VTEwpOwotIAotIAlzd2l0Y2ggKGlyZWMtPm5saW5rX3NpemUpIHsKLS0JY2FzZSBzaXplb2YoX191aW50OF90KToKLSsJY2FzZSBzaXplb2YodWludDhfdCk6Ci0gCQlyZXR1cm4gaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuOFtpbm9fb2Zmc2V0XTsKLS0JY2FzZSBzaXplb2YoX191aW50MTZfdCk6Ci0rCWNhc2Ugc2l6ZW9mKHVpbnQxNl90KToKLSAJCXJldHVybiBpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW4xNltpbm9fb2Zmc2V0XTsKLS0JY2FzZSBzaXplb2YoX191aW50MzJfdCk6Ci0rCWNhc2Ugc2l6ZW9mKHVpbnQzMl90KToKLSAJCXJldHVybiBpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW4zMltpbm9fb2Zmc2V0XTsKLSAJZGVmYXVsdDoKLSAJCUFTU0VSVCgwKTsKLUBAIC0xNzEsMjQgKzE3MSwyNCBAQCBfX3VpbnQzMl90IG51bV9pbm9kZV9yZWZlcmVuY2VzKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKLSB9Ci0gCi0gdm9pZCBzZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0LAotLQkJX191aW50MzJfdCBubGlua3MpCi0rCQl1aW50MzJfdCBubGlua3MpCi0gewotIAlzd2l0Y2ggKGlyZWMtPm5saW5rX3NpemUpIHsKLS0JY2FzZSBzaXplb2YoX191aW50OF90KToKLSsJY2FzZSBzaXplb2YodWludDhfdCk6Ci0gCQlpZiAobmxpbmtzIDwgMHhmZikgewotIAkJCWlyZWMtPmRpc2tfbmxpbmtzLnVuOFtpbm9fb2Zmc2V0XSA9IG5saW5rczsKLSAJCQlicmVhazsKLSAJCX0KLSAJCW5saW5rX2dyb3dfOF90b18xNihpcmVjKTsKLSAJCS8qRkFMTFRIUlUqLwotLQljYXNlIHNpemVvZihfX3VpbnQxNl90KToKLSsJY2FzZSBzaXplb2YodWludDE2X3QpOgotIAkJaWYgKG5saW5rcyA8IDB4ZmZmZikgewotIAkJCWlyZWMtPmRpc2tfbmxpbmtzLnVuMTZbaW5vX29mZnNldF0gPSBubGlua3M7Ci0gCQkJYnJlYWs7Ci0gCQl9Ci0gCQlubGlua19ncm93XzE2X3RvXzMyKGlyZWMpOwotIAkJLypGQUxMVEhSVSovCi0tCWNhc2Ugc2l6ZW9mKF9fdWludDMyX3QpOgotKwljYXNlIHNpemVvZih1aW50MzJfdCk6Ci0gCQlpcmVjLT5kaXNrX25saW5rcy51bjMyW2lub19vZmZzZXRdID0gbmxpbmtzOwotIAkJYnJlYWs7Ci0gCWRlZmF1bHQ6Ci1AQCAtMTk2LDE0ICsxOTYsMTQgQEAgdm9pZCBzZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0LAotIAl9Ci0gfQotIAotLV9fdWludDMyX3QgZ2V0X2lub2RlX2Rpc2tfbmxpbmtzKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKLSt1aW50MzJfdCBnZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0KQotIHsKLSAJc3dpdGNoIChpcmVjLT5ubGlua19zaXplKSB7Ci0tCWNhc2Ugc2l6ZW9mKF9fdWludDhfdCk6Ci0rCWNhc2Ugc2l6ZW9mKHVpbnQ4X3QpOgotIAkJcmV0dXJuIGlyZWMtPmRpc2tfbmxpbmtzLnVuOFtpbm9fb2Zmc2V0XTsKLS0JY2FzZSBzaXplb2YoX191aW50MTZfdCk6Ci0rCWNhc2Ugc2l6ZW9mKHVpbnQxNl90KToKLSAJCXJldHVybiBpcmVjLT5kaXNrX25saW5rcy51bjE2W2lub19vZmZzZXRdOwotLQljYXNlIHNpemVvZihfX3VpbnQzMl90KToKLSsJY2FzZSBzaXplb2YodWludDMyX3QpOgotIAkJcmV0dXJuIGlyZWMtPmRpc2tfbmxpbmtzLnVuMzJbaW5vX29mZnNldF07Ci0gCWRlZmF1bHQ6Ci0gCQlBU1NFUlQoMCk7Ci1AQCAtMjExLDExICsyMTEsMTEgQEAgX191aW50MzJfdCBnZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0KQotIAlyZXR1cm4gMDsKLSB9Ci0gCi0tc3RhdGljIF9fdWludDhfdCAqCi0rc3RhdGljIHVpbnQ4X3QgKgotIGFsbG9jX2Z0eXBlc19hcnJheSgKLSAJc3RydWN0IHhmc19tb3VudCAqbXApCi0gewotLQlfX3VpbnQ4X3QJKnB0cjsKLSsJdWludDhfdAkJKnB0cjsKLSAKLSAJaWYgKCF4ZnNfc2JfdmVyc2lvbl9oYXNmdHlwZSgmbXAtPm1fc2IpKQotIAkJcmV0dXJuIE5VTEw7Ci1AQCAtMjYyLDIzICsyNjIsMjMgQEAgYWxsb2NfaW5vX25vZGUoCi0gCWlyZWMtPmlyX2ZyZWUgPSAoeGZzX2lub2ZyZWVfdCkgLSAxOwotIAlpcmVjLT5pcl9zcGFyc2UgPSAwOwotIAlpcmVjLT5pbm9fdW4uZXhfZGF0YSA9IE5VTEw7Ci0tCWlyZWMtPm5saW5rX3NpemUgPSBzaXplb2YoX191aW50OF90KTsKLSsJaXJlYy0+bmxpbmtfc2l6ZSA9IHNpemVvZih1aW50OF90KTsKLSAJaXJlYy0+ZGlza19ubGlua3MudW44ID0gYWxsb2NfbmxpbmtfYXJyYXkoaXJlYy0+bmxpbmtfc2l6ZSk7Ci0gCWlyZWMtPmZ0eXBlcyA9IGFsbG9jX2Z0eXBlc19hcnJheShtcCk7Ci0gCXJldHVybiBpcmVjOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLWZyZWVfbmxpbmtfYXJyYXkodW5pb24gaW5vX25saW5rIG5saW5rcywgX191aW50OF90IG5saW5rX3NpemUpCi0rZnJlZV9ubGlua19hcnJheSh1bmlvbiBpbm9fbmxpbmsgbmxpbmtzLCB1aW50OF90IG5saW5rX3NpemUpCi0gewotIAlzd2l0Y2ggKG5saW5rX3NpemUpIHsKLS0JY2FzZSBzaXplb2YoX191aW50OF90KToKLSsJY2FzZSBzaXplb2YodWludDhfdCk6Ci0gCQlmcmVlKG5saW5rcy51bjgpOwotIAkJYnJlYWs7Ci0tCWNhc2Ugc2l6ZW9mKF9fdWludDE2X3QpOgotKwljYXNlIHNpemVvZih1aW50MTZfdCk6Ci0gCQlmcmVlKG5saW5rcy51bjE2KTsKLSAJCWJyZWFrOwotLQljYXNlIHNpemVvZihfX3VpbnQzMl90KToKLSsJY2FzZSBzaXplb2YodWludDMyX3QpOgotIAkJZnJlZShubGlua3MudW4zMik7Ci0gCQlicmVhazsKLSAJZGVmYXVsdDoKLUBAIC02MDksNyArNjA5LDcgQEAgc2V0X2lub2RlX3BhcmVudCgKLSAJaW50CQkJaTsKLSAJaW50CQkJY250OwotIAlpbnQJCQl0YXJnZXQ7Ci0tCV9fdWludDY0X3QJCWJpdG1hc2s7Ci0rCXVpbnQ2NF90CQliaXRtYXNrOwotIAlwYXJlbnRfZW50cnlfdAkJKnRtcDsKLSAKLSAJaWYgKGZ1bGxfaW5vX2V4X2RhdGEpCi1AQCAtNjk5LDcgKzY5OSw3IEBAIHNldF9pbm9kZV9wYXJlbnQoCi0geGZzX2lub190Ci0gZ2V0X2lub2RlX3BhcmVudChpbm9fdHJlZV9ub2RlX3QgKmlyZWMsIGludCBvZmZzZXQpCi0gewotLQlfX3VpbnQ2NF90CWJpdG1hc2s7Ci0rCXVpbnQ2NF90CWJpdG1hc2s7Ci0gCXBhcmVudF9saXN0X3QJKnB0Ymw7Ci0gCWludAkJaTsKLSAJaW50CQl0YXJnZXQ7Ci1AQCAtNzQwLDE1ICs3NDAsMTUgQEAgYWxsb2NfZXhfZGF0YShpbm9fdHJlZV9ub2RlX3QgKmlyZWMpCi0gCWlyZWMtPmlub191bi5leF9kYXRhLT5wYXJlbnRzID0gcHRibDsKLSAKLSAJc3dpdGNoIChpcmVjLT5ubGlua19zaXplKSB7Ci0tCWNhc2Ugc2l6ZW9mKF9fdWludDhfdCk6Ci0rCWNhc2Ugc2l6ZW9mKHVpbnQ4X3QpOgotIAkJaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuOCA9Ci0gCQkJYWxsb2NfbmxpbmtfYXJyYXkoaXJlYy0+bmxpbmtfc2l6ZSk7Ci0gCQlicmVhazsKLS0JY2FzZSBzaXplb2YoX191aW50MTZfdCk6Ci0rCWNhc2Ugc2l6ZW9mKHVpbnQxNl90KToKLSAJCWlyZWMtPmlub191bi5leF9kYXRhLT5jb3VudGVkX25saW5rcy51bjE2ID0KLSAJCQlhbGxvY19ubGlua19hcnJheShpcmVjLT5ubGlua19zaXplKTsKLSAJCWJyZWFrOwotLQljYXNlIHNpemVvZihfX3VpbnQzMl90KToKLSsJY2FzZSBzaXplb2YodWludDMyX3QpOgotIAkJaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuMzIgPQotIAkJCWFsbG9jX25saW5rX2FycmF5KGlyZWMtPm5saW5rX3NpemUpOwotIAkJYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvcmVwYWlyL3BoYXNlMi5jIGIvcmVwYWlyL3BoYXNlMi5jCi1pbmRleCBjMjE3NzhiOC4uMDA4NTczMmIgMTAwNjQ0Ci0tLS0gYS9yZXBhaXIvcGhhc2UyLmMKLSsrKyBiL3JlcGFpci9waGFzZTIuYwotQEAgLTE3OSw3ICsxNzksNyBAQCBwaGFzZTIoCi0gCi0gCWJhZF9pbm9fYnRyZWUgPSAwOwotIAotLQlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1NDQU5fQUcsIChfX3VpbnQ2NF90KSBnbG9iX2FnY291bnQpOwotKwlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1NDQU5fQUcsICh1aW50NjRfdCkgZ2xvYl9hZ2NvdW50KTsKLSAKLSAJc2Nhbl9hZ3MobXAsIHNjYW5fdGhyZWFkcyk7Ci0gCi1kaWZmIC0tZ2l0IGEvcmVwYWlyL3BoYXNlMy5jIGIvcmVwYWlyL3BoYXNlMy5jCi1pbmRleCAwODkwYTI3ZC4uMTdiMWMyOGQgMTAwNjQ0Ci0tLS0gYS9yZXBhaXIvcGhhc2UzLmMKLSsrKyBiL3JlcGFpci9waGFzZTMuYwotQEAgLTEyMiw3ICsxMjIsNyBAQCBwaGFzZTMoCi0gCWVsc2UKLSAJCWRvX2xvZyhfKCIgICAgICAgIC0gc2NhbiAoYnV0IGRvbid0IGNsZWFyKSBhZ2kgdW5saW5rZWQgbGlzdHMuLi5cbiIpKTsKLSAKLS0Jc2V0X3Byb2dyZXNzX21zZyhQUk9HX0ZNVF9BR0lfVU5MSU5LRUQsIChfX3VpbnQ2NF90KSBnbG9iX2FnY291bnQpOwotKwlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX0FHSV9VTkxJTktFRCwgKHVpbnQ2NF90KSBnbG9iX2FnY291bnQpOwotIAotIAkvKiBmaXJzdCBjbGVhciB0aGUgYWdpIHVubGlua2VkIEFHSSBsaXN0ICovCi0gCWlmICghbm9fbW9kaWZ5KSB7Ci1AQCAtMTQyLDcgKzE0Miw3IEBAIHBoYXNlMygKLSAJZG9fbG9nKF8oCi0gCSAgICAiICAgICAgICAtIHByb2Nlc3Mga25vd24gaW5vZGVzIGFuZCBwZXJmb3JtIGlub2RlIGRpc2NvdmVyeS4uLlxuIikpOwotIAotLQlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1BST0NFU1NfSU5PLCAoX191aW50NjRfdCkgbXAtPm1fc2Iuc2JfaWNvdW50KTsKLSsJc2V0X3Byb2dyZXNzX21zZyhQUk9HX0ZNVF9QUk9DRVNTX0lOTywgKHVpbnQ2NF90KSBtcC0+bV9zYi5zYl9pY291bnQpOwotIAotIAlwcm9jZXNzX2FncyhtcCk7Ci0gCi1AQCAtMTUyLDcgKzE1Miw3IEBAIHBoYXNlMygKLSAJICogcHJvY2VzcyBuZXdseSBkaXNjb3ZlcmVkIGlub2RlIGNodW5rcwotIAkgKi8KLSAJZG9fbG9nKF8oIiAgICAgICAgLSBwcm9jZXNzIG5ld2x5IGRpc2NvdmVyZWQgaW5vZGVzLi4uXG4iKSk7Ci0tCXNldF9wcm9ncmVzc19tc2coUFJPR19GTVRfTkVXX0lOT0RFUywgKF9fdWludDY0X3QpIGdsb2JfYWdjb3VudCk7Ci0rCXNldF9wcm9ncmVzc19tc2coUFJPR19GTVRfTkVXX0lOT0RFUywgKHVpbnQ2NF90KSBnbG9iX2FnY291bnQpOwotIAotIAljb3VudHMgPSBjYWxsb2Moc2l6ZW9mKCpjb3VudHMpLCBtcC0+bV9zYi5zYl9hZ2NvdW50KTsKLSAJaWYgKCFjb3VudHMpIHsKLWRpZmYgLS1naXQgYS9yZXBhaXIvcGhhc2U0LmMgYi9yZXBhaXIvcGhhc2U0LmMKLWluZGV4IGU1OTQ2NGIxLi5jYzE3ZWMwMyAxMDA2NDQKLS0tLSBhL3JlcGFpci9waGFzZTQuYwotKysrIGIvcmVwYWlyL3BoYXNlNC5jCi1AQCAtMjkwLDcgKzI5MCw3IEBAIHBoYXNlNCh4ZnNfbW91bnRfdCAqbXApCi0gCWRvX2xvZyhfKCJQaGFzZSA0IC0gY2hlY2sgZm9yIGR1cGxpY2F0ZSBibG9ja3MuLi5cbiIpKTsKLSAJZG9fbG9nKF8oIiAgICAgICAgLSBzZXR0aW5nIHVwIGR1cGxpY2F0ZSBleHRlbnQgbGlzdC4uLlxuIikpOwotIAotLQlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX0RVUF9FWFRFTlQsIChfX3VpbnQ2NF90KSBnbG9iX2FnY291bnQpOwotKwlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX0RVUF9FWFRFTlQsICh1aW50NjRfdCkgZ2xvYl9hZ2NvdW50KTsKLSAKLSAJaXJlYyA9IGZpbmRfaW5vZGVfcmVjKG1wLCBYRlNfSU5PX1RPX0FHTk8obXAsIG1wLT5tX3NiLnNiX3Jvb3Rpbm8pLAotIAkJCQlYRlNfSU5PX1RPX0FHSU5PKG1wLCBtcC0+bV9zYi5zYl9yb290aW5vKSk7Ci1AQCAtNDA0LDcgKzQwNCw3IEBAIHBoYXNlNCh4ZnNfbW91bnRfdCAqbXApCi0gCXJlc2V0X2JtYXBzKG1wKTsKLSAKLSAJZG9fbG9nKF8oIiAgICAgICAgLSBjaGVjayBmb3IgaW5vZGVzIGNsYWltaW5nIGR1cGxpY2F0ZSBibG9ja3MuLi5cbiIpKTsKLS0Jc2V0X3Byb2dyZXNzX21zZyhQUk9HX0ZNVF9EVVBfQkxPQ0tTLCAoX191aW50NjRfdCkgbXAtPm1fc2Iuc2JfaWNvdW50KTsKLSsJc2V0X3Byb2dyZXNzX21zZyhQUk9HX0ZNVF9EVVBfQkxPQ0tTLCAodWludDY0X3QpIG1wLT5tX3NiLnNiX2ljb3VudCk7Ci0gCi0gCS8qCi0gCSAqIG9rLCBub3cgcHJvY2VzcyB0aGUgaW5vZGVzIC0tIHNpZ25hbCAyLXBhc3MgY2hlY2sgcGVyIGlub2RlLgotZGlmZiAtLWdpdCBhL3JlcGFpci9waGFzZTUuYyBiL3JlcGFpci9waGFzZTUuYwotaW5kZXggMGI4MzNmMTMuLjIxZGNlNjdhIDEwMDY0NAotLS0tIGEvcmVwYWlyL3BoYXNlNS5jCi0rKysgYi9yZXBhaXIvcGhhc2U1LmMKLUBAIC04Niw5ICs4Niw5IEBAIHN0cnVjdCBhZ2lfc3RhdCB7Ci0gCXhmc19hZ2lub190CQlmcmVlY291bnQ7Ci0gfTsKLSAKLS1zdGF0aWMgX191aW50NjRfdAkqc2JfaWNvdW50X2FnOwkJLyogYWxsb2NhdGVkIGlub2RlcyBwZXIgYWcgKi8KLS1zdGF0aWMgX191aW50NjRfdAkqc2JfaWZyZWVfYWc7CQkvKiBmcmVlIGlub2RlcyBwZXIgYWcgKi8KLS1zdGF0aWMgX191aW50NjRfdAkqc2JfZmRibG9ja3NfYWc7CS8qIGZyZWUgZGF0YSBibG9ja3MgcGVyIGFnICovCi0rc3RhdGljIHVpbnQ2NF90CSpzYl9pY291bnRfYWc7CQkvKiBhbGxvY2F0ZWQgaW5vZGVzIHBlciBhZyAqLwotK3N0YXRpYyB1aW50NjRfdAkqc2JfaWZyZWVfYWc7CQkvKiBmcmVlIGlub2RlcyBwZXIgYWcgKi8KLStzdGF0aWMgdWludDY0X3QJKnNiX2ZkYmxvY2tzX2FnOwkvKiBmcmVlIGRhdGEgYmxvY2tzIHBlciBhZyAqLwotIAotIHN0YXRpYyBpbnQKLSBta19pbmNvcmVfZnN0cmVlKHhmc19tb3VudF90ICptcCwgeGZzX2FnbnVtYmVyX3QgYWdubykKLUBAIC04ODYsMTAgKzg4NiwxMCBAQCBidWlsZF9mcmVlc3BhY2VfdHJlZSh4ZnNfbW91bnRfdCAqbXAsIHhmc19hZ251bWJlcl90IGFnbm8sCi0gICovCi0gc3RhdGljIHZvaWQKLSBpbml0X2lub19jdXJzb3IoeGZzX21vdW50X3QgKm1wLCB4ZnNfYWdudW1iZXJfdCBhZ25vLCBidF9zdGF0dXNfdCAqYnRyZWVfY3VycywKLS0JCV9fdWludDY0X3QgKm51bV9pbm9zLCBfX3VpbnQ2NF90ICpudW1fZnJlZV9pbm9zLCBpbnQgZmlub2J0KQotKwkJdWludDY0X3QgKm51bV9pbm9zLCB1aW50NjRfdCAqbnVtX2ZyZWVfaW5vcywgaW50IGZpbm9idCkKLSB7Ci0tCV9fdWludDY0X3QJCW5pbm9zOwotLQlfX3VpbnQ2NF90CQluZmlub3M7Ci0rCXVpbnQ2NF90CQluaW5vczsKLSsJdWludDY0X3QJCW5maW5vczsKLSAJaW50CQkJcmVjX25maW5vczsKLSAJaW50CQkJcmVjX25pbm9zOwotIAlpbm9fdHJlZV9ub2RlX3QJCSppbm9fcmVjOwotQEAgLTIxOTMsMTAgKzIxOTMsMTAgQEAgcGhhc2U1X2Z1bmMoCi0gCXhmc19hZ251bWJlcl90CWFnbm8sCi0gCXN0cnVjdCB4ZnNfc2xhYgkqbG9zdF9mc2IpCi0gewotLQlfX3VpbnQ2NF90CW51bV9pbm9zOwotLQlfX3VpbnQ2NF90CW51bV9mcmVlX2lub3M7Ci0tCV9fdWludDY0X3QJZmlub2J0X251bV9pbm9zOwotLQlfX3VpbnQ2NF90CWZpbm9idF9udW1fZnJlZV9pbm9zOwotKwl1aW50NjRfdAludW1faW5vczsKLSsJdWludDY0X3QJbnVtX2ZyZWVfaW5vczsKLSsJdWludDY0X3QJZmlub2J0X251bV9pbm9zOwotKwl1aW50NjRfdAlmaW5vYnRfbnVtX2ZyZWVfaW5vczsKLSAJYnRfc3RhdHVzX3QJYm5vX2J0cmVlX2N1cnM7Ci0gCWJ0X3N0YXR1c190CWJjbnRfYnRyZWVfY3VyczsKLSAJYnRfc3RhdHVzX3QJaW5vX2J0cmVlX2N1cnM7Ci1AQCAtMjQ3MSw3ICsyNDcxLDcgQEAgcGhhc2U1KHhmc19tb3VudF90ICptcCkKLSAJaW50CQkJZXJyb3I7Ci0gCi0gCWRvX2xvZyhfKCJQaGFzZSA1IC0gcmVidWlsZCBBRyBoZWFkZXJzIGFuZCB0cmVlcy4uLlxuIikpOwotLQlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1JFQlVJTERfQUcsIChfX3VpbnQ2NF90IClnbG9iX2FnY291bnQpOwotKwlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1JFQlVJTERfQUcsICh1aW50NjRfdClnbG9iX2FnY291bnQpOwotIAotICNpZmRlZiBYUl9CTERfRlJFRV9UUkFDRQotIAlmcHJpbnRmKHN0ZGVyciwgImlub2J0IGxldmVsIDEsIG1heHJlYyA9ICVkLCBtaW5yZWMgPSAlZFxuIiwKLUBAIC0yNDk3LDE1ICsyNDk3LDE1IEBAIHBoYXNlNSh4ZnNfbW91bnRfdCAqbXApCi0gCWtlZXBfZnNpbm9zKG1wKTsKLSAKLSAJLyogYWxsb2NhdGUgcGVyIGFnIGNvdW50ZXJzICovCi0tCXNiX2ljb3VudF9hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YoX191aW50NjRfdCkpOwotKwlzYl9pY291bnRfYWcgPSBjYWxsb2MobXAtPm1fc2Iuc2JfYWdjb3VudCwgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gCWlmIChzYl9pY291bnRfYWcgPT0gTlVMTCkKLSAJCWRvX2Vycm9yKF8oImNhbm5vdCBhbGxvYyBzYl9pY291bnRfYWcgYnVmZmVyc1xuIikpOwotIAotLQlzYl9pZnJlZV9hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YoX191aW50NjRfdCkpOwotKwlzYl9pZnJlZV9hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YodWludDY0X3QpKTsKLSAJaWYgKHNiX2lmcmVlX2FnID09IE5VTEwpCi0gCQlkb19lcnJvcihfKCJjYW5ub3QgYWxsb2Mgc2JfaWZyZWVfYWcgYnVmZmVyc1xuIikpOwotIAotLQlzYl9mZGJsb2Nrc19hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YoX191aW50NjRfdCkpOwotKwlzYl9mZGJsb2Nrc19hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YodWludDY0X3QpKTsKLSAJaWYgKHNiX2ZkYmxvY2tzX2FnID09IE5VTEwpCi0gCQlkb19lcnJvcihfKCJjYW5ub3QgYWxsb2Mgc2JfZmRibG9ja3NfYWcgYnVmZmVyc1xuIikpOwotIAotZGlmZiAtLWdpdCBhL3JlcGFpci9waGFzZTYuYyBiL3JlcGFpci9waGFzZTYuYwotaW5kZXggMDg2MzZkY2YuLjM3M2IxYTViIDEwMDY0NAotLS0tIGEvcmVwYWlyL3BoYXNlNi5jCi0rKysgYi9yZXBhaXIvcGhhc2U2LmMKLUBAIC04Miw3ICs4Miw3IEBAIHR5cGVkZWYgc3RydWN0IGRpcl9oYXNoX2VudCB7Ci0gCXN0cnVjdCBkaXJfaGFzaF9lbnQJKm5leHRieWhhc2g7CS8qIG5leHQgaW4gbmFtZSBidWNrZXQgKi8KLSAJc3RydWN0IGRpcl9oYXNoX2VudAkqbmV4dGJ5b3JkZXI7CS8qIG5leHQgaW4gb3JkZXIgYWRkZWQgKi8KLSAJeGZzX2RhaGFzaF90CQloYXNodmFsOwkvKiBoYXNoIHZhbHVlIG9mIG5hbWUgKi8KLS0JX191aW50MzJfdAkJYWRkcmVzczsJLyogb2Zmc2V0IG9mIGRhdGEgZW50cnkgKi8KLSsJdWludDMyX3QJCWFkZHJlc3M7CS8qIG9mZnNldCBvZiBkYXRhIGVudHJ5ICovCi0gCXhmc19pbm9fdCAJCWludW07CQkvKiBpbm9kZSBudW0gb2YgZW50cnkgKi8KLSAJc2hvcnQJCQlqdW5raXQ7CQkvKiBuYW1lIHN0YXJ0cyB3aXRoIC8gKi8KLSAJc2hvcnQJCQlzZWVuOwkJLyogaGF2ZSBzZWVuIGxlYWYgZW50cnkgKi8KLUBAIC0xNzAsMTEgKzE3MCwxMSBAQCBzdGF0aWMgaW50Ci0gZGlyX2hhc2hfYWRkKAotIAl4ZnNfbW91bnRfdAkJKm1wLAotIAlkaXJfaGFzaF90YWJfdAkJKmhhc2h0YWIsCi0tCV9fdWludDMyX3QJCWFkZHIsCi0rCXVpbnQzMl90CQlhZGRyLAotIAl4ZnNfaW5vX3QJCWludW0sCi0gCWludAkJCW5hbWVsZW4sCi0gCXVuc2lnbmVkIGNoYXIJCSpuYW1lLAotLQlfX3VpbnQ4X3QJCWZ0eXBlKQotKwl1aW50OF90CQkJZnR5cGUpCi0gewotIAl4ZnNfZGFoYXNoX3QJCWhhc2ggPSAwOwotIAlpbnQJCQlieWFkZHI7Ci1AQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyB2b2lkCi0gZGlyX2hhc2hfdXBkYXRlX2Z0eXBlKAotIAlkaXJfaGFzaF90YWJfdAkJKmhhc2h0YWIsCi0gCXhmc19kaXIyX2RhdGFwdHJfdAlhZGRyLAotLQlfX3VpbnQ4X3QJCWZ0eXBlKQotKwl1aW50OF90CQkJZnR5cGUpCi0gewotIAlpbnQJCQlpOwotIAlkaXJfaGFzaF9lbnRfdAkJKnA7Ci1AQCAtMTc5MSw4ICsxNzkxLDggQEAgbG9uZ2Zvcm1fZGlyMl9lbnRyeV9jaGVja19kYXRhKAotIAotIAkJLyogdmFsaWRhdGUgZnR5cGUgZmllbGQgaWYgc3VwcG9ydGVkICovCi0gCQlpZiAoeGZzX3NiX3ZlcnNpb25faGFzZnR5cGUoJm1wLT5tX3NiKSkgewotLQkJCV9fdWludDhfdCBkaXJfZnR5cGU7Ci0tCQkJX191aW50OF90IGlub19mdHlwZTsKLSsJCQl1aW50OF90IGRpcl9mdHlwZTsKLSsJCQl1aW50OF90IGlub19mdHlwZTsKLSAKLSAJCQlkaXJfZnR5cGUgPSBNX0RJUk9QUyhtcCktPmRhdGFfZ2V0X2Z0eXBlKGRlcCk7Ci0gCQkJaW5vX2Z0eXBlID0gZ2V0X2lub2RlX2Z0eXBlKGlyZWMsIGlub19vZmZzZXQpOwotQEAgLTI3MDMsOCArMjcwMyw4IEBAIF8oImVudHJ5IFwiJXNcIiAoaW5vICUiIFBSSXU2NCAiKSBpbiBkaXIgJSIgUFJJdTY0ICIgaXMgYSBkdXBsaWNhdGUgbmFtZSIpLAotIAotIAkJLyogdmFsaWRhdGUgZnR5cGUgZmllbGQgaWYgc3VwcG9ydGVkICovCi0gCQlpZiAoeGZzX3NiX3ZlcnNpb25faGFzZnR5cGUoJm1wLT5tX3NiKSkgewotLQkJCV9fdWludDhfdCBkaXJfZnR5cGU7Ci0tCQkJX191aW50OF90IGlub19mdHlwZTsKLSsJCQl1aW50OF90IGRpcl9mdHlwZTsKLSsJCQl1aW50OF90IGlub19mdHlwZTsKLSAKLSAJCQlkaXJfZnR5cGUgPSBNX0RJUk9QUyhtcCktPnNmX2dldF9mdHlwZShzZmVwKTsKLSAJCQlpbm9fZnR5cGUgPSBnZXRfaW5vZGVfZnR5cGUoaXJlYywgaW5vX29mZnNldCk7Ci1kaWZmIC0tZ2l0IGEvcmVwYWlyL3BoYXNlNy5jIGIvcmVwYWlyL3BoYXNlNy5jCi1pbmRleCA4YmNlMTE3ZC4uNGZmYjgxYTggMTAwNjQ0Ci0tLS0gYS9yZXBhaXIvcGhhc2U3LmMKLSsrKyBiL3JlcGFpci9waGFzZTcuYwotQEAgLTMyLDcgKzMyLDcgQEAgc3RhdGljIHZvaWQKLSB1cGRhdGVfaW5vZGVfbmxpbmtzKAotIAl4ZnNfbW91bnRfdCAJCSptcCwKLSAJeGZzX2lub190CQlpbm8sCi0tCV9fdWludDMyX3QJCW5saW5rcykKLSsJdWludDMyX3QJCW5saW5rcykKLSB7Ci0gCXhmc190cmFuc190CQkqdHA7Ci0gCXhmc19pbm9kZV90CQkqaXA7Ci1AQCAtMTA0LDcgKzEwNCw3IEBAIGRvX2xpbmtfdXBkYXRlcygKLSB7Ci0gCWlub190cmVlX25vZGVfdAkJKmlyZWM7Ci0gCWludAkJCWo7Ci0tCV9fdWludDMyX3QJCW5yZWZzOwotKwl1aW50MzJfdAkJbnJlZnM7Ci0gCi0gCWZvciAoaXJlYyA9IGZpbmRmaXJzdF9pbm9kZV9yZWMoYWdubyk7IGlyZWM7Ci0gCSAgICAgaXJlYyA9IG5leHRfaW5vX3JlYyhpcmVjKSkgewotQEAgLTE0Myw3ICsxNDMsNyBAQCBwaGFzZTcoCi0gCWVsc2UKLSAJCWRvX2xvZyhfKCJQaGFzZSA3IC0gdmVyaWZ5IGxpbmsgY291bnRzLi4uXG4iKSk7Ci0gCi0tCXNldF9wcm9ncmVzc19tc2coUFJPR1JFU1NfRk1UX0NPUlJfTElOSywgKF9fdWludDY0X3QpIGdsb2JfYWdjb3VudCk7Ci0rCXNldF9wcm9ncmVzc19tc2coUFJPR1JFU1NfRk1UX0NPUlJfTElOSywgKHVpbnQ2NF90KSBnbG9iX2FnY291bnQpOwotIAotIAljcmVhdGVfd29ya19xdWV1ZSgmd3EsIG1wLCBzY2FuX3RocmVhZHMpOwotIAotZGlmZiAtLWdpdCBhL3JlcGFpci9wcm9ncmVzcy5jIGIvcmVwYWlyL3Byb2dyZXNzLmMKLWluZGV4IDJhMDliMjM5Li45OWQyNjU4YyAxMDA2NDQKLS0tLSBhL3JlcGFpci9wcm9ncmVzcy5jCi0rKysgYi9yZXBhaXIvcHJvZ3Jlc3MuYwotQEAgLTg1LDggKzg1LDggQEAgcHRocmVhZF90CXJlcG9ydF90aHJlYWQ7Ci0gdHlwZWRlZiBzdHJ1Y3QgbXNnX2Jsb2NrX3MgewotIAlwdGhyZWFkX211dGV4X3QJbXV0ZXg7Ci0gCXByb2dyZXNzX3JwdF90CSpmb3JtYXQ7Ci0tCV9fdWludDY0X3QJKmRvbmU7Ci0tCV9fdWludDY0X3QJKnRvdGFsOwotKwl1aW50NjRfdAkqZG9uZTsKLSsJdWludDY0X3QJKnRvdGFsOwotIAlpbnQJCWNvdW50OwotIAlpbnQJCWludGVydmFsOwotIH0gbXNnX2Jsb2NrX3Q7Ci1AQCAtOTYsMTQgKzk2LDE0IEBAIHR5cGVkZWYgc3RydWN0IHBoYXNlX3RpbWVzX3MgewotIAl0aW1lX3QJCXN0YXJ0OwotIAl0aW1lX3QJCWVuZDsKLSAJdGltZV90CQlkdXJhdGlvbjsKLS0JX191aW50NjRfdAlpdGVtX2NvdW50c1s0XTsKLSsJdWludDY0X3QJaXRlbV9jb3VudHNbNF07Ci0gfSBwaGFzZV90aW1lc190OwotIHN0YXRpYyBwaGFzZV90aW1lc190IHBoYXNlX3RpbWVzWzhdOwotIAotIHN0YXRpYyB2b2lkICpwcm9ncmVzc19ycHRfdGhyZWFkKHZvaWQgKik7Ci0gc3RhdGljIGludCBjdXJyZW50X3BoYXNlOwotIHN0YXRpYyBpbnQgcnVubmluZzsKLS1zdGF0aWMgX191aW50NjRfdCBwcm9nX3JwdF90b3RhbDsKLStzdGF0aWMgdWludDY0X3QgcHJvZ19ycHRfdG90YWw7Ci0gCi0gdm9pZAotIGluaXRfcHJvZ3Jlc3NfcnB0ICh2b2lkKQotQEAgLTExMywxMSArMTEzLDExIEBAIGluaXRfcHJvZ3Jlc3NfcnB0ICh2b2lkKQotIAkgKiAgYWxsb2NhdGUgdGhlIGRvbmUgdmVjdG9yCi0gCSAqLwotIAotLQlpZiAoKHByb2dfcnB0X2RvbmUgPSAoX191aW50NjRfdCAqKQotLQkJbWFsbG9jKHNpemVvZihfX3VpbnQ2NF90KSpnbG9iX2FnY291bnQpKSA9PSBOVUxMICkgewotKwlpZiAoKHByb2dfcnB0X2RvbmUgPSAodWludDY0X3QgKikKLSsJCW1hbGxvYyhzaXplb2YodWludDY0X3QpKmdsb2JfYWdjb3VudCkpID09IE5VTEwpIHsKLSAJCWRvX2Vycm9yKF8oImNhbm5vdCBtYWxsb2MgcG9pbnRlciB0byBkb25lIHZlY3RvclxuIikpOwotIAl9Ci0tCWJ6ZXJvKHByb2dfcnB0X2RvbmUsIHNpemVvZihfX3VpbnQ2NF90KSpnbG9iX2FnY291bnQpOwotKwliemVybyhwcm9nX3JwdF9kb25lLCBzaXplb2YodWludDY0X3QpKmdsb2JfYWdjb3VudCk7Ci0gCi0gCS8qCi0gCSAqICBTZXR1cCBjb21tIGJsb2NrLCBzdGFydCB0aGUgdGhyZWFkCi1AQCAtMTY1LDEwICsxNjUsMTAgQEAgcHJvZ3Jlc3NfcnB0X3RocmVhZCAodm9pZCAqcCkKLSAJdGltZXJfdCB0aW1lcmlkOwotIAlzdHJ1Y3QgaXRpbWVyc3BlYyB0aW1lc3BlYzsKLSAJY2hhciAqbXNnYnVmOwotLQlfX3VpbnQ2NF90ICpkb25lcDsKLS0JX191aW50NjRfdCBzdW07Ci0rCXVpbnQ2NF90ICpkb25lcDsKLSsJdWludDY0X3Qgc3VtOwotIAltc2dfYmxvY2tfdCAqbXNncCA9IChtc2dfYmxvY2tfdCAqKXA7Ci0tCV9fdWludDY0X3QgcGVyY2VudDsKLSsJdWludDY0X3QgcGVyY2VudDsKLSAKLSAJLyogSXQncyBwb3NzaWJsZSB0byBnZXQgaGVyZSB2ZXJ5IGVhcmx5IHcvIG5vIHByb2dyZXNzIG1zZyBzZXQgKi8KLSAJaWYgKCFtc2dwLT5mb3JtYXQpCi1AQCAtMjg2LDcgKzI4Niw3IEBAIHByb2dyZXNzX3JwdF90aHJlYWQgKHZvaWQgKnApCi0gfQotIAotIGludAotLXNldF9wcm9ncmVzc19tc2cgKGludCByZXBvcnQsIF9fdWludDY0X3QgdG90YWwpCi0rc2V0X3Byb2dyZXNzX21zZyhpbnQgcmVwb3J0LCB1aW50NjRfdCB0b3RhbCkKLSB7Ci0gCi0gCWlmICghYWdfc3RyaWRlKQotQEAgLTMwMCw3ICszMDAsNyBAQCBzZXRfcHJvZ3Jlc3NfbXNnIChpbnQgcmVwb3J0LCBfX3VpbnQ2NF90IHRvdGFsKQotIAotIAkvKiByZXNldCBhbGwgdGhlIGFjY3VtdWxhdGl2ZSB0b3RhbHMgKi8KLSAJaWYgKHByb2dfcnB0X2RvbmUpCi0tCQliemVybyhwcm9nX3JwdF9kb25lLCBzaXplb2YoX191aW50NjRfdCkqZ2xvYl9hZ2NvdW50KTsKLSsJCWJ6ZXJvKHByb2dfcnB0X2RvbmUsIHNpemVvZih1aW50NjRfdCkqZ2xvYl9hZ2NvdW50KTsKLSAKLSAJaWYgKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnbG9iYWxfbXNncy5tdXRleCkpCi0gCQlkb19lcnJvcihfKCJzZXRfcHJvZ3Jlc3NfbXNnOiBjYW5ub3QgdW5sb2NrIHByb2dyZXNzIG11dGV4XG4iKSk7Ci1AQCAtMzA4LDE0ICszMDgsMTQgQEAgc2V0X3Byb2dyZXNzX21zZyAoaW50IHJlcG9ydCwgX191aW50NjRfdCB0b3RhbCkKLSAJcmV0dXJuICgwKTsKLSB9Ci0gCi0tX191aW50NjRfdAotK3VpbnQ2NF90Ci0gcHJpbnRfZmluYWxfcnB0KHZvaWQpCi0gewotIAlpbnQgaTsKLSAJc3RydWN0IHRtICp0bXA7Ci0gCXRpbWVfdCBub3c7Ci0tCV9fdWludDY0X3QgKmRvbmVwOwotLQlfX3VpbnQ2NF90IHN1bTsKLSsJdWludDY0X3QgKmRvbmVwOwotKwl1aW50NjRfdCBzdW07Ci0gCW1zZ19ibG9ja190IAkqbXNncCA9ICZnbG9iYWxfbXNnczsKLSAJY2hhcgkJbXNnYnVmW0RVUkFUSU9OX0JVRl9TSVpFXTsKLSAKLWRpZmYgLS1naXQgYS9yZXBhaXIvcHJvZ3Jlc3MuaCBiL3JlcGFpci9wcm9ncmVzcy5oCi1pbmRleCAzM2RiODM0NC4uNTE1MjY0ODMgMTAwNjQ0Ci0tLS0gYS9yZXBhaXIvcHJvZ3Jlc3MuaAotKysrIGIvcmVwYWlyL3Byb2dyZXNzLmgKLUBAIC0zMiw4ICszMiw4IEBACi0gZXh0ZXJuIHZvaWQgaW5pdF9wcm9ncmVzc19ycHQodm9pZCk7Ci0gZXh0ZXJuIHZvaWQgc3RvcF9wcm9ncmVzc19ycHQodm9pZCk7Ci0gZXh0ZXJuIHZvaWQgc3VtbWFyeV9yZXBvcnQodm9pZCk7Ci0tZXh0ZXJuIGludCAgc2V0X3Byb2dyZXNzX21zZyhpbnQgcmVwb3J0LCBfX3VpbnQ2NF90IHRvdGFsKTsKLS1leHRlcm4gX191aW50NjRfdCBwcmludF9maW5hbF9ycHQodm9pZCk7Ci0rZXh0ZXJuIGludCAgc2V0X3Byb2dyZXNzX21zZyhpbnQgcmVwb3J0LCB1aW50NjRfdCB0b3RhbCk7Ci0rZXh0ZXJuIHVpbnQ2NF90IHByaW50X2ZpbmFsX3JwdCh2b2lkKTsKLSBleHRlcm4gY2hhciAqdGltZXN0YW1wKGludCBlbmQsIGludCBwaGFzZSwgY2hhciAqYnVmKTsKLSBleHRlcm4gY2hhciAqZHVyYXRpb24oaW50IHZhbCwgY2hhciAqYnVmKTsKLSBleHRlcm4gaW50IGRvX3BhcmFsbGVsOwotZGlmZiAtLWdpdCBhL3JlcGFpci9ybWFwLmMgYi9yZXBhaXIvcm1hcC5jCi1pbmRleCBhYjZlNTgzOS4uMDFkNmYwZmMgMTAwNjQ0Ci0tLS0gYS9yZXBhaXIvcm1hcC5jCi0rKysgYi9yZXBhaXIvcm1hcC5jCi1AQCAtMzQzLDcgKzM0Myw3IEBAIGVycjoKLSAKLSBzdGF0aWMgaW50Ci0gZmluZF9maXJzdF96ZXJvX2JpdCgKLS0JX191aW50NjRfdAltYXNrKQotKwl1aW50NjRfdAltYXNrKQotIHsKLSAJaW50CQluOwotIAlpbnQJCWIgPSAwOwotQEAgLTM1Niw3ICszNTYsNyBAQCBmaW5kX2ZpcnN0X3plcm9fYml0KAotIAotIHN0YXRpYyBpbnQKLSBwb3BjbnQoCi0tCV9fdWludDY0X3QJbWFzaykKLSsJdWludDY0X3QJbWFzaykKLSB7Ci0gCWludAkJbjsKLSAJaW50CQliID0gMDsKLUBAIC0xMDY0LDE0ICsxMDY0LDE0IEBAIGVycjoKLSAgKiBDb21wYXJlIHRoZSBrZXkgZmllbGRzIG9mIHR3byBybWFwIHJlY29yZHMgLS0gcG9zaXRpdmUgaWYga2V5MSA+IGtleTIsCi0gICogbmVnYXRpdmUgaWYga2V5MSA8IGtleTIsIGFuZCB6ZXJvIGlmIGVxdWFsLgotICAqLwotLV9faW50NjRfdAotK2ludDY0X3QKLSBybWFwX2RpZmZrZXlzKAotIAlzdHJ1Y3QgeGZzX3JtYXBfaXJlYwkqa3AxLAotIAlzdHJ1Y3QgeGZzX3JtYXBfaXJlYwkqa3AyKQotIHsKLSAJX191NjQJCQlvYTsKLSAJX191NjQJCQlvYjsKLS0JX19pbnQ2NF90CQlkOwotKwlpbnQ2NF90CQkJZDsKLSAJc3RydWN0IHhmc19ybWFwX2lyZWMJdG1wOwotIAotIAl0bXAgPSAqa3AxOwotQEAgLTEwODEsNyArMTA4MSw3IEBAIHJtYXBfZGlmZmtleXMoCi0gCXRtcC5ybV9mbGFncyAmPSB+WEZTX1JNQVBfUkVDX0ZMQUdTOwotIAlvYiA9IGxpYnhmc19ybWFwX2lyZWNfb2Zmc2V0X3BhY2soJnRtcCk7Ci0gCi0tCWQgPSAoX19pbnQ2NF90KWtwMS0+cm1fc3RhcnRibG9jayAtIGtwMi0+cm1fc3RhcnRibG9jazsKLSsJZCA9IChpbnQ2NF90KWtwMS0+cm1fc3RhcnRibG9jayAtIGtwMi0+cm1fc3RhcnRibG9jazsKLSAJaWYgKGQpCi0gCQlyZXR1cm4gZDsKLSAKLUBAIC0xMTkyLDEwICsxMTkyLDEwIEBAIGZpeF9pbm9kZV9yZWZsaW5rX2ZsYWdzKAotIHsKLSAJc3RydWN0IGlub190cmVlX25vZGUJKmlyZWM7Ci0gCWludAkJCWJpdDsKLS0JX191aW50NjRfdAkJd2FzOwotLQlfX3VpbnQ2NF90CQlpczsKLS0JX191aW50NjRfdAkJZGlmZjsKLS0JX191aW50NjRfdAkJbWFzazsKLSsJdWludDY0X3QJCXdhczsKLSsJdWludDY0X3QJCWlzOwotKwl1aW50NjRfdAkJZGlmZjsKLSsJdWludDY0X3QJCW1hc2s7Ci0gCWludAkJCWVycm9yID0gMDsKLSAJeGZzX2FnaW5vX3QJCWFnaW5vOwotIAotZGlmZiAtLWdpdCBhL3JlcGFpci9ybWFwLmggYi9yZXBhaXIvcm1hcC5oCi1pbmRleCA3NTJlY2U4Mi4uMTYxNmFiN2QgMTAwNjQ0Ci0tLS0gYS9yZXBhaXIvcm1hcC5oCi0rKysgYi9yZXBhaXIvcm1hcC5oCi1AQCAtNDQsNyArNDQsNyBAQCBleHRlcm4gaW50IHJtYXBfaW5pdF9jdXJzb3IoeGZzX2FnbnVtYmVyX3QsIHN0cnVjdCB4ZnNfc2xhYl9jdXJzb3IgKiopOwotIGV4dGVybiB2b2lkIHJtYXBfYXZvaWRfY2hlY2sodm9pZCk7Ci0gZXh0ZXJuIGludCBybWFwc192ZXJpZnlfYnRyZWUoc3RydWN0IHhmc19tb3VudCAqLCB4ZnNfYWdudW1iZXJfdCk7Ci0gCi0tZXh0ZXJuIF9faW50NjRfdCBybWFwX2RpZmZrZXlzKHN0cnVjdCB4ZnNfcm1hcF9pcmVjICprcDEsCi0rZXh0ZXJuIGludDY0X3Qgcm1hcF9kaWZma2V5cyhzdHJ1Y3QgeGZzX3JtYXBfaXJlYyAqa3AxLAotIAkJc3RydWN0IHhmc19ybWFwX2lyZWMgKmtwMik7Ci0gZXh0ZXJuIHZvaWQgcm1hcF9oaWdoX2tleV9mcm9tX3JlYyhzdHJ1Y3QgeGZzX3JtYXBfaXJlYyAqcmVjLAotIAkJc3RydWN0IHhmc19ybWFwX2lyZWMgKmtleSk7Ci1kaWZmIC0tZ2l0IGEvcmVwYWlyL3NiLmMgYi9yZXBhaXIvc2IuYwotaW5kZXggNzdlNTE1NDYuLmFjYzkyODM5IDEwMDY0NAotLS0tIGEvcmVwYWlyL3NiLmMKLSsrKyBiL3JlcGFpci9zYi5jCi1AQCAtNDAsNyArNDAsNyBAQCBjb3B5X3NiKHhmc19zYl90ICpzb3VyY2UsIHhmc19zYl90ICpkZXN0KQotIAl4ZnNfaW5vX3QJdXF1b3Rpbm87Ci0gCXhmc19pbm9fdAlncXVvdGlubzsKLSAJeGZzX2lub190CXBxdW90aW5vOwotLQlfX3VpbnQxNl90CXZlcnNpb25udW07Ci0rCXVpbnQxNl90CXZlcnNpb25udW07Ci0gCi0gCXJvb3Rpbm8gPSBkZXN0LT5zYl9yb290aW5vOwotIAlyYm1pbm8gPSBkZXN0LT5zYl9yYm1pbm87Ci1AQCAtMTA2LDggKzEwNiw4IEBAIHZlcmlmeV9zYl9ibG9ja3NpemUoeGZzX3NiX3QgKnNiKQotIHN0YXRpYyBpbnQKLSBfX2ZpbmRfc2Vjb25kYXJ5X3NiKAotIAl4ZnNfc2JfdAkqcnNiLAotLQlfX3VpbnQ2NF90CXN0YXJ0LAotLQlfX3VpbnQ2NF90CXNraXApCi0rCXVpbnQ2NF90CXN0YXJ0LAotKwl1aW50NjRfdAlza2lwKQotIHsKLSAJeGZzX29mZl90CW9mZjsKLSAJeGZzX3NiX3QJKnNiOwotQEAgLTE4NywxMyArMTg3LDEzIEBAIF9fZmluZF9zZWNvbmRhcnlfc2IoCi0gCi0gc3RhdGljIGludAotIGd1ZXNzX2RlZmF1bHRfZ2VvbWV0cnkoCi0tCV9fdWludDY0X3QJCSphZ3NpemUsCi0tCV9fdWludDY0X3QJCSphZ2NvdW50LAotKwl1aW50NjRfdAkJKmFnc2l6ZSwKLSsJdWludDY0X3QJCSphZ2NvdW50LAotIAlsaWJ4ZnNfaW5pdF90CQkqeCkKLSB7Ci0gCXN0cnVjdCBmc190b3BvbG9neQlmdDsKLSAJaW50CQkJYmxvY2tsb2c7Ci0tCV9fdWludDY0X3QJCWRibG9ja3M7Ci0rCXVpbnQ2NF90CQlkYmxvY2tzOwotIAlpbnQJCQltdWx0aWRpc2s7Ci0gCi0gCW1lbXNldCgmZnQsIDAsIHNpemVvZihmdCkpOwotQEAgLTIxNiw5ICsyMTYsOSBAQCBpbnQKLSBmaW5kX3NlY29uZGFyeV9zYih4ZnNfc2JfdCAqcnNiKQotIHsKLSAJaW50CQlyZXR2YWwgPSAwOwotLQlfX3VpbnQ2NF90CWFnY291bnQ7Ci0tCV9fdWludDY0X3QJYWdzaXplOwotLQlfX3VpbnQ2NF90CXNraXA7Ci0rCXVpbnQ2NF90CWFnY291bnQ7Ci0rCXVpbnQ2NF90CWFnc2l6ZTsKLSsJdWludDY0X3QJc2tpcDsKLSAJaW50CQlibG9ja2xvZzsKLSAKLSAJLyoKLUBAIC0yMjksNyArMjI5LDcgQEAgZmluZF9zZWNvbmRhcnlfc2IoeGZzX3NiX3QgKnJzYikKLSAJZG9fd2FybihfKCJcbmF0dGVtcHRpbmcgdG8gZmluZCBzZWNvbmRhcnkgc3VwZXJibG9jay4uLlxuIikpOwotIAotIAlpZiAodmVyaWZ5X3NiX2Jsb2Nrc2l6ZShyc2IpID09IDApIHsKLS0JCXNraXAgPSAoX191aW50NjRfdClyc2ItPnNiX2FnYmxvY2tzICogcnNiLT5zYl9ibG9ja3NpemU7Ci0rCQlza2lwID0gKHVpbnQ2NF90KXJzYi0+c2JfYWdibG9ja3MgKiByc2ItPnNiX2Jsb2Nrc2l6ZTsKLSAJCWlmIChza2lwID49IFhGU19BR19NSU5fQllURVMgJiYgc2tpcCA8PSBYRlNfQUdfTUFYX0JZVEVTKQotIAkJCXJldHZhbCA9IF9fZmluZF9zZWNvbmRhcnlfc2IocnNiLCBza2lwLCBza2lwKTsKLSAJfQotQEAgLTM0Myw3ICszNDMsNyBAQCBzYl92YWxpZGF0ZV9pbm9fYWxpZ24oc3RydWN0IHhmc19zYiAqc2IpCi0gaW50Ci0gdmVyaWZ5X3NiKGNoYXIgKnNiX2J1ZiwgeGZzX3NiX3QgKnNiLCBpbnQgaXNfcHJpbWFyeV9zYikKLSB7Ci0tCV9fdWludDMyX3QJYnNpemU7Ci0rCXVpbnQzMl90CWJzaXplOwotIAlpbnQJCWk7Ci0gCWludAkJcmV0OwotIAotQEAgLTM5OSw3ICszOTksNyBAQCB2ZXJpZnlfc2IoY2hhciAqc2JfYnVmLCB4ZnNfc2JfdCAqc2IsIGludCBpc19wcmltYXJ5X3NiKQotIAkJc2ItPnNiX2RibG9ja3MgPCBYRlNfTUlOX0RCTE9DS1Moc2IpKQotIAkJcmV0dXJuKFhSX0JBRF9GU19TSVpFX0RBVEEpOwotIAotLQlpZiAoc2ItPnNiX2FnYmxrbG9nICE9IChfX3VpbnQ4X3QpbGlieGZzX2xvZzJfcm91bmR1cChzYi0+c2JfYWdibG9ja3MpKQotKwlpZiAoc2ItPnNiX2FnYmxrbG9nICE9ICh1aW50OF90KWxpYnhmc19sb2cyX3JvdW5kdXAoc2ItPnNiX2FnYmxvY2tzKSkKLSAJCXJldHVybihYUl9CQURfRlNfU0laRV9EQVRBKTsKLSAKLSAJaWYgKHNiLT5zYl9pbm9kZXNpemUgPCBYRlNfRElOT0RFX01JTl9TSVpFICAgICAgICAgICAgICAgICAgICAgfHwKLWRpZmYgLS1naXQgYS9yZXBhaXIvc2Nhbi5jIGIvcmVwYWlyL3NjYW4uYwotaW5kZXggYjllZjRkYzMuLjQ0NzYxMWFjIDEwMDY0NAotLS0tIGEvcmVwYWlyL3NjYW4uYwotKysrIGIvcmVwYWlyL3NjYW4uYwotQEAgLTQyLDEzICs0MiwxMyBAQCBzdHJ1Y3QgYWdoZHJfY250cyB7Ci0gCXhmc19hZ251bWJlcl90CWFnbm87Ci0gCXhmc19leHRsZW5fdAlhZ2ZmcmVlYmxrczsKLSAJeGZzX2V4dGxlbl90CWFnZmxvbmdlc3Q7Ci0tCV9fdWludDY0X3QJYWdmYnRyZWVibGtzOwotLQlfX3VpbnQzMl90CWFnaWNvdW50OwotLQlfX3VpbnQzMl90CWFnaWZyZWVjb3VudDsKLS0JX191aW50NjRfdAlmZGJsb2NrczsKLS0JX191aW50NjRfdAl1c2VkYmxvY2tzOwotLQlfX3VpbnQ2NF90CWlmcmVlY291bnQ7Ci0tCV9fdWludDMyX3QJZmlidGZyZWVjb3VudDsKLSsJdWludDY0X3QJYWdmYnRyZWVibGtzOwotKwl1aW50MzJfdAlhZ2ljb3VudDsKLSsJdWludDMyX3QJYWdpZnJlZWNvdW50OwotKwl1aW50NjRfdAlmZGJsb2NrczsKLSsJdWludDY0X3QJdXNlZGJsb2NrczsKLSsJdWludDY0X3QJaWZyZWVjb3VudDsKLSsJdWludDMyX3QJZmlidGZyZWVjb3VudDsKLSB9OwotIAotIHZvaWQKLUBAIC03MCwxMCArNzAsMTAgQEAgc2Nhbl9zYnRyZWUoCi0gCQkJCXhmc19hZ251bWJlcl90CQlhZ25vLAotIAkJCQlpbnQJCQlzdXNwZWN0LAotIAkJCQlpbnQJCQlpc3Jvb3QsCi0tCQkJCV9fdWludDMyX3QJCW1hZ2ljLAotKwkJCQl1aW50MzJfdAkJbWFnaWMsCi0gCQkJCXZvaWQJCQkqcHJpdiksCi0gCWludAkJaXNyb290LAotLQlfX3VpbnQzMl90CW1hZ2ljLAotKwl1aW50MzJfdAltYWdpYywKLSAJdm9pZAkJKnByaXYsCi0gCWNvbnN0IHN0cnVjdCB4ZnNfYnVmX29wcyAqb3BzKQotIHsKLUBAIC0xMTAsMjMgKzExMCwyMyBAQCBzY2FuX2xidHJlZSgKLSAJCQkJeGZzX2ZzYmxvY2tfdAkJYm5vLAotIAkJCQl4ZnNfaW5vX3QJCWlubywKLSAJCQkJeGZzX3Jmc2Jsb2NrX3QJCSp0b3QsCi0tCQkJCV9fdWludDY0X3QJCSpuZXgsCi0rCQkJCXVpbnQ2NF90CQkqbmV4LAotIAkJCQlibGttYXBfdAkJKipibGttYXBwLAotIAkJCQlibWFwX2N1cnNvcl90CQkqYm1fY3Vyc29yLAotIAkJCQlpbnQJCQlpc3Jvb3QsCi0gCQkJCWludAkJCWNoZWNrX2R1cHMsCi0gCQkJCWludAkJCSpkaXJ0eSwKLS0JCQkJX191aW50NjRfdAkJbWFnaWMpLAotKwkJCQl1aW50NjRfdAkJbWFnaWMpLAotIAlpbnQJCXR5cGUsCi0gCWludAkJd2hpY2hmb3JrLAotIAl4ZnNfaW5vX3QJaW5vLAotIAl4ZnNfcmZzYmxvY2tfdAkqdG90LAotLQlfX3VpbnQ2NF90CSpuZXgsCi0rCXVpbnQ2NF90CSpuZXgsCi0gCWJsa21hcF90CSoqYmxrbWFwcCwKLSAJYm1hcF9jdXJzb3JfdAkqYm1fY3Vyc29yLAotIAlpbnQJCWlzcm9vdCwKLSAJaW50CQljaGVja19kdXBzLAotLQlfX3VpbnQ2NF90CW1hZ2ljLAotKwl1aW50NjRfdAltYWdpYywKLSAJY29uc3Qgc3RydWN0IHhmc19idWZfb3BzICpvcHMpCi0gewotIAl4ZnNfYnVmX3QJKmJwOwotQEAgLTE3OSwxMyArMTc5LDEzIEBAIHNjYW5fYm1hcGJ0KAotIAl4ZnNfZnNibG9ja190CQlibm8sCi0gCXhmc19pbm9fdAkJaW5vLAotIAl4ZnNfcmZzYmxvY2tfdAkJKnRvdCwKLS0JX191aW50NjRfdAkJKm5leCwKLSsJdWludDY0X3QJCSpuZXgsCi0gCWJsa21hcF90CQkqKmJsa21hcHAsCi0gCWJtYXBfY3Vyc29yX3QJCSpibV9jdXJzb3IsCi0gCWludAkJCWlzcm9vdCwKLSAJaW50CQkJY2hlY2tfZHVwcywKLSAJaW50CQkJKmRpcnR5LAotLQlfX3VpbnQ2NF90CQltYWdpYykKLSsJdWludDY0X3QJCW1hZ2ljKQotIHsKLSAJaW50CQkJaTsKLSAJaW50CQkJZXJyOwotQEAgLTU0OCw3ICs1NDgsNyBAQCBzY2FuX2FsbG9jYnQoCi0gCXhmc19hZ251bWJlcl90CQlhZ25vLAotIAlpbnQJCQlzdXNwZWN0LAotIAlpbnQJCQlpc3Jvb3QsCi0tCV9fdWludDMyX3QJCW1hZ2ljLAotKwl1aW50MzJfdAkJbWFnaWMsCi0gCXZvaWQJCQkqcHJpdikKLSB7Ci0gCXN0cnVjdCBhZ2hkcl9jbnRzCSphZ2NudHMgPSBwcml2OwotQEAgLTkzMCw3ICs5MzAsNyBAQCBzY2FuX3JtYXBidCgKLSAJeGZzX2FnbnVtYmVyX3QJCWFnbm8sCi0gCWludAkJCXN1c3BlY3QsCi0gCWludAkJCWlzcm9vdCwKLS0JX191aW50MzJfdAkJbWFnaWMsCi0rCXVpbnQzMl90CQltYWdpYywKLSAJdm9pZAkJCSpwcml2KQotIHsKLSAJY29uc3QgY2hhcgkJKm5hbWUgPSAicm1hcCI7Ci1AQCAtMTIzMyw3ICsxMjMzLDcgQEAgc2Nhbl9yZWZjYnQoCi0gCXhmc19hZ251bWJlcl90CQlhZ25vLAotIAlpbnQJCQlzdXNwZWN0LAotIAlpbnQJCQlpc3Jvb3QsCi0tCV9fdWludDMyX3QJCW1hZ2ljLAotKwl1aW50MzJfdAkJbWFnaWMsCi0gCXZvaWQJCQkqcHJpdikKLSB7Ci0gCWNvbnN0IGNoYXIJCSpuYW1lID0gInJlZmNvdW50IjsKLUBAIC0xOTM5LDcgKzE5MzksNyBAQCBzY2FuX2lub2J0KAotIAl4ZnNfYWdudW1iZXJfdAkJYWdubywKLSAJaW50CQkJc3VzcGVjdCwKLSAJaW50CQkJaXNyb290LAotLQlfX3VpbnQzMl90CQltYWdpYywKLSsJdWludDMyX3QJCW1hZ2ljLAotIAl2b2lkCQkJKnByaXYpCi0gewotIAlzdHJ1Y3QgYWdoZHJfY250cwkqYWdjbnRzID0gcHJpdjsKLUBAIC0yMTc2LDcgKzIxNzYsNyBAQCB2YWxpZGF0ZV9hZ2YoCi0gCXN0cnVjdCBhZ2hkcl9jbnRzCSphZ2NudHMpCi0gewotIAl4ZnNfYWdibG9ja190CQlibm87Ci0tCV9fdWludDMyX3QJCW1hZ2ljOwotKwl1aW50MzJfdAkJbWFnaWM7Ci0gCi0gCWJubyA9IGJlMzJfdG9fY3B1KGFnZi0+YWdmX3Jvb3RzW1hGU19CVE5VTV9CTk9dKTsKLSAJaWYgKGJubyAhPSAwICYmIHZlcmlmeV9hZ2JubyhtcCwgYWdubywgYm5vKSkgewotQEAgLTIyNzQsNyArMjI3NCw3IEBAIHZhbGlkYXRlX2FnaSgKLSB7Ci0gCXhmc19hZ2Jsb2NrX3QJCWJubzsKLSAJaW50CQkJaTsKLS0JX191aW50MzJfdAkJbWFnaWM7Ci0rCXVpbnQzMl90CQltYWdpYzsKLSAKLSAJYm5vID0gYmUzMl90b19jcHUoYWdpLT5hZ2lfcm9vdCk7Ci0gCWlmIChibm8gIT0gMCAmJiB2ZXJpZnlfYWdibm8obXAsIGFnbm8sIGJubykpIHsKLUBAIC0yNDk5LDEwICsyNDk5LDEwIEBAIHNjYW5fYWdzKAotIAlpbnQJCQlzY2FuX3RocmVhZHMpCi0gewotIAlzdHJ1Y3QgYWdoZHJfY250cyAqYWdjbnRzOwotLQlfX3VpbnQ2NF90CWZkYmxvY2tzID0gMDsKLS0JX191aW50NjRfdAlpY291bnQgPSAwOwotLQlfX3VpbnQ2NF90CWlmcmVlY291bnQgPSAwOwotLQlfX3VpbnQ2NF90CXVzZWRibG9ja3MgPSAwOwotKwl1aW50NjRfdAlmZGJsb2NrcyA9IDA7Ci0rCXVpbnQ2NF90CWljb3VudCA9IDA7Ci0rCXVpbnQ2NF90CWlmcmVlY291bnQgPSAwOwotKwl1aW50NjRfdAl1c2VkYmxvY2tzID0gMDsKLSAJeGZzX2FnbnVtYmVyX3QJaTsKLSAJd29ya19xdWV1ZV90CXdxOwotIAotZGlmZiAtLWdpdCBhL3JlcGFpci9zY2FuLmggYi9yZXBhaXIvc2Nhbi5oCi1pbmRleCBlYThjMGJmMi4uOWJiZTFlNjkgMTAwNjQ0Ci0tLS0gYS9yZXBhaXIvc2Nhbi5oCi0rKysgYi9yZXBhaXIvc2Nhbi5oCi1AQCAtMzAsMjMgKzMwLDIzIEBAIGludCBzY2FuX2xidHJlZSgKLSAJCQkJeGZzX2ZzYmxvY2tfdAkJYm5vLAotIAkJCQl4ZnNfaW5vX3QJCWlubywKLSAJCQkJeGZzX3Jmc2Jsb2NrX3QJCSp0b3QsCi0tCQkJCV9fdWludDY0X3QJCSpuZXgsCi0rCQkJCXVpbnQ2NF90CQkqbmV4LAotIAkJCQlzdHJ1Y3QgYmxrbWFwCQkqKmJsa21hcHAsCi0gCQkJCWJtYXBfY3Vyc29yX3QJCSpibV9jdXJzb3IsCi0gCQkJCWludAkJCWlzcm9vdCwKLSAJCQkJaW50CQkJY2hlY2tfZHVwcywKLSAJCQkJaW50CQkJKmRpcnR5LAotLQkJCQlfX3VpbnQ2NF90CQltYWdpYyksCi0rCQkJCXVpbnQ2NF90CQltYWdpYyksCi0gCWludAkJdHlwZSwKLSAJaW50CQl3aGljaGZvcmssCi0gCXhmc19pbm9fdAlpbm8sCi0gCXhmc19yZnNibG9ja190CSp0b3QsCi0tCV9fdWludDY0X3QJKm5leCwKLSsJdWludDY0X3QJKm5leCwKLSAJc3RydWN0IGJsa21hcAkqKmJsa21hcHAsCi0gCWJtYXBfY3Vyc29yX3QJKmJtX2N1cnNvciwKLSAJaW50CQlpc3Jvb3QsCi0gCWludAkJY2hlY2tfZHVwcywKLS0JX191aW50NjRfdAltYWdpYywKLSsJdWludDY0X3QJbWFnaWMsCi0gCWNvbnN0IHN0cnVjdCB4ZnNfYnVmX29wcyAqb3BzKTsKLSAKLSBpbnQgc2Nhbl9ibWFwYnQoCi1AQCAtNTcsMTMgKzU3LDEzIEBAIGludCBzY2FuX2JtYXBidCgKLSAJeGZzX2ZzYmxvY2tfdAkJYm5vLAotIAl4ZnNfaW5vX3QJCWlubywKLSAJeGZzX3Jmc2Jsb2NrX3QJCSp0b3QsCi0tCV9fdWludDY0X3QJCSpuZXgsCi0rCXVpbnQ2NF90CQkqbmV4LAotIAlzdHJ1Y3QgYmxrbWFwCQkqKmJsa21hcHAsCi0gCWJtYXBfY3Vyc29yX3QJCSpibV9jdXJzb3IsCi0gCWludAkJCWlzcm9vdCwKLSAJaW50CQkJY2hlY2tfZHVwcywKLSAJaW50CQkJKmRpcnR5LAotLQlfX3VpbnQ2NF90CQltYWdpYyk7Ci0rCXVpbnQ2NF90CQltYWdpYyk7Ci0gCi0gdm9pZAotIHNjYW5fYWdzKAotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvcmVtb3ZlX2ZsYWdzX2Zyb21fYnVpbGRfZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy9yZW1vdmVfZmxhZ3NfZnJvbV9idWlsZF9mbGFncy5wYXRjaAppbmRleCBiYmE5YTI1Li5iZDJkMDI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy9yZW1vdmVfZmxhZ3NfZnJvbV9idWlsZF9mbGFncy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy9yZW1vdmVfZmxhZ3NfZnJvbV9idWlsZF9mbGFncy5wYXRjaApAQCAtMSwxMyArMSwxMyBAQAotSW5kZXg6IHhmc3Byb2dzLTQuMTIuMC9pbmNsdWRlL2J1aWxkZGVmcy5pbgorSW5kZXg6IHhmc3Byb2dzLTQuMTQuMC9pbmNsdWRlL2J1aWxkZGVmcy5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHhmc3Byb2dzLTQuMTIuMC5vcmlnL2luY2x1ZGUvYnVpbGRkZWZzLmluCi0rKysgeGZzcHJvZ3MtNC4xMi4wL2luY2x1ZGUvYnVpbGRkZWZzLmluCi1AQCAtMTY0LDcgKzE2NCw3IEBAIGlmZXEgKCQoRU5BQkxFX0dFVFRFWFQpLHllcykKKy0tLSB4ZnNwcm9ncy00LjE0LjAub3JpZy9pbmNsdWRlL2J1aWxkZGVmcy5pbgorKysrIHhmc3Byb2dzLTQuMTQuMC9pbmNsdWRlL2J1aWxkZGVmcy5pbgorQEAgLTE2OCw3ICsxNjgsNyBAQCBpZmVxICgkKEVOQUJMRV9HRVRURVhUKSx5ZXMpCiAgR0NGTEFHUyArPSAtREVOQUJMRV9HRVRURVhUCiAgZW5kaWYKICAKIC1CVUlMRF9DRkxBR1MgKz0gJChHQ0ZMQUdTKSAkKFBDRkxBR1MpCiArQlVJTERfQ0ZMQUdTICs9ICQoR0NGTEFHUykKLSAjIEZpcnN0LCBHbG9iYWwsIFBsYXRmb3JtLCBMb2NhbCBDRkxBR1MKLSBDRkxBR1MgKz0gJChGQ0ZMQUdTKSAkKE9QVElNSVpFUikgJChHQ0ZMQUdTKSAkKFBDRkxBR1MpICQoTENGTEFHUykKKyAjIEZpcnN0LCBTYW5pdGl6ZXIsIEdsb2JhbCwgUGxhdGZvcm0sIExvY2FsIENGTEFHUworIENGTEFHUyArPSAkKEZDRkxBR1MpICQoU0FOSVRJWkVSX0NGTEFHUykgJChPUFRJTUlaRVIpICQoR0NGTEFHUykgJChQQ0ZMQUdTKSAkKExDRkxBR1MpCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy94ZnNwcm9ncy00LjEyLjAtZml4X211c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy94ZnNwcm9ncy00LjEyLjAtZml4X211c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmYzU3ZTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMveGZzcHJvZ3MtNC4xMi4wLWZpeF9tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLUZyb20gMjEyNTM2MTBmOWVmODdkYjhlMmE3NWI4NjNiN2ZjZmJkMGNkYjQyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJEYXJyaWNrIEouIFdvbmciIDxkYXJyaWNrLndvbmdAb3JhY2xlLmNvbT4KLURhdGU6IFR1ZSwgMjUgSnVsIDIwMTcgMTM6NDU6MDEgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gSW4gcGF0Y2ggNDk0NGRlZmFkNCAoInhmc19kYjogcmVkaXJlY3QgcHJpbnRmcyB3aGVuCi0gbWV0YWR1bXBpbmcgdG8gc3Rkb3V0IiksIHdlIHNvbHZlZCB0aGUgcHJvYmxlbSBvZiB4ZnNfZGIgcHJpbnRmcyBlbmRpbmcgdXAgaW4KLSB0aGUgbWV0YWR1bXAgc3RyZWFtIGJ5IHJlYXNzaWduaW5nIHN0ZG91dCBmb3IgdGhlIGR1cmF0aW9uIG9mIGEgc3Rkb3V0Ci0gbWV0YWR1bXAuICBVbmZvcnR1bmF0ZWx5LCBtdXNsIGRvZXNuJ3QgYWxsb3cgc3Rkb3V0IHRvIGJlIHJlYXNzaWduZWQgKGluCi0gdGhlaXIgdmlldyAiZXh0ZXJuIEZJTEUgKnN0ZG91dCIgbWVhbnMgImV4dGVybiBGSUxFICogY29uc3Qgc3Rkb3V0IiksIHNvIHdlCi0gYWJhbmRvbiB0aGUgb2xkIGFwcHJvYWNoIGluIGZhdm9yIG9mIHBsYXlpbmcgZ2FtZXMgd2l0aCBkdXAoKSB0byBzd2l0Y2ggdGhlCi0gcmF3IGZpbGUgZGVzY3JpcHRvcnMuCi0KLVdoaWxlIHdlJ3JlIGF0IGl0LCBmaXggYSByZWdyZXNzaW9uIHdoZXJlIGFuIHVuY29udmVydGVkIG91dGYgdGVzdAotYWxsb3dzIHByb2dyZXNzIGluZm8gdG8gZW5kIHVwIGluIHRoZSBtZXRhZHVtcCBzdHJlYW0uCi0KLVNpZ25lZC1vZmYtYnk6IERhcnJpY2sgSi4gV29uZyA8ZGFycmljay53b25nQG9yYWNsZS5jb20+Ci0tLS0KLSBkYi9tZXRhZHVtcC5jIHwgNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9kYi9tZXRhZHVtcC5jIGIvZGIvbWV0YWR1bXAuYwotaW5kZXggOTY2NDFlMC4uNGUyZjY0OCAxMDA2NDQKLS0tLSBhL2RiL21ldGFkdW1wLmMKLSsrKyBiL2RiL21ldGFkdW1wLmMKLUBAIC03OCw2ICs3OCw3IEBAIHN0YXRpYyBpbnQJCW9iZnVzY2F0ZSA9IDE7Ci0gc3RhdGljIGludAkJemVyb19zdGFsZV9kYXRhID0gMTsKLSBzdGF0aWMgaW50CQlzaG93X3dhcm5pbmdzID0gMDsKLSBzdGF0aWMgaW50CQlwcm9ncmVzc19zaW5jZV93YXJuaW5nID0gMDsKLStzdGF0aWMgYm9vbAkJc3Rkb3V0X21ldGFkdW1wOwotIAotIHZvaWQKLSBtZXRhZHVtcF9pbml0KHZvaWQpCi1AQCAtMTM3LDcgKzEzOCw3IEBAIHByaW50X3Byb2dyZXNzKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotIAl2YV9lbmQoYXApOwotIAlidWZbc2l6ZW9mKGJ1ZiktMV0gPSAnXDAnOwotIAotLQlmID0gKG91dGYgPT0gc3Rkb3V0KSA/IHN0ZGVyciA6IHN0ZG91dDsKLSsJZiA9IHN0ZG91dF9tZXRhZHVtcCA/IHN0ZGVyciA6IHN0ZG91dDsKLSAJZnByaW50ZihmLCAiXHIlLTU5cyIsIGJ1Zik7Ci0gCWZmbHVzaChmKTsKLSAJcHJvZ3Jlc3Nfc2luY2Vfd2FybmluZyA9IDE7Ci1AQCAtMjc1MCw3ICsyNzUxLDggQEAgbWV0YWR1bXBfZigKLSAJeGZzX2FnbnVtYmVyX3QJYWdubzsKLSAJaW50CQljOwotIAlpbnQJCXN0YXJ0X2lvY3VyX3NwOwotLQlib29sCQlzdGRvdXRfbWV0YWR1bXAgPSBmYWxzZTsKLSsJaW50CQlvdXRmZCA9IC0xOwotKwlpbnQJCXJldDsKLSAJY2hhcgkJKnA7Ci0gCi0gCWV4aXRjb2RlID0gMTsKLUBAIC0yODcwLDE2ICsyODcyLDM1IEBAIG1ldGFkdW1wX2YoCi0gCQkgKiBtZXRhZHVtcCBvcGVyYXRpb24gc28gdGhhdCBkYnByaW50ZiBhbmQgb3RoZXIgbWVzc2FnZXMKLSAJCSAqIGFyZSBzZW50IHRvIHRoZSBjb25zb2xlIGluc3RlYWQgb2YgcG9sbHV0aW5nIHRoZQotIAkJICogbWV0YWR1bXAgc3RyZWFtLgotKwkJICoKLSsJCSAqIFdlIGdldCB0byBkbyB0aGlzIHRoZSBoYXJkIHdheSBiZWNhdXNlIG11c2wgZG9lc24ndAotKwkJICogYWxsb3cgcmVhc3NpZ25tZW50IG9mIHN0ZG91dC4KLSAJCSAqLwotLQkJb3V0ZiA9IHN0ZG91dDsKLS0JCXN0ZG91dCA9IHN0ZGVycjsKLSsJCWZmbHVzaChzdGRvdXQpOwotKwkJb3V0ZmQgPSBkdXAoU1RET1VUX0ZJTEVOTyk7Ci0rCQlpZiAob3V0ZmQgPCAwKSB7Ci0rCQkJcGVycm9yKCJvcGVuaW5nIGR1bXAgc3RyZWFtIik7Ci0rCQkJZ290byBvdXQ7Ci0rCQl9Ci0rCQlyZXQgPSBkdXAyKFNUREVSUl9GSUxFTk8sIFNURE9VVF9GSUxFTk8pOwotKwkJaWYgKHJldCA8IDApIHsKLSsJCQlwZXJyb3IoInJlZGlyZWN0aW5nIHN0ZG91dCIpOwotKwkJCWNsb3NlKG91dGZkKTsKLSsJCQlnb3RvIG91dDsKLSsJCX0KLSsJCW91dGYgPSBmZG9wZW4ob3V0ZmQsICJhIik7Ci0rCQlpZiAob3V0ZiA9PSBOVUxMKSB7Ci0rCQkJZnByaW50ZihzdGRlcnIsICJjYW5ub3QgY3JlYXRlIGR1bXAgc3RyZWFtXG4iKTsKLSsJCQlkdXAyKG91dGZkLCAxKTsKLSsJCQljbG9zZShvdXRmZCk7Ci0rCQkJZ290byBvdXQ7Ci0rCQl9Ci0gCQlzdGRvdXRfbWV0YWR1bXAgPSB0cnVlOwotIAl9IGVsc2UgewotIAkJb3V0ZiA9IGZvcGVuKGFyZ3Zbb3B0aW5kXSwgIndiIik7Ci0gCQlpZiAob3V0ZiA9PSBOVUxMKSB7Ci0gCQkJcHJpbnRfd2FybmluZygiY2Fubm90IGNyZWF0ZSBkdW1wIGZpbGUiKTsKLS0JCQlmcmVlKG1ldGFibG9jayk7Ci0tCQkJcmV0dXJuIDA7Ci0rCQkJZ290byBvdXQ7Ci0gCQl9Ci0gCX0KLSAKLUBAIC0yOTA3LDE1ICsyOTI4LDE5IEBAIG1ldGFkdW1wX2YoCi0gCWlmIChwcm9ncmVzc19zaW5jZV93YXJuaW5nKQotIAkJZnB1dGMoJ1xuJywgc3Rkb3V0X21ldGFkdW1wID8gc3RkZXJyIDogc3Rkb3V0KTsKLSAKLS0JaWYgKHN0ZG91dF9tZXRhZHVtcCkKLS0JCXN0ZG91dCA9IG91dGY7Ci0tCWVsc2UKLS0JCWZjbG9zZShvdXRmKTsKLSsJaWYgKHN0ZG91dF9tZXRhZHVtcCkgewotKwkJZmZsdXNoKG91dGYpOwotKwkJZmZsdXNoKHN0ZG91dCk7Ci0rCQlyZXQgPSBkdXAyKG91dGZkLCBTVERPVVRfRklMRU5PKTsKLSsJCWlmIChyZXQgPCAwKQotKwkJCXBlcnJvcigidW4tcmVkaXJlY3Rpbmcgc3Rkb3V0Iik7Ci0rCX0KLSsJZmNsb3NlKG91dGYpOwotIAotIAkvKiBjbGVhbnVwIGlvY3VyIHN0YWNrICovCi0gCXdoaWxlIChpb2N1cl9zcCA+IHN0YXJ0X2lvY3VyX3NwKQotIAkJcG9wX2N1cigpOwotLQotK291dDoKLSAJZnJlZShtZXRhYmxvY2spOwotIAotIAlyZXR1cm4gMDsKLS0tIAotMi4xMy4zCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc180LjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc180LjEyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ODg2OTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MveGZzcHJvZ3NfNC4xMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotU1VNTUFSWSA9ICJYRlMgRmlsZXN5c3RlbSBVdGlsaXRpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMveGZzIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDRU5TRV9saWJoYW5kbGUgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9MTAyZjdmZWMzZDUzYzdjOGYwYjdiYWY5YmY5ZDc2YTgiCi1ERVBFTkRTID0gInV0aWwtbGludXggdXRpbC1saW51eC1uYXRpdmUiCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2ZzL3hmcy94ZnNwcm9ncy8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS14ZnNwcm9ncy1yZW1vdmUtZG91YmxlLXVuZGVyc2NvcmUtaW50ZWdlci10eXBlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXhmcy1yZW1vdmUtZG91YmxlLXVuZGVyc2NvcmUtaW50ZWdlci10eXBlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmVfZmxhZ3NfZnJvbV9idWlsZF9mbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly94ZnNwcm9ncy00LjEyLjAtZml4X211c2wucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTM0OGIwZTFkN2JkMWNkODJkNjRiOTFmZjM3ZTcyN2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjMzMGFkOGQ3MzdmNDE1MmFlNTExNTgwMTAyZTJmYzQ5MjEyYmI1MWRmYjRiNjE0MDg0MzQ0YWJhZTQ2ZDBkZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVBBQ0tBR0VTID0rICIke1BOfS1mc2NrICR7UE59LW1rZnMgJHtQTn0tcmVwYWlyIGxpYmhhbmRsZSIKLQotREVQRU5EUyArPSAidXRpbC1saW51eCIKLQotUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tZnNjayAke1BOfS1ta2ZzICR7UE59LXJlcGFpciIKLQotRklMRVNfJHtQTn0tZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZnNjay54ZnMiCi1GSUxFU18ke1BOfS1ta2ZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2ZzLnhmcyIKLUZJTEVTXyR7UE59LXJlcGFpciA9ICIke2Jhc2Vfc2JpbmRpcn0veGZzX3JlcGFpciIKLQotRklMRVNfbGliaGFuZGxlID0gIiR7YmFzZV9saWJkaXJ9L2xpYmhhbmRsZSR7U09MSUJTfSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWdldHRleHQ9bm8gXAotICAgICAgICAgICAgICAgIElOU1RBTExfVVNFUj1yb290IFwKLSAgICAgICAgICAgICAgICBJTlNUQUxMX0dST1VQPXJvb3QgXAotICAgICAgICAgICAgICAgIGFjX2N2X2hlYWRlcl9haW9faD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2xpYl9ydF9saW9fbGlzdGlvPXllcyBcCi0iCi0KLURJU0FCTEVfU1RBVElDID0gIiIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vbTQgLS1leGNsdWRlPWF1dG9oZWFkZXIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJyZWFkbGluZSBibGtpZCIKLQotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS1lbmFibGUtcmVhZGxpbmU9eWVzLC0tZW5hYmxlLXJlYWRsaW5lPW5vLHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1tibGtpZF0gPSAiLS1lbmFibGUtYmxraWQ9eWVzLC0tZW5hYmxlLWJsa2lkPW5vLHV0aWwtbGludXgiCi0KLWV4cG9ydCBERUJVRz0iLUROREVCVUciCi1leHBvcnQgQlVJTERfVkVSQk9TRT0iMSIKLWV4cG9ydCB0YWduYW1lPSJDQyIKLQotRVhUUkFfT0VNQUtFID0gIkRJU1RfUk9PVD0nJHtEfSciCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBleHBvcnQgQlVJTERfQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSIKLSAgICAjIFByZXZlbnQgTWFrZWZpbGUgZnJvbSBjYWxsaW5nIGNvbmZpZ3VyZSB3aXRob3V0IGFyZ3VtZW50cywKLSAgICAjIHdoZW4gZG9fY29uZmlndXJlIGdldHMgY2FsbGVkIGZvciBhIHNlY29uZCB0aW1lLgotICAgIHJtIC1mICR7Qn0vaW5jbHVkZS9idWlsZGRlZnMgJHtCfS9pbmNsdWRlL3BsYXRmb3JtX2RlZnMuaCAke0J9L2NvbmZpZ3VyZQotICAgICMgUmVjcmVhdGUgY29uZmlndXJlIHNjcmlwdC4KLSAgICBvZV9ydW5tYWtlIGNvbmZpZ3VyZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLWRldgotICAgICAgICBybSAke0R9JHtsaWJkaXJ9LyoubGEKLSAgICAgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MveGZzcHJvZ3NfNC4xNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MveGZzcHJvZ3NfNC4xNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkNzZhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc180LjE0LjAuYmIKQEAgLTAsMCArMSw2MyBAQAorU1VNTUFSWSA9ICJYRlMgRmlsZXN5c3RlbSBVdGlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMveGZzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgorTElDRU5TRV9saWJoYW5kbGUgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9MTAyZjdmZWMzZDUzYzdjOGYwYjdiYWY5YmY5ZDc2YTgiCitERVBFTkRTID0gInV0aWwtbGludXggdXRpbC1saW51eC1uYXRpdmUiCitTUkNfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2ZzL3hmcy94ZnNwcm9ncy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX2ZsYWdzX2Zyb21fYnVpbGRfZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1DaGVjay1mb3Itc3luY19maWxlX3JhbmdlLWxpYmMtZnVuY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMmQ1MGUzNzUxY2M5OGU2YzkzNjRiYzNkMjI5N2I5ZmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjFiNzEwYjI2OGJjOTVkNmY0NWVjYTA2ZTEyNjJjMjllYjM4ODY1YTE5Y2Q0NDA0ZTQ4YmE0NDZlMDQzYjdlYyIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK1BBQ0tBR0VTID0rICIke1BOfS1mc2NrICR7UE59LW1rZnMgJHtQTn0tcmVwYWlyIGxpYmhhbmRsZSIKKworREVQRU5EUyArPSAidXRpbC1saW51eCIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tZnNjayAke1BOfS1ta2ZzICR7UE59LXJlcGFpciIKKworRklMRVNfJHtQTn0tZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZnNjay54ZnMiCitGSUxFU18ke1BOfS1ta2ZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2ZzLnhmcyIKK0ZJTEVTXyR7UE59LXJlcGFpciA9ICIke2Jhc2Vfc2JpbmRpcn0veGZzX3JlcGFpciIKKworRklMRVNfbGliaGFuZGxlID0gIiR7YmFzZV9saWJkaXJ9L2xpYmhhbmRsZSR7U09MSUJTfSIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWdldHRleHQ9bm8gXAorICAgICAgICAgICAgICAgIElOU1RBTExfVVNFUj1yb290IFwKKyAgICAgICAgICAgICAgICBJTlNUQUxMX0dST1VQPXJvb3QgXAorICAgICAgICAgICAgICAgIGFjX2N2X2hlYWRlcl9haW9faD15ZXMgXAorICAgICAgICAgICAgICAgIGFjX2N2X2xpYl9ydF9saW9fbGlzdGlvPXllcyBcCisiCisKK0RJU0FCTEVfU1RBVElDID0gIiIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vbTQgLS1leGNsdWRlPWF1dG9oZWFkZXIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJyZWFkbGluZSBibGtpZCIKKworUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS1lbmFibGUtcmVhZGxpbmU9eWVzLC0tZW5hYmxlLXJlYWRsaW5lPW5vLHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1tibGtpZF0gPSAiLS1lbmFibGUtYmxraWQ9eWVzLC0tZW5hYmxlLWJsa2lkPW5vLHV0aWwtbGludXgiCisKK2V4cG9ydCBERUJVRz0iLUROREVCVUciCitleHBvcnQgQlVJTERfVkVSQk9TRT0iMSIKK2V4cG9ydCB0YWduYW1lPSJDQyIKKworRVhUUkFfT0VNQUtFID0gIkRJU1RfUk9PVD0nJHtEfSciCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICBleHBvcnQgQlVJTERfQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSIKKyAgICAjIFByZXZlbnQgTWFrZWZpbGUgZnJvbSBjYWxsaW5nIGNvbmZpZ3VyZSB3aXRob3V0IGFyZ3VtZW50cywKKyAgICAjIHdoZW4gZG9fY29uZmlndXJlIGdldHMgY2FsbGVkIGZvciBhIHNlY29uZCB0aW1lLgorICAgIHJtIC1mICR7Qn0vaW5jbHVkZS9idWlsZGRlZnMgJHtCfS9pbmNsdWRlL3BsYXRmb3JtX2RlZnMuaCAke0J9L2NvbmZpZ3VyZQorICAgICMgUmVjcmVhdGUgY29uZmlndXJlIHNjcmlwdC4KKyAgICBvZV9ydW5tYWtlIGNvbmZpZ3VyZQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLWRldgorICAgICAgICBybSAke0R9JHtsaWJkaXJ9LyoubGEKKyAgICAgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZGlyfQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9SRUFETUUKaW5kZXggMjVlZjg1ZC4uMmE2ODJlNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL1JFQURNRQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvUkVBRE1FCkBAIC0xLDE3ICsxLDM4IEBACittZXRhLWdub21lCis9PT09PT09PT09PQorCitUaGUgcmVjaXBlIGluIHRoaXMgbGF5ZXIgbmVlZHMgdG8gaGF2ZSAneDExJyBpbiBESVNUUk9fRkVBVFVSRVMgCit0byBoYXZlIGVmZmVjdC4gVG8gZW5hYmxlIHRoZW0sIGFkZCBpbiBjb25maWd1cmF0aW9uIGZpbGUgdGhlIGZvbGxvd2luZyBsaW5lLgorCisgIERJU1RST19GRUFUVVJFU19hcHBlbmQgPSAiIHgxMSIKKworSWYgbWV0YS1nbm9tZSBpcyBpbmNsdWRlZCwgYnV0IHgxMSBpcyBub3QgZW5hYmxlZCBhcyBhCitkaXN0cm8gZmVhdHVyZSBhIHdhcm5pbmcgaXMgcHJpbnRlZCBhdCBwYXJzZSB0aW1lOgorCisgICAgWW91IGhhdmUgaW5jbHVkZWQgdGhlIG1ldGEtZ25vbWUgbGF5ZXIsIGJ1dAorICAgICd4MTEnIGhhcyBub3QgYmVlbiBlbmFibGVkIGluIHlvdXIgRElTVFJPX0ZFQVRVUkVTLgorCitJZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcsIHRoaXMgd2FybmluZyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZm9sbG93aW5nCit2YXJpYWJsZSBpbiB5b3VyIGNvbmZpZ3VyYXRpb246CisKKyAgU0tJUF9NRVRBX0dOT01FX1NBTklUWV9DSEVDSyA9IDEKKworCitEZXBlbmRlbmNpZXMKKy0tLS0tLS0tLS0tLQogVGhpcyBsYXllciBkZXBlbmRzIG9uOgogCiBVUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL29lLWNvcmUuZ2l0Ci1icmFuY2g6IHJvY2tvCiticmFuY2g6IG1hc3RlcgogcmV2aXNpb246IEhFQUQKIAogVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9tZXRhLW9lLmdpdAotYnJhbmNoOiByb2NrbworYnJhbmNoOiBtYXN0ZXIKIHJldmlzaW9uOiBIRUFECiAKLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1nbm9tZV1bcm9ja29dJyBpbiB0aGUgc3ViamVjdCcKK1NlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1nbm9tZV0nIGluIHRoZSBzdWJqZWN0JwogCiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2luZyBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1nbm9tZV1bcm9ja29dW1BBVENIJworJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLWdub21lXVtQQVRDSCcKIAotcm9ja28gQnJhbmNoIE1haW50YWluZXI6Ci1Bcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorTGF5ZXIgbWFpbnRhaW5lcjogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL2NsYXNzZXMvc2FuaXR5LW1ldGEtZ25vbWUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9jbGFzc2VzL3Nhbml0eS1tZXRhLWdub21lLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMxZWExOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9jbGFzc2VzL3Nhbml0eS1tZXRhLWdub21lLmJiY2xhc3MKQEAgLTAsMCArMSwxMCBAQAorYWRkaGFuZGxlciBnbm9tZV9iYmFwcGVuZF9kaXN0cm9jaGVjaworZ25vbWVfYmJhcHBlbmRfZGlzdHJvY2hlY2tbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5TYW5pdHlDaGVjayIKK3B5dGhvbiBnbm9tZV9iYmFwcGVuZF9kaXN0cm9jaGVjaygpIHsKKyAgICBza2lwX2NoZWNrID0gZS5kYXRhLmdldFZhcignU0tJUF9NRVRBX0dOT01FX1NBTklUWV9DSEVDSycpID09ICIxIgorICAgIGlmICd4MTEnIG5vdCBpbiBlLmRhdGEuZ2V0VmFyKCdESVNUUk9fRkVBVFVSRVMnKS5zcGxpdCgpIGFuZCBub3Qgc2tpcF9jaGVjazoKKyAgICAgICAgYmIud2FybigiWW91IGhhdmUgaW5jbHVkZWQgdGhlIG1ldGEtZ25vbWUgbGF5ZXIsIGJ1dCBcCisneDExJyBoYXMgbm90IGJlZW4gZW5hYmxlZCBpbiB5b3VyIERJU1RST19GRUFUVVJFUy4gU29tZSBiYmFwcGVuZCBmaWxlcyBcCittYXkgbm90IHRha2UgZWZmZWN0LiBTZWUgdGhlIG1ldGEtZ25vbWUgUkVBRE1FIGZvciBkZXRhaWxzIG9uIGVuYWJsaW5nIFwKK21ldGEtZ25vbWUgc3VwcG9ydC4iKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9jb25mL2xheWVyLmNvbmYKaW5kZXggYTEzODgxOC4uZTZlOTUzMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvY29uZi9sYXllci5jb25mCkBAIC0xNCw0ICsxNCw4IEBACiAKIExBWUVSREVQRU5EU19nbm9tZS1sYXllciA9ICJjb3JlIG9wZW5lbWJlZGRlZC1sYXllciBuZXR3b3JraW5nLWxheWVyIgogCi1BVkFISV9HVEtfcG4tYXZhaGktdWkgPSAiZ3RrIGd0azMiCitMQVlFUlNFUklFU19DT01QQVRfZ25vbWUtbGF5ZXIgPSAic3VtbyIKKworIyBTYW5pdHkgY2hlY2sgZm9yIG1ldGEtZ25vbWUgbGF5ZXIuCisjIFNldHRpbmcgU0tJUF9NRVRBX0dOT01FX1NBTklUWV9DSEVDSyB0byAiMSIgd291bGQgc2tpcCB0aGUgYmJhcHBlbmQgZmlsZXMgY2hlY2suCitJTkhFUklUICs9ICJzYW5pdHktbWV0YS1nbm9tZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrLW1hbmFnZXItYXBwbGV0L25ldHdvcmstbWFuYWdlci1hcHBsZXRfMS40LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29yay1tYW5hZ2VyLWFwcGxldC9uZXR3b3JrLW1hbmFnZXItYXBwbGV0XzEuNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGIzMzZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrLW1hbmFnZXItYXBwbGV0L25ldHdvcmstbWFuYWdlci1hcHBsZXRfMS40LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1TVU1NQVJZID0gIkdUSysgYXBwbGV0IGZvciBOZXR3b3JrTWFuYWdlciIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotREVQRU5EUyA9ICJndGsrMyBsaWJub3RpZnkgbGlic2VjcmV0IG5ldHdvcmttYW5hZ2VyIGRidXMtZ2xpYiBcCi0gICAgICAgICAgIGdjb25mIGxpYmdub21lLWtleXJpbmcgaXNvLWNvZGVzIG5zcyBcCi0gICAgICAgICAgIGludGx0b29sLW5hdGl2ZSBcCi0iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBndGstaWNvbi1jYWNoZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotR05PTUVfQ09NUFJFU1NfVFlQRSA9ICJ4eiIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiM2Y4MmNlZGM0NzAzZGYwMjc3Yzc2ZDlmZWI1YmYyYzgiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI2OTM4NDZlZWFlMDk4NmU3OWViMWNlZGZiYzQ5OWYxMzJmMjdhOTk3NmVmMTg5YTBmMTY5MzhhYzU5ZWMzMjI2IgotCi1QQUNLQUdFQ09ORklHW21vZGVtbWFuYWdlcl0gPSAiLS13aXRoLXd3YW4sLS13aXRob3V0LXd3YW4sbW9kZW1tYW5hZ2VyIgotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLQotR0lfREFUQV9FTkFCTEVEX2xpYmMtbXVzbCA9ICJGYWxzZSIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICAjIFNpZ2guLi4gLS1lbmFibGUtY29tcGlsZS13YXJuaW5ncz1ubyBkb2Vzbid0IGFjdHVhbGx5IHR1cm4gb2ZmIC1XZXJyb3IKLSAgICBmb3IgaSBpbiAkKGZpbmQgJHtCfSAtbmFtZSAiTWFrZWZpbGUiKSA7IGRvCi0gICAgICAgIHNlZCAtaSAtZSBzJS1XZXJyb3JbXls6c3BhY2U6XV0qJSVnICRpCi0gICAgZG9uZQotfQotCi1SREVQRU5EU18ke1BOfSA9KyAibmV0d29ya21hbmFnZXIiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vYXBwZGF0YSBcCi0gICAgJHtkYXRhZGlyfS9ubS1hcHBsZXQvIFwKLSAgICAke2RhdGFkaXJ9L2xpYm5tLWd0ay93aWZpLnVpIFwKLSAgICAke2RhdGFkaXJ9L2xpYm5tYS93aWZpLnVpIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrLW1hbmFnZXItYXBwbGV0L25ldHdvcmstbWFuYWdlci1hcHBsZXRfMS44LjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmstbWFuYWdlci1hcHBsZXQvbmV0d29yay1tYW5hZ2VyLWFwcGxldF8xLjguMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMyYjk2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrLW1hbmFnZXItYXBwbGV0L25ldHdvcmstbWFuYWdlci1hcHBsZXRfMS44LjEwLmJiCkBAIC0wLDAgKzEsNDUgQEAKK1NVTU1BUlkgPSAiR1RLKyBhcHBsZXQgZm9yIE5ldHdvcmtNYW5hZ2VyIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorCitERVBFTkRTID0gImd0ayszIGxpYm5vdGlmeSBsaWJzZWNyZXQgbmV0d29ya21hbmFnZXIgZGJ1cy1nbGliIFwKKyAgICAgICAgICAgZ2NvbmYgbGliZ25vbWUta2V5cmluZyBpc28tY29kZXMgbnNzIFwKKyAgICAgICAgICAgaW50bHRvb2wtbmF0aXZlIFwKKyIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ25vbWViYXNlIGdzZXR0aW5ncyBndGstaWNvbi1jYWNoZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZWFlM2JlNzVlNzdmZjFhN2VhMzE3NGJlMjVlNjJkMDMiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwYWRjNGJmYWU4YjQ5ZjdhMWQ5MjljMjJlZjIwOTMzYmQ0MWZiNGE4YjQ1ODI4MGY0NGM2NWY5ZTQ1YjRjOWMzIgorCitQQUNLQUdFQ09ORklHW21vZGVtbWFuYWdlcl0gPSAiLS13aXRoLXd3YW4sLS13aXRob3V0LXd3YW4sbW9kZW1tYW5hZ2VyIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS13aXRob3V0LXNlbGludXggXAorIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworICAgICMgU2lnaC4uLiAtLWVuYWJsZS1jb21waWxlLXdhcm5pbmdzPW5vIGRvZXNuJ3QgYWN0dWFsbHkgdHVybiBvZmYgLVdlcnJvcgorICAgIGZvciBpIGluICQoZmluZCAke0J9IC1uYW1lICJNYWtlZmlsZSIpIDsgZG8KKyAgICAgICAgc2VkIC1pIC1lIHMlLVdlcnJvclteWzpzcGFjZTpdXSolJWcgJGkKKyAgICBkb25lCit9CisKKyMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHJlbGF0ZWQKK0dJX0RBVEFfRU5BQkxFRF9saWJjLW11c2wgPSAiRmFsc2UiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9zcmMvbGlibm1hLy5saWJzOiR7Qn0vc3JjL2xpYm5tLWd0ay8ubGlicyIKK30KKworUkRFUEVORFNfJHtQTn0gPSsgIm5ldHdvcmttYW5hZ2VyIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2RhdGFkaXJ9L2FwcGRhdGEgXAorICAgICR7ZGF0YWRpcn0vbm0tYXBwbGV0LyBcCisgICAgJHtkYXRhZGlyfS9saWJubS1ndGsvd2lmaS51aSBcCisgICAgJHtkYXRhZGlyfS9saWJubWEvd2lmaS51aSBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vYmV4ZC9zc2l6ZV90X2RlZmluaXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vYmV4ZC9zc2l6ZV90X2RlZmluaXRpb24ucGF0Y2gKaW5kZXggMjAwOWRjZC4uNTcwY2I5ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXgvb2JleGQvc3NpemVfdF9kZWZpbml0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4L29iZXhkL3NzaXplX3RfZGVmaW5pdGlvbi5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLWluY2x1ZGUgdW5pc3RkLmggdG8gZ2V0IHNzaXplX3QgZGVmaW5pdGlvbnMKK0Zyb20gZmI1MDU2ZmVhOTU1OWIzZWMzYmI2MTk2N2ExMTJiNmM3OTNiNzAwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDggSmFuIDIwMTMgMjE6MzM6MzQgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSB1bmlzdGQuaCB0byBnZXQgc3NpemVfdCBkZWZpbml0aW9ucwogCiBGaXhlcyBlcnJvcnMgbGlrZQogCkBAIC0xOCwxNSArMjEsMjAgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotSW5kZXg6IG9iZXhkLTAuNDQvcGx1Z2lucy9tYXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9iZXhkLTAuNDQub3JpZy9wbHVnaW5zL21hcy5jCTIwMTItMDEtMTEgMTQ6NTM6NTMuMDAwMDAwMDAwIC0wODAwCi0rKysgb2JleGQtMC40NC9wbHVnaW5zL21hcy5jCTIwMTMtMDEtMDggMTI6NTE6MTIuNjgxODgyMTc0IC0wODAwCi1AQCAtMjksNiArMjksNyBAQAorCistLS0KKyBwbHVnaW5zL21hcy5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9wbHVnaW5zL21hcy5jIGIvcGx1Z2lucy9tYXMuYworaW5kZXggMWIxODA1OS4uYjUxOTUwNyAxMDA2NDQKKy0tLSBhL3BsdWdpbnMvbWFzLmMKKysrKyBiL3BsdWdpbnMvbWFzLmMKK0BAIC0zMCw2ICszMCw3IEBACiAgI2luY2x1ZGUgPGdsaWIuaD4KICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICsjaW5jbHVkZSA8dW5pc3RkLmg+CiAgCi0gI2luY2x1ZGUgIm9iZXhkLmgiCi0gI2luY2x1ZGUgInBsdWdpbi5oIgorICNpbmNsdWRlIDxnb2JleC9nb2JleC5oPgorICNpbmNsdWRlIDxnb2JleC9nb2JleC1hcHBhcmFtLmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZTMvMDAwMS1BZGQtR19HTlVDX1BSSU5URi1vbi1mdW5jdGlvbnMtd2l0aC1mb3JtYXQtc3RyaW5ncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlMy8wMDAxLUFkZC1HX0dOVUNfUFJJTlRGLW9uLWZ1bmN0aW9ucy13aXRoLWZvcm1hdC1zdHJpbmdzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZTMvMDAwMS1BZGQtR19HTlVDX1BSSU5URi1vbi1mdW5jdGlvbnMtd2l0aC1mb3JtYXQtc3RyaW5ncy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzLzAwMDEtQWRkLUdfR05VQ19QUklOVEYtb24tZnVuY3Rpb25zLXdpdGgtZm9ybWF0LXN0cmluZ3MucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlMy8wMDAxLWdub21lLWRvYy11dGlscy5tYWtlLXN5c3Jvb3RlZC1wa2ctY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzLzAwMDEtZ25vbWUtZG9jLXV0aWxzLm1ha2Utc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlMy8wMDAxLWdub21lLWRvYy11dGlscy5tYWtlLXN5c3Jvb3RlZC1wa2ctY29uZmlnLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZTMvMDAwMS1nbm9tZS1kb2MtdXRpbHMubWFrZS1zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzLzAwMDItZml4LWdjYy02LWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzLzAwMDItZml4LWdjYy02LWJ1aWxkLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZTMvMDAwMi1maXgtZ2NjLTYtYnVpbGQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlMy8wMDAyLWZpeC1nY2MtNi1idWlsZC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzXyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZTNfJS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FiYWNmYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZTNfJS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVBBQ0tBR0VDT05GSUcgPz89ICJnbm9tZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlM18zLjguNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlM18zLjguNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2RhM2U5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzXzMuOC41LmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiR2xhZGUgLSBBIFVzZXIgSW50ZXJmYWNlIERlc2lnbmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2duYXNoIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWFhYmU4NzU5MWNiOGFlMGYzYzY4YmU2OTc3YmI1NTIyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT05YWMyZTdjZmYxZGRhZjQ4YjZlYWI2MDI4ZjIzZWY4OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTI1Mjg5MGQ5ZWVlMjZhYWI3YjQzMmU4YjhhNjE2NDc1IgorREVQRU5EUyA9ICJndGsrIGdub21lLWRvYy11dGlscyBnbm9tZS1jb21tb24gbGlieG1sMiBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgcHl0aG9ubmF0aXZlIGd0ay1pY29uLWNhY2hlCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZ2xhZGUzLzMuOC9nbGFkZTMtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ25vbWUtZG9jLXV0aWxzLm1ha2Utc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1maXgtZ2NjLTYtYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtR19HTlVDX1BSSU5URi1vbi1mdW5jdGlvbnMtd2l0aC1mb3JtYXQtc3RyaW5ncy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZTRiNGY1ZWUzNGEwM2UwMTdlNGNlZjk3ZDc5NmMxZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OGE1ZjZlNGRmNDAyODIzMGRkZWNjNzRjNTY0ODA4YjdlYzQ0NzFiMTkyNTA1OGUyOTMwNGY3NzhiNmIyNzM1IgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZXh0ZW5kZWQvZ3BhcnRlZC9ncGFydGVkXzAuMjguMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWV4dGVuZGVkL2dwYXJ0ZWQvZ3BhcnRlZF8wLjI4LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzYWI2ZjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZXh0ZW5kZWQvZ3BhcnRlZC9ncGFydGVkXzAuMjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBwYXJ0aXRpb24gZWRpdG9yIHRvIGdyYXBoaWNhbGx5IG1hbmFnZSBkaXNrIHBhcnRpdGlvbnMgIgotSE9NRVBBR0UgPSAiaHR0cDovL2dwYXJ0ZWQub3JnL2luZGV4LnBocCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1pY29uLWNhY2hlCi0KLVNSQ19VUkkgPSAiIFwKLSAgICAke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59LyR7QlBOfS0ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vb3JnLnlvY3RvcHJvamVjdC5wa2V4ZWMucnVuLWdwYXJ0ZWQucG9saWN5IFwKLSAgICBmaWxlOi8vZ3BhcnRlZF9wb2xraXQgXAotIgotU1JDX1VSSVttZDVzdW1dID0gImFiNzI0NjRhM2FiMjEzNzY2NGQ5ZGY4NDYyYmVmZDNmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc2ODkxZjE0Mzk0NzU0ZjdkNmVjY2ViYTJhZjBlNTg1YmY4OWY5ZDc4MGMzODlhMjU1ZGNkNDFhMmY0NWQzMzMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGd0a21tIHBhcnRlZCBnbm9tZS1kb2MtdXRpbHMgaW50bHRvb2wtbmF0aXZlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIEFkZCBhIHNjcmlwdCB3aGljaCBjaGVja3MgaWYgcG9sa2l0IGlzIGluc3RhbGxlZC4KLSAgICAjIElmIHllczogYSBwb2xpY3kgaXMgcmVxdWVzdGVkIGZyb20gcG9sa2l0IC8gb3RoZXJ3aXNlIHN0YXJ0IGFzIHVzdWFsCi0gICAgaW5zdGFsbCAke1dPUktESVJ9L2dwYXJ0ZWRfcG9sa2l0ICR7RH0ke3NiaW5kaXJ9Ci0gICAgc2VkIC1pICdzOiVzYmluZGlyJToke3NiaW5kaXJ9OmcnICR7RH0ke3NiaW5kaXJ9L2dwYXJ0ZWRfcG9sa2l0Ci0gICAgIyByZWxpbmsgbWVudSBlbnRyeSB0byB1c2Ugb3VyIHNjcmlwdAotICAgIHNlZCAtaSAnczoke3NiaW5kaXJ9L2dwYXJ0ZWQ6JHtzYmluZGlyfS9ncGFydGVkX3BvbGtpdDpnJyAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvZ3BhcnRlZC5kZXNrdG9wCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMKLSAgICBpbnN0YWxsICR7V09SS0RJUn0vb3JnLnlvY3RvcHJvamVjdC5wa2V4ZWMucnVuLWdwYXJ0ZWQucG9saWN5ICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLnlvY3RvcHJvamVjdC5wa2V4ZWMucnVuLWdwYXJ0ZWQucG9saWN5Ci19Ci0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc2Nyb2xsa2VlcGVyIC0tZGlzYWJsZS1kb2MiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vYXBwZGF0YSBcCi0gICAgJHtkYXRhZGlyfS9pY29ucyBcCi0gICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0iCi0KLVJERVBFTkRTXyR7UE59ID0gImRvc2ZzdG9vbHMgbXRvb2xzIGUyZnNwcm9ncyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWV4dGVuZGVkL2dwYXJ0ZWQvZ3BhcnRlZF8wLjMxLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1leHRlbmRlZC9ncGFydGVkL2dwYXJ0ZWRfMC4zMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YmVhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1leHRlbmRlZC9ncGFydGVkL2dwYXJ0ZWRfMC4zMS4wLmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiQSBwYXJ0aXRpb24gZWRpdG9yIHRvIGdyYXBoaWNhbGx5IG1hbmFnZSBkaXNrIHBhcnRpdGlvbnMgIgorSE9NRVBBR0UgPSAiaHR0cDovL2dwYXJ0ZWQub3JnL2luZGV4LnBocCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstaWNvbi1jYWNoZQorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJID0gIiBcCisgICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfS8ke0JQTn0tJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovL29yZy55b2N0b3Byb2plY3QucGtleGVjLnJ1bi1ncGFydGVkLnBvbGljeSBcCisgICAgZmlsZTovL2dwYXJ0ZWRfcG9sa2l0IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjNTU0Y2M1NzM0YzUwNDU5ZGQ1NTFiZDNmYTEwNzEwZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzYjdiNDlhNDM0ZDllNGIzOTdiYzQxYTFmNWFjYWI4NTM5YjlmZjQwMmI0NzJkZmQ4M2FkNzdiMmRlY2QwN2JhIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBndGttbSBwYXJ0ZWQgZ25vbWUtZG9jLXV0aWxzIGludGx0b29sLW5hdGl2ZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBBZGQgYSBzY3JpcHQgd2hpY2ggY2hlY2tzIGlmIHBvbGtpdCBpcyBpbnN0YWxsZWQuCisgICAgIyBJZiB5ZXM6IGEgcG9saWN5IGlzIHJlcXVlc3RlZCBmcm9tIHBvbGtpdCAvIG90aGVyd2lzZSBzdGFydCBhcyB1c3VhbAorICAgIGluc3RhbGwgJHtXT1JLRElSfS9ncGFydGVkX3BvbGtpdCAke0R9JHtzYmluZGlyfQorICAgIHNlZCAtaSAnczolc2JpbmRpciU6JHtzYmluZGlyfTpnJyAke0R9JHtzYmluZGlyfS9ncGFydGVkX3BvbGtpdAorICAgICMgcmVsaW5rIG1lbnUgZW50cnkgdG8gdXNlIG91ciBzY3JpcHQKKyAgICBzZWQgLWkgJ3M6JHtzYmluZGlyfS9ncGFydGVkOiR7c2JpbmRpcn0vZ3BhcnRlZF9wb2xraXQ6ZycgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2dwYXJ0ZWQuZGVza3RvcAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zCisgICAgaW5zdGFsbCAke1dPUktESVJ9L29yZy55b2N0b3Byb2plY3QucGtleGVjLnJ1bi1ncGFydGVkLnBvbGljeSAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy55b2N0b3Byb2plY3QucGtleGVjLnJ1bi1ncGFydGVkLnBvbGljeQorfQorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXNjcm9sbGtlZXBlciAtLWRpc2FibGUtZG9jIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2RhdGFkaXJ9L2FwcGRhdGEgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMgXAorICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorIgorCitSREVQRU5EU18ke1BOfSA9ICJkb3Nmc3Rvb2xzIG10b29scyBlMmZzcHJvZ3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9hYml3b3JkL2FiaXdvcmRfMy4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9hYml3b3JkL2FiaXdvcmRfMy4wLjIuYmIKaW5kZXggMmExM2U0OC4uZDJjMDE4NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYWJpd29yZC9hYml3b3JkXzMuMC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2FiaXdvcmQvYWJpd29yZF8zLjAuMi5iYgpAQCAtOCw3ICs4LDYgQEAKICAgICBndGsrIFwKICAgICBndGttYXRodmlldyBcCiAgICAgd3YgXAotICAgIGxpYmdsYWRlIFwKICAgICBsaWJmcmliaWRpIFwKICAgICBqcGVnIFwKICAgICBsaWJwbmcgXApAQCAtMzgsNyArMzcsOSBAQAogI3dhbnQgMy54IGZyb20gMy54LnkgZm9yIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5CiBTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCiAgICAgY29sbGFiLWJhY2tlbmQteG1wcCBjb2xsYWItYmFja2VuZC10Y3AgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYm9ub2JvL2ZpbGVzLzAwMDEtYm9ub2JvLXVpLW5vZGUtcXVhbGlmeS1mdW5jdGlvbnMtd2l0aC1HX0dOVUNfUFJJTlRGLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYm9ub2JvL2ZpbGVzLzAwMDEtYm9ub2JvLXVpLW5vZGUtcXVhbGlmeS1mdW5jdGlvbnMtd2l0aC1HX0dOVUNfUFJJTlRGLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWFlYmI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Jvbm9iby9maWxlcy8wMDAxLWJvbm9iby11aS1ub2RlLXF1YWxpZnktZnVuY3Rpb25zLXdpdGgtR19HTlVDX1BSSU5URi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gYjc1ODc5ZThjM2UyNGQzMzhjMGU1ODQzZDYxNmJjOWIwMmRhNGQwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDA5OjUyOjE3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGJvbm9iby11aS1ub2RlOiBxdWFsaWZ5IGZ1bmN0aW9ucyB3aXRoIEdfR05VQ19QUklOVEYKLQotVGhpcyBoZWxwcyBjb21waWxlciBpbiBkb2luZyBmb3JtYXQgY2hlY2tpbmcgY29ycmVjdGx5Ci1GaXhlcwotYm9ub2JvLXVpLW5vZGUuYzo4NjQ6Mzg6IGVycm9yOiBmb3JtYXQgc3RyaW5nIGlzIG5vdCBhIHN0cmluZyBsaXRlcmFsIFstV2Vycm9yLC1XZm9ybWF0LW5vbmxpdGVyYWxdCi18ICAgICAgICAgZ19sb2d2ICAgKCJYTUwiLCBHX0xPR19MRVZFTF9FUlJPUiwgbXNnLCBhcmdzKTsKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGJvbm9iby9ib25vYm8tdWktbm9kZS5jIHwgNiArKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYm9ub2JvL2Jvbm9iby11aS1ub2RlLmMgYi9ib25vYm8vYm9ub2JvLXVpLW5vZGUuYwotaW5kZXggOWJhYjVlNS4uNmVjNjZlMiAxMDA2NDQKLS0tLSBhL2Jvbm9iby9ib25vYm8tdWktbm9kZS5jCi0rKysgYi9ib25vYm8vYm9ub2JvLXVpLW5vZGUuYwotQEAgLTgzNSw3ICs4MzUsNyBAQCB1aUNoYXJhY3RlcnMgKFBhcnNlU3RhdGUgKnBzLCBjb25zdCB4bWxDaGFyICpjaGFycywgaW50IGxlbikKLSAJZ19zdHJpbmdfYXBwZW5kX2xlbiAocHMtPmNvbnRlbnQsIGNoYXJzLCBsZW4pOwotIH0KLSAKLS1zdGF0aWMgdm9pZAotK3N0YXRpYyBHX0dOVUNfUFJJTlRGKDIsIDMpIHZvaWQKLSB1aVdhcm5pbmcgKFBhcnNlU3RhdGUgKnBzLCBjb25zdCBjaGFyICptc2csIC4uLikKLSB7Ci0gCXZhX2xpc3QgYXJnczsKLUBAIC04NDUsNyArODQ1LDcgQEAgdWlXYXJuaW5nIChQYXJzZVN0YXRlICpwcywgY29uc3QgY2hhciAqbXNnLCAuLi4pCi0gCXZhX2VuZCAgIChhcmdzKTsKLSB9Ci0gCi0tc3RhdGljIHZvaWQKLStzdGF0aWMgR19HTlVDX1BSSU5URigyLCAzKSB2b2lkCi0gdWlFcnJvciAoUGFyc2VTdGF0ZSAqcHMsIGNvbnN0IGNoYXIgKm1zZywgLi4uKQotIHsKLSAJdmFfbGlzdCBhcmdzOwotQEAgLTg1NSw3ICs4NTUsNyBAQCB1aUVycm9yIChQYXJzZVN0YXRlICpwcywgY29uc3QgY2hhciAqbXNnLCAuLi4pCi0gCXZhX2VuZCAgIChhcmdzKTsKLSB9Ci0gCi0tc3RhdGljIHZvaWQKLStzdGF0aWMgR19HTlVDX1BSSU5URigyLCAzKSB2b2lkCi0gdWlGYXRhbEVycm9yIChQYXJzZVN0YXRlICpwcywgY29uc3QgY2hhciAqbXNnLCAuLi4pCi0gewotIAl2YV9saXN0IGFyZ3M7Ci0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ib25vYm8vZmlsZXMvZ2NjNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Jvbm9iby9maWxlcy9nY2M1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzUyOGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Jvbm9iby9maWxlcy9nY2M1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotSW5kZXg6IGxpYmJvbm9ib3VpLTIuMjQuNS90b29scy9icm93c2VyL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliYm9ub2JvdWktMi4yNC41Lm9yaWcvdG9vbHMvYnJvd3Nlci9NYWtlZmlsZS5hbQotKysrIGxpYmJvbm9ib3VpLTIuMjQuNS90b29scy9icm93c2VyL01ha2VmaWxlLmFtCi1AQCAtMiw3ICsyLDYgQEAgSU5DTFVERVMgPQlcCi0gCS1EQk9OT0JPX0JST1dTRVJfREFUQURJUj1cIiIkKGRhdGFkaXIpIlwiCVwKLSAgICAgICAgIC1EQk9OT0JPX1NVUFBPUlRfTE9DQUxFRElSPVwiIiQoZGF0YWRpcikvbG9jYWxlIlwiICAgICAgICBcCi0gCS1JJChzcmNkaXIpIC1JJCh0b3Bfc3JjZGlyKSAJCQlcCi0tCS1JJCh0b3Bfc3JjZGlyKS9ib25vYm8tYnJvd3NlcgkJCVwKLSAJJChCT05PQk9VSV9DRkxBR1MpCQkJCVwKLSAJJChXQVJOX0NGTEFHUykKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Jvbm9iby9maWxlcy9ndGstZG9jLm00IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYm9ub2JvL2ZpbGVzL2d0ay1kb2MubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlYzQxNjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYm9ub2JvL2ZpbGVzL2d0ay1kb2MubTQKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1kbmwgLSotIG1vZGU6IGF1dG9jb25mIC0qLQotCi0jIHNlcmlhbCAxCi0KLWRubCBVc2FnZToKLWRubCAgIEdUS19ET0NfQ0hFQ0soW21pbmltdW0tZ3RrLWRvYy12ZXJzaW9uXSkKLUFDX0RFRlVOKFtHVEtfRE9DX0NIRUNLXSwKLVsKLSAgQUNfQkVGT1JFKFtBQ19QUk9HX0xJQlRPT0xdLFskMF0pZG5sIHNldHVwIGxpYnRvb2wgZmlyc3QKLSAgQUNfQkVGT1JFKFtBTV9QUk9HX0xJQlRPT0xdLFskMF0pZG5sIHNldHVwIGxpYnRvb2wgZmlyc3QKLSAgZG5sIGZvciBvdmVycmlkaW5nIHRoZSBkb2N1bWVudGF0aW9uIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkKLSAgQUNfQVJHX1dJVEgoaHRtbC1kaXIsCi0gICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1odG1sLWRpcj1QQVRIXSwgW3BhdGggdG8gaW5zdGFsbGVkIGRvY3NdKSwsCi0gICAgW3dpdGhfaHRtbF9kaXI9JyR7ZGF0YWRpcn0vZ3RrLWRvYy9odG1sJ10pCi0gIEhUTUxfRElSPSIkd2l0aF9odG1sX2RpciIKLSAgQUNfU1VCU1QoSFRNTF9ESVIpCi0KLSAgZG5sIGVuYWJsZS9kaXNhYmxlIGRvY3VtZW50YXRpb24gYnVpbGRpbmcKLSAgQUNfQVJHX0VOQUJMRShndGstZG9jLAotICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1ndGstZG9jXSwKLSAgICAgICAgICAgICAgICAgICBbdXNlIGd0ay1kb2MgdG8gYnVpbGQgZG9jdW1lbnRhdGlvbiBbZGVmYXVsdD1ub11dKSwsCi0gICAgZW5hYmxlX2d0a19kb2M9bm8pCi0KLSAgaGF2ZV9ndGtfZG9jPW5vCi0gIGlmIHRlc3QgLXogIiRQS0dfQ09ORklHIjsgdGhlbgotICAgIEFDX1BBVEhfUFJPRyhQS0dfQ09ORklHLCBwa2ctY29uZmlnLCBubykKLSAgZmkKLSAgaWYgdGVzdCAiJFBLR19DT05GSUciICE9ICJubyIgJiYgJFBLR19DT05GSUcgLS1leGlzdHMgZ3RrLWRvYzsgdGhlbgotICAgIGhhdmVfZ3RrX2RvYz15ZXMKLSAgZmkKLQotICBkbmwgZG8gd2Ugd2FudCB0byBkbyBhIHZlcnNpb24gY2hlY2s/Ci1pZmVsc2UoWyQxXSxbXSwsCi0gIFtndGtfZG9jX21pbl92ZXJzaW9uPSQxCi0gIGlmIHRlc3QgIiRoYXZlX2d0a19kb2MiID0geWVzOyB0aGVuCi0gICAgQUNfTVNHX0NIRUNLSU5HKFtndGstZG9jIHZlcnNpb24gPj0gJGd0a19kb2NfbWluX3ZlcnNpb25dKQotICAgIGlmICRQS0dfQ09ORklHIC0tYXRsZWFzdC12ZXJzaW9uICRndGtfZG9jX21pbl92ZXJzaW9uIGd0ay1kb2M7IHRoZW4KLSAgICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgIGVsc2UKLSAgICAgIEFDX01TR19SRVNVTFQobm8pCi0gICAgICBoYXZlX2d0a19kb2M9bm8KLSAgICBmaQotICBmaQotXSkKLSAgaWYgdGVzdCB4JGVuYWJsZV9ndGtfZG9jID0geHllczsgdGhlbgotICAgIGlmIHRlc3QgIiRoYXZlX2d0a19kb2MiICE9IHllczsgdGhlbgotICAgICAgZW5hYmxlX2d0a19kb2M9bm8KLSAgICBmaQotICBmaQotCi0gIEFNX0NPTkRJVElPTkFMKEVOQUJMRV9HVEtfRE9DLCB0ZXN0IHgkZW5hYmxlX2d0a19kb2MgPSB4eWVzKQotICBBTV9DT05ESVRJT05BTChHVEtfRE9DX1VTRV9MSUJUT09MLCB0ZXN0IC1uICIkTElCVE9PTCIpCi1dKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYm9ub2JvL2ZpbGVzL2d0ay1kb2MubWFrZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Jvbm9iby9maWxlcy9ndGstZG9jLm1ha2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1NGZmYjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYm9ub2JvL2ZpbGVzL2d0ay1kb2MubWFrZQorKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi0jIC0qLSBtb2RlOiBtYWtlZmlsZSAtKi0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEV2ZXJ5dGhpbmcgYmVsb3cgaGVyZSBpcyBnZW5lcmljICMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1pZiBHVEtfRE9DX1VTRV9MSUJUT09MCi1HVEtET0NfQ0MgPSAkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKLUdUS0RPQ19MRCA9ICQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykKLWVsc2UKLUdUS0RPQ19DQyA9ICQoQ0MpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKLUdUS0RPQ19MRCA9ICQoQ0MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpCi1lbmRpZgotCi0jIFdlIHNldCBHUEFUSCBoZXJlOyB0aGlzIGdpdmVzIHVzIHNlbWFudGljcyBmb3IgR05VIG1ha2UKLSMgd2hpY2ggYXJlIG1vcmUgbGlrZSBvdGhlciBtYWtlJ3MgVlBBVEgsIHdoZW4gaXQgY29tZXMgdG8KLSMgd2hldGhlciBhIHNvdXJjZSB0aGF0IGlzIGEgdGFyZ2V0IG9mIG9uZSBydWxlIGlzIHRoZW4KLSMgc2VhcmNoZWQgZm9yIGluIFZQQVRIL0dQQVRILgotIwotR1BBVEggPSAkKHNyY2RpcikKLQotVEFSR0VUX0RJUj0kKEhUTUxfRElSKS8kKERPQ19NT0RVTEUpCi0KLUVYVFJBX0RJU1QgPSAJCQkJXAotCSQoY29udGVudF9maWxlcykJCVwKLQkkKEhUTUxfSU1BR0VTKQkJCVwKLQkkKERPQ19NQUlOX1NHTUxfRklMRSkJCVwKLQkkKERPQ19NT0RVTEUpLXNlY3Rpb25zLnR4dAlcCi0JJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0Ci0KLURPQ19TVEFNUFM9c2Nhbi1idWlsZC5zdGFtcCB0bXBsLWJ1aWxkLnN0YW1wIHNnbWwtYnVpbGQuc3RhbXAgaHRtbC1idWlsZC5zdGFtcCBcCi0JICAgJChzcmNkaXIpL3RtcGwuc3RhbXAgJChzcmNkaXIpL3NnbWwuc3RhbXAgJChzcmNkaXIpL2h0bWwuc3RhbXAKLQotU0NBTk9CSl9GSUxFUyA9IAkJIFwKLQkkKERPQ19NT0RVTEUpLmFyZ3MgCSBcCi0JJChET0NfTU9EVUxFKS5oaWVyYXJjaHkgIFwKLQkkKERPQ19NT0RVTEUpLmludGVyZmFjZXMgXAotCSQoRE9DX01PRFVMRSkucHJlcmVxdWlzaXRlcyBcCi0JJChET0NfTU9EVUxFKS5zaWduYWxzCi0KLVJFUE9SVF9GSUxFUyA9IFwKLQkkKERPQ19NT0RVTEUpLXVuZG9jdW1lbnRlZC50eHQgXAotCSQoRE9DX01PRFVMRSktdW5kZWNsYXJlZC50eHQgXAotCSQoRE9DX01PRFVMRSktdW51c2VkLnR4dAotCi1DTEVBTkZJTEVTID0gJChTQ0FOT0JKX0ZJTEVTKSAkKFJFUE9SVF9GSUxFUykgJChET0NfU1RBTVBTKQotCi1pZiBFTkFCTEVfR1RLX0RPQwotYWxsLWxvY2FsOiBodG1sLWJ1aWxkLnN0YW1wCi1lbHNlCi1hbGwtbG9jYWw6Ci1lbmRpZgotCi1kb2NzOiBodG1sLWJ1aWxkLnN0YW1wCi0KLSMjIyMgc2NhbiAjIyMjCi0KLXNjYW4tYnVpbGQuc3RhbXA6ICQoSEZJTEVfR0xPQikgJChDRklMRV9HTE9CKQotCUBlY2hvICdndGstZG9jOiBTY2FubmluZyBoZWFkZXIgZmlsZXMnCi0JQC1jaG1vZCAtUiB1K3cgJChzcmNkaXIpCi0JY2QgJChzcmNkaXIpICYmIFwKLQkgIGd0a2RvYy1zY2FuIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgLS1zb3VyY2UtZGlyPSQoRE9DX1NPVVJDRV9ESVIpIC0taWdub3JlLWhlYWRlcnM9IiQoSUdOT1JFX0hGSUxFUykiICQoU0NBTl9PUFRJT05TKSAkKEVYVFJBX0hGSUxFUykKLQlpZiBncmVwIC1sICdeLi4qJCQnICQoc3JjZGlyKS8kKERPQ19NT0RVTEUpLnR5cGVzID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuIFwKLQkgICAgQ0M9IiQoR1RLRE9DX0NDKSIgTEQ9IiQoR1RLRE9DX0xEKSIgQ0ZMQUdTPSIkKEdUS0RPQ19DRkxBR1MpIiBMREZMQUdTPSIkKEdUS0RPQ19MSUJTKSIgZ3RrZG9jLXNjYW5nb2JqICQoU0NBTkdPQkpfT1BUSU9OUykgLS1tb2R1bGU9JChET0NfTU9EVUxFKSAtLW91dHB1dC1kaXI9JChzcmNkaXIpIDsgXAotCWVsc2UgXAotCSAgICBjZCAkKHNyY2RpcikgOyBcCi0JICAgIGZvciBpIGluICQoU0NBTk9CSl9GSUxFUykgOyBkbyBcCi0gICAgICAgICAgICAgICB0ZXN0IC1mICQkaSB8fCB0b3VjaCAkJGkgOyBcCi0JICAgIGRvbmUgXAotCWZpCi0JdG91Y2ggc2Nhbi1idWlsZC5zdGFtcAotCi0kKERPQ19NT0RVTEUpLWRlY2wudHh0ICQoU0NBTk9CSl9GSUxFUykgJChET0NfTU9EVUxFKS1zZWN0aW9ucy50eHQgJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0OiBzY2FuLWJ1aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyB0ZW1wbGF0ZXMgIyMjIwotCi10bXBsLWJ1aWxkLnN0YW1wOiAkKERPQ19NT0RVTEUpLWRlY2wudHh0ICQoU0NBTk9CSl9GSUxFUykgJChET0NfTU9EVUxFKS1zZWN0aW9ucy50eHQgJChET0NfTU9EVUxFKS1vdmVycmlkZXMudHh0Ci0JQGVjaG8gJ2d0ay1kb2M6IFJlYnVpbGRpbmcgdGVtcGxhdGUgZmlsZXMnCi0JQC1jaG1vZCAtUiB1K3cgJChzcmNkaXIpCi0JY2QgJChzcmNkaXIpICYmIGd0a2RvYy1ta3RtcGwgLS1tb2R1bGU9JChET0NfTU9EVUxFKSAkKE1LVE1QTF9PUFRJT05TKQotCXRvdWNoIHRtcGwtYnVpbGQuc3RhbXAKLQotdG1wbC5zdGFtcDogdG1wbC1idWlsZC5zdGFtcAotCUB0cnVlCi0KLXRtcGwvKi5zZ21sOgotCUB0cnVlCi0KLQotIyMjIyB4bWwgIyMjIwotCi1zZ21sLWJ1aWxkLnN0YW1wOiB0bXBsLnN0YW1wICQoSEZJTEVfR0xPQikgJChDRklMRV9HTE9CKSAkKERPQ19NT0RVTEUpLXNlY3Rpb25zLnR4dCAkKHNyY2RpcikvdG1wbC8qLnNnbWwgJChleHBhbmRfY29udGVudF9maWxlcykKLQlAZWNobyAnZ3RrLWRvYzogQnVpbGRpbmcgWE1MJwotCUAtY2htb2QgLVIgdSt3ICQoc3JjZGlyKQotCWNkICQoc3JjZGlyKSAmJiBcCi0JZ3RrZG9jLW1rZGIgLS1tb2R1bGU9JChET0NfTU9EVUxFKSAtLXNvdXJjZS1kaXI9JChET0NfU09VUkNFX0RJUikgLS1vdXRwdXQtZm9ybWF0PXhtbCAtLWV4cGFuZC1jb250ZW50LWZpbGVzPSIkKGV4cGFuZF9jb250ZW50X2ZpbGVzKSIgLS1tYWluLXNnbWwtZmlsZT0kKERPQ19NQUlOX1NHTUxfRklMRSkgJChNS0RCX09QVElPTlMpCi0JdG91Y2ggc2dtbC1idWlsZC5zdGFtcAotCi1zZ21sLnN0YW1wOiBzZ21sLWJ1aWxkLnN0YW1wCi0JQHRydWUKLQotIyMjIyBodG1sICMjIyMKLQotaHRtbC1idWlsZC5zdGFtcDogc2dtbC5zdGFtcCAkKERPQ19NQUlOX1NHTUxfRklMRSkgJChjb250ZW50X2ZpbGVzKQotCUBlY2hvICdndGstZG9jOiBCdWlsZGluZyBIVE1MJwotCUAtY2htb2QgLVIgdSt3ICQoc3JjZGlyKQotCXJtIC1yZiAkKHNyY2RpcikvaHRtbAotCW1rZGlyICQoc3JjZGlyKS9odG1sCi0JY2QgJChzcmNkaXIpL2h0bWwgJiYgZ3RrZG9jLW1raHRtbCAkKERPQ19NT0RVTEUpIC4uLyQoRE9DX01BSU5fU0dNTF9GSUxFKQotCXRlc3QgIngkKEhUTUxfSU1BR0VTKSIgPSAieCIgfHwgKCBjZCAkKHNyY2RpcikgJiYgY3AgJChIVE1MX0lNQUdFUykgaHRtbCApCi0JQGVjaG8gJ2d0ay1kb2M6IEZpeGluZyBjcm9zcy1yZWZlcmVuY2VzJwotCWNkICQoc3JjZGlyKSAmJiBndGtkb2MtZml4eHJlZiAtLW1vZHVsZS1kaXI9aHRtbCAtLWh0bWwtZGlyPSQoSFRNTF9ESVIpICQoRklYWFJFRl9PUFRJT05TKQotCXRvdWNoIGh0bWwtYnVpbGQuc3RhbXAKLQotIyMjIyMjIyMjIyMjIyMKLQotY2xlYW4tbG9jYWw6Ci0Jcm0gLWYgKn4gKi5iYWsKLQlybSAtcmYgLmxpYnMKLQotZGlzdGNsZWFuLWxvY2FsOgotCWNkICQoc3JjZGlyKSAmJiBcCi0JICBybSAtcmYgeG1sICQoUkVQT1JUX0ZJTEVTKSBcCi0JICAgICAgICAgJChET0NfTU9EVUxFKS1kZWNsLWxpc3QudHh0ICQoRE9DX01PRFVMRSktZGVjbC50eHQKLQotbWFpbnRhaW5lci1jbGVhbi1sb2NhbDogY2xlYW4KLQljZCAkKHNyY2RpcikgJiYgcm0gLXJmIHhtbCBodG1sCi0KLWluc3RhbGwtZGF0YS1sb2NhbDoKLQktaW5zdGFsbGZpbGVzPWBlY2hvICQoc3JjZGlyKS9odG1sLypgOyBcCi0JaWYgdGVzdCAiJCRpbnN0YWxsZmlsZXMiID0gJyQoc3JjZGlyKS9odG1sLyonOyBcCi0JdGhlbiBlY2hvICctLSBOb3RoaW5nIHRvIGluc3RhbGwnIDsgXAotCWVsc2UgXAotCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChUQVJHRVRfRElSKTsgXAotCSAgZm9yIGkgaW4gJCRpbnN0YWxsZmlsZXM7IGRvIFwKLQkgICAgZWNobyAnLS0gSW5zdGFsbGluZyAnJCRpIDsgXAotCSAgICAkKElOU1RBTExfREFUQSkgJCRpICQoREVTVERJUikkKFRBUkdFVF9ESVIpOyBcCi0JICBkb25lOyBcCi0JICBlY2hvICctLSBJbnN0YWxsaW5nICQoc3JjZGlyKS9odG1sL2luZGV4LnNnbWwnIDsgXAotCSAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9odG1sL2luZGV4LnNnbWwgJChERVNURElSKSQoVEFSR0VUX0RJUikgfHwgOjsgXAotCSAgd2hpY2ggZ3RrZG9jLXJlYmFzZSA+L2Rldi9udWxsICYmIFwKLQkgICAgZ3RrZG9jLXJlYmFzZSAtLXJlbGF0aXZlIC0tZGVzdC1kaXI9JChERVNURElSKSAtLWh0bWwtZGlyPSQoREVTVERJUikkKFRBUkdFVF9ESVIpIDsgXAotCWZpCi0JCi0KLXVuaW5zdGFsbC1sb2NhbDoKLQlybSAtZiAkKERFU1RESVIpJChUQVJHRVRfRElSKS8qCi0KLSMKLSMgUmVxdWlyZSBndGstZG9jIHdoZW4gbWFraW5nIGRpc3QKLSMKLWlmIEVOQUJMRV9HVEtfRE9DCi1kaXN0LWNoZWNrLWd0a2RvYzoKLWVsc2UKLWRpc3QtY2hlY2stZ3RrZG9jOgotCUBlY2hvICIqKiogZ3RrLWRvYyBtdXN0IGJlIGluc3RhbGxlZCBhbmQgZW5hYmxlZCBpbiBvcmRlciB0byBtYWtlIGRpc3QiCi0JQGZhbHNlCi1lbmRpZgotCi1kaXN0LWhvb2s6IGRpc3QtY2hlY2stZ3RrZG9jIGRpc3QtaG9vay1sb2NhbAotCW1rZGlyICQoZGlzdGRpcikvdG1wbAotCW1rZGlyICQoZGlzdGRpcikveG1sCi0JbWtkaXIgJChkaXN0ZGlyKS9odG1sCi0JLWNwICQoc3JjZGlyKS90bXBsLyouc2dtbCAkKGRpc3RkaXIpL3RtcGwKLQktY3AgJChzcmNkaXIpL3htbC8qLnhtbCAkKGRpc3RkaXIpL3htbAotCWNwICQoc3JjZGlyKS9odG1sLyogJChkaXN0ZGlyKS9odG1sCi0JLWNwICQoc3JjZGlyKS8kKERPQ19NT0RVTEUpLnR5cGVzICQoZGlzdGRpcikvCi0JLWNwICQoc3JjZGlyKS8kKERPQ19NT0RVTEUpLXNlY3Rpb25zLnR4dCAkKGRpc3RkaXIpLwotCWNkICQoZGlzdGRpcikgJiYgcm0gLWYgJChESVNUQ0xFQU5GSUxFUykKLQktZ3RrZG9jLXJlYmFzZSAtLW9ubGluZSAtLXJlbGF0aXZlIC0taHRtbC1kaXI9JChkaXN0ZGlyKS9odG1sCi0KLS5QSE9OWSA6IGRpc3QtaG9vay1sb2NhbCBkb2NzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ib25vYm8vbGliYm9ub2JvLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Jvbm9iby9saWJib25vYm8uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDc1OWE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Jvbm9iby9saWJib25vYm8uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQm9ub2JvIENPUkJBIGludGVyZmFjZXMgbGlicmFyeSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKLVNFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCi1ERVBFTkRTID0gImdub21lLWNvbW1vbi1uYXRpdmUgZ2xpYi0yLjAgb3JiaXQyLW5hdGl2ZSBvcmJpdDIgaW50bHRvb2wtbmF0aXZlIGxpYnhtbDIgZGJ1cyBkYnVzLWdsaWIiCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgbGliX3BhY2thZ2UKLQotRVhUUkFfT0VDT05GICs9ICInUEVSTF9QQVRIPSR7VVNSQklOUEFUSH0vZW52IHBlcmwnIgotT1JCSVRfSURMX1NSQyA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vb3JiaXQtaWRsLTIiCi0KLVJERVBFTkRTXyR7UE59LWJpbiA9ICIke1BOfSBwZXJsIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9vcmJpdC0yLjAvKi5zbyAke2xpYmRpcn0vYm9ub2JvL21vbmlrZXJzLyouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9ib25vYm8vbW9uaWtlcnMvLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vYm9ub2JvLTIuMC9zYW1wbGVzLy5kZWJ1ZyAke2xpYmRpcn0vb3JiaXQtMi4wLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L29yYml0LTIuMC8qLmxhICR7bGliZGlyfS9ib25vYm8vbW9uaWtlcnMvKi5sYSAke2xpYmRpcn0vYm9ub2JvLTIuMC9zYW1wbGVzIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vb3JiaXQtMi4wLyouYSAke2xpYmRpcn0vYm9ub2JvL21vbmlrZXJzLyouYSIKLQotTEVBRF9TT05BTUUgPSAibGliYm9ub2JvLTIuc28iCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1kb19jb21waWxlKCkgewotICAgIG9lX3J1bm1ha2UgT1JCSVRfSURMPSIke09SQklUX0lETF9TUkN9IgotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgT1JCSVRfSURMPSIke09SQklUX0lETF9TUkN9IiBERVNURElSPSIke0R9IiBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ib25vYm8vbGliYm9ub2JvLzAwMDEtUmVtb3ZlLXVzZS1vZi1HX0RJU0FCTEVfREVQUkVDQVRFRC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Jvbm9iby9saWJib25vYm8vMDAwMS1SZW1vdmUtdXNlLW9mLUdfRElTQUJMRV9ERVBSRUNBVEVELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGNmMWY5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Jvbm9iby9saWJib25vYm8vMDAwMS1SZW1vdmUtdXNlLW9mLUdfRElTQUJMRV9ERVBSRUNBVEVELnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSBmZWYxM2EzNzFmYzkxZjZkOWI0MjUxODEyNmMyYThiNDU5ZmRmMGU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ29saW4gV2FsdGVycyA8d2FsdGVyc0B2ZXJidW0ub3JnPgotRGF0ZTogVGh1LCAyIE1heSAyMDEzIDE0OjE3OjM4IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB1c2Ugb2YgR19ESVNBQkxFX0RFUFJFQ0FURUQKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVGhpcyBub3cgdHJpcHMgdXAgb24gR1N0YXRpY1JlY011dGV4OyBJJ20gbm90IGdvaW5nIHRvIGJvdGhlciB0byBwb3J0LAotcmVhbGlzdGljYWxseSBubyBvbmUgaXMgYWN0aXZlbHkgbWFpbnRhaW5pbmcgdGhpcyBjb2RlIGFueW1vcmUuCi0KLVVwc3RyZWFtLVN0YXR1czogQXBwbGllZAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBhY3RpdmF0aW9uLXNlcnZlci9NYWtlZmlsZS5hbSB8ICAgIDEgLQotIGNvbmZpZ3VyZS5pbiAgICAgICAgICAgICAgICAgIHwgICAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYWN0aXZhdGlvbi1zZXJ2ZXIvTWFrZWZpbGUuYW0gYi9hY3RpdmF0aW9uLXNlcnZlci9NYWtlZmlsZS5hbQotaW5kZXggZWZiMThhOC4uZmZhOTBmNiAxMDA2NDQKLS0tLSBhL2FjdGl2YXRpb24tc2VydmVyL01ha2VmaWxlLmFtCi0rKysgYi9hY3RpdmF0aW9uLXNlcnZlci9NYWtlZmlsZS5hbQotQEAgLTE3LDcgKzE3LDYgQEAgSU5DTFVERVM9CQkJCQlcCi0gCSQoU0VSVkVSX0NGTEFHUykJCQlcCi0gCSQoV0FSTl9DRkxBR1MpCQkJCVwKLSAJLURTRVJWRVJfQ09ORkRJUj1cIiQoc3lzY29uZmRpcilcIglcCi0tCS1ER19ESVNBQkxFX0RFUFJFQ0FURUQJCQlcCi0gCS1ER19MT0dfRE9NQUlOPVwiQm9ub2JvLUFjdGl2YXRpb24tU2VydmVyXCIgXAotIAkkKE5VTEwpCi0gCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA3MGE0ZTI2Li42YmUyYmNhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0xMzIsNyArMTMyLDcgQEAgQUNfU1VCU1QoU0VSVkVSX0xJQlMpCi0gQUNfU1VCU1QoU0VSVkVSX0NGTEFHUykKLSAKLSBpZiB0ZXN0ICIkZW5hYmxlX21haW50YWluZXJfbW9kZSIgPSAieWVzIjsgdGhlbgotLQlESVNBQkxFX0RFUFJFQ0FURURfQ0ZMQUdTPSItREdfRElTQUJMRV9ERVBSRUNBVEVEIC1ER19ESVNBQkxFX1NJTkdMRV9JTkNMVURFUyIKLSsJRElTQUJMRV9ERVBSRUNBVEVEX0NGTEFHUz0iLURHX0RJU0FCTEVfU0lOR0xFX0lOQ0xVREVTIgotIAlBQ19TVUJTVChESVNBQkxFX0RFUFJFQ0FURURfQ0ZMQUdTKQotIGZpCi0gCi0tLSAKLTEuNy42LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYm9ub2JvL2xpYmJvbm9iby9kby1ub3QtdXNlLXNyY2Rpci12YXJpYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Jvbm9iby9saWJib25vYm8vZG8tbm90LXVzZS1zcmNkaXItdmFyaWFibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMGVkZGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYm9ub2JvL2xpYmJvbm9iby9kby1ub3QtdXNlLXNyY2Rpci12YXJpYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLXwgdGVzdHMvTWFrZWZpbGUuYW06NTU6IGVycm9yOiB1c2luZyAnJChzcmNkaXIpJyBpbiBURVNUUyBpcyBjdXJyZW50bHkgYnJva2VuOiAnJChzcmNkaXIpL3RlCi1zdC1wcm9wZXJ0aWVzLnNoJwotfCB0ZXN0cy90ZXN0LWFjdGl2YXRpb24vTWFrZWZpbGUuYW06NzY6IHdhcm5pbmc6ICdJTkNMVURFUycgaXMgdGhlIG9sZCBuYW1lIGZvciAnQU1fQ1BQRkxBR1MKLScgKG9yICcqX0NQUEZMQUdTJykKLXwgdXRpbHMvTWFrZWZpbGUuYW06OTogd2FybmluZzogJ0lOQ0xVREVTJyBpcyB0aGUgb2xkIG5hbWUgZm9yICdBTV9DUFBGTEFHUycgKG9yICcqX0NQUEZMQUdTCi0nKQotfCBhdXRvcmVjb25mOiBhdXRvbWFrZSBmYWlsZWQgd2l0aCBleGl0IHN0YXR1czogMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBOb3QgU3VibWl0dGVkCi0KLUluZGV4OiBsaWJib25vYm8tMi4zMi4xL3Rlc3RzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliYm9ub2JvLTIuMzIuMS5vcmlnL3Rlc3RzL01ha2VmaWxlLmFtCTIwMTAtMDgtMjkgMDQ6NTY6MDAuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliYm9ub2JvLTIuMzIuMS90ZXN0cy9NYWtlZmlsZS5hbQkyMDE0LTA0LTI1IDE1OjM4OjIyLjAyNDc0NDM4NCAtMDcwMAotQEAgLTU1LDcgKzU1LDcgQEAKLSAJTU9ERUxTX0RJUj0iJChzcmNkaXIpL21vZGVscyIKLSAKLSBURVNUUyA9IHRlc3QtbW9uaWtlciQoRVhFRVhUKSB0ZXN0LWV2ZW50LXNvdXJjZSQoRVhFRVhUKSB0ZXN0LW9iamVjdCQoRVhFRVhUKSBcCi0tCXRlc3Qtc3RyZWFtLW1lbSQoRVhFRVhUKSAkKHNyY2RpcikvdGVzdC1wcm9wZXJ0aWVzLnNoIHRlc3Qtc3RvcmFnZS1tZW0kKEVYRUVYVCkgXAotKwl0ZXN0LXN0cmVhbS1tZW0kKEVYRUVYVCkgdGVzdC1wcm9wZXJ0aWVzLnNoIHRlc3Qtc3RvcmFnZS1tZW0kKEVYRUVYVCkgXAotIAl0ZXN0LW1haW4tbG9vcCQoRVhFRVhUKQotIAotICMgVEVTVFMgKz0gdGVzdC1nZW5lcmljLWZhY3Rvcnkuc2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Jvbm9iby9saWJib25vYm8vZml4LW5vbmxpdGVyYWwtaW4tc3RyaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYm9ub2JvL2xpYmJvbm9iby9maXgtbm9ubGl0ZXJhbC1pbi1zdHJpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZGI2NzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYm9ub2JvL2xpYmJvbm9iby9maXgtbm9ubGl0ZXJhbC1pbi1zdHJpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1UaGlzIGNoZWNrcyB3aGV0aGVyIHRoZSBmb3JtYXQgc3RyaW5nIGlzIGEgbGl0ZXJhbCBvbiB0aGUgY2FsbGluZyBmdW5jdGlvbi4gQXMgYm9ub2JvX2RlYnVnX3ByaW50KCkKLXRha2VzIGFscmVhZHkgYSB2YV9saXN0LCB3ZSBzcGVjaWZ5IHRoZSBmb3JtYXQgb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQKLVRoZSBzZWNvbmQgbnVtYmVyLCB3aGljaCBpcyAwIGhlcmUsIHNob3VsZCB0aGVuIGJlIHRoZSBhcmd1bWVudCBpbmRleCBvZiB0aGUgdmFyaWFkaWMgYXJndW1lbnQKLQotRml4ZWQgd2FybmluZyB3aXRoIGNsYW5nCi0KLXwgLi4vLi4vbGliYm9ub2JvLTIuMzIuMS9ib25vYm8vYm9ub2JvLWRlYnVnLmM6NTg6MzI6IGVycm9yOiBmb3JtYXQgc3RyaW5nIGlzIG5vdCBhIHN0cmluZyBsaXRlcmFsIFstV2Vycm9yLC1XZm9ybWF0LW5vbmxpdGVyYWxdCi18ICAgICAgICAgdmZwcmludGYgKF9ib25vYm9fZGVidWdfZmlsZSwgZm10LCBhcmdzKTsKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn4KLXwgMSBlcnJvciBnZW5lcmF0ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotSW5kZXg6IGxpYmJvbm9iby0yLjMyLjEvYm9ub2JvL2Jvbm9iby1kZWJ1Zy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliYm9ub2JvLTIuMzIuMS5vcmlnL2Jvbm9iby9ib25vYm8tZGVidWcuYwotKysrIGxpYmJvbm9iby0yLjMyLjEvYm9ub2JvL2Jvbm9iby1kZWJ1Zy5jCi1AQCAtNDcsNiArNDcsNyBAQCBib25vYm9fZGVidWdfaW5pdCh2b2lkKQotIAkgIF9ib25vYm9fZGVidWdfZmlsZSA9IHN0ZGVycjsKLSB9Ci0gCi0rX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAocHJpbnRmLCAyLCAwKSkpCi0gdm9pZAotIGJvbm9ib19kZWJ1Z19wcmludCAoY29uc3QgY2hhciAqbmFtZSwgY2hhciAqZm10LCAuLi4pCi0gewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYm9ub2JvL2xpYmJvbm9ib18yLjMyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ib25vYm8vbGliYm9ub2JvXzIuMzIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUwMGViNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ib25vYm8vbGliYm9ub2JvXzIuMzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotcmVxdWlyZSBsaWJib25vYm8uaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVJlbW92ZS11c2Utb2YtR19ESVNBQkxFX0RFUFJFQ0FURUQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RvLW5vdC11c2Utc3JjZGlyLXZhcmlhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtbm9ubGl0ZXJhbC1pbi1zdHJpbmcucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIyN2ZhOTAyZDRmZGY2NzYyZWUwMTBlNzA1M2FhZjc3YiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjkxNjBkNGYyNzc2NDY0MDBkM2JiNmI0ZmE3MzYzNmNjNmQxYTg2NWEzMmI5ZDA3NjBlMWU5ZTZlZTYyNDk3NmIiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ib25vYm8vbGliYm9ub2JvdWlfMi4yNC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYm9ub2JvL2xpYmJvbm9ib3VpXzIuMjQuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNjYTBhNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ib25vYm8vbGliYm9ub2JvdWlfMi4yNC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKLQotaW5oZXJpdCBnbm9tZWJhc2UgcGtnY29uZmlnIGd0ay1kb2MKLQotU1JDX1VSSSArPSAiZmlsZTovL2djYzUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtYm9ub2JvLXVpLW5vZGUtcXVhbGlmeS1mdW5jdGlvbnMtd2l0aC1HX0dOVUNfUFJJTlRGLnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiODUzYmU4ZTI4YWFhNGNlNDhiYTYwYmU3ZDkwNDZiZjQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmYWI1ZjJhYzZjODQyZDk0OTg2MWMwN2NiNTIwYWZlNWJlZTNkY2U1NTgwNTE1MWNlOWNkMDFiZTBlYzQ2ZmNkIgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1ERVBFTkRTID0gImxpYmdub21lY2FudmFzIGxpYmJvbm9ibyBsaWJnbm9tZSBnbGliLTIuMCBnY29uZiBsaWJ4bWwyIGxpYmdsYWRlIGdub21lLWNvbW1vbiBpbnRsdG9vbC1uYXRpdmUiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGliZ2xhZGUvMi4wLyouc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJnbGFkZS8yLjAvKi5sYSAke2RhdGFkaXJ9L2dub21lLTIuMC91aSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ib25vYm8tMi4wL3NhbXBsZXMiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9saWJnbGFkZS8yLjAvKi5hIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vYm9ub2JvLTIuMC9zYW1wbGVzLy5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJnbGFkZS8yLjAvLmRlYnVnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZGV2aWxzcGllL2Rldmlsc3BpZTJfMC40Mi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Rldmlsc3BpZS9kZXZpbHNwaWUyXzAuNDIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMmVjNWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZGV2aWxzcGllL2Rldmlsc3BpZTJfMC40Mi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkRldmlsc3BpZTIgaXMgYSB3aW5kb3cgbWF0Y2hpbmcgdXRpbGl0eSwgYWxsb3dpbmcgdGhlIHVzZXIgdG8gcGVyZm9ybSBzY3JpcHRlZCBhY3Rpb25zIG9uIHdpbmRvd3MgYXMgdGhleSBhcmUgY3JlYXRlZCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3VzbmFuLnNlL2Rldmlsc3BpZTIiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDBhZWZhYTUwYWFkNzVjMjEzNjdkZjY2MTAyZDU0MmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vR1BMMy50eHQ7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1ERVBFTkRTID0gImd0aysgZ2xpYi0yLjAgbGlid25jayBsdWEgdmlydHVhbC9saWJ4MTEiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZG93bmxvYWQuc2F2YW5uYWguZ251Lm9yZy9yZWxlYXNlcy8ke0JQTn0vJHtCUE59XyR7UFZ9LXNyYy50YXIuZ3ogXAotICAgIGZpbGU6Ly9kZWZhdWx0Lmx1YSBcCi0gICAgZmlsZTovL2Rldmlsc3BpZTIuZGVza3RvcCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZjIwNTQwOWU5MjFhYTJkODY0ODFmMWI4ZDUxOGRhNDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTFmNWJjMzEwZmJhNGRmNDA0YzA1NzQ2MWZmYjNmYWRhYzhlZjUxZDIxMTAwOGM2NjVjNDhmNTg3YTVhM2Y4NSIKLQotaW5oZXJpdCBwa2djb25maWcgZ2V0dGV4dAotCi1kb19jb21waWxlKCkgewotICAgIGV4cG9ydCBHVEsyPTEKLSAgICBvZV9ydW5tYWtlIENDPSIke0NDfSIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IiBMREZMQUdTPSIgLWxkbCAtbG0gJHtMREZMQUdTfSIKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIFBSRUZJWD0iJHtwcmVmaXh9IiBpbnN0YWxsCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGV2aWxzcGllMgotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZGVmYXVsdC5sdWEgJHtEfS8ke3N5c2NvbmZkaXJ9L2Rldmlsc3BpZTIKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS94ZGcvYXV0b3N0YXJ0Ci0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9kZXZpbHNwaWUyLmRlc2t0b3AgJHtEfS8ke3N5c2NvbmZkaXJ9L3hkZy9hdXRvc3RhcnQKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Rldmlsc3BpZS9kZXZpbHNwaWUyXzAuNDMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9kZXZpbHNwaWUvZGV2aWxzcGllMl8wLjQzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlZjhlOGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9kZXZpbHNwaWUvZGV2aWxzcGllMl8wLjQzLmJiCkBAIC0wLDAgKzEsMzIgQEAKK0RFU0NSSVBUSU9OID0gIkRldmlsc3BpZTIgaXMgYSB3aW5kb3cgbWF0Y2hpbmcgdXRpbGl0eSwgYWxsb3dpbmcgdGhlIHVzZXIgdG8gcGVyZm9ybSBzY3JpcHRlZCBhY3Rpb25zIG9uIHdpbmRvd3MgYXMgdGhleSBhcmUgY3JlYXRlZCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3VzbmFuLnNlL2Rldmlsc3BpZTIiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDBhZWZhYTUwYWFkNzVjMjEzNjdkZjY2MTAyZDU0MmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vR1BMMy50eHQ7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitERVBFTkRTID0gImd0aysgZ2xpYi0yLjAgbGlid25jayBsdWEgdmlydHVhbC9saWJ4MTEiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZG93bmxvYWQuc2F2YW5uYWguZ251Lm9yZy9yZWxlYXNlcy8ke0JQTn0vJHtCUE59XyR7UFZ9LXNyYy50YXIuZ3ogXAorICAgIGZpbGU6Ly9kZWZhdWx0Lmx1YSBcCisgICAgZmlsZTovL2Rldmlsc3BpZTIuZGVza3RvcCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMjZlZWQwYjViNGFmNWM3ZTEzYzU1MWVjZWFlYWI4MzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWNmZmMxN2M2MmI0MWUxOTZiNzIzNDAxOTJhOTBjNDIyMzMyOWRmMDQxZjEzNWU3NGMwOTkwODYwNTk1ZjgyOCIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgcGtnY29uZmlnIGdldHRleHQKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworZG9fY29tcGlsZSgpIHsKKyAgICBleHBvcnQgR1RLMj0xCisgICAgb2VfcnVubWFrZSBDQz0iJHtDQ30iIENQUEZMQUdTPSIke0NQUEZMQUdTfSIgTERGTEFHUz0iIC1sZGwgLWxtICR7TERGTEFHU30iCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBQUkVGSVg9IiR7cHJlZml4fSIgaW5zdGFsbAorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2Rldmlsc3BpZTIKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2RlZmF1bHQubHVhICR7RH0vJHtzeXNjb25mZGlyfS9kZXZpbHNwaWUyCisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0veGRnL2F1dG9zdGFydAorICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZGV2aWxzcGllMi5kZXNrdG9wICR7RH0vJHtzeXNjb25mZGlyfS94ZGcvYXV0b3N0YXJ0Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9kZXZpbHNwaWUvZmlsZXMvZGV2aWxzcGllMi5kZXNrdG9wIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZGV2aWxzcGllL2ZpbGVzL2Rldmlsc3BpZTIuZGVza3RvcAppbmRleCBlMzRlODgxLi5iODA5MDRhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9kZXZpbHNwaWUvZmlsZXMvZGV2aWxzcGllMi5kZXNrdG9wCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Rldmlsc3BpZS9maWxlcy9kZXZpbHNwaWUyLmRlc2t0b3AKQEAgLTEsNSArMSw2IEBACiBbRGVza3RvcCBFbnRyeV0KIFR5cGU9QXBwbGljYXRpb24KIE5hbWU9RGV2aWxzcGllMgorQ29tbWVudD1QZXJmb3JtIHNjcmlwdGVkIGFjdGlvbnMgb24gd2luZG93cyBhcyB0aGV5IGFyZSBjcmVhdGVkCiBFeGVjPWRldmlsc3BpZTIgLWYgL2V0Yy9kZXZpbHNwaWUyCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvMDAwMS1DTWFrZUxpc3RzLnR4dC1SZW1vdmUtVFJZX1JVTi1mb3ItaWNvbnYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDEtQ01ha2VMaXN0cy50eHQtUmVtb3ZlLVRSWV9SVU4tZm9yLWljb252LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MjFhMTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDEtQ01ha2VMaXN0cy50eHQtUmVtb3ZlLVRSWV9SVU4tZm9yLWljb252LnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gMTMxYjg4YTgxYWJhM2Q3MmQ1NjZiYzhhOWQ5Njg5NDFhOThlMDAwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE5IERlYyAyMDE3IDE2OjM3OjIwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIENNYWtlTGlzdHMudHh0OiBSZW1vdmUgVFJZX1JVTiBmb3IgaWNvbnYKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworfCBDTWFrZSBFcnJvcjogVFJZX1JVTigpIGludm9rZWQgaW4gY3Jvc3MtY29tcGlsaW5nIG1vZGUsIHBsZWFzZSBzZXQgdGhlIGZvbGxvd2luZyBjYWNoZSB2YXJpYWJsZXMgYXBwcm9wcmlhdGVseToKK3wgICAgX2NvcnJlY3RfaWNvbnZfRVhJVENPREUgKGFkdmFuY2VkKQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCA1IC0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCA4ZDA3NzcyLi5hMjM5NmYyIDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtNTIxLDEzICs1MjEsOCBAQCBpZihOT1QgSEFWRV9JQ09OVikKKyBlbmRpZihOT1QgSEFWRV9JQ09OVikKKyAKKyBzZXQoQ01BS0VfUkVRVUlSRURfTElCUkFSSUVTICR7SUNPTlZfTElCU30pCistQ0hFQ0tfQ19TT1VSQ0VfUlVOUygiI2luY2x1ZGUgXCIke0NNQUtFX1NPVVJDRV9ESVJ9L2ljb252LWRldGVjdC5jXCIiIF9jb3JyZWN0X2ljb252KQorIHVuc2V0KENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUykKKyAKKy1pZihOT1QgX2NvcnJlY3RfaWNvbnYpCistCW1lc3NhZ2UoRkFUQUxfRVJST1IgIllvdSBuZWVkIHRvIGluc3RhbGwgYSB3b3JraW5nIGljb252IGltcGxlbWVudGF0aW9uLCBzdWNoIGFzIGZ0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvbGliaWNvbnYiKQorLWVuZGlmKE5PVCBfY29ycmVjdF9pY29udikKKy0KKyAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICMgQmFja3RyYWNlcyBmb3IgZGVidWdnaW5nCisgIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tIAorMi4xNC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvMDAwMS1jb250YWN0LVJlcGxhY2UtdGhlLU5vdmVsbC1zYW1wbGUtY29udGFjdC13aXRoLXNvbWV0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDAxLWNvbnRhY3QtUmVwbGFjZS10aGUtTm92ZWxsLXNhbXBsZS1jb250YWN0LXdpdGgtc29tZXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3N2U3YjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDAxLWNvbnRhY3QtUmVwbGFjZS10aGUtTm92ZWxsLXNhbXBsZS1jb250YWN0LXdpdGgtc29tZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTUgKzAsMCBAQAotRnJvbSA0ZGY4YmQ4YWU0MjU4Mjg5NjYzYjI3YWYxMjA3MDI3YzdlZTA2MzQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogU3VuLCA0IEF1ZyAyMDEzIDA5OjEzOjI1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS81XSBjb250YWN0OiBSZXBsYWNlIHRoZSBOb3ZlbGwgc2FtcGxlIGNvbnRhY3Qgd2l0aCBzb21ldGhpbmcKLSBtb3JlIGFwcHJvcHJpYXRlCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIGFkZHJlc3Nib29rL2JhY2tlbmRzL2ZpbGUvTWFrZWZpbGUuYW0gICAgfCAgIDEgKwotIGFkZHJlc3Nib29rL2xpYmVkYXRhLWJvb2sveGltaWFuLXZjYXJkLmggfCAxNzkgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTAzIGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYWRkcmVzc2Jvb2svYmFja2VuZHMvZmlsZS9NYWtlZmlsZS5hbSBiL2FkZHJlc3Nib29rL2JhY2tlbmRzL2ZpbGUvTWFrZWZpbGUuYW0KLWluZGV4IDA4Y2Y1OGYuLjE3ZTcxNDkgMTAwNjQ0Ci0tLS0gYS9hZGRyZXNzYm9vay9iYWNrZW5kcy9maWxlL01ha2VmaWxlLmFtCi0rKysgYi9hZGRyZXNzYm9vay9iYWNrZW5kcy9maWxlL01ha2VmaWxlLmFtCi1AQCAtMiw2ICsyLDcgQEAgZWJvb2tfYmFja2VuZF9MVExJQlJBUklFUyA9IGxpYmVib29rYmFja2VuZGZpbGUubGEKLSAKLSBsaWJlYm9va2JhY2tlbmRmaWxlX2xhX0NQUEZMQUdTID0gXAotIAkkKEFNX0NQUEZMQUdTKQkJCQkJXAotKwktRENSRUFURV9ERUZBVUxUX1ZDQVJEIFwKLSAJLURHX0xPR19ET01BSU49XCJsaWJlYm9va2JhY2tlbmRcIgkJXAotIAktSSQodG9wX3NyY2RpcikJCQkJCVwKLSAJLUkkKHRvcF9idWlsZGRpcikJCQkJXAotZGlmZiAtLWdpdCBhL2FkZHJlc3Nib29rL2xpYmVkYXRhLWJvb2sveGltaWFuLXZjYXJkLmggYi9hZGRyZXNzYm9vay9saWJlZGF0YS1ib29rL3hpbWlhbi12Y2FyZC5oCi1pbmRleCA3ODJkMzdiLi41YjBiMjUwIDEwMDY0NAotLS0tIGEvYWRkcmVzc2Jvb2svbGliZWRhdGEtYm9vay94aW1pYW4tdmNhcmQuaAotKysrIGIvYWRkcmVzc2Jvb2svbGliZWRhdGEtYm9vay94aW1pYW4tdmNhcmQuaAotQEAgLTEsODAgKzEsMTA1IEBACi0gI2RlZmluZSBYSU1JQU5fVkNBUkQgXAotICJCRUdJTjpWQ0FSRFxuIiBcCi0tIlgtRVZPTFVUSU9OLUZJTEUtQVM6Tm92ZWxsIFhpbWlhbiBHcm91cFxuIiBcCi0tIkFEUjtUWVBFPVdPUks6O1N1aXRlIDUwMDs4IENhbWJyaWRnZSBDZW50ZXI7Q2FtYnJpZGdlO01BOzAyMTQyO1VTQVxuIiBcCi0tIkxBQkVMO1RZUEU9V09SSzo4IENhbWJyaWRnZSBDZW50ZXIsIFN1aXRlIDUwMFxcbkNhbWJyaWRnZVxcLCBNQVxcbjAyMTQyXFxuVVNBXG4iIFwKLS0iVEVMO1dPUks7Vk9JQ0U6KDYxNykgNjEzLTIwMDBcbiIgXAotLSJURUw7V09SSztGQVg6KDYxNykgNjEzLTIwMDFcbiIgXAotLSJFTUFJTDtJTlRFUk5FVDpoZWxsb0B4aW1pYW4uY29tXG4iIFwKLS0iVVJMOmh0dHA6Ly93d3cueGltaWFuLmNvbS9cbiIgXAotLSJPUkc6Tm92ZWxsO1hpbWlhbiBHcm91cFxuIiBcCi0tIlBIT1RPO0VOQ09ESU5HPWI7VFlQRT1KUEVHOi85ai80QUFRU2taSlJnQUJBUUVBUndCSEFBRC8vZ0FYUTNKbFlYUmxaQ0IzYVhSb1xuIiBcCi0tIiBJRlJvWlNCSFNVMVEvOXNBUXdBSUJnWUhCZ1VJQndjSENRa0lDZ3dVRFF3TEN3d1pFaE1QRkIwYUh4NGRHaHdjSUNRdUp5QWlMQ01cbiIgXAotLSIgY0hDZzNLU3d3TVRRME5COG5PVDA0TWp3dU16UXkvOXNBUXdFSkNRa01Dd3dZRFEwWU1pRWNJVEl5TWpJeU1qSXlNakl5TWpJeU1qXG4iIFwKLS0iIEl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXkvOEFBRVFnQWJnQmtBd0VpQUFJUkFRTVJBZi9FQVxuIiBcCi0tIiBCd0FBQUlEQVFFQkFRQUFBQUFBQUFBQUFBQUhCUVlJQkFNQkF2L0VBRVlRQUFFREF3RUZCZ01FQmdRUEFBQUFBQUVDQXdRQUJSRUdcbiIgXAotLSIgQnhJaE1XRVRJa0ZSY1lFVWthRUlNa0xCRlNOU3NiTFJGbUp5ZFJna016WTNRMFJHZ3BLVG9zTGg4UC9FQUJzQkFRQUNBd0VCQUFBXG4iIFwKLS0iIEFBQUFBQUFBQUFBQUVCUUlEQmdFSC84UUFMUkVBQVFNQ0F3WUdBZ01BQUFBQUFBQUFBUUFDQXdRUkVpRlJCUk1pTVVGaE1uR0JrYlxuIiBcCi0tIiBIUkJzRVVvZkQvMmdBTUF3RUFBaEVERVFBL0FIL1JSUlJFVndYZTlXMnd3RnpicE5aaXhrYzF1cXdQUWVaNkNvSFhldkxmb20xZHNcbiIgXAotLSIgOWg2YTZEOFBHQ3NGWkhNaytDUjRuODZ5emRicnFmYVpxWUJTbnAwaFJQWk1vRzYyeW5vT1NSMVB1YThMZzBYUEplZ1g1SnY2ayswXG4iIFwKLS0iIGJCanJXeHAyMkxsa2NCSWxIczBIcUVqaVI2NHBlVDl1bXVwcXlXcmhIaHBQNFdJNmVIdXJlTlc3VG13K0RHYVRJMUZKVkpkeGtzTVxuIiBcCi0tIiBxS0cwOUNybWZiRk1DSHBDdzJ4QVREczhKckg0Z3lrcStaNG1xaWZiTVVac3hwZC9RVWxsSzUzTTJTQ2IyeGErYlh2ZjBnY1YwVXdcbiIgXAotLSIgMFIvRFZrdEgyaGRVd2xwRnhqUXJnMTQ5MHRMUHVPSDBwdnYycUU0amRjaHgxcDhsTkFqOTFWYTg3T3RNM1JDdCsyTngzRHljaS9xXG4iIFwKLS0iIHlQWWNEN2cxRVorUlI0clNNSTliL1MybWhkYmhLc21rZHRXbU5UdU54blhWVzJjdmdHWlJBU28rU1Y4ajc0UFNtT2xRVU1wT1JXUFxuIiBcCi0tIiBOVTdNcmpZMHJsUUZtZERUeE9FNGNRT284UjFIeXFlMlo3WkoybTMyYlhmSG5KVnBKQ1V1cU84dVA3K0tlbmg0ZVZYa0ZSRlVNeHhcbiIgXAotLSIgRzRVT1NOMFpzNExVMUZlRU9XeE9pdHlZenFIV1hFaFNGb09Rb0hrUWE5NjNyQkZGRkZFUlVkZnIxRTA5WTVkMW1yM1k4WnNyVjVuXG4iIFwKLS0iIHlBNms0QTZtcEdrTDlvalV5bTBXL1RyTG1Bc0dVK0FlWUJ3Z2ZQSi80UlJFcXJyY2IxdEoxb1VwQlhMbU9icVVaN3JTQnlUMFNrWlxuIiBcCi0tIiBKOHprMXBIUW1pTFhvK3pwYmFiQzNTQXA1NVE3enl2TTlQSVV1ZGlHbVVSYlM3ZnBDTXZ6RkZ0b244TFNUeHg2cUgwRk03VlY5VllcbiIgXAotLSIgOU16WjdhUXQ1dEFTdzMrMjZvaEtCL3pFVlNWRlZ2WnpHTXcwMnRxZS9rcGJJOExNUjYvQy9YeHE5UWFnZmJiUCtJVzFRUTRSeWNmXG4iIFwKLS0iIHhuY0hSQUlKL3JFZnNtdTJhOUZnc2wyWElaanRqOGJxd2dmTTErOUwyVkZrc0VTQVY5bzZoRzg4NmVianFqdkxXZXBVU2FydXRkblxuIiBcCi0tIiBNWFYrb2JSY1prcy9Dd0NRNURLTXBlQk9UeHp3emdBOUt3ZlR0ZnhQT1NCNUdRVVhjOXBPam9DK3pYZTJIVjV4aU9DNlBta0VmV3BcbiIgXAotLSIgeGU2dEFXZ2hTVkRJSU9RUlh4ZWtOT3g0YjBXUFpZTExUcmFtMTltd2xKS1NNSGpqTlV6UWQyZFpNN1NOeGN6Y0xPc3R0cVZ6ZFl6XG4iIFwKLS0iIDNGZXdJOWlLcEsybWpNWmRGZTdlZDlOZlQ5cVpESTRPQWQxVmtrbzUwbmRvdWkyMmt1WHEyTkJPTzlKWlNPSDlzRDkvejg2YzhnY1xuIiBcCi0tIiBEVUpOUWxhRkpVa0tTb1lJSTRFVkdvS3A5UElIdDllNmx5Uk5sWmhjcWxzSjJndVFweWRMM0Y0bU83a3cxS1AzRmN5ajBQRWpybnpcbiIgXAotLSIgclNBSUl5T1ZZZnZzSjNUR3FsQ0twVGZZdUpmakxITURPUjhqdzlxMkZveStvMUZwV0Jja1kvWE1wVW9lUnh4SHNjaXUvamVKR0I3XG4iIFwKLS0iIGVSWFB2YVd1TFQwVS9SUlJXYXhRZVZZODJ4M0JWdzJvWGJKeWhnb1pSMEFRTS9VbXRoSys2ZlNzV2JSUVc5cFY3M3gvdFpQdHdORVxuIiBcCi0tIiBXajlOdzBXdXd3SUtRQUdJNkcvY0FaK3RSVzBseDVuVEVXNE50cWRhdDl4ank1Q0VqSkxTRlpQNUgycWFZZENrcFVrNUJHUWE3QXBcbiIgXAotLSIgRHJTbTNFcFdoWUtWSlVNZ2c4d1JYeitrcXl5VEc3VlhVc1YyMkNscmZjNDgrQ3pNaVBJZWp2SUMyM0VISVVEWE5lNzliN0hiWGJoXG4iIFwKLS0iIGM1U0k4WnZtdFo1bnlBNWs5QlM3ZDBuZmRNUHVTZEQzSnRFWmFpdGRvbTVVem54M0R6VDZjUFdrdnEvVjE2MTFmR1c1blp0QkNneVxuIiBcCi0tIiB6RmJYaHRDeWNFNUp4a254UGhYUjA3UlVlQjNEMTFIKzlsQWZ3Y3htcnJxTGJ4Y0hwaWtXR0F3MUZTY0J5VWtxV3ZyZ0VCUHB4cWlcbiIgXAotLSIgenRkWFdkcW1OcUlJang3Z3lrSlVwaEpDWEFNL2VCSjVnNFBRQ21CWk5pREtXRXUzNjR1RjBqSlloNEFUNnFVRG4yRlZ1NmJQSWtUXG4iIFwKLS0iIGFUQjA4eEtlTU9VMkg5OWVDdEtSdlpHUU1aN2h3Y2VOWnhWR3pzYm1NeklCdjVkZk5lT2puc0NkVXdiVHRLc1Y4bkpnSWNjWmtxd1xuIiBcCi0tIiBsSmNUaERxdkpKejhzNHpVdExWenBjMnZaWkt0K3FCSWt5VUt0MFYwT05LU2UrN2c1U0NQRHI5S3YwdHpuWFAxY05NeVFmeG5YQkNcbiIgXAotLSIgdHFVeXVCM2dzbGZ0UGpKTGtHV0IzdTgyby9Jajg2YmYyZTdpcVJveHlJcFdmaHBDMEpIUTRWLzVHbFZ0SmNCdDBSUGlYaWYrMDB3XG4iIFwKLS0iIFBzNUJRdE54UDRUSlA4S2E2clpaSnBXMzcvS3E2OEFUbFBlaWlpckJRMEhsV1I5dDlxVmJ0cEVwL2R3aVkwaDVKOE1nYnAvaCt0YVxuIiBcCi0tIiA0cE03ZmRLTHVtbjJyeEdiS240QktsNEhFdG43M3l3RDdHaUw3bzI4SnV1bExiS0NzcUxLVUwvdEo3cCtvcXlJZTRjNlJHeXpVNGdcbiIgXAotLSIgVEhMTkpjM1dwQ3Q5Z2s4QTU0ajNHUGNkYVp1b29zeTgyVjIzUXBhWXBrRUlkZUlKS1VlSUFIaWVYUGtUWEExMUR1YXNzSnNDZWZZXG4iIFwKLS0iIC9TdllaTjVGaUdaVTllZFJ3TERBWEpueTJtUnVrb1N0UUJXUU9RSGpTamc3UFlFN1ptemNaYjdjRzZLSzVDWkQ2dHhPQ2NKUXZQZ1xuIiBcCi0tIiBRQVFmQW4ycTZSTk9XaTFEOUozUjVkd2xSMnhtWlBWdjltbEk4QnlUajU5YXIwOUxtMGpVSVFsNVkwekFVTXJRU1BpWGZISHB5ejRcbiIgXAotLSIgRDFxVFJ2TVFJaWVRQVFYT3RsbGZJRHJlL1gyV3FWbUk4UXo2RDlxMGJQOVNPMzdTclNwVzhaVVZYdzdxK1ljS2VTZ2VSeU1aNjVxXG4iIFwKLS0iIHFhbW12V1RhbEV2MXlqT0p0YVdmaDI1Q0J2Qk9Va0hQbHhVZUhseXEvTWlQQ2l0eG9yU0dXRzA3cUcwREFTSzQ1eFpseDNHSkRhSFxuIiBcCi0tIiBXbGpDa0xHUVI2Vkdpblkyb2ZJRzhMcmkyZ09pMzdoeFlHM3pDK3VUMkhZNlpEYnlGTXJBVWx3SzdwQjVITlJjcDdueHFwemROM0dcbiIgXAotLSIgQ0ZRN05PYlRhM25BcGNhU04vc3VPZTRTRHc2VkszTzRzd29qc3A5V0dteGs5ZklEclc0VXpXa2J0MksvdjY5MXZqZWM4WXRaVVRhXG4iIFwKLS0iIEJMK0l1TWFJamlXV3l0WFFuL3dCRDYwOHRndHJWQzBXMit0T0ZTRnFkOWljRDZBVm5tRkZsNm4xQWhvQW1SUGR3Y2ZnUjRuMkg3cVxuIiBcCi0tIiAyUHBpMU4yZXhSb2phUWxLRUJJSGtBSzdHbWkzTVRXYUxuNmlUZVNGK3FtYUtLSzNyU2l1ZWRFYW5RM0k3cVFwQzBrRUVaelhSUlJcbiIgXAotLSIgRmpuYVJvU1ZvcS9LY1lRdjlIT3IzbUhCL3F6ejNTZW5oVmkwZnRBYm5OTndMbzZHNWlRRW9kVWNKZDlmSlg3NjBacUxUa0hVZHNkXG4iIFwKLS0iIGhUV0VPdHVKd1FvVmwvWEd5UzdhYWtPUHdHbkpjRE9SdWpLMERxUEgycUpWMGNkVXpDLzBPaTNRVHVoZGRxWTg0SXVGdWt3bkZGS1xuIiBcCi0tIiBKRFNtbEVjd0ZER1I4NklTSTF0Z3RRNGpZYVlhVHVvU1AvdWRKUzFhenZGb0FaTG5ic3A0ZG0va2xQUUhtS3MwZmFWRVdrZkV3MzJcbiIgXAotLSIgMWYxQ0ZqOHE1NlhaTlN3WUc1dDdmU3Q0NnlCNXVjaW1NNUw0YzY0M3BYV3FVNXRDdGVNcFJLVWZJSUg4NmlwbXZubkFVd29RU2YyXG4iIFwKLS0iIDNsWitnL25XRWV5NXlmQ3RycXVCbzhTdTArNHNRNDZwRXAxTFRTZVpVZm9QT2xuZnI2N2ZaS1FsSzBRa0svVnRmaWNWNW5yWE9rWFxuIiBcCi0tIiBYVWs5S1FIcDBnbmdoSTdxUHlBcDFiT2RrQ21IMnJuZVFISHh4UWpIZGI5T3ZXcjJqMmMyRGlkbTc0VlpWVnBsR0Z1UVhSc2MyZk9cbiIgXAotLSIgUWdiMWNtc1NYUU4xSkgrVFQ0RCtkUEVBQUFEa0s4NDhkdU15bHBwSVNrREdCWHJWa29DS0tLS0lpaXFycmJYOW0wSkFSSXVhMXJlXG4iIFwKLS0iIGRKRE1kb0FyY0k1OCtBQTh6VkxzTzI2UnFpUzlHc3VrcGN0NWxIYUtiVExhU3JkOHdGRVo5czBSTjZ2R1JHWmt0bERxQW9IekZLcVxuIiBcCi0tIiBKdG9tenJQT3V6R2padndFQlJUSmZja3R0cGJVT2FlOWpKNWNCazhSNTE0V3JibzdlNDg5KzNhVGx2dFFHVElrcUVsc2RtMk1rcTRcbiIgXAotLSIgNHp5UEtpS2YxSHNqMDlmbEtkWEVRaDQvalIzVmZNVXZKLzJldDFaTU9lOGtlU2dGZnlxejJMYmZKMU05SVpzMmtKc3gyTzBYbkVOXG4iIFwKLS0iIHlFQWhBNFp3Y1o1OGh4cjdaZHRrdlVTNVNiVG8yZkpNUnN1UGtQb1NHMGp6S3NEUFBoejRIeW9pcERld0M0NytGWEZXT2pZSDUxWVxuIiBcCi0tIiBiVHNBZ3RyU3FjODgvandXckErUXhVbFl0dWp1cFo2b05vMG5MbFNVdHFkS0V5VzA0U01aT1ZZSGlLalA4QUNVdDUvd0IzcFgvWFRcbiIgXAotLSIgL0tpSm5XTFExbnNUU1VSb3JhZDM5bElGV1pLVW9UaElBSFNsTnFEYkxQMHNpS3U5Nk1uUTB5Z1N5VnlHenZZeG5sbkI0amdhODdGXG4iIFwKLS0iIHR0bGFtWEpiczJqNTB4Y1p2dFhVdHlFWkNmUEI1K2d5YUltOVJTZXRtM0o2OFJiaEpnYVNtUE0yNXZ0WmF2aVcwOWtuanhJT004alxuIiBcCi0tIiB5OHE3TEh0enN0d3YvQU9ocmxCZnRra3Vka0ZPTFM0M3Y1eGdxU2VISHg1ZGFJbXJSWDVRdEswaFNUa0dpaUxNUDJobzh3YTFpU25cbiIgXAotLSIgUW94VlJRMjBmQUtDbEZROWVJcXE3TExKZTd2cmVHN1paQ29aaHFEOGlaanVzdGpubndPUmtZOGMrV2ExWnFiU3R0MVBCTWE0TUlkXG4iIFwKLS0iIFJ6N3d6ZytkTDhiRWJBMXZwYTdSdEsrQ2twZFdBZlhqUkZCN1VwQ05lNktkbTZObkpmdDFxbHVLdVVKbHZkS3puUGJZSDNoelBYSlxuIiBcCi0tIiBQTUdxWnNrL3pjMmdmM0c1L0N1bWMzc1JzVE85MlJjYjN1QjNYVmpQMXI0allmWUd3b043NlFzWVVFdXJHUjVIalJFdWRoVXQyQlBcbiIgXAotLSIgMVRNWUlEMGV5dXVvSkdSdkpJSStvcTk2STJpd3RWejdyYjdaWldiYWx5enlKOXdLVWpMc3JLRWtqSDRjRTgrSnowNDliZXcrd05iXG4iIFwKLS0iIDNaNzZONFlPNjZzWkhsem9iMkgyQmtrdGI2Q1JnbExxeGtlWE9pSlpiQXY5SU1qKzdYL3dCNmFnOWxHbkVhajE3Q1JKQStCaFpteVxuIiBcCi0tIiBsSys2RUk0NFBRcTNSNkUwNlc5aDlnWlZ2TmI2Rll4bExxd2NmT2h2WWhZV3Q3czk5RzhNSzNYVmpJNjhhSW83VXhnYlI5SWFqaFFcbiIgXAotLSIgNy9EdTl5aVNGM1MzdE1OclN0bGtBQXQ5NERQREk0ZUpGVXZZZk5ldHFOWXo0eEFmaldaeDVza1pBVW5KSEQxRk1WclloWVdWYnpXXG4iIFwKLS0iICsyb2pHVU9yQng4NkViRDdBMEZCdmZSdkRDdDExWXlQSThhSW8yM3pkUDZpMmU2MjFUYVVKaVhDZmExSXVjRlBKdDVLVm5mSFJXU1xuIiBcCi0tIiBldVBQTloyWWFkZmtOc3NwVXAxYWdsQ1U4eVR5clRTTmg5Z2JDZ2pmU0ZqQ2dsMVl5UEk4YWw5UGJJdFAyV2FtVXl3a3VKNUtPVkVcbiIgXAotLSIgZW1lVkVWdzAyWkg5SDRZa0VxZERZQ2lmRTRvcVhiYVMwMmxDUmhJR0JSUkYvL1pcbiIgXAotKyJWRVJTSU9OOjMuMFxuIiBcCi0rIkZOOllvY3RvIFByb2plY3RcbiIgXAotKyJVUkw6aHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL1xuIiBcCi0rIkVNQUlMOnlvY3RvQHlvY3RvcHJvamVjdC5vcmdcbiIgXAotKyJURUw7VFlQRT1WT0lDRTorMDAgMDAwIDAwMCAwMDAwXG4iIFwKLSsiQURSO1RZUEU9SE9NRTo7MTcyMCBCZWF2ZXIgQ3JlZWs7RGFtICM0O1BsYW5ldCBFYXJ0aFxuIiBcCi0rIkxBQkVMOjE3MjAgQmVhdmVyIENyZWVrXFxuRGFtICM0XFxuUGxhbmV0IEVhcnRoXG4iIFwKLSsiUEhPVE87RU5DT0RJTkc9YjppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFCa0NBWUFBQUJ3NHBWXG4iIFwKLSsiIFVBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBRkU5SlJFRlVlSnp0blhtUUhOVjl4elxuIiBcCi0rIiArdmU4NmR2VS90YW5VaUNWd1JRdWFJaFNFT01zSWlFc2JHUnRpVkdGeTRFc2RVNGJJTk9JQ1BVdGtRSE94Z1lvaURUVkp4Q0Jpd01cbiIgXAotKyIgQ0J4QmpBbHNJVWxFUXpJU0FoWk41SlcybDN0dmJOejlKVS9mdS9ON0N3Z1ZxdVZtRXIxOTQvdDdlbnU5N3A3M3ZmOXp2Y2JDQkVpXG4iIFwKLSsiIFJJZ1FJVUtFQ0RINVVCLzBEWXdYd1p2L01oOEFLM0lTZ0JzNEF3QVIyOW9Dd053RmZRQktMWFkvbUR1Y0hGZ2Y5QTJFS0VYWk1pVFxuIiBcCi0rIiBZZHRkVUFEZmYrUUNBNVEvOUJRQitYazd3OWEyN3ZweFA4ZzBBTzlKNElZQTY0L3FPRTNtL2s0V1FJV1dHc21KSS9xMGZuMlArdDVcbiIgXAotKyIgemVyd0ZZREswQUNBZ0NBTXNYUnVDTHFQRFRRN0x2QmdvZ1NEWThET0RXTHZndVFPTGt2OXQ2UW01K2toQXlwTXdRZmlGbGhrbVpzXG4iIFwKLSsiIHZZLzlyT3pBWEs1OUVrQUVjODdCREQ5Yzk5Y0M2Q1U4dDd0dW1EL1BRMEEvdUNPSHdGNFZtNnBPV2JuYzIwQWx2SURPVG5RRjhuVVxuIiBcCi0rIiBoSk9UM1hRL0FLN2p5SlJXVVNYSEl3MXZBUVFWMDc4QkVKMS83ZjlNd3FNZWQ0UU1LVE5NaUNGL3VQL09OZ0M3WS9PREFGNTJZQ0VcbiIgXAotKyIgQXJoY0J3TUlEaU1aaUxrQXNWWDhmd0NsZnZmT3JBTGxkZDV3R1lHZTZIZ1JRUWZwa0FCWHhpL2ZqQ0trQ1g2aWh0SjZydEZBUDhpXG4iIFwKLSsiIE55M25BZkFKNGRrL09pQ1FCc1pTbjV2TG9YSUorYWV6VkF4Znh2UERDUlp6NVJDQmxTWnBnUVF6YmUrcVh6QVlMY3dBTUFnUk0wQVxuIiBcCi0rIiBVVFEwNzJTZjZKS21vOEhXUVZnTlNjN0FVNitZRzRBRUxpWktYSVRJaWM4Z3NMOTJKNXV5elhpeHpCR2J4MXRJQTczeUlNa0syVnJcbiIgXAotKyIgeC9SNWNnOUthWFU0MGdDQUgyLy9sT2tqc20zV2t3Qjk3S29FeU9IVUEyVFR3OUo1VTBNV3dObTVydzlnM3RmdXpCM2xxenBxaEF3XG4iIFwKLSsiIHBNMFFtY2xFMGtuSUJ2T3l3RCtBcEI0QkFHMnUyRW1vRW5udyt4RUFBc09ERDdTMEF1R0xNS1pSUm5ZUkJScE1DZk1NTUxUTlVJUFxuIiBcCi0rIiB2S2MwdTJXUG9hU3orS2JldVBQUVhnZThJKzVYZUxEQXFzWDVrK09uSzdid0p3ZTUwYkFITFpmQldBbzl2MkRuZkszZG54dFFDdjNcbiIgXAotKyIgdkgxV3dCMlRQbm9Xb0RMTHJ2c1hiWEhZMEhJa0RMRGhCaGl6engxSjRDN3RYY1lRQVZPQzRDdFJZQVZ5S2gyL0RRQTg4NlpvUUFTXG4iIFwKLSsiIFZWR2dhRXFvc1RKc0ZFT1VOOGFKeU5qQjZKZGVZK214RlpRMnFTd3RRenc1MGM0ZVNKaGpVVy93SHdGMjc1TytVcFgxSXRzMHc3MlxuIiBcCi0rIiA4OGVTUExBWndvaU1mQVdqMTEzMWFIM2lPU1ViSWtETERoQmh5Mm1lL3ZCOWd3MjFYUFFRUUg4emNBT0FybWRBREo2TUFwcDVTQjBcbiIgXAotKyIgRDFsS3FTNnd0ak9EQkd1TFl0L0ZHeEpTTTdmRE5tZ2xGL1FSa2ZvMmFPUmVsNVpsdnN5OU5NS2ZiUjBDTFhKUFpJRzQ0bjUxaEtQXG4iIFwKLSsiIG5jTGZjcCszc2tuQUx4TXVuYnNPNWtzaEF3cE0weUlJUWFMcnIzclJvRDF0MTVaQjVBWTZ2eDdnR2hLUmx4TmU2MW9PTFl0bzFOZlxuIiBcCi0rIiBGMmhtS0UvTEJUTnFOVk5nbFAzaHl2eXVDdGZJdm0vY1l5cXB0N1krVDJ0OFk1bFN1cXN2RWY2MHo0Z0Q4TWFyWXZWWDFXaWJSWi9cbiIgXAotKyIgc2FIbmxxT1FXZ0ZqRHpGZmUrNjBjRzBLR2xCa21OVUMxL3Q5WG5nZlExblRnMXdEVFo5aml6UzNNMjNwNCtxWnozWDFFeG9XeTdFXG4iIFwKLSsiIEpiZ1hIeWF1MUpHLzBvZjB4YnVvM0ExWjk3cFpaOWdYM3VtQzJnSFFSa2hySUF2THhlTEhUYkVvWVlabnRXYkJqQXI1dDZIY0RIclxuIiBcCi0rIiA3Mzk1MGQ0RGNlRWtDRmxobU9TSVdPeDZMd3FtWXl6TmRVQVhyYXY1TGl5cFRzVkUzOVR3WVl3RTd3M3lnN1JtbzdSdGdqTXlEZlhcbiIgXAotKyIgMkhyUDdCc21HYzFJVThwWThyYnBzaWluREl0aUNmRVUxOWFMemRMWktZeEpWTmJ0QW5BcTYzOENjTUZ4WklaQnlKQXl3NlRJa0dEXG4iIFwKLSsiIHZjN01Cdk01bk5nQ29ZS0FKSU5ERDFkSWVWeFBMQU5HRUtQaXJITlBTcUVhTnZESE1VS1ZiWTVuYmhpbWFJZnE0cjRJeFZ3VzZ1VlxuIiBcCi0rIiBFV3Z5ZjNZMmxaMHROcmRRRnMzaGI3S1lDVGFINFU0SUpyYjMvai9kN0JaQ0ZrU0psaFVtUklMdWNrQUdLRDJTWUFuQXdBRm1MNVpcbiIgXAotKyIgaktaQUNDVEZncytPeXpIczNrSkx6ZzYyUzJmTHhMVzA4eXd0V3lJeHVSWUxDRzNYQkdYYlZWMUJRQ3BTbjJ0bGhXV0hkVlBLR0l0XG4iIFwKLSsiIE1IWktpU0VpYmZpYWJUWE5FbFA1eTJtTmp3R29qOXh5d3BoaEVES2t6REFwREVuTVcvWW1RRzdERHlTMlBzQlhBRjdkc1BOaWdEZVxuIiBcCi0rIiAyN21zRENJemZ5WlpSYSttUkdURXhqRkVTelZLeGtqNk0xVnp3ZTNuQ01pZmZyOXVRNHczVjBuWnpzelRXV0M5OU5EYks2RTlXSmdcbiIgXAotKyIgdHRxbWhDN0k3S2F2Rmh4V3FiQWR4STVaU2pmUWVUaFpBaFpZYndDeWt6VEtwaEdGOTA0eWI5NzFVQXYxbDVoUVBRM3VaZExaMUp0XG4iIFwKLSsiIEtuZ1hOVCtFRXVaZ0ZWeGZQZ0ZoZFVJWWF0a3oxenJHL1ZZcTdNNVR4U0Z2UWRsZjlOMjJSL0pTRGkycnFvNEw4NmNKcHJBd3ZsMlxuIiBcCi0rIiBMMEJGVzYzNFZXS1JEMnlOU2NpUU1zT2tNc1JnNjdyVlZRREQ2OWFjQm9DcTF1NzNVb2VnNzVlNlE3eFJyaE8vNElmVXpzUFJIZytcbiIgXAotKyIgS0xETlgrSmFja05UcWJqd3FSNnFyZExCSkc2WDVVUUdxL2YzNjJyMlYxd0Y4dEw3MWZ3RmluVE0rc0l6NWtDRmxodVBDa054YlcyXG4iIFwKLSsiIFlBSk94WUcwQ3Z0dFllZldVbkFHZk9xQWZnOUZiWjVyWGowTE9MODd1dktlSWFFVkhJdWRZdWtESG5LVzM0WVJ0bm96eGFqelpDYVxuIiBcCi0rIiA1S2k3bGFNMHFhcjRub24wWm9CaUMvOTV1YUpQTzlrSW1SSW1lRzRNQ1RpWldZRHhKT1JhUURQYnBUbGZ2c2xLNGhVcDR6YXMyYktcbiIgXAotKyIgZkI5eFNtVUxGSTFFSXpzSzNuaHZqTE5SbFRMSDRNMkRBd0E4c1drL0FPZDlxQTJBRDArckw1NmtVNHlpNUMvV256dzQ3b2M4VGdnXG4iIFwKLSsiIFpVbVk0TGd5eExXOHVnQjk0Y1lBRGc3bVNsRkVUTklwb0duZzZkQnRSeGZIaGFvZWpqdTdpR1FZWWQzc3BJUXBhbVFsb2RROEtDMVxuIiBcCi0rIiAwdFcvYjN5ZjZIV29wYVZrVlNaSWliSFQ3bDZKL3krQ0JrU0psaFVobnlwNmVlaWdQazl2NTJGa0JVQjZDMHg1eitySXplMlkyU09cbiIgXAotKyIgS2ZHV095ajAwQk53b01KYXBuQWs5TDZsVFZHN0pnb3NHRktiVXEwS3MrWDVRb1pSNi9hOVlvR2phOTVGbmhPSlVBUUJERjlQL21qXG4iIFwKLSsiIGZmYkpRc2lRTXNPa01pVGEyYWtBMGs1T2ZPQ09oR2FYelc4SG9DY3QrNmUzMXdDUTBkcFZYc3NMTmRyL3J1VkpvQmxpWklySkIxS1xuIiBcCi0rIiAyRHRrV0JyejhZM1N3MlUzQ3duazY2TlNpQTFteGFIRU1LbDhDYUs0bm5XMS8rajZUaUIweUpJUmdVaG15WitaTUY2Qnl5NVp1S09cbiIgXAotKyIgYWtUYXVTK1h4NmpXek5xRGJtaHhmSXVPanVPbHhvSzFtUkFxRDV6TE1CbURwL0FRQWRMNjRGWUhEUGRnQmM3WnVLeG9XVVJpdExhXG4iIFwKLSsiIGF0LytmeHBRSEhrR2M4eWdHdXFReWpsQXN4YmR2bmdCQjZiVFpzMnRBTllGZkU1QVBQbkxQeURPYWFVR2pxYXRrS0dsQmttbFNHTFxuIiBcCi0rIiBGMHV0cWcwL3ZlNEZBS1dpVndQa0E2Y0tJSEI4bmFxcFN1SWlSdk5wYkdnb3RHVmtRVldyUkZOcnBrNEg0R0M3YkwwZGtuOFFUMVNcbiIgXAotKyIgVTNvUnhaV2taRkxlTWJGSHZjQWQ0bnZ3Zmo5ZE1hS24wczgvZmZ6SEFhNXMycmdGNGZOVWFBQm9hRzNhYmMzNTg2OHJMQUs2NS9uXG4iIFwKLSsiIHZqU3RBT0dWSm1PQzdWZ0ZZR0loVE8vK2RyN2dESURYZCtDU0RpZVVtQVNDRnp1dlF1N0ZGdEZPWjhiVTNiS2RITVJnWWxQVFdxbFxuIiBcCi0rIiA1c1pKY3ZFTzR5WmtkTlpFYjVlaE9QcDR6a1ZLZGo0cXFMdUJZRFBmdS91angvTjh6M3g5SDJma3JiZFZRQjczejRZQTNqdThhY0RcbiIgXAotKyIgZ1A3dW5zSjdiWm5TbGdHWWZmS3NDd0Z1dmUzdTN4NnA3WkFoWllZVFVpOXJ6YzFmL2k1QTk4RzN2dzlRb3hmM1Z5VkZoTVVMRHF2XG4iIFwKLSsiIFJscnA4WmhWU1FzZEVHOGZFMU0zV0swUUc1ZXlzRitRQVBNdCtIY0NKVmo1aSt2aWJXLzd6Tm5qdjRqanZlSTQxdjFnRTRPRkxUU1xuIiBcCi0rIiA3c05nQmxpOTlnb0g5UUFUeTMrcWtDQy9kczI2a0FtcWMwRHdFc1hYclJKUUJYWDNmOTgrL1dSOGlRTXNOeDhmWWFHTi9RdlhkZGRcbiIgXAotKyIgVDdBenIxaUFPL2F1UWNBMXhHcFlldlJQbTltTVlrdEVaTllTVElxVzlzczNERk1jT1VhTnllRGV5QXQrNFBhK0xGMDRraGVXLy8xXG4iIFwKLSsiIDdXM2JBU0puVC85WDA4ZDRtZkhMWDk4MUZ5RHZ1cUtOUld5ZCtJZStGNkYyTWlVYTMrS0xMaXhRL1luMDZnQmdzS3VyQ3VCM3YzdlxuIiBcCi0rIiB1aC9yUUdlL1dWOGlRTWtQNGhaUVpqb3RRZitXWFAyOEVjQlArendDRzRzR25BUWI2aHkyQTdsMWJGY0NpT2dtdmJ1OFdqOFhhdDRcbiIgXAotKyIgdkZkbXJycWdGSUpIWDFCMU1WVm1jOVpMSzZqc3FRVElOYnRzdituc095L2N4WmNuMGtJVnBCcXFWT0FiVEhwejFtK3ZqS2QvNnRVXG4iIFwKLSsiIEJubzNmRG9vdzlNQTNDOVlVa0FqRnAxVUhUMWVEckRJZ2hNdFFoOTRTZ25hVzVFVm1QOTZyL3VsUlhKbVh3SHdBL3Z1dk4wZ0lVTFxuIiBcCi0rIiB6K2thM1dmSWtETERNVEhrOWYrK05nVVFUMGVhQUVhYzNKVUF2VjJIdmc2d3IzZWdHbUQzaUl6cXM1Yi9GUUNSRVVuclBDc2lBeStcbiIgXAotKyIgYmwxRjB5N3FCUXR0VnpiTFVwTEpDQy9Xb0tBQ09OZ2hIUm9RSiszZDFBOUN4UjVneU5DTEgvM3lPRkI0NmMzNHJBTnM2RHdZQUZmXG4iIFwKLSsiIDNGUlNnTnplMXZBY1NUa1JzQWFsTXRVclo4U25zR3dHK3MzZ2hnUlcwcDZteXEyMm5YajZldFVNOGtYaGdhQjZNV29VVEZ5OW5YSVxuIiBcCi0rIiBVUjQ1dUhIZmdUdzlBdnIvK0dkYnpSa1NObGhRbXJ2bHYvNDlneUE2TkR3N1FENWJOOGxBUDZ3ZUpyTmlMZWFXZ0tBenRlM0s0QzhcbiIgXAotKyIgL3Y0N0IyVUFSZE5TTjNISktjS0NsOTRxRW5hN1R1YTBJaWJaUWE2SmE4OUhoVFlZRzRma2VJMU9mcWhOeVNPOThiYUVicmQzU3I1XG4iIFwKLSsiIG9kVlJtZ3puVnNjTG9qWFh2UHdVZ24waXNCaGlwRXBiVlRtMEdRTnV0T05vTGFsbldFV2VVSUNobEVJQ24xZkRtbHRiVjhON01NQVxuIiBcCi0rIiBnWlVtWVlOME4yci8xRm9jNVVkc3RyM3dJZzEzOEpRS0FUQ054QWhyRUtaQ1E1VmxJQlhMcmtQQUNhRHUwRFlPZm1IUUFNVzVJNUZcbiIgXAotKyIgM3hZNXZtVkZ4YjcrLzRhMGJqbWF0blJwalBtRHVkbGdMK281VktWem1xb1RzanhYcDFDR3RHR3Bha0UwWmVUZXp3MFZKUWhsUWxwXG4iIFwKLSsiIE82bXJHRkhmcUFBMmJKVDQwdnd6VHBmN250cXFRNzI2M3VPWUZLUmdUT1ozYVdLNDlSaUFXMnQ5Z1hFZ1pFaVpZZHdNNmQzOFppRVxuIiBcCi0rIiBITTU0Zk9nUEF6NHVtazhuTE1NMjdrcHZwT1RKRU5xMlhtRXhTajV6elc4UzFVTjhqMmxUUGRBbTdabDRUTzJUKzFtSUk5NThxcElcbiIgXAotKyIgMldLYUp0RGMrZUFVRHQxbDBBL0cxQzJLVUNHZm1ObWtrSHRVUCtxUkhaZjEzSGlXdDBGUWwzT0Yzb3c2L1hOWDRyRXJKYVdBZTc5XG4iIFwKLSsiIHU0USsyalg5cjBBWEhMNVpkSjNrd1RRWExPK1BpalpvSFN1VWhDbzlhWVAyL2EvQ25ERjBpdUtIUjhCSVVQS0RPUFhzcExGVUdrbVxuIiBcCi0rIiBJM091bjVYUm1kYWpNSzBaTTVBVmJhVnJVT1RBcW95TXFGUHJKQ1VuMXlvMnd1dC9FdDI4dFVPT1Z3Y0ZNVVd0a1MvYVl1OCtZeEVcbiIgXAotKyIgQVRYdEVEalZybVJCVElpdFNNV0hFYkoxZ2w5ZDFmZGYzeTNrOVNOdFd0dWdObUszbGo2MDFvYmdlbmhWVmNwOTkzYUtwcmI1M0ZRXG4iIFwKLSsiIENYWGlsaUlGa3RDUmllWG1Ga0dkUGNzZzRDcEpJMTE1cytWbnh5eGRzY0JVS0dsQm5HelpEVFR6cXY0SE41cVhmVml3QlpWNTBKTVxuIiBcCi0rIiBKeVJ5dFdET1dISTdsNUpiTjZha2U5N2Q4MXNrVEUxTFFyZzJrcy9Cc0NUOXowTndPWStzYmFYbnJ1ZzBOK2RhMzRQd0VVN0pHUTdcbiIgXAotKyIgYzc5NHZuZG9QOUtkL1JMU25hYlhvWDl4a1NUalBmdWFlQUVlN2hkWnNsV1plcjV5WHJLWTdNRDJuaEVGVUY4aHNpeldJOWI4U1hPXG4iIFwKLSsiIG1LNEJYKzZSdk55c090R2RXUDZrQVBuSEo4Z0Fna1VwcUg1YnFBckR0eE9jQlZueHl4ZS9lODBXK0QwS0dsQm5HelJDMXVQaHpkQ1xuIiBcCi0rIiAvKzlOcy9BUmdlR0pnRzBER1VYUUxRUFRCOEFHQnp0NVN1UGhodE9CM0FyMnRJQUd3NEpNeDUvaFd4UTdweTB2MzZQZ25wTHBvenRcbiIgXAotKyIgOURmN21ZWjZWY2YwcmxyR1pNWVljSyt3b0FmekpIOXRDK3k1TzREMGxaWFhJSmRrWlNNZnMvOFJGSXVVN0JEdGcxazBnRFZLYWNYXG4iIFwKLSsiIGdNN04wd0RtbkhsbUw4Q2ZMWndmQS9qank1c3FBYm9QQ0lOZWVuYXRBamgzNlpKQmdHZ3NjVG5BRnk3OXdoRVRHTWFEa0NGbGhtUFxuIiBcCi0rIiB5OXI2OTZyWWt3TStmV2Y5NWdHMjc5bjhPb0xNL1BSV2dJOGZKQUoycEtWR0FrWHBKZWl2UVVudExuUkhScU02ZTExWm9lNXRla3RcbiIgXAotKyIgYVRMeTB1WUl6aXVPUXVzRVRjVGd4cEwvRHZlNlQxSUtLMytnbmpmUWNCYUJvcDJqcXRGWFplTjVvR1VMNWJCekI5U3VQTkFCZC84XG4iIFwKLSsiIFl1L0FYanQ1WmNmQVhqemozK3NCMUJXMEFmd2llVVhYUW53dFd1K3MyWWNyMnRjQ0JsU1pqZ21odHowN2V0T0F0ajg2c2FOQUU1bVxuIiBcCi0rIiBwQllnbDNjdEFFL242Z3hsWlVuYnpueEtBZlEwekFJZ1NJaHRZR3IwV243UlNSUW9QZWZyeXRhQitYVUVuU0pxS2xtYktrQW1MY2pcbiIgXAotKyIgVG4xczZDVHZaSzNiTDlMeUlpY1pVdE5DSnJiTXJ6SEs1dkY0RVdsRlZHUUMwejVwMUdzQTU1eXcrQU9BNzJjVUE2ZXp3YXdEWFhIXG4iIFwKLSsiIFBqcnFONFhlTkN5SkF5d3pFeDVJcFBmZndKQUMrZld3YVExZFp6b050Tlp5VXVNcUxqMzNrZEQrOTBSZk01VksxL1RpUXFscS95aVxuIiBcCi0rIiBwRTJXN21PZk9abUFHeE5FVTlYQ0Fnc0t3bmdXenJyenBLTjBuSHU2TkJCQlRBekl6Wk9veTZZR28wVXgyQ2hyS1BldXRwR3NYVzlcbiIgXAotKyIgM3FiVzF1Y0JWajM2NUpLamZ6c1RROGlRTXNPRUlvYmYrUEpmbndyUXNYZjNxUUM1aktoQ3Z2NlZtNXoyYWJsQmFjVnFTeThOYUxJXG4iIFwKLSsiIGtVaGpway9tOVh6UEVpaGZyWGl6NzJNZHVCVml4NU55SEFKWXRXOVlGOE1JTEx6UUIvT1NCeHk4QzJMWjMzMFVBblFOREN3R0M5RVxuIiBcCi0rIiBBS29DVXYybFM5RHZ0RkREUFVhSVlZUWhiY3R2SWNPdTZSVDQrY2UzUnY1dGdSTXFUTUVINGhaWVlKVFZtZUU5UUErTDVVcWpTcmFcbiIgXAotKyIgQU5MVi9YeFNqUFNpOSs3V1cwcmJvNXFXODVQZXBMMW9MTEZja0NucE94ZkFTeGZ2bnpMbU80NzlYWXp3THAxNng0QytPYjFOejRDXG4iIFwKLSsiIE1KVHZXUUNRaXBycVFEcExYdCtUc2tiOUpJYXBZbDVZQTE5YU44Vng4L0gzZXhlVGpaQWhaWVlKTVNUcmN4Z2c3MHVCdytJYURUblxuIiBcCi0rIiB1amQyYVdsZGFyVFNWNUZ5OVR0d1B4RUNyYjZqOWplbmorcHR1ZWhQZ2hwdHZQdUs5WkxxNitnSHN3QlVkVzdQUTlXU3MyVnJWRG1cbiIgXAotKyIgenpHMGtsWTFCU1FZMkRaVXhsb1ZpOFlrS3JjbzhGSVVQS0RCTml5SmV1dXJ3RDRJNWJidDhJTUpMdWJnZklaWE1XaktxWGFLckNtXG4iIFwKLSsiIGExWnVLNUxOdFRVMWg4R2FHK2Z0aExnL29jZXVzdjBvVlF4a0hRa1hQQ1p6L1FBM0hQUFBTc0Fubjd5OFNzQmVyb09ud3RnNHk4QVxuIiBcCi0rIiB5T2V6OHFPUmpsdVFDK1lISkgxZmxsMUY3VWdPSUpsSzdnT1lQbXZ1YlhMbXBQODYzbnNpWkVpWllWS1dJNnhjK2EyRkFIdi90UDFcbiIgXAotKyIgY2dNN096bXFBd0xkYUFSelA2UUNvYmFqckE1Z3phKzVMQUxmZWZ1SitCc0tndDdkM3h0alA2dXJxeFAydTFPRjNYbkZpRVRJa1JJXG4iIFwKLSsiIGdRSVVLRStIK0Mvd01HWDhJYXMxczZDUUFBQUFCSlJVNUVya0pnZ2c9PVxuIiBcCi0gIkVORDpWQ0FSRCIKLS0tIAotMS44LjMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDEtaW1hcHgtRml4LXNpZ25hdHVyZS1mb3ItaW1hcHhfdG9rZW5pc2Vfc3RydWN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDAxLWltYXB4LUZpeC1zaWduYXR1cmUtZm9yLWltYXB4X3Rva2VuaXNlX3N0cnVjdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjgyYTc2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDEtaW1hcHgtRml4LXNpZ25hdHVyZS1mb3ItaW1hcHhfdG9rZW5pc2Vfc3RydWN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSAwZTEwZTk3NjAyNWIyMWQxMmRmMDk5ZTgyOTUxZjc1OTAyNGFkNjQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjQgQXVnIDIwMTcgMjI6MDQ6NTYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gaW1hcHg6IEZpeCBzaWduYXR1cmUgZm9yIGltYXB4X3Rva2VuaXNlX3N0cnVjdCgpCi0KLWNsYW5nIGNvbXBsYWlucyBhYm91dCBkaWZmZXJlbnQgc2lnbmF0dXJlIGZvciB0aGlzIHBhdGNoCi0KLUZpeGVzCi1jYW1lbC9wcm92aWRlcnMvaW1hcHgvY2FtZWwtaW1hcHgtdG9rZW5zLnR4dDo1NjoxOiBlcnJvcjogY29uZmxpY3RpbmcgdHlwZXMgZm9yICdpbWFweF90b2tlbmlzZV9zdHJ1Y3QnCi18IGltYXB4X3Rva2VuaXNlX3N0cnVjdCAocmVnaXN0ZXIgY29uc3QgY2hhciAqc3RyLCByZWdpc3RlciBzaXplX3QgbGVuKQotfCBeCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjYW1lbC9wcm92aWRlcnMvaW1hcHgvY2FtZWwtaW1hcHgtdG9rZW5zLnR4dCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NhbWVsL3Byb3ZpZGVycy9pbWFweC9jYW1lbC1pbWFweC10b2tlbnMudHh0IGIvY2FtZWwvcHJvdmlkZXJzL2ltYXB4L2NhbWVsLWltYXB4LXRva2Vucy50eHQKLWluZGV4IGQ0ODUwMTg2NS4uOTk0YzM2OGMwIDEwMDY0NAotLS0tIGEvY2FtZWwvcHJvdmlkZXJzL2ltYXB4L2NhbWVsLWltYXB4LXRva2Vucy50eHQKLSsrKyBiL2NhbWVsL3Byb3ZpZGVycy9pbWFweC9jYW1lbC1pbWFweC10b2tlbnMudHh0Ci1AQCAtMSw3ICsxLDcgQEAKLSAvKiBUaGlzIGNvbnRhaW5zIGFsbCBvZiB0aGUga2V5d29yZHMgd2UgY2FyZSBhYm91dC4gIFRoZXNlCi0gICAgY2FuIGJlIGNvbnZlcnRlZCB0byBhbiBpZCB2ZXJ5IGVmZmljaWVudGx5ICovCi0gc3RydWN0IF9pbWFweF9rZXl3b3JkIHtjb25zdCBnY2hhciAqbmFtZTsgY2FtZWxfaW1hcHhfaWRfdCBpZDsgfTsKLS1zdHJ1Y3QgX2ltYXB4X2tleXdvcmQgKmltYXB4X3Rva2VuaXNlX3N0cnVjdCAocmVnaXN0ZXIgY29uc3QgY2hhciAqc3RyLCByZWdpc3RlciB1bnNpZ25lZCBpbnQgbGVuKTsKLStzdHJ1Y3QgX2ltYXB4X2tleXdvcmQgKmltYXB4X3Rva2VuaXNlX3N0cnVjdCAocmVnaXN0ZXIgY29uc3QgY2hhciAqc3RyLCByZWdpc3RlciBzaXplX3QgbGVuKTsKLSAlJQotIEFMRVJULCAgICAgICAgICBJTUFQWF9BTEVSVAotIEFQUEVORFVJRCwJSU1BUFhfQVBQRU5EVUlECi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDItQ01ha2VMaXN0cy50eHQtcmVtb3ZlLUNIRUNLX0NfU09VUkNFX1JVTlMtY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDItQ01ha2VMaXN0cy50eHQtcmVtb3ZlLUNIRUNLX0NfU09VUkNFX1JVTlMtY2hlY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhkYzdlMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvMDAwMi1DTWFrZUxpc3RzLnR4dC1yZW1vdmUtQ0hFQ0tfQ19TT1VSQ0VfUlVOUy1jaGVjay5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDIxMGIyMDRkOWVkZDcxMjAyNDU0ZmYwNDAxM2NjNTJiMjNjNTk4ZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOSBEZWMgMjAxNyAxNjo1NToxMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBDTWFrZUxpc3RzLnR4dDogcmVtb3ZlIENIRUNLX0NfU09VUkNFX1JVTlMgY2hlY2sKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworKiBUUllfUlVOOiBkb2VzIG5vdCB3b3JrIGZvciBPRQorKiBIQVZFX0xLU1RSRlRJTUUgaXMgc2V0IGJ5IHJlY2lwZSBhcyBjb25maWd1cmUgb3B0aW9uCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBDTWFrZUxpc3RzLnR4dCB8IDIzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggYTIzOTZmMi4uZjNiMjcxYiAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTU3MywyOSArNTczLDYgQEAgQ0hFQ0tfQ19TT1VSQ0VfQ09NUElMRVMoIiNpbmNsdWRlIDxsYW5naW5mby5oPgorIENIRUNLX0NfU09VUkNFX0NPTVBJTEVTKCIjaW5jbHVkZSA8bGFuZ2luZm8uaD4KKyAJCQlpbnQgbWFpbih2b2lkKSB7IGNoYXIgKmRldGFpbCA9IG5sX2xhbmdpbmZvIChfTkxfQUREUkVTU19DT1VOVFJZX0FCMik7IHJldHVybiAwOyB9IiBIQVZFX19OTF9BRERSRVNTX0NPVU5UUllfQUIyKQorIAorLSMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSMgQ2hlY2sgdG8gc2VlIGlmIHN0cmZ0aW1lIHN1cHBvcnRzIHRoZSB1c2Ugb2YgJWwgYW5kICVrCistIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistCistQ0hFQ0tfQ19TT1VSQ0VfUlVOUygiCistCSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0JI2luY2x1ZGUgPHN0cmluZy5oPgorLQkjaW5jbHVkZSA8dGltZS5oPgorLQlpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCXsKKy0JY2hhciBidWZbMTBdOworLQl0aW1lX3QgcmF3dGltZTsKKy0Jc3RydWN0IHRtICp0aW1laW5mbzsKKy0KKy0JdGltZSgmcmF3dGltZSk7CistCXRpbWVpbmZvPWxvY2FsdGltZSgmcmF3dGltZSk7CistCWJ1ZlswXSA9IDA7CistCXN0cmZ0aW1lKGJ1ZiwgMTAsIFwiJWx4JWtcIiwgdGltZWluZm8pOworLQorLQlpZiAoIWJ1ZlswXSB8fCBidWZbMF0gPT0gJ3gnIHx8IHN0cnN0cihidWYsIFwibFwiKSB8fCBzdHJzdHIoYnVmLCBcImtcIikpCistCQlyZXR1cm4gMTsKKy0JcmV0dXJuIDA7CistCX0iIEhBVkVfTEtTVFJGVElNRSkKKy0KKyAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICMgc3lzdGVtIG1haWwgc3R1ZmYKKyAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDAyLUZpeC1mb3ItYXV0b21ha2UtMS4xMi54LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDAyLUZpeC1mb3ItYXV0b21ha2UtMS4xMi54LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjIyMmFlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvMDAwMi1GaXgtZm9yLWF1dG9tYWtlLTEuMTIueC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gZjQ2NDIzYzllNGI4YjE5ZWRhMjdiMzA3NDU2YTcxN2RlNzliNzVmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci1EYXRlOiBTdW4sIDQgQXVnIDIwMTMgMDk6MTU6NDMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzVdIEZpeCBmb3IgYXV0b21ha2UtMS4xMi54Ci0KLUZpeGVkIHRoZXNlIGtpbmRzIGlmIHdhcm5pbmctZXJyb3JzCi0KLXdhcm5pbmc6ICdsaWJlYm9va2JhY2tlbmRmaWxlLmxhJzogbGlua2luZyBsaWJ0b29sIGxpYnJhcmllcyB1c2luZyBhIG5vbi1QT1NJWCBhcmNoaXZlciByZXF1aXJlcyAnQU1fUFJPR19BUicgaW4gJ2NvbmZpZ3VyZS5hYycKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOWJkOTdkYi4uNDlkNzUwNiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzEsNiArMzEsNyBAQCBBQ19MQU5HKEMpCi0gCi0gZG5sIEF1dG9tYWtlIDEuMTEgLSBTaWxlbnQgQnVpbGQgUnVsZXMKLSBtNF9pZmRlZihbQU1fU0lMRU5UX1JVTEVTXSwgW0FNX1NJTEVOVF9SVUxFUyhbeWVzXSldKQotK200X2lmZGVmKFtBTV9QUk9HX0FSXSwgW0FNX1BST0dfQVJdKSAjIHJlcXVpcmVkIGJ5IGF1dG9tYWtlIDEuMTIKLSAKLSBkbmwgUmVxdWlyZWQgUGFja2FnZSBWZXJzaW9ucwotIG00X2RlZmluZShbZ2xpYl9taW5pbXVtX3ZlcnNpb25dLCBbMi4yOF0pCi0tLSAKLTEuOC4zLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDAzLURpc2FibGUtV2Vycm9yLWZvci1hdXRvbWFrZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvMDAwMy1EaXNhYmxlLVdlcnJvci1mb3ItYXV0b21ha2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExODJkNGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDAzLURpc2FibGUtV2Vycm9yLWZvci1hdXRvbWFrZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLUZyb20gMzdiMjI3Y2ZmNzhmZDRjNjUyNjUxNjYyZGFmZDcxNTM3MjgwODI0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci1EYXRlOiBTdW4sIDQgQXVnIDIwMTMgMDk6MTY6NTkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzVdIERpc2FibGUgV2Vycm9yIGZvciBhdXRvbWFrZQotCi1Bdm9pZCB0aGVzZSB3YXJuaW5nLWVycm9ycwotCi1hdXRvbWFrZTogd2FybmluZ3MgYXJlIHRyZWF0ZWQgYXMgZXJyb3JzCi1NYWtlZmlsZS5hbToxNTogd2FybmluZzogJyUnLXN0eWxlIHBhdHRlcm4gcnVsZXMgYXJlIGEgR05VIG1ha2UgZXh0ZW5zaW9uCi1NYWtlZmlsZS5hbToyMTogd2FybmluZzogcGtnY29uZmlnX0RBVEE6LSQoQVBJX1ZFUlNJT046IG5vbi1QT1NJWCB2YXJpYWJsZSBuYW1lCi1hZGRyZXNzYm9vay9iYWNrZW5kcy9maWxlL01ha2VmaWxlLmFtOiBpbnN0YWxsaW5nICcuL2RlcGNvbXAnCi1hZGRyZXNzYm9vay9saWJlYm9vay9NYWtlZmlsZS5hbTo1NTogd2FybmluZzogJyUnLXN0eWxlIHBhdHRlcm4gcnVsZXMgYXJlIGEgR05VIG1ha2UgZXh0ZW5zaW9uCi1hZGRyZXNzYm9vay9saWJlYm9vay9NYWtlZmlsZS5hbTo2NTogd2FybmluZzogJyUnLXN0eWxlIHBhdHRlcm4gcnVsZXMgYXJlIGEgR05VIG1ha2UgZXh0ZW5zaW9uCi1hZGRyZXNzYm9vay9saWJlYm9vay9NYWtlZmlsZS5hbTo2Njogd2FybmluZzogc3Vic3QgLSxfLCQqOiBub24tUE9TSVggdmFyaWFibGUgbmFtZQotYWRkcmVzc2Jvb2svbGliZWJvb2svTWFrZWZpbGUuYW06NjY6IChwcm9iYWJseSBhIEdOVSBtYWtlIGV4dGVuc2lvbikKLWFkZHJlc3Nib29rL2xpYmVib29rL01ha2VmaWxlLmFtOjcyOiB3YXJuaW5nOiBwa2djb25maWdfREFUQTotJChBUElfVkVSU0lPTjogbm9uLVBPU0lYIHZhcmlhYmxlIG5hbWUKLWFkZHJlc3Nib29rL2xpYmVkYXRhLWJvb2svTWFrZWZpbGUuYW06Mjogd2FybmluZzogJyUnLXN0eWxlIHBhdHRlcm4gcnVsZXMgYXJlIGEgR05VIG1ha2UgZXh0ZW5zaW9uCi1hZGRyZXNzYm9vay9saWJlZGF0YS1ib29rL01ha2VmaWxlLmFtOjM6IHdhcm5pbmc6IHN1YnN0IC0sXywkKjogbm9uLVBPU0lYIHZhcmlhYmxlIG5hbWUKLWFkZHJlc3Nib29rL2xpYmVkYXRhLWJvb2svTWFrZWZpbGUuYW06MzogKHByb2JhYmx5IGEgR05VIG1ha2UgZXh0ZW5zaW9uKQotZ2xpYi1nZW4ubWFrOjk6IHdhcm5pbmc6ICclJy1zdHlsZSBwYXR0ZXJuIHJ1bGVzIGFyZSBhIEdOVSBtYWtlIGV4dGVuc2lvbgotYWRkcmVzc2Jvb2svbGliZWRhdGEtYm9vay9NYWtlZmlsZS5hbTo1OiAgICdnbGliLWdlbi5tYWsnIGluY2x1ZGVkIGZyb20gaGVyZQotZ2xpYi1nZW4ubWFrOjEzOiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLWFkZHJlc3Nib29rL2xpYmVkYXRhLWJvb2svTWFrZWZpbGUuYW06NTogICAnZ2xpYi1nZW4ubWFrJyBpbmNsdWRlZCBmcm9tIGhlcmUKLWdsaWItZ2VuLm1hazoxODogd2FybmluZzogJyUnLXN0eWxlIHBhdHRlcm4gcnVsZXMgYXJlIGEgR05VIG1ha2UgZXh0ZW5zaW9uCi1hZGRyZXNzYm9vay9saWJlZGF0YS1ib29rL01ha2VmaWxlLmFtOjU6ICAgJ2dsaWItZ2VuLm1haycgaW5jbHVkZWQgZnJvbSBoZXJlCi1nbGliLWdlbi5tYWs6MjY6IHdhcm5pbmc6ICclJy1zdHlsZSBwYXR0ZXJuIHJ1bGVzIGFyZSBhIEdOVSBtYWtlIGV4dGVuc2lvbgotYWRkcmVzc2Jvb2svbGliZWRhdGEtYm9vay9NYWtlZmlsZS5hbTo1OiAgICdnbGliLWdlbi5tYWsnIGluY2x1ZGVkIGZyb20gaGVyZQotZ2xpYi1nZW4ubWFrOjM4OiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLWFkZHJlc3Nib29rL2xpYmVkYXRhLWJvb2svTWFrZWZpbGUuYW06NTogICAnZ2xpYi1nZW4ubWFrJyBpbmNsdWRlZCBmcm9tIGhlcmUKLWdsaWItZ2VuLm1hazo0MTogd2FybmluZzogJyUnLXN0eWxlIHBhdHRlcm4gcnVsZXMgYXJlIGEgR05VIG1ha2UgZXh0ZW5zaW9uCi1hZGRyZXNzYm9vay9saWJlZGF0YS1ib29rL01ha2VmaWxlLmFtOjU6ICAgJ2dsaWItZ2VuLm1haycgaW5jbHVkZWQgZnJvbSBoZXJlCi1hZGRyZXNzYm9vay9saWJlZGF0YS1ib29rL01ha2VmaWxlLmFtOjg2OiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLWFkZHJlc3Nib29rL2xpYmVkYXRhLWJvb2svTWFrZWZpbGUuYW06MTAxOiB3YXJuaW5nOiBwa2djb25maWdfREFUQTotJChBUElfVkVSU0lPTjogbm9uLVBPU0lYIHZhcmlhYmxlIG5hbWUKLWNhbGVuZGFyL2JhY2tlbmRzL3dlYXRoZXIvTWFrZWZpbGUuYW06NDQ6IHdhcm5pbmc6ICclJy1zdHlsZSBwYXR0ZXJuIHJ1bGVzIGFyZSBhIEdOVSBtYWtlIGV4dGVuc2lvbgotY2FsZW5kYXIvbGliZWNhbC9NYWtlZmlsZS5hbTo1Mzogd2FybmluZzogJyUnLXN0eWxlIHBhdHRlcm4gcnVsZXMgYXJlIGEgR05VIG1ha2UgZXh0ZW5zaW9uCi1jYWxlbmRhci9saWJlY2FsL01ha2VmaWxlLmFtOjYxOiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLWNhbGVuZGFyL2xpYmVjYWwvTWFrZWZpbGUuYW06NjI6IHdhcm5pbmc6IHN1YnN0IC0sXywkKjogbm9uLVBPU0lYIHZhcmlhYmxlIG5hbWUKLWNhbGVuZGFyL2xpYmVjYWwvTWFrZWZpbGUuYW06NjI6IChwcm9iYWJseSBhIEdOVSBtYWtlIGV4dGVuc2lvbikgY2FsZW5kYXIvbGliZWNhbC9NYWtlZmlsZS5hbTo2ODogd2FybmluZzogcGtnY29uZmlnX0RBVEE6LSQoQVBJX1ZFUlNJT046IG5vbi1QT1NJWCB2YXJpYWJsZSBuYW1lCi1jYWxlbmRhci9saWJlZGF0YS1jYWwvTWFrZWZpbGUuYW06NTogd2FybmluZzogJyUnLXN0eWxlIHBhdHRlcm4gcnVsZXMgYXJlIGEgR05VIG1ha2UgZXh0ZW5zaW9uCi1jYWxlbmRhci9saWJlZGF0YS1jYWwvTWFrZWZpbGUuYW06Njogd2FybmluZzogc3Vic3QgLSxfLCQqOiBub24tUE9TSVggdmFyaWFibGUgbmFtZQotY2FsZW5kYXIvbGliZWRhdGEtY2FsL01ha2VmaWxlLmFtOjY6IChwcm9iYWJseSBhIEdOVSBtYWtlIGV4dGVuc2lvbikKLWdsaWItZ2VuLm1hazo5OiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLWNhbGVuZGFyL2xpYmVkYXRhLWNhbC9NYWtlZmlsZS5hbTo4OiAgICdnbGliLWdlbi5tYWsnIGluY2x1ZGVkIGZyb20gaGVyZQotZ2xpYi1nZW4ubWFrOjEzOiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLWNhbGVuZGFyL2xpYmVkYXRhLWNhbC9NYWtlZmlsZS5hbTo4OiAgICdnbGliLWdlbi5tYWsnIGluY2x1ZGVkIGZyb20gaGVyZQotZ2xpYi1nZW4ubWFrOjE4OiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLWNhbGVuZGFyL2xpYmVkYXRhLWNhbC9NYWtlZmlsZS5hbTo4OiAgICdnbGliLWdlbi5tYWsnIGluY2x1ZGVkIGZyb20gaGVyZQotZ2xpYi1nZW4ubWFrOjI2OiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLWNhbGVuZGFyL2xpYmVkYXRhLWNhbC9NYWtlZmlsZS5hbTo4OiAgICdnbGliLWdlbi5tYWsnIGluY2x1ZGVkIGZyb20gaGVyZQotZ2xpYi1nZW4ubWFrOjM4OiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLWNhbGVuZGFyL2xpYmVkYXRhLWNhbC9NYWtlZmlsZS5hbTo4OiAgICdnbGliLWdlbi5tYWsnIGluY2x1ZGVkIGZyb20gaGVyZQotZ2xpYi1nZW4ubWFrOjQxOiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLWNhbGVuZGFyL2xpYmVkYXRhLWNhbC9NYWtlZmlsZS5hbTo4OiAgICdnbGliLWdlbi5tYWsnIGluY2x1ZGVkIGZyb20gaGVyZQotY2FsZW5kYXIvbGliZWRhdGEtY2FsL01ha2VmaWxlLmFtOjcxOiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLWNhbGVuZGFyL2xpYmVkYXRhLWNhbC9NYWtlZmlsZS5hbTo4Njogd2FybmluZzogcGtnY29uZmlnX0RBVEE6LSQoQVBJX1ZFUlNJT046IG5vbi1QT1NJWCB2YXJpYWJsZSBuYW1lCi1jYW1lbC9NYWtlZmlsZS5hbToxNzogd2FybmluZzogJyUnLXN0eWxlIHBhdHRlcm4gcnVsZXMgYXJlIGEgR05VIG1ha2UgZXh0ZW5zaW9uCi1saWJlYmFja2VuZC9NYWtlZmlsZS5hbTozNTogd2FybmluZzogJyUnLXN0eWxlIHBhdHRlcm4gcnVsZXMgYXJlIGEgR05VIG1ha2UgZXh0ZW5zaW9uCi1saWJlYmFja2VuZC9NYWtlZmlsZS5hbTo0MTogd2FybmluZzogcGtnY29uZmlnX0RBVEE6LSQoQVBJX1ZFUlNJT046IG5vbi1QT1NJWCB2YXJpYWJsZSBuYW1lCi1saWJlZGF0YXNlcnZlci9NYWtlZmlsZS5hbTo5MTogd2FybmluZzogJyUnLXN0eWxlIHBhdHRlcm4gcnVsZXMgYXJlIGEgR05VIG1ha2UgZXh0ZW5zaW9uCi1saWJlZGF0YXNlcnZlci9NYWtlZmlsZS5hbTo5Nzogd2FybmluZzogcGtnY29uZmlnX0RBVEE6LSQoQVBJX1ZFUlNJT046IG5vbi1QT1NJWCB2YXJpYWJsZSBuYW1lCi1saWJlZGF0YXNlcnZlcnVpL01ha2VmaWxlLmFtOjEwODogd2FybmluZzogJyUnLXN0eWxlIHBhdHRlcm4gcnVsZXMgYXJlIGEgR05VIG1ha2UgZXh0ZW5zaW9uCi1saWJlZGF0YXNlcnZlcnVpL01ha2VmaWxlLmFtOjExODogd2FybmluZzogcGtnY29uZmlnX0RBVEE6LSQoQVBJX1ZFUlNJT046IG5vbi1QT1NJWCB2YXJpYWJsZSBuYW1lCi1zZXJ2ZXJzL2dvb2dsZS9saWJnZGF0YS1nb29nbGUvTWFrZWZpbGUuYW06Mjc6IHdhcm5pbmc6ICclJy1zdHlsZSBwYXR0ZXJuIHJ1bGVzIGFyZSBhIEdOVSBtYWtlIGV4dGVuc2lvbgotc2VydmVycy9nb29nbGUvbGliZ2RhdGEtZ29vZ2xlL01ha2VmaWxlLmFtOjMzOiB3YXJuaW5nOiBwa2djb25maWdfREFUQTotJChBUElfVkVSU0lPTjogbm9uLVBPU0lYIHZhcmlhYmxlIG5hbWUKLXNlcnZlcnMvZ29vZ2xlL2xpYmdkYXRhL01ha2VmaWxlLmFtOjMxOiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLXNlcnZlcnMvZ29vZ2xlL2xpYmdkYXRhL01ha2VmaWxlLmFtOjM3OiB3YXJuaW5nOiBwa2djb25maWdfREFUQTotJChBUElfVkVSU0lPTjogbm9uLVBPU0lYIHZhcmlhYmxlIG5hbWUKLXNlcnZlcnMvZ3JvdXB3aXNlL01ha2VmaWxlLmFtOjg1OiB3YXJuaW5nOiAnJSctc3R5bGUgcGF0dGVybiBydWxlcyBhcmUgYSBHTlUgbWFrZSBleHRlbnNpb24KLXNlcnZlcnMvZ3JvdXB3aXNlL01ha2VmaWxlLmFtOjkxOiB3YXJuaW5nOiBwa2djb25maWdfREFUQTotJChBUElfVkVSU0lPTjogbm9uLVBPU0lYIHZhcmlhYmxlIG5hbWUKLWF1dG9yZWNvbmY6IGF1dG9tYWtlIGZhaWxlZCB3aXRoIGV4aXQgc3RhdHVzOiAxCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1PZmYtQnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0KLUNvbmZsaWN0czoKLQljb25maWd1cmUuYWMKLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNDlkNzUwNi4uMWM4MDJmZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjEsNyArMjEsNyBAQCBtNF9kZWZpbmUoW2FwaV92ZXJzaW9uXSwgWzEuMl0pCi0gZG5sIEF1dG9jb25mIC8gQXV0b21ha2UgSW5pdGlhbGl6YXRpb24KLSBBQ19QUkVSRVEoMi42MikKLSBBQ19JTklUKFtldm9sdXRpb24tZGF0YS1zZXJ2ZXJdLFtlZHNfdmVyc2lvbl0sW2h0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUV2b2x1dGlvbi1EYXRhLVNlcnZlcl0pCi0tQU1fSU5JVF9BVVRPTUFLRShbZ251IDEuMTAgdGFyLXVzdGFyIGRpc3QteHogbm8tZGlzdC1nemlwIC1XYWxsIC1Xbm8tcG9ydGFiaWxpdHkgLVdlcnJvciBmb3JlaWduXSkKLStBTV9JTklUX0FVVE9NQUtFKFtnbnUgMS4xMCB0YXItdXN0YXIgZGlzdC14eiBuby1kaXN0LWd6aXAgLVdhbGwgLVduby1wb3J0YWJpbGl0eSBmb3JlaWduXSkKLSBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCi0gQUNfQ09ORklHX1NSQ0RJUihSRUFETUUpCi0gQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCi0tLSAKLTEuOC4zLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDAzLWNvbnRhY3QtUmVwbGFjZS10aGUtTm92ZWxsLXNhbXBsZS1jb250YWN0LXdpdGgtc29tZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDMtY29udGFjdC1SZXBsYWNlLXRoZS1Ob3ZlbGwtc2FtcGxlLWNvbnRhY3Qtd2l0aC1zb21ldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2RmYThiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDAzLWNvbnRhY3QtUmVwbGFjZS10aGUtTm92ZWxsLXNhbXBsZS1jb250YWN0LXdpdGgtc29tZXQucGF0Y2gKQEAgLTAsMCArMSwyMDIgQEAKK0Zyb20gNGRmOGJkOGFlNDI1ODI4OTY2M2IyN2FmMTIwNzAyN2M3ZWUwNjM0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgNCBBdWcgMjAxMyAwOToxMzoyNSArMDIwMAorU3ViamVjdDogW1BBVENIIDEvNV0gY29udGFjdDogUmVwbGFjZSB0aGUgTm92ZWxsIHNhbXBsZSBjb250YWN0IHdpdGggc29tZXRoaW5nCisgbW9yZSBhcHByb3ByaWF0ZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CistLS0KKyBzcmMvYWRkcmVzc2Jvb2svbGliZWRhdGEtYm9vay94aW1pYW4tdmNhcmQuaCB8IDE3OSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMDMgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYWRkcmVzc2Jvb2svbGliZWRhdGEtYm9vay94aW1pYW4tdmNhcmQuaCBiL3NyYy9hZGRyZXNzYm9vay9saWJlZGF0YS1ib29rL3hpbWlhbi12Y2FyZC5oCitpbmRleCA3ODJkMzdiLi41YjBiMjUwIDEwMDY0NAorLS0tIGEvc3JjL2FkZHJlc3Nib29rL2xpYmVkYXRhLWJvb2sveGltaWFuLXZjYXJkLmgKKysrKyBiL3NyYy9hZGRyZXNzYm9vay9saWJlZGF0YS1ib29rL3hpbWlhbi12Y2FyZC5oCitAQCAtMSw4MCArMSwxMDUgQEAKKyAjZGVmaW5lIFhJTUlBTl9WQ0FSRCBcCisgIkJFR0lOOlZDQVJEXG4iIFwKKy0iWC1FVk9MVVRJT04tRklMRS1BUzpOb3ZlbGwgWGltaWFuIEdyb3VwXG4iIFwKKy0iQURSO1RZUEU9V09SSzo7U3VpdGUgNTAwOzggQ2FtYnJpZGdlIENlbnRlcjtDYW1icmlkZ2U7TUE7MDIxNDI7VVNBXG4iIFwKKy0iTEFCRUw7VFlQRT1XT1JLOjggQ2FtYnJpZGdlIENlbnRlciwgU3VpdGUgNTAwXFxuQ2FtYnJpZGdlXFwsIE1BXFxuMDIxNDJcXG5VU0FcbiIgXAorLSJURUw7V09SSztWT0lDRTooNjE3KSA2MTMtMjAwMFxuIiBcCistIlRFTDtXT1JLO0ZBWDooNjE3KSA2MTMtMjAwMVxuIiBcCistIkVNQUlMO0lOVEVSTkVUOmhlbGxvQHhpbWlhbi5jb21cbiIgXAorLSJVUkw6aHR0cDovL3d3dy54aW1pYW4uY29tL1xuIiBcCistIk9SRzpOb3ZlbGw7WGltaWFuIEdyb3VwXG4iIFwKKy0iUEhPVE87RU5DT0RJTkc9YjtUWVBFPUpQRUc6LzlqLzRBQVFTa1pKUmdBQkFRRUFSd0JIQUFELy9nQVhRM0psWVhSbFpDQjNhWFJvXG4iIFwKKy0iIElGUm9aU0JIU1UxUS85c0FRd0FJQmdZSEJnVUlCd2NIQ1FrSUNnd1VEUXdMQ3d3WkVoTVBGQjBhSHg0ZEdod2NJQ1F1SnlBaUxDTVxuIiBcCistIiBjSENnM0tTd3dNVFEwTkI4bk9UMDRNand1TXpReS85c0FRd0VKQ1FrTUN3d1lEUTBZTWlFY0lUSXlNakl5TWpJeU1qSXlNakl5TWpcbiIgXAorLSIgSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeS84QUFFUWdBYmdCa0F3RWlBQUlSQVFNUkFmL0VBXG4iIFwKKy0iIEJ3QUFBSURBUUVCQVFBQUFBQUFBQUFBQUFBSEJRWUlCQU1CQXYvRUFFWVFBQUVEQXdFRkJnTUVCZ1FQQUFBQUFBRUNBd1FBQlJFR1xuIiBcCistIiBCeEloTVdFVElrRlJjWUVVa2FFSU1rTEJGU05Tc2JMUkZtSnlkUmdrTXpZM1EwUkdncEtUb3NMaDhQL0VBQnNCQVFBQ0F3RUJBQUFcbiIgXAorLSIgQUFBQUFBQUFBQUFBRUJRSURCZ0VILzhRQUxSRUFBUU1DQXdZR0FnTUFBQUFBQUFBQUFRQUNBd1FSRWlGUkJSTWlNVUZoTW5HQmtiXG4iIFwKKy0iIEhSQnNFVW9mRC8yZ0FNQXdFQUFoRURFUUEvQUgvUlJSUkVWd1hlOVcyd3dGemJwTlppeGtjMXVxd1BRZVo2Q29IWGV2TGZvbTFkc1xuIiBcCistIiA5aDZhNkQ4UEdDc0ZaSE1rK0NSNG44Nnl6ZGJycWZhWnFZQlNucDBoUlBaTW9HNjJ5bm9PU1IxUHVhOExnMFhQSmVnWDVKdjZrKzBcbiIgXAorLSIgYkJqcld4cDIyTGxrY0JJbEhzMEhxRWppUjY0cGVUOXVtdXBxeVdyaEhocFA0V0k2ZUh1cmVOVzdUbXcrREdhVEkxRkpWSmR4a3NNXG4iIFwKKy0iIHFLRzA5Q3JtZmJGTUNIcEN3MnhBVERzOEpySDRneWtxK1o0bXFpZmJNVVpzeHBkL1FVbGxLNTNNMlNDYjJ4YStiWHZmMGdjVjBVd1xuIiBcCistIiAwUi9EVmt0SDJoZFV3bHBGeGpRcmcxNDkwdExQdU9IMHB2djJxRTRqZGNoeDFwOGxOQWo5MVZhODdPdE0zUkN0KzJOeDNEeWNpL3FcbiIgXAorLSIgeVBZY0Q3ZzFFWitSUjRyU01JOWIvUzJtaGRiaEtzbWtkdFdtTlR1TnhuWFZXMmN2Z0daUkFTbytTVjhqNzRQU21PbFFVTXBPUldQXG4iIFwKKy0iIE5VN01yalkwcmxRRm1kRFR4T0U0Y1FPbzhSMUh5cWUyWjdaSjJtMzJiWGZIbkpWcEpDVXVxTzh1UDcrS2VuaDRlVlhrRlJGVU14eFxuIiBcCistIiBHNFVPU04wWnM0TFUxRmVFT1d4T2l0eVl6cUhXWEVoU0ZvT1FvSGtRYTk2M3JCRkZGRkVSVWRmcjFFMDlZNWQxbXIzWThac3JWNW5cbiIgXAorLSIgeUE2azRBNm1wR2tMOW9qVXltMFcvVHJMbUFzR1UrQWVZQndnZlBKLzRSUkVxcnJjYjF0SjFvVXBCWExtT2JxVVo3clNCeVQwU2taXG4iIFwKKy0iIEo4emsxcEhRbWlMWG8renBiYWJDM1NBcDU1UTd6eXZNOVBJVXVkaUdtVVJiUzdmcENNdnpGRnRvbjhMU1R4eDZxSDBGTTdWVjlWWVxuIiBcCistIiA5TXpaN2FRdDV0QVN3MysyNm9oS0IvekVWU1ZGVnZaekdNdzAydHFlL2twYkk4TE1SNi9DL1h4cTlRYWdmYmJQK0lXMVFRNFJ5Y2ZcbiIgXAorLSIgeG5jSFJBSUovckVmc211MmE5RmdzbDJYSVpqdGo4YnF3Z2ZNMSs5TDJWRmtzRVNBVjlvNmhHODg2ZWJqcWp2TFdlcFVTYXJ1dGRuXG4iIFwKKy0iIE1YVitvYlJjWmtzL0N3Q1E1REtNcGVCT1R4end6Z0E5S3dmVHRmeFBPU0I1R1FVWGM5cE9qb0MrelhlMkhWNXhpT0M2UG1rRWZXcFxuIiBcCistIiB4ZTZ0QVdnaFNWRElJT1FSWHhla05PeDRiMFdQWllMTFRyYW0xOW13bEpLU01IampOVXpRZDJkWk03U054Y3pjTE9zdHRxVnpkWXpcbiIgXAorLSIgM0Zld0k5aUtwSzJtak1aZEZlN2VkOU5mVDlxWkRJNE9BZDFWa2tvNTBuZG91aTIya3VYcTJOQk9POUpaU09IOXNEOS96ODZjOGdjXG4iIFwKKy0iIERVSk5RbGFGSlVrS1NvWUlJNEVWR29LcDlQSUh0OWU2bHlSTmxaaGNxbHNKMmd1UXB5ZEwzRjRtTzdrdzFLUDNGY3lqMFBFanJuelxuIiBcCistIiByU0FJSXlPVllmdnNKM1RHcWxDS3BUZll1SmZqTEhNRE9SOGp3OXEyRm95K28xRnBXQmNrWS9YTXBVb2VSeHhIc2NpdS9qZUpHQjdcbiIgXAorLSIgZVJYUHZhV3VMVDBVL1JSUldheFFlVlk4MngzQlZ3Mm9YYkp5aGdvWlIwQVFNL1VtdGhLKzZmU3NXYlJRVzlwVjczeC90WlB0d05FXG4iIFwKKy0iIFdqOU53MFd1d3dJS1FBR0k2Ry9jQVordFJXMGx4NW5URVc0TnRxZGF0OXhqeTVDRWpKTFNGWlA1SDJxYVlkQ2twVWs1QkdRYTdBcFxuIiBcCistIiBEclNtM0VwV2hZS1ZKVU1nZzh3Ulh6K2txeXlURzdWWFVzVjIyQ2xyZmM0OCtDek1pUEllanZJQzIzRUhJVURYTmU3OWI3SGJYYmhcbiIgXAorLSIgYzVTSThadm10WjVueUE1azlCUzdkMG5mZE1QdVNkRDNKdEVaYWl0ZG9tNVV6bngzRHpUNmNQV2t2cS9WMTYxMWZHVzVuWnRCQ2d5XG4iIFwKKy0iIHpGYlhodEN5Y0U1SnhrbnhQaFhSMDdSVWVCM0QxMUgrOWxBZndjeG1ycnFMYnhjSHBpa1dHQXcxRlNjQnlVa3FXdnJnRUJQcHhxaVxuIiBcCistIiB6dGRYV2RxbU5xSUlqeDdneWtKVXBoSkNYQU0vZUJKNWc0UFFDbUJaTmlES1dFdTM2NHVGMGpKWWg0QVQ2cVVEbjJGVnU2YlBJa1RcbiIgXAorLSIgYVRCMDh4S2VNT1UySDk5ZUN0S1J2WkdRTVo3aHdjZU5aeFZHenNibU16SUJ2NWRmTmVPam5zQ2RVd2JUdEtzVjhuSmdJY2Naa3F3XG4iIFwKKy0iIGxKY1RoRHF2Skp6OHM0elV0TFZ6cGMydlpaS3QrcUJJa3lVS3QwVjBPTktTZSs3ZzVTQ1BEcjlLdjB0em5YUDFjTk15UWZ4blhCQ1xuIiBcCistIiB0cVV5dUIzZ3NsZnRQakpMa0dXQjN1ODJvL0lqODZiZjJlN2lxUm94eUlwV2ZocEMwSkhRNFYvNUdsVnRKY0J0MFJQaVhpZiswMHdcbiIgXAorLSIgUHM1QlF0TnhQNFRKUDhLYTZyWlpKcFczNy9LcTY4QVRsUGVpaWlyQlEwSGxXUjl0OXFWYnRwRXAvZHdpWTBoNUo4TWdicC9oK3RhXG4iIFwKKy0iIDRwTTdmZEtMdW1uMnJ4R2JLbjRCS2w0SEV0bjczeXdEN0dpTDdvMjhKdXVsTGJLQ3NxTEtVTC90SjdwK29xeUllNGM2Ukd5elU0Z1xuIiBcCistIiBUSExOSmMzV3BDdDlnazhBNTRqM0dQY2RhWnVvb3N5ODJWMjNRcGFZcGtFSWRlSUpLVWVJQUhpZVhQa1RYQTExRHVhc3NKc0NlZllcbiIgXAorLSIgL1N2WVpONUZpR1pVOWVkUndMREFYSm55Mm1SdWtvU3RRQldRT1FIalNqZzdQWUU3Wm16Y1piN2NHNktLNUNaRDZ0eE9DY0pRdlBnXG4iIFwKKy0iIFFBUWZBbjJxNlJOT1dpMUQ5SjNSNWR3bFIyeG1aUFZ2OW1sSThCeVRqNTlhcjA5TG0walVJUWw1WTB6QVVNclFTUGlYZkhIcHl6NFxuIiBcCistIiBEMXFUUnZNUUlpZVFBUVhPdGxsZklEcmUvWDJXcVZtSThRejZEOXEwYlA5U08zN1NyU3BXOFpVVlh3N3ErWWNLZVNnZVJ5TVo2NXFcbiIgXAorLSIgcWFtbXZXVGFsRXYxeWpPSnRhV2ZoMjVDQnZCT1VrSFBseFVlSGx5cS9NaVBDaXR4b3JTR1dHMDdxRzBEQVNLNDV4Wmx4M0dKRGFIXG4iIFwKKy0iIFdsakNrTEdRUjZWR2luWTJvZklHOExyaTJnT2kzN2h4WUczekMrdVQySFk2WkRieUZNckFVbHdLN3BCNUhOUmNwN254cXB6ZE4zR1xuIiBcCistIiBDRlE3Tk9iVGEzbkFwY2FTTi9zdU9lNFNEdzZWSzNPNHN3b2pzcDlXR214azlmSURyVzRVeldrYnQySy92NjkxdmplYzhZdFpVVGFcbiIgXAorLSIgQkwrSXVNYUlqaVdXeXRYUW4vd0JENjA4dGd0clZDMFcyK3RPRlNGcWQ5aWNENkFWbm1GRmw2bjFBaG9BbVJQZHdjZmdSNG4ySDdxXG4iIFwKKy0iIDJQcGkxTjJleFJvamFRbEtFQklIa0FLN0dtaTNNVFdhTG42aVRlU0YrcW1hS0tLM3JTaXVlZEVhblEzSTdxUXBDMGtFRVp6WFJSUlxuIiBcCistIiBGam5hUm9TVm9xL0tjWVF2OUhPcjNtSEIvcXp6M1NlbmhWaTBmdEFibk5Od0xvNkc1aVFFb2RVY0pkOWZKWDc2MFpxTFRrSFVkc2RcbiIgXAorLSIgaFRXRU90dUp3UW9WbC9YR3lTN2Fha09Qd0duSmNET1J1akswRHFQSDJxSlYwY2RVekMvME9pM1FUdWhkZHFZODRJdUZ1a3duRkZLXG4iIFwKKy0iIEpEU21sRWN3RkRHUjg2SVNJMXRndFE0allhWWFUdW9TUC91ZEpTMWF6dkZvQVpMbmJzcDRkbS9rbFBRSG1LczBmYVZFV2tmRXczMlxuIiBcCistIiAxZjFDRmo4cTU2WFpOU3dZRzV0N2ZTdDQ2eUI1dWNpbU01TDRjNjQzcFhXcVU1dEN0ZU1wUktVZklJSDg2aXBtdm5uQVV3b1FTZjJcbiIgXAorLSIgM2xaK2cvbldFZXk1eWZDdHJxdUJvOFN1MCs0c1E0NnBFcDFMVFNlWlVmb1BPbG5mcjY3ZlpLUWxLMFFrSy9WdGZpY1Y1bnJYT2tYXG4iIFwKKy0iIFhVazlLUUhwMGduZ2hJN3FQeUFwMWJPZGtDbUgycm5lUUhIeHhRakhkYjlPdldyMmoyYzJEaWRtNzRWWlZWcGxHRnVRWFJzYzJmT1xuIiBcCistIiBRZ2IxY21zU1hRTjFKSCtUVDREK2RQRUFBQURrSzg0OGR1TXlscHBJU2tER0JYclZrb0NLS0tLSWlpcXJyYlg5bTBKQVJJdWExcmVcbiIgXAorLSIgZEpETWRvQXJjSTU4K0FBOHpWTHNPMjZScWlTOUdzdWtwY3Q1bEhhS2JUTGFTcmQ4d0ZFWjlzMFJONnZHUkdaa3RsRHFBb0h6RktxXG4iIFwKKy0iIEp0b216clBPdXpHalp2d0VCUlRKZmNrdHRwYlVPYWU5ako1Y0JrOFI1MTRXcmJvN2U0ODkrM2FUbHZ0UUdUSWtxRWxzZG0yTWtxNFxuIiBcCistIiA0enlQS2lLZjFIc2owOWZsS2RYRVFoNC9qUjNWZk1VdkovMmV0MVpNT2U4a2VTZ0ZmeXF6MkxiZkoxTTlJWnMya0pzeDJPMFhuRU5cbiIgXAorLSIgeUVBaEE0WndjWjU4aHhyN1pkdGt2VVM1U2JUbzJmSk1Sc3VQa1BvU0cwanpLc0RQUGh6NEh5b2lwRGV3QzQ3K0ZYRldPallINTFZXG4iIFwKKy0iIGJUc0FndHJTcWM4OC9qd1dyQStReFVsWXR1anVwWjZvTm8wbkxsU1V0cWRLRXlXMDRTTVpPVllIaUtqUDhBQ1V0NS93QjNwWC9YVFxuIiBcCistIiAvS2lKbldMUTFuc1RTVVJvcmFkMzlsSUZXWktVb1RoSUFIU2xOcURiTFAwc2lLdTk2TW5RMHlnU3lWeUd6dll4bmxuQjRqZ2E4N0ZcbiIgXAorLSIgdHRsYW1YSmJzMmo1MHhjWnZ0WFV0eUVaQ2ZQQjUrZ3lhSW05UlNldG0zSjY4UmJoSmdhU21QTTI1dnRaYXZpVzA5a25qeElPTThqXG4iIFwKKy0iIHk4cTdMSHR6c3R3di9BT2hybEJmdGtrdWRrRk9MUzQzdjV4Z3FTZUhIeDVkYUltclJYNVF0SzBoU1RrR2lpTE1QMmhvOHdhMWlTblxuIiBcCistIiBRb3hWUlEyMGZBS0NsRlE5ZUlxcTdMTEplN3ZyZUc3WlpDb1pocUQ4aVpqdXN0am5ud09Sa1k4YytXYTFacWJTdHQxUEJNYTRNSWRcbiIgXAorLSIgUno3d3pnK2RMOGJFYkExdnBhN1J0SytDa3BkV0FmWGpSRkI3VXBDTmU2S2RtNk5uSmZ0MXFsdUt1VUpsdmRLem5QYllIM2h6UFhKXG4iIFwKKy0iIFBNR3Fac2svemMyZ2YzRzUvQ3VtYzNzUnNUTzkyUmNiM3VCM1hWalAxcjRqWWZZR3dvTjc2UXNZVUV1ckdSNUhqUkV1ZGhVdDJCUFxuIiBcCistIiAxVE1ZSUQwZXl1dW9KR1J2SklJK29xOTZJMml3dFZ6N3JiN1paV2JhbHl6eUo5d0tVakxzcktFa2pINGNFOCtKejA0OWJldyt3TmJcbiIgXAorLSIgM1o3Nk40WU82NnNaSGx6b2IySDJCa2t0YjZDUmdsTHF4a2VYT2lKWmJBdjlJTWorN1gvd0I2YWc5bEduRWFqMTdDUkpBK0JoWm15XG4iIFwKKy0iIGxLKzZFSTQ0UFFxM1I2RTA2VzloOWdaVnZOYjZGWXhsTHF3Y2ZPaHZZaFlXdDdzOTlHOE1LM1hWakk2OGFJbzdVeGdiUjlJYWpoUVxuIiBcCistIiA3L0R1OXlpU0YzUzN0TU5yU3Rsa0FBdDk0RFBESTRlSkZVdllmTmV0cU5ZejR4QWZqV1p4NXNrWkFVbkpIRDFGTVZyWWhZV1ZieldcbiIgXAorLSIgKzJvakdVT3JCeDg2RWJEN0EwRkJ2ZlJ2REN0MTFZeVBJOGFJbzIzemRQNmkyZTYyMVRhVUppWENmYTFJdWNGUEp0NUtWbmZIUldTXG4iIFwKKy0iIGV1UFBOWjJZYWRma05zc3BVcDFhZ2xDVTh5VHlyVFNOaDlnYkNnamZTRmpDZ2wxWXlQSThhbDlQYkl0UDJXYW1VeXdrdUo1S09WRVxuIiBcCistIiBlbWVWRVZ3MDJaSDlINFlrRXFkRFlDaWZFNG9xWGJhUzAybENSaElHQlJSRi8vWlxuIiBcCisrIlZFUlNJT046My4wXG4iIFwKKysiRk46WW9jdG8gUHJvamVjdFxuIiBcCisrIlVSTDpodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvXG4iIFwKKysiRU1BSUw6eW9jdG9AeW9jdG9wcm9qZWN0Lm9yZ1xuIiBcCisrIlRFTDtUWVBFPVZPSUNFOiswMCAwMDAgMDAwIDAwMDBcbiIgXAorKyJBRFI7VFlQRT1IT01FOjsxNzIwIEJlYXZlciBDcmVlaztEYW0gIzQ7UGxhbmV0IEVhcnRoXG4iIFwKKysiTEFCRUw6MTcyMCBCZWF2ZXIgQ3JlZWtcXG5EYW0gIzRcXG5QbGFuZXQgRWFydGhcbiIgXAorKyJQSE9UTztFTkNPRElORz1iOmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHUUFBQUJrQ0FZQUFBQnc0cFZcbiIgXAorKyIgVUFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFGRTlKUkVGVWVKenRuWG1RSE5WOXh6XG4iIFwKKysiICt2ZTg2ZHZVL3RhblVpQ1Z3UlF1YUloU0VPTXNJaUVzYkdSdGlWR0Z5NEVzZFU0YklOT0lDUFV0a1FIT3hnWW9pRFRWSnhDQml3TVxuIiBcCisrIiBDQnhCakFsc0lVbEVReklTQWhaTjVKVzJsM3R2Yk56OUpVL2Z1L043Q3dnVnF1Vm1FcjE5NC90N2VudTk3cDczdmY5enZjYkNCRWlcbiIgXAorKyIgUklnUUlVS0VDREg1VUIvMERZd1h3WnYvTWg4QUszSVNnQnM0QXdBUjI5b0N3TndGZlFCS0xYWS9tRHVjSEZnZjlBMkVLRVhaTWlUXG4iIFwKKysiIFlkdGRVQURmZitRQ0E1US85QlFCK1hrN3c5YTI3dnB4UDhnMEFPOUo0SVlBNjQvcU9FM20vazRXUUlXV0dzbUpJL3EwZm4yUCt0NVxuIiBcCisrIiB6ZXJ3RllESzBBQ0FnQ0FNc1hSdUNMcVBEVFE3THZCZ29nU0RZOERPRFdMdmd1UU9Ma3Y5dDZRbTUra2hBeXBNd1FmaUZsaGttWnNcbiIgXAorKyIgdlkvOXJPekFYSzU5RWtBRWM4N0JERDljOTljQzZDVTh0N3R1bUQvUFEwQS91Q09Id0Y0Vm02cE9XYm5jMjBBbHZJRE9UblFGOG5VXG4iIFwKKysiIGhKT1QzWFEvQUs3anlKUldVU1hISXcxdkFRUVYwNzhCRUoxLzdmOU13cU1lZDRRTUtUTk1pQ0YvdVAvT05nQzdZL09EQUY1MllDRVxuIiBcCisrIiBBcmhjQndNSURpTVppTGtBc1ZYOGZ3Q2xmdmZPckFMbGRkNXdHWUdlNkhnUlFRZnBrQUJYeGkvZmpDS2tDWDZpaHRKNnJ0RkFQOGlcbiIgXAorKyIgTnkzbkFmQUo0ZGsvT2lDUUJzWlNuNXZMb1hJSithZXpWQXhmeHZQRENSWno1UkNCbFNacGdRUXpiZStxWHpBWUxjd0FNQWdSTTBBXG4iIFwKKysiIFVUUTA3MlNmNkpLbW84SFdRVmdOU2M3QVU2K1lHNEFFTGlaS1hJVElpYzhnc0w5Mko1dXl6WGl4ekJHYngxdElBNzN5SU1rSzJWclxuIiBcCisrIiB4L1I1Y2c5S2FYVTQwZ0NBSDIvL2xPa2pzbTNXa3dCOTdLb0V5T0hVQTJUVHc5SjVVME1Xd05tNXJ3OWczdGZ1ekIzbHF6cHFoQXdcbiIgXAorKyIgcE0wUW1jbEUwa25JQnZPeXdEK0FwQjRCQUcydTJFbW9Fbm53K3hFQUFzT0REN1MwQXVHTE1LWlJSbllSQlJwTUNmTU1NTFROVUlQXG4iIFwKKysiIHZLYzB1MldQb2FTeitLYmV1UFBRWGdlOEkrNVhlTERBcXNYNWsrT25LN2J3SndlNTBiQUhMWmZCV0FvOXYyRG5mSzNkbnh0UUN2M1xuIiBcCisrIiB2SDFXd0IyVFBub1dvRExMcnZzWGJYSFkwSElrRExEaEJoaXp6eDFKNEM3dFhjWVFBVk9DNEN0UllBVnlLaDIvRFFBODg2Wm9RQVNcbiIgXAorKyIgVlZHZ2FFcW9zVEpzRkVPVU44YUp5TmpCNkpkZVkrbXhGWlEycVN3dFF6dzUwYzRlU0poalVXL3dId0YyNzVPK1VwWDFJdHMwdzcyXG4iIFwKKysiIDg4ZVNQTEFad29pTWZBV2oxMTMxYUgzaU9TVWJJa0RMRGhCaHkybWUvdkI5Z3cyMVhQUVFRSDh6Y0FPQXJtZEFESjZNQXBwNVNCMFxuIiBcCisrIiBEMWxLcVM2d3RqT0RCR3VMWXQvRkd4SlNNN2ZETm1nbEYvUVJrZm8yYU9SZWw1Wmx2c3k5Tk1LZmJSMENMWEpQWklHNDRuNTFoS1BcbiIgXAorKyIgbmNMZmNwKzNza25BTHhNdW5ic081a3NoQXdwTTB5SUlRYUxycjNyUm9EMXQxNVpCNUFZNnZ4N2dHaEtSbHhOZTYxb09MWXRvMU5mXG4iIFwKKysiIEYyaG1LRS9MQlROcU5WTmdsUDNoeXZ5dUN0Zkl2bS9jWXlxcHQ3WStUMnQ4WTVsU3Vxc3ZFZjYwejRnRDhNYXJZdlZYMVdpYlJaL1xuIiBcCisrIiBzYUhubHFPUVdnRmpEekZmZSs2MGNHMEtHbEJrbU5VQzEvdDlYbmdmUTFuVGcxd0RUWjlqaXpTM00yM3A0K3FaejNYMUV4b1d5N0VcbiIgXAorKyIgSmJnWEh5YXUxSkcvMG9mMHhidW8zQTFaOTdwWlo5Z1gzdW1DMmdIUVJraHJJQXZMeGVMSFRiRW9ZWVpudFdiQmpBcjV0NkhjREhyXG4iIFwKKysiIDczOTUwZDREY2VFa0NGbGhtT1NJV094Nkx3cW1ZeXpOZFVBWHJhdjVMaXlwVHNWRTM5VHdZWXdFN3czeWc3Um1vN1J0Z2pNeURmWFxuIiBcCisrIiAySHJQN0JzbUdjMUlVOHBZOHJicHNpaW5ESXRpQ2ZFVTE5YUx6ZExaS1l4SlZOYnRBbkFxNjM4Q2NNRnhaSVpCeUpBeXc2VElrR0RcbiIgXAorKyIgdmM3TUJ2TTVuTmdDb1lLQUpJTkREMWRJZVZ4UExBTkdFS1BpckhOUFNxRWFOdkRITVVLVmJZNW5iaGltYUlmcTRyNEl4VndXNnVWXG4iIFwKKysiIEVXdnlmM1kybFowdE5yZFFGczNoYjdLWUNUYUg0VTRJSnJiMy9qL2Q3QlpDRmtTSmxoVW1SSUx1Y2tBR0tEMlNZQW5Bd0FGbUw1WlxuIiBcCisrIiBqS1pBQ0NURmdzK095ekhzM2tKTHpnNjJTMmZMeExXMDh5d3RXeUl4dVJZTENHM1hCR1hiVlYxQlFDcFNuMnRsaFdXSGRWUEtHSXRcbiIgXAorKyIgTUhaS2lTRWliZmlhYlRYTkVsUDV5Mm1OandHb2o5eHl3cGhoRURLa3pEQXBERW5NVy9ZbVFHN0REeVMyUHNCWEFGN2RzUE5pZ0RlXG4iIFwKKysiIDI3bXNEQ0l6ZnlaWlJhK21SR1RFeGpGRVN6Vkt4a2o2TTFWendlM25DTWlmZnI5dVE0dzNWMG5aenN6VFdXQzk5TkRiSzZFOVdKZ1xuIiBcCisrIiB0dHFtaEM3STdLYXZGaHhXcWJBZHhJNVpTamZRZVRoWkFoWllid0N5a3pUS3BoR0Y5MDR5Yjk3MVVBdjFsNWhRUFEzdVpkTFoxSnRcbiIgXAorKyIgS25nWE5UK0VFdVpnRlZ4ZlBnRmhkVUlZYXRrejF6ckcvVllxN001VHhTRnZRZGxmOU4yMlIvSlNEaTJycW80TDg2Y0pwckF3dmwyXG4iIFwKKysiIEwwQkZXNjM0VldLUkQyeU5TY2lRTXNPa01zUmc2N3JWVlFERDY5YWNCb0NxMXU3M1VvZWc3NWU2UTd4UnJoTy80SWZVenNQUkhnK1xuIiBcCisrIiBLTEROWCtKYWNrTlRxYmp3cVI2cXJkTEJKRzZYNVVRR3EvZjM2MnIyVjF3Rjh0TDcxZndGaW5UTStzSXo1a0NGbGh1UENrTnhiVzJcbiIgXAorKyIgWUFKT3hZRzBDdnR0WWVmV1VuQUdmT3FBZmc5RmJaNXJYajBMT0w4N3V2S2VJYUVWSEl1ZFl1a0RIbktXMzRZUnRub3p4YWp6WkNhXG4iIFwKKysiIDVLaTdsYU0wcWFyNG5vbjBab0JpQy85NXVhSlBPOWtJbVJJbWVHNE1DVGlaV1lEeEpPUmFRRFBicFRsZnZzbEs0aFVwNHphczJiS1xuIiBcCisrIiBmQjl4U21VTEZJMUVJenNLM25odmpMTlJsVExINE0yREF3QThzV2svQU9kOXFBMkFEMCtyTDU2a1U0eWk1Qy9Xbnp3NDdvYzhUZ2dcbiIgXAorKyIgWlVtWTRMZ3l4TFc4dWdCOTRjWUFEZzdtU2xGRVROSXBvR25nNmRCdFJ4ZkhoYW9lamp1N2lHUVlZZDNzcElRcGFtUWxvZFE4S0MxXG4iIFwKKysiIDB0Vy9iM3lmNkhXb3BhVmtWU1pJaWJIVDdsNkoveStDQmtTSmxoVWhueXA2ZWVpZ1BrOXY1MkZrQlVCNkMweDV6K3JJemUyWTJTT1xuIiBcCisrIiBLZkdXT3lqMDBCTndvTUphcG5BazlMNmxUVkc3Smdvc0dGS2JVcTBLcytYNVFvWlI2L2E5WW9HamE5NUZuaE9KVUFRQkRGOVAvbWpcbiIgXAorKyIgZmZiSlFzaVFNc09rTWlUYTJha0EwazVPZk9DT2hHYVh6VzhIb0NjdCs2ZTMxd0NRMGRwVlhzc0xOZHIvcnVWSm9CbGlaSXJKQjFLXG4iIFwKKysiIDJEdGtXQnJ6OFkzU3cyVTNDd25rNjZOU2lBMW14YUhFTUtsOENhSzRublcxLytqNlRpQjB5SklSZ1VobXlaK1pNRjZCeXk1WnVLT1xuIiBcCisrIiBha1RhdVMrWHg2ald6TnFEYm1oeGZJdU9qdU9seG9LMW1SQXFENXpMTUJtRHAvQVFBZEw2NEZZSERQZGdCYzdadUt4b1dVUml0TGFcbiIgXAorKyIgYXQvK2Z4cFFISGtHYzh5Z0d1cVF5amxBc3hiZHZuZ0JCNmJUWnMydEFOWUZmRTVBUFBuTFB5RE9hYVVHanFhdGtLR2xCa21sU0dMXG4iIFwKKysiIEYwdXRxZzAvdmU0RkFLV2lWd1BrQTZjS0lIQjhuYXFwU3VJaVJ2TnBiR2dvdEdWa1FWV3JSRk5ycGs0SDRHQzdiTDBka244UVQxU1xuIiBcCisrIiBVM29SeFpXa1pGTGVNYkZIdmNBZDRudndmajlkTWFLbjBzOC9mZnpIQWE1czJyZ0Y0Zk5VYUFCb2FHM2FiYzM1ODY4ckxBSzY1L25cbiIgXAorKyIgdmpTdEFPR1ZKbU9DN1ZnRllHSWhUTy8rZHI3Z0RJRFhkK0NTRGllVW1BU0NGenV2UXU3RkZ0Rk9aOGJVM2JLZEhNUmdZbFBUV3FsXG4iIFwKKysiIDVzWkpjdkVPNHlaa2ROWkViNWVoT1BwNHprVktkajRxcUx1QllEUGZ1L3VqeC9OOHozeDlIMmZrcmJkVlFCNzN6NFlBM2p1OGFjRFxuIiBcCisrIiBnUDd1bnNKN2JablNsZ0dZZmZLc0N3RnV2ZTN1M3g2cDdaQWhaWVlUVWk5cnpjMWYvaTVBOThHM3Z3OVFveGYzVnlWRmhNVUxEcXZcbiIgXAorKyIgUmxycDhaaFZTUXNkRUc4ZkUxTTNXSzBRRzVleXNGK1FBUE10K0hjQ0pWajVpK3ZpYlcvN3pObmp2NGpqdmVJNDF2MWdFNE9GTFRTXG4iIFwKKysiIDdzTmdCbGk5OWdvSDlRQVR5Mytxa0NDL2RzMjZrQW1xYzBEd0VzWFhyUkpRQlhYM2Y5OCsvV1I4aVFNc054OGZZYUdOL1F2WGRkZFxuIiBcCisrIiBUN0F6cjFpQU8vYXVRY0ExeEdwWWV2UlBtOW1NWWt0RVpOWVNUSXFXOXNzM0RGTWNPVWFOeWVEZXlBdCs0UGErTEYwNGtoZVcvLzFcbiIgXAorKyIgN1czYkFTSm5ULzlYMDhkNG1mSExYOTgxRnlEdnVxS05SV3lkK0llK0Y2RjJNaVVhMytLTExpeFEvWW4wNmdCZ3NLdXJDdUIzdjN2XG4iIFwKKysiIHVoL3JRR2UvV1Y4aVFNa1A0aFpRWmpvdFFmK1dYUDI4RWNCUCt6d0NHNHNHbkFRYjZoeTJBN2wxYkZjQ2lPZ212YnU4V2o4WGF0NFxuIiBcCisrIiB2RmRtcnJxZ0ZJSkhYMUIxTVZWbWM5WkxLNmpzcVFUSU5idHN2K25zT3kvY3haY24wa0lWcEJxcVZPQWJUSHB6MW0rdmpLZC82dFVcbiIgXAorKyIgQm5vM2ZEb293OU1BM0M5WVVrQWpGcDFVSFQxZURyRElnaE10UWg5NFNnbmFXNUVWbVA5NnIvdWxSWEptWHdId0EvdnV2TjBnSVVMXG4iIFwKKysiIHora2EzV2ZJa0RMRE1USGs5ZisrTmdVUVQwZWFBRWFjM0pVQXZWMkh2ZzZ3cjNlZ0dtRDNpSXpxczViL0ZRQ1JFVW5yUENzaUF5K1xuIiBcCisrIiBibDFGMHk3cUJRdHRWemJMVXBMSkNDL1dvS0FDT05naEhSb1FKKzNkMUE5Q3hSNWd5TkNMSC8zeU9GQjQ2YzM0ckFOczZEd1lBRmZcbiIgXAorKyIgM0ZSU2dOemUxdkFjU1RrUnNBYWxNdFVyWjhTbnNHd0crczNnaGdSVzBwNm15cTIyblhqNmV0VU04a1hoZ2FCNk1Xb1VURnk5blhJXG4iIFwKKysiIFVSNDV1SEhmZ1R3OUF2ci8rR2RielJrU05saFFtcnZsdi80OWd5QTZORHc3UUQ1Yk44bEFQNndlSnJOaUxlYVdnS0F6dGUzSzRDOFxuIiBcCisrIiAvdjQ3QjJVQVJkTlNOM0hKS2NLQ2w5NHFFbmE3VHVhMElpYlpRYTZKYTg5SGhUWVlHNGZrZUkxT2ZxaE55U085OGJhRWJyZDNTcjVcbiIgXAorKyIgb2RWUm1nem5Wc2NMb2pYWHZQd1VnbjBpc0JoaXBFcGJWVG0wR1FOdXRPTm9MYWxuV0VXZVVJQ2hsRUlDbjFmRG1sdGJWOE43TU1BXG4iIFwKKysiIGdaVW1ZWU4wTjJyLzFGb2M1VWRzdHIzd0lnMTM4SlFLQVRDTnhBaHJFS1pDUTVWbElCWExya1BBQ2FEdTBEWU9mbUhRQU1XNUk1RlxuIiBcCisrIiAzeFk1dm1WRnhiNysvNGEwYmptYXRuUnBqUG1EdWRsZ0wrbzVWS1Z6bXFvVHNqeFhwMUNHdEdHcGFrRTBaZVRlencwVkpRaGxRbHBcbiIgXAorKyIgTzZtckdGSGZxQUEyYkpUNDB2d3pUcGY3bnRxcVE3MjYzdU9ZRktSZ1RPWjNhV0s0OVJpQVcydDlnWEVnWkVpWllkd002ZDM4WmlFXG4iIFwKKysiIEhNNTRmT2dQQXo0dW1rOG5MTU0yN2twdnBPVEpFTnEyWG1FeFNqNXp6VzhTMVVOOGoybFRQZEFtN1psNFRPMlQrMW1JSTk1OHFwSVxuIiBcCisrIiAyV0thSnREYytlQVVEdDFsMEEvRzFDMktVQ0dmbU5ta2tIdFVQK3FSSFpmMTNIaVd0MEZRbDNPRjNvdzYvWE5YNHJFckphV0FlNzlcbiIgXAorKyIgdTRRKzJqWDlyMEFYSEw1WmRKM2t3VFFYTE8rUGlqWm9IU3VVaENvOWFZUDIvYS9DbkRGMGl1S0hSOEJJVVBLRE9QWHNwTEZVR2ttXG4iIFwKKysiIEkzT3VuNVhSbWRhak1LMFpNNUFWYmFWclVPVEFxb3lNcUZQckpDVW4xeW8yd3V0L0V0Mjh0VU9PVndjRk1VV3RrUy9hWXU4K1l4RVxuIiBcCisrIiBBVFh0RURqVnJtUkJUSWl0U01XSEViSjFnbDlkMWZkZjN5M2s5U050V3R1Z05tSzNsajYwMW9iZ2VuaFZWY3A5OTNhS3ByYjUzRlFcbiIgXAorKyIgQ1hYaWxpSUZrdENSaWVYbUZrR2RQY3NnNENwSkkxMTVzK1ZueHl4ZHNjQlVLR2xCbkd6WkRUVHpxdjRITjVxWGZWaXdCWlY1MEpNXG4iIFwKKysiIEp5Unl0V0RPV0hJN2w1SmJONmFrZTk3ZDgxc2tURTFMUXJnMmtzL0JzQ1Q5ejBOd09ZK3NiYVhucnVnME4rZGEzNFB3RVU3SkdRN1xuIiBcCisrIiBjNzk0dm5kb1A5S2QvUkxTbmFiWG9YOXhrU1RqUGZ1YWVBRWU3aGRac2xXWmVyNXlYcktZN01EMm5oRUZVRjhoc2l6V0k5YjhTWE9cbiIgXAorKyIgbUs0QlgrNlJ2TnlzT3RHZFdQNmtBUG5ISjhnQWdrVXBxSDVicUFyRHR4T2NCVm54eXhlL2U4MFcrRDBLR2xCbkd6UkMxdVBoemRDXG4iIFwKKysiIC8rOU5zL0FSZ2VHSmdHMERHVVhRTFFQVEI4QUdCenQ1U3VQaGh0T0IzQXIydElBR3c0Sk14NS9oV3hRN3B5MHYzNlBnbnBMcG96dFxuIiBcCisrIiA5RGY3bVlaNlZjZjBybHJHWk1ZWWNLK3dvQWZ6Skg5dEMreTVPNEQwbFpYWElKZGtaU01mcy84UkZJdVU3QkR0ZzFrMGdEVkthY1hcbiIgXAorKyIgZ003TjB3RG1uSGxtTDhDZkxad2ZBL2pqeTVzcUFib1BDSU5lZW5hdEFqaDM2WkpCZ0dnc2NUbkFGeTc5d2hFVEdNYURrQ0ZsaG1QXG4iIFwKKysiIHk5cjY5NnJZa3dNK2ZXZjk1Z0cyNzluOE9vTE0vUFJXZ0k4ZkpBSjJwS1ZHQWtYcEplaXZRVW50TG5SSFJxTTZlMTFab2U1dGVrdFxuIiBcCisrIiBhVEx5MHVZSXppdU9RdXNFVGNUZ3hwTC9EdmU2VDFJS0szK2duamZRY0JhQm9wMmpxdEZYWmVONW9HVUw1YkJ6QjlTdVBOQUJkLzhcbiIgXAorKyIgWXUvQVhqdDVaY2ZBWGp6ajMrc0IxQlcwQWZ3aWVVWFhRbnd0V3UrczJZY3IydGNDQmxTWmpnbWh0ejA3ZXRPQXRqODZzYU5BRTVtXG4iIFwKKysiIHBCWWdsM2N0QUUvbjZneGxaVW5iem54S0FmUTB6QUlnU0lodFlHcjBXbjdSU1JRb1BlZnJ5dGFCK1hVRW5TSnFLbG1iS2tBbUxjalxuIiBcCisrIiBUbjFzNkNUdlpLM2JMOUx5SWljWlV0TkNKcmJNcnpISzV2RjRFV2xGVkdRQzB6NXAxR3NBNTV5dytBT0E3MmNVQTZlendhd0RYWEhcbiIgXAorKyIgUGpycU40WGVOQ3lKQXl3ekV4NUlwUGZmd0pBQytmV3dhUTFkWnpvTnROWnlVdU1xTGozM2tkRCs5MFJmTTVWSzEvVGlRcWxxL3lpXG4iIFwKKysiIHBFMlc3bU9mT1ptQUd4TkVVOVhDQWdzS3duZ1d6cnJ6cEtOMG5IdTZOQkJCVEF6SXpaT295NllHbzBVeDJDaHJLUGV1dHBHc1hXOVxuIiBcCisrIiAzcWJXMXVjQlZqMzY1SktqZnpzVFE4aVFNc09FSW9iZitQSmZud3JRc1hmM3FRQzVqS2hDdnY2Vm01ejJhYmxCYWNWcVN5OE5hTElcbiIgXAorKyIga1VoanBrL205WHpQRWloZnJYaXo3Mk1kdUJWaXg1TnlIQUpZdFc5WUY4TUlMTHpRQi9PU0J4eThDMkxaMzMwVUFuUU5EQ3dHQzlFXG4iIFwKKysiIEFLb0NVdjJsUzlEdnRGRERQVWFJWVlRaGJjdHZJY091NlJUNCtjZTNSdjV0Z1JNcVRNRUg0aFpZWUpUVm1lRTlRQStMNVVxalNyYVxuIiBcCisrIiBBTkxWL1h4U2pQU2k5KzdXVzByYm81cVc4NVBlcEwxb0xMRmNrQ25wT3hmQVN4ZnZuekxtTzQ3OVhZendMcDE2eDRDK09iMU56NENcbiIgXAorKyIgTUpUdldRQ1FpcHJxUURwTFh0K1Rza2I5SklhcFlsNVlBMTlhTjhWeDgvSDNleGVUalpBaFpZWUpNU1RyY3hnZzcwdUJ3K0lhRFRuXG4iIFwKKysiIHVqZDJhV2xkYXJUU1Y1Rnk5VHR3UHhFQ3JiNmo5amVuaitwdHVlaFBnaHB0dlB1SzlaTHE2K2dIc3dCVWRXN1BROVdTczJWclZEbVxuIiBcCisrIiB6ekcwa2xZMUJTUVkyRFpVeGxvVmk4WWtLcmNvOEZJVVBLREJOaXlKZXV1cndENEk1YmJ0OElNSkx1YmdmSVpYTVdqS3FYYUtyQ21cbiIgXAorKyIgYTFadUs1TE50VFUxaDhHYUcrZnRoTGcvb2NldXN2MG9WUXhrSFFrWFBDWnovUUEzSFBQUFNzQW5uN3k4U3NCZXJvT253dGc0eThBXG4iIFwKKysiIHlPZXo4cU9Samx1UUMrWUhKSDFmbGwxRjdVZ09JSmxLN2dPWVBtdnViWExtcFA4NjNuc2laRWlaWVZLV0k2eGMrYTJGQUh2L3RQMVxuIiBcCisrIiBjZ003T3ptcUF3TGRhQVJ6UDZRQ29iYWpyQTVnemErNUxBTGZlZnVKK0JzS2d0N2QzeHRqUDZ1cnF4UDJ1MU9GM1huRmlFVElrUklcbiIgXAorKyIgZ1FJVUtFK0grQy93TUdYOElhczFzNkNRQUFBQUJKUlU1RXJrSmdnZz09XG4iIFwKKyAiRU5EOlZDQVJEIgorLS0gCisxLjguMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvMDAwNC1jb25maWd1cmUtRml4LWxpYmljYWwtcGtnLWNvbmZpZy10cnlpbmctdG8tdXNlLWhvc3QtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDA0LWNvbmZpZ3VyZS1GaXgtbGliaWNhbC1wa2ctY29uZmlnLXRyeWluZy10by11c2UtaG9zdC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzODMzNDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDA0LWNvbmZpZ3VyZS1GaXgtbGliaWNhbC1wa2ctY29uZmlnLXRyeWluZy10by11c2UtaG9zdC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDJjNzNiNTg4YjkwMThjYjU5YzY2NmVhZTNhMTVmYTFhZjQyYzU2YmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDQgQXVnIDIwMTMgMTA6NTc6MDggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzVdIGNvbmZpZ3VyZTogRml4IGxpYmljYWwgcGtnLWNvbmZpZyB0cnlpbmcgdG8gdXNlIGhvc3QKLSBwYXRocwotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBjYWxlbmRhci9saWJlY2FsL2xpYmVjYWwucGMuaW4gfCAyICstCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NhbGVuZGFyL2xpYmVjYWwvbGliZWNhbC5wYy5pbiBiL2NhbGVuZGFyL2xpYmVjYWwvbGliZWNhbC5wYy5pbgotaW5kZXggZmM2YjM1OS4uZDM0MzViYiAxMDA2NDQKLS0tLSBhL2NhbGVuZGFyL2xpYmVjYWwvbGliZWNhbC5wYy5pbgotKysrIGIvY2FsZW5kYXIvbGliZWNhbC9saWJlY2FsLnBjLmluCi1AQCAtMTIsNCArMTIsNCBAQCBEZXNjcmlwdGlvbjogQ2xpZW50IGxpYnJhcnkgZm9yIGV2b2x1dGlvbiBjYWxlbmRhcnMKLSBWZXJzaW9uOiBAVkVSU0lPTkAKLSBSZXF1aXJlczogbGliaWNhbCA+PSBATElCSUNBTF9SRVFVSVJFREAgbGliZWRhdGFzZXJ2ZXItMS4yIGdpby0yLjAKLSBMaWJzOiAtTCR7bGliZGlyfSAtbGVjYWwtMS4yCi0tQ2ZsYWdzOiAtSSR7cHJpdmluY2x1ZGVkaXJ9IEBMSUJJQ0FMX0VYVFJBX0NGTEFHU0AKLStDZmxhZ3M6IC1JJHtwcml2aW5jbHVkZWRpcn0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFjODAyZmYuLmYxZDRjZTggMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEzNTEsNyArMTM1MSw4IEBAIGRubCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gPGxpYmljYWwvaWNhbC5oPiBhbmQgPGljYWwuaD4KLSBkbmwgV2UgaGF2ZSBmaXhlZCBhbGwgb3VyIGluc3RhbmNlcyB0byB1c2UgPGxpYmljYWwvaWNhbC5oPi4gVW50aWwgdGhlIC5wYyBmcm9tCi0gZG5sIGxpYmljYWwgaXMgZml4ZWQsIHdlIGhhdmUgdG8gd29yay1hcm91bmQgdGhlIGJ1Z2d5IENGbGFncy4KLSBkbmwgKioqKioKLS0JTElCSUNBTF9FWFRSQV9DRkxBR1M9IiAtSWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgbGliaWNhbGAgIgotKwltNF9wYXR0ZXJuX2FsbG93KFteUEtHX0NPTkZJR19TWVNST09UX0RJUiRdKQotKwlMSUJJQ0FMX0VYVFJBX0NGTEFHUz0iIC1JJFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1pbmNsdWRlZGlyIGxpYmljYWxgICIKLSAJTElCSUNBTF9FWFRSQV9MSUJTPSIiCi0gCUFDX1NVQlNUKExJQklDQUxfRVhUUkFfQ0ZMQUdTKQotIAlBQ19TVUJTVChMSUJJQ0FMX0VYVFJBX0xJQlMpCi0tLSAKLTEuOC4zLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDA1LXNvdXAtYWRhcHQtdG8tbmV3LWxpYnhtbDItQVBJLWZyb20tMi45LjAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDUtc291cC1hZGFwdC10by1uZXctbGlieG1sMi1BUEktZnJvbS0yLjkuMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRkZjJlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDUtc291cC1hZGFwdC10by1uZXctbGlieG1sMi1BUEktZnJvbS0yLjkuMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLUZyb20gYWM5NWU4OTc0OWEwMTYxOGY5OGI1NTRhOThlNzhkN2M5ODhiZmMxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjcgTm92IDIwMTIgMDg6NDY6NTEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIHNvdXA6IGFkYXB0IHRvIG5ldyBsaWJ4bWwyIEFQSSBmcm9tIDIuOS4wCi0KLSogZm9yIG1vcmUgaW5mbyBzZWUKLSAgaHR0cHM6Ly9tYWlsLmdub21lLm9yZy9hcmNoaXZlcy94bWwvMjAxMi1BdWd1c3QvbXNnMDAwMDUuaHRtbAotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBjYWxlbmRhci9iYWNrZW5kcy9jYWxkYXYvZS1jYWwtYmFja2VuZC1jYWxkYXYuYyB8IDIxICsrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jYWxlbmRhci9iYWNrZW5kcy9jYWxkYXYvZS1jYWwtYmFja2VuZC1jYWxkYXYuYyBiL2NhbGVuZGFyL2JhY2tlbmRzL2NhbGRhdi9lLWNhbC1iYWNrZW5kLWNhbGRhdi5jCi1pbmRleCAxMmY4ZjIyLi41NTU1YTNlIDEwMDY0NAotLS0tIGEvY2FsZW5kYXIvYmFja2VuZHMvY2FsZGF2L2UtY2FsLWJhY2tlbmQtY2FsZGF2LmMKLSsrKyBiL2NhbGVuZGFyL2JhY2tlbmRzL2NhbGRhdi9lLWNhbC1iYWNrZW5kLWNhbGRhdi5jCi1AQCAtMTE3Miw4ICsxMTcyLDEzIEBAIGNoZWNrX2NhbGVuZGFyX2NoYW5nZWRfb25fc2VydmVyIChFQ2FsQmFja2VuZENhbERBViAqY2JkYXYpCi0gCXNvdXBfbWVzc2FnZV9zZXRfcmVxdWVzdCAobWVzc2FnZSwKLSAJCQkJICAiYXBwbGljYXRpb24veG1sIiwKLSAJCQkJICBTT1VQX01FTU9SWV9DT1BZLAotKyNpZmRlZiBMSUJYTUwyX05FV19CVUZGRVIKLSsJCQkJICAoZ2NoYXIgKikgeG1sT3V0cHV0QnVmZmVyR2V0Q29udGVudChidWYpLAotKwkJCQkgIHhtbE91dHB1dEJ1ZmZlckdldFNpemUoYnVmKSk7Ci0rI2Vsc2UKLSAJCQkJICAoZ2NoYXIgKikgYnVmLT5idWZmZXItPmNvbnRlbnQsCi0gCQkJCSAgYnVmLT5idWZmZXItPnVzZSk7Ci0rI2VuZGlmCi0gCi0gCS8qIFNlbmQgdGhlIHJlcXVlc3Qgbm93ICovCi0gCXNlbmRfYW5kX2hhbmRsZV9yZWRpcmVjdGlvbiAocHJpdi0+c2Vzc2lvbiwgbWVzc2FnZSwgTlVMTCk7Ci1AQCAtMTMyMSw4ICsxMzI2LDEzIEBAIGNhbGRhdl9zZXJ2ZXJfbGlzdF9vYmplY3RzIChFQ2FsQmFja2VuZENhbERBViAqY2JkYXYsCi0gCXNvdXBfbWVzc2FnZV9zZXRfcmVxdWVzdCAobWVzc2FnZSwKLSAJCQkJICAiYXBwbGljYXRpb24veG1sIiwKLSAJCQkJICBTT1VQX01FTU9SWV9DT1BZLAotKyNpZmRlZiBMSUJYTUwyX05FV19CVUZGRVIKLSsJCQkJICAoZ2NoYXIgKikgeG1sT3V0cHV0QnVmZmVyR2V0Q29udGVudChidWYpLAotKwkJCQkgIHhtbE91dHB1dEJ1ZmZlckdldFNpemUoYnVmKSk7Ci0rI2Vsc2UKLSAJCQkJICAoZ2NoYXIgKikgYnVmLT5idWZmZXItPmNvbnRlbnQsCi0gCQkJCSAgYnVmLT5idWZmZXItPnVzZSk7Ci0rI2VuZGlmCi0gCi0gCS8qIFNlbmQgdGhlIHJlcXVlc3Qgbm93ICovCi0gCXNlbmRfYW5kX2hhbmRsZV9yZWRpcmVjdGlvbiAocHJpdi0+c2Vzc2lvbiwgbWVzc2FnZSwgTlVMTCk7Ci1AQCAtMTcxNSw4ICsxNzI1LDE0IEBAIGNhbGRhdl9yZWNlaXZlX3NjaGVkdWxlX291dGJveF91cmwgKEVDYWxCYWNrZW5kQ2FsREFWICpjYmRhdikKLSAJc291cF9tZXNzYWdlX3NldF9yZXF1ZXN0IChtZXNzYWdlLAotIAkJCQkgICJhcHBsaWNhdGlvbi94bWwiLAotIAkJCQkgIFNPVVBfTUVNT1JZX0NPUFksCi0rI2lmZGVmIExJQlhNTDJfTkVXX0JVRkZFUgotKwkJCQkgIChnY2hhciAqKSB4bWxPdXRwdXRCdWZmZXJHZXRDb250ZW50KGJ1ZiksCi0rCQkJCSAgeG1sT3V0cHV0QnVmZmVyR2V0U2l6ZShidWYpKTsKLSsjZWxzZQotIAkJCQkgIChnY2hhciAqKSBidWYtPmJ1ZmZlci0+Y29udGVudCwKLSAJCQkJICBidWYtPmJ1ZmZlci0+dXNlKTsKLSsjZW5kaWYKLSsKLSAKLSAJLyogU2VuZCB0aGUgcmVxdWVzdCBub3cgKi8KLSAJc2VuZF9hbmRfaGFuZGxlX3JlZGlyZWN0aW9uIChwcml2LT5zZXNzaW9uLCBtZXNzYWdlLCBOVUxMKTsKLUBAIC0xNzY1LDggKzE3ODEsMTMgQEAgY2FsZGF2X3JlY2VpdmVfc2NoZWR1bGVfb3V0Ym94X3VybCAoRUNhbEJhY2tlbmRDYWxEQVYgKmNiZGF2KQotIAkJc291cF9tZXNzYWdlX3NldF9yZXF1ZXN0IChtZXNzYWdlLAotIAkJCQkgICJhcHBsaWNhdGlvbi94bWwiLAotIAkJCQkgIFNPVVBfTUVNT1JZX0NPUFksCi0rI2lmZGVmIExJQlhNTDJfTkVXX0JVRkZFUgotKwkJCQkgIChnY2hhciAqKSB4bWxPdXRwdXRCdWZmZXJHZXRDb250ZW50KGJ1ZiksCi0rCQkJCSAgeG1sT3V0cHV0QnVmZmVyR2V0U2l6ZShidWYpKTsKLSsjZWxzZQotIAkJCQkgIChnY2hhciAqKSBidWYtPmJ1ZmZlci0+Y29udGVudCwKLSAJCQkJICBidWYtPmJ1ZmZlci0+dXNlKTsKLSsjZW5kaWYKLSAKLSAJCS8qIFNlbmQgdGhlIHJlcXVlc3Qgbm93ICovCi0gCQlzZW5kX2FuZF9oYW5kbGVfcmVkaXJlY3Rpb24gKHByaXYtPnNlc3Npb24sIG1lc3NhZ2UsIE5VTEwpOwotLS0gCi0xLjguMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvMDAwNi1jb25maWd1cmUuYWMtZG8tbm90LW92ZXJ3cml0ZS1sb2NhbGVkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDYtY29uZmlndXJlLmFjLWRvLW5vdC1vdmVyd3JpdGUtbG9jYWxlZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDFlNWU5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvMDAwNi1jb25maWd1cmUuYWMtZG8tbm90LW92ZXJ3cml0ZS1sb2NhbGVkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDNmZWFlYThlODRiM2FkOGRjMmQ1NTFlNDIyMjRmM2I0YTk0MTNlN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMgU2VwIDIwMTUgMTE6MTQ6MjQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBkbyBub3Qgb3ZlcndyaXRlIGxvY2FsZWRpcgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxXQotCi1bMV0gaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvdHJlZS9jb25maWd1cmUuYWMjbjI5OAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAzIC0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmMWQ0Y2U4Li5jZWU4NDdmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yNTcsOSArMjU3LDYgQEAgR0VUVEVYVF9QQUNLQUdFPWV2b2x1dGlvbi1kYXRhLXNlcnZlci0kQkFTRV9WRVJTSU9OCi0gQUNfU1VCU1QoR0VUVEVYVF9QQUNLQUdFKQotIEFDX0RFRklORV9VTlFVT1RFRChHRVRURVhUX1BBQ0tBR0UsICIkR0VUVEVYVF9QQUNLQUdFIiwgW1BhY2thZ2UgbmFtZSBmb3IgZ2V0dGV4dF0pCi0gCi0tbG9jYWxlZGlyPSckKHByZWZpeCkvJChEQVRBRElSTkFNRSkvbG9jYWxlJwotLUFDX1NVQlNUKGxvY2FsZWRpcikKLS0KLSBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gZG5sIEluaXRpYWxpemUgbGlidG9vbAotIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlcl8zLjI2LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyXzMuMjYuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzAzYjhmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlcl8zLjI2LjMuYmIKQEAgLTAsMCArMSwxMzAgQEAKK1NVTU1BUlkgPSAiRXZvbHV0aW9uIGRhdGFiYXNlIGJhY2tlbmQgc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbm9tZS5vcmcvcHJvamVjdHMvZXZvbHV0aW9uLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitMSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02YTZlNjg5ZDE5MjU1Y2YwNTU3ZjNmZTdkNzA2ODIxMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY2FtZWwvY2FtZWwuaDtlbmRsaW5lPTI0O21kNT0zNDJmYzVlOTM1NzI1NGJjMzBjMjRlNDNhZTQ3ZDlhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbGliZWRhdGFzZXJ2ZXIvZS1kYXRhLXNlcnZlci11dGlsLmg7ZW5kbGluZT0yMDttZDU9OGYyMWE5YzgwZWE4MmE0ZmI4MGI1Zjk1OWY2NzI1NDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2NhbGVuZGFyL2xpYmVjYWwvZS1jYWwuaDtlbmRsaW5lPTI0O21kNT1lNjk5ZWMzODY2ZjczZjEyOWY3YTRmZmZmZGNmYzE5NiIKKworREVQRU5EUyA9ICIgXAorICAgIGludGx0b29sLW5hdGl2ZSBncGVyZi1uYXRpdmUgXAorICAgIGdsaWItMi4wIGd0ayszIGdjb25mIGxpYmdub21lLWtleXJpbmcgbGliZ2RhdGEgXAorICAgIGRidXMgZGIgdmlydHVhbC9saWJpY29udiB6bGliIGxpYnNvdXAtMi40IGxpYmljYWwgbnNzIGxpYnNlY3JldCBcCisiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdub21lYmFzZSBjbWFrZSBndGstZG9jIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHBlcmxuYXRpdmUgcHl0aG9ubmF0aXZlCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtUmVtb3ZlLVRSWV9SVU4tZm9yLWljb252LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1DTWFrZUxpc3RzLnR4dC1yZW1vdmUtQ0hFQ0tfQ19TT1VSQ0VfUlVOUy1jaGVjay5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtY29udGFjdC1SZXBsYWNlLXRoZS1Ob3ZlbGwtc2FtcGxlLWNvbnRhY3Qtd2l0aC1zb21ldC5wYXRjaCBcCisgICAgZmlsZTovL2ljb252LWRldGVjdC5oIFwKKyIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjU2OGEyMWE0ZGY0ZTBlYzk4NWM4NDliMzhmYzY2OTA4IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNjNiMWFlNWY3NmJlODE4ODYyZjQ1NWJmODQxYjVlYmIxZWMzZTFmNGRmNmQzYTE2ZGMyYmUzNDhiN2UwYTFjNSIKKworTEtTVFJGVElNRSA9ICJIQVZFX0xLU1RSRlRJTUU9T04iCitMS1NUUkZUSU1FX2xpYmMtbXVzbCA9ICJIQVZFX0xLU1RSRlRJTUU9T0ZGIgorCitFWFRSQV9PRUNNQUtFID0gIiBcCisgICAgLURXSVRIX0tSQjU9T0ZGIFwKKyAgICAtREVOQUJMRV9HT0E9T0ZGIFwKKyAgICAtREVOQUJMRV9VT0E9T0ZGIFwKKyAgICAtREVOQUJMRV9HT09HTEVfQVVUSD1PRkYgXAorICAgIC1ERU5BQkxFX1dFQVRIRVI9T0ZGIFwKKyAgICAtRCR7TEtTVFJGVElNRX0gXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tvcGVubGRhcF0gPSAiLURXSVRIX09QRU5MREFQPU9OLC1EV0lUSF9PUEVOTERBUD1PRkYsb3BlbmxkYXAiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtbGliZGI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5udHAgLS1kaXNhYmxlLWd0ay1kb2MiCisKKyMgLWxkYiBuZWVkcyB0aGlzIG9uIHNvbWUgcGxhdGZvcm1zCitMREZMQUdTICs9ICItbHB0aHJlYWQgLWxnbW9kdWxlLTIuMCAtbGd0aHJlYWQtMi4wIgorCitkb19jb25maWd1cmVfYXBwZW5kICgpIHsKKyAgICBjcCAke1dPUktESVJ9L2ljb252LWRldGVjdC5oICR7U30vc3JjCisKKyAgICAjIGZpeCBuYXRpdmUgcGVybCBzaGViYW5nCisgICAgc2VkIC1pICdzOiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZToke2JpbmRpcn06JyAke0J9L3NyYy90b29scy9hZGRyZXNzYm9vay1leHBvcnQvY3N2MnZjYXJkCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9jYW1lbC8ubGliczoke0J9L2xpYmVkYXRhc2VydmVyLy5saWJzIgorfQorCisKK1BBQ0tBR0VTID0rICJsaWJjYW1lbCBsaWJjYW1lbC1kZXYgbGliZWJvb2sgbGliZWJvb2stZGV2IGxpYmVjYWwgbGliZWNhbC1kZXYgXAorICAgICAgICAgICAgIGxpYmVkYXRhLWJvb2sgbGliZWRhdGEtYm9vay1kZXYgbGliZWRhdGEtY2FsIGxpYmVkYXRhLWNhbC1kZXYgXAorICAgICAgICAgICAgIGxpYmVkYXRhc2VydmVyIGxpYmVkYXRhc2VydmVyLWRldiBcCisgICAgICAgICAgICAgbGliZWRhdGFzZXJ2ZXJ1aSBsaWJlZGF0YXNlcnZlcnVpLWRldiIKKworRklMRVNfJHtQTn0gPSsgIiR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi91aS8iCitSREVQRU5EU18ke1BOfSArPSAicGVybCIKKworRklMRVNfJHtQTn0tZGV2ID0rICIke2xpYmRpcn0vcGtnY29uZmlnL2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qLnBjIgorRklMRVNfJHtQTn0tZGJnID0rICIke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9jYW1lbC1wcm92aWRlcnMvLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovY2FsZW5kYXItYmFja2VuZHMvLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovYWRkcmVzc2Jvb2stYmFja2VuZHMvLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovZXh0ZW5zaW9ucy8uZGVidWcvIgorCitSUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gImxpYmVjYWwtZGV2IGxpYmVib29rLWRldiIKKworRklMRVNfbGliY2FtZWwgPSAiJHtsaWJkaXJ9L2xpYmNhbWVsLSouc28uKiBcCisgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliY2FtZWwtcHJvdmlkZXItKi5zby4qIFwKKyAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2NhbWVsLXByb3ZpZGVycy8qLnNvIFwKKyAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2NhbWVsLXByb3ZpZGVycy8qLnVybHMiCitGSUxFU19saWJjYW1lbC1kZXYgPSAiJHtsaWJkaXJ9L2xpYmNhbWVsLSouc28gJHtsaWJkaXJ9L2xpYmNhbWVsLXByb3ZpZGVyLSouc28gXAorICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvY2FtZWwqcGMgXAorICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2NhbWVsLXByb3ZpZGVycy8qLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovY2FtZWwiCisKK0ZJTEVTX2xpYmVib29rID0gIiR7bGliZGlyfS9saWJlYm9vay0qLnNvLioiCitGSUxFU19saWJlYm9vay1kZXYgPSAiJHtsaWJkaXJ9L2xpYmVib29rLTEuMi5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJlYm9vay0qLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovbGliZWJvb2svKi5oIgorUlJFQ09NTUVORFNfbGliZWJvb2sgPSAibGliZWRhdGEtYm9vayIKKworRklMRVNfbGliZWNhbCA9ICIke2xpYmRpcn0vbGliZWNhbC0qLnNvLiogXAorICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0xLjQvem9uZWluZm8iCitGSUxFU19saWJlY2FsLWRldiA9ICIke2xpYmRpcn0vbGliZWNhbC0qLnNvICR7bGliZGlyfS9wa2djb25maWcvbGliZWNhbC0qLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9saWJlY2FsLyouaCBcCisgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovbGliaWNhbC8qLmgiCitSUkVDT01NRU5EU19saWJlY2FsID0gImxpYmVkYXRhLWNhbCB0emRhdGEiCisKK0ZJTEVTX2xpYmVkYXRhLWJvb2sgPSAiJHtsaWJleGVjZGlyfS9lLWFkZHJlc3Nib29rLWZhY3RvcnkgXAorICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qLkFkZHJlc3NCb29rLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliZWRhdGEtYm9vay0qLnNvLiogXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLSovZXh0ZW5zaW9ucy9saWJlYm9vayouc28gXAorICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0xLjQvd2VhdGhlci9Mb2NhdGlvbnMueG1sIgorRklMRVNfbGliZWRhdGEtYm9vay1kZXYgPSAiJHtsaWJkaXJ9L2xpYmVkYXRhLWJvb2stKi5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYmVkYXRhLWJvb2stKi5wYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLSovZXh0ZW5zaW9ucy9saWJlYm9vayoubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi9saWJlZGF0YS1ib29rIgorCitGSUxFU19saWJlZGF0YS1jYWwgPSAiJHtsaWJleGVjZGlyfS9lLWNhbGVuZGFyLWZhY3RvcnkgXAorICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouQ2FsZW5kYXIuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmVkYXRhLWNhbC0qLnNvLiogXAorICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi9leHRlbnNpb25zL2xpYmVjYWwqLnNvIgorRklMRVNfbGliZWRhdGEtY2FsLWRldiA9ICIke2xpYmRpcn0vbGliZWRhdGEtY2FsLSouc28gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYmVkYXRhLWNhbC0qLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi9saWJlZGF0YS1jYWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLSovZXh0ZW5zaW9ucy9saWJlY2FsKi5sYSIKKworRklMRVNfbGliZWRhdGFzZXJ2ZXIgPSAiJHtsaWJkaXJ9L2xpYmVkYXRhc2VydmVyLSouc28uKiIKK0ZJTEVTX2xpYmVkYXRhc2VydmVyLWRldiA9ICIke2xpYmRpcn0vbGliZWRhdGFzZXJ2ZXItKi5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJlZGF0YXNlcnZlci0qLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qL2xpYmVkYXRhc2VydmVyLyouaCIKKworRklMRVNfbGliZWRhdGFzZXJ2ZXJ1aSA9ICIke2xpYmRpcn0vbGliZWRhdGFzZXJ2ZXJ1aS0qLnNvLiogJHtkYXRhZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItMS40L2dsYWRlLyouZ2xhZGUiCitGSUxFU19saWJlZGF0YXNlcnZlcnVpLWRldiA9ICIke2xpYmRpcn0vbGliZWRhdGFzZXJ2ZXJ1aS0qLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvbGliZWRhdGFzZXJ2ZXJ1aS0qLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLSovbGliZWRhdGFzZXJ2ZXJ1aS8qLmgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXJfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWRjNGI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLVNVTU1BUlkgPSAiRXZvbHV0aW9uIGRhdGFiYXNlIGJhY2tlbmQgc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbm9tZS5vcmcvcHJvamVjdHMvZXZvbHV0aW9uLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02YTZlNjg5ZDE5MjU1Y2YwNTU3ZjNmZTdkNzA2ODIxMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jYW1lbC9jYW1lbC5oO2VuZGxpbmU9MjQ7bWQ1PWIwMjE3NWM4OGY4MjEyMjQ3NDZiMzQ3YTg5NzMxYTJiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmVkYXRhc2VydmVyL2UtZGF0YS1zZXJ2ZXItdXRpbC5oO2VuZGxpbmU9MjA7bWQ1PTkzNDUwMmYwM2M4NDUyM2FhMDU5ZDQ4MjU4ODdiMzgwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NhbGVuZGFyL2xpYmVjYWwvZS1jYWwuaDtlbmRsaW5lPTI0O21kNT01ZDQ5NmI5YjZmZDJhNGZkYmJmYzMxZWY5NDU1YzlkMCIKLQotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgZ2xpYi0yLjAgZ3RrKzMgZ2NvbmYgZGJ1cyBkYiB2aXJ0dWFsL2xpYmljb252IHpsaWIgbGlic291cC0yLjQgbGliZ2xhZGUgbGliaWNhbCBsaWJnbm9tZS1rZXlyaW5nIGdwZXJmLW5hdGl2ZSBsaWJnZGF0YSBuc3MiCi0KLVNSQ1JFViA9ICJhOWU0ZTc0ZWM0NDczYTRmZDA5ZTU2YjY5MGJkNGZhNzJmNjg2Njg3IgotCi0jIDMuNCBzZXJpZXMgbmVlZHMgbGliZ2RhdGEtMC4xMCosIDMuOCBzZXJpZXMgbmVlZHMgYWxzbyBsaWJzZWNyZXQgaW5zdGVhZCBvZiBnbm9tZS1rZXlyaW5nCi1QViA9ICIzLjIuMytnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZ25vbWUub3JnL2V2b2x1dGlvbi1kYXRhLXNlcnZlcjticmFuY2g9Z25vbWUtMy0yIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29udGFjdC1SZXBsYWNlLXRoZS1Ob3ZlbGwtc2FtcGxlLWNvbnRhY3Qtd2l0aC1zb21ldC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1mb3ItYXV0b21ha2UtMS4xMi54LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtRGlzYWJsZS1XZXJyb3ItZm9yLWF1dG9tYWtlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtY29uZmlndXJlLUZpeC1saWJpY2FsLXBrZy1jb25maWctdHJ5aW5nLXRvLXVzZS1ob3N0LS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXNvdXAtYWRhcHQtdG8tbmV3LWxpYnhtbDItQVBJLWZyb20tMi45LjAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1jb25maWd1cmUuYWMtZG8tbm90LW92ZXJ3cml0ZS1sb2NhbGVkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaWNvbnYtZGV0ZWN0LmggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbWFweC1GaXgtc2lnbmF0dXJlLWZvci1pbWFweF90b2tlbmlzZV9zdHJ1Y3QucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgcGtnY29uZmlnIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLSMgLWxkYiBuZWVkcyB0aGlzIG9uIHNvbWUgcGxhdGZvcm1zCi1MREZMQUdTICs9ICItbHB0aHJlYWQgLWxnbW9kdWxlLTIuMCAtbGd0aHJlYWQtMi4wIgotCi0jIFBhcmFsbGVsIG1ha2Ugc2hvd3MgbWFueSBpc3N1ZXMgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgotIyBDdXJyZW50IHByb2JsZW1zIHNlZW0gdG8gYmUgZHVwbGljYXRlIGV4ZWN1dGlvbiBvZiB0aGUgY2FsYW5kZXIvYmFja2VuZHMKLSMgZGlyZWN0b3JpZXMgYnkgbWFrZSByZXN1bHRpbmcgaW4gdHJ1bmNhdGVkL2NvcnJ1cHQgLmxhIGZpbGVzCi0jUEFSQUxMRUxfTUFLRSA9ICIiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotICAgIGNwICR7V09SS0RJUn0vaWNvbnYtZGV0ZWN0LmggJHtTfQotfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2NhbWVsLy5saWJzOiR7Qn0vbGliZWRhdGFzZXJ2ZXIvLmxpYnMiCi19Ci0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtb3BlbmxkYXAgXAotICAgICAgICAgICAgICAgIC0td2l0aC1saWJkYj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbm50cCAtLWRpc2FibGUtZ29hIC0tZGlzYWJsZS13ZWF0aGVyIC0tZGlzYWJsZS1ndGstZG9jIgotCi1QQUNLQUdFUyA9KyAibGliY2FtZWwgbGliY2FtZWwtZGV2IGxpYmVib29rIGxpYmVib29rLWRldiBsaWJlY2FsIGxpYmVjYWwtZGV2IFwKLSAgICAgICAgICAgICBsaWJlZGF0YS1ib29rIGxpYmVkYXRhLWJvb2stZGV2IGxpYmVkYXRhLWNhbCBsaWJlZGF0YS1jYWwtZGV2IFwKLSAgICAgICAgICAgICBsaWJlZGF0YXNlcnZlciBsaWJlZGF0YXNlcnZlci1kZXYgXAotICAgICAgICAgICAgIGxpYmVkYXRhc2VydmVydWkgbGliZWRhdGFzZXJ2ZXJ1aS1kZXYiCi0KLUZJTEVTXyR7UE59ID0rICIke2RhdGFkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qL3VpLyIKLUZJTEVTXyR7UE59LWRldiA9KyAiJHtsaWJkaXJ9L3BrZ2NvbmZpZy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi5wYyIKLUZJTEVTXyR7UE59LWRiZyA9KyAiJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovY2FtZWwtcHJvdmlkZXJzLy5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2NhbGVuZGFyLWJhY2tlbmRzLy5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2FkZHJlc3Nib29rLWJhY2tlbmRzLy5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2V4dGVuc2lvbnMvLmRlYnVnLyIKLQotUlJFQ09NTUVORFNfJHtQTn0tZGV2ICs9ICJsaWJlY2FsLWRldiBsaWJlYm9vay1kZXYiCi0KLUZJTEVTX2xpYmNhbWVsID0gIiR7bGliZGlyfS9saWJjYW1lbC0qLnNvLiogXAotICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmNhbWVsLXByb3ZpZGVyLSouc28uKiBcCi0gICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9jYW1lbC1wcm92aWRlcnMvKi5zbyBcCi0gICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9jYW1lbC1wcm92aWRlcnMvKi51cmxzIgotRklMRVNfbGliY2FtZWwtZGV2ID0gIiR7bGliZGlyfS9saWJjYW1lbC0qLnNvICR7bGliZGlyfS9saWJjYW1lbC1wcm92aWRlci0qLnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2NhbWVsKnBjIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9jYW1lbC1wcm92aWRlcnMvKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2NhbWVsIgotCi1GSUxFU19saWJlYm9vayA9ICIke2xpYmRpcn0vbGliZWJvb2stKi5zby4qIgotRklMRVNfbGliZWJvb2stZGV2ID0gIiR7bGliZGlyfS9saWJlYm9vay0xLjIuc28gXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvbGliZWJvb2stKi5wYyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2xpYmVib29rLyouaCIKLVJSRUNPTU1FTkRTX2xpYmVib29rID0gImxpYmVkYXRhLWJvb2siCi0KLUZJTEVTX2xpYmVjYWwgPSAiJHtsaWJkaXJ9L2xpYmVjYWwtKi5zby4qIFwKLSAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItMS40L3pvbmVpbmZvIgotRklMRVNfbGliZWNhbC1kZXYgPSAiJHtsaWJkaXJ9L2xpYmVjYWwtKi5zbyAke2xpYmRpcn0vcGtnY29uZmlnL2xpYmVjYWwtKi5wYyBcCi0gICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovbGliZWNhbC8qLmggXAotICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2xpYmljYWwvKi5oIgotUlJFQ09NTUVORFNfbGliZWNhbCA9ICJsaWJlZGF0YS1jYWwgdHpkYXRhIgotCi1GSUxFU19saWJlZGF0YS1ib29rID0gIiR7bGliZXhlY2Rpcn0vZS1hZGRyZXNzYm9vay1mYWN0b3J5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5BZGRyZXNzQm9vay5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmVkYXRhLWJvb2stKi5zby4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qL2V4dGVuc2lvbnMvbGliZWJvb2sqLnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItMS40L3dlYXRoZXIvTG9jYXRpb25zLnhtbCIKLUZJTEVTX2xpYmVkYXRhLWJvb2stZGV2ID0gIiR7bGliZGlyfS9saWJlZGF0YS1ib29rLSouc28gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJlZGF0YS1ib29rLSoucGMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qL2V4dGVuc2lvbnMvbGliZWJvb2sqLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLSovbGliZWRhdGEtYm9vayIKLQotRklMRVNfbGliZWRhdGEtY2FsID0gIiR7bGliZXhlY2Rpcn0vZS1jYWxlbmRhci1mYWN0b3J5IFwKLSAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qLkNhbGVuZGFyLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJlZGF0YS1jYWwtKi5zby4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLSovZXh0ZW5zaW9ucy9saWJlY2FsKi5zbyIKLUZJTEVTX2xpYmVkYXRhLWNhbC1kZXYgPSAiJHtsaWJkaXJ9L2xpYmVkYXRhLWNhbC0qLnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJlZGF0YS1jYWwtKi5wYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLSovbGliZWRhdGEtY2FsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qL2V4dGVuc2lvbnMvbGliZWNhbCoubGEiCi0KLUZJTEVTX2xpYmVkYXRhc2VydmVyID0gIiR7bGliZGlyfS9saWJlZGF0YXNlcnZlci0qLnNvLioiCi1GSUxFU19saWJlZGF0YXNlcnZlci1kZXYgPSAiJHtsaWJkaXJ9L2xpYmVkYXRhc2VydmVyLSouc28gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvbGliZWRhdGFzZXJ2ZXItKi5wYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi9saWJlZGF0YXNlcnZlci8qLmgiCi0KLUZJTEVTX2xpYmVkYXRhc2VydmVydWkgPSAiJHtsaWJkaXJ9L2xpYmVkYXRhc2VydmVydWktKi5zby4qICR7ZGF0YWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLTEuNC9nbGFkZS8qLmdsYWRlIgotRklMRVNfbGliZWRhdGFzZXJ2ZXJ1aS1kZXYgPSAiJHtsaWJkaXJ9L2xpYmVkYXRhc2VydmVydWktKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYmVkYXRhc2VydmVydWktKi5wYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qL2xpYmVkYXRhc2VydmVydWkvKi5oIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZXZpbmNlL2V2aW5jZV8zLjI0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ldmluY2UvZXZpbmNlXzMuMjQuMC5iYgppbmRleCA3OGE5NDk1Li5jN2VjZjJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ldmluY2UvZXZpbmNlXzMuMjQuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ldmluY2UvZXZpbmNlXzMuMjQuMC5iYgpAQCAtNyw2ICs3LDggQEAKIAogaW5oZXJpdCBnbm9tZSBwa2djb25maWcgZ3RrLWljb24tY2FjaGUgZ3NldHRpbmdzIGdvYmplY3QtaW50cm9zcGVjdGlvbiBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgc3lzdGVtZAogCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCiBTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0dOT01FQk59LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtHTk9NRUJOfS0ke1BWfS50YXIuJHtHTk9NRV9DT01QUkVTU19UWVBFfTtuYW1lPWFyY2hpdmUgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1oZWxwLXJlbW92ZS1ZRUxQLW1hY3JvLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWZvcm1hdC1hdHRyaWJ1dGUtdG8tX3N5bmN0ZXhfbWFsbG9jLnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG0vJWdjb25mLXRyZWUueG1sIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS8lZ2NvbmYtdHJlZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4YzJlOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS8lZ2NvbmYtdHJlZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OTIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci08Z2NvbmY+Ci0gICAgICAgIDxkaXIgbmFtZT0iZGVza3RvcCI+Ci0gICAgICAgICAgICAgICAgPGRpciBuYW1lPSJnbm9tZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9InVybC1oYW5kbGVycyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0ieW1zZ3IiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9InhtcHAiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9IndlYmNhbCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0idXZveCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0idHJhc2giPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9InNpcCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0icnRzcCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0icnRwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+L2Jpbi90cnVlPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJwbm0iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9Im5vdGUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9Im5ldCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0ibXNuaW0iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9Im1tc2giPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9Im1tcyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0ibWFuIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+L2Jpbi90cnVlPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJtYWlsdG8iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9Imxhc3RmbSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0iaXRwYyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0iaXRtcyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0iaXJjIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+L2Jpbi90cnVlPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJpbmZvIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+L2Jpbi90cnVlPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJpY3l4Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+L2Jpbi90cnVlPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJpY3kiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9ImljcSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0iaHR0cHMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9Imh0dHAiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9ImgzMjMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9ImdoZWxwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+L2Jpbi90cnVlPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJnZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0iZnRwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+L2Jpbi90cnVlPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJmaWxlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+L2Jpbi90cnVlPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJmZWVkIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+L2Jpbi90cnVlPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJjZGRhIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+L2Jpbi90cnVlPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJjYWxsdG8iPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9ImFpbSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0iYWJvdXQiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT4vYmluL3RydWU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9ImxvY2tkb3duIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImRpc2FibGVfdXJsX2hhbmRsZXJzIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0iYm9vbCIgdmFsdWU9InRydWUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iZGlzYWJsZV9zYXZlX3RvX2Rpc2siIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJib29sIiB2YWx1ZT0idHJ1ZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJkaXNhYmxlX3ByaW50X3NldHVwIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0iYm9vbCIgdmFsdWU9InRydWUiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iZGlzYWJsZV9wcmludGluZyIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9ImJvb2wiIHZhbHVlPSJ0cnVlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImRpc2FibGVfbG9ja19zY3JlZW4iIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJib29sIiB2YWx1ZT0idHJ1ZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJkaXNhYmxlX2NvbW1hbmRfbGluZSIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9ImJvb2wiIHZhbHVlPSJ0cnVlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJhcHBsaWNhdGlvbnMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9InRlcm1pbmFsIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iZXhlYyIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+L2Jpbi90cnVlPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJhY2Nlc3NpYmlsaXR5Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJrZXlib2FyZCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImVuYWJsZSIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9ImJvb2wiIHZhbHVlPSJ0cnVlIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICA8L2Rpcj4KLSAgICAgICAgPGRpciBuYW1lPSJhcHBzIj4KLSAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9Imdub21lX3NldHRpbmdzX2RhZW1vbiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9ImtleWJpbmRpbmdzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9Ind3dyIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJzdG9wIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+PC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InNsZWVwIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+PC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InNlYXJjaCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJzY3JlZW5zYXZlciIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJwcmV2aW91cyIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJwb3dlciIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJwbGF5IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+PC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InBhdXNlIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+PC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9Im5leHQiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT48L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0ibWVkaWEiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT48L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iaG9tZSIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJoZWxwIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+PC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImVtYWlsIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+PC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNhbGN1bGF0b3IiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT48L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iZWplY3QiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT48L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgPGRpciBuYW1lPSJtZXRhY2l0eSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9ImtleWJpbmRpbmdfY29tbWFuZHMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZF93aW5kb3dfc2NyZWVuc2hvdCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPi9iaW4vdHJ1ZTwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kX3NjcmVlbnNob3QiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5nZG0tc2NyZWVuc2hvdDwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0iZ2xvYmFsX2tleWJpbmRpbmdzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InN3aXRjaF90b193b3Jrc3BhY2VfdXAiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5kaXNhYmxlZDwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJzd2l0Y2hfdG9fd29ya3NwYWNlX3JpZ2h0IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+ZGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0ic3dpdGNoX3RvX3dvcmtzcGFjZV9sZWZ0IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+ZGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0ic3dpdGNoX3RvX3dvcmtzcGFjZV9kb3duIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+ZGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0ic3dpdGNoX2dyb3VwIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+ZGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0ic2hvd19kZXNrdG9wIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+ZGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0icnVuX2NvbW1hbmRfd2luZG93X3NjcmVlbnNob3QiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5kaXNhYmxlZDwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJydW5fY29tbWFuZF9zY3JlZW5zaG90IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+UHJpbnQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0icGFuZWxfcnVuX2RpYWxvZyIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPmRpc2FibGVkPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InBhbmVsX21haW5fbWVudSIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPmRpc2FibGVkPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgPGRpciBuYW1lPSJnZW5lcmFsIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9Im51bV93b3Jrc3BhY2VzIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0iaW50IiB2YWx1ZT0iMSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9ImNvbXBpeiI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9ImdlbmVyYWwiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9ImFsbHNjcmVlbnMiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0ib3B0aW9ucyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0icnVuX2NvbW1hbmQxMV9rZXkiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+RGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJydW5fY29tbWFuZDExX2J1dHRvbiIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5EaXNhYmxlZDwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InJ1bl9jb21tYW5kMTBfa2V5IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPkRpc2FibGVkPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0icnVuX2NvbW1hbmQxMF9idXR0b24iIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+RGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJydW5fY29tbWFuZDhfa2V5IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPkRpc2FibGVkPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0icnVuX2NvbW1hbmQ4X2J1dHRvbiIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5EaXNhYmxlZDwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InJ1bl9jb21tYW5kN19rZXkiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+RGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJydW5fY29tbWFuZDdfYnV0dG9uIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPkRpc2FibGVkPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0icnVuX2NvbW1hbmQ2X2tleSIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5EaXNhYmxlZDwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InJ1bl9jb21tYW5kNl9idXR0b24iIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+RGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJydW5fY29tbWFuZDVfa2V5IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPkRpc2FibGVkPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0icnVuX2NvbW1hbmQ1X2J1dHRvbiIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5EaXNhYmxlZDwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InJ1bl9jb21tYW5kNF9rZXkiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+RGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJydW5fY29tbWFuZDRfYnV0dG9uIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPkRpc2FibGVkPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0icnVuX2NvbW1hbmQzX2tleSIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5EaXNhYmxlZDwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InJ1bl9jb21tYW5kM19idXR0b24iIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+RGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJydW5fY29tbWFuZDJfa2V5IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPkRpc2FibGVkPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0icnVuX2NvbW1hbmQyX2J1dHRvbiIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5EaXNhYmxlZDwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InJ1bl9jb21tYW5kMV9rZXkiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+RGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJydW5fY29tbWFuZDFfYnV0dG9uIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPkRpc2FibGVkPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0icnVuX2NvbW1hbmQwX2tleSIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5EaXNhYmxlZDwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InJ1bl9jb21tYW5kMF9idXR0b24iIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+RGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJydW5fa2V5IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPkRpc2FibGVkPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0icnVuX2J1dHRvbiIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5EaXNhYmxlZDwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9Im1haW5fbWVudV9rZXkiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+RGlzYWJsZWQ8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJtYWluX21lbnVfYnV0dG9uIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPkRpc2FibGVkPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZF93aW5kb3dfc2NyZWVuc2hvdCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT48L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeSBuYW1lPSJjb21tYW5kMTEiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+PC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZDEwIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQ5IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQ4IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQ3IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQ2IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQ1IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQ0IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQzIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQyIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQxIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmQwIiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9ImNvbW1hbmRfdGVybWluYWwiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+PC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iY29tbWFuZF9zY3JlZW5zaG90IiBtdGltZT0iMTIyNzE3MzE5NyIgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPmdkbS1zY3JlZW5zaG90PC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0iYWN0aXZlX3BsdWdpbnMiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJsaXN0IiBsdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPmN1YmU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+ZGVjb3JhdGlvbjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5nY29uZjwvc3RyaW5ndmFsdWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB0eXBlPSJzdHJpbmciPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmd2YWx1ZT5nbGliPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPm1vdmU8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+cGxhY2U8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+cmVzaXplPC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHR5cGU9InN0cmluZyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmluZ3ZhbHVlPnNjcmVlbnNob3Q8L3N0cmluZ3ZhbHVlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgdHlwZT0ic3RyaW5nIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaW5ndmFsdWU+d29iYmx5PC9zdHJpbmd2YWx1ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGlyPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgPGRpciBuYW1lPSJnbm9tZS1wb3dlci1tYW5hZ2VyIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXIgbmFtZT0idWkiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0ic2hvd19jb250ZXh0X21lbnUiIG10aW1lPSIxMjI3MTczMTk3IiB0eXBlPSJib29sIiB2YWx1ZT0iZmFsc2UiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgPGRpciBuYW1lPSJnbm9tZS1zY3JlZW5zYXZlciI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkgbmFtZT0icG93ZXJfbWFuYWdlbWVudF9kZWxheSIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9ImludCIgdmFsdWU9IjMwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgPC9kaXI+Ci0gICAgICAgICAgICAgICAgPGRpciBuYW1lPSJuYXV0aWx1cyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZGlyIG5hbWU9InByZWZlcmVuY2VzIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5IG5hbWU9InNob3dfZGVza3RvcCIgbXRpbWU9IjEyMjcxNzMxOTciIHR5cGU9ImJvb2wiIHZhbHVlPSJmYWxzZSI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW50cnk+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgICAgICAgICA8L2Rpcj4KLSAgICAgICAgPC9kaXI+Ci08L2djb25mPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS9EZWZhdWx0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS9EZWZhdWx0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhN2E3ZmNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG0vRGVmYXVsdAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBTdG9sZW4gZnJvbSB0aGUgZGViaWFuIGtkbSBzZXR1cCwgYXJlbid0IEkgc25lYWt5Ci0jIFBsdXMgYSBsb3Qgb2YgZnVuIHN0dWZmIGFkZGVkCi0jICAtR2VvcmdlCi0KLVBBVEg9Ii91c3IvYmluOiRQQVRIIgotT0xEX0lGUz0kSUZTCi0KLWdkbXdoaWNoICgpIHsKLSAgQ09NTUFORD0iJDEiCi0gIE9VVFBVVD0KLSAgSUZTPToKLSAgZm9yIGRpciBpbiAkUEFUSAotICBkbwotICAgIGlmIHRlc3QgLXggIiRkaXIvJENPTU1BTkQiIDsgdGhlbgotICAgICAgaWYgdGVzdCAieCRPVVRQVVQiID0gIngiIDsgdGhlbgotICAgICAgICBPVVRQVVQ9IiRkaXIvJENPTU1BTkQiCi0gICAgICBmaQotICAgIGZpCi0gIGRvbmUKLSAgSUZTPSRPTERfSUZTCi0gIGVjaG8gIiRPVVRQVVQiCi19Ci0KLXN5c3Jlc291cmNlcz0vZXRjL1gxMS9YcmVzb3VyY2VzCi0KLSMgbWVyZ2UgaW4gZGVmYXVsdHMKLWlmIFsgLWYgIiRzeXNyZXNvdXJjZXMiIF07IHRoZW4KLSAgICB4cmRiIC1tZXJnZSAiJHN5c3Jlc291cmNlcyIKLWZpCi0KLXN5c21vZG1hcD0vZXRjL1gxMS9YbW9kbWFwCi0KLVhNT0RNQVA9YGdkbXdoaWNoIHhtb2RtYXBgCi1pZiBbICJ4JFhNT0RNQVAiICE9ICJ4IiBdIDsgdGhlbgotICBpZiBbICJ4JEdETV9QQVJFTlRfRElTUExBWSIgPSAieCIgXTsgdGhlbgotICAgIGlmIFsgLWYgJHN5c21vZG1hcCBdOyB0aGVuCi0gICAgICAkWE1PRE1BUCAkc3lzbW9kbWFwCi0gICAgZmkKLSAgZWxzZQotICAgICggRElTUExBWT0kR0RNX1BBUkVOVF9ESVNQTEFZIFhBVVRIT1JJVFk9JEdETV9QQVJFTlRfWEFVVEhPUklUWSAkWE1PRE1BUCAtcGtlICkgfCAkWE1PRE1BUCAtCi0gIGZpCi0KLSAgIwotICAjIFN3aXRjaCBTdW4ncyBBbHQgYW5kIE1ldGEgbW9kIG1hcHBpbmdzCi0gICMKLQotICBVTkFNRT1gZ2Rtd2hpY2ggdW5hbWVgCi0gIFBST0NFU1NPUj1gJFVOQU1FIC1wYAotICBpZiBbICJ4JFBST0NFU1NPUiIgPSAieHNwYXJjIiBdOyB0aGVuCi0gICAgaWYgJFhNT0RNQVAgfCAvdXNyL2Jpbi9ncmVwIG1vZDQgfCAvdXNyL2Jpbi9ncmVwIEFsdCA+IC9kZXYvbnVsbCAyPi9kZXYvbnVsbAotICAgIHRoZW4KLSAgICAgICRYTU9ETUFQIC1lICJjbGVhciBNb2QxIiBcCi0gICAgICAgICAgICAgICAtZSAiY2xlYXIgTW9kNCIgXAotICAgICAgICAgICAgICAgLWUgImFkZCBNb2QxID0gQWx0X0wiIFwKLSAgICAgICAgICAgICAgIC1lICJhZGQgTW9kMSA9IEFsdF9SIiBcCi0gICAgICAgICAgICAgICAtZSAiYWRkIE1vZDQgPSBNZXRhX0wiIFwKLSAgICAgICAgICAgICAgIC1lICJhZGQgTW9kNCA9IE1ldGFfUiIKLSAgICBmaQotICBmaQotZmkKLQotU0VUWEtCTUFQPWBnZG13aGljaCBzZXR4a2JtYXBgCi1pZiBbICJ4JFNFVFhLQk1BUCIgIT0gIngiIF0gOyB0aGVuCi0gICMgRklYTUU6IGlzIHRoaXMgYWxsIHJpZ2h0PyAgSXMgdGhpcyBjb21wbGV0ZWx5IG9uIGNyYWNrPwotICAjIFdoYXQgdGhpcyBkb2VzIGlzIG1vdmUgdGhlIHhrYiBjb25maWd1cmF0aW9uIGZyb20gdGhlIEdETV9QQVJFTlRfRElTUExBWQotICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGluIGNvZGUuICBPciB0aGVyZSBtdXN0IGJlIGFuIGVhc2llciB3YXkgLi4uCi0gIGlmIFsgLW4gIiRHRE1fUEFSRU5UX0RJU1BMQVkiIF07IHRoZW4KLSAgICBYS0JTRVRVUD1gKCBESVNQTEFZPSRHRE1fUEFSRU5UX0RJU1BMQVkgWEFVVEhPUklUWT0kR0RNX1BBUkVOVF9YQVVUSE9SSVRZICRTRVRYS0JNQVAgLXYgKWAKLSAgICBpZiBbIC1uICIkWEtCU0VUVVAiIF07IHRoZW4KLSAgICAgIFhLQktFWU1BUD1gZWNobyAiJFhLQlNFVFVQIiB8IGdyZXAgJ15rZXltYXAnIHwgYXdrICd7IHByaW50ICQyIH0nYAotICAgICAgWEtCVFlQRVM9YGVjaG8gIiRYS0JTRVRVUCIgfCBncmVwICdedHlwZXMnIHwgYXdrICd7IHByaW50ICQyIH0nYAotICAgICAgWEtCQ09NUEFUPWBlY2hvICIkWEtCU0VUVVAiIHwgZ3JlcCAnXmNvbXBhdCcgfCBhd2sgJ3sgcHJpbnQgJDIgfSdgCi0gICAgICBYS0JTWU1CT0xTPWBlY2hvICIkWEtCU0VUVVAiIHwgZ3JlcCAnXnN5bWJvbHMnIHwgYXdrICd7IHByaW50ICQyIH0nYAotICAgICAgWEtCR0VPTUVUUlk9YGVjaG8gIiRYS0JTRVRVUCIgfCBncmVwICdeZ2VvbWV0cnknIHwgYXdrICd7IHByaW50ICQyIH0nYAotICAgICAgaWYgWyAtbiAiJFhLQktFWU1BUCIgXTsgdGhlbgotICAgICAgICAkU0VUWEtCTUFQIC1rZXltYXAgIiRYS0JLRVlNQVAiCi0gICAgICBlbGlmIFsgLW4gIiRYS0JUWVBFUyIgLWEgLW4gIiRYS0JDT01QQVQiIC1hIC1uICIkWEtCU1lNQk9MUyIgLWEgLW4gIiRYS0JHRU9NRVRSWSIgXTsgdGhlbgotICAgICAgICAkU0VUWEtCTUFQIC10eXBlcyAiJFhLQlRZUEVTIiAtY29tcGF0ICIkWEtCQ09NUEFUIiAtc3ltYm9scyAiJFhLQlNZTUJPTFMiIC1nZW9tZXRyeSAiJFhLQkdFT01FVFJZIgotICAgICAgZWxpZiBbIC1uICIkWEtCVFlQRVMiIC1hIC1uICIkWEtCQ09NUEFUIiAtYSAtbiAiJFhLQlNZTUJPTFMiIF07IHRoZW4KLSAgICAgICAgJFNFVFhLQk1BUCAtdHlwZXMgIiRYS0JUWVBFUyIgLWNvbXBhdCAiJFhLQkNPTVBBVCIgLXN5bWJvbHMgIiRYS0JTWU1CT0xTIgotICAgICAgZWxpZiBbIC1uICIkWEtCU1lNQk9MUyIgXTsgdGhlbgotICAgICAgICAkU0VUWEtCTUFQIC1zeW1ib2xzICIkWEtCU1lNQk9MUyIKLSAgICAgIGZpCi0gICAgZmkKLSAgZmkKLWZpCi0KLSMgRklYTUU6IHRoZSBob3VzZWtlZXBpbmcgYmVsb3cgcmVhbGx5IHNob3VsZCBiZSBtb3ZlZCB0byB0aGUgcG9zdGluc3Qgb2YgcGFja2FnZXMgdGhhdCByZXF1aXJlIGl0Ci0jIGJydXRlIGZvcmNlIGFwcHJvYWNoIGZvciBub3cKLXVwZGF0ZS1kZXNrdG9wLWRhdGFiYXNlCi1nbGliLWNvbXBpbGUtc2NoZW1hcyAvdXNyL3NoYXJlL2dsaWItMi4wL3NjaGVtYXMvCi0KLSN4MTF2bmMgIC1xIC1iZyAtZGlzcGxheSA6MCAtZm9yZXZlciAtYXZhaGkgLXhrYgotCi1leGl0IDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG0vY3Jvc3MteGRldGVjdGlvbi5kaWZmIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS9jcm9zcy14ZGV0ZWN0aW9uLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZTM1MTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS9jcm9zcy14ZGV0ZWN0aW9uLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1Gcm9tIDYwMDg0ZTdlOTczNjM0OTcxYzk2NDNmMjQ1OWU1ZDNlMjQ4ZWUzZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotRGF0ZTogVGh1LCA5IEp1biAyMDExIDE4OjEyOjQ1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkLXN5czogaGFyZGNvZGUgeCBwYXRocyB0byBmaXggY3Jvc3Njb21waWxpbmcKLQotU2lnbmVkLW9mZi1ieTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgNzIgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDY3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlZWFmM2RjLi44NDFlZmUwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMTAxLDczICsxMTAxLDExIEBAIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBkbmwgLSBDaGVjayBmb3IgWCBTZXJ2ZXIgbG9jYXRpb24KLSBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gCi0tIyBGaXJzdCBjaGVjayB3aXRoICIhIC1oIiBmb3IgL3Vzci9YMTFSNiBhbmQgL3Vzci9YMTEgc2luY2UgdGhleSBvZnRlbgotLSMgc3ltbGluayB0byBlYWNoIG90aGVyLCBhbmQgY29uZmlndXJlIHNob3VsZCB1c2UgdGhlIG1vcmUgc3RhYmxlCi0tIyBsb2NhdGlvbiAodGhlIHJlYWwgZGlyZWN0b3J5KSBpZiBwb3NzaWJsZS4KLS0jCi0tIyBPbiBTb2xhcmlzLCB0aGUgL3Vzci9iaW4vWHNlcnZlciBzY3JpcHQgaXMgdXNlZCB0byBkZWNpZGUgd2hldGhlciB0bwotLSMgdXNlIFhzdW4gb3IgWG9yZywgc28gdGhpcyBpcyB1c2VkIG9uIFNvbGFyaXMuCi0tIwotLSMgV2hlbiB0ZXN0aW5nIGZvciAvdXNyL1gxMVI2LCBmaXJzdCBjaGVjayB3aXRoICIhIC1oIiBmb3IgL3Vzci9YMTFSNgotLSMgYW5kIC91c3IvWDExIHNpbmNlIHRoZXkgb2Z0ZW4gc3ltbGluayB0byBlYWNoIG90aGVyLCBhbmQgY29uZmlndXJlCi0tIyBzaG91bGQgdXNlIHRoZSBtb3JlIHN0YWJsZSBsb2NhdGlvbiAodGhlIHJlYWwgZGlyZWN0b3J5KSBpZiBwb3NzaWJsZS4KLS0jCi0taWYgdGVzdCAteCAvdXNyL1gxMS9iaW4vWHNlcnZlcjsgdGhlbgotLSAgIFhfUEFUSD0iL3Vzci9YMTEvYmluIgotLSAgIFhfU0VSVkVSX1BBVEg9Ii91c3IvWDExL2JpbiIKLS0gICBYX1NFUlZFUj0iL3Vzci9YMTEvYmluL1hzZXJ2ZXIiCi0tICAgWF9DT05GSUdfT1BUSU9OUz0iLWF1ZGl0IDAiCi0tZWxpZiB0ZXN0ICEgLWggL3Vzci9YMTFSNiAtYSAteCAvdXNyL1gxMVI2L2Jpbi9YOyB0aGVuCi0tICAgWF9QQVRIPSIvdXNyL1gxMVI2L2JpbiIKLS0gICBYX1NFUlZFUl9QQVRIPSIvdXNyL1gxMVI2L2JpbiIKLS0gICBYX1NFUlZFUj0iL3Vzci9YMTFSNi9iaW4vWCIKLS0gICBYX0NPTkZJR19PUFRJT05TPSItYXVkaXQgMCIKLS1lbGlmIHRlc3QgISAtaCAvdXNyL1gxMSAtYSAteCAvdXNyL1gxMS9iaW4vWDsgdGhlbgotLSAgIFhfUEFUSD0iL3Vzci9YMTEvYmluIgotLSAgIFhfU0VSVkVSX1BBVEg9Ii91c3IvWDExL2JpbiIKLS0gICBYX1NFUlZFUj0iL3Vzci9YMTEvYmluL1giCi0tICAgWF9DT05GSUdfT1BUSU9OUz0iLWF1ZGl0IDAiCi0tZWxpZiB0ZXN0IC14IC91c3IvWDExUjYvYmluL1g7IHRoZW4KLS0gICBYX1BBVEg9Ii91c3IvWDExUjYvYmluIgotLSAgIFhfU0VSVkVSX1BBVEg9Ii91c3IvWDExUjYvYmluIgotLSAgIFhfU0VSVkVSPSIvdXNyL1gxMVI2L2Jpbi9YIgotLSAgIFhfQ09ORklHX09QVElPTlM9Ii1hdWRpdCAwIgotLWVsaWYgdGVzdCAteCAvdXNyL2Jpbi9Yb3JnOyB0aGVuCi0tICAgWF9QQVRIPSIvdXNyL2JpbiIKLS0gICBYX1NFUlZFUl9QQVRIPSIvdXNyL2JpbiIKLS0gICBYX1NFUlZFUj0iL3Vzci9iaW4vWG9yZyIKLS0gICBYX0NPTkZJR19PUFRJT05TPSItYXVkaXQgMCIKLS1lbGlmIHRlc3QgLXggL3Vzci9YMTEvYmluL1g7IHRoZW4KLS0gICBYX1BBVEg9Ii91c3IvWDExL2JpbiIKLS0gICBYX1NFUlZFUl9QQVRIPSIvdXNyL1gxMS9iaW4iCi0tICAgWF9TRVJWRVI9Ii91c3IvWDExL2Jpbi9YIgotLSAgIFhfQ09ORklHX09QVElPTlM9Ii1hdWRpdCAwIgotLWVsaWYgdGVzdCAteCAvdXNyL29wZW53aW4vYmluL1hzdW47IHRoZW4KLS0gICAjIERvIG5vdCBhZGQgL3Vzci9vcGVud2luL2JpbiBoZXJlIGJlY2F1c2Ugb24gU29sYXJpcyB5b3UgbmVlZAotLSAgICMgL3Vzci9vcGVud2luL2JpbiBpbiB5b3VyIFBBVEggZXZlbiBpZiB5b3UgYXJlIHVzaW5nIHRoZSBYb3JnCi0tICAgIyBYc2VydmVyLiAgV2UgYWRkIHRoaXMgdG8gdGhlIHBhdGggYmVsb3cuCi0tICAgWF9QQVRIPSIvdXNyL29wZW53aW4vYmluIgotLSAgIFhfU0VSVkVSX1BBVEg9Ii91c3Ivb3Blbndpbi9iaW4iCi0tICAgWF9TRVJWRVI9Ii91c3Ivb3Blbndpbi9iaW4vWHN1biIKLS0gICBYX0NPTkZJR19PUFRJT05TPSItYXVkaXQgMCAtbm9iYW5uZXIiCi0tZWxpZiB0ZXN0IC14IC9vcHQvWDExUjYvYmluL1g7IHRoZW4KLS0gICBYX1BBVEg9Ii9vcHQvWDExUjYvYmluIgotLSAgIFhfU0VSVkVSX1BBVEg9Ii9vcHQvWDExUjYvYmluIgotLSAgIFhfU0VSVkVSPSIvb3B0L1gxMVI2L2Jpbi9YIgotLSAgIFhfQ09ORklHX09QVElPTlM9Ii1hdWRpdCAwIgotLWVsaWYgdGVzdCAteCAvdXNyL2Jpbi9YOyB0aGVuCi0tICAgWF9QQVRIPSIvdXNyL2JpbiIKLS0gICBYX1NFUlZFUl9QQVRIPSIvdXNyL2JpbiIKLS0gICBYX1NFUlZFUj0iL3Vzci9iaW4vWCIKLS0gICBYX0NPTkZJR19PUFRJT05TPSItYXVkaXQgMCIKLS1lbHNlCi0tICAgIyB3aGF0IHRvIGRvLCB3aGF0IHRvIGRvLCB0aGlzIGlzIHdyb25nLCBidXQgdGhpcyBqdXN0IHNldHMgdGhlCi0tICAgIyBkZWZhdWx0cywgcGVyaGFwcyB0aGlzIHVzZXIgaXMgY3Jvc3MgY29tcGlsaW5nIG9yIHNvbWUgc3VjaAotLSAgIFhfUEFUSD0iL3Vzci9iaW4vWDExOi91c3IvWDExUjYvYmluOi9vcHQvWDExUjYvYmluIgotLSAgIFhfU0VSVkVSX1BBVEg9Ii91c3IvYmluIgotLSAgIFhfU0VSVkVSPSIvdXNyL2Jpbi9YIgotLSAgIFhfQ09ORklHX09QVElPTlM9Ii1hdWRpdCAwIgotLWZpCi0rIyBXZSBoYXJkY29kZSB0aGUgWCBwYXRocyBzaW5jZSB3ZSBrbm93IHdoZXJlIGl0IHdpbGwgYmUgaW4gdGhlIE9FIHVuaXZlcnMKLStYX1BBVEg9Ii91c3IvYmluIgotK1hfU0VSVkVSX1BBVEg9Ii91c3IvYmluIgotK1hfU0VSVkVSPSIvdXNyL2Jpbi9YIgotK1hfQ09ORklHX09QVElPTlM9Ii1hdWRpdCAwIgotIAotIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBkbmwgLSBDaGVjayBmb3IgWG5lc3QgLyBYZXBoeXIgc3VwcG9ydAotLS0gCi0xLjYuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG0vZ2RtIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS9nZG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJiNWI0MTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS9nZG0KKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0jISAvYmluL3NoCi0jIyMgQkVHSU4gSU5JVCBJTkZPCi0jIFByb3ZpZGVzOiAgICAgICAgICBnZG0KLSMgU2hvdWxkLVN0YXJ0OiAgICAgIGNvbnNvbGUtc2NyZWVuIGFjcGlkIGRidXMgaGFsIG5ldHdvcmstbWFuYWdlcgotIyBSZXF1aXJlZC1TdGFydDogICAgJGxvY2FsX2ZzICRyZW1vdGVfZnMKLSMgUmVxdWlyZWQtU3RvcDogICAgICRsb2NhbF9mcyAkcmVtb3RlX2ZzCi0jIERlZmF1bHQtU3RhcnQ6ICAgICA1Ci0jIERlZmF1bHQtU3RvcDogICAgICAwIDEgMiAzIDYKLSMgU2hvcnQtRGVzY3JpcHRpb246IEdOT01FIERpc3BsYXkgTWFuYWdlcgotIyBEZXNjcmlwdGlvbjogICAgICAgRGViaWFuIGluaXQgc2NyaXB0IGZvciB0aGUgR05PTUUgRGlzcGxheSBNYW5hZ2VyCi0jIyMgRU5EIElOSVQgSU5GTwotIwotIyBBdXRob3I6ICAgICAgIFJ5YW4gTXVycmF5IDxybXVycmF5QGRlYmlhbi5vcmc+Ci0jCi1zZXQgLWUKLQotUEFUSD0vc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbgotREFFTU9OPS91c3Ivc2Jpbi9nZG0KLQotdGVzdCAteCAkREFFTU9OIHx8IGV4aXQgMAotCi1pZiBbIC1yIC9ldGMvZGVmYXVsdC9sb2NhbGUgXTsgdGhlbgotICAuIC9ldGMvZGVmYXVsdC9sb2NhbGUKLSAgZXhwb3J0IExBTkcgTEFOR1VBR0UKLWZpCi0KLSMgVG8gc3RhcnQgZ2RtIGV2ZW4gaWYgaXQgaXMgbm90IHRoZSBkZWZhdWx0IGRpc3BsYXkgbWFuYWdlciwgY2hhbmdlCi0jIEhFRURfREVGQVVMVF9ESVNQTEFZX01BTkFHRVIgdG8gImZhbHNlLiIKLUhFRURfREVGQVVMVF9ESVNQTEFZX01BTkFHRVI9dHJ1ZQotREVGQVVMVF9ESVNQTEFZX01BTkFHRVJfRklMRT0vZXRjL1gxMS9kZWZhdWx0LWRpc3BsYXktbWFuYWdlcgotCi1jYXNlICIkMSIgaW4KLSAgc3RhcnQpCi0JIyBtYWtlIG5lZWRlZCBkaXJlY3RvcmllcyBpbiB2b2xhdGlsZQotCi0JaWYgWyAtZSAvdmFyL2xvZy9nZG0gXSA7IHRoZW4gCi0JCXJtIC1yZiAvdmFyL2xvZy9nZG0KLQlmaQotCi0JbWtkaXIgLW0gMDE3NzAgL3Zhci9sb2cvZ2RtCi0JY2hvd24gZ2RtOmdkbSAvdmFyL2xvZy9nZG0KLQotCWlmIFsgLWUgL3RtcC8uSUNFLXVuaXggXSA7IHRoZW4gCi0JCXJtIC1yZiAvdG1wLy5JQ0UtdW5peAotCWZpCi0KLQlta2RpciAtbSAwMTc3NyAvdG1wLy5JQ0UtdW5peAotCWNob3duIHJvb3Q6cm9vdCAvdG1wLy5JQ0UtdW5peAotCi0gICAgICAgIENPTkZJR1VSRURfREFFTU9OPSQoYmFzZW5hbWUgIiQoY2F0ICRERUZBVUxUX0RJU1BMQVlfTUFOQUdFUl9GSUxFIDI+IC9kZXYvbnVsbCkiKQotICAgICAgICBpZiBncmVwIC13cXMgdGV4dCAvcHJvYy9jbWRsaW5lOyB0aGVuCi0gICAgICAgICAgICBlY2hvICJOb3Qgc3RhcnRpbmcgR05PTUUgRGlzcGxheSBNYW5hZ2VyIChnZG0pOyBmb3VuZCAndGV4dCcgaW4ga2VybmVsIGNvbW1hbmRsaW5lLiIKLSAgICAgICAgZWxpZiBbIC1lICIkREVGQVVMVF9ESVNQTEFZX01BTkFHRVJfRklMRSIgXSAmJiBcCi0gICAgICAgICAgIFsgIiRIRUVEX0RFRkFVTFRfRElTUExBWV9NQU5BR0VSIiA9ICJ0cnVlIiBdICYmIFwKLSAgICAgICAgICAgWyAiJENPTkZJR1VSRURfREFFTU9OIiAhPSBnZG0gXSA7IHRoZW4KLSAgICAgICAgICAgICAgICBlY2hvICJOb3Qgc3RhcnRpbmcgR05PTUUgRGlzcGxheSBNYW5hZ2VyOyBpdCBpcyBub3QgdGhlIGRlZmF1bHQgZGlzcGxheSBtYW5hZ2VyIgotICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZWNobyAiU3RhcnRpbmcgR05PTUUgRGlzcGxheSBNYW5hZ2VyIiAiZ2RtIgotICAgICAgICAgICAgICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLWIgLS1leGVjICREQUVNT04gCi0gICAgICAgIGZpCi0gIDs7Ci0gIHN0b3ApCi0gICAgICAgIGVjaG8gIlN0b3BwaW5nIEdOT01FIERpc3BsYXkgTWFuYWdlciIgImdkbSIKLSAgICAgICAgc2V0ICtlCi0gICAgICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcGlkZmlsZSAvdmFyL3J1bi9nZG0ucGlkIFwKLSAgICAgICAgICAgICAgICAtLW5hbWUgZ2RtIC0tcmV0cnkgNQotICAgICAgICBzZXQgLWUKLSAgOzsKLSAgcmVsb2FkKQotICAgICAgICBlY2hvICJTY2hlZHVsaW5nIHJlbG9hZCBvZiBHTk9NRSBEaXNwbGF5IE1hbmFnZXIgY29uZmlndXJhdGlvbiIgImdkbSIKLSAgICAgICAgc2V0ICtlCi0gICAgICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXNpZ25hbCBVU1IxIC0tcXVpZXQgLS1waWRmaWxlIFwKLSAgICAgICAgICAgICAgICAvdmFyL3J1bi9nZG0ucGlkIC0tbmFtZSBnZG0KLSAgICAgICAgc2V0IC1lCi0gIDs7Ci0gIHN0YXR1cykKLSAgICAgICAgc3RhdHVzX29mX3Byb2MgLXAgIiRQSURGSUxFIiAiJERBRU1PTiIgZ2RtICYmIGV4aXQgMCB8fCBleGl0ICQ/Ci0gIDs7Ci0gIHJlc3RhcnR8Zm9yY2UtcmVsb2FkKQotICAgICAgICAkMCBzdG9wCi0gICAgICAgICQwIHN0YXJ0Ci0gIDs7Ci0gICopCi0gICAgICAgIGVjaG8gIlVzYWdlOiAvZXRjL2luaXQuZC9nZG0ge3N0YXJ0fHN0b3B8cmVzdGFydHxyZWxvYWR8Zm9yY2UtcmVsb2FkfHN0YXR1c30iCi0gICAgICAgIGV4aXQgMQotICA7OwotZXNhYwotCi1leGl0IDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG0vZ2RtLXBhbSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG0vZ2RtLXBhbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjlmYWZlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtL2dkbS1wYW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jCi0jIGRlZmF1bHQ7IHN0YW5kYXJkIFVOKlggYWNjZXNzCi0jCi1hdXRoICAgICByZXF1aXJlZCAgICAgICBwYW1fdW5peC5zbwotYWNjb3VudCAgcmVxdWlyZWQgICAgICAgcGFtX3VuaXguc28KLXBhc3N3b3JkIHJlcXVpcmVkICAgICAgIHBhbV91bml4LnNvCi1zZXNzaW9uICByZXF1aXJlZCAgICAgICBwYW1fdW5peC5zbwotCi1hdXRoICAgICBvcHRpb25hbCAgICAgICBwYW1fZ25vbWVfa2V5cmluZy5zbwotc2Vzc2lvbiAgb3B0aW9uYWwgICAgICAgcGFtX2dub21lX2tleXJpbmcuc28gIGF1dG9fc3RhcnQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS9nZG0uY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG0vZ2RtLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1OTgyM2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS9nZG0uY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLSMgR0RNIEN1c3RvbSBDb25maWd1cmF0aW9uIGZpbGUuCi0jCi0jIFRoaXMgZmlsZSBpcyB0aGUgYXBwcm9wcmlhdGUgcGxhY2UgZm9yIHNwZWNpZnlpbmcgeW91ciBjdXN0b21pemF0aW9ucyB0byB0aGUKLSMgR0RNIGNvbmZpZ3VyYXRpb24uICAgSWYgeW91IHJ1biBnZG1zZXR1cCwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGVkaXQgdGhpcwotIyBmaWxlIGZvciB5b3UgYW5kIHdpbGwgY2F1c2UgdGhlIGRhZW1vbiBhbmQgYW55IHJ1bm5pbmcgR0RNIEdVSSBwcm9ncmFtcyB0bwotIyBhdXRvbWF0aWNhbGx5IHVwZGF0ZSB3aXRoIHRoZSBuZXcgY29uZmlndXJhdGlvbi4gIE5vdCBhbGwgY29uZmlndXJhdGlvbgotIyBvcHRpb25zIGFyZSBzdXBwb3J0ZWQgYnkgZ2Rtc2V0dXAsIHNvIHRvIG1vZGlmeSBzb21lIHZhbHVlcyBpdCBtYXkgYmUKLSMgbmVjZXNzYXJ5IHRvIG1vZGlmeSB0aGlzIGZpbGUgZGlyZWN0bHkgYnkgaGFuZC4KLSMKLSMgVGhpcyBmaWxlIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHNldHRpbmdzLiAgVGhlc2Ugc2V0dGluZ3MgCi0jIGFyZSBzdG9yZWQgaW4gdGhlIEdETSBTeXN0ZW0gRGVmYXVsdHMgY29uZmlndXJhdGlvbiBmaWxlLCB3aGljaCBpcyBmb3VuZAotIyBhdCB0aGUgZm9sbG93aW5nIGxvY2F0aW9uLgotIwotIyAvdXNyL3NoYXJlL2dkbS9kZWZhdWx0cy5jb25mLiAgCi0jCi0jIFRoaXMgZmlsZSBjb250YWlucyBjb21tZW50cyBhYm91dCB0aGUgbWVhbmluZyBvZiBlYWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9uLAotIyBzbyBpcyBhbHNvIGEgdXNlZnVsIHJlZmVyZW5jZS4gIEFsc28gcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gbGlua3MgYXQKLSMgdGhlIGVuZCBvZiB0aGlzIGNvbW1lbnQgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uICBJbiBzaG9ydCwgdG8gaGFuZC1lZGl0Ci0jIHRoaXMgZmlsZSwgc2ltcGx5IGFkZCBvciBtb2RpZnkgdGhlIGtleT12YWx1ZSBjb21iaW5hdGlvbiBpbiB0aGUKLSMgYXBwcm9wcmlhdGUgc2VjdGlvbiBpbiB0aGUgdGVtcGxhdGUgYmVsb3cgdGhpcyBjb21tZW50IHNlY3Rpb24uCi0jCi0jIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBzcGVjaWZ5IGEgZGlmZmVyZW50IHZhbHVlIGZvciB0aGUgRW5hYmxlIGtleQotIyBpbiB0aGUgIltkZWJ1Z10iIHNlY3Rpb24gb2YgeW91ciBHRE0gU3lzdGVtIERlZmF1bHRzIGNvbmZpZ3VyYXRpb24gZmlsZSwKLSMgdGhlbiBhZGQgIkVuYWJsZT10cnVlIiBpbiB0aGUgIltkZWJ1Z10iIHNlY3Rpb24gb2YgdGhpcyBmaWxlLiAgSWYgdGhlCi0jIGtleSBhbHJlYWR5IGV4aXN0cyBpbiB0aGlzIGZpbGUsIHRoZW4gc2ltcGx5IG1vZGlmeSBpdC4KLSMKLSMgT2xkZXIgdmVyc2lvbnMgb2YgR0RNIHVzZWQgdGhlICJnZG0uY29uZiIgZmlsZSBmb3IgY29uZmlndXJhdGlvbi4gIElmIHlvdXIKLSMgc3lzdGVtIGhhcyBhbiBvbGQgZ2RtLmNvbmYgZmlsZSBvbiB0aGUgc3lzdGVtLCBpdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZgotIyB0aGlzIGZpbGUgLSBzbyBjaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgbm90IHRha2UgZWZmZWN0LiAgQ29uc2lkZXIKLSMgbWlncmF0aW5nIHlvdXIgY29uZmlndXJhdGlvbiB0byB0aGlzIGZpbGUgYW5kIHJlbW92aW5nIHRoZSBnZG0uY29uZiBmaWxlLgotIwotIyBJZiB5b3UgaGFuZCBlZGl0IGEgR0RNIGNvbmZpZ3VyYXRpb24gZmlsZSwgeW91IGNhbiBydW4gdGhlIGZvbGxvd2luZwotIyBjb21tYW5kIGFuZCB0aGUgR0RNIGRhZW1vbiB3aWxsIGltbWVkaWF0ZWx5IHJlZmxlY3QgdGhlIGNoYW5nZS4gIEFueQotIyBydW5uaW5nIEdETSBHVUkgcHJvZ3JhbXMgd2lsbCBhbHNvIGJlIG5vdGlmaWVkIHRvIHVwZGF0ZSB3aXRoIHRoZSBuZXcKLSMgY29uZmlndXJhdGlvbi4KLSMKLSMgZ2RtZmxleGlzZXJ2ZXIgLS1jb21tYW5kPSJVUERBVEVfQ09ORklHIDxjb25maWd1cmF0aW9uIGtleT4iCi0jCi0jIGUuZywgdGhlICJFbmFibGUiIGtleSBpbiB0aGUgIltkZWJ1Z10iIHNlY3Rpb24gd291bGQgYmUgImRlYnVnL0VuYWJsZSIuCi0jCi0jIFlvdSBjYW4gYWxzbyBydW4gZ2RtLXJlc3RhcnQgb3IgZ2RtLXNhZmUtcmVzdGFydCB0byBjYXVzZSBHRE0gdG8gcmVzdGFydCBhbmQKLSMgcmUtcmVhZCB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuICBZb3UgY2FuIGFsc28gcmVzdGFydCBHRE0gYnkgc2VuZGluZwotIyBhIEhVUCBvciBVU1IxIHNpZ25hbCB0byB0aGUgZGFlbW9uLiAgSFVQIGJlaGF2ZXMgbGlrZSBnZG0tcmVzdGFydCBhbmQgY2F1c2VzCi0jIGFueSB1c2VyIHNlc3Npb24gc3RhcnRlZCBieSBHRE0gdG8gZXhpdCBpbW1lZGlhdGVseSB3aGlsZSBVU1IxIGJlaGF2ZXMgbGlrZQotIyBnZG0tc2FmZS1yZXN0YXJ0IGFuZCB3aWxsIHdhaXQgdW50aWwgYWxsIHVzZXJzIGxvZyBvdXQgYmVmb3JlIHJlc3RhcnRpbmcgR0RNLgotIwotIyBGb3IgZnVsbCByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBzZWUgdGhlIGdub21lIGhlbHAgYnJvd3NlciB1bmRlcgotIyBHTk9NRXxTeXN0ZW0gY2F0ZWdvcnkuICBZb3UgY2FuIGFsc28gZmluZCB0aGUgZG9jcyBpbiBIVE1MIGZvcm0gb24KLSMgaHR0cDovL3d3dy5nbm9tZS5vcmcvcHJvamVjdHMvZ2RtLwotIwotIyBOT1RFOiBMaW5lcyB0aGF0IGJlZ2luIHdpdGggIiMiIGFyZSBjb25zaWRlcmVkIGNvbW1lbnRzLgotIwotIyBIYXZlIGZ1biEKLQotW2RhZW1vbl0KLQotW3NlY3VyaXR5XQotCi1beGRtY3BdCi0KLVtndWldCi0KLVtncmVldGVyXQotCi1bY2hvb3Nlcl0KLQotW2RlYnVnXQotCi0jIE5vdGUgdGhhdCB0byBkaXNhYmxlIHNlcnZlcnMgZGVmaW5lZCBpbiB0aGUgR0RNIFN5c3RlbSBEZWZhdWx0cwotIyBjb25maWd1cmF0aW9uIGZpbGUgKHN1Y2ggYXMgMD1TdGFuZGFyZCwgeW91IG11c3QgcHV0IGEgbGluZSBpbiB0aGlzIGZpbGUKLSMgdGhhdCBzYXlzIDA9aW5hY3RpdmUsIGFzIGRlc2NyaWJlZCBpbiB0aGUgQ29uZmlndXJhdGlvbiBzZWN0aW9uIG9mIHRoZSBHRE0KLSMgZG9jdW1lbnRhdGlvbi4KLSMKLVtzZXJ2ZXJzXQotCi0jIEFsc28gbm90ZSwgdGhhdCBpZiB5b3UgcmVkZWZpbmUgYSBbc2VydmVyLWZvb10gc2VjdGlvbiwgdGhlbiBHRE0gd2lsbAotIyB1c2UgdGhlIGRlZmluaXRpb24gaW4gdGhpcyBmaWxlLCBub3QgdGhlIEdETSBTeXN0ZW0gRGVmYXVsdHMgY29uZmlndXJhdGlvbgotIyBmaWxlLiAgSXQgaXMgY3VycmVudGx5IG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIGEgW3NlcnZlci1mb29dIHNlY3Rpb24KLSMgZGVmaW5lZCBpbiB0aGUgR0RNIFN5c3RlbSBEZWZhdWx0cyBjb25maWd1cmF0aW9uIGZpbGUuCi0jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtL2dkbS5zZXJ2aWNlLmluIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS9nZG0uc2VydmljZS5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UxNTU2YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtL2dkbS5zZXJ2aWNlLmluCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1Hbm9tZSBEaXNwbGF5IE1hbmFnZXIKLUFmdGVyPXN5c3RlbWQtdXNlci1zZXNzaW9ucy5zZXJ2aWNlCi0KLVtTZXJ2aWNlXQotRXhlY1N0YXJ0PSVzYmluZGlyJS9nZG0gLW5vZGFlbW9uCi1TdGFuZGFyZE91dHB1dD1zeXNsb2cKLQotW0luc3RhbGxdCi1BbGlhcz1kaXNwbGF5LW1hbmFnZXIuc2VydmljZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2VkaXQvZ2VkaXRfMi4zMC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2VkaXQvZ2VkaXRfMi4zMC40LmJiCmluZGV4IDVkMjQ0ZGUuLmJhNDI1YWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dlZGl0L2dlZGl0XzIuMzAuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZWRpdC9nZWRpdF8yLjMwLjQuYmIKQEAgLTcsNyArNywxMCBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKIAotaW5oZXJpdCBnbm9tZSBnZXR0ZXh0IHB5dGhvbm5hdGl2ZQoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ25vbWUgZ2V0dGV4dCBweXRob25uYXRpdmUKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKwogU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtHTk9NRUJOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7R05PTUVCTn0tJHtQVn0udGFyLiR7R05PTUVfQ09NUFJFU1NfVFlQRX07bmFtZT1hcmNoaXZlIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtd29ya2Fyb3VuZC12b2lkLXBvaW50ZXItYXJpdGhtZXRpYy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1oZWxwLWRpcmVjdG9yeS1mcm9tLWJ1aWxkLnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWtleXJpbmcvZ25vbWUta2V5cmluZy9lZ2ctYXNuMXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1rZXlyaW5nL2dub21lLWtleXJpbmcvZWdnLWFzbjF4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDhhNDBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWtleXJpbmcvZ25vbWUta2V5cmluZy9lZ2ctYXNuMXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1GaXhlZCBidWlsZCBlcnJvciB3aXRoIGdjYyA0LjgKLQotRXJyb3JzIGxpa2UgYmVsb3cKLQotZWdnLWFzbjF4LmM6IEluIGZ1bmN0aW9uICdhbm9kZV9lbmNvZGVfYnVpbGQnOgotZWdnLWFzbjF4LmM6MTI4MDo3OiB3YXJuaW5nOiB2YXJpYWJsZSAndHlwZScgc2V0IGJ1dCBub3QgdXNlZCBbLVd1bnVzZWQtYnV0LXNldC12YXJpYWJsZV0KLWVnZy1hc24xeC5jOiBJbiBmdW5jdGlvbiAndHJhdmVyc2VfYW5kX3ByZXBhcmUnOgotZWdnLWFzbjF4LmM6MzM1NDozOiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ2VnZ19hc24xeF9jcmVhdGUnIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZSBbZW5hYmxlZCBieSBkZWZhdWx0XQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGVnZy1hc24xeC5jOjUwOjA6Ci1lZ2ctYXNuMXguaDozODo4OiBub3RlOiBleHBlY3RlZCAnY29uc3Qgc3RydWN0IHN0YXRpY19zdHJ1Y3RfYXNuIConIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlICdjb25zdCBzdHJ1Y3QgYXNuMV9zdGF0aWNfbm9kZSAqJwotZWdnLWFzbjF4LmM6IEF0IHRvcCBsZXZlbDoKLWVnZy1hc24xeC5jOjM1MDk6MTogZXJyb3I6IGNvbmZsaWN0aW5nIHR5cGVzIGZvciAnZWdnX2FzbjF4X2NyZWF0ZScKLUluIGZpbGUgaW5jbHVkZWQgZnJvbSBlZ2ctYXNuMXguYzo1MDowOgotZWdnLWFzbjF4Lmg6Mzg6ODogbm90ZTogcHJldmlvdXMgZGVjbGFyYXRpb24gb2YgJ2VnZ19hc24xeF9jcmVhdGUnIHdhcyBoZXJlCi1lZ2ctYXNuMXguYzozNTcyOjE6IGVycm9yOiBjb25mbGljdGluZyB0eXBlcyBmb3IgJ2VnZ19hc24xeF9jcmVhdGVfcXVhcmsnCi1JbiBmaWxlIGluY2x1ZGVkIGZyb20gZWdnLWFzbjF4LmM6NTA6MDoKLWVnZy1hc24xeC5oOjQxOjg6IG5vdGU6IHByZXZpb3VzIGRlY2xhcmF0aW9uIG9mICdlZ2dfYXNuMXhfY3JlYXRlX3F1YXJrJyB3YXMgaGVyZQotZWdnLWFzbjF4LmM6MzU3OToxOiBlcnJvcjogY29uZmxpY3RpbmcgdHlwZXMgZm9yICdlZ2dfYXNuMXhfY3JlYXRlX2FuZF9kZWNvZGUnCi1JbiBmaWxlIGluY2x1ZGVkIGZyb20gZWdnLWFzbjF4LmM6NTA6MDoKLWVnZy1hc24xeC5oOjQ0Ojg6IG5vdGU6IHByZXZpb3VzIGRlY2xhcmF0aW9uIG9mICdlZ2dfYXNuMXhfY3JlYXRlX2FuZF9kZWNvZGUnIHdhcyBoZXJlCi1tYWtlWzRdOiAqKiogW2xpYmVnZ19sYS1lZ2ctYXNuMXgubG9dIEVycm9yIDEKLQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnbm9tZS1rZXlyaW5nLTIuMzIuMS9lZ2cvZWdnLWFzbjF4LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbm9tZS1rZXlyaW5nLTIuMzIuMS5vcmlnL2VnZy9lZ2ctYXNuMXguaAkyMDEwLTEwLTE4IDE5OjExOjM4LjAwMDAwMDAwMCAtMDcwMAotKysrIGdub21lLWtleXJpbmctMi4zMi4xL2VnZy9lZ2ctYXNuMXguaAkyMDEzLTA2LTExIDE1OjE1OjAwLjY3NTM5OTI2MyAtMDcwMAotQEAgLTI1LDYgKzI1LDcgQEAKLSAjZGVmaW5lIEVHR19BU04xWF9IXwotIAotICNpbmNsdWRlIDxnbGliLmg+Ci0rI2luY2x1ZGUgPGxpYnRhc24xLmg+Ci0gCi0gI2lmbmRlZiBIQVZFX0VHR19BTExPQ0FUT1IKLSB0eXBlZGVmIHZvaWQqICgqRWdnQWxsb2NhdG9yKSAodm9pZCogcCwgZ3NpemUpOwotQEAgLTM1LDEzICszNiwxMyBAQAotIAotIHN0cnVjdCBzdGF0aWNfc3RydWN0X2FzbjsKLSAKLS1HTm9kZSogICAgICAgICAgICAgIGVnZ19hc24xeF9jcmVhdGUgICAgICAgICAgICAgICAgIChjb25zdCBzdHJ1Y3Qgc3RhdGljX3N0cnVjdF9hc24gKmRlZnMsCi0rR05vZGUqICAgICAgICAgICAgICBlZ2dfYXNuMXhfY3JlYXRlICAgICAgICAgICAgICAgICAoY29uc3QgQVNOMV9BUlJBWV9UWVBFICpkZWZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICp0eXBlKTsKLSAKLS1HTm9kZSogICAgICAgICAgICAgIGVnZ19hc24xeF9jcmVhdGVfcXVhcmsgICAgICAgICAgIChjb25zdCBzdHJ1Y3Qgc3RhdGljX3N0cnVjdF9hc24gKmRlZnMsCi0rR05vZGUqICAgICAgICAgICAgICBlZ2dfYXNuMXhfY3JlYXRlX3F1YXJrICAgICAgICAgICAoY29uc3QgQVNOMV9BUlJBWV9UWVBFICpkZWZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdRdWFyayB0eXBlKTsKLSAKLS1HTm9kZSogICAgICAgICAgICAgIGVnZ19hc24xeF9jcmVhdGVfYW5kX2RlY29kZSAgICAgIChjb25zdCBzdHJ1Y3Qgc3RhdGljX3N0cnVjdF9hc24gKmRlZnMsCi0rR05vZGUqICAgICAgICAgICAgICBlZ2dfYXNuMXhfY3JlYXRlX2FuZF9kZWNvZGUgICAgICAoY29uc3QgQVNOMV9BUlJBWV9UWVBFICpkZWZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjb25zdHBvaW50ZXIgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSBuX2RhdGEpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9nbm9tZS1rZXlyaW5nXzIuMzIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWtleXJpbmcvZ25vbWUta2V5cmluZ18yLjMyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkNmNhNzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9nbm9tZS1rZXlyaW5nXzIuMzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLVNVTU1BUlkgPSAiUGFzc3dvcmQgYW5kIGtleXJpbmcgbWFuYWdpbmcgZGFlbW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbm9tZS5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2djci9nY3IuaDtlbmRsaW5lPTIyO21kNT1hMjcyZGYxZTYzM2UyN2VjZjM1ZTc0ZmI1NTc2MjUwZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZ2cvZWdnLWRidXMuaDtlbmRsaW5lPTI1O21kNT1lYjZmNTMxYWYzNzE2NWRjNTM0MjBjMDczZDc3NGU2MSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ncDExL2dwMTEuaDtlbmRsaW5lPTI0O21kNT1iZDhjN2E4YTIxZDZjMjhkNDA1MzZkOTZhMzVlMzQ2OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wa2NzMTEvcGtjczExaS5oO2VuZGxpbmU9MjQ7bWQ1PWU3MmNmYmI3MTgzODliNzZhNGRhZTgzOGQxYzFmNDM5IgotCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLQotUFIgPSAicjEyIgotCi1pbmhlcml0IGF1dG90b29scyBnbm9tZSBndGstZG9jIHBrZ2NvbmZpZyBnc2V0dGluZ3MKLQotU1JDX1VSSSArPSAiZmlsZTovL2VnZy1hc24xeC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbXVzbC5wYXRjaCBcCi0iCi0KLURFUEVORFMgPSAiZ3RrKyBsaWJnY3J5cHQgbGlidGFzbjEgbGlidGFzbjEtbmF0aXZlIGdjb25mICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0gaW50bHRvb2wtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAibGliZ25vbWUta2V5cmluZyBnbGliLTIuMC11dGlscyIKLQotTERGTEFHUyArPSAiLWxnbW9kdWxlLTIuMCIKLQotRVhUUkFfT0VDT05GID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0tZW5hYmxlLXBhbSAtLXdpdGgtcGFtLWRpcj0ke2Jhc2VfbGliZGlyfS9zZWN1cml0eScsICctLWRpc2FibGUtcGFtJywgZCl9IgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI5YThhYTc0ZTAzMzYxNjc2ZjI5ZDZlNzMxNTU3ODZmYyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjMxZmVjZWMxNDMwYTk3ZjU5YTYxNTlhNWEyZWE4ZDZhMWI0NDI4N2YxZTllNTk1YjM1OTRkZjQ2YmY3ZjE4ZjkiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyAke2RhdGFkaXJ9L2djciBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKiR7U09MSUJTREVWfSBcCi0gICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS9kZXZlbC8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7QlBOfS9kZXZlbC8qJHtTT0xJQlNERVZ9IFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7QlBOfS9zdGFuZGFsb25lLyoubGEgXAotICAgICAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAiCi0KLUlOU0FORV9TS0lQXyR7UE59LWRldiArPSAiZGV2LWVsZiIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtCUE59L3N0YW5kYWxvbmUvLmRlYnVnLyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke0JQTn0vZGV2ZWwvLmRlYnVnLyBcCi0gICAgICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Ly5kZWJ1Zy8iCi0KLSMgTWFrZSBjb21wYXRpYmxlIHdpdGggZ2NyIHZlcnNpb24gMyBvciBuZXdlciBieSByZW1vdmluZwotIyBvcmcuZ25vbWUuY3J5cHRvLnBncC4qLCB3aGljaCBpcyB0aGUgcHJvdmlkZXIgZm9yIHRoaXMgb3B0aW9uYWwKLSMgZnVuY3Rpb25hbGl0eS4KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm0gJHtEfSR7ZGF0YWRpcn0vR0NvbmYvZ3NldHRpbmdzL29yZy5nbm9tZS5jcnlwdG8ucGdwLmNvbnZlcnQKLQlybSAke0R9JHtkYXRhZGlyfS9nbGliLTIuMC9zY2hlbWFzL29yZy5nbm9tZS5jcnlwdG8ucGdwLmdzY2hlbWEueG1sCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1rZXlyaW5nL2dub21lLWtleXJpbmdfMy4yMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9nbm9tZS1rZXlyaW5nXzMuMjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTY0MDYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9nbm9tZS1rZXlyaW5nXzMuMjAuMC5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIlBhc3N3b3JkIGFuZCBrZXlyaW5nIG1hbmFnaW5nIGRhZW1vbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorU0VDVElPTiA9ICJ4MTEvZ25vbWUiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiIFwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorIgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgcmVtb3ZlLWxpYnRvb2wKKworREVQRU5EUyA9ICIgXAorICAgIGludGx0b29sLW5hdGl2ZSBcCisgICAgZ2xpYi0yLjAtbmF0aXZlIFwKKyAgICBndGsrMyBcCisgICAgZ2NyIFwKKyAgICBsaWJnY3J5cHQgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0gXAorIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJlMDllZmU4MDIxOTQ0ZGFlNDA0NzM2YjVhMmFkYjk4ZSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImJjMTdjZWNkNzQ4YTBlNDZlMzAyMTcxZDExYzNhZTNkNzZiYmE1MjU4YzQ0MWZhYmVjMzc4NmY0MThlN2VjOTkiCitTUkNfVVJJICs9ICJmaWxlOi8vbXVzbC5wYXRjaCIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworUkRFUEVORFNfJHtQTn0gPSAibGliZ25vbWUta2V5cmluZyBnbGliLTIuMC11dGlscyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLWRvYyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtIC0td2l0aC1wYW0tZGlyPSR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5JywgJy0tZGlzYWJsZS1wYW0nLCBkKX0gXAorIgorCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKKyAgICAke2RhdGFkaXJ9L3AxMS1raXQgXAorICAgICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyoke1NPTElCU0RFVn0gXAorICAgICR7bGliZGlyfS9wa2NzMTEvZ25vbWUta2V5cmluZy1wa2NzMTEuc28gXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9saWJnbm9tZS1rZXlyaW5nXzIuMzIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWtleXJpbmcvbGliZ25vbWUta2V5cmluZ18yLjMyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyNDE4ODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9saWJnbm9tZS1rZXlyaW5nXzIuMzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiQ29tcGF0aWJpbGl0eSBsaWJyYXJ5IGZvciBhY2Nlc3Npbmcgc2VjcmV0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wOTE0YjlkM2ViYWJhNDFlZjJlM2UwYWUxNmYyOTZjZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJyYXJ5L2dub21lLWtleXJpbmcuaDtlbmRsaW5lPTI1O21kNT02OGVhNjRmODFjMTYwZDY3MGMzN2RhNWYxMzdiZTRmYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJyYXJ5L2dub21lLWtleXJpbmcuYztlbmRsaW5lPTI2O21kNT04ZDdhNGZiNjc0YWFhMDEyZWE1YTk4ZTdjMzY4YjRhNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZ2cvZWdnLWRoLmg7ZW5kbGluZT0yMjttZDU9MTYyNmMxNmFmMmE4ZGExZjg4MzI0Y2YzY2VkMzNmMDgiCi0KLVNFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCi1QUiA9ICJyMyIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYwotCi1ERVBFTkRTID0gImRidXMgbGliZ2NyeXB0IGdsaWItMi4wIGludGx0b29sLW5hdGl2ZSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYzQyYjJjYTY2MjA0ODM1ZDkwMWQzZGJmYzFmYTVhZTYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI1NjM4OGMwZDgxZGRmZGI1N2QzMGU0OTYzYzgzZWNjMWMxODQ5OGFhYjk5Mzk1NDIwZTBmZmY2OTkyOWEwZjBjIgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9saWJnbm9tZS1rZXlyaW5nXzMuMTIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWtleXJpbmcvbGliZ25vbWUta2V5cmluZ18zLjEyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJhYmUzMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWtleXJpbmcvbGliZ25vbWUta2V5cmluZ18zLjEyLjAuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJDb21wYXRpYmlsaXR5IGxpYnJhcnkgZm9yIGFjY2Vzc2luZyBzZWNyZXRzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbm9tZS5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTA5MTRiOWQzZWJhYmE0MWVmMmUzZTBhZTE2ZjI5NmNmIFwKKyAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyIKK1NFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCisKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK0RFUEVORFMgPSAiZGJ1cyBsaWJnY3J5cHQgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNjY5NmU0ZjJlOWFlZDQ2MjVjZGMzYWYzMGJkOGMyMzgiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjNGMxNzhmYmIwNWY3MmFjYzQ4NGQyMmRkYjA1NjhmNzUzMmM0MDliMGExM2UwNjUxM2ZmNTRiOTFlOTQ3NzgzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtbWVudXMvZ25vbWUtbWVudXMzXzMuMTAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLW1lbnVzL2dub21lLW1lbnVzM18zLjEwLjEuYmIKaW5kZXggMDFkYTM0Ny4uNjQ3YWU5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtbWVudXMvZ25vbWUtbWVudXMzXzMuMTAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1tZW51cy9nbm9tZS1tZW51czNfMy4xMC4xLmJiCkBAIC02LDcgKzYsOSBAQAogCiBERVBFTkRTID0gInB5dGhvbiBsaWJ4bWwyIGdjb25mIHBvcHQgZ3RrKzMgaW50bHRvb2wtbmF0aXZlIGdub21lLWNvbW1vbi1uYXRpdmUiCiAKLWluaGVyaXQgZ25vbWViYXNlIHBrZ2NvbmZpZyBweXRob24tZGlyIHB5dGhvbm5hdGl2ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdub21lYmFzZSBwa2djb25maWcgcHl0aG9uLWRpciBweXRob25uYXRpdmUgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIEJQTiA9ICJnbm9tZS1tZW51cyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtbWltZS1kYXRhL2dub21lLW1pbWUtZGF0YS9wa2djb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1taW1lLWRhdGEvZ25vbWUtbWltZS1kYXRhL3BrZ2NvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkwMzQyNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1taW1lLWRhdGEvZ25vbWUtbWltZS1kYXRhL3BrZ2NvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotSW5kZXg6IGdub21lLW1pbWUtZGF0YS0yLjE4LjAvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbm9tZS1taW1lLWRhdGEtMi4xOC4wLm9yaWcvTWFrZWZpbGUuYW0JMjAwOS0wNi0xMSAxNzoyNzo0OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnbm9tZS1taW1lLWRhdGEtMi4xOC4wL01ha2VmaWxlLmFtCTIwMDktMDYtMTEgMTc6Mjc6NTkuMDAwMDAwMDAwICswMTAwCi1AQCAtMSw2ICsxLDYgQEAKLSBTVUJESVJTID0gbWFuIHBvCi0gCi0tcGtnY29uZmlnZGlyID0gJChkYXRhZGlyKS9wa2djb25maWcKLStwa2djb25maWdkaXIgPSAkKGxpYmRpcikvcGtnY29uZmlnCi0gcGtnY29uZmlnX0RBVEEgPSBnbm9tZS1taW1lLWRhdGEtMi4wLnBjCi0gCi0gTlVMTD0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLW1pbWUtZGF0YS9nbm9tZS1taW1lLWRhdGFfMi4xOC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtbWltZS1kYXRhL2dub21lLW1pbWUtZGF0YV8yLjE4LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYWMxYmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtbWltZS1kYXRhL2dub21lLW1pbWUtZGF0YV8yLjE4LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkJhc2UgTUlNRSBhbmQgQXBwbGljYXRpb24gZGF0YWJhc2UgZm9yIEdOT01FIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbm9tZS5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jaGVjay1taW1lLnBsO2VuZGxpbmU9MjY7bWQ1PWE5NWI2M2M5MmMzM2Q0Y2ExYWY2MWEzMTU4ODhmNDUwIgotCi1pbmhlcml0IGdub21lYmFzZSBtaW1lCi1QUiA9ICJyNCIKLQotU1JDX1VSSSArPSAiZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNTQxODU4MTg4ZjgwMDkwZDEyYTMzYjVhN2MzNGQ0MmMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzNzE5NmI1YjM3MDg1YmJjZDQ1YzMzOGMzNmUyNjg5OGZlMzVkZDU5NzUyOTVmNjlmNDgwMjhiMWU4NDM2ZmQ3IgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1ERVBFTkRTICs9ICJzaGFyZWQtbWltZS1pbmZvIGludGx0b29sLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSA9ICJzaGFyZWQtbWltZS1pbmZvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZmlsZXMvMDAwMS1oZWxwLXJlbW92ZS1ZRUxQLW1hY3JvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZmlsZXMvMDAwMS1oZWxwLXJlbW92ZS1ZRUxQLW1hY3JvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3YjYwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zeXN0ZW0tbW9uaXRvci9maWxlcy8wMDAxLWhlbHAtcmVtb3ZlLVlFTFAtbWFjcm8ucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA0YTNlZThiNDZkMjViM2QzMTA0NDhiZmE0NDQ2ZTE1YTY4NmZjNjg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjMgTWFyIDIwMTggMTM6NTA6MTggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gaGVscDogcmVtb3ZlIFlFTFAgbWFjcm8KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZC1zcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIGhlbHAvTWFrZWZpbGUuYW0gfCAyIC0tCisgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9oZWxwL01ha2VmaWxlLmFtIGIvaGVscC9NYWtlZmlsZS5hbQoraW5kZXggYzVjZDBkMy4uNGI4M2FkZiAxMDA2NDQKKy0tLSBhL2hlbHAvTWFrZWZpbGUuYW0KKysrKyBiL2hlbHAvTWFrZWZpbGUuYW0KK0BAIC0xLDUgKzEsMyBAQAorLUBZRUxQX0hFTFBfUlVMRVNACistCisgSEVMUF9JRCA9IGdub21lLXN5c3RlbS1tb25pdG9yCisgCisgSEVMUF9GSUxFUyA9IFwKKy0tIAorMi4xNC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXN5c3RlbS1tb25pdG9yL2dub21lLXN5c3RlbS1tb25pdG9yXzMuMjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXN5c3RlbS1tb25pdG9yL2dub21lLXN5c3RlbS1tb25pdG9yXzMuMjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjZjZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZ25vbWUtc3lzdGVtLW1vbml0b3JfMy4yNi4wLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiR25vbWUgc3lzdGVtIG1vbml0b3IiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0RFUEVORFMgPSAiIFwKKyAgICBpbnRsdG9vbC1uYXRpdmUgXAorICAgIGdub21lLWNvbW1vbi1uYXRpdmUgXAorICAgIGdsaWItMi4wLW5hdGl2ZSBcCisgICAgZ3RrbW0zIFwKKyAgICBsaWJndG9wIFwKKyAgICBsaWJyc3ZnIFwKKyAgICBsaWJ3bmNrMyBcCisiCisKK2luaGVyaXQgZ25vbWViYXNlIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJmY2Q1OTg2N2MwN2Y4YzQ4NTNiMWUyOGQ2MGNiYzAzNyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImY4NDhhOGMyY2E1ZTE2NGNmMDlkM2EyMDVkZDQ5ZTRlNGJmNGI2MGQ0M2IwOTY5YzEwNDQzZWI1MTlkMGU2YjMiCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1oZWxwLXJlbW92ZS1ZRUxQLW1hY3JvLnBhdGNoIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJhZHdhaXRhLWljb24tdGhlbWUiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2RhdGFkaXJ9L2dub21lL2F1dG9zdGFydCBcCisiCisKK0ZJTEVTXyR7UE59LWRvYyArPSAiIFwKKyAgICAke2RhdGFkaXJ9L29tZiBcCisgICAgJHtkYXRhZGlyfS9nbm9tZS9oZWxwIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXZmcy9nbm9tZS12ZnMtMi4yNC40LzAwMDEtbXVsdGlwbGUtTWFrZWZpbGUuYW0tcmVtb3ZlLURHX0RJU0FCTEVfREVQUkVDQVRFRC10by5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXZmcy9nbm9tZS12ZnMtMi4yNC40LzAwMDEtbXVsdGlwbGUtTWFrZWZpbGUuYW0tcmVtb3ZlLURHX0RJU0FCTEVfREVQUkVDQVRFRC10by5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgzMzI5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS12ZnMvZ25vbWUtdmZzLTIuMjQuNC8wMDAxLW11bHRpcGxlLU1ha2VmaWxlLmFtLXJlbW92ZS1ER19ESVNBQkxFX0RFUFJFQ0FURUQtdG8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1Gcm9tIDUzNmU5YjU3Y2FkYTRhOWY5MmUwNzNmZGYwMWNkZjFkZWY0MzViNmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDcgTWF5IDIwMTMgMTQ6NTY6MDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbXVsdGlwbGUgTWFrZWZpbGUuYW06IHJlbW92ZSAtREdfRElTQUJMRV9ERVBSRUNBVEVEIHRvIGZpeAotIGJ1aWxkIHdpdGggZ2xpYi0yLjM2Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGRhZW1vbi9NYWtlZmlsZS5hbSAgICAgIHwgICAgMSAtCi0gbGliZ25vbWV2ZnMvTWFrZWZpbGUuYW0gfCAgICAxIC0KLSAyIGZpbGVzIGNoYW5nZWQsIDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdub21lLXZmcy0yLjI0LjQvZGFlbW9uL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ25vbWUtdmZzLTIuMjQuNC5vcmlnL2RhZW1vbi9NYWtlZmlsZS5hbQkyMDEzLTEwLTE3IDE2OjM5OjM5LjA4MTAyNDc5OCAtMDcwMAotKysrIGdub21lLXZmcy0yLjI0LjQvZGFlbW9uL01ha2VmaWxlLmFtCTIwMTMtMTAtMTcgMTY6Mzk6MzkuMjEzMDI0Nzk0IC0wNzAwCi1AQCAtOCw3ICs4LDYgQEAKLSAJLURfTEFSR0VGSUxFNjRfU09VUkNFICAgICAgICAgICAgICAgICAgIFwKLSAJLURfUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MJCVwKLSAJLURfUkVFTlRSQU5UCQkJCVwKLS0JLURHX0RJU0FCTEVfREVQUkVDQVRFRAkJCVwKLSAJLURHTk9NRV9WRlNfUFJFRklYPVwiJChwcmVmaXgpXCIJXAotIAktREdOT01FX1ZGU19EQVRBRElSPVwiJChkYXRhZGlyKVwiCVwKLSAJLURHTk9NRV9WRlNfTElCRElSPVwiJChsaWJkaXIpXCIJXAotSW5kZXg6IGdub21lLXZmcy0yLjI0LjQvbGliZ25vbWV2ZnMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbm9tZS12ZnMtMi4yNC40Lm9yaWcvbGliZ25vbWV2ZnMvTWFrZWZpbGUuYW0JMjAxMy0xMC0xNyAxNjozOTozOS4wODEwMjQ3OTggLTA3MDAKLSsrKyBnbm9tZS12ZnMtMi4yNC40L2xpYmdub21ldmZzL01ha2VmaWxlLmFtCTIwMTMtMTAtMTcgMTY6Mzk6MzkuMjEzMDI0Nzk0IC0wNzAwCi1AQCAtMTksNyArMTksNiBAQAotIAktRF9MQVJHRUZJTEU2NF9TT1VSQ0UgICAgICAgICAgICAgICAgICAgXAotIAktRF9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUwkJXAotIAktRF9SRUVOVFJBTlQJCQkJXAotLQktREdfRElTQUJMRV9ERVBSRUNBVEVECQkJXAotIAktREdOT01FX1ZGU19QUkVGSVg9XCIkKHByZWZpeClcIglcCi0gCS1ER05PTUVfVkZTX0JJTkRJUj1cIiQoYmluZGlyKVwiCVwKLSAJLURHTk9NRV9WRlNfREFUQURJUj1cIiQoZGF0YWRpcilcIglcCi1JbmRleDogZ25vbWUtdmZzLTIuMjQuNC9tb2R1bGVzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ25vbWUtdmZzLTIuMjQuNC5vcmlnL21vZHVsZXMvTWFrZWZpbGUuYW0JMjAxMy0xMC0xNyAxNjozOTozOS4wODEwMjQ3OTggLTA3MDAKLSsrKyBnbm9tZS12ZnMtMi4yNC40L21vZHVsZXMvTWFrZWZpbGUuYW0JMjAxMy0xMC0xNyAxNjozOTozOS4yMTMwMjQ3OTQgLTA3MDAKLUBAIC0xOCw3ICsxOCw2IEBACi0gCS1EX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTCQlcCi0gCS1EX1JFRU5UUkFOVAkJCQlcCi0gCS1EU1NIX1BST0dSQU09XCIkKFNTSF9QUk9HUkFNKVwiCVwKLS0JLURHX0RJU0FCTEVfREVQUkVDQVRFRAkJCVwKLSAJLURHTk9NRV9WRlNfUFJFRklYPVwiJChwcmVmaXgpXCIJXAotIAktREdOT01FX1ZGU19EQVRBRElSPVwiJChkYXRhZGlyKVwiCVwKLSAJLURHTk9NRV9WRlNfTElCRElSPVwiJChsaWJkaXIpXCIJXAotSW5kZXg6IGdub21lLXZmcy0yLjI0LjQvcHJvZ3JhbXMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbm9tZS12ZnMtMi4yNC40Lm9yaWcvcHJvZ3JhbXMvTWFrZWZpbGUuYW0JMjAxMy0xMC0xNyAxNjozOTozOS4wODEwMjQ3OTggLTA3MDAKLSsrKyBnbm9tZS12ZnMtMi4yNC40L3Byb2dyYW1zL01ha2VmaWxlLmFtCTIwMTMtMTAtMTcgMTY6Mzk6MzkuMjEzMDI0Nzk0IC0wNzAwCi1AQCAtNCw4ICs0LDcgQEAKLSAJLUkkKHRvcF9zcmNkaXIpCQkJCVwKLSAJLUkkKHRvcF9idWlsZGRpcikJCQlcCi0gCSQoVEVTVF9DRkxBR1MpCQkJCVwKLS0JJChWRlNfQ0ZMQUdTKQkJCQlcCi0tCS1ER19ESVNBQkxFX0RFUFJFQ0FURUQKLSsJJChWRlNfQ0ZMQUdTKQotIAotIGxpYnJhcmllcyA9CQkJCQkJXAotIAkkKHRvcF9idWlsZGRpcikvbGliZ25vbWV2ZnMvbGliZ25vbWV2ZnMtMi5sYQlcCi1JbmRleDogZ25vbWUtdmZzLTIuMjQuNC90ZXN0L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ25vbWUtdmZzLTIuMjQuNC5vcmlnL3Rlc3QvTWFrZWZpbGUuYW0JMjAxMC0wMi0wOSAwNDoxNjoxNC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBnbm9tZS12ZnMtMi4yNC40L3Rlc3QvTWFrZWZpbGUuYW0JMjAxMy0xMC0xNyAxNjo0Mjo0OS4xMDkwMTkxNzIgLTA3MDAKLUBAIC02LDcgKzYsNiBAQAotIAktSSQodG9wX2J1aWxkZGlyKS9saWJnbm9tZXZmcyAgICAgICAgICAgXAotIAkkKFRFU1RfQ0ZMQUdTKQkJCQlcCi0gCSQoVkZTX0NGTEFHUykJCQkJXAotLQktREdfRElTQUJMRV9ERVBSRUNBVEVECQkJXAotIAktRE1PRFVMRVNfUEFUSD1cIiQobGliZGlyKS92ZnMvbW9kdWxlc1wiCi0gCi0gaWYgT1NfV0lOMzIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXZmcy9nbm9tZS12ZnMtMi4yNC40L2RvLW5vdC11c2Utc3JjZGlyLXZhcmlhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtdmZzL2dub21lLXZmcy0yLjI0LjQvZG8tbm90LXVzZS1zcmNkaXItdmFyaWFibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwY2EyOWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtdmZzL2dub21lLXZmcy0yLjI0LjQvZG8tbm90LXVzZS1zcmNkaXItdmFyaWFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1GaXhlcyBlcnJvcnMgd2l0aCBuZXcgYXV0b3Rvb2xzCi0KLXwgYXV0b21ha2U6IGVycm9yOiB1c2luZyAnJChzcmNkaXIpJyBpbiBURVNUUyBpcyBjdXJyZW50bHkgYnJva2VuOiAnJChzcmNkaXIpL2F1dG8tdGVzdCcKLXwgYXV0b3JlY29uZjogYXV0b21ha2UgZmFpbGVkIHdpdGggZXhpdCBzdGF0dXM6IDEKLXwgRVJST1I6IGF1dG9yZWNvbmYgZXhlY3V0aW9uIGZhaWxlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBOb3QgU3VibWl0dGVkCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogZ25vbWUtdmZzLTIuMjQuNC90ZXN0L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ25vbWUtdmZzLTIuMjQuNC5vcmlnL3Rlc3QvTWFrZWZpbGUuYW0JMjAxMy0xMC0xNyAxNjo0MzozNi42NzcwMTc3NjQgLTA3MDAKLSsrKyBnbm9tZS12ZnMtMi4yNC40L3Rlc3QvTWFrZWZpbGUuYW0JMjAxMy0xMC0xNyAxNjo0ODo0Ny4zNjkwMDg1NjYgLTA3MDAKLUBAIC02NCw3ICs2NCw3IEBACi0gCXRlc3QtYXN5bmMtY2FuY2VsIFwKLSAJdGVzdC1lc2NhcGUgICAgICAgXAotIAl0ZXN0LXVyaSAgICAgICAJICBcCi0tCSQoc3JjZGlyKS9hdXRvLXRlc3QJCi0rCWF1dG8tdGVzdAotIAotIGxpYnJhcmllcyA9CQkJCQkJXAotIAkkKHRvcF9idWlsZGRpcikvbGliZ25vbWV2ZnMvbGliZ25vbWV2ZnMtMi5sYQlcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS12ZnMvZ25vbWUtdmZzLTIuMjQuNC9nY29uZnRvb2wtbG9zc2FnZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXZmcy9nbm9tZS12ZnMtMi4yNC40L2djb25mdG9vbC1sb3NzYWdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjUyMTM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXZmcy9nbm9tZS12ZnMtMi4yNC40L2djb25mdG9vbC1sb3NzYWdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi0tLS0gZ25vbWUtdmZzLTIuNi4wL2NvbmZpZ3VyZS5pbn4JMjAwNC0wMy0yMiAxMjozNjoyMy4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnbm9tZS12ZnMtMi42LjAvY29uZmlndXJlLmluCTIwMDQtMDYtMDcgMTY6MDQ6MzQuMDAwMDAwMDAwICswMTAwCi1AQCAtMTU0LDcgKzE1NCw3IEBACi0gQUNfUEFUSF9QUk9HKEdDT05GVE9PTCwgZ2NvbmZ0b29sLTIsIG5vKQotIAotIGlmIHRlc3QgeCIkR0NPTkZUT09MIiA9IHhubzsgdGhlbgotLSAgQUNfTVNHX0VSUk9SKFtnY29uZnRvb2wtMiBleGVjdXRhYmxlIG5vdCBmb3VuZCBpbiB5b3VyIHBhdGggLSBzaG91bGQgYmUgaW5zdGFsbGVkIHdpdGggR0NvbmZdKQotKyAgQUNfTVNHX1dBUk4oW2djb25mdG9vbC0yIGV4ZWN1dGFibGUgbm90IGZvdW5kIGluIHlvdXIgcGF0aCAtIHNob3VsZCBiZSBpbnN0YWxsZWQgd2l0aCBHQ29uZl0pCi0gZmkKLSAKLSBBTV9HQ09ORl9TT1VSQ0VfMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtdmZzL2dub21lLXZmcy0yLjI0LjQvZ25vbWUtdmZzLW5vLWtlcmJlcm9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtdmZzL2dub21lLXZmcy0yLjI0LjQvZ25vbWUtdmZzLW5vLWtlcmJlcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWJlYzMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXZmcy9nbm9tZS12ZnMtMi4yNC40L2dub21lLXZmcy1uby1rZXJiZXJvcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotcmVtb3ZlcyBrZXJiZXJvcyBjb21wbGV0ZWx5IHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIGluc3RhbGxlZCBrZXJiZXJvcwotLS0tIGNvbmZpZ3VyZS5pbi5vcmlnCTIwMDctMDEtMDUgMTk6NDI6MjYuNDE4NTQxNjEwICswMjAwCi0rKysgY29uZmlndXJlLmluCTIwMDctMDEtMDUgMTk6NDI6NTYuNjA0MjYxNzk3ICswMjAwCi1AQCAtNDM2LDQ3ICs0MzYsNiBAQAotIF0pCi0gQU1fQ09ORElUSU9OQUwoSEFWRV9DRERBLCB0ZXN0ICRoYXZlX2NkZGEgPSB5ZXMpCi0gQUNfU1VCU1QoQ0REQV9MSUJTKQotLQotLWRubCBHU1NBUEkKLS1kbmwgQ2hlY2sgZm9yIEtlcmJlcm9zIGluc3RhbGxhdGlvbgotLWhhdmVfZ3NzYXBpPW5vCi0tQUNfUEFUSF9QUk9HKFtLUkI1X0NPTkZJR10sIGtyYjUtY29uZmlnLCBub25lLCAkUEFUSDovdXNyL2tlcmJlcm9zL2JpbikKLS0JCQkJCSAgIAotLWlmIHRlc3QgIngkS1JCNV9DT05GSUciICE9ICJ4bm9uZSI7IHRoZW4KLS0gICBHU1NBUElfTElCUz0iYCR7S1JCNV9DT05GSUd9IC0tbGlicyBnc3NhcGlgIgotLSAgIEdTU0FQSV9DRkxBR1M9ImAke0tSQjVfQ09ORklHfSAtLWNmbGFncyBnc3NhcGlgIgotLSAgIAotLSAgIHNhdmVkX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0tICAgc2F2ZWRfTElCUz0iJExJQlMiCi0tICAgTElCUz0iJExJQlMgJEdTU0FQSV9MSUJTIgotLSAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJEdTU0FQSV9DRkxBR1MiCi0tICAgIyBNSVQgYW5kIEhlaW1kYWwgcHV0IGdzc2FwaS5oIGluIGRpZmZlcmVudCBwbGFjZXMKLS0gICBBQ19DSEVDS19IRUFERVJTKGdzc2FwaS9nc3NhcGkuaCBnc3NhcGkuaCwgWwotLSAgICAgICBBQ19DSEVDS19GVU5DUyhnc3NfaW5pdF9zZWNfY29udGV4dCwgWwotLSAgICAgICAgICAgQUNfTVNHX05PVElDRShbR1NTQVBJIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnQgZW5hYmxlZF0pCi0tICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9HU1NBUEksIDEsIFtEZWZpbmUgaWYgR1NTQVBJIHN1cHBvcnQgaXMgZW5hYmxlZF0pCi0tICAgICAgICAgICBBQ19DSEVDS19IRUFERVJTKGdzc2FwaS9nc3NhcGlfZ2VuZXJpYy5oKQotLQkJIGhhdmVfZ3NzYXBpPXllcwotLQkgCi0tICAgICAgICMgTUlUIEtlcmJlcm9zIGxhY2tzIEdTU19DX05UX0hPU1RCQVNFRF9TRVJWSUNFCi0tICAgICAgIEFDX0NIRUNLX0RFQ0woW0dTU19DX05UX0hPU1RCQVNFRF9TRVJWSUNFXSwsCi0tICAgICAgICAgIFtBQ19ERUZJTkUoW0dTU19DX05UX0hPU1RCQVNFRF9TRVJWSUNFXSwgZ3NzX250X3NlcnZpY2VfbmFtZSwgCi0tICAgICAgICAgICAgIFtEZWZpbmUgaWYgR1NTX0NfTlRfSE9TVEJBU0VEX1NFUlZJQ0UgaXMgbm90IGRlZmluZWQgb3RoZXJ3aXNlXSkKLS0JCV0sIFsKLS0JCSAgICAjaWZkZWYgSEFWRV9HU1NBUElfR1NTQVBJX0gKLS0JCSAgICAjaW5jbHVkZSA8Z3NzYXBpL2dzc2FwaS5oPgotLQkJICAgICNlbHNlCSAgIAotLQkJICAgICNpbmNsdWRlIDxnc3NhcGkuaD4KLS0JCSAgICAjZW5kaWYKLS0JCV0pCi0tCSAgXSkKLS0gICAgIGJyZWFrCi0tICAgXSkKLS0gICBMSUJTPSIkc2F2ZWRfTElCUyIgCi0tICAgQ1BQRkxBR1M9IiRzYXZlZF9DUFBGTEFHUyIgCi0tZmkgICAKLS1BQ19TVUJTVChHU1NBUElfTElCUykKLS1BQ19TVUJTVChHU1NBUElfQ0ZMQUdTKQotIAkgICAKLSBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gZG5sIGh0dHAtbWV0aG9kIChuZW9uIGNoZWNrcykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXZmcy9nbm9tZS12ZnNfMi4yNC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtdmZzL2dub21lLXZmc18yLjI0LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlYzY0NjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtdmZzL2dub21lLXZmc18yLjI0LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1TVU1NQVJZID0gImEgdXNlcnNwYWNlIHZpcnR1YWwgZmlsZXN5c3RlbSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJnbm9tZXZmcy9nbm9tZS12ZnMuaDtlbmRsaW5lPTI1O21kNT0xNzA3MWU2OTcwN2E4ZjQyODg3ZDg4NDEzZjI2MjNjYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wcm9ncmFtcy9nbm9tZXZmcy1scy5jO2VuZGxpbmU9MjM7bWQ1PTY3OGEyZThiZWRhZWY1ODE4Y2NhYmU2MzM4NDAxOTZiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RhZW1vbi92ZnMtZGFlbW9uLmM7ZW5kbGluZT0yMTttZDU9NWYyYzYxNTUzZmIxNmFiYjA3ZmM5NDk4Y2EwM2ZlMWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbW9kdWxlcy9jZGRhLWNkZGIuaDtlbmRsaW5lPTIyO21kNT0yMGVkMzI0Y2E2NDkwN2MzNjZlY2Q3ZjIyYjhlMGM1NCIKLQotREVQRU5EUyA9ICJsaWJ4bWwyIGdjb25mIGRidXMgYnppcDIgZ25vbWUtbWltZS1kYXRhIHpsaWIgaW50bHRvb2wtbmF0aXZlIGdub21lLWNvbW1vbi1uYXRpdmUiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJnbm9tZS12ZnMtcGx1Z2luLWZpbGUgc2hhcmVkLW1pbWUtaW5mbyIKLSMgU29tZSBsZWdhY3kgcGFja2FnZXMgd2lsbCByZXF1aXJlIGdub21lLW1pbWUtZGF0YSB0byBiZSBpbnN0YWxsZWQsIGJ1dCB1c2Ugb2YKLSMgaXQgaXMgZGVwcmVjYXRlZC4KLVBSID0gInIzIgotCi1pbmhlcml0IGdub21lCi0KLSMgVGhpcyBpcyB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgZ25vbWUtdmZzIERCdXMgZm9yawotUlBST1ZJREVTXyR7UE59ID0gImdub21lLXZmcy1wbHVnaW4tZGJ1cyIKLQotU1JDX1VSSSArPSAiIFwKLSAgICBmaWxlOi8vZ2NvbmZ0b29sLWxvc3NhZ2UucGF0Y2ggXAotICAgIGZpbGU6Ly9nbm9tZS12ZnMtbm8ta2VyYmVyb3MucGF0Y2g7c3RyaXBsZXZlbD0wIFwKLSAgICBmaWxlOi8vMDAwMS1tdWx0aXBsZS1NYWtlZmlsZS5hbS1yZW1vdmUtREdfRElTQUJMRV9ERVBSRUNBVEVELXRvLnBhdGNoIFwKLSAgICBmaWxlOi8vZG8tbm90LXVzZS1zcmNkaXItdmFyaWFibGUucGF0Y2ggXAotIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJhMDVmYWIwM2VlZWYxMGE0N2RkMTU2Yjc1ODk4MmYyZSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjYyZGU2NGI1YjgwNGViMDQxMDRmZjk4ZmNkNmE4YjcyNzZkNTEwYTQ5ZmJkOWMwZmViNTY4Zjg5OTY0NDRmYWEiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3plcm9jb25mJywgJ2F2YWhpJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbYXZhaGldID0gIi0tZW5hYmxlLWF2YWhpLC0tZGlzYWJsZS1hdmFoaSxhdmFoaSIKLVBBQ0tBR0VDT05GSUdbZmFtXSA9ICItLWVuYWJsZS1mYW0sLS1kaXNhYmxlLWZhbSxnYW1pbiIKLQotRVhUUkFfT0VDT05GID0gIiAtLWRpc2FibGUtaGFsIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW9wZW5zc2wgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc2FtYmEgXAotICAgICAgICAgICAgICAgICBhY19jdl9saWJfYWNsX2FjbF9nZXRfZmlsZT1ubyBcCi0gICAgICAgICAgICAgICAgIGFjX2N2X2xpYl9zZWNfYWNsPW5vIFwKLSAgICAgICAgICAgICAgICAgZ3Zmc19jdl9IQVZFX1NPTEFSSVNfQUNMUz1ubyBcCi0gICAgICAgICAgICAgICAgIGd2ZnNfY3ZfSEFWRV9QT1NJWF9BQ0xTPW5vIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS92ZnMgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nbm9tZS12ZnMtMi4wL21vZHVsZXMvLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ25vbWUtdmZzLTIuMC9pbmNsdWRlLyogJHtsaWJkaXJ9L2dub21lLXZmcy0yLjAvbW9kdWxlcy8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ25vbWUtdmZzLTIuMC9tb2R1bGVzLyouYSIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9ndGstZG9jIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeZ25vbWUtdmZzLXBsdWdpbi0uKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIHBsdWdpbmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ25vbWUtdmZzLTIuMC9tb2R1bGVzLycpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCAnXmxpYiguKilcLnNvJCcsICdnbm9tZS12ZnMtcGx1Z2luLSVzJywgJ0dOT01FIFZGUyBwbHVnaW4gZm9yICVzJykKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lY3Vwcy9saWJnbm9tZWN1cHMtMC4yLjMtY3Vwcy0xLjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9saWJnbm9tZWN1cHMvbGliZ25vbWVjdXBzLTAuMi4zLWN1cHMtMS42LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmE2MGNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lY3Vwcy9saWJnbm9tZWN1cHMtMC4yLjMtY3Vwcy0xLjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotSW1wb3J0ZWQgZnJvbSBnZW50b286Ci1odHRwOi8vc291cmNlcy5nZW50b28ub3JnL2NnaS1iaW4vdmlld3ZjLmNnaS9nZW50b28teDg2L25ldC1wcmludC9saWJnbm9tZWN1cHMvZmlsZXMvbGliZ25vbWVjdXBzLTAuMi4zLWN1cHMtMS42LnBhdGNoCi0KLUZyb20gYWU3ODNlZmRlNGZhNjk1Nzg2NTE5OTQ1MDU0NjJmMDJiODYzOTIyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRyZSBSb3N0b3Z0c2V2IDx0ZXRyb21pbm9AZ2VudG9vLm9yZz4KLURhdGU6IFR1ZSwgNyBBdWcgMjAxMiAwNjo1MzowOSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBVc2UgQ1VQUy0xLjYgSVBQIEFQSSBnZXR0ZXIvc2V0dGVyIGZ1bmN0aW9ucwotCi1DVVBTIDEuNiBtYWtlcyB2YXJpb3VzIHN0cnVjdHVyZXMgcHJpdmF0ZSBhbmQgaW50cm9kdWNlcyB0aGVzZSBpcHBHZXQKLWFuZCBpcHBTZXQgZnVuY3Rpb25zIGZvciBhbGwgb2YgdGhlIGZpZWxkcyBpbiB0aGVzZSBzdHJ1Y3R1cmVzLgotaHR0cDovL3d3dy5jdXBzLm9yZy9zdHIucGhwP0wzOTI4Ci0KLVdlIGRlZmluZSBvdXIgb3duIGFjY2Vzc29ycyB3aGVuIGJ1aWxkaW5nIGFnYWluc3QgQ1VQUyA8IDEuNi4KLQotQmFzZWQgb24gd29yayBieSBKaXJpIFBvcGVsa2EgPGpwb3BlbGthQHJlZGhhdC5jb20+IGF0Ci1odHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc5NzU5Ci0tLS0KLSBsaWJnbm9tZWN1cHMvZ25vbWUtY3Vwcy1wcmludGVyLmMgfCAgIDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQotIGxpYmdub21lY3Vwcy9nbm9tZS1jdXBzLXF1ZXVlLmMgICB8ICAgNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gbGliZ25vbWVjdXBzL2dub21lLWN1cHMtcmVxdWVzdC5jIHwgICA0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDExMCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdub21lY3Vwcy9nbm9tZS1jdXBzLXByaW50ZXIuYyBiL2xpYmdub21lY3Vwcy9nbm9tZS1jdXBzLXByaW50ZXIuYwotaW5kZXggYzkyNGFmMC4uZjVlMWVmNyAxMDA2NDQKLS0tLSBhL2xpYmdub21lY3Vwcy9nbm9tZS1jdXBzLXByaW50ZXIuYwotKysrIGIvbGliZ25vbWVjdXBzL2dub21lLWN1cHMtcHJpbnRlci5jCi1AQCAtMzcsNiArMzcsMzQgQEAKLSAKLSAjZGVmaW5lIFVQREFURV9USU1FT1VUIDUwMDAKLSAKLSsjaWYgKENVUFNfVkVSU0lPTl9NQUpPUiA+IDEpIHx8IChDVVBTX1ZFUlNJT05fTUlOT1IgPiA1KQotKyNkZWZpbmUgSEFWRV9DVVBTXzFfNiAxCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBIQVZFX0NVUFNfMV82Ci0rI2RlZmluZSBpcHBHZXRDb3VudChhdHRyKSAgICAgYXR0ci0+bnVtX3ZhbHVlcwotKyNkZWZpbmUgaXBwR2V0TmFtZShhdHRyKSAgICAgIGF0dHItPm5hbWUKLSsjZGVmaW5lIGlwcEdldEludGVnZXIoYXR0ciwgZWxlbWVudCkgYXR0ci0+dmFsdWVzW2VsZW1lbnRdLmludGVnZXIKLSsjZGVmaW5lIGlwcEdldFN0cmluZyhhdHRyLCBlbGVtZW50LCBsYW5ndWFnZSkgYXR0ci0+dmFsdWVzW2VsZW1lbnRdLnN0cmluZy50ZXh0Ci0rCi0rc3RhdGljIGlwcF9hdHRyaWJ1dGVfdCAqCi0raXBwRmlyc3RBdHRyaWJ1dGUoaXBwX3QgKmlwcCkKLSt7Ci0rICBpZiAoIWlwcCkKLSsgICAgcmV0dXJuIChOVUxMKTsKLSsgIHJldHVybiAoaXBwLT5jdXJyZW50ID0gaXBwLT5hdHRycyk7Ci0rfQotKwotK3N0YXRpYyBpcHBfYXR0cmlidXRlX3QgKgotK2lwcE5leHRBdHRyaWJ1dGUoaXBwX3QgKmlwcCkKLSt7Ci0rICBpZiAoIWlwcCB8fCAhaXBwLT5jdXJyZW50KQotKyAgICByZXR1cm4gKE5VTEwpOwotKyAgcmV0dXJuIChpcHAtPmN1cnJlbnQgPSBpcHAtPmN1cnJlbnQtPm5leHQpOwotK30KLSsjZW5kaWYKLSsKLSsKLSBzdHJ1Y3QgX0dub21lQ3Vwc1BQREZpbGUgewotIAljaGFyIG5hbWVbMV07Ci0gfTsKLUBAIC0xNzMsOSArMjAxLDkgQEAgbWFwX3JlYXNvbnMgKEdub21lQ3Vwc1ByaW50ZXIgKnByaW50ZXIsCi0gCXByaW50ZXItPmRldGFpbHMtPnN0YXRlX3JlYXNvbnMgPSBOVUxMOwotIAotIAkvKiBjZi4gUkZDMjkxMSA0LjQuMTIgKi8KLS0JZm9yIChpID0gMDsgaSA8IGF0dHItPm51bV92YWx1ZXM7IGkrKykgewotKwlmb3IgKGkgPSAwOyBpIDwgaXBwR2V0Q291bnQgKGF0dHIpOyBpKyspIHsKLSAJCWNvbnN0IGNoYXIgKnA7Ci0tCQljb25zdCBjaGFyICprZXl3b3JkID0gYXR0ci0+dmFsdWVzIFtpXS5zdHJpbmcudGV4dDsKLSsJCWNvbnN0IGNoYXIgKmtleXdvcmQgPSBpcHBHZXRTdHJpbmcgKGF0dHIsIGksIE5VTEwpOwotIAotIAkJcmVhc29uID0gZ19uZXcgKEdub21lQ3Vwc1ByaW50ZXJSZWFzb24sIDEpOwotIAotQEAgLTIyNCw4ICsyNTIsOCBAQCBnbm9tZV9jdXBzX3ByaW50ZXJfZ2V0X2luZm8gKEdub21lQ3Vwc1ByaW50ZXIgKnByaW50ZXIpCi0gCXJldHVybiBwcmludGVyLT5kZXRhaWxzLT5pbmZvOwotIH0KLSAKLS0jZGVmaW5lIE1BUF9JTlQodixhKSB7aWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAgKGF0dHItPm5hbWUsIChhKSkpIHsgaWYgKCh2KSAhPSBhdHRyLT52YWx1ZXNbMF0uaW50ZWdlcikgeyBjaGFuZ2VkID0gVFJVRTsgfSAodikgPSBhdHRyLT52YWx1ZXNbMF0uaW50ZWdlcjsgfX0KLS0jZGVmaW5lIE1BUF9TVFJJTkcodixhKSB7aWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAgKGF0dHItPm5hbWUsIChhKSkpIHsgaWYgKCF2IHx8IHN0cmNtcCAodiwgYXR0ci0+dmFsdWVzWzBdLnN0cmluZy50ZXh0KSkgeyBnX2ZyZWUgKHYpOyBjaGFuZ2VkID0gVFJVRTsgKHYpID0gZ19zdHJkdXAgKGF0dHItPnZhbHVlc1swXS5zdHJpbmcudGV4dCk7IH19fQotKyNkZWZpbmUgTUFQX0lOVCh2LGEpIHtpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCAoaXBwR2V0TmFtZSAoYXR0ciksIChhKSkpIHsgaWYgKCh2KSAhPSBpcHBHZXRJbnRlZ2VyIChhdHRyLCAwKSkgeyBjaGFuZ2VkID0gVFJVRTsgfSAodikgPSBpcHBHZXRJbnRlZ2VyIChhdHRyLCAwKTsgfX0KLSsjZGVmaW5lIE1BUF9TVFJJTkcodixhKSB7aWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAgKGlwcEdldE5hbWUgKGF0dHIpLCAoYSkpKSB7IGlmICghdiB8fCBzdHJjbXAgKHYsIGlwcEdldFN0cmluZyAoYXR0ciwgMCwgTlVMTCkpKSB7IGdfZnJlZSAodik7IGNoYW5nZWQgPSBUUlVFOyAodikgPSBnX3N0cmR1cCAoaXBwR2V0U3RyaW5nIChhdHRyLCAwLCBOVUxMKSk7IH19fQotIAotIHN0YXRpYyB2b2lkCi0gYXR0cmlidXRlc191cGRhdGVfY2IgKGd1aW50IGlkLAotQEAgLTI0MywxNCArMjcxLDE0IEBAIGF0dHJpYnV0ZXNfdXBkYXRlX2NiIChndWludCBpZCwKLSAJY2hhbmdlZCA9IEZBTFNFOwotIAotIAlpZiAoIWVycm9yICYmIHJlc3BvbnNlKSB7Ci0tCQlmb3IgKGF0dHIgPSByZXNwb25zZS0+YXR0cnM7IGF0dHIgIT0gTlVMTDsgYXR0ciA9IGF0dHItPm5leHQpIHsKLS0JCQlpZiAoIWF0dHItPm5hbWUpIHsKLSsJCWZvciAoYXR0ciA9IGlwcEZpcnN0QXR0cmlidXRlIChyZXNwb25zZSk7IGF0dHIgIT0gTlVMTDsgYXR0ciA9IGlwcE5leHRBdHRyaWJ1dGUgKHJlc3BvbnNlKSkgewotKwkJCWlmICghaXBwR2V0TmFtZSAoYXR0cikpIHsKLSAJCQkJY29udGludWU7Ci0gCQkJfSAKLS0JCQlpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCAoYXR0ci0+bmFtZSwgImF0dHJpYnV0ZXMtY2hhcnNldCIpIHx8ICFzdHJjbXAgKGF0dHItPm5hbWUsICJhdHRyaWJ1dGVzLWNoYXJzZXQiKSkgewotKwkJCWlmICghZ19hc2NpaV9zdHJjYXNlY21wIChpcHBHZXROYW1lIChhdHRyKSwgImF0dHJpYnV0ZXMtY2hhcnNldCIpIHx8ICFzdHJjbXAgKGlwcEdldE5hbWUgKGF0dHIpLCAiYXR0cmlidXRlcy1jaGFyc2V0IikpIHsKLSAJCQkJY29udGludWU7Ci0gCQkJfQotLQkJCWlmICghZ19hc2NpaV9zdHJjYXNlY21wIChhdHRyLT5uYW1lLCAicHJpbnRlci1zdGF0ZS1yZWFzb25zIikpIHsKLSsJCQlpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCAoaXBwR2V0TmFtZSAoYXR0ciksICJwcmludGVyLXN0YXRlLXJlYXNvbnMiKSkgewotIAkJCQltYXBfcmVhc29ucyAocHJpbnRlciwgYXR0cik7Ci0gCQkJfQotIAkJCU1BUF9JTlQgKHByaW50ZXItPmRldGFpbHMtPnN0YXRlLCAicHJpbnRlci1zdGF0ZSIpOwotQEAgLTU3MCw3ICs1OTgsNyBAQCBnZXRfZGVmYXVsdCAodm9pZCkKLSAJCi0gCWF0dHIgPSBpcHBGaW5kQXR0cmlidXRlIChyZXNwb25zZSwgInByaW50ZXItbmFtZSIsIElQUF9UQUdfTkFNRSk7Ci0gCWlmIChhdHRyKSB7Ci0tCQluYW1lID0gZ19zdHJkdXAgKGF0dHItPnZhbHVlc1swXS5zdHJpbmcudGV4dCk7Ci0rCQluYW1lID0gZ19zdHJkdXAgKGlwcEdldFN0cmluZyAoYXR0ciwgMCwgTlVMTCkpOwotIAl9IGVsc2UgewotIAkJbmFtZSA9IE5VTEw7Ci0gCX0KLUBAIC02OTgsNyArNzI2LDcgQEAgZ2V0X3ByaW50ZXJfbmFtZXMgKHZvaWQpCi0gCWF0dHIgPSBpcHBGaW5kQXR0cmlidXRlIChyZXNwb25zZSwgInByaW50ZXItbmFtZSIsIElQUF9UQUdfTkFNRSk7Ci0gCXdoaWxlIChhdHRyKSB7Ci0gCQlyZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCAKLS0JCQkJICAgICAgZ19zdHJkdXAgKGF0dHItPnZhbHVlc1swXS5zdHJpbmcudGV4dCkpOwotKwkJCQkgICAgICBnX3N0cmR1cCAoaXBwR2V0U3RyaW5nIChhdHRyLCAwLCBOVUxMKSkpOwotIAkJCi0gCQlhdHRyID0gaXBwRmluZE5leHRBdHRyaWJ1dGUgKHJlc3BvbnNlLCAKLSAJCQkJCSAgICAgInByaW50ZXItbmFtZSIsIAotZGlmZiAtLWdpdCBhL2xpYmdub21lY3Vwcy9nbm9tZS1jdXBzLXF1ZXVlLmMgYi9saWJnbm9tZWN1cHMvZ25vbWUtY3Vwcy1xdWV1ZS5jCi1pbmRleCA5Zjk4ZWQ5Li4yOThkYjQyIDEwMDY0NAotLS0tIGEvbGliZ25vbWVjdXBzL2dub21lLWN1cHMtcXVldWUuYwotKysrIGIvbGliZ25vbWVjdXBzL2dub21lLWN1cHMtcXVldWUuYwotQEAgLTE1LDYgKzE1LDMzIEBACi0gCi0gI2RlZmluZSBVUERBVEVfVElNRU9VVCAzMDAwCi0gCi0rI2lmIChDVVBTX1ZFUlNJT05fTUFKT1IgPiAxKSB8fCAoQ1VQU19WRVJTSU9OX01JTk9SID4gNSkKLSsjZGVmaW5lIEhBVkVfQ1VQU18xXzYgMQotKyNlbmRpZgotKwotKyNpZm5kZWYgSEFWRV9DVVBTXzFfNgotKyNkZWZpbmUgaXBwR2V0TmFtZShhdHRyKSAgICAgIGF0dHItPm5hbWUKLSsjZGVmaW5lIGlwcEdldEludGVnZXIoYXR0ciwgZWxlbWVudCkgYXR0ci0+dmFsdWVzW2VsZW1lbnRdLmludGVnZXIKLSsjZGVmaW5lIGlwcEdldFN0cmluZyhhdHRyLCBlbGVtZW50LCBsYW5ndWFnZSkgYXR0ci0+dmFsdWVzW2VsZW1lbnRdLnN0cmluZy50ZXh0Ci0rCi0rc3RhdGljIGlwcF9hdHRyaWJ1dGVfdCAqCi0raXBwRmlyc3RBdHRyaWJ1dGUoaXBwX3QgKmlwcCkKLSt7Ci0rICBpZiAoIWlwcCkKLSsgICAgcmV0dXJuIChOVUxMKTsKLSsgIHJldHVybiAoaXBwLT5jdXJyZW50ID0gaXBwLT5hdHRycyk7Ci0rfQotKwotK3N0YXRpYyBpcHBfYXR0cmlidXRlX3QgKgotK2lwcE5leHRBdHRyaWJ1dGUoaXBwX3QgKmlwcCkKLSt7Ci0rICBpZiAoIWlwcCB8fCAhaXBwLT5jdXJyZW50KQotKyAgICByZXR1cm4gKE5VTEwpOwotKyAgcmV0dXJuIChpcHAtPmN1cnJlbnQgPSBpcHAtPmN1cnJlbnQtPm5leHQpOwotK30KLSsjZW5kaWYKLSsKLSsKLSBzdHJ1Y3QgX0dub21lQ3Vwc1F1ZXVlRGV0YWlscyB7Ci0gCWNoYXIgKnF1ZXVlX25hbWU7Ci0gCUdMaXN0ICpqb2JzOwotQEAgLTE5OSw4ICsyMjYsOCBAQCBmaW5pc2hfam9iIChHbm9tZUN1cHNKb2IgKmpvYikKLSAJam9iLT5zaXplID0gam9iLT5zaXplICogMTAyNDsKLSB9Ci0gCi0tI2RlZmluZSBNQVBfU1RSKGRlc3QsIHNyYykgeyBpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCAoYXR0ci0+bmFtZSwgKHNyYykpKSB7IGlmICgoZGVzdCkgIT0gTlVMTCkgZ19mcmVlIChkZXN0KTsgKGRlc3QpID0gZ19zdHJkdXAgKGF0dHItPnZhbHVlc1swXS5zdHJpbmcudGV4dCk7fX0KLS0jZGVmaW5lIE1BUF9JTlQoZGVzdCwgc3JjKSB7IGlmICghZ19hc2NpaV9zdHJjYXNlY21wIChhdHRyLT5uYW1lLCAoc3JjKSkpIHsgKGRlc3QpID0gYXR0ci0+dmFsdWVzWzBdLmludGVnZXI7IH0gfQotKyNkZWZpbmUgTUFQX1NUUihkZXN0LCBzcmMpIHsgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAgKGlwcEdldE5hbWUgKGF0dHIpLCAoc3JjKSkpIHsgaWYgKChkZXN0KSAhPSBOVUxMKSBnX2ZyZWUgKGRlc3QpOyAoZGVzdCkgPSBnX3N0cmR1cCAoaXBwR2V0U3RyaW5nIChhdHRyLCAwLCBOVUxMKSk7fX0KLSsjZGVmaW5lIE1BUF9JTlQoZGVzdCwgc3JjKSB7IGlmICghZ19hc2NpaV9zdHJjYXNlY21wIChpcHBHZXROYW1lIChhdHRyKSwgKHNyYykpKSB7IChkZXN0KSA9IGlwcEdldEludGVnZXIgKGF0dHIsIDApOyB9IH0KLSAKLSBzdGF0aWMgdm9pZAotIGdldF9qb2JzX2NiIChndWludCBpZCwKLUBAIC0yMzEsOCArMjU4LDggQEAgZ2V0X2pvYnNfY2IgKGd1aW50IGlkLAotIAkKLSAJaWYgKHJlc3BvbnNlKSB7Ci0gCQlqb2IgPSBnX25ldzAgKEdub21lQ3Vwc0pvYiwgMSk7Ci0tCQlmb3IgKGF0dHIgPSByZXNwb25zZS0+YXR0cnM7IGF0dHIgIT0gTlVMTDsgYXR0ciA9IGF0dHItPm5leHQpIHsKLS0JCQlpZiAoYXR0ci0+bmFtZSA9PSBOVUxMKSB7Ci0rCQlmb3IgKGF0dHIgPSBpcHBGaXJzdEF0dHJpYnV0ZSAocmVzcG9uc2UpOyBhdHRyICE9IE5VTEw7IGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlIChyZXNwb25zZSkpIHsKLSsJCQlpZiAoaXBwR2V0TmFtZSAoYXR0cikgPT0gTlVMTCkgewotIAkJCQlpZiAoam9iLT5uYW1lKSB7Ci0gCQkJCQlmaW5pc2hfam9iIChqb2IpOwotIAkJCQkJam9icyA9IGdfbGlzdF9wcmVwZW5kIChqb2JzLCBqb2IpOwkKLUBAIC0yNDQsNyArMjcxLDcgQEAgZ2V0X2pvYnNfY2IgKGd1aW50IGlkLAotIAkJCQljb250aW51ZTsKLSAJCQl9Ci0gCQkJCi0tCQkJaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAgKGF0dHItPm5hbWUsICJhdHRyaWJ1dGVzLWNoYXJzZXQiKSB8fCAhZ19hc2NpaV9zdHJjYXNlY21wIChhdHRyLT5uYW1lLCAiYXR0cmlidXRlcy1jaGFyc2V0IikpIHsKLSsJCQlpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCAoaXBwR2V0TmFtZSAoYXR0ciksICJhdHRyaWJ1dGVzLWNoYXJzZXQiKSB8fCAhZ19hc2NpaV9zdHJjYXNlY21wIChpcHBHZXROYW1lIChhdHRyKSwgImF0dHJpYnV0ZXMtY2hhcnNldCIpKSB7Ci0gCQkJCWNvbnRpbnVlOwotIAkJCQkKLSAJCQl9Ci1AQCAtMzU1LDggKzM4Miw4IEBAIGdub21lX2N1cHNfcXVldWVfZ2V0X2pvYl9ub2NhY2hlIChHbm9tZUN1cHNRdWV1ZSAqcXVldWUsCi0gCi0gCWlmIChyZXNwb25zZSkgewotIAkJam9iID0gZ19uZXcwIChHbm9tZUN1cHNKb2IsIDEpOwotLQkJZm9yIChhdHRyID0gcmVzcG9uc2UtPmF0dHJzOyBhdHRyICE9IE5VTEw7IGF0dHIgPSBhdHRyLT5uZXh0KSB7Ci0tCQkJaWYgKGF0dHItPm5hbWUgPT0gTlVMTCkgewotKwkJZm9yIChhdHRyID0gaXBwRmlyc3RBdHRyaWJ1dGUgKHJlc3BvbnNlKTsgYXR0ciAhPSBOVUxMOyBhdHRyID0gaXBwTmV4dEF0dHJpYnV0ZSAocmVzcG9uc2UpKSB7Ci0rCQkJaWYgKGlwcEdldE5hbWUgKGF0dHIpID09IE5VTEwpIHsKLSAJCQkJaWYgKGpvYi0+bmFtZSkgewotIAkJCQkJZmluaXNoX2pvYiAoam9iKTsKLSAJCQkJfSBlbHNlIHsKLUBAIC0zNjYsNyArMzkzLDcgQEAgZ25vbWVfY3Vwc19xdWV1ZV9nZXRfam9iX25vY2FjaGUgKEdub21lQ3Vwc1F1ZXVlICpxdWV1ZSwKLSAJCQkJYnJlYWs7Ci0gCQkJfQotIAkJCQotLQkJCWlmICghZ19hc2NpaV9zdHJjYXNlY21wIChhdHRyLT5uYW1lLCAiYXR0cmlidXRlcy1jaGFyc2V0IikgfHwgIWdfYXNjaWlfc3RyY2FzZWNtcCAoYXR0ci0+bmFtZSwgImF0dHJpYnV0ZXMtY2hhcnNldCIpKSB7Ci0rCQkJaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAgKGlwcEdldE5hbWUgKGF0dHIpLCAiYXR0cmlidXRlcy1jaGFyc2V0IikgfHwgIWdfYXNjaWlfc3RyY2FzZWNtcCAoaXBwR2V0TmFtZSAoYXR0ciksICJhdHRyaWJ1dGVzLWNoYXJzZXQiKSkgewotIAkJCQljb250aW51ZTsKLSAJCQl9Ci0gCQkJCi1kaWZmIC0tZ2l0IGEvbGliZ25vbWVjdXBzL2dub21lLWN1cHMtcmVxdWVzdC5jIGIvbGliZ25vbWVjdXBzL2dub21lLWN1cHMtcmVxdWVzdC5jCi1pbmRleCBjOTRmNjIzLi4xM2YwOTQ4IDEwMDY0NAotLS0tIGEvbGliZ25vbWVjdXBzL2dub21lLWN1cHMtcmVxdWVzdC5jCi0rKysgYi9saWJnbm9tZWN1cHMvZ25vbWUtY3Vwcy1yZXF1ZXN0LmMKLUBAIC0xOSw2ICsxOSwzNiBAQAotICNkZWZpbmUgU1RPUF9VTlVTRURfVEhSRUFEU19USU1FT1VUIDYwCi0gI2RlZmluZSBDTE9TRV9VTlVTRURfQ09OTkVDVElPTlNfVElNRU9VVCAzMAotIAotKyNpZiAoQ1VQU19WRVJTSU9OX01BSk9SID4gMSkgfHwgKENVUFNfVkVSU0lPTl9NSU5PUiA+IDUpCi0rI2RlZmluZSBIQVZFX0NVUFNfMV82IDEKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEhBVkVfQ1VQU18xXzYKLSsjZGVmaW5lIGlwcEdldENvdW50KGF0dHIpICAgICBhdHRyLT5udW1fdmFsdWVzCi0rI2RlZmluZSBpcHBHZXRWYWx1ZVRhZyhhdHRyKSAgYXR0ci0+dmFsdWVfdGFnCi0rI2RlZmluZSBpcHBHZXROYW1lKGF0dHIpICAgICAgYXR0ci0+bmFtZQotKyNkZWZpbmUgaXBwR2V0Qm9vbGVhbihhdHRyLCBlbGVtZW50KSBhdHRyLT52YWx1ZXNbZWxlbWVudF0uYm9vbGVhbgotKyNkZWZpbmUgaXBwR2V0SW50ZWdlcihhdHRyLCBlbGVtZW50KSBhdHRyLT52YWx1ZXNbZWxlbWVudF0uaW50ZWdlcgotKyNkZWZpbmUgaXBwR2V0U3RyaW5nKGF0dHIsIGVsZW1lbnQsIGxhbmd1YWdlKSBhdHRyLT52YWx1ZXNbZWxlbWVudF0uc3RyaW5nLnRleHQKLSsKLStzdGF0aWMgaXBwX2F0dHJpYnV0ZV90ICoKLStpcHBGaXJzdEF0dHJpYnV0ZShpcHBfdCAqaXBwKQotK3sKLSsgIGlmICghaXBwKQotKyAgICByZXR1cm4gKE5VTEwpOwotKyAgcmV0dXJuIChpcHAtPmN1cnJlbnQgPSBpcHAtPmF0dHJzKTsKLSt9Ci0rCi0rc3RhdGljIGlwcF9hdHRyaWJ1dGVfdCAqCi0raXBwTmV4dEF0dHJpYnV0ZShpcHBfdCAqaXBwKQotK3sKLSsgIGlmICghaXBwIHx8ICFpcHAtPmN1cnJlbnQpCi0rICAgIHJldHVybiAoTlVMTCk7Ci0rICByZXR1cm4gKGlwcC0+Y3VycmVudCA9IGlwcC0+Y3VycmVudC0+bmV4dCk7Ci0rfQotKyNlbmRpZgotKwotKwotIHR5cGVkZWYgc3RydWN0Ci0gewotIAlHTXV0ZXggKm11dGV4OwotQEAgLTI3NiwxNCArMzA2LDE0IEBAIGR1bXBfcmVxdWVzdCAoaXBwX3QgY29uc3QgKnJlcSkKLSAJdW5zaWduZWQgaTsKLSAJaXBwX2F0dHJpYnV0ZV90ICphdHRyOwotIAotLQlmb3IgKGF0dHIgPSByZXEtPmF0dHJzOyBhdHRyICE9IE5VTEw7IGF0dHIgPSBhdHRyLT5uZXh0KSB7Ci0tCQlnX3ByaW50ICgiJXMiLCBhdHRyLT5uYW1lKTsKLS0JCWZvciAoaSA9IDAgOyBpIDwgYXR0ci0+bnVtX3ZhbHVlcyA7IGkrKykgewotKwlmb3IgKGF0dHIgPSBpcHBGaXJzdEF0dHJpYnV0ZSAocmVxKTsgYXR0ciAhPSBOVUxMOyBhdHRyID0gaXBwTmV4dEF0dHJpYnV0ZSAocmVxKSkgewotKwkJZ19wcmludCAoIiVzIiwgaXBwR2V0TmFtZSAoYXR0cikpOwotKwkJZm9yIChpID0gMCA7IGkgPCBpcHBHZXRDb3VudCAoYXR0cikgOyBpKyspIHsKLSAJCQlnX3ByaW50ICgiXHRbJWRdID0gIiwgaSk7Ci0tCQkJc3dpdGNoIChhdHRyLT52YWx1ZV90YWcgJiB+SVBQX1RBR19DT1BZKSB7Ci0rCQkJc3dpdGNoIChpcHBHZXRWYWx1ZVRhZyAoYXR0cikgJiB+SVBQX1RBR19DT1BZKSB7Ci0gCQkJY2FzZSBJUFBfVEFHX0lOVEVHRVI6Ci0gCQkJY2FzZSBJUFBfVEFHX0VOVU06Ci0tCQkJCWdfcHJpbnQgKCIlZFxuIiwgYXR0ci0+dmFsdWVzW2ldLmludGVnZXIpOwotKwkJCQlnX3ByaW50ICgiJWRcbiIsIGlwcEdldEludGVnZXIgKGF0dHIsIGkpKTsKLSAJCQkJYnJlYWs7Ci0gCi0gCQkJY2FzZSBJUFBfVEFHX1NUUklORzoKLUBAIC0yOTQsMTEgKzMyNCwxMSBAQCBkdW1wX3JlcXVlc3QgKGlwcF90IGNvbnN0ICpyZXEpCi0gCQkJY2FzZSBJUFBfVEFHX0NIQVJTRVQ6Ci0gCQkJY2FzZSBJUFBfVEFHX0xBTkdVQUdFOgotIAkJCWNhc2UgSVBQX1RBR19NSU1FVFlQRToKLS0JCQkJZ19wcmludCAoIiclcydcbiIsIGF0dHItPnZhbHVlc1tpXS5zdHJpbmcudGV4dCk7Ci0rCQkJCWdfcHJpbnQgKCInJXMnXG4iLCBpcHBHZXRTdHJpbmcgKGF0dHIsIGksIE5VTEwpKTsKLSAJCQkJYnJlYWs7Ci0gCi0gCQkJY2FzZSBJUFBfVEFHX0JPT0xFQU46Ci0tCQkJCWdfcHJpbnQgKCIlc1xuIiwgKGludClhdHRyLT52YWx1ZXNbaV0uYm9vbGVhbiA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotKwkJCQlnX3ByaW50ICgiJXNcbiIsIChpbnQpaXBwR2V0Qm9vbGVhbiAoYXR0ciwgaSkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAJCQkJYnJlYWs7Ci0gCi0gCQkJZGVmYXVsdDoKLS0tIAotMS43LjguNgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9saWJnbm9tZWN1cHMvbGliZ25vbWVjdXBzLTAuMi4zLWdsaWIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lY3Vwcy9saWJnbm9tZWN1cHMtMC4yLjMtZ2xpYi5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2I2MTY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lY3Vwcy9saWJnbm9tZWN1cHMtMC4yLjMtZ2xpYi5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotSW1wb3J0ZWQgZnJvbSBnZW50b286Ci0KLWh0dHA6Ly9zb3VyY2VzLmdlbnRvby5vcmcvY2dpLWJpbi92aWV3dmMuY2dpL2dlbnRvby14ODYvbmV0LXByaW50L2xpYmdub21lY3Vwcy9maWxlcy9saWJnbm9tZWN1cHMtMC4yLjMtZ2xpYi5oLnBhdGNoCi0KLUZyb20gZDg0ZWVlOTQ1MGIzYjZmNjE1NTA3NDkxNWVmYzYxYmVkY2M4ZDQ0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERvbWluaXF1ZSBMZXVlbmJlcmdlciA8ZGltc3RhckBvcGVuc3VzZS5vcmc+Ci1EYXRlOiBTdW4sIDI3IE5vdiAyMDExIDIxOjM2OjQxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeDogT25seSBnbGliLmggY2FuIGJlIGluY2x1ZGVkCi0KLS0tLQotIGxpYmdub21lY3Vwcy9nbm9tZS1jdXBzLWkxOG4uYyB8ICAgIDIgKy0KLSBsaWJnbm9tZWN1cHMvZ25vbWUtY3Vwcy1pbml0LmggfCAgICAzICstLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ25vbWVjdXBzL2dub21lLWN1cHMtaTE4bi5jIGIvbGliZ25vbWVjdXBzL2dub21lLWN1cHMtaTE4bi5jCi1pbmRleCA4OTg3YzVjLi4xMjc3NTZkIDEwMDY0NAotLS0tIGEvbGliZ25vbWVjdXBzL2dub21lLWN1cHMtaTE4bi5jCi0rKysgYi9saWJnbm9tZWN1cHMvZ25vbWUtY3Vwcy1pMThuLmMKLUBAIC0xLDUgKzEsNSBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLS0jaW5jbHVkZSA8Z2xpYi9nbWFjcm9zLmg+Ci0rI2luY2x1ZGUgPGdsaWIuaD4KLSAjaW5jbHVkZSAiZ25vbWUtY3Vwcy1pMThuLmgiCi0gCi0gI2lmZGVmIEVOQUJMRV9OTFMKLWRpZmYgLS1naXQgYS9saWJnbm9tZWN1cHMvZ25vbWUtY3Vwcy1pbml0LmggYi9saWJnbm9tZWN1cHMvZ25vbWUtY3Vwcy1pbml0LmgKLWluZGV4IDIyYjY4MmEuLmM0NjAwZmMgMTAwNjQ0Ci0tLS0gYS9saWJnbm9tZWN1cHMvZ25vbWUtY3Vwcy1pbml0LmgKLSsrKyBiL2xpYmdub21lY3Vwcy9nbm9tZS1jdXBzLWluaXQuaAotQEAgLTEsOCArMSw3IEBACi0gI2lmbmRlZiBHTk9NRV9DVVBTX0lOSVQKLSAjZGVmaW5lIEdOT01FX0NVUFNfSU5JVAotIAotLSNpbmNsdWRlIDxnbGliL2d0eXBlcy5oPgotLSNpbmNsdWRlIDxnbGliL2dtYWNyb3MuaD4KLSsjaW5jbHVkZSA8Z2xpYi5oPgotIAotIEdfQkVHSU5fREVDTFMKLSAKLS0tIAotMS43LjcKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RrLWVuZ2luZXMvZmlsZXMvZ2xpYi0yLjMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RrLWVuZ2luZXMvZmlsZXMvZ2xpYi0yLjMyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGI4NzhkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d0ay1lbmdpbmVzL2ZpbGVzL2dsaWItMi4zMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLUZyb20gOGQ0OWEzODZmNDY3Y2JmOGUwODQyZDIyMTgxMjZmNjQzZTUwZjgzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERvbWluaXF1ZSBMZXVlbmJlcmdlciA8ZGltc3RhckBvcGVuc3VzZS5vcmc+Ci1EYXRlOiBTdW4sIDI3IE5vdiAyMDExIDE0OjI0OjU3ICswMDAwCi1TdWJqZWN0OiBGaXggYnVpbGQgd2l0aCBnbGliIDIuMzE6IE9ubHkgZ2xpYi5oIGNhbiBiZSAjaW5jbHVkZSdkLiBGaXhlcyBidWcgIzY2NDkxNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLS0tLQotZGlmZiAtLWdpdCBhL2VuZ2luZXMvY2xlYXJsb29rcy9zcmMvYW5pbWF0aW9uLmMgYi9lbmdpbmVzL2NsZWFybG9va3Mvc3JjL2FuaW1hdGlvbi5jCi1pbmRleCAxZjdhNDFmLi41NmE5Mjg2IDEwMDY0NAotLS0tIGEvZW5naW5lcy9jbGVhcmxvb2tzL3NyYy9hbmltYXRpb24uYwotKysrIGIvZW5naW5lcy9jbGVhcmxvb2tzL3NyYy9hbmltYXRpb24uYwotQEAgLTI4LDcgKzI4LDcgQEAKLSAjaW5jbHVkZSAiYW5pbWF0aW9uLmgiCi0gCi0gI2lmZGVmIEhBVkVfV09SS0lOR19BTklNQVRJT04KLS0jaW5jbHVkZSA8Z2xpYi9ndGltZXIuaD4KLSsjaW5jbHVkZSA8Z2xpYi5oPgotIAotIHN0cnVjdCBfQW5pbWF0aW9uSW5mbyB7Ci0gCUdUaW1lciAqdGltZXI7Ci0tLQotY2dpdCB2MC45LjAuMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RrLWVuZ2luZXMvZmlsZXMvc3Vic3RpdHV0ZS10ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d0ay1lbmdpbmVzL2ZpbGVzL3N1YnN0aXR1dGUtdGVzdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjNTU3YmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RrLWVuZ2luZXMvZmlsZXMvc3Vic3RpdHV0ZS10ZXN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrbyBMaW5kcXZpc3QgPGNhemZpNzRAZ21haWwuY29tPgotZGlmZiAtTnVyZCBndGstZW5naW5lcy0yLjIwLjIvY29uZmlndXJlLmFjIGd0ay1lbmdpbmVzLTIuMjAuMi9jb25maWd1cmUuYWMKLS0tLSBndGstZW5naW5lcy0yLjIwLjIvY29uZmlndXJlLmFjCTIwMTAtMTAtMDEgMTU6NDI6MzcuMDAwMDAwMDAwICswMzAwCi0rKysgZ3RrLWVuZ2luZXMtMi4yMC4yL2NvbmZpZ3VyZS5hYwkyMDEzLTA4LTIwIDAyOjUwOjI3LjkzMDUxMDU2NSArMDMwMAotQEAgLTE2Niw2ICsxNjYsOSBAQAotCi0gQUNfU1VCU1QoREVWRUxPUE1FTlRfQ0ZMQUdTKQotCi0rQUNfU1VCU1QoW2V4cG9ydGVkX3N5bWJvbHNfdGVzdHNdLCBbWyQoRVhQT1JURURfU1lNQk9MU19URVNUUyldXSkKLStBQ19TVUJTVChbdG9ydHVyZV90ZXN0X3Rlc3RzXSwgW1skKFRPUlRVUkVfVEVTVF9URVNUUyldXSkKLSsKLSBBTV9DT05GSUdfSEVBREVSKFtlbmdpbmVzL3N1cHBvcnQvY29uZmlnLmhdKQotCi0gQUNfQ09ORklHX0ZJTEVTKFsKLWRpZmYgLU51cmQgZ3RrLWVuZ2luZXMtMi4yMC4yL3Rlc3QvTWFrZWZpbGUuYW0gZ3RrLWVuZ2luZXMtMi4yMC4yL3Rlc3QvTWFrZWZpbGUuYW0KLS0tLSBndGstZW5naW5lcy0yLjIwLjIvdGVzdC9NYWtlZmlsZS5hbQkyMDEwLTA5LTE5IDE4OjE4OjIxLjAwMDAwMDAwMCArMDMwMAotKysrIGd0ay1lbmdpbmVzLTIuMjAuMi90ZXN0L01ha2VmaWxlLmFtCTIwMTMtMDgtMjAgMDI6NTA6MzYuODQyNTEwODY1ICswMzAwCi1AQCAtNjYsNyArNjYsNyBAQAotICMgUHJlZml4IHdpdGggZXhwb3J0ZWRfCi0gRVhQT1JURURfU1lNQk9MU19URVNUUyA9ICQocGF0c3Vic3QgJSxleHBvcnRlZF8lLCQoQlVJTERfRU5HSU5FUykpCi0KLS1URVNUUyArPSAkKEVYUE9SVEVEX1NZTUJPTFNfVEVTVFMpCi0rVEVTVFMgKz0gQGV4cG9ydGVkX3N5bWJvbHNfdGVzdHNACi0KLQotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLUBAIC04OCw3ICs4OCw3IEBACi0gVE9SVFVSRV9URVNUX1RFU1RTID0gdG9ydHVyZV9idWlsZGluICQocGF0c3Vic3QgJSx0b3J0dXJlXyUsJChUT1JUVVJFX1RFU1RfRU5HSU5FUykpCi0KLSAjIEFkZCBUT1JUVVJFX1RFU1RfRU5HSU5FUyB0byBsaXN0IG9mIHRlc3RzCi0tVEVTVFMgKz0gJChUT1JUVVJFX1RFU1RfVEVTVFMpCi0rVEVTVFMgKz0gQHRvcnR1cmVfdGVzdF90ZXN0c0AKLQotICMgUG9zc2libGUgb3RoZXIgdGVzdHM6Ci0gIyAgLSBBbiBleHRlbnNpdmUgdGhlbWUgc3dpdGNoIHRlc3RzIHRoYXQgbG9hZHMvdW5sb2FkcyB0aGUgZW5naW5lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGstZW5naW5lcy9ndGstZW5naW5lc18yLjIwLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGstZW5naW5lcy9ndGstZW5naW5lc18yLjIwLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzYWE3NDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RrLWVuZ2luZXMvZ3RrLWVuZ2luZXNfMi4yMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJHVEsrIHRoZW1lIGVuZ2luZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdub21lLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgotCi1TRUNUSU9OID0gIngxMS9iYXNlIgotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgZ3RrKyBnZXR0ZXh0LW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCi0KLVBSID0gInIzIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tc2NoZW1hcyIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5ndGstZW5naW5lLS4qIF5ndGstdGhlbWUtLioiCi0KLVJERVBFTkRTX2d0ay10aGVtZS1yZWRtb25kID0gImd0ay1lbmdpbmUtcmVkbW9uZDk1IgotUkRFUEVORFNfZ3RrLXRoZW1lLW1ldGFsID0gImd0ay1lbmdpbmUtbWV0YWwiCi1SREVQRU5EU19ndGstdGhlbWUtbWlzdCA9ICJndGstZW5naW5lLW1pc3QiCi1SREVQRU5EU19ndGstdGhlbWUtY3J1eCA9ICJndGstZW5naW5lLWNydXgtZW5naW5lIgotUkRFUEVORFNfZ3RrLXRoZW1lLWxpZ2h0aG91c2VibHVlID0gImd0ay1lbmdpbmUtbGlnaHRob3VzZWJsdWUiCi1SREVQRU5EU19ndGstdGhlbWUtdGhpbmljZSA9ICJndGstZW5naW5lLXRoaW5pY2UiCi1SREVQRU5EU19ndGstdGhlbWUtaW5kdXN0cmlhbCA9ICJndGstZW5naW5lLWluZHVzdHJpYWwiCi1SREVQRU5EU19ndGstdGhlbWUtY2xlYXJsb29rcyA9ICJndGstZW5naW5lLWNsZWFybG9va3MiCi0KLUZJTEVTXyR7UE59ID0gIiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2d0ay0yLjAvKi9lbmdpbmVzLyoubGEiCi1GSUxFU18ke1BOfS1zY2hlbWFzID0gIiR7ZGF0YWRpcn0vZ3RrLWVuZ2luZXMvKi54bWwiCi0KLUNGTEFHU19wcmVwZW5kID0gIi1ESEFWRV9BTklNQVRJT04gIgotCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCi1pbmhlcml0IGdub21lYmFzZQotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1pbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCi0KLSMgVGhpcyBwaWNrcyBzdGFibGUgcmVsZWFzZXMgaW4gdGhlIDIueCBzZXJpZXMgKGJ1dCBub3QgMi45MCBvbndhcmRzLAotIyB3aGljaCB3ZXJlIEdOT01FIDMgYmV0YXMpLgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+MlwuKFswLThdKlswMjQ2OF0pKyhcLlxkKykrKSIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7Ci0gICAgZW5naW5lc19yb290ID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdsaWJkaXInKSwgImd0ay0yLjAvMi4xMC4wL2VuZ2luZXMiKQotICAgIHRoZW1lc19yb290ID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdkYXRhZGlyJyksICJ0aGVtZXMiKQotCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZW5naW5lc19yb290LCAnXmxpYiguKilcLnNvJCcsICdndGstZW5naW5lLSVzJywgJ0dUSyAlcyB0aGVtZSBlbmdpbmUnLCBleHRyYV9kZXBlbmRzPScnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHRoZW1lc19yb290LCAnKC4qKScsICdndGstdGhlbWUtJXMnLCAnR1RLIHRoZW1lICVzJywgYWxsb3dfZGlycz1UcnVlLCBleHRyYV9kZXBlbmRzPScnKQotICAgICMgVE9ETzogbWFyayB0aGVtZSBwYWNrYWdlcyBhcyBhcmNoIGFsbAotfQotCi1TUkNfVVJJICs9ICJmaWxlOi8vZ2xpYi0yLjMyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zdWJzdGl0dXRlLXRlc3RzLnBhdGNoIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNWRlYjI4N2JjNjA3NWRjMjE4MTIxMzA2MDRjN2RjNGYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxNWI2ODBhYmNhNmM3NzNlY2I4NTI1MzUyMWZhMTAwZGQzYjg1NDliZWZlZWNjNzU5NWIxMDIwOWQ2MmQ2NmI1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3Rrc291cmNldmlldy9ndGtzb3VyY2V2aWV3LWNsYXNzaWMtbGlnaHQvY2xhc3NpYy1saWdodC54bWwgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGtzb3VyY2V2aWV3L2d0a3NvdXJjZXZpZXctY2xhc3NpYy1saWdodC9jbGFzc2ljLWxpZ2h0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2I0YjlhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3Rrc291cmNldmlldy9ndGtzb3VyY2V2aWV3LWNsYXNzaWMtbGlnaHQvY2xhc3NpYy1saWdodC54bWwKQEAgLTAsMCArMSwxMzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisKKyBCYXNlZCBvbiBndGtzb3VyY2V2aWV3ICdjbGFzc2ljJworIAorIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEd0a1NvdXJjZVZpZXcKKworIENvcHlyaWdodCAoQykgMjAwNi0yMDA3IEd0a1NvdXJjZVZpZXcgdGVhbQorIEF1dGhvcjogWWV2Z2VuIE11bnR5YW4gPG11bnR5YW5AdGFtdS5lZHU+CisKKyBHdGtTb3VyY2VWaWV3IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIEd0a1NvdXJjZVZpZXcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKworLS0+Cis8c3R5bGUtc2NoZW1lIGlkPSJjbGFzc2ljLWxpZ2h0IiBfbmFtZT0iQ2xhc3NpYy1MaWdodCIgdmVyc2lvbj0iMS4wIj4KKyAgPGF1dGhvcj5HdGtTb3VyY2VWaWV3IHRlYW08L2F1dGhvcj4KKyAgPF9kZXNjcmlwdGlvbj5DbGFzc2ljIGNvbG9yIHNjaGVtZSBsaWdodDwvX2Rlc2NyaXB0aW9uPgorCisgIDwhLS0gVGhlIHNjaGVtZSB0cmllcyB0byBsb29rIGxpa2UgdGhlIGRlZmF1bHQgR1ZpbSBzY2hlbWUsCisgICAgICAgc2luY2UgaXQgaXMgYWxzbyB3aGF0IHRoZSBoYXJkd2lyZWQgR3RrU291cmNlVmlldyAxIGNvbG9yCisgICAgICAgc2NoZW1lIGRpZCAtLT4KKworICA8IS0tIFBhbGV0dGUgLS0+CisgIDxjb2xvciBuYW1lPSJibGFjayIgICAgICB2YWx1ZT0iIzAwMDAwMCIvPgorICA8Y29sb3IgbmFtZT0id2hpdGUiICAgICAgdmFsdWU9IiNGRkZGRkYiLz4KKyAgPGNvbG9yIG5hbWU9ImJsdWUiICAgICAgIHZhbHVlPSIjMDAwMEZGIi8+CisgIDxjb2xvciBuYW1lPSJtYWdlbnRhIiAgICB2YWx1ZT0iI0ZGMDBGRiIvPgorICA8Y29sb3IgbmFtZT0idmlvbGV0IiAgICAgdmFsdWU9IiM2QTVBQ0QiLz4KKyAgPGNvbG9yIG5hbWU9ImN5YW4iICAgICAgIHZhbHVlPSIjMDA4QThDIi8+CisgIDxjb2xvciBuYW1lPSJncmF5IiAgICAgICB2YWx1ZT0iI0JFQkVCRSIvPgorICA8Y29sb3IgbmFtZT0ibGlnaHRncmF5IiAgdmFsdWU9IiNFMEUwRTAiLz4KKyAgPGNvbG9yIG5hbWU9ImdyZWVuIiAgICAgIHZhbHVlPSIjMkU4QjU3Ii8+CisgIDxjb2xvciBuYW1lPSJib3JkZWF1eCIgICB2YWx1ZT0iI0E1MkEyQSIvPgorICA8Y29sb3IgbmFtZT0icmVkIiAgICAgICAgdmFsdWU9IiNGRjAwMDAiLz4KKyAgPGNvbG9yIG5hbWU9InllbGxvdyIgICAgIHZhbHVlPSIjRkZGRjAwIi8+CisgIDxjb2xvciBuYW1lPSJwdXJwbGUiICAgICB2YWx1ZT0iI0EwMjBGMCIvPgorCisgIDwhLS0gR2xvYmFsIFNldHRpbmdzIC0tPgorICA8c3R5bGUgbmFtZT0iY3VycmVudC1saW5lIiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPSIjZWVlZWVjIi8+CisgIDxzdHlsZSBuYW1lPSJjdXJyZW50LWxpbmUtbnVtYmVyIiAgICAgICAgIGJhY2tncm91bmQ9IiNlZWVlZWMiLz4KKyAgPHN0eWxlIG5hbWU9ImRyYXctc3BhY2VzIiAgICAgICAgICAgICAgICAgZm9yZWdyb3VuZD0iI2JhYmRiNiIvPgorICA8c3R5bGUgbmFtZT0iYmFja2dyb3VuZC1wYXR0ZXJuIiAgICAgICAgICBiYWNrZ3JvdW5kPSIjZjNmM2YzIi8+CisgIDxzdHlsZSBuYW1lPSJ0ZXh0IiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVncm91bmQ9ImJsYWNrIiBiYWNrZ3JvdW5kPSJ3aGl0ZSIvPgorICA8c3R5bGUgbmFtZT0ic2VsZWN0aW9uIiAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPSJncmF5Ii8+CisgIDxzdHlsZSBuYW1lPSJjdXJzb3IiICAgICAgICAgICAgICAgICAgICAgIGZvcmVncm91bmQ9ImJsYWNrIi8+CisgIDxzdHlsZSBuYW1lPSJsaW5lLW51bWJlcnMiICAgICAgICAgICAgICAgIGZvcmVncm91bmQ9ImJsYWNrIiBiYWNrZ3JvdW5kPSJncmF5Ii8+CisKKyAgPCEtLSBCcmFja2V0IE1hdGNoaW5nIC0tPgorICA8c3R5bGUgbmFtZT0iYnJhY2tldC1tYXRjaCIgICAgICAgICAgICAgICBmb3JlZ3JvdW5kPSJ3aGl0ZSIgYmFja2dyb3VuZD0iZ3JheSIvPgorICA8c3R5bGUgbmFtZT0iYnJhY2tldC1taXNtYXRjaCIgICAgICAgICAgICBmb3JlZ3JvdW5kPSJ3aGl0ZSIgYmFja2dyb3VuZD0icmVkIi8+CisKKyAgPCEtLSBSaWdodCBNYXJnaW4gLS0+CisgIDxzdHlsZSBuYW1lPSJyaWdodC1tYXJnaW4iICAgICAgICAgICAgICAgIGZvcmVncm91bmQ9IiMwMDAwMDAiIGJhY2tncm91bmQ9IiMwMDAwMDAiLz4KKworICA8IS0tIFNlYXJjaCBNYXRjaGluZyAtLT4KKyAgPHN0eWxlIG5hbWU9InNlYXJjaC1tYXRjaCIgICAgICAgICAgICAgICAgYmFja2dyb3VuZD0ieWVsbG93Ii8+CisKKyAgPCEtLSBDb21tZW50cyAtLT4KKyAgPHN0eWxlIG5hbWU9ImRlZjpjb21tZW50IiAgICAgICAgICAgICAgICAgZm9yZWdyb3VuZD0iYmx1ZSIvPgorICA8c3R5bGUgbmFtZT0iZGVmOnNoZWJhbmciICAgICAgICAgICAgICAgICBmb3JlZ3JvdW5kPSJibHVlIiBib2xkPSJ0cnVlIi8+CisgIDxzdHlsZSBuYW1lPSJkZWY6ZG9jLWNvbW1lbnQtZWxlbWVudCIgICAgIGl0YWxpYz0idHJ1ZSIvPgorCisgIDwhLS0gQ29uc3RhbnRzIC0tPgorICA8c3R5bGUgbmFtZT0iZGVmOmNvbnN0YW50IiAgICAgICAgICAgICAgICBmb3JlZ3JvdW5kPSJtYWdlbnRhIi8+CisgIDxzdHlsZSBuYW1lPSJkZWY6c3BlY2lhbC1jaGFyIiAgICAgICAgICAgIGZvcmVncm91bmQ9InZpb2xldCIvPgorCisgIDwhLS0gSWRlbnRpZmllcnMgLS0+CisgIDxzdHlsZSBuYW1lPSJkZWY6aWRlbnRpZmllciIgICAgICAgICAgICAgIGZvcmVncm91bmQ9ImN5YW4iLz4KKworICA8IS0tIFN0YXRlbWVudHMgLS0+CisgIDxzdHlsZSBuYW1lPSJkZWY6c3RhdGVtZW50IiAgICAgICAgICAgICAgIGZvcmVncm91bmQ9ImJvcmRlYXV4IiBib2xkPSJ0cnVlIi8+CisKKyAgPCEtLSBUeXBlcyAtLT4KKyAgPHN0eWxlIG5hbWU9ImRlZjp0eXBlIiAgICAgICAgICAgICAgICAgICAgZm9yZWdyb3VuZD0iZ3JlZW4iIGJvbGQ9InRydWUiLz4KKworICA8IS0tIE90aGVycyAtLT4KKyAgPHN0eWxlIG5hbWU9ImRlZjpwcmVwcm9jZXNzb3IiICAgICAgICAgICAgZm9yZWdyb3VuZD0icHVycGxlIi8+CisgIDxzdHlsZSBuYW1lPSJkZWY6ZXJyb3IiICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9InJlZCIgYm9sZD0idHJ1ZSIvPgorICA8c3R5bGUgbmFtZT0iZGVmOndhcm5pbmciICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPSJ5ZWxsb3ciLz4KKyAgPHN0eWxlIG5hbWU9ImRlZjpub3RlIiAgICAgICAgICAgICAgICAgICAgZm9yZWdyb3VuZD0iYmx1ZSIgYmFja2dyb3VuZD0ieWVsbG93IiBib2xkPSJ0cnVlIi8+CisgIDxzdHlsZSBuYW1lPSJkZWY6dW5kZXJsaW5lZCIgICAgICAgICAgICAgIGl0YWxpYz0idHJ1ZSIgdW5kZXJsaW5lPSJzaW5nbGUiLz4KKworICA8IS0tIEhlYWRpbmcgc3R5bGVzLCB1bmNvbW1lbnQgdG8gZW5hYmxlIC0tPgorICA8IS0tCisgIDxzdHlsZSBuYW1lPSJkZWY6aGVhZGluZzAiICAgICAgICAgICAgICAgIHNjYWxlPSI1LjAiLz4KKyAgPHN0eWxlIG5hbWU9ImRlZjpoZWFkaW5nMSIgICAgICAgICAgICAgICAgc2NhbGU9IjIuNSIvPgorICA8c3R5bGUgbmFtZT0iZGVmOmhlYWRpbmcyIiAgICAgICAgICAgICAgICBzY2FsZT0iMi4wIi8+CisgIDxzdHlsZSBuYW1lPSJkZWY6aGVhZGluZzMiICAgICAgICAgICAgICAgIHNjYWxlPSIxLjciLz4KKyAgPHN0eWxlIG5hbWU9ImRlZjpoZWFkaW5nNCIgICAgICAgICAgICAgICAgc2NhbGU9IjEuNSIvPgorICA8c3R5bGUgbmFtZT0iZGVmOmhlYWRpbmc1IiAgICAgICAgICAgICAgICBzY2FsZT0iMS4zIi8+CisgIDxzdHlsZSBuYW1lPSJkZWY6aGVhZGluZzYiICAgICAgICAgICAgICAgIHNjYWxlPSIxLjIiLz4KKyAgLS0+CisKKyAgPCEtLSBMYW5ndWFnZSBzcGVjaWZpYyBzdHlsZXMgLS0+CisgIDxzdHlsZSBuYW1lPSJkaWZmOmFkZGVkLWxpbmUiICAgICAgICAgICAgIGZvcmVncm91bmQ9IiMwMDhCOEIiLz4KKyAgPHN0eWxlIG5hbWU9ImRpZmY6cmVtb3ZlZC1saW5lIiAgICAgICAgICAgZm9yZWdyb3VuZD0iIzZBNUFDRCIvPgorICA8c3R5bGUgbmFtZT0iZGlmZjpjaGFuZ2VkLWxpbmUiICAgICAgICAgICB1c2Utc3R5bGU9ImRlZjpwcmVwcm9jZXNzb3IiLz4KKyAgPHN0eWxlIG5hbWU9ImRpZmY6c3BlY2lhbC1jYXNlIiAgICAgICAgICAgdXNlLXN0eWxlPSJkZWY6Y29uc3RhbnQiLz4KKyAgPHN0eWxlIG5hbWU9ImRpZmY6bG9jYXRpb24iICAgICAgICAgICAgICAgdXNlLXN0eWxlPSJkZWY6c3RhdGVtZW50Ii8+CisgIDxzdHlsZSBuYW1lPSJkaWZmOmRpZmYtZmlsZSIgICAgICAgICAgICAgIHVzZS1zdHlsZT0iZGVmOnR5cGUiLz4KKworICA8c3R5bGUgbmFtZT0ieG1sOnRhZ3MiICAgICAgICAgICAgICAgICAgICBmb3JlZ3JvdW5kPSJjeWFuIi8+CisgIDxzdHlsZSBuYW1lPSJ4bWw6YXR0cmlidXRlLW5hbWUiICAgICAgICAgIGZvcmVncm91bmQ9InZpb2xldCIvPgorICA8c3R5bGUgbmFtZT0ieG1sOm5hbWVzcGFjZSIgICAgICAgICAgICAgICBmb3JlZ3JvdW5kPSJncmVlbiIgYm9sZD0idHJ1ZSIvPgorCisgIDxzdHlsZSBuYW1lPSJqczpvYmplY3QiICAgICAgICAgICAgICAgICAgIGZvcmVncm91bmQ9IiMyRThCNTciIGJvbGQ9InRydWUiLz4KKyAgPHN0eWxlIG5hbWU9ImpzOmNvbnN0cnVjdG9ycyIgICAgICAgICAgICAgZm9yZWdyb3VuZD0iIzAwOEI4QiIvPgorCisgIDxzdHlsZSBuYW1lPSJsYXRleDpkaXNwbGF5LW1hdGgiICAgICAgICAgIGZvcmVncm91bmQ9IiM2QTVBQ0QiLz4KKyAgPHN0eWxlIG5hbWU9ImxhdGV4OmNvbW1hbmQiICAgICAgICAgICAgICAgZm9yZWdyb3VuZD0iIzJFOEI1NyIgYm9sZD0idHJ1ZSIvPgorICA8c3R5bGUgbmFtZT0ibGF0ZXg6aW5jbHVkZSIgICAgICAgICAgICAgICB1c2Utc3R5bGU9ImRlZjpwcmVwcm9jZXNzb3IiLz4KKworICA8c3R5bGUgbmFtZT0ic2g6dmFyaWFibGUiICAgICAgICAgICAgICAgICBmb3JlZ3JvdW5kPSIjNkE1QUNEIi8+CisKKyAgPCEtLSBsZWdhY3kgc3R5bGVzIGZvciBvbGQgbGFuZyBmaWxlcyAtLT4KKyAgPHN0eWxlIG5hbWU9Ik90aGVycyIgICAgICAgICAgICAgICAgICAgICAgZm9yZWdyb3VuZD0iIzJFOEI1NyIgYm9sZD0idHJ1ZSIvPgorICA8c3R5bGUgbmFtZT0iT3RoZXJzIDIiICAgICAgICAgICAgICAgICAgICBmb3JlZ3JvdW5kPSIjMDA4QjhCIi8+CisgIDxzdHlsZSBuYW1lPSJPdGhlcnMgMyIgICAgICAgICAgICAgICAgICAgIGZvcmVncm91bmQ9IiM2QTVBQ0QiLz4KKworPC9zdHlsZS1zY2hlbWU+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGtzb3VyY2V2aWV3L2d0a3NvdXJjZXZpZXctY2xhc3NpYy1saWdodF8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGtzb3VyY2V2aWV3L2d0a3NvdXJjZXZpZXctY2xhc3NpYy1saWdodF8xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdkYzBmOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d0a3NvdXJjZXZpZXcvZ3Rrc291cmNldmlldy1jbGFzc2ljLWxpZ2h0XzEuMC5iYgpAQCAtMCwwICsxLDIxIEBACitERVNDUklQVElPTiA9ICJHdGtzb3VyY2V2aWV3IENsYXNzaWMtTGlnaHQgdGhlbWUiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY2xhc3NpYy1saWdodC54bWw7YmVnaW5saW5lPTY7ZW5kbGluZT0yMzttZDU9MmI0Zjc1MzY0ZmFkMDBhNGQ3NTIyMTRkY2JkN2Q3YzMiCisKK2luaGVyaXQgYWxsYXJjaAorCitTUkNfVVJJID0gImZpbGU6Ly9jbGFzc2ljLWxpZ2h0LnhtbCIKKworUyA9ICIke1dPUktESVJ9IgorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZ3Rrc291cmNldmlldy0yLjAvc3R5bGVzCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY2xhc3NpYy1saWdodC54bWwgJHtEfSR7ZGF0YWRpcn0vZ3Rrc291cmNldmlldy0yLjAvc3R5bGVzLworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZ3Rrc291cmNldmlldy0zLjAvc3R5bGVzCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY2xhc3NpYy1saWdodC54bWwgJHtEfSR7ZGF0YWRpcn0vZ3Rrc291cmNldmlldy0zLjAvc3R5bGVzLworfQorCitGSUxFU18ke1BOfSA9ICIgXAorICAgICR7ZGF0YWRpcn0vZ3Rrc291cmNldmlldy0yLjAvc3R5bGVzIFwKKyAgICAke2RhdGFkaXJ9L2d0a3NvdXJjZXZpZXctMy4wL3N0eWxlcyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGtzb3VyY2V2aWV3L2d0a3NvdXJjZXZpZXczXzMuMjQuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d0a3NvdXJjZXZpZXcvZ3Rrc291cmNldmlldzNfMy4yNC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZTQ4ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGtzb3VyY2V2aWV3L2d0a3NvdXJjZXZpZXczXzMuMjQuNi5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIlBvcnRhYmxlIEMgbGlicmFyeSBmb3IgbXVsdGlsaW5lIHRleHQgZWRpdGluZyIKK0hPTUVQQUdFID0gImh0dHA6Ly9wcm9qZWN0cy5nbm9tZS5vcmcvZ3Rrc291cmNldmlldy8iCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKKworREVQRU5EUyA9ICJndGsrMyBsaWJ4bWwyIGludGx0b29sLW5hdGl2ZSBnbm9tZS1jb21tb24tbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKKworUE5BTUUgPSAiZ3Rrc291cmNldmlldyIKKworUyA9ICIke1dPUktESVJ9LyR7UE5BTUV9LSR7UFZ9IgorCitpbmhlcml0IGdub21lYmFzZSBsaWJfcGFja2FnZSBnZXR0ZXh0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0a3NvdXJjZXZpZXcvMy4yNC8ke1BOQU1FfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiYzA5Y2NmYzgwZjc4MDgzODQxZjhmZTI2NmMxYWM1MmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2FhNmJkZmViY2RjNzNhNzYzZGRkZWFhNDJmMTkwYzQwODM1ZTZmODQ5NWJiOWViOGY3ODU4N2UyNTc3YzE4OCIKKworRklMRVNfJHtQTn0gKz0gIiAke2RhdGFkaXJ9L2d0a3NvdXJjZXZpZXctMy4wIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3Zmcy9ndmZzXzEuMzIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjMyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzODA2ODguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3Zmcy9ndmZzXzEuMzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLURFU0NSSVBUSU9OID0gImd2ZnMgaXMgYSB1c2Vyc3BhY2UgdmlydHVhbCBmaWxlc3lzdGVtIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNWRmMzhkZDc3YzM1ZWM4NDMxZjIxMjQxMGEzMzI5ZSIKLQotaW5oZXJpdCBnbm9tZSBiYXNoLWNvbXBsZXRpb24gZ2V0dGV4dAotCi1ERVBFTkRTICs9ICJsaWJzZWNyZXQgZ2xpYi0yLjAgZ2NvbmYgaW50bHRvb2wtbmF0aXZlIGxpYmd1ZGV2IHVkaXNrczIgcG9sa2l0IHNoYWRvdy1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke0JQTn0tJHtQVn0udGFyLnh6O25hbWU9YXJjaGl2ZSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiY2JlNzY2YjQ2ZjMyNGUxN2Q3YWJjZmI0YTg5YTE2ODQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkMGI2YzllZGFiMDlkNTI0NzIzNTU2NTdhMmYwYTE0ODMxYjJlNmM1OGNhYmEzOTVmNzIxYWI2ODNmODM2YWRlIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZ2R1IFwKLSAgICAtLWVuYWJsZS11ZGlza3MyIFwKLSAgICAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiBcCi0gICAgLS13aXRoLWFyY2hpdmUtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgIC0td2l0aC1hcmNoaXZlLWxpYnM9JHtTVEFHSU5HX0xJQkRJUn0gXAotIgotCi1QQUNLQUdFUyA9KyAiZ3Zmc2QtZnRwIGd2ZnNkLXNmdHAgZ3Zmc2QtdHJhc2giCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAgXAotICAgICR7ZGF0YWRpcn0vR0NvbmYgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKLSAgICAke2xpYmRpcn0vZ2lvL21vZHVsZXMvKi5zbyBcCi0gICAgJHtsaWJkaXJ9L3RtcGZpbGVzLmQgXAotICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSIKLVJERVBFTkRTXyR7UE59ID0gInVkaXNrczIiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzLy5kZWJ1Zy8qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvKi5sYSIKLQotRklMRVNfZ3Zmc2QtZnRwID0gIiR7bGliZXhlY2Rpcn0vZ3Zmc2QtZnRwICR7ZGF0YWRpcn0vZ3Zmcy9tb3VudHMvZnRwLm1vdW50IgotRklMRVNfZ3Zmc2Qtc2Z0cCA9ICIke2xpYmV4ZWNkaXJ9L2d2ZnNkLXNmdHAgJHtkYXRhZGlyfS9ndmZzL21vdW50cy9zZnRwLm1vdW50IgotRklMRVNfZ3Zmc2QtdHJhc2ggPSAiJHtsaWJleGVjZGlyfS9ndmZzZC10cmFzaCAke2RhdGFkaXJ9L2d2ZnMvbW91bnRzL3RyYXNoLm1vdW50IgotCi1SUkVDT01NRU5EU19ndmZzZC1mdHAgKz0gIm9wZW5zc2gtc2Z0cCBvcGVuc3NoLXNzaCIKLQotUEFDS0FHRUNPTkZJRyA/PSAibGliZ3Bob3RvMiAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW2FmY10gPSAiLS1lbmFibGUtYWZjLCAtLWRpc2FibGUtYWZjLCBsaWJpbW9iaWxlZGV2aWNlIGxpYnBsaXN0IgotUEFDS0FHRUNPTkZJR1thcmNoaXZlXSA9ICItLWVuYWJsZS1hcmNoaXZlLCAtLWRpc2FibGUtYXJjaGl2ZSwgbGliYXJjaGl2ZSIKLVBBQ0tBR0VDT05GSUdbYXZhaGldID0gIi0tZW5hYmxlLWF2YWhpLCAtLWRpc2FibGUtYXZhaGksIGF2YWhpIgotUEFDS0FHRUNPTkZJR1tnY3JdID0gIi0tZW5hYmxlLWdjciwgLS1kaXNhYmxlLWdjciwgZ2NyIgotUEFDS0FHRUNPTkZJR1tndGtdID0gIi0tZW5hYmxlLWd0aywgLS1kaXNhYmxlLWd0aywgZ3RrKzMiCi1QQUNLQUdFQ09ORklHW2h0dHBdID0gIi0tZW5hYmxlLWh0dHAsIC0tZGlzYWJsZS1odHRwLCBsaWJzb3VwLTIuNCIKLVBBQ0tBR0VDT05GSUdbbGlibXRwXSA9ICItLWVuYWJsZS1saWJtdHAsIC0tZGlzYWJsZS1saWJtdHAsIGxpYm10cCIKLVBBQ0tBR0VDT05GSUdbbGliZ3Bob3RvMl0gPSAiLS1lbmFibGUtZ3Bob3RvMiwgLS1kaXNhYmxlLWdwaG90bzIsIGxpYmdwaG90bzIiCi1QQUNLQUdFQ09ORklHW3NhbWJhXSA9ICItLWVuYWJsZS1zYW1iYSwgLS1kaXNhYmxlLXNhbWJhLCBzYW1iYSIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSwtLXdpdGhvdXQtc3lzdGVtZHVzZXJ1bml0ZGlyLHN5c3RlbWQiCi0KLSMgbmVlZHMgbWV0YS1maWxlc3lzdGVtcwotUEFDS0FHRUNPTkZJR1tmdXNlXSA9ICItLWVuYWJsZS1mdXNlLCAtLWRpc2FibGUtZnVzZSwgZnVzZSIKLQotIyBsaWJjZGlvLXBhcmFub2lhIHJlY2lwZSBkb2Vzbid0IGV4aXN0IHlldAotUEFDS0FHRUNPTkZJR1tjZGRhXSA9ICItLWVuYWJsZS1jZGRhLCAtLWRpc2FibGUtY2RkYSwgbGliY2Rpby1wYXJhbm9pYSIKLQotIyBGaXggdXAgcGVybWlzc2lvbnMgb24gcG9sa2l0IHJ1bGVzLmQgdG8gd29yayB3aXRoIHJwbTQgY29uc3RyYWludHMKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWNobW9kIDcwMCAke0R9LyR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAotCWNob3duIHBvbGtpdGQ6cm9vdCAke0R9LyR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3Zmcy9ndmZzXzEuMzYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjM2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY3MzkxMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjM2LjAuYmIKQEAgLTAsMCArMSw2OCBAQAorREVTQ1JJUFRJT04gPSAiZ3ZmcyBpcyBhIHVzZXJzcGFjZSB2aXJ0dWFsIGZpbGVzeXN0ZW0iCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA1ZGYzOGRkNzdjMzVlYzg0MzFmMjEyNDEwYTMzMjllIgorCitpbmhlcml0IGdub21lIGJhc2gtY29tcGxldGlvbiBnZXR0ZXh0CisKK0RFUEVORFMgKz0gImxpYnNlY3JldCBnbGliLTIuMCBnY29uZiBpbnRsdG9vbC1uYXRpdmUgbGliZ3VkZXYgdWRpc2tzMiBwb2xraXQgc2hhZG93LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLmdub21lLm9yZy9zb3VyY2VzLyR7QlBOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7QlBOfS0ke1BWfS50YXIueHo7bmFtZT1hcmNoaXZlIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIyMTZkNDYxYzVlOTZlMmNlYTc0MjUzYmU0MDdhZjZkYyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjllYzM4OGFmZWIzNzNhMjEzZjJjYzQ4OTE4NGY3NmExN2FlMjczYTAwMGU4YTRlYzcyMGMxOTk1OTQzMjU2YmIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgbWFrZSBhdXRvbWFrZSBoYXBweS4uCisgICAgdG91Y2ggJHtTfS9BQk9VVC1OTFMKK30KKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLWdkdSBcCisgICAgLS1lbmFibGUtdWRpc2tzMiBcCisgICAgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gXAorIgorCitQQUNLQUdFUyA9KyAiZ3Zmc2QtZnRwIGd2ZnNkLXNmdHAgZ3Zmc2QtdHJhc2giCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAgXAorICAgICR7ZGF0YWRpcn0vR0NvbmYgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKKyAgICAke2xpYmRpcn0vZ2lvL21vZHVsZXMvKi5zbyBcCisgICAgJHtsaWJkaXJ9L3RtcGZpbGVzLmQgXAorICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyIKK1JERVBFTkRTXyR7UE59ID0gInVkaXNrczIiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzLy5kZWJ1Zy8qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvKi5sYSIKKworRklMRVNfZ3Zmc2QtZnRwID0gIiR7bGliZXhlY2Rpcn0vZ3Zmc2QtZnRwICR7ZGF0YWRpcn0vZ3Zmcy9tb3VudHMvZnRwLm1vdW50IgorRklMRVNfZ3Zmc2Qtc2Z0cCA9ICIke2xpYmV4ZWNkaXJ9L2d2ZnNkLXNmdHAgJHtkYXRhZGlyfS9ndmZzL21vdW50cy9zZnRwLm1vdW50IgorRklMRVNfZ3Zmc2QtdHJhc2ggPSAiJHtsaWJleGVjZGlyfS9ndmZzZC10cmFzaCAke2RhdGFkaXJ9L2d2ZnMvbW91bnRzL3RyYXNoLm1vdW50IgorCitSUkVDT01NRU5EU19ndmZzZC1mdHAgKz0gIm9wZW5zc2gtc2Z0cCBvcGVuc3NoLXNzaCIKKworUEFDS0FHRUNPTkZJRyA/PSAibGliZ3Bob3RvMiAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgorCitQQUNLQUdFQ09ORklHW2FmY10gPSAiLS1lbmFibGUtYWZjLCAtLWRpc2FibGUtYWZjLCBsaWJpbW9iaWxlZGV2aWNlIGxpYnBsaXN0IgorUEFDS0FHRUNPTkZJR1thcmNoaXZlXSA9ICItLWVuYWJsZS1hcmNoaXZlLCAtLWRpc2FibGUtYXJjaGl2ZSwgbGliYXJjaGl2ZSIKK1BBQ0tBR0VDT05GSUdbYXZhaGldID0gIi0tZW5hYmxlLWF2YWhpLCAtLWRpc2FibGUtYXZhaGksIGF2YWhpIgorUEFDS0FHRUNPTkZJR1tnY3JdID0gIi0tZW5hYmxlLWdjciwgLS1kaXNhYmxlLWdjciwgZ2NyIgorUEFDS0FHRUNPTkZJR1todHRwXSA9ICItLWVuYWJsZS1odHRwLCAtLWRpc2FibGUtaHR0cCwgbGlic291cC0yLjQiCitQQUNLQUdFQ09ORklHW2xpYm10cF0gPSAiLS1lbmFibGUtbGlibXRwLCAtLWRpc2FibGUtbGlibXRwLCBsaWJtdHAiCitQQUNLQUdFQ09ORklHW2xpYmdwaG90bzJdID0gIi0tZW5hYmxlLWdwaG90bzIsIC0tZGlzYWJsZS1ncGhvdG8yLCBsaWJncGhvdG8yIgorUEFDS0FHRUNPTkZJR1tzYW1iYV0gPSAiLS1lbmFibGUtc2FtYmEsIC0tZGlzYWJsZS1zYW1iYSwgc2FtYmEiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0sLS13aXRob3V0LXN5c3RlbWR1c2VydW5pdGRpcixzeXN0ZW1kIgorCisjIG5lZWRzIG1ldGEtZmlsZXN5c3RlbXMKK1BBQ0tBR0VDT05GSUdbZnVzZV0gPSAiLS1lbmFibGUtZnVzZSwgLS1kaXNhYmxlLWZ1c2UsIGZ1c2UiCisKKyMgbGliY2Rpby1wYXJhbm9pYSByZWNpcGUgZG9lc24ndCBleGlzdCB5ZXQKK1BBQ0tBR0VDT05GSUdbY2RkYV0gPSAiLS1lbmFibGUtY2RkYSwgLS1kaXNhYmxlLWNkZGEsIGxpYmNkaW8tcGFyYW5vaWEiCisKKyMgRml4IHVwIHBlcm1pc3Npb25zIG9uIHBvbGtpdCBydWxlcy5kIHRvIHdvcmsgd2l0aCBycG00IGNvbnN0cmFpbnRzCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwljaG1vZCA3MDAgJHtEfS8ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKKwljaG93biBwb2xraXRkOnJvb3QgJHtEfS8ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdkYXRhL2xpYmdkYXRhXzAuMTYuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdkYXRhL2xpYmdkYXRhXzAuMTYuMS5iYgppbmRleCBjMjE1N2RmLi44MGNiYWUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnZGF0YS9saWJnZGF0YV8wLjE2LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ2RhdGEvbGliZ2RhdGFfMC4xNi4xLmJiCkBAIC05LDEyICs5LDE4IEBACiAKIERFUEVORFMgPSAiZ25vbWUtY29tbW9uLW5hdGl2ZSBsaWJ4bWwyIGdsaWItMi4wIGxpYnNvdXAtMi40IGludGx0b29sLW5hdGl2ZSBsaWJvYXV0aCBnY3IganNvbi1nbGliIgogCi1pbmhlcml0IGdub21lYmFzZSBwa2djb25maWcgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0IGd0ay1kb2MgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdub21lYmFzZSBwa2djb25maWcgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0IGd0ay1kb2MgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKICAgICAjIGludHJvc3BlY3Rpb24ubTQgcHJlLXBhY2thZ2VkIHdpdGggdXBzdHJlYW0gdGFyYmFsbHMgZG9lcyBub3QgeWV0CiAgICAgIyBoYXZlIG91ciBmaXhlcwogICAgIHJtIC1mICR7U30vaW50cm9zcGVjdGlvbi5tNAorICAgIAorICAgICMgcmVtb3ZlIHRoZSBwcmUtYnVpbHQgZ3RrLWRvYyBmaWxlcywgYXMgdGhleSdyZSBpbnN0YWxsZWQgKG9yIGF0dGVtcHRlZCB0byBiZSBpbnN0YWxsZWQpCisgICAgIyBldmVuIGlmIGd0ay1kb2MgaXMgZXhwbGljaXRseSBkaXNhYmxlZAorICAgIHJtIC1yZiAke1N9L2RvY3MvcmVmZXJlbmNlL2h0bWwKIH0KIAogZG9fY29tcGlsZV9wcmVwZW5kKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWUvMDAwMS1saWJnbm9tZS1NYWtlZmlsZS5hbS1hbGxvdy1kZXByZWNhdGVkLXN5bWJvbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZS8wMDAxLWxpYmdub21lLU1ha2VmaWxlLmFtLWFsbG93LWRlcHJlY2F0ZWQtc3ltYm9scy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY1ODMwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZS8wMDAxLWxpYmdub21lLU1ha2VmaWxlLmFtLWFsbG93LWRlcHJlY2F0ZWQtc3ltYm9scy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gY2UxY2QyMGZjZWVhN2RiY2M1Yjk4M2Q5NGRlNzcxNDYxZWNjZjdjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjkgQXByIDIwMTMgMTQ6MTc6MTMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGliZ25vbWUvTWFrZWZpbGUuYW06IGFsbG93IGRlcHJlY2F0ZWQgc3ltYm9scwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1maXhlczoKLQotfCBnbm9tZS1wcm9ncmFtLmM6IEluIGZ1bmN0aW9uICdnbm9tZV9wcm9ncmFtX2luaXRfY29tbW9uJzoKLXwgZ25vbWUtcHJvZ3JhbS5jOjIwNjc6MjogZXJyb3I6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdnX2F0ZXhpdCcgWy1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gbGliZ25vbWUvTWFrZWZpbGUuYW0gfCAgICAxIC0KLSAxIGZpbGVzIGNoYW5nZWQsIDAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdub21lL01ha2VmaWxlLmFtIGIvbGliZ25vbWUvTWFrZWZpbGUuYW0KLWluZGV4IDljOGNkM2UuLmFhMDFmNmMgMTAwNjQ0Ci0tLS0gYS9saWJnbm9tZS9NYWtlZmlsZS5hbQotKysrIGIvbGliZ25vbWUvTWFrZWZpbGUuYW0KLUBAIC0xNyw3ICsxNyw2IEBAIElOQ0xVREVTID0gXAotIAktSSQoc3JjZGlyKS8uLgkJCQkJCVwKLSAJJChXQVJOX0NGTEFHUykJCQkJCQlcCi0gCSQoTElCR05PTUVfQ0ZMQUdTKQkJCQkJXAotLQktREdfRElTQUJMRV9ERVBSRUNBVEVECQkJCQlcCi0gCS1ETElCR05PTUVfUFJFRklYPVwiIiQocHJlZml4KSJcIgkJCVwKLSAJLURMSUJHTk9NRV9MSUJESVI9XCIiJChsaWJkaXIpIlwiCQkJXAotIAktRExJQkdOT01FX0RBVEFESVI9XCIiJChkYXRhZGlyKSJcIgkJCVwKLS0tIAotMS43LjYuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZV8yLjMyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZV8yLjMyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNTViYTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWVfMi4zMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJHbm9tZSBhcHBsaWNhdGlvbiBwcm9ncmFtbWluZyBsaWJyYXJpZXMiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSIKLVNFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCi0KLWluaGVyaXQgZ25vbWUgbGliX3BhY2thZ2UKLQotUFIgPSAicjIiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImE0MzQ1ZTYwODdhZTYxOTVkNjVhNDY3NGZmZGNhNTU5IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYjJjNjM5MTY4NjY0ODU3OTNiODczOTgyNjZkZDc3Nzg1NDhjMTczNDkyM2MyNzJhOTRkODRlZTAxMWI2ZjdhNCIKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWxpYmdub21lLU1ha2VmaWxlLmFtLWFsbG93LWRlcHJlY2F0ZWQtc3ltYm9scy5wYXRjaCIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotREVQRU5EUyArPSAibGliY2FuYmVycmEgZ2NvbmYtbmF0aXZlIGdub21lLXZmcyBsaWJib25vYm8gZXNvdW5kIGludGx0b29sLW5hdGl2ZSBnbm9tZS1jb21tb24tbmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ndGstZG9jIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgczpkb2NzOjpnICR7U30vTWFrZWZpbGUuYW0KLSAgICBlY2hvICJFWFRSQV9ESVNUID0gdmVyc2lvbi54bWwiID4gZ25vbWUtZG9jLXV0aWxzLm1ha2UKLSAgICBlY2hvICJFWFRSQV9ESVNUID0gdmVyc2lvbi54bWwiID4gZ3RrLWRvYy5tYWtlCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vYm9ub2JvL3NlcnZlcnMgJHtsaWJkaXJ9L2Jvbm9iby9tb25pa2Vycy8qLnNvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dub21lLWJhY2tncm91bmQtcHJvcGVydGllcyAke2RhdGFkaXJ9L3BpeG1hcHMiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9ib25vYm8vbW9uaWtlcnMvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2Jvbm9iby9tb25pa2Vycy8qLmEiCi0KLVBBQ0tBR0VTID0rICJnbm9tZS1jb21tb24tc2NoZW1hcyIKLQotRklMRVNfZ25vbWUtY29tbW9uLXNjaGVtYXMgPSAiJHtkYXRhZGlyfS9nbm9tZS1iYWNrZ3JvdW5kLXByb3BlcnRpZXMgJHtkYXRhZGlyfS9waXhtYXBzICR7c3lzY29uZmRpcn0iCi0KLVJERVBFTkRTXyR7UE59ID0gImdub21lLWNvbW1vbi1zY2hlbWFzIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9ib25vYm8vbW9uaWtlcnMvLmRlYnVnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWVjYW52YXNfMi4zMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWVjYW52YXNfMi4zMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWE4OWNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdub21lL2xpYmdub21lY2FudmFzXzIuMzAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiQSBwb3dlcmZ1bCBvYmplY3Qtb3JpZW50ZWQgZGlzcGxheSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTU1Y2E4MTdjY2I3ZDViNWI2NjM1NTY5MGU5YWJjNjA1IgotU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYwotCi0jIGludGx0b29sIHRvIHByb3ZpZGUgSVRfUFJPR19JTlRMVE9PTAotIyBjb25maWd1cmU6IGxpbmUgMTI2NTQ6IHN5bnRheCBlcnJvciBuZWFyIHVuZXhwZWN0ZWQgdG9rZW4gYDAuMzUuMCcKLSMgY29uZmlndXJlOiBsaW5lIDEyNjU0OiBgSVRfUFJPR19JTlRMVE9PTCgwLjM1LjApJwotREVQRU5EUyA9ICJndGsrIGxpYmdsYWRlIGxpYmFydC1sZ3BsIHhpbmVyYW1hcHJvdG8gaW50bHRvb2wtbmF0aXZlIGdub21lLWNvbW1vbi1uYXRpdmUiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImZmY2JiNzE5YzY3MWZmNWNkODZlNTlhZWJhOGQwYjkyIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiODU5Yjc4ZTA4NDg5ZmNlNGQ1YzE1YzY3NmZlYzFjZDc5NzgyZjExNWY1MTZlOGFkOGJlZDZhYmNiOGRlZGQ0MCIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJnbGFkZS8qL2xpYmNhbnZhcy5zbyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2xpYmdsYWRlLyovLmRlYnVnLyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmdsYWRlLyovbGliY2FudmFzKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2xpYmdsYWRlLyovbGliY2FudmFzKi5hIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWVrYmRfMy4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWVrYmRfMy4yMi4wLmJiCmluZGV4IDEyZWQ4MWQuLjQwMjQ5ZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdub21lL2xpYmdub21la2JkXzMuMjIuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZWtiZF8zLjIyLjAuYmIKQEAgLTYsNyArNiw5IEBACiAKIERFUEVORFMgPSAiZ2NvbmYgZ2xpYi0yLjAgbGlieGtsYXZpZXIgZ3RrKzMgaW50bHRvb2wtbmF0aXZlIgogCi1pbmhlcml0IGdub21lIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0Citpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBnbm9tZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dAorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBHTk9NRV9DT01QUkVTU19UWVBFID0gInh6IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZXVpLzAwMDEtc3VwcHJlc3Mtc3RyaW5nLWZvcm1hdC1saXRlcmFsLXdhcm5pbmctdG8tZml4LWJ1aWxkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdub21lL2xpYmdub21ldWkvMDAwMS1zdXBwcmVzcy1zdHJpbmctZm9ybWF0LWxpdGVyYWwtd2FybmluZy10by1maXgtYnVpbGQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmM5YmRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdub21lL2xpYmdub21ldWkvMDAwMS1zdXBwcmVzcy1zdHJpbmctZm9ybWF0LWxpdGVyYWwtd2FybmluZy10by1maXgtYnVpbGQtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotRnJvbSA2Njk3ZmNmOWQ3ZjUzMTI2YjQ0MmJmMTk4OTA2NDBiNWY4OGM4YWE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogRnJpLCAyOSBKdWwgMjAxNiAyMToyNDoyMCArMDIwMAotU3ViamVjdDogW1BBVENIXSBzdXBwcmVzcyBzdHJpbmcgZm9ybWF0IGxpdGVyYWwgd2FybmluZyB0byBmaXggYnVpbGQgd2l0aCBnY2M2Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLXdvcmtzIGFyb3VuZDoKLXwgLi4vLi4vbGliZ25vbWV1aS0yLjI0LjUvbGliZ25vbWV1aS9nbm9tZS1kYXRlZWRpdC5jOiBJbiBmdW5jdGlvbiAnZGF5X3NlbGVjdGVkJzoKLXwgLi4vLi4vbGliZ25vbWV1aS0yLjI0LjUvbGliZ25vbWV1aS9nbm9tZS1kYXRlZWRpdC5jOjE1Njo5OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsLCBmb3JtYXQgc3RyaW5nIG5vdCBjaGVja2VkIFstV2Vycm9yPWZvcm1hdC1ub25saXRlcmFsXQotfCAgICAgICAgICBzdHJmdGltZV9kYXRlX2Zvcm1hdCwgJm10bSkgPT0gMCkKLXwgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn4KLXwgLi4vLi4vbGliZ25vbWV1aS0yLjI0LjUvbGliZ25vbWV1aS9nbm9tZS1kYXRlZWRpdC5jOiBJbiBmdW5jdGlvbiAnZ25vbWVfZGF0ZV9lZGl0X3NldF90aW1lJzoKLXwgLi4vLi4vbGliZ25vbWV1aS0yLjI0LjUvbGliZ25vbWV1aS9nbm9tZS1kYXRlZWRpdC5jOjcwNDoyOiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsLCBmb3JtYXQgc3RyaW5nIG5vdCBjaGVja2VkIFstV2Vycm9yPWZvcm1hdC1ub25saXRlcmFsXQotfCAgIGlmIChzdHJmdGltZSAoYnVmZmVyLCBzaXplb2YgKGJ1ZmZlciksIHN0cmZ0aW1lX2RhdGVfZm9ybWF0LCBteXRtKSA9PSAwKQotfCAgIF5+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBsaWJnbm9tZXVpL2dub21lLWRhdGVlZGl0LmMgfCA2ICsrKysrKwotIGxpYmdub21ldWkvZ25vbWUtZ2NvbmYtdWkuYyB8IDMgKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmdub21ldWkvZ25vbWUtZGF0ZWVkaXQuYyBiL2xpYmdub21ldWkvZ25vbWUtZGF0ZWVkaXQuYwotaW5kZXggNjlhYjY5OS4uNDE1NDFjMyAxMDA2NDQKLS0tLSBhL2xpYmdub21ldWkvZ25vbWUtZGF0ZWVkaXQuYwotKysrIGIvbGliZ25vbWV1aS9nbm9tZS1kYXRlZWRpdC5jCi1AQCAtMTUyLDkgKzE1MiwxMiBAQCBkYXlfc2VsZWN0ZWQgKEd0a0NhbGVuZGFyICpjYWxlbmRhciwgR25vbWVEYXRlRWRpdCAqZ2RlKQotIAllbHNlCi0gCQltdG0udG1feWVhciA9IHllYXI7Ci0gCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC1ub25saXRlcmFsIgotIAlpZiAoc3RyZnRpbWUgKGJ1ZmZlciwgc2l6ZW9mIChidWZmZXIpLAotIAkJICAgICAgc3RyZnRpbWVfZGF0ZV9mb3JtYXQsICZtdG0pID09IDApCi0gCQlzdHJjcHkgKGJ1ZmZlciwgIj8/PyIpOwotKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCi0gCWJ1ZmZlcltzaXplb2YoYnVmZmVyKS0xXSA9ICdcMCc7Ci0gCi0gCS8qIEZJWE1FOiB3aGF0IGFib3V0IHNldCB0aW1lICovCi1AQCAtNzAxLDggKzcwNCwxMSBAQCBnbm9tZV9kYXRlX2VkaXRfc2V0X3RpbWUgKEdub21lRGF0ZUVkaXQgKmdkZSwgdGltZV90IHRoZV90aW1lKQotIAlteXRtID0gbG9jYWx0aW1lICgmdGhlX3RpbWUpOwotIAotIAkvKiBTZXQgdGhlIGRhdGUgKi8KLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCi0gCWlmIChzdHJmdGltZSAoYnVmZmVyLCBzaXplb2YgKGJ1ZmZlciksIHN0cmZ0aW1lX2RhdGVfZm9ybWF0LCBteXRtKSA9PSAwKQotIAkJc3RyY3B5IChidWZmZXIsICI/Pz8iKTsKLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAotIAlidWZmZXJbc2l6ZW9mKGJ1ZmZlciktMV0gPSAnXDAnOwotIAotIAlzdHJfdXRmOCA9IGdfbG9jYWxlX3RvX3V0ZjggKGJ1ZmZlciwgLTEsIE5VTEwsIE5VTEwsIE5VTEwpOwotZGlmZiAtLWdpdCBhL2xpYmdub21ldWkvZ25vbWUtZ2NvbmYtdWkuYyBiL2xpYmdub21ldWkvZ25vbWUtZ2NvbmYtdWkuYwotaW5kZXggNDNjMGY0NC4uYTg0YjJjMCAxMDA2NDQKLS0tLSBhL2xpYmdub21ldWkvZ25vbWUtZ2NvbmYtdWkuYwotKysrIGIvbGliZ25vbWV1aS9nbm9tZS1nY29uZi11aS5jCi1AQCAtMTgwLDEyICsxODAsMTUgQEAgZXJyb3JfaWRsZV9mdW5jIChncG9pbnRlciBkYXRhKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgbWF5IG5vdCB3b3JrIHByb3Blcmx5LiIpOwotICAgICAgICAgICAgICAgICB9Ci0gCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC1ub25saXRlcmFsIgotICAgICAgICAgICAgICAgICBkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3IChOVUxMIC8qIHBhcmVudCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBmbGFncyAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX01FU1NBR0VfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19CVVRUT05TX09LLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdub21lX3Byb2dyYW1fZ2V0X2h1bWFuX3JlYWRhYmxlX25hbWUoZ25vbWVfcHJvZ3JhbV9nZXQoKSkpOwotKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCi0gICAgICAgICAgICAgICAgIGd0a19kaWFsb2dfc2V0X2RlZmF1bHRfcmVzcG9uc2UgKEdUS19ESUFMT0cgKGRpYWxvZyksIEdUS19SRVNQT05TRV9PSyk7Ci0gICAgICAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGRpYWxvZywgInJlc3BvbnNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoZ3RrX3dpZGdldF9kZXN0cm95KSwKLS0tIAotMi41LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWV1aS9nbm9tZS1zdG9jay1waXhidWZzLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZXVpL2dub21lLXN0b2NrLXBpeGJ1ZnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUzYThhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZXVpL2dub21lLXN0b2NrLXBpeGJ1ZnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwMzAgKzAsMCBAQAotLyogZ25vbWUgc3RvY2sgaWNvbnMgaW4gR2RtUGl4YnVmIHVzYWJsZSByZ2IgZGF0YQotICoKLSAqIENvcHlyaWdodCAoQykgMTk5NyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gKgotICogdGhlIHBpeG1hcHMgZm9yIGJ1dHRvbl9jYW5jZWwsIHNhdmVfYXMsIHRyYXNoLCBtYWlsX3JlY2VpdmUsIHN0b3AKLSAqIHJpZ2h0X2Fycm93LCBob21lLCBzYXZlLCBib29rX2JsdWUsIHRyYXNoX2Z1bGwsIHVuZG8sIHNlYXJjaCwgbWFpbF9mb3J3YXJkCi0gKiByZXZlcnQsIG1haWxfY29tcG9zZSwgbWljLCBjb3B5LCBqdW1wX3RvLCBjb252ZXJ0LCBidXR0b25fYXBwbHksIHRpbWVyCi0gKiBtYWlsLCBib29rX3JlZCwgYm9va195ZWxsb3csIGhlbHAsIHJlZG8sIG5ldywgbWFpbF9zZW5kLCBidXR0b25feWVzLCBjdXQKLSAqIHByb3BlcnRpZXMsIHByaW50LCBtYWlsX3JlcGx5LCByZWZyZXNoLCBzZWFyY2hfcmVwbGFjZSwgb3BlbiwgcHJlZmVyZW5jZXMKLSAqIGxlZnRfYXJyb3csIHVuZGVsZXRlLCBjbG9zZSwgdm9sdW1lLCBidXR0b25fbm8sIGV4aXQsIGJvb2tfZ3JlZW4KLSAqIGJvb2tfb3BlbiwgcGFzdGUsIGxpbmVfaW4sIHNwZWxsY2hlY2ssIHRpbWVyX3N0b3BwZWQKLSAqIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTggVHVvbWFzIEt1b3NtYW5lbgotICovCi0KLS8qIEdka1BpeGJ1ZiBSR0JBIEMtU291cmNlIGltYWdlIGR1bXAgKi8KLQotI2lmZGVmIF9fU1VOUFJPX0MKLSNwcmFnbWEgYWxpZ24gNCAoc3RvY2tfYXR0YWNoKQotI2VuZGlmCi0jaWZkZWYgX19HTlVDX18KLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfYXR0YWNoW10gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fICg0KSkpID0gCi0jZWxzZQotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19hdHRhY2hbXSA9IAotI2VuZGlmCi17ICIiCi0gIC8qIFBpeGJ1ZiBtYWdpYyAoMHg0NzY0NmI1MCkgKi8KLSAgIkdka1AiCi0gIC8qIGxlbmd0aDogaGVhZGVyICgyNCkgKyBwaXhlbF9kYXRhICgyMzA0KSAqLwotICAiXDBcMFwxMVwzMCIKLSAgLyogcGl4ZGF0YV90eXBlICgweDEwMTAwMDIpICovCi0gICJcMVwxXDBcMiIKLSAgLyogcm93c3RyaWRlICg5NikgKi8KLSAgIlwwXDBcMGAiCi0gIC8qIHdpZHRoICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogaGVpZ2h0ICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogcGl4ZWxfZGF0YTogKi8KLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBjXDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMjFcMFwwXDBcMlwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wwXDBcMFwyNlwwIgotICAiXDBcMFwiXDBcMFwwJFwwXDBcMCVcMFwwXDAlXDBcMFwwXDM3N1wwXDBcMGxcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDAiCi0gICJcMFwxMFwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wwXDBcMFwiXDBcMFwwXDIwXDAiCi0gICJcMFwwJFwwXDBcMH5cMVwxXDFcMzc3UVFRXDM3N1wyMzJcMjMyXDIzMlwzNzdcMzE3XDMxN1wzMTdcMzc3b29vXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMTZcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDBcMFwweFwwXDBcMCIKLSAgIlwzNzdGRkZcMzc3XDI0NVwyNDVcMjQ1XDM3N1wzNDJcMzQyXDM0MlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNjZcMzY2XDM2NlwzNzdcMjEyXDIxMlwyMTJcMzc3OTk5XDM3N1wwXDBcMChcMFwwXDBcMTBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM0XDBcMFwwIgotICAiQlwwXDBcMFwzNzdcMzRcMzRcMzRcMzc3XDIxM1wyMTNcMjEzXDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzU2XDM1NlwzNTYiCi0gICJcMzc3XDM0MVwzNDFcMzQxXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM2N1wzNjdcMzY3XDM3NyIKLSAgIlwzNjZcMzY2XDM2NlwzNzdcMzE0XDMxNFwzMTRcMzc3VlZWXDM3N1wwXDBcMF5cMFwwXDBcMTJcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBAXDBcMFwwXDM3Nz4+PlwzNzdcMjAxXDIwMVwyMDEiCi0gICJcMzc3XDMyNFwzMjRcMzI0XDM3N1wzNFwzNFwzNFwzNzdcMzQ3XDM0N1wzNDdcMzc3XDMyN1wzMjdcMzI3XDM3N1wzNzIiCi0gICJcMzcyXDM3MlwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MFwzNzBcMzcwXDM3N1wzMDJcMzAyXDMwMlwzNzdcMzEzXDMxMyIKLSAgIlwzMTNcMzc3XDM2NVwzNjVcMzY1XDM3N1wzMzFcMzMxXDMzMVwzNzdcMjAxXDIwMVwyMDFcMzc3XDBcMFwwXDM3N1wwIgotICAiXDBcMFwyNVwwXDBcMFwzXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwOlwzXDNcM1wzNzdUVFRcMzc3XDM0NlwzNDYiCi0gICJcMzQ2XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wwXDBcMFwzNzdcMzI3IgotICAiXDMyN1wzMjdcMzc3XDMzNlwzMzZcMzM2XDM3N1wyNjNcMjYzXDI2M1wzNzd5eXlcMzc3XDBcMFwwXDM3N1wzNDJcMzQyIgotICAiXDM0MlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjRcMzY0XDM2NFwzNzdcMjM1XDIzNVwyMzUiCi0gICJcMzc3KCgoXDM3N1wwXDBcMClcMFwwXDBcMTBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDM2NlwzNjYiCi0gICJcMzY2XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNzJcMzcyXDM3MiIKLSAgIlwzNzdcMzczXDM3M1wzNzNcMzc3XDBcMFwwXDM3N1wyNDZcMjQ2XDI0NlwzNzdcMzA1XDMwNVwzMDVcMzc3XDM2MFwzNjAiCi0gICJcMzYwXDM3N1wzNzBcMzcwXDM3MFwzNzdcMFwwXDBcMzc3XDM0MlwzNDJcMzQyXDM3N1wzMDJcMzAyXDMwMlwzNzdcMzEyIgotICAiXDMxMlwzMTJcMzc3XDM2NFwzNjRcMzY0XDM3N1wzMDdcMzA3XDMwN1wzNzdWVlZcMzc3XDBcMFwwXlwwXDBcMFwxMlwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzYyXDM2MlwzNjJcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzEiCi0gICJcMzcxXDM3MVwzNzdcMzE2XDMxNlwzMTZcMzc3XDMwNFwzMDRcMzA0XDM3N1wzMDVcMzA1XDMwNVwzNzdcMFwwXDBcMzc3IgotICAiXDMyNVwzMjVcMzI1XDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MFwzNzBcMzcwXDM3N1wwXDAiCi0gICJcMFwzNzdcMjYzXDI2M1wyNjNcMzc3XDMzMlwzMzJcMzMyXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzYzXDM2M1wzNjNcMzc3IgotICAiXDM2M1wzNjNcMzYzXDM3N3l5eVwzNzdcMFwwXDBcMzc3XDBcMFwwXDI1XDBcMFwwXDNcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwaFwyMDVcMjA1XDIwNVwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3MFwzNzBcMzcwXDM3N1wyNzZcMjc2XDI3NlwzNzciCi0gICJcMzcxXDM3MVwzNzFcMzc3XDM3MVwzNzFcMzcxXDM3N1wwXDBcMFwzNzdcMzIzXDMyM1wzMjNcMzc3XDMzNFwzMzRcMzM0IgotICAiXDM3N1wzMDJcMzAyXDMwMlwzNzdcMzAyXDMwMlwzMDJcMzc3XDBcMFwwXDM3N1wzNDJcMzQyXDM0MlwzNzdcMzY1XDM2NSIKLSAgIlwzNjVcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYyXDM2MlwzNjJcMzc3XDIzNFwyMzRcMjM0IgotICAiXDM3NygoKFwzNzdcMFwwXDApXDBcMFwwXDEwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFw0MEhISFwzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MFwzNzBcMzcwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMjQ3XDI0N1wyNDdcMzc3XDMyNlwzMjZcMzI2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY2XDM2NlwzNjYiCi0gICJcMzc3XDBcMFwwXDM3N1wzNDJcMzQyXDM0MlwzNzdcMzY0XDM2NFwzNjRcMzc3XDMwNFwzMDRcMzA0XDM3N1wzMTBcMzEwIgotICAiXDMxMFwzNzdcMzYyXDM2MlwzNjJcMzc3XDMwNlwzMDZcMzA2XDM3N0xMTFwzNzdcMFwwXDBeXDBcMFwwXDEyXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDM3N1wzNTJcMzUyXDM1MlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM2NlwzNjYiCi0gICJcMzY2XDM3N1wyNzZcMjc2XDI3NlwzNzdcMzAyXDMwMlwzMDJcMzc3XDBcMFwwXDM3N1wzNDVcMzQ1XDM0NVwzNzdcMzMwIgotICAiXDMzMFwzMzBcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjVcMzY1XDM2NVwzNzdcMFwwXDBcMzc3XDI1NVwyNTVcMjU1XDM3NyIKLSAgIlwyNzRcMjc0XDI3NFwzNzdcMzUyXDM1MlwzNTJcMzc3XDM0MFwzNDBcMzQwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzUyIgotICAiXDM1MlwzNTJcMzc3XDIyMFwyMjBcMjIwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMjVcMFwwXDBcM1wwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBpaGhoXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjYiCi0gICJcMzY2XDM2NlwzNzdcMjQyXDI0MlwyNDJcMzc3XDBcMFwwXDM3N1wzMDBcMzAwXDMwMFwzNzdcMzAxXDMwMVwzMDFcMzc3IgotICAiXDBcMFwwXDM3N3h4eFwzNzdcMzI2XDMyNlwzMjZcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYxIgotICAiXDM2MVwzNjFcMzc3XDM2MVwzNjFcMzYxXDM3N1wzMjVcMzI1XDMyNVwzNzdcMjU2XDI1NlwyNTZcMzc3XDI1XDI1XDI1IgotICAiXDM3N1wwXDBcMClcMFwwXDBcMTBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDQiIjk5OVwzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDMzMlwzMzJcMzMyXDM3N1wyMzIiCi0gICJcMjMyXDIzMlwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N3l5eVwzNzdcMzI2XDMyNlwzMjZcMzc3XDM2MlwzNjJcMzYyXDM3NyIKLSAgIlwzNjJcMzYyXDM2MlwzNzdcMzYxXDM2MVwzNjFcMzc3XDMyNlwzMjZcMzI2XDM3N1wzMjBcMzIwXDMyMFwzNzdcMjI3IgotICAiXDIyN1wyMjdcMzc3cnJyXDM3N0pKSlwzNzdcMFwwXDAuXDBcMFwwXDExXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDM3N1wzNTRcMzU0XDM1NFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM2NFwzNjRcMzY0XDM3N1wyNTRcMjU0XDI1NCIKLSAgIlwzNzdcMjcyXDI3MlwyNzJcMzc3XDMzNVwzMzVcMzM1XDM3N1wzNjNcMzYzXDM2M1wzNzdcMzE2XDMxNlwzMTZcMzc3IgotICAiXDMzM1wzMzNcMzMzXDM3N1wzNTRcMzU0XDM1NFwzNzdcMzI3XDMyN1wzMjdcMzc3XDMyNlwzMjZcMzI2XDM3N1wyNjEiCi0gICJcMjYxXDI2MVwzNzdcMjAxXDIwMVwyMDFcMzc3VlZWXDM3NyMjI1wzNzdcMFwwXDBcMzc3XDBcMFwwcVwwXDBcMClcMCIKLSAgIlwwXDBcMTBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBoaWlpXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYzXDM2MyIKLSAgIlwzNjNcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM2MlwzNjJcMzYyIgotICAiXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzI3XDMyN1wzMjdcMzc3XDI2N1wyNjdcMjY3XDM3N1wyMDJcMjAyXDIwMlwzNzciCi0gICJAQEBcMzc3IyMjXDM3N1wwXDBcMFwzNzdcMFwwXDBcMjA0XDBcMFwwIiIyXDBcMFwwLlwwXDBcMClcMFwwXDBcMjVcMCIKLSAgIlwwXDBcM1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFw0KCgoXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYzXDM2MyIKLSAgIlwzNjNcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzI3XDMyN1wzMjdcMzc3XDI3NlwyNzZcMjc2IgotICAiXDM3N1wyMjZcMjI2XDIyNlwzNzcyMjJcMzc3IyMjXDM3N1wwXDBcMFwzNzdcMFwwXDB1XDBcMFwwSFwwXDBcMC9cMFwwIgotICAiXDAqXDBcMFwwXDMxXDBcMFwwXDEzXDBcMFwwXDEwXDBcMFwwXDNcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzUwXDM1MFwzNTBcMzc3XDMxNFwzMTRcMzE0XDM3NyIKLSAgIlwyMzJcMjMyXDIzMlwzNzdAQEBcMzc3IyMjXDM3N1wwXDBcMFwzNzdcMFwwXDBcMjIxXDBcMFwwSVwwXDBcMC9cMFwwIgotICAiXDAqXDBcMFwwXDMwXDBcMFwwXDE2XDBcMFwwXDExXDBcMFwwXDRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwOzk5OVwzNzdcMjAyXDIwMlwyMDJcMzc3OTk5XDM3NyIKLSAgIlwyMlwyMlwyMlwzNzdcMFwwXDBcMjA0XDBcMFwwSVwwXDBcMC9cMFwwXDAqXDBcMFwwXDMzXDBcMFwwXDE2XDBcMFwwIgotICAiXDExXDBcMFwwXDNcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDNcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMHVcMFwwIgotICAiXDAiIjFcMFwwXDAqXDBcMFwwXDMxXDBcMFwwXDE2XDBcMFwwXDExXDBcMFwwXDRcMFwwXDBcMVwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMTFcMFwwXDAmXDBcMFwwKVwwXDBcMFwyN1wwXDBcMCIKLSAgIlwxMlwwXDBcMFw0XDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcN1wwXDBcMFwxMFwwXDBcMFwzXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja19ib29rX2JsdWUpCi0jZW5kaWYKLSNpZmRlZiBfX0dOVUNfXwotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19ib29rX2JsdWVbXSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18gKDQpKSkgPSAKLSNlbHNlCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX2Jvb2tfYmx1ZVtdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDIzMDQpICovCi0gICJcMFwwXDExXDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDk2KSAqLwotICAiXDBcMFwwYCIKLSAgLyogd2lkdGggKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBoZWlnaHQgKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzXDBcMFwwIiI5XDBcMFwwXDMwMlwwXDBcMFwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNTdcMFwwXDBcMzU2XDBcMFwwXDM0NlwwXDBcMFwzNDJcMFwwXDB3XDBcMFwwXDEzXDBcMCIKLSAgIlwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDMyXDIxXDI2XDM1XDM3N1wyMjciCi0gICJcMjUwXDI3NlwzNzd9XDIyM1wyNTRcMzc3c1wyMTJcMjQzXDM3N2xcMjA0XDIzNFwzNzdkfFwyMjZcMzc3XnZcMjE3XDM3NyIKLSAgIldvXDIxMFwzNzdQaVwyMDJcMzc3UGlcMjAyXDM3N1BpXDIwMlwzNzdQaVwyMDJcMzc3UGlcMjAyXDM3N1ZuXDIwNlwzNzciCi0gICJJWGlcMzc3XDIxXDMwXCJcMzc2XDBcMFwwLlwwXDBcMFwxMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMjczdlwyMTNcMjQyXDM3N1wyMTZcMjQyXDI3MFwzNzd2XDIxNVwyNDdcMzc3VnJcMjIwXDM3NyIKLSAgIk5qXDIxMFwzNzdGYlwyMDBcMzc3PVp4XDM3NzVScFwzNzcxTmtcMzc3MU5rXDM3NzZSb1wzNzc2Um9cMzc3PFdzXDM3NyIKLSAgIjZSb1wzNzczQE9cMzc3XDI1XDM0JVwzNzJcMFwwXDBOXDBcMFwwXDIwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMjJcMTJcMTVcMjFcMzc3XDIzMVwyNTRcMzAwXDM3N1wyMDBcMjI2XDI1NlwzNzdbdlwyMjRcMzc3IgotICAiU29cMjE1XDM3N0pnXDIwNVwzNzdCX31cMzc3Old1XDM3NzJPbVwzNzcxTmtcMzc3MU5rXDM3NzFOa1wzNzcxTmtcMzc3IgotICAiO1dyXDM3Ny1EXFxcMzc3Iy82XDM3N1wwXDBcMF5cMFwwXDBEXDBcMFwwXDE2XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMjU1W2l5XDM3N1wyMzFcMjU0XDMwMFwzNzd1XDIxNVwyNDZcMzc3V3NcMjIxXDM3N09rXDIxMCIKLSAgIlwzNzdHY1wyMDFcMzc3XDc3W3lcMzc3NlNxXDM3NzFOa1wzNzcxTmtcMzc3MU5rXDM3NzFOa1wzNzc0UG1cMzc3O1dyIgotICAiXDM3NylcNzdWXDM3NzU8QVwzNzVcMFwwXDBcMzc3XDBcMFwwJVwwXDBcMFw1XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDIxXDBcMFwwXDM3N1wyMzFcMjU0XDMwMFwzNzdcMjAwXDIyN1wyNjBcMzc3XFx4XDIyNlwzNzdUcFwyMTYiCi0gICJcMzc3S2hcMjA2XDM3N0NgflwzNzc7WHZcMzc3M1BuXDM3NzFOa1wzNzcxTmtcMzc3M1BrXDM3NzFOa1wzNzc5VXFcMzc3IgotICAiLURcXFwzNzdcMjdcIixcMzc3flwyMDJcMjA1XDM3NzU3OFwzNzdcMFwwXDBGXDBcMFwwXDE1XDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDIzMltpeVwzNzdcMjE3XDI0M1wyNzFcMzc3dVwyMTVcMjQ2XDM3N1h0XDIyMlwzNzdQbCIKLSAgIlwyMTJcMzc3SGRcMjAyXDM3N0BcXHpcMzc3OFRyXDM3NzFOa1wzNzcxTmtcMzc3MU5rXDM3NzFOa1wzNzcyT2xcMzc3IgotICAiPVl0XDM3NylcNzdWXDM3NyEnLlwzNzZKTE1cMzc3XDIxNlwyMjBcMjIyXDM3N1wwXDBcMFFcMFwwXDBcMjBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDIwXDBcMFwwXDM3N1wyMzBcMjUzXDI3N1wzNzVcMTc3XDIyNlwyNTdcMzc3XXlcMjI3XDM3NyIKLSAgIlVxXDIxN1wzNzdNaVwyMDdcMzc3RGFcMTc3XDM3NzxZd1wzNzc0UW9cMzc3MU5rXDM3NzFOa1wzNzcxTmtcMzc3MU5rIgotICAiXDM3NzhUcFwzNzcvRl1cMzc3XDMwJC1cMzc3VFdZXDM2NmVpalwzNzczMzRcMzc3XDBcMFwwUVwwXDBcMFwyMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMzM1ZXVcMjAzXDM3N1wyMTVcMjQyXDI3MVwzNzd2XDIxNVwyNDdcMzc3WnVcMjIzXDM3NyIKLSAgIlFtXDIxM1wzNzdJZVwyMDNcMzc3QV17XDM3NzlVc1wzNzcxTmtcMzc3MU5rXDM3NzFOa1wzNzcxTmtcMzc3MU5rXDM3NyIKLSAgIjxXc1wzNzcqQlpcMzc3IysyXDM3N0ZISlwzNzdcMjIwXDIyMlwyMjVcMzc3XDBcMFwwXDM3N1wwXDBcMGNcMFwwXDBcMjEiCi0gICJcMFwwXDBcMFwwXDBcMCFcMFwwXDBcMzc3XDIzM1wyNTRcMjczXDM3N1wyMDdcMjM0XDI2NFwzNzdjflwyMzNcMzc3ViIKLSAgInJcMjIwXDM3N05qXDIxMFwzNzdGYlwyMDBcMzc3PVp4XDM3NzVScFwzNzcxTmtcMzc3MU5rXDM3NzFOa1wzNzcxTmtcMzc3IgotICAiNVJuXDM3NzRLYlwzNzdcMzEkLVwzNzdkaGtcMzc3bW9wXDM3NzBHXVwzNzdcMFwwXDBcMzczXDBcMFwwUlwwXDBcMFwyNSIKLSAgIlwwXDBcMFwwXDBcMFwwXDI0NWVwfVwzNzdcMjIxXDI0NVwyNzRcMzc3cVwyMTNcMjQ2XDM3N1xceFwyMjZcMzc3VHBcMjE2IgotICAiXDM3N0toXDIwNlwzNzdDYH5cMzc3O1h2XDM3NzNQblwzNzcxTmtcMzc3MU5rXDM3NzFOa1wzNzcxTmtcMzc3PVl0XDM3NyIKLSAgIilcNzdWXDM3NyYuM1wzNzdXWFlcMzc3XDIxM1wyMTdcMjI1XDM3N1wxMVwxNVwyMVwzNzJcMFwwXDBcMjM0XDBcMFwwIgotICAiSVwwXDBcMFwxN1wwXDBcMFwxM1wwXDBcMFwzNzd+XDIxNlwyMzdcMzM3XDIxMlwyMzdcMjY2XDM3N2xcMjA1XDI0MVwzNzciCi0gICJYdFwyMjJcMzc3UGxcMjEyXDM3N0hkXDIwMlwzNzdAXFx6XDM3NzhUclwzNzcxTmtcMzc3MU5rXDM3NzFOa1wzNzcxTiIKLSAgImtcMzc3MU5rXDM3NzVMY1wzNzdcMzIlMFwzNzdITE5cMzc3c3V2XDM3N0Nbc1wzNzBcMFwwXDBcMzY0XDBcMFwwVVwwIgotICAiXDBcMCtcMFwwXDBcN1wwXDBcMFwyMDZ1d3dcMzc3XDI3NVwzMDZcMzIzXDM3NVwyNTZcMjc2XDMxNFwzNzdcMjQ3XDI2NiIKLSAgIlwzMDZcMzc3XDI0M1wyNjJcMzAyXDM3N1wyMzZcMjU1XDI3NVwzNzdcMjMyXDI1MlwyNzFcMzc3XDIyMFwyNDBcMjYwIgotICAiXDM3N3tcMjE3XDI0MVwzNzd5XDIxNFwyMzdcMzc3eVwyMTRcMjM3XDM3N3lcMjE0XDIzN1wzNzd5XDIxNFwyMzdcMzc3IgotICAicFwyMDRcMjMxXDM3N1VmeVwzNzcyNTtcMzc3W15hXDM3N1wyMTZcMjIzXDIzMFwzNzdcMTJcMTZcMjFcMzcyXDBcMFwwIgotICAiXDIzM1wwXDBcMEdcMFwwXDBcMjFcMFwwXDBcMVwyXDdcMTFcMzMxXDI2MFwyNzJcMzA0XDM3Nyw+UVwzNzckNkpcMzc3IgotICAiJDZKXDM3NyQ2SlwzNzckNkpcMzc3JDZKXDM3NyQ2SlwzNzckNkpcMzc3JDZKXDM3NyQ2SlwzNzckNkpcMzc3JDZKXDM3NyIKLSAgIiQ2SlwzNzcrNVw3N1wzNzdeYmhcMzc3d3h6XDM3N0ZgelwzNzdcMFwwXDBcMzY1XDBcMFwwVVwwXDBcMCpcMFwwXDBcNiIKLSAgIlwwXDBcMFwwXDE1XDE3XDIxXDM3N1wyMDdcMjIzXDIzNVwzNzdAQUVcMzc3X2BgXDM3M3R0dFwzNzdcMjI2XDIyNlwyMjYiCi0gICJcMzc3XDI2MVwyNjFcMjYxXDM3N1wyNTdcMjU3XDI2MFwzNzdcMzA1XDMwNVwzMDZcMzc3XDMxNlwzMTZcMzE3XDM3NyIKLSAgIlwyNjRcMjczXDMwMVwzNzdcMjc0XDMwMlwzMTFcMzc3XDI3NVwzMDRcMzEyXDM3N1wzMDRcMzEzXDMyMlwzNzdcMzEzIgotICAiXDMyMlwzMzFcMzc3XDMyNlwzMzJcMzM2XDM3N1wyMjBcMjI2XDIzM1wzNzdcMjA1XDIxMlwyMTdcMzc3XDI0XDMzIVwzNzEiCi0gICJcMFwwXDBcMjM0XDBcMFwwSFwwXDBcMFwyMlwwXDBcMFwxXDBcMFwwXDBcMTRcMTZcMTdcMzc3a3tcMjEzXDM3N1dXVyIKLSAgIlwzNzd9flwyMDBcMzc3XDM0MlwzNDRcMzQ2XDM3N1wzNDJcMzQ0XDM0NlwzNzdcMzQxXDM0MVwzNDFcMzc3XDMzN1wzMzciCi0gICJcMzQwXDM3N1wzMzdcMzM3XDM0MFwzNzdcMzYyXDM2MlwzNjJcMzc3XDM3NVwzNzVcMzc2XDM3N1wzNjFcMzYzXDM2NSIKLSAgIlwzNzdcMzYxXDM2M1wzNjVcMzc3XDM2MVwzNjNcMzY1XDM3N1wyNDdcMjUwXDI1MlwzNzdcMjYyXDI2NVwyNzFcMzc3IgotICAiaW1xXDM3N0ZgelwzNzdcMFwxXDJcMzcwXDBcMFwwVVwwXDBcMCpcMFwwXDBcNlwwXDBcMFwwXDBcMFwwXDAkJSdcMzc3IgotICAiY3JcMjAxXDM3N2l8XDIxNlwzNzdUa1wyMDNcMzc3RV14XDM3N1wzMjZcMzM0XDM0MVwzNzdcMzQ3XDM1MlwzNTVcMzc3IgotICAiXDM1NVwzNTdcMzYxXDM3N1wzNTVcMzU3XDM2MlwzNzdcMzQ1XDM0NlwzNDdcMzc3XDMzNlwzMzZcMzM3XDM3N1wzNDEiCi0gICJcMzQxXDM0MlwzNzdcMzQxXDM0MVwzNDJcMzc3XDMzN1wzMzdcMzQwXDM3N1wzNDFcMzQyXDM0M1wzNzdyelwyMDNcMzc3IgotICAiXDIxM1wyMTdcMjI0XDM3N1wyNVwzMyFcMzY3XDBcMFwwXDIzNFwwXDBcMElcMFwwXDBcMjJcMFwwXDBcMVwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDAiIjlcMFwwXDBcMzc3XDRcNlwxMlwzNTQ4Sl1cMzYzTWJ4XDM1MVRoXDE3N1wzNTdTalwyMDIiCi0gICJcMzc3V29cMjA2XDM3N1wyMDdcMjI3XDI0N1wzNzdcMzI3XDMzNVwzNDFcMzc3XDM0MlwzNDZcMzUxXDM3N1wzNTFcMzU0IgotICAiXDM1NlwzNzdcMzcwXDM3MVwzNzJcMzc3XDM3MFwzNzFcMzcyXDM3N1wyMDFcMjA1XDIxMlwzNzdcMjQ1XDI0N1wyNTAiCi0gICJcMzc3XDIzNFwyNDJcMjUwXDM3N1wxXDJcM1wzNzBcMFwwXDBVXDBcMFwwKlwwXDBcMFw3XDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDAmXDBcMFwwZVwwXDBcMFwyNzZcMFwwXDBcMzQ2XDBcMFwwXDM2MFwwXDBcMFwzNjMiCi0gICI7S15cMzcxRFZpXDM3MVRnfVwzNjdVa1wyMDBcMzY2VmxcMjAzXDM3N1wyNTRcMjcwXDMwM1wzNzdcMzM0XDM0MVwzNDUiCi0gICJcMzc3XDM1MFwzNTNcMzU1XDM3N1wyMzdcMjQzXDI0NlwzNzdcMjVcMzUkXDM3M1wwXDBcMFwyMzRcMFwwXDBIXDBcMCIKLSAgIlwwXDIyXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFw2XDBcMFwwXDE3XDBcMFwwIgotICAiXDM0XDBcMFwwIiI0XDBcMFwwQ1wwXDBcMGdcMFwwXDBcMjUxXDBcMFwwXDM0NFwwXDBcMFwzNjFcMFwwXDBcMzU2MD4iCi0gICJNXDM2NT1OYFwzNzFPX3NcMzcyU2V7XDM2N0xjfFwzNTdcMVwzXDVcMzY3XDBcMFwwVVwwXDBcMCtcMFwwXDBcN1wwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDNcMFwwXDBcMTIiCi0gICJcMFwwXDBcMTVcMFwwXDBcMjBcMFwwXDBcMzNcMFwwXDAiIjBcMFwwXDBDXDBcMFwwX1wwXDBcMFwyMzVcMFwwXDBcMzI3IgotICAiXDBcMFwwXDM1NlwwXDBcMFwzNTRcMFwwXDBcMzQ3XDBcMFwwe1wwXDBcMEZcMFwwXDBcMjFcMFwwXDBcMVwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcM1wwXDBcMFwxMFwwXDBcMFwxNVwwXDBcMFwyMFwwXDBcMFwzMFwwXDBcMCxcMFwwXDAiCi0gICJcNzdcMFwwXDBIXDBcMFwwSFwwXDBcMEBcMFwwXDBcMzdcMFwwXDBcNVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcN1wwXDBcMFwxM1wwXDBcMFwxNlwwIgotICAiXDBcMFwxNlwwXDBcMFwxNFwwXDBcMFw1XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja19ib29rX2dyZWVuKQotI2VuZGlmCi0jaWZkZWYgX19HTlVDX18KLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfYm9va19ncmVlbltdIF9fYXR0cmlidXRlX18gKChfX2FsaWduZWRfXyAoNCkpKSA9IAotI2Vsc2UKLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfYm9va19ncmVlbltdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDIzMDQpICovCi0gICJcMFwwXDExXDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDk2KSAqLwotICAiXDBcMFwwYCIKLSAgLyogd2lkdGggKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBoZWlnaHQgKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzXDBcMFwwIiI5XDBcMFwwXDMwMlwwXDBcMFwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNTdcMFwwXDBcMzU2XDBcMFwwXDM0NlwwXDBcMFwzNDJcMFwwXDB3XDBcMFwwXDEzXDBcMCIKLSAgIlwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDMyXDIxXDM0XDIxXDM3N1wyMjUiCi0gICJcMjc2XDIyNVwzNzd5XDI1NXlcMzc3blwyNDZuXDM3N2VcMjQxZVwzNzdeXDIzM15cMzc3WVwyMjJZXDM3N1NcMjEyUyIKLSAgIlwzNzdPXDIwMk9cMzc3T1wyMDJPXDM3N09cMjAyT1wzNzdPXDIwMk9cMzc3T1wyMDJPXDM3N1JcMjEwUlwzNzdDbkNcMzc3IgotICAiXDIyXDM2XDIyXDM3NlwwXDBcMC5cMFwwXDBcMTBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDI3M29cMjQ3b1wzNzdcMjE0XDI3MVwyMTRcMzc3clwyNTFyXDM3N1ZcMjE2VlwzNzdQXDIwNFBcMzc3SnoiCi0gICJKXDM3N0NvQ1wzNzc9ZT1cMzc3OmA6XDM3NzpgOlwzNzc9ZT1cMzc3PWU9XDM3N0FrQVwzNzc9ZT1cMzc3MFAwXDM3NyIKLSAgIlwyNiNcMjZcMzcyXDBcMFwwTlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDIyIgotICAiXDExXDE3XDExXDM3N1wyMjdcMjc3XDIyN1wzNzd9XDI2MH1cMzc3WVwyMjNZXDM3N1RcMjEzVFwzNzdNXDE3N01cMzc3IgotICAiR3VHXDM3N0FrQVwzNzc7YTtcMzc3OmA6XDM3NzpgOlwzNzc6YDpcMzc3OmA6XDM3N0BqQFwzNzczVDNcMzc3ITYhXDM3NyIKLSAgIlwwXDBcMF5cMFwwXDBEXDBcMFwwXDE2XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMjU1T1wyMDMiCi0gICJPXDM3N1wyMjdcMjc3XDIyN1wzNzdxXDI1MHFcMzc3V1wyMTdXXDM3N1BcMjA0UFwzNzdLfEtcMzc3RXJFXDM3Nz5mPiIKLSAgIlwzNzc6YDpcMzc3OmA6XDM3NzpgOlwzNzc6YDpcMzc3PGM8XDM3N0BqQFwzNzcvTi9cMzc3LEksXDM3NVwwXDBcMFwzNzciCi0gICJcMFwwXDAlXDBcMFwwXDVcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMjFcMFwwXDBcMzc3XDIyN1wyNzdcMjI3IgotICAiXDM3N35cMjYwflwzNzdbXDIyNltcMzc3VVwyMTRVXDM3N05cMjAxTlwzNzdId0hcMzc3Qm1CXDM3NzxjPFwzNzc6YDoiCi0gICJcMzc3OmA6XDM3NzthO1wzNzc6YDpcMzc3QGlAXDM3NzNUM1wzNzdcMzAoXDMwXDM3N1wyMDFcMjAxXDIwMVwzNzcoQiIKLSAgIihcMzc3XDBcMFwwRlwwXDBcMFwxNVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyMzJPXDIwM09cMzc3XDIxNSIKLSAgIlwyNzFcMjE1XDM3N3FcMjUwcVwzNzdYXDIyMVhcMzc3UlwyMDdSXDM3N0x9TFwzNzdGc0ZcMzc3QGlAXDM3NzpgOlwzNzciCi0gICI6YDpcMzc3OmA6XDM3NzpgOlwzNzc7YTtcMzc3Qm1CXDM3Ny9OL1wzNzdcMzUiIjBcMzVcMzc2S0tLXDM3N1wyMjBcMjIwIgotICAiXDIyMFwzNzdcMFwwXDBRXDBcMFwwXDIwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyMFwwXDBcMFwzNzdcMjI2XDI3N1wyMjYiCi0gICJcMzc1fVwyNjB9XDM3N1xcXDIyN1xcXDM3N1ZcMjE1VlwzNzdPXDIwM09cMzc3SXhJXDM3N0NuQ1wzNzc9ZD1cMzc3OiIKLSAgImA6XDM3NzpgOlwzNzc6YDpcMzc3OmA6XDM3N1w3N2hcNzdcMzc3NFY0XDM3N1wzMSpcMzFcMzc3VlZWXDM2NmdnZ1wzNzciCi0gICIzMzNcMzc3XDBcMFwwUVwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzM1V1wyMTdXXDM3N1wyMTRcMjcxXDIxNCIKLSAgIlwzNzdyXDI1MXJcMzc3WVwyMjJZXDM3N1JcMjEwUlwzNzdMfkxcMzc3RnRGXDM3N0BqQFwzNzc6YDpcMzc3OmA6XDM3NyIKLSAgIjpgOlwzNzc6YDpcMzc3OmA6XDM3N0FrQVwzNzcxUTFcMzc3XDM3IiIzXDM3XDM3N0hISFwzNzd3XDI1NHdcMzc3XDBcMCIKLSAgIlwwXDM3N1wwXDBcMGNcMFwwXDBcMjFcMFwwXDBcMFwwXDBcMCFcMFwwXDBcMzc3XDIyNlwyNzdcMjI2XDM3N1wyMDRcMjY0IgotICAiXDIwNFwzNzdfXDIzNV9cMzc3VlwyMTZWXDM3N1BcMjA0UFwzNzdKekpcMzc3Q29DXDM3Nz1lPVwzNzc6YDpcMzc3OmAiCi0gICI6XDM3NzpgOlwzNzc6YDpcMzc3PWQ9XDM3NzhdOFwzNzdcMzIrXDMyXDM3N2dnZ1wzNzdubm5cMzc3NFY0XDM3N1wwXDAiCi0gICJcMFwzNzNcMFwwXDBSXDBcMFwwXDI1XDBcMFwwXDBcMFwwXDBcMjQ1VVwyMTRVXDM3N1wyMjBcMjczXDIyMFwzNzduXDI0NiIKLSAgIm5cMzc3W1wyMjZbXDM3N1VcMjE0VVwzNzdOXDIwMU5cMzc3SHdIXDM3N0JtQlwzNzc8YzxcMzc3OmA6XDM3NzpgOlwzNzciCi0gICI6YDpcMzc3OmA6XDM3N0JtQlwzNzcvTi9cMzc3ITYhXDM3N1hYWFwzNzd0XDI1M3RcMzc3XDExXDE3XDExXDM3MlwwXDAiCi0gICJcMFwyMzRcMFwwXDBJXDBcMFwwXDE3XDBcMFwwXDEzXDBcMFwwXDM3N3RcMjQ3dFwzMzdcMjEwXDI2NlwyMTBcMzc3aCIKLSAgIlwyNDNoXDM3N1hcMjIxWFwzNzdSXDIwN1JcMzc3TH1MXDM3N0ZzRlwzNzdAaUBcMzc3OmA6XDM3NzpgOlwzNzc6YDpcMzc3IgotICAiOmA6XDM3NzpgOlwzNzc5XjlcMzc3XDMzLlwzM1wzNzdLS0tcMzc3dHR0XDM3N0VwRVwzNzBcMFwwXDBcMzY0XDBcMFwwIgotICAiVVwwXDBcMCtcMFwwXDBcN1wwXDBcMFwyMDZZXDIyMllcMzc3XDI3MlwzMjVcMjcyXDM3NVwyNTRcMzE0XDI1NFwzNzciCi0gICJcMjQzXDMwN1wyNDNcMzc3XDIzN1wzMDRcMjM3XDM3N1wyMzBcMzAwXDIzMFwzNzdcMjIzXDI3NVwyMjNcMzc3XDIxMCIKLSAgIlwyNjZcMjEwXDM3N3JcMjUxclwzNzdvXDI0N29cMzc3b1wyNDdvXDM3N29cMjQ3b1wzNzdvXDI0N29cMzc3ZVwyNDFlIgotICAiXDM3N01cMTc3TVwzNzcoQihcMzc3Xl5eXDM3N3hcMjU1eFwzNzdcMTFcMTdcMTFcMzcyXDBcMFwwXDIzM1wwXDBcMEciCi0gICJcMFwwXDBcMjFcMFwwXDBcMVwzXDVcM1wzMzFcMjUwXDMxMlwyNTBcMzc3LkwuXDM3NylEKVwzNzcpRClcMzc3KUQpXDM3NyIKLSAgIilEKVwzNzcpRClcMzc3KUQpXDM3NylEKVwzNzcpRClcMzc3KUQpXDM3NylEKVwzNzcpRClcMzc3KUQpXDM3NydBJ1wzNzciCi0gICJjY2NcMzc3eHh4XDM3N0h3SFwzNzdcMFwwXDBcMzY1XDBcMFwwVVwwXDBcMCpcMFwwXDBcNlwwXDBcMFwwXDEzXDIyXDEzIgotICAiXDM3N3dcMjU0d1wzNzcxUTFcMzc3X19fXDM3M3R0dFwzNzdcMjI2XDIyNlwyMjZcMzc3XDI2MVwyNjFcMjYxXDM3N1wyNTciCi0gICJcMjU3XDI1N1wzNzdcMzA1XDMwNVwzMDVcMzc3XDMxNlwzMTZcMzE2XDM3N1wyNzJcMjcyXDI3MlwzNzdcMzAyXDMwMiIKLSAgIlwzMDJcMzc3XDMwM1wzMDNcMzAzXDM3N1wzMTNcMzEzXDMxM1wzNzdcMzIyXDMyMlwzMjJcMzc3XDMzMlwzMzJcMzMyIgotICAiXDM3N1wyMjVcMjI1XDIyNVwzNzdtXDI0Nm1cMzc3XDIzXDM3XDIzXDM3MVwwXDBcMFwyMzRcMFwwXDBIXDBcMFwwXDIyIgotICAiXDBcMFwwXDFcMFwwXDBcMFwxMVwxN1wxMVwzNzdcXFwyMzBcXFwzNzdBa0FcMzc3fn5+XDM3N1wzNDRcMzQ0XDM0NFwzNzciCi0gICJcMzQ0XDM0NFwzNDRcMzc3XDM0MVwzNDFcMzQxXDM3N1wzMzdcMzM3XDMzN1wzNzdcMzM3XDMzN1wzMzdcMzc3XDM2MiIKLSAgIlwzNjJcMzYyXDM3N1wzNzVcMzc1XDM3NVwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjNcMzYzIgotICAiXDM2M1wzNzdcMjUwXDI1MFwyNTBcMzc3XDI2NVwyNjVcMjY1XDM3N21tbVwzNzdId0hcMzc3XDBcMVwwXDM3MFwwXDAiCi0gICJcMFVcMFwwXDAqXDBcMFwwXDZcMFwwXDBcMFwwXDBcMFwwXDMzLlwzM1wzNzdWXDIxNVZcMzc3XFxcMjMwXFxcMzc3UCIKLSAgIlwyMDRQXDM3N0Z0RlwzNzdcMzMzXDMzM1wzMzNcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTdcMzU3XDM1N1wzNzdcMzU3IgotICAiXDM1N1wzNTdcMzc3XDM0NlwzNDZcMzQ2XDM3N1wzMzZcMzM2XDMzNlwzNzdcMzQxXDM0MVwzNDFcMzc3XDM0MVwzNDEiCi0gICJcMzQxXDM3N1wzMzdcMzM3XDMzN1wzNzdcMzQyXDM0MlwzNDJcMzc3enp6XDM3N3NcMjUyc1wzNzdcMjRcNDBcMjRcMzY3IgotICAiXDBcMFwwXDIzNFwwXDBcMElcMFwwXDBcMjJcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiIjlcMFwwXDBcMzc3IgotICAiXDVcMTBcNVwzNTQ4WzhcMzYzTXhNXDM1MVFcMjAwUVwzNTdPXDIwM09cMzc3UlwyMTBSXDM3N1wyMjdcMjI3XDIyN1wzNzciCi0gICJcMzM0XDMzNFwzMzRcMzc3XDM0NVwzNDVcMzQ1XDM3N1wzNTNcMzUzXDM1M1wzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MSIKLSAgIlwzNzFcMzcxXDM3N1wyMDVcMjA1XDIwNVwzNzdcMjQ2XDI0NlwyNDZcMzc3XDIxM1wyNzBcMjEzXDM3N1wxXDJcMVwzNzAiCi0gICJcMFwwXDBVXDBcMFwwKlwwXDBcMFw3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAmXDBcMFwwZSIKLSAgIlwwXDBcMFwyNzZcMFwwXDBcMzQ2XDBcMFwwXDM2MFwwXDBcMFwzNjM5XTlcMzcxQWpBXDM3MU9cMjAwT1wzNjdRXDIwMyIKLSAgIlFcMzY2UVwyMDZRXDM3N1wyNDVcMzEwXDI0NVwzNzdcMzQwXDM0MFwzNDBcMzc3XDM1MlwzNTJcMzUyXDM3N1wyMTNcMjcwIgotICAiXDIxM1wzNzdcMjVcIlwyNVwzNzNcMFwwXDBcMjM0XDBcMFwwSFwwXDBcMFwyMlwwXDBcMFwxXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcNlwwXDBcMFwxN1wwXDBcMFwzNFwwXDBcMCIiNFwwXDBcMENcMFwwXDBnXDAiCi0gICJcMFwwXDI1MVwwXDBcMFwzNDRcMFwwXDBcMzYxXDBcMFwwXDM1Ni9ML1wzNjU7YTtcMzcxSHZIXDM3Mk19TVwzNjdMeiIKLSAgIkxcMzU3XDJcM1wyXDM2N1wwXDBcMFVcMFwwXDArXDBcMFwwXDdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzXDBcMFwwXDEyXDBcMFwwXDE1XDBcMFwwXDIwXDBcMFwwXDMzIgotICAiXDBcMFwwIiIwXDBcMFwwQ1wwXDBcMF9cMFwwXDBcMjM1XDBcMFwwXDMyN1wwXDBcMFwzNTZcMFwwXDBcMzU0XDBcMFwwIgotICAiXDM0N1wwXDBcMHtcMFwwXDBGXDBcMFwwXDIxXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDNcMFwwXDAiCi0gICJcMTBcMFwwXDBcMTVcMFwwXDBcMjBcMFwwXDBcMzBcMFwwXDAsXDBcMFwwXDc3XDBcMFwwSFwwXDBcMEhcMFwwXDBAXDAiCi0gICJcMFwwXDM3XDBcMFwwXDVcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwyXDBcMFwwXDdcMFwwXDBcMTNcMFwwXDBcMTZcMFwwXDBcMTZcMFwwXDBcMTRcMFwwXDBcNVwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9OwotCi0KLS8qIEdka1BpeGJ1ZiBSR0JBIEMtU291cmNlIGltYWdlIGR1bXAgKi8KLQotI2lmZGVmIF9fU1VOUFJPX0MKLSNwcmFnbWEgYWxpZ24gNCAoc3RvY2tfYm9va19vcGVuKQotI2VuZGlmCi0jaWZkZWYgX19HTlVDX18KLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfYm9va19vcGVuW10gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fICg0KSkpID0gCi0jZWxzZQotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19ib29rX29wZW5bXSA9IAotI2VuZGlmCi17ICIiCi0gIC8qIFBpeGJ1ZiBtYWdpYyAoMHg0NzY0NmI1MCkgKi8KLSAgIkdka1AiCi0gIC8qIGxlbmd0aDogaGVhZGVyICgyNCkgKyBwaXhlbF9kYXRhICgyMzA0KSAqLwotICAiXDBcMFwxMVwzMCIKLSAgLyogcGl4ZGF0YV90eXBlICgweDEwMTAwMDIpICovCi0gICJcMVwxXDBcMiIKLSAgLyogcm93c3RyaWRlICg5NikgKi8KLSAgIlwwXDBcMGAiCi0gIC8qIHdpZHRoICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogaGVpZ2h0ICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogcGl4ZWxfZGF0YTogKi8KLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcM09PT0RcMFwwXDBcMzc3XDRcNVw2IgotICAiXDM3N1wwXDBcMDtcMFwwXDBcMjBcMFwwXDBcNlwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDNOTk5FXDEzXDE3XDIyXDM3N1wyMjVcMjM3XDI1MlwzNzdcMzAzXDMwNiIKLSAgIlwzMTJcMzU2XDBcMFwwXDM3N1wwXDBcMCZcMFwwXDBcMjJcMFwwXDBcNVwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMC5cMTNcMTdcMjJcMzc3XDIwMlwyMjBcMjM2XDM3N1wzNjFcMzYxIgotICAiXDM2MVwzNzdcMzI1XDMyN1wzMzBcMzc3XDEyXDE1XDIwXDM3N1wwXDBcMF9cMFwwXDBcNDBcMFwwXDBcMTNcMFwwXDAiCi0gICJcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyXDBcMFwwLlwyMVwyN1wzNFwzNzdcMjA2XDIyM1wyNDAiCi0gICJcMzc3XDM1N1wzNjBcMzYwXDM3N1wzMzZcMzM2XDMzNlwzNzdcMzI1XDMyNVwzMjVcMzc3XDIzM1wyMzdcMjQ0XDMyNCIKLSAgIlwwXDBcMFwzNzdcMFwwXDAvXDBcMFwwXDI0XDBcMFwwXDVcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDJcMFwwXDAiCi0gICIuXDE2XDIzXDI3XDM3N1wyMDVcMjIyXDIzN1wzNzdcMzU3XDM2MFwzNjBcMzc3XDMzM1wzMzNcMzMzXDM3N1wzMTJcMzEyIgotICAiXDMxMlwzNzdcMzEwXDMxMFwzMTBcMzc3XDMxMFwzMTFcMzEyXDM3N1wxNFwxN1wyM1wzNzdcMFwwXDBbXDBcMFwwXDQwIgotICAiXDBcMFwwXDEzXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMC5cMjRcMzJcNDBcMzc3eVwyMTBcMjI1XDM3MFwzNjFcMzYxIgotICAiXDM2MVwzNzdcMzI1XDMyNVwzMjVcMzc3XDMxMlwzMTJcMzEyXDM3N1wzMjJcMzIyXDMyMlwzNzdcMzAzXDMwM1wzMDMiCi0gICJcMzc3XDMxNVwzMTVcMzE1XDM3N3R5flwyNzVcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyNFwwXDBcMFw2XDBcMFwwXDIiCi0gICJcMFwwXDBcMVwwXDBcMFwxXDBcMFwwXDFcMFwwXDBcMVwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwLVwyN1wzNyZcMzc3XDE3N1wyMTVcMjMyXDM2MVwzNTdcMzYwXDM2MFwzNzdcMzMyXDMzMlwzMzJcMzc3XDMyM1wzMjMiCi0gICJcMzIzXDM3N1wzMDRcMzA0XDMwNFwzNzdcMzE2XDMxNlwzMTZcMzc3XDMwMFwzMDBcMzAwXDM3N1wzMTJcMzEyXDMxMiIKLSAgIlwzNzdcMjYxXDI2MVwyNjFcMzM2XDE1XDIxXDI1XDM3N1wwXDBcMFlcMFwwXDAjXDBcMFwwXDIyXDBcMFwwXDE0XDBcMCIKLSAgIlwwXDEyXDBcMFwwXDEyXDBcMFwwXDEyXDBcMFwwXDExXDBcMFwwXDdcMFwwXDBcNFwwXDBcMFwxXDBcMFwwXDBcMFwwIgotICAiXDBcMzc3dlwyMDVcMjIyXDM1MFwzNTZcMzU3XDM1N1wzNzdcMzMxXDMzMVwzMzFcMzc3XDMyM1wzMjNcMzIzXDM3N1wzMjAiCi0gICJcMzIwXDMyMFwzNzdcMzAyXDMwMlwzMDJcMzc3XDMxM1wzMTNcMzEzXDM3N1wzMTFcMzExXDMxMVwzNzdcMjc0XDI3NCIKLSAgIlwyNzRcMzc3XDI0NFwyNDdcMjUxXDM0NGhrbFwzNTEzMzNcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzUyXDBcMFwwXDE3N1wwXDBcMD1cMFwwXDBcMjBcMFwwXDBcNlwwXDAiCi0gICJcMFwxQU9dXDM3N1wyNTVcMjY1XDI3NFwzNjNcMzUyXDM1MlwzNTJcMzc3XDMyMlwzMjJcMzIyXDM3N1wyNzdcMjc3XDI3NyIKLSAgIlwzNzdcMzE1XDMxNVwzMTVcMzc3XDMxM1wzMTNcMzEzXDM3N1wyNzVcMjc1XDI3NVwzNzdcMzA2XDMwNlwzMDZcMzc3IgotICAiXDI2NVwyNjZcMjY3XDM2NVwyMTFcMjIwXDIyNlwzNzBcMjcwXDI3MFwyNzBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N0BBQlwzNDJcMFwwXDBcMTc3XDBcMFwwJVwwXDBcMFwyMFwwXDBcMFw0XDBcMCIKLSAgIlwwXDM3N01gdFwzNDBcMzUzXDM1M1wzNTNcMzc3XDMyMVwzMjFcMzIxXDM3N1wzMDNcMzAzXDMwM1wzNzdcMzAxXDMwMSIKLSAgIlwzMDFcMzc3XDMxMFwzMTBcMzEwXDM3N1wyNjdcMjY3XDI2N1wzNzdcMzAzXDMwM1wzMDNcMzc3XDIyN1wyMzdcMjQ3IgotICAiXDM0N1wyNDFcMjQzXDI0NFwzNzZcMzc0XDM3NVwzNzVcMzc3XDM2M1wzNjRcMzY0XDM3N1wzNTNcMzU0XDM1NVwzNzciCi0gICJcMzUyXDM1M1wzNTRcMzc3XDM1MVwzNTJcMzUzXDM3N1wzNTZcMzU3XDM2MVwzNzdcMzY2XDM2N1wzNzBcMzc3XDM0NCIKLSAgIlwzNDVcMzQ2XDM3NlwyMjJcMjIzXDIyNVwzNzVcMFwwXDBcMzc3XDBcMFwwIiI5XDBcMFwwXDMzXDBcMFwwXDdcMFwwIgotICAiXDA9MkFPXDM3N1wyMTRcMjMwXDI0MlwzNjJcMzQ3XDM0N1wzNDdcMzc3XDMxMVwzMTFcMzExXDM3N1wyNzNcMjczXDI3MyIKLSAgIlwzNzdcMzA0XDMwNFwzMDRcMzc3XDMwMlwzMDJcMzAyXDM3N1wyNDRcMjQ3XDI1M1wzNDZcMjIzXDIyNlwyMzFcMzc1IgotICAiXDMyN1wzMzBcMzMwXDM3N1wzNzRcMzc1XDM3NVwzNzdcMzcyXDM3NFwzNzRcMzc3XDM3MVwzNzJcMzczXDM3N1wzNzAiCi0gICJcMzcxXDM3MlwzNzdcMzY3XDM3MFwzNzFcMzc3XDM2NVwzNjZcMzcwXDM3N1wzNjdcMzY3XDM3MVwzNzdcMzA2XDMwNyIKLSAgIlwzMDdcMzc3T15qXDM3NVwwXDBcMFwzNjBcMFwwXDBCXDBcMFwwXDM3XDBcMFwwXDExXDBcMFwwXDIzXDBcMFwwXDM3NyIKLSAgIkxfclwzNDBcMzUwXDM1MFwzNTBcMzc3XDMwNlwzMDZcMzA2XDM3N1wyNzZcMjc2XDI3NlwzNzdcMjcwXDI3MFwyNzBcMzc3IgotICAiXDI2NVwyNjVcMjY2XDM2MVwyMjdcMjM2XDI0NFwzNTZcMjUwXDI1MFwyNTBcMzc3XDM3NVwzNzZcMzc2XDM3N1wzNjUiCi0gICJcMzY2XDM2NlwzNzdcMzQ3XDM1MVwzNTFcMzc3XDM1M1wzNTRcMzU1XDM3N1wzNTJcMzUzXDM1NFwzNzdcMzYwXDM2MSIKLSAgIlwzNjJcMzc3XDM3MFwzNzFcMzcyXDM3N1wzNDBcMzQyXDM0M1wzNzdcMjE3XDIyNlwyMzVcMzc2XDI1XDM0XCJcMzc3IgotICAiXDBcMFwwXDIwMVwwXDBcMD5cMFwwXDBcMzRcMFwwXDBcMTBcMFwwXDBcMTNcMFwwXDBBNURTXDM3N1wyMTVcMjMxXDI0MiIKLSAgIlwzNjNcMzQzXDM0M1wzNDNcMzc3XDMwMVwzMDFcMzAxXDM3N1wyNzZcMjc2XDI3NlwzNzdcMjE2XDIyNFwyMzJcMzE2IgotICAiXDIzNVwyMzdcMjM3XDM3NlwzNzdcMzc3XDM3N1wzNzdcMzc1XDM3NlwzNzZcMzc3XDM3NFwzNzVcMzc1XDM3N1wzNzIiCi0gICJcMzc0XDM3NFwzNzdcMzYyXDM2M1wzNjRcMzc3XDM2MVwzNjJcMzYzXDM3N1wzNjdcMzcwXDM3MVwzNzdcMzY2XDM2NiIKLSAgIlwzNjdcMzc3XDI0NlwyNTBcMjUzXDM3N3NcMTc3XDIxMlwzNzZcNFw1XDZcMzc3XDBcMFwwUFwwXDBcMCIiMVwwXDBcMCIKLSAgIlwyNFwwXDBcMFw1XDBcMFwwXDVcMFwwXDBcMjRcMFwwXDBcMzc3S19xXDM0MFwzNDVcMzQ1XDM0NVwzNzdcMzAxXDMwMSIKLSAgIlwzMDFcMzc3XDIzNlwyMzdcMjQwXDMyNlwyMjdcMjMxXDIzM1wzNzVcMzMxXDMzMVwzMzFcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNDdcMzUwXDM1MFwzNzdcMzU2XDM1N1wzNTdcMzc3XDM2NFwzNjVcMzY1XDM3N1wzNzFcMzcyXDM3M1wzNzciCi0gICJcMzcwXDM3MVwzNzJcMzc3XDM3M1wzNzNcMzczXDM3N1wzMzBcMzMwXDMzMlwzNzdcMjIzXDIzM1wyNDNcMzc3XDE3XDI0IgotICAiXDMwXDM3N1wwXDBcMHRcMFwwXDBCXDBcMFwwXCJcMFwwXDBcMTRcMFwwXDBcM1wwXDBcMFwyXDBcMFwwXDEzXDBcMFwwIgotICAiQTlJV1wzNzdcMjAyXDIxN1wyMjdcMzYwXDMzM1wzMzNcMzMzXDM3MFwyMTJcMjE2XDIyMlwzNDdcMjY0XDI2NFwyNjQiCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc1XDM3NlwzNzZcMzc3XDM2NVwzNjZcMzY2XDM3NyIKLSAgIlwzNTRcMzU2XDM1NlwzNzdcMzQ2XDM0N1wzNTBcMzc3XDM3MlwzNzJcMzczXDM3N1wzNjVcMzY1XDM2N1wzNzdcMjU2IgotICAiXDI2MlwyNjZcMzc3XFxsfFwzNzdcMFwwXDBcMzc3XDBcMFwwUFwwXDBcMCIiMVwwXDBcMFwyNVwwXDBcMFw2XDBcMFwwIgotICAiXDFcMFwwXDBcMFwwXDBcMFw1XDBcMFwwXDI0XDBcMFwwXDM3N0pdcFwzMzZcMjczXDI3M1wyNzNcMzIxXDI1M1wyNTMiCi0gICJcMjUzXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNTdcMzYwXDM2MCIKLSAgIlwzNzdcMzc0XDM3NVwzNzVcMzc3XDM3MlwzNzNcMzczXDM3N1wzNzFcMzcyXDM3M1wzNzdcMzczXDM3NFwzNzRcMzc3IgotICAiXDMzNlwzNDFcMzQzXDM3N1wyMzVcMjQ2XDI1NlwzNzdcMTJcMTVcMjBcMzc3XDBcMFwwdFwwXDBcMEFcMFwwXDBcIlwwIgotICAiXDBcMFwxM1wwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDEzXDBcMFwwQSQvOlwzNzdpbXFcMzQ2IgotICAid3h5XDM3N1wzNjJcMzYzXDM2M1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzYwXDM2MFwzNjBcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNzNcMzc0XDM3NFwzNzdcMzcxXDM3MVwzNzJcMzc3XDI3MyIKLSAgIlwyNzdcMzA0XDM3N1ZneVwzNzdcMFwwXDBcMzc3XDBcMFwwUFwwXDBcMCIiMVwwXDBcMFwyNVwwXDBcMFw2XDBcMFwwIgotICAiXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcNVwwXDBcMFwyNFwwXDBcMFwzNzdKX3RcMzcwMT5LXDM3NlwyNjMiCi0gICJcMjc1XDMwNlwzNzVcMzIxXDMyN1wzMzVcMzc3XDMzMVwzMzZcMzQzXDM3N1wzNjZcMzY3XDM2N1wzNzdcMzY1XDM2NSIKLSAgIlwzNjVcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzIxXDMyMlwzMjRcMzc3XDIzMlwyNDNcMjU0IgotICAiXDM3N1w0XDVcNlwzNzdcMFwwXDB0XDBcMFwwQVwwXDBcMCFcMFwwXDBcMTNcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMTNcMFwwXDAiIjdcMFwwXDBcMjU2KzQ8XDM2NikyO1wzNzdPXyIKLSAgInBcMzc3XnFcMjA0XDM3NlwyMjFcMjM2XDI1M1wzNzVcMjM3XDI1M1wyNjZcMzc1XDI3N1wzMDdcMzIwXDM3N1wzNTBcMzU0IgotICAiXDM1NlwzNzdcMjYyXDI3MFwyNzZcMzc3cX1cMjEwXDM3NlwwXDBcMFwzNzdcMFwwXDBQXDBcMFwwIiIxXDBcMFwwXDI1IgotICAiXDBcMFwwXDZcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcNVwwXDAiCi0gICJcMFwyMlwwXDBcMCZcMFwwXDA6XDBcMFwwWVwwXDBcMFwyMDBcMFwwXDBcMzAxJS01XDM3N1FhclwzNzdWZ3lcMzc1eiIKLSAgIlwyMDZcMjI1XDM3NXZcMjA1XDIyNFwzNzRcMFwwXDBcMzc3XDBcMFwwclwwXDBcMFw3N1wwXDBcMCFcMFwwXDBcMTNcMCIKLSAgIlwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwIgotICAiXDZcMFwwXDBcMjBcMFwwXDBcMzRcMFwwXDAlXDBcMFwwLVwwXDBcMCIiOFwwXDBcMFhcMFwwXDBcMjAwXDBcMFwwXDI3NSIKLSAgIiw0PVwzNzchJy5cMzc3XDBcMFwwcFwwXDBcMERcMFwwXDAqXDBcMFwwXDIzXDBcMFwwXDVcMFwwXDBcMVwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcNFwwXDAiCi0gICJcMFwxMFwwXDBcMFwxNFwwXDBcMFwyMVwwXDBcMFwzMVwwXDBcMFwiXDBcMFwwLFwwXDBcMCIiN1wwXDBcMEFcMFwwXDAiCi0gICJDXDBcMFwwO1wwXDBcMClcMFwwXDBcMjZcMFwwXDBcMTBcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcMiIKLSAgIlwwXDBcMFw0XDBcMFwwXDZcMFwwXDBcMTNcMFwwXDBcMjBcMFwwXDBcMzBcMFwwXDBcMzdcMFwwXDBcNDBcMFwwXDBcMzMiCi0gICJcMFwwXDBcMjFcMFwwXDBcMTBcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMVwwXDBcMFwyXDBcMFwwXDRcMFwwXDBcNlwwXDBcMFwxMFwwXDBcMFwxMVwwXDBcMFw3XDBcMFwwXDQiCi0gICJcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9OwotCi0KLS8qIEdka1BpeGJ1ZiBSR0JBIEMtU291cmNlIGltYWdlIGR1bXAgKi8KLQotI2lmZGVmIF9fU1VOUFJPX0MKLSNwcmFnbWEgYWxpZ24gNCAoc3RvY2tfYm9va19yZWQpCi0jZW5kaWYKLSNpZmRlZiBfX0dOVUNfXwotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19ib29rX3JlZFtdIF9fYXR0cmlidXRlX18gKChfX2FsaWduZWRfXyAoNCkpKSA9IAotI2Vsc2UKLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfYm9va19yZWRbXSA9IAotI2VuZGlmCi17ICIiCi0gIC8qIFBpeGJ1ZiBtYWdpYyAoMHg0NzY0NmI1MCkgKi8KLSAgIkdka1AiCi0gIC8qIGxlbmd0aDogaGVhZGVyICgyNCkgKyBwaXhlbF9kYXRhICgyMzA0KSAqLwotICAiXDBcMFwxMVwzMCIKLSAgLyogcGl4ZGF0YV90eXBlICgweDEwMTAwMDIpICovCi0gICJcMVwxXDBcMiIKLSAgLyogcm93c3RyaWRlICg5NikgKi8KLSAgIlwwXDBcMGAiCi0gIC8qIHdpZHRoICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogaGVpZ2h0ICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogcGl4ZWxfZGF0YTogKi8KLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcM1wwXDBcMCIiOVwwXDBcMFwzMDJcMFwwXDBcMzc3XDBcMCIKLSAgIlwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwIgotICAiXDBcMFwzNzdcMFwwXDBcMzU3XDBcMFwwXDM1NlwwXDBcMFwzNDZcMFwwXDBcMzQyXDBcMFwwd1wwXDBcMFwxM1wwXDAiCi0gICJcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzMlwzN1wyMVwxNlwzNzdcMzEwIgotICAiXDIyNVwyMTNcMzc3XDI3MnltXDM3N1wyNjRuYFwzNzdcMjYwZldcMzc3XDI1Ml5PXDM3N1wyNDBZS1wzNzdcMjI2U0YiCi0gICJcMzc3XDIxNk9DXDM3N1wyMTZPQ1wzNzdcMjE2T0NcMzc3XDIxNk9DXDM3N1wyMTZPQ1wzNzdcMjI1UkZcMzc3eEM4XDM3NyIKLSAgIiFcMjJcMTdcMzc2XDBcMFwwLlwwXDBcMFwxMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMjczXDI2NXBiXDM3N1wzMDNcMjE0XDIwMVwzNzdcMjY2cmVcMzc3XDIzNFdJXDM3N1wyMjFQRFwzNzdcMjA2IgotICAiSj5cMzc3ekQ5XDM3N28+NFwzNzdpOzFcMzc3aTsxXDM3N28+NFwzNzdvPjRcMzc3dkE3XDM3N28+NFwzNzdYMClcMzc3IgotICAiJ1wyNlwyMlwzNzJcMFwwXDBOXDBcMFwwXDIwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMjIiCi0gICJcMjFcMTFcMTBcMzc3XDMxMVwyMjdcMjE1XDM3N1wyNzR9cVwzNzdcMjQxWktcMzc3XDIzMFRHXDM3N1wyMTRNQVwzNzciCi0gICJcMjAxRzxcMzc3dkE3XDM3N2s7MlwzNzdpOzFcMzc3aTsxXDM3N2k7MVwzNzdpOzFcMzc3dEE2XDM3N1xcMytcMzc3OyIKLSAgIiFcMzNcMzc3XDBcMFwwXlwwXDBcMERcMFwwXDBcMTZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwyNTVcMjE3T0NcMzc3XDMxMVwyMjdcMjE1XDM3N1wyNjVxY1wzNzdcMjM1V0lcMzc3XDIyMVBEXDM3N1wyMTBLXDc3IgotICAiXDM3N3xFOlwzNzdwPjRcMzc3aTsxXDM3N2k7MVwzNzdpOzFcMzc3aTsxXDM3N2w8M1wzNzd0QTZcMzc3VS8oXDM3N08iCi0gICIsJVwzNzVcMFwwXDBcMzc3XDBcMFwwJVwwXDBcMFw1XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDIxXDBcMCIKLSAgIlwwXDM3N1wzMTFcMjI3XDIxNVwzNzdcMjc1fnJcMzc3XDI0NFtMXDM3N1wyMzFVSFwzNzdcMjE1TkJcMzc3XDIwMkg8IgotICAiXDM3N3dCOFwzNzdsPDNcMzc3aTsxXDM3N2k7MVwzNzdrOzJcMzc3aTsxXDM3N3NANlwzNzdcXDMrXDM3NyxcMzBcMjQiCi0gICJcMzc3XDIwMVwyMDFcMjAxXDM3N0koXCJcMzc3XDBcMFwwRlwwXDBcMFwxNVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwyMzJcMjE3T0NcMzc3XDMwNFwyMTVcMjAyXDM3N1wyNjVxY1wzNzdcMjM3WEpcMzc3XDIyM1JFXDM3N1wyMTEiCi0gICJMQFwzNzd+RjtcMzc3c0A2XDM3N2k7MVwzNzdpOzFcMzc3aTsxXDM3N2k7MVwzNzdrOzJcMzc3d0I4XDM3N1UvKFwzNzciCi0gICI0XDM1XDMwXDM3NktLS1wzNzdcMjIwXDIyMFwyMjBcMzc3XDBcMFwwUVwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMjBcMFwwXDBcMzc3XDMxMFwyMjZcMjE0XDM3NVwyNzR9cVwzNzdcMjQ1XFxNXDM3N1wyMzJWSFwzNzdcMjE3IgotICAiT0NcMzc3XDIwM0k9XDM3N3hDOFwzNzdtPTNcMzc3aTsxXDM3N2k7MVwzNzdpOzFcMzc3aTsxXDM3N3FcNzciIjVcMzc3IgotICAiXzQsXDM3Ny1cMzFcMjVcMzc3VlZWXDM2NmdnZ1wzNzczMzNcMzc3XDBcMFwwUVwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMzM1XDIzNVdJXDM3N1wzMDNcMjE0XDIwMVwzNzdcMjY2cmVcMzc3XDI0MFlLXDM3N1wyMjVSRlwzNzciCi0gICJcMjEyTEBcMzc3XDE3N0c7XDM3N3RBNlwzNzdpOzFcMzc3aTsxXDM3N2k7MVwzNzdpOzFcMzc3aTsxXDM3N3ZBN1wzNzciCi0gICJZMSlcMzc3OFwzN1wzMlwzNzdISEhcMzc3XDI3MHdqXDM3N1wwXDBcMFwzNzdcMFwwXDBjXDBcMFwwXDIxXDBcMFwwXDAiCi0gICJcMFwwXDAhXDBcMFwwXDM3N1wzMTBcMjI2XDIxNFwzNzdcMzAwXDIwNXlcMzc3XDI1NGBQXDM3N1wyMzRXSVwzNzdcMjIxIgotICAiUERcMzc3XDIwNko+XDM3N3pEOVwzNzdvPjRcMzc3aTsxXDM3N2k7MVwzNzdpOzFcMzc3aTsxXDM3N209M1wzNzdmOC8iCi0gICJcMzc3L1wzMlwyNlwzNzdnZ2dcMzc3bm5uXDM3N180LFwzNzdcMFwwXDBcMzczXDBcMFwwUlwwXDBcMFwyNVwwXDBcMCIKLSAgIlwwXDBcMFwwXDI0NVwyMzFVSFwzNzdcMzA1XDIyMFwyMDVcMzc3XDI2NG5gXDM3N1wyNDRbTFwzNzdcMjMxVUhcMzc3IgotICAiXDIxNU5CXDM3N1wyMDJIPFwzNzd3QjhcMzc3bDwzXDM3N2k7MVwzNzdpOzFcMzc3aTsxXDM3N2k7MVwzNzd3QjhcMzc3IgotICAiVS8oXDM3NzshXDMzXDM3N1hYWFwzNzdcMjY3dGdcMzc3XDIxXDExXDEwXDM3MlwwXDBcMFwyMzRcMFwwXDBJXDBcMFwwIgotICAiXDE3XDBcMFwwXDEzXDBcMFwwXDM3N1wyNjJ0aFwzMzdcMzAyXDIxMH1cMzc3XDI2MWhZXDM3N1wyMzdYSlwzNzdcMjIzIgotICAiUkVcMzc3XDIxMUxAXDM3N35GO1wzNzdzQDZcMzc3aTsxXDM3N2k7MVwzNzdpOzFcMzc3aTsxXDM3N2k7MVwzNzdnOTAiCi0gICJcMzc3MlwzM1wyN1wzNzdLS0tcMzc3dHR0XDM3N3pFOlwzNzBcMFwwXDBcMzY0XDBcMFwwVVwwXDBcMCtcMFwwXDBcNyIKLSAgIlwwXDBcMFwyMDZcMjQwWUtcMzc3XDMzM1wyNzJcMjY0XDM3NVwzMjRcMjU0XDI0NFwzNzdcMzIwXDI0M1wyMzNcMzc3IgotICAiXDMxNVwyMzdcMjI2XDM3N1wzMTJcMjMxXDIxN1wzNzdcMzA3XDIyNFwyMTFcMzc3XDMwMlwyMTB9XDM3N1wyNjZyZVwzNzciCi0gICJcMjY1cGJcMzc3XDI2NXBiXDM3N1wyNjVwYlwzNzdcMjY1cGJcMzc3XDI2MGZXXDM3N1wyMTRNQVwzNzdJKFwiXDM3NyIKLSAgIl5eXlwzNzdcMjcxeGtcMzc3XDIxXDExXDEwXDM3MlwwXDBcMFwyMzNcMFwwXDBHXDBcMFwwXDIxXDBcMFwwXDFcNlwzIgotICAiXDNcMzMxXDMyMlwyNTBcMjQwXDM3N1QuJ1wzNzdKKSNcMzc3SikjXDM3N0opI1wzNzdKKSNcMzc3SikjXDM3N0opI1wzNzciCi0gICJKKSNcMzc3SikjXDM3N0opI1wzNzdKKSNcMzc3SikjXDM3N0opI1wzNzdHJyFcMzc3Y2NjXDM3N3h4eFwzNzdcMjAySCIKLSAgIjxcMzc3XDBcMFwwXDM2NVwwXDBcMFVcMFwwXDAqXDBcMFwwXDZcMFwwXDBcMFwyNFwxM1wxMVwzNzdcMjcwd2pcMzc3IgotICAiWTEpXDM3N19fX1wzNzN0dHRcMzc3XDIyNlwyMjZcMjI2XDM3N1wyNjFcMjYxXDI2MVwzNzdcMjU3XDI1N1wyNTdcMzc3IgotICAiXDMwNVwzMDVcMzA1XDM3N1wzMTZcMzE2XDMxNlwzNzdcMjcyXDI3MlwyNzJcMzc3XDMwMlwzMDJcMzAyXDM3N1wzMDMiCi0gICJcMzAzXDMwM1wzNzdcMzEzXDMxM1wzMTNcMzc3XDMyMlwzMjJcMzIyXDM3N1wzMzJcMzMyXDMzMlwzNzdcMjI1XDIyNSIKLSAgIlwyMjVcMzc3XDI2NG1fXDM3N1wiXDIzXDIwXDM3MVwwXDBcMFwyMzRcMFwwXDBIXDBcMFwwXDIyXDBcMFwwXDFcMFwwIgotICAiXDBcMFwyMVwxMVwxMFwzNzdcMjQ3XU5cMzc3dkE3XDM3N35+flwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0IgotICAiXDM3N1wzNDFcMzQxXDM0MVwzNzdcMzM3XDMzN1wzMzdcMzc3XDMzN1wzMzdcMzM3XDM3N1wzNjJcMzYyXDM2MlwzNzciCi0gICJcMzc1XDM3NVwzNzVcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYzXDM2M1wzNjNcMzc3XDI1MCIKLSAgIlwyNTBcMjUwXDM3N1wyNjVcMjY1XDI2NVwzNzdtbW1cMzc3XDIwMkg8XDM3N1wxXDBcMFwzNzBcMFwwXDBVXDBcMFwwIgotICAiKlwwXDBcMFw2XDBcMFwwXDBcMFwwXDBcMCIiMlwzM1wyN1wzNzdcMjMyVkhcMzc3XDI0N11OXDM3N1wyMjFQRFwzNzciCi0gICJcMTc3RztcMzc3XDMzM1wzMzNcMzMzXDM3N1wzNTJcMzUyXDM1MlwzNzdcMzU3XDM1N1wzNTdcMzc3XDM1N1wzNTdcMzU3IgotICAiXDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzM2XDMzNlwzMzZcMzc3XDM0MVwzNDFcMzQxXDM3N1wzNDFcMzQxXDM0MVwzNzciCi0gICJcMzM3XDMzN1wzMzdcMzc3XDM0MlwzNDJcMzQyXDM3N3p6elwzNzdcMjY3c2ZcMzc3JFwyNFwyMVwzNjdcMFwwXDBcMjM0IgotICAiXDBcMFwwSVwwXDBcMFwyMlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIiOVwwXDBcMFwzNzdcMTFcNVw0XDM1NCIKLSAgImM4MFwzNjNcMjAzTUJcMzUxXDIxNFFFXDM1N1wyMTdPQ1wzNzdcMjI1UkZcMzc3XDIyN1wyMjdcMjI3XDM3N1wzMzRcMzM0IgotICAiXDMzNFwzNzdcMzQ1XDM0NVwzNDVcMzc3XDM1M1wzNTNcMzUzXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcxXDM3MVwzNzEiCi0gICJcMzc3XDIwNVwyMDVcMjA1XDM3N1wyNDZcMjQ2XDI0NlwzNzdcMzAzXDIxM1wyMDBcMzc3XDJcMVwxXDM3MFwwXDBcMCIKLSAgIlVcMFwwXDAqXDBcMFwwXDdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCZcMFwwXDBlXDBcMFwwIgotICAiXDI3NlwwXDBcMFwzNDZcMFwwXDBcMzYwXDBcMFwwXDM2M2Y6MVwzNzFzQTdcMzcxXDIxNE9DXDM2N1wyMTdRRVwzNjYiCi0gICJcMjIyUURcMzc3XDMyMFwyNDVcMjM0XDM3N1wzNDBcMzQwXDM0MFwzNzdcMzUyXDM1MlwzNTJcMzc3XDMwM1wyMTNcMjAwIgotICAiXDM3NyVcMjVcMjFcMzczXDBcMFwwXDIzNFwwXDBcMEhcMFwwXDBcMjJcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDZcMFwwXDBcMTdcMFwwXDBcMzRcMFwwXDAiIjRcMFwwXDBDXDBcMFwwZ1wwXDBcMFwyNTEiCi0gICJcMFwwXDBcMzQ0XDBcMFwwXDM2MVwwXDBcMFwzNTZTLyhcMzY1ajsyXDM3MVwyMDFJPVwzNzJcMjExTUJcMzY3XDIwNSIKLSAgIkxBXDM1N1wzXDJcMVwzNjdcMFwwXDBVXDBcMFwwK1wwXDBcMFw3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcM1wwXDBcMFwxMlwwXDBcMFwxNVwwXDBcMFwyMFwwXDBcMFwzMyIKLSAgIlwwXDBcMCIiMFwwXDBcMENcMFwwXDBfXDBcMFwwXDIzNVwwXDBcMFwzMjdcMFwwXDBcMzU2XDBcMFwwXDM1NFwwXDBcMCIKLSAgIlwzNDdcMFwwXDB7XDBcMFwwRlwwXDBcMFwyMVwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzXDBcMFwwIgotICAiXDEwXDBcMFwwXDE1XDBcMFwwXDIwXDBcMFwwXDMwXDBcMFwwLFwwXDBcMFw3N1wwXDBcMEhcMFwwXDBIXDBcMFwwQFwwIgotICAiXDBcMFwzN1wwXDBcMFw1XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMlwwXDBcMFw3XDBcMFwwXDEzXDBcMFwwXDE2XDBcMFwwXDE2XDBcMFwwXDE0XDBcMFwwXDVcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAifTsKLQotCi0vKiBHZGtQaXhidWYgUkdCQSBDLVNvdXJjZSBpbWFnZSBkdW1wICovCi0KLSNpZmRlZiBfX1NVTlBST19DCi0jcHJhZ21hIGFsaWduIDQgKHN0b2NrX2Jvb2tfeWVsbG93KQotI2VuZGlmCi0jaWZkZWYgX19HTlVDX18KLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfYm9va195ZWxsb3dbXSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18gKDQpKSkgPSAKLSNlbHNlCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX2Jvb2tfeWVsbG93W10gPSAKLSNlbmRpZgoteyAiIgotICAvKiBQaXhidWYgbWFnaWMgKDB4NDc2NDZiNTApICovCi0gICJHZGtQIgotICAvKiBsZW5ndGg6IGhlYWRlciAoMjQpICsgcGl4ZWxfZGF0YSAoMjMwNCkgKi8KLSAgIlwwXDBcMTFcMzAiCi0gIC8qIHBpeGRhdGFfdHlwZSAoMHgxMDEwMDAyKSAqLwotICAiXDFcMVwwXDIiCi0gIC8qIHJvd3N0cmlkZSAoOTYpICovCi0gICJcMFwwXDBgIgotICAvKiB3aWR0aCAoMjQpICovCi0gICJcMFwwXDBcMzAiCi0gIC8qIGhlaWdodCAoMjQpICovCi0gICJcMFwwXDBcMzAiCi0gIC8qIHBpeGVsX2RhdGE6ICovCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDNcMFwwXDAiIjlcMFwwXDBcMzAyXDBcMFwwXDM3N1wwXDAiCi0gICJcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwXDM1N1wwXDBcMFwzNTZcMFwwXDBcMzQ2XDBcMFwwXDM0MlwwXDBcMHdcMFwwXDBcMTNcMFwwIgotICAiXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzIoXDQwXDVcMzc3XDM1MlwzMTUiCi0gICJpXDM3N1wzNDRcMzAwQ1wzNzdcMzQyXDI3MzNcMzc3XDM0MVwyNjcmXDM3N1wzMzNcMjYxXDM2XDM3N1wzMTdcMjQ3XDM0IgotICAiXDM3N1wzMDNcMjM1XDMyXDM3N1wyNzBcMjI0XDMxXDM3N1wyNzBcMjI0XDMxXDM3N1wyNzBcMjI0XDMxXDM3N1wyNzAiCi0gICJcMjI0XDMxXDM3N1wyNzBcMjI0XDMxXDM3N1wzMDFcMjM0XDMyXDM3N1wyMzR+XDI1XDM3NypcIlw2XDM3NlwwXDBcMCIKLSAgIi5cMFwwXDBcMTBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDI3M1wzNDNcMjc0IgotICAiNFwzNzdcMzUwXDMxMV1cMzc3XDM0M1wyNzU4XDM3N1wzMTJcMjQzXDMzXDM3N1wyNzNcMjI3XDMyXDM3N1wyNTVcMjE0IgotICAiXDMwXDM3N1wyMzZcMTc3XDI1XDM3N1wyMjB0XDIzXDM3N1wyMTFuXDIyXDM3N1wyMTFuXDIyXDM3N1wyMjB0XDIzXDM3NyIKLSAgIlwyMjB0XDIzXDM3N1wyMzB7XDI1XDM3N1wyMjB0XDIzXDM3N3JcXFwxN1wzNzcxKFw3XDM3MlwwXDBcME5cMFwwXDBcMjAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyMlwyNlwyMlwzXDM3N1wzNTJcMzE2bVwzNzdcMzQ1IgotICAiXDMwMkhcMzc3XDMyMVwyNTBcMzRcMzc3XDMwNFwyMzZcMzNcMzc3XDI2NFwyMjJcMzFcMzc3XDI0NlwyMDZcMjdcMzc3IgotICAiXDIzMHtcMjVcMzc3XDIxMnBcMjNcMzc3XDIxMW5cMjJcMzc3XDIxMW5cMjJcMzc3XDIxMW5cMjJcMzc3XDIxMW5cMjIiCi0gICJcMzc3XDIyN3lcMjRcMzc3d2BcMjBcMzc3TT5cMTJcMzc3XDBcMFwwXlwwXDBcMERcMFwwXDBcMTZcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyNTVcMjcyXDIyNlwzMVwzNzdcMzUyXDMxNm1cMzc3XDM0M1wyNzQ2XDM3NyIKLSAgIlwzMTNcMjQ0XDM0XDM3N1wyNzNcMjI3XDMyXDM3N1wyNTdcMjE1XDMwXDM3N1wyNDFcMjAyXDI2XDM3N1wyMjF1XDI0IgotICAiXDM3N1wyMTFuXDIyXDM3N1wyMTFuXDIyXDM3N1wyMTFuXDIyXDM3N1wyMTFuXDIyXDM3N1wyMTRxXDIzXDM3N1wyMjciCi0gICJ5XDI0XDM3N25ZXDE3XDM3N2ZSXDE2XDM3NVwwXDBcMFwzNzdcMFwwXDAlXDBcMFwwXDVcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMjFcMFwwXDBcMzc3XDM1MlwzMTZtXDM3N1wzNDVcMzAzSlwzNzdcMzI0XDI1M1wzNVwzNzdcMzA2IgotICAiXDI0MFwzM1wzNzdcMjY2XDIyM1wzMVwzNzdcMjUwXDIxMFwyN1wzNzdcMjMyfFwyNVwzNzdcMjE0cVwyM1wzNzdcMjExIgotICAiblwyMlwzNzdcMjExblwyMlwzNzdcMjEycFwyM1wzNzdcMjExblwyMlwzNzdcMjI1eFwyNFwzNzd3YFwyMFwzNzc5LlwxMCIKLSAgIlwzNzdcMjAxXDIwMVwyMDFcMzc3XkxcMTVcMzc3XDBcMFwwRlwwXDBcMFwxNVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwyMzJcMjcyXDIyNlwzMVwzNzdcMzUwXDMxMl9cMzc3XDM0M1wyNzQ2XDM3N1wzMTVcMjQ1XDM0XDM3N1wyNzciCi0gICJcMjMyXDMyXDM3N1wyNjFcMjE3XDMwXDM3N1wyNDNcMjAzXDI2XDM3N1wyMjV4XDI0XDM3N1wyMTFuXDIyXDM3N1wyMTEiCi0gICJuXDIyXDM3N1wyMTFuXDIyXDM3N1wyMTFuXDIyXDM3N1wyMTJwXDIzXDM3N1wyMzJ8XDI1XDM3N25ZXDE3XDM3N0M2XDExIgotICAiXDM3NktLS1wzNzdcMjIwXDIyMFwyMjBcMzc3XDBcMFwwUVwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMjAiCi0gICJcMFwwXDBcMzc3XDM1MVwzMTVrXDM3NVwzNDVcMzAySFwzNzdcMzI2XDI1NVwzNVwzNzdcMzEwXDI0MVwzM1wzNzdcMjcyIgotICAiXDIyNlwzMVwzNzdcMjUyXDIxMVwyN1wzNzdcMjM0flwyNVwzNzdcMjE2clwyM1wzNzdcMjExblwyMlwzNzdcMjExblwyMiIKLSAgIlwzNzdcMjExblwyMlwzNzdcMjExblwyMlwzNzdcMjIzd1wyNFwzNzd6Y1wyMVwzNzc7MFwxMFwzNzdWVlZcMzY2Z2dnIgotICAiXDM3NzMzM1wzNzdcMFwwXDBRXDBcMFwwXDIwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzMzVcMzEzXDI0NFwzNFwzNzciCi0gICJcMzUwXDMxMV1cMzc3XDM0M1wyNzU4XDM3N1wzMTdcMjQ3XDM0XDM3N1wzMDFcMjM0XDMyXDM3N1wyNjNcMjIwXDMwXDM3NyIKLSAgIlwyNDVcMjA1XDI2XDM3N1wyMjd5XDI0XDM3N1wyMTFuXDIyXDM3N1wyMTFuXDIyXDM3N1wyMTFuXDIyXDM3N1wyMTFuIgotICAiXDIyXDM3N1wyMTFuXDIyXDM3N1wyMzB7XDI1XDM3N3NdXDIwXDM3N0k7XDEyXDM3N0hISFwzNzdcMzQ0XDI3N1w3N1wzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwY1wwXDBcMFwyMVwwXDBcMFwwXDBcMFwwIVwwXDBcMFwzNzdcMzUyXDMxNmtcMzc3XDM0NyIKLSAgIlwzMDZSXDM3N1wzMzdcMjY0XDM2XDM3N1wzMTJcMjQzXDMzXDM3N1wyNzNcMjI3XDMyXDM3N1wyNTVcMjE0XDMwXDM3NyIKLSAgIlwyMzZcMTc3XDI1XDM3N1wyMjB0XDIzXDM3N1wyMTFuXDIyXDM3N1wyMTFuXDIyXDM3N1wyMTFuXDIyXDM3N1wyMTFuIgotICAiXDIyXDM3N1wyMTZyXDIzXDM3N1wyMDNqXDIyXDM3Nz0xXDEwXDM3N2dnZ1wzNzdubm5cMzc3emNcMjFcMzc3XDBcMFwwIgotICAiXDM3M1wwXDBcMFJcMFwwXDBcMjVcMFwwXDBcMFwwXDBcMFwyNDVcMzA2XDI0MFwzM1wzNzdcMzUxXDMxM2JcMzc3XDM0MiIKLSAgIlwyNzMzXDM3N1wzMjRcMjUzXDM1XDM3N1wzMDZcMjQwXDMzXDM3N1wyNjZcMjIzXDMxXDM3N1wyNTBcMjEwXDI3XDM3NyIKLSAgIlwyMzJ8XDI1XDM3N1wyMTRxXDIzXDM3N1wyMTFuXDIyXDM3N1wyMTFuXDIyXDM3N1wyMTFuXDIyXDM3N1wyMTFuXDIyIgotICAiXDM3N1wyMzJ8XDI1XDM3N25ZXDE3XDM3N00+XDEyXDM3N1hYWFwzNzdcMzQ0XDI3NjtcMzc3XDI1XDIxXDNcMzcyXDAiCi0gICJcMFwwXDIzNFwwXDBcMElcMFwwXDBcMTdcMFwwXDBcMTNcMFwwXDBcMzc3XDMyNlwyNjZEXDMzN1wzNDdcMzA3WFwzNzciCi0gICJcMzQxXDI3MCpcMzc3XDMxNVwyNDVcMzRcMzc3XDI3N1wyMzJcMzJcMzc3XDI2MVwyMTdcMzBcMzc3XDI0M1wyMDNcMjYiCi0gICJcMzc3XDIyNXhcMjRcMzc3XDIxMW5cMjJcMzc3XDIxMW5cMjJcMzc3XDIxMW5cMjJcMzc3XDIxMW5cMjJcMzc3XDIxMSIKLSAgIm5cMjJcMzc3XDIwNWtcMjJcMzc3QTRcMTBcMzc3S0tLXDM3N3R0dFwzNzdcMjM0XDE3N1wzMFwzNzBcMFwwXDBcMzY0IgotICAiXDBcMFwwVVwwXDBcMCtcMFwwXDBcN1wwXDBcMFwyMDZcMzE3XDI0N1wzNFwzNzdcMzYwXDMzNlwyMzZcMzc1XDM1NlwzMzAiCi0gICJcMjEzXDM3N1wzNTVcMzI0flwzNzdcMzU0XDMyMndcMzc3XDM1M1wzMTduXDM3N1wzNTJcMzE0Z1wzNzdcMzQ3XDMwNyIKLSAgIlhcMzc3XDM0M1wyNzU4XDM3N1wzNDNcMjc0NFwzNzdcMzQzXDI3NDRcMzc3XDM0M1wyNzQ0XDM3N1wzNDNcMjc0NFwzNzciCi0gICJcMzQxXDI2NyZcMzc3XDI2NFwyMjJcMzFcMzc3XkxcMTVcMzc3Xl5eXDM3N1wzNDRcMzAwQVwzNzdcMjVcMjFcM1wzNzIiCi0gICJcMFwwXDBcMjMzXDBcMFwwR1wwXDBcMFwyMVwwXDBcMFwxXDdcNlwxXDMzMVwzNTZcMzI2XDIwNVwzNzdsV1wxN1wzNzciCi0gICJgTlwxNVwzNzdgTlwxNVwzNzdgTlwxNVwzNzdgTlwxNVwzNzdgTlwxNVwzNzdgTlwxNVwzNzdgTlwxNVwzNzdgTlwxNSIKLSAgIlwzNzdgTlwxNVwzNzdgTlwxNVwzNzdgTlwxNVwzNzdgTlwxNVwzNzddS1wxNFwzNzdjY2NcMzc3eHh4XDM3N1wyNTBcMjEwIgotICAiXDI3XDM3N1wwXDBcMFwzNjVcMFwwXDBVXDBcMFwwKlwwXDBcMFw2XDBcMFwwXDBcMzJcMjVcM1wzNzdcMzQ0XDI3N1w3NyIKLSAgIlwzNzdzXVwyMFwzNzdfX19cMzczdHR0XDM3N1wyMjZcMjI2XDIyNlwzNzdcMjYxXDI2MVwyNjFcMzc3XDI1N1wyNTdcMjU3IgotICAiXDM3N1wzMDVcMzA1XDMwNVwzNzdcMzE2XDMxNlwzMTZcMzc3XDI3MlwyNzJcMjcyXDM3N1wzMDJcMzAyXDMwMlwzNzciCi0gICJcMzAzXDMwM1wzMDNcMzc3XDMxM1wzMTNcMzEzXDM3N1wzMjJcMzIyXDMyMlwzNzdcMzMyXDMzMlwzMzJcMzc3XDIyNSIKLSAgIlwyMjVcMjI1XDM3N1wzNDJcMjcyMVwzNzcsI1w2XDM3MVwwXDBcMFwyMzRcMFwwXDBIXDBcMFwwXDIyXDBcMFwwXDFcMCIKLSAgIlwwXDBcMFwyNlwyMlwzXDM3N1wzMzBcMjU2XDM1XDM3N1wyMzB7XDI1XDM3N35+flwzNzdcMzQ0XDM0NFwzNDRcMzc3IgotICAiXDM0NFwzNDRcMzQ0XDM3N1wzNDFcMzQxXDM0MVwzNzdcMzM3XDMzN1wzMzdcMzc3XDMzN1wzMzdcMzM3XDM3N1wzNjIiCi0gICJcMzYyXDM2MlwzNzdcMzc1XDM3NVwzNzVcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYzXDM2MyIKLSAgIlwzNjNcMzc3XDI1MFwyNTBcMjUwXDM3N1wyNjVcMjY1XDI2NVwzNzdtbW1cMzc3XDI1MFwyMTBcMjdcMzc3XDFcMVwwIgotICAiXDM3MFwwXDBcMFVcMFwwXDAqXDBcMFwwXDZcMFwwXDBcMFwwXDBcMFwwQTRcMTBcMzc3XDMxMFwyNDFcMzNcMzc3XDMzMCIKLSAgIlwyNTZcMzVcMzc3XDI3M1wyMjdcMzJcMzc3XDI0NVwyMDVcMjZcMzc3XDMzM1wzMzNcMzMzXDM3N1wzNTJcMzUyXDM1MiIKLSAgIlwzNzdcMzU3XDM1N1wzNTdcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzM2XDMzNlwzMzZcMzc3IgotICAiXDM0MVwzNDFcMzQxXDM3N1wzNDFcMzQxXDM0MVwzNzdcMzM3XDMzN1wzMzdcMzc3XDM0MlwzNDJcMzQyXDM3N3p6elwzNzciCi0gICJcMzQzXDI3NTpcMzc3LSVcN1wzNjdcMFwwXDBcMjM0XDBcMFwwSVwwXDBcMFwyMlwwXDBcMFwxXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMCIiOVwwXDBcMFwzNzdcMTNcMTBcMVwzNTR+ZVwyNVwzNjNcMjQzXDIwNiFcMzUxXDI2MFwyMjBcNDBcMzU3IgotICAiXDI3MlwyMjZcMzFcMzc3XDMwMVwyMzRcMzJcMzc3XDIyN1wyMjdcMjI3XDM3N1wzMzRcMzM0XDMzNFwzNzdcMzQ1XDM0NSIKLSAgIlwzNDVcMzc3XDM1M1wzNTNcMzUzXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcxXDM3MVwzNzFcMzc3XDIwNVwyMDVcMjA1IgotICAiXDM3N1wyNDZcMjQ2XDI0NlwzNzdcMzUwXDMxMFtcMzc3XDJcMlwwXDM3MFwwXDBcMFVcMFwwXDAqXDBcMFwwXDdcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCZcMFwwXDBlXDBcMFwwXDI3NlwwXDBcMFwzNDZcMFwwXDAiCi0gICJcMzYwXDBcMFwwXDM2M1wyMDJpXDI0XDM3MVwyMjR3XDI2XDM3MVwyNjJcMjIwXDM1XDM2N1wyNjZcMjI0XDM2XDM2NiIKLSAgIlwyNzVcMjMxXDMyXDM3N1wzNTVcMzI1XDIwMFwzNzdcMzQwXDM0MFwzNDBcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTBcMzEwIgotICAiW1wzNzcwJlw2XDM3M1wwXDBcMFwyMzRcMFwwXDBIXDBcMFwwXDIyXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFw2XDBcMFwwXDE3XDBcMFwwXDM0XDBcMFwwIiI0XDBcMFwwQ1wwXDBcMGdcMFwwXDBcMjUxIgotICAiXDBcMFwwXDM0NFwwXDBcMFwzNjFcMFwwXDBcMzU2aVVcMjFcMzY1XDIwN25cMjVcMzcxXDI0NVwyMDZcMzFcMzcyXDI1NyIKLSAgIlwyMTVcMzNcMzY3XDI1MFwyMTFcMzZcMzU3XDRcM1wwXDM2N1wwXDBcMFVcMFwwXDArXDBcMFwwXDdcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzXDBcMFwwXDEyXDBcMFwwIgotICAiXDE1XDBcMFwwXDIwXDBcMFwwXDMzXDBcMFwwIiIwXDBcMFwwQ1wwXDBcMF9cMFwwXDBcMjM1XDBcMFwwXDMyN1wwXDAiCi0gICJcMFwzNTZcMFwwXDBcMzU0XDBcMFwwXDM0N1wwXDBcMHtcMFwwXDBGXDBcMFwwXDIxXDBcMFwwXDFcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDNcMFwwXDBcMTBcMFwwXDBcMTVcMFwwXDBcMjBcMFwwXDBcMzBcMFwwXDAsXDBcMFwwXDc3IgotICAiXDBcMFwwSFwwXDBcMEhcMFwwXDBAXDBcMFwwXDM3XDBcMFwwXDVcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDdcMFwwXDBcMTNcMFwwXDBcMTZcMFwwIgotICAiXDBcMTZcMFwwXDBcMTRcMFwwXDBcNVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMCJ9OwotCi0KLS8qIEdka1BpeGJ1ZiBSR0JBIEMtU291cmNlIGltYWdlIGR1bXAgKi8KLQotI2lmZGVmIF9fU1VOUFJPX0MKLSNwcmFnbWEgYWxpZ24gNCAoc3RvY2tfbGluZV9pbikKLSNlbmRpZgotI2lmZGVmIF9fR05VQ19fCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX2xpbmVfaW5bXSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18gKDQpKSkgPSAKLSNlbHNlCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX2xpbmVfaW5bXSA9IAotI2VuZGlmCi17ICIiCi0gIC8qIFBpeGJ1ZiBtYWdpYyAoMHg0NzY0NmI1MCkgKi8KLSAgIkdka1AiCi0gIC8qIGxlbmd0aDogaGVhZGVyICgyNCkgKyBwaXhlbF9kYXRhICgyMzA0KSAqLwotICAiXDBcMFwxMVwzMCIKLSAgLyogcGl4ZGF0YV90eXBlICgweDEwMTAwMDIpICovCi0gICJcMVwxXDBcMiIKLSAgLyogcm93c3RyaWRlICg5NikgKi8KLSAgIlwwXDBcMGAiCi0gIC8qIHdpZHRoICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogaGVpZ2h0ICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogcGl4ZWxfZGF0YTogKi8KLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwLS4uXDI1NyMjI1wzNzdcMTBcMTBcMTB4XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDI1XDI1XDI1XDM3N1wzNDVcMzQ1XDM0NlwzNzcjIyNcMzc3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwZmZmXDMxNVwzNTZcMzU2XDM1NlwzNzdNTU1cMjE3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDJcMlwyXDMzN1wyNzdcMjc3XDI3N1wzNzdcM1wzXDNcMzI1XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzM1wwXDBcMGlcMFwwXDBzXDBcMFwwX1wwXDAiCi0gICJcMD1cMFwwXDAhXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMjEiCi0gICJcMjFcMjJcMzc3XDM1NFwzNTRcMzU1XDM3N1wyMlwyMlwyMlwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMGBcMFwwXDBcMjYyXDIxNlwyMTZcMjE2XDI2MFwyMTBcMjEwXDIxMCIKLSAgIlwyMzNUVFRcMjEwJCQkdlwwXDBcMGJcMFwwXDBGXDBcMFwwJlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDAkJCVcMjQzXDI3M1wyNzNcMjczXDM3N1wwXDBcME9cMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMjEybGxsXDMyNlwzMTZcMzE2XDMxNlwzMTFcMjQ1XDI0NVwyNDVcMjc0XDAiCi0gICJcMFwwXDI0MlwwXDBcMFwyMTRcMFwwXDB2XDBcMFwwVVwwXDBcMDtcMFwwXDArXDBcMFwwXCJcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzUyXDM1MlwzNTJcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMjMwbW1tXDM0N1wzMTZcMzE2XDMxNlwzNDVcMTBcMTBcMTAiCi0gICJcMzEzXDEwXDEwXDEwXDIzMVwwXDBcMEdcMFwwXDA9XDBcMFwwIiIxXDBcMFwwOlwwXDBcMCIiMlwwXDBcMCNcMFwwXDAiCi0gICJcMzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3UlJSXDM3N1wzMzJcMzMyXDMzNFwzNzc9PT1cMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM0M1wyNjVcMjY1XDI2NVwzNjNLSyIKLSAgIktcMzUxXDBcMFwwTVwwXDBcMFwyMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzMiCi0gICJcMFwwXDBcMzVcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wwXDBcMFwzNzdcMzczXDM3M1wzNzNcMzc3XDIzNFwyMzMiCi0gICJcMjM0XDM3N1wzMjRcMzI0XDMyNFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMjMxIgotICAiR0dHXDM2MVwyNDRcMjQ0XDI0NFwzNjVcMFwwXDBcMjQyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcM1wwXDBcMFwzMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDIyMVwyMjEiCi0gICJcMjIxXDM3Nz09PVwzNzc9PT1cMzc3XDM2XDM2XDM2XDM3N1w3N1w3N1w3N1wzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwzMzFfX19cMzY3IyMjXDM2MlwwXDBcMEJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wyMjEiCi0gICJcMjIxXDIyMVwzNzc9PT1cMzc3PT09XDM3N1wzNlwzNlwzNlwzNzdCQkJcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMzQyU1NTXDM1NVwwXDBcMFwzNTNcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3IgotICAiXDIyMVwyMjFcMjIxXDM3Nz09PVwzNzc9PT1cMzc3XDM2XDM2XDM2XDM3N0JCQlwzNzdcMFwwXDBcMzc3XDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwzMzBTU1NcMzUzXDBcMFwwXDM1NVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwzNzdcMjIxXDIyMVwyMjFcMzc3PT09XDM3Nz09PVwzNzdcMzZcMzZcMzZcMzc3QkJCXDM3N1wwXDBcMFwzNzdcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDI2MicnJ1wzMzJcIlwiXCJcMzY3XDBcMFwwPFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMzc3XDIyMVwyMjFcMjIxXDM3Nz09PVwzNzc9PT1cMzc3XDM2XDM2XDM2XDM3N0JCQlwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMERcMFwwXDBcMzE1VVVVXDM2MlwwXDBcMFwzMTNcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDM3N1wyMjFcMjIxXDIyMVwzNzc9PT1cMzc3PT09XDM3N1wzNlwzNlwzNlwzNzdFRUVcMzc3XDBcMFwwIgotICAiXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyNDFMTExcMzIyRkZGXDMzNlwwXDBcMFwyMzRcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwzNzdBQUFcMzc3ZGRkXDM3NyUlJVwzNzcsLCxcMzc3PDw8XDM3N1wwXDBcMFwzNzdcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzVcMFwwXDBcMjM2WFhYXDI1N0ZGRlwyNzNcMFwwXDBxXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMzc3XDI1XDI1XDI1XDM3N1w3XDdcN1wzNzcoKChcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiIjlcMFwwXDBcMjA1WlpaXDIzM1wwXDBcMFwyMzZcMFwwXDBiXDBcMCIKLSAgIlwwXCJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMzc3KysrXDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMEBcMFwwXDBjWFhYe1wwXDBcMHtcMFwwXDAiIjNcMFwwXDAlXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzMjQiCi0gICIrKytcMzI0XDBcMFwwXDMyNFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDAiIjdcMFwwXDBUXDBcMFwwX1wwXDBcMF5cMFwwXDAjXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyNTIrKytcMjUyXDBcMFwwXDI1MiIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMTNcMFwwXDBAXDBcMFwwRlwwXDBcMEpcMFwwXDAiIjJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDE3NysrK1wxNzdcMFwwXDBcMTc3XDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiIxIgotICAiXDBcMFwwOlw3XDdcN0BcMFwwXDAsXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFUrKytVXDBcMFwwVVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMjdcMFwwXDAvXDBcMFwwIiIyXDEwXDEwXDEwIiI1XDAiCi0gICJcMFwwK1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDAqKysrKlwwXDBcMCpcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwyM1wwXDBcMCIiMFwwXDBcMC1cMTRcMTRcMTQtXDBcMFwwK1wwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDAifTsKLQotCi0vKiBHZGtQaXhidWYgUkdCQSBDLVNvdXJjZSBpbWFnZSBkdW1wICovCi0KLSNpZmRlZiBfX1NVTlBST19DCi0jcHJhZ21hIGFsaWduIDQgKHN0b2NrX21haWwpCi0jZW5kaWYKLSNpZmRlZiBfX0dOVUNfXwotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19tYWlsW10gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fICg0KSkpID0gCi0jZWxzZQotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19tYWlsW10gPSAKLSNlbmRpZgoteyAiIgotICAvKiBQaXhidWYgbWFnaWMgKDB4NDc2NDZiNTApICovCi0gICJHZGtQIgotICAvKiBsZW5ndGg6IGhlYWRlciAoMjQpICsgcGl4ZWxfZGF0YSAoMjMwNCkgKi8KLSAgIlwwXDBcMTFcMzAiCi0gIC8qIHBpeGRhdGFfdHlwZSAoMHgxMDEwMDAyKSAqLwotICAiXDFcMVwwXDIiCi0gIC8qIHJvd3N0cmlkZSAoOTYpICovCi0gICJcMFwwXDBgIgotICAvKiB3aWR0aCAoMjQpICovCi0gICJcMFwwXDBcMzAiCi0gIC8qIGhlaWdodCAoMjQpICovCi0gICJcMFwwXDBcMzAiCi0gIC8qIHBpeGVsX2RhdGE6ICovCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwyXDBcMFwwXDIiCi0gICJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMCIKLSAgIlwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMVwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwZlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwbVwwIgotICAiXDBcMFwxMFwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDM3N1NTU1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NlwzNzZcMzc2XDM3NyIKLSAgIlwzNzVcMzc1XDM3NVwzNzdcMzc0XDM3NFwzNzRcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcwIgotICAiXDM3MFwzNzBcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NFwzNjQiCi0gICJcMzY0XDM3N1wzNDNcMzQzXDM0M1wzNzdTU1NcMzc3XDBcMFwwXDM3N1wwXDBcMFwzMVwwXDBcMFwxMFwwXDBcMFwxXDAiCi0gICJcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzU2XDM1NlwzNTZcMzc3T09PXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY1XDM2NSIKLSAgIlwzNjVcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MlwzNjJcMzYyIgotICAiXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNTdcMzU3XDM1N1wzNzciCi0gICJcMzU2XDM1NlwzNTZcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNDNcMzQzXDM0M1wzNzdPT09cMzc3XDI1NlwyNTZcMjU2XDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDAoXDBcMFwwXDE3XDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzQ0XDM0NFwzNDRcMzc3Q0NDXDM3N1wzNzVcMzc1XDM3NVwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2MlwzNjIiCi0gICJcMzYyXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNTdcMzU3XDM1NyIKLSAgIlwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzQzXDM0M1wzNDNcMzc3IgotICAiT09PXDM3N1wyNTRcMjU0XDI1NFwzNzdcMzEwXDMxMFwzMTBcMzc3XDBcMFwwXDM3N1wwXDBcMC1cMFwwXDBcMjFcMFwwIgotICAiXDBcMlwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzQ0XDM0NCIKLSAgIlwzNDRcMzc3T09PXDM3N1wzNzNcMzczXDM3M1wzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjBcMzYwIgotICAiXDM2MFwzNzdcMzU3XDM1N1wzNTdcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU1XDM1NVwzNTUiCi0gICJcMzc3XDM0M1wzNDNcMzQzXDM3N0NDQ1wzNzdcMjQwXDI0MFwyNDBcMzc3XDMyNFwzMjRcMzI0XDM3N1wzMTBcMzEwXDMxMCIKLSAgIlwzNzdcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMVwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3M1wzNzNcMzczXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzQ0XDM0NFwzNDRcMzc3Q0NDXDM3N1wzNzAiCi0gICJcMzcwXDM3MFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU1XDM1NSIKLSAgIlwzNTVcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNDNcMzQzXDM0M1wzNzdPT09cMzc3XDIyNVwyMjVcMjI1XDM3N1wzMjRcMzI0IgotICAiXDMyNFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDMxMFwzMTBcMzEwXDM3N1wwXDBcMFwzNzdcMFwwXDAtXDBcMFwwXDIxXDAiCi0gICJcMFwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NSIKLSAgIlwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzQ0XDM0NFwzNDRcMzc3Pj4+XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzU2IgotICAiXDM1NlwzNTZcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTRcMzU0XDM1NFwzNzdcMzQzXDM0M1wzNDNcMzc3TU1NXDM3N1wyMDEiCi0gICJcMjAxXDIwMVwzNzdcMzA2XDMwNlwzMDZcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzEwXDMxMCIKLSAgIlwzMTBcMzc3XDBcMFwwXDM3N1wwXDBcMC1cMFwwXDBcMjFcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzNcMzczXDM3M1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDQiCi0gICJcMzQ0XDM0NFwzNzdqampcMzc3Q0NDXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzU0XDM1NFwzNTRcMzc3XDM0M1wzNDNcMzQzIgotICAiXDM3N09PT1wzNzdqampcMzc3XDMwNlwzMDZcMzA2XDM3N1wzMDZcMzA2XDMwNlwzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NCIKLSAgIlwzNDRcMzQ0XDM3N1wzMTBcMzEwXDMxMFwzNzdcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMVwwXDBcMFwyXDBcMFwwIgotICAiXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzciCi0gICJcMzQ0XDM0NFwzNDRcMzc3Y2NjXDM3N1wzNzdcMzc3XDM3N1wzNzdcMjcxXDI3MVwyNzFcMzc3T09PXDM3N1wzNjBcMzYwIgotICAiXDM2MFwzNzdPT09cMzc3XDIyNVwyMjVcMjI1XDM3N1wzMDZcMzA2XDMwNlwzNzdzc3NcMzc3XDMwNlwzMDZcMzA2XDM3NyIKLSAgIlwzNjVcMzY1XDM2NVwzNzdcMzQ0XDM0NFwzNDRcMzc3XDMxMFwzMTBcMzEwXDM3N1wwXDBcMFwzNzdcMFwwXDAtXDBcMCIKLSAgIlwwXDIxXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzczXDM3M1wzNzNcMzc3IgotICAiXDM0NFwzNDRcMzQ0XDM3N2NjY1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzciCi0gICJcMzI0XDMyNFwzMjRcMzc3T09PXDM3N1wyNTRcMjU0XDI1NFwzNzdcMzA2XDMwNlwzMDZcMzc3XDM0NFwzNDRcMzQ0XDM3NyIKLSAgIlwzNDRcMzQ0XDM0NFwzNzd8fHxcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzEwXDMxMFwzMTBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMC1cMFwwXDBcMjFcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNDRcMzQ0XDM0NFwzNzdzc3NcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NSIKLSAgIlwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0IgotICAiXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzciCi0gICJ8fHxcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzMTBcMzEwXDMxMFwzNzdcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMVwwXDAiCi0gICJcMFwyXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3fHx8XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NCIKLSAgIlwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0IgotICAiXDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzd8fHxcMzc3XDMxMFwzMTAiCi0gICJcMzEwXDM3N1wwXDBcMFwzNzdcMFwwXDAtXDBcMFwwXDIxXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3NyIKLSAgInNzc1wzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3IgotICAiXDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzQiCi0gICJcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NCIKLSAgIlwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzdjY2NcMzc3XDBcMFwwXDM3N1wwXDBcMC1cMFwwIgotICAiXDBcMjFcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDJcMFwwXDBtXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMjA3XDBcMFwwKFwwXDBcMFwxN1wwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwxMFwwXDBcMFwzMSIKLSAgIlwwXDBcMChcMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMCIKLSAgIi1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwXDAoXDBcMFwwXDMxXDBcMFwwXDEwIgotICAiXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMTBcMFwwXDBcMTZcMFwwXDBcMjFcMFwwXDBcMjEiCi0gICJcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDAiCi0gICJcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMTZcMFwwXDBcMTBcMCIKLSAgIlwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcMlwwXDBcMFwyXDBcMFwwIgotICAiXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDAiCi0gICJcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDFcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja19tYWlsX2NvbXBvc2UpCi0jZW5kaWYKLSNpZmRlZiBfX0dOVUNfXwotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19tYWlsX2NvbXBvc2VbXSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18gKDQpKSkgPSAKLSNlbHNlCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX21haWxfY29tcG9zZVtdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDIzMDQpICovCi0gICJcMFwwXDExXDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDk2KSAqLwotICAiXDBcMFwwYCIKLSAgLyogd2lkdGggKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBoZWlnaHQgKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMCIKLSAgIlwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wzMjFcMjU3IgotICAiYVwzNzdcMzYxXDM0M1wyNTRcMzc3XDM3M1wyNTFcMTdcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwVlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDI2NVwyNjUiCi0gICJcMjY1XDM3N1wyNDBrXDExXDM3N1wzNjFcMzQzXDI1NFwzNzdcMzczXDI1MVwxN1wzNzdcMjAxYFwwXDM3N1wwXDBcMCIKLSAgIlwzNzdcMzQwXDM0MFwzNDBcMzc3XDMwMVwzMDFcMzAxXDM3N1wwXDBcMFwzNzdcMFwwXDBEXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjRcMzY0XDM2NFwzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzVcMzc1XDM3NVwzNzdcMzc1XDM3NVwzNzVcMzc3XDBcMFwwXDM3N1wzNDZcMzAzcFwzNzdcMzYxXDMyM1wyMDdcMzc3IgotICAiXDMyNVwyMTdcMTRcMzc3XDBcMFwwXDM3N1wyNjJcMjYyXDI2MlwzNzdcMzAzXDMwM1wzMDNcMzc3XDM3M1wzNzNcMzczIgotICAiXDM3N1wyNTBcMjUwXDI1MFwzNzdcMFwwXDBcMzc3XDBcMFwwVlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzVcMzc1XDM3NVwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1XDM3N1wyNjNcMjYzIgotICAiXDI2M1wzNzdcMjQwa1wxMVwzNzdcMzYxXDM0M1wyNTRcMzc3XDM3M1wyNTFcMTdcMzc3XDIwMWBcMFwzNzdcMFwwXDAiCi0gICJcMzc3XDM3MlwzNzJcMzcyXDM3N1wyNTVcMjU1XDI1NVwzNzd2dnZcMzc3XV1dXDM3N0BAQFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY2XDM2NlwzNjZcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzNcMzczXDM3M1wzNzdcMzczXDM3M1wzNzNcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzNcMzczIgotICAiXDM3M1wzNzdcMzcwXDM3MFwzNzBcMzc3XDBcMFwwXDM3N1wzNDZcMzAzcFwzNzdcMzYxXDMyMH5cMzc3XDMyNVwyMTciCi0gICJcMTRcMzc3XDBcMFwwXDM3N1wyNTRcMjU0XDI1NFwzNzdcMzcwXDM3MFwzNjZcMzc3XDM0MlwzNDJcMzQyXDM3N1wyMDUiCi0gICJcMjA1XDIwNVwzNzdLS0lcMzc3XDI2XDI2XDI2XDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjRcMzY0XDM2NFwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1IgotICAiXDM3N1wzNzNcMzczXDM3M1wzNzdcMzczXDM3M1wzNzNcMzc3XDM3M1wzNzNcMzcyXDM3N319fVwzNzdcMjQwa1wxMVwzNzciCi0gICJcMzYxXDM0M1wyNTRcMzc3XDM3M1wyNTFcMTdcMzc3XDIwMWBcMFwzNzdcMFwwXDBcMzc3XDM2NFwzNjRcMzY0XDM3NyIKLSAgIlwzNjJcMzYyXDM2MlwzNzdcMzYwXDM2MFwzNjBcMzc3XDM1N1wzNTdcMzU3XDM3N1wzMjVcMzI1XDMyNVwzNzdcMjU1IgotICAiXDI1NVwyNTVcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NlwzNjZcMzY2XDM3NyIKLSAgIlwzNjZcMzY2XDM2M1wzNzdcMzYzXDM2M1wzNjNcMzc3XDBcMFwwXDM3N1wzNDZcMzAzcFwzNzdcMzYxXDMyMH5cMzc3IgotICAiXDMyNVwyMTdcMTRcMzc3XDBcMFwwXDM3N1wyMDdcMjA3XDIwNlwzNzdcMzQ1XDM0NVwzNDVcMzc3XDM0MlwzNDJcMzQyIgotICAiXDM3N1wzMzdcMzM3XDMzN1wzNzdcMzUzXDM1M1wzNTNcMzc3XDM0MlwzNDJcMzQyXDM3N1wzMDFcMzAxXDMwMVwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYwXDM2MCIKLSAgIlwzNjBcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MFwzNzBcMzY2IgotICAiXDM3N1wyNTZcMjU2XDI1NlwzNzd7U1w3XDM3N1wzNjFcMzQzXDI1NFwzNzdcMzczXDI1MVwxN1wzNzdcMjAxYFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1M1wzNTNcMzUzXDM3N1wzNTNcMzUzXDM1MVwzNzdcMzUxXDM1MVwzNDciCi0gICJcMzc3XDM1MVwzNTFcMzQ3XDM3N1wzNDBcMzQwXDMzNlwzNzdcMjc3XDI3N1wyNzdcMzc3XDBcMFwwXDM3N1wwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNjNcMzYzIgotICAiXDM2M1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzU1XDM3N1wzNTVcMzU1XDM1NVwzNzdcMFwwXDBcMzc3XDM0NiIKLSAgIlwzMDNwXDM3N1wzNjFcMzIyXDIwNFwzNzdcMzEyXDIwN1wxM1wzNzdcMFwwXDBcMzc3XDIzNlwyMzZcMjM0XDM3N1wzMzQiCi0gICJcMzM0XDMzMVwzNzdcMzMxXDMzMVwzMzFcMzc3XDMzMVwzMzFcMzI2XDM3N1wzMjZcMzI2XDMyNFwzNzdcMzQ1XDM0NSIKLSAgIlwzNDRcMzc3XDMzMVwzMzFcMzI3XDM3N1wyNzJcMjcyXDI3MlwzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzU1XDM1NVwzNTVcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjQiCi0gICJcMzY0XDM2NFwzNzdcMzYyXDM2MlwzNjJcMzc3XDI1MlwyNTJcMjUyXDM3N1wyNDBrXDExXDM3N1wzNjFcMzQzXDI1NCIKLSAgIlwzNzdcMzczXDI1MVwxN1wzNzdcMjAxYFwwXDM3N1wwXDBcMFwzNzdcMzQ3XDM0N1wzNDVcMzc3XDM0NVwzNDVcMzQ0IgotICAiXDM3N1wzNDVcMzQ1XDM0NFwzNzdcMzQ0XDM0NFwzNDJcMzc3XDM0MFwzNDBcMzM2XDM3N1wzNDJcMzQyXDM0MFwzNzciCi0gICJcMzMxXDMzMVwzMjdcMzc3XDI3MlwyNzJcMjcyXDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNTNcMzUzXDM1M1wzNzdcMzU2XDM1NlwzNTRcMzc3XDM0N1wzNDdcMzQ1IgotICAiXDM3N1wzNDVcMzQ1XDM0NVwzNzdcMFwwXDBcMzc3XDM0NlwzMDNwXDM3N1wzNjFcMzIyXDIwNFwzNzdcMzEyXDIwN1wxMyIKLSAgIlwzNzdcMFwwXDBcMzc3XDIyN1wyMjdcMjI2XDM3N1wzMjRcMzI0XDMyMVwzNzdcMzQyXDM0MlwzNDBcMzc3XDM0MFwzNDAiCi0gICJcMzM2XDM3N1wzMzZcMzM2XDMzNFwzNzdcMzM2XDMzNlwzMzNcMzc3XDMzNlwzMzZcMzM0XDM3N1wzMzFcMzMxXDMyNyIKLSAgIlwzNzdcMjc1XDI3NVwyNzRcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM0N1wzNDdcMzQ3XDM3N1wzNTdcMzU3XDM1NVwzNzdcMzUzXDM1M1wzNTNcMzc3XDI0NlwyNDYiCi0gICJcMjQ1XDM3N1wyNzJ8XDEyXDM3N1wzNzNcMjUxXDE3XDM3N1wzNzNcMjUxXDE3XDM3N3pbXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwzNDJcMzQyXDM0MFwzNzdcMzQwXDM0MFwzMzZcMzc3XDMzNlwzMzZcMzM0XDM3N1wzMzZcMzM2XDMzM1wzNzdcMzM0IgotICAiXDMzNFwzMzFcMzc3XDMzM1wzMzNcMzMxXDM3N1wzMzNcMzMzXDMzMVwzNzdcMzI1XDMyNVwzMjNcMzc3XDI3NFwyNzQiCi0gICJcMjc0XDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNDVcMzQ1XDM0NVwzNzdcMzQzXDM0M1wzNDNcMzc3XDMzMVwzMzFcMzMxXDM3N1wwXDBcMFwzNzdcMzYyXDM0NlwyNjYiCi0gICJcMzc3e3t7XDM3N3BLXDVcMzc3XDBcMFwwXDM3N2dnZFwzNzdcMzEzXDMxM1wzMDdcMzc3XDMxMVwzMTFcMzA3XDM3NyIKLSAgIlwzMzRcMzM0XDMzMVwzNzdcMzMzXDMzM1wzMjdcMzc3XDMzMVwzMzFcMzI3XDM3N1wzMjdcMzI3XDMyNVwzNzdcMzMxIgotICAiXDMzMVwzMjdcMzc3XDMyN1wzMjdcMzIzXDM3N1wyNjRcMjY0XDI2NFwzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzQyXDM0MlwzNDBcMzc3XDM0NVwzNDVcMzQ0XDM3NyIKLSAgIlwzNDRcMzQ0XDM0NFwzNzdcMFwwXDBcMzc3XDMzM1wzMjVcMzAxXDM3N35vV1wzNzd1WFwwXDM3N1wwXDBcMFwzNzdcMzM0IgotICAiXDMzNFwzMzFcMzc3XDMzM1wzMzNcMzMxXDM3N1wzMzNcMzMzXDMyN1wzNzdcMzMxXDMzMVwzMjVcMzc3XDMyN1wzMjciCi0gICJcMzIzXDM3N1wzMjVcMzI1XDMyM1wzNzdcMzI1XDMyNVwzMjFcMzc3XDMyN1wzMjdcMzIzXDM3N1wzMjBcMzIwXDMxNiIKLSAgIlwzNzdcMjcyXDI3MlwyNzBcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDMzNlwzMzZcMzM0XDM3N1wzMzVcMzM1XDMzM1wzNzdcMzIxXDMyMVwzMTdcMzc3XDE2XDE2XDE2IgotICAiXDM3N1NTU1wzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wyMTVcMjE1XDIxM1wzNzdcMzA0XDMwNFwzMDFcMzc3XDMwNFwzMDQiCi0gICJcMjc3XDM3N1wzMDFcMzAxXDI3NFwzNzdcMzI1XDMyNVwzMjFcMzc3XDMyNVwzMjVcMzIxXDM3N1wzMjNcMzIzXDMyMCIKLSAgIlwzNzdcMzIxXDMyMVwzMjBcMzc3XDMyM1wzMjNcMzIwXDM3N1wzMjBcMzIwXDMxNlwzNzdcMjcyXDI3MlwyNzBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDMzNFwzMzQiCi0gICJcMzMzXDM3N1wzNDBcMzQwXDMzNFwzNzdcMzM1XDMzNVwzMzNcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMjExXDIxMSIKLSAgIlwyMDdcMzc3XDMxMVwzMTFcMzA2XDM3N1wzMTVcMzE1XDMxMlwzNzdcMzIwXDMyMFwzMTVcMzc3XDMxNlwzMTZcMzEzIgotICAiXDM3N1wzMjBcMzIwXDMxNVwzNzdcMzIwXDMyMFwzMTVcMzc3XDMyMFwzMjBcMzE1XDM3N1wzMjBcMzIwXDMxNVwzNzciCi0gICJcMzE3XDMxN1wzMTRcMzc3XDMyMFwzMjBcMzE1XDM3N1wzMjBcMzIwXDMxNFwzNzdcMjY2XDI2NlwyNjZcMzc3XDBcMCIKLSAgIlwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDMzM1wzMzNcMzMxIgotICAiXDM3N1wzMjRcMzI0XDMyMFwzNzdcMzAzXDMwM1wzMDBcMzc3W1tbXDM3N1wyMjFcMjIxXDIxNVwzNzdcMjIxXDIyMVwyMTciCi0gICJcMzc3XDIzN1wyMzdcMjM1XDM3N1wyNTdcMjU3XDI1NFwzNzdcMjcxXDI3MVwyNjZcMzc3XDI3NlwyNzZcMjczXDM3NyIKLSAgIlwzMDNcMzAzXDMwMFwzNzdcMzA1XDMwNVwzMDJcMzc3XDMxMFwzMTBcMzA1XDM3N1wzMTJcMzEyXDMwN1wzNzdcMzEzIgotICAiXDMxM1wzMTBcMzc3XDMxNFwzMTRcMzExXDM3N1wzMTRcMzE0XDMxMFwzNzdcMjYyXDI2MlwyNjJcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDMyMlwzMjJcMzIwXDM3N1wzMjIiCi0gICJcMzIyXDMxN1wzNzdcMzE3XDMxN1wzMTRcMzc3XDI3N1wyNzdcMjc1XDM3N1wyMzdcMjM3XDIzNFwzNzdcMjEwXDIxMCIKLSAgIlwyMDZcMzc3XDIwN1wyMDdcMjA1XDM3N1wyMTRcMjE0XDIxMlwzNzdcMjI1XDIyNVwyMjNcMzc3XDIzNFwyMzRcMjMyIgotICAiXDM3N1wyNTBcMjUwXDI0NVwzNzdcMjYxXDI2MVwyNTZcMzc3XDI2NVwyNjVcMjYzXDM3N1wyNzNcMjczXDI3MFwzNzciCi0gICJcMjc2XDI3NlwyNzNcMzc3XDI3N1wyNzdcMjc0XDM3N1wzMDJcMzAyXDI3NlwzNzdcMjYyXDI2MlwyNjJcMzc3XDBcMCIKLSAgIlwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDMyMVwzMjFcMzE2IgotICAiXDM3N1wzMjBcMzIwXDMxNFwzNzdcMzE0XDMxNFwzMTFcMzc3XDMxN1wzMTdcMzE0XDM3N1wzMDNcMzAzXDMwMFwzNzciCi0gICJcMjU2XDI1NlwyNTNcMzc3XDIzNVwyMzVcMjMyXDM3N1wyMjdcMjI3XDIyNFwzNzdcMjI3XDIyN1wyMjRcMzc3XDIyNCIKLSAgIlwyMjRcMjIxXDM3N1wyMzJcMjMyXDIyN1wzNzdcMjM3XDIzN1wyMzRcMzc3XDI0M1wyNDNcMjQwXDM3N1wyNTBcMjUwIgotICAiXDI0NVwzNzdcMjUyXDI1MlwyNDdcMzc3XDI2MFwyNjBcMjU0XDM3N1wyNzBcMjcwXDI2NVwzNzdcMjYwXDI2MFwyNTYiCi0gICJcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDMyMiIKLSAgIlwzMjJcMzE3XDM3N1wzMjFcMzIxXDMxNlwzNzdcMzIxXDMyMVwzMTZcMzc3XDMyMVwzMjFcMzE2XDM3N1wzMTdcMzE3IgotICAiXDMxNVwzNzdcMzEzXDMxM1wzMTBcMzc3XDI3NlwyNzZcMjc0XDM3N1wyNjRcMjY0XDI2MFwzNzdcMjU0XDI1NFwyNTAiCi0gICJcMzc3XDI0NFwyNDRcMjQyXDM3N1wyNDBcMjQwXDIzNFwzNzdcMjQwXDI0MFwyMzRcMzc3XDI0NFwyNDRcMjQwXDM3NyIKLSAgIlwyNDRcMjQ0XDI0MlwzNzdcMjUwXDI1MFwyNDZcMzc3XDI1M1wyNTNcMjQ3XDM3N1wyNjJcMjYyXDI1NlwzNzdcMjQ0IgotICAiXDI0NFwyNDRcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDMyMVwzMjFcMzIwXDM3N1wzMjFcMzIxXDMxNlwzNzdcMzIwXDMyMFwzMTZcMzc3XDMxNlwzMTZcMzE0XDM3NyIKLSAgIlwzMTZcMzE2XDMxMlwzNzdcMzE2XDMxNlwzMTJcMzc3XDMxNFwzMTRcMzEwXDM3N1wzMDZcMzA2XDMwMlwzNzdcMjc0IgotICAiXDI3NFwyNzFcMzc3XDI2M1wyNjNcMjU3XDM3N1wyNjRcMjY0XDI2MFwzNzdcMjUzXDI1M1wyNTFcMzc3XDI0NlwyNDYiCi0gICJcMjQzXDM3N1wyNDBcMjQwXDIzNVwzNzdcMjQ2XDI0NlwyNDNcMzc3XDI1MlwyNTJcMjQ3XDM3N1wyNTRcMjU0XDI1MSIKLSAgIlwzNzdcMjQxXDI0MVwyNDFcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDI2MVwyNjFcMjU3XDM3N1wyNjRcMjY0XDI2M1wzNzdcMjY0XDI2NFwyNjFcMzc3XDI2NFwyNjQiCi0gICJcMjYxXDM3N1wyNjRcMjY0XDI2MVwzNzdcMjYzXDI2M1wyNjFcMzc3XDI2M1wyNjNcMjYxXDM3N1wyNjJcMjYyXDI1NiIKLSAgIlwzNzdcMjU2XDI1NlwyNTJcMzc3XDI0N1wyNDdcMjQ0XDM3N1wyNDJcMjQyXDI0MFwzNzdcMjQ1XDI0NVwyNDFcMzc3IgotICAiXDI0NVwyNDVcMjQxXDM3N1wyMzFcMjMxXDIyN1wzNzdcMjIyXDIyMlwyMjBcMzc3XDIyNFwyMjRcMjIwXDM3N1wyMzUiCi0gICJcMjM1XDIzM1wzNzdcMjA1XDIwNVwyMDNcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwclwwXDAiCi0gICJcMFwwIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja19tYWlsX2ZvcndhcmQpCi0jZW5kaWYKLSNpZmRlZiBfX0dOVUNfXwotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19tYWlsX2ZvcndhcmRbXSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18gKDQpKSkgPSAKLSNlbHNlCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX21haWxfZm9yd2FyZFtdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDIzMDQpICovCi0gICJcMFwwXDExXDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDk2KSAqLwotICAiXDBcMFwwYCIKLSAgLyogd2lkdGggKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBoZWlnaHQgKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxIgotICAiXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDAiCi0gICJcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMiIKLSAgIlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBmXDBcMFwwXDM3N1wwXDBcMFwzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBtXDBcMFwwXDEwXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcMzc3IgotICAiU1NTXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc2XDM3NlwzNzZcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzRcMzc0XDM3NFwzNzdcMzczXDM3M1wzNzNcMzc3XDM3MSIKLSAgIlwzNzFcMzcxXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjVcMzY1IgotICAiXDM2NVwzNzdcMzY0XDM2NFwzNjRcMzc3XDM0M1wzNDNcMzQzXDM3N1NTU1wzNzdcMFwwXDBcMzc3XDBcMFwwXDMxXDAiCi0gICJcMFwwXDEwXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNTZcMzU2XDM1NlwzNzdPT09cMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY0XDM2NFwzNjRcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjJcMzYyIgotICAiXDM2MlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYwXDM2MFwzNjAiCi0gICJcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU1XDM1NVwzNTVcMzc3XDM0M1wzNDNcMzQzXDM3NyIKLSAgIk9PT1wzNzdcMjU2XDI1NlwyNTZcMzc3XDBcMFwwXDM3N1wwXDBcMChcMFwwXDBcMTdcMFwwXDBcMlwwXDBcMFwwXDBcMCIKLSAgIlwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNDRcMzQ0XDM0NFwzNzdDQ0NcMzc3XDM3NVwzNzVcMzc1XDM3NyIKLSAgIlwzNjNcMzYzXDM2M1wzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYwIgotICAiXDM2MFwzNjBcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1NVwzNTUiCi0gICJcMzU1XDM3N1wzNDNcMzQzXDM0M1wzNzdPT09cMzc3XDI1NFwyNTRcMjU0XDM3N1wzMTBcMzEwXDMxMFwzNzdcMFwwXDAiCi0gICJcMzc3XDBcMFwwLVwwXDBcMFwyMVwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzdPT09cMzc3XDM3M1wzNzNcMzczXDM3N1wzNjFcMzYxXDM2MVwzNzciCi0gICJcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNTdcMzU3XDM1N1wzNzdcMzU2XDM1NlwzNTZcMzc3XDM1NSIKLSAgIlwzNTVcMzU1XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzQzXDM0M1wzNDNcMzc3Q0NDXDM3N1wyNDBcMjQwXDI0MFwzNzdcMzI0IgotICAiXDMyNFwzMjRcMzc3XDMxMFwzMTBcMzEwXDM3N1wwXDBcMFwzNzdcMFwwXDAtXDBcMFwwXDIxXDBcMFwwXDJcMFwwXDAiCi0gICJcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzczXDM3M1wzNzNcMzc3XDM2NVwzNjVcMzY1XDM3NyIKLSAgIlwzNDRcMzQ0XDM0NFwzNzdDQ0NcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzU3XDM1N1wzNTdcMzc3IgotICAiXDM1NlwzNTZcMzU2XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU0XDM1NFwzNTRcMzc3XDM0M1wzNDNcMzQzXDM3N09PT1wzNzciCi0gICJcMjI1XDIyNVwyMjVcMzc3XDMyNFwzMjRcMzI0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzEwXDMxMFwzMTBcMzc3XDBcMCIKLSAgIlwwXDM3N1wwXDBcMC1cMFwwXDBcMjFcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzciCi0gICI+Pj5cMzc3XDM2NVwzNjVcMzY1XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NFwzNTRcMzU0XDM3NyIKLSAgIlwzNDNcMzQzXDM0M1wzNzdNTU1cMzc3XDIwMVwyMDFcMjAxXDM3N1wzMDZcMzA2XDMwNlwzNzdcMzQ0XDM0NFwzNDRcMzc3IgotICAiXDM0NFwzNDRcMzQ0XDM3N1wzMTBcMzEwXDMxMFwzNzdcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMVwwXDBcMFwyXDAiCi0gICJcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3M1wzNzNcMzczXDM3N1wzNjVcMzY1XDM2NSIKLSAgIlwzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NFwzNDRcMzQ0XDM3N2pqalwzNzdDQ0NcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNTQiCi0gICJcMzU0XDM1NFwzNzdcMzQzXDM0M1wzNDNcMzc3T09PXDM3N2pqalwzNzdcMzA2XDMwNlwzMDZcMzc3XDMwNlwzMDZcMzA2IgotICAiXDM3N1wzNjVcMzY1XDM2NVwzNzdcMFwwXDBcMzc3XDMxMFwzMTBcMzEwXDM3N1wwXDBcMFwzNzdcMFwwXDAtXDBcMFwwIgotICAiXDIxXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY1XDM2NVwzNjVcMzc3IgotICAiXDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzdjY2NcMzc3XDM3N1wzNzdcMzc3XDM3N1wyNzFcMjcxXDI3MVwzNzciCi0gICJPT09cMzc3XDM2MFwzNjBcMzYwXDM3N09PT1wzNzdcMjI1XDIyNVwyMjVcMzc3XDMwNlwzMDZcMzA2XDM3N3Nzc1wzNzciCi0gICJcMzA2XDMwNlwzMDZcMzc3XDM2NVwzNjVcMzY1XDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMCIKLSAgIi1cMFwwXDBcMjFcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzNcMzczIgotICAiXDM3M1wzNzdcMzQ0XDM0NFwzNDRcMzc3Y2NjXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NFwzNDQiCi0gICJcMzQ0XDM3N1wzMjRcMzI0XDMyNFwzNzdPT09cMzc3XDI1NFwyNTRcMjU0XDM3N1wzMDZcMzA2XDMwNlwzNzdcMzQ0XDM0NCIKLSAgIlwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N3x8fFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDBcMFwwXDM3N1tcMjEwXDI2MlwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMVwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM0NFwzNDRcMzQ0XDM3N3Nzc1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1IgotICAiXDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDIzNlwyNzBcMzIxIgotICAiXDM3N1BcMjAwXDI1NVwzNzdcMFwwXDBcMzc3XDBcMFwwXDIxXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzd8fHxcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3IgotICAiXDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N1wwXDAiCi0gICJcMFwzNzdcMjY1XDMxMVwzMzRcMzc3XDI1N1wzMDVcMzMyXDM3N1wyNjJcMzA3XDMzM1wzNzdcMjY2XDMxMlwzMzVcMzc3IgotICAiXDI2NlwzMTJcMzM1XDM3N1wyNjZcMzEyXDMzNVwzNzdcMjQ0XDI3NVwzMjVcMzc3XDIzNFwyNjdcMzIxXDM3N1BcMjAwIgotICAiXDI1NVwzNzdcMTBcMTVcMjFcMzc3XDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N3Nzc1wzNzdcMjc0XDI3NCIKLSAgIlwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0IgotICAiXDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N1wwXDBcMFwzNzdcMjMzXDI2NiIKLSAgIlwzMjBcMzc3XDI0MFwyNzJcMzIzXDM3N1wyMzRcMjY3XDMyMVwzNzdcMjM0XDI2N1wzMjFcMzc3XDIzM1wyNjZcMzIwIgotICAiXDM3N1wyMzJcMjY1XDMxN1wzNzdcMjQwXDI3MlwzMjNcMzc3XDIzNFwyNjdcMzIxXDM3N1wyMjdcMjYzXDMxNlwzNzciCi0gICJfXDIxM1wyNjRcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDJcMFwwXDBtXDBcMFwwXDM3N1wwXDBcMFwzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wyMjFcMjYwXDMxNFwzNzdcMjM2XDI3MFwzMjFcMzc3XDIzMlwyNjVcMzE3XDM3N1wyMzJcMjY1XDMxNyIKLSAgIlwzNzdcMjMzXDI2NlwzMjBcMzc3XDIzNFwyNjdcMzIxXDM3N1wyMzRcMjY3XDMyMVwzNzdcMjM0XDI2N1wzMjFcMzc3IgotICAiXDI0MFwyNzJcMzIzXDM3N1wyMjVcMjYyXDMxNlwzNzdMeVwyNDNcMzc3XDBcMFwwXDM3N1wwXDBcMFwxXDBcMFwwXDEwIgotICAiXDBcMFwwXDMxXDBcMFwwKFwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwIgotICAiXDBcMzc3SXRcMjM0XDM3N1w3N2VcMjEwXDM3N1w3N2VcMjEwXDM3N1w3N2VcMjEwXDM3N1w3N2VcMjEwXDM3N1w3N2UiCi0gICJcMjEwXDM3N1w3N2VcMjEwXDM3N1w3N2VcMjEwXDM3N1w3N2VcMjEwXDM3NypDW1wzNzdcMFwwXDBcMzc3XDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDEwXDBcMFwwXDE2XDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDIxIgotICAiXDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDM3N0VvXDIyNlwzNzc3WXhcMzc3N1l4XDM3NzdZeFwzNzciCi0gICI3WXhcMzc3N1l4XDM3N1w3N2VcMjEwXDM3N1w3N2VcMjEwXDM3NypDW1wzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMCIKLSAgIlwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDc3ZVwyMTBcMzc3KkNbXDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDM3NypDW1wzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzciCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAifTsKLQotCi0vKiBHZGtQaXhidWYgUkdCQSBDLVNvdXJjZSBpbWFnZSBkdW1wICovCi0KLSNpZmRlZiBfX1NVTlBST19DCi0jcHJhZ21hIGFsaWduIDQgKHN0b2NrX21haWxfcmVjZWl2ZSkKLSNlbmRpZgotI2lmZGVmIF9fR05VQ19fCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX21haWxfcmVjZWl2ZVtdIF9fYXR0cmlidXRlX18gKChfX2FsaWduZWRfXyAoNCkpKSA9IAotI2Vsc2UKLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfbWFpbF9yZWNlaXZlW10gPSAKLSNlbmRpZgoteyAiIgotICAvKiBQaXhidWYgbWFnaWMgKDB4NDc2NDZiNTApICovCi0gICJHZGtQIgotICAvKiBsZW5ndGg6IGhlYWRlciAoMjQpICsgcGl4ZWxfZGF0YSAoMjMwNCkgKi8KLSAgIlwwXDBcMTFcMzAiCi0gIC8qIHBpeGRhdGFfdHlwZSAoMHgxMDEwMDAyKSAqLwotICAiXDFcMVwwXDIiCi0gIC8qIHJvd3N0cmlkZSAoOTYpICovCi0gICJcMFwwXDBgIgotICAvKiB3aWR0aCAoMjQpICovCi0gICJcMFwwXDBcMzAiCi0gIC8qIGhlaWdodCAoMjQpICovCi0gICJcMFwwXDBcMzAiCi0gIC8qIHBpeGVsX2RhdGE6ICovCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMzc3XDMxMVwzMzNcMzA3XDM3N1wzMTFcMzMyXDMwN1wzNzdcMzExXDMzMlwzMDdcMzc3XDIwMVwyMzJ5XDM3NyIKLSAgIlh1TVwzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMjYyXDMxMVwyNjBcMzc3XDI1MVwzMDRcMjQ3XDM3N1wyNTVcMzEwXDI1MyIKLSAgIlwzNzdbeVBcMzc3TWdEXDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wyNzNcMzIwXDI3MVwzNzdcMjU2XDMwN1wyNTRcMzc3IgotICAiXDI1NlwzMDdcMjU0XDM3N1t5UFwzNzdNZ0RcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzI0XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDI3MVwzMTZcMjY3IgotICAiXDM3N1wyNTZcMzA3XDI1NFwzNzdcMjUyXDMwN1wyNTBcMzc3W3lQXDM3N01nRFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wzMTVcMzM2XDMxMyIKLSAgIlwzNzdcMjYxXDMxMVwyNjBcMzc3XDI2NVwzMTZcMjY1XDM3N1wyNjBcMzExXDI2MFwzNzdcMjU1XDMwNlwyNTNcMzc3IgotICAiW3lQXDM3N1t5UFwzNzdbeVBcMzc3TWhEXDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDJcMCIKLSAgIlwwXDBcMlwwXDBcMFwyXDBcMFwwXDM3N1wzMTVcMzM2XDMxM1wzNzdcMjY0XDMxM1wyNjJcMzc3XDI2M1wzMTJcMjYxIgotICAiXDM3N1wyNTVcMzA2XDI1M1wzNzdbeVBcMzc3W3lQXDM3N01oRFwzNzdcMFwwXDBcMzc3XDBcMFwwXDJcMFwwXDBcMlwwIgotICAiXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJmXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDMxNVwzMzYiCi0gICJcMzEzXDM3N1wyNTJcMzA3XDI1MFwzNzdcMjYwXDMwN1wyNTZcMzc3W3lQXDM3N01oRFwzNzdcMFwwXDBcMzc3XDBcMCIKLSAgIlwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBtXDBcMFwwXDEwXDBcMFwwIgotICAiXDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcMzc3U1NTXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc2XDM3NlwzNzZcMzc3XDBcMFwwXDM3N1wzMTVcMzM2IgotICAiXDMxM1wzNzdcMjU1XDMxMFwyNTNcMzc3VHFKXDM3N1wwXDBcMFwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2NlwzNjZcMzY2IgotICAiXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY0XDM2NFwzNjRcMzc3XDM0M1wzNDNcMzQzXDM3N1NTU1wzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDMxXDBcMFwwXDEwXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNTZcMzU2XDM1NlwzNzciCi0gICJPT09cMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY0XDM2NFwzNjRcMzc3XDM2M1wzNjNcMzYzXDM3NyIKLSAgIlwzNjJcMzYyXDM2MlwzNzdcMFwwXDBcMzc3XDMxN1wzMzdcMzE0XDM3N1wwXDBcMFwzNzdcMzYwXDM2MFwzNjBcMzc3IgotICAiXDM1N1wzNTdcMzU3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU1XDM1NVwzNTVcMzc3XDM0M1wzNDNcMzQzXDM3N09PT1wzNzciCi0gICJcMjU2XDI1NlwyNTZcMzc3XDBcMFwwXDM3N1wwXDBcMChcMFwwXDBcMTdcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDJcMCIKLSAgIlwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNDRcMzQ0XDM0NFwzNzdDQ0NcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNjNcMzYzIgotICAiXDM2M1wzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjFcMzYxXDM2MVwzNzctLS1cMzc3XDM1N1wzNTciCi0gICJcMzU3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNDNcMzQzXDM0MyIKLSAgIlwzNzdPT09cMzc3XDI1NFwyNTRcMjU0XDM3N1wzMTBcMzEwXDMxMFwzNzdcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMSIKLSAgIlwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDQiCi0gICJcMzQ0XDM0NFwzNzdPT09cMzc3XDM3M1wzNzNcMzczXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MCIKLSAgIlwzNjBcMzYwXDM3N1wzNTdcMzU3XDM1N1wzNzdcMzU2XDM1NlwzNTZcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTVcMzU1IgotICAiXDM1NVwzNzdcMzQzXDM0M1wzNDNcMzc3Q0NDXDM3N1wyNDBcMjQwXDI0MFwzNzdcMzI0XDMyNFwzMjRcMzc3XDMxMFwzMTAiCi0gICJcMzEwXDM3N1wwXDBcMFwzNzdcMFwwXDAtXDBcMFwwXDIxXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzczXDM3M1wzNzNcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzdDQ0NcMzc3IgotICAiXDM3MFwzNzBcMzcwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzU3XDM1N1wzNTdcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTUiCi0gICJcMzU1XDM1NVwzNzdcMzU0XDM1NFwzNTRcMzc3XDM0M1wzNDNcMzQzXDM3N09PT1wzNzdcMjI1XDIyNVwyMjVcMzc3XDMyNCIKLSAgIlwzMjRcMzI0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzEwXDMxMFwzMTBcMzc3XDBcMFwwXDM3N1wwXDBcMC1cMFwwXDBcMjEiCi0gICJcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1IgotICAiXDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzc+Pj5cMzc3XDM2NVwzNjVcMzY1XDM3N1wzNTYiCi0gICJcMzU2XDM1NlwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNDNcMzQzXDM0M1wzNzdNTU1cMzc3XDIwMSIKLSAgIlwyMDFcMjAxXDM3N1wzMDZcMzA2XDMwNlwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzMTBcMzEwIgotICAiXDMxMFwzNzdcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMVwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3M1wzNzNcMzczXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NCIKLSAgIlwzNDRcMzQ0XDM3N2pqalwzNzdDQ0NcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNTRcMzU0XDM1NFwzNzdcMzQzXDM0M1wzNDMiCi0gICJcMzc3T09PXDM3N2pqalwzNzdcMzA2XDMwNlwzMDZcMzc3XDMwNlwzMDZcMzA2XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzQ0IgotICAiXDM0NFwzNDRcMzc3XDMxMFwzMTBcMzEwXDM3N1wwXDBcMFwzNzdcMFwwXDAtXDBcMFwwXDIxXDBcMFwwXDJcMFwwXDAiCi0gICJcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3NyIKLSAgIlwzNDRcMzQ0XDM0NFwzNzdjY2NcMzc3XDM3N1wzNzdcMzc3XDM3N1wyNzFcMjcxXDI3MVwzNzdPT09cMzc3XDM2MFwzNjAiCi0gICJcMzYwXDM3N09PT1wzNzdcMjI1XDIyNVwyMjVcMzc3XDMwNlwzMDZcMzA2XDM3N3Nzc1wzNzdcMzA2XDMwNlwzMDZcMzc3IgotICAiXDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzEwXDMxMFwzMTBcMzc3XDBcMFwwXDM3N1wwXDBcMC1cMFwwIgotICAiXDBcMjFcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzNcMzczXDM3M1wzNzciCi0gICJcMzQ0XDM0NFwzNDRcMzc3Y2NjXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NFwzNDRcMzQ0XDM3NyIKLSAgIlwzMjRcMzI0XDMyNFwzNzdPT09cMzc3XDI1NFwyNTRcMjU0XDM3N1wzMDZcMzA2XDMwNlwzNzdcMzQ0XDM0NFwzNDRcMzc3IgotICAiXDM0NFwzNDRcMzQ0XDM3N3x8fFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzMTBcMzEwXDMxMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMVwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM0NFwzNDRcMzQ0XDM3N3Nzc1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1IgotICAiXDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDQiCi0gICJcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NFwzNDRcMzQ0XDM3NyIKLSAgInx8fFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDMxMFwzMTBcMzEwXDM3N1wwXDBcMFwzNzdcMFwwXDAtXDBcMFwwXDIxXDBcMCIKLSAgIlwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzd8fHxcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0IgotICAiXDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDQiCi0gICJcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N3x8fFwzNzdcMzEwXDMxMCIKLSAgIlwzMTBcMzc3XDBcMFwwXDM3N1wwXDBcMC1cMFwwXDBcMjFcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3IgotICAic3NzXDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzciCi0gICJcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NCIKLSAgIlwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0IgotICAiXDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N2NjY1wzNzdcMFwwXDBcMzc3XDBcMFwwLVwwXDAiCi0gICJcMFwyMVwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMlwwXDBcMG1cMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwyMDdcMFwwXDAoXDBcMFwwXDE3XDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDEwXDBcMFwwXDMxIgotICAiXDBcMFwwKFwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwIgotICAiLVwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMChcMFwwXDBcMzFcMFwwXDBcMTAiCi0gICJcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwxMFwwXDBcMFwxNlwwXDBcMFwyMVwwXDBcMFwyMSIKLSAgIlwwXDBcMFwyMVwwXDBcMFwyMVwwXDBcMFwyMVwwXDBcMFwyMVwwXDBcMFwyMVwwXDBcMFwyMVwwXDBcMFwyMVwwXDBcMCIKLSAgIlwyMVwwXDBcMFwyMVwwXDBcMFwyMVwwXDBcMFwyMVwwXDBcMFwyMVwwXDBcMFwyMVwwXDBcMFwxNlwwXDBcMFwxMFwwIgotICAiXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwyXDBcMFwwXDJcMFwwXDAiCi0gICJcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMCIKLSAgIlwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMVwwXDBcMFwwXDBcMFwwIgotICAiXDAifTsKLQotCi0vKiBHZGtQaXhidWYgUkdCQSBDLVNvdXJjZSBpbWFnZSBkdW1wICovCi0KLSNpZmRlZiBfX1NVTlBST19DCi0jcHJhZ21hIGFsaWduIDQgKHN0b2NrX21haWxfcmVwbHkpCi0jZW5kaWYKLSNpZmRlZiBfX0dOVUNfXwotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19tYWlsX3JlcGx5W10gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fICg0KSkpID0gCi0jZWxzZQotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19tYWlsX3JlcGx5W10gPSAKLSNlbmRpZgoteyAiIgotICAvKiBQaXhidWYgbWFnaWMgKDB4NDc2NDZiNTApICovCi0gICJHZGtQIgotICAvKiBsZW5ndGg6IGhlYWRlciAoMjQpICsgcGl4ZWxfZGF0YSAoMjMwNCkgKi8KLSAgIlwwXDBcMTFcMzAiCi0gIC8qIHBpeGRhdGFfdHlwZSAoMHgxMDEwMDAyKSAqLwotICAiXDFcMVwwXDIiCi0gIC8qIHJvd3N0cmlkZSAoOTYpICovCi0gICJcMFwwXDBgIgotICAvKiB3aWR0aCAoMjQpICovCi0gICJcMFwwXDBcMzAiCi0gIC8qIGhlaWdodCAoMjQpICovCi0gICJcMFwwXDBcMzAiCi0gIC8qIHBpeGVsX2RhdGE6ICovCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMCIKLSAgIlwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyIgotICAiXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBmXDBcMFwwIgotICAiXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDAiCi0gICJcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBtXDBcMFwwXDEwXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDFcMFwwXDBcMzc3U1NTXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc2XDM3NlwzNzZcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzRcMzc0XDM3NFwzNzciCi0gICJcMzczXDM3M1wzNzNcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2NiIKLSAgIlwzNjZcMzY2XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY0XDM2NFwzNjRcMzc3XDM0M1wzNDNcMzQzXDM3N1NTU1wzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwXDMxXDBcMFwwXDEwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNTZcMzU2IgotICAiXDM1NlwzNzdPT09cMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY0XDM2NFwzNjRcMzc3XDM2M1wzNjMiCi0gICJcMzYzXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNjBcMzYwXDM2MCIKLSAgIlwzNzdcMzYwXDM2MFwzNjBcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU1XDM1NVwzNTVcMzc3IgotICAiXDM0M1wzNDNcMzQzXDM3N09PT1wzNzdcMjU2XDI1NlwyNTZcMzc3XDBcMFwwXDM3N1wwXDBcMChcMFwwXDBcMTdcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNDRcMzQ0XDM0NFwzNzdDQ0NcMzc3IgotICAiXDM3NVwzNzVcMzc1XDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjEiCi0gICJcMzYxXDM2MVwzNzdcMzYwXDM2MFwzNjBcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU2XDM1NiIKLSAgIlwzNTZcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNDNcMzQzXDM0M1wzNzdPT09cMzc3XDI1NFwyNTRcMjU0XDM3N1wzMTBcMzEwIgotICAiXDMxMFwzNzdcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzdPT09cMzc3XDM3M1wzNzNcMzczXDM3NyIKLSAgIlwzNjFcMzYxXDM2MVwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNTdcMzU3XDM1N1wzNzdcMzU2IgotICAiXDM1NlwzNTZcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzQzXDM0M1wzNDNcMzc3Q0NDXDM3N1wyNDAiCi0gICJcMjQwXDI0MFwzNzdcMzI0XDMyNFwzMjRcMzc3XDMxMFwzMTBcMzEwXDM3N1wwXDBcMFwzNzdcMFwwXDAtXDBcMFwwXDIxIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzczXDM3M1wzNzNcMzc3XDM2NSIKLSAgIlwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzdDQ0NcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzU3IgotICAiXDM1N1wzNTdcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU0XDM1NFwzNTRcMzc3XDM0M1wzNDMiCi0gICJcMzQzXDM3N09PT1wzNzdcMjI1XDIyNVwyMjVcMzc3XDMyNFwzMjRcMzI0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzEwXDMxMCIKLSAgIlwzMTBcMzc3XDBcMFwwXDM3N1wwXDBcMC1cMFwwXDBcMjFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDQiCi0gICJcMzQ0XDM0NFwzNzc+Pj5cMzc3XDM2NVwzNjVcMzY1XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NCIKLSAgIlwzNTRcMzU0XDM3N1wzNDNcMzQzXDM0M1wzNzdNTU1cMzc3XDIwMVwyMDFcMjAxXDM3N1wzMDZcMzA2XDMwNlwzNzdcMzQ0IgotICAiXDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzMTBcMzEwXDMxMFwzNzdcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMSIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3M1wzNzNcMzczXDM3Nz1cMzIiCi0gICJcMjNcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzdqampcMzc3Q0NDXDM3N1wzNjNcMzYzXDM2M1wzNzciCi0gICJcMzU0XDM1NFwzNTRcMzc3XDM0M1wzNDNcMzQzXDM3N09PT1wzNzdqampcMzc3XDMwNlwzMDZcMzA2XDM3N1wzMDZcMzA2IgotICAiXDMwNlwzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzMTBcMzEwXDMxMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwLVwwXDBcMFwyMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDBcMCIKLSAgIlwwXDM3N1wwXDBcMFwzNzdcMzQ0XDM0NFwzNDRcMzc3Y2NjXDM3N1wzNzdcMzc3XDM3N1wzNzdcMjcxXDI3MVwyNzFcMzc3IgotICAiT09PXDM3N1wzNjBcMzYwXDM2MFwzNzdPT09cMzc3XDIyNVwyMjVcMjI1XDM3N1wzMDZcMzA2XDMwNlwzNzdzc3NcMzc3IgotICAiXDMwNlwzMDZcMzA2XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzQ0XDM0NFwzNDRcMzc3XDMxMFwzMTBcMzEwXDM3N1wwXDAiCi0gICJcMFwzNzdcMFwwXDAtXDBcMFwwXDIxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wwXDBcMFwzNzdcMzUyIgotICAiXDMwMFwyNzJcMzc3XDBcMFwwXDM3N2NjY1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0IgotICAiXDM0NFwzNzdcMzI0XDMyNFwzMjRcMzc3T09PXDM3N1wyNTRcMjU0XDI1NFwzNzdcMzA2XDMwNlwzMDZcMzc3XDM0NFwzNDQiCi0gICJcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzd8fHxcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzEwXDMxMCIKLSAgIlwzMTBcMzc3XDBcMFwwXDM3N1wwXDBcMC1cMFwwXDBcMjFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3IgotICAiXDM1MlwzMDBcMjcyXDM3N1wzMzdcMjM2XDIyNVwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDAiCi0gICJcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1IgotICAiXDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0XDM0NFwzNzd8fHxcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzMTAiCi0gICJcMzEwXDMxMFwzNzdcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDM1MiIKLSAgIlwzMDBcMjcyXDM3N1wzNDBcMjQxXDIzMFwzNzdcMzQxXDI0NVwyMzVcMzc3XDM0MlwyNDdcMjM2XDM3N1wzNDNcMjUzIgotICAiXDI0M1wzNzdcMzQyXDI0N1wyMzZcMzc3XDM0M1wyNTJcMjQyXDM3N1wzMzdcMjM2XDIyNVwzNzdcMzE0YlNcMzc3XDAiCi0gICJcMFwwXDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NCIKLSAgIlwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N3x8fFwzNzdcMzEwXDMxMFwzMTBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMC1cMFwwXDBcMjFcMFwwXDBcMFwwXDBcMFwzNzdcMzUyXDMwMFwyNzJcMzc3XDMzNVwyMjdcMjE1XDM3N1wzMzciCi0gICJcMjM3XDIyN1wzNzdcMzM3XDIzNlwyMjVcMzc3XDMzNlwyMzJcMjIwXDM3N1wzMzVcMjI2XDIxNFwzNzdcMzM1XDIyNiIKLSAgIlwyMTRcMzc3XDMzNlwyMzJcMjIwXDM3N1wzMzVcMjI0XDIxMlwzNzdcMjYxQzRcMzc3XDBcMFwwXDM3N1wyNzRcMjc0IgotICAiXDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzQiCi0gICJcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzdjY2NcMzc3XDBcMFwwXDM3N1wwXDBcMC1cMFwwXDBcMjEiCi0gICJDXDMxXDIzXDM3N1wzNTJcMzAyXDI3NFwzNzdcMzM2XDIzMlwyMjBcMzc3XDMzN1wyMzRcMjIyXDM3N1wzMzVcMjMxXDIxNyIKLSAgIlwzNzdcMzM1XDIzMVwyMTdcMzc3XDMzNVwyMjdcMjE1XDM3N1wzMzZcMjMyXDIyMFwzNzdcMzM2XDIzMlwyMjBcMzc3IgotICAiXDMzNlwyMzJcMjIwXDM3N1wzMzZcMjMyXDIyMFwzNzdcMjY1RTVcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDAiCi0gICJcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMCIKLSAgIlwwXDIwN1wwXDBcMChcMFwwXDBcMTdcMFwwXDBcMFwwXDBcMFwzNzdlJlwzNVwzNzdcMjMwOixcMzc3XDIzMDosXDM3NyIKLSAgIlwyMzA6LFwzNzdcMjMwOixcMzc3XDIzMDosXDM3N1wyMzA6LFwzNzdcMjMwOixcMzc3XDIzMDosXDM3N3wvJFwzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwIgotICAiXDAoXDBcMFwwXDMxXDBcMFwwXDEwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdlJlwzNVwzNzdcMjMwOixcMzc3XDIzMCIKLSAgIjosXDM3N2MlXDM1XDM3N2MlXDM1XDM3N2MlXDM1XDM3N2MlXDM1XDM3N2MlXDM1XDM3N2wpXDM3XDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDBcMjFcMFwwXDAiCi0gICJcMjFcMFwwXDBcMTZcMFwwXDBcMTBcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdlJlwzNSIKLSAgIlwzNzdcMjMwOixcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDAiCi0gICJcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwzNzdlJlwzNVwzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9OwotCi0KLS8qIEdka1BpeGJ1ZiBSR0JBIEMtU291cmNlIGltYWdlIGR1bXAgKi8KLQotI2lmZGVmIF9fU1VOUFJPX0MKLSNwcmFnbWEgYWxpZ24gNCAoc3RvY2tfbWFpbF9zZW5kKQotI2VuZGlmCi0jaWZkZWYgX19HTlVDX18KLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfbWFpbF9zZW5kW10gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fICg0KSkpID0gCi0jZWxzZQotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19tYWlsX3NlbmRbXSA9IAotI2VuZGlmCi17ICIiCi0gIC8qIFBpeGJ1ZiBtYWdpYyAoMHg0NzY0NmI1MCkgKi8KLSAgIkdka1AiCi0gIC8qIGxlbmd0aDogaGVhZGVyICgyNCkgKyBwaXhlbF9kYXRhICgyMzA0KSAqLwotICAiXDBcMFwxMVwzMCIKLSAgLyogcGl4ZGF0YV90eXBlICgweDEwMTAwMDIpICovCi0gICJcMVwxXDBcMiIKLSAgLyogcm93c3RyaWRlICg5NikgKi8KLSAgIlwwXDBcMGAiCi0gIC8qIHdpZHRoICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogaGVpZ2h0ICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogcGl4ZWxfZGF0YTogKi8KLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBPXDc3XDEyXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3NyIKLSAgIlwzNjRcMzQ2XDI2NVwzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzY0XDM0NSIKLSAgIlwyNjNcMzc3XDM1NVwzMjZcMjA0XDM3N3VfXDIwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDM2NFwzNDUiCi0gICJcMjYzXDM3N1wzNTVcMzI1XDIwMFwzNzdcMzU2XDMyNlwyMDVcMzc3XDI1N1wyMTVcMzBcMzc3dV9cMjBcMzc3XDBcMCIKLSAgIlwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDM3N1wzNjRcMzQ1XDI2M1wzNzdcMzU3XDMzMVwyMTRcMzc3XDM1NlwzMzBcMjEzXDM3N1wzNTVcMzI1XDIwMiIKLSAgIlwzNzdcMjU3XDIxNVwzMFwzNzdcMjU3XDIxNVwzMFwzNzd1X1wyMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwxXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwzNzdcMzY0XDM0NVwyNjNcMzc3XDM1NlwzMzBcMjExXDM3NyIKLSAgIlwzNTdcMzMyXDIyMlwzNzdcMzU2XDMzMFwyMTFcMzc3XDM1NVwzMjVcMjAyXDM3N1wyNTdcMjE1XDMwXDM3N1wyNTdcMjE1IgotICAiXDMwXDM3N1wyNTdcMjE1XDMwXDM3N3VfXDIwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwIgotICAiXDBcMlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBmXDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDM2MFwzMzNcMjIzXDM3N1wzNTVcMzI2XDIwNCIKLSAgIlwzNzdcMzU1XDMyNVwyMDBcMzc3XDI1N1wyMTVcMzBcMzc3c11cMjBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwbVwwXDBcMFwxMFwwXDBcMFwyXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDM3N1NTU1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDBcMFwwXDM3N1wzNjBcMzM0XDIyN1wzNzdcMzU1XDMyNlwyMDRcMzc3IgotICAiXDM1NVwzMjZcMjA0XDM3N1wyNTdcMjE1XDMwXDM3N3NdXDIwXDM3N1wwXDBcMFwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NSIKLSAgIlwzNjVcMzY1XDM3N1wzNjRcMzY0XDM2NFwzNzdcMzQzXDM0M1wzNDNcMzc3U1NTXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzEiCi0gICJcMFwwXDBcMTBcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3XDM1NlwzNTZcMzU2XDM3N09PT1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjRcMzY0XDM2NFwzNzdcMFwwXDBcMzc3XDM1NlwzMzBcMjExXDM3NyIKLSAgIlwzNTVcMzIzfFwzNzdcMzU1XDMyNlwyMDRcMzc3XDI1N1wyMTVcMzBcMzc3c11cMjBcMzc3XDBcMFwwXDM3N1wzNTZcMzU2IgotICAiXDM1NlwzNzdcMzU1XDM1NVwzNTVcMzc3XDM0M1wzNDNcMzQzXDM3N09PT1wzNzdcMjU2XDI1NlwyNTZcMzc3XDBcMFwwIgotICAiXDM3N1wwXDBcMChcMFwwXDBcMTdcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNDRcMzQ0XDM0NFwzNzdDQ0NcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNjNcMzYzXDM2M1wzNzdcMFwwXDBcMzc3XDM0NCIKLSAgIlwyNzc9XDM3N1wzMTNcMjQ0XDM0XDM3N1wzMjFcMjUwXDM0XDM3N1wyMjB0XDIzXDM3N3xkXDIxXDM3N1wwXDBcMFwzNzciCi0gICJcMzU1XDM1NVwzNTVcMzc3XDM0M1wzNDNcMzQzXDM3N09PT1wzNzdcMjU0XDI1NFwyNTRcMzc3XDMxMFwzMTBcMzEwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDAtXDBcMFwwXDIxXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NFwzNDRcMzQ0XDM3N09PT1wzNzdcMzczXDM3M1wzNzNcMzc3XDBcMFwwIgotICAiXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wzNDMiCi0gICJcMzQzXDM0M1wzNzdDQ0NcMzc3XDI0MFwyNDBcMjQwXDM3N1wzMjRcMzI0XDMyNFwzNzdcMzEwXDMxMFwzMTBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMC1cMFwwXDBcMjFcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzNcMzczXDM3M1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NFwzNDRcMzQ0XDM3N0NDQ1wzNzdcMzcwXDM3MFwzNzAiCi0gICJcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNTdcMzU3XDM1N1wzNzdcMzU2XDM1NlwzNTZcMzc3XDM1NVwzNTVcMzU1XDM3NyIKLSAgIlwzNTRcMzU0XDM1NFwzNzdcMzQzXDM0M1wzNDNcMzc3T09PXDM3N1wyMjVcMjI1XDIyNVwzNzdcMzI0XDMyNFwzMjRcMzc3IgotICAiXDM0NFwzNDRcMzQ0XDM3N1wzMTBcMzEwXDMxMFwzNzdcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMVwwXDBcMFwyXDAiCi0gICJcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NSIKLSAgIlwzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NFwzNDRcMzQ0XDM3Nz4+PlwzNzdcMzY1XDM2NVwzNjVcMzc3XDM1NlwzNTZcMzU2IgotICAiXDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU0XDM1NFwzNTRcMzc3XDM0M1wzNDNcMzQzXDM3N01NTVwzNzdcMjAxXDIwMVwyMDEiCi0gICJcMzc3XDMwNlwzMDZcMzA2XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDMxMFwzMTBcMzEwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDAtXDBcMFwwXDIxXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzczXDM3M1wzNzNcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzQ0XDM0NFwzNDQiCi0gICJcMzc3ampqXDM3N0NDQ1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNDNcMzQzXDM0M1wzNzdPTyIKLSAgIk9cMzc3ampqXDM3N1wzMDZcMzA2XDMwNlwzNzdcMzA2XDMwNlwzMDZcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNDRcMzQ0IgotICAiXDM0NFwzNzdcMzEwXDMxMFwzMTBcMzc3XDBcMFwwXDM3N1wwXDBcMC1cMFwwXDBcMjFcMFwwXDBcMlwwXDBcMFwwXDAiCi0gICJcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NCIKLSAgIlwzNDRcMzQ0XDM3N2NjY1wzNzdcMzc3XDM3N1wzNzdcMzc3XDI3MVwyNzFcMjcxXDM3N09PT1wzNzdcMzYwXDM2MFwzNjAiCi0gICJcMzc3T09PXDM3N1wyMjVcMjI1XDIyNVwzNzdcMzA2XDMwNlwzMDZcMzc3c3NzXDM3N1wzMDZcMzA2XDMwNlwzNzdcMzY1IgotICAiXDM2NVwzNjVcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzMTBcMzEwXDMxMFwzNzdcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMSIKLSAgIlwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3M1wzNzNcMzczXDM3N1wzNDQiCi0gICJcMzQ0XDM0NFwzNzdjY2NcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzQ0XDM0NFwzNDRcMzc3XDMyNCIKLSAgIlwzMjRcMzI0XDM3N09PT1wzNzdcMjU0XDI1NFwyNTRcMzc3XDMwNlwzMDZcMzA2XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0IgotICAiXDM0NFwzNDRcMzc3fHx8XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDMxMFwzMTBcMzEwXDM3N1wwIgotICAiXDBcMFwzNzdcMFwwXDAtXDBcMFwwXDIxXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzQ0XDM0NFwzNDRcMzc3c3NzXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1IgotICAiXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzciCi0gICJcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzQ0XDM0NFwzNDRcMzc3fHx8XDM3NyIKLSAgIlwzNDRcMzQ0XDM0NFwzNzdcMzEwXDMxMFwzMTBcMzc3XDBcMFwwXDM3N1wwXDBcMC1cMFwwXDBcMjFcMFwwXDBcMlwwIgotICAiXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N3x8fFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM0NFwzNDQiCi0gICJcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NCIKLSAgIlwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3IgotICAiXDM0NFwzNDRcMzQ0XDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ0XDM0NFwzNDRcMzc3fHx8XDM3N1wzMTBcMzEwXDMxMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwLVwwXDBcMFwyMVwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzNzdzc3NcMzc3XDI3NCIKLSAgIlwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0IgotICAiXDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzQiCi0gICJcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3XDI3NFwyNzRcMjc0XDM3NyIKLSAgIlwyNzRcMjc0XDI3NFwzNzdcMjc0XDI3NFwyNzRcMzc3Y2NjXDM3N1wwXDBcMFwzNzdcMFwwXDAtXDBcMFwwXDIxXDBcMCIKLSAgIlwwXDJcMFwwXDBcMFwwXDBcMFwyXDBcMFwwbVwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDIwNyIKLSAgIlwwXDBcMChcMFwwXDBcMTdcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcMTBcMFwwXDBcMzFcMFwwXDAoXDBcMCIKLSAgIlwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwLVwwIgotICAiXDBcMC1cMFwwXDAtXDBcMFwwLVwwXDBcMC1cMFwwXDAtXDBcMFwwKFwwXDBcMFwzMVwwXDBcMFwxMFwwXDBcMFwxXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDEwXDBcMFwwXDE2XDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDIxXDAiCi0gICJcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDIxIgotICAiXDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDIxXDBcMFwwXDE2XDBcMFwwXDEwXDBcMFwwXDJcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMCIKLSAgIlwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwIgotICAiXDJcMFwwXDBcMlwwXDBcMFwyXDBcMFwwXDJcMFwwXDBcMlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMCJ9OwotCi0KLS8qIEdka1BpeGJ1ZiBSR0JBIEMtU291cmNlIGltYWdlIGR1bXAgKi8KLQotI2lmZGVmIF9fU1VOUFJPX0MKLSNwcmFnbWEgYWxpZ24gNCAoc3RvY2tfbWVudV9hYm91dCkKLSNlbmRpZgotI2lmZGVmIF9fR05VQ19fCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX21lbnVfYWJvdXRbXSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18gKDQpKSkgPSAKLSNlbHNlCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX21lbnVfYWJvdXRbXSA9IAotI2VuZGlmCi17ICIiCi0gIC8qIFBpeGJ1ZiBtYWdpYyAoMHg0NzY0NmI1MCkgKi8KLSAgIkdka1AiCi0gIC8qIGxlbmd0aDogaGVhZGVyICgyNCkgKyBwaXhlbF9kYXRhICgxMDI0KSAqLwotICAiXDBcMFw0XDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDY0KSAqLwotICAiXDBcMFwwQCIKLSAgLyogd2lkdGggKDE2KSAqLwotICAiXDBcMFwwXDIwIgotICAvKiBoZWlnaHQgKDE2KSAqLwotICAiXDBcMFwwXDIwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCFcIlwxMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMExOXDIzbFwwXDBcMFwzNzdcMjVcMjZcNiNcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMTFcMFwwXDBcMzc3XDM1NlwzNjY+XDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMjBcMjFcNFw3ZGdcMzIiCi0gICJ4XDBcMFwwXDM3N1wwXDBcMFwzNzdcMzUyXDM2MT1cMzc3XDM2MFwzNzBcNzdcMzc3XDMxM1wzMjI1XDM3MFwwXDBcMCIKLSAgIlwzNzdcMFwwXDBcMzc3SkxcMjNrXDBcMFwwXDBcMjBcMjFcNFwwZGdcMzJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwzNFwzNVw3XDBcMFwwXDBcMzc3XDM2MFwzNzBcNzdcMzc3XDM2MFwzNzBcNzdcMzc3XDM2MFwzNzBcNzdcMzc3XDM2MCIKLSAgIlwzNzBcNzdcMzc3XDM2MFwzNzBcNzdcMzc3XDM2MFwzNzBcNzdcMzc3XDM1MVwzNjA9XDM3N1wwXDBcMFwzNzdcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzN1wzN1wxMCVcMFwwXDAiCi0gICJcMzc3XDM2MFwzNzBcNzdcMzc3XDM2MFwzNzBcNzdcMzc3XDM2MFwzNzBcNzdcMzc3XDM2MFwzNzBcNzdcMzc3XDM0NSIKLSAgIlwzNTQ8XDM3N1wwXDBcMFwzNzdcNVw1XDFcN1wwXDBcMFwwXDBcMFwwXDBcMzdcMzdcMTBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDM1MFwzNjA9XDM3N1wzNjBcMzcwXDc3XDM3N1wzNjAiCi0gICJcMzcwXDc3XDM3N1wzNjBcMzcwXDc3XDM3N1wyNTNcMjYwLVwzNzJcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wzNjBcMzcwIgotICAiXDc3XDM3N1wzNTRcMzYzPlwzNzdcMFwwXDBcMzc3XDM1N1wzNjdcNzdcMzc3XDMxNlwzMjY2XDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMzc3XDI2NFwyNzIvXDM2M1wwXDBcMFwzNzdcMzBcMzBcNlw3N1wwXDBcMFwzNzdcMzE1XDMyNDVcMzc1IgotICAiXDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwzNlwzN1wxMGdcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3NyIKLSAgIlwyNlwyN1w1RlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja19tZW51X2JsYW5rKQotI2VuZGlmCi0jaWZkZWYgX19HTlVDX18KLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfbWVudV9ibGFua1tdIF9fYXR0cmlidXRlX18gKChfX2FsaWduZWRfXyAoNCkpKSA9IAotI2Vsc2UKLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfbWVudV9ibGFua1tdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDEwMjQpICovCi0gICJcMFwwXDRcMzAiCi0gIC8qIHBpeGRhdGFfdHlwZSAoMHgxMDEwMDAyKSAqLwotICAiXDFcMVwwXDIiCi0gIC8qIHJvd3N0cmlkZSAoNjQpICovCi0gICJcMFwwXDBAIgotICAvKiB3aWR0aCAoMTYpICovCi0gICJcMFwwXDBcMjAiCi0gIC8qIGhlaWdodCAoMTYpICovCi0gICJcMFwwXDBcMjAiCi0gIC8qIHBpeGVsX2RhdGE6ICovCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMCJ9OwotCi0KLS8qIEdka1BpeGJ1ZiBSR0JBIEMtU291cmNlIGltYWdlIGR1bXAgKi8KLQotI2lmZGVmIF9fU1VOUFJPX0MKLSNwcmFnbWEgYWxpZ24gNCAoc3RvY2tfc2NvcmVzKQotI2VuZGlmCi0jaWZkZWYgX19HTlVDX18KLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfc2NvcmVzW10gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fICg0KSkpID0gCi0jZWxzZQotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19zY29yZXNbXSA9IAotI2VuZGlmCi17ICIiCi0gIC8qIFBpeGJ1ZiBtYWdpYyAoMHg0NzY0NmI1MCkgKi8KLSAgIkdka1AiCi0gIC8qIGxlbmd0aDogaGVhZGVyICgyNCkgKyBwaXhlbF9kYXRhICgyMzA0KSAqLwotICAiXDBcMFwxMVwzMCIKLSAgLyogcGl4ZGF0YV90eXBlICgweDEwMTAwMDIpICovCi0gICJcMVwxXDBcMiIKLSAgLyogcm93c3RyaWRlICg5NikgKi8KLSAgIlwwXDBcMGAiCi0gIC8qIHdpZHRoICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogaGVpZ2h0ICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogcGl4ZWxfZGF0YTogKi8KLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDNcMFwwXDBcNFwwXDBcMFw0XDBcMFwwXDRcMFwwIgotICAiXDBcM1wwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMjE1XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwIgotICAiXDBcMjI3XDBcMFwwXDIyXDBcMFwwXDZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNDFcMzQxXDM0MVwzNzdcMFwwXDBcMzc3XDBcMFwwIiIyXDBcMFwwXDIyXDBcMFwwXDJcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzUzIgotICAiXDM1M1wzNTNcMzc3XDBcMFwwXDM3N1wzNTVcMzU1XDM1NVwzNzdcMzIyXDMyMlwzMjJcMzc3XDBcMFwwXDM3N1wwXDAiCi0gICJcMExcMFwwXDBcMzRcMFwwXDBcNFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDRcMFwwIgotICAiXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDM1NlwzNTZcMzU2XDM3N1wzMjJcMzIyXDMyMiIKLSAgIlwzNzdcMFwwXDBcMzc3XDBcMFwwVFwwXDBcMFw0MFwwXDBcMFw0XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwzXDAiCi0gICJcMFwwXDRcMFwwXDBcMTBcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNTVcMzU1XDM1NVwzNzdcMFwwXDBcMzc3XDM1NyIKLSAgIlwzNTdcMzU3XDM3N1wzMjNcMzIzXDMyM1wzNzdcMFwwXDBcMzc3XDBcMFwwVVwwXDBcMFw0MFwwXDBcMFw0XDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDIxNVwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNTZcMzU2XDM1NlwzNzdcMFwwXDBcMzc3XDM2MFwzNjBcMzYwXDM3N1wzMjRcMzI0XDMyNFwzNzdcMFwwXDAiCi0gICJcMzc3XDBcMFwwV1wwXDBcMCRcMFwwXDBcMTBcMFwwXDBcNFwwXDBcMFwzXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDMyNVwzMjVcMzI1XDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDIwNVwwXDBcMFwyMFwwXDBcMFw1XDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcM1wwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDBcMFwwXDM3N1wwXDBcMCIKLSAgIlwzNzdcMFwwXDBcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3XDM1N1wzNTdcMzc3XDM2MVwzNjEiCi0gICJcMzYxXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiMVwwXDBcMFwyMVwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDRcMFwwXDBcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNTNcMzUzXDM1M1wzNzdcMzU0XDM1NFwzNTRcMzc3XDBcMFwwXDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3IgotICAiXDM1N1wzNTdcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjQiCi0gICJcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMzMzXDMzM1wzMzNcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMEtcMFwwXDBcMzRcMFwwXDBcNFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFw0XDAiCi0gICJcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMzU3XDM1N1wzNTdcMzc3IgotICAiXDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjUiCi0gICJcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNzBcMzcwXDM3MFwzNzdcMFwwXDBcMzc3IgotICAiXDMzNFwzMzRcMzM0XDM3N1wwXDBcMFwzNzdcMFwwXDBUXDBcMFwwXDQwXDBcMFwwXDRcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcNFwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDBcMFwwXDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3IgotICAiXDM1N1wzNTdcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjMiCi0gICJcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNzBcMzcwXDM3MCIKLSAgIlwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wzMzVcMzM1XDMzNVwzNzdcMFwwXDBcMzc3XDBcMFwwVVwwXDBcMFw0MFwwIgotICAiXDBcMFw0XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDRcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wwXDAiCi0gICJcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzIgotICAiXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzciCi0gICJcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N1wwXDBcMFwzNzdcMzM2XDMzNlwzMzZcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFVcMFwwXDBcNDBcMFwwXDBcNFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFw0XDBcMFwwXDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzU3XDM1N1wzNTdcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MiIKLSAgIlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2IgotICAiXDM3N1wzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDMzNyIKLSAgIlwzMzdcMzM3XDM3N1wwXDBcMFwzNzdcMFwwXDBVXDBcMFwwXDQwXDBcMFwwXDRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcNFwwXDBcMFwzNzdcMzQxXDM0MVwzNDFcMzc3XDMyM1wzMjNcMzIzXDM3N1wzMjRcMzI0XDMyNFwzNzciCi0gICJcMzI1XDMyNVwzMjVcMzc3XDMyNlwzMjZcMzI2XDM3N1wzMjdcMzI3XDMyN1wzNzdcMzMwXDMzMFwzMzBcMzc3XDMzMSIKLSAgIlwzMzFcMzMxXDM3N1wzMzFcMzMxXDMzMVwzNzdcMzMyXDMzMlwzMzJcMzc3XDMzM1wzMzNcMzMzXDM3N1wzMzRcMzM0IgotICAiXDMzNFwzNzdcMzM1XDMzNVwzMzVcMzc3XDMzN1wzMzdcMzM3XDM3N1wzNDBcMzQwXDM0MFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwVFwwXDBcMFw0MFwwXDBcMFw0XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDRcMFwwXDBcMjU0XDBcMCIKLSAgIlwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwIgotICAiXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDI3M1wwXDBcMExcMFwwXDBcMzRcMFwwXDBcNFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwyXDBcMFwwXDIzXDBcMFwwIiI1XDBcMFwwTVwwXDBcMFRcMFwwXDBVXDBcMFwwVVwwXDBcMFVcMFwwXDBVIgotICAiXDBcMFwwVVwwXDBcMFVcMFwwXDBVXDBcMFwwVVwwXDBcMFVcMFwwXDBVXDBcMFwwVVwwXDBcMFRcMFwwXDBMXDBcMFwwIgotICAiMlwwXDBcMFwyMlwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcNlwwXDBcMFwyM1wwIgotICAiXDBcMFwzNVwwXDBcMFw0MFwwXDBcMFw0MFwwXDBcMFw0MFwwXDBcMFw0MFwwXDBcMFw0MFwwXDBcMFw0MFwwXDBcMFw0MCIKLSAgIlwwXDBcMFw0MFwwXDBcMFw0MFwwXDBcMFw0MFwwXDBcMFw0MFwwXDBcMFw0MFwwXDBcMFwzN1wwXDBcMFwzNFwwXDBcMCIKLSAgIlwyMlwwXDBcMFw2XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDJcMCIKLSAgIlwwXDBcM1wwXDBcMFw0XDBcMFwwXDRcMFwwXDBcNFwwXDBcMFw0XDBcMFwwXDRcMFwwXDBcNFwwXDBcMFw0XDBcMFwwIgotICAiXDRcMFwwXDBcNFwwXDBcMFw0XDBcMFwwXDRcMFwwXDBcNFwwXDBcMFw0XDBcMFwwXDNcMFwwXDBcMlwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMCJ9OwotCi0KLS8qIEdka1BpeGJ1ZiBSR0JBIEMtU291cmNlIGltYWdlIGR1bXAgKi8KLQotI2lmZGVmIF9fU1VOUFJPX0MKLSNwcmFnbWEgYWxpZ24gNCAoc3RvY2tfbWljKQotI2VuZGlmCi0jaWZkZWYgX19HTlVDX18KLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfbWljW10gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fICg0KSkpID0gCi0jZWxzZQotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19taWNbXSA9IAotI2VuZGlmCi17ICIiCi0gIC8qIFBpeGJ1ZiBtYWdpYyAoMHg0NzY0NmI1MCkgKi8KLSAgIkdka1AiCi0gIC8qIGxlbmd0aDogaGVhZGVyICgyNCkgKyBwaXhlbF9kYXRhICgyMzA0KSAqLwotICAiXDBcMFwxMVwzMCIKLSAgLyogcGl4ZGF0YV90eXBlICgweDEwMTAwMDIpICovCi0gICJcMVwxXDBcMiIKLSAgLyogcm93c3RyaWRlICg5NikgKi8KLSAgIlwwXDBcMGAiCi0gIC8qIHdpZHRoICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogaGVpZ2h0ICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogcGl4ZWxfZGF0YTogKi8KLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDA8XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDA8XDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDA8UlJSXDM3N1wzMzIiCi0gICJcMzMyXDMzM1wzNzdcMzcyXDM3MlwzNzNcMzc3XDM2MVwzNjFcMzYzXDM3N1wzNzBcMzcwXDM3MVwzNzdcMzM1XDMzNCIKLSAgIlwzMzVcMzc3XDBcMFwwXDM3N1wwXDBcMEVcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMzc3XDMzMlwzMzFcMzMyXDM3N1wzNjNcMzYyXDM2NVwzNzdcMzI2XDMyNVwzMzRcMzc3XDM1MCIKLSAgIlwzNTBcMzUzXDM3N1wyNjdcMjY1XDI3NVwzNzdcMzI0XDMyMlwzMjdcMzc3aWZsXDM3N1wwXDBcMFwzNzdcMFwwXDBcMTMiCi0gICJcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzJcMzcyXDM3M1wzNzciCi0gICJcMzM0XDMzNFwzNDJcMzc3XDM1NFwzNTNcMzU2XDM3N1wzMDFcMjc3XDMwN1wzNzdcMzMwXDMyNlwzMzNcMzc3XDIyMCIKLSAgIlwyMTdcMjI2XDM3N1wyMTRcMjEyXDIxN1wzNzdcMFwwXDBcMzc3XDBcMFwwXDI2XDBcMFwwXDRcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzYzXDM2MVwzNjRcMzc3XDM1N1wzNTdcMzYyXDM3N1wzMTIiCi0gICJcMzA3XDMyMVwzNzdcMzM3XDMzNlwzNDNcMzc3XDIzNVwyMzRcMjQ0XDM3N1wyNzVcMjczXDMwMVwzNzdDQkZcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzMVwwXDBcMFw1XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBJXDBcMFwwXVwwXDBcMFwxXDBcMFwwXDM3NyIKLSAgIlwzNzJcMzcyXDM3MlwzNzdcMzI0XDMyMlwzMzFcMzc3XDM1MFwzNDZcMzUzXDM3N1wyNjFcMjYwXDI3MlwzNzdcMzExIgotICAiXDMwN1wzMTZcMzc3dHF6XDM3N3FwdlwzNzdcMFwwXDBcMzc3XDBcMFwwXDMxXDBcMFwwX1wwXDBcMEpcMFwwXDBcMVwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJdXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDM2MVwzNjBcMzYzXDM3N1wzNTVcMzU0XDM2MFwzNzdcMzAzXDMwMSIKLSAgIlwzMTJcMzc3XDMzMFwzMjZcMzM1XDM3N1wyMTRcMjExXDIyNVwzNzdcMjUwXDI0NlwyNTdcMzc3MjI2XDM3N1wwXDBcMCIKLSAgIlwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMGJcMFwwXDBcN1wwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwzNzdcMFwwXDBcMjZcMFwwXDBcMzc3IgotICAiXDM3MVwzNzFcMzcyXDM3N1wzMTdcMzE2XDMyNlwzNzdcMzQ0XDM0MlwzNDdcMzc3XDI1MFwyNDdcMjYxXDM3N1wzMDMiCi0gICJcMzAxXDMxMFwzNzdlYmxcMzc3YWFlXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzRcMFwwXDBcMzc3XDBcMFwwXDI3XDBcMCIKLSAgIlwwXDEyXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDM3N1wwXDBcMFwyNVwwXDBcMFwzNzdcMzYwXDM1NlwzNjFcMzc3XDM1M1wzNTJcMzU2XDM3NyIKLSAgIlwyNzZcMjczXDMwNlwzNzdcMzI1XDMyNFwzMzJcMzc3XDIwNFwyMDBcMjE0XDM3N1wyMzZcMjM1XDI0NlwzNzctLDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzMlwwXDBcMFwzNzdcMFwwXDBcMjVcMFwwXDBcNlwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMFwwXDBcMjQiCi0gICJcMFwwXDBcMzc3XDM3MFwzNzBcMzcxXDM3N1wzMTJcMzA3XDMyMVwzNzdcMzM3XDMzNlwzNDJcMzc3XDIzNFwyMzJcMjQ0IgotICAiXDM3N1wyNzBcMjY2XDI3NlwzNzdZV19cMzc3XVthXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzFcMFwwXDBcMzc3XDBcMFwwIgotICAiXDI0XDBcMFwwXDVcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDBcMFwwXDI0XDBcMFwwXDM3N1wzNTRcMzUyXDM1NVwzNzdcMzQzXDM0MlwzNDYiCi0gICJcMzc3XDI1MFwyNDdcMjYwXDM3N1wzMDdcMzA1XDMxNFwzNzdycXhcMzc3XDIyMlwyMjBcMjMxXDM3NygmKlwzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwXDMxXDBcMFwwXDM3N1wwXDBcMFwyNFwwXDBcMFw1XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wwXDBcMFwyNFwwIgotICAiXDBcMFwzNzdcMzUwXDM0N1wzNTJcMzc3XDI2NVwyNjNcMjcyXDM3N1wzMTRcMzE0XDMyMlwzNzdcMjA1XDIwNFwyMTIiCi0gICJcMzc3XDI0NVwyNDRcMjUzXDM3N0pJT1wzNzdNTFFcMzc3XDBcMFwwXDM3N1wwXDBcMFwzMVwwXDBcMFwzNzdcMFwwXDAiCi0gICJcMjRcMFwwXDBcNVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMFwwXDBcMjRcMFwwXDBDXDBcMFwwXDM3N1wyMDZcMjA0XDIxMFwzNzc3NiIKLSAgIjpcMzc3YWFjXDM3NyQjJlwzNzdERElcMzc3XDBcMFwwXDM3N1wwXDBcMFwyMzJcMFwwXDBcMzBcMFwwXDBcMzc3XDBcMCIKLSAgIlwwXDI0XDBcMFwwXDVcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDBcMFwwXDI0XDBcMFwwXDZcMFwwXDBEXDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMjMyXDBcMFwwXDMyXDBcMFwwXDE3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwyNFwwXDBcMFw1XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwa1wwXDBcMFwyMDZcMFwwXDBcNlwwXDBcMFwzXDBcMFwwXDEzXDBcMFwwIgotICAiXDI2XDBcMFwwe1wwXDBcMFwzMlwwXDBcMFwzMVwwXDBcMFwyN1wwXDBcMFwxN1wwXDBcMFwyMDBcMFwwXDBtXDBcMFwwIgotICAiXDIyXDBcMFwwXDRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMG9cMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBtXDBcMFwwXDEzXDAiCi0gICJcMFwwXDEzXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzXDBcMFwwXDEzXDBcMFwwXDIyXDBcMFwwXDI0S0tLXDM3NyIKLSAgImFhYVwzNzdcMFwwXDBcMzc3XDBcMFwwXDMwXDBcMFwwXDI1XDBcMFwwXDI0XDBcMFwwXDIyXDBcMFwwXDEzXDBcMFwwIgotICAiXDNcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFw0XDBcMFwwXDVLS0tcMzc3XDE3N1wxNzciCi0gICJcMTc3XDM3N1wwXDBcMFwzNzdcMFwwXDBtXDBcMFwwO1wwXDBcMFw2XDBcMFwwXDVcMFwwXDBcMlwwXDBcMFwzM1wwXDAiCi0gICJcMF1cMFwwXDBcMzRcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMEtLS1wzNzdcMTc3XDE3N1wxNzdcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzMlwwXDBcMFwxMlwwXDBcMExcMFwwXDBcMlwwXDBcMFwwXDBcMFwwSVwwXDBcMFw0XDAiCi0gICJcMFwwTVwwXDBcMFwzN1wwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiIjNcNDBcNDBcNDBcMzc3aGhoXDM3N1wwXDBcMCIKLSAgIlwzNzdcMFwwXDBHXDBcMFwwXDdcMFwwXDBcMlwwXDBcMGtcMFwwXDBdXDBcMFwwXDJcMFwwXDBcNVwwXDBcMFwzXDBcMCIKLSAgIlwwbFwwXDBcMFw0XDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcXFwwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N2dkW1wzNzdcMFwwXDBcMzc3VlJIXDM3N1wwXDAiCi0gICJcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMGBcMFwwXDAiCi0gICJcMlwwXDBcMG9cMFwwXDBcN1wwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDMzXDMzXDMzXDM3N1wyNTdcMjU1IgotICAiXDI1MVwzNzdcMjA1XDIwMntcMzc3d3RsXDM3N1ZSSFwzNzdWUkhcMzc3VlJIXDM3N1ZSSFwzNzdWUkhcMzc3VlJIXDM3NyIKLSAgIlZSSFwzNzdWUkhcMzc3VlJIXDM3N0xJQFwzNzc7OjJcMzc3XDQwXDM3XDMyXDM3N1wwXDBcMFwzNzdcMFwwXDBcMTRcMCIKLSAgIlwwXDBcMzdcMFwwXDBcN1wwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wwXDBcMFwzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMjdcMFwwXDBcNVwwXDBcMEtcMFwwXDBXXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDRcMFwwXDBcMjVcMFwwXDBcMzFcMFwwXDBcMzFcMFwwXDBcMzFcMFwwXDBcMzFcMFwwXDBcMzFcMFwwXDBcMzFcMCIKLSAgIlwwXDBcMzFcMFwwXDBcMzFcMFwwXDBcMzFcMFwwXDBcMzFcMFwwXDBcMzFcMFwwXDBcMzFcMFwwXDBcMzFcMFwwXDBcMzEiCi0gICJcMFwwXDBcMzFcMFwwXDBcMjVcMFwwXDBcNFwwXDBcMFwxXDBcMFwwXDUifTsKLQotCi0vKiBHZGtQaXhidWYgUkdCQSBDLVNvdXJjZSBpbWFnZSBkdW1wICovCi0KLSNpZmRlZiBfX1NVTlBST19DCi0jcHJhZ21hIGFsaWduIDQgKHN0b2NrX211bHRpcGxlX2ZpbGUpCi0jZW5kaWYKLSNpZmRlZiBfX0dOVUNfXwotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19tdWx0aXBsZV9maWxlW10gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fICg0KSkpID0gCi0jZWxzZQotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19tdWx0aXBsZV9maWxlW10gPSAKLSNlbmRpZgoteyAiIgotICAvKiBQaXhidWYgbWFnaWMgKDB4NDc2NDZiNTApICovCi0gICJHZGtQIgotICAvKiBsZW5ndGg6IGhlYWRlciAoMjQpICsgcGl4ZWxfZGF0YSAoNDA5NikgKi8KLSAgIlwwXDBcMjBcMzAiCi0gIC8qIHBpeGRhdGFfdHlwZSAoMHgxMDEwMDAyKSAqLwotICAiXDFcMVwwXDIiCi0gIC8qIHJvd3N0cmlkZSAoMTI4KSAqLwotICAiXDBcMFwwXDIwMCIKLSAgLyogd2lkdGggKDMyKSAqLwotICAiXDBcMFwwXDQwIgotICAvKiBoZWlnaHQgKDMyKSAqLwotICAiXDBcMFwwXDQwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDMzXDBcMFwwXDE0XDBcMFwwXDJcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNDBcMzQwXDM0MFwzNzciCi0gICJcMzAxXDMwMVwzMDFcMzc3XDBcMFwwXDM3N1wwXDBcMCtcMFwwXDBcMTZcMFwwXDBcM1wwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDAtXDAiCi0gICJcMFwwXDE2XDBcMFwwXDNcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzQwXDM0MFwzNDBcMzc3XDMwMVwzMDFcMzAxXDM3N1wwXDBcMFwzNzdcMFwwXDAiCi0gICItXDBcMFwwXDE2XDBcMFwwXDNcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzNcMzczXDM3M1wzNzciCi0gICJcMzcyXDM3MlwzNzFcMzc3XDMwM1wzMDNcMzAzXDM3N1wzNzNcMzczXDM3M1wzNzdcMjUwXDI1MFwyNTBcMzc3XDBcMCIKLSAgIlwwXDM3N1wwXDBcMC1cMFwwXDBcMjBcMFwwXDBcNlwwXDBcMFw0XDBcMFwwXDNcMFwwXDBcMVwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzNcMFwwXDBcMTRcMFwwXDBcMlwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDBcMFwwXDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNDBcMzQwXDM0MFwzNzdcMzAxXDMwMSIKLSAgIlwzMDFcMzc3XDBcMFwwXDM3N1wwXDBcMCtcMFwwXDBcMTZcMFwwXDBcM1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc1XDM3NVwzNzVcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzIiCi0gICJcMzcyXDM3MVwzNzdcMzAzXDMwM1wzMDNcMzc3XDM3M1wzNzNcMzczXDM3N1wyNTBcMjUwXDI1MFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwLVwwXDBcMFwxNlwwXDBcMFwzXDBcMFwwXDBcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wwXDBcMFwzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzMjFcMzIxXDMyMVwzNzciCi0gICJcMjUyXDI1MlwyNTJcMzc3XDMyM1wzMjNcMzIzXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzIzXDMyM1wzMjNcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wyNTJcMjUyXDI1MlwzNzdcMjUyXDI1MlwyNTJcMzc3XDM3NVwzNzVcMzc1XDM3N1wzMjBcMzIwIgotICAiXDMyMFwzNzdcMzcyXDM3MlwzNzJcMzc3XDM3MVwzNzFcMzcwXDM3N1wzNjdcMzY3XDM2NlwzNzdcMjU1XDI1NVwyNTUiCi0gICJcMzc3dnZ2XDM3N11dXVwzNzdAQEBcMzc3XDBcMFwwXDM3N1wwXDBcMCtcMFwwXDBcMTRcMFwwXDBcMFwwXDBcMFwzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzVcMzc1XDM3NVwzNzdcMzc0XDM3NFwzNzRcMzc3XDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NlwzNzZcMzc2XDM3N1wzNzRcMzc0XDM3NFwzNzciCi0gICJcMzczXDM3M1wzNzJcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY2XDM2NlwzNjVcMzc3XDM2NCIKLSAgIlwzNjRcMzY0XDM3N1wzNDJcMzQyXDM0MlwzNzdcMjA1XDIwNVwyMDVcMzc3S0tJXDM3N1wyNlwyNlwyNlwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwTlwwXDBcMFwzM1wwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzZcMzc2XDM3NlwzNzdcMzc0XDM3NFwzNzRcMzc3XDM3M1wzNzNcMzcyXDM3N1wzNzFcMzcxIgotICAiXDM3MVwzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMjUyXDI1MlwyNTJcMzc3XDI3MSIKLSAgIlwyNzFcMjcxXDM3N1wzMjNcMzIzXDMyM1wzNzdcMzIzXDMyM1wzMjNcMzc3XDM3NlwzNzZcMzc2XDM3N1wyNTBcMjUwIgotICAiXDI1MFwzNzdcMjM2XDIzNlwyMzZcMzc3XDIzNVwyMzVcMjM1XDM3N1wyNDVcMjQ1XDI0NFwzNzdcMzY2XDM2NlwzNjYiCi0gICJcMzc3XDI0M1wyNDNcMjQyXDM3N1wzMTFcMzExXDMxMFwzNzdcMzYyXDM2MlwzNjFcMzc3XDM2MFwzNjBcMzU3XDM3NyIKLSAgIlwzNTZcMzU2XDM1NVwzNzdcMzU1XDM1NVwzNTNcMzc3XDIzNVwyMzVcMjM1XDM3N1wwXDBcMFwzNzdcMFwwXDBdXDBcMCIKLSAgIlwwI1wwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzNcMzczIgotICAiXDM3M1wzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MFwzNzBcMzY3XDM3N1wzNjZcMzY2XDM2NlwzNzdcMFwwXDBcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc1XDM3NVwzNzVcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzJcMzcyXDM3MVwzNzdcMzcwXDM3MFwzNzAiCi0gICJcMzc3XDM2N1wzNjdcMzY2XDM3N1wzNjVcMzY1XDM2NFwzNzdcMzY0XDM2NFwzNjNcMzc3XDM2MlwzNjJcMzYxXDM3NyIKLSAgIlwzNjBcMzYwXDM1N1wzNzdcMzU3XDM1N1wzNTZcMzc3XDM1NVwzNTVcMzU0XDM3N1wzNTRcMzU0XDM1MlwzNzdcMzUyIgotICAiXDM1MlwzNTBcMzc3XDI0NFwyNDRcMjQzXDM3N1wwXDBcMFwzNzdcMFwwXDBfXDBcMFwwJFwwXDBcMFwwXDBcMFwwXDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzBcMzcwXDM3MFwzNzdcMzY3XDM2N1wzNjYiCi0gICJcMzc3XDM2NVwzNjVcMzY0XDM3N1wzNjRcMzY0XDM2M1wzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMjUyXDI1MlwyNTJcMzc3XDMyMVwzMjFcMzIxXDM3N1wzNzRcMzc0XDM3NFwzNzdcMzE2XDMxNlwzMTYiCi0gICJcMzc3XDM3MVwzNzFcMzcwXDM3N1wyNDRcMjQ0XDI0NFwzNzdcMjQzXDI0M1wyNDNcMzc3XDIzMlwyMzJcMjMxXDM3NyIKLSAgIlwyNTdcMjU3XDI1NlwzNzdcMzYxXDM2MVwzNjBcMzc3XDIzN1wyMzdcMjM2XDM3N3JycVwzNzdcMjI1XDIyNVwyMjRcMzc3IgotICAiXDIyM1wyMjNcMjIzXDM3N1wzNTFcMzUxXDM0N1wzNzdcMzQ3XDM0N1wzNDZcMzc3XDI0NFwyNDRcMjQ0XDM3N1wwXDAiCi0gICJcMFwzNzdcMFwwXDBfXDBcMFwwJFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY0XDM2NFwzNjNcMzc3XDM2MlwzNjJcMzYxXDM3N1wzNjFcMzYxIgotICAiXDM2MFwzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzZcMzc2XDM3NlwzNzdcMzc0XDM3NFwzNzRcMzc3XDM3MyIKLSAgIlwzNzNcMzcyXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2NlwzNjZcMzY1XDM3N1wzNjRcMzY0IgotICAiXDM2NFwzNzdcMzYzXDM2M1wzNjJcMzc3XDM2MVwzNjFcMzYwXDM3N1wzNjBcMzYwXDM1NlwzNzdcMzU2XDM1NlwzNTUiCi0gICJcMzc3XDM1NFwzNTRcMzUzXDM3N1wzNTNcMzUzXDM1MVwzNzdcMzUxXDM1MVwzNTBcMzc3XDM1MFwzNTBcMzQ2XDM3NyIKLSAgIlwzNDZcMzQ2XDM0NFwzNzdcMzQ1XDM0NVwzNDNcMzc3XDI0MlwyNDJcMjQyXDM3N1wwXDBcMFwzNzdcMFwwXDBfXDBcMCIKLSAgIlwwJFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjNcMzYzIgotICAiXDM2MlwzNzdcMzYxXDM2MVwzNjBcMzc3XDM2MFwzNjBcMzU2XDM3N1wzNTZcMzU2XDM1NVwzNzdcMFwwXDBcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzNcMzczXDM3M1wzNzdcMjY0XDI2NFwyNjRcMzc3XDI2M1wyNjNcMjYzXDM3N1wzNjZcMzY2IgotICAiXDM2NlwzNzdcMjYxXDI2MVwyNjFcMzc3XDI2MFwyNjBcMjU3XDM3N1wyMzBcMjMwXDIzMFwzNzdcMjI3XDIyN1wyMjYiCi0gICJcMzc3XDM1NlwzNTZcMzU1XDM3N29vblwzNzdubm5cMzc3bm5tXDM3N21tbFwzNzdsbGtcMzc3a2tqXDM3N1wzNDNcMzQzIgotICAiXDM0MVwzNzdcMzQyXDM0MlwzNDBcMzc3XDI0MlwyNDJcMjQyXDM3N1wwXDBcMFwzNzdcMFwwXDBfXDBcMFwwJFwwXDAiCi0gICJcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjBcMzYwXDM1NyIKLSAgIlwzNzdcMzU2XDM1NlwzNTVcMzc3XDM1NVwzNTVcMzUzXDM3N1wzNTNcMzUzXDM1MlwzNzdcMFwwXDBcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzBcMzcwXDM3MFwzNzdcMzY3XDM2N1wzNjZcMzc3XDM2NVwzNjVcMzY0XDM3N1wzNjRcMzY0XDM2MyIKLSAgIlwzNzdcMzYyXDM2MlwzNjFcMzc3XDM2MFwzNjBcMzU3XDM3N1wzNTdcMzU3XDM1NlwzNzdcMzU1XDM1NVwzNTRcMzc3IgotICAiXDM1NFwzNTRcMzUyXDM3N25ubVwzNzdcMjA3XDIyNlwyNDVcMzc3XDIwNlwyMjZcMjQ0XDM3N1wyMDVcMjI1XDI0M1wzNzciCi0gICJcMjA1XDIyNFwyNDNcMzc3amppXDM3N1wzNDFcMzQxXDMzNlwzNzdcMzM3XDMzN1wzMzVcMzc3XDI0M1wyNDNcMjQyXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBfXDBcMFwwJFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNTVcMzU1XDM1NFwzNzdcMzU0XDM1NFwzNTJcMzc3XDM1MlwzNTJcMzUwXDM3N1wzNTEiCi0gICJcMzUxXDM0N1wzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMjYxXDI2MVwyNjBcMzc3IgotICAiXDIzMFwyMzBcMjMwXDM3N1wzMDdcMzA3XDMwNlwzNzdcMzA1XDMwNVwzMDRcMzc3XDM1NlwzNTZcMzU0XDM3N1wzMDMiCi0gICJcMzAzXDMwMlwzNzdcMzAxXDMwMVwzMDBcMzc3XDM1MVwzNTFcMzQ3XDM3N2xsbFwzNzdcMjE3XDIzNlwyNTRcMzc3XDI3NSIKLSAgIlwyNzBcMjI1XDM3N3B8aVwzNzdcMjE0XDIzM1wyNTJcMzc3aWloXDM3N1wzMzZcMzM2XDMzM1wzNzdcMzM0XDMzNFwzMzIiCi0gICJcMzc3XDI0M1wyNDNcMjQyXDM3N1wwXDBcMFwzNzdcMFwwXDBfXDBcMFwwJFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNTJcMzUyXDM1MVwzNzdcMzUxXDM1MVwzNDdcMzc3XDM0NyIKLSAgIlwzNDdcMzQ2XDM3N1wzNDZcMzQ2XDM0NFwzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjNcMzYzXDM2MlwzNzciCi0gICJcMzYxXDM2MVwzNjBcMzc3XDM2MFwzNjBcMzU2XDM3N1wzNTZcMzU2XDM1NVwzNzdcMzU0XDM1NFwzNTNcMzc3XDM1MyIKLSAgIlwzNTNcMzUxXDM3N1wzNTFcMzUxXDM1MFwzNzdcMzUwXDM1MFwzNDZcMzc3XDM0NlwzNDZcMzQ0XDM3N2tralwzNzdcMjI2IgotICAiXDI0NVwyNjRcMzc3XDMyM1wzMDdcMjE1XDM3N1wyMzdcMjM0ZFwzNzdvXDE3N3dcMzc3aGhmXDM3N1wzMzNcMzMzXDMzMCIKLSAgIlwzNzdcMzMyXDMzMlwzMjdcMzc3XDI0MFwyNDBcMjM3XDM3N1wwXDBcMFwzNzdcMFwwXDBfXDBcMFwwJFwwXDBcMFwwIgotICAiXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNTBcMzUwXDM0NlwzNzciCi0gICJcMzQ2XDM0NlwzNDRcMzc3XDM0NVwzNDVcMzQzXDM3N1wzNDNcMzQzXDM0MVwzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNjBcMzYwXDM1N1wzNzdcMjQzXDI0M1wyNDJcMzc3XDIyNVwyMjVcMjI0XDM3N1wyMjRcMjI0XDIyM1wzNzciCi0gICJcMjUxXDI1MVwyNTBcMzc3XDIzMlwyMzJcMjMxXDM3N1wyNDdcMjQ3XDI0NlwzNzdcMjc1XDI3NVwyNzNcMzc3XDM0MyIKLSAgIlwzNDNcMzQxXDM3N2pqaVwzNzdcMjM1XDI1NFwyNzNcMzc3XDMxNVwzMDRcMjI2XDM3N2ZzV1wzNzdcMjMzXDI1MlwyNzEiCi0gICJcMzc3ZmZlXDM3N1wzMzBcMzMwXDMyNVwzNzdcMzI3XDMyN1wzMjRcMzc3XDI0MlwyNDJcMjQxXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBfXDBcMFwwJFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNDVcMzQ1XDM0M1wzNzdcMzQzXDM0M1wzNDFcMzc3XDM0MlwzNDJcMzQwXDM3N1wzNDBcMzQwXDMzNlwzNzciCi0gICJcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNTVcMzU1XDM1NFwzNzdcMzU0XDM1NFwzNTJcMzc3XDM1MlwzNTJcMzUwIgotICAiXDM3N1wzNTFcMzUxXDM0N1wzNzdcMzQ3XDM0N1wzNDVcMzc3XDM0NVwzNDVcMzQzXDM3N1wzNDRcMzQ0XDM0MlwzNzciCi0gICJcMzQyXDM0MlwzNDBcMzc3XDM0MVwzNDFcMzM2XDM3N2hoaFwzNzdcMjQ1XDI2NFwzMDNcMzc3XDMxM1wzMDVcMjM1XDM3NyIKLSAgImx9b1wzNzdvXDIwMHNcMzc3ZWVjXDM3N1wzMjZcMzI2XDMyMlwzNzdcMzI0XDMyNFwzMjFcMzc3XDI0MlwyNDJcMjQxIgotICAiXDM3N1wwXDBcMFwzNzdcMFwwXDBfXDBcMFwwJFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDAiCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNDJcMzQyXDM0MFwzNzdcMzQxXDM0MVwzMzZcMzc3XDMzN1wzMzdcMzM1XDM3NyIKLSAgIlwzMzZcMzM2XDMzM1wzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNTJcMzUyXDM1MVwzNzdcMjMzXDIzM1wyMzIiCi0gICJcMzc3XDIxNVwyMTVcMjE0XDM3N1wzNDZcMzQ2XDM0NFwzNzdcMjc0XDI3NFwyNzNcMzc3XDIxN1wyMTdcMjE1XDM3NyIKLSAgIlwyMTZcMjE2XDIxNFwzNzdcMjcxXDI3MVwyNjZcMzc3XDMzNlwzMzZcMzMzXDM3N2dnZlwzNzdnZ2VcMzc3ZmZkXDM3NyIKLSAgImVlZFwzNzdkZGNcMzc3ZGRiXDM3N1wzMjNcMzIzXDMyMFwzNzdcMzIxXDMyMVwzMTZcMzc3XDI0MVwyNDFcMjQwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBfXDBcMFwwJFwwXDBcMFwwXDBcMFwwXDM3N1wzMjBcMzIwXDMyMFwzNzdcMFwwXDBcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNDBcMzQwXDMzNVwzNzdcMzM2XDMzNlwzMzNcMzc3XDMzNFwzMzRcMzMyXDM3N1wzMzMiCi0gICJcMzMzXDMzMFwzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNTBcMzUwXDM0NlwzNzdcMzQ2XDM0NlwzNDRcMzc3IgotICAiXDM0NVwzNDVcMzQzXDM3N1wzNDNcMzQzXDM0MVwzNzdcMzQxXDM0MVwzMzdcMzc3XDM0MFwzNDBcMzM2XDM3N1wzMzYiCi0gICJcMzM2XDMzNFwzNzdcMzM1XDMzNVwzMzJcMzc3XDMzM1wzMzNcMzMwXDM3N1wzMzJcMzMyXDMyN1wzNzdcMzMwXDMzMCIKLSAgIlwzMjVcMzc3XDMyNlwzMjZcMzIzXDM3N1wzMjVcMzI1XDMyMlwzNzdcMzIzXDMyM1wzMjBcMzc3XDMyMlwzMjJcMzE2IgotICAiXDM3N1wzMjBcMzIwXDMxNVwzNzdcMzE3XDMxN1wzMTNcMzc3XDI0MFwyNDBcMjM3XDM3N1wwXDBcMFwzNzdcMFwwXDAiCi0gICJfXDBcMFwwJFwwXDBcMFwwXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzMzVcMzM1IgotICAiXDMzMlwzNzdcMzMzXDMzM1wzMzBcMzc3XDMzMlwzMzJcMzI3XDM3N1wzMzBcMzMwXDMyNVwzNzdcMFwwXDBcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNDVcMzQ1XDM0M1wzNzdcMjI3XDIyN1wyMjZcMzc3XDIxNlwyMTZcMjE1XDM3N1wyMTVcMjE1IgotICAiXDIxNFwzNzdcMjE0XDIxNFwyMTJcMzc3XDMzNVwzMzVcMzMzXDM3N1wyMjJcMjIyXDIyMFwzNzdcMjM2XDIzNlwyMzMiCi0gICJcMzc3XDIzNFwyMzRcMjMyXDM3N1wyMDdcMjA3XDIwNVwzNzdcMzI1XDMyNVwzMjJcMzc3XDI1N1wyNTdcMjU0XDM3NyIKLSAgIlwyMzBcMjMwXDIyNlwzNzdcMjEzXDIxM1wyMTBcMzc3XDI1M1wyNTNcMjQ3XDM3N1wzMTVcMzE1XDMxMlwzNzdcMzE0IgotICAiXDMxNFwzMTBcMzc3XDI0MlwyNDJcMjQxXDM3N1wwXDBcMFwzNzdcMFwwXDBfXDBcMFwwJFwwXDBcMFwwXDBcMFwwXDQwIgotICAiXDBcMFwwVFwwXDBcMFwzNzdcMzIwXDMyMFwzMjBcMzc3XDI2MVwyNjFcMjU3XDM3N1wyNjRcMjY0XDI2M1wzNzdcMjY0IgotICAiXDI2NFwyNjFcMzc3XDI0MFwyNDBcMjM1XDM3N1wwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM0MlwzNDJcMzQwXDM3NyIKLSAgIlwzNDFcMzQxXDMzNlwzNzdcMzM3XDMzN1wzMzVcMzc3XDMzNlwzMzZcMzMzXDM3N1wzMzRcMzM0XDMzMVwzNzdcMzMyIgotICAiXDMzMlwzMzBcMzc3XDMzMVwzMzFcMzI2XDM3N1wzMjdcMzI3XDMyNFwzNzdcMzI2XDMyNlwzMjJcMzc3XDMyNFwzMjQiCi0gICJcMzIxXDM3N1wzMjNcMzIzXDMxN1wzNzdcMzIxXDMyMVwzMTVcMzc3XDMxN1wzMTdcMzE0XDM3N1wzMTZcMzE2XDMxMiIKLSAgIlwzNzdcMzE0XDMxNFwzMTBcMzc3XDMxNFwzMTRcMzA3XDM3N1wzMTRcMzE0XDMwN1wzNzdcMjQyXDI0MlwyNDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMF9cMFwwXDAkXDBcMFwwXDBcMFwwXDBcMTJcMFwwXDBcMzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNDAiCi0gICJcMzQwXDMzNVwzNzdcMjI0XDIyNFwyMjJcMzc3XDI2NlwyNjZcMjY0XDM3N1wzMzNcMzMzXDMzMFwzNzdcMjM1XDIzNSIKLSAgIlwyMzNcMzc3XDIxMFwyMTBcMjA2XDM3N1wzMjZcMzI2XDMyM1wzNzdcMzI1XDMyNVwzMjFcMzc3XDIxNFwyMTRcMjEyIgotICAiXDM3N1wyMTdcMjE3XDIxNVwzNzdcMjAzXDIwM1wyMDBcMzc3XDMxNlwzMTZcMzEyXDM3N1wyMjRcMjI0XDIyMVwzNzciCi0gICJcMjI0XDIyNFwyMjBcMzc3XDMxNFwzMTRcMzA3XDM3N1wzMTRcMzE0XDMwN1wzNzdcMzE0XDMxNFwzMDdcMzc3XDIzNyIKLSAgIlwyMzdcMjM3XDM3N1wwXDBcMFwzNzdcMFwwXDBfXDBcMFwwJFwwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMTBcMFwwXDAlIgotICAiXDBcMFwwVFwwXDBcMGpcMFwwXDBtXDBcMFwwbVwwXDBcMG9cMFwwXDBcMzc3XDM3N1wzNzdcMzc3XDM3N1wzMzVcMzM1IgotICAiXDMzMlwzNzdcMzMzXDMzM1wzMzBcMzc3XDMzMlwzMzJcMzI3XDM3N1wzMzBcMzMwXDMyNVwzNzdcMzI2XDMyNlwzMjMiCi0gICJcMzc3XDMyNVwzMjVcMzIyXDM3N1wzMjNcMzIzXDMyMFwzNzdcMzIyXDMyMlwzMTZcMzc3XDMyMFwzMjBcMzE1XDM3NyIKLSAgIlwzMTdcMzE3XDMxM1wzNzdcMzE1XDMxNVwzMTFcMzc3XDMxNFwzMTRcMzA3XDM3N1wzMTRcMzE0XDMwN1wzNzdcMzE0IgotICAiXDMxNFwzMDdcMzc3XDMxNFwzMTRcMzA3XDM3N1wzMTRcMzE0XDMwN1wzNzdcMzE0XDMxNFwzMDdcMzc3XDI0MFwyNDAiCi0gICJcMjM3XDM3N1wwXDBcMFwzNzdcMFwwXDBfXDBcMFwwJFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwxM1wwXDAiCi0gICJcMFwzNFwwXDBcMCZcMFwwXDAoXDBcMFwwKFwwXDBcMCxcMFwwXDBcMzc3XDMyMFwzMjBcMzIwXDM3N1wyNjFcMjYxXDI1NyIKLSAgIlwzNzdcMjY0XDI2NFwyNjNcMzc3XDI2NFwyNjRcMjYxXDM3N1wyNDBcMjQwXDIzNVwzNzdcMjQwXDI0MFwyMzVcMzc3IgotICAiXDIzN1wyMzdcMjM1XDM3N1wyMzdcMjM3XDIzNVwzNzdcMjM3XDIzN1wyMzNcMzc3XDIzMVwyMzFcMjI1XDM3N1wyMTUiCi0gICJcMjE1XDIxMVwzNzdcMjEzXDIxM1wyMTFcMzc3XDIxM1wyMTNcMjExXDM3N1wyMTNcMjEzXDIxMVwzNzdcMjExXDIxMSIKLSAgIlwyMTFcMzc3XDIxMVwyMTFcMjExXDM3N1wyMDNcMjAzXDE3N1wzNzdcMjA0XDIwNFwyMDJcMzc3XV1cXFwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwXlwwXDBcMCRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFw0XDBcMFwwXDYiCi0gICJcMFwwXDBcN1wwXDBcMFw3XDBcMFwwXDEzXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDAiCi0gICJcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMjYzXDBcMFwwVFwwXDBcMFwzN1wwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcNFwwXDBcMCFcMFwwXDBTXDBcMCIKLSAgIlwwaVwwXDBcMG1cMFwwXDBtXDBcMFwwbVwwXDBcMG5cMFwwXDBuXDBcMFwwblwwXDBcMG5cMFwwXDBuXDBcMFwwblwwIgotICAiXDBcMG5cMFwwXDBuXDBcMFwwblwwXDBcMG5cMFwwXDBuXDBcMFwwblwwXDBcMG5cMFwwXDBsXDBcMFwwYFwwXDBcMDoiCi0gICJcMFwwXDBcMjNcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDFcMFwwXDBcMTJcMFwwXDBcMzRcMFwwXDAmXDBcMFwwKFwwXDBcMChcMFwwXDAoXDBcMFwwKVwwXDAiCi0gICJcMClcMFwwXDApXDBcMFwwKVwwXDBcMClcMFwwXDApXDBcMFwwKVwwXDBcMClcMFwwXDApXDBcMFwwKVwwXDBcMClcMCIKLSAgIlwwXDApXDBcMFwwKVwwXDBcMChcMFwwXDAjXDBcMFwwXDI1XDBcMFwwXDdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFw0XDBcMFwwIgotICAiXDZcMFwwXDBcN1wwXDBcMFw3XDBcMFwwXDdcMFwwXDBcN1wwXDBcMFw3XDBcMFwwXDdcMFwwXDBcN1wwXDBcMFw3XDAiCi0gICJcMFwwXDdcMFwwXDBcN1wwXDBcMFw3XDBcMFwwXDdcMFwwXDBcN1wwXDBcMFw3XDBcMFwwXDdcMFwwXDBcN1wwXDBcMCIKLSAgIlw3XDBcMFwwXDZcMFwwXDBcNFwwXDBcMFwxIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja19ub3QpCi0jZW5kaWYKLSNpZmRlZiBfX0dOVUNfXwotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19ub3RbXSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18gKDQpKSkgPSAKLSNlbHNlCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX25vdFtdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDIzMDQpICovCi0gICJcMFwwXDExXDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDk2KSAqLwotICAiXDBcMFwwYCIKLSAgLyogd2lkdGggKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBoZWlnaHQgKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBiXDBcMFwwXDI2MFwwXDBcMFwzNDIiCi0gICJcMFwwXDBcMzczXDBcMFwwXDM3M1wwXDBcMFwzNDNcMFwwXDBcMjYzXDBcMFwwalwwXDBcMFwxM1wwXDBcMFw1XDBcMCIKLSAgIlwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwYlwwXDBcMFwzNDFuXDM1XDE1XDM3N1wyNjcwXDI1XDM3N1wzMTUiCi0gICI0XDI3XDM3N1wzMTczXDI3XDM3N1wzMTUyXDI2XDM3N1wzMTAvXDI1XDM3N1wyNjAoXDIyXDM3N2hcMjdcMTJcMzc3XDAiCi0gICJcMFwwXDM0NVwwXDBcMG9cMFwwXDBcMTRcMFwwXDBcNFwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwyMjVLXDI0XDExXDM3N1wzMTA1XDI3XDM3NyIKLSAgIlwzMjM3XDMxXDM3N1wzMjE1XDMwXDM3N1wzMTczXDI3XDM3N1wzMTUxXDI2XDM3N1wzMTQwXDI1XDM3N1wzMTIuXDI1IgotICAiXDM3N1wzMTAsXDI0XDM3N1wzMDYrXDIzXDM3N1wyNzAnXDIxXDM3N0RcMTZcNVwzNzdcMFwwXDBcMjQzXDBcMFwwXDI0IgotICAiXDBcMFwwXDZcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDAiCi0gICJcMFwyMjVvXDM2XDE1XDM3N1wzMjM4XDMxXDM3N1wzMjM2XDMwXDM3N1wzMzFfSFwzNzdcMzYxXDMxN1wzMTFcMzc3XDM3MSIKLSAgIlwzNjRcMzYzXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzY0XDM1M1wzNTJcMzc3XDM1MFwyNzNcMjY1XDM3N1wzMjV2alwzNzciCi0gICJcMzA3XDc3LVwzNzdcMzAyJ1wyMVwzNzdcMzAwJVwyMVwzNzdjXDIyXDEwXDM3N1wwXDBcMFwyNDZcMFwwXDBcMjZcMCIKLSAgIlwwXDBcNlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBiS1wyNFwxMVwzNzdcMzIzIgotICAiOFwzMVwzNzdcMzIyNlwzMFwzNzdcMzUzXDI2MVwyNDZcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNzJcMzcyXDM3MlwzNzciCi0gICJcMzcyXDM3MlwzNzJcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM1NSIKLSAgIlwzMjRcMzIwXDM3N1wyNzcjXDIwXDM3N1wyNzcjXDIwXDM3N1wyNzYjXDIwXDM3N1wyNzQhXDE3XDM3N0JcMTNcNVwzNzciCi0gICJcMFwwXDB8XDBcMFwwXDI0XDBcMFwwXDRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwzNDFcMzA3IgotICAiNFwyN1wzNzdcMzIyNlwzMFwzNzdcMzUzXDI2MVwyNDZcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzJcMzcyXDM3MlwzNzciCi0gICJcMzcyXDM3MlwzNzJcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM1NSIKLSAgIlwzMjRcMzIwXDM3N1wyNzcjXDIwXDM3N1wyNzcjXDIwXDM3N1wyNzcjXDIwXDM3N1wyNzcjXDIwXDM3N1wyNzJcMzdcMTYiCi0gICJcMzc3XDI1NVwzNFwxNFwzNzdcMFwwXDBcMzUxXDBcMFwwKFwwXDBcMFwxNFwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMGJtXDM0XDE0XDM3N1wzMjI1XDMwXDM3N1wzMjZXQVwzNzdcMzcyXDM3MlwzNzJcMzc3XDM3MlwzNzJcMzcyIgotICAiXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzBcMzcwXDM3MFwzNzciCi0gICJcMzU1XDMyNFwzMjBcMzc3XDI3NyNcMjBcMzc3XDI3NyNcMjBcMzc3XDI3NyNcMjBcMzc3XDI3NyNcMjBcMzc3XDI3NyIKLSAgIiNcMjBcMzc3XDMwM0M2XDM3N1wyNjZcMzRcMTRcMzc3XlwxNlw1XDM3N1wwXDBcMFwyMDRcMFwwXDBcMzFcMFwwXDBcNSIKLSAgIlwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcMjYwXDI2Ni5cMjRcMzc3XDMxNzNcMjdcMzc3XDM0MVwyMzJcMjIwXDM3N1wzNzIiCi0gICJcMzcyXDM3MlwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcwXDM3MCIKLSAgIlwzNzBcMzc3XDM1NVwzMjRcMzIwXDM3N1wyNzcjXDIwXDM3N1wyNzcjXDIwXDM3N1wyNzcjXDIwXDM3N1wyNzcjXDIwIgotICAiXDM3N1wyNzcjXDIwXDM3N1wzNDdcMzA2XDMwMlwzNzdcMzM1XDI0N1wyNDJcMzc3XDI2NFwzMlwxM1wzNzdcMjMzXDI1IgotICAiXDExXDM3N1wwXDBcMFwzMDRcMFwwXDAnXDBcMFwwXDEzXDBcMFwwXDFcMFwwXDBcMlwwXDBcMFwzNDJcMzEzMlwyNlwzNzciCi0gICJcMzE1MVwyNlwzNzdcMzUzXDMwNlwzMDJcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcwXDM3MCIKLSAgIlwzNzBcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNTVcMzI0XDMyMFwzNzdcMjc3I1wyMFwzNzdcMjc3I1wyMFwzNzdcMjc3IgotICAiI1wyMFwzNzdcMjc3I1wyMFwzNzdcMjc3I1wyMFwzNzdcMzQ3XDMwNlwzMDJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNDciCi0gICJcMzEyXDMwNlwzNzdcMjYyXDMwXDEyXDM3N1wyNTVcMjZcMTJcMzc3XDBcMFwwXDM1MlwwXDBcMCIiNFwwXDBcMFwyMiIKLSAgIlwwXDBcMFwyXDBcMFwwXDNcMFwwXDBcMzczXDMxNDFcMjZcMzc3XDMxMy9cMjVcMzc3XDM2MVwzMzdcMzM1XDM3N1wzNzEiCi0gICJcMzcxXDM3MVwzNzdcMzcwXDM3MFwzNzBcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNTVcMzI0XDMyMFwzNzdcMjc3I1wyMCIKLSAgIlwzNzdcMjc3I1wyMFwzNzdcMjc3I1wyMFwzNzdcMjc3I1wyMFwzNzdcMjc3I1wyMFwzNzdcMzQ3XDMwNlwzMDJcMzc3IgotICAiXDM2MlwzNjJcMzYyXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzU1XDM0M1wzNDJcMzc3XDI2MFwyNlwxMlwzNzdcMjU2XDI0IgotICAiXDExXDM3N1wwXDBcMFwzNzRcMFwwXDA8XDBcMFwwXDI2XDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzNzNcMzEyL1wyNVwzNzciCi0gICJcMzExLVwyNFwzNzdcMzYxXDMzN1wzMzVcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNjdcMzY3XDM2N1wzNzdcMzU1XDMyNCIKLSAgIlwzMjBcMzc3XDI3NyNcMjBcMzc3XDI3NyNcMjBcMzc3XDI3NyNcMjBcMzc3XDI3NyNcMjBcMzc3XDI3NyNcMjBcMzc3IgotICAiXDM0N1wzMDZcMzAyXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNTEiCi0gICJcMzI3XDMyNVwzNzdcMjU2XDI0XDExXDM3N1wyNTRcMjJcMTBcMzc3XDBcMFwwXDM3NFwwXDBcMEFcMFwwXDBcMzBcMCIKLSAgIlwwXDBcM1wwXDBcMFwzXDBcMFwwXDM0M1wzMDUsXDIzXDM3N1wzMDcrXDIzXDM3N1wzNDdcMjcyXDI2NVwzNzdcMzY3IgotICAiXDM2N1wzNjdcMzc3XDM1NVwzMjRcMzIwXDM3N1wyNzcjXDIwXDM3N1wyNzcjXDIwXDM3N1wyNzcjXDIwXDM3N1wyNzciCi0gICIjXDIwXDM3N1wyNzcjXDIwXDM3N1wzNDdcMzA2XDMwMlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MVwzNjFcMzYxXDM3NyIKLSAgIlwzNjFcMzYxXDM2MVwzNzdcMzYwXDM2MFwzNjBcMzc3XDM0NlwzMjFcMzE2XDM3N1wyNTVcMjJcMTBcMzc3XDI0N1wyMCIKLSAgIlw3XDM3N1wwXDBcMFwzNTNcMFwwXDBBXDBcMFwwXDMwXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwyNjNcMjU1JVwyMFwzNzciCi0gICJcMzA1KVwyMlwzNzdcMzM1XDIyNlwyMTVcMzc3XDM1MlwzMTBcMzA0XDM3N1wyNzcjXDIwXDM3N1wyNzcjXDIwXDM3NyIKLSAgIlwyNzcjXDIwXDM3N1wyNzcjXDIwXDM3N1wyNzcjXDIwXDM3N1wzNDdcMzA2XDMwMlwzNzdcMzYyXDM2MlwzNjJcMzc3IgotICAiXDM2MVwzNjFcMzYxXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYwXDM2MFwzNjBcMzc3XDM1N1wzNTdcMzU3XDM3N1wzMzMiCi0gICJcMjU0XDI1MFwzNzdcMjUzXDIwXDdcMzc3XDIyM1wxNFw1XDM3N1wwXDBcMFwzMTBcMFwwXDA9XDBcMFwwXDI2XDBcMCIKLSAgIlwwXDNcMFwwXDBcMlwwXDBcMGpmXDI1XDExXDM3N1wzMDInXDIxXDM3N1wzMDdBMVwzNzdcMjc3I1wyMFwzNzdcMjc3IgotICAiI1wyMFwzNzdcMjc3I1wyMFwzNzdcMjc3I1wyMFwzNzdcMjc3I1wyMFwzNzdcMzQ3XDMwNVwzMDFcMzc3XDM2MlwzNjIiCi0gICJcMzYyXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNTdcMzU3XDM1NyIKLSAgIlwzNzdcMzU2XDM1NlwzNTZcMzc3XDI2NzozXDM3N1wyNTBcMTZcNlwzNzdWXDZcMlwzNzdcMFwwXDBcMjIyXDBcMFwwIgotICAiNFwwXDBcMFwyMlwwXDBcMFwyXDBcMFwwXDFcMFwwXDBcMTNcMFwwXDBcMzQ1XDI2NCNcMjBcMzc3XDI3NyNcMjBcMzc3IgotICAiXDI3NyNcMjBcMzc3XDI3NyNcMjBcMzc3XDI3NyNcMjBcMzc3XDI3NyNcMjBcMzc3XDM0N1wzMDVcMzAxXDM3N1wzNjIiCi0gICJcMzYyXDM2MlwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzU3XDM1NyIKLSAgIlwzNTdcMzc3XDM1NlwzNTZcMzU2XDM3N1wzMjFcMjIzXDIxN1wzNzdcMjUwXDE2XDZcMzc3XDIzM1wxM1w1XDM3N1wwIgotICAiXDBcMFwzNTNcMFwwXDBJXDBcMFwwJ1wwXDBcMFwxM1wwXDBcMFwxXDBcMFwwXDBcMFwwXDBcNVwwXDBcMG9DXDE0XDUiCi0gICJcMzc3XDI3NCFcMTdcMzc3XDI3M1w0MFwxNlwzNzdcMjc3I1wyMFwzNzdcMjc3I1wyMFwzNzdcMzQ0XDI3M1wyNjZcMzc3IgotICAiXDM2MlwzNjJcMzYyXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNTciCi0gICJcMzU3XDM1N1wzNzdcMzU1XDM1NVwzNTVcMzc3XDMyMVwyMjNcMjE3XDM3N1wyNDdcMTVcNlwzNzdcMjQ1XDEzXDVcMzc3IgotICAiOVwzXDFcMzc3XDBcMFwwXDIyNFwwXDBcMDtcMFwwXDBcMzFcMFwwXDBcNVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwIgotICAiXDBcMFwxNFwwXDBcMFwyNDNhXDIwXDdcMzc3XDI3MFwzNlwxNVwzNzdcMjY3XDM0XDE0XDM3N1wzMDA9MVwzNzdcMzI2IgotICAiXDIxMlwyMDFcMzc3XDMzN1wyNTVcMjQ2XDM3N1wzNDRcMzAzXDI3NlwzNzdcMzU0XDM0M1wzNDFcMzc3XDM0NlwzMjEiCi0gICJcMzE2XDM3N1wzMzJcMjUzXDI0N1wzNzdcMjY3ODBcMzc3XDI0N1wxNVw1XDM3N1wyNDRcMTNcNVwzNzdVXDVcMVwzNzciCi0gICJcMFwwXDBcMjY3XDBcMFwwRlwwXDBcMChcMFwwXDBcMTRcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFw0XDBcMFwwXDI0XDBcMFwwXDI0NkBcMTJcM1wzNzdcMjUxXDMxXDEyXDM3N1wyNjNcMzBcMTNcMzc3XDI2MVwyNiIKLSAgIlwxMlwzNzdcMjU3XDI1XDExXDM3N1wyNTVcMjNcMTBcMzc3XDI1M1wyMVwxMFwzNzdcMjUyXDIwXDdcMzc3XDI1MFwxNiIKLSAgIlw2XDM3N1wyNDZcMTRcNVwzNzdcMjMyXDEyXDRcMzc3OVwzXDFcMzc3XDBcMFwwXDI2N1wwXDBcMElcMFwwXDAvXDBcMCIKLSAgIlwwXDI0XDBcMFwwXDRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDZcMFwwXDBcMjYiCi0gICJcMFwwXDB8XDBcMFwwXDM1MVxcXDEzXDVcMzc3XDIzMFwyMlwxMFwzNzdcMjUyXDIzXDEwXDM3N1wyNTNcMjFcN1wzNzciCi0gICJcMjUxXDE3XDdcMzc3XDI0NFwxNlw2XDM3N1wyMjFcMTNcNFwzNzdVXDVcMlwzNzdcMFwwXDBcMzUzXDBcMFwwXDIyNCIKLSAgIlwwXDBcMEZcMFwwXDAvXDBcMFwwXDI2XDBcMFwwXDZcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFw2XDBcMFwwXDI0XDBcMFwwKFwwXDBcMFwyMDRcMFwwXDBcMzA0XDBcMFwwIgotICAiXDM1MlwwXDBcMFwzNzRcMFwwXDBcMzc0XDBcMFwwXDM1M1wwXDBcMFwzMTBcMFwwXDBcMjIyXDBcMFwwSVwwXDBcMDsiCi0gICJcMFwwXDAoXDBcMFwwXDI0XDBcMFwwXDZcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcNFwwXDBcMFwxNFwwXDBcMFwzMVwwXDBcMCdcMFwwXDAiIjQiCi0gICJcMFwwXDA8XDBcMFwwQVwwXDBcMEFcMFwwXDA8XDBcMFwwIiI0XDBcMFwwJ1wwXDBcMFwzMVwwXDBcMFwxNFwwXDBcMCIKLSAgIlw0XDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDVcMFwwXDBcMTNcMFwwXDBcMjJcMFwwXDBcMjZcMFwwIgotICAiXDBcMzBcMFwwXDBcMzBcMFwwXDBcMjZcMFwwXDBcMjJcMFwwXDBcMTNcMFwwXDBcNVwwXDBcMFwxXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDJcMFwwXDBcM1wwXDBcMFwzXDBcMCIKLSAgIlwwXDNcMFwwXDBcM1wwXDBcMFwyXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja190YWJsZV9ib3JkZXJzKQotI2VuZGlmCi0jaWZkZWYgX19HTlVDX18KLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfdGFibGVfYm9yZGVyc1tdIF9fYXR0cmlidXRlX18gKChfX2FsaWduZWRfXyAoNCkpKSA9IAotI2Vsc2UKLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfdGFibGVfYm9yZGVyc1tdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDIzMDQpICovCi0gICJcMFwwXDExXDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDk2KSAqLwotICAiXDBcMFwwYCIKLSAgLyogd2lkdGggKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBoZWlnaHQgKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMTZcMFwwXDBcM1wwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzVcMzc1XDM3NVwzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzMzZcMzM2XDMzNlwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwRVwwXDBcMFwxNlwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYwXDM2MFwzNjAiCi0gICJcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzYwXDM3NyIKLSAgIlwzNjBcMzYwXDM2MFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MlwzNjJcMzYyXDM3N25ublwzNzdcMzYzXDM2M1wzNjNcMzc3IgotICAiXDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjYiCi0gICJcMzY2XDM2NlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MCIKLSAgIlwzNjBcMzYwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjBcMzYwIgotICAiXDM2MFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjMiCi0gICJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3NyIKLSAgIlwzNjZcMzY2XDM2NlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYwXDM2MFwzNjAiCi0gICJcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzYwXDM3NyIKLSAgIlwzNjBcMzYwXDM2MFwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MlwzNjJcMzYyXDM3N2pqalwzNzdcMzYzXDM2M1wzNjNcMzc3IgotICAiXDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjYiCi0gICJcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNDdcMzQ3XDM0N1wzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MCIKLSAgIlwzNjBcMzYwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxIgotICAiXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0XDM2NFwzNjQiCi0gICJcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NlwzNjZcMzY2XDM3NyIKLSAgIlwzNjdcMzY3XDM2N1wzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNTBcMzUwXDM1MFwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYwXDM2MFwzNjAiCi0gICJcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MVwzNjFcMzYxXDM3NyIKLSAgIlwzNjJcMzYyXDM2MlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N2tra1wzNzdcMzY1XDM2NVwzNjVcMzc3IgotICAiXDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjciCi0gICJcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNTBcMzUwXDM1MFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MCIKLSAgIlwzNjBcMzYwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjJcMzYyIgotICAiXDM2MlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjUiCi0gICJcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2N1wzNjdcMzY3XDM3NyIKLSAgIlwzNzBcMzcwXDM3MFwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNTFcMzUxXDM1MVwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYwXDM2MFwzNjAiCi0gICJcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MlwzNjJcMzYyXDM3NyIKLSAgIlwzNjNcMzYzXDM2M1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NVwzNjVcMzY1XDM3N2tra1wzNzdcMzY2XDM2NlwzNjZcMzc3IgotICAiXDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzEiCi0gICJcMzcxXDM3MVwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNTFcMzUxXDM1MVwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MSIKLSAgIlwzNjFcMzYxXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjNcMzYzIgotICAiXDM2M1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY2XDM2NlwzNjYiCi0gICJcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MVwzNzFcMzcxXDM3NyIKLSAgIlwzNzFcMzcxXDM3MVwzNzdcMzcyXDM3MlwzNzJcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNTJcMzUyXDM1MlwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzZcMzc2XDM3NlwzNzdra2tcMzc3XDM2MlwzNjIiCi0gICJcMzYyXDM3N2pqalwzNzdcMzYzXDM2M1wzNjNcMzc3ampqXDM3N1wzNjRcMzY0XDM2NFwzNzdra2tcMzc3XDM2NlwzNjYiCi0gICJcMzY2XDM3N2xsbFwzNzdcMzY3XDM2N1wzNjdcMzc3bGxsXDM3N1wzNzBcMzcwXDM3MFwzNzdtbW1cMzc3XDM3MVwzNzEiCi0gICJcMzcxXDM3N21tbVwzNzdcMzcyXDM3MlwzNzJcMzc3bm5uXDM3N1wzNTNcMzUzXDM1M1wzNzdcMFwwXDBcMzc3XDBcMCIKLSAgIlwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MlwzNjIiCi0gICJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NSIKLSAgIlwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY3XDM2N1wzNjdcMzc3IgotICAiXDM3MFwzNzBcMzcwXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNzIiCi0gICJcMzcyXDM3MlwzNzdcMzczXDM3M1wzNzNcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNTNcMzUzXDM1M1wzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM2MyIKLSAgIlwzNjNcMzYzXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1IgotICAiXDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N2xsbFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MVwzNzEiCi0gICJcMzcxXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcyXDM3MlwzNzJcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNzNcMzczXDM3MyIKLSAgIlwzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNTRcMzU0XDM1NFwzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM2M1wzNjMiCi0gICJcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NiIKLSAgIlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcxXDM3MVwzNzFcMzc3IgotICAiXDM3MVwzNzFcMzcxXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzcyXDM3MlwzNzJcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzQiCi0gICJcMzc0XDM3NFwzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNTRcMzU0XDM1NFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NCIKLSAgIlwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjZcMzY2IgotICAiXDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N21tbVwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzIiCi0gICJcMzcyXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzczXDM3M1wzNzNcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzRcMzc0XDM3NCIKLSAgIlwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNTVcMzU1XDM1NVwzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjUiCi0gICJcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2NyIKLSAgIlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcyXDM3MlwzNzJcMzc3IgotICAiXDM3MlwzNzJcMzcyXDM3N1wzNzNcMzczXDM3M1wzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzUiCi0gICJcMzc1XDM3NVwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NlwzNzZcMzc2XDM3N1wzNTZcMzU2XDM1NlwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NSIKLSAgIlwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjdcMzY3IgotICAiXDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MVwzNzFcMzcxXDM3N21tbVwzNzdcMzcyXDM3MlwzNzJcMzc3XDM3M1wzNzMiCi0gICJcMzczXDM3N1wzNzRcMzc0XDM3NFwzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzVcMzc1XDM3NSIKLSAgIlwzNzdcMzc2XDM3NlwzNzZcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NlwzNjYiCi0gICJcMzY2XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNzBcMzcwXDM3MCIKLSAgIlwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzczXDM3M1wzNzNcMzc3IgotICAiXDM3NFwzNzRcMzc0XDM3N1wzNzRcMzc0XDM3NFwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzYiCi0gICJcMzc2XDM3NlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NiIKLSAgIlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzFcMzcxIgotICAiXDM3MVwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N25ublwzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NFwzNzQiCi0gICJcMzc0XDM3N1wzNzVcMzc1XDM3NVwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NlwzNzZcMzc2XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwUlwwXDBcMFwyMFwwIgotICAiXDBcMFwwXDBcMFwwXDE1XDBcMFwwRFwwXDBcMFJcMFwwXDBSXDBcMFwwUlwwXDBcMFJcMFwwXDBSXDBcMFwwUlwwXDAiCi0gICJcMFJcMFwwXDBSXDBcMFwwUlwwXDBcMFJcMFwwXDBSXDBcMFwwUlwwXDBcMFJcMFwwXDBSXDBcMFwwUlwwXDBcMFJcMCIKLSAgIlwwXDBSXDBcMFwwUlwwXDBcMFJcMFwwXDBFXDBcMFwwXDE2XDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwxNVwwXDBcMFwyMCIKLSAgIlwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMCIKLSAgIlwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwIgotICAiXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwxNlwwXDBcMFwzIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja190YWJsZV9maWxsKQotI2VuZGlmCi0jaWZkZWYgX19HTlVDX18KLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfdGFibGVfZmlsbFtdIF9fYXR0cmlidXRlX18gKChfX2FsaWduZWRfXyAoNCkpKSA9IAotI2Vsc2UKLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfdGFibGVfZmlsbFtdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDIzMDQpICovCi0gICJcMFwwXDExXDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDk2KSAqLwotICAiXDBcMFwwYCIKLSAgLyogd2lkdGggKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBoZWlnaHQgKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMTZcMFwwXDBcM1wwXDBcMFwwXDBcMFwwXDM3N1wyNjJcMjYyXDI2MlwzNzdcMjYyXDI2MlwyNjJcMzc3XDI2MiIKLSAgIlwyNjJcMjYyXDM3N1wyNjJcMjYyXDI2MlwzNzdcMjYyXDI2MlwyNjJcMzc3XDI2MlwyNjJcMjYyXDM3N1wyNjJcMjYyIgotICAiXDI2MlwzNzdcMjYyXDI2MlwyNjJcMzc3XDI2MlwyNjJcMjYyXDM3N1wyNjBcMjYwXDI2MFwzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzMzZcMzM2XDMzNlwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwRVwwXDBcMFwxNlwwXDBcMFwwXDBcMFwwXDM3N1wyNjJcMjYyXDI2MlwzNzdcMjQ3XDI0N1wyNDciCi0gICJcMzc3XDI0N1wyNDdcMjQ3XDM3N1wyNDdcMjQ3XDI0N1wzNzdcMjQ3XDI0N1wyNDdcMzc3XDI0N1wyNDdcMjQ3XDM3NyIKLSAgIlwyNDdcMjQ3XDI0N1wzNzdcMjQ3XDI0N1wyNDdcMzc3XDI1MFwyNTBcMjUwXDM3N0xMTFwzNzdcMzYzXDM2M1wzNjNcMzc3IgotICAiXDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjYiCi0gICJcMzY2XDM2NlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wyNjJcMjYyXDI2MlwzNzdcMjQ3XDI0N1wyNDdcMzc3XDI0NyIKLSAgIlwyNDdcMjQ3XDM3N1wyNDdcMjQ3XDI0N1wzNzdcMjQ3XDI0N1wyNDdcMzc3XDI0N1wyNDdcMjQ3XDM3N1wyNDdcMjQ3IgotICAiXDI0N1wzNzdcMjQ3XDI0N1wyNDdcMzc3XDI1MFwyNTBcMjUwXDM3N1wyNTBcMjUwXDI1MFwzNzdcMzYzXDM2M1wzNjMiCi0gICJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3NyIKLSAgIlwzNjZcMzY2XDM2NlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wyNjJcMjYyXDI2MlwzNzdcMjQ3XDI0N1wyNDciCi0gICJcMzc3XDI0N1wyNDdcMjQ3XDM3N1wyNDdcMjQ3XDI0N1wzNzdcMjQ3XDI0N1wyNDdcMzc3XDI0N1wyNDdcMjQ3XDM3NyIKLSAgIlwyNDdcMjQ3XDI0N1wzNzdcMjUwXDI1MFwyNTBcMzc3XDI1MFwyNTBcMjUwXDM3N0lJSVwzNzdcMzYzXDM2M1wzNjNcMzc3IgotICAiXDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjYiCi0gICJcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNDdcMzQ3XDM0N1wzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wyNjJcMjYyXDI2MlwzNzdcMjQ3XDI0N1wyNDdcMzc3XDI0NyIKLSAgIlwyNDdcMjQ3XDM3N1wyNDdcMjQ3XDI0N1wzNzdcMjQ3XDI0N1wyNDdcMzc3XDI0N1wyNDdcMjQ3XDM3N1wyNTBcMjUwIgotICAiXDI1MFwzNzdcMjUwXDI1MFwyNTBcMzc3XDI1MVwyNTFcMjUxXDM3N1wyNTFcMjUxXDI1MVwzNzdcMzY0XDM2NFwzNjQiCi0gICJcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NlwzNjZcMzY2XDM3NyIKLSAgIlwzNjdcMzY3XDM2N1wzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNTBcMzUwXDM1MFwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wyNjJcMjYyXDI2MlwzNzdcMjQ3XDI0N1wyNDciCi0gICJcMzc3XDI0N1wyNDdcMjQ3XDM3N1wyNDdcMjQ3XDI0N1wzNzdcMjQ3XDI0N1wyNDdcMzc3XDI1MFwyNTBcMjUwXDM3NyIKLSAgIlwyNTBcMjUwXDI1MFwzNzdcMjUwXDI1MFwyNTBcMzc3XDI1MVwyNTFcMjUxXDM3N0pKSlwzNzdcMzY1XDM2NVwzNjVcMzc3IgotICAiXDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjciCi0gICJcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNTBcMzUwXDM1MFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wyNjJcMjYyXDI2MlwzNzdcMjQ3XDI0N1wyNDdcMzc3XDI0NyIKLSAgIlwyNDdcMjQ3XDM3N1wyNDdcMjQ3XDI0N1wzNzdcMjUwXDI1MFwyNTBcMzc3XDI1MFwyNTBcMjUwXDM3N1wyNTBcMjUwIgotICAiXDI1MFwzNzdcMjUxXDI1MVwyNTFcMzc3XDI1MlwyNTJcMjUyXDM3N1wyNTNcMjUzXDI1M1wzNzdcMzY1XDM2NVwzNjUiCi0gICJcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2N1wzNjdcMzY3XDM3NyIKLSAgIlwzNzBcMzcwXDM3MFwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNTFcMzUxXDM1MVwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wyNjJcMjYyXDI2MlwzNzdcMjQ3XDI0N1wyNDciCi0gICJcMzc3XDI0N1wyNDdcMjQ3XDM3N1wyNTBcMjUwXDI1MFwzNzdcMjUwXDI1MFwyNTBcMzc3XDI1MFwyNTBcMjUwXDM3NyIKLSAgIlwyNTFcMjUxXDI1MVwzNzdcMjUxXDI1MVwyNTFcMzc3XDI1M1wyNTNcMjUzXDM3N0pKSlwzNzdcMzY2XDM2NlwzNjZcMzc3IgotICAiXDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzEiCi0gICJcMzcxXDM3MVwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNTFcMzUxXDM1MVwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wyNjJcMjYyXDI2MlwzNzdcMjUwXDI1MFwyNTBcMzc3XDI1MCIKLSAgIlwyNTBcMjUwXDM3N1wyNTBcMjUwXDI1MFwzNzdcMjUwXDI1MFwyNTBcMzc3XDI1MVwyNTFcMjUxXDM3N1wyNTFcMjUxIgotICAiXDI1MVwzNzdcMjUyXDI1MlwyNTJcMzc3XDI1M1wyNTNcMjUzXDM3N1wyNTNcMjUzXDI1M1wzNzdcMzY2XDM2NlwzNjYiCi0gICJcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MVwzNzFcMzcxXDM3NyIKLSAgIlwzNzFcMzcxXDM3MVwzNzdcMzcyXDM3MlwzNzJcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNTJcMzUyXDM1MlwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wyNjFcMjYxXDI2MVwzNzdKSkpcMzc3XDI1MFwyNTAiCi0gICJcMjUwXDM3N0lJSVwzNzdcMjUxXDI1MVwyNTFcMzc3SUlJXDM3N1wyNTJcMjUyXDI1MlwzNzdKSkpcMzc3XDI1M1wyNTMiCi0gICJcMjUzXDM3N0tLS1wzNzdcMjU0XDI1NFwyNTRcMzc3S0tLXDM3N1wyNTVcMjU1XDI1NVwzNzdMTExcMzc3XDI1NVwyNTUiCi0gICJcMjU1XDM3N0xMTFwzNzdcMjU2XDI1NlwyNTZcMzc3TExMXDM3N1wyNDRcMjQ0XDI0NFwzNzdcMFwwXDBcMzc3XDBcMCIKLSAgIlwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MlwzNjIiCi0gICJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NSIKLSAgIlwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wyNTRcMjU0XDI1NFwzNzdcMjU0XDI1NFwyNTRcMzc3IgotICAiXDI1NVwyNTVcMjU1XDM3N1wyNTVcMjU1XDI1NVwzNzdcMjU1XDI1NVwyNTVcMzc3XDI1NlwyNTZcMjU2XDM3N1wyNTYiCi0gICJcMjU2XDI1NlwzNzdcMjU3XDI1N1wyNTdcMzc3XDI1N1wyNTdcMjU3XDM3N1wyNDRcMjQ0XDI0NFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM2MyIKLSAgIlwzNjNcMzYzXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1IgotICAiXDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N0tLS1wzNzdcMjU1XDI1NVwyNTVcMzc3XDI1NVwyNTUiCi0gICJcMjU1XDM3N1wyNTVcMjU1XDI1NVwzNzdcMjU2XDI1NlwyNTZcMzc3XDI1NlwyNTZcMjU2XDM3N1wyNTdcMjU3XDI1NyIKLSAgIlwzNzdcMjU3XDI1N1wyNTdcMzc3XDI1N1wyNTdcMjU3XDM3N1wyNDRcMjQ0XDI0NFwzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM2M1wzNjMiCi0gICJcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NiIKLSAgIlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wyNTVcMjU1XDI1NVwzNzdcMjU1XDI1NVwyNTVcMzc3IgotICAiXDI1NVwyNTVcMjU1XDM3N1wyNTZcMjU2XDI1NlwzNzdcMjU2XDI1NlwyNTZcMzc3XDI1N1wyNTdcMjU3XDM3N1wyNTciCi0gICJcMjU3XDI1N1wzNzdcMjU3XDI1N1wyNTdcMzc3XDI2MFwyNjBcMjYwXDM3N1wyNDRcMjQ0XDI0NFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NCIKLSAgIlwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjZcMzY2IgotICAiXDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N0xMTFwzNzdcMjU1XDI1NVwyNTVcMzc3XDI1NlwyNTYiCi0gICJcMjU2XDM3N1wyNTZcMjU2XDI1NlwzNzdcMjU3XDI1N1wyNTdcMzc3XDI1N1wyNTdcMjU3XDM3N1wyNTdcMjU3XDI1NyIKLSAgIlwzNzdcMjYwXDI2MFwyNjBcMzc3XDI2MFwyNjBcMjYwXDM3N1wyNDVcMjQ1XDI0NVwzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjUiCi0gICJcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2NyIKLSAgIlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MVwzNzFcMzcxXDM3N1wyNTVcMjU1XDI1NVwzNzdcMjU2XDI1NlwyNTZcMzc3IgotICAiXDI1NlwyNTZcMjU2XDM3N1wyNTdcMjU3XDI1N1wzNzdcMjU3XDI1N1wyNTdcMzc3XDI1N1wyNTdcMjU3XDM3N1wyNjAiCi0gICJcMjYwXDI2MFwzNzdcMjYwXDI2MFwyNjBcMzc3XDI2MVwyNjFcMjYxXDM3N1wyNDZcMjQ2XDI0NlwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NSIKLSAgIlwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjdcMzY3IgotICAiXDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MVwzNzFcMzcxXDM3N0xMTFwzNzdcMjU2XDI1NlwyNTZcMzc3XDI1N1wyNTciCi0gICJcMjU3XDM3N1wyNTdcMjU3XDI1N1wzNzdcMjU3XDI1N1wyNTdcMzc3XDI2MFwyNjBcMjYwXDM3N1wyNjBcMjYwXDI2MCIKLSAgIlwzNzdcMjYxXDI2MVwyNjFcMzc3XDI2MlwyNjJcMjYyXDM3N1wyNDZcMjQ2XDI0NlwzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NlwzNjYiCi0gICJcMzY2XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNzBcMzcwXDM3MCIKLSAgIlwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N1wyNTZcMjU2XDI1NlwzNzdcMjU3XDI1N1wyNTdcMzc3IgotICAiXDI1N1wyNTdcMjU3XDM3N1wyNTdcMjU3XDI1N1wzNzdcMjYwXDI2MFwyNjBcMzc3XDI2MFwyNjBcMjYwXDM3N1wyNjEiCi0gICJcMjYxXDI2MVwzNzdcMjYyXDI2MlwyNjJcMzc3XDI2MlwyNjJcMjYyXDM3N1wyNDZcMjQ2XDI0NlwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NiIKLSAgIlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzFcMzcxIgotICAiXDM3MVwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N0xMTFwzNzdcMjU3XDI1N1wyNTdcMzc3XDI1N1wyNTciCi0gICJcMjU3XDM3N1wyNjBcMjYwXDI2MFwzNzdcMjYwXDI2MFwyNjBcMzc3XDI2MVwyNjFcMjYxXDM3N1wyNjJcMjYyXDI2MiIKLSAgIlwzNzdcMjYyXDI2MlwyNjJcMzc3XDI2MlwyNjJcMjYyXDM3N1wyNDZcMjQ2XDI0NlwzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wzNTZcMzU2XDM1NlwzNzdcMzQ2XDM0NlwzNDZcMzc3XDM0NlwzNDYiCi0gICJcMzQ2XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzQ3XDM0N1wzNDdcMzc3XDM1MFwzNTBcMzUwXDM3N1wzNTBcMzUwXDM1MCIKLSAgIlwzNzdcMzUxXDM1MVwzNTFcMzc3XDM1MlwzNTJcMzUyXDM3N1wyNDRcMjQ0XDI0NFwzNzdcMjQ0XDI0NFwyNDRcMzc3IgotICAiXDI0NFwyNDRcMjQ0XDM3N1wyNDRcMjQ0XDI0NFwzNzdcMjQ1XDI0NVwyNDVcMzc3XDI0NlwyNDZcMjQ2XDM3N1wyNDYiCi0gICJcMjQ2XDI0NlwzNzdcMjQ2XDI0NlwyNDZcMzc3XDI0NlwyNDZcMjQ2XDM3N1wyMzJcMjMyXDIzMlwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDAiCi0gICJcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwUlwwXDBcMFwyMFwwXDBcMFwwXDBcMFwwXDE1XDBcMFwwIgotICAiRFwwXDBcMFJcMFwwXDBSXDBcMFwwUlwwXDBcMFJcMFwwXDBSXDBcMFwwUlwwXDBcMFJcMFwwXDBSXDBcMFwwUlwwXDAiCi0gICJcMFJcMFwwXDBSXDBcMFwwUlwwXDBcMFJcMFwwXDBSXDBcMFwwUlwwXDBcMFJcMFwwXDBSXDBcMFwwUlwwXDBcMFJcMCIKLSAgIlwwXDBFXDBcMFwwXDE2XDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwxNVwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwIgotICAiXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMCIKLSAgIlwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMFwyMFwwXDBcMCIKLSAgIlwyMFwwXDBcMFwxNlwwXDBcMFwzIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja190ZXh0X2J1bGxldGVkX2xpc3QpCi0jZW5kaWYKLSNpZmRlZiBfX0dOVUNfXwotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja190ZXh0X2J1bGxldGVkX2xpc3RbXSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18gKDQpKSkgPSAKLSNlbHNlCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX3RleHRfYnVsbGV0ZWRfbGlzdFtdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDIzMDQpICovCi0gICJcMFwwXDExXDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDk2KSAqLwotICAiXDBcMFwwYCIKLSAgLyogd2lkdGggKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBoZWlnaHQgKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDI3XDBcMFwwXDIyNFwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwyMzIiCi0gICJcMFwwXDAnXDBcMFwwXDZcMFwwXDBcMVwwXDBcMFwyMjRcMzQyXDM0MlwzNDJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjIiCi0gICJcMzYyXDM2MlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYzXDM2MyIKLSAgIlwzNjNcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NFwzNjRcMzY0IgotICAiXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NlwzNzciCi0gICJcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY0XDM2NFwzNjRcMzc3XDMzMyIKLSAgIlwzMzNcMzMzXDM3N1wwXDBcMFwyNDNcMFwwXDBcMjVcMFwwXDBcNlwwXDBcMFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM0MCIKLSAgIlwzNDBcMzQwXDM3N1wzNDBcMzQwXDM0MFwzNzdcMzQxXDM0MVwzNDFcMzc3XDM0MlwzNDJcMzQyXDM3N1wzNDNcMzQzIgotICAiXDM0M1wzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NVwzNDVcMzQ1XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzQ3XDM0N1wzNDciCi0gICJcMzc3XDM1MFwzNTBcMzUwXDM3N1wzNTBcMzUwXDM1MFwzNzdcMzUxXDM1MVwzNTFcMzc3XDM1MlwzNTJcMzUyXDM3NyIKLSAgIlwzNTNcMzUzXDM1M1wzNzdcMzU0XDM1NFwzNTRcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3IgotICAiXDM1N1wzNTdcMzc3XDM1NVwzNTVcMzU1XDM3N1wwXDBcMFwzNzdcMFwwXDApXDBcMFwwXDE2XDBcMFwwXDM3N1wzNjIiCi0gICJcMzYyXDM2MlwzNzdcMzQxXDM0MVwzNDFcMzc3XDM0MVwzNDFcMzQxXDM3N1wzNDJcMzQyXDM0MlwzNzdcMzQzXDM0MyIKLSAgIlwzNDNcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDVcMzQ1XDM0NVwzNzdcMzQ2XDM0NlwzNDZcMzc3XDM0N1wzNDdcMzQ3IgotICAiXDM3N1wzNTBcMzUwXDM1MFwzNzdcMzUxXDM1MVwzNTFcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTJcMzUyXDM1MlwzNzciCi0gICJcMzUzXDM1M1wzNTNcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1NyIKLSAgIlwzNTdcMzU3XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYxXDM2MVwzNjFcMzc3XDBcMFwwXDM3N1wwXDBcMCIiOFwwXDBcMCIKLSAgIlwyNVwwXDBcMFwzNzdcMzYyXDM2MlwzNjJcMzc3XDM0MlwzNDJcMzQyXDM3N1wzNDNcMzQzXDM0M1wzNzdcMjM2XDIzNiIKLSAgIlwyMzZcMzc3bW1tXDM3N1wyMzdcMjM3XDIzN1wzNzdcMzQ2XDM0NlwzNDZcMzc3XDM0N1wzNDdcMzQ3XDM3N29vb1wzNzciCi0gICJwcHBcMzc3cHBwXDM3N3FxcVwzNzdxcXFcMzc3cXFxXDM3N3JyclwzNzdycnJcMzc3c3NzXDM3N1wzNjBcMzYwXDM2MCIKLSAgIlwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MlwzNjJcMzYyXDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwIgotICAiXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzQzXDM0M1wzNDNcMzc3XDM0NFwzNDRcMzQ0XDM3N25ublwzNzdubm5cMzc3bm4iCi0gICJuXDM3N1wzNDdcMzQ3XDM0N1wzNzdcMzUwXDM1MFwzNTBcMzc3XDM1MVwzNTFcMzUxXDM3N1wzNTJcMzUyXDM1MlwzNzciCi0gICJcMzUzXDM1M1wzNTNcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NiIKLSAgIlwzNTZcMzU2XDM3N1wzNTdcMzU3XDM1N1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNjJcMzYyIgotICAiXDM2MlwzNzdcMzYzXDM2M1wzNjNcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2M1wzNjMiCi0gICJcMzYzXDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ1XDM0NVwzNDVcMzc3XDI0MFwyNDBcMjQwXDM3N29vb1wzNzdcMjQxXDI0MSIKLSAgIlwyNDFcMzc3XDM1MFwzNTBcMzUwXDM3N1wzNTFcMzUxXDM1MVwzNzdwcHBcMzc3cXFxXDM3N3FxcVwzNzdycnJcMzc3IgotICAicnJyXDM3N3Nzc1wzNzdzc3NcMzc3c3NzXDM3N3R0dFwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjQiCi0gICJcMzY0XDM2NFwzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzYzXDM2M1wzNjNcMzc3XDM0NSIKLSAgIlwzNDVcMzQ1XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzQ3XDM0N1wzNDdcMzc3XDM1MFwzNTBcMzUwXDM3N1wzNTFcMzUxIgotICAiXDM1MVwzNzdcMzUxXDM1MVwzNTFcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTNcMzUzXDM1M1wzNzdcMzU0XDM1NFwzNTQiCi0gICJcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3XDM1N1wzNTdcMzc3XDM2MFwzNjBcMzYwXDM3NyIKLSAgIlwzNTZcMzU2XDM1NlwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0IgotICAiXDM2NFwzNjRcMzc3XDM2NVwzNjVcMzY1XDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNjQiCi0gICJcMzY0XDM2NFwzNzdcMzQ2XDM0NlwzNDZcMzc3XDM0N1wzNDdcMzQ3XDM3N1wzNTBcMzUwXDM1MFwzNzdcMzUxXDM1MSIKLSAgIlwzNTFcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTJcMzUyXDM1MlwzNzdcMzUzXDM1M1wzNTNcMzc3cXFxXDM3N3JyclwzNzciCi0gICJycnJcMzc3c3NzXDM3N3Nzc1wzNzd0dHRcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYzXDM2MyIKLSAgIlwzNjNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDBcMFwwXDM3N1wwIgotICAiXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNDdcMzQ3XDM0N1wzNzdcMzUwXDM1MFwzNTAiCi0gICJcMzc3XDM1MVwzNTFcMzUxXDM3N1wzNTJcMzUyXDM1MlwzNzdcMzUzXDM1M1wzNTNcMzc3XDM1NFwzNTRcMzU0XDM3NyIKLSAgIlwzNTRcMzU0XDM1NFwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTdcMzU3XDM1N1wzNzdcMzYwIgotICAiXDM2MFwzNjBcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjQiCi0gICJcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2NyIKLSAgIlwzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM1MFwzNTBcMzUwIgotICAiXDM3N1wzNTFcMzUxXDM1MVwzNzdcMzUyXDM1MlwzNTJcMzc3XDM1M1wzNTNcMzUzXDM3N1wzNTRcMzU0XDM1NFwzNzciCi0gICJcMzU1XDM1NVwzNTVcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3XDM1N1wzNTdcMzc3XDM2MCIKLSAgIlwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0IgotICAiXDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY3XDM2N1wzNjciCi0gICJcMzc3XDM3MFwzNzBcMzcwXDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNjVcMzY1XDM2NSIKLSAgIlwzNzdcMzUxXDM1MVwzNTFcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTNcMzUzXDM1M1wzNzdcMzU0XDM1NFwzNTRcMzc3IgotICAiXDM1NVwzNTVcMzU1XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3XDM1N1wzNTdcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjAiCi0gICJcMzYwXDM2MFwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0XDM2NCIKLSAgIlwzNjRcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwIgotICAiXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcxXDM3MVwzNzFcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDAiCi0gICJcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNTJcMzUyXDM1MlwzNzdcMzUzXDM1M1wzNTNcMzc3XDM1NFwzNTRcMzU0XDM3NyIKLSAgIlwzNTVcMzU1XDM1NVwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYxIgotICAiXDM2MVwzNjFcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjQiCi0gICJcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNzBcMzcwXDM3MCIKLSAgIlwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNzJcMzcyXDM3MlwzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzY2XDM2NlwzNjZcMzc3XDM1M1wzNTNcMzUzXDM3N1wzNTRcMzU0XDM1NFwzNzciCi0gICJcMzAzXDMwM1wzMDNcMzc3cnJyXDM3N1wzMDRcMzA0XDMwNFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MVwzNjFcMzYxXDM3NyIKLSAgInR0dFwzNzd1dXVcMzc3XDIwM1wyMDNcMjAzXDM3N3V1dVwzNzd2dnZcMzc3dnZ2XDM3N3d3d1wzNzd3d3dcMzc3eHh4IgotICAiXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzczXDM3M1wzNzNcMzc3XDM3NFwzNzRcMzc0XDM3N1wwXDBcMFwzNzdcMFwwXDAiCi0gICI9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNjdcMzY3XDM2N1wzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NVwzNTVcMzU1XDM3NyIKLSAgInJyclwzNzdzc3NcMzc3c3NzXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3NyIKLSAgIlwzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY3IgotICAiXDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcyXDM3MlwzNzJcMzc3XDM3M1wzNzMiCi0gICJcMzczXDM3N1wzNzRcMzc0XDM3NFwzNzdcMzc1XDM3NVwzNzVcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMCIKLSAgIlwwXDBcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3XDM1N1wzNTdcMzc3XDMwNFwzMDRcMzA0IgotICAiXDM3N3Nzc1wzNzdcMzA2XDMwNlwzMDZcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzd1dXVcMzc3dnYiCi0gICJ2XDM3N3Z2dlwzNzd3d3dcMzc3d3d3XDM3N3d3d1wzNzd4eHhcMzc3eHh4XDM3N1wzNzNcMzczXDM3M1wzNzdcMzc0XDM3NCIKLSAgIlwzNzRcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzZcMzc2XDM3NlwzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwIgotICAiXDBcMFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjIiCi0gICJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NVwzNjVcMzY1XDM3NyIKLSAgIlwzNjZcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcyIgotICAiXDM3MlwzNzJcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzNcMzczXDM3M1wzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NVwzNzUiCi0gICJcMzc1XDM3N1wzNzZcMzc2XDM3NlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wwXDBcMFwzNzdcMCIKLSAgIlwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MlwzNjJcMzYyIgotICAiXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzciCi0gICJcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MiIKLSAgIlwzNzJcMzcyXDM3N1wzNzNcMzczXDM3M1wzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzVcMzc1IgotICAiXDM3NVwzNzdcMzc2XDM3NlwzNzZcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjJcMzYyXDM2MiIKLSAgIlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3IgotICAiXDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzIiCi0gICJcMzcyXDM3MlwzNzdcMzczXDM3M1wzNzNcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzVcMzc1XDM3NVwzNzdcMzc2XDM3NiIKLSAgIlwzNzZcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNTRcMzU0XDM1NFwzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwyMzJcMzExXDMxMVwzMTEiCi0gICJcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNzBcMzcwXDM3MFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3NyIKLSAgIlwzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcyIgotICAiXDM3MlwzNzJcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzRcMzc0XDM3NFwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NlwzNzYiCi0gICJcMzc2XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzU2XDM1NlwzNTZcMzc3XDI3NVwyNzVcMjc1XDM3N1wwXDBcMFwzMjRcMFwwXDA6XDBcMFwwXDI2XDBcMFwwIgotICAiXDM0XDBcMFwwXDI0M1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDAiCi0gICJcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzMjRcMCIKLSAgIlwwXDBZXDBcMFwwLVwwXDBcMFwyMFwwXDBcMFw2XDBcMFwwXDI0XDBcMFwwKVwwXDBcMCIiOFwwXDBcMDxcMFwwXDA9IgotICAiXDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwIgotICAiPVwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDAiIjlcMFwwXDAtXDBcMFwwXDMxXDBcMFwwXDdcMFwwXDAiCi0gICJcMVwwXDBcMFw2XDBcMFwwXDE2XDBcMFwwXDI0XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMCIKLSAgIlwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3IgotICAiXDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI1XDBcMFwwXDIwXDBcMFwwXDdcMFwwXDAiCi0gICJcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwyXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMCIKLSAgIlwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwIgotICAiXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwyXDBcMFwwXDFcMFwwXDBcMCJ9OwotCi0KLS8qIEdka1BpeGJ1ZiBSR0JBIEMtU291cmNlIGltYWdlIGR1bXAgKi8KLQotI2lmZGVmIF9fU1VOUFJPX0MKLSNwcmFnbWEgYWxpZ24gNCAoc3RvY2tfdGV4dF9pbmRlbnQpCi0jZW5kaWYKLSNpZmRlZiBfX0dOVUNfXwotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja190ZXh0X2luZGVudFtdIF9fYXR0cmlidXRlX18gKChfX2FsaWduZWRfXyAoNCkpKSA9IAotI2Vsc2UKLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfdGV4dF9pbmRlbnRbXSA9IAotI2VuZGlmCi17ICIiCi0gIC8qIFBpeGJ1ZiBtYWdpYyAoMHg0NzY0NmI1MCkgKi8KLSAgIkdka1AiCi0gIC8qIGxlbmd0aDogaGVhZGVyICgyNCkgKyBwaXhlbF9kYXRhICgyMzA0KSAqLwotICAiXDBcMFwxMVwzMCIKLSAgLyogcGl4ZGF0YV90eXBlICgweDEwMTAwMDIpICovCi0gICJcMVwxXDBcMiIKLSAgLyogcm93c3RyaWRlICg5NikgKi8KLSAgIlwwXDBcMGAiCi0gIC8qIHdpZHRoICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogaGVpZ2h0ICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogcGl4ZWxfZGF0YTogKi8KLSAgIlwwXDBcMFwyN1wwXDBcMFwyMjRcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMjMyIgotICAiXDBcMFwwJ1wwXDBcMFw2XDBcMFwwXDFcMFwwXDBcMjI0XDM0MlwzNDJcMzQyXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYyIgotICAiXDM2MlwzNjJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2M1wzNjMiCi0gICJcMzYzXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjRcMzY0XDM2NCIKLSAgIlwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3IgotICAiXDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY3XDM2N1wzNjdcMzc3XDM2NFwzNjRcMzY0XDM3N1wzMzMiCi0gICJcMzMzXDMzM1wzNzdcMFwwXDBcMjQzXDBcMFwwXDI1XDBcMFwwXDZcMFwwXDBcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNDAiCi0gICJcMzQwXDM0MFwzNzdcMzQwXDM0MFwzNDBcMzc3XDM0MVwzNDFcMzQxXDM3N1wzNDJcMzQyXDM0MlwzNzdcMzQzXDM0MyIKLSAgIlwzNDNcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDVcMzQ1XDM0NVwzNzdcMjU2XDI1NlwyNTZcMzc3XDM0N1wzNDdcMzQ3IgotICAiXDM3N1wzNTBcMzUwXDM1MFwzNzdcMzUwXDM1MFwzNTBcMzc3XDM1MVwzNTFcMzUxXDM3N1wzNTJcMzUyXDM1MlwzNzciCi0gICJcMzUzXDM1M1wzNTNcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1NyIKLSAgIlwzNTdcMzU3XDM3N1wzNDNcMzQzXDM0M1wzNzdcMFwwXDBcMzc3XDBcMFwwKVwwXDBcMFwxNlwwXDBcMFwzNzdcMzYyIgotICAiXDM2MlwzNjJcMzc3XDM0MVwzNDFcMzQxXDM3N1wzNDFcMzQxXDM0MVwzNzdcMzQyXDM0MlwzNDJcMzc3XDM0M1wzNDMiCi0gICJcMzQzXDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ1XDM0NVwzNDVcMzc3XDM0NlwzNDZcMzQ2XDM3N1wzNDdcMzQ3XDM0NyIKLSAgIlwzNzdcMzUwXDM1MFwzNTBcMzc3XDM1MVwzNTFcMzUxXDM3N1wzNTJcMzUyXDM1MlwzNzdcMzUyXDM1MlwzNTJcMzc3IgotICAiXDM1M1wzNTNcMzUzXDM3N1wzNTRcMzU0XDM1NFwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTciCi0gICJcMzU3XDM1N1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM0N1wzNDdcMzQ3XDM3N1wwXDBcMFwzNzdcMFwwXDAiIjhcMFwwXDAiCi0gICJcMjVcMFwwXDBcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNDJcMzQyXDM0MlwzNzdcMjU0XDI1NFwyNTRcMzc3XDI1NFwyNTQiCi0gICJcMjU0XDM3N1wyNTVcMjU1XDI1NVwzNzdcMjU2XDI1NlwyNTZcMzc3XDI1NlwyNTZcMjU2XDM3N1wyNTdcMjU3XDI1NyIKLSAgIlwzNzdcMjYwXDI2MFwyNjBcMzc3XDI2MVwyNjFcMjYxXDM3N1wyNjJcMjYyXDI2MlwzNzdcMjYyXDI2MlwyNjJcMzc3IgotICAiXDI2M1wyNjNcMjYzXDM3N1wyNjNcMjYzXDI2M1wzNzdcMjY0XDI2NFwyNjRcMzc3XDI2NVwyNjVcMjY1XDM3N1wyNjUiCi0gICJcMjY1XDI2NVwzNzdcMjY2XDI2NlwyNjZcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNTBcMzUwXDM1MFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzYzXDM2M1wzNjNcMzc3XDM0M1wzNDNcMzQzXDM3N1wzNDRcMzQ0XDM0NCIKLSAgIlwzNzdcMzQ1XDM0NVwzNDVcMzc3XDM0NVwzNDVcMzQ1XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzQ3XDM0N1wzNDdcMzc3IgotICAiXDM1MFwzNTBcMzUwXDM3N1wzNTFcMzUxXDM1MVwzNzdcMzUyXDM1MlwzNTJcMzc3XDM1M1wzNTNcMzUzXDM3N1wzNTQiCi0gICJcMzU0XDM1NFwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3XDM1NyIKLSAgIlwzNTdcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3XDM1MVwzNTFcMzUxIgotICAiXDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzQ0XDM0NFwzNDQiCi0gICJcMzc3XDM0NVwzNDVcMzQ1XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzQ3XDM0N1wzNDdcMzc3XDM0N1wzNDdcMzQ3XDM3NyIKLSAgIlwzNTBcMzUwXDM1MFwzNzdcMzUxXDM1MVwzNTFcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTNcMzUzXDM1M1wzNzdcMzU0IgotICAiXDM1NFwzNTRcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3XDM1N1wzNTdcMzc3XDM1N1wzNTciCi0gICJcMzU3XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2MyIKLSAgIlwzNzdcMzUyXDM1MlwzNTJcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2M1wzNjNcMzYzIgotICAiXDM3N1wzNDVcMzQ1XDM0NVwzNzdcMzQ2XDM0NlwzNDZcMzc3XDM0N1wzNDdcMzQ3XDM3N1wzNTBcMzUwXDM1MFwzNzciCi0gICJcMzUxXDM1MVwzNTFcMzc3XDM1MVwzNTFcMzUxXDM3N1wzNTJcMzUyXDM1MlwzNzd1dXVcMzc3dnZ2XDM3N3Z2dlwzNzciCi0gICJ3d3dcMzc3d3d3XDM3N3h4eFwzNzd4eHhcMzc3eHh4XDM3N3l5eVwzNzd5eXlcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNTMiCi0gICJcMzUzXDM1M1wzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzY0XDM2NFwzNjRcMzc3XDM0NiIKLSAgIlwzNDZcMzQ2XDM3N1wzNDdcMzQ3XDM0N1wzNzdcMzUwXDM1MFwzNTBcMzc3XDI1MlwyNTJcMjUyXDM3N1wzNTJcMzUyIgotICAiXDM1MlwzNzdcMzUyXDM1MlwzNTJcMzc3XDM1M1wzNTNcMzUzXDM3N1wzNTRcMzU0XDM1NFwzNzdcMzU1XDM1NVwzNTUiCi0gICJcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTdcMzU3XDM1N1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MVwzNjFcMzYxXDM3NyIKLSAgIlwzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1IgotICAiXDM2NVwzNjVcMzc3XDM1NFwzNTRcMzU0XDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNjQiCi0gICJcMzY0XDM2NFwzNzdcMzQ3XDM0N1wzNDdcMzc3XDM1MFwzNTBcMzUwXDM3N1wzNTFcMzUxXDM1MVwzNzdcMFwwXDBcMzc3IgotICAiXDI1NFwyNTRcMjU0XDM3N1wzNTRcMzU0XDM1NFwzNzdcMzU0XDM1NFwzNTRcMzc3dnZ2XDM3N3d3d1wzNzd3d3dcMzc3IgotICAieHh4XDM3N3h4eFwzNzd5eXlcMzc3eXl5XDM3N3p6elwzNzd6enpcMzc3enp6XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzU1IgotICAiXDM1NVwzNTVcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2NVwzNjVcMzY1XDM3N1wwXDAiCi0gICJcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDI1NVwyNTVcMjU1XDM3N1wzNTZcMzU2IgotICAiXDM1NlwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYxXDM2MVwzNjEiCi0gICJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NVwzNjVcMzY1XDM3NyIKLSAgIlwzNjZcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM1MVwzNTFcMzUxXDM3N1wzNTIiCi0gICJcMzUyXDM1MlwzNzdcMzUzXDM1M1wzNTNcMzc3XDBcMFwwXDM3N1wyNTVcMjU1XDI1NVwzNzdcMzU2XDM1NlwzNTZcMzc3IgotICAiXDM1N1wzNTdcMzU3XDM3N3h4eFwzNzd4eHhcMzc3eHh4XDM3N3l5eVwzNzd5eXlcMzc3enp6XDM3N3p6elwzNzd7e3siCi0gICJcMzc3e3t7XDM3N3x8fFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM1N1wzNTdcMzU3XDM3N1wwXDBcMFwzNzdcMFwwXDA9XDAiCi0gICJcMFwwXDI3XDBcMFwwXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzUyXDM1MlwzNTJcMzc3XDM1M1wzNTNcMzUzXDM3N1wzNTQiCi0gICJcMzU0XDM1NFwzNzdcMjU1XDI1NVwyNTVcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTdcMzU3XDM1N1wzNzdcMzYwXDM2MCIKLSAgIlwzNjBcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzIgotICAiXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzciCi0gICJcMzcwXDM3MFwzNzBcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzYwXDM2MFwzNjBcMzc3XDBcMCIKLSAgIlwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNTNcMzUzXDM1M1wzNzdcMzU0IgotICAiXDM1NFwzNTRcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3XDM1N1wzNTdcMzc3XDM2MFwzNjAiCi0gICJcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzd5eXlcMzc3eXl5XDM3N3p6elwzNzd6enpcMzc3enp6XDM3N1wzNjZcMzY2XDM2NiIKLSAgIlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcyXDM3MlwzNzJcMzc3IgotICAiXDM3M1wzNzNcMzczXDM3N1wzNjJcMzYyXDM2MlwzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzciCi0gICJcMzY3XDM2N1wzNjdcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1NyIKLSAgIlwzNTdcMzU3XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzIgotICAiXDM2M1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjYiCi0gICJcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3NyIKLSAgIlwzNzNcMzczXDM3M1wzNzdcMzc0XDM3NFwzNzRcMzc3XDM2M1wzNjNcMzYzXDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMCIKLSAgIlwwXDI3XDBcMFwwXDM3N1wzNjdcMzY3XDM2N1wzNzdcMzU2XDM1NlwzNTZcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNTdcMzU3IgotICAiXDM1N1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjMiCi0gICJcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3NyIKLSAgIlwzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzczIgotICAiXDM3M1wzNzNcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzVcMzc1XDM3NVwzNzdcMzY0XDM2NFwzNjRcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMjY3XDI2N1wyNjciCi0gICJcMzc3XDI3MFwyNzBcMjcwXDM3N1wyNzBcMjcwXDI3MFwzNzdcMjcwXDI3MFwyNzBcMzc3XDI3MVwyNzFcMjcxXDM3NyIKLSAgIlwyNzJcMjcyXDI3MlwzNzdcMjczXDI3M1wyNzNcMzc3XDI3M1wyNzNcMjczXDM3N1wyNzRcMjc0XDI3NFwzNzdcMjc1IgotICAiXDI3NVwyNzVcMzc3XDI3NlwyNzZcMjc2XDM3N1wyNzZcMjc2XDI3NlwzNzdcMjc2XDI3NlwyNzZcMzc3XDI3N1wyNzciCi0gICJcMjc3XDM3N1wzMDBcMzAwXDMwMFwzNzdcMzAxXDMwMVwzMDFcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjVcMzY1XDM2NSIKLSAgIlwzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM2MVwzNjFcMzYxIgotICAiXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjRcMzY0XDM2NFwzNzciCi0gICJcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MSIKLSAgIlwzNzFcMzcxXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzczXDM3M1wzNzNcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzVcMzc1IgotICAiXDM3NVwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NlwzNzZcMzc2XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM2NVwzNjVcMzY1XDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNjJcMzYyXDM2MiIKLSAgIlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3IgotICAiXDM2NlwzNjZcMzY2XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDI3NFwyNzRcMjc0XDM3N1wzNzEiCi0gICJcMzcxXDM3MVwzNzdcMzcyXDM3MlwzNzJcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzRcMzc0XDM3NFwzNzdcMzc1XDM3NSIKLSAgIlwzNzVcMzc3XDM3NlwzNzZcMzc2XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzMxXDMzMVwzMzFcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDAiCi0gICJcMjMyXDMxMVwzMTFcMzExXDM3N1wzMzJcMzMyXDMzMlwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1M1wzNTNcMzUzXDM3NyIKLSAgIlwzNTRcMzU0XDM1NFwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3IgotICAiXDM1N1wzNTdcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjMiCi0gICJcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NSIKLSAgIlwzNzdcMzY1XDM2NVwzNjVcMzc3XDM0NFwzNDRcMzQ0XDM3N1wyNzVcMjc1XDI3NVwzNzdcMFwwXDBcMzI0XDBcMFwwIgotICAiOlwwXDBcMFwyNlwwXDBcMFwzNFwwXDBcMFwyNDNcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzI0XDBcMFwwWVwwXDBcMC1cMFwwXDBcMjBcMFwwXDBcNlwwXDBcMFwyNFwwXDBcMClcMFwwXDAiIjhcMCIKLSAgIlwwXDA8XDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDA9IgotICAiXDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwIiI5XDBcMFwwLVwwXDBcMFwzMVwwIgotICAiXDBcMFw3XDBcMFwwXDFcMFwwXDBcNlwwXDBcMFwxNlwwXDBcMFwyNFwwXDBcMFwyN1wwXDBcMFwyN1wwXDBcMFwyN1wwIgotICAiXDBcMFwyN1wwXDBcMFwyN1wwXDBcMFwyN1wwXDBcMFwyN1wwXDBcMFwyN1wwXDBcMFwyN1wwXDBcMFwyN1wwXDBcMFwyNyIKLSAgIlwwXDBcMFwyN1wwXDBcMFwyN1wwXDBcMFwyN1wwXDBcMFwyN1wwXDBcMFwyN1wwXDBcMFwyNVwwXDBcMFwyMFwwXDBcMCIKLSAgIlw3XDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcMlwwXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwIgotICAiXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDAiCi0gICJcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDBcMlwwXDBcMFwxXDBcMFwwXDAifTsKLQotCi0vKiBHZGtQaXhidWYgUkdCQSBDLVNvdXJjZSBpbWFnZSBkdW1wICovCi0KLSNpZmRlZiBfX1NVTlBST19DCi0jcHJhZ21hIGFsaWduIDQgKHN0b2NrX3RleHRfbnVtYmVyZWRfbGlzdCkKLSNlbmRpZgotI2lmZGVmIF9fR05VQ19fCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX3RleHRfbnVtYmVyZWRfbGlzdFtdIF9fYXR0cmlidXRlX18gKChfX2FsaWduZWRfXyAoNCkpKSA9IAotI2Vsc2UKLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfdGV4dF9udW1iZXJlZF9saXN0W10gPSAKLSNlbmRpZgoteyAiIgotICAvKiBQaXhidWYgbWFnaWMgKDB4NDc2NDZiNTApICovCi0gICJHZGtQIgotICAvKiBsZW5ndGg6IGhlYWRlciAoMjQpICsgcGl4ZWxfZGF0YSAoMjMwNCkgKi8KLSAgIlwwXDBcMTFcMzAiCi0gIC8qIHBpeGRhdGFfdHlwZSAoMHgxMDEwMDAyKSAqLwotICAiXDFcMVwwXDIiCi0gIC8qIHJvd3N0cmlkZSAoOTYpICovCi0gICJcMFwwXDBgIgotICAvKiB3aWR0aCAoMjQpICovCi0gICJcMFwwXDBcMzAiCi0gIC8qIGhlaWdodCAoMjQpICovCi0gICJcMFwwXDBcMzAiCi0gIC8qIHBpeGVsX2RhdGE6ICovCi0gICJcMFwwXDBcMjdcMFwwXDBcMjI0XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDIzMiIKLSAgIlwwXDBcMCdcMFwwXDBcNlwwXDBcMFwxXDBcMFwwXDIyNFwzNDJcMzQyXDM0MlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MiIKLSAgIlwzNjJcMzYyXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjNcMzYzIgotICAiXDM2M1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY0XDM2NFwzNjQiCi0gICJcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3NyIKLSAgIlwzNjZcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjRcMzY0XDM2NFwzNzdcMzMzIgotICAiXDMzM1wzMzNcMzc3XDBcMFwwXDI0M1wwXDBcMFwyNVwwXDBcMFw2XDBcMFwwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzQwIgotICAiXDM0MFwzNDBcMzc3XDM0MFwzNDBcMzQwXDM3N1wzNDFcMzQxXDM0MVwzNzdcMzQyXDM0MlwzNDJcMzc3XDM0M1wzNDMiCi0gICJcMzQzXDM3N1wzNDRcMzQ0XDM0NFwzNzdcMzQ1XDM0NVwzNDVcMzc3XDM0NlwzNDZcMzQ2XDM3N1wzNDdcMzQ3XDM0NyIKLSAgIlwzNzdcMzUwXDM1MFwzNTBcMzc3XDM1MFwzNTBcMzUwXDM3N1wzNTFcMzUxXDM1MVwzNzdcMzUyXDM1MlwzNTJcMzc3IgotICAiXDM1M1wzNTNcMzUzXDM3N1wzNTRcMzU0XDM1NFwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTciCi0gICJcMzU3XDM1N1wzNzdcMzU1XDM1NVwzNTVcMzc3XDBcMFwwXDM3N1wwXDBcMClcMFwwXDBcMTZcMFwwXDBcMzc3XDM2MiIKLSAgIlwzNjJcMzYyXDM3N1wzNDFcMzQxXDM0MVwzNzdcMzQxXDM0MVwzNDFcMzc3XDMxNFwzMTRcMzE0XDM3N21tbVwzNzdcMzQ0IgotICAiXDM0NFwzNDRcMzc3XDM0NVwzNDVcMzQ1XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzQ3XDM0N1wzNDdcMzc3XDM1MFwzNTAiCi0gICJcMzUwXDM3N1wzNTFcMzUxXDM1MVwzNzdcMzUyXDM1MlwzNTJcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTNcMzUzXDM1MyIKLSAgIlwzNzdcMzU0XDM1NFwzNTRcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3XDM1N1wzNTdcMzc3IgotICAiXDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMFwwXDBcMzc3XDBcMFwwIiI4XDBcMFwwXDI1XDBcMFwwXDM3NyIKLSAgIlwzNjJcMzYyXDM2MlwzNzdcMzQyXDM0MlwzNDJcMzc3XDMxNVwzMTVcMzE1XDM3N21tbVwzNzdtbW1cMzc3XDM0NVwzNDUiCi0gICJcMzQ1XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzQ3XDM0N1wzNDdcMzc3b29vXDM3N3BwcFwzNzdwcHBcMzc3cXFxXDM3NyIKLSAgInFxcVwzNzdxcXFcMzc3cnJyXDM3N3JyclwzNzdzc3NcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyIgotICAiXDM2MlwzNjJcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNDMiCi0gICJcMzQzXDM0M1wzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NVwzNDVcMzQ1XDM3N25ublwzNzdcMzQ2XDM0NlwzNDZcMzc3XDM0NyIKLSAgIlwzNDdcMzQ3XDM3N1wzNTBcMzUwXDM1MFwzNzdcMzUxXDM1MVwzNTFcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTNcMzUzIgotICAiXDM1M1wzNzdcMzU0XDM1NFwzNTRcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU2XDM1NlwzNTYiCi0gICJcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MlwzNjJcMzYyXDM3NyIKLSAgIlwzNjNcMzYzXDM2M1wzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzYzXDM2M1wzNjNcMzc3IgotICAiXDM0NFwzNDRcMzQ0XDM3N1wzNDVcMzQ1XDM0NVwzNzdcMzQ2XDM0NlwzNDZcMzc3b29vXDM3N1wzNDdcMzQ3XDM0N1wzNzciCi0gICJcMzUwXDM1MFwzNTBcMzc3XDM1MVwzNTFcMzUxXDM3N3BwcFwzNzdxcXFcMzc3cXFxXDM3N3JyclwzNzdycnJcMzc3cyIKLSAgInNzXDM3N3Nzc1wzNzdzc3NcMzc3dHR0XDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjRcMzY0IgotICAiXDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzQ1XDM0NVwzNDUiCi0gICJcMzc3XDM0NlwzNDZcMzQ2XDM3N1wzNDdcMzQ3XDM0N1wzNzdvb29cMzc3XDM1MVwzNTFcMzUxXDM3N1wzNTFcMzUxXDM1MSIKLSAgIlwzNzdcMzUyXDM1MlwzNTJcMzc3XDM1M1wzNTNcMzUzXDM3N1wzNTRcMzU0XDM1NFwzNzdcMzU1XDM1NVwzNTVcMzc3IgotICAiXDM1NlwzNTZcMzU2XDM3N1wzNTdcMzU3XDM1N1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNjAiCi0gICJcMzYwXDM2MFwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NSIKLSAgIlwzNjVcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNDZcMzQ2IgotICAiXDM0NlwzNzdcMzQ3XDM0N1wzNDdcMzc3XDM1MFwzNTBcMzUwXDM3N1wzNTFcMzUxXDM1MVwzNzdcMzUyXDM1MlwzNTIiCi0gICJcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTNcMzUzXDM1M1wzNzdcMjA2XDIwNlwyMDZcMzc3cnJyXDM3N3JyclwzNzdzcyIKLSAgInNcMzc3c3NzXDM3N3R0dFwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0IgotICAiXDM2NFwzNjRcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NlwzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyNyIKLSAgIlwwXDBcMFwzNzdcMzY0XDM2NFwzNjRcMzc3XDM0N1wzNDdcMzQ3XDM3N1wzNTBcMzUwXDM1MFwzNzdcMzUxXDM1MVwzNTEiCi0gICJcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTNcMzUzXDM1M1wzNzdcMzU0XDM1NFwzNTRcMzc3XDM1NFwzNTRcMzU0XDM3NyIKLSAgIlwzNTVcMzU1XDM1NVwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYxIgotICAiXDM2MVwzNjFcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NVwzNjUiCi0gICJcMzY1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wwXDBcMFwzNzdcMCIKLSAgIlwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzUwXDM1MFwzNTBcMzc3XDM1MVwzNTFcMzUxIgotICAiXDM3N1wzNTJcMzUyXDM1MlwzNzdcMzUzXDM1M1wzNTNcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNTVcMzU1XDM1NVwzNzciCi0gICJcMzU2XDM1NlwzNTZcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTdcMzU3XDM1N1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MSIKLSAgIlwzNjFcMzYxXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1IgotICAiXDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzAiCi0gICJcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNTFcMzUxXDM1MSIKLSAgIlwzNzdcMzUyXDM1MlwzNTJcMzc3XDM1M1wzNTNcMzUzXDM3N1wzNTRcMzU0XDM1NFwzNzdcMzU1XDM1NVwzNTVcMzc3IgotICAiXDM1NlwzNTZcMzU2XDM3N1wzNTdcMzU3XDM1N1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjEiCi0gICJcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NSIKLSAgIlwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MFwzNzBcMzcwIgotICAiXDM3N1wzNzFcMzcxXDM3MVwzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzY1XDM2NVwzNjUiCi0gICJcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTNcMzUzXDM1M1wzNzdcMzAzXDMwM1wzMDNcMzc3cnJyXDM3N1wzMjdcMzI3XDMyNyIKLSAgIlwzNzdcMzU3XDM1N1wzNTdcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3IgotICAiXDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjYiCi0gICJcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcyXDM3MiIKLSAgIlwzNzJcMzc3XDM3MlwzNzJcMzcyXDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNjZcMzY2IgotICAiXDM2NlwzNzdcMzUzXDM1M1wzNTNcMzc3XDM1NFwzNTRcMzU0XDM3N3JyclwzNzdcMzU2XDM1NlwzNTZcMzc3c3NzXDM3NyIKLSAgIlwzNjBcMzYwXDM2MFwzNzdcMzYxXDM2MVwzNjFcMzc3dHR0XDM3N3V1dVwzNzdcMjAzXDIwM1wyMDNcMzc3dXV1XDM3NyIKLSAgInZ2dlwzNzd2dnZcMzc3d3d3XDM3N3d3d1wzNzd4eHhcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNzNcMzczXDM3M1wzNzdcMzc0IgotICAiXDM3NFwzNzRcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNTUiCi0gICJcMzU1XDM1NVwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NlwzNTZcMzU2XDM3N1wzMzBcMzMwXDMzMFwzNzdzc3NcMzc3XDM2MSIKLSAgIlwzNjFcMzYxXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1IgotICAiXDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzAiCi0gICJcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzczXDM3M1wzNzNcMzc3XDM3NFwzNzRcMzc0XDM3NyIKLSAgIlwzNzVcMzc1XDM3NVwzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzY3XDM2N1wzNjdcMzc3IgotICAiXDM1NlwzNTZcMzU2XDM3N1wzNTdcMzU3XDM1N1wzNzdcMzMwXDMzMFwzMzBcMzc3c3NzXDM3N1wzMzJcMzMyXDMzMlwzNzciCi0gICJcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N3V1dVwzNzd2dnZcMzc3dnZ2XDM3N3d3d1wzNzd3d3dcMzc3dyIKLSAgInd3XDM3N3h4eFwzNzd4eHhcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzRcMzc0XDM3NFwzNzdcMzc1XDM3NVwzNzVcMzc3IgotICAiXDM3NlwzNzZcMzc2XDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNzBcMzcwXDM3MFwzNzciCi0gICJcMzYwXDM2MFwzNjBcMzc3XDM2MVwzNjFcMzYxXDM3N3R0dFwzNzd0dHRcMzc3dXV1XDM3N1wzNjRcMzY0XDM2NFwzNzciCi0gICJcMzY1XDM2NVwzNjVcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MSIKLSAgIlwzNzFcMzcxXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzczXDM3M1wzNzNcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzRcMzc0IgotICAiXDM3NFwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NlwzNzZcMzc2XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNjFcMzYxXDM2MSIKLSAgIlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY0XDM2NFwzNjRcMzc3IgotICAiXDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzEiCi0gICJcMzcxXDM3MVwzNzdcMzcyXDM3MlwzNzJcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzRcMzc0XDM3NFwzNzdcMzc1XDM3NSIKLSAgIlwzNzVcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzZcMzc2XDM3NlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzYyXDM2MlwzNjIiCi0gICJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NVwzNjVcMzY1XDM3NyIKLSAgIlwzNjZcMzY2XDM2NlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcxIgotICAiXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNzNcMzczXDM3M1wzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NVwzNzUiCi0gICJcMzc1XDM3N1wzNzZcMzc2XDM3NlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM1NFwzNTRcMzU0XDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwIgotICAiXDIzMlwzMTFcMzExXDMxMVwzNzdcMzU1XDM1NVwzNTVcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNjVcMzY1XDM2NVwzNzciCi0gICJcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MSIKLSAgIlwzNzFcMzcxXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzczXDM3M1wzNzNcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzVcMzc1IgotICAiXDM3NVwzNzdcMzc2XDM3NlwzNzZcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMjc1XDI3NVwyNzVcMzc3XDBcMFwwXDMyNFwwXDBcMCIKLSAgIjpcMFwwXDBcMjZcMFwwXDBcMzRcMFwwXDBcMjQzXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDMyNFwwXDBcMFlcMFwwXDAtXDBcMFwwXDIwXDBcMFwwXDZcMFwwXDBcMjRcMFwwXDApXDBcMFwwIiI4XDAiCi0gICJcMFwwPFwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwPSIKLSAgIlwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMCIiOVwwXDBcMC1cMFwwXDBcMzFcMCIKLSAgIlwwXDBcN1wwXDBcMFwxXDBcMFwwXDZcMFwwXDBcMTZcMFwwXDBcMjRcMFwwXDBcMjdcMFwwXDBcMjdcMFwwXDBcMjdcMCIKLSAgIlwwXDBcMjdcMFwwXDBcMjdcMFwwXDBcMjdcMFwwXDBcMjdcMFwwXDBcMjdcMFwwXDBcMjdcMFwwXDBcMjdcMFwwXDBcMjciCi0gICJcMFwwXDBcMjdcMFwwXDBcMjdcMFwwXDBcMjdcMFwwXDBcMjdcMFwwXDBcMjdcMFwwXDBcMjVcMFwwXDBcMjBcMFwwXDAiCi0gICJcN1wwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDJcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMCIKLSAgIlwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwIgotICAiXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDJcMFwwXDBcMVwwXDBcMFwwIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja190ZXh0X3VuaW5kZW50KQotI2VuZGlmCi0jaWZkZWYgX19HTlVDX18KLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfdGV4dF91bmluZGVudFtdIF9fYXR0cmlidXRlX18gKChfX2FsaWduZWRfXyAoNCkpKSA9IAotI2Vsc2UKLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfdGV4dF91bmluZGVudFtdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDIzMDQpICovCi0gICJcMFwwXDExXDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDk2KSAqLwotICAiXDBcMFwwYCIKLSAgLyogd2lkdGggKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBoZWlnaHQgKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDI3XDBcMFwwXDIyNFwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwyMzIiCi0gICJcMFwwXDAnXDBcMFwwXDZcMFwwXDBcMVwwXDBcMFwyMjRcMzQyXDM0MlwzNDJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjIiCi0gICJcMzYyXDM2MlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYzXDM2MyIKLSAgIlwzNjNcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NFwzNjRcMzY0IgotICAiXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NlwzNzciCi0gICJcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY0XDM2NFwzNjRcMzc3XDMzMyIKLSAgIlwzMzNcMzMzXDM3N1wwXDBcMFwyNDNcMFwwXDBcMjVcMFwwXDBcNlwwXDBcMFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM0MCIKLSAgIlwzNDBcMzQwXDM3N1wzNDBcMzQwXDM0MFwzNzdcMzQxXDM0MVwzNDFcMzc3XDM0MlwzNDJcMzQyXDM3N1wzNDNcMzQzIgotICAiXDM0M1wzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0NVwzNDVcMzQ1XDM3N1wyNTZcMjU2XDI1NlwzNzdcMzQ3XDM0N1wzNDciCi0gICJcMzc3XDM1MFwzNTBcMzUwXDM3N1wzNTBcMzUwXDM1MFwzNzdcMzUxXDM1MVwzNTFcMzc3XDM1MlwzNTJcMzUyXDM3NyIKLSAgIlwzNTNcMzUzXDM1M1wzNzdcMzU0XDM1NFwzNTRcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3IgotICAiXDM1N1wzNTdcMzc3XDM0M1wzNDNcMzQzXDM3N1wwXDBcMFwzNzdcMFwwXDApXDBcMFwwXDE2XDBcMFwwXDM3N1wzNjIiCi0gICJcMzYyXDM2MlwzNzdcMzQxXDM0MVwzNDFcMzc3XDM0MVwzNDFcMzQxXDM3N1wzNDJcMzQyXDM0MlwzNzdcMzQzXDM0MyIKLSAgIlwzNDNcMzc3XDM0NFwzNDRcMzQ0XDM3N1wzNDVcMzQ1XDM0NVwzNzdcMzQ2XDM0NlwzNDZcMzc3XDM0N1wzNDdcMzQ3IgotICAiXDM3N1wzNTBcMzUwXDM1MFwzNzdcMzUxXDM1MVwzNTFcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNTJcMzUyXDM1MlwzNzciCi0gICJcMzUzXDM1M1wzNTNcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1NyIKLSAgIlwzNTdcMzU3XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzQ3XDM0N1wzNDdcMzc3XDBcMFwwXDM3N1wwXDBcMCIiOFwwXDBcMCIKLSAgIlwyNVwwXDBcMFwzNzdcMzYyXDM2MlwzNjJcMzc3XDM0MlwzNDJcMzQyXDM3N1wyNTRcMjU0XDI1NFwzNzdcMjU0XDI1NCIKLSAgIlwyNTRcMzc3XDI1NVwyNTVcMjU1XDM3N1wyNTZcMjU2XDI1NlwzNzdcMjU2XDI1NlwyNTZcMzc3XDI1N1wyNTdcMjU3IgotICAiXDM3N1wyNjBcMjYwXDI2MFwzNzdcMjYxXDI2MVwyNjFcMzc3XDI2MlwyNjJcMjYyXDM3N1wyNjJcMjYyXDI2MlwzNzciCi0gICJcMjYzXDI2M1wyNjNcMzc3XDI2M1wyNjNcMjYzXDM3N1wyNjRcMjY0XDI2NFwzNzdcMjY1XDI2NVwyNjVcMzc3XDI2NSIKLSAgIlwyNjVcMjY1XDM3N1wyNjZcMjY2XDI2NlwzNzdcMzYxXDM2MVwzNjFcMzc3XDM1MFwzNTBcMzUwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzQzXDM0M1wzNDNcMzc3XDM0NFwzNDRcMzQ0IgotICAiXDM3N1wzNDVcMzQ1XDM0NVwzNzdcMzQ1XDM0NVwzNDVcMzc3XDM0NlwzNDZcMzQ2XDM3N1wzNDdcMzQ3XDM0N1wzNzciCi0gICJcMzUwXDM1MFwzNTBcMzc3XDM1MVwzNTFcMzUxXDM3N1wzNTJcMzUyXDM1MlwzNzdcMzUzXDM1M1wzNTNcMzc3XDM1NCIKLSAgIlwzNTRcMzU0XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTdcMzU3IgotICAiXDM1N1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzUxXDM1MVwzNTEiCi0gICJcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNDRcMzQ0XDM0NCIKLSAgIlwzNzdcMzQ1XDM0NVwzNDVcMzc3XDM0NlwzNDZcMzQ2XDM3N1wzNDdcMzQ3XDM0N1wzNzdcMzQ3XDM0N1wzNDdcMzc3IgotICAiXDM1MFwzNTBcMzUwXDM3N1wzNTFcMzUxXDM1MVwzNzdcMzUyXDM1MlwzNTJcMzc3XDM1M1wzNTNcMzUzXDM3N1wzNTQiCi0gICJcMzU0XDM1NFwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTdcMzU3XDM1N1wzNzdcMzU3XDM1NyIKLSAgIlwzNTdcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzIgotICAiXDM3N1wzNTJcMzUyXDM1MlwzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzYzXDM2M1wzNjMiCi0gICJcMzc3XDM0NVwzNDVcMzQ1XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzQ3XDM0N1wzNDdcMzc3XDM1MFwzNTBcMzUwXDM3NyIKLSAgIlwzNTFcMzUxXDM1MVwzNzdcMzUxXDM1MVwzNTFcMzc3XDM1MlwzNTJcMzUyXDM3N3V1dVwzNzd2dnZcMzc3dnZ2XDM3NyIKLSAgInd3d1wzNzd3d3dcMzc3eHh4XDM3N3h4eFwzNzd4eHhcMzc3eXl5XDM3N3l5eVwzNzdcMzY0XDM2NFwzNjRcMzc3XDM1MyIKLSAgIlwzNTNcMzUzXDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzQ2IgotICAiXDM0NlwzNDZcMzc3XDM0N1wzNDdcMzQ3XDM3N1wyNTJcMjUyXDI1MlwzNzdcMzUxXDM1MVwzNTFcMzc3XDM1MlwzNTIiCi0gICJcMzUyXDM3N1wzNTJcMzUyXDM1MlwzNzdcMzUzXDM1M1wzNTNcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNTVcMzU1XDM1NSIKLSAgIlwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYxXDM2MVwzNjFcMzc3IgotICAiXDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjUiCi0gICJcMzY1XDM2NVwzNzdcMzU0XDM1NFwzNTRcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2NCIKLSAgIlwzNjRcMzY0XDM3N1wzNDdcMzQ3XDM0N1wzNzdcMjUyXDI1MlwyNTJcMzc3XDBcMFwwXDM3N1wzNTJcMzUyXDM1MlwzNzciCi0gICJcMzUzXDM1M1wzNTNcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNTRcMzU0XDM1NFwzNzd2dnZcMzc3d3d3XDM3N3d3d1wzNzciCi0gICJ4eHhcMzc3eHh4XDM3N3l5eVwzNzd5eXlcMzc3enp6XDM3N3p6elwzNzd6enpcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNTUiCi0gICJcMzU1XDM1NVwzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzY1XDM2NVwzNjVcMzc3XDI1MiIKLSAgIlwyNTJcMjUyXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDM1NlwzNTYiCi0gICJcMzU2XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3XDM1N1wzNTdcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MSIKLSAgIlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3IgotICAiXDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY3XDM2N1wzNjdcMzc3XDM1NlwzNTZcMzU2XDM3N1wwXDAiCi0gICJcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzUxXDM1MVwzNTFcMzc3XDI1MyIKLSAgIlwyNTNcMjUzXDM3N1wwXDBcMFwzNzdcMzU0XDM1NFwzNTRcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTZcMzU2XDM1NlwzNzciCi0gICJcMzU3XDM1N1wzNTdcMzc3eHh4XDM3N3h4eFwzNzd4eHhcMzc3eXl5XDM3N3l5eVwzNzd6enpcMzc3enp6XDM3N3t7eyIKLSAgIlwzNzd7e3tcMzc3fHx8XDM3N1wzNzBcMzcwXDM3MFwzNzdcMzU3XDM1N1wzNTdcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMCIKLSAgIlwwXDBcMjdcMFwwXDBcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNTJcMzUyXDM1MlwzNzdcMzUzXDM1M1wzNTNcMzc3XDI1NSIKLSAgIlwyNTVcMjU1XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNjBcMzYwIgotICAiXDM2MFwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjMiCi0gICJcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3NyIKLSAgIlwzNzBcMzcwXDM3MFwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNjBcMzYwXDM2MFwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzY2XDM2NlwzNjZcMzc3XDM1M1wzNTNcMzUzXDM3N1wzNTQiCi0gICJcMzU0XDM1NFwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTdcMzU3XDM1N1wzNzdcMzYwXDM2MCIKLSAgIlwzNjBcMzc3XDM2MVwzNjFcMzYxXDM3N3l5eVwzNzd5eXlcMzc3enp6XDM3N3p6elwzNzd6enpcMzc3XDM2NlwzNjZcMzY2IgotICAiXDM3N1wzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzJcMzcyXDM3MlwzNzciCi0gICJcMzczXDM3M1wzNzNcMzc3XDM2MlwzNjJcMzYyXDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3NyIKLSAgIlwzNjdcMzY3XDM2N1wzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3IgotICAiXDM1N1wzNTdcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2M1wzNjMiCi0gICJcMzYzXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NiIKLSAgIlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcyXDM3MlwzNzJcMzc3IgotICAiXDM3M1wzNzNcMzczXDM3N1wzNzRcMzc0XDM3NFwzNzdcMzYzXDM2M1wzNjNcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwIgotICAiXDBcMjdcMFwwXDBcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU3XDM1N1wzNTdcMzc3XDM1N1wzNTciCi0gICJcMzU3XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2MyIKLSAgIlwzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY3XDM2N1wzNjdcMzc3IgotICAiXDM2N1wzNjdcMzY3XDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNzMiCi0gICJcMzczXDM3M1wzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNjRcMzY0XDM2NFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwPVwwXDBcMFwyN1wwXDBcMFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM2MFwzNjBcMzYwXDM3N1wyNjdcMjY3XDI2NyIKLSAgIlwzNzdcMjcwXDI3MFwyNzBcMzc3XDI3MFwyNzBcMjcwXDM3N1wyNzBcMjcwXDI3MFwzNzdcMjcxXDI3MVwyNzFcMzc3IgotICAiXDI3MlwyNzJcMjcyXDM3N1wyNzNcMjczXDI3M1wzNzdcMjczXDI3M1wyNzNcMzc3XDI3NFwyNzRcMjc0XDM3N1wyNzUiCi0gICJcMjc1XDI3NVwzNzdcMjc2XDI3NlwyNzZcMzc3XDI3NlwyNzZcMjc2XDM3N1wyNzZcMjc2XDI3NlwzNzdcMjc3XDI3NyIKLSAgIlwyNzdcMzc3XDMwMFwzMDBcMzAwXDM3N1wzMDFcMzAxXDMwMVwzNzdcMzc3XDM3N1wzNzdcMzc3XDM2NVwzNjVcMzY1IgotICAiXDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDI3XDBcMFwwXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzYxXDM2MVwzNjEiCi0gICJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NFwzNjRcMzY0XDM3NyIKLSAgIlwzNjVcMzY1XDM2NVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcxIgotICAiXDM3MVwzNzFcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNzNcMzczXDM3M1wzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NVwzNzUiCi0gICJcMzc1XDM3N1wzNzVcMzc1XDM3NVwzNzdcMzc2XDM3NlwzNzZcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzY1XDM2NVwzNjVcMzc3XDBcMFwwXDM3N1wwXDBcMD1cMFwwXDBcMjdcMFwwXDBcMzc3XDM2MlwzNjJcMzYyIgotICAiXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzciCi0gICJcMzY2XDM2NlwzNjZcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMjc0XDI3NFwyNzRcMzc3XDM3MSIKLSAgIlwzNzFcMzcxXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzczXDM3M1wzNzNcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzVcMzc1IgotICAiXDM3NVwzNzdcMzc2XDM3NlwzNzZcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzMzFcMzMxXDMzMVwzNzdcMFwwXDBcMzc3XDBcMFwwPVwwXDBcMFwyN1wwXDBcMCIKLSAgIlwyMzJcMzExXDMxMVwzMTFcMzc3XDMzMlwzMzJcMzMyXDM3N1wzNTZcMzU2XDM1NlwzNzdcMzUzXDM1M1wzNTNcMzc3IgotICAiXDM1NFwzNTRcMzU0XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU2XDM1NlwzNTZcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTciCi0gICJcMzU3XDM1N1wzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYzXDM2MyIKLSAgIlwzNjNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NVwzNjVcMzY1IgotICAiXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzQ0XDM0NFwzNDRcMzc3XDI3NVwyNzVcMjc1XDM3N1wwXDBcMFwzMjRcMFwwXDAiCi0gICI6XDBcMFwwXDI2XDBcMFwwXDM0XDBcMFwwXDI0M1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzMjRcMFwwXDBZXDBcMFwwLVwwXDBcMFwyMFwwXDBcMFw2XDBcMFwwXDI0XDBcMFwwKVwwXDBcMCIiOFwwIgotICAiXDBcMDxcMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMD0iCi0gICJcMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDA9XDBcMFwwPVwwXDBcMD1cMFwwXDAiIjlcMFwwXDAtXDBcMFwwXDMxXDAiCi0gICJcMFwwXDdcMFwwXDBcMVwwXDBcMFw2XDBcMFwwXDE2XDBcMFwwXDI0XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDAiCi0gICJcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3IgotICAiXDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI3XDBcMFwwXDI1XDBcMFwwXDIwXDBcMFwwIgotICAiXDdcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwyXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDAiCi0gICJcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMCIKLSAgIlwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwzXDBcMFwwXDNcMFwwXDBcM1wwXDBcMFwyXDBcMFwwXDFcMFwwXDBcMCJ9OwotCi0KLS8qIEdka1BpeGJ1ZiBSR0JBIEMtU291cmNlIGltYWdlIGR1bXAgKi8KLQotI2lmZGVmIF9fU1VOUFJPX0MKLSNwcmFnbWEgYWxpZ24gNCAoc3RvY2tfdGltZXIpCi0jZW5kaWYKLSNpZmRlZiBfX0dOVUNfXwotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja190aW1lcltdIF9fYXR0cmlidXRlX18gKChfX2FsaWduZWRfXyAoNCkpKSA9IAotI2Vsc2UKLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfdGltZXJbXSA9IAotI2VuZGlmCi17ICIiCi0gIC8qIFBpeGJ1ZiBtYWdpYyAoMHg0NzY0NmI1MCkgKi8KLSAgIkdka1AiCi0gIC8qIGxlbmd0aDogaGVhZGVyICgyNCkgKyBwaXhlbF9kYXRhICgyMzA0KSAqLwotICAiXDBcMFwxMVwzMCIKLSAgLyogcGl4ZGF0YV90eXBlICgweDEwMTAwMDIpICovCi0gICJcMVwxXDBcMiIKLSAgLyogcm93c3RyaWRlICg5NikgKi8KLSAgIlwwXDBcMGAiCi0gIC8qIHdpZHRoICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogaGVpZ2h0ICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogcGl4ZWxfZGF0YTogKi8KLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMjNcMCIKLSAgIlwwXDBvXDBcMFwwXDI2NlwwXDBcMFwzNDRcMFwwXDBcMzczXDBcMFwwXDM3M1wwXDBcMFwzNDVcMFwwXDBcMjcwXDBcMCIKLSAgIlwwdFwwXDBcMFwzMVwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwyMDVcMFwwXDAiCi0gICJcMzczXDIwN1wyMDdcMjA3XDM3N1wzMDBcMzAwXDMwMFwzNzdcMzIzXDMyM1wzMjNcMzc3XDMyNlwzMjZcMzI2XDM3NyIKLSAgIlwzMjVcMzI1XDMyNVwzNzdcMzIyXDMyMlwzMjJcMzc3XDI3NVwyNzVcMjc1XDM3N1wyMDRcMjA0XDIwNFwzNzdcMFwwIgotICAiXDBcMzc0XDBcMFwwXDIxN1wwXDBcMFwxMFwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdbXDIxMFwyNjJcMzc3XDBcMFwwXDM3N1wzMjRcMzI0IgotICAiXDMyNFwzNzdcMzQyXDM0MlwzNDJcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNzRcMzc0XDM3NFwzNzdcMzc0XDM3NFwzNzQiCi0gICJcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzNcMzczXDM3M1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM1NFwzNTRcMzU0XDM3NyIKLSAgIlwzNDFcMzQxXDM0MVwzNzdcMjIwXDIyMFwyMjBcMzc3XDBcMFwwXDMyNFwwXDBcMCIiNlwwXDBcMFwzXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMjM2IgotICAiXDI3MFwzMjFcMzc3UFwyMDBcMjU1XDM3N1wwXDBcMFwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzUiCi0gICJcMzc1XDM3NVwzNzdcMzE2XDMxNlwzMTZcMzc3XDMxMFwzMTBcMzEwXDM3N1wzNzRcMzc0XDM3NFwzNzdcMzczXDM3MyIKLSAgIlwzNzNcMzc3XDM3M1wzNzNcMzczXDM3N1wzNjdcMzY3XDM2N1wzNzdcMzUwXDM1MFwzNTBcMzc3XDI3MlwyNzJcMjcyIgotICAiXDM3N1wwXDBcMFwzNTJcMFwwXDBcNzdcMFwwXDBcNVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDI3N1wzMjFcMzQxIgotICAiXDM3N1wyNTdcMzA1XDMzMlwzNzdcMjYyXDMwN1wzMzNcMzc3XDI2NlwzMTJcMzM1XDM3N1wyNDRcMjc1XDMyNVwzNzciCi0gICJcMjM0XDI2N1wzMjFcMzc3UFwyMDBcMjU1XDM3N1wxMFwxNVwyMVwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1IgotICAiXDM3N1wyNzdcMjc3XDI3N1wzNzdcMjcwXDI3MFwyNzBcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzNcMzczXDM3M1wzNzciCi0gICJcMzcyXDM3MlwzNzJcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzUwXDM1MFwzNTBcMzc3XDMwMSIKLSAgIlwzMDFcMzAxXDM3N1wwXDBcMFwzMzBcMFwwXDBcMzJcMFwwXDBcNFwwXDBcMFwwXDBcMFwwXDM3N1wzMDJcMzIyXDM0MSIKLSAgIlwzNzdcMjQwXDI3MlwzMjNcMzc3XDIzNFwyNjdcMzIxXDM3N1wyMzJcMjY1XDMxN1wzNzdcMjQwXDI3MlwzMjNcMzc3IgotICAiXDIzNFwyNjdcMzIxXDM3N1wyMjdcMjYzXDMxNlwzNzdfXDIxM1wyNjRcMzc3XDBcMFwwXDM3N1wzNzVcMzc1XDM3NVwzNzciCi0gICJcMjYwXDI2MFwyNjBcMzc3XDI1MVwyNTFcMjUxXDM3N1wzNzNcMzczXDM3M1wzNzdcMzczXDM3M1wzNzNcMzc3XDM3MSIKLSAgIlwzNzFcMzcxXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNDVcMzQ1IgotICAiXDM0NVwzNzdcMjE3XDIxN1wyMTdcMzc3XDBcMFwwXDI0MlwwXDBcMFwyMFwwXDBcMFwxXDBcMFwwXDM3N1wzMTBcMzI2IgotICAiXDM0NFwzNzdcMjM2XDI3MFwzMjFcMzc3XDIzMlwyNjVcMzE3XDM3N1wyMzRcMjY3XDMyMVwzNzdcMjM0XDI2N1wzMjEiCi0gICJcMzc3XDIzNFwyNjdcMzIxXDM3N1wyNDBcMjcyXDMyM1wzNzdcMjI1XDI2MlwzMTZcMzc3THlcMjQzXDM3N1wwXDBcMCIKLSAgIlwzNzdcMjQxXDI0MVwyNDFcMzc3XDIzMVwyMzFcMjMxXDM3N1wzNzNcMzczXDM3M1wzNzdcMzcyXDM3MlwzNzJcMzc3IgotICAiXDM3MVwzNzFcMzcxXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjMiCi0gICJcMzYzXDM2M1wzNzdcMzUwXDM1MFwzNTBcMzc3XDBcMFwwXDM3NFwwXDBcMD5cMFwwXDBcMTFcMFwwXDBcMzc3Z1wyMTMiCi0gICJcMjU0XDM3N1w3N2VcMjEwXDM3N1w3N2VcMjEwXDM3N1w3N2VcMjEwXDM3N1w3N2VcMjEwXDM3N1w3N2VcMjEwXDM3NyIKLSAgIlw3N2VcMjEwXDM3NypDW1wzNzdcMFwwXDBcMzc3XDM3NVwzNzVcMzc1XDM3N1wyMjFcMjIxXDIyMVwzNzdcMjEyXDIxMiIKLSAgIlwyMTJcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MFwzNzBcMzcwIgotICAiXDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNTVcMzU1XDM1NVwzNzciCi0gICJcMjE2XDIxNlwyMTZcMzc3XDBcMFwwXDIyN1wwXDBcMFwyNVwwXDBcMFwzNzdkXDIwN1wyNDdcMzc3N1l4XDM3NzdZeCIKLSAgIlwzNzc3WXhcMzc3XDc3ZVwyMTBcMzc3XDc3ZVwyMTBcMzc3KkNbXDM3N1wwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3NlwzNzZcMzc2XDM3N1wyMDFcMjAxXDIwMVwzNzd6enpcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzFcMzcxXDM3MVwzNzciCi0gICJcMzcwXDM3MFwzNzBcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY0XDM2NFwzNjRcMzc3XDM2MiIKLSAgIlwzNjJcMzYyXDM3N1wzNTdcMzU3XDM1N1wzNzdcMzIzXDMyM1wzMjNcMzc3XDBcMFwwXDMxNFwwXDBcMChcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1w3N2VcMjEwXDM3NypDW1wzNzdcMFwwXDBcMzc3IgotICAiXDM3NVwzNzVcMzc1XDM3N1wzNzZcMzc2XDM3NlwzNzdcMzc1XDM3NVwzNzVcMzc3cnJyXDM3N2tra1wzNzdcMzU2XDM1NiIKLSAgIlwzNTZcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NFwzNjRcMzY0IgotICAiXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYxXDM2MVwzNjFcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNjdcMzY3XDM2N1wzNzciCi0gICJcMFwwXDBcMzU0XDBcMFwwIiI5XDBcMFwwXDBcMFwwXDBcMzczXDM1MFwzNTBcMzUwXDM3N1wzNzJcMzcyXDM3MlwzNzciCi0gICJcMFwwXDBcMzc3KkNbXDM3N1wwXDBcMFwzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzRcMzc0XDM3NCIKLSAgIlwzNzdcMzc0XDM3NFwzNzRcMzc3Y2NjXDM3N1tbW1wzNzdcMzEzXDMxM1wzMTNcMzc3XDM0NVwzNDVcMzQ1XDM3N1wzNjciCi0gICJcMzY3XDM2N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjJcMzYyXDM2MlwzNzdcMjczXDI3MyIKLSAgIlwyNzNcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNzBcMzcwXDM3MFwzNzdcMFwwXDBcMzc0XDBcMFwwRFwwXDBcMFwwXDBcMCIKLSAgIlwwXDM3M1wzMzZcMzM2XDMzNlwzNzdcMzcxXDM3MVwzNzFcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMzczXDM3M1wzNzMiCi0gICJcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzNcMzczXDM3M1wzNzdcMzczXDM3M1wzNzNcMzc3XDM3M1wzNzNcMzczXDM3NyIKLSAgIlwyMjFcMjIxXDIyMVwzNzdMTExcMzc3RUVFXDM3N2JiYlwzNzdcMzAwXDMwMFwzMDBcMzc3XDMzNVwzMzVcMzM1XDM3NyIKLSAgIlwzNjJcMzYyXDM2MlwzNzdcMzYxXDM2MVwzNjFcMzc3XDI2NVwyNjVcMjY1XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzcwIgotICAiXDM3MFwzNzBcMzc3XDBcMFwwXDM3NFwwXDBcMEpcMFwwXDBcMFwwXDBcMFwzNDZcMzMyXDMzMlwzMzJcMzc3XDM3MFwzNzAiCi0gICJcMzcwXDM3N1wwXDBcMFwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcyIgotICAiXDM3MlwzNzJcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzUyXDM1MlwzNTJcMzc3XDI3NlwyNzYiCi0gICJcMjc2XDM3N2RkZFwzNzcuLi5cMzc3JycnXDM3N0lJSVwzNzdcMzYxXDM2MVwzNjFcMzc3XDM1N1wzNTdcMzU3XDM3NyIKLSAgIlwzNTVcMzU1XDM1NVwzNzdcMzcxXDM3MVwzNzFcMzc3XDM2N1wzNjdcMzY3XDM3N1wwXDBcMFwzNTVcMFwwXDBKXDBcMCIKLSAgIlwwXDBcMFwwXDBcMjczXDI3NVwyNzVcMjc1XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY3XDM2N1wzNjdcMzc3XDM3MFwzNzAiCi0gICJcMzcwXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzBcMzcwXDM3MCIKLSAgIlwzNzdcMzcwXDM3MFwzNzBcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzM1XDMzNVwzMzVcMzc3IgotICAiXDI3NlwyNzZcMjc2XDM3N1dXV1wzNzd4eHhcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU0XDM1NCIKLSAgIlwzNTRcMzc3XDM3MVwzNzFcMzcxXDM3N1wzMjNcMzIzXDMyM1wzNzdcMFwwXDBcMzE2XDBcMFwwRFwwXDBcMFwwXDBcMCIKLSAgIlwwdFwxNzdcMTc3XDE3N1wzNzdcMzQxXDM0MVwzNDFcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY2IgotICAiXDM2NlwzNjZcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NlwzNjYiCi0gICJcMzY2XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY0XDM2NFwzNjRcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjJcMzYyXDM2MiIKLSAgIlwzNzdcMzYxXDM2MVwzNjFcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU1XDM1NVwzNTVcMzc3IgotICAiXDM2NFwzNjRcMzY0XDM3N1wzNzBcMzcwXDM3MFwzNzdcMjE0XDIxNFwyMTRcMzc3XDBcMFwwXDIzN1wwXDBcMCIiOVwwIgotICAiXDBcMFwwXDBcMFwwXDMxXDBcMFwwXDM3NFwzMjBcMzIwXDMyMFwzNzdcMzUzXDM1M1wzNTNcMzc3XDM2NFwzNjRcMzY0IgotICAiXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjRcMzY0XDM2NFwzNzciCi0gICJcMzY0XDM2NFwzNjRcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MCIKLSAgIlwzNjBcMzYwXDM3N1wzNTdcMzU3XDM1N1wzNzdcMzU2XDM1NlwzNTZcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNTRcMzU0IgotICAiXDM1NFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM2MVwzNjFcMzYxXDM3N1wwXDBcMFwzNzRcMFwwXDBfXDBcMFwwKFwwXDAiCi0gICJcMFwwXDBcMFwwXDJcMFwwXDBcMjE3XDIxMVwyMTFcMjExXDM3N1wzMjRcMzI0XDMyNFwzNzdcMzYyXDM2MlwzNjJcMzc3IgotICAiXDM2MlwzNjJcMzYyXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjEiCi0gICJcMzYxXDM2MVwzNzdcMzYxXDM2MVwzNjFcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzU3XDM1NyIKLSAgIlwzNTdcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTVcMzU1XDM1NVwzNzdcMzU0XDM1NFwzNTRcMzc3XDM3MVwzNzFcMzcxIgotICAiXDM3N1wzNzBcMzcwXDM3MFwzNzdcMjMwXDIzMFwyMzBcMzc3XDBcMFwwXDI2MFwwXDBcMEhcMFwwXDBcMjVcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDEwXDBcMFwwXDMyNFwyNTNcMjUzXDI1M1wzNzdcMzIzXDMyM1wzMjNcMzc3XDM2MFwzNjAiCi0gICJcMzYwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNjBcMzYwXDM2MCIKLSAgIlwzNzdcMzU3XDM1N1wzNTdcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU2XDM1NlwzNTZcMzc3IgotICAiXDM1NVwzNTVcMzU1XDM3N1wzNTRcMzU0XDM1NFwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MFwzNzBcMzcwXDM3N1wzMDQiCi0gICJcMzA0XDMwNFwzNzdcMFwwXDBcMzM1XDBcMFwwUVwwXDBcMC5cMFwwXDBcMTFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDEiCi0gICJcMFwwXDAiIjZcMFwwXDBcMzUyXDI1M1wyNTNcMjUzXDM3N1wzMjJcMzIyXDMyMlwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM1NiIKLSAgIlwzNTZcMzU2XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzU2XDM1NlwzNTZcMzc3XDI1NlwyNTZcMjU2XDM3N1wyNTVcMjU1IgotICAiXDI1NVwzNzdcMzU1XDM1NVwzNTVcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNTNcMzUzXDM1M1wzNzdcMzcwXDM3MFwzNzAiCi0gICJcMzc3XDM3MFwzNzBcMzcwXDM3N1wzMDJcMzAyXDMwMlwzNzdcMFwwXDBcMzU1XDBcMFwwcFwwXDBcMDxcMFwwXDBcMjAiCi0gICJcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFw0XDBcMFwwXDc3XDBcMFwwXDMzMFwyMDJcMjAyXDIwMiIKLSAgIlwzNzdcMzE1XDMxNVwzMTVcMzc3XDMzMVwzMzFcMzMxXDM3N1wzNTRcMzU0XDM1NFwzNzdcMzU0XDM1NFwzNTRcMzc3IgotICAiXDM1NFwzNTRcMzU0XDM3N1wzNTRcMzU0XDM1NFwzNzdcMzUzXDM1M1wzNTNcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNzAiCi0gICJcMzcwXDM3MFwzNzdcMzY3XDM2N1wzNjdcMzc3XDIxNFwyMTRcMjE0XDM3N1wwXDBcMFwzMzVcMFwwXDBxXDBcMFwwQiIKLSAgIlwwXDBcMFwzMlwwXDBcMFw0XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFw1XDBcMCIKLSAgIlwwXDMyXDBcMFwwXDI0MlwwXDBcMFwzNzRcMjEwXDIxMFwyMTBcMzc3XDMxMFwzMTBcMzEwXDM3N1wzMzVcMzM1XDMzNSIKLSAgIlwzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNjdcMzY3XDM2N1wzNzdcMzYxXDM2MVwzNjFcMzc3IgotICAiXDMwMFwzMDBcMzAwXDM3N1wwXDBcMFwzNzRcMFwwXDBcMjYwXDBcMFwwUVwwXDBcMDxcMFwwXDBcMzJcMFwwXDBcNVwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDRcMFwwXDAiCi0gICJcMjBcMFwwXDA+XDBcMFwwXDIyN1wwXDBcMFwzMTRcMFwwXDBcMzU0XDBcMFwwXDM3NFwwXDBcMFwzNzRcMFwwXDBcMzU1IgotICAiXDBcMFwwXDMxNlwwXDBcMFwyMzdcMFwwXDBfXDBcMFwwSFwwXDBcMC5cMFwwXDBcMjBcMFwwXDBcNFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwxXDBcMFwwXDEwXDBcMFwwXDI1XDBcMFwwKFwwXDBcMCIiOVwwXDBcMERcMFwwXDBKXDBcMFwwSlwwXDBcMERcMFwwIgotICAiXDAiIjlcMFwwXDAoXDBcMFwwXDI1XDBcMFwwXDEwXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMVwwXDBcMFw2XDBcMFwwXDEyXDBcMFwwXDE1XDBcMFwwXDE3XDBcMFwwXDE3XDBcMFwwXDE1XDBcMFwwXDEyIgotICAiXDBcMFwwXDZcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9OwotCi0KLS8qIEdka1BpeGJ1ZiBSR0JBIEMtU291cmNlIGltYWdlIGR1bXAgKi8KLQotI2lmZGVmIF9fU1VOUFJPX0MKLSNwcmFnbWEgYWxpZ24gNCAoc3RvY2tfdGltZXJfc3RvcHBlZCkKLSNlbmRpZgotI2lmZGVmIF9fR05VQ19fCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX3RpbWVyX3N0b3BwZWRbXSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18gKDQpKSkgPSAKLSNlbHNlCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX3RpbWVyX3N0b3BwZWRbXSA9IAotI2VuZGlmCi17ICIiCi0gIC8qIFBpeGJ1ZiBtYWdpYyAoMHg0NzY0NmI1MCkgKi8KLSAgIkdka1AiCi0gIC8qIGxlbmd0aDogaGVhZGVyICgyNCkgKyBwaXhlbF9kYXRhICgyMzA0KSAqLwotICAiXDBcMFwxMVwzMCIKLSAgLyogcGl4ZGF0YV90eXBlICgweDEwMTAwMDIpICovCi0gICJcMVwxXDBcMiIKLSAgLyogcm93c3RyaWRlICg5NikgKi8KLSAgIlwwXDBcMGAiCi0gIC8qIHdpZHRoICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogaGVpZ2h0ICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogcGl4ZWxfZGF0YTogKi8KLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDIzXDBcMCIKLSAgIlwwb1wwXDBcMFwyNjZcMFwwXDBcMzQ0XDBcMFwwXDM3M1wwXDBcMFwzNzNcMFwwXDBcMzQ1XDBcMFwwXDI3MFwwXDBcMCIKLSAgInRcMFwwXDBcMzFcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyMDVcMFwwXDBcMzczXDIwNyIKLSAgIlwyMDdcMjA3XDM3N1wzMDBcMzAwXDMwMFwzNzdcMzIzXDMyM1wzMjNcMzc3XDMyNlwzMjZcMzI2XDM3N1wzMjVcMzI1IgotICAiXDMyNVwzNzdcMzIyXDMyMlwzMjJcMzc3XDI3NVwyNzVcMjc1XDM3N1wyMDRcMjA0XDIwNFwzNzdcMFwwXDBcMzc0XDAiCi0gICJcMFwwXDIxN1wwXDBcMFwxMFwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMClcMFwwXDBcMzE0XDIyM1wyMjNcMjIzXDM3N1wzMjRcMzI0XDMyNFwzNzciCi0gICJcMzQyXDM0MlwzNDJcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNzRcMzc0XDM3NFwzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NCIKLSAgIlwzNzRcMzc0XDM3N1wzNzNcMzczXDM3M1wzNzdcMzYzXDM2M1wzNjNcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNDFcMzQxIgotICAiXDM0MVwzNzdcMjIwXDIyMFwyMjBcMzc3XDBcMFwwXDMyNFwwXDBcMCIiNlwwXDBcMFwzXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwKVwwXDBcMFwzNDRcMjc3XDI3N1wyNzdcMzc3XDMzNlwzMzYiCi0gICJcMzM2XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzVcMzc1XDM3NSIKLSAgIlwzNzdcMzE2XDMxNlwzMTZcMzc3XDMxMFwzMTBcMzEwXDM3N1wzNzRcMzc0XDM3NFwzNzdcMzczXDM3M1wzNzNcMzc3IgotICAiXDM3M1wzNzNcMzczXDM3N1wzNjdcMzY3XDM2N1wzNzdcMzUwXDM1MFwzNTBcMzc3XDI3MlwyNzJcMjcyXDM3N1wwXDAiCi0gICJcMFwzNTJcMFwwXDBcNzdcMFwwXDBcNVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMzE0XDI2N1wyNjdcMjY3XDM3N1wzNDJcMzQyXDM0MlwzNzdcMzczXDM3M1wzNzNcMzc3XDM3NVwzNzVcMzc1XDM3NyIKLSAgIlwzNzVcMzc1XDM3NVwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1XDM3N1wyNzdcMjc3XDI3N1wzNzdcMjcwIgotICAiXDI3MFwyNzBcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzNcMzczXDM3M1wzNzdcMzcyXDM3MlwzNzJcMzc3XDM3MVwzNzEiCi0gICJcMzcxXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzUwXDM1MFwzNTBcMzc3XDMwMVwzMDFcMzAxXDM3N1wwXDBcMFwzMzBcMCIKLSAgIlwwXDBcMzJcMFwwXDBcNFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyMDVcMjA3XDIwN1wyMDdcMzc3XDMzNiIKLSAgIlwzMzZcMzM2XDM3N1wzNzNcMzczXDM3M1wzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzVcMzc1IgotICAiXDM3NVwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1XDM3N1wyNjBcMjYwXDI2MFwzNzdcMjUxXDI1MVwyNTEiCi0gICJcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzNcMzczXDM3M1wzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MVwzNzFcMzcxXDM3NyIKLSAgIlwzNjdcMzY3XDM2N1wzNzdcMzY2XDM2NlwzNjZcMzc3XDM0NVwzNDVcMzQ1XDM3N1wyMTdcMjE3XDIxN1wzNzdcMFwwIgotICAiXDBcMjQyXDBcMFwwXDIwXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwyM1wwXDBcMFwzNzNcMzI0XDMyNFwzMjRcMzc3XDM2NyIKLSAgIlwzNjdcMzY3XDM3N1wzNzVcMzc1XDM3NVwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzVcMzc1IgotICAiXDM3NVwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1XDM3N1wyNDFcMjQxXDI0MVwzNzdcMjMxXDIzMVwyMzEiCi0gICJcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MFwzNzBcMzcwXDM3NyIKLSAgIlwzNjdcMzY3XDM2N1wzNzdcMzY1XDM2NVwzNjVcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNTBcMzUwXDM1MFwzNzdcMFwwIgotICAiXDBcMzc0XDBcMFwwPlwwXDBcMFwxMVwwXDBcMFwwXDBcMFwwb1wyMDdcMjA3XDIwN1wzNzdcMzQyXDM0MlwzNDJcMzc3IgotICAiXDM3NFwzNzRcMzc0XDM3N1wzNzVcMzc1XDM3NVwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NVwzNzVcMzc1XDM3N1wzNzUiCi0gICJcMzc1XDM3NVwzNzdcMzc2XDM3NlwzNzZcMzc3XDM3NVwzNzVcMzc1XDM3N1wyMjFcMjIxXDIyMVwzNzdcMjEyXDIxMiIKLSAgIlwyMTJcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MFwzNzBcMzcwIgotICAiXDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNTVcMzU1XDM1NVwzNzciCi0gICJcMjE2XDIxNlwyMTZcMzc3XDBcMFwwXDIyN1wwXDBcMFwyNVwwXDBcMFwwXDBcMFwwXDI2NlwzMDBcMzAwXDMwMFwzNzciCi0gICJcMzY0XDM2NFwzNjRcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzRcMzc0XDM3NFwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NSIKLSAgIlwzNzVcMzc1XDM3N1wzNzZcMzc2XDM3NlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NlwzNzZcMzc2XDM3N1wyMDFcMjAxIgotICAiXDIwMVwzNzd6enpcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzFcMzcxXDM3MVwzNzdcMzcwXDM3MFwzNzBcMzc3XDM2N1wzNjciCi0gICJcMzY3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY0XDM2NFwzNjRcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNTdcMzU3XDM1NyIKLSAgIlwzNzdcMzIzXDMyM1wzMjNcMzc3XDBcMFwwXDMxNFwwXDBcMChcMFwwXDBcMFwwXDBcMFwzNDZcMzIzXDMyM1wzMjNcMzc3IgotICAiXDM3MlwzNzJcMzcyXDM3N1wzNzNcMzczXDM3M1wzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzUiCi0gICJcMzc1XDM3NVwzNzdcMzc1XDM3NVwzNzVcMzc3XDM3NlwzNzZcMzc2XDM3N1wzNzVcMzc1XDM3NVwzNzdycnJcMzc3ayIKLSAgImtrXDM3N1wzNTZcMzU2XDM1NlwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNjZcMzY2XDM2NlwzNzciCi0gICJcMzY0XDM2NFwzNjRcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzU3XDM1N1wzNTdcMzc3XDM2NyIKLSAgIlwzNjdcMzY3XDM3N1wwXDBcMFwzNTRcMFwwXDAiIjlcMFwwXDBcMFwwXDBcMFwzNzNcMzUwXDM1MFwzNTBcMzc3XDM3MiIKLSAgIlwzNzJcMzcyXDM3N1wzMzdcMzM3XDMzN1wzNzdcMzczXDM3M1wzNzNcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzRcMzc0IgotICAiXDM3NFwzNzdcMzc0XDM3NFwzNzRcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzRcMzc0XDM3NFwzNzdjY2NcMzc3W1tbXDM3NyIKLSAgIlwzMTNcMzEzXDMxM1wzNzdcMzQ1XDM0NVwzNDVcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjVcMzY1XDM2NVwzNzdcMzY0IgotICAiXDM2NFwzNjRcMzc3XDM2MlwzNjJcMzYyXDM3N1wyNzNcMjczXDI3M1wzNzdcMzU2XDM1NlwzNTZcMzc3XDM3MFwzNzAiCi0gICJcMzcwXDM3N1wwXDBcMFwzNzRcMFwwXDBEXDBcMFwwXDBcMFwwXDBcMzczXDMzNlwzMzZcMzM2XDM3N1wzNzFcMzcxXDM3MSIKLSAgIlwzNzdcMzMyXDMzMlwzMzJcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNzNcMzczXDM3M1wzNzdcMzczXDM3M1wzNzNcMzc3IgotICAiXDM3M1wzNzNcMzczXDM3N1wzNzNcMzczXDM3M1wzNzdcMzczXDM3M1wzNzNcMzc3XDIyMVwyMjFcMjIxXDM3N0xMTFwzNzciCi0gICJFRUVcMzc3YmJiXDM3N1wzMDBcMzAwXDMwMFwzNzdcMzM1XDMzNVwzMzVcMzc3XDM2MlwzNjJcMzYyXDM3N1wzNjFcMzYxIgotICAiXDM2MVwzNzdcMjY1XDI2NVwyNjVcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNzBcMzcwXDM3MFwzNzdcMFwwXDBcMzc0XDAiCi0gICJcMFwwSlwwXDBcMFwwXDBcMFwwXDM0NlwzMzJcMzMyXDMzMlwzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MVwzNzFcMzcxXDM3NyIKLSAgIlwzNzFcMzcxXDM3MVwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MVwzNzFcMzcxXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzcyIgotICAiXDM3MlwzNzJcMzc3XDM3MlwzNzJcMzcyXDM3N1wzNTJcMzUyXDM1MlwzNzdcMjc2XDI3NlwyNzZcMzc3ZGRkXDM3Ny4iCi0gICIuLlwzNzcnJydcMzc3SUlJXDM3N1wzNjFcMzYxXDM2MVwzNzdcMzU3XDM1N1wzNTdcMzc3XDM1NVwzNTVcMzU1XDM3NyIKLSAgIlwzNzFcMzcxXDM3MVwzNzdcMzY3XDM2N1wzNjdcMzc3XDBcMFwwXDM1NVwwXDBcMEpcMFwwXDBcMFwwXDBcMFwyNzNcMjc1IgotICAiXDI3NVwyNzVcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjdcMzY3XDM2N1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MFwzNzAiCi0gICJcMzcwXDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNzBcMzcwXDM3MCIKLSAgIlwzNzdcMzY3XDM2N1wzNjdcMzc3XDM2NlwzNjZcMzY2XDM3N1wzMzVcMzM1XDMzNVwzNzdcMjc2XDI3NlwyNzZcMzc3IgotICAiV1dXXDM3N3h4eFwzNzdcMzU3XDM1N1wzNTdcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTRcMzU0XDM1NFwzNzdcMzcxXDM3MSIKLSAgIlwzNzFcMzc3XDMyM1wzMjNcMzIzXDM3N1wwXDBcMFwzMTZcMFwwXDBEXDBcMFwwXDBcMFwwXDB0XDE3N1wxNzdcMTc3IgotICAiXDM3N1wzNDFcMzQxXDM0MVwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjZcMzY2XDM2NlwzNzciCi0gICJcMzY2XDM2NlwzNjZcMzc3XDM2N1wzNjdcMzY3XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2NSIKLSAgIlwzNjVcMzY1XDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY0XDM2NFwzNjRcMzc3eXl5XDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDIzNCIKLSAgIlwwXDBcMFwwXDBcMFwwXDMxXDBcMFwwXDM3NFwzMjBcMzIwXDMyMFwzNzdcMzUzXDM1M1wzNTNcMzc3XDM2NFwzNjRcMzY0IgotICAiXDM3N1wzNjRcMzY0XDM2NFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjRcMzY0XDM2NFwzNzciCi0gICJcMzY0XDM2NFwzNjRcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYxXDM2MVwzNjFcMzc3XDBcMCIKLSAgIlwwXDM3N1wzNTFcXFwyM1wzNzdcMzYyZ1wzN1wzNzdcMzU2YlwzMlwzNzdcMzQ1WVwyM1wzNzdcMzMzVFwyMlwzNzdcMzIyIgotICAiU1wyN1wzNzdcMzEyUlwzM1wzNzdcMjc2RFwxN1wzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwyMTciCi0gICJcMjExXDIxMVwyMTFcMzc3XDMyNFwzMjRcMzI0XDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MiIKLSAgIlwzNjJcMzYyXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzYyXDM2MlwzNjJcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNjFcMzYxIgotICAiXDM2MVwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjBcMzYwXDM3N1wwXDBcMFwzNzdcMzUzYVwzM1wzNzdcMzc2XDM2MiIKLSAgIlwzNTNcMzc3XDM3NFwzNDZcMzMzXDM3N1wzNTBrLFwzNzdcMzM3ZSlcMzc3XDM3MFwzNDJcMzMwXDM3N1wzNzNcMzYxIgotICAiXDM1NVwzNzdcMzAwS1wzMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxMFwwXDBcMFwzMjRcMjUzIgotICAiXDI1M1wyNTNcMzc3XDMyM1wzMjNcMzIzXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM2MFwzNjAiCi0gICJcMzYwXDM3N1wzNjBcMzYwXDM2MFwzNzdcMzYwXDM2MFwzNjBcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNTdcMzU3XDM1NyIKLSAgIlwzNzdcMzU2XDM1NlwzNTZcMzc3XDBcMFwwXDM3N1wzNDVbXDI2XDM3N1wzNzJcMzM3XDMyMlwzNzdcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3MlwzNDZcMzM0XDM3N1wzNzJcMzQ0XDMzMVwzNzdcMzc3XDM3N1wzNzdcMzc3XDM2NFwzMzRcMzIyXDM3NyIKLSAgIlwyNzVHXDIzXDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDAiIjZcMFwwXDBcMzUyXDI1MyIKLSAgIlwyNTNcMjUzXDM3N1wzMjJcMzIyXDMyMlwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM1NlwzNTZcMzU2XDM3N1wzNTZcMzU2IgotICAiXDM1NlwzNzdcMzU2XDM1NlwzNTZcMzc3XDI1NlwyNTZcMjU2XDM3N1wyNTVcMjU1XDI1NVwzNzdcMzU1XDM1NVwzNTUiCi0gICJcMzc3XDBcMFwwXDM3N1wzMzVVXDIyXDM3N1wzNDJkJVwzNzdcMzcxXDM0MFwzMjRcMzc3XDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzY1XDMzNlwzMjNcMzc3XDMwN1VcIlwzNzdcMjcxQlwxNlwzNzdcMFwwXDBcMzc3XDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDRcMFwwXDBcNzdcMFwwXDBcMzMwXDIwMlwyMDJcMjAyXDM3N1wzMTVcMzE1IgotICAiXDMxNVwzNzdcMzMxXDMzMVwzMzFcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNTRcMzU0XDM1NFwzNzdcMzU0XDM1NFwzNTQiCi0gICJcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNTNcMzUzXDM1M1wzNzdcMFwwXDBcMzc3XDMyM09cMjFcMzc3XDMzMmEpXDM3NyIKLSAgIlwzNzFcMzQzXDMzMVwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjZcMzQ0XDMzM1wzNzdcMzA0IgotICAiVyhcMzc3XDI2NUBcMTZcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDUiCi0gICJcMFwwXDBcMzJcMFwwXDBcMjQyXDBcMFwwXDM3NFwyMTBcMjEwXDIxMFwzNzdcMzEwXDMxMFwzMTBcMzc3XDMzNVwzMzUiCi0gICJcMzM1XDM3N1wzNzBcMzcwXDM3MFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM2N1wzNjdcMzY3XDM3N1wwXDBcMFwzNzdcMzEyIgotICAiTlwyM1wzNzdcMzY3XDM0MVwzMjdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjRcMzM1XDMyM1wzNzdcMzY0XDMzNVwzMjMiCi0gICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNjRcMzQyXDMzMlwzNzdcMjYyQlwyM1wzNzdcMFwwXDBcMzc3XDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFw0XDBcMFwwXDIwXDBcMFwwPlwwXDBcMFwyMjdcMFwwIgotICAiXDBcMzE0XDBcMFwwXDM1NFwwXDBcMFwzNzRcMFwwXDBcMzc0XDBcMFwwXDM1NVwwXDBcMFwzNzdcMzAyS1wyNlwzNzciCi0gICJcMzcwXDM1M1wzNDVcMzc3XDM2M1wzMzNcMzIxXDM3N1wzMDRTXCJcMzc3XDMwMFJcIlwzNzdcMzYxXDMzMlwzMjBcMzc3IgotICAiXDM2N1wzNTNcMzQ3XDM3N1wyNTVBXDI1XDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwxMFwwXDBcMFwyNVwwXDBcMChcMFwwXDAiIjlcMFwwXDBEXDAiCi0gICJcMFwwSlwwXDBcMEpcMFwwXDBcMzc3XDI2N0BcMTZcMzc3XDI3MkVcMjNcMzc3XDI3MENcMjFcMzc3XDI2NkBcMTZcMzc3IgotICAiXDI2Mz5cMTVcMzc3XDI2MD5cMjBcMzc3XDI1M1w3N1wyM1wzNzdcMjQ0N1wxNFwzNzdcMFwwXDBcMzc3XDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMCIKLSAgIlwwXDZcMFwwXDBcMTJcMFwwXDBcMTVcMFwwXDBcMTdcMFwwXDBcMTdcMFwwXDBcMjA2XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMTc3In07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja190cmFzaCkKLSNlbmRpZgotI2lmZGVmIF9fR05VQ19fCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX3RyYXNoW10gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fICg0KSkpID0gCi0jZWxzZQotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja190cmFzaFtdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDIzMDQpICovCi0gICJcMFwwXDExXDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDk2KSAqLwotICAiXDBcMFwwYCIKLSAgLyogd2lkdGggKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBoZWlnaHQgKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDAiCi0gICJYXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFw1XDBcMFwwXDIyMFwzNFwzNCIKLSAgIlwzNFwzNzd2dnZcMzc3XDM0NlwzNDZcMzQ2XDM3N1wzMjNcMzIzXDMyM1wzNzdcMzAzXDMwM1wzMDNcMzc3XDIyMFwyMjAiCi0gICJcMjIwXDM3N0lJSVwzNzdcMFwwXDBcMzc3XDBcMFwwXDI3NlwwXDBcMCxcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBFXDBcMFwwXDI0MFwwXDBcMCIKLSAgIlwzNzdcMFwwXDBcMzc3SEc9XDM3N1wyNzJcMjcwXDI0NlwzNzdcMzQyXDM0MlwzMzdcMzc3XDM2MVwzNjFcMzYwXDM3NyIKLSAgIlwzNTJcMzUxXDM0NlwzNzdcMzYyXDM2MlwzNTZcMzc3XDM1M1wzNTJcMzQ1XDM3N1wzMDFcMzAwXDI2NVwzNzdXVkpcMzc3IgotICAiUlFGXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDIyN1wwXDBcMCIiM1wwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBUXDBcMFwwXDM3N1wyNTBcMjQ2XDIxN1wzNzdcMjc1XDI3M1wyNDFcMzc3XDMwMCIKLSAgIlwyNzZcMjQzXDM3N1wyNDNcMjQxXDIxMlwzNzdtbFxcXDM3N3x8clwzNzdMTElcMzc3RUVcNzdcMzc3REM6XDM3N29vIgotICAiZ1wzNzdcMzA2XDMwNVwyNzFcMzc3XDI2NlwyNjVcMjMzXDM3N21sXVwzNzdcMjYzXDI2MVwyMzNcMzc3XDI0N1wyNDYiCi0gICJcMjE2XDM3N1wyMjBcMjE3elwzNzdcMFwwXDBcMzc3XDBcMFwwRVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDM3N1wyNTJcMjUxXDIyM1wzNzdcMzE0XDMxM1wyNjVcMzc3XDMyMFwzMTZcMjcyXDM3N1wzMjVcMzIzIgotICAiXDMwMVwzNzdcMjU2XDI1NVwyNDNcMzc3XDIyNFwyMjNcMjEyXDM3N0VEQlwzNzcjIyFcMzc3NTQxXDM3NykoI1wzNzciCi0gICJcMzZcMzZcMzJcMzc3U1JGXDM3N1wyNTVcMjU0XDIyM1wzNzdcMjIyXDIyMVwyMTFcMzc3XDMwMlwzMDFcMjU3XDM3NyIKLSAgIlwyNjFcMjU3XDIyNlwzNzdcMjU0XDI1MlwyMjJcMzc3XDIyM1wyMjJ9XDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwxMFwxMFwxMFwzNzdcMzIxXDMyMFwzMDFcMzc3XDMxNFwzMTNcMjY1XDM3N1wzMjZcMzI1IgotICAiXDMwNFwzNzdcMzM3XDMzNlwzMjFcMzc3XDMxNlwzMTVcMzAwXDM3N1wyNTRcMjU0XDI0NlwzNzdcMjIwXDIxN1wyMTIiCi0gICJcMzc3fn13XDM3N1xcXFxVXDM3N0dGPlwzNzdlZFZcMzc3d3ZlXDM3N1wyMDB+b1wzNzdcMjc2XDI3NVwyNDdcMzc3XDI2NSIKLSAgIlwyNjNcMjMyXDM3N1wyNjZcMjY1XDIzM1wzNzdcMjY1XDI2M1wyMzJcMzc3XDI0MVwyMzdcMjEwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNzdcMzMxXDMzMFwzMTRcMzc3XDM2NlwzNjVcMzYyIgotICAiXDM3N1wzMzNcMzMyXDMyMVwzNzdcMzMyXDMzMVwzMTZcMzc3XDM0NVwzNDRcMzMxXDM3N1wzMjBcMzE3XDMwM1wzNzciCi0gICJcMzIzXDMyM1wzMTFcMzc3XDMxMlwzMTFcMjc0XDM3N1wyNjdcMjY2XDI0NlwzNzdcMjcwXDI2NlwyNDFcMzc3XDI2MCIKLSAgIlwyNTdcMjI2XDM3N1wyNDFcMjM3XDIxMFwzNzdcMjcxXDI3MFwyMzVcMzc3XDI3MVwyNjdcMjM1XDM3N1wyNzBcMjY2IgotICAiXDIzNFwzNzdcMzA0XDMwMlwyNTFcMzc3XDI1N1wyNTVcMjI3XDM3N1wyMTNcMjExdlwzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDI1MlwyNTFcMjMwXDM3N1wyNjZcMjY2XDI2MlwzNzciCi0gICJcMzcxXDM3MVwzNjdcMzc3XDM3MlwzNzJcMzcwXDM3N1wzNjRcMzY0XDM2MFwzNzdcMzQyXDM0MVwzMzJcMzc3XDMzMSIKLSAgIlwzMzFcMzE2XDM3N1wzMzNcMzMyXDMxN1wzNzdcMzI1XDMyM1wzMDFcMzc3XDMyM1wzMjFcMjc2XDM3N1wzMDRcMzAyIgotICAiXDI1MVwzNzdcMzAwXDI3NlwyNDNcMzc3XDMwNVwzMDRcMjU0XDM3N1wzMjZcMzI1XDMwM1wzNzdcMzE1XDMxNFwyNzciCi0gICJcMzc3XDI3M1wyNzJcMjU1XDM3N3x6aVwzNzdxcGBcMzc3XDBcMFwwXDMzNlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDIzXDIzXDIzXDMxNlwyMzFcMjMwXDIwMlwzNzdcMjU3XDI1NlwyMzVcMzc3XDMwM1wzMDNcMjc2XDM3NyIKLSAgIlwzMzZcMzM2XDMzNFwzNzdcMzUxXDM1MVwzNTBcMzc3XDM3M1wzNzNcMzcyXDM3N1wzNzVcMzc1XDM3NFwzNzdcMzc1IgotICAiXDM3NVwzNzVcMzc3XDM3NFwzNzNcMzcyXDM3N1wzNzFcMzcxXDM2N1wzNzdcMzYyXDM2MlwzNTdcMzc3XDM1MlwzNTEiCi0gICJcMzQzXDM3N1wzMzNcMzMyXDMyMVwzNzdcMzAwXDI3N1wyNjFcMzc3XDIyNVwyMjRcMjA0XDM3N3h3ZlwzNzdubV1cMzc3IgotICAiW1tNXDM3N1wwXDBcMFwzMTVcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyMjJdXFxPXDM3N1wyMjMiCi0gICJcMjIyfVwzNzdcMjQzXDI0MlwyMjNcMzc3XDI3MFwyNjdcMjQ2XDM3N1wzMzBcMzI3XDMyMFwzNzdcMzMzXDMzM1wzMjQiCi0gICJcMzc3XDMyM1wzMjJcMzEyXDM3N1wzMTBcMzEwXDMwM1wzNzdcMzA2XDMwNVwyNzVcMzc3XDI3NVwyNzRcMjU1XDM3NyIKLSAgIlwyNzJcMjcwXDI1MFwzNzdcMjM3XDIzNlwyMTNcMzc3XDIxNlwyMTR4XDM3N1wyMTRcMjEzd1wzNzdcMjE2XDIxNHhcMzc3IgotICAienloXDM3N2xrXVwzNzdOTUVcMzc3XDBcMFwweVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiIyIgotICAiXDBcMFwwXDM3N0JCQlwzNzd7e3NcMzc3XDIzN1wyMzdcMjI2XDM3N1wzMjJcMzIxXDMwN1wzNzdcMzM0XDMzM1wzMjIiCi0gICJcMzc3XDMxNFwzMTNcMjc2XDM3N1wzMjFcMzIwXDMwMlwzNzdcMzA0XDMwM1wyNjZcMzc3XDI2MVwyNTdcMjI2XDM3NyIKLSAgIlwyNjFcMjU3XDIyNlwzNzdcMjYxXDI1N1wyMjZcMzc3XDIzMlwyMzBcMjAzXDM3N1wyMDBcMTc3bVwzNzd9fGtcMzc3IgotICAiamleXDM3N0BAPlwzNzdcMFwwXDBcMzc3XDBcMFwwIiIzXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwzNzc3Ny1cMzc3XDE3XDE3XDE3XDM3Nzg3NFwzNzd4eHVcMzc3XDIzMVwyMzBcMjIzXDM3N1wyMTIiCi0gICJcMjExflwzNzdcMjYzXDI2MlwyNDRcMzc3XDI1MlwyNTJcMjM2XDM3N1wyNDNcMjQxXDIxMlwzNzdcMjA3XDIwNnNcMzc3IgotICAiXDIxN1wyMTV5XDM3N2JhVVwzNzdUVFFcMzc3MTEuXDM3N1wwXDBcMFwzNzcrKyNcMzc3XDBcMFwwXDM3N1wwXDBcMFwxNyIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3cXFdXDM3N1dXS1wzNzdCQjpcMzc3IgotICAiJiZcNDBcMzc3ISEhXDM3N1wzM1wzM1wzM1wzNzdcMFwwXDBcMzc3JCQkXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNzdcMjZcMjZcMjNcMzc3KipcIlwzNzcwMCdcMzc3XDc3XDc3IiI0XDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3enplXDM3N1tbUSIKLSAgIlwzNzdcMjA1XDIwNXZcMzc3dnZrXDM3N1wyMzBcMjMwXDIxNlwzNzd1dWtcMzc3UVFGXDM3N1wxNzdcMTc3dFwzNzdqIgotICAialhcMzc3QEA1XDM3N2JiUVwzNzdUVEVcMzc3Pj4zXDM3N1VVRlwzNzc0NCtcMzc3UVFDXDM3N1wwXDBcMFwzNzdcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDIwNVwyMDVuXDM3N10iCi0gICJdVFwzNzdcMjIxXDIyMVwyMDJcMzc3XDIwMlwyMDJ4XDM3N1wyNTJcMjUyXDI0M1wzNzd6enFcMzc3Tk5FXDM3N1wyMTIiCi0gICJcMjEyXDIwMFwzNzd8fG1cMzc3QkI3XDM3N2BgUlwzNzdaWkpcMzc3PDwyXDM3N05OQVwzNzc1NSxcMzc3VFRFXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDNcMFwwXDBcMzc3IgotICAiXDIwNVwyMDVuXDM3N1tbUVwzNzdcMjU0XDI1NFwyMzRcMzc3XDIwNVwyMDV7XDM3N1wyNzNcMjczXDI2M1wzNzdcMjQzIgotICAiXDI0M1wyMzJcMzc3VFRLXDM3N1wyMjNcMjIzXDIxMlwzNzdcMjIxXDIyMVwyMDVcMzc3QkI3XDM3N2BgUlwzNzdoaFYiCi0gICJcMzc3QUE2XDM3N2pqWFwzNzdDQzdcMzc3ampYXDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMVwwXDBcMFw1XDBcMFwwXDEwXDBcMFwwXDM3N1wyMDVcMjA1blwzNzdbW1FcMzc3XDI0NFwyNDRcMjIzXDM3NyIKLSAgIlwyMDVcMjA1e1wzNzdcMzAxXDMwMVwyNjZcMzc3XDI2MVwyNjFcMjQyXDM3N2trX1wzNzdcMjYxXDI2MVwyNDJcMzc3IgotICAiXDIzNVwyMzVcMjEzXDM3N1RURVwzNzdcMjA0XDIwNHBcMzc3cXFeXDM3N0NDN1wzNzdqalhcMzc3Q0M3XDM3N2pqWFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDZcMFwwXDBcM1wwXDBcMFwwXDBcMFwwXDJcMFwwXDBcMTJcMFwwXDBcMjRcMFwwXDBcMzc3IgotICAiXDIwNVwyMDVuXDM3N1tbUVwzNzdcMjQ1XDI0NVwyMjRcMzc3XDIwNVwyMDV7XDM3N1wzMDJcMzAyXDI2N1wzNzdcMjYxIgotICAiXDI2MVwyNDJcMzc3a2tfXDM3N1wyNjFcMjYxXDI0MlwzNzdcMjM1XDIzNVwyMTNcMzc3VFRFXDM3N1wyMDRcMjA0cFwzNzciCi0gICJxcV5cMzc3Q0M3XDM3N2pqWFwzNzdDQzdcMzc3ampYXDM3N1wwXDBcMFwzNzdcMFwwXDBcMjZcMFwwXDBcMTNcMFwwXDAiCi0gICJcMlwwXDBcMFwzXDBcMFwwXDI2XDBcMFwwK1wwXDBcMFwzNzdcMjA1XDIwNW5cMzc3W1tRXDM3N1wyMzVcMjM1XDIxMyIKLSAgIlwzNzdcMjA1XDIwNXtcMzc3XDMwMVwzMDFcMjY2XDM3N1wyNjFcMjYxXDI0MlwzNzdra19cMzc3XDI2MVwyNjFcMjQyIgotICAiXDM3N1wyMzVcMjM1XDIxM1wzNzdUVEVcMzc3XDIwNFwyMDRwXDM3N3FxXlwzNzdDQzdcMzc3ampYXDM3N0NDN1wzNzciCi0gICJqalhcMzc3XDBcMFwwXDM3N1wwXDBcMCIiMVwwXDBcMFwzMlwwXDBcMFw0XDBcMFwwXDdcMFwwXDAjXDBcMFwwSVwwXDAiCi0gICJcMFwzNzd7e2VcMzc3W1tRXDM3N1wyNDRcMjQ0XDIyM1wzNzdcMjA1XDIwNXtcMzc3XDMwMVwzMDFcMjY2XDM3N1wyNjEiCi0gICJcMjYxXDI0MlwzNzdra19cMzc3XDI2MVwyNjFcMjQyXDM3N1wyMzVcMjM1XDIxM1wzNzdUVEVcMzc3XDIwNFwyMDRwXDM3NyIKLSAgInFxXlwzNzdDQzdcMzc3ampYXDM3N0NDN1wzNzdfX09cMzc3XDBcMFwwXDM3N1wwXDBcMEhcMFwwXDAqXDBcMFwwXDdcMCIKLSAgIlwwXDBcMTJcMFwwXDAsXDBcMFwwWFwwXDBcMFwzNzdmZlRcMzc3W1tRXDM3N1wyNDRcMjQ0XDIyM1wzNzdcMjAyXDIwMiIKLSAgInhcMzc3XDMwMVwzMDFcMjY2XDM3N1wyNjFcMjYxXDI0MlwzNzdra19cMzc3XDI2MVwyNjFcMjQyXDM3N1wyMzVcMjM1IgotICAiXDIxM1wzNzdUVEVcMzc3XDIwNFwyMDRwXDM3N3FxXlwzNzdDQzdcMzc3ampYXDM3N0lJPFwzNzdXV0hcMzc3XDBcMFwwIgotICAiXDM3N1wwXDBcMFBcMFwwXDAqXDBcMFwwXDdcMFwwXDBcNlwwXDBcMFwzNVwwXDBcMENcMFwwXDByXDBcMFwwXDM3N1ciCi0gICJXSlwzNzd9fW1cMzc3dnZpXDM3N1wyNjNcMjYzXDI1MFwzNzdcMjQxXDI0MVwyMjRcMzc3bW1hXDM3N1wyNjNcMjYzXDI0NSIKLSAgIlwzNzdcMjM1XDIzNVwyMTNcMzc3VFRFXDM3N1wyMDRcMjA0cFwzNzdpaVdcMzc3QUE1XDM3N1ZWR1wzNzdERDhcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwxNzdcMFwwXDBDXDBcMFwwXDM1XDBcMFwwXDRcMFwwXDBcMVwwXDBcMFwxM1wwXDBcMFwzNCIKLSAgIlwwXDBcMCIiMlwwXDBcMGdcMFwwXDBcMzIwXDBcMFwwXDM3N1wwXDBcMFwzNzdZWVFcMzc3WFhJXDM3N05OQFwzNzd0IgotICAidGdcMzc3YWFTXDM3N05OQVwzNzdJSTxcMzc3SUk8XDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDMwNFwwXDAiCi0gICJcMHRcMFwwXDA+XDBcMFwwJVwwXDBcMFwxMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFw2XDBcMFwwXDE3XDAiCi0gICJcMFwwXDMxXDBcMFwwXDM3XDBcMFwwclwwXDBcMFwyNjRcMFwwXDBcMzAyXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDAiCi0gICJcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDI3MVwwXDBcMFwyMTdcMFwwXDBTXDBcMFwwLCIKLSAgIlwwXDBcMCpcMFwwXDBcMzNcMFwwXDBcMTBcMFwwXDBcMVwwXDBcMFwwIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja190cmFzaF9mdWxsKQotI2VuZGlmCi0jaWZkZWYgX19HTlVDX18KLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfdHJhc2hfZnVsbFtdIF9fYXR0cmlidXRlX18gKChfX2FsaWduZWRfXyAoNCkpKSA9IAotI2Vsc2UKLXN0YXRpYyBjb25zdCBndWludDggc3RvY2tfdHJhc2hfZnVsbFtdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDIzMDQpICovCi0gICJcMFwwXDExXDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDk2KSAqLwotICAiXDBcMFwwYCIKLSAgLyogd2lkdGggKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBoZWlnaHQgKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDEwXDEwIgotICAiXDEwXDM3N1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFw2XDZcNlwyMVw2XDZcNktcMTZcMTZcMTZcMzc3QkJCXDM3N0pKSlwzNzc+Pj5cMzc3LCwsXDM3N1wwIgotICAiXDBcMFwzNzdcNlw2XDY+XDZcNlw2IVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxMFwxMFwxMFwzNzdcMTBcMTBcMTAiCi0gICJcMzc3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlw2XDZcNjpcMFwwXDBcMzc3XDBcMFwwXDM3N1wyMDVcMjAzcVwzNzdcMzYwXDM1NVwzMzBcMzc3XDM2MlwzNjFcMzUxIgotICAiXDM3N1wzNTZcMzU1XDM0NFwzNzdcMzA3XDMwNlwyNzJcMzc3U1JGXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDZcNlw2IgotICAiS1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcNlw2XDY+XDIwXDIwXDIwXDM3N1wzMDJcMzAwXDI0NVwzNzdcMzAxXDI3N1wyNDUiCi0gICJcMzc3enlnXDM3N0hHQFwzNzcnJyVcMzc3NjUuXDM3N1wyMDdcMjA1clwzNzdcMjQwXDIzNlwyMTBcMzc3XDI0M1wyNDEiCi0gICJcMjEyXDM3N1wyNDVcMjQzXDIxNFwzNzdcMFwwXDBcMzc3XDZcNlw2IVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwKysrXDM3N1wzMjNcMzIxXDI3NCIKLSAgIlwzNzdcMzM0XDMzMlwzMDRcMzc3XDM0MlwzNDBcMzE3XDM3N1wyNzFcMjY3XDI0MlwzNzdkYltcMzc3OTg2XDM3Nzw8IgotICAiM1wzNzdhYFNcMzc3XDIzMlwyMzBcMjAzXDM3N1wyNjdcMjY1XDIzM1wzNzdcMjYzXDI2MlwyMzBcMzc3XDI0NFwyNDIiCi0gICJcMjEzXDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDEwXDEwXDEwXDM3NyIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM3N1wzNTBcMzQ0XDMyM1wzNzdcMzY0XDM2MVwzNTEiCi0gICJcMzc3XDM2MlwzNjFcMzQ0XDM3N1wzNTJcMzUxXDMzMlwzNzdcMzQ1XDM0MlwzMjJcMzc3XDMyNVwzMjJcMjc2XDM3NyIKLSAgIlwzMDNcMzAxXDI0N1wzNzdcMjU3XDI1NVwyMjRcMzc3XDMwMFwyNzZcMjQ0XDM3N1wzMDZcMzA0XDI1NFwzNzdcMjcwIgotICAiXDI2NlwyMzRcMzc3eXdmXDM3N1wwXDBcMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDEwXDEwXDEwXDM3N1wxMFwxMFwxMFwzNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDIxMlwyMTEiCi0gICJ1XDM3N1wzNjFcMzU1XDMyMlwzNzdcMzczXDM3MFwzNTFcMzc3XDM3MVwzNjVcMzU1XDM3N1wzNzBcMzY3XDM1NlwzNzciCi0gICJcMzcwXDM2N1wzNTRcMzc3XDM2NVwzNjNcMzQ2XDM3N1wzNTRcMzUyXDMzMVwzNzdcMzM2XDMzNVwzMTNcMzc3XDBcMCIKLSAgIlwwXDM3N1wwXDBcMFwzNzdCQThcMzc3XDBcMFwwXDM3N1wwXDBcMFwwXDBcMFwwPlwwXDBcMFwzNzdcMFwwXDBXXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDIwMlJRRlwzNzdzcWVcMzc3IgotICAiXDIzN1wyMzVcMjIxXDM3N1wzNDRcMzQxXDMxMFwzNzdcMzUxXDM0NVwzMTdcMzc3XDM0MlwzNDBcMzEzXDM3N1wzMjEiCi0gICJcMzIxXDMxM1wzNzdcMjE2XDIxNVwxNzdcMzc3XDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzAxXDMwMVwzMDFcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwyNDBcMFwwXDBMXDBcMFwwXDM3N1wzNzdcMzc3XDM3N1wzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzdcMzdcMzNcMzc3NDQwXDM3NyIKLSAgIktJRFwzNzdoZ2JcMzc3cG9mXDM3N2trZFwzNzdubF1cMzc3WFdLXDM3NysrJVwzNzdcMFwwXDBcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wyMjJcMjIyXDIyMlwzNzdcMlwyXDJcMzc3XDBcMFwwXDM3N1wzNDZcMzQ2XDM0NlwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwPlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwKiojXDM3NyIKLSAgIlwyNDBcMjQwXDIyNVwzNzdNTUBcMzc3NjYwXDM3NyoqJlwzNzcvLypcMzc3XDE3XDE3XDE1XDM3N1wxM1wxM1wxMVwzNzciCi0gICJcMjBcMjBcMTVcMzc3KCgkXDM3N1wwXDBcMFwzNzdcMjc0XDI3NFwyNzRcMzc3bm5uXDM3N1wzNTVcMzU1XDM1NVwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwTFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDArKyRcMzc3XDI0NVwyNDRcMjMxXDM3N1wyNjdcMjY2XDI1NlwzNzdxcGdcMzc3XDI0MVwyNDFcMjIyIgotICAiXDM3N3RzY1wzNzdAQDVcMzc3aWlbXDM3NyUlXDM2XDM3N1wzNFwzNFwzNFwzNzdcMzU0XDM1NFwzNTRcMzc3XDMxN1wzMTciCi0gICJcMzE3XDM3N29vb1wzNzdcMjU3XDI1N1wyNTdcMzc3XDBcMFwwXDM3N1wwXDBcMCFcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwLCwlXDM3N1wyNTVcMjU1XDI0M1wzNzdcMzMxIgotICAiXDMzMVwzMjJcMzc3XDIxM1wyMTNcMTc3XDM3N1wzMjZcMzI1XDMxNlwzNzdcMjEwXDIxMHtcMzc3WFdPXDM3N1wxNzciCi0gICJcMTc3dVwzNzdcMFwwXDBcMzc3XDMzNlwzMzZcMzM2XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzM2XDMzNlwzMzZcMzc3XDMzNiIKLSAgIlwzMzZcMzM2XDM3N1wzMTFcMzExXDMxMVwzNzdcMFwwXDBcMzc3XDBcMFwwXDc3XDBcMFwwXDFcMFwwXDBcMVwwXDBcMCIKLSAgIlwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcNiwsJVwzNzdcMjU1XDI1NVwyNDNcMzc3XDMzMiIKLSAgIlwzMzJcMzIzXDM3N1wyMTdcMjE2XDIwMVwzNzdcMzM1XDMzNVwzMjRcMzc3XDI1NFwyNTNcMjMxXDM3N11dUlwzNzdpIgotICAiaWBcMzc3bW1tXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzQ3XDM0N1wzNDdcMzc3XDIyM1wyMjNcMjIzXDM3N1wwXDBcMFwzNzdcMFwwXDArXDBcMFwwXDEzXDAiCi0gICJcMFwwXDdcMFwwXDBcM1wwXDBcMFwxXDBcMFwwXDBcMFwwXDBcNVwwXDBcMFwyMSsrJFwzNzd+fnVcMzc3XDMzMFwzMzAiCi0gICJcMzIxXDM3N1wyMTVcMjE1XDIwMFwzNzdcMzM1XDMzNVwzMjNcMzc3XDI1NFwyNTNcMjMxXDM3N1BQR1wzNzdcMzBcMzAiCi0gICJcMzBcMzc3XDMxMVwzMTFcMzExXDM3N1wzMDdcMzQwXDMwN1wzNzd4XDI2NXhcMzc3XDIzM1wzMTBcMjMzXDM3N1wzNzciCi0gICJcMzc3XDM3N1wzNzdcMzQ3XDM0N1wzNDdcMzc3XDMwNlwzMDZcMzA2XDM3N1wwXDBcMFwzNzdcMFwwXDBVXDBcMFwwXDM1IgotICAiXDBcMFwwXDI3XDBcMFwwXDE1XDBcMFwwXDNcMFwwXDBcMVwwXDBcMFwxMVwwXDBcMFwzNCcnIVwzNzdDQz1cMzc3XDIxNiIKLSAgIlwyMTZcMjA2XDM3N15eVVwzNzdcMzMyXDMzMlwzMjBcMzc3XDI1NFwyNTNcMjMxXDM3NzU1LlwzNzddXV1cMzc3XDMyNCIKLSAgIlwzNDdcMzI0XDM3N11cMjQ2XVwzNzdcMzA3XDM0MFwzMDdcMzc3XDM3N1wzNzdcMzc3XDM3N11cMjQ2XVwzNzdcMjE1IgotICAiXDI3MlwyMTVcMzc3XDM0NVwzNDVcMzQ1XDM3N1wyMDZcMjA2XDIwNlwzNzdcMFwwXDBcMzc3XDBcMFwwR1wwXDBcMCciCi0gICJcMFwwXDBcMzFcMFwwXDBcMTBcMFwwXDBcMVwwXDBcMFwxMVwwXDBcMFwzNFw0XDRcNGtcNlw2XDZcMzc3XDZcNlw2XDM3NyIKLSAgIkJBOlwzNzdcMjE3XDIxN3tcMzc3enpsXDM3N1wwXDBcMFwzNzdcMzA0XDMwNFwzMDRcMzc3c1wyNjJzXDM3N1wzMDdcMzQwIgotICAiXDMwN1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N3hcMjY1eFwzNzduXDI1M25cMzc3XDM0NVwzNDUiCi0gICJcMzQ1XDM3N1wyMjBcMjIwXDIyMFwzNzdcMFwwXDBcMzc3XDBcMFwwd1wwXDBcMC5cMFwwXDBcIlwwXDBcMFwxNlwwXDAiCi0gICJcMFwxXDBcMFwwXDVcMFwwXDBcMjNcMFwwXDAmXDBcMFwwIiIwXDRcNFw0eVw2XDZcNlwzNzdcMFwwXDBcMzc3XDE3XDE3IgotICAiXDE3XDM3N1wwXDBcMFwzNzdcMzI3XDMyN1wzMjdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzY0XDM2NFwzNjRcMzc3U1wyMzVTXDM3NyIKLSAgIlwyNzdcMjc3XDI3N1wzNzdKSkpcMzc3XDBcMFwwXDM3N1wwXDBcMCIiMVwwXDBcMChcMFwwXDBcMjNcMFwwXDBcMFwwIgotICAiXDBcMFwxXDBcMFwwXDZcMFwwXDBcMjNcMFwwXDBcNDBcMFwwXDApXDBcMFwwLVwwXDBcMC5cMFwwXDAiIjBcMFwwXDAiCi0gICJcMzc3XDM1NFwzNTRcMzU0XDM3N3hcMjY1eFwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzMDdcMzQwIgotICAiXDMwN1wzNzdcMzc3XDM3N1wzNzdcMzc3XDI3MlwzMjNcMjcyXDM3N1wyMTJcMjcwXDIxMlwzNzdcMjEyXDI2N1wyMTIiCi0gICJcMzc3cXFxXDM3N1wwXDBcMFwzNzdcMFwwXDAiIjJcMFwwXDAqXDBcMFwwXDI3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwxXDBcMFwwXDNcMFwwXDBcMTJcMFwwXDBcMjFcMFwwXDBcMjZcMFwwXDBcMzNcMFwwXDBcIlwwXDBcMFwzNzdcMjU0IgotICAiXDI1NFwyNTRcMzc3XDM1NFwzNTRcMzU0XDM3N29cMjU0b1wzNzdvXDI1NG9cMzc3blwyNTNuXDM3N1RcMjM1VFwzNzciCi0gICJcMjYyXDMxNFwyNjJcMzc3XDIxMlwyNzBcMjEyXDM3N1wyMjJcMjIyXDIyMlwzNzdhYWFcMzc3XDBcMFwwXDM3N1wwXDAiCi0gICJcMCIiMVwwXDBcMCdcMFwwXDBcMjNcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDEiCi0gICJcMFwwXDBcMlwwXDBcMFwxMFwwXDBcMFwyMlwwXDBcMFVcMFwwXDBcMzc3XDBcMFwwXDM3N2lpaVwzNzdcMjAwXDIwMCIKLSAgIlwyMDBcMzc3fVwyMjB9XDM3N1wyNDFcMjQxXDI0MVwzNzdcMjAzXDIwM1wyMDNcMzc3enp6XDM3N0NDQ1wzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwd1wwXDBcMCpcMFwwXDBcMzRcMFwwXDBcMTJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDdcMFwwXDBcMjFcMFwwXDAiIjlcMFwwXDBwXDAiCi0gICJcMFwwXDIzNFwwXDBcMFwzMDRcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzcoKChcMzc3NDQ0XDI2Mzg4OHFcMCIKLSAgIlwwXDAjXDBcMFwwXDMyXDBcMFwwXDEzXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcNlwwXDBcMFwxNFwwXDBcMFwyMVwwXDBcMFwyMyIKLSAgIlwwXDBcMFwyNFwwXDBcMFwyNlwwXDBcMFwyNlwwXDBcMFwyNlwwXDBcMFwyNVwwXDBcMFwyNVwwXDBcMFwyNFwwXDBcMCIKLSAgIlwxN1wwXDBcMFwxMFwwXDBcMFwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwyXDBcMFwwXDRcMFwwXDBcNlwwXDAiCi0gICJcMFw2XDBcMFwwXDdcMFwwXDBcMTBcMFwwXDBcN1wwXDBcMFw2XDBcMFwwXDZcMFwwXDBcNFwwXDBcMFwyXDBcMFwwXDEiCi0gICJcMFwwXDBcMFwwXDBcMFwwIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja192b2x1bWUpCi0jZW5kaWYKLSNpZmRlZiBfX0dOVUNfXwotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja192b2x1bWVbXSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18gKDQpKSkgPSAKLSNlbHNlCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX3ZvbHVtZVtdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDIzMDQpICovCi0gICJcMFwwXDExXDMwIgotICAvKiBwaXhkYXRhX3R5cGUgKDB4MTAxMDAwMikgKi8KLSAgIlwxXDFcMFwyIgotICAvKiByb3dzdHJpZGUgKDk2KSAqLwotICAiXDBcMFwwYCIKLSAgLyogd2lkdGggKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBoZWlnaHQgKDI0KSAqLwotICAiXDBcMFwwXDMwIgotICAvKiBwaXhlbF9kYXRhOiAqLwotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwLFwwXDBcMFwzNzdcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMElAZlwzMjBJQGYrXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwLVwwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDZcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBJQGZcMzc3SUBmK1wwXDBcMFwwSUBmK0lAZiIKLSAgIlwyNTJJQGYrXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAtXDBcMFwwXDM3N1wyNTZcMjUzXDIzN1wzNzdcMFwwXDBcMzc3XDBcMFwwIgotICAiXDIxXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwwSUBmK0lAZlwzNzdJQGYrXDBcMFwwXDBJQGZcMjEzSUBmT1wwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMG9cMFwwXDBcMzc3XDI1NlwyNTNcMjM3XDM3N1wzMzRcMzMxXDMyM1wzNzdcMFwwXDBcMzc3XDBcMFwwXDIyMSIKLSAgIlwwXDBcMFw0SUBmXDM3N0lAZitcMFwwXDBcMElAZlwyNTJJQGZPXDBcMFwwXDBJQGZjSUBmXDIxM1wwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcN1wwXDBcMFwzNzdcMjMzXDIzMFwyMTJcMzc3XDIwMH5yIgotICAiXDM3N1wwXDBcMFwzNzdcMjU2XDI1M1wyMzdcMzc3XDM0MlwzNDFcMzM0XDM3N1wzNjJcMzYyXDM2MFwzNzdcMFwwXDAiCi0gICJcMzc3XDBcMFwwXDM0N1wwXDBcMFwxMklAZitJQGZcMzc3XDBcMFwwXDBJQGZPSUBmXDI1MlwwXDBcMFwwSUBmQElAZiIKLSAgIlwyNTJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDIyXDBcMFwwXDM3N1wzNDNcMzQyIgotICAiXDMzNVwzNzdcMjY2XDI2NlwyNjFcMzc3XDBcMFwwXDM3N1wzNTZcMzU1XDM1MlwzNzdcMzUyXDM1MlwzNDZcMzc3XDMwNSIKLSAgIlwzMDFcMjY3XDM3N1wwXDBcMFwzNzdJSUlcMzc3XDBcMFwwXDI0XDBcMFwwXDBJQGZcMzc3XDBcMFwwXDBJQGYrSUBmIgotICAiXDMyMFwwXDBcMFwwSUBmI0lAZlwzMjBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzXDBcMFwwIgotICAiXDMwXDBcMFwwXDM3N1wyNjBcMjU0XDIzNFwzNzdcMjIyXDIxNlwyMDFcMzc3XDBcMFwwXDM3N1wzMTVcMzEyXDMwMVwzNzciCi0gICJcMjcwXDI2NFwyNDZcMzc3XDI3N1wyNzNcMjU3XDM3N1wwXDBcMFwzNzdcMTFcMTFcMTFcMzc3XDBcMFwwXDMwXDBcMCIKLSAgIlwwXDBJQGZcMzc3XDBcMFwwXDBcMFwwXDBcMElAZlwzNzdcMFwwXDBcMFwwXDBcMFwwSUBmXDM3N1wwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDNcMFwwXDBcMzFcMFwwXDBcMzc3XDIzM1wyMzBcMjEyXDM3N1wyMDB+IgotICAiclwzNzdcMFwwXDBcMzc3XDIzNlwyMzJcMjE0XDM3N1wyNjBcMjU0XDIzNFwzNzdcMjYwXDI1NFwyMzRcMzc3XDBcMFwwIgotICAiXDM3NysrK1wzNzdcMFwwXDBcMjdcMFwwXDBcMElAZlwzNzdcMFwwXDBcMElAZitJQGZcMzIwXDBcMFwwXDBJQGYjSUAiCi0gICJmXDMyMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDNcMFwwXDBcMzFcMFwwXDBcMzc3eXZsXDM3NyIKLSAgImRiWVwzNzdcMFwwXDBcMzc3XDIzNlwyMzJcMjE0XDM3N1wyMzZcMjMyXDIxNFwzNzdcMjM2XDIzMlwyMTRcMzc3XDBcMCIKLSAgIlwwXDM3N1wxMFwxMFwxMFwzNzZcMFwwXDBcMjdJQGYrSUBmXDM3N1wwXDBcMFwwSUBmT0lAZlwyNTJcMFwwXDBcMElAIgotICAiZkBJQGZcMjUyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcM1wwXDBcMFwzMVwwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwyNDBcMFwwXDBcMzc3XDIxNVwyMTJ9XDM3N1wyMzZcMjMyXDIxNFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDMwMFwwXDBcMFwzMElAZlwzNzdJQGYrXDBcMFwwXDBJQGZcMjUySUBmT1wwXDBcMFwwSSIKLSAgIkBmWUlAZlwyMTNcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzXDBcMFwwXDMwXDBcMFwwPlwwIgotICAiXDBcMFNcMFwwXDBTXDBcMFwwUVwwXDBcMHJcMFwwXDBcMzc3fntwXDM3N1wwXDBcMFwzNzdcMFwwXDA9XDBcMFwwXDMyIgotICAiXDBcMFwwXDBcMFwwXDBcMElAZitJQGZcMzIwSUBmK1wwXDBcMFwwSUBmXDIxM0lAZk9cMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwyXDBcMFwwXDIyXDBcMFwwL1wwXDBcMD1cMFwwXDA7XDBcMFwwIiI4XDBcMFwwQyIKLSAgIlwwXDBcMG9cMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMCIiMVwwXDBcMFwyNlwwXDBcMFwwXDBcMFwwXDBJQGZcMzc3IgotICAiSUBmK1wwXDBcMFwwSUBmK0lAZlwyMTNJQGYrXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwIgotICAiXDBcMFw3XDBcMFwwXDIyXDBcMFwwXDI3XDBcMFwwXDI2XDBcMFwwXDI2XDBcMFwwJVwwXDBcMD5cMFwwXDBsXDBcMFwwIgotICAiXDM3N1wwXDBcMFwiXDBcMFwwXDEzXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMElAZlwzMjAiCi0gICJJQGYrXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcMiIKLSAgIlwwXDBcMFwzXDBcMFwwXDNcMFwwXDBcNFwwXDBcMFwxNVwwXDBcMCNcMFwwXDA7XDBcMFwwIiI4XDBcMFwwXDMwXDBcMCIKLSAgIlwwXDRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcM1wwXDBcMFwxNVwwXDBcMFwzN1wwXDBcMCVcMFwwXDBcMjFcMFwwXDBcMlwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDNcMFwwXDBcMTFcMFwwXDBcMTVcMFwwXDBcNlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDFcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9OwotCi0KLS8qIEdka1BpeGJ1ZiBSR0JBIEMtU291cmNlIGltYWdlIGR1bXAgKi8KLQotI2lmZGVmIF9fU1VOUFJPX0MKLSNwcmFnbWEgYWxpZ24gNCAoc3RvY2tfbWlkaSkKLSNlbmRpZgotI2lmZGVmIF9fR05VQ19fCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX21pZGlbXSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18gKDQpKSkgPSAKLSNlbHNlCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX21pZGlbXSA9IAotI2VuZGlmCi17ICIiCi0gIC8qIFBpeGJ1ZiBtYWdpYyAoMHg0NzY0NmI1MCkgKi8KLSAgIkdka1AiCi0gIC8qIGxlbmd0aDogaGVhZGVyICgyNCkgKyBwaXhlbF9kYXRhICgyMzA0KSAqLwotICAiXDBcMFwxMVwzMCIKLSAgLyogcGl4ZGF0YV90eXBlICgweDEwMTAwMDIpICovCi0gICJcMVwxXDBcMiIKLSAgLyogcm93c3RyaWRlICg5NikgKi8KLSAgIlwwXDBcMGAiCi0gIC8qIHdpZHRoICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogaGVpZ2h0ICgyNCkgKi8KLSAgIlwwXDBcMFwzMCIKLSAgLyogcGl4ZWxfZGF0YTogKi8KLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwyNFwwXDBcMG5cMFwwXDBcMjRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDM2XDBcMCIKLSAgIlwwXDIwNlwwXDBcMCRcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwJFwwXDBcMF5cMFwwXDB1XDBcMFwwXDIzMVwwXDBcMFwyMzFcMFwwXDBRXDBcMFwwPFwwXDBcMCIKLSAgIihcMFwwXDBcMTdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAuXDBcMFwwXDI3NlwwXDBcMFhcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJeXDBcMFwwQ1wwXDBcMHVcMFwwXDAkXDBcMFwwXDI0XDBcMFwwRVwwXDBcMHdcMFwwXDB9XDBcMFwwWFwwXDBcMCIiNyIKLSAgIlwwXDBcMFwxNVwwXDBcMEFcMFwwXDBcMjI1XDBcMFwwIiI4XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMjcxXDBcMFwwJFwwXDBcMCIKLSAgIlwxNzdcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCFcMFwwXDA+XDBcMFwwXDIwMVwwXDBcMFwzMTEiCi0gICJcMFwwXDBcMjAwXDBcMFwwR1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwRVwwXDBcMFwzNjRcMFwwXDBiXDBcMFwwXDM2MlwwXDBcMCIKLSAgIlVcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwzNTVcMzc3XDM3N1wzNzdcMzc3XDBcMFwwXDM1NVwzNzdcMzc3XDM3N1wzNzciCi0gICJcMFwwXDBcMzU2XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc2XDI1MFwyNTBcMjUwXDM3N1wwXDBcMFwzNTVcMjY3XDI2NyIKLSAgIlwyNjdcMzc3XDBcMFwwXDM1NlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwe1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwelwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMzc3XDMyM1wzMjFcMzE2XDM3N1wyNzRcMjcyXDI2NSIKLSAgIlwzNzdcMjU0XDI1MlwyNDRcMzc3XDIzMFwyMjZcMjE3XDM3N1wyMzBcMjI2XDIxN1wzNzdcMjMwXDIyNlwyMTdcMzc3IgotICAiXDIzMFwyMjZcMjE3XDM3N1wyMzBcMjI2XDIxN1wzNzdcMjMwXDIyNlwyMTdcMzc3XDIzMFwyMjZcMjE3XDM3N1wyMzAiCi0gICJcMjI2XDIxN1wzNzdcMjMwXDIyNlwyMTdcMzc3XDIzMFwyMjZcMjE3XDM3N1wyMzBcMjI2XDIxN1wzNzdcMjMwXDIyNiIKLSAgIlwyMTdcMzc3XDIzMFwyMjZcMjE3XDM3N1wyMzBcMjI2XDIxN1wzNzd6eHJcMzc3YmBbXDM3N1VTT1wzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDIzXDBcMFwwXDBcMFwwXDBcMzc3XDI1N1wyNTVcMjUxXDM3N1wyMzRcMjMyXDIyNVwzNzdcMjA0XDIwMnwiCi0gICJcMzc3ZmRdXDM3N2ZkXVwzNzdmZF1cMzc3ZmRdXDM3N2ZkXVwzNzdmZF1cMzc3ZmRdXDM3N2ZkXVwzNzdmZF1cMzc3ZiIKLSAgImRdXDM3N2ZkXVwzNzdmZF1cMzc3ZmRdXDM3N2ZkXVwzNzdSUEpcMzc3UlBKXDM3N0FAO1wzNzdcMFwwXDBcMzc3XDBcMCIKLSAgIlwwLFwwXDBcMFwzXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMCIiNlwwXDBcMFw3XDBcMFwwXDM3N1wzMTVcMzE1XDMxNVwzNzdWVlZcMzc3IgotICAiXDBcMFwwXDM3N1wzMTJcMzEyXDMxMlwzNzdWVlZcMzc3XDBcMFwwXDM3N1wzMTBcMzEwXDMxMFwzNzdWVlZcMzc3XDAiCi0gICJcMFwwXDM3N1wzMDVcMzA1XDMwNVwzNzdcMzAyXDMwMlwzMDJcMzc3XDI3MVwyNzFcMjcxXDM3N1wzMDNcMzAzXDMwMyIKLSAgIlwzNzdWVlZcMzc3XDBcMFwwXDM3N1wzMDBcMzAwXDMwMFwzNzdWVlZcMzc3XDBcMFwwXDM3N1wyNzZcMjc2XDI3NlwzNzciCi0gICJcMjcwXDI3MFwyNzBcMzc3XDBcMFwwXDM3N1wwXDBcMFw3N1wwXDBcMFwxNFwwXDBcMFwzNzdcMzc3XDM3N1wzNzdcMzc3IgotICAia2trXDM3N1wwXDBcMFwzNzdcMzc0XDM3NFwzNzRcMzc3a2trXDM3N1wwXDBcMFwzNzdcMzcwXDM3MFwzNzBcMzc3a2siCi0gICJrXDM3N1wwXDBcMFwzNzdcMzY2XDM2NlwzNjZcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzYyXDM2MiIKLSAgIlwzNjJcMzc3a2trXDM3N1wwXDBcMFwzNzdcMzYwXDM2MFwzNjBcMzc3a2trXDM3N1wwXDBcMFwzNzdcMzU1XDM1NVwzNTUiCi0gICJcMzc3XDM0NlwzNDZcMzQ2XDM3N1wwXDBcMFwzNzdcMFwwXDBFXDBcMFwwXDIyXDBcMFwwXDM3N1wzNzdcMzc3XDM3NyIKLSAgIlwzNzdra2tcMzc3XDBcMFwwXDM3N1wzNzNcMzczXDM3M1wzNzdra2tcMzc3XDBcMFwwXDM3N1wzNjdcMzY3XDM2N1wzNzciCi0gICJra2tcMzc3XDBcMFwwXDM3N1wzNjVcMzY1XDM2NVwzNzdcMzYxXDM2MVwzNjFcMzc3XDM0NVwzNDVcMzQ1XDM3N1wzNjIiCi0gICJcMzYyXDM2MlwzNzdra2tcMzc3XDBcMFwwXDM3N1wzNTdcMzU3XDM1N1wzNzdra2tcMzc3XDBcMFwwXDM3N1wzNTRcMzU0IgotICAiXDM1NFwzNzdcMzQ1XDM0NVwzNDVcMzc3XDBcMFwwXDM3N1wwXDBcMERcMFwwXDBcMjNcMFwwXDBcMzc3XDM3N1wzNzciCi0gICJcMzc3XDM3N2tra1wzNzdcMFwwXDBcMzc3XDM3MlwzNzJcMzcyXDM3N2tra1wzNzdcMFwwXDBcMzc3XDM2N1wzNjdcMzY3IgotICAiXDM3N2tra1wzNzdcMFwwXDBcMzc3XDM2NVwzNjVcMzY1XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzQ0XDM0NFwzNDRcMzc3IgotICAiXDM2MlwzNjJcMzYyXDM3N2tra1wzNzdcMFwwXDBcMzc3XDM1NlwzNTZcMzU2XDM3N2tra1wzNzdcMFwwXDBcMzc3XDM1MyIKLSAgIlwzNTNcMzUzXDM3N1wzNDRcMzQ0XDM0NFwzNzdcMFwwXDBcMzc3XDBcMFwwRFwwXDBcMFwyMFwwXDBcMFwzNzdcMzc2IgotICAiXDM3NlwzNzZcMzc3Tk5OXDM3N1wwXDBcMFwzNzdcMzcyXDM3MlwzNzJcMzc3Tk5OXDM3N1wwXDBcMFwzNzdcMzY2XDM2NiIKLSAgIlwzNjZcMzc3Tk5OXDM3N1wwXDBcMFwzNzdcMzY1XDM2NVwzNjVcMzc3XDM1N1wzNTdcMzU3XDM3N1wzNDRcMzQ0XDM0NCIKLSAgIlwzNzdcMzYxXDM2MVwzNjFcMzc3Tk5OXDM3N1wwXDBcMFwzNzdcMzU2XDM1NlwzNTZcMzc3Tk5OXDM3N1wwXDBcMFwzNzciCi0gICJcMzUzXDM1M1wzNTNcMzc3XDM0M1wzNDNcMzQzXDM3N1wwXDBcMFwzNzdcMFwwXDBEXDBcMFwwXDE2XDBcMFwwXDM3NyIKLSAgIlwzNzVcMzc1XDM3NVwzNzdcMzc0XDM3NFwzNzRcMzc3XDM2MFwzNjBcMzYwXDM3N1wzNzJcMzcyXDM3MlwzNzdcMzY3IgotICAiXDM2N1wzNjdcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNjZcMzY2XDM2NlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM0N1wzNDciCi0gICJcMzQ3XDM3N1wzNjRcMzY0XDM2NFwzNzdcMzU2XDM1NlwzNTZcMzc3XDM0M1wzNDNcMzQzXDM3N1wzNjBcMzYwXDM2MCIKLSAgIlwzNzdcMzUyXDM1MlwzNTJcMzc3XDMzNlwzMzZcMzM2XDM3N1wzNTZcMzU2XDM1NlwzNzdcMzQ2XDM0NlwzNDZcMzc3IgotICAiXDMzMlwzMzJcMzMyXDM3N1wzNTNcMzUzXDM1M1wzNzdcMzQzXDM0M1wzNDNcMzc3XDBcMFwwXDM3N1wwXDBcMERcMFwwIgotICAiXDBcMTZcMFwwXDBcMzc3XDM3NFwzNzRcMzc0XDM3N1wzNzNcMzczXDM3M1wzNzdcMzU3XDM1N1wzNTdcMzc3XDM3MlwzNzIiCi0gICJcMzcyXDM3N1wzNjZcMzY2XDM2NlwzNzdcMzUzXDM1M1wzNTNcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjJcMzYyXDM2MiIKLSAgIlwzNzdcMzQ3XDM0N1wzNDdcMzc3XDM2M1wzNjNcMzYzXDM3N1wzNTZcMzU2XDM1NlwzNzdcMzQyXDM0MlwzNDJcMzc3IgotICAiXDM2MFwzNjBcMzYwXDM3N1wzNTFcMzUxXDM1MVwzNzdcMzM2XDMzNlwzMzZcMzc3XDM1NVwzNTVcMzU1XDM3N1wzNDUiCi0gICJcMzQ1XDM0NVwzNzdcMzMxXDMzMVwzMzFcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNDJcMzQyXDM0MlwzNzdcMFwwXDBcMzc3IgotICAiXDBcMFwwRFwwXDBcMFwxNlwwXDBcMFwzNzdcMzc0XDM3NFwzNzRcMzc3XDM3M1wzNzNcMzczXDM3N1wzNzBcMzcwXDM3MCIKLSAgIlwzNzdcMzczXDM3M1wzNzNcMzc3XDM3M1wzNzNcMzczXDM3N1wzNjZcMzY2XDM2NlwzNzdcMzczXDM3M1wzNzNcMzc3IgotICAiXDM3MVwzNzFcMzcxXDM3N1wzNjZcMzY2XDM2NlwzNzdcMzcxXDM3MVwzNzFcMzc3XDM3MFwzNzBcMzcwXDM3N1wzNjMiCi0gICJcMzYzXDM2M1wzNzdcMzcwXDM3MFwzNzBcMzc3XDM2NlwzNjZcMzY2XDM3N1wzNjFcMzYxXDM2MVwzNzdcMzcwXDM3MCIKLSAgIlwzNzBcMzc3XDM2NFwzNjRcMzY0XDM3N1wzNjBcMzYwXDM2MFwzNzdcMzcwXDM3MFwzNzBcMzc3XDM0MVwzNDFcMzQxIgotICAiXDM3N1wwXDBcMFwzNzdcMFwwXDBEXDBcMFwwXDE2XDBcMFwwXDM3N1wzMDFcMzAxXDMwMVwzNzdcMzAwXDMwMFwzMDAiCi0gICJcMzc3XDI2N1wyNjdcMjY3XDM3N1wzMDFcMzAxXDMwMVwzNzdcMjc1XDI3NVwyNzVcMzc3XDI3MFwyNzBcMjcwXDM3NyIKLSAgIlwyNzVcMjc1XDI3NVwzNzdcMjcyXDI3MlwyNzJcMzc3XDI2NFwyNjRcMjY0XDM3N1wyNzJcMjcyXDI3MlwzNzdcMjcwIgotICAiXDI3MFwyNzBcMzc3XDI1MVwyNTFcMjUxXDM3N1wyNzJcMjcyXDI3MlwzNzdcMjYzXDI2M1wyNjNcMzc3XDI1MVwyNTEiCi0gICJcMjUxXDM3N1wyNjZcMjY2XDI2NlwzNzdcMjU3XDI1N1wyNTdcMzc3XDI0NlwyNDZcMjQ2XDM3N1wyNjRcMjY0XDI2NCIKLSAgIlwzNzdcMjU1XDI1NVwyNTVcMzc3XDBcMFwwXDM3N1wwXDBcMERcMFwwXDBcMTZcMFwwXDBuXDBcMFwwXDM3N1wwXDBcMCIKLSAgIlwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwIgotICAiXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDAiCi0gICJcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMjI3XDBcMFwwXDc3XDAiCi0gICJcMFwwXDE0XDBcMFwwXDZcMFwwXDAjXDBcMFwwPlwwXDBcMERcMFwwXDBEXDBcMFwwRFwwXDBcMERcMFwwXDBEXDBcMCIKLSAgIlwwRFwwXDBcMERcMFwwXDBEXDBcMFwwRFwwXDBcMERcMFwwXDBEXDBcMFwwRFwwXDBcMERcMFwwXDBEXDBcMFwwRFwwIgotICAiXDBcMERcMFwwXDBEXDBcMFwwRFwwXDBcMFw3N1wwXDBcMCNcMFwwXDBcNlwwXDBcMFwxXDBcMFwwXDZcMFwwXDBcMTQiCi0gICJcMFwwXDBcMTVcMFwwXDBcMTZcMFwwXDBcMTZcMFwwXDBcMTZcMFwwXDBcMTZcMFwwXDBcMTZcMFwwXDBcMTZcMFwwXDAiCi0gICJcMTZcMFwwXDBcMTZcMFwwXDBcMTZcMFwwXDBcMTZcMFwwXDBcMTZcMFwwXDBcMTZcMFwwXDBcMTZcMFwwXDBcMTZcMCIKLSAgIlwwXDBcMTZcMFwwXDBcMTZcMFwwXDBcMTZcMFwwXDBcMTRcMFwwXDBcNlwwXDBcMFwxIn07Ci0KLQotLyogR2RrUGl4YnVmIFJHQkEgQy1Tb3VyY2UgaW1hZ2UgZHVtcCAqLwotCi0jaWZkZWYgX19TVU5QUk9fQwotI3ByYWdtYSBhbGlnbiA0IChzdG9ja19hdXRoZW50aWNhdGlvbikKLSNlbmRpZgotI2lmZGVmIF9fR05VQ19fCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN0b2NrX2F1dGhlbnRpY2F0aW9uW10gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fICg0KSkpID0gCi0jZWxzZQotc3RhdGljIGNvbnN0IGd1aW50OCBzdG9ja19hdXRoZW50aWNhdGlvbltdID0gCi0jZW5kaWYKLXsgIiIKLSAgLyogUGl4YnVmIG1hZ2ljICgweDQ3NjQ2YjUwKSAqLwotICAiR2RrUCIKLSAgLyogbGVuZ3RoOiBoZWFkZXIgKDI0KSArIHBpeGVsX2RhdGEgKDkyMTYpICovCi0gICJcMFwwJFwzMCIKLSAgLyogcGl4ZGF0YV90eXBlICgweDEwMTAwMDIpICovCi0gICJcMVwxXDBcMiIKLSAgLyogcm93c3RyaWRlICgxOTIpICovCi0gICJcMFwwXDBcMzAwIgotICAvKiB3aWR0aCAoNDgpICovCi0gICJcMFwwXDAiIjAiCi0gIC8qIGhlaWdodCAoNDgpICovCi0gICJcMFwwXDAiIjAiCi0gIC8qIHBpeGVsX2RhdGE6ICovCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDFcMFwwXDBcMlwwXDBcMFwzIgotICAiXDBcMFwwXDRcMFwwXDBcNVwwXDBcMFw1XDBcMFwwXDVcMFwwXDBcNFwwXDBcMFwzXDBcMFwwXDJcMFwwXDBcMVwwXDAiCi0gICJcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDFcMFwwXDBcMlwwXDBcMFw0XDBcMFwwXDdcMFwwXDBcMTJcMFwwXDBcMTZcMFwwXDBcMjFcMFwwXDBcMjNcMFwwIgotICAiXDBcMjNcMFwwXDBcMjNcMFwwXDBcMjFcMFwwXDBcMTZcMFwwXDBcMTJcMFwwXDBcN1wwXDBcMFw0XDBcMFwwXDJcMFwwIgotICAiXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDRcMFwwXDBcMTBcMFwwIgotICAiXDBcMTZcMFwwXDBnXDBcMFwwXDI1M1wwXDBcMFwzMzJcMFwwXDBcMzY2XDFcMVwxXDM3N1wwXDBcMFwzNjZcMFwwXDAiCi0gICJcMzM0XDBcMFwwXDI2MFwwXDBcMHFcMFwwXDBcMzZcMFwwXDBcMjVcMFwwXDBcMTZcMFwwXDBcMTBcMFwwXDBcNFwwXDAiCi0gICJcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcMlwwXDBcMFw1XDBcMFwwXDE0XDBcMFwwXDIwM1wwXDBcMFwzNTQiCi0gICJcMVwxXDFcMzc3XDIzM1wyMzNcMjMzXDM3N1wzMjBcMzIwXDMyMFwzNzdcMzQzXDM0M1wzNDNcMzc3XDM1MVwzNTFcMzUxIgotICAiXDM3N1wzMzVcMzM1XDMzNVwzNzdcMzA2XDMwNlwzMDZcMzc3XDIyMVwyMjFcMjIxXDM3N1wxXDFcMVwzNzdcMFwwXDAiCi0gICJcMzU2XDBcMFwwXDIyMVwwXDBcMCNcMFwwXDBcMjdcMFwwXDBcMTVcMFwwXDBcNVwwXDBcMFwyXDBcMFwwXDFcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwyXDAiCi0gICJcMFwwXDdcMFwwXDA+XDBcMFwwXDMyMFwxXDFcMVwzNzdcMjc2XDI3NlwyNzZcMzc3XDM1MlwzNTJcMzUyXDM3N1wzNjEiCi0gICJcMzYxXDM2MVwzNzdcMzYzXDM2M1wzNjNcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNTVcMzU1XDM1NVwzNzdcMzUyXDM1MiIKLSAgIlwzNTJcMzc3XDM0NlwzNDZcMzQ2XDM3N1wzNDJcMzQyXDM0MlwzNzdcMzMwXDMzMFwzMzBcMzc3XDIzNFwyMzRcMjM0IgotICAiXDM3N1wxXDFcMVwzNzdcMFwwXDBcMzMwXDBcMFwwV1wwXDBcMFwzNlwwXDBcMFwyMFwwXDBcMFw3XDBcMFwwXDJcMFwwIgotICAiXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFw3IgotICAiXDBcMFwwUlwwXDBcMFwzNjZgYGBcMzc3XDM0M1wzNDNcMzQzXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzYwXDM2MFwzNjAiCi0gICJcMzc3XDM1NFwzNTRcMzU0XDM3N1wzNDZcMzQ2XDM0NlwzNzdcMzQ0XDM0NFwzNDRcMzc3XDM0M1wzNDNcMzQzXDM3NyIKLSAgIlwzNDJcMzQyXDM0MlwzNzdcMzQyXDM0MlwzNDJcMzc3XDM0MlwzNDJcMzQyXDM3N1wzNDFcMzQxXDM0MVwzNzdcMzI2IgotICAiXDMyNlwzMjZcMzc3XDI2N1wyNjdcMjY3XDM3N0VFRVwzNzdcMFwwXDBcMzY3XDBcMFwwbVwwXDBcMFwiXDBcMFwwXDIyIgotICAiXDBcMFwwXDdcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwIgotICAiXDBcNVwwXDBcMD5cMFwwXDBcMzY2XDIwNVwyMDVcMjA1XDM3N1wzNTRcMzU0XDM1NFwzNzdcMzYzXDM2M1wzNjNcMzc3IgotICAiXDM1MlwzNTJcMzUyXDM3N1wzNDNcMzQzXDM0M1wzNzdcMzMxXDMzMVwzMzFcMzc3XDMxNlwzMTZcMzE2XDM3N1wzMDIiCi0gICJcMzAyXDMwMlwzNzdcMzAyXDMwMlwzMDJcMzc3XDMxNFwzMTRcMzE0XDM3N1wzMjVcMzI1XDMyNVwzNzdcMzM0XDMzNCIKLSAgIlwzMzRcMzc3XDM0MFwzNDBcMzQwXDM3N1wzMzVcMzM1XDMzNVwzNzdcMzEwXDMxMFwzMTBcMzc3XDI3MVwyNzFcMjcxIgotICAiXDM3N2JiYlwzNzdcMFwwXDBcMzcwXDBcMFwwWVwwXDBcMCFcMFwwXDBcMTdcMFwwXDBcNVwwXDBcMFwxXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDRcMFwwXDBcMTVcMFwwXDBcMzIwXl5eXDM3N1wzNTRcMzU0XDM1NCIKLSAgIlwzNzdcMzYzXDM2M1wzNjNcMzc3XDM1MFwzNTBcMzUwXDM3N1wzMzRcMzM0XDMzNFwzNzdcMjc0XDI3NFwyNzRcMzcwIgotICAiWFhYXDM2MFwyNFwyNFwyNFwzNDFcMFwwXDBcMzMzXDBcMFwwXDMyNlwwXDBcMFwzMjR7e3tcMzUyXDI3NlwyNzZcMjc2IgotICAiXDM2NlwzNDBcMzQwXDM0MFwzNzdcMzM3XDMzN1wzMzdcMzc3XDMzNFwzMzRcMzM0XDM3N1wzMDNcMzAzXDMwM1wzNzciCi0gICJcMjczXDI3M1wyNzNcMzc3TExMXDM3N1wwXDBcMFwyNzNcMFwwXDAiIjVcMFwwXDBcMzNcMFwwXDBcMTNcMFwwXDBcMyIKLSAgIlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwxMFwwXDBcMFwyMDNcMVwxXDFcMzc3XDM0MlwzNDIiCi0gICJcMzQyXDM3N1wzNjNcMzYzXDM2M1wzNzdcMzUxXDM1MVwzNTFcMzc3XDMzMFwzMzBcMzMwXDM3N1wyMjdcMjI3XDIyNyIKLSAgIlwzNTRcMFwwXDBcMzUyXDBcMFwwXDI3NFwwXDBcMGdcMFwwXDBZXDBcMFwwU1wwXDBcMFFcMFwwXDBZXDBcMFwwXDMwNSIKLSAgIlwyMzRcMjM0XDIzNFwzNTFcMzM1XDMzNVwzMzVcMzcxXDM0MFwzNDBcMzQwXDM3N1wzMzBcMzMwXDMzMFwzNzdcMjczIgotICAiXDI3M1wyNzNcMzc3XDI2NlwyNjZcMjY2XDM3N1wxXDFcMVwzNzdcMFwwXDB4XDBcMFwwKlwwXDBcMFwyM1wwXDBcMFw3IgotICAiXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFwzXDBcMFwwXDE1XDBcMFwwXDM1NFwyNzFcMjcxXDI3MVwzNzdcMzYzIgotICAiXDM2M1wzNjNcMzc3XDM1M1wzNTNcMzUzXDM3N1wzMzBcMzMwXDMzMFwzNzdcMjEyXDIxMlwyMTJcMzU2XDBcMFwwXDM0MiIKLSAgIlwwXDBcMH1cMFwwXDBXXDBcMFwwRlwwXDBcMCIiOVwwXDBcMCIiMFwwXDBcMC5cMFwwXDAiIjFcMFwwXDA7XDBcMFwwIgotICAiXDIyNFwyMjJcMjIyXDIyMlwzMzdcMzMzXDMzM1wzMzNcMzY3XDMzN1wzMzdcMzM3XDM3N1wzMTZcMzE2XDMxNlwzNzciCi0gICJcMjYzXDI2M1wyNjNcMzc3XDIyM1wyMjNcMjIzXDM3N1wwXDBcMFwzMTNcMFwwXDA6XDBcMFwwXDM2XDBcMFwwXDEzXDAiCi0gICJcMFwwXDNcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFw2XDBcMFwwRVwxXDFcMVwzNzdcMzUyXDM1MlwzNTJcMzc3XDM2MVwzNjEiCi0gICJcMzYxXDM3N1wzMzVcMzM1XDMzNVwzNzdcMzAwXDMwMFwzMDBcMzc3XDJcMlwyXDM1MFwwXDBcMFwyMTRcMFwwXDBUXDAiCi0gICJcMFwwPFwwXDBcMClcMFwwXDBcMzRcMFwwXDBcMjVcMFwwXDBcMjNcMFwwXDBcMjZcMFwwXDBcMzdcMFwwXDAuXDBcMCIKLSAgIlwwXDI0MFwyNDJcMjQyXDI0MlwzMzdcMzQ1XDM0NVwzNDVcMzc3XDMzNVwzMzVcMzM1XDM3N1wzMDBcMzAwXDMwMFwzNzciCi0gICJcMjY2XDI2NlwyNjZcMzc3XDFcMVwxXDM3N1wwXDBcMGFcMFwwXDApXDBcMFwwXDIyXDBcMFwwXDVcMFwwXDBcMVwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMlwwXDBcMFwxMVwwXDBcMHBcMjQwXDI0MFwyNDBcMzc3XDM2MVwzNjFcMzYxXDM3N1wzNTBcMzUwXDM1MFwzNzciCi0gICJcMzA2XDMwNlwzMDZcMzc3XDIwMVwyMDFcMjAxXDM1NFwwXDBcMFwzMjJcMFwwXDBaXDBcMFwwPlwwXDBcMCVcMFwwXDAiCi0gICJcMjRcMFwwXDBcMTNcMFwwXDBcN1wwXDBcMFw1XDBcMFwwXDdcMFwwXDBcMTVcMFwwXDBcMzBcMFwwXDAiIjBcMlwyXDIiCi0gICJcMzEzXDMzNFwzMzRcMzM0XDM1N1wzNTJcMzUyXDM1MlwzNzdcMzIxXDMyMVwzMjFcMzc3XDI1NlwyNTZcMjU2XDM3NyIKLSAgInZ2dlwzNzdcMFwwXDBcMjIwXDBcMFwwIiI0XDBcMFwwXDMwXDBcMFwwXDEwXDBcMFwwXDJcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDNcMFwwXDBcMTQiCi0gICJcMFwwXDBcMjIzXDMyMFwzMjBcMzIwXDM3N1wzNjJcMzYyXDM2MlwzNzdcMzMxXDMzMVwzMzFcMzc3XDMwMFwzMDBcMzAwIgotICAiXDM3Ny8vL1wzNDVcMFwwXDBcMjEzXDBcMFwwSlwwXDBcMCxcMFwwXDBcMjVcMFwwXDBcMTFcMFwwXDBcM1wwXDBcMFwxIgotICAiXDBcMFwwXDFcMFwwXDBcMlwwXDBcMFw0XDBcMFwwXDEzXDBcMFwwXDMxXDBcMFwwblwyMDJcMjAyXDIwMlwzNDBcMzU2IgotICAiXDM1NlwzNTZcMzc3XDMzNFwzMzRcMzM0XDM3N1wyNjVcMjY1XDI2NVwzNzdcMjM3XDIzN1wyMzdcMzc3XDBcMFwwXDI3NCIKLSAgIlwwXDBcMD5cMFwwXDBcMzdcMFwwXDBcMTNcMFwwXDBcM1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcNFwwXDBcMFwxNlwwXDBcMFwzMjVcMzQxXDM0MVwzNDEiCi0gICJcMzc3XDM2MVwzNjFcMzYxXDM3N1wzMTRcMzE0XDMxNFwzNzdcMzAwXDMwMFwzMDBcMzc3XDE3XDE3XDE3XDMzMVwwXDAiCi0gICJcMGVcMFwwXDA9XDBcMFwwXDQwXDBcMFwwXDE2XDBcMFwwXDVcMFwwXDBcMlwwXDBcMFwxXDBcMFwwXDFcMFwwXDBcMSIKLSAgIlwwXDBcMFwyXDBcMFwwXDVcMFwwXDBcMTdcMFwwXDAjXDM3XDM3XDM3XDMyM1wzNTRcMzU0XDM1NFwzNzdcMzQyXDM0MiIKLSAgIlwzNDJcMzc3XDMwMFwzMDBcMzAwXDM3N1wyNTBcMjUwXDI1MFwzNzdcMFwwXDBcMzI1XDBcMFwwR1wwXDBcMCVcMFwwIgotICAiXDBcMTZcMFwwXDBcNFwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDJcMFwwXDBcN1wwXDBcMFwyNFwwXDBcMFwzMzZcMzQ2XDM0NlwzNDZcMzc3XDM1N1wzNTdcMzU3XDM3NyIKLSAgIlwzMTNcMzEzXDMxM1wzNzdcMjY3XDI2N1wyNjdcMzc3XDBcMFwwXDMyMlwwXDBcMFdcMFwwXDAiIjZcMFwwXDBcMzRcMCIKLSAgIlwwXDBcMTVcMFwwXDBcMTBcMFwwXDBcNVwwXDBcMFw1XDBcMFwwXDVcMFwwXDBcNVwwXDBcMFw1XDBcMFwwXDEwXDBcMCIKLSAgIlwwXDE2XDBcMFwwXDM1XDBcMFwwXDMwMVwzNTFcMzUxXDM1MVwzNzdcMzQ1XDM0NVwzNDVcMzc3XDMwNVwzMDVcMzA1IgotICAiXDM3N1wyNTZcMjU2XDI1NlwzNzdcMFwwXDBcMzYwXDBcMFwwT1wwXDBcMC5cMFwwXDBcMjVcMFwwXDBcMTBcMFwwXDAiCi0gICJcM1wwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcMlwwXDBcMFw2XDBcMFwwIgotICAiXDE3XDBcMFwwXDM3XDBcMFwwXDM1NFwzMzJcMzMyXDMzMlwzNzdcMzUzXDM1M1wzNTNcMzc3XDMxMlwzMTJcMzEyXDM3NyIKLSAgIlwyNTNcMjUzXDI1M1wzNzdcMFwwXDBcMzIyXDBcMFwwWVwwXDBcMDxcMFwwXDAlXDBcMFwwXDMyXDBcMFwwXDI2XDBcMCIKLSAgIlwwXDI1XDBcMFwwXDI1XDBcMFwwXDI1XDBcMFwwXDI1XDBcMFwwXDI1XDBcMFwwXDI2XDBcMFwwXDMyXDBcMFwwJlwwIgotICAiXDBcMFwzMDBcMzQ0XDM0NFwzNDRcMzc3XDM0M1wzNDNcMzQzXDM3N1wzMTJcMzEyXDMxMlwzNzdcMjU1XDI1NFwyNTIiCi0gICJcMzc3XDBcMFwwXDM3MVwwXDBcMFlcMFwwXDA7XDBcMFwwXCJcMFwwXDBcMjNcMFwwXDBcMTJcMFwwXDBcNVwwXDBcMCIKLSAgIlwyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDUiIjFcMjZcN2Y3XDMxXDEwXDM3NzdcMzFcMTBcMzc3IgotICAiN1wzMVwxMFwzNzdcMjM0UlwyN1wzNzdcMjcwbiVcMzc3XDI3MWsmXDM3N1wyNDdaXDM0XDM3NzdcMzFcMTBcMzc3N1wzMSIKLSAgIlwxMFwzNzc3XDMxXDEwXDM3NzdcMzFcMTBcMzc3N1wzMVwxMFwzNzc3XDMxXDEwXDM3NzdcMzFcMTBcMzc3N1wzMVwxMCIKLSAgIlwzNzc3XDMxXDEwXDM3NzdcMzFcMTBcMzc3N1wzMVwxMFwzNzc3XDMxXDEwXDM3NzdcMzFcMTBcMzc3N1wzMVwxMFwzNzciCi0gICI3XDMxXDEwXDM3N1wyNDVeXDM3XDM3N1wyNzRzKlwzNzdcMjcwbydcMzc3XDIyN1VcMzJcMzc3N1wzMVwxMFwzNzc3XDMxIgotICAiXDEwXDM3NzdcMzFcMTBcMzc3N1wzMVwxMFwzNzclXDIwXDVfXDBcMFwwXDMzXDBcMFwwXDE2XDBcMFwwXDVcMFwwXDAiCi0gICJcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDNcMFwwXDBcMTIiIjdcMzFcMTBcMzc3XDMxMVwyMzRiXDM3N1wzNjRcMzQxXDMxMyIKLSAgIlwzNzdcMzY0XDM0MFwzMTFcMzc3XDM1N1wzMzNcMjc2XDM3N1wzNTRcMzI1XDI2N1wzNzdcMzUzXDMyMlwyNjRcMzc3IgotICAiXDM1MlwzMjJcMjYzXDM3N1wzNTNcMzE3XDI2MFwzNzdcMzUxXDMxNlwyNTZcMzc3XDM1MFwzMTRcMjUzXDM3N1wzNDciCi0gICJcMzE0XDI1MFwzNzdcMzUwXDMwN1wyNDFcMzc3XDM0NlwzMDZcMjQxXDM3N1wzNDZcMzA2XDI0MVwzNzdcMzQ2XDMwNiIKLSAgIlwyNDFcMzc3XDM0NlwzMDZcMjQxXDM3N1wzNDZcMzA2XDI0MVwzNzdcMzUwXDMwN1wyNDFcMzc3XDM1MFwzMDdcMjQxIgotICAiXDM3N1wzNDZcMzA2XDI0MVwzNzdcMzQ1XDMwNVwyNDBcMzc3XDM0NVwzMDVcMjQwXDM3N1wzNDNcMzAyXDIzMlwzNzciCi0gICJcMzQwXDMwMFwyMzNcMzc3XDM0MFwyNzVcMjIzXDM3N1wzMzdcMjcyXDIyMlwzNzdcMzM3XDI3MlwyMTZcMzc3XDMzNSIKLSAgIlwyNjNcMjA2XDM3N1wzMjVcMjU0fFwzNzdcMjQyYVwzM1wzNzc3XDMxXDEwXDM3N1wwXDBcMCIiMVwwXDBcMFwzMlwwIgotICAiXDBcMFwxMlwwXDBcMFwzXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcNFwwXDBcMFwyMCIiN1wzMVwxMFwzNzdcMzY1XDM0NlwzMjAiCi0gICJcMzc3XDM1MlwzMjNcMjU3XDM3N1wzNTJcMzE3XDI1N1wzNzdcMzQzXDMwMlwyMzJcMzc3XDMzMlwyNzBcMjEzXDM3NyIKLSAgIlwzMzJcMjY2XDIwN1wzNzdcMzMwXDI2MFwyMDFcMzc3XDMyNlwyNTZcMTc3XDM3N1wzMjNcMjUzfFwzNzdcMzIxXDI1MSIKLSAgInRcMzc3XDMxN1wyNDVuXDM3N1wzMTRcMjQzbVwzNzdcMzEyXDIzN2dcMzc3XDMxMlwyMzdnXDM3N1wzMTJcMjM3Z1wzNzciCi0gICJcMzEyXDIzN2dcMzc3XDMxMlwyMzdnXDM3N1wzMTJcMjM3Z1wzNzdcMzEyXDIzN2dcMzc3XDMxMFwyMzZnXDM3N1wzMDYiCi0gICJcMjMzY1wzNzdcMzAyXDIzMGFcMzc3XDMwMlwyMjNbXDM3N1wyNzdcMjIwUlwzNzdcMjc0XDIxMEtcMzc3XDI3NVwyMDQiCi0gICJAXDM3N1wyNzJ+PVwzNzdcMjYzdjRcMzc3XDI0N2pcIlwzNzdcMjE1U1wyNFwzNzc3XDMxXDEwXDM3N1wwXDBcMEVcMCIKLSAgIlwwXDAmXDBcMFwwXDE3XDBcMFwwXDRcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFw1XDBcMFwwXDIzIiI3XDMxXDEwXDM3N1wzNjUiCi0gICJcMzQ0XDMxNlwzNzdcMzUxXDMxNlwyNTZcMzc3XDM0N1wzMTVcMjUwXDM3N1wzMzdcMjc1XDIyMFwzNzdcMzMwXDI2MSIKLSAgIlwyMDNcMzc3XDMyNVwyNTV+XDM3N1wzMjJcMjUye1wzNzdcMzIyXDI0NndcMzc3XDMyMFwyNDdxXDM3N1wzMTVcMjQzIgotICAibFwzNzdcMzEwXDIzN2hcMzc3XDMwNVwyMzNkXDM3N1wzMDRcMjMxYVwzNzdcMzA0XDIzMWFcMzc3XDMwNFwyMzFhXDM3NyIKLSAgIlwzMDVcMjMyYlwzNzdcMzA1XDIzMmJcMzc3XDMwNVwyMzJiXDM3N1wzMDVcMjMyYlwzNzdcMzA0XDIzMWFcMzc3XDMwMiIKLSAgIlwyMzBdXDM3N1wzMDFcMjI0WlwzNzdcMjc3XDIyMFRcMzc3XDI3NlwyMTZPXDM3N1wyNzRcMjA3SVwzNzdcMjcyXDIwMiIKLSAgIlw3N1wzNzdcMjcyfj1cMzc3XDI2MXQyXDM3N1wyNDdqXCJcMzc3XDIxM1JcMjRcMzc3N1wzMVwxMFwzNzdcMFwwXDBRIgotICAiXDBcMFwwLlwwXDBcMFwyM1wwXDBcMFw1XDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcNVwwXDBcMFwyNCIiN1wzMVwxMFwzNzdcMzY1IgotICAiXDM0NlwzMjBcMzc3XDM1M1wzMTdcMjYwXDM3N1wzNTFcMzE2XDI1NlwzNzdcMzQwXDI3N1wyMjdcMzc3XDMzM1wyNjQiCi0gICJcMjA2XDM3N1wzMzBcMjYwXDIwMVwzNzdcMzI3XDI1N1wyMDBcMzc3XDMyMlwyNTR7XDM3N1wzMjJcMjQ2d1wzNzdcMzIwIgotICAiXDI0Nm9cMzc3XDMxNFwyNDNtXDM3N1wyNjVcMjE2XFxcMzc3XDI0MH5QXDM3N1wyMzJ5TVwzNzdcMjMyeU1cMzc3XDI2MiIKLSAgIlwyMTRZXDM3N1wzMDdcMjM0ZFwzNzdcMzA3XDIzNGRcMzc3XDMwN1wyMzRkXDM3N1wzMDVcMjMyYlwzNzdcMzAyXDIyNyIKLSAgIl9cMzc3XDMwMlwyMjNbXDM3N1wyNzdcMjIwVFwzNzdcMjc2XDIxNk9cMzc3XDI3NFwyMDRBXDM3N1wyNzJcMjAyXDc3IgotICAiXDM3N1wyNjV8OFwzNzdcMjU3cyxcMzc3XDI0M2ZcMzZcMzc3XDIwN1BcMjRcMzc3N1wzMVwxMFwzNzdcMFwwXDBXXDAiCi0gICJcMFwwIiIyXDBcMFwwXDI1XDBcMFwwXDVcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFw1XDBcMFwwXDI1IiI3XDMxXDEwXDM3N1wzNjUiCi0gICJcMzQ0XDMxNlwzNzdcMzUyXDMxN1wyNTdcMzc3XDM1MFwzMTVcMjUxXDM3N1wzMzdcMjc0XDIyMlwzNzdcMzI1XDI1NSIKLSAgIn5cMzc3XDMyMlwyNTN9XDM3N1wzMjJcMjUye1wzNzdcMzIwXDI1M3VcMzc3XDMyMFwyNDZvXDM3N1wzMTVcMjQzbFwzNzciCi0gICJcMjYzXDIxNl1cMzc3XDIyNHRKXDM3N3dePFwzNzdcNDBcMzFcMjBcMzc3XDBcMFwwXDM3N1w0MFwzMVwyMFwzNzd5YCIKLSAgIj5cMzc3XDMxMFwyMzdoXDM3N1wzMTJcMjM3Z1wzNzdcMzA3XDIzNWZcMzc3XDMwNVwyMzNkXDM3N1wzMDRcMjMxYVwzNzciCi0gICJcMzAyXDIzMF1cMzc3XDI3N1wyMjFWXDM3N1wyNzZcMjE2T1wzNzdcMjc2XDIwNkVcMzc3XDI3NFwyMDNcNzdcMzc3XDI2NiIKLSAgInw3XDM3N1wyNTJsI1wzNzdcMjE1VVwyNFwzNzc3XDMxXDEwXDM3N1wwXDBcMFhcMFwwXDAiIjNcMFwwXDBcMjVcMFwwIgotICAiXDBcNlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDVcMFwwXDBcMjUiIjdcMzFcMTBcMzc3XDM2NVwzNDRcMzE2XDM3N1wzNTFcMzE2IgotICAiXDI1NlwzNzdcMzUwXDMxNlwyNTFcMzc3XDM0MVwyNzRcMjI0XDM3N1wzMzJcMjY0XDIwN1wzNzdcMzMwXDI2MlwyMDEiCi0gICJcMzc3XDMyN1wyNTdcMjAwXDM3N1wzMjJcMjUye1wzNzdcMzIwXDI1MHNcMzc3XDMxN1wyNDVuXDM3N1wyMjJ0TVwzNzciCi0gICJ6YD5cMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzd5YFw3N1wzNzdcMzEyIgotICAiXDIzN2dcMzc3XDMwNVwyMzNkXDM3N1wzMDVcMjMyYlwzNzdcMzAyXDIyN19cMzc3XDMwMVwyMjRaXDM3N1wyNzZcMjE3IgotICAiUVwzNzdcMjc0XDIwN0lcMzc3XDI3MlwyMDE9XDM3N1wyNjd+OlwzNzdcMjYzeTRcMzc3XDI0NmkhXDM3N1wyMTNSXDI0IgotICAiXDM3NzdcMzFcMTBcMzc3XDBcMFwwWFwwXDBcMCIiM1wwXDBcMFwyNVwwXDBcMFw2XDBcMFwwXDFcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcNSIKLSAgIlwwXDBcMFwyNSIiN1wzMVwxMFwzNzdcMzY0XDM0MVwzMTNcMzc3XDM1MFwzMTVcMjUxXDM3N1wzNDVcMzExXDI0NFwzNzciCi0gICJcMzM1XDI3MlwyMjBcMzc3XDMyNVwyNTV+XDM3N1wzMjJcMjUye1wzNzdcMzIyXDI1MntcMzc3XDMyMlwyNDV1XDM3NyIKLSAgIlwzMjFcMjQ3cFwzNzdcMzE0XDI0M21cMzc3XDIyNXVMXDM3N1w0MFwzMlwyMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyFcMzJcMjBcMzc3XDMyN1wyNjdcMjE2XDM3N1wzMTBcMjM2Z1wzNzciCi0gICJcMzA2XDIzM2NcMzc3XDMwNFwyMzFhXDM3N1wzMDJcMjI3X1wzNzdcMjc3XDIyMVZcMzc3XDI3NVwyMTRMXDM3N1wyNzQiCi0gICJcMjEwRVwzNzdcMjczXDIwMj5cMzc3XDI2Nnw3XDM3N1wyNTFrXCJcMzc3XDIxNVNcMjRcMzc3N1wzMVwxMFwzNzdcMCIKLSAgIlwwXDBYXDBcMFwwIiIzXDBcMFwwXDI1XDBcMFwwXDZcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFw1XDBcMFwwXDI1IiI3XDMxXDEwIgotICAiXDM3N1wzNjVcMzQ0XDMxNlwzNzdcMzUxXDMxNVwyNTRcMzc3XDM0N1wzMTNcMjQ2XDM3N1wzMzdcMjc0XDIyMlwzNzciCi0gICJcMzMwXDI2MFwyMDFcMzc3XDMyNlwyNTZcMTc3XDM3N1wzMjJcMjUzfVwzNzdcMzIyXDI1MntcMzc3XDMyMVwyNDVyXDM3NyIKLSAgIlwzMTVcMjQzbFwzNzdcMjI2d05cMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMCIKLSAgIlwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wzNDFcMzEzXDI1NVwzNzdcMzA3XDIzNWZcMzc3XDMwNFwyMzFhXDM3N1wzMDIiCi0gICJcMjI3X1wzNzdcMzAwXDIyM1lcMzc3XDI3NlwyMTdRXDM3N1wyNzVcMjE0TFwzNzdcMjc0XDIwNUNcMzc3XDI3Mn49XDM3NyIKLSAgIlwyNjN4MlwzNzdcMjQ3alwiXDM3N1wyMTNSXDI0XDM3NzdcMzFcMTBcMzc3XDBcMFwwWFwwXDBcMCIiM1wwXDBcMFwyNSIKLSAgIlwwXDBcMFw2XDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcNVwwXDBcMFwyNSIiN1wzMVwxMFwzNzdcMzY0XDM0MVwzMTNcMzc3XDM1MCIKLSAgIlwzMTRcMjQ3XDM3N1wzNDVcMzEyXDI0NFwzNzdcMzM0XDI3MVwyMTdcMzc3XDMyNlwyNTZcMTc3XDM3N1wzMjNcMjUzIgotICAifFwzNzdcMzIyXDI1MntcMzc3XDMyMlwyNDV1XDM3N1wzMTdcMjQ1blwzNzdcMzEyXDI0MWtcMzc3XDIyNXVMXDM3N1w0MCIKLSAgIlwzMVwyMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1w0MFwzMVwxNyIKLSAgIlwzNzdcMzM2XDMwNlwyNDdcMzc3XDMwMlwyMzBhXDM3N1wzMDFcMjIyVlwzNzdcMjc3XDIyMFRcMzc3XDI3NVwyMTVOIgotICAiXDM3N1wyNzRcMjA3SVwzNzdcMjcyXDIwMlw3N1wzNzdcMjY1fTpcMzc3XDI2NXg2XDM3N1wyNTVyLFwzNzdcMjQ0ZlwzNSIKLSAgIlwzNzdcMjA3UFwyNFwzNzc3XDMxXDEwXDM3N1wwXDBcMFhcMFwwXDAiIjNcMFwwXDBcMjVcMFwwXDBcNlwwXDBcMFwxIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwxXDBcMFwwXDVcMFwwXDBcMjUiIjdcMzFcMTBcMzc3XDM2NVwzNDRcMzE2XDM3N1wzNTFcMzE1XDI1NFwzNzdcMzQ3IgotICAiXDMxM1wyNDZcMzc3XDMzNVwyNzJcMjIwXDM3N1wzMjVcMjU1flwzNzdcMzIyXDI1M3lcMzc3XDMyMVwyNTByXDM3N1wzMTciCi0gICJcMjQ1blwzNzdcMzEyXDI0MWtcMzc3XDMxMFwyMzdoXDM3N1wzMDVcMjMyYlwzNzd1XFw4XDM3N1wwXDBcMFwzNzdcMCIKLSAgIlwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3dVs3XDM3N1wzMzVcMzA3XDI0N1wzNzdcMzAyXDIyMyIKLSAgIltcMzc3XDMwMVwyMjJWXDM3N1wyNzdcMjIwUlwzNzdcMjc2XDIxNk9cMzc3XDI3NFwyMTBLXDM3N1wyNzRcMjAzXDc3IgotICAiXDM3N1wyNjdcMTc3PFwzNzdcMjY2fDdcMzc3XDI2MHUvXDM3N1wyNDRoIVwzNzdcMjExUVwyNFwzNzc3XDMxXDEwXDM3NyIKLSAgIlwwXDBcMFhcMFwwXDAiIjNcMFwwXDBcMjVcMFwwXDBcNlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDVcMFwwXDBcMjUiIjdcMzFcMTAiCi0gICJcMzc3XDM2NVwzNDZcMzIwXDM3N1wzNTJcMzE3XDI1N1wzNzdcMzUxXDMxNlwyNTJcMzc3XDM0MVwyNzRcMjI0XDM3NyIKLSAgIlwzMzNcMjY0XDIwNlwzNzdcMzMyXDI2M1wyMDVcMzc3XDMzMlwyNjNcMjA1XDM3N1wzMjZcMjU2XDE3N1wzNzdcMzIyIgotICAiXDI1M3lcMzc3XDMyMFwyNTBzXDM3N1wzMTdcMjQ1blwzNzdcMzE0XDI0M21cMzc3emA+XDM3NyFcMzJcMjBcMzc3XDAiCi0gICJcMFwwXDM3N1w0MFwzMlwyMVwzNzdcMjIyfmNcMzc3XDM0M1wzMTdcMjYzXDM3N1wzMjRcMjYzXDIxMFwzNzdcMzA2XDIzMyIKLSAgImNcMzc3XDMwMlwyMzBdXDM3N1wzMDFcMjI0WlwzNzdcMjc3XDIyMFRcMzc3XDI3NVwyMTRMXDM3N1wyNzNcMjA0RFwzNzciCi0gICJcMjY3XDE3NzxcMzc3XDI2Nno5XDM3N1wyNjF2MFwzNzdcMjQ0aCFcMzc3XDIxM1JcMjRcMzc3N1wzMVwxMFwzNzdcMCIKLSAgIlwwXDBYXDBcMFwwIiIzXDBcMFwwXDI1XDBcMFwwXDZcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFw1XDBcMFwwXDI1IiI3XDMxXDEwIgotICAiXDM3N1wzNjRcMzQxXDMxM1wzNzdcMzUxXDMxNlwyNTJcMzc3XDM0NVwzMTFcMjQ0XDM3N1wzMzJcMjcwXDIxM1wzNzciCi0gICJcMzIyXDI1NHdcMzc3XDMyMlwyNDV1XDM3N1wzMjFcMjUwclwzNzdcMzE1XDI0NG5cMzc3XDMxMlwyNDFrXDM3N1wzMTAiCi0gICJcMjM2Z1wzNzdcMzA0XDIzMWFcMzc3XDMwMlwyMzBdXDM3N1wyNDV9TVwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDAiCi0gICJcMFwzNzdcMzMxXDI3N1wyMzZcMzc3XDMxMlwyNDNxXDM3N1wzMDRcMjMxYVwzNzdcMzAyXDIzMGFcMzc3XDMwMlwyMjMiCi0gICJbXDM3N1wyNzdcMjIxVlwzNzdcMjc3XDIyMFRcMzc3XDI3NVwyMTRMXDM3N1wyNzRcMjEwRVwzNzdcMjcyXDIwMlw3NyIKLSAgIlwzNzdcMjY3fThcMzc3XDI2M3gyXDM3N1wyNTVvJlwzNzdcMjExUVwyNFwzNzc3XDMxXDEwXDM3N1wwXDBcMFhcMFwwIgotICAiXDAiIjNcMFwwXDBcMjVcMFwwXDBcNlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDVcMFwwXDBcMjUiIjdcMzFcMTBcMzc3XDM2NSIKLSAgIlwzNDRcMzE2XDM3N1wzNTFcMzE2XDI1MlwzNzdcMzQ3XDMxM1wyNDZcMzc3XDMzNFwyNzFcMjE3XDM3N1wzMjZcMjU2IgotICAiXDE3N1wzNzdcMzIzXDI1M3xcMzc3XDMyMlwyNTJ7XDM3N1wzMjJcMjQ1dVwzNzdcMzIwXDI0Nm9cMzc3XDMxMlwyNDEiCi0gICJrXDM3N1wzMTBcMjM2Z1wzNzdcMjcyXDIyM15cMzc3XDIyNXRKXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwzMDVcMjYzXDIzM1wzNzdcMzA0XDIzMWFcMzc3XDMwNFwyMzFhXDM3N1wzMDJcMjMwYVwzNzdcMzAxXDIyMlZcMzc3IgotICAiXDI3N1wyMjFWXDM3N1wyNzZcMjE2T1wzNzdcMjc0XDIwN0lcMzc3XDI3NFwyMDNcNzdcMzc3XDI2N346XDM3N1wyNjUiCi0gICJ5OFwzNzdcMjU1di5cMzc3XDI1N3IqXDM3N1wyMDdQXDI0XDM3NzdcMzFcMTBcMzc3XDBcMFwwWFwwXDBcMCIiM1wwXDAiCi0gICJcMFwyNVwwXDBcMFw2XDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwXDBcNVwwXDBcMFwyNSIiN1wzMVwxMFwzNzdcMzY1XDM0NlwzMjBcMzc3IgotICAiXDM1MlwzMTdcMjU3XDM3N1wzNTFcMzE2XDI1MlwzNzdcMzQxXDI3NVwyMjZcMzc3XDMzM1wyNjRcMjA2XDM3N1wzMzAiCi0gICJcMjYwXDIwMVwzNzdcMzI2XDI1NlwxNzdcMzc3XDMyMlwyNTR7XDM3N1wzMjBcMjUwc1wzNzdcMzE1XDI0M2xcMzc3XDMxMiIKLSAgIlwyNDBpXDM3N1wyNjVcMjE3XVwzNzdcMjAzZkFcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDIxN3VUIgotICAiXDM3N1wzMzZcMzA2XDI0N1wzNzdcMzA0XDIzMWFcMzc3XDMwMlwyMzBdXDM3N1wzMDFcMjIyVlwzNzdcMjc3XDIyMFQiCi0gICJcMzc3XDI3NVwyMTVOXDM3N1wyNzRcMjExR1wzNzdcMjc0XDIwM1w3N1wzNzdcMjY3fjpcMzc3XDI2NXk4XDM3N1wyNTciCi0gICJzLFwzNzdcMjc1XDIwMkJcMzc3XDIwN1BcMjRcMzc3N1wzMVwxMFwzNzdcMFwwXDBYXDBcMFwwIiIzXDBcMFwwXDI1XDAiCi0gICJcMFwwXDZcMFwwXDBcMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMVwwXDBcMFw1XDBcMFwwXDI1IiI3XDMxXDEwXDM3N1wzNjRcMzQxXDMxM1wzNzdcMzQ3IgotICAiXDMxNFwyNTBcMzc3XDM0NlwzMDZcMjQxXDM3N1wzMzNcMjcwXDIxNlwzNzdcMzIzXDI1M3xcMzc3XDMyMlwyNTN5XDM3NyIKLSAgIlwzMjFcMjQ3dlwzNzdcMzIwXDI0Nm9cMzc3XDMxNFwyNDJrXDM3N1wzMTJcMjM3Z1wzNzdcMzA1XDIzMmJcMzc3XDI2NCIKLSAgIlwyMTVZXDM3N2xUM1wzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdtVTZcMzc3XDMzNlwzMDZcMjQ3XDM3NyIKLSAgIlwzMDRcMjMxYVwzNzdcMzAyXDIzMGFcMzc3XDMwMlwyMjNbXDM3N1wzMDFcMjIyVlwzNzdcMjc3XDIyMFJcMzc3XDI3NCIKLSAgIlwyMTBLXDM3N1wyNzNcMjA0RFwzNzdcMjcyfj1cMzc3XDI2NHs3XDM3N1wyNjF2MFwzNzdcMzAwXDIxNVFcMzc3XDIxMSIKLSAgIk5cMjRcMzc3N1wzMVwxMFwzNzdcMFwwXDBYXDBcMFwwIiIzXDBcMFwwXDI1XDBcMFwwXDZcMFwwXDBcMVwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDAiCi0gICJcMFw1XDBcMFwwXDI1IiI3XDMxXDEwXDM3N1wzNjRcMzQwXDMxMVwzNzdcMzQ3XDMxM1wyNDZcMzc3XDM0NlwzMDZcMjQxIgotICAiXDM3N1wzMzRcMjYzXDIwN1wzNzdcMzIxXDI1M3ZcMzc3XDMyMVwyNDVyXDM3N1wzMjBcMjQ2b1wzNzdcMzE1XDI0M2wiCi0gICJcMzc3XDMxMFwyMzdoXDM3N1wzMDRcMjMxYVwzNzdcMjYyXDIxM1dcMzc3XDI1NFwyMDNOXDM3N1w3NyIiMFwzNFwzNzciCi0gICJcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdAMlwzNlwzNzdcMzIyXDI3NVwyMzdcMzc3XDMxMFwyNDJxXDM3NyIKLSAgIlwzMDJcMjIzW1wzNzdcMjc3XDIyMVZcMzc3XDI3N1wyMjBUXDM3N1wyNzVcMjE1TlwzNzdcMjc0XDIxMUdcMzc3XDI3MCIKLSAgIlwyMDA9XDM3N1wyNjV8OFwzNzdcMjY1eDZcMzc3XDI1N3QuXDM3N1wzMDBcMjE1UVwzNzdcMjA2TFwyM1wzNzc3XDMxIgotICAiXDEwXDM3N1wwXDBcMFhcMFwwXDAiIjNcMFwwXDBcMjVcMFwwXDBcNlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDVcMFwwXDBcMjUiCi0gICI3XDMxXDEwXDM3N1wzNjRcMzQxXDMxM1wzNzdcMzQ2XDMxMlwyNDVcMzc3XDM0NlwzMDZcMjQxXDM3N1wzMzNcMjY0XDIwNiIKLSAgIlwzNzdcMzIxXDI1M3ZcMzc3XDMyMFwyNDdxXDM3N1wzMTdcMjQ1blwzNzdcMzEyXDI0MWtcMzc3XDMxMFwyMzZnXDM3NyIKLSAgIlwzMDRcMjMxYVwzNzdcMjYyXDIwN1NcMzc3XDIzMnVFXDM3N1w3NyIiMFwzNFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3NyIKLSAgIlwwXDBcMFwzNzdcNzciIjBcMzRcMzc3XDIxMWg+XDM3N1wzMzJcMzAxXDI0MFwzNzdcMjc1XDIxNlBcMzc3XDI3NVwyMTUiCi0gICJOXDM3N1wyNzRcMjEwS1wzNzdcMjczXDIwNERcMzc3XDI3MlwyMDJcNzdcMzc3XDI2N346XDM3N1wyNjR7N1wzNzdcMjYxIgotICAidzJcMzc3XDI1NXEqXDM3N1wzMTJcMjM1Y1wzNzdcMjA3TVwyNFwzNzc3XDMxXDEwXDM3N1wwXDBcMFhcMFwwXDAiIjMiCi0gICJcMFwwXDBcMjVcMFwwXDBcNlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDVcMFwwXDBcMjUiIjdcMzFcMTBcMzc3XDM2NFwzNDFcMzEzIgotICAiXDM3N1wzNTBcMzE0XDI0N1wzNzdcMzQ0XDMxMFwyNDNcMzc3XDMzMlwyNzBcMjE1XDM3N1wzMjNcMjUzfFwzNzdcMzIyIgotICAiXDI0NndcMzc3XDMyMFwyNTN1XDM3N1wzMjBcMjQ2b1wzNzdcMzEzXDI0MmxcMzc3XDMxMFwyMzdoXDM3N1wyNjdcMjE3IgotICAiW1wzNzdcMTc3Y1w3N1wzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N1wwXDBcMFwzNzdcMFwwXDBcMzc3XDBcMFwwXDM3N3IiCi0gICJZOFwzNzdcMzIzXDI2M1wyMTFcMzc3XDMwMlwyMzBhXDM3N1wzMDFcMjIyVlwzNzdcMjc3XDIyMVZcMzc3XDI3NlwyMTciCi0gICJRXDM3N1wyNzRcMjEwS1wzNzdcMjc0XDIwNEFcMzc3XDI2NX06XDM3N1wyNjV8OFwzNzdcMjYxdjBcMzc3XDMxNFwyMzciCi0gICJpXDM3N1wyMTFRXDI0XDM3NzdcMzFcMTBcMzc3XDBcMFwwWFwwXDBcMCIiM1wwXDBcMFwyNVwwXDBcMFw2XDBcMFwwXDEiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDFcMFwwXDBcNVwwXDBcMFwyNSIiN1wzMVwxMFwzNzdcMzY1XDM0NFwzMTZcMzc3XDM1MFwzMTVcMjUxXDM3N1wzNDUiCi0gICJcMzExXDI0NFwzNzdcMzM0XDI3MVwyMTdcMzc3XDMyNVwyNTV+XDM3N1wzMjJcMjUye1wzNzdcMzIyXDI1M3lcMzc3XDMyMSIKLSAgIlwyNDdwXDM3N1wzMTdcMjQ1blwzNzdcMzEyXDI0MWtcMzc3XDMxMFwyMzdoXDM3N1wzMDVcMjMyYlwzNzdcMzA1XDIzMiIKLSAgImJcMzc3XDMwNVwyMzJiXDM3N1wzMDVcMjMyYlwzNzdcMzA1XDIzMmJcMzc3XDMwNVwyMzJiXDM3N1wzMDVcMjMyYlwzNzciCi0gICJcMzA1XDIzMmJcMzc3XDMwNFwyMzFhXDM3N1wzMDJcMjIzW1wzNzdcMjc3XDIyMVZcMzc3XDI3N1wyMjBSXDM3N1wyNzQiCi0gICJcMjA3SVwzNzdcMjc0XDIwM1w3N1wzNzdcMjY3fjpcMzc3XDI3MFwxNzc7XDM3N1wyNzRcMjAyPVwzNzdcMzE2XDI0MSIKLSAgImtcMzc3XDIxMU5cMjRcMzc3N1wzMVwxMFwzNzdcMFwwXDBYXDBcMFwwIiIzXDBcMFwwXDI1XDBcMFwwXDZcMFwwXDBcMSIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMVwwXDBcMFw1XDBcMFwwXDI1IiI3XDMxXDEwXDM3N1wzNjRcMzQxXDMxM1wzNzdcMzUwXDMxM1wyNDVcMzc3XDM0NSIKLSAgIlwzMTFcMjQ0XDM3N1wzMzJcMjcwXDIxM1wzNzdcMzIyXDI1MntcMzc3XDMyMlwyNDV1XDM3N1wzMjFcMjQ3cFwzNzdcMzE1IgotICAiXDI0NG5cMzc3XDMxMlwyMzdnXDM3N1wzMDdcMjM0ZFwzNzdcMzA0XDIzMWFcMzc3XDMwMVwyMjdcXFwzNzdcMzAwXDIyMyIKLSAgIllcMzc3XDMwMFwyMjJXXDM3N1wzMDBcMjIyV1wzNzdcMzAwXDIyMldcMzc3XDMwMFwyMjJXXDM3N1wzMDBcMjIyV1wzNzciCi0gICJcMzAwXDIyMldcMzc3XDI3N1wyMjFWXDM3N1wyNzdcMjIwUlwzNzdcMjc2XDIxNk9cMzc3XDI3NFwyMTFHXDM3N1wyNzMiCi0gICJcMjA0RFwzNzdcMjcxXDIwMT5cMzc3XDI2NXw4XDM3N1wyNzBcMTc3O1wzNzdcMjc0XDIwNUVcMzc3XDMxNVwyNDBqXDM3NyIKLSAgIlwyMDdQXDI0XDM3NzdcMzFcMTBcMzc3XDBcMFwwWFwwXDBcMCIiM1wwXDBcMFwyNVwwXDBcMFw2XDBcMFwwXDFcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDEiCi0gICJcMFwwXDBcNVwwXDBcMFwyNSIiN1wzMVwxMFwzNzdcMzY0XDM0MFwzMTFcMzc3XDM0NlwzMTFcMjQzXDM3N1wzNDVcMzA1IgotICAiXDI0MFwzNzdcMzMxXDI3MFwyMTBcMzc3XDMyM1wyNDZ2XDM3N1wzMjBcMjQ3cVwzNzdcMzE3XDI0NW5cMzc3XDMxM1wyNDIiCi0gICJsXDM3N1wzMTJcMjM3Z1wzNzdcMzA2XDIzM2NcMzc3XDMwNVwyMzJiXDM3N1wzMDRcMjMxYVwzNzdcMzAyXDIzMF1cMzc3IgotICAiXDMwMlwyMzBhXDM3N1wzMDJcMjMwYVwzNzdcMzA0XDIzMWFcMzc3XDMwNFwyMzFhXDM3N1wzMDVcMjMyYlwzNzdcMzA1IgotICAiXDIzMmJcMzc3XDMwNFwyMzFhXDM3N1wzMDFcMjI0WlwzNzdcMzAwXDIyM1lcMzc3XDI3N1wyMjBUXDM3N1wyNzRcMjE0IgotICAiTVwzNzdcMjc0XDIxMUdcMzc3XDI3NlwyMTJNXDM3N1wzMDRcMjMxYVwzNzdcMjc2XDIxM09cMzc3XDMwN1wyMzVgXDM3NyIKLSAgIlwyMTFOXDI0XDM3NzdcMzFcMTBcMzc3XDBcMFwwV1wwXDBcMCIiM1wwXDBcMFwyNVwwXDBcMFw1XDBcMFwwXDFcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDEiCi0gICJcMFwwXDBcNVwwXDBcMFwyNCIiN1wzMVwxMFwzNzdcMzY0XDM0MFwzMTFcMzc3XDM0NlwzMTBcMjQxXDM3N1wzNDFcMzAzIgotICAiXDIzNFwzNzdcMzMyXDI2M1wyMDVcMzc3XDMyMVwyNDVyXDM3N1wzMTdcMjQ1blwzNzdcMzE1XDI0M2xcMzc3XDMxMFwyMzciCi0gICJoXDM3N1wzMDVcMjMzZFwzNzdcMzAyXDIzMV9cMzc3XDMwMlwyMjNbXDM3N1wzMDBcMjIyV1wzNzdcMjc3XDIyMVZcMzc3IgotICAiXDI3N1wyMjFWXDM3N1wzMDBcMjIyV1wzNzdcMzAyXDIyM1tcMzc3XDMwMVwyMjdcXFwzNzdcMzA1XDIzMmJcMzc3XDMxMCIKLSAgIlwyMzZnXDM3N1wzMTVcMjQzbFwzNzdcMzE1XDI0M2xcMzc3XDMxNlwyNDFrXDM3N1wzMTZcMjQxa1wzNzdcMzIyXDI1MyIKLSAgInlcMzc3XDMyMlwyNTJ3XDM3N1wzMjFcMjQ1clwzNzdcMzI0XDI0N3NcMzc3XDI3N1wyMTJMXDM3N1wyNjFzMFwzNzdcMjA3IgotICAiTVwyNFwzNzc3XDMxXDEwXDM3N1wwXDBcMFRcMFwwXDAiIjBcMFwwXDBcMjRcMFwwXDBcNVwwXDBcMFwxXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMCIKLSAgIlwwXDVcMFwwXDBcMjIiIjNcMjdcN1wzMDFcMjYydS1cMzc3XDMwN1wyMzVgXDM3N1wzMDRcMjMyXVwzNzdcMjc1XDIxNCIKLSAgIkxcMzc3XDI3Mn49XDM3N1wyNzB+OVwzNzdcMjY2ejlcMzc3XDI2NXg2XDM3N1wyNjN1MlwzNzdcMjU3dy5cMzc3XDI1NSIKLSAgInIsXDM3N1wyNTR0K1wzNzdcMjUycilcMzc3XDI1MnIpXDM3N1wyNTJyKVwzNzdcMjU2cSlcMzc3XDI1NnEpXDM3N1wyNTYiCi0gICJxKVwzNzdcMjU2cSlcMzc3XDI1MnIpXDM3N1wyNTFtJlwzNzdcMjUybCNcMzc3XDI0NWlcIlwzNzdcMjQzZ1w0MFwzNzciCi0gICJcMjQyZVwzNVwzNzdcMjM2YVwzMVwzNzdcMjMzX1wzMFwzNzdcMjMxXVwyNlwzNzdcMjIyVlwyNVwzNzdYMFwxNVwzNzciCi0gICImXDIxXDVcMjY0XDBcMFwwS1wwXDBcMCpcMFwwXDBcMjFcMFwwXDBcNFwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDRcMFwwXDBcMTYiCi0gICIrXDIzXDZxMVwyNlw3XDMwNzdcMzFcMTBcMzc3N1wzMVwxMFwzNzc3XDMxXDEwXDM3NzdcMzFcMTBcMzc3N1wzMVwxMCIKLSAgIlwzNzc3XDMxXDEwXDM3NzdcMzFcMTBcMzc3N1wzMVwxMFwzNzc3XDMxXDEwXDM3NzdcMzFcMTBcMzc3N1wzMVwxMFwzNzciCi0gICI3XDMxXDEwXDM3NzdcMzFcMTBcMzc3N1wzMVwxMFwzNzc3XDMxXDEwXDM3NzdcMzFcMTBcMzc3N1wzMVwxMFwzNzc3XDMxIgotICAiXDEwXDM3NzdcMzFcMTBcMzc3N1wzMVwxMFwzNzc3XDMxXDEwXDM3NzdcMzFcMTBcMzc3N1wzMVwxMFwzNzc3XDMxXDEwIgotICAiXDM3NzdcMzFcMTBcMzc3N1wzMVwxMFwzNzc3XDMxXDEwXDM3NzdcMzFcMTBcMzc3JlwyMVw1XDI2NFwxNFw1XDFlXDAiCi0gICJcMFwwO1wwXDBcMFw0MFwwXDBcMFwxNFwwXDBcMFwzXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMlwwXDBcMFwxMVwwXDBcMFwzMCIKLSAgIlwwXDBcMCxcMFwwXDBBXDBcMFwwT1wwXDBcMFVcMFwwXDBXXDBcMFwwWFwwXDBcMFhcMFwwXDBYXDBcMFwwWFwwXDBcMCIKLSAgIlhcMFwwXDBYXDBcMFwwWFwwXDBcMFhcMFwwXDBYXDBcMFwwWFwwXDBcMFhcMFwwXDBYXDBcMFwwWFwwXDBcMFhcMFwwIgotICAiXDBYXDBcMFwwWFwwXDBcMFhcMFwwXDBYXDBcMFwwWFwwXDBcMFhcMFwwXDBYXDBcMFwwWFwwXDBcMFdcMFwwXDBTXDAiCi0gICJcMFwwS1wwXDBcMDtcMFwwXDAnXDBcMFwwXDI0XDBcMFwwXDdcMFwwXDBcMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwwIgotICAiXDBcNFwwXDBcMFwxNVwwXDBcMFwzMFwwXDBcMCRcMFwwXDAsXDBcMFwwIiIwXDBcMFwwIiIzXDBcMFwwIiIzXDBcMFwwIgotICAiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDAiCi0gICJcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiMyIKLSAgIlwwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiM1wwXDBcMCIiMlwwXDBcMCIiMFwwXDBcMCIKLSAgIipcMFwwXDBcNDBcMFwwXDBcMjRcMFwwXDBcMTFcMFwwXDBcM1wwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwyXDBcMFwwXDRcMFwwXDBcMTFcMFwwXDBcMTZcMFwwXDBcMjJcMFwwXDBcMjRcMFwwXDBcMjVcMFwwXDBcMjVcMCIKLSAgIlwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjUiCi0gICJcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDAiCi0gICJcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjVcMFwwXDBcMjRcMCIKLSAgIlwwXDBcMjFcMFwwXDBcMTRcMFwwXDBcN1wwXDBcMFwzXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDJcMFwwXDBcNFwwXDBcMFw1XDBcMFwwXDVcMFwwXDBcNVwwXDBcMFw1XDBcMCIKLSAgIlwwXDVcMFwwXDBcNlwwXDBcMFw2XDBcMFwwXDZcMFwwXDBcNlwwXDBcMFw2XDBcMFwwXDZcMFwwXDBcNlwwXDBcMFw2IgotICAiXDBcMFwwXDZcMFwwXDBcNlwwXDBcMFw2XDBcMFwwXDZcMFwwXDBcNlwwXDBcMFw2XDBcMFwwXDZcMFwwXDBcNlwwXDAiCi0gICJcMFw2XDBcMFwwXDZcMFwwXDBcNlwwXDBcMFw1XDBcMFwwXDVcMFwwXDBcNVwwXDBcMFw0XDBcMFwwXDNcMFwwXDBcMiIKLSAgIlwwXDBcMFwxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIgotICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiCi0gICJcMFwwXDBcMFwwXDBcMFwxXDBcMFwwXDFcMFwwXDBcMVwwXDBcMFwxXDBcMFwwXDFcMFwwXDBcMVwwXDBcMFwxXDBcMCIKLSAgIlwwXDFcMFwwXDBcMVwwXDBcMFwxXDBcMFwwXDFcMFwwXDBcMVwwXDBcMFwxXDBcMFwwXDFcMFwwXDBcMVwwXDBcMFwxIgotICAiXDBcMFwwXDFcMFwwXDBcMVwwXDBcMFwxXDBcMFwwXDFcMFwwXDBcMVwwXDBcMFwxXDBcMFwwXDFcMFwwXDBcMVwwXDAiCi0gICJcMFwxXDBcMFwwXDFcMFwwXDBcMVwwXDBcMFwxXDBcMFwwXDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9OwotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdub21lL2xpYmdub21ldWkvbm8tcGl4YnVmLWNzb3VyY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZXVpL25vLXBpeGJ1Zi1jc291cmNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDc2NWJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdub21lL2xpYmdub21ldWkvbm8tcGl4YnVmLWNzb3VyY2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gbGliZ25vbWV1aS0yLjYuMS4xL2NvbmZpZ3VyZS5pbi5vbGQJMjAwNC0wOC0wNCAwMDoyODo0My41ODIyNjY2NjQgKzAxMDAKLSsrKyBsaWJnbm9tZXVpLTIuNi4xLjEvY29uZmlndXJlLmluCTIwMDQtMDgtMDQgMDA6Mjk6MjcuNDk2NTkwNjcyICswMTAwCi1AQCAtMjM1LDcgKzIzNSw3IEBACi0gCi0gZG5sIFRoaXMgaXMgaW5zdGFsbGVkIGZyb20gR1RLKyAyLjAncyBnZGstcGl4YnVmCi0gQUNfUEFUSF9QUk9HKEdES19QSVhCVUZfQ1NPVVJDRSwgZ2RrLXBpeGJ1Zi1jc291cmNlKQotLXRlc3QgLXogIiRHREtfUElYQlVGX0NTT1VSQ0UiICYmIEFDX01TR19FUlJPUihbCi0rdGVzdCAteiAiJEdES19QSVhCVUZfQ1NPVVJDRSIgJiYgQUNfTVNHX1dBUk4oWwotICoqKiBZb3UgbmVlZCB0aGUgZ2RrLXBpeGJ1Zi1jc291cmNlIHRvb2wgd2hpY2ggaXMgaW5zdGFsbGVkCi0gKioqIGZyb20gR1RLKyAyLjAncyBnZGstcGl4YnVmLgotICoqKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWV1aV8yLjI0LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZXVpXzIuMjQuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDUyMTlkNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZXVpXzIuMjQuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkdOT01FIFVzZXIgSW50ZXJmYWNlIExpYnJhcnkiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSIKLQotU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKLURFUEVORFMgPSAibGliZ25vbWUgbGliZ25vbWVjYW52YXMgbGliYm9ub2JvdWkgbGliZ25vbWUta2V5cmluZyBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSIKLQotaW5oZXJpdCBnbm9tZQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2d0ay0yLjAvKi9maWxlc3lzdGVtcy9saWIqLnNvIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliZ2xhZGUvKi9saWIqLnNvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BpeG1hcHMvZ25vbWUtYWJvdXQtbG9nby5wbmciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9ndGstMi4wLyovZmlsZXN5c3RlbXMvKi5sYSAke2xpYmRpcn0vZ3RrLTIuMC8qL2ZpbGVzeXN0ZW1zLyouYSAke2xpYmRpcn0vbGliZ2xhZGUvKi8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbGliZ2xhZGUvKi8qLmEiCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgZmlsZTovLzAwMDEtc3VwcHJlc3Mtc3RyaW5nLWZvcm1hdC1saXRlcmFsLXdhcm5pbmctdG8tZml4LWJ1aWxkLS5wYXRjaCBcCi0gICAgZmlsZTovL2dub21lLXN0b2NrLXBpeGJ1ZnMuaCBcCi0gICAgZmlsZTovL25vLXBpeGJ1Zi1jc291cmNlLnBhdGNoIFwKLSIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImQ0YmI1MDZiMTkxNjAxNTMyMzkyOGZhYWI1YWE3MDhiIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYWUzNTJmMjQ5NTg4OWU2NTUyNGM5Nzk5MzJjOTA5ZjQ2MjlhNThlNjQyOTBmYjBjOTUzMzMzNzMyMjVkM2MwZiIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ndGstZG9jIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9nbm9tZS1zdG9jay1waXhidWZzLmggJHtTfS9saWJnbm9tZXVpL3BpeG1hcHMvZ25vbWUtc3RvY2stcGl4YnVmcy5oCi19Ci0KLUxERkxBR1MgKz0gIi1sbSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmd0a3N0eWx1cy9saWJndGtzdHlsdXNfMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ3Rrc3R5bHVzL2xpYmd0a3N0eWx1c18wLjUuYmIKaW5kZXggM2NkNzkxMC4uYTdjOGE2ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ3Rrc3R5bHVzL2xpYmd0a3N0eWx1c18wLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ3Rrc3R5bHVzL2xpYmd0a3N0eWx1c18wLjUuYmIKQEAgLTUsNyArNSw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90YXAuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT03MTc1NmVlYjE0NGU5ZWViMTc3YzY5YWE2NzJiMTYzNSIKIFBSID0gInI0IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogU1JDX1VSSSA9ICJodHRwOi8vYnVydG9uaW5pLmNvbS90ZW1wLyR7QlB9LnRhci5neiBcCiAgICAgZmlsZTovL2d0a3N0eWx1cy5zaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmd0b3AvbGliZ3RvcF8yLjMwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJndG9wL2xpYmd0b3BfMi4zMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDZkMTE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmd0b3AvbGliZ3RvcF8yLjMwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIkxpYkdUb3AyIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb3B5cmlnaHQudHh0O21kNT1kYmM4MzliZjE1OGQxOWEyMGU2NjFkYjE0ZGI3YTU4YyIKLQotaW5oZXJpdCBnbm9tZWJhc2UgbGliX3BhY2thZ2UgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0jIGRlcGVuZHMgb24gbGlieGF1Ci1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0dOT01FQk59LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtHTk9NRUJOfS0ke1BWfS50YXIuJHtHTk9NRV9DT01QUkVTU19UWVBFfTtuYW1lPWFyY2hpdmUgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1uZXRsb2FkLUluY2x1ZGUtbGliYy1uZXQtaGVhZGVycy11bmNvbmRpdGlvbmFsbHkucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJlZTI5YTllZjYwNjU5ZWJmNGIwNzVhYzI4MWY3MWNiMiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjQ2M2JjYmU1NzM3YjFiOTNmMzM0NWVlMzRhYmY2MDFlOGViODY0ZjUwN2M0OWZmMTkyMWMyNzM3YWJhZmMxZTUiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIGxpYnhhdSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmd0b3AvbGliZ3RvcF8yLjM4LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJndG9wL2xpYmd0b3BfMi4zOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5NDkzNGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJndG9wL2xpYmd0b3BfMi4zOC4wLmJiCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiTGliR1RvcDIiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorCitpbmhlcml0IGdub21lYmFzZSBsaWJfcGFja2FnZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dAorCisjIGRlcGVuZHMgb24gbGlieGF1CitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiYjBjZTdkZTZiMjg2OTRiNDA0MDVlZWRhYzhhMzFiNSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjRmNmMwZTYyYmI0MzhhYmZkMTZiNDU1OWNkMmVjYTAyNTFkZTE5ZTI5MWM4ODhjZGM0ZGM4OGU1ZmZlYmI2MTIiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgbGlieGF1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliaWRsL2xpYmlkbC1uYXRpdmVfMC44LjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliaWRsL2xpYmlkbC1uYXRpdmVfMC44LjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjUyYzQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmlkbC9saWJpZGwtbmF0aXZlXzAuOC4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVNFQ1RJT04gPSAibGlicyIKLXJlcXVpcmUgbGliaWRsXyR7UFZ9LmJiCi1pbmhlcml0IG5hdGl2ZQotCi1QUiA9ICJyMSIKLQotREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIGZsZXgtbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmI4ZTEwYTIxOGZhYzc5M2E1MmQ0MDRkMTRhZGVkY2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzVkMjRkOGMwOTY1NDYzNTNmYmM3Y2VkZjIwODM5MmQ1YTAyYWZlOWQ1NmViY2MxY2NjYjI1OGQ3YzRkMjIyMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmlkbC9saWJpZGwuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliaWRsL2xpYmlkbC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNWM4MTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliaWRsL2xpYmlkbC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJMaWJyYXJ5IGZvciBwYXJzaW5nIENPUkJBIElETCBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9hbmRyZXd0di5vcmcvbGliSURMLyIKLVNFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCi1MSUNFTlNFID0gIkxHUEx2MisiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYklETC8wLjgvbGliSURMLSR7UFZ9LnRhci5iejIiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJJREwtJHtQVn0iCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiAke2JpbmRpcn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJpZGwvbGliaWRsXzAuOC4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmlkbC9saWJpZGxfMC44LjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmRmY2YyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmlkbC9saWJpZGxfMC44LjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBsaWJpZGwuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1Y2E4MTdjY2I3ZDViNWI2NjM1NTY5MGU5YWJjNjA1IgotCi1ERVBFTkRTID0gImdsaWItMi4wIGZsZXgtbmF0aXZlIGxpYmlkbC1uYXRpdmUiCi0KLVBSID0gInIxIgotCi1CSU5DT05GSUdfR0xPQiA9ICIqLWNvbmZpZy0yIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZwotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmI4ZTEwYTIxOGZhYzc5M2E1MmQ0MDRkMTRhZGVkY2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzVkMjRkOGMwOTY1NDYzNTNmYmM3Y2VkZjIwODM5MmQ1YTAyYWZlOWQ1NmViY2MxY2NjYjI1OGQ3YzRkMjIyMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYnRpbWV6b25lbWFwL2xpYnRpbWV6b25lbWFwXzAuNC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGlidGltZXpvbmVtYXAvbGlidGltZXpvbmVtYXBfMC40LjUuYmIKaW5kZXggZDZhZWVkMy4uOTU3ZDdkMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGlidGltZXpvbmVtYXAvbGlidGltZXpvbmVtYXBfMC40LjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGlidGltZXpvbmVtYXAvbGlidGltZXpvbmVtYXBfMC40LjUuYmIKQEAgLTE1LDcgKzE1LDkgQEAKIAogQiA9ICIke1N9IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKIAkoY2QgJHtTfTsgTk9DT05GSUdVUkU9InllcyIgLiAke1N9L2F1dG9nZW4uc2gpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9tZXRhY2l0eS9tZXRhY2l0eS8wMDAxLWRyb3AtemVuaXR5LWRldGVjdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL21ldGFjaXR5L21ldGFjaXR5LzAwMDEtZHJvcC16ZW5pdHktZGV0ZWN0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0OTNlNTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9tZXRhY2l0eS9tZXRhY2l0eS8wMDAxLWRyb3AtemVuaXR5LWRldGVjdGlvbi5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGVjMGU1MmI0OWM5YjY4Njk0MTNjOTU0NGMyZWQ0NDcxMGFiOTExNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBTYXQsIDE0IEFwciAyMDE4IDE2OjE1OjU5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGRyb3AgemVuaXR5IGRldGVjdGlvbgorCitPRSBkb2VzIG5vdCBzdXBwb3J0IHplbml0eQorCitVcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA1IC0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDVmOWU3ZTkuLjgwYjMyYzcgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTM1OSwxMSArMzU5LDYgQEAgZmkKKyAKKyBBTV9DT05ESVRJT05BTChIQVZFX1NNLCB0ZXN0ICIkZm91bmRfc20iID0gInllcyIpIAorIAorLUFDX1BBVEhfUFJPRyhaRU5JVFksIHplbml0eSwgbm8pCistaWYgdGVzdCB4IiRaRU5JVFkiID0geG5vOyB0aGVuCistICBBQ19NU0dfRVJST1IoW3plbml0eSBub3QgZm91bmQgaW4geW91ciBwYXRoIC0gbmVlZGVkIGZvciBkaWFsb2dzXSkKKy1maQorLQorIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIGRubCBDaGVjayBmb3IgVnVsa2FuIHN1cHBvcnQKKyBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9tZXRhY2l0eS9tZXRhY2l0eS8wMDAxLXVpLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL21ldGFjaXR5L21ldGFjaXR5LzAwMDEtdWktRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzlkNzU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL21ldGFjaXR5L21ldGFjaXR5LzAwMDEtdWktRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSBlN2ZkMDcyZjBkZjk2OGYzNDI4NzhiNzcwOThlOTdmZjA3ZWQyOGQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTQgSnVsIDIwMTcgMTA6MjY6MzEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gdWk6IERlZmluZSBfR05VX1NPVVJDRQotCi1pdCBiZWNvbWVzIHBvcnRhYmxlIGFjcm9zcyBtdXNsIGFuZCBnbGliYwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL3VpL3RoZW1lLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy91aS90aGVtZS5jIGIvc3JjL3VpL3RoZW1lLmMKLWluZGV4IDg0YjU3YTAuLmM3ZWFmYzggMTAwNjQ0Ci0tLS0gYS9zcmMvdWkvdGhlbWUuYwotKysrIGIvc3JjL3VpL3RoZW1lLmMKLUBAIC02MCw2ICs2MCw3IEBACi0gI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAjZGVmaW5lIF9fVVNFX1hPUEVOCi0gI2luY2x1ZGUgPG1hdGguaD4KLSAKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL21ldGFjaXR5L21ldGFjaXR5L3JlbW92ZS15ZWxwLWhlbHAtcnVsZXMtdmFyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbWV0YWNpdHkvbWV0YWNpdHkvcmVtb3ZlLXllbHAtaGVscC1ydWxlcy12YXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NzBlOWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbWV0YWNpdHkvbWV0YWNpdHkvcmVtb3ZlLXllbHAtaGVscC1ydWxlcy12YXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1SZW1vdmUgdW51c2VkIHZhcmlhYmxlIChZRUxQX0hFTFBfUlVMRVMpCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgotCi1JbmRleDogbWV0YWNpdHktMi4zNC4xMy9kb2MvY3JlYXRpbmdfdGhlbWVzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbWV0YWNpdHktMi4zNC4xMy5vcmlnL2RvYy9jcmVhdGluZ190aGVtZXMvTWFrZWZpbGUuYW0KLSsrKyBtZXRhY2l0eS0yLjM0LjEzL2RvYy9jcmVhdGluZ190aGVtZXMvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNSBAQAotICMjIyBUaGlzIHBhcnQgb2YgTWFrZWZpbGUuYW0gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgeW91LgotIAotLUBZRUxQX0hFTFBfUlVMRVNACi0gCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IGluIC91c3Ivc2hhcmUvZ25vbWUvaGVscC8sIAotICMgYW5kIHRoZSBuYW1lIG9mIHRoZSBtYWluIC54bWwgZmlsZToKLUluZGV4OiBtZXRhY2l0eS0yLjM0LjEzL2RvYy9jcmVhdGluZ190aGVtZXMvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtZXRhY2l0eS0yLjM0LjEzLm9yaWcvZG9jL2NyZWF0aW5nX3RoZW1lcy9NYWtlZmlsZS5pbgotKysrIG1ldGFjaXR5LTIuMzQuMTMvZG9jL2NyZWF0aW5nX3RoZW1lcy9NYWtlZmlsZS5pbgotQEAgLTQ1NSw3ICs0NTUsNiBAQCB1bmluc3RhbGwtYW06Ci0gCW1vc3RseWNsZWFuLWxpYnRvb2wgcGRmIHBkZi1hbSBwcyBwcy1hbSB1bmluc3RhbGwgdW5pbnN0YWxsLWFtCi0gCi0gCi0tQFlFTFBfSEVMUF9SVUxFU0AKLSAKLSAjIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2UgdG8gbm90IGV4cG9ydCBhbGwgdmFyaWFibGVzLgotICMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxpbWl0IChmb3IgU3lzViBhdCBsZWFzdCkgbWF5IGJlIGV4Y2VlZGVkLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbWV0YWNpdHkvbWV0YWNpdHlfMi4zNC4xMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL21ldGFjaXR5L21ldGFjaXR5XzIuMzQuMTMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MGRlNzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbWV0YWNpdHkvbWV0YWNpdHlfMi4zNC4xMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNFQ1RJT04gPSAieDExL3dtIgotU1VNTUFSWSA9ICJNZXRhY2l0eSBpcyB0aGUgYm9yaW5nIHdpbmRvdyBtYW5hZ2VyIGZvciB0aGUgYWR1bHQgaW4geW91IgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaW5jbHVkZS9tYWluLmg7ZW5kbGluZT0yNDttZDU9YzIyNDJkZjU1MmM4ODAyODAzMTU5ODliYWI2MjZiOTAiCi0KLURFUEVORFMgPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBzdGFydHVwLW5vdGlmaWNhdGlvbiBndGsrIGdjb25mIGdkay1waXhidWYtbmF0aXZlIGxpYmNhbmJlcnJhIGdub21lLWRvYy11dGlscyBsaWJndG9wIGludGx0b29sLW5hdGl2ZSIKLVBSID0gInIxIgotCi1pbmhlcml0IGdub21lYmFzZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHN0YXJ0dXAtbm90aWZpY2F0aW9uIHdoaWNoIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLUdOT01FX0NPTVBSRVNTX1RZUEUgPSAieHoiCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7R05PTUVCTn0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke0dOT01FQk59LSR7UFZ9LnRhci4ke0dOT01FX0NPTVBSRVNTX1RZUEV9O25hbWU9YXJjaGl2ZSBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUteWVscC1oZWxwLXJ1bGVzLXZhci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVpLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjZkODliNzE2NzJkNGZhNDlmYzg3ZjgzZDYxMGQwZWY2IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOGNmNGRiZjBkYTBhNmYzNjM1N2NlN2RiN2Y4MjllYzY4NTkwOGE3NzkyNDUzYzY2MmZiODE4NDU3MmI5MTA3NSIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAieC13aW5kb3ctbWFuYWdlciIKLUFMVEVSTkFUSVZFX1RBUkdFVFt4LXdpbmRvdy1tYW5hZ2VyXSA9ICIke2JpbmRpcn0vbWV0YWNpdHkiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMCIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUteGluZXJhbWEiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAnczokWkVOSVRZOiROT1pFTklUWTpnJyAtZSAnczotV2Vycm9yOjpnJyAke1N9L2NvbmZpZ3VyZS5pbgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS90aGVtZXMgJHtkYXRhZGlyfS9nbm9tZS1jb250cm9sLWNlbnRlciAke2RhdGFkaXJ9L2dub21lIgotUkRFUEVORFNfJHtQTn0gKz0gImdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL21ldGFjaXR5L21ldGFjaXR5XzMuMzguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL21ldGFjaXR5L21ldGFjaXR5XzMuMzguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGZjOTE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbWV0YWNpdHkvbWV0YWNpdHlfMy4zOC4wLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NFQ1RJT04gPSAieDExL3dtIgorU1VNTUFSWSA9ICJNZXRhY2l0eSBpcyB0aGUgYm9yaW5nIHdpbmRvdyBtYW5hZ2VyIGZvciB0aGUgYWR1bHQgaW4geW91IgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iNGNjZTUzNTYwYjhlNjE5ZmZhN2M4MzBmYjg3NjFhYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaW5jbHVkZS9tYWluLmg7ZW5kbGluZT0yNDttZDU9NzIxNDhlZGUwN2E2ZGFkZDAxZGU2YTg4MmQyMGE5YWQiCisKK0RFUEVORFMgPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBzdGFydHVwLW5vdGlmaWNhdGlvbiBcCisgICAgICAgICAgIGdub21lLWRvYy11dGlscyBnZGstcGl4YnVmLW5hdGl2ZSBcCisgICAgICAgICAgIGd0ayszIGdsaWItMi4wIGxpYmNhbmJlcnJhIGxpYmd0b3AgaW50bHRvb2wtbmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IGdub21lYmFzZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKyMgZGVwZW5kcyBvbiBzdGFydHVwLW5vdGlmaWNhdGlvbiB3aGljaCBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vR05PTUUvbWV0YWNpdHkuZ2l0O2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kcm9wLXplbml0eS1kZXRlY3Rpb24ucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gImMwZDRiMmZjMGZjZDZmMmQzYzM3ZGE5MzU5MjNmOWU5ZWQ1ZWI5OWYiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXhpbmVyYW1hIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBjZCAke1N9CisgICAgYWNsb2NhbCAtLWluc3RhbGwgfHwgZXhpdCAxCisgICAgYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1mb3JjZSAtLWluc3RhbGwgLVduby1wb3J0YWJpbGl0eSB8fCBleGl0IDEKKyAgICBjZCAtCisKK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdGhlbWVzICR7ZGF0YWRpcn0vZ25vbWUtY29udHJvbC1jZW50ZXIgJHtkYXRhZGlyfS9nbm9tZSIKK1JERVBFTkRTXyR7UE59ICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1cy9uby10cnktcnVuLXN0cmZ0aW1lLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1cy9uby10cnktcnVuLXN0cmZ0aW1lLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjZDI5MzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXMvbm8tdHJ5LXJ1bi1zdHJmdGltZS5kaWZmCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLS0tIC90bXAvY29uZmlndXJlLmluCTIwMDktMDQtMTMgMTE6MjY6NDMuMDAwMDAwMDAwICswMjAwCi0rKysgbmF1dGlsdXMtMi4yNi4xL2NvbmZpZ3VyZS5pbgkyMDA5LTA0LTEzIDExOjI4OjM3LjAwMDAwMDAwMCArMDIwMAotQEAgLTM3NSwyNSArMzc1LDYgQEAKLSAKLSBkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gCi0tZG5sIHN0cmZ0aW1lIGNoZWNrcwotLQotLUFDX1RSWV9SVU4oWyNpbmNsdWRlIDx0aW1lLmg+Ci0tICAgICAgICAgICAgICAgIGludCBtYWluICgpCi0tICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICBjaGFyIGJ1ZlsxMDBdOwotLSAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSB0bSA9IHswfTsKLS0gICAgICAgICAgICAgICAgICB0bS50bV95ZWFyID0gOTk7Ci0tICAgICAgICAgICAgICAgICAgaWYgKHN0cmZ0aW1lKGJ1ZiwgMTAwLCAiJUVZIiwgJnRtKSA9PSA0ICYmCi0tCQkgICAgICBzdHJjbXAgKGJ1ZiwgIjE5OTkiKT09MCkKLS0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotLSAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgXSwKLS0JICAgIEFDX0RFRklORShIQVZFX1NUUkZUSU1FX0VYVEVOU0lPTiwgMSwgW0RlZmluZSBpZiBzdHJmdGltZSBzdXBwb3J0cyAlRSBhbmQgJU8gbW9kaWZpZXJzLl0pCi0tICAgICAgICAgICAgKQotLQotLWRubCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0KLSAjCi0gIyBDaGVja3MgZm9yIFhmdC9YUmVuZGVyCi0gIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXMzL25vLXRyeS1ydW4tc3RyZnRpbWUuZGlmZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzMy9uby10cnktcnVuLXN0cmZ0aW1lLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZDJlMTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXMzL25vLXRyeS1ydW4tc3RyZnRpbWUuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gZGM5YzhjZjI2NzZjOGM5MWVhMGFlMjUwY2ZlZGY4NjMzNTJmM2NjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci1EYXRlOiBGcmksIDI0IEp1biAyMDExIDIwOjI0OjA4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGhhY2sgb3V0IGNoZWNrIHRoYXQgdHJpZXMgdG8gcnVuIGdlbmVyYXRlZCBiaW5hcmllcwotCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotLS0tCi0gY29uZmlndXJlLmluIHwgICAxNyArLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggYzNhYTM3MS4uMWQzZWNkYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMjUxLDIyICsyNTEsNyBAQCBBQ19TVUJTVChXQVJOSU5HX0NGTEFHUykKLSAKLSBkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gCi0tZG5sIHN0cmZ0aW1lIGNoZWNrcwotLQotLUFDX1RSWV9SVU4oWyNpbmNsdWRlIDx0aW1lLmg+Ci0tICAgICAgICAgICAgICAgIGludCBtYWluICgpCi0tICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICBjaGFyIGJ1ZlsxMDBdOwotLSAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSB0bSA9IHswfTsKLS0gICAgICAgICAgICAgICAgICB0bS50bV95ZWFyID0gOTk7Ci0tICAgICAgICAgICAgICAgICAgaWYgKHN0cmZ0aW1lKGJ1ZiwgMTAwLCAiJUVZIiwgJnRtKSA9PSA0ICYmCi0tCQkgICAgICBzdHJjbXAgKGJ1ZiwgIjE5OTkiKT09MCkKLS0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotLSAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgXSwKLS0JICAgIEFDX0RFRklORShIQVZFX1NUUkZUSU1FX0VYVEVOU0lPTiwgMSwgW0RlZmluZSBpZiBzdHJmdGltZSBzdXBwb3J0cyAlRSBhbmQgJU8gbW9kaWZpZXJzLl0pCi0tICAgICAgICAgICAgKQotK0FDX0RFRklORShIQVZFX1NUUkZUSU1FX0VYVEVOU0lPTiwgMSwgW0RlZmluZSBpZiBzdHJmdGltZSBzdXBwb3J0cyAlRSBhbmQgJU8gbW9kaWZpZXJzLl0pCi0gCi0gZG5sID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gCQotLS0gCi0xLjYuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzXzMuMTguNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzXzMuMTguNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmRiZjZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXNfMy4xOC41LmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiRmlsZSBtYW5hZ2VyIGZvciBHTk9NRSIKK1NFQ1RJT04gPSAieDExL2dub21lIgorCitMSUNFTlNFPSJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM2Y2Y2NjBhZWEyYjhiZWZmYmE3OTQ1ZjQ0YTdlNzQ4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuRVhURU5TSU9OUzttZDU9NzU3OWQ2Njc4NDAyYTE4Njg2MzFiZjgyYzkzZmYwZDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWYzMGE5NzE2ZWYzNzYyZTM0NjdhMmY2MmJmNzkwZjBhIgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL25hdXRpbHVzLzMuMTgvbmF1dGlsdXMtJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGY1NzhiZGE1NjU1YzBjZTIwNGJlZmFmY2E1ODAzZDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjBhOTI3YzA1MjJiNGNjZWQ5ZDhmNjJiYWVkMmVlNWUyZmQ0MzA1YmU0NTIzZWI1YmM0NDgwNTk3MWE2Y2MxNSIKKworREVQRU5EUyA9ICJndGsrMyBnbm9tZS1kZXNrdG9wMyBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdsaWItMi4wLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUgcGFuZ28iCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtZ3RrLWRvYyBcCisgICAgLS1kaXNhYmxlLXVwZGF0ZS1taW1lZGIgXAorICAgIC0tZGlzYWJsZS1uc3QtZXh0ZW5zaW9uIFwKKyAgICAtLWVuYWJsZS10cmFja2VyPW5vIFwKKyAgICAtLWRpc2FibGUtc2NoZW1hcy1jb21waWxlIFwKKyAgICAtLWVuYWJsZS14bXA9bm8gXAorICAgIC0tZW5hYmxlLWxpYmV4aWY9bm8gXCAKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL29yYml0Mi9vcmJpdDIvMDAwMS1saW5jMi1zcmMtTWFrZWZpbGUuYW0tZml4LWJ1aWxkLXdpdGgtZ2xpYi0yLjM2LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvb3JiaXQyL29yYml0Mi8wMDAxLWxpbmMyLXNyYy1NYWtlZmlsZS5hbS1maXgtYnVpbGQtd2l0aC1nbGliLTIuMzYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZjc0NjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvb3JiaXQyL29yYml0Mi8wMDAxLWxpbmMyLXNyYy1NYWtlZmlsZS5hbS1maXgtYnVpbGQtd2l0aC1nbGliLTIuMzYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDEwYmQ4MDk0ZTFkOTRlNWM3Mzc3OTFjN2Y0YjZiODQ0ZjUzNWMxMjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMgTWF5IDIwMTMgMTA6MDA6MTYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGluYzIvc3JjL01ha2VmaWxlLmFtOiBmaXggYnVpbGQgd2l0aCBnbGliIDIuMzYKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWzFdCi0KLVsxXSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk2OTAwCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGxpbmMyL3NyYy9NYWtlZmlsZS5hbSB8ICAgIDMgKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saW5jMi9zcmMvTWFrZWZpbGUuYW0gYi9saW5jMi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDM1N2EyZGQuLmJhMGUzNDcgMTAwNjQ0Ci0tLS0gYS9saW5jMi9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpbmMyL3NyYy9NYWtlZmlsZS5hbQotQEAgLTEyLDggKzEyLDcgQEAgSU5DTFVERVMgPSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gCS1JJCh0b3BfYnVpbGRkaXIpL2xpbmMyL2luY2x1ZGUgIFwKLSAJLUkkKHRvcF9zcmNkaXIpL2xpbmMyL2luY2x1ZGUgICAgXAotIAkkKExJTkNfQ0ZMQUdTKSAgICAgICAgICAgICBcCi0tCSQoV0FSTl9DRkxBR1MpICAgICAgICAgICAgIFwKLS0JLURHX0RJU0FCTEVfREVQUkVDQVRFRAotKwkkKFdBUk5fQ0ZMQUdTKQotIAotIGlmIE9TX1dJTjMyCi0gZWxzZQotLS0gCi0xLjcuNi41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL29yYml0Mi9vcmJpdDIvMDAwMi1Vc2UtQU1fQ1BQRkxBR1MtaW5zdGVhZC1vZi1JTkNMVURFUy1hbmQtZml4LXByb2JsZW0tLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvb3JiaXQyL29yYml0Mi8wMDAyLVVzZS1BTV9DUFBGTEFHUy1pbnN0ZWFkLW9mLUlOQ0xVREVTLWFuZC1maXgtcHJvYmxlbS0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5OTNhYmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvb3JiaXQyL29yYml0Mi8wMDAyLVVzZS1BTV9DUFBGTEFHUy1pbnN0ZWFkLW9mLUlOQ0xVREVTLWFuZC1maXgtcHJvYmxlbS0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIGQ5MWRiYjQyZGMzYjYwNzM3MjAwMjdmNjg4MjdhY2QwYWJlZTZkNzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLamFydGFuIE1hcmFhcyA8a21hcmFhc0Bnbm9tZS5vcmc+Ci1EYXRlOiBUdWUsIDE0IE1heSAyMDEzIDEzOjI5OjUzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBBTV9DUFBGTEFHUyBpbnN0ZWFkIG9mIElOQ0xVREVTIGFuZCBmaXggcHJvYmxlbSB1c2luZwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxXQotCi1bMV0gaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9PUkJpdDIvY29tbWl0L3Rlc3QvZXZlcnl0aGluZy9NYWtlZmlsZS5hbT9pZD1kOTFkYmI0MmRjM2I2MDczNzIwMDI3ZjY4ODI3YWNkMGFiZWU2ZDc1Ci0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIHRlc3QvZXZlcnl0aGluZy9NYWtlZmlsZS5hbSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0L2V2ZXJ5dGhpbmcvTWFrZWZpbGUuYW0gYi90ZXN0L2V2ZXJ5dGhpbmcvTWFrZWZpbGUuYW0KLWluZGV4IDMyYmViMzYuLmNiNGIxZDYgMTAwNjQ0Ci0tLS0gYS90ZXN0L2V2ZXJ5dGhpbmcvTWFrZWZpbGUuYW0KLSsrKyBiL3Rlc3QvZXZlcnl0aGluZy9NYWtlZmlsZS5hbQotQEAgLTEwLDcgKzEwLDcgQEAgRVZFUllUSElOR19JRExPVVQgPSAgICAgICAgICBcCi0gCSQoRVZFUllUSElOR19CVUlMVCkgIFwKLSAJZXZlcnl0aGluZy1pbW9kdWxlLmMKLSAKLS1JTkNMVURFUyA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotK0FNX0NQUEZMQUdTID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gCS1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlICAgICAgICAgICAgXAotIAktSSQodG9wX2J1aWxkZGlyKS9pbmNsdWRlICAgICAgICAgIFwKLSAJLUkkKHRvcF9idWlsZGRpcikvc3JjICAgICAgICAgICAgICBcCi1AQCAtNzgsNyArNzgsNyBAQCBpbmNsdWRlICQodG9wX3NyY2RpcikvTWFrZWZpbGUuc2hhcmVkCi0gQlVJTFRfU09VUkNFUyA9ICR7RVZFUllUSElOR19CVUlMVH0gZXZlcnl0aGluZy1pbW9kdWxlLmMKLSBDTEVBTkZJTEVTID0gJHtCVUlMVF9TT1VSQ0VTfSBpb3JmaWxlCi0gCi0tVEVTVFMgPSAkKHNyY2RpcikvdGVzdC5zaAotK1RFU1RTID0gJCh0b3BfYnVpbGRkaXIpL3Rlc3QvZXZlcnl0aGluZy90ZXN0LnNoCi0gCi0gRVhUUkFfRElTVCA9ICQoSURMX0ZJTEVTKSB0ZXN0LnNoICQoaW5jbHVkZWRfc3JjKQotIAotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL29yYml0Mi9vcmJpdDIvY29uZmlndXJlLWxvc3NhZ2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9vcmJpdDIvb3JiaXQyL2NvbmZpZ3VyZS1sb3NzYWdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmMxZGU1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL29yYml0Mi9vcmJpdDIvY29uZmlndXJlLWxvc3NhZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0tLS0gT1JCaXQyLTIuMTQuMTcvY29uZmlndXJlLmluLW9yaWcJMjAwOS0wMS0xMCAwOTozNjoxOC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBPUkJpdDItMi4xNC4xNy9jb25maWd1cmUuaW4JMjAwOS0wNi0xNyAxNToxMDo1OS4wMDAwMDAwMDAgLTA3MDAKLUBAIC0yMTcsMjAgKzIxNywyMCBAQCBkbmwKLSBkbmwgICBTbyBtYW55IHBlb3BsZSB3aXRoIGJyb2tlbiBsaW5raW5nIHNldHVwcyBhc2tlZCBhYm91dCB0aGlzCi0gZG5sIGl0IHR1cm5lZCBvdXQgdG8gYmUgbmVjZXNzYXJ5IHRvIGNoZWNrIGZvciB0aGlzLgotIGRubAotLWRvZnVzX3NhdmVfbGlicz0iJExJQlMiCi0tTElCUz0iJE9SQklUX0xJQlMgJExJQlMiCi0tQUNfVFJZX1JVTihbICNpbmNsdWRlIDxzdGRpby5oPgotLSAgICAgICAgICAgICBtYWluICgpCi0tICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICByZXR1cm4gMDsKLS0gICAgICAgICAgICAgfSBdLCwKLS0gICAgICAgICAgIEFDX01TR19FUlJPUihbCi0tTGlua2luZyBpcyBiYWRseSBib3JrZWQgb24geW91ciBzeXN0ZW0uIFBsZWFzZSBlbnN1cmUgeW91ciBsaWJyYXJ5IHBhdGggaXMgY29ycmVjdAotLUNoZWNrIGNvbmZpZy5sb2cgZm9yIGRldGFpbHMgLSBjaGVjayBuZWFyIHRoZSBlbmQgb2YgdGhlIGxvZyBhYm92ZSAnZmFpbGVkIHByb2dyYW0gd2FzJwotLUFsdGVybmF0aXZlbHkgZW5zdXJlIHRoYXQgeW91ciAvZXRjL2xkLnNvLmNvbmYgKGFuZC9vciBMRF9MSUJSQVJZX1BBVEgpIGluY2x1ZGVzIHRoZQotLXByZWZpeCB5b3UncmUgY29tcGlsaW5nIG9uOiAnJHtwcmVmaXh9JyBdKSwgCi0tQUNfTVNHX1dBUk4oW0NvdWxkIG5vdCBjaGVjayBmb3IgYm9ya2VkIGxpbmtpbmcgd2hpbGUgY3Jvc3MtY29tcGlsaW5nXSkpCi0tTElCUz0iJGRvZnVzX3NhdmVfbGlicyIKLStkbmwgZG9mdXNfc2F2ZV9saWJzPSIkTElCUyIKLStkbmwgTElCUz0iJE9SQklUX0xJQlMgJExJQlMiCi0rZG5sIEFDX1RSWV9SVU4oWyAjaW5jbHVkZSA8c3RkaW8uaD4KLStkbmwgICAgICAgICAgICAgbWFpbiAoKQotK2RubCAgICAgICAgICAgICAgewotK2RubCAgICAgICAgICAgICAgICByZXR1cm4gMDsKLStkbmwgICAgICAgICAgICAgIH0gXSwsCi0rZG5sICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFsKLStkbmwgTGlua2luZyBpcyBiYWRseSBib3JrZWQgb24geW91ciBzeXN0ZW0uIFBsZWFzZSBlbnN1cmUgeW91ciBsaWJyYXJ5IHBhdGggaXMgY29ycmVjdAotK2RubCBDaGVjayBjb25maWcubG9nIGZvciBkZXRhaWxzIC0gY2hlY2sgbmVhciB0aGUgZW5kIG9mIHRoZSBsb2cgYWJvdmUgJ2ZhaWxlZCBwcm9ncmFtIHdhcycKLStkbmwgQWx0ZXJuYXRpdmVseSBlbnN1cmUgdGhhdCB5b3VyIC9ldGMvbGQuc28uY29uZiAoYW5kL29yIExEX0xJQlJBUllfUEFUSCkgaW5jbHVkZXMgdGhlCi0rZG5sIHByZWZpeCB5b3UncmUgY29tcGlsaW5nIG9uOiAnJHtwcmVmaXh9JyBdKSwgCi0rZG5sIEFDX01TR19XQVJOKFtDb3VsZCBub3QgY2hlY2sgZm9yIGJvcmtlZCBsaW5raW5nIHdoaWxlIGNyb3NzLWNvbXBpbGluZ10pKQotK2RubCBMSUJTPSIkZG9mdXNfc2F2ZV9saWJzIgotIAotIG9yaWdfQ1BQRkxBR1M9JENQUEZMQUdTCi0gQ1BQRkxBR1M9IiRDUFBGTEFHUyAkT1JCSVRfQ0ZMQUdTIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvb3JiaXQyL29yYml0Mi9wa2djb25maWctZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvb3JiaXQyL29yYml0Mi9wa2djb25maWctZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjI5ZTUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL29yYml0Mi9vcmJpdDIvcGtnY29uZmlnLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLWRpZmYgLXVyTiBPUkJpdDItMi4xNC4xMi5vcmlnL09SQml0LTIuMC5wYy5pbiBPUkJpdDItMi4xNC4xMi9PUkJpdC0yLjAucGMuaW4KLS0tLSBPUkJpdDItMi4xNC4xMi5vcmlnL09SQml0LTIuMC5wYy5pbgkyMDA4LTAxLTI5IDEzOjQ1OjIyLjAwMDAwMDAwMCArMDEwMAotKysrIE9SQml0Mi0yLjE0LjEyL09SQml0LTIuMC5wYy5pbgkyMDA4LTA5LTIzIDIwOjEzOjA3LjAwMDAwMDAwMCArMDIwMAotQEAgLTIsNyArMiw3IEBACi0gZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAotIGxpYmRpcj1AbGliZGlyQAotIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACi0tb3JiaXRfaWRsPUBiaW5kaXJAL29yYml0LWlkbC0yQEVYRUVYVEAKLStvcmJpdF9pZGw9QGV4ZWNfcHJlZml4QC9iaW4vb3JiaXQtaWRsLTJARVhFRVhUQAotIAotIAotIE5hbWU6IE9SQml0LTIuMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvb3JiaXQyL29yYml0Ml8yLjE0LjE5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvb3JiaXQyL29yYml0Ml8yLjE0LjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjQzOTcyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL29yYml0Mi9vcmJpdDJfMi4xNC4xOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiQ09SQkEgT1JCIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbm9tZS5vcmcvcHJvamVjdHMvT1JCaXQyIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotU1JDX05BTUUgPSAiT1JCaXQyIgotU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCi1TUkNfVVJJID0gIiBcCi0gICAgJHtHTk9NRV9NSVJST1J9LyR7U1JDX05BTUV9LyR7U0hSVF9WRVJ9LyR7U1JDX05BTUV9LSR7UFZ9LnRhci5iejIgXAotICAgIGZpbGU6Ly9jb25maWd1cmUtbG9zc2FnZS5wYXRjaCBcCi0gICAgZmlsZTovL3BrZ2NvbmZpZy1maXgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWxpbmMyLXNyYy1NYWtlZmlsZS5hbS1maXgtYnVpbGQtd2l0aC1nbGliLTIuMzYucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLVVzZS1BTV9DUFBGTEFHUy1pbnN0ZWFkLW9mLUlOQ0xVREVTLWFuZC1maXgtcHJvYmxlbS0ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjcwODJkMzE3YTk1NzNhYjMzODMwMjI0MzA4MmQxMGQxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1YzkwMGE5MDU0ODI5OTI3MzBmNTc1ZjNlZWYzNGQ1MGJkYTcxN2MxOTdjOTdjMDhmYTVhNmVhZmQ4NTc1NTAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1JRExfQ09NUElMRVJfREVQRU5EUyA9ICJvcmJpdDItbmF0aXZlIgotSURMX0NPTVBJTEVSX0RFUEVORFNfY2xhc3MtbmF0aXZlID0gIiAiCi1ERVBFTkRTID0gImxpYmlkbCBwb3B0ICR7SURMX0NPTVBJTEVSX0RFUEVORFN9IgotCi0jIElETF9DT01QSUxFUl9ERVBFTkRTX2NsYXNzLW5hdGl2ZSBmb3Igc29tZSByZWFzb24gZGlkbid0IHdvcmsgYW5kIG9yYml0Mi1uYXRpdmUKLSMgd2FzIHN0aWxsIGluIG9yYml0Mi1uYXRpdmUgREVQRU5EUyBjYXVzaW5nIGNpcmN1bGFyIGRlcGVuZGVuY3kKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYmlkbC1uYXRpdmUgcG9wdC1uYXRpdmUiCi1QQVJBTExFTF9NQUtFID0gIiIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L29yYml0LTIuMC8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vb3JiaXQtMi4wLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9vcmJpdC0yLjAvKi5hIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vb3JiaXQtMi4wLy5kZWJ1ZyIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDX05BTUV9LSR7UFZ9IgotCi1MRUFEX1NPTkFNRSA9ICJsaWJPUkJpdC0yLnNvIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYwotCi1FWFRSQV9PRU1BS0UgPSAiSURMX0NPTVBJTEVSPScke1NUQUdJTkdfQklORElSX05BVElWRX0vb3JiaXQtaWRsLTInIgotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICIgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9jb250YWN0cy9zdG9ja19jb250YWN0LnBuZyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHMvc3RvY2tfY29udGFjdC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyM2I0NDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9jb250YWN0cy9zdG9ja19jb250YWN0LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHMvc3RvY2tfcGVyc29uLnBuZyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHMvc3RvY2tfcGVyc29uLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxMzI4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2NvbnRhY3RzL3N0b2NrX3BlcnNvbi5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2RhdGVzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vZGF0ZXMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmQyZjgzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vZGF0ZXMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRGF0ZXMgaXMgYSBjYWxlbmRhciBhcHBsaWNhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vcGltbGljby1wcm9qZWN0Lm9yZy9kYXRlcy5odG1sIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBMR1BMdjIrIgotCi1TRUNUSU9OID0gIngxMSIKLURFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKyBsaWJnbGFkZSBldm9sdXRpb24tZGF0YS1zZXJ2ZXIgaW50bHRvb2wtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAibGliZWRhdGEtY2FsIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBndGstaWNvbi1jYWNoZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9kYXRlcy8wMDAxLUZpeC1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2RhdGVzLzAwMDEtRml4LWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY1NTFhNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2RhdGVzLzAwMDEtRml4LWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gNjg3ODgxYzVmYTM0MjY4NmM4NzI0YWRjZGFjMGY5ZDU1NWEzNTFjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDUgQXByIDIwMTcgMTg6MTA6NTcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGZvcm1hdCBzZWN1cml0eSB3YXJuaW5ncwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2RhdGVzX2NhbGxiYWNrcy5jIHwgMiArLQotIHNyYy9kYXRlc19ndGsuYyAgICAgICB8IDIgKy0KLSBzcmMvZ2NvbmYtYnJpZGdlLmMgICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZGF0ZXNfY2FsbGJhY2tzLmMgYi9zcmMvZGF0ZXNfY2FsbGJhY2tzLmMKLWluZGV4IGQ3MDRjOGYuLjQ2YjhjYjEgMTAwNjQ0Ci0tLS0gYS9zcmMvZGF0ZXNfY2FsbGJhY2tzLmMKLSsrKyBiL3NyYy9kYXRlc19jYWxsYmFja3MuYwotQEAgLTM2NSw3ICszNjUsNyBAQCBkYXRlc19hYm91dF9jYiAoR3RrV2lkZ2V0ICp3aWRnZXQsIERhdGVzRGF0YSAqZCkKLSAKLSAJaWYgKCFwaXhiKSB7Ci0gCQlnX2Fzc2VydCAoZXJyb3IpOwotLQkJZ193YXJuaW5nIChlcnJvci0+bWVzc2FnZSk7Ci0rCQlnX3dhcm5pbmcgKCIlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSAJCWdfY2xlYXJfZXJyb3IgKCZlcnJvcik7Ci0gCX0KLSAKLWRpZmYgLS1naXQgYS9zcmMvZGF0ZXNfZ3RrLmMgYi9zcmMvZGF0ZXNfZ3RrLmMKLWluZGV4IDQwM2JjMjUuLmZkNjkxZDIgMTAwNjQ0Ci0tLS0gYS9zcmMvZGF0ZXNfZ3RrLmMKLSsrKyBiL3NyYy9kYXRlc19ndGsuYwotQEAgLTExMTQsNyArMTExNCw3IEBAIGNhbGVuZGFyX2RvX2VkaXRfZGlhbG9nX3Jlc3BvbnNlX2NiIChHdGtEaWFsb2cgKmRpYWxvZywgZ2ludCByZXNwb25zZV9pZCwgZ3BvaW50Ci0gCQkJCUdUS19ESUFMT0dfTU9EQUwgfCBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCi0gCQkJCUdUS19NRVNTQUdFX1dBUk5JTkcsCi0gCQkJCUdUS19CVVRUT05TX05PTkUsCi0tCQkJCXByb21wdCk7Ci0rCQkJCSIlcyIsIHByb21wdCk7Ci0gCi0gCQlnX2ZyZWUgKHByb21wdCk7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2djb25mLWJyaWRnZS5jIGIvc3JjL2djb25mLWJyaWRnZS5jCi1pbmRleCA0OTc1NGNmLi42N2QzNzU3IDEwMDY0NAotLS0tIGEvc3JjL2djb25mLWJyaWRnZS5jCi0rKysgYi9zcmMvZ2NvbmYtYnJpZGdlLmMKLUBAIC0xMjIwLDcgKzEyMjAsNyBAQCBlcnJvcl9oYW5kbGVyIChHQ29uZkNsaWVudCAqY2xpZW50LAotICAgICAgICAgICAgICAgICBkbGcgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3IChOVUxMLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfTUVTU0FHRV9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0JVVFRPTlNfT0ssCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBtZXNzYWdlKTsKLSAgICAgICAgICAgICAgICAgZ19mcmVlIChtZXNzYWdlKTsKLSAKLSAgICAgICAgICAgICAgICAgZ3RrX21lc3NhZ2VfZGlhbG9nX2Zvcm1hdF9zZWNvbmRhcnlfdGV4dAotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9kYXRlcy9kc29fbGlua2luZ19jaGFuZ2VfYnVpbGRfZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9kYXRlcy9kc29fbGlua2luZ19jaGFuZ2VfYnVpbGRfZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDlkNTlkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vZGF0ZXMvZHNvX2xpbmtpbmdfY2hhbmdlX2J1aWxkX2ZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLWFmdGVyIGdjYyBsaW5raW5nIGhhcyBjaGFuZ2VkLCBhbGwgdGhlIGxpYnJhcmllcyBtdXN0IGJlIGV4cGxpY2l0ZWx5IHNwZWNpZmllZCAKLVRoaXMgcGF0Y2ggYXZvaWRzIHRoZXNlIGxpbmtpbmcgZXJyb3JzOgotCi0KLXwgbWFrZVsyXTogRW50ZXJpbmcgZGlyZWN0b3J5IGAvZGlzazAvcG9reWJ1aWxkL2J1aWxkMS90bXAvd29yay9pNTg2LXBva3ktbGludXgvZGF0ZXMtMC40LjExK2dpdDArNTE0MTg1ZGMxZjY1ODgwODVmZGE0MWViNTk4OThiOTNkMDQ4N2RkNC1yMi9naXQvc3JjJ15NCi0uLi4KLXwgL2Rpc2swL3Bva3lidWlsZC9idWlsZDEvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliZXhlYy9pNTg2LXBva3ktbGludXgvZ2NjL2k1ODYtcG9reS1saW51eC80LjUuMS9sZDogZTogaW52YWxpZCBEU08gZm9yIHN5bWJvbCBgcG93QEBHTElCQ18yLjAnIGRlZmluaXRpb25eTQotfCAvZGlzazAvcG9reWJ1aWxkL2J1aWxkMS90bXAvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4L3Vzci9saWIvbGlibS5zbzogY291bGQgbm90IHJlYWQgc3ltYm9sczogQmFkIHZhbHVlXk0KLXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXNeTQotfCBtYWtlWzJdOiAqKiogW2RhdGVzXSBFcnJvciAxCi0KLQotCi18IC9kaXNrMC9wb2t5YnVpbGQvYnVpbGQxL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYmV4ZWMvaTU4Ni1wb2t5LWxpbnV4L2djYy9pNTg2LXBva3ktbGludXgvNC41LjEvbGQ6IHo6IGludmFsaWQgRFNPIGZvciBzeW1ib2wgYHBhbmdvX2xheW91dF9nZXRfZXh0ZW50cycgZGVmaW5pdGlvbgotfCAvZGlzazAvcG9reWJ1aWxkL2J1aWxkMS90bXAvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4L3Vzci9saWIvbGlicGFuZ28tMS4wLnNvOiBjb3VsZCBub3QgcmVhZCBzeW1ib2xzOiBCYWQgdmFsdWUKLXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLXwgbWFrZVsyXTogKioqIFtkYXRlc10gRXJyb3IgMQotCi0KLU5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci1EYXRlOiAyMDExLzAxLzExCi0KLVVwZGF0ZToKLVRoaXMgaXMgaWRlbnRpZmllZCBhcyBhIGxpYnRvb2wgaXNzdWUuIFdoaWxlIGNyZWF0aW5nIHRoZSBsaWJndGtkYXRlc3ZpZXcubGEgCi1maWxlLCBsaWJ0b29sIHNob3VsZCBoYXZlIGFkZGVkIHRoZXNlIG5lZWRlZCBsaWJyYXJpZXMgaW4gdGhlcmUuCi0gQSBidWcgaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBpc3N1ZTogCi0gICBodHRwOi8vYnVnemlsbGEucG9reWxpbnV4Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY0Ci1OaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotRGF0ZTogMjAxMS8wMS8xOQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGdpdC9zcmMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9zcmMvTWFrZWZpbGUuYW0KLSsrKyBnaXQvc3JjL01ha2VmaWxlLmFtCi1AQCAtMzQsNiArMzQsNiBAQCBkYXRlc19TT1VSQ0VTID0gJChwbGF0Zm9ybSkgCVwKLSAJZ2NvbmYtYnJpZGdlLmgJCVwKLSAJZ2NvbmYtYnJpZGdlLmMKLSAKLS1kYXRlc19MREFERCA9ICQoREFURVNfTElCUykgJChPV0xfTElCUykgbGliZ3RrZGF0ZXN2aWV3LmxhCi0rZGF0ZXNfTERBREQgPSAkKERBVEVTX0xJQlMpICQoT1dMX0xJQlMpIGxpYmd0a2RhdGVzdmlldy5sYSAtbG0gLWxwYW5nby0xLjAKLSAKLSBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IGNvbmZpZy5oLmluIE1ha2VmaWxlLmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2RhdGVzL3VjbGliYy1OTF9USU1FX0ZJUlNUX1dFRUtEQVktYWJzZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9kYXRlcy91Y2xpYmMtTkxfVElNRV9GSVJTVF9XRUVLREFZLWFic2VudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFkZTQ3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2RhdGVzL3VjbGliYy1OTF9USU1FX0ZJUlNUX1dFRUtEQVktYWJzZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotdWNsaWJjIGhhcyBsYW5naW5mby5oIGJ1dCBpdCBkb2VzIG5vdCBkZWZpbmUgX05MX1RJTUVfRklSU1RfV0VFS0RBWQotdGhlcmVmb3JlIHdlIGludHJvZHVjZSBhIGNoZWNrIGluIGNvbmZpZ3VyZSBmb3IgdGhlIHRoaXMgZGVmaW5lCi1hbmQgdGhlbiB3ZSBtYWtlIHN1cmUgdGhhdCB3ZSB1c2UgaXQgd2hlbiBpdCByZWFsbHkgZXhpc3RzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogZ2l0L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDExLTA3LTE4IDEwOjM0OjE1LjAwMDAwMDAwMCAtMDcwMAotKysrIGdpdC9jb25maWd1cmUuYWMJMjAxMS0wNy0xOCAxMDo1NDoyNi40MDM3OTgxODggLTA3MDAKLUBAIC05OCw2ICs5OCw4IEBACi0gCQlzcmMvbGliZ3RrZGF0ZXN2aWV3LnBjCi0gXSkKLSAKLStBQ19DSEVDS19ERUNMUyhbX05MX1RJTUVfRklSU1RfV0VFS0RBWV0sW10sW10sW1sjaW5jbHVkZSA8bGFuZ2luZm8uaD5dXSkKLSsKLSBBQ19PVVRQVVQKLSAKLSBlY2hvICIgIgotSW5kZXg6IGdpdC9zcmMvZGF0ZXNfdmlldy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvc3JjL2RhdGVzX3ZpZXcuYwkyMDExLTA3LTE4IDEwOjM0OjE1LjAwMDAwMDAwMCAtMDcwMAotKysrIGdpdC9zcmMvZGF0ZXNfdmlldy5jCTIwMTEtMDctMTggMTA6NTg6NDYuMDkzNzk4MTM2IC0wNzAwCi1AQCAtMTUwNSw3ICsxNTA1LDExIEBACi0gCXByaXYtPmRheXMgPSAxOwotIAlwcml2LT5tb250aHMgPSAwOwotIAlwcml2LT5tb250aHNfaW5fcm93ID0gNDsKLSsjaWYgSEFWRV9ERUNMX19OTF9USU1FX0ZJUlNUX1dFRUtEQVkKLSAJcHJpdi0+d2Vla19zdGFydCA9ICpubF9sYW5naW5mbyAoX05MX1RJTUVfRklSU1RfV0VFS0RBWSkgLSAxOwotKyNlbHNlCi0rCXByaXYtPndlZWtfc3RhcnQgPSAwOwotKyNlbmRpZgotIAlwcml2LT5kcmFnYm94ID0gVFJVRTsKLSAJcHJpdi0+c2luZ2xlX2NsaWNrID0gVFJVRTsKLSAJcHJpdi0+ZG91YmxlX2NsaWNrID0gRkFMU0U7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2RhdGVzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vZGF0ZXNfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDk2NWU5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vZGF0ZXNfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSBkYXRlcy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2RhdGVzX3ZpZXcuaDtlbmRsaW5lPTIyO21kNT0yOWY5MzRmMzU2ZWI5NzAzMDljZGViNjY5M2IzMTIzYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZGF0ZXNfaGlsZG9uLmM7ZW5kbGluZT0xOTttZDU9NjM5Mzg5MDQxOThiMjVkZTQyOWFiYjY1ZmJkYmRiOGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2djb25mLWJyaWRnZS5jO2VuZGxpbmU9MjI7bWQ1PWFkNzYyNmM2ZGFmNGFlYzU5MDQ3NGEyNDNmNDkxMmZhIgotCi1TUkNSRVYgPSAiYzhlMzBmYTMyMTFkY2RmY2RhNDgxODRmNGM1Nzc0NmE1NTJiOWM3YSIKLVBWID0gIjAuNC4xMStnaXQke1NSQ1BWfSIKLVBSID0gInI5IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5nbm9tZS5vcmcvJHtCUE59IFwKLSAgICAgICAgICAgZmlsZTovL2Rzb19saW5raW5nX2NoYW5nZV9idWlsZF9maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWNsaWJjLU5MX1RJTUVfRklSU1RfV0VFS0RBWS1hYnNlbnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvc3lzdGVtLXRvb2xzL3N5c3RlbS10b29scy1iYWNrZW5kcy0yLjEwLjIvc3lzdGVtLXRvb2xzLWJhY2tlbmRzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvc3lzdGVtLXRvb2xzL3N5c3RlbS10b29scy1iYWNrZW5kcy0yLjEwLjIvc3lzdGVtLXRvb2xzLWJhY2tlbmRzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDRjMzZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3N5c3RlbS10b29scy9zeXN0ZW0tdG9vbHMtYmFja2VuZHMtMi4xMC4yL3N5c3RlbS10b29scy1iYWNrZW5kcworKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLSMhIC9iaW4vc2gKLSMjIyBCRUdJTiBJTklUIElORk8KLSMgUHJvdmlkZXM6ICAgICAgICAgIHN5c3RlbS10b29scy1iYWNrZW5kcwotIyBSZXF1aXJlZC1TdGFydDogICAgJGxvY2FsX2ZzIGRidXMKLSMgUmVxdWlyZWQtU3RvcDogICAgICRsb2NhbF9mcyBkYnVzCi0jIFNob3VsZC1TdGFydDoJICAgICAkc3lzbG9nCi0jIFNob3VsZC1TdG9wOiAgICAgICAkc3lzbG9nCi0jIERlZmF1bHQtU3RhcnQ6ICAgICAyIDMgNCA1Ci0jIERlZmF1bHQtU3RvcDogICAgICAxCi0jIFNob3J0LURlc2NyaXB0aW9uOiBHbm9tZSBTeXN0ZW0gVG9vbHMgQmFja2VuZHMKLSMgRGVzY3JpcHRpb246ICAgICAgIFRoZSBHbm9tZSBTeXN0ZW0gVG9vbHMgQmFja2VuZHMgZGFlbW9uIGhhbmRsZXMgcm9vdC1uZWVkZWQKLSMgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMgdG8gY29uZmlndXJlIHlvdXIgbWFjaGluZSB3aXRoIHRoZSBHbm9tZSBTeXN0ZW0KLSMJCSAgICAgVG9vbHMuCi0jIyMgRU5EIElOSVQgSU5GTwotCi1QQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2Jpbjovc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbgotREFFTU9OPS91c3IvYmluL3N5c3RlbS10b29scy1iYWNrZW5kcwotUElERElSPS92YXIvcnVuCi1QSURGSUxFPSRQSURESVIvc3lzdGVtLXRvb2xzLWJhY2tlbmRzLnBpZAotTkFNRT1zeXN0ZW0tdG9vbHMtYmFja2VuZHMKLURFU0M9IlN5c3RlbSBUb29scyBCYWNrZW5kcyIKLQotdGVzdCAteCAkREFFTU9OIHx8IGV4aXQgMAotCi1zZXQgLWUKLQotZG9fc3RhcnQoKSB7Ci0gICAgZWNobyAiU3RhcnRpbmcgJERFU0MiCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXN0YXJ0YXMgJERBRU1PTiAtLXF1aWV0IC0tcGlkZmlsZSAkUElERklMRQotfQotCi1kb19zdG9wKCkgewotICAgIGVjaG8gIlN0b3BwaW5nICRERVNDIgotICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLW9rbm9kbyAtLXF1aWV0IC0tcGlkZmlsZSAkUElERklMRSAtLXN0YXJ0YXMgJERBRU1PTgotfQotCi1jYXNlICIkMSIgaW4KLSAgc3RhcnQpCi0gICAgZG9fc3RhcnQKLSAgICA7OwotICBzdG9wKQotICAgIGRvX3N0b3AKLSAgICA7OwotICAjcmVsb2FkKQotICAgICMKLSAgICAjIElmIHRoZSBkYWVtb24gY2FuIHJlbG9hZCBpdHMgY29uZmlnIGZpbGVzIG9uIHRoZSBmbHkKLSAgICAjIGZvciBleGFtcGxlIGJ5IHNlbmRpbmcgaXQgU0lHSFVQLCBkbyBpdCBoZXJlLgotICAgICMKLSAgICAjIElmIHRoZSBkYWVtb24gcmVzcG9uZHMgdG8gY2hhbmdlcyBpbiBpdHMgY29uZmlnIGZpbGUKLSAgICAjIGRpcmVjdGx5IGFueXdheSwgbWFrZSB0aGlzIGEgZG8tbm90aGluZyBlbnRyeS4KLSAgICAjCi0gICAgIyBlY2hvICJSZWxvYWRpbmcgJERFU0MgY29uZmlndXJhdGlvbiBmaWxlcy4iCi0gICAgIyBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1zaWduYWwgMSAtLXF1aWV0IC0tcGlkZmlsZSBcCi0gICAgIyAgIC92YXIvcnVuLyROQU1FLnBpZCAtLWV4ZWMgJERBRU1PTgotICAjOzsKLSAgcmVzdGFydHxmb3JjZS1yZWxvYWQpCi0gICAgIwotICAgICMgICBJZiB0aGUgInJlbG9hZCIgb3B0aW9uIGlzIGltcGxlbWVudGVkLCBtb3ZlIHRoZSAiZm9yY2UtcmVsb2FkIgotICAgICMgICBvcHRpb24gdG8gdGhlICJyZWxvYWQiIGVudHJ5IGFib3ZlLiBJZiBub3QsICJmb3JjZS1yZWxvYWQiIGlzCi0gICAgIyAgIGp1c3QgdGhlIHNhbWUgYXMgInJlc3RhcnQiLgotICAgICMKLSAgICBkb19zdG9wCi0gICAgc2xlZXAgNQotICAgIGRvX3N0YXJ0Ci0gICAgOzsKLSAgKikKLSAgICBOPS9ldGMvaW5pdC5kLyROQU1FCi0gICAgZWNobyAiVXNhZ2U6ICROIHtzdGFydHxzdG9wfHJlc3RhcnR8cmVsb2FkfGZvcmNlLXJlbG9hZHxzdGF0dXN9IiA+JjIKLSAgICBleGl0IDEKLSAgICA7OwotZXNhYwotCi1leGl0IDAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvdGhlbWVzL2dub21lLXRoZW1lcy9kcm9wLWxvY2FsZWRpci1vdmVycmlkZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RoZW1lcy9nbm9tZS10aGVtZXMvZHJvcC1sb2NhbGVkaXItb3ZlcnJpZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzNzQ4MmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvdGhlbWVzL2dub21lLXRoZW1lcy9kcm9wLWxvY2FsZWRpci1vdmVycmlkZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLUNhdXNlcyBsb2NhbGUgZmlsZSB0byBiZSBpbnN0YWxsZWQgaW4gL3Vzci9sb2NhbGUgaW5zdGVhZCBvZiAvdXNyL3NoYXJlL2xvY2FsZQotCi1BcHBseSB0aGUgc2FtZSBmaXggYXMgaW4gZXZvbHV0aW9uLWRhdGEtc2VydmVyOgotaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvY29tbWl0L2NvbmZpZ3VyZS5hYz9pZD1lYzQ2Yzc2M2U5MzQyZjYwNGI3MjI4YzY2MDYyM2QyNzFkZmViMTAxCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC11TnIgZ25vbWUtdGhlbWVzLTIuMzIuMS5vcmlnL2NvbmZpZ3VyZS5pbiBnbm9tZS10aGVtZXMtMi4zMi4xL2NvbmZpZ3VyZS5pbgotLS0tIGdub21lLXRoZW1lcy0yLjMyLjEub3JpZy9jb25maWd1cmUuaW4JMjAxNS0wOS0xOCAxNTowMToyNS4xNTIwNTU3MjkgKzAyMDAKLSsrKyBnbm9tZS10aGVtZXMtMi4zMi4xL2NvbmZpZ3VyZS5pbgkyMDE1LTA5LTE4IDE1OjA5OjAzLjMxMjA3MjE1NiArMDIwMAotQEAgLTE5LDExICsxOSw2IEBACi0gCi0gQU1fR0xJQl9HTlVfR0VUVEVYVAotIAotLSMgQU1fR0xJQl9HTlVfR0VUVEVYVCBhYm92ZSBzdWJzdC4gJERBVEFESVJOQU1FCi0tIyB0aGlzIGlzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlICoue21vLGdtb30gZmlsZXMgYXJlIGluc3RhbGxlZAotLWxvY2FsZWRpcj0nJHtwcmVmaXh9LyR7REFUQURJUk5BTUV9L2xvY2FsZScKLS1BQ19TVUJTVChsb2NhbGVkaXIpCi0tCi0gIyBXb3JrYXJvdW5kIHRvIG1ha2UgYWNsb2NhbCBnZXQgdGhlIHJpZ2h0IGZsYWdzCi0gQUNfU1VCU1QoQUNMT0NBTF9BTUZMQUdTLCAiXCR7QUNMT0NBTF9GTEFHU30iKQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvdGhlbWVzL2dub21lLXRoZW1lcy9pY29ucGF0aC1vcHRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS90aGVtZXMvZ25vbWUtdGhlbWVzL2ljb25wYXRoLW9wdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI0MDk2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS90aGVtZXMvZ25vbWUtdGhlbWVzL2ljb25wYXRoLW9wdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotVGhlIHBhdGNoIGlzIHBvcnRlZCBmcm9tIHNhdG8taWNvbi10aGVtZS4KLQotcGtnLWNvbmZpZyB3aWxsIG9ubHkgc2VhcmNoIHRoZSB0YXJnZXQgc3lzcm9vdCBhbmQgd2Ugd2FudCB0aGUgbmF0aXZlIHNjcmlwdC4gVGhpcyAKLXBhdGNoIGFkZHMgYW4gb3B0aW9uIHRvIGFsbG93IHRoZSBwYXRoIHRvIHRoZSB0b29sIHRvIGJlIHNwZWNpZmllZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmluIHwgICAyNiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggNWY3YTE4Yy4uZThmYzMxZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtNzQsMTYgKzc0LDIyIEBAIEFDX0FSR19FTkFCTEUoW2ljb24tbWFwcGluZ10sCi0gSUNPTk1BUD0idHJ1ZSIKLSBpZiB0ZXN0ICJ4JGVuYWJsZV9tYXBwaW5nIiAhPSAieG5vIjsgdGhlbgotICAgIFVUSUxTX1JFUVVJUkVEPTAuOC43Ci0tCi0tICAgQUNfTVNHX0NIRUNLSU5HKFtpY29uLW5hbWluZy11dGlscyA+PSAkVVRJTFNfUkVRVUlSRURdKQotLSAgIFBLR19DSEVDS19FWElTVFMoaWNvbi1uYW1pbmctdXRpbHMgPj0gJFVUSUxTX1JFUVVJUkVELCBoYXZlX3V0aWxzPXllcywgaGF2ZV91dGlscz1ubykKLS0gICBpZiB0ZXN0ICJ4JGhhdmVfdXRpbHMiID0gInh5ZXMiOyB0aGVuCi0tICAgICAgVVRJTFNfUEFUSD0iYCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cHJvZ3JhbV9wYXRoIGljb24tbmFtaW5nLXV0aWxzYCIKLS0gICAgICBJQ09OTUFQPSIkVVRJTFNfUEFUSC9pY29uLW5hbWUtbWFwcGluZyIKLS0gICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotLSAgIGVsc2UKLS0JQUNfTVNHX1JFU1VMVChbbm9dKQotLSAgIAlBQ19NU0dfRVJST1IoW2ljb24tbmFtaW5nLXV0aWxzID49ICRVVElMU19SRVFVSVJFRCBpcyByZXF1aXJlZCB0byBidWlsZCBhbmQgaW5zdGFsbCBnbm9tZS10aGVtZXNdKQotKyAgIFBLR19QUk9HX1BLR19DT05GSUcoKQotKyAgIEFDX0FSR19XSVRIKGljb25tYXAsCi0rICAgCSAgICBBQ19IRUxQX1NUUklORyhbLS13aXRoLWljb25tYXA9PGRpcj5dLCBbVGhlIGxvY2F0aW9uIG9mIHRoZSBpY29uLW5hbWUtbWFwcGluZyBzY3JpcHQgdG8gdXNlXSksCi0rICAgCSAgICBJQ09OTUFQPSR3aXRodmFsLCBJQ09OTUFQPSIiKQotKyAgIGlmIHRlc3QgIngkSUNPTk1BUCIgPSAieCI7IHRoZW4KLSsgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ljb24tbmFtaW5nLXV0aWxzID49ICRVVElMU19SRVFVSVJFRF0pCi0rICAgICAgUEtHX0NIRUNLX0VYSVNUUyhpY29uLW5hbWluZy11dGlscyA+PSAkVVRJTFNfUkVRVUlSRUQsIGhhdmVfdXRpbHM9eWVzLCBoYXZlX3V0aWxzPW5vKQotKyAgICAgIGlmIHRlc3QgIngkaGF2ZV91dGlscyIgPSAieHllcyI7IHRoZW4KLSsgICAgICAgICBVVElMU19QQVRIPSJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcm9ncmFtX3BhdGggaWNvbi1uYW1pbmctdXRpbHNgIgotKyAgICAgICAgIElDT05NQVA9IiRVVElMU19QQVRIL2ljb24tbmFtZS1tYXBwaW5nIgotKwotKyAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0rICAgICAgZWxzZQotKyAgICAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSsgICAgICAgICBBQ19NU0dfRVJST1IoW2ljb24tbmFtaW5nLXV0aWxzID49ICRVVElMU19SRVFVSVJFRCBpcyByZXF1aXJlZCB0byBidWlsZCBhbmQgaW5zdGFsbCBnbm9tZS10aGVtZXMiXSkKLSsgICAgICBmaQotICAgIGZpCi0gZmkKLSBBQ19TVUJTVChJQ09OTUFQKQotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RoZW1lcy9nbm9tZS10aGVtZXNfMi4zMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvdGhlbWVzL2dub21lLXRoZW1lc18yLjMyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhODlmNDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvdGhlbWVzL2dub21lLXRoZW1lc18yLjMyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIHRoZW1lcyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yYjU0M2RjOTdlYjc1OTRkMDI2YWYzOWQ5YjU0MjA0YiIKLQotUFIgPSAicjMiCi0KLVNFQ1RJT04gPSAieDExL2dub21lIgotREVQRU5EUyA9ICJndGstZW5naW5lcyBpY29uLW5hbWluZy11dGlscyBpY29uLW5hbWluZy11dGlscy1uYXRpdmUgXAotICAgICAgICAgICBnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUgbGlieG1sLXNpbXBsZS1wZXJsLW5hdGl2ZSBcCi0gICAgICAgICAgIGdsaWItMi4wLW5hdGl2ZSBcCi0iCi1SREVQRU5EU18ke1BOfSA9ICJhZHdhaXRhLWljb24tdGhlbWUiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtYWxsLXRoZW1lcyBcCi0gICAgLS13aXRoLWljb25tYXA9JHtTVEFHSU5HX0xJQkVYRUNESVJfTkFUSVZFfS9pY29uLW5hbWUtbWFwcGluZyBcCi0iCi0KLWluaGVyaXQgZ25vbWViYXNlIHBlcmxuYXRpdmUKLQotUEFDS0FHRVMgPSsgIiBnbm9tZS10aGVtZS1jcnV4IGdub21lLXRoZW1lLWhpZ2hjb250cmFzdCBnbm9tZS10aGVtZS1oaWdoY29udHJhc3RpbnZlcnNlIGdub21lLXRoZW1lLWhpZ2hjb250cmFzdGxhcmdlcHJpbnQgZ25vbWUtdGhlbWUtaGlnaGNvbnRyYXN0bGFyZ2VwcmludGludmVyc2UgZ25vbWUtdGhlbWUtbGFyZ2VwcmludCBnbm9tZS10aGVtZS1taXN0IgotRklMRVNfZ25vbWUtdGhlbWUtY3J1eCA9ICIke2RhdGFkaXJ9L3RoZW1lcy9DcnV4ICR7ZGF0YWRpcn0vaWNvbnMvQ3J1eCIKLUZJTEVTX2dub21lLXRoZW1lLWhpZ2hjb250cmFzdCA9ICIke2RhdGFkaXJ9L3RoZW1lcy9IaWdoQ29udHJhc3QgJHtkYXRhZGlyfS9pY29ucy9IaWdoQ29udHJhc3QiCi1GSUxFU19nbm9tZS10aGVtZS1oaWdoY29udHJhc3RpbnZlcnNlID0gIiR7ZGF0YWRpcn0vdGhlbWVzL0hpZ2hDb250cmFzdEludmVyc2UgJHtkYXRhZGlyfS9pY29ucy9IaWdoQ29udHJhc3RJbnZlcnNlIgotRklMRVNfZ25vbWUtdGhlbWUtaGlnaGNvbnRyYXN0bGFyZ2VwcmludCA9ICIke2RhdGFkaXJ9L3RoZW1lcy9IaWdoQ29udHJhc3RMYXJnZVByaW50ICR7ZGF0YWRpcn0vaWNvbnMvSGlnaENvbnRyYXN0TGFyZ2VQcmludCIKLUZJTEVTX2dub21lLXRoZW1lLWhpZ2hjb250cmFzdGxhcmdlcHJpbnRpbnZlcnNlID0gIiR7ZGF0YWRpcn0vdGhlbWVzL0hpZ2hDb250cmFzdExhcmdlUHJpbnRJbnZlcnNlICR7ZGF0YWRpcn0vaWNvbnMvSGlnaENvbnRyYXN0TGFyZ2VQcmludEludmVyc2UiCi1GSUxFU19nbm9tZS10aGVtZS1sYXJnZXByaW50ID0gIiR7ZGF0YWRpcn0vdGhlbWVzL0xhcmdlUHJpbnQgJHtkYXRhZGlyfS9pY29ucy9MYXJnZVByaW50IgotRklMRVNfZ25vbWUtdGhlbWUtbWlzdCA9ICIke2RhdGFkaXJ9L3RoZW1lcy9NaXN0ICR7ZGF0YWRpcn0vaWNvbnMvTWlzdCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdGhlbWVzICR7ZGF0YWRpcn0vaWNvbnMiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9pY29ucGF0aC1vcHRpb24ucGF0Y2ggXAotICAgIGZpbGU6Ly9kcm9wLWxvY2FsZWRpci1vdmVycmlkZS5wYXRjaCBcCi0iCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0MWRiOWUzY2IyNWQzNWFmMjY3NWM1OTllNjc5NDRkMSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjg2MDFlZTI0YzJlMDk2NTkzMjIxY2JkNmViZGI2Njg2MDQyMjI1YTAzYzAyYTAxYzBkNjdjMTYzZjlmZWJkMWEiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvZmxvcmVuY2UvZmxvcmVuY2VfMC42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2Zsb3JlbmNlXzAuNi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWI3ZDBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvZmxvcmVuY2UvZmxvcmVuY2VfMC42LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkZsb3JlbmNlIGlzIGEgdmlydHVhbCBrZXlib2FyZCBmb3IgdG91Y2ggc2NyZWVucyIKLUhPTUVQQUdFID0gImh0dHA6Ly9mbG9yZW5jZS5zb3VyY2Vmb3JnZS5uZXQvZW5nbGlzaC5odG1sIgotCi0jTk9USUNFOiBJZiBmbG9yZW5jZSBjYW4ndCBmaW5kIGl0cyBnY29uZiBzZXR0aW5ncywgeW91IG5lZWQgdG8gc3RhcnQgZmxvcmVuY2Ugd2l0aCAtLWNvbmZpZyBmb3Igb25lIHRpbWUgYW5kIHNhdmUgdGhlIGNvbmZpZ3VyYXRpb24gb25jZS4KLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotCi1ERVBFTkRTID0gImd0ayszIGxpYnhtbDIgbGliZ2xhZGUgbGlicnN2ZyBsaWJ4dHN0IGdjb25mIGdjb25mLW5hdGl2ZSBjYWlybyBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtZG9jLXV0aWxzIGxpYm5vdGlmeSBnc3RyZWFtZXIxLjAiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtQTn0vJHtQTn0vJHtQVn0vJHtQTn0tJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4Nzc1MDUxZDczNTJmNzVkZWM1YTg2ZGM5OTY0ZThlMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MjI5OTJmZDA3ZDI4NWJlNzNjY2U3MjFhMjAzZTIyY2VlMjEzMjBkNjliMGZkYTE1NzljZTYyOTQ0YzUwOTFlIgotCi1pbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIGdjb25mIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXNjcm9sbGtlZXBlciAtLXdpdGhvdXQtZG9jcyAtLXdpdGhvdXQtYXQtc3BpIC0td2l0aG91dC1wYW5lbGFwcGxldCAtLXdpdGhvdXQteHJlY29yZCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQva2V5YmluZGVyL2tleWJpbmRlcl8zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2tleWJpbmRlci9rZXliaW5kZXJfMy4wLmJiCmluZGV4IGQ2NzQ0YTMuLjBhMGEzZTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQva2V5YmluZGVyL2tleWJpbmRlcl8zLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9rZXliaW5kZXIva2V5YmluZGVyXzMuMC5iYgpAQCAtMTgsNyArMTgsOSBAQAogCiBSREVQRU5EU18ke1BOfSA9ICJndGsrIgogCi1pbmhlcml0IGF1dG90b29scyBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKIAl0b3VjaCAke1N9L0NoYW5nZUxvZwogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmRfMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L29uYm9hcmQvb25ib2FyZF8xLjQuMS5iYgppbmRleCAxMDc2NWVlLi40ZTQ5YmVjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L29uYm9hcmQvb25ib2FyZF8xLjQuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L29uYm9hcmQvb25ib2FyZF8xLjQuMS5iYgpAQCAtMTAsNyArMTAsOSBAQAogU1JDX1VSSVttZDVzdW1dID0gIjFhMmZiZTgyZTkzNGY1YjM3ODQxZDE3ZmY1MWU4MGU4IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAxY2FlMWFjNWIxZWYxYWI5ODViZDJkMmQ3OWRlZDZmYzk5ZWUwNGIxNTM1Y2MxYmIxOTFlNDNhMjMxYTM4NjUiCiAKLWluaGVyaXQgc2V0dXB0b29sczMgcGtnY29uZmlnIGd0ay1pY29uLWNhY2hlIGdzZXR0aW5ncworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgc2V0dXB0b29sczMgcGtnY29uZmlnIGd0ay1pY29uLWNhY2hlIGdzZXR0aW5ncworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBGSUxFU18ke1BOfSArPSAiIFwKICAgICAke2RhdGFkaXJ9L2RidXMtMSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvZmlsZXMvOTB0cmFja2VyIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC90cmFja2VyL2ZpbGVzLzkwdHJhY2tlcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU5NGI5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvZmlsZXMvOTB0cmFja2VyCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0jIS9iaW4vc2gKLQotL3Vzci9iaW4vdHJhY2tlcmQgLW0gJgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvZmlsZXMvdHJhY2tlci1kYnVzLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvZmlsZXMvdHJhY2tlci1kYnVzLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5N2Y0OWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC90cmFja2VyL2ZpbGVzL3RyYWNrZXItZGJ1cy5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj10cmFja2VyIERCdXMgc2Vzc2lvbiBidXMgaGFuZGxlcgotQmVmb3JlPXRyYWNrZXItc3RvcmUuc2VydmljZQotQWZ0ZXI9ZGJ1cy5zZXJ2aWNlCi1SZXF1aXJlcz1kYnVzLnNlcnZpY2UKLUJpbmRUbz10cmFja2VyLXN0b3JlLnNlcnZpY2UKLQotW1NlcnZpY2VdCi1UeXBlPWZvcmtpbmcKLUVudmlyb25tZW50RmlsZT0tL3RtcC90cmFja2VyLmVudgotRXhlY1N0YXJ0UHJlPUBCQVNFX0JJTkRJUkAvcm0gLXJmIC90bXAvdHJhY2tlci5lbnYKLUV4ZWNTdGFydD0vYmluL3NoIC1jICdlY2hvICJEQlVTX1NFU1NJT05fQlVTX0FERFJFU1M9YGRidXMtZGFlbW9uIC0tZm9yayAtLXNlc3Npb24gLS1wcmludC1hZGRyZXNzYCIgPiAvdG1wL3RyYWNrZXIuZW52JwotCi1bSW5zdGFsbF0KLVdhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvZmlsZXMvdHJhY2tlci1taW5lci1mcy5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC90cmFja2VyL2ZpbGVzL3RyYWNrZXItbWluZXItZnMuc2VydmljZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRkOWExZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvZmlsZXMvdHJhY2tlci1taW5lci1mcy5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj10cmFja2VyLW1pbmVyLWZzCi1BZnRlcj1zeXNsb2cudGFyZ2V0IGxvY2FsLWZzLnRhcmdldCB1ZGV2LnNlcnZpY2UgZGJ1cy5zZXJ2aWNlIHRyYWNrZXItc3RvcmUuc2VydmljZQotUmVxdWlyZXM9dHJhY2tlci1zdG9yZS5zZXJ2aWNlCi0KLVtTZXJ2aWNlXQotRW52aXJvbm1lbnQ9SE9NRT0vaG9tZS9yb290Ci1FbnZpcm9ubWVudEZpbGU9LS90bXAvdHJhY2tlci5lbnYKLUV4ZWNTdGFydD1ATElCRVhFQ0RJUkAvdHJhY2tlci1taW5lci1mcwotCi1bSW5zdGFsbF0KLVdhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvZmlsZXMvdHJhY2tlci1zdG9yZS5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC90cmFja2VyL2ZpbGVzL3RyYWNrZXItc3RvcmUuc2VydmljZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUwMzdmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvZmlsZXMvdHJhY2tlci1zdG9yZS5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj10cmFja2VyLXN0b3JlCi1BZnRlcj1zeXNsb2cudGFyZ2V0IGxvY2FsLWZzLnRhcmdldCBkYnVzLnNlcnZpY2UKLVJlcXVpcmVzPWRidXMuc2VydmljZSB0cmFja2VyLWRidXMuc2VydmljZQotQmluZFRvPXRyYWNrZXItZGJ1cy5zZXJ2aWNlCi0KLVtTZXJ2aWNlXQotRW52aXJvbm1lbnRGaWxlPS0vdG1wL3RyYWNrZXIuZW52Ci1FeGVjU3RhcnQ9QExJQkVYRUNESVJAL3RyYWNrZXItc3RvcmUKLQotW0luc3RhbGxdCi1XYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZV8xLjExMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdXNlcm1vZGUvdXNlcm1vZGVfMS4xMTEuYmIKaW5kZXggYzJkNzMyOC4uM2FlYTJlNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZV8xLjExMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlXzEuMTExLmJiCkBAIC0yMyw3ICsyMyw4IEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCiAKIEVYVFJBX09FTUFLRSArPSAiSU5TVEFMTD0naW5zdGFsbCAtcCciCiAKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgcGFtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3NpdGUvcmlzY3Y2NC1saW51eCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9zaXRlL3Jpc2N2NjQtbGludXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNhNDFlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9zaXRlL3Jpc2N2NjQtbGludXgKQEAgLTAsMCArMSwxNiBAQAorIyBsaWJpZGwKK2xpYklETF9jdl9sb25nX2xvbmdfZm9ybWF0PSR7bGliSURMX2N2X2xvbmdfbG9uZ19mb3JtYXQ9bGx9CisKKyMgT1JCaXQyCithY19jdl9hbGlnbm9mX0NPUkJBX2Jvb2xlYW49MQorYWNfY3ZfYWxpZ25vZl9DT1JCQV9jaGFyPTEKK2FjX2N2X2FsaWdub2ZfQ09SQkFfZG91YmxlPTgKK2FjX2N2X2FsaWdub2ZfQ09SQkFfZmxvYXQ9NAorYWNfY3ZfYWxpZ25vZl9DT1JCQV9sb25nPTQKK2FjX2N2X2FsaWdub2ZfQ09SQkFfbG9uZ19kb3VibGU9OAorYWNfY3ZfYWxpZ25vZl9DT1JCQV9sb25nX2xvbmc9OAorYWNfY3ZfYWxpZ25vZl9DT1JCQV9vY3RldD0xCithY19jdl9hbGlnbm9mX0NPUkJBX3BvaW50ZXI9NAorYWNfY3ZfYWxpZ25vZl9DT1JCQV9zaG9ydD0yCithY19jdl9hbGlnbm9mX0NPUkJBX3N0cnVjdD0xCithY19jdl9hbGlnbm9mX0NPUkJBX3djaGFyPTIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9SRUFETUUKaW5kZXggYjdkYmZlZi4uNzE4NTM4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9SRUFETUUKQEAgLTEyLDcgKzEyLDcgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vZS1jb3JlLmdpdAotYnJhbmNoOiByb2NrbworYnJhbmNoOiBtYXN0ZXIKIHJldmlzaW9uOiBIRUFECiAKIApAQCAtMjAsMTMgKzIwLDEyIEBACiAtLS0tLS0tLS0tLQogCiBTZW5kIHBhdGNoZXMgLyBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnCi13aXRoICdbbWV0YS1pbml0cmFtZnNdW3JvY2tvXScgaW4gdGhlIHN1YmplY3QuCit3aXRoICdbbWV0YS1pbml0cmFtZnNdJyBpbiB0aGUgc3ViamVjdC4KIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNpbmcgc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtaW5pdHJhbWZzXVtyb2Nrb11bUEFUQ0gnCisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtaW5pdHJhbWZzXVtQQVRDSCcKIAotcm9ja28gQnJhbmNoIE1haW50YWluZXI6Ci1Bcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorSW50ZXJtIGxheWVyIG1haW50YWluZXI6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CiAKIAogTGljZW5zZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL2NvbmYvbGF5ZXIuY29uZgppbmRleCBkOWI3YzRjLi45N2FmYzkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTYsNiArMTYsOCBAQAogQkJGSUxFX1BSSU9SSVRZX21ldGEtaW5pdHJhbWZzID0gIjgiCiBMQVlFUkRFUEVORFNfbWV0YS1pbml0cmFtZnMgPSAiY29yZSIKIAorTEFZRVJTRVJJRVNfQ09NUEFUX21ldGEtaW5pdHJhbWZzID0gInN1bW8iCisKIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIiBcCiAgIGRyYWN1dC0+dmlydHVhbC9rZXJuZWwgXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9pbWFnZXMvaW5pdHJhbWZzLWtleGVjYm9vdC1rbGliYy1pbWFnZS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW1hZ2VzL2luaXRyYW1mcy1rZXhlY2Jvb3Qta2xpYmMtaW1hZ2UuYmIKaW5kZXggNmI4NDViZC4uM2E4ZDlmNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9pbWFnZXMvaW5pdHJhbWZzLWtleGVjYm9vdC1rbGliYy1pbWFnZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2ltYWdlcy9pbml0cmFtZnMta2V4ZWNib290LWtsaWJjLWltYWdlLmJiCkBAIC04LDUgKzgsNSBAQAogCiBweXRob24gKCkgewogICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpID09ICJuaW9zMiI6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInbmlvczInIG5vdCBzdXBwb3J0ZWQgYXJjaCIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIiduaW9zMicgbm90IHN1cHBvcnRlZCBhcmNoIikKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9kcmFjdXQvZHJhY3V0X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9kcmFjdXQvZHJhY3V0X2dpdC5iYgppbmRleCBlMTg0MDlkLi5jY2Y5ZjZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZHJhY3V0L2RyYWN1dF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2RyYWN1dC9kcmFjdXRfZ2l0LmJiCkBAIC02LDEwICs2LDEwIEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAogUEUgPSAiMSIKLVBWID0gIjA0NStnaXQke1NSQ1JFVn0iCitQViA9ICIwNDYrZ2l0JHtTUkNSRVZ9IgogCi0jIHYwNDUgdGFnCi1TUkNSRVYgPSAiMzljOWI2N2Y4NjE0NTk1M2FhMzBkZWY5ZDc3YzY4NTk3YTRjY2ZlOCIKKyMgdjA0NiB0YWcKK1NSQ1JFViA9ICJhMDc5OWZmYjU1NDQ4N2EzNzBjMmExYWRhZmFlZGQyMDIxYjZkYzhjIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2Jvb3QvZHJhY3V0L2RyYWN1dC5naXQ7cHJvdG9jb2w9aHR0cCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXV0aWwuaC1pbmNsdWRlLXN5cy1yZWcuaC13aGVuLWxpYmMtZ2xpYmMucGF0Y2ggXAogICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZ3J1YmJ5L2dydWJieV84LjQwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnlfOC40MC5iYgppbmRleCA1YTk5ODI0Li5kYzNhNzBiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZ3J1YmJ5L2dydWJieV84LjQwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9ncnViYnkvZ3J1YmJ5XzguNDAuYmIKQEAgLTQsNiArNCw3IEBACiB6aXBsIChzMzkwKSBib290IGxvYWRlcnMuIEl0IGlzIHByaW1hcmlseSBkZXNpZ25lZCB0byBiZSB1c2VkIGZyb20gc2NyaXB0cyB3aGljaCBpbnN0YWxsIFwKIG5ldyBrZXJuZWxzIGFuZCBuZWVkIHRvIGZpbmQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgYm9vdCBlbnZpcm9ubWVudC4gXAogIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JoYm9vdC9ncnViYnkiCiBMSUNFTlNFID0gIkdQTHYyKyIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODkyZjU2OWE1NTViYTljMDdhNTY4YTdjMGM0ZmE2M2EiCkBAIC0xMSwxOCArMTIsMTUgQEAKIERFUEVORFMgPSAicG9wdCB1dGlsLWxpbnV4IgogREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJleGVjaW5mbyIKIAotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvJHtCUE59L2FyY2hpdmUvJHtQVn0tMS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQTn0tJHtQVn0tMS50YXIuZ3ogXAorUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICI3OWM1Y2ZhMDJjNTY3ZWZkYzViYjE4Y2RkNTg0Nzg5ZTJlMzVhYTIzIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoYm9vdC9ncnViYnkuZ2l0O3Byb3RvY29sPWh0dHBzOyBcCiAgICAgICAgICAgIGZpbGU6Ly9ncnViYnktcmVuYW1lLWdydWIyLWVkaXRlbnYtdG8tZ3J1Yi1lZGl0ZW52LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hbm90aGVyLXZhcmlhYmxlLUxJQlMtdG8tcHJvdmlkZXMtbGlicmFyaWVzLWZyb20ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1pbmNsdWRlLXBhdGhzLmgtZm9yLV9QQVRIX01PVU5URUQucGF0Y2ggXAogICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIxMDA1OTA3YjI3NWQ2ZDkzMzY4ZDA0NTI3NDUzN2Q4NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NWYxYzY3ODQ4NGY3NGM4OTc4ZTg2NDM0NTE1OTQ5NjdkZWZjZTQ2M2E4NmMzNWNiMWVlNTZkMTI3NjdhOWRmIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LSR7UFZ9LTEiCi0KIFJERVBFTkRTXyR7UE59ICs9ICJkcmFjdXQiCiAKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtRGVmaW5lLWluXy1zdHJ1Y3RzLWZvci1ub24tZ2xpYmMtc3lzdGVtLWxpYnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1EZWZpbmUtaW5fLXN0cnVjdHMtZm9yLW5vbi1nbGliYy1zeXN0ZW0tbGlicy5wYXRjaAppbmRleCA4ZDFlYzY5Li5lN2EwY2NlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1EZWZpbmUtaW5fLXN0cnVjdHMtZm9yLW5vbi1nbGliYy1zeXN0ZW0tbGlicy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1EZWZpbmUtaW5fLXN0cnVjdHMtZm9yLW5vbi1nbGliYy1zeXN0ZW0tbGlicy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZjQxNGRlYTEzMTZhNDhhYmEzZThlMjkzMjAxZWJkNTE2NTJkM2VmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTdlM2E2MGIyMzg5MTkwNTczM2JmZWE3YTFjYjc4YzIzNzdjYzUyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDkgSnVsIDIwMTcgMTU6MTc6MjkgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gRGVmaW5lIGluXyogc3RydWN0cyBmb3Igbm9uLWdsaWJjIHN5c3RlbSBsaWJzCkBAIC0xMCwxNCArMTAsMzggQEAKIHRvIGluZmVyIHRoYXQgdGhlc2Ugc3RydWN0cyBzaG91bGQgYmUgZGVmaW5lZCBpbiBsaW51eC9pbi5oCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB1c3IvaW5jbHVkZS9uZXRpbmV0L2luLmggfCAzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKQogCi1JbmRleDogZ2l0L3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotKysrIGdpdC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKKy0tLQorIHVzci9pbmNsdWRlL25ldC9pZi5oICAgICB8IDExICsrKysrKysrKysrCisgdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS91c3IvaW5jbHVkZS9uZXQvaWYuaCBiL3Vzci9pbmNsdWRlL25ldC9pZi5oCitpbmRleCAxMTZhMTc2Li42MjQ2YjEyIDEwMDY0NAorLS0tIGEvdXNyL2luY2x1ZGUvbmV0L2lmLmgKKysrKyBiL3Vzci9pbmNsdWRlL25ldC9pZi5oCitAQCAtMSw2ICsxLDE3IEBACisgI2lmbmRlZiBfTkVUX0lGX0gKKyAjZGVmaW5lIF9ORVRfSUZfSAorIAorKyNpZm5kZWYgX19HTElCQ19fCisrI2luY2x1ZGUgPGxpbnV4L2xpYmMtY29tcGF0Lmg+CisrI3VuZGVmIF9fVUFQSV9ERUZfSUZfSUZSRVEKKysjZGVmaW5lIF9fVUFQSV9ERUZfSUZfSUZSRVEgICAgICAgICAgICAxCisrI3VuZGVmIF9fVUFQSV9ERUZfSUZfSUZOQU1TSVoKKysjZGVmaW5lIF9fVUFQSV9ERUZfSUZfSUZOQU1TSVogICAgICAgICAxCisrI3VuZGVmIF9fVUFQSV9ERUZfSUZfSUZNQVAKKysjZGVmaW5lIF9fVUFQSV9ERUZfSUZfSUZNQVAgICAgICAgICAgICAxCisrI3VuZGVmIF9fVUFQSV9ERUZfSUZfTkVUX0RFVklDRV9GTEFHUworKyNkZWZpbmUgX19VQVBJX0RFRl9JRl9ORVRfREVWSUNFX0ZMQUdTIDEKKysjZW5kaWYKKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8bGludXgvaWYuaD4KK2RpZmYgLS1naXQgYS91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmggYi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKK2luZGV4IDI5NTJiYjIuLjBjOTViYzkgMTAwNjQ0CistLS0gYS91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKKysrKyBiL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAogQEAgLTUsNiArNSw0MiBAQAogICNpZm5kZWYgX05FVElORVRfSU5fSAogICNkZWZpbmUgX05FVElORVRfSU5fSApAQCAtNjEsMjUgKzg1LDMgQEAKICAjaW5jbHVkZSA8a2xpYmMvZXh0ZXJuLmg+CiAgI2luY2x1ZGUgPHN0ZGludC5oPgogICNpbmNsdWRlIDxlbmRpYW4uaD4JCS8qIE11c3QgYmUgaW5jbHVkZWQgKmJlZm9yZSogPGxpbnV4L2luLmg+ICovCi1JbmRleDogZ2l0L3Vzci9pbmNsdWRlL25ldC9pZi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdXNyL2luY2x1ZGUvbmV0L2lmLmgKLSsrKyBnaXQvdXNyL2luY2x1ZGUvbmV0L2lmLmgKLUBAIC0xLDYgKzEsMTcgQEAKLSAjaWZuZGVmIF9ORVRfSUZfSAotICNkZWZpbmUgX05FVF9JRl9ICi0gCi0rI2lmbmRlZiBfX0dMSUJDX18KLSsjaW5jbHVkZSA8bGludXgvbGliYy1jb21wYXQuaD4KLSsjdW5kZWYgX19VQVBJX0RFRl9JRl9JRlJFUQotKyNkZWZpbmUgX19VQVBJX0RFRl9JRl9JRlJFUSAgICAgICAgICAgIDEKLSsjdW5kZWYgX19VQVBJX0RFRl9JRl9JRk5BTVNJWgotKyNkZWZpbmUgX19VQVBJX0RFRl9JRl9JRk5BTVNJWiAgICAgICAgIDEKLSsjdW5kZWYgX19VQVBJX0RFRl9JRl9JRk1BUAotKyNkZWZpbmUgX19VQVBJX0RFRl9JRl9JRk1BUCAgICAgICAgICAgIDEKLSsjdW5kZWYgX19VQVBJX0RFRl9JRl9ORVRfREVWSUNFX0ZMQUdTCi0rI2RlZmluZSBfX1VBUElfREVGX0lGX05FVF9ERVZJQ0VfRkxBR1MgMQotKyNlbmRpZgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxsaW51eC9pZi5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtS2J1aWxkLmtsaWJjLUFkZC1wYXRoLXRvLWNvbXBpbGVyLWhlYWRlcnMtdmlhLWlzeXN0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLUtidWlsZC5rbGliYy1BZGQtcGF0aC10by1jb21waWxlci1oZWFkZXJzLXZpYS1pc3lzdGUucGF0Y2gKaW5kZXggN2NkNGMwZS4uMTgxZGNmYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtS2J1aWxkLmtsaWJjLUFkZC1wYXRoLXRvLWNvbXBpbGVyLWhlYWRlcnMtdmlhLWlzeXN0ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1LYnVpbGQua2xpYmMtQWRkLXBhdGgtdG8tY29tcGlsZXItaGVhZGVycy12aWEtaXN5c3RlLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxMGZiNDQwNzk1YTc3OTYxNDBiZDY1N2VlMDI4ODQ3ZWM3YzM0NDQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0YjQxNDdiNzY1MThkMzFhODhmYjJjNThjZGJmMjIzNmUxNTlhMjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgOCBTZXAgMjAxNyAyMzoxMDo1NCAtMDcwMAogU3ViamVjdDogW1BBVENIXSBLYnVpbGQua2xpYmM6IEFkZCBwYXRoIHRvIGNvbXBpbGVyIGhlYWRlcnMgdmlhIC1pc3lzdGVtCkBAIC03LDEyICs3LDEzIEBACiBzdGRhcmcuaCB3aGljaCBpcyBjYWxsZWQgZnJvbSB3cmFwcGVyIHN0ZGFyZy5oIHVzaW5nIGluY2x1ZGVfbmV4dAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KLSBzY3JpcHRzL0tidWlsZC5rbGliYyB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIHNjcmlwdHMvS2J1aWxkLmtsaWJjIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zY3JpcHRzL0tidWlsZC5rbGliYyBiL3NjcmlwdHMvS2J1aWxkLmtsaWJjCi1pbmRleCBmNTAwZDUzNS4uMWQ1Y2RjNDMgMTAwNjQ0CitpbmRleCAxMDFmODZmLi4xZDVjZGM0IDEwMDY0NAogLS0tIGEvc2NyaXB0cy9LYnVpbGQua2xpYmMKICsrKyBiL3NjcmlwdHMvS2J1aWxkLmtsaWJjCiBAQCAtMTA1LDcgKzEwNSw4IEBAIEtMSUJDT0JKQ09QWSAgICAgOj0gJChPQkpDT1BZKQpAQCAtMjUsNiArMjYsMyBAQAogIAkJICAgIC1JJChLTElCQ0lOQykvYXJjaC8kKEtMSUJDQVJDSERJUikJXAogICAgICAgICAgICAgICAgICAgICAgLUkkKEtMSUJDSU5DKS9iaXRzJChLTElCQ0JJVFNJWkUpCVwKICAJCSAgICAtSSQoS0xJQkNPQkopLy4uL2luY2x1ZGUJCVwKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLUtidWlsZC5rbGliYy1Vc2UtcHJpbnQtbGliZ2NjLWZpbGUtbmFtZS1pbnN0ZWFkLW9mLXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1LYnVpbGQua2xpYmMtVXNlLXByaW50LWxpYmdjYy1maWxlLW5hbWUtaW5zdGVhZC1vZi1wLnBhdGNoCmluZGV4IDQxY2MxNDIuLjFiYTA1YTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLUtidWlsZC5rbGliYy1Vc2UtcHJpbnQtbGliZ2NjLWZpbGUtbmFtZS1pbnN0ZWFkLW9mLXAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtS2J1aWxkLmtsaWJjLVVzZS1wcmludC1saWJnY2MtZmlsZS1uYW1lLWluc3RlYWQtb2YtcC5wYXRjaApAQCAtMSwxOSArMSwyMCBAQAotRnJvbSBmNjZlZGRlOGE3MDQxMzFkOThlODc4M2VhOGQ0Yzg0OGU4MTE5YjIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiNjE4NTQwMWZjM2RhYTdmYThiYTJiODRkYjNlNGRhM2I5NGE5ODY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMjYgSnVsIDIwMTcgMTY6MTM6MTYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIEtidWlsZC5rbGliYzogVXNlIC1wcmludC1saWJnY2MtZmlsZS1uYW1lIGluc3RlYWQgb2YKK1N1YmplY3Q6IFtQQVRDSF0gS2J1aWxkLmtsaWJjOiBVc2UgLXByaW50LWxpYmdjYy1maWxlLW5hbWUgaW5zdGVhZCBvZgogIC0tcHJpbnQtbGliZ2NjCiAKIC1wcmludC1saWJnY2MtZmlsZS1uYW1lIHdvcmtzIHdpdGggY2xhbmcgYW5kIGdjYyB1bmxpa2UgLS1wcmludC1saWJnY2MKIHdoaWNoIGlzIGdjYyBzcGVjaWZpYwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzY3JpcHRzL0tidWlsZC5rbGliYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NjcmlwdHMvS2J1aWxkLmtsaWJjIGIvc2NyaXB0cy9LYnVpbGQua2xpYmMKLWluZGV4IGY1MDBkNTM1Li4xMDFmODZmNSAxMDA2NDQKK2luZGV4IGY1MDBkNTMuLjEwMWY4NmYgMTAwNjQ0CiAtLS0gYS9zY3JpcHRzL0tidWlsZC5rbGliYwogKysrIGIvc2NyaXB0cy9LYnVpbGQua2xpYmMKIEBAIC0xMjgsNyArMTI4LDcgQEAgS0xJQkNDRkxBR1MgICAgICArPSAkKEtMSUJDQ1BQRkxBR1MpICQoS0xJQkNSRVFGTEFHUykgJChLTElCQ0FSQ0hSRVFGTEFHUykgIFwKQEAgLTI1LDYgKzI2LDMgQEAKICBLTElCQ0xJQkdDQwkgPz0gJChLTElCQ0xJQkdDQ19ERUYpCiAgS0xJQkNDUlQwICAgICAgICA6PSAkKEtMSUJDT0JKKS9hcmNoLyQoS0xJQkNBUkNIRElSKS9jcnQwLm8KICBLTElCQ0xJQkMgICAgICAgIDo9ICQoS0xJQkNPQkopL2xpYmMuYQotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtYWx3YXlzLXVzZS1iZmQtbGlua2VyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtYWx3YXlzLXVzZS1iZmQtbGlua2VyLnBhdGNoCmluZGV4IDQxYTZiOWUuLmRlMDRkNjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWFsd2F5cy11c2UtYmZkLWxpbmtlci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1hbHdheXMtdXNlLWJmZC1saW5rZXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDllYTE5YmQ5NjM2ODA2YTczYmNmMjljZmNlZTQwYTI2OGY5MWViNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDYzYWI1MTAyZDZlZjM2MmE1OTc5NDFlNjI0NzBiZjE5ZTZmMTY1MmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVHVlLCAxMSBKdWwgMjAxNyAwODowOTo1MiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBhbHdheXMgdXNlIGJmZCBsaW5rZXIKQEAgLTgsMTIgKzgsMTMgQEAKIGxpbmtpbmcgaXNzdWVzIG9uIHN1Y2ggZGlzdHJvcwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBNYWtlZmlsZSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IGRjMTBmYzVkLi40MDY0N2JlNCAxMDA2NDQKK2luZGV4IGRjMTBmYzUuLjQwNjQ3YmUgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKIEBAIC0yMCw3ICsyMCw3IEBAIGluY2x1ZGUgJChzcmN0cmVlKS9zY3JpcHRzL0tidWlsZC5pbmNsdWRlCkBAIC0yNSw2ICsyNiwzIEBACiAgZXhwb3J0IEFSCTo9ICQoS0xJQkNST1NTKWFyCiAgZXhwb3J0IFJBTkxJQgk6PSAkKEtMSUJDUk9TUylyYW5saWIKICBleHBvcnQgU1RSSVAJOj0gJChLTElCQ1JPU1Mpc3RyaXAKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWFybS1Eby1ub3Qtc2V0LWEtZmFsbGJhY2stbWFyY2gtYW5kLW10dW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtYXJtLURvLW5vdC1zZXQtYS1mYWxsYmFjay1tYXJjaC1hbmQtbXR1bmUucGF0Y2gKaW5kZXggOWMwZWE2My4uZmNmNGY4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtYXJtLURvLW5vdC1zZXQtYS1mYWxsYmFjay1tYXJjaC1hbmQtbXR1bmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtYXJtLURvLW5vdC1zZXQtYS1mYWxsYmFjay1tYXJjaC1hbmQtbXR1bmUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGE0NmExNDRhYzg4Mzg5OGQ5Y2VkZjdhMGIxM2FlYzZkMTAxMTYxMjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGViZDJiMGU0MTRjOTg0NjcxNTZiOTYxYWJiNDcwYjVkMDdmMzdlYTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogRnJpLCAyOSBTZXAgMjAxNyAyMzoxMTo1MyAtMDcwMAogU3ViamVjdDogW1BBVENIXSBhcm06IERvIG5vdCBzZXQgYSBmYWxsYmFjayBtYXJjaCBhbmQgbXR1bmUKQEAgLTksMTQgKzksMTMgQEAKIHdoaWNoIGlzIGEgYml0IGhhcmRlciBpbiBPRQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAorLS0tCiAgdXNyL2tsaWJjL2FyY2gvYXJtL01DT05GSUcgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS91c3Iva2xpYmMvYXJjaC9hcm0vTUNPTkZJRyBiL3Vzci9rbGliYy9hcmNoL2FybS9NQ09ORklHCi1pbmRleCA1M2JjMWRjMy4uODU3ZTJmMmQgMTAwNjQ0CitpbmRleCAzMDNjNmFjLi40OGQyNjg1IDEwMDY0NAogLS0tIGEvdXNyL2tsaWJjL2FyY2gvYXJtL01DT05GSUcKICsrKyBiL3Vzci9rbGliYy9hcmNoL2FybS9NQ09ORklHCiBAQCAtMTAsNyArMTAsNyBAQApAQCAtMjgsNiArMjcsMyBAQAogIEtMSUJDQklUU0laRSAgPSAzMgogIEtMSUJDUkVRRkxBR1MgKz0gLWZuby1leGNlcHRpb25zCiAgS0xJQkNTVFJJUEZMQUdTICs9IC1SIC5BUk0uZXhpZHgKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWRhc2gtU3BlY2lmeS1mb3JtYXQtc3RyaW5nLWluLWZtdHN0ci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWRhc2gtU3BlY2lmeS1mb3JtYXQtc3RyaW5nLWluLWZtdHN0ci5wYXRjaAppbmRleCBhZThjMWYxLi40NmEyMzk4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1kYXNoLVNwZWNpZnktZm9ybWF0LXN0cmluZy1pbi1mbXRzdHIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtZGFzaC1TcGVjaWZ5LWZvcm1hdC1zdHJpbmctaW4tZm10c3RyLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyZmZmNjA3ZmQwYjU1NTBlNTA3MmE2ZmZmY2JiMDFjMjlkNTIwN2QyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4YmVmZmU1MDFjMWFjNWIzNWQ2MjAwNDczNWM0MTU3Yzc0MTgzOTAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgOSBKdWwgMjAxNyAxMzo1MToyNSAtMDcwMAogU3ViamVjdDogW1BBVENIXSBkYXNoOiBTcGVjaWZ5IGZvcm1hdCBzdHJpbmcgaW4gZm10c3RyKCkKQEAgLTksMTIgKzksMTMgQEAKICAgIGNvbCA9IGZtdHN0cihzLCAzMiwgc3Ryc2lnbmFsKHN0KSk7CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHVzci9kYXNoL2pvYnMuYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3Vzci9kYXNoL2pvYnMuYyBiL3Vzci9kYXNoL2pvYnMuYwotaW5kZXggMDA5YmJmZWUuLjI5OWJjYWNjIDEwMDY0NAoraW5kZXggMDA5YmJmZS4uMjk5YmNhYyAxMDA2NDQKIC0tLSBhL3Vzci9kYXNoL2pvYnMuYwogKysrIGIvdXNyL2Rhc2gvam9icy5jCiBAQCAtNDI2LDcgKzQyNiw3IEBAIHNwcmludF9zdGF0dXMoY2hhciAqcywgaW50IHN0YXR1cywgaW50IHNpZ29ubHkpCkBAIC0yNiw2ICsyNywzIEBACiAgI2lmZGVmIFdDT1JFRFVNUAogIAkJaWYgKFdDT1JFRFVNUChzdGF0dXMpKSB7CiAgCQkJY29sICs9IGZtdHN0cihzICsgY29sLCAxNiwgIiAoY29yZSBkdW1wZWQpIik7Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1pbmNsdWRlLWxpbnV4LXN5c2luZm8uaC1kaXJlY3RseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWluY2x1ZGUtbGludXgtc3lzaW5mby5oLWRpcmVjdGx5LnBhdGNoCmluZGV4IDFiMDMzYWMuLjA0Yzk3ZmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWluY2x1ZGUtbGludXgtc3lzaW5mby5oLWRpcmVjdGx5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWluY2x1ZGUtbGludXgtc3lzaW5mby5oLWRpcmVjdGx5LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhYjA2MGE1N2I0MWY5ODk2NjVhZGUyMGU4MTNiYmNiNjdmOTFmMWYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkOTY2ZDUyZDFlNTY5Y2JjMjI5M2Q4NDEyODVlMmI4OTQxZjI4YzYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgOSBKdWwgMjAxNyAxNTo1NjoyOCAtMDcwMAogU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIGxpbnV4L3N5c2luZm8uaCBkaXJlY3RseQpAQCAtMTAsMTIgKzEwLDEzIEBACiBvdmVycmlkZSB0byBhdm9pZCB0aGlzIGFzc3VtcHRpb24KIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgdXNyL2luY2x1ZGUvc3lzL3N5c2luZm8uaCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3Vzci9pbmNsdWRlL3N5cy9zeXNpbmZvLmggYi91c3IvaW5jbHVkZS9zeXMvc3lzaW5mby5oCi1pbmRleCBkYmE2OGRjNi4uZDE0NWMwYjEgMTAwNjQ0CitpbmRleCBkYmE2OGRjLi5kMTQ1YzBiIDEwMDY0NAogLS0tIGEvdXNyL2luY2x1ZGUvc3lzL3N5c2luZm8uaAogKysrIGIvdXNyL2luY2x1ZGUvc3lzL3N5c2luZm8uaAogQEAgLTUsNyArNSw3IEBACkBAIC0yNyw2ICsyOCwzIEBACiAgCiAgZXh0ZXJuIGludCBzeXNpbmZvKHN0cnVjdCBzeXNpbmZvICppbmZvKTsKICAKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLW1rZmlmby1JbXBsZW1lbnQtbWtmaWZvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtbWtmaWZvLUltcGxlbWVudC1ta2ZpZm8ucGF0Y2gKaW5kZXggOTc5MTQxMi4uM2JjMDgxZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtbWtmaWZvLUltcGxlbWVudC1ta2ZpZm8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtbWtmaWZvLUltcGxlbWVudC1ta2ZpZm8ucGF0Y2gKQEAgLTEsMTUgKzEsMTYgQEAKLUZyb20gYjRlMTIwZjVlZGYwNmU2ZGYxMzhiMTgwNGE4YjUxODA1ODRjZWE2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gY2Y5NzA3OTAwOWJhNDhkMTBlNTIwNTJiMmVhYjc0NjFlYTRkZDA5YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDEwIEp1bCAyMDE3IDIwOjQyOjUwIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIG1rZmlmbzogSW1wbGVtZW50IG1rZmlmbwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICB1c3IvdXRpbHMvbWtmaWZvLmMgfCA1ICsrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvdXNyL3V0aWxzL21rZmlmby5jIGIvdXNyL3V0aWxzL21rZmlmby5jCi1pbmRleCA1YTc1OGIyYS4uZjFmNTc3ZTYgMTAwNjQ0CitpbmRleCA1YTc1OGIyLi5mMWY1NzdlIDEwMDY0NAogLS0tIGEvdXNyL3V0aWxzL21rZmlmby5jCiArKysgYi91c3IvdXRpbHMvbWtmaWZvLmMKIEBAIC0yNiw2ICsyNiwxMSBAQCBzdGF0aWMgaW50IG1ha2VfZmlmbyhjaGFyICpkaXIpCkBAIC0yNCw2ICsyNSwzIEBACiAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICB7CiAgCWludCBjLCByZXQgPSAwOwotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40L2FybXY0LWZpeC12NGJ4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40L2FybXY0LWZpeC12NGJ4LnBhdGNoCmluZGV4IDZiYjM4NGIuLmU4NDIzNTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC9hcm12NC1maXgtdjRieC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvYXJtdjQtZml4LXY0YngucGF0Y2gKQEAgLTEsMTEgKzEsMjIgQEAKK0Zyb20gZDJmYjQ4NGQ5OTUyMjEyNzdjY2U3YWJkZGNkN2RmYTBlOGJjZWVjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTEgSmFuIDIwMTMgMTc6MjY6NDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0ga2xpYmNfMi4wLjI6IGFwcGx5IEZJWF9WNEJYIHBhdGNoIGZvciBhcm12NCB0YXJnZXRzIG9ubHkKKwogU3RhdHVzOiBub3QgYXBwbGljYWJsZSB1cHN0cmVhbSwgaW4gT0UvWW9jdG8gd2UgdXNlICQoRklYX1Y0QlgpCiB3aGljaCBpcyAiIiBpbiBjYXNlIG9mIGFybXY1IG9yIHRodW1icy4KIAogU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgogCi0tLS0gYS91c3Iva2xpYmMvYXJjaC9hcm0vTUNPTkZJRwkyMDEzLTAxLTA5IDAxOjEyOjAyLjAwMDAwMDAwMCArMDEwMAotKysrIGIvdXNyL2tsaWJjL2FyY2gvYXJtL01DT05GSUcJMjAxMy0wMS0wOCAyMzo0NTo1OS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yOSw2ICsyOSw3IEBACistLS0KKyB1c3Iva2xpYmMvYXJjaC9hcm0vTUNPTkZJRyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvdXNyL2tsaWJjL2FyY2gvYXJtL01DT05GSUcgYi91c3Iva2xpYmMvYXJjaC9hcm0vTUNPTkZJRworaW5kZXggNTNiYzFkYy4uMzAzYzZhYyAxMDA2NDQKKy0tLSBhL3Vzci9rbGliYy9hcmNoL2FybS9NQ09ORklHCisrKysgYi91c3Iva2xpYmMvYXJjaC9hcm0vTUNPTkZJRworQEAgLTI5LDYgKzI5LDcgQEAgZWxzZQogIEtMSUJDU0hBUkVERkxBR1MgPSAtVHRleHQgMHgwMTgwMDIwMAogIGlmZXEgKCQoQ09ORklHX0FFQUJJKSx5KQogIEtMSUJDUkVRRkxBR1MgKz0gLW1hYmk9YWFwY3MtbGludXggLW1uby10aHVtYi1pbnRlcndvcmsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC9rbGNjLWNvbnNpZGVyLXN5c3Jvb3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQva2xjYy1jb25zaWRlci1zeXNyb290LnBhdGNoCmluZGV4IDliYzQ4MzUuLjVmNDdkM2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC9rbGNjLWNvbnNpZGVyLXN5c3Jvb3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40L2tsY2MtY29uc2lkZXItc3lzcm9vdC5wYXRjaApAQCAtMSwzICsxLDExIEBACitGcm9tIDBjYjI2Y2YyZDI1ZDM2YzFmZGNjNGYxNjM1ZTQzMjk0MzZlZDg2NmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE5IFNlcCAyMDE0IDIzOjA5OjI5ICswMjAwCisKKy0tLQorIGtsY2Mva2xjYy5pbiB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCiBkaWZmIC0tZ2l0IGEva2xjYy9rbGNjLmluIGIva2xjYy9rbGNjLmluCiBpbmRleCA0M2QwOTg0Li42MWU5Mzg1IDEwMDY0NAogLS0tIGEva2xjYy9rbGNjLmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQva2xpYmMtY29uZmlnLWVhYmkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQva2xpYmMtY29uZmlnLWVhYmkucGF0Y2gKaW5kZXggMzE2YzgwYS4uZjI4Y2Q1NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40L2tsaWJjLWNvbmZpZy1lYWJpLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC9rbGliYy1jb25maWctZWFiaS5wYXRjaApAQCAtMSwxMiArMSwyMiBAQAorRnJvbSAxMTE4Y2M5NzE5MTdhYmUxOWRkYjAyOWFhODA0MTdmNmZkNmJiMzQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhvbWFzIEt1bnplIDx0aG9tbXljaGVja0BnbXguZGU+CitEYXRlOiBTYXQsIDYgQXVnIDIwMTEgMDU6MzA6MTQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0ga2xpYmM6IGluaXRpYWwgY29tbWl0IG9mIHZlcnNpb24gMS41LjI0CisKIFBhdGNoIHdhcyBpbXBvcnRlZCBmcm9tIHRoZSBPcGVuRW1iZWRkZWQgZ2l0IHNlcnZlcgogKGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZCkKIGFzIG9mIGNvbW1pdCBpZCBiNjc2NGNmMzJlYzkzNTQ3NTMxMTMwZGNhMzY0ZmI5NWUxYzQ5NWY0CiBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgS3VuemUgPHRob21teWNoZWNrQGdteC5kZT4KIAotZGlmZiAtTnVyIGtsaWJjLTEuNS9kZWZjb25maWcga2xpYmMtMS41cC9kZWZjb25maWcKLS0tLSBrbGliYy0xLjUvZGVmY29uZmlnCTIwMDctMDMtMDQgMDI6NTI6MTAuMDAwMDAwMDAwICswMTAwCi0rKysga2xpYmMtMS41cC9kZWZjb25maWcJMjAwOC0wMi0wOCAxOToyNDoyMi4zMzcxMjc3NTYgKzAxMDAKLUBAIC01LDQgKzUsNCBAQAorLS0tCisgZGVmY29uZmlnIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZGVmY29uZmlnIGIvZGVmY29uZmlnCitpbmRleCAwNGI5OGU5Li4wY2IyM2QwIDEwMDY0NAorLS0tIGEvZGVmY29uZmlnCisrKysgYi9kZWZjb25maWcKK0BAIC02LDQgKzYsNCBAQCBDT05GSUdfS0xJQkNfWkxJQj15CiAgQ09ORklHX1JFR1BBUk09eQogICMgQVJNIG9wdGlvbnMKICAjIENPTkZJR19LTElCQ19USFVNQiBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQva2xpYmMtbGludXgtbGliYy1kZXYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQva2xpYmMtbGludXgtbGliYy1kZXYucGF0Y2gKaW5kZXggMjA0MzA2NC4uYTU1NjNiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40L2tsaWJjLWxpbnV4LWxpYmMtZGV2LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC9rbGliYy1saW51eC1saWJjLWRldi5wYXRjaApAQCAtMSwxNSArMSwyMiBAQAorRnJvbSAxYmUyYmM0MWY5MTU5MjIxMDJhM2JhNjcxYjU0YzJkZjZmMDA1MmU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuIEh1dGNoaW5ncyA8YmVuQGRlY2FkZW50Lm9yZy51az4KK0RhdGU6IFN1biwgMTQgTWFyIDIwMTAgMTg6NDE6NTYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0ga2xpYmNfMS41LjI2OiBub3cgYnVpbGQgYWdhaW5zdCBsaW51eC1saWJjLWhlYWRlcnMKKwogY29tbWl0IDQzYWRmNjkwNjIyNTRmYjRmOGQ0ZDExZmI1ZmUzNmE2MGFlMjVkNWEKLUF1dGhvcjogQmVuIEh1dGNoaW5ncyA8YmVuQGRlY2FkZW50Lm9yZy51az4KLURhdGU6ICAgU3VuIE1hciAxNCAxODo0MTo1NiAyMDEwICswMDAwCiAKICAgICBUYWtlbiBmcm9tIGRlYmlhbiAiRml4IGtsaWJjIERlYmlhbiBzcGVjaWZpYyBidWlsZCB0cm91YmxlIgogICAgIEFkYXB0ZWQgZm9yIGtsaWJjXzIuMC4yCiAKLUluZGV4OiBrbGliYy0yLjB+cmMyL3NjcmlwdHMvS2J1aWxkLmluc3RhbGwKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrbGliYy0yLjB+cmMyLm9yaWcvc2NyaXB0cy9LYnVpbGQuaW5zdGFsbAkyMDEyLTAyLTExIDE4OjUwOjIxLjAwMDAwMDAwMCArMDAwMAotKysrIGtsaWJjLTIuMH5yYzIvc2NyaXB0cy9LYnVpbGQuaW5zdGFsbAkyMDEyLTAyLTExIDE5OjA0OjUyLjAwMDAwMDAwMCArMDAwMAotQEAgLTk1LDcgKzk1LDkgQEAKKy0tLQorIHNjcmlwdHMvS2J1aWxkLmluc3RhbGwgfCA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zY3JpcHRzL0tidWlsZC5pbnN0YWxsIGIvc2NyaXB0cy9LYnVpbGQuaW5zdGFsbAoraW5kZXggOGFmNTY5Ny4uZDMyYThhNSAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvS2J1aWxkLmluc3RhbGwKKysrKyBiL3NjcmlwdHMvS2J1aWxkLmluc3RhbGwKK0BAIC05NSw3ICs5NSw5IEBAIGhlYWRlcjoKICAJJChRKW1rZGlyIC1wICQoSU5TVEFMTFJPT1QpJChJTlNUQUxMRElSKS8kKEtDUk9TUylpbmNsdWRlCiAgCSQoUSlta2RpciAtcCAkKElOU1RBTExST09UKSQoSU5TVEFMTERJUikvJChLQ1JPU1MpbGliCiAgCSQoUSlta2RpciAtcCAkKElOU1RBTExST09UKSQoSU5TVEFMTERJUikvJChLQ1JPU1MpYmluCkBAIC0xOCw1ICsyNSw1IEBACiArCQlsbiAtc2YgJCR7eH0gJChJTlNUQUxMUk9PVCkkKElOU1RBTExESVIpLyQoS0NST1NTKWluY2x1ZGUvIHx8IGV4aXQ7IFwKICsJZG9uZQogIAkkKFEpY3AgLXJmIHVzci9pbmNsdWRlLy4gJChJTlNUQUxMUk9PVCkkKElOU1RBTExESVIpLyQoS0NST1NTKWluY2x1ZGUvLgotIAkkKFEpY2htb2QgLVIgYStyWCAkKElOU1RBTExST09UKSQoSU5TVEFMTERJUikvJChLQ1JPU1MpaW5jbHVkZQorIAkkKFEpY2htb2QgLVIgYStyWCxnby13ICQoSU5TVEFMTFJPT1QpJChJTlNUQUxMRElSKS8kKEtDUk9TUylpbmNsdWRlCiAgCSQoUSkkKGluc3RhbGwtZGF0YSkgJChzcmN0cmVlKS9rbGNjL2tsY2MuMSAkKElOU1RBTExST09UKSQobWFuZGlyKS9tYW4xLyQoS0NST1NTKWtsY2MuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40L3N0YWdpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvc3RhZ2luZy5wYXRjaAppbmRleCBjMDFjNzEyLi41YzdhNjYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvc3RhZ2luZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvc3RhZ2luZy5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gMTg5MjA3OWI4MjdjZjhmODMxNjMwNWI2ZDZlMDk4NWRiODI0NDFhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBLdW56ZSA8dGhvbW15Y2hlY2tAZ214LmRlPgorRGF0ZTogU2F0LCA2IEF1ZyAyMDExIDA1OjMwOjE0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGtsaWJjOiBpbml0aWFsIGNvbW1pdCBvZiB2ZXJzaW9uIDEuNS4yNAorCiBQYXRjaCB3YXMgaW1wb3J0ZWQgZnJvbSB0aGUgT3BlbkVtYmVkZGVkIGdpdCBzZXJ2ZXIKIChnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQpCiBhcyBvZiBjb21taXQgaWQgZWVmYjk5YTMxM2JiY2M4ZjM0YzhiMzJiZjBjNWFhMmRkMjU4MDczNQpAQCAtNiwxMSArMTEsMjUgQEAKIE1pbm9yIGVkaXRzIGZvbGxvd2luZyB1cHN0cmVhbSBjaGFuZ2VzCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CiAKLUluZGV4OiBrbGliYy0xLjUuMjQvc2NyaXB0cy9LYnVpbGQuaW5zdGFsbAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvc2NyaXB0cy9LYnVpbGQuaW5zdGFsbAkyMDExLTA3LTI3IDE1OjUwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGIvc2NyaXB0cy9LYnVpbGQuaW5zdGFsbAkyMDExLTA4LTAxIDAwOjAzOjAzLjAwMDAwMDAwMCArMDIwMAotQEAgLTg4LDEzICs4OCwxMCBAQAorLS0tCisgc2NyaXB0cy9LYnVpbGQuaW5zdGFsbCAgICB8IDQgLS0tLQorIHVzci9kYXNoL0tidWlsZCAgICAgICAgICAgfCAyIC0tCisgdXNyL2d6aXAvS2J1aWxkICAgICAgICAgICB8IDIgLS0KKyB1c3Iva2luaXQvS2J1aWxkICAgICAgICAgIHwgMiAtLQorIHVzci9raW5pdC9mc3R5cGUvS2J1aWxkICAgfCAyIC0tCisgdXNyL2tpbml0L2lwY29uZmlnL0tidWlsZCB8IDIgLS0KKyB1c3Iva2luaXQvbmZzbW91bnQvS2J1aWxkIHwgMiAtLQorIHVzci9raW5pdC9yZXN1bWUvS2J1aWxkICAgfCAyIC0tCisgdXNyL2tpbml0L3J1bi1pbml0L0tidWlsZCB8IDIgLS0KKyB1c3Iva2xpYmMvS2J1aWxkICAgICAgICAgIHwgMiAtLQorIHVzci91dGlscy9LYnVpbGQgICAgICAgICAgfCAyIC0tCisgMTEgZmlsZXMgY2hhbmdlZCwgMjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zY3JpcHRzL0tidWlsZC5pbnN0YWxsIGIvc2NyaXB0cy9LYnVpbGQuaW5zdGFsbAoraW5kZXggZDMyYThhNS4uZmRhNjk5ZCAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvS2J1aWxkLmluc3RhbGwKKysrKyBiL3NjcmlwdHMvS2J1aWxkLmluc3RhbGwKK0BAIC04OCwxOSArODgsMTUgQEAgZWxzZQogIGhlYWRlcjoKICAJJChRKWVjaG8gIiAgSU5TVEFMTCBoZWFkZXJzICsgbWFuIHBhZ2VzIHRvICQoSU5TVEFMTFJPT1QpJChJTlNUQUxMRElSKSIKICAJJChRKW1rZGlyIC1wICQoSU5TVEFMTFJPT1QpJChiaW5kaXIpCkBAIC0yNCwxMTkgKzQzLDEwNyBAQAogIAkkKFEpZm9yIHggaW4gLi4vLi4vLi4vaW5jbHVkZS9hc20gLi4vLi4vLi4vaW5jbHVkZS9hc20tZ2VuZXJpYyAuLi8uLi8uLi9pbmNsdWRlL2xpbnV4IC4uLy4uLy4uL2luY2x1ZGUvbXRkOyBkbyBcCiAgCQlsbiAtc2YgJCR7eH0gJChJTlNUQUxMUk9PVCkkKElOU1RBTExESVIpLyQoS0NST1NTKWluY2x1ZGUvIHx8IGV4aXQ7IFwKICAJZG9uZQotQEAgLTEwMyw3ICsxMDAsNiBAQAotIAlkb25lCiAgCSQoUSljcCAtcmYgdXNyL2luY2x1ZGUvLiAkKElOU1RBTExST09UKSQoSU5TVEFMTERJUikvJChLQ1JPU1MpaW5jbHVkZS8uCiAgCSQoUSljaG1vZCAtUiBhK3JYLGdvLXcgJChJTlNUQUxMUk9PVCkkKElOU1RBTExESVIpLyQoS0NST1NTKWluY2x1ZGUKIC0JJChRKSQoaW5zdGFsbC1kYXRhKSAkKHNyY3RyZWUpL2tsY2Mva2xjYy4xICQoSU5TVEFMTFJPT1QpJChtYW5kaXIpL21hbjEvJChLQ1JPU1Mpa2xjYy4xCiAgCSQoUSkkKGluc3RhbGwtYmluKSAkKG9ianRyZWUpL2tsY2MvJChLQ1JPU1Mpa2xjYyAkKElOU1RBTExST09UKSQoYmluZGlyKQogIAogIGZvb3RlcjogaGVhZGVyCi0KLUluZGV4OiBrbGliYy0xLjUuMjQvdXNyL2Rhc2gvS2J1aWxkCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS91c3IvZGFzaC9LYnVpbGQJMjAxMS0wNy0yNyAxNTo1MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL3Vzci9kYXNoL0tidWlsZAkyMDExLTA4LTAxIDAwOjA3OjU2LjAwMDAwMDAwMCArMDIwMAotQEAgLTkyLDUgKzkyLDMgQEAKK2RpZmYgLS1naXQgYS91c3IvZGFzaC9LYnVpbGQgYi91c3IvZGFzaC9LYnVpbGQKK2luZGV4IDNhOThjMWYuLjFhNjkyMGEgMTAwNjQ0CistLS0gYS91c3IvZGFzaC9LYnVpbGQKKysrKyBiL3Vzci9kYXNoL0tidWlsZAorQEAgLTkyLDUgKzkyLDMgQEAgJChvYmopL3N5bnRheC5jOiAkKG9iaikvbWtzeW50YXgKICAkKG9iaikvc3ludGF4Lmg6ICQob2JqKS9zeW50YXguYwogIAkkKFEpOgogIAogLSMgVGFyZ2V0cyB0byBpbnN0YWxsCiAtaW5zdGFsbC15IDo9IHNoLnNoYXJlZAotCi1JbmRleDoga2xpYmMtMS41LjI0L3Vzci9nemlwL0tidWlsZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvdXNyL2d6aXAvS2J1aWxkCTIwMTEtMDctMjcgMTU6NTA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgYi91c3IvZ3ppcC9LYnVpbGQJMjAxMS0wOC0wMSAwMDowNjozOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMSw1ICsyMSwzIEBACitkaWZmIC0tZ2l0IGEvdXNyL2d6aXAvS2J1aWxkIGIvdXNyL2d6aXAvS2J1aWxkCitpbmRleCA5YmJmMGE0Li5jNDk3ZDAyIDEwMDY0NAorLS0tIGEvdXNyL2d6aXAvS2J1aWxkCisrKysgYi91c3IvZ3ppcC9LYnVpbGQKK0BAIC0yMSw1ICsyMSwzIEBAICQob2JqKS9ndW56aXAgJChvYmopL3pjYXQ6ICQob2JqKS9nemlwCiAgIyBDbGVhbmluZwogIHRhcmdldHMgOj0gZ3ppcCBnemlwLmcgZ3VuemlwIHpjYXQKICAKIC0jIFRhcmdldHMgdG8gaW5zdGFsbAogLWluc3RhbGwteSA6PSBnemlwIGd1bnppcCB6Y2F0Ci0KLUluZGV4OiBrbGliYy0xLjUuMjQvdXNyL2tpbml0L2ZzdHlwZS9LYnVpbGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3Vzci9raW5pdC9mc3R5cGUvS2J1aWxkCTIwMTEtMDctMjcgMTU6NTA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgYi91c3Iva2luaXQvZnN0eXBlL0tidWlsZAkyMDExLTA4LTAxIDAwOjA5OjEyLjAwMDAwMDAwMCArMDIwMAotQEAgLTIxLDUgKzIxLDMgQEAKLSAjIENsZWFuaW5nCi0gY2xlYW4tZGlycyA6PSBzdGF0aWMgc2hhcmVkCi0gCi0tIyBpbnN0YWxsIGJpbmFyeQotLWluc3RhbGwteSA6PSAkKHNoYXJlZC15KQotCi1JbmRleDoga2xpYmMtMS41LjI0L3Vzci9raW5pdC9pcGNvbmZpZy9LYnVpbGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3Vzci9raW5pdC9pcGNvbmZpZy9LYnVpbGQJMjAxMS0wNy0yNyAxNTo1MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL3Vzci9raW5pdC9pcGNvbmZpZy9LYnVpbGQJMjAxMS0wOC0wMSAwMDoxMDo1Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNyw1ICsyNywzIEBACi0gIyBDbGVhbmluZwotIGNsZWFuLWRpcnMgOj0gc3RhdGljIHNoYXJlZAotIAotLSMgaW5zdGFsbCBiaW5hcnkKLS1pbnN0YWxsLXkgOj0gJChzaGFyZWQteSkKLQotSW5kZXg6IGtsaWJjLTEuNS4yNC91c3Iva2luaXQvS2J1aWxkCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS91c3Iva2luaXQvS2J1aWxkCTIwMTEtMDctMjcgMTU6NTA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgYi91c3Iva2luaXQvS2J1aWxkCTIwMTEtMDgtMDEgMDA6MjA6MTguMDAwMDAwMDAwICswMjAwCi1AQCAtMzMsNSArMzMsMyBAQAorZGlmZiAtLWdpdCBhL3Vzci9raW5pdC9LYnVpbGQgYi91c3Iva2luaXQvS2J1aWxkCitpbmRleCA1MzIwMTI3Li5mN2ZkY2NkIDEwMDY0NAorLS0tIGEvdXNyL2tpbml0L0tidWlsZAorKysrIGIvdXNyL2tpbml0L0tidWlsZAorQEAgLTMzLDUgKzMzLDMgQEAgdGFyZ2V0cyArPSBraW5pdCBraW5pdC5nIGtpbml0LnNoYXJlZCBraW5pdC5zaGFyZWQuZwogIHN1YmRpci0gOj0gZnN0eXBlIGlwY29uZmlnIG5mc21vdW50IHJlc3VtZSBydW4taW5pdAogIAogIAogLSMgaW5zdGFsbCBiaW5hcnkKIC1pbnN0YWxsLXkgOj0ga2luaXQga2luaXQuc2hhcmVkCi0KLUluZGV4OiBrbGliYy0xLjUuMjQvdXNyL2tpbml0L25mc21vdW50L0tidWlsZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvdXNyL2tpbml0L25mc21vdW50L0tidWlsZAkyMDExLTA3LTI3IDE1OjUwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGIvdXNyL2tpbml0L25mc21vdW50L0tidWlsZAkyMDExLTA4LTAxIDAwOjEyOjUyLjAwMDAwMDAwMCArMDIwMAotQEAgLTIzLDUgKzIzLDMgQEAKK2RpZmYgLS1naXQgYS91c3Iva2luaXQvZnN0eXBlL0tidWlsZCBiL3Vzci9raW5pdC9mc3R5cGUvS2J1aWxkCitpbmRleCA5YjIwZGIxLi4zNjc2MTFkIDEwMDY0NAorLS0tIGEvdXNyL2tpbml0L2ZzdHlwZS9LYnVpbGQKKysrKyBiL3Vzci9raW5pdC9mc3R5cGUvS2J1aWxkCitAQCAtMjEsNSArMjEsMyBAQCBzaGFyZWQvZnN0eXBlLXkgOj0gJChvYmpzKQorICMgQ2xlYW5pbmcKKyBjbGVhbi1kaXJzIDo9IHN0YXRpYyBzaGFyZWQKKyAKKy0jIGluc3RhbGwgYmluYXJ5CistaW5zdGFsbC15IDo9ICQoc2hhcmVkLXkpCitkaWZmIC0tZ2l0IGEvdXNyL2tpbml0L2lwY29uZmlnL0tidWlsZCBiL3Vzci9raW5pdC9pcGNvbmZpZy9LYnVpbGQKK2luZGV4IDdmOGQxODEuLmViMWQ0NzIgMTAwNjQ0CistLS0gYS91c3Iva2luaXQvaXBjb25maWcvS2J1aWxkCisrKysgYi91c3Iva2luaXQvaXBjb25maWcvS2J1aWxkCitAQCAtMjcsNSArMjcsMyBAQCBzaGFyZWQvaXBjb25maWcteSA6PSAkKG9ianMpCisgIyBDbGVhbmluZworIGNsZWFuLWRpcnMgOj0gc3RhdGljIHNoYXJlZAorIAorLSMgaW5zdGFsbCBiaW5hcnkKKy1pbnN0YWxsLXkgOj0gJChzaGFyZWQteSkKK2RpZmYgLS1naXQgYS91c3Iva2luaXQvbmZzbW91bnQvS2J1aWxkIGIvdXNyL2tpbml0L25mc21vdW50L0tidWlsZAoraW5kZXggNDYxZTZmMy4uYmEzMTcwOCAxMDA2NDQKKy0tLSBhL3Vzci9raW5pdC9uZnNtb3VudC9LYnVpbGQKKysrKyBiL3Vzci9raW5pdC9uZnNtb3VudC9LYnVpbGQKK0BAIC0yMyw1ICsyMywzIEBAIGR1bW15cG1hcC15IDo9IGR1bW15cG1hcF90ZXN0Lm8KICAKICBjbGVhbi1kaXJzIDo9IHN0YXRpYyBzaGFyZWQKICAKIC0jIEluc3RhbGwgYmluYXJ5CiAtaW5zdGFsbC15IDo9ICQoc2hhcmVkLXkpCi0KLUluZGV4OiBrbGliYy0xLjUuMjQvdXNyL2tpbml0L3Jlc3VtZS9LYnVpbGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3Vzci9raW5pdC9yZXN1bWUvS2J1aWxkCTIwMTEtMDctMjcgMTU6NTA6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgYi91c3Iva2luaXQvcmVzdW1lL0tidWlsZAkyMDExLTA4LTAxIDAwOjEzOjUxLjAwMDAwMDAwMCArMDIwMAotQEAgLTI2LDUgKzI2LDMgQEAKK2RpZmYgLS1naXQgYS91c3Iva2luaXQvcmVzdW1lL0tidWlsZCBiL3Vzci9raW5pdC9yZXN1bWUvS2J1aWxkCitpbmRleCAwMzQxOTVkLi5jMTM0MmUxIDEwMDY0NAorLS0tIGEvdXNyL2tpbml0L3Jlc3VtZS9LYnVpbGQKKysrKyBiL3Vzci9raW5pdC9yZXN1bWUvS2J1aWxkCitAQCAtMjYsNSArMjYsMyBAQCBzaGFyZWQvcmVzdW1lLWxpYiA6PSAuLi9saWIuYQogICMgQ2xlYW5pbmcKICBjbGVhbi1kaXJzIDo9IHN0YXRpYyBzaGFyZWQKICAKIC0jIGluc3RhbGwgYmluYXJ5CiAtaW5zdGFsbC15IDo9ICQoc2hhcmVkLXkpCi0KLUluZGV4OiBrbGliYy0xLjUuMjQvdXNyL2tpbml0L3J1bi1pbml0L0tidWlsZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvdXNyL2tpbml0L3J1bi1pbml0L0tidWlsZAkyMDExLTA3LTI3IDE1OjUwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGIvdXNyL2tpbml0L3J1bi1pbml0L0tidWlsZAkyMDExLTA4LTAxIDAwOjE0OjQxLjAwMDAwMDAwMCArMDIwMAotQEAgLTI1LDUgKzI1LDMgQEAKK2RpZmYgLS1naXQgYS91c3Iva2luaXQvcnVuLWluaXQvS2J1aWxkIGIvdXNyL2tpbml0L3J1bi1pbml0L0tidWlsZAoraW5kZXggZjc4MzJiNy4uYzE1M2IwYSAxMDA2NDQKKy0tLSBhL3Vzci9raW5pdC9ydW4taW5pdC9LYnVpbGQKKysrKyBiL3Vzci9raW5pdC9ydW4taW5pdC9LYnVpbGQKK0BAIC0zMCw1ICszMCwzIEBAIHNoYXJlZC9ydW4taW5pdC1saWIgOj0gLi4vbGliLmEKICAjIENsZWFuaW5nCiAgY2xlYW4tZGlycyA6PSBzdGF0aWMgc2hhcmVkCiAgCiAtIyBpbnN0YWxsIGJpbmFyeQogLWluc3RhbGwteSA6PSAkKHNoYXJlZC15KQotCi1JbmRleDoga2xpYmMtMS41LjI0L3Vzci9rbGliYy9LYnVpbGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3Vzci9rbGliYy9LYnVpbGQJMjAxMS0wNy0yNyAxNTo1MDo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL3Vzci9rbGliYy9LYnVpbGQJMjAxMS0wOC0wMSAwMDoxODoxMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNzcsNSArMTc3LDMgQEAKK2RpZmYgLS1naXQgYS91c3Iva2xpYmMvS2J1aWxkIGIvdXNyL2tsaWJjL0tidWlsZAoraW5kZXggZWJhNmFkZC4uOThjYWYyZSAxMDA2NDQKKy0tLSBhL3Vzci9rbGliYy9LYnVpbGQKKysrKyBiL3Vzci9rbGliYy9LYnVpbGQKK0BAIC0xODUsNSArMTg1LDMgQEAgaW5zdGFsbC1ydWxlOgogIAkgICAgICAgICAgJChJTlNUQUxMUk9PVCkkKElOU1RBTExESVIpLyQoS0xJQkNDUk9TUylsaWIpKQogIAkkKFEpJChpbnN0YWxsLWxpYikgJChvYmopL2tsaWJjLSQoU09MSUJIQVNIKS5zbyBcCiAgCSAgICAgICAgICAgICAgICAgICAgICAkKElOU1RBTExST09UKSQoSU5TVEFMTERJUikvJChLTElCQ0NST1NTKWxpYgogLQkkKFEpJChpbnN0YWxsLWxpYikgJChvYmopL2tsaWJjLSQoU09MSUJIQVNIKS5zbyBcCiAtCSAgICAgICAgICAgICAgICAgICAgICAkKElOU1RBTExST09UKSQoU0hMSUJESVIpCi0KLUluZGV4OiBrbGliYy0xLjUuMjQvdXNyL3V0aWxzL0tidWlsZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvdXNyL3V0aWxzL0tidWlsZAkyMDExLTA3LTI3IDE1OjUwOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGIvdXNyL3V0aWxzL0tidWlsZAkyMDExLTA4LTAxIDAwOjE5OjEzLjAwMDAwMDAwMCArMDIwMAotQEAgLTcyLDUgKzcyLDMgQEAKK2RpZmYgLS1naXQgYS91c3IvdXRpbHMvS2J1aWxkIGIvdXNyL3V0aWxzL0tidWlsZAoraW5kZXggMDVhYTc5NC4uNjdkOTQ4NiAxMDA2NDQKKy0tLSBhL3Vzci91dGlscy9LYnVpbGQKKysrKyBiL3Vzci91dGlscy9LYnVpbGQKK0BAIC03Miw1ICs3MiwzIEBAICQob2JqKS9zaGFyZWQvcmVib290ICQob2JqKS9zaGFyZWQvcG93ZXJvZmY6ICQob2JqKS9zaGFyZWQvaGFsdAogICMgQ2xlYW4gZGVsZXRlcyB0aGUgc3RhdGljIGFuZCBzaGFyZWQgZGlyCiAgY2xlYW4tZGlycyA6PSBzdGF0aWMgc2hhcmVkCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtdXRpbHMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLXV0aWxzLmluYwppbmRleCA5MDE0ZjUyLi43ZGYzM2Q2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtdXRpbHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy11dGlscy5pbmMKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICBsbiAtcyBnemlwICR7RH0ke2Jhc2VfYmluZGlyfS96Y2F0CiB9CiAKLUVYVFJBX0tMSUJDX0RFUFMgPSAiJHtAYmFzZV9jb25kaXRpb25hbCgnS0xJQkNfVVRJTFNfVkFSSUFOVCcsICdzaGFyZWQnLCAnJHtUSElTX0xJQktMSUJDfScsICcnLCBkKX0iCitFWFRSQV9LTElCQ19ERVBTID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdLTElCQ19VVElMU19WQVJJQU5UJywgJ3NoYXJlZCcsICcke1RISVNfTElCS0xJQkN9JywgJycsIGQpfSIKIAogUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7S0xJQkNfVVRJTFNfUEtHTkFNRX0tLioiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDEtTWFrZWZpbGUtYnVpbGQtdWJpLXV0aWxzLW9ubHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDAxLU1ha2VmaWxlLWJ1aWxkLXViaS11dGlscy1vbmx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYzJjY2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDAxLU1ha2VmaWxlLWJ1aWxkLXViaS11dGlscy1vbmx5LnBhdGNoCkBAIC0wLDAgKzEsODcgQEAKK0Zyb20gMWM5ODllNGMzNmQwYmY3NmFiNDQ0Zjk4NGJjNzNiOThlZWFjZDAzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjkgSnVuIDIwMTQgMDA6MzI6MjkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzldIE1ha2VmaWxlOiBidWlsZCB1YmktdXRpbHMgb25seQorCitXZSBidWlsZCBhbGwgdGhlIHN0YXRpYyB1YmktdXRpbHMgYnV0IGFjdHVhbGx5IG9ubHkgdWJpYXR0YWNoIGlzIG5lZWRlZCBpbgorYSBtaW5pbWFsaXN0aWMgaW5pdHJhbWZzIGZvciB0aGUgbW91bnQgb2YgdWJpIHZvbHVtZXMuCisKK01vcmUgZml4ZXMgYXJlIG5lZWRlZCBpbiBvcmRlciB0byBidWlsZCB0aGUgZnVsbCBtdGQtdXRpbHMuCitUaGUgZmlyc3QgaXNzdWUgaXM6CisKK3wgbWtmcy5qZmZzMi5jOjY0OjIwOiBmYXRhbCBlcnJvcjogbGliZ2VuLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK3wgICNpbmNsdWRlIDxsaWJnZW4uaD4KKworUmVtb3ZpbmcgdGhlIGluY2x1ZGUgdGhlbiB0aGUgc2Vjb25kIGVycm9yIGlzOgorCit8IG1rZnMuamZmczIuYzoxNTcwOjIyOiBlcnJvcjogJ19TQ19QQUdFU0laRScgdW5kZWNsYXJlZAorfCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCit8ICAgcGFnZV9zaXplID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSB8IDI2ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAzY2U4NTg3Li44Yjc5ZjcxIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMTYsMjggKzE2LDExIEBAIGVuZGlmCisgCisgVEVTVFMgPSB0ZXN0cworIAorLU1URF9CSU5TID0gXAorLQlmdGxfZm9ybWF0IGZsYXNoX2VyYXNlIG5hbmRkdW1wIGRvY19sb2FkYmlvcyBcCistCWZ0bF9jaGVjayBta2ZzLmpmZnMyIGZsYXNoX2xvY2sgZmxhc2hfdW5sb2NrIFwKKy0JZmxhc2hfb3RwX2luZm8gZmxhc2hfb3RwX2R1bXAgZmxhc2hfb3RwX2xvY2sgZmxhc2hfb3RwX3dyaXRlIFwKKy0JbXRkX2RlYnVnIGZsYXNoY3AgbmFuZHdyaXRlIG5hbmR0ZXN0IG10ZHBhcnQgXAorLQlqZmZzMmR1bXAgXAorLQluZnRsZHVtcCBuZnRsX2Zvcm1hdCBkb2NmZGlzayBcCistCXJmZGR1bXAgcmZkZm9ybWF0IFwKKy0Jc2VydmVfaW1hZ2UgcmVjdl9pbWFnZSBcCistCXN1bXRvb2wgamZmczJyZWFkZXIKKyBVQklfQklOUyA9IFwKKyAJdWJpdXBkYXRldm9sIHViaW1rdm9sIHViaXJtdm9sIHViaWNyYzMyIHViaW5mbyB1YmlhdHRhY2ggXAorIAl1YmlkZXRhY2ggdWJpbml6ZSB1Ymlmb3JtYXQgdWJpcmVuYW1lIG10ZGluZm8gdWJpcnN2b2wgdWJpYmxvY2sKKyAKKy1CSU5TID0gJChNVERfQklOUykKKy1CSU5TICs9IG1rZnMudWJpZnMvbWtmcy51YmlmcworLUJJTlMgKz0gJChhZGRwcmVmaXggdWJpLXV0aWxzLywkKFVCSV9CSU5TKSkKKy1TQ1JJUFRTID0gZmxhc2hfZXJhc2VhbGwKKy0KKy1UQVJHRVRTID0gJChCSU5TKQorLVRBUkdFVFMgKz0gbGliL2xpYm10ZC5hCistVEFSR0VUUyArPSB1YmktdXRpbHMvbGlidWJpLmEKKytCSU5TID0gJChhZGRwcmVmaXggdWJpLXV0aWxzLywkKFVCSV9CSU5TKSkKKyAKKyBPQkpERVBTID0gJChCVUlMRERJUikvaW5jbHVkZS92ZXJzaW9uLmgKKyAKK0BAIC02MSwxMiArNDQsOSBAQCBlbmRpZgorIAlybSAtZiAkKEJVSUxERElSKS9pbmNsdWRlL3ZlcnNpb24uaAorIAkkKE1BS0UpIC1DICQoVEVTVFMpIGNsZWFuCisgCistaW5zdGFsbDo6ICQoYWRkcHJlZml4ICQoQlVJTERESVIpLywke0JJTlN9KSAke1NDUklQVFN9CisraW5zdGFsbDo6ICQoYWRkcHJlZml4ICQoQlVJTERESVIpLywke0JJTlN9KQorIAlta2RpciAtcCAke0RFU1RESVJ9LyR7U0JJTkRJUn0KKyAJaW5zdGFsbCAtbSAwNzU1ICReICR7REVTVERJUn0vJHtTQklORElSfS8KKy0JbWtkaXIgLXAgJHtERVNURElSfS8ke01BTkRJUn0vbWFuMQorLQlpbnN0YWxsIC1tIDA2NDQgbWtmcy5qZmZzMi4xICR7REVTVERJUn0vJHtNQU5ESVJ9L21hbjEvCistCS1nemlwIC05ZiAke0RFU1RESVJ9LyR7TUFORElSfS9tYW4xLyouMQorIAorIHRlc3RzOjoKKyAJJChNQUtFKSAtQyAkKFRFU1RTKQorQEAgLTkxLDggKzcxLDYgQEAgTERMSUJTX21rZnMuamZmczIgID0gLWx6ICQoTFpPTERMSUJTKQorIExERkxBR1NfamZmczJyZWFkZXIgPSAkKFpMSUJMREZMQUdTKSAkKExaT0xERkxBR1MpCisgTERMSUJTX2pmZnMycmVhZGVyICA9IC1seiAkKExaT0xETElCUykKKyAKKy0kKGZvcmVhY2ggdiwkKE1URF9CSU5TKSwkKGV2YWwgJChjYWxsIG1rZGVwLCwkKHYpKSkpCistCisgIworICMgQ29tbW9uIGxpYm10ZAorICMKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwMi1jb21tb24ubWstZm9yLWtsaWJjLUNDLWlzLWtsY2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDAyLWNvbW1vbi5tay1mb3Ita2xpYmMtQ0MtaXMta2xjYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjNkMTFmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwMi1jb21tb24ubWstZm9yLWtsaWJjLUNDLWlzLWtsY2MucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA4OWM3NmJiZTgyYTIwMjlhMjViMDY1NGViMGExZDBiMjJkNmU2ODc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorRGF0ZTogU3VuLCAyOSBKdW4gMjAxNCAwMDozNzoyOCArMDIwMAorU3ViamVjdDogW1BBVENIIDIvOV0gY29tbW9uLm1rOiBmb3Iga2xpYmMgJChDQykgaXMga2xjYworCitEbyBub3QgaGFyZGNvZGU6IGFzc2lnbiB0aGUgdmFsdWUgdG8gdGhlIHZhcmlhYmxlIGlmIGl0IGlzIG5vdCBhbHJlYWR5IGRlZmluZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKy0tLQorIGNvbW1vbi5tayB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbW1vbi5tayBiL2NvbW1vbi5taworaW5kZXggYmE4NzM3Ny4uMTI2ZDExYSAxMDA2NDQKKy0tLSBhL2NvbW1vbi5taworKysrIGIvY29tbW9uLm1rCitAQCAtMSw0ICsxLDQgQEAKKy1DQyA6PSAkKENST1NTKWdjYworK0NDID89ICQoQ1JPU1MpZ2NjCisgQVIgOj0gJChDUk9TUylhcgorIFJBTkxJQiA6PSAkKENST1NTKXJhbmxpYgorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDAzLWxpYnViaS5jLWFkZC1rbGliYy1zcGVjaWZpYy1maXhlcy1mb3ItaW9jdGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDAzLWxpYnViaS5jLWFkZC1rbGliYy1zcGVjaWZpYy1maXhlcy1mb3ItaW9jdGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFkNGE1YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDMtbGlidWJpLmMtYWRkLWtsaWJjLXNwZWNpZmljLWZpeGVzLWZvci1pb2N0bC5wYXRjaApAQCAtMCwwICsxLDc2IEBACitGcm9tIGZlY2JiNzA1NmQ2MjFhMzBmNzEwNmU2N2Y1ZmUyMDk3NjM1NzFiNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDI5IEp1biAyMDE0IDAwOjQwOjE1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMy85XSBsaWJ1YmkuYzogYWRkIGtsaWJjIHNwZWNpZmljIGZpeGVzIGZvciBpb2N0bAorCitGaXJzdCBpc3N1ZSBpcyB0aGF0IGlvY3RsKCkgaW4ga2xpYmMgZG9lc24ndCBleHBlY3QgYSBjb25zdGFudCBhcyBhcmczLgorU2Vjb25kIGlzc3VlIGlzIHRoYXQgYXJnMyBpbiBrbGliYyBpb2N0bCgpIGltcGxlbWVudGF0aW9uIGlzIG5vdCBvcHRpb25hbC4KKworRml4ZXM6CisKK3wgdWJpLXV0aWxzL2xpYnViaS5jOiBJbiBmdW5jdGlvbiAnZG9fYXR0YWNoJzoKK3wgdWJpLXV0aWxzL2xpYnViaS5jOjY5ODo4OiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDMgb2YgJ2lvY3RsJyBkaXNjYXJkcworfCAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUKK3wgICByZXQgPSBpb2N0bChmZCwgVUJJX0lPQ0FUVCwgcik7Cit8ICAgICAgICAgXgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gdWJpLXV0aWxzL2xpYnViaS5jOjMyOjA6Cit8IC4uLi9saWIva2xpYmMvaW5jbHVkZS9zeXMvaW9jdGwuaDoxNToxNDogbm90ZTogZXhwZWN0ZWQgJ3ZvaWQgKicgYnV0IGFyZ3VtZW50Cit8IGlzIG9mIHR5cGUgJ2NvbnN0IHN0cnVjdCB1YmlfYXR0YWNoX3JlcSAqJworfCAgX19leHRlcm4gaW50IGlvY3RsKGludCwgaW50LCB2b2lkICopOworfCAgICAgICAgICAgICAgIF4KKworfCB1YmktdXRpbHMvbGlidWJpLmM6IEluIGZ1bmN0aW9uICd1Ymlfdm9sX2Jsb2NrX2NyZWF0ZSc6Cit8IHViaS11dGlscy9saWJ1YmkuYzoxMTE4Ojk6IGVycm9yOiB0b28gZmV3IGFyZ3VtZW50cyB0byBmdW5jdGlvbiAnaW9jdGwnCit8ICAgcmV0dXJuIGlvY3RsKGZkLCBVQklfSU9DVk9MQ1JCTEspOworfCAgICAgICAgICBeCit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSB1YmktdXRpbHMvbGlidWJpLmM6MzI6MDoKK3wgLi4uL2xpYi9rbGliYy9pbmNsdWRlL3N5cy9pb2N0bC5oOjE1OjE0OiBub3RlOiBkZWNsYXJlZCBoZXJlCit8ICBfX2V4dGVybiBpbnQgaW9jdGwoaW50LCBpbnQsIHZvaWQgKik7Cit8ICAgICAgICAgICAgICAgXgorfCB1YmktdXRpbHMvbGlidWJpLmM6IEluIGZ1bmN0aW9uICd1Ymlfdm9sX2Jsb2NrX3JlbW92ZSc6Cit8IHViaS11dGlscy9saWJ1YmkuYzoxMTIzOjk6IGVycm9yOiB0b28gZmV3IGFyZ3VtZW50cyB0byBmdW5jdGlvbiAnaW9jdGwnCit8ICAgcmV0dXJuIGlvY3RsKGZkLCBVQklfSU9DVk9MUk1CTEspOworfCAgICAgICAgICBeCit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSB1YmktdXRpbHMvbGlidWJpLmM6MzI6MDoKK3wgLi4uL3Vzci9saWIva2xpYmMvaW5jbHVkZS9zeXMvaW9jdGwuaDoxNToxNDogbm90ZTogZGVjbGFyZWQgaGVyZQorfCAgX19leHRlcm4gaW50IGlvY3RsKGludCwgaW50LCB2b2lkICopOworfCAgICAgICAgICAgICAgIF4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CistLS0KKyB1YmktdXRpbHMvbGlidWJpLmMgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS91YmktdXRpbHMvbGlidWJpLmMgYi91YmktdXRpbHMvbGlidWJpLmMKK2luZGV4IDk3YzA0MzQuLjJiNDk4MzMgMTAwNjQ0CistLS0gYS91YmktdXRpbHMvbGlidWJpLmMKKysrKyBiL3ViaS11dGlscy9saWJ1YmkuYworQEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIGxpYnViaV9jbG9zZShsaWJ1YmlfdCBkZXNjKQorICAqIHN1Y2Nlc3MgYW5kICUtMSBpbiBjYXNlIG9mIGZhaWx1cmUuIEByLT51YmlfbnVtIGNvbnRhaW5zIG5ld2x5IGNyZWF0ZWQgVUJJCisgICogZGV2aWNlIG51bWJlci4KKyAgKi8KKy1zdGF0aWMgaW50IGRvX2F0dGFjaChjb25zdCBjaGFyICpub2RlLCBjb25zdCBzdHJ1Y3QgdWJpX2F0dGFjaF9yZXEgKnIpCisrc3RhdGljIGludCBkb19hdHRhY2goY29uc3QgY2hhciAqbm9kZSwgc3RydWN0IHViaV9hdHRhY2hfcmVxICpyKQorIHsKKyAJaW50IGZkLCByZXQ7CisgCitAQCAtMTExNSwxMiArMTExNSwxMiBAQCBpbnQgdWJpX3Jzdm9sKGxpYnViaV90IGRlc2MsIGNvbnN0IGNoYXIgKm5vZGUsIGludCB2b2xfaWQsIGxvbmcgbG9uZyBieXRlcykKKyAKKyBpbnQgdWJpX3ZvbF9ibG9ja19jcmVhdGUoaW50IGZkKQorIHsKKy0JcmV0dXJuIGlvY3RsKGZkLCBVQklfSU9DVk9MQ1JCTEspOworKwlyZXR1cm4gaW9jdGwoZmQsIFVCSV9JT0NWT0xDUkJMSywgTlVMTCk7CisgfQorIAorIGludCB1Ymlfdm9sX2Jsb2NrX3JlbW92ZShpbnQgZmQpCisgeworLQlyZXR1cm4gaW9jdGwoZmQsIFVCSV9JT0NWT0xSTUJMSyk7CisrCXJldHVybiBpb2N0bChmZCwgVUJJX0lPQ1ZPTFJNQkxLLCBOVUxMKTsKKyB9CisgCisgaW50IHViaV91cGRhdGVfc3RhcnQobGlidWJpX3QgZGVzYywgaW50IGZkLCBsb25nIGxvbmcgYnl0ZXMpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDQtUmVzdG9yZS1jb21wYXRpYmlsaXR5LXRvLWRpZXRsaWJjLWtsaWJjLW11c2wtbGliYy1hZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDQtUmVzdG9yZS1jb21wYXRpYmlsaXR5LXRvLWRpZXRsaWJjLWtsaWJjLW11c2wtbGliYy1hZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjMxZmI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwNC1SZXN0b3JlLWNvbXBhdGliaWxpdHktdG8tZGlldGxpYmMta2xpYmMtbXVzbC1saWJjLWFmLnBhdGNoCkBAIC0wLDAgKzEsODggQEAKK0Zyb20gYjY2OGNiNzVjYjdlNzJmZjkyMDU1MjA5MTMwZDRjZDRiM2NhY2JkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob3JzdGVuIEdsYXNlciA8dGdAbWlyYnNkLm9yZz4KK0RhdGU6IEZyaSwgMjAgSnVuIDIwMTQgMTA6NTY6MjcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzldIFJlc3RvcmUgY29tcGF0aWJpbGl0eSB0byBkaWV0bGliYywga2xpYmMsIG11c2wgbGliYyBhZnRlcgorIGNvbW1pdCA0ZjFiMTA4CitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0VhY2ggQyBsaWJyYXJ5IGhhcyB0aGVpciBvd24gd2F5IHRvIGRlZmluZSBvZmZfdCwgYW5kIHRoZSA8ZmVhdHVyZXMuaD4KK2hlYWRlciBpcyBub25zdGFuZGFyZCBhbmQgc3BlY2lmaWMgdG8gdGhlIEdOVSBsaWJjIGFuZCB0aG9zZSB0aGF0IGNsb25lCitpdCAodUNsaWJjKS4gRmVmZeKAmXMgZGlldGxpYmMgdXNlcyBkaWZmZXJlbnQgZmxhZ3MsIGFuZCBrbGliYyBhbHdheXMgdXNlcworYSA2NC1iaXQgb2ZmX3QgKGxpa2UgdGhlIEJTRHMpOyBtdXNsIGxpYmMgY2Fubm90IGJlIHJlY29nbmlzZWQgdXNpbmcgY3BwCitpbnN0cnVjdGlvbnMsIHNvIHdlIGFzc3VtZSA2NCBiaXQgdGhlcmUgKGFuZCBvbiB1bmtub3duIEMgbGlicmFyaWVzKSBhbmQKK2xlYXZlIGl0IHRvIHRoZSB1c2VyIHRvIHN1Ym1pdCBhIGZvbGxvdy11cCBmaXggaWYgd2UgZ3Vlc3Mgd3JvbmcuIEkgYWxzbworYWRkZWQgYSBzdGF0aWMgYXNzZXJ0aW9uIHRvIHZlcmlmeSB0aGUgNjQgYml0IGd1ZXNzIGlzIGNvcnJlY3QuCisKK0l0IHdvdWxkIGJlIHJlYWxseSBiZXR0ZXIgdXNpbmcgYSBjb25maWd1cmUgc2NyaXB0IGZvciB0aGlzIGluc3RlYWQuCisKK0ZpeGVzOgorfCAgIENDICAgICAgbGliL2xpYm10ZC5vCit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSB1YmktdXRpbHMvdWJpdXRpbHMtY29tbW9uLmM6MzU6MDoKK3wgLi9pbmNsdWRlL2NvbW1vbi5oOjI5OjIyOiBmYXRhbCBlcnJvcjogZmVhdHVyZXMuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorfCAgI2luY2x1ZGUgPGZlYXR1cmVzLmg+Cit8ICAgICAgICAgICAgICAgICAgICAgICBeCit8IGNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IFRob3JzdGVuIEdsYXNlciA8dGdAbWlyYnNkLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKy0tLQorIGluY2x1ZGUvY29tbW9uLmggfCAyNCArKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb21tb24uaCBiL2luY2x1ZGUvY29tbW9uLmgKK2luZGV4IGZiMGNhODMuLjVhMjA5NjQgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2NvbW1vbi5oCisrKysgYi9pbmNsdWRlL2NvbW1vbi5oCitAQCAtMjYsNyArMjYsOSBAQAorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19VQ0xJQkNfXykKKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSAidmVyc2lvbi5oIgorIAorQEAgLTY3LDYgKzY5LDIxIEBAIGV4dGVybiAiQyIgeworICNlbmRpZgorIAorIC8qIGRlZmluZSBhIHByaW50IGZvcm1hdCBzcGVjaWZpZXIgZm9yIG9mZl90ICovCisrI2lmIGRlZmluZWQoX19LTElCQ19fKQorKy8qIGFsd2F5cyA2NCBiaXQgb24ga2xpYmMgKi8KKysjZGVmaW5lIFBSSXhvZmZfdCBQUkl4NjQKKysjZGVmaW5lIFBSSWRvZmZfdCBQUklkNjQKKysjZWxpZiBkZWZpbmVkKF9fZGlldGxpYmNfXykKKysvKiBkZXBlbmRzIG9uIGNvbXBpbGVyIGZsYWdzIG9uIGRpZXRsaWJjICovCisrI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIChfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKKysjZGVmaW5lIFBSSXhvZmZfdCBQUkl4NjQKKysjZGVmaW5lIFBSSWRvZmZfdCBQUklkNjQKKysjZWxzZQorKyNkZWZpbmUgUFJJeG9mZl90ICJsIlBSSXgzMgorKyNkZWZpbmUgUFJJZG9mZl90ICJsIlBSSWQzMgorKyNlbmRpZgorKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKF9fVUNMSUJDX18pCisrLyogZGVwZW5kcyBvbiBjb21waWxlciBmbGFncyBvbiBnbGliYyBhbmQgdUNsaWJjICovCisgI2lmZGVmIF9fVVNFX0ZJTEVfT0ZGU0VUNjQKKyAjZGVmaW5lIFBSSXhvZmZfdCBQUkl4NjQKKyAjZGVmaW5lIFBSSWRvZmZfdCBQUklkNjQKK0BAIC03NCw2ICs5MSwxMyBAQCBleHRlcm4gIkMiIHsKKyAjZGVmaW5lIFBSSXhvZmZfdCAibCJQUkl4MzIKKyAjZGVmaW5lIFBSSWRvZmZfdCAibCJQUklkMzIKKyAjZW5kaWYKKysjZWxzZQorKy8qIHVua25vd24gbGliYyBvciBtdXNsICovCisrI2RlZmluZSBQUkl4b2ZmX3QgUFJJeDY0CisrI2RlZmluZSBQUklkb2ZmX3QgUFJJZDY0CisrLyogdmVyaWZ5IG91ciBndWVzcyBvZiA2NCBiaXQgaXMgY29ycmVjdCAqLworK3N0YXRpYyBjaGFyIF9fUFJJeG9mZl90X3N0YXRpY19hc3NlcnRbc2l6ZW9mKG9mZl90KSA9PSA4ID8gMSA6IC0xXTsKKysjZW5kaWYKKyAKKyAvKiBWZXJib3NlIG1lc3NhZ2VzICovCisgI2RlZmluZSBiYXJldmVyYm9zZSh2ZXJib3NlLCBmbXQsIC4uLikgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwNS1jb21tb24uaC1tb3JlLXdvcmthcm91bmRzLWZvci1rbGliYy1jb21wYXRpYmlsaXR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwNS1jb21tb24uaC1tb3JlLXdvcmthcm91bmRzLWZvci1rbGliYy1jb21wYXRpYmlsaXR5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMDlhNzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDA1LWNvbW1vbi5oLW1vcmUtd29ya2Fyb3VuZHMtZm9yLWtsaWJjLWNvbXBhdGliaWxpdHkucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorRnJvbSA1ZDRhNjZiNTAyMDAzZWYzODVkYWIzMWExNzAxMjI0NjQwN2U3MzY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorRGF0ZTogU3VuLCAyOSBKdW4gMjAxNCAwMDo0NDowMyArMDIwMAorU3ViamVjdDogW1BBVENIIDUvOV0gY29tbW9uLmg6IG1vcmUgd29ya2Fyb3VuZHMgZm9yIGtsaWJjIGNvbXBhdGliaWxpdHkKKworUGF0Y2ggaXMgYWRkcmVzc2luZyB0d28gaXNzdWVzOgorKiBGaXJzdCwgIEtsaWJjIGRvZXNuJ3QgaGF2ZSBycG1hdGNoKCkuCisqIFNlY29uZCwgS2xpYmMgbGFja3MgZ2V0bGluZSgpCisKK0ZpeGVzOgorfCAgIExEICAgICAgdWJpLXV0aWxzL3ViaWZvcm1hdAorfCAuLi4vZ2l0L3ViaS11dGlscy91Ymlmb3JtYXQubzogSW4gZnVuY3Rpb24gYHByb21wdCc6Cit8IC4uLi9naXQvLi9pbmNsdWRlL2NvbW1vbi5oOjE1NzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZ2V0bGluZScKK3wgLi4uL2dpdC8uL2luY2x1ZGUvY29tbW9uLmg6MTY0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBycG1hdGNoJworfCAuLi4vZ2l0Ly4vaW5jbHVkZS9jb21tb24uaDoxNTc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGxpbmUnCit8IC4uLi9naXQvLi9pbmNsdWRlL2NvbW1vbi5oOjE2NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcnBtYXRjaCcKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorLS0tCisgaW5jbHVkZS9jb21tb24uaCB8IDggKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb21tb24uaCBiL2luY2x1ZGUvY29tbW9uLmgKK2luZGV4IDVhMjA5NjQuLjJmNTFlMWMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2NvbW1vbi5oCisrKysgYi9pbmNsdWRlL2NvbW1vbi5oCitAQCAtMTYxLDE1ICsxNjEsMTcgQEAgc3RhdGljIGlubGluZSBpbnQgX19ycG1hdGNoKGNvbnN0IGNoYXIgKnJlc3ApCisgICovCisgc3RhdGljIGlubGluZSBib29sIHByb21wdChjb25zdCBjaGFyICptc2csIGJvb2wgZGVmKQorIHsKKy0JY2hhciAqbGluZSA9IE5VTEw7CistCXNpemVfdCBsZW47CisrCWNoYXIgKmxpbmU7CisgCWJvb2wgcmV0ID0gZGVmOworIAorKwljb25zdCBpbnQgc2l6ZW9mX2xpbmUgPSAyOworKwlsaW5lID0gbWFsbG9jKHNpemVvZl9saW5lKTsKKysKKyAJZG8geworIAkJbm9ybXNnX2NvbnQoIiVzICglYy8lYykgIiwgbXNnLCBkZWYgPyAnWScgOiAneScsIGRlZiA/ICduJyA6ICdOJyk7CisgCQlmZmx1c2goc3Rkb3V0KTsKKyAKKy0JCXdoaWxlIChnZXRsaW5lKCZsaW5lLCAmbGVuLCBzdGRpbikgPT0gLTEpIHsKKysJCXdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2ZfbGluZSwgc3RkaW4pID09IE5VTEwpIHsKKyAJCQlwcmludGYoImZhaWxlZCB0byByZWFkIHByb21wdDsgYXNzdW1pbmcgJyVzJ1xuIiwKKyAJCQkJZGVmID8gInllcyIgOiAibm8iKTsKKyAJCQlicmVhazsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwNi1saWJpbmlwYXJzZXItcmVtb3ZlLXVudXNlZC1mdW5jdGlvbi1uZWVkaW5nLWZsb2F0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwNi1saWJpbmlwYXJzZXItcmVtb3ZlLXVudXNlZC1mdW5jdGlvbi1uZWVkaW5nLWZsb2F0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNDZmOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDA2LWxpYmluaXBhcnNlci1yZW1vdmUtdW51c2VkLWZ1bmN0aW9uLW5lZWRpbmctZmxvYXQucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSAyYWYzMGU5YjI5ODgxMTFlNDVlZDZlYTZhZjU1ZTQ5ZWM3Y2IxY2IxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorRGF0ZTogU3VuLCAyOSBKdW4gMjAxNCAwMDo0NDo1NyArMDIwMAorU3ViamVjdDogW1BBVENIIDYvOV0gbGliaW5pcGFyc2VyOiByZW1vdmUgdW51c2VkIGZ1bmN0aW9uIG5lZWRpbmcgZmxvYXQKKworRml4ZXM6Cit8ICAgTEQgICAgICB1YmktdXRpbHMvdWJpZm9ybWF0Cit8IC4uLi9naXQvdWJpLXV0aWxzL2xpYmluaXBhcnNlci5hKGxpYmluaXBhcnNlci5vKTogSW4gZnVuY3Rpb24KK3wgYCAgTEQgICAgICB1YmktdXRpbHMvdWJpcmVuYW1lCit8IGluaXBhcnNlcl9nZXRkb3VibGUnOgorfCAuLi4vZ2l0L3ViaS11dGlscy9saWJpbmlwYXJzZXIuYzozMzY6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGF0b2YnCisKK0dyZXAgZG9lc24ndCByZXZlYWwgYW55IG9jY3VycmVuY2Ugb2YgaW5pcGFyc2VyX2dldGRvdWJsZSgpLCB1c2luZyBhdG9mKCkgc28KK3JlbW92ZSBpdDogZmxvYXRpbmctcG9pbnQgaXMgbm90IHN1cHBvcnRlZCBpbiBrbGliYworCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKy0tLQorIHViaS11dGlscy9pbmNsdWRlL2xpYmluaXBhcnNlci5oIHwgMTUgLS0tLS0tLS0tLS0tLS0tCisgdWJpLXV0aWxzL2xpYmluaXBhcnNlci5jICAgICAgICAgfCAyMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3ViaS11dGlscy9pbmNsdWRlL2xpYmluaXBhcnNlci5oIGIvdWJpLXV0aWxzL2luY2x1ZGUvbGliaW5pcGFyc2VyLmgKK2luZGV4IGJlM2M2NjcuLmFiZDc3YWEgMTAwNjQ0CistLS0gYS91YmktdXRpbHMvaW5jbHVkZS9saWJpbmlwYXJzZXIuaAorKysrIGIvdWJpLXV0aWxzL2luY2x1ZGUvbGliaW5pcGFyc2VyLmgKK0BAIC0xNTgsMjEgKzE1OCw2IEBAIGludCBpbmlwYXJzZXJfZ2V0aW50KGRpY3Rpb25hcnkgKiBkLCBjb25zdCBjaGFyICoga2V5LCBpbnQgbm90Zm91bmQpOworIAorIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgLyoqCistICBAYnJpZWYgICAgR2V0IHRoZSBzdHJpbmcgYXNzb2NpYXRlZCB0byBhIGtleSwgY29udmVydCB0byBhIGRvdWJsZQorLSAgQHBhcmFtICAgIGQgRGljdGlvbmFyeSB0byBzZWFyY2gKKy0gIEBwYXJhbSAgICBrZXkgS2V5IHN0cmluZyB0byBsb29rIGZvcgorLSAgQHBhcmFtICAgIG5vdGZvdW5kIFZhbHVlIHRvIHJldHVybiBpbiBjYXNlIG9mIGVycm9yCistICBAcmV0dXJuICAgZG91YmxlCistCistICBUaGlzIGZ1bmN0aW9uIHF1ZXJpZXMgYSBkaWN0aW9uYXJ5IGZvciBhIGtleS4gQSBrZXkgYXMgcmVhZCBmcm9tIGFuCistICBpbmkgZmlsZSBpcyBnaXZlbiBhcyAic2VjdGlvbjprZXkiLiBJZiB0aGUga2V5IGNhbm5vdCBiZSBmb3VuZCwKKy0gIHRoZSBub3Rmb3VuZCB2YWx1ZSBpcyByZXR1cm5lZC4KKy0gKi8KKy0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy1kb3VibGUgaW5pcGFyc2VyX2dldGRvdWJsZShkaWN0aW9uYXJ5ICogZCwgY2hhciAqIGtleSwgZG91YmxlIG5vdGZvdW5kKTsKKy0KKy0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLS8qKgorICAgQGJyaWVmICAgIEdldCB0aGUgc3RyaW5nIGFzc29jaWF0ZWQgdG8gYSBrZXksIGNvbnZlcnQgdG8gYSBib29sZWFuCisgICBAcGFyYW0gICAgZCBEaWN0aW9uYXJ5IHRvIHNlYXJjaAorICAgQHBhcmFtICAgIGtleSBLZXkgc3RyaW5nIHRvIGxvb2sgZm9yCitkaWZmIC0tZ2l0IGEvdWJpLXV0aWxzL2xpYmluaXBhcnNlci5jIGIvdWJpLXV0aWxzL2xpYmluaXBhcnNlci5jCitpbmRleCA4OThmNTdmLi5iYTcwYzA4IDEwMDY0NAorLS0tIGEvdWJpLXV0aWxzL2xpYmluaXBhcnNlci5jCisrKysgYi91YmktdXRpbHMvbGliaW5pcGFyc2VyLmMKK0BAIC0zMTYsMjggKzMxNiw2IEBAIGludCBpbmlwYXJzZXJfZ2V0aW50KGRpY3Rpb25hcnkgKiBkLCBjb25zdCBjaGFyICoga2V5LCBpbnQgbm90Zm91bmQpCisgCisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAvKioKKy0gIEBicmllZiAgICBHZXQgdGhlIHN0cmluZyBhc3NvY2lhdGVkIHRvIGEga2V5LCBjb252ZXJ0IHRvIGEgZG91YmxlCistICBAcGFyYW0gICAgZCBEaWN0aW9uYXJ5IHRvIHNlYXJjaAorLSAgQHBhcmFtICAgIGtleSBLZXkgc3RyaW5nIHRvIGxvb2sgZm9yCistICBAcGFyYW0gICAgbm90Zm91bmQgVmFsdWUgdG8gcmV0dXJuIGluIGNhc2Ugb2YgZXJyb3IKKy0gIEByZXR1cm4gICBkb3VibGUKKy0KKy0gIFRoaXMgZnVuY3Rpb24gcXVlcmllcyBhIGRpY3Rpb25hcnkgZm9yIGEga2V5LiBBIGtleSBhcyByZWFkIGZyb20gYW4KKy0gIGluaSBmaWxlIGlzIGdpdmVuIGFzICJzZWN0aW9uOmtleSIuIElmIHRoZSBrZXkgY2Fubm90IGJlIGZvdW5kLAorLSAgdGhlIG5vdGZvdW5kIHZhbHVlIGlzIHJldHVybmVkLgorLSAqLworLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLWRvdWJsZSBpbmlwYXJzZXJfZ2V0ZG91YmxlKGRpY3Rpb25hcnkgKiBkLCBjaGFyICoga2V5LCBkb3VibGUgbm90Zm91bmQpCisteworLSAgICBjaGFyICAgICogICBzdHIgOworLQorLSAgICBzdHIgPSBpbmlwYXJzZXJfZ2V0c3RyaW5nKGQsIGtleSwgSU5JX0lOVkFMSURfS0VZKTsKKy0gICAgaWYgKHN0cj09SU5JX0lOVkFMSURfS0VZKSByZXR1cm4gbm90Zm91bmQgOworLSAgICByZXR1cm4gYXRvZihzdHIpOworLX0KKy0KKy0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLS8qKgorICAgQGJyaWVmICAgIEdldCB0aGUgc3RyaW5nIGFzc29jaWF0ZWQgdG8gYSBrZXksIGNvbnZlcnQgdG8gYSBib29sZWFuCisgICBAcGFyYW0gICAgZCBEaWN0aW9uYXJ5IHRvIHNlYXJjaAorICAgQHBhcmFtICAgIGtleSBLZXkgc3RyaW5nIHRvIGxvb2sgZm9yCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDctbXRkLXV0aWxzLWNvbW1vbi5jLWNvbnZlcnQtdG8taW50ZWdlci1hcml0aG1ldGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwNy1tdGQtdXRpbHMtY29tbW9uLmMtY29udmVydC10by1pbnRlZ2VyLWFyaXRobWV0aWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZiMDEyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDctbXRkLXV0aWxzLWNvbW1vbi5jLWNvbnZlcnQtdG8taW50ZWdlci1hcml0aG1ldGljLnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gNDFlN2M3NmIwODUzYmY1MjQxYjM4YjgxNjdkZmQ1N2MyN2ZlZjFlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjggSmFuIDIwMTggMjE6NDc6NTkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA3LzldIG10ZC11dGlsczogY29tbW9uLmM6IGNvbnZlcnQgdG8gaW50ZWdlciBhcml0aG1ldGljCisKK1dlIHVzZSBmbG9hdGluZyBwb2ludCBqdXN0IHRvIHByaW50IG91dCBLaUIsIE1pQiwgR2lCLgorQXZvaWQgdGhhdCB0byBiZSBrbGliYyBmcmllbmRseS4KKworRml4ZXMgY29tcGlsYXRpb24gZm9yIGFhcmNoNjQgYWdhaW5zdCBrbGliYzoKKworZXJyb3I6ICctbWdlbmVyYWwtcmVncy1vbmx5JyBpcyBpbmNvbXBhdGlibGUgd2l0aCBmbG9hdGluZy1wb2ludCBhcmd1bWVudAorfCAgICBwcmludGYoIiVzJS4xZiBHaUIiLCBwLCAoZG91YmxlKWJ5dGVzIC8gKDEwMjQgKiAxMDI0ICogMTAyNCkpOworZXRjLgorCitOb3RlOgorKiBJbiB0aGUgS2lCIGNhc2UsIHdlIGNvdWxkIGFwcGFyZW50bHkgbXVsdGlwbHkgYnkgMTAwIGJlZm9yZSBkaXZpZGluZworICB3aXRob3V0IHJpc2tpbmcgb3ZlcmZsb3cuIFRoaXMgY29kZSBzaW1wbHkgYXZvaWRzIG11bHRpcGxpY2F0aW9ucy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorLS0tCisgdWJpLXV0aWxzL3ViaXV0aWxzLWNvbW1vbi5jIHwgMTggKysrKysrKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS91YmktdXRpbHMvdWJpdXRpbHMtY29tbW9uLmMgYi91YmktdXRpbHMvdWJpdXRpbHMtY29tbW9uLmMKK2luZGV4IDY2MDlhNmIuLjBkZWQyYTQgMTAwNjQ0CistLS0gYS91YmktdXRpbHMvdWJpdXRpbHMtY29tbW9uLmMKKysrKyBiL3ViaS11dGlscy91Yml1dGlscy1jb21tb24uYworQEAgLTEwNyw2ICsxMDcsOSBAQCBsb25nIGxvbmcgdWJpdXRpbHNfZ2V0X2J5dGVzKGNvbnN0IGNoYXIgKnN0cikKKyB2b2lkIHViaXV0aWxzX3ByaW50X2J5dGVzKGxvbmcgbG9uZyBieXRlcywgaW50IGJyYWNrZXQpCisgeworIAljb25zdCBjaGFyICpwOworKwlpbnQgR2lCID0gMTAyNCAqIDEwMjQgKiAxMDI0OworKwlpbnQgTWlCID0gMTAyNCAqIDEwMjQ7CisrCWludCBLaUIgPSAxMDI0OworIAorIAlpZiAoYnJhY2tldCkKKyAJCXAgPSAiICgiOworQEAgLTExNSwxMiArMTE4LDE1IEBAIHZvaWQgdWJpdXRpbHNfcHJpbnRfYnl0ZXMobG9uZyBsb25nIGJ5dGVzLCBpbnQgYnJhY2tldCkKKyAKKyAJcHJpbnRmKCIlbGxkIGJ5dGVzIiwgYnl0ZXMpOworIAorLQlpZiAoYnl0ZXMgPiAxMDI0ICogMTAyNCAqIDEwMjQpCistCQlwcmludGYoIiVzJS4xZiBHaUIiLCBwLCAoZG91YmxlKWJ5dGVzIC8gKDEwMjQgKiAxMDI0ICogMTAyNCkpOworLQllbHNlIGlmIChieXRlcyA+IDEwMjQgKiAxMDI0KQorLQkJcHJpbnRmKCIlcyUuMWYgTWlCIiwgcCwgKGRvdWJsZSlieXRlcyAvICgxMDI0ICogMTAyNCkpOworLQllbHNlIGlmIChieXRlcyA+IDEwMjQgJiYgYnl0ZXMgIT0gMCkKKy0JCXByaW50ZigiJXMlLjFmIEtpQiIsIHAsIChkb3VibGUpYnl0ZXMgLyAxMDI0KTsKKysJaWYgKGJ5dGVzID4gR2lCKQorKwkJcHJpbnRmKCIlcyVsbGQuJWxsZCBHaUIiLCBwLAorKwkJICAgICAgIGJ5dGVzIC8gR2lCLCBieXRlcyAlIEdpQiAvIChHaUIgLyAxMCkpOworKwllbHNlIGlmIChieXRlcyA+IE1pQikKKysJCXByaW50ZigiJXMlbGxkLiVsbGQgTWlCIiwgcCwKKysJCSAgICAgICBieXRlcyAvIE1pQiwgYnl0ZXMgJSBNaUIgLyAoTWlCIC8gMTApKTsKKysJZWxzZSBpZiAoYnl0ZXMgPiBLaUIgJiYgYnl0ZXMgIT0gMCkKKysJCXByaW50ZigiJXMlbGxkLiVsbGQgS2lCIiwgcCwKKysJCSAgICAgICBieXRlcyAvIEtpQiwgYnl0ZXMgJSBLaUIgLyAoS2lCIC8gMTApKTsKKyAJZWxzZQorIAkJcmV0dXJuOworIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDA4LXViaS11dGlscy11Ymlmb3JtYXQuYy1jb252ZXJ0LXRvLWludGVnZXItYXJpdGhtZXRpYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDgtdWJpLXV0aWxzLXViaWZvcm1hdC5jLWNvbnZlcnQtdG8taW50ZWdlci1hcml0aG1ldGljLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZDA1NzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDA4LXViaS11dGlscy11Ymlmb3JtYXQuYy1jb252ZXJ0LXRvLWludGVnZXItYXJpdGhtZXRpYy5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIGU2ZjFhODVjMGEzZGYyNGZlM2NhOWE1MjBkYzY5NzEwNWU3NWE4MGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI3IEphbiAyMDE4IDA5OjM5OjI2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggOC85XSB1YmktdXRpbHM6IHViaWZvcm1hdC5jOiBjb252ZXJ0IHRvIGludGVnZXIgYXJpdGhtZXRpYworCitEbyBub3QgY2FzdCBwZXJjZW50IHRvIGRvdWJsZSwgaXQgaXMganVzdCB1c2VkIGFzIHVwcGVyIGxpbWl0LgorQXZvaWQgZmxvYXRpbmcgcG9pbnQgdG8gZml4IGNvbXBpbGF0aW9uIGZvciBhYXJjaDY0IGFnYWluc3Qga2xpYmM6CisKK2Vycm9yOiAnLW1nZW5lcmFsLXJlZ3Mtb25seScgaXMgaW5jb21wYXRpYmxlIHdpdGggZmxvYXRpbmctcG9pbnQgY29kZQorfCAgICBpbnQgcGVyY2VudCA9ICgoZG91YmxlKXNpLT5va19jbnQpL3NpLT5nb29kX2NudCAqIDEwMDsKK3wgICAgICAgIF5+fn5+fn4KKworTm90ZXM6CisqIFRoZSBjaGVja3MgaW4gdGhlIGNvZGUgYWJvdmUgdGhpcyBsaW5lIGVuc3VyZSB0aGF0IHNpLT5nb29kX2NudCBpcyBub3QgMC4KKworKiBUaGUgY29kZSBhc3N1bWVzICBzaS0+Z29vZF9jbnQgKiAxMDAgIHdpbGwgbm90IG92ZXJmbG93LCB0aGVuIHdlIGNhbiB1c2UKKyAgKHNpLT5va19jbnQgKiAxMDApIHNhZmVseSBiZWNhdXNlIHRoZSBmb3JtZXIgaXMgYmlnZ2VyLgorCisqIFRoZSB0cnVuY2F0ZWQgcmVzdWx0IGRvZXMgbm90IGFmZmVjdCB0aGUgbG9naWM6CisgIGkuZS4gYSB2YWx1ZSBvZiA0OS45IGlzIHRydW5jYXRlZCB0byA0OSBhbmQgaXMgc3RpbGwgPDUwLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CistLS0KKyB1YmktdXRpbHMvdWJpZm9ybWF0LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS91YmktdXRpbHMvdWJpZm9ybWF0LmMgYi91YmktdXRpbHMvdWJpZm9ybWF0LmMKK2luZGV4IDIxNDA5Y2EuLmQ5MzE2NGEgMTAwNjQ0CistLS0gYS91YmktdXRpbHMvdWJpZm9ybWF0LmMKKysrKyBiL3ViaS11dGlscy91Ymlmb3JtYXQuYworQEAgLTg0Myw3ICs4NDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqIGNvbnN0IGFyZ3ZbXSkKKyAJfQorIAorIAlpZiAoIWFyZ3Mub3ZlcnJpZGVfZWMgJiYgc2ktPmVtcHR5X2NudCA8IHNpLT5nb29kX2NudCkgeworLQkJaW50IHBlcmNlbnQgPSAoKGRvdWJsZSlzaS0+b2tfY250KS9zaS0+Z29vZF9jbnQgKiAxMDA7CisrCQlpbnQgcGVyY2VudCA9IChzaS0+b2tfY250ICogMTAwKSAvIHNpLT5nb29kX2NudDsKKyAKKyAJCS8qCisgCQkgKiBNYWtlIHN1cmUgdGhlIG1ham9yaXR5IG9mIGVyYXNlYmxvY2tzIGhhdmUgdmFsaWQKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwOS1FbGltaW5hdGUtd2FybmluZ3MtYWJvdXQtaW1wbGljaXQtbm9uLWNvbnN0LWNhc3RpbmctLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwOS1FbGltaW5hdGUtd2FybmluZ3MtYWJvdXQtaW1wbGljaXQtbm9uLWNvbnN0LWNhc3RpbmctLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ODI0NmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDA5LUVsaW1pbmF0ZS13YXJuaW5ncy1hYm91dC1pbXBsaWNpdC1ub24tY29uc3QtY2FzdGluZy0ucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSAyMjI5ZjNiOWZkNGJhZDQ3Nzk0YzI4ZTU1OGFkMjczMTczY2VhNzNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorRGF0ZTogU2F0LCAyNyBKYW4gMjAxOCAwOTo1Mjo0NiArMDEwMAorU3ViamVjdDogW1BBVENIIDkvOV0gRWxpbWluYXRlIHdhcm5pbmdzIGFib3V0IGltcGxpY2l0IG5vbi1jb25zdCBjYXN0aW5nIGluCisgbGlibXRkCisKK1RoZSBtdGRfZ2V0X2Rldl9pbmZvMSBmdW5jdGlvbiByZWFkcyAoYW1vbmcgb3RoZXIgdGhpbmdzKSBuYW1lIGFuZCB0eXBlCitzdHJpbmcgaW50byBjb3Jlc3BvbmRpbmcgc3RydWN0IG10ZF9kZXZfaW5mbyBmaWVsZHMuCisKK1RoZSBzdHJ1Y3QgbXRkX2Rldl9pbmZvIGhhcyB0aGUgc3RyaW5nIGZpZWxkcyBtYXJrZWQgY29uc3QsIHJlcXVpcmluZwordGhlbSB0byBiZSBjYXN0IHRvIG5vbi1jb25zdCB2ZXJzaW9uIGR1cmluZyBpbml0aWFsaXphdGlvbi4KKworVGhpcyBjYXN0IHdhcyBwcmV2aW91c2x5IG9taXR0ZWQgZnJvbSB0aGUgZGV2X3JlYWRfZGF0YSBjYWxscywKK3RyaWdnZXJpbmcgd2FybmluZ3MgZHVyaW5nIGNvbXBpbGF0aW9uLgorCitTaWduZWQtb2ZmLWJ5OiBEYXZpZCBPYmVyaG9sbGVuemVyIDxkYXZpZC5vYmVyaG9sbGVuemVyQHNpZ21hLXN0YXIuYXQ+CitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFdlaW5iZXJnZXIgPHJpY2hhcmRAbm9kLmF0PgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKy0tLQorIGxpYi9saWJtdGQuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvbGlibXRkLmMgYi9saWIvbGlibXRkLmMKK2luZGV4IDYwYjQ3ODIuLjVmMGJjYmMgMTAwNjQ0CistLS0gYS9saWIvbGlibXRkLmMKKysrKyBiL2xpYi9saWJtdGQuYworQEAgLTc0NiwxMyArNzQ2LDEzIEBAIGludCBtdGRfZ2V0X2Rldl9pbmZvMShsaWJtdGRfdCBkZXNjLCBpbnQgbXRkX251bSwgc3RydWN0IG10ZF9kZXZfaW5mbyAqbXRkKQorIAlpZiAoZGV2X2dldF9tYWpvcihsaWIsIG10ZF9udW0sICZtdGQtPm1ham9yLCAmbXRkLT5taW5vcikpCisgCQlyZXR1cm4gLTE7CisgCistCXJldCA9IGRldl9yZWFkX2RhdGEobGliLT5tdGRfbmFtZSwgbXRkX251bSwgJm10ZC0+bmFtZSwKKysJcmV0ID0gZGV2X3JlYWRfZGF0YShsaWItPm10ZF9uYW1lLCBtdGRfbnVtLCAoY2hhciAqKSZtdGQtPm5hbWUsCisgCQkJICAgIE1URF9OQU1FX01BWCArIDEpOworIAlpZiAocmV0IDwgMCkKKyAJCXJldHVybiAtMTsKKyAJKChjaGFyICopbXRkLT5uYW1lKVtyZXQgLSAxXSA9ICdcMCc7CisgCistCXJldCA9IGRldl9yZWFkX2RhdGEobGliLT5tdGRfdHlwZSwgbXRkX251bSwgJm10ZC0+dHlwZV9zdHIsCisrCXJldCA9IGRldl9yZWFkX2RhdGEobGliLT5tdGRfdHlwZSwgbXRkX251bSwgKGNoYXIgKikmbXRkLT50eXBlX3N0ciwKKyAJCQkgICAgTVREX1RZUEVfTUFYICsgMSk7CisgCWlmIChyZXQgPCAwKQorIAkJcmV0dXJuIC0xOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy8wMDAxLU1ha2VmaWxlLW9ubHktYnVpbGQtdWJpLXV0aWxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMvMDAwMS1NYWtlZmlsZS1vbmx5LWJ1aWxkLXViaS11dGlscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUxYjlmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy8wMDAxLU1ha2VmaWxlLW9ubHktYnVpbGQtdWJpLXV0aWxzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotRnJvbSBjNGU2YmQ5Mzc4NjQ1ZDU3N2U5ZDlmODVkYTg1ZjE0MzhhZmU3YzUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyOSBKdW4gMjAxNCAwMDozMjoyOSArMDIwMAotU3ViamVjdDogW1BBVENIIDEvNl0gTWFrZWZpbGU6IGJ1aWxkIHViaS11dGlscyBvbmx5Ci0KLVdlIGJ1aWxkIGFsbCB0aGUgc3RhdGljIHViaS11dGlscyBidXQgYWN0dWFsbHkgb25seSB1YmlhdHRhY2ggaXMgbmVlZGVkIGluCi1hIG1pbmltYWxpc3RpYyBpbml0cmFtZnMgZm9yIHRoZSBtb3VudCBvZiB1Ymkgdm9sdW1lcy4KLQotTW9yZSBmaXhlcyBhcmUgbmVlZGVkIGluIG9yZGVyIHRvIGJ1aWxkIHRoZSBmdWxsIG10ZC11dGlscy4KLVRoZSBmaXJzdCBpc3N1ZSBpczoKLQotfCBta2ZzLmpmZnMyLmM6NjQ6MjA6IGZhdGFsIGVycm9yOiBsaWJnZW4uaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotfCAgI2luY2x1ZGUgPGxpYmdlbi5oPgotCi1SZW1vdmluZyB0aGUgaW5jbHVkZSB0aGVuIHRoZSBzZWNvbmQgZXJyb3IgaXM6Ci0KLXwgbWtmcy5qZmZzMi5jOjE1NzA6MjI6IGVycm9yOiAnX1NDX1BBR0VTSVpFJyB1bmRlY2xhcmVkCi18IChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLXwgICBwYWdlX3NpemUgPSBzeXNjb25mKF9TQ19QQUdFU0laRSk7Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlIHwgMjQgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9NYWtlZmlsZQotKysrIGdpdC9NYWtlZmlsZQotQEAgLTE2LDI4ICsxNiwxMSBAQCBlbmRpZgotIAotIFRFU1RTID0gdGVzdHMKLSAKLS1NVERfQklOUyA9IFwKLS0JZnRsX2Zvcm1hdCBmbGFzaF9lcmFzZSBuYW5kZHVtcCBkb2NfbG9hZGJpb3MgXAotLQlmdGxfY2hlY2sgbWtmcy5qZmZzMiBmbGFzaF9sb2NrIGZsYXNoX3VubG9jayBcCi0tCWZsYXNoX290cF9pbmZvIGZsYXNoX290cF9kdW1wIGZsYXNoX290cF9sb2NrIGZsYXNoX290cF93cml0ZSBcCi0tCW10ZF9kZWJ1ZyBmbGFzaGNwIG5hbmR3cml0ZSBuYW5kdGVzdCBtdGRwYXJ0IFwKLS0JamZmczJkdW1wIFwKLS0JbmZ0bGR1bXAgbmZ0bF9mb3JtYXQgZG9jZmRpc2sgXAotLQlyZmRkdW1wIHJmZGZvcm1hdCBcCi0tCXNlcnZlX2ltYWdlIHJlY3ZfaW1hZ2UgXAotLQlzdW10b29sIGpmZnMycmVhZGVyCi0gVUJJX0JJTlMgPSBcCi0gCXViaXVwZGF0ZXZvbCB1Ymlta3ZvbCB1YmlybXZvbCB1YmljcmMzMiB1YmluZm8gdWJpYXR0YWNoIFwKLSAJdWJpZGV0YWNoIHViaW5pemUgdWJpZm9ybWF0IHViaXJlbmFtZSBtdGRpbmZvIHViaXJzdm9sIHViaWJsb2NrCi0gCi0tQklOUyA9ICQoTVREX0JJTlMpCi0tQklOUyArPSBta2ZzLnViaWZzL21rZnMudWJpZnMKLS1CSU5TICs9ICQoYWRkcHJlZml4IHViaS11dGlscy8sJChVQklfQklOUykpCi0tU0NSSVBUUyA9IGZsYXNoX2VyYXNlYWxsCi0tCi0tVEFSR0VUUyA9ICQoQklOUykKLS1UQVJHRVRTICs9IGxpYi9saWJtdGQuYQotLVRBUkdFVFMgKz0gdWJpLXV0aWxzL2xpYnViaS5hCi0rQklOUyA9ICQoYWRkcHJlZml4IHViaS11dGlscy8sJChVQklfQklOUykpCi0gCi0gT0JKREVQUyA9ICQoQlVJTERESVIpL2luY2x1ZGUvdmVyc2lvbi5oCi0gCi1AQCAtNjEsMTIgKzQ0LDkgQEAgZW5kaWYKLSAJcm0gLWYgJChCVUlMRERJUikvaW5jbHVkZS92ZXJzaW9uLmgKLSAJJChNQUtFKSAtQyAkKFRFU1RTKSBjbGVhbgotIAotLWluc3RhbGw6OiAkKGFkZHByZWZpeCAkKEJVSUxERElSKS8sJHtCSU5TfSkgJHtTQ1JJUFRTfQotK2luc3RhbGw6OiAkKGFkZHByZWZpeCAkKEJVSUxERElSKS8sJHtCSU5TfSkKLSAJbWtkaXIgLXAgJHtERVNURElSfS8ke1NCSU5ESVJ9Ci0gCWluc3RhbGwgLW0gMDc1NSAkXiAke0RFU1RESVJ9LyR7U0JJTkRJUn0vCi0tCW1rZGlyIC1wICR7REVTVERJUn0vJHtNQU5ESVJ9L21hbjEKLS0JaW5zdGFsbCAtbSAwNjQ0IG1rZnMuamZmczIuMSAke0RFU1RESVJ9LyR7TUFORElSfS9tYW4xLwotLQktZ3ppcCAtOWYgJHtERVNURElSfS8ke01BTkRJUn0vbWFuMS8qLjEKLSAKLSB0ZXN0czo6Ci0gCSQoTUFLRSkgLUMgJChURVNUUykKLUBAIC05MSw4ICs3MSw2IEBAIExETElCU19ta2ZzLmpmZnMyICA9IC1seiAkKExaT0xETElCUykKLSBMREZMQUdTX2pmZnMycmVhZGVyID0gJChaTElCTERGTEFHUykgJChMWk9MREZMQUdTKQotIExETElCU19qZmZzMnJlYWRlciAgPSAtbHogJChMWk9MRExJQlMpCi0gCi0tJChmb3JlYWNoIHYsJChNVERfQklOUyksJChldmFsICQoY2FsbCBta2RlcCwsJCh2KSkpKQotLQotICMKLSAjIENvbW1vbiBsaWJtdGQKLSAjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy8wMDAyLWNvbW1vbi5tay1mb3Ita2xpYmMtQ0MtaXMta2xjYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLzAwMDItY29tbW9uLm1rLWZvci1rbGliYy1DQy1pcy1rbGNjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDY4MjRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLzAwMDItY29tbW9uLm1rLWZvci1rbGliYy1DQy1pcy1rbGNjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSBmMzYwOWM3YzA0NTBiNGMzMWUxZDQ2MDNmY2YyY2ZiMWJhNDZmOTk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyOSBKdW4gMjAxNCAwMDozNzoyOCArMDIwMAotU3ViamVjdDogW1BBVENIIDIvNl0gY29tbW9uLm1rOiBmb3Iga2xpYmMgJChDQykgaXMga2xjYwotCi1EbyBub3QgaGFyZGNvZGU6IGFzc2lnbiB0aGUgdmFsdWUgdG8gdGhlIHZhcmlhYmxlIGlmIGl0IGlzIG5vdCBhbHJlYWR5IGRlZmluZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci0tLS0KLSBjb21tb24ubWsgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb21tb24ubWsgYi9jb21tb24ubWsKLWluZGV4IGJhODczNzcuLjU5YzU2ZGYgMTAwNjQ0Ci0tLS0gYS9jb21tb24ubWsKLSsrKyBiL2NvbW1vbi5tawotQEAgLTEsNCArMSw0IEBACi0tQ0MgOj0gJChDUk9TUylnY2MKLStDQyA/PSAkKENST1NTKWdjYwotIEFSIDo9ICQoQ1JPU1MpYXIKLSBSQU5MSUIgOj0gJChDUk9TUylyYW5saWIKLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMvMDAwMy1saWJ1YmkuYy1hZGQta2xpYmMtc3BlY2lmaWMtZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy8wMDAzLWxpYnViaS5jLWFkZC1rbGliYy1zcGVjaWZpYy1maXhlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYyYjM2OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy8wMDAzLWxpYnViaS5jLWFkZC1rbGliYy1zcGVjaWZpYy1maXhlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLUZyb20gNzJhMzliYjMyOTBhNzllNzZiMGRiZjU5ZWVmODNlYTJkOWI1NzdhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjkgSnVuIDIwMTQgMDA6NDA6MTUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzZdIGxpYnViaS5jOiBhZGQga2xpYmMgc3BlY2lmaWMgZml4ZXMgZm9yIGlvY3RsCi0KLUZpcnN0IGlzc3VlIGlzIHRoYXQgaW9jdGwoKSBpbiBrbGliYyBkb2Vzbid0IGV4cGVjdCBhIGNvbnN0YW50IGFzIGFyZzMuCi1TZWNvbmQgaXNzdWUgaXMgdGhhdCBhcmczIGluIGtsaWJjIGlvY3RsKCkgaW1wbGVtZW50YXRpb24gaXMgbm90IG9wdGlvbmFsLgotCi1GaXhlczoKLQotfCB1YmktdXRpbHMvbGlidWJpLmM6IEluIGZ1bmN0aW9uICdkb19hdHRhY2gnOgotfCB1YmktdXRpbHMvbGlidWJpLmM6Njk4Ojg6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMyBvZiAnaW9jdGwnIGRpc2NhcmRzCi18ICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQotfCAgIHJldCA9IGlvY3RsKGZkLCBVQklfSU9DQVRULCByKTsKLXwgICAgICAgICBeCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbSB1YmktdXRpbHMvbGlidWJpLmM6MzI6MDoKLXwgLi4uL2xpYi9rbGliYy9pbmNsdWRlL3N5cy9pb2N0bC5oOjE1OjE0OiBub3RlOiBleHBlY3RlZCAndm9pZCAqJyBidXQgYXJndW1lbnQKLXwgaXMgb2YgdHlwZSAnY29uc3Qgc3RydWN0IHViaV9hdHRhY2hfcmVxIConCi18ICBfX2V4dGVybiBpbnQgaW9jdGwoaW50LCBpbnQsIHZvaWQgKik7Ci18ICAgICAgICAgICAgICAgXgotCi18IHViaS11dGlscy9saWJ1YmkuYzogSW4gZnVuY3Rpb24gJ3ViaV92b2xfYmxvY2tfY3JlYXRlJzoKLXwgdWJpLXV0aWxzL2xpYnViaS5jOjExMTg6OTogZXJyb3I6IHRvbyBmZXcgYXJndW1lbnRzIHRvIGZ1bmN0aW9uICdpb2N0bCcKLXwgICByZXR1cm4gaW9jdGwoZmQsIFVCSV9JT0NWT0xDUkJMSyk7Ci18ICAgICAgICAgIF4KLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHViaS11dGlscy9saWJ1YmkuYzozMjowOgotfCAuLi4vbGliL2tsaWJjL2luY2x1ZGUvc3lzL2lvY3RsLmg6MTU6MTQ6IG5vdGU6IGRlY2xhcmVkIGhlcmUKLXwgIF9fZXh0ZXJuIGludCBpb2N0bChpbnQsIGludCwgdm9pZCAqKTsKLXwgICAgICAgICAgICAgICBeCi18IHViaS11dGlscy9saWJ1YmkuYzogSW4gZnVuY3Rpb24gJ3ViaV92b2xfYmxvY2tfcmVtb3ZlJzoKLXwgdWJpLXV0aWxzL2xpYnViaS5jOjExMjM6OTogZXJyb3I6IHRvbyBmZXcgYXJndW1lbnRzIHRvIGZ1bmN0aW9uICdpb2N0bCcKLXwgICByZXR1cm4gaW9jdGwoZmQsIFVCSV9JT0NWT0xSTUJMSyk7Ci18ICAgICAgICAgIF4KLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHViaS11dGlscy9saWJ1YmkuYzozMjowOgotfCAuLi4vdXNyL2xpYi9rbGliYy9pbmNsdWRlL3N5cy9pb2N0bC5oOjE1OjE0OiBub3RlOiBkZWNsYXJlZCBoZXJlCi18ICBfX2V4dGVybiBpbnQgaW9jdGwoaW50LCBpbnQsIHZvaWQgKik7Ci18ICAgICAgICAgICAgICAgXgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2tsaWJjIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci0tLS0KLSB1YmktdXRpbHMvbGlidWJpLmMgfCA2ICsrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91YmktdXRpbHMvbGlidWJpLmMgYi91YmktdXRpbHMvbGlidWJpLmMKLWluZGV4IDFlMDhiN2QuLjQ5MWU1MjUgMTAwNjQ0Ci0tLS0gYS91YmktdXRpbHMvbGlidWJpLmMKLSsrKyBiL3ViaS11dGlscy9saWJ1YmkuYwotQEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIGxpYnViaV9jbG9zZShsaWJ1YmlfdCBkZXNjKQotICAqIHN1Y2Nlc3MgYW5kICUtMSBpbiBjYXNlIG9mIGZhaWx1cmUuIEByLT51YmlfbnVtIGNvbnRhaW5zIG5ld2x5IGNyZWF0ZWQgVUJJCi0gICogZGV2aWNlIG51bWJlci4KLSAgKi8KLS1zdGF0aWMgaW50IGRvX2F0dGFjaChjb25zdCBjaGFyICpub2RlLCBjb25zdCBzdHJ1Y3QgdWJpX2F0dGFjaF9yZXEgKnIpCi0rc3RhdGljIGludCBkb19hdHRhY2goY29uc3QgY2hhciAqbm9kZSwgc3RydWN0IHViaV9hdHRhY2hfcmVxICpyKQotIHsKLSAJaW50IGZkLCByZXQ7Ci0gCi1AQCAtMTExNSwxMiArMTExNSwxMiBAQCBpbnQgdWJpX3Jzdm9sKGxpYnViaV90IGRlc2MsIGNvbnN0IGNoYXIgKm5vZGUsIGludCB2b2xfaWQsIGxvbmcgbG9uZyBieXRlcykKLSAKLSBpbnQgdWJpX3ZvbF9ibG9ja19jcmVhdGUoaW50IGZkKQotIHsKLS0JcmV0dXJuIGlvY3RsKGZkLCBVQklfSU9DVk9MQ1JCTEspOwotKwlyZXR1cm4gaW9jdGwoZmQsIFVCSV9JT0NWT0xDUkJMSywgTlVMTCk7Ci0gfQotIAotIGludCB1Ymlfdm9sX2Jsb2NrX3JlbW92ZShpbnQgZmQpCi0gewotLQlyZXR1cm4gaW9jdGwoZmQsIFVCSV9JT0NWT0xSTUJMSyk7Ci0rCXJldHVybiBpb2N0bChmZCwgVUJJX0lPQ1ZPTFJNQkxLLCBOVUxMKTsKLSB9Ci0gCi0gaW50IHViaV91cGRhdGVfc3RhcnQobGlidWJpX3QgZGVzYywgaW50IGZkLCBsb25nIGxvbmcgYnl0ZXMpCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLzAwMDQtY29tbW9uLmgta2xpYmMtZml4ZXMtMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLzAwMDQtY29tbW9uLmgta2xpYmMtZml4ZXMtMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVlMWNiYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy8wMDA0LWNvbW1vbi5oLWtsaWJjLWZpeGVzLTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi1Gcm9tIGU1Njc2N2I5Y2FhMDJlN2M0MTgwMzQ5OWM3N2RjOTM5ZDVhN2Y2NGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaG9yc3RlbiBHbGFzZXIgPHRnQG1pcmJzZC5vcmc+Ci1EYXRlOiBGcmksIDIwIEp1biAyMDE0IDEwOjU2OjI3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNC82XSBSZXN0b3JlIGNvbXBhdGliaWxpdHkgdG8gZGlldGxpYmMsIGtsaWJjLCBtdXNsIGxpYmMgYWZ0ZXIgY29tbWl0IDRmMWIxMDgKLQotRWFjaCBDIGxpYnJhcnkgaGFzIHRoZWlyIG93biB3YXkgdG8gZGVmaW5lIG9mZl90LCBhbmQgdGhlIDxmZWF0dXJlcy5oPgotaGVhZGVyIGlzIG5vbnN0YW5kYXJkIGFuZCBzcGVjaWZpYyB0byB0aGUgR05VIGxpYmMgYW5kIHRob3NlIHRoYXQgY2xvbmUKLWl0ICh1Q2xpYmMpLiBGZWZl4oCZcyBkaWV0bGliYyB1c2VzIGRpZmZlcmVudCBmbGFncywgYW5kIGtsaWJjIGFsd2F5cyB1c2VzCi1hIDY0LWJpdCBvZmZfdCAobGlrZSB0aGUgQlNEcyk7IG11c2wgbGliYyBjYW5ub3QgYmUgcmVjb2duaXNlZCB1c2luZyBjcHAKLWluc3RydWN0aW9ucywgc28gd2UgYXNzdW1lIDY0IGJpdCB0aGVyZSAoYW5kIG9uIHVua25vd24gQyBsaWJyYXJpZXMpIGFuZAotbGVhdmUgaXQgdG8gdGhlIHVzZXIgdG8gc3VibWl0IGEgZm9sbG93LXVwIGZpeCBpZiB3ZSBndWVzcyB3cm9uZy4gSSBhbHNvCi1hZGRlZCBhIHN0YXRpYyBhc3NlcnRpb24gdG8gdmVyaWZ5IHRoZSA2NCBiaXQgZ3Vlc3MgaXMgY29ycmVjdC4KLQotSXQgd291bGQgYmUgcmVhbGx5IGJldHRlciB1c2luZyBhIGNvbmZpZ3VyZSBzY3JpcHQgZm9yIHRoaXMgaW5zdGVhZC4KLQotRml4ZXM6Ci18ICAgQ0MgICAgICBsaWIvbGlibXRkLm8KLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHViaS11dGlscy91Yml1dGlscy1jb21tb24uYzozNTowOgotfCAuL2luY2x1ZGUvY29tbW9uLmg6Mjk6MjI6IGZhdGFsIGVycm9yOiBmZWF0dXJlcy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci18ICAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLXwgICAgICAgICAgICAgICAgICAgICAgIF4KLXwgY29tcGlsYXRpb24gdGVybWluYXRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFRob3JzdGVuIEdsYXNlciA8dGdAbWlyYnNkLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLS0tLQotIGluY2x1ZGUvY29tbW9uLmggfCAyNCArKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb21tb24uaCBiL2luY2x1ZGUvY29tbW9uLmgKLWluZGV4IDY4OTVlNWMuLjc3ZjNmN2QgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2NvbW1vbi5oCi0rKysgYi9pbmNsdWRlL2NvbW1vbi5oCi1AQCAtMjYsNyArMjYsOSBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19VQ0xJQkNfXykKLSAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSAidmVyc2lvbi5oIgotIAotQEAgLTUyLDYgKzU0LDIxIEBAIGV4dGVybiAiQyIgewotICNlbmRpZgotIAotIC8qIGRlZmluZSBhIHByaW50IGZvcm1hdCBzcGVjaWZpZXIgZm9yIG9mZl90ICovCi0rI2lmIGRlZmluZWQoX19LTElCQ19fKQotKy8qIGFsd2F5cyA2NCBiaXQgb24ga2xpYmMgKi8KLSsjZGVmaW5lIFBSSXhvZmZfdCBQUkl4NjQKLSsjZGVmaW5lIFBSSWRvZmZfdCBQUklkNjQKLSsjZWxpZiBkZWZpbmVkKF9fZGlldGxpYmNfXykKLSsvKiBkZXBlbmRzIG9uIGNvbXBpbGVyIGZsYWdzIG9uIGRpZXRsaWJjICovCi0rI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIChfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSsjZGVmaW5lIFBSSXhvZmZfdCBQUkl4NjQKLSsjZGVmaW5lIFBSSWRvZmZfdCBQUklkNjQKLSsjZWxzZQotKyNkZWZpbmUgUFJJeG9mZl90ICJsIlBSSXgzMgotKyNkZWZpbmUgUFJJZG9mZl90ICJsIlBSSWQzMgotKyNlbmRpZgotKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKF9fVUNMSUJDX18pCi0rLyogZGVwZW5kcyBvbiBjb21waWxlciBmbGFncyBvbiBnbGliYyBhbmQgdUNsaWJjICovCi0gI2lmZGVmIF9fVVNFX0ZJTEVfT0ZGU0VUNjQKLSAjZGVmaW5lIFBSSXhvZmZfdCBQUkl4NjQKLSAjZGVmaW5lIFBSSWRvZmZfdCBQUklkNjQKLUBAIC01OSw2ICs3NiwxMyBAQCBleHRlcm4gIkMiIHsKLSAjZGVmaW5lIFBSSXhvZmZfdCAibCJQUkl4MzIKLSAjZGVmaW5lIFBSSWRvZmZfdCAibCJQUklkMzIKLSAjZW5kaWYKLSsjZWxzZQotKy8qIHVua25vd24gbGliYyBvciBtdXNsICovCi0rI2RlZmluZSBQUkl4b2ZmX3QgUFJJeDY0Ci0rI2RlZmluZSBQUklkb2ZmX3QgUFJJZDY0Ci0rLyogdmVyaWZ5IG91ciBndWVzcyBvZiA2NCBiaXQgaXMgY29ycmVjdCAqLwotK3N0YXRpYyBjaGFyIF9fUFJJeG9mZl90X3N0YXRpY19hc3NlcnRbc2l6ZW9mKG9mZl90KSA9PSA4ID8gMSA6IC0xXTsKLSsjZW5kaWYKLSAKLSAvKiBWZXJib3NlIG1lc3NhZ2VzICovCi0gI2RlZmluZSBiYXJldmVyYm9zZSh2ZXJib3NlLCBmbXQsIC4uLikgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMvMDAwNS1jb21tb24uaC1rbGliYy1maXhlcy0yLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMvMDAwNS1jb21tb24uaC1rbGliYy1maXhlcy0yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjA5YzE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLzAwMDUtY29tbW9uLmgta2xpYmMtZml4ZXMtMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gODMxODg1MmVmNGY3NjhiZWQzMTA3MmFhN2I1N2UxMWFkYzFmNjM5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjkgSnVuIDIwMTQgMDA6NDQ6MDMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzZdIGNvbW1vbi5oOiBtb3JlIHdvcmthcm91bmRzIGZvciBrbGliYyBjb21wYXRpYmlsaXR5Ci0KLVBhdGNoIGlzIGFkZHJlc3NpbmcgdHdvIGlzc3VlczoKLSogRmlyc3QsICBLbGliYyBkb2Vzbid0IGhhdmUgcnBtYXRjaCgpLgotKiBTZWNvbmQsIEtsaWJjIGxhY2tzIGdldGxpbmUoKQotCi1GaXhlczoKLXwgICBMRCAgICAgIHViaS11dGlscy91Ymlmb3JtYXQKLXwgLi4uL2dpdC91YmktdXRpbHMvdWJpZm9ybWF0Lm86IEluIGZ1bmN0aW9uIGBwcm9tcHQnOgotfCAuLi4vZ2l0Ly4vaW5jbHVkZS9jb21tb24uaDoxNTc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGxpbmUnCi18IC4uLi9naXQvLi9pbmNsdWRlL2NvbW1vbi5oOjE2NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcnBtYXRjaCcKLXwgLi4uL2dpdC8uL2luY2x1ZGUvY29tbW9uLmg6MTU3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnZXRsaW5lJwotfCAuLi4vZ2l0Ly4vaW5jbHVkZS9jb21tb24uaDoxNjQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHJwbWF0Y2gnCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci0tLS0KLSBpbmNsdWRlL2NvbW1vbi5oIHwgMTAgKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvaW5jbHVkZS9jb21tb24uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2luY2x1ZGUvY29tbW9uLmgKLSsrKyBnaXQvaW5jbHVkZS9jb21tb24uaAotQEAgLTE2MSwxNSArMTYxLDE3IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9fcnBtYXRjaChjb25zdCBjaGFyICoKLSAgKi8KLSBzdGF0aWMgaW5saW5lIGJvb2wgcHJvbXB0KGNvbnN0IGNoYXIgKm1zZywgYm9vbCBkZWYpCi0gewotLQljaGFyICpsaW5lID0gTlVMTDsKLS0Jc2l6ZV90IGxlbjsKLSsJY2hhciAqbGluZTsKLSAJYm9vbCByZXQgPSBkZWY7Ci0gCi0rCWNvbnN0IGludCBzaXplb2ZfbGluZSA9IDI7Ci0rCWxpbmUgPSBtYWxsb2Moc2l6ZW9mX2xpbmUpOwotKwotIAlkbyB7Ci0gCQlub3Jtc2dfY29udCgiJXMgKCVjLyVjKSAiLCBtc2csIGRlZiA/ICdZJyA6ICd5JywgZGVmID8gJ24nIDogJ04nKTsKLSAJCWZmbHVzaChzdGRvdXQpOwotIAotLQkJd2hpbGUgKGdldGxpbmUoJmxpbmUsICZsZW4sIHN0ZGluKSA9PSAtMSkgewotKwkJd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZl9saW5lLCBzdGRpbikgPT0gTlVMTCkgewotIAkJCXByaW50ZigiZmFpbGVkIHRvIHJlYWQgcHJvbXB0OyBhc3N1bWluZyAnJXMnXG4iLAotIAkJCQlkZWYgPyAieWVzIiA6ICJubyIpOwotIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMvMDAwNi1saWJpbmlwYXJzZXItcmVtb3ZlLXVudXNlZC1mdW5jdGlvbi1uZWVkaW5nLWZsb2F0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMvMDAwNi1saWJpbmlwYXJzZXItcmVtb3ZlLXVudXNlZC1mdW5jdGlvbi1uZWVkaW5nLWZsb2F0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDNhODlkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLzAwMDYtbGliaW5pcGFyc2VyLXJlbW92ZS11bnVzZWQtZnVuY3Rpb24tbmVlZGluZy1mbG9hdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLUZyb20gNzJhMDRhOWI5ZWQzM2M4ODlkMmUyYjg2ZjMwNmM1YmU5ZjZjZGUzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjkgSnVuIDIwMTQgMDA6NDQ6NTcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA2LzZdIGxpYmluaXBhcnNlcjogcmVtb3ZlIHVudXNlZCBmdW5jdGlvbiBuZWVkaW5nIGZsb2F0Ci0KLUZpeGVzOgotfCAgIExEICAgICAgdWJpLXV0aWxzL3ViaWZvcm1hdAotfCAuLi4vZ2l0L3ViaS11dGlscy9saWJpbmlwYXJzZXIuYShsaWJpbmlwYXJzZXIubyk6IEluIGZ1bmN0aW9uCi18IGAgIExEICAgICAgdWJpLXV0aWxzL3ViaXJlbmFtZQotfCBpbmlwYXJzZXJfZ2V0ZG91YmxlJzoKLXwgLi4uL2dpdC91YmktdXRpbHMvbGliaW5pcGFyc2VyLmM6MzM2OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBhdG9mJwotCi1HcmVwIGRvZXNuJ3QgcmV2ZWFsIGFueSBvY2N1cnJlbmNlIG9mIGluaXBhcnNlcl9nZXRkb3VibGUoKSwgdXNpbmcgYXRvZigpIHNvCi1yZW1vdmUgaXQ6IGZsb2F0aW5nLXBvaW50IGlzIG5vdCBzdXBwb3J0ZWQgaW4ga2xpYmMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLS0tLQotIHViaS11dGlscy9pbmNsdWRlL2xpYmluaXBhcnNlci5oIHwgMTUgLS0tLS0tLS0tLS0tLS0tCi0gdWJpLXV0aWxzL2xpYmluaXBhcnNlci5jICAgICAgICAgfCAyMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3ViaS11dGlscy9pbmNsdWRlL2xpYmluaXBhcnNlci5oIGIvdWJpLXV0aWxzL2luY2x1ZGUvbGliaW5pcGFyc2VyLmgKLWluZGV4IGJlM2M2NjcuLmFiZDc3YWEgMTAwNjQ0Ci0tLS0gYS91YmktdXRpbHMvaW5jbHVkZS9saWJpbmlwYXJzZXIuaAotKysrIGIvdWJpLXV0aWxzL2luY2x1ZGUvbGliaW5pcGFyc2VyLmgKLUBAIC0xNTgsMjEgKzE1OCw2IEBAIGludCBpbmlwYXJzZXJfZ2V0aW50KGRpY3Rpb25hcnkgKiBkLCBjb25zdCBjaGFyICoga2V5LCBpbnQgbm90Zm91bmQpOwotIAotIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0gLyoqCi0tICBAYnJpZWYgICAgR2V0IHRoZSBzdHJpbmcgYXNzb2NpYXRlZCB0byBhIGtleSwgY29udmVydCB0byBhIGRvdWJsZQotLSAgQHBhcmFtICAgIGQgRGljdGlvbmFyeSB0byBzZWFyY2gKLS0gIEBwYXJhbSAgICBrZXkgS2V5IHN0cmluZyB0byBsb29rIGZvcgotLSAgQHBhcmFtICAgIG5vdGZvdW5kIFZhbHVlIHRvIHJldHVybiBpbiBjYXNlIG9mIGVycm9yCi0tICBAcmV0dXJuICAgZG91YmxlCi0tCi0tICBUaGlzIGZ1bmN0aW9uIHF1ZXJpZXMgYSBkaWN0aW9uYXJ5IGZvciBhIGtleS4gQSBrZXkgYXMgcmVhZCBmcm9tIGFuCi0tICBpbmkgZmlsZSBpcyBnaXZlbiBhcyAic2VjdGlvbjprZXkiLiBJZiB0aGUga2V5IGNhbm5vdCBiZSBmb3VuZCwKLS0gIHRoZSBub3Rmb3VuZCB2YWx1ZSBpcyByZXR1cm5lZC4KLS0gKi8KLS0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS1kb3VibGUgaW5pcGFyc2VyX2dldGRvdWJsZShkaWN0aW9uYXJ5ICogZCwgY2hhciAqIGtleSwgZG91YmxlIG5vdGZvdW5kKTsKLS0KLS0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLS8qKgotICAgQGJyaWVmICAgIEdldCB0aGUgc3RyaW5nIGFzc29jaWF0ZWQgdG8gYSBrZXksIGNvbnZlcnQgdG8gYSBib29sZWFuCi0gICBAcGFyYW0gICAgZCBEaWN0aW9uYXJ5IHRvIHNlYXJjaAotICAgQHBhcmFtICAgIGtleSBLZXkgc3RyaW5nIHRvIGxvb2sgZm9yCi1kaWZmIC0tZ2l0IGEvdWJpLXV0aWxzL2xpYmluaXBhcnNlci5jIGIvdWJpLXV0aWxzL2xpYmluaXBhcnNlci5jCi1pbmRleCA4OThmNTdmLi5iYTcwYzA4IDEwMDY0NAotLS0tIGEvdWJpLXV0aWxzL2xpYmluaXBhcnNlci5jCi0rKysgYi91YmktdXRpbHMvbGliaW5pcGFyc2VyLmMKLUBAIC0zMTYsMjggKzMxNiw2IEBAIGludCBpbmlwYXJzZXJfZ2V0aW50KGRpY3Rpb25hcnkgKiBkLCBjb25zdCBjaGFyICoga2V5LCBpbnQgbm90Zm91bmQpCi0gCi0gLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSAvKioKLS0gIEBicmllZiAgICBHZXQgdGhlIHN0cmluZyBhc3NvY2lhdGVkIHRvIGEga2V5LCBjb252ZXJ0IHRvIGEgZG91YmxlCi0tICBAcGFyYW0gICAgZCBEaWN0aW9uYXJ5IHRvIHNlYXJjaAotLSAgQHBhcmFtICAgIGtleSBLZXkgc3RyaW5nIHRvIGxvb2sgZm9yCi0tICBAcGFyYW0gICAgbm90Zm91bmQgVmFsdWUgdG8gcmV0dXJuIGluIGNhc2Ugb2YgZXJyb3IKLS0gIEByZXR1cm4gICBkb3VibGUKLS0KLS0gIFRoaXMgZnVuY3Rpb24gcXVlcmllcyBhIGRpY3Rpb25hcnkgZm9yIGEga2V5LiBBIGtleSBhcyByZWFkIGZyb20gYW4KLS0gIGluaSBmaWxlIGlzIGdpdmVuIGFzICJzZWN0aW9uOmtleSIuIElmIHRoZSBrZXkgY2Fubm90IGJlIGZvdW5kLAotLSAgdGhlIG5vdGZvdW5kIHZhbHVlIGlzIHJldHVybmVkLgotLSAqLwotLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLWRvdWJsZSBpbmlwYXJzZXJfZ2V0ZG91YmxlKGRpY3Rpb25hcnkgKiBkLCBjaGFyICoga2V5LCBkb3VibGUgbm90Zm91bmQpCi0tewotLSAgICBjaGFyICAgICogICBzdHIgOwotLQotLSAgICBzdHIgPSBpbmlwYXJzZXJfZ2V0c3RyaW5nKGQsIGtleSwgSU5JX0lOVkFMSURfS0VZKTsKLS0gICAgaWYgKHN0cj09SU5JX0lOVkFMSURfS0VZKSByZXR1cm4gbm90Zm91bmQgOwotLSAgICByZXR1cm4gYXRvZihzdHIpOwotLX0KLS0KLS0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLS8qKgotICAgQGJyaWVmICAgIEdldCB0aGUgc3RyaW5nIGFzc29jaWF0ZWQgdG8gYSBrZXksIGNvbnZlcnQgdG8gYSBib29sZWFuCi0gICBAcGFyYW0gICAgZCBEaWN0aW9uYXJ5IHRvIHNlYXJjaAotICAgQHBhcmFtICAgIGtleSBLZXkgc3RyaW5nIHRvIGxvb2sgZm9yCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjXzEuNS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmNfMS41LjIuYmIKaW5kZXggNTE4YzAyZi4uYWJiMGQ0YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmNfMS41LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmNfMS41LjIuYmIKQEAgLTExLDEyICsxMSwxNSBAQAogCiBTUkNSRVYgPSAiYWVhMzY0MTcwNjdkYWRlNzUxOTJiYWZhMDNhZjcwYjZlYjI2NzdiMSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmluZnJhZGVhZC5vcmcvbXRkLXV0aWxzLmdpdCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtb25seS1idWlsZC11YmktdXRpbHMucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWJ1aWxkLXViaS11dGlscy1vbmx5LnBhdGNoIFwKICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1jb21tb24ubWstZm9yLWtsaWJjLUNDLWlzLWtsY2MucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWxpYnViaS5jLWFkZC1rbGliYy1zcGVjaWZpYy1maXhlcy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDQtY29tbW9uLmgta2xpYmMtZml4ZXMtMS5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDUtY29tbW9uLmgta2xpYmMtZml4ZXMtMi5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDMtbGlidWJpLmMtYWRkLWtsaWJjLXNwZWNpZmljLWZpeGVzLWZvci1pb2N0bC5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDQtUmVzdG9yZS1jb21wYXRpYmlsaXR5LXRvLWRpZXRsaWJjLWtsaWJjLW11c2wtbGliYy1hZi5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDUtY29tbW9uLmgtbW9yZS13b3JrYXJvdW5kcy1mb3Ita2xpYmMtY29tcGF0aWJpbGl0eS5wYXRjaCBcCiAgICAgICAgICAgICAgZmlsZTovLzAwMDYtbGliaW5pcGFyc2VyLXJlbW92ZS11bnVzZWQtZnVuY3Rpb24tbmVlZGluZy1mbG9hdC5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDctbXRkLXV0aWxzLWNvbW1vbi5jLWNvbnZlcnQtdG8taW50ZWdlci1hcml0aG1ldGljLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwOC11YmktdXRpbHMtdWJpZm9ybWF0LmMtY29udmVydC10by1pbnRlZ2VyLWFyaXRobWV0aWMucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDA5LUVsaW1pbmF0ZS13YXJuaW5ncy1hYm91dC1pbXBsaWNpdC1ub24tY29uc3QtY2FzdGluZy0ucGF0Y2ggXAogICAgICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdC8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjXzIuMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliY18yLjAuMi5iYgppbmRleCA0OWM1M2EzLi4yZTI3MDMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjXzIuMC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmNfMi4wLjIuYmIKQEAgLTEsMTAgKzEsMTYgQEAKICMgdGhlIGJpbmFyaWVzIGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBhZ2FpbnN0IGtsaWJjCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYwogU1VNTUFSWSA9ICJLZXhlYyB0b29scywgc3RhdGljYWxseSBjb21waWxlZCBhZ2FpbnN0IGtsaWJjIgotU1JDX1VSSVttZDVzdW1dID0gIjkyZWZmOTNiMDk3NDc1Yjc3NjdmOGM5OGRmODQ0MDhhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5ZTE4MGZmMzZkZWUwODcxODJjZGM5MzliYTZjNjkxN2I2YWRiYjVmYzEyZDU4OWYzMWZkMzY1OWI2NDcxZjIiCitBVVRIT1IgPSAiRXJpYyBCaWVkZXJtYW4iCitIT01FUEFHRSA9ICJodHRwOi8va2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL2tleGVjLyIKK1NFQ1RJT04gPSAia2VybmVsL3VzZXJsYW5kIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVhNWJlZDJmNjBkMzU3NjE4Y2ExNjFhZDUzOWY3YzBhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2tleGVjL2tleGVjLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9YWYxMGY2YWU0YTg3MTU5NjVlNjQ4YWE2ODdhZDNlMDkiCitERVBFTkRTID0gInpsaWIgeHoiCiAKLWluaGVyaXQga2xpYmMKK1BSID0gInIxIgorCitpbmhlcml0IGtsaWJjIGF1dG90b29scwogCiBGSUxFU1BBVEggPS4gIiR7RklMRV9ESVJOQU1FfS9rZXhlYy10b29scy0ke1BWfToiCiAKQEAgLTIzLDYgKzI5LDkgQEAKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkanVzdC10aGUtb3JkZXItb2YtaGVhZGVycy10by1maXgtYnVpbGQtZm9yLW11c2wucGF0Y2ggXAogICAgICAgICAgICAgIgogCitTUkNfVVJJW21kNXN1bV0gPSAiOTJlZmY5M2IwOTc0NzViNzc2N2Y4Yzk4ZGY4NDQwOGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDllMTgwZmYzNmRlZTA4NzE4MmNkYzkzOWJhNmM2OTE3YjZhZGJiNWZjMTJkNTg5ZjMxZmQzNjU5YjY0NzFmMiIKKwogU1JDX1VSSV9hcHBlbmRfYXJtID0gIiBmaWxlOi8vYXJtX2NyYXNoZHVtcC5wYXRjaCIKIFNSQ19VUklfYXBwZW5kX3Bvd2VycGMgPSAiIGZpbGU6Ly9wcGNfX2xzaHJkaTMucGF0Y2giCiBTUkNfVVJJX2FwcGVuZF94ODYgPSAiIGZpbGU6Ly94ODZfc3lzX2lvLnBhdGNoIGZpbGU6Ly94ODZfYmFzZW5hbWUucGF0Y2ggZmlsZTovL3g4Nl92ZnNjYW5mLnBhdGNoIGZpbGU6Ly94ODZfa2V4ZWNfdGVzdC5wYXRjaCIKQEAgLTM1LDcgKzQ0LDI2IEBACiBDRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZGlyfS9rbGliYy9pbmNsdWRlIC1JJHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZGlyfS9rbGliYy9pbmNsdWRlL2JpdHMzMiIKIENGTEFHU194ODYtNjQgKz0gIi1JJHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZGlyfS9rbGliYy9pbmNsdWRlIC1JJHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZGlyfS9rbGliYy9pbmNsdWRlL2JpdHM2NCIKIAorZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICMgUmVtb3ZlIHRoZSBwcmVwYWNrYWdlZCBjb25maWcuaCBmcm9tIHRoZSBzb3VyY2UgdHJlZSBhcyBpdCBvdmVycmlkZXMKKyAgICAjIHRoZSBzYW1lIGZpbGUgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSBhbmQgcGxhY2VkIGluIHRoZSBidWlsZCB0cmVlCisgICAgcm0gLWYgJHtTfS9pbmNsdWRlL2NvbmZpZy5oCisKKyAgICAjIFJlbW92ZSB0aGUgJyouZCcgZmlsZSB0byBtYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSworICAgIGZvciBkZXAgaW4gYGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICcqLmQnYDsgZG8KKyAgICAgICAgZGVwX25vX2Q9ImBlY2hvICRkZXAgfCBzZWQgJ3MjLmQkIyMnYCIKKyAgICAgICAgIyBSZW1vdmUgZmlsZS5kIHdoZW4gdGhlcmUgaXMgYSBmaWxlLm8KKyAgICAgICAgaWYgWyAtZiAiJGRlcF9ub19kLm8iIF07IHRoZW4KKyAgICAgICAgICAgIHJtIC1mICRkZXAKKyAgICAgICAgZmkKKyAgICBkb25lCit9CisKIFBBQ0tBR0VTID0rICJrZXhlYy1rbGliYyBrZHVtcC1rbGliYyIKIAogRklMRVNfa2V4ZWMta2xpYmMgPSAiJHtzYmluZGlyfS9rZXhlYyIKIEZJTEVTX2tkdW1wLWtsaWJjID0gIiR7c2JpbmRpcn0va2R1bXAiCisKK0lOU0FORV9TS0lQXyR7UE59ID0gImFyY2giCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKnxwb3dlcnBjLip8bWlwcy4qKS0obGludXh8ZnJlZWJzZC4qKScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL1JFQURNRQppbmRleCBiNTlkZmUwLi4yMGY0ZmI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvUkVBRE1FCkBAIC0xLDIwICsxLDE5IEBACiBUaGlzIGxheWVyIGRlcGVuZHMgb246CiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKLWJyYW5jaDogcm9ja28KK2JyYW5jaDogbWFzdGVyCiByZXZpc2lvbjogSEVBRAogCiBVUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb2UuZ2l0CiBsYXllcnM6IG1ldGEtb2UKLWJyYW5jaDogcm9ja28KK2JyYW5jaDogbWFzdGVyCiByZXZpc2lvbjogSEVBRAogCi1TZW5kIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aCAnW21ldGEtbXVsdGltZWRpYV1bcm9ja29dJyBpbiB0aGUgc3ViamVjdCcKK1NlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1tdWx0aW1lZGlhXScgaW4gdGhlIHN1YmplY3QnCiAKIFdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzZSBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1tdWx0aW1lZGlhXVtyb2Nrb11bUEFUQ0gKKydnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1tdWx0aW1lZGlhXVtQQVRDSAogCiBZb3UgYXJlIGVuY291cmFnZWQgdG8gZm9yayB0aGUgbWlycm9yIG9uIGdpdGh1YiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb2UvIHRvIHNoYXJlIHlvdXIgcGF0Y2hlcywgdGhpcyBpcyBwcmVmZXJyZWQgZm9yIHBhdGNoIHNldHMgY29uc2lzdGluZyBvZiBtb3JlIHRoYW4gb25lIHBhdGNoLiBPdGhlciBzZXJ2aWNlcyBsaWtlIGdpdG9yaW91cywgcmVwby5vci5jeiBvciBzZWxmIGhvc3RlZCBzZXR1cHMgYXJlIG9mIGNvdXJzZSBhY2NlcHRlZCBhcyB3ZWxsLCAnZ2l0IGZldGNoIDxyZW1vdGU+JyB3b3JrcyB0aGUgc2FtZSBvbiBhbGwgb2YgdGhlbS4gV2UgcmVjb21tZW5kIGdpdGh1YiBiZWNhdXNlIGl0IGlzIGZyZWUsIGVhc3kgdG8gdXNlLCBoYXMgYmVlbiBwcm92ZW4gdG8gYmUgcmVsaWFibGUgYW5kIGhhcyBhIHJlYWxseSBnb29kIHdlYiBHVUkuCiAKLXJvY2tvIEJyYW5jaCBNYWludGFpbmVyOgotQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KK0xheWVyIG1haW50YWluZXI6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2NvbmYvbGF5ZXIuY29uZgppbmRleCBkNjhiMTNmLi5jZmVkZjJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvY29uZi9sYXllci5jb25mCkBAIC0yOSwzICsyOSw0IEBACiAKIExBWUVSREVQRU5EU19tdWx0aW1lZGlhLWxheWVyID0gImNvcmUiCiAKK0xBWUVSU0VSSUVTX0NPTVBBVF9tdWx0aW1lZGlhLWxheWVyID0gInN1bW8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC10b29sc18wLjguMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC10b29sc18wLjguMTMuYmIKaW5kZXggOTM2MGQ2NS4uM2RkYjgxOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtdG9vbHNfMC44LjEzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLXRvb2xzXzAuOC4xMy5iYgpAQCAtOCw0ICs4LDYgQEAKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmdub21lLm9yZy9zb3VyY2VzLyR7QlBOfS8wLjgvJHtCUE59LSR7UFZ9LnRhci54eiIKIFNSQ19VUklbbWQ1c3VtXSA9ICIyMTJkODVlYmNlODliMzI0NjhiNTllMTE2NDA1MGQ0MCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYTNkZWNiOWQ1MzJjMGUyZTUwNWFkYzU5MmY0MzFmZDgxYzAyMzFkZWQyOTgxMTI5ZTg3ZGExMzcxMjQ3OWVkIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wMS42L3NlcGJ1aWxkZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wMS42L3NlcGJ1aWxkZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDkzY2VhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucDEuNi9zZXBidWlsZGZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gZTE5OGYwYTg3NjYwYTA0ODE2NGNhMGUxNmQxODUxN2QwYWVlODQ2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDkgSnVuIDIwMTUgMTI6MjA6NDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkcyB3aGVuIHVzaW5nIHNlcGFyYXRlIHNvdXJjZSBhbmQgYnVpbGQgZGlyZWN0b3JpZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYTg3MzFiNS4uNTRhM2MzZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzQ0LDkgKzc0NCw5IEBAIEFDX09VVFBVVAotICMKLSAjIEZpbGVzIGNvcGllZCBmb3Igd2luZG93cyBjb21waWxhdGlvbi4KLSAjCi0tZWNobyAiY29uZmlndXJlOiBjb3B5aW5nIFwiYXV0b2NvbmZpZy5oXCIgICAgICAgICAgdG8gXCJidWlsZC9pbmMvYXV0b2NvbmZpZy5oXCIiCi0tdGVzdCAtZCBidWlsZC9pbmMgfHwgbWtkaXIgLXAgYnVpbGQvaW5jCi0tY3AgYXV0b2NvbmZpZy5oIGJ1aWxkL2luYy9hdXRvY29uZmlnLmgKLS1lY2hvICJjb25maWd1cmU6IGNvcHlpbmcgXCJ1cG5wL2luYy91cG5wY29uZmlnLmhcIiB0byBcImJ1aWxkL2luYy91cG5wY29uZmlnLmhcIiIKLS1jcCB1cG5wL2luYy91cG5wY29uZmlnLmggYnVpbGQvaW5jL3VwbnBjb25maWcuaAotK2VjaG8gImNvbmZpZ3VyZTogY29weWluZyBcImF1dG9jb25maWcuaFwiICAgICAgICAgIHRvIFwiXCRzcmNkaXIvYnVpbGQvaW5jL2F1dG9jb25maWcuaFwiIgotK3Rlc3QgLWQgJHNyY2Rpci9idWlsZC9pbmMgfHwgbWtkaXIgLXAgJHNyY2Rpci9idWlsZC9pbmMKLStjcCBhdXRvY29uZmlnLmggJHNyY2Rpci9idWlsZC9pbmMvYXV0b2NvbmZpZy5oCi0rZWNobyAiY29uZmlndXJlOiBjb3B5aW5nIFwidXBucC9pbmMvdXBucGNvbmZpZy5oXCIgdG8gXCJcJHNyY2Rpci9idWlsZC9pbmMvdXBucGNvbmZpZy5oXCIiCi0rY3AgdXBucC9pbmMvdXBucGNvbmZpZy5oICRzcmNkaXIvYnVpbGQvaW5jL3VwbnBjb25maWcuaAotIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnAxLjZfMS42LjIxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wMS42XzEuNi4yMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFiMDQyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnAxLjZfMS42LjIxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJQb3J0YWJsZSBTREsgZm9yIFVQblAqIERldmljZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgUG9ydGFibGUgU0RLIGZvciBVUG5QIERldmljZXMgaXMgYW4gU0RLIGZvciBkZXZlbG9wbWVudCBvZiBcCi1VUG5QIGRldmljZSBhbmQgY29udHJvbCBwb2ludCBhcHBsaWNhdGlvbnMuIEl0IGNvbnNpc3RzIG9mIHRoZSBjb3JlIFVQblAgXAotcHJvdG9jb2xzIGFsb25nIHdpdGggYSBVUG5QLXNwZWNpZmljIGVYdGVuc2libGUgTWFya3VwIExhbmd1YWdlIChYTUwpIHBhcnNlciBcCi1zdXBwb3J0aW5nIHRoZSBEb2N1bWVudCBPYmplY3QgTW9kZWwgKERPTSkgTGV2ZWwgMiBBUEkgYW5kIGFuIG9wdGlvbmFsLCBcCi1pbnRlZ3JhdGVkIG1pbmkgd2ViIHNlcnZlciBmb3Igc2VydmluZyBVUG5QIHJlbGF0ZWQgZG9jdW1lbnRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9wdXBucC5zb3VyY2Vmb3JnZS5uZXQvIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMzE5MGQ1MjQ0ZTA4ZTc4ZTRjOGVlNzg1NDRmNDg2MyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHVwbnAvbGlidXBucC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3NlcGJ1aWxkZml4LnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUxM2FkYWRiMDdmYTAzOWE4YWViMGNlYjdiN2IwZjZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmM2YzYzA4NDZhMWQ3NWJhZWFkYWU0YWE1YTJiZGE0Mjc1NjdlMmExZmI0NTU5YmY3M2NjZmYwYTRmOWEzOWIiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJ1cG5wLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnlnZWwvcnlnZWxfMC4zNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnlnZWwvcnlnZWxfMC4zNC4wLmJiCmluZGV4IGQyZWRhNmIuLmU5NGM5ZmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J5Z2VsL3J5Z2VsXzAuMzQuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yeWdlbC9yeWdlbF8wLjM0LjAuYmIKQEAgLTMwLDYgKzMwLDcgQEAKIFBBQ0tBR0VDT05GSUdbbWVkaWEtZXhwb3J0XSA9ICItLWVuYWJsZS1tZWRpYS1leHBvcnQtcGx1Z2luLC0tZGlzYWJsZS1tZWRpYS1leHBvcnQtcGx1Z2luIgogUEFDS0FHRUNPTkZJR1tnc3QtbGF1bmNoXSA9ICItLWVuYWJsZS1nc3QtbGF1bmNoLXBsdWdpbiwtLWRpc2FibGUtZ3N0LWxhdW5jaC1wbHVnaW4iCiBQQUNLQUdFQ09ORklHW2d0ayszXSA9ICIsLS13aXRob3V0LXVpLGd0ayszIgorUEFDS0FHRUNPTkZJR1tsbXNdID0gIi0tZW5hYmxlLWxtcy1wbHVnaW4sLS1kaXNhYmxlLWxtcy1wbHVnaW4iCiAKIExJQlYgPSAiMi42IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaV8xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpXzE3LmJiCmluZGV4IDUxNThmMDUuLjI5NTYxODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpXzE3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpXzE3LmJiCkBAIC02LDYwICs2LDU5IEBACiBGSUxFU1BBVEggPS4gIiR7RklMRV9ESVJOQU1FfS9rb2RpLTE3OiIKIAogREVQRU5EUyA9ICIgXAotICAgICAgICAgICAgY21ha2UtbmF0aXZlIFwKLSAgICAgICAgICAgIGN1cmwtbmF0aXZlIFwKLSAgICAgICAgICAgIGdwZXJmLW5hdGl2ZSBcCi0gICAgICAgICAgICBqc29uc2NoZW1hYnVpbGRlci1uYXRpdmUgXAotICAgICAgICAgICAgbmFzbS1uYXRpdmUgXAotICAgICAgICAgICAgc3dpZy1uYXRpdmUgXAotICAgICAgICAgICAgdW56aXAtbmF0aXZlIFwKLSAgICAgICAgICAgIHlhc20tbmF0aXZlIFwKLSAgICAgICAgICAgIHppcC1uYXRpdmUgXAotICAgICAgICAgICAgYXZhaGkgXAotICAgICAgICAgICAgYm9vc3QgXAotICAgICAgICAgICAgYnppcDIgXAotICAgICAgICAgICAgY3Jvc3NndWlkIFwKLSAgICAgICAgICAgIGN1cmwgXAotICAgICAgICAgICAgZGNhZGVjIFwKLSAgICAgICAgICAgIGVuY2EgXAotICAgICAgICAgICAgZXhwYXQgXAotICAgICAgICAgICAgZmFhZDIgXAotICAgICAgICAgICAgZmZtcGVnIFwKLSAgICAgICAgICAgIGZvbnRjb25maWcgXAotICAgICAgICAgICAgZnJpYmlkaSBcCi0gICAgICAgICAgICBnaWZsaWIgXAotICAgICAgICAgICAgamFzcGVyIFwKLSAgICAgICAgICAgIGxpYmFzcyBcCi0gICAgICAgICAgICBsaWJjZGlvIFwKLSAgICAgICAgICAgIGxpYmNlYyBcCi0gICAgICAgICAgICBsaWJtYWQgXAotICAgICAgICAgICAgbGlibWljcm9odHRwZCBcCi0gICAgICAgICAgICBsaWJtbXMgXAotICAgICAgICAgICAgbGlibW1zIFwKLSAgICAgICAgICAgIGxpYm1vZHBsdWcgXAotICAgICAgICAgICAgbGlicGNyZSBcCi0gICAgICAgICAgICBsaWJwbGlzdCBcCi0gICAgICAgICAgICBsaWJzYW1wbGVyYXRlMCBcCi0gICAgICAgICAgICBsaWJzZGwtaW1hZ2UgXAotICAgICAgICAgICAgbGlic2RsLW1peGVyIFwKLSAgICAgICAgICAgIGxpYnNxdWlzaCBcCi0gICAgICAgICAgICBsaWJzc2ggXAotICAgICAgICAgICAgbGlidGlueXhtbCBcCi0gICAgICAgICAgICBsaWJ1c2IxIFwKLSAgICAgICAgICAgIGxpYnhzbHQgXAotICAgICAgICAgICAgbHpvIFwKLSAgICAgICAgICAgIG1wZWcyZGVjIFwKLSAgICAgICAgICAgIHB5dGhvbiBcCi0gICAgICAgICAgICBzYW1iYSBcCi0gICAgICAgICAgICBzcWxpdGUzIFwKLSAgICAgICAgICAgIHRhZ2xpYiBcCi0gICAgICAgICAgICB2aXJ0dWFsL2VnbCBcCi0gICAgICAgICAgICB2aXJ0dWFsL2xpYnNkbCBcCi0gICAgICAgICAgICB3YXZwYWNrIFwKLSAgICAgICAgICAgIHlhamwgXAotICAgICAgICAgICAgemxpYiBcCi0gICAgICAgICAgICAke0BlbmFibGVfZ2xldyhiYiwgZCl9IFwKLSAgICAgICAgICAiCisgICAgY21ha2UtbmF0aXZlIFwKKyAgICBjdXJsLW5hdGl2ZSBcCisgICAgZ3BlcmYtbmF0aXZlIFwKKyAgICBqc29uc2NoZW1hYnVpbGRlci1uYXRpdmUgXAorICAgIG5hc20tbmF0aXZlIFwKKyAgICBzd2lnLW5hdGl2ZSBcCisgICAgdW56aXAtbmF0aXZlIFwKKyAgICB5YXNtLW5hdGl2ZSBcCisgICAgemlwLW5hdGl2ZSBcCisgICAgYXZhaGkgXAorICAgIGJvb3N0IFwKKyAgICBiemlwMiBcCisgICAgY3Jvc3NndWlkIFwKKyAgICBjdXJsIFwKKyAgICBkY2FkZWMgXAorICAgIGVuY2EgXAorICAgIGV4cGF0IFwKKyAgICBmYWFkMiBcCisgICAgZmZtcGVnIFwKKyAgICBmb250Y29uZmlnIFwKKyAgICBmcmliaWRpIFwKKyAgICBnaWZsaWIgXAorICAgIGphc3BlciBcCisgICAgbGliYXNzIFwKKyAgICBsaWJjZGlvIFwKKyAgICBsaWJjZWMgXAorICAgIGxpYm1hZCBcCisgICAgbGlibWljcm9odHRwZCBcCisgICAgbGlibW1zIFwKKyAgICBsaWJtbXMgXAorICAgIGxpYm1vZHBsdWcgXAorICAgIGxpYnBjcmUgXAorICAgIGxpYnBsaXN0IFwKKyAgICBsaWJzYW1wbGVyYXRlMCBcCisgICAgbGlic2RsLWltYWdlIFwKKyAgICBsaWJzZGwtbWl4ZXIgXAorICAgIGxpYnNxdWlzaCBcCisgICAgbGlic3NoIFwKKyAgICBsaWJ0aW55eG1sIFwKKyAgICBsaWJ1c2IxIFwKKyAgICBsaWJ4c2x0IFwKKyAgICBsem8gXAorICAgIG1wZWcyZGVjIFwKKyAgICBweXRob24gXAorICAgIHNxbGl0ZTMgXAorICAgIHRhZ2xpYiBcCisgICAgdmlydHVhbC9lZ2wgXAorICAgIHZpcnR1YWwvbGlic2RsIFwKKyAgICB3YXZwYWNrIFwKKyAgICB5YWpsIFwKKyAgICB6bGliIFwKKyAgICAke0BlbmFibGVfZ2xldyhiYiwgZCl9IFwKKyIKIAogUFJPVklERVMgPSAieGJtYyIKIApAQCAtNjcsMjQgKzY2LDI0IEBACiBQViA9ICIxNy4zK2dpdHIke1NSQ1BWfSIKIEFERE9OU1BWID0gIjE3LjEiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20veGJtYy94Ym1jLmdpdDticmFuY2g9S3J5cHRvbiBcCi0gICAgICAgICAgIGh0dHBzOi8vcmVwby52b2lkbGludXguZXUvZGlzdGZpbGVzLyR7QlBOfS0ke0FERE9OU1BWfS1nZW5lcmF0ZWQtYWRkb25zLnRhci54ejtuYW1lPWFkZG9uczt1bnBhY2s9MCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWNvbmZpZ3VyZS1kb24tdC10cnktdG8tcnVuLXN0dWZmLXRvLWZpbmQtdGlueXhtbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWhhbmRsZS1TSUdURVJNLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtYWRkLXN1cHBvcnQtdG8tcmVhZC1mcmVxdWVuY3ktb3V0cHV0LWlmLXVzaW5nLWludGVsLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LURpc2FibGUtRFZELXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1BbHdheXMtY29tcGlsZS1saWJjcGx1ZmYtYXMtUElDLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgta29kaS1jb25maWcuY21ha2UtdXNlLUNNQUtFX0ZJTkRfUk9PVF9QQVRILXRvLWZpeC1jci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LWJ1aWxkLUFkZC1zdXBwb3J0LWZvci1tdXNsLXRyaXBsZXRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtUnNzUmVhZGVyLUZpeC1jb21waWxlci13YXJuaW5nLWNvbXBhcmluZy1wb2ludGVyLXRvLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLUxldC1jb25maWd1cmUtcGFzcy1vbi11bmtub3duLWFyY2hpdGVjdHVyZXMtc2V0dGluZy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1SZXZlcnQtZHJvaWQtZml4LWJ1aWxkcy13aXRoLUFNTC1kaXNhYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNoYW5nZS1vcmRlci1vZi1kZXRlY3RpbmctbGliZWdsLWFuZC1saWJnbGVzMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLUZUUFBhcnNlLmNwcC11c2Utc3RkLXN0cmluZy5wYXRjaCBcCisgICAgaHR0cHM6Ly9yZXBvLnZvaWRsaW51eC5ldS9kaXN0ZmlsZXMvJHtCUE59LSR7QURET05TUFZ9LWdlbmVyYXRlZC1hZGRvbnMudGFyLnh6O25hbWU9YWRkb25zO3VucGFjaz0wIFwKKyAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUtZG9uLXQtdHJ5LXRvLXJ1bi1zdHVmZi10by1maW5kLXRpbnl4bWwucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LWhhbmRsZS1TSUdURVJNLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNS1hZGQtc3VwcG9ydC10by1yZWFkLWZyZXF1ZW5jeS1vdXRwdXQtaWYtdXNpbmctaW50ZWwtLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNi1EaXNhYmxlLURWRC1zdXBwb3J0LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNy1BbHdheXMtY29tcGlsZS1saWJjcGx1ZmYtYXMtUElDLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwOC1rb2RpLWNvbmZpZy5jbWFrZS11c2UtQ01BS0VfRklORF9ST09UX1BBVEgtdG8tZml4LWNyLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwOS1idWlsZC1BZGQtc3VwcG9ydC1mb3ItbXVzbC10cmlwbGV0cy5wYXRjaCBcCisgICAgZmlsZTovLzAwMTAtUnNzUmVhZGVyLUZpeC1jb21waWxlci13YXJuaW5nLWNvbXBhcmluZy1wb2ludGVyLXRvLS5wYXRjaCBcCisgICAgZmlsZTovLzAwMTEtTGV0LWNvbmZpZ3VyZS1wYXNzLW9uLXVua25vd24tYXJjaGl0ZWN0dXJlcy1zZXR0aW5nLS5wYXRjaCBcCisgICAgZmlsZTovLzAwMTItUmV2ZXJ0LWRyb2lkLWZpeC1idWlsZHMtd2l0aC1BTUwtZGlzYWJsZWQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWNoYW5nZS1vcmRlci1vZi1kZXRlY3RpbmctbGliZWdsLWFuZC1saWJnbGVzMi5wYXRjaCBcCisgICAgZmlsZTovLzAwMTMtRlRQUGFyc2UuY3BwLXVzZS1zdGQtc3RyaW5nLnBhdGNoIFwKICIKIAogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1maWxlX0VtdS1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItUmVtb3ZlLUZJTEVXUkFQLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1GaXgtZmlsZV9FbXUtb24tbXVzbC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItUmVtb3ZlLUZJTEVXUkFQLnBhdGNoIFwKICIKIFNSQ19VUklbYWRkb25zLm1kNXN1bV0gPSAiNzE5NjE0ZmE3NjQwMTFhMTg2NjVkMDhhZjVjOGM5MmYiCiBTUkNfVVJJW2FkZG9ucy5zaGEyNTZzdW1dID0gIjM1MGRhNTc0MDhjMjc0NzNlYWY0MGU3ZjU0NGJjOTQ4NDFiZjEwMWRjNDM0NjA4NTI2MGM1YzRhZjBhZGFjOTciCkBAIC0xMDIsOCArMTAxLDEwIEBACiBBQ0NFTF94ODYgPSAidmFhcGkgdmRwYXUiCiBBQ0NFTF94ODYtNjQgPSAidmFhcGkgdmRwYXUiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICIke0FDQ0VMfSBvcGVuZ2wiCi1QQUNLQUdFQ09ORklHX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnIHgxMScsICcgb3BlbmdsZXN2MicsIGQpfSIKK1BBQ0tBR0VDT05GSUcgPz89ICIke0FDQ0VMfSBvcGVuZ2wgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICdvcGVuZ2xlc3YyJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdzYW1iYScsICcnLCBkKX0gXAorIgogCiBQQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiLS1lbmFibGUtZ2wsLS1lbmFibGUtZ2xlcywiCiBQQUNLQUdFQ09ORklHW29wZW5nbGVzdjJdID0gIi0tZW5hYmxlLWdsZXMsLS1lbmFibGUtZ2wsdmlydHVhbC9lZ2wiCkBAIC0xMTMsNiArMTE0LDcgQEAKIFBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSxsaWJ4aW5lcmFtYSBsaWJ4bXUgbGlieHJhbmRyIGxpYnh0c3QiCiBQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlLC0tZGlzYWJsZS1wdWxzZSxwdWxzZWF1ZGlvIgogUEFDS0FHRUNPTkZJR1tsY21zXSA9ICItLWVuYWJsZS1sY21zMiwtLWRpc2FibGUtbGNtczIsbGNtcyIKK1BBQ0tBR0VDT05GSUdbc2FtYmFdID0gIi0tZW5hYmxlLXNhbWJhLC0tZGlzYWJsZS1zYW1iYSxzYW1iYSIKIAogRVhUUkFfT0VDT05GID0gIiBcCiAgICAgLS1kaXNhYmxlLWRlYnVnIFwKQEAgLTE4MywyOSArMTg1LDMxIEBACiAKICMga29kaSB1c2VzIHNvbWUga2luZCBvZiBkbG9wZW4oKSBtZXRob2QgZm9yIGxpYmNlYyBzbyB3ZSBuZWVkIHRvIGFkZCBpdCBtYW51YWxseQogIyBPcGVuR0wgYnVpbGRzIG5lZWQgZ2x4aW5mbywgdGhhdCdzIGluIG1lc2EtZGVtb3MKLVJSRUNPTU1FTkRTXyR7UE59X2FwcGVuZCA9ICIgbGliY2VjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLWN0eXBlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi1sYW5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXJlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi1odG1sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLWRpZmZsaWIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRob24tanNvbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi16bGliIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXNxbGl0ZTMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRob24tY29tcHJlc3Npb24gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJjdXJsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJ3hyYW5kciB4ZHB5aW5mbycsICcnLCBkKX0gXAorUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kID0gIiBcCisgICAgbGliY2VjIFwKKyAgICBweXRob24gXAorICAgIHB5dGhvbi1jdHlwZXMgXAorICAgIHB5dGhvbi1sYW5nIFwKKyAgICBweXRob24tcmUgXAorICAgIHB5dGhvbi1uZXRjbGllbnQgXAorICAgIHB5dGhvbi1odG1sIFwKKyAgICBweXRob24tZGlmZmxpYiBcCisgICAgcHl0aG9uLWpzb24gXAorICAgIHB5dGhvbi16bGliIFwKKyAgICBweXRob24tc2hlbGwgXAorICAgIHB5dGhvbi1zcWxpdGUzIFwKKyAgICBweXRob24tY29tcHJlc3Npb24gXAorICAgIGxpYmN1cmwgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICd4cmFuZHIgeGRweWluZm8nLCAnJywgZCl9IFwKICIKLVJSRUNPTU1FTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1jaGFybWFwLWlibTg1MCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtaWJtODUwIFwKLQkJCQkJZ2xpYmMtZ2NvbnYtdW5pY29kZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtdXRmLTMyIFwKLQkJCQkJZ2xpYmMtY2hhcm1hcC11dGYtOCBcCi0JCQkJCWdsaWJjLWxvY2FsZWRhdGEtZW4tdXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitSUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfbGliYy1nbGliYyA9ICIgXAorICAgIGdsaWJjLWNoYXJtYXAtaWJtODUwIFwKKyAgICBnbGliYy1nY29udi1pYm04NTAgXAorICAgIGdsaWJjLWdjb252LXVuaWNvZGUgXAorICAgIGdsaWJjLWdjb252LXV0Zi0zMiBcCisgICAgZ2xpYmMtY2hhcm1hcC11dGYtOCBcCisgICAgZ2xpYmMtbG9jYWxlZGF0YS1lbi11cyBcCisiCiAKIFJQUk9WSURFU18ke1BOfSArPSAieGJtYyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2NhcHMvY2Fwcy8wMDAxLURvLW5vdC11c2Utb2Jzb2xldGUtcG93MTBmLWZ1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2NhcHMvY2Fwcy8wMDAxLURvLW5vdC11c2Utb2Jzb2xldGUtcG93MTBmLWZ1bmN0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNWUxYjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvY2Fwcy9jYXBzLzAwMDEtRG8tbm90LXVzZS1vYnNvbGV0ZS1wb3cxMGYtZnVuY3Rpb24ucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSAwY2M3MzYyZTE3MTYxNmRjZmViOTNjNmUxNTc2MzYyNzYxYmYxNGU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMzEgSmFuIDIwMTggMTg6Mzc6MTYgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IHVzZSBvYnNvbGV0ZSBwb3cxMGYoKSBmdW5jdGlvbgorCitleHAxMCBuYW1lIGlzIHN0YW5kYXJkaXplZCBpbiBUUyAxODY2MS00IGFuZCBpdHMKK2F2YWlsYWJsZSBpbiBnbGliYyBzaW5jZSB2ZXJzaW9uIDIuMQoraXQgaGFzIGJlZW4gbm93IHJlbW92ZWQgZnJvbSBnbGliYyAyLjI3KworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGRzcC92NGZfSUlSMi5oIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZHNwL3Y0Zl9JSVIyLmggYi9kc3AvdjRmX0lJUjIuaAoraW5kZXggYTY4ZWNmNS4uZWJkMTIzNCAxMDA2NDQKKy0tLSBhL2RzcC92NGZfSUlSMi5oCisrKysgYi9kc3AvdjRmX0lJUjIuaAorQEAgLTMzLDcgKzMzLDcgQEAKKyBuYW1lc3BhY2UgRFNQIHsKKyAKKyAjaWZkZWYgX19BUFBMRV9fCistaW5saW5lIGZsb2F0IHBvdzEwZihmbG9hdCBmKSB7cmV0dXJuIHBvdygxMCxmKTt9CisraW5saW5lIGZsb2F0IGV4cDEwZihmbG9hdCBmKSB7cmV0dXJuIF9fZXhwMTBmKGYpO30KKyAjZW5kaWYKKyAKKyBjbGFzcyBSQkp2NAorQEAgLTE0Miw3ICsxNDIsNyBAQCBjbGFzcyBJSVIydjQKKyAJCQkJLyogQSA9IHBvdyAoMTAsIGdhaW4gLyA0MCkgKi8KKyAJCQkJdjRmX3QgQSA9ICh2NGZfdCkgey4wMjUsLjAyNSwuMDI1LC4wMjV9OworIAkJCQlBICo9IGdhaW47CistCQkJCUEgPSB2NGZfbWFwPHBvdzEwZj4gKEEpOworKwkJCQlBID0gdjRmX21hcDxleHAxMGY+IChBKTsKKyAKKyAJCQkJUkJKdjQgcCAoZiwgUSk7CisgCitAQCAtNDI5LDcgKzQyOSw3IEBAIGNsYXNzIElJUjJ2NEJhbmsKKyAJCQkJCS8qIEEgPSBwb3cgKDEwLCBnYWluIC8gNDApICovCisgCQkJCQl2NGZfdCBBID0gKHY0Zl90KSB7LjAyNSwuMDI1LC4wMjUsLjAyNX07CisgCQkJCQlBICo9IGdhaW5baV07CistCQkJCQlBID0gdjRmX21hcDxwb3cxMGY+IChBKTsKKysJCQkJCUEgPSB2NGZfbWFwPGV4cDEwZj4gKEEpOworIAorIAkJCQkJUkJKdjQgcCAoZltpXSwgUVtpXSk7CisgCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvY2Fwcy9jYXBzXzAuOS4yNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jYXBzL2NhcHNfMC45LjI0LmJiCmluZGV4IDI5MTY3ZDEuLmZlODY0YzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jYXBzL2NhcHNfMC45LjI0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jYXBzL2NhcHNfMC45LjI0LmJiCkBAIC03LDYgKzcsNyBAQAogICAgICAgICAgICBmaWxlOi8vQXZvaWQtYW1iaWd1aXR5LWluLWRpdi1pbnZvY2F0aW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYmFzaWMuaC1Vc2UtYzk5LXN1cHBvcnRlZC1zdGRpbnQtdHlwZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYXBwZW5kX2xkZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtdXNlLW9ic29sZXRlLXBvdzEwZi1mdW5jdGlvbi5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImMxZDYzNDAzOGRjYjU0NzAyMzA2YzBlMzBjYjFjNjI2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsdWlkc3ludGgvZmlsZXMvMDAwMS1Vc2UtQVJNLU5FT04tYWNjZWxhcmF0aW9uLWZvci1mbG9hdC1tdWx0aXRocmVhZGVkLXNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsdWlkc3ludGgvZmlsZXMvMDAwMS1Vc2UtQVJNLU5FT04tYWNjZWxhcmF0aW9uLWZvci1mbG9hdC1tdWx0aXRocmVhZGVkLXNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlMTg0NmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmx1aWRzeW50aC9maWxlcy8wMDAxLVVzZS1BUk0tTkVPTi1hY2NlbGFyYXRpb24tZm9yLWZsb2F0LW11bHRpdGhyZWFkZWQtc2UucGF0Y2gKQEAgLTAsMCArMSw3NiBAQAorRnJvbSAyZGU3ZTEyOGZiZGY1Mjg3MTZiNTAwY2YyN2VkOWE0MzU4YzkzMWM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjQgTm92IDIwMTcgMDA6MDU6MzUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIFVzZSBBUk0tTkVPTiBhY2NlbGFyYXRpb24gZm9yIGZsb2F0LW11bHRpdGhyZWFkZWQgc2V0dXBzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgc3JjL3J2b2ljZS9mbHVpZF9ydm9pY2VfbWl4ZXIuYyB8IDI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9ydm9pY2UvZmx1aWRfcnZvaWNlX21peGVyLmMgYi9zcmMvcnZvaWNlL2ZsdWlkX3J2b2ljZV9taXhlci5jCitpbmRleCA5NjE2NTE4Li5kYmY4MDU3IDEwMDY0NAorLS0tIGEvc3JjL3J2b2ljZS9mbHVpZF9ydm9pY2VfbWl4ZXIuYworKysrIGIvc3JjL3J2b2ljZS9mbHVpZF9ydm9pY2VfbWl4ZXIuYworQEAgLTI3LDYgKzI3LDEwIEBACisgI2luY2x1ZGUgImZsdWlkX2xhZHNwYS5oIgorICNpbmNsdWRlICJmbHVpZF9zeW50aC5oIgorIAorKyNpZiBkZWZpbmVkKF9fQVJNX05FT05fXykKKysjaW5jbHVkZSAiYXJtX25lb24uaCIKKysjZW5kaWYKKysKKyAKKyAjZGVmaW5lIEVOQUJMRV9NSVhFUl9USFJFQURTIDEKKyAKK0BAIC03OTQsMjAgKzc5OCw0MiBAQCBmbHVpZF9taXhlcl9idWZmZXJzX21peChmbHVpZF9taXhlcl9idWZmZXJzX3QqIGRlc3QsIGZsdWlkX21peGVyX2J1ZmZlcnNfdCogc3JjKQorICAgaWYgKG1pbmJ1ZiA+IHNyYy0+YnVmX2NvdW50KQorICAgICBtaW5idWYgPSBzcmMtPmJ1Zl9jb3VudDsKKyAgIGZvciAoaT0wOyBpIDwgbWluYnVmOyBpKyspIHsKKysjaWYgZGVmaW5lZChfX0FSTV9ORU9OX18pICYmIGRlZmluZWQoV0lUSF9GTE9BVCkKKysgICAgZm9yIChqPTA7IGogPCBzY291bnQ7IGorPTQpIHsKKysgICAgICAgIGZsb2F0MzJ4NF90IHZsZWZ0ID0gdmxkMXFfZjMyKCZkZXN0LT5sZWZ0X2J1ZltpXVtqXSk7CisrICAgICAgICBmbG9hdDMyeDRfdCB2cmlnaHQgPSB2bGQxcV9mMzIoJmRlc3QtPnJpZ2h0X2J1ZltpXVtqXSk7CisrICAgICAgICB2bGVmdCA9IHZhZGRxX2YzMih2bGVmdCwgdmxkMXFfZjMyKCZzcmMtPmxlZnRfYnVmW2ldW2pdKSk7CisrICAgICAgICB2cmlnaHQgPSB2YWRkcV9mMzIodnJpZ2h0LCB2bGQxcV9mMzIoJnNyYy0+cmlnaHRfYnVmW2ldW2pdKSk7CisrICAgICAgICB2c3QxcV9mMzIoJmRlc3QtPmxlZnRfYnVmW2ldW2pdLCB2bGVmdCk7CisrICAgICAgICB2c3QxcV9mMzIoJmRlc3QtPnJpZ2h0X2J1ZltpXVtqXSwgdnJpZ2h0KTsKKysgICAgfQorKyNlbHNlCisgICAgIGZvciAoaj0wOyBqIDwgc2NvdW50OyBqKyspIHsKKyAgICAgICBkZXN0LT5sZWZ0X2J1ZltpXVtqXSArPSBzcmMtPmxlZnRfYnVmW2ldW2pdOworICAgICAgIGRlc3QtPnJpZ2h0X2J1ZltpXVtqXSArPSBzcmMtPnJpZ2h0X2J1ZltpXVtqXTsKKyAgICAgfQorKyNlbmRpZgorICAgfQorIAorICAgbWluYnVmID0gZGVzdC0+ZnhfYnVmX2NvdW50OworICAgaWYgKG1pbmJ1ZiA+IHNyYy0+ZnhfYnVmX2NvdW50KQorICAgICBtaW5idWYgPSBzcmMtPmZ4X2J1Zl9jb3VudDsKKyAgIGZvciAoaT0wOyBpIDwgbWluYnVmOyBpKyspIHsKKysjaWYgZGVmaW5lZChfX0FSTV9ORU9OX18pICYmIGRlZmluZWQoV0lUSF9GTE9BVCkKKysgICAgZm9yIChqPTA7IGogPCBzY291bnQ7IGorPTQpIHsKKysgICAgICAgIGZsb2F0MzJ4NF90IHZsZWZ0ID0gdmxkMXFfZjMyKCZkZXN0LT5meF9sZWZ0X2J1ZltpXVtqXSk7CisrICAgICAgICBmbG9hdDMyeDRfdCB2cmlnaHQgPSB2bGQxcV9mMzIoJmRlc3QtPmZ4X3JpZ2h0X2J1ZltpXVtqXSk7CisrICAgICAgICB2bGVmdCA9IHZhZGRxX2YzMih2bGVmdCwgdmxkMXFfZjMyKCZzcmMtPmZ4X2xlZnRfYnVmW2ldW2pdKSk7CisrICAgICAgICB2cmlnaHQgPSB2YWRkcV9mMzIodnJpZ2h0LCB2bGQxcV9mMzIoJnNyYy0+ZnhfcmlnaHRfYnVmW2ldW2pdKSk7CisrICAgICAgICB2c3QxcV9mMzIoJmRlc3QtPmZ4X2xlZnRfYnVmW2ldW2pdLCB2bGVmdCk7CisrICAgICAgICB2c3QxcV9mMzIoJmRlc3QtPmZ4X3JpZ2h0X2J1ZltpXVtqXSwgdnJpZ2h0KTsKKysgICAgfQorKyNlbHNlCisgICAgIGZvciAoaj0wOyBqIDwgc2NvdW50OyBqKyspIHsKKyAgICAgICBkZXN0LT5meF9sZWZ0X2J1ZltpXVtqXSArPSBzcmMtPmZ4X2xlZnRfYnVmW2ldW2pdOworICAgICAgIGRlc3QtPmZ4X3JpZ2h0X2J1ZltpXVtqXSArPSBzcmMtPmZ4X3JpZ2h0X2J1ZltpXVtqXTsKKyAgICAgfQorKyNlbmRpZgorICAgfQorIH0KKyAKKy0tIAorMi45LjUKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsdWlkc3ludGgvZmx1aWRzeW50aF8xLjEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmx1aWRzeW50aC9mbHVpZHN5bnRoXzEuMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWM0YzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsdWlkc3ludGgvZmx1aWRzeW50aF8xLjEuMTAuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJGbHVpZHN5bnRoIGlzIGEgc29mdHdhcmUgc3ludGhlc2l6ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZsdWlkc3ludGgub3JnLyIKK1NFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWZjMTc4YmNkNDI1MDkwOTM5YThiNjM0ZDFkNmE5NTk0IgorCitERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgZ2xpYi0yLjAiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL0ZsdWlkU3ludGgvZmx1aWRzeW50aC5naXQ7YnJhbmNoPTEuMS54IFwKKyAgICBmaWxlOi8vMDAwMS1Vc2UtQVJNLU5FT04tYWNjZWxhcmF0aW9uLWZvci1mbG9hdC1tdWx0aXRocmVhZGVkLXNlLnBhdGNoIFwKKyIKK1NSQ1JFViA9ICJmNWEwZmVlNmY3ZjJiMmFiNGM4NjZkZjFhY2I2NDkzMzM0NjRiM2ZkIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcgbGliX3BhY2thZ2UKKworRVhUUkFfT0VDTUFLRSA9ICItRGVuYWJsZS1mbG9hdHM9T04gLURMSUJfU1VGRklYPSR7QGQuZ2V0VmFyKCdiYXNlbGliJykucmVwbGFjZSgnbGliJywgJycpfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCBkKX0iCitQQUNLQUdFQ09ORklHW3NuZGZpbGVdID0gIi1EZW5hYmxlLWxpYnNuZGZpbGUtc3VwcG9ydD1PTiwtRGVuYWJsZS1saWJzbmRmaWxlLXN1cHBvcnQ9T0ZGLGxpYnNuZGZpbGUxIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItRGVuYWJsZS1qYWNrLXN1cHBvcnQ9T04sLURlbmFibGUtamFjay1zdXBwb3J0PU9GRixqYWNrIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItRGVuYWJsZS1wdWxzZWF1ZGlvPU9OLC0tRGVuYWJsZS1wdWxzZWF1ZGlvPU9GRixwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1twb3J0YXVkaW9dID0gIi1EZW5hYmxlLXBvcnRhdWRpbz1PTiwtRGVuYWJsZS1wb3J0YXVkaW89T0ZGLHBvcnRhdWRpby12MTkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmx1aWRzeW50aC9mbHVpZHN5bnRoXzEuMS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsdWlkc3ludGgvZmx1aWRzeW50aF8xLjEuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg5ODFlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmx1aWRzeW50aC9mbHVpZHN5bnRoXzEuMS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJGbHVpZHN5bnRoIGlzIGEgc29mdHdhcmUgc3ludGhlc2l6ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZsdWlkc3ludGgub3JnLyIKLVNFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMLTIuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lMTk4ZTlhYWM5NDk0M2QwZWMyOWE3ZGFlOGMyOTQxNiIKLQotREVQRU5EUyA9ICJhbHNhLWxpYiBuY3Vyc2VzIGdsaWItMi4wIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQfS8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiYWU1YWNhNmRlODI0YjQxNzM2NjdjYmQzYTMxMGIyNjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTA4NTMzOTFkOWViZWRhOWI0ZGI3ODdlZmIyM2Y5OGIxZTI2YjcyOTZkZDJiYjVkMGQ5NmI1YmNjZWUyMTcxYyIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbc25kZmlsZV0gPSAiLS1lbmFibGUtbGlic25kZmlsZS1zdXBwb3J0LC0tZGlzYWJsZS1saWJzbmRmaWxlLXN1cHBvcnQsbGlic25kZmlsZTEiCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2stc3VwcG9ydCwtLWRpc2FibGUtamFjay1zdXBwb3J0LGphY2siCi1QQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlLXN1cHBvcnQsLS1kaXNhYmxlLXB1bHNlLXN1cHBvcnQscHVsc2VhdWRpbyIKLVBBQ0tBR0VDT05GSUdbcG9ydGF1ZGlvXSA9ICItLWVuYWJsZS1wb3J0YXVkaW8tc3VwcG9ydCwtLWRpc2FibGUtcG9ydGF1ZGlvLXN1cHBvcnQscG9ydGF1ZGlvLXYxOSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgIHJtIC1mICR7U30vbTQvKgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9sb3dlci1yYW5rLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2xvd2VyLXJhbmsuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYwOGFmZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2xvd2VyLXJhbmsuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUxvd2VyIHRoZSByYW5rIG9mIGZmbXBlZyBwbHVnaW4gc28gY29kZWNzIHRoYXQgaG9vayBpbnRvIGFjY2VsZXJhdGVkIHBpZWNlcyAoZS5nLiBkc3Agb3IgaHcgZW5naW5lcykgY2FuIGdldCBwaWNrZWQgb3ZlciB0aGlzCi1EZXJpdmVkIGZyb20gT0UgYnkgRG9uZ3hpYW8gWHUgPGRvbmd4aWFvLnh1QGludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotLS0tIC90bXAvZ3N0ZmZtcGVnZGVjLmMJMjAwOS0wMy0wNSAwOTozMToxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuNi9leHQvZmZtcGVnL2dzdGZmbXBlZ2RlYy5jCTIwMDktMDMtMDUgMDk6MzM6MDkuMDAwMDAwMDAwICswMTAwCi1AQCAtMjU4OCw3ICsyNTg4LDcgQEAKLSAgICAgICBjYXNlIENPREVDX0lEX01TTVBFRzRWMzoKLSAgICAgICBjYXNlIENPREVDX0lEX0gyNjQ6Ci0gICAgICAgY2FzZSBDT0RFQ19JRF9DT09LOgotLSAgICAgICAgcmFuayA9IEdTVF9SQU5LX1BSSU1BUlk7Ci0rICAgICAgICByYW5rID0gR1NUX1JBTktfU0VDT05EQVJZOwotICAgICAgICAgYnJlYWs7Ci0gICAgICAgY2FzZSBDT0RFQ19JRF9EVlZJREVPOgotICAgICAgICAgLyogd2UgaGF2ZSBhIGdvb2QgZHYgZGVjb2RlciwgZmFzdCBvbiBib3RoIHBwYyBhcyB3ZWxsIGFzIHg4Ni4gdGhleSBzYXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtcGx1Z2lucy1iYXNlXzAuMTAuMzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LXBsdWdpbnMtYmFzZV8wLjEwLjM2LmJiCmluZGV4IGEzYmZhNWYuLmYyMzU0NjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtcGx1Z2lucy1iYXNlXzAuMTAuMzYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1wbHVnaW5zLWJhc2VfMC4xMC4zNi5iYgpAQCAtMjUsNyArMjUsNiBAQAogCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgogCi1QQUNLQUdFQ09ORklHW2dub21ldmZzXSA9ICItLWVuYWJsZS1nbm9tZV92ZnMsLS1kaXNhYmxlLWdub21lX3Zmcyxnbm9tZS12ZnMiCiBQQUNLQUdFQ09ORklHW29yY10gPSAiLS1lbmFibGUtb3JjLC0tZGlzYWJsZS1vcmMsb3JjIgogUEFDS0FHRUNPTkZJR1twYW5nb10gPSAiLS1lbmFibGUtcGFuZ28sLS1kaXNhYmxlLXBhbmdvLHBhbmdvIgogUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXggLS1lbmFibGUteHZpZGVvLC0tZGlzYWJsZS14IC0tZGlzYWJsZS14dmlkZW8sdmlydHVhbC9saWJ4MTEgbGlieHYgbGlic20gbGliaWNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1ydHNwLzAwMDEtY2hhbmdlLWRlcHJlY2F0ZWQtSU5DTFVERVMtdG8tQU1fQ1BQRkxBR1MtZm9yLWF1dG9tYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtcnRzcC8wMDAxLWNoYW5nZS1kZXByZWNhdGVkLUlOQ0xVREVTLXRvLUFNX0NQUEZMQUdTLWZvci1hdXRvbWEucGF0Y2gKaW5kZXggM2FmY2E0ZS4uNjliMjFkZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1ydHNwLzAwMDEtY2hhbmdlLWRlcHJlY2F0ZWQtSU5DTFVERVMtdG8tQU1fQ1BQRkxBR1MtZm9yLWF1dG9tYS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LXJ0c3AvMDAwMS1jaGFuZ2UtZGVwcmVjYXRlZC1JTkNMVURFUy10by1BTV9DUFBGTEFHUy1mb3ItYXV0b21hLnBhdGNoCkBAIC0xLDM0ICsxLDM4IEBACiBpbmRleCBnc3QtcnRzcF8wLjEwLjgvYmluZGluZ3MvcHl0aG9uL01ha2VmaWxlLmFtCi0tLS0gZ3N0LXJ0c3BfMC4xMC44Lm9yaWcvYmluZGluZ3MvcHl0aG9uL01ha2VmaWxlLmFtCi0rKysgZ3N0LXJ0c3BfMC4xMC44L2JpbmRpbmdzL3B5dGhvbi9NYWtlZmlsZS5hbQorSW5kZXg6IGdzdC1ydHNwLTAuMTAuOC9iaW5kaW5ncy9weXRob24vTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcnRzcC0wLjEwLjgub3JpZy9iaW5kaW5ncy9weXRob24vTWFrZWZpbGUuYW0KKysrKyBnc3QtcnRzcC0wLjEwLjgvYmluZGluZ3MvcHl0aG9uL01ha2VmaWxlLmFtCiBAQCAtMTQsNyArMTQsNyBAQCBkZWZzX0RBVEEgPSAkKERFRlMpCiAgZGVmc2RpciA9ICQocGtnZGF0YWRpcikvJChHU1RfTUFKT1JNSU5PUikvZGVmcwogIE9WRVJSSURFUyA9IHJ0c3BzZXJ2ZXIub3ZlcnJpZGUKLQorIAogLUlOQ0xVREVTID0gLUkkKHRvcF9zcmNkaXIpIC1JJChzcmNkaXIpICQoUFlUSE9OX0lOQ0xVREVTKQogK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpIC1JJChzcmNkaXIpICQoUFlUSE9OX0lOQ0xVREVTKQotCisgCiAgcnRzcHNlcnZlcl9sYV9DRkxBR1MgPSAtSSQodG9wX3NyY2Rpcikvc3JjIFwKLSAgICAgICAgICQoUFlHT0JKRUNUX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKQotaW5kZXggZ3N0LXJ0c3BfMC4xMC44L2V4YW1wbGVzL01ha2VmaWxlLmFtCi0tLS0gZ3N0LXJ0c3BfMC4xMC44Lm9yaWcvZXhhbXBsZXMvTWFrZWZpbGUuYW0KLSsrKyBnc3QtcnRzcF8wLjEwLjgvZXhhbXBsZXMvTWFrZWZpbGUuYW0KKyAJCSQoUFlHT0JKRUNUX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKQorSW5kZXg6IGdzdC1ydHNwLTAuMTAuOC9leGFtcGxlcy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1ydHNwLTAuMTAuOC5vcmlnL2V4YW1wbGVzL01ha2VmaWxlLmFtCisrKysgZ3N0LXJ0c3AtMC4xMC44L2V4YW1wbGVzL01ha2VmaWxlLmFtCiBAQCAtMSw2ICsxLDYgQEAKICBub2luc3RfUFJPR1JBTVMgPSB0ZXN0LXZpZGVvIHRlc3Qtb2dnIHRlc3QtbXA0IHRlc3QtcmVhZG1lIHRlc3QtbGF1bmNoIHRlc3Qtc2RwIHRlc3QtdXJpIHRlc3QtYXV0aAotCisgCiAtSU5DTFVERVMgPSAtSSQodG9wX3NyY2RpcikgLUkkKHNyY2RpcikKICtBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKSAtSSQoc3JjZGlyKQotCisgCiAgQU1fQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKQogIEFNX0xERkxBR1MgPSBcCi1pbmRleCBnc3QtcnRzcF8wLjEwLjgvdGVzdHMvTWFrZWZpbGUuYW0KLS0tLSBnc3QtcnRzcF8wLjEwLjgub3JpZy90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGdzdC1ydHNwXzAuMTAuOC90ZXN0cy9NYWtlZmlsZS5hbQorSW5kZXg6IGdzdC1ydHNwLTAuMTAuOC90ZXN0cy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1ydHNwLTAuMTAuOC5vcmlnL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgZ3N0LXJ0c3AtMC4xMC44L3Rlc3RzL01ha2VmaWxlLmFtCiBAQCAtMSw2ICsxLDYgQEAKICBub2luc3RfUFJPR1JBTVMgPSB0ZXN0LWNsZWFudXAKLQorIAogLUlOQ0xVREVTID0gLUkkKHRvcF9zcmNkaXIpIC1JJChzcmNkaXIpCiArQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikgLUkkKHNyY2RpcikKLQorIAogIEFNX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykKICBBTV9MREZMQUdTID0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0xLjAvZ3N0ZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTEuMC9nc3RkLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGVlNWJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0xLjAvZ3N0ZC5pbmMKQEAgLTAsMCArMSwyNSBAQAorREVTQ1JJUFRJT04gPSAiR3N0cmVhbWVyIERhZW1vbiAxLjAiCitTVU1NQVJZID0gIkdTdHJlYW1lciBmcmFtZXdvcmsgZm9yIGNvbnRyb2xsaW5nIGF1ZGlvIGFuZCB2aWRlbyBzdHJlYW1pbmcgdXNpbmcgVENQIGNvbm5lY3Rpb24gbWVzc2FnZXMiCitIT01FUEFHRSA9ICJodHRwczovL2RldmVsb3Blci5yaWRnZXJ1bi5jb20vd2lraS9pbmRleC5waHA/dGl0bGU9R3N0ZC0xLjAiCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCitMSUNFTlNFID0gIkdQTHYyKyIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyIGpzb24tZ2xpYiBsaWJkYWVtb24iCisKK1NSQ0JSQU5DSCA/PSAibWFzdGVyIgorU1JDUkVWID0gIjA5N2EwODZhODYwNmRjYjM2OGM3ZDM4YzdlYzRmZWZjMjQ5NzQwMWIiCitTUkNfVVJJID0gImdpdDovL2dpdEBnaXRodWIuY29tL1JpZGdlUnVuL2dzdGQtMS54LmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9JHtTUkNCUkFOQ0h9IFwKKwkgICBmaWxlOi8vMDAwMS1nc3RkLXlvY3RvLWNvbXBhdGliaWxpdHkucGF0Y2giCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1BBQ0tBR0VDT05GSUdfQ09ORkFSR1MgPSAiIFwKKwktLWRpc2FibGUtZ3RrLWRvYyBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CisKK2RvX2NvbmZpZ3VyZSgpIHsKKyR7U30vYXV0b2dlbi5zaAorb2VfcnVuY29uZgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0xLjAvZ3N0ZC8wMDAxLWdzdGQteW9jdG8tY29tcGF0aWJpbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMS4wL2dzdGQvMDAwMS1nc3RkLXlvY3RvLWNvbXBhdGliaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRjMTgzMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMS4wL2dzdGQvMDAwMS1nc3RkLXlvY3RvLWNvbXBhdGliaWxpdHkucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSBlYWY1MWQ2NDIwYzYzNzEzZjYyMDI1NTgzNjgxMDA3YzM1MDJkMzg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2FybG9zIDxjYXJsb3Mucm9kcmlndWV6QHJpZGdlcnVuLmNvbT4KK0RhdGU6IEZyaSwgMTUgRGVjIDIwMTcgMTA6MTQ6MDUgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gZ3N0ZDp5b2N0byBjb21wYXRpYmlsaXR5CisKKy0tLQorIGF1dG9nZW4uc2ggICAgICAgICAgICAgICAgICAgICAgfCA4ICsrKysrKystCisgZG9jcy9yZWZlcmVuY2UvZ3N0ZC9NYWtlZmlsZS5hbSB8IDIgKy0KKyBnc3RkL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYXV0b2dlbi5zaCBiL2F1dG9nZW4uc2gKK2luZGV4IDY2ZGJkNDIuLjc5M2VlMmYgMTAwNzU1CistLS0gYS9hdXRvZ2VuLnNoCisrKysgYi9hdXRvZ2VuLnNoCitAQCAtMjEsNyArMjEsMTEgQEAKKyAjIEFDTE9DQUwsIEFVVE9QT0lOVCBhbmQvb3IgTElCVE9PTElaRSB0byB0aGUgcmlnaHQgdmVyc2lvbnMsIG9yIGxlYXZlIHRoZW0KKyAjIHVuc2V0IGFuZCBnZXQgdGhlIGRlZmF1bHRzCisgCistZ3RrZG9jaXplIHx8IGV4aXQgMQorK3Rlc3QgLW4gIiRzcmNkaXIiIHx8IHNyY2Rpcj1gZGlybmFtZSAiJDAiYAorK3Rlc3QgLW4gIiRzcmNkaXIiIHx8IHNyY2Rpcj0uCisrCisrb2xkZGlyPWBwd2RgCisrY2QgIiRzcmNkaXIiCisgCisgYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1mb3JjZSAtLWluc3RhbGwgfHwgeworICBlY2hvICdhdXRvZ2VuLnNoIGZhaWxlZCc7CitAQCAtMzEsMyArMzUsNSBAQCBhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWZvcmNlIC0taW5zdGFsbCB8fCB7CisgZWNobworIGVjaG8gIk5vdyBydW4gJy4vY29uZmlndXJlJyB3aXRoIHlvdXIgc3lzdGVtIHNldHRpbmdzIGZvbGxvd2VkIGJ5ICdtYWtlJyB0byBjb21waWxlIHRoaXMgbW9kdWxlLiIKKyBlY2hvCisrCisrY2QgIiRvbGRkaXIiCitkaWZmIC0tZ2l0IGEvZG9jcy9yZWZlcmVuY2UvZ3N0ZC9NYWtlZmlsZS5hbSBiL2RvY3MvcmVmZXJlbmNlL2dzdGQvTWFrZWZpbGUuYW0KK2luZGV4IGY4NjBmYTEuLjE1M2ExM2IgMTAwNjQ0CistLS0gYS9kb2NzL3JlZmVyZW5jZS9nc3RkL01ha2VmaWxlLmFtCisrKysgYi9kb2NzL3JlZmVyZW5jZS9nc3RkL01ha2VmaWxlLmFtCitAQCAtNjYsNyArNjYsNyBAQCBHVEtET0NfTElCUz0kKHRvcF9idWlsZGRpcikvZ3N0ZC9saWJnc3RkLWNvcmUubGEKKyAKKyAKKyAjIFRoaXMgaW5jbHVkZXMgdGhlIHN0YW5kYXJkIGd0ay1kb2MgbWFrZSBydWxlcywgY29waWVkIGJ5IGd0a2RvY2l6ZS4KKy1pbmNsdWRlICQodG9wX3NyY2RpcikvZG9jcy9ndGstZG9jLm1ha2UKKysjIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9kb2NzL2d0ay1kb2MubWFrZQorIAorICMgQ29tbWVudCB0aGlzIG91dCBpZiB5b3Ugd2FudCAnbWFrZSBjaGVjaycgdG8gdGVzdCB5b3UgZG9jIHN0YXR1cworICMgYW5kIHJ1biBzb21lIHNhbml0eSBjaGVja3MKK2RpZmYgLS1naXQgYS9nc3RkL01ha2VmaWxlLmFtIGIvZ3N0ZC9NYWtlZmlsZS5hbQoraW5kZXggMTNjNTUxZC4uMTFmZTIwMiAxMDA2NDQKKy0tLSBhL2dzdGQvTWFrZWZpbGUuYW0KKysrKyBiL2dzdGQvTWFrZWZpbGUuYW0KK0BAIC00OSw3ICs0OSw3IEBAIGJpbl9QUk9HUkFNUyA9IGdzdGQKKyAKKyBnc3RkX1NPVVJDRVMgPSBnc3RkLmMKKyBnc3RkX0NGTEFHUyA9ICQoR1NUX0NGTEFHUykgJChHSU9fQ0ZMQUdTKSAkKEdKU09OX0NGTEFHUykKKy1nc3RkX0xERkxBR1MgPSAkKEdTVF9MSUJTKSAkKEdJT19MSUJTKSAkKEdKU09OX0xJQlMpIC1XbCwtcnBhdGggLVdsLCQobGliZGlyKQorK2dzdGRfTERGTEFHUyA9ICQoR1NUX0xJQlMpICQoR0lPX0xJQlMpICQoR0pTT05fTElCUykKKyBnc3RkX0xEQUREID0gbGliZ3N0ZC1jb3JlLmxhCisgCisgZ3N0ZGluY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL2dzdGQKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0xLjAvZ3N0ZF8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTEuMC9nc3RkXzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGY2YjU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0xLjAvZ3N0ZF8xLjAuYmIKQEAgLTAsMCArMSwzIEBACityZXF1aXJlIGdzdGQuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmRjMTM5NC9maWxlcy9pbnN0YWxsX2V4YW1wbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmRjMTM5NC9maWxlcy9pbnN0YWxsX2V4YW1wbGVzLnBhdGNoCmluZGV4IDg5MTMzYWQuLmRmMGMyMzUgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJkYzEzOTQvZmlsZXMvaW5zdGFsbF9leGFtcGxlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGliZGMxMzk0L2ZpbGVzL2luc3RhbGxfZXhhbXBsZXMucGF0Y2gKQEAgLTEsOSArMSw5IEBACiBJbmRleDogbGliZGMxMzk0L2V4YW1wbGVzL01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliZGMxMzk0Lm9yaWcvZXhhbXBsZXMvTWFrZWZpbGUuYW0JMjAxMi0wNi0zMCAxNzo1MDo0Ni4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJkYzEzOTQvZXhhbXBsZXMvTWFrZWZpbGUuYW0JMjAxMi0wNi0zMCAxOTowMjoxMy44MjI2NDY0MzAgLTA3MDAKLUBAIC0zNiw4ICszNiw3IEBACi0gQU1fTERGTEFHUyA9IC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZyYW1ld29yayBDYXJib24KKy0tLSBsaWJkYzEzOTQub3JpZy9leGFtcGxlcy9NYWtlZmlsZS5hbQorKysrIGxpYmRjMTM5NC9leGFtcGxlcy9NYWtlZmlsZS5hbQorQEAgLTM2LDggKzM2LDcgQEAgaWYgSEFWRV9NQUNPU1gKKyBBTV9MREZMQUdTID0gLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAkKEZSQU1FV09SS19JT0tJVCkKICBlbmRpZgogIAogLW5vaW5zdF9QUk9HUkFNUyA9ICQoQSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJkZTI2NS9saWJkZTI2NV8xLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJkZTI2NS9saWJkZTI2NV8xLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDA3NWZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmRlMjY1L2xpYmRlMjY1XzEuMC4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK0RFU0NSSVBUSU9OID0gImxpYmRlMjY1IGlzIGFuIG9wZW4gc291cmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBoLjI2NSBcCit2aWRlbyBjb2RlYy4gSXQgaXMgd3JpdHRlbiBmcm9tIHNjcmF0Y2ggYW5kIGhhcyBhIHBsYWluIEMgQVBJIHRvIGVuYWJsZSBhIFwKK3NpbXBsZSBpbnRlZ3JhdGlvbiBpbnRvIG90aGVyIHNvZnR3YXJlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGliZGUyNjUub3JnLyIKK1NFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgorCitMSUNFTlNFID0gIkxHUEx2MyIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg1MmYzNDVjMWM1MmM5MTYwZjlhN2MzNmJiOTk3NTQ2IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdHJ1a3R1cmFnL2xpYmRlMjY1L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjkzNTIwYjM3OGRmMjVmM2E5NGU5NjJmMmI1NDg3MmNjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVhYTAzNDg4MzljMjkzNWRkOTA2NDdkNzJjNmRkNGEwNDNlMzYzNjFjYjNjMzNkMmIwNGRmMTBmYmNlYmQzY2IiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc2hlcmxvY2syNjUgLS1kaXNhYmxlLWRlYzI2NSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY2JyYWluei9maWxlcy9hbGxvdy1saWJkaXItb3ZlcnJpZGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbXVzaWNicmFpbnovZmlsZXMvYWxsb3ctbGliZGlyLW92ZXJyaWRlLnBhdGNoCmluZGV4IGQ1OWQxMmUuLmRiNGQ2ZTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY2JyYWluei9maWxlcy9hbGxvdy1saWJkaXItb3ZlcnJpZGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL211c2ljYnJhaW56L2ZpbGVzL2FsbG93LWxpYmRpci1vdmVycmlkZS5wYXRjaApAQCAtNiwxMSArNiwxMSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogCi1JbmRleDogbGlibXVzaWNicmFpbnotMy4wLjMvQ01ha2VMaXN0cy50eHQKK0luZGV4OiBnaXQvQ01ha2VMaXN0cy50eHQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJtdXNpY2JyYWluei0zLjAuMy5vcmlnL0NNYWtlTGlzdHMudHh0Ci0rKysgbGlibXVzaWNicmFpbnotMy4wLjMvQ01ha2VMaXN0cy50eHQKLUBAIC0yNiw3ICsyNiw3IEBAIEZJTkRfUEFDS0FHRShEaXNjSWQpCistLS0gZ2l0Lm9yaWcvQ01ha2VMaXN0cy50eHQKKysrKyBnaXQvQ01ha2VMaXN0cy50eHQKK0BAIC0zNiw3ICszNiw3IEBAIEZJTkRfUEFDS0FHRShMaWJYbWwyIFJFUVVJUkVEKQogIFNFVChMSUJfU1VGRklYICIiIENBQ0hFIFNUUklORyAiRGVmaW5lIHN1ZmZpeCBvZiBkaXJlY3RvcnkgbmFtZSAoMzIvNjQpIikKICBTRVQoRVhFQ19JTlNUQUxMX1BSRUZJWCAke0NNQUtFX0lOU1RBTExfUFJFRklYfSBDQUNIRSBQQVRIICJJbnN0YWxsYXRpb24gcHJlZml4IGZvciBleGVjdXRhYmxlcyBhbmQgb2JqZWN0IGNvZGUgbGlicmFyaWVzIiBGT1JDRSkKICBTRVQoQklOX0lOU1RBTExfRElSICR7RVhFQ19JTlNUQUxMX1BSRUZJWH0vYmluIENBQ0hFIFBBVEggIkluc3RhbGxhdGlvbiBwcmVmaXggZm9yIHVzZXIgZXhlY3V0YWJsZXMiIEZPUkNFKQpAQCAtMTgsNCArMTgsNCBAQAogK1NFVChMSUJfSU5TVEFMTF9ESVIgJHtFWEVDX0lOU1RBTExfUFJFRklYfS9saWIke0xJQl9TVUZGSVh9IENBQ0hFIFBBVEggICJJbnN0YWxsYXRpb24gcHJlZml4IGZvciBvYmplY3QgY29kZSBsaWJyYXJpZXMiKQogIFNFVChJTkNMVURFX0lOU1RBTExfRElSICR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2luY2x1ZGUgQ0FDSEUgUEFUSCAiSW5zdGFsbGF0aW9uIHByZWZpeCBmb3IgQyBoZWFkZXIgZmlsZXMiIEZPUkNFKQogIAotIENPTkZJR1VSRV9GSUxFKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saWJtdXNpY2JyYWluejMucGMuY21ha2UgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2xpYm11c2ljYnJhaW56My5wYykKKyBDT05GSUdVUkVfRklMRSgke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbGlibXVzaWNicmFpbno1LnBjLmNtYWtlICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9saWJtdXNpY2JyYWluejUucGMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbXVzaWNwZC9tcGRfMC4xOS4yMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY3BkL21wZF8wLjE5LjIxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWIyMWEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY3BkL21wZF8wLjE5LjIxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLVNVTU1BUlkgPSAiTXVzaWMgUGxheWVyIERhZW1vbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLUhPTUVQQUdFID0iaHR0cDovL3d3dy5tdXNpY3BkLm9yZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXNlcmFkZCBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1ERVBFTkRTICs9ICIgXAotICAgIGFsc2EtbGliIFwKLSAgICBsaWJzYW1wbGVyYXRlMCBcCi0gICAgbGlic25kZmlsZTEgXAotICAgIGxpYnZvcmJpcyBcCi0gICAgbGlib2dnIFwKLSAgICBmYWFkMiBcCi0gICAgZmZtcGVnIFwKLSAgICBjdXJsIFwKLSAgICBzcWxpdGUgXAotICAgIGJ6aXAyIFwKLSAgICBwdWxzZWF1ZGlvIFwKLSAgICB0Y3Atd3JhcHBlcnMgXAotICAgIG9wZW5hbC1zb2Z0IFwKLSAgICB5YWpsIFwKLSAgICBqYWNrIFwKLSAgICBmYWFkMiBcCi0gICAgZmxhYyBcCi0gICAgbGliYW8gXAotICAgIGZsdWlkc3ludGggXAotICAgIGxpYmNkaW8gXAotICAgIHdhdnBhY2sgXAotICAgIGxpYm9wdXMgXAotICAgIG1wZzEyMyBcCi0gICAgbGlibW1zIFwKLSAgICBsaWJtb2RwbHVnIFwKLSAgICBib29zdCBcCi0gICAgaWN1IFwKLSAgICBkYnVzIFwKLSAgICBleHBhdCBcCi0gICAgemxpYiBcCi0gICAgbGlidXBucDEuNiBcCi0iCi0KLSMgV2hpbGUgdGhpcyBpdGVtIGRvZXMgbm90IHJlcXVpcmUgaXQsIGl0IGRlcGVuZHMgb24gbXBnMTIzIHdoaWNoIGRvZXMKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly93d3cubXVzaWNwZC5vcmcvZG93bmxvYWQvJHtCUE59LzAuMTkvJHtCUH0udGFyLnh6IFwKLSAgICBmaWxlOi8vbXBkLmNvbmYuaW4gXAotIgotU1JDX1VSSVttZDVzdW1dID0gImZjMTlmNzZiNTEyYmQ0NzFiNmFmNTIxNDk2NWZmN2M1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzMDViOGJjMDI2ZjRiNmJkZTI4YjhkZDA5YmZkZGRiZTU1OTBhY2YzNjM1OGVlZDRkMDgzYTM5NmUzMDE3MzAiCi0KLUVYVFJBX09FQ09ORiA9ICJlbmFibGVfYnppcDI9eWVzIgotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJywgJy0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcicsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thdWRpb2ZpbGVdID0gIi0tZW5hYmxlLWF1ZGlvZmlsZSwtLWRpc2FibGUtYXVkaW9maWxlLGF1ZGlvZmlsZSIKLVBBQ0tBR0VDT05GSUdbY2Rpb3BhcmFub2lhXSA9ICItLWVuYWJsZS1jZGlvLXBhcmFub2lhLC0tZGlzYWJsZS1jZGlvLXBhcmFub2lhLGxpYmNkaW8tcGFyYW5vaWEiCi1QQUNLQUdFQ09ORklHW21hZF0gPSAiLS1lbmFibGUtbWFkLC0tZGlzYWJsZS1tYWQsbGlibWFkIgotUEFDS0FHRUNPTkZJR1tpZDN0YWddID0gIi0tZW5hYmxlLWlkMywtLWRpc2FibGUtaWQzLGxpYmlkM3RhZyIKLVBBQ0tBR0VDT05GSUdbbGFtZV0gPSAiLS1lbmFibGUtbGFtZS1lbmNvZGVyLC0tZGlzYWJsZS1sYW1lLWVuY29kZXIsbGFtZSIKLVBBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWJjbGllbnQsLS1kaXNhYmxlLXNtYmNsaWVudCxzYW1iYSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzfGxpYnN5c3RlbWQtZGFlbW9ufGxpYnN5c3RlbWR8JyAke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL211c2ljCi0gICAgY2htb2QgNzc1ICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL211c2ljCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliL21wZC9wbGF5bGlzdHMKLSAgICBjaG93biAtUiBtcGQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQKLSAgICBjaG93biBtcGQ6bXBkICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL211c2ljCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfQotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vbXBkLmNvbmYuaW4gJHtEfS8ke3N5c2NvbmZkaXJ9L21wZC5jb25mCi0gICAgc2VkIC1pIFwKLSAgICAgICAgLWUgJ3N8JW11c2ljX2RpcmVjdG9yeSV8JHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL211c2ljfCcgXAotICAgICAgICAtZSAnc3wlcGxheWxpc3RfZGlyZWN0b3J5JXwke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQvcGxheWxpc3RzfCcgXAotICAgICAgICAtZSAnc3wlZGJfZmlsZSV8JHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL21wZC5kYnwnIFwKLSAgICAgICAgLWUgJ3N8JWxvZ19maWxlJXwke2xvY2Fsc3RhdGVkaXJ9L2xvZy9tcGQubG9nfCcgXAotICAgICAgICAtZSAnc3wlc3RhdGVfZmlsZSV8JHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL3N0YXRlfCcgXAotICAgICAgICAke0R9LyR7c3lzY29uZmRpcn0vbXBkLmNvbmYKLQotICAgIGlmIFsgLWUgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL21wZC5zZXJ2aWNlIF0gOyB0aGVuCi0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgICAnc3xeRXhlY1N0YXJ0PS4qfEV4ZWNTdGFydD0ke2JpbmRpcn0vbXBkIC0tbm8tZGFlbW9ufCcgXAotICAgICAgICAgICAgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL21wZC5zZXJ2aWNlCi0gICAgZmkKLX0KLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJtcGQuc29ja2V0IgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICIgXAotICAgIC0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgXAotICAgIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQgXAotICAgIC0tZ3JvdXBzIGF1ZGlvIFwKLSAgICAtLXVzZXItZ3JvdXAgbXBkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL211c2ljcGQvbXBkXzAuMjAuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbXVzaWNwZC9tcGRfMC4yMC4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzU0ZjM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL211c2ljcGQvbXBkXzAuMjAuMTguYmIKQEAgLTAsMCArMSwxMDAgQEAKK1NVTU1BUlkgPSAiTXVzaWMgUGxheWVyIERhZW1vbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0hPTUVQQUdFID0iaHR0cDovL3d3dy5tdXNpY3BkLm9yZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXNlcmFkZCBzeXN0ZW1kIHBrZ2NvbmZpZworCitERVBFTkRTICs9ICIgXAorICAgIGFsc2EtbGliIFwKKyAgICBsaWJzYW1wbGVyYXRlMCBcCisgICAgbGlic25kZmlsZTEgXAorICAgIGxpYnZvcmJpcyBcCisgICAgbGlib2dnIFwKKyAgICBmYWFkMiBcCisgICAgZmZtcGVnIFwKKyAgICBjdXJsIFwKKyAgICBzcWxpdGUgXAorICAgIGJ6aXAyIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgZCl9IFwKKyAgICB0Y3Atd3JhcHBlcnMgXAorICAgIG9wZW5hbC1zb2Z0IFwKKyAgICB5YWpsIFwKKyAgICBqYWNrIFwKKyAgICBmYWFkMiBcCisgICAgZmxhYyBcCisgICAgbGliYW8gXAorICAgIGZsdWlkc3ludGggXAorICAgIGxpYmNkaW8gXAorICAgIHdhdnBhY2sgXAorICAgIGxpYm9wdXMgXAorICAgIG1wZzEyMyBcCisgICAgbGlibW1zIFwKKyAgICBsaWJtb2RwbHVnIFwKKyAgICBib29zdCBcCisgICAgaWN1IFwKKyAgICBkYnVzIFwKKyAgICBleHBhdCBcCisgICAgemxpYiBcCisgICAgbGlidXBucCBcCisiCisKKyMgV2hpbGUgdGhpcyBpdGVtIGRvZXMgbm90IHJlcXVpcmUgaXQsIGl0IGRlcGVuZHMgb24gbXBnMTIzIHdoaWNoIGRvZXMKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly93d3cubXVzaWNwZC5vcmcvZG93bmxvYWQvJHtCUE59LzAuMjAvJHtCUH0udGFyLnh6IFwKKyAgICBmaWxlOi8vbXBkLmNvbmYuaW4gXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjhkYzg3YmE5NTQ3M2ZkNzM4ZjJhZmY5YmQ2OWNjMjEyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZhNTgyZGMyYWU5MGI5NGZmMzg1M2Y5ZmZkN2Q4MGIyYzJiNWZlMmUyYzM1Y2IxZGEwYjM2ZjNmM2RmYWQ0MzQiCisKK0VYVFJBX09FQ09ORiA9ICJlbmFibGVfYnppcDI9eWVzIgorRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJywgJy0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcicsIGQpfSIKKworUEFDS0FHRUNPTkZJR1thdWRpb2ZpbGVdID0gIi0tZW5hYmxlLWF1ZGlvZmlsZSwtLWRpc2FibGUtYXVkaW9maWxlLGF1ZGlvZmlsZSIKK1BBQ0tBR0VDT05GSUdbY2Rpb3BhcmFub2lhXSA9ICItLWVuYWJsZS1jZGlvLXBhcmFub2lhLC0tZGlzYWJsZS1jZGlvLXBhcmFub2lhLGxpYmNkaW8tcGFyYW5vaWEiCitQQUNLQUdFQ09ORklHW21hZF0gPSAiLS1lbmFibGUtbWFkLC0tZGlzYWJsZS1tYWQsbGlibWFkIgorUEFDS0FHRUNPTkZJR1tpZDN0YWddID0gIi0tZW5hYmxlLWlkMywtLWRpc2FibGUtaWQzLGxpYmlkM3RhZyIKK1BBQ0tBR0VDT05GSUdbbGFtZV0gPSAiLS1lbmFibGUtbGFtZS1lbmNvZGVyLC0tZGlzYWJsZS1sYW1lLWVuY29kZXIsbGFtZSIKK1BBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWJjbGllbnQsLS1kaXNhYmxlLXNtYmNsaWVudCxzYW1iYSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lICdzfGxpYnN5c3RlbWQtZGFlbW9ufGxpYnN5c3RlbWR8JyAke1N9L2NvbmZpZ3VyZS5hYworfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL211c2ljCisgICAgY2htb2QgNzc1ICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL211c2ljCisgICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliL21wZC9wbGF5bGlzdHMKKyAgICBjaG93biAtUiBtcGQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQKKyAgICBjaG93biBtcGQ6bXBkICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL211c2ljCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vbXBkLmNvbmYuaW4gJHtEfS8ke3N5c2NvbmZkaXJ9L21wZC5jb25mCisgICAgc2VkIC1pIFwKKyAgICAgICAgLWUgJ3N8JW11c2ljX2RpcmVjdG9yeSV8JHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL211c2ljfCcgXAorICAgICAgICAtZSAnc3wlcGxheWxpc3RfZGlyZWN0b3J5JXwke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQvcGxheWxpc3RzfCcgXAorICAgICAgICAtZSAnc3wlZGJfZmlsZSV8JHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL21wZC5kYnwnIFwKKyAgICAgICAgLWUgJ3N8JWxvZ19maWxlJXwke2xvY2Fsc3RhdGVkaXJ9L2xvZy9tcGQubG9nfCcgXAorICAgICAgICAtZSAnc3wlc3RhdGVfZmlsZSV8JHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL3N0YXRlfCcgXAorICAgICAgICAke0R9LyR7c3lzY29uZmRpcn0vbXBkLmNvbmYKKworICAgIGlmIFsgLWUgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL21wZC5zZXJ2aWNlIF0gOyB0aGVuCisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgICAnc3xeRXhlY1N0YXJ0PS4qfEV4ZWNTdGFydD0ke2JpbmRpcn0vbXBkIC0tbm8tZGFlbW9ufCcgXAorICAgICAgICAgICAgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL21wZC5zZXJ2aWNlCisgICAgZmkKK30KKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJtcGQuc29ja2V0IgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICIgXAorICAgIC0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgXAorICAgIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQgXAorICAgIC0tZ3JvdXBzIGF1ZGlvIFwKKyAgICAtLXVzZXItZ3JvdXAgbXBkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL29wZW5oMjY0L29wZW5oMjY0XzEuNy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL29wZW5oMjY0L29wZW5oMjY0XzEuNy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0YzQ2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvb3BlbmgyNjQvb3BlbmgyNjRfMS43LjAuYmIKQEAgLTAsMCArMSw0MiBAQAorREVTQ1JJUFRJT04gPSAiT3BlbkgyNjQgaXMgYSBjb2RlYyBsaWJyYXJ5IHdoaWNoIHN1cHBvcnRzIEguMjY0IGVuY29kaW5nIGFuZCBcCitkZWNvZGluZy4gSXQgaXMgc3VpdGFibGUgZm9yIHVzZSBpbiByZWFsIHRpbWUgYXBwbGljYXRpb25zIHN1Y2ggYXMgV2ViUlRDLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbmgyNjQub3JnLyIKK1NFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgorCitERVBFTkRTX3g4NiArPSAibmFzbS1uYXRpdmUiCitERVBFTkRTX3g4Ni02NCArPSAibmFzbS1uYXRpdmUiCisKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YmI2ZDM3NzFkYTZhMDdkMzNmZDUwZDRkOWFhNzNiY2YiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTUkNSRVYgPSAiYTE4MGM5ZDRkNmYxYTQ4MzBjYTllZWQ5ZDE1OWQ1NDk5NmJkNjNjYiIKK0JSQU5DSCA9ICJvcGVuaDI2NHYxLjciCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY2lzY28vb3BlbmgyNjQuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD0ke0JSQU5DSH07IgorCitDT01QQVRJQkxFX01BQ0hJTkVfYXJtdjdhID0gIiguKikiCitDT01QQVRJQkxFX01BQ0hJTkVfYWFyY2g2NCA9ICIoLiopIgorQ09NUEFUSUJMRV9NQUNISU5FX3g4NiA9ICIoLiopIgorQ09NUEFUSUJMRV9NQUNISU5FX3g4Ni02NCA9ICIoLiopIgorQ09NUEFUSUJMRV9NQUNISU5FX21pcHMgPSAiKC4qKSIKK0NPTVBBVElCTEVfTUFDSElORV9taXBzNjQgPSAiKC4qKSIKKworRVhUUkFfT0VNQUtFX2FybXY3YSA9ICJBUkNIPWFybSIKK0VYVFJBX09FTUFLRV9hYXJjaDY0ID0gIkFSQ0g9YXJtNjQiCitFWFRSQV9PRU1BS0VfeDg2ID0gIkFSQ0g9aTM4NiIKK0VYVFJBX09FTUFLRV94ODYtNjQgPSAiQVJDSD14ODZfNjQiCitFWFRSQV9PRU1BS0VfbWlwcyA9ICJBUkNIPW1pcHMiCitFWFRSQV9PRU1BS0VfbWlwczY0ID0gIkFSQ0g9bWlwczY0IgorCitkb19jb25maWd1cmUoKSB7CisgICAgOgorfQorCitkb19jb21waWxlKCkgeworICAgIG9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFBSRUZJWD0ke3ByZWZpeH0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9vcHVzZmlsZS9vcHVzZmlsZV8wLjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL29wdXNmaWxlL29wdXNmaWxlXzAuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg5ZGM4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9vcHVzZmlsZS9vcHVzZmlsZV8wLjEwLmJiCkBAIC0wLDAgKzEsMTQgQEAKK0RFU0NSSVBUSU9OID0gIkxpYnJhcnkgZm9yIG9wZW5pbmcsIHNlZWtpbmcsIGFuZCBkZWNvZGluZyBvcHVzIGF1ZGlvIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cub3B1cy1jb2RlYy5vcmcvIgorU0VDVElPTiA9ICJhdWRpbyIKKworREVQRU5EUyA9ICJsaWJvZ2cgb3BlbnNzbCBsaWJvcHVzIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZhYzIyYjk5MmRkZTZhODkxZjg5NDljM2UyZGE4NTc2IgorCitTUkNfVVJJID0gImh0dHBzOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL29wdXMvJHtQTn0tJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImFiM2Y3ZDE1ZDc2NmY1YjM2YjA5NTFlZTQzNWY5ZWJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ4ZTAzNTI2YmE4N2VmOWNmNWYxYzQ3YjVlYmUzYWExOTViZDg5YjkxMmE1NzA2MGMzNjE4NGE2Y2QxOTQxMmYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NjaHJvZWRpbmdlci9zY2hyb2VkaW5nZXIvY29uZmlndXJlLmFjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NjaHJvZWRpbmdlci9zY2hyb2VkaW5nZXIvY29uZmlndXJlLmFjLnBhdGNoCmluZGV4IDJlZDhkMjIuLjgzODQwMGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zY2hyb2VkaW5nZXIvc2Nocm9lZGluZ2VyL2NvbmZpZ3VyZS5hYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2Nocm9lZGluZ2VyL3NjaHJvZWRpbmdlci9jb25maWd1cmUuYWMucGF0Y2gKQEAgLTUsMTAgKzUsMTAgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCi1JbmRleDogc2Nocm9lZGluZ2VyLTEuMC45L2NvbmZpZ3VyZS5hYworSW5kZXg6IHNjaHJvZWRpbmdlci0xLjAuMTEvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2Nocm9lZGluZ2VyLTEuMC45Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgc2Nocm9lZGluZ2VyLTEuMC45L2NvbmZpZ3VyZS5hYworLS0tIHNjaHJvZWRpbmdlci0xLjAuMTEub3JpZy9jb25maWd1cmUuYWMKKysrKyBzY2hyb2VkaW5nZXItMS4wLjExL2NvbmZpZ3VyZS5hYwogQEAgLTU0LDcgKzU0LDcgQEAgaWYgdGVzdCAieCR7SEFWRV9PUkN9IiAhPSB4eWVzIDsgdGhlbgogICAgQUNfRVJST1IoW29yYy0wLjQgPj0gJE9SQ19WRVIgaXMgcmVxdWlyZWRdKQogIGZpCkBAIC0xNiw1ICsxNiw1IEBACiAtT1JDQz1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1vcmNjIG9yYy0wLjRgCiArT1JDQz0kU1RBR0lOR19ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1vcmNjIG9yYy0wLjRgCiAgQUNfU1VCU1QoT1JDQykKKyBBTV9DT05ESVRJT05BTChIQVZFX09SQ0MsIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiAhPSB4eWVzKQogIAotIEFDX0FSR19XSVRIKFt0aHJlYWRdLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NveC9zb3gvMDAwMS1VcGRhdGUtZXhwb3J0ZWQtc3ltYm9sLWxpc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc294L3NveC8wMDAxLVVwZGF0ZS1leHBvcnRlZC1zeW1ib2wtbGlzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGM2YjE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NveC9zb3gvMDAwMS1VcGRhdGUtZXhwb3J0ZWQtc3ltYm9sLWxpc3QucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBiMTgwOWQ4MjAzMWFhN2M1YmNhYWQ1OGJjYjRiNTllMDgyZTA0NDZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFucyBSdWxsZ2FyZCA8bWFuc0BtYW5zci5jb20+CitEYXRlOiBTdW4sIDUgTm92IDIwMTcgMTU6NDA6MTYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXBkYXRlIGV4cG9ydGVkIHN5bWJvbCBsaXN0CisKK2NvbW1pdCA1YzU4NDEzNTQ0ICgiRG9uJ3QgZXhwb3J0IChtb3N0KSBpbnRlcm5hbCBsaWJzb3ggc3ltYm9scyIpCiticmVha3MgZHluYW1pYyBmbGFjIGJ1aWxkcyBhcyBmbGFjLmMgcmVmZXJlbmNlcyBsc3guZXJyb3IsIHNvIGFkZCBpdAordG8gdGhlIGxpc3Qgb2YgZXhjZXB0aW9ucy4KKworfCAubGlicy9mbGFjLm86IEluIGZ1bmN0aW9uIGBkZWNvZGVyX3JlYWRfY2FsbGJhY2snOgorfCAvdXNyL3NyYy9kZWJ1Zy9zb3gvMTQuNC4yLXIwL3NveC0xNC40LjIvc3JjL2ZsYWMuYzo2MzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbHN4X2Vycm9yJworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2JvZ29taXBzLm9yZy9zb3guZ2l0ICgicHUiIGJyYW5jaCldCisKKy0tLQorIHNyYy9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggN2NjZWFhZmQuLmEzYTA0ZWQxIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC05NSw3ICs5NSw3IEBAIGxpYnNveF9sYV9MSUJBREQgKz0gQEdPTVBfTElCU0AKKyAKKyBsaWJzb3hfbGFfQ0ZMQUdTID0gQFdBUk5fQ0ZMQUdTQAorIGxpYnNveF9sYV9MREZMQUdTID0gQEFQUF9MREZMQUdTQCAtdmVyc2lvbi1pbmZvIEBTSExJQl9WRVJTSU9OQCBcCistICAtZXhwb3J0LXN5bWJvbHMtcmVnZXggJ14oc294Xy4qfGxzeF8oY2hlY2tfcmVhZF9wYXJhbXN8KGNsb3NlfG9wZW4pX2RsbGlicmFyeXwoZGVidWcoX21vcmV8X21vc3QpP3xmYWlsfHJlcG9ydHx3YXJuKV9pbXBsfGVvZnxmYWlsX2Vycm5vfGZpbGVsZW5ndGh8ZmluZF8oZW51bV8odGV4dHx2YWx1ZSl8ZmlsZV9leHRlbnNpb24pfGdldG9wdChfaW5pdCk/fGxwYzEwXyhjcmVhdGVfKGRlfGVuKWNvZGVyX3N0YXRlfChkZXxlbiljb2RlKXxyYXcocmVhZHx3cml0ZSl8cmVhZChfYl9idWZ8YnVmfGNoYXJzKXxyZWFsbG9jfHJld2luZHxzZWVraXxzaWdmaWdzM3A/fHN0cmNhc2VjbXB8dGVsbHx1bnJlYWRifHdyaXRlKGJ8X2JfYnVmfGJ1ZnxzKSkpJCQnCisrICAtZXhwb3J0LXN5bWJvbHMtcmVnZXggJ14oc294Xy4qfGxzeF8oKFtjbV18cmUpYWxsb2N8Y2hlY2tfcmVhZF9wYXJhbXN8KGNsb3NlfG9wZW4pX2RsbGlicmFyeXwoZGVidWcoX21vcmV8X21vc3QpP3xmYWlsfHJlcG9ydHx3YXJuKV9pbXBsfGVvZnxlcnJvcnxmYWlsX2Vycm5vfGZpbGVsZW5ndGh8ZmluZF8oZW51bV8odGV4dHx2YWx1ZSl8ZmlsZV9leHRlbnNpb24pfGZsdXNofGdldG9wdChfaW5pdCk/fGlkM19yZWFkX3RhZ3xscGMxMF8oY3JlYXRlXyhkZXxlbiljb2Rlcl9zdGF0ZXwoZGV8ZW4pY29kZSl8cmF3KHJlYWR8d3JpdGUpfHJlYWQoX2JfYnVmfGJ1ZnxjaGFycyl8cmV3aW5kfHNlZWtpfHNpZ2ZpZ3MzcD98c3RyY2FzZWNtcHxzdHJkdXB8dGVsbHx1bnJlYWRifHdyaXRlKGJ8X2JfYnVmfGJ1ZnxzKSkpJCQnCisgCisgaWYgSEFWRV9XSU4zMl9MVERMCisgICBsaWJzb3hfbGFfU09VUkNFUyArPSB3aW4zMi1sdGRsLmMgd2luMzItbHRkbC5oCistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc294L3NveC8wMDAxLXJlbW92ZS10aGUtZXJyb3ItbGluZS1hbmQtbGl2ZS13aXRob3V0LWZpbGUtdHlwZS1kZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc294L3NveC8wMDAxLXJlbW92ZS10aGUtZXJyb3ItbGluZS1hbmQtbGl2ZS13aXRob3V0LWZpbGUtdHlwZS1kZXQucGF0Y2gKaW5kZXggNjA1ODYzYS4uNGYwMmE2NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NveC9zb3gvMDAwMS1yZW1vdmUtdGhlLWVycm9yLWxpbmUtYW5kLWxpdmUtd2l0aG91dC1maWxlLXR5cGUtZGV0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zb3gvc294LzAwMDEtcmVtb3ZlLXRoZS1lcnJvci1saW5lLWFuZC1saXZlLXdpdGhvdXQtZmlsZS10eXBlLWRldC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYzJhZWQyOGUzZTE0MzI5YWQwYThjNDM3MWZkY2NlOTkzNDAxM2YyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDAzMTNiZTVmYjk0N2RmMzk5YTRkYjI0YTVmOTI0NDUxMGQyY2U4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDEyIEp1bCAyMDE3IDE2OjM2OjA2IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIHJlbW92ZSB0aGUgI2Vycm9yIGxpbmUgYW5kIGxpdmUgd2l0aG91dCBmaWxlLXR5cGUgZGV0ZWN0aW9uCkBAIC0xMiwxNyArMTIsMTcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Zvcm1hdHMuYyBiL3NyYy9mb3JtYXRzLmMKLWluZGV4IDdlMjMxY2EuLmIxM2YwZDUgMTAwNjQ0CitpbmRleCA3MjRhNGNkYS4uZjY4M2E5MjIgMTAwNjQ0CiAtLS0gYS9zcmMvZm9ybWF0cy5jCiArKysgYi9zcmMvZm9ybWF0cy5jCi1AQCAtNDE2LDcgKzQxNiw2IEBAIHN0YXRpYyB2b2lkIFVOVVNFRCByZXdpbmRfcGlwZShGSUxFICogZnApCitAQCAtNDIyLDcgKzQyMiw2IEBAIHN0YXRpYyB2b2lkIFVOVVNFRCByZXdpbmRfcGlwZShGSUxFICogZnApCiAgICAvKiBUbyBmaXggdGhpcyAjZXJyb3IsIGVpdGhlciBzaW1wbHkgcmVtb3ZlIHRoZSAjZXJyb3IgbGluZSBhbmQgbGl2ZSB3aXRob3V0CiAgICAgKiBmaWxlLXR5cGUgZGV0ZWN0aW9uIHdpdGggcGlwZXMsIG9yIGFkZCBzdXBwb3J0IGZvciB5b3VyIGNvbXBpbGVyIGluIHRoZQotICAgICogbGluZXMgYWJvdmUuICBUZXN0IHdpdGggY2F0IG1vbmtleS5hdSB8IC4vc294IC0taW5mbyAtICovCisgICAgKiBsaW5lcyBhYm92ZS4gIFRlc3Qgd2l0aCBjYXQgbW9ua2V5LndhdiB8IC4vc294IC0taW5mbyAtICovCiAtICAjZXJyb3IgRklYIE5FRURFRCBIRVJFCiAgICAjZGVmaW5lIE5PX1JFV0lORF9QSVBFCiAgICAodm9pZClmcDsKICAjZW5kaWYKIC0tIAotMi4xMy4yCisyLjE2LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NveC9zb3hfMTQuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NveC9zb3hfMTQuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWIxODU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zb3gvc294XzE0LjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLURFU0NSSVBUSU9OPSJTb1ggaXMgdGhlIFN3aXNzIEFybXkga25pZmUgb2Ygc291bmQgcHJvY2Vzc2luZyB0b29scy4gXAotSXQgY29udmVydHMgYXVkaW8gZmlsZXMgYW1vbmcgdmFyaW91cyBzdGFuZGFyZCBhdWRpbyBmaWxlIGZvcm1hdHMgXAotYW5kIGNhbiBhcHBseSBkaWZmZXJlbnQgZWZmZWN0cyBhbmQgZmlsdGVycyB0byB0aGUgYXVkaW8gZGF0YS4iCi1IT01FUEFHRSA9ICJodHRwOi8vc294LnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiYXVkaW8iCi0KLURFUEVORFMgPSAibGlicG5nIGZmbXBlZyBsaWJzbmRmaWxlMSBsaWJ2b3JiaXMiCi0KLSMgV2hpbGUgdGhpcyBpdGVtIGRvZXMgbm90IHJlcXVpcmUgaXQsIGl0IGRlcGVuZHMgb24gZmZtcGVnIHdoaWNoIGRvZXMKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotUFIgPSAicjIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIHB1bHNlYXVkaW8nLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIG1hZ2ljIFwKLSIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS13aXRoLXB1bHNlYXVkaW89ZHluLC0td2l0aC1wdWxzZWF1ZGlvPW5vLHB1bHNlYXVkaW8sIgotUEFDS0FHRUNPTkZJR1thbHNhXSA9ICItLXdpdGgtYWxzYT1keW4sLS13aXRoLWFsc2E9bm8sYWxzYS1saWIsIgotUEFDS0FHRUNPTkZJR1t3YXZwYWNrXSA9ICItLXdpdGgtd2F2cGFjaz1keW4sLS13aXRoLXdhdnBhY2s9bm8sd2F2cGFjaywiCi1QQUNLQUdFQ09ORklHW2ZsYWNdID0gIi0td2l0aC1mbGFjPWR5biwtLXdpdGgtZmxhYz1ubyxmbGFjLCIKLVBBQ0tBR0VDT05GSUdbYW1yd2JdID0gIi0td2l0aC1hbXJ3Yj1keW4sLS13aXRoLWFtcndiPW5vLG9wZW5jb3JlLWFtciwiCi1QQUNLQUdFQ09ORklHW2Ftcm5iXSA9ICItLXdpdGgtYW1ybmI9ZHluLC0td2l0aC1hbXJuYj1ubyxvcGVuY29yZS1hbXIsIgotUEFDS0FHRUNPTkZJR1ttYWdpY10gPSAiLS13aXRoLW1hZ2ljLC0td2l0aG91dC1tYWdpYyxmaWxlLCIKLVBBQ0tBR0VDT05GSUdbbWFkXSA9ICItLXdpdGgtbWFkLC0td2l0aG91dC1tYWQsbGlibWFkLCIKLVBBQ0tBR0VDT05GSUdbaWQzdGFnXSA9ICItLXdpdGgtaWQzdGFnLC0td2l0aG91dC1pZDN0YWcsbGliaWQzdGFnLCIKLVBBQ0tBR0VDT05GSUdbbGFtZV0gPSAiLS13aXRoLWxhbWUsLS13aXRob3V0LWxhbWUsbGFtZSwiCi1QQUNLQUdFQ09ORklHW2FvXSA9ICItLXdpdGgtYW8sLS13aXRob3V0LWFvLGxpYmFvLCIKLQotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5HUEw7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuTEdQTDttZDU9ZmJjMDkzOTAxODU3ZmNkMTE4ZjA2NWY5MDA5ODJjMjQiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3NveC9zb3gtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmVtb3ZlLXRoZS1lcnJvci1saW5lLWFuZC1saXZlLXdpdGhvdXQtZmlsZS10eXBlLWRldC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiMGMxNWNmZjdhNGJhMGVjMTdmZGM3NGU2YTFmOWNmMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZWUzNGIxNGRkMjY3ZGUzNzhlOGExMTdhYWU4MWVjNGNhZTMzMDc3MjM0MmU2YTU1YmJmNjUyMGEwYTg4YWEzIgotCi1pbmhlcml0IGF1dG90b29scwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NveC9zb3hfMTQuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NveC9zb3hfMTQuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZmRkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc294L3NveF8xNC40LjIuYmIKQEAgLTAsMCArMSw0MCBAQAorREVTQ1JJUFRJT049IlNvWCBpcyB0aGUgU3dpc3MgQXJteSBrbmlmZSBvZiBzb3VuZCBwcm9jZXNzaW5nIHRvb2xzLiBcCitJdCBjb252ZXJ0cyBhdWRpbyBmaWxlcyBhbW9uZyB2YXJpb3VzIHN0YW5kYXJkIGF1ZGlvIGZpbGUgZm9ybWF0cyBcCithbmQgY2FuIGFwcGx5IGRpZmZlcmVudCBlZmZlY3RzIGFuZCBmaWx0ZXJzIHRvIHRoZSBhdWRpbyBkYXRhLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3guc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJhdWRpbyIKKworREVQRU5EUyA9ICJsaWJwbmcgZmZtcGVnIGxpYnNuZGZpbGUxIgorCisjIFdoaWxlIHRoaXMgaXRlbSBkb2VzIG5vdCByZXF1aXJlIGl0LCBpdCBkZXBlbmRzIG9uIGZmbXBlZyB3aGljaCBkb2VzCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIHB1bHNlYXVkaW8nLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIG1hZ2ljIFwKKyIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS13aXRoLXB1bHNlYXVkaW89ZHluLC0td2l0aC1wdWxzZWF1ZGlvPW5vLHB1bHNlYXVkaW8sIgorUEFDS0FHRUNPTkZJR1thbHNhXSA9ICItLXdpdGgtYWxzYT1keW4sLS13aXRoLWFsc2E9bm8sYWxzYS1saWIsIgorUEFDS0FHRUNPTkZJR1t3YXZwYWNrXSA9ICItLXdpdGgtd2F2cGFjaz1keW4sLS13aXRoLXdhdnBhY2s9bm8sd2F2cGFjaywiCitQQUNLQUdFQ09ORklHW2ZsYWNdID0gIi0td2l0aC1mbGFjPWR5biwtLXdpdGgtZmxhYz1ubyxmbGFjLCIKK1BBQ0tBR0VDT05GSUdbYW1yd2JdID0gIi0td2l0aC1hbXJ3Yj1keW4sLS13aXRoLWFtcndiPW5vLG9wZW5jb3JlLWFtciwiCitQQUNLQUdFQ09ORklHW2Ftcm5iXSA9ICItLXdpdGgtYW1ybmI9ZHluLC0td2l0aC1hbXJuYj1ubyxvcGVuY29yZS1hbXIsIgorUEFDS0FHRUNPTkZJR1tvZ2d2b3JiaXNdID0gIi0td2l0aC1vZ2d2b3JiaXM9ZHluLC0td2l0aC1vZ2d2b3JiaXM9bm8sbGlidm9yYmlzIgorUEFDS0FHRUNPTkZJR1tvcHVzXSA9ICItLXdpdGgtb3B1cz1keW4sLS13aXRoLW9wdXM9bm8sb3B1c2ZpbGUiCitQQUNLQUdFQ09ORklHW21hZ2ljXSA9ICItLXdpdGgtbWFnaWMsLS13aXRob3V0LW1hZ2ljLGZpbGUsIgorUEFDS0FHRUNPTkZJR1ttYWRdID0gIi0td2l0aC1tYWQsLS13aXRob3V0LW1hZCxsaWJtYWQsIgorUEFDS0FHRUNPTkZJR1tpZDN0YWddID0gIi0td2l0aC1pZDN0YWcsLS13aXRob3V0LWlkM3RhZyxsaWJpZDN0YWcsIgorUEFDS0FHRUNPTkZJR1tsYW1lXSA9ICItLXdpdGgtbGFtZSwtLXdpdGhvdXQtbGFtZSxsYW1lLCIKK1BBQ0tBR0VDT05GSUdbYW9dID0gIi0td2l0aC1hbywtLXdpdGhvdXQtYW8sbGliYW8sIgorCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkdQTDttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vc294L3NveC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZW1vdmUtdGhlLWVycm9yLWxpbmUtYW5kLWxpdmUtd2l0aG91dC1maWxlLXR5cGUtZGV0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXBkYXRlLWV4cG9ydGVkLXN5bWJvbC1saXN0LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImQwNGZiYTJkOTI0NWU2NjFmMjQ1ZGUwNTc3ZjQ4YTMzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0NWY1OTg2NDNmZmJkOGUzNjNmZjI0ZDYxMTY2Y2NlYzQ4MzZmZWE2ZDM4ODg4ODFiOGRmNTNlM2JiNTVmNmMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3RpbnlhbHNhL3RpbnlhbHNhXzEuMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3RpbnlhbHNhL3RpbnlhbHNhXzEuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2Yjk1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdGlueWFsc2EvdGlueWFsc2FfMS4xLjEuYmIKQEAgLTAsMCArMSwyOCBAQAorREVTQ1JJUFRJT04gPSAiVGlueUFMU0EgaXMgYSBzbWFsbCBsaWJyYXJ5IHRvIGludGVyZmFjZSB3aXRoIEFMU0EgaW4gXAordGhlIExpbnV4IGtlcm5lbC4gSXQgaXMgYSBsaWdodHdlaWdodCBhbHRlcm5hdGl2ZSB0byBsaWJhc291bmQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3RpbnlhbHNhL3RpbnlhbHNhIgorU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTk9USUNFO21kNT1kYmRlZmU0MDBkODk0YjUxMGE5ZGUxNDgxMzE4MWQwYiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICJkZjExMDkxMDg2YjU2ZTVmYjcxODg3ZjJmYTMyMGUxZDJmZmVmZjU4IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3RpbnlhbHNhL3RpbnlhbHNhLmdpdDtwcm90b2NvbD1odHRwczsiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICA6Cit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZSBDQz0nJHtDQ30nIExEPScke0NDfScgQVI9JyR7QVJ9JworfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBcCisgICAgICAgIFBSRUZJWD0iJHtwcmVmaXh9IiBERVNURElSPSIke0R9IiBJTkNESVI9IiR7aW5jbHVkZWRpcn0vdGlueWFsc2EiIFwKKyAgICAgICAgTElCRElSPSIke2xpYmRpcn0iIEJJTkRJUj0iJHtiaW5kaXJ9IiBNQU5ESVI9IiR7bWFuZGlyfSIKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzIgorRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsYy5pbmMKaW5kZXggYWNiM2NjZC4uOGU4MmIzYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3ZsYy92bGMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS92bGMvdmxjLmluYwpAQCAtNTcsNyArNTcsNiBAQAogUEFDS0FHRUNPTkZJR1txdDRdID0gIi0tZW5hYmxlLXF0LC0tZGlzYWJsZS1xdCwgcXQ0LXgxMS1mcmVlIgogUEFDS0FHRUNPTkZJR1tmcmVlcmRwXSA9ICItLWVuYWJsZS1mcmVlcmRwLC0tZGlzYWJsZS1mcmVlcmRwLCBmcmVlcmRwIgogUEFDS0FHRUNPTkZJR1tkdmJwc2ldID0gIi0tZW5hYmxlLWR2YnBzaSwtLWRpc2FibGUtZHZicHNpLCBsaWJkdmJwc2kiCi1QQUNLQUdFQ09ORklHW2dub21lLXZmc10gPSAiLS1lbmFibGUtZ25vbWV2ZnMsLS1kaXNhYmxlLWdub21ldmZzLCBnbm9tZS12ZnMiCiBQQUNLQUdFQ09ORklHW3NhbWJhXSA9ICItLWVuYWJsZS1zbWJjbGllbnQsLS1kaXNhYmxlLXNtYmNsaWVudCwgc2FtYmEiCiBQQUNLQUdFQ09ORklHW3VwbnBdID0gIi0tZW5hYmxlLXVwbnAsLS1kaXNhYmxlLXVwbnAsbGlidXBucCIKIFBBQ0tBR0VDT05GSUdbZHZkbmF2XSA9ICItLWVuYWJsZS1kdmRuYXYsLS1kaXNhYmxlLWR2ZG5hdixsaWJkdmRuYXYgbGliZHZkY3NzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1zdXBwb3J0L2dzdC1pbnN0cnVtZW50cy9nc3QtaW5zdHJ1bWVudHNfMC4yLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLXN1cHBvcnQvZ3N0LWluc3RydW1lbnRzL2dzdC1pbnN0cnVtZW50c18wLjIuMy5iYgppbmRleCBiNmNkYzRmLi4wN2QwYzU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLXN1cHBvcnQvZ3N0LWluc3RydW1lbnRzL2dzdC1pbnN0cnVtZW50c18wLjIuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLXN1cHBvcnQvZ3N0LWluc3RydW1lbnRzL2dzdC1pbnN0cnVtZW50c18wLjIuMy5iYgpAQCAtNSwxOCArNSwxNiBAQAogTElDRU5TRSA9ICJMR1BMLTMuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9raXJ1c2h5ay9nc3QtaW5zdHJ1bWVudHMvYXJjaGl2ZS8ke1BWfS50YXIuZ3oiCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCIKIAotU1JDX1VSSVttZDVzdW1dID0gIjE0YTM5NGRlYzI1NjQyODQ4YjE3Zjk5OTlmMWI0OTk5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1NjU2NThhMzNmZjk1OTY5NDY1NDEzMDRmYmRkM2IzNjgzZGJiODIxNzFhMGU2Y2U1NmY0MmI2NGEwMWU1OGQiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gIjRjZTgwOTI2MzZlZTY1NzIxNDhiNWZhMDQ0MDgwNzM0Y2Y1YTZiOGQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20va2lydXNoeWsvZ3N0LWluc3RydW1lbnRzLmdpdDtwcm90b2NvbD1odHRwczsiCiAKLVMgPSAiJHtXT1JLRElSfS9nc3QtaW5zdHJ1bWVudHMtJHtQVn0iCi0KK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKmEiCiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyoiCiAKIElOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKIAotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAiCi0KIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLXN1cHBvcnQvbGlic3J0cC9saWJzcnRwXzEuNS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1zdXBwb3J0L2xpYnNydHAvbGlic3J0cF8xLjUuMi5iYgppbmRleCA4YWJhYTEyLi5lZThjNjhiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLXN1cHBvcnQvbGlic3J0cC9saWJzcnRwXzEuNS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtc3VwcG9ydC9saWJzcnRwL2xpYnNydHBfMS41LjIuYmIKQEAgLTUsMTEgKzUsMTEgQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTViYzE2YjlkMmUzMDU5NzRkZGU0N2U3MzM4ODM3MTQiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Npc2NvL2xpYnNydHAvYXJjaGl2ZS92JHtQVn0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9JHtCUH0udGFyLmd6IFwKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTUkNSRVYgPSAiZTgwNmE2NmJhZDM1ZjRiMjE1YjdhODI1YzI0ZWYwZWM0Y2MxOTU2OSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9jaXNjby9saWJzcnRwLmdpdDtwcm90b2NvbD1odHRwczsgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW5hbWUtY29uZmxpY3RpbmctdmFyaWFibGUtbWlwcy5wYXRjaCBcCiAgICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyMzA5YWE2MDI3OTkyODEwYTQyODViMDQyYzcxZTY0NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NmUxZWZlMzUzMzk3YzA3NTFmNmJkZDcwOTc5NDE0M2JkMWI3NjQ5NDQxMjg2MGYxNmZmMmI2ZDljMzA0ZWRhIgogCiBpbmhlcml0IGF1dG90b29scwogCkBAIC0xOCwzICsxOCw1IEBACiBybV91bnVzZWRfYmluZGlyKCkgewogICAgIHJtZGlyICR7RH0vJHtiaW5kaXJ9CiB9CisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9NQUlOVEFJTkVSUyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL01BSU5UQUlORVJTCmluZGV4IDc3MWM3M2MuLmJiYjJkMWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL01BSU5UQUlORVJTCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL01BSU5UQUlORVJTCkBAIC0yLDE2ICsyLDEzIEBACiAKIFBsZWFzZSBzdWJtaXQgYW55IHBhdGNoZXMgYWdhaW5zdCBtZXRhLW5ldHdvcmtpbmcgdG8gdGhlIE9wZW5FbWJlZGRlZAogZGV2ZWxvcG1lbnQgbWFpbGluZyBsaXN0IChvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZykgd2l0aAotJ1ttZXRhLW5ldHdvcmtpbmddW3JvY2tvXScgaW4gdGhlIHN1YmplY3QuCisnW21ldGEtbmV0d29ya2luZ10nIGluIHRoZSBzdWJqZWN0LgogCiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2Ugc29tZXRoaW5nIGxpa2U6CiAKICAgIGdpdCBzZW5kLWVtYWlsIC0xIC1NIFwKICAgICAgICAgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyBcCi0gICAgICAgIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1uZXR3b3JraW5nXVtyb2Nrb11bUEFUQ0gKLQotcm9ja28gQnJhbmNoIE1haW50YWluZXI6Ci1Bcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorICAgICAgICAtLXN1YmplY3QtcHJlZml4PW1ldGEtbmV0d29ya2luZ11bUEFUQ0gKIAogWW91IG1heSBhbHNvIGNvbnRhY3QgdGhlIG1haW50YWluZXJzIGRpcmVjdGx5LgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9jbGFzc2VzL3dhZi1zYW1iYS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY2xhc3Nlcy93YWYtc2FtYmEuYmJjbGFzcwppbmRleCBlNDkwMTc2Li4xNjMyYzNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9jbGFzc2VzL3dhZi1zYW1iYS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2NsYXNzZXMvd2FmLXNhbWJhLmJiY2xhc3MKQEAgLTEsNyArMSw3IEBACiAjIHdhZiBpcyBhIGJ1aWxkIHN5c3RlbSB3aGljaCBpcyB1c2VkIGJ5IHNhbWJhIHJlbGF0ZWQgcHJvamVjdC4KICMgT2J0YWluIGRldGFpbHMgZnJvbSBodHRwczovL3dpa2kuc2FtYmEub3JnL2luZGV4LnBocC9XYWYKLSMgCi1pbmhlcml0IHFlbXUgcHl0aG9ubmF0aXZlIHdhZgorIworaW5oZXJpdCBxZW11IHB5dGhvbm5hdGl2ZQogCiBERVBFTkRTICs9ICJxZW11LW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUgcHl0aG9uIgogCkBAIC0yMSw2ICsyMSwyOSBAQAogICAgICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCiAgICAgICAgICAgICAgICAgIgogCisjIGF2b2lkcyBidWlsZCBicmVha3Mgd2hlbiB1c2luZyBuby1zdGF0aWMtbGlicy5pbmMKK0RJU0FCTEVfU1RBVElDID0gIiIKKworZGVmIGdldF93YWZfcGFyYWxsZWxfbWFrZShkKToKKyAgICBwbSA9IGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJykKKyAgICBpZiBwbToKKyAgICAgICAgIyBsb29rIGZvciAnLWonIGFuZCB0aHJvdyBvdGhlciBvcHRpb25zIChlLmcuICctbCcpIGF3YXkKKyAgICAgICAgIyBiZWNhdXNlIHRoZXkgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBpbiBiamFtCisgICAgICAgIHBtID0gcG0uc3BsaXQoKQorICAgICAgICB3aGlsZSBwbToKKyAgICAgICAgICAgIG9wdCA9IHBtLnBvcCgwKQorICAgICAgICAgICAgaWYgb3B0ID09ICctaic6CisgICAgICAgICAgICAgICAgdiA9IHBtLnBvcCgwKQorICAgICAgICAgICAgZWxpZiBvcHQuc3RhcnRzd2l0aCgnLWonKToKKyAgICAgICAgICAgICAgICB2ID0gb3B0WzI6XS5zdHJpcCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHYgPSBtaW4oNjQsIGludCh2KSkKKyAgICAgICAgICAgIHJldHVybiAnLWonICsgc3RyKHYpCisKKyAgICByZXR1cm4gIiIKKwogIyBUaHJlZSBtZXRob2RzIGZvciB3YWYgY3Jvc3MgY29tcGlsZToKICMgMS4gYW5zd2VyczoKICMgICAgT25seSAtLWNyb3NzLWFuc3dlcnMgLSB0cnkgdGhlIGNyb3NzLWFuc3dlcnMgZmlsZSwgYW5kIGlmCkBAIC04Niw4ICsxMDksOSBAQAogICAgIGZpCiB9CiAKK2RvX2NvbXBpbGVbcHJvZ3Jlc3NdID0gIm91dG9mOl5cW1xzKihcZCspL1xzKihcZCspXF1ccysiCiBkb19jb21waWxlICgpIHsKLSAgICBweXRob24gLi9idWlsZHRvb2xzL2Jpbi93YWYgJHtAZ2V0X3dhZl9wYXJhbGxlbF9tYWtlKGQpfQorICAgIHB5dGhvbiAuL2J1aWxkdG9vbHMvYmluL3dhZiAke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsICctaiVkJywgbGltaXQ9NjQpfQogfQogCiBkb19pbnN0YWxsKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY29uZi9sYXllci5jb25mCmluZGV4IDJkZmRlNGIuLmU1OTRiN2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9jb25mL2xheWVyLmNvbmYKQEAgLTE3LDYgKzE3LDggQEAKIExBWUVSREVQRU5EU19uZXR3b3JraW5nLWxheWVyICs9ICJvcGVuZW1iZWRkZWQtbGF5ZXIiCiBMQVlFUkRFUEVORFNfbmV0d29ya2luZy1sYXllciArPSAibWV0YS1weXRob24iCiAKK0xBWUVSU0VSSUVTX0NPTVBBVF9uZXR3b3JraW5nLWxheWVyID0gInN1bW8iCisKIExJQ0VOU0VfUEFUSCArPSAiJHtMQVlFUkRJUn0vbGljZW5zZXMiCiAKIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9maWxlcy93YWYtY3Jvc3MtYW5zd2Vycy9jcm9zcy1hbnN3ZXJzLWFhcmNoNjRfYmUudHh0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvZmlsZXMvd2FmLWNyb3NzLWFuc3dlcnMvY3Jvc3MtYW5zd2Vycy1hYXJjaDY0X2JlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDIzZjZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvZmlsZXMvd2FmLWNyb3NzLWFuc3dlcnMvY3Jvc3MtYW5zd2Vycy1hYXJjaDY0X2JlLnR4dApAQCAtMCwwICsxLDM5IEBACitDaGVja2luZyB1bmFtZSBzeXNuYW1lIHR5cGU6ICJMaW51eCIKK0NoZWNraW5nIHVuYW1lIHZlcnNpb24gdHlwZTogIiMgV2VkIE1heSAyMCAxMDozNDozOSBVVEMgMjAxNSIKK0NoZWNraW5nIHNpbXBsZSBDIHByb2dyYW06ICJoZWxsbyB3b3JsZCIKK3JwYXRoIGxpYnJhcnkgc3VwcG9ydDogT0sKKy1XbCwtLXZlcnNpb24tc2NyaXB0IHN1cHBvcnQ6IE9LCitDaGVja2luZyBnZXRjb25mIExGU19DRkxBR1M6IE5PCitDaGVja2luZyBjb3JyZWN0IGJlaGF2aW9yIG9mIHN0cnRvbGw6IE5PCitDaGVja2luZyBmb3Igd29ya2luZyBzdHJwdGltZTogT0sKK0NoZWNraW5nIGZvciBDOTkgdnNucHJpbnRmOiAiMSIKK0NoZWNraW5nIGZvciBIQVZFX1NIQVJFRF9NTUFQOiBPSworQ2hlY2tpbmcgZm9yIEhBVkVfTVJFTUFQOiBPSworQ2hlY2tpbmcgZm9yIEhBVkVfU0VDVVJFX01LU1RFTVA6IE9LCitDaGVja2luZyBmb3IgSEFWRV9JRkFDRV9HRVRJRkFERFJTOiBOTworQ2hlY2tpbmcgZm9yIEhBVkVfSUZBQ0VfSUZDT05GOiBOTworQ2hlY2tpbmcgZm9yIEhBVkVfSUZBQ0VfSUZSRVE6IE5PCitDaGVja2luZyBmb3IgbGFyZ2UgZmlsZSBzdXBwb3J0IHdpdGhvdXQgYWRkaXRpb25hbCBmbGFnczogT0sKK0NoZWNraW5nIGZvciBIQVZFX0lOQ09IRVJFTlRfTU1BUDogTk8KK0NoZWNraW5nIHZhbHVlIG9mIE5TSUc6ICI2NSIKK0NoZWNraW5nIHZhbHVlIG9mIF9OU0lHOiAiNjUiCitDaGVja2luZyB2YWx1ZSBvZiBTSUdSVE1BWDogIjY0IgorQ2hlY2tpbmcgdmFsdWUgb2YgU0lHUlRNSU46ICIzNCIKK0NoZWNraW5nIHdoZXRoZXIgdGhlIFdSRklMRSAta2V5dGFiIGlzIHN1cHBvcnRlZDogT0sKK0NoZWNraW5nIGZvciBrZXJuZWwgY2hhbmdlIG5vdGlmeSBzdXBwb3J0OiBPSworQ2hlY2tpbmcgZm9yIExpbnV4IGtlcm5lbCBvcGxvY2tzOiBPSworQ2hlY2tpbmcgZm9yIGtlcm5lbCBzaGFyZSBtb2RlczogT0sKK0NoZWNraW5nIHdoZXRoZXIgUE9TSVggY2FwYWJpbGl0aWVzIGFyZSBhdmFpbGFibGU6IE9LCitDaGVja2luZyBpZiBjYW4gd2UgY29udmVydCBmcm9tIENQODUwIHRvIFVDUy0yTEU6IE9LCitDaGVja2luZyBpZiBjYW4gd2UgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy0yTEU6IE9LCit2ZnNfZmlsZWlkIGNoZWNraW5nIGZvciBzdGF0ZnMoKSBhbmQgc3RydWN0IHN0YXRmcy5mX2ZzaWQ6IE9LCitDaGVja2luZyB3aGV0aGVyIHdlIGNhbiB1c2UgTGludXggdGhyZWFkLXNwZWNpZmljIGNyZWRlbnRpYWxzOiBPSworQ2hlY2tpbmcgd2hldGhlciBmY250bCBsb2NraW5nIGlzIGF2YWlsYWJsZTogT0sKK0NoZWNraW5nIGZvciB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgJ3RpbWVfdCcgdHlwZTogT0sKK0NoZWNraW5nIHdoZXRoZXIgdGhlIHJlYWxwYXRoIGZ1bmN0aW9uIGFsbG93cyBhIE5VTEwgYXJndW1lbnQ6IE9LCitDaGVja2luZyBmb3IgZnRydW5jYXRlIGV4dGVuZDogT0sKK2dldGN3ZCB0YWtlcyBhIE5VTEwgYXJndW1lbnQ6IE9LCitDaGVja2luZyBmb3Igc21hbGwgb2ZmX3Q6IE5PCitDaGVja2luZyB3aGV0aGVyIGJsa2NudF90IGlzIDMyIGJpdDogTk8KK0NoZWNraW5nIHdoZXRoZXIgYmxrY250X3QgaXMgNjQgYml0OiBPSworQ2hlY2tpbmcgd2hldGhlciBmY250bCBsb2NrIHN1cHBvcnRzIG9wZW4gZmlsZSBkZXNjcmlwdGlvbiBsb2NrczogT0sKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2ZpbGVzL3dhZi1jcm9zcy1hbnN3ZXJzL2Nyb3NzLWFuc3dlcnMtcmlzY3Y2NC50eHQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9maWxlcy93YWYtY3Jvc3MtYW5zd2Vycy9jcm9zcy1hbnN3ZXJzLXJpc2N2NjQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMjNmNmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9maWxlcy93YWYtY3Jvc3MtYW5zd2Vycy9jcm9zcy1hbnN3ZXJzLXJpc2N2NjQudHh0CkBAIC0wLDAgKzEsMzkgQEAKK0NoZWNraW5nIHVuYW1lIHN5c25hbWUgdHlwZTogIkxpbnV4IgorQ2hlY2tpbmcgdW5hbWUgdmVyc2lvbiB0eXBlOiAiIyBXZWQgTWF5IDIwIDEwOjM0OjM5IFVUQyAyMDE1IgorQ2hlY2tpbmcgc2ltcGxlIEMgcHJvZ3JhbTogImhlbGxvIHdvcmxkIgorcnBhdGggbGlicmFyeSBzdXBwb3J0OiBPSworLVdsLC0tdmVyc2lvbi1zY3JpcHQgc3VwcG9ydDogT0sKK0NoZWNraW5nIGdldGNvbmYgTEZTX0NGTEFHUzogTk8KK0NoZWNraW5nIGNvcnJlY3QgYmVoYXZpb3Igb2Ygc3RydG9sbDogTk8KK0NoZWNraW5nIGZvciB3b3JraW5nIHN0cnB0aW1lOiBPSworQ2hlY2tpbmcgZm9yIEM5OSB2c25wcmludGY6ICIxIgorQ2hlY2tpbmcgZm9yIEhBVkVfU0hBUkVEX01NQVA6IE9LCitDaGVja2luZyBmb3IgSEFWRV9NUkVNQVA6IE9LCitDaGVja2luZyBmb3IgSEFWRV9TRUNVUkVfTUtTVEVNUDogT0sKK0NoZWNraW5nIGZvciBIQVZFX0lGQUNFX0dFVElGQUREUlM6IE5PCitDaGVja2luZyBmb3IgSEFWRV9JRkFDRV9JRkNPTkY6IE5PCitDaGVja2luZyBmb3IgSEFWRV9JRkFDRV9JRlJFUTogTk8KK0NoZWNraW5nIGZvciBsYXJnZSBmaWxlIHN1cHBvcnQgd2l0aG91dCBhZGRpdGlvbmFsIGZsYWdzOiBPSworQ2hlY2tpbmcgZm9yIEhBVkVfSU5DT0hFUkVOVF9NTUFQOiBOTworQ2hlY2tpbmcgdmFsdWUgb2YgTlNJRzogIjY1IgorQ2hlY2tpbmcgdmFsdWUgb2YgX05TSUc6ICI2NSIKK0NoZWNraW5nIHZhbHVlIG9mIFNJR1JUTUFYOiAiNjQiCitDaGVja2luZyB2YWx1ZSBvZiBTSUdSVE1JTjogIjM0IgorQ2hlY2tpbmcgd2hldGhlciB0aGUgV1JGSUxFIC1rZXl0YWIgaXMgc3VwcG9ydGVkOiBPSworQ2hlY2tpbmcgZm9yIGtlcm5lbCBjaGFuZ2Ugbm90aWZ5IHN1cHBvcnQ6IE9LCitDaGVja2luZyBmb3IgTGludXgga2VybmVsIG9wbG9ja3M6IE9LCitDaGVja2luZyBmb3Iga2VybmVsIHNoYXJlIG1vZGVzOiBPSworQ2hlY2tpbmcgd2hldGhlciBQT1NJWCBjYXBhYmlsaXRpZXMgYXJlIGF2YWlsYWJsZTogT0sKK0NoZWNraW5nIGlmIGNhbiB3ZSBjb252ZXJ0IGZyb20gQ1A4NTAgdG8gVUNTLTJMRTogT0sKK0NoZWNraW5nIGlmIGNhbiB3ZSBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTJMRTogT0sKK3Zmc19maWxlaWQgY2hlY2tpbmcgZm9yIHN0YXRmcygpIGFuZCBzdHJ1Y3Qgc3RhdGZzLmZfZnNpZDogT0sKK0NoZWNraW5nIHdoZXRoZXIgd2UgY2FuIHVzZSBMaW51eCB0aHJlYWQtc3BlY2lmaWMgY3JlZGVudGlhbHM6IE9LCitDaGVja2luZyB3aGV0aGVyIGZjbnRsIGxvY2tpbmcgaXMgYXZhaWxhYmxlOiBPSworQ2hlY2tpbmcgZm9yIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSAndGltZV90JyB0eXBlOiBPSworQ2hlY2tpbmcgd2hldGhlciB0aGUgcmVhbHBhdGggZnVuY3Rpb24gYWxsb3dzIGEgTlVMTCBhcmd1bWVudDogT0sKK0NoZWNraW5nIGZvciBmdHJ1bmNhdGUgZXh0ZW5kOiBPSworZ2V0Y3dkIHRha2VzIGEgTlVMTCBhcmd1bWVudDogT0sKK0NoZWNraW5nIGZvciBzbWFsbCBvZmZfdDogTk8KK0NoZWNraW5nIHdoZXRoZXIgYmxrY250X3QgaXMgMzIgYml0OiBOTworQ2hlY2tpbmcgd2hldGhlciBibGtjbnRfdCBpcyA2NCBiaXQ6IE9LCitDaGVja2luZyB3aGV0aGVyIGZjbnRsIGxvY2sgc3VwcG9ydHMgb3BlbiBmaWxlIGRlc2NyaXB0aW9uIGxvY2tzOiBPSwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY3JkYS9jcmRhL2ZpeC1pc3N1ZXMtd2hlbi1VU0VfT1BFTlNTTC0xLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY3JkYS9jcmRhL2ZpeC1pc3N1ZXMtd2hlbi1VU0VfT1BFTlNTTC0xLnBhdGNoCmluZGV4IDkzYzgzNmMuLjFiYjVjNjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NyZGEvY3JkYS9maXgtaXNzdWVzLXdoZW4tVVNFX09QRU5TU0wtMS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jcmRhL2NyZGEvZml4LWlzc3Vlcy13aGVuLVVTRV9PUEVOU1NMLTEucGF0Y2gKQEAgLTE3LDcgKzE3LDcgQEAKICAgIHN0YXRpYyBzdHJ1Y3QgcHVia2V5IGtleXNbXSA9IHsKIAogU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotVXBzdGVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+CiAtLS0KICB1dGlscy9rZXkycHViLnB5IHwgNSArKystLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY3JkYS9jcmRhL2ZpeC1saW5raW5nLW9mLWxpYnJhcmllcy11c2VkLWJ5LXJlZ2xpYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NyZGEvY3JkYS9maXgtbGlua2luZy1vZi1saWJyYXJpZXMtdXNlZC1ieS1yZWdsaWIucGF0Y2gKaW5kZXggYWNlYjU2ZC4uODEyZTk4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY3JkYS9jcmRhL2ZpeC1saW5raW5nLW9mLWxpYnJhcmllcy11c2VkLWJ5LXJlZ2xpYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jcmRhL2NyZGEvZml4LWxpbmtpbmctb2YtbGlicmFyaWVzLXVzZWQtYnktcmVnbGliLnBhdGNoCkBAIC0xLDYgKzEsNyBAQAorRnJvbSA4OTBmNWJmMjY1NGI2OTVhODY2MjYyZDcyYmZhOTc1MGFmOTIxYTNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQmVuIEh1dGNoaW5ncyA8YmVuQGRlY2FkZW50Lm9yZy51az4KIERhdGU6IFNhdCwgMjMgQXVnIDIwMTQgMTI6MjY6MzcgLTA3MDAKLVN1YmplY3Q6IEZpeCBsaW5raW5nIG9mIGxpYnJhcmllcyB1c2VkIGJ5IGxpYnJlZworU3ViamVjdDogW1BBVENIXSBGaXggbGlua2luZyBvZiBsaWJyYXJpZXMgdXNlZCBieSBsaWJyZWcKIAogVGhlIG1hdGggYW5kIGNyeXB0byBsaWJyYXJpZXMgYXJlIGNhbGxlZCBieSBhbmQgbmVlZCB0byBiZSBsaW5rZWQgdG8KIGxpYnJlZy5zbywgbm90IHRvIHRoZSBleGVjdXRhYmxlcy4KQEAgLTksMTAgKzEwLDE1IEBACiAKIFNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbkBkZWNhZGVudC5vcmcudWs+CiBTaWduZWQtb2ZmLWJ5OiBKb2UgTWFjRG9uYWxkIDxqb2VfbWFjZG9uYWxkQG1lbnRvci5jb20+CistLS0KKyBNYWtlZmlsZSB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggYTNlYWQzMC4uZGEyZGNjMyAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQotQEAgLTMwLDcgKzMwLDcgQEAgQ0ZMQUdTICs9IC1zdGQ9Z251OTkgLVdhbGwgLVdlcnJvciAtcGVkYQorQEAgLTMwLDcgKzMwLDcgQEAgQ0ZMQUdTICs9IC1zdGQ9Z251OTkgLVdhbGwgLVdlcnJvciAtcGVkYW50aWMKICBDRkxBR1MgKz0gLVdhbGwgLWcKICBMRExJQlJFRyArPSAtbHJlZwogIExETElCUyArPSAkKExETElCUkVHKQpAQCAtMjEsMTYgKzI3LDE0IEBACiAgTElCUkVHICs9IGxpYnJlZy5zbwogIExERkxBR1MgKz0gLUwgLi8KICAKLUBAIC00MCw3ICs0MCw3IEBAIGFsbF9ub3ZlcmlmeTogJChMSUJSRUcpIGNyZGEgaW50ZXJzZWN0IHIKK0BAIC00MCwxMyArNDAsMTMgQEAgYWxsX25vdmVyaWZ5OiAkKExJQlJFRykgY3JkYSBpbnRlcnNlY3QgcmVnZGJkdW1wIGRiMnJkIG9wdGltaXplCiAgCiAgaWZlcSAoJChVU0VfT1BFTlNTTCksMSkKICBDRkxBR1MgKz0gLURVU0VfT1BFTlNTTCAtRFBVQktFWV9ESVI9XCIkKFJVTlRJTUVfUFVCS0VZX0RJUilcIiBgcGtnLWNvbmZpZyAtLWNmbGFncyBvcGVuc3NsYAogLUxETElCUyArPSBgcGtnLWNvbmZpZyAtLWxpYnMgb3BlbnNzbGAKICtMSUJSRUdMRExJQlMgKz0gYHBrZy1jb25maWcgLS1saWJzIG9wZW5zc2xgCiAgCi0gaWZlcSAoJChSVU5USU1FX1BVQktFWV9PTkxZKSwxKQotIENGTEFHUyArPSAtRFJVTlRJTUVfUFVCS0VZX09OTFkKLUBAIC01MSw3ICs1MSw3IEBAIGVuZGlmCisgJChMSUJSRUcpOiBrZXlzLXNzbC5jCiAgCiAgZWxzZQogIENGTEFHUyArPSAtRFVTRV9HQ1JZUFQKQEAgLTM5LDcgKzQzLDcgQEAKICAKICAkKExJQlJFRyk6IGtleXMtZ2NyeXB0LmMKICAKLUBAIC0xMjEsNyArMTIxLDcgQEAga2V5cy0lLmM6IHV0aWxzL2tleTJwdWIucHkgJCh3aWxkY2FyZCAkKAorQEAgLTExNiw3ICsxMTYsNyBAQCBrZXlzLSUuYzogdXRpbHMva2V5MnB1Yi5weSAkKHdpbGRjYXJkICQoUFVCS0VZX0RJUikvKi5wZW0pCiAgCiAgJChMSUJSRUcpOiByZWdkYi5oIHJlZ2xpYi5oIHJlZ2xpYi5jCiAgCSQoTlEpICcgIENDICAnICRACkBAIC00OCwzICs1Miw2IEBACiAgCiAgaW5zdGFsbC1saWJyZWctaGVhZGVyczoKICAJJChOUSkgJyAgSU5TVEFMTCAgbGlicmVnLWhlYWRlcnMnCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3BjZC9kaGNwY2RfNi4xMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcGNkL2RoY3BjZF82LjExLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiM2I1YzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcGNkL2RoY3BjZF82LjExLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLVNVTU1BUlkgPSAiZGhjcGNkIC0gYSBESENQIGNsaWVudCIKLURFU0NSSVBUSU9OID0gImRoY3BjZCBydW5zIG9uIHlvdXIgbWFjaGluZSBhbmQgc2lsZW50bHkgY29uZmlndXJlcyB5b3VyIGNvbXB1dGVyIHRvIHdvcmsgb24gdGhlIGF0dGFjaGVkIG5ldHdvcmtzIHdpdGhvdXQgdHJvdWJsZSBhbmQgbW9zdGx5IHdpdGhvdXQgY29uZmlndXJhdGlvbi4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9yb3kubWFycGxlcy5uYW1lL3Byb2plY3RzL2RoY3BjZC8iCi0KLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGhjcGNkLmM7ZW5kbGluZT0yNjttZDU9NzdjNDBkNjcxYWZmODA0Y2E5MWVhOTk1NTZkYThlOWIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3JveS5tYXJwbGVzLm5hbWUvZG93bmxvYWRzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDRmMmYzZWQ0OTY0MTk3ZGVlNzc2NzIxOWMzM2E5ZGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWFiZDEyYzRkZjI5NDdkNjA4ZjYwYTM1MjI3ZjliZjhhZThhYjlkZTA2Y2U5NzVjZGFiMTE0NGQ4ZjIyOWIwNiIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVBBQ0tBR0VDT05GSUcgPz0gInVkZXYgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLXdpdGgtdWRldiwtLXdpdGhvdXQtdWRldix1ZGV2LHVkZXYiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1pcHY0IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9kaGNwY2QvZGV2Ly5kZWJ1ZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3BjZC9kaGNwY2RfNi4xMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcGNkL2RoY3BjZF82LjExLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg1YzZjMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3BjZC9kaGNwY2RfNi4xMS41LmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorU1VNTUFSWSA9ICJkaGNwY2QgLSBhIERIQ1AgY2xpZW50IgorREVTQ1JJUFRJT04gPSAiZGhjcGNkIHJ1bnMgb24geW91ciBtYWNoaW5lIGFuZCBzaWxlbnRseSBjb25maWd1cmVzIHlvdXIgY29tcHV0ZXIgdG8gd29yayBvbiB0aGUgYXR0YWNoZWQgbmV0d29ya3Mgd2l0aG91dCB0cm91YmxlIGFuZCBtb3N0bHkgd2l0aG91dCBjb25maWd1cmF0aW9uLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3JveS5tYXJwbGVzLm5hbWUvcHJvamVjdHMvZGhjcGNkLyIKKworTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kaGNwY2QuYztlbmRsaW5lPTI2O21kNT03N2M0MGQ2NzFhZmY4MDRjYTkxZWE5OTU1NmRhOGU5YiIKKworU1JDX1VSSSA9ICJodHRwOi8vcm95Lm1hcnBsZXMubmFtZS9kb3dubG9hZHMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNDY1NjI0YjYyYzExNTRmMGU4OWRjNjljNDJjODQ5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2Zjk2NzRkYzdlMjdlOTM2Y2M3ODcxNzU0MDRhNjE3MTYxODY3NWVjZmI2OTAzYWI5ODg3YjFiNjZhODdkNjllIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworUEFDS0FHRUNPTkZJRyA/PSAidWRldiAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LC0td2l0aG91dC11ZGV2LHVkZXYsdWRldiIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWlwdjQiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2RoY3BjZC9kZXYvLmRlYnVnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvaW5ldHV0aWxzL2luZXR1dGlsc18xLjkuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2luZXR1dGlscy9pbmV0dXRpbHNfMS45LjQuYmIKaW5kZXggNDY1NWJjNS4uMTkwY2Q1ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvaW5ldHV0aWxzL2luZXR1dGlsc18xLjkuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pbmV0dXRpbHMvaW5ldHV0aWxzXzEuOS40LmJiCkBAIC0xNjksNyArMTY5LDEwIEBACiBGSUxFU18ke1BOfS1pZmNvbmZpZyA9ICIke2Jhc2Vfc2JpbmRpcn0vaWZjb25maWcuJHtCUE59IgogRklMRVNfJHtQTn0tdHJhY2Vyb3V0ZSA9ICIke2JpbmRpcn0vdHJhY2Vyb3V0ZS4ke0JQTn0iCiBGSUxFU18ke1BOfS1sb2dnZXIgPSAiJHtiaW5kaXJ9L2xvZ2dlci4ke0JQTn0iCisKIEZJTEVTXyR7UE59LXN5c2xvZ2QgPSAiJHtiYXNlX3NiaW5kaXJ9L3N5c2xvZ2QuJHtCUE59IgorUkNPTkZMSUNUU18ke1BOfS1zeXNsb2dkID0gInJzeXNsb2cgYnVzeWJveC1zeXNsb2cgc3lza2xvZ2Qgc3lzbG9nLW5nIgorCiBGSUxFU18ke1BOfS1mdHAgPSAiJHtiaW5kaXJ9L2Z0cC4ke0JQTn0iCiAKIEZJTEVTXyR7UE59LXRmdHAgPSAiJHtiaW5kaXJ9L3RmdHAuJHtCUE59IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWJlZHRscy9tYmVkdGxzXzEuMy4xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21iZWR0bHMvbWJlZHRsc18xLjMuMTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZmVjNjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWJlZHRscy9tYmVkdGxzXzEuMy4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgY3J5cHRvIGFuZCBTU0wvVExTIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJtYmVkdGxzIGlzIGEgbGVhbiBvcGVuIHNvdXJjZSBjcnlwdG8gbGlicmFyeSAgICAgICAgICBcCi1mb3IgcHJvdmlkaW5nIFNTTCBhbmQgVExTIHN1cHBvcnQgaW4geW91ciBwcm9ncmFtcy4gSXQgb2ZmZXJzICAgICAgICBcCi1hbiBpbnR1aXRpdmUgQVBJIGFuZCBkb2N1bWVudGVkIGhlYWRlciBmaWxlcywgc28geW91IGNhbiBhY3R1YWxseSAgICBcCi11bmRlcnN0YW5kIHdoYXQgdGhlIGNvZGUgZG9lcy4gSXQgZmVhdHVyZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLSBTeW1tZXRyaWMgYWxnb3JpdGhtcywgbGlrZSBBRVMsIEJsb3dmaXNoLCBUcmlwbGUtREVTLCBERVMsIEFSQzQsICBcCi0gICBDYW1lbGxpYSBhbmQgWFRFQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLSBIYXNoIGFsZ29yaXRobXMsIGxpa2UgU0hBLTEsIFNIQS0yLCBSSVBFTUQtMTYwIGFuZCBNRDUgICAgICAgICAgICBcCi0gLSBFbnRyb3B5IHBvb2wgYW5kIHJhbmRvbSBnZW5lcmF0b3JzLCBsaWtlIENUUi1EUkJHIGFuZCBITUFDLURSQkcgICBcCi0gLSBQdWJsaWMga2V5IGFsZ29yaXRobXMsIGxpa2UgUlNBLCBFbGxpcHRpYyBDdXJ2ZXMsIERpZmZpZS1IZWxsbWFuLCBcCi0gICBFQ0RTQSBhbmQgRUNESCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLSBTU0wgdjMgYW5kIFRMUyAxLjAsIDEuMSBhbmQgMS4yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLSBBYnN0cmFjdGlvbiBsYXllcnMgZm9yIGNpcGhlcnMsIGhhc2hlcywgcHVibGljIGtleSBvcGVyYXRpb25zLCAgICBcCi0gICBwbGF0Zm9ybSBhYnN0cmFjdGlvbiBhbmQgdGhyZWFkaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vcG9sYXJzc2wub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vcG9sYXJzc2wvcG9sYXJzc2wvaXNzdWVzIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNFQ1RJT04gPSAibGliZGV2ZWwiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly90bHMubWJlZC5vcmcvZG93bmxvYWQvbWJlZHRscy0ke1BWfS1ncGwudGd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTZlZDkyZmMzNzdlZjYwZjdjMjRkNDJiOTAwZTBkYWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjViZWI0M2U4NTAyODM5MTVlM2UwZjhkMzc0OTVlYWRlM2JmYjViZWVkZmI2MWU3YjhkYTcwZDRjNjhlZGI4MiIKLQotREVQRU5EUyA9ICJvcGVuc3NsIgotUkRFUEVORFNfJHtQTn0gKz0gImxpYmNyeXB0byIKLVBST1ZJREVTICs9ICJwb2xhcnNzbCIKLVJQUk9WSURFU18ke1BOfSA9ICJwb2xhcnNzbCIKLUVYVFJBX09FQ01BS0UgPSAiLURVU0VfU0hBUkVEX1BPTEFSU1NMX0xJQlJBUlk9b24gLURMSUJfSU5TVEFMTF9ESVI9JHtiYXNlbGlifSIKLQotaW5oZXJpdCBjbWFrZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWJlZHRscy9tYmVkdGxzXzIuOC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWJlZHRscy9tYmVkdGxzXzIuOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNmNjZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tYmVkdGxzL21iZWR0bHNfMi44LjAuYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJMaWdodHdlaWdodCBjcnlwdG8gYW5kIFNTTC9UTFMgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIm1iZWR0bHMgaXMgYSBsZWFuIG9wZW4gc291cmNlIGNyeXB0byBsaWJyYXJ5ICAgICAgICAgIFwKK2ZvciBwcm92aWRpbmcgU1NMIGFuZCBUTFMgc3VwcG9ydCBpbiB5b3VyIHByb2dyYW1zLiBJdCBvZmZlcnMgICAgICAgIFwKK2FuIGludHVpdGl2ZSBBUEkgYW5kIGRvY3VtZW50ZWQgaGVhZGVyIGZpbGVzLCBzbyB5b3UgY2FuIGFjdHVhbGx5ICAgIFwKK3VuZGVyc3RhbmQgd2hhdCB0aGUgY29kZSBkb2VzLiBJdCBmZWF0dXJlczogICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAtIFN5bW1ldHJpYyBhbGdvcml0aG1zLCBsaWtlIEFFUywgQmxvd2Zpc2gsIFRyaXBsZS1ERVMsIERFUywgQVJDNCwgIFwKKyAgIENhbWVsbGlhIGFuZCBYVEVBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAtIEhhc2ggYWxnb3JpdGhtcywgbGlrZSBTSEEtMSwgU0hBLTIsIFJJUEVNRC0xNjAgYW5kIE1ENSAgICAgICAgICAgIFwKKyAtIEVudHJvcHkgcG9vbCBhbmQgcmFuZG9tIGdlbmVyYXRvcnMsIGxpa2UgQ1RSLURSQkcgYW5kIEhNQUMtRFJCRyAgIFwKKyAtIFB1YmxpYyBrZXkgYWxnb3JpdGhtcywgbGlrZSBSU0EsIEVsbGlwdGljIEN1cnZlcywgRGlmZmllLUhlbGxtYW4sIFwKKyAgIEVDRFNBIGFuZCBFQ0RIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAtIFNTTCB2MyBhbmQgVExTIDEuMCwgMS4xIGFuZCAxLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAtIEFic3RyYWN0aW9uIGxheWVycyBmb3IgY2lwaGVycywgaGFzaGVzLCBwdWJsaWMga2V5IG9wZXJhdGlvbnMsICAgIFwKKyAgIHBsYXRmb3JtIGFic3RyYWN0aW9uIGFuZCB0aHJlYWRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly90bHMubWJlZC5vcmcvIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zMDJkNTBhNjM2OWY1ZjIyZWZkYjY3NGRiOTA4MTY3YSIKKworU0VDVElPTiA9ICJsaWJkZXZlbCIKKworU1JDX1VSSSA9ICJodHRwczovL3Rscy5tYmVkLm9yZy9kb3dubG9hZC9tYmVkdGxzLSR7UFZ9LWFwYWNoZS50Z3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZDRiMGUyY2I4NDRlZmRlMWU3M2QzYmNkOTczMWZlZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYjhiNjJiOTk1NzgxYmNmMjJlODdhMjY1ZWQwNjI2N2Y4N2MzMDQxMTk4ZTk5NmI0NDQ0MTIyM2QxOWZhOWMzIgorCitpbmhlcml0IGNtYWtlCisKK1BBQ0tBR0VDT05GSUcgPz89ICJzaGFyZWQtbGlicyBwcm9ncmFtcyIKK1BBQ0tBR0VDT05GSUdbc2hhcmVkLWxpYnNdID0gIi1EVVNFX1NIQVJFRF9NQkVEVExTX0xJQlJBUlk9T04sLVVTRV9TSEFSRURfTUJFRFRMU19MSUJSQVJZPU9GRiIKK1BBQ0tBR0VDT05GSUdbcHJvZ3JhbXNdID0gIi1ERU5BQkxFX1BST0dSQU1TPU9OLC1ERU5BQkxFX1BST0dSQU1TPU9GRiIKKworRVhUUkFfT0VDTUFLRSA9ICItREVOQUJMRV9URVNUSU5HPU9GRiAtRExJQl9JTlNUQUxMX0RJUjpTVFJJTkc9JHtsaWJkaXJ9IgorCitQUk9WSURFUyArPSAicG9sYXJzc2wiCitSUFJPVklERVNfJHtQTn0gPSAicG9sYXJzc2wiCisKK1BBQ0tBR0VTID0rICIke1BOfS1wcm9ncmFtcyIKK0ZJTEVTXyR7UE59LXByb2dyYW1zID0gIiR7YmluZGlyfS8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci1vcGVudnBuXzEuMi44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjIuOC5iYgppbmRleCBjY2UzZjkxLi4xYjYwNGFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci1vcGVudnBuXzEuMi44LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLW9wZW52cG5fMS4yLjguYmIKQEAgLTI2LDcgKzI2LDcgQEAKIAogRklMRVNfJHtQTn0gKz0gIiBcCiAgICAgJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyouc28gXAotICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci9WUE4vbm0tb3BlbnZwbi1zZXJ2aWNlLm5hbWUgXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L05ldHdvcmtNYW5hZ2VyL1ZQTi9ubS1vcGVudnBuLXNlcnZpY2UubmFtZSBcCiAiCiAKIEZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtYWRqdXN0LW5ldC1oZWFkZXJzLWZvci1tdXNsLWNvbXBhdGliaWxpdHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWFkanVzdC1uZXQtaGVhZGVycy1mb3ItbXVzbC1jb21wYXRpYmlsaXR5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWQwYzdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtYWRqdXN0LW5ldC1oZWFkZXJzLWZvci1tdXNsLWNvbXBhdGliaWxpdHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi1Gcm9tIDA0N2QzYmY5NmI1MTA3NDBmNjQ2ODc0ODAzMzNjMzc4ZTQxNDk5NWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzMSBNYXIgMjAxNyAxNTo1NzowNSAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvNV0gYWRqdXN0IG5ldC8gaGVhZGVycyBmb3IgbXVzbCBjb21wYXRpYmlsaXR5Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJubS1jb3JlL25tLXV0aWxzLmMgICAgICAgICAgfCAxMiArKysrKysrLS0tLS0KLSBsaWJubS1jb3JlL25tLXV0aWxzLmggICAgICAgICAgfCAgNSArKy0tLQotIHNyYy9wbGF0Zm9ybS93aWZpL3dpZmktdXRpbHMuaCB8ICAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlibm0tY29yZS9ubS11dGlscy5jIGIvbGlibm0tY29yZS9ubS11dGlscy5jCi1pbmRleCBkZjc1ZDU2Li44NjgyMjRlIDEwMDY0NAotLS0tIGEvbGlibm0tY29yZS9ubS11dGlscy5jCi0rKysgYi9saWJubS1jb3JlL25tLXV0aWxzLmMKLUBAIC0xOSwyNCArMTksMjYgQEAKLSAgKiBDb3B5cmlnaHQgMjAwNSAtIDIwMTQgUmVkIEhhdCwgSW5jLgotICAqLwotIAotLSNpbmNsdWRlICJubS1kZWZhdWx0LmgiCi0tCi0tI2luY2x1ZGUgIm5tLXV0aWxzLmgiCi0tCi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8bmV0aW5ldC9ldGhlci5oPgotICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSAjaW5jbHVkZSA8dXVpZC91dWlkLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8Z21vZHVsZS5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKy8vI2luY2x1ZGUgPG5ldC9pZl9hcnAuaD4KLSsvLyNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KLSsjaW5jbHVkZSA8bmV0aW5ldC9ldGhlci5oPgotKwotKyNpbmNsdWRlICJubS1kZWZhdWx0LmgiCi0gCi0rI2luY2x1ZGUgIm5tLXV0aWxzLmgiCi0gI2lmIFdJVEhfSkFOU1NPTgotICNpbmNsdWRlIDxqYW5zc29uLmg+Ci0gI2VuZGlmCi0gCi0rCi0gI2luY2x1ZGUgIm5tLWNvbW1vbi1tYWNyb3MuaCIKLSAjaW5jbHVkZSAibm0tdXRpbHMtcHJpdmF0ZS5oIgotICNpbmNsdWRlICJubS1zZXR0aW5nLXByaXZhdGUuaCIKLWRpZmYgLS1naXQgYS9saWJubS1jb3JlL25tLXV0aWxzLmggYi9saWJubS1jb3JlL25tLXV0aWxzLmgKLWluZGV4IDQwN2MxNGUuLjE1NmNjYWUgMTAwNjQ0Ci0tLS0gYS9saWJubS1jb3JlL25tLXV0aWxzLmgKLSsrKyBiL2xpYm5tLWNvcmUvbm0tdXRpbHMuaAotQEAgLTI3LDExICsyNywxMCBAQAotIAotICNpbmNsdWRlIDxnbGliLmg+Ci0gCi0tI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLS0KLSAvKiBGb3IgRVRIX0FMRU4gYW5kIElORklOSUJBTkRfQUxFTiAqLwotLSNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgotKy8vI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX2luZmluaWJhbmQuaD4KLSsjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotIAotICNpbmNsdWRlICJubS1jb3JlLWVudW0tdHlwZXMuaCIKLSAjaW5jbHVkZSAibm0tc2V0dGluZy13aXJlbGVzcy1zZWN1cml0eS5oIgotZGlmZiAtLWdpdCBhL3NyYy9wbGF0Zm9ybS93aWZpL3dpZmktdXRpbHMuaCBiL3NyYy9wbGF0Zm9ybS93aWZpL3dpZmktdXRpbHMuaAotaW5kZXggOGUyYjkzZi4uODRmNWNlOSAxMDA2NDQKLS0tLSBhL3NyYy9wbGF0Zm9ybS93aWZpL3dpZmktdXRpbHMuaAotKysrIGIvc3JjL3BsYXRmb3JtL3dpZmkvd2lmaS11dGlscy5oCi1AQCAtMjIsNyArMjIsNyBAQAotICNpZm5kZWYgX19XSUZJX1VUSUxTX0hfXwotICNkZWZpbmUgX19XSUZJX1VUSUxTX0hfXwotIAotLSNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KLSsvLyNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KLSAKLSAjaW5jbHVkZSAibm0tZGJ1cy1pbnRlcmZhY2UuaCIKLSAKLS0tIAotMi4xMi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtY2hlY2stZm9yLXN0cm5kdXBhLWJlZm9yZS11c2luZy1pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtY2hlY2stZm9yLXN0cm5kdXBhLWJlZm9yZS11c2luZy1pdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZmMzgwYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWNoZWNrLWZvci1zdHJuZHVwYS1iZWZvcmUtdXNpbmctaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1Gcm9tIDA1ZThiZDY2NGQwMjQ0Y2I4YWI0Mzc2Yjk2MjgzMGI5Nzg2MGY2YmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzMSBNYXIgMjAxNyAxODozNzoxOSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBjaGVjayBmb3Igc3RybmR1cGEgYmVmb3JlIHVzaW5nIGl0Ci0KLW11c2wgZG9lcyBub3QgaGF2ZSBzdHJuZHVwYQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlnLmguaW4gICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKysKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIHNyYy9zeXN0ZW1kL3NyYy9iYXNpYy9hbGxvYy11dGlsLmggfCAxMiArKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZy5oLmluIGIvY29uZmlnLmguaW4KLWluZGV4IGRiOGMxMzUuLmM0MjI5ZWQgMTAwNjQ0Ci0tLS0gYS9jb25maWcuaC5pbgotKysrIGIvY29uZmlnLmguaW4KLUBAIC00MSw2ICs0MSwxMCBAQAotICAgICovCi0gI3VuZGVmIEhBVkVfRENHRVRURVhUCi0gCi0rLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBzdHJuZHVwYScsIGFuZCB0byAwIGlmIHlvdQotKyAgIGRvbid0LiAqLwotKyN1bmRlZiBIQVZFX0RFQ0xfU1RSTkRVUEEKLSsKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRsZmNuLmg+IGhlYWRlciBmaWxlLiAqLwotICN1bmRlZiBIQVZFX0RMRkNOX0gKLSAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDI2MzBmOGQuLmQwYTU3ZmQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTU0LDYgKzU0LDcgQEAgQUNfU1VCU1QoTk1fVkVSU0lPTikKLSAKLSBHSVRfU0hBX1JFQ09SRChOTV9HSVRfU0hBKQotIAotK0FDX0NIRUNLX0RFQ0xTKFtzdHJuZHVwYV0sIFtdLCBbXSwgW1sjaW5jbHVkZSA8c3RyaW5nLmg+XV0pCi0gZG5sCi0gZG5sIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCi0gZG5sCi1kaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL2FsbG9jLXV0aWwuaCBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9hbGxvYy11dGlsLmgKLWluZGV4IGNlZWVlNTEuLjkyNGI1OWMgMTAwNjQ0Ci0tLS0gYS9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvYWxsb2MtdXRpbC5oCi0rKysgYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvYWxsb2MtdXRpbC5oCi1AQCAtMjUsNiArMjUsMTggQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gI2luY2x1ZGUgIm1hY3JvLmgiCi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKwotKyNpZiAhSEFWRV9ERUNMX1NUUk5EVVBBCi0rI2RlZmluZSBzdHJuZHVwYShzLCBuKSBcCi0rICAoeyBcCi0rICAgIGNvbnN0IGNoYXIgKl9fb2xkID0gKHMpOyBcCi0rICAgIHNpemVfdCBfX2xlbiA9IHN0cm5sZW4oX19vbGQsIChuKSk7IFwKLSsgICAgY2hhciAqX19uZXcgPSAoY2hhciAqKWFsbG9jYShfX2xlbiArIDEpOyBcCi0rICAgIF9fbmV3W19fbGVuXSA9ICdcMCc7IFwKLSsgICAgKGNoYXIgKiltZW1jcHkoX19uZXcsIF9fb2xkLCBfX2xlbik7IFwKLSsgIH0pCi0rI2VuZGlmCi0gCi0gI2RlZmluZSBuZXcodCwgbikgKCh0KikgbWFsbG9jX211bHRpcGx5KHNpemVvZih0KSwgKG4pKSkKLSAKLS0tIAotMi4xMi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtZG5zLXJlc29sdmVkLWFkZC1zeXN0ZW1kLXJlc29sdmVkLWJhY2tlbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWRucy1yZXNvbHZlZC1hZGQtc3lzdGVtZC1yZXNvbHZlZC1iYWNrZW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDE5NGE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtZG5zLXJlc29sdmVkLWFkZC1zeXN0ZW1kLXJlc29sdmVkLWJhY2tlbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MjEgKzAsMCBAQAotRnJvbTogU2pvZXJkIFNpbW9ucyA8c2pvZXJkQGx1b24ubmV0PgotRGF0ZTogU3VuLCAyMSBBdWcgMjAxNiAyMTo0NjowMiArMDIwMAotU3ViamVjdDogW1BBVENIXSBkbnMvcmVzb2x2ZWQ6IGFkZCBzeXN0ZW1kLXJlc29sdmVkIGJhY2tlbmQKLQotQWRkIGluaXRpYWwgRE5TIGJhY2tlbmQgdGhhdCBwdXNoZXMgRE5TIGluZm9ybWF0aW9uIGludG8KLXN5c3RlbWQtcmVzb2x2ZWQuIEJhY2tlbmQgaXMgY2hvb3NlbiBieSBkZWZhdWx0IGlmIHRoZSBzeXN0ZW1zCi1yZXNvbHYuY29udiBpcyBzZXR1cCB0byBwb2ludGluZyB0byBvbmUgb2YgdGhlIHN0YW5kYXJkIHJlc29sdmVkCi1sb2NhdGlvbnMuCi0KLVRoaXMgZG9lc24ndCBoYW5kbGUgZ2xvYmFsIGRucyBjb25maWd1cmF0aW9uLgotCi1TaWduZWQtb2ZmLWJ5OiBTam9lcmQgU2ltb25zIDxzam9lcmRAbHVvbi5uZXQ+Ci0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI1NDAKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0tLS0KLSBtYW4vTmV0d29ya01hbmFnZXIuY29uZi54bWwgICAgICAgICAgICAgICB8ICAxMCArLQotIHNyYy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKLSBzcmMvZG5zLW1hbmFnZXIvbm0tZG5zLW1hbmFnZXIuYyAgICAgICAgICB8ICA0MyArKy0KLSBzcmMvZG5zLW1hbmFnZXIvbm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuYyB8IDQyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBzcmMvZG5zLW1hbmFnZXIvbm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuaCB8ICA0NSArKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCA1MjMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmgKLQotZGlmZiAtLWdpdCBhL21hbi9OZXR3b3JrTWFuYWdlci5jb25mLnhtbCBiL21hbi9OZXR3b3JrTWFuYWdlci5jb25mLnhtbAotaW5kZXggNjI5NWI4Mi4uMGE2N2FlNSAxMDA2NDQKLS0tLSBhL21hbi9OZXR3b3JrTWFuYWdlci5jb25mLnhtbAotKysrIGIvbWFuL05ldHdvcmtNYW5hZ2VyLmNvbmYueG1sCi1AQCAtMjc1LDEwICsyNzUsMTIgQEAgbm8tYXV0by1kZWZhdWx0PSoKLSAgICAgICA8dmFybGlzdGVudHJ5PgotICAgICAgICAgPHRlcm0+PHZhcm5hbWU+ZG5zPC92YXJuYW1lPjwvdGVybT4KLSAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZXQgdGhlIEROUyAoPGZpbGVuYW1lPnJlc29sdi5jb25mPC9maWxlbmFtZT4pIHByb2Nlc3NpbmcgbW9kZS48L3BhcmE+Ci0tICAgICAgICA8cGFyYT48bGl0ZXJhbD5kZWZhdWx0PC9saXRlcmFsPjogVGhlIGRlZmF1bHQgaWYgdGhlIGtleSBpcwotLSAgICAgICAgbm90IHNwZWNpZmllZC4gTmV0d29ya01hbmFnZXIgd2lsbCB1cGRhdGUKLSsgICAgICAgIDxwYXJhPjxsaXRlcmFsPmRlZmF1bHQ8L2xpdGVyYWw+OiBOZXR3b3JrTWFuYWdlciB3aWxsIHVwZGF0ZQotICAgICAgICAgPGZpbGVuYW1lPnJlc29sdi5jb25mPC9maWxlbmFtZT4gdG8gcmVmbGVjdCB0aGUgbmFtZXNlcnZlcnMKLS0gICAgICAgIHByb3ZpZGVkIGJ5IGN1cnJlbnRseSBhY3RpdmUgY29ubmVjdGlvbnMuPC9wYXJhPgotKyAgICAgICAgcHJvdmlkZWQgYnkgY3VycmVudGx5IGFjdGl2ZSBjb25uZWN0aW9ucy4gIFRoaXMgaXMgdGhlIGRlZmF1bHQKLSsgICAgICAgIGlmIHRoZSBrZXkgaXMgbm90IHNwZWNpZmllZCwgdW5sZXNzIHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZAotKyAgICAgICAgdG8gdXNlIHN5c3RlbWQtcmVzb2x2ZWQ7IGluIHRoaXMgY2FzZSB0aGUgZGVmYXVsdCBpcwotKyAgICAgICAgPGxpdGVyYWw+c3lzdGVtZC1yZXNvbHZlZDwvbGl0ZXJhbD48L3BhcmE+Ci0gICAgICAgICA8cGFyYT48bGl0ZXJhbD5kbnNtYXNxPC9saXRlcmFsPjogTmV0d29ya01hbmFnZXIgd2lsbCBydW4KLSAgICAgICAgIGRuc21hc3EgYXMgYSBsb2NhbCBjYWNoaW5nIG5hbWVzZXJ2ZXIsIHVzaW5nIGEgInNwbGl0IEROUyIKLSAgICAgICAgIGNvbmZpZ3VyYXRpb24gaWYgeW91IGFyZSBjb25uZWN0ZWQgdG8gYSBWUE4sIGFuZCB0aGVuIHVwZGF0ZQotQEAgLTI4OCw2ICsyOTAsOCBAQCBuby1hdXRvLWRlZmF1bHQ9KgotICAgICAgICAgdG8gdW5ib3VuZCBhbmQgZG5zc2VjLXRyaWdnZXJkLCBwcm92aWRpbmcgYSAic3BsaXQgRE5TIgotICAgICAgICAgY29uZmlndXJhdGlvbiB3aXRoIEROU1NFQyBzdXBwb3J0LiBUaGUgPGZpbGVuYW1lPi9ldGMvcmVzb2x2LmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgd2lsbCBiZSBtYW5hZ2VkIGJ5IGRuc3NlYy10cmlnZ2VyIGRhZW1vbi48L3BhcmE+Ci0rICAgICAgICA8cGFyYT48bGl0ZXJhbD5zeXN0ZW1kLXJlc29sdmVkPC9saXRlcmFsPjogTmV0d29ya01hbmFnZXIgd2lsbAotKyAgICAgICAgcHVzaCB0aGUgRE5TIGNvbmZpZ3VyYXRpb24gdG8gc3lzdGVtZC1yZXNvbHZlZDwvcGFyYT4KLSAgICAgICAgIDxwYXJhPjxsaXRlcmFsPm5vbmU8L2xpdGVyYWw+OiBOZXR3b3JrTWFuYWdlciB3aWxsIG5vdAotICAgICAgICAgbW9kaWZ5IHJlc29sdi5jb25mLiBUaGlzIGltcGxpZXMKLSAgICAgICAgIDxsaXRlcmFsPnJjLW1hbmFnZXI8L2xpdGVyYWw+Jm5ic3A7PGxpdGVyYWw+dW5tYW5hZ2VkPC9saXRlcmFsPjwvcGFyYT4KLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDhkMjliMTkuLjEwZjYzZGUgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTM0NSw2ICszNDUsOCBAQCBsaWJOZXR3b3JrTWFuYWdlcl9sYV9TT1VSQ0VTID0gXAotIAlcCi0gCWRucy1tYW5hZ2VyL25tLWRucy1kbnNtYXNxLmMgXAotIAlkbnMtbWFuYWdlci9ubS1kbnMtZG5zbWFzcS5oIFwKLSsJZG5zLW1hbmFnZXIvbm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuYyBcCi0rCWRucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmggXAotIAlkbnMtbWFuYWdlci9ubS1kbnMtdW5ib3VuZC5jIFwKLSAJZG5zLW1hbmFnZXIvbm0tZG5zLXVuYm91bmQuaCBcCi0gCWRucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMgXAotZGlmZiAtLWdpdCBhL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtbWFuYWdlci5jIGIvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMKLWluZGV4IDVhNzU4YTkuLjM4YmM3ODYgMTAwNjQ0Ci0tLS0gYS9zcmMvZG5zLW1hbmFnZXIvbm0tZG5zLW1hbmFnZXIuYwotKysrIGIvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMKLUBAIC00NSw2ICs0NSw3IEBACi0gCi0gI2luY2x1ZGUgIm5tLWRucy1wbHVnaW4uaCIKLSAjaW5jbHVkZSAibm0tZG5zLWRuc21hc3EuaCIKLSsjaW5jbHVkZSAibm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuaCIKLSAjaW5jbHVkZSAibm0tZG5zLXVuYm91bmQuaCIKLSAKLSAjaWYgV0lUSF9MSUJTT1VQCi1AQCAtMTU4OCw2ICsxNTg5LDM3IEBAIF9jaGVja19yZXNjb25mX2ltbXV0YWJsZSAoTk1EbnNNYW5hZ2VyUmVzb2x2Q29uZk1hbmFnZXIgcmNfbWFuYWdlcikKLSAKLSBOTV9ERUZJTkVfU0lOR0xFVE9OX0dFVFRFUiAoTk1EbnNNYW5hZ2VyLCBubV9kbnNfbWFuYWdlcl9nZXQsIE5NX1RZUEVfRE5TX01BTkFHRVIpOwotIAotK3N0YXRpYyBnYm9vbGVhbgotK19yZXNvbHZjb25mX3Jlc29sdmVkX21hbmFnZWQgKHZvaWQpCi0rewotKwlzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgcmVzb2x2ZWRfcGF0aHNbXSA9IHsKLSsJCSIvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiIsCi0rCQkiL2xpYi9zeXN0ZW1kL3Jlc29sdi5jb25mIiwKLSsJCSIvdXNyL2xpYi9zeXN0ZW1kL3Jlc29sdi5jb25mIiwKLSsJfTsKLSsJR0ZpbGUgKmY7Ci0rCUdGaWxlSW5mbyAqaW5mbzsKLSsJZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7Ci0rCi0rCWYgPSBnX2ZpbGVfbmV3X2Zvcl9wYXRoIChfUEFUSF9SRVNDT05GKTsKLSsJaW5mbyA9IGdfZmlsZV9xdWVyeV9pbmZvIChmLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfSVNfU1lNTElOSyIsIlwKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NZTUxJTktfVEFSR0VULAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgIEdfRklMRV9RVUVSWV9JTkZPX05PRk9MTE9XX1NZTUxJTktTLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwotKwotKwlpZiAoaW5mbyAmJiBnX2ZpbGVfaW5mb19nZXRfaXNfc3ltbGluayAoaW5mbykpIHsKLSsJCXJldCA9IF9ubV91dGlsc19zdHJ2X2ZpbmRfZmlyc3QgKChnY2hhciAqKikgcmVzb2x2ZWRfcGF0aHMsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX05fRUxFTUVOVFMgKHJlc29sdmVkX3BhdGhzKSwKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfZmlsZV9pbmZvX2dldF9zeW1saW5rX3RhcmdldCAoaW5mbykpID49IDA7Ci0rCX0KLSsKLSsJZ19jbGVhcl9vYmplY3QoJmluZm8pOwotKwlnX2NsZWFyX29iamVjdCgmZik7Ci0rCi0rCXJldHVybiByZXQ7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gaW5pdF9yZXNvbHZfY29uZl9tb2RlIChOTURuc01hbmFnZXIgKnNlbGYsIGdib29sZWFuIGZvcmNlX3JlbG9hZF9wbHVnaW4pCi0gewotQEAgLTE2MzMsNyArMTY2NSwxNiBAQCBhZ2FpbjoKLSAKLSAJcmNfbWFuYWdlciA9IF9jaGVja19yZXNjb25mX2ltbXV0YWJsZSAocmNfbWFuYWdlcik7Ci0gCi0tCWlmIChubV9zdHJlcTAgKG1vZGUsICJkbnNtYXNxIikpIHsKLSsJaWYgKCAgICghbW9kZSAmJiBfcmVzb2x2Y29uZl9yZXNvbHZlZF9tYW5hZ2VkICgpKQotKwkgICAgfHwgbm1fc3RyZXEwIChtb2RlLCAic3lzdGVtZC1yZXNvbHZlZCIpKSB7Ci0rCQlpZiAoICAgZm9yY2VfcmVsb2FkX3BsdWdpbgotKwkJICAgIHx8ICFOTV9JU19ETlNfU1lTVEVNRF9SRVNPTFZFRCAocHJpdi0+cGx1Z2luKSkgewotKwkJCV9jbGVhcl9wbHVnaW4gKHNlbGYpOwotKwkJCXByaXYtPnBsdWdpbiA9IG5tX2Ruc19zeXN0ZW1kX3Jlc29sdmVkX25ldyAoKTsKLSsJCQlwbHVnaW5fY2hhbmdlZCA9IFRSVUU7Ci0rCQl9Ci0rCQltb2RlID0gInN5c3RlbWQtcmVzb2x2ZWQiOwotKwl9IGVsc2UgaWYgKG5tX3N0cmVxMCAobW9kZSwgImRuc21hc3EiKSkgewotIAkJaWYgKGZvcmNlX3JlbG9hZF9wbHVnaW4gfHwgIU5NX0lTX0ROU19ETlNNQVNRIChwcml2LT5wbHVnaW4pKSB7Ci0gCQkJX2NsZWFyX3BsdWdpbiAoc2VsZik7Ci0gCQkJcHJpdi0+cGx1Z2luID0gbm1fZG5zX2Ruc21hc3FfbmV3ICgpOwotZGlmZiAtLWdpdCBhL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtc3lzdGVtZC1yZXNvbHZlZC5jIGIvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42YmRkNWY2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvZG5zLW1hbmFnZXIvbm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuYwotQEAgLTAsMCArMSw0MjcgQEAKLSsvKiAtKi0gTW9kZTogQzsgdGFiLXdpZHRoOiA0OyBpbmRlbnQtdGFicy1tb2RlOiB0OyBjLWJhc2ljLW9mZnNldDogNCAtKi0gKi8KLSsvKgotKyAqIENvcHlyaWdodCAoQykgMjAxMCBEYW4gV2lsbGlhbXMgPGRjYndAcmVkaGF0LmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU2pvZXJkIFNpbW9ucyA8c2pvZXJkQGx1b24ubmV0PgotKyAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0rICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLSsgKgotKyAqLwotKwotKyNpbmNsdWRlICJubS1kZWZhdWx0LmgiCi0rCi0rI2luY2x1ZGUgIm5tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmgiCi0rCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0rI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyNpbmNsdWRlIDxsaW51eC9pZi5oPgotKwotKyNpbmNsdWRlICJubS1jb3JlLWludGVybmFsLmgiCi0rI2luY2x1ZGUgIm5tLXBsYXRmb3JtLmgiCi0rI2luY2x1ZGUgIm5tLXV0aWxzLmgiCi0rI2luY2x1ZGUgIm5tLWlwNC1jb25maWcuaCIKLSsjaW5jbHVkZSAibm0taXA2LWNvbmZpZy5oIgotKyNpbmNsdWRlICJubS1idXMtbWFuYWdlci5oIgotKyNpbmNsdWRlICJubS1tYW5hZ2VyLmgiCi0rI2luY2x1ZGUgIm5tLWRldmljZS5oIgotKyNpbmNsdWRlICJOZXR3b3JrTWFuYWdlclV0aWxzLmgiCi0rCi0rR19ERUZJTkVfVFlQRSAoTk1EbnNTeXN0ZW1kUmVzb2x2ZWQsIG5tX2Ruc19zeXN0ZW1kX3Jlc29sdmVkLCBOTV9UWVBFX0ROU19QTFVHSU4pCi0rCi0rI2RlZmluZSBOTV9ETlNfU1lTVEVNRF9SRVNPTFZFRF9HRVRfUFJJVkFURShvKSBcCi0rICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFICgobyksIE5NX1RZUEVfRE5TX1NZU1RFTURfUkVTT0xWRUQsIFwKLSsgICAgTk1EbnNTeXN0ZW1kUmVzb2x2ZWRQcml2YXRlKSkKLSsKLSsjZGVmaW5lIFNZU1RFTURfUkVTT0xWRURfREJVU19TRVJWSUNFICJvcmcuZnJlZWRlc2t0b3AucmVzb2x2ZTEiCi0rI2RlZmluZSBTWVNURU1EX1JFU09MVkVEX0RCVVNfUEFUSCAiL29yZy9mcmVlZGVza3RvcC9yZXNvbHZlMSIKLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rCWludCBpZmluZGV4OwotKwlHTGlzdCAqY29uZmlnczsKLSt9IEludGVyZmFjZUNvbmZpZzsKLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rCUdEQnVzUHJveHkgKnJlc29sdmU7Ci0rCUdDYW5jZWxsYWJsZSAqaW5pdF9jYW5jZWxsYWJsZTsKLSsJR0NhbmNlbGxhYmxlICp1cGRhdGVfY2FuY2VsbGFibGU7Ci0rCUdRdWV1ZSBkbnNfdXBkYXRlczsKLSsJR1F1ZXVlIGRvbWFpbl91cGRhdGVzOwotK30gTk1EbnNTeXN0ZW1kUmVzb2x2ZWRQcml2YXRlOwotKwotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSsKLSsjZGVmaW5lIF9OTUxPR19ET01BSU4gICAgICAgICBMT0dEX0ROUwotKyNkZWZpbmUgX05NTE9HX1BSRUZJWF9OQU1FICAgICJzeXN0ZW1kLXJlc29sdmVkIgotKyNkZWZpbmUgX05NTE9HKGxldmVsLCAuLi4pIFwKLSsgICAgR19TVE1UX1NUQVJUIHsgXAotKyAgICAgICAgbm1fbG9nICgobGV2ZWwpLCBfTk1MT0dfRE9NQUlOLCBcCi0rICAgICAgICAgICAgICAgICIlc1slcF06ICIgX05NX1VUSUxTX01BQ1JPX0ZJUlNUKF9fVkFfQVJHU19fKSwgXAotKyAgICAgICAgICAgICAgICBfTk1MT0dfUFJFRklYX05BTUUsIFwKLSsgICAgICAgICAgICAgICAgKHNlbGYpIFwKLSsgICAgICAgICAgICAgICAgX05NX1VUSUxTX01BQ1JPX1JFU1QoX19WQV9BUkdTX18pKTsgXAotKyAgICB9IEdfU1RNVF9FTkQKLSsKLSsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0rCi0rc3RhdGljIHZvaWQKLStjYWxsX2RvbmUgKEdPYmplY3QgKnNvdXJjZSwgR0FzeW5jUmVzdWx0ICpyLCBncG9pbnRlciB1c2VyX2RhdGEpCi0rewotKwlHVmFyaWFudCAqdjsKLSsJR0Vycm9yICplcnJvciA9IE5VTEw7Ci0rCU5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmID0gKE5NRG5zU3lzdGVtZFJlc29sdmVkICopIHVzZXJfZGF0YTsKLSsKLSsJdiA9IGdfZGJ1c19wcm94eV9jYWxsX2ZpbmlzaCAoR19EQlVTX1BST1hZIChzb3VyY2UpLCByLCAmZXJyb3IpOwotKwotKwlpZiAoZ19lcnJvcl9tYXRjaGVzIChlcnJvciwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQpKQotKwkJcmV0dXJuOwotKwotKwlpZiAoZXJyb3IgIT0gTlVMTCkgewotKwkJX0xPR1cgKCJGYWlsZWQ6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7Ci0rCQlnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLSsJfQotK30KLSsKLStzdGF0aWMgdm9pZAotK2FkZF9pbnRlcmZhY2VfY29uZmlndXJhdGlvbiAoTk1EbnNTeXN0ZW1kUmVzb2x2ZWQgKnNlbGYsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXJyYXkgKmludGVyZmFjZXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOTURuc0lQQ29uZmlnRGF0YSAqZGF0YSkKLSt7Ci0rCWludCBpOwotKwlJbnRlcmZhY2VDb25maWcgKmljID0gTlVMTDsKLSsJaW50IGlmaW5kZXg7Ci0rCU5NRGV2aWNlICpkZXZpY2U7Ci0rCi0rCWlmIChOTV9JU19JUDRfQ09ORklHIChkYXRhLT5jb25maWcpKQotKwkJaWZpbmRleCA9IG5tX2lwNF9jb25maWdfZ2V0X2lmaW5kZXggKGRhdGEtPmNvbmZpZyk7Ci0rCWVsc2UgaWYgKE5NX0lTX0lQNl9DT05GSUcgIChkYXRhLT5jb25maWcpKQotKwkJaWZpbmRleCA9IG5tX2lwNl9jb25maWdfZ2V0X2lmaW5kZXggKGRhdGEtPmNvbmZpZyk7Ci0rCWVsc2UKLSsJCWdfcmV0dXJuX2lmX3JlYWNoZWQgKCk7Ci0rCi0rCWRldmljZSA9IG5tX21hbmFnZXJfZ2V0X2RldmljZV9ieV9pZmluZGV4IChubV9tYW5hZ2VyX2dldCAoKSwgaWZpbmRleCk7Ci0rCi0rCWlmICghbm1fZGV2aWNlX2dldF9tYW5hZ2VkIChkZXZpY2UsIEZBTFNFKSkKLSsJCXJldHVybjsKLSsKLSsJZm9yIChpID0gMDsgaSA8IGludGVyZmFjZXMtPmxlbjsgaSsrKSB7Ci0rCQlJbnRlcmZhY2VDb25maWcgKnRpYyA9ICZnX2FycmF5X2luZGV4IChpbnRlcmZhY2VzLCBJbnRlcmZhY2VDb25maWcsIGkpOwotKwkJaWYgKGlmaW5kZXggPT0gdGljLT5pZmluZGV4KSB7Ci0rCQkJaWMgPSB0aWM7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCX0KLSsKLSsJaWYgKCFpYykgewotKwkJZ19hcnJheV9zZXRfc2l6ZSAoaW50ZXJmYWNlcywgaW50ZXJmYWNlcy0+bGVuICsgMSk7Ci0rCQlpYyA9ICZnX2FycmF5X2luZGV4IChpbnRlcmZhY2VzLCBJbnRlcmZhY2VDb25maWcsCi0rCQkgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VzLT5sZW4gLSAxKTsKLSsJCWljLT5pZmluZGV4ID0gaWZpbmRleDsKLSsJfQotKwotKwlpYy0+Y29uZmlncyA9IGdfbGlzdF9hcHBlbmQgKGljLT5jb25maWdzLCBkYXRhLT5jb25maWcpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2FkZF9kb21haW4gKEdWYXJpYW50QnVpbGRlciAqZG9tYWlucywKLSsgICAgICAgICAgICBjb25zdCBjaGFyICpkb21haW4sCi0rICAgICAgICAgICAgZ2Jvb2xlYW4gbmV2ZXJfZGVmYXVsdCkKLSt7Ci0rCS8qIElmIHRoaXMgbGluayBpcyBuZXZlciB0aGUgZGVmYXVsdCAoZS5nLiBvbmx5IHVzZWQgZm9yIHJlc291cmNlcyBvbiB0aGlzCi0rCSAqIG5ldHdvcmspIGFkZCBhIHJvdXRpbmcgZG9tYWluLiAqLwotKwlnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGRvbWFpbnMsICIoc2IpIiwgZG9tYWluLCBuZXZlcl9kZWZhdWx0KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSt1cGRhdGVfYWRkX2lwNl9jb25maWcgKE5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmLAotKyAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyICpkbnMsCi0rICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudEJ1aWxkZXIgKmRvbWFpbnMsCi0rICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOTUlQNkNvbmZpZyAqY29uZmlnKQotK3sKLSsJZ3VpbnQgaSwgbjsKLSsKLSsJbiA9IG5tX2lwNl9jb25maWdfZ2V0X251bV9uYW1lc2VydmVycyAoY29uZmlnKTsKLSsJZm9yIChpID0gMCA7IGkgPCBuOyBpKyspIHsKLSsJCWNvbnN0IHN0cnVjdCBpbjZfYWRkciAqaXA7Ci0rCi0rCQlnX3ZhcmlhbnRfYnVpbGRlcl9vcGVuIChkbnMsIEdfVkFSSUFOVF9UWVBFICgiKGlheSkiKSk7Ci0rCQlnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGRucywgImkiLCBBRl9JTkVUNik7Ci0rCQlpcCA9IG5tX2lwNl9jb25maWdfZ2V0X25hbWVzZXJ2ZXIgKGNvbmZpZywgaSksCi0rCi0rCQlnX3ZhcmlhbnRfYnVpbGRlcl9hZGRfdmFsdWUgKGRucywgZ192YXJpYW50X25ld19maXhlZF9hcnJheSAoR19WQVJJQU5UX1RZUEVfQllURSwgaXAsIDE2LCAxKSk7Ci0rCQlnX3ZhcmlhbnRfYnVpbGRlcl9jbG9zZSAoZG5zKTsKLSsJfQotKwotKwluID0gbm1faXA2X2NvbmZpZ19nZXRfbnVtX3NlYXJjaGVzIChjb25maWcpOwotKwlpZiAobiA+IDApIHsKLSsJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSsJCQlhZGRfZG9tYWluIChkb21haW5zLCBubV9pcDZfY29uZmlnX2dldF9zZWFyY2ggKGNvbmZpZywgaSksCi0rCQkJICAgICAgICAgICAgbm1faXA2X2NvbmZpZ19nZXRfbmV2ZXJfZGVmYXVsdCAoY29uZmlnKSk7Ci0rCQl9Ci0rCX0gZWxzZSB7Ci0rCQluID0gbm1faXA2X2NvbmZpZ19nZXRfbnVtX2RvbWFpbnMgKGNvbmZpZyk7Ci0rCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0rCQkJYWRkX2RvbWFpbiAoZG9tYWlucywgbm1faXA2X2NvbmZpZ19nZXRfZG9tYWluIChjb25maWcsIGkpLAotKwkJCSAgICAgICAgICAgIG5tX2lwNl9jb25maWdfZ2V0X25ldmVyX2RlZmF1bHQgKGNvbmZpZykpOwotKwkJfQotKwl9Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rdXBkYXRlX2FkZF9pcDRfY29uZmlnIChOTURuc1N5c3RlbWRSZXNvbHZlZCAqc2VsZiwKLSsgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50QnVpbGRlciAqZG5zLAotKyAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyICpkb21haW5zLAotKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTk1JUDRDb25maWcgKmNvbmZpZykKLSt7Ci0rCWd1aW50IGksIG47Ci0rCi0rCW4gPSBubV9pcDRfY29uZmlnX2dldF9udW1fbmFtZXNlcnZlcnMgKGNvbmZpZyk7Ci0rCWZvciAoaSA9IDAgOyBpIDwgbjsgaSsrKSB7Ci0rCQlndWludDMyIG5zOwotKwotKwkJZ192YXJpYW50X2J1aWxkZXJfb3BlbiAoZG5zLCBHX1ZBUklBTlRfVFlQRSAoIihpYXkpIikpOwotKwkJZ192YXJpYW50X2J1aWxkZXJfYWRkIChkbnMsICJpIiwgQUZfSU5FVCk7Ci0rCQlucyA9IG5tX2lwNF9jb25maWdfZ2V0X25hbWVzZXJ2ZXIgKGNvbmZpZywgaSksCi0rCi0rCQlnX3ZhcmlhbnRfYnVpbGRlcl9hZGRfdmFsdWUgKGRucywgZ192YXJpYW50X25ld19maXhlZF9hcnJheSAoR19WQVJJQU5UX1RZUEVfQllURSwgJm5zLCA0LCAxKSk7Ci0rCQlnX3ZhcmlhbnRfYnVpbGRlcl9jbG9zZSAoZG5zKTsKLSsJfQotKwotKwluID0gbm1faXA0X2NvbmZpZ19nZXRfbnVtX3NlYXJjaGVzIChjb25maWcpOwotKwlpZiAobiAgPiAwKSB7Ci0rCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0rCQkJYWRkX2RvbWFpbiAoZG9tYWlucywgbm1faXA0X2NvbmZpZ19nZXRfc2VhcmNoIChjb25maWcsIGkpLAotKwkJCSAgICAgICAgICAgIG5tX2lwNF9jb25maWdfZ2V0X25ldmVyX2RlZmF1bHQgKGNvbmZpZykpOwotKwkJfQotKwl9IGVsc2UgewotKwkJbiA9IG5tX2lwNF9jb25maWdfZ2V0X251bV9kb21haW5zIChjb25maWcpOwotKwkJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotKwkJCWFkZF9kb21haW4gKGRvbWFpbnMsIG5tX2lwNF9jb25maWdfZ2V0X2RvbWFpbiAoY29uZmlnLCBpKSwKLSsJCQkgICAgICAgICAgICBubV9pcDRfY29uZmlnX2dldF9uZXZlcl9kZWZhdWx0IChjb25maWcpKTsKLSsJCX0KLSsJfQotK30KLSsKLStzdGF0aWMgdm9pZAotK2ZyZWVfcGVuZGluZ191cGRhdGVzIChOTURuc1N5c3RlbWRSZXNvbHZlZCAqc2VsZikKLSt7Ci0rCU5NRG5zU3lzdGVtZFJlc29sdmVkUHJpdmF0ZSAqcHJpdiA9IE5NX0ROU19TWVNURU1EX1JFU09MVkVEX0dFVF9QUklWQVRFIChzZWxmKTsKLSsJR1ZhcmlhbnQgKnY7Ci0rCi0rCXdoaWxlICgodiA9IGdfcXVldWVfcG9wX2hlYWQgKCZwcml2LT5kbnNfdXBkYXRlcykpICE9IE5VTEwpCi0rCQlnX3ZhcmlhbnRfdW5yZWYgKHYpOwotKwotKwl3aGlsZSAoKHYgPSBnX3F1ZXVlX3BvcF9oZWFkICgmcHJpdi0+ZG9tYWluX3VwZGF0ZXMpKSAhPSBOVUxMKQotKwkJZ192YXJpYW50X3VucmVmICh2KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStwcmVwYXJlX29uZV9pbnRlcmZhY2UgKE5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmLCBJbnRlcmZhY2VDb25maWcgKmljKQotK3sKLSsJTk1EbnNTeXN0ZW1kUmVzb2x2ZWRQcml2YXRlICpwcml2ID0gTk1fRE5TX1NZU1RFTURfUkVTT0xWRURfR0VUX1BSSVZBVEUgKHNlbGYpOwotKwlHVmFyaWFudEJ1aWxkZXIgZG5zLCBkb21haW5zOwotKwlHTGlzdCAqbDsKLSsKLSsJZ192YXJpYW50X2J1aWxkZXJfaW5pdCAoJmRucywgR19WQVJJQU5UX1RZUEUgKCIoaWEoaWF5KSkiKSk7Ci0rCWdfdmFyaWFudF9idWlsZGVyX2FkZCAoJmRucywgImkiLCBpYy0+aWZpbmRleCk7Ci0rCWdfdmFyaWFudF9idWlsZGVyX29wZW4gKCZkbnMsIEdfVkFSSUFOVF9UWVBFICgiYShpYXkpIikpOwotKwotKwlnX3ZhcmlhbnRfYnVpbGRlcl9pbml0ICgmZG9tYWlucywgR19WQVJJQU5UX1RZUEUgKCIoaWEoc2IpKSIpKTsKLSsJZ192YXJpYW50X2J1aWxkZXJfYWRkICgmZG9tYWlucywgImkiLCBpYy0+aWZpbmRleCk7Ci0rCWdfdmFyaWFudF9idWlsZGVyX29wZW4gKCZkb21haW5zLCBHX1ZBUklBTlRfVFlQRSAoImEoc2IpIikpOwotKwotKwlmb3IgKGwgPSBpYy0+Y29uZmlncyA7IGwgIT0gTlVMTCA7IGwgPSBnX2xpc3RfbmV4dCAobCkpIHsKLSsJCWlmIChOTV9JU19JUDRfQ09ORklHIChsLT5kYXRhKSkKLSsJCQl1cGRhdGVfYWRkX2lwNF9jb25maWcgKHNlbGYsICZkbnMsICZkb21haW5zLCBsLT5kYXRhKTsKLSsJCWVsc2UgaWYgKE5NX0lTX0lQNl9DT05GSUcgKGwtPmRhdGEpKQotKwkJCXVwZGF0ZV9hZGRfaXA2X2NvbmZpZyAoc2VsZiwgJmRucywgJmRvbWFpbnMsIGwtPmRhdGEpOwotKwkJZWxzZQotKwkJCWdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotKwl9Ci0rCWdfdmFyaWFudF9idWlsZGVyX2Nsb3NlICgmZG5zKTsKLSsJZ192YXJpYW50X2J1aWxkZXJfY2xvc2UgKCZkb21haW5zKTsKLSsKLSsJZ19xdWV1ZV9wdXNoX3RhaWwgKCZwcml2LT5kbnNfdXBkYXRlcywKLSsJICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9yZWZfc2luayAoZ192YXJpYW50X2J1aWxkZXJfZW5kICgmZG5zKSkpOwotKwlnX3F1ZXVlX3B1c2hfdGFpbCAoJnByaXYtPmRvbWFpbl91cGRhdGVzLAotKwkgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X3JlZl9zaW5rIChnX3ZhcmlhbnRfYnVpbGRlcl9lbmQgKCZkb21haW5zKSkpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3NlbmRfdXBkYXRlcyAoTk1EbnNTeXN0ZW1kUmVzb2x2ZWQgKnNlbGYpCi0rewotKwlOTURuc1N5c3RlbWRSZXNvbHZlZFByaXZhdGUgKnByaXYgPSBOTV9ETlNfU1lTVEVNRF9SRVNPTFZFRF9HRVRfUFJJVkFURSAoc2VsZik7Ci0rCUdWYXJpYW50ICp2OwotKwotKwlubV9jbGVhcl9nX2NhbmNlbGxhYmxlICgmcHJpdi0+dXBkYXRlX2NhbmNlbGxhYmxlKTsKLSsKLSsJaWYgKCFwcml2LT5yZXNvbHZlKQotKwkJcmV0dXJuOwotKwotKwlwcml2LT51cGRhdGVfY2FuY2VsbGFibGUgPSBnX2NhbmNlbGxhYmxlX25ldyAoKTsKLSsKLSsJd2hpbGUgKCh2ID0gZ19xdWV1ZV9wb3BfaGVhZCAoJnByaXYtPmRuc191cGRhdGVzKSkgIT0gTlVMTCkgewotKwkJZ19kYnVzX3Byb3h5X2NhbGwgKHByaXYtPnJlc29sdmUsICJTZXRMaW5rRE5TIiwgdiwKLSsJCSAgICAgICAgICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAotKwkJICAgICAgICAgICAgICAgICAgIC0xLCBwcml2LT51cGRhdGVfY2FuY2VsbGFibGUsIGNhbGxfZG9uZSwgc2VsZik7Ci0rCQlnX3ZhcmlhbnRfdW5yZWYgKHYpOwotKwl9Ci0rCi0rCXdoaWxlICgodiA9IGdfcXVldWVfcG9wX2hlYWQgKCZwcml2LT5kb21haW5fdXBkYXRlcykpICE9IE5VTEwpIHsKLSsJCWdfZGJ1c19wcm94eV9jYWxsIChwcml2LT5yZXNvbHZlLCAiU2V0TGlua0RvbWFpbnMiLCB2LAotKwkJICAgICAgICAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCi0rCQkgICAgICAgICAgICAgICAgICAgLTEsIHByaXYtPnVwZGF0ZV9jYW5jZWxsYWJsZSwgY2FsbF9kb25lLCBzZWxmKTsKLSsJCWdfdmFyaWFudF91bnJlZiAodik7Ci0rCX0KLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rdXBkYXRlIChOTURuc1BsdWdpbiAqcGx1Z2luLAotKyAgICAgICAgY29uc3QgTk1EbnNJUENvbmZpZ0RhdGEgKipjb25maWdzLAotKyAgICAgICAgY29uc3QgTk1HbG9iYWxEbnNDb25maWcgKmdsb2JhbF9jb25maWcsCi0rICAgICAgICBjb25zdCBjaGFyICpob3N0bmFtZSkKLSt7Ci0rCU5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmID0gTk1fRE5TX1NZU1RFTURfUkVTT0xWRUQgKHBsdWdpbik7Ci0rCUdBcnJheSAqaW50ZXJmYWNlcyA9IGdfYXJyYXlfbmV3IChUUlVFLCBUUlVFLCBzaXplb2YgKEludGVyZmFjZUNvbmZpZykpOwotKwljb25zdCBOTURuc0lQQ29uZmlnRGF0YSAqKmM7Ci0rCWludCBpOwotKwotKwlmb3IgKGMgPSBjb25maWdzOyAqYyAhPSBOVUxMOyBjKyspCi0rCQlhZGRfaW50ZXJmYWNlX2NvbmZpZ3VyYXRpb24gKHNlbGYsIGludGVyZmFjZXMsICpjKTsKLSsKLSsJZnJlZV9wZW5kaW5nX3VwZGF0ZXMgKHNlbGYpOwotKwotKwlmb3IgKGkgPSAwOyBpIDwgaW50ZXJmYWNlcy0+bGVuOyBpKyspIHsKLSsJCUludGVyZmFjZUNvbmZpZyAqaWMgPSAmZ19hcnJheV9pbmRleCAoaW50ZXJmYWNlcywgSW50ZXJmYWNlQ29uZmlnLCBpKTsKLSsKLSsJCXByZXBhcmVfb25lX2ludGVyZmFjZSAoc2VsZiwgaWMpOwotKwkJZ19saXN0X2ZyZWUgKGljLT5jb25maWdzKTsKLSsJfQotKwotKwlnX2FycmF5X2ZyZWUgKGludGVyZmFjZXMsIFRSVUUpOwotKwotKwlzZW5kX3VwZGF0ZXMgKHNlbGYpOwotKwotKwlyZXR1cm4gVFJVRTsKLSt9Ci0rCi0rLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0rCi0rc3RhdGljIGdib29sZWFuCi0raXNfY2FjaGluZyAoTk1EbnNQbHVnaW4gKnBsdWdpbikKLSt7Ci0rCXJldHVybiBUUlVFOwotK30KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rZ2V0X25hbWUgKE5NRG5zUGx1Z2luICpwbHVnaW4pCi0rewotKwlyZXR1cm4gInN5c3RlbWQtcmVzb2x2ZWQiOwotK30KLSsKLSsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSsKLStOTURuc1BsdWdpbiAqCi0rbm1fZG5zX3N5c3RlbWRfcmVzb2x2ZWRfbmV3ICh2b2lkKQotK3sKLSsJcmV0dXJuIGdfb2JqZWN0X25ldyAoTk1fVFlQRV9ETlNfU1lTVEVNRF9SRVNPTFZFRCwgTlVMTCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rcmVzb2x2ZWRfcHJveHlfY3JlYXRlZCAoR09iamVjdCAqc291cmNlLCBHQXN5bmNSZXN1bHQgKnIsIGdwb2ludGVyIHVzZXJfZGF0YSkKLSt7Ci0rCU5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmID0gKE5NRG5zU3lzdGVtZFJlc29sdmVkICopIHVzZXJfZGF0YTsKLSsJTk1EbnNTeXN0ZW1kUmVzb2x2ZWRQcml2YXRlICpwcml2OwotKwlnc19mcmVlX2Vycm9yIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotKwlHREJ1c1Byb3h5ICpyZXNvbHZlOwotKwotKwlyZXNvbHZlID0gZ19kYnVzX3Byb3h5X25ld19maW5pc2ggKHIsICZlcnJvcik7Ci0rCWlmICggICAhcmVzb2x2ZQotKwkgICAgJiYgZ19lcnJvcl9tYXRjaGVzIChlcnJvciwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQpKQotKwkJcmV0dXJuOwotKwotKwlwcml2ID0gTk1fRE5TX1NZU1RFTURfUkVTT0xWRURfR0VUX1BSSVZBVEUgKHNlbGYpOwotKwlnX2NsZWFyX29iamVjdCAoJnByaXYtPmluaXRfY2FuY2VsbGFibGUpOwotKwlpZiAoIXJlc29sdmUpIHsKLSsJCV9MT0dXICgiZmFpbGVkIHRvIGNvbm5lY3QgdG8gcmVzb2x2ZWQgdmlhIERCdXM6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotKwkJZ19zaWduYWxfZW1pdF9ieV9uYW1lIChzZWxmLCBOTV9ETlNfUExVR0lOX0ZBSUxFRCk7Ci0rCQlyZXR1cm47Ci0rCX0KLSsKLSsJcHJpdi0+cmVzb2x2ZSA9IHJlc29sdmU7Ci0rCXNlbmRfdXBkYXRlcyAoc2VsZik7Ci0rfQotKwotKwotK3N0YXRpYyB2b2lkCi0rbm1fZG5zX3N5c3RlbWRfcmVzb2x2ZWRfaW5pdCAoTk1EbnNTeXN0ZW1kUmVzb2x2ZWQgKnNlbGYpCi0rewotKwlOTURuc1N5c3RlbWRSZXNvbHZlZFByaXZhdGUgKnByaXYgPSBOTV9ETlNfU1lTVEVNRF9SRVNPTFZFRF9HRVRfUFJJVkFURSAoc2VsZik7Ci0rCU5NQnVzTWFuYWdlciAqZGJ1c19tZ3I7Ci0rCUdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbjsKLSsKLSsJZ19xdWV1ZV9pbml0ICgmcHJpdi0+ZG5zX3VwZGF0ZXMpOwotKwlnX3F1ZXVlX2luaXQgKCZwcml2LT5kb21haW5fdXBkYXRlcyk7Ci0rCi0rCWRidXNfbWdyID0gbm1fYnVzX21hbmFnZXJfZ2V0ICgpOwotKwlnX3JldHVybl9pZl9mYWlsIChkYnVzX21ncik7Ci0rCi0rCWNvbm5lY3Rpb24gPSBubV9idXNfbWFuYWdlcl9nZXRfY29ubmVjdGlvbiAoZGJ1c19tZ3IpOwotKwlnX3JldHVybl9pZl9mYWlsIChjb25uZWN0aW9uKTsKLSsKLSsJcHJpdi0+aW5pdF9jYW5jZWxsYWJsZSA9IGdfY2FuY2VsbGFibGVfbmV3ICgpOwotKwlnX2RidXNfcHJveHlfbmV3IChjb25uZWN0aW9uLAotKwkgICAgICAgICAgICAgICAgICBHX0RCVVNfUFJPWFlfRkxBR1NfRE9fTk9UX0xPQURfUFJPUEVSVElFUyB8Ci0rCSAgICAgICAgICAgICAgICAgIEdfREJVU19QUk9YWV9GTEFHU19ET19OT1RfQ09OTkVDVF9TSUdOQUxTLAotKwkgICAgICAgICAgICAgICAgICBOVUxMLAotKwkgICAgICAgICAgICAgICAgICBTWVNURU1EX1JFU09MVkVEX0RCVVNfU0VSVklDRSwKLSsJICAgICAgICAgICAgICAgICAgU1lTVEVNRF9SRVNPTFZFRF9EQlVTX1BBVEgsCi0rCSAgICAgICAgICAgICAgICAgIFNZU1RFTURfUkVTT0xWRURfREJVU19TRVJWSUNFICIuTWFuYWdlciIsCi0rCSAgICAgICAgICAgICAgICAgIHByaXYtPmluaXRfY2FuY2VsbGFibGUsCi0rCSAgICAgICAgICAgICAgICAgIHJlc29sdmVkX3Byb3h5X2NyZWF0ZWQsCi0rCSAgICAgICAgICAgICAgICAgIHNlbGYpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2Rpc3Bvc2UgKEdPYmplY3QgKm9iamVjdCkKLSt7Ci0rCU5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmID0gTk1fRE5TX1NZU1RFTURfUkVTT0xWRUQgKG9iamVjdCk7Ci0rCU5NRG5zU3lzdGVtZFJlc29sdmVkUHJpdmF0ZSAqcHJpdiA9IE5NX0ROU19TWVNURU1EX1JFU09MVkVEX0dFVF9QUklWQVRFIChzZWxmKTsKLSsKLSsJZnJlZV9wZW5kaW5nX3VwZGF0ZXMgKHNlbGYpOwotKwlnX2NsZWFyX29iamVjdCAoJnByaXYtPnJlc29sdmUpOwotKwlubV9jbGVhcl9nX2NhbmNlbGxhYmxlICgmcHJpdi0+aW5pdF9jYW5jZWxsYWJsZSk7Ci0rCW5tX2NsZWFyX2dfY2FuY2VsbGFibGUgKCZwcml2LT51cGRhdGVfY2FuY2VsbGFibGUpOwotKwotKwlHX09CSkVDVF9DTEFTUyAobm1fZG5zX3N5c3RlbWRfcmVzb2x2ZWRfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZSAob2JqZWN0KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStubV9kbnNfc3lzdGVtZF9yZXNvbHZlZF9jbGFzc19pbml0IChOTURuc1N5c3RlbWRSZXNvbHZlZENsYXNzICpkbnNfY2xhc3MpCi0rewotKwlOTURuc1BsdWdpbkNsYXNzICpwbHVnaW5fY2xhc3MgPSBOTV9ETlNfUExVR0lOX0NMQVNTIChkbnNfY2xhc3MpOwotKwlHT2JqZWN0Q2xhc3MgKm9iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChkbnNfY2xhc3MpOwotKwotKwlnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUgKGRuc19jbGFzcywgc2l6ZW9mIChOTURuc1N5c3RlbWRSZXNvbHZlZFByaXZhdGUpKTsKLSsKLSsJb2JqZWN0X2NsYXNzLT5kaXNwb3NlID0gZGlzcG9zZTsKLSsKLSsJcGx1Z2luX2NsYXNzLT5pc19jYWNoaW5nID0gaXNfY2FjaGluZzsKLSsJcGx1Z2luX2NsYXNzLT51cGRhdGUgPSB1cGRhdGU7Ci0rCXBsdWdpbl9jbGFzcy0+Z2V0X25hbWUgPSBnZXRfbmFtZTsKLSt9Ci0rCi1kaWZmIC0tZ2l0IGEvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmggYi9zcmMvZG5zLW1hbmFnZXIvbm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjQ1YzY0YjMKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtc3lzdGVtZC1yZXNvbHZlZC5oCi1AQCAtMCwwICsxLDQ1IEBACi0rLyogLSotIE1vZGU6IEM7IHRhYi13aWR0aDogNDsgaW5kZW50LXRhYnMtbW9kZTogdDsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotICovCi0rLyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0rICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLSsgKgotKyAqIENvcHlyaWdodCAoQykgMjAxMCBSZWQgSGF0LCBJbmMuCi0rICogQ29weXJpZ2h0IChDKSAyMDE2IFNqb2VyZCBTaW1vbnMgPHNqb2VyZEBsdW9uLm5ldD4KLSsgKi8KLSsKLSsjaWZuZGVmIF9fTkVUV09SS01BTkFHRVJfRE5TX1NZU1RFTURfUkVTT0xWRURfSF9fCi0rI2RlZmluZSBfX05FVFdPUktNQU5BR0VSX0ROU19TWVNURU1EX1JFU09MVkVEX0hfXwotKwotKyNpbmNsdWRlICJubS1kbnMtcGx1Z2luLmgiCi0rCi0rI2RlZmluZSBOTV9UWVBFX0ROU19TWVNURU1EX1JFU09MVkVEICAgICAgICAgICAgKG5tX2Ruc19zeXN0ZW1kX3Jlc29sdmVkX2dldF90eXBlICgpKQotKyNkZWZpbmUgTk1fRE5TX1NZU1RFTURfUkVTT0xWRUQob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIE5NX1RZUEVfRE5TX1NZU1RFTURfUkVTT0xWRUQsIE5NRG5zU3lzdGVtZFJlc29sdmVkKSkKLSsjZGVmaW5lIE5NX0ROU19TWVNURU1EX1JFU09MVkVEX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIE5NX1RZUEVfRE5TX1NZU1RFTURfUkVTT0xWRUQsIE5NRG5zU3lzdGVtZFJlc29sdmVkQ2xhc3MpKQotKyNkZWZpbmUgTk1fSVNfRE5TX1NZU1RFTURfUkVTT0xWRUQob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIE5NX1RZUEVfRE5TX1NZU1RFTURfUkVTT0xWRUQpKQotKyNkZWZpbmUgTk1fSVNfRE5TX1NZU1RFTURfUkVTT0xWRURfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgTk1fVFlQRV9ETlNfU1lTVEVNRF9SRVNPTFZFRCkpCi0rI2RlZmluZSBOTV9ETlNfU1lTVEVNRF9SRVNPTFZFRF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBOTV9UWVBFX0ROU19TWVNURU1EX1JFU09MVkVELCBOTURuc1N5c3RlbWRSZXNvbHZlZENsYXNzKSkKLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rCU5NRG5zUGx1Z2luIHBhcmVudDsKLSt9IE5NRG5zU3lzdGVtZFJlc29sdmVkOwotKwotK3R5cGVkZWYgc3RydWN0IHsKLSsJTk1EbnNQbHVnaW5DbGFzcyBwYXJlbnQ7Ci0rfSBOTURuc1N5c3RlbWRSZXNvbHZlZENsYXNzOwotKwotK0dUeXBlIG5tX2Ruc19zeXN0ZW1kX3Jlc29sdmVkX2dldF90eXBlICh2b2lkKTsKLSsKLStOTURuc1BsdWdpbiAqbm1fZG5zX3N5c3RlbWRfcmVzb2x2ZWRfbmV3ICh2b2lkKTsKLSsKLSsjZW5kaWYgLyogX19ORVRXT1JLTUFOQUdFUl9ETlNfU1lTVEVNRF9SRVNPTFZFRF9IX18gKi8KLSsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtZG5zLXJlc29sdmVkLWFsc28tY2hlY2stZm9yLWV0Yy1yZXNvbHYtY29uZi5zeXN0ZW1kLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1kbnMtcmVzb2x2ZWQtYWxzby1jaGVjay1mb3ItZXRjLXJlc29sdi1jb25mLnN5c3RlbWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhN2U0YTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1kbnMtcmVzb2x2ZWQtYWxzby1jaGVjay1mb3ItZXRjLXJlc29sdi1jb25mLnN5c3RlbWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDZmNzk5ZjFmMGU2OGNjN2JmODljMGE1NmFlYzVlY2Y0NjkzNzYxOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSaWNhcmRvIFNhbHZldGkgPHJzYWx2ZXRpQHJzYWx2ZXRpLm5ldD4KLURhdGU6IFRodSwgMTUgSnVuIDIwMTcgMTA6MDI6MzggLTAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZG5zL3Jlc29sdmVkOiBhbHNvIGNoZWNrIGZvciAvZXRjL3Jlc29sdi1jb25mLnN5c3RlbWQKLQotT0Ugc3BlY2lmaWMgcmVzb2x2LmNvbmYgcGF0aCwgc28gaXQgY2FuIGJlIGVuYWJsZWQgYnkgZGVmYXVsdCBpZiBhdmFpbGFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFNhbHZldGkgPHJzYWx2ZXRpQHJzYWx2ZXRpLm5ldD4KLS0tLQotIHNyYy9kbnMtbWFuYWdlci9ubS1kbnMtbWFuYWdlci5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvZG5zLW1hbmFnZXIvbm0tZG5zLW1hbmFnZXIuYyBiL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtbWFuYWdlci5jCi1pbmRleCBjMWQyYmY3Li5kNzBkNGI0IDEwMDY0NAotLS0tIGEvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMKLSsrKyBiL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtbWFuYWdlci5jCi1AQCAtMTU5Niw2ICsxNTk2LDcgQEAgX3Jlc29sdmNvbmZfcmVzb2x2ZWRfbWFuYWdlZCAodm9pZCkKLSAJCSIvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiIsCi0gCQkiL2xpYi9zeXN0ZW1kL3Jlc29sdi5jb25mIiwKLSAJCSIvdXNyL2xpYi9zeXN0ZW1kL3Jlc29sdi5jb25mIiwKLSsJCSIvZXRjL3Jlc29sdi1jb25mLnN5c3RlbWQiLAotIAl9OwotIAlHRmlsZSAqZjsKLSAJR0ZpbGVJbmZvICppbmZvOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWRvbi10LXRyeS10by1ydW4tc2Jpbi1kaGNsaWVudC10by1nZXQtdGhlLXZlcnNpb24tbnUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWRvbi10LXRyeS10by1ydW4tc2Jpbi1kaGNsaWVudC10by1nZXQtdGhlLXZlcnNpb24tbnUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjOWVkOTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1kb24tdC10cnktdG8tcnVuLXNiaW4tZGhjbGllbnQtdG8tZ2V0LXRoZS12ZXJzaW9uLW51LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSA3ZGQ0MGRiNjYwNmMzYjM1NTkzNjVhMDM5NDRjYjk5YWVlNWNlYWJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVGh1LCA0IEFwciAyMDEzIDEyOjU3OjU4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGRvbid0IHRyeSB0byBydW4gL3NiaW4vZGhjbGllbnQgdG8gZ2V0IHRoZSB2ZXJzaW9uIG51bWJlciwKLSB0aGlzIGJyZWFrIGNyb3NzLWNvbXBpbGluZwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2J1aWxkIHN5c3RlbSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgICAgNiAtLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggY2M2NmU5Yi4uNzE2MzI4NyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNDg4LDEyICs0ODgsNiBAQCBBU19JRihbdGVzdCAteiAiJHdpdGhfZGhjcGNkIl0sIHdpdGhfZGhjcGNkPXllcykKLSAjIFNlYXJjaCBhbmQgY2hlY2sgdGhlIGV4ZWN1dGFibGVzCi0gaWYgdGVzdCAiJHdpdGhfZGhjbGllbnQiID0gInllcyI7IHRoZW4KLSAJQUNfUEFUSF9QUk9HUyh3aXRoX2RoY2xpZW50LCBkaGNsaWVudCwgbm8sIC9zYmluOi91c3Ivc2JpbjovdXNyL2xvY2FsL3NiaW4pCi0tCWlmIHRlc3QgIiR3aXRoX2RoY2xpZW50IiAhPSAibm8iOyB0aGVuCi0tCQlpZiAhICR3aXRoX2RoY2xpZW50IC0tdmVyc2lvbiAyPiYxIHwgZ3JlcCAtcSAiXmlzYy1kaGNsaWVudC00XC4iOyB0aGVuCi0tCQkJQUNfTVNHX1dBUk4oW0Nhbm5vdCB1c2UgZGhjbGllbnQsIHZlcnNpb24gNC54IGlzIHJlcXVpcmVkXSkKLS0JCQl3aXRoX2RoY2xpZW50PW5vCi0tCQlmaQotLQlmaQotIGZpCi0gaWYgdGVzdCAiJHdpdGhfZGhjcGNkIiA9ICJ5ZXMiOyB0aGVuCi0gCUFDX1BBVEhfUFJPR1Mod2l0aF9kaGNwY2QsIGRoY3BjZCwgbm8sIC9zYmluOi91c3Ivc2JpbjovdXNyL2xvY2FsL3NiaW4pCi0tLSAKLTEuNy42LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxOTQ0MjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLXNkLWxsZHAuaC1SZW1vdmUtbmV0LWV0aGVybmV0Lmgtc2VlbXMtdG8tYmUtb3Zlci1zcGUucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSAxOGY3MWMxYjQ4NzMwYjg2MDI4MjY1MTdmMmI1YjA4ODI4M2FlOTQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTY6NDg6MDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA1LzddIHNkLWxsZHAuaDogUmVtb3ZlIG5ldC9ldGhlcm5ldC5oIHNlZW1zIHRvIGJlIG92ZXIKKyBzcGVjaWZpZWQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9zeXN0ZW1kL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtbGxkcC5jIHwgMSArCisgc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtbGxkcC5oICAgICAgICAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1kL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtbGxkcC5jIGIvc3JjL3N5c3RlbWQvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1sbGRwLmMKK2luZGV4IDMxZTI0NDguLjc3MjFjYzIgMTAwNjQ0CistLS0gYS9zcmMvc3lzdGVtZC9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWxsZHAuYworKysrIGIvc3JjL3N5c3RlbWQvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1sbGRwLmMKK0BAIC0yMSw2ICsyMSw3IEBACisgI2luY2x1ZGUgIm5tLXNkLWFkYXB0LmgiCisgCisgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorKyNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KKyAjaW5jbHVkZSA8bGludXgvc29ja2lvcy5oPgorIAorICNpbmNsdWRlICJzZC1sbGRwLmgiCitkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtbGxkcC5oIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtbGxkcC5oCitpbmRleCAzZjM1ZWViLi42MWIwZTQ1IDEwMDY0NAorLS0tIGEvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtbGxkcC5oCisrKysgYi9zcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1sbGRwLmgKK0BAIC0yMiw3ICsyMiw3IEBACisgKioqLworIAorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorLSNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KKysvLyNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisgI2luY2x1ZGUgInNkLWV2ZW50LmgiCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLXN5c3RlbWQteGxvY2FsZS5oLWlzLWRyb3BwZWQtYnktbmV3ZXItZ2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLXN5c3RlbWQteGxvY2FsZS5oLWlzLWRyb3BwZWQtYnktbmV3ZXItZ2xpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMzRlMmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1zeXN0ZW1kLXhsb2NhbGUuaC1pcy1kcm9wcGVkLWJ5LW5ld2VyLWdsaWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSBhOWJmZTZmMjAyOWQ3NWNhZjI4ZmNkZjNlNzQwODQzY2Y2MzU5NjE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMDc6MzE6MjUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIHN5c3RlbWQ6IHhsb2NhbGUuaCBpcyBkcm9wcGVkIGJ5IG5ld2VyIGdsaWJjCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvc3lzdGVtZC9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jIHwgNCAtLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jIGIvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYwotaW5kZXggOWMyMWU1YS4uZGQ5NWQxZiAxMDA2NDQKLS0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKLSsrKyBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKLUBAIC0yNSwxMSArMjUsNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2lmZGVmIF9fR0xJQkNfXwotLSNpbmNsdWRlIDx4bG9jYWxlLmg+Ci0tI2Vsc2UKLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0tI2VuZGlmCi0gI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKLSAjaW5jbHVkZSAiZXh0cmFjdC13b3JkLmgiCi0gI2luY2x1ZGUgIm1hY3JvLmgiCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLUZpeC1ubS12ZXJzaW9uLW1hY3JvLWluY2x1ZGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1GaXgtbm0tdmVyc2lvbi1tYWNyby1pbmNsdWRlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE1N2M4My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLUZpeC1ubS12ZXJzaW9uLW1hY3JvLWluY2x1ZGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotRnJvbSA3Mjc0YmJhZGQzOThhNjliOGJhYmY0NzQzMWY4MGQzNWUwMjI4YzQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWRyaWFuIEZyZWlob2ZlciA8YWRyaWFuLmZyZWlob2ZlckBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE4IEphbiAyMDE2IDA4OjUzOjI2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBubS12ZXJzaW9uLW1hY3JvIGluY2x1ZGVzCi0KLW5tLXZlcnNpb24tbWFjcm9zLmggY2Fubm90IGJlIGZvdW5kIHNpbmNlIGluY2x1ZGUgZGlyZWN0aXZlIGhhcwotYmVlbiBjaGFuZ2VkIGZyb20gIiB0byA8LiBUaGlzIGJyZWFrcyBmb3IgZXhhbXBsZSBnbm9tZS1wYW5lbAotYnVpbGQ6Ci0vdXNyL2luY2x1ZGUvTmV0d29ya01hbmFnZXIvTmV0d29ya01hbmFnZXIuaDozMTozMToKLWZhdGFsIGVycm9yOiBubS12ZXJzaW9uLW1hY3Jvcy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LgotLS0tCi0gbGlibm0tY29yZS9ubS12ZXJzaW9uLmggICAgIHwgMiArLQotIGxpYm5tLXV0aWwvTmV0d29ya01hbmFnZXIuaCB8IDIgKy0KLSBsaWJubS11dGlsL25tLXZlcnNpb24uaCAgICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJubS1jb3JlL25tLXZlcnNpb24uaCBiL2xpYm5tLWNvcmUvbm0tdmVyc2lvbi5oCi1pbmRleCA3MzAzMzBhLi5kNzUxYmMxIDEwMDY0NAotLS0tIGEvbGlibm0tY29yZS9ubS12ZXJzaW9uLmgKLSsrKyBiL2xpYm5tLWNvcmUvbm0tdmVyc2lvbi5oCi1AQCAtMjMsNyArMjMsNyBAQAotIAotICNpbmNsdWRlIDxnbGliLmg+Ci0gCi0tI2luY2x1ZGUgPG5tLXZlcnNpb24tbWFjcm9zLmg+Ci0rI2luY2x1ZGUgIm5tLXZlcnNpb24tbWFjcm9zLmgiCi0gCi0gLyogRGVwcmVjYXRpb24gLyBBdmFpbGFiaWxpdHkgbWFjcm9zICovCi0gCi1kaWZmIC0tZ2l0IGEvbGlibm0tdXRpbC9OZXR3b3JrTWFuYWdlci5oIGIvbGlibm0tdXRpbC9OZXR3b3JrTWFuYWdlci5oCi1pbmRleCBkODNlNGFiLi4zYTk2NGZjIDEwMDY0NAotLS0tIGEvbGlibm0tdXRpbC9OZXR3b3JrTWFuYWdlci5oCi0rKysgYi9saWJubS11dGlsL05ldHdvcmtNYW5hZ2VyLmgKLUBAIC0yOCw3ICsyOCw3IEBACi0gCi0gLyogVGhpcyBoZWFkZXIgbXVzdCBub3QgaW5jbHVkZSBnbGliIG9yIGxpYm5tLiAqLwotIAotLSNpbmNsdWRlIDxubS12ZXJzaW9uLW1hY3Jvcy5oPgotKyNpbmNsdWRlICJubS12ZXJzaW9uLW1hY3Jvcy5oIgotIAotIC8qCi0gICogZGJ1cyBzZXJ2aWNlcyBkZXRhaWxzCi1kaWZmIC0tZ2l0IGEvbGlibm0tdXRpbC9ubS12ZXJzaW9uLmggYi9saWJubS11dGlsL25tLXZlcnNpb24uaAotaW5kZXggNjM4OTVkZC4uNDExMDFhNCAxMDA2NDQKLS0tLSBhL2xpYm5tLXV0aWwvbm0tdmVyc2lvbi5oCi0rKysgYi9saWJubS11dGlsL25tLXZlcnNpb24uaAotQEAgLTIzLDcgKzIzLDcgQEAKLSAKLSAjaW5jbHVkZSA8Z2xpYi5oPgotIAotLSNpbmNsdWRlIDxubS12ZXJzaW9uLW1hY3Jvcy5oPgotKyNpbmNsdWRlICJubS12ZXJzaW9uLW1hY3Jvcy5oIgotIAotIC8qIERlcHJlY2F0aW9uIC8gQXZhaWxhYmlsaXR5IG1hY3JvcyAqLwotIAotLS0gCi0yLjUuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLUZpeGVkLWNvbmZpZ3VyZS5hYy1GaXgtcGtnY29uZmlnLXN5c3Jvb3QtbG9jYXRpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1GaXhlZC1jb25maWd1cmUuYWMtRml4LXBrZ2NvbmZpZy1zeXNyb290LWxvY2F0aW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODg0OGQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1GaXhlZC1jb25maWd1cmUuYWMtRml4LXBrZ2NvbmZpZy1zeXNyb290LWxvY2F0aW9ucy5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIDU4M2YwNDQ4ZmI3ZTlhYmEyYjQxMGMwNmVlYzZmNDIwYjQxYTZhMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYWJsbyBTYWF2ZWRyYSA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CitEYXRlOiBUdWUsIDEzIE1hciAyMDE4IDE3OjM2OjIwICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNy83XSBGaXhlZCBjb25maWd1cmUuYWM6IEZpeCBwa2djb25maWcgc3lzcm9vdCBsb2NhdGlvbnMKKworLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA1MWU1ZWI2Li5jOWQzZTU2IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02NjksNyArNjY5LDcgQEAgZWxzZQorIAlBQ19ERUZJTkUoV0lUSF9KQU5TU09OLCAxLCBbRGVmaW5lIGlmIEpBTlNTT04gaXMgZW5hYmxlZF0pCisgCisgCUFDX0NIRUNLX1RPT0xTKFJFQURFTEYsIFtldS1yZWFkZWxmIHJlYWRlbGZdKQorLQlKQU5TU09OX0xJQkRJUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1saWJkaXIgamFuc3NvbmAKKysJSkFOU1NPTl9MSUJESVI9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWxpYmRpciBqYW5zc29uYAorIAlKQU5TU09OX1NPTkFNRT1gJFJFQURFTEYgLWQgJEpBTlNTT05fTElCRElSL2xpYmphbnNzb24uc28gfHNlZCAtbiAncy8uKlNPTkFNRS4qXFtbXChbXl1dKlwpXV0vXDEvcCdgCisgCisgCWlmIHRlc3QgIiRKQU5TU09OX1NPTkFNRSIgPSAiIjsgdGhlbgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1zb2NrZXQtdXRpbC5oLUluY2x1ZGUtbGludXgtc29ja2lvcy5oLW9uLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLXNvY2tldC11dGlsLmgtSW5jbHVkZS1saW51eC1zb2NraW9zLmgtb24tbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJiYzZlOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLXNvY2tldC11dGlsLmgtSW5jbHVkZS1saW51eC1zb2NraW9zLmgtb24tbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gOThkN2UzYWU1YjE1ZTMwYWYxYmY1ZGQxZDI3OWUxYTc3NGJmMmI4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMxIE1hciAyMDE3IDE2OjA1OjA1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBzb2NrZXQtdXRpbC5oOiBJbmNsdWRlIGxpbnV4L3NvY2tpb3MuaCBvbiBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvc3lzdGVtZC9zcmMvYmFzaWMvc29ja2V0LXV0aWwuaCB8IDYgKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmggYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvc29ja2V0LXV0aWwuaAotaW5kZXggMjUzNmIwOC4uNzZkNjEwNyAxMDA2NDQKLS0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5oCi0rKysgYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvc29ja2V0LXV0aWwuaAotQEAgLTI5LDYgKzI5LDEyIEBACi0gI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KLSAjaW5jbHVkZSA8bGludXgvaWZfcGFja2V0Lmg+Ci0gCi0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLSsvKiBTSU9DR1NUQU1QTlMgZnJvbSBsaW51eC9hc20tZ2VuZXJpYy5oCi0rICogZm9yIHNyYy9zeXN0ZW1kL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtbGxkcC5jICovCi0rI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSAibWFjcm8uaCIKLSAjaW5jbHVkZSAidXRpbC5oIgotIAotLS0gCi0yLjEyLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi11c2VyLWZvcm1hdC1zdHJpbmctaW4tZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi11c2VyLWZvcm1hdC1zdHJpbmctaW4tZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzJiNWMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDItdXNlci1mb3JtYXQtc3RyaW5nLWluLWdfZGJ1c19tZXNzYWdlX25ld19tZXRob2RfZXJyby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLUZyb20gYWRjMDY2OGI4NTQyODlhMTFjZmMyOTU5N2I1NTY2YmExODY5ZDE3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI3IEp1biAyMDE3IDA3OjMyOjA5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSB1c2VyIGZvcm1hdCBzdHJpbmcgaW4gZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvciAoKQotCi1UaGlzIGZpeGVzIGZvcm1hdCBlcnJvcnMgd2l0aCAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL25tLW1hbmFnZXIuYyB8IDYgKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL25tLW1hbmFnZXIuYyBiL3NyYy9ubS1tYW5hZ2VyLmMKLWluZGV4IGMzZDY1Y2QuLmU4MTQ5MTIgMTAwNjQ0Ci0tLS0gYS9zcmMvbm0tbWFuYWdlci5jCi0rKysgYi9zcmMvbm0tbWFuYWdlci5jCi1AQCAtNDg3MSw2ICs0ODcxLDcgQEAgcHJvcF9zZXRfYXV0aF9kb25lX2NiIChOTUF1dGhDaGFpbiAqY2hhaW4sCi0gCWlmIChlcnJvciB8fCAocmVzdWx0ICE9IE5NX0FVVEhfQ0FMTF9SRVNVTFRfWUVTKSkgewotIAkJcmVwbHkgPSBnX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2Vycm9yIChwZmQtPm1lc3NhZ2UsCi0gCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5NX1BFUk1fREVOSUVEX0VSUk9SLAotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLAotIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3JfbWVzc2FnZSA9ICJOb3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIikpOwotIAkJaWYgKGVycm9yKQotIAkJCWVycm9yX21lc3NhZ2UgPSBlcnJvci0+bWVzc2FnZTsKLUBAIC00ODgyLDYgKzQ4ODMsNyBAQCBwcm9wX3NldF9hdXRoX2RvbmVfY2IgKE5NQXV0aENoYWluICpjaGFpbiwKLSAJaWYgKCFvYmplY3QpIHsKLSAJCXJlcGx5ID0gZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvciAocGZkLT5tZXNzYWdlLAotIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLkRCdXMuRXJyb3IuVW5rbm93bk9iamVjdCIsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIsCi0gCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcl9tZXNzYWdlID0gIk9iamVjdCBkb2Vzbid0IGV4aXN0LiIpKTsKLSAJCWdvdG8gZG9uZTsKLSAJfQotQEAgLTQ4OTAsNiArNDg5Miw3IEBAIHByb3Bfc2V0X2F1dGhfZG9uZV9jYiAoTk1BdXRoQ2hhaW4gKmNoYWluLAotIAlpZiAoIW5tX2V4cG9ydGVkX29iamVjdF9nZXRfaW50ZXJmYWNlX2J5X3R5cGUgKG9iamVjdCwgcGZkLT5pbnRlcmZhY2VfdHlwZSkpIHsKLSAJCXJlcGx5ID0gZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvciAocGZkLT5tZXNzYWdlLAotIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLkRCdXMuRXJyb3IuSW52YWxpZEFyZ3MiLAotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLAotIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3JfbWVzc2FnZSA9ICJPYmplY3QgaXMgb2YgdW5leHBlY3RlZCB0eXBlLiIpKTsKLSAJCWdvdG8gZG9uZTsKLSAJfQotQEAgLTQ5MDUsNiArNDkwOCw3IEBAIHByb3Bfc2V0X2F1dGhfZG9uZV9jYiAoTk1BdXRoQ2hhaW4gKmNoYWluLAotIAkJaWYgKGdsb2JhbF9kbnMgJiYgIW5tX2dsb2JhbF9kbnNfY29uZmlnX2lzX2ludGVybmFsIChnbG9iYWxfZG5zKSkgewotIAkJCXJlcGx5ID0gZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvciAocGZkLT5tZXNzYWdlLAotIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk1fUEVSTV9ERU5JRURfRVJST1IsCi0rCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLAotIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yX21lc3NhZ2UgPSAiR2xvYmFsIEROUyBjb25maWd1cmF0aW9uIGFscmVhZHkgc2V0IHZpYSBjb25maWd1cmF0aW9uIGZpbGUiKSk7Ci0gCQkJZ290byBkb25lOwotIAkJfQotQEAgLTQ5NDksNiArNDk1Myw3IEBAIGRvX3NldF9wcm9wZXJ0eV9jaGVjayAoZ3BvaW50ZXIgdXNlcl9kYXRhKQotIAlpZiAoIXBmZC0+c3ViamVjdCkgewotIAkJcmVwbHkgPSBnX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2Vycm9yIChwZmQtPm1lc3NhZ2UsCi0gCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5NX1BFUk1fREVOSUVEX0VSUk9SLAotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLAotIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3JfbWVzc2FnZSA9ICJDb3VsZCBub3QgZGV0ZXJtaW5lIHJlcXVlc3QgVUlELiIpKTsKLSAJCWdvdG8gb3V0OwotIAl9Ci1AQCAtNDk1OCw2ICs0OTYzLDcgQEAgZG9fc2V0X3Byb3BlcnR5X2NoZWNrIChncG9pbnRlciB1c2VyX2RhdGEpCi0gCWlmICghY2hhaW4pIHsKLSAJCXJlcGx5ID0gZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvciAocGZkLT5tZXNzYWdlLAotIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTV9QRVJNX0RFTklFRF9FUlJPUiwKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiwKLSAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yX21lc3NhZ2UgPSAiQ291bGQgbm90IGF1dGhlbnRpY2F0ZSByZXF1ZXN0LiIpKTsKLSAJCWdvdG8gb3V0OwotIAl9Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAzLURlZmluZS1FVEhfQUxFTi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDMtRGVmaW5lLUVUSF9BTEVOLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzY5MTRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDMtRGVmaW5lLUVUSF9BTEVOLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSAxNmMzZGM3YTQwNzEwMTI0M2QyMDU2ZDJjOTNlNjFkY2UxYTA1MzUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTY6MDg6NDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzVdIERlZmluZSBFVEhfQUxFTgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGlibm0tY29yZS9ubS11dGlscy5oICAgICAgICAgIHwgMSArCi0gc3JjL3BsYXRmb3JtL3dpZmkvd2lmaS11dGlscy5oIHwgMiArKwotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJubS1jb3JlL25tLXV0aWxzLmggYi9saWJubS1jb3JlL25tLXV0aWxzLmgKLWluZGV4IDE1NmNjYWUuLjY4ZTIyMmIgMTAwNjQ0Ci0tLS0gYS9saWJubS1jb3JlL25tLXV0aWxzLmgKLSsrKyBiL2xpYm5tLWNvcmUvbm0tdXRpbHMuaAotQEAgLTI5LDYgKzI5LDcgQEAKLSAKLSAvKiBGb3IgRVRIX0FMRU4gYW5kIElORklOSUJBTkRfQUxFTiAqLwotIC8vI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+Ci0rI2RlZmluZSBFVEhfQUxFTgk2CQkvKiBPY3RldHMgaW4gb25lIGV0aGVybmV0IGFkZHIJICovCi0gI2luY2x1ZGUgPGxpbnV4L2lmX2luZmluaWJhbmQuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotIAotZGlmZiAtLWdpdCBhL3NyYy9wbGF0Zm9ybS93aWZpL3dpZmktdXRpbHMuaCBiL3NyYy9wbGF0Zm9ybS93aWZpL3dpZmktdXRpbHMuaAotaW5kZXggODRmNWNlOS4uMzNhODM4ZCAxMDA2NDQKLS0tLSBhL3NyYy9wbGF0Zm9ybS93aWZpL3dpZmktdXRpbHMuaAotKysrIGIvc3JjL3BsYXRmb3JtL3dpZmkvd2lmaS11dGlscy5oCi1AQCAtMjQsNiArMjQsOCBAQAotIAotIC8vI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgotIAotKyNkZWZpbmUgRVRIX0FMRU4JNgkJLyogT2N0ZXRzIGluIG9uZSBldGhlcm5ldCBhZGRyCSAqLwotKwotICNpbmNsdWRlICJubS1kYnVzLWludGVyZmFjZS5oIgotIAotIHR5cGVkZWYgc3RydWN0IFdpZmlEYXRhIFdpZmlEYXRhOwotLS0gCi0yLjEyLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMy1Eby1ub3QtY3JlYXRlLXNldHRpbmdzLXNldHRpbmdzLXByb3BlcnR5LWRvY3VtZW50YXRpLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMy1Eby1ub3QtY3JlYXRlLXNldHRpbmdzLXNldHRpbmdzLXByb3BlcnR5LWRvY3VtZW50YXRpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNDg1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAzLURvLW5vdC1jcmVhdGUtc2V0dGluZ3Mtc2V0dGluZ3MtcHJvcGVydHktZG9jdW1lbnRhdGkucGF0Y2gKQEAgLTAsMCArMSw3NyBAQAorRnJvbSA0ZjAwMGE0YTE5OTc1ZDZhYmE3MTQyN2U2OTNjZDFlZDA4MGFiZGE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjIgTWFyIDIwMTggMTE6MDg6MzAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGNyZWF0ZSBzZXR0aW5ncyBzZXR0aW5ncy9wcm9wZXJ0eSBkb2N1bWVudGF0aW9uCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0l0IHdhcyB0cmllZCB0byBnZXQgdGhpcyB3b3JrIGJ1dCBnaSAvIEdpclJlcG9zaXRvcnkgY291bGQgbm90IGJlIGZvdW5kIGJ5CitweXRob24uIEFueXdheSBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciB1cyB0byBoYXZlIHRoZSBzZXR0aW5ncy9wcm9wZXJ0eSBkb2NzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gIHwgMTggKystLS0tLS0tLS0tLS0tLS0tCisgY29uZmlndXJlLmFjIHwgIDQgLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IDYzOTkyMWQuLjMxNGE2MWQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC05NjEsOSArOTYxLDcgQEAgZW5kaWYKKyBpZiBIQVZFX0lOVFJPU1BFQ1RJT04KKyAKKyBsaWJubV9ub2luc3RfZGF0YSA9IFwKKy0JbGlibm0vbm0tcHJvcGVydHktZG9jcy54bWwgXAorIAlsaWJubS9ubS1zZXR0aW5ncy1kb2NzLW92ZXJyaWRlcy54bWwgXAorLQlsaWJubS9ubS1zZXR0aW5ncy1kb2NzLnhtbCBcCisgCWxpYm5tL25tLXNldHRpbmdzLWtleWZpbGUtZG9jcy54bWwgXAorIAlsaWJubS9ubS1zZXR0aW5ncy1pZmNmZy1yaC1kb2NzLnhtbAorIAorQEAgLTMzMTcsMjMgKzMzMTUsMTEgQEAgJChjbGllbnRzX2NvbW1vbl9saWJubWNfYmFzZV9sYV9PQkpFQ1RTKTogJChsaWJubV9jb3JlX2xpYl9oX3B1Yl9ta2VudW1zKQorICQoY2xpZW50c19jb21tb25fbGlibm1jX2Jhc2VfbGFfT0JKRUNUUyk6IGNsaWVudHMvY29tbW9uLy5kaXJzdGFtcAorIAorIGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19jID0gY2xpZW50cy9jb21tb24vc2V0dGluZ3MtZG9jcy5jCistaWYgSEFWRV9JTlRST1NQRUNUSU9OCistJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfYyk6IGNsaWVudHMvY29tbW9uL3NldHRpbmdzLWRvY3MueHNsIGxpYm5tL25tLXByb3BlcnR5LWRvY3MueG1sIGNsaWVudHMvY29tbW9uLy5kaXJzdGFtcAorLQkkKEFNX1ZfR0VOKSAkKFhTTFRQUk9DKSAtLW91dHB1dCAkQCAkPCAkKHdvcmQgMiwkXikKKy1ESVNUQ0xFQU5GSUxFUyArPSAkKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19jKQorLWNoZWNrLWxvY2FsLXNldHRpbmdzLWRvY3M6ICQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2MpCistCUBpZiB0ZXN0IC16ICIkJE5NVFNUX05PX0NIRUNLX1NFVFRJTkdTX0RPQ1MiIDsgdGhlbiAgXAorLQkJaWYgISBjbXAgLXMgIiQoc3JjZGlyKS8kKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19jKS5pbiIgIiQoYnVpbGRkaXIpLyQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2MpIiA7IHRoZW4gXAorLQkJCWVjaG8gIlRoZSBnZW5lcmF0ZWQgZmlsZSBcIiQoYnVpbGRkaXIpLyQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2MpXCIgZGlmZmVycyBmcm9tIHRoZSBzb3VyY2UgZmlsZSBcIiQoc3JjZGlyKS8kKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19jKS5pblwiLiBZb3UgcHJvYmFibHkgc2hvdWxkIGNvcHkgdGhlIGdlbmVyYXRlZCBmaWxlIG92ZXIgdG8gdGhlIHNvdXJjZSBmaWxlLiBZb3UgY2FuIHNraXAgdGhpcyB0ZXN0IGJ5IHNldHRpbmcgXCQkTk1UU1RfTk9fQ0hFQ0tfU0VUVElOR1NfRE9DUz15ZXMiOyBcCistCQkJZmFsc2U7IFwKKy0JCWZpO1wKKy0JZmkKKy1jaGVja19sb2NhbCArPSBjaGVjay1sb2NhbC1zZXR0aW5ncy1kb2NzCistZWxzZQorKworICQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2MpOiAkKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19jKS5pbiBjbGllbnRzL2NvbW1vbi8uZGlyc3RhbXAKKyAJJChBTV9WX0dFTikgY3AgIiQoc3JjZGlyKS8kKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19jKS5pbiIgIiQoYnVpbGRkaXIpLyQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2MpIgorIGNoZWNrLWxvY2FsLXNldHRpbmdzLWRvY3M6CistZW5kaWYKKysKKyBFWFRSQV9ESVNUICs9IFwKKyAJJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfYykgXAorIAkkKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19jKS5pbgorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYzlkM2U1Ni4uNDA3MjIyZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTI4NiwxMCArMTI4Niw2IEBAIEdUS19ET0NfQ0hFQ0soMS4wKQorICMgY2hlY2sgaWYgd2UgY2FuIGJ1aWxkIHNldHRpbmcgcHJvcGVydHkgZG9jdW1lbnRhdGlvbgorIGJ1aWxkX2RvY3M9bm8KKyBpZiB0ZXN0IC1uICIkSU5UUk9TUEVDVElPTl9NQUtFRklMRSI7IHRoZW4KKy0JIyBJZiBnLWkgaXMgaW5zdGFsbGVkIHdlIGtub3cgd2UgaGF2ZSBweXRob24sIGJ1dCB3ZSBtaWdodCBub3QgaGF2ZSBweWdvYmplY3QKKy0JaWYgISAiJFBZVEhPTiIgLWMgJ2Zyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR09iamVjdCcgPiYgL2Rldi9udWxsOyB0aGVuCistCQlBQ19NU0dfRVJST1IoWyItLWVuYWJsZS1pbnRyb3NwZWN0aW9uIGFpbXMgdG8gYnVpbGQgdGhlIHNldHRpbmdzIGRvY3VtZW50YXRpb24uIFRoaXMgcmVxdWlyZXMgR09iamVjdCBpbnRyb3NwZWN0aW9uIGZvciBweXRob24gKHB5Z29iamVjdCldKQorLQlmaQorIAorIAlBQ19QQVRIX1BST0coUEVSTCwgcGVybCkKKyAJaWYgdGVzdCAteiAiJFBFUkwiOyB0aGVuCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDA0LURlZmluZS1taXNzaW5nLWZlYXR1cmVzLXRvLWNhdGVyLWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwNC1EZWZpbmUtbWlzc2luZy1mZWF0dXJlcy10by1jYXRlci1mb3ItbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdjOWFlOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDA0LURlZmluZS1taXNzaW5nLWZlYXR1cmVzLXRvLWNhdGVyLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotRnJvbSAyMTUzMTA5ZTYwZTM2MmUwZDA5MjE1ZDUyOWJmMDAxNzZmMzFhM2U3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTY6MDk6NDEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzVdIERlZmluZSBtaXNzaW5nIGZlYXR1cmVzIHRvIGNhdGVyIGZvciBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvc3lzdGVtZC9zZC1hZGFwdC9ubS1zZC1hZGFwdC5oIHwgMiArLQotIHNyYy9zeXN0ZW1kL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMgfCA1ICsrKystCi0gc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCB8IDIgKysKLSBzcmMvc3lzdGVtZC9zcmMvYmFzaWMvdXRpbC5oICAgICAgIHwgNSArKysrKwotIHNyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWV2ZW50LmggfCA0IC0tLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc3lzdGVtZC9zZC1hZGFwdC9ubS1zZC1hZGFwdC5oIGIvc3JjL3N5c3RlbWQvc2QtYWRhcHQvbm0tc2QtYWRhcHQuaAotaW5kZXggY2YyN2MxYS4uNzJjMWI4OSAxMDA2NDQKLS0tLSBhL3NyYy9zeXN0ZW1kL3NkLWFkYXB0L25tLXNkLWFkYXB0LmgKLSsrKyBiL3NyYy9zeXN0ZW1kL3NkLWFkYXB0L25tLXNkLWFkYXB0LmgKLUBAIC0xMTksNyArMTE5LDcgQEAgR19TVE1UX1NUQVJUIHsgXAotICMgIGlmZGVmIEhBVkVfX19TRUNVUkVfR0VURU5WCi0gIyAgICBkZWZpbmUgc2VjdXJlX2dldGVudiBfX3NlY3VyZV9nZXRlbnYKLSAjICBlbHNlCi0tIyAgICBlcnJvciBuZWl0aGVyIHNlY3VyZV9nZXRlbnYgbm9yIF9fc2VjdXJlX2dldGVudiBpcyBhdmFpbGFibGUKLSsjICAgIGRlZmluZSBzZWN1cmVfZ2V0ZW52IGdldGVudgotICMgIGVuZGlmCi0gI2VuZGlmCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKLWluZGV4IDI3Mzg2NjMuLjljMjFlNWEgMTAwNjQ0Ci0tLS0gYS9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCi0rKysgYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCi1AQCAtMjUsOCArMjUsMTEgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpZmRlZiBfX0dMSUJDX18KLSAjaW5jbHVkZSA8eGxvY2FsZS5oPgotLQotKyNlbHNlCi0rI2luY2x1ZGUgPGxvY2FsZS5oPgotKyNlbmRpZgotICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCi0gI2luY2x1ZGUgImV4dHJhY3Qtd29yZC5oIgotICNpbmNsdWRlICJtYWNyby5oIgotZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zdGRpby11dGlsLmggYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCi1pbmRleCBiZDExNDRiLi5jOTJlOTM1IDEwMDY0NAotLS0tIGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAotKysrIGIvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAotQEAgLTE5LDcgKzE5LDkgQEAKLSAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotICoqKi8KLSAKLSsjaWZkZWYgX19HTElCQ19fCi0gI2luY2x1ZGUgPHByaW50Zi5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3V0aWwuaCBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy91dGlsLmgKLWluZGV4IGJiMmZjMzEuLmZlMDc0YTUgMTAwNjQ0Ci0tLS0gYS9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvdXRpbC5oCi0rKysgYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvdXRpbC5oCi1AQCAtNDYsNiArNDYsMTEgQEAKLSAjaW5jbHVkZSAibWlzc2luZy5oIgotICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKLSAKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotK3R5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKik7Ci0rdHlwZWRlZiBfX2NvbXBhcl9mbl90IGNvbXBhcmlzb25fZm5fdDsKLSsjZW5kaWYKLSsKLSBzaXplX3QgcGFnZV9zaXplKHZvaWQpIF9wdXJlXzsKLSAjZGVmaW5lIFBBR0VfQUxJR04obCkgQUxJR05fVE8oKGwpLCBwYWdlX3NpemUoKSkKLSAKLWRpZmYgLS1naXQgYS9zcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1ldmVudC5oIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtZXZlbnQuaAotaW5kZXggY2MyNmI3ZC4uYzdlMDAwNCAxMDA2NDQKLS0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWV2ZW50LmgKLSsrKyBiL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWV2ZW50LmgKLUBAIC02OSwxMSArNjksNyBAQCB0eXBlZGVmIGludCAoKnNkX2V2ZW50X2hhbmRsZXJfdCkoc2RfZXZlbnRfc291cmNlICpzLCB2b2lkICp1c2VyZGF0YSk7Ci0gdHlwZWRlZiBpbnQgKCpzZF9ldmVudF9pb19oYW5kbGVyX3QpKHNkX2V2ZW50X3NvdXJjZSAqcywgaW50IGZkLCB1aW50MzJfdCByZXZlbnRzLCB2b2lkICp1c2VyZGF0YSk7Ci0gdHlwZWRlZiBpbnQgKCpzZF9ldmVudF90aW1lX2hhbmRsZXJfdCkoc2RfZXZlbnRfc291cmNlICpzLCB1aW50NjRfdCB1c2VjLCB2b2lkICp1c2VyZGF0YSk7Ci0gdHlwZWRlZiBpbnQgKCpzZF9ldmVudF9zaWduYWxfaGFuZGxlcl90KShzZF9ldmVudF9zb3VyY2UgKnMsIGNvbnN0IHN0cnVjdCBzaWduYWxmZF9zaWdpbmZvICpzaSwgdm9pZCAqdXNlcmRhdGEpOwotLSNpZiBkZWZpbmVkIF9fVVNFX1BPU0lYMTk5MzA5IHx8IGRlZmluZWQgX19VU0VfWE9QRU5fRVhURU5ERUQKLSB0eXBlZGVmIGludCAoKnNkX2V2ZW50X2NoaWxkX2hhbmRsZXJfdCkoc2RfZXZlbnRfc291cmNlICpzLCBjb25zdCBzaWdpbmZvX3QgKnNpLCB2b2lkICp1c2VyZGF0YSk7Ci0tI2Vsc2UKLS10eXBlZGVmIHZvaWQqIHNkX2V2ZW50X2NoaWxkX2hhbmRsZXJfdDsKLS0jZW5kaWYKLSAKLSBpbnQgc2RfZXZlbnRfZGVmYXVsdChzZF9ldmVudCAqKmUpOwotIAotLS0gCi0yLjEyLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwNS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwNS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGEwNGM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDUtc2QtbGxkcC5oLVJlbW92ZS1uZXQtZXRoZXJuZXQuaC1zZWVtcy10by1iZS1vdmVyLXNwZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gOWU5ZTU4MTQ0NTZlYzIzYjlmYzY2OWQzNDJiZjlkOGY3ZWU0OWZjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMxIE1hciAyMDE3IDE2OjQ4OjAwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNS81XSBzZC1sbGRwLmg6IFJlbW92ZSBuZXQvZXRoZXJuZXQuaCBzZWVtcyB0byBiZSBvdmVyCi0gc3BlY2lmaWVkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1sbGRwLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBOZXR3b3JrTWFuYWdlci0xLjQuMi9zcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1sbGRwLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBOZXR3b3JrTWFuYWdlci0xLjQuMi5vcmlnL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWxsZHAuaAotKysrIE5ldHdvcmtNYW5hZ2VyLTEuNC4yL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWxsZHAuaAotQEAgLTIyLDcgKzIyLDcgQEAKLSAqKiovCi0gCi0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0tI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgotKy8vI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSAjaW5jbHVkZSAic2QtZXZlbnQuaCIKLUluZGV4OiBOZXR3b3JrTWFuYWdlci0xLjQuMi9zcmMvc3lzdGVtZC9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWxsZHAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIE5ldHdvcmtNYW5hZ2VyLTEuNC4yLm9yaWcvc3JjL3N5c3RlbWQvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1sbGRwLmMKLSsrKyBOZXR3b3JrTWFuYWdlci0xLjQuMi9zcmMvc3lzdGVtZC9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWxsZHAuYwotQEAgLTIxLDYgKzIxLDcgQEAKLSAjaW5jbHVkZSAibm0tc2QtYWRhcHQuaCIKLSAKLSAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0rI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgotIAotICNpbmNsdWRlICJzZC1sbGRwLmgiCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDEtbXVzbC1iYXNpYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMS1tdXNsLWJhc2ljLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMjA4ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDEtbXVzbC1iYXNpYy5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIGU5MmRlNzQwOWEzZTEwN2Y5MGQxMDhhOWM1ZDQ5YmQwNDE4Mjk2ZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogVGh1LCAyMiBNYXIgMjAxOCAxNzo1NDoxMCArMDEwMAorU3ViamVjdDogW1BBVENIIDEvNF0gVXN1YWwgZml4IGZvciBtdXNsIGxpYmMKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1N0b2xlbiBmcm9tIFsxXSBhbmQgcHJldHR5ZmllZCBzbGlnaHRseQorCitbMV0gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWRsaW51eC92b2lkLXBhY2thZ2VzL3RyZWUvbWFzdGVyL3NyY3BrZ3MvTmV0d29ya01hbmFnZXIvcGF0Y2hlcworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCB8IDIgKysKKyBzcmMvc3lzdGVtZC9zcmMvYmFzaWMvdXRpbC5oICAgICAgIHwgNSArKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oIGIvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAoraW5kZXggYmQxMTQ0Yi4uOWVhZmFjYiAxMDA2NDQKKy0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKKysrKyBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKK0BAIC0xOSw3ICsxOSw5IEBACisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCisgCisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICNpbmNsdWRlIDxwcmludGYuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8c3RkYXJnLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy91dGlsLmggYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvdXRpbC5oCitpbmRleCBiMzFkZmQxLi45YjcwMzJjIDEwMDY0NAorLS0tIGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3V0aWwuaAorKysrIGIvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3V0aWwuaAorQEAgLTQ2LDYgKzQ2LDExIEBACisgI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAjaW5jbHVkZSAidGltZS11dGlsLmgiCisgCisrI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKyt0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopOworK3R5cGVkZWYgX19jb21wYXJfZm5fdCBjb21wYXJpc29uX2ZuX3Q7CisrI2VuZGlmCisrCisgc2l6ZV90IHBhZ2Vfc2l6ZSh2b2lkKSBfcHVyZV87CisgI2RlZmluZSBQQUdFX0FMSUdOKGwpIEFMSUdOX1RPKChsKSwgcGFnZV9zaXplKCkpCisgCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDItbXVzbC1kbG9wZW4tY29uZmlndXJlLWFjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAyLW11c2wtZGxvcGVuLWNvbmZpZ3VyZS1hYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDhjY2NiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAyLW11c2wtZGxvcGVuLWNvbmZpZ3VyZS1hYy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDU3MjM5ZmRhNTZiNjhhOGYzZTQxM2Y3YjZhZjUyOTBiYTBkODY2MzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogVGh1LCAyMiBNYXIgMjAxOCAxODoxODowNiArMDEwMAorU3ViamVjdDogW1BBVENIIDIvNF0gbXVzbDogZGxvcGVuIGlzIGluY2x1ZGVkIHNvIExEX0xJQlM9IiIgaW5zdGVhZCBvZgorIExEX0xJQlM9Im5vbmUgcmVxdWlyZWQiCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTdG9sZW4gZnJvbSBbMV0gYW5kIHByZXR0eWZpZWQgc2xpZ2h0bHkKKworWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkbGludXgvdm9pZC1wYWNrYWdlcy90cmVlL21hc3Rlci9zcmNwa2dzL05ldHdvcmtNYW5hZ2VyL3BhdGNoZXMKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0ODdhMjY2Li45NmFlNGY3IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zMDUsNiArMzA1LDcgQEAgZG5sCisgZG5sIENoZWNrcyBmb3IgbGliZGwgLSBvbiBjZXJ0YWluIHBsYXRmb3JtcyBpdHMgcGFydCBvZiBsaWJjCisgZG5sCisgQUNfU0VBUkNIX0xJQlMoW2Rsb3Blbl0sIFtkbCBkbGRdLCBbXSwgW2FjX2N2X3NlYXJjaF9kbG9wZW49XSkKKytBU19JRihbdGVzdCAiJGFjX2N2X3NlYXJjaF9kbG9wZW4iID0gIm5vbmUgcmVxdWlyZWQiXSxbYWNfY3Zfc2VhcmNoX2Rsb3Blbj0iIl0pCisgQUNfU1VCU1QoW0RMX0xJQlNdLCAiJGFjX2N2X3NlYXJjaF9kbG9wZW4iKQorIAorIFBLR19DSEVDS19NT0RVTEVTKEdMSUIsIFtnaW8tdW5peC0yLjAgPj0gMi4zNy42IGdtb2R1bGUtMi4wXSwKKy0tIAorMi4xNC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMy1tdXNsLW5ldHdvcmstc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMy1tdXNsLW5ldHdvcmstc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGQxN2I2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAzLW11c2wtbmV0d29yay1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsNzIgQEAKK0Zyb20gNzE0YjQ3MzFhMjM4NjUzZTljN2Q4ODVjMGRlZTEwNjc3YjBhNGRmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIyIE1hciAyMDE4IDE4OjI0OjA3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBtdXNsOiBuZXR3b3JrIHN1cHBvcnQKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1N0b2xlbiBmcm9tIFsxXSBhbmQgcHJldHR5ZmllZCBzbGlnaHRseQorCitbMV0gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWRsaW51eC92b2lkLXBhY2thZ2VzL3RyZWUvbWFzdGVyL3NyY3BrZ3MvTmV0d29ya01hbmFnZXIvcGF0Y2hlcworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgbGlibm0tY29yZS9ubS11dGlscy5oICAgICAgICAgICAgICAgfCA0ICsrKysKKyBzcmMvcGxhdGZvcm0vd2lmaS93aWZpLXV0aWxzLmggICAgICB8IDQgKysrKworIHNyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5oIHwgNSArKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGlibm0tY29yZS9ubS11dGlscy5oIGIvbGlibm0tY29yZS9ubS11dGlscy5oCitpbmRleCBkZjkyODRiLi4yYmNmNGI4IDEwMDY0NAorLS0tIGEvbGlibm0tY29yZS9ubS11dGlscy5oCisrKysgYi9saWJubS1jb3JlL25tLXV0aWxzLmgKK0BAIC0zMCw3ICszMCwxMSBAQAorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgCisgLyogRm9yIEVUSF9BTEVOIGFuZCBJTkZJTklCQU5EX0FMRU4gKi8KKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CisrI2Vsc2UKKysjZGVmaW5lIEVUSF9BTEVOCTYJCS8qIE9jdGV0cyBpbiBvbmUgZXRoZXJuZXQgYWRkcgkgKi8KKysjZW5kaWYKKyAjaW5jbHVkZSA8bGludXgvaWZfaW5maW5pYmFuZC5oPgorIAorICNpbmNsdWRlICJubS1jb3JlLWVudW0tdHlwZXMuaCIKK2RpZmYgLS1naXQgYS9zcmMvcGxhdGZvcm0vd2lmaS93aWZpLXV0aWxzLmggYi9zcmMvcGxhdGZvcm0vd2lmaS93aWZpLXV0aWxzLmgKK2luZGV4IDcwNTcxN2IuLmRhM2VkYzQgMTAwNjQ0CistLS0gYS9zcmMvcGxhdGZvcm0vd2lmaS93aWZpLXV0aWxzLmgKKysrKyBiL3NyYy9wbGF0Zm9ybS93aWZpL3dpZmktdXRpbHMuaAorQEAgLTIyLDcgKzIyLDExIEBACisgI2lmbmRlZiBfX1dJRklfVVRJTFNfSF9fCisgI2RlZmluZSBfX1dJRklfVVRJTFNfSF9fCisgCisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KKysjZWxzZSAvKiBtdXNsIGxpYmMgKi8KKysjZGVmaW5lIEVUSF9BTEVOCTYJCS8qIE9jdGV0cyBpbiBvbmUgZXRoZXJuZXQgYWRkcgkgKi8KKysjZW5kaWYKKyAKKyAjaW5jbHVkZSAibm0tZGJ1cy1pbnRlcmZhY2UuaCIKKyAKK2RpZmYgLS1naXQgYS9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvc29ja2V0LXV0aWwuaCBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5oCitpbmRleCBkN2UyZDg1Li5kMTA5Yzg0IDEwMDY0NAorLS0tIGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmgKKysrKyBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5oCitAQCAtMjksNiArMjksMTEgQEAKKyAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgorICNpbmNsdWRlIDxsaW51eC9pZl9pbmZpbmliYW5kLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX3BhY2tldC5oPgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrLyogU0lPQ0dTVEFNUE5TIGZyb20gbGludXgvYXNtLWdlbmVyaWMuaAorKyAqIGZvciBzcmMvc3lzdGVtZC9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWxsZHAuYyAqLworKyNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+CisrI2VuZGlmCisgCisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgIm1pc3NpbmcuaCIKKy0tIAorMi4xNC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwNC1tdXNsLXByb2Nlc3MtdXRpbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwNC1tdXNsLXByb2Nlc3MtdXRpbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzU1Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDA0LW11c2wtcHJvY2Vzcy11dGlsLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gZDUxM2M4YmZjOTgyZGJkOTc2NjE3MTc4YjA0MGM1MTJjOTU3MTBiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIyIE1hciAyMDE4IDE4OjI5OjAwICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBtdXNsOiBwcm9jZXNzLXV0aWwKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1N0b2xlbiBmcm9tIFsxXSBhbmQgcHJldHR5ZmllZCBzbGlnaHRseQorCitbMV0gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWRsaW51eC92b2lkLXBhY2thZ2VzL3RyZWUvbWFzdGVyL3NyY3BrZ3MvTmV0d29ya01hbmFnZXIvcGF0Y2hlcworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIHwgOSArKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKK2luZGV4IDI3MjAzMGQuLjQ4NWYxZGIgMTAwNjQ0CistLS0gYS9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKKysrKyBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworQEAgLTM2LDYgKzM2LDkgQEAKKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAjaW5jbHVkZSA8c3lzbG9nLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpZm5kZWYgX19HTElCQ19fCisrI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysjZW5kaWYKKyAjaWYgMCAvKiBOTV9JR05PUkVEICovCisgI2lmIEhBVkVfVkFMR1JJTkRfVkFMR1JJTkRfSAorICNpbmNsdWRlIDx2YWxncmluZC92YWxncmluZC5oPgorQEAgLTEwMTUsMTEgKzEwMTgsMTMgQEAgc3RhdGljIHZvaWQgcmVzZXRfY2FjaGVkX3BpZCh2b2lkKSB7CisgICAgICAgICBjYWNoZWRfcGlkID0gQ0FDSEVEX1BJRF9VTlNFVDsKKyB9CisgCisrI2lmZGVmIF9fR0xJQkNfXworIC8qIFdlIHVzZSBnbGliYyBfX3JlZ2lzdGVyX2F0Zm9yaygpICsgX19kc29faGFuZGxlIGRpcmVjdGx5IGhlcmUsIGFzIHRoZXkgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgZ2xpYmMKKyAgKiBoZWFkZXJzLiBfX3JlZ2lzdGVyX2F0Zm9yaygpIGlzIG1vc3RseSBlcXVpdmFsZW50IHRvIHB0aHJlYWRfYXRmb3JrKCksIGJ1dCBkb2Vzbid0IHJlcXVpcmUgdXMgdG8gbGluayBhZ2FpbnN0CisgICogbGlicHRocmVhZCwgYXMgaXQgaXMgcGFydCBvZiBnbGliYyBhbnl3YXkuICovCisgZXh0ZXJuIGludCBfX3JlZ2lzdGVyX2F0Zm9yayh2b2lkICgqcHJlcGFyZSkgKHZvaWQpLCB2b2lkICgqcGFyZW50KSAodm9pZCksIHZvaWQgKCpjaGlsZCkgKHZvaWQpLCB2b2lkICogX19kc29faGFuZGxlKTsKKyBleHRlcm4gdm9pZCogX19kc29faGFuZGxlIF9fYXR0cmlidXRlX18gKChfX3dlYWtfXykpOworKyNlbmRpZgorIAorIHBpZF90IGdldHBpZF9jYWNoZWQodm9pZCkgeworICAgICAgICAgcGlkX3QgY3VycmVudF92YWx1ZTsKK0BAIC0xMDQyLDcgKzEwNDcsMTEgQEAgcGlkX3QgZ2V0cGlkX2NhY2hlZCh2b2lkKSB7CisgCisgICAgICAgICAgICAgICAgIG5ld19waWQgPSBnZXRwaWQoKTsKKyAKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICAgICAgICAgIGlmIChfX3JlZ2lzdGVyX2F0Zm9yayhOVUxMLCBOVUxMLCByZXNldF9jYWNoZWRfcGlkLCBfX2Rzb19oYW5kbGUpICE9IDApIHsKKysjZWxzZQorKyAgICAgICAgICAgICAgICBpZiAocHRocmVhZF9hdGZvcmsoTlVMTCwgTlVMTCwgcmVzZXRfY2FjaGVkX3BpZCkgIT0gMCkgeworKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9PTT8gTGV0J3MgdHJ5IGFnYWluIGxhdGVyICovCisgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkX3BpZCA9IENBQ0hFRF9QSURfVU5TRVQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld19waWQ7CistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDUtbXVzbC1hdm9pZC1mdXJ0aGVyLWNvbmZsaWN0cy1ieS1pbmNsdWRpbmctbmV0LWV0aGVybi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwNS1tdXNsLWF2b2lkLWZ1cnRoZXItY29uZmxpY3RzLWJ5LWluY2x1ZGluZy1uZXQtZXRoZXJuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MmZlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDUtbXVzbC1hdm9pZC1mdXJ0aGVyLWNvbmZsaWN0cy1ieS1pbmNsdWRpbmctbmV0LWV0aGVybi5wYXRjaApAQCAtMCwwICsxLDc3IEBACitGcm9tIGIzYjRmZTM1MDE4Yzk4YWQxNzY3MTliMmQ5ZmZiODY3OTc0ZmM3YzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogTW9uLCAxNiBBcHIgMjAxOCAxNDo0NTo0NCArMDIwMAorU3ViamVjdDogW1BBVENIXSBtdXNsOiBhdm9pZCBmdXJ0aGVyIGNvbmZsaWN0cyBieSBpbmNsdWRpbmcgbmV0L2V0aGVybmV0LmgKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBzcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1kaGNwLWNsaWVudC5oICB8IDIgKysKKyBzcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1kaGNwLWxlYXNlLmggICB8IDIgKysKKyBzcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1kaGNwNi1jbGllbnQuaCB8IDIgKysKKyBzcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1pcHY0bGwuaCAgICAgICB8IDIgKysKKyA0IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtZGhjcC1jbGllbnQuaCBiL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWRoY3AtY2xpZW50LmgKK2luZGV4IDVlNDZkOGQuLjE4YTYxM2YgMTAwNjQ0CistLS0gYS9zcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1kaGNwLWNsaWVudC5oCisrKysgYi9zcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1kaGNwLWNsaWVudC5oCitAQCAtMjEsNyArMjEsOSBAQAorICoqKi8KKyAKKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgorKyNlbmRpZgorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWRoY3AtbGVhc2UuaCBiL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWRoY3AtbGVhc2UuaAoraW5kZXggN2FiOTljYy4uODVhY2RmMiAxMDA2NDQKKy0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWRoY3AtbGVhc2UuaAorKysrIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtZGhjcC1sZWFzZS5oCitAQCAtMjIsNyArMjIsOSBAQAorICoqKi8KKyAKKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgorKyNlbmRpZgorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWRoY3A2LWNsaWVudC5oIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtZGhjcDYtY2xpZW50LmgKK2luZGV4IDc4MTlmMGQuLjM1ZjMwZWUgMTAwNjQ0CistLS0gYS9zcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1kaGNwNi1jbGllbnQuaAorKysrIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtZGhjcDYtY2xpZW50LmgKK0BAIC0yMSw3ICsyMSw5IEBACisgKioqLworIAorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjaW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorICNpbmNsdWRlICJzZC1kaGNwNi1sZWFzZS5oIgorZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWlwdjRsbC5oIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtaXB2NGxsLmgKK2luZGV4IDViYTkyMDguLmM5MGVjYTYgMTAwNjQ0CistLS0gYS9zcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1pcHY0bGwuaAorKysrIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtaXB2NGxsLmgKK0BAIC0yMCw3ICsyMCw5IEBACisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCisgCisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorIAorICNpbmNsdWRlICJzZC1ldmVudC5oIgorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDA2LUFkZC1hLXN0cm5kdXBhLXJlcGxhY2VtZW50LWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDA2LUFkZC1hLXN0cm5kdXBhLXJlcGxhY2VtZW50LWZvci1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZDdlZTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDYtQWRkLWEtc3RybmR1cGEtcmVwbGFjZW1lbnQtZm9yLW11c2wucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSA2ZGI2NTk2ZTQ1MDA2MjYwMWQxOGIyYWU4MTJhNGE1OGQyZTAzYTUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTYgQXByIDIwMTggMTU6MDc6MjAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGEgc3RybmR1cGEgcmVwbGFjZW1lbnQgZm9yIG11c2wKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBzcmMvc3lzdGVtZC9zcmMvYmFzaWMvaW4tYWRkci11dGlsLmMgfCAxICsKKyBzcmMvc3lzdGVtZC9zcmMvYmFzaWMvc3RyaW5nLXV0aWwuaCAgfCA1ICsrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9pbi1hZGRyLXV0aWwuYyBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9pbi1hZGRyLXV0aWwuYworaW5kZXggMmEwMmQ5MC4uYTU3YzM2MCAxMDA2NDQKKy0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9pbi1hZGRyLXV0aWwuYworKysrIGIvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL2luLWFkZHItdXRpbC5jCitAQCAtMzAsNiArMzAsNyBAQAorICNpbmNsdWRlICJpbi1hZGRyLXV0aWwuaCIKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgorKyNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJ1dGlsLmgiCisgCisgYm9vbCBpbjRfYWRkcl9pc19udWxsKGNvbnN0IHN0cnVjdCBpbl9hZGRyICphKSB7CitkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3N0cmluZy11dGlsLmggYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvc3RyaW5nLXV0aWwuaAoraW5kZXggNGM5NGIxOC4uYTZkYzQ0NiAxMDA2NDQKKy0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zdHJpbmctdXRpbC5oCisrKysgYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvc3RyaW5nLXV0aWwuaAorQEAgLTQ0LDYgKzQ0LDExIEBACisgI2RlZmluZSBzdHJjYXNlZXEoYSxiKSAoc3RyY2FzZWNtcCgoYSksKGIpKSA9PSAwKQorICNkZWZpbmUgc3RybmNhc2VlcShhLCBiLCBuKSAoc3RybmNhc2VjbXAoKGEpLCAoYiksIChuKSkgPT0gMCkKKyAKKysvKiBtdXNsIGRvZXMgbm90IGtub3cgc3RybmR1cGEgKi8KKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyNkZWZpbmUgc3RybmR1cGEoeCxzKSBzdHJuY3B5KGFsbG9jYShzdHJsZW4oeCkrMSkseCxzKQorKyNlbmRpZgorKworIGludCBzdHJjbXBfcHRyKGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIpIF9wdXJlXzsKKyAKKyBzdGF0aWMgaW5saW5lIGJvb2wgc3RyZXFfcHRyKGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIpIHsKKy0tIAorMi4xNC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuMTAuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuMTAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWM1ZGJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXJfMS4xMC42LmJiCkBAIC0wLDAgKzEsMTQzIEBACitTVU1NQVJZID0gIk5ldHdvcmtNYW5hZ2VyIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9OZXR3b3JrTWFuYWdlciIKK1NFQ1RJT04gPSAibmV0L21pc2MiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2JiZmZkNTY4MjI3YWRhNTA2NjQwZmU5NTBhNDgyM2IgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlibm0tdXRpbC9DT1BZSU5HO21kNT0xYzRmYTc2NWQ2ZWIzY2QyZmJkODQzNDRhMWI4MTZjZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL2FwaS9odG1sL2xpY2Vuc2UuaHRtbDttZDU9NzdiOWUzNjI2OTBjMTQ5ZGExOTZhZWZlNzcxMmRiMzAgXAorIgorCitERVBFTkRTID0gIiBcCisgICAgaW50bHRvb2wtbmF0aXZlIFwKKyAgICBsaWJ4c2x0LW5hdGl2ZSBcCisgICAgbGlibmwgXAorICAgIGRidXMgXAorICAgIGRidXMtZ2xpYiBcCisgICAgZGJ1cy1nbGliLW5hdGl2ZSBcCisgICAgbGliZ3VkZXYgXAorICAgIHV0aWwtbGludXggXAorICAgIGxpYm5kcCBcCisgICAgbGlibmV3dCBcCisgICAgcG9sa2l0IFwKKyAgICBqYW5zc29uIFwKKyAgICBjdXJsIFwKKyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIGJsdWV0b290aCBiYXNoLWNvbXBsZXRpb24gdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYworCitTUkNfVVJJID0gIiBcCisgICAgJHtHTk9NRV9NSVJST1J9L05ldHdvcmtNYW5hZ2VyLyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vTmV0d29ya01hbmFnZXItJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1GaXhlZC1jb25maWd1cmUuYWMtRml4LXBrZ2NvbmZpZy1zeXNyb290LWxvY2F0aW9ucy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtRG8tbm90LWNyZWF0ZS1zZXR0aW5ncy1zZXR0aW5ncy1wcm9wZXJ0eS1kb2N1bWVudGF0aS5wYXRjaCBcCisgICAgZmlsZTovL211c2wvMDAwMS1tdXNsLWJhc2ljLnBhdGNoIFwKKyAgICBmaWxlOi8vbXVzbC8wMDAyLW11c2wtZGxvcGVuLWNvbmZpZ3VyZS1hYy5wYXRjaCBcCisgICAgZmlsZTovL211c2wvMDAwMy1tdXNsLW5ldHdvcmstc3VwcG9ydC5wYXRjaCBcCisgICAgZmlsZTovL211c2wvMDAwNC1tdXNsLXByb2Nlc3MtdXRpbC5wYXRjaCBcCisgICAgZmlsZTovL211c2wvMDAwNS1tdXNsLWF2b2lkLWZ1cnRoZXItY29uZmxpY3RzLWJ5LWluY2x1ZGluZy1uZXQtZXRoZXJuLnBhdGNoIFwKKyAgICBmaWxlOi8vbXVzbC8wMDA2LUFkZC1hLXN0cm5kdXBhLXJlcGxhY2VtZW50LWZvci1tdXNsLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZTNjNzE0N2E2OTNkYTZmODBlYjIyZjEyNjA4NmExNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YWYwYjFlODU2YTM3MjVmODg3OTFmNTVjNGZiYjA0MTA1ZGMwYjIwZGJmMTgyYWFlYzhhYWQxNjQ4MWZhYzc2IgorCitTID0gIiR7V09SS0RJUn0vTmV0d29ya01hbmFnZXItJHtQVn0iCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1pZmNmZy1yaCBcCisgICAgLS1kaXNhYmxlLWlmbmV0IFwKKyAgICAtLWRpc2FibGUtaWZjZmctc3VzZSBcCisgICAgLS1kaXNhYmxlLW1vcmUtd2FybmluZ3MgXAorICAgIC0td2l0aC1pcHRhYmxlcz0ke3NiaW5kaXJ9L2lwdGFibGVzIFwKKyAgICAtLXdpdGgtdGVzdHMgXAorICAgIC0td2l0aC1ubXR1aT15ZXMgXAorIgorCisjIGdvYmplY3QtaW50cm9zcGVjdGlvbiByZWxhdGVkCitHSV9EQVRBX0VOQUJMRURfbGliYy1tdXNsID0gIkZhbHNlIgorCisjIHN0b2xlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkbGludXgvdm9pZC1wYWNrYWdlcy9ibG9iL21hc3Rlci9zcmNwa2dzL05ldHdvcmtNYW5hZ2VyL3RlbXBsYXRlCitDRkxBR1NfbGliYy1tdXNsX2FwcGVuZCA9ICIgXAorICAgIC1ESEFWRV9TRUNVUkVfR0VURU5WIC1Ec2VjdXJlX2dldGVudj1nZXRlbnYgXAorICAgIC1EX19VU0VfUE9TSVgxOTkzMDkgLURSVExEX0RFRVBCSU5EPTAgXAorIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vbGlibm0vLmxpYnM6JHtCfS9saWJubS1nbGliLy5saWJzOiR7Qn0vbGlibm0tdXRpbC8ubGlicyIKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gIm5zcyBpZnVwZG93biBuZXRjb25maWcgZGhjbGllbnQgZG5zbWFzcSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdjb25zb2xla2l0JywgJycsIGQpLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJyR7QkxVRVp9JywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIiBcCisgICAgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gLS13aXRoLXNlc3Npb24tdHJhY2tpbmc9c3lzdGVtZCAtLWVuYWJsZS1wb2xraXQsIFwKKyAgICAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsIFwKKyAgICBwb2xraXQgXAorIgorUEFDS0FHRUNPTkZJR1tibHVlejVdID0gIi0tZW5hYmxlLWJsdWV6NS1kdW4sLS1kaXNhYmxlLWJsdWV6NS1kdW4sYmx1ZXo1IgorIyBjb25zb2xla2l0IGlzIG5vdCBwaWNrZWQgYnkgc2hsaWJzLCBzbyBhZGQgaXQgdG8gUkRFUEVORFMgdG9vCitQQUNLQUdFQ09ORklHW2NvbnNvbGVraXRdID0gIi0td2l0aC1zZXNzaW9uLXRyYWNraW5nPWNvbnNvbGVraXQsLGNvbnNvbGVraXQsY29uc29sZWtpdCIKK1BBQ0tBR0VDT05GSUdbbW9kZW1tYW5hZ2VyXSA9ICItLXdpdGgtbW9kZW0tbWFuYWdlci0xPXllcywtLXdpdGgtbW9kZW0tbWFuYWdlci0xPW5vLG1vZGVtbWFuYWdlciIKK1BBQ0tBR0VDT05GSUdbcHBwXSA9ICItLWVuYWJsZS1wcHAsLS1kaXNhYmxlLXBwcCxwcHAscHBwIgorIyBVc2UgZnVsbCBmZWF0dXJlZCBkaGNwIGNsaWVudCBpbnN0ZWFkIG9mIGludGVybmFsIG9uZQorUEFDS0FHRUNPTkZJR1tkaGNsaWVudF0gPSAiLS13aXRoLWRoY2xpZW50PSR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCwsLGRoY3AtY2xpZW50IgorUEFDS0FHRUNPTkZJR1tkbnNtYXNxXSA9ICItLXdpdGgtZG5zbWFzcT0ke2JpbmRpcn0vZG5zbWFzcSIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtY3J5cHRvPW5zcywsbnNzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1jcnlwdG89Z251dGxzLCxnbnV0bHMiCitQQUNLQUdFQ09ORklHW3dpZmldID0gIi0tZW5hYmxlLXdpZmk9eWVzLC0tZW5hYmxlLXdpZmk9bm8sd2lyZWxlc3MtdG9vbHMsd3BhLXN1cHBsaWNhbnQgd2lyZWxlc3MtdG9vbHMiCitQQUNLQUdFQ09ORklHW2lmdXBkb3duXSA9ICItLWVuYWJsZS1pZnVwZG93biwtLWRpc2FibGUtaWZ1cGRvd24iCitQQUNLQUdFQ09ORklHW25ldGNvbmZpZ10gPSAiLS13aXRoLW5ldGNvbmZpZz15ZXMsLS13aXRoLW5ldGNvbmZpZz1ubyIKK1BBQ0tBR0VDT05GSUdbcXQ0LXgxMS1mcmVlXSA9ICItLWVuYWJsZS1xdCwtLWRpc2FibGUtcXQscXQ0LXgxMS1mcmVlIgorCitQQUNLQUdFUyA9KyAibGlibm11dGlsIGxpYm5tZ2xpYiBsaWJubWdsaWItdnBuIFwKKyAgJHtQTn0tbm10dWkgJHtQTn0tbm10dWktZG9jIFwKKyAgJHtQTn0tYWRzbCBcCisiCisKK0ZJTEVTX2xpYm5tdXRpbCArPSAiJHtsaWJkaXJ9L2xpYm5tLXV0aWwuc28uKiIKK0ZJTEVTX2xpYm5tZ2xpYiArPSAiJHtsaWJkaXJ9L2xpYm5tLWdsaWIuc28uKiIKK0ZJTEVTX2xpYm5tZ2xpYi12cG4gKz0gIiR7bGliZGlyfS9saWJubS1nbGliLXZwbi5zby4qIgorCitGSUxFU18ke1BOfS1hZHNsID0gIiR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci9saWJubS1kZXZpY2UtcGx1Z2luLWFkc2wuc28iCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7bGliZXhlY2Rpcn0gXAorICAgICR7bGliZGlyfS9wcHBkLyovbm0tcHBwZC1wbHVnaW4uc28gXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLnNvIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9WUE4gXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L05ldHdvcmtNYW5hZ2VyL2NvbmYuZCBcCisgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7YmFzZV9saWJkaXJ9L3VkZXYvKiBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSBcCisiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJpcHRhYmxlcyBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2Ruc21hc3EnLCBkKX0gXAorIgorUkNPTkZMSUNUU18ke1BOfSA9ICJjb25ubWFuIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiBcCisgICAgJHtkYXRhZGlyfS9OZXR3b3JrTWFuYWdlci9nZGItY21kIFwKKyAgICAke2xpYmRpcn0vcHBwZC8qLyoubGEgXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLmxhIFwKKyIKKworRklMRVNfJHtQTn0tbm10dWkgPSAiIFwKKyAgICAke2JpbmRpcn0vbm10dWkgXAorICAgICR7YmluZGlyfS9ubXR1aS1lZGl0IFwKKyAgICAke2JpbmRpcn0vbm10dWktY29ubmVjdCBcCisgICAgJHtiaW5kaXJ9L25tdHVpLWhvc3RuYW1lIFwKKyIKKworRklMRVNfJHtQTn0tbm10dWktZG9jID0gIiBcCisgICAgJHttYW5kaXJ9L21hbjEvbm10dWkqIFwKKyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIk5ldHdvcmtNYW5hZ2VyLnNlcnZpY2UgTmV0d29ya01hbmFnZXItZGlzcGF0Y2hlci5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAtcmYgJHtEfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjQuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWY0NTZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0d29ya01hbmFnZXIiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL05ldHdvcmtNYW5hZ2VyIgotU0VDVElPTiA9ICJuZXQvbWlzYyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jYmJmZmQ1NjgyMjdhZGE1MDY2NDBmZTk1MGE0ODIzYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJubS11dGlsL0NPUFlJTkc7bWQ1PTFjNGZhNzY1ZDZlYjNjZDJmYmQ4NDM0NGExYjgxNmNkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvYXBpL2h0bWwvbGljZW5zZS5odG1sO21kNT04ZWI4ZTcyYmFiMDk3YjlkMTE3NjMwMDJjYjAwMzY5NyBcCi0iCi0KLURFUEVORFMgPSAiIFwKLSAgICBpbnRsdG9vbC1uYXRpdmUgXAotICAgIGxpYm5sIFwKLSAgICBkYnVzIFwKLSAgICBkYnVzLWdsaWIgXAotICAgIGRidXMtZ2xpYi1uYXRpdmUgXAotICAgIGxpYmd1ZGV2IFwKLSAgICB1dGlsLWxpbnV4IFwKLSAgICBsaWJuZHAgXAotICAgIGxpYm5ld3QgXAotICAgIHBvbGtpdCBcCi0gICAgamFuc3NvbiBcCi0iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdldHRleHQgc3lzdGVtZCBibHVldG9vdGggYmFzaC1jb21wbGV0aW9uIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLUdJX0RBVEFfRU5BQkxFRF9saWJjLW11c2wgPSAiRmFsc2UiCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L05ldHdvcmtNYW5hZ2VyLyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vTmV0d29ya01hbmFnZXItJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1zYmluLWRoY2xpZW50LXRvLWdldC10aGUtdmVyc2lvbi1udS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1ubS12ZXJzaW9uLW1hY3JvLWluY2x1ZGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWRqdXN0LW5ldC1oZWFkZXJzLWZvci1tdXNsLWNvbXBhdGliaWxpdHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1zb2NrZXQtdXRpbC5oLUluY2x1ZGUtbGludXgtc29ja2lvcy5oLW9uLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1EZWZpbmUtRVRIX0FMRU4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1EZWZpbmUtbWlzc2luZy1mZWF0dXJlcy10by1jYXRlci1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXNkLWxsZHAuaC1SZW1vdmUtbmV0LWV0aGVybmV0Lmgtc2VlbXMtdG8tYmUtb3Zlci1zcGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jaGVjay1mb3Itc3RybmR1cGEtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZG5zLXJlc29sdmVkLWFkZC1zeXN0ZW1kLXJlc29sdmVkLWJhY2tlbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kbnMtcmVzb2x2ZWQtYWxzby1jaGVjay1mb3ItZXRjLXJlc29sdi1jb25mLnN5c3RlbWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXN0ZW1kLXhsb2NhbGUuaC1pcy1kcm9wcGVkLWJ5LW5ld2VyLWdsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdXNlci1mb3JtYXQtc3RyaW5nLWluLWdfZGJ1c19tZXNzYWdlX25ld19tZXRob2RfZXJyby5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2M2YxZTBkNmQ3ZTkwOTk0OTlkMDYyYzg0YzkyN2E3NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MjkzNzhmMzE4Y2MwMDhkMTM4YTIzY2E2YTkxOTE5MjhjZTc1MzQ0ZTdlNDdhMmYyYzM1ZjRhYzgyMTMzMzA5IgotCi1TID0gIiR7V09SS0RJUn0vTmV0d29ya01hbmFnZXItJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1pZmNmZy1yaCBcCi0gICAgLS1kaXNhYmxlLWlmbmV0IFwKLSAgICAtLWRpc2FibGUtaWZjZmctc3VzZSBcCi0gICAgLS1kaXNhYmxlLW1vcmUtd2FybmluZ3MgXAotICAgIC0td2l0aC1pcHRhYmxlcz0ke3NiaW5kaXJ9L2lwdGFibGVzIFwKLSAgICAtLXdpdGgtdGVzdHMgXAotICAgIC0td2l0aC1ubXR1aT15ZXMgXAotIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2xpYm5tLXV0aWwvLmxpYnMiCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJuc3MgaWZ1cGRvd24gbmV0Y29uZmlnIGRoY2xpZW50IGRuc21hc3EgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kJywgXAotICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2NvbnNvbGVraXQnLCAnJywgZCksIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnJHtCTFVFWn0nLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3aWZpJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiIFwKLSAgICAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSAtLXdpdGgtc2Vzc2lvbi10cmFja2luZz1zeXN0ZW1kIC0tZW5hYmxlLXBvbGtpdCwgXAotICAgIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpciwgXAotICAgIHBvbGtpdCBcCi0iCi1QQUNLQUdFQ09ORklHW2JsdWV6NV0gPSAiLS1lbmFibGUtYmx1ZXo1LWR1biwtLWRpc2FibGUtYmx1ZXo1LWR1bixibHVlejUiCi0jIGNvbnNvbGVraXQgaXMgbm90IHBpY2tlZCBieSBzaGxpYnMsIHNvIGFkZCBpdCB0byBSREVQRU5EUyB0b28KLVBBQ0tBR0VDT05GSUdbY29uc29sZWtpdF0gPSAiLS13aXRoLXNlc3Npb24tdHJhY2tpbmc9Y29uc29sZWtpdCwsY29uc29sZWtpdCxjb25zb2xla2l0IgotUEFDS0FHRUNPTkZJR1tjb25jaGVja10gPSAiLS13aXRoLWxpYnNvdXA9eWVzLC0td2l0aC1saWJzb3VwPW5vLGxpYnNvdXAtMi40IgotUEFDS0FHRUNPTkZJR1ttb2RlbW1hbmFnZXJdID0gIi0td2l0aC1tb2RlbS1tYW5hZ2VyLTE9eWVzLC0td2l0aC1tb2RlbS1tYW5hZ2VyLTE9bm8sbW9kZW1tYW5hZ2VyIgotUEFDS0FHRUNPTkZJR1twcHBdID0gIi0tZW5hYmxlLXBwcCwtLWRpc2FibGUtcHBwLHBwcCxwcHAiCi0jIFVzZSBmdWxsIGZlYXR1cmVkIGRoY3AgY2xpZW50IGluc3RlYWQgb2YgaW50ZXJuYWwgb25lCi1QQUNLQUdFQ09ORklHW2RoY2xpZW50XSA9ICItLXdpdGgtZGhjbGllbnQ9JHtiYXNlX3NiaW5kaXJ9L2RoY2xpZW50LCwsZGhjcC1jbGllbnQiCi1QQUNLQUdFQ09ORklHW2Ruc21hc3FdID0gIi0td2l0aC1kbnNtYXNxPSR7YmluZGlyfS9kbnNtYXNxIgotUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0td2l0aC1jcnlwdG89bnNzLCxuc3MiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWNyeXB0bz1nbnV0bHMsLGdudXRscyIKLVBBQ0tBR0VDT05GSUdbd2lmaV0gPSAiLS1lbmFibGUtd2lmaT15ZXMsLS1lbmFibGUtd2lmaT1ubyx3aXJlbGVzcy10b29scyx3cGEtc3VwcGxpY2FudCB3aXJlbGVzcy10b29scyIKLVBBQ0tBR0VDT05GSUdbaWZ1cGRvd25dID0gIi0tZW5hYmxlLWlmdXBkb3duLC0tZGlzYWJsZS1pZnVwZG93biIKLVBBQ0tBR0VDT05GSUdbbmV0Y29uZmlnXSA9ICItLXdpdGgtbmV0Y29uZmlnPXllcywtLXdpdGgtbmV0Y29uZmlnPW5vIgotUEFDS0FHRUNPTkZJR1txdDQteDExLWZyZWVdID0gIi0tZW5hYmxlLXF0LC0tZGlzYWJsZS1xdCxxdDQteDExLWZyZWUiCi0KLVBBQ0tBR0VTID0rICJsaWJubXV0aWwgbGlibm1nbGliIGxpYm5tZ2xpYi12cG4gXAotICAke1BOfS1ubXR1aSAke1BOfS1ubXR1aS1kb2MgXAotICAke1BOfS1hZHNsIFwKLSIKLQotRklMRVNfbGlibm11dGlsICs9ICIke2xpYmRpcn0vbGlibm0tdXRpbC5zby4qIgotRklMRVNfbGlibm1nbGliICs9ICIke2xpYmRpcn0vbGlibm0tZ2xpYi5zby4qIgotRklMRVNfbGlibm1nbGliLXZwbiArPSAiJHtsaWJkaXJ9L2xpYm5tLWdsaWItdnBuLnNvLioiCi0KLUZJTEVTXyR7UE59LWFkc2wgPSAiJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyL2xpYm5tLWRldmljZS1wbHVnaW4tYWRzbC5zbyIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtsaWJleGVjZGlyfSBcCi0gICAgJHtsaWJkaXJ9L3BwcGQvKi9ubS1wcHBkLXBsdWdpbi5zbyBcCi0gICAgJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyouc28gXAotICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2Jhc2VfbGliZGlyfS91ZGV2LyogXAotICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gXAotIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAiaXB0YWJsZXMgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdkbnNtYXNxJywgZCl9IFwKLSIKLVJDT05GTElDVFNfJHtQTn0gPSAiY29ubm1hbiIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vTmV0d29ya01hbmFnZXIvZ2RiLWNtZCBcCi0gICAgJHtsaWJkaXJ9L3BwcGQvKi8qLmxhIFwKLSAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvKi5sYSBcCi0iCi0KLUZJTEVTXyR7UE59LW5tdHVpID0gIiBcCi0gICAgJHtiaW5kaXJ9L25tdHVpIFwKLSAgICAke2JpbmRpcn0vbm10dWktZWRpdCBcCi0gICAgJHtiaW5kaXJ9L25tdHVpLWNvbm5lY3QgXAotICAgICR7YmluZGlyfS9ubXR1aS1ob3N0bmFtZSBcCi0iCi0KLUZJTEVTXyR7UE59LW5tdHVpLWRvYyA9ICIgXAotICAgICR7bWFuZGlyfS9tYW4xL25tdHVpKiBcCi0iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJOZXR3b3JrTWFuYWdlci5zZXJ2aWNlIE5ldHdvcmtNYW5hZ2VyLWRpc3BhdGNoZXIuc2VydmljZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXJmICR7RH0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvMDAwMS1wYWNrYWdpbmctQXZvaWQtdGltZW91dC1mb3Itbm1iZC1pZi1zdGFydGVkLW9mZmxpbmUtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvMDAwMS1wYWNrYWdpbmctQXZvaWQtdGltZW91dC1mb3Itbm1iZC1pZi1zdGFydGVkLW9mZmxpbmUtLnBhdGNoCmluZGV4IDBhYjM0MzYuLjBlODlhOWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhLzAwMDEtcGFja2FnaW5nLUF2b2lkLXRpbWVvdXQtZm9yLW5tYmQtaWYtc3RhcnRlZC1vZmZsaW5lLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS8wMDAxLXBhY2thZ2luZy1Bdm9pZC10aW1lb3V0LWZvci1ubWJkLWlmLXN0YXJ0ZWQtb2ZmbGluZS0ucGF0Y2gKQEAgLTEzLDE2ICsxMywxNyBAQAogdGhlcmVmb3JlIGdldCBraWxsZWQuCiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgT2JlcnJpdHRlciA8b2JpQG9wZW5kcmVhbWJveC5vcmc+CisKIC0tLQogIHBhY2thZ2luZy9zeXN0ZW1kL25tYi5zZXJ2aWNlIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9wYWNrYWdpbmcvc3lzdGVtZC9ubWIuc2VydmljZSBiL3BhY2thZ2luZy9zeXN0ZW1kL25tYi5zZXJ2aWNlCi1pbmRleCA5OTJjMGNkLi41NTVjOWFiIDEwMDY0NAoraW5kZXggNzFjOTNkNi4uZjNkMmZjMiAxMDA2NDQKIC0tLSBhL3BhY2thZ2luZy9zeXN0ZW1kL25tYi5zZXJ2aWNlCiArKysgYi9wYWNrYWdpbmcvc3lzdGVtZC9ubWIuc2VydmljZQogQEAgLTEwLDYgKzEwLDcgQEAgRW52aXJvbm1lbnRGaWxlPS0vZXRjL3N5c2NvbmZpZy9zYW1iYQotIEV4ZWNTdGFydD0vdXNyL3NiaW4vbm1iZCAkTk1CRE9QVElPTlMKKyBFeGVjU3RhcnQ9L3Vzci9zYmluL25tYmQgLS1mb3JlZ3JvdW5kIC0tbm8tcHJvY2Vzcy1ncm91cCAkTk1CRE9QVElPTlMKICBFeGVjUmVsb2FkPS91c3IvYmluL2tpbGwgLUhVUCAkTUFJTlBJRAogIExpbWl0Q09SRT1pbmZpbml0eQogK1RpbWVvdXRTdGFydFNlYz0wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS8xNi1kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS8xNi1kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2gKaW5kZXggYzM3Y2ZjZC4uOGNhN2E1MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvMTYtZG8tbm90LWNoZWNrLXhzbHRwcm9jLW1hbnBhZ2VzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhLzE2LWRvLW5vdC1jaGVjay14c2x0cHJvYy1tYW5wYWdlcy5wYXRjaApAQCAtMSwxMyArMSwyNCBAQAotRG9uJ3QgY2hlY2sgeHNsdHByb2MgbWFucGFnZXMKK0Zyb20gMjIxNGMyZDFlNDU1YTM4Yzg5MWQxN2U0MjFiNDM4ZTNmN2M0OTVkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJpYW4gTmFpbWVuZyA8Ymlhbm5tQGNuLmZ1aml0c3UuY29tPgorRGF0ZTogTW9uLCAxOCBBcHIgMjAxNiAxNzowMDo1MyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBEb24ndCBjaGVjayB4c2x0cHJvYyBtYW5wYWdlcwogCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKyAKIFNpZ25lZC1vZmYtYnk6IEJpYW4gTmFpbWVuZyA8Ymlhbm5tQGNuLmZ1aml0c3UuY29tPgogCi1JbmRleDogc2FtYmEtNC40LjIvbGliL2xkYi93c2NyaXB0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2FtYmEtNC40LjIub3JpZy9saWIvbGRiL3dzY3JpcHQKLSsrKyBzYW1iYS00LjQuMi9saWIvbGRiL3dzY3JpcHQKLUBAIC02NSw3ICs2NSw3IEBAIGRlZiBjb25maWd1cmUoY29uZik6Ci0gICAgICAgICAgICAgICAgIGNvbmYuZGVmaW5lKCdVU0lOR19TWVNURU1fTERCJywgMSkKKy0tLQorIGxpYi9sZGIvd3NjcmlwdCAgICB8IDIgKy0KKyBsaWIvdGFsbG9jL3dzY3JpcHQgfCAyICstCisgbGliL3RkYi93c2NyaXB0ICAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2xkYi93c2NyaXB0IGIvbGliL2xkYi93c2NyaXB0CitpbmRleCA1ZWE1MjMxLi5kOTQwODZiIDEwMDY0NAorLS0tIGEvbGliL2xkYi93c2NyaXB0CisrKysgYi9saWIvbGRiL3dzY3JpcHQKK0BAIC05OCw3ICs5OCw3IEBAIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgICAgICBjb25mLkRFRklORSgnRVhQRUNURURfU1lTVEVNX0xEQl9WRVJTSU9OX1JFTEVBU0UnLCBpbnQodlsyXSkpCiAgCiAgICAgIGlmIGNvbmYuZW52LnN0YW5kYWxvbmVfbGRiOgogLSAgICAgICAgY29uZi5DSEVDS19YU0xUUFJPQ19NQU5QQUdFUygpCkBAIC0xNSwyNCArMjYsMjQgQEAKICAKICAgICAgICAgICMgd2UgbmVlZCB0aGlzIGZvciB0aGUgbGRhcCBiYWNrZW5kCiAgICAgICAgICBpZiBjb25mLkNIRUNLX0ZVTkNTX0lOKCdiZXJfZmx1c2ggbGRhcF9vcGVuIGxkYXBfaW5pdGlhbGl6ZScsICdsYmVyIGxkYXAnLCBoZWFkZXJzPSdsYmVyLmggbGRhcC5oJyk6Ci1JbmRleDogc2FtYmEtNC40LjIvbGliL3RhbGxvYy93c2NyaXB0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2FtYmEtNC40LjIub3JpZy9saWIvdGFsbG9jL3dzY3JpcHQKLSsrKyBzYW1iYS00LjQuMi9saWIvdGFsbG9jL3dzY3JpcHQKLUBAIC01Niw3ICs1Niw3IEBAIGRlZiBjb25maWd1cmUoY29uZik6Ci0gICAgIGlmIGNvbmYuZW52LnN0YW5kYWxvbmVfdGFsbG9jOgotICAgICAgICAgY29uZi5lbnYuVEFMTE9DX0NPTVBBVDEgPSBPcHRpb25zLm9wdGlvbnMuVEFMTE9DX0NPTVBBVDEKK2RpZmYgLS1naXQgYS9saWIvdGFsbG9jL3dzY3JpcHQgYi9saWIvdGFsbG9jL3dzY3JpcHQKK2luZGV4IGRmN2U2YmUuLmIzMzA1Y2YgMTAwNjQ0CistLS0gYS9saWIvdGFsbG9jL3dzY3JpcHQKKysrKyBiL2xpYi90YWxsb2Mvd3NjcmlwdAorQEAgLTQ5LDcgKzQ5LDcgQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKKyAgICAgICAgIGNvbmYuZW52LlBLR0NPTkZJR0RJUiA9ICcke0xJQkRJUn0vcGtnY29uZmlnJworICAgICAgICAgY29uZi5lbnYuVEFMTE9DX1ZFUlNJT04gPSBWRVJTSU9OCiAgCiAtICAgIGNvbmYuQ0hFQ0tfWFNMVFBST0NfTUFOUEFHRVMoKQogKyAgICAjY29uZi5DSEVDS19YU0xUUFJPQ19NQU5QQUdFUygpCiAgCi0gICAgIGlmIG5vdCBjb25mLmVudi5kaXNhYmxlX3B5dGhvbjoKLSAgICAgICAgICMgYWxzbyBkaXNhYmxlIGlmIHdlIGRvbid0IGhhdmUgdGhlIHB5dGhvbiBsaWJzIGluc3RhbGxlZAotSW5kZXg6IHNhbWJhLTQuNC4yL2xpYi90ZGIvd3NjcmlwdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNhbWJhLTQuNC4yLm9yaWcvbGliL3RkYi93c2NyaXB0Ci0rKysgc2FtYmEtNC40LjIvbGliL3RkYi93c2NyaXB0Ci1AQCAtOTIsNyArOTIsNyBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9hdXh2LmgnKQorICAgICBjb25mLkNIRUNLX0ZVTkNTKCdnZXRhdXh2YWwnKQorZGlmZiAtLWdpdCBhL2xpYi90ZGIvd3NjcmlwdCBiL2xpYi90ZGIvd3NjcmlwdAoraW5kZXggNDc4MjU1MC4uNmJiM2ZhMSAxMDA2NDQKKy0tLSBhL2xpYi90ZGIvd3NjcmlwdAorKysrIGIvbGliL3RkYi93c2NyaXB0CitAQCAtODksNyArODksNyBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgogICAgICAgICAgbm90IGNvbmYuZW52LmRpc2FibGVfdGRiX211dGV4X2xvY2tpbmcpOgogICAgICAgICAgY29uZi5kZWZpbmUoJ1VTRV9UREJfTVVURVhfTE9DS0lORycsIDEpCiAgCkBAIC00MSwzICs1Miw2IEBACiAgCiAgICAgIGlmIG5vdCBjb25mLmVudi5kaXNhYmxlX3B5dGhvbjoKICAgICAgICAgICMgYWxzbyBkaXNhYmxlIGlmIHdlIGRvbid0IGhhdmUgdGhlIHB5dGhvbiBsaWJzIGluc3RhbGxlZAorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvMjEtYWRkLWNvbmZpZy1vcHRpb24td2l0aG91dC12YWxncmluZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhLzIxLWFkZC1jb25maWctb3B0aW9uLXdpdGhvdXQtdmFsZ3JpbmQucGF0Y2gKaW5kZXggMDI1YWMyNy4uNmE3ZjhmYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvMjEtYWRkLWNvbmZpZy1vcHRpb24td2l0aG91dC12YWxncmluZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS8yMS1hZGQtY29uZmlnLW9wdGlvbi13aXRob3V0LXZhbGdyaW5kLnBhdGNoCkBAIC02LDYgKzYsNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBsaWIvcmVwbGFjZS93c2NyaXB0IHwgNCArKystCiAgc291cmNlMy93c2NyaXB0ICAgICB8IDUgKysrKy0KQEAgLTE2LDkgKzE3LDkgQEAKIGluZGV4IGYwMDQwYjEuLmFjYTczYWYgMTAwNjQ0CiAtLS0gYS9saWIvcmVwbGFjZS93c2NyaXB0CiArKysgYi9saWIvcmVwbGFjZS93c2NyaXB0Ci1AQCAtMTAxLDcgKzEwMSw5IEBAIHN0cnVjdCBmb28gYmFyID0geyAueSA9ICdYJywgLnggPSAxIH07Ci0gCi0gICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJywgaGVhZGVycz0ncnBjL3JwYy5oIHJwY3N2Yy95cF9wcm90LmgnLCBkZWZpbmU9J0hBVkVfUlBDU1ZDX1lQX1BST1RfSCcpCitAQCAtMTAxLDcgKzEwMSw5IEBAIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2ZpbGVpby5oIHN5cy9maWxlc3lzLmggc3lzL2R1c3RhdC5oIHN5cy9zeXNtYWNyb3MuaCcpCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygneGZzL2xpYnhmcy5oIG5ldGdyb3VwLmgnKQogIAogLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3ZhbGdyaW5kLmggdmFsZ3JpbmQvdmFsZ3JpbmQuaCB2YWxncmluZC9tZW1jaGVjay5oJykKICsgICAgaWYgbm90IE9wdGlvbnMub3B0aW9ucy5kaXNhYmxlX3ZhbGdyaW5kOgpAQCAtMjYsMTIgKzI3LDEyIEBACiArCiAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbnNzX2NvbW1vbi5oIG5zc3dpdGNoLmggbnNfYXBpLmgnKQogICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9leHRhdHRyLmggc3lzL2VhLmggc3lzL3Byb3BsaXN0Lmggc3lzL2NkZWZzLmgnKQotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3V0bXAuaCB1dG1weC5oIGxhc3Rsb2cuaCBtYWxsb2MuaCcpCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygndXRtcC5oIHV0bXB4LmggbGFzdGxvZy5oJykKIGRpZmYgLS1naXQgYS9zb3VyY2UzL3dzY3JpcHQgYi9zb3VyY2UzL3dzY3JpcHQKIGluZGV4IGJhYzNkZDUuLmE1YzUxZWEgMTAwNjQ0CiAtLS0gYS9zb3VyY2UzL3dzY3JpcHQKICsrKyBiL3NvdXJjZTMvd3NjcmlwdAotQEAgLTEwMTYsNyArMTAxNiwxMCBAQCBzeXNjYWxsKFNZU19zZXRncm91cHMzMiwgMCwgTlVMTCk7CitAQCAtMTA3MCw3ICsxMDcwLDEwIEBAIHN5c2NhbGwoU1lTX3NldGdyb3VwczMyLCAwLCBOVUxMKTsKICAgICAgICAgICAgICBMb2dzLndhcm4oIi0td2l0aC1kbnN1cGRhdGU9eWVzIGJ1dCBnc3NhcGkgc3VwcG9ydCBub3Qgc3VmZmljaWVudCIpCiAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgIGNvbmYuREVGSU5FKCdXSVRIX0ROU19VUERBVEVTJywgMSkKQEAgLTQ0LDEyICs0NSwxMiBAQAogICAgICAgICAgaWYgY29uZi5DT05GSUdfU0VUKCdIQVZFX1ZBTEdSSU5EX0gnKSBvciBjb25mLkNPTkZJR19TRVQoJ0hBVkVfVkFMR1JJTkRfVkFMR1JJTkRfSCcpOgogICAgICAgICAgICAgIGNvbmYuREVGSU5FKCdWQUxHUklORCcsICcxJykKIGRpZmYgLS1naXQgYS93c2NyaXB0IGIvd3NjcmlwdAotaW5kZXggNzY3OWMwZi4uNjgxYWMxNyAxMDA2NDQKK2luZGV4IDU0MmE2MGMuLjIyZTYxMTYgMTAwNjQ0CiAtLS0gYS93c2NyaXB0CiArKysgYi93c2NyaXB0Ci1AQCAtNzIsNiArNzIsMTAgQEAgZGVmIHNldF9vcHRpb25zKG9wdCk6Ci0gICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHN5c3RlbWQgaW50ZWdyYXRpb24iKSwKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlc3Q9J2VuYWJsZV9zeXN0ZW1kJykKK0BAIC04Niw2ICs4NiwxMCBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSBSRUxSTyBidWlsZHMiKSwKKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX3JlbHJvJykKICAKICsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC12YWxncmluZCcsCiArICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiB0aGUgdmFsZ3JpbmQgaGVhZGVycyIpLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvZG5zc2VydmVyLTQuNy4wLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvZG5zc2VydmVyLTQuNy4wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNzU5MmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS9kbnNzZXJ2ZXItNC43LjAucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorc2FtYmE6IGJ1aWxkIGRuc3NlcnZlcl9jb21tb24gY29kZQorCitKdXN0ICdpbnN0YWxsJyBkb2VzIG5vdCBzZWVtIHRvIGRvIGl0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCistLS0gYS9zb3VyY2U0L2Ruc19zZXJ2ZXIvd3NjcmlwdF9idWlsZAorKysrIGIvc291cmNlNC9kbnNfc2VydmVyL3dzY3JpcHRfYnVpbGQKK0BAIC00LDcgKzQsNyBAQCBibGQuU0FNQkFfTElCUkFSWSgnZG5zc2VydmVyX2NvbW1vbicsCisgICAgICAgICBzb3VyY2U9J2Ruc3NlcnZlcl9jb21tb24uYycsCisgICAgICAgICBkZXBzPSdzYW1iYS11dGlsIHNhbWJhLWVycm9ycyBsZGJzYW1iYSBjbGlkbnMnLAorICAgICAgICAgcHJpdmF0ZV9saWJyYXJ5PVRydWUsCistICAgICAgICBpbnN0YWxsPWJsZC5BRF9EQ19CVUlMRF9JU19FTkFCTEVEKCkKKysgICAgICAgIGVuYWJsZWQ9YmxkLkFEX0RDX0JVSUxEX0lTX0VOQUJMRUQoKQorICAgICAgICAgKQorIAorIGJsZC5TQU1CQV9NT0RVTEUoJ3NlcnZpY2VfZG5zJywKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhL2ljb252LTQuNy4wLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvaWNvbnYtNC43LjAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFlOGM1OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhL2ljb252LTQuNy4wLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK3NhbWJhOiBkZWZlYXQgaWNvbnYgdGVzdAorCitBIHRlc3Qgd2FzIGFkZGVkIHdoZW4gY29uZmlndXJpbmcgc2FtYmEgd2hpY2ggcmVxdWlyZXMgdGFyZ2V0IGNvZGUKK3RvIGJlIGV4ZWN1dGVkLiAgSW4gZ2VuZXJhbCwgdGhpcyB3aWxsIG5vdCB3b3JrLCBzbyB3ZSBlbGltaW5hdGUgaXQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKy0tLSBhL2xpYi91dGlsL2NoYXJzZXQvd3NjcmlwdF9jb25maWd1cmUKKysrKyBiL2xpYi91dGlsL2NoYXJzZXQvd3NjcmlwdF9jb25maWd1cmUKK0BAIC0xNyw2ICsxNyw4IEBAIGlmIChjb25mLkNIRUNLX0ZVTkNTX0lOKCdpY29udl9vcGVuJywgJ2kKKyAgICAgCisgICAgIGNvbmYuREVGSU5FKCdIQVZFX05BVElWRV9JQ09OVicsIDEpCisgCisrIiIiCisrW2FkZGVkIGZvciA0LjcuMCwgYnV0IGJyZWFrcyBjcm9zcy1jb21waWxhdGlvbl0KKyBjb25mLkNIRUNLX0NPREUoJycnCisgICAgICAgICAgICAgICAgIHVpbnQ4X3QgaW5idWZbMl0gPSB7IDB4MzAsIDB4ZGYgfTsKKyAgICAgICAgICAgICAgICAgdWludDhfdCBvdXRidWZbNF0gPSB7IDAgfTsKK0BAIC0zNiwzICszOCw0IEBAIGNvbmYuQ0hFQ0tfQ09ERSgnJycKKyAgICAgICAgICAgICAgICAgbXNnPSdDaGVja2luZyBlcnJubyBvZiBpY29udiBmb3IgaWxsZWdhbCBtdWx0aWJ5dGUgc2VxdWVuY2UnLAorICAgICAgICAgICAgICAgICBsaWI9J2ljb252JywKKyAgICAgICAgICAgICAgICAgaGVhZGVycz0nZXJybm8uaCBpY29udi5oJykKKysiIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhL3NhbWJhLTQuMi43LXBhbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhL3NhbWJhLTQuMi43LXBhbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI5YWRlOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS9zYW1iYS00LjIuNy1wYW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1MaWZ0ZWQgZnJvbSBnZW50b28gYW5kIHBvcnRlZCB0byA0LjQuNQotCi1odHRwOi8vZGF0YS5ncG8uenVnYWluYS5vcmcvbXVzbC9uZXQtZnMvc2FtYmEvZmlsZXMvc2FtYmEtNC4yLjctcGFtLnBhdGNoCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLQotSW5kZXg6IHNhbWJhLTQuNC41L3NvdXJjZTMvd3NjcmlwdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNhbWJhLTQuNC41Lm9yaWcvc291cmNlMy93c2NyaXB0Ci0rKysgc2FtYmEtNC40LjUvc291cmNlMy93c2NyaXB0Ci1AQCAtODczLDcgKzg3Myw3IEBAIG1zZy5tc2dfYWNjcmlnaHRzbGVuID0gc2l6ZW9mKGZkKTsKLSAgICAgICAgIGlmIGNvbmYuZW52LndpdGhfaWNvbnY6Ci0gICAgICAgICAgICAgY29uZi5ERUZJTkUoJ0hBVkVfSUNPTlYnLCAxKQotIAotLSAgICBpZiBPcHRpb25zLm9wdGlvbnMud2l0aF9wYW06Ci0rICAgIGlmIE9wdGlvbnMub3B0aW9ucy53aXRoX3BhbSAhPSBGYWxzZToKLSAgICAgICAgIHVzZV9wYW09VHJ1ZQotICAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzZWN1cml0eS9wYW1fYXBwbC5oIHBhbS9wYW1fYXBwbC5oJykKLSAgICAgICAgIGlmIG5vdCBjb25mLkNPTkZJR19TRVQoJ0hBVkVfU0VDVVJJVFlfUEFNX0FQUExfSCcpIGFuZCBub3QgY29uZi5DT05GSUdfU0VUKCdIQVZFX1BBTV9QQU1fQVBQTF9IJyk6Ci1AQCAtOTQ1LDYgKzk0NSwxNSBAQCBpbnQgaTsgaSA9IFBBTV9SQURJT19UWVBFOwotICAgICAgICAgaWYgdXNlX3BhbToKLSAgICAgICAgICAgICBjb25mLkRFRklORSgnV0lUSF9QQU0nLCAxKQotICAgICAgICAgICAgIGNvbmYuREVGSU5FKCdXSVRIX1BBTV9NT0RVTEVTJywgMSkKLSsgICAgZWxzZToKLSsgICAgICAgIExvZ3Mud2FybigiUEFNIGRpc2FibGVkIikKLSsgICAgICAgIHVzZV9wYW09RmFsc2UKLSsgICAgICAgIGNvbmYudW5kZWZpbmUoJ1dJVEhfUEFNJykKLSsgICAgICAgIGNvbmYudW5kZWZpbmUoJ1dJVEhfUEFNX01PRFVMRVMnKQotKyAgICAgICAgY29uZi51bmRlZmluZSgnSEFWRV9TRUNVUklUWV9QQU1fQVBQTF9IJykKLSsgICAgICAgIGNvbmYudW5kZWZpbmUoJ1BBTV9SSE9TVCcpCi0rICAgICAgICBjb25mLnVuZGVmaW5lKCdQQU1fVFRZJykKLSsgICAgICAgIGNvbmYudW5kZWZpbmUoJ0hBVkVfUEFNX1BBTV9BUFBMX0gnKQotIAotICAgICBzZXRldWlkID0gRmFsc2UKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhL3NhbWJhLXBhbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhL3NhbWJhLXBhbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2JhY2I2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvc2FtYmEtcGFtLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0xpZnRlZCBmcm9tIGdlbnRvbyBhbmQgcG9ydGVkIHRvIDQuNC41CisKK2h0dHA6Ly9kYXRhLmdwby56dWdhaW5hLm9yZy9tdXNsL25ldC1mcy9zYW1iYS9maWxlcy9zYW1iYS00LjIuNy1wYW0ucGF0Y2gKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworSW5kZXg6IHNhbWJhLTQuNy4wL3NvdXJjZTMvd3NjcmlwdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNhbWJhLTQuNy4wLm9yaWcvc291cmNlMy93c2NyaXB0CisrKysgc2FtYmEtNC43LjAvc291cmNlMy93c2NyaXB0CitAQCAtODc1LDcgKzg3NSw3IEBAIG1zZy5tc2dfYWNjcmlnaHRzbGVuID0gc2l6ZW9mKGZkKTsKKyAgICAgICAgIGlmIGNvbmYuZW52LndpdGhfaWNvbnY6CisgICAgICAgICAgICAgY29uZi5ERUZJTkUoJ0hBVkVfSUNPTlYnLCAxKQorIAorLSAgICBpZiBPcHRpb25zLm9wdGlvbnMud2l0aF9wYW06CisrICAgIGlmIE9wdGlvbnMub3B0aW9ucy53aXRoX3BhbSAhPSBGYWxzZToKKyAgICAgICAgIHVzZV9wYW09VHJ1ZQorICAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzZWN1cml0eS9wYW1fYXBwbC5oIHBhbS9wYW1fYXBwbC5oJykKKyAgICAgICAgIGlmIG5vdCBjb25mLkNPTkZJR19TRVQoJ0hBVkVfU0VDVVJJVFlfUEFNX0FQUExfSCcpIGFuZCBub3QgY29uZi5DT05GSUdfU0VUKCdIQVZFX1BBTV9QQU1fQVBQTF9IJyk6CitAQCAtOTUyLDYgKzk1MiwxNyBAQCBpbnQgaTsgaSA9IFBBTV9SQURJT19UWVBFOworICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGhlYWRlcnMgbm90IGZvdW5kLiBVc2UgLS13aXRob3V0LXBhbSB0byBkaXNhYmxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJQQU0gc3VwcG9ydC4iKTsKKyAKKysgICAgZWxzZToKKysgICAgICAgIExvZ3Mud2FybigiUEFNIGRpc2FibGVkIikKKysgICAgICAgIHVzZV9wYW09RmFsc2UKKysgICAgICAgIGNvbmYudW5kZWZpbmUoJ1dJVEhfUEFNJykKKysgICAgICAgIGNvbmYudW5kZWZpbmUoJ1dJVEhfUEFNX01PRFVMRVMnKQorKyAgICAgICAgY29uZi51bmRlZmluZSgnSEFWRV9TRUNVUklUWV9QQU1fQVBQTF9IJykKKysgICAgICAgIGNvbmYudW5kZWZpbmUoJ1BBTV9SSE9TVCcpCisrICAgICAgICBjb25mLnVuZGVmaW5lKCdQQU1fVFRZJykKKysgICAgICAgIGNvbmYudW5kZWZpbmUoJ0hBVkVfUEFNX1BBTV9BUFBMX0gnKQorKworKworICAgICBzZXRldWlkID0gRmFsc2UKKyAKKyAjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS9zbWJfY29uZi00LjcuMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhL3NtYl9jb25mLTQuNy4wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3YzhiMzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS9zbWJfY29uZi00LjcuMC5wYXRjaApAQCAtMCwwICsxLDE5IEBACitzYW1iYTogY29ycmVjdCBsb2cgZmlsZXMgbG9jYXRpb24KKworV2UgdXNlIC92YXIvbG9nL3NhbWJhLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCistLS0gYS9wYWNrYWdpbmcvUkhFTC9zZXR1cC9zbWIuY29uZgorKysrIGIvcGFja2FnaW5nL1JIRUwvc2V0dXAvc21iLmNvbmYKK0BAIC02Myw3ICs2Myw3IEBACisgCisgIyB0aGlzIHRlbGxzIFNhbWJhIHRvIHVzZSBhIHNlcGFyYXRlIGxvZyBmaWxlIGZvciBlYWNoIG1hY2hpbmUKKyAjIHRoYXQgY29ubmVjdHMKKy0gICBsb2cgZmlsZSA9IC91c3IvbG9jYWwvc2FtYmEvdmFyL2xvZy4lbQorKyAgIGxvZyBmaWxlID0gL3Zhci9sb2cvc2FtYmEvbG9nLiVtCisgCisgIyBQdXQgYSBjYXBwaW5nIG9uIHRoZSBzaXplIG9mIHRoZSBsb2cgZmlsZXMgKGluIEtiKS4KKyAgICBtYXggbG9nIHNpemUgPSA1MApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC42LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYV80LjYuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIyMjdjOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYV80LjYuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1NiArMCwwIEBACi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5zYW1iYS5vcmcvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiR1BMLTMuMCsgJiBMR1BMLTMuMCsgJiBHUEwtMi4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0xHUEwtMy4wO21kNT1iZmNjZmU5NTIyNjlmZmYyYjQwN2RkMTFmMmYzMDgzYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9HUEwtMi4wO21kNT04MDFmODA5ODBkMTcxZGQ2NDI1NjEwODMzYTIyZGJlNiAiCi0KLVNBTUJBX01JUlJPUiA9ICJodHRwOi8vc2FtYmEub3JnL3NhbWJhL2Z0cCIKLU1JUlJPUlMgKz0gIlwKLSR7U0FNQkFfTUlSUk9SfSAgICBodHRwOi8vbWlycm9yLmludGVybm9kZS5vbi5uZXQvcHViL3NhbWJhIFxuIFwKLSR7U0FNQkFfTUlSUk9SfSAgICBodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnL3NpdGVzL2Z0cC5zYW1iYS5vcmcgXG4gXAotIgotCi1TUkNfVVJJID0gIiR7U0FNQkFfTUlSUk9SfS9zdGFibGUvc2FtYmEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzE2LWRvLW5vdC1jaGVjay14c2x0cHJvYy1tYW5wYWdlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8yMC1kby1ub3QtaW1wb3J0LXRhcmdldC1tb2R1bGUtd2hpbGUtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8yMS1hZGQtY29uZmlnLW9wdGlvbi13aXRob3V0LXZhbGdyaW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGFja2FnaW5nLUF2b2lkLXRpbWVvdXQtZm9yLW5tYmQtaWYtc3RhcnRlZC1vZmZsaW5lLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LWF2b2lkLXVzaW5nLWNvbG9uLWluLXRoZS1jaGVja2luZy1tc2cucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmV0ZGJfZGVmaW5lcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nbGliY19vbmx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wM19zYW1iYSBcCi0gICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9zYW1iYS00LjIuNy1wYW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2FtYmEtNC4zLjktcmVtb3ZlLWdldHB3ZW50X3IucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImM2ZWU1Yzc2NjAxNmQ1OTkwOGM4ZmI2NzJmYmJkNDQ1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllZjI0MzkzZGUwODM5MGYyMzZjYWJjY2Q2YTQyMGI1Y2VhMzA0ZTk1OWNiZjFhOTlmZjMxNzMyNWRiM2RkZmEiCi0KLWluaGVyaXQgc3lzdGVtZCB3YWYtc2FtYmEgY3Bhbi1iYXNlIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQKLSMgcmVtb3ZlIGRlZmF1bHQgYWRkZWQgUkRFUEVORFMgb24gcGVybAotUkRFUEVORFNfJHtQTn1fcmVtb3ZlID0gInBlcmwiCi0KLURFUEVORFMgKz0gInJlYWRsaW5lIHZpcnR1YWwvbGliaWNvbnYgemxpYiBwb3B0IGxpYnRhbGxvYyBsaWJ0ZGIgbGlidGV2ZW50IGxpYmxkYiBrcmI1IGxpYmJzZCBsaWJhaW8gbGlicGFtIgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyIKLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjIgotTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbHRpcnBjIgotCi1MU0IgPSAiIgotTFNCX2xpbnV4c3RkYmFzZSA9ICJsc2IiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJzYW1iYSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDIwIDMgNSAuIHN0b3AgMjAgMCAxIDYgLiIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1iYXNlIHdpbmJpbmQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmFzZSA9ICJubWIuc2VydmljZSBzbWIuc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV93aW5iaW5kID0gIndpbmJpbmQuc2VydmljZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQgemVyb2NvbmYnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGFjbCBjdXBzIGxkYXAgXAotIgotCi1SREVQRU5EU18ke1BOfS1iYXNlICs9ICIke0xTQn0iCi1SREVQRU5EU18ke1BOfS1jdGRiLXRlc3RzICs9ICJiYXNoIHV0aWwtbGludXgtZ2V0b3B0IgotCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbC1zdXBwb3J0LC0td2l0aG91dC1hY2wtc3VwcG9ydCxhY2wiCi1QQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgotUEFDS0FHRUNPTkZJR1tjdXBzXSA9ICItLWVuYWJsZS1jdXBzLC0tZGlzYWJsZS1jdXBzLGN1cHMiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICIsLGN5cnVzLXNhc2wiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLC0td2l0aG91dC1zeXN0ZW1kLHN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW2RtYXBpXSA9ICItLXdpdGgtZG1hcGksLS13aXRob3V0LWRtYXBpLGRtYXBpIgotUEFDS0FHRUNPTkZJR1t6ZXJvY29uZl0gPSAiLS1lbmFibGUtYXZhaGksLS1kaXNhYmxlLWF2YWhpLGF2YWhpIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCwiCi1QQUNLQUdFQ09ORklHW2x0dG5nXSA9ICItLXdpdGgtbHR0bmcsIC0td2l0aG91dC1sdHRuZyxsdHRuZy11c3QiCi1QQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi0td2l0aC1saWJhcmNoaXZlLCAtLXdpdGhvdXQtbGliYXJjaGl2ZSwgbGliYXJjaGl2ZSIKLQotCi1TQU1CQTRfSURNQVBfTU9EVUxFUz0iaWRtYXBfYWQsaWRtYXBfcmlkLGlkbWFwX2FkZXgsaWRtYXBfaGFzaCxpZG1hcF90ZGIyIgotU0FNQkE0X1BEQl9NT0RVTEVTPSJwZGJfdGRic2FtLCR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xkYXAnLCAncGRiX2xkYXAsJywgJycsIGQpfXBkYl9hZHMscGRiX3NtYnBhc3N3ZCxwZGJfd2JjX3NhbSxwZGJfc2FtYmE0IgotU0FNQkE0X0FVVEhfTU9EVUxFUz0iYXV0aF91bml4LGF1dGhfd2JjLGF1dGhfc2VydmVyLGF1dGhfbmV0bG9nb25kLGF1dGhfc2NyaXB0LGF1dGhfc2FtYmE0IgotU0FNQkE0X01PRFVMRVM9IiR7U0FNQkE0X0lETUFQX01PRFVMRVN9LCR7U0FNQkE0X1BEQl9NT0RVTEVTfSwke1NBTUJBNF9BVVRIX01PRFVMRVN9IgotCi1TQU1CQTRfTElCUz0iaGVpbWRhbCwhemxpYiwhcG9wdCwhdGFsbG9jLCFweXRhbGxvYywhcHl0YWxsb2MtdXRpbCwhdGV2ZW50LCFweXRldmVudCwhdGRiLCFweXRkYiwhbGRiLCFweWxkYiIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1maHMgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtcGlkZGlyPS9ydW4gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtc29ja2V0cy1kaXI9L3J1bi9zYW1iYSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1tb2R1bGVzZGlyPSR7bGliZGlyfS9zYW1iYSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1sb2NrZGlyPSR7bG9jYWxzdGF0ZWRpcn0vbGliL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWNhY2hlZGlyPSR7bG9jYWxzdGF0ZWRpcn0vbGliL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdudXRscyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXNoYXJlZC1tb2R1bGVzPSR7U0FNQkE0X01PRFVMRVN9IFwKLSAgICAgICAgICAgICAgICAgLS1idW5kbGVkLWxpYnJhcmllcz0ke1NBTUJBNF9MSUJTfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW0tbWl0a3JiNSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1hZC1kYyBcCi0gICAgICAgICAgICAgICAgICR7QGJhc2VfY29uZGl0aW9uYWwoJ1RBUkdFVF9BUkNIJywgJ3g4Nl82NCcsICcnLCAnLS1kaXNhYmxlLWdsdXN0ZXJmcycsIGQpfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1jbHVzdGVyLXN1cHBvcnQgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtcHJvZmlsaW5nLWRhdGEgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1wYW0gLS13aXRoLXBhbW1vZHVsZXNkaXI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkgXAotICAgICAgICAgICAgICAgICIKLQotTERGTEFHUyArPSAiLVdsLC16LHJlbHJvLC16LG5vdyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBmb3Igc2VjdGlvbiBpbiAxIDUgNzsgZG8KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCBjdGRiL2RvYy8qLiRzZWN0aW9uICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KLSAgICBkb25lCi0gICAgZm9yIHNlY3Rpb24gaW4gMSA1IDcgODsgZG8KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCBkb2NzL21hbnBhZ2VzLyouJHNlY3Rpb24gJHtEfSR7bWFuZGlyfS9tYW4kc2VjdGlvbgotICAgIGRvbmUKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICBpbnN0YWxsIC1tIDA2NDQgcGFja2FnaW5nL3N5c3RlbWQvKi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0gICAgc2VkIC1lICdzLFwoRXhlY1JlbG9hZD1cKS4qXCgva2lsbFwpLFwxJHtiYXNlX2JpbmRpcn1cMiwnIFwKLSAgICAgICAgLWUgJ3MsL2V0Yy9zeXNjb25maWcvc2FtYmEsJHtzeXNjb25mZGlyfS9kZWZhdWx0L3NhbWJhLCcgXAotICAgICAgICAtaSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8qLnNlcnZpY2UKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuY29uZi50bXAgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zYW1iYS5jb25mCi0gICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSAwNzU1IHJvb3Qgcm9vdCAtIiBcCi0gICAgICAgID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvc2FtYmEuY29uZgotICAgIGlmIFsgIiR7TFNCfSIgPSAibHNiIiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSBwYWNrYWdpbmcvTFNCL3NhbWJhLnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYQotICAgIGVsc2UKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1IHBhY2thZ2luZy9zeXN2L3NhbWJhLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCi0gICAgICAgIHNlZCAtZSAncywvb3B0L3NhbWJhL2Jpbiwke3NiaW5kaXJ9LGcnIFwKLSAgICAgICAgICAgIC1lICdzLC9vcHQvc2FtYmEvc21iLmNvbmYsJHtzeXNjb25mZGlyfS9zYW1iYS9zbWIuY29uZixnJyBcCi0gICAgICAgICAgICAtZSAncywvb3B0L3NhbWJhL2xvZywke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSxnJyBcCi0gICAgICAgICAgICAtZSAncywvZXRjL2luaXQuZC9zYW1iYS5zZXJ2ZXIsJHtzeXNjb25mZGlyfS9pbml0LmQvc2FtYmEsZycgXAotICAgICAgICAgICAgLWUgJ3MsL3Vzci9iaW4sJHtiYXNlX2JpbmRpcn0sZycgXAotICAgICAgICAgICAgLWkgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCi0gICAgZmkKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc2FtYmEKLSAgICBlY2hvICIxMjcuMC4wLjEgbG9jYWxob3N0IiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhL2xtaG9zdHMKLSAgICBpbnN0YWxsIC1tNjQ0IHBhY2thZ2luZy9MU0Ivc21iLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc2FtYmEvc21iLmNvbmYKLSAgICBpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy4wM19zYW1iYSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wM19zYW1iYQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0gICAgaW5zdGFsbCAtbTY0NCBwYWNrYWdpbmcvc3lzdGVtZC9zYW1iYS5zeXNjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9zYW1iYQotCi0gICAgIyBpbnN0YWxsIGN0ZGIgY29uZmlnIGZpbGUgYW5kIHRlc3QgY2FzZXMKLSAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtTfS9jdGRiL3Rlc3RzL29ubm9kZS9ub2RlcyAke0R9JHtzeXNjb25mZGlyfS9jdGRiL25vZGVzCi0gICAgIyB0aGUgaXRlbXMgYXJlIGZyb20gY3RkYi90ZXN0cy9ydW5fdGVzdHMuc2gKLSAgICBmb3IgZCBpbiBvbm5vZGUgdGFrZW92ZXIgdG9vbCBldmVudHNjcmlwdHMgY3VuaXQgc2ltcGxlIGNvbXBsZXg7IGRvCi0gICAgICAgIHRlc3RkaXI9JHtEfSR7ZGF0YWRpcn0vY3RkYi10ZXN0cy8kZAotICAgICAgICBpbnN0YWxsIC1kICR0ZXN0ZGlyCi0gICAgICAgIGNwICR7U30vY3RkYi90ZXN0cy8kZC8qLnNoICR0ZXN0ZGlyCi0gICAgICAgIGNwIC1yICR7U30vY3RkYi90ZXN0cy8kZC9zY3JpcHRzICR7U30vY3RkYi90ZXN0cy8kZC9zdHVicyAkdGVzdGRpciB8fCB0cnVlCi0gICAgZG9uZQotCi0gICAgIyBmaXggZmlsZS1yZGVwcyBxYSB3YXJuaW5nCi0gICAgaWYgWyAtZiAke0R9JHtiaW5kaXJ9L29ubm9kZSBdOyB0aGVuCi0gICAgICAgIHNlZCAtaSAnczpcKCMhL2Jpbi9cKWJhc2g6XDFzaDonICR7RH0ke2JpbmRpcn0vb25ub2RlCi0gICAgZmkKLQotICAgIGNobW9kIDA3NTAgJHtEfSR7c3lzY29uZmRpcn0vc3Vkb2Vycy5kCi0gICAgcm0gLXJmICR7RH0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2cKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXB5dGhvbiAke1BOfS1waWRsIFwKLSAgICAgICAgICAgICAke1BOfS1kc2RiLW1vZHVsZXMgJHtQTn0tdGVzdHN1aXRlIHJlZ2lzdHJ5LXRvb2xzIFwKLSAgICAgICAgICAgICB3aW5iaW5kIFwKLSAgICAgICAgICAgICAke1BOfS1jb21tb24gJHtQTn0tYmFzZSAke1BOfS1jdGRiLXRlc3RzIFwKLSAgICAgICAgICAgICBzbWJjbGllbnQiCi0KLXB5dGhvbiBzYW1iYV9wb3B1bGF0ZV9wYWNrYWdlcygpIHsKLSAgICBkZWYgbW9kdWxlX2hvb2soZmlsZSwgcGtnLCBwYXR0ZXJuLCBmb3JtYXQsIGJhc2VuYW1lKToKLSAgICAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQotICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJXMtYmFzZScgJSBwbiwgJyAlcycgJSBwa2cpCi0KLSAgICBtbHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcsIFRydWUpIG9yICcnCi0gICAgcGFtX2xpYmRpciA9IGQuZXhwYW5kKCcke2Jhc2VfbGliZGlyfS9zZWN1cml0eScpCi0gICAgcGFtX3BrZ25hbWUgPSBtbHByZWZpeCArICdwYW0tcGx1Z2luJXMnCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGFtX2xpYmRpciwgJ15wYW1fKC4qKVwuc28kJywgcGFtX3BrZ25hbWUsICdQQU0gcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKLQotICAgIGxpYmRpciA9IGQuZ2V0VmFyKCdsaWJkaXInLCBUcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zb1wuLiokJywgJ2xpYiVzJywgJ1NhbWJhICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScke1BOfS1jb21tb24nLCBwcmVwZW5kPVRydWUsIGFsbG93X2xpbmtzPVRydWUpCi0gICAgcGtnbGliZGlyID0gJyVzL3NhbWJhJyAlIGxpYmRpcgotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBrZ2xpYmRpciwgJ15saWIoLiopXC5zbyQnLCAnbGliJXMnLCAnU2FtYmEgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWNvbW1vbicsIHByZXBlbmQ9VHJ1ZSkKLSAgICBtb2R1bGVkaXIgPSAnJXMvc2FtYmEvYXV0aCcgJSBsaWJkaXIKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBtb2R1bGVkaXIsICdeKC4qKVwuc28kJywgJ3NhbWJhLWF1dGgtJXMnLCAnU2FtYmEgJXMgYXV0aGVudGljYXRpb24gYmFja2VuZCcsIGhvb2s9bW9kdWxlX2hvb2ssIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKLSAgICBtb2R1bGVkaXIgPSAnJXMvc2FtYmEvcGRiJyAlIGxpYmRpcgotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIG1vZHVsZWRpciwgJ14oLiopXC5zbyQnLCAnc2FtYmEtcGRiLSVzJywgJ1NhbWJhICVzIHBhc3N3b3JkIGJhY2tlbmQnLCBob29rPW1vZHVsZV9ob29rLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCi19Ci0KLVBBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic2FtYmFfcG9wdWxhdGVfcGFja2FnZXMgIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tYmFzZSAke1BOfS1weXRob24gJHtQTn0tZHNkYi1tb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tcHl0aG9uICs9ICJweXRhbGxvYyBweXRob24tdGRiIgotCi1GSUxFU18ke1BOfS1iYXNlID0gIiR7c2JpbmRpcn0vbm1iZCBcCi0gICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0vc21iZCBcCi0gICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAotICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L25tYmQgXAotICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9ubWIuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc2FtYmEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc21iLnNlcnZpY2UiCi0KLUZJTEVTXyR7UE59LWN0ZGItdGVzdHMgPSAiJHtiaW5kaXJ9L2N0ZGJfcnVuX3Rlc3RzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2N0ZGJfcnVuX2NsdXN0ZXJfdGVzdHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2N0ZGIvbm9kZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2N0ZGItdGVzdHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2N0ZGIvdGVzdHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtCUE59LWNvbW1vbiA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS92ZnMvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NoYXJzZXQvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyouZGF0IFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vYXV0aC8qLnNvIFwKLSIKLQotRklMRVNfJHtQTn0tZHNkYi1tb2R1bGVzID0gIiR7bGliZGlyfS9zYW1iYS9sZGIiCi0KLUZJTEVTXyR7UE59LXRlc3RzdWl0ZSA9ICIke2JpbmRpcn0vZ2VudGVzdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2t0ZXN0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbWFza3Rlc3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9uZHJkdW1wIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idG9ydHVyZSIKLQotRklMRVNfcmVnaXN0cnktdG9vbHMgPSAiJHtiaW5kaXJ9L3JlZ2RpZmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JlZ3BhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZWdzaGVsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVndHJlZSIKLQotRklMRVNfd2luYmluZCA9ICIke3NiaW5kaXJ9L3dpbmJpbmRkIFwKLSAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3diaW5mbyBcCi0gICAgICAgICAgICAgICAgICR7YmluZGlyfS9udGxtX2F1dGggXAotICAgICAgICAgICAgICAgICAke2xpYmRpcn0vc2FtYmEvaWRtYXAgXAotICAgICAgICAgICAgICAgICAke2xpYmRpcn0vc2FtYmEvbnNzX2luZm8gXAotICAgICAgICAgICAgICAgICAke2xpYmRpcn0vd2luYmluZF9rcmI1X2xvY2F0b3Iuc28gXAotICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC93aW5iaW5kIFwKLSAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS93aW5iaW5kLnNlcnZpY2UiCi0KLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotRklMRVNfc21iY2xpZW50ID0gIiR7YmluZGlyfS9jaWZzZGQgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycGNjbGllbnQgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJjYWNscyBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNsaWVudCBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNxdW90YXMgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJnZXQgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJzcG9vbCBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnRhciBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnRyZWUgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9zbWJzcG9vbF9rcmI1X3dyYXBwZXIiCi0KLVJERVBFTkRTXyR7UE59LXBpZGxfYXBwZW5kID0gIiBwZXJsIgotRklMRVNfJHtQTn0tcGlkbCA9ICIke2JpbmRpcn0vcGlkbCAke2RhdGFkaXJ9L3Blcmw1L1BhcnNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC43LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYV80LjcuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODUxN2M1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC43LjYuYmIKQEAgLTAsMCArMSwzMTggQEAKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LnNhbWJhLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJHUEwtMy4wKyAmIExHUEwtMy4wKyAmIEdQTC0yLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvTEdQTC0zLjA7bWQ1PWJmY2NmZTk1MjI2OWZmZjJiNDA3ZGQxMWYyZjMwODNiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0dQTC0yLjA7bWQ1PTgwMWY4MDk4MGQxNzFkZDY0MjU2MTA4MzNhMjJkYmU2ICIKKworU0FNQkFfTUlSUk9SID0gImh0dHA6Ly9zYW1iYS5vcmcvc2FtYmEvZnRwIgorTUlSUk9SUyArPSAiXAorJHtTQU1CQV9NSVJST1J9ICAgIGh0dHA6Ly9taXJyb3IuaW50ZXJub2RlLm9uLm5ldC9wdWIvc2FtYmEgXG4gXAorJHtTQU1CQV9NSVJST1J9ICAgIGh0dHA6Ly93d3cubWlycm9yc2VydmljZS5vcmcvc2l0ZXMvZnRwLnNhbWJhLm9yZyBcbiBcCisiCisKK1NSQ19VUkkgPSAiJHtTQU1CQV9NSVJST1J9L3N0YWJsZS9zYW1iYS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMTYtZG8tbm90LWNoZWNrLXhzbHRwcm9jLW1hbnBhZ2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzIwLWRvLW5vdC1pbXBvcnQtdGFyZ2V0LW1vZHVsZS13aGlsZS1jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzIxLWFkZC1jb25maWctb3B0aW9uLXdpdGhvdXQtdmFsZ3JpbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wYWNrYWdpbmctQXZvaWQtdGltZW91dC1mb3Itbm1iZC1pZi1zdGFydGVkLW9mZmxpbmUtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtYXZvaWQtdXNpbmctY29sb24taW4tdGhlLWNoZWNraW5nLW1zZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZXRkYl9kZWZpbmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dsaWJjX29ubHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaWNvbnYtNC43LjAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG5zc2VydmVyLTQuNy4wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NtYl9jb25mLTQuNy4wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wM19zYW1iYSBcCisgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9zYW1iYS1wYW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2FtYmEtNC4zLjktcmVtb3ZlLWdldHB3ZW50X3IucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjAyNTMwMjFhNDVjNDc5Y2VjMWUxMzViMDA0YTAxNzdhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlZWRlMzBmYzhlZjY1MDRlMjQ2MDJmYjcyYjAwYmFhMGE3YjczYjU5ZjE2ZDI1Y2IwNzcxZGM4YzdjNTdkNmUiCisKK2luaGVyaXQgc3lzdGVtZCB3YWYtc2FtYmEgY3Bhbi1iYXNlIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQKKyMgcmVtb3ZlIGRlZmF1bHQgYWRkZWQgUkRFUEVORFMgb24gcGVybAorUkRFUEVORFNfJHtQTn1fcmVtb3ZlID0gInBlcmwiCisKK0RFUEVORFMgKz0gInJlYWRsaW5lIHZpcnR1YWwvbGliaWNvbnYgemxpYiBwb3B0IGxpYnRhbGxvYyBsaWJ0ZGIgbGlidGV2ZW50IGxpYmxkYiBsaWJic2QgbGliYWlvIGxpYnBhbSIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCisKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMiCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyIKKworTFNCID0gIiIKK0xTQl9saW51eHN0ZGJhc2UgPSAibHNiIgorCitJTklUU0NSSVBUX05BTUUgPSAic2FtYmEiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAyMCAzIDUgLiBzdG9wIDIwIDAgMSA2IC4iCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tYmFzZSAke1BOfS1hZC1kYyB3aW5iaW5kIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWJhc2UgPSAibm1iLnNlcnZpY2Ugc21iLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tYWQtZGMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWQtZGMnLCAnc2FtYmEuc2VydmljZScsICcnLCBkKX0iCitTWVNURU1EX1NFUlZJQ0Vfd2luYmluZCA9ICJ3aW5iaW5kLnNlcnZpY2UiCisKKyMgVGhlcmUgYXJlIHByZXJlcXVpc2l0ZSBzZXR0aW5ncyB0byBlbmFibGUgYWQtZGMsIHNvIGRpc2FibGUgdGhlIHNlcnZpY2UgYnkgZGVmYXVsdC4KKyMgUmVmZXJlbmNlOgorIyBodHRwczovL3dpa2kuc2FtYmEub3JnL2luZGV4LnBocC9TZXR0aW5nX3VwX1NhbWJhX2FzX2FuX0FjdGl2ZV9EaXJlY3RvcnlfRG9tYWluX0NvbnRyb2xsZXIKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0tYWQtZGMgPSAiZGlzYWJsZSIKKworIyBVc2Uga3JiNS4gIEJ1aWxkIGFjdGl2ZSBkb21haW4gY29udHJvbGxlci4KKyMKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kIHplcm9jb25mJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICBhY2wgYWQtZGMgY3VwcyBnbnV0bHMgbGRhcCBtaXRrcmI1IFwKKyIKKworUkRFUEVORFNfJHtQTn0tYmFzZSArPSAiJHtMU0J9IgorUkRFUEVORFNfJHtQTn0tY3RkYi10ZXN0cyArPSAiYmFzaCB1dGlsLWxpbnV4LWdldG9wdCIKKworUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1hY2wtc3VwcG9ydCwtLXdpdGhvdXQtYWNsLXN1cHBvcnQsYWNsIgorUEFDS0FHRUNPTkZJR1tmYW1dID0gIi0td2l0aC1mYW0sLS13aXRob3V0LWZhbSxnYW1pbiIKK1BBQ0tBR0VDT05GSUdbY3Vwc10gPSAiLS1lbmFibGUtY3VwcywtLWRpc2FibGUtY3VwcyxjdXBzIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLCxjeXJ1cy1zYXNsIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZCwtLXdpdGhvdXQtc3lzdGVtZCxzeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1tkbWFwaV0gPSAiLS13aXRoLWRtYXBpLC0td2l0aG91dC1kbWFwaSxkbWFwaSIKK1BBQ0tBR0VDT05GSUdbemVyb2NvbmZdID0gIi0tZW5hYmxlLWF2YWhpLC0tZGlzYWJsZS1hdmFoaSxhdmFoaSIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIiwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQsIgorUEFDS0FHRUNPTkZJR1tsdHRuZ10gPSAiLS13aXRoLWx0dG5nLCAtLXdpdGhvdXQtbHR0bmcsbHR0bmctdXN0IgorUEFDS0FHRUNPTkZJR1thcmNoaXZlXSA9ICItLXdpdGgtbGliYXJjaGl2ZSwgLS13aXRob3V0LWxpYmFyY2hpdmUsIGxpYmFyY2hpdmUiCisKKyMgQnVpbGRpbmcgdGhlIEFEIChBY3RpdmUgRGlyZWN0b3J5KSBEQyAoRG9tYWluIENvbnRyb2xsZXIpIHJlcXVpcmVzIEdudVRMUywKKyMgQW5kIGFkLWRjIGRvZXNuJ3Qgd29yayB3aXRoIG1pdGtyYjUgZm9yIHZlcnNpb25zIHByaW9yIHRvIDQuNy4wIGFjY29yZGluZyB0bzoKKyMgaHR0cDovL3NhbWJhLjIyODMzMjUubjQubmFiYmxlLmNvbS9zYW1iYS00LTYtNi1Vbmtub3duLWRlcGVuZGVuY3kta2RjLWluLXNlcnZpY2Uta2RjLW9iamxpc3QtdGQ0NzIyMDk2Lmh0bWwKKyMgU28gdGhlIHdvcmtpbmcgY29tYmluYXRpb24gaXM6CisjIDEpIGFkLWRjOiBlbmFibGUsIGdudXRsczogZW5hYmxlLCBtaXRrcmI1OiBkaXNhYmxlCisjIDIpIGFkLWRjOiBkaXNhYmxlLCBnbnV0bHM6IGVuYWJsZS9kaXNhYmxlLCBtaXRrcmI1OiBlbmFibGUKKyMKKyMgV2UgYXJlIG5vdyBhdCA0LjcuMCwgc28gdGFrZSB0aGUgYWJvdmUgd2l0aCBhIGdyYWluIG9mIHNhbHQuIFdlIGRvIG5vdCBuZWVkIHRvIGtub3cgd2hlcmUKKyMga3JiNWtkYyBpcyB1bmxlc3MgYWQtZGMgaXMgZW5hYmxlZCwgYnV0IHdlIHRlbGwgY29uZmlndXJlIGFueWhvdy4KKyMKK1BBQ0tBR0VDT05GSUdbYWQtZGNdID0gIiwtLXdpdGhvdXQtYWQtZGMsLCIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMsLS1kaXNhYmxlLWdudXRscyxnbnV0bHMsIgorUEFDS0FHRUNPTkZJR1ttaXRrcmI1XSA9ICItLXdpdGgtc3lzdGVtLW1pdGtyYjUgLS13aXRoLXN5c3RlbS1taXRrZGM9L3Vzci9zYmluL2tyYjVrZGMsLGtyYjUsIgorCitTQU1CQTRfSURNQVBfTU9EVUxFUz0iaWRtYXBfYWQsaWRtYXBfcmlkLGlkbWFwX2FkZXgsaWRtYXBfaGFzaCxpZG1hcF90ZGIyIgorU0FNQkE0X1BEQl9NT0RVTEVTPSJwZGJfdGRic2FtLCR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xkYXAnLCAncGRiX2xkYXAsJywgJycsIGQpfXBkYl9hZHMscGRiX3NtYnBhc3N3ZCxwZGJfd2JjX3NhbSxwZGJfc2FtYmE0IgorU0FNQkE0X0FVVEhfTU9EVUxFUz0iYXV0aF91bml4LGF1dGhfd2JjLGF1dGhfc2VydmVyLGF1dGhfbmV0bG9nb25kLGF1dGhfc2NyaXB0LGF1dGhfc2FtYmE0IgorU0FNQkE0X01PRFVMRVM9IiR7U0FNQkE0X0lETUFQX01PRFVMRVN9LCR7U0FNQkE0X1BEQl9NT0RVTEVTfSwke1NBTUJBNF9BVVRIX01PRFVMRVN9IgorCisjIFRoZXNlIGxpYnJhcmllcyBhcmUgc3VwcG9zZWQgdG8gcmVwbGFjZSBvdGhlcnMgc3VwcGxpZWQgYnkgcGFja2FnZXMsIGJ1dCBkZWNvcmF0ZSB0aGUgbmFtZXMgb2YKKyMgLnNvIGZpbGVzIHNvIHRoZXJlIHdpbGwgbm90IGJlIGEgY29uZmxpY3QuICBUaGlzIGlzIG5vdCBkb25lIGNvbnNpc3RhbnRseSwgc28gYmUgdmVyeSBjYXJlZnVsCisjIHdoZW4gYWRkaW5nIHRvIHRoaXMgbGlzdC4KKyMKK1NBTUJBNF9MSUJTPSJoZWltZGFsLGNtb2NrYSxOT05FIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWZocyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1waWRkaXI9L3J1biBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1zb2NrZXRzLWRpcj0vcnVuL3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLW1vZHVsZXNkaXI9JHtsaWJkaXJ9L3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxvY2tkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtY2FjaGVkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGgtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1zaGFyZWQtbW9kdWxlcz0ke1NBTUJBNF9NT0RVTEVTfSBcCisgICAgICAgICAgICAgICAgIC0tYnVuZGxlZC1saWJyYXJpZXM9JHtTQU1CQTRfTElCU30gXAorICAgICAgICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnVEFSR0VUX0FSQ0gnLCAneDg2XzY0JywgJycsICctLWRpc2FibGUtZ2x1c3RlcmZzJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWNsdXN0ZXItc3VwcG9ydCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1wcm9maWxpbmctZGF0YSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1saWJpY29udj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXBhbSAtLXdpdGgtcGFtbW9kdWxlc2Rpcj0ke2Jhc2VfbGliZGlyfS9zZWN1cml0eSBcCisgICAgICAgICAgICAgICAgIgorCitMREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGZvciBzZWN0aW9uIGluIDEgNSA3OyBkbworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGN0ZGIvZG9jLyouJHNlY3Rpb24gJHtEfSR7bWFuZGlyfS9tYW4kc2VjdGlvbgorICAgIGRvbmUKKyAgICBmb3Igc2VjdGlvbiBpbiAxIDUgNyA4OyBkbworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRvY3MvbWFucGFnZXMvKi4kc2VjdGlvbiAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCisgICAgZG9uZQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCBwYWNrYWdpbmcvc3lzdGVtZC8qLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBzZWQgLWUgJ3MsXChFeGVjUmVsb2FkPVwpLipcKC9raWxsXCksXDEke2Jhc2VfYmluZGlyfVwyLCcgXAorICAgICAgICAtZSAncywvZXRjL3N5c2NvbmZpZy9zYW1iYSwke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc2FtYmEsJyBcCisgICAgICAgIC1pICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Lyouc2VydmljZQorCisgICAgaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWQtZGMnLCAneWVzJywgJ25vJywgZCl9IiA9ICJubyIgXTsgdGhlbgorICAgICAgICBybSAtZiAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zYW1iYS5zZXJ2aWNlCisgICAgZmkKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuY29uZi50bXAgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zYW1iYS5jb25mCisgICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSAwNzU1IHJvb3Qgcm9vdCAtIiBcCisgICAgICAgID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvc2FtYmEuY29uZgorICAgIGlmIFsgIiR7TFNCfSIgPSAibHNiIiBdOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSBwYWNrYWdpbmcvTFNCL3NhbWJhLnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYQorICAgIGVsc2UKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1IHBhY2thZ2luZy9zeXN2L3NhbWJhLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCisgICAgICAgIHNlZCAtZSAncywvb3B0L3NhbWJhL2Jpbiwke3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgIC1lICdzLC9vcHQvc2FtYmEvc21iLmNvbmYsJHtzeXNjb25mZGlyfS9zYW1iYS9zbWIuY29uZixnJyBcCisgICAgICAgICAgICAtZSAncywvb3B0L3NhbWJhL2xvZywke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSxnJyBcCisgICAgICAgICAgICAtZSAncywvZXRjL2luaXQuZC9zYW1iYS5zZXJ2ZXIsJHtzeXNjb25mZGlyfS9pbml0LmQvc2FtYmEsZycgXAorICAgICAgICAgICAgLWUgJ3MsL3Vzci9iaW4sJHtiYXNlX2JpbmRpcn0sZycgXAorICAgICAgICAgICAgLWkgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCisgICAgZmkKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc2FtYmEKKyAgICBlY2hvICIxMjcuMC4wLjEgbG9jYWxob3N0IiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhL2xtaG9zdHMKKyAgICBpbnN0YWxsIC1tNjQ0IHBhY2thZ2luZy9SSEVML3NldHVwL3NtYi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhL3NtYi5jb25mCisgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuMDNfc2FtYmEgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDNfc2FtYmEKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc2FtYmEKKworICAgICMgaW5zdGFsbCBjdGRiIGNvbmZpZyBmaWxlIGFuZCB0ZXN0IGNhc2VzCisgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7U30vY3RkYi90ZXN0cy9vbm5vZGUvbm9kZXMgJHtEfSR7c3lzY29uZmRpcn0vY3RkYi9ub2RlcworICAgICMgdGhlIGl0ZW1zIGFyZSBmcm9tIGN0ZGIvdGVzdHMvcnVuX3Rlc3RzLnNoCisgICAgZm9yIGQgaW4gb25ub2RlIHRha2VvdmVyIHRvb2wgZXZlbnRzY3JpcHRzIGN1bml0IHNpbXBsZSBjb21wbGV4OyBkbworICAgICAgICB0ZXN0ZGlyPSR7RH0ke2RhdGFkaXJ9L2N0ZGItdGVzdHMvJGQKKyAgICAgICAgaW5zdGFsbCAtZCAkdGVzdGRpcgorICAgICAgICBjcCAke1N9L2N0ZGIvdGVzdHMvJGQvKi5zaCAkdGVzdGRpcgorICAgICAgICBjcCAtciAke1N9L2N0ZGIvdGVzdHMvJGQvc2NyaXB0cyAke1N9L2N0ZGIvdGVzdHMvJGQvc3R1YnMgJHRlc3RkaXIgfHwgdHJ1ZQorICAgIGRvbmUKKworICAgICMgZml4IGZpbGUtcmRlcHMgcWEgd2FybmluZworICAgIGlmIFsgLWYgJHtEfSR7YmluZGlyfS9vbm5vZGUgXTsgdGhlbgorICAgICAgICBzZWQgLWkgJ3M6XCgjIS9iaW4vXCliYXNoOlwxc2g6JyAke0R9JHtiaW5kaXJ9L29ubm9kZQorICAgIGZpCisKKyAgICBjaG1vZCAwNzUwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMuZAorICAgIHJtIC1yZiAke0R9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9nCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1weXRob24gJHtQTn0tcGlkbCBcCisgICAgICAgICAgICAgJHtQTn0tZHNkYi1tb2R1bGVzICR7UE59LXRlc3RzdWl0ZSByZWdpc3RyeS10b29scyBcCisgICAgICAgICAgICAgd2luYmluZCBcCisgICAgICAgICAgICAgJHtQTn0tY29tbW9uICR7UE59LWJhc2UgJHtQTn0tYWQtZGMgJHtQTn0tY3RkYi10ZXN0cyBcCisgICAgICAgICAgICAgc21iY2xpZW50ICR7UE59LWNsaWVudCAke1BOfS1zZXJ2ZXIgJHtQTn0tdGVzdCIKKworcHl0aG9uIHNhbWJhX3BvcHVsYXRlX3BhY2thZ2VzKCkgeworICAgIGRlZiBtb2R1bGVfaG9vayhmaWxlLCBwa2csIHBhdHRlcm4sIGZvcm1hdCwgYmFzZW5hbWUpOgorICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18lcy1iYXNlJyAlIHBuLCAnICVzJyAlIHBrZykKKworICAgIG1scHJlZml4ID0gZC5nZXRWYXIoJ01MUFJFRklYJywgVHJ1ZSkgb3IgJycKKyAgICBwYW1fbGliZGlyID0gZC5leHBhbmQoJyR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5JykKKyAgICBwYW1fcGtnbmFtZSA9IG1scHJlZml4ICsgJ3BhbS1wbHVnaW4lcycKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwYW1fbGliZGlyLCAnXnBhbV8oLiopXC5zbyQnLCBwYW1fcGtnbmFtZSwgJ1BBTSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJywgcHJlcGVuZD1UcnVlKQorCisgICAgbGliZGlyID0gZC5nZXRWYXIoJ2xpYmRpcicsIFRydWUpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnXmxpYiguKilcLnNvXC4uKiQnLCAnbGliJXMnLCAnU2FtYmEgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWNvbW1vbicsIHByZXBlbmQ9VHJ1ZSwgYWxsb3dfbGlua3M9VHJ1ZSkKKyAgICBwa2dsaWJkaXIgPSAnJXMvc2FtYmEnICUgbGliZGlyCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGtnbGliZGlyLCAnXmxpYiguKilcLnNvJCcsICdsaWIlcycsICdTYW1iYSAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tY29tbW9uJywgcHJlcGVuZD1UcnVlKQorICAgIG1vZHVsZWRpciA9ICclcy9zYW1iYS9hdXRoJyAlIGxpYmRpcgorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIG1vZHVsZWRpciwgJ14oLiopXC5zbyQnLCAnc2FtYmEtYXV0aC0lcycsICdTYW1iYSAlcyBhdXRoZW50aWNhdGlvbiBiYWNrZW5kJywgaG9vaz1tb2R1bGVfaG9vaywgZXh0cmFfZGVwZW5kcz0nJywgcHJlcGVuZD1UcnVlKQorICAgIG1vZHVsZWRpciA9ICclcy9zYW1iYS9wZGInICUgbGliZGlyCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbW9kdWxlZGlyLCAnXiguKilcLnNvJCcsICdzYW1iYS1wZGItJXMnLCAnU2FtYmEgJXMgcGFzc3dvcmQgYmFja2VuZCcsIGhvb2s9bW9kdWxlX2hvb2ssIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKK30KKworUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzYW1iYV9wb3B1bGF0ZV9wYWNrYWdlcyAiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1iYXNlICR7UE59LXB5dGhvbiAke1BOfS1kc2RiLW1vZHVsZXMiCitSREVQRU5EU18ke1BOfS1weXRob24gKz0gInB5dGFsbG9jIHB5dGhvbi10ZGIiCisKK0ZJTEVTXyR7UE59LWJhc2UgPSAiJHtzYmluZGlyfS9ubWJkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9zbWJkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQgXAorICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9zYW1iYSBcCisgICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbm1iZCBcCisgICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvc2FtYmEgXAorICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L25tYi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zbWIuc2VydmljZSIKKworRklMRVNfJHtQTn0tYWQtZGMgPSAiJHtzYmluZGlyfS9zYW1iYSBcCisgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NhbWJhLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy9rZGIvc2FtYmEuc28gXAorICAgICAgICAgICAgICAgICAgICAiCitSREVQRU5EU18ke1BOfS1hZC1kYyA9ICJrcmI1LWtkYyIKKworRklMRVNfJHtQTn0tY3RkYi10ZXN0cyA9ICIke2JpbmRpcn0vY3RkYl9ydW5fdGVzdHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vY3RkYl9ydW5fY2x1c3Rlcl90ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vY3RkYi9ub2RlcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY3RkYi10ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY3RkYi90ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitGSUxFU18ke0JQTn0tY29tbW9uID0gIiR7c3lzY29uZmRpcn0vZGVmYXVsdCBcCisgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc2FtYmEgXAorICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQgXAorIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3Zmcy8qLnNvIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vY2hhcnNldC8qLnNvIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vKi5kYXQgXAorICAgICAgICAgICAgICAgICR7bGliZGlyfS9hdXRoLyouc28gXAorIgorCitGSUxFU18ke1BOfS1kc2RiLW1vZHVsZXMgPSAiJHtsaWJkaXJ9L3NhbWJhL2xkYiIKKworRklMRVNfJHtQTn0tdGVzdHN1aXRlID0gIiR7YmluZGlyfS9nZW50ZXN0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9ja3Rlc3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9tYXNrdGVzdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L25kcmR1bXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJ0b3J0dXJlIgorCitGSUxFU19yZWdpc3RyeS10b29scyA9ICIke2JpbmRpcn0vcmVnZGlmZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVncGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JlZ3NoZWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZWd0cmVlIgorCitGSUxFU193aW5iaW5kID0gIiR7c2JpbmRpcn0vd2luYmluZGQgXAorICAgICAgICAgICAgICAgICAke2JpbmRpcn0vd2JpbmZvIFwKKyAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L250bG1fYXV0aCBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9pZG1hcCBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9uc3NfaW5mbyBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS93aW5iaW5kX2tyYjVfbG9jYXRvci5zbyBcCisgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3dpbmJpbmQgXAorICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3dpbmJpbmQuc2VydmljZSIKKworRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitGSUxFU19zbWJjbGllbnQgPSAiJHtiaW5kaXJ9L2NpZnNkZCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwY2NsaWVudCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNhY2xzIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY2xpZW50IFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY3F1b3RhcyBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmdldCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnNwb29sIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idGFyIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idHJlZSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3NhbWJhL3NtYnNwb29sX2tyYjVfd3JhcHBlciIKKworUkRFUEVORFNfJHtQTn0tcGlkbF9hcHBlbmQgPSAiIHBlcmwiCitGSUxFU18ke1BOfS1waWRsID0gIiR7YmluZGlyfS9waWRsICR7ZGF0YWRpcn0vcGVybDUvUGFyc2UiCisKK1JERVBFTkRTXyR7UE59LWNsaWVudCA9ICJcCisgICAgc21iY2xpZW50IFwKKyAgICB3aW5iaW5kIFwKKyAgICByZWdpc3RyeS10b29scyBcCisgICAgJHtQTn0tcGlkbCBcCisgICAgIiAKKworQUxMT1dfRU1QVFlfJHtQTn0tY2xpZW50ID0gIjEiCisKK1JERVBFTkRTXyR7UE59LXNlcnZlciA9ICJcCisgICAgJHtQTn0gXAorICAgIHdpbmJpbmQgXAorICAgIHJlZ2lzdHJ5LXRvb2xzIFwKKyAgICAiIAorCitBTExPV19FTVBUWV8ke1BOfS1zZXJ2ZXIgPSAiMSIKKworUkRFUEVORFNfJHtQTn0tdGVzdCA9ICJcCisgICAgJHtQTn0tY3RkYi10ZXN0cyBcCisgICAgJHtQTn0tdGVzdHN1aXRlIFwKKyAgICAiCisKK0FMTE9XX0VNUFRZXyR7UE59LXRlc3QgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0LzAwMDEtZml4LWRvX3BhY2thZ2UtZmFpbGVkLXNpbmNlLXNub3J0LTIuOS43LjAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC8wMDAxLWZpeC1kb19wYWNrYWdlLWZhaWxlZC1zaW5jZS1zbm9ydC0yLjkuNy4wLnBhdGNoCmluZGV4IDE1MjA1NTMuLjA0N2NhZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0LzAwMDEtZml4LWRvX3BhY2thZ2UtZmFpbGVkLXNpbmNlLXNub3J0LTIuOS43LjAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvMDAwMS1maXgtZG9fcGFja2FnZS1mYWlsZWQtc2luY2Utc25vcnQtMi45LjcuMC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gODE1ZTg2MTcyMWE5YzQzZWZkZGI3ODUyMTE0NzE0NWViYzc1NjljYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDMzNWM0YzYxODc3YzBiNjVmZjRlYzc2N2U4YWQzYWQ4YzczYzMyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFpoaXF1YW4gTGkgPHpoaXF1YW4ubGlAd2luZHJpdmVyLmNvbT4KIERhdGU6IEZyaSwgMTMgTm92IDIwMTUgMTc6NDA6MjQgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gZml4IGRvX3BhY2thZ2UgZmFpbGVkIHNpbmNlIHNub3J0IDIuOS43LjAKQEAgLTEzLDYgKzEzLDcgQEAKIFVwc3RyZWFtLVN0YXR1czpJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogWmhpcXVhbiBMaSA8emhpcXVhbi5saUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvc25vcnQuaCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKQEAgLTMwLDYgKzMxLDMgQEAKICAjaW5jbHVkZSAicHJvZmlsZXIuaCIKICAjaW5jbHVkZSAicnVsZXMuaCIKICAjaW5jbHVkZSAidHJlZW5vZGVzLmgiCi0tLQotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvMDAwMS1saWJwY2FwLXNlYXJjaC1zeXNyb290LWZvci1oZWFkZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvMDAwMS1saWJwY2FwLXNlYXJjaC1zeXNyb290LWZvci1oZWFkZXJzLnBhdGNoCmluZGV4IDU0YzJhOTUuLjJlMjhjZDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0LzAwMDEtbGlicGNhcC1zZWFyY2gtc3lzcm9vdC1mb3ItaGVhZGVycy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC8wMDAxLWxpYnBjYXAtc2VhcmNoLXN5c3Jvb3QtZm9yLWhlYWRlcnMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDRkN2ViZTNlZDZjZWU3MmJjN2RiOThiZDQwOGQyMmMxMGVmNWRkODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU4NzVkZWE5MGY3MTM1MGI3MjA1Nzg4ZmJjNjdlMzc1OTA3N2NlZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKb2UgTWFjRG9uYWxkIDxqb2VAZGVzZXJ0ZWQubmV0PgogRGF0ZTogV2VkLCAyMCBOb3YgMjAxMyAxNjowNjowNyAtMDUwMAogU3ViamVjdDogW1BBVENIXSBsaWJwY2FwOiBzZWFyY2ggc3lzcm9vdCBmb3IgaGVhZGVycwpAQCAtOSwxNSArOSwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEpvZSBNYWNEb25hbGQgPGpvZUBkZXNlcnRlZC5uZXQ+CisKIC0tLQotIGNvbmZpZ3VyZS5pbiB8ICAgIDIgKy0KKyBjb25maWd1cmUuaW4gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IGU1MmJiNmMuLjhkZWQzNWQgMTAwNjQ0CitpbmRleCA2MjU3M2E4Li5mZGVkNDViIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmluCiArKysgYi9jb25maWd1cmUuaW4KLUBAIC03OCw3ICs3OCw3IEBAIGNhc2UgIiRob3N0IiBpbgorQEAgLTY5LDcgKzY5LDcgQEAgY2FzZSAiJGhvc3QiIGluCiAgICAgIGxpbnV4PSJ5ZXMiCiAgICAgIEFDX0RFRklORShbTElOVVhdLFsxXSxbRGVmaW5lIGlmIExpbnV4XSkKICAgICAgQUNfU1VCU1QoZXh0cmFfaW5jbCkKQEAgLTI2LDYgKzI3LDMgQEAKICAgICAgOzsKICAgICotaHB1eDEwKnwqLWhwdXgxMSopCiAgICAgIEFDX0RFRklORShbSFBVWF0sWzFdLFtEZWZpbmUgaWYgSFAtVVggMTAgb3IgMTFdKQotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLWRhcC1hZGRyZXNzLXNwYWNlLWlkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZGlzYWJsZS1kYXAtYWRkcmVzcy1zcGFjZS1pZC5wYXRjaAppbmRleCAzOWU1YzljLi42YWEwYjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLWRhcC1hZGRyZXNzLXNwYWNlLWlkLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0L2Rpc2FibGUtZGFwLWFkZHJlc3Mtc3BhY2UtaWQucGF0Y2gKQEAgLTEsMTcgKzEsMjcgQEAKK0Zyb20gNWE1MzI2MGE4MTllMjg3M2Y1ODE2NWU5Njg1MjUyOTcxOTEwMWM1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENodW5yb25nIEd1byA8QjQwMjkwQGZyZWVzY2FsZS5jb20+CitEYXRlOiBNb24sIDQgTm92IDIwMTMgMTA6Mzk6NTYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc25vcnQ6IGFkZCByZWNpcGUKKwogVXBzdHJlYW0tU3RhdHVzOkluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCiBmaXggdGhlIGJlbG93IGVycm9yOgotY2hlY2tpbmcgZm9yIGRhcCBhZGRyZXNzIHNwYWNlIGlkLi4uIGNvbmZpZ3VyZTogCitjaGVja2luZyBmb3IgZGFwIGFkZHJlc3Mgc3BhY2UgaWQuLi4gY29uZmlndXJlOgogY29uZmlndXJlOiBlcnJvcjogY2Fubm90IHJ1biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nCiAKLQogU2lnbmVkLW9mZi1ieTogQ2h1bnJvbmcgR3VvIDxCNDAyOTBAZnJlZXNjYWxlLmNvbT4KIAotLS0tIGEvY29uZmlndXJlLmluCTIwMTMtMDgtMjMgMDA6MDY6MzcuMjM5MzYxOTMyIC0wNTAwCi0rKysgYi9jb25maWd1cmUuaW4JMjAxMy0wOC0yMyAwMDowNzozMi44NjAyNjY1MzQgLTA1MDAKLUBAIC02NzksMjMgKzY3OSwyMyBAQAorLS0tCisgY29uZmlndXJlLmluIHwgMzQgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggNmZlNWQ2OC4uZTc2MzZjZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtNjk4LDIzICs2OTgsMjMgQEAgaWYgdGVzdCAieCRhY19jdl9mdW5jX2RhcV9kcF9hZGRfZGMiID0gInh5ZXMiOyB0aGVuCiAgCi0gQUNfQ0hFQ0tfRlVOQ1MoW2RhcV9odXBfYXBwbHldIFtkYXFfYWNxdWlyZV93aXRoX21ldGFdKQorIGZpCiAgCiAtQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGFxIGFkZHJlc3Mgc3BhY2UgSURdKQogLUFDX1JVTl9JRkVMU0UoCkBAIC00OCw1ICs1OCw1IEBACiArIyAgICAgICAgW0RBUSB2ZXJzaW9uIHN1cHBvcnRzIGFkZHJlc3Mgc3BhY2UgSUQgaW4gaGVhZGVyLl0pCiArI2ZpCiAgCi0gIyBhbnkgc3BhcmMgcGxhdGZvcm0gaGFzIHRvIGhhdmUgdGhpcyBvbmUgZGVmaW5lZC4KLSBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHNwYXJjKQorIEFDX01TR19DSEVDS0lORyhbZm9yIGRhcSBmbG93IElEXSkKKyBBQ19SVU5fSUZFTFNFKApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZGlzYWJsZS1kYXEtZmxvdy1pZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0L2Rpc2FibGUtZGFxLWZsb3ctaWQucGF0Y2gKaW5kZXggZTZhZmNhYi4uMDRkZjM3YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZGlzYWJsZS1kYXEtZmxvdy1pZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLWRhcS1mbG93LWlkLnBhdGNoCkBAIC0xLDE2ICsxLDI2IEBACitGcm9tIDVhYTQyYTMxMzdjNjU3YjVlZGRkNDYwODM0M2FhMTg1NGJkN2NkMjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBaaGlxdWFuIExpIDx6aGlxdWFuLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDE2IE5vdiAyMDE1IDEwOjIzOjAwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNub3J0OiAyLjkuNi4wIC0+IDIuOS43LjUKKwogVXBzdHJlYW0tU3RhdHVzOkluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCiBmaXggdGhlIGJlbG93IGVycm9yOgogY2hlY2tpbmcgZm9yIGRhcSBmbG93IElELi4uIGNvbmZpZ3VyZToKIGNvbmZpZ3VyZTogZXJyb3I6IGNhbm5vdCBydW4gdGVzdCBwcm9ncmFtIHdoaWxlIGNyb3NzIGNvbXBpbGluZwogCistLS0KKyBjb25maWd1cmUuaW4gfCAzNCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQogCi0tLS0gYS9jb25maWd1cmUuaW4gICAgMjAxNS0xMC0yOCAxMDozNjo0Mi45MTg1MTI2OTAgKzA4MDAKLSsrKyBiL2NvbmZpZ3VyZS5pbiAgICAyMDE1LTEwLTI4IDEwOjM3OjM2LjczODUxMDA0OCArMDgwMAotQEAgLTcxNiwyMyArNzE2LDIzIEBACitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCBlNzYzNmNlLi4yZmJkMjk4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC03MTYsMjMgKzcxNiwyMyBAQCBoYXZlX2RhcV9hZGRyZXNzX3NwYWNlX2lkPSJ5ZXMiCiAgIyAgICAgICAgW0RBUSB2ZXJzaW9uIHN1cHBvcnRzIGFkZHJlc3Mgc3BhY2UgSUQgaW4gaGVhZGVyLl0pCiAgI2ZpCi0KKyAKIC1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkYXEgZmxvdyBJRF0pCiAtQUNfUlVOX0lGRUxTRSgKIC1bQUNfTEFOR19QUk9HUkFNKApAQCAtNDUsNiArNTUsNiBAQAogKyMgICAgQUNfREVGSU5FKFtIQVZFX0RBUV9GTE9XX0lEXSxbMV0sCiArIyAgICAgICAgW0RBUSB2ZXJzaW9uIHN1cHBvcnRzIGZsb3cgSUQgaW4gaGVhZGVyLl0pCiArI2ZpCi0KKyAKICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBEQVFfVkVSRElDVF9SRVRSWV0pCiAgQUNfUlVOX0lGRUxTRSgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0L2Rpc2FibGUtZGFxLXZlcmRpY3QtcmV0cnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLWRhcS12ZXJkaWN0LXJldHJ5LnBhdGNoCmluZGV4IDFhMTMyOTguLjE1OTU4YTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0L2Rpc2FibGUtZGFxLXZlcmRpY3QtcmV0cnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZGlzYWJsZS1kYXEtdmVyZGljdC1yZXRyeS5wYXRjaApAQCAtMSwxNiArMSwyNiBAQAorRnJvbSBiOTE2NDQzZDQzZjJlMWVlYWNmYmVkMDAzMzI3NGEwMjcwZWY2MzRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWmhpcXVhbiBMaSA8emhpcXVhbi5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxNiBOb3YgMjAxNSAxMDoyMzowMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBzbm9ydDogMi45LjYuMCAtPiAyLjkuNy41CisKIFVwc3RyZWFtLVN0YXR1czpJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAogZml4IHRoZSBiZWxvdyBlcnJvcjoKIGNoZWNraW5nIGZvciBEQVFfVkVSRElDVF9SRVRSWS4uLiBjb25maWd1cmU6CiBjb25maWd1cmU6IGVycm9yOiBjYW5ub3QgcnVuIHRlc3QgcHJvZ3JhbSB3aGlsZSBjcm9zcyBjb21waWxpbmcKIAorLS0tCisgY29uZmlndXJlLmluIHwgMzQgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKIAotLS0tIGEvY29uZmlndXJlLmluICAgIDIwMTUtMTAtMjggMTA6NDU6MTguMTc0NDg3Mzk1ICswODAwCi0rKysgYi9jb25maWd1cmUuaW4gICAgMjAxNS0xMC0yOCAxMDo0NTo0Ny41ODY0ODU5NTEgKzA4MDAKLUBAIC03MzQsMjMgKzczNCwyMyBAQAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggMmZiZDI5OC4uNjI1NzNhOCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtNzM0LDIzICs3MzQsMjMgQEAgaGF2ZV9kYXFfZmxvd19pZD0ieWVzIgogICMgICAgICAgIFtEQVEgdmVyc2lvbiBzdXBwb3J0cyBmbG93IElEIGluIGhlYWRlci5dKQogICNmaQotCisgCiAtQUNfTVNHX0NIRUNLSU5HKFtmb3IgREFRX1ZFUkRJQ1RfUkVUUlldKQogLUFDX1JVTl9JRkVMU0UoCiAtW0FDX0xBTkdfUFJPR1JBTSgKQEAgLTQ1LDcgKzU1LDYgQEAKICsjICAgIEFDX0RFRklORShbSEFWRV9EQVFfVkVSRElDVF9SRVRSWV0sWzFdLAogKyMgICAgICAgIFtEQVEgdmVyc2lvbiBzdXBwb3J0cyBEQVFfVkVSRElDVF9SRVRSWSBpbiBEQVFfVmVyZGljdC5dKQogKyNmaQotCisgCiAgIyBhbnkgc3BhcmMgcGxhdGZvcm0gaGFzIHRvIGhhdmUgdGhpcyBvbmUgZGVmaW5lZC4KICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHNwYXJjKQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLWluYWRkci1ub25lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZGlzYWJsZS1pbmFkZHItbm9uZS5wYXRjaAppbmRleCA5ZGFmZTYzLi43OWU5ZjA3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLWluYWRkci1ub25lLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0L2Rpc2FibGUtaW5hZGRyLW5vbmUucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIGExZmRiY2VkNDE2NmNiMGYzNWQyM2I2M2E1OTMxMmQ4Njg2MDQ4NWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHVucm9uZyBHdW8gPEI0MDI5MEBmcmVlc2NhbGUuY29tPgorRGF0ZTogTW9uLCA0IE5vdiAyMDEzIDEwOjM5OjU2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNub3J0OiBhZGQgcmVjaXBlCisKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKIGZpeCB0aGUgYmVsb3cgZXJyb3I6CkBAIC02LDEwICsxMSwxNSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBDaHVucm9uZyBHdW8gPEI0MDI5MEBmcmVlc2NhbGUuY29tPgogCistLS0KKyBjb25maWd1cmUuaW4gfCA1MCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKIAotLS0tIGEvY29uZmlndXJlLmluCTIwMTMtMDgtMjEgMDM6NTY6MTcuMTk3NDE0Nzg5IC0wNTAwCi0rKysgYi9jb25maWd1cmUuaW4JMjAxMy0wOC0yMSAyMzoxOTowNS4yOTg1NTM1NjAgLTA1MDAKLUBAIC0yODEsMjUgKzI4MSw3IEBACitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCAyMGQxNWViLi42ZmU1ZDY4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC0yNzQsMjUgKzI3NCw3IEBAIEFDX0NIRUNLX1RZUEVTKFtpbnQ4X3QsaW50MTZfdCxpbnQzMl90LGludDY0X3RdKQogIEFDX0NIRUNLX1RZUEVTKFtib29sZWFuXSkKICAKICAjIEluIGNhc2UgSU5BRERSX05PTkUgaXMgbm90IGRlZmluZWQgKGxpa2Ugb24gU29sYXJpcykKQEAgLTM2LDcgKzQ2LDcgQEAKICAKICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCiAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci1AQCAtMzk3LDIxICszNzksMjEgQEAKK0BAIC00MjEsMjEgKzQwMywyMSBAQCBpZiB0ZXN0ICJ4JExQQ0FQIiA9ICJ4bm8iOyB0aGVuCiAgICBmaQogIGZpCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9maXgtaG9zdC1jb250YW1pbmF0aW9uLXdoZW4tZW5hYmxlLXN0YXRpYy1kYXEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9maXgtaG9zdC1jb250YW1pbmF0aW9uLXdoZW4tZW5hYmxlLXN0YXRpYy1kYXEucGF0Y2gKaW5kZXggMmJlY2MwNi4uMDQwNGVhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZml4LWhvc3QtY29udGFtaW5hdGlvbi13aGVuLWVuYWJsZS1zdGF0aWMtZGFxLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0L2ZpeC1ob3N0LWNvbnRhbWluYXRpb24td2hlbi1lbmFibGUtc3RhdGljLWRhcS5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gZjQ2ZDA5NjAxNWQ3NDAyYTM3YTU5ZWI2NmI4ZjZiN2ZiZjBjZGZmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyNCBNYXkgMjAxNyAxNzozODo1MyArMDgwMAorU3ViamVjdDogW1BBVENIXSBzbm9ydDogZW5hYmxlIHN0YXRpYyBkYXEKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAogV2hlbiBlbmFibGUgc3RhdGljIGRhcSBmb3Igc25vcnQsIGl0IGNhbGxzIHRvIGRhcS1tb2R1bGVzLWNvbmZpZyB0byBnZXQgbGluawpAQCAtNSw3ICsxMCwxMSBAQAogY29udGFtaW5hdGlvbiBpc3N1ZS4gU28gZmlsdGVyIGl0LgogCiBTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKwogLS0tCisgY29uZmlndXJlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCiBpbmRleCBmZGVkNDViLi5hMjQ3YmI5IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS92bGFuL3ZsYW5fMS45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdmxhbi92bGFuXzEuOS5iYgppbmRleCBiZDU1ZWZjLi43ZWVhNWQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS92bGFuL3ZsYW5fMS45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZsYW4vdmxhbl8xLjkuYmIKQEAgLTE0LDYgKzE0LDggQEAKIAogUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKIAoraW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKIEVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgogCiAjIGNvbW1lbnQgb3V0IE1ha2VJbmNsdWRlIGluIE1ha2VmaWxlIHdoaWNoIHNldHMgYnVpbGQgZW52aXJvbm1lbnQKQEAgLTMwLDMgKzMyLDcgQEAKICAgICBpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9CiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdmNvbmZpZyAke0R9LyR7YmFzZV9zYmluZGlyfS8KIH0KKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAidmNvbmZpZyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt2Y29uZmlnXSA9ICIke2Jhc2Vfc2JpbmRpcn0vdmNvbmZpZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvd29sZnNzbF8zLjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS93b2xmc3NsL3dvbGZzc2xfMy4xMi4wLmJiCmluZGV4IDUxMjYxOTAuLjkyOTA2NTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvd29sZnNzbF8zLjEyLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzMuMTIuMC5iYgpAQCAtMTIsMTUgKzEyLDEyIEBACiBQUk9WSURFUyArPSAiY3lhc3NsIgogUlBST1ZJREVTXyR7UE59ID0gImN5YXNzbCIKIAotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vd29sZlNTTC93b2xmc3NsL2FyY2hpdmUvdiR7UFZ9LXN0YWJsZS56aXAgXAorUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICJkMTk1MDA5ZGNiNjJkODcxMjE5NTY2MWJkMWQ1MGY4ZGQ2ODMxMDQ0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3dvbGZTU0wvd29sZnNzbC5naXQ7cHJvdG9jb2w9aHR0cHM7IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LW5vLXJ1bGUtdG8tbWFrZS1jeWFzc2wtb3B0aW9ucy5oLnBhdGNoIFwKICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJmOWNhZjU1ODE2OWFiNjUwZGM4MjAwNzA4Nzk5ZWJlYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNmQ4N2QzZTJjODc1NzE3N2Q2OWFmZjM3M2M5MWNmMTYyZjRhMzk0NGZhZTkwZmExMGQwODZmZDVmOTU0MmU3IgotCi1TID0gIiR7V09SS0RJUn0vd29sZnNzbC0ke1BWfS1zdGFibGUiCi0KIGluaGVyaXQgYXV0b3Rvb2xzCiAKIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvMDAwMS1EZWZpbmUtX19TV09SRF9UWVBFLWFuZC1fUEFUSF9OU1NXSVRDSF9DT05GLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvMDAwMS1EZWZpbmUtX19TV09SRF9UWVBFLWFuZC1fUEFUSF9OU1NXSVRDSF9DT05GLnBhdGNoCmluZGV4IDA3NWFmNTcuLjg3MTU5NzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzLzAwMDEtRGVmaW5lLV9fU1dPUkRfVFlQRS1hbmQtX1BBVEhfTlNTV0lUQ0hfQ09ORi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy8wMDAxLURlZmluZS1fX1NXT1JEX1RZUEUtYW5kLV9QQVRIX05TU1dJVENIX0NPTkYucGF0Y2gKQEAgLTEsMTkgKzEsMjAgQEAKLUZyb20gOTMzZTA2NWNmOGFlY2ZhMGNjZTVmOGY5MmFiYmVkNWJhYWFmM2Y3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOTg3YzhmNGE3MThjZGQ2Yjc2NDU5MmJhNzUxMDA5MGE1OTYyMzk1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDMxIE1hciAyMDE3IDE5OjEwOjU3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBEZWZpbmUgX19TV09SRF9UWVBFIGFuZCBfUEFUSF9OU1NXSVRDSF9DT05GCitTdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBfX1NXT1JEX1RZUEUgYW5kIF9QQVRIX05TU1dJVENIX0NPTkYKIAogaWYgdGhleSBhcmUgbm90IGRlZmluZWQgYXMgaXMgaW4gbXVzbCB0aGVuIGRlZmluZQogdGhlbSBoZXJlCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIGluY2x1ZGUvYXV0b21vdW50LmggfCA4ICsrKysrKysrCiAgaW5jbHVkZS9uc3N3aXRjaC5oICB8IDMgKysrCiAgMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2F1dG9tb3VudC5oIGIvaW5jbHVkZS9hdXRvbW91bnQuaAotaW5kZXggMjE5YjA3ZC4uYjEyYzIyYSAxMDA2NDQKK2luZGV4IGNjMzM2YWQuLjhiZGNmMTIgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2F1dG9tb3VudC5oCiArKysgYi9pbmNsdWRlL2F1dG9tb3VudC5oCiBAQCAtNDIsNiArNDIsMTQgQEAKQEAgLTMyLDcgKzMzLDcgQEAKICAjaWZuZGVmIEhBVkVfTU9VTlQKICAjZXJyb3IgRmFpbGVkIHRvIGxvY2F0ZSBtb3VudCg4KSEKIGRpZmYgLS1naXQgYS9pbmNsdWRlL25zc3dpdGNoLmggYi9pbmNsdWRlL25zc3dpdGNoLmgKLWluZGV4IDJiNDQ1YTkuLjNkYjc3YjIgMTAwNjQ0CitpbmRleCBkM2U0MDI3Li43YTBjMzhmIDEwMDY0NAogLS0tIGEvaW5jbHVkZS9uc3N3aXRjaC5oCiArKysgYi9pbmNsdWRlL25zc3dpdGNoLmgKIEBAIC0yNCw2ICsyNCw5IEBACkBAIC00NSw2ICs0NiwzIEBACiAgI2RlZmluZSBOU1NXSVRDSF9GSUxFIF9QQVRIX05TU1dJVENIX0NPTkYKICAKICBlbnVtIG5zc3dpdGNoX3N0YXR1cyB7Ci0tLSAKLTIuMTIuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy8wMDAxLW1vZHVsZXMtbG9va3VwX211bHRpLmMtUmVwbGFjZS1fX1NfSUVYRUMtd2l0aC1TX0lFWEUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy8wMDAxLW1vZHVsZXMtbG9va3VwX211bHRpLmMtUmVwbGFjZS1fX1NfSUVYRUMtd2l0aC1TX0lFWEUucGF0Y2gKaW5kZXggN2FjMTQ1Ni4uMzIyOTNkZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvMDAwMS1tb2R1bGVzLWxvb2t1cF9tdWx0aS5jLVJlcGxhY2UtX19TX0lFWEVDLXdpdGgtU19JRVhFLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzLzAwMDEtbW9kdWxlcy1sb29rdXBfbXVsdGkuYy1SZXBsYWNlLV9fU19JRVhFQy13aXRoLVNfSUVYRS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTRlZTAwZTA4YWNkN2MwOTEyYTMyNjRhZDMyZTRkZTg2MWM3NDE2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzQ1ZTM1NWFjOGI1OTVhMjdlMWZjY2E3NWJmMDFkM2UyNDRmNGE1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDcgU2VwIDIwMTcgMjI6MjI6MzEgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gbW9kdWxlcy9sb29rdXBfbXVsdGkuYzogUmVwbGFjZSBfX1NfSUVYRUMgd2l0aCBTX0lFWEVDCkBAIC03LDYgKzcsNyBAQAogYWxsIGxpYmMgZS5nLiBtdXNsCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIG1vZHVsZXMvbG9va3VwX211bHRpLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCkBAIC0yNCw2ICsyNSwzIEBACiAgCQkJCQl0eXBlID0gc3JjX3Byb2c7CiAgCQkJCWVsc2UKICAJCQkJCXR5cGUgPSBzcmNfZmlsZTsKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzLzAwMDItUmVwbGFjZS1fX1NfSUVYRUMtd2l0aC1TX0lFWEVDLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvMDAwMi1SZXBsYWNlLV9fU19JRVhFQy13aXRoLVNfSUVYRUMucGF0Y2gKaW5kZXggNmI2YmE2ZC4uNDY5MDI3YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvMDAwMi1SZXBsYWNlLV9fU19JRVhFQy13aXRoLVNfSUVYRUMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvMDAwMi1SZXBsYWNlLV9fU19JRVhFQy13aXRoLVNfSUVYRUMucGF0Y2gKQEAgLTEsMjEgKzEsMjIgQEAKLUZyb20gOGZkNzRkZGIzMzY5NTcyYzU5NGIyMmIzOTYzNDYxMzFhZjAwZmFlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTU3Y2EzOTlmNGIzYTM5N2YyMGJiMTQ3ZWM2ZGM0YWI5NzMyZGQxZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDMxIE1hciAyMDE3IDE5OjEyOjEwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBSZXBsYWNlIF9fU19JRVhFQyB3aXRoIFNfSUVYRUMKK1N1YmplY3Q6IFtQQVRDSF0gUmVwbGFjZSBfX1NfSUVYRUMgd2l0aCBTX0lFWEVDCiAKIFNfSUVYRUMgaXMgcG9ydGFibGUKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgZGFlbW9uL2xvb2t1cC5jICAgICAgICB8IDQgKystLQogIG1vZHVsZXMvbG9va3VwX211bHRpLmMgfCAyICstCiAgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9kYWVtb24vbG9va3VwLmMgYi9kYWVtb24vbG9va3VwLmMKLWluZGV4IDYyMDcxZGYuLjFiZWM5N2YgMTAwNjQ0CitpbmRleCAyMDFjY2JiLi5kODIxZGI4IDEwMDY0NAogLS0tIGEvZGFlbW9uL2xvb2t1cC5jCiArKysgYi9kYWVtb24vbG9va3VwLmMKLUBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIGludCByZWFkX2ZpbGVfc291cmNlX2luc3RhbmNlKHN0cnVjdCBhdXRvZnNfcG9pbnQgKmFwLCBzdHJ1Y3QgbWFwX3NvdXJjZQorQEAgLTM2Niw3ICszNjYsNyBAQCBzdGF0aWMgaW50IHJlYWRfZmlsZV9zb3VyY2VfaW5zdGFuY2Uoc3RydWN0IGF1dG9mc19wb2ludCAqYXAsIHN0cnVjdCBtYXBfc291cmNlCiAgCWlmICghU19JU1JFRyhzdC5zdF9tb2RlKSkKICAJCXJldHVybiBOU1NfU1RBVFVTX05PVEZPVU5EOwogIApAQCAtMjQsNyArMjUsNyBAQAogIAkJdHlwZSA9IHNyY19wcm9nOwogIAllbHNlCiAgCQl0eXBlID0gc3JjX2ZpbGU7Ci1AQCAtODkwLDcgKzg5MCw3IEBAIHN0YXRpYyBpbnQgbG9va3VwX25hbWVfZmlsZV9zb3VyY2VfaW5zdGFuY2Uoc3RydWN0IGF1dG9mc19wb2ludCAqYXAsIHN0cnVjdCBtYXBfCitAQCAtODU2LDcgKzg1Niw3IEBAIHN0YXRpYyBpbnQgbG9va3VwX25hbWVfZmlsZV9zb3VyY2VfaW5zdGFuY2Uoc3RydWN0IGF1dG9mc19wb2ludCAqYXAsIHN0cnVjdCBtYXBfCiAgCWlmICghU19JU1JFRyhzdC5zdF9tb2RlKSkKICAJCXJldHVybiBOU1NfU1RBVFVTX05PVEZPVU5EOwogIApAQCAtMzQsMTAgKzM1LDEwIEBACiAgCWVsc2UKICAJCXR5cGUgPSBzcmNfZmlsZTsKIGRpZmYgLS1naXQgYS9tb2R1bGVzL2xvb2t1cF9tdWx0aS5jIGIvbW9kdWxlcy9sb29rdXBfbXVsdGkuYwotaW5kZXggNmVjODQzNC4uODhkMDgxZiAxMDA2NDQKK2luZGV4IGZhZGQyZWEuLjNlY2RhNmQgMTAwNjQ0CiAtLS0gYS9tb2R1bGVzL2xvb2t1cF9tdWx0aS5jCiArKysgYi9tb2R1bGVzL2xvb2t1cF9tdWx0aS5jCi1AQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbG9va3VwX21vZCAqbnNzX29wZW5fbG9va3VwKGNvbnN0IGNoYXIgKmZvcm1hdCwgaW50IGFyZ2MsIGNvbnN0IGNoCitAQCAtMjQ3LDcgKzI0Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgbG9va3VwX21vZCAqbnNzX29wZW5fbG9va3VwKGNvbnN0IGNoYXIgKmZvcm1hdCwgaW50IGFyZ2MsIGNvbnN0IGNoCiAgCQkJCWNvbnRpbnVlOwogIAkJCX0KICAKQEAgLTQ2LDYgKzQ3LDMgQEAKICAJCQkJdHlwZSA9IHNyY19wcm9nOwogIAkJCWVsc2UKICAJCQkJdHlwZSA9IHNyY19maWxlOwotLS0gCi0yLjEyLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvYWRkLXRoZS1uZWVkZWQtc3RkYXJnLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9hZGQtdGhlLW5lZWRlZC1zdGRhcmcuaC5wYXRjaAppbmRleCBmZGI5MDZiLi44MTZhNDA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9hZGQtdGhlLW5lZWRlZC1zdGRhcmcuaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9hZGQtdGhlLW5lZWRlZC1zdGRhcmcuaC5wYXRjaApAQCAtMSwxNCArMSwxOCBAQAotW1BBVENIXSBhZGQgdGhlIG5lZWRlZCBzdGRhcmcuaAorRnJvbSBkZjVkNDViMmQ3YWQ3ZTdiNWYwNTQyYTgxNmQwOGIwNDA5YTUyOWExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxOSBBdWcgMjAxNCAxMTozMTozNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBbUEFUQ0hdIGFkZCB0aGUgbmVlZGVkIHN0ZGFyZy5oCiAKIFVwc3RyZWFtLXN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGxpYi9kZWZhdWx0cy5jIHwgICAgMSArCisgbGliL2RlZmF1bHRzLmMgfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL2xpYi9kZWZhdWx0cy5jIGIvbGliL2RlZmF1bHRzLmMKLWluZGV4IDJiMDNlYTIuLjU3MjhlNjcgMTAwNjQ0CitpbmRleCAwZTQ4YTc4Li42NjdmMzVkIDEwMDY0NAogLS0tIGEvbGliL2RlZmF1bHRzLmMKICsrKyBiL2xpYi9kZWZhdWx0cy5jCiBAQCAtMTYsNiArMTYsNyBAQApAQCAtMTksNiArMjMsMyBAQAogICNpbmNsdWRlIDxjdHlwZS5oPgogICNpbmNsdWRlIDxzdHJpbmcuaD4KICAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvYXV0b2ZzLTUuMC43LWRvLW5vdC1jaGVjay1mb3ItbW9kcHJvYmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9hdXRvZnMtNS4wLjctZG8tbm90LWNoZWNrLWZvci1tb2Rwcm9iZS5wYXRjaAppbmRleCBhZjViZTZhLi4xZDVjM2UxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9hdXRvZnMtNS4wLjctZG8tbm90LWNoZWNrLWZvci1tb2Rwcm9iZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9hdXRvZnMtNS4wLjctZG8tbm90LWNoZWNrLWZvci1tb2Rwcm9iZS5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gMmNiYzU3NmVhMWZiZDFjYmY0NTc5ZDY0YjMwZTQxZDc2MjA4NGU3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJ5YW5qdW4uemh1IiA8eWFuanVuLnpodUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBKYW4gMjAxMyAxMjo0NTo0NCArMDgwMAorU3ViamVjdDogW1BBVENIXSBhdXRvZnM6IGRvIG5vdCBjaGVjayBmb3IgbW9kcHJvYmUKKwogRGVzY3JpcHRpb246IExvYWRpbmcgYXV0b2ZzIG1vZHVsZSBpcyAjaWZkZWYnZWQgaW4gdGhlIHNvdXJjZSwgc28KICB0aGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIGZvciAvcHJvYyAod2hpY2ggaXMgb25seSB1c2VkCiAgdG8gbG9hZCBtb2R1bGUpIG9yIG1vZHByb2JlLiAgQm90aCBtb2Rwcm9iZSBhbmQgL3Byb2MKQEAgLTcsOSArMTIsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzFdCiBbMV0gaHR0cDovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9hdXRvZnMvbXNnMDAxMzkuaHRtbAogCi1kaWZmIC11cnBOIGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi0tLS0gYS9jb25maWd1cmUuaW4JMjAxMy0wMS0xNSAxMTozMDoyMi4wMDAwMDAwMDAgKzA4MDAKLSsrKyBiL2NvbmZpZ3VyZS5pbgkyMDEzLTAxLTE1IDExOjMxOjQ1LjAwMDAwMDAwMCArMDgwMAorLS0tCisgY29uZmlndXJlLmluICAgICAgICB8ICA2IC0tLS0tLQorIGRhZW1vbi9tb2R1bGUuYyAgICAgfCAgMyArKysKKyBpbmNsdWRlL2F1dG9tb3VudC5oIHwgMTEgKysrLS0tLS0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDQ0YTFjOGIuLmIyMjYyMzYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgogQEAgLTM0LDExICszNCw2IEBAIEFDX01TR19DSEVDS0lORyhbZm9yIGJpbmFyaWVzIGluXSkKICBBQ19NU0dfUkVTVUxUKFskc2VhcmNocGF0aF0pCiAgCkBAIC0yMiw3ICszNCw3IEBACiAgIyBMb2NhdGlvbiBvZiBpbml0LmQgZGlyZWN0b3J5PwogICMKICBBRl9JTklUX0QoKQotQEAgLTE0Miw3ICsxMzcsNiBAQCBBRl9QQVRIX0lOQ0xVREUoVU1PVU5ULCB1bW91bnQsIC9iaW4vdW1vCitAQCAtMTQyLDcgKzEzNyw2IEBAIEFGX1BBVEhfSU5DTFVERShVTU9VTlQsIHVtb3VudCwgL2Jpbi91bW91bnQsICRzZWFyY2hwYXRoKQogIEFGX1BBVEhfSU5DTFVERShFMkZTQ0ssIGZzY2suZXh0MiBlMmZzY2ssICwgJHNlYXJjaHBhdGgpCiAgQUZfUEFUSF9JTkNMVURFKEUzRlNDSywgZnNjay5leHQzIGUzZnNjaywgLCAkc2VhcmNocGF0aCkKICBBRl9QQVRIX0lOQ0xVREUoRTRGU0NLLCBmc2NrLmV4dDQgZTRmc2NrLCAsICRzZWFyY2hwYXRoKQpAQCAtMzAsMzAgKzQyLDMyIEBACiAgCiAgQUZfQ0hFQ0tfUFJPRyhMRVgsIGZsZXggbGV4LCAsICRzZWFyY2hwYXRoKQogIEFGX0NIRUNLX1BST0coWUFDQywgYmlzb24sICwgJHNlYXJjaHBhdGgpCi1kaWZmIC11cnBOIGEvZGFlbW9uL21vZHVsZS5jIGIvZGFlbW9uL21vZHVsZS5jCi0tLS0gYS9kYWVtb24vbW9kdWxlLmMJMjAxMy0wMS0xNSAxMTozMDo0OS4wMDAwMDAwMDAgKzA4MDAKLSsrKyBiL2RhZW1vbi9tb2R1bGUuYwkyMDEzLTAxLTE1IDExOjMyOjAwLjAwMDAwMDAwMCArMDgwMAotQEAgLTE4LDYgKzE4LDggQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+CitkaWZmIC0tZ2l0IGEvZGFlbW9uL21vZHVsZS5jIGIvZGFlbW9uL21vZHVsZS5jCitpbmRleCBiZWQ4ZjdhLi5lNDFhOThlIDEwMDY0NAorLS0tIGEvZGFlbW9uL21vZHVsZS5jCisrKysgYi9kYWVtb24vbW9kdWxlLmMKK0BAIC0xOSw2ICsxOSw4IEBACiAgI2luY2x1ZGUgImF1dG9tb3VudC5oIgorICNpbmNsdWRlICJuc3N3aXRjaC5oIgogIAogKyNpZiAwCiArLyogc2VlIGNvbW1lbnQgaW4gZGFlbW9uL2F1dG9tb3VudC5jIGFyb3VuZCBsb2FkX2F1dG9mczRfbW9kdWxlKCkgY2FsbCAqLwogIGludCBsb2FkX2F1dG9mczRfbW9kdWxlKHZvaWQpCiAgewogIAlGSUxFICpmcDsKLUBAIC01Miw2ICs1NCw3IEBAIGludCBsb2FkX2F1dG9mczRfbW9kdWxlKHZvaWQpCitAQCAtNTMsNiArNTUsNyBAQCBpbnQgbG9hZF9hdXRvZnM0X21vZHVsZSh2b2lkKQogIAogIAlyZXR1cm4gMTsKICB9CiArI2VuZGlmCiAgCi0gc3RydWN0IGxvb2t1cF9tb2QgKm9wZW5fbG9va3VwKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmVycl9wcmVmaXgsCi0gCQkJICAgICAgIGNvbnN0IGNoYXIgKm1hcGZtdCwgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmNvbnN0ICphcmd2KQotZGlmZiAtdXJwTiBhL2luY2x1ZGUvYXV0b21vdW50LmggYi9pbmNsdWRlL2F1dG9tb3VudC5oCi0tLS0gYS9pbmNsdWRlL2F1dG9tb3VudC5oCTIwMTMtMDEtMTUgMTE6MzE6MTAuMDAwMDAwMDAwICswODAwCi0rKysgYi9pbmNsdWRlL2F1dG9tb3VudC5oCTIwMTMtMDEtMTUgMTE6MzI6MDYuMDAwMDAwMDAwICswODAwCi1AQCAtNTAsMTYgKzUwLDExIEBACisgaW50IG9wZW5fbG9va3VwKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmVycl9wcmVmaXgsIGNvbnN0IGNoYXIgKm1hcGZtdCwKKyAJCWludCBhcmdjLCBjb25zdCBjaGFyICpjb25zdCAqYXJndiwgc3RydWN0IGxvb2t1cF9tb2QgKipsb29rdXApCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hdXRvbW91bnQuaCBiL2luY2x1ZGUvYXV0b21vdW50LmgKK2luZGV4IGMwZjVmYmYuLmNjMzM2YWQgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2F1dG9tb3VudC5oCisrKysgYi9pbmNsdWRlL2F1dG9tb3VudC5oCitAQCAtNTEsMTYgKzUxLDExIEBACiAgI2Vycm9yIEZhaWxlZCB0byBsb2NhdGUgdW1vdW50KDgpIQogICNlbmRpZgogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvYXV0b2ZzLTUuMC43LWZpeC1saWItZGVwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2F1dG9mcy01LjAuNy1maXgtbGliLWRlcHMucGF0Y2gKaW5kZXggMDlmZWE0OS4uOGUwNmRiNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvYXV0b2ZzLTUuMC43LWZpeC1saWItZGVwcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9hdXRvZnMtNS4wLjctZml4LWxpYi1kZXBzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA1NGE5YmQyOGEzMDdkZDc0ZGYwNDRkNzc5Y2E4NWFkY2YzNmFhMjAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwODA2MjYxMDhjOWFiNzBlMjQ4OTc1MmVmMmExNDAwNmQwNTY0YjBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSm9lIE1hY0RvbmFsZCA8am9lLm1hY2RvbmFsZEB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxOCBKdW4gMjAxMyAxMDowNToyMSAtMDQwMAogU3ViamVjdDogW1BBVENIXSBGaXggdGhlIGRlcGVuZGVuY3kgaXNzdWUKQEAgLTEwLDE5ICsxMCwxNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBKb2UgTWFjRG9uYWxkIDxqb2UubWFjZG9uYWxkQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGxpYi9NYWtlZmlsZSB8ICAgIDEgKworIGxpYi9NYWtlZmlsZSB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlCi1pbmRleCA1NDE4MDA5Li5iZmY0ZTFkIDEwMDY0NAoraW5kZXggNTE4YjQ4My4uNDc5OGE0YiAxMDA2NDQKIC0tLSBhL2xpYi9NYWtlZmlsZQogKysrIGIvbGliL01ha2VmaWxlCi1AQCAtNzUsMyArNzUsNCBAQCBpbnN0YWxsOiBhbGwKK0BAIC04MSwzICs4MSw0IEBAIGluc3RhbGw6IGFsbAogIGNsZWFuOgogIAlybSAtZiAkKExJQikgJChSUENTKSAkKE9CSlMpICQoWUFDQ1NSQykgKi5vdXRwdXQgKn4KICAKICskKE9CSlMpOiAkKFJQQ1MpCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2F1dG9mcy01LjAuNy1pbmNsdWRlLWxpbnV4LW5mcy5oLWRpcmVjdGx5LWluLXJwY19zdWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9hdXRvZnMtNS4wLjctaW5jbHVkZS1saW51eC1uZnMuaC1kaXJlY3RseS1pbi1ycGNfc3ViLnBhdGNoCmluZGV4IDNhODc4OTguLjliMDk0MmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2F1dG9mcy01LjAuNy1pbmNsdWRlLWxpbnV4LW5mcy5oLWRpcmVjdGx5LWluLXJwY19zdWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvYXV0b2ZzLTUuMC43LWluY2x1ZGUtbGludXgtbmZzLmgtZGlyZWN0bHktaW4tcnBjX3N1Yi5wYXRjaApAQCAtMSwyMSArMSwyMiBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUZyb20gNDRiZGNlOGM2ZWQ5YjMwYzE2NDNlNTk4MTE3MmE0ZjkwMjVmMDEzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjI1NmI4YWE5OGNmZjE1ZGRmMmE4ZDM2NDk2ZTZjOTEyNTkyNzkwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFuZHJlYXMgT2JlcnJpdHRlciA8b2JpQG9wZW5kcmVhbWJveC5vcmc+CiBEYXRlOiBXZWQsIDEzIE1hciAyMDEzIDE2OjE3OjA4ICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIGF1dG9mcy01LjAuNzogaW5jbHVkZSBsaW51eC9uZnMuaCBkaXJlY3RseSBpbiBycGNfc3Vicy5oCiAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiBGaXhlcyBjb21waWxlIGVycm9yIHdpdGggdWNsaWJjLiBHbGliYydzIG5mcy9uZnMuaCBjb250YWlucwogbm90aGluZyBidXQgIiNpbmNsdWRlIGxpbnV4L25mcy5oIi4gcnBjX3N1YnMuaCBhbHJlYWR5IGluY2x1ZGVzCiBvdGhlciBsaW51eC9uZnMqLmggZmlsZXMgZGlyZWN0bHkuCiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgT2JlcnJpdHRlciA8b2JpQG9wZW5kcmVhbWJveC5vcmc+CisKIC0tLQotIGluY2x1ZGUvcnBjX3N1YnMuaCB8ICAgIDIgKy0KKyBpbmNsdWRlL3JwY19zdWJzLmggfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9pbmNsdWRlL3JwY19zdWJzLmggYi9pbmNsdWRlL3JwY19zdWJzLmgKLWluZGV4IGI2ZDU5ZjkuLmEyZDk2NDggMTAwNjQ0CitpbmRleCBlNzQ0ZTg5Li44M2RiNDdlIDEwMDY0NAogLS0tIGEvaW5jbHVkZS9ycGNfc3Vicy5oCiArKysgYi9pbmNsdWRlL3JwY19zdWJzLmgKIEBAIC0xOCw3ICsxOCw3IEBACkBAIC0yNyw2ICsyOCwzIEBACiAgI2luY2x1ZGUgPGxpbnV4L25mczIuaD4KICAjaW5jbHVkZSA8bGludXgvbmZzMy5oPgogIAotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9hdXRvZnMtNS4xLjItbGlidGlycGMtYXMtbmVlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2F1dG9mcy01LjEuMi1saWJ0aXJwYy1hcy1uZWVkLnBhdGNoCmluZGV4IGNiZjJiZjguLjE4Y2UxOTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2F1dG9mcy01LjEuMi1saWJ0aXJwYy1hcy1uZWVkLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2F1dG9mcy01LjEuMi1saWJ0aXJwYy1hcy1uZWVkLnBhdGNoCkBAIC0xLDEyICsxLDIxIEBACitGcm9tIGIzMWRlY2FjNGFjYjE5NGIwMjBjNjIxZDJkMTEwMTlmNjM2YTQ1ZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNCBBcHIgMjAxNyAyMDo0MToyNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBhdXRvZnM6IFVwZ3JhZGUgdG8gNS4xLjIgcmVsZWFzZQorCiBNYWtlIGNvbmZpZ3VyZSBjb21wYXRpYmxlIHdpdGggLVdsLC0tYXMtbmVlZGVkIGZvbGxvd2luZwogaHR0cHM6Ly93aWtpLmdlbnRvby5vcmcvd2lraS9Qcm9qZWN0OlF1YWxpdHlfQXNzdXJhbmNlL0FzLW5lZWRlZCNGYWlsdXJlX2luXy4uMkZjb25maWd1cmUKIAogMjAxNi0wNy0wNSBNYXJ0aW4gdm9uIEdhZ2VybgogCi1JbmRleDogYXV0b2ZzLTUuMS4yL2FjbG9jYWwubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvZnMtNS4xLjIub3JpZy9hY2xvY2FsLm00Ci0rKysgYXV0b2ZzLTUuMS4yL2FjbG9jYWwubTQKKy0tLQorIGFjbG9jYWwubTQgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAoraW5kZXggMGU0YTYyNC4uMmU2MjBjZCAxMDA2NDQKKy0tLSBhL2FjbG9jYWwubTQKKysrKyBiL2FjbG9jYWwubTQKIEBAIC00MTUsOSArNDE1LDkgQEAgQUNfREVGVU4oW0FGX0NIRUNLX0xJQlRJUlBDXSwKICBbCiAgIyBzYXZlIGN1cnJlbnQgZmxhZ3MKQEAgLTE5LDcgKzI4LDcgQEAKICAKICBBQ19UUllfTElOSygKICAgICAgWyAjaW5jbHVkZSA8cnBjL3JwYy5oPiBdLAotQEAgLTQ0MCw3ICs0NDAsNyBAQCBBQ19DSEVDS19GVU5DUyhbZ2V0cnBjYnluYW1lIGdldHNlcnZieW5hCitAQCAtNDQwLDcgKzQ0MCw3IEBAIEFDX0NIRUNLX0ZVTkNTKFtnZXRycGNieW5hbWUgZ2V0c2VydmJ5bmFtZV0pCiAgCiAgIyByZXN0b3JlIGZsYWdzCiAgQ0ZMQUdTPSIkYWZfY2hlY2tfbGlidGlycGNfc2F2ZV9jZmxhZ3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9jcm9zcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2Nyb3NzLnBhdGNoCmluZGV4IDhmMWFmNjIuLmIyNWM0M2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2Nyb3NzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2Nyb3NzLnBhdGNoCkBAIC0xLDggKzEsMTcgQEAKLUluZGV4OiBhdXRvZnMtNS4wLjcvYWNsb2NhbC5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF1dG9mcy01LjAuNy5vcmlnL2FjbG9jYWwubTQJMjAxMi0xMC0yOCAwNDo0NTowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBhdXRvZnMtNS4wLjcvYWNsb2NhbC5tNAkyMDEyLTEwLTI4IDEwOjQ3OjUzLjI2Mzk5NjkxMCAtMDcwMAotQEAgLTcsNiArNyw4IEBACitGcm9tIGI5YjQ0Y2Q4MmNhY2VlYjYzOGNjNmE4NjJiNWJiOTBiOTNhZDZjNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCA1IEphbiAyMDEzIDE5OjUzOjEwIC0wODAwCisKKy0tLQorIGFjbG9jYWwubTQgICB8IDIgKysKKyBjb25maWd1cmUuaW4gfCA4ICsrKysrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAoraW5kZXggMjExNTIwNC4uMmE5YTgwMiAxMDA2NDQKKy0tLSBhL2FjbG9jYWwubTQKKysrKyBiL2FjbG9jYWwubTQKK0BAIC03LDYgKzcsOCBAQCBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBBQ19ERUZVTihBRl9QQVRIX0lOQ0xVREUsCiAgW0FDX1BBVEhfUFJPR1MoJDEsJDIsJDMsJDQpCiAgaWYgdGVzdCAtbiAiJCQxIjsgdGhlbgpAQCAtMTEsMTEgKzIwLDExIEBACiAgICBBQ19ERUZJTkUoSEFWRV8kMSwxLFtkZWZpbmUgaWYgeW91IGhhdmUgJDFdKQogICAgQUNfREVGSU5FX1VOUVVPVEVEKFBBVEhfJDEsICIkJDEiLCBbZGVmaW5lIGlmIHlvdSBoYXZlICQxXSkKICAgIEhBVkVfJDE9MQotSW5kZXg6IGF1dG9mcy01LjAuNy9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvZnMtNS4wLjcub3JpZy9jb25maWd1cmUuaW4JMjAxMi0xMC0yOCAwNDo0NTowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBhdXRvZnMtNS4wLjcvY29uZmlndXJlLmluCTIwMTItMTAtMjggMTA6NTA6MDcuNTgwMDAwNjI4IC0wNzAwCi1AQCAtMzAxLDEzICszMDEsMTUgQEAKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDI1ZDdjNGUuLjQ0YTFjOGIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTMyNCwxMyArMzI0LDE1IEBAIEFDX1BST0dfQ0MKICBjYXQgPiBwaWV0ZXN0LmMgPDxFT0YKICBpbnQgbWFpbih2b2lkKSB7IHJldHVybiAwOyB9CiAgRU9GCkBAIC0zMyw3ICs0Miw3IEBACiAgQUNfTVNHX1JFU1VMVChbJGdjY19zdXBwb3J0c19waWVdKQogIGlmIHRlc3QgJGdjY19zdXBwb3J0c19waWUgPSB5ZXMgOyB0aGVuCiAgCURBRU1PTl9DRkxBR1M9Ii1mUElFIgotQEAgLTMxNiw2ICszMTgsOCBAQAorQEAgLTMzOSw2ICszNDEsOCBAQCBmaQogIHJtIC1mIHBpZXRlc3QuYwogIEFDX1NVQlNUKERBRU1PTl9DRkxBR1MpCiAgQUNfU1VCU1QoREFFTU9OX0xERkxBR1MpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9maXgtdGhlLVlBQ0MtcnVsZS10by1maXgtYS1idWlsZGluZy1mYWlsdXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvZml4LXRoZS1ZQUNDLXJ1bGUtdG8tZml4LWEtYnVpbGRpbmctZmFpbHVyZS5wYXRjaAppbmRleCA5YjY0MTgzLi4yMWE5N2M4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9maXgtdGhlLVlBQ0MtcnVsZS10by1maXgtYS1idWlsZGluZy1mYWlsdXJlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2ZpeC10aGUtWUFDQy1ydWxlLXRvLWZpeC1hLWJ1aWxkaW5nLWZhaWx1cmUucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1bUEFUQ0hdIGZpeCB0aGUgWUFDQyBydWxlIHRvIGZpeCBhIGJ1aWxkaW5nIGZhaWx1cmUKK0Zyb20gOTcxZDQ4YTAwZWY4Mjg4MGMzNGU4OTc3OGJmNDMwYTAxMzYwZWJkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMTggTWF5IDIwMTUgMTY6Mjg6MzYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gW1BBVENIXSBmaXggdGhlIFlBQ0MgcnVsZSB0byBmaXggYSBidWlsZGluZyBmYWlsdXJlCiAKIFVwc3RyZWFtLVN0YXR1OiBQZW5kaW5nCiAKQEAgLTE0LDYgKzE3LDcgQEAKICAgfC4uL01ha2VmaWxlLnJ1bGVzOjY0OiByZWNpcGUgZm9yIHRhcmdldCAnYW1kX3Rvay5vJyBmYWlsZWQKICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgbGliL01ha2VmaWxlICAgICB8IDYgKysrKy0tCiAgbW9kdWxlcy9NYWtlZmlsZSB8IDMgKystCkBAIC00NCw3ICs0OCw3IEBACiAgCiAgbnNzX3Rvay5vOiBuc3NfdG9rLmMgbnNzX3BhcnNlLnRhYi5oCiBkaWZmIC0tZ2l0IGEvbW9kdWxlcy9NYWtlZmlsZSBiL21vZHVsZXMvTWFrZWZpbGUKLWluZGV4IDIzN2I3MGIuLjcxNDE1ZDAgMTAwNjQ0CitpbmRleCBkOWFiMDZjLi5hYmM3Njk4IDEwMDY0NAogLS0tIGEvbW9kdWxlcy9NYWtlZmlsZQogKysrIGIvbW9kdWxlcy9NYWtlZmlsZQogQEAgLTEwMyw3ICsxMDMsOCBAQCBhbWRfdG9rLmM6IGFtZF90b2subApAQCAtNTcsNiArNjEsMyBAQAogIAkkKFlBQ0MpIC12IC1kIC1wIGFtZF8gLWIgYW1kX3BhcnNlICQ/CiAgCiAgYW1kX3BhcnNlLnRhYi5vOiBhbWRfcGFyc2UudGFiLmMgYW1kX3BhcnNlLnRhYi5oCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2ZpeF9kaXNhYmxlX2xkYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9maXhfZGlzYWJsZV9sZGFwLnBhdGNoCmluZGV4IDk0NzUwYjIuLjQxNDMyNTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2ZpeF9kaXNhYmxlX2xkYXAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvZml4X2Rpc2FibGVfbGRhcC5wYXRjaApAQCAtMSw2ICsxLDkgQEAKLWF1dG9mczogZmFpbHMgdG8gY29tcGlsZSB3aXRoIG9wZW5sZGFwIGRpc2FibGVkCitGcm9tIGM1MDBkOTkwNmYxNjNiZjcxNmM4NzJkMzc0MDNiOWRlMDJlZjBhODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbXkgRm9uZyA8YW15LmZvbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMTggSmFuIDIwMTMgMTI6MTM6MzIgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXV0b2ZzOiBmYWlscyB0byBjb21waWxlIHdpdGggb3BlbmxkYXAgZGlzYWJsZWQKIAotQXMgb2YgNS4wLjYsIGl0IGFwcGVhcnMgdGhhdCBjaGFuZ2VzIHdlcmUgaW50cm9kdWNlZCBzbyB0aGF0IAorQXMgb2YgNS4wLjYsIGl0IGFwcGVhcnMgdGhhdCBjaGFuZ2VzIHdlcmUgaW50cm9kdWNlZCBzbyB0aGF0CiBpZiB5b3UgY29tcGlsZSB3aXRoIG9wZW5sZGFwIGRpc2FibGVkIGFuZCBvcGVubGRhcCBoZWFkZXJzIGFyZSBub3QKIGF2YWlsYWJsZSwgdGhlbiBhdXRvZnMgZmFpbHMgdG8gYnVpbGQuCiAKQEAgLTEyLDEzICsxNSwxMyBAQAogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAogLS0tCi0gaW5jbHVkZS9sb29rdXBfbGRhcC5oIHwgICAgNCArKysrCisgaW5jbHVkZS9sb29rdXBfbGRhcC5oIHwgNCArKysrCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCi1JbmRleDogYXV0b2ZzLTUuMS4yL2luY2x1ZGUvbG9va3VwX2xkYXAuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF1dG9mcy01LjEuMi5vcmlnL2luY2x1ZGUvbG9va3VwX2xkYXAuaAotKysrIGF1dG9mcy01LjEuMi9pbmNsdWRlL2xvb2t1cF9sZGFwLmgKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xvb2t1cF9sZGFwLmggYi9pbmNsdWRlL2xvb2t1cF9sZGFwLmgKK2luZGV4IDNhN2FiYTcuLmJmZGIwYjMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2xvb2t1cF9sZGFwLmgKKysrKyBiL2luY2x1ZGUvbG9va3VwX2xkYXAuaAogQEAgLTEsNyArMSw5IEBACiAgI2lmbmRlZiBMT09LVVBfTERBUF9ICiAgI2RlZmluZSBMT09LVVBfTERBUF9ICmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9mb3JjZS1TVFJJUC10by1lbXRweS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2ZvcmNlLVNUUklQLXRvLWVtdHB5LnBhdGNoCmluZGV4IDYzNDAwNWIuLjIxMzk2ZGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2ZvcmNlLVNUUklQLXRvLWVtdHB5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2ZvcmNlLVNUUklQLXRvLWVtdHB5LnBhdGNoCkBAIC0xLDE0ICsxLDE4IEBACi1bUEFUQ0hdIGZvcmNlIFNUUklQIHRvIGVtdHB5CitGcm9tIDNjYmVlMDBmZTU3MjViODdhYmRhZTgwY2ZhMmVlNzM1ZTQ1MTNjYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE5IEF1ZyAyMDE0IDExOjMxOjM1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFtQQVRDSF0gZm9yY2UgU1RSSVAgdG8gZW10cHkKIAogb3RoZXJ3aXNlIHRoZSBnZW5lcmF0ZSBmaWxlIHdpbGwgYmUgc3RyaXBwZWQKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBNYWtlZmlsZS5ydWxlcyB8ICAgIDIgKy0KKyBNYWtlZmlsZS5ydWxlcyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLnJ1bGVzIGIvTWFrZWZpbGUucnVsZXMKLWluZGV4IDcxMGEyYzkuLmU0MzM0ZGIgMTAwNjQ0CitpbmRleCA3MDlkZDA0Li5iMWY3ZTUwIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUucnVsZXMKICsrKyBiL01ha2VmaWxlLnJ1bGVzCiBAQCAtMzEsNyArMzEsNyBAQCBMREZMQUdTICAgPz0gLXMKQEAgLTIwLDYgKzI0LDMgQEAKICBlbHNlCiAgU1RSSVAgICAgID89IHN0cmlwIC0tc3RyaXAtZGVidWcKICBlbmRpZgotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9saWJ0aXJwYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2xpYnRpcnBjLnBhdGNoCmluZGV4IGQ2ODk0NGIuLjBhMmQ1MDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2xpYnRpcnBjLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2xpYnRpcnBjLnBhdGNoCkBAIC0xLDIxICsxLDE3IEBACi1JbmRleDogYXV0b2ZzLTUuMC43L2FjbG9jYWwubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvZnMtNS4wLjcub3JpZy9hY2xvY2FsLm00CTIwMTItMTAtMjggMTM6MTc6NDUuNTA0MjM3MDI3IC0wNzAwCi0rKysgYXV0b2ZzLTUuMC43L2FjbG9jYWwubTQJMjAxMi0xMC0yOCAxMzoyMDo1MC4xMDgyNDI3MzkgLTA3MDAKLUBAIC00MDMsNyArNDAzLDcgQEAKLSAjIHNhdmUgY3VycmVudCBmbGFncwotIGFmX2NoZWNrX2xpYnRpcnBjX3NhdmVfY2ZsYWdzPSIkQ0ZMQUdTIgotIGFmX2NoZWNrX2xpYnRpcnBjX3NhdmVfbGRmbGFncz0iJExERkxBR1MiCi0tQ0ZMQUdTPSIkQ0ZMQUdTIC1JL3Vzci9pbmNsdWRlL3RpcnBjIgotK0NGTEFHUz0iJENGTEFHUyAtST0vdXNyL2luY2x1ZGUvdGlycGMiCi0gTERGTEFHUz0iJExERkxBR1MgLWx0aXJwYyIKLSAKLSBBQ19UUllfTElOSygKLUluZGV4OiBhdXRvZnMtNS4wLjcvTWFrZWZpbGUucnVsZXMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvZnMtNS4wLjcub3JpZy9NYWtlZmlsZS5ydWxlcwkyMDEyLTEwLTI4IDEzOjE3OjQ1LjMwODIzNzAyMiAtMDcwMAotKysrIGF1dG9mcy01LjAuNy9NYWtlZmlsZS5ydWxlcwkyMDEyLTEwLTI4IDEzOjIxOjI1LjcyMDI0MjgwMyAtMDcwMAotQEAgLTQ4LDcgKzQ4LDcgQEAKK0Zyb20gY2I2YTRmNjFhZGIwMjdmMjM2NjMxOGYyYzA4YzgyNjRlYmYzOTIxOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDUgSmFuIDIwMTMgMTk6NTM6MTAgLTA4MDAKKworLS0tCisgTWFrZWZpbGUucnVsZXMgfCAyICstCisgYWNsb2NhbC5tNCAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5ydWxlcyBiL01ha2VmaWxlLnJ1bGVzCitpbmRleCA2ZmEzZTAyLi43MDlkZDA0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUucnVsZXMKKysrKyBiL01ha2VmaWxlLnJ1bGVzCitAQCAtNDYsNyArNDYsNyBAQCBDRkxBR1MgKz0gLURfUkVFTlRSQU5UIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKICBMSUJTICs9IC1scHRocmVhZAogIAogIGlmZGVmIFRJUlBDTElCCkBAIC0yNCwzICsyMCwxNiBAQAogIExJQlMgKz0gJChUSVJQQ0xJQikKICBlbmRpZgogIAorZGlmZiAtLWdpdCBhL2FjbG9jYWwubTQgYi9hY2xvY2FsLm00CitpbmRleCAyYTlhODAyLi4wZTRhNjI0IDEwMDY0NAorLS0tIGEvYWNsb2NhbC5tNAorKysrIGIvYWNsb2NhbC5tNAorQEAgLTQxNiw3ICs0MTYsNyBAQCBBQ19ERUZVTihbQUZfQ0hFQ0tfTElCVElSUENdLAorICMgc2F2ZSBjdXJyZW50IGZsYWdzCisgYWZfY2hlY2tfbGlidGlycGNfc2F2ZV9jZmxhZ3M9IiRDRkxBR1MiCisgYWZfY2hlY2tfbGlidGlycGNfc2F2ZV9sZGZsYWdzPSIkTERGTEFHUyIKKy1DRkxBR1M9IiRDRkxBR1MgLUkvdXNyL2luY2x1ZGUvdGlycGMiCisrQ0ZMQUdTPSIkQ0ZMQUdTIC1JPS91c3IvaW5jbHVkZS90aXJwYyIKKyBMREZMQUdTPSIkTERGTEFHUyAtbHRpcnBjIgorIAorIEFDX1RSWV9MSU5LKApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvbm8tYmFzaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL25vLWJhc2gucGF0Y2gKaW5kZXggY2YwMzYzNS4uYzQ2YzBlNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvbm8tYmFzaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9uby1iYXNoLnBhdGNoCkBAIC0xLDE3ICsxLDI2IEBACi1JbmRleDogYXV0b2ZzLTUuMC43L3NhbXBsZXMvYXV0by5uZXQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvZnMtNS4wLjcub3JpZy9zYW1wbGVzL2F1dG8ubmV0CTIwMTItMDctMjQgMjM6MDU6MjYuMDAwMDAwMDAwIC0wNzAwCi0rKysgYXV0b2ZzLTUuMC43L3NhbXBsZXMvYXV0by5uZXQJMjAxMi0xMC0yOCAxMDo0NDoyNS4wMzU5OTE3MTUgLTA3MDAKK0Zyb20gYTMwMDdkN2VhOTMwODIzOTI2NjExMDgxYmI4NzNkZGQ3NzEzMjVjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDUgSmFuIDIwMTMgMTk6NTM6MTAgLTA4MDAKKworLS0tCisgc2FtcGxlcy9hdXRvLm5ldCB8IDIgKy0KKyBzYW1wbGVzL2F1dG8uc21iIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2FtcGxlcy9hdXRvLm5ldCBiL3NhbXBsZXMvYXV0by5uZXQKK2luZGV4IDAzODRmNjEuLjYxMjE1ZjYgMTAwNzU1CistLS0gYS9zYW1wbGVzL2F1dG8ubmV0CisrKysgYi9zYW1wbGVzL2F1dG8ubmV0CiBAQCAtMSw0ICsxLDQgQEAKIC0jIS9iaW4vYmFzaAogKyMhL2Jpbi9zaAogIAogICMgVGhpcyBmaWxlIG11c3QgYmUgZXhlY3V0YWJsZSB0byB3b3JrISBjaG1vZCA3NTUhCiAgCi1JbmRleDogYXV0b2ZzLTUuMC43L3NhbXBsZXMvYXV0by5zbWIKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvZnMtNS4wLjcub3JpZy9zYW1wbGVzL2F1dG8uc21iCTIwMTItMDctMjQgMjM6MDU6MjYuMDAwMDAwMDAwIC0wNzAwCi0rKysgYXV0b2ZzLTUuMC43L3NhbXBsZXMvYXV0by5zbWIJMjAxMi0xMC0yOCAxMDo0NDoyNS4wMzU5OTE3MTUgLTA3MDAKK2RpZmYgLS1naXQgYS9zYW1wbGVzL2F1dG8uc21iIGIvc2FtcGxlcy9hdXRvLnNtYgoraW5kZXggNmFmNWQ4NS4uZDI5NmI4MSAxMDA3NTUKKy0tLSBhL3NhbXBsZXMvYXV0by5zbWIKKysrKyBiL3NhbXBsZXMvYXV0by5zbWIKIEBAIC0xLDQgKzEsNCBAQAogLSMhL2Jpbi9iYXNoCiArIyEvYmluL3NoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9wa2djb25maWctbGlibnNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvcGtnY29uZmlnLWxpYm5zbC5wYXRjaAppbmRleCBiZjJjOTY0Li4xYzdiMTE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9wa2djb25maWctbGlibnNsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL3BrZ2NvbmZpZy1saWJuc2wucGF0Y2gKQEAgLTEsMTMgKzEsMjIgQEAKK0Zyb20gZTNhZTU2Y2YwYmI0MDYzYzMxMjk1ZjQ1ZDA0ZTNjNTA0ZjRiNmNjNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDI0IEFwciAyMDE3IDIwOjQxOjI1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGF1dG9mczogVXBncmFkZSB0byA1LjEuMiByZWxlYXNlCisKIFVzZSBwa2ctY29uZmlnIGZpcnN0IHRvIGxvb2sgZm9yIGV4dGVybmFsIGxpYm5zbCB3aGljaCBpcyBub3cKIHNwbGl0IG91dCBmcm9tIGdsaWJjLCBpZiBpdCBkb2VzIG5vdCBleGlzdCB0aGVuIHNlZSBpZiBpdHMgcHJvdmlkZWQKIGJ5IGdsaWJjIGl0c2VsZi4KIAogLUtoZW0KIAotSW5kZXg6IGF1dG9mcy01LjEuMi9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvZnMtNS4xLjIub3JpZy9jb25maWd1cmUuaW4KLSsrKyBhdXRvZnMtNS4xLjIvY29uZmlndXJlLmluCistLS0KKyBjb25maWd1cmUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDljZjczYjguLjEwMTZjNzEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgogQEAgLTE4Niw3ICsxODYsNyBAQCBmaQogICMKICAjIGdsaWJjL2xpYmMgNiBuZXcgbGlicmFyaWVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9yZW1vdmUtYmFzaGlzbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL3JlbW92ZS1iYXNoaXNtLnBhdGNoCmluZGV4IDI4MmQ2ZjAuLjQxODMwNjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL3JlbW92ZS1iYXNoaXNtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL3JlbW92ZS1iYXNoaXNtLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3OTAzNGY5NjliYmQxMjIxNWQ2NWI0MzM3ZGZkMzhhMTNkMDJkNGVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjZmFjYmI5MTdmODdiOTAzYjUwMTMyYTUwMjVmODZiMGNjNTIyZTljIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBTYXQsIDEzIFNlcCAyMDE0IDIwOjE5OjI4IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGF1dG9mcy5pbml0LmluOiByZW1vdmUgYmFzaGlzbQpAQCAtOSw5ICs5LDEwIEBACiAKIFNpZ25lZC1vZmYtYnk6IE1pa2UgTG9vaWptYW5zIDxtaWtlLmxvb2lqbWFuc0B0b3BpYy5ubD4KIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCiAtLS0KLSByZWRoYXQvYXV0b2ZzLmluaXQuaW4gfCAgIDEyICsrKysrKy0tLS0tLQotIHNhbXBsZXMvcmMuYXV0b2ZzLmluICB8ICAgMTAgKysrKystLS0tLQorIHJlZGhhdC9hdXRvZnMuaW5pdC5pbiB8IDEyICsrKysrKy0tLS0tLQorIHNhbXBsZXMvcmMuYXV0b2ZzLmluICB8IDEwICsrKysrLS0tLS0KICAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvcmVkaGF0L2F1dG9mcy5pbml0LmluIGIvcmVkaGF0L2F1dG9mcy5pbml0LmluCkBAIC0xMTUsNiArMTE2LDMgQEAKICAJcGlkPWBwaWRvZiAkcHJvZ2AKICAJaWYgWyAteiAkcGlkIF07IHRoZW4KICAJCWVjaG8gJCIkcHJvZyBub3QgcnVubmluZyIKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy91c2luZy1wa2ctY29uZmlnLXRvLWRldGVjdC1saWJ4bWwtMi4wLWFuZC1rcmI1LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvdXNpbmctcGtnLWNvbmZpZy10by1kZXRlY3QtbGlieG1sLTIuMC1hbmQta3JiNS5wYXRjaAppbmRleCA5M2I3NmJkLi4zZDBjNmJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy91c2luZy1wa2ctY29uZmlnLXRvLWRldGVjdC1saWJ4bWwtMi4wLWFuZC1rcmI1LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL3VzaW5nLXBrZy1jb25maWctdG8tZGV0ZWN0LWxpYnhtbC0yLjAtYW5kLWtyYjUucGF0Y2gKQEAgLTEsMTQgKzEsMTggQEAKLXVzaW5nIHBrZy1jb25maWcgdG8gZGV0ZWN0IGxpYnhtbC0yLjAgYW5kIGtyYjUKK0Zyb20gZGFiY2JkYWUzODAzOGE4ZTRhZDJjNDI4NjExMjM4MWM0MDdjNWNlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTkgQXVnIDIwMTQgMTE6MzE6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gdXNpbmcgcGtnLWNvbmZpZyB0byBkZXRlY3QgbGlieG1sLTIuMCBhbmQga3JiNQogCiBVcHN0cmVhbS1zdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBjb25maWd1cmUuaW4gfCAgIDE2ICsrKysrKysrKysrKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgY29uZmlndXJlLmluIHwgMTYgKysrKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCAzOTJkMTIyLi5hMzAyOGFhIDEwMDY0NAoraW5kZXggYjIyNjIzNi4uOWNmNzNiOCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5pbgogKysrIGIvY29uZmlndXJlLmluCiBAQCAtMTYyLDggKzE2MiwyMCBAQCBpZiB0ZXN0IHgkZW5hYmxlX3Nsb3BweV9tb3VudCA9IHh5ZXM7IHRoZW4KQEAgLTM0LDYgKzM4LDMgQEAKICAKICBBQ19TRUFSQ0hfTElCUyhbdmVyc2lvbnNvcnRdLFtdKQogIGlmIHRlc3QgIiRhY19jdl9zZWFyY2hfdmVyc2lvbnNvcnQiID0gIm5vIjsgdGhlbgotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsXzIuMS4yNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2xfMi4xLjI2LmJiCmluZGV4IGVhYTQ1M2QuLjZkYmZmODcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2xfMi4xLjI2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2xfMi4xLjI2LmJiCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJHZW5lcmljIGNsaWVudC9zZXJ2ZXIgbGlicmFyeSBmb3IgU0FTTCBhdXRoZW50aWNhdGlvbiIKIFNFQ1RJT04gPSAibGlicyIKIEhPTUVQQUdFID0gImh0dHA6Ly9hc2cud2ViLmNtdS5lZHUvc2FzbC8iCi1ERVBFTkRTID0gIm9wZW5zc2wgdmlydHVhbC9kYiIKK0RFUEVORFMgPSAib3BlbnNzbCBkYiIKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2Y1NWUwOTc0ZTNkNmRiMDBjYTZmNTdmMmQyMDYzOTYiCiAKQEAgLTc1LDggKzc1LDggQEAKIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tYmluIgogVVNFUkFERF9QQVJBTV8ke1BOfS1iaW4gPSAiLS1zeXN0ZW0gLS1ob21lPS92YXIvc3Bvb2wvbWFpbCAtZyBtYWlsIGN5cnVzIgogCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInNhc2xhdXRoZC5zZXJ2aWNlIgorU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1iaW4iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmluID0gInNhc2xhdXRoZC5zZXJ2aWNlIgogU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYTdmNGU1ZTU1OWEwZTM3YjNmZmM0MzhjOTQ1NmU0MjUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDEtbGlib3BlbmlzY3NpdXNyLUluY2x1ZGUtbGltaXQuaC1mb3ItUEFUSF9NQVgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDEtbGlib3BlbmlzY3NpdXNyLUluY2x1ZGUtbGltaXQuaC1mb3ItUEFUSF9NQVgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVlMWJlYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvMDAwMS1saWJvcGVuaXNjc2l1c3ItSW5jbHVkZS1saW1pdC5oLWZvci1QQVRIX01BWC5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIGNmZWU1OGQ1ODYzYTUzNWI2MWFhNTQ2OTBhZTIwNWI4NzZmNTc5NDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyIEZlYiAyMDE4IDIyOjUzOjI5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBsaWJvcGVuaXNjc2l1c3I6IEluY2x1ZGUgbGltaXQuaCBmb3IgUEFUSF9NQVgKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYm9wZW5pc2NzaXVzci9pZmFjZS5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9saWJvcGVuaXNjc2l1c3IvaWZhY2UuYyBiL2xpYm9wZW5pc2NzaXVzci9pZmFjZS5jCitpbmRleCA3OTg5OGRmLi5hNDhlZjM2IDEwMDY0NAorLS0tIGEvbGlib3BlbmlzY3NpdXNyL2lmYWNlLmMKKysrKyBiL2xpYm9wZW5pc2NzaXVzci9pZmFjZS5jCitAQCAtMzAsNiArMzAsNyBAQAorICNpbmNsdWRlIDxuZXRkYi5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2luY2x1ZGUgImxpYm9wZW5pc2NzaXVzci9saWJvcGVuaXNjc2l1c3IuaCIKKyAjaW5jbHVkZSAibWlzYy5oIgorLS0gCisyLjE2LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9maWxlcy8wMDAxLXFlZGkuYy1SZW1vdmVkLXVudXNlZC1saW51eC1ldGh0b29sLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDEtcWVkaS5jLVJlbW92ZWQtdW51c2VkLWxpbnV4LWV0aHRvb2wuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzRhYTUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9maWxlcy8wMDAxLXFlZGkuYy1SZW1vdmVkLXVudXNlZC1saW51eC1ldGh0b29sLmgucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSAxOTc3MTNhZDdlM2U5NDQxMDJiYmQ3OTJlMWFiOWVjNGE2NzEwMGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMiBGZWIgMjAxOCAyMzoyNToyMSAtMDgwMAorU3ViamVjdDogW1BBVENIIDEvNF0gcWVkaS5jOiBSZW1vdmVkIHVudXNlZCBsaW51eC9ldGh0b29sLmgKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGlzY3NpdWlvL3NyYy91bml4L2xpYnMvcWVkaS5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2lzY3NpdWlvL3NyYy91bml4L2xpYnMvcWVkaS5jIGIvaXNjc2l1aW8vc3JjL3VuaXgvbGlicy9xZWRpLmMKK2luZGV4IGI4MWZlY2QuLjI0Y2I4OWEgMTAwNjQ0CistLS0gYS9pc2NzaXVpby9zcmMvdW5peC9saWJzL3FlZGkuYworKysrIGIvaXNjc2l1aW8vc3JjL3VuaXgvbGlicy9xZWRpLmMKK0BAIC00OSw3ICs0OSw2IEBACisgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorICNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+CistI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KKyAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgorICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKy0tIAorMi4xNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvMDAwMi1pZGJtLmMtSW5jbHVkZS1mY25sLmgtZm9yLU9fUkRXUi1hbmQtT19DUkVBVC1kZWZpbml0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9maWxlcy8wMDAyLWlkYm0uYy1JbmNsdWRlLWZjbmwuaC1mb3ItT19SRFdSLWFuZC1PX0NSRUFULWRlZmluaXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVjZWRlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvMDAwMi1pZGJtLmMtSW5jbHVkZS1mY25sLmgtZm9yLU9fUkRXUi1hbmQtT19DUkVBVC1kZWZpbml0LnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gMmIzOWY4NWRjZjAyMDY0NzU0NDAwMmNiMGIwZTczNDc0ODM5MWRmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIgRmViIDIwMTggMjM6Mjc6MjUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIGlkYm0uYzogSW5jbHVkZSBmY25sLmggZm9yIE9fUkRXUiBhbmQgT19DUkVBVCBkZWZpbml0aW9ucworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdXNyL2lkYm0uYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvdXNyL2lkYm0uYyBiL3Vzci9pZGJtLmMKK2luZGV4IDU1MzIyMDIuLjBhNTFiODUgMTAwNjQ0CistLS0gYS91c3IvaWRibS5jCisrKysgYi91c3IvaWRibS5jCitAQCAtMjcsNiArMjcsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxkaXJlbnQuaD4KKyAjaW5jbHVkZSA8bGltaXRzLmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPHN5cy9maWxlLmg+CisgCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDItbGlib3BlbmlzY3NpdXNyLUFkZC1DRkxBR1MtdG8tbGlua2VyLWNtZGxpbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDItbGlib3BlbmlzY3NpdXNyLUFkZC1DRkxBR1MtdG8tbGlua2VyLWNtZGxpbmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM2ZWQ2MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvMDAwMi1saWJvcGVuaXNjc2l1c3ItQWRkLUNGTEFHUy10by1saW5rZXItY21kbGluZS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDI5NTcxZjcxNjkyZTI4Y2U5YTE3ZDE0NTAwOTdhOTg0OTJmM2I0NjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyIEZlYiAyMDE4IDIyOjU0OjA0IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBsaWJvcGVuaXNjc2l1c3I6IEFkZCBDRkxBR1MgdG8gbGlua2VyIGNtZGxpbmUKKworVGhpcyB3aWxsIGVuc3VyZSB0aGF0IC1mUElDIGlzIHBhc3NlZCB0byBsaW5rZXIgYXMKK3dlbGwKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYm9wZW5pc2NzaXVzci9NYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYm9wZW5pc2NzaXVzci9NYWtlZmlsZSBiL2xpYm9wZW5pc2NzaXVzci9NYWtlZmlsZQoraW5kZXggOGI5YjUyMy4uNGYxZDBkNiAxMDA2NDQKKy0tLSBhL2xpYm9wZW5pc2NzaXVzci9NYWtlZmlsZQorKysrIGIvbGlib3BlbmlzY3NpdXNyL01ha2VmaWxlCitAQCAtNDksNyArNDksNyBAQCBMSUJBREQgPQorIGFsbDogJChMSUJTKSAkKExJQlNfTUFKT1IpICQoVEVTVFMpIGRvYworIAorICQoTElCUyk6ICQoT0JKUykKKy0JJChDQykgJChMREZMQUdTKSAtc2hhcmVkIC1XbCwtc29uYW1lPSRAIC1vICRAICQoT0JKUykgJChMSUJBREQpCisrCSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1zaGFyZWQgLVdsLC1zb25hbWU9JEAgLW8gJEAgJChPQkpTKSAkKExJQkFERCkKKyAJbG4gLXNmICRAICQoREVWTElCKQorIAorICQoTElCU19NQUpPUik6ICQoTElCUykKKy0tIAorMi4xNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvMDAwMy1ibngyeC5jLVJlb3JkZXItdGhlLWluY2x1ZGVzLXRvLWF2b2lkLWR1cGxpY2F0ZS1kZWZpLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9maWxlcy8wMDAzLWJueDJ4LmMtUmVvcmRlci10aGUtaW5jbHVkZXMtdG8tYXZvaWQtZHVwbGljYXRlLWRlZmkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNlMTU1ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvMDAwMy1ibngyeC5jLVJlb3JkZXItdGhlLWluY2x1ZGVzLXRvLWF2b2lkLWR1cGxpY2F0ZS1kZWZpLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gOWI3YTMyOTAzYjU2Y2U0ZDQxZjI2NGEzNDVjYTU5YTBiMDBkNTNiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIgRmViIDIwMTggMjM6Mjg6MzMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGJueDJ4LmM6IFJlb3JkZXIgdGhlIGluY2x1ZGVzIHRvIGF2b2lkIGR1cGxpY2F0ZSBkZWZpbmVzCisgd2l0aCBtdXNsCisKK2luY2x1ZGluZyBuaWMuaCBiZWZvcmUgbGludXgvZXRodG9vbC5oIGF2b2lkcyByZWRlZmluaXRpb25zIG9mCitldGggc3RydWN0cworCisvbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvY29ydGV4YTd0MmhmLW5lb24tdmZwdjQtYmVjLWxpbnV4LW11c2xlYWJpL2lzY3NpLWluaXRpYXRvci11dGlscy8yLjAuODc2LXIwL3JlY2lwZS1zeXNyb290LwordXNyL2luY2x1ZGUvbmV0aW5ldC9pZl9ldGhlci5oOjEwNDo4OiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QgZXRoaGRyJworIHN0cnVjdCBldGhoZHIgeworICAgICAgICBefn5+fn4KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAvbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvY29ydGV4YTd0MmhmLW5lb24tdmZwdjQtYmVjLWxpbnV4LW11c2xlYWJpL2lzY3NpLWluaXRpYXRvci11dGlscy8yLjAuCis4NzYtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvbGludXgvZXRodG9vbC5oOjE5OjAsCisgICAgICAgICAgICAgICAgIGZyb20gcWVkaS5jOjUyOgorL21udC9hL29lL2J1aWxkL3RtcC93b3JrL2NvcnRleGE3dDJoZi1uZW9uLXZmcHY0LWJlYy1saW51eC1tdXNsZWFiaS9pc2NzaS1pbml0aWF0b3ItdXRpbHMvMi4wLjg3Ni1yMC9yZWNpcGUtc3lzcm9vdC8KK3Vzci9pbmNsdWRlL2xpbnV4L2lmX2V0aGVyLmg6MTU0Ojg6IG5vdGU6IG9yaWdpbmFsbHkgZGVmaW5lZCBoZXJlCisgc3RydWN0IGV0aGhkciB7CisgICAgICAgIF5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaXNjc2l1aW8vc3JjL3VuaXgvbGlicy9ibngyeC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaXNjc2l1aW8vc3JjL3VuaXgvbGlicy9ibngyeC5jIGIvaXNjc2l1aW8vc3JjL3VuaXgvbGlicy9ibngyeC5jCitpbmRleCAzZGY2ZDVmLi42MjUzMGQxIDEwMDY0NAorLS0tIGEvaXNjc2l1aW8vc3JjL3VuaXgvbGlicy9ibngyeC5jCisrKysgYi9pc2NzaXVpby9zcmMvdW5peC9saWJzL2JueDJ4LmMKK0BAIC0zNiw2ICszNiw3IEBACisgICogYm54MnguYyAtIGJueDJ4IHVzZXIgc3BhY2UgZHJpdmVyCisgICoKKyAgKi8KKysjaW5jbHVkZSAibmljLmgiCisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorQEAgLTU4LDcgKzU5LDYgQEAKKyAjaW5jbHVkZSAiYm54MnguaCIKKyAjaW5jbHVkZSAiY25pYy5oIgorICNpbmNsdWRlICJsb2dnZXIuaCIKKy0jaW5jbHVkZSAibmljLmgiCisgI2luY2x1ZGUgIm5pY19pZC5oIgorICNpbmNsdWRlICJuaWNfdXRpbHMuaCIKKyAjaW5jbHVkZSAib3B0aW9ucy5oIgorLS0gCisyLjE2LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9maWxlcy8wMDA0LWZ3cGFyYW1fcHBjLmMtRG8tbm90LXVzZS1fX2NvbXBhcl9mbl90LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9maWxlcy8wMDA0LWZ3cGFyYW1fcHBjLmMtRG8tbm90LXVzZS1fX2NvbXBhcl9mbl90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3YmRjOGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDQtZndwYXJhbV9wcGMuYy1Eby1ub3QtdXNlLV9fY29tcGFyX2ZuX3QucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA2ZjljMWEwNGQyNTAzODhkMTU3NGNmYWYyMGExZmY2NmE2NGJlYjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMiBGZWIgMjAxOCAyMzo0MjoxMiAtMDgwMAorU3ViamVjdDogW1BBVENIIDQvNF0gZndwYXJhbV9wcGMuYzogRG8gbm90IHVzZSBfX2NvbXBhcl9mbl90CisKK19fY29tcGFyX2ZuX3QgaXMgbm90IGRlZmluZWQgaW4gbXVzbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdXRpbHMvZndwYXJhbV9pYmZ0L2Z3cGFyYW1fcHBjLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS91dGlscy9md3BhcmFtX2liZnQvZndwYXJhbV9wcGMuYyBiL3V0aWxzL2Z3cGFyYW1faWJmdC9md3BhcmFtX3BwYy5jCitpbmRleCBjMjk4YjhjLi4zOTFmYWEyIDEwMDY0NAorLS0tIGEvdXRpbHMvZndwYXJhbV9pYmZ0L2Z3cGFyYW1fcHBjLmMKKysrKyBiL3V0aWxzL2Z3cGFyYW1faWJmdC9md3BhcmFtX3BwYy5jCitAQCAtMzU2LDcgKzM1Niw3IEBAIHN0YXRpYyBpbnQgbG9vcF9kZXZzKGNvbnN0IGNoYXIgKmRldnRyZWUpCisgCSAqIFNvcnQgdGhlIG5pY3MgaW50byAibmF0dXJhbCIgb3JkZXIuCVRoZSBwcm9jIGZzCisgCSAqIGRldmljZS10cmVlIGhhcyB0aGVtIGluIHNvbWV3aGF0IHJhbmRvbSwgb3IgcmV2ZXJzZWQgb3JkZXIuCisgCSAqLworLQlxc29ydChuaWNsaXN0LCBuaWNfY291bnQsIHNpemVvZihjaGFyICopLCAoX19jb21wYXJfZm5fdCluaWNfY21wKTsKKysJcXNvcnQobmljbGlzdCwgbmljX2NvdW50LCBzaXplb2YoY2hhciAqKSwgbmljX2NtcCk7CisgCisgCXNucHJpbnRmKHByZWZpeCwgc2l6ZW9mKHByZWZpeCksICIlcy8lcyIsIGRldnRyZWUsICJhbGlhc2VzIik7CisgCWRldl9jb3VudCA9IDA7CistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzL2lzY3NpLWluaXRpYXRvci11dGlscy1Eby1ub3QtY2xlYW4ta2VybmVsLXNvdXJjZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzLURvLW5vdC1jbGVhbi1rZXJuZWwtc291cmNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzQ2NjExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzLURvLW5vdC1jbGVhbi1rZXJuZWwtc291cmNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSA0ZWJhYjhhZGQ0YTU0OWMxNmFiOGIxMjQxMzc1NDZjMGE3YjQ2YTliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm9lIE1hY0RvbmFsZCA8am9lX21hY2RvbmFsZEBtZW50b3IuY29tPgotRGF0ZTogVHVlLCAxNSBOb3YgMjAxNiAxMToxMTozMCAtMDUwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgY2xlYW4ga2VybmVsIHNvdXJjZQotCi1UaGUgZGVmYXVsdCBiZWhhdmlvdXIgc2hvdWxkIG5vdCBiZSB0byBhdHRlbXB0IHRvIGNsZWFuIHRoZSBrZXJuZWwgc291cmNlCi10cmVlIHdoZW4gYnVpbGRpbmcgdXNlcnNwYWNlLiAgV2hlbiBub3QgY3Jvc3MtY29tcGlsaW5nLCBob3dldmVyLCB0aGlzIGFjdGlvbiBpcwotaGFybWxlc3MsIGJ1dCB3aGVuIGF0dGVtcHRpbmcgdG8gYnVpbGQgd2l0aGluIHRoZSBzeXNyb290IGFuZCBzaW5jZSB0aGlzIHBhY2thZ2UKLWlzIHB1cmVseSB1c2Vyc3BhY2UsIHRoZSBjbGVhbiBzdGVwIHdpbGwgZmFpbC4KLQotUmVtb3ZpbmcgdGhlIGNsZWFuIHN0ZXAgZWxpbWluYXRlcyBhbiB1bm5lY2Vzc2FyeSBkZXBlbmRlbmN5IG9uIHRoZSBrZXJuZWwgYnVpbGQKLWluZnJhc3RydWN0dXJlLgotCi1VcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUgKGVtYmVkZGVkIHNwZWNpZmljKQotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgTWFjRG9uYWxkIDxqb2VfbWFjZG9uYWxkQG1lbnRvci5jb20+Ci0tLS0KLSBNYWtlZmlsZSB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggYzhjZDAwZS4uOTU3NmJiYSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTM3LDcgKzM3LDcgQEAgZW5kaWYKLSAKLSBhbGw6IHVzZXIKLSAKLS11c2VyOiBpc2NzaXVpby9NYWtlZmlsZQotK3VzZXI6Ci0gCSQoTUFLRSkgLUMgdXRpbHMvc3lzZGVwcwotIAkkKE1BS0UpIC1DIHV0aWxzL2Z3cGFyYW1faWJmdAotIAkkKE1BS0UpIC1DIHVzcgotQEAgLTc1LDcgKzc1LDYgQEAgY2xlYW46Ci0gCSQoTUFLRSkgLUMgdXRpbHMvZndwYXJhbV9pYmZ0IGNsZWFuCi0gCSQoTUFLRSkgLUMgdXRpbHMgY2xlYW4KLSAJJChNQUtFKSAtQyB1c3IgY2xlYW4KLS0JJChNQUtFKSAtQyBrZXJuZWwgY2xlYW4KLSAJWyAhIC1mIGlzY3NpdWlvL01ha2VmaWxlIF0gfHwgJChNQUtFKSAtQyBpc2NzaXVpbyBjbGVhbgotIAlbICEgLWYgaXNjc2l1aW8vTWFrZWZpbGUgXSB8fCAkKE1BS0UpIC1DIGlzY3NpdWlvIGRpc3RjbGVhbgotIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzL2lzY3NpLWluaXRpYXRvci11dGlscy1md19jb250ZXh0LWFkZC1pbmNsdWRlLWZvci1OSV9NQVhIT1NULWRlZmluaXRvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzLWZ3X2NvbnRleHQtYWRkLWluY2x1ZGUtZm9yLU5JX01BWEhPU1QtZGVmaW5pdG9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2Q2OTVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzLWZ3X2NvbnRleHQtYWRkLWluY2x1ZGUtZm9yLU5JX01BWEhPU1QtZGVmaW5pdG9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA3OWJlYTU4YTU1NDIwNWRkMTg1NTA5ZmJjNGU3NmI1ZmM0MGY5MDM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm9lIE1hY0RvbmFsZCA8am9lX21hY2RvbmFsZEBtZW50b3IuY29tPgotRGF0ZTogVHVlLCAxNSBOb3YgMjAxNiAxMjozNjo0NSAtMDUwMAotU3ViamVjdDogW1BBVENIXSBmd19jb250ZXh0OiBhZGQgaW5jbHVkZSBmb3IgTklfTUFYSE9TVCBkZWZpbml0b24KLQotVGhpcyBhcHBlYXJzIHRvIGJ1aWxkIHN1Y2Nlc3NmdWxseSB3aXRoIGdjYyA0LnggYnV0IGZhaWxzIG9uIGdjYyA1KywgdGhvdWdoIGl0J3MKLW5vdCBpbW1lZGlhdGVseSBjbGVhciB3aHkgTklfTUFYSE9TVCBpc24ndCBiZWluZyBkZWZpbmVkIGZyb20gdGhlIGluY2x1ZGUKLWNoYWluLiAgQ3VycmVudGx5IGVuZ2FnaW5nIHdpdGggdGhlIHVwc3RyZWFtIGRldnMgdG8gZGV0ZXJtaW5lIHRoZSBiZXN0IGNvdXJzZQotb2YgYWN0aW9uLCBidXQgdGhpcyBpcyBhbiBhZGVxdWF0ZSB3b3JrYXJvdW5kLgotCi1VcHN0cmVhbS1zdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSm9lIE1hY0RvbmFsZCA8am9lX21hY2RvbmFsZEBtZW50b3IuY29tPgotLS0tCi0gaW5jbHVkZS9md19jb250ZXh0LmggfCA0ICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvZndfY29udGV4dC5oIGIvaW5jbHVkZS9md19jb250ZXh0LmgKLWluZGV4IDQ0MDUzZDguLjBiMDVjZWEgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2Z3X2NvbnRleHQuaAotKysrIGIvaW5jbHVkZS9md19jb250ZXh0LmgKLUBAIC0yMSw2ICsyMSwxMCBAQAotICNpZm5kZWYgRldQQVJBTV9DT05URVhUX0hfCi0gI2RlZmluZSBGV1BBUkFNX0NPTlRFWFRfSF8KLSAKLSsjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotKyNpZm5kZWYgTklfTUFYSE9TVAotKyNkZWZpbmUgTklfTUFYSE9TVCAxMDI1Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPG5ldGRiLmg+Ci0gI2luY2x1ZGUgPG5ldC9pZi5oPgotIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjAuODc0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9pc2NzaS1pbml0aWF0b3ItdXRpbHNfMi4wLjg3NC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZhYzE5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjAuODc0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLVNVTU1BUlkgPSAiaVNDU0kgZGFlbW9uIGFuZCB1dGlsaXR5IHByb2dyYW1zIgotREVTQ1JJUFRJT04gPSAiT3Blbi1pU0NTSSBwcm9qZWN0IGlzIGEgaGlnaCBwZXJmb3JtYW5jZSwgdHJhbnNwb3J0IFwKLWluZGVwZW5kZW50LCBtdWx0aS1wbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbiBvZiBSRkMzNzIwLiBUaGUgaXNjc2kgcGFja2FnZSBcCi1wcm92aWRlcyB0aGUgc2VydmVyIGRhZW1vbiBmb3IgdGhlIGlTQ1NJIHByb3RvY29sLCBhcyB3ZWxsIGFzIHRoZSB1dGlsaXR5IFwKLXByb2dyYW1zIHVzZWQgdG8gbWFuYWdlIGl0LiBpU0NTSSBpcyBhIHByb3RvY29sIGZvciBkaXN0cmlidXRlZCBcCi1kaXNrIGFjY2VzcyB1c2luZyBTQ1NJIGNvbW1hbmRzIHNlbnQgb3ZlciBJbnRlcm5ldCBQcm90b2NvbCBuZXR3b3Jrcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW4taXNjc2kuY29tLyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLVNFQ1RJT04gPSAibmV0IgotREVQRU5EUyA9ICJvcGVuc3NsIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBvcGVuLWlzbnMgdXRpbC1saW51eCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzkzYTVjYTQ0NWY2OTY1ODczZWNhMDI1OWExN2Y4MzMiCi0KLVNSQ1JFViA/PSAiOGRiOTcxN2U3M2QzMmQyYzUxMzFkYTRmOWFkODZkZmQ5MDY1Zjc0YiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW4taXNjc2kvb3Blbi1pc2NzaSBcCi0gICAgZmlsZTovL2lzY3NpLWluaXRpYXRvci11dGlscy1Eby1ub3QtY2xlYW4ta2VybmVsLXNvdXJjZS5wYXRjaCBcCi0gICAgZmlsZTovL2lzY3NpLWluaXRpYXRvci11dGlscy1md19jb250ZXh0LWFkZC1pbmNsdWRlLWZvci1OSV9NQVhIT1NULWRlZmluaXRvbi5wYXRjaCBcCi0gICAgZmlsZTovL2luaXRkLmRlYmlhbiBcCi0gICAgZmlsZTovLzk5X2lzY3NpLWluaXRpYXRvci11dGlscyBcCi0gICAgZmlsZTovL2lzY3NpLWluaXRpYXRvciBcCi0gICAgZmlsZTovL2lzY3NpLWluaXRpYXRvci5zZXJ2aWNlIFwKLSAgICBmaWxlOi8vaXNjc2ktaW5pdGlhdG9yLXRhcmdldHMuc2VydmljZSBcCi0gICAgZmlsZTovL3NldF9pbml0aWF0b3JuYW1lIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtXT1JLRElSfS9idWlsZCIKLQotaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kIGF1dG90b29scyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLSMgb3Blbi1pc25zIGRlcGVuZHMgb24gc3lzdGVtZAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gXAotICAgIC0taG9zdD0ke0JVSUxEX1NZU30gXAotICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSIKLQotRVhUUkFfT0VNQUtFID0gJyBcCi0gICAgQ0M9IiR7Q0N9IiBcCi0gICAgQVI9IiR7QVJ9IiBcCi0gICAgUkFOTElCPSIke1JBTkxJQn0iIFwKLSAgICBDRkxBR1M9IiR7Q0ZMQUdTfSAke0NQUEZMQUdTfSAtRF9HTlVfU09VUkNFIC1JLiAtSS4uL2luY2x1ZGUgLUkuLi8uLi9pbmNsdWRlIC1JLi4vdXNyIC1JLi4vLi4vdXNyIiBcCi0gICAgTERGTEFHUz0iJHtMREZMQUdTfSIgXAotICAgIExEPSIke0xEfSIgXAotICAgIE9TPSIke1RBUkdFVF9TWVN9IiBcCi0gICAgVEFSR0VUPSIke1RBUkdFVF9PU30iIFwKLSAgICBCQVNFPSIke3ByZWZpeH0iIFwKLSAgICBNQU5ESVI9IiR7bWFuZGlyfSIgXAotJwotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotZG9fY29uZmlndXJlICgpIHsKLSAgICBjZCAke1N9L2lzY3NpdWlvIDsgYXV0b3JlY29uZiAtLWluc3RhbGw7IC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQotfQotCi1kb19jb21waWxlICgpIHsKLSAgICAjIE1ha2Ugc3VyZSB3ZSBETyBOT1QgcmVnZW5lcmF0ZSBwcm9tX2xleC5jLgotICAgIG12ICR7U30vdXRpbHMvZndwYXJhbV9pYmZ0L3Byb21fbGV4LmwgJHtTfS91dGlscy9md3BhcmFtX2liZnQvcHJvbV9sZXgubC51bnVzZWQKLSAgICBvZV9ydW5tYWtlIC1DICR7U30gJHtFWFRSQV9PRU1BS0V9IHVzZXIKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgI2luc3RhbGwgbmVjZXNzYXJ5IGRpcmVjdG9yaWVzCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfSBcCi0gICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCBcCi0gICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2lzY3NpIFwKLSAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2lzY3NpL25vZGVzIFwKLSAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2lzY3NpL3NlbmRfdGFyZ2V0cyBcCi0gICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9pc2NzaS9zdGF0aWMgXAotICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvaXNjc2kvaXNucyBcCi0gICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9pc2NzaS9zbHAgXAotICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvaXNjc2kvaWZhY2VzIFwKLSAgICAgICAgJHtEfS8ke21hbmRpcn0vbWFuOAotCi0gICAgaW5zdGFsbCAtcCAtbSA3NTUgJHtTfS91c3IvaXNjc2lkICR7U30vdXNyL2lzY3NpYWRtIFwKLSAgICAgICAgJHtTfS91dGlscy9pc2NzaS1pbmFtZSBcCi0gICAgICAgICR7U30vdXNyL2lzY3Npc3RhcnQgJHtEfS8ke3NiaW5kaXJ9Ci0KLSAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2RvYy9pc2NzaWFkbS44ICR7U30vZG9jL2lzY3NpZC44ICR7RH0vJHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2V0Yy9pc2NzaWQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9pc2NzaQotICAgIGluc3RhbGwgLXAgLW0gNzU1ICR7V09SS0RJUn0vaW5pdGQuZGViaWFuICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9pc2NzaWQKLQotICAgIHNlZCAtaSAtZSAiczo9IC9zYmluL2lzY3NpZDo9ICR7c2JpbmRpcn0vaXNjc2lkOiIgJHtEfSR7c3lzY29uZmRpcn0vaXNjc2kvaXNjc2lkLmNvbmYKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgICAgICBlY2hvICJkIC9ydW4vJHtCUE59L2xvY2sgLSAtIC0gLSIgXAotICAgICAgICAgICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2lzY3NpLmNvbmYKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0LwotICAgICAgICBpbnN0YWxsIC1wIC1tIDc1NSAke1dPUktESVJ9L2lzY3NpLWluaXRpYXRvciAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LwotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2lzY3NpLWluaXRpYXRvci5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7V09SS0RJUn0vaXNjc2ktaW5pdGlhdG9yLXRhcmdldHMuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2xpYmRpcn0vaXNjc2kKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vc2V0X2luaXRpYXRvcm5hbWUgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2lzY3NpCi0gICAgZWxzZQotICAgICAgICBpbnN0YWxsIC1kICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X2lzY3NpLWluaXRpYXRvci11dGlscyAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcwotICAgIGZpCi19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSgpIHsKLSAgICBpZiBbICJ4JEQiID0gIngiIF07IHRoZW4KLSAgICAgICAgaWYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCi0gICAgICAgICAgICAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLSAgICAgICAgZWxpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgICAgc3lzdGVtZC10bXBmaWxlcyAtLWNyZWF0ZSAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvaXNjc2kuY29uZgotICAgICAgICBmaQotICAgIGZpCi19Ci0KLVNZU1RFTURfU0VSVklDRSA9ICIgaXNjc2ktaW5pdGlhdG9yLnNlcnZpY2UgaXNjc2ktaW5pdGlhdG9yLXRhcmdldHMuc2VydmljZSAiCi1JTklUU0NSSVBUX05BTUUgPSAiaXNjc2lkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMzAgMSAyIDMgNCA1IC4gc3RvcCA3MCAwIDEgMiAzIDQgNSA2IC4iCi0KLUZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfbGliZGlyfS9pc2NzaSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzXzIuMC44NzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjAuODc2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMzIyN2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjAuODc2LmJiCkBAIC0wLDAgKzEsMTE3IEBACitTVU1NQVJZID0gImlTQ1NJIGRhZW1vbiBhbmQgdXRpbGl0eSBwcm9ncmFtcyIKK0RFU0NSSVBUSU9OID0gIk9wZW4taVNDU0kgcHJvamVjdCBpcyBhIGhpZ2ggcGVyZm9ybWFuY2UsIHRyYW5zcG9ydCBcCitpbmRlcGVuZGVudCwgbXVsdGktcGxhdGZvcm0gaW1wbGVtZW50YXRpb24gb2YgUkZDMzcyMC4gVGhlIGlzY3NpIHBhY2thZ2UgXAorcHJvdmlkZXMgdGhlIHNlcnZlciBkYWVtb24gZm9yIHRoZSBpU0NTSSBwcm90b2NvbCwgYXMgd2VsbCBhcyB0aGUgdXRpbGl0eSBcCitwcm9ncmFtcyB1c2VkIHRvIG1hbmFnZSBpdC4gaVNDU0kgaXMgYSBwcm90b2NvbCBmb3IgZGlzdHJpYnV0ZWQgXAorZGlzayBhY2Nlc3MgdXNpbmcgU0NTSSBjb21tYW5kcyBzZW50IG92ZXIgSW50ZXJuZXQgUHJvdG9jb2wgbmV0d29ya3MuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuLWlzY3NpLmNvbS8iCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitTRUNUSU9OID0gIm5ldCIKK0RFUEVORFMgPSAib3BlbnNzbCBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgb3Blbi1pc25zIHV0aWwtbGludXgiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM5M2E1Y2E0NDVmNjk2NTg3M2VjYTAyNTlhMTdmODMzIgorCitTUkNSRVYgPz0gIjI0NTgwYWRjNGMxNzRiYmM1ZGRlM2FlNzU5NGE0NmQ1NzYzNWU5MDYiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuLWlzY3NpL29wZW4taXNjc2kgXAorICAgIGZpbGU6Ly9pbml0ZC5kZWJpYW4gXAorICAgIGZpbGU6Ly85OV9pc2NzaS1pbml0aWF0b3ItdXRpbHMgXAorICAgIGZpbGU6Ly9pc2NzaS1pbml0aWF0b3IgXAorICAgIGZpbGU6Ly9pc2NzaS1pbml0aWF0b3Iuc2VydmljZSBcCisgICAgZmlsZTovL2lzY3NpLWluaXRpYXRvci10YXJnZXRzLnNlcnZpY2UgXAorICAgIGZpbGU6Ly9zZXRfaW5pdGlhdG9ybmFtZSBcCisgICAgZmlsZTovLzAwMDEtbGlib3BlbmlzY3NpdXNyLUluY2x1ZGUtbGltaXQuaC1mb3ItUEFUSF9NQVgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLWxpYm9wZW5pc2NzaXVzci1BZGQtQ0ZMQUdTLXRvLWxpbmtlci1jbWRsaW5lLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1xZWRpLmMtUmVtb3ZlZC11bnVzZWQtbGludXgtZXRodG9vbC5oLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1pZGJtLmMtSW5jbHVkZS1mY25sLmgtZm9yLU9fUkRXUi1hbmQtT19DUkVBVC1kZWZpbml0LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1ibngyeC5jLVJlb3JkZXItdGhlLWluY2x1ZGVzLXRvLWF2b2lkLWR1cGxpY2F0ZS1kZWZpLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1md3BhcmFtX3BwYy5jLURvLW5vdC11c2UtX19jb21wYXJfZm5fdC5wYXRjaCBcCisiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1dPUktESVJ9L2J1aWxkIgorCitpbmhlcml0IHVwZGF0ZS1yYy5kIHN5c3RlbWQgYXV0b3Rvb2xzCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gXAorICAgIC0taG9zdD0ke0JVSUxEX1NZU30gXAorIgorCitFWFRSQV9PRU1BS0UgPSAnIFwKKyAgICBPUz0iJHtUQVJHRVRfU1lTfSIgXAorICAgIFRBUkdFVD0iJHtUQVJHRVRfT1N9IiBcCisgICAgQkFTRT0iJHtwcmVmaXh9IiBcCisgICAgTUFORElSPSIke21hbmRpcn0iIFwKKycKKworZG9fY29uZmlndXJlICgpIHsKKyAgICBjZCAke1N9L2lzY3NpdWlvIDsgYXV0b3JlY29uZiAtLWluc3RhbGw7IC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQorfQorCitkb19jb21waWxlICgpIHsKKyAgICAjIE1ha2Ugc3VyZSB3ZSBETyBOT1QgcmVnZW5lcmF0ZSBwcm9tX2xleC5jLgorICAgIGlmIFsgLWYgJHtTfS91dGlscy9md3BhcmFtX2liZnQvcHJvbV9sZXgubCBdOyB0aGVuCisgICAgICAgIG12ICR7U30vdXRpbHMvZndwYXJhbV9pYmZ0L3Byb21fbGV4LmwgJHtTfS91dGlscy9md3BhcmFtX2liZnQvcHJvbV9sZXgubC51bnVzZWQKKyAgICBmaQorICAgIG9lX3J1bm1ha2UgLUMgJHtTfSAke0VYVFJBX09FTUFLRX0gdXNlcgorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICAjaW5zdGFsbCBuZWNlc3NhcnkgZGlyZWN0b3JpZXMKKyAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9IFwKKyAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIFwKKyAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaXNjc2kgXAorICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvaXNjc2kvbm9kZXMgXAorICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvaXNjc2kvc2VuZF90YXJnZXRzIFwKKyAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2lzY3NpL3N0YXRpYyBcCisgICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9pc2NzaS9pc25zIFwKKyAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2lzY3NpL3NscCBcCisgICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9pc2NzaS9pZmFjZXMgXAorICAgICAgICAke0R9JHtsaWJkaXJ9IFwKKyAgICAgICAgJHtEfSR7bWFuZGlyfS9tYW44CisKKyAgICBpbnN0YWxsIC1wIC1tIDc1NSAke1N9L3Vzci9pc2NzaWQgJHtTfS91c3IvaXNjc2lhZG0gXAorICAgICAgICAke1N9L3V0aWxzL2lzY3NpLWluYW1lIFwKKyAgICAgICAgJHtTfS91c3IvaXNjc2lzdGFydCAke0R9LyR7c2JpbmRpcn0KKworICAgIGNwIC1kUiAke1N9L2xpYm9wZW5pc2NzaXVzci9saWJvcGVuaXNjc2l1c3Iuc28qICR7RH0ke2xpYmRpcn0KKyAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2RvYy9pc2NzaWFkbS44ICR7U30vZG9jL2lzY3NpZC44ICR7RH0vJHttYW5kaXJ9L21hbjgKKyAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2V0Yy9pc2NzaWQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9pc2NzaQorICAgIGluc3RhbGwgLXAgLW0gNzU1ICR7V09SS0RJUn0vaW5pdGQuZGViaWFuICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9pc2NzaWQKKworICAgIHNlZCAtaSAtZSAiczo9IC9zYmluL2lzY3NpZDo9ICR7c2JpbmRpcn0vaXNjc2lkOiIgJHtEfSR7c3lzY29uZmRpcn0vaXNjc2kvaXNjc2lkLmNvbmYKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBlY2hvICJkIC9ydW4vJHtCUE59L2xvY2sgLSAtIC0gLSIgXAorICAgICAgICAgICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2lzY3NpLmNvbmYKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0LworICAgICAgICBpbnN0YWxsIC1wIC1tIDc1NSAke1dPUktESVJ9L2lzY3NpLWluaXRpYXRvciAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LworCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2lzY3NpLWluaXRpYXRvci5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7V09SS0RJUn0vaXNjc2ktaW5pdGlhdG9yLXRhcmdldHMuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2xpYmRpcn0vaXNjc2kKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vc2V0X2luaXRpYXRvcm5hbWUgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2lzY3NpCisgICAgZWxzZQorICAgICAgICBpbnN0YWxsIC1kICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X2lzY3NpLWluaXRpYXRvci11dGlscyAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworICAgIGZpCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSgpIHsKKyAgICBpZiBbICJ4JEQiID0gIngiIF07IHRoZW4KKyAgICAgICAgaWYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCisgICAgICAgICAgICAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKKyAgICAgICAgZWxpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgICAgc3lzdGVtZC10bXBmaWxlcyAtLWNyZWF0ZSAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvaXNjc2kuY29uZgorICAgICAgICBmaQorICAgIGZpCit9CisKK1NZU1RFTURfU0VSVklDRSA9ICIgaXNjc2ktaW5pdGlhdG9yLnNlcnZpY2UgaXNjc2ktaW5pdGlhdG9yLXRhcmdldHMuc2VydmljZSAiCitJTklUU0NSSVBUX05BTUUgPSAiaXNjc2lkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMzAgMSAyIDMgNCA1IC4gc3RvcCA3MCAwIDEgMiAzIDQgNSA2IC4iCisKK0ZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfbGliZGlyfS9pc2NzaSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9rZWVwYWxpdmVkL2tlZXBhbGl2ZWRfMS4zLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMva2VlcGFsaXZlZC9rZWVwYWxpdmVkXzEuMy41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTdlNmU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9rZWVwYWxpdmVkL2tlZXBhbGl2ZWRfMS4zLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkhpZ2ggQXZhaWxhYmlsaXR5IG1vbml0b3IgYnVpbHQgdXBvbiBMVlMsIFZSUlAgYW5kIHNlcnZpY2UgcG9sbGVycyIKLURFU0NSSVBUSU9OID0gIktlZXBhbGl2ZWQgaXMgYSByb3V0aW5nIHNvZnR3YXJlIHdyaXR0ZW4gaW4gQy4gVGhlIG1haW4gZ29hbCBcCi1vZiB0aGlzIHByb2plY3QgaXMgdG8gcHJvdmlkZSBzaW1wbGUgYW5kIHJvYnVzdCBmYWNpbGl0aWVzIGZvciBsb2FkYmFsYW5jaW5nIFwKLWFuZCBoaWdoLWF2YWlsYWJpbGl0eSB0byBMaW51eCBzeXN0ZW0gYW5kIExpbnV4IGJhc2VkIGluZnJhc3RydWN0dXJlcy4gXAotTG9hZGJhbGFuY2luZyBmcmFtZXdvcmsgcmVsaWVzIG9uIHdlbGwta25vd24gYW5kIHdpZGVseSB1c2VkIExpbnV4IFZpcnR1YWwgXAotU2VydmVyIChJUFZTKSBrZXJuZWwgbW9kdWxlIHByb3ZpZGluZyBMYXllcjQgbG9hZGJhbGFuY2luZyBcCi0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmtlZXBhbGl2ZWQub3JnLyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cua2VlcGFsaXZlZC5vcmcvc29mdHdhcmUvJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTk2NGQyOTVlYzlkMzRlZDM0MDhiNTdkMjg4NDdiNjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzAxMTRkODZlYTRjODk2NTU3YmViMGQ5MzY3ODE5YTQyM2ZmYmE3NzJiYzVkN2M1NDhkYzQ1NWU2YjNiZDA0OCIKLQotREVQRU5EUyA9ICJsaWJuZm5ldGxpbmsgb3BlbnNzbCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYm5sIHNubXAgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1tsaWJubF0gPSAiLS1lbmFibGUtbGlibmwsLS1kaXNhYmxlLWxpYm5sLGxpYm5sIgotUEFDS0FHRUNPTkZJR1tzbm1wXSA9ICItLWVuYWJsZS1zbm1wLC0tZGlzYWJsZS1zbm1wLG5ldC1zbm1wIgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtaW5pdD1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0td2l0aC1pbml0PVNZU1Ysc3lzdGVtZCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1saWJpcHRjIgotRVhUUkFfT0VNQUtFID0gImluaXRkaXI9JHtzeXNjb25mZGlyfS9pbml0LmQiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmIFsgLWYgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLyR7QlBOfSBdOyB0aGVuCi0gICAgICAgIGNobW9kIDA3NTUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLyR7QlBOfQotICAgICAgICBzZWQgLWkgJ3MjcmMuZC8jIycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLyR7QlBOfQotICAgIGZpCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtCfS8ke0JQTn0vJHtCUE59LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vJHtCUE59LnNlcnZpY2UKLSAgICBmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9zbm1wL21pYnMvS0VFUEFMSVZFRC1NSUIudHh0IgotCi1JTklUU0NSSVBUX05BTUUgPSAia2VlcGFsaXZlZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInJlbW92ZSIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImtlZXBhbGl2ZWQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPz0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMva2VlcGFsaXZlZC9rZWVwYWxpdmVkXzEuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2tlZXBhbGl2ZWQva2VlcGFsaXZlZF8xLjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjQxN2I3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2tlZXBhbGl2ZWQva2VlcGFsaXZlZF8xLjQuMi5iYgpAQCAtMCwwICsxLDQ4IEBACitTVU1NQVJZID0gIkhpZ2ggQXZhaWxhYmlsaXR5IG1vbml0b3IgYnVpbHQgdXBvbiBMVlMsIFZSUlAgYW5kIHNlcnZpY2UgcG9sbGVycyIKK0RFU0NSSVBUSU9OID0gIktlZXBhbGl2ZWQgaXMgYSByb3V0aW5nIHNvZnR3YXJlIHdyaXR0ZW4gaW4gQy4gVGhlIG1haW4gZ29hbCBcCitvZiB0aGlzIHByb2plY3QgaXMgdG8gcHJvdmlkZSBzaW1wbGUgYW5kIHJvYnVzdCBmYWNpbGl0aWVzIGZvciBsb2FkYmFsYW5jaW5nIFwKK2FuZCBoaWdoLWF2YWlsYWJpbGl0eSB0byBMaW51eCBzeXN0ZW0gYW5kIExpbnV4IGJhc2VkIGluZnJhc3RydWN0dXJlcy4gXAorTG9hZGJhbGFuY2luZyBmcmFtZXdvcmsgcmVsaWVzIG9uIHdlbGwta25vd24gYW5kIHdpZGVseSB1c2VkIExpbnV4IFZpcnR1YWwgXAorU2VydmVyIChJUFZTKSBrZXJuZWwgbW9kdWxlIHByb3ZpZGluZyBMYXllcjQgbG9hZGJhbGFuY2luZyBcCisiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmtlZXBhbGl2ZWQub3JnLyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cua2VlcGFsaXZlZC5vcmcvc29mdHdhcmUvJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjYxMGFmNmUwNDA3MWYwMmQzNDY5MTkxZGU3NDk5ZjRlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRlMmQ3Y2MwMWE2ZWUyOWEzOTU1ZjVjNjIyZDQ3NzA0YmE3ZDlkZDc1ODE4OWYxNWU5ZGVmMDE2YTJkMWZhYTMiCisKK0RFUEVORFMgPSAibGlibmZuZXRsaW5rIG9wZW5zc2wiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJubCBzbm1wIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbbGlibmxdID0gIi0tZW5hYmxlLWxpYm5sLC0tZGlzYWJsZS1saWJubCxsaWJubCIKK1BBQ0tBR0VDT05GSUdbc25tcF0gPSAiLS1lbmFibGUtc25tcCwtLWRpc2FibGUtc25tcCxuZXQtc25tcCIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLWluaXQ9c3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLXdpdGgtaW5pdD1TWVNWLHN5c3RlbWQiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbGliaXB0YyIKK0VYVFJBX09FTUFLRSA9ICJpbml0ZGlyPSR7c3lzY29uZmRpcn0vaW5pdC5kIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpZiBbIC1mICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0gXTsgdGhlbgorICAgICAgICBjaG1vZCAwNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KKyAgICAgICAgc2VkIC1pICdzI3JjLmQvIyMnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KKyAgICBmaQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7Qn0vJHtCUE59LyR7QlBOfS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LyR7QlBOfS5zZXJ2aWNlCisgICAgZmkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vc25tcC9taWJzL0tFRVBBTElWRUQtTUlCLnR4dCIKKworSU5JVFNDUklQVF9OQU1FID0gImtlZXBhbGl2ZWQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJyZW1vdmUiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrZWVwYWxpdmVkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID89ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS1maXgtaG9zdC1nY2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLWZpeC1ob3N0LWdjYy5wYXRjaAppbmRleCAwMjliODU3Li45N2M1MTVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLWZpeC1ob3N0LWdjYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLWZpeC1ob3N0LWdjYy5wYXRjaApAQCAtNiwxMSArNiwxMSBAQAogCiBTaWduZWQtb2YtYnk6IEF3cyBJc21haWwgPGF3cy5pc21haWxAd2luZHJpdmVyLmNvbT4KIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZjVhNWI3NC4uNGEyMDE1NCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjA1LDExICs2MDUsNiBAQCBBQ19BUkdfRU5BQkxFKFt3ZXJyb3JdLAorSW5kZXg6IG9wZW5ocGktMy42LjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbmhwaS0zLjYuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG9wZW5ocGktMy42LjEvY29uZmlndXJlLmFjCitAQCAtNjU2LDExICs2NTYsNiBAQCBBQ19BUkdfRU5BQkxFKFt3ZXJyb3JdLAogICAgICBmaV0sCiAgICAgIFtdKQogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS1maXgtdGVzdGZhaWwtZXJyb3JzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS1maXgtdGVzdGZhaWwtZXJyb3JzLnBhdGNoCmluZGV4IDIwNTY5NmUuLjYwZTJlNzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL29wZW5ocGktZml4LXRlc3RmYWlsLWVycm9ycy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLWZpeC10ZXN0ZmFpbC1lcnJvcnMucGF0Y2gKQEAgLTQsMTAgKzQsMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogeWFuanVuLnpodSA8eWFuanVuLnpodUB3aW5kcml2ZXIuY29tPgogCi1kaWZmIC11cnBOIGEvb3BlbmhwaWQvc2FmaHBpLmMgYi9vcGVuaHBpZC9zYWZocGkuYwotLS0tIGEvb3BlbmhwaWQvc2FmaHBpLmMKLSsrKyBiL29wZW5ocGlkL3NhZmhwaS5jCi1AQCAtMTk3Niw3ICsxOTc2LDcgQEAgU2FFcnJvclQgU0FIUElfQVBJIHNhSHBpU2Vuc29yVGhyZXNob2xkcworSW5kZXg6IG9wZW5ocGktMy42LjEvb3BlbmhwaWQvc2FmaHBpLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuaHBpLTMuNi4xLm9yaWcvb3BlbmhwaWQvc2FmaHBpLmMKKysrKyBvcGVuaHBpLTMuNi4xL29wZW5ocGlkL3NhZmhwaS5jCitAQCAtMTkzMyw3ICsxOTMzLDcgQEAgU2FFcnJvclQgU0FIUElfQVBJIHNhSHBpU2Vuc29yVGhyZXNob2xkcwogICAgICAgICAgb2hfcmVsZWFzZV9kb21haW4oZCk7IC8qIFVubG9jayBkb21haW4gKi8KICAKICAgICAgICAgIE9IX0NBTExfQUJJKGgsIHNldF9zZW5zb3JfdGhyZXNob2xkcywgU0FfRVJSX0hQSV9JTlZBTElEX0NNRCwgcnYsCkBAIC0xNiwxMCArMTcsMTEgQEAKICAgICAgICAgIG9oX3JlbGVhc2VfaGFuZGxlcihoKTsKICAKICAgICAgICAgIHJldHVybiBydjsKLWRpZmYgLXVycE4gYS91dGlscy9zYWhwaV9zdHJ1Y3RfdXRpbHMuYyBiL3V0aWxzL3NhaHBpX3N0cnVjdF91dGlscy5jCi0tLS0gYS91dGlscy9zYWhwaV9zdHJ1Y3RfdXRpbHMuYwotKysrIGIvdXRpbHMvc2FocGlfc3RydWN0X3V0aWxzLmMKLUBAIC0zODU1LDYgKzM4NTUsOSBAQCBTYUhwaUJvb2xUIG9oX3ZhbGlkX3RleHRidWZmZXIoU2FIcGlUZXh0CitJbmRleDogb3BlbmhwaS0zLjYuMS91dGlscy9zYWhwaV9zdHJ1Y3RfdXRpbHMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5ocGktMy42LjEub3JpZy91dGlscy9zYWhwaV9zdHJ1Y3RfdXRpbHMuYworKysrIG9wZW5ocGktMy42LjEvdXRpbHMvc2FocGlfc3RydWN0X3V0aWxzLmMKK0BAIC0zODYxLDYgKzM4NjEsOSBAQCBTYUhwaUJvb2xUIG9oX3ZhbGlkX3RleHRidWZmZXIoU2FIcGlUZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvdW5kIGEgdW5wYWlyZWQgc3Vycm9nYXRlICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTQUhQSV9GQUxTRTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL29wZW5ocGktaHBpLXNoZWxsLXRocmVhZC1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLWhwaS1zaGVsbC10aHJlYWQtZml4LnBhdGNoCmluZGV4IDdkYWM0NTMuLmNjMjFmZjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL29wZW5ocGktaHBpLXNoZWxsLXRocmVhZC1maXgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS1ocGktc2hlbGwtdGhyZWFkLWZpeC5wYXRjaApAQCAtMTQsMTEgKzE0LDExIEBACiAgICAgCiAgICAgU2lnbmVkLW9mZi1ieTogQXdzIElzbWFpbCA8YXdzLmlzbWFpbEB3aW5kcml2ZXIuY29tPgogCi1kaWZmIC0tZ2l0IGEvaHBpX3NoZWxsL3Nlc3Npb24uYyBiL2hwaV9zaGVsbC9zZXNzaW9uLmMKLWluZGV4IDg1YzMxYmYuLjE4N2RhNGMgMTAwNjQ0Ci0tLS0gYS9ocGlfc2hlbGwvc2Vzc2lvbi5jCi0rKysgYi9ocGlfc2hlbGwvc2Vzc2lvbi5jCi1AQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgdm9pZCogcHJvZ3Jlc3NfYmFyKHZvaWQgKnVudXNlZCkKK0luZGV4OiBvcGVuaHBpLTMuNi4xL2hwaV9zaGVsbC9zZXNzaW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuaHBpLTMuNi4xLm9yaWcvaHBpX3NoZWxsL3Nlc3Npb24uYworKysrIG9wZW5ocGktMy42LjEvaHBpX3NoZWxsL3Nlc3Npb24uYworQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIHZvaWQqIHByb2dyZXNzX2Jhcih2b2lkICp1bnVzZWQpCiAgCQlpZiAoaSA8IChQUk9HUkVTU19CVUZfU0laRSAtIG1lc19sZW4gLSAxKSkgaSsrOwogIAkJdCsrOwogIAl9OwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS1saWJ4bWwyLWNyb3NzLWNvbXBpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLWxpYnhtbDItY3Jvc3MtY29tcGlsZS5wYXRjaAppbmRleCA2ZDNiNjY0Li5jODQ4YjM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLWxpYnhtbDItY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLWxpYnhtbDItY3Jvc3MtY29tcGlsZS5wYXRjaApAQCAtNiwxMSArNiwxMSBAQAogCiBTaWduZWQtb2YtYnk6IEF3cyBJc21haWwgPGF3cy5pc21haWxAd2luZHJpdmVyLmNvbT4KIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMzBhNzkyYy4uYjVmNWFhZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTc1LDcgKzE3NSw3IEBAIEFDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvbWQyLmggb3BlbnNzbC9tZDUuaCBvcGVuc3NsL2Jpby5oIG9wZW5zc2wvc3NsLmggb3BlbnNzCitJbmRleDogb3BlbmhwaS0zLjYuMS9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuaHBpLTMuNi4xLm9yaWcvY29uZmlndXJlLmFjCisrKysgb3BlbmhwaS0zLjYuMS9jb25maWd1cmUuYWMKK0BAIC0xNzcsNyArMTc3LDcgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbb3BlbnNzbC9tZDIuaCBvcGVuc3NsLwogIAogIGRubCB4bWwgaXMgdXNlZCBmb3IgWE1MLWJhc2VkIGNvbW11bmljYXRpb24gaW4gaWxvMl9yaWJjbCBhbmQgb2Ffc29hcAogIEFDX0NIRUNLX0xJQihbeG1sMl0sW3htbFBhcnNlTWVtb3J5XSxbWE1MMl9MSUI9LWx4bWwyXSxbWE1MMl9MSUI9XSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL29wZW5ocGktdXNlLXNlcmlhbC10ZXN0cy1jb25maWctbmVlZGVkLWJ5LXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS11c2Utc2VyaWFsLXRlc3RzLWNvbmZpZy1uZWVkZWQtYnktcHRlc3QucGF0Y2gKaW5kZXggNTE1MzdlZi4uM2UwOTE4MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS11c2Utc2VyaWFsLXRlc3RzLWNvbmZpZy1uZWVkZWQtYnktcHRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS11c2Utc2VyaWFsLXRlc3RzLWNvbmZpZy1uZWVkZWQtYnktcHRlc3QucGF0Y2gKQEAgLTEzLDE5ICsxMywxNiBAQAogIGNvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KICAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNGI1MTk3MS4uMTYxMzZiMyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNyw3ICs3LDcgQEAgZG5sICAgdmFyaW91cyBoYWNrcyBieSBTZWFuIERhZ3VlIDxodHRwOi8vZGFndWUubmV0L3NlYW4+IDQvMjMvMDMKK0luZGV4OiBvcGVuaHBpLTMuNi4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5ocGktMy42LjEub3JpZy9jb25maWd1cmUuYWMKKysrKyBvcGVuaHBpLTMuNi4xL2NvbmZpZ3VyZS5hYworQEAgLTcsNyArNyw3IEBAIGRubCAgIHZhcmlvdXMgaGFja3MgYnkgU2VhbiBEYWd1ZSA8aHR0cDoKICBBQ19QUkVSRVEoMi41NykKLSBBQ19JTklUKG9wZW5ocGksIDMuNS4wKQorIEFDX0lOSVQob3BlbmhwaSwgMy42LjEpCiAgQUNfQ09ORklHX1NSQ0RJUihvcGVuaHBpLnNwZWMuaW4pCiAtQU1fSU5JVF9BVVRPTUFLRShbMS44XSkKICtBTV9JTklUX0FVVE9NQUtFKFsxLjggc2VyaWFsLXRlc3RzXSkKICAKICBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQogIEFIX1RPUChbI2lmbmRlZiBfX09QRU5IUElfQ09ORklHX0gKLS0tIAotMS43LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLWNvbmZpZ3VyZS1EaXNhYmxlLWZvcm1hdC1vdmVyZmxvdy1pZi1zdXBwb3J0ZWQtYnktZ2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtY29uZmlndXJlLURpc2FibGUtZm9ybWF0LW92ZXJmbG93LWlmLXN1cHBvcnRlZC1ieS1nYy5wYXRjaAppbmRleCA1MTJlMjQ2Li5lZmZlMjVjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtY29uZmlndXJlLURpc2FibGUtZm9ybWF0LW92ZXJmbG93LWlmLXN1cHBvcnRlZC1ieS1nYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtY29uZmlndXJlLURpc2FibGUtZm9ybWF0LW92ZXJmbG93LWlmLXN1cHBvcnRlZC1ieS1nYy5wYXRjaApAQCAtMTEsMTAgKzExLDEwIEBACiAgMyBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBtNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGQ2M2ZiYmIuLjEwMTJhMmMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KK0luZGV4OiBvcGVuc2FmLTUuMTguMDIvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuc2FmLTUuMTguMDIub3JpZy9NYWtlZmlsZS5hbQorKysrIG9wZW5zYWYtNS4xOC4wMi9NYWtlZmlsZS5hbQogQEAgLTUyLDEwICs1MiwxMCBAQCBBTV9DUFBGTEFHUyA9IFwKICAJLXB0aHJlYWQgXAogIAktRF9HTlVfU09VUkNFIC1ESU5URVJOQUxfVkVSU0lPTl9JRD0nIkBJTlRFUk5BTF9WRVJTSU9OX0lEQCInIFwKQEAgLTI2LDE0ICsyNiwxNCBAQAogLUFNX0NYWEZMQUdTID0gLXBpcGUgLXN0ZD1nbnUrKzExIEBPU0FGX0hBUkRFTl9GTEFHU0AgLVdhbGwgLVdmb3JtYXQ9MiAtV2Vycm9yCiArQU1fQ0ZMQUdTID0gLXBpcGUgLXN0ZD1nbnUxMSBAT1NBRl9IQVJERU5fRkxBR1NAIC1XYWxsIC1XZm9ybWF0PTIgLVdlcnJvciBATk9XQVJOSU5HU0AKICtBTV9DWFhGTEFHUyA9IC1waXBlIC1zdGQ9Z251KysxMSBAT1NBRl9IQVJERU5fRkxBR1NAIC1XYWxsIC1XZm9ybWF0PTIgLVdlcnJvciBATk9XQVJOSU5HU0AKLSBBTV9MREZMQUdTID0gQE9TQUZfSEFSREVOX0ZMQUdTQCAtV2wsLS1hcy1uZWVkZWQgLWxkbCAtbHJ0IC1wdGhyZWFkIC1yZHluYW1pYwotIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00Ci0gT1NBRl9MSUJfRkxBR1MgPQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMDI3NzFjNi4uYjc2YjBmZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTU3LDYgKzU1Nyw4IEBAIGlmIHRlc3QgLXogIiRPU0FGX0hBUkRFTl9GTEFHUyI7IHRoZW4KKyAKKyBpZiBFTkFCTEVfR0NPVgorIEFNX0NGTEFHUyArPSAtLWNvdmVyYWdlCitJbmRleDogb3BlbnNhZi01LjE4LjAyL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5zYWYtNS4xOC4wMi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG9wZW5zYWYtNS4xOC4wMi9jb25maWd1cmUuYWMKK0BAIC01OTMsNiArNTkzLDggQEAgaWYgdGVzdCAteiAiJE9TQUZfSEFSREVOX0ZMQUdTIjsgdGhlbgogIGZpCiAgQUNfU1VCU1QoT1NBRl9IQVJERU5fRkxBR1MpCiAgCkBAIC00MiwxMSArNDIsMTAgQEAKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIExpc3QgdGhlIG91dHB1dCBNYWtlZmlsZXMKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLWRpZmYgLS1naXQgYS9tNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQgYi9tNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kY2FiYjkyCitJbmRleDogb3BlbnNhZi01LjE4LjAyL200L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAotKysrIGIvbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00CisrKysgb3BlbnNhZi01LjE4LjAyL200L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNAogQEAgLTAsMCArMSw3NCBAQAogKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiArIyAgaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5odG1sCkBAIC0xMjIsNiArMTIxLDMgQEAKICsgIFttNF9kZWZhdWx0KFskM10sIDopXSkKICtBU19WQVJfUE9QREVGKFtDQUNIRVZBUl0pZG5sCiArXSlkbmwgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHUwotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZl81LjE3LjA3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZl81LjE3LjA3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDQ4M2Q3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWZfNS4xNy4wNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlblNBRiBpcyBhbiBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU0FGIEFJUyBzcGVjaWZpY2F0aW9uIgotREVTQ1JJUFRJT04gPSAiT3BlblNBRiBpcyBhbiBvcGVuIHNvdXJjZSBwcm9qZWN0IGVzdGFibGlzaGVkIHRvIGRldmVsb3AgYSBiYXNlIHBsYXRmb3JtIFwKLW1pZGRsZXdhcmUgY29uc2lzdGVudCB3aXRoIFNlcnZpY2UgQXZhaWxhYmlsaXR5IEZvcnVtIChTQSBGb3J1bSkgXAotc3BlY2lmaWNhdGlvbnMsIHVuZGVyIHRoZSBMR1BMdjIuMSBsaWNlbnNlLiBUaGUgT3BlblNBRiBGb3VuZGF0aW9uIHdhcyBcCi1lc3RhYmxpc2hlZCBieSBsZWFkaW5nIENvbW11bmljYXRpb25zIGFuZCBFbnRlcnByaXNlIENvbXB1dGluZyBDb21wYW5pZXMgdG8gXAotZmFjaWxpdGF0ZSB0aGUgT3BlblNBRiBQcm9qZWN0IGFuZCB0byBhY2NlbGVyYXRlIHRoZSBhZG9wdGlvbiBvZiB0aGUgT3BlblNBRiBcCi1jb2RlIGJhc2UgaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4gXAotVGhlIE9wZW5TQUYgcHJvamVjdCB3YXMgbGF1bmNoZWQgaW4gbWlkIDIwMDcgYW5kIGhhcyBiZWVuIHVuZGVyIGRldmVsb3BtZW50IGJ5IFwKLWFuIGluZm9ybWFsIGdyb3VwIG9mIHN1cHBvcnRlcnMgb2YgdGhlIE9wZW5TQUYgaW5pdGlhdGl2ZS4gVGhlIE9wZW5TQUYgXAotRm91bmRhdGlvbiB3YXMgZm91bmRlZCBvbiBKYW51YXJ5IDIybmQgMjAwOCB3aXRoIEVtZXJzb24gTmV0d29yayBQb3dlciwgXAotRXJpY3Nzb24sIE5va2lhIFNpZW1lbnMgTmV0d29ya3MsIEhQIGFuZCBTdW4gTWljcm9zeXN0ZW1zIGFzIGZvdW5kaW5nIG1lbWJlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc2FmLm9yZyIKLVNFQ1RJT04gPSAiYWRtaW4iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgotCi1ERVBFTkRTID0gImxpYnhtbDIgcHl0aG9uIgotVE9PTENIQUlOID0gImdjYyIKLQotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLVBhc3MtbGlua2VyLXNwZWNpZmljLW9wdGlvbnMtd2l0aC1XbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1EaXNhYmxlLWZvcm1hdC1vdmVyZmxvdy1pZi1zdXBwb3J0ZWQtYnktZ2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtQWRkLW1pc3NpbmctaGVhZGVyLWxpbWl0cy5oLWZvci1fUE9TSVhfSE9TVF9OQU1FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW1tcGJlX2R1bXAuY2MtVXNlLXN5cy13YWl0LmgtaW5zdGVhZC1vZi13YWl0LmgucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjEyNWJjZDlhYWJkNzQxMmFlZGNiZmJmNzNmNGU2MTk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNmYjIyMzliYjJjOTMyOGM4YjQ1MzY4ZmY4ZDhkZTk3OWVhMjg2YTI3ZWRjOTg3MWQyMTgyMDBlODhiYjkxY2MiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVzZXJhZGQgc3lzdGVtZCBwa2djb25maWcKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi1mIC1yIG9wZW5zYWYiCi1VU0VSQUREX1BBUkFNXyR7UE59ID0gICItciAtZyBvcGVuc2FmIC1kICR7ZGF0YWRpcn0vb3BlbnNhZi8gLXMgJHtzYmluZGlyfS9ub2xvZ2luIC1jIFwiT3BlblNBRlwiIG9wZW5zYWYiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSArPSAib3BlbnNhZmQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICIsLHN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW29wZW5ocGldID0gIi0td2l0aC1ocGktaW50ZXJmYWNlPUIwMyAtLWVuYWJsZS1haXMtcGxtLCxvcGVuaHBpIgotCi1QQUNLQUdFQ09ORklHX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnIHN5c3RlbWQnLCAnJywgZCl9IgotCi1QS0dMSUJESVI9IiR7bGliZGlyfSIKLQotTERGTEFHUyArPSAiLVdsLC0tYXMtbmVlZGVkIC1sYXRvbWljIC1XbCwtLW5vLWFzLW5lZWRlZCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgY3AgLWF2IC0tbm8tcHJlc2VydmU9b3duZXJzaGlwICR7Qn0vbGliLy5saWJzLyouc28qICR7RH0ke2xpYmRpcn0KLSAgICBybSAtZnIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvY2siCi0gICAgcm0gLWZyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgotICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtkYXRhZGlyfS9qYXZhIgotICAgIGlmIFsgISAtZCAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L29zYWYvc2VydmljZXMvaW5mcmFzdHJ1Y3R1cmUvbmlkL3NjcmlwdHMvb3BlbnNhZmQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotICAgIGZpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQS0dMSUJESVJ9LyouYSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgotCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCBweXRob24iCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWZfNS4xOC4wMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWZfNS4xOC4wMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjU1NmNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZl81LjE4LjAyLmJiCkBAIC0wLDAgKzEsNjcgQEAKK1NVTU1BUlkgPSAiT3BlblNBRiBpcyBhbiBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU0FGIEFJUyBzcGVjaWZpY2F0aW9uIgorREVTQ1JJUFRJT04gPSAiT3BlblNBRiBpcyBhbiBvcGVuIHNvdXJjZSBwcm9qZWN0IGVzdGFibGlzaGVkIHRvIGRldmVsb3AgYSBiYXNlIHBsYXRmb3JtIFwKK21pZGRsZXdhcmUgY29uc2lzdGVudCB3aXRoIFNlcnZpY2UgQXZhaWxhYmlsaXR5IEZvcnVtIChTQSBGb3J1bSkgXAorc3BlY2lmaWNhdGlvbnMsIHVuZGVyIHRoZSBMR1BMdjIuMSBsaWNlbnNlLiBUaGUgT3BlblNBRiBGb3VuZGF0aW9uIHdhcyBcCitlc3RhYmxpc2hlZCBieSBsZWFkaW5nIENvbW11bmljYXRpb25zIGFuZCBFbnRlcnByaXNlIENvbXB1dGluZyBDb21wYW5pZXMgdG8gXAorZmFjaWxpdGF0ZSB0aGUgT3BlblNBRiBQcm9qZWN0IGFuZCB0byBhY2NlbGVyYXRlIHRoZSBhZG9wdGlvbiBvZiB0aGUgT3BlblNBRiBcCitjb2RlIGJhc2UgaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4gXAorVGhlIE9wZW5TQUYgcHJvamVjdCB3YXMgbGF1bmNoZWQgaW4gbWlkIDIwMDcgYW5kIGhhcyBiZWVuIHVuZGVyIGRldmVsb3BtZW50IGJ5IFwKK2FuIGluZm9ybWFsIGdyb3VwIG9mIHN1cHBvcnRlcnMgb2YgdGhlIE9wZW5TQUYgaW5pdGlhdGl2ZS4gVGhlIE9wZW5TQUYgXAorRm91bmRhdGlvbiB3YXMgZm91bmRlZCBvbiBKYW51YXJ5IDIybmQgMjAwOCB3aXRoIEVtZXJzb24gTmV0d29yayBQb3dlciwgXAorRXJpY3Nzb24sIE5va2lhIFNpZW1lbnMgTmV0d29ya3MsIEhQIGFuZCBTdW4gTWljcm9zeXN0ZW1zIGFzIGZvdW5kaW5nIG1lbWJlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc2FmLm9yZyIKK1NFQ1RJT04gPSAiYWRtaW4iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgorCitERVBFTkRTID0gImxpYnhtbDIgcHl0aG9uIgorVE9PTENIQUlOID0gImdjYyIKKworU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLVBhc3MtbGlua2VyLXNwZWNpZmljLW9wdGlvbnMtd2l0aC1XbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1EaXNhYmxlLWZvcm1hdC1vdmVyZmxvdy1pZi1zdXBwb3J0ZWQtYnktZ2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtQWRkLW1pc3NpbmctaGVhZGVyLWxpbWl0cy5oLWZvci1fUE9TSVhfSE9TVF9OQU1FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW1tcGJlX2R1bXAuY2MtVXNlLXN5cy13YWl0LmgtaW5zdGVhZC1vZi13YWl0LmgucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjQyMDY0ZjVkZGJjN2Y1NjBiZmM1ZmY5M2VhOWVlY2M3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY5ZTI0ODk3ZjljZmQ2M2JiMzExNWY2Mjc1YzcwNmRlMTcwMmQzZDliYWUyZmM0MjMyMjdkYjcyYjIzYzM3ZjAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVzZXJhZGQgc3lzdGVtZCBwa2djb25maWcKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1mIC1yIG9wZW5zYWYiCitVU0VSQUREX1BBUkFNXyR7UE59ID0gICItciAtZyBvcGVuc2FmIC1kICR7ZGF0YWRpcn0vb3BlbnNhZi8gLXMgJHtzYmluZGlyfS9ub2xvZ2luIC1jIFwiT3BlblNBRlwiIG9wZW5zYWYiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSArPSAib3BlbnNhZmQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICIsLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW29wZW5ocGldID0gIi0td2l0aC1ocGktaW50ZXJmYWNlPUIwMyAtLWVuYWJsZS1haXMtcGxtLCxvcGVuaHBpIgorCitQQUNLQUdFQ09ORklHX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnIHN5c3RlbWQnLCAnJywgZCl9IgorCitQS0dMSUJESVI9IiR7bGliZGlyfSIKKworTERGTEFHUyArPSAiLVdsLC0tYXMtbmVlZGVkIC1sYXRvbWljIC1XbCwtLW5vLWFzLW5lZWRlZCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgY3AgLWF2IC0tbm8tcHJlc2VydmU9b3duZXJzaGlwICR7Qn0vbGliLy5saWJzLyouc28qICR7RH0ke2xpYmRpcn0KKyAgICBybSAtZnIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvY2siCisgICAgcm0gLWZyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtkYXRhZGlyfS9qYXZhIgorICAgIGlmIFsgISAtZCAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIiBdOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L29zYWYvc2VydmljZXMvaW5mcmFzdHJ1Y3R1cmUvbmlkL3NjcmlwdHMvb3BlbnNhZmQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworICAgIGZpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQS0dMSUJESVJ9LyouYSIKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCBweXRob24iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzL21haW4uY2YgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy9tYWluLmNmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NWM2ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy9tYWluLmNmCkBAIC0wLDAgKzEsMTA1IEBACitjb21wYXRpYmlsaXR5X2xldmVsID0gMgorc210cHV0ZjhfZW5hYmxlID0gbm8KKworIyBDb25maWd1cmUgeW91ciBkb21haW4gYW5kIGFjY291bnRzCisjbXlkb21haW49c2FtcGxlLmNvbQorI0ZRRE4gZnJvbSBnZXRob3N0bmFtZQorI215aG9zdG5hbWUgPQorbXlkb21haW49bG9jYWxkb21haW4KK215ZGVzdGluYXRpb24gPSAkbXlob3N0bmFtZSwgbG9jYWxob3N0LmxvY2FsZG9tYWluIGxvY2FsaG9zdAorbXluZXR3b3JrcyA9IDEyNy4wLjAuMS84CitpbmV0X2ludGVyZmFjZXMgPSAxMjcuMC4wLjEKKwordmlydHVhbF9tYWlsYm94X2RvbWFpbnMgPSBzYW1wbGUuY29tLCBvdGhlci5uZXQKK3ZpcnR1YWxfbWFpbGJveF9tYXBzID0gaGFzaDovZXRjL3Bvc3RmaXgvdmlydHVhbAordmlydHVhbF9hbGlhc19tYXBzID0gaGFzaDovZXRjL3Bvc3RmaXgvdmlydHVhbF9hbGlhcworCithbGlhc19tYXBzID0gaGFzaDovZXRjL2FsaWFzZXMKKworIyBZb3UnbGwgc3RhcnQgd2l0aCB0aGUgZm9sbG93aW5nIGxpbmVzIGZvciBtYWlsZGlyIHN0b3JhZ2UKK3ZpcnR1YWxfbWFpbGJveF9iYXNlID0gL3Zhci9zcG9vbC92bWFpbAordmlydHVhbF91aWRfbWFwcyA9IHN0YXRpYzpgZ3JlcCB2bWFpbCAvZXRjL3Bhc3N3ZCB8IGN1dCAtZCAiOiIgLWYgM2AKK3ZpcnR1YWxfZ2lkX21hcHMgPSBzdGF0aWM6YGdyZXAgdm1haWwgL2V0Yy9wYXNzd2QgfCBjdXQgLWQgIjoiIC1mIDRgCisKKworIyBZb3UnbGwgc3RhcnQgd2l0aCB0aGUgZm9sbG93aW5nIGxpbmVzIGZvciBJTUFQIHN0b3JhZ2UKKyN2aXJ0dWFsX3RyYW5zcG9ydCA9IGxtdHA6dW5peDovdmFyL2xpYi9jeXJ1cy9zb2NrZXQvbG10cAorCisKKyMgR2VuZXJhbCBzdHVmZiBoZXJlIGFnYWluCisjY29uZmlnX2RpcmVjdG9yeSA9IC9ldGMvcG9zdGZpeAorc2FtcGxlX2RpcmVjdG9yeSA9IC9ldGMvcG9zdGZpeAorcXVldWVfZGlyZWN0b3J5ID0gL3Zhci9zcG9vbC9wb3N0Zml4CittYWlsX3Nwb29sX2RpcmVjdG9yeSA9IC92YXIvc3Bvb2wvbWFpbAorcmVhZG1lX2RpcmVjdG9yeSA9IG5vCitjb21tYW5kX2RpcmVjdG9yeSA9IC91c3Ivc2JpbgorZGFlbW9uX2RpcmVjdG9yeSA9IEBMSUJFWEVDRElSQC9wb3N0Zml4CittYWlsX293bmVyID0gcG9zdGZpeAorc2V0Z2lkX2dyb3VwID0gcG9zdGRyb3AKK3Vua25vd25fbG9jYWxfcmVjaXBpZW50X3JlamVjdF9jb2RlID0gNDUwCitteW5ldHdvcmtzX3N0eWxlID0gaG9zdAorZGVidWdfcGVlcl9sZXZlbCA9IDIKK3NlbmRtYWlsX3BhdGggPSAvdXNyL3NiaW4vc2VuZG1haWwKK25ld2FsaWFzZXNfcGF0aCA9IC91c3IvYmluL25ld2FsaWFzZXMKK21haWxxX3BhdGggPSAvdXNyL2Jpbi9tYWlscQorCitzbXRwZF9kYXRhX3Jlc3RyaWN0aW9ucyA9CisgICAgICAgIHBlcm1pdF9teW5ldHdvcmtzLAorICAgICAgICByZWplY3RfdW5hdXRoX3BpcGVsaW5pbmcsCisgICAgICAgIHBlcm1pdAorCitzbXRwZF9jbGllbnRfcmVzdHJpY3Rpb25zID0KKyAgICAgICAgcGVybWl0X215bmV0d29ya3MsCisgICAgICAgICMgcmVqZWN0X3Vua25vd25fY2xpZW50LCAjIFRoaXMgY2FuIGNhdXNlIGEgbG90IG9mIGZhbHNlIHJlamVjdHMuCisgICAgICAgIHJlamVjdF9pbnZhbGlkX2hvc3RuYW1lLAorICAgICAgICByZWplY3RfcmJsX2NsaWVudCBsaXN0LmRzYmwub3JnLAorICAgICAgICByZWplY3RfcmJsX2NsaWVudCBzYmwuc3BhbWhhdXMub3JnLAorICAgICAgICByZWplY3RfcmJsX2NsaWVudCBjYmwuYWJ1c2VhdC5vcmcsCisgICAgICAgIHJlamVjdF9yYmxfY2xpZW50IGR1bC5kbnNibC5zb3Jicy5uZXQsCisgICAgICAgIHBlcm1pdAorCitzbXRwZF9oZWxvX3JlcXVpcmVkID0geWVzCitzbXRwZF9oZWxvX3Jlc3RyaWN0aW9ucyA9CisgICAgICAgIHBlcm1pdF9teW5ldHdvcmtzLAorICAgICAgICByZWplY3RfdW5hdXRoX3BpcGVsaW5pbmcsCisgICAgICAgICMgcmVqZWN0X25vbl9mcWRuX2hvc3RuYW1lLCAjIFRoaXMgY2FuIGNhdXNlIGEgbG90IG9mIGZhbHNlIHJlamVjdHMuCisgICAgICAgICMgcmVqZWN0X3Vua25vd25faG9zdG5hbWUsICMgVGhpcyBjYW4gY2F1c2UgYSBsb3Qgb2YgZmFsc2UgcmVqZWN0cy4KKyAgICAgICAgcmVqZWN0X2ludmFsaWRfaG9zdG5hbWUsCisgICAgICAgIHBlcm1pdAorCitzbXRwZF9zZW5kZXJfcmVzdHJpY3Rpb25zID0KKyAgICAgICAgcGVybWl0X215bmV0d29ya3MsCisgICAgICAgIHJlamVjdF9ub25fZnFkbl9zZW5kZXIsCisgICAgICAgICMgY2hlY2tfc2VuZGVyX2FjY2VzcyBoYXNoOi9ldGMvcG9zdGZpeC9hY2Nlc3NfZG9tYWlucywKKyAgICAgICAgcmVqZWN0X3Vua25vd25fc2VuZGVyX2RvbWFpbiwKKyAgICAgICAgcGVybWl0CisKK3NtdHBkX3JlY2lwaWVudF9yZXN0cmljdGlvbnMgPQorICAgICAgICBwZXJtaXRfbXluZXR3b3JrcywKKyAgICAgICAgcGVybWl0X3Nhc2xfYXV0aGVudGljYXRlZCwKKyAgICAgICAgcmVqZWN0X3VuYXV0aF9kZXN0aW5hdGlvbiwKKworICAgICAgICAjIGNoZWNrX3JlY2lwaWVudF9hY2Nlc3MgcGNyZTovZXRjL3Bvc3RmaXgvcmVjaXBpZW50X2NoZWNrcy5wY3JlLAorICAgICAgICAjIGNoZWNrX2hlbG9fYWNjZXNzIHBjcmU6L2V0Yy9wb3N0Zml4L2hlbG9fY2hlY2tzLnBjcmUsCisKKyAgICAgICAgIyBjaGVja19jbGllbnRfYWNjZXNzIGhhc2g6L2V0Yy9wb3N0Zml4L21hcHMvYWNjZXNzX2NsaWVudCwKKyAgICAgICAgIyBjaGVja19jbGllbnRfYWNjZXNzIGhhc2g6L2V0Yy9wb3N0Zml4L21hcHMvZXhjZXB0aW9uc19jbGllbnQsCisgICAgICAgICMgY2hlY2tfaGVsb19hY2Nlc3MgaGFzaDovZXRjL3Bvc3RmaXgvbWFwcy9hY2Nlc3NfaGVsbywKKyAgICAgICAgIyBjaGVja19oZWxvX2FjY2VzcyBoYXNoOi9ldGMvcG9zdGZpeC9tYXBzL3ZlcmlmeV9oZWxvLAorICAgICAgICAjIGNoZWNrX3NlbmRlcl9hY2Nlc3MgaGFzaDovZXRjL3Bvc3RmaXgvbWFwcy9hY2Nlc3Nfc2VuZGVyLAorICAgICAgICAjIGNoZWNrX3NlbmRlcl9hY2Nlc3MgaGFzaDovZXRjL3Bvc3RmaXgvbWFwcy92ZXJpZnlfc2VuZGVyLAorICAgICAgICAjIGNoZWNrX3JlY2lwaWVudF9hY2Nlc3MgaGFzaDovZXRjL3Bvc3RmaXgvbWFwcy9hY2Nlc3NfcmVjaXBpZW50LAorCisgICAgICAgICMgcmVqZWN0X211bHRpX3JlY2lwaWVudF9ib3VuY2UsCisgICAgICAgIHJlamVjdF9ub25fZnFkbl9yZWNpcGllbnQsCisgICAgICAgIHJlamVjdF91bmtub3duX3JlY2lwaWVudF9kb21haW4sCisgICAgICAgICMgcmVqZWN0X3VubGlzdGVkX3JlY2lwaWVudCwKKyAgICAgICAgI2NoZWNrX3BvbGljeV9zZXJ2aWNlIHVuaXg6cHJpdmF0ZS9wb2xpY3ksCisKKyAgICAgICAgIyBjaGVja19zZW5kZXJfYWNjZXNzIGhhc2g6L2V0Yy9wb3N0Zml4L21hcHMvbm9fdmVyaWZ5X3NlbmRlciwKKyAgICAgICAgIyBjaGVja19zZW5kZXJfYWNjZXNzIGhhc2g6L2V0Yy9wb3N0Zml4L2FjY2Vzc19kb21haW5zLAorICAgICAgICAjIHJlamVjdF91bnZlcmlmaWVkX3NlbmRlciwKKyAgICAgICAgIyByZWplY3RfdW52ZXJpZmllZF9yZWNpcGllbnQKKyAgICAgICAgY2hlY2tfcmVjaXBpZW50X2FjY2VzcyBoYXNoOi9ldGMvcG9zdGZpeC9pbnRlcm5hbF9yZWNpcGllbnQKKworZGlzYWJsZV92cmZ5X2NvbW1hbmQgPSB5ZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzL21haW4uY2ZfMi4wIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvZmlsZXMvbWFpbi5jZl8yLjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjN2ZlYjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvZmlsZXMvbWFpbi5jZl8yLjAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotIyBDb25maWd1cmUgeW91ciBkb21haW4gYW5kIGFjY291bnRzCi0jbXlkb21haW49c2FtcGxlLmNvbQotI0ZRRE4gZnJvbSBnZXRob3N0bmFtZQotI215aG9zdG5hbWUgPQotbXlkb21haW49bG9jYWxkb21haW4KLW15ZGVzdGluYXRpb24gPSAkbXlob3N0bmFtZSwgbG9jYWxob3N0LmxvY2FsZG9tYWluIGxvY2FsaG9zdAotbXluZXR3b3JrcyA9IDEyNy4wLjAuMS84Ci1pbmV0X2ludGVyZmFjZXMgPSAxMjcuMC4wLjEKLQotdmlydHVhbF9tYWlsYm94X2RvbWFpbnMgPSBzYW1wbGUuY29tLCBvdGhlci5uZXQKLXZpcnR1YWxfbWFpbGJveF9tYXBzID0gaGFzaDovZXRjL3Bvc3RmaXgvdmlydHVhbAotdmlydHVhbF9hbGlhc19tYXBzID0gaGFzaDovZXRjL3Bvc3RmaXgvdmlydHVhbF9hbGlhcwotCi1hbGlhc19tYXBzID0gaGFzaDovZXRjL2FsaWFzZXMKLQotIyBZb3UnbGwgc3RhcnQgd2l0aCB0aGUgZm9sbG93aW5nIGxpbmVzIGZvciBtYWlsZGlyIHN0b3JhZ2UKLXZpcnR1YWxfbWFpbGJveF9iYXNlID0gL3Zhci9zcG9vbC92bWFpbAotdmlydHVhbF91aWRfbWFwcyA9IHN0YXRpYzpgZ3JlcCB2bWFpbCAvZXRjL3Bhc3N3ZCB8IGN1dCAtZCAiOiIgLWYgM2AKLXZpcnR1YWxfZ2lkX21hcHMgPSBzdGF0aWM6YGdyZXAgdm1haWwgL2V0Yy9wYXNzd2QgfCBjdXQgLWQgIjoiIC1mIDRgCi0KLQotIyBZb3UnbGwgc3RhcnQgd2l0aCB0aGUgZm9sbG93aW5nIGxpbmVzIGZvciBJTUFQIHN0b3JhZ2UKLSN2aXJ0dWFsX3RyYW5zcG9ydCA9IGxtdHA6dW5peDovdmFyL2xpYi9jeXJ1cy9zb2NrZXQvbG10cAotCi0KLSMgR2VuZXJhbCBzdHVmZiBoZXJlIGFnYWluCi0jY29uZmlnX2RpcmVjdG9yeSA9IC9ldGMvcG9zdGZpeAotc2FtcGxlX2RpcmVjdG9yeSA9IC9ldGMvcG9zdGZpeAotcXVldWVfZGlyZWN0b3J5ID0gL3Zhci9zcG9vbC9wb3N0Zml4Ci1tYWlsX3Nwb29sX2RpcmVjdG9yeSA9IC92YXIvc3Bvb2wvbWFpbAotcmVhZG1lX2RpcmVjdG9yeSA9IG5vCi1jb21tYW5kX2RpcmVjdG9yeSA9IC91c3Ivc2JpbgotZGFlbW9uX2RpcmVjdG9yeSA9IEBMSUJFWEVDRElSQAotbWFpbF9vd25lciA9IHBvc3RmaXgKLXNldGdpZF9ncm91cCA9IHBvc3Rkcm9wCi11bmtub3duX2xvY2FsX3JlY2lwaWVudF9yZWplY3RfY29kZSA9IDQ1MAotbXluZXR3b3Jrc19zdHlsZSA9IGhvc3QKLWRlYnVnX3BlZXJfbGV2ZWwgPSAyCi1zZW5kbWFpbF9wYXRoID0gL3Vzci9zYmluL3NlbmRtYWlsCi1uZXdhbGlhc2VzX3BhdGggPSAvdXNyL2Jpbi9uZXdhbGlhc2VzCi1tYWlscV9wYXRoID0gL3Vzci9iaW4vbWFpbHEKLQotc210cGRfZGF0YV9yZXN0cmljdGlvbnMgPQotICAgICAgICBwZXJtaXRfbXluZXR3b3JrcywKLSAgICAgICAgcmVqZWN0X3VuYXV0aF9waXBlbGluaW5nLAotICAgICAgICBwZXJtaXQKLQotc210cGRfY2xpZW50X3Jlc3RyaWN0aW9ucyA9Ci0gICAgICAgIHBlcm1pdF9teW5ldHdvcmtzLAotICAgICAgICAjIHJlamVjdF91bmtub3duX2NsaWVudCwgIyBUaGlzIGNhbiBjYXVzZSBhIGxvdCBvZiBmYWxzZSByZWplY3RzLgotICAgICAgICByZWplY3RfaW52YWxpZF9ob3N0bmFtZSwKLSAgICAgICAgcmVqZWN0X3JibF9jbGllbnQgbGlzdC5kc2JsLm9yZywKLSAgICAgICAgcmVqZWN0X3JibF9jbGllbnQgc2JsLnNwYW1oYXVzLm9yZywKLSAgICAgICAgcmVqZWN0X3JibF9jbGllbnQgY2JsLmFidXNlYXQub3JnLAotICAgICAgICByZWplY3RfcmJsX2NsaWVudCBkdWwuZG5zYmwuc29yYnMubmV0LAotICAgICAgICBwZXJtaXQKLQotc210cGRfaGVsb19yZXF1aXJlZCA9IHllcwotc210cGRfaGVsb19yZXN0cmljdGlvbnMgPQotICAgICAgICBwZXJtaXRfbXluZXR3b3JrcywKLSAgICAgICAgcmVqZWN0X3VuYXV0aF9waXBlbGluaW5nLAotICAgICAgICAjIHJlamVjdF9ub25fZnFkbl9ob3N0bmFtZSwgIyBUaGlzIGNhbiBjYXVzZSBhIGxvdCBvZiBmYWxzZSByZWplY3RzLgotICAgICAgICAjIHJlamVjdF91bmtub3duX2hvc3RuYW1lLCAjIFRoaXMgY2FuIGNhdXNlIGEgbG90IG9mIGZhbHNlIHJlamVjdHMuCi0gICAgICAgIHJlamVjdF9pbnZhbGlkX2hvc3RuYW1lLAotICAgICAgICBwZXJtaXQKLQotc210cGRfc2VuZGVyX3Jlc3RyaWN0aW9ucyA9Ci0gICAgICAgIHBlcm1pdF9teW5ldHdvcmtzLAotICAgICAgICByZWplY3Rfbm9uX2ZxZG5fc2VuZGVyLAotICAgICAgICAjIGNoZWNrX3NlbmRlcl9hY2Nlc3MgaGFzaDovZXRjL3Bvc3RmaXgvYWNjZXNzX2RvbWFpbnMsCi0gICAgICAgIHJlamVjdF91bmtub3duX3NlbmRlcl9kb21haW4sCi0gICAgICAgIHBlcm1pdAotCi1zbXRwZF9yZWNpcGllbnRfcmVzdHJpY3Rpb25zID0KLSAgICAgICAgcGVybWl0X215bmV0d29ya3MsCi0gICAgICAgIHBlcm1pdF9zYXNsX2F1dGhlbnRpY2F0ZWQsCi0gICAgICAgIHJlamVjdF91bmF1dGhfZGVzdGluYXRpb24sCi0KLSAgICAgICAgIyBjaGVja19yZWNpcGllbnRfYWNjZXNzIHBjcmU6L2V0Yy9wb3N0Zml4L3JlY2lwaWVudF9jaGVja3MucGNyZSwKLSAgICAgICAgIyBjaGVja19oZWxvX2FjY2VzcyBwY3JlOi9ldGMvcG9zdGZpeC9oZWxvX2NoZWNrcy5wY3JlLAotCi0gICAgICAgICMgY2hlY2tfY2xpZW50X2FjY2VzcyBoYXNoOi9ldGMvcG9zdGZpeC9tYXBzL2FjY2Vzc19jbGllbnQsCi0gICAgICAgICMgY2hlY2tfY2xpZW50X2FjY2VzcyBoYXNoOi9ldGMvcG9zdGZpeC9tYXBzL2V4Y2VwdGlvbnNfY2xpZW50LAotICAgICAgICAjIGNoZWNrX2hlbG9fYWNjZXNzIGhhc2g6L2V0Yy9wb3N0Zml4L21hcHMvYWNjZXNzX2hlbG8sCi0gICAgICAgICMgY2hlY2tfaGVsb19hY2Nlc3MgaGFzaDovZXRjL3Bvc3RmaXgvbWFwcy92ZXJpZnlfaGVsbywKLSAgICAgICAgIyBjaGVja19zZW5kZXJfYWNjZXNzIGhhc2g6L2V0Yy9wb3N0Zml4L21hcHMvYWNjZXNzX3NlbmRlciwKLSAgICAgICAgIyBjaGVja19zZW5kZXJfYWNjZXNzIGhhc2g6L2V0Yy9wb3N0Zml4L21hcHMvdmVyaWZ5X3NlbmRlciwKLSAgICAgICAgIyBjaGVja19yZWNpcGllbnRfYWNjZXNzIGhhc2g6L2V0Yy9wb3N0Zml4L21hcHMvYWNjZXNzX3JlY2lwaWVudCwKLQotICAgICAgICAjIHJlamVjdF9tdWx0aV9yZWNpcGllbnRfYm91bmNlLAotICAgICAgICByZWplY3Rfbm9uX2ZxZG5fcmVjaXBpZW50LAotICAgICAgICByZWplY3RfdW5rbm93bl9yZWNpcGllbnRfZG9tYWluLAotICAgICAgICAjIHJlamVjdF91bmxpc3RlZF9yZWNpcGllbnQsCi0gICAgICAgICNjaGVja19wb2xpY3lfc2VydmljZSB1bml4OnByaXZhdGUvcG9saWN5LAotCi0gICAgICAgICMgY2hlY2tfc2VuZGVyX2FjY2VzcyBoYXNoOi9ldGMvcG9zdGZpeC9tYXBzL25vX3ZlcmlmeV9zZW5kZXIsCi0gICAgICAgICMgY2hlY2tfc2VuZGVyX2FjY2VzcyBoYXNoOi9ldGMvcG9zdGZpeC9hY2Nlc3NfZG9tYWlucywKLSAgICAgICAgIyByZWplY3RfdW52ZXJpZmllZF9zZW5kZXIsCi0gICAgICAgICMgcmVqZWN0X3VudmVyaWZpZWRfcmVjaXBpZW50Ci0gICAgICAgIGNoZWNrX3JlY2lwaWVudF9hY2Nlc3MgaGFzaDovZXRjL3Bvc3RmaXgvaW50ZXJuYWxfcmVjaXBpZW50Ci0KLWRpc2FibGVfdnJmeV9jb21tYW5kID0geWVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy9wb3N0Zml4LnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy9wb3N0Zml4LnNlcnZpY2UKaW5kZXggM2E5YTBhMS4uMzBkNTRhNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvZmlsZXMvcG9zdGZpeC5zZXJ2aWNlCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzL3Bvc3RmaXguc2VydmljZQpAQCAtNyw3ICs3LDcgQEAKIFR5cGU9Zm9ya2luZwogUElERmlsZT1ATE9DQUxTVEFURURJUkAvc3Bvb2wvcG9zdGZpeC9waWQvbWFzdGVyLnBpZAogRXhlY1N0YXJ0UHJlPS1AU0JJTkRJUkAvY2hlY2tfaG9zdG5hbWUuc2gKLUV4ZWNTdGFydFByZT0tQExJQkVYRUNESVJAL2FsaWFzZXNkYgorRXhlY1N0YXJ0UHJlPS1ATElCRVhFQ0RJUkAvcG9zdGZpeC9hbGlhc2VzZGIKIEV4ZWNTdGFydD1AU0JJTkRJUkAvcG9zdGZpeCBzdGFydAogRXhlY1JlbG9hZD1AU0JJTkRJUkAvcG9zdGZpeCByZWxvYWQKIEV4ZWNTdG9wPUBTQklORElSQC9wb3N0Zml4IHN0b3AKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXguaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeC5pbmMKaW5kZXggYTU4OGJkMy4uMDk0NDdkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeC5pbmMKQEAgLTYsMTEgKzYsMTEgQEAKIAogSE9NRVBBR0U9ICJodHRwOi8vd3d3LnBvc3RmaXgub3JnIgogU0VDVElPTiA9ICJtYWlsIgotREVQRU5EUyA9ICJ2aXJ0dWFsL2RiIGljdSBsaWJwY3JlIG9wZW5zc2wgcG9zdGZpeC1uYXRpdmUgXAorREVQRU5EUyA9ICJkYiBpY3UgbGlicGNyZSBvcGVuc3NsIHBvc3RmaXgtbmF0aXZlIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkYXAnLCAnb3BlbmxkYXAnLCAnJywgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Nhc2wnLCAnY3lydXMtc2FzbCcsICcnLCBkKX0gXAogIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAidmlydHVhbC9kYi1uYXRpdmUgaWN1LW5hdGl2ZSBvcGVuc3NsLW5hdGl2ZSBsaWJwY3JlLW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gImRiLW5hdGl2ZSBpY3UtbmF0aXZlIG9wZW5zc2wtbmF0aXZlIGxpYnBjcmUtbmF0aXZlIgogCiBMSUNFTlNFID0gIklQTC0xLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NDM3NWYzNzQzMTMzNmVhMWIxYjMwMDVmZTNmYTM1NCIKQEAgLTE4LDcgKzE4LDcgQEAKIFNSQ19VUkkgPSAiZnRwOi8vZnRwLnBvcmN1cGluZS5vcmcvbWlycm9ycy9wb3N0Zml4LXJlbGVhc2Uvb2ZmaWNpYWwvcG9zdGZpeC0ke1BWfS50YXIuZ3ogXAogICAgIGZpbGU6Ly9tYWtlZGVmcy5wYXRjaCBcCiAgICAgZmlsZTovL2luc3RhbGwucGF0Y2ggXAotICAgIGZpbGU6Ly9tYWluLmNmXzIuMCBcCisgICAgZmlsZTovL21haW4uY2YgXAogICAgIGZpbGU6Ly9wb3N0Zml4IFwKICAgICBmaWxlOi8vaW50ZXJuYWxfcmVjaXBpZW50IFwKICAgICBmaWxlOi8vcG9zdGZpeC5zZXJ2aWNlIFwKQEAgLTEzNSw3ICsxMzUsNyBAQAogZG9faW5zdGFsbCAoKSB7CiAgICAgc2ggLi9wb3N0Zml4LWluc3RhbGwgJ2luc3RhbGxfcm9vdD0ke0R9JyBcCiAgICAgICAgICdjb25maWdfZGlyZWN0b3J5PSR7c3lzY29uZmRpcn0vcG9zdGZpeCcgXAotICAgICAgICAnZGFlbW9uX2RpcmVjdG9yeT0ke2xpYmV4ZWNkaXJ9JyBcCisgICAgICAgICdkYWVtb25fZGlyZWN0b3J5PSR7bGliZXhlY2Rpcn0vcG9zdGZpeCcgXAogICAgICAgICAnY29tbWFuZF9kaXJlY3Rvcnk9JHtzYmluZGlyfScgXAogICAgICAgICAncXVldWVfZGlyZWN0b3J5PSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvcG9zdGZpeCcgXAogICAgICAgICAnc2VuZG1haWxfcGF0aD0ke3NiaW5kaXJ9L3NlbmRtYWlsLnBvc3RmaXgnIFwKQEAgLTE0OSw3ICsxNDksNyBAQAogICAgIG12ICR7RH0ke3N5c2NvbmZkaXJ9L3Bvc3RmaXgvbWFpbi5jZiAke0R9JHtzeXNjb25mZGlyfS9wb3N0Zml4L3NhbXBsZS1tYWluLmNmCiAgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9iaW4vc210cC1zaW5rICR7RH0vJHtzYmluZGlyfS8KICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vbWFpbi5jZl8yLjAgJHtEfSR7c3lzY29uZmRpcn0vcG9zdGZpeC9tYWluLmNmCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9tYWluLmNmICR7RH0ke3N5c2NvbmZkaXJ9L3Bvc3RmaXgvbWFpbi5jZgogICAgIHNlZCAtaSAncyNATElCRVhFQ0RJUkAjJHtsaWJleGVjZGlyfSMnICR7RH0ke3N5c2NvbmZkaXJ9L3Bvc3RmaXgvbWFpbi5jZgogCiAgICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9jaGVja19ob3N0bmFtZS5zaCAke0R9JHtzYmluZGlyfS8KQEAgLTE2Myw3ICsxNjMsNyBAQAogICAgIHNlZCAtaSAtZSAncyNATE9DQUxTVEFURURJUkAjJHtsb2NhbHN0YXRlZGlyfSNnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3N0Zml4LnNlcnZpY2UKICAgICBzZWQgLWkgLWUgJ3MjQFNCSU5ESVJAIyR7c2JpbmRpcn0jZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG9zdGZpeC5zZXJ2aWNlCiAKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9hbGlhc2VzZGIgJHtEfSR7bGliZXhlY2Rpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9hbGlhc2VzZGIgJHtEfSR7bGliZXhlY2Rpcn0vcG9zdGZpeAogCiAgICAgaW5zdGFsbCAtbSA3NzAgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvcG9zdGZpeAogICAgIGNob3duIHBvc3RmaXg6cG9zdGZpeCAke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9wb3N0Zml4CkBAIC0yMTksOCArMjE5LDYgQEAKICAgICBzZWQgLWkgJ3M6LWZkZWJ1Zy1wcmVmaXgtbWFwW14gXSo6Omc7IHM6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgJHtEfS9ldGMvcG9zdGZpeC9tYWtlZGVmcy5vdXQKIH0KIAotTkFUSVZFX0lOU1RBTExfV09SS1MgPSAiMSIKLQogQUxURVJOQVRJVkVfJHtQTn0gPSAic2VuZG1haWwiCiBBTFRFUk5BVElWRV9UQVJHRVRbc2VuZG1haWxdID0gIiR7c2JpbmRpcn0vc2VuZG1haWwucG9zdGZpeCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtzZW5kbWFpbF0gPSAiJHtzYmluZGlyfS9zZW5kbWFpbCIKQEAgLTIzMSw2ICsyMjksNyBAQAogQUxURVJOQVRJVkVfTElOS19OQU1FW25ld2FsaWFzZXMuMV0gPSAiJHttYW5kaXJ9L21hbjEvbmV3YWxpYXNlcy4xIgogQUxURVJOQVRJVkVfTElOS19OQU1FW3NlbmRtYWlsLjFdID0gIiR7bWFuZGlyfS9tYW4xL3NlbmRtYWlsLjEiCiAKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAicG9zdGZpeC1uYXRpdmUiCiBwa2dfcG9zdGluc3RfJHtQTn0gKCkgewogICAgIGlmIFsgIngkRCIgPSAieCIgXTsgdGhlbgogICAgICAgICB0b3VjaCAvZXRjL2FsaWFzZXMKQEAgLTI0MCwxOSArMjM5LDI0IEBACiAgICAgICAgIHRvdWNoIC9ldGMvcG9zdGZpeC92aXJ0dWFsX2FsaWFzCiAgICAgICAgIHBvc3RtYXAgL2V0Yy9wb3N0Zml4L3ZpcnR1YWxfYWxpYXMKICAgICBlbHNlCisgICAgICAgIGlmICR7QCd0cnVlJyBpZiAnbGludXhzdGRiYXNlJyBpbiBkLmdldFZhcignRElTVFJPT1ZFUlJJREVTJywgRmFsc2UpIGVsc2UgJ2ZhbHNlJ307IHRoZW4KKyAgICAgICAgICAgICMgL3Vzci9saWIvc2VuZG1haWwgaXMgcmVxdWlyZWQgYnkgTFNCIGNvcmUgdGVzdAorICAgICAgICAgICAgWyAhIC1MICREL3Vzci9saWIvc2VuZG1haWwgXSAmJiBsbiAtc2YgJHtzYmluZGlyfS9zZW5kbWFpbCAkRC91c3IvbGliLworICAgICAgICBmaQorCiAgICAgICAgIHRvdWNoICREL2V0Yy9hbGlhc2VzCi0gICAgICAgIG5ld2FsaWFzZXMgLUMgJEQvZXRjL3Bvc3RmaXgvbWFpbi5jZiAtb0EkRC9ldGMvYWxpYXNlcworICAgICAgICAjIFRoaXMgY2FuIGZhaWwgZGVwZW5kaW5nIG9uIGhvc3Qgc2V0dXAKKyAgICAgICAgaWYgISBuZXdhbGlhc2VzIC1DICREL2V0Yy9wb3N0Zml4L21haW4uY2YgLW9BJEQvZXRjL2FsaWFzZXM7IHRoZW4KKyAgICAgICAgICAgICRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCBkZWxheV90b19maXJzdF9ib290ICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfQorICAgICAgICAgICAgZXhpdCAwCisgICAgICAgIGZpCiAgICAgICAgIHRvdWNoICREL2V0Yy9wb3N0Zml4L3ZpcnR1YWxfYWxpYXMKICAgICAgICAgcG9zdG1hcCAtYyAkRC9ldGMvcG9zdGZpeCAkRC9ldGMvcG9zdGZpeC92aXJ0dWFsX2FsaWFzCiAKLSAgICAgICAgaWYgJHtAJ3RydWUnIGlmICdsaW51eHN0ZGJhc2UnIGluIGQuZ2V0VmFyKCdESVNUUk9PVkVSUklERVMnLCBGYWxzZSkgZWxzZSAnZmFsc2UnfTsgdGhlbgotICAgICAgICAgICAgIyAvdXNyL2xpYi9zZW5kbWlhbCBpcyByZXF1aXJlZCBieSBMU0IgY29yZSB0ZXN0Ci0gICAgICAgICAgICBbICEgLUwgJEQvdXNyL2xpYi9zZW5kbWFpbCBdICYmIGxuIC1zZiAke3NiaW5kaXJ9L3NlbmRtYWlsICREL3Vzci9saWIvCi0gICAgICAgIGZpCiAgICAgZmkKIH0KIAogIyBFeGNsdWRlIC5kZWJ1ZyBkaXJlY3RvcmllcyBmcm9tIHRoZSBtYWluIHBhY2thZ2UKIEZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0gJHtsb2NhbHN0YXRlZGlyfSAke2JpbmRpcn0vKiAke3NiaW5kaXJ9LyogXAogICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS8qICR7c3lzdGVtZF91bml0ZGlyfS8qIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9Ly5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJleGVjZGlyfS9wb3N0Zml4Ly5kZWJ1ZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuMi4yLmJiCmluZGV4IDQzOWVkZTkuLjg5YWY0MDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy4yLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeF8zLjIuMi5iYgpAQCAtMSwxOCArMSw5IEBACiByZXF1aXJlIHBvc3RmaXguaW5jCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLnBvcmN1cGluZS5vcmcvbWlycm9ycy9wb3N0Zml4LXJlbGVhc2Uvb2ZmaWNpYWwvcG9zdGZpeC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbWFrZWRlZnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaW5zdGFsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYWluLmNmXzIuMCBcCi0gICAgICAgICAgIGZpbGU6Ly9wb3N0Zml4IFwKLSAgICAgICAgICAgZmlsZTovL2ludGVybmFsX3JlY2lwaWVudCBcCi0gICAgICAgICAgIGZpbGU6Ly9wb3N0Zml4LnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vYWxpYXNlc2RiIFwKLSAgICAgICAgICAgZmlsZTovL2NoZWNrX2hvc3RuYW1lLnNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2stZm9yLWdsaWJjLWJlZm9yZS1zZXR0aW5nLUNBTlRfVVNFX1NFTkRfUkVDVl9NUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2VkZWZzLVVzZS1uYXRpdmUtY29tcGlsZXItdG8tYnVpbGQtbWFrZWRlZnMudGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wb3N0Zml4LWluc3RhbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaWN1LWNvbmZpZy5wYXRjaCBcCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1DaGVjay1mb3ItZ2xpYmMtYmVmb3JlLXNldHRpbmctQ0FOVF9VU0VfU0VORF9SRUNWX01TLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2VkZWZzLVVzZS1uYXRpdmUtY29tcGlsZXItdG8tYnVpbGQtbWFrZWRlZnMudGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcG9zdGZpeC1pbnN0YWxsLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9pY3UtY29uZmlnLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gImFlYTA3M2E5YjBiZWE1YmRiNTkwNDYwYTI3MGE0YWEwIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwNjg0OTQxOGQxMTlkMDkzNjY5OTdiMmI0ODFiYjIzZjczNzYyOTc2OWI0ZTRhNTJkYTQyZmIzYWQ4YjA1NzYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcmFkdmQvcmFkdmQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3JhZHZkL3JhZHZkLmluYwppbmRleCBiZmY2OTNjLi4wNmQxNmE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcmFkdmQvcmFkdmQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9yYWR2ZC9yYWR2ZC5pbmMKQEAgLTgsNyArOCw3IEBACiBjaG9vc2UgYSBkZWZhdWx0IHJvdXRlciBiYXNlZCBvbiB0aGVzZSBhZHZlcnRpc2VtZW50cy4iCiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpdGVjaC5vcmcvcmFkdmQvIgogU0VDVElPTiA9ICJuZXQiCi1ERVBFTkRTID0gImZsZXgtbmF0aXZlIGxpYmRhZW1vbiIKK0RFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGxpYmRhZW1vbiAiCiAKICMgTGljZW5zZSBpcyBCU0QtU3R5bGUgKHdpdGggYWR2ZXJ0aXNpbmcgY2xhdXNlKSBidXQgYWxzbyBoYXMgYW4gYWRkaXRpb25hbCAwdGggY2xhdXNlCiBMSUNFTlNFID0gInJhZHZkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzLzAwMDEtU3F1aWROZXctdXNlLW5vZXhjZXB0LWluc3RlYWQtb2YtdGhyb3ctZm9yLUMtMTEtY29tcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy8wMDAxLVNxdWlkTmV3LXVzZS1ub2V4Y2VwdC1pbnN0ZWFkLW9mLXRocm93LWZvci1DLTExLWNvbXAucGF0Y2gKaW5kZXggNDg2NzRjMy4uZjQ4MmY4MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzLzAwMDEtU3F1aWROZXctdXNlLW5vZXhjZXB0LWluc3RlYWQtb2YtdGhyb3ctZm9yLUMtMTEtY29tcC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvMDAwMS1TcXVpZE5ldy11c2Utbm9leGNlcHQtaW5zdGVhZC1vZi10aHJvdy1mb3ItQy0xMS1jb21wLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmOTE1MGEwZGMwOTJhYjJjYmQ0N2VlNDI4NDM2Yjc0N2RjZTMyM2E5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyN2UxMDY2N2JmMjdiYWY1ZjExOWE3OTFlMzQ3M2JiOTQzNWE3ODZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMjMgQXByIDIwMTcgMTA6Mjg6MjggLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gU3F1aWROZXc6IHVzZSBub2V4Y2VwdCBpbnN0ZWFkIG9mIHRocm93IGZvciBDKysxMSBjb21waWxlcnMKQEAgLTExLDYgKzExLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fgogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBpbmNsdWRlL1NxdWlkTmV3LmggfCA4ICsrKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKQEAgLTQzLDYgKzQ0LDMgQEAKICB7CiAgICAgIHhmcmVlKGFkZHJlc3MpOwogIH0KLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoCmluZGV4IDBjMGEzYWEuLjMwMjEzNmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMTRkNDY5YmM4MmM3NTgxMTZhZWY3ZDU0OWFiZDQ5YzEzMWI0MTcwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzIxYWRiYjBiMjMwZmZiYTk3Y2Y1ZDA1OWUyYmQwMjRlMTNhMzdkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDIyIEFwciAyMDE3IDExOjU0OjU3IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQ2hlY2sgZm9yIC1Xbm8tZXJyb3I9Zm9ybWF0LXRydW5jYXRpb24gY29tcGlsZXIKQEAgLTksMzYgKzksMTggQEAKIGNsaWVudC5jOjgzNDoyMzogZXJyb3I6ICclcycgZGlyZWN0aXZlIG91dHB1dCBtYXkgYmUgdHJ1bmNhdGVkIHdyaXRpbmcgdXAgdG8gMTAyMyBieXRlcyBpbnRvIGEgcmVnaW9uIG9mIHNpemUgMTAxMCBbLVdlcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbj1dCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgfCAgMyArLQotIG00L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNCB8IDc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBtNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQKIAotSW5kZXg6IHNxdWlkLTMuNS4yNi9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzcXVpZC0zLjUuMjYub3JpZy9jb25maWd1cmUuYWMKLSsrKyBzcXVpZC0zLjUuMjYvY29uZmlndXJlLmFjCi1AQCAtMjYsNiArMjYsNyBAQCBtNF9pbmNsdWRlKFthY2luY2x1ZGUvcGtnLm00XSkKLSBtNF9pbmNsdWRlKFthY2luY2x1ZGUvbGliLWNoZWNrcy5tNF0pCi0gbTRfaW5jbHVkZShbYWNpbmNsdWRlL2F4X2N4eF9jb21waWxlX3N0ZGN4eF8xMS5tNF0pCi0gbTRfaW5jbHVkZShbYWNpbmNsdWRlL2F4X2N4eF8weF90eXBlcy5tNF0pCi0rbTRfaW5jbHVkZShbYWNpbmNsdWRlL2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNF0pCi0gCi0gSE9TVENYWD0iJEJVSUxEX0NYWCIKLSBQUkVTRVRfQ0ZMQUdTPSIkQ0ZMQUdTIgotQEAgLTQ0LDYgKzQ1LDcgQEAgQUNfUFJPR19DWFgKLSBBQ19MQU5HKFtDKytdKQotIEFDX0NBTk9OSUNBTF9IT1NUCi0gCi0rQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKFstV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uXSxbQ0ZMQUdTPSIkQ0ZMQUdTIC1Xbm8tZXJyb3I9Zm9ybWF0LXRydW5jYXRpb24iIENYWEZMQUdTPSIkQ1hYRkxBR1MgLVduby1lcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbiJdKQotICMgQ2xhbmcgMy4yIG9uIHNvbWUgQ1BVcyByZXF1aXJlcyAtbWFyY2gtbmF0aXZlIHRvIGRldGVjdCBjb3JyZWN0bHkuCi0gIyBHQ0MgNC4zKyBjYW4gYWxzbyBwcm9kdWNlIGZhc3RlciBleGVjdXRhYmxlcyB3aGVuIGl0cyB1c2VkLgotICMgQnV0IGJ1aWxkaW5nIGluc2lkZSBhIHZpcnR1YWwgbWFjaGluZSBlbnZpcm9ubWVudCBoYXMgYmVlbiBmb3VuZCB0bwotSW5kZXg6IHNxdWlkLTMuNS4yNi9hY2luY2x1ZGUvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0KKyBhY2luY2x1ZGUvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00IHwgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYWNpbmNsdWRlL2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNAorCitkaWZmIC0tZ2l0IGEvYWNpbmNsdWRlL2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNCBiL2FjaW5jbHVkZS9heF9jaGVja19jb21waWxlX2ZsYWcubTQKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kY2FiYjkyCiAtLS0gL2Rldi9udWxsCi0rKysgc3F1aWQtMy41LjI2L2FjaW5jbHVkZS9heF9jaGVja19jb21waWxlX2ZsYWcubTQKKysrKyBiL2FjaW5jbHVkZS9heF9jaGVja19jb21waWxlX2ZsYWcubTQKIEBAIC0wLDAgKzEsNzQgQEAKICsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKyMgIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jaGVja19jb21waWxlX2ZsYWcuaHRtbApAQCAtMTE0LDMgKzk2LDIzIEBACiArICBbbTRfZGVmYXVsdChbJDNdLCA6KV0pCiArQVNfVkFSX1BPUERFRihbQ0FDSEVWQVJdKWRubAogK10pZG5sIEFYX0NIRUNLX0NPTVBJTEVfRkxBR1MKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGZmNDY4OGMuLjkzODJmZGYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTI2LDYgKzI2LDcgQEAgbTRfaW5jbHVkZShbYWNpbmNsdWRlL3BrZy5tNF0pCisgbTRfaW5jbHVkZShbYWNpbmNsdWRlL2xpYi1jaGVja3MubTRdKQorIG00X2luY2x1ZGUoW2FjaW5jbHVkZS9heF9jeHhfY29tcGlsZV9zdGRjeHhfMTEubTRdKQorIG00X2luY2x1ZGUoW2FjaW5jbHVkZS9heF9jeHhfMHhfdHlwZXMubTRdKQorK200X2luY2x1ZGUoW2FjaW5jbHVkZS9heF9jaGVja19jb21waWxlX2ZsYWcubTRdKQorIAorIEhPU1RDWFg9IiRCVUlMRF9DWFgiCisgUFJFU0VUX0NGTEFHUz0iJENGTEFHUyIKK0BAIC00NCw2ICs0NSw3IEBAIEFDX1BST0dfQ1hYCisgQUNfTEFORyhbQysrXSkKKyBBQ19DQU5PTklDQUxfSE9TVAorIAorK0FYX0NIRUNLX0NPTVBJTEVfRkxBRyhbLVdlcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbl0sW0NGTEFHUz0iJENGTEFHUyAtV25vLWVycm9yPWZvcm1hdC10cnVuY2F0aW9uIiBDWFhGTEFHUz0iJENYWEZMQUdTIC1Xbm8tZXJyb3I9Zm9ybWF0LXRydW5jYXRpb24iXSkKKyAjIENsYW5nIDMuMiBvbiBzb21lIENQVXMgcmVxdWlyZXMgLW1hcmNoLW5hdGl2ZSB0byBkZXRlY3QgY29ycmVjdGx5LgorICMgR0NDIDQuMysgY2FuIGFsc28gcHJvZHVjZSBmYXN0ZXIgZXhlY3V0YWJsZXMgd2hlbiBpdHMgdXNlZC4KKyAjIEJ1dCBidWlsZGluZyBpbnNpZGUgYSB2aXJ0dWFsIG1hY2hpbmUgZW52aXJvbm1lbnQgaGFzIGJlZW4gZm91bmQgdG8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy8wMDAxLXRvb2xzLmNjLWZpeGVkLXVudXNlZC1yZXN1bHQtd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy8wMDAxLXRvb2xzLmNjLWZpeGVkLXVudXNlZC1yZXN1bHQtd2FybmluZy5wYXRjaAppbmRleCAwODJhMTExLi44ZWE1NWQwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvMDAwMS10b29scy5jYy1maXhlZC11bnVzZWQtcmVzdWx0LXdhcm5pbmcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzLzAwMDEtdG9vbHMuY2MtZml4ZWQtdW51c2VkLXJlc3VsdC13YXJuaW5nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhNzhmMmYwZmVkYThmOTJjYjU5YWZlODIzNmJkOTA3MjY5MDg3NjhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmYWFhNzk2YTEzOGNiZDUwMzNiMWU1M2YzM2ZhYWMwY2Y0MTYyYmY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMjUgSnVuIDIwMTcgMDA6NTk6MjQgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gdG9vbHMuY2M6IGZpeGVkIHVudXNlZC1yZXN1bHQgd2FybmluZwpAQCAtMTAsOSArMTAsOCBAQAogfCAgICAgIH5+fn5+fl5+fgogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAogCistLS0KICBzcmMvdG9vbHMuY2MgfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCkBAIC0zMSw2ICszMCwzIEBACiAgI2VuZGlmCiAgI2lmIEhBVkVfUFJDVEwgJiYgZGVmaW5lZChQUl9TRVRfRFVNUEFCTEUpCiAgICAgIC8qIFNldCBMaW51eCBEVU1QQUJMRSBmbGFnICovCi0tLSAKLTIuMTMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvRml4LWZsYXdlZC1keW5hbWljLWxkYi1saW5rLXRlc3QtaW4tY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzL0ZpeC1mbGF3ZWQtZHluYW1pYy1sZGItbGluay10ZXN0LWluLWNvbmZpZ3VyZS5wYXRjaAppbmRleCAyMzA0YzVmLi4yNWY2OGFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvRml4LWZsYXdlZC1keW5hbWljLWxkYi1saW5rLXRlc3QtaW4tY29uZmlndXJlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy9GaXgtZmxhd2VkLWR5bmFtaWMtbGRiLWxpbmstdGVzdC1pbi1jb25maWd1cmUucGF0Y2gKQEAgLTEsOCArMSw3IEBACi1Gcm9tIDBkNWIzMzdmZjVlZjdkZDQ4Zjk3MGYwOGJkOTVkNjMyNzkxN2NmZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1NZXNzYWdlLUlkOiA8MGQ1YjMzN2ZmNWVmN2RkNDhmOTcwZjA4YmQ5NWQ2MzI3OTE3Y2ZkMS4xMzgyMzc1ODA3LmdpdC5KaW0uU29tZXJ2aWxsZUB3aW5kcml2ZXIuY29tPgorRnJvbSBiNDk0MzU5NDY1NGNkMzQwYjk1YWFiZGMyZjM3NTBhNDcwNWNjMGRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmltIFNvbWVydmlsbGUgPEppbS5Tb21lcnZpbGxlQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDIxIE9jdCAyMDEzIDEyOjUwOjQ0IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8xXSBGaXggZmxhd2VkIGR5bmFtaWMgLWxkYiBsaW5rIHRlc3QgaW4gY29uZmlndXJlCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBmbGF3ZWQgZHluYW1pYyAtbGRiIGxpbmsgdGVzdCBpbiBjb25maWd1cmUKIAogVGhlIHRlc3QgdXNlcyBkYm9wZW4sIGJ1dCBqdXN0IGlnbm9yZXMgdGhlIGZhY3QKIHRoYXQgdGhpcyBmdW5jdGlvbiBtYXkgbm90IGV4aXN0IGluIHRoZSBkYiB2ZXJzaW9uCkBAIC0xMSwxNSArMTAsMTYgQEAKIGFib3V0IHdoeSBhbmQgc2V0dGluZyB0aGUgbmVlZCBmb3IgLWxkYiBpbmNvcnJlY3RseS4KIAogU2lnbmVkLW9mZi1ieTogSmltIFNvbWVydmlsbGUgPEppbS5Tb21lcnZpbGxlQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgMTIgKysrKysrKysrKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyB8IDEyICsrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5NjJhNzQ4Li40MmU2YTkzIDEwMDY0NAoraW5kZXggNTdjZDFhYy4uMzgyNzIyMiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzA1MSw4ICszMDUxLDE2IEBAIEFDX0NIRUNLX0RFQ0woZGJvcGVuLCwsWworQEAgLTMyMjksOCArMzIyOSwxNiBAQCBBQ19DSEVDS19ERUNMKGRib3BlbiwsLFsKICAjaW5jbHVkZSA8ZGIuaD4KICAjZW5kaWZdKQogIApAQCAtMzgsNiArMzgsMyBAQAogIGlmIHRlc3QgIngkYWNfY3ZfZGJvcGVuX2xpYmRiIiA9ICJ4eWVzIjsgdGhlbgogICAgICBMSUJfREI9Ii1sZGIiCiAgZmkKLS0tIAotMS43LjQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvU2V0LXVwLWZvci1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy9TZXQtdXAtZm9yLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoCmluZGV4IDRjYTI3NDQuLjM4NTJmN2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy9TZXQtdXAtZm9yLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy9TZXQtdXAtZm9yLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoCkBAIC0xLDI5ICsxLDI4IEBACi1Gcm9tIDE3ZTVhMjg2NjdmNjY3ODU5YzQ4YmVlMjVlNTc1YTA3MmQzOWVlMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1NZXNzYWdlLUlkOiA8MTdlNWEyODY2N2Y2Njc4NTljNDhiZWUyNWU1NzVhMDcyZDM5ZWUxYi4xMzgxOTU2MTcwLmdpdC5KaW0uU29tZXJ2aWxsZUB3aW5kcml2ZXIuY29tPgorRnJvbSA5OTVhYWYzMDc5OWZhOTcyNDQxMzU0YjZmZWI0NWYwNjIxOTY4OTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmltIFNvbWVydmlsbGUgPEppbS5Tb21lcnZpbGxlQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDE2IE9jdCAyMDEzIDE2OjQxOjAzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8xXSBTZXQgdXAgZm9yIGNyb3NzIGNvbXBpbGF0aW9uCitTdWJqZWN0OiBbUEFUQ0hdIFNldCB1cCBmb3IgY3Jvc3MgY29tcGlsYXRpb24KKworTWVzc2FnZS1JZDogPDE3ZTVhMjg2NjdmNjY3ODU5YzQ4YmVlMjVlNTc1YTA3MmQzOWVlMWIuMTM4MTk1NjE3MC5naXQuSmltLlNvbWVydmlsbGVAd2luZHJpdmVyLmNvbT4KIAogU2V0IHRoZSBob3N0IGNvbXBpbGVyIHRvIEJVSUxEX0NYWCBzbwogcHJvcGVyIGNyb3NzIGNvbXBpbGF0aW9uIGNhbiBvY2N1ci4KIAogU2lnbmVkLW9mZi1ieTogSmltIFNvbWVydmlsbGUgPEppbS5Tb21lcnZpbGxlQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgIDEgKwotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjMmQzMDMzLi5kZGE5ZWQ5IDEwMDY0NAoraW5kZXggZmU4MGVlMC4uNTdjZDFhYyAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTksNiArMTksNyBAQCBtNF9pbmNsdWRlKFthY2luY2x1ZGUvbGliLWNoZWNrcy5tNF0pCi0gbTRfaW5jbHVkZShbYWNpbmNsdWRlL2F4X2N4eF9jb21waWxlX3N0ZGN4eF8weC5tNF0pCitAQCAtMjcsNiArMjcsNyBAQCBtNF9pbmNsdWRlKFthY2luY2x1ZGUvbGliLWNoZWNrcy5tNF0pCisgbTRfaW5jbHVkZShbYWNpbmNsdWRlL2F4X2N4eF9jb21waWxlX3N0ZGN4eF8xMS5tNF0pCiAgbTRfaW5jbHVkZShbYWNpbmNsdWRlL2F4X2N4eF8weF90eXBlcy5tNF0pCiAgCiArSE9TVENYWD0iJEJVSUxEX0NYWCIKICBQUkVTRVRfQ0ZMQUdTPSIkQ0ZMQUdTIgogIFBSRVNFVF9DWFhGTEFHUz0iJENYWEZMQUdTIgogIFBSRVNFVF9MREZMQUdTPSIkTERGTEFHUyIKLS0tIAotMS43LjQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvU2tpcC1BQ19SVU5fSUZFTFNFLXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzL1NraXAtQUNfUlVOX0lGRUxTRS10ZXN0cy5wYXRjaAppbmRleCA3YjZkY2M4Li42YTMzNTI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvU2tpcC1BQ19SVU5fSUZFTFNFLXRlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy9Ta2lwLUFDX1JVTl9JRkVMU0UtdGVzdHMucGF0Y2gKQEAgLTEsMyArMSw2IEBACitGcm9tIGE4NTMxMTk2NTcwN2JhMmZhNzhmN2NlMDQ0ZTZmNjFlNjVlNjZmZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaW0gU29tZXJ2aWxsZSA8SmltLlNvbWVydmlsbGVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTQgT2N0IDIwMTQgMDI6NTY6MDggLTA0MDAKIFN1YmplY3Q6IFtQQVRDSF0gU2tpcCBBQ19SVU5fSUZFTFNFIHRlc3RzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY3Jvc3MgY29tcGlsaW5nIHNwZWNpZmljXQpAQCAtNywxNiArMTAsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogSmltIFNvbWVydmlsbGUgPEppbS5Tb21lcnZpbGxlQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBhY2luY2x1ZGUva3JiNS5tNCAgICAgICB8ICAgMTAgKysrKysrKysrLQotIGFjaW5jbHVkZS9saWItY2hlY2tzLm00IHwgICAgOCArKysrKystLQorIGFjaW5jbHVkZS9rcmI1Lm00ICAgICAgIHwgMTAgKysrKysrKysrLQorIGFjaW5jbHVkZS9saWItY2hlY2tzLm00IHwgIDggKysrKysrLS0KICAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9hY2luY2x1ZGUva3JiNS5tNCBiL2FjaW5jbHVkZS9rcmI1Lm00Ci1pbmRleCA5NDZiZWE4Li43YTA3MmEyIDEwMDY0NAoraW5kZXggNWM4M2Q4OC4uYzI2NDExOCAxMDA2NDQKIC0tLSBhL2FjaW5jbHVkZS9rcmI1Lm00CiArKysgYi9hY2luY2x1ZGUva3JiNS5tNAotQEAgLTgyLDcgKzgyLDE1IEBAIG1haW4odm9pZCkKK0BAIC02MSw3ICs2MSwxNSBAQCBtYWluKHZvaWQpCiAgCiAgICAgICAgICByZXR1cm4gMDsKICB9CkBAIC0zNCwzMSArMzgsMjggQEAKICAgIF0pCiAgXSkgZG5sIFNRVUlEX0NIRUNLX0tSQjVfSEVJTURBTF9CUk9LRU5fS1JCNV9ICiBkaWZmIC0tZ2l0IGEvYWNpbmNsdWRlL2xpYi1jaGVja3MubTQgYi9hY2luY2x1ZGUvbGliLWNoZWNrcy5tNAotaW5kZXggMmJmOThlZS4uNTBkYmE5YiAxMDA2NDQKK2luZGV4IGM0ODc0ZGEuLmJhNzI5ODIgMTAwNjQ0CiAtLS0gYS9hY2luY2x1ZGUvbGliLWNoZWNrcy5tNAogKysrIGIvYWNpbmNsdWRlL2xpYi1jaGVja3MubTQKLUBAIC0xMjgsNyArMTI4LDkgQEAgQUNfREVGVU4oW1NRVUlEX0NIRUNLX09QRU5TU0xfR0VUQ0VSVElGSUNBVEVfV09SS1NdLFsKLSAgICBBQ19ERUZJTkUoU1FVSURfU1NMR0VUQ0VSVElGSUNBVEVfQlVHR1ksIDEpCi0gICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKK0BAIC0xNzcsNyArMTc3LDkgQEAgQUNfREVGVU4oW1NRVUlEX0NIRUNLX09QRU5TU0xfQ09OU1RfU1NMX01FVEhPRF0sWworICAgWworICAgIEFDX01TR19SRVNVTFQoW25vXSkKICAgIF0sCiAtICBbXSkKICsgIFsKICsgICBBQ19NU0dfUkVTVUxUKFtza2lwcGVkIC0gY2FuJ3QgdGVzdCBpbiBjcm9zcy1jb21waWxlZCBlbnZdKQogKyAgXSkKICAKLSAgIEFDX01TR19DSEVDS0lORyh3aGV0aGVyIHRoZSB3b3JrYXJvdW5kIGZvciBTU0xfZ2V0X2NlcnRpZmljYXRlIHdvcmtzKQotICAgQUNfUlVOX0lGRUxTRShbCi1AQCAtMTU0LDcgKzE1Niw5IEBAIEFDX0RFRlVOKFtTUVVJRF9DSEVDS19PUEVOU1NMX0dFVENFUlRJRklDQVRFX1dPUktTXSxbCi0gICBbCi0gICAgQUNfTVNHX1JFU1VMVChbbm9dKQorIFNRVUlEX1NUQVRFX1JPTExCQUNLKGNoZWNrX2NvbnN0X1NTTF9NRVRIT0QpCisgXQorQEAgLTI2NSw3ICsyNjcsOSBAQCBBQ19ERUZVTihbU1FVSURfQ0hFQ0tfT1BFTlNTTF9UWFREQl0sWworICAgIEFDX01TR19SRVNVTFQoW3llc10pCisgICAgQUNfREVGSU5FKFNRVUlEX1VTRV9TU0xMSEFTSF9IQUNLLCAxKQogICAgXSwKIC1bXSkKICtbCiArICAgQUNfTVNHX1JFU1VMVChbc2tpcHBlZCAtIGNhbid0IHRlc3QgaW4gY3Jvc3MtY29tcGlsZWQgZW52XSkKICtdKQogIAotIFNRVUlEX1NUQVRFX1JPTExCQUNLKGNoZWNrX1NTTF9nZXRfY2VydGlmaWNhdGUpCisgU1FVSURfU1RBVEVfUk9MTEJBQ0soY2hlY2tfVFhUREIpCiAgXSkKLS0tIAotMS43LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzL2djYzctZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvZ2NjNy1maXhlcy5wYXRjaAppbmRleCBjYzFlYTc4Li4yZmVjYTQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvZ2NjNy1maXhlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvZ2NjNy1maXhlcy5wYXRjaApAQCAtMSwxMSArMSwyMCBAQAorRnJvbSA2NjBmY2U5Y2ZhMDBhNTdlNWI3Y2VjNDYxMTZhMzFlMjE1OTVjMzA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTkgSnVuIDIwMTcgMjM6NDc6MDEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3F1aWQ6IFVwZ3JhZGUgdG8gMy41LjI2CisKIC4uLy4uL3NxdWlkLTMuNS4yNi9zcmMvRGlza0lPL0Rpc2tUaHJlYWRzL2Fpb3BzLmNjOiBJbiBmdW5jdGlvbiAndm9pZCBzcXVpZGFpb19pbml0KCknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4vLi4vc3F1aWQtMy41LjI2L3NyYy9EaXNrSU8vRGlza1RocmVhZHMvRGlza1RocmVhZHMuaDozMDo1MDogZXJyb3I6ICcqJyBpbiBib29sZWFuIGNvbnRleHQsIHN1Z2dlc3QgJyYmJyBpbnN0ZWFkIFstV2Vycm9yPWludC1pbi1ib29sLWNvbnRleHRdICAgICAgI2RlZmluZSBOVU1USFJFQURTIChDb25maWcuY2FjaGVTd2FwLm5fY29uZmlndXJlZCoxNikKIAotCiBVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1JbmRleDogc3F1aWQtMy41LjI2L3NyYy9EaXNrSU8vRGlza1RocmVhZHMvYWlvcHMuY2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzcXVpZC0zLjUuMjYub3JpZy9zcmMvRGlza0lPL0Rpc2tUaHJlYWRzL2Fpb3BzLmNjCi0rKysgc3F1aWQtMy41LjI2L3NyYy9EaXNrSU8vRGlza1RocmVhZHMvYWlvcHMuY2MKKworLS0tCisgc3JjL0Rpc2tJTy9EaXNrVGhyZWFkcy9haW9wcy5jYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9EaXNrSU8vRGlza1RocmVhZHMvYWlvcHMuY2MgYi9zcmMvRGlza0lPL0Rpc2tUaHJlYWRzL2Fpb3BzLmNjCitpbmRleCBiNDRhZGZhLi5lMTFmOTQ4IDEwMDY0NAorLS0tIGEvc3JjL0Rpc2tJTy9EaXNrVGhyZWFkcy9haW9wcy5jYworKysrIGIvc3JjL0Rpc2tJTy9EaXNrVGhyZWFkcy9haW9wcy5jYwogQEAgLTI5MCw3ICsyOTAsNyBAQCBzcXVpZGFpb19pbml0KHZvaWQpCiAgICAgIC8qIENyZWF0ZSB0aHJlYWRzIGFuZCBnZXQgdGhlbSB0byBzaXQgaW4gdGhlaXIgd2FpdCBsb29wICovCiAgICAgIHNxdWlkYWlvX3RocmVhZF9wb29sID0gbWVtUG9vbENyZWF0ZSgiYWlvX3RocmVhZCIsIHNpemVvZihzcXVpZGFpb190aHJlYWRfdCkpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzL3NldF9zeXNyb290X3BhdGNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzL3NldF9zeXNyb290X3BhdGNoLnBhdGNoCmluZGV4IGZkY2QxNzQuLmU5OTA0ODAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy9zZXRfc3lzcm9vdF9wYXRjaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvc2V0X3N5c3Jvb3RfcGF0Y2gucGF0Y2gKQEAgLTEsMTUgKzEsMjMgQEAKLVNldCB0aGUgU1lTUk9PVCBmb3IgbGlieG1sMiBoZWFkZXIgZmlsZSB0byBhdm9pZCBob3N0IGNvbnRhbWluYXRpb24uCitGcm9tIDcwMmJkODgxYjY2ZGMwMzRlNzExYzBmZjQ3ODA1ZjJkYTQwYjZlMGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZdWUgVGFvIDx5dWUudGFvQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDggQXVnIDIwMTYgMTY6MDQ6MzMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gU2V0IHRoZSBTWVNST09UIGZvciBsaWJ4bWwyIGhlYWRlciBmaWxlIHRvIGF2b2lkIGhvc3QKKyBjb250YW1pbmF0aW9uLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDx5dWUudGFvQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMub2xkIGIvY29uZmlndXJlLmFjCi1pbmRleCA1NGVkYTczLi44NzRmNDhlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjLm9sZAorLS0tCisgY29uZmlndXJlLmFjIHwgMTIgKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNTA0YTg0NC4uZmY0Njg4YyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTY0LDE1ICs5NjQsMTUgQEAgaWYgdGVzdCAieCRzcXVpZF9vcHRfdXNlX2VzaSIgPSAieHllcyIgLWEgIngkd2l0aF9saWJ4bWwyIiAhPSAieG5vIiA7IHRoZW4KK0BAIC05NzQsMTUgKzk3NCwxNSBAQCBpZiB0ZXN0ICJ4JHNxdWlkX29wdF91c2VfZXNpIiA9ICJ4eWVzIiAtYSAieCR3aXRoX2xpYnhtbDIiICE9ICJ4bm8iIDsgdGhlbgogICAgZG5sIEZpbmQgdGhlIG1haW4gaGVhZGVyIGFuZCBpbmNsdWRlIHBhdGguLi4KICAgIEFDX0NBQ0hFX0NIRUNLKFtsb2NhdGlvbiBvZiBsaWJ4bWwyIGluY2x1ZGUgZmlsZXNdLCBbYWNfY3ZfbGlieG1sMl9pbmNsdWRlXSwgWwogICAgICBBQ19DSEVDS19IRUFERVJTKFtsaWJ4bWwvcGFyc2VyLmhdLCBbXSwgWwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzL3NxdWlkLWRvbi10LWRvLXNxdWlkLWNvbmYtdGVzdHMtYXQtYnVpbGQtdGltZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy9zcXVpZC1kb24tdC1kby1zcXVpZC1jb25mLXRlc3RzLWF0LWJ1aWxkLXRpbWUucGF0Y2gKaW5kZXggMzEyZjQ0Zi4uZTUyNjdlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzL3NxdWlkLWRvbi10LWRvLXNxdWlkLWNvbmYtdGVzdHMtYXQtYnVpbGQtdGltZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvc3F1aWQtZG9uLXQtZG8tc3F1aWQtY29uZi10ZXN0cy1hdC1idWlsZC10aW1lLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA1NGE5YzJiYTYwYWRjN2VjMjcyNDc4NjY2MmZkMzk4ZTdjMDM5OTlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4Nzg2YjkxNDg4ZGFlM2Y2ZGZlYWRkNjg2ZTgwZDJmZmM1YzI5MzIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgMjUgQXVnIDIwMTYgMTU6MjI6NTcgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gc3F1aWQ6IGRvbid0IGRvIHNxdWlkLWNvbmYtdGVzdHMgYXQgYnVpbGQgdGltZQpAQCAtMTQsMTIgKzE0LDEzIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Nyb3NzIGNvbXBpbGUgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHRlc3Qtc3VpdGUvTWFrZWZpbGUuYW0gfCAxNSArKysrKysrLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbSBiL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0KLWluZGV4IGQ1NDY4YmUuLjc3ZmM0ODAgMTAwNjQ0CitpbmRleCAwNjFhNDYzLi4zNTBkZmIyIDEwMDY0NAogLS0tIGEvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQogKysrIGIvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQogQEAgLTQxLDggKzQxLDcgQEAgVEVTVFMgKz0gZGVidWcgXApAQCAtNTgsNiArNTksMyBAQAogIAkJZWxzZSBicmVhazsgZmk7IFwKICAJZG9uZTsgXAogIAlpZiB0ZXN0ICIkJGZhaWxlZCIgLWVxIDA7IHRoZW4gY3AgJChUUlVFKSAkQCA7IGZpCi0tLSAKLTIuOC4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy9zcXVpZC11c2Utc2VyaWFsLXRlc3RzLWNvbmZpZy1uZWVkZWQtYnktcHRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvc3F1aWQtdXNlLXNlcmlhbC10ZXN0cy1jb25maWctbmVlZGVkLWJ5LXB0ZXN0LnBhdGNoCmluZGV4IDAxZWM1OTYuLjljNzVmMTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy9zcXVpZC11c2Utc2VyaWFsLXRlc3RzLWNvbmZpZy1uZWVkZWQtYnktcHRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzL3NxdWlkLXVzZS1zZXJpYWwtdGVzdHMtY29uZmlnLW5lZWRlZC1ieS1wdGVzdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYmQ1OGQzNjcyYmMyNjc4MjQwMDBmMzRhMzc1NjFjN2FiMmJkNTcxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOWJjZWMyMjFhMmJiNDM4ZDhhOWVkNTlhZWQ4NDZmZmUzYmU5Y2ZmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDE5IEp1bCAyMDE2IDAxOjU2OjIzIC0wNDAwCiBTdWJqZWN0OiBbUEFUQ0hdIHNxdWlkOiB1c2Ugc2VyaWFsLXRlc3RzIGNvbmZpZyBuZWVkZWQgYnkgcHRlc3QKQEAgLTksMTIgKzksMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGVmYXVsdCBhdXRvbWFrZSBiZWhhdmlvciBpbmNvbXBhdGlibGUgd2l0aCBwdGVzdF0KIAogU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAwNWFkMDI3Li5lMzI0YjkzIDEwMDY0NAoraW5kZXggMzgyNzIyMi4uNTA0YTg0NCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtMTAsNyArMTAsNyBAQCBBQ19QUkVSRVEoMi42MSkKQEAgLTI2LDYgKzI3LDMgQEAKICBBQ19SRVZJU0lPTigkUmV2aXNpb24kKWRubAogIEFDX1BSRUZJWF9ERUZBVUxUKC91c3IvbG9jYWwvc3F1aWQpCiAgQU1fTUFJTlRBSU5FUl9NT0RFCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvZmlsZXMvY2hhbmdlLXNlY3VyZV9jaHJvb3RfZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC9maWxlcy9jaGFuZ2Utc2VjdXJlX2Nocm9vdF9kaXIucGF0Y2gKaW5kZXggNWYyODYwZS4uYjY5ZGUxZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC9maWxlcy9jaGFuZ2Utc2VjdXJlX2Nocm9vdF9kaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC9maWxlcy9jaGFuZ2Utc2VjdXJlX2Nocm9vdF9kaXIucGF0Y2gKQEAgLTEsMjAgKzEsMjUgQEAKLXZzZnRwZDogY2hhbmdlIGRlZmF1bHQgdmFsdWUgb2Ygc2VjdXJlX2Nocm9vdF9kaXIKK0Zyb20gY2UyYmU1ZDQ5Njc0NDU4MjhkNWFlOWQ5NDYyY2ZhYTc4YWUwM2M3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxOCBTZXAgMjAxMyAwOTo0NDoyMCArMDgwMAorU3ViamVjdDogW1BBVENIXSB2c2Z0cGQ6IGNoYW5nZSBkZWZhdWx0IHZhbHVlIG9mIHNlY3VyZV9jaHJvb3RfZGlyCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBDaGFuZ2Ugc2VjdXJlX2Nocm9vdF9kaXIgcG9pbnRpbmcgdG8gYSB2b2xhdGlsZSBkaXJlY3RvcnkuCiAKIFNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBJTlNUQUxMICAgICAgIHwgICAgNiArKystLS0KLSB0dW5hYmxlcy5jICAgIHwgICAgMiArLQotIHZzZnRwZC5jb25mLjUgfCAgICAyICstCisgSU5TVEFMTCAgICAgICB8IDYgKysrLS0tCisgdHVuYWJsZXMuYyAgICB8IDIgKy0KKyB2c2Z0cGQuY29uZi41IHwgMiArLQogIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCi1kaWZmIC11cnBOIGEvSU5TVEFMTCBiL0lOU1RBTEwKLS0tLSBhL0lOU1RBTEwJMjAxMy0wOS0xMyAxMDoyMzo1Ny41MDQ5NzIzOTcgKzA4MDAKLSsrKyBiL0lOU1RBTEwJMjAxMy0wOS0xMyAxMDoyNToyNS42NjQ5NzE3NzkgKzA4MDAKLUBAIC0yNywxMSArMjcsMTEgQEAgdXNlciBpbiBjYXNlIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuIAorZGlmZiAtLWdpdCBhL0lOU1RBTEwgYi9JTlNUQUxMCitpbmRleCA0ZjgxMWFhLi40MjcxMjJhIDEwMDY0NAorLS0tIGEvSU5TVEFMTAorKysrIGIvSU5TVEFMTAorQEAgLTI3LDExICsyNywxMSBAQCB1c2VyIGluIGNhc2UgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4gZS5nLjoKICBbcm9vdEBsb2NhbGhvc3Qgcm9vdF0jIHVzZXJhZGQgbm9ib2R5CiAgdXNlcmFkZDogdXNlciBub2JvZHkgZXhpc3RzCiAgCkBAIC0yOSw5ICszNCwxMCBAQAogIAogIDJjKSBGb3IgYW5vbnltb3VzIEZUUCwgeW91IHdpbGwgbmVlZCB0aGUgdXNlciAiZnRwIiB0byBleGlzdCwgYW5kIGhhdmUgYQogIHZhbGlkIGhvbWUgZGlyZWN0b3J5ICh3aGljaCBpcyBOT1Qgb3duZWQgb3Igd3JpdGFibGUgYnkgdGhlIHVzZXIgImZ0cCIpLgotZGlmZiAtdXJwTiBhL3R1bmFibGVzLmMgYi90dW5hYmxlcy5jCi0tLS0gYS90dW5hYmxlcy5jCTIwMTMtMDktMTMgMTA6MjY6MjkuNTU0OTcyODE3ICswODAwCi0rKysgYi90dW5hYmxlcy5jCTIwMTMtMDktMTMgMTA6Mjc6MTguMTA0OTcyMjEwICswODAwCitkaWZmIC0tZ2l0IGEvdHVuYWJsZXMuYyBiL3R1bmFibGVzLmMKK2luZGV4IDI4NGExMGQuLjhjNjNjM2YgMTAwNjQ0CistLS0gYS90dW5hYmxlcy5jCisrKysgYi90dW5hYmxlcy5jCiBAQCAtMjU0LDcgKzI1NCw3IEBAIHR1bmFibGVzX2xvYWRfZGVmYXVsdHMoKQogICAgLyogLXJ3LS0tLS0tLSAqLwogICAgdHVuYWJsZV9jaG93bl91cGxvYWRfbW9kZSA9IDA2MDA7CkBAIC00MSwxMCArNDcsMTEgQEAKICAgIGluc3RhbGxfc3RyX3NldHRpbmcoImZ0cCIsICZ0dW5hYmxlX2Z0cF91c2VybmFtZSk7CiAgICBpbnN0YWxsX3N0cl9zZXR0aW5nKCJyb290IiwgJnR1bmFibGVfY2hvd25fdXNlcm5hbWUpOwogICAgaW5zdGFsbF9zdHJfc2V0dGluZygiL3Zhci9sb2cveGZlcmxvZyIsICZ0dW5hYmxlX3hmZXJsb2dfZmlsZSk7Ci1kaWZmIC11cnBOIGEvdnNmdHBkLmNvbmYuNSBiL3ZzZnRwZC5jb25mLjUKLS0tLSBhL3ZzZnRwZC5jb25mLjUJMjAxMy0wOS0xMyAxMDowOTozMy43NzQ5NzI0NjIgKzA4MDAKLSsrKyBiL3ZzZnRwZC5jb25mLjUJMjAxMy0wOS0xMyAxMDoxMDo0MS45MTQ5NzE5ODkgKzA4MDAKLUBAIC05NjksNyArOTY5LDcgQEAgVGhpcyBvcHRpb24gc2hvdWxkIGJlIHRoZSBuYW1lIG9mIGEgZGlyZQorZGlmZiAtLWdpdCBhL3ZzZnRwZC5jb25mLjUgYi92c2Z0cGQuY29uZi41CitpbmRleCBmY2M2MDIyLi5lNGZmZGVlIDEwMDY0NAorLS0tIGEvdnNmdHBkLmNvbmYuNQorKysrIGIvdnNmdHBkLmNvbmYuNQorQEAgLTk2OSw3ICs5NjksNyBAQCBUaGlzIG9wdGlvbiBzaG91bGQgYmUgdGhlIG5hbWUgb2YgYSBkaXJlY3Rvcnkgd2hpY2ggaXMgZW1wdHkuIEFsc28sIHRoZQogIGRpcmVjdG9yeSBzaG91bGQgbm90IGJlIHdyaXRhYmxlIGJ5IHRoZSBmdHAgdXNlci4gVGhpcyBkaXJlY3RvcnkgaXMgdXNlZAogIGFzIGEgc2VjdXJlIGNocm9vdCgpIGphaWwgYXQgdGltZXMgdnNmdHBkIGRvZXMgbm90IHJlcXVpcmUgZmlsZXN5c3RlbSBhY2Nlc3MuCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdnNmdHBkL3ZzZnRwZC0zLjAuMy8wMDAxLXN5c2RlcHV0aWwuYy1GaXgtd2l0aC1tdXNsLXdoaWNoLWRvZXMtbm90LWhhdmUtdXRtcHgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdnNmdHBkL3ZzZnRwZC0zLjAuMy8wMDAxLXN5c2RlcHV0aWwuYy1GaXgtd2l0aC1tdXNsLXdoaWNoLWRvZXMtbm90LWhhdmUtdXRtcHgucGF0Y2gKaW5kZXggYzM5MTllMS4uZDgxYzk0YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGQtMy4wLjMvMDAwMS1zeXNkZXB1dGlsLmMtRml4LXdpdGgtbXVzbC13aGljaC1kb2VzLW5vdC1oYXZlLXV0bXB4LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkLTMuMC4zLzAwMDEtc3lzZGVwdXRpbC5jLUZpeC13aXRoLW11c2wtd2hpY2gtZG9lcy1ub3QtaGF2ZS11dG1weC5wYXRjaApAQCAtMSw5ICsxLDEwIEBACi1Gcm9tIGU1NTEzNWMyYTRlYTdlYWUzY2IxZjRkY2NmNjljYTQ3N2VhMDk1YmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGM1Y2FmNTJiOWVkNzlkYTg5MTZlZjU3MjJlZmU2ZGY2MWE4NTZlMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVHVlLCAyOCBNYXIgMjAxNyAyMDowOToxMiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBzeXNkZXB1dGlsLmM6IEZpeCB3aXRoIG11c2wgd2hpY2ggZG9lcyBub3QgaGF2ZSB1dG1weAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzeXNkZXB1dGlsLmMgfCA0ICsrKy0KICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCkBAIC0yMyw2ICsyNCwzIEBACiAgCiAgI2RlZmluZSBfX1VTRV9HTlUKICAjaW5jbHVkZSA8dXRtcHguaD4KLS0tIAotMi4xMi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkLTMuMC4zLzAwMDEtdnNmdHBkLWFsbG93LXN5c2luZm8taW4tdGhlLXNlY2NvbXAtc2FuZGJveC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkLTMuMC4zLzAwMDEtdnNmdHBkLWFsbG93LXN5c2luZm8taW4tdGhlLXNlY2NvbXAtc2FuZGJveC5wYXRjaAppbmRleCA3YWNjYmJjLi5jNmMwZjgwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdnNmdHBkL3ZzZnRwZC0zLjAuMy8wMDAxLXZzZnRwZC1hbGxvdy1zeXNpbmZvLWluLXRoZS1zZWNjb21wLXNhbmRib3gucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGQtMy4wLjMvMDAwMS12c2Z0cGQtYWxsb3ctc3lzaW5mby1pbi10aGUtc2VjY29tcC1zYW5kYm94LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzN2NjOTI0MzYzNTE1YzhjMzA5OTQ0YzQ1NWJjYmJhN2RkY2M4ZWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5YzQ4MjZjMTlmMDRkYTUzMzg4NjIwOTM2MWEyY2FkZGY1ODJkNjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgNiBTZXAgMjAxNiAxNzoxNzo0NCArMDgwMAogU3ViamVjdDogW1BBVENIXSB2c2Z0cGQ6IGFsbG93IHN5c2luZm8oKSBpbiB0aGUgc2VjY29tcCBzYW5kYm94CkBAIC0yNCw2ICsyNCw3IEBACiBPT1BTOiBwcml2X3NvY2tfZ2V0X2NtZAogCiBTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzZWNjb21wc2FuZGJveC5jIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCkBAIC00MCw2ICs0MSwzIEBACiAgICAvKiBNaXNjICovCiAgICBhbGxvd19ucihfX05SX3VtYXNrKTsKICAKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGQtMy4wLjMvbWFrZWZpbGUtZGVzdGRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkLTMuMC4zL21ha2VmaWxlLWRlc3RkaXIucGF0Y2gKaW5kZXggMTk4MGQwOS4uNWFkNWMxNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGQtMy4wLjMvbWFrZWZpbGUtZGVzdGRpci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdnNmdHBkL3ZzZnRwZC0zLjAuMy9tYWtlZmlsZS1kZXN0ZGlyLnBhdGNoCkBAIC0xLDE0ICsxLDIyIEBACi1Vc2UgREVTVERJUiB3aXRoaW4gaW5zdGFsbCB0byBhbGxvdyBpbnN0YWxsaW5nIHVuZGVyIGEgcHJlZml4CitGcm9tIGJhYjNmNjJmMWZkNWI3YzJhYjE5N2Y0MzExYWQxOTFiZjE4ODE2YjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IE1vbiwgMjAgRmViIDIwMTIgMTM6NTE6NDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIERFU1RESVIgd2l0aGluIGluc3RhbGwgdG8gYWxsb3cgaW5zdGFsbGluZyB1bmRlciBhIHByZWZpeAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CiAKKy0tLQorIE1ha2VmaWxlIHwgMjYgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBjNjNlZDFiLi45ZTRmMzVmIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCi1AQCAtMjQsMjEgKzI0LDIxIEBACi0gCSQoQ0MpIC1vIHZzZnRwZCAkKE9CSlMpICQoTElOSykgJChMSUJTKQorQEAgLTI5LDIxICsyOSwyMSBAQCB2c2Z0cGQ6ICQoT0JKUykKKyAJJChDQykgLW8gdnNmdHBkICQoT0JKUykgJChMSU5LKSAkKExERkxBR1MpICQoTElCUykKICAKICBpbnN0YWxsOgogLQlpZiBbIC14IC91c3IvbG9jYWwvc2JpbiBdOyB0aGVuIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkLTMuMC4zL21ha2VmaWxlLWxpYnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdnNmdHBkL3ZzZnRwZC0zLjAuMy9tYWtlZmlsZS1saWJzLnBhdGNoCmluZGV4IDlhMTBmNzIuLmQyZTU4YTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkLTMuMC4zL21ha2VmaWxlLWxpYnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGQtMy4wLjMvbWFrZWZpbGUtbGlicy5wYXRjaApAQCAtMSw0ICsxLDggQEAKLUhhcmRjb2RlIExJQlMgaW5zdGVhZCBvZiB1c2luZyBhIHNjcmlwdCB0byBkZXRlcm1pbmUgYXZhaWxhYmxlIGxpYnMKK0Zyb20gMzI4Nzk5ZDBjZDVjNTIzYWQ3YTgxNGZlZmVjMTZkOGE4NGFhODAxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorRGF0ZTogVHVlLCAxNiBBcHIgMjAxMyAxMDo1Mzo1NSArMDAwMAorU3ViamVjdDogW1BBVENIXSBIYXJkY29kZSBMSUJTIGluc3RlYWQgb2YgdXNpbmcgYSBzY3JpcHQgdG8gZGV0ZXJtaW5lCisgYXZhaWxhYmxlIGxpYnMKIAogV2Ugd2FudCB0byBhdm9pZCB0aGlzIGR5bmFtaWMgZGV0ZWN0aW9uIHNvIHdlIGhhdmUgYSBkZXRlcm1pbmlzdGljCiBidWlsZC4KQEAgLTcsMTUgKzExLDIwIEBACiAKIFNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgogCistLS0KKyBNYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKwogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDllNGYzNWYuLjNhNTUzNWQgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKLUBAIC01LDcgKzUsNyBAQAotICNDRkxBR1MgPSAtZwotIENGTEFHUwk9CS1PMiAtV2FsbCAtVyAtV3NoYWRvdyAjLXBlZGFudGljIC1XZXJyb3IgLVdjb252ZXJzaW9uCitAQCAtOCw3ICs4LDcgQEAgQ0ZMQUdTCT0JLU8yIC1mUElFIC1mc3RhY2stcHJvdGVjdG9yIC0tcGFyYW09c3NwLWJ1ZmZlci1zaXplPTQgXAorIAktRF9GT1JUSUZZX1NPVVJDRT0yIFwKKyAJIy1wZWRhbnRpYyAtV2NvbnZlcnNpb24KICAKIC1MSUJTCT0JYC4vdnNmX2ZpbmRsaWJzLnNoYAogK0xJQlMJPQktbHNzbCAtbGNyeXB0byAtbG5zbCAtbHJlc29sdgogIExJTksJPQktV2wsLXMKKyBMREZMQUdTCT0JLWZQSUUgLXBpZSAtV2wsLXoscmVscm8gLVdsLC16LG5vdwogIAotIE9CSlMJPQltYWluLm8gdXRpbGl0eS5vIHByZWxvZ2luLm8gZnRwY21kaW8ubyBwb3N0bG9naW4ubyBwcml2c29jay5vIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkLTMuMC4zL21ha2VmaWxlLXN0cmlwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGQtMy4wLjMvbWFrZWZpbGUtc3RyaXAucGF0Y2gKaW5kZXggZmQzMTYwMC4uZTU5NjA3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGQtMy4wLjMvbWFrZWZpbGUtc3RyaXAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGQtMy4wLjMvbWFrZWZpbGUtc3RyaXAucGF0Y2gKQEAgLTEsMTAgKzEsMTggQEAKLURpc2FibGUgc3RyaXBwaW5nIGF0IGxpbmsgdGltZQorRnJvbSAyNjE4NzRlYTQ3OTczZWExNTYxNDExODUwODIyNTJmYzkyMDgxOTA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUdWUsIDE2IEFwciAyMDEzIDEwOjUzOjU1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgc3RyaXBwaW5nIGF0IGxpbmsgdGltZQogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ10KIAogU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CiAKKy0tLQorIE1ha2VmaWxlIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKwogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDNhNTUzNWQuLmU3ODAxOWEgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKIEBAIC05LDcgKzksNiBAQCBDRkxBR1MJPQktTzIgLWZQSUUgLWZzdGFjay1wcm90ZWN0b3IgLS1wYXJhbT1zc3AtYnVmZmVyLXNpemU9NCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdnNmdHBkL3ZzZnRwZC0zLjAuMy9ub3BhbS13aXRoLXRjcF93cmFwcGVycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkLTMuMC4zL25vcGFtLXdpdGgtdGNwX3dyYXBwZXJzLnBhdGNoCmluZGV4IGZkY2YzYTAuLmE0Mzg3YzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkLTMuMC4zL25vcGFtLXdpdGgtdGNwX3dyYXBwZXJzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkLTMuMC4zL25vcGFtLXdpdGgtdGNwX3dyYXBwZXJzLnBhdGNoCkBAIC0xLDExICsxLDIwIEBACi1EaXNhYmxlIFBBTQorRnJvbSA3MTYyOGRkYzkxYjZlZmI5YjkyMmEzZmNmOGNjMTg1MjJmNTM4N2JlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIlJveS5MaSIgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDIwIEZlYiAyMDEyIDEzOjUxOjQ5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgUEFNCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlnXQogCiBTaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1kaWZmIC11ciB2c2Z0cGQtMi4wLjFfb3JnL2J1aWxkZGVmcy5oIHZzZnRwZC0yLjAuMV9wYXRjaC9idWlsZGRlZnMuaAotLS0tIHZzZnRwZC0yLjAuMV9vcmcvYnVpbGRkZWZzLmgJMjAwNC0wNy0wMiAxNjozNjo1OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyB2c2Z0cGQtMi4wLjFfcGF0Y2gvYnVpbGRkZWZzLmgJMjAwNC0wNy0yMSAwOTozNDo0OS4wNDQ5MDA0ODggKzAyMDAKKworLS0tCisgYnVpbGRkZWZzLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZGRlZnMuaCBiL2J1aWxkZGVmcy5oCitpbmRleCAwMTA2ZDFhLi5mNDhhNTY4IDEwMDY0NAorLS0tIGEvYnVpbGRkZWZzLmgKKysrKyBiL2J1aWxkZGVmcy5oCiBAQCAtMiw3ICsyLDcgQEAKICAjZGVmaW5lIFZTRl9CVUlMRERFRlNfSAogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGQtMy4wLjMvdnNmdHBkLTIuMS4wLWZpbHRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkLTMuMC4zL3ZzZnRwZC0yLjEuMC1maWx0ZXIucGF0Y2gKaW5kZXggMzJmN2U4Mi4uNTkwZWI1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGQtMy4wLjMvdnNmdHBkLTIuMS4wLWZpbHRlci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdnNmdHBkL3ZzZnRwZC0zLjAuMy92c2Z0cGQtMi4xLjAtZmlsdGVyLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotRml4IHRoZSBDVkUtMjAxNS0xNDE5CitGcm9tIGI3NTY0NDQ4NTRjNWFiM2IxMjg0ZmQ3MTEzMDQzZmU4ODYwZTk5ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI0IEFwciAyMDE1IDA5OjM2OjQ4ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCB0aGUgQ1ZFLTIwMTUtMTQxOQogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIApAQCAtOSwxMCArMTIsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgogCi1kaWZmIC11cCB2c2Z0cGQtMi4xLjAvbHMuYy5maWx0ZXIgdnNmdHBkLTIuMS4wL2xzLmMKLS0tLSB2c2Z0cGQtMi4xLjAvbHMuYy5maWx0ZXIJMjAwOC0wMi0wMiAwMjozMDo0MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyB2c2Z0cGQtMi4xLjAvbHMuYwkyMDA5LTAxLTA4IDE5OjMxOjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTIzOSw5ICsyMzksMzEgQEAgdnNmX2ZpbGVuYW1lX3Bhc3Nlc19maWx0ZXIoY29uc3Qgc3RydWN0IAorLS0tCisgbHMuYyAgfCAyNiArKysrKysrKysrKysrKysrKysrKysrKystLQorIHN0ci5jIHwgMTEgKysrKysrKysrKysKKyBzdHIuaCB8ICAxICsKKyAzIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9scy5jIGIvbHMuYworaW5kZXggN2UxMzc2ZC4uZTkzMDJkZCAxMDA2NDQKKy0tLSBhL2xzLmMKKysrKyBiL2xzLmMKK0BAIC0yNDYsOSArMjQ2LDMxIEBAIHZzZl9maWxlbmFtZV9wYXNzZXNfZmlsdGVyKGNvbnN0IHN0cnVjdCBteXN0ciogcF9maWxlbmFtZV9zdHIsCiAgICBpbnQgcmV0ID0gMDsKICAgIGNoYXIgbGFzdF90b2tlbiA9IDA7CiAgICBpbnQgbXVzdF9tYXRjaF9hdF9jdXJyZW50X3BvcyA9IDE7CkBAIC00NiwxMCArNTYsMTEgQEAKICAgIHdoaWxlICghc3RyX2lzZW1wdHkoJmZpbHRlcl9yZW1haW5fc3RyKSAmJiAqaXRlcnMgPCBWU0ZUUF9NQVRDSElURVJTX01BWCkKICAgIHsKICAgICAgc3RhdGljIHN0cnVjdCBteXN0ciBzX21hdGNoX25lZWRlZF9zdHI7Ci1kaWZmIC11cCB2c2Z0cGQtMi4xLjAvc3RyLmMuZmlsdGVyIHZzZnRwZC0yLjEuMC9zdHIuYwotLS0tIHZzZnRwZC0yLjEuMC9zdHIuYy5maWx0ZXIJMjAwOC0xMi0xNyAwNjo1NDoxNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyB2c2Z0cGQtMi4xLjAvc3RyLmMJMjAwOS0wMS0wOCAxOTozMToxNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC02ODAsMyArNjgwLDE0IEBAIHN0cl9yZXBsYWNlX3VucHJpbnRhYmxlKHN0cnVjdCBteXN0ciogcF8KK2RpZmYgLS1naXQgYS9zdHIuYyBiL3N0ci5jCitpbmRleCA2NTk2MjA0Li5iYTRiOTJhIDEwMDY0NAorLS0tIGEvc3RyLmMKKysrKyBiL3N0ci5jCitAQCAtNzExLDMgKzcxMSwxNCBAQCBzdHJfcmVwbGFjZV91bnByaW50YWJsZShzdHJ1Y3QgbXlzdHIqIHBfc3RyLCBjaGFyIG5ld19jaGFyKQogICAgfQogIH0KICAKQEAgLTY0LDEwICs3NSwxMSBAQAogKyAgaWYgKHN0cl9pc2VtcHR5KGRfc3RyKSkKICsgICBzdHJfY29weSAoZF9zdHIsIHBhdGgpOwogK30KLWRpZmYgLXVwIHZzZnRwZC0yLjEuMC9zdHIuaC5maWx0ZXIgdnNmdHBkLTIuMS4wL3N0ci5oCi0tLS0gdnNmdHBkLTIuMS4wL3N0ci5oLmZpbHRlcgkyMDA4LTEyLTE3IDA2OjUzOjIzLjAwMDAwMDAwMCArMDEwMAotKysrIHZzZnRwZC0yLjEuMC9zdHIuaAkyMDA5LTAxLTA4IDE5OjMyOjE0LjAwMDAwMDAwMCArMDEwMAotQEAgLTEwMCw2ICsxMDAsNyBAQCB2b2lkIHN0cl9yZXBsYWNlX3VucHJpbnRhYmxlKHN0cnVjdCBteXN0CitkaWZmIC0tZ2l0IGEvc3RyLmggYi9zdHIuaAoraW5kZXggYWIwYTlhNC4uM2EyMWI1MCAxMDA2NDQKKy0tLSBhL3N0ci5oCisrKysgYi9zdHIuaAorQEAgLTEwMCw2ICsxMDAsNyBAQCB2b2lkIHN0cl9yZXBsYWNlX3VucHJpbnRhYmxlKHN0cnVjdCBteXN0ciogcF9zdHIsIGNoYXIgbmV3X2NoYXIpOwogIGludCBzdHJfYXRvaShjb25zdCBzdHJ1Y3QgbXlzdHIqIHBfc3RyKTsKICBmaWxlc2l6ZV90IHN0cl9hX3RvX2ZpbGVzaXplX3QoY29uc3Qgc3RydWN0IG15c3RyKiBwX3N0cik7CiAgdW5zaWduZWQgaW50IHN0cl9vY3RhbF90b191aW50KGNvbnN0IHN0cnVjdCBteXN0ciogcF9zdHIpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGQtMy4wLjMvdnNmdHBkLXRjcF93cmFwcGVycy1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGQtMy4wLjMvdnNmdHBkLXRjcF93cmFwcGVycy1zdXBwb3J0LnBhdGNoCmluZGV4IDY5NzQ1YjMuLmM1NThhZWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkLTMuMC4zL3ZzZnRwZC10Y3Bfd3JhcHBlcnMtc3VwcG9ydC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdnNmdHBkL3ZzZnRwZC0zLjAuMy92c2Z0cGQtdGNwX3dyYXBwZXJzLXN1cHBvcnQucGF0Y2gKQEAgLTEsMTEgKzEsMTUgQEAKLUVuYWJsZSB0Y3Bfd3JhcHBlci4KK0Zyb20gYzAyNmIwYzBkZTRlZWJiMTg5YmM3N2IyZDRjM2I5NTI4NDU0YWMwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJSb3kuTGkiIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxOSBKdWwgMjAxMyAxMDoxOToyNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBFbmFibGUgdGNwX3dyYXBwZXIuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAogU2lnbmVkLW9mZi1ieTogUm95LkxpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBidWlsZGRlZnMuaCB8ICAgIDIgKy0KLSAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKKyBidWlsZGRlZnMuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2J1aWxkZGVmcy5oIGIvYnVpbGRkZWZzLmgKIGluZGV4IGU5MDgzNTIuLjAxMDZkMWEgMTAwNjQ0CkBAIC0yMCw2ICsyNCwzIEBACiAgI2RlZmluZSBWU0ZfQlVJTERfUEFNCiAgI3VuZGVmIFZTRl9CVUlMRF9TU0wKICAKLS0tIAotMS43LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luYy8wMDAxLUluY2x1ZGUtZmNudGwuaC1mb3ItRl8tYW5kLU9fLWRlZmluZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jLzAwMDEtSW5jbHVkZS1mY250bC5oLWZvci1GXy1hbmQtT18tZGVmaW5lcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU0YjA3OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jLzAwMDEtSW5jbHVkZS1mY250bC5oLWZvci1GXy1hbmQtT18tZGVmaW5lcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gODVlYTQ3ZmVkYmM5NmVkOTE4MGUwOGIwZDM3MWQ5OTY2ZTNhODhkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDMwIEF1ZyAyMDE3IDE3OjI4OjU1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgZmNudGwuaCBmb3IgRl8qIGFuZCBPXyogZGVmaW5lcwotCi1GaXhlcyBlcnJvcnMgbGlrZQotdXRpbHMuYzo5NToyMjogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ09fV1JPTkxZJwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gcWRldmljZXMvdXRpbHMuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvcWRldmljZXMvdXRpbHMuYyBiL3FkZXZpY2VzL3V0aWxzLmMKLWluZGV4IDQxODUwYjhjLi44NzA5MDg1MyAxMDA2NDQKLS0tLSBhL3FkZXZpY2VzL3V0aWxzLmMKLSsrKyBiL3FkZXZpY2VzL3V0aWxzLmMKLUBAIC0zOSw2ICszOSw3IEBACi0gCi0gI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxsaWJnZW4uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jXzIuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2U3NGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBDb3Jvc3luYyBDbHVzdGVyIEVuZ2luZSBhbmQgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlcyIKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgQ29yb3N5bmMgQ2x1c3RlciBFbmdpbmUgRXhlY3V0aXZlLCBzZXZlcmFsIGRlZmF1bHQgXAotQVBJcyBhbmQgbGlicmFyaWVzLCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBhbiBpbml0IHNjcmlwdC4iCi1IT01FUEFHRSA9ICJodHRwOi8vY29yb3N5bmMuZ2l0aHViLmlvL2Nvcm9zeW5jLyIKLQotU0VDVElPTiA9ICJiYXNlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1c2VyYWRkCi0KLVNSQ19VUkkgPSAiaHR0cDovL2J1aWxkLmNsdXN0ZXJsYWJzLm9yZy9jb3Jvc3luYy9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLWZjbnRsLmgtZm9yLUZfLWFuZC1PXy1kZWZpbmVzLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTQ3ZmE3ODcwNGRhNTNhYTM1OTEyYmU1OGQzMTAzNWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjI2ZTMwMTEzMDlmZTRiY2NlOTRiMWRjMjBlYThjNDYyZjE5NDgzYTczZjNjYTYyZjEzYjkyNWQwMTFhNGJhOSIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hODVlYjRjZTI0MDMzYWRiNjA4OGRkMWQ2ZmZjNWU1ZCIKLQotREVQRU5EUyA9ICJncm9mZi1uYXRpdmUgbnNzIGxpYnFiIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY29yb3N5bmMuc2VydmljZSBjb3Jvc3luYy1ub3RpZnlkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3FkZXZpY2UnLCAnY29yb3N5bmMtcWRldmljZS5zZXJ2aWNlJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncW5ldGQnLCAnY29yb3N5bmMtcW5ldGQuc2VydmljZScsICcnLCBkKX0gXAotIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJlbmFibGUiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJjb3Jvc3luYy1kYWVtb24iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICBkYnVzIHFkZXZpY2UgcW5ldGQgc25tcCBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLS1lbmFibGUtZGJ1cywtLWRpc2FibGUtZGJ1cyxkYnVzIgotUEFDS0FHRUNPTkZJR1txZGV2aWNlXSA9ICItLWVuYWJsZS1xZGV2aWNlcywtLWRpc2FibGUtcWRldmljZXMiCi1QQUNLQUdFQ09ORklHW3FuZXRkXSA9ICItLWVuYWJsZS1xbmV0ZCwtLWRpc2FibGUtcW5ldGQiCi1QQUNLQUdFQ09ORklHW3JkbWFdID0gIi0tZW5hYmxlLXJkbWEsLS1kaXNhYmxlLXJkbWEiCi1QQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZGRpcixzeXN0ZW1kIgotCi1FWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcGF0aF9CQVNIUEFUSD0ke2Jhc2VfYmluZGlyfS9iYXNoIgotRVhUUkFfT0VNQUtFID0gInRtcGZpbGVzZGlyX0RBVEE9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAoIGNkICR7U30KLSAgICAke1N9L2F1dG9nZW4uc2ggKQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pbml0L2Nvcm9zeW5jLnN5c2NvbmZpZy5leGFtcGxlICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jb3Jvc3luYwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3Rvb2xzL2Nvcm9zeW5jLW5vdGlmeWQuc3lzY29uZmlnLmV4YW1wbGUgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2Nvcm9zeW5jLW5vdGlmeWQKLQotICAgIHJtIC1yZiAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotICAgIGVjaG8gImQgcm9vdCByb290IDA3NTUgJHtsb2NhbHN0YXRlZGlyfS9sb2cvY2x1c3RlciBub25lIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzA1X2Nvcm9zeW5jCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxbmV0ZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGNob3duIC1SIGNvcm9xbmV0ZDpjb3JvcW5ldGQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L3FuZXRkCi0gICAgICAgIGVjaG8gImQgY29yb3FuZXRkIGNvcm9xbmV0ZCAwNzcwIC92YXIvcnVuL2Nvcm9zeW5jLXFuZXRkIG5vbmUiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzA1X2Nvcm9zeW5jCi0gICAgZmkKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0gICAgICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9sb2cvY2x1c3RlciAtIC0gLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvY29yb3N5bmMuY29uZgotCi0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3FuZXRkJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NvbmYvdG1wZmlsZXMuZC9jb3Jvc3luYy1xbmV0ZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgZmkKLSAgICBmaQotfQotCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L2xjcnNvLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9zbm1wL21pYnMvQ09ST1NZTkMtTUlCLnR4dCIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNvcm9xbmV0ZCIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLWQgLyAtTSAtcyAvYmluL25vbG9naW4gLWMgJ1VzZXIgZm9yIGNvcm9zeW5jLXFuZXRkJyAtZyBjb3JvcW5ldGQgY29yb3FuZXRkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18yLjQuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY3M2ZhMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjMuYmIKQEAgLTAsMCArMSw3OSBAQAorU1VNTUFSWSA9ICJUaGUgQ29yb3N5bmMgQ2x1c3RlciBFbmdpbmUgYW5kIEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZXMiCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIENvcm9zeW5jIENsdXN0ZXIgRW5naW5lIEV4ZWN1dGl2ZSwgc2V2ZXJhbCBkZWZhdWx0IFwKK0FQSXMgYW5kIGxpYnJhcmllcywgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGVzLCBhbmQgYW4gaW5pdCBzY3JpcHQuIgorSE9NRVBBR0UgPSAiaHR0cDovL2Nvcm9zeW5jLmdpdGh1Yi5pby9jb3Jvc3luYy8iCisKK1NFQ1RJT04gPSAiYmFzZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXNlcmFkZAorCitTUkNfVVJJID0gImh0dHA6Ly9idWlsZC5jbHVzdGVybGFicy5vcmcvY29yb3N5bmMvcmVsZWFzZXMvJHtCUH0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmYwZWRlMTMwMThhYWRjOGEwNDYxODNiYzU5M2IwZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjFlN2U0MjJlOGQyZjdhZjhlNTMxNWZhMzI5YjFkYmQxMTc1ZmZmMzJlZmFhNTVlODA1NDU4NGM4MGEyYzU5NyIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hODVlYjRjZTI0MDMzYWRiNjA4OGRkMWQ2ZmZjNWU1ZCIKKworREVQRU5EUyA9ICJncm9mZi1uYXRpdmUgbnNzIGxpYnFiIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY29yb3N5bmMuc2VydmljZSBjb3Jvc3luYy1ub3RpZnlkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3FkZXZpY2UnLCAnY29yb3N5bmMtcWRldmljZS5zZXJ2aWNlJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncW5ldGQnLCAnY29yb3N5bmMtcW5ldGQuc2VydmljZScsICcnLCBkKX0gXAorIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitJTklUU0NSSVBUX05BTUUgPSAiY29yb3N5bmMtZGFlbW9uIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgZGJ1cyBxZGV2aWNlIHFuZXRkIHNubXAgXAorIgorCitQQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbcWRldmljZV0gPSAiLS1lbmFibGUtcWRldmljZXMsLS1kaXNhYmxlLXFkZXZpY2VzIgorUEFDS0FHRUNPTkZJR1txbmV0ZF0gPSAiLS1lbmFibGUtcW5ldGQsLS1kaXNhYmxlLXFuZXRkIgorUEFDS0FHRUNPTkZJR1tyZG1hXSA9ICItLWVuYWJsZS1yZG1hLC0tZGlzYWJsZS1yZG1hIgorUEFDS0FHRUNPTkZJR1tzbm1wXSA9ICItLWVuYWJsZS1zbm1wLC0tZGlzYWJsZS1zbm1wLG5ldC1zbm1wIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQgLS13aXRob3V0LXN5c3RlbWRkaXIsc3lzdGVtZCIKKworRVhUUkFfT0VDT05GID0gImFjX2N2X3BhdGhfQkFTSFBBVEg9JHtiYXNlX2JpbmRpcn0vYmFzaCBhcF9jdl9jY19waWU9bm8iCitFWFRSQV9PRU1BS0UgPSAidG1wZmlsZXNkaXJfREFUQT0iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICggY2QgJHtTfQorICAgICR7U30vYXV0b2dlbi5zaCApCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnLworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2luaXQvY29yb3N5bmMuc3lzY29uZmlnLmV4YW1wbGUgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2Nvcm9zeW5jCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vdG9vbHMvY29yb3N5bmMtbm90aWZ5ZC5zeXNjb25maWcuZXhhbXBsZSAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvY29yb3N5bmMtbm90aWZ5ZAorCisgICAgcm0gLXJmICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisgICAgZWNobyAiZCByb290IHJvb3QgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9jbHVzdGVyIG5vbmUiID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDVfY29yb3N5bmMKKworICAgIGlmIFsgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3FuZXRkJywgZCl9IF07IHRoZW4KKyAgICAgICAgY2hvd24gLVIgY29yb3FuZXRkOmNvcm9xbmV0ZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vcW5ldGQKKyAgICAgICAgZWNobyAiZCBjb3JvcW5ldGQgY29yb3FuZXRkIDA3NzAgL3Zhci9ydW4vY29yb3N5bmMtcW5ldGQgbm9uZSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDVfY29yb3N5bmMKKyAgICBmaQorCisgICAgaWYgWyAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLGQpfSBdOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBlY2hvICJkICR7bG9jYWxzdGF0ZWRpcn0vbG9nL2NsdXN0ZXIgLSAtIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2Nvcm9zeW5jLmNvbmYKKworICAgICAgICBpZiBbICR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdxbmV0ZCcsIGQpfSBdOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jb25mL3RtcGZpbGVzLmQvY29yb3N5bmMtcW5ldGQuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgICAgIGZpCisgICAgZmkKK30KKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICdzeXN2aW5pdC1waWRvZicsICdwcm9jcHMnLCBkKX0iCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJleGVjZGlyfS9sY3Jzby8uZGVidWciCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vc25tcC9taWJzL0NPUk9TWU5DLU1JQi50eHQiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBjb3JvcW5ldGQiCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC1kIC8gLU0gLXMgL2Jpbi9ub2xvZ2luIC1jICdVc2VyIGZvciBjb3Jvc3luYy1xbmV0ZCcgLWcgY29yb3FuZXRkIGNvcm9xbmV0ZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvaXNjc2l0YXJnZXRfMS40LjIwLjMrc3ZuNTAyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9pc2NzaXRhcmdldF8xLjQuMjAuMytzdm41MDIuYmIKaW5kZXggNjU5MzY2MS4uNWQxMzU5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9pc2NzaXRhcmdldF8xLjQuMjAuMytzdm41MDIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9pc2NzaXRhcmdldF8xLjQuMjAuMytzdm41MDIuYmIKQEAgLTYwLDMgKzYwLDUgQEAKIAogUkRFUEVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1pc2NzaS10cmd0IgogUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1jcmMzMmMga2VybmVsLW1vZHVsZS1saWJjcmMzMmMiCisKK1BOQkxBQ0tMSVNUW2lzY3NpdGFyZ2V0XSA9ICJlcnJvcjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2luaXRfdGltZXInOyBkaWQgeW91IG1lYW4gJ2luaXRfdGltZXJzJz87IDQuMTUga2VybmVsIGlzc3VlcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2VidGFibGVzL2VidGFibGVzLTIuMC4xMC00L2VidGFibGVzLmNvbW1vbiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2VidGFibGVzL2VidGFibGVzLTIuMC4xMC00L2VidGFibGVzLmNvbW1vbgppbmRleCA2NDAwMjVkLi4xYWUxOGZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9lYnRhYmxlcy9lYnRhYmxlcy0yLjAuMTAtNC9lYnRhYmxlcy5jb21tb24KKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvZWJ0YWJsZXMvZWJ0YWJsZXMtMi4wLjEwLTQvZWJ0YWJsZXMuY29tbW9uCkBAIC0yMCw3ICsyMCw3IEBACiBjb25maWc9L2V0Yy9kZWZhdWx0LyRwcm9nCiBbIC1mICIkY29uZmlnIiBdICYmIC4gIiRjb25maWciCiAKLWZ1bmN0aW9uIGdldF9zdXBwb3J0ZWRfdGFibGVzKCkgeworZ2V0X3N1cHBvcnRlZF90YWJsZXMoKSB7CiAJRUJUQUJMRVNfU1VQUE9SVEVEX1RBQkxFUz0KIAkvc2Jpbi9lYnRhYmxlcyAtdCBmaWx0ZXIgLUwgMj4mMSAxPi9kZXYvbnVsbCB8IGdyZXAgLXEgcGVybWlzc2lvbgogCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgpAQCAtMzUsNyArMzUsNyBAQAogCWRvbmUKIH0KIAotZnVuY3Rpb24gbG9hZCgpIHsKK2xvYWQoKSB7CiAJUkVUVkFMPTAKIAlnZXRfc3VwcG9ydGVkX3RhYmxlcwogCWVjaG8gLW4gIlJlc3RvcmluZyBlYnRhYmxlcyBydWxlc2V0czogIgpAQCAtNjQsNyArNjQsNyBAQAogCWZpCiB9CiAKLWZ1bmN0aW9uIGNsZWFyKCkgeworY2xlYXJfcnVsZXMoKSB7CiAJUkVUVkFMPTAKIAlnZXRfc3VwcG9ydGVkX3RhYmxlcwogCWVjaG8gLW4gIkNsZWFyaW5nIGVidGFibGVzIHJ1bGVzZXRzOiAiCkBAIC05MCw3ICs5MCw3IEBACiAJZmkKIH0KIAotZnVuY3Rpb24gc2F2ZSgpIHsKK3NhdmUoKSB7CiAJUkVUVkFMPTAKIAlnZXRfc3VwcG9ydGVkX3RhYmxlcwogCWVjaG8gLW4gIlNhdmluZyBlYnRhYmxlcyBydWxlc2V0czogIgpAQCAtMTI3LDExICsxMjcsMTEgQEAKIAk7OwogICBzdG9wKQogCVsgIiRFQlRBQkxFU19TQVZFX09OX1NUT1AiID0gInllcyIgXSAmJiBzYXZlCi0JY2xlYXIKKwljbGVhcl9ydWxlcwogCTs7CiAgIHJlc3RhcnR8cmVsb2FkfGZvcmNlLXJlbG9hZCkKIAlbICIkRUJUQUJMRVNfU0FWRV9PTl9SRVNUQVJUIiA9ICJ5ZXMiIF0gJiYgc2F2ZQotCWNsZWFyCisJY2xlYXJfcnVsZXMKIAlbICIkRUJUQUJMRVNfTE9BRF9PTl9TVEFSVCIgPSAieWVzIiBdICYmIGxvYWQKIAk7OwogICBsb2FkKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvZWJ0YWJsZXMvZWJ0YWJsZXNfMi4wLjEwLTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9lYnRhYmxlcy9lYnRhYmxlc18yLjAuMTAtNC5iYgppbmRleCBkNWU3MzQxLi5iOWRjZTY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9lYnRhYmxlcy9lYnRhYmxlc18yLjAuMTAtNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9lYnRhYmxlcy9lYnRhYmxlc18yLjAuMTAtNC5iYgpAQCAtMjksOSArMjksMTAgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDctZXh0ZW5zaW9ucy1Vc2Utc3RkaW50LXR5cGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDgtZXRoZXJuZXRkYi5oLVJlbW92ZS1DLXNwZWNpZmljLWNvbXBpbGVyLWhpbnQtbWFjcm8tXy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA5LWVidGFibGVzLUFsbG93LVJFVFVSTi10YXJnZXQtcnVsZXMtaW4tdXNlci1kZWZpbmVkLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1BZGp1c3QtaGVhZGVyLWluY2x1ZGUtc2VxdWVuY2UucGF0Y2ggXAogICAgICAgICAgICAiCiAKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMTAtQWRqdXN0LWhlYWRlci1pbmNsdWRlLXNlcXVlbmNlLnBhdGNoIgorCiBTUkNfVVJJW21kNXN1bV0gPSAiNTA2NzQyYTNkNDRiOTkyNTk1NTQyNWE2NTljMWE4ZDAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGM2ZjdiNDg0ZjIwN2RjNzEyYmZjYTgxNjQ1ZjQ1MTIwY2I2YWVlMzM4MGU3N2ExNzcxZTljMzRhOWE0NDU1ZCIKIApAQCAtNDIsMTAgKzQzLDEwIEBACiBweXRob24gX19hbm9ueW1vdXMgKCkgewogICAgIGltcG9ydCByZQogCi0gICAga2FyY2ggPSBkLmdldFZhcignS0FSQ0gnKQorICAgIGthcmNoID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykKICAgICBtdWx0aWxpYiA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcpCiAKLSAgICBpZiBtdWx0aWxpYiBhbmQga2FyY2ggPT0gJ3Bvd2VycGM2NCc6CisgICAgaWYgbXVsdGlsaWIgYW5kICgga2FyY2ggPT0gJ3Bvd2VycGM2NCcgb3Iga2FyY2ggPT0gJ2FybScgKToKICAgICAgICAgc2VhcmNoc3RyID0gImxpYi4/MzIiCiAgICAgICAgIHJlZyA9IHJlLmNvbXBpbGUoc2VhcmNoc3RyKQogICAgICAgICBpZiByZWcuc2VhcmNoKG11bHRpbGliKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5ldGZpbHRlci9maWxlcy9saWJuZXRmaWx0ZXItY3RoZWxwZXItdmlzaWJpbGl0eS1oaWRkZW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZXRmaWx0ZXIvZmlsZXMvbGlibmV0ZmlsdGVyLWN0aGVscGVyLXZpc2liaWxpdHktaGlkZGVuLnBhdGNoCmluZGV4IDkzNzdmNTcuLmU3MTdkNWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5ldGZpbHRlci9maWxlcy9saWJuZXRmaWx0ZXItY3RoZWxwZXItdmlzaWJpbGl0eS1oaWRkZW4ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibmV0ZmlsdGVyL2ZpbGVzL2xpYm5ldGZpbHRlci1jdGhlbHBlci12aXNpYmlsaXR5LWhpZGRlbi5wYXRjaApAQCAtMjAsMTAgKzIwLDEwIEBACiAgc3JjL2xpYm5ldGZpbHRlcl9jdGhlbHBlci5jIHwgODMgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMyBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2RveHlnZW4uY2ZnLmluIGIvZG94eWdlbi5jZmcuaW4KLWluZGV4IGNhYzliMDUuLjE5MGI3Y2QgMTAwNjQ0Ci0tLS0gYS9kb3h5Z2VuLmNmZy5pbgotKysrIGIvZG94eWdlbi5jZmcuaW4KK0luZGV4OiBsaWJuZXRmaWx0ZXJfY3RoZWxwZXItMS4wLjAvZG94eWdlbi5jZmcuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJuZXRmaWx0ZXJfY3RoZWxwZXItMS4wLjAub3JpZy9kb3h5Z2VuLmNmZy5pbgorKysrIGxpYm5ldGZpbHRlcl9jdGhlbHBlci0xLjAuMC9kb3h5Z2VuLmNmZy5pbgogQEAgLTcyLDcgKzcyLDcgQEAgUkVDVVJTSVZFICAgICAgICAgICAgICA9IFlFUwogIEVYQ0xVREUgICAgICAgICAgICAgICAgPSAKICBFWENMVURFX1NZTUxJTktTICAgICAgID0gTk8KQEAgLTMzLDEwICszMywxMCBAQAogIEVYQU1QTEVfUEFUSCAgICAgICAgICAgPSAKICBFWEFNUExFX1BBVFRFUk5TICAgICAgID0gCiAgRVhBTVBMRV9SRUNVUlNJVkUgICAgICA9IE5PCi1kaWZmIC0tZ2l0IGEvc3JjL2ludGVybmFsLmggYi9zcmMvaW50ZXJuYWwuaAotaW5kZXggM2E4OGQxYS4uNWQ3ODE3MSAxMDA2NDQKLS0tLSBhL3NyYy9pbnRlcm5hbC5oCi0rKysgYi9zcmMvaW50ZXJuYWwuaAorSW5kZXg6IGxpYm5ldGZpbHRlcl9jdGhlbHBlci0xLjAuMC9zcmMvaW50ZXJuYWwuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYm5ldGZpbHRlcl9jdGhlbHBlci0xLjAuMC5vcmlnL3NyYy9pbnRlcm5hbC5oCisrKysgbGlibmV0ZmlsdGVyX2N0aGVscGVyLTEuMC4wL3NyYy9pbnRlcm5hbC5oCiBAQCAtMywxMCArMyw5IEBACiAgCiAgI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtNTAsMTAgKzUwLDEwIEBACiAgI2VuZGlmCiAgCiAgI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYm5ldGZpbHRlcl9jdGhlbHBlci5jIGIvc3JjL2xpYm5ldGZpbHRlcl9jdGhlbHBlci5jCi1pbmRleCBmOGY1OGU2Li5hZjU0M2ExIDEwMDY0NAotLS0tIGEvc3JjL2xpYm5ldGZpbHRlcl9jdGhlbHBlci5jCi0rKysgYi9zcmMvbGlibmV0ZmlsdGVyX2N0aGVscGVyLmMKK0luZGV4OiBsaWJuZXRmaWx0ZXJfY3RoZWxwZXItMS4wLjAvc3JjL2xpYm5ldGZpbHRlcl9jdGhlbHBlci5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlibmV0ZmlsdGVyX2N0aGVscGVyLTEuMC4wLm9yaWcvc3JjL2xpYm5ldGZpbHRlcl9jdGhlbHBlci5jCisrKysgbGlibmV0ZmlsdGVyX2N0aGVscGVyLTEuMC4wL3NyYy9saWJuZXRmaWx0ZXJfY3RoZWxwZXIuYwogQEAgLTk5LDE3ICs5OSwxNiBAQCBzdHJ1Y3QgbmZjdF9oZWxwZXIgewogICAqIEluIGNhc2Ugb2Ygc3VjY2VzcywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgdmFsaWQgcG9pbnRlciwgb3RoZXJ3aXNlIE5VTEwKICAgKiBzIHJldHVybmVkIGFuZCBlcnJubyBpcyBhcHByb3ByaWF0ZWx5IHNldC4KQEAgLTc0LDkgKzc0LDkgQEAKICB7CiAgCWludCBpOwogIAotQEAgLTExOSw3ICsxMTgsNiBAQCB2b2lkIG5mY3RfaGVscGVyX2ZyZWUoc3RydWN0IG5mY3RfaGVscGVyICpoKQorQEAgLTExOSw3ICsxMTgsNiBAQCB2b2lkIG5mY3RfaGVscGVyX2ZyZWUoc3RydWN0IG5mY3RfaGVscGVyCisgCQkJZnJlZShoLT5leHBlY3RfcG9saWN5W2ldKTsKICAJfQotIAlmcmVlKGgpOwogIH0KIC1FWFBPUlRfU1lNQk9MKG5mY3RfaGVscGVyX2ZyZWUpOwogIApAQCAtMTE1LDcgKzExNSw3IEBACiAgbmZjdF9oZWxwZXJfcG9saWN5X2F0dHJfc2V0KHN0cnVjdCBuZmN0X2hlbHBlcl9wb2xpY3kgKnAsCiAgCQkJICAgIGVudW0gbmZjdF9oZWxwZXJfcG9saWN5X2F0dHJfdHlwZSB0eXBlLAogIAkJCSAgICBjb25zdCB2b2lkICpkYXRhKQotQEAgLTE3MCw3ICsxNjYsNiBAQCBuZmN0X2hlbHBlcl9wb2xpY3lfYXR0cl9zZXQoc3RydWN0IG5mY3RfaGVscGVyX3BvbGljeSAqcCwKK0BAIC0xNzAsNyArMTY2LDYgQEAgbmZjdF9oZWxwZXJfcG9saWN5X2F0dHJfc2V0KHN0cnVjdCBuZmN0XwogIAkJYnJlYWs7CiAgCX0KICB9CkBAIC0xMjMsNyArMTIzLDcgQEAKICAKICAvKioKICAgKiBuZmN0X2hlbHBlcl9hdHRyX3NldF9zdHIgLSBzZXQgb25lIGF0dHJpYnV0ZSB0aGUgaGVscGVyIG9iamVjdAotQEAgLTE3OCwyMyArMTczLDIxIEBAIEVYUE9SVF9TWU1CT0wobmZjdF9oZWxwZXJfcG9saWN5X2F0dHJfc2V0KTsKK0BAIC0xNzgsMjMgKzE3MywyMSBAQCBFWFBPUlRfU1lNQk9MKG5mY3RfaGVscGVyX3BvbGljeV9hdHRyX3NlCiAgICogXHBhcmFtIHR5cGUgYXR0cmlidXRlIHR5cGUgeW91IHdhbnQgdG8gc2V0CiAgICogXHBhcmFtIG5hbWUgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHNldCB0aGlzIGF0dHJpYnV0ZQogICAqLwpAQCAtMTQ5LDcgKzE0OSw3IEBACiAgCiAgLyoqCiAgICogbmZjdF9oZWxwZXJfYXR0cl9zZXQgLSBzZXQgb25lIGF0dHJpYnV0ZSBvZiB0aGUgaGVscGVyIG9iamVjdAotQEAgLTIwMiw3ICsxOTUsNyBAQCBFWFBPUlRfU1lNQk9MKG5mY3RfaGVscGVyX3BvbGljeV9hdHRyX3NldF91MzIpOworQEAgLTIwMiw3ICsxOTUsNyBAQCBFWFBPUlRfU1lNQk9MKG5mY3RfaGVscGVyX3BvbGljeV9hdHRyX3NlCiAgICogXHBhcmFtIHR5cGUgYXR0cmlidXRlIHR5cGUgeW91IHdhbnQgdG8gc2V0CiAgICogXHBhcmFtIGRhdGEgcG9pbnRlciB0byBkYXRhIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHNldCB0aGlzIGF0dHJpYnV0ZQogICAqLwpAQCAtMTU4LDcgKzE1OCw3IEBACiAgbmZjdF9oZWxwZXJfYXR0cl9zZXQoc3RydWN0IG5mY3RfaGVscGVyICpoLAogIAkJICAgICBlbnVtIG5mY3RfaGVscGVyX2F0dHJfdHlwZSB0eXBlLCBjb25zdCB2b2lkICpkYXRhKQogIHsKLUBAIC0yNTAsNyArMjQzLDYgQEAgbmZjdF9oZWxwZXJfYXR0cl9zZXQoc3RydWN0IG5mY3RfaGVscGVyICpoLAorQEAgLTI1MCw3ICsyNDMsNiBAQCBuZmN0X2hlbHBlcl9hdHRyX3NldChzdHJ1Y3QgbmZjdF9oZWxwZXIKICAJCWJyZWFrOwogIAl9CiAgfQpAQCAtMjE2LDcgKzIxNiw3IEBACiAgbmZjdF9oZWxwZXJfYXR0cl91bnNldChzdHJ1Y3QgbmZjdF9oZWxwZXIgKm5mY3RfaGVscGVyLCBlbnVtIG5mY3RfaGVscGVyX2F0dHJfdHlwZSB0eXBlKQogIHsKICAJc3dpdGNoKHR5cGUpIHsKLUBAIC0zMDcsNyArMjk1LDYgQEAgbmZjdF9oZWxwZXJfYXR0cl91bnNldChzdHJ1Y3QgbmZjdF9oZWxwZXIgKm5mY3RfaGVscGVyLCBlbnVtIG5mY3RfaGVscGVyX2F0dHJfdHkKK0BAIC0zMDcsNyArMjk1LDYgQEAgbmZjdF9oZWxwZXJfYXR0cl91bnNldChzdHJ1Y3QgbmZjdF9oZWxwZQogIAkJYnJlYWs7CiAgCX0KICB9CkBAIC0yMzYsNyArMjM2LDcgQEAKICB7CiAgCWNvbnN0IHZvaWQgKnJldCA9IE5VTEw7CiAgCi1AQCAtMzU4LDcgKzM0Niw2IEBAIGNvbnN0IHZvaWQgKm5mY3RfaGVscGVyX2F0dHJfZ2V0KHN0cnVjdCBuZmN0X2hlbHBlciAqaGVscGVyLAorQEAgLTM1OCw3ICszNDYsNiBAQCBjb25zdCB2b2lkICpuZmN0X2hlbHBlcl9hdHRyX2dldChzdHJ1Y3QKICAJfQogIAlyZXR1cm4gcmV0OwogIH0KQEAgLTMyMSw3ICszMjEsNyBAQAogIHsKICAJaW50IHJldDsKICAKLUBAIC00NTQsNyArNDQxLDYgQEAgaW50IG5mY3RfaGVscGVyX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsCitAQCAtNDU0LDcgKzQ0MSw2IEBAIGludCBuZmN0X2hlbHBlcl9zbnByaW50ZihjaGFyICpidWYsIHNpemUKICAKICAJcmV0dXJuIHJldDsKICB9CkBAIC0zMzgsNyArMzM4LDcgQEAKICBuZmN0X2hlbHBlcl9ubG1zZ19idWlsZF9oZHIoY2hhciAqYnVmLCB1aW50OF90IGNtZCwKICAJCQkgICAgdWludDE2X3QgZmxhZ3MsIHVpbnQzMl90IHNlcSkKICB7Ci1AQCAtNTA5LDcgKzQ5NSw2IEBAIG5mY3RfaGVscGVyX25sbXNnX2J1aWxkX2hkcihjaGFyICpidWYsIHVpbnQ4X3QgY21kLAorQEAgLTUwOSw3ICs0OTUsNiBAQCBuZmN0X2hlbHBlcl9ubG1zZ19idWlsZF9oZHIoY2hhciAqYnVmLCB1CiAgCiAgCXJldHVybiBubGg7CiAgfQpAQCAtMzQ2LDcgKzM0Niw3IEBACiAgCiAgc3RhdGljIHZvaWQKICBuZmN0X2hlbHBlcl9ubG1zZ19idWlsZF9wb2xpY3koc3RydWN0IG5sbXNnaGRyICpubGgsCi1AQCAtNTMwLDcgKzUxNSw3IEBAIG5mY3RfaGVscGVyX25sbXNnX2J1aWxkX3BvbGljeShzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKK0BAIC01MzAsNyArNTE1LDcgQEAgbmZjdF9oZWxwZXJfbmxtc2dfYnVpbGRfcG9saWN5KHN0cnVjdCBubAogICAqIFxwYXJhbSBubGg6IG5ldGxpbmsgbWVzc2FnZSB0aGF0IHlvdSB3YW50IHRvIHVzZSB0byBhZGQgdGhlIHBheWxvYWQuCiAgICogXHBhcmFtIG5mY3RfaGVscGVyOiBwb2ludGVyIHRvIGEgaGVscGVyIG9iamVjdAogICAqLwpAQCAtMzU1LDcgKzM1NSw3IEBACiAgbmZjdF9oZWxwZXJfbmxtc2dfYnVpbGRfcGF5bG9hZChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mY3RfaGVscGVyICpoKQogIHsKICAJc3RydWN0IG5sYXR0ciAqbmVzdDsKLUBAIC01OTMsNyArNTc4LDYgQEAgbmZjdF9oZWxwZXJfbmxtc2dfYnVpbGRfcGF5bG9hZChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mY3RfaGVscGVyICpoKQorQEAgLTU5Myw3ICs1NzgsNiBAQCBuZmN0X2hlbHBlcl9ubG1zZ19idWlsZF9wYXlsb2FkKHN0cnVjdCBuCiAgCWlmIChoLT5iaXRzZXQgJiAoMSA8PCBORkNUSF9BVFRSX1NUQVRVUykpCiAgCQltbmxfYXR0cl9wdXRfdTMyKG5saCwgTkZDVEhfU1RBVFVTLCBudG9obChoLT5zdGF0dXMpKTsKICB9CkBAIC0zNjMsNyArMzYzLDcgQEAKICAKICBzdGF0aWMgaW50CiAgbmZjdF9oZWxwZXJfbmxtc2dfcGFyc2VfdHVwbGVfY2IoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgdm9pZCAqZGF0YSkKLUBAIC03OTUsNyArNzc5LDcgQEAgbmZjdF9oZWxwZXJfbmxtc2dfcGFyc2VfYXR0cl9jYihjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCB2b2lkICpkYXRhKQorQEAgLTc5NSw3ICs3NzksNyBAQCBuZmN0X2hlbHBlcl9ubG1zZ19wYXJzZV9hdHRyX2NiKGNvbnN0IHN0CiAgICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIC0xIGluIGNhc2UgdGhhdCBzb21lIG1hbmRhdG9yeSBhdHRyaWJ1dGVzIGFyZQogICAqIG1pc3NpbmcuIE9uIHN1Y2VzcywgaXQgcmV0dXJucyAwLgogICAqLwpAQCAtMzcyLDcgKzM3Miw3IEBACiAgbmZjdF9oZWxwZXJfbmxtc2dfcGFyc2VfcGF5bG9hZChjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKICAJCQkJc3RydWN0IG5mY3RfaGVscGVyICpoKQogIHsKLUBAIC04MzIsNyArODE2LDYgQEAgbmZjdF9oZWxwZXJfbmxtc2dfcGFyc2VfcGF5bG9hZChjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKK0BAIC04MzIsNyArODE2LDYgQEAgbmZjdF9oZWxwZXJfbmxtc2dfcGFyc2VfcGF5bG9hZChjb25zdCBzdAogIAl9CiAgCXJldHVybiAwOwogIH0KQEAgLTM4MCw2ICszODAsMyBAQAogIAogIC8qKgogICAqIEB9Ci0tLSAKLWNnaXQgdjEuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8wLjAuMjAxNzA4MTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8wLjAuMjAxNzEyMjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtbW9kdWxlXzAuMC4yMDE3MDgxMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC1tb2R1bGVfMC4wLjIwMTcxMjIxLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLXRvb2xzXzAuMC4yMDE3MDgxMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtdG9vbHNfMC4wLjIwMTcxMjIxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLXRvb2xzXzAuMC4yMDE3MDgxMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC10b29sc18wLjAuMjAxNzEyMjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC5pbmMKaW5kZXggZjM3ZDUyYi4uNmJkNTgxYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC5pbmMKQEAgLTExLDcgKzExLDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0Lnp4MmM0LmNvbS9XaXJlR3VhcmQvc25hcHNob3QvV2lyZUd1YXJkLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZGQzZTA4MDQwN2I4Mjk1YzI1NTY1YTg0N2E0Y2EyNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYjk2MjMwMzkwNjI1YWFkNmY0ODE2ZmEyM2FlZjZlOWY3ZmVlMTMwZjA4M2Q4Mzg5MTkxMjlmZjEyMDg5YmY3IgorU1JDX1VSSVttZDVzdW1dID0gIjM5YmI5OWZlMTEzNTY0MjNmYjFhYjQ1YWUyZDkzOGJiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJiOTc2OTdlOWIyNzFiYTg4MzZhMDQxMjBhMjg3YjgyNDY0ODEyNGYyMWQ1MzA5MTcwZWM1MWMxZjg2YWM1ZWQiCiAKIFMgPSAiJHtXT1JLRElSfS9XaXJlR3VhcmQtJHtQVn0vc3JjLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9maWxlcy9SZXBsYWNlLW11cm11cmhhc2gtYWxnb3JpdGhtLXdpdGgtUm9iZXJ0LUplbmtpbi1zLWhhLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvZnJlZWRpYW1ldGVyL2ZpbGVzL1JlcGxhY2UtbXVybXVyaGFzaC1hbGdvcml0aG0td2l0aC1Sb2JlcnQtSmVua2luLXMtaGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFhNWExYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9maWxlcy9SZXBsYWNlLW11cm11cmhhc2gtYWxnb3JpdGhtLXdpdGgtUm9iZXJ0LUplbmtpbi1zLWhhLnBhdGNoCkBAIC0wLDAgKzEsMjIzIEBACitSZXBsYWNlIG11cm11cmhhc2ggYWxnb3JpdGhtIHdpdGggUm9iZXJ0IEplbmtpbidzIGhhc2ggYWxnb3JpdGhtCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitGcm9tIHRlc3QgcmVzdWx0LCBtdXJtdXJoYXNoIGFsZ29yaXRobSBkb2VzIG5vdCB3b3JrIGluIGJpZyBlbmRpYW4KK3Byb2Nlc3Nvciwgc28gcmVwbGFjZSBpdCB3aXRoIFJvYmVydCBKZW5raW4ncyBoYXNoIHdoaWNoIGhhcyB3b3JrZWQKK2luIGxpbnV4IGtlcm5lbCBmb3IgbWFueSB5ZWFycyBhbmQgaGFzIG1vcmUgYWRhcHRhYmlsaXR5LgorCitTaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJmZHByb3RvL29zdHIuYyB8ICAxOTIgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgMTE4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZmRwcm90by9vc3RyLmMgYi9saWJmZHByb3RvL29zdHIuYworaW5kZXggOGYyOWI0OC4uY2UxZjRkZCAxMDA2NDQKKy0tLSBhL2xpYmZkcHJvdG8vb3N0ci5jCisrKysgYi9saWJmZHByb3RvL29zdHIuYworQEAgLTQzMCwxMjggKzQzMCw4NCBAQCBhZnRlcl9wcm90bzoKKyAKKyAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistLyogSGFzaCBmdW5jdGlvbiAtLSBjcmVkaXRzIHRvIEF1c3RpbiBBcHBsZWJ5LCB0aGFuayB5b3UgXl4gKi8KKy0vKiBTZWUgaHR0cDovL211cm11cmhhc2guZ29vZ2xlcGFnZXMuY29tIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgZnVuY3Rpb24gKi8KKy0KKy0vKiB0aGUgc3RyaW5ncyBhcmUgTk9UIGFsd2F5cyBhbGlnbmVkIHByb3Blcmx5IChleDogcmVjZWl2ZWQgaW4gUkFESVVTIG1lc3NhZ2UpLCBzbyB3ZSB1c2UgdGhlIGFsaWduZWQgTXVybXVySGFzaDIgZnVuY3Rpb24gYXMgbmVlZGVkICovCistI2RlZmluZSBfSEFTSF9NSVgoaCxrLG0pIHsgayAqPSBtOyBrIF49IGsgPj4gcjsgayAqPSBtOyBoICo9IG07IGggXj0gazsgfQorLXVpbnQzMl90IGZkX29zX2hhc2ggKCB1aW50OF90ICogc3RyaW5nLCBzaXplX3QgbGVuICkKKysvKgorKyAqIFJvYmVydCBKZW5raW4ncyBoYXNoIGZ1bmN0aW9uLgorKyAqIGh0dHA6Ly9idXJ0bGVidXJ0bGUubmV0L2JvYi9oYXNoL2V2YWhhc2guaHRtbAorKyAqIFRoaXMgaXMgaW4gdGhlIHB1YmxpYyBkb21haW4uCisrICovCisrI2RlZmluZSBtaXgoYSwgYiwgYykJCQkJCQlcCisrCWRvIHsJCQkJCQkJXAorKwkJYSA9IGEgLSBiOyAgYSA9IGEgLSBjOyAgYSA9IGEgXiAoYyA+PiAxMyk7CVwKKysJCWIgPSBiIC0gYzsgIGIgPSBiIC0gYTsgIGIgPSBiIF4gKGEgPDwgOCk7CVwKKysJCWMgPSBjIC0gYTsgIGMgPSBjIC0gYjsgIGMgPSBjIF4gKGIgPj4gMTMpOwlcCisrCQlhID0gYSAtIGI7ICBhID0gYSAtIGM7ICBhID0gYSBeIChjID4+IDEyKTsJXAorKwkJYiA9IGIgLSBjOyAgYiA9IGIgLSBhOyAgYiA9IGIgXiAoYSA8PCAxNik7CVwKKysJCWMgPSBjIC0gYTsgIGMgPSBjIC0gYjsgIGMgPSBjIF4gKGIgPj4gNSk7CVwKKysJCWEgPSBhIC0gYjsgIGEgPSBhIC0gYzsgIGEgPSBhIF4gKGMgPj4gMyk7CVwKKysJCWIgPSBiIC0gYzsgIGIgPSBiIC0gYTsgIGIgPSBiIF4gKGEgPDwgMTApOwlcCisrCQljID0gYyAtIGE7ICBjID0gYyAtIGI7ICBjID0gYyBeIChiID4+IDE1KTsJXAorKwl9IHdoaWxlICgwKQorKworK3Vuc2lnbmVkIGhhc2hfcmplbmtpbnMoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBsZW5ndGgpCisgeworLQl1aW50MzJfdCBoYXNoID0gbGVuOworLQl1aW50OF90ICogZGF0YSA9IHN0cmluZzsKKy0JCistCWNvbnN0IHVuc2lnbmVkIGludCBtID0gMHg1YmQxZTk5NTsKKy0JY29uc3QgaW50IHIgPSAyNDsKKy0JaW50IGFsaWduID0gKGxvbmcpc3RyaW5nICYgMzsKKy0JCistCWlmICghYWxpZ24gfHwgKGxlbiA8IDQpKSB7CistCQkvKiBJbiBjYXNlIGRhdGEgaXMgYWxpZ25lZCwgTXVybXVySGFzaDIgZnVuY3Rpb24gKi8KKy0JCXdoaWxlKGxlbiA+PSA0KQorLQkJeworLQkJCS8qIE1peCA0IGJ5dGVzIGF0IGEgdGltZSBpbnRvIHRoZSBoYXNoICovCistCQkJdWludDMyX3QgayA9ICoodWludDMyX3QgKilkYXRhOwkvKiBXZSBkb24ndCBjYXJlIGFib3V0IHRoZSBieXRlIG9yZGVyICovCistCistCQkJX0hBU0hfTUlYKGhhc2gsIGssIG0pOworLQorLQkJCWRhdGEgKz0gNDsKKy0JCQlsZW4gLT0gNDsKKy0JCX0KKy0KKy0JCS8qIEhhbmRsZSB0aGUgbGFzdCBmZXcgYnl0ZXMgb2YgdGhlIGlucHV0ICovCistCQlzd2l0Y2gobGVuKSB7CistCQkJY2FzZSAzOiBoYXNoIF49IGRhdGFbMl0gPDwgMTY7CistCQkJY2FzZSAyOiBoYXNoIF49IGRhdGFbMV0gPDwgODsKKy0JCQljYXNlIDE6IGhhc2ggXj0gZGF0YVswXTsKKy0JICAgICAgICAJCWhhc2ggKj0gbTsKKy0JCX0KKy0JCQorLQl9IGVsc2UgeworLQkJLyogVW5hbGlnbmVkIGRhdGEsIHVzZSBhbGlnbm1lbnQtc2FmZSBzbG93ZXIgdmVyc2lvbiAqLworLQkJCistCQkvKiBQcmUtbG9hZCB0aGUgdGVtcCByZWdpc3RlcnMgKi8KKy0JCXVpbnQzMl90IHQgPSAwLCBkID0gMDsKKy0JCXN3aXRjaChhbGlnbikKKy0JCXsKKy0JCQljYXNlIDE6IHQgfD0gZGF0YVsyXSA8PCAxNjsKKy0JCQljYXNlIDI6IHQgfD0gZGF0YVsxXSA8PCA4OworLQkJCWNhc2UgMzogdCB8PSBkYXRhWzBdOworLQkJfQorLQkJdCA8PD0gKDggKiBhbGlnbik7CistCistCQlkYXRhICs9IDQtYWxpZ247CistCQlsZW4gLT0gNC1hbGlnbjsKKy0JCQorLQkJLyogRnJvbSB0aGlzIHBvaW50LCAiZGF0YSIgY2FuIGJlIHJlYWQgYnkgY2h1bmtzIG9mIDQgYnl0ZXMgKi8KKy0JCQorLQkJaW50IHNsID0gOCAqICg0LWFsaWduKTsKKy0JCWludCBzciA9IDggKiBhbGlnbjsKKy0KKy0JCS8qIE1peCAqLworLQkJd2hpbGUobGVuID49IDQpCistCQl7CistCQkJdWludDMyX3QgazsKKy0JCQkKKy0JCQlkID0gKih1bnNpZ25lZCBpbnQgKilkYXRhOworLQkJCWsgPSAodCA+PiBzcikgfCAoZCA8PCBzbCk7CistCistCQkJX0hBU0hfTUlYKGhhc2gsIGssIG0pOworLQorLQkJCXQgPSBkOworLQorLQkJCWRhdGEgKz0gNDsKKy0JCQlsZW4gLT0gNDsKKy0JCX0KKy0KKy0JCS8qIEhhbmRsZSBsZWZ0b3ZlciBkYXRhIGluIHRlbXAgcmVnaXN0ZXJzICovCistCQlkID0gMDsKKy0JCWlmKGxlbiA+PSBhbGlnbikKKy0JCXsKKy0JCQl1aW50MzJfdCBrOworLQkJCQorLQkJCXN3aXRjaChhbGlnbikKKy0JCQl7CistCQkJY2FzZSAzOiBkIHw9IGRhdGFbMl0gPDwgMTY7CistCQkJY2FzZSAyOiBkIHw9IGRhdGFbMV0gPDwgODsKKy0JCQljYXNlIDE6IGQgfD0gZGF0YVswXTsKKy0JCQl9CistCistCQkJayA9ICh0ID4+IHNyKSB8IChkIDw8IHNsKTsKKy0JCQlfSEFTSF9NSVgoaGFzaCwgaywgbSk7CistCistCQkJZGF0YSArPSBhbGlnbjsKKy0JCQlsZW4gLT0gYWxpZ247CistCistCQkJLyogSGFuZGxlIHRhaWwgYnl0ZXMgKi8KKy0KKy0JCQlzd2l0Y2gobGVuKQorLQkJCXsKKy0JCQljYXNlIDM6IGhhc2ggXj0gZGF0YVsyXSA8PCAxNjsKKy0JCQljYXNlIDI6IGhhc2ggXj0gZGF0YVsxXSA8PCA4OworLQkJCWNhc2UgMTogaGFzaCBePSBkYXRhWzBdOworLQkJCQkJaGFzaCAqPSBtOworLQkJCX07CistCQl9CistCQllbHNlCistCQl7CistCQkJc3dpdGNoKGxlbikKKy0JCQl7CistCQkJY2FzZSAzOiBkIHw9IGRhdGFbMl0gPDwgMTY7CistCQkJY2FzZSAyOiBkIHw9IGRhdGFbMV0gPDwgODsKKy0JCQljYXNlIDE6IGQgfD0gZGF0YVswXTsKKy0JCQljYXNlIDA6IGhhc2ggXj0gKHQgPj4gc3IpIHwgKGQgPDwgc2wpOworLQkJCQkJaGFzaCAqPSBtOworLQkJCX0KKy0JCX0KKy0KKysJY29uc3QgdW5zaWduZWQgY2hhciAqayA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopc3RyOworKwl1aW50MzJfdCBhLCBiLCBjOyAgLyogdGhlIGludGVybmFsIHN0YXRlICovCisrCXVpbnQzMl90IGxlbjsgICAgICAvKiBob3cgbWFueSBrZXkgYnl0ZXMgc3RpbGwgbmVlZCBtaXhpbmcgKi8KKysKKysJLyogU2V0IHVwIHRoZSBpbnRlcm5hbCBzdGF0ZSAqLworKwlsZW4gPSBsZW5ndGg7CisrCWEgPSAweDllMzc3OWI5OyAgICAgIC8qIHRoZSBnb2xkZW4gcmF0aW87IGFuIGFyYml0cmFyeSB2YWx1ZSAqLworKwliID0gYTsKKysJYyA9IDA7ICAgICAgICAgICAgICAgLyogdmFyaWFibGUgaW5pdGlhbGl6YXRpb24gb2YgaW50ZXJuYWwgc3RhdGUgKi8KKysKKysJLyogaGFuZGxlIG1vc3Qgb2YgdGhlIGtleSAqLworKwl3aGlsZSAobGVuID49IDEyKSB7CisrCQlhID0gYSArIChrWzBdICsgKCh1aW50MzJfdClrWzFdIDw8IDgpICsgKCh1aW50MzJfdClrWzJdIDw8IDE2KSArCisrCQkJICgodWludDMyX3Qpa1szXSA8PCAyNCkpOworKwkJYiA9IGIgKyAoa1s0XSArICgodWludDMyX3Qpa1s1XSA8PCA4KSArICgodWludDMyX3Qpa1s2XSA8PCAxNikgKworKwkJCSAoKHVpbnQzMl90KWtbN10gPDwgMjQpKTsKKysJCWMgPSBjICsgKGtbOF0gKyAoKHVpbnQzMl90KWtbOV0gPDwgOCkgKyAoKHVpbnQzMl90KWtbMTBdIDw8IDE2KSArCisrCQkJICgodWludDMyX3Qpa1sxMV0gPDwgMjQpKTsKKysJCW1peChhLCBiLCBjKTsKKysJCWsgPSBrICsgMTI7CisrCQlsZW4gPSBsZW4gLSAxMjsKKysJfQorIAorKwkvKiBoYW5kbGUgdGhlIGxhc3QgMTEgYnl0ZXMgKi8KKysJYyA9IGMgKyBsZW5ndGg7CisrCXN3aXRjaCAobGVuKSB7ICAgICAgICAgICAgLyogYWxsIHRoZSBjYXNlIHN0YXRlbWVudHMgZmFsbCB0aHJvdWdoICovCisrCWNhc2UgMTE6CisrCQljID0gYyArICgodWludDMyX3Qpa1sxMF0gPDwgMjQpOworKwljYXNlIDEwOgorKwkJYyA9IGMgKyAoKHVpbnQzMl90KWtbOV0gPDwgMTYpOworKwljYXNlIDk6CisrCQljID0gYyArICgodWludDMyX3Qpa1s4XSA8PCA4KTsKKysJCS8qIHRoZSBmaXJzdCBieXRlIG9mIGMgaXMgcmVzZXJ2ZWQgZm9yIHRoZSBsZW5ndGggKi8KKysJY2FzZSA4OgorKwkJYiA9IGIgKyAoKHVpbnQzMl90KWtbN10gPDwgMjQpOworKwljYXNlIDc6CisrCQliID0gYiArICgodWludDMyX3Qpa1s2XSA8PCAxNik7CisrCWNhc2UgNjoKKysJCWIgPSBiICsgKCh1aW50MzJfdClrWzVdIDw8IDgpOworKwljYXNlIDU6CisrCQliID0gYiArIGtbNF07CisrCWNhc2UgNDoKKysJCWEgPSBhICsgKCh1aW50MzJfdClrWzNdIDw8IDI0KTsKKysJY2FzZSAzOgorKwkJYSA9IGEgKyAoKHVpbnQzMl90KWtbMl0gPDwgMTYpOworKwljYXNlIDI6CisrCQlhID0gYSArICgodWludDMyX3Qpa1sxXSA8PCA4KTsKKysJY2FzZSAxOgorKwkJYSA9IGEgKyBrWzBdOworKwkJLyogY2FzZSAwOiBub3RoaW5nIGxlZnQgdG8gYWRkICovCisgCX0KKysJbWl4KGEsIGIsIGMpOworIAorLQkvKiBEbyBhIGZldyBmaW5hbCBtaXhlcyBvZiB0aGUgaGFzaCB0byBlbnN1cmUgdGhlIGxhc3QgZmV3CistCSAgIGJ5dGVzIGFyZSB3ZWxsLWluY29ycG9yYXRlZC4gKi8KKy0JaGFzaCBePSBoYXNoID4+IDEzOworLQloYXNoICo9IG07CistCWhhc2ggXj0gaGFzaCA+PiAxNTsKKysJcmV0dXJuIGM7CisrfQorIAorLQlyZXR1cm4gaGFzaDsKKyt1aW50MzJfdCBmZF9vc19oYXNoICggdWludDhfdCAqIHN0cmluZywgc2l6ZV90IGxlbiApCisreworKwlyZXR1cm4gaGFzaF9yamVua2lucyhzdHJpbmcsIGxlbik7IAorIH0gCisgCistLSAKKzEuNy4xMC40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9maWxlcy9mcmVlRGlhbWV0ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9maWxlcy9mcmVlRGlhbWV0ZXIuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjU2ZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvZnJlZWRpYW1ldGVyL2ZpbGVzL2ZyZWVEaWFtZXRlci5jb25mCkBAIC0wLDAgKzEsMjUwIEBACisjIFRoaXMgaXMgYSBzYW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBmcmVlRGlhbWV0ZXIgZGFlbW9uLgorCisjIE1vc3Qgb2YgdGhlIG9wdGlvbnMgY2FuIGJlIG9taXR0ZWQsIGFzIHRoZXkgZGVmYXVsdCB0byByZWFzb25hYmxlIHZhbHVlcy4KKyMgT25seSBUTFMtcmVsYXRlZCBvcHRpb25zIG11c3QgYmUgY29uZmlndXJlZCBwcm9wZXJseSBpbiB1c3VhbCBzZXR1cHMuCisKKyMgSXQgaXMgcG9zc2libGUgdG8gdXNlICJpbmNsdWRlIiBrZXl3b3JkIHRvIGltcG9ydCBhZGRpdGlvbmFsIGZpbGVzCisjIGUuZy46IGluY2x1ZGUgIi9ldGMvZnJlZURpYW1ldGVyLmQvKi5jb25mIgorIyBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCBhcyBjb3B5ICYgcGFzdGUgdGhlIGNvbnRlbnQgb2YgdGhlIGluY2x1ZGVkIGZpbGUocykgCisjIHdoZXJlIHRoZSAiaW5jbHVkZSIga2V5d29yZCBpcyBmb3VuZC4KKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMgIFBlZXIgaWRlbnRpdHkgYW5kIHJlYWxtIAorCisjIFRoZSBEaWFtZXRlciBJZGVudGl0eSBvZiB0aGlzIGRhZW1vbi4KKyMgVGhpcyBtdXN0IGJlIGEgdmFsaWQgRlFETiB0aGF0IHJlc29sdmVzIHRvIHRoZSBsb2NhbCBob3N0LgorIyBEZWZhdWx0OiBob3N0bmFtZSdzIEZRRE4KKyNJZGVudGl0eSA9ICJhYWEua29nYW5laS5mcmVlZGlhbWV0ZXIubmV0IjsKKworIyBUaGUgRGlhbWV0ZXIgUmVhbG0gb2YgdGhpcyBkYWVtb24uCisjIERlZmF1bHQ6IHRoZSBkb21haW4gcGFydCBvZiBJZGVudGl0eSAoYWZ0ZXIgdGhlIGZpcnN0IGRvdCkuCisjUmVhbG0gPSAia29nYW5laS5mcmVlZGlhbWV0ZXIubmV0IjsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjICBUcmFuc3BvcnQgcHJvdG9jb2wgY29uZmlndXJhdGlvbgorCisjIFRoZSBwb3J0IHRoaXMgcGVlciBpcyBsaXN0ZW5pbmcgb24gZm9yIGluY29taW5nIGNvbm5lY3Rpb25zIChUQ1AgYW5kIFNDVFApLgorIyBEZWZhdWx0OiAzODY4LiBVc2UgMCB0byBkaXNhYmxlLgorI1BvcnQgPSAzODY4OworCisjIFRoZSBwb3J0IHRoaXMgcGVlciBpcyBsaXN0ZW5pbmcgb24gZm9yIGluY29taW5nIFRMUy1wcm90ZWN0ZWQgY29ubmVjdGlvbnMgKFRDUCBhbmQgU0NUUCkuCisjIFNlZSBUTFNfb2xkX21ldGhvZCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBUTFMgZmxhdm91cnMuCisjIE5vdGU6IHdlIHVzZSBUTFMvU0NUUCBpbnN0ZWFkIG9mIERUTFMvU0NUUCBhdCB0aGUgbW9tZW50LiBUaGlzIHdpbGwgY2hhbmdlIGluIGZ1dHVyZSB2ZXJzaW9uIG9mIGZyZWVEaWFtZXRlci4KKyMgRGVmYXVsdDogNTg2OC4gVXNlIDAgdG8gZGlzYWJsZS4KKyNTZWNQb3J0ID0gNTg2ODsKKworIyBVc2UgUkZDMzU4OCBtZXRob2QgZm9yIFRMUyBwcm90ZWN0aW9uLCB3aGVyZSBUTFMgaXMgbmVnb2NpYXRlZCBhZnRlciBDRVIvQ0VBIGV4Y2hhbmdlIGlzIGNvbXBsZXRlZCAKKyMgb24gdGhlIHVuc2VjdXJlIGNvbm5lY3Rpb24uIFRoZSBhbHRlcm5hdGl2ZSBpcyBSRkM2NzMzIG1lY2hhbmlzbSwgd2hlcmUgVExTIHByb3RlY3RzIGFsc28gdGhlIAorIyBDRVIvQ0VBIGV4Y2hhbmdlIG9uIGEgZGVkaWNhdGVkIHNlY3VyZSBwb3J0LgorIyBUaGlzIHBhcmFtZXRlciBvbmx5IGFmZmVjdHMgb3V0Z29pbmcgY29ubmVjdGlvbnMuIAorIyBUaGUgc2V0dGluZyBjYW4gYmUgYWxzbyBkZWZpbmVkIHBlci1wZWVyIChzZWUgUGVlcnMgY29uZmlndXJhdGlvbiBzZWN0aW9uKS4KKyMgRGVmYXVsdDogdXNlIFJGQzY3MzMgbWV0aG9kIHdpdGggc2VwYXJhdGUgcG9ydCBmb3IgVExTLgorI1RMU19vbGRfbWV0aG9kOworCisjIERpc2FibGUgdXNlIG9mIFRDUCBwcm90b2NvbCAob25seSBsaXN0ZW4gYW5kIGNvbm5lY3Qgb3ZlciBTQ1RQKQorIyBEZWZhdWx0IDogVENQIGVuYWJsZWQKKyNOb19UQ1A7CisKKyMgRGlzYWJsZSB1c2Ugb2YgU0NUUCBwcm90b2NvbCAob25seSBsaXN0ZW4gYW5kIGNvbm5lY3Qgb3ZlciBUQ1ApCisjIERlZmF1bHQgOiBTQ1RQIGVuYWJsZWQKKyNOb19TQ1RQOworIyBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIGZyZWVEaWFtZXRlciBpcyBjb21waWxlZCB3aXRoIERJU0FCTEVfU0NUUCBvcHRpb24uCisKKyMgUHJlZmVyIFRDUCBpbnN0ZWFkIG9mIFNDVFAgZm9yIGVzdGFibGlzaGluZyBuZXcgY29ubmVjdGlvbnMuCisjIFRoaXMgc2V0dGluZyBtYXkgYmUgb3ZlcndyaXR0ZW4gcGVyIHBlZXIgaW4gcGVlciBjb25maWd1cmF0aW9uIGJsb2NzLgorIyBEZWZhdWx0IDogU0NUUCBpcyBhdHRlbXB0ZWQgZmlyc3QuCisjUHJlZmVyX1RDUDsKKworIyBEZWZhdWx0IG51bWJlciBvZiBzdHJlYW1zIHBlciBTQ1RQIGFzc29jaWF0aW9ucy4KKyMgVGhpcyBzZXR0aW5nIG1heSBiZSBvdmVyd3JpdHRlbiBwZXIgcGVlciBiYXNpcy4KKyMgRGVmYXVsdCA6IDMwIHN0cmVhbXMKKyNTQ1RQX3N0cmVhbXMgPSAzMDsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjICBFbmRwb2ludCBjb25maWd1cmF0aW9uCisKKyMgRGlzYWJsZSB1c2Ugb2YgSVAgYWRkcmVzc2VzIChvbmx5IElQdjYpCisjIERlZmF1bHQgOiBJUCBlbmFibGVkCisjTm9fSVA7CisKKyMgRGlzYWJsZSB1c2Ugb2YgSVB2NiBhZGRyZXNzZXMgKG9ubHkgSVApCisjIERlZmF1bHQgOiBJUHY2IGVuYWJsZWQKKyNOb19JUHY2OworCisjIFNwZWNpZnkgbG9jYWwgYWRkcmVzc2VzIHRoZSBzZXJ2ZXIgbXVzdCBiaW5kIHRvCisjIERlZmF1bHQgOiBsaXN0ZW4gb24gYWxsIGFkZHJlc3NlcyBhdmFpbGFibGUuCisjTGlzdGVuT24gPSAiMjAyLjI0OS4zNy41IjsKKyNMaXN0ZW5PbiA9ICIyMDAxOjIwMDo5MDM6Mjo6MjAyOjEiOworI0xpc3Rlbk9uID0gImZlODA6OjIxYzo1ZmY6ZmU5ODo3ZDYyJWV0aDAiOworCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyAgU2VydmVyIGNvbmZpZ3VyYXRpb24KKworIyBIb3cgbWFueSBEaWFtZXRlciBwZWVycyBhcmUgYWxsb3dlZCB0byBiZSBjb25uZWN0aW5nIGF0IHRoZSBzYW1lIHRpbWUgPworIyBUaGlzIHBhcmFtZXRlciBsaW1pdHMgdGhlIG51bWJlciBvZiBpbmNvbWluZyBjb25uZWN0aW9ucyBmcm9tIHRoZSB0aW1lCisjIHRoZSBjb25uZWN0aW9uIGlzIGFjY2VwdGVkIHVudGlsIHRoZSBmaXJzdCBDRVIgaXMgcmVjZWl2ZWQuCisjIERlZmF1bHQ6IDUgdW5pZGVudGlmaWVkIGNsaWVudHMgaW4gcGFyYWxlbC4KKyNUaHJlYWRzUGVyU2VydmVyID0gNTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjICBUTFMgQ29uZmlndXJhdGlvbgorCisjIFRMUyBpcyBtYW5hZ2VkIGJ5IHRoZSBHTlVUTFMgbGlicmFyeSBpbiB0aGUgZnJlZURpYW1ldGVyIGRhZW1vbi4KKyMgWW91IG1heSBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcGFyYW1ldGVycyBhbmQgc3BlY2lhbCBiZWhhdmlvcnMKKyMgaW4gdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24uCisjIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbnV0bHMvbWFudWFsLworCisjIENyZWRlbnRpYWxzIG9mIHRoZSBsb2NhbCBwZWVyCisjIFRoZSBYNTA5IGNlcnRpZmljYXRlIGFuZCBwcml2YXRlIGtleSBmaWxlIHRvIHVzZSBmb3IgdGhlIGxvY2FsIHBlZXIuCisjIFRoZSBmaWxlcyBtdXN0IGNvbnRhaW4gUEtDUy0xIGVuY29kZWQgUlNBIGtleSwgaW4gUEVNIGZvcm1hdC4KKyMgKFRoZXNlIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCB0byBnbnV0bHNfY2VydGlmaWNhdGVfc2V0X3g1MDlfa2V5X2ZpbGUgZnVuY3Rpb24pCisjIERlZmF1bHQgOiBOTyBERUZBVUxUCisjVExTX0NyZWQgPSAiPHg1MDkgY2VydGlmIGZpbGUuUEVNPiIgLCAiPHg1MDkgcHJpdmF0ZSBrZXkgZmlsZS5QRU0+IjsKKyNUTFNfQ3JlZCA9ICIvZXRjL3NzbC9jZXJ0cy9mcmVlRGlhbWV0ZXIucGVtIiwgIi9ldGMvc3NsL3ByaXZhdGUvZnJlZURpYW1ldGVyLmtleSI7CisKKyMgQ2VydGlmaWNhdGUgYXV0aG9yaXR5IC8gdHJ1c3QgYW5jaG9ycworIyBUaGUgZmlsZSBjb250YWluaW5nIHRoZSBsaXN0IG9mIHRydXN0ZWQgQ2VydGlmaWNhdGUgQXV0aG9yaXRpZXMgKFBFTSBsaXN0KQorIyAoVGhpcyBwYXJhbWV0ZXIgaXMgcGFzc2VkIHRvIGdudXRsc19jZXJ0aWZpY2F0ZV9zZXRfeDUwOV90cnVzdF9maWxlIGZ1bmN0aW9uKQorIyBUaGUgZGlyZWN0aXZlIGNhbiBhcHBlYXIgc2V2ZXJhbCB0aW1lcyB0byBzcGVjaWZ5IHNldmVyYWwgZmlsZXMuCisjIERlZmF1bHQgOiBHTlVUTFMgZGVmYXVsdCBiZWhhdmlvcgorI1RMU19DQSA9ICI8ZmlsZS5QRU0+IjsKKworIyBDZXJ0aWZpY2F0ZSBSZXZvY2F0aW9uIExpc3QgZmlsZQorIyBUaGUgaW5mb3JtYXRpb24gYWJvdXQgcmV2b2tlZCBjZXJ0aWZpY2F0ZXMuCisjIFRoZSBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiB0cnVzdGVkIENSTHMgaW4gUEVNIGZvcm1hdC4gVGhleSBzaG91bGQgaGF2ZSBiZWVuIHZlcmlmaWVkIGJlZm9yZS4gCisjIChUaGlzIHBhcmFtZXRlciBpcyBwYXNzZWQgdG8gZ251dGxzX2NlcnRpZmljYXRlX3NldF94NTA5X2NybF9maWxlIGZ1bmN0aW9uKQorIyBOb3RlOiBvcGVuc3NsIENSTCBmb3JtYXQgbWlnaHQgaGF2ZSBpbnRlcm9wZXJhYmlsaXR5IGlzc3VlIHdpdGggR05VVExTIGZvcm1hdC4KKyMgRGVmYXVsdCA6IEdOVVRMUyBkZWZhdWx0IGJlaGF2aW9yCisjVExTX0NSTCA9ICI8ZmlsZS5QRU0+IjsKKworIyBHTlUgVExTIFByaW9yaXR5IHN0cmluZworIyBUaGlzIHN0cmluZyBhbGxvd3MgdG8gY29uZmlndXJlIHRoZSBiZWhhdmlvciBvZiBHTlVUTFMga2V5IGV4Y2hhbmdlcyAKKyMgYWxnb3JpdGhtcy4gU2VlIGdudXRsc19wcmlvcml0eV9pbml0IGZ1bmN0aW9uIGRvY3VtZW50YXRpb24gZm9yIGluZm9ybWF0aW9uLgorIyBZb3Ugc2hvdWxkIGFsc28gcmVmZXIgdG8gdGhlIERpYW1ldGVyIHJlcXVpcmVkIFRMUyBzdXBwb3J0IGhlcmU6CisjICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjczMyNzZWN0aW9uLTEzLjEKKyMgRGVmYXVsdCA6ICJOT1JNQUwiCisjIEV4YW1wbGU6IFRMU19QcmlvID0gIk5PTkU6K1ZFUlMtVExTMS4xOitBRVMtMTI4LUNCQzorUlNBOitTSEExOitDT01QLU5VTEwiOworI1RMU19QcmlvID0gIk5PUk1BTCI7CisKKyMgRGlmZmllLUhlbGxtYW4gcGFyYW1ldGVycyBzaXplCisjIFNldCB0aGUgbnVtYmVyIG9mIGJpdHMgZm9yIGdlbmVyYXRlZCBESCBwYXJhbWV0ZXJzCisjIFZhbGlkIHZhbHVlIHNob3VsZCBiZSA3NjgsIDEwMjQsIDIwNDgsIDMwNzIgb3IgNDA5Ni4KKyMgKFRoaXMgcGFyYW1ldGVyIGlzIHBhc3NlZCB0byBnbnV0bHNfZGhfcGFyYW1zX2dlbmVyYXRlMiBmdW5jdGlvbiwgCisjIGl0IHVzdWFsbHkgc2hvdWxkIG1hdGNoIFJTQSBrZXkgc2l6ZSkKKyMgRGVmYXVsdCA6IDEwMjQKKyNUTFNfREhfQml0cyA9IDEwMjQ7CisKKyMgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBzcGVjaWZ5IGEgZmlsZSB0byBsb2FkIHRoZSBQS0NTIzMgZW5jb2RlZAorIyBESCBwYXJhbWV0ZXJzIGRpcmVjdGx5IGZyb20uIFRoaXMgYWNjZWxlcmF0ZXMgdGhlIGRhZW1vbiBzdGFydCAKKyMgYnV0IGlzIHNsaWdodGx5IGxlc3Mgc2VjdXJlLiBJZiB0aGlzIGZpbGUgaXMgcHJvdmlkZWQsIHRoZQorIyBUTFNfREhfQml0cyBwYXJhbWV0ZXJzIGhhcyBubyBlZmZlY3QuCisjIERlZmF1bHQgOiBubyBkZWZhdWx0LgorI1RMU19ESF9GaWxlID0gIjxmaWxlLlBFTT4iOworCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyAgVGltZXJzIGNvbmZpZ3VyYXRpb24KKworIyBUaGUgVGMgdGltZXIgb2YgdGhpcyBwZWVyLgorIyBJdCBpcyB0aGUgZGVsYXkgYmVmb3JlIGEgbmV3IGF0dGVtcHQgaXMgbWFkZSB0byByZWNvbm5lY3QgYSBkaXNjb25uZWN0ZWQgcGVlci4KKyMgVGhlIHZhbHVlIGlzIGV4cHJlc3NlZCBpbiBzZWNvbmRzLiBUaGUgcmVjb21tZW5kZWQgdmFsdWUgaXMgMzAgc2Vjb25kcy4KKyMgRGVmYXVsdDogMzAKKyNUY1RpbWVyID0gMzA7CisKKyMgVGhlIFR3IHRpbWVyIG9mIHRoaXMgcGVlci4KKyMgSXQgaXMgdGhlIGRlbGF5IGJlZm9yZSBhIHdhdGNoZG9nIG1lc3NhZ2UgaXMgc2VudCwgYXMgZGVzY3JpYmVkIGluIFJGQyAzNTM5LgorIyBUaGUgdmFsdWUgaXMgZXhwcmVzc2VkIGluIHNlY29uZHMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDMwIHNlY29uZHMuIFZhbHVlIG11c3QKKyMgYmUgZ3JlYXRlciBvciBlcXVhbCB0byA2IHNlY29uZHMuIFNlZSBkZXRhaWxzIGluIHRoZSBSRkMuCisjIERlZmF1bHQ6IDMwCisjVHdUaW1lciA9IDMwOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMgIEFwcGxpY2F0aW9ucyBjb25maWd1cmF0aW9uCisKKyMgRGlzYWJsZSB0aGUgcmVsYXlpbmcgb2YgRGlhbWV0ZXIgbWVzc2FnZXM/CisjIEZvciBtZXNzYWdlcyBub3QgaGFuZGxlZCBsb2NhbGx5LCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBmb3J3YXJkIHRoZQorIyBtZXNzYWdlIHRvIGFub3RoZXIgcGVlciBpZiBhbnkgaXMgYXZhaWxhYmxlLCBhY2NvcmRpbmcgdG8gdGhlIHJvdXRpbmcgCisjIGFsZ29yaXRobXMuIEluIGFkZGl0aW9uIHRoZSAiMHhmZmZmZmYiIGFwcGxpY2F0aW9uIGlzIGFkdmVydGlzZWQgaW4gQ0VSL0NFQSAKKyMgZXhjaGFuZ2VzLgorIyBEZWZhdWx0OiBSZWxheWluZyBpcyBlbmFibGVkLgorI05vUmVsYXk7CisKKyMgTnVtYmVyIG9mIHNlcnZlciB0aHJlYWRzIHRoYXQgY2FuIGhhbmRsZSBpbmNvbWluZyBtZXNzYWdlcyBhdCB0aGUgc2FtZSB0aW1lLgorIyBEZWZhdWx0OiA0CisjQXBwU2VydlRocmVhZHMgPSA0OworCisjIE90aGVyIGFwcGxpY2F0aW9ucyBhcmUgY29uZmlndXJlZCBieSBsb2FkZWQgZXh0ZW5zaW9ucy4KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjICBFeHRlbnNpb25zIGNvbmZpZ3VyYXRpb24KKworIyAgVGhlIGZyZWVEaWFtZXRlciBmcmFtZXdvcmsgbWVyZWx5IHByb3ZpZGVzIHN1cHBvcnQgZm9yCisjIERpYW1ldGVyIEJhc2UgUHJvdG9jb2wuIFRoZSBzcGVjaWZpYyBhcHBsaWNhdGlvbiBiZWhhdmlvcnMsCisjIGFzIHdlbGwgYXMgYWR2YW5jZWQgZnVuY3Rpb25zLCBhcmUgcHJvdmlkZWQKKyMgYnkgbG9hZGFibGUgZXh0ZW5zaW9ucyAocGx1Zy1pbnMpLgorIyAgVGhlc2UgZXh0ZW5zaW9ucyBtYXkgaW4gYWRkaXRpb24gcmVjZWl2ZSB0aGUgbmFtZSBvZiBhIAorIyBjb25maWd1cmF0aW9uIGZpbGUsIHRoZSBmb3JtYXQgb2Ygd2hpY2ggaXMgZXh0ZW5zaW9uLXNwZWNpZmljLgorIworIyBGb3JtYXQ6CisjTG9hZEV4dGVuc2lvbiA9ICIvcGF0aC90by9leHRlbnNpb24iIFsgOiAiL29wdGlvbmFsL2NvbmZpZ3VyYXRpb24vZmlsZSIgXSA7CisjCisjIEV4YW1wbGVzOgorI0xvYWRFeHRlbnNpb24gPSAiZXh0ZW5zaW9ucy9zYW1wbGUuZmR4IjsKKyNMb2FkRXh0ZW5zaW9uID0gImV4dGVuc2lvbnMvc2FtcGxlLmZkeCI6ImNvbmYvc2FtcGxlLmNvbmYiOworCisjIEV4dGVuc2lvbnMgYXJlIG5hbWVkIGFzIGZvbGxvdzoKKyMgZGljdF8qIGZvciBleHRlbnNpb25zIHRoYXQgYWRkIGNvbnRlbnQgdG8gdGhlIGRpY3Rpb25hcnkgZGVmaW5pdGlvbnMuCisjIGRiZ18qICBmb3IgZXh0ZW5zaW9ucyB1c2VmdWwgb25seSB0byByZXRyaWV2ZSBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBmcmFtZXdvcmsgZXhlY3V0aW9uLgorIyBhY2xfKiAgOiBBY2Nlc3MgY29udHJvbCBsaXN0LCB0byBjb250cm9sIHdoaWNoIHBlZXJzIGFyZSBhbGxvd2VkIHRvIGNvbm5lY3QuCisjIHJ0XyogICA6IHJvdXRpbmcgZXh0ZW5zaW9ucyB0aGF0IGltcGFjdCBob3cgbWVzc2FnZXMgYXJlIGZvcndhcmRlZCB0byBvdGhlciBwZWVycy4KKyMgYXBwXyogIDogYXBwbGljYXRpb25zLCB0aGVzZSBleHRlbnNpb25zIHVzdWFsbHkgcmVnaXN0ZXIgY2FsbGJhY2tzIHRvIGhhbmRsZSBzcGVjaWZpYyBtZXNzYWdlcy4KKyMgdGVzdF8qIDogZHVtbXkgZXh0ZW5zaW9ucyB0aGF0IGFyZSB1c2VmdWwgb25seSBpbiB0ZXN0aW5nIGVudmlyb25tZW50cy4KKworCisjIFRoZSBkYmdfbXNnX2R1bXAuZmR4IGV4dGVuc2lvbiBhbGxvd3MgeW91IHRvIHR3ZWFrIHRoZSB3YXkgZnJlZURpYW1ldGVyIGRpc3BsYXlzIHNvbWUKKyMgaW5mb3JtYXRpb24gYWJvdXQgc29tZSBldmVudHMuIFRoaXMgZXh0ZW5zaW9uIGRvZXMgbm90IGFjdHVhbGx5IHVzZSBhIGNvbmZpZ3VyYXRpb24gZmlsZQorIyBidXQgcmVjZWl2ZXMgZGlyZWN0bHkgYSBwYXJhbWV0ZXIgaW4gdGhlIHN0cmluZyBwYXNzZWQgdG8gdGhlIGV4dGVuc2lvbi4gSGVyZSBhcmUgc29tZSBleGFtcGxlczoKKyMjIExvYWRFeHRlbnNpb24gPSAiZGJnX21zZ19kdW1wcy5mZHgiIDogIjB4MTExMSI7ICMgUmVtb3ZlcyBhbGwgZGVmYXVsdCBob29rcywgdmVyeSBxdWlldCBldmVuIGluIGNhc2Ugb2YgZXJyb3JzLgorIyMgTG9hZEV4dGVuc2lvbiA9ICJkYmdfbXNnX2R1bXBzLmZkeCIgOiAiMHgyMjIyIjsgIyBEaXNwbGF5IGFsbCBldmVudHMgd2l0aCBmZXcgZGV0YWlscy4KKyMjIExvYWRFeHRlbnNpb24gPSAiZGJnX21zZ19kdW1wcy5mZHgiIDogIjB4MDA4MCI7ICMgRHVtcCBjb21wbGV0ZSBpbmZvcm1hdGlvbiBhYm91dCBzZW50IGFuZCByZWNlaXZlZCBtZXNzYWdlcy4KKyMgVGhlIGZvdXIgZGlnaXRzIHJlc3BlY3RpdmVseSBjb250cm9sOiBjb25uZWN0aW9ucywgcm91dGluZyBkZWNpc2lvbnMsIHNlbnQvcmVjZWl2ZWQgbWVzc2FnZXMsIGVycm9ycy4KKyMgVGhlIHZhbHVlcyBmb3IgZWFjaCBkaWdpdCBhcmU6CisjICAwIC0gZGVmYXVsdCAtIGtlZXAgdGhlIGRlZmF1bHQgYmVoYXZpb3IKKyMgIDEgLSBxdWlldCAgIC0gcmVtb3ZlIGFueSBzcGVjaWZpYyBsb2cKKyMgIDIgLSBjb21wYWN0IC0gZGlzcGxheSBvbmx5IGEgc3VtbWFyeSBvZiB0aGUgaW5mb3JtYXRpb24KKyMgIDQgLSBmdWxsICAgIC0gZGlzcGxheSB0aGUgY29tcGxldGUgaW5mb3JtYXRpb24gb24gYSBzaW5nbGUgbG9uZyBsaW5lCisjICA4IC0gdHJlZSAgICAtIGRpc3BsYXkgdGhlIGNvbXBsZXRlIGluZm9ybWF0aW9uIGluIGFuIGVhc2llciB0byByZWFkIGZvcm1hdCBzcGFubmluZyBzZXZlcmFsIGxpbmVzLgorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyAgUGVlcnMgY29uZmlndXJhdGlvbgorCisjICBUaGUgbG9jYWwgc2VydmVyIGxpc3RlbnMgZm9yIGluY29taW5nIGNvbm5lY3Rpb25zLiBCeSBkZWZhdWx0LAorIyBhbGwgdW5rbm93biBjb25uZWN0aW5nIHBlZXJzIGFyZSByZWplY3RlZC4gRXh0ZW5zaW9ucyBjYW4gb3ZlcnJpZGUgdGhpcyBiZWhhdmlvciAoZS5nLiwgYWNsX3dsKS4KKyMgCisjICBJbiBhZGRpdGlvbiB0byBpbmNvbWluZyBjb25uZWN0aW9ucywgdGhlIGxvY2FsIHBlZXIgY2FuCisjIGJlIGNvbmZpZ3VyZWQgdG8gZXN0YWJsaXNoIGFuZCBtYWludGFpbiBjb25uZWN0aW9ucyB0byBzb21lIAorIyBEaWFtZXRlciBub2RlcyBhbmQgYWxsb3cgY29ubmVjdGlvbnMgZnJvbSB0aGVzZSBub2Rlcy4KKyMgIFRoaXMgaXMgYWNoaWV2ZWQgd2l0aCB0aGUgQ29ubmVjdFBlZXIgZGlyZWN0aXZlIGRlc2NyaWJlZCBiZWxvdy4KKyMKKyMgTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIERpYW1ldGVyIElkZW50aXR5IE1VU1QgbWF0Y2gKKyMgdGhlIGluZm9ybWF0aW9uIHJlY2VpdmVkIGluc2lkZSBDRUEsIG9yIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgYWJvcnRlZC4KKyMKKyMgRm9ybWF0OgorI0Nvbm5lY3RQZWVyID0gImRpYW1ldGVyaWQiIFsgeyBwYXJhbWV0ZXIxOyBwYXJhbWV0ZXIyOyAuLi59IF0gOworIyBQYXJhbWV0ZXJzIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgcGVlcidzIHBhcmFtZXRlciBsaXN0OgorIyAgTm9fVENQOyBOb19TQ1RQOyBOb19JUDsgTm9fSVB2NjsgUHJlZmVyX1RDUDsgVExTX29sZF9tZXRob2Q7CisjICBOb19UTFM7ICAgICAgICMgYXNzdW1lIHRyYW5zcGFyZW50IHNlY3VyaXR5IGluc3RlYWQgb2YgVExTLiBEVExTIGlzIG5vdCBzdXBwb3J0ZWQgeWV0ICh3aWxsIGNoYW5nZSBpbiBmdXR1cmUgdmVyc2lvbnMpLgorIyAgUG9ydCA9IDU4Njg7ICAjIFRoZSBwb3J0IHRvIGNvbm5lY3QgdG8KKyMgIFRjVGltZXIgPSAzMDsKKyMgIFR3VGltZXIgPSAzMDsKKyMgIENvbm5lY3RUbyA9ICIyMDIuMjQ5LjM3LjUiOworIyAgQ29ubmVjdFRvID0gIjIwMDE6MjAwOjkwMzoyOjoyMDI6MSI7CisjICBUTFNfUHJpbyA9ICJOT1JNQUwiOworIyAgUmVhbG0gPSAicmVhbG0ubmV0IjsgIyBSZWplY3QgdGhlIHBlZXIgaWYgaXQgZG9lcyBub3QgYWR2ZXJ0aXNlIHRoaXMgcmVhbG0uCisjIEV4YW1wbGVzOgorI0Nvbm5lY3RQZWVyID0gImFhYS53aWRlLmFkLmpwIjsKKyNDb25uZWN0UGVlciA9ICJvbGQuZGlhbWV0ZXIuc2VydiIgeyBUY1RpbWVyID0gNjA7IFRMU19vbGRfbWV0aG9kOyBOb19TQ1RQOyBQb3J0PTM4Njg7IH0gOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9maWxlcy9mcmVlZGlhbWV0ZXIuaW5pdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9maWxlcy9mcmVlZGlhbWV0ZXIuaW5pdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNjNhNDJhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvZnJlZWRpYW1ldGVyL2ZpbGVzL2ZyZWVkaWFtZXRlci5pbml0CkBAIC0wLDAgKzEsNzIgQEAKKyMhL2Jpbi9zaAorIworIyMjIEJFR0lOIElOSVQgSU5GTworIyBQcm92aWRlczogICAgICAgICAgZnJlZWRpYW1ldGVyCisjIERlZmF1bHQtU3RhcnQ6ICAgICAyIDMgNCA1CisjIERlZmF1bHQtU3RvcDogICAgICAwIDEgNgorIyBSZXF1aXJlZC1TdGFydDogICAgJHJlbW90ZV9mcyAkc3lzbG9nCisjIFJlcXVpcmVkLVN0b3A6ICAgICAkcmVtb3RlX2ZzICRzeXNsb2cKKyMgU2hvcnQtRGVzY3JpcHRpb246IFN0YXJ0IGZyZWVEaWFtZXRlciBkYWVtb24gYXQgYm9vdCB0aW1lCisjIERlc2NyaXB0aW9uOiAgICAgICBTdGFydCB0aGUgZnJlZURpYW1ldGVyIGRhZW1vbiBhdCBib290IHRpbWUuCisjICAgICAgIGZyZWVEaWFtZXRlciBpcyBhbiBleHRlbnNpYmxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBEaWFtZXRlciBwcm90b2NvbCwKKyMgICAgICAgZGVzaWduZWQgZm9yIEF1dGhlbnRpY2F0aW9uLCBBdXRob3JpemF0aW9uIGFuZCBBY2NvdW50aW5nLiBEaWFtZXRlciBpcworIyAgICAgICBhbiBldm9sdXRpb24gb2YgdGhlIFJBRElVUyBwcm90b2NvbC4KKyMjIyBFTkQgSU5JVCBJTkZPIworREFFTU9OPS91c3IvYmluL2ZyZWVEaWFtZXRlcmQKK0NPTkY9L2V0Yy9mcmVlRGlhbWV0ZXIvZnJlZURpYW1ldGVyLmNvbmYKK05BTUU9ZnJlZWRpYW1ldGVyCitERVNDPSJmcmVlRGlhbWV0ZXIgZGFlbW9uIgorCisuIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucworc3RhcnQoKSB7CisJWyAteCAkREFFTU9OIF0gfHwgZXhpdCA1CisJZWNobyAtbiAkIlN0YXJ0aW5nICREQUVNT046ICIKKwlzdGFydC1zdG9wLWRhZW1vbiAtUyAtYiAteCAke0RBRU1PTn0gJiYgc3VjY2VzcyB8fCBmYWlsdXJlCisJcmV0dmFsPSQ/CisJZWNobyAiIgorCXJldHVybiAkcmV0dmFsCit9CisKK3N0b3AoKSB7CisJZWNobyAtbiAkIlN0b3BwaW5nICRwcm9nOiAiCisJc3RhcnQtc3RvcC1kYWVtb24gLUsgLXggJERBRU1PTgorCXJldHZhbD0kPworCWVjaG8gIiIKKwlyZXR1cm4gJHJldHZhbAorfQorCityZXN0YXJ0KCkgeworCXN0b3AKKwlzbGVlcCAzCisJc3RhcnQKK30KKworcmhfc3RhdHVzKCkgeworCXN0YXR1cyAkREFFTU9OCit9CisKK3JoX3N0YXR1c19xKCkgeworCXJoX3N0YXR1cyA+IC9kZXYvbnVsbCAyPiYxCit9CisKK2Nhc2UgIiQxIiBpbgorICBzdGFydCkKKwlyaF9zdGF0dXNfcSAmJiBleGl0IDAKKwlzdGFydAorCTs7CisgIHN0b3ApCisJcmhfc3RhdHVzX3EgfHwgZXhpdCAwCisJc3RvcAorCTs7CisgIHJlc3RhcnQpCisJcmVzdGFydAorCTs7CisgIHN0YXR1cykKKwlyaF9zdGF0dXMKKwk7OworICAqKQorCWVjaG8gJCJVc2FnZTogJHByb2cge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR9IgorCWV4aXQgMgorZXNhYworCitleGl0ICQ/CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9mcmVlZGlhbWV0ZXIvZmlsZXMvZnJlZWRpYW1ldGVyLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9mcmVlZGlhbWV0ZXIvZmlsZXMvZnJlZWRpYW1ldGVyLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE0NDgxYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9maWxlcy9mcmVlZGlhbWV0ZXIuc2VydmljZQpAQCAtMCwwICsxLDExIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPWZyZWVkaWFtZXRlciBkYWVtb24KK0FmdGVyPW5ldHdvcmsudGFyZ2V0CisKK1tTZXJ2aWNlXQorVHlwZT1zaW1wbGUKK1BJREZpbGU9L3Zhci9ydW4vZnJlZWRpYW1ldGVyLnBpZAorRXhlY1N0YXJ0PUBCSU5ESVJAL2ZyZWVEaWFtZXRlcmQKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvZnJlZWRpYW1ldGVyL2ZpbGVzL2luc3RhbGxfdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9maWxlcy9pbnN0YWxsX3Rlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUxMDM3ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9maWxlcy9pbnN0YWxsX3Rlc3QucGF0Y2gKQEAgLTAsMCArMSwyMiBAQAorQ01ha2VMaXN0czogYWRkIGFuIG9wdGlvbiB0byBpbnN0YWxsIHRlc3RzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgcHRlc3Qgc3BlY2lmaWNdCisKK09yaWdpbmFsIGF1dGhvcjogWWFvIFpoYW8gPHlhby56aGFvQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvdGVzdHMvQ01ha2VMaXN0cy50eHQgYi90ZXN0cy9DTWFrZUxpc3RzLnR4dAoraW5kZXggZGE4ZGExYi4uZGUwNDA1OSAxMDA2NDQKKy0tLSBhL3Rlc3RzL0NNYWtlTGlzdHMudHh0CisrKysgYi90ZXN0cy9DTWFrZUxpc3RzLnR4dAorQEAgLTExMyw0ICsxMTMsOSBAQCBFTkRGT1JFQUNIKCBURVNUICkKKyAjIyMjCisgIyMgSU5TVEFMTCBzZWN0aW9uICMjCisgCistIyB3ZSBkbyBub3QgaW5zdGFsbCB0aGUgdGVzdHMKKysjIGluc3RhbGwgdGhlIHRlc3RzCisrU0VUKElOU1RBTExfVEVTVF9TVUZGSVggICAgICAgL29wdC8ke0ZEX1BST0pFQ1RfTkFNRX0tdGVzdHMgICBDQUNIRSBQQVRIICJEaXJlY3Rvcnkgd2hlcmUgdGhlIHRlc3QgYmluYXJ5IGlzIGluc3RhbGxlZC4iKQorKworK0lOU1RBTEwoVEFSR0VUUyAke1RFU1RfTElTVH0KKysgICAgICAgIFJVTlRJTUUgREVTVElOQVRJT04gJHtJTlNUQUxMX1RFU1RfU1VGRklYfQorKyAgICAgICAgQ09NUE9ORU5UIGZyZWVEaWFtZXRlci1jb21tb24pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9mcmVlZGlhbWV0ZXIvZmlsZXMvcGFzcy1wdGVzdC1lbnYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9mcmVlZGlhbWV0ZXIvZmlsZXMvcGFzcy1wdGVzdC1lbnYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE4NTdhZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9maWxlcy9wYXNzLXB0ZXN0LWVudi5wYXRjaApAQCAtMCwwICsxLDcyIEBACitmcmVlZGlhbWV0ZXIgcHRlc3QgY2FzZXMgdGVzdG1lc2dfc3RyZXNzLmMgYW5kIHRlc3Rsb2FkZXh0LmMgbmVlZCBsb2FkCitleHRlbnNpb25zIGJvdGggYnVpbGQgdGltZSBhbmQgcnVudGltZS4gVGhlbiB0aGV5IHNlYXJjaCBleHRlbnNpb25zIHdpdGgKK2J1aWxkIGRpcmVjdG9yeSB0aGF0IGNhdXNlcyBydW50aW1lIGZhaWx1cmVzLgorCitQYXNzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGRlZmluZSBydW50aW1lIGV4dGVuc2lvbiBwYXRoLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHB0ZXN0IHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLU51ciBmcmVlRGlhbWV0ZXItMS4yLjAub3JpZy90ZXN0cy90ZXN0bG9hZGV4dC5jIGZyZWVEaWFtZXRlci0xLjIuMC90ZXN0cy90ZXN0bG9hZGV4dC5jCistLS0gZnJlZURpYW1ldGVyLTEuMi4wLm9yaWcvdGVzdHMvdGVzdGxvYWRleHQuYwkyMDE0LTAyLTE5IDE3OjMzOjI0Ljc4NTQwNTAzMiArMDgwMAorKysrIGZyZWVEaWFtZXRlci0xLjIuMC90ZXN0cy90ZXN0bG9hZGV4dC5jCTIwMTQtMDItMTkgMjA6MDg6MDMuODcxNDAzOTI0ICswODAwCitAQCAtNDksNyArNDksNyBAQAorIHsKKyAJRElSICpkaXI7CisgCXN0cnVjdCBkaXJlbnQgKmRwOworLQljaGFyIGZ1bGxuYW1lWzUxMl07CisrCWNoYXIgZnVsbG5hbWVbMTAyNF07CisgCWludCBwYXRobGVuOworIAorIAkvKiBGaXJzdCwgaW5pdGlhbGl6ZSB0aGUgZGFlbW9uIG1vZHVsZXMgKi8KK0BAIC01NywxMSArNTcsMTYgQEAKKyAJQ0hFQ0soIDAsIGZkX3F1ZXVlc19pbml0KCkgICk7CisgCUNIRUNLKCAwLCBmZF9tc2dfaW5pdCgpICApOworIAlDSEVDSyggMCwgZmRfcnRkaXNwX2luaXQoKSAgKTsKKy0JCisrCisrCWNoYXIgKmV4dF9kaXIgPSBnZXRlbnYoIkVYVEVOU0lPTlNfRElSIik7CisrCWlmIChleHRfZGlyKQorKwkJcGF0aGxlbiA9IHNucHJpbnRmKGZ1bGxuYW1lLCBzaXplb2YoZnVsbG5hbWUpLCAiJXMiLCBleHRfZGlyKTsKKysJZWxzZQorKwkJcGF0aGxlbiA9IHNucHJpbnRmKGZ1bGxuYW1lLCBzaXplb2YoZnVsbG5hbWUpLCBCVUlMRF9ESVIgIi9leHRlbnNpb25zLyIpOworKworIAkvKiBGaW5kIGFsbCBleHRlbnNpb25zIHdoaWNoIGhhdmUgYmVlbiBjb21waWxlZCBhbG9uZyB0aGUgdGVzdCAqLworLQlUUkFDRV9ERUJVRyhJTkZPLCAiTG9hZGluZyBmcm9tOiAnJXMnIiwgQlVJTERfRElSICIvZXh0ZW5zaW9ucyIpOworLQlDSEVDSyggMCwgKGRpciA9IG9wZW5kaXIgKEJVSUxEX0RJUiAiL2V4dGVuc2lvbnMiKSkgPT0gTlVMTCA/IDEgOiAwICk7CistCXBhdGhsZW4gPSBzbnByaW50ZihmdWxsbmFtZSwgc2l6ZW9mKGZ1bGxuYW1lKSwgQlVJTERfRElSICIvZXh0ZW5zaW9ucy8iKTsKKysJVFJBQ0VfREVCVUcoSU5GTywgIkxvYWRpbmcgZnJvbTogJyVzJyIsIGZ1bGxuYW1lKTsKKysJQ0hFQ0soIDAsIChkaXIgPSBvcGVuZGlyIChmdWxsbmFtZSkpID09IE5VTEwgPyAxIDogMCApOworIAkKKyAJd2hpbGUgKChkcCA9IHJlYWRkaXIgKGRpcikpICE9IE5VTEwpIHsKKyAJCWNoYXIgKiBkb3QgPSBzdHJyY2hyKGRwLT5kX25hbWUsICcuJyk7CitkaWZmIC1OdXIgZnJlZURpYW1ldGVyLTEuMi4wLm9yaWcvdGVzdHMvdGVzdG1lc2dfc3RyZXNzLmMgZnJlZURpYW1ldGVyLTEuMi4wL3Rlc3RzL3Rlc3RtZXNnX3N0cmVzcy5jCistLS0gZnJlZURpYW1ldGVyLTEuMi4wLm9yaWcvdGVzdHMvdGVzdG1lc2dfc3RyZXNzLmMJMjAxNC0wMi0xOSAxNzozMzoyNC43ODU0MDUwMzIgKzA4MDAKKysrKyBmcmVlRGlhbWV0ZXItMS4yLjAvdGVzdHMvdGVzdG1lc2dfc3RyZXNzLmMJMjAxNC0wMi0xOSAyMDowODowMy45Mjg0MDM5MjQgKzA4MDAKK0BAIC02NywxNSArNjcsMjAgQEAKKyB7CisgCURJUiAqZGlyOworIAlzdHJ1Y3QgZGlyZW50ICpkcDsKKy0JY2hhciBmdWxsbmFtZVs1MTJdOworKwljaGFyIGZ1bGxuYW1lWzEwMjRdOworIAlpbnQgcGF0aGxlbjsKKyAJc3RydWN0IGZkX2xpc3QgYWxsX2V4dGVuc2lvbnMgPSBGRF9MSVNUX0lOSVRJQUxJWkVSKGFsbF9leHRlbnNpb25zKTsKKyAJc3RydWN0IGZkX2xpc3QgZXh0X3dpdGhfZGVwZW5kcyA9IEZEX0xJU1RfSU5JVElBTElaRVIoZXh0X3dpdGhfZGVwZW5kcyk7CisgCisrCWNoYXIgKmV4dF9kaXIgPSBnZXRlbnYoIkVYVEVOU0lPTlNfRElSIik7CisrCWlmIChleHRfZGlyKQorKwkJcGF0aGxlbiA9IHNucHJpbnRmKGZ1bGxuYW1lLCBzaXplb2YoZnVsbG5hbWUpLCAiJXMiLCBleHRfZGlyKTsKKysJZWxzZQorKwkJcGF0aGxlbiA9IHNucHJpbnRmKGZ1bGxuYW1lLCBzaXplb2YoZnVsbG5hbWUpLCBCVUlMRF9ESVIgIi9leHRlbnNpb25zLyIpOworKworIAkvKiBGaW5kIGFsbCBleHRlbnNpb25zIHdoaWNoIGhhdmUgYmVlbiBjb21waWxlZCBhbG9uZyB0aGUgdGVzdCAqLworLQlMT0dfRCgiTG9hZGluZyAlcyouZmR4IGZyb206ICclcyciLCBCVUlMRF9ESVIgIi9leHRlbnNpb25zIiwgcHJlZml4ID86ICIiKTsKKy0JQ0hFQ0soIDAsIChkaXIgPSBvcGVuZGlyIChCVUlMRF9ESVIgIi9leHRlbnNpb25zIikpID09IE5VTEwgPyAxIDogMCApOworLQlwYXRobGVuID0gc25wcmludGYoZnVsbG5hbWUsIHNpemVvZihmdWxsbmFtZSksIEJVSUxEX0RJUiAiL2V4dGVuc2lvbnMvIik7CisrCVRSQUNFX0RFQlVHKElORk8sICJMb2FkaW5nIGZyb206ICclcyciLCBmdWxsbmFtZSk7CisrCUNIRUNLKCAwLCAoZGlyID0gb3BlbmRpciAoZnVsbG5hbWUpKSA9PSBOVUxMID8gMSA6IDAgKTsKKyAJCisgCXdoaWxlICgoZHAgPSByZWFkZGlyIChkaXIpKSAhPSBOVUxMKSB7CisgCQljaGFyICogZG90ID0gc3RycmNocihkcC0+ZF9uYW1lLCAnLicpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvZnJlZWRpYW1ldGVyL2ZpbGVzL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9maWxlcy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBjYThkOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9maWxlcy9ydW4tcHRlc3QKQEAgLTAsMCArMSwxMSBAQAorIyEvYmluL3NoCisKK2lmICEgbHNtb2QgfCBncmVwIC1xIHNjdHAgJiYgISBtb2Rwcm9iZSBzY3RwIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVjaG8gIkNvdWxkbid0IGxvYWQga2VybmVsIG1vZHVsZSBzY3RwLiIKKyAgICAgICAgZWNobyAiVGVzdCBjYXNlcyB0ZXN0c2N0cCBhbmQgdGVzdGNueCB3aWxsIGZhaWwuIgorICAgICAgICBlY2hvCitmaQorCitleHBvcnQgRVhURU5TSU9OU19ESVI9JEVYVEVOU0lPTlNfRElSCitjbWFrZSAgLUUgY21ha2VfZWNob19jb2xvciAtLWN5YW4gIlJ1bm5pbmcgdGVzdHMuLi4iCitjdGVzdCAtLWZvcmNlLW5ldy1jdGVzdC1wcm9jZXNzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9mcmVlZGlhbWV0ZXIvZnJlZWRpYW1ldGVyXzEuMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvZnJlZWRpYW1ldGVyL2ZyZWVkaWFtZXRlcl8xLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTU2ZWI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvZnJlZWRpYW1ldGVyL2ZyZWVkaWFtZXRlcl8xLjIuMS5iYgpAQCAtMCwwICsxLDEzOCBAQAorU1VNTUFSWSA9ICJBbiBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGlhbWV0ZXIgcHJvdG9jb2wiCitERVNDUklQVElPTiA9ICJcCitmcmVlRGlhbWV0ZXIgaXMgYW4gb3BlbiBzb3VyY2UgRGlhbWV0ZXIgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gXAorKFJGQzM1ODgpLiBJdCBwcm92aWRlcyBhbiBleHRlbnNpYmxlIHBsYXRmb3JtIGZvciBkZXBsb3lpbmcgYSBcCitEaWFtZXRlciBuZXR3b3JrIGZvciB5b3VyIEF1dGhlbnRpY2F0aW9uLCBBdXRob3JpemF0aW9uIGFuZCBcCitBY2NvdW50aW5nIG5lZWRzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGlhbWV0ZXIubmV0IgorCitERVBFTkRTID0gImZsZXggYmlzb24gY21ha2UtbmF0aXZlIGxpYmdjcnlwdCBnbnV0bHMgbGliaWRuIGxrc2N0cC10b29scyB2aXJ0dWFsL2tlcm5lbCIKKworUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworZmRfcGtnbmFtZSA9ICJmcmVlRGlhbWV0ZXIiCisKK1NSQ19VUkkgPSAiXAorICAgIGh0dHA6Ly93d3cuZnJlZWRpYW1ldGVyLm5ldC9oZy8ke2ZkX3BrZ25hbWV9L2FyY2hpdmUvJHtQVn0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9JHtmZF9wa2duYW1lfS0ke1BWfS50YXIuZ3ogXAorICAgIGZpbGU6Ly9SZXBsYWNlLW11cm11cmhhc2gtYWxnb3JpdGhtLXdpdGgtUm9iZXJ0LUplbmtpbi1zLWhhLnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZWRpYW1ldGVyLnNlcnZpY2UgXAorICAgIGZpbGU6Ly9mcmVlZGlhbWV0ZXIuaW5pdCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICdmaWxlOi8vaW5zdGFsbF90ZXN0LnBhdGNoIGZpbGU6Ly9ydW4tcHRlc3QgZmlsZTovL3Bhc3MtcHRlc3QtZW52LnBhdGNoJywgJycsIGQpfSBcCisgICAgZmlsZTovL2ZyZWVEaWFtZXRlci5jb25mIFwKKyAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MWIxMDYyYWExNDRiNWYxMmVlZDUxNDYxMWU2ZDY5NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiZDdmMTA1NTQyZTk5MDNlNzc2YWEwMDZjNjkzMWMxZjVkM2Q0NzdjYjU5YWYzM2E5MTYyNDIyZWZhNDc3MDk3IgorCitTID0gIiR7V09SS0RJUn0vJHtmZF9wa2duYW1lfS0ke1BWfSIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04OTJiMmVkNmFlODE1NDg4YTA4NDE2ZmY3ZWU3NGEzNSIKKworUFRFU1RfUEFUSCA9ICIke2xpYmRpcn0vJHtmZF9wa2duYW1lfS9wdGVzdCIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcgdXBkYXRlLXJjLmQgcHRlc3Qgc3lzdGVtZAorCitFWFRSQV9PRUNNQUtFID0gIiBcCisgICAgLURERUZBVUxUX0NPTkZfUEFUSDpQQVRIPSR7c3lzY29uZmRpcn0vJHtmZF9wa2duYW1lfSBcCisgICAgLURCVUlMRF9EQkdfTU9OSVRPUjpCT09MPU9OICBcCisgICAgLURCVUlMRF9URVNUX0FQUDpCT09MPU9OIFwKKyAgICAtREJVSUxEX1RFU1RJTkc6Qk9PTD1PTiBcCisgICAgLURCVUlMRF9BUFBfUkFER1c6Qk9PTD1PTiBcCisgICAgLURCVUlMRF9BUFBfUkVESVJFQ1Q6Qk9PTD1PTiBcCisgICAgLURCVUlMRF9URVNUX0FDQ1Q6Qk9PTD1PTiBcCisgICAgLURCVUlMRF9URVNUX05FVEVNVUw6Qk9PTD1PTiBcCisgICAgLURCVUlMRF9URVNUX1JUX0FOWTpCT09MPU9OIFwKKyAgICAtRElOU1RBTExfTElCUkFSWV9TVUZGSVg6UEFUSD0ke2Jhc2VsaWJ9IFwKKyAgICAtRElOU1RBTExfRVhURU5TSU9OU19TVUZGSVg6UEFUSD0ke2Jhc2VsaWJ9LyR7ZmRfcGtnbmFtZX0gXAorICAgIC1ESU5TVEFMTF9URVNUX1NVRkZJWDpQQVRIPSR7UFRFU1RfUEFUSH0tdGVzdHMgXAorICAgIC1EQ01BS0VfU0tJUF9SUEFUSDpCT09MPU9OIFwKKyIKKyMgSU5TVEFMTF9MSUJSQVJZX1NVRkZJWCBpcyByZWxhdGl2ZSB0byBDTUFLRV9JTlNUQUxMX1BSRUZJWAorIyBzcGVjaWZ5IGl0IG9uIGNtZCBsaW5lIHdpbGwgZml4IHRoZSBTRVQgYnVnIGluIENNYWtlTGlzdC50eHQKKworIyAtREJVSUxEX0FQUF9BQ0NUOkJPT0w9T04gVGhpcyBuZWVkcyBQT1NUR1JFU1FMIHN1cHBvcnQKKworIyAtREJVSUxEX0FQUF9ESUFNRUFQOkJPT0w9T04gIC1EQlVJTERfQVBQX1NJUDpCT09MPU9OIC1EQlVJTERfVEVTVF9TSVA6Qk9PTD1PTgorIyBUaGVzZSBuZWVkIE15U1FMIHN1cHBvcnQKKworIyAtREJVSUxEX0RCR19JTlRFUkFDVElWRTpCT09MPU9OIFRoaXMgbmVlZHMgU1dJRyBzdXBwb3J0CisKKyMgLURBTExfRVhURU5TSU9OUz1PTiB3aWxsIGVuYWJsZSBhbGwKKworRkRfS0VZID89IiR7QlBOfS5rZXkiCitGRF9QRU0gPz0gIiR7QlBOfS5wZW0iCitGRF9DQSA/PSAiJHtCUE59LnBlbSIKK0ZEX0RIX1BFTSA/PSAiJHtCUE59LWRoLnBlbSIKK0ZEX0hPU1ROQU1FID89ICIke01BQ0hJTkV9IgorRkRfUkVBTE0gPz0gIm9wZW5lbWJlZGRlZC5vcmciCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgaW5zdGFsbCB0aGUgc2FtcGxlIGNvbmZpZ3VyYXRpb24gZmlsZXMKKyAgICBpbnN0YWxsIC1kIC1tIDA3NTUgJHtEfSR7c3lzY29uZmRpcn0vJHtmZF9wa2duYW1lfQorICAgIGZvciBpIGluICR7U30vZG9jLyouY29uZi5zYW1wbGU7IGRvCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAkaSAke0R9JHtzeXNjb25mZGlyfS8ke2ZkX3BrZ25hbWV9LworICAgIGRvbmUKKyAgICBtdiAke0R9JHtzeXNjb25mZGlyfS8ke2ZkX3BrZ25hbWV9L2ZyZWVkaWFtZXRlci5jb25mLnNhbXBsZSBcCisgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vJHtmZF9wa2duYW1lfS9mcmVlRGlhbWV0ZXIuY29uZi5zYW1wbGUKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2ZyZWVEaWFtZXRlcgorCSBpbnN0YWxsICR7V09SS0RJUn0vZnJlZURpYW1ldGVyLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vJHtmZF9wa2duYW1lfS9mcmVlRGlhbWV0ZXIuY29uZgorCisgICAgIyBpbnN0YWxsIGRhZW1vbiBpbml0IHJlbGF0ZWQgZmlsZXMKKyAgICBpbnN0YWxsIC1kIC1tIDA3NTUgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorICAgIGluc3RhbGwgLWQgLW0gMDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jb250cmliL2RlYmlhbi9mcmVlZGlhbWV0ZXItZGFlbW9uLmRlZmF1bHQgXAorICAgICAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC8ke0JQTn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9mcmVlZGlhbWV0ZXIuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59CisKKyAgICAjIGluc3RhbGwgZm9yIHN5c3RlbWQKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZnJlZWRpYW1ldGVyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBzZWQgLWkgLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Lyouc2VydmljZQorCisgICAgY2F0ID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2ZyZWVEaWFtZXRlci9mcmVlRGlhbWV0ZXIuY29uZiA8PEVPRgorIyMgT0Ugc3BlY2lmaWMgIyMKKyNJZGVudGl0eT0iJHtGRF9IT1NUTkFNRX0iOworSWRlbnRpdHkgPSAiJHtGRF9IT1NUTkFNRX0uJHtGRF9SRUFMTX0iOworUmVhbG0gPSAiJHtGRF9SRUFMTX0iOworUG9ydCA9IDMwODY4OworU2VjUG9ydCA9IDMwODY5OworVExTX0NyZWQgPSAiL2V0Yy9mcmVlRGlhbWV0ZXIvJHtGRF9QRU19IiAsICIvZXRjL2ZyZWVEaWFtZXRlci8ke0ZEX0tFWX0iOworVExTX0NBID0gIi9ldGMvZnJlZURpYW1ldGVyLyR7RkRfQ0F9IjsKK1RMU19ESF9GaWxlID0gIi9ldGMvZnJlZURpYW1ldGVyLyR7RkRfREhfUEVNfSI7CitFT0YKKworICAgICMgY3JlYXRlIHNlbGYgY2VydAorICAgIG9wZW5zc2wgcmVxIC14NTA5IC1jb25maWcgJHtTVEFHSU5HX0RJUl9OQVRJVkV9L2V0Yy9zc2wvb3BlbnNzbC5jbmYgLW5ld2tleSByc2E6NDA5NiAtc2hhMjU2IC1ub2RlcyAtb3V0ICR7RH0ke3N5c2NvbmZkaXJ9L2ZyZWVEaWFtZXRlci8ke0ZEX1BFTX0gLWtleW91dCAke0R9JHtzeXNjb25mZGlyfS9mcmVlRGlhbWV0ZXIvJHtGRF9LRVl9IC1kYXlzIDM2NTAgLXN1YmogJy9DTj0ke0ZEX0hPU1ROQU1FfS4ke0ZEX1JFQUxNfScKKyAgICBvcGVuc3NsIGRocGFyYW0gLW91dCAke0R9JHtzeXNjb25mZGlyfS9mcmVlRGlhbWV0ZXIvJHtGRF9ESF9QRU19IDEwMjQKKworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIHNlZCAtaSAicyNcKEVYVEVOU0lPTlNfRElSPVwpLipcJCNcMSR7bGliZGlyfS8ke2ZkX3BrZ25hbWV9LyMiICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorICAgIG12ICR7RH0ke1BURVNUX1BBVEh9LXRlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vCisgICAgcm1kaXIgJHtEfSR7UFRFU1RfUEFUSH0tdGVzdHMKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtCfS90ZXN0cy9DVGVzdFRlc3RmaWxlLmNtYWtlICR7RH0ke1BURVNUX1BBVEh9LworfQorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8ke2ZkX3BrZ25hbWV9Ly5kZWJ1Zy8qIgorCisjIGluY2x1ZGUgdGhlIGV4dGVuc2lvbnMgaW4gbWFpbiBwYWNrYWdlCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7ZmRfcGtnbmFtZX0vKiIKKworUkRFUEVORFNfJHtQTn0gID0gImdsaWItMi4wIGdudXRscyBsaWJpZG4iCitSREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCBvcGVuc3NsLWNvbmYgb3BlbnNzbC1lbmdpbmVzIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gImtlcm5lbC1tb2R1bGUtdGlwYyBrZXJuZWwtbW9kdWxlLXNjdHAiIAorUlJFQ09NTUVORFNfJHtQTn0gKz0gImtlcm5lbC1tb2R1bGUtdWRwLXR1bm5lbCBrZXJuZWwtbW9kdWxlLWlwaXAiCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJjbWFrZSIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfSA9ICIke0JQTn0iCitJTklUU0NSSVBUX1BBUkFNUyRfJHtQTn0gPSAic3RhcnQgMzAgLiBzdG9wIDcwIDAgMSAyIDMgNCA1IDYgLiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImZyZWVkaWFtZXRlci5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9mcmVlZGlhbWV0ZXIuY29uZiIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAxLW5zc19tZG5zLURvLW5vdC1pbmNsdWRlLW5zcy5oLXdoZW4tbGliYy1nbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvZmlsZXMvMDAwMS1uc3NfbWRucy1Eby1ub3QtaW5jbHVkZS1uc3MuaC13aGVuLWxpYmMtZ2xpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYzODY2ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvZmlsZXMvMDAwMS1uc3NfbWRucy1Eby1ub3QtaW5jbHVkZS1uc3MuaC13aGVuLWxpYmMtZ2xpYmMucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBkMzA4MmQyYzYwNmM4MTBhYTBhMzkzNzhiZjFlMDI1NzVhZjNhMzAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMiBGZWIgMjAxOCAyMTo1NDoxMSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBuc3NfbWRuczogRG8gbm90IGluY2x1ZGUgbnNzLmggd2hlbiBsaWJjICE9IGdsaWJjCisKK1Byb3ZpZGUgbnNzX3N0YXR1cyBtYWNybyBpbnN0ZWFkIGZvciBub24tZ2xpYmMgY2FzZQord2hlcmUgbnNzLmggaXMgYWJzZW50CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIG1ETlNQb3NpeC9uc3NfbWRucy5jIHwgMTMgKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tRE5TUG9zaXgvbnNzX21kbnMuYyBiL21ETlNQb3NpeC9uc3NfbWRucy5jCitpbmRleCBhZmFkYjNjLi5jNDY5NTg0IDEwMDc1NQorLS0tIGEvbUROU1Bvc2l4L25zc19tZG5zLmMKKysrKyBiL21ETlNQb3NpeC9uc3NfbWRucy5jCitAQCAtMzc4LDggKzM3OCwxOSBAQCBpbml0X2NvbmZpZyAoKTsKKyAKKyAjZGVmaW5lIEVOVE5BTUUgIGhvc3RlbnQKKyAjZGVmaW5lIERBVEFCQVNFICJob3N0cyIKKy0KKysjaWZkZWYgX19HTElCQ19fCisgI2luY2x1ZGUgPG5zcy5oPgorKyNlbHNlCisrZW51bSBuc3Nfc3RhdHVzCisreworKyAgICBOU1NfU1RBVFVTX1RSWUFHQUlOID0gLTIsCisrICAgIE5TU19TVEFUVVNfVU5BVkFJTCwKKysgICAgTlNTX1NUQVRVU19OT1RGT1VORCwKKysgICAgTlNTX1NUQVRVU19TVUNDRVNTLAorKyAgICBOU1NfU1RBVFVTX1JFVFVSTgorK307CisrI2RlZmluZSBORVREQl9JTlRFUk5BTCBOVUxMCisrI2VuZGlmCisgLy8gRm9yIG5zc19zdGF0dXMKKyAjaW5jbHVkZSA8bmV0ZGIuaD4KKyAvLyBGb3IgaG9zdGVudAorLS0gCisyLjE2LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9tZG5zXzc2NS41MC45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9tZG5zXzc2NS41MC45LmJiCmluZGV4IDFhODBmN2EuLjlhNzE1MmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvbWRuc183NjUuNTAuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL21kbnNfNzY1LjUwLjkuYmIKQEAgLTksNiArOSw3IEBACiBTUkNfVVJJID0gImh0dHA6Ly9vcGVuc291cmNlLmFwcGxlLmNvbS90YXJiYWxscy9tRE5TUmVzcG9uZGVyL21ETlNSZXNwb25kZXItJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL2J1aWxkLnBhdGNoO3BhdGNoZGlyPS4uIFwKICAgICAgICAgICAgZmlsZTovL21kbnMuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5zc19tZG5zLURvLW5vdC1pbmNsdWRlLW5zcy5oLXdoZW4tbGliYy1nbGliYy5wYXRjaDtwYXRjaGRpcj0uLiBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjRhNmJjMTYyODg1MTAwMjYzNGVhMzgzM2E0ZGNhMzE3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1CVUctYTI1ODQtRml4LXNubXB0cmFwLXRvLXVzZS1jbGllbnRhZGRyLWZyb20tc25tcC5jLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1CVUctYTI1ODQtRml4LXNubXB0cmFwLXRvLXVzZS1jbGllbnRhZGRyLWZyb20tc25tcC5jLnBhdGNoCmluZGV4IGIwNWVlYTUuLmIxNGI3NjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtQlVHLWEyNTg0LUZpeC1zbm1wdHJhcC10by11c2UtY2xpZW50YWRkci1mcm9tLXNubXAuYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLUJVRy1hMjU4NC1GaXgtc25tcHRyYXAtdG8tdXNlLWNsaWVudGFkZHItZnJvbS1zbm1wLmMucGF0Y2gKQEAgLTExLDEzICsxMSwxMyBAQAogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKIAotZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMKLWluZGV4IDU1ZTM2MTAuLmFjYTY5YWUgMTAwNjQ0Ci0tLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYwotKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMKLUBAIC0yNTYsNiArMjU2LDI3IEBAIG5ldHNubXBfdWRwNl90cmFuc3BvcnQoc3RydWN0IHNvY2thZGRyX2luNiAqYWRkciwgaW50IGxvY2FsKQotICAgICAgICAgdC0+ZGF0YSA9IE5VTEw7Ci0gICAgICAgICB0LT5kYXRhX2xlbmd0aCA9IDA7CitJbmRleDogbmV0LXNubXAtNS43LjMvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXQtc25tcC01LjcuMy5vcmlnL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jCisrKysgbmV0LXNubXAtNS43LjMvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMKK0BAIC0yODYsNiArMjg2LDI3IEBAIG5ldHNubXBfdWRwNl90cmFuc3BvcnQoc3RydWN0IHNvY2thZGRyX2kKKyAgICAgICAgIHJldHVybiBOVUxMOworICNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgIH0gZWxzZSB7CiArICAgICAgICBjaGFyICAgICAgICAgICAqY2xpZW50X3NvY2tldCA9IE5VTEw7CiArICAgICAgICAvKgpAQCAtNDMsNiArNDMsMyBAQAogICAgICAgICAgLyoKICAgICAgICAgICAqIFRoaXMgaXMgYSBjbGllbnQgc2Vzc2lvbi4gIFNhdmUgdGhlIGFkZHJlc3MgaW4gdGhlCiAgICAgICAgICAgKiB0cmFuc3BvcnQtc3BlY2lmaWMgZGF0YSBwb2ludGVyIGZvciBsYXRlciB1c2UgYnkgbmV0c25tcF91ZHA2X3NlbmQuCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtUmVtb3ZlLVU2NC10eXBlZGVmLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1SZW1vdmUtVTY0LXR5cGVkZWYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMxNGFiMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtUmVtb3ZlLVU2NC10eXBlZGVmLnBhdGNoCkBAIC0wLDAgKzEsMjUyNCBAQAorbmV0LXNubXA6IHJlbW92ZSBVNjQgdHlwZWRlZgorCitGcm9tIGdpdDovL2dpdC5jb2RlLnNmLm5ldC9wL25ldC1zbm1wL2NvZGUKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAodW5tb2RpZmllZCkKKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCitGcm9tIDQ3N2I0MzA3ZWYxMmRkY2UzYjZhOTIwNWUwYmRkZGJmYjJlMGU5YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6IFNhdCwgMjAgRmViIDIwMTYgMTg6NTg6MTggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzFdIFJlbW92ZSBVNjQgdHlwZWRlZgorCitUaGUgVTY0IHR5cGVkZWYgY29uZmxpY3RzIHdpdGggYSB0eXBlZGVmIGluIGEgUGVybCBoZWFkZXIgZmlsZS4gSGVuY2UKK3JlbW92ZSB0aGUgVTY0IHR5cGVkZWYgZnJvbSB0aGUgTmV0LVNOTVAgaGVhZGVyIGZpbGVzLiBUaGlzIHBhdGNoIGRvZXMKK25vdCBtb2RpZnkgdGhlIE5ldC1TTk1QIEFCSS4KKy0tLQorIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jICAgICAgICAgIHwgIDE2ICstCisgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmggICAgICAgICAgfCAgNDggKy0KKyAuLi4vbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jICB8ICAzMiArLQorIC4uLi9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMgICAgICAgIHwgICAyICstCisgLi4uL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmMgICAgICAgfCAgMjggKy0KKyAuLi4vaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuaCAgICAgICB8ICAyOCArLQorIC4uLi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYyAgICAgIHwgIDU2ICstCisgLi4uL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmMgfCAgMjggKy0KKyAuLi4vaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaCB8IDkyMSArKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAuLi4vaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jICAgICAgICAgICAgICAgICB8ICA1NiArLQorIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oICAgICAgICAgICAgIHwgIDQyICstCisgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmggICAgICAgICAgICAgICAgICAgfCAgMzQgKy0KKyBzbm1wbGliL2ludDY0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzOCArLQorIHNubXBsaWIvcmVhZF9jb25maWcuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCisgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDE1aW50NjRfY2xpYi5jICAgICAgfCAgMTAgKy0KKyAxNSBmaWxlcyBjaGFuZ2VkLCAyNzQgaW5zZXJ0aW9ucygrKSwgMTA3MSBkZWxldGlvbnMoLSkKKworSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYworKysrIG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCitAQCAtNzIyLDcgKzcyMiw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIG9uIHQKKyAgKi8KKyBpbnQKKyBpZkhDSW5PY3RldHNfZ2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgVTY0ICogaWZIQ0luT2N0ZXRzX3ZhbF9wdHIpCisrICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppZkhDSW5PY3RldHNfdmFsX3B0cikKKyB7CisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlmSENJbk9jdGV0c192YWxfcHRyKTsKK0BAIC03NzksNyArNzc5LDcgQEAgVGhlIG51bWJlciBvZiBwYWNrZXRzLCBkZWxpdmVyZWQgYnkgdGhpcworICAqLworIGludAorIGlmSENJblVjYXN0UGt0c19nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICBVNjQgKiBpZkhDSW5VY2FzdFBrdHNfdmFsX3B0cikKKysgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlmSENJblVjYXN0UGt0c192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaWZIQ0luVWNhc3RQa3RzX3ZhbF9wdHIpOworQEAgLTgzOCw3ICs4MzgsNyBAQCBUaGUgbnVtYmVyIG9mIHBhY2tldHMsIGRlbGl2ZXJlZCBieSB0aGlzCisgICovCisgaW50CisgaWZIQ0luTXVsdGljYXN0UGt0c19nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaWZIQ0luTXVsdGljYXN0UGt0c192YWxfcHRyKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlmSENJbk11bHRpY2FzdFBrdHNfdmFsX3B0cikKKyB7CisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlmSENJbk11bHRpY2FzdFBrdHNfdmFsX3B0cik7CitAQCAtODk3LDcgKzg5Nyw3IEBAIFRoZSBudW1iZXIgb2YgcGFja2V0cywgZGVsaXZlcmVkIGJ5IHRoaXMKKyAgKi8KKyBpbnQKKyBpZkhDSW5Ccm9hZGNhc3RQa3RzX2dldChpZlhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpZkhDSW5Ccm9hZGNhc3RQa3RzX3ZhbF9wdHIpCisrICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaWZIQ0luQnJvYWRjYXN0UGt0c192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaWZIQ0luQnJvYWRjYXN0UGt0c192YWxfcHRyKTsKK0BAIC05NTUsNyArOTU1LDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgbworICAqLworIGludAorIGlmSENPdXRPY3RldHNfZ2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgIFU2NCAqIGlmSENPdXRPY3RldHNfdmFsX3B0cikKKysgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppZkhDT3V0T2N0ZXRzX3ZhbF9wdHIpCisgeworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpZkhDT3V0T2N0ZXRzX3ZhbF9wdHIpOworQEAgLTEwMTMsNyArMTAxMyw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2YgcGFja2V0cyB0aGF0IGhpZ2hlci0KKyAgKi8KKyBpbnQKKyBpZkhDT3V0VWNhc3RQa3RzX2dldChpZlhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICBVNjQgKiBpZkhDT3V0VWNhc3RQa3RzX3ZhbF9wdHIpCisrICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaWZIQ091dFVjYXN0UGt0c192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaWZIQ091dFVjYXN0UGt0c192YWxfcHRyKTsKK0BAIC0xMDc0LDcgKzEwNzQsNyBAQCBUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgdGhhdCBoaWdoZXItCisgICovCisgaW50CisgaWZIQ091dE11bHRpY2FzdFBrdHNfZ2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpZkhDT3V0TXVsdGljYXN0UGt0c192YWxfcHRyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppZkhDT3V0TXVsdGljYXN0UGt0c192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaWZIQ091dE11bHRpY2FzdFBrdHNfdmFsX3B0cik7CitAQCAtMTEzNCw3ICsxMTM0LDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIHRoYXQgaGlnaGVyLQorICAqLworIGludAorIGlmSENPdXRCcm9hZGNhc3RQa3RzX2dldChpZlhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaWZIQ091dEJyb2FkY2FzdFBrdHNfdmFsX3B0cikKKysgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaWZIQ091dEJyb2FkY2FzdFBrdHNfdmFsX3B0cikKKyB7CisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlmSENPdXRCcm9hZGNhc3RQa3RzX3ZhbF9wdHIpOworSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaAorKysrIG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCitAQCAtMTQzLDI4ICsxNDMsMjggQEAgY29uZmlnX3JlcXVpcmUoaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZk91dEJyb2FkY2FzdFBrdHNfdmFsX3B0cik7CisgICAgIGludCAgICAgICAgICAgICBpZkhDSW5PY3RldHNfZ2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpZkhDSW5PY3RldHNfdmFsX3B0cik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlmSENJbk9jdGV0c192YWxfcHRyKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJblVjYXN0UGt0c19nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlmSENJblVjYXN0UGt0c192YWxfcHRyKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaWZIQ0luVWNhc3RQa3RzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaWZIQ0luTXVsdGljYXN0UGt0c19nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZIQ0luTXVsdGljYXN0UGt0c192YWxfcHRyKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfZ2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfdmFsX3B0cik7CisgICAgIGludCAgICAgICAgICAgICBpZkhDT3V0T2N0ZXRzX2dldChpZlhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlmSENPdXRPY3RldHNfdmFsX3B0cik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppZkhDT3V0T2N0ZXRzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaWZIQ091dFVjYXN0UGt0c19nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpZkhDT3V0VWNhc3RQa3RzX3ZhbF9wdHIpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaWZIQ091dFVjYXN0UGt0c192YWxfcHRyKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRNdWx0aWNhc3RQa3RzX2dldChpZlhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZIQ091dE11bHRpY2FzdFBrdHNfdmFsX3B0cik7CisgICAgIGludCAgICAgICAgICAgICBpZkhDT3V0QnJvYWRjYXN0UGt0c19nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmSENPdXRCcm9hZGNhc3RQa3RzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaWZMaW5rVXBEb3duVHJhcEVuYWJsZV9nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorQEAgLTI4NCw4NiArMjg0LDg2IEBAIGNvbmZpZ19yZXF1aXJlKGlmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV8KKyAKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk9jdGV0c19jaGVja192YWx1ZShpZlhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDSW5PY3RldHNfdmFsKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0IGlmSENJbk9jdGV0c192YWwpOworICAgICBpbnQgICAgICAgICAgICAgaWZIQ0luT2N0ZXRzX3VuZG9fc2V0dXAoaWZYVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk9jdGV0c19zZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDSW5PY3RldHNfdmFsKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCBpZkhDSW5PY3RldHNfdmFsKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk9jdGV0c191bmRvKGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKKyAKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJblVjYXN0UGt0c19jaGVja192YWx1ZShpZlhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDSW5VY2FzdFBrdHNfdmFsKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0IGlmSENJblVjYXN0UGt0c192YWwpOworICAgICBpbnQgICAgICAgICAgICAgaWZIQ0luVWNhc3RQa3RzX3VuZG9fc2V0dXAoaWZYVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJblVjYXN0UGt0c19zZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDSW5VY2FzdFBrdHNfdmFsKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCBpZkhDSW5VY2FzdFBrdHNfdmFsKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJblVjYXN0UGt0c191bmRvKGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKKyAKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk11bHRpY2FzdFBrdHNfY2hlY2tfdmFsdWUoaWZYVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmSENJbk11bHRpY2FzdFBrdHNfdmFsKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk11bHRpY2FzdFBrdHNfdW5kb19zZXR1cChpZlhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk11bHRpY2FzdFBrdHNfc2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDSW5NdWx0aWNhc3RQa3RzX3ZhbCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0IGlmSENJbk11bHRpY2FzdFBrdHNfdmFsKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk11bHRpY2FzdFBrdHNfdW5kbyhpZlhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfY2hlY2tfdmFsdWUoaWZYVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfdmFsKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfdW5kb19zZXR1cChpZlhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfc2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDSW5Ccm9hZGNhc3RQa3RzX3ZhbCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0IGlmSENJbkJyb2FkY2FzdFBrdHNfdmFsKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfdW5kbyhpZlhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRPY3RldHNfY2hlY2tfdmFsdWUoaWZYVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDT3V0T2N0ZXRzX3ZhbCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgaWZIQ091dE9jdGV0c192YWwpOworICAgICBpbnQgICAgICAgICAgICAgaWZIQ091dE9jdGV0c191bmRvX3NldHVwKGlmWFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgICBpbnQgICAgICAgICAgICAgaWZIQ091dE9jdGV0c19zZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgaWZIQ091dE9jdGV0c192YWwpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCBpZkhDT3V0T2N0ZXRzX3ZhbCk7CisgICAgIGludCAgICAgICAgICAgICBpZkhDT3V0T2N0ZXRzX3VuZG8oaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpOworIAorICAgICBpbnQgICAgICAgICAgICAgaWZIQ091dFVjYXN0UGt0c19jaGVja192YWx1ZShpZlhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0IGlmSENPdXRVY2FzdFBrdHNfdmFsKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCBpZkhDT3V0VWNhc3RQa3RzX3ZhbCk7CisgICAgIGludCAgICAgICAgICAgICBpZkhDT3V0VWNhc3RQa3RzX3VuZG9fc2V0dXAoaWZYVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgIGludCAgICAgICAgICAgICBpZkhDT3V0VWNhc3RQa3RzX3NldChpZlhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDT3V0VWNhc3RQa3RzX3ZhbCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0IGlmSENPdXRVY2FzdFBrdHNfdmFsKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRVY2FzdFBrdHNfdW5kbyhpZlhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRNdWx0aWNhc3RQa3RzX2NoZWNrX3ZhbHVlKGlmWFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZIQ091dE11bHRpY2FzdFBrdHNfdmFsKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRNdWx0aWNhc3RQa3RzX3VuZG9fc2V0dXAoaWZYVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgICBpbnQgICAgICAgICAgICAgaWZIQ091dE11bHRpY2FzdFBrdHNfc2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0IGlmSENPdXRNdWx0aWNhc3RQa3RzX3ZhbCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCBpZkhDT3V0TXVsdGljYXN0UGt0c192YWwpOworICAgICBpbnQgICAgICAgICAgICAgaWZIQ091dE11bHRpY2FzdFBrdHNfdW5kbyhpZlhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgCisgICAgIGludCAgICAgICAgICAgICBpZkhDT3V0QnJvYWRjYXN0UGt0c19jaGVja192YWx1ZShpZlhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmSENPdXRCcm9hZGNhc3RQa3RzX3ZhbCk7CisgICAgIGludCAgICAgICAgICAgICBpZkhDT3V0QnJvYWRjYXN0UGt0c191bmRvX3NldHVwKGlmWFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRCcm9hZGNhc3RQa3RzX3NldChpZlhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDT3V0QnJvYWRjYXN0UGt0c192YWwpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgaWZIQ091dEJyb2FkY2FzdFBrdHNfdmFsKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRCcm9hZGNhc3RQa3RzX3VuZG8oaWZYVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworIAorSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ldC1zbm1wLTUuNy4zLm9yaWcvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jCisrKysgbmV0LXNubXAtNS43LjMvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jCitAQCAtNzI5LDcyICs3MjksNzIgQEAgX2lmWFRhYmxlX2dldF9jb2x1bW4oaWZYVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICogaWZIQ0luT2N0ZXRzKDYpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgICovCisgICAgIGNhc2UgQ09MVU1OX0lGSENJTk9DVEVUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKy0gICAgICAgIHJjID0gaWZIQ0luT2N0ZXRzX2dldChyb3dyZXFfY3R4LCAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisrICAgICAgICByYyA9IGlmSENJbk9jdGV0c19nZXQocm93cmVxX2N0eCwgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgLyoKKyAgICAgICAgICAqIGlmSENJblVjYXN0UGt0cyg3KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JRkhDSU5VQ0FTVFBLVFM6CistICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKysgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKKyAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CistICAgICAgICByYyA9IGlmSENJblVjYXN0UGt0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgcmMgPSBpZkhDSW5VY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCisgICAgICAgICAgKiBpZkhDSW5NdWx0aWNhc3RQa3RzKDgpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgICovCisgICAgIGNhc2UgQ09MVU1OX0lGSENJTk1VTFRJQ0FTVFBLVFM6CistICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKysgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKKyAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CistICAgICAgICByYyA9IGlmSENJbk11bHRpY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKysgICAgICAgIHJjID0gaWZIQ0luTXVsdGljYXN0UGt0c19nZXQocm93cmVxX2N0eCwgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgLyoKKyAgICAgICAgICAqIGlmSENJbkJyb2FkY2FzdFBrdHMoOSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAgKi8KKyAgICAgY2FzZSBDT0xVTU5fSUZIQ0lOQlJPQURDQVNUUEtUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKy0gICAgICAgIHJjID0gaWZIQ0luQnJvYWRjYXN0UGt0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgcmMgPSBpZkhDSW5Ccm9hZGNhc3RQa3RzX2dldChyb3dyZXFfY3R4LCAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorICAgICAgICAgICogaWZIQ091dE9jdGV0cygxMCkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAgKi8KKyAgICAgY2FzZSBDT0xVTU5fSUZIQ09VVE9DVEVUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKy0gICAgICAgIHJjID0gaWZIQ091dE9jdGV0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgcmMgPSBpZkhDT3V0T2N0ZXRzX2dldChyb3dyZXFfY3R4LCAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorICAgICAgICAgICogaWZIQ091dFVjYXN0UGt0cygxMSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAgKi8KKyAgICAgY2FzZSBDT0xVTU5fSUZIQ09VVFVDQVNUUEtUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKy0gICAgICAgIHJjID0gaWZIQ091dFVjYXN0UGt0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgcmMgPSBpZkhDT3V0VWNhc3RQa3RzX2dldChyb3dyZXFfY3R4LCAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorICAgICAgICAgICogaWZIQ091dE11bHRpY2FzdFBrdHMoMTIpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgICovCisgICAgIGNhc2UgQ09MVU1OX0lGSENPVVRNVUxUSUNBU1RQS1RTOgorLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisrICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworLSAgICAgICAgcmMgPSBpZkhDT3V0TXVsdGljYXN0UGt0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgcmMgPSBpZkhDT3V0TXVsdGljYXN0UGt0c19nZXQocm93cmVxX2N0eCwgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgLyoKKyAgICAgICAgICAqIGlmSENPdXRCcm9hZGNhc3RQa3RzKDEzKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JRkhDT1VUQlJPQURDQVNUUEtUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKy0gICAgICAgIHJjID0gaWZIQ091dEJyb2FkY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKysgICAgICAgIHJjID0gaWZIQ091dEJyb2FkY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitJbmRleDogbmV0LXNubXAtNS43LjMvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMKKysrKyBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMKK0BAIC0yNjQsNyArMjY0LDcgQEAgX2NhbGN1bGF0ZV9lbnRyaWVzKG5ldHNubXBfc3lzdGVtc3RhdHNfZQorICAgICAgICAgICAgJiYgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdDUkVBVEVTXQorICAgICAgICAgJiYgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVERJU0NBUkRTXSkgeworIAorLSAgICAgICAgVTY0IHRtcCwgdG1wMiwgdG1wMzsKKysgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgdG1wLCB0bXAyLCB0bXAzOworICAgICAgICAgdG1wID0gZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHM7CisgICAgICAgICB1NjRJbmNyKCZ0bXAsICZlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zKTsKKyAgICAgICAgIHU2NEluY3IoJnRtcCwgJmVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzKTsKK0luZGV4OiBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ldC1zbm1wLTUuNy4zLm9yaWcvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmMKKysrKyBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuYworQEAgLTI3MCw3ICsyNzAsNyBAQCBUaGUgdG90YWwgbnVtYmVyIG9mIGlucHV0IElQIGRhdGFncmFtcyByCisgICovCisgaW50CisgaXBJZlN0YXRzSENJblJlY2VpdmVzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBJZlN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpCisgeworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0cik7CitAQCAtMzk1LDcgKzM5NSw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIGkKKyAgKi8KKyBpbnQKKyBpcElmU3RhdHNIQ0luT2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpCisrICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBJZlN0YXRzSENJbk9jdGV0c192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJbk9jdGV0c192YWxfcHRyKTsKK0BAIC04NjIsNyArODYyLDcgQEAgVGhlIG51bWJlciBvZiBpbnB1dCBkYXRhZ3JhbXMgZm9yIHdoaWNoCisgICovCisgaW50CisgaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CitAQCAtMTI2Nyw3ICsxMjY3LDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBkYXRhZ3JhbXMgc3VjY2Vzc2Z1bAorICAqLworIGludAorIGlwSWZTdGF0c0hDSW5EZWxpdmVyc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0cikKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIpOworQEAgLTEzOTYsNyArMTM5Niw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgbG8KKyAgKi8KKyBpbnQKKyBpcElmU3RhdHNIQ091dFJlcXVlc3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBJZlN0YXRzSENPdXRSZXF1ZXN0c192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENPdXRSZXF1ZXN0c192YWxfcHRyKTsKK0BAIC0xNTMyLDcgKzE1MzIsNyBAQCBUaGUgbnVtYmVyIG9mIGRhdGFncmFtcyBmb3Igd2hpY2ggdGhpcyBlCisgICovCisgaW50CisgaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpCisgeworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CitAQCAtMTk5OSw3ICsxOTk5LDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBJUCBkYXRhZ3JhbXMgdGhhdCB0aAorICAqLworIGludAorIGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0cikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0cikKKyB7CisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpOworQEAgLTIxMjMsNyArMjEyMyw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIGluIElQIGRhdGFncmEKKyAgKi8KKyBpbnQKKyBpcElmU3RhdHNIQ091dE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpCisrICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpCisgeworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dE9jdGV0c192YWxfcHRyKTsKK0BAIC0yMjQ1LDcgKzIyNDUsNyBAQCBUaGUgbnVtYmVyIG9mIElQIG11bHRpY2FzdCBkYXRhZ3JhbXMgcmVjCisgICovCisgaW50CisgaXBJZlN0YXRzSENJbk1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0cikKKyB7CisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0cik7CitAQCAtMjM3Miw3ICsyMzcyLDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgcmVjZWl2ZWQgaW4gSQorICAqLworIGludAorIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIpOworQEAgLTI0OTcsNyArMjQ5Nyw3IEBAIFRoZSBudW1iZXIgb2YgSVAgbXVsdGljYXN0IGRhdGFncmFtcyB0cmEKKyAgKi8KKyBpbnQKKyBpcElmU3RhdHNIQ091dE1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpCisgeworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyKTsKK0BAIC0yNjIxLDcgKzI2MjEsNyBAQCBUaGUgdG90YWwgbnVtYmVyIG9mIG9jdGV0cyB0cmFuc21pdHRlZCBpCisgICovCisgaW50CisgaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfdmFsX3B0cikKKyB7CisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfdmFsX3B0cik7CitAQCAtMjc0Myw3ICsyNzQzLDcgQEAgVGhlIG51bWJlciBvZiBJUCBicm9hZGNhc3QgZGF0YWdyYW1zIHJlYworICAqLworIGludAorIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppcElmU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIpCisgeworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIpOworQEAgLTI4NjUsNyArMjg2NSw3IEBAIFRoZSBudW1iZXIgb2YgSVAgYnJvYWRjYXN0IGRhdGFncmFtcyB0cmEKKyAgKi8KKyBpbnQKKyBpcElmU3RhdHNIQ091dEJjYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpCisgeworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyKTsKK0luZGV4OiBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ldC1zbm1wLTUuNy4zLm9yaWcvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKKysrKyBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuaAorQEAgLTUwLDcgKzUwLDcgQEAgZXh0ZXJuICAgICAgICAgICJDIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJblJlY2VpdmVzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENJblJlY2VpdmVzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luT2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorQEAgLTU4LDcgKzU4LDcgQEAgZXh0ZXJuICAgICAgICAgICJDIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSW5PY3RldHNfdmFsX3B0cik7CisgICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ0luT2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5IZHJFcnJvcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCitAQCAtODcsNyArODcsNyBAQCBleHRlcm4gICAgICAgICAgIkMiIHsKKyAgICAgaW50ICAgICAgICAgICAgCisgICAgICAgICBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzUmVhc21SZXFkc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorQEAgLTExMSw3ICsxMTEsNyBAQCBleHRlcm4gICAgICAgICAgIkMiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luRGVsaXZlcnNfdmFsX3B0cik7CisgICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0UmVxdWVzdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCitAQCAtMTE5LDcgKzExOSw3IEBAIGV4dGVybiAgICAgICAgICAiQyIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dFJlcXVlc3RzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRSZXF1ZXN0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRSZXF1ZXN0c192YWxfcHRyKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKK0BAIC0xMjgsNyArMTI4LDcgQEAgZXh0ZXJuICAgICAgICAgICJDIiB7CisgICAgIGludCAgICAgICAgICAgIAorICAgICAgICAgaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dERpc2NhcmRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorQEAgLTE1Niw3ICsxNTYsNyBAQCBleHRlcm4gICAgICAgICAgIkMiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0VHJhbnNtaXRzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCitAQCAtMTY0LDcgKzE2NCw3IEBAIGV4dGVybiAgICAgICAgICAiQyIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRPY3RldHNfdmFsX3B0cik7CisgICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ091dE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5NY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCitAQCAtMTcyLDcgKzE3Miw3IEBAIGV4dGVybiAgICAgICAgICAiQyIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RQa3RzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RPY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKK0BAIC0xODAsNyArMTgwLDcgQEAgZXh0ZXJuICAgICAgICAgICJDIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dE1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCitAQCAtMTg4LDcgKzE4OCw3IEBAIGV4dGVybiAgICAgICAgICAiQyIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRNY2FzdFBrdHNfdmFsX3B0cik7CisgICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ091dE1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCitAQCAtMTk2LDcgKzE5Niw3IEBAIGV4dGVybiAgICAgICAgICAiQyIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luQmNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorQEAgLTIwNCw3ICsyMDQsNyBAQCBleHRlcm4gICAgICAgICAgIkMiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyKTsKKyAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cik7CisgICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXRCY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorQEAgLTIxMiw3ICsyMTIsNyBAQCBleHRlcm4gICAgICAgICAgIkMiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0QmNhc3RQa3RzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyKTsKKyAgICAgaW50ICAgICAgICAgICAgCisgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV9nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCitJbmRleDogbmV0LXNubXAtNS43LjMvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMKKysrKyBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMKK0BAIC03MjIsMTAgKzcyMiwxMCBAQCBfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsCisgICAgICAgICAgKiBpcElmU3RhdHNIQ0luUmVjZWl2ZXMoNCkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAgKi8KKyAgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTlJFQ0VJVkVTOgorLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisrICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luUmVjZWl2ZXNfZ2V0KHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitAQCAtNzQxLDkgKzc0MSw5IEBAIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwSWZTdGF0c1RhYmwKKyAgICAgICAgICAqIGlwSWZTdGF0c0hDSW5PY3RldHMoNikvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAgKi8KKyAgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTk9DVEVUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKy0gICAgICAgIHJjID0gaXBJZlN0YXRzSENJbk9jdGV0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luT2N0ZXRzX2dldChyb3dyZXFfY3R4LCAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorQEAgLTgxMCwxMCArODEwLDEwIEBAIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwSWZTdGF0c1RhYmwKKyAgICAgICAgICAqIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zKDEzKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lORk9SV0RBVEFHUkFNUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgIHJjID0gaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfZ2V0KHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorQEAgLTg2OSwxMCArODY5LDEwIEBAIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwSWZTdGF0c1RhYmwKKyAgICAgICAgICAqIGlwSWZTdGF0c0hDSW5EZWxpdmVycygxOSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAgKi8KKyAgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTkRFTElWRVJTOgorLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisrICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitAQCAtODg5LDEwICs4ODksMTAgQEAgX2lwSWZTdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBJZlN0YXRzVGFibAorICAgICAgICAgICogaXBJZlN0YXRzSENPdXRSZXF1ZXN0cygyMSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAgKi8KKyAgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRSRVFVRVNUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgIHJjID0gaXBJZlN0YXRzSENPdXRSZXF1ZXN0c19nZXQocm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorQEAgLTkwOSwxMCArOTA5LDEwIEBAIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwSWZTdGF0c1RhYmwKKyAgICAgICAgICAqIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtcygyNCkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAgKi8KKyAgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRGT1JXREFUQUdSQU1TOgorLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisrICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfZ2V0KHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitAQCAtOTc5LDEwICs5NzksMTAgQEAgX2lwSWZTdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBJZlN0YXRzVGFibAorICAgICAgICAgICogaXBJZlN0YXRzSENPdXRUcmFuc21pdHMoMzEpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgICovCisgICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUVFJBTlNNSVRTOgorLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisrICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dFRyYW5zbWl0c19nZXQocm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitAQCAtOTk5LDkgKzk5OSw5IEBAIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwSWZTdGF0c1RhYmwKKyAgICAgICAgICAqIGlwSWZTdGF0c0hDT3V0T2N0ZXRzKDMzKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ09VVE9DVEVUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKy0gICAgICAgIHJjID0gaXBJZlN0YXRzSENPdXRPY3RldHNfZ2V0KHJvd3JlcV9jdHgsIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKysgICAgICAgIHJjID0gaXBJZlN0YXRzSENPdXRPY3RldHNfZ2V0KHJvd3JlcV9jdHgsIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitAQCAtMTAxOCwxMCArMTAxOCwxMCBAQCBfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsCisgICAgICAgICAgKiBpcElmU3RhdHNIQ0luTWNhc3RQa3RzKDM1KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lOTUNBU1RQS1RTOgorLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisrICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitAQCAtMTAzOCwxMCArMTAzOCwxMCBAQCBfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsCisgICAgICAgICAgKiBpcElmU3RhdHNIQ0luTWNhc3RPY3RldHMoMzcpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgICovCisgICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDSU5NQ0FTVE9DVEVUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgIHJjID0gaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChyb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorQEAgLTEwNTgsMTAgKzEwNTgsMTAgQEAgX2lwSWZTdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBJZlN0YXRzVGFibAorICAgICAgICAgICogaXBJZlN0YXRzSENPdXRNY2FzdFBrdHMoMzkpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgICovCisgICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUTUNBU1RQS1RTOgorLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisrICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dE1jYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitAQCAtMTA3OCwxMCArMTA3OCwxMCBAQCBfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsCisgICAgICAgICAgKiBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzKDQxKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ09VVE1DQVNUT0NURVRTOgorLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisrICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX2dldChyb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitAQCAtMTA5OCwxMCArMTA5OCwxMCBAQCBfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsCisgICAgICAgICAgKiBpcElmU3RhdHNIQ0luQmNhc3RQa3RzKDQzKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lOQkNBU1RQS1RTOgorLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisrICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luQmNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitAQCAtMTExOCwxMCArMTExOCwxMCBAQCBfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsCisgICAgICAgICAgKiBpcElmU3RhdHNIQ091dEJjYXN0UGt0cyg0NSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAgKi8KKyAgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRCQ0FTVFBLVFM6CistICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKysgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKKyAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgICByYyA9IGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgLyoKK0luZGV4OiBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jCisrKysgbmV0LXNubXAtNS43LjMvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYworQEAgLTQ1Miw3ICs0NTIsNyBAQCBUaGUgdG90YWwgbnVtYmVyIG9mIGlucHV0IElQIGRhdGFncmFtcyByCisgICovCisgaW50CisgaXBTeXN0ZW1TdGF0c0hDSW5SZWNlaXZlc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0cikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppcFN5c3RlbVN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpCisgeworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcFN5c3RlbVN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpOworQEAgLTU3OSw3ICs1NzksNyBAQCBUaGUgdG90YWwgbnVtYmVyIG9mIG9jdGV0cyByZWNlaXZlZCBpbiBpCisgICovCisgaW50CisgaXBTeXN0ZW1TdGF0c0hDSW5PY3RldHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBTeXN0ZW1TdGF0c0hDSW5PY3RldHNfdmFsX3B0cikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBTeXN0ZW1TdGF0c0hDSW5PY3RldHNfdmFsX3B0cikKKyB7CisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpOworQEAgLTEwNTgsNyArMTA1OCw3IEBAIFRoZSBudW1iZXIgb2YgaW5wdXQgZGF0YWdyYW1zIGZvciB3aGljaAorIGludAorIGlwU3lzdGVtU3RhdHNIQ0luRm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCitAQCAtMTQ3NCw3ICsxNDc0LDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBkYXRhZ3JhbXMgc3VjY2Vzc2Z1bAorICAqLworIGludAorIGlwU3lzdGVtU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBTeXN0ZW1TdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBTeXN0ZW1TdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKTsKK0BAIC0xNjAyLDcgKzE2MDIsNyBAQCBUaGUgdG90YWwgbnVtYmVyIG9mIElQIGRhdGFncmFtcyB3aGljaCBsCisgICovCisgaW50CisgaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cikKKyB7CisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIpOworQEAgLTE4MDksNyArMTgwOSw3IEBAIFRoZSBudW1iZXIgb2YgZGF0YWdyYW1zIGZvciB3aGljaCB0aGlzIGUKKyBpbnQKKyBpcFN5c3RlbVN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cikKKyB7CisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworQEAgLTIyODgsNyArMjI4OCw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgdGgKKyAgKi8KKyBpbnQKKyBpcFN5c3RlbVN0YXRzSENPdXRUcmFuc21pdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwU3lzdGVtU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBTeXN0ZW1TdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpCisgeworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcFN5c3RlbVN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0cik7CitAQCAtMjQxNSw3ICsyNDE1LDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgaW4gSVAgZGF0YWdyYQorICAqLworIGludAorIGlwU3lzdGVtU3RhdHNIQ091dE9jdGV0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBTeXN0ZW1TdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppcFN5c3RlbVN0YXRzSENPdXRPY3RldHNfdmFsX3B0cikKKyB7CisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwU3lzdGVtU3RhdHNIQ091dE9jdGV0c192YWxfcHRyKTsKK0BAIC0yNTM5LDcgKzI1MzksNyBAQCBUaGUgbnVtYmVyIG9mIElQIG11bHRpY2FzdCBkYXRhZ3JhbXMgcmVjCisgICovCisgaW50CisgaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdFBrdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0cikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0cikKKyB7CisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpOworQEAgLTI2NjUsNyArMjY2NSw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIEkKKyBpbnQKKyBpcFN5c3RlbVN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cikKKyB7CisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworQEAgLTI3OTAsNyArMjc5MCw3IEBAIFRoZSBudW1iZXIgb2YgSVAgbXVsdGljYXN0IGRhdGFncmFtcyB0cmEKKyAgKi8KKyBpbnQKKyBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdFBrdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpCisgeworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0cik7CitAQCAtMjkyMSw3ICsyOTIxLDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgaQorIGludAorIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCitAQCAtMzA0Niw3ICszMDQ2LDcgQEAgVGhlIG51bWJlciBvZiBJUCBicm9hZGNhc3QgZGF0YWdyYW1zIHJlYworICAqLworIGludAorIGlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIpCisgeworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcFN5c3RlbVN0YXRzSENJbkJjYXN0UGt0c192YWxfcHRyKTsKK0BAIC0zMTcwLDcgKzMxNzAsNyBAQCBUaGUgbnVtYmVyIG9mIElQIGJyb2FkY2FzdCBkYXRhZ3JhbXMgdHJhCisgICovCisgaW50CisgaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcFN5c3RlbVN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0cikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwU3lzdGVtU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyKQorIHsKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpOworSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXQtc25tcC01LjcuMy5vcmlnL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKKysrKyBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oCitAQCAtMTQ0LDkzICsxNDQsMjIgQEAgY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZQorICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAgICAgICovCistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY29udGV4dCk7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdChpcFN5c3RlbVN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoaXBTeXN0ZW1TdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY29udGV4dCwgaW50IHJjKTsKKyAKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2luaXRfY3R4KTsKKyAgICAgdm9pZAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorICAgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworIAorICAgICBpcFN5c3RlbVN0YXRzVGFibGVfZGF0YSAqaXBTeXN0ZW1TdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEodm9pZCk7CisgICAgIHZvaWQgICAgICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfcmVsZWFzZV9kYXRhKGlwU3lzdGVtU3RhdHNUYWJsZV9kYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZGF0YSk7CistCistCistICAgICAgICAgCistICAgICAgICAgCistICAgICAgICAgCistICAgICAgICAgCistICAgICAgICAgCistICAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eAorKyAgICBpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgKiBpcFN5c3RlbVN0YXRzVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4CisgICAgICAgICAoaXBTeXN0ZW1TdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOworIAorQEAgLTI2NSwyMjYgKzE5NCw1MCBAQCBjb25maWdfcmVxdWlyZShpcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlCisgICAgICAqIGluZGV4ZXMKKyAgICAgICovCisgCistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c0luUmVjZWl2ZXNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNJblJlY2VpdmVzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJblJlY2VpdmVzX3ZhbF9wdHIpOworLSAgICBpbnQKKy0gICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIGlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpOworICAgICBpbnQgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0luT2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJbk9jdGV0c192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzSENJbk9jdGV0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0hDSW5PY3RldHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpOworLSAgICBpbnQKKy0gICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIGlwU3lzdGVtU3RhdHNJbkhkckVycm9yc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpOworKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0luSGRyRXJyb3JzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJbkhkckVycm9yc192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzSW5Ob1JvdXRlc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0luTm9Sb3V0ZXNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0luTm9Sb3V0ZXNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c0luQWRkckVycm9yc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0luQWRkckVycm9yc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSW5BZGRyRXJyb3JzX3ZhbF9wdHIpOworLSAgICBpbnQKKy0gICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIGlwU3lzdGVtU3RhdHNJblVua25vd25Qcm90b3NfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNJblVua25vd25Qcm90b3NfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0luVW5rbm93blByb3Rvc192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzSW5UcnVuY2F0ZWRQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzSW5UcnVuY2F0ZWRQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJblRydW5jYXRlZFBrdHNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c0luRm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0luRm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOworLSAgICBpbnQKKy0gICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIGlwU3lzdGVtU3RhdHNIQ0luRm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c1JlYXNtUmVxZHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNSZWFzbVJlcWRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNSZWFzbVJlcWRzX3ZhbF9wdHIpOworQEAgLTQ5Miw2OTAgKzI0NSwxNDIgQEAgY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNSZWFzbU9Lc192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzUmVhc21GYWlsc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c1JlYXNtRmFpbHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c1JlYXNtRmFpbHNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c0luRGlzY2FyZHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNJbkRpc2NhcmRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJbkRpc2NhcmRzX3ZhbF9wdHIpOworLSAgICBpbnQKKy0gICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIGlwU3lzdGVtU3RhdHNJbkRlbGl2ZXJzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzSW5EZWxpdmVyc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSW5EZWxpdmVyc192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzT3V0UmVxdWVzdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNPdXRSZXF1ZXN0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIpOworLSAgICBpbnQKKy0gICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIGlwU3lzdGVtU3RhdHNPdXROb1JvdXRlc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c091dE5vUm91dGVzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXROb1JvdXRlc192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzT3V0Rm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c091dEZvcndEYXRhZ3JhbXNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0Rm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0hDT3V0Rm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c091dERpc2NhcmRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzT3V0RGlzY2FyZHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c091dERpc2NhcmRzX3ZhbF9wdHIpOworLSAgICBpbnQKKy0gICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIGlwU3lzdGVtU3RhdHNPdXRGcmFnUmVxZHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNPdXRGcmFnUmVxZHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c091dEZyYWdSZXFkc192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzT3V0RnJhZ09Lc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c091dEZyYWdPS3NfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c091dEZyYWdPS3NfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c091dEZyYWdGYWlsc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c091dEZyYWdGYWlsc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzT3V0RnJhZ0ZhaWxzX3ZhbF9wdHIpOworLSAgICBpbnQKKy0gICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIGlwU3lzdGVtU3RhdHNPdXRGcmFnQ3JlYXRlc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c091dEZyYWdDcmVhdGVzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzT3V0VHJhbnNtaXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzT3V0VHJhbnNtaXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXRUcmFuc21pdHNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0VHJhbnNtaXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzSENPdXRUcmFuc21pdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzT3V0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzT3V0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXRPY3RldHNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzSENPdXRPY3RldHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dE9jdGV0c192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzSW5NY2FzdFBrdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNJbk1jYXN0UGt0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdFBrdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpOworLSAgICBpbnQKKy0gICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIGlwU3lzdGVtU3RhdHNJbk1jYXN0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzSW5NY2FzdE9jdGV0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSW5NY2FzdE9jdGV0c192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzT3V0TWNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzT3V0TWNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXRNY2FzdFBrdHNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdFBrdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzT3V0TWNhc3RPY3RldHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNPdXRNY2FzdE9jdGV0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzT3V0TWNhc3RPY3RldHNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RPY3RldHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKysgICAgaW50IGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpOworLSAgICBpbnQKKy0gICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIGlwU3lzdGVtU3RhdHNJbkJjYXN0UGt0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0luQmNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzSENJbkJjYXN0UGt0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0hDSW5CY2FzdFBrdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c091dEJjYXN0UGt0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c091dEJjYXN0UGt0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzT3V0QmNhc3RQa3RzX3ZhbF9wdHIpOworLSAgICBpbnQKKy0gICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dEJjYXN0UGt0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0cik7CistICAgIGludAorLSAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisrICAgIGludCBpcFN5c3RlbVN0YXRzRGlzY29udGludWl0eVRpbWVfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIpOworLSAgICBpbnQKKy0gICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIGlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZV9nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c1JlZnJlc2hSYXRlX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyKTsKKy0KKy0KKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeChpcFN5c3RlbVN0YXRzVGFibGVfbWliX2luZGV4CisrICAgIGludCBpcFN5c3RlbVN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeChpcFN5c3RlbVN0YXRzVGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRibF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJUFZlcnNpb25fdmFsKTsKKy0gICAgaW50CistICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICAKKy0gICAgICAgIAorLSAgICAgICAgCistICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfaW5kZXhlc19zZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorKyAgICBpbnQgaXBTeXN0ZW1TdGF0c1RhYmxlX2luZGV4ZXNfc2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBpcFN5c3RlbVN0YXRzSVBWZXJzaW9uX3ZhbCk7CisgCistCistCisgICAgIC8qCisgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICogU0VUIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuYworKysrIG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jCitAQCAtNjc0LDEwICs2NzQsMTAgQEAgX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwU3lzdGVtUworICAgICAgICAgICogaXBTeXN0ZW1TdGF0c0hDSW5SZWNlaXZlcyg0KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JUFNZU1RFTVNUQVRTSENJTlJFQ0VJVkVTOgorLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisrICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICAgcmMgPSBpcFN5c3RlbVN0YXRzSENJblJlY2VpdmVzX2dldChyb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitAQCAtNjk0LDEwICs2OTQsMTAgQEAgX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwU3lzdGVtUworICAgICAgICAgICogaXBTeXN0ZW1TdGF0c0hDSW5PY3RldHMoNikvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAgKi8KKyAgICAgY2FzZSBDT0xVTU5fSVBTWVNURU1TVEFUU0hDSU5PQ1RFVFM6CistICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKysgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKKyAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgICByYyA9IGlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX2dldChyb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgLyoKK0BAIC03NjQsMTAgKzc2NCwxMCBAQCBfaXBTeXN0ZW1TdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBTeXN0ZW1TCisgICAgICAgICAgKiBpcFN5c3RlbVN0YXRzSENJbkZvcndEYXRhZ3JhbXMoMTMpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgICovCisgICAgIGNhc2UgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lORk9SV0RBVEFHUkFNUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgIHJjID0gaXBTeXN0ZW1TdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX2dldChyb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorQEAgLTgyNCwxMCArODI0LDEwIEBAIF9pcFN5c3RlbVN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcFN5c3RlbVMKKyAgICAgICAgICAqIGlwU3lzdGVtU3RhdHNIQ0luRGVsaXZlcnMoMTkpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgICovCisgICAgIGNhc2UgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lOREVMSVZFUlM6CistICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKysgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKKyAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgICByYyA9IGlwU3lzdGVtU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgLyoKK0BAIC04NDQsMTAgKzg0NCwxMCBAQCBfaXBTeXN0ZW1TdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBTeXN0ZW1TCisgICAgICAgICAgKiBpcFN5c3RlbVN0YXRzSENPdXRSZXF1ZXN0cygyMSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAgKi8KKyAgICAgY2FzZSBDT0xVTU5fSVBTWVNURU1TVEFUU0hDT1VUUkVRVUVTVFM6CistICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKysgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKKyAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgICByYyA9IGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX2dldChyb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgLyoKK0BAIC04NzQsMTAgKzg3NCwxMCBAQCBfaXBTeXN0ZW1TdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBTeXN0ZW1TCisgICAgICAgICAgKiBpcFN5c3RlbVN0YXRzSENPdXRGb3J3RGF0YWdyYW1zKDI0KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRGT1JXREFUQUdSQU1TOgorLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisrICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICAgcmMgPSBpcFN5c3RlbVN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldChyb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitAQCAtOTQ0LDEwICs5NDQsMTAgQEAgX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwU3lzdGVtUworICAgICAgICAgICogaXBTeXN0ZW1TdGF0c0hDT3V0VHJhbnNtaXRzKDMxKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRUUkFOU01JVFM6CistICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKysgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKKyAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgICByYyA9IGlwU3lzdGVtU3RhdHNIQ091dFRyYW5zbWl0c19nZXQocm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgLyoKK0BAIC05NjQsMTAgKzk2NCwxMCBAQCBfaXBTeXN0ZW1TdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBTeXN0ZW1TCisgICAgICAgICAgKiBpcFN5c3RlbVN0YXRzSENPdXRPY3RldHMoMzMpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgICovCisgICAgIGNhc2UgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ09VVE9DVEVUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgIHJjID0gaXBTeXN0ZW1TdGF0c0hDT3V0T2N0ZXRzX2dldChyb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorQEAgLTk4NCwxMCArOTg0LDEwIEBAIF9pcFN5c3RlbVN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcFN5c3RlbVMKKyAgICAgICAgICAqIGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzKDM1KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JUFNZU1RFTVNUQVRTSENJTk1DQVNUUEtUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgIHJjID0gaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorQEAgLTEwMDQsMTAgKzEwMDQsMTAgQEAgX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwU3lzdGVtUworICAgICAgICAgICogaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0cygzNykvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAgKi8KKyAgICAgY2FzZSBDT0xVTU5fSVBTWVNURU1TVEFUU0hDSU5NQ0FTVE9DVEVUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgIHJjID0gaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0c19nZXQocm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorQEAgLTEwMjQsMTAgKzEwMjQsMTAgQEAgX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwU3lzdGVtUworICAgICAgICAgICogaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RQa3RzKDM5KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRNQ0FTVFBLVFM6CistICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKysgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKKyAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgICByYyA9IGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgLyoKK0BAIC0xMDQ0LDEwICsxMDQ0LDEwIEBAIF9pcFN5c3RlbVN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcFN5c3RlbVMKKyAgICAgICAgICAqIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzKDQxKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICAqLworICAgICBjYXNlIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRNQ0FTVE9DVEVUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgIHJjID0gaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RPY3RldHNfZ2V0KHJvd3JlcV9jdHgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorQEAgLTEwNjQsMTAgKzEwNjQsMTAgQEAgX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwU3lzdGVtUworICAgICAgICAgICogaXBTeXN0ZW1TdGF0c0hDSW5CY2FzdFBrdHMoNDMpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgICovCisgICAgIGNhc2UgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lOQkNBU1RQS1RTOgorLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisrICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICAgcmMgPSBpcFN5c3RlbVN0YXRzSENJbkJjYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIC8qCitAQCAtMTA4NCwxMCArMTA4NCwxMCBAQCBfaXBTeXN0ZW1TdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBTeXN0ZW1TCisgICAgICAgICAgKiBpcFN5c3RlbVN0YXRzSENPdXRCY2FzdFBrdHMoNDUpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgICovCisgICAgIGNhc2UgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ09VVEJDQVNUUEtUUzoKKy0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgIHJjID0gaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAvKgorSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXNubXAtNS43LjMub3JpZy9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaAorKysrIG5ldC1zbm1wLTUuNy4zL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCitAQCAtNTgsNDUgKzU4LDQ1IEBAIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfaXBzdGF0c19zIHsKKyAgICAgKiBvdGhlciBjb2x1bW5zLCB3aGVuIHVuZGVybHlpbmcgT1MgZG9lcyBub3QgcHJvdmlkZSB0aGVtLgorICAgICAqIEFsd2F5cyBmaWxsIGF0IGxlYXN0IDMyIGJpdHMsIHRoZSB0YWJsZSBpcyBwZXJpb2RpY2FsbHkgcG9sbGVkIC0+IDMyIGJpdAorICAgICAqIG92ZXJmbG93IHNoYWxsIGJlIGRldGVjdGVkIGFuZCA2NCBiaXQgdmFsdWUgc2hvdWxkIGJlIGNvbXB1dGVkIGF1dG9tYXRpY2FsbHkuICovCistICAgVTY0ICAgICAgICAgICAgIEhDSW5SZWNlaXZlczsKKy0gICBVNjQgICAgICAgICAgICAgSENJbk9jdGV0czsKKysgICBzdHJ1Y3QgY291bnRlcjY0IEhDSW5SZWNlaXZlczsKKysgICBzdHJ1Y3QgY291bnRlcjY0IEhDSW5PY3RldHM7CisgICAgdV9sb25nICAgICAgICAgIEluSGRyRXJyb3JzOworLSAgIFU2NCAgICAgICAgICAgICBIQ0luTm9Sb3V0ZXM7IAorKyAgIHN0cnVjdCBjb3VudGVyNjQgSENJbk5vUm91dGVzOyAKKyAgICB1X2xvbmcgICAgICAgICAgSW5BZGRyRXJyb3JzOworICAgIHVfbG9uZyAgICAgICAgICBJblVua25vd25Qcm90b3M7CisgICAgdV9sb25nICAgICAgICAgIEluVHJ1bmNhdGVkUGt0czsKKyAgICAKKyAgICAvKiBvcHRpb25hbCwgY2FuIGJlIGNvbXB1dGVkIGZyb20gSENJbk5vUm91dGVzIGFuZCBIQ091dEZvcndEYXRhZ3JhbXMgKi8KKy0gICBVNjQgICAgICAgICAgICAgSENJbkZvcndEYXRhZ3JhbXM7IAorKyAgIHN0cnVjdCBjb3VudGVyNjQgSENJbkZvcndEYXRhZ3JhbXM7IAorICAgIAorICAgIHVfbG9uZyAgICAgICAgICBSZWFzbVJlcWRzOworICAgIHVfbG9uZyAgICAgICAgICBSZWFzbU9LczsKKyAgICB1X2xvbmcgICAgICAgICAgUmVhc21GYWlsczsKKyAgICB1X2xvbmcgICAgICAgICAgSW5EaXNjYXJkczsKKy0gICBVNjQgICAgICAgICAgICAgSENJbkRlbGl2ZXJzOworLSAgIFU2NCAgICAgICAgICAgICBIQ091dFJlcXVlc3RzOworLSAgIFU2NCAgICAgICAgICAgICBIQ091dE5vUm91dGVzOworLSAgIFU2NCAgICAgICAgICAgICBIQ091dEZvcndEYXRhZ3JhbXM7CistICAgVTY0ICAgICAgICAgICAgIEhDT3V0RGlzY2FyZHM7CisrICAgc3RydWN0IGNvdW50ZXI2NCBIQ0luRGVsaXZlcnM7CisrICAgc3RydWN0IGNvdW50ZXI2NCBIQ091dFJlcXVlc3RzOworKyAgIHN0cnVjdCBjb3VudGVyNjQgSENPdXROb1JvdXRlczsKKysgICBzdHJ1Y3QgY291bnRlcjY0IEhDT3V0Rm9yd0RhdGFncmFtczsKKysgICBzdHJ1Y3QgY291bnRlcjY0IEhDT3V0RGlzY2FyZHM7CisgICAgCisgICAgLyogb3B0aW9uYWwsIGNhbiBiZSBjb21wdXRlZCBmcm9tIEhDT3V0RnJhZ09LcyArIEhDT3V0RnJhZ0ZhaWxzKi8KKy0gICBVNjQgICAgICAgICAgICAgSENPdXRGcmFnUmVxZHM7CistICAgVTY0ICAgICAgICAgICAgIEhDT3V0RnJhZ09LczsKKy0gICBVNjQgICAgICAgICAgICAgSENPdXRGcmFnRmFpbHM7CistICAgVTY0ICAgICAgICAgICAgIEhDT3V0RnJhZ0NyZWF0ZXM7CisrICAgc3RydWN0IGNvdW50ZXI2NCBIQ091dEZyYWdSZXFkczsKKysgICBzdHJ1Y3QgY291bnRlcjY0IEhDT3V0RnJhZ09LczsKKysgICBzdHJ1Y3QgY291bnRlcjY0IEhDT3V0RnJhZ0ZhaWxzOworKyAgIHN0cnVjdCBjb3VudGVyNjQgSENPdXRGcmFnQ3JlYXRlczsKKyAgICAKKyAgICAvKiBvcHRpb25hbCwgY2FuIGJlIGNvbXB1dGVkIGZyb20gCisgICAgICogSENPdXRSZXF1ZXN0cyArSENPdXRGb3J3RGF0YWdyYW1zICsgSENPdXRGcmFnQ3JlYXRlcworICAgICAqIC0gSENPdXRGcmFnUmVxZHMgLSBIQ091dE5vUm91dGVzICAtIEhDT3V0RGlzY2FyZHMgKi8KKy0gICBVNjQgICAgICAgICAgICAgSENPdXRUcmFuc21pdHM7CisrICAgc3RydWN0IGNvdW50ZXI2NCBIQ091dFRyYW5zbWl0czsKKyAgICAKKy0gICBVNjQgICAgICAgICAgICAgSENPdXRPY3RldHM7CistICAgVTY0ICAgICAgICAgICAgIEhDSW5NY2FzdFBrdHM7CistICAgVTY0ICAgICAgICAgICAgIEhDSW5NY2FzdE9jdGV0czsKKy0gICBVNjQgICAgICAgICAgICAgSENPdXRNY2FzdFBrdHM7CistICAgVTY0ICAgICAgICAgICAgIEhDT3V0TWNhc3RPY3RldHM7CistICAgVTY0ICAgICAgICAgICAgIEhDSW5CY2FzdFBrdHM7CistICAgVTY0ICAgICAgICAgICAgIEhDT3V0QmNhc3RQa3RzOworKyAgIHN0cnVjdCBjb3VudGVyNjQgSENPdXRPY3RldHM7CisrICAgc3RydWN0IGNvdW50ZXI2NCBIQ0luTWNhc3RQa3RzOworKyAgIHN0cnVjdCBjb3VudGVyNjQgSENJbk1jYXN0T2N0ZXRzOworKyAgIHN0cnVjdCBjb3VudGVyNjQgSENPdXRNY2FzdFBrdHM7CisrICAgc3RydWN0IGNvdW50ZXI2NCBIQ091dE1jYXN0T2N0ZXRzOworKyAgIHN0cnVjdCBjb3VudGVyNjQgSENJbkJjYXN0UGt0czsKKysgICBzdHJ1Y3QgY291bnRlcjY0IEhDT3V0QmNhc3RQa3RzOworIAorICAgIC8qIEFycmF5IG9mIGF2YWlsYWJsZSBjb2x1bW5zLiovCisgICAgaW50ICAgICAgICAgICAgIGNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9MQVNUKzFdOworSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXNubXAtNS43LjMub3JpZy9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorKysrIG5ldC1zbm1wLTUuNy4zL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCitAQCAtNSwzMSArNSwyOSBAQAorIGV4dGVybiAgICAgICAgICAiQyIgeworICNlbmRpZgorIAorLSAgICB0eXBlZGVmIHN0cnVjdCBjb3VudGVyNjQgVTY0OworLQorICNkZWZpbmUgSTY0Q0hBUlNaIDIxCisgCistICAgIHZvaWQgICAgICAgICAgICBkaXZCeTEwKFU2NCwgVTY0ICosIHVuc2lnbmVkIGludCAqKTsKKy0gICAgdm9pZCAgICAgICAgICAgIG11bHRCeTEwKFU2NCwgVTY0ICopOworLSAgICB2b2lkICAgICAgICAgICAgaW5jckJ5VTE2KFU2NCAqLCB1bnNpZ25lZCBpbnQpOworLSAgICB2b2lkICAgICAgICAgICAgaW5jckJ5VTMyKFU2NCAqLCB1bnNpZ25lZCBpbnQpOworKyAgICB2b2lkICAgICAgICAgICAgZGl2QnkxMChzdHJ1Y3QgY291bnRlcjY0LCBzdHJ1Y3QgY291bnRlcjY0ICosIHVuc2lnbmVkIGludCAqKTsKKysgICAgdm9pZCAgICAgICAgICAgIG11bHRCeTEwKHN0cnVjdCBjb3VudGVyNjQsIHN0cnVjdCBjb3VudGVyNjQgKik7CisrICAgIHZvaWQgICAgICAgICAgICBpbmNyQnlVMTYoc3RydWN0IGNvdW50ZXI2NCAqLCB1bnNpZ25lZCBpbnQpOworKyAgICB2b2lkICAgICAgICAgICAgaW5jckJ5VTMyKHN0cnVjdCBjb3VudGVyNjQgKiwgdW5zaWduZWQgaW50KTsKKyAgICAgTkVUU05NUF9JTVBPUlQKKy0gICAgdm9pZCAgICAgICAgICAgIHplcm9VNjQoVTY0ICopOworLSAgICBpbnQgICAgICAgICAgICAgaXNaZXJvVTY0KGNvbnN0IFU2NCAqKTsKKysgICAgdm9pZCAgICAgICAgICAgIHplcm9VNjQoc3RydWN0IGNvdW50ZXI2NCAqKTsKKysgICAgaW50ICAgICAgICAgICAgIGlzWmVyb1U2NChjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICopOworICAgICBORVRTTk1QX0lNUE9SVAorLSAgICB2b2lkICAgICAgICAgICAgcHJpbnRVNjQoY2hhciAqLCBjb25zdCBVNjQgKik7CisrICAgIHZvaWQgICAgICAgICAgICBwcmludFU2NChjaGFyICosIGNvbnN0IHN0cnVjdCBjb3VudGVyNjQgKik7CisgICAgIE5FVFNOTVBfSU1QT1JUCistICAgIHZvaWQgICAgICAgICAgICBwcmludEk2NChjaGFyICosIGNvbnN0IFU2NCAqKTsKKy0gICAgaW50ICAgICAgICAgICAgIHJlYWQ2NChVNjQgKiwgY29uc3QgY2hhciAqKTsKKysgICAgdm9pZCAgICAgICAgICAgIHByaW50STY0KGNoYXIgKiwgY29uc3Qgc3RydWN0IGNvdW50ZXI2NCAqKTsKKysgICAgaW50ICAgICAgICAgICAgIHJlYWQ2NChzdHJ1Y3QgY291bnRlcjY0ICosIGNvbnN0IGNoYXIgKik7CisgICAgIE5FVFNOTVBfSU1QT1JUCistICAgIHZvaWQgICAgICAgICAgICB1NjRTdWJ0cmFjdChjb25zdCBVNjQgKiBwdTY0b25lLCBjb25zdCBVNjQgKiBwdTY0dHdvLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogcHU2NG91dCk7CistICAgIHZvaWQgICAgICAgICAgICB1NjRJbmNyKFU2NCAqIHB1NjRvdXQsIGNvbnN0IFU2NCAqIHB1NjRvbmUpOworLSAgICB2b2lkICAgICAgICAgICAgdTY0VXBkYXRlQ291bnRlcihVNjQgKiBwdTY0b3V0LCBjb25zdCBVNjQgKiBwdTY0b25lLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVNjQgKiBwdTY0dHdvKTsKKy0gICAgdm9pZCAgICAgICAgICAgIHU2NENvcHkoVTY0ICogcHU2NG9uZSwgY29uc3QgVTY0ICogcHU2NHR3byk7CisrICAgIHZvaWQgICAgICAgICAgICB1NjRTdWJ0cmFjdChjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0b25lLCBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0dHdvLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqcHU2NG91dCk7CisrICAgIHZvaWQgICAgICAgICAgICB1NjRJbmNyKHN0cnVjdCBjb3VudGVyNjQgKnB1NjRvdXQsIGNvbnN0IHN0cnVjdCBjb3VudGVyNjQgKnB1NjRvbmUpOworKyAgICB2b2lkICAgICAgICAgICAgdTY0VXBkYXRlQ291bnRlcihzdHJ1Y3QgY291bnRlcjY0ICpwdTY0b3V0LCBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0b25lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0dHdvKTsKKysgICAgdm9pZCAgICAgICAgICAgIHU2NENvcHkoc3RydWN0IGNvdW50ZXI2NCAqcHU2NG9uZSwgY29uc3Qgc3RydWN0IGNvdW50ZXI2NCAqcHU2NHR3byk7CisgCistICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX2M2NF9jaGVja19mb3JfMzJiaXRfd3JhcChVNjQgKm9sZF92YWwsIFU2NCAqbmV3X3ZhbCwKKysgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrX2Zvcl8zMmJpdF93cmFwKHN0cnVjdCBjb3VudGVyNjQgKm9sZF92YWwsIHN0cnVjdCBjb3VudGVyNjQgKm5ld192YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWRqdXN0KTsKKyAgICAgTkVUU05NUF9JTVBPUlQKKyAgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZShzdHJ1Y3QgY291bnRlcjY0ICpwcmV2X3ZhbCwKK0luZGV4OiBuZXQtc25tcC01LjcuMy9zbm1wbGliL2ludDY0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXQtc25tcC01LjcuMy5vcmlnL3NubXBsaWIvaW50NjQuYworKysrIG5ldC1zbm1wLTUuNy4zL3NubXBsaWIvaW50NjQuYworQEAgLTMzLDcgKzMzLDcgQEAKKyAgKiBAcGFyYW1bb3V0XSBwdVIgICBSZW1haW5kZXIuCisgICovCisgdm9pZAorLWRpdkJ5MTAoVTY0IHU2NCwgVTY0ICogcHU2NFEsIHVuc2lnbmVkIGludCAqcHVSKQorK2RpdkJ5MTAoc3RydWN0IGNvdW50ZXI2NCB1NjQsIHN0cnVjdCBjb3VudGVyNjQgKnB1NjRRLCB1bnNpZ25lZCBpbnQgKnB1UikKKyB7CisgICAgIHVuc2lnbmVkIGxvbmcgICB1bFQ7CisgICAgIHVuc2lnbmVkIGxvbmcgICB1bFE7CitAQCAtODMsNyArODMsNyBAQCBkaXZCeTEwKFU2NCB1NjQsIFU2NCAqIHB1NjRRLCB1bnNpZ25lZCBpCisgICogQHBhcmFtW291dF0gcHU2NFAgUHJvZHVjdC4KKyAgKi8KKyB2b2lkCistbXVsdEJ5MTAoVTY0IHU2NCwgVTY0ICogcHU2NFApCisrbXVsdEJ5MTAoc3RydWN0IGNvdW50ZXI2NCB1NjQsIHN0cnVjdCBjb3VudGVyNjQgKnB1NjRQKQorIHsKKyAgICAgdW5zaWduZWQgbG9uZyAgIHVsVDsKKyAgICAgdW5zaWduZWQgbG9uZyAgIHVsUDsKK0BAIC0xMzAsNyArMTMwLDcgQEAgbXVsdEJ5MTAoVTY0IHU2NCwgVTY0ICogcHU2NFApCisgICoKKyAgKi8KKyB2b2lkCistaW5jckJ5VTE2KFU2NCAqIHB1NjQsIHVuc2lnbmVkIGludCB1MTYpCisraW5jckJ5VTE2KHN0cnVjdCBjb3VudGVyNjQgKnB1NjQsIHVuc2lnbmVkIGludCB1MTYpCisgeworICAgICBpbmNyQnlVMzIocHU2NCwgdTE2KTsKKyB9CitAQCAtMTQzLDcgKzE0Myw3IEBAIGluY3JCeVUxNihVNjQgKiBwdTY0LCB1bnNpZ25lZCBpbnQgdTE2KQorICAqCisgICovCisgdm9pZAorLWluY3JCeVUzMihVNjQgKiBwdTY0LCB1bnNpZ25lZCBpbnQgdTMyKQorK2luY3JCeVUzMihzdHJ1Y3QgY291bnRlcjY0ICpwdTY0LCB1bnNpZ25lZCBpbnQgdTMyKQorIHsKKyAgICAgdWludDMyX3QgdG1wOworIAorQEAgLTE2MSw3ICsxNjEsNyBAQCBpbmNyQnlVMzIoVTY0ICogcHU2NCwgdW5zaWduZWQgaW50IHUzMikKKyAgKiBAcGFyYW1bb3V0XSBwdTY0b3V0IHB1NjRvbmUgLSBwdTY0dHdvLgorICAqLworIHZvaWQKKy11NjRTdWJ0cmFjdChjb25zdCBVNjQgKiBwdTY0b25lLCBjb25zdCBVNjQgKiBwdTY0dHdvLCBVNjQgKiBwdTY0b3V0KQorK3U2NFN1YnRyYWN0KGNvbnN0IHN0cnVjdCBjb3VudGVyNjQgKnB1NjRvbmUsIGNvbnN0IHN0cnVjdCBjb3VudGVyNjQgKnB1NjR0d28sIHN0cnVjdCBjb3VudGVyNjQgKnB1NjRvdXQpCisgeworICAgICBpbnQgY2Fycnk7CisgCitAQCAtMTc3LDcgKzE3Nyw3IEBAIHU2NFN1YnRyYWN0KGNvbnN0IFU2NCAqIHB1NjRvbmUsIGNvbnN0IFUKKyAgKiBAcGFyYW1baW4sb3V0XSBwdTY0b3V0IHB1NjRvdXQgKz0gcHU2NG9uZS4KKyAgKi8KKyB2b2lkCistdTY0SW5jcihVNjQgKiBwdTY0b3V0LCBjb25zdCBVNjQgKiBwdTY0b25lKQorK3U2NEluY3Ioc3RydWN0IGNvdW50ZXI2NCAqcHU2NG91dCwgY29uc3Qgc3RydWN0IGNvdW50ZXI2NCAqcHU2NG9uZSkKKyB7CisgICAgIHB1NjRvdXQtPmhpZ2ggPSAodWludDMyX3QpKHB1NjRvdXQtPmhpZ2ggKyBwdTY0b25lLT5oaWdoKTsKKyAgICAgaW5jckJ5VTMyKHB1NjRvdXQsIHB1NjRvbmUtPmxvdyk7CitAQCAtMTkxLDkgKzE5MSw5IEBAIHU2NEluY3IoVTY0ICogcHU2NG91dCwgY29uc3QgVTY0ICogcHU2NG8KKyAgKiBAcGFyYW1bb3V0XSBwdTY0b3V0IHB1NjRvdXQgKz0gKHB1NjRvbmUgLSBwdTY0dHdvKQorICAqLworIHZvaWQKKy11NjRVcGRhdGVDb3VudGVyKFU2NCAqIHB1NjRvdXQsIGNvbnN0IFU2NCAqIHB1NjRvbmUsIGNvbnN0IFU2NCAqIHB1NjR0d28pCisrdTY0VXBkYXRlQ291bnRlcihzdHJ1Y3QgY291bnRlcjY0ICpwdTY0b3V0LCBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0b25lLCBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0dHdvKQorIHsKKy0gICAgVTY0IHRtcDsKKysgICAgc3RydWN0IGNvdW50ZXI2NCB0bXA7CisgCisgICAgIHU2NFN1YnRyYWN0KHB1NjRvbmUsIHB1NjR0d28sICZ0bXApOworICAgICB1NjRJbmNyKHB1NjRvdXQsICZ0bXApOworQEAgLTIwOCw3ICsyMDgsNyBAQCBuZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodTY0Y29weSwgbmV0c25tCisgICogQHBhcmFtW291dF0gcHU2NG9uZSBXaGVyZSB0byBzdG9yZSB0aGUgY29weSAtICpwdTY0b25lID0gKnB1NjR0d28uCisgICovCisgdm9pZAorLXU2NENvcHkoVTY0ICogcHU2NG9uZSwgY29uc3QgVTY0ICogcHU2NHR3bykKKyt1NjRDb3B5KHN0cnVjdCBjb3VudGVyNjQgKnB1NjRvbmUsIGNvbnN0IHN0cnVjdCBjb3VudGVyNjQgKnB1NjR0d28pCisgeworICAgICAqcHU2NG9uZSA9ICpwdTY0dHdvOworIH0KK0BAIC0yMjAsNyArMjIwLDcgQEAgdTY0Q29weShVNjQgKiBwdTY0b25lLCBjb25zdCBVNjQgKiBwdTY0dAorICAqIEBwYXJhbVtpbl0gcHU2NCBOdW1iZXIgdG8gYmUgemVyb2VkLgorICAqLworIHZvaWQKKy16ZXJvVTY0KFU2NCAqIHB1NjQpCisremVyb1U2NChzdHJ1Y3QgY291bnRlcjY0ICpwdTY0KQorIHsKKyAgICAgcHU2NC0+bG93ID0gMDsKKyAgICAgcHU2NC0+aGlnaCA9IDA7CitAQCAtMjMyLDcgKzIzMiw3IEBAIHplcm9VNjQoVTY0ICogcHU2NCkKKyAgKiBAcGFyYW1baW5dIHB1NjQgTnVtYmVyIHRvIGJlIGNoZWNrZWQuCisgICovCisgaW50CistaXNaZXJvVTY0KGNvbnN0IFU2NCAqIHB1NjQpCisraXNaZXJvVTY0KGNvbnN0IHN0cnVjdCBjb3VudGVyNjQgKnB1NjQpCisgeworICAgICByZXR1cm4gcHU2NC0+bG93ID09IDAgJiYgcHU2NC0+aGlnaCA9PSAwOworIH0KK0BAIC0zOTAsMTAgKzM5MCwxMCBAQCBuZXRzbm1wX2M2NF9jaGVjazMyX2FuZF91cGRhdGUoc3RydWN0IGNvCisgLyoqIENvbnZlcnQgYW4gdW5zaWduZWQgNjQtYml0IG51bWJlciB0byBBU0NJSS4gKi8KKyB2b2lkCisgcHJpbnRVNjQoY2hhciAqYnVmLCAvKiBjaGFyIFtJNjRDSEFSU1orMV07ICovCistICAgICAgICAgY29uc3QgVTY0ICogcHU2NCkKKysgICAgICAgICBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0KQorIHsKKy0gICAgVTY0ICAgICAgICAgICAgIHU2NGE7CistICAgIFU2NCAgICAgICAgICAgICB1NjRiOworKyAgICBzdHJ1Y3QgY291bnRlcjY0IHU2NGE7CisrICAgIHN0cnVjdCBjb3VudGVyNjQgdTY0YjsKKyAKKyAgICAgY2hhciAgICAgICAgICAgIGFSZXNbSTY0Q0hBUlNaICsgMV07CisgICAgIHVuc2lnbmVkIGludCAgICB1OworQEAgLTQxNCw5ICs0MTQsOSBAQCBwcmludFU2NChjaGFyICpidWYsIC8qIGNoYXIgW0k2NENIQVJTWisxCisgLyoqIENvbnZlcnQgYSBzaWduZWQgNjQtYml0IG51bWJlciB0byBBU0NJSS4gKi8KKyB2b2lkCisgcHJpbnRJNjQoY2hhciAqYnVmLCAvKiBjaGFyIFtJNjRDSEFSU1orMV07ICovCistICAgICAgICAgY29uc3QgVTY0ICogcHU2NCkKKysgICAgICAgICBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0KQorIHsKKy0gICAgVTY0ICAgICAgICAgICAgIHU2NGE7CisrICAgIHN0cnVjdCBjb3VudGVyNjQgdTY0YTsKKyAKKyAgICAgaWYgKHB1NjQtPmhpZ2ggJiAweDgwMDAwMDAwKSB7CisgICAgICAgICB1NjRhLmhpZ2ggPSAodWludDMyX3QpIH5wdTY0LT5oaWdoOworQEAgLTQyOSwxMSArNDI5LDExIEBAIHByaW50STY0KGNoYXIgKmJ1ZiwgLyogY2hhciBbSTY0Q0hBUlNaKzEKKyAgICAgfQorIH0KKyAKKy0vKiogQ29udmVydCBhIHNpZ25lZCA2NC1iaXQgaW50ZWdlciBmcm9tIEFTQ0lJIHRvIFU2NC4gKi8KKysvKiogQ29udmVydCBhIHNpZ25lZCA2NC1iaXQgaW50ZWdlciBmcm9tIEFTQ0lJIHRvIHN0cnVjdCBjb3VudGVyNjQuICovCisgaW50CistcmVhZDY0KFU2NCAqIGk2NCwgY29uc3QgY2hhciAqc3RyKQorK3JlYWQ2NChzdHJ1Y3QgY291bnRlcjY0ICppNjQsIGNvbnN0IGNoYXIgKnN0cikKKyB7CistICAgIFU2NCAgICAgICAgICAgICBpNjRwOworKyAgICBzdHJ1Y3QgY291bnRlcjY0IGk2NHA7CisgICAgIHVuc2lnbmVkIGludCAgICB1OworICAgICBpbnQgICAgICAgICAgICAgc2lnbiA9IDA7CisgICAgIGludCAgICAgICAgICAgICBvayA9IDA7CitJbmRleDogbmV0LXNubXAtNS43LjMvc25tcGxpYi9yZWFkX2NvbmZpZy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXNubXAtNS43LjMub3JpZy9zbm1wbGliL3JlYWRfY29uZmlnLmMKKysrKyBuZXQtc25tcC01LjcuMy9zbm1wbGliL3JlYWRfY29uZmlnLmMKK0BAIC0yMjcwLDEwICsyMjcwLDEwIEBAIHJlYWRfY29uZmlnX3JlYWRfbWVtb3J5KGludCB0eXBlLCBjaGFyICoKKyAgICAgICAgIHJldHVybiByZWFkZnJvbTsKKyAKKyAgICAgY2FzZSBBU05fQ09VTlRFUjY0OgorLSAgICAgICAgaWYgKCpsZW4gPCBzaXplb2YoVTY0KSkKKysgICAgICAgIGlmICgqbGVuIDwgc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpKQorICAgICAgICAgICAgIHJldHVybiBOVUxMOworLSAgICAgICAgKmxlbiA9IHNpemVvZihVNjQpOworLSAgICAgICAgcmVhZDY0KChVNjQgKikgZGF0YXB0ciwgcmVhZGZyb20pOworKyAgICAgICAgKmxlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKKysgICAgICAgIHJlYWQ2NCgoc3RydWN0IGNvdW50ZXI2NCAqKSBkYXRhcHRyLCByZWFkZnJvbSk7CisgICAgICAgICByZWFkZnJvbSA9IHNraXBfdG9rZW4ocmVhZGZyb20pOworICAgICAgICAgcmV0dXJuIHJlYWRmcm9tOworICAgICB9CitJbmRleDogbmV0LXNubXAtNS43LjMvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDE1aW50NjRfY2xpYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXNubXAtNS43LjMub3JpZy90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTVpbnQ2NF9jbGliLmMKKysrKyBuZXQtc25tcC01LjcuMy90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTVpbnQ2NF9jbGliLmMKK0BAIC0xLDQgKzEsNCBAQAorLS8qIEhFQURFUiBUZXN0aW5nIDY0LWJpdCBpbnRlZ2VyIG9wZXJhdGlvbnMgKFU2NCkuICovCisrLyogSEVBREVSIFRlc3RpbmcgNjQtYml0IGludGVnZXIgb3BlcmF0aW9ucyAoc3RydWN0IGNvdW50ZXI2NCkuICovCisgCisgaW50IGksIGo7CisgY2hhciBidWZbMjJdOworQEAgLTE1LDcgKzE1LDcgQEAgc3RhdGljIGNvbnN0IGludDY0X3QgaW50dmFsW10gPSB7CisgfTsKKyAKKyBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGludHZhbCkvc2l6ZW9mKGludHZhbFswXSk7ICsraSkgeworLSAgICBVNjQgYSwgYjsKKysgICAgc3RydWN0IGNvdW50ZXI2NCBhLCBiOworICAgICBhLmxvdyA9ICh1aW50MzJfdClpbnR2YWxbaV07CisgICAgIGEuaGlnaCA9ICh1aW50MzJfdCkoaW50dmFsW2ldID4+IDMyKTsKKyAgICAgcHJpbnRJNjQoYnVmLCAmYSk7CitAQCAtMjcsNyArMjcsNyBAQCBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGludHZhbCkvc2l6ZW9mKGluCisgCisgZm9yIChpID0gMDsgaSA8IHNpemVvZihpbnR2YWwpL3NpemVvZihpbnR2YWxbMF0pOyArK2kpIHsKKyAgICAgZm9yIChqID0gaTsgaiA8IHNpemVvZihpbnR2YWwpL3NpemVvZihpbnR2YWxbMF0pOyArK2opIHsKKy0gICAgICAgIFU2NCBhLCBiOworKyAgICAgICAgc3RydWN0IGNvdW50ZXI2NCBhLCBiOworICAgICAgICAgdWludDY0X3QgZDsKKyAgICAgICAgIGEubG93ID0gKHVpbnQzMl90KWludHZhbFtpXTsKKyAgICAgICAgIGEuaGlnaCA9ICh1aW50MzJfdCkoaW50dmFsW2ldID4+IDMyKTsKK0BAIC00Myw3ICs0Myw3IEBAIGZvciAoaSA9IDA7IGkgPCBzaXplb2YoaW50dmFsKS9zaXplb2YoaW4KKyAgICAgICAgIAorIGZvciAoaSA9IDA7IGkgPCBzaXplb2YoaW50dmFsKS9zaXplb2YoaW50dmFsWzBdKTsgKytpKSB7CisgICAgIGZvciAoaiA9IGk7IGogPCBzaXplb2YoaW50dmFsKS9zaXplb2YoaW50dmFsWzBdKTsgKytqKSB7CistICAgICAgICBVNjQgYSwgYiwgYzsKKysgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgYSwgYiwgYzsKKyAgICAgICAgIHVpbnQ2NF90IGQ7CisgICAgICAgICBhLmxvdyA9ICh1aW50MzJfdClpbnR2YWxbaV07CisgICAgICAgICBhLmhpZ2ggPSAodWludDMyX3QpKGludHZhbFtpXSA+PiAzMik7CitAQCAtNTgsNyArNTgsNyBAQCBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGludHZhbCkvc2l6ZW9mKGluCisgfQorICAgICAgICAgCisgeworLSAgICBVNjQgb2xkX3ZhbCwgbmV3X3ZhbDsKKysgICAgc3RydWN0IGNvdW50ZXI2NCBvbGRfdmFsLCBuZXdfdmFsOworICAgICBvbGRfdmFsLmxvdyA9IDc7CisgICAgIG9sZF92YWwuaGlnaCA9IDA7CisgICAgIG5ld192YWwgPSBvbGRfdmFsOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1jb25maWdfb3NfaGVhZGVycy1FcnJvci1GaXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLWNvbmZpZ19vc19oZWFkZXJzLUVycm9yLUZpeC5wYXRjaAppbmRleCBjNjQwMWZlLi40NDM1OWJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLWNvbmZpZ19vc19oZWFkZXJzLUVycm9yLUZpeC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLWNvbmZpZ19vc19oZWFkZXJzLUVycm9yLUZpeC5wYXRjaApAQCAtMTcsMTEgKzE3LDExIEBACiAgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMgfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMgYi9jb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycwotaW5kZXggNzA4YWEwOS4uMGRmMzJjYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzCi0rKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycwotQEAgLTQ4Miw4ICs0ODIsOCBAQCB0aGVuCitJbmRleDogbmV0LXNubXAtNS43LjMvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXQtc25tcC01LjcuMy5vcmlnL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzCisrKysgbmV0LXNubXAtNS43LjMvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMKK0BAIC00ODQsOCArNDg0LDggQEAgdGhlbgogICAgICB1bnNldCBhY19jdl9oZWFkZXJfcGtnX2gKICAgICAgbmV0c25tcF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCiAgICAgIG5ldHNubXBfc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKQEAgLTMyLDYgKzMyLDMgQEAKICAgICAgQUNfQ0hFQ0tfSEVBREVSUyhwa2cuaCwKICAgICAgICAgIE5FVFNOTVBfU0VBUkNIX0xJQlMocGtnX2luaXQsIHBrZywKICAJICAgIEFDX0RFRklORShIQVZFX0xJQlBLRywgMSwgW2RlZmluZSBpZiB5b3UgaGF2ZSBCU0QgcGtnLW5nXSkpKQotLS0gCi0xLjguNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtc25tcGxpYi1VRFBJUHY2LXRyYW5zcG9ydC1BZGQtYS1taXNzaW5nLXJldHVybi1zdGF0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtc25tcGxpYi1VRFBJUHY2LXRyYW5zcG9ydC1BZGQtYS1taXNzaW5nLXJldHVybi1zdGF0ZS5wYXRjaAppbmRleCA2MjU1ZjdjLi41MjdhYTM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLXNubXBsaWItVURQSVB2Ni10cmFuc3BvcnQtQWRkLWEtbWlzc2luZy1yZXR1cm4tc3RhdGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1zbm1wbGliLVVEUElQdjYtdHJhbnNwb3J0LUFkZC1hLW1pc3NpbmctcmV0dXJuLXN0YXRlLnBhdGNoCkBAIC0xMiwxMSArMTIsMTEgQEAKICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYyB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCi1kaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYwotaW5kZXggMDI5YjE2NC4uMTFjMzliYiAxMDA2NDQKLS0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jCi0rKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYwotQEAgLTI4NSw2ICsyODUsNyBAQCBuZXRzbm1wX3VkcDZfdHJhbnNwb3J0KHN0cnVjdCBzb2NrYWRkcl9pbjYgKmFkZHIsIGludCBsb2NhbCkKK0luZGV4OiBuZXQtc25tcC01LjcuMy9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ldC1zbm1wLTUuNy4zLm9yaWcvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMKKysrKyBuZXQtc25tcC01LjcuMy9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYworQEAgLTMwNSw2ICszMDUsNyBAQCBuZXRzbm1wX3VkcDZfdHJhbnNwb3J0KHN0cnVjdCBzb2NrYWRkcl9pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm8sIHN0cmVycm9yKGVycm5vKSkpOwogICAgICAgICAgICAgICAgICBuZXRzbm1wX3NvY2tldGJhc2VfY2xvc2UodCk7CiAgICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CkBAIC0yNCw2ICsyNCwzIEBACiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgLyoKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvZml4LWxpYnRvb2wtZmluaXNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvZml4LWxpYnRvb2wtZmluaXNoLnBhdGNoCmluZGV4IGEzNjBjM2EuLmQyOWJlMzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL2ZpeC1saWJ0b29sLWZpbmlzaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9maXgtbGlidG9vbC1maW5pc2gucGF0Y2gKQEAgLTEwLDExICsxMCwxMSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiAtLS0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS50b3AgYi9NYWtlZmlsZS50b3AKLWluZGV4IDg2MmZiOTQuLmVkN2RjZmMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS50b3AKLSsrKyBiL01ha2VmaWxlLnRvcAotQEAgLTg2LDcgKzg2LDcgQEAgTElCUkVWSVNJT04gPSAyCitJbmRleDogbmV0LXNubXAtNS43LjMvTWFrZWZpbGUudG9wCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXNubXAtNS43LjMub3JpZy9NYWtlZmlsZS50b3AKKysrKyBuZXQtc25tcC01LjcuMy9NYWtlZmlsZS50b3AKK0BAIC04Nyw3ICs4Nyw3IEBAIExJQlJFVklTSU9OID0gMwogIExJQl9MRF9DTUQgICAgICA9ICQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChMSU5LQ0MpICQoQ0ZMQUdTKSAtcnBhdGggJChsaWJkaXIpIC12ZXJzaW9uLWluZm8gJChMSUJDVVJSRU5UKTokKExJQlJFVklTSU9OKTokKExJQkFHRSkgLW8KICBMSUJfRVhURU5TSU9OICAgPSBsYQogIExJQl9WRVJTSU9OICAgICA9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC01LjcuMi1maXgtZW5naW5lQm9vdHMtdmFsdWUtb24tU0lHSFVQLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvbmV0LXNubXAtNS43LjItZml4LWVuZ2luZUJvb3RzLXZhbHVlLW9uLVNJR0hVUC5wYXRjaAppbmRleCBlZmU4MDM4Li5mYmQyNzRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC01LjcuMi1maXgtZW5naW5lQm9vdHMtdmFsdWUtb24tU0lHSFVQLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL25ldC1zbm1wLTUuNy4yLWZpeC1lbmdpbmVCb290cy12YWx1ZS1vbi1TSUdIVVAucGF0Y2gKQEAgLTEyLDExICsxMiwxMSBAQAogIHNubXBsaWIvc25tcHYzLmMgfCA0ICsrLS0KICAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2FnZW50L3NubXBkLmMgYi9hZ2VudC9zbm1wZC5jCi1pbmRleCAwNTYwNDhhLi4xMmE3ZWExIDEwMDY0NAotLS0tIGEvYWdlbnQvc25tcGQuYwotKysrIGIvYWdlbnQvc25tcGQuYwotQEAgLTEyNDYsNiArMTI0Niw3IEBAIHJlY2VpdmUodm9pZCkKK0luZGV4OiBuZXQtc25tcC01LjcuMy9hZ2VudC9zbm1wZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9zbm1wZC5jCisrKysgbmV0LXNubXAtNS43LjMvYWdlbnQvc25tcGQuYworQEAgLTEyNTMsNiArMTI1Myw3IEBAIHJlY2VpdmUodm9pZCkKICAJICAgIHNubXBfbG9nKExPR19JTkZPLCAiTkVULVNOTVAgdmVyc2lvbiAlcyByZXN0YXJ0ZWRcbiIsCiAgCQkgICAgIG5ldHNubXBfZ2V0X3ZlcnNpb24oKSk7CiAgICAgICAgICAgICAgdXBkYXRlX2NvbmZpZygpOwpAQCAtMjQsMTEgKzI0LDExIEBACiAgICAgICAgICAgICAgc2VuZF9lYXN5X3RyYXAoU05NUF9UUkFQX0VOVEVSUFJJU0VTUEVDSUZJQywgMyk7CiAgI2lmIEhBVkVfU0lHSE9MRAogICAgICAgICAgICAgIHNpZ3JlbHNlKFNJR0hVUCk7Ci1kaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wdjMuYyBiL3NubXBsaWIvc25tcHYzLmMKLWluZGV4IDQzNWNhZmQuLjZhZDgyMDggMTAwNjQ0Ci0tLS0gYS9zbm1wbGliL3NubXB2My5jCi0rKysgYi9zbm1wbGliL3NubXB2My5jCi1AQCAtOTg0LDkgKzk4NCw5IEBAIGluaXRfc25tcHYzX3Bvc3RfY29uZmlnKGludCBtYWpvcmlkLCBpbnQgbWlub3JpZCwgdm9pZCAqc2VydmVyYXJnLAorSW5kZXg6IG5ldC1zbm1wLTUuNy4zL3NubXBsaWIvc25tcHYzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXQtc25tcC01LjcuMy5vcmlnL3NubXBsaWIvc25tcHYzLmMKKysrKyBuZXQtc25tcC01LjcuMy9zbm1wbGliL3NubXB2My5jCitAQCAtOTg0LDkgKzk4NCw5IEBAIGluaXRfc25tcHYzX3Bvc3RfY29uZmlnKGludCBtYWpvcmlkLCBpbnQKICAgICAgLyoKICAgICAgICogaWYgb3VyIGVuZ2luZUlEIGhhcyBjaGFuZ2VkIGF0IGFsbCwgdGhlIGJvb3RzIHJlY29yZCBtdXN0IGJlIHNldCB0byAxIAogICAgICAgKi8KQEAgLTQwLDYgKzQwLDMgQEAKICAgICAgICAgIGVuZ2luZUJvb3RzID0gMTsKICAgICAgfQogIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC10ZXN0aW5nLWFkZC10aGUtb3V0cHV0LWZvcm1hdC1mb3ItcHRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC10ZXN0aW5nLWFkZC10aGUtb3V0cHV0LWZvcm1hdC1mb3ItcHRlc3QucGF0Y2gKaW5kZXggOWZiMTliMy4uOGY4MzM2YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvbmV0LXNubXAtdGVzdGluZy1hZGQtdGhlLW91dHB1dC1mb3JtYXQtZm9yLXB0ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL25ldC1zbm1wLXRlc3RpbmctYWRkLXRoZS1vdXRwdXQtZm9ybWF0LWZvci1wdGVzdC5wYXRjaApAQCAtMTAsMTEgKzEwLDExIEBACiAgdGVzdGluZy9SVU5URVNUUyB8ICAgIDQgKysrKwogIDEgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvdGVzdGluZy9SVU5URVNUUyBiL3Rlc3RpbmcvUlVOVEVTVFMKLWluZGV4IGUxMWM5NjkuLmZiOTBmNzYgMTAwNzU1Ci0tLS0gYS90ZXN0aW5nL1JVTlRFU1RTCi0rKysgYi90ZXN0aW5nL1JVTlRFU1RTCi1AQCAtMjUsMTMgKzI1LDE3IEBAIGZhaWxlZF9jb3VudD0wCitJbmRleDogbmV0LXNubXAtNS43LjMvdGVzdGluZy9SVU5URVNUUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ldC1zbm1wLTUuNy4zLm9yaWcvdGVzdGluZy9SVU5URVNUUworKysrIG5ldC1zbm1wLTUuNy4zL3Rlc3RpbmcvUlVOVEVTVFMKK0BAIC0yOSwxMyArMjksMTcgQEAgZmFpbGVkX2NvdW50PTAKICBybSAtZiBmYWlsZWRfdGVzdHMKICBmb3IgaSBpbiAiJHtzcmNkaXJ9Ii90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QqJDEqOyBkbwogICAgICBlY2hvICJSVU5OSU5HICRpIgpAQCAtMzIsNiArMzIsMyBAQAogIGRvbmUKICAKICBpZiBbIC1mIGZhaWxlZF90ZXN0cyBdOyB0aGVuCi0tLSAKLTEuNy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wXzUuNy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXBfNS43LjMuYmIKaW5kZXggODQ5YWUwNy4uZmFmNzNhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXBfNS43LjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXBfNS43LjMuYmIKQEAgLTMyLDYgKzMyLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDQtY29uZmlndXJlLWZpeC1pbmNvcnJlY3QtdmFyaWFibGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbmV0LXNubXAtNS43LjItZml4LWVuZ2luZUJvb3RzLXZhbHVlLW9uLVNJR0hVUC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9uZXQtc25tcC1maXgtZm9yLWRpc2FibGUtZGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLVU2NC10eXBlZGVmLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjlmNjgyYmQ3MGM3MTdlZmRkOWYxNWI2ODZkMDdiYWVlIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4ZGZjNzliNjUzOWI3MWE2ZmYzMzU3NDZjZTYzZDJkYTIyMzkwNjJhZDQxODcyZmZmNDM1NGNhZmVkMDdhM2UiCkBAIC02MCw3ICs2MSw3IEBACiAgICAgICAgICAgICAgICAgLS13aXRoLWRlZmF1bHRzIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtaW5zdGFsbC1wcmVmaXg9JHtEfSBcCiAgICAgICAgICAgICAgICAgLS13aXRoLXBlcnNpc3RlbnQtZGlyZWN0b3J5PSR7bG9jYWxzdGF0ZWRpcn0vbGliL25ldC1zbm1wIFwKLSAgICAgICAgICAgICAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy0td2l0aC1lbmRpYW5uZXNzPWxpdHRsZScsICctLXdpdGgtZW5kaWFubmVzcz1iaWcnLCBkKX0gXAorICAgICAgICAgICAgICAgICR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy0td2l0aC1lbmRpYW5uZXNzPWxpdHRsZScsICctLXdpdGgtZW5kaWFubmVzcz1iaWcnLCBkKX0gXAogIgogCiAjIG5ldC1zbm1wIG5lZWRzIHRvIGhhdmUgbWliLW1vZHVsZXM9c211eCBlbmFibGVkIHRvIGVuYWJsZSBxdWFnZ2EgdG8gc3VwcG9ydCBzbm1wCkBAIC0xMTgsNiArMTE5LDEwIEBACiAgICAgc2VkICAgIC1lICJzQF5OU0NfU1JDRElSPS4qQE5TQ19TUkNESVI9LkBnIiBcCiAgICAgICAgIC1pICR7RH0ke2JpbmRpcn0vbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIKICAgICBzZWQgICAgLWUgInNAXk5TQ19TUkNESVI9LipATlNDX1NSQ0RJUj0uQGciIFwKKyAgICAgICAgICAgLWUgInNAXChbXiBdKi1mZGVidWctcHJlZml4LW1hcD1bXiBdKlwpXDEqQEBnIiBcCisgICAgICAgICAgIC1lICJzQFwoW14gXSotLXN5c3Jvb3Q9W14gXSpcKVwxKkBAZyIgXAorICAgICAgICAgICAtZSAic0BcKFteIF0qLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1bXiBdKlwpXDEqQEBnIiBcCisgICAgICAgICAgIC1lICJzQFwoW14gXSotLXdpdGgtaW5zdGFsbC1wcmVmaXg9W14gXSpcKVwxKkBAZyIgXAogICAgICAgICAtaSAke0R9JHtiaW5kaXJ9L25ldC1zbm1wLWNvbmZpZwogCiAgICAgaWYgWyAiJHtIQVNfUEVSTH0iID0gIjEiIF07IHRoZW4KQEAgLTE0Niw2ICsxNTEsNyBAQAogfQogCiBTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gIm5ldF9zbm1wX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK1NOTVBfREJHRElSID0gIi91c3Ivc3JjL2RlYnVnLyR7UE59LyR7RVhURU5EUEV9JHtQVn0tJHtQUn0iCiAKIG5ldF9zbm1wX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CiAgICAgaWYgWyAtZSAke0R9JHtiaW5kaXJ9L25ldC1zbm1wLWNvbmZpZyBdOyB0aGVuCkBAIC0xNTcsNiArMTYzLDEyIEBACiAgICAgICAgICAgICAtZSAic0BeaW5jbHVkZWRpcj0uKkBpbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9QGciIFwKICAgICAgICAgICAgIC1lICJzQF5saWJkaXI9LipAbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9QGciIFwKICAgICAgICAgICAgIC1lICJzQF5OU0NfU1JDRElSPS4qQE5TQ19TUkNESVI9JHtTfUBnIiBcCisgICAgICAgICAgICAtZSAic0AtZmRlYnVnLXByZWZpeC1tYXA9JHtTTk1QX0RCR0RJUn1ALWZkZWJ1Zy1wcmVmaXgtbWFwPSR7V09SS0RJUn09JHtTTk1QX0RCR0RJUn1AZyIgXAorICAgICAgICAgICAgLWUgInNALWZkZWJ1Zy1wcmVmaXgtbWFwPSAtZmRlYnVnLXByZWZpeC1tYXA9QC1mZGVidWctcHJlZml4LW1hcD0ke1NUQUdJTkdfRElSX05BVElWRX09IFwKKyAgICAgICAgICAgICAgICAgIC1mZGVidWctcHJlZml4LW1hcD0ke1NUQUdJTkdfRElSX0hPU1R9PUBnIiBcCisgICAgICAgICAgICAtZSAic0AtLXN5c3Jvb3Q9QC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9QGciIFwKKyAgICAgICAgICAgIC1lICJzQC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9QC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfUBnIiBcCisgICAgICAgICAgICAtZSAic0AtLXdpdGgtaW5zdGFsbC1wcmVmaXg9QC0td2l0aC1pbnN0YWxsLXByZWZpeD0ke0R9QGciIFwKICAgICAgICAgICAtaSAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9uZXQtc25tcC1jb25maWcKICAgICBmaQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvZml4X2xpbnV4XzQuMTVfY29tcGlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL2ZpeF9saW51eF80LjE1X2NvbXBpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU5N2RmOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL2ZpeF9saW51eF80LjE1X2NvbXBpbGUucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorVGhpcyBmaXhlcyBhIGNvbXBpbGUgaXNzdWUgaW50cm9kdWNlZCB3aXRoIGxpbnV4IGtlcm5lbCA0LjE1CisKK2luY2x1ZGUvbGludXgvaW4uaDoyMjI6ODogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IGluX3BrdGluZm8nCit8ICBzdHJ1Y3QgaW5fcGt0aW5mbyB7CisKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorCitJbmRleDogb3BlbmwydHAtMS44L3BsdWdpbnMvcHBwX3VuaXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5sMnRwLTEuOC5vcmlnL3BsdWdpbnMvcHBwX3VuaXguYworKysrIG9wZW5sMnRwLTEuOC9wbHVnaW5zL3BwcF91bml4LmMKK0BAIC0yNSw5ICsyNSwxNCBAQAorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisrI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKysKKysjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwgMTUsIDApCisgI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgorICNpbmNsdWRlIDxuZXQvaWYuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorKyNlbmRpZgorKworICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CitAQCAtNDEsMTIgKzQ2LDEyIEBACisgI2RlZmluZSBfX3VzZXIKKyAjZW5kaWYKKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CistI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CistI2luY2x1ZGUgPGxpbnV4L2lmX3BwcG94Lmg+CisgI2luY2x1ZGUgPGxpbnV4L3BwcF9kZWZzLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX3BwcC5oPgorKyNpbmNsdWRlIDxsaW51eC9pZl9wcHBveC5oPgorKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig0LCAxNSwgMCkKKyAjaW5jbHVkZSA8bGludXgvaWZfcHBwb2wydHAuaD4KKy0KKysjZW5kaWYKKyAjaW5jbHVkZSAidXNsLmgiCisgI2luY2x1ZGUgImwydHBfcHJpdmF0ZS5oIgorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvb3BlbmwydHBkLWVuYWJsZS10ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL29wZW5sMnRwZC1lbmFibGUtdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJlY2UyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL29wZW5sMnRwZC1lbmFibGUtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorY29tbWl0IDNlOTZhNmM0MWJkZDI2NDE3MjY1YTQ1ZWQ2ODUxMzhkOGVlZDU2NGUKK0F1dGhvcjogQXdzIElzbWFpbCA8YXdzLmlzbWFpbEB3aW5kcml2ZXIuY29tPgorRGF0ZTogICBGcmkgU2VwIDE0IDAyOjMyOjUzIDIwMTIgLTA0MDAKKworICAgIG9wZW5sMnRwOiBFbmFibGUgdGVzdHMKKyAgICAKKyAgICBCdWlsZCB0aGUgdGVzdCBkaXJlY2N0b3J5IGFzIHBhcnQKKyAgICBvZiB0aGUgb3ZlcmFsbCBidWlsZAorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IEF3cyBJc21haWwgPGF3cy5pc21haWxAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDQxMmNmNGQuLmFkZjRmNDQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0xNiw3ICsxNiw3IEBAIEwyVFBfRkVBVFVSRV9MT0NBTF9DT05GX0ZJTEU9CXkKKyAKKyAjIERlZmluZSB0byBpbmNsdWRlIHRlc3QgY29kZS4gVGhpcyBtdXN0IGJlIGRlZmluZWQgdG8gcnVuIHRoZQorICMgcmVncmVzc2lvbiB0ZXN0cworLSMgTDJUUF9URVNUPQkJeQorK0wyVFBfVEVTVD15CisgCisgIyBEZWZpbmUgdG8gY29tcGlsZSBpbiBkZWJ1ZyBjb2RlLiBBbHNvIG1ha2VzIGRlZmF1bHQgdHJhY2UgZmxhZ3MKKyAjIGVuYWJsZSBhbGwgbWVzc2FnZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWM5YzdiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsOTcgQEAKKyMhL2Jpbi9zaAorCitUTVBfRElSPWBta3RlbXAgLWQgL3RtcC9zdGQuMjYudG1wLlhYWFhYWGAKKworIyByZXN0b3JlIHRoZSBmaWxlIGlmIGV4aXN0CityZXN0b3JlX2ZpbGUoKQoreworCWZpbGVsaXN0PSJ0ZXN0X3Byb2NzLnRjbCB0dW5uZWwudGVzdCBzZXNzaW9uLnRlc3QiCisJZm9yIGZpbGUgaW4gJHtmaWxlbGlzdH0KKwlkbworCQlpZiBbIC1mICR7VE1QX0RJUn0vJHtmaWxlfSBdOyB0aGVuCisJCQltdiAke1RNUF9ESVJ9LyR7ZmlsZX0gJHtPUEVOTDJUUF9ESVJ9CisJCWZpCisJZG9uZQorfQorCitleGl0X2N1cygpCit7CisJcmVzdG9yZV9maWxlCisJZWNobyAkMQorCWV4aXQgJDIKK30KKworaWYgWyAtZCAvdXNyL2xpYjY0L29wZW5sMnRwL3B0ZXN0IF07IHRoZW4KKwlPUEVOTDJUUF9ESVI9Ii91c3IvbGliNjQvb3BlbmwydHAiCitlbGlmIFsgLWQgL3Vzci9saWIvb3BlbmwydHAvcHRlc3QgXTsgdGhlbgorCU9QRU5MMlRQX0RJUj0iL3Vzci9saWIvb3BlbmwydHAiCitlbHNlCisJZXhpdF9jdXMgIlRoZSBvcGVubDJ0cCBwdGVzdCBkaXJlY3Rvcnkgbm90IGluc3RhbGxlZCwgc2tpcCB0aGUgdGVzdCIgMQorZmkKKworI3JlYWQgLXAgIlBsZWFzZSBpbnB1dCB0aGUgbmV0d29yayBpbnRlcmZhY2UgeW91IHVzZSB0byB0ZXN0KHN1Y2ggYXMgZXRoMCwgZW0xIGV0Yyk6IiBFVEhfVEVTVAorZWNobyAiUGxlYXNlIGlucHV0IHRoZSBuZXR3b3JrIGludGVyZmFjZSB5b3UgdXNlIHRvIHRlc3Qoc3VjaCBhcyBldGgwLCBlbTEgZXRjKToiCityZWFkIEVUSF9URVNUID4gL2Rldi9udWxsCisKK2lmIFsgeCIkRVRIX1RFU1QiID0geCBdOyB0aGVuCisgICAgZXhpdF9jdXMgIlRoZSBuZXR3b3JrIGludGVyZmFjZSBjYW5ub3QgYmUgbnVsbCIgMQorZmkKK2lmY29uZmlnIHwgZ3JlcCAkRVRIX1RFU1QgPiAvZGV2L251bGwgfHwgZXhpdF9jdXMgIlRoZSBuZXR3b3JrIGludGVyZmFjZSB5b3UgcHJvdmlkZSBpcyBpbnZhbGlkIiAxCisKKyMgY2hlY2sgb3BlbmwydHAgcmVsYXRlZCBrZXJuZWwgY29uZmlnCit6Y2F0IC9wcm9jL2NvbmZpZy5neiB8IGdyZXAgQ09ORklHX0wyVFA9eSA+IC9kZXYvbnVsbCB8fCBleGl0X2N1cyAiRmFpbGVkIHRvIGNoZWNrIENPTkZJR19MMlRQPXksIHNraXAgdGhlIHRlc3RzLiIgMQoremNhdCAvcHJvYy9jb25maWcuZ3ogfCBncmVwIENPTkZJR19QUFBPTDJUUD1tID4gL2Rldi9udWxsIHx8IGV4aXRfY3VzICJGYWlsZWQgdG8gY2hlY2sgQ09ORklHX1BQUE9MMlRQPW0sIHNraXAgdGhlIHRlc3RzLiIgMQorCitTWVNWX0lOSVQ9Ii9ldGMvaW5pdC5kL3JwY2JpbmQiCitpZiBbIC1lICR7U1lTVl9JTklUfSBdOyB0aGVuCisJJHtTWVNWX0lOSVR9IHN0YXR1cyA+IC9kZXYvbnVsbCB8fCAke1NZU1ZfSU5JVH0gc3RhcnQgPiAvZGV2L251bGwKK2Vsc2UKKwlzeXN0ZW1jdGwgc3RhdHVzIHJwY2JpbmQgPiAvZGV2L251bGwgfHwgc3lzdGVtY3RsIHN0YXJ0IHJwY2JpbmQgPiAvZGV2L251bGwKK2ZpCisKK3doaWNoIHN5c3RlbWN0bCA+IC9kZXYvbnVsbCAmJiBzeXN0ZW1jdGwgc3RhdHVzIHJwY2JpbmQgPiAvZGV2L251bGwgfHwgc2VydmljZSBycGNiaW5kIHN0YXR1cyA+IC9kZXYvbnVsbAorWyAkPyAtbmUgMCBdICYmIGV4aXRfY3VzICJGYWlsZWQgdG8gc3RhcnQgcnBjYmluZCBzZXJ2aWNlLCBza2lwIHRoZSB0ZXN0cy4iIDEKKworIyBiYWNrdXAgdGhlIGJlbG93IGZpbGVzCitjcCAke09QRU5MMlRQX0RJUn0vcHRlc3QvdGVzdF9wcm9jcy50Y2wgJFRNUF9ESVIKK2NwICR7T1BFTkwyVFBfRElSfS9wdGVzdC90dW5uZWwudGVzdCAkVE1QX0RJUgorY3AgJHtPUEVOTDJUUF9ESVJ9L3B0ZXN0L3Nlc3Npb24udGVzdCAkVE1QX0RJUgorCisjIGN1c3RvbWlzZSB0aGUgY29uZmlnCitpZiBbIHgiJEVUSF9URVNUIiA9IHggXTsgdGhlbgorCWV4aXRfY3VzICJQbGVhc2Ugc2V0IEVUSF9URVNUIHdoaWNoIHVzZWQgdG8gdGVzdCBmaXJzdCwgc2tpcCB0aGUgdGVzdHMuIiAxCitmaQorCitzZWQgLWkgJ3MvZXRoMi8nXCIkRVRIX1RFU1RcIicvZycgJHtPUEVOTDJUUF9ESVJ9L3B0ZXN0L3Rlc3RfcHJvY3MudGNsCit0ZXN0X2lwPSJgaWZjb25maWcgJEVUSF9URVNUIHwgZ3JlcCAnaW5ldCAnIHwgc2VkICdzL14uKmluZXQgYWRkcjovL2cnIHwgXAorICAgIHNlZCAncy8gKk1hc2suKiQvL2cnfHNlZCAncy8gKkJjYXN0LiokLy9nJ2AiCitzZWQgLWkgJ3MvMTkyLjE2OC4wLjEvJyIkdGVzdF9pcCInL2cnICR7T1BFTkwyVFBfRElSfS9wdGVzdC90dW5uZWwudGVzdAorCisjIGxvYWQgbW9kdWxlIGwydHBfcHBwCittb2Rwcm9iZSAgbDJ0cF9wcHAgPiAvZGV2L251bGwKK2xzbW9kIHwgZ3JlcCBsMnRwX3BwcCA+IC9kZXYvbnVsbCB8fCBleGl0X2N1cyAiRkFJTDogTG9hZCBtb2R1bGUgbDJ0cF9wcHAiIDIKKworIyBzdGFydCBvcGVubDJ0cGQKK3BzIGF1eCB8IGdyZXAgb3BlbmwydHBkIHwgZ3JlcCAtdiBncmVwID4gL2Rldi9udWxsICYmIGtpbGxhbGwgb3BlbmwydHBkID4gL2Rldi9udWxsCitwcHBfcGF0aD1gcnBtIC1xbCBvcGVubDJ0cCB8IGdyZXAgcHBwX251bGwuc29gCitlY2hvICJ0ZXN0IGl0IGhlcmUiCisvdXNyL3NiaW4vb3BlbmwydHBkIC1kIGFsbCAtRCAtZiAtcCAke3BwcF9wYXRofSAmICA+IC9kZXYvbnVsbAorCisjIHByZXBhcmUgdGhlIHRlc3QgZW52CitybSAtcmYgJE9QRU5MMlRQX0RJUi9yZXN1bHRzCitta2RpciAtcCAkT1BFTkwyVFBfRElSL3Jlc3VsdHMgfHwgZXhpdF9jdXMgIkZBSUw6IG1rZGlyICRPUEVOTDJUUF9ESVIvcmVzdWx0cyIgMgorY3AgL3Vzci9iaW4vbDJ0cGNvbmZpZyAke09QRU5MMlRQX0RJUn0gfHwgZXhpdF9jdXMgIkZBSUw6IGNvcHkgL3Vzci9iaW4vbDJ0cGNvbmZpZyB0byAke09QRU5MMlRQX0RJUn0iIDIKKworIyBzdGFydCB0aGUgdGVzdAorY2QgJHtPUEVOTDJUUF9ESVJ9L3B0ZXN0ICYmIHRjbHNoIGFsbC50Y2wgLXByZXNlcnZlY29yZSAzIC12ZXJib3NlIGJwcyAtdG1wZGlyICRPUEVOTDJUUF9ESVIvcmVzdWx0cyAtb3V0ZmlsZSB0ZXN0LWwydHBkLnJlc3VsdCAtY29uc3RyYWludHMgImwydHBkUnVubmluZyBwZWVyUHJvZmlsZSB0dW5uZWxQcm9maWxlIHNlc3Npb25Qcm9maWxlIHBwcFByb2ZpbGUgc3lzdGVtIiAtbWF0Y2ggInBlZXJfcHJvZmlsZS0xLjEgdHVubmVsX3Byb2ZpbGUtMS4xIHNlc3Npb25fcHJvZmlsZS0xLjEgcHBwX3Byb2ZpbGUtMS4xIHN5c3RlbS0xLjEiCisKKyMgY2hlY2sgdGhlIHJlc3VsdAorUEFTU05VTT1gZ3JlcCBQQVNTICRPUEVOTDJUUF9ESVIvcmVzdWx0cy90ZXN0LWwydHBkLnJlc3VsdCB8IHdjIC1sYAorRkFJTE5VTT1gZ3JlcCBGQUlMICRPUEVOTDJUUF9ESVIvcmVzdWx0cy90ZXN0LWwydHBkLnJlc3VsdCB8IHdjIC1sYAoraWYgWyAkUEFTU05VTSAtbmUgMCBdICYmIFsgJEZBSUxOVU0gLWVxIDAgXTsgdGhlbgorICAgIGVjaG8gIlBBU1M6IG9wZW5sMnRwIgorZWxzZQorICAgIGVjaG8gIkZBSUw6IG9wZW5sMnRwIgorZmkKKworcmVzdG9yZV9maWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cF8xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cF8xLjguYmIKaW5kZXggYmJkZThhMy4uMWY2YjRkZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHBfMS44LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwXzEuOC5iYgpAQCAtMzEsNiArMzEsOSBAQAogICAgICAgICAgICBmaWxlOi8vb3BlbmwydHBkLWluaXRzY3JpcHQtZml4LXN5c2NvbmZpZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9vcGVubDJ0cGQtaW5pdHNjcmlwdC1maXgtd2FybmluZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9vcGVubDJ0cGQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVubDJ0cGQtZW5hYmxlLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfbGludXhfNC4xNV9jb21waWxlLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXApAQCAtNDEsNyArNDQsNyBAQAogU1JDX1VSSVttZDVzdW1dID0gImUzZDA4ZGVkZmI5ZTZhOWExZTI0ZjY3NjZmNmRhZGQwIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFjOTc3MDRkNGI5NjNhODdmYmMwZTc0MTY2OGQ0NTMwOTMzOTkxNTE1YWU5YWIwZGZmZDExYjU0NDRmNDg2MGYiCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgc3lzdGVtZAoraW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBzeXN0ZW1kIHB0ZXN0CiAKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJvcGVubDJ0cGQuc2VydmljZSIKIFNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKQEAgLTg1LDQgKzg4LDEyIEBACiAgICAgZmkKIH0KIAorZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgZm9yIGkgaW4gYWxsLnRjbCBjb25maWdmaWxlLnRlc3QgcGVlcl9wcm9maWxlLnRlc3QgcHBwX3Byb2ZpbGUudGVzdCBcCisgICAgc2Vzc2lvbl9wcm9maWxlLnRlc3Qgc2Vzc2lvbi50ZXN0IHN5c3RlbS50ZXN0IHRlc3RfcHJvY3MudGNsIFwKKyAgICB0aGlyZHBhcnR5X2xucy50ZXN0IHR1bm5lbF9wcm9maWxlLnRlc3QgdHVubmVsLnRlc3Q7IGRvCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3Rlc3QvJGkgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICBkb25lCit9CisKIFJERVBFTkRTXyR7UE59ID0gInBwcCBwcHAtbDJ0cCBiYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcXVhZ2dhL3F1YWdnYV8xLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2FfMS4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNDNkN2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcXVhZ2dhL3F1YWdnYV8xLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotcmVxdWlyZSBxdWFnZ2EuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMTU0NmRlODkwNjJmNzA3MGQ1NmU3ODBiMzBiZTRiMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYWRkYmE1ZDRmNDFlZDhlNGMyZjE1NWY0NTg0Yzk5MzQ2NWQxMjJjOTA5NmI1YjUyYWRhM2ZjNzUyNjZmYmNkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcXVhZ2dhL3F1YWdnYV8xLjIuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2FfMS4yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc2OTdhMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2FfMS4yLjQuYmIKQEAgLTAsMCArMSw0IEBACityZXF1aXJlIHF1YWdnYS5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gImVjZWQyMWIwNTRkNzFjOWUxYjdjNmFjNDMyODZhMTY2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzNjRjMDgyYzMzMDk5MTBlMWViN2IwNjhiZjM5ZWUyOThlMmYyZjNmMzFhNjQzMWE1YzExNTE5M2JkNjUzZDMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ycC1wcHBvZS9ycC1wcHBvZS0zLjEyLzAwMDEtcHBvZS1Eb250LWluY2x1ZGUtbGludXgtaWZfZXRoZXIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvMDAwMS1wcG9lLURvbnQtaW5jbHVkZS1saW51eC1pZl9ldGhlci5oLnBhdGNoCmluZGV4IDExMzU2Y2UuLjc2MDFmMGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvMDAwMS1wcG9lLURvbnQtaW5jbHVkZS1saW51eC1pZl9ldGhlci5oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvMDAwMS1wcG9lLURvbnQtaW5jbHVkZS1saW51eC1pZl9ldGhlci5oLnBhdGNoCkBAIC0xLDExICsxLDEyIEBACi1Gcm9tIDhkNGQ0NTJkNzMzYmFjOGM1YjU1YTkwYmRkZWM4Y2MzMjNjYzlmYTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZkYjY0ZDIxNTYwYmZkYWZlZWZjY2M3ZDIwZTEwNWU0ODU3ZmFhOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVHVlLCAyOCBNYXIgMjAxNyAxOToyMDowNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvMl0gcHBvZTogRG9udCBpbmNsdWRlIGxpbnV4L2lmX2V0aGVyLmgKK1N1YmplY3Q6IFtQQVRDSF0gcHBvZTogRG9udCBpbmNsdWRlIGxpbnV4L2lmX2V0aGVyLmgKIAogRml4ZXMgYnVpbGQgd2l0aCBtdXNsCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9wcHBvZS5oIHwgNCAtLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCkBAIC0yNSw2ICsyNiwzIEBACiAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICAKICAjaWZkZWYgSEFWRV9ORVRJTkVUX0lGX0VUSEVSX0gKLS0tIAotMi4xMi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvMDAwMi1FbmFibGUtc3VwcG9ydC1mb3ItdGhlLWtlcm5lbC1tb2R1bGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ycC1wcHBvZS9ycC1wcHBvZS0zLjEyLzAwMDItRW5hYmxlLXN1cHBvcnQtZm9yLXRoZS1rZXJuZWwtbW9kdWxlLnBhdGNoCmluZGV4IDEzOWQxZjAuLjIxMDNiMzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvMDAwMi1FbmFibGUtc3VwcG9ydC1mb3ItdGhlLWtlcm5lbC1tb2R1bGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi8wMDAyLUVuYWJsZS1zdXBwb3J0LWZvci10aGUta2VybmVsLW1vZHVsZS5wYXRjaApAQCAtMSw5ICsxLDEwIEBACi1Gcm9tIGFjYTg0NzNhNTE2YThkYzAxMzg2NjEwNWRhMTQxZmUxY2Q5NDc0NzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDMxYjZlZWNkN2U1ZWJmYjlhMzc5MTVmMjg4MjNlNWFmOWQxMDYyYjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVHVlLCAyOCBNYXIgMjAxNyAxOToyNDo1MyAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvMl0gRW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBrZXJuZWwgbW9kdWxlCitTdWJqZWN0OiBbUEFUQ0hdIEVuYWJsZSBzdXBwb3J0IGZvciB0aGUga2VybmVsIG1vZHVsZQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzcmMvY29uZmlndXJlLmluIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCkBAIC0yMCw2ICsyMSwzIEBACiAgXSkKICAKICBkbmwgQ2hlY2tzIGZvciB0eXBlZGVmcywgc3RydWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KLS0tIAotMi4xMi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvY29uZmlndXJlLmluLUVycm9yLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvY29uZmlndXJlLmluLUVycm9yLWZpeC5wYXRjaAppbmRleCAyNjYxZmQzLi5iYmQ1MTZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ycC1wcHBvZS9ycC1wcHBvZS0zLjEyL2NvbmZpZ3VyZS5pbi1FcnJvci1maXgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi9jb25maWd1cmUuaW4tRXJyb3ItZml4LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3MTk1NmRlNDZmZWVmOTYyZGMwNjQ1YWY0YzgxYWUwNzRjYTNiODE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiZGQyMGI3YTU4NGEyMDUwNGRmYWJiNDA5YTQxZWUyYjlhZTQxNjU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgogRGF0ZTogV2VkLCAxOSBBdWcgMjAxNSAxMzo1Mjo1NyArMDkwMAogU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuaW46IEVycm9yIGZpeC4KQEAgLTksMTUgKzksMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogcGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBMaSBYaW4gPGxpeGluLmZuc3RAY24uZnVqaXRzdS5jb20+CisKIC0tLQogIHNyYy9jb25maWd1cmUuaW4gfCAzMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMzAgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvY29uZmlndXJlLmluIGIvc3JjL2NvbmZpZ3VyZS5pbgotaW5kZXggMGIyM2RmNS4uMzFjN2ZiYyAxMDA2NDQKK2luZGV4IDE3MTRlNjkuLmNhZTA5NzYgMTAwNjQ0CiAtLS0gYS9zcmMvY29uZmlndXJlLmluCiArKysgYi9zcmMvY29uZmlndXJlLmluCi1AQCAtMTkzLDM2ICsxOTMsNiBAQCBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorQEAgLTE5NSwzNiArMTk1LDYgQEAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMiCiAgZmkKICAKQEAgLTU0LDYgKzU1LDMgQEAKICBpZiB0ZXN0ICIkcnBwcG9lX2N2X3BhY2tfYml0ZmllbGRzIiA9ICJyZXYiIDsgdGhlbgogIAlBQ19NU0dfUkVTVUxUKHJldmVyc2VkKQogIAlBQ19ERUZJTkUoW1BBQ0tfQklURklFTERTX1JFVkVSU0VEXSwgW10sIFtSZXZlcnNlZCBiaXRmaWVsZHNdKQotLS0gCi0xLjguNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi9jb25maWd1cmUucGF0Y2gKaW5kZXggMTM4MGJhNC4uYmU4OTI4MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi9jb25maWd1cmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi9jb25maWd1cmUucGF0Y2gKQEAgLTEsNyArMSwxNSBAQAotSW5kZXg6IHJwLXBwcG9lLTMuOC9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBycC1wcHBvZS0zLjgub3JpZy9jb25maWd1cmUuaW4JMjAxNC0wNy0xNiAxOTozMTozMy41NDk5OTEzODggKzAwMDAKLSsrKyBycC1wcHBvZS0zLjgvY29uZmlndXJlLmluCTIwMTQtMDctMTcgMjI6MDE6MTguMTE2NTkwODI3ICswMDAwCitGcm9tIGM5NmRkYTA0ZWMwMjRiZGVmMmExNWQzNzRlNWY4MjQyZTA0MWNhZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IEZyaSwgMTggSnVsIDIwMTQgMDg6MjU6MTYgKzAwMDAKKworLS0tCisgY29uZmlndXJlLmluIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggYWMxYTdlNC4uMTFiOWYzMSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCiBAQCAtMSw0ICsxLDQgQEAKIC1BQ19JTklUKHNyYy9wcHBvZS5jKQogLUFNX0lOSVRfQVVUT01BS0UoW3JwLXBwcG9lXSwgWzMuOF0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ycC1wcHBvZS9ycC1wcHBvZS0zLjEyL2NvbmZpZ3VyZV9pbl9jcm9zcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvY29uZmlndXJlX2luX2Nyb3NzLnBhdGNoCmluZGV4IDg4Y2Y3ZTYuLjNiOTQ1OTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvY29uZmlndXJlX2luX2Nyb3NzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvY29uZmlndXJlX2luX2Nyb3NzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBjYWIwMjA3NmFmYjgwOGE0M2M2ZmYzZDdiMWM2NGU3MWY1YTFiMzk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxNzI5MDdmMzFkNjRkYTRjM2YyODlhNDM5ZmQ2MDVkMmFiNTFiMjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgogRGF0ZTogV2VkLCAxOSBBdWcgMjAxNSAxMjoxNzowMyArMDkwMAogU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUgaW4gY3Jvc3MKQEAgLTE0LDcgKzE0LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvY29uZmlndXJlLmluIGIvc3JjL2NvbmZpZ3VyZS5pbgotaW5kZXggZTE5NDI5NS4uODJkNjRkNiAxMDA2NDQKK2luZGV4IDkwYTA3ZGYuLjFkMzAyNDMgMTAwNjQ0CiAtLS0gYS9zcmMvY29uZmlndXJlLmluCiArKysgYi9zcmMvY29uZmlndXJlLmluCiBAQCAtNSw2ICs1LDEzIEBAIEFDX0lOSVQocHBwb2UuYykKQEAgLTQwLDcgKzQwLDcgQEAKICBmaQogIAogIGRubCBDaGVjayBmb3IgTl9IRExDIGxpbmUgZGlzY2lwbGluZQotQEAgLTU2LDcgKzYzLDcgQEAgQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxsaW51eC90ZXJtaW9zLmg+XSwKK0BAIC01OCw3ICs2NSw3IEBAIEFDX1RSWV9DT01QSUxFKFsKICAJYWNfY3Zfbl9oZGxjPW5vKQogIEFDX01TR19SRVNVTFQoJGFjX2N2X25faGRsYykKICBpZiB0ZXN0ICIkYWNfY3Zfbl9oZGxjIiA9IHllcyA7IHRoZW4KQEAgLTQ5LDcgKzQ5LDcgQEAKICBmaQogIAogIEFDX0FSR19FTkFCTEUocGx1Z2luLCBbICAtLWVuYWJsZS1wbHVnaW49cHBwZF9zcmNfcGF0aCAgIGJ1aWxkIHBwcGQgcGx1Z2luXSwgYWNfY3ZfcGx1Z2lucGF0aD0kZW5hYmxldmFsLCBhY19jdl9wbHVnaW5wYXRoPW5vKQotQEAgLTEwNCw3ICsxMTEsNyBAQCBQUFBEX0lOQ0RJUj0iIgorQEAgLTEwNiw3ICsxMTMsNyBAQCBQUFBEX0lOQ0RJUj0iIgogIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfbGludXhfaWZfcHBwb3hfaCIgPSB5ZXMgOyB0aGVuCiAgCWlmIHRlc3QgIiRhY19jdl9wbHVnaW5wYXRoIiAhPSBubyA7IHRoZW4KICAJCUxJTlVYX0tFUk5FTE1PREVfUExVR0lOPXJwLXBwcG9lLnNvCkBAIC01OCw3ICs1OCw3IEBACiAgCQlQUFBEX0lOQ0RJUj0kYWNfY3ZfcGx1Z2lucGF0aAogIAlmaQogIGZpCi1AQCAtMTE0LDcgKzEyMSw3IEBAIGlmIHRlc3QgIiRQUFBEX0lOQ0RJUiIgPSAiIiA7IHRoZW4KK0BAIC0xMTYsNyArMTIzLDcgQEAgaWYgdGVzdCAiJFBQUERfSU5DRElSIiA9ICIiIDsgdGhlbgogIGZpCiAgCiAgaWYgdGVzdCAiJGFjX2N2X2RlYnVnZ2luZyIgPSAieWVzIiA7IHRoZW4KQEAgLTY3LDcgKzY3LDcgQEAKICBmaQogIAogIEFDX1NVQlNUKExJTlVYX0tFUk5FTE1PREVfUExVR0lOKQotQEAgLTE0MCwxNSArMTQ3LDggQEAgQUNfQ0hFQ0tfU0laRU9GKHVuc2lnbmVkIHNob3J0KQorQEAgLTE0MiwxNSArMTQ5LDggQEAgQUNfQ0hFQ0tfU0laRU9GKHVuc2lnbmVkIHNob3J0KQogIEFDX0NIRUNLX1NJWkVPRih1bnNpZ25lZCBpbnQpCiAgQUNfQ0hFQ0tfU0laRU9GKHVuc2lnbmVkIGxvbmcpCiAgCkBAIC04NCw3ICs4NCw3IEBACiAgCiAgZG5sIENoZWNrIGZvciBMaW51eC1zcGVjaWZpYyBrZXJuZWwgc3VwcG9ydCBmb3IgUFBQb0UKICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIExpbnV4IDIuNC5YIGtlcm5lbC1tb2RlIFBQUG9FIHN1cHBvcnQpCi1AQCAtMTkzLDQ0ICsxOTMsOCBAQCBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorQEAgLTE5NSw0NCArMTk1LDggQEAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMiCiAgZmkKICAKQEAgLTEzMCw3ICsxMzAsNyBAQAogIGlmIHRlc3QgIiR7cnBwcG9lX2N2X3BhY2tfYml0ZmllbGRzK3NldH0iICE9IHNldCA7IHRoZW4KICBBQ19UUllfUlVOKFsKICB1bmlvbiBmb28gewotQEAgLTI1NywxMCArMjIxLDExIEBAIG1haW4odm9pZCkKK0BAIC0yNTksMTAgKzIyMywxMSBAQCBtYWluKHZvaWQpCiAgfV0sIHJwcHBvZV9jdl9wYWNrX2JpdGZpZWxkcz1ub3JtYWwsIHJwcHBvZV9jdl9wYWNrX2JpdGZpZWxkcz1yZXYsCiAgJEVDSE8gIm5vIGRlZmF1bHRzIGZvciBjcm9zcy1jb21waWxpbmciOyBleGl0IDApCiAgZmkKQEAgLTE0Myw3ICsxNDMsNyBAQAogIGVsc2UKICAJQUNfTVNHX1JFU1VMVChub3JtYWwpCiAgZmkKLUBAIC0zMjQsNiArMjg5LDcgQEAgQUNfU1VCU1QoUFBQT0VfU0VSVkVSX0RFUFMpCitAQCAtMzI2LDYgKzI5MSw3IEBAIEFDX1NVQlNUKFBQUE9FX1NFUlZFUl9ERVBTKQogIEFDX1NVQlNUKFJEWU5BTUlDKQogIEFDX1NVQlNUKExJQkVWRU5UKQogIEFDX1NVQlNUKEVDSE8pCkBAIC0xNTEsNiArMTUxLDMgQEAKICBBQ19TVUJTVChMREZMQUdTKQogIAogIGRhdGFkaXJfZXZhbHVhdGVkPWBldmFsIGVjaG8gJGRhdGFkaXJgCi0tLSAKLTEuOC40LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi9kaXNjYXJkLXVzZS1vZi1kbmwtaW4tTWFrZWZpbGUuYW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ycC1wcHBvZS9ycC1wcHBvZS0zLjEyL2Rpc2NhcmQtdXNlLW9mLWRubC1pbi1NYWtlZmlsZS5hbS5wYXRjaAppbmRleCA4Yjc4ODY0Li45ODAxZjZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ycC1wcHBvZS9ycC1wcHBvZS0zLjEyL2Rpc2NhcmQtdXNlLW9mLWRubC1pbi1NYWtlZmlsZS5hbS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ycC1wcHBvZS9ycC1wcHBvZS0zLjEyL2Rpc2NhcmQtdXNlLW9mLWRubC1pbi1NYWtlZmlsZS5hbS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjExYzlmZTcxOWM1YWEyNjRhMmFkMmViOTIwY2Y0NTIyYWUyZGRlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjY1ODE4MWM1ODM0N2MzZTJiMGVlNGYwYTZhM2QxOTE2MjkyMTQ3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KIERhdGU6IFR1ZSwgMTIgSnVuIDIwMTIgMTQ6MjY6MTYgLTA0MDAKIFN1YmplY3Q6IFtQQVRDSF0gZGlzY2FyZCB1c2Ugb2YgZG5sIGluIE1ha2VmaWxlLmFtCkBAIC03LDkgKzcsMTAgQEAKIG5vdCBpbnRyb2R1Y2UgYSBjb21tZW50LgogCiBTaWduZWQtb2ZmLWJ5OiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+CisKIC0tLQotIE1ha2VmaWxlLmFtIHwgICAgMiArLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQorIE1ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQogaW5kZXggZWZmNjk3Ny4uMzA5MWMzMyAxMDA2NDQKQEAgLTIyLDYgKzIzLDMgQEAKIC1kbmwgQU1fQ0ZMQUdTID0gLVdhbGwgLURERUJVRwogKyMjZG5sIEFNX0NGTEFHUyA9IC1XYWxsIC1EREVCVUcKICBTVUJESVJTID0gc3JjCi0tLSAKLTEuNy42LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi9kb250LXN3YWxsb3ctZXJyb3JzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi9kb250LXN3YWxsb3ctZXJyb3JzLnBhdGNoCmluZGV4IGY2MTMzN2YuLjhhODU3ODggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvZG9udC1zd2FsbG93LWVycm9ycy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ycC1wcHBvZS9ycC1wcHBvZS0zLjEyL2RvbnQtc3dhbGxvdy1lcnJvcnMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGJiZGFkYjgwM2IxOWYwMDJlNzZlN2JiNWNlM2ZhZjc3MGRkN2M0MTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGE5YTczMjIyNzNjNTE4ODJhZjU4YzM1YmEyODhhMGZhZTAwYmE4NDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+CiBEYXRlOiBXZWQsIDE5IEF1ZyAyMDE1IDEyOjMzOjQxICswOTAwCiBTdWJqZWN0OiBbUEFUQ0hdIGRvbid0IHN3YWxsb3cgZXJyb3JzCkBAIC02LDE1ICs2LDE2IEBACiBGdXJ0aGVyIGZpeHVwIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0cyB0byBub3Qgc3dhbGxvdyBlcnJvcnMKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIC0tLQogIHNyYy9jb25maWd1cmUuaW4gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvY29uZmlndXJlLmluIGIvc3JjL2NvbmZpZ3VyZS5pbgotaW5kZXggODJkNjRkNi4uMGIyM2RmNSAxMDA2NDQKK2luZGV4IDFkMzAyNDMuLjE3MTRlNjkgMTAwNjQ0CiAtLS0gYS9zcmMvY29uZmlndXJlLmluCiArKysgYi9zcmMvY29uZmlndXJlLmluCi1AQCAtMjE5LDcgKzIxOSw3IEBAIG1haW4odm9pZCkKK0BAIC0yMjEsNyArMjIxLDcgQEAgbWFpbih2b2lkKQogIAlyZXR1cm4gMjsKICAgICAgfQogIH1dLCBycHBwb2VfY3ZfcGFja19iaXRmaWVsZHM9bm9ybWFsLCBycHBwb2VfY3ZfcGFja19iaXRmaWVsZHM9cmV2LApAQCAtMjMsNiArMjQsMyBAQAogIGZpCiAgXSkKICAKLS0tIAotMS44LjQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ycC1wcHBvZS9ycC1wcHBvZS0zLjEyL3BwcG9lLXNyYy1yZXN0cmljdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ycC1wcHBvZS9ycC1wcHBvZS0zLjEyL3BwcG9lLXNyYy1yZXN0cmljdGlvbnMucGF0Y2gKaW5kZXggYmNmNGQxMS4uMDM2OTdmZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi9wcHBvZS1zcmMtcmVzdHJpY3Rpb25zLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvcHBwb2Utc3JjLXJlc3RyaWN0aW9ucy5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gYTZhODVlYzVjODVjYmQzYzg2NzQzYjZlMmZhMzkxMTk4ODY5YmZmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRvbSBSaW5pIDx0b21fcmluaUBtZW50b3IuY29tPgorRGF0ZTogV2VkLCAyNyBKdWwgMjAxMSAwMzo0Njo1MiArMDAwMAorU3ViamVjdDogW1BBVENIXSBycC1wcHBvZTogUG9ydCBmcm9tIG9lLmRldgorCiBSZWxheCByZXN0cmljdGlvbnMgb24gdGhlIFBQUG9FIHNyYyBhZGRyZXNzLCBhcyBwZXIgZGViaWFuIGJ1ZwogMjkzODExOgogCkBAIC01LDkgKzEwLDE1IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQmFja3BvcnQgZnJvbSBEZWJpYW5dCiAKLS0tLSBycC1wcHBvZS0zLjgub3JpZy9zcmMvZGlzY292ZXJ5LmMKLSsrKyBycC1wcHBvZS0zLjgvc3JjL2Rpc2NvdmVyeS5jCi1AQCAtMzc2LDggKzM3Niw4IEBACistLS0KKyBzcmMvZGlzY292ZXJ5LmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Rpc2NvdmVyeS5jIGIvc3JjL2Rpc2NvdmVyeS5jCitpbmRleCA3ZWUyNTlkLi41MjEzYTM3IDEwMDY0NAorLS0tIGEvc3JjL2Rpc2NvdmVyeS5jCisrKysgYi9zcmMvZGlzY292ZXJ5LmMKK0BAIC00NzIsOCArNDcyLDggQEAgd2FpdEZvclBBRE8oUFBQb0VDb25uZWN0aW9uICpjb25uLCBpbnQgdGltZW91dCkKICAJaWYgKCFwYWNrZXRJc0Zvck1lKGNvbm4sICZwYWNrZXQpKSBjb250aW51ZTsKICAKICAJaWYgKHBhY2tldC5jb2RlID09IENPREVfUEFETykgewpAQCAtMTcsNCArMjgsNCBAQAogKwkJcHJpbnRFcnIoIklnbm9yaW5nIGJyb2FkY2FzdCBQQURPIHBhY2tldCIpOwogIAkJY29udGludWU7CiAgCSAgICB9Ci0gCSAgICBwYXJzZVBhY2tldCgmcGFja2V0LCBwYXJzZVBBRE9UYWdzLCAmcGMpOworICNpZmRlZiBQTFVHSU4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvdG9wLWF1dG9jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi90b3AtYXV0b2NvbmYucGF0Y2gKaW5kZXggNGZlNzNkMC4uZjY0ZGE0ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi90b3AtYXV0b2NvbmYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi90b3AtYXV0b2NvbmYucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDBiNjJmNzFlYjVkNDRkNGE1NzEwMzU2NmJhNTgwMjJiNjMwNGZhNGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUb20gUmluaSA8dG9tX3JpbmlAbWVudG9yLmNvbT4KK0RhdGU6IFdlZCwgMjcgSnVsIDIwMTEgMDM6NDY6NTIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gcnAtcHBwb2U6IFBvcnQgZnJvbSBvZS5kZXYKKwogVGhlIGF1dG9jb25mIHN0dWZmIGlzIGFsbCBpbiBhIHN1YmRpcmVjdG9yeSwgd2hpY2ggaXMgcmF0aGVyIGFubm95aW5nCiBhcyBPRSBleHBlY3RzIHBhdGNoZXMgdG8gYmUgYXBwbGllZCBhbmQgYXV0b2NvbmYgc3R1ZmYgdG8gYmUgZG9uZSBpbgogUy4gVGhpcyBhZGRzIGVub3VnaCBhdXRvY29uZiBhdCB0aGUgdG9wIGxldmVsIHRvIGFsbG93IGl0IHRvIGJlCkBAIC02LDIwICsxMSwyOSBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2J1aWxkIHN5c3RlbSBzcGVjaWZpYyBjaGFuZ2VdCiAKLUluZGV4OiBycC1wcHBvZS0zLjgvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBycC1wcHBvZS0zLjgvTWFrZWZpbGUuYW0JMjAwNy0wNi0wOCAxNTo1ODoxNi4wMDAwMDAwMDAgKzEwMDAKKy0tLQorIE1ha2VmaWxlLmFtICB8IDUgKysrKysKKyBjb25maWd1cmUuaW4gfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS5hbQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb25maWd1cmUuaW4KKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lZmY2OTc3CistLS0gL2Rldi9udWxsCisrKysgYi9NYWtlZmlsZS5hbQogQEAgLTAsMCArMSw1IEBACiArUEFDS0FHRSA9IHJwLXBwcG9lCiArVkVSU0lPTiA9IDMuOAogKwogK2RubCBBTV9DRkxBR1MgPSAtV2FsbCAtRERFQlVHCiArU1VCRElSUyA9IHNyYwotSW5kZXg6IHJwLXBwcG9lLTMuOC9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBycC1wcHBvZS0zLjgvY29uZmlndXJlLmluCTIwMDctMDYtMDggMTU6NTg6MTYuMDAwMDAwMDAwICsxMDAwCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYWMxYTdlNAorLS0tIC9kZXYvbnVsbAorKysrIGIvY29uZmlndXJlLmluCiBAQCAtMCwwICsxLDQgQEAKICtBQ19JTklUKHNyYy9wcHBvZS5jKQogK0FNX0lOSVRfQVVUT01BS0UoW3JwLXBwcG9lXSwgWzMuOF0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ycC1wcHBvZS9ycC1wcHBvZS0zLjEyL3VwZGF0ZS1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ycC1wcHBvZS9ycC1wcHBvZS0zLjEyL3VwZGF0ZS1jb25maWcucGF0Y2gKaW5kZXggNDJhM2JjNi4uYzc1OWUwOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcnAtcHBwb2UvcnAtcHBwb2UtMy4xMi91cGRhdGUtY29uZmlnLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JwLXBwcG9lL3JwLXBwcG9lLTMuMTIvdXBkYXRlLWNvbmZpZy5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gNGQzNGUwZDdkNzkwZWM0MWIwYWZiNzMxYzdkYzFiMWVlOTBkZDM3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRvbSBSaW5pIDx0b21fcmluaUBtZW50b3IuY29tPgorRGF0ZTogV2VkLCAyNyBKdWwgMjAxMSAwMzo0Njo1MiArMDAwMAorU3ViamVjdDogW1BBVENIXSBycC1wcHBvZTogUG9ydCBmcm9tIG9lLmRldgorCiBTZXQgdGhlIHRpbWVvdXQgdG8gMCBzaW5jZSB3ZSBkb24ndCB3YW50IHBwcG9lIHRvIHRyeSByZWNvbm5lY3RpbmcsCiB3ZSB3YW50IHdoYXRldmVyIGlzIGNhbGxpbmcgaXQgdG8gcmVjb25uZWN0LiBMb3RzIG9mIG9kZCB0aGluZ3MKIGhhcHBlbiB3aGVuIHlvdSBoYXZlIHBwcG9lIHJldHJ5aW5nIGl0c2VsZi4KQEAgLTgsMTEgKzEzLDE1IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAotSW5kZXg6IHJwLXBwcG9lLTMuOC9jb25maWdzL3BwcG9lLmNvbmYKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBycC1wcHBvZS0zLjgub3JpZy9jb25maWdzL3BwcG9lLmNvbmYJMjAwNi0wNC0wMyAwMDoyOTo0MS4wMDAwMDAwMDAgKzEwMDAKLSsrKyBycC1wcHBvZS0zLjgvY29uZmlncy9wcHBvZS5jb25mCTIwMDctMDYtMDggMTY6MDI6NDcuMDAwMDAwMDAwICsxMDAwCi1AQCAtNjYsNyArNjYsNyBAQAorLS0tCisgY29uZmlncy9wcHBvZS5jb25mIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3MvcHBwb2UuY29uZiBiL2NvbmZpZ3MvcHBwb2UuY29uZgoraW5kZXggYzIyMmIyZi4uNjU2MThhNSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3MvcHBwb2UuY29uZgorKysrIGIvY29uZmlncy9wcHBvZS5jb25mCitAQCAtNjYsNyArNjYsNyBAQCBERUZBVUxUUk9VVEU9eWVzCiAgIyB0byBjb25uZWN0IGZvcmV2ZXIgYWZ0ZXIgcHBwb2Utc3RhcnQgaXMgY2FsbGVkLiAgT3RoZXJ3aXNlLCBpdCB3aWxsCiAgIyBnaXZlIG91dCBhZnRlciBDT05ORUNUX1RJTUVPVVQgc2Vjb25kcyBhbmQgd2lsbCBub3QgYXR0ZW1wdCB0bwogICMgY29ubmVjdCBhZ2FpbiwgbWFraW5nIGl0IGltcG9zc2libGUgdG8gcmVhY2guCkBAIC0yMSw3ICszMCw3IEBACiAgCiAgIyBIb3cgb2Z0ZW4gaW4gc2Vjb25kcyBwcHBvZS1zdGFydCBwb2xscyB0byBjaGVjayBpZiBsaW5rIGlzIHVwCiAgQ09OTkVDVF9QT0xMPTIKLUBAIC0xMTUsNyArMTE1LDcgQEAKK0BAIC0xMTUsNyArMTE1LDcgQEAgUFBQT0VfVElNRU9VVD04MAogIEZJUkVXQUxMPU5PTkUKICAKICAjIExpbnV4IGtlcm5lbC1tb2RlIHBsdWdpbiBmb3IgcHBwZC4gIElmIHlvdSB3YW50IHRvIHRyeSB0aGUga2VybmVsLW1vZGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9icmlkZ2UtdXRpbHMvYnJpZGdlLXV0aWxzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9icmlkZ2UtdXRpbHMvYnJpZGdlLXV0aWxzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZiMThkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2xzIGZvciBldGhlcm5ldCBicmlkZ2luZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXhmb3VuZGF0aW9uLm9yZy9jb2xsYWJvcmF0ZS93b3JrZ3JvdXBzL25ldHdvcmtpbmcvYnJpZGdlIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkdQTHYyIgotCi1ERVBFTkRTID0gInN5c2ZzdXRpbHMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2JyaWRnZS9icmlkZ2UtdXRpbHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICBmaWxlOi8vYnJpZGdlLXV0aWxzLTEuNS1jaGVjay1lcnJvci1yZXR1cm5zLWZyb20td3JpdGUtdG8tc3lzZnMucGF0Y2ggXAotICAgICAgICAgIGZpbGU6Ly9icmlkZ2UtdXRpbHMtMS41LWZpeC1lcnJvci1tZXNzYWdlLWZvci1pbmNvcnJlY3QtY29tbWFuZC5wYXRjaCBcCi0gICAgICAgICAgZmlsZTovL2JyaWRnZS11dGlscy0xLjUtZml4LWluY29ycmVjdC1jb21tYW5kLWluLW1hbnVhbC5wYXRjaCBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImJyY3RsIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbYnJjdGxdID0gIjEwMCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVticmN0bF0gPSAiJHtzYmluZGlyfS9icmN0bCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1saW51eC1oZWFkZXJzPSR7U1RBR0lOR19JTkNESVJ9IgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vYnJpZGdlLXV0aWxzCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi1wcmUtdXAuZAotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtcG9zdC1kb3duLmQKLX0KLQotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1icmlkZ2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy8wMDAxLWJ1aWxkLWVycm9yLW91dC1jb3JyZWN0bHktaWYtYS1zdWJtYWtlLWZhaWxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMvMDAwMS1idWlsZC1lcnJvci1vdXQtY29ycmVjdGx5LWlmLWEtc3VibWFrZS1mYWlscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY4OTdiNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy8wMDAxLWJ1aWxkLWVycm9yLW91dC1jb3JyZWN0bHktaWYtYS1zdWJtYWtlLWZhaWxzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotRnJvbSA1ZTEwMmI0NTNlMjU0ZDE2YWYxZjk1MDUzMTM0ZjU4MzQ4ZTBmODNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogcm9vdCA8Z2l0QGFuZHJlZC5uZXQ+Ci1EYXRlOiBXZWQsIDIwIEp1bCAyMDE2IDIzOjQwOjMwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS81XSBidWlsZDogZXJyb3Igb3V0IGNvcnJlY3RseSBpZiBhIHN1Ym1ha2UgZmFpbHMKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotRHVlIHRvIHVzZSBvZiBhIGZvciBsb29wLCByZXR1cm4gc3RhdHVzIGZyb20gc3VibWFrZSB3YXMgYWx3YXlzCi1pZ25vcmVkLgotCi1JbiB0aGUgY29udGV4dCBvZiBidWlsZC1zeXN0ZW1zIGxpa2UgT0UgdGhpcyBjYXVzZXMgdGhlbSB0byBub3QKLWRldGVjdCBhbnkgZXJyb3JzIGFuZCBjb250aW51ZSBoYXBwaWx5LCByZXN1bHRpbmcgaW4gYSBzdWNjZXNzZnVsLAotYnV0IGluY29tcGxldGUsIGJ1aWxkLgotCi1GaXggYnkgaGF2aW5nIGEgbmljZXIgTWFrZWZpbGUuaW4gd2hpY2ggbm93IGhhcyBydWxlcyBmb3IgdGhlCi1pbmRpdmlkdWFsIHRhcmdldHMgKGRpcmVjdG9yaWVzKSBzbyB0aGF0IG1ha2UgaXRzZWxmIGNhbgotZmlndXJlIG91dCBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgdGhvc2UgdGFyZ2V0cyBhcwotbmVlZGVkIHJhdGhlciB0aGFuIHVzaW5nIGEgZm9yIGxvb3AgdG8gaXRlcmF0ZSBvdmVyIHRoZQotZGlyZWN0b3JpZXMgaW4gYSBzaGVsbCBhbmQgdGh1cyBsb29zaW5nIHRoZSByZXR1cm4gc3RhdHVzIG9mCi10aGUgY29tbWFuZCBpbnNpZGUgdGhlIGxvb3AuCi0KLVRoaXMgaGFzIHRoZSBhZGRlZCBhZHZhbnRhZ2UgdGhhdCBwYXJhbGxlbCBidWlsZHMgd29yayBub3cuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8Z2l0QGFuZHJlZC5uZXQ+Ci0tLS0KLSBNYWtlZmlsZS5pbiB8IDE4ICsrKysrKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggNjAyODUxMy4uZGFiODhiYiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTEzLDExICsxMywxMSBAQCBkaXN0ZGlyID0gJChQQUNLQUdFKS0kKFZFUlNJT04pCi0gCi0gU1VCRElSUz1saWJicmlkZ2UgYnJjdGwgZG9jCi0gCi0tYWxsOgotLQlmb3IgeCBpbiAkKFNVQkRJUlMpOyBkbyAkKE1BS0UpICQoTUZMQUdTKSAtQyAkJHggOyBkb25lCi0rYWxsOiBvdmVycmlkZSBBQ1RJT049Ci0rYWxsOiAkKFNVQkRJUlMpCi0gCi0tY2xlYW46Ci0tCWZvciB4IGluICQoU1VCRElSUyk7IGRvICQoTUFLRSkgJChNRkxBR1MpIC1DICQkeCBjbGVhbiA7IGRvbmUKLStjbGVhbjogb3ZlcnJpZGUgQUNUSU9OPWNsZWFuCi0rY2xlYW46ICQoU1VCRElSUykKLSAKLSBkaXN0Y2xlYW46CWNsZWFuCi0gCXJtIC1mIGNvbmZpZy5sb2cKLUBAIC0zMCw2ICszMCwxMiBAQCBtYWludGFpbmVyLWNsZWFuOiBkaXN0Y2xlYW4KLSAJcm0gLWYgbGliYnJpZGdlL01ha2VmaWxlCi0gCXJtIC1mIGRvYy9NYWtlZmlsZQotIAotLWluc3RhbGw6Ci0tCWZvciB4IGluICQoU1VCRElSUyk7IGRvICQoTUFLRSkgJChNRkxBR1MpIC1DICQkeCBpbnN0YWxsOyBkb25lCi0raW5zdGFsbDogb3ZlcnJpZGUgQUNUSU9OPWluc3RhbGwKLStpbnN0YWxsOiAkKFNVQkRJUlMpCi0gCi0rCi0rYnJjdGw6IGxpYmJyaWRnZQotKyQoU1VCRElSUyk6Ci0rCSQoTUFLRSkgJChNRkxBR1MpIC1DICRAICQoQUNUSU9OKQotKwotKy5QSE9OWTogJChTVUJESVJTKQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy8wMDAyLWxpYmJyaWRnZS1maXgtc29tZS1idWlsZC10aW1lLXdhcm5pbmdzLWZjbnRsLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy8wMDAyLWxpYmJyaWRnZS1maXgtc29tZS1idWlsZC10aW1lLXdhcm5pbmdzLWZjbnRsLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZDA4YWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMvMDAwMi1saWJicmlkZ2UtZml4LXNvbWUtYnVpbGQtdGltZS13YXJuaW5ncy1mY250bC5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotRnJvbSA2OGZhZmM0ZWExMDM2NWFjMmU3NGFiN2M2NjBkMDk3Njk2ODU3Njc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogcm9vdCA8Z2l0QGFuZHJlZC5uZXQ+Ci1EYXRlOiBXZWQsIDIwIEp1bCAyMDE2IDIzOjQwOjMyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBsaWJicmlkZ2U6IGZpeCBzb21lIGJ1aWxkLXRpbWUgd2FybmluZ3MgKGZjbnRsLmgpCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVRoZXJlIGFyZSBidWlsZC10aW1lIHdhcm5pbmdzIGF0IHRoZSBtb21lbnQgd2hlbiBidWlsZGluZwotYWdhaW5zdCBtdXNsLCBhcyB0aGUgY29kZSBoZXJlICNpbmNsdWRlJ3MgdGhlIHdyb25nIGZpbGUsCi1zeXMvZmNudGwuaCBpbnN0ZWFkIG9mIGZjbnRsLmgKLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGxpYmJyaWRnZV9kZXZpZi5jOjI2OjA6Ci08c3lzcm9vdD4vdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmg6MToyOiB3YXJuaW5nOiAjd2FybmluZyByZWRpcmVjdGluZyBpbmNvcnJlY3QgI2luY2x1ZGUgPHN5cy9mY250bC5oPiB0byA8ZmNudGwuaD4gWy1XY3BwXQotICN3YXJuaW5nIHJlZGlyZWN0aW5nIGluY29ycmVjdCAjaW5jbHVkZSA8c3lzL2ZjbnRsLmg+IHRvIDxmY250bC5oPgotICBefn5+fn5+Ci1JbiBmaWxlIGluY2x1ZGVkIGZyb20gbGliYnJpZGdlX2lmLmM6MjM6MDoKLTxzeXNyb290Pi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaDoxOjI6IHdhcm5pbmc6ICN3YXJuaW5nIHJlZGlyZWN0aW5nIGluY29ycmVjdCAjaW5jbHVkZSA8c3lzL2ZjbnRsLmg+IHRvIDxmY250bC5oPiBbLVdjcHBdCi0gI3dhcm5pbmcgcmVkaXJlY3RpbmcgaW5jb3JyZWN0ICNpbmNsdWRlIDxzeXMvZmNudGwuaD4gdG8gPGZjbnRsLmg+Ci0gIF5+fn5+fn4KLQotZ2xpYmMgaGVhZGVycyBzaWxlbnRseSByZWRpcmVjdCBzeXMvZmNudGwuaCB0byBmY250bC5oIHNvIHRoZQotaXNzdWUgaXMgbm90IHNlZW4gdGhlcmUuCi0KLUxldCdzIGZpeCB0aGUgI2luY2x1ZGUncyB0byBzbyBhcyB0byB1c2UgdGhlIGNvcnJlY3Qgb25lcwotYW5kIHNpbGVuY2UgdGhlIGNvbXBpbGVyLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGdpdEBhbmRyZWQubmV0PgotLS0tCi0gbGliYnJpZGdlL2xpYmJyaWRnZV9kZXZpZi5jIHwgMiArLQotIGxpYmJyaWRnZS9saWJicmlkZ2VfaWYuYyAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmJyaWRnZS9saWJicmlkZ2VfZGV2aWYuYyBiL2xpYmJyaWRnZS9saWJicmlkZ2VfZGV2aWYuYwotaW5kZXggMWU4MzkyNS4uMmNmNzhmNiAxMDA2NDQKLS0tLSBhL2xpYmJyaWRnZS9saWJicmlkZ2VfZGV2aWYuYwotKysrIGIvbGliYnJpZGdlL2xpYmJyaWRnZV9kZXZpZi5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0tI2luY2x1ZGUgPHN5cy9mY250bC5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotIAotICNpbmNsdWRlICJsaWJicmlkZ2UuaCIKLSAjaW5jbHVkZSAibGliYnJpZGdlX3ByaXZhdGUuaCIKLWRpZmYgLS1naXQgYS9saWJicmlkZ2UvbGliYnJpZGdlX2lmLmMgYi9saWJicmlkZ2UvbGliYnJpZGdlX2lmLmMKLWluZGV4IDc3ZDNmOGEuLjljZjRiYWMgMTAwNjQ0Ci0tLS0gYS9saWJicmlkZ2UvbGliYnJpZGdlX2lmLmMKLSsrKyBiL2xpYmJyaWRnZS9saWJicmlkZ2VfaWYuYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxzeXMvZmNudGwuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gCi0gI2luY2x1ZGUgImxpYmJyaWRnZS5oIgotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy8wMDAzLWJyaWRnZS1maXgtc29tZS1idWlsZC10aW1lLXdhcm5pbmdzLWVycm5vLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy8wMDAzLWJyaWRnZS1maXgtc29tZS1idWlsZC10aW1lLXdhcm5pbmdzLWVycm5vLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyZjJhNjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMvMDAwMy1icmlkZ2UtZml4LXNvbWUtYnVpbGQtdGltZS13YXJuaW5ncy1lcnJuby5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSAyYjlkYzI0NWY5M2FiMjdkN2RhNDJhMTZkZGJiOTIxMjg4ODAwNmU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogcm9vdCA8Z2l0QGFuZHJlZC5uZXQ+Ci1EYXRlOiBXZWQsIDIwIEp1bCAyMDE2IDIzOjQwOjMzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMy81XSBicmlkZ2U6IGZpeCBzb21lIGJ1aWxkLXRpbWUgd2FybmluZ3MgKGVycm5vLmgpCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVRoZXJlIGlzIGEgYnVpbGQtdGltZSB3YXJuaW5nIGF0IHRoZSBtb21lbnQgd2hlbiBidWlsZGluZwotYWdhaW5zdCBtdXNsLCBhcyB0aGUgY29kZSBoZXJlICNpbmNsdWRlJ3MgdGhlIHdyb25nIGZpbGUsCi1zeXMvZXJybm8uaCBpbnN0ZWFkIG9mIGVycm5vLmgKLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGJyY3RsLmM6MjI6MDoKLTxzeXNyb290Pi91c3IvaW5jbHVkZS9zeXMvZXJybm8uaDoxOjI6IHdhcm5pbmc6ICN3YXJuaW5nIHJlZGlyZWN0aW5nIGluY29ycmVjdCAjaW5jbHVkZSA8c3lzL2Vycm5vLmg+IHRvIDxlcnJuby5oPiBbLVdjcHBdCi0gI3dhcm5pbmcgcmVkaXJlY3RpbmcgaW5jb3JyZWN0ICNpbmNsdWRlIDxzeXMvZXJybm8uaD4gdG8gPGVycm5vLmg+Ci0gIF5+fn5+fn4KLQotZ2xpYmMgaGVhZGVycyBzaWxlbnRseSByZWRpcmVjdCBzeXMvZXJybm8uaCB0byBlcnJuby5oIHNvIHRoZQotaXNzdWUgaXMgbm90IHNlZW4gdGhlcmUuCi0KLUxldCdzIGZpeCB0aGUgI2luY2x1ZGUncyB0byBzbyBhcyB0byB1c2UgdGhlIGNvcnJlY3Qgb25lcwotYW5kIHNpbGVuY2UgdGhlIGNvbXBpbGVyLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGdpdEBhbmRyZWQubmV0PgotLS0tCi0gYnJjdGwvYnJjdGwuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2JyY3RsL2JyY3RsLmMgYi9icmN0bC9icmN0bC5jCi1pbmRleCA0NmNhMzUyLi44ODU1MjM0IDEwMDY0NAotLS0tIGEvYnJjdGwvYnJjdGwuYwotKysrIGIvYnJjdGwvYnJjdGwuYwotQEAgLTE5LDcgKzE5LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxzeXMvZXJybm8uaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0gCi0gI2luY2x1ZGUgImxpYmJyaWRnZS5oIgotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy8wMDA0LWxpYmJyaWRnZS1hZGQtbWlzc2luZy1pbmNsdWRlLXMtZml4LWJ1aWxkLWFnYWluc3QtbXUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy8wMDA0LWxpYmJyaWRnZS1hZGQtbWlzc2luZy1pbmNsdWRlLXMtZml4LWJ1aWxkLWFnYWluc3QtbXUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NTE4NmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMvMDAwNC1saWJicmlkZ2UtYWRkLW1pc3NpbmctaW5jbHVkZS1zLWZpeC1idWlsZC1hZ2FpbnN0LW11LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSBjNDViNzM4MjlhOGI4Yzc5MjRkZjUyOGJhYTdlMTY0OThmOTE3Mjg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogcm9vdCA8Z2l0QGFuZHJlZC5uZXQ+Ci1EYXRlOiBXZWQsIDIwIEp1bCAyMDE2IDIzOjQwOjMzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNC81XSBsaWJicmlkZ2U6IGFkZCBtaXNzaW5nICNpbmNsdWRlJ3MgKGZpeCBidWlsZCBhZ2FpbnN0Ci0gbXVzbCkKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotRml4ZXMgZXJyb3IgbGlrZToKLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGxpYmJyaWRnZV9kZXZpZi5jOjI4OjA6Ci1saWJicmlkZ2UuaDo0NToxNzogZXJyb3I6IGZpZWxkICdtYXhfYWdlJyBoYXMgaW5jb21wbGV0ZSB0eXBlCi0gIHN0cnVjdCB0aW1ldmFsIG1heF9hZ2U7Ci0gICAgICAgICAgICAgICAgIF5+fn5+fn4KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSBsaWJicmlkZ2VfZGV2aWYuYzoyODowOgotbGliYnJpZGdlLmg6NTE6MjogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICd1X2ludDE2X3QnCi0gIHVfaW50MTZfdCByb290X3BvcnQ7Ci0gIF5+fn5+fn5+fgotCi1UaGVzZSB0eXBlcyBhcmUgbm90IHN0YW5kYXJkIEMgYnV0IHJhdGhlciBQb3NpeCwKLWZvciBzdHJ1Y3QgdGltZXZhbCBzZWU6Ci1odHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvNzkwODc5OS94c2gvc3lzdGltZS5oLmh0bWwKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxnaXRAYW5kcmVkLm5ldD4KLS0tLQotIGxpYmJyaWRnZS9saWJicmlkZ2UuaCB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJicmlkZ2UvbGliYnJpZGdlLmggYi9saWJicmlkZ2UvbGliYnJpZGdlLmgKLWluZGV4IDUzZWM4NjkuLmIwNzI3YzEgMTAwNjQ0Ci0tLS0gYS9saWJicmlkZ2UvbGliYnJpZGdlLmgKLSsrKyBiL2xpYmJyaWRnZS9saWJicmlkZ2UuaAotQEAgLTIwLDYgKzIwLDggQEAKLSAjZGVmaW5lIF9MSUJCUklER0VfSAotIAotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0rI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxsaW51eC9pbjYuaD4KLSAjaW5jbHVkZSA8bGludXgvaWYuaD4KLSAjaW5jbHVkZSA8bGludXgvaWZfYnJpZGdlLmg+Ci0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9icmlkZ2UtdXRpbHMvYnJpZGdlLXV0aWxzLzAwMDUtYnVpbGQtZG9uLXQtaWdub3JlLUNGTEFHUy1mcm9tLWVudmlyb25tZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMvMDAwNS1idWlsZC1kb24tdC1pZ25vcmUtQ0ZMQUdTLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKaW5kZXggOWYyMTU1ZS4uMGE3MmM2YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMvMDAwNS1idWlsZC1kb24tdC1pZ25vcmUtQ0ZMQUdTLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMvMDAwNS1idWlsZC1kb24tdC1pZ25vcmUtQ0ZMQUdTLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDdiYzE5MzJjYWJmYWZjYThjNjhlMThiZDQzZTNkMjAzYzcwZDJkZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiByb290IDxnaXRAYW5kcmVkLm5ldD4KLURhdGU6IFdlZCwgMjAgSnVsIDIwMTYgMjM6NDA6MzMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIGJ1aWxkOiBkb24ndCBpZ25vcmUgQ0ZMQUdTIGZyb20gZW52aXJvbm1lbnQKK0Zyb20gOWQ2MzgzOGQxMmM3NzJkZmUzMzM3MWUyYmI4YjgxOTE2MjU1MzlmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvZSBNYWNEb25hbGQgPGpvZV9tYWNkb25hbGRAbWVudG9yLmNvbT4KK0RhdGU6IE1vbiwgMzAgT2N0IDIwMTcgMTM6Mzc6NDggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IGRvbid0IGlnbm9yZSBDRkxBR1MgZnJvbSBlbnZpcm9ubWVudAogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdApAQCAtMTcsMTAgKzE3LDEwIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGdpdEBhbmRyZWQubmV0PgorU2lnbmVkLW9mZi1ieTogSm9lIE1hY0RvbmFsZCA8am9lX21hY2RvbmFsZEBtZW50b3IuY29tPgogLS0tCi0gYnJjdGwvTWFrZWZpbGUuaW4gICAgIHwgMiArLQotIGxpYmJyaWRnZS9NYWtlZmlsZS5pbiB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBicmN0bC9NYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2JyY3RsL01ha2VmaWxlLmluIGIvYnJjdGwvTWFrZWZpbGUuaW4KIGluZGV4IGUxOTU2ZDYuLmVmZjI2MGMgMTAwNjQ0CkBAIC0zNSwxOSArMzUsNiBAQAogIAogICUubzogJS5jIGJyY3RsLmgKICAJJChDQykgJChDRkxBR1MpICQoSU5DTFVERSkgLWMgJDwgCi1kaWZmIC0tZ2l0IGEvbGliYnJpZGdlL01ha2VmaWxlLmluIGIvbGliYnJpZGdlL01ha2VmaWxlLmluCi1pbmRleCAyMDUxMmM0Li40ZTFjZGRjIDEwMDY0NAotLS0tIGEvbGliYnJpZGdlL01ha2VmaWxlLmluCi0rKysgYi9saWJicmlkZ2UvTWFrZWZpbGUuaW4KLUBAIC01LDcgKzUsNyBAQCBBUj1hcgotIFJBTkxJQj1AUkFOTElCQAotIAotIENDPUBDQ0AKLS1DRkxBR1MgPSAtV2FsbCAtZyAkKEtFUk5FTF9IRUFERVJTKQotK0NGTEFHUyA9IC1XYWxsIC1nICQoS0VSTkVMX0hFQURFUlMpIEBDRkxBR1NACi0gCi0gcHJlZml4PUBwcmVmaXhACi0gZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAogLS0gCi0yLjguMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMvMDAwNi1saWJicmlkZ2UtTW9kaWZ5aW5nLXRoZS1BUi10by1jcm9zcy10b29sY2hhaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy8wMDA2LWxpYmJyaWRnZS1Nb2RpZnlpbmctdGhlLUFSLXRvLWNyb3NzLXRvb2xjaGFpbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjY1NzYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMvMDAwNi1saWJicmlkZ2UtTW9kaWZ5aW5nLXRoZS1BUi10by1jcm9zcy10b29sY2hhaW4ucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSBjOTI0ZjY2NzQzYzA1NGQ3ZWJhZmVmOTBjYTFiYmViYzk2NzMyMzU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9lIE1hY0RvbmFsZCA8am9lX21hY2RvbmFsZEBtZW50b3IuY29tPgorRGF0ZTogTW9uLCAzMCBPY3QgMjAxNyAxMzo0ODozMyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBsaWJicmlkZ2U6IE1vZGlmeWluZyB0aGUgQVIgdG8gY3Jvc3MgdG9vbGNoYWluCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1RoZSBNYWtlZmlsZSB1c2VzIHRoZSBob3N0IOKAnGFy4oCdIHRvb2wgd2hlbiBpdCBzaG91bGQgYmUgdXNpbmcgdGhlIGFyIGZyb20KK3RoZSB0YXJnZXQgdG9vbGNoYWluLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSm9lIE1hY0RvbmFsZCA8am9lX21hY2RvbmFsZEBtZW50b3IuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgIHwgMSArCisgbGliYnJpZGdlL01ha2VmaWxlLmluIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDhiMmUyZWEuLjg0MjZiN2MgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEyLDYgKzEyLDEwIEBAIGRubCBDaGVja3MgZm9yIHByb2dyYW1zLgorIEFDX1BST0dfQ0MKKyBBQ19QUk9HX0lOU1RBTEwKKyBBQ19QUk9HX1JBTkxJQgorK0FOX01BS0VWQVIoW0FSXSwgW0FDX1BST0dfQVJdKQorK0FOX1BST0dSQU0oW2FyXSwgW0FDX1BST0dfQVJdKQorK0FDX0RFRlVOKFtBQ19QUk9HX0FSXSwgW0FDX0NIRUNLX1RPT0woQVIsIGFyLCA6KV0pCisrQUNfUFJPR19BUgorIAorIGRubCBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KKyBBQ19IRUFERVJfU1REQworZGlmZiAtLWdpdCBhL2xpYmJyaWRnZS9NYWtlZmlsZS5pbiBiL2xpYmJyaWRnZS9NYWtlZmlsZS5pbgoraW5kZXggNzkzMmJmZS4uYmQ1NWU5YiAxMDA2NDQKKy0tLSBhL2xpYmJyaWRnZS9NYWtlZmlsZS5pbgorKysrIGIvbGliYnJpZGdlL01ha2VmaWxlLmluCitAQCAtMSw3ICsxLDcgQEAKKyAKKyBLRVJORUxfSEVBREVSUz0tSUBLRVJORUxfSEVBREVSU0AKKyAKKy1BUj1hcgorK0FSPUBBUkAKKyBSQU5MSUI9QFJBTkxJQkAKKyAKKyBDQz1AQ0NACistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9icmlkZ2UtdXRpbHMvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy0xLjUtY2hlY2stZXJyb3ItcmV0dXJucy1mcm9tLXdyaXRlLXRvLXN5c2ZzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMvYnJpZGdlLXV0aWxzLTEuNS1jaGVjay1lcnJvci1yZXR1cm5zLWZyb20td3JpdGUtdG8tc3lzZnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMGFmOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMvYnJpZGdlLXV0aWxzLTEuNS1jaGVjay1lcnJvci1yZXR1cm5zLWZyb20td3JpdGUtdG8tc3lzZnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1VcHN0cmVhbS1zdGF0dXM6IEJhY2tQb3J0IFtodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9jZ2l0L2JyaWRnZS11dGlscy5naXQvZGlmZi9icmlkZ2UtdXRpbHMtMS41LWNoZWNrLWVycm9yLXJldHVybnMtZnJvbS13cml0ZS10by1zeXNmcy5wYXRjaD9pZD1iMGQxMDcxN2ZkN2NlYmY1ZDg1ZWVkM2Y5NDFiNDA5ZmEwMzg0ZjA4XQotCi1TaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gYmI5OTcwYTlkZjk1ODM3ZTM5ZDY4MDAyMWIxZjczZDIzMWU4NTQwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0ZXBoZW4gSGVtbWluZ2VyIDxzaGVtbWluZ2VyQHZ5YXR0YS5jb20+Ci1EYXRlOiBUdWUsIDMgTWF5IDIwMTEgMDk6NTI6NDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIENoZWNrIGVycm9yIHJldHVybnMgZnJvbSB3cml0ZSB0byBzeXNmcwotCi1BZGQgaGVscGVyIGZ1bmN0aW9uIHRvIGNoZWNrIHdyaXRlIHRvIHN5c2ZzIGZpbGVzLgotCi1TaWduZWQtb2ZmLWJ5OiBQZXRyIFNhYmF0YSA8Y29udHlrQHJlZGhhdC5jb20+Ci0tLS0KLSBsaWJicmlkZ2UvbGliYnJpZGdlX2RldmlmLmMgfCAgIDM3ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYnJpZGdlL2xpYmJyaWRnZV9kZXZpZi5jIGIvbGliYnJpZGdlL2xpYmJyaWRnZV9kZXZpZi5jCi1pbmRleCBhYThiYzM2Li4xZTgzOTI1IDEwMDY0NAotLS0tIGEvbGliYnJpZGdlL2xpYmJyaWRnZV9kZXZpZi5jCi0rKysgYi9saWJicmlkZ2UvbGliYnJpZGdlX2RldmlmLmMKLUBAIC0yODAsMjUgKzI4MCwzOCBAQCBmYWxsYmFjazoKLSAJcmV0dXJuIG9sZF9nZXRfcG9ydF9pbmZvKGJybmFtZSwgcG9ydCwgaW5mbyk7Ci0gfQotIAotK3N0YXRpYyBpbnQgc2V0X3N5c2ZzKGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGxvbmcgdmFsdWUpCi0rewotKwlpbnQgZmQsIHJldCA9IDAsIGNjOwotKwljaGFyIGJ1ZlszMl07Ci0rCi0rCWZkID0gb3BlbihwYXRoLCBPX1dST05MWSk7Ci0rCWlmIChmZCA8IDApCi0rCQlyZXR1cm4gLTE7Ci0rCi0rCWNjID0gc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVsdVxuIiwgdmFsdWUpOwotKwlpZiAod3JpdGUoZmQsIGJ1ZiwgY2MpIDwgMCkKLSsJCXJldCA9IC0xOwotKwljbG9zZShmZCk7Ci0rCi0rCXJldHVybiByZXQ7Ci0rfQotKwotIAotIHN0YXRpYyBpbnQgYnJfc2V0KGNvbnN0IGNoYXIgKmJyaWRnZSwgY29uc3QgY2hhciAqbmFtZSwKLSAJCSAgdW5zaWduZWQgbG9uZyB2YWx1ZSwgdW5zaWduZWQgbG9uZyBvbGRjb2RlKQotIHsKLSAJaW50IHJldDsKLSAJY2hhciBwYXRoW1NZU0ZTX1BBVEhfTUFYXTsKLS0JRklMRSAqZjsKLSAKLS0Jc25wcmludGYocGF0aCwgU1lTRlNfUEFUSF9NQVgsIFNZU0ZTX0NMQVNTX05FVCAiJXMvJXMiLCBicmlkZ2UsIG5hbWUpOwotKwlzbnByaW50ZihwYXRoLCBTWVNGU19QQVRIX01BWCwgU1lTRlNfQ0xBU1NfTkVUICIlcy9icmlkZ2UvJXMiLAotKwkJIGJyaWRnZSwgbmFtZSk7Ci0gCi0tCWYgPSBmb3BlbihwYXRoLCAidyIpOwotLQlpZiAoZikgewotLQkJcmV0ID0gZnByaW50ZihmLCAiJWxkXG4iLCB2YWx1ZSk7Ci0tCQlmY2xvc2UoZik7Ci0tCX0gZWxzZSB7Ci0rCWlmICgocmV0ID0gc2V0X3N5c2ZzKHBhdGgsIHZhbHVlKSkgPCAwKSB7Ci0gCQkvKiBmYWxsYmFjayB0byBvbGQgaW9jdGwgKi8KLSAJCXN0cnVjdCBpZnJlcSBpZnI7Ci0gCQl1bnNpZ25lZCBsb25nIGFyZ3NbNF0gPSB7IG9sZGNvZGUsIHZhbHVlLCAwLCAwIH07Ci0tCQkKLSsKLSAJCXN0cm5jcHkoaWZyLmlmcl9uYW1lLCBicmlkZ2UsIElGTkFNU0laKTsKLSAJCWlmci5pZnJfZGF0YSA9IChjaGFyICopICZhcmdzOwotIAkJcmV0ID0gaW9jdGwoYnJfc29ja2V0X2ZkLCBTSU9DREVWUFJJVkFURSwgJmlmcik7Ci1AQCAtMzQ4LDE0ICszNjEsMTAgQEAgc3RhdGljIGludCBwb3J0X3NldChjb25zdCBjaGFyICpicmlkZ2UsIGNvbnN0IGNoYXIgKmlmbmFtZSwKLSB7Ci0gCWludCByZXQ7Ci0gCWNoYXIgcGF0aFtTWVNGU19QQVRIX01BWF07Ci0tCUZJTEUgKmY7Ci0gCi0gCXNucHJpbnRmKHBhdGgsIFNZU0ZTX1BBVEhfTUFYLCBTWVNGU19DTEFTU19ORVQgIiVzL2JycG9ydC8lcyIsIGlmbmFtZSwgbmFtZSk7Ci0tCWYgPSBmb3BlbihwYXRoLCAidyIpOwotLQlpZiAoZikgewotLQkJcmV0ID0gZnByaW50ZihmLCAiJWxkXG4iLCB2YWx1ZSk7Ci0tCQlmY2xvc2UoZik7Ci0tCX0gZWxzZSB7Ci0rCi0rCWlmICgocmV0ID0gc2V0X3N5c2ZzKHBhdGgsIHZhbHVlKSkgPCAwKSB7Ci0gCQlpbnQgaW5kZXggPSBnZXRfcG9ydG5vKGJyaWRnZSwgaWZuYW1lKTsKLSAKLSAJCWlmIChpbmRleCA8IDApCi0tLSAKLTEuNy41LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMvYnJpZGdlLXV0aWxzLTEuNS1maXgtZXJyb3ItbWVzc2FnZS1mb3ItaW5jb3JyZWN0LWNvbW1hbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMtMS41LWZpeC1lcnJvci1tZXNzYWdlLWZvci1pbmNvcnJlY3QtY29tbWFuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQwNDk0ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMtMS41LWZpeC1lcnJvci1tZXNzYWdlLWZvci1pbmNvcnJlY3QtY29tbWFuZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVVwc3RyZWFtLXN0YXR1czogQmFja1BvcnQgW2h0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL2NnaXQvYnJpZGdlLXV0aWxzLmdpdC9kaWZmL2JyaWRnZS11dGlscy0xLjUtZml4LWVycm9yLW1lc3NhZ2UtZm9yLWluY29ycmVjdC1jb21tYW5kLnBhdGNoP2lkPWIwZDEwNzE3ZmQ3Y2ViZjVkODVlZWQzZjk0MWI0MDlmYTAzODRmMDhdCi0KLVNpZ25lZC1vZmYtYnk6IFJveS5MaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLQotRnJvbSBjN2VkMDk5NmVmNThiNDk3ZDNkMzBiZTgwMmFiNWFlNmMzNzA5OWI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RlcGhlbiBIZW1taW5nZXIgPHNoZW1taW5nZXJAdnlhdHRhLmNvbT4KLURhdGU6IFR1ZSwgMyBNYXkgMjAxMSAwOTo0OTo1NyAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvM10gRml4IGVycm9yIG1lc3NhZ2UgZm9yIGluY29ycmVjdCBjb21tYW5kCi0KLURlYmlhbiBidWcgNDA2OTA3Ci1FcnJvciBtZXNzYWdlIHdhcyByZWZlcmluZyB0byBpbmNvcnJlY3QgY29tbWFuZCBhcmd1bWVudC4KLQotU2lnbmVkLW9mZi1ieTogUGV0ciBTYWJhdGEgPGNvbnR5a0ByZWRoYXQuY29tPgotLS0tCi0gYnJjdGwvYnJjdGwuYyB8ICAgIDIgKy0KLSAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JyY3RsL2JyY3RsLmMgYi9icmN0bC9icmN0bC5jCi1pbmRleCA0NTRiOGRkLi40NmNhMzUyIDEwMDY0NAotLS0tIGEvYnJjdGwvYnJjdGwuYwotKysrIGIvYnJjdGwvYnJjdGwuYwotQEAgLTY5LDcgKzY5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmNvbnN0KiBhcmd2KQotIAlhcmdjIC09IG9wdGluZDsKLSAJYXJndiArPSBvcHRpbmQ7Ci0gCWlmICgoY21kID0gY29tbWFuZF9sb29rdXAoKmFyZ3YpKSA9PSBOVUxMKSB7Ci0tCQlmcHJpbnRmKHN0ZGVyciwgIm5ldmVyIGhlYXJkIG9mIGNvbW1hbmQgWyVzXVxuIiwgYXJndlsxXSk7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIm5ldmVyIGhlYXJkIG9mIGNvbW1hbmQgWyVzXVxuIiwgKmFyZ3YpOwotIAkJZ290byBoZWxwOwotIAl9Ci0gCQotLS0gCi0xLjcuNS4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9icmlkZ2UtdXRpbHMvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy0xLjUtZml4LWluY29ycmVjdC1jb21tYW5kLWluLW1hbnVhbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9icmlkZ2UtdXRpbHMvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy0xLjUtZml4LWluY29ycmVjdC1jb21tYW5kLWluLW1hbnVhbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY2ZDZkNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMtMS41LWZpeC1pbmNvcnJlY3QtY29tbWFuZC1pbi1tYW51YWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1VcHN0cmVhbS1zdGF0dXM6IEJhY2tQb3J0IFtodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9jZ2l0L2JyaWRnZS11dGlscy5naXQvZGlmZi9icmlkZ2UtdXRpbHMtMS41LWZpeC1pbmNvcnJlY3QtY29tbWFuZC1pbi1tYW51YWwucGF0Y2g/aWQ9YjBkMTA3MTdmZDdjZWJmNWQ4NWVlZDNmOTQxYjQwOWZhMDM4NGYwOF0KLQotU2lnbmVkLW9mZi1ieTogUm95LkxpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotCi1Gcm9tIDhlZjdiNzc1NjJiNjM2ZWZjYmQ4Yjc1OWViMzI0ZDZjMDY5MjAwZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVwaGVuIEhlbW1pbmdlciA8c2hlbW1pbmdlckB2eWF0dGEuY29tPgotRGF0ZTogVHVlLCAzIE1heSAyMDExIDA5OjQ4OjQwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSBGaXggaW5jb3JyZWN0IGNvbW1hbmQgaW4gbWFudWFsCi0KLUNvbW1hbmQgaXMgInNldGFnZWluZyIgbm90ICJzZXRhZ2Vpbmd0aW1lIjsgZml4IG1hbiBwYWdlLgotRGViaWFuIGJ1ZyByZXBvcnQuCi0KLVNpZ25lZC1vZmYtYnk6IFBldHIgU2FiYXRhIDxjb250eWtAcmVkaGF0LmNvbT4KLS0tLQotIGRvYy9icmN0bC44IHwgICAgMiArLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZG9jL2JyY3RsLjggYi9kb2MvYnJjdGwuOAotaW5kZXggZDkwNDA0Ny4uNzcxZjMyMyAxMDA2NDQKLS0tLSBhL2RvYy9icmN0bC44Ci0rKysgYi9kb2MvYnJjdGwuOAotQEAgLTg5LDcgKzg5LDcgQEAgZGF0YS4gTWFjaGluZXMgY2FuIG1vdmUgdG8gb3RoZXIgcG9ydHMsIG5ldHdvcmsgY2FyZHMgY2FuIGJlIHJlcGxhY2VkCi0gLkIgYnJjdGwgc2hvd21hY3MgPGJybmFtZT4KLSBzaG93cyBhIGxpc3Qgb2YgbGVhcm5lZCBNQUMgYWRkcmVzc2VzIGZvciB0aGlzIGJyaWRnZS4KLSAKLS0uQiBicmN0bCBzZXRhZ2Vpbmd0aW1lIDxicm5hbWU+IDx0aW1lPgotKy5CIGJyY3RsIHNldGFnZWluZyA8YnJuYW1lPiA8dGltZT4KLSBzZXRzIHRoZSBldGhlcm5ldCAoTUFDKSBhZGRyZXNzIGFnZWluZyB0aW1lLCBpbiBzZWNvbmRzLiBBZnRlciA8dGltZT4KLSBzZWNvbmRzIG9mIG5vdCBoYXZpbmcgc2VlbiBhIGZyYW1lIGNvbWluZyBmcm9tIGEgY2VydGFpbiBhZGRyZXNzLCB0aGUKLSBicmlkZ2Ugd2lsbCB0aW1lIG91dCAoZGVsZXRlKSB0aGF0IGFkZHJlc3MgZnJvbSB0aGUgRm9yd2FyZGluZwotLS0gCi0xLjcuNS4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9icmlkZ2UtdXRpbHMvYnJpZGdlLXV0aWxzL2tlcm5lbC1oZWFkZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMva2VybmVsLWhlYWRlcnMucGF0Y2gKaW5kZXggZGUzNmYwNS4uOGEyM2EzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMva2VybmVsLWhlYWRlcnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHMva2VybmVsLWhlYWRlcnMucGF0Y2gKQEAgLTEsMjIgKzEsMzMgQEAKLWluY2x1ZGUgbWlzc2luZyBrZXJuZWwgaGVhZGVyCitGcm9tIDgyNGY4MzhjYzljN2I4YTQ0MTc0MzU4NDQ2OTkzZDYxYmU3YmJiM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb2UgTWFjRG9uYWxkIDxqb2VfbWFjZG9uYWxkQG1lbnRvci5jb20+CitEYXRlOiBNb24sIDMwIE9jdCAyMDE3IDEzOjE4OjIwIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgbWlzc2luZyBrZXJuZWwgaGVhZGVyCiAKIEZpeGVzIGVycm9ycyBsaWtlCiAKIHwgL2Iva3Jhai9qbGludXgtbmV4dC9wb2t5L2J1aWxkL3RtcC1lZ2xpYmMvc3lzcm9vdHMvcmUtNjRiL3Vzci9pbmNsdWRlL2xpbnV4L2lmX2JyaWRnZS5oOjE3MjoyMDogZXJyb3I6IGZpZWxkICdpcDYnIGhhcyBpbmNvbXBsZXRlIHR5cGUKIHwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL2xpYmJyaWRnZS9saWJicmlkZ2UuaDoyNDowLAogCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLUluZGV4OiBicmlkZ2UtdXRpbHMtMS41L2xpYmJyaWRnZS9saWJicmlkZ2UuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGJyaWRnZS11dGlscy0xLjUub3JpZy9saWJicmlkZ2UvbGliYnJpZGdlLmgJMjAxMS0wMy0yOCAxNzo1Mjo1NC4wMDAwMDAwMDAgLTA3MDAKLSsrKyBicmlkZ2UtdXRpbHMtMS41L2xpYmJyaWRnZS9saWJicmlkZ2UuaAkyMDEzLTAzLTA0IDIxOjE2OjI1Ljc4MTE4ODMwOSAtMDgwMAotQEAgLTIwLDYgKzIwLDcgQEAKLSAjZGVmaW5lIF9MSUJCUklER0VfSAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEpvZSBNYWNEb25hbGQgPGpvZV9tYWNkb25hbGRAbWVudG9yLmNvbT4KKy0tLQorIGxpYmJyaWRnZS9saWJicmlkZ2UuaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvbGliYnJpZGdlL2xpYmJyaWRnZS5oIGIvbGliYnJpZGdlL2xpYmJyaWRnZS5oCitpbmRleCBjMDM4YjkyLi5mZDA5MzA2IDEwMDY0NAorLS0tIGEvbGliYnJpZGdlL2xpYmJyaWRnZS5oCisrKysgYi9saWJicmlkZ2UvbGliYnJpZGdlLmgKK0BAIC0yNCw2ICsyNCw3IEBACisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICAKLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogKyNpbmNsdWRlIDxsaW51eC9pbjYuaD4KICAjaW5jbHVkZSA8bGludXgvaWYuaD4KICAjaW5jbHVkZSA8bGludXgvaWZfYnJpZGdlLmg+CiAgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9icmlkZ2UtdXRpbHMvYnJpZGdlLXV0aWxzXzEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9icmlkZ2UtdXRpbHMvYnJpZGdlLXV0aWxzXzEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAzMmFiMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlsc18xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1yZXF1aXJlIGJyaWRnZS11dGlscy5pbmMKLQotU1JDX1VSSSArPSAiXAotICAgIGZpbGU6Ly9rZXJuZWwtaGVhZGVycy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtYnVpbGQtZXJyb3Itb3V0LWNvcnJlY3RseS1pZi1hLXN1Ym1ha2UtZmFpbHMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWxpYmJyaWRnZS1maXgtc29tZS1idWlsZC10aW1lLXdhcm5pbmdzLWZjbnRsLmgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLWJyaWRnZS1maXgtc29tZS1idWlsZC10aW1lLXdhcm5pbmdzLWVycm5vLmgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA0LWxpYmJyaWRnZS1hZGQtbWlzc2luZy1pbmNsdWRlLXMtZml4LWJ1aWxkLWFnYWluc3QtbXUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA1LWJ1aWxkLWRvbi10LWlnbm9yZS1DRkxBR1MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBcCi0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY5ZDIwYTQ1MzIyMWExYjdlMzJhZTg0Njk0ZGEyYzM3IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWM3YjM4MTE2MGIzNDA2NDhkZWRlNThjMzFiYjIyMzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDJmOWU1ZmI4ZjZjNTJlNjNhOThhNDNiODFiZDI4MWMyMjdjNTI5ZjE5NDkxM2UxYzUxZWM0OGEzOTNiNjY4OCIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHNfMS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2JyaWRnZS11dGlscy9icmlkZ2UtdXRpbHNfMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjODdjNDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYnJpZGdlLXV0aWxzL2JyaWRnZS11dGlsc18xLjYuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJUb29scyBmb3IgZXRoZXJuZXQgYnJpZGdpbmciCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpbnV4Zm91bmRhdGlvbi5vcmcvY29sbGFib3JhdGUvd29ya2dyb3Vwcy9uZXR3b3JraW5nL2JyaWRnZSIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJHUEx2MiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjlkMjBhNDUzMjIxYTFiN2UzMmFlODQ2OTRkYTJjMzciCisKK1NSQ1JFViA9ICI0MmMxYWVmYzMwM2ZkZjg5MWZiYjA5OWVhNTFmMDBkY2E4M2FiNjA2IgorCitTUkNfVVJJID0gIlwKKyAgICBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc2hlbW1pbmdlci9icmlkZ2UtdXRpbHMuZ2l0IFwKKyAgICBmaWxlOi8va2VybmVsLWhlYWRlcnMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA1LWJ1aWxkLWRvbi10LWlnbm9yZS1DRkxBR1MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDYtbGliYnJpZGdlLU1vZGlmeWluZy10aGUtQVItdG8tY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJzeXNmc3V0aWxzIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJicmN0bCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW2JyY3RsXSA9ICIxMDAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYnJjdGxdID0gIiR7c2JpbmRpcn0vYnJjdGwiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtbGludXgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke2RhdGFkaXJ9L2JyaWRnZS11dGlscworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtcHJlLXVwLmQKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXBvc3QtZG93bi5kCit9CisKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtYnJpZGdlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Nocm9ueS9jaHJvbnkvYXJtX2VhYmkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2hyb255L2Nocm9ueS9hcm1fZWFiaS5wYXRjaAppbmRleCBkMTU4NmJiLi45MmEyZGJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2hyb255L2Nocm9ueS9hcm1fZWFiaS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2hyb255L2Nocm9ueS9hcm1fZWFiaS5wYXRjaApAQCAtMSw0OCArMSw1NCBAQAogICAgIGNocm9ueTogZml4IGJ1aWxkIGZhaWx1cmUgZm9yIGFybWE5Ci0gICAgCisKICAgICBFbGltaW5hdGUgcmVmZXJlbmNlcyB0byBzeXNjYWxscyBub3QgYXZhaWxhYmxlCiAgICAgZm9yIEFSTV9FQUJJLiAgQWxzbyBhZGQgYSBkZXBlbmRlbmN5IG9uIGxpYnNlY2NvbXAKICAgICB3aGljaCBpcyBuZWVkZWQgZm9yIHNjZmlsdGVyIHRvIHdvcmsuCi0gICAgCisKICAgICBTZXQgUEFDS0FHRUNPTkZJRyB0byBub3QgZW5hYmxlIHNjZmlsdGVyLCBzaW5jZQogICAgIGtlcm5lbCBDT05GSUdfU0VDQ09NUCBpcyB1bmxpa2VseSB0byBiZSBzZXQuICBUaGlzCiAgICAgYWxpZ25zIHRoZSB1c2FnZSBvZiBsaWJzZWNjb21wIHdpdGggdGhhdCBvZiBvdGhlciBwYWNrYWdlcy4KIAogICAgIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotICAgIAorCiAgICAgU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgogCisgICAgUmVmcmVzaCBwYXRjaCBmb3IgbmV3IHVwc3RyZWFtIHZlcnNpb24uCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgSm9zbHluIDxyb2JlcnQuam9zbHluQHJlZHJlY3RhbmdsZS5vcmc+CisKIC0tLSBhL3N5c19saW51eC5jCiArKysgYi9zeXNfbGludXguYwotQEAgLTQ1MywxMyArNDUzLDEyIEBAIFNZU19MaW51eF9FbmFibGVTeXN0ZW1DYWxsRmlsdGVyKGludCBsZXYKK0BAIC00NjUsMTQgKzQ2NSwxNCBAQCBTWVNfTGludXhfRW5hYmxlU3lzdGVtQ2FsbEZpbHRlcihpbnQgbGV2CiAgICBjb25zdCBpbnQgc3lzY2FsbHNbXSA9IHsKICAgICAgLyogQ2xvY2sgKi8KLSAgICAgU0NNUF9TWVMoYWRqdGltZXgpLCBTQ01QX1NZUyhnZXR0aW1lb2ZkYXkpLCBTQ01QX1NZUyhzZXR0aW1lb2ZkYXkpLAotLSAgICBTQ01QX1NZUyh0aW1lKSwKKyAgICAgU0NNUF9TWVMoYWRqdGltZXgpLCBTQ01QX1NZUyhjbG9ja19nZXR0aW1lKSwgU0NNUF9TWVMoZ2V0dGltZW9mZGF5KSwKKy0gICAgU0NNUF9TWVMoc2V0dGltZW9mZGF5KSwgU0NNUF9TWVModGltZSksCisrICAgIFNDTVBfU1lTKHNldHRpbWVvZmRheSksCiAgICAgIC8qIFByb2Nlc3MgKi8KLS0gICAgU0NNUF9TWVMoY2xvbmUpLCBTQ01QX1NZUyhleGl0KSwgU0NNUF9TWVMoZXhpdF9ncm91cCksIFNDTVBfU1lTKGdldHJsaW1pdCksCi0rICAgIFNDTVBfU1lTKGNsb25lKSwgU0NNUF9TWVMoZXhpdCksIFNDTVBfU1lTKGV4aXRfZ3JvdXApLAotICAgICBTQ01QX1NZUyhydF9zaWdhY3Rpb24pLCBTQ01QX1NZUyhydF9zaWdyZXR1cm4pLCBTQ01QX1NZUyhydF9zaWdwcm9jbWFzayksCi0gICAgIFNDTVBfU1lTKHNldF90aWRfYWRkcmVzcyksIFNDTVBfU1lTKHNpZ3JldHVybiksIFNDTVBfU1lTKHdhaXQ0KSwKKyAgICAgU0NNUF9TWVMoY2xvbmUpLCBTQ01QX1NZUyhleGl0KSwgU0NNUF9TWVMoZXhpdF9ncm91cCksIFNDTVBfU1lTKGdldHBpZCksCistICAgIFNDTVBfU1lTKGdldHJsaW1pdCksIFNDTVBfU1lTKHJ0X3NpZ2FjdGlvbiksIFNDTVBfU1lTKHJ0X3NpZ3JldHVybiksCisrICAgIFNDTVBfU1lTKHJ0X3NpZ2FjdGlvbiksIFNDTVBfU1lTKHJ0X3NpZ3JldHVybiksCisgICAgIFNDTVBfU1lTKHJ0X3NpZ3Byb2NtYXNrKSwgU0NNUF9TWVMoc2V0X3RpZF9hZGRyZXNzKSwgU0NNUF9TWVMoc2lncmV0dXJuKSwKKyAgICAgU0NNUF9TWVMod2FpdDQpLAogICAgICAvKiBNZW1vcnkgKi8KIC0gICAgU0NNUF9TWVMoYnJrKSwgU0NNUF9TWVMobWFkdmlzZSksIFNDTVBfU1lTKG1tYXApLCBTQ01QX1NZUyhtbWFwMiksCiArICAgIFNDTVBfU1lTKGJyayksIFNDTVBfU1lTKG1hZHZpc2UpLCBTQ01QX1NZUyhtbWFwMiksCiAgICAgIFNDTVBfU1lTKG1wcm90ZWN0KSwgU0NNUF9TWVMobXJlbWFwKSwgU0NNUF9TWVMobXVubWFwKSwgU0NNUF9TWVMoc2htZHQpLAogICAgICAvKiBGaWxlc3lzdGVtICovCiAgICAgIFNDTVBfU1lTKGFjY2VzcyksIFNDTVBfU1lTKGNobW9kKSwgU0NNUF9TWVMoY2hvd24pLCBTQ01QX1NZUyhjaG93bjMyKSwKLUBAIC00NzAsMTQgKzQ2OSwyMSBAQCBTWVNfTGludXhfRW5hYmxlU3lzdGVtQ2FsbEZpbHRlcihpbnQgbGV2CitAQCAtNDgzLDE0ICs0ODMsMjEgQEAKICAgICAgU0NNUF9TWVMoYmluZCksIFNDTVBfU1lTKGNvbm5lY3QpLCBTQ01QX1NZUyhnZXRzb2NrbmFtZSksCi0gICAgIFNDTVBfU1lTKHJlY3Zmcm9tKSwgU0NNUF9TWVMocmVjdm1zZyksIFNDTVBfU1lTKHNlbmRtbXNnKSwKLSAgICAgU0NNUF9TWVMoc2VuZG1zZyksIFNDTVBfU1lTKHNlbmR0byksCisgICAgIFNDTVBfU1lTKHJlY3Zmcm9tKSwgU0NNUF9TWVMocmVjdm1tc2cpLCBTQ01QX1NZUyhyZWN2bXNnKSwKKyAgICAgU0NNUF9TWVMoc2VuZG1tc2cpLCBTQ01QX1NZUyhzZW5kbXNnKSwgU0NNUF9TWVMoc2VuZHRvKSwKIC0gICAgLyogVE9ETzogY2hlY2sgc29ja2V0Y2FsbCBhcmd1bWVudHMgKi8KIC0gICAgU0NNUF9TWVMoc29ja2V0Y2FsbCksCiAgICAgIC8qIEdlbmVyYWwgSS9PICovCi0gICAgIFNDTVBfU1lTKF9uZXdzZWxlY3QpLCBTQ01QX1NZUyhjbG9zZSksIFNDTVBfU1lTKG9wZW4pLCBTQ01QX1NZUyhwaXBlKSwKKyAgICAgU0NNUF9TWVMoX25ld3NlbGVjdCksIFNDTVBfU1lTKGNsb3NlKSwgU0NNUF9TWVMob3BlbiksIFNDTVBfU1lTKG9wZW5hdCksIFNDTVBfU1lTKHBpcGUpLAogLSAgICBTQ01QX1NZUyhwb2xsKSwgU0NNUF9TWVMocmVhZCksIFNDTVBfU1lTKGZ1dGV4KSwgU0NNUF9TWVMoc2VsZWN0KSwKICsgICAgU0NNUF9TWVMocG9sbCksIFNDTVBfU1lTKHJlYWQpLCBTQ01QX1NZUyhmdXRleCksCiAgICAgIFNDTVBfU1lTKHNldF9yb2J1c3RfbGlzdCksIFNDTVBfU1lTKHdyaXRlKSwKICAgICAgLyogTWlzY2VsbGFuZW91cyAqLwotICAgICBTQ01QX1NZUyh1bmFtZSksCisgICAgIFNDTVBfU1lTKGdldHJhbmRvbSksIFNDTVBfU1lTKHN5c2luZm8pLCBTQ01QX1NZUyh1bmFtZSksCiArICAgIC8qIG5vdCBhbHdheXMgYXZhaWxhYmxlICovCiArI2lmICEgZGVmaW5lZChfX0FSTV9FQUJJX18pCiArICAgIFNDTVBfU1lTKHRpbWUpLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Nocm9ueS9jaHJvbnlfMi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Nocm9ueS9jaHJvbnlfMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTQzMWY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaHJvbnkvY2hyb255XzIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi1TVU1NQVJZID0gIlZlcnNhdGlsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTmV0d29yayBUaW1lIFByb3RvY29sIgotREVTQ1JJUFRJT04gPSAiQ2hyb255IGNhbiBzeW5jaHJvbml6ZSB0aGUgc3lzdGVtIGNsb2NrIHdpdGggTlRQIFwKLXNlcnZlcnMsIHJlZmVyZW5jZSBjbG9ja3MgKGUuZy4gR1BTIHJlY2VpdmVyKSwgYW5kIG1hbnVhbCBpbnB1dCB1c2luZyBcCi13cmlzdHdhdGNoIGFuZCBrZXlib2FyZC4gSXQgY2FuIGFsc28gb3BlcmF0ZSBhcyBhbiBOVFB2NCAoUkZDIDU5MDUpIFwKLXNlcnZlciBhbmQgcGVlciB0byBwcm92aWRlIGEgdGltZSBzZXJ2aWNlIHRvIG90aGVyIGNvbXB1dGVycyBpbiB0aGUgXAotbmV0d29yay4gXAotXAotSXQgaXMgZGVzaWduZWQgdG8gcGVyZm9ybSB3ZWxsIGluIGEgd2lkZSByYW5nZSBvZiBjb25kaXRpb25zLCBcCi1pbmNsdWRpbmcgaW50ZXJtaXR0ZW50IG5ldHdvcmsgY29ubmVjdGlvbnMsIGhlYXZpbHkgY29uZ2VzdGVkIFwKLW5ldHdvcmtzLCBjaGFuZ2luZyB0ZW1wZXJhdHVyZXMgKG9yZGluYXJ5IGNvbXB1dGVyIGNsb2NrcyBhcmUgXAotc2Vuc2l0aXZlIHRvIHRlbXBlcmF0dXJlKSwgYW5kIHN5c3RlbXMgdGhhdCBkbyBub3QgcnVuIGNvbnRpbnVvdXNseSwgb3IgXAotcnVuIG9uIGEgdmlydHVhbCBtYWNoaW5lLiBcCi1cCi1UeXBpY2FsIGFjY3VyYWN5IGJldHdlZW4gdHdvIG1hY2hpbmVzIG9uIGEgTEFOIGlzIGluIHRlbnMsIG9yIGEgZmV3IFwKLWh1bmRyZWRzLCBvZiBtaWNyb3NlY29uZHM7IG92ZXIgdGhlIEludGVybmV0LCBhY2N1cmFjeSBpcyB0eXBpY2FsbHkgXAotd2l0aGluIGEgZmV3IG1pbGxpc2Vjb25kcy4gV2l0aCBhIGdvb2QgaGFyZHdhcmUgcmVmZXJlbmNlIGNsb2NrIFwKLXN1Yi1taWNyb3NlY29uZCBhY2N1cmFjeSBpcyBwb3NzaWJsZS4gXAotXAotVHdvIHByb2dyYW1zIGFyZSBpbmNsdWRlZCBpbiBjaHJvbnk6IGNocm9ueWQgaXMgYSBkYWVtb24gdGhhdCBjYW4gYmUgXAotc3RhcnRlZCBhdCBib290IHRpbWUgYW5kIGNocm9ueWMgaXMgYSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIHByb2dyYW0gXAotd2hpY2ggY2FuIGJlIHVzZWQgdG8gbW9uaXRvciBjaHJvbnlkJ3MgcGVyZm9ybWFuY2UgYW5kIHRvIGNoYW5nZSBcCi12YXJpb3VzIG9wZXJhdGluZyBwYXJhbWV0ZXJzIHdoaWxzdCBpdCBpcyBydW5uaW5nLiBcCi1cCi1UaGlzIHJlY2lwZSBwcm9kdWNlcyB0d28gYmluYXJ5IHBhY2thZ2VzOiAnY2hyb255JyB3aGljaCBjb250YWlucyBjaHJvbnlkLCBcCi10aGUgY29uZmlndXJhdGlvbiBmaWxlIGFuZCB0aGUgaW5pdCBzY3JpcHQsIGFuZCAnY2hyb255Yycgd2hpY2ggY29udGFpbnMgXAotdGhlIGNsaWVudCBwcm9ncmFtIG9ubHkuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vY2hyb255LnR1eGZhbWlseS5vcmcvIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC50dXhmYW1pbHkub3JnL2Nocm9ueS9jaHJvbnktJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vY2hyb255LmNvbmYgXAotICAgIGZpbGU6Ly9jaHJvbnlkIFwKLSAgICBmaWxlOi8vYXJtX2VhYmkucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImQwNTk4YWE4YTliZThmYWNjZWY5Mzg2ZjZmYzBkNWYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkMDRlN2NkYTIzMzMyODljMjEwNGI3MzFkMzljM2MxZGI5NDgxNmU0M2JhZTM1ZDdlZTRlN2FlOGFmNjM5MWYiCi0KLURFUEVORFMgPSAicHBzLXRvb2xzIgotCi0jIE5vdGU6IERlc3BpdGUgYmVpbmcgYnVpbHQgdmlhICcuL2NvbmZpZ3VyZTsgbWFrZTsgbWFrZSBpbnN0YWxsJywKLSMgICAgICAgY2hyb255IGRvZXMgbm90IHVzZSBHTlUgQXV0b3Rvb2xzLgotaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zOgotIyAtIEZvciBjb21tYW5kIGxpbmUgZWRpdGluZyBzdXBwb3J0IGluIGNocm9ueWMsIHlvdSBtYXkgc3BlY2lmeSBlaXRoZXIKLSMgICAnZWRpdGxpbmUnIG9yICdyZWFkbGluZScgYnV0IG5vdCBib3RoLiAgZWRpdGxpbmUgaXMgc21hbGxlciwgYnV0Ci0jICAgbWFueSBzeXN0ZW1zIGFscmVhZHkgaGF2ZSByZWFkbGluZSBmb3Igb3RoZXIgcHVycG9zZXMgc28geW91IG1pZ2h0IHdhbnQKLSMgICB0byBjaG9vc2UgdGhhdCBpbnN0ZWFkLiAgSG93ZXZlciwgYmV3YXJlIGxpY2Vuc2UgaW5jb21wYXRpYmlsaXR5Ci0jICAgc2luY2UgY2hyb255IGlzIEdQTHYyIGFuZCByZWFkbGluZSB2ZXJzaW9ucyBhZnRlciA2LjAgYXJlIEdQTHYzKy4KLSMgICBZb3UgY2FuIG9mIGNvdXJzZSBjaG9vc2UgbmVpdGhlciwgYnV0IGlmIHlvdSdyZSB0aGF0IHRpZ2h0IG9uIHNwYWNlCi0jICAgY29uc2lkZXIgZHJvcHBpbmcgY2hyb255YyBlbnRpcmVseSAoeW91IGNhbiB1c2UgaXQgcmVtb3RlbHkgd2l0aAotIyAgIGFwcHJvcHJpYXRlIGNocm9ueS5jb25mIG9wdGlvbnMpLgotIyAtIFNlY3VyaXR5LXJlbGF0ZWQ6Ci0jICAgLSAnc2VjaGFzaCcgaXMgb21pdHRlZCBieSBkZWZhdWx0IGJlY2F1c2UgaXQgcHVsbHMgaW4gbnNzIHdoaWNoIGlzIGh1Z2UuCi0jICAgLSAncHJpdmRyb3AnIGFsbG93cyBjaHJvbnlkIHRvIHJ1biBhcyBub24tcm9vdDsgd291bGQgbmVlZCBjaGFuZ2VzIHRvCi0jICAgICBjaHJvbnkuY29uZiBhbmQgaW5pdCBzY3JpcHQuCi0jICAgLSAnc2NmaWx0ZXInIGVuYWJsZXMgc3VwcG9ydCBmb3Igc3lzdGVtIGNhbGwgZmlsdGVyaW5nLCBidXQgcmVxdWlyZXMgdGhlCi0jICAgICBrZXJuZWwgdG8gaGF2ZSBDT05GSUdfU0VDQ09NUCBlbmFibGVkLgotUEFDS0FHRUNPTkZJRyA/Pz0gImVkaXRsaW5lIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aG91dC1lZGl0bGluZSwtLXdpdGhvdXQtcmVhZGxpbmUscmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2VkaXRsaW5lXSA9ICIsLS13aXRob3V0LWVkaXRsaW5lLGxpYmVkaXQiCi1QQUNLQUdFQ09ORklHW3NlY2hhc2hdID0gIi0td2l0aG91dC10b21jcnlwdCwtLWRpc2FibGUtc2VjaGFzaCxuc3MiCi1QQUNLQUdFQ09ORklHW3ByaXZkcm9wXSA9ICIsLS1kaXNhYmxlLXByaXZkcm9wLGxpYmNhcCIKLVBBQ0tBR0VDT05GSUdbc2NmaWx0ZXJdID0gIi0tZW5hYmxlLXNjZmlsdGVyLC0td2l0aG91dC1zZWNjb21wLGxpYnNlY2NvbXAiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIiwtLWRpc2FibGUtaXB2NiwiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLS13aXRoLW5zcywtLXdpdGhvdXQtbnNzLG5zcyIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgotCi0jIC0tZGlzYWJsZS1zdGF0aWMgaXNuJ3Qgc3VwcG9ydGVkIGJ5IGNocm9ueSdzIGNvbmZpZ3VyZSBzY3JpcHQuCi1ESVNBQkxFX1NUQVRJQyA9ICIiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAuL2NvbmZpZ3VyZSAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfSAtLWJpbmRpcj0ke2JpbmRpcn0gLS1zYmluZGlyPSR7c2JpbmRpcn0gXAotICAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpcj0ke2xvY2Fsc3RhdGVkaXJ9IC0tZGF0YXJvb3RkaXI9JHtkYXRhZGlyfSBcCi0gICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQotfQotCi1kb19pbnN0YWxsKCkgewotICAgICMgQmluYXJpZXMKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9jaHJvbnljICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vY2hyb255ZCAke0R9JHtzYmluZGlyfQotCi0gICAgIyBDb25maWcgZmlsZQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Nocm9ueS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0KLSAgICAjIFN5c3RlbSBWIGluaXQgc2NyaXB0Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2Nocm9ueWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0KLSAgICAjIHN5c3RlbWQgdW5pdCBjb25maWd1cmF0aW9uIGZpbGUKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvY2hyb255ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCi0gICAgIyBWYXJpYWJsZSBkYXRhIChmb3IgZHJpZnQgYW5kL29yIHJ0YyBmaWxlKQotICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2Nocm9ueQotCi0gICAgIyBMb2cgZmlsZXMKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9jaHJvbnkKLQotICAgICMgRml4IGhhcmQtY29kZWQgcGF0aHMgaW4gY29uZmlnIGZpbGVzIGFuZCBpbml0IHNjcmlwdHMKLSAgICBzZWQgLWkgLWUgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgLWUgJ3MhL2V0Yy8hJHtzeXNjb25mZGlyfS8hZycgXAotICAgICAgICAgICAtZSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnIC1lICdzIS91c3IvYmluLyEke2JpbmRpcn0vIWcnIFwKLSAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vY2hyb255LmNvbmYgXAotICAgICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY2hyb255ZCBcCi0gICAgICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Nocm9ueWQuc2VydmljZQotICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jaHJvbnlkCi0gICAgc2VkIC1pICdzIV5FbnZpcm9ubWVudEZpbGU9LiohRW52aXJvbm1lbnRGaWxlPS0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvY2hyb255ZCEnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Nocm9ueWQuc2VydmljZQotfQotCi1GSUxFU18ke1BOfSA9ICIke3NiaW5kaXJ9L2Nocm9ueWQgJHtzeXNjb25mZGlyfSAke2xvY2Fsc3RhdGVkaXJ9IgotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vY2hyb255LmNvbmYiCi1JTklUU0NSSVBUX05BTUUgPSAiY2hyb255ZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjaHJvbnlkLnNlcnZpY2UiCi0KLSMgSXQncyBwcm9iYWJseSBhIGJhZCBpZGVhIHRvIHJ1biBjaHJvbnkgYW5kIGFub3RoZXIgdGltZSBkYWVtb24gb24KLSMgdGhlIHNhbWUgc3lzdGVtLiAgc3lzdGVtZCBpbmNsdWRlcyB0aGUgU05UUCBjbGllbnQgJ3RpbWVzeW5jZCcsIHdoaWNoCi0jIHdpbGwgYmUgZGlzYWJsZWQgYnkgY2hyb255ZC5zZXJ2aWNlLCBob3dldmVyIGl0IHdpbGwgcmVtYWluIG9uIHRoZSByb290ZnMKLSMgd2FzdGluZyAxNTAga0IgdW5sZXNzIHlvdSBwdXQgJ1BBQ0tBR0VDT05GSUdfcmVtb3ZlX3BuLXN5c3RlbWQgPSAidGltZXN5bmNkIicKLSMgaW4gYSBjb25mIGZpbGUgb3IgYmJhcHBlbmQgc29tZXdoZXJlLgotUkNPTkZMSUNUU18ke1BOfSA9ICJudHAgbnRpbWVkIgotCi0jIFNlcGFyYXRlIHRoZSBjbGllbnQgcHJvZ3JhbSBpbnRvIGl0cyBvd24gcGFja2FnZQotUEFDS0FHRVMgPSsgImNocm9ueWMiCi1GSUxFU19jaHJvbnljID0gIiR7YmluZGlyfS9jaHJvbnljIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Nocm9ueS9jaHJvbnlfMy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Nocm9ueS9jaHJvbnlfMy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOTBhMzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2hyb255L2Nocm9ueV8zLjIuYmIKQEAgLTAsMCArMSwxMzQgQEAKK1NVTU1BUlkgPSAiVmVyc2F0aWxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBOZXR3b3JrIFRpbWUgUHJvdG9jb2wiCitERVNDUklQVElPTiA9ICJDaHJvbnkgY2FuIHN5bmNocm9uaXplIHRoZSBzeXN0ZW0gY2xvY2sgd2l0aCBOVFAgXAorc2VydmVycywgcmVmZXJlbmNlIGNsb2NrcyAoZS5nLiBHUFMgcmVjZWl2ZXIpLCBhbmQgbWFudWFsIGlucHV0IHVzaW5nIFwKK3dyaXN0d2F0Y2ggYW5kIGtleWJvYXJkLiBJdCBjYW4gYWxzbyBvcGVyYXRlIGFzIGFuIE5UUHY0IChSRkMgNTkwNSkgXAorc2VydmVyIGFuZCBwZWVyIHRvIHByb3ZpZGUgYSB0aW1lIHNlcnZpY2UgdG8gb3RoZXIgY29tcHV0ZXJzIGluIHRoZSBcCituZXR3b3JrLiBcCitcCitJdCBpcyBkZXNpZ25lZCB0byBwZXJmb3JtIHdlbGwgaW4gYSB3aWRlIHJhbmdlIG9mIGNvbmRpdGlvbnMsIFwKK2luY2x1ZGluZyBpbnRlcm1pdHRlbnQgbmV0d29yayBjb25uZWN0aW9ucywgaGVhdmlseSBjb25nZXN0ZWQgXAorbmV0d29ya3MsIGNoYW5naW5nIHRlbXBlcmF0dXJlcyAob3JkaW5hcnkgY29tcHV0ZXIgY2xvY2tzIGFyZSBcCitzZW5zaXRpdmUgdG8gdGVtcGVyYXR1cmUpLCBhbmQgc3lzdGVtcyB0aGF0IGRvIG5vdCBydW4gY29udGludW91c2x5LCBvciBcCitydW4gb24gYSB2aXJ0dWFsIG1hY2hpbmUuIFwKK1wKK1R5cGljYWwgYWNjdXJhY3kgYmV0d2VlbiB0d28gbWFjaGluZXMgb24gYSBMQU4gaXMgaW4gdGVucywgb3IgYSBmZXcgXAoraHVuZHJlZHMsIG9mIG1pY3Jvc2Vjb25kczsgb3ZlciB0aGUgSW50ZXJuZXQsIGFjY3VyYWN5IGlzIHR5cGljYWxseSBcCit3aXRoaW4gYSBmZXcgbWlsbGlzZWNvbmRzLiBXaXRoIGEgZ29vZCBoYXJkd2FyZSByZWZlcmVuY2UgY2xvY2sgXAorc3ViLW1pY3Jvc2Vjb25kIGFjY3VyYWN5IGlzIHBvc3NpYmxlLiBcCitcCitUd28gcHJvZ3JhbXMgYXJlIGluY2x1ZGVkIGluIGNocm9ueTogY2hyb255ZCBpcyBhIGRhZW1vbiB0aGF0IGNhbiBiZSBcCitzdGFydGVkIGF0IGJvb3QgdGltZSBhbmQgY2hyb255YyBpcyBhIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgcHJvZ3JhbSBcCit3aGljaCBjYW4gYmUgdXNlZCB0byBtb25pdG9yIGNocm9ueWQncyBwZXJmb3JtYW5jZSBhbmQgdG8gY2hhbmdlIFwKK3ZhcmlvdXMgb3BlcmF0aW5nIHBhcmFtZXRlcnMgd2hpbHN0IGl0IGlzIHJ1bm5pbmcuIFwKK1wKK1RoaXMgcmVjaXBlIHByb2R1Y2VzIHR3byBiaW5hcnkgcGFja2FnZXM6ICdjaHJvbnknIHdoaWNoIGNvbnRhaW5zIGNocm9ueWQsIFwKK3RoZSBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHRoZSBpbml0IHNjcmlwdCwgYW5kICdjaHJvbnljJyB3aGljaCBjb250YWlucyBcCit0aGUgY2xpZW50IHByb2dyYW0gb25seS4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vY2hyb255LnR1eGZhbWlseS5vcmcvIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC50dXhmYW1pbHkub3JnL2Nocm9ueS9jaHJvbnktJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vY2hyb255LmNvbmYgXAorICAgIGZpbGU6Ly9jaHJvbnlkIFwKKyAgICBmaWxlOi8vYXJtX2VhYmkucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImY0YzRlYjBkYzkyZjM1ZWU0YmI3ZDNkY2Q4MDI5ZWNiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyOWY2NzE4ZGQ4YzNlY2UzZWVlNzhiZTFmNDgyMWNiYmViNjI2MDhlN2QyM2YyNWRhMjkzY2ZhNDMzYzQxMTYiCisKK0RFUEVORFMgPSAicHBzLXRvb2xzIgorCisjIE5vdGU6IERlc3BpdGUgYmVpbmcgYnVpbHQgdmlhICcuL2NvbmZpZ3VyZTsgbWFrZTsgbWFrZSBpbnN0YWxsJywKKyMgICAgICAgY2hyb255IGRvZXMgbm90IHVzZSBHTlUgQXV0b3Rvb2xzLgoraW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCisKKyMgQ29uZmlndXJhdGlvbiBvcHRpb25zOgorIyAtIEZvciBjb21tYW5kIGxpbmUgZWRpdGluZyBzdXBwb3J0IGluIGNocm9ueWMsIHlvdSBtYXkgc3BlY2lmeSBlaXRoZXIKKyMgICAnZWRpdGxpbmUnIG9yICdyZWFkbGluZScgYnV0IG5vdCBib3RoLiAgZWRpdGxpbmUgaXMgc21hbGxlciwgYnV0CisjICAgbWFueSBzeXN0ZW1zIGFscmVhZHkgaGF2ZSByZWFkbGluZSBmb3Igb3RoZXIgcHVycG9zZXMgc28geW91IG1pZ2h0IHdhbnQKKyMgICB0byBjaG9vc2UgdGhhdCBpbnN0ZWFkLiAgSG93ZXZlciwgYmV3YXJlIGxpY2Vuc2UgaW5jb21wYXRpYmlsaXR5CisjICAgc2luY2UgY2hyb255IGlzIEdQTHYyIGFuZCByZWFkbGluZSB2ZXJzaW9ucyBhZnRlciA2LjAgYXJlIEdQTHYzKy4KKyMgICBZb3UgY2FuIG9mIGNvdXJzZSBjaG9vc2UgbmVpdGhlciwgYnV0IGlmIHlvdSdyZSB0aGF0IHRpZ2h0IG9uIHNwYWNlCisjICAgY29uc2lkZXIgZHJvcHBpbmcgY2hyb255YyBlbnRpcmVseSAoeW91IGNhbiB1c2UgaXQgcmVtb3RlbHkgd2l0aAorIyAgIGFwcHJvcHJpYXRlIGNocm9ueS5jb25mIG9wdGlvbnMpLgorIyAtIFNlY3VyaXR5LXJlbGF0ZWQ6CisjICAgLSAnc2VjaGFzaCcgaXMgb21pdHRlZCBieSBkZWZhdWx0IGJlY2F1c2UgaXQgcHVsbHMgaW4gbnNzIHdoaWNoIGlzIGh1Z2UuCisjICAgLSAncHJpdmRyb3AnIGFsbG93cyBjaHJvbnlkIHRvIHJ1biBhcyBub24tcm9vdDsgd291bGQgbmVlZCBjaGFuZ2VzIHRvCisjICAgICBjaHJvbnkuY29uZiBhbmQgaW5pdCBzY3JpcHQuCisjICAgLSAnc2NmaWx0ZXInIGVuYWJsZXMgc3VwcG9ydCBmb3Igc3lzdGVtIGNhbGwgZmlsdGVyaW5nLCBidXQgcmVxdWlyZXMgdGhlCisjICAgICBrZXJuZWwgdG8gaGF2ZSBDT05GSUdfU0VDQ09NUCBlbmFibGVkLgorUEFDS0FHRUNPTkZJRyA/Pz0gImVkaXRsaW5lIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aG91dC1lZGl0bGluZSwtLXdpdGhvdXQtcmVhZGxpbmUscmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2VkaXRsaW5lXSA9ICIsLS13aXRob3V0LWVkaXRsaW5lLGxpYmVkaXQiCitQQUNLQUdFQ09ORklHW3NlY2hhc2hdID0gIi0td2l0aG91dC10b21jcnlwdCwtLWRpc2FibGUtc2VjaGFzaCxuc3MiCitQQUNLQUdFQ09ORklHW3ByaXZkcm9wXSA9ICIsLS1kaXNhYmxlLXByaXZkcm9wLGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbc2NmaWx0ZXJdID0gIi0tZW5hYmxlLXNjZmlsdGVyLC0td2l0aG91dC1zZWNjb21wLGxpYnNlY2NvbXAiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW25zc10gPSAiLS13aXRoLW5zcywtLXdpdGhvdXQtbnNzLG5zcyIKK1BBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgorCisjIC0tZGlzYWJsZS1zdGF0aWMgaXNuJ3Qgc3VwcG9ydGVkIGJ5IGNocm9ueSdzIGNvbmZpZ3VyZSBzY3JpcHQuCitESVNBQkxFX1NUQVRJQyA9ICIiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAuL2NvbmZpZ3VyZSAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfSAtLWJpbmRpcj0ke2JpbmRpcn0gLS1zYmluZGlyPSR7c2JpbmRpcn0gXAorICAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpcj0ke2xvY2Fsc3RhdGVkaXJ9IC0tZGF0YXJvb3RkaXI9JHtkYXRhZGlyfSBcCisgICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQorfQorCitkb19pbnN0YWxsKCkgeworICAgICMgQmluYXJpZXMKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9jaHJvbnljICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vY2hyb255ZCAke0R9JHtzYmluZGlyfQorCisgICAgIyBDb25maWcgZmlsZQorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Nocm9ueS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisKKyAgICAjIFN5c3RlbSBWIGluaXQgc2NyaXB0CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2Nocm9ueWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisKKyAgICAjIHN5c3RlbWQgdW5pdCBjb25maWd1cmF0aW9uIGZpbGUKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvY2hyb255ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCisgICAgIyBWYXJpYWJsZSBkYXRhIChmb3IgZHJpZnQgYW5kL29yIHJ0YyBmaWxlKQorICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2Nocm9ueQorCisgICAgIyBMb2cgZmlsZXMKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9jaHJvbnkKKworICAgICMgRml4IGhhcmQtY29kZWQgcGF0aHMgaW4gY29uZmlnIGZpbGVzIGFuZCBpbml0IHNjcmlwdHMKKyAgICBzZWQgLWkgLWUgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgLWUgJ3MhL2V0Yy8hJHtzeXNjb25mZGlyfS8hZycgXAorICAgICAgICAgICAtZSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnIC1lICdzIS91c3IvYmluLyEke2JpbmRpcn0vIWcnIFwKKyAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vY2hyb255LmNvbmYgXAorICAgICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY2hyb255ZCBcCisgICAgICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Nocm9ueWQuc2VydmljZQorICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jaHJvbnlkCisgICAgc2VkIC1pICdzIV5FbnZpcm9ubWVudEZpbGU9LiohRW52aXJvbm1lbnRGaWxlPS0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvY2hyb255ZCEnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Nocm9ueWQuc2VydmljZQorfQorCitGSUxFU18ke1BOfSA9ICIke3NiaW5kaXJ9L2Nocm9ueWQgJHtzeXNjb25mZGlyfSAke2xvY2Fsc3RhdGVkaXJ9IgorQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vY2hyb255LmNvbmYiCitJTklUU0NSSVBUX05BTUUgPSAiY2hyb255ZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjaHJvbnlkLnNlcnZpY2UiCisKKyMgSXQncyBwcm9iYWJseSBhIGJhZCBpZGVhIHRvIHJ1biBjaHJvbnkgYW5kIGFub3RoZXIgdGltZSBkYWVtb24gb24KKyMgdGhlIHNhbWUgc3lzdGVtLiAgc3lzdGVtZCBpbmNsdWRlcyB0aGUgU05UUCBjbGllbnQgJ3RpbWVzeW5jZCcsIHdoaWNoCisjIHdpbGwgYmUgZGlzYWJsZWQgYnkgY2hyb255ZC5zZXJ2aWNlLCBob3dldmVyIGl0IHdpbGwgcmVtYWluIG9uIHRoZSByb290ZnMKKyMgd2FzdGluZyAxNTAga0IgdW5sZXNzIHlvdSBwdXQgJ1BBQ0tBR0VDT05GSUdfcmVtb3ZlX3BuLXN5c3RlbWQgPSAidGltZXN5bmNkIicKKyMgaW4gYSBjb25mIGZpbGUgb3IgYmJhcHBlbmQgc29tZXdoZXJlLgorUkNPTkZMSUNUU18ke1BOfSA9ICJudHAgbnRpbWVkIgorCisjIFNlcGFyYXRlIHRoZSBjbGllbnQgcHJvZ3JhbSBpbnRvIGl0cyBvd24gcGFja2FnZQorUEFDS0FHRVMgPSsgImNocm9ueWMiCitGSUxFU19jaHJvbnljID0gIiR7YmluZGlyfS9jaHJvbnljIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NpZnMvY2lmcy11dGlsc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9jaWZzLXV0aWxzX2dpdC5iYgppbmRleCAzY2E1Yjc4Li4xOThlM2VmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9jaWZzLXV0aWxzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9jaWZzLXV0aWxzX2dpdC5iYgpAQCAtNyw3ICs3LDkgQEAKIFBWID0gIjYuNyIKIAogU1JDUkVWID0gIjgxMDFhMDc4NzFmMTg1YzcwNDRmYTJjYTIyMWIyODJhYjQ2MDdjOGIiCi1TUkNfVVJJID0gImdpdDovL2dpdC5zYW1iYS5vcmcvY2lmcy11dGlscy5naXQiCitTUkNfVVJJID0gImdpdDovL2dpdC5zYW1iYS5vcmcvY2lmcy11dGlscy5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tb3VudC5jaWZzLVJlbW92ZS1kYXRhX2Jsb2IuaC1pbmNsdWRlLnBhdGNoIFwKKyAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiBERVBFTkRTICs9ICJsaWJ0YWxsb2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9maWxlcy8wMDAxLW1vdW50LmNpZnMtUmVtb3ZlLWRhdGFfYmxvYi5oLWluY2x1ZGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9maWxlcy8wMDAxLW1vdW50LmNpZnMtUmVtb3ZlLWRhdGFfYmxvYi5oLWluY2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdmMmE1NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaWZzL2ZpbGVzLzAwMDEtbW91bnQuY2lmcy1SZW1vdmUtZGF0YV9ibG9iLmgtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBTLiBMb2Nrd29vZC1DaGlsZHMgPHNqbEB2Y3RsYWJzLmNvbT4KKworRnJvbSAyNzJkNTIzYTU3YTRlODc5MWQ2MjVhNDc5MTI4NjEzYmU1ZTQwMWY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhvbWFzIFdpdHQgPHB5cm9tYW5pYWNAZXhoZXJiby5vcmc+CitEYXRlOiBXZWQsIDE1IE1hciAyMDE3IDIwOjIwOjQ0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG1vdW50LmNpZnM6IFJlbW92ZSBkYXRhX2Jsb2IuaCBpbmNsdWRlCisKK2RhdGFfYmxvYi5oIGluY2x1ZGVzIHRhbGxvYy5oIGZyb20gbGlidGFsbG9jLCBidXQgdGhhdCBpcyBvbmx5IG1hcmtlZCBhcworYSBkZXBlbmRlbmN5IGZvciBjaWZzLnVwY2FsbC4gTm8gc3ltYm9scyBmcm9tIHRoYXQgaGVhZGVyIGFyZSB1c2VkIGJ5CitjaWZzLm1vdW50LCBzbyByZW1vdmUgaXQgdG8gYXZvaWQgdGhlIGxpYnRhbGxvYyBkZXBlbmRlbmN5CisKK1NpZ25lZC1vZmYtYnk6IFRob21hcyBXaXR0IDxweXJvbWFuaWFjQGV4aGVyYm8ub3JnPgorLS0tCisgbW91bnQuY2lmcy5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21vdW50LmNpZnMuYyBiL21vdW50LmNpZnMuYworaW5kZXggMTNiNzFlZi4uMjYxMmZlYiAxMDA2NDQKKy0tLSBhL21vdW50LmNpZnMuYworKysrIGIvbW91bnQuY2lmcy5jCitAQCAtNjEsNyArNjEsNiBAQAorICNpbmNsdWRlICJtb3VudC5oIgorICNpbmNsdWRlICJ1dGlsLmgiCisgI2luY2x1ZGUgInJlc29sdmVfaG9zdC5oIgorLSNpbmNsdWRlICJkYXRhX2Jsb2IuaCIKKyAKKyAjaWZuZGVmIE1TX01PVkUgCisgI2RlZmluZSBNU19NT1ZFIDgxOTIgCistLSAKKzEuOS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaW0tc2NoZW1hL2NpbS1zY2hlbWEtZXhwZXJfMi4zOS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NpbS1zY2hlbWEvY2ltLXNjaGVtYS1leHBlcl8yLjM5LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNDkwOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NpbS1zY2hlbWEvY2ltLXNjaGVtYS1leHBlcl8yLjM5LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1yZXF1aXJlIGNpbS1zY2hlbWEuaW5jCi0KLUxJQ0VOU0UgPSAiRE1URiIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJjaW0tc2NoZW1hLWZpbmFsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kbXRmLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVzL2NpbS9jaW1fc2NoZW1hX3YyMzkwL2NpbV9zY2hlbWFfJHtQVn1FeHBlcmltZW50YWwtTU9Gcy56aXA7c3ViZGlyPSR7QlBOfS0ke1BWfSBcCi0gICAgZmlsZTovL0xJQ0VOU0UgXAotIgotU1JDX1VSSVttZDVzdW1dID0gImI4MmIzMWM2MDljNmJjYzY5NTIxODI5NDA5ZjU4Y2NjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkMjA5NmVmMWVhMjVkMTg5YTAyYmJjNjYwM2ZlZDdhNDgyOTdmMjk4N2YyNTQyNjU3NjNhNmVlY2I3ZmM4NzAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L0xJQ0VOU0U7bWQ1PWVlY2M2ZjcxYTU2ZmYzY2FmMTdmMTViZjdhZWFjN2I0IgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgLW0gMDc1NSAke0R9JHtkYXRhZGlyfS9tb2YvY2ltdiR7UFZ9LwotICAgIGluc3RhbGwgLWQgLW0gMDc1NSAke0R9JHtkYXRhZGlyfS9kb2MvY2ltLXNjaGVtYS0ke1BWfQotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vTElDRU5TRSAke0R9JHtkYXRhZGlyfS9kb2MvY2ltLXNjaGVtYS0ke1BWfQotCi0gICAgY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtTfS8qICR7RH0ke2RhdGFkaXJ9L21vZi9jaW12JHtQVn0vCi0gICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke2RhdGFkaXJ9L21vZi9jaW12JHtQVn0KLSAgICBmb3IgaSBpbiBgZmluZCAke0R9JHtkYXRhZGlyfS9tb2YvY2ltdiR7UFZ9IC1uYW1lICIqLm1vZiJgOyBkbwotICAgICAgICBzZWQgLWkgLWUgJ3MvXHIvL2cnICRpCi0gICAgZG9uZQotICAgIGxuIC1zIGNpbXYke1BWfSAke0R9JHtkYXRhZGlyfS9tb2YvY2ltLWN1cnJlbnQKLSAgICBsbiAtcyBjaW1fc2NoZW1hXyR7UFZ9Lm1vZiAke0R9JHtkYXRhZGlyfS9tb2YvY2ltLWN1cnJlbnQvQ0lNX1NjaGVtYS5tb2YKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS9tb2YvKiAke2RhdGFkaXJ9L2RvYy8qIgotRklMRVNfJHtQTn0tZG9jID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaW0tc2NoZW1hL2NpbS1zY2hlbWEtZXhwZXJfMi41MC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NpbS1zY2hlbWEvY2ltLXNjaGVtYS1leHBlcl8yLjUwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBlYTg4MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaW0tc2NoZW1hL2NpbS1zY2hlbWEtZXhwZXJfMi41MC4wLmJiCkBAIC0wLDAgKzEsMjkgQEAKK3JlcXVpcmUgY2ltLXNjaGVtYS5pbmMKKworTElDRU5TRSA9ICJETVRGIgorCitSQ09ORkxJQ1RTXyR7UE59ID0gImNpbS1zY2hlbWEtZmluYWwiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RtdGYub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvY2ltL2NpbV9zY2hlbWFfdjI1MDAvY2ltX3NjaGVtYV8ke1BWfUV4cGVyaW1lbnRhbC1NT0ZzLnppcDtzdWJkaXI9JHtCUE59LSR7UFZ9IFwKKyAgICBmaWxlOi8vTElDRU5TRSBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZWU0YWQ2NDQxYTJiNjVjYTYwYTNhYmM1M2UzZWM2MjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTQ0ZDY3ODgxMzI1ZTI2N2VmNDZiNzJlYWJlMGM2OWY5MDQ3MGIxMDMzYjFjZTdjMjZkOWJhOTkwNzJhZGI1MCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vTElDRU5TRTttZDU9ZWVjYzZmNzFhNTZmZjNjYWYxN2YxNWJmN2FlYWM3YjQiCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAtbSAwNzU1ICR7RH0ke2RhdGFkaXJ9L21vZi9jaW12JHtQVn0vCisgICAgaW5zdGFsbCAtZCAtbSAwNzU1ICR7RH0ke2RhdGFkaXJ9L2RvYy9jaW0tc2NoZW1hLSR7UFZ9CisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9MSUNFTlNFICR7RH0ke2RhdGFkaXJ9L2RvYy9jaW0tc2NoZW1hLSR7UFZ9CisKKyAgICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke1N9LyogJHtEfSR7ZGF0YWRpcn0vbW9mL2NpbXYke1BWfS8KKyAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vbW9mL2NpbXYke1BWfQorICAgIGZvciBpIGluIGBmaW5kICR7RH0ke2RhdGFkaXJ9L21vZi9jaW12JHtQVn0gLW5hbWUgIioubW9mImA7IGRvCisgICAgICAgIHNlZCAtaSAtZSAncy9cci8vZycgJGkKKyAgICBkb25lCisgICAgbG4gLXMgY2ltdiR7UFZ9ICR7RH0ke2RhdGFkaXJ9L21vZi9jaW0tY3VycmVudAorICAgIGxuIC1zIGNpbV9zY2hlbWFfJHtQVn0ubW9mICR7RH0ke2RhdGFkaXJ9L21vZi9jaW0tY3VycmVudC9DSU1fU2NoZW1hLm1vZgorfQorCitGSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9L21vZi8qICR7ZGF0YWRpcn0vZG9jLyoiCitGSUxFU18ke1BOfS1kb2MgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2N0ZGIvY3RkYi8wMi1saW5rLXJlcF9zbnByaW50Zi1mb3ItbHRkYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY3RkYi9jdGRiLzAyLWxpbmstcmVwX3NucHJpbnRmLWZvci1sdGRidG9vbC5wYXRjaAppbmRleCAxZGQ5YjkzLi4xMjk0ZmU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY3RkYi9jdGRiLzAyLWxpbmstcmVwX3NucHJpbnRmLWZvci1sdGRidG9vbC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY3RkYi9jdGRiLzAyLWxpbmstcmVwX3NucHJpbnRmLWZvci1sdGRidG9vbC5wYXRjaApAQCAtMiwxNSArMiwxNiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBCaWFuIE5haW1lbmcgPGJpYW5ubUBjbi5mdWppdHN1LmNvbT4KIAotZGlmZiAtTnVycCBjdGRiLTIuNS4xLm9yaWcvTWFrZWZpbGUuaW4gY3RkYi0yLjUuMS9NYWtlZmlsZS5pbgotLS0tIGN0ZGItMi41LjEub3JpZy9NYWtlZmlsZS5pbgkyMDE1LTA1LTA3IDE2OjQzOjM5LjI3NjAwMDIzNiArMDkwMAotKysrIGN0ZGItMi41LjEvTWFrZWZpbGUuaW4JMjAxNS0wNS0wNyAxNjo0NDowOS42MjcwMDAyMzcgKzA5MDAKLUBAIC0xNzAsNyArMTcwLDcgQEAgYmluL2N0ZGI6ICQoQ1REQl9DTElFTlRfT0JKKSB0b29scy9jdGRiLgorSW5kZXg6IGN0ZGItMi41LjYvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjdGRiLTIuNS42Lm9yaWcvTWFrZWZpbGUuaW4KKysrKyBjdGRiLTIuNS42L01ha2VmaWxlLmluCitAQCAtMTc2LDcgKzE3Niw3IEBAIGJpbi9jdGRiOiAkKENUREJfQ0xJRU5UX09CSikgdG9vbHMvY3RkYi4KICAJQGVjaG8gTGlua2luZyAkQAogIAkkKFdSQVBQRVIpICQoQ0MpICQoQ0ZMQUdTKSAtbyAkQCB0b29scy9jdGRiLm8gdG9vbHMvY3RkYl92YWN1dW0ubyAkKENUREJfQ0xJRU5UX09CSikgJChMSUJfRkxBR1MpCiAgCiAtYmluL2x0ZGJ0b29sOiB0b29scy9sdGRidG9vbC5vICQoVERCX09CSikKICtiaW4vbHRkYnRvb2w6IHRvb2xzL2x0ZGJ0b29sLm8gJChUREJfT0JKKSBsaWIvcmVwbGFjZS9zbnByaW50Zi5vCiAgCUBlY2hvIExpbmtpbmcgJEAKLSAJJChXUkFQUEVSKSAkKENDKSAkKENGTEFHUykgLW8gJEAgJCsgJChUREJfTElCUykgJChMSUJfRkxBR1MpCisgCSQoV1JBUFBFUikgJChDQykgJChDRkxBR1MpIC1vICRAICQrICQoTElCX0ZMQUdTKQogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RvdmVjb3QvZG92ZWNvdF8yLjIuMjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290XzIuMi4yOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY2MzQwOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290XzIuMi4yOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLVNVTU1BUlkgPSAiRG92ZWNvdCBpcyBhbiBvcGVuIHNvdXJjZSBJTUFQIGFuZCBQT1AzIGVtYWlsIHNlcnZlciIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmRvdmVjb3Qub3JnLyIKLURFU0NSSVBUSU9OID0gIkRvdmVjb3QgaXMgYW4gb3BlbiBzb3VyY2UgSU1BUCBhbmQgUE9QMyBlbWFpbCBzZXJ2ZXIgZm9yIExpbnV4L1VOSVgtbGlrZSBzeXN0ZW1zLCB3cml0dGVuIHdpdGggc2VjdXJpdHkgcHJpbWFyaWx5IGluIG1pbmQuIERvdmVjb3QgaXMgYW4gZXhjZWxsZW50IGNob2ljZSBmb3IgYm90aCBzbWFsbCBhbmQgbGFyZ2UgaW5zdGFsbGF0aW9ucy4gSXQncyBmYXN0LCBzaW1wbGUgdG8gc2V0IHVwLCByZXF1aXJlcyBubyBzcGVjaWFsIGFkbWluaXN0cmF0aW9uIGFuZCBpdCB1c2VzIHZlcnkgbGl0dGxlIG1lbW9yeS4iCi1TRUNUSU9OID0gIm1haWwiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTk4MTM3OWJkMGYxYzM2MmY4ZDFkMjE1MTVlNWIzMGIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RvdmVjb3Qub3JnL3JlbGVhc2VzLzIuMi9kb3ZlY290LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1jb252ZXJ0LUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTkstc3RhdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG92ZWNvdC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2RvdmVjb3Quc29ja2V0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZG92ZWFkbS1GaXgtcGFyYWxsZWwtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmZjk1NDg2YTVjNDMwMjVhMmMzZjVhNzEyZTc5NjJiOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOTM5ZWE5OTEyNmViOGE4YzY5NTUzOTBiNDIyYjZlMjdlYzBmYTQzYTNiNTliMmIzMjE4Y2I1YWQ2NzEzOWE2IgotCi1ERVBFTkRTID0gIm9wZW5zc2wgeHogemxpYiBiemlwMiBsaWJjYXAgaWN1IgotCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjIgotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCi1MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sdGlycGMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVzZXJhZGQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2xkYXAgcGFtJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbSwtLXdpdGhvdXQtcGFtLGxpYnBhbSwiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwPXBsdWdpbiwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCwiCi1QQUNLQUdFQ09ORklHW2x6NF0gPSAiLS13aXRoLWx6NCwtLXdpdGhvdXQtbHo0LGx6NCwiCi0KLSMgRnJvbSBuYXRpdmUgYnVpbGQgaW4gYXJtdjdhLWhmL2VnbGliYwotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImlfY3Zfc2lnbmVkX3NpemVfdD1ubyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgaV9jdl9nbXRpbWVfbWF4X3RpbWVfdD0zMiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgaV9jdl9zaWduZWRfdGltZV90PXllcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgaV9jdl9tbWFwX3BsYXlzX3dpdGhfd3JpdGU9eWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpX2N2X2ZkX3Bhc3Npbmc9eWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpX2N2X2M5OV92c25wcmludGY9eWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsaWJfY3ZfX192YV9jb3B5PXllcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGliX2N2X3ZhX2NvcHk9eWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsaWJfY3ZfdmFfdmFsX2NvcHk9eWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotIyBoYXJkY29kZSBlcG9sbCgpIHRvIGF2b2lkIHJ1bm5pbmcgdW5zYWZlIHRlc3RzCi0jIEJTRCBuZWVkcyBrcXVldWUgYW5kIHVjbGliYyBwb2xsKCkKLUVYVFJBX09FQ09ORiA9ICIgLS13aXRoLWlvbG9vcD1lcG9sbCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImRvdmVjb3Quc2VydmljZSBkb3ZlY290LnNvY2tldCIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgNzU1ICR7RH0vZXRjL2RvdmVjb3QKLSAgICB0b3VjaCA2NDQgJHtEfS9ldGMvZG92ZWNvdC9kb3ZlY290LmNvbmYKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kb3ZlY290LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBzZWQgLWkgLWUgJ3MjQFNZU0NPTkZESVJAIyR7c3lzY29uZmRpcn0jZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZG92ZWNvdC5zZXJ2aWNlCi0gICAgc2VkIC1pIC1lICdzI0BTQklORElSQCMke3NiaW5kaXJ9I2cnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RvdmVjb3Quc2VydmljZQotfQotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItciAtZCAke2xpYmV4ZWNkaXJ9IC1NIC1zICR7YmFzZV9zYmluZGlyfS9ub2xvZ2luIC1nIGRvdmVjb3QgZG92ZWNvdDsgXAotICAgICAgICAgICAgICAgICAgICAgIC1yIC1kICR7bGliZXhlY2Rpcn0gLU0gLXMgJHtiYXNlX3NiaW5kaXJ9L25vbG9naW4gLWcgZG92ZW51bGwgZG92ZW51bGwiCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItZiAtciBkb3ZlY290Oy1mIC1yIGRvdmVudWxsIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2RvdmVjb3QvKnBsdWdpbi5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2RvdmVjb3QvbGliZnNfY29tcHJlc3Muc28gXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9kb3ZlY290L2xpYnNzbF9pb3N0cmVhbV9vcGVuc3NsLnNvIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZG92ZWNvdC8qLyouYSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2RvdmVjb3QvbGliZG92ZWNvdCouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9kb3ZlY290LyovLmRlYnVnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RvdmVjb3QvZG92ZWNvdF8yLjIuMzMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290XzIuMi4zMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWJkYTE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RvdmVjb3QvZG92ZWNvdF8yLjIuMzMuYmIKQEAgLTAsMCArMSw3MSBAQAorU1VNTUFSWSA9ICJEb3ZlY290IGlzIGFuIG9wZW4gc291cmNlIElNQVAgYW5kIFBPUDMgZW1haWwgc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZG92ZWNvdC5vcmcvIgorREVTQ1JJUFRJT04gPSAiRG92ZWNvdCBpcyBhbiBvcGVuIHNvdXJjZSBJTUFQIGFuZCBQT1AzIGVtYWlsIHNlcnZlciBmb3IgTGludXgvVU5JWC1saWtlIHN5c3RlbXMsIHdyaXR0ZW4gd2l0aCBzZWN1cml0eSBwcmltYXJpbHkgaW4gbWluZC4gRG92ZWNvdCBpcyBhbiBleGNlbGxlbnQgY2hvaWNlIGZvciBib3RoIHNtYWxsIGFuZCBsYXJnZSBpbnN0YWxsYXRpb25zLiBJdCdzIGZhc3QsIHNpbXBsZSB0byBzZXQgdXAsIHJlcXVpcmVzIG5vIHNwZWNpYWwgYWRtaW5pc3RyYXRpb24gYW5kIGl0IHVzZXMgdmVyeSBsaXR0bGUgbWVtb3J5LiIKK1NFQ1RJT04gPSAibWFpbCIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTgxMzc5YmQwZjFjMzYyZjhkMWQyMTUxNWU1YjMwYiIKKworU1JDX1VSSSA9ICJodHRwOi8vZG92ZWNvdC5vcmcvcmVsZWFzZXMvMi4yL2RvdmVjb3QtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWNvbnZlcnQtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy1zdGF0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kb3ZlY290LnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vZG92ZWNvdC5zb2NrZXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kb3ZlYWRtLUZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImQ2MWQxZTkyM2EyMmY5MDYyY2M5ZjQ3Njk2ODgyNjY2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU5NDgzZDY4YTc2OThkNzAxYmMwNjEyNGZjZjZlMWIxZjE2MzgwYzI5ODZjN2VjMGNmNGUxNDc1YjlkMGMyMTgiCisKK0RFUEVORFMgPSAib3BlbnNzbCB4eiB6bGliIGJ6aXAyIGxpYmNhcCBpY3UiCisKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMiCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXNlcmFkZAorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGRhcCBwYW0nLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtLCIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXA9cGx1Z2luLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwLCIKK1BBQ0tBR0VDT05GSUdbbHo0XSA9ICItLXdpdGgtbHo0LC0td2l0aG91dC1sejQsbHo0LCIKKworIyBGcm9tIG5hdGl2ZSBidWlsZCBpbiBhcm12N2EtaGYvZWdsaWJjCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiaV9jdl9zaWduZWRfc2l6ZV90PW5vIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpX2N2X2dtdGltZV9tYXhfdGltZV90PTMyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpX2N2X3NpZ25lZF90aW1lX3Q9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpX2N2X21tYXBfcGxheXNfd2l0aF93cml0ZT15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGlfY3ZfZmRfcGFzc2luZz15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGlfY3ZfYzk5X3ZzbnByaW50Zj15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpYl9jdl9fX3ZhX2NvcHk9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaWJfY3ZfdmFfY29weT15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpYl9jdl92YV92YWxfY29weT15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgIgorCisjIGhhcmRjb2RlIGVwb2xsKCkgdG8gYXZvaWQgcnVubmluZyB1bnNhZmUgdGVzdHMKKyMgQlNEIG5lZWRzIGtxdWV1ZSBhbmQgdWNsaWJjIHBvbGwoKQorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtaW9sb29wPWVwb2xsIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZG92ZWNvdC5zZXJ2aWNlIGRvdmVjb3Quc29ja2V0IgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCA3NTUgJHtEfS9ldGMvZG92ZWNvdAorICAgIHRvdWNoIDY0NCAke0R9L2V0Yy9kb3ZlY290L2RvdmVjb3QuY29uZgorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2RvdmVjb3Quc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIHNlZCAtaSAtZSAncyNAU1lTQ09ORkRJUkAjJHtzeXNjb25mZGlyfSNnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9kb3ZlY290LnNlcnZpY2UKKyAgICBzZWQgLWkgLWUgJ3MjQFNCSU5ESVJAIyR7c2JpbmRpcn0jZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZG92ZWNvdC5zZXJ2aWNlCit9CisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi1yIC1kICR7bGliZXhlY2Rpcn0gLU0gLXMgJHtiYXNlX3NiaW5kaXJ9L25vbG9naW4gLWcgZG92ZWNvdCBkb3ZlY290OyBcCisgICAgICAgICAgICAgICAgICAgICAgLXIgLWQgJHtsaWJleGVjZGlyfSAtTSAtcyAke2Jhc2Vfc2JpbmRpcn0vbm9sb2dpbiAtZyBkb3ZlbnVsbCBkb3ZlbnVsbCIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1mIC1yIGRvdmVjb3Q7LWYgLXIgZG92ZW51bGwiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZG92ZWNvdC8qcGx1Z2luLnNvIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vZG92ZWNvdC9saWJmc19jb21wcmVzcy5zbyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2RvdmVjb3QvbGlic3NsX2lvc3RyZWFtX29wZW5zc2wuc28iCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9kb3ZlY290LyovKi5hIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZG92ZWNvdC9saWJkb3ZlY290Ki5zbyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2RvdmVjb3QvKi8uZGVidWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkLXV0aWxzXzguOS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC11dGlsc184LjkuNi5iYgppbmRleCA1ZjZjNDNmLi44MWYxY2ZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkLXV0aWxzXzguOS42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kcmJkL2RyYmQtdXRpbHNfOC45LjYuYmIKQEAgLTgsNyArOCw3IEBACiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1NzRjNjk2NWFlNWY1ODNlNTU4ODBlMzk3ZmJiMDE4IgogCi1TUkNfVVJJID0gImh0dHA6Ly9vc3MubGluYml0LmNvbS9kcmJkLyR7QlB9LnRhci5neiBcCitTUkNfVVJJID0gImh0dHA6Ly93d3cubGluYml0LmNvbS9kb3dubG9hZHMvZHJiZC91dGlscy9hcmNoaXZlLyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmluLWZpeC1wZXJtaXNzaW9uLWJpdHMtZm9yLWRyYmQuc2VydmljZS5wYXRjaCBcCiAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjc2ZWQ2ZDMxOTBjZDc3YjAwODkwZjMzNjUzNTMxMjRiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZF85LjAuOC0xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZF85LjAuOC0xLmJiCmluZGV4IGU5NDNmMjQuLmZhNGQxMGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kcmJkL2RyYmRfOS4wLjgtMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkXzkuMC44LTEuYmIKQEAgLTIwLDMgKzIwLDUgQEAKIGRvX2luc3RhbGwgKCkgewogICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSIke0R9IgogfQorCitQTkJMQUNLTElTVFtkcmJkXSA9ICJpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnc2V0dXBfdGltZXInOyA0LjE1IGhlYWQgZmlsZSBpc3N1ZT8iIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Z3a25vcC9md2tub3BfMi42LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZndrbm9wL2Z3a25vcF8yLjYuOS5iYgppbmRleCA0OWIxMWFkLi4wZmQ1ZjZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZndrbm9wL2Z3a25vcF8yLjYuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZndrbm9wL2Z3a25vcF8yLjYuOS5iYgpAQCAtMTcsNiArMTcsOSBAQAogICAgICAgICAgICAgICAgIgogCiBkb19jb25maWd1cmUgKCkgeworCWluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30vY29uZmlnCisJaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuc3ViICR7U30vY29uZmlnCisKIAlhY2xvY2FsCiAJbGlidG9vbGl6ZSAtLWF1dG9tYWtlIC0tY29weSAtLWZvcmNlCiAJYXV0b2NvbmYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcC1wZXJsXzEuNTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXAtcGVybF8xLjUwLmJiCmluZGV4IGE4YzhiY2YuLjk1MTQ3YmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcC1wZXJsXzEuNTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwLXBlcmxfMS41MC5iYgpAQCAtOSwxNyArOSwxMiBAQAogTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI3YTM2ZjU1ZThiYTYyYWFkZDc0ZTRmMDg4NmE0MDVlIgogCi0jIE5vdGUgdGhhdCB3ZSBkbyBub3Qgd2FudCB0byB1c2UgdGhlIHVwc3RyZWFtIGZpbGUgbmFtZSBsb2NhbGx5LgotIwotU1JDX1VSSSA9ICJodHRwOi8vZ2l0aHViLmNvbS9tYXhtaW5kL2dlb2lwLWFwaS1wZXJsL2FyY2hpdmUvdiR7UFZ9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPSR7QlBOfS0ke1BWfS50YXIuZ3ogXAorUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICI0N2Y3ZDQ5YmQxNWNmYzJlNWY4YzBmNWM0MDY4ZGM4YmIwZTEwZTk2IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21heG1pbmQvZ2VvaXAtYXBpLXBlcmwuZ2l0O3Byb3RvY29sPWh0dHBzOyBcCiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIyZDdmOGIxYjU0ZTZiYTZkOWUzZmVmY2U1MjY3NTgxNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NmRhMGRkNjdmNDE3YTQzZGM3MGYxNWE0OWJkMzYxOWY2Njg5NzBjMTE3YjllN2Y3MzdiNGFiMjQ2YzI0MGE2IgotCi1TID0gIiR7V09SS0RJUn0vZ2VvaXAtYXBpLXBlcmwtJHtQVn0iCi0KIERFUEVORFMgKz0gImdlb2lwIgogCiBpbmhlcml0IGNwYW4gcHRlc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcF8xLjYuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXBfMS42LjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MjdkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXBfMS42LjExLmJiCkBAIC0wLDAgKzEsOTAgQEAKK1NVTU1BUlkgPSAiQyBsaWJyYXJ5IGZvciBjb3VudHJ5L2NpdHkvb3JnYW5pemF0aW9uIHRvIElQIGFkZHJlc3Mgb3IgaG9zdG5hbWUgbWFwcGluZyIKK0RFU0NSSVBUSU9OID0gIkdlb0lQIGlzIGEgQyBsaWJyYXJ5IHRoYXQgZW5hYmxlcyB0aGUgdXNlciB0byBmaW5kIHRoZSBjb3VudHJ5IHRoYXQgYW55IElQIFwKK2FkZHJlc3Mgb3IgaG9zdG5hbWUgb3JpZ2luYXRlcyBmcm9tLiBJdCB1c2VzIGEgZmlsZSBiYXNlZCBkYXRhYmFzZSB0aGF0IGlzIFwKK2FjY3VyYXRlIGFzIG9mIE1hcmNoIDIwMDMuIFRoaXMgZGF0YWJhc2Ugc2ltcGx5IGNvbnRhaW5zIElQIGJsb2NrcyBhcyBrZXlzLCBhbmQgXAorY291bnRyaWVzIGFzIHZhbHVlcy4gVGhpcyBkYXRhYmFzZSBzaG91bGQgYmUgbW9yZSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUgdGhhbiBcCit1c2luZyByZXZlcnNlIEROUyBsb29rdXBzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2Rldi5tYXhtaW5kLmNvbS9nZW9pcC8iCitTRUNUSU9OID0gImxpYmRldmVsIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWF4bWluZC9nZW9pcC1hcGktYy5naXQgXAorICAgICAgICAgICBodHRwOi8vZ2VvbGl0ZS5tYXhtaW5kLmNvbS9kb3dubG9hZC9nZW9pcC9kYXRhYmFzZS9HZW9MaXRlQ291bnRyeS9HZW9JUC5kYXQuZ3o7YXBwbHk9bm87bmFtZT1HZW9JUC1kYXQgXAorICAgICAgICAgICBodHRwOi8vZ2VvbGl0ZS5tYXhtaW5kLmNvbS9kb3dubG9hZC9nZW9pcC9kYXRhYmFzZS9HZW9JUHY2LmRhdC5nejthcHBseT1ubztuYW1lPUdlb0lQdjYtZGF0IFwKKyAgICAgICAgICAgaHR0cDovL2dlb2xpdGUubWF4bWluZC5jb20vZG93bmxvYWQvZ2VvaXAvZGF0YWJhc2UvR2VvTGl0ZUNpdHkuZGF0Lmd6O2FwcGx5PW5vO25hbWU9R2VvTGl0ZUNpdHktZGF0IFwKKyAgICAgICAgICAgaHR0cDovL2dlb2xpdGUubWF4bWluZC5jb20vZG93bmxvYWQvZ2VvaXAvZGF0YWJhc2UvR2VvTGl0ZUNpdHl2Ni1iZXRhL0dlb0xpdGVDaXR5djYuZGF0Lmd6O2FwcGx5PW5vO25hbWU9R2VvTGl0ZUNpdHl2Ni1kYXQgXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKK1NSQ1JFViA9ICIzMTY5YThhODg4MDhjOGRmODYyZTBiMDM1NWY5OWM3MzhjY2U5ZjdlIgorCitTUkNfVVJJW0dlb0lQLWRhdC5tZDVzdW1dID0gIjM3Yzg0ZWFkMzMyZGRhMDM2MmE1YWM3YjA0OWI3MmQ0IgorU1JDX1VSSVtHZW9JUC1kYXQuc2hhMjU2c3VtXSA9ICI3OWZmMTA5OWU5NmMyZGMxYzI1MzljOWExOGFhYTEzYTlhZmQwODVjYWU0NzdkZjYwZDk1ZjE2NDRkNDJiYzA3IgorCitTUkNfVVJJW0dlb0lQdjYtZGF0Lm1kNXN1bV0gPSAiZTc1Yjg0YTQwNDRlODFkNmQ0NDg0ZTMzODE2YmM3NjIiCitTUkNfVVJJW0dlb0lQdjYtZGF0LnNoYTI1NnN1bV0gPSAiYTAwOWIwZjIxOTY4ZDI4NjhlNmRkMTlkMTRmM2MzYjhjZDYwYWU4NGE0YmZjMjk3MGRmMzRkNzcxYTA0ODExZSIKKworU1JDX1VSSVtHZW9MaXRlQ2l0eS1kYXQubWQ1c3VtXSA9ICI0YjY1ODhkMGJmZTFhZjIyZTI2N2FjOTBhYTk3Zjc2OSIKK1NSQ19VUklbR2VvTGl0ZUNpdHktZGF0LnNoYTI1NnN1bV0gPSAiOGE2NDY3MDMzYTUyOGY2OGIxYTk3ZGUyNGQ5ZDBjZTg2YzhlOGU4MzY4MzgyMGUxNmU0MzNkZGJkM2Y3MTJmNyIKKworU1JDX1VSSVtHZW9MaXRlQ2l0eXY2LWRhdC5tZDVzdW1dID0gImFkMGNiNDI1MThhZjdmNzUyNDk5NDI1ZGNhMDk1MmJiIgorU1JDX1VSSVtHZW9MaXRlQ2l0eXY2LWRhdC5zaGEyNTZzdW1dID0gImVkYTY3ZjQyMDRiYTlmYTUyMDRhNTNjZGI2MjkxNjdjY2E5Mzk0YzcxMmY1Mzc4YmM3MjNhOGMyOWMwYjQ0MGYiCisKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI0M2I3MjVkNzFiYjVkZjRhMWU1OTIwYjM0NGI4NmFkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTAzODgyNzY3NDlhNTQyYjBkNjExNjAxZmE3YzFkY2M4ICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgICIKKworZG9faW5zdGFsbCgpIHsKKyAgICBtYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCisgICAgaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vR2VvSVAKKyAgICBpbnN0YWxsICR7V09SS0RJUn0vR2VvSVAuZGF0ICR7RH0vJHtkYXRhZGlyfS9HZW9JUC8KKyAgICBpbnN0YWxsICR7V09SS0RJUn0vR2VvSVB2Ni5kYXQgJHtEfS8ke2RhdGFkaXJ9L0dlb0lQLworICAgIGluc3RhbGwgJHtXT1JLRElSfS9HZW9MaXRlQ2l0eS5kYXQgJHtEfS8ke2RhdGFkaXJ9L0dlb0lQLworICAgIGluc3RhbGwgJHtXT1JLRElSfS9HZW9MaXRlQ2l0eXY2LmRhdCAke0R9LyR7ZGF0YWRpcn0vR2VvSVAvCisgICAgbG4gLXMgR2VvTGl0ZUNpdHkuZGF0ICR7RH0ke2RhdGFkaXJ9L0dlb0lQL0dlb0lQQ2l0eS5kYXQKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LWRhdGFiYXNlIgorRklMRVNfJHtQTn0tZGF0YWJhc2UgPSAiIgorRklMRVNfJHtQTn0tZGF0YWJhc2UgKz0gIiR7ZGF0YWRpcn0vR2VvSVAvKiIKKworIyBXZSBjYW5ub3QgZG8gbXVjaCBsb29raW5nIHVwIHdpdGhvdXQgZGF0YWJhc2VzLgorIworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWRhdGFiYXNlIgorCitpbmhlcml0IHB0ZXN0CisKK2RvX2NvbmZpZ3VyZV9wdGVzdCgpIHsKKyAgICBzZWQgLWkgLWUgInMvbm9pbnN0X1BST0dSQU1TID0gL3Rlc3RfUFJPR1JBTVMgPSAvZyIgXAorICAgICAgICAtZSAnczpTUkNESVI9XFwiJCh0b3Bfc3JjZGlyKVxcIjpTUkNESVI9XFwiJCh0ZXN0ZGlyKVxcIjonIFwKKyAgICAgICAgJHtTfS90ZXN0L01ha2VmaWxlLmFtCisKKyAgICBpZiAhIGdyZXAgIl50ZXN0ZGlyID0gIiAke1N9L3Rlc3QvTWFrZWZpbGUuYW0gOyB0aGVuCisgICAgICAgIHNlZCAtZSAnL0VYVFJBX1BST0dSQU1TID0gL2l0ZXN0ZGlyID0gJHtQVEVTVF9QQVRIfS90ZXN0cycgXAorICAgICAgICAgICAgLWkgJHtTfS90ZXN0L01ha2VmaWxlLmFtCisgICAgZmkKKworICAgIHNlZCAtaSAtZSAiczovdXNyL2xvY2FsL3NoYXJlOi91c3Ivc2hhcmU6ZyIgXAorICAgICAgICAke1N9L3Rlc3QvYmVuY2htYXJrLmMKKworICAgIHNlZCAtaSAtZSAnczoiLi4vZGF0YS86Ii91c3Ivc2hhcmUvR2VvSVAvOmcnIFwKKyAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtY2l0eS5jIFwKKyAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtaXNwLmMgXAorICAgICAgICAke1N9L3Rlc3QvdGVzdC1nZW9pcC1hc251bS5jIFwKKyAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtbmV0c3BlZWQuYyBcCisgICAgICAgICR7U30vdGVzdC90ZXN0LWdlb2lwLW9yZy5jIFwKKyAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtcmVnaW9uLmMKK30KKworCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgdGVzdCBERVNURElSPSR7RH0gIGluc3RhbGwtdGVzdFBST0dSQU1TCisgICAgaW5zdGFsbCAke1N9L3Rlc3QvKi50eHQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcF8xLjYuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcF8xLjYuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU4ZTA3MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXBfMS42LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1TVU1NQVJZID0gIkMgbGlicmFyeSBmb3IgY291bnRyeS9jaXR5L29yZ2FuaXphdGlvbiB0byBJUCBhZGRyZXNzIG9yIGhvc3RuYW1lIG1hcHBpbmciCi1ERVNDUklQVElPTiA9ICJHZW9JUCBpcyBhIEMgbGlicmFyeSB0aGF0IGVuYWJsZXMgdGhlIHVzZXIgdG8gZmluZCB0aGUgY291bnRyeSB0aGF0IGFueSBJUCBcCi1hZGRyZXNzIG9yIGhvc3RuYW1lIG9yaWdpbmF0ZXMgZnJvbS4gSXQgdXNlcyBhIGZpbGUgYmFzZWQgZGF0YWJhc2UgdGhhdCBpcyBcCi1hY2N1cmF0ZSBhcyBvZiBNYXJjaCAyMDAzLiBUaGlzIGRhdGFiYXNlIHNpbXBseSBjb250YWlucyBJUCBibG9ja3MgYXMga2V5cywgYW5kIFwKLWNvdW50cmllcyBhcyB2YWx1ZXMuIFRoaXMgZGF0YWJhc2Ugc2hvdWxkIGJlIG1vcmUgY29tcGxldGUgYW5kIGFjY3VyYXRlIHRoYW4gXAotdXNpbmcgcmV2ZXJzZSBETlMgbG9va3Vwcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9kZXYubWF4bWluZC5jb20vZ2VvaXAvIgotU0VDVElPTiA9ICJsaWJkZXZlbCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21heG1pbmQvZ2VvaXAtYXBpLWMuZ2l0IFwKLSAgICAgICAgICAgaHR0cDovL2dlb2xpdGUubWF4bWluZC5jb20vZG93bmxvYWQvZ2VvaXAvZGF0YWJhc2UvR2VvTGl0ZUNvdW50cnkvR2VvSVAuZGF0Lmd6O2FwcGx5PW5vO25hbWU9R2VvSVAtZGF0IFwKLSAgICAgICAgICAgaHR0cDovL2dlb2xpdGUubWF4bWluZC5jb20vZG93bmxvYWQvZ2VvaXAvZGF0YWJhc2UvR2VvSVB2Ni5kYXQuZ3o7YXBwbHk9bm87bmFtZT1HZW9JUHY2LWRhdCBcCi0gICAgICAgICAgIGh0dHA6Ly9nZW9saXRlLm1heG1pbmQuY29tL2Rvd25sb2FkL2dlb2lwL2RhdGFiYXNlL0dlb0xpdGVDaXR5LmRhdC5nejthcHBseT1ubztuYW1lPUdlb0xpdGVDaXR5LWRhdCBcCi0gICAgICAgICAgIGh0dHA6Ly9nZW9saXRlLm1heG1pbmQuY29tL2Rvd25sb2FkL2dlb2lwL2RhdGFiYXNlL0dlb0xpdGVDaXR5djYtYmV0YS9HZW9MaXRlQ2l0eXY2LmRhdC5nejthcHBseT1ubztuYW1lPUdlb0xpdGVDaXR5djYtZGF0IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi1TUkNSRVYgPSAiNGY0ODdiZjk1NTMyZTBiYmE3NzgzZDU5MWZhZmYxNzhhYjBhYTQ2MiIKLQotU1JDX1VSSVtHZW9JUC1kYXQubWQ1c3VtXSA9ICIzN2M4NGVhZDMzMmRkYTAzNjJhNWFjN2IwNDliNzJkNCIKLVNSQ19VUklbR2VvSVAtZGF0LnNoYTI1NnN1bV0gPSAiNzlmZjEwOTllOTZjMmRjMWMyNTM5YzlhMThhYWExM2E5YWZkMDg1Y2FlNDc3ZGY2MGQ5NWYxNjQ0ZDQyYmMwNyIKLQotU1JDX1VSSVtHZW9JUHY2LWRhdC5tZDVzdW1dID0gImU3NWI4NGE0MDQ0ZTgxZDZkNDQ4NGUzMzgxNmJjNzYyIgotU1JDX1VSSVtHZW9JUHY2LWRhdC5zaGEyNTZzdW1dID0gImEwMDliMGYyMTk2OGQyODY4ZTZkZDE5ZDE0ZjNjM2I4Y2Q2MGFlODRhNGJmYzI5NzBkZjM0ZDc3MWEwNDgxMWUiCi0KLVNSQ19VUklbR2VvTGl0ZUNpdHktZGF0Lm1kNXN1bV0gPSAiNGI2NTg4ZDBiZmUxYWYyMmUyNjdhYzkwYWE5N2Y3NjkiCi1TUkNfVVJJW0dlb0xpdGVDaXR5LWRhdC5zaGEyNTZzdW1dID0gIjhhNjQ2NzAzM2E1MjhmNjhiMWE5N2RlMjRkOWQwY2U4NmM4ZThlODM2ODM4MjBlMTZlNDMzZGRiZDNmNzEyZjciCi0KLVNSQ19VUklbR2VvTGl0ZUNpdHl2Ni1kYXQubWQ1c3VtXSA9ICJhZDBjYjQyNTE4YWY3Zjc1MjQ5OTQyNWRjYTA5NTJiYiIKLVNSQ19VUklbR2VvTGl0ZUNpdHl2Ni1kYXQuc2hhMjU2c3VtXSA9ICJlZGE2N2Y0MjA0YmE5ZmE1MjA0YTUzY2RiNjI5MTY3Y2NhOTM5NGM3MTJmNTM3OGJjNzIzYThjMjljMGI0NDBmIgotCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNDNiNzI1ZDcxYmI1ZGY0YTFlNTkyMGIzNDRiODZhZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0wMzg4Mjc2NzQ5YTU0MmIwZDYxMTYwMWZhN2MxZGNjOCAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc3RhdGljICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgbWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAotICAgIGluc3RhbGwgLWQgJHtEfS8ke2RhdGFkaXJ9L0dlb0lQCi0gICAgaW5zdGFsbCAke1dPUktESVJ9L0dlb0lQLmRhdCAke0R9LyR7ZGF0YWRpcn0vR2VvSVAvCi0gICAgaW5zdGFsbCAke1dPUktESVJ9L0dlb0lQdjYuZGF0ICR7RH0vJHtkYXRhZGlyfS9HZW9JUC8KLSAgICBpbnN0YWxsICR7V09SS0RJUn0vR2VvTGl0ZUNpdHkuZGF0ICR7RH0vJHtkYXRhZGlyfS9HZW9JUC8KLSAgICBpbnN0YWxsICR7V09SS0RJUn0vR2VvTGl0ZUNpdHl2Ni5kYXQgJHtEfS8ke2RhdGFkaXJ9L0dlb0lQLwotICAgIGxuIC1zIEdlb0xpdGVDaXR5LmRhdCAke0R9JHtkYXRhZGlyfS9HZW9JUC9HZW9JUENpdHkuZGF0Ci19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1kYXRhYmFzZSIKLUZJTEVTXyR7UE59LWRhdGFiYXNlID0gIiIKLUZJTEVTXyR7UE59LWRhdGFiYXNlICs9ICIke2RhdGFkaXJ9L0dlb0lQLyoiCi0KLSMgV2UgY2Fubm90IGRvIG11Y2ggbG9va2luZyB1cCB3aXRob3V0IGRhdGFiYXNlcy4KLSMKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1kYXRhYmFzZSIKLQotaW5oZXJpdCBwdGVzdAotCi1kb19jb25maWd1cmVfcHRlc3QoKSB7Ci0gICAgc2VkIC1pIC1lICJzL25vaW5zdF9QUk9HUkFNUyA9IC90ZXN0X1BST0dSQU1TID0gL2ciIFwKLSAgICAgICAgLWUgJ3M6U1JDRElSPVxcIiQodG9wX3NyY2RpcilcXCI6U1JDRElSPVxcIiQodGVzdGRpcilcXCI6JyBcCi0gICAgICAgICR7U30vdGVzdC9NYWtlZmlsZS5hbQotCi0gICAgaWYgISBncmVwICJedGVzdGRpciA9ICIgJHtTfS90ZXN0L01ha2VmaWxlLmFtIDsgdGhlbgotICAgICAgICBzZWQgLWUgJy9FWFRSQV9QUk9HUkFNUyA9IC9pdGVzdGRpciA9ICR7UFRFU1RfUEFUSH0vdGVzdHMnIFwKLSAgICAgICAgICAgIC1pICR7U30vdGVzdC9NYWtlZmlsZS5hbQotICAgIGZpCi0KLSAgICBzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9zaGFyZTovdXNyL3NoYXJlOmciIFwKLSAgICAgICAgJHtTfS90ZXN0L2JlbmNobWFyay5jCi0KLSAgICBzZWQgLWkgLWUgJ3M6Ii4uL2RhdGEvOiIvdXNyL3NoYXJlL0dlb0lQLzpnJyBcCi0gICAgICAgICR7U30vdGVzdC90ZXN0LWdlb2lwLWNpdHkuYyBcCi0gICAgICAgICR7U30vdGVzdC90ZXN0LWdlb2lwLWlzcC5jIFwKLSAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtYXNudW0uYyBcCi0gICAgICAgICR7U30vdGVzdC90ZXN0LWdlb2lwLW5ldHNwZWVkLmMgXAotICAgICAgICAke1N9L3Rlc3QvdGVzdC1nZW9pcC1vcmcuYyBcCi0gICAgICAgICR7U30vdGVzdC90ZXN0LWdlb2lwLXJlZ2lvbi5jCi19Ci0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICBvZV9ydW5tYWtlIC1DIHRlc3QgREVTVERJUj0ke0R9ICBpbnN0YWxsLXRlc3RQUk9HUkFNUwotICAgIGluc3RhbGwgJHtTfS90ZXN0LyoudHh0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGUtMi40LjAvR2VvSVAuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZS0yLjUuMC9HZW9JUC5jb25mCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGUtMi40LjAvR2VvSVAuY29uZgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwdXBkYXRlLTIuNS4wL0dlb0lQLmNvbmYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZS0yLjQuMC9nZW9pcHVwZGF0ZS5jcm9uIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwdXBkYXRlLTIuNS4wL2dlb2lwdXBkYXRlLmNyb24Kc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZS0yLjQuMC9nZW9pcHVwZGF0ZS5jcm9uCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGUtMi41LjAvZ2VvaXB1cGRhdGUuY3JvbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwdXBkYXRlXzIuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwdXBkYXRlXzIuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTA0NWJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZV8yLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiQ3JvbnRhYiBlbnRyeSB0byBwcm92aWRlIHdlZWtseSB1cGRhdGVzIG9mIHRoZSBHZW9JUCBmcmVlIGRhdGFiYXNlcy4iCi1ERVNDUklQVElPTiA9ICJ1cGRhdGUgZGF0YWJhc2VzIGZvciBHZW9JUCIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2Rldi5tYXhtaW5kLmNvbS9nZW9pcC8iCi1TRUNUSU9OID0gIm5ldCIKLQotREVQRU5EUyA9ICJ6bGliIGN1cmwiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL21heG1pbmQvZ2VvaXB1cGRhdGUvcmVsZWFzZXMvZG93bmxvYWQvdjIuNC4wL2dlb2lwdXBkYXRlLTIuNC4wLnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9HZW9JUC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2dlb2lwdXBkYXRlLmNyb24gXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwMmY5NzEyZmI4MGU4ZTk3OWQzZDU0Y2RhN2Y3NzA0ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YjRlODhjZThkODRlOWM3NWJjNjgxNzA0ZDE5ZWM1YzYzYzU0ZjAxZTk0NWY3NjY5Zjk3ZmIwZGY3ZTEzOTUyIgotCi1MSUNFTlNFID0gIkdQTHYyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLWZpbGU6Ly9DaGFuZ2VMb2cubWQ7bWQ1PTMzNDMzN2I2ZWNiYjY1MDkzYmFlNjZiM2FlMjFjOGMyIFwKLSIKLUZJTEVTXyR7UE59ID0gIi91c3Ivc2hhcmUvR2VvSVAgXAotICAgICAgICAgICAgICAvZXRjL0dlb0lQLmNvbmYgXAotICAgICAgICAgICAgIC9ldGMvY3Jvbi5kL2dlb2lwdXBkYXRlLmNyb24gXAotICAgICAgICAgICAgIC91c3IvYmluL2dlb2lwdXBkYXRlIFwKLSIKLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi5kCi0gICAgaW5zdGFsbCAke1dPUktESVJ9L0dlb0lQLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9LwotICAgIGluc3RhbGwgJHtXT1JLRElSfS9nZW9pcHVwZGF0ZS5jcm9uICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLmQvCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGVfMi41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGVfMi41LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRlYjJiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZV8yLjUuMC5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIkNyb250YWIgZW50cnkgdG8gcHJvdmlkZSB3ZWVrbHkgdXBkYXRlcyBvZiB0aGUgR2VvSVAgZnJlZSBkYXRhYmFzZXMuIgorREVTQ1JJUFRJT04gPSAidXBkYXRlIGRhdGFiYXNlcyBmb3IgR2VvSVAiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9kZXYubWF4bWluZC5jb20vZ2VvaXAvIgorU0VDVElPTiA9ICJuZXQiCisKK0RFUEVORFMgPSAiemxpYiBjdXJsIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tYXhtaW5kL2dlb2lwdXBkYXRlL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjUuMC9nZW9pcHVwZGF0ZS0yLjUuMC50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vR2VvSVAuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9nZW9pcHVwZGF0ZS5jcm9uIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMjhmNjMzYzQ5ZWM4N2FiMDFhZDNjMGZiMDIyOGE2OTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTExOWZkMGUzMzhjZDA4M2U4ODYyMjhiMjY2NzljNjRiY2JhYWRlOGE4MTViZTA5MmFlY2Y4NjVhNjEwYWIyNiIKKworTElDRU5TRSA9ICJHUEx2MiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJcCitmaWxlOi8vQ2hhbmdlTG9nLm1kO21kNT0xMWQyZTMxZGYwZGUyYmUzY2NjM2UyMjg2YzRkYWZjYiBcCisiCitGSUxFU18ke1BOfSA9ICIvdXNyL3NoYXJlL0dlb0lQIFwKKyAgICAgICAgICAgICAgL2V0Yy9HZW9JUC5jb25mIFwKKyAgICAgICAgICAgICAvZXRjL2Nyb24uZC9nZW9pcHVwZGF0ZS5jcm9uIFwKKyAgICAgICAgICAgICAvdXNyL2Jpbi9nZW9pcHVwZGF0ZSBcCisiCitpbmhlcml0IGF1dG90b29scworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24uZAorICAgIGluc3RhbGwgJHtXT1JLRElSfS9HZW9JUC5jb25mICR7RH0vJHtzeXNjb25mZGlyfS8KKyAgICBpbnN0YWxsICR7V09SS0RJUn0vZ2VvaXB1cGRhdGUuY3JvbiAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi5kLworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwY2FsYy9pcGNhbGMvMDAwMS1NYWtlZmlsZS1wYXNzLWV4dHJhLWxpbmtlci1mbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcGNhbGMvaXBjYWxjLzAwMDEtTWFrZWZpbGUtcGFzcy1leHRyYS1saW5rZXItZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhkMzA2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcGNhbGMvaXBjYWxjLzAwMDEtTWFrZWZpbGUtcGFzcy1leHRyYS1saW5rZXItZmxhZ3MucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBmZDgwYzA1OTkwODMwMTNhMWI1ODNmZWJhNWQ3NDczZjUyYjM1OTM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyaWlhIE1vdmNoYW4gPG1tb3ZjaGFuQGNpc2NvLmNvbT4KK0RhdGU6IFR1ZSwgNiBNYXIgMjAxOCAxNjowMzozOSArMDIwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogcGFzcyBleHRyYSBsaW5rZXIgZmxhZ3MKKworRml4ZXMKK0VSUk9SOiBRQSBJc3N1ZTogTm8gR05VX0hBU0ggaW4gdGhlIGVsZiBiaW5hcnkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hcmlpYSBNb3ZjaGFuIDxtbW92Y2hhbkBjaXNjby5jb20+CistLS0KKyBNYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDhiZWZmOGYuLjA0N2YwMmEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC04LDcgKzgsNyBAQCBMSUJTPz0KKyBWRVJTSU9OPTAuMi4yCisgQ0M/PWdjYworIENGTEFHUz89LU8yIC1nIC1XYWxsCistTERGTEFHUz0kKExJQlMpCisrTERGTEFHUys9JChMSUJTKQorIAorIGlmZXEgKCQoVVNFX0dFT0lQKSx5ZXMpCisgaWZlcSAoJChVU0VfRFlOX0dFT0lQKSx5ZXMpCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXBjYWxjL2lwY2FsY18wLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcGNhbGMvaXBjYWxjXzAuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NTY0MjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXBjYWxjL2lwY2FsY18wLjIuMi5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIlRvb2wgdG8gYXNzaXN0IGluIG5ldHdvcmsgYWRkcmVzcyBjYWxjdWxhdGlvbnMgZm9yIElQdjQgYW5kIElQdjYuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25tYXYvaXBjYWxjIgorCitTRUNUSU9OID0gIm5ldCIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gIjgzNDg4MDhhNzg2OWNhOGYyNWE1YjVkZWVhYTQxOGMyZjZkNTI3NTgiCitTUkNfVVJJID0gIlwKKyAgICBnaXQ6Ly9naXRodWIuY29tL25tYXYvaXBjYWxjLmdpdDtwcm90b2NvbD1odHRwczsgXAorICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLXBhc3MtZXh0cmEtbGlua2VyLWZsYWdzLnBhdGNoIFwKKyIKKworZXhwb3J0IFVTRV9HRU9JUCA9ICJubyIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vaXBjYWxjICR7RH0vJHtiaW5kaXJ9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYi9sZGItQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJsZGIvbGlibGRiL2xkYi1BZGQtY29uZmlndXJlLW9wdGlvbnMtZm9yLXBhY2thZ2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2JkNDU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJsZGIvbGlibGRiL2xkYi1BZGQtY29uZmlndXJlLW9wdGlvbnMtZm9yLXBhY2thZ2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLUZyb20gNDlkZGUyMmU3OThmZDdmMzlmZDU5MjUwMDM2YzBhZTFmZTJiOTE1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDIxIFNlcCAyMDE2IDEwOjA2OjM5ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxkYjogQWRkIGNvbmZpZ3VyZSBvcHRpb25zIGZvciBwYWNrYWdlcwotCi1BZGQgY29uZmlndXJlIG9wdGlvbnMgZm9yIHRoZSBmb2xsb3dpbmcgcGFja2FnZXM6Ci0gLSBhY2wKLSAtIGF0dHIKLSAtIGxpYmFpbwotIC0gbGliYnNkCi0gLSBsaWJjYXAKLSAtIHZhbGdyaW5kCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UgZGV0ZXJtaW5pc3RpYyBidWlsZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZSB8ICA2ICsrLQotIGxpYi9yZXBsYWNlL3dzY3JpcHQgICAgICAgICAgICAgICAgICB8IDg1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQotIHdzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKwotIDMgZmlsZXMgY2hhbmdlZCwgODAgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUgYi9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUKLWluZGV4IDIwMzU0NzQuLjEwZjlhZTcgMTAwNjQ0Ci0tLS0gYS9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUKLSsrKyBiL2xpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZQotQEAgLTEsNiArMSwxMCBAQAotICMhL3Vzci9iaW4vZW52IHB5dGhvbgotIAotLWNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2NhcGFiaWxpdHkuaCcpCi0raW1wb3J0IE9wdGlvbnMKLSsKLStpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmNhcDoKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvY2FwYWJpbGl0eS5oJykKLSsKLSBjb25mLkNIRUNLX0ZVTkNTKCdnZXRwd25hbV9yIGdldHB3dWlkX3IgZ2V0cHdlbnRfcicpCi0gCi0gIyBzb2xhcmlzIHZhcmllbnRzIG9mIGdldFhYZW50X3IKLWRpZmYgLS1naXQgYS9saWIvcmVwbGFjZS93c2NyaXB0IGIvbGliL3JlcGxhY2Uvd3NjcmlwdAotaW5kZXggMTQ1MzAwZC4uODIxOGZhNSAxMDA2NDQKLS0tLSBhL2xpYi9yZXBsYWNlL3dzY3JpcHQKLSsrKyBiL2xpYi9yZXBsYWNlL3dzY3JpcHQKLUBAIC0yMyw2ICsyMyw0MSBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKLSAgICAgb3B0LlBSSVZBVEVfRVhURU5TSU9OX0RFRkFVTFQoJycpCi0gICAgIG9wdC5SRUNVUlNFKCdidWlsZHRvb2xzL3dhZnNhbWJhJykKLSAKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1hY2wnLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBhY2wiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2FjbCcpCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtYWNsJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGFjbCIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2FjbCcsIGRlZmF1bHQ9RmFsc2UpCi0rCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtYXR0cicsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGF0dHIiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2F0dHInKQotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWF0dHInLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgYXR0ciIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2F0dHInLCBkZWZhdWx0PUZhbHNlKQotKwotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWxpYmFpbycsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGxpYmFpbyIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfbGliYWlvJykKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1saWJhaW8nLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgbGliYWlvIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfbGliYWlvJywgZGVmYXVsdD1GYWxzZSkKLSsKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1saWJic2QnLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBsaWJic2QiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2xpYmJzZCcpCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtbGliYnNkJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGxpYmJzZCIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2xpYmJzZCcsIGRlZmF1bHQ9RmFsc2UpCi0rCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtbGliY2FwJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgbGliY2FwIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9saWJjYXAnKQotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWxpYmNhcCcsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBsaWJjYXAiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9saWJjYXAnLCBkZWZhdWx0PUZhbHNlKQotKwotIEBVdGlscy5ydW5fb25jZQotIGRlZiBjb25maWd1cmUoY29uZik6Ci0gICAgIGNvbmYuUkVDVVJTRSgnYnVpbGR0b29scy93YWZzYW1iYScpCi1AQCAtMzIsMTIgKzY3LDI1IEBAIGRlZiBjb25maWd1cmUoY29uZik6Ci0gICAgIGNvbmYuREVGSU5FKCdIQVZFX0xJQlJFUExBQ0UnLCAxKQotICAgICBjb25mLkRFRklORSgnTElCUkVQTEFDRV9ORVRXT1JLX0NIRUNLUycsIDEpCi0gCi0tICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGludXgvdHlwZXMuaCBjcnlwdC5oIGxvY2FsZS5oIGFjbC9saWJhY2wuaCBjb21wYXQuaCcpCi0tICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYWNsL2xpYmFjbC5oIGF0dHIveGF0dHIuaCBjb21wYXQuaCBjdHlwZS5oIGR1c3RhdC5oJykKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdsaW51eC90eXBlcy5oIGNyeXB0LmggbG9jYWxlLmggY29tcGF0LmgnKQotKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2NvbXBhdC5oIGN0eXBlLmggZHVzdGF0LmgnKQotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2ZjbnRsLmggZm5tYXRjaC5oIGdsb2IuaCBoaXN0b3J5Lmgga3JiNS5oIGxhbmdpbmZvLmgnKQotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpYmFpby5oIGxvY2FsZS5oIG5kaXIuaCBwd2QuaCcpCi0tICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc2hhZG93Lmggc3lzL2FjbC5oJykKLS0gICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvYXR0cmlidXRlcy5oIGF0dHIvYXR0cmlidXRlcy5oIHN5cy9jYXBhYmlsaXR5Lmggc3lzL2Rpci5oIHN5cy9lcG9sbC5oJykKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdsb2NhbGUuaCBuZGlyLmggcHdkLmgnKQotKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3NoYWRvdy5oJykKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvYXR0cmlidXRlcy5oIHN5cy9kaXIuaCBzeXMvZXBvbGwuaCcpCi0rCi0rICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfYWNsOgotKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdhY2wvbGliYWNsLmggc3lzL2FjbC5oJykKLSsKLSsgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9hdHRyOgotKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdhdHRyL2F0dHJpYnV0ZXMuaCBhdHRyL3hhdHRyLmgnKQotKwotKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmFpbzoKLSsgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGliYWlvLmgnKQotKwotKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmNhcDoKLSsgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2NhcGFiaWxpdHkuaCcpCi0rCi0gICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygncG9ydC5oJykKLSAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvZmNudGwuaCBzeXMvZmlsaW8uaCBzeXMvZmlsc3lzLmggc3lzL2ZzL3M1cGFyYW0uaCBzeXMvZnMvdngvcXVvdGEuaCcpCi0gICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2lkLmggc3lzL2lvY3RsLmggc3lzL2lwYy5oIHN5cy9tbWFuLmggc3lzL21vZGUuaCBzeXMvbmRpci5oIHN5cy9wcml2LmgnKQotQEAgLTczLDcgKzEyMSw5IEBAIGRlZiBjb25maWd1cmUoY29uZik6Ci0gCi0gICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJywgaGVhZGVycz0ncnBjL3JwYy5oIHJwY3N2Yy95cF9wcm90LmgnLCBkZWZpbmU9J0hBVkVfUlBDU1ZDX1lQX1BST1RfSCcpCi0gCi0tICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygndmFsZ3JpbmQuaCB2YWxncmluZC92YWxncmluZC5oIHZhbGdyaW5kL21lbWNoZWNrLmgnKQotKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX3ZhbGdyaW5kOgotKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCd2YWxncmluZC5oIHZhbGdyaW5kL3ZhbGdyaW5kLmggdmFsZ3JpbmQvbWVtY2hlY2suaCcpCi0rCi0gICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbnNzX2NvbW1vbi5oIG5zc3dpdGNoLmggbnNfYXBpLmgnKQotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9leHRhdHRyLmggc3lzL2VhLmggc3lzL3Byb3BsaXN0Lmggc3lzL2NkZWZzLmgnKQotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3V0bXAuaCB1dG1weC5oIGxhc3Rsb2cuaCcpCi1AQCAtMjQ4LDE3ICsyOTgsMTggQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKLSAKLSAgICAgY29uZi5DSEVDS19GVU5DUygncHJjdGwgZGlybmFtZSBiYXNlbmFtZScpCi0gCi0tICAgICMgbGliYnNkIG9uIHNvbWUgcGxhdGZvcm1zIHByb3ZpZGVzIHN0cmxjcHkgYW5kIHN0cmxjYXQKLS0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ3N0cmxjcHkgc3RybGNhdCcpOgotLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc3RybGNweSBzdHJsY2F0JywgJ2JzZCcsIGhlYWRlcnM9J2JzZC9zdHJpbmcuaCcsCi0tICAgICAgICAgICAgICAgIGNoZWNrbGliYz1UcnVlKQotLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnZ2V0cGVlcmVpZCcpOgotLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignZ2V0cGVlcmVpZCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQotLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ3NldHByb2N0aXRsZScsIGhlYWRlcnM9J3NldHByb2N0aXRsZS5oJyk6Ci0tICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKLS0KLS0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ2Nsb3NlZnJvbScpOgotLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignY2xvc2Vmcm9tJywgJ2JzZCcsIGhlYWRlcnM9J2JzZC91bmlzdGQuaCcpCi0rICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfbGliYnNkOgotKyAgICAgICAgIyBsaWJic2Qgb24gc29tZSBwbGF0Zm9ybXMgcHJvdmlkZXMgc3RybGNweSBhbmQgc3RybGNhdAotKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ3N0cmxjcHkgc3RybGNhdCcpOgotKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3N0cmxjcHkgc3RybGNhdCcsICdic2QnLCBoZWFkZXJzPSdic2Qvc3RyaW5nLmgnLAotKyAgICAgICAgICAgICAgICAgICAgY2hlY2tsaWJjPVRydWUpCi0rICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnZ2V0cGVlcmVpZCcpOgotKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ2dldHBlZXJlaWQnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKLSsgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnc2V0cHJvY3RpdGxlJywgaGVhZGVycz0nc2V0cHJvY3RpdGxlLmgnKToKLSsgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKLSsKLSsgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdjbG9zZWZyb20nKToKLSsgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdjbG9zZWZyb20nLCAnYnNkJywgaGVhZGVycz0nYnNkL3VuaXN0ZC5oJykKLSAKLSAgICAgY29uZi5DSEVDS19DT0RFKCcnJwotICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWNyZWQgY3JlZDsKLWRpZmYgLS1naXQgYS93c2NyaXB0IGIvd3NjcmlwdAotaW5kZXggMmFmODU3MS4uMDU5NDA4YiAxMDA3NTUKLS0tLSBhL3dzY3JpcHQKLSsrKyBiL3dzY3JpcHQKLUBAIC0yOSw2ICsyOSwxMyBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKLSAgICAgb3B0LlJFQ1VSU0UoJ2xpYi9yZXBsYWNlJykKLSAgICAgb3B0LnRvb2xfb3B0aW9ucygncHl0aG9uJykgIyBvcHRpb25zIGZvciBkaXNhYmxpbmcgcHljIG9yIHB5byBjb21waWxhdGlvbgotIAotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLXZhbGdyaW5kJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oImVuYWJsZSB1c2Ugb2YgdmFsZ3JpbmQiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX3ZhbGdyaW5kJykKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC12YWxncmluZCcsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJkaXNhYmxlIHVzZSBvZiB2YWxncmluZCIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX3ZhbGdyaW5kJywgZGVmYXVsdD1GYWxzZSkKLSsKLSBkZWYgY29uZmlndXJlKGNvbmYpOgotICAgICBjb25mLlJFQ1VSU0UoJ2xpYi90ZGInKQotICAgICBjb25mLlJFQ1VSU0UoJ2xpYi90ZXZlbnQnKQotLS0gCi0yLjguMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYi9vcHRpb25zLTEuMy4xLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGIvb3B0aW9ucy0xLjMuMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmUyNTNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGIvb3B0aW9ucy0xLjMuMS5wYXRjaApAQCAtMCwwICsxLDE5MyBAQAorRnJvbSBhNGRhM2FiNGQ3NjAxM2FhYTczMWQ0M2Q1MmNjY2ExZWJkMzdjMzk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjEgU2VwIDIwMTYgMTA6MDY6MzkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzFdIGxkYjogQWRkIGNvbmZpZ3VyZSBvcHRpb25zIGZvciBwYWNrYWdlcworCitBZGQgY29uZmlndXJlIG9wdGlvbnMgZm9yIHRoZSBmb2xsb3dpbmcgcGFja2FnZXM6CisgLSBhY2wKKyAtIGF0dHIKKyAtIGxpYmFpbworIC0gbGliYnNkCisgLSBsaWJjYXAKKyAtIHZhbGdyaW5kCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UgZGV0ZXJtaW5pc3RpYyBidWlsZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZSB8ICA2ICsrLQorIGxpYi9yZXBsYWNlL3dzY3JpcHQgICAgICAgICAgICAgICAgICB8IDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQorIHdzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKworIDMgZmlsZXMgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUgYi9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUKK2luZGV4IDIwMzU0NzQuLjEwZjlhZTcgMTAwNjQ0CistLS0gYS9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUKKysrKyBiL2xpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZQorQEAgLTEsNiArMSwxMCBAQAorICMhL3Vzci9iaW4vZW52IHB5dGhvbgorIAorLWNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2NhcGFiaWxpdHkuaCcpCisraW1wb3J0IE9wdGlvbnMKKysKKytpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmNhcDoKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvY2FwYWJpbGl0eS5oJykKKysKKyBjb25mLkNIRUNLX0ZVTkNTKCdnZXRwd25hbV9yIGdldHB3dWlkX3IgZ2V0cHdlbnRfcicpCisgCisgIyBzb2xhcmlzIHZhcmllbnRzIG9mIGdldFhYZW50X3IKK2RpZmYgLS1naXQgYS9saWIvcmVwbGFjZS93c2NyaXB0IGIvbGliL3JlcGxhY2Uvd3NjcmlwdAoraW5kZXggMmY5NGQ0OS4uNjhiMmQzYSAxMDA2NDQKKy0tLSBhL2xpYi9yZXBsYWNlL3dzY3JpcHQKKysrKyBiL2xpYi9yZXBsYWNlL3dzY3JpcHQKK0BAIC0yMyw2ICsyMyw0MSBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKKyAgICAgb3B0LlBSSVZBVEVfRVhURU5TSU9OX0RFRkFVTFQoJycpCisgICAgIG9wdC5SRUNVUlNFKCdidWlsZHRvb2xzL3dhZnNhbWJhJykKKyAKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1hY2wnLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBhY2wiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2FjbCcpCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtYWNsJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGFjbCIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2FjbCcsIGRlZmF1bHQ9RmFsc2UpCisrCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtYXR0cicsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGF0dHIiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2F0dHInKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWF0dHInLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgYXR0ciIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2F0dHInLCBkZWZhdWx0PUZhbHNlKQorKworKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWxpYmFpbycsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGxpYmFpbyIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfbGliYWlvJykKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1saWJhaW8nLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgbGliYWlvIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfbGliYWlvJywgZGVmYXVsdD1GYWxzZSkKKysKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1saWJic2QnLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBsaWJic2QiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2xpYmJzZCcpCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtbGliYnNkJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGxpYmJzZCIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2xpYmJzZCcsIGRlZmF1bHQ9RmFsc2UpCisrCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtbGliY2FwJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgbGliY2FwIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9saWJjYXAnKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWxpYmNhcCcsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBsaWJjYXAiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9saWJjYXAnLCBkZWZhdWx0PUZhbHNlKQorKworIEBVdGlscy5ydW5fb25jZQorIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuUkVDVVJTRSgnYnVpbGR0b29scy93YWZzYW1iYScpCitAQCAtMzIsMTIgKzY3LDI1IEBAIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuREVGSU5FKCdIQVZFX0xJQlJFUExBQ0UnLCAxKQorICAgICBjb25mLkRFRklORSgnTElCUkVQTEFDRV9ORVRXT1JLX0NIRUNLUycsIDEpCisgCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGludXgvdHlwZXMuaCBjcnlwdC5oIGxvY2FsZS5oIGFjbC9saWJhY2wuaCBjb21wYXQuaCcpCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYWNsL2xpYmFjbC5oIGF0dHIveGF0dHIuaCBjb21wYXQuaCBjdHlwZS5oIGR1c3RhdC5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdsaW51eC90eXBlcy5oIGNyeXB0LmggbG9jYWxlLmggY29tcGF0LmgnKQorKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2NvbXBhdC5oIGN0eXBlLmggZHVzdGF0LmgnKQorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2ZjbnRsLmggZm5tYXRjaC5oIGdsb2IuaCBoaXN0b3J5Lmgga3JiNS5oIGxhbmdpbmZvLmgnKQorLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpYmFpby5oIGxvY2FsZS5oIG5kaXIuaCBwd2QuaCcpCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc2hhZG93Lmggc3lzL2FjbC5oJykKKy0gICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvYXR0cmlidXRlcy5oIGF0dHIvYXR0cmlidXRlcy5oIHN5cy9jYXBhYmlsaXR5Lmggc3lzL2Rpci5oIHN5cy9lcG9sbC5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdsb2NhbGUuaCBuZGlyLmggcHdkLmgnKQorKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3NoYWRvdy5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvYXR0cmlidXRlcy5oIHN5cy9kaXIuaCBzeXMvZXBvbGwuaCcpCisrCisrICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfYWNsOgorKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdhY2wvbGliYWNsLmggc3lzL2FjbC5oJykKKysKKysgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9hdHRyOgorKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdhdHRyL2F0dHJpYnV0ZXMuaCBhdHRyL3hhdHRyLmgnKQorKworKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmFpbzoKKysgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGliYWlvLmgnKQorKworKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmNhcDoKKysgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2NhcGFiaWxpdHkuaCcpCisrCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygncG9ydC5oJykKKyAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvZmNudGwuaCBzeXMvZmlsaW8uaCBzeXMvZmlsc3lzLmggc3lzL2ZzL3M1cGFyYW0uaCBzeXMvZnMvdngvcXVvdGEuaCcpCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2lkLmggc3lzL2lvY3RsLmggc3lzL2lwYy5oIHN5cy9tbWFuLmggc3lzL21vZGUuaCBzeXMvbmRpci5oIHN5cy9wcml2LmgnKQorQEAgLTczLDcgKzEyMSw5IEBAIGRlZiBjb25maWd1cmUoY29uZik6CisgCisgICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJywgaGVhZGVycz0ncnBjL3JwYy5oIHJwY3N2Yy95cF9wcm90LmgnLCBkZWZpbmU9J0hBVkVfUlBDU1ZDX1lQX1BST1RfSCcpCisgCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygndmFsZ3JpbmQuaCB2YWxncmluZC92YWxncmluZC5oIHZhbGdyaW5kL21lbWNoZWNrLmgnKQorKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX3ZhbGdyaW5kOgorKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCd2YWxncmluZC5oIHZhbGdyaW5kL3ZhbGdyaW5kLmggdmFsZ3JpbmQvbWVtY2hlY2suaCcpCisrCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbnNzX2NvbW1vbi5oIG5zc3dpdGNoLmggbnNfYXBpLmgnKQorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9leHRhdHRyLmggc3lzL2VhLmggc3lzL3Byb3BsaXN0Lmggc3lzL2NkZWZzLmgnKQorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3V0bXAuaCB1dG1weC5oIGxhc3Rsb2cuaCcpCitAQCAtMjY2LDIyICszMTYsMjAgQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKKyAKKyAgICAgY29uZi5DSEVDS19GVU5DUygncHJjdGwgZGlybmFtZSBiYXNlbmFtZScpCisgCistICAgIHN0cmxjcHlfaW5fYnNkID0gRmFsc2UKKy0KKy0gICAgIyBsaWJic2Qgb24gc29tZSBwbGF0Zm9ybXMgcHJvdmlkZXMgc3RybGNweSBhbmQgc3RybGNhdAorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnc3RybGNweSBzdHJsY2F0Jyk6CistICAgICAgICBpZiBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzdHJsY3B5IHN0cmxjYXQnLCAnYnNkJywgaGVhZGVycz0nYnNkL3N0cmluZy5oJywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tsaWJjPVRydWUpOgorLSAgICAgICAgICAgIHN0cmxjcHlfaW5fYnNkID0gVHJ1ZQorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnZ2V0cGVlcmVpZCcpOgorLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignZ2V0cGVlcmVpZCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ3NldHByb2N0aXRsZScsIGhlYWRlcnM9J3NldHByb2N0aXRsZS5oJyk6CistICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKy0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ3NldHByb2N0aXRsZV9pbml0Jyk6CistICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGVfaW5pdCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQorLQorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnY2xvc2Vmcm9tJyk6CistICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdjbG9zZWZyb20nLCAnYnNkJywgaGVhZGVycz0nYnNkL3VuaXN0ZC5oJykKKysgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJic2Q6CisrICAgICAgICAjIGxpYmJzZCBvbiBzb21lIHBsYXRmb3JtcyBwcm92aWRlcyBzdHJsY3B5IGFuZCBzdHJsY2F0CisrICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnc3RybGNweSBzdHJsY2F0Jyk6CisrICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc3RybGNweSBzdHJsY2F0JywgJ2JzZCcsIGhlYWRlcnM9J2JzZC9zdHJpbmcuaCcsCisrICAgICAgICAgICAgICAgICAgICBjaGVja2xpYmM9VHJ1ZSkKKysgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdnZXRwZWVyZWlkJyk6CisrICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignZ2V0cGVlcmVpZCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQorKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdzZXRwcm9jdGl0bGUnLCBoZWFkZXJzPSdzZXRwcm9jdGl0bGUuaCcpOgorKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQorKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ3NldHByb2N0aXRsZV9pbml0Jyk6CisrICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlX2luaXQnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKysKKysgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdjbG9zZWZyb20nKToKKysgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdjbG9zZWZyb20nLCAnYnNkJywgaGVhZGVycz0nYnNkL3VuaXN0ZC5oJykKKyAKKyAgICAgY29uZi5DSEVDS19DT0RFKCcnJworICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWNyZWQgY3JlZDsKK0BAIC02MzIsNyArNjgwLDcgQEAgcmVtb3ZlZWEgc2V0ZWEKKyAgICAgIyBsb29rIGZvciBhIG1ldGhvZCBvZiBmaW5kaW5nIHRoZSBsaXN0IG9mIG5ldHdvcmsgaW50ZXJmYWNlcworICAgICBmb3IgbWV0aG9kIGluIFsnSEFWRV9JRkFDRV9HRVRJRkFERFJTJywgJ0hBVkVfSUZBQ0VfQUlYJywgJ0hBVkVfSUZBQ0VfSUZDT05GJywgJ0hBVkVfSUZBQ0VfSUZSRVEnXToKKyAgICAgICAgIGJzZF9mb3Jfc3RybGNweSA9ICcnCistICAgICAgICBpZiBzdHJsY3B5X2luX2JzZDoKKysgICAgICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfbGliYnNkOgorICAgICAgICAgICAgIGJzZF9mb3Jfc3RybGNweSA9ICcgYnNkJworICAgICAgICAgaWYgY29uZi5DSEVDS19DT0RFKCcnJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkZWZpbmUgJXMgMQorZGlmZiAtLWdpdCBhL3dzY3JpcHQgYi93c2NyaXB0CitpbmRleCA4YWU1YmUzLi5hMTc4Y2M0IDEwMDY0NAorLS0tIGEvd3NjcmlwdAorKysrIGIvd3NjcmlwdAorQEAgLTMxLDYgKzMxLDEzIEBAIGRlZiBzZXRfb3B0aW9ucyhvcHQpOgorICAgICBvcHQuUkVDVVJTRSgnbGliL3JlcGxhY2UnKQorICAgICBvcHQudG9vbF9vcHRpb25zKCdweXRob24nKSAjIG9wdGlvbnMgZm9yIGRpc2FibGluZyBweWMgb3IgcHlvIGNvbXBpbGF0aW9uCisgCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtdmFsZ3JpbmQnLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiZW5hYmxlIHVzZSBvZiB2YWxncmluZCIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LXZhbGdyaW5kJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oImRpc2FibGUgdXNlIG9mIHZhbGdyaW5kIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnLCBkZWZhdWx0PUZhbHNlKQorKworIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuUkVDVVJTRSgnbGliL3RkYicpCisgICAgIGNvbmYuUkVDVVJTRSgnbGliL3RldmVudCcpCistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYl8xLjEuMjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYl8xLjEuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MDkxOWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGJfMS4xLjI5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotU1VNTUFSWSA9ICJIaWVyYXJjaGljYWwsIHJlZmVyZW5jZSBjb3VudGVkIG1lbW9yeSBwb29sIHN5c3RlbSB3aXRoIGRlc3RydWN0b3JzIgotSE9NRVBBR0UgPSAiaHR0cDovL2xkYi5zYW1iYS5vcmciCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEwtMy4wKyAmIExHUEwtMi4xKyAmIEdQTC0zLjArIgotCi1ERVBFTkRTICs9ICJsaWJ0ZGIgbGlidGFsbG9jIGxpYnRldmVudCBwb3B0IgotUkRFUEVORFNfcHlsZGIgKz0gInB5dGhvbiIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2FtYmEub3JnL2Z0cC9sZGIvbGRiLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9kby1ub3QtaW1wb3J0LXRhcmdldC1tb2R1bGUtd2hpbGUtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9sZGItQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbCwtLXdpdGhvdXQtYWNsLGFjbCIKLVBBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLCxvcGVubGRhcCIKLVBBQ0tBR0VDT05GSUdbbGliYWlvXSA9ICItLXdpdGgtbGliYWlvLC0td2l0aG91dC1saWJhaW8sbGliYWlvIgotUEFDS0FHRUNPTkZJR1tsaWJic2RdID0gIi0td2l0aC1saWJic2QsLS13aXRob3V0LWxpYmJzZCxsaWJic2QiCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwtLXdpdGhvdXQtbGliY2FwLGxpYmNhcCIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCi0KLVNSQ19VUkkgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xkYXAnLCAnJywgJ2ZpbGU6Ly9hdm9pZC1vcGVubGRhcC11bmxlc3Mtd2FudGVkLnBhdGNoJywgZCl9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9weWxkYi5oO2VuZGxpbmU9MjQ7bWQ1PWRmYmQyMzhjZWNhZDc2OTU3ZjdmODYwZmJlOWFkYWRlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL21hbi9sZGIuMy54bWw7YmVnaW5saW5lPTI2MTtlbmRsaW5lPTI2MjttZDU9MTM3ZjlmZDYxMDQwYzE1MDVkMWFhMTAxOTY2M2ZkMDggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvbGRiZHVtcC5jO2VuZGxpbmU9MTk7bWQ1PWE3ZDRmYzVkMWY3NTY3NmI0OWRmNDkxNTc1YTg2YTQyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWM5MGFiZmI5NGMxZTJhNjkzMzk5MzkyY2Y0Y2RkYjkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTlkODRmOWE1Yjc5OWY1MTliYTdiMjY4NWJiNDZmNWEyNmYxYmJmMDViN2ExNDRiMmY1ZTAxN2QwMWQ4MGY5NyIKLQotaW5oZXJpdCB3YWYtc2FtYmEKLQotUyA9ICIke1dPUktESVJ9L2xkYi0ke1BWfSIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcnBhdGggXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGgtaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgIC0tYnVuZGxlZC1saWJyYXJpZXM9Tk9ORSBcCi0gICAgICAgICAgICAgICAgIC0tYnVpbHRpbi1saWJyYXJpZXM9cmVwbGFjZSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1tb2R1bGVzZGlyPSR7bGliZGlyfS9sZGIvbW9kdWxlcyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1wcml2YXRlbGliZGlyPSR7bGliZGlyfS9sZGIgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fVwKLSAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VTID0rICJweWxkYiBweWxkYi1kYmcgcHlsZGItZGV2IgotCi1OT0FVVE9QQUNLQUdFREVCVUcgPSAiMSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9sZGIvKiIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtiaW5kaXJ9Ly5kZWJ1Zy8qIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9Ly5kZWJ1Zy8qIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xkYi8uZGVidWcvKiBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9sZGIvbW9kdWxlcy9sZGIvLmRlYnVnLyoiCi0KLUZJTEVTX3B5bGRiID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJweWxkYi11dGlsLnNvLiogXAotICAgICAgICAgICAgICAiCi1GSUxFU19weWxkYi1kYmcgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLy5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9Ly5kZWJ1Zy9saWJweWxkYi11dGlsLnNvLioiCi1GSUxFU19weWxkYi1kZXYgPSAiJHtsaWJkaXJ9L2xpYnB5bGRiLXV0aWwuc28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYl8xLjMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJsZGIvbGlibGRiXzEuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMTRjZGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYl8xLjMuMS5iYgpAQCAtMCwwICsxLDYzIEBACitTVU1NQVJZID0gIkhpZXJhcmNoaWNhbCwgcmVmZXJlbmNlIGNvdW50ZWQgbWVtb3J5IHBvb2wgc3lzdGVtIHdpdGggZGVzdHJ1Y3RvcnMiCitIT01FUEFHRSA9ICJodHRwOi8vbGRiLnNhbWJhLm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTC0zLjArICYgTEdQTC0yLjErICYgR1BMLTMuMCsiCisKK0RFUEVORFMgKz0gImxpYnRkYiBsaWJ0YWxsb2MgbGlidGV2ZW50IHBvcHQiCitSREVQRU5EU19weWxkYiArPSAicHl0aG9uIgorCitTUkNfVVJJID0gImh0dHA6Ly9zYW1iYS5vcmcvZnRwL2xkYi9sZGItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2RvLW5vdC1pbXBvcnQtdGFyZ2V0LW1vZHVsZS13aGlsZS1jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wdGlvbnMtMS4zLjEucGF0Y2ggXAorICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1hY2wsLS13aXRob3V0LWFjbCxhY2wiCitQQUNLQUdFQ09ORklHW2F0dHJdID0gIi0td2l0aC1hdHRyLC0td2l0aG91dC1hdHRyLGF0dHIiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIiwsb3BlbmxkYXAiCitQQUNLQUdFQ09ORklHW2xpYmFpb10gPSAiLS13aXRoLWxpYmFpbywtLXdpdGhvdXQtbGliYWlvLGxpYmFpbyIKK1BBQ0tBR0VDT05GSUdbbGliYnNkXSA9ICItLXdpdGgtbGliYnNkLC0td2l0aG91dC1saWJic2QsbGliYnNkIgorUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kIgorCitTUkNfVVJJICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsZGFwJywgJycsICdmaWxlOi8vYXZvaWQtb3BlbmxkYXAtdW5sZXNzLXdhbnRlZC5wYXRjaCcsIGQpfSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcHlsZGIuaDtlbmRsaW5lPTI0O21kNT1kZmJkMjM4Y2VjYWQ3Njk1N2Y3Zjg2MGZiZTlhZGFkZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYW4vbGRiLjMueG1sO2JlZ2lubGluZT0yNjE7ZW5kbGluZT0yNjI7bWQ1PTEzN2Y5ZmQ2MTA0MGMxNTA1ZDFhYTEwMTk2NjNmZDA4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rvb2xzL2xkYmR1bXAuYztlbmRsaW5lPTE5O21kNT1hN2Q0ZmM1ZDFmNzU2NzZiNDlkZjQ5MTU3NWE4NmE0MiIKKworU1JDX1VSSVttZDVzdW1dID0gImU1MjMzZjIwMmJjYTI3ZjZjZTg0NzRmYjhhZTY1OTgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIxOWYyYzlmNTVhZTBmNDZhYTVlYmFlYTBiZjFhNDdlYzFhYzEzNWUxZDc4YWYwZjYzMThjZjUwYmY2MmNiZDIiCisKK2luaGVyaXQgd2FmLXNhbWJhCisKK1MgPSAiJHtXT1JLRElSfS9sZGItJHtQVn0iCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPWNtb2NrYSBcCisgICAgICAgICAgICAgICAgIC0tYnVpbHRpbi1saWJyYXJpZXM9cmVwbGFjZSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1tb2R1bGVzZGlyPSR7bGliZGlyfS9sZGIvbW9kdWxlcyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1wcml2YXRlbGliZGlyPSR7bGliZGlyfS9sZGIgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fVwKKyAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VTID0rICJweWxkYiBweWxkYi1kYmcgcHlsZGItZGV2IgorCitOT0FVVE9QQUNLQUdFREVCVUcgPSAiMSIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9sZGIvKiIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtiaW5kaXJ9Ly5kZWJ1Zy8qIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9Ly5kZWJ1Zy8qIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xkYi8uZGVidWcvKiBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9sZGIvbW9kdWxlcy9sZGIvLmRlYnVnLyoiCisKK0ZJTEVTX3B5bGRiID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJweWxkYi11dGlsLnNvLiogXAorICAgICAgICAgICAgICAiCitGSUxFU19weWxkYi1kYmcgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLy5kZWJ1ZyBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9Ly5kZWJ1Zy9saWJweWxkYi11dGlsLnNvLioiCitGSUxFU19weWxkYi1kZXYgPSAiJHtsaWJkaXJ9L2xpYnB5bGRiLXV0aWwuc28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGFsbG9jL2xpYnRhbGxvYy9vcHRpb25zLTIuMS4xMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0YWxsb2MvbGlidGFsbG9jL29wdGlvbnMtMi4xLjEwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZjIxZTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGFsbG9jL2xpYnRhbGxvYy9vcHRpb25zLTIuMS4xMC5wYXRjaApAQCAtMCwwICsxLDE4NCBAQAorRnJvbSBlZmMxYjAyMTQ0ZjIzZmRmODRkYmM1ZmYxNTMwNzgxNWUwZjJhNDI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTQgU2VwIDIwMTYgMTE6MTE6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gdGFsbG9jOiBBZGQgY29uZmlndXJlIG9wdGlvbnMgZm9yIHBhY2thZ2VzCisKK0FkZCBjb25maWd1cmUgb3B0aW9ucyBmb3IgdGhlIGZvbGxvd2luZyBwYWNrYWdlczoKKyAtIGFjbAorIC0gYXR0cgorIC0gbGliYWlvCisgLSBsaWJic2QKKyAtIGxpYmNhcAorIC0gdmFsZ3JpbmQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBkZXRlcm1pbmlzdGljIGJ1aWxkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCitNb2RpZmllZCB0byBhcHBseSB0byB2ZXJzaW9uIDIuMS4xMC4KKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCistLS0KKyBsaWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUgfCAgNiArKy0KKyBsaWIvcmVwbGFjZS93c2NyaXB0ICAgICAgICAgICAgICAgICAgfCA4NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KKyB3c2NyaXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDc5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitJbmRleDogdGFsbG9jLTIuMS4xMS9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB0YWxsb2MtMi4xLjExLm9yaWcvbGliL3JlcGxhY2Uvc3lzdGVtL3dzY3JpcHRfY29uZmlndXJlCisrKysgdGFsbG9jLTIuMS4xMS9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUKK0BAIC0xLDYgKzEsMTAgQEAKKyAjIS91c3IvYmluL2VudiBweXRob24KKyAKKy1jb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9jYXBhYmlsaXR5LmgnKQorK2ltcG9ydCBPcHRpb25zCisrCisraWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJjYXA6CisrICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2NhcGFiaWxpdHkuaCcpCisrCisgY29uZi5DSEVDS19GVU5DUygnZ2V0cHduYW1fciBnZXRwd3VpZF9yIGdldHB3ZW50X3InKQorIAorICMgc29sYXJpcyB2YXJpZW50cyBvZiBnZXRYWGVudF9yCitJbmRleDogdGFsbG9jLTIuMS4xMS9saWIvcmVwbGFjZS93c2NyaXB0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdGFsbG9jLTIuMS4xMS5vcmlnL2xpYi9yZXBsYWNlL3dzY3JpcHQKKysrKyB0YWxsb2MtMi4xLjExL2xpYi9yZXBsYWNlL3dzY3JpcHQKK0BAIC0yMyw2ICsyMyw0MSBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKKyAgICAgb3B0LlBSSVZBVEVfRVhURU5TSU9OX0RFRkFVTFQoJycpCisgICAgIG9wdC5SRUNVUlNFKCdidWlsZHRvb2xzL3dhZnNhbWJhJykKKyAKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1hY2wnLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBhY2wiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2FjbCcpCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtYWNsJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGFjbCIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2FjbCcsIGRlZmF1bHQ9RmFsc2UpCisrCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtYXR0cicsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGF0dHIiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2F0dHInKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWF0dHInLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgYXR0ciIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2F0dHInLCBkZWZhdWx0PUZhbHNlKQorKworKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWxpYmFpbycsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGxpYmFpbyIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfbGliYWlvJykKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1saWJhaW8nLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgbGliYWlvIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfbGliYWlvJywgZGVmYXVsdD1GYWxzZSkKKysKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1saWJic2QnLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBsaWJic2QiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2xpYmJzZCcpCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtbGliYnNkJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGxpYmJzZCIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2xpYmJzZCcsIGRlZmF1bHQ9RmFsc2UpCisrCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtbGliY2FwJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgbGliY2FwIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9saWJjYXAnKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWxpYmNhcCcsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBsaWJjYXAiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9saWJjYXAnLCBkZWZhdWx0PUZhbHNlKQorKworIEBVdGlscy5ydW5fb25jZQorIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuUkVDVVJTRSgnYnVpbGR0b29scy93YWZzYW1iYScpCitAQCAtMzIsMTIgKzY3LDI1IEBAIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuREVGSU5FKCdIQVZFX0xJQlJFUExBQ0UnLCAxKQorICAgICBjb25mLkRFRklORSgnTElCUkVQTEFDRV9ORVRXT1JLX0NIRUNLUycsIDEpCisgCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGludXgvdHlwZXMuaCBjcnlwdC5oIGxvY2FsZS5oIGFjbC9saWJhY2wuaCBjb21wYXQuaCcpCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYWNsL2xpYmFjbC5oIGF0dHIveGF0dHIuaCBjb21wYXQuaCBjdHlwZS5oIGR1c3RhdC5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdsaW51eC90eXBlcy5oIGNyeXB0LmggbG9jYWxlLmggY29tcGF0LmgnKQorKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2NvbXBhdC5oIGN0eXBlLmggZHVzdGF0LmgnKQorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2ZjbnRsLmggZm5tYXRjaC5oIGdsb2IuaCBoaXN0b3J5Lmgga3JiNS5oIGxhbmdpbmZvLmgnKQorLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpYmFpby5oIGxvY2FsZS5oIG5kaXIuaCBwd2QuaCcpCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc2hhZG93Lmggc3lzL2FjbC5oJykKKy0gICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvYXR0cmlidXRlcy5oIGF0dHIvYXR0cmlidXRlcy5oIHN5cy9jYXBhYmlsaXR5Lmggc3lzL2Rpci5oIHN5cy9lcG9sbC5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdsb2NhbGUuaCBuZGlyLmggcHdkLmgnKQorKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3NoYWRvdy5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvYXR0cmlidXRlcy5oIHN5cy9kaXIuaCBzeXMvZXBvbGwuaCcpCisrCisrICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfYWNsOgorKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdhY2wvbGliYWNsLmggc3lzL2FjbC5oJykKKysKKysgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9hdHRyOgorKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdhdHRyL2F0dHJpYnV0ZXMuaCBhdHRyL3hhdHRyLmgnKQorKworKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmFpbzoKKysgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGliYWlvLmgnKQorKworKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmNhcDoKKysgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2NhcGFiaWxpdHkuaCcpCisrCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygncG9ydC5oJykKKyAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvZmNudGwuaCBzeXMvZmlsaW8uaCBzeXMvZmlsc3lzLmggc3lzL2ZzL3M1cGFyYW0uaCBzeXMvZnMvdngvcXVvdGEuaCcpCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2lkLmggc3lzL2lvY3RsLmggc3lzL2lwYy5oIHN5cy9tbWFuLmggc3lzL21vZGUuaCBzeXMvbmRpci5oIHN5cy9wcml2LmgnKQorQEAgLTczLDcgKzEyMSw5IEBAIGRlZiBjb25maWd1cmUoY29uZik6CisgCisgICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJywgaGVhZGVycz0ncnBjL3JwYy5oIHJwY3N2Yy95cF9wcm90LmgnLCBkZWZpbmU9J0hBVkVfUlBDU1ZDX1lQX1BST1RfSCcpCisgCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygndmFsZ3JpbmQuaCB2YWxncmluZC92YWxncmluZC5oIHZhbGdyaW5kL21lbWNoZWNrLmgnKQorKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX3ZhbGdyaW5kOgorKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCd2YWxncmluZC5oIHZhbGdyaW5kL3ZhbGdyaW5kLmggdmFsZ3JpbmQvbWVtY2hlY2suaCcpCisrCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbnNzX2NvbW1vbi5oIG5zc3dpdGNoLmggbnNfYXBpLmgnKQorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9leHRhdHRyLmggc3lzL2VhLmggc3lzL3Byb3BsaXN0Lmggc3lzL2NkZWZzLmgnKQorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3V0bXAuaCB1dG1weC5oIGxhc3Rsb2cuaCcpCitAQCAtMjY3LDIxICszMTcsMjEgQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKKyAgICAgY29uZi5DSEVDS19GVU5DUygncHJjdGwgZGlybmFtZSBiYXNlbmFtZScpCisgCisgICAgIHN0cmxjcHlfaW5fYnNkID0gRmFsc2UKKy0KKy0gICAgIyBsaWJic2Qgb24gc29tZSBwbGF0Zm9ybXMgcHJvdmlkZXMgc3RybGNweSBhbmQgc3RybGNhdAorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnc3RybGNweSBzdHJsY2F0Jyk6CistICAgICAgICBpZiBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzdHJsY3B5IHN0cmxjYXQnLCAnYnNkJywgaGVhZGVycz0nYnNkL3N0cmluZy5oJywKKysgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJic2Q6CisrICAgICAgICAjIGxpYmJzZCBvbiBzb21lIHBsYXRmb3JtcyBwcm92aWRlcyBzdHJsY3B5IGFuZCBzdHJsY2F0CisrICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnc3RybGNweSBzdHJsY2F0Jyk6CisrICAgICAgICAgICAgaWYgY29uZi5DSEVDS19GVU5DU19JTignc3RybGNweSBzdHJsY2F0JywgJ2JzZCcsIGhlYWRlcnM9J2JzZC9zdHJpbmcuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrbGliYz1UcnVlKToKKy0gICAgICAgICAgICBzdHJsY3B5X2luX2JzZCA9IFRydWUKKy0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ2dldHBlZXJlaWQnKToKKy0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ2dldHBlZXJlaWQnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKy0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdzZXRwcm9jdGl0bGUnLCBoZWFkZXJzPSdzZXRwcm9jdGl0bGUuaCcpOgorLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCistICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdzZXRwcm9jdGl0bGVfaW5pdCcpOgorLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlX2luaXQnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKysgICAgICAgICAgICAgICAgc3RybGNweV9pbl9ic2QgPSBUcnVlCisrICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnZ2V0cGVlcmVpZCcpOgorKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ2dldHBlZXJlaWQnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKysgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnc2V0cHJvY3RpdGxlJywgaGVhZGVycz0nc2V0cHJvY3RpdGxlLmgnKToKKysgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKysgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdzZXRwcm9jdGl0bGVfaW5pdCcpOgorKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZV9pbml0JywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCisgCistICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdjbG9zZWZyb20nKToKKy0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ2Nsb3NlZnJvbScsICdic2QnLCBoZWFkZXJzPSdic2QvdW5pc3RkLmgnKQorKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ2Nsb3NlZnJvbScpOgorKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ2Nsb3NlZnJvbScsICdic2QnLCBoZWFkZXJzPSdic2QvdW5pc3RkLmgnKQorIAorICAgICBjb25mLkNIRUNLX0NPREUoJycnCisgICAgICAgICAgICAgICAgIHN0cnVjdCB1Y3JlZCBjcmVkOworSW5kZXg6IHRhbGxvYy0yLjEuMTEvd3NjcmlwdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHRhbGxvYy0yLjEuMTEub3JpZy93c2NyaXB0CisrKysgdGFsbG9jLTIuMS4xMS93c2NyaXB0CitAQCAtMzIsNyArMzIsMTIgQEAgZGVmIHNldF9vcHRpb25zKG9wdCk6CisgICAgICAgICBvcHQuYWRkX29wdGlvbignLS1lbmFibGUtdGFsbG9jLWNvbXBhdDEnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oIkJ1aWxkIHRhbGxvYyAxLngueCBjb21wYXQgbGlicmFyeSBbRmFsc2VdIiksCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdUQUxMT0NfQ09NUEFUMScsIGRlZmF1bHQ9RmFsc2UpCistCisrICAgICAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLXZhbGdyaW5kJywKKysgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCJlbmFibGUgdXNlIG9mIHZhbGdyaW5kIiksCisrICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnKQorKyAgICAgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC12YWxncmluZCcsCisrICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgiZGlzYWJsZSB1c2Ugb2YgdmFsZ3JpbmQiKSwKKysgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnLCBkZWZhdWx0PUZhbHNlKQorIAorIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuUkVDVVJTRSgnbGliL3JlcGxhY2UnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRhbGxvYy9saWJ0YWxsb2MvdGFsbG9jLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGFsbG9jL2xpYnRhbGxvYy90YWxsb2MtQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZiMjQwNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGFsbG9jL2xpYnRhbGxvYy90YWxsb2MtQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi1Gcm9tIGVmYzFiMDIxNDRmMjNmZGY4NGRiYzVmZjE1MzA3ODE1ZTBmMmE0MjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxNCBTZXAgMjAxNiAxMToxMTozNSArMDgwMAotU3ViamVjdDogW1BBVENIXSB0YWxsb2M6IEFkZCBjb25maWd1cmUgb3B0aW9ucyBmb3IgcGFja2FnZXMKLQotQWRkIGNvbmZpZ3VyZSBvcHRpb25zIGZvciB0aGUgZm9sbG93aW5nIHBhY2thZ2VzOgotIC0gYWNsCi0gLSBhdHRyCi0gLSBsaWJhaW8KLSAtIGxpYmJzZAotIC0gbGliY2FwCi0gLSB2YWxncmluZAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIGRldGVybWluaXN0aWMgYnVpbGQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUgfCAgNiArKy0KLSBsaWIvcmVwbGFjZS93c2NyaXB0ICAgICAgICAgICAgICAgICAgfCA4NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KLSB3c2NyaXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDc5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3JlcGxhY2Uvc3lzdGVtL3dzY3JpcHRfY29uZmlndXJlIGIvbGliL3JlcGxhY2Uvc3lzdGVtL3dzY3JpcHRfY29uZmlndXJlCi1pbmRleCAyMDM1NDc0Li4xMGY5YWU3IDEwMDY0NAotLS0tIGEvbGliL3JlcGxhY2Uvc3lzdGVtL3dzY3JpcHRfY29uZmlndXJlCi0rKysgYi9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUKLUBAIC0xLDYgKzEsMTAgQEAKLSAjIS91c3IvYmluL2VudiBweXRob24KLSAKLS1jb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9jYXBhYmlsaXR5LmgnKQotK2ltcG9ydCBPcHRpb25zCi0rCi0raWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJjYXA6Ci0rICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2NhcGFiaWxpdHkuaCcpCi0rCi0gY29uZi5DSEVDS19GVU5DUygnZ2V0cHduYW1fciBnZXRwd3VpZF9yIGdldHB3ZW50X3InKQotIAotICMgc29sYXJpcyB2YXJpZW50cyBvZiBnZXRYWGVudF9yCi1kaWZmIC0tZ2l0IGEvbGliL3JlcGxhY2Uvd3NjcmlwdCBiL2xpYi9yZXBsYWNlL3dzY3JpcHQKLWluZGV4IGZjNDNlMWEuLjEyZDJhNzAgMTAwNjQ0Ci0tLS0gYS9saWIvcmVwbGFjZS93c2NyaXB0Ci0rKysgYi9saWIvcmVwbGFjZS93c2NyaXB0Ci1AQCAtMjMsNiArMjMsNDEgQEAgZGVmIHNldF9vcHRpb25zKG9wdCk6Ci0gICAgIG9wdC5QUklWQVRFX0VYVEVOU0lPTl9ERUZBVUxUKCcnKQotICAgICBvcHQuUkVDVVJTRSgnYnVpbGR0b29scy93YWZzYW1iYScpCi0gCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtYWNsJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgYWNsIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9hY2wnKQotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWFjbCcsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBhY2wiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9hY2wnLCBkZWZhdWx0PUZhbHNlKQotKwotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWF0dHInLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBhdHRyIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9hdHRyJykKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1hdHRyJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGF0dHIiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9hdHRyJywgZGVmYXVsdD1GYWxzZSkKLSsKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1saWJhaW8nLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBsaWJhaW8iKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2xpYmFpbycpCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtbGliYWlvJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGxpYmFpbyIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2xpYmFpbycsIGRlZmF1bHQ9RmFsc2UpCi0rCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtbGliYnNkJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgbGliYnNkIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9saWJic2QnKQotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWxpYmJzZCcsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBsaWJic2QiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9saWJic2QnLCBkZWZhdWx0PUZhbHNlKQotKwotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWxpYmNhcCcsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGxpYmNhcCIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfbGliY2FwJykKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1saWJjYXAnLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgbGliY2FwIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfbGliY2FwJywgZGVmYXVsdD1GYWxzZSkKLSsKLSBAVXRpbHMucnVuX29uY2UKLSBkZWYgY29uZmlndXJlKGNvbmYpOgotICAgICBjb25mLlJFQ1VSU0UoJ2J1aWxkdG9vbHMvd2Fmc2FtYmEnKQotQEAgLTMyLDEyICs2NywyNSBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgotICAgICBjb25mLkRFRklORSgnSEFWRV9MSUJSRVBMQUNFJywgMSkKLSAgICAgY29uZi5ERUZJTkUoJ0xJQlJFUExBQ0VfTkVUV09SS19DSEVDS1MnLCAxKQotIAotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpbnV4L3R5cGVzLmggY3J5cHQuaCBsb2NhbGUuaCBhY2wvbGliYWNsLmggY29tcGF0LmgnKQotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2FjbC9saWJhY2wuaCBhdHRyL3hhdHRyLmggY29tcGF0LmggY3R5cGUuaCBkdXN0YXQuaCcpCi0rICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGludXgvdHlwZXMuaCBjcnlwdC5oIGxvY2FsZS5oIGNvbXBhdC5oJykKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdjb21wYXQuaCBjdHlwZS5oIGR1c3RhdC5oJykKLSAgICAgY29uZi5DSEVDS19IRUFERVJTKCdmY250bC5oIGZubWF0Y2guaCBnbG9iLmggaGlzdG9yeS5oIGtyYjUuaCBsYW5naW5mby5oJykKLS0gICAgY29uZi5DSEVDS19IRUFERVJTKCdsaWJhaW8uaCBsb2NhbGUuaCBuZGlyLmggcHdkLmgnKQotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3NoYWRvdy5oIHN5cy9hY2wuaCcpCi0tICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2F0dHJpYnV0ZXMuaCBhdHRyL2F0dHJpYnV0ZXMuaCBzeXMvY2FwYWJpbGl0eS5oIHN5cy9kaXIuaCBzeXMvZXBvbGwuaCcpCi0rICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbG9jYWxlLmggbmRpci5oIHB3ZC5oJykKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdzaGFkb3cuaCcpCi0rICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2F0dHJpYnV0ZXMuaCBzeXMvZGlyLmggc3lzL2Vwb2xsLmgnKQotKwotKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2FjbDoKLSsgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYWNsL2xpYmFjbC5oIHN5cy9hY2wuaCcpCi0rCi0rICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfYXR0cjoKLSsgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYXR0ci9hdHRyaWJ1dGVzLmggYXR0ci94YXR0ci5oJykKLSsKLSsgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJhaW86Ci0rICAgICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpYmFpby5oJykKLSsKLSsgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJjYXA6Ci0rICAgICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9jYXBhYmlsaXR5LmgnKQotKwotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3BvcnQuaCcpCi0gICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2ZjbnRsLmggc3lzL2ZpbGlvLmggc3lzL2ZpbHN5cy5oIHN5cy9mcy9zNXBhcmFtLmggc3lzL2ZzL3Z4L3F1b3RhLmgnKQotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9pZC5oIHN5cy9pb2N0bC5oIHN5cy9pcGMuaCBzeXMvbW1hbi5oIHN5cy9tb2RlLmggc3lzL25kaXIuaCBzeXMvcHJpdi5oJykKLUBAIC03Myw3ICsxMjEsOSBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgotIAotICAgICBjb25mLkNIRUNLX0NPREUoJycsIGhlYWRlcnM9J3JwYy9ycGMuaCBycGNzdmMveXBfcHJvdC5oJywgZGVmaW5lPSdIQVZFX1JQQ1NWQ19ZUF9QUk9UX0gnKQotIAotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3ZhbGdyaW5kLmggdmFsZ3JpbmQvdmFsZ3JpbmQuaCB2YWxncmluZC9tZW1jaGVjay5oJykKLSsgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV92YWxncmluZDoKLSsgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygndmFsZ3JpbmQuaCB2YWxncmluZC92YWxncmluZC5oIHZhbGdyaW5kL21lbWNoZWNrLmgnKQotKwotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ25zc19jb21tb24uaCBuc3N3aXRjaC5oIG5zX2FwaS5oJykKLSAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvZXh0YXR0ci5oIHN5cy9lYS5oIHN5cy9wcm9wbGlzdC5oIHN5cy9jZGVmcy5oJykKLSAgICAgY29uZi5DSEVDS19IRUFERVJTKCd1dG1wLmggdXRtcHguaCBsYXN0bG9nLmgnKQotQEAgLTI0OCwxNyArMjk4LDE4IEBAIGRlZiBjb25maWd1cmUoY29uZik6Ci0gCi0gICAgIGNvbmYuQ0hFQ0tfRlVOQ1MoJ3ByY3RsIGRpcm5hbWUgYmFzZW5hbWUnKQotIAotLSAgICAjIGxpYmJzZCBvbiBzb21lIHBsYXRmb3JtcyBwcm92aWRlcyBzdHJsY3B5IGFuZCBzdHJsY2F0Ci0tICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdzdHJsY3B5IHN0cmxjYXQnKToKLS0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3N0cmxjcHkgc3RybGNhdCcsICdic2QnLCBoZWFkZXJzPSdic2Qvc3RyaW5nLmgnLAotLSAgICAgICAgICAgICAgICBjaGVja2xpYmM9VHJ1ZSkKLS0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ2dldHBlZXJlaWQnKToKLS0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ2dldHBlZXJlaWQnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKLS0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdzZXRwcm9jdGl0bGUnLCBoZWFkZXJzPSdzZXRwcm9jdGl0bGUuaCcpOgotLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCi0tCi0tICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdjbG9zZWZyb20nKToKLS0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ2Nsb3NlZnJvbScsICdic2QnLCBoZWFkZXJzPSdic2QvdW5pc3RkLmgnKQotKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmJzZDoKLSsgICAgICAgICMgbGliYnNkIG9uIHNvbWUgcGxhdGZvcm1zIHByb3ZpZGVzIHN0cmxjcHkgYW5kIHN0cmxjYXQKLSsgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdzdHJsY3B5IHN0cmxjYXQnKToKLSsgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzdHJsY3B5IHN0cmxjYXQnLCAnYnNkJywgaGVhZGVycz0nYnNkL3N0cmluZy5oJywKLSsgICAgICAgICAgICAgICAgICAgIGNoZWNrbGliYz1UcnVlKQotKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ2dldHBlZXJlaWQnKToKLSsgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdnZXRwZWVyZWlkJywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCi0rICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ3NldHByb2N0aXRsZScsIGhlYWRlcnM9J3NldHByb2N0aXRsZS5oJyk6Ci0rICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCi0rCi0rICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnY2xvc2Vmcm9tJyk6Ci0rICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignY2xvc2Vmcm9tJywgJ2JzZCcsIGhlYWRlcnM9J2JzZC91bmlzdGQuaCcpCi0gCi0gICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJycKLSAgICAgICAgICAgICAgICAgc3RydWN0IHVjcmVkIGNyZWQ7Ci1kaWZmIC0tZ2l0IGEvd3NjcmlwdCBiL3dzY3JpcHQKLWluZGV4IDQxZjNiZTcuLjU1NmMxYzggMTAwNjQ0Ci0tLS0gYS93c2NyaXB0Ci0rKysgYi93c2NyaXB0Ci1AQCAtMzUsNyArMzUsMTIgQEAgZGVmIHNldF9vcHRpb25zKG9wdCk6Ci0gICAgICAgICBvcHQuYWRkX29wdGlvbignLS1kaXNhYmxlLXB5dGhvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgiZGlzYWJsZSB0aGUgcHl0YWxsb2MgbW9kdWxlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdkaXNhYmxlX3B5dGhvbicsIGRlZmF1bHQ9RmFsc2UpCi0tCi0rICAgICAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLXZhbGdyaW5kJywKLSsgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCJlbmFibGUgdXNlIG9mIHZhbGdyaW5kIiksCi0rICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnKQotKyAgICAgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC12YWxncmluZCcsCi0rICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgiZGlzYWJsZSB1c2Ugb2YgdmFsZ3JpbmQiKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnLCBkZWZhdWx0PUZhbHNlKQotIAotIGRlZiBjb25maWd1cmUoY29uZik6Ci0gICAgIGNvbmYuUkVDVVJTRSgnbGliL3JlcGxhY2UnKQotLS0gCi0yLjguMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGFsbG9jL2xpYnRhbGxvY18yLjEuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGFsbG9jL2xpYnRhbGxvY18yLjEuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ4Y2Y0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0YWxsb2MvbGlidGFsbG9jXzIuMS4xMS5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkhpZXJhcmNoaWNhbCwgcmVmZXJlbmNlIGNvdW50ZWQgbWVtb3J5IHBvb2wgc3lzdGVtIHdpdGggZGVzdHJ1Y3RvcnMiCitIT01FUEFHRSA9ICJodHRwOi8vdGFsbG9jLnNhbWJhLm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTC0zLjArICYgR1BMLTMuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90YWxsb2MuaDtiZWdpbmxpbmU9MztlbmRsaW5lPTI3O21kNT1hMzAxNzEyNzgyY2FkNmRkNmQ1MjI4YmZhNzgyNTI0OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9weXRhbGxvYy5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PTJjNDk4Y2M2ZjIyNjM2NzI0ODMyMzdiMjBmNDZiNDNkIgorCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zYW1iYS5vcmcvZnRwL3RhbGxvYy90YWxsb2MtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL29wdGlvbnMtMi4xLjEwLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NTI1OTZmOTA0Y2EyYjEwMzIyYmRhYWJmMTQ3YTcyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MzllYjM1NTU2YTBhZjk5OTEyM2M0ZDg4M2U3OWJlMDVmZjlmMDBhYjRmOWU0YWMyZTU3NzVmOWM1ZWVlZWQzIgorCitpbmhlcml0IHdhZi1zYW1iYQorCitQQUNLQUdFQ09ORklHID8/PSAiXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbCwtLXdpdGhvdXQtYWNsLGFjbCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKK1BBQ0tBR0VDT05GSUdbbGliYWlvXSA9ICItLXdpdGgtbGliYWlvLC0td2l0aG91dC1saWJhaW8sbGliYWlvIgorUEFDS0FHRUNPTkZJR1tsaWJic2RdID0gIi0td2l0aC1saWJic2QsLS13aXRob3V0LWxpYmJzZCxsaWJic2QiCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwtLXdpdGhvdXQtbGliY2FwLGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCisKK1NSQ19VUkkgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2F0dHInLCAnJywgJ2ZpbGU6Ly9hdm9pZC1hdHRyLXVubGVzcy13YW50ZWQucGF0Y2gnLCBkKX0iCisKK1MgPSAiJHtXT1JLRElSfS90YWxsb2MtJHtQVn0iCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPU5PTkUgXAorICAgICAgICAgICAgICAgICAtLWJ1aWx0aW4tbGlicmFyaWVzPXJlcGxhY2UgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc2lsZW50LXJ1bGVzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmljb252PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH1cCisgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFUyArPSAicHl0YWxsb2MgcHl0YWxsb2MtZGJnIHB5dGFsbG9jLWRldiIKKworRklMRVNfcHl0YWxsb2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLyogXAorICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnB5dGFsbG9jLXV0aWwuc28uMiBcCisgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicHl0YWxsb2MtdXRpbC5zby4yLjEuMSBcCisgICAgICAgICAgICAgICAgICIKK0ZJTEVTX3B5dGFsbG9jLWRiZyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vLmRlYnVnL2xpYnB5dGFsbG9jLXV0aWwuc28uMi4xLjEiCitGSUxFU19weXRhbGxvYy1kZXYgPSAiJHtsaWJkaXJ9L2xpYnB5dGFsbG9jLXV0aWwuc28iCitSREVQRU5EU19weXRhbGxvYyA9ICJweXRob24iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGFsbG9jL2xpYnRhbGxvY18yLjEuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0YWxsb2MvbGlidGFsbG9jXzIuMS45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODBhZjUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0YWxsb2MvbGlidGFsbG9jXzIuMS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJIaWVyYXJjaGljYWwsIHJlZmVyZW5jZSBjb3VudGVkIG1lbW9yeSBwb29sIHN5c3RlbSB3aXRoIGRlc3RydWN0b3JzIgotSE9NRVBBR0UgPSAiaHR0cDovL3RhbGxvYy5zYW1iYS5vcmciCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEwtMy4wKyAmIEdQTC0zLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdGFsbG9jLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0yNzttZDU9YTMwMTcxMjc4MmNhZDZkZDZkNTIyOGJmYTc4MjUyNDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcHl0YWxsb2MuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT0yYzQ5OGNjNmYyMjYzNjcyNDgzMjM3YjIwZjQ2YjQzZCIKLQotCi1TUkNfVVJJID0gImh0dHBzOi8vc2FtYmEub3JnL2Z0cC90YWxsb2MvdGFsbG9jLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly90YWxsb2MtQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMTliYTE0ZWJhOTdkNzlhMTY5ZmE5MmVhODI0ZDJiOWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjBhYWQ0Y2I4OGEzMzIyMjA3YzgyMTM2ZGRjMDdiZWQ0OGEzN2MyYzIxZjgyOTYyZDZjNWNjYjQyMjcxMTA2MiIKLQotaW5oZXJpdCB3YWYtc2FtYmEKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIlwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1hY2wsLS13aXRob3V0LWFjbCxhY2wiCi1QQUNLQUdFQ09ORklHW2F0dHJdID0gIi0td2l0aC1hdHRyLC0td2l0aG91dC1hdHRyLGF0dHIiCi1QQUNLQUdFQ09ORklHW2xpYmFpb10gPSAiLS13aXRoLWxpYmFpbywtLXdpdGhvdXQtbGliYWlvLGxpYmFpbyIKLVBBQ0tBR0VDT05GSUdbbGliYnNkXSA9ICItLXdpdGgtbGliYnNkLC0td2l0aG91dC1saWJic2QsbGliYnNkIgotUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kIgotCi1TUkNfVVJJICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhdHRyJywgJycsICdmaWxlOi8vYXZvaWQtYXR0ci11bmxlc3Mtd2FudGVkLnBhdGNoJywgZCl9IgotCi1TID0gIiR7V09SS0RJUn0vdGFsbG9jLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAgLS1idW5kbGVkLWxpYnJhcmllcz1OT05FIFwKLSAgICAgICAgICAgICAgICAgLS1idWlsdGluLWxpYnJhcmllcz1yZXBsYWNlIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXNpbGVudC1ydWxlcyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1saWJpY29udj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9XAotICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRVMgKz0gInB5dGFsbG9jIHB5dGFsbG9jLWRiZyBweXRhbGxvYy1kZXYiCi0KLUZJTEVTX3B5dGFsbG9jID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIFwKLSAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJweXRhbGxvYy11dGlsLnNvLjIgXAotICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnB5dGFsbG9jLXV0aWwuc28uMi4xLjEgXAotICAgICAgICAgICAgICAgICAiCi1GSUxFU19weXRhbGxvYy1kYmcgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLy5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9Ly5kZWJ1Zy9saWJweXRhbGxvYy11dGlsLnNvLjIuMS4xIgotRklMRVNfcHl0YWxsb2MtZGV2ID0gIiR7bGliZGlyfS9saWJweXRhbGxvYy11dGlsLnNvIgotUkRFUEVORFNfcHl0YWxsb2MgPSAicHl0aG9uIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGJfMS4zLjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGJfMS4zLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTIyYjkzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuMy4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIHRkYiBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3RkYi5zYW1iYS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMLTMuMCsgJiBHUEwtMy4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdG9vbHMvdGRiZHVtcC5jO2VuZGxpbmU9MTg7bWQ1PWI1OWNkNDVhYTg2MjQ1NzgxMjZhOGM5OGY0ODAxOGM0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdGRiLmg7ZW5kbGluZT0yNzttZDU9ZjViYjU0NDY0MWQzMDgxODIxYmNjMWRkNTgzMTBiZTYiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9zYW1iYS5vcmcvZnRwL3RkYi90ZGItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay14c2x0cHJvYy1tYW5wYWdlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZGItQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkZDIzZjJiYThjYTJiZmRjYjgzM2JjNzlkNWI1YWM2ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYTdkNGJiNzkyMjk0NjBkZjUzMGM3ZTFjNzA2N2JhOWZiOWQzNzBhYTYxZmZmNTM3ZmRjMmJkZjkxOGFjYmU5IgotCi1QQUNLQUdFQ09ORklHID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbCwtLXdpdGhvdXQtYWNsLGFjbCIKLVBBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKLVBBQ0tBR0VDT05GSUdbbGliYWlvXSA9ICItLXdpdGgtbGliYWlvLC0td2l0aG91dC1saWJhaW8sbGliYWlvIgotUEFDS0FHRUNPTkZJR1tsaWJic2RdID0gIi0td2l0aC1saWJic2QsLS13aXRob3V0LWxpYmJzZCxsaWJic2QiCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwtLXdpdGhvdXQtbGliY2FwLGxpYmNhcCIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCi0KLVMgPSAiJHtXT1JLRElSfS90ZGItJHtQVn0iCi0KLWluaGVyaXQgd2FmLXNhbWJhCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAgICAgICAgICAgICAgLS1idW5kbGVkLWxpYnJhcmllcz1OT05FIFwKLSAgICAgICAgICAgICAgICAgLS1idWlsdGluLWxpYnJhcmllcz1yZXBsYWNlIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmljb252PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH1cCi0gICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFUyArPSAidGRiLXRvb2xzIHB5dGhvbi10ZGIgcHl0aG9uLXRkYi1kYmciCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLioiCi1GSUxFU190ZGItdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19weXRob24tdGRiID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIgotRklMRVNfcHl0aG9uLXRkYi1kYmcgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLy5kZWJ1Zy8qIgotUkRFUEVORFNfcHl0aG9uLXRkYiA9ICJweXRob24iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYl8xLjMuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYl8xLjMuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAyYTMwNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuMy4xNS5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIlRoZSB0ZGIgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly90ZGIuc2FtYmEub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTC0zLjArICYgR1BMLTMuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3Rvb2xzL3RkYmR1bXAuYztlbmRsaW5lPTE4O21kNT1iNTljZDQ1YWE4NjI0NTc4MTI2YThjOThmNDgwMThjNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3RkYi5oO2VuZGxpbmU9Mjc7bWQ1PWY1YmI1NDQ2NDFkMzA4MTgyMWJjYzFkZDU4MzEwYmU2IgorCitTUkNfVVJJID0gImh0dHBzOi8vc2FtYmEub3JnL2Z0cC90ZGIvdGRiLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjBlY2UzOTk2YWNjOGQ4NWI2ZjcxMzE5OWRhOTcxYTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjRhMWJmMzgzMzYwMWJkOWYxMGFmZjM2M2NiNzUwODYwYWVmOWNlNWI0NjE3OTg5MjM5OTIzMTkyZjk0NjcyOCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1hY2wsLS13aXRob3V0LWFjbCxhY2wiCitQQUNLQUdFQ09ORklHW2F0dHJdID0gIi0td2l0aC1hdHRyLC0td2l0aG91dC1hdHRyLGF0dHIiCitQQUNLQUdFQ09ORklHW2xpYmFpb10gPSAiLS13aXRoLWxpYmFpbywtLXdpdGhvdXQtbGliYWlvLGxpYmFpbyIKK1BBQ0tBR0VDT05GSUdbbGliYnNkXSA9ICItLXdpdGgtbGliYnNkLC0td2l0aG91dC1saWJic2QsbGliYnNkIgorUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kIgorCitTID0gIiR7V09SS0RJUn0vdGRiLSR7UFZ9IgorCitpbmhlcml0IHdhZi1zYW1iYQorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgIC0tYnVuZGxlZC1saWJyYXJpZXM9Tk9ORSBcCisgICAgICAgICAgICAgICAgIC0tYnVpbHRpbi1saWJyYXJpZXM9cmVwbGFjZSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1saWJpY29udj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9XAorICAgICAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gInRkYi10b29scyBweXRob24tdGRiIHB5dGhvbi10ZGItZGJnIgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKi5zby4qIgorRklMRVNfdGRiLXRvb2xzID0gIiR7YmluZGlyfS8qIgorRklMRVNfcHl0aG9uLXRkYiA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvKiIKK0ZJTEVTX3B5dGhvbi10ZGItZGJnID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8uZGVidWcvKiIKK1JERVBFTkRTX3B5dGhvbi10ZGIgPSAicHl0aG9uIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnQvYXZvaWQtYXR0ci11bmxlc3Mtd2FudGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnQvYXZvaWQtYXR0ci11bmxlc3Mtd2FudGVkLnBhdGNoCmluZGV4IDJmYzU1MjMuLjM1ODkwMzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZXZlbnQvbGlidGV2ZW50L2F2b2lkLWF0dHItdW5sZXNzLXdhbnRlZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudC9hdm9pZC1hdHRyLXVubGVzcy13YW50ZWQucGF0Y2gKQEAgLTEsMjAgKzEsMjIgQEAKLS0tLSBhL2xpYi9yZXBsYWNlL3dzY3JpcHQJMjAxNS0xMS0xOCAxNTo0MDoxOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL2xpYi9yZXBsYWNlL3dzY3JpcHQJMjAxNS0xMS0xOCAxNTo0ODowOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC02MTgsOCArNjE4LDYgQEAKK2RpZmYgLS1naXQgYS9saWIvcmVwbGFjZS93c2NyaXB0IGIvbGliL3JlcGxhY2Uvd3NjcmlwdAoraW5kZXggMDc5NzYxZC4uMDdlMDEwNCAxMDA2NDQKKy0tLSBhL2xpYi9yZXBsYWNlL3dzY3JpcHQKKysrKyBiL2xpYi9yZXBsYWNlL3dzY3JpcHQKK0BAIC03OTMsOCArNzkzLDYgQEAgZGVmIGJ1aWxkKGJsZCk6CiAgICAgIGlmIG5vdCBibGQuQ09ORklHX1NFVCgnSEFWRV9JTkVUX0FUT04nKTogICAgIFJFUExBQ0VfU09VUkNFICs9ICcgaW5ldF9hdG9uLmMnCiAgICAgIGlmIG5vdCBibGQuQ09ORklHX1NFVCgnSEFWRV9JTkVUX05UT1AnKTogICAgIFJFUExBQ0VfU09VUkNFICs9ICcgaW5ldF9udG9wLmMnCiAgICAgIGlmIG5vdCBibGQuQ09ORklHX1NFVCgnSEFWRV9JTkVUX1BUT04nKTogICAgIFJFUExBQ0VfU09VUkNFICs9ICcgaW5ldF9wdG9uLmMnCiAtICAgIGlmIG5vdCBibGQuQ09ORklHX1NFVCgnSEFWRV9HRVRYQVRUUicpIG9yIGJsZC5DT05GSUdfU0VUKCdYQVRUUl9BRERJVElPTkFMX09QVElPTlMnKToKIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVQTEFDRV9TT1VSQ0UgKz0gJyB4YXR0ci5jJwogIAotICAgICBibGQuU0FNQkFfTElCUkFSWSgncmVwbGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1SRVBMQUNFX1NPVVJDRSwKLUBAIC02MzAsNyArNjI4LDcgQEAKKyAgICAgaWYgbm90IGJsZC5DT05GSUdfU0VUKCdIQVZFX0NMT1NFRlJPTScpOgorICAgICAgICAgUkVQTEFDRV9TT1VSQ0UgKz0gJyBjbG9zZWZyb20uYycKK0BAIC04MDgsNyArODA2LDcgQEAgZGVmIGJ1aWxkKGJsZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICMgYXQgdGhlIG1vbWVudDoKICAgICAgICAgICAgICAgICAgICAgICAgIyBoaWRlX3N5bWJvbHM9YmxkLkJVSUxUSU5fTElCUkFSWSgncmVwbGFjZScpLAogICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlX2xpYnJhcnk9VHJ1ZSwKIC0gICAgICAgICAgICAgICAgICAgICAgZGVwcz0nY3J5cHQgZGwgbnNsIHNvY2tldCBydCBhdHRyJyArIGV4dHJhX2xpYnMpCiArICAgICAgICAgICAgICAgICAgICAgIGRlcHM9J2NyeXB0IGRsIG5zbCBzb2NrZXQgcnQgJyArIGV4dHJhX2xpYnMpCiAgCi0gICAgIGJsZC5TQU1CQV9TVUJTWVNURU0oJ3JlcGxhY2UtdGVzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT0nJyd0ZXN0L3Rlc3RzdWl0ZS5jIHRlc3Qvc3RycHRpbWUuYworICAgICByZXBsYWNlX3Rlc3RfY2ZsYWdzPSItV25vLWZvcm1hdC16ZXJvLWxlbmd0aCIKKyAgICAgaWYgYmxkLkNPTkZJR19TRVQoJ0hBVkVfV05PX0ZPUk1BVF9UUlVOQ0FUSU9OJyk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudC9vcHRpb25zLTAuOS4zNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZXZlbnQvbGlidGV2ZW50L29wdGlvbnMtMC45LjM2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2M2M1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudC9vcHRpb25zLTAuOS4zNi5wYXRjaApAQCAtMCwwICsxLDE3NiBAQAorRnJvbSBjM2UyZTRmODljZjM3YjI3NjA5ZmQwMmFkNjdlYjAyZDAwMTVjYzFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjEgU2VwIDIwMTYgMDk6NTc6NDkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzFdIHRldmVudDogQWRkIGNvbmZpZ3VyZSBvcHRpb25zIGZvciBwYWNrYWdlcworCitBZGQgY29uZmlndXJlIG9wdGlvbnMgZm9yIHRoZSBmb2xsb3dpbmcgcGFja2FnZXM6CisgLSBhY2wKKyAtIGF0dHIKKyAtIGxpYmFpbworIC0gbGliYnNkCisgLSBsaWJjYXAKKyAtIHZhbGdyaW5kCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UgZGV0ZXJtaW5pc3RpYyBidWlsZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKworTW9kaWZpZWQgdG8gYXBwbHkgdG8gdmVyc2lvbiAwLjkuMzMuCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYi9yZXBsYWNlL3dzY3JpcHQgfCA4OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQorIHdzY3JpcHQgICAgICAgICAgICAgfCAgNyArKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgNzMgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvcmVwbGFjZS93c2NyaXB0IGIvbGliL3JlcGxhY2Uvd3NjcmlwdAoraW5kZXggMmM2MzhiNy4uMDc5NzYxZCAxMDA2NDQKKy0tLSBhL2xpYi9yZXBsYWNlL3dzY3JpcHQKKysrKyBiL2xpYi9yZXBsYWNlL3dzY3JpcHQKK0BAIC0yMyw2ICsyMyw0MSBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKKyAgICAgb3B0LlBSSVZBVEVfRVhURU5TSU9OX0RFRkFVTFQoJycpCisgICAgIG9wdC5SRUNVUlNFKCdidWlsZHRvb2xzL3dhZnNhbWJhJykKKyAKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1hY2wnLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBhY2wiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2FjbCcpCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtYWNsJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGFjbCIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2FjbCcsIGRlZmF1bHQ9RmFsc2UpCisrCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtYXR0cicsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGF0dHIiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2F0dHInKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWF0dHInLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgYXR0ciIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2F0dHInLCBkZWZhdWx0PUZhbHNlKQorKworKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWxpYmFpbycsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGxpYmFpbyIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfbGliYWlvJykKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1saWJhaW8nLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgbGliYWlvIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfbGliYWlvJywgZGVmYXVsdD1GYWxzZSkKKysKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1saWJic2QnLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBsaWJic2QiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2xpYmJzZCcpCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtbGliYnNkJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGxpYmJzZCIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2xpYmJzZCcsIGRlZmF1bHQ9RmFsc2UpCisrCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtbGliY2FwJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgbGliY2FwIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9saWJjYXAnKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWxpYmNhcCcsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBsaWJjYXAiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9saWJjYXAnLCBkZWZhdWx0PUZhbHNlKQorKworIEBVdGlscy5ydW5fb25jZQorIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuUkVDVVJTRSgnYnVpbGR0b29scy93YWZzYW1iYScpCitAQCAtMzIsMTIgKzY3LDI1IEBAIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuREVGSU5FKCdIQVZFX0xJQlJFUExBQ0UnLCAxKQorICAgICBjb25mLkRFRklORSgnTElCUkVQTEFDRV9ORVRXT1JLX0NIRUNLUycsIDEpCisgCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGludXgvdHlwZXMuaCBjcnlwdC5oIGxvY2FsZS5oIGFjbC9saWJhY2wuaCBjb21wYXQuaCcpCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYWNsL2xpYmFjbC5oIGF0dHIveGF0dHIuaCBjb21wYXQuaCBjdHlwZS5oIGR1c3RhdC5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdsaW51eC90eXBlcy5oIGNyeXB0LmggbG9jYWxlLmggY29tcGF0LmgnKQorKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2NvbXBhdC5oIGN0eXBlLmggZHVzdGF0LmgnKQorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2ZjbnRsLmggZm5tYXRjaC5oIGdsb2IuaCBoaXN0b3J5Lmgga3JiNS5oIGxhbmdpbmZvLmgnKQorLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpYmFpby5oIGxvY2FsZS5oIG5kaXIuaCBwd2QuaCcpCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc2hhZG93Lmggc3lzL2FjbC5oJykKKy0gICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvYXR0cmlidXRlcy5oIGF0dHIvYXR0cmlidXRlcy5oIHN5cy9jYXBhYmlsaXR5Lmggc3lzL2Rpci5oIHN5cy9lcG9sbC5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdsb2NhbGUuaCBuZGlyLmggcHdkLmgnKQorKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3NoYWRvdy5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvYXR0cmlidXRlcy5oIHN5cy9kaXIuaCBzeXMvZXBvbGwuaCcpCisrCisrICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfYWNsOgorKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdhY2wvbGliYWNsLmggc3lzL2FjbC5oJykKKysKKysgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9hdHRyOgorKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdhdHRyL2F0dHJpYnV0ZXMuaCBhdHRyL3hhdHRyLmgnKQorKworKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmFpbzoKKysgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGliYWlvLmgnKQorKworKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmNhcDoKKysgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2NhcGFiaWxpdHkuaCcpCisrCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygncG9ydC5oJykKKyAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvZmNudGwuaCBzeXMvZmlsaW8uaCBzeXMvZmlsc3lzLmggc3lzL2ZzL3M1cGFyYW0uaCBzeXMvZnMvdngvcXVvdGEuaCcpCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2lkLmggc3lzL2lvY3RsLmggc3lzL2lwYy5oIHN5cy9tbWFuLmggc3lzL21vZGUuaCBzeXMvbmRpci5oIHN5cy9wcml2LmgnKQorQEAgLTEwMSw3ICsxNDksOCBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9maWxlaW8uaCBzeXMvZmlsZXN5cy5oIHN5cy9kdXN0YXQuaCBzeXMvc3lzbWFjcm9zLmgnKQorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3hmcy9saWJ4ZnMuaCBuZXRncm91cC5oJykKKyAKKy0gICAgY29uZi5DSEVDS19IRUFERVJTKCd2YWxncmluZC5oIHZhbGdyaW5kL3ZhbGdyaW5kLmggdmFsZ3JpbmQvbWVtY2hlY2suaCcpCisrICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfdmFsZ3JpbmQ6CisrICAgICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3ZhbGdyaW5kLmggdmFsZ3JpbmQvdmFsZ3JpbmQuaCB2YWxncmluZC9tZW1jaGVjay5oJykKKyAgICAgY29uZi5DSEVDS19IRUFERVJTKCduc3NfY29tbW9uLmggbnNzd2l0Y2guaCBuc19hcGkuaCcpCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2V4dGF0dHIuaCBzeXMvZWEuaCBzeXMvcHJvcGxpc3QuaCBzeXMvY2RlZnMuaCcpCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygndXRtcC5oIHV0bXB4LmggbGFzdGxvZy5oJykKK0BAIC0yOTQsMjIgKzM0MywxOCBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgorIAorICAgICBjb25mLkNIRUNLX0ZVTkNTKCdwcmN0bCBkaXJuYW1lIGJhc2VuYW1lJykKKyAKKy0gICAgc3RybGNweV9pbl9ic2QgPSBGYWxzZQorLQorLSAgICAjIGxpYmJzZCBvbiBzb21lIHBsYXRmb3JtcyBwcm92aWRlcyBzdHJsY3B5IGFuZCBzdHJsY2F0CistICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdzdHJsY3B5IHN0cmxjYXQnKToKKy0gICAgICAgIGlmIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3N0cmxjcHkgc3RybGNhdCcsICdic2QnLCBoZWFkZXJzPSdic2Qvc3RyaW5nLmgnLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2xpYmM9VHJ1ZSk6CistICAgICAgICAgICAgc3RybGNweV9pbl9ic2QgPSBUcnVlCistICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdnZXRwZWVyZWlkJyk6CistICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdnZXRwZWVyZWlkJywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCistICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnc2V0cHJvY3RpdGxlJywgaGVhZGVycz0nc2V0cHJvY3RpdGxlLmgnKToKKy0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnc2V0cHJvY3RpdGxlX2luaXQnKToKKy0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZV9pbml0JywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCisrICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfbGliYnNkOgorKyAgICAgICAgIyBsaWJic2Qgb24gc29tZSBwbGF0Zm9ybXMgcHJvdmlkZXMgc3RybGNweSBhbmQgc3RybGNhdAorKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ3N0cmxjcHkgc3RybGNhdCcpOgorKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3N0cmxjcHkgc3RybGNhdCcsICdic2QnLCBoZWFkZXJzPSdic2Qvc3RyaW5nLmgnLAorKyAgICAgICAgICAgICAgICAgICAgY2hlY2tsaWJjPVRydWUpCisrICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnZ2V0cGVlcmVpZCcpOgorKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ2dldHBlZXJlaWQnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKysgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnc2V0cHJvY3RpdGxlJywgaGVhZGVycz0nc2V0cHJvY3RpdGxlLmgnKToKKysgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKyAKKy0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ2Nsb3NlZnJvbScpOgorLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignY2xvc2Vmcm9tJywgJ2JzZCcsIGhlYWRlcnM9J2JzZC91bmlzdGQuaCcpCisrICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnY2xvc2Vmcm9tJyk6CisrICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignY2xvc2Vmcm9tJywgJ2JzZCcsIGhlYWRlcnM9J2JzZC91bmlzdGQuaCcpCisgCisgICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJycKKyAgICAgICAgICAgICAgICAgc3RydWN0IHVjcmVkIGNyZWQ7CitAQCAtNjYwLDcgKzcwNSw3IEBAIHJlbW92ZWVhIHNldGVhCisgICAgICMgbG9vayBmb3IgYSBtZXRob2Qgb2YgZmluZGluZyB0aGUgbGlzdCBvZiBuZXR3b3JrIGludGVyZmFjZXMKKyAgICAgZm9yIG1ldGhvZCBpbiBbJ0hBVkVfSUZBQ0VfR0VUSUZBRERSUycsICdIQVZFX0lGQUNFX0FJWCcsICdIQVZFX0lGQUNFX0lGQ09ORicsICdIQVZFX0lGQUNFX0lGUkVRJ106CisgICAgICAgICBic2RfZm9yX3N0cmxjcHkgPSAnJworLSAgICAgICAgaWYgc3RybGNweV9pbl9ic2Q6CisrICAgICAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmJzZDoKKyAgICAgICAgICAgICBic2RfZm9yX3N0cmxjcHkgPSAnIGJzZCcKKyAgICAgICAgIGlmIGNvbmYuQ0hFQ0tfQ09ERSgnJycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZGVmaW5lICVzIDEKK2RpZmYgLS1naXQgYS93c2NyaXB0IGIvd3NjcmlwdAoraW5kZXggOTRkMTkwZi4uNzQyZjc3OSAxMDA2NDQKKy0tLSBhL3dzY3JpcHQKKysrKyBiL3dzY3JpcHQKK0BAIC0yMiw3ICsyMiwxMiBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKKyAgICAgb3B0LlBSSVZBVEVfRVhURU5TSU9OX0RFRkFVTFQoJ3RldmVudCcsIG5vZXh0ZW5zaW9uPSd0ZXZlbnQnKQorICAgICBvcHQuUkVDVVJTRSgnbGliL3JlcGxhY2UnKQorICAgICBvcHQuUkVDVVJTRSgnbGliL3RhbGxvYycpCistCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtdmFsZ3JpbmQnLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiZW5hYmxlIHVzZSBvZiB2YWxncmluZCIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LXZhbGdyaW5kJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oImRpc2FibGUgdXNlIG9mIHZhbGdyaW5kIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnLCBkZWZhdWx0PUZhbHNlKQorIAorIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuUkVDVVJTRSgnbGliL3JlcGxhY2UnKQorLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnQvdGV2ZW50LUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudC90ZXZlbnQtQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRiOGU0ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudC90ZXZlbnQtQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi1Gcm9tIGMwMGY2ZDM1YmRjMDZkZmZiNTRkYWE4MTVlNTdiNDQyMTBhNWRlMDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyMSBTZXAgMjAxNiAwOTo1Nzo0OSArMDgwMAotU3ViamVjdDogW1BBVENIXSB0ZXZlbnQ6IEFkZCBjb25maWd1cmUgb3B0aW9ucyBmb3IgcGFja2FnZXMKLQotQWRkIGNvbmZpZ3VyZSBvcHRpb25zIGZvciB0aGUgZm9sbG93aW5nIHBhY2thZ2VzOgotIC0gYWNsCi0gLSBhdHRyCi0gLSBsaWJhaW8KLSAtIGxpYmJzZAotIC0gbGliY2FwCi0gLSB2YWxncmluZAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIGRldGVybWluaXN0aWMgYnVpbGQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUgfCAgNiArKy0KLSBsaWIvcmVwbGFjZS93c2NyaXB0ICAgICAgICAgICAgICAgICAgfCA4NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KLSB3c2NyaXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDc5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotIG1vZGUgY2hhbmdlIDEwMDc1NSA9PiAxMDA2NDQgd3NjcmlwdAotCi1kaWZmIC0tZ2l0IGEvbGliL3JlcGxhY2Uvc3lzdGVtL3dzY3JpcHRfY29uZmlndXJlIGIvbGliL3JlcGxhY2Uvc3lzdGVtL3dzY3JpcHRfY29uZmlndXJlCi1pbmRleCAyMDM1NDc0Li4xMGY5YWU3IDEwMDY0NAotLS0tIGEvbGliL3JlcGxhY2Uvc3lzdGVtL3dzY3JpcHRfY29uZmlndXJlCi0rKysgYi9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUKLUBAIC0xLDYgKzEsMTAgQEAKLSAjIS91c3IvYmluL2VudiBweXRob24KLSAKLS1jb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9jYXBhYmlsaXR5LmgnKQotK2ltcG9ydCBPcHRpb25zCi0rCi0raWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJjYXA6Ci0rICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2NhcGFiaWxpdHkuaCcpCi0rCi0gY29uZi5DSEVDS19GVU5DUygnZ2V0cHduYW1fciBnZXRwd3VpZF9yIGdldHB3ZW50X3InKQotIAotICMgc29sYXJpcyB2YXJpZW50cyBvZiBnZXRYWGVudF9yCi1kaWZmIC0tZ2l0IGEvbGliL3JlcGxhY2Uvd3NjcmlwdCBiL2xpYi9yZXBsYWNlL3dzY3JpcHQKLWluZGV4IGZjNDNlMWEuLjEyZDJhNzAgMTAwNjQ0Ci0tLS0gYS9saWIvcmVwbGFjZS93c2NyaXB0Ci0rKysgYi9saWIvcmVwbGFjZS93c2NyaXB0Ci1AQCAtMjMsNiArMjMsNDEgQEAgZGVmIHNldF9vcHRpb25zKG9wdCk6Ci0gICAgIG9wdC5QUklWQVRFX0VYVEVOU0lPTl9ERUZBVUxUKCcnKQotICAgICBvcHQuUkVDVVJTRSgnYnVpbGR0b29scy93YWZzYW1iYScpCi0gCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtYWNsJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgYWNsIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9hY2wnKQotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWFjbCcsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBhY2wiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9hY2wnLCBkZWZhdWx0PUZhbHNlKQotKwotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWF0dHInLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBhdHRyIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9hdHRyJykKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1hdHRyJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGF0dHIiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9hdHRyJywgZGVmYXVsdD1GYWxzZSkKLSsKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1saWJhaW8nLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBsaWJhaW8iKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2xpYmFpbycpCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtbGliYWlvJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGxpYmFpbyIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2xpYmFpbycsIGRlZmF1bHQ9RmFsc2UpCi0rCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtbGliYnNkJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgbGliYnNkIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9saWJic2QnKQotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWxpYmJzZCcsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBsaWJic2QiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9saWJic2QnLCBkZWZhdWx0PUZhbHNlKQotKwotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWxpYmNhcCcsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGxpYmNhcCIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfbGliY2FwJykKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1saWJjYXAnLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgbGliY2FwIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfbGliY2FwJywgZGVmYXVsdD1GYWxzZSkKLSsKLSBAVXRpbHMucnVuX29uY2UKLSBkZWYgY29uZmlndXJlKGNvbmYpOgotICAgICBjb25mLlJFQ1VSU0UoJ2J1aWxkdG9vbHMvd2Fmc2FtYmEnKQotQEAgLTMyLDEyICs2NywyNSBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgotICAgICBjb25mLkRFRklORSgnSEFWRV9MSUJSRVBMQUNFJywgMSkKLSAgICAgY29uZi5ERUZJTkUoJ0xJQlJFUExBQ0VfTkVUV09SS19DSEVDS1MnLCAxKQotIAotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpbnV4L3R5cGVzLmggY3J5cHQuaCBsb2NhbGUuaCBhY2wvbGliYWNsLmggY29tcGF0LmgnKQotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2FjbC9saWJhY2wuaCBhdHRyL3hhdHRyLmggY29tcGF0LmggY3R5cGUuaCBkdXN0YXQuaCcpCi0rICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGludXgvdHlwZXMuaCBjcnlwdC5oIGxvY2FsZS5oIGNvbXBhdC5oJykKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdjb21wYXQuaCBjdHlwZS5oIGR1c3RhdC5oJykKLSAgICAgY29uZi5DSEVDS19IRUFERVJTKCdmY250bC5oIGZubWF0Y2guaCBnbG9iLmggaGlzdG9yeS5oIGtyYjUuaCBsYW5naW5mby5oJykKLS0gICAgY29uZi5DSEVDS19IRUFERVJTKCdsaWJhaW8uaCBsb2NhbGUuaCBuZGlyLmggcHdkLmgnKQotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3NoYWRvdy5oIHN5cy9hY2wuaCcpCi0tICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2F0dHJpYnV0ZXMuaCBhdHRyL2F0dHJpYnV0ZXMuaCBzeXMvY2FwYWJpbGl0eS5oIHN5cy9kaXIuaCBzeXMvZXBvbGwuaCcpCi0rICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbG9jYWxlLmggbmRpci5oIHB3ZC5oJykKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdzaGFkb3cuaCcpCi0rICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2F0dHJpYnV0ZXMuaCBzeXMvZGlyLmggc3lzL2Vwb2xsLmgnKQotKwotKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2FjbDoKLSsgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYWNsL2xpYmFjbC5oIHN5cy9hY2wuaCcpCi0rCi0rICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfYXR0cjoKLSsgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYXR0ci9hdHRyaWJ1dGVzLmggYXR0ci94YXR0ci5oJykKLSsKLSsgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJhaW86Ci0rICAgICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpYmFpby5oJykKLSsKLSsgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJjYXA6Ci0rICAgICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9jYXBhYmlsaXR5LmgnKQotKwotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3BvcnQuaCcpCi0gICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2ZjbnRsLmggc3lzL2ZpbGlvLmggc3lzL2ZpbHN5cy5oIHN5cy9mcy9zNXBhcmFtLmggc3lzL2ZzL3Z4L3F1b3RhLmgnKQotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9pZC5oIHN5cy9pb2N0bC5oIHN5cy9pcGMuaCBzeXMvbW1hbi5oIHN5cy9tb2RlLmggc3lzL25kaXIuaCBzeXMvcHJpdi5oJykKLUBAIC03Myw3ICsxMjEsOSBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgotIAotICAgICBjb25mLkNIRUNLX0NPREUoJycsIGhlYWRlcnM9J3JwYy9ycGMuaCBycGNzdmMveXBfcHJvdC5oJywgZGVmaW5lPSdIQVZFX1JQQ1NWQ19ZUF9QUk9UX0gnKQotIAotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3ZhbGdyaW5kLmggdmFsZ3JpbmQvdmFsZ3JpbmQuaCB2YWxncmluZC9tZW1jaGVjay5oJykKLSsgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV92YWxncmluZDoKLSsgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygndmFsZ3JpbmQuaCB2YWxncmluZC92YWxncmluZC5oIHZhbGdyaW5kL21lbWNoZWNrLmgnKQotKwotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ25zc19jb21tb24uaCBuc3N3aXRjaC5oIG5zX2FwaS5oJykKLSAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvZXh0YXR0ci5oIHN5cy9lYS5oIHN5cy9wcm9wbGlzdC5oIHN5cy9jZGVmcy5oJykKLSAgICAgY29uZi5DSEVDS19IRUFERVJTKCd1dG1wLmggdXRtcHguaCBsYXN0bG9nLmgnKQotQEAgLTI0OCwxNyArMjk4LDE4IEBAIGRlZiBjb25maWd1cmUoY29uZik6Ci0gCi0gICAgIGNvbmYuQ0hFQ0tfRlVOQ1MoJ3ByY3RsIGRpcm5hbWUgYmFzZW5hbWUnKQotIAotLSAgICAjIGxpYmJzZCBvbiBzb21lIHBsYXRmb3JtcyBwcm92aWRlcyBzdHJsY3B5IGFuZCBzdHJsY2F0Ci0tICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdzdHJsY3B5IHN0cmxjYXQnKToKLS0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3N0cmxjcHkgc3RybGNhdCcsICdic2QnLCBoZWFkZXJzPSdic2Qvc3RyaW5nLmgnLAotLSAgICAgICAgICAgICAgICBjaGVja2xpYmM9VHJ1ZSkKLS0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ2dldHBlZXJlaWQnKToKLS0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ2dldHBlZXJlaWQnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKLS0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdzZXRwcm9jdGl0bGUnLCBoZWFkZXJzPSdzZXRwcm9jdGl0bGUuaCcpOgotLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCi0tCi0tICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdjbG9zZWZyb20nKToKLS0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ2Nsb3NlZnJvbScsICdic2QnLCBoZWFkZXJzPSdic2QvdW5pc3RkLmgnKQotKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmJzZDoKLSsgICAgICAgICMgbGliYnNkIG9uIHNvbWUgcGxhdGZvcm1zIHByb3ZpZGVzIHN0cmxjcHkgYW5kIHN0cmxjYXQKLSsgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdzdHJsY3B5IHN0cmxjYXQnKToKLSsgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzdHJsY3B5IHN0cmxjYXQnLCAnYnNkJywgaGVhZGVycz0nYnNkL3N0cmluZy5oJywKLSsgICAgICAgICAgICAgICAgICAgIGNoZWNrbGliYz1UcnVlKQotKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ2dldHBlZXJlaWQnKToKLSsgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdnZXRwZWVyZWlkJywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCi0rICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ3NldHByb2N0aXRsZScsIGhlYWRlcnM9J3NldHByb2N0aXRsZS5oJyk6Ci0rICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCi0rCi0rICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnY2xvc2Vmcm9tJyk6Ci0rICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignY2xvc2Vmcm9tJywgJ2JzZCcsIGhlYWRlcnM9J2JzZC91bmlzdGQuaCcpCi0gCi0gICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJycKLSAgICAgICAgICAgICAgICAgc3RydWN0IHVjcmVkIGNyZWQ7Ci1kaWZmIC0tZ2l0IGEvd3NjcmlwdCBiL3dzY3JpcHQKLW9sZCBtb2RlIDEwMDc1NQotbmV3IG1vZGUgMTAwNjQ0Ci1pbmRleCA3MWI5NDc1Li41MDc5M2RiCi0tLS0gYS93c2NyaXB0Ci0rKysgYi93c2NyaXB0Ci1AQCAtMjYsNyArMjYsMTIgQEAgZGVmIHNldF9vcHRpb25zKG9wdCk6Ci0gICAgICAgICBvcHQuYWRkX29wdGlvbignLS1kaXNhYmxlLXB5dGhvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgiZGlzYWJsZSB0aGUgcHl0ZXZlbnQgbW9kdWxlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdkaXNhYmxlX3B5dGhvbicsIGRlZmF1bHQ9RmFsc2UpCi0tCi0rICAgICAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLXZhbGdyaW5kJywKLSsgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCJlbmFibGUgdXNlIG9mIHZhbGdyaW5kIiksCi0rICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnKQotKyAgICAgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC12YWxncmluZCcsCi0rICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgiZGlzYWJsZSB1c2Ugb2YgdmFsZ3JpbmQiKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnLCBkZWZhdWx0PUZhbHNlKQotIAotIGRlZiBjb25maWd1cmUoY29uZik6Ci0gICAgIGNvbmYuUkVDVVJTRSgnbGliL3JlcGxhY2UnKQotLS0gCi0yLjguMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudF8wLjkuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudF8wLjkuMzEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNzExZTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnRfMC45LjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJIaWVyYXJjaGljYWwsIHJlZmVyZW5jZSBjb3VudGVkIG1lbW9yeSBwb29sIHN5c3RlbSB3aXRoIGRlc3RydWN0b3JzIgotSE9NRVBBR0UgPSAiaHR0cDovL3RldmVudC5zYW1iYS5vcmciCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2MysiCi0KLURFUEVORFMgKz0gImxpYnRhbGxvYyIKLVJERVBFTkRTX3B5dGhvbi10ZXZlbnQgPSAicHl0aG9uIgotCi1TUkNfVVJJID0gImh0dHBzOi8vc2FtYmEub3JnL2Z0cC90ZXZlbnQvdGV2ZW50LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXZlbnQtQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaCBcCi0iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90ZXZlbnQuaDtlbmRsaW5lPTI2O21kNT00ZTQ1OGQ2NThjYjI1ZTIxZWZjMTZmNzIwZTc4Yjg1YSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU0NTM4NDc2NjRhZTZiYzRlYzAxNTNlNTlhYzYzNWI5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhMTNmMjI1NmFkODA0Yzg2MGU4NDA2ODI1OGJkMGY4YmUzMWNmMGM3OWFhOGYzMDE5ZmEzMmY2OTI4YzJiZmMiCi0KLWluaGVyaXQgd2FmLXNhbWJhCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ2F0dHInLCAnJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtYWNsLC0td2l0aG91dC1hY2wsYWNsIgotUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgotUEFDS0FHRUNPTkZJR1tsaWJhaW9dID0gIi0td2l0aC1saWJhaW8sLS13aXRob3V0LWxpYmFpbyxsaWJhaW8iCi1QQUNLQUdFQ09ORklHW2xpYmJzZF0gPSAiLS13aXRoLWxpYmJzZCwtLXdpdGhvdXQtbGliYnNkLGxpYmJzZCIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKLQotU1JDX1VSSSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXR0cicsICcnLCAnZmlsZTovL2F2b2lkLWF0dHItdW5sZXNzLXdhbnRlZC5wYXRjaCcsIGQpfSIKLQotUyA9ICIke1dPUktESVJ9L3RldmVudC0ke1BWfSIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcnBhdGggXAotICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPU5PTkUgXAotICAgICAgICAgICAgICAgICAtLWJ1aWx0aW4tbGlicmFyaWVzPXJlcGxhY2UgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fVwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LWdldHRleHQgXAotICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRVMgKz0gInB5dGhvbi10ZXZlbnQgcHl0aG9uLXRldmVudC1kYmciCi0KLUZJTEVTX3B5dGhvbi10ZXZlbnQgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLyoiCi1GSUxFU19weXRob24tdGV2ZW50LWRiZyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvLmRlYnVnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnRfMC45LjM2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnRfMC45LjM2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MWIyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudF8wLjkuMzYuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJIaWVyYXJjaGljYWwsIHJlZmVyZW5jZSBjb3VudGVkIG1lbW9yeSBwb29sIHN5c3RlbSB3aXRoIGRlc3RydWN0b3JzIgorSE9NRVBBR0UgPSAiaHR0cDovL3RldmVudC5zYW1iYS5vcmciCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MysiCisKK0RFUEVORFMgKz0gImxpYnRhbGxvYyBsaWJ0aXJwYyIKK1JERVBFTkRTX3B5dGhvbi10ZXZlbnQgPSAicHl0aG9uIgorCitTUkNfVVJJID0gImh0dHBzOi8vc2FtYmEub3JnL2Z0cC90ZXZlbnQvdGV2ZW50LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9vcHRpb25zLTAuOS4zNi5wYXRjaCBcCisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90ZXZlbnQuaDtlbmRsaW5lPTI2O21kNT00ZTQ1OGQ2NThjYjI1ZTIxZWZjMTZmNzIwZTc4Yjg1YSIKKworU1JDX1VSSVttZDVzdW1dID0gIjg3ZDY3YmNhNzViMjMxODE0NDM1YzQ3YmVjMGFmZjhhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkMmI2YmUzZmQxNjAxZWQ3ZjE3NmU5OTExMWUzMjJjNTdkNThlNDI1Y2MxNDllZTgwYzdkZDRmZWQyNjNiNGMiCisKK2luaGVyaXQgd2FmLXNhbWJhCisKK1BBQ0tBR0VDT05GSUcgPz89ICJcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ2F0dHInLCAnJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtYWNsLC0td2l0aG91dC1hY2wsYWNsIgorUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgorUEFDS0FHRUNPTkZJR1tsaWJhaW9dID0gIi0td2l0aC1saWJhaW8sLS13aXRob3V0LWxpYmFpbyxsaWJhaW8iCitQQUNLQUdFQ09ORklHW2xpYmJzZF0gPSAiLS13aXRoLWxpYmJzZCwtLXdpdGhvdXQtbGliYnNkLGxpYmJzZCIKK1BBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKKworU1JDX1VSSSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXR0cicsICcnLCAnZmlsZTovL2F2b2lkLWF0dHItdW5sZXNzLXdhbnRlZC5wYXRjaCcsIGQpfSIKKworUyA9ICIke1dPUktESVJ9L3RldmVudC0ke1BWfSIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcnBhdGggXAorICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPU5PTkUgXAorICAgICAgICAgICAgICAgICAtLWJ1aWx0aW4tbGlicmFyaWVzPXJlcGxhY2UgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fVwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWdldHRleHQgXAorICAgICAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gInB5dGhvbi10ZXZlbnQgcHl0aG9uLXRldmVudC1kYmciCisKK0ZJTEVTX3B5dGhvbi10ZXZlbnQgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLyoiCitGSUxFU19weXRob24tdGV2ZW50LWRiZyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvLmRlYnVnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xrc2N0cC10b29scy9sa3NjdHAtdG9vbHNfMS4wLjE3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xrc2N0cC10b29scy9sa3NjdHAtdG9vbHNfMS4wLjE3LmJiCmluZGV4IDExYzQzZmYuLjEyMWNjOTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sa3NjdHAtdG9vbHMvbGtzY3RwLXRvb2xzXzEuMC4xNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29sc18xLjAuMTcuYmIKQEAgLTgsMjIgKzgsMTkgQEAKICAgICBmaWxlOi8vQ09QWUlORzttZDU9MGM1NmRiMDE0M2Y0ZjgwYzM2OWVlM2FmNzQyNWFmNmUgXAogIgogCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9sa3NjdHAvJHtCUH0udGFyLmd6IFwKK1NSQ1JFViA9ICI3MzZiOTFkMzQwZTNmMjUxOTcxNGYyOTMwZWQ2M2IxNjRkMzYzNTExIgorCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorTEtfUkVMID0gIjEuMC4xNyIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vc2N0cC9sa3NjdHAtdG9vbHMuZ2l0IFwKICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICBmaWxlOi8vdjR0ZXN0LnNoIFwKICAgICBmaWxlOi8vdjZ0ZXN0LnNoIFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gIjY4ZTliOGZhNGQ0ZTMzMTAyOWIyNDdiNzJkNDZkN2E1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFhZWIyMDRjZGIyYmVmYzk0ZDllYjMwMzdkMTYwOWM5ZDFkMmNkNTM3OWQ2ZGQyYzBhOGNhOWIxMDUzM2FhMTUiCi0KLSN8IGFybS1vZS1saW51eC1nbnVlYWJpLWxpYnRvb2w6IGxpbms6IGFybS1vZS1saW51eC1nbnVlYWJpLWdjYyAgLW1hcmNoPWFybXY1dGUgLW1hcm0gLW10aHVtYi1pbnRlcndvcmsgLS1zeXNyb290PS9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy9xZW11YXJtIC1zaGFyZWQgIC1mUElDIC1EUElDICAubGlicy9iaW5keC5vIC5saWJzL2Nvbm5lY3R4Lm8gLmxpYnMvcGVlbG9mZi5vIC5saWJzL29wdF9pbmZvLm8gLmxpYnMvYWRkcnMubyAubGlicy9zZW5kbXNnLm8gLmxpYnMvcmVjdm1zZy5vICAgIC1tYXJjaD1hcm12NXRlIC1tYXJtIC1tdGh1bWItaW50ZXJ3b3JrIC0tc3lzcm9vdD0vaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1lZ2xpYmMvc3lzcm9vdHMvcWVtdWFybSAtTzIgLVdsLC0tdmVyc2lvbi1zY3JpcHQ9L2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL2xrc2N0cC10b29scy8xLjAuMTYtcjAvbGtzY3RwLXRvb2xzLTEuMC4xNi9zcmMvbGliL1ZlcnNpb25zLm1hcCAtV2wsLU8xIC1XbCwtLWhhc2gtc3R5bGU9Z251IC1XbCwtLWFzLW5lZWRlZCAgIC1XbCwtc29uYW1lIC1XbCxsaWJzY3RwLnNvLjEgLW8gLmxpYnMvbGlic2N0cC5zby4xLjAuMTYKLSN8IC9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYmV4ZWMvYXJtLW9lLWxpbnV4LWdudWVhYmkvZ2NjL2FybS1vZS1saW51eC1nbnVlYWJpLzQuOS4wL2xkOiBlcnJvcjogc3ltYm9sIHNjdHBfY29ubmVjdHggaGFzIHVuZGVmaW5lZCB2ZXJzaW9uCi0jfCBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLSN8IG1ha2VbNF06ICoqKiBbbGlic2N0cC5sYV0gRXJyb3IgMQotUE5CTEFDS0xJU1RbbGtzY3RwLXRvb2xzXSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgIkJST0tFTjogZmFpbHMgdG8gbGluayBhZ2FpbnN0IHNjdHBfY29ubmVjdHggc3ltYm9sIiwgJycsIGQpfSIKLQotUyA9ICIke1dPUktESVJ9LyR7QlB9IgorUyA9ICIke1dPUktESVJ9L2dpdCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCiAKQEAgLTM3LDcgKzM0LDcgQEAKICAgICBkb25lCiB9CiAKLVNPTElCVkVSU0lPTj0iJHtQVn0iCitTT0xJQlZFUlNJT049IiR7TEtfUkVMfSIKIFNPTElCTUFKT1JWRVJTSU9OPSIxIgogCiBQQUNLQUdFUyA9KyAiJHtQTn0td2l0aHNjdHAgJHtQTn0tdXRpbHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbG93cGFuLXRvb2xzL2xvd3Bhbi10b29scy8wMDAxLWNvb3JkaW5hdG9yLUZpeC1zdHJuY3B5LXJhbmdlLXdhcm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbG93cGFuLXRvb2xzL2xvd3Bhbi10b29scy8wMDAxLWNvb3JkaW5hdG9yLUZpeC1zdHJuY3B5LXJhbmdlLXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkzODMyYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sb3dwYW4tdG9vbHMvbG93cGFuLXRvb2xzLzAwMDEtY29vcmRpbmF0b3ItRml4LXN0cm5jcHktcmFuZ2Utd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGYwMTczNTNiOGYzMTcwY2U3OWU3YWRkYzEyNzA1NmMwMTQyZjA4N2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxIEFwciAyMDE4IDE0OjMxOjA1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvb3JkaW5hdG9yOiBGaXggc3RybmNweSByYW5nZSB3YXJuaW5nCisKK0ZpeGVzCitlcnJvcjogJ3N0cm5jcHknIHNwZWNpZmllZCBib3VuZCA0MDk2IGVxdWFscyBkZXN0aW5hdGlvbiBzaXplIFstV2Vycm9yPXN0cmluZ29wLXRydW5jYXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvY29vcmRpbmF0b3IuYyB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Nvb3JkaW5hdG9yLmMgYi9zcmMvY29vcmRpbmF0b3IuYworaW5kZXggYzEzOWFhZS4uY2E0OTQxOCAxMDA2NDQKKy0tLSBhL3NyYy9jb29yZGluYXRvci5jCisrKysgYi9zcmMvY29vcmRpbmF0b3IuYworQEAgLTI5Niw3ICsyOTYsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCWlmKCFsZWFzZV9maWxlKQorIAkJbGVhc2VfZmlsZSA9IExFQVNFX0ZJTEU7CisgCistCXN0cm5jcHkocG5hbWUsIGFyZ3ZbMF0sIFBBVEhfTUFYKTsKKysJc3RybmNweShwbmFtZSwgYXJndlswXSwgUEFUSF9NQVggLSAxKTsKKysJcG5hbWVbUEFUSF9NQVggLSAxXSA9ICdcMCc7CisgCisgCXBpZF9maWxlID0gZ2V0ZW52KCJQSURfRklMRSIpOworIAlpZiAoIXBpZF9maWxlKQorLS0gCisyLjE2LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xvd3Bhbi10b29scy9sb3dwYW4tdG9vbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xvd3Bhbi10b29scy9sb3dwYW4tdG9vbHNfZ2l0LmJiCmluZGV4IGJlNzNmOGEuLmQwZmU1OWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sb3dwYW4tdG9vbHMvbG93cGFuLXRvb2xzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbG93cGFuLXRvb2xzL2xvd3Bhbi10b29sc19naXQuYmIKQEAgLTgsMTQgKzgsMTUgQEAKIERFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGxpYm5sIHB5dGhvbiIKIAogUFYgPSAiMC4zLjErZ2l0JHtTUkNQVn0iCi1TUkNfVVJJID0gImdpdDovL2dpdC5jb2RlLnNmLm5ldC9wL2xpbnV4LXppZ2JlZS9saW51eC16aWdiZWUgXAorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpbnV4LXdwYW4vbG93cGFuLXRvb2xzIFwKICAgICAgICAgICAgZmlsZTovL25vLWhlbHAybWFuLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLWVycm9ycy13aXRoLWNsYW5nLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkcmRiLWNvb3JkLWNvbmZpZy1wYXJzZS55LWFkZC1taXNzaW5nLXRpbWUuaC1pbmNsdS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNyYy1pei5jLVVuZGVmLWRwcmludGYtYmVmb3JlLXJlZGVmaW5pbmcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtbmV3bGluZS1mcm9tLWZvcm1hdC1saW5lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29vcmRpbmF0b3ItRml4LXN0cm5jcHktcmFuZ2Utd2FybmluZy5wYXRjaCBcCiAgICAgICAgICAgICIKLVNSQ1JFViA9ICIzOGY0MmRiZmNlOWUxMzYyOTI2M2RiM2JkM2I4MWYxNGM2OWJiNzMzIgorU1JDUkVWID0gIjFjMmQ4Njc0Y2M2ZjRiMTE2NmEwNjZlODgyMmUyOTVjMTA1YWU3YTIiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2X2dpdC5iYgppbmRleCA0OGE4M2I4Li5jZWJjMWQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNl9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzZfZ2l0LmJiCkBAIC0yMCw4ICsyMCwxMiBAQAogRVhUUkFfT0VDT05GICs9ICJQRVJMPSR7VVNSQklOUEFUSH0vcGVybCIKIAogTERGTEFHUyArPSAiLWZ1c2UtbGQ9Z29sZCIKK0xERkxBR1NfcmVtb3ZlX3Jpc2N2NjQgPSAiLWZ1c2UtbGQ9Z29sZCIKKwogVE9PTENIQUlOID0gImdjYyIKIAorVVNFX05MUyA9ICJ5ZXMiCisKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogICAgIGNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC9nZXR0ZXh0LmggJHtTfS9pbmNsdWRlCiAgICAgJHtTfS9hdXRvZ2VuLnNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmdodHRwMi9uZ2h0dHAyXzEuMjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZ2h0dHAyL25naHR0cDJfMS4yNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjY2Q0ODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmdodHRwMi9uZ2h0dHAyXzEuMjYuMC5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIkhUVFAvMiBDIExpYnJhcnkgYW5kIHRvb2xzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9uZ2h0dHAyLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2NGFiZGYzMGIyZWFkZDM3Y2U0N2RjYmNlMGVhMWVjIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uZ2h0dHAyL25naHR0cDIvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L25naHR0cDItJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5MjZmMDdhZDNiNTBmMzhmN2Q4OTM1Y2VkMDQ3MTZjZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZGY0MjI5ZjQxMjNiNWFhOTZlODM0ZWJjZmRmZmU5NTRlOTNkOTg2ZjAyNTJmZDEwMTIzZDUwYzZmMDEwOTgzIgorCitERVBFTkRTID0gImxpYnhtbDIgb3BlbnNzbCB6bGliIGphbnNzb24gY3VuaXQgYy1hcmVzIgorCitpbmhlcml0IGNtYWtlIHB5dGhvbm5hdGl2ZSBweXRob24tZGlyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL25pcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL25pcy5pbmMKaW5kZXggZTAyN2ExYy4uMjAwZWFmNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy9uaXMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMvbmlzLmluYwpAQCAtMjcsNSArMjcsNSBAQAogcHl0aG9uICgpIHsKICAgICBvcyA9IGQuZ2V0VmFyKCJUQVJHRVRfT1MiLCBUcnVlKQogICAgIGlmIG9zID09ICJsaW51eC11Y2xpYmMiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiTklTIGZ1bmN0aW9uYWxpdHkgcmVxdWlyZXMgcnBjc3ZjL3lwLmgsIHVDbGliQyBkb2VzIG5vdCBwcm92aWRlIHRoaXMiKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJOSVMgZnVuY3Rpb25hbGl0eSByZXF1aXJlcyBycGNzdmMveXAuaCwgdUNsaWJDIGRvZXMgbm90IHByb3ZpZGUgdGhpcyIpCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzLzAwMDEteXBiaW5kM19iaW5kaW5nX2R1cC5jLUluY2x1ZGUtc3RyaW5nLmgtZm9yLXN0cmR1cC1kZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvMDAwMS15cGJpbmQzX2JpbmRpbmdfZHVwLmMtSW5jbHVkZS1zdHJpbmcuaC1mb3Itc3RyZHVwLWRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDRkNGYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvMDAwMS15cGJpbmQzX2JpbmRpbmdfZHVwLmMtSW5jbHVkZS1zdHJpbmcuaC1mb3Itc3RyZHVwLWRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA0MjBjYjY5Mjc1NTNiYmNhNWI0OWI3NjgxY2YyMDhlNmRmNmU0ZDdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgOCBTZXAgMjAxNyAwODo0Mjo0NSAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvMl0geXBiaW5kM19iaW5kaW5nX2R1cC5jOiBJbmNsdWRlIHN0cmluZy5oIGZvciBzdHJkdXAKLSBkZWNsYXJhdGlvbgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0gbGliL3lwYmluZDNfYmluZGluZ19kdXAuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvbGliL3lwYmluZDNfYmluZGluZ19kdXAuYyBiL2xpYi95cGJpbmQzX2JpbmRpbmdfZHVwLmMKLWluZGV4IGNlNGFhZGYuLjgxOTljMGIgMTAwNjQ0Ci0tLS0gYS9saWIveXBiaW5kM19iaW5kaW5nX2R1cC5jCi0rKysgYi9saWIveXBiaW5kM19iaW5kaW5nX2R1cC5jCi1AQCAtMTksNiArMTksNyBAQAotIAotICNpZiBkZWZpbmVkKEhBVkVfWVBCSU5EMykKLSAKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHJwY3N2Yy95cF9wcm90Lmg+Ci0gI2luY2x1ZGUgImludGVybmFsLmgiCi0gCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzLzAwMDIteXBfZHVtcF9iaW5kaW5ncy5jLUluY2x1ZGUtc3RyaW5nLmgtZm9yLW1lbXNldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvMDAwMi15cF9kdW1wX2JpbmRpbmdzLmMtSW5jbHVkZS1zdHJpbmcuaC1mb3ItbWVtc2V0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTYyZTU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvMDAwMi15cF9kdW1wX2JpbmRpbmdzLmMtSW5jbHVkZS1zdHJpbmcuaC1mb3ItbWVtc2V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSAwM2NjYWJiNjI2NGMwMDg0MzBjNGIxNzM5MzUxZGY1YTYzODI5ZjhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgOCBTZXAgMjAxNyAwODo1MjozMiAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvMl0geXBfZHVtcF9iaW5kaW5ncy5jOiBJbmNsdWRlIHN0cmluZy5oIGZvciBtZW1zZXQKLQotRml4ZXMKLWVycm9yOiBpbXBsaWNpdGx5IGRlY2xhcmluZyBsaWJyYXJ5IGZ1bmN0aW9uICdtZW1zZXQnCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBzcmMveXBfZHVtcF9iaW5kaW5nLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy95cF9kdW1wX2JpbmRpbmcuYyBiL3NyYy95cF9kdW1wX2JpbmRpbmcuYwotaW5kZXggYTVhYjkyMC4uZDc1ZTJjMiAxMDA2NDQKLS0tLSBhL3NyYy95cF9kdW1wX2JpbmRpbmcuYwotKysrIGIvc3JjL3lwX2R1bXBfYmluZGluZy5jCi1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxnZXRvcHQuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotICNpbmNsdWRlIDxycGNzdmMveXBjbG50Lmg+Ci0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzXzQuMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29sc180LjIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFjOTczOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzXzQuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotIyBUaGlzIHBhY2thZ2UgYnVpbGRzIHRvb2xzIHRvIG1hbmFnZSBOSVMKLSMgVGhlIHNvdXJjZSBwYWNrYWdlIGlzIHV0aWxzL25ldC9OSVMveXAtdG9vbHMKLSMKLXJlcXVpcmUgbmlzLmluYwotCi1TVU1NQVJZID0gIk5JUyBjbGllbnQgcHJvZ3JhbXMiCi1ERVNDUklQVElPTiA9ICIgXAotTmV0d29yayBJbmZvcm1hdGlvbiBTZXJ2aWNlIHRvb2xzLiAgXAotVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHlwY2F0LCB5cG1hdGNoLCB5cHNldCwgXAoteXB3aGljaCwgeXBwYXNzd2QsIGRvbWFpbm5hbWUsIG5pc2RvbWFpbm5hbWUgXAotYW5kIHlwZG9tYWlubmFtZS4gXAotIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubGludXgtbmlzLm9yZy9kb3dubG9hZC95cC10b29scy8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2RvbWFpbm5hbWUuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXlwYmluZDNfYmluZGluZ19kdXAuYy1JbmNsdWRlLXN0cmluZy5oLWZvci1zdHJkdXAtZGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi15cF9kdW1wX2JpbmRpbmdzLmMtSW5jbHVkZS1zdHJpbmcuaC1mb3ItbWVtc2V0LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImZiNGE4YmZmYjQ0YWU1ZDMzOTAzNTFkNjdmMzIwZWYzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEzN2YxOWE5ODYzODJiMjc1YmY0YTJiMWE2OWViMjY2ODlkNmY0YWMwNTZkZGFhMjE3ODRkNmI4MGViOThmYWEiCi0KLURFUEVORFMgPSAibGlidGlycGMgbGlibnNsMiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImRvbWFpbm5hbWUuc2VydmljZSIKLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3Byb2dfU1RSSVA9L2Jpbi90cnVlIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGggLS1kaXNhYmxlLWRvbWFpbm5hbWUgXAotICAgICAgICAgICAgICAgIgotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1Xbm8tZXJyb3I9Y3BwIgotCi1GSUxFU18ke1BOfSArPSAiICR7bGliZGlyfS95cC1uaXMvKi5zby4qLiogJHtsaWJkaXJ9L3lwLW5pcy9wa2djb25maWcvIgotRklMRVNfJHtQTn0tZGJnICs9ICIgJHtsaWJkaXJ9L3lwLW5pcy8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiAke2xpYmRpcn0veXAtbmlzLyouc28gJHtsaWJkaXJ9L3lwLW5pcy8qLnNvLlsxMl0gJHtsaWJkaXJ9L3lwLW5pcy8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIgJHtsaWJkaXJ9L3lwLW5pcy8qLmEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kb21haW5uYW1lLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHNfNC4yLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzXzQuMi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlMjdlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzXzQuMi4zLmJiCkBAIC0wLDAgKzEsNDcgQEAKKyMgVGhpcyBwYWNrYWdlIGJ1aWxkcyB0b29scyB0byBtYW5hZ2UgTklTCisjIFRoZSBzb3VyY2UgcGFja2FnZSBpcyB1dGlscy9uZXQvTklTL3lwLXRvb2xzCisjCityZXF1aXJlIG5pcy5pbmMKKworU1VNTUFSWSA9ICJOSVMgY2xpZW50IHByb2dyYW1zIgorREVTQ1JJUFRJT04gPSAiIFwKK05ldHdvcmsgSW5mb3JtYXRpb24gU2VydmljZSB0b29scy4gIFwKK1RoaXMgcGFja2FnZSBjb250YWlucyB5cGNhdCwgeXBtYXRjaCwgeXBzZXQsIFwKK3lwd2hpY2gsIHlwcGFzc3dkLCBkb21haW5uYW1lLCBuaXNkb21haW5uYW1lIFwKK2FuZCB5cGRvbWFpbm5hbWUuIFwKKyIKKworIyB2NC4yLjMKK1NSQ1JFViA9ICIxYmZkYTI5YzM0MmE4MWI5N2NiMTk5NWZmZDllOGRhNWRlNjNlN2FiIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdGhrdWt1ay95cC10b29scyBcCisgICAgICAgICAgIGZpbGU6Ly9kb21haW5uYW1lLnNlcnZpY2UgXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAibGlidGlycGMgbGlibnNsMiIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImRvbWFpbm5hbWUuc2VydmljZSIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3Byb2dfU1RSSVA9L2Jpbi90cnVlIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGggLS1kaXNhYmxlLWRvbWFpbm5hbWUgXAorICAgICAgICAgICAgICAgIgorQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1Xbm8tZXJyb3I9Y3BwIgorCitGSUxFU18ke1BOfSArPSAiICR7bGliZGlyfS95cC1uaXMvKi5zby4qLiogJHtsaWJkaXJ9L3lwLW5pcy9wa2djb25maWcvIgorRklMRVNfJHtQTn0tZGJnICs9ICIgJHtsaWJkaXJ9L3lwLW5pcy8uZGVidWciCitGSUxFU18ke1BOfS1kZXYgKz0gIiAke2xpYmRpcn0veXAtbmlzLyouc28gJHtsaWJkaXJ9L3lwLW5pcy8qLnNvLlsxMl0gJHtsaWJkaXJ9L3lwLW5pcy8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIgJHtsaWJkaXJ9L3lwLW5pcy8qLmEiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kb21haW5uYW1lLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udGltZWQvbnRpbWVkX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udGltZWQvbnRpbWVkX2dpdC5iYgppbmRleCA1MjdlYTMzLi5hNzQ5YjE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRpbWVkL250aW1lZF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250aW1lZC9udGltZWRfZ2l0LmJiCkBAIC02LDcgKzYsNyBAQAogU0VDVElPTiA9ICJuZXQiCiAKIExJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbWFpbi5jO3N0YXJ0bGluZT0yO2VuZGxpbmU9MjQ7bWQ1PWVkYTExZDIxMDA1MzE5YmI3NmNiYjZmOTExZjBmNjZkIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbWFpbi5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MjQ7bWQ1PTg5ZGI4ZTc2ZjI5NTFmM2ZhZDE2N2U3YWE5NzE4YTQ0IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYnNkcGhrL050aW1lZCBcCiAgICAgICAgICAgIGZpbGU6Ly91c2UtbGRmbGFncy5wYXRjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udHAvbnRwL250cC00LjIuNF9wNi1uYW5vLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250cC9udHAvbnRwLTQuMi40X3A2LW5hbm8ucGF0Y2gKaW5kZXggY2IxZTJmNy4uZDQ1YjdlMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250cC9udHAvbnRwLTQuMi40X3A2LW5hbm8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250cC9udHAvbnRwLTQuMi40X3A2LW5hbm8ucGF0Y2gKQEAgLTEsNiArMSwxNiBAQAotLS0tIGEvaW5jbHVkZS9udHBfc3lzY2FsbC5oLm9yaWcJMjAwOS0wNS0xOSAxNjo0NDo1NS4wNDgxNTY0NjcgLTA0MDAKLSsrKyBiL2luY2x1ZGUvbnRwX3N5c2NhbGwuaAkyMDA5LTA1LTE5IDE2OjQ2OjE5LjI5MzMyMzY4NiAtMDQwMAotQEAgLTE0LDYgKzE0LDE0IEBACitGcm9tIDIzMTA4OTg1MzNmMDU5ZDg3NWRjZmZkMjZhYjZjZjFiMjgwMjkyZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogV2VkLCAxMiBKYW4gMjAxMSAyMTozODo0NiArMDEwMAorCistLS0KKyBpbmNsdWRlL250cF9zeXNjYWxsLmggfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9udHBfc3lzY2FsbC5oIGIvaW5jbHVkZS9udHBfc3lzY2FsbC5oCitpbmRleCBkMWNlMDNlLi45ZTE4NDMyIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9udHBfc3lzY2FsbC5oCisrKysgYi9pbmNsdWRlL250cF9zeXNjYWxsLmgKK0BAIC0xMCw2ICsxMCwxNCBAQAogICMgaW5jbHVkZSA8c3lzL3RpbWV4Lmg+CiAgI2VuZGlmCiAgCkBAIC0xMyw1ICsyMyw1IEBACiArI2VuZGlmCiArCiAgI2lmbmRlZiBOVFBfU1lTQ0FMTFNfTElCQwotICNpZmRlZiBOVFBfU1lTQ0FMTFNfU1RECi0gIyBkZWZpbmUgbnRwX2FkanRpbWUodCkJCXN5c2NhbGwoU1lTX250cF9hZGp0aW1lLCAodCkpCisgIyBpZmRlZiBOVFBfU1lTQ0FMTFNfU1RECisgIyAgZGVmaW5lIG50cF9hZGp0aW1lKHQpCXN5c2NhbGwoU1lTX250cF9hZGp0aW1lLCAodCkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cF80LjIuOHAxMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udHAvbnRwXzQuMi44cDEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTljNjBiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udHAvbnRwXzQuMi44cDEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0d29yayBUaW1lIFByb3RvY29sIGRhZW1vbiBhbmQgdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiVGhlIE5ldHdvcmsgVGltZSBQcm90b2NvbCAoTlRQKSBpcyB1c2VkIHRvIFwKLXN5bmNocm9uaXplIHRoZSB0aW1lIG9mIGEgY29tcHV0ZXIgY2xpZW50IG9yIHNlcnZlciB0byBcCi1hbm90aGVyIHNlcnZlciBvciByZWZlcmVuY2UgdGltZSBzb3VyY2UsIHN1Y2ggYXMgYSByYWRpbyBcCi1vciBzYXRlbGxpdGUgcmVjZWl2ZXIgb3IgbW9kZW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL3N1cHBvcnQubnRwLm9yZyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJOVFAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PWU4NzdhMWQ1NjdhNmE1ODk5NmQyYjY2ZTNlMzg3MDAzIgotCi1ERVBFTkRTID0gImxpYmV2ZW50IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZWVjaXMudWRlbC5lZHUvfm50cC9udHBfc3Bvb2wvbnRwNC9udHAtNC4yL250cC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbnRwLTQuMi40X3A2LW5hbm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbnRwZCBcCi0gICAgICAgICAgIGZpbGU6Ly9udHAuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9udHBkYXRlIFwKLSAgICAgICAgICAgZmlsZTovL250cGRhdGUuZGVmYXVsdCBcCi0gICAgICAgICAgIGZpbGU6Ly9udHBkYXRlLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vbnRwZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3NudHAuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9zbnRwIFwKLSAgICAgICAgICAgZmlsZTovL250cGQubGlzdCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3NDUzODRlZDBkZWRiM2Y2NmIzM2ZlODRkNjY0NjZmOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZGQyMzY2ZTY0MjE5YjllZmEwZjc0MzhlMDY4MDBkMGRiMzk0YWM1Yzg4ZTEzYzE3YjcwZDBkY2RmOTliOTlmIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCi0KLSMgVGhlIGFjX2N2X2hlYWRlcl9yZWFkbGluZV9oaXN0b3J5IGlzIHRvIHN0b3AgbnRwZGMgZGVwZW5kaW5nIG9uIGVpdGhlcgotIyByZWFkbGluZSBvciBjdXJzZXMKLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLW5ldC1zbm1wLWNvbmZpZz1ubyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1udHBzbm1wZCBcCi0gICAgICAgICAgICAgICAgIGFjX2N2X2hlYWRlcl9yZWFkbGluZV9oaXN0b3J5X2g9bm8gXAotICAgICAgICAgICAgICAgICAtLXdpdGgteWllbGRpbmdfc2VsZWN0PXllcyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1sb2NmaWxlPXJlZGhhdCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1ycGF0aCBcCi0gICAgICAgICAgICAgICAgICIKLUNGTEFHU19hcHBlbmQgPSAiIC1EUFRZU19BUkVfR0VUUFQgLURQVFlTX0FSRV9TRUFSQ0hFRCIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLU5UUF9VU0VSX0hPTUUgPz0gIi92YXIvbGliL250cCIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lLWRpciAke05UUF9VU0VSX0hPTUV9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgbnRwIgotCi0jIE5COiBkZWJ1ZyBpcyBkZWZhdWx0LWVuYWJsZWQgYnkgTlRQOyBrZWVwIGl0IGRlZmF1bHQtZW5hYmxlZCBoZXJlLgotUEFDS0FHRUNPTkZJRyA/Pz0gImNhcCBkZWJ1ZyByZWZjbG9ja3Mgb3BlbnNzbCBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1vcGVuc3NsLWluY2Rpcj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1jcnlwdG8sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LW9wZW5zc2wgLS13aXRob3V0LWNyeXB0bywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tjYXBdID0gIi0tZW5hYmxlLWxpbnV4Y2FwcywtLWRpc2FibGUtbGludXhjYXBzLGxpYmNhcCIKLVBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1saW5lZWRpdGxpYnMsLS13aXRob3V0LWxpbmVlZGl0bGlicyxyZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbcmVmY2xvY2tzXSA9ICItLWVuYWJsZS1hbGwtY2xvY2tzLC0tZGlzYWJsZS1hbGwtY2xvY2tzLHBwcy10b29scyIKLVBBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnZ2luZywtLWRpc2FibGUtZGVidWdnaW5nIgotUEFDS0FHRUNPTkZJR1ttZG5zXSA9ICJhY19jdl9oZWFkZXJfZG5zX3NkX2g9eWVzLGFjX2N2X2hlYWRlcl9kbnNfc2RfaD1ubyxtZG5zIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L250cC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9udHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vbnRwZGF0ZSAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYwotCi0gICAgaW5zdGFsbCAtbSA3NTUgLWQgJHtEfSR7TlRQX1VTRVJfSE9NRX0KLSAgICBjaG93biBudHA6bnRwICR7RH0ke05UUF9VU0VSX0hPTUV9Ci0KLSAgICAjIEZpeCBoYXJkY29kZWQgcGF0aHMgaW4gc2NyaXB0cwotICAgIHNlZCAtaSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9udHBkICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCi0gICAgc2VkIC1pICdzIS91c3IvYmluLyEke2JpbmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9udHBkICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCi0gICAgc2VkIC1pICdzIS9ldGMvISR7c3lzY29uZmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9udHBkICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCi0gICAgc2VkIC1pICdzIS92YXIvISR7bG9jYWxzdGF0ZWRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9udHBkICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCi0gICAgc2VkIC1pICdzIV5QQVRIPS4qIVBBVEg9JHtiYXNlX3NiaW5kaXJ9OiR7YmFzZV9iaW5kaXJ9OiR7c2JpbmRpcn06JHtiaW5kaXJ9IScgJHtEfSR7YmluZGlyfS9udHBkYXRlLXN5bmMKLSAgICBzZWQgLWkgJzFzLCMhLipwZXJsIC13LCMhICR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke3NiaW5kaXJ9L250cHRyYWNlCi0gICAgc2VkIC1pICcvdXNlL2kgdXNlIHdhcm5pbmdzOycgJHtEfSR7c2JpbmRpcn0vbnRwdHJhY2UKLSAgICBzZWQgLWkgJzFzLCMhLipwZXJsLCMhICR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke3NiaW5kaXJ9L250cC13YWl0Ci0gICAgc2VkIC1pICcvdXNlL2kgdXNlIHdhcm5pbmdzOycgJHtEfSR7c2JpbmRpcn0vbnRwLXdhaXQKLSAgICBzZWQgLWkgJzFzLCMhLipwZXJsIC13LCMhICR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke3NiaW5kaXJ9L2NhbGNfdGlja2FkagotICAgIHNlZCAtaSAnL3VzZS9pIHVzZSB3YXJuaW5nczsnICR7RH0ke3NiaW5kaXJ9L2NhbGNfdGlja2FkagotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdAotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vbnRwZGF0ZS5kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvbnRwZGF0ZQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NudHAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC8KLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZAotICAgIGxuIC1zICR7YmluZGlyfS9udHBkYXRlLXN5bmMgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L250cGRhdGUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9udHBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc250cC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbnRwZC5saXN0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vbnRwLXVuaXRzLmQvNjAtbnRwZC5saXN0Ci0KLSAgICAjIFJlbW92ZSBhbiBlbXB0eSBsaWJleGVjZGlyLgotICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xpYmV4ZWNkaXJ9Ci19Ci0KLVBBQ0tBR0VTICs9ICJudHBkYXRlIHNudHAgJHtQTn0tdGlja2FkaiAke1BOfS11dGlscyIKLSMgTk9URTogeW91IGRvbid0IG5lZWQgbnRwZGF0ZSwgdXNlICJudHBkIC1xIC1nIC14IgotCi0jIG50cCBvcmlnaW5hbGx5IGluY2x1ZGVzIHRpY2thZGouIEl0J3Mgc3BsaXQgb2ZmIGZvciBpbmNsdXNpb24gaW4gc21hbGwgZmlybXdhcmUgaW1hZ2VzIG9uIHBsYXRmb3JtcwotIyB3aXRoIHdvbmt5IGNsb2NrcyAoZS5nLiBPcGVuU2x1ZykKLVJERVBFTkRTXyR7UE59ID0gIiR7UE59LXRpY2thZGoiCi0jIEhhbmRsZSBtb3ZlIGZyb20gYmluIHRvIHV0aWxzIHBhY2thZ2UKLVJQUk9WSURFU18ke1BOfS11dGlscyA9ICIke1BOfS1iaW4iCi1SUkVQTEFDRVNfJHtQTn0tdXRpbHMgPSAiJHtQTn0tYmluIgotUkNPTkZMSUNUU18ke1BOfS11dGlscyA9ICIke1BOfS1iaW4iCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gbnRwZGF0ZSBzbnRwIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm50cGQuc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV9udHBkYXRlID0gIm50cGRhdGUuc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV9zbnRwID0gInNudHAuc2VydmljZSIKLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLQotUlBST1ZJREVTX250cGRhdGUgKz0gIm50cGRhdGUtc3lzdGVtZCIKLVJSRVBMQUNFU19udHBkYXRlICs9ICJudHBkYXRlLXN5c3RlbWQiCi1SQ09ORkxJQ1RTX250cGRhdGUgKz0gIm50cGRhdGUtc3lzdGVtZCIKLQotUlNVR0dFU1RTXyR7UE59ID0gImlhbmEtZXRjIgotCi1GSUxFU18ke1BOfSA9ICIke3NiaW5kaXJ9L250cGQubnRwICR7c3lzY29uZmRpcn0vbnRwLmNvbmYgJHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke2xpYmRpcn0gXAotICAgICR7TlRQX1VTRVJfSE9NRX0gXAotICAgICR7c3lzdGVtZF91bml0ZGlyfS9udHAtdW5pdHMuZC82MC1udHBkLmxpc3QgJHtsaWJleGVjZGlyfVwKLSIKLUZJTEVTXyR7UE59LXRpY2thZGogPSAiJHtzYmluZGlyfS90aWNrYWRqIgotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtzYmluZGlyfSAke2RhdGFkaXJ9L250cC9saWIiCi1SREVQRU5EU18ke1BOfS11dGlscyArPSAicGVybCIKLUZJTEVTX250cGRhdGUgPSAiJHtzYmluZGlyfS9udHBkYXRlIFwKLSAgICAke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZC9udHBkYXRlLXN5bmMgXAotICAgICR7YmluZGlyfS9udHBkYXRlLXN5bmMgXAotICAgICR7c3lzY29uZmRpcn0vZGVmYXVsdC9udHBkYXRlIFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL250cGRhdGUuc2VydmljZSBcCi0iCi1GSUxFU19zbnRwID0gIiR7c2JpbmRpcn0vc250cCBcCi0gICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGVmYXVsdC9zbnRwIFwKLSAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zbnRwLnNlcnZpY2UgXAotICAgICAgICAgICAgICIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbnRwLmNvbmYiCi1DT05GRklMRVNfbnRwZGF0ZSA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQvbnRwZGF0ZSIKLQotSU5JVFNDUklQVF9OQU1FID0gIm50cGQiCi0jIE5vIGRlcGVuZGVuY2llcywgc28ganVzdCBnbyBpbiBhdCB0aGUgc3RhbmRhcmQgbGV2ZWwgKDIwKQotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi0KLXBrZ19wb3N0aW5zdF9udHBkYXRlKCkgewotICAgIGlmICEgZ3JlcCAtcSAtcyBudHBkYXRlICREL3Zhci9zcG9vbC9jcm9uL3Jvb3Q7IHRoZW4KLSAgICAgICAgZWNobyAiYWRkaW5nIGNyb250YWIiCi0gICAgICAgIHRlc3QgLWQgJEQvdmFyL3Nwb29sL2Nyb24gfHwgbWtkaXIgLXAgJEQvdmFyL3Nwb29sL2Nyb24KLSAgICAgICAgZWNobyAiMzAgKiAqICogKiAgICAke2JpbmRpcn0vbnRwZGF0ZS1zeW5jIHNpbGVudCIgPj4gJEQvdmFyL3Nwb29sL2Nyb24vcm9vdAotICAgIGZpCi19Ci0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gIm50cGQiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbnRwZF0gPSAiJHtzYmluZGlyfS9udHBkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250cC9udHBfNC4yLjhwMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cF80LjIuOHAxMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjk4ZmEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250cC9udHBfNC4yLjhwMTEuYmIKQEAgLTAsMCArMSwxNzIgQEAKK1NVTU1BUlkgPSAiTmV0d29yayBUaW1lIFByb3RvY29sIGRhZW1vbiBhbmQgdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiVGhlIE5ldHdvcmsgVGltZSBQcm90b2NvbCAoTlRQKSBpcyB1c2VkIHRvIFwKK3N5bmNocm9uaXplIHRoZSB0aW1lIG9mIGEgY29tcHV0ZXIgY2xpZW50IG9yIHNlcnZlciB0byBcCithbm90aGVyIHNlcnZlciBvciByZWZlcmVuY2UgdGltZSBzb3VyY2UsIHN1Y2ggYXMgYSByYWRpbyBcCitvciBzYXRlbGxpdGUgcmVjZWl2ZXIgb3IgbW9kZW0uIgorSE9NRVBBR0UgPSAiaHR0cDovL3N1cHBvcnQubnRwLm9yZyIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJOVFAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PWU4NzdhMWQ1NjdhNmE1ODk5NmQyYjY2ZTNlMzg3MDAzIgorCitERVBFTkRTID0gImxpYmV2ZW50IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZWVjaXMudWRlbC5lZHUvfm50cC9udHBfc3Bvb2wvbnRwNC9udHAtNC4yL250cC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbnRwLTQuMi40X3A2LW5hbm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnRwZCBcCisgICAgICAgICAgIGZpbGU6Ly9udHAuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9udHBkYXRlIFwKKyAgICAgICAgICAgZmlsZTovL250cGRhdGUuZGVmYXVsdCBcCisgICAgICAgICAgIGZpbGU6Ly9udHBkYXRlLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vbnRwZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3NudHAuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9zbnRwIFwKKyAgICAgICAgICAgZmlsZTovL250cGQubGlzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMDk1MGNhMjg1NTU3OTU0MTg5NjUxM2U3ODI5NTM2MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMTRhMzlmNzUzNjg4MjUyZDY4M2ZmOTA3MDM1ZmZmZjEwNmJhOGQzZGIyMTMwOWI3NDJlMDliNWMzY2QyNzhlIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCisKKyMgVGhlIGFjX2N2X2hlYWRlcl9yZWFkbGluZV9oaXN0b3J5IGlzIHRvIHN0b3AgbnRwZGMgZGVwZW5kaW5nIG9uIGVpdGhlcgorIyByZWFkbGluZSBvciBjdXJzZXMKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLW5ldC1zbm1wLWNvbmZpZz1ubyBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1udHBzbm1wZCBcCisgICAgICAgICAgICAgICAgIGFjX2N2X2hlYWRlcl9yZWFkbGluZV9oaXN0b3J5X2g9bm8gXAorICAgICAgICAgICAgICAgICAtLXdpdGgteWllbGRpbmdfc2VsZWN0PXllcyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1sb2NmaWxlPXJlZGhhdCBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1ycGF0aCBcCisgICAgICAgICAgICAgICAgICIKK0NGTEFHU19hcHBlbmQgPSAiIC1EUFRZU19BUkVfR0VUUFQgLURQVFlTX0FSRV9TRUFSQ0hFRCIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK05UUF9VU0VSX0hPTUUgPz0gIi92YXIvbGliL250cCIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lLWRpciAke05UUF9VU0VSX0hPTUV9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgbnRwIgorCisjIE5COiBkZWJ1ZyBpcyBkZWZhdWx0LWVuYWJsZWQgYnkgTlRQOyBrZWVwIGl0IGRlZmF1bHQtZW5hYmxlZCBoZXJlLgorUEFDS0FHRUNPTkZJRyA/Pz0gImNhcCBkZWJ1ZyByZWZjbG9ja3Mgb3BlbnNzbCBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1vcGVuc3NsLWluY2Rpcj0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1jcnlwdG8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LW9wZW5zc2wgLS13aXRob3V0LWNyeXB0bywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tjYXBdID0gIi0tZW5hYmxlLWxpbnV4Y2FwcywtLWRpc2FibGUtbGludXhjYXBzLGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1saW5lZWRpdGxpYnMsLS13aXRob3V0LWxpbmVlZGl0bGlicyxyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbcmVmY2xvY2tzXSA9ICItLWVuYWJsZS1hbGwtY2xvY2tzLC0tZGlzYWJsZS1hbGwtY2xvY2tzLHBwcy10b29scyIKK1BBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnZ2luZywtLWRpc2FibGUtZGVidWdnaW5nIgorUEFDS0FHRUNPTkZJR1ttZG5zXSA9ICJhY19jdl9oZWFkZXJfZG5zX3NkX2g9eWVzLGFjX2N2X2hlYWRlcl9kbnNfc2RfaD1ubyxtZG5zIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L250cC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9udHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vbnRwZGF0ZSAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworCisgICAgaW5zdGFsbCAtbSA3NTUgLWQgJHtEfSR7TlRQX1VTRVJfSE9NRX0KKyAgICBjaG93biBudHA6bnRwICR7RH0ke05UUF9VU0VSX0hPTUV9CisKKyAgICAjIEZpeCBoYXJkY29kZWQgcGF0aHMgaW4gc2NyaXB0cworICAgIHNlZCAtaSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9udHBkICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCisgICAgc2VkIC1pICdzIS91c3IvYmluLyEke2JpbmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9udHBkICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCisgICAgc2VkIC1pICdzIS9ldGMvISR7c3lzY29uZmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9udHBkICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCisgICAgc2VkIC1pICdzIS92YXIvISR7bG9jYWxzdGF0ZWRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9udHBkICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCisgICAgc2VkIC1pICdzIV5QQVRIPS4qIVBBVEg9JHtiYXNlX3NiaW5kaXJ9OiR7YmFzZV9iaW5kaXJ9OiR7c2JpbmRpcn06JHtiaW5kaXJ9IScgJHtEfSR7YmluZGlyfS9udHBkYXRlLXN5bmMKKyAgICBzZWQgLWkgJzFzLCMhLipwZXJsIC13LCMhICR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke3NiaW5kaXJ9L250cHRyYWNlCisgICAgc2VkIC1pICcvdXNlL2kgdXNlIHdhcm5pbmdzOycgJHtEfSR7c2JpbmRpcn0vbnRwdHJhY2UKKyAgICBzZWQgLWkgJzFzLCMhLipwZXJsLCMhICR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke3NiaW5kaXJ9L250cC13YWl0CisgICAgc2VkIC1pICcvdXNlL2kgdXNlIHdhcm5pbmdzOycgJHtEfSR7c2JpbmRpcn0vbnRwLXdhaXQKKyAgICBzZWQgLWkgJzFzLCMhLipwZXJsIC13LCMhICR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke3NiaW5kaXJ9L2NhbGNfdGlja2FkagorICAgIHNlZCAtaSAnL3VzZS9pIHVzZSB3YXJuaW5nczsnICR7RH0ke3NiaW5kaXJ9L2NhbGNfdGlja2FkagorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdAorICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vbnRwZGF0ZS5kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvbnRwZGF0ZQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NudHAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC8KKworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZAorICAgIGxuIC1zICR7YmluZGlyfS9udHBkYXRlLXN5bmMgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L250cGRhdGUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9udHBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc250cC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbnRwZC5saXN0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vbnRwLXVuaXRzLmQvNjAtbnRwZC5saXN0CisKKyAgICAjIFJlbW92ZSBhbiBlbXB0eSBsaWJleGVjZGlyLgorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xpYmV4ZWNkaXJ9Cit9CisKK1BBQ0tBR0VTICs9ICJudHBkYXRlIHNudHAgJHtQTn0tdGlja2FkaiAke1BOfS11dGlscyIKKyMgTk9URTogeW91IGRvbid0IG5lZWQgbnRwZGF0ZSwgdXNlICJudHBkIC1xIC1nIC14IgorCisjIG50cCBvcmlnaW5hbGx5IGluY2x1ZGVzIHRpY2thZGouIEl0J3Mgc3BsaXQgb2ZmIGZvciBpbmNsdXNpb24gaW4gc21hbGwgZmlybXdhcmUgaW1hZ2VzIG9uIHBsYXRmb3JtcworIyB3aXRoIHdvbmt5IGNsb2NrcyAoZS5nLiBPcGVuU2x1ZykKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LXRpY2thZGoiCisjIG50cGQgcmVxdWlyZSBsaWJnY2MgZm9yIGV4ZWN1dGlvbgorUkRFUEVORFNfJHtQTn0gKz0gImxpYmdjYyIKKyMgSGFuZGxlIG1vdmUgZnJvbSBiaW4gdG8gdXRpbHMgcGFja2FnZQorUlBST1ZJREVTXyR7UE59LXV0aWxzID0gIiR7UE59LWJpbiIKK1JSRVBMQUNFU18ke1BOfS11dGlscyA9ICIke1BOfS1iaW4iCitSQ09ORkxJQ1RTXyR7UE59LXV0aWxzID0gIiR7UE59LWJpbiIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSBudHBkYXRlIHNudHAiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibnRwZC5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFX250cGRhdGUgPSAibnRwZGF0ZS5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFX3NudHAgPSAic250cC5zZXJ2aWNlIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorCitSUFJPVklERVNfbnRwZGF0ZSArPSAibnRwZGF0ZS1zeXN0ZW1kIgorUlJFUExBQ0VTX250cGRhdGUgKz0gIm50cGRhdGUtc3lzdGVtZCIKK1JDT05GTElDVFNfbnRwZGF0ZSArPSAibnRwZGF0ZS1zeXN0ZW1kIgorCitSU1VHR0VTVFNfJHtQTn0gPSAiaWFuYS1ldGMiCisKK0ZJTEVTXyR7UE59ID0gIiR7c2JpbmRpcn0vbnRwZC5udHAgJHtzeXNjb25mZGlyfS9udHAuY29uZiAke3N5c2NvbmZkaXJ9L2luaXQuZC9udHBkICR7bGliZGlyfSBcCisgICAgJHtOVFBfVVNFUl9IT01FfSBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kLzYwLW50cGQubGlzdCAke2xpYmV4ZWNkaXJ9XAorIgorRklMRVNfJHtQTn0tdGlja2FkaiA9ICIke3NiaW5kaXJ9L3RpY2thZGoiCitGSUxFU18ke1BOfS11dGlscyA9ICIke3NiaW5kaXJ9ICR7ZGF0YWRpcn0vbnRwL2xpYiIKK1JERVBFTkRTXyR7UE59LXV0aWxzICs9ICJwZXJsIgorRklMRVNfbnRwZGF0ZSA9ICIke3NiaW5kaXJ9L250cGRhdGUgXAorICAgICR7c3lzY29uZmRpcn0vbmV0d29yay9pZi11cC5kL250cGRhdGUtc3luYyBcCisgICAgJHtiaW5kaXJ9L250cGRhdGUtc3luYyBcCisgICAgJHtzeXNjb25mZGlyfS9kZWZhdWx0L250cGRhdGUgXAorICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbnRwZGF0ZS5zZXJ2aWNlIFwKKyIKK0ZJTEVTX3NudHAgPSAiJHtzYmluZGlyfS9zbnRwIFwKKyAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3NudHAgXAorICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NudHAuc2VydmljZSBcCisgICAgICAgICAgICAgIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9udHAuY29uZiIKK0NPTkZGSUxFU19udHBkYXRlID0gIiR7c3lzY29uZmRpcn0vZGVmYXVsdC9udHBkYXRlIgorCitJTklUU0NSSVBUX05BTUUgPSAibnRwZCIKKyMgTm8gZGVwZW5kZW5jaWVzLCBzbyBqdXN0IGdvIGluIGF0IHRoZSBzdGFuZGFyZCBsZXZlbCAoMjApCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworcGtnX3Bvc3RpbnN0X250cGRhdGUoKSB7CisgICAgaWYgISBncmVwIC1xIC1zIG50cGRhdGUgJEQvdmFyL3Nwb29sL2Nyb24vcm9vdDsgdGhlbgorICAgICAgICBlY2hvICJhZGRpbmcgY3JvbnRhYiIKKyAgICAgICAgdGVzdCAtZCAkRC92YXIvc3Bvb2wvY3JvbiB8fCBta2RpciAtcCAkRC92YXIvc3Bvb2wvY3JvbgorICAgICAgICBlY2hvICIzMCAqICogKiAqICAgICR7YmluZGlyfS9udHBkYXRlLXN5bmMgc2lsZW50IiA+PiAkRC92YXIvc3Bvb2wvY3Jvbi9yb290CisgICAgZmkKK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAibnRwZCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtudHBkXSA9ICIke3NiaW5kaXJ9L250cGQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3Blbi1pc25zL29wZW4taXNuc18wLjk3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW4taXNucy9vcGVuLWlzbnNfMC45Ny5iYgppbmRleCBjYzI5NTllLi5hYmZhNzUxMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW4taXNucy9vcGVuLWlzbnNfMC45Ny5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3Blbi1pc25zL29wZW4taXNuc18wLjk3LmJiCkBAIC0xMSw3ICsxMSw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMjFiZjQxZjI4MGNmODA1MDg2ZGQ1YTcyMGIzNzc4NSIKIFNFQ1RJT04gPSAibmV0IgogCi1ERVBFTkRTID0gIm9wZW5zc2wgc3lzdGVtZCIKK0RFUEVORFMgPSAib3BlbnNzbCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW4taXNjc2kvb3Blbi1pc25zIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdXRpbC5oLWVuZGlhbi5oLWlzLWF2YWlsYWJsZS1vbi1tdXNsLW9uLWxpbnV4LnBhdGNoIFwKQEAgLTIxLDkgKzIxLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBzeXN0ZW1kIGF1dG90b29scy1icm9rZW5zZXAgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0jIGRlcGVuZHMgb24gc3lzdGVtZAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCitpbmhlcml0IHN5c3RlbWQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZAogCiBFWFRSQV9PRUNPTkYgPSAiIC0tcHJlZml4PSR7cHJlZml4fSAtLWVuYWJsZS1zaGFyZWQiCiBFWFRSQV9PRU1BS0UgKz0gIlNZU1RFTURESVI9JHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCkBAIC0zMSw2ICsyOSwxMiBAQAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgIG9lX3J1bm1ha2UgSU5DRElSPSR7RH0ke2luY2x1ZGVkaXJ9L2xpYmlzbnMvIGluc3RhbGxfaGRycwogICAgIG9lX3J1bm1ha2UgTElCRElSPSR7RH0ke2xpYmRpcn0gaW5zdGFsbF9saWIKKworICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7U30vZXRjL29wZW5pc25zLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW5pc25zCisgICAgc2VkIC1pICdzfGRhZW1vbiBpc25zZHxzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1va25vZG8gLS1leGVjICR7c2JpbmRpcn0vaXNuc2QgLS18JyBcCisgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVuaXNucwogfQogCiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9ICR7c3lzdGVtZF91bml0ZGlyfSIKKworSU5JVFNDUklQVF9OQU1FID0gIm9wZW5pc25zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2ZpeC1zeW1saW5rLWluc3RhbGwtZXJyb3ItaW4tY21kbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9maXgtc3ltbGluay1pbnN0YWxsLWVycm9yLWluLWNtZGxhbmcucGF0Y2gKaW5kZXggOWE1NjhiMi4uNDQ5MTQyZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2ZpeC1zeW1saW5rLWluc3RhbGwtZXJyb3ItaW4tY21kbGFuZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvZml4LXN5bWxpbmstaW5zdGFsbC1lcnJvci1pbi1jbWRsYW5nLnBhdGNoCkBAIC04LDExICs4LDExIEBACiAgICAgCiAgICAgU2lnbmVkLW9mZi1ieTogQXdzIElzbWFpbCA8YXdzLmlzbWFpbEB3aW5kcml2ZXIuY29tPgogCi1kaWZmIC0tZ2l0IGEvY21kbGFuZy9NYWtlZmlsZS5hbSBiL2NtZGxhbmcvTWFrZWZpbGUuYW0KLWluZGV4IDkyZDZlODMuLmY2MDM5ZjkgMTAwNjQ0Ci0tLS0gYS9jbWRsYW5nL01ha2VmaWxlLmFtCi0rKysgYi9jbWRsYW5nL01ha2VmaWxlLmFtCi1AQCAtMzYsNiArMzYsNyBAQCBDTEVBTkZJTEVTID0gbGliT3BlbklQTUljbWRsYW5nLm1hcAorSW5kZXg6IE9wZW5JUE1JLTIuMC4yNC9jbWRsYW5nL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gT3BlbklQTUktMi4wLjI0Lm9yaWcvY21kbGFuZy9NYWtlZmlsZS5hbQorKysrIE9wZW5JUE1JLTIuMC4yNC9jbWRsYW5nL01ha2VmaWxlLmFtCitAQCAtMzUsNiArMzUsNyBAQCBvcGVuaXBtaXNoX0xEQUREID0gIGxpYk9wZW5JUE1JY21kbGFuZy5sCiAgIyBjb21wYXRhYmlsaXR5LgogIGluc3RhbGwtZGF0YS1sb2NhbDoKICAJcm0gLWYgJChERVNURElSKSQoYmluZGlyKS9pcG1pc2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9pbmNsdWRlX3N5c190eXBlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9pbmNsdWRlX3N5c190eXBlcy5wYXRjaAppbmRleCA1OGVjNWQ4Li4wODI1MTFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaW5jbHVkZV9zeXNfdHlwZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2luY2x1ZGVfc3lzX3R5cGVzLnBhdGNoCkBAIC0zLDEwICszLDEwIEBACiB1aS5jOjM0MDo1OiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3VfaW50MzJfdCc7IGRpZCB5b3UgbWVhbiAndWludDMyX3QnPwogICAgICB1X2ludDMyX3QgICAgIGFkZHI7CiAgICAgIF5+fn5+fn5+fgotSW5kZXg6IE9wZW5JUE1JLTIuMC4yMi91aS91aS5jCitJbmRleDogT3BlbklQTUktMi4wLjI0L3VpL3VpLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBPcGVuSVBNSS0yLjAuMjIub3JpZy91aS91aS5jCi0rKysgT3BlbklQTUktMi4wLjIyL3VpL3VpLmMKKy0tLSBPcGVuSVBNSS0yLjAuMjQub3JpZy91aS91aS5jCisrKysgT3BlbklQTUktMi4wLjI0L3VpL3VpLmMKIEBAIC00Miw2ICs0Miw3IEBACiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAgI2luY2x1ZGUgPHRpbWUuaD4KQEAgLTE0LDQgKzE0LDQgQEAKICsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgI2luY2x1ZGUgPGN0eXBlLmg+CiAgCi0gI2luY2x1ZGUgPE9wZW5JUE1JL3NlbGVjdG9yLmg+CisgI2luY2x1ZGUgPE9wZW5JUE1JL2lwbWlfZXJyLmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW52cG4vb3BlbnZwbl8yLjQuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTAwOTdmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGZ1bGwtZmVhdHVyZWQgU1NMIFZQTiBzb2x1dGlvbiB2aWEgdHVuIGRldmljZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbnZwbi5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWI2NDQ5MWVjOThlYjZjNjQ5M2FjNWU0MTE4ZjEwNyIKLURFUEVORFMgPSAibHpvIG9wZW5zc2wgaXByb3V0ZTIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAotCi1TUkNfVVJJID0gImh0dHA6Ly9zd3VwZGF0ZS5vcGVudnBuLm9yZy9jb21tdW5pdHkvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL29wZW52cG4gXAotICAgICAgICAgICBmaWxlOi8vb3BlbnZwbkAuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVudnBuLXZvbGF0aWxlLmNvbmYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlMTkyOWY4MmFmZjQwZjNkMTA1ZTVmNzJhYWNmZjljMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZWUzZDNjYTQ2Mjk2MGE1MGE2N2MwZWJkMTg2ZTAxYjZkMTNkYjcwMjc1MjA1NjYzNjk1MTUyYzlhY2E4NTc5IgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gKz0gIm9wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2Ugb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotQ0ZMQUdTICs9ICItZm5vLWlubGluZSIKLQotIyBJIHdhbnQgb3BlbnZwbiB0byBiZSBhYmxlIHRvIHJlYWQgcGFzc3dvcmQgZnJvbSBmaWxlIChocncpCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWlwcm91dGUyIgotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcnLCAnLS1kaXNhYmxlLXBsdWdpbi1hdXRoLXBhbScsIGQpfSIKLQotIyBFeHBsaWNpdGx5IHNwZWNpZnkgSVBST1VURSB0byBieXBhc3MgdGhlIGNvbmZpZ3VyZS10aW1lIGNoZWNrIGZvciAvc2Jpbi9pcCBvbiB0aGUgaG9zdC4KLUVYVFJBX09FQ09ORiArPSAiSVBST1VURT0ke2Jhc2Vfc2JpbmRpcn0vaXAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vb3BlbnZwbiAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9vcGVudnBuCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUKLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3NhbXBsZS9zYW1wbGUtY29uZmlnLWZpbGVzL2xvb3BiYWNrLXNlcnZlciAgJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvbG9vcGJhY2stc2VydmVyLmNvbmYKLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3NhbXBsZS9zYW1wbGUtY29uZmlnLWZpbGVzL2xvb3BiYWNrLWNsaWVudCAgJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvbG9vcGJhY2stY2xpZW50LmNvbmYKLSAgICBpbnN0YWxsIC1kbSA3NTUgJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvc2FtcGxlLWtleXMKLSAgICBpbnN0YWxsIC1tIDY0NCAke1N9L3NhbXBsZS9zYW1wbGUta2V5cy8qICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL3NhbXBsZS1rZXlzCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3BlbnZwbkAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLXNlcnZlci5zZXJ2aWNlCi0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3BlbnZwbkAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZQotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYgotICAgICAgICBpbnN0YWxsIC1kIC1tIDcxMCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliL29wZW52cG4KLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BlbnZwbi12b2xhdGlsZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvb3BlbnZwbi5jb25mCi0gICAgICAgIHNlZCAtaSAtZSAncyNATE9DQUxTVEFURURJUkAjJHtsb2NhbHN0YXRlZGlyfSNnJyAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL29wZW52cG4uY29uZgotICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICIgJHtQTn0tc2FtcGxlICIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS10dW4iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L29wZW52cG4vcGx1Z2lucy8uZGVidWciCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQgXAotICAgICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tc2FtcGxlICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stY2xpZW50LnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVudnBuL29wZW52cG5fMi40LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYWQ5OTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC40LmJiCkBAIC0wLDAgKzEsNjcgQEAKK1NVTU1BUlkgPSAiQSBmdWxsLWZlYXR1cmVkIFNTTCBWUE4gc29sdXRpb24gdmlhIHR1biBkZXZpY2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL29wZW52cG4uc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTliNjQ0OTFlYzk4ZWI2YzY0OTNhYzVlNDExOGYxMDciCitERVBFTkRTID0gImx6byBvcGVuc3NsIGlwcm91dGUyICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKKworU1JDX1VSSSA9ICJodHRwOi8vc3d1cGRhdGUub3BlbnZwbi5vcmcvY29tbXVuaXR5L3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVudnBuIFwKKyAgICAgICAgICAgZmlsZTovL29wZW52cG5ALnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vb3BlbnZwbi12b2xhdGlsZS5jb25mIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzA1YTc5ZDAwNTU1OGQ5NGZhMWUyYjc0ZTQ0MTNlOTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWFlODgzZDk1MjJjOWZhNmQxODllNWU0YWFhMDU4YTkzZWRkM2QwYjg5N2UzYzI2NjQxMDdjNDc4NTA5OWZjMyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ICs9ICJvcGVudnBuQGxvb3BiYWNrLXNlcnZlci5zZXJ2aWNlIG9wZW52cG5AbG9vcGJhY2stY2xpZW50LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK0NGTEFHUyArPSAiLWZuby1pbmxpbmUiCisKKyMgSSB3YW50IG9wZW52cG4gdG8gYmUgYWJsZSB0byByZWFkIHBhc3N3b3JkIGZyb20gZmlsZSAoaHJ3KQorRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1pcHJvdXRlMiIKK0VYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJywgJy0tZGlzYWJsZS1wbHVnaW4tYXV0aC1wYW0nLCBkKX0iCisKKyMgRXhwbGljaXRseSBzcGVjaWZ5IElQUk9VVEUgdG8gYnlwYXNzIHRoZSBjb25maWd1cmUtdGltZSBjaGVjayBmb3IgL3NiaW4vaXAgb24gdGhlIGhvc3QuCitFWFRSQV9PRUNPTkYgKz0gIklQUk9VVEU9JHtiYXNlX3NiaW5kaXJ9L2lwIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L29wZW52cG4gJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vb3BlbnZwbgorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zYW1wbGUvc2FtcGxlLWNvbmZpZy1maWxlcy9sb29wYmFjay1zZXJ2ZXIgICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL2xvb3BiYWNrLXNlcnZlci5jb25mCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zYW1wbGUvc2FtcGxlLWNvbmZpZy1maWxlcy9sb29wYmFjay1jbGllbnQgICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL2xvb3BiYWNrLWNsaWVudC5jb25mCisgICAgaW5zdGFsbCAtZG0gNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL3NhbXBsZS1rZXlzCisgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9zYW1wbGUvc2FtcGxlLWtleXMvKiAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9zYW1wbGUta2V5cworCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW52cG5ALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3BlbnZwbkAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW52cG5ALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stY2xpZW50LnNlcnZpY2UKKworICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtsb2NhbHN0YXRlZGlyfQorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIKKyAgICAgICAgaW5zdGFsbCAtZCAtbSA3MTAgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9vcGVudnBuCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wZW52cG4tdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL29wZW52cG4uY29uZgorICAgICAgICBzZWQgLWkgLWUgJ3MjQExPQ0FMU1RBVEVESVJAIyR7bG9jYWxzdGF0ZWRpcn0jZycgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9vcGVudnBuLmNvbmYKKyAgICBmaQorfQorCitQQUNLQUdFUyA9KyAiICR7UE59LXNhbXBsZSAiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtdHVuIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9vcGVudnBuL3BsdWdpbnMvLmRlYnVnIgorRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIFwKKyAgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LXNhbXBsZSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLXNlcnZlci5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3NtdHAvc3NtdHAvc3NtdHAtYnVnNTg0MTYyLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zc210cC9zc210cC9zc210cC1idWc1ODQxNjItZml4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwODdiYzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3NtdHAvc3NtdHAvc3NtdHAtYnVnNTg0MTYyLWZpeC5wYXRjaApAQCAtMCwwICsxLDEyNiBAQAorQnVnLURlYmlhbjogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy81ODQxNjIKK1JlcG9ydGVkLUJ5OiBDaHJpc3RvcGggQmllZGwgPGRlYmlhbi5heGhuQG1hbmNobWFsLmluLXVsbS5kZT4KK0ZvcndhcmRlZDogbm90LW5lZWRlZAorUmV2aWV3ZWQtQnk6IEFuaWJhbCBNb25zYWx2ZSBTYWxhemFyIDxhbmliYWxAZGViaWFuLm9yZz4KK0xhc3QtVXBkYXRlOiAyMDE0LTA4LTE1CisKK0Zyb206ICJEYW5pZWwgUmljaGFyZCBHLiIgPHNrdW5rQGlTS1VOSy5PUkc+CitTdWJqZWN0OiBSZTogc3NtdHA6IFBhcnRpYWwgbG9zcyBvZiBtZXNzYWdlIGJvZHksIHNlbmRpbmcgbWVzc2FnZSB0byB3cm9uZyByZWNpcGljaWVudHMKK0RhdGU6IFRodSwgMTkgSnVuIDIwMTQgMTQ6NDQ6MzAgLTA0MDAKKworQXR0YWNoZWQgaXMgYSBwYXRjaCBhZ2FpbnN0IHRoZSBvcmlnaW5hbCAyLjY0IHNvdXJjZSB0aGF0IHNob3VsZCBhZGRyZXNzCit0aGlzIGJ1ZywgYW5kIGhvcGVmdWxseSBub3QgYnJlYWsgYW55dGhpbmcuIEFuIG92ZXJ2aWV3IG9mIG15IGNoYW5nZXM6CisKKyogQWRkZWQgY29kZSB0byBzdGFuZGFyaXNlKCkgdG8gZHJvcCB0aGUgdHJhaWxpbmcgJ1xyJyBpZiB0aGUgbGluZQorICBvcmlnaW5hbGx5IGVuZGVkIHdpdGggIlxyXG4iLgorCisqIEFkZGVkIGEgY2hlY2sgdG8gaGVhZGVyX3BhcnNlKCkgdGhhdCBlZmZlY3RpdmVseSBjb252ZXJ0cyBhbiAiXHJcbiIgaW4KKyAgdGhlIGlucHV0IGludG8gJ1xuJy4KKworKiBBZGRlZCBhIGNvbmRpdGlvbmFsIHNvIHRoYXQgaGVhZGVyX3BhcnNlKCkgZG9lc24ndCBwYXNzIHRoZSBlbXB0eQorICBzdHJpbmcgdG8gaGVhZGVyX3NhdmUoKS0tLWEgYmVoYXZpb3IgSSBvYnNlcnZlZCBpbiB0ZXN0aW5nLCBhdCB0aGUgZW5kCisgIG9mIGEgaGVhZGVyIGJsb2NrIHdpdGggIlxyXG4iIGxpbmUgZW5kaW5ncy4KKworKiBTaW1wbGlmaWVkIHRoZSBsYXN0IGlmKGluX2hlYWRlcikgY29uZGl0aW9uYWwgaW4gaGVhZGVyX3BhcnNlKCksCisgIGJlY2F1c2UgaXQgZXJyb25lb3VzbHkgYXNzdW1lcyB0aGF0IGlmIGluX2hlYWRlciA9PSBUcnVlLCB0aGVuIGMgY291bGQKKyAgaGF2ZSBzb21lIHZhbHVlIG90aGVyIHRoYW4gRU9GLiAoU2VlIHRoZSBjb25kaXRpb24gb24gdGhlIHByZXZpb3VzCisgICJ3aGlsZSIgbG9vcCwgYW5kIHRoZSBsYWNrIG9mIGFueSBvdGhlciB3YXkgdG8gZXhpdCBzYWlkIGxvb3AuKQorCisgIGhlYWRlcl9wYXJzZSgpIHdpbGwgbm93IHByb3Blcmx5IGdyYWIgYSBoZWFkZXIgaWYgZmVkIGEgbWVzc2FnZQorICB3aXRob3V0IGEgYm9keSAoaS5lLiBubyAiXG5cbiIgZW5kaW5nIHRoZSBoZWFkZXIgYmxvY2spLCBhbHRob3VnaCB0aGlzCisgIGNvZGUgd2lsbCBzdGlsbCBkcm9wIGEgaGVhZGVyIGlmIHRoZXJlIGlzIG5vIG5ld2xpbmUgYXQgdGhlIGVuZC4KKworQ2hyaXN0b3BoLCB0aGFuayB5b3UgZm9yIHlvdXIgZXhjZWxsZW50IGFuYWx5c2lzLCBhbmQgdGhlIHRlc3QgY2FzZXMuIEkKK21hZGUgdXNlIG9mIHRoZW0sIGFuZCB3aXRoIG15IGNoYW5nZXMgc1NNVFAgYXBwZWFycyB0byBkbyB0aGUgcmlnaHQKK3RoaW5nLgorCitEZWJpYW4gcGF0Y2ggZnJvbTogaHR0cHM6Ly9zb3VyY2VzLmRlYmlhbi5uZXQvcGF0Y2hlcy9zc210cC8yLjY0LTgvCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2RlYmlhbl0KKworU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KKworSW5kZXg6IHNzbXRwLTIuNjQvc3NtdHAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNzbXRwLTIuNjQub3JpZy9zc210cC5jCisrKysgc3NtdHAtMi42NC9zc210cC5jCitAQCAtMzc1LDYgKzM3NSwxMiBAQCBib29sX3Qgc3RhbmRhcmRpc2UoY2hhciAqc3RyLCBib29sX3QgKmxpCisgCWlmKChwID0gc3RyY2hyKHN0ciwgJ1xuJykpKSB7CisgCQkqcCA9IChjaGFyKU5VTEw7CisgCQkqbGluZXN0YXJ0ID0gVHJ1ZTsKKysKKysJCS8qIElmIHRoZSBsaW5lIGVuZGVkIGluICJcclxuIiwgdGhlbiBkcm9wIHRoZSAnXHInIHRvbyAqLworKwkJc2wgPSBzdHJsZW4oc3RyKTsKKysJCWlmKHNsID49IDEgJiYgc3RyW3NsIC0gMV0gPT0gJ1xyJykgeworKwkJCXN0cltzbCAtIDFdID0gKGNoYXIpTlVMTDsKKysJCX0KKyAJfQorIAlyZXR1cm4obGVhZGluZ2RvdCk7CisgfQorQEAgLTc2OCw2ICs3NzQsMTQgQEAgdm9pZCBoZWFkZXJfcGFyc2UoRklMRSAqc3RyZWFtKQorIAkJfQorIAkJbGVuKys7CisgCisrCQlpZihsID09ICdccicgJiYgYyA9PSAnXG4nKSB7CisrCQkJLyogUHJvcGVybHkgaGFuZGxlIGlucHV0IHRoYXQgYWxyZWFkeSBoYXMgIlxyXG4iCisrCQkJICAgbGluZSBlbmRpbmdzOyBzZWUgaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNTg0MTYyICovCisrCQkJbCA9IChsZW4gPj0gMiA/ICoocSAtIDIpIDogJ1xuJyk7CisrCQkJcS0tOworKwkJCWxlbi0tOworKwkJfQorKworIAkJaWYobCA9PSAnXG4nKSB7CisgCQkJc3dpdGNoKGMpIHsKKyAJCQkJY2FzZSAnICc6CitAQCAtNzkwLDcgKzgwNCw5IEBAIHZvaWQgaGVhZGVyX3BhcnNlKEZJTEUgKnN0cmVhbSkKKyAJCQkJCQlpZigocSA9IHN0cnJjaHIocCwgJ1xuJykpKSB7CisgCQkJCQkJCSpxID0gKGNoYXIpTlVMTDsKKyAJCQkJCQl9CistCQkJCQkJaGVhZGVyX3NhdmUocCk7CisrCQkJCQkJaWYobGVuID4gMCkgeworKwkJCQkJCQloZWFkZXJfc2F2ZShwKTsKKysJCQkJCQl9CisgCisgCQkJCQkJcSA9IHA7CisgCQkJCQkJbGVuID0gMDsKK0BAIC04MDAsMzUgKzgxNiwxMiBAQCB2b2lkIGhlYWRlcl9wYXJzZShGSUxFICpzdHJlYW0pCisgCisgCQlsID0gYzsKKyAJfQorLQlpZihpbl9oZWFkZXIpIHsKKy0JCWlmKGwgPT0gJ1xuJykgeworLQkJCXN3aXRjaChjKSB7CistCQkJCWNhc2UgJyAnOgorLQkJCQljYXNlICdcdCc6CistCQkJCQkJLyogTXVzdCBpbnNlcnQgJ1xyJyBiZWZvcmUgJ1xuJ3MgZW1iZWRkZWQgaW4gaGVhZGVyCistCQkJCQkJICAgZmllbGRzIG90aGVyd2lzZSBxbWFpbCB3b24ndCBhY2NlcHQgb3VyIG1haWwKKy0JCQkJCQkgICBiZWNhdXNlIGEgYmFyZSAnXG4nIHZpb2xhdGVzIHNvbWUgUkZDICovCistCQkJCQkJCistCQkJCQkJKihxIC0gMSkgPSAnXHInOwkvKiBSZXBsYWNlIHByZXZpb3VzIFxuIHdpdGggXHIgKi8KKy0JCQkJCQkqcSsrID0gJ1xuJzsJCS8qIEluc2VydCBcbiAqLworLQkJCQkJCWxlbisrOworLQkJCQkJCQorLQkJCQkJCWJyZWFrOworLQorLQkJCQljYXNlICdcbic6CistCQkJCQkJaW5faGVhZGVyID0gRmFsc2U7CistCistCQkJCWRlZmF1bHQ6CistCQkJCQkJKnEgPSAoY2hhcilOVUxMOworLQkJCQkJCWlmKChxID0gc3RycmNocihwLCAnXG4nKSkpIHsKKy0JCQkJCQkJKnEgPSAoY2hhcilOVUxMOworLQkJCQkJCX0KKy0JCQkJCQloZWFkZXJfc2F2ZShwKTsKKy0KKy0JCQkJCQlxID0gcDsKKy0JCQkJCQlsZW4gPSAwOworLQkJCX0KKysJaWYoaW5faGVhZGVyICYmIGwgPT0gJ1xuJykgeworKwkJLyogR290IEVPRiB3aGlsZSByZWFkaW5nIHRoZSBoZWFkZXIgKi8KKysJCWlmKChxID0gc3RycmNocihwLCAnXG4nKSkpIHsKKysJCQkqcSA9IChjaGFyKU5VTEw7CisgCQl9CisrCQloZWFkZXJfc2F2ZShwKTsKKyAJfQorIAkodm9pZClmcmVlKHApOworIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zc210cC9zc210cF8yLjY0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3NzbXRwL3NzbXRwXzIuNjQuYmIKaW5kZXggOWQ0ODY0ZC4uMDdlM2ZmZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3NzbXRwL3NzbXRwXzIuNjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3NzbXRwL3NzbXRwXzIuNjQuYmIKQEAgLTEsMjUgKzEsMjkgQEAKIFNVTU1BUlkgPSAiZXh0cmVtZWx5IHNpbXBsZSBNVEEgdG8gZ2V0IG1haWwgb2ZmIHRoZSBzeXN0ZW0gdG8gYSBtYWlsIGh1YiIKIEhPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5xYS5kZWJpYW4ub3JnL3Mvc3NtdHAuaHRtbCIKLQogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBjNTZkYjAxNDNmNGY4MGMzNjllZTNhZjc0MjVhZjZlIgogCi1TUkNfVVJJID0gIlwKLSAgICAgICAgICAgJHtERUJJQU5fTUlSUk9SfS9tYWluL3MvJHtCUE59LyR7QlBOfV8ke1BWfS5vcmlnLnRhci5iejIgXAorU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vcy8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9zc210cC1idWc1ODQxNjItZml4LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2J1aWxkLW91c2lkZV9zcmNkaXIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdXNlLURFU1RESVIucGF0Y2ggXAotICAgICAgICAgICIKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjY1YjRlMGRmNDkzNGE2Y2QwOGM1MDZjYWJjYmU1ODRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIyYzM3ZGM5MGM4NzFlOGUwNTJiMmNhYjBhZDIxOWQwMTBmYTkzODYwOGNkNjZiMjFjOGYzYzc1OTA0NmZhMzYiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1BBQ0tBR0VDT05GSUcgPz0gInNzbCAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLS1lbmFibGUtc3NsLC0tZGlzYWJsZS1zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaW5ldDYsLS1kaXNhYmxlLWluZXQ2IgogCiBFWFRSQV9PRUNPTkYgKz0gIi0tbWFuZGlyPSR7bWFuZGlyfSIKIAogRVhUUkFfT0VNQUtFID0gIkdFTl9DT05GSUc9Jy9iaW4vdHJ1ZSciCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI2NWI0ZTBkZjQ5MzRhNmNkMDhjNTA2Y2FiY2JlNTg0ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMmMzN2RjOTBjODcxZThlMDUyYjJjYWIwYWQyMTlkMDEwZmE5Mzg2MDhjZDY2YjIxYzhmM2M3NTkwNDZmYTM2IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotREVQRU5EUyArPSAib3BlbnNzbCBpbmV0dXRpbHMiCitMREZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzc2wnLCAnLWxzc2wgLWxjcnlwdG8nLCAnJywgZCl9IgogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9LwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vZmlsZXMvMDAwMS1tZW1vcnkuaC1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9maWxlcy8wMDAxLW1lbW9yeS5oLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaAppbmRleCA3ZWJjMzk4Li4wMDE3OGM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9maWxlcy8wMDAxLW1lbW9yeS5oLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9maWxlcy8wMDAxLW1lbW9yeS5oLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaApAQCAtMSwxNSArMSwxNiBAQAotRnJvbSAyYTNhYjA0YmJkYzQ2MjQ3OTI4ODZhYTUxNTc5ZWFkYjQyN2VmOTllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzM2E1M2RjMTNmZDkyNDk0OWE1ODIxMDliNDVmZWRkOGQwYmVkNTliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMDc6NDI6MTEgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gbWVtb3J5Lmg6IEluY2x1ZGUgc3RkaW50LmggZm9yIHVpbnRwdHJfdAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzcmMvbGlic3Ryb25nc3dhbi91dGlscy91dGlscy9tZW1vcnkuaCB8IDIgKysKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvbGlic3Ryb25nc3dhbi91dGlscy91dGlscy9tZW1vcnkuaCBiL3NyYy9saWJzdHJvbmdzd2FuL3V0aWxzL3V0aWxzL21lbW9yeS5oCi1pbmRleCBiOTc4ZTdjLi41NWFhYWY1IDEwMDY0NAoraW5kZXggZTg0MDMzMC4uOGEzNTZhOCAxMDA2NDQKIC0tLSBhL3NyYy9saWJzdHJvbmdzd2FuL3V0aWxzL3V0aWxzL21lbW9yeS5oCiArKysgYi9zcmMvbGlic3Ryb25nc3dhbi91dGlscy91dGlscy9tZW1vcnkuaAogQEAgLTIyLDYgKzIyLDggQEAKQEAgLTIxLDYgKzIyLDMgQEAKICAvKioKICAgKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCBjb21wYXJlcyB0d28gYmluYXJ5IGJsb2JzIGZvciBlcXVhbGl0eQogICAqLwotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vZmlsZXMvZml4LWZ1bnRpb24tcGFyYW1ldGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vZmlsZXMvZml4LWZ1bnRpb24tcGFyYW1ldGVyLnBhdGNoCmluZGV4IGRhOTY5ODMuLmJlNjYwZDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL2ZpbGVzL2ZpeC1mdW50aW9uLXBhcmFtZXRlci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9maWxlcy9maXgtZnVudGlvbi1wYXJhbWV0ZXIucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1maXggdGhlIGZ1bmN0aW9uIHBhcmFtZXRlcgorRnJvbSA5Zjk3NDc5MzczZjNmY2VlZGM0NzEwNzRiODE0ODZkNzdhNDk2MThkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIlJveS5MaSIgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDQgTWFyIDIwMTQgMTQ6Mzg6NDIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIKIAogVXBzdHJlYW0tU3RhdHVzOiBwZW5kaW5nCiAKQEAgLTMxLDkgKzM0LDEwIEBACiAgICAgIzExIDB4NDgzNmMzNzggaW4gcHJvY2Vzc19tZXNzYWdlICh0aGlzPTB4NTE0MDA1ZjAsIG1lc3NhZ2U9MHg1MTUwMDc3OCkKICAgICAgICAgIGF0IHNhL2lrZV9zYS5jOjEzMTcKICAgICAjMTIgMHg0ODM2MjI3MCBpbiBleGVjdXRlICh0aGlzPTB4NTE1MDA4ZDApCi0gICAgICAgICBhdCBwcm9jZXNzaW5nL2pvYnMvcHJvY2Vzc19tZXNzYWdlX2pvYi5jOjc0IAorICAgICAgICAgYXQgcHJvY2Vzc2luZy9qb2JzL3Byb2Nlc3NfbWVzc2FnZV9qb2IuYzo3NAogCiBTaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9saWJzdHJvbmdzd2FuL3BsdWdpbnMvb3BlbnNzbC9vcGVuc3NsX2RpZmZpZV9oZWxsbWFuLmMgfCA4ICsrKysrKystCiAgc3JjL2xpYnN0cm9uZ3N3YW4vcGx1Z2lucy9vcGVuc3NsL29wZW5zc2xfZGlmZmllX2hlbGxtYW4uaCB8IDQgKysrLQpAQCAtNDEsMjAgKzQ1LDIwIEBACiAgMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYnN0cm9uZ3N3YW4vcGx1Z2lucy9vcGVuc3NsL29wZW5zc2xfZGlmZmllX2hlbGxtYW4uYyBiL3NyYy9saWJzdHJvbmdzd2FuL3BsdWdpbnMvb3BlbnNzbC9vcGVuc3NsX2RpZmZpZV9oZWxsbWFuLmMKLWluZGV4IGZmMzM4MjQuLmJkMjE0NDYgMTAwNjQ0CitpbmRleCA4ZTljMTE4Li5hNzNiMDM4IDEwMDY0NAogLS0tIGEvc3JjL2xpYnN0cm9uZ3N3YW4vcGx1Z2lucy9vcGVuc3NsL29wZW5zc2xfZGlmZmllX2hlbGxtYW4uYwogKysrIGIvc3JjL2xpYnN0cm9uZ3N3YW4vcGx1Z2lucy9vcGVuc3NsL29wZW5zc2xfZGlmZmllX2hlbGxtYW4uYwotQEAgLTE0Miw3ICsxNDIsNyBAQCBNRVRIT0QoZGlmZmllX2hlbGxtYW5fdCwgZGVzdHJveSwgdm9pZCwKK0BAIC0xOTIsNyArMTkyLDcgQEAgTUVUSE9EKGRpZmZpZV9oZWxsbWFuX3QsIGRlc3Ryb3ksIHZvaWQsCiAgLyoKICAgKiBEZXNjcmliZWQgaW4gaGVhZGVyLgogICAqLwogLW9wZW5zc2xfZGlmZmllX2hlbGxtYW5fdCAqb3BlbnNzbF9kaWZmaWVfaGVsbG1hbl9jcmVhdGUoCiArb3BlbnNzbF9kaWZmaWVfaGVsbG1hbl90ICpvcGVuc3NsX2RpZmZpZV9oZWxsbWFuX2NyZWF0ZV9jdXN0b20oCi0gCQkJCQkJCWRpZmZpZV9oZWxsbWFuX2dyb3VwX3QgZ3JvdXAsIGNodW5rX3QgZywgY2h1bmtfdCBwKQorIAkJCQkJCQkJCQkJZGlmZmllX2hlbGxtYW5fZ3JvdXBfdCBncm91cCwgLi4uKQogIHsKICAJcHJpdmF0ZV9vcGVuc3NsX2RpZmZpZV9oZWxsbWFuX3QgKnRoaXM7Ci1AQCAtMTk3LDUgKzE5NywxMSBAQCBvcGVuc3NsX2RpZmZpZV9oZWxsbWFuX3QgKm9wZW5zc2xfZGlmZmllX2hlbGxtYW5fY3JlYXRlKAotIAorQEAgLTI1NSw1ICsyNTUsMTEgQEAgb3BlbnNzbF9kaWZmaWVfaGVsbG1hbl90ICpvcGVuc3NsX2RpZmZpZV9oZWxsbWFuX2NyZWF0ZSgKKyAJREJHMihEQkdfTElCLCAic2l6ZSBvZiBESCBzZWNyZXQgZXhwb25lbnQ6ICVkIGJpdHMiLCBCTl9udW1fYml0cyhwcml2a2V5KSk7CiAgCXJldHVybiAmdGhpcy0+cHVibGljOwogIH0KICtvcGVuc3NsX2RpZmZpZV9oZWxsbWFuX3QgKm9wZW5zc2xfZGlmZmllX2hlbGxtYW5fY3JlYXRlKCBkaWZmaWVfaGVsbG1hbl9ncm91cF90IGdyb3VwKQpAQCAtNjYsMjYgKzcwLDI2IEBACiAgCiAgI2VuZGlmIC8qIE9QRU5TU0xfTk9fREggKi8KIGRpZmYgLS1naXQgYS9zcmMvbGlic3Ryb25nc3dhbi9wbHVnaW5zL29wZW5zc2wvb3BlbnNzbF9kaWZmaWVfaGVsbG1hbi5oIGIvc3JjL2xpYnN0cm9uZ3N3YW4vcGx1Z2lucy9vcGVuc3NsL29wZW5zc2xfZGlmZmllX2hlbGxtYW4uaAotaW5kZXggNTNkYzU5Yy4uZWI2OWVhYSAxMDA2NDQKK2luZGV4IDVkZTU1MjAuLjIyNTg2ZTAgMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3Ryb25nc3dhbi9wbHVnaW5zL29wZW5zc2wvb3BlbnNzbF9kaWZmaWVfaGVsbG1hbi5oCiArKysgYi9zcmMvbGlic3Ryb25nc3dhbi9wbHVnaW5zL29wZW5zc2wvb3BlbnNzbF9kaWZmaWVfaGVsbG1hbi5oCi1AQCAtNDQsOCArNDQsMTAgQEAgc3RydWN0IG9wZW5zc2xfZGlmZmllX2hlbGxtYW5fdCB7Ci0gICogQHBhcmFtIHAJCQkJY3VzdG9tIHByaW1lLCBpZiBNT0RQX0NVU1RPTQorQEAgLTQzLDggKzQzLDEwIEBAIHN0cnVjdCBvcGVuc3NsX2RpZmZpZV9oZWxsbWFuX3QgeworICAqIEBwYXJhbSAuLi4JCQlleHBlY3RzIGdlbmVyYXRvciBhbmQgcHJpbWUgYXMgY2h1bmtfdCBpZiBNT0RQX0NVU1RPTQogICAqIEByZXR1cm4JCQkJb3BlbnNzbF9kaWZmaWVfaGVsbG1hbl90IG9iamVjdCwgTlVMTCBpZiBub3Qgc3VwcG9ydGVkCiAgICovCiAtb3BlbnNzbF9kaWZmaWVfaGVsbG1hbl90ICpvcGVuc3NsX2RpZmZpZV9oZWxsbWFuX2NyZWF0ZSgKICtvcGVuc3NsX2RpZmZpZV9oZWxsbWFuX3QgKm9wZW5zc2xfZGlmZmllX2hlbGxtYW5fY3JlYXRlX2N1c3RvbSgKLSAJCQkJCQkJZGlmZmllX2hlbGxtYW5fZ3JvdXBfdCBncm91cCwgY2h1bmtfdCBnLCBjaHVua190IHApOworIAkJCQkJCQkJCQkJZGlmZmllX2hlbGxtYW5fZ3JvdXBfdCBncm91cCwgLi4uKTsKICtvcGVuc3NsX2RpZmZpZV9oZWxsbWFuX3QgKm9wZW5zc2xfZGlmZmllX2hlbGxtYW5fY3JlYXRlKAogKwkJCQkJCQlkaWZmaWVfaGVsbG1hbl9ncm91cF90IGdyb3VwKTsKICAKICAjZW5kaWYgLyoqIE9QRU5TU0xfRElGRklFX0hFTExNQU5fSF8gQH0qLwogIAogZGlmZiAtLWdpdCBhL3NyYy9saWJzdHJvbmdzd2FuL3BsdWdpbnMvb3BlbnNzbC9vcGVuc3NsX3BsdWdpbi5jIGIvc3JjL2xpYnN0cm9uZ3N3YW4vcGx1Z2lucy9vcGVuc3NsL29wZW5zc2xfcGx1Z2luLmMKLWluZGV4IGZmMjUwODYuLmM3Njg3M2QgMTAwNjQ0CitpbmRleCA4YjBhN2M1Li4xMTRkNTc1IDEwMDY0NAogLS0tIGEvc3JjL2xpYnN0cm9uZ3N3YW4vcGx1Z2lucy9vcGVuc3NsL29wZW5zc2xfcGx1Z2luLmMKICsrKyBiL3NyYy9saWJzdHJvbmdzd2FuL3BsdWdpbnMvb3BlbnNzbC9vcGVuc3NsX3BsdWdpbi5jCi1AQCAtMzg4LDYgKzM4OCw3IEBAIE1FVEhPRChwbHVnaW5fdCwgZ2V0X2ZlYXR1cmVzLCBpbnQsCitAQCAtNjA5LDYgKzYwOSw3IEBAIE1FVEhPRChwbHVnaW5fdCwgZ2V0X2ZlYXR1cmVzLCBpbnQsCiAgCQkJUExVR0lOX1BST1ZJREUoREgsIE1PRFBfMTAyNF9CSVQpLAogIAkJCVBMVUdJTl9QUk9WSURFKERILCBNT0RQXzEwMjRfMTYwKSwKICAJCQlQTFVHSU5fUFJPVklERShESCwgTU9EUF83NjhfQklUKSwKQEAgLTkzLDYgKzk3LDMgQEAKICAJCQlQTFVHSU5fUFJPVklERShESCwgTU9EUF9DVVNUT00pLAogICNlbmRpZgogICNpZm5kZWYgT1BFTlNTTF9OT19SU0EKLS0tIAotMS44LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjUuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL3N0cm9uZ3N3YW5fNS41LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmYjU2YmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJzdHJvbmdTd2FuIGlzIGFuIE9wZW5Tb3VyY2UgSVBzZWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBcCi1MaW51eCBvcGVyYXRpbmcgc3lzdGVtLiIKLVNVTU1BUlkgPSAic3Ryb25nU3dhbiBpcyBhbiBPcGVuU291cmNlIElQc2VjIGltcGxlbWVudGF0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zdHJvbmdzd2FuLm9yZyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJnbXAgb3BlbnNzbCBmbGV4LW5hdGl2ZSBmbGV4IGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuc3Ryb25nc3dhbi5vcmcvc3Ryb25nc3dhbi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1mdW50aW9uLXBhcmFtZXRlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbW9yeS5oLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRhZmZmZTNjMjE5YmIyZTA0ZjA5NTEwOTA1YWY4MzZiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM1ZWE1NGIxOTkxNzQ3MDhkZTExYWY5YjhmNGVjZjI4YjViMDc0M2Q0YmMwZTM4MGU3NDFmMjViMjhjMGY4ZDQiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAtLXdpdGhvdXQtbGliLXByZWZpeCBcCi0iCi0KLUVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLycsICctLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXInLCBkKX0iCi0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gImNoYXJvbiBjdXJsIGdtcCBvcGVuc3NsIHN0cm9rZSBzcWxpdGUzIFwKLSAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGRhcCcsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2Flc25pXSA9ICItLWVuYWJsZS1hZXNuaSwtLWRpc2FibGUtYWVzbmksLCR7UE59LXBsdWdpbi1hZXNuaSIKLVBBQ0tBR0VDT05GSUdbY2hhcm9uXSA9ICItLWVuYWJsZS1jaGFyb24sLS1kaXNhYmxlLWNoYXJvbiwiCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCwke1BOfS1wbHVnaW4tY3VybCIKLVBBQ0tBR0VDT05GSUdbZ21wXSA9ICItLWVuYWJsZS1nbXAsLS1kaXNhYmxlLWdtcCxnbXAsJHtQTn0tcGx1Z2luLWdtcCIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCxvcGVubGRhcCwke1BOfS1wbHVnaW4tbGRhcCIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsJHtQTn0tcGx1Z2luLW15c3FsIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wsJHtQTn0tcGx1Z2luLW9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NjZXBdID0gIi0tZW5hYmxlLXNjZXBjbGllbnQsLS1kaXNhYmxlLXNjZXBjbGllbnQsIgotUEFDS0FHRUNPTkZJR1tzb3VwXSA9ICItLWVuYWJsZS1zb3VwLC0tZGlzYWJsZS1zb3VwLGxpYnNvdXAtMi40LCR7UE59LXBsdWdpbi1zb3VwIgotUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsLS1kaXNhYmxlLXNxbGl0ZSxzcWxpdGUzLCR7UE59LXBsdWdpbi1zcWxpdGUiCi1QQUNLQUdFQ09ORklHW3N0cm9rZV0gPSAiLS1lbmFibGUtc3Ryb2tlLC0tZGlzYWJsZS1zdHJva2UsLCR7UE59LXBsdWdpbi1zdHJva2UiCi1QQUNLQUdFQ09ORklHW3N3YW5jdGxdID0gIi0tZW5hYmxlLXN3YW5jdGwsLS1kaXNhYmxlLXN3YW5jdGwsLGxpYmdjYyIKLQotIyByZXF1aXJlcyBzd2FuY3RsCi1QQUNLQUdFQ09ORklHW3N5c3RlbWQtY2hhcm9uXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQsIgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLWlwc2VjIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU30iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7YmluZGlyfS8uZGVidWcgJHtsaWJkaXJ9L2lwc2VjLy5kZWJ1ZyAke2xpYmV4ZWNkaXJ9L2lwc2VjLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9L2lwc2VjLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9pcHNlYy8qLmEiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyouY29uZiAke3N5c2NvbmZkaXJ9L2lwc2VjLmQvKi5jb25mICR7c3lzY29uZmRpcn0vc3Ryb25nc3dhbi5kLyouY29uZiIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXBsdWdpbnMiCi1BTExPV19FTVBUWV8ke1BOfS1wbHVnaW5zID0gIjEiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1wbHVnaW4tLiokIgotTk9BVVRPUEFDS0FHRURFQlVHID0gIjEiCi0KLXB5dGhvbiBzcGxpdF9zdHJvbmdzd2FuX3BsdWdpbnMgKCkgewotICAgIHN5c2NvbmZkaXIgPSBkLmV4cGFuZCgnJHtzeXNjb25mZGlyfS9zdHJvbmdzd2FuLmQvY2hhcm9uJykKLSAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2lwc2VjL3BsdWdpbnMnKQotICAgIGRiZ2xpYmRpciA9IG9zLnBhdGguam9pbihsaWJkaXIsICcuZGVidWcnKQotCi0gICAgZGVmIGFkZF9wbHVnaW5fY29uZihmLCBwa2csIGZpbGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuLCBtb2R1bGVuYW1lKToKLSAgICAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJywgVHJ1ZSkKLSAgICAgICAgb2xkZmlsZXMgPSBkLmdldFZhcignQ09ORkZJTEVTXycgKyBwa2csIFRydWUpCi0gICAgICAgIG5ld2ZpbGUgPSAnLycgKyBvcy5wYXRoLnJlbHBhdGgoZiwgZHZhcikKLQotICAgICAgICBpZiBub3Qgb2xkZmlsZXM6Ci0gICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG5ld2ZpbGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG9sZGZpbGVzICsgIiAiICsgbmV3ZmlsZSkKLQotICAgIHNwbGl0X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5zbycsICcke1BOfS1wbHVnaW4tJXMnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4nLCBwcmVwZW5kPVRydWUpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzY29uZmRpciwgJyguKilcLmNvbmYnLCAnJHtQTn0tcGx1Z2luLSVzJywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luJywgcHJlcGVuZD1UcnVlLCBob29rPWFkZF9wbHVnaW5fY29uZikKLQotICAgIHNwbGl0X2RiZ19wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGRiZ2xpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwuc28nLCAnJHtQTn0tcGx1Z2luLSVzLWRiZycsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERlYnVnZ2luZyBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGJnJykKLSAgICBzcGxpdF9kZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmxhJywgJyR7UE59LXBsdWdpbi0lcy1kZXYnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZXZlbG9wbWVudCBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKLSAgICBzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmEnLCAnJHtQTn0tcGx1Z2luLSVzLXN0YXRpY2RldicsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERldmVsb3BtZW50IGZpbGVzIChTdGF0aWMgTGlicmFyaWVzKScsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tc3RhdGljZGV2JykKLQotICAgIGlmIHNwbGl0X3BhY2thZ2VzOgotICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCi0gICAgICAgIGQuc2V0VmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXBsdWdpbnMnLCAnICcuam9pbihzcGxpdF9wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRiZycsICcgJyArICcgJy5qb2luKHNwbGl0X2RiZ19wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRldicsICcgJyArICcgJy5qb2luKHNwbGl0X2Rldl9wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXN0YXRpY2RldicsICcgJyArICcgJy5qb2luKHNwbGl0X3N0YXRpY2Rldl9wYWNrYWdlcykpCi19Ci0KLVBBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic3BsaXRfc3Ryb25nc3dhbl9wbHVnaW5zICIKLQotIyBJbnN0YWxsIHNvbWUgZGVmYXVsdCBwbHVnaW5zIGJhc2VkIG9uIGRlZmF1bHQgc3Ryb25nU3dhbiAuL2NvbmZpZ3VyZSBvcHRpb25zCi0jIFNlZSBodHRwczovL3dpa2kuc3Ryb25nc3dhbi5vcmcvcHJvamVjdHMvc3Ryb25nc3dhbi93aWtpL1BsdWdpbmxpc3QKLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQTn0tcGx1Z2luLWFlcyBcCi0gICAgJHtQTn0tcGx1Z2luLWF0dHIgXAotICAgICR7UE59LXBsdWdpbi1jbWFjIFwKLSAgICAke1BOfS1wbHVnaW4tY29uc3RyYWludHMgXAotICAgICR7UE59LXBsdWdpbi1kZXMgXAotICAgICR7UE59LXBsdWdpbi1kbnNrZXkgXAotICAgICR7UE59LXBsdWdpbi1obWFjIFwKLSAgICAke1BOfS1wbHVnaW4ta2VybmVsLW5ldGxpbmsgXAotICAgICR7UE59LXBsdWdpbi1tZDUgXAotICAgICR7UE59LXBsdWdpbi1ub25jZSBcCi0gICAgJHtQTn0tcGx1Z2luLXBlbSBcCi0gICAgJHtQTn0tcGx1Z2luLXBncCBcCi0gICAgJHtQTn0tcGx1Z2luLXBrY3MxIFwKLSAgICAke1BOfS1wbHVnaW4tcGtjczcgXAotICAgICR7UE59LXBsdWdpbi1wa2NzOCBcCi0gICAgJHtQTn0tcGx1Z2luLXBrY3MxMiBcCi0gICAgJHtQTn0tcGx1Z2luLXB1YmtleSBcCi0gICAgJHtQTn0tcGx1Z2luLXJhbmRvbSBcCi0gICAgJHtQTn0tcGx1Z2luLXJjMiBcCi0gICAgJHtQTn0tcGx1Z2luLXJlc29sdmUgXAotICAgICR7UE59LXBsdWdpbi1yZXZvY2F0aW9uIFwKLSAgICAke1BOfS1wbHVnaW4tc2hhMSBcCi0gICAgJHtQTn0tcGx1Z2luLXNoYTIgXAotICAgICR7UE59LXBsdWdpbi1zb2NrZXQtZGVmYXVsdCBcCi0gICAgJHtQTn0tcGx1Z2luLXNzaGtleSBcCi0gICAgJHtQTn0tcGx1Z2luLXVwZG93biBcCi0gICAgJHtQTn0tcGx1Z2luLXZpY2kgXAotICAgICR7UE59LXBsdWdpbi14NTA5IFwKLSAgICAke1BOfS1wbHVnaW4teGF1dGgtZ2VuZXJpYyBcCi0gICAgJHtQTn0tcGx1Z2luLXhjYmMgXAotICAgICIKLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzd2FuY3RsJywgJyR7QlBOfS1zd2FuY3RsLnNlcnZpY2UnLCAnJHtCUE59LnNlcnZpY2UnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9zdHJvbmdzd2FuXzUuNi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmZlMWYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjYuMi5iYgpAQCAtMCwwICsxLDEzMiBAQAorREVTQ1JJUFRJT04gPSAic3Ryb25nU3dhbiBpcyBhbiBPcGVuU291cmNlIElQc2VjIGltcGxlbWVudGF0aW9uIGZvciB0aGUgXAorTGludXggb3BlcmF0aW5nIHN5c3RlbS4iCitTVU1NQVJZID0gInN0cm9uZ1N3YW4gaXMgYW4gT3BlblNvdXJjZSBJUHNlYyBpbXBsZW1lbnRhdGlvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuc3Ryb25nc3dhbi5vcmciCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAiZ21wIG9wZW5zc2wgZmxleC1uYXRpdmUgZmxleCBiaXNvbi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnN0cm9uZ3N3YW4ub3JnL3N0cm9uZ3N3YW4tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtZnVudGlvbi1wYXJhbWV0ZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZW1vcnkuaC1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NmFhM2FhMThmYmM0YmQ1MjhmOWEwMzQ1Y2U3OTkxMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMGE2MGEzMGViZjNjNTM0YzIyMzU1OWUxNjg2NDk3YTIxZGVkNzA5YTVkNjA1YzUxMjNjMmY1MmJjYzIyZTkyIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgLS13aXRob3V0LWxpYi1wcmVmaXggXAorIgorCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8nLCAnLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyJywgZCl9IgorCisKK1BBQ0tBR0VDT05GSUcgPz89ICJjaGFyb24gY3VybCBnbXAgb3BlbnNzbCBzdHJva2Ugc3FsaXRlMyBcCisgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2xkYXAnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thZXNuaV0gPSAiLS1lbmFibGUtYWVzbmksLS1kaXNhYmxlLWFlc25pLCwke1BOfS1wbHVnaW4tYWVzbmkiCitQQUNLQUdFQ09ORklHW2NoYXJvbl0gPSAiLS1lbmFibGUtY2hhcm9uLC0tZGlzYWJsZS1jaGFyb24sIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwsJHtQTn0tcGx1Z2luLWN1cmwiCitQQUNLQUdFQ09ORklHW2dtcF0gPSAiLS1lbmFibGUtZ21wLC0tZGlzYWJsZS1nbXAsZ21wLCR7UE59LXBsdWdpbi1nbXAiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLWxkYXAsLS1kaXNhYmxlLWxkYXAsb3BlbmxkYXAsJHtQTn0tcGx1Z2luLWxkYXAiCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLWVuYWJsZS1teXNxbCwtLWRpc2FibGUtbXlzcWwsbXlzcWw1LCR7UE59LXBsdWdpbi1teXNxbCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsLCR7UE59LXBsdWdpbi1vcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tzY2VwXSA9ICItLWVuYWJsZS1zY2VwY2xpZW50LC0tZGlzYWJsZS1zY2VwY2xpZW50LCIKK1BBQ0tBR0VDT05GSUdbc291cF0gPSAiLS1lbmFibGUtc291cCwtLWRpc2FibGUtc291cCxsaWJzb3VwLTIuNCwke1BOfS1wbHVnaW4tc291cCIKK1BBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLC0tZGlzYWJsZS1zcWxpdGUsc3FsaXRlMywke1BOfS1wbHVnaW4tc3FsaXRlIgorUEFDS0FHRUNPTkZJR1tzdHJva2VdID0gIi0tZW5hYmxlLXN0cm9rZSwtLWRpc2FibGUtc3Ryb2tlLCwke1BOfS1wbHVnaW4tc3Ryb2tlIgorUEFDS0FHRUNPTkZJR1tzd2FuY3RsXSA9ICItLWVuYWJsZS1zd2FuY3RsLC0tZGlzYWJsZS1zd2FuY3RsLCxsaWJnY2MiCisKKyMgcmVxdWlyZXMgc3dhbmN0bAorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kLWNoYXJvbl0gPSAiLS1lbmFibGUtc3lzdGVtZCwtLWRpc2FibGUtc3lzdGVtZCxzeXN0ZW1kLCIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZCBwa2djb25maWcKKworUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1pcHNlYyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9pcHNlYy9saWIqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZGJnICs9ICIke2JpbmRpcn0vLmRlYnVnICR7bGliZGlyfS9pcHNlYy8uZGVidWcgJHtsaWJleGVjZGlyfS9pcHNlYy8uZGVidWciCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9pcHNlYy9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS9pcHNlYy8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vaXBzZWMvKi5hIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS8qLmNvbmYgJHtzeXNjb25mZGlyfS9pcHNlYy5kLyouY29uZiAke3N5c2NvbmZkaXJ9L3N0cm9uZ3N3YW4uZC8qLmNvbmYiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1wbHVnaW5zIgorQUxMT1dfRU1QVFlfJHtQTn0tcGx1Z2lucyA9ICIxIgorCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tcGx1Z2luLS4qJCIKK05PQVVUT1BBQ0tBR0VERUJVRyA9ICIxIgorCitweXRob24gc3BsaXRfc3Ryb25nc3dhbl9wbHVnaW5zICgpIHsKKyAgICBzeXNjb25mZGlyID0gZC5leHBhbmQoJyR7c3lzY29uZmRpcn0vc3Ryb25nc3dhbi5kL2NoYXJvbicpCisgICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9pcHNlYy9wbHVnaW5zJykKKyAgICBkYmdsaWJkaXIgPSBvcy5wYXRoLmpvaW4obGliZGlyLCAnLmRlYnVnJykKKworICAgIGRlZiBhZGRfcGx1Z2luX2NvbmYoZiwgcGtnLCBmaWxlX3JlZ2V4LCBvdXRwdXRfcGF0dGVybiwgbW9kdWxlbmFtZSk6CisgICAgICAgIGR2YXIgPSBkLmdldFZhcignUEtHRCcsIFRydWUpCisgICAgICAgIG9sZGZpbGVzID0gZC5nZXRWYXIoJ0NPTkZGSUxFU18nICsgcGtnLCBUcnVlKQorICAgICAgICBuZXdmaWxlID0gJy8nICsgb3MucGF0aC5yZWxwYXRoKGYsIGR2YXIpCisKKyAgICAgICAgaWYgbm90IG9sZGZpbGVzOgorICAgICAgICAgICAgZC5zZXRWYXIoJ0NPTkZGSUxFU18nICsgcGtnLCBuZXdmaWxlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZC5zZXRWYXIoJ0NPTkZGSUxFU18nICsgcGtnLCBvbGRmaWxlcyArICIgIiArIG5ld2ZpbGUpCisKKyAgICBzcGxpdF9wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwuc28nLCAnJHtQTn0tcGx1Z2luLSVzJywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luJywgcHJlcGVuZD1UcnVlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c2NvbmZkaXIsICcoLiopXC5jb25mJywgJyR7UE59LXBsdWdpbi0lcycsICdzdHJvbmdTd2FuICVzIHBsdWdpbicsIHByZXBlbmQ9VHJ1ZSwgaG9vaz1hZGRfcGx1Z2luX2NvbmYpCisKKyAgICBzcGxpdF9kYmdfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBkYmdsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLnNvJywgJyR7UE59LXBsdWdpbi0lcy1kYmcnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZWJ1Z2dpbmcgZmlsZXMnLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRiZycpCisgICAgc3BsaXRfZGV2X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5sYScsICcke1BOfS1wbHVnaW4tJXMtZGV2JywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luIC0gRGV2ZWxvcG1lbnQgZmlsZXMnLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicpCisgICAgc3BsaXRfc3RhdGljZGV2X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5hJywgJyR7UE59LXBsdWdpbi0lcy1zdGF0aWNkZXYnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZXZlbG9wbWVudCBmaWxlcyAoU3RhdGljIExpYnJhcmllcyknLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JyR7UE59LXN0YXRpY2RldicpCisKKyAgICBpZiBzcGxpdF9wYWNrYWdlczoKKyAgICAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQorICAgICAgICBkLnNldFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1wbHVnaW5zJywgJyAnLmpvaW4oc3BsaXRfcGFja2FnZXMpKQorICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1kYmcnLCAnICcgKyAnICcuam9pbihzcGxpdF9kYmdfcGFja2FnZXMpKQorICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1kZXYnLCAnICcgKyAnICcuam9pbihzcGxpdF9kZXZfcGFja2FnZXMpKQorICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1zdGF0aWNkZXYnLCAnICcgKyAnICcuam9pbihzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMpKQorfQorCitQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNwbGl0X3N0cm9uZ3N3YW5fcGx1Z2lucyAiCisKKyMgSW5zdGFsbCBzb21lIGRlZmF1bHQgcGx1Z2lucyBiYXNlZCBvbiBkZWZhdWx0IHN0cm9uZ1N3YW4gLi9jb25maWd1cmUgb3B0aW9ucworIyBTZWUgaHR0cHM6Ly93aWtpLnN0cm9uZ3N3YW4ub3JnL3Byb2plY3RzL3N0cm9uZ3N3YW4vd2lraS9QbHVnaW5saXN0CitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UE59LXBsdWdpbi1hZXMgXAorICAgICR7UE59LXBsdWdpbi1hdHRyIFwKKyAgICAke1BOfS1wbHVnaW4tY21hYyBcCisgICAgJHtQTn0tcGx1Z2luLWNvbnN0cmFpbnRzIFwKKyAgICAke1BOfS1wbHVnaW4tZGVzIFwKKyAgICAke1BOfS1wbHVnaW4tZG5za2V5IFwKKyAgICAke1BOfS1wbHVnaW4taG1hYyBcCisgICAgJHtQTn0tcGx1Z2luLWtlcm5lbC1uZXRsaW5rIFwKKyAgICAke1BOfS1wbHVnaW4tbWQ1IFwKKyAgICAke1BOfS1wbHVnaW4tbm9uY2UgXAorICAgICR7UE59LXBsdWdpbi1wZW0gXAorICAgICR7UE59LXBsdWdpbi1wZ3AgXAorICAgICR7UE59LXBsdWdpbi1wa2NzMSBcCisgICAgJHtQTn0tcGx1Z2luLXBrY3M3IFwKKyAgICAke1BOfS1wbHVnaW4tcGtjczggXAorICAgICR7UE59LXBsdWdpbi1wa2NzMTIgXAorICAgICR7UE59LXBsdWdpbi1wdWJrZXkgXAorICAgICR7UE59LXBsdWdpbi1yYW5kb20gXAorICAgICR7UE59LXBsdWdpbi1yYzIgXAorICAgICR7UE59LXBsdWdpbi1yZXNvbHZlIFwKKyAgICAke1BOfS1wbHVnaW4tcmV2b2NhdGlvbiBcCisgICAgJHtQTn0tcGx1Z2luLXNoYTEgXAorICAgICR7UE59LXBsdWdpbi1zaGEyIFwKKyAgICAke1BOfS1wbHVnaW4tc29ja2V0LWRlZmF1bHQgXAorICAgICR7UE59LXBsdWdpbi1zc2hrZXkgXAorICAgICR7UE59LXBsdWdpbi11cGRvd24gXAorICAgICR7UE59LXBsdWdpbi12aWNpIFwKKyAgICAke1BOfS1wbHVnaW4teDUwOSBcCisgICAgJHtQTn0tcGx1Z2luLXhhdXRoLWdlbmVyaWMgXAorICAgICR7UE59LXBsdWdpbi14Y2JjIFwKKyAgICAke1BOfS1wbHVnaW4tY3VydmUyNTUxOSBcCisgICAgIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3N3YW5jdGwnLCAnJHtCUE59LXN3YW5jdGwuc2VydmljZScsICcke0JQTn0uc2VydmljZScsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90Y3BkdW1wL3RjcGR1bXAvYWRkLXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcGR1bXAvdGNwZHVtcC9hZGQtcHRlc3QucGF0Y2gKaW5kZXggMTk2Y2VjNy4uYjcxNDM1YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcGR1bXAvdGNwZHVtcC9hZGQtcHRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcGR1bXAvdGNwZHVtcC9hZGQtcHRlc3QucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDdiMjU5NTgwODAwZTI1OWQyMzIyMjlkYzg5Zjk3MDU4YjU2ZTJmZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhlZTFhYjFhYzg5NTU3ZDQ4YWMxYWI3ZGRjYzNjNTFiZTliNzM0YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiAiSG9uZ2p1bi5ZYW5nIiA8aG9uZ2p1bi55YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDIyIE9jdCAyMDE0IDEwOjAyOjQ4ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFkZCBwdGVzdCBmb3IgdGNwZHVtcApAQCAtNiwxNSArNiwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEhvbmdqdW4uWWFuZyA8aG9uZ2p1bi55YW5nQHdpbmRyaXZlci5jb20+CisKIC0tLQogIE1ha2VmaWxlLmluIHwgMTAgKysrKysrKysrLQogIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IHRjcGR1bXAtNC45LjAvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0Y3BkdW1wLTQuOS4wLm9yaWcvTWFrZWZpbGUuaW4KLSsrKyB0Y3BkdW1wLTQuOS4wL01ha2VmaWxlLmluCi1AQCAtNDM2LDkgKzQzNiwxNyBAQCBkaXN0Y2xlYW46CitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggMDk0MWYwZS4uM2NlNDBjNiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTQzNyw5ICs0MzcsMTcgQEAgZGlzdGNsZWFuOgogIAkgICAgdGVzdHMvZmFpbHVyZS1vdXRwdXRzLnR4dAogIAlybSAtcmYgYXV0b200dGUuY2FjaGUgdGVzdHMvRElGRiB0ZXN0cy9ORVcKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90Y3BkdW1wL3RjcGR1bXAvdW5uZWNlc3NhcnktdG8tY2hlY2stbGlicGNhcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90Y3BkdW1wL3RjcGR1bXAvdW5uZWNlc3NhcnktdG8tY2hlY2stbGlicGNhcC5wYXRjaAppbmRleCBkN2EzYWMyLi44Y2VmYWRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdGNwZHVtcC90Y3BkdW1wL3VubmVjZXNzYXJ5LXRvLWNoZWNrLWxpYnBjYXAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcGR1bXAvdGNwZHVtcC91bm5lY2Vzc2FyeS10by1jaGVjay1saWJwY2FwLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotdW5uZWNlc3NhcnkgdG8gY2hlY2sgbGlicGNhcAorRnJvbSA3NDFkNzdlNDJmYzRhZjQ5ODA0ZjdlZTQzYjcyMzdlMDE2MzNjYmNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCA4IEp1bCAyMDE0IDEzOjIwOjQ3ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHVubmVjZXNzYXJ5IHRvIGNoZWNrIGxpYnBjYXAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKQEAgLTExLDIzICsxNCwyMSBAQAogY2hlY2sgaWYgbGlicGNhcCBleGlzdGVkLgogCiBTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGNvbmZpZ3VyZS5pbiB8ICAgIDIgKy0KKyBjb25maWd1cmUuaW4gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDA2ZmFkZTEuLjkxMjVkZTcgMTAwNjQ0CitpbmRleCBiMjMwNWE1Li5iM2I1ZGJmIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmluCiArKysgYi9jb25maWd1cmUuaW4KLUBAIC01NjcsNyArNTY3LDcgQEAgQUNfU0VBUkNIX0xJQlMoZ2V0cnBjYnludW1iZXIsIG5zbCwKLSBkbmwgQUNfQ0hFQ0tfTElCKHosIHVuY29tcHJlc3MpCi0gZG5sIEFDX0NIRUNLX0hFQURFUlMoemxpYi5oKQorQEAgLTQxOCw3ICs0MTgsNyBAQCBkbmwgU29tZSBwbGF0Zm9ybXMgbWF5IG5lZWQgLWxuc2wgZm9yIGdldHJwY2J5bnVtYmVyLgorIEFDX1NFQVJDSF9MSUJTKGdldHJwY2J5bnVtYmVyLCBuc2wsCisgICAgIEFDX0RFRklORShIQVZFX0dFVFJQQ0JZTlVNQkVSLCAxLCBbZGVmaW5lIGlmIHlvdSBoYXZlIGdldHJwY2J5bnVtYmVyKCldKSkKICAKIC1BQ19MQkxfTElCUENBUChWX1BDQVBERVAsIFZfSU5DTFMpCiArI0FDX0xCTF9MSUJQQ0FQKFZfUENBUERFUCwgVl9JTkNMUykKICAKICAjCiAgIyBDaGVjayBmb3IgdGhlc2UgYWZ0ZXIgQUNfTEJMX0xJQlBDQVAsIHNvIHdlIGxpbmsgd2l0aCB0aGUgYXBwcm9wcmlhdGUKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdGlueXByb3h5L3Rpbnlwcm94eV8xLjguNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90aW55cHJveHkvdGlueXByb3h5XzEuOC40LmJiCmluZGV4IGU4MDI1YzQuLjk4MTkyZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90aW55cHJveHkvdGlueXByb3h5XzEuOC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90aW55cHJveHkvdGlueXByb3h5XzEuOC40LmJiCkBAIC0yMyw4ICsyMyw4IEBACiAKICNVc2VyIHNwZWNpZmljCiBVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICJub2JvZHkiCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSB0aW55cHJveHkiCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAvZGV2L251bGwgXAorICAgICAgICAgICAgICAgICAgICAgICAtLW5vLXVzZXItZ3JvdXAgLS1naWQgbm9ncm91cCB0aW55cG94eSIKIAogU1lTVEVNRF9QQUNLQUdFUyArPSAiJHtCUE59IgogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInRpbnlwcm94eS5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay9maWxlcy9saWJnY3J5cHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL2ZpbGVzL2xpYmdjcnlwdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWE1OGY3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay9maWxlcy9saWJnY3J5cHQucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAordXNlIE9SIFBLR19DT05GSUcgc2NoZW1lIGZvciBsaWJnY3J5cHQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIE9FIHNwZWNpZmljCisKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CisKK0luZGV4OiB3aXJlc2hhcmstMi40LjQvbTQvbGliZ2NyeXB0Lm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2lyZXNoYXJrLTIuNC40Lm9yaWcvbTQvbGliZ2NyeXB0Lm00CisrKysgd2lyZXNoYXJrLTIuNC40L200L2xpYmdjcnlwdC5tNAorQEAgLTI3LDExICsyNywxMSBAQCBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAorICAgICAgbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXg9IiR3aXRodmFsIiwgbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXg9IiIpCisgICBpZiB0ZXN0IHgkbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXggIT0geCA7IHRoZW4KKyAgICAgIGlmIHRlc3QgeCR7TElCR0NSWVBUX0NPTkZJRytzZXR9ICE9IHhzZXQgOyB0aGVuCistICAgICAgICBMSUJHQ1JZUFRfQ09ORklHPSRsaWJnY3J5cHRfY29uZmlnX3ByZWZpeC9iaW4vbGliZ2NyeXB0LWNvbmZpZworKyAgICAgICAgTElCR0NSWVBUX0NPTkZJRz0kbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXgvbGliZ2NyeXB0LnBjCisgICAgICBmaQorICAgZmkKKyAKKy0gIEFDX1BBVEhfUFJPRyhMSUJHQ1JZUFRfQ09ORklHLCBsaWJnY3J5cHQtY29uZmlnLCBubykKKysgIEFDX1BBVEhfUFJPRyhMSUJHQ1JZUFRfQ09ORklHLCBsaWJnY3J5cHQucGMsIG5vKQorICAgdG1wPWlmZWxzZShbJDFdLCAsMToxLjIuMCwkMSkKKyAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgIHJlcV9saWJnY3J5cHRfYXBpPWBlY2hvICIkdG1wIiAgICAgfCBzZWQgJ3MvXCguKlwpOlwoLipcKS9cMS8nYAorQEAgLTUwLDcgKzUwLDcgQEAgQUNfREVGVU4oW0FNX1BBVEhfTElCR0NSWVBUXSwKKyAgICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8nYAorICAgICByZXFfbWljcm89YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKKyAgICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMy8nYAorLSAgICBsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb249YCRMSUJHQ1JZUFRfQ09ORklHIC0tdmVyc2lvbmAKKysgICAgbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uPWAkUEtHX0NPTkZJRyAtLW1vZHZlcnNpb24gbGliZ2NyeXB0YAorICAgICBtYWpvcj1gZWNobyAkbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uIHwgXAorICAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDEvJ2AKKyAgICAgbWlub3I9YGVjaG8gJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbiB8IFwKK0BAIC04Miw3ICs4Miw3IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkdDUllQVF0sCisgICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgbGliZ2NyeXB0LCB3ZSBzaG91bGQgYWxzbyBjaGVjayB0aGF0IHRoZQorICAgICAgIyBBUEkgaXMgY29tcGF0aWJsZQorICAgICAgaWYgdGVzdCAiJHJlcV9saWJnY3J5cHRfYXBpIiAtZ3QgMCA7IHRoZW4KKy0gICAgICAgIHRtcD1gJExJQkdDUllQVF9DT05GSUcgLS1hcGktdmVyc2lvbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCisrICAgICAgICB0bXA9YCRQS0dfQ09ORklHIC0tYXBpLXZlcnNpb24gbGliZ2NyeXB0IDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKyAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgorICAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtMSUJHQ1JZUFQgQVBJIHZlcnNpb25dKQorICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9saWJnY3J5cHRfYXBpIiAtZXEgIiR0bXAiIDsgdGhlbgorQEAgLTk1LDggKzk1LDggQEAgQUNfREVGVU4oW0FNX1BBVEhfTElCR0NSWVBUXSwKKyAgICAgIGZpCisgICBmaQorICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKy0gICAgTElCR0NSWVBUX0NGTEFHUz1gJExJQkdDUllQVF9DT05GSUcgLS1jZmxhZ3NgCistICAgIExJQkdDUllQVF9MSUJTPWAkTElCR0NSWVBUX0NPTkZJRyAtLWxpYnNgCisrICAgIExJQkdDUllQVF9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzIGxpYmdjcnlwdGAKKysgICAgTElCR0NSWVBUX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBsaWJnY3J5cHRgCisgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCisgICBlbHNlCisgICAgIExJQkdDUllQVF9DRkxBR1M9IiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzIuMi4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzIuMi4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM1OGJhMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18yLjIuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJ3aXJlc2hhcmsgLSBhIHBvcHVsYXIgbmV0d29yayBwcm90b2NvbCBhbmFseXplciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cud2lyZXNoYXJrLm9yZyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmUyNzEyMzRiYTFhMTNjNmU1MTJlNzZiOTRhYzJmNzciCi0KLURFUEVORFMgPSAicGNyZSBleHBhdCBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly8yLm5hLmRsLndpcmVzaGFyay5vcmcvc3JjL2FsbC12ZXJzaW9ucy8ke0JQfS50YXIuYnoyIgotCi1QRSA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWUzYTFhNDNhNmUzNjg3ZjQ0YTczOGZkMTVkNzgwMjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODU3NGE1ZTFmZGVjN2FmZmFlNjQwOTI0YmQ0NmMxYWVkMWJkODY2ZTAyNjMyZmE1NjI1ZTE0NTBlNGE1MDcwNyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHBlcmxuYXRpdmUKLQotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLVBBQ0tBR0VDT05GSUcgPz0gImxpYnBjYXAgZ251dGxzIGxpYm5sIGxpYmNhcCBzYmMiCi1QQUNLQUdFQ09ORklHICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiZ3RrMiBncmFwaGljcyIsICIiLCBkKX0iCi0jUEFDS0FHRUNPTkZJRyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAib3BlbmdsIiwgImd0azMiLCAiIiwgZCl9IgotCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcD0ke1NUQUdJTkdfTElCRElSfSwgLS13aXRoLWxpYmNhcD1ubyAtLWVuYWJsZS1wY2FwLW5nLWRlZmF1bHQgLCBsaWJjYXAiCi1QQUNLQUdFQ09ORklHW2xpYnBjYXBdID0gIi0td2l0aC1wY2FwPSR7U1RBR0lOR19MSUJESVJ9IC0td2l0aC1wY2FwLXJlbW90ZSwgLS13aXRoLXBjYXA9bm8gLS1lbmFibGUtcGNhcC1uZy1kZWZhdWx0ICAsIGxpYnBjYXAiCi1QQUNLQUdFQ09ORklHW2xpYnNtaV0gPSAiLS13aXRoLWxpYnNtaT15ZXMsIC0td2l0aC1saWJzbWk9bm8sIGxpYnNtaSIKLVBBQ0tBR0VDT05GSUdbbGlibmxdID0gIi0td2l0aC1saWJubD15ZXMsIC0td2l0aC1saWJubD1ubywgbGlibmwiCi1QQUNLQUdFQ09ORklHW3BvcnRhdWRpb10gPSAiLS13aXRoLXBvcnRhdWRpbz15ZXMsIC0td2l0aC1wb3J0YXVkaW89bm8sIHBvcnRhdWRpby12MTkiCi1QQUNLQUdFQ09ORklHW2d0azJdID0gIi0td2l0aC1ndGs9MiwgLCBndGsrIgotUEFDS0FHRUNPTkZJR1tndGszXSA9ICItLXdpdGgtZ3RrPTMsICwgZ3RrKzMiCi1QQUNLQUdFQ09ORklHW2dyYXBoaWNzXSA9ICItLWVuYWJsZS13aXJlc2hhcmssIC0td2l0aC1ndGs9bm8gLS1kaXNhYmxlLXdpcmVzaGFyaywiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscz15ZXMsIC0td2l0aC1nbnV0bHM9bm8sIGdudXRscyIKLVBBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLXdpdGgtZ2NyeXB0PXllcywgLS13aXRoLWdjcnlwdD1ubywgbGliZ2NyeXB0IgotUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2w9eWVzLCAtLXdpdGgtc3NsPW5vLCBvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgta3JiNT15ZXMsIC0td2l0aC1rcmI1PW5vLCBrcmI1IgotUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWE9eWVzLCAtLXdpdGgtbHVhPW5vLCBsdWEiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPXllcywgLS13aXRoLXpsaWI9bm8sIHpsaWIiCi1QQUNLQUdFQ09ORklHW2dlb2lwXSA9ICItLXdpdGgtZ2VvaXA9eWVzLCAtLXdpdGgtZ2VvaXA9bm8sIGdlb2lwIgotUEFDS0FHRUNPTkZJR1twbHVnaW5zXSA9ICItLXdpdGgtcGx1Z2lucz15ZXMsIC0td2l0aC1wbHVnaW5zPW5vIgotUEFDS0FHRUNPTkZJR1tzYmNdID0gIi0td2l0aC1zYmM9eWVzLCAtLXdpdGgtc2JjPW5vLCBzYmMiCi0KLVBBQ0tBR0VDT05GSUdbbGlic3NoXSA9ICItLXdpdGgtc3NoPXllcywgLS13aXRoLXNzaD1ubywgbGlic3NoMiIKLQotCi0jIHRoZXNlIG5leHQgdHdvIG9wdGlvbnMgcmVxdWlyZSBhZGRpb25hbCBsYXllcnMKLVBBQ0tBR0VDT05GSUdbYy1hcmVzXSA9ICItLXdpdGgtYy1hcmVzPXllcywgLS13aXRoLWMtYXJlcz1ubywgYy1hcmVzIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1xdD1ubyAtLWVuYWJsZS10c2hhcmsgLS1lbmFibGUtcmF3c2hhcmsiCi0KLSMgQ3VycmVudGx5IHdpcmVzaGFyayBkb2VzIG5vdCBpbnN0YWxsIGhlYWRlciBmaWxlcwotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCi0JaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59Ci0JaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4KLQlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9jcnlwdAotCWluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2RmaWx0ZXIKLQlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9kaXNzZWN0b3JzCi0JaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZnR5cGVzCi0JaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vd21lbQotCi0JaW5zdGFsbCBjb25maWcuaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59Ci0JaW5zdGFsbCAke1N9L3JlZ2lzdGVyLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfQotCWluc3RhbGwgLUQgJHtTfS9lcGFuLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4KLQlpbnN0YWxsIC1EICR7U30vZXBhbi9jcnlwdC8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2NyeXB0Ci0JaW5zdGFsbCAtRCAke1N9L2VwYW4vZGZpbHRlci8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2RmaWx0ZXIKLQlpbnN0YWxsIC1EICR7U30vZXBhbi9kaXNzZWN0b3JzLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZGlzc2VjdG9ycwotCWluc3RhbGwgLUQgJHtTfS9lcGFuL2Z0eXBlcy8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2Z0eXBlcwotCWluc3RhbGwgLUQgJHtTfS9lcGFuL3dtZW0vKi5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi93bWVtCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9KiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzIuNC42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay93aXJlc2hhcmtfMi40LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RhMGE3YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzIuNC42LmJiCkBAIC0wLDAgKzEsNzMgQEAKK0RFU0NSSVBUSU9OID0gIndpcmVzaGFyayAtIGEgcG9wdWxhciBuZXR3b3JrIHByb3RvY29sIGFuYWx5emVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53aXJlc2hhcmsub3JnIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZTI3MTIzNGJhMWExM2M2ZTUxMmU3NmI5NGFjMmY3NyIKKworREVQRU5EUyA9ICJwY3JlIGV4cGF0IGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJnY3J5cHQgbGliZ3BnLWVycm9yIgorCitTUkNfVVJJID0gImh0dHBzOi8vMS5hcy5kbC53aXJlc2hhcmsub3JnL3NyYy8ke0JQfS50YXIueHoiCitTUkNfVVJJICs9ICJmaWxlOi8vbGliZ2NyeXB0LnBhdGNoIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly8xLmFzLmRsLndpcmVzaGFyay5vcmcvc3JjIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGNmYjczZTI4NmRkNjQyN2NhNDQwNWU2ZTgwMmQxM2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGU5NjVmZDI4MmJjMGMwOWU3YzRlYmE1ZjA4YTU1NWQwY2NmNDBhN2QxNTQ0YjkzOWUwMWI5MGJjODkzZDVmZSIKKworUEUgPSAiMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHBlcmxuYXRpdmUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0FSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorCitQQUNLQUdFQ09ORklHID89ICJsaWJwY2FwIGdudXRscyBsaWJubCBsaWJjYXAgc2JjIgorUEFDS0FHRUNPTkZJRyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgImd0azIgZ3JhcGhpY3MiLCAiIiwgZCl9IgorCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcD0ke1NUQUdJTkdfRElSX0hPU1R9L3VzciwgLS13aXRoLWxpYmNhcD1ubyAtLWVuYWJsZS1wY2FwLW5nLWRlZmF1bHQgLCBsaWJjYXAiCitQQUNLQUdFQ09ORklHW2xpYnBjYXBdID0gIi0td2l0aC1wY2FwPSR7U1RBR0lOR19ESVJfSE9TVH0vdXNyIC0td2l0aC1wY2FwLXJlbW90ZSwgLS13aXRoLXBjYXA9bm8gLS1lbmFibGUtcGNhcC1uZy1kZWZhdWx0ICAsIGxpYnBjYXAiCitQQUNLQUdFQ09ORklHW2xpYnNtaV0gPSAiLS13aXRoLWxpYnNtaT15ZXMsIC0td2l0aC1saWJzbWk9bm8sIGxpYnNtaSIKK1BBQ0tBR0VDT05GSUdbbGlibmxdID0gIi0td2l0aC1saWJubD15ZXMsIC0td2l0aC1saWJubD1ubywgbGlibmwiCitQQUNLQUdFQ09ORklHW3BvcnRhdWRpb10gPSAiLS13aXRoLXBvcnRhdWRpbz15ZXMsIC0td2l0aC1wb3J0YXVkaW89bm8sIHBvcnRhdWRpby12MTkiCitQQUNLQUdFQ09ORklHW2d0azJdID0gIi0td2l0aC1ndGs9MiwgLCBndGsrIgorUEFDS0FHRUNPTkZJR1tndGszXSA9ICItLXdpdGgtZ3RrPTMsICwgZ3RrKzMiCitQQUNLQUdFQ09ORklHW2dyYXBoaWNzXSA9ICItLWVuYWJsZS13aXJlc2hhcmssIC0td2l0aC1ndGs9bm8gLS1kaXNhYmxlLXdpcmVzaGFyaywiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscz15ZXMsIC0td2l0aC1nbnV0bHM9bm8sIGdudXRscyIKK1BBQ0tBR0VDT05GSUdbc3NsXSA9ICItLXdpdGgtc3NsPXllcywgLS13aXRoLXNzbD1ubywgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWtyYjU9eWVzLCAtLXdpdGgta3JiNT1ubywga3JiNSIKK1BBQ0tBR0VDT05GSUdbbHVhXSA9ICItLXdpdGgtbHVhPXllcywgLS13aXRoLWx1YT1ubywgbHVhIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj15ZXMsIC0td2l0aC16bGliPW5vLCB6bGliIgorUEFDS0FHRUNPTkZJR1tnZW9pcF0gPSAiLS13aXRoLWdlb2lwPXllcywgLS13aXRoLWdlb2lwPW5vLCBnZW9pcCIKK1BBQ0tBR0VDT05GSUdbcGx1Z2luc10gPSAiLS13aXRoLXBsdWdpbnM9eWVzLCAtLXdpdGgtcGx1Z2lucz1ubyIKK1BBQ0tBR0VDT05GSUdbc2JjXSA9ICItLXdpdGgtc2JjPXllcywgLS13aXRoLXNiYz1ubywgc2JjIgorUEFDS0FHRUNPTkZJR1tsaWJzc2hdID0gIi0td2l0aC1saWJzc2g9JHtTVEFHSU5HX0RJUl9IT1NUfS91c3IsIC0td2l0aC1saWJzc2g9bm8sIGxpYnNzaDIiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiLS13aXRoLWx6ND0ke1NUQUdJTkdfRElSX0hPU1R9L3VzciwgLS13aXRoLWx6ND1ubywgbHo0IgorCisjIHRoZXNlIG5leHQgdHdvIG9wdGlvbnMgcmVxdWlyZSBhZGRpb25hbCBsYXllcnMKK1BBQ0tBR0VDT05GSUdbYy1hcmVzXSA9ICItLXdpdGgtYy1hcmVzPXllcywgLS13aXRoLWMtYXJlcz1ubywgYy1hcmVzIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1saWJnY3J5cHQtcHJlZml4PSR7UEtHX0NPTkZJR19ESVJ9IC0td2l0aC1xdD1ubyAtLWVuYWJsZS10c2hhcmsgLS1lbmFibGUtcmF3c2hhcmsiCisKK0xERkxBR1NfYXBwZW5kID0gIiAtbGdwZy1lcnJvciIKKworIyBDdXJyZW50bHkgd2lyZXNoYXJrIGRvZXMgbm90IGluc3RhbGwgaGVhZGVyIGZpbGVzCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisKKwlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0KKwlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbgorCWluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2NyeXB0CisJaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZGZpbHRlcgorCWluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2Rpc3NlY3RvcnMKKwlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9mdHlwZXMKKwlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi93bWVtCisKKwlpbnN0YWxsIGNvbmZpZy5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0KKwlpbnN0YWxsICR7U30vcmVnaXN0ZXIuaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59CisJaW5zdGFsbCAtRCAke1N9L2VwYW4vKi5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbgorCWluc3RhbGwgLUQgJHtTfS9lcGFuL2NyeXB0LyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vY3J5cHQKKwlpbnN0YWxsIC1EICR7U30vZXBhbi9kZmlsdGVyLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZGZpbHRlcgorCWluc3RhbGwgLUQgJHtTfS9lcGFuL2Rpc3NlY3RvcnMvKi5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9kaXNzZWN0b3JzCisJaW5zdGFsbCAtRCAke1N9L2VwYW4vZnR5cGVzLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZnR5cGVzCisJaW5zdGFsbCAtRCAke1N9L2VwYW4vd21lbS8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL3dtZW0KK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dwYW4tdG9vbHMvd3Bhbi10b29sc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd3Bhbi10b29scy93cGFuLXRvb2xzX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmQyZjY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dwYW4tdG9vbHMvd3Bhbi10b29sc19naXQuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgdG9vbHMgZm9yIExpbnV4IElFRUUgODAyLjE1LjQgc3RhY2siCitIT01FUEFHRSA9ICJodHRwOi8vd3Bhbi5jYWtlbGFiLm9yZy9yZWxlYXNlcy8iCitERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgc2V0IG9mIHV0aWxzIHRvIG1hbmFnZSB0aGUgTGludXggV1BBTiBzdGFjayB2aWEgXAorbmV0bGluayBpbnRlcmZhY2UuIFRoaXMgcmVxdWlyZXMgcmVjZW50IGtlcm5lbCB3aXRoIG5sODAyMTU0IGludGVyZmFjZS4iCisKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGNmZDkzOWIxZDdlNmFiYTlmY2VmYjdmNmUyZmQ0NWQiCisKK0RFUEVORFMgPSAibGlibmwiCisKK1BWID0gIjAuOCtnaXQke1NSQ1BWfSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC13cGFuL3dwYW4tdG9vbHMgXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiM2Y0NzNmNTEzNmY4OTc3Mzk5N2NiNGZmZjJkOGVkNjQ3NzM0ZTJmNSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2Uvc2l0ZS9lbmRpYW4tYmlnIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvc2l0ZS9lbmRpYW4tYmlnCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2Uvc2l0ZS9lbmRpYW4tYmlnCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9zaXRlL2VuZGlhbi1iaWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9zaXRlL2VuZGlhbi1saXR0bGUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9zaXRlL2VuZGlhbi1saXR0bGUKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9zaXRlL2VuZGlhbi1saXR0bGUKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3NpdGUvZW5kaWFuLWxpdHRsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9SRUFETUUKaW5kZXggZGFiZWQyZi4uN2NkZTBhMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL1JFQURNRQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvUkVBRE1FCkBAIC0xLDE1ICsxLDE0IEBACiBUaGlzIGxheWVyIGRlcGVuZHMgb246CiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKLWJyYW5jaDogcm9ja28KK2JyYW5jaDogbWFzdGVyCiByZXZpc2lvbjogSEVBRAogCi1TZW5kIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aCAnW21ldGEtb2VdW3JvY2tvXScgaW4gdGhlIHN1YmplY3QnCitTZW5kIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aCAnW21ldGEtb2VdJyBpbiB0aGUgc3ViamVjdCcKIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNlIHNvbWV0aGluZyBsaWtlOgotJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLW9lXVtyb2Nrb11bUEFUQ0gnCisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtb2VdW1BBVENIJwogCiBZb3UgYXJlIGVuY291cmFnZWQgdG8gZm9yayB0aGUgbWlycm9yIG9uIGdpdGh1YiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb2UvIHRvIHNoYXJlIHlvdXIgcGF0Y2hlcywgdGhpcyBpcyBwcmVmZXJyZWQgZm9yIHBhdGNoIHNldHMgY29uc2lzdGluZyBvZiBtb3JlIHRoYW4gb25lIHBhdGNoLiBPdGhlciBzZXJ2aWNlcyBsaWtlIGdpdG9yaW91cywgcmVwby5vci5jeiBvciBzZWxmIGhvc3RlZCBzZXR1cHMgYXJlIG9mIGNvdXJzZSBhY2NlcHRlZCBhcyB3ZWxsLCAnZ2l0IGZldGNoIDxyZW1vdGU+JyB3b3JrcyB0aGUgc2FtZSBvbiBhbGwgb2YgdGhlbS4gV2UgcmVjb21tZW5kIGdpdGh1YiBiZWNhdXNlIGl0IGlzIGZyZWUsIGVhc3kgdG8gdXNlLCBoYXMgYmVlbiBwcm92ZW4gdG8gYmUgcmVsaWFibGUgYW5kIGhhcyBhIHJlYWxseSBnb29kIHdlYiBHVUkuCiAKLXJvY2tvIEJyYW5jaCBNYWludGFpbmVyOgotQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KK01haW4gbGF5ZXIgbWFpbnRhaW5lcjogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL2dpdHZlci5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NsYXNzZXMvZ2l0dmVyLmJiY2xhc3MKaW5kZXggMzgwMzc0YS4uMDdmNDRjMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NsYXNzZXMvZ2l0dmVyLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NsYXNzZXMvZ2l0dmVyLmJiY2xhc3MKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gIjAuMCIKIAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKLSAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKHN0cihleGMpKQorICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZShzdHIoZXhjKSkKIAogICAgIGlmIHZlciBhbmQgdGFnYWRqdXN0OgogICAgICAgICB2ZXIgPSB0YWdhZGp1c3QodmVyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NsYXNzZXMvbWVzb24uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL21lc29uLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwOWJjMjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NsYXNzZXMvbWVzb24uYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi1pbmhlcml0IHB5dGhvbjNuYXRpdmUKLQotREVQRU5EU19hcHBlbmQgPSAiIG1lc29uLW5hdGl2ZSBuaW5qYS1uYXRpdmUiCi0KLSMgQXMgTWVzb24gZW5mb3JjZXMgb3V0LW9mLXRyZWUgYnVpbGRzIHdlIGNhbiBqdXN0IHVzZSBjbGVhbmRpcnMKLUIgPSAiJHtXT1JLRElSfS9idWlsZCIKLWRvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCi0KLSMgV2hlcmUgdGhlIG1lc29uLmJ1aWxkIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMKLU1FU09OX1NPVVJDRVBBVEggPSAiJHtTfSIKLQotIyBUaGVzZSB2YXJpYWJsZXMgaW4gdGhlIGVudmlyb25tZW50IG92ZXJyaWRlIHRoZSAqbmF0aXZlKiB0b29scywgbm90IHRoZSBjcm9zcy4KLWV4cG9ydCBDUFBGTEFHUyA9ICIke0JVSUxEX0NQUEZMQUdTfSIKLWV4cG9ydCBDQyA9ICIke0JVSUxEX0NDfSIKLWV4cG9ydCBDRkxBR1MgPSAiJHtCVUlMRF9DRkxBR1N9IgotZXhwb3J0IENYWCA9ICIke0JVSUxEX0NYWH0iCi1leHBvcnQgQ1hYRkxBR1MgPSAiJHtCVUlMRF9DWFhGTEFHU30iCi1leHBvcnQgTEQgPSAiJHtCVUlMRF9MRH0iCi1leHBvcnQgTERGTEFHUyA9ICIke0JVSUxEX0xERkxBR1N9IgotZXhwb3J0IEFSID0gIiR7QlVJTERfQVJ9IgotZXhwb3J0IFBLR19DT05GSUcgPSAicGtnLWNvbmZpZy1uYXRpdmUiCi0KLWRlZiBub3ByZWZpeCh2YXIsIGQpOgotICAgIHJldHVybiBkLmdldFZhcih2YXIsIFRydWUpLnJlcGxhY2UoZC5nZXRWYXIoJ3ByZWZpeCcsIFRydWUpICsgJy8nLCAnJywgMSkKLQotTUVTT05PUFRTID0gIiAtLXByZWZpeCAke3ByZWZpeH0gXAotICAgICAgICAgICAgICAtLWJpbmRpciAke0Bub3ByZWZpeCgnYmluZGlyJywgZCl9IFwKLSAgICAgICAgICAgICAgLS1zYmluZGlyICR7QG5vcHJlZml4KCdzYmluZGlyJywgZCl9IFwKLSAgICAgICAgICAgICAgLS1kYXRhZGlyICR7QG5vcHJlZml4KCdkYXRhZGlyJywgZCl9IFwKLSAgICAgICAgICAgICAgLS1saWJkaXIgJHtAbm9wcmVmaXgoJ2xpYmRpcicsIGQpfSBcCi0gICAgICAgICAgICAgIC0tbGliZXhlY2RpciAke0Bub3ByZWZpeCgnbGliZXhlY2RpcicsIGQpfSBcCi0gICAgICAgICAgICAgIC0taW5jbHVkZWRpciAke0Bub3ByZWZpeCgnaW5jbHVkZWRpcicsIGQpfSBcCi0gICAgICAgICAgICAgIC0tbWFuZGlyICR7QG5vcHJlZml4KCdtYW5kaXInLCBkKX0gXAotICAgICAgICAgICAgICAtLWluZm9kaXIgJHtAbm9wcmVmaXgoJ2luZm9kaXInLCBkKX0gXAotICAgICAgICAgICAgICAtLXN5c2NvbmZkaXIgJHtzeXNjb25mZGlyfSBcCi0gICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpciAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAgICAgICAgICAgLS1zaGFyZWRzdGF0ZWRpciAke3NoYXJlZHN0YXRlZGlyfSIKLQotTUVTT05fQ19BUkdTID0gIiR7VEFSR0VUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30iCi1NRVNPTl9MSU5LX0FSR1MgPSAiJHtNRVNPTl9DX0FSR1N9ICR7TERGTEFHU30iCi0KLU1FU09OX0hPU1RfRU5ESUFOID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2JlJywgJ2JpZycsICdsaXR0bGUnLCBkKX0iCi1NRVNPTl9UQVJHRVRfRU5ESUFOID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2JpZ2VuZGlhbicsICdiaWcnLCAnbGl0dGxlJywgZCl9IgotCi1FWFRSQV9PRU1FU09OICs9ICIke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IgotCi1NRVNPTl9DUk9TU19GSUxFID0gIiIKLU1FU09OX0NST1NTX0ZJTEVfY2xhc3MtdGFyZ2V0ID0gIi0tY3Jvc3MtZmlsZSAke1dPUktESVJ9L21lc29uLmNyb3NzIgotCi1kZWYgbWVzb25fYXJyYXkodmFyLCBkKToKLSAgICByZXR1cm4gIicsICciLmpvaW4oZC5nZXRWYXIodmFyLCBUcnVlKS5zcGxpdCgpKS5qb2luKCgiJyIsICInIikpCi0KLWFkZHRhc2sgd3JpdGVfY29uZmlnIGJlZm9yZSBkb19jb25maWd1cmUKLWRvX3dyaXRlX2NvbmZpZ1t2YXJkZXBzXSArPSAiTUVTT05fQ19BUkdTIFRPT0xDSEFJTl9PUFRJT05TIgotZG9fd3JpdGVfY29uZmlnKCkgewotICAgICMgVGhpcyBuZWVkcyB0byBiZSBQeSB0byBzcGxpdCB0aGUgYXJncyBpbnRvIHNpbmdsZS1lbGVtZW50IGxpc3RzCi0gICAgY2F0ID4ke1dPUktESVJ9L21lc29uLmNyb3NzIDw8RU9GCi1bYmluYXJpZXNdCi1jID0gJyR7SE9TVF9QUkVGSVh9Z2NjJwotY3BwID0gJyR7SE9TVF9QUkVGSVh9ZysrJwotYXIgPSAnJHtIT1NUX1BSRUZJWH1hcicKLWxkID0gJyR7SE9TVF9QUkVGSVh9bGQnCi1zdHJpcCA9ICcke0hPU1RfUFJFRklYfXN0cmlwJwotcmVhZGVsZiA9ICcke0hPU1RfUFJFRklYfXJlYWRlbGYnCi1wa2djb25maWcgPSAncGtnLWNvbmZpZycKLQotW3Byb3BlcnRpZXNdCi1uZWVkc19leGVfd3JhcHBlciA9IHRydWUKLWNfYXJncyA9IFske0BtZXNvbl9hcnJheSgnTUVTT05fQ19BUkdTJywgZCl9XQotY19saW5rX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0xJTktfQVJHUycsIGQpfV0KLWNwcF9hcmdzID0gWyR7QG1lc29uX2FycmF5KCdNRVNPTl9DX0FSR1MnLCBkKX1dCi1jcHBfbGlua19hcmdzID0gWyR7QG1lc29uX2FycmF5KCdNRVNPTl9MSU5LX0FSR1MnLCBkKX1dCi0KLVtob3N0X21hY2hpbmVdCi1zeXN0ZW0gPSAnJHtIT1NUX09TfScKLWNwdV9mYW1pbHkgPSAnJHtIT1NUX0FSQ0h9JwotY3B1ID0gJyR7SE9TVF9BUkNIfScKLWVuZGlhbiA9ICcke01FU09OX0hPU1RfRU5ESUFOfScKLQotW3RhcmdldF9tYWNoaW5lXQotc3lzdGVtID0gJyR7VEFSR0VUX09TfScKLWNwdV9mYW1pbHkgPSAnJHtUQVJHRVRfQVJDSH0nCi1jcHUgPSAnJHtUQVJHRVRfQVJDSH0nCi1lbmRpYW4gPSAnJHtNRVNPTl9UQVJHRVRfRU5ESUFOfScKLUVPRgotfQotCi1DT05GSUdVUkVfRklMRVMgPSAibWVzb24uYnVpbGQiCi0KLW1lc29uX2RvX2NvbmZpZ3VyZSgpIHsKLSAgICBpZiAhIG1lc29uICR7TUVTT05PUFRTfSAiJHtNRVNPTl9TT1VSQ0VQQVRIfSIgIiR7Qn0iICR7TUVTT05fQ1JPU1NfRklMRX0gJHtFWFRSQV9PRU1FU09OfTsgdGhlbgotICAgICAgICBjYXQgJHtCfS9tZXNvbi1sb2dzL21lc29uLWxvZy50eHQKLSAgICAgICAgYmJmYXRhbF9sb2cgbWVzb24gZmFpbGVkCi0gICAgZmkKLX0KLQotZG9fY29tcGlsZVtwcm9ncmVzc10gPSAib3V0b2Y6XlxbKFxkKykvKFxkKylcXVxzKyIKLW1lc29uX2RvX2NvbXBpbGUoKSB7Ci0gICAgbmluamEgJHtQQVJBTExFTF9NQUtFfQotfQotCi1tZXNvbl9kb19pbnN0YWxsKCkgewotICAgIERFU1RESVI9JyR7RH0nIG5pbmphICR7UEFSQUxMRUxfTUFLRUlOU1R9IGluc3RhbGwKLX0KLQotRVhQT1JUX0ZVTkNUSU9OUyBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NvbmYvbGF5ZXIuY29uZgppbmRleCBkODRiZDA5Li4xYTQzNTc1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9sYXllci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jb25mL2xheWVyLmNvbmYKQEAgLTI5LDYgKzI5LDggQEAKIAogTEFZRVJERVBFTkRTX29wZW5lbWJlZGRlZC1sYXllciA9ICJjb3JlIgogCitMQVlFUlNFUklFU19DT01QQVRfb3BlbmVtYmVkZGVkLWxheWVyID0gInN1bW8iCisKIExJQ0VOU0VfUEFUSCArPSAiJHtMQVlFUkRJUn0vbGljZW5zZXMiCiAKIFNJR0dFTl9FWENMVURFUkVDSVBFU19BQklTQUZFICs9ICIgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZmlsZXMvRml4LWNvbmZpZ3VyZS1mb3Itc3FydC1jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2ZpbGVzL0ZpeC1jb25maWd1cmUtZm9yLXNxcnQtY2hlY2sucGF0Y2gKaW5kZXggZmRlODIzOC4uN2RlMDVlZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZmlsZXMvRml4LWNvbmZpZ3VyZS1mb3Itc3FydC1jaGVjay5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZ2xtYXJrMi9maWxlcy9GaXgtY29uZmlndXJlLWZvci1zcXJ0LWNoZWNrLnBhdGNoCkBAIC0xLDEzICsxLDIxIEBACi1JbmRleDogZ2l0L3dzY3JpcHQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy93c2NyaXB0CTIwMTYtMDctMjkgMTM6MTU6NDQuOTU0MjQ5Nzk2IC0wNTAwCi0rKysgZ2l0L3dzY3JpcHQJMjAxNi0wNy0yOSAxNTo1MjowNi4xOTY3Njg4NjUgLTA1MDAKLUBAIC05MCw3ICs5MCw3IEBACi0gICAgICAgICBjdHguY2hlY2tfY3h4KGxpYiA9IGxpYiwgdXNlbGliX3N0b3JlID0gdXNlbGliKQorRnJvbSA5ZmIyOThjMzk4Zjg4YTYzZDcxNDMyYmUxNDEwZDUyZmFlMDg5MDYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVG9tIEhvY2hzdGVpbiA8dG9tLmhvY2hzdGVpbkBueHAuY29tPgorRGF0ZTogTW9uLCA4IEF1ZyAyMDE2IDExOjM5OjU0IC0wNTAwCisKKy0tLQorIHdzY3JpcHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS93c2NyaXB0IGIvd3NjcmlwdAoraW5kZXggY2E4NDNmNC4uZWI0YTI2YSAxMDA2NDQKKy0tLSBhL3dzY3JpcHQKKysrKyBiL3dzY3JpcHQKK0BAIC04NCw3ICs4NCw3IEBAIGRlZiBjb25maWd1cmUoY3R4KToKKyAgICAgICAgIGN0eC5jaGVja19jYyhsaWIgPSBsaWIsIHVzZWxpYl9zdG9yZSA9IHVzZWxpYikKICAKICAgICAgIyBDaGVjayByZXF1aXJlZCBmdW5jdGlvbnMKIC0gICAgcmVxX2Z1bmNzID0gWygnbWVtc2V0JywgJ3N0cmluZy5oJywgW10pICwoJ3NxcnQnLCAnbWF0aC5oJywgWydtJ10pXQogKyAgICByZXFfZnVuY3MgPSBbKCdtZW1zZXQnLCAnc3RyaW5nLmgnLCBbXSldCiAgICAgIGZvciBmdW5jLCBoZWFkZXIsIHVzZWxpYiBpbiByZXFfZnVuY3M6Ci0gICAgICAgICBjdHguY2hlY2tfY3h4KGZ1bmN0aW9uX25hbWUgPSBmdW5jLCBoZWFkZXJfbmFtZSA9IGhlYWRlciwKKyAgICAgICAgIGN0eC5jaGVja19jYyhmdW5jdGlvbl9uYW1lID0gZnVuYywgaGVhZGVyX25hbWUgPSBoZWFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZWxpYiA9IHVzZWxpYiwgbWFuZGF0b3J5ID0gVHJ1ZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjIvaXBlcmYyXzIuMC4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjIvaXBlcmYyXzIuMC4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzIyZDA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMi9pcGVyZjJfMi4wLjEwLmJiCkBAIC0wLDAgKzEsMTkgQEAKK0RFU0NSSVBUSU9OID0gIklwZXJmIGlzIGEgdG9vbCB0byBtZWFzdXJlIG1heGltdW0gVENQIGJhbmR3aWR0aCwgYWxsb3dpbmcgdGhlIHR1bmluZyBvZiB2YXJpb3VzIHBhcmFtZXRlcnMgYW5kIFVEUCBjaGFyYWN0ZXJpc3RpY3MiCitIT01FUEFHRSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9pcGVyZjIvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUxMzZhN2IyNTYwZDgwYmNiZjBkOWIzZTEzNTZlY2ZmIgorCitTUkNfVVJJID0gIiAke1NPVVJDRUZPUkdFX01JUlJPUn0vaXBlcmYyL2lwZXJmLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjA5N2NmMDc1NGJjMWFmYTE2NTk3NWMwNmE5MWU2OTA2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmZTQzNDhkY2NhMzEzYjc0ZTBhYTljMzRhOGNjZDcxM2I4NGE1NjE1Yjg1NzhmNGFhOTRjZWRjZTk4OTFlZjIiCisKK1MgPSAiJHtXT1JLRElSfS9pcGVyZi0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWV4ZWMtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke2xheW91dF9leGVjX3ByZWZpeH0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAnaXB2NicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMy9pcGVyZjMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci12YXJpb3VzLXN0ZC1jOTktaW50LXR5cGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMy9pcGVyZjMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci12YXJpb3VzLXN0ZC1jOTktaW50LXR5cGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTM2MjA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdmFyaW91cy1zdGQtYzk5LWludC10eXBlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gYmU2NTM3MTFmYjkyZDI0MzBiM2VjYzU0NmI0ZTNhZDkyN2QxOWVjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE0IEp1bCAyMDE3IDEyOjU5OjQyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBpbmNsdWRlIHN0ZGludC5oIGZvciB2YXJpb3VzIHN0ZCBjOTkgaW50IHR5cGVzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvY2pzb24uaCB8IDIgKysKLSBzcmMvdGltZXIuaCB8IDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvY2pzb24uaCBiL3NyYy9janNvbi5oCi1pbmRleCBmYjhjZDNiLi42OWNkMjcyIDEwMDY0NAotLS0tIGEvc3JjL2Nqc29uLmgKLSsrKyBiL3NyYy9janNvbi5oCi1AQCAtMjMsNiArMjMsOCBAQAotICNpZm5kZWYgY0pTT05fX2gKLSAjZGVmaW5lIGNKU09OX19oCi0gCi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIKLSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL3RpbWVyLmggYi9zcmMvdGltZXIuaAotaW5kZXggMGY5YzVlYi4uMGIxOTViZSAxMDA2NDQKLS0tLSBhL3NyYy90aW1lci5oCi0rKysgYi9zcmMvdGltZXIuaAotQEAgLTMxLDYgKzMxLDcgQEAKLSAjZGVmaW5lIF9fVElNRVJfSAotIAotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSAKLSAvKiBUaW1lckNsaWVudERhdGEgaXMgYW4gb3BhcXVlIHZhbHVlIHRoYXQgdGFncyBhbG9uZyB3aXRoIGEgdGltZXIuICBUaGUKLSAqKiBjbGllbnQgY2FuIHVzZSBpdCBmb3Igd2hhdGV2ZXIsIGFuZCBpdCBnZXRzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgd2hlbgotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMy9pcGVyZjNfMy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMy9pcGVyZjNfMy4yLmJiCmluZGV4IDRkMWIwYzQuLjJlZDA4MTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzXzMuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaXBlcmYzL2lwZXJmM18zLjIuYmIKQEAgLTE1LDcgKzE1LDYgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2VzbmV0L2lwZXJmLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdmFyaW91cy1zdGQtYzk5LWludC10eXBlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLVJlbW92ZS1wZy1mcm9tLXByb2ZpbGVfQ0ZMQUdTLnBhdGNoIFwKICAgICAgICAgICAgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliYy1iZW5jaC9saWJjLWJlbmNoXzIwMTEwMjA2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmMtYmVuY2gvbGliYy1iZW5jaF8yMDExMDIwNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTM0YzczCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmMtYmVuY2gvbGliYy1iZW5jaF8yMDExMDIwNi5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlRlc3RzIHRvIGNvbXBhcmUgc3RhbmRhcmQgZnVuY3Rpb25zIG9mIGRpZmZlcmVudCBsaWJjIGltcGxlbWVudGF0aW9ucyIKK0RFU0NSSVBUSU9OID0gImxpYmMtYmVuY2ggaXMgYSBzZXQgb2YgdGltZS0gYW5kIG1lbW9yeS1lZmZpY2llbmN5IHRlc3RzIHRvIGNvbXBhcmUgXAoraW1wbGVtZW50YXRpb25zIG9mIHZhcmlvdXMgQy9QT1NJWCBzdGFuZGFyZCBsaWJyYXJ5IGZ1bmN0aW9ucy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmV0YWxhYnMubmV0L2xpYmMtYmVuY2guaHRtbCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NYWtlZmlsZTttZDU9ZTEyZjExM2RhMjdkZmU5Y2ZiNmMyYzUzN2RhOGQ4ZGYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5ldGFsYWJzLm5ldC9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjc2M2RlOTBmOTVmZTY4ZTRlMDNlNWI2ZjQ5Njk4YWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjgyNTI2MGFhNWYxNWY0ZmJjNzk1N2VjNTc4ZTljODU5Y2JiZTIxMGUwMjVlYzc0YzRhMGQwNTY3NzUyMzc5NCIKKworZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vbGliYy1iZW5jaCAke0R9JHtiaW5kaXJ9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGlucGFjay9saW5wYWNrXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saW5wYWNrL2xpbnBhY2tfMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZDk1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGlucGFjay9saW5wYWNrXzEuMC5iYgpAQCAtMCwwICsxLDIwIEBACitERVNDUklQVElPTiA9ICJMSU5QQUNLIEJlbmNobWFya3MgYXJlIGEgbWVhc3VyZSBvZiBhIHN5c3RlbSdzIGZsb2F0aW5nIHBvaW50IGNvbXB1dGluZyBwb3dlciIKK1NVTU1BUlkgPSAiTElOUEFDSyBpcyBhIHNvZnR3YXJlIGxpYnJhcnkgZm9yIHBlcmZvcm1pbmcgbnVtZXJpY2FsIGxpbmVhciBhbGdlYnJhIG9uIGRpZ2l0YWwgY29tcHV0ZXJzIgorCitMSUNFTlNFID0gIlBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ImZpbGU6Ly8ke1dPUktESVJ9L2xpbnBhY2tuZXcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIzO21kNT1hYTAyNWUzYmM0NDE5MGM3MWU0YzVlM2IwODRmZWQ4NyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5ldGxpYi5vcmcvYmVuY2htYXJrL2xpbnBhY2tjLm5ldztkb3dubG9hZGZpbGVuYW1lPWxpbnBhY2tuZXcuYyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYzVkMGI2YTMxMjY0Njg1ZDJlNjUxYzkyMGUzY2RmNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNjNmMmVjODY1MTI5NTlmMWZkOTI2YmZhZmI4NTkwNWIyZDdiNzQwMjk0MmZmYWUzYWYzNzRkNDg3NDVlOTdlIgorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2NvbXBpbGUgKCkgeworCSR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IC1vIGxpbnBhY2sgbGlucGFja25ldy5jIC1sbQorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1EbSAwNzU1IGxpbnBhY2sgJHtEfSR7YmluZGlyfS9saW5wYWNrCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5LzAwMDEtQ2hlY2stZm9yLW11c2wtZGVmaW5lLWd1YXJkLWJlZm9yZS1yZWRlZmluaW5nLXNvY2tsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5LzAwMDEtQ2hlY2stZm9yLW11c2wtZGVmaW5lLWd1YXJkLWJlZm9yZS1yZWRlZmluaW5nLXNvY2tsZS5wYXRjaAppbmRleCAyMDc5MWJmLi5kNzE2OTQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS8wMDAxLUNoZWNrLWZvci1tdXNsLWRlZmluZS1ndWFyZC1iZWZvcmUtcmVkZWZpbmluZy1zb2NrbGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvMDAwMS1DaGVjay1mb3ItbXVzbC1kZWZpbmUtZ3VhcmQtYmVmb3JlLXJlZGVmaW5pbmctc29ja2xlLnBhdGNoCkBAIC0xLDEyICsxLDEzIEBACi1Gcm9tIDMxZDU4ZWQ3ZTY1NTI3ODFmNDE1NTAxZTk2ZDdjYzc0ZjgzYjkxMGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGFjMTY1N2UxMWNiYjA1NDViZGY0ZDExMjRkZWY4YzAxMzk1OGVkN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxMiBKdWwgMjAxNyAxODowODo1MSAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvMl0gQ2hlY2sgZm9yIG11c2wgZGVmaW5lIGd1YXJkIGJlZm9yZSByZWRlZmluaW5nIHNvY2tsZW5fdAorU3ViamVjdDogW1BBVENIXSBDaGVjayBmb3IgbXVzbCBkZWZpbmUgZ3VhcmQgYmVmb3JlIHJlZGVmaW5pbmcgc29ja2xlbl90CiAKIG11c2wgdXNlcyBfX0RFRklORURfc29ja2xlbl90IHNvIGNoZWNrIGZvciB0aGF0IGFzIHdlbGwKIGFsb25nIHdpdGggSEFWRV9zb2NrbGVuX3QKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgc3JjL2JlbmNoLmggfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCkBAIC0yNCw2ICsyNSwzIEBACiAgdHlwZWRlZiBpbnQgc29ja2xlbl90OwogICNlbmRpZgogIAotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvMDAwMS1sYXRfaHR0cC5jLUFkZC1wcmludGYtZm9ybWF0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvMDAwMS1sYXRfaHR0cC5jLUFkZC1wcmludGYtZm9ybWF0LnBhdGNoCmluZGV4IDE4ZWQ0M2QuLjk0M2IzZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5LzAwMDEtbGF0X2h0dHAuYy1BZGQtcHJpbnRmLWZvcm1hdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS8wMDAxLWxhdF9odHRwLmMtQWRkLXByaW50Zi1mb3JtYXQucGF0Y2gKQEAgLTEsOSArMSwxMCBAQAotRnJvbSA2ZmFhNmFjZGYyMGFhNmY3MzhlZWQxNDgzYjdkY2VlZDk0Mjg2YWRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3YzA1ZmE1MzUzYWQ5MWFjYWU2ZTVlOGEwMWY2NWQ1NDkzNWVmNzc4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMTQ6Mzk6MTAgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gbGF0X2h0dHAuYzogQWRkIHByaW50ZiBmb3JtYXQKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgc3JjL2xhdF9odHRwLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCkBAIC0yMSw2ICsyMiwzIEBACiAgCX0KICAJd3JpdGUoc29jaywgYnVmLCBzdHJsZW4oYnVmKSk7CiAgCXdoaWxlICgobiA9IHJlYWQoc29jaywgYnVmLCBYRkVSU0laRSkpID4gMCkgewotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvMDAwMi1idWlsZC1BZGp1c3QtQ0ZMQUdTLUxERkxBR1MtdG8tYXBwZW5kLXZhbHVlcy1wYXNzZWQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvMDAwMi1idWlsZC1BZGp1c3QtQ0ZMQUdTLUxERkxBR1MtdG8tYXBwZW5kLXZhbHVlcy1wYXNzZWQtLnBhdGNoCmluZGV4IGQ1YzhmNWYuLjM1M2Q4MGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5LzAwMDItYnVpbGQtQWRqdXN0LUNGTEFHUy1MREZMQUdTLXRvLWFwcGVuZC12YWx1ZXMtcGFzc2VkLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS8wMDAyLWJ1aWxkLUFkanVzdC1DRkxBR1MtTERGTEFHUy10by1hcHBlbmQtdmFsdWVzLXBhc3NlZC0ucGF0Y2gKQEAgLTEsMTMgKzEsMTMgQEAKLUZyb20gNzZmM2E5YWJjMmZmOTYxNTU0MjVlZjk3ZDhjNTUyMGNmYmM4ZmU2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjI3YzI1M2JmYjc4ZmEzYzVmNDE2ZTZjYWVlMTAxMDk4YTRiNThjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDEyIEp1bCAyMDE3IDE4OjA5OjQ2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBidWlsZDogQWRqdXN0IENGTEFHUy9MREZMQUdTIHRvIGFwcGVuZCB2YWx1ZXMgcGFzc2VkIGZyb20KLSBlbnYKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IEFkanVzdCBDRkxBR1MvTERGTEFHUyB0byBhcHBlbmQgdmFsdWVzIHBhc3NlZCBmcm9tIGVudgogCiBGb3IgbXVzbCB3ZSBoYXZlIHRvIHBhc3MgYWRkaXRpb25hbCBhcmd1bWVudHMgdmlhIGNmbGFncyBhbmQgbGRmbGFncwogdG8gbGluayBpbiBsaWJyaXJwYywgbWFrZSByb29tIGZvciB0aG9zZSBjaGFuZ2VzIHRvIHRha2UgZWZmZWN0CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNjcmlwdHMvYnVpbGQgfCAgMiArLQogIHNyYy9NYWtlZmlsZSAgfCAxNCArKysrKysrLS0tLS0tLQpAQCAtNzEsNiArNzEsMyBAQAogIAogIAogIHRhZzoKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L2ZpeC1sbWJlbmNoLW1lbW9yeS1jaGVjay1mYWlsdXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvZml4LWxtYmVuY2gtbWVtb3J5LWNoZWNrLWZhaWx1cmUucGF0Y2gKaW5kZXggNTQ5YTExNC4uY2JhYjVjNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvZml4LWxtYmVuY2gtbWVtb3J5LWNoZWNrLWZhaWx1cmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvZml4LWxtYmVuY2gtbWVtb3J5LWNoZWNrLWZhaWx1cmUucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1sbWJlbmNoOiBDYW4ndCBwcm9jZWVkIG9uIHNvbWUgdGFyZ2V0cworRnJvbSA2NTE4MDk3NmM5OTYzNDMyZDE2NmI0N2EwYjY5MjI2MGE2OWMwZDQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUWluZ21pbmcgU3UgPHFpbmdtaW5nLnN1QHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE5IEF1ZyAyMDE0IDA1OjE2OjE3IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGxtYmVuY2g6IENhbid0IHByb2NlZWQgb24gc29tZSB0YXJnZXRzCiAKIGxtYmVuY2ggY2FuJ3QgcHJvY2VlZCBvbiBzb21lIHRhcmdldHMuICBUaGUgbWVtb3J5IGNoZWNrIGZhaWxzIGJlY2F1c2UgdGhlCiBtZW1vcnkgbGF0ZW5jeSBvZiBlYWNoIHBhZ2UgaXMgbG9uZ2VyIHRoZW4gMTB1cywgd2hpY2ggaXMgYSB0aW1lIGxpbWl0IHNldApAQCAtMjUsMTMgKzI4LDE5IEBACiAKIFNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KIAorLS0tCisgc2NyaXB0cy9jb25maWctcnVuIHwgMTIgKysrKysrKy0tLQorIHNyYy9NYWtlZmlsZSAgICAgICB8ICA0ICsrLS0KKyBzcmMvbWVtc2l6ZS5jICAgICAgfCA2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQorCiBkaWZmIC0tZ2l0IGEvc2NyaXB0cy9jb25maWctcnVuIGIvc2NyaXB0cy9jb25maWctcnVuCi1pbmRleCBlMWY3YjZkLi4zMWI5MjU2IDEwMDc1NQoraW5kZXggOTE4Y2JkZi4uMDk2ZWQxMiAxMDA3NTUKIC0tLSBhL3NjcmlwdHMvY29uZmlnLXJ1bgogKysrIGIvc2NyaXB0cy9jb25maWctcnVuCi1AQCAtMjE0LDYgKzIxNCwxMiBAQCBUaGUgYmlnZ2VyIHRoZSByYW5nZSwgdGhlIG1vcmUgYWNjdXJhdGUgdGhlIHJlc3VsdHMsIGJ1dCBsYXJnZXIgc2l6ZXMKK0BAIC0xOTcsNiArMTk3LDEyIEBAIFRoZSBiaWdnZXIgdGhlIHJhbmdlLCB0aGUgbW9yZSBhY2N1cmF0ZSB0aGUgcmVzdWx0cywgYnV0IGxhcmdlciBzaXplcwogIHRha2Ugc29tZXdoYXQgbG9uZ2VyIHRvIHJ1biB0aGUgYmVuY2htYXJrLgotCisgCiAgRU9GCiArCiArIyBCeSBkZWZhdWx0LCB1c2UgNTEyTSBtZW1vcnkgYXMgdGhlIHVwcGVyIGxpbWl0IGZvciBsbWJlbmNoIHRlc3QKQEAgLTQwLDEyICs0OSwxMiBAQAogK2ZpCiArCiAgZWNobyAkRUNIT04gIk1CIFtkZWZhdWx0ICRNQl06ICRFQ0hPQyIKLSAjcmVhZCBUTVAKLSBUTVA9IiIKLUBAIC03MTgsMTAgKzcyNCwxMCBAQCBjYXNlICRNQUlMIGluCi0JCTs7CisgcmVhZCBUTVAKKyBpZiBbIFgkVE1QICE9IFggXQorQEAgLTY4NywxMCArNjkzLDEwIEBAIGNhc2UgJE1BSUwgaW4KKyAJCTs7CiAgZXNhYwotCisgCiAtSU5GTz1gLi4vc2NyaXB0cy9pbmZvYAogK0lORk89YC4uL3NjcmlwdHMvaG9zdGluZm9gCiAgaWYgWyAkTUFJTCA9IHllcyBdCkBAIC01NCw4ICs2Myw4IEBACiArCXRoZW4JY3AgLi4vc2NyaXB0cy9ob3N0aW5mby10ZW1wbGF0ZSAkSU5GTwogIAkJY2htb2QgK3cgJElORk8KICAJCVJFVVNFPW5vCi0gCWVsc2UKLUBAIC03NjUsNyArNzcxLDcgQEAgRU9GCisgCWVsc2UJCitAQCAtNzMzLDcgKzczOSw3IEBAIEVPRgogIAkJdGhlbglFRElUT1I9JFRNUAogIAkJZmkKICAJCWlmIFsgWCRFRElUT1IgIT0gIm5vbmUiIF0KQEAgLTY1LDEwICs3NCwxMCBAQAogIAlmaQogIGZpCiBkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCi1pbmRleCBkMWYwZGM2Li41MDk4OTk4IDEwMDY0NAoraW5kZXggYzdlNGUzYy4uZDllZmQ1NCAxMDA2NDQKIC0tLSBhL3NyYy9NYWtlZmlsZQogKysrIGIvc3JjL01ha2VmaWxlCi1AQCAtNDksNyArNDksNyBAQCBUQVJHRVQ9YC4uL3NjcmlwdHMvdGFyZ2V0YAorQEAgLTUwLDcgKzUwLDcgQEAgVEFSR0VUPWAuLi9zY3JpcHRzL3RhcmdldGAKICBCSU5ESVI9Li4vYmluLyQoT1MpCiAgQ09ORklHPS4uL2Jpbi8kKE9TKS9gLi4vc2NyaXB0cy9jb25maWdgCiAgVVRJTFM9Li4vc2NyaXB0cy90YXJnZXQgLi4vc2NyaXB0cy9vcyAuLi9zY3JpcHRzL2dudS1vcyAuLi9zY3JpcHRzL2NvbXBpbGVyIFwKQEAgLTc5LDIxICs4OCwyMSBAQAogIElOU1RBTEw9Y3AKIEBAIC0yNDAsNyArMjQwLDcgQEAgJE8vZ2V0b3B0Lm8gOiBnZXRvcHQuYyAkKElOQ1MpCiAgCSQoQ09NUElMRSkgLWMgZ2V0b3B0LmMgLW8gJE8vZ2V0b3B0Lm8KLQorIAogICQoVVRJTFMpIDoKIC0JLWNkIC4uL3NjcmlwdHM7IG1ha2UgZ2V0CiArCS1jZCAuLi9zY3JpcHRzOyBjcCBpbmZvIGhvc3RpbmZvOyBjcCBpbmZvLXRlbXBsYXRlIGhvc3RpbmZvLXRlbXBsYXRlCi0KKyAKICAjIERvIG5vdCByZW1vdmUgdGhlIG5leHQgbGluZSwgJChNQUtFKSBkZXBlbmQgbmVlZHMgaXQKICAjIE1BS0VERVBFTkQgZm9sbG93cwogZGlmZiAtLWdpdCBhL3NyYy9tZW1zaXplLmMgYi9zcmMvbWVtc2l6ZS5jCi1pbmRleCBlYjI1YTA5Li5jZjlmZTBjIDEwMDY0NAoraW5kZXggZWIyNWEwOS4uODJkN2ZhZiAxMDA2NDQKIC0tLSBhL3NyYy9tZW1zaXplLmMKICsrKyBiL3NyYy9tZW1zaXplLmMKIEBAIC0xNCw5ICsxNCwxMiBAQCBjaGFyCSppZCA9ICIkSWQkXG4iOwotCisgCiAgI2RlZmluZQlDSEsoeCkJaWYgKCh4KSA9PSAtMSkgeyBwZXJyb3IoIngiKTsgZXhpdCgxKTsgfQotCisgCiAtI2lmbmRlZglUT09fTE9ORwogLSNkZWZpbmUJVE9PX0xPTkcJMTAJLyogdXNlY3MgKi8KIC0jZW5kaWYKQEAgLTEwMywxMiArMTEyLDEyIEBACiArCiArI2RlZmluZQlNRU1PUllfU0laRV8xTUIgKDEwMjQgKiAxMDI0KQogKyNkZWZpbmUJTUVNT1JZX1NJWkVfOE1CICg4ICogMTAyNCAqIDEwMjQpCi0KKyAKICBpbnQJYWxhcm1fdHJpZ2dlcmVkID0gMDsKLQorIAogQEAgLTM1LDEwICszOCwxMCBAQCBtYWluKGludCBhYywgY2hhciAqKmF2KQogIAlzaXplX3QJZGVsdGE7Ci0KKyAKICAJaWYgKGFjID09IDIpIHsKIC0JCW1heCA9IHNpemUgPSBieXRlcyhhdlsxXSkgKiAxMDI0ICogMTAyNDsKICsJCW1heCA9IHNpemUgPSBieXRlcyhhdlsxXSkgKiBNRU1PUllfU0laRV8xTUI7CkBAIC0xNzAsNyArMTc5LDcgQEAKICsJCXRpbWVfZWFjaF9wYWdlID0gMTsKICsJLy9TZXQgdGhlIHVwZXIgbGltaXQgb2YgdGltZSBzcGVuZGluZyBvbiBvbmUgcGFnZQogKyAgICAgICAgdG9vX2xvbmcgPSAxMCAqIHRpbWVfZWFjaF9wYWdlOwotCisgCiAtCXJhbmdlID0gMTAyNCAqIDEwMjQ7CiAtCWluY3IgPSAxMDI0ICogMTAyNDsKIC0JdG91Y2hSYW5nZSh3aGVyZSwgcmFuZ2UsIHBhZ2VzaXplKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L2xtYmVuY2hfcmVzdWx0X2h0bWxfcmVwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvbG1iZW5jaF9yZXN1bHRfaHRtbF9yZXBvcnQucGF0Y2gKaW5kZXggY2RhMmYwYy4uMzA3MDhjOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvbG1iZW5jaF9yZXN1bHRfaHRtbF9yZXBvcnQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvbG1iZW5jaF9yZXN1bHRfaHRtbF9yZXBvcnQucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1sbWJlbmNoOiBGaXggIm1ha2UgaHRtbCIgZ3JhcGggZmFpbHVyZQorRnJvbSBiMjFjYTlmMzkxMTYyOGZiNjZmMzA4YzY5MTY0ODViYmJjZmIyOWE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGluIFl1IDxsaW4ueXVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTkgQXVnIDIwMTQgMDU6MTY6MTYgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gbG1iZW5jaDogRml4ICJtYWtlIGh0bWwiIGdyYXBoIGZhaWx1cmUKIAogVGhlIGh0bWwtbGlzdCBwZXJsIHNjcmlwdCBjYW5ub3QgcGFyc2UgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHJlc3VsdAogZmlsZXMgYWJvdXQgdGhlIGxtYmVuY2ggdmVyc2lvbi4KQEAgLTE0LDYgKzE3LDExIEBACiAKIFNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KIAorLS0tCisgcmVzdWx0cy9NYWtlZmlsZSAgfCAxICsKKyBzY3JpcHRzL2h0bWwtbGlzdCB8IDcgKystLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCiBkaWZmIC0tZ2l0IGEvcmVzdWx0cy9NYWtlZmlsZSBiL3Jlc3VsdHMvTWFrZWZpbGUKIGluZGV4IDA5MzUzNzYuLjFlZjlhMTUgMTAwNjQ0CiAtLS0gYS9yZXN1bHRzL01ha2VmaWxlCkBAIC0zOCw3ICs0Niw3IEBACiArPGgyPjxhIGhyZWY9c3VtbWFyeS5vdXQ+U3VtbWFyeSBvZiByZXN1bHRzPC9hPjwvaDI+CiAgPGhyPgogIEVPRgotCisgCiBAQCAtNDcsNyArNDcsNyBAQCBmb3JlYWNoICRvcyAoQG9zKSB7CiAgCQlvcGVuKEYsICRmaWxlKTsKICAJCSRfID0gPEY+OwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvb2JleS1yYW5saWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS9vYmV5LXJhbmxpYi5wYXRjaAppbmRleCA0MWEzYjMyLi5mYTVlNmRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS9vYmV5LXJhbmxpYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS9vYmV5LXJhbmxpYi5wYXRjaApAQCAtMSwxNiArMSwyMiBAQAorRnJvbSAxODJhNWQzZGJhM2Y0NDBiYmYzNTU1MWRhNmQyMWFiMWM5OTBlYjU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTm9vciBBaHNhbiA8bm9vcl9haHNhbkBtZW50b3IuY29tPgorRGF0ZTogTW9uLCAyOSBBdWcgMjAxMSAxNjoxNzo1MSArMDAwMAorU3ViamVjdDogW1BBVENIXSBsbWJlbmNoOiBBZGQgdmVyc2lvbiAzLjAtYTkgKGluaXRpYWwgcmVjaXBlKQorCiBJbiBzb21lIGNhc2VzIHRoZSBob3N0IG1heSBoYXZlIHRvbyBvbGQgb2YgYSByYW5saWIgdG8gd29yay4gIFNpbmNlIGl0J3MKIG5vdCBleGFjdGx5IGEgZ3JlYXQgaWRlYSB0byBub3QgYmUgdXNpbmcgdGhlIGNyb3NzIHJhbmxpYiBhbnlob3csIGZpeCB0aGUKIE1ha2VmaWxlIHNvIHdlIGNhbiBvdmVycmlkZSByYW5saWIgYW5kIHRoZW4gb3ZlcnJpZGUgaXQKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtidWlsZCBzeXN0ZW0gc3BlY2lmaWMgY2hhbmdlXQorCiAtLS0KLSBzcmMvTWFrZWZpbGUgfCAgICAzICsrLQorIHNyYy9NYWtlZmlsZSB8IDMgKystCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogbG1iZW5jaC0zLjAtYTkvc3JjL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbG1iZW5jaC0zLjAtYTkub3JpZy9zcmMvTWFrZWZpbGUKLSsrKyBsbWJlbmNoLTMuMC1hOS9zcmMvTWFrZWZpbGUKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKK2luZGV4IDQ5NjI4MTUuLmM3YThjNzkgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUKKysrKyBiL3NyYy9NYWtlZmlsZQogQEAgLTM4LDYgKzM4LDcgQEAgQ0M9YC4uL3NjcmlwdHMvY29tcGlsZXJgCiAgTUFLRT1gLi4vc2NyaXB0cy9tYWtlYAogIEFSPWFyCkBAIC0xOSw3ICsyNSw3IEBACiAgCiAgIyBiYXNlIG9mIGluc3RhbGxhdGlvbiBsb2NhdGlvbgogIEJBU0U9L3Vzci9sb2NhbAotQEAgLTIxNyw3ICsyMTgsNyBAQCAkTy9sbWJlbmNoIDogLi4vc2NyaXB0cy9sbWJlbmNoIHZlcnNpb24uCitAQCAtMjE3LDcgKzIxOCw3IEBAICRPL2xtYmVuY2ggOiAuLi9zY3JpcHRzL2xtYmVuY2ggdmVyc2lvbi5oCiAgJE8vbG1iZW5jaC5hOiAkKExJQk9CSlMpCiAgCS9iaW4vcm0gLWYgJE8vbG1iZW5jaC5hCiAgCSQoQVIpICQoQVJDUkVBVEUpICRPL2xtYmVuY2guYSAkKExJQk9CSlMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS91cGRhdGUtY29uZmlnLXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L3VwZGF0ZS1jb25maWctc2NyaXB0LnBhdGNoCmluZGV4IGI0NmUwOWEuLjQ0YmM3YmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L3VwZGF0ZS1jb25maWctc2NyaXB0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L3VwZGF0ZS1jb25maWctc2NyaXB0LnBhdGNoCkBAIC0xLDggKzEsMTggQEAKK0Zyb20gYWNhMWE1OWQ4ODg0MjFjMWZjNTUzMjI5YjgwNDliZTQ3ZThiM2RkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENodW5yb25nIEd1byA8YjQwMjkwQGZyZWVzY2FsZS5jb20+CitEYXRlOiBGcmksIDEgTWFyIDIwMTMgMDk6NTA6NDIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbG1iZW5jaDogdXBkYXRlIGNvbmZpZyBzY3JpcHQKKwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogbG1iZW5jaC0zLjAtYTkvc2NyaXB0cy9jb25maWcKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsbWJlbmNoLTMuMC1hOS9zY3JpcHRzL2NvbmZpZwkyMDAwLTAxLTMxIDE4OjI5OjMxLjAwMDAwMDAwMCAtMDYwMAotKysrIGxtYmVuY2gtMy4wLWE5L3NjcmlwdHMvY29uZmlnCTIwMTMtMDMtMDEgMDA6MTk6NDEuMDMyOTg0MzE1IC0wNjAwCisKKy0tLQorIHNjcmlwdHMvY29uZmlnIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9jb25maWcgYi9zY3JpcHRzL2NvbmZpZworaW5kZXggYjU4Y2I2MC4uMjVkOWQ3NyAxMDA3NTUKKy0tLSBhL3NjcmlwdHMvY29uZmlnCisrKysgYi9zY3JpcHRzL2NvbmZpZwogQEAgLTMsNSArMyw1IEBACiAgVU5BTUU9YHVuYW1lIC1uIDI+L2Rldi9udWxsYAogIGlmIFsgWCRVTkFNRSA9IFggXQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvdXBkYXRlLXJlc3VsdHMtc2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvdXBkYXRlLXJlc3VsdHMtc2NyaXB0LnBhdGNoCmluZGV4IDg5NGYxNDYuLjMxYzRhZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L3VwZGF0ZS1yZXN1bHRzLXNjcmlwdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS91cGRhdGUtcmVzdWx0cy1zY3JpcHQucGF0Y2gKQEAgLTEsNDUgKzEsMjQgQEAKK0Zyb20gNDk1NTAyMWJjMjgzYmU0MDRkZjYyYjk3Yjg2YWYzOTQzZWZkMjlkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5vb3IgQWhzYW4gPG5vb3JfYWhzYW5AbWVudG9yLmNvbT4KK0RhdGU6IE1vbiwgMjkgQXVnIDIwMTEgMTY6MTc6NTEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbG1iZW5jaDogQWRkIHZlcnNpb24gMy4wLWE5IChpbml0aWFsIHJlY2lwZSkKKwogTm93IHRoYXQgd2UgaGF2ZSBvdXIgYmluYXJpZXMgaW4gL3Vzci9iaW4gcmF0aGVyIHRoYW4gdGhlIG5vcm1hbAogbG1iZW5jaCBoaWVyYXJjaHkgd2UgbmVlZCB0byB1cGRhdGUgdGhlIHNjcmlwdHMgYXMgd2VsbCB0byBiZWhhdmUgd2VsbCBoZXJlLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1RoaXMgaXMgcmVsYXRlZCB0byB0aGUgT0Utc3BlY2lmaWMgYmVoYXZpb3IKLW9mIGluc3RhbGxpbmcgaW50byAvdXNyL2JpbiwgZXRjLCByYXRoZXIgdGhhbiBkdW1waW5nIGV2ZXJ5dGhpbmcgaW50byAKK29mIGluc3RhbGxpbmcgaW50byAvdXNyL2JpbiwgZXRjLCByYXRoZXIgdGhhbiBkdW1waW5nIGV2ZXJ5dGhpbmcgaW50bwogL3Vzci9zaGFyZS9sbWJlbmNoIG9yIHNpbWlsYXJdCiAKLUluZGV4OiBsbWJlbmNoLTMuMC1hOS9zY3JpcHRzL3Jlc3VsdHMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsbWJlbmNoLTMuMC1hOS5vcmlnL3NjcmlwdHMvcmVzdWx0cwotKysrIGxtYmVuY2gtMy4wLWE5L3NjcmlwdHMvcmVzdWx0cwotQEAgLTgsMTEgKzgsMTEgQEAgUkVTVUxUUz1yZXN1bHRzLyRPUwotIEJBU0U9Li4vJFJFU1VMVFMvYHVuYW1lIC1uYAotIEVYVD0wCi0gCi0taWYgWyAhIC1mICIuLi9iaW4vJE9TLyRDT05GSUciIF0KLStpZiBbICEgLWYgIiRDT05GSUciIF0KLSB0aGVuCWVjaG8gIk5vIGNvbmZpZyBmaWxlPyIKLSAJZXhpdCAxCi0gZmkKLS0uIC4uL2Jpbi8kT1MvJENPTkZJRwotKy4gJENPTkZJRwotIAotIGlmIFsgISAtZCAuLi8kUkVTVUxUUyBdCi0gdGhlbglta2RpciAtcCAuLi8kUkVTVUxUUwotQEAgLTIzLDExICsyMyw5IEBAIGRvICAgICAgRVhUPWBleHByICRFWFQgKyAxYAotIAlSRVNVTFRTPSRCQVNFLiRFWFQKLSBkb25lCi0gCi0tY2QgLi4vYmluLyRPUyAKLS1QQVRIPS46JHtQQVRIfTsgZXhwb3J0IFBBVEgKLSBleHBvcnQgU1lOQ19NQVgKLSBleHBvcnQgT1VUUFVUCi0tbG1iZW5jaCAkQ09ORklHIDI+Li4vJHtSRVNVTFRTfQotK2xtYmVuY2ggJENPTkZJRyAyPiR7UkVTVUxUU30KLSAKLSBpZiBbIFgkTUFJTCA9IFh5ZXMgXQotIHRoZW4JZWNobyBNYWlsaW5nIHJlc3VsdHMKLUluZGV4OiBsbWJlbmNoLTMuMC1hOS9zY3JpcHRzL2NvbmZpZy1ydW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsbWJlbmNoLTMuMC1hOS5vcmlnL3NjcmlwdHMvY29uZmlnLXJ1bgotKysrIGxtYmVuY2gtMy4wLWE5L3NjcmlwdHMvY29uZmlnLXJ1bgorLS0tCisgc2NyaXB0cy9jb25maWctcnVuIHwgNDAgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNjcmlwdHMvcmVzdWx0cyAgICB8ICA4ICsrKy0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NjcmlwdHMvY29uZmlnLXJ1biBiL3NjcmlwdHMvY29uZmlnLXJ1bgoraW5kZXggYTJkNWJhNC4uOTE4Y2JkZiAxMDA3NTUKKy0tLSBhL3NjcmlwdHMvY29uZmlnLXJ1bgorKysrIGIvc2NyaXB0cy9jb25maWctcnVuCiBAQCAtMTMyLDIwICsxMzIsMjAgQEAgZXhwb3J0IExNQkVOQ0hfU0NIRUQKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgZWNobyAkTDsgZWNobyAiIjsKQEAgLTg5LDcgKzY4LDcgQEAKICBpZiBbIGBleHByICRTWU5DX01BWCBcKiAkTUJgIC1ndCBgZXhwciAkVE9UQUxfTUVNYCBdCiAgdGhlbgogIAlNQj1gZXhwciAkVE9UQUxfTUVNIC8gJFNZTkNfTUFYYAotQEAgLTIyMyw4ICsyMjMsOCBAQCB0aGVuCWVjaG8gV2FybmluZzogeW91IGhhdmUgb25seSAke01CfU1CCitAQCAtMjIzLDggKzIyMyw4IEBAIHRoZW4JZWNobyBXYXJuaW5nOiB5b3UgaGF2ZSBvbmx5ICR7TUJ9TUIgYXZhaWxhYmxlIG1lbW9yeS4KICBmaQogIAogIGVjaG8gIkhhbmcgb24sIHdlIGFyZSBjYWxjdWxhdGluZyB5b3VyIGNhY2hlIGxpbmUgc2l6ZS4iCkBAIC0xNTgsMyArMTM3LDM0IEBACiAgZWNobyBESVNLUz1cIiRESVNLU1wiID4gJEMKICBlY2hvIERJU0tfREVTQz1cIiRESVNLX0RFU0NcIiA+PiAkQwogIGVjaG8gT1VUUFVUPSRPVVRQVVQgPj4gJEMKK2RpZmYgLS1naXQgYS9zY3JpcHRzL3Jlc3VsdHMgYi9zY3JpcHRzL3Jlc3VsdHMKK2luZGV4IGNkMDdjMTUuLmQ1YWE1NTggMTAwNzU1CistLS0gYS9zY3JpcHRzL3Jlc3VsdHMKKysrKyBiL3NjcmlwdHMvcmVzdWx0cworQEAgLTgsMTEgKzgsMTEgQEAgUkVTVUxUUz1yZXN1bHRzLyRPUworIEJBU0U9Li4vJFJFU1VMVFMvYHVuYW1lIC1uYAorIEVYVD0wCisgCistaWYgWyAhIC1mICIuLi9iaW4vJE9TLyRDT05GSUciIF0KKytpZiBbICEgLWYgIiRDT05GSUciIF0KKyB0aGVuCWVjaG8gIk5vIGNvbmZpZyBmaWxlPyIKKyAJZXhpdCAxCisgZmkKKy0uIC4uL2Jpbi8kT1MvJENPTkZJRworKy4gJENPTkZJRworIAorIGlmIFsgISAtZCAuLi8kUkVTVUxUUyBdCisgdGhlbglta2RpciAtcCAuLi8kUkVTVUxUUworQEAgLTIzLDExICsyMyw5IEBAIGRvICAgICAgRVhUPWBleHByICRFWFQgKyAxYAorIAlSRVNVTFRTPSRCQVNFLiRFWFQKKyBkb25lCisgCistY2QgLi4vYmluLyRPUyAKKy1QQVRIPS46JHtQQVRIfTsgZXhwb3J0IFBBVEgKKyBleHBvcnQgU1lOQ19NQVgKKyBleHBvcnQgT1VUUFVUCistbG1iZW5jaCAkQ09ORklHIDI+Li4vJHtSRVNVTFRTfQorK2xtYmVuY2ggJENPTkZJRyAyPiR7UkVTVUxUU30KKyAKKyBpZiBbIFgkTUFJTCA9IFh5ZXMgXQorIHRoZW4JZWNobyBNYWlsaW5nIHJlc3VsdHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L3VzZS1iYXNlX2xpYmRpci1pbnN0ZWFkLW9mLWhhcmRjb2RlZC1saWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS91c2UtYmFzZV9saWJkaXItaW5zdGVhZC1vZi1oYXJkY29kZWQtbGliLnBhdGNoCmluZGV4IDMzNTFjZTguLmM2ZTk0NjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L3VzZS1iYXNlX2xpYmRpci1pbnN0ZWFkLW9mLWhhcmRjb2RlZC1saWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvdXNlLWJhc2VfbGliZGlyLWluc3RlYWQtb2YtaGFyZGNvZGVkLWxpYi5wYXRjaApAQCAtMSwxNCArMSwxNSBAQAotRnJvbSAwZDA5ZTMxOTcwNjE2ZTA5YmViN2YyMzhjMmI1OWJmYzU0MTE0OGZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3M2ZkYzU4Y2E0ZWI5ZTJmMjRkODU0YjNhZjNhNGU1ZGFhYzVhMzNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgogRGF0ZTogRnJpLCAyMiBOb3YgMjAxMyAxNToyMDowOCArMDgwMAogU3ViamVjdDogW1BBVENIXSB1c2UgYmFzZV9saWJkaXIgaW5zdGVhZCBvZiBoYXJkY29kZWQgL2xpYgogCi1VcHN0ZWFtIFN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KK1Vwc3RyZWFtIFN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAogU2lnbmVkLW9mZi1ieTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgorCiAtLS0KLSBzcmMvTWFrZWZpbGUgfCAgICA0ICsrLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBzcmMvTWFrZWZpbGUgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCiBpbmRleCBjN2E4Yzc5Li5jN2U0ZTNjIDEwMDY0NApAQCAtMjcsNiArMjgsMyBAQAogIAljZCAuLi9kb2M7IGVudiBNQUtFRkxBR1M9IiQoTUFLRUZMQUdTKSIgbWFrZSBDQz0iJHtDQ30iIE9TPSIke09TfSIgQkFTRT0iJChCQVNFKSIgaW5zdGFsbAogIAogIAotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gvMDAwMS1hdm9pZC1nY2Mtb3B0aW1pemUtYXdheS10aGUtbG9vcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLzAwMDEtYXZvaWQtZ2NjLW9wdGltaXplLWF3YXktdGhlLWxvb3BzLnBhdGNoCmluZGV4IDJkOGEyNDYuLmI5NjRiZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gvMDAwMS1hdm9pZC1nY2Mtb3B0aW1pemUtYXdheS10aGUtbG9vcHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC8wMDAxLWF2b2lkLWdjYy1vcHRpbWl6ZS1hd2F5LXRoZS1sb29wcy5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLVtQQVRDSF0gYXZvaWQgZ2NjIG9wdGltaXplLWF3YXkgdGhlIGxvb3BzCitGcm9tIDI1NzM4YmI5Yzc1Zjk0YjQ1MTIwMWFjZmQ2YmNhYjEzYmRlZWU1MTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDUgTWF5IDIwMTYgMDk6NTI6MDEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gW1BBVENIXSBhdm9pZCBnY2Mgb3B0aW1pemUtYXdheSB0aGUgbG9vcHMKIAogVXBzdHJlYW0tU3RhdHVzOiBwZW5kaW5nCiAKQEAgLTE1LDYgKzE4LDcgQEAKIAkjZGVmaW5lIFRFTihhKSBhIGEgYSBhIGEgYSBhIGEgYSBhCiAKIFNpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL2xhdF9vcHMuYyB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQpAQCAtNzQsNiArNzgsMyBAQAogIAl9CiAgCXVzZV9pbnQoKGludClyKTsKICB9Ci0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gvcmVuYW1lLWxpbmUtYmluYXJ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC9yZW5hbWUtbGluZS1iaW5hcnkucGF0Y2gKaW5kZXggOWE0MDUyMS4uYjQyZWU3ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC9yZW5hbWUtbGluZS1iaW5hcnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC9yZW5hbWUtbGluZS1iaW5hcnkucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDE2ODIzZjVjM2QzZDVhZGFkMGI3MGU5MDU1YzA4Y2I0ZTE4ZDI1NWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOb29yIEFoc2FuIDxub29yX2Foc2FuQG1lbnRvci5jb20+CitEYXRlOiBNb24sIDI5IEF1ZyAyMDExIDE2OjE3OjUxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGxtYmVuY2g6IEFkZCB2ZXJzaW9uIDMuMC1hOSAoaW5pdGlhbCByZWNpcGUpCisKIEJvdGggbG1iZW5jaCBhbmQgdXRpbC1saW51eC1uZyBwYWNrYWdlcyBwcm92aWRlIG93biAvdXNyL2Jpbi9saW5lIGJpbmFyaWVzLgogRXZlbiB0aG91Z2ggdGhlIGJpbmFyaWVzIG5hbWUgaXMgdGhlIHNhbWUsIHRoZWlyIGZ1bmN0aW9uYWxpdHkgaXMgZGlmZmVyZW50LgogVGhpcyBwYXRjaCByZW5hbWVzIGxtYmVuY2gncyBsaW5lIGJpbmFyeSBhcyBsbV9saW5lIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoCkBAIC02LDggKzExLDE0IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbYnVpbGQgc3lzdGVtIHNwZWNpZmljIGNoYW5nZV0KIAotLS0tIHBhdGNoZXMvc2NyaXB0cy9jb25maWctcnVuCTIwMDYtMTEtMjYgMTU6MTE6MDQuMDAwMDAwMDAwIC0wNTAwCi0rKysgcGF0Y2hlcy9zY3JpcHRzL2NvbmZpZy1ydW4JMjAxMS0wNC0wMSAwOTozNTo1MC4wMDAwMDAwMDAgLTA0MDAKKy0tLQorIHNjcmlwdHMvY29uZmlnLXJ1biB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NjcmlwdHMvY29uZmlnLXJ1biBiL3NjcmlwdHMvY29uZmlnLXJ1bgoraW5kZXggZjYyMGMxNS4uYTJkNWJhNCAxMDA3NTUKKy0tLSBhL3NjcmlwdHMvY29uZmlnLXJ1bgorKysrIGIvc2NyaXB0cy9jb25maWctcnVuCiBAQCAtMjI0LDcgKzIyNCw3IEBAIGZpCiAgCiAgZWNobyAiSGFuZyBvbiwgd2UgYXJlIGNhbGN1bGF0aW5nIHlvdXIgY2FjaGUgbGluZSBzaXplLiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfNy40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcGhvcm9uaXgtdGVzdC1zdWl0ZS9waG9yb25peC10ZXN0LXN1aXRlXzcuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2NkNWRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfNy40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1TVU1NQVJZID0gIlBob3Jvbml4IFRlc3QgU3VpdGUiCi1ERVNDUklQVElPTiA9ICJUaGUgUGhvcm9uaXggVGVzdCBTdWl0ZSBpcyBkZXNpZ25lZCB0byBjYXJyeSBvdXQgYm90aCBxdWFsaXRhdGl2ZSBcCi1hbmQgcXVhbnRpdGF0aXZlIGJlbmNobWFya3MgaW4gYSBjbGVhbiwgcmVwcm9kdWNpYmxlLCBhbmQgZWFzeS10by11c2UgbWFubmVyLiIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLVNFQ1RJT04gPSAiY29uc29sZS90ZXN0cyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnBob3Jvbml4LXRlc3Qtc3VpdGUuY29tL3JlbGVhc2VzLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4NmZhM2VlZGU0M2ZmZmY4ODk5MmZlMjEzNjhiMTFiNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZTlhZWMzZWY0Zjk4MDU4MTc1NmZkMGJmN2IzMGRkMWNjYjIwZTdhYWU2MzcwNzhhNTg3NjA2YmY3NWE2YjY3IgotCi1TID0gIiR7V09SS0RJUn0vcGhvcm9uaXgtdGVzdC1zdWl0ZSIKLQotaW5oZXJpdCBzeXN0ZW1kIGFsbGFyY2gKLQotZG9faW5zdGFsbCgpIHsKLSAgICBERVNURElSPSR7RH0gLi9pbnN0YWxsLXNoICR7ZXhlY19wcmVmaXh9Ci0KLSAgICBpZiBbICIke3N5c3RlbWRfdW5pdGRpcn0iICE9ICIvdXNyL2xpYi9zeXN0ZW1kIiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgICAgICBtdiAke0R9L3Vzci9saWIvc3lzdGVtZC9zeXN0ZW0vKiAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgICAgIHJtIC1yZiAke0R9L3Vzci9saWIvCi0gICAgZmkKLX0KLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInBob3JvbWF0aWMtY2xpZW50LnNlcnZpY2UgcGhvcm9tYXRpYy1zZXJ2ZXIuc2VydmljZSIKLVJERVBFTkRTXyR7UE59ICs9ICJiYXNoIHB5dGhvbiBwaHAtY2xpIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L3Bob3Jvbml4LXRlc3Qtc3VpdGUgXAotICAgICR7ZGF0YWRpcn0vYXBwZGF0YS9waG9yb25peC10ZXN0LXN1aXRlLmFwcGRhdGEueG1sIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcy9waG9yb25peC10ZXN0LXN1aXRlLnBuZyBcCi0gICAgJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzY0eDY0L21pbWV0eXBlcy9hcHBsaWNhdGlvbi14LW9wZW5iZW5jaG1hcmtpbmcucG5nIFwKLSAgICAke2RhdGFkaXJ9L21pbWUvcGFja2FnZXMvb3BlbmJlbmNobWFya2luZy1taW1lLnhtbCBcCi0gICAgJHtzeXN0ZW1kX3VuaXRkaXJ9LyogXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3Bob3Jvbml4LXRlc3Qtc3VpdGUvcGhvcm9uaXgtdGVzdC1zdWl0ZV83LjguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfNy44LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY5MGE3MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfNy44LjAuYmIKQEAgLTAsMCArMSw0MSBAQAorU1VNTUFSWSA9ICJQaG9yb25peCBUZXN0IFN1aXRlIgorREVTQ1JJUFRJT04gPSAiVGhlIFBob3Jvbml4IFRlc3QgU3VpdGUgaXMgZGVzaWduZWQgdG8gY2Fycnkgb3V0IGJvdGggcXVhbGl0YXRpdmUgXAorYW5kIHF1YW50aXRhdGl2ZSBiZW5jaG1hcmtzIGluIGEgY2xlYW4sIHJlcHJvZHVjaWJsZSwgYW5kIGVhc3ktdG8tdXNlIG1hbm5lci4iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitTRUNUSU9OID0gImNvbnNvbGUvdGVzdHMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5waG9yb25peC10ZXN0LXN1aXRlLmNvbS9yZWxlYXNlcy8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiODUwODQzYmQ5MjUyODIzZTdlMjRiYzA4NDk3NzMwMDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2Q2Yzg2OTg0MWYyOGU0YWMxZThhNWU0Y2RhMDVmYWZjZTlhNTIzYTZiNGYwZjNhNDc4MDVlZmQzMDQ5NGQ4OCIKKworUyA9ICIke1dPUktESVJ9L3Bob3Jvbml4LXRlc3Qtc3VpdGUiCisKK2luaGVyaXQgc3lzdGVtZCBhbGxhcmNoCisKK2RvX2luc3RhbGwoKSB7CisgICAgREVTVERJUj0ke0R9IC4vaW5zdGFsbC1zaCAke2V4ZWNfcHJlZml4fQorCisgICAgaWYgWyAiJHtzeXN0ZW1kX3VuaXRkaXJ9IiAhPSAiL3Vzci9saWIvc3lzdGVtZCIgXTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICAgICAgbXYgJHtEfS91c3IvbGliL3N5c3RlbWQvc3lzdGVtLyogJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgICAgICBybSAtcmYgJHtEfS91c3IvbGliLworICAgIGZpCit9CisKKyMgSXQgaXMgbm90IGFkdmlzYWJsZSB0byBlbmFibGUgdGhlc2Ugc2VydmljZXMgYnkgZGVmYXVsdCBzaW5jZSB0aGV5IGNhbiBjYXVzZQorIyBjb250aW51YWwgdGFyZ2V0IHJlYm9vdHMgaWYgdGhleSBlbmNvdW50ZXIgbmV0d29yayBwcm9ibGVtcy4KKyMKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJwaG9yb21hdGljLWNsaWVudC5zZXJ2aWNlIHBob3JvbWF0aWMtc2VydmVyLnNlcnZpY2UiCisKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIHB5dGhvbiBwaHAtY2xpIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2RhdGFkaXJ9L3Bob3Jvbml4LXRlc3Qtc3VpdGUgXAorICAgICR7ZGF0YWRpcn0vYXBwZGF0YS9waG9yb25peC10ZXN0LXN1aXRlLmFwcGRhdGEueG1sIFwKKyAgICAke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcy9waG9yb25peC10ZXN0LXN1aXRlLnBuZyBcCisgICAgJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzY0eDY0L21pbWV0eXBlcy9hcHBsaWNhdGlvbi14LW9wZW5iZW5jaG1hcmtpbmcucG5nIFwKKyAgICAke2RhdGFkaXJ9L21pbWUvcGFja2FnZXMvb3BlbmJlbmNobWFya2luZy1taW1lLnhtbCBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9LyogXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3doZXRzdG9uZS93aGV0c3RvbmVfMS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3doZXRzdG9uZS93aGV0c3RvbmVfMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYWQwNGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvd2hldHN0b25lL3doZXRzdG9uZV8xLjIuYmIKQEAgLTAsMCArMSwyMCBAQAorREVTQ1JJUFRJT04gPSAiV2hldHN0b25lIGJlbmNobWFyayBpcyBhIHN5bnRoZXRpYyBiZW5jaG1hcmsgZm9yIGV2YWx1YXRpbmcgdGhlIHBlcmZvcm1hbmNlIG9mIGNvbXB1dGVycyIKK1NVTU1BUlkgPSAiQ1BVIGJlbmNobWFyayB0byBtZWFzdXJlIGZsb2F0aW5nIHBvaW50IHBlcmZvcm1hbmNlIgorCitMSUNFTlNFID0gIlBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ImZpbGU6Ly8ke1dPUktESVJ9L3doZXRzdG9uZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9NTI7bWQ1PWM3OTVlZGMxNWU3ZTFkOTJjYThmODhhZDcxODQ0OWY1IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubmV0bGliLm9yZy9iZW5jaG1hcmsvd2hldHN0b25lLmMiCitTUkNfVVJJW21kNXN1bV0gPSAiZDhlYjJjZDcxMDRiYjVhMTJkNjE0YWM2ZDNmMWY5ZmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzMzZTRjZWNhMDQyYzE0NmY2M2VlYzYwNTU3M2QxNmFlOGIwNzE2NmNiYzQ0YTE3YmVjMWVhOTdjNmYxZWZiZiIKKworUyA9ICIke1dPUktESVJ9IgorCitkb19jb21waWxlICgpIHsKKwkke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSAtT2Zhc3QgLW8gd2hldHN0b25lIHdoZXRzdG9uZS5jIC1sbQorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1EbSAwNzU1IHdoZXRzdG9uZSAke0R9JHtiaW5kaXJ9L3doZXRzdG9uZQorfQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9hY3BpdG9vbC9hY3BpdG9vbF8wLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9hY3BpdG9vbC9hY3BpdG9vbF8wLjUuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaXRvb2wvYWNwaXRvb2xfMC41LjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9hY3BpdG9vbC9hY3BpdG9vbF8wLjUuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHVmcmVxdXRpbHMvY3B1ZnJlcXV0aWxzLzAwMDEtZG9udC11bnNldC1jZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvY3B1ZnJlcXV0aWxzL2NwdWZyZXF1dGlscy8wMDAxLWRvbnQtdW5zZXQtY2ZsYWdzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwdWZyZXF1dGlscy9jcHVmcmVxdXRpbHMvMDAwMS1kb250LXVuc2V0LWNmbGFncy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2NwdWZyZXF1dGlscy9jcHVmcmVxdXRpbHMvMDAwMS1kb250LXVuc2V0LWNmbGFncy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHVmcmVxdXRpbHMvY3B1ZnJlcXV0aWxzXzAwOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9jcHVmcmVxdXRpbHMvY3B1ZnJlcXV0aWxzXzAwOC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHVmcmVxdXRpbHMvY3B1ZnJlcXV0aWxzXzAwOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2NwdWZyZXF1dGlscy9jcHVmcmVxdXRpbHNfMDA4LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VkYWMtdXRpbHMvZWRhYy11dGlsc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWRhYy11dGlscy9lZGFjLXV0aWxzX2dpdC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lZGFjLXV0aWxzL2VkYWMtdXRpbHNfZ2l0LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWRhYy11dGlscy9lZGFjLXV0aWxzX2dpdC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lZGFjLXV0aWxzL2ZpbGVzL2FkZC1yZXN0YXJ0LXRvLWluaXRzY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWRhYy11dGlscy9maWxlcy9hZGQtcmVzdGFydC10by1pbml0c2NyaXB0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VkYWMtdXRpbHMvZmlsZXMvYWRkLXJlc3RhcnQtdG8taW5pdHNjcmlwdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VkYWMtdXRpbHMvZmlsZXMvYWRkLXJlc3RhcnQtdG8taW5pdHNjcmlwdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lZGFjLXV0aWxzL2ZpbGVzL2VkYWMuc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZGFjLXV0aWxzL2ZpbGVzL2VkYWMuc2VydmljZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lZGFjLXV0aWxzL2ZpbGVzL2VkYWMuc2VydmljZQpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VkYWMtdXRpbHMvZmlsZXMvZWRhYy5zZXJ2aWNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VkYWMtdXRpbHMvZmlsZXMvbWFrZS1pbml0LXNjcmlwdC1iZS1hYmxlLXRvLWF1dG9tYXRpY2FsbHktbG9hZC1FREFDLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZGFjLXV0aWxzL2ZpbGVzL21ha2UtaW5pdC1zY3JpcHQtYmUtYWJsZS10by1hdXRvbWF0aWNhbGx5LWxvYWQtRURBQy0ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZWRhYy11dGlscy9maWxlcy9tYWtlLWluaXQtc2NyaXB0LWJlLWFibGUtdG8tYXV0b21hdGljYWxseS1sb2FkLUVEQUMtLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWRhYy11dGlscy9maWxlcy9tYWtlLWluaXQtc2NyaXB0LWJlLWFibGUtdG8tYXV0b21hdGljYWxseS1sb2FkLUVEQUMtLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZmlib290bWdyL2VmaWJvb3RtZ3JfMC4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZmlib290bWdyL2VmaWJvb3RtZ3JfMC4xNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpYm9vdG1nci9lZmlib290bWdyXzAuMTUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZmlib290bWdyL2VmaWJvb3RtZ3JfMC4xNS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0Y2UxMzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci8wMDAxLWVmaXZhci1kcC5oLUFkZC1XdW5rbm93bi1hdHRyaWJ1dGVzLXdoZW4tdXNpbmctY2xhbmcucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBkNjVjMzI1ZGQ4NjgxZWRmMmVlMzMzMmVlYjBhNTQ3MjI5YzdmZmI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjQgQXVnIDIwMTcgMTU6NTQ6NDcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZWZpdmFyLWRwLmg6IEFkZCAtV3Vua25vd24tYXR0cmlidXRlcyB3aGVuIHVzaW5nIGNsYW5nCisKK2NoYW5nZSAhZHAgY2hlY2sgdG8gYSBjb21wYXJpc2lvbiBhZ2FpbnN0IE5VTEwgdG8gc2lsZW50IGNsYW5nIHdhcm5pbmcKK25vbm51bGwgcGFyYW1ldGVyICdkcCcgd2lsbCBldmFsdWF0ZSB0byAndHJ1ZScgb24gZmlyc3QgZW5jb3VudGVyCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLQorIHNyYy9pbmNsdWRlL2VmaXZhci9lZml2YXItZHAuaCB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9lZml2YXIvZWZpdmFyLWRwLmggYi9zcmMvaW5jbHVkZS9lZml2YXIvZWZpdmFyLWRwLmgKK2luZGV4IDNhNTA5YjcuLmMxNDBlOGQgMTAwNjQ0CistLS0gYS9zcmMvaW5jbHVkZS9lZml2YXIvZWZpdmFyLWRwLmgKKysrKyBiL3NyYy9pbmNsdWRlL2VmaXZhci9lZml2YXItZHAuaAorQEAgLTc4Myw5ICs3ODMsMTQgQEAgZXh0ZXJuIGludCBlZmlkcF9hcHBlbmRfaW5zdGFuY2UoY29uc3RfZWZpZHAgZHAsIGNvbnN0X2VmaWRwIGRwaSwgZWZpZHAgKm91dCk7CisgICogdGhvdWdoIG9sZGVyIG9yIG90aGVyIGNvbXBpbGVycyBtaWdodCBqdXN0IGlnbm9yZSB0aGF0IGF0dHJpYnV0ZSBpZiB0aGV5CisgICogZG9uJ3Qgc3VwcG9ydCBpdC4gIFVnaC4KKyAgKi8KKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gNgorICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdub25udWxsLWNvbXBhcmUiCisgI2VuZGlmCisrI2lmIGRlZmluZWQoX19jbGFuZ19fKQorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLWF0dHJpYnV0ZXMiCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3BvaW50ZXItYm9vbC1jb252ZXJzaW9uIgorKyNlbmRpZgorIAorIHN0YXRpYyBpbmxpbmUgaW50MTZfdAorIF9fYXR0cmlidXRlX18oKF9fYXJ0aWZpY2lhbF9fKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDEtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDEtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTFlNTBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gYTkxMTVkOWU2ZjBmNjJkNmJiNzM1Y2UzNjk4ODU4ZDFmODlmOGQ3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyNSBTZXAgMjAxNSAxODoxNDozMSArMDgwMAorU3ViamVjdDogW1BBVENIXSBlZml2YXI6IGZpeCBmb3IgY3Jvc3MgY29tcGlsZQorCitJdCBidWlsZHMgYW5kIGNhbGxzIGVsZiBmaWxlIG1ha2VndWlkcyB0byBnZW5lcmF0ZSBhIGhlYWRlciBmaWxlIHdoaWNoCitkb2Vzbid0IHdvcmsgZm9yIGNyb3NzIGNvbXBpbGUuIEZpeCBpdC4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBzcmMvTWFrZWZpbGUgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCitpbmRleCAwYzE2NTk3Li5kY2M3ZmM4IDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlCisrKysgYi9zcmMvTWFrZWZpbGUKK0BAIC00MCw4ICs0MCw4IEBAIGFiaWNoZWNrIDogJChwYXRzdWJzdCAlLnNvLCUuYWJpY2hlY2ssJChMSUJUQVJHRVRTKSkKKyAuL2d1aWQtc3ltYm9scy5jIDogaW5jbHVkZS9lZml2YXIvZWZpdmFyLWd1aWRzLmgKKyAuL2d1aWRzLmJpbiA6IGluY2x1ZGUvZWZpdmFyL2VmaXZhci1ndWlkcy5oCisgLi9uYW1lcy5iaW4gOiBpbmNsdWRlL2VmaXZhci9lZml2YXItZ3VpZHMuaAorLWluY2x1ZGUvZWZpdmFyL2VmaXZhci1ndWlkcy5oIDogbWFrZWd1aWRzIGd1aWRzLnR4dAorLQkuL21ha2VndWlkcyBndWlkcy50eHQgZ3VpZHMuYmluIG5hbWVzLmJpbiBcCisraW5jbHVkZS9lZml2YXIvZWZpdmFyLWd1aWRzLmggOiBndWlkcy50eHQKKysJbWFrZWd1aWRzIGd1aWRzLnR4dCBndWlkcy5iaW4gbmFtZXMuYmluIFwKKyAJCWd1aWQtc3ltYm9scy5jIGluY2x1ZGUvZWZpdmFyL2VmaXZhci1ndWlkcy5oCisgCisgbWFrZWd1aWRzIDogQ1BQRkxBR1MrPS1ERUZJVkFSX0JVSUxEX0VOVklST05NRU5UCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci8wMDAxLW1ha2VndWlkcy1Eby1ub3QtdXNlLV9fYnN3YXBfY29uc3RhbnRfLTE2LTMyLW1hY3Jvcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDEtbWFrZWd1aWRzLURvLW5vdC11c2UtX19ic3dhcF9jb25zdGFudF8tMTYtMzItbWFjcm9zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNmViMDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci8wMDAxLW1ha2VndWlkcy1Eby1ub3QtdXNlLV9fYnN3YXBfY29uc3RhbnRfLTE2LTMyLW1hY3Jvcy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGRkNDI5MTI2NWI3YjNkN2Q3ZmZhMWQ4YWRmMzI3ODFhZTI1ZGJmZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxNSBKdWwgMjAxNyAwMDoyOTo0MiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtYWtlZ3VpZHM6IERvIG5vdCB1c2UgX19ic3dhcF9jb25zdGFudF97MTZ8MzJ9IG1hY3JvcworCitub3QgYXZhaWxhYmxlIG9uIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tCisgc3JjL21ha2VndWlkcy5jIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFrZWd1aWRzLmMgYi9zcmMvbWFrZWd1aWRzLmMKK2luZGV4IGRhMmY1ZjcuLmRhZjgyMWEgMTAwNjQ0CistLS0gYS9zcmMvbWFrZWd1aWRzLmMKKysrKyBiL3NyYy9tYWtlZ3VpZHMuYworQEAgLTE1NSwxMyArMTU1LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAjaWYgQllURV9PUkRFUiA9PSBCSUdfRU5ESUFOXG5cCisgI2RlZmluZSBjcHVfdG9fYmUzMihuKSAobilcblwKKyAjZGVmaW5lIGNwdV90b19iZTE2KG4pIChuKVxuXAorLSNkZWZpbmUgY3B1X3RvX2xlMzIobikgKF9fYnN3YXBfY29uc3RhbnRfMzIobikpXG5cCistI2RlZmluZSBjcHVfdG9fbGUxNihuKSAoX19ic3dhcF9jb25zdGFudF8xNihuKSlcblwKKysjZGVmaW5lIGNwdV90b19sZTMyKG4pICgodWludDMyX3QpICgobik+PjI0IHwgKG4pPj44JjB4ZmYwMCB8IChuKTw8OCYweGZmMDAwMCB8IChuKTw8MjQpKVxuXAorKyNkZWZpbmUgY3B1X3RvX2xlMTYobikgKCh1aW50MTZfdCkgKChuKTw8OCB8IChuKT4+OCkpXG5cCisgI2Vsc2VcblwKKyAjZGVmaW5lIGNwdV90b19sZTMyKG4pIChuKVxuXAorICNkZWZpbmUgY3B1X3RvX2xlMTYobikgKG4pXG5cCistI2RlZmluZSBjcHVfdG9fYmUzMihuKSAoX19ic3dhcF9jb25zdGFudF8zMihuKSlcblwKKy0jZGVmaW5lIGNwdV90b19iZTE2KG4pIChfX2Jzd2FwX2NvbnN0YW50XzE2KG4pKVxuXAorKyNkZWZpbmUgY3B1X3RvX2JlMzIobikgKCh1aW50MzJfdCkgKChuKT4+MjQgfCAobik+PjgmMHhmZjAwIHwgKG4pPDw4JjB4ZmYwMDAwIHwgKG4pPDwyNCkpXG5cCisrI2RlZmluZSBjcHVfdG9fYmUxNihuKSAoKHVpbnQxNl90KSAoKG4pPDw4IHwgKG4pPj44KSlcblwKKyAjZW5kaWZcblwKKyAiIiIpOworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwMy1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwMy1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMTA1ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci8wMDAzLWVmaXZhci1maXgtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBkZWE0YTU1NzE0MjQ5YjI3MzRhMzY3MDExMjBmZDIyYzkxYzY0ZWMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogU2F0LCA3IE1heSAyMDE2IDAyOjA2OjQ3IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBmaXggZWZpdmFyLnBjIG5vdCBmb3VuZAorCitJdCBmaXhlcyBlZml2YXIucGMgbm90IGZvdW5kOgorLi4uCit8IGluc3RhbGwgLWQgLW0gNzU1IGVmaXZhci8wLjIzLXIwL2ltYWdlL3Vzci9saWIvcGtnY29uZmlnLworfCBpbnN0YWxsIC1tIDY0NCBlZml2YXIucGMgZWZpdmFyLzAuMjMtcjAvaW1hZ2UvdXNyL2xpYi9wa2djb25maWcvCis7ICBpbnN0YWxsIC1tIDY0NCBlZmlib290LnBjIGVmaXZhci8wLjIzLXIwL2ltYWdlL3Vzci9saWIvcGtnY29uZmlnLworOworfCBpbnN0YWxsOiBjYW5ub3Qgc3RhdCAnZWZpdmFyLnBjJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorfCBpbnN0YWxsOiBjYW5ub3Qgc3RhdCAnZWZpYm9vdC5wYyc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK3wgbWFrZVsxXTogKioqIFtpbnN0YWxsXSBFcnJvciAxCit8IG1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5IGBlZml2YXIvMC4yMy1yMC9naXQvc3JjJworfCBtYWtlOiAqKiogW2luc3RhbGxdIEVycm9yIDIKK3wgRVJST1I6IG9lX3J1bm1ha2UgZmFpbGVkCisuLi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworLS0tCisgc3JjL01ha2VmaWxlIHwgNCArKystCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCitpbmRleCBkY2M3ZmM4Li42OTFhYThhIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlCisrKysgYi9zcmMvTWFrZWZpbGUKK0BAIC05NCw3ICs5NCw5IEBAIGluc3RhbGwgOiBhbGwKKyAJCWxuIC1mcyAkKHgpLjEuJChWRVJTSU9OKSAkKERFU1RESVIpJChsaWJkaXIpLyQoeCkgO1wKKyAJCSkKKyAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQoUENESVIpCistCSQoZm9yZWFjaCB4LCAkKFBDVEFSR0VUUyksICQoSU5TVEFMTCkgLW0gNjQ0ICQoeCkgJChERVNURElSKSQoUENESVIpIDspCisrCSQoZm9yZWFjaCB4LCAkKFBDVEFSR0VUUyksICQoSU5TVEFMTCkgLW0gNjQ0ICQoVE9QRElSKS9zcmMvJCh4KS5pbiAkKERFU1RESVIpJChQQ0RJUikvJCh4KSA7XAorKwkJc2VkIC1pIC1lICJzOkBATElCRElSQEA6JChsaWJkaXIpOmciIC1lICJzOkBAVkVSU0lPTkBAOiQoVkVSU0lPTik6ZyIgXAorKwkJCSQoREVTVERJUikkKFBDRElSKS8kKHgpOyApCisgCSQoSU5TVEFMTCkgLWQgLW0gNzU1ICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2VmaXZhcgorIAkkKGZvcmVhY2ggeCwgJCh3aWxkY2FyZCAkKFRPUERJUikvc3JjL2luY2x1ZGUvZWZpdmFyLyouaCksICQoSU5TVEFMTCkgLW0gNjQ0ICQoeCkgJChERVNURElSKSQoaW5jbHVkZWRpcikvZWZpdmFyLyQobm90ZGlyICQoeCkpOykKKyAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQoYmluZGlyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDA0LWZpeC11bmtub3ctb3B0aW9uLWZvci1nb2xkLWxpbmtlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDQtZml4LXVua25vdy1vcHRpb24tZm9yLWdvbGQtbGlua2VyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDQtZml4LXVua25vdy1vcHRpb24tZm9yLWdvbGQtbGlua2VyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci8wMDA0LWZpeC11bmtub3ctb3B0aW9uLWZvci1nb2xkLWxpbmtlci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvYWxsb3ctbXVsdGktZGVmaW5pdGlvbnMtZm9yLW5hdGl2ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyL2FsbG93LW11bHRpLWRlZmluaXRpb25zLWZvci1uYXRpdmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg4YWYxZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyL2FsbG93LW11bHRpLWRlZmluaXRpb25zLWZvci1uYXRpdmUucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBjODAxZGNiMDNkNDJlYjUzM2E5YmVhZDBiMzk3ZDdjZTRmYzVhNmZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDEwIEF1ZyAyMDE2IDE3OjQ5OjUwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFsbG93IG11bHRpIGRlZmluaXRpb25zIGZvciBuYXRpdmUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0l0IGZhaWxzIHRvIGNyZWF0ZSAuc28gZmlsZSB3aGVuIGJ1aWxkIGVmaXZhci1uYXRpdmU6CisKK3wgbGliLm86KCpJTkQqKzB4MCk6IG11bHRpcGxlIGRlZmluaXRpb24gb2YgYGVmaV9zZXRfdmFyaWFibGUnCit8IGxpYi5vOmxpYi5jOigudGV4dCsweGEwKTogZmlyc3QgZGVmaW5lZCBoZXJlCisKK0FkZCBsaW5rIG9wdGlvbiAnLXogbXVsZGVmcycgdG8gZml4IGl0LgorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworLS0tCisgTWFrZS5ydWxlcyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvTWFrZS5ydWxlcyBiL01ha2UucnVsZXMKK2luZGV4IDg4YjlhYTcuLjc5OTMzMmYgMTAwNjQ0CistLS0gYS9NYWtlLnJ1bGVzCisrKysgYi9NYWtlLnJ1bGVzCitAQCAtMjAsNiArMjAsNyBAQCBpbmNsdWRlICQoVE9QRElSKS9NYWtlLnZlcnNpb24KKyAJJChDQ0xEKSAkKGNjbGRmbGFncykgJChDUFBGTEFHUykgJChTT0ZMQUdTKSBcCisgCSAgLVdsLC1zb25hbWUsJEAuMSBcCisgCSAgLVdsLC0tdmVyc2lvbi1zY3JpcHQ9JChNQVApIFwKKysJICAtV2wsLXosbXVsZGVmcyBcCisgCSAgLW8gJEAgJF4gJChMRExJQlMpCisgCisgJS5hYml4bWwgOiAlLnNvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci9maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtaG9zdC1nY2MtNC42LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWhvc3QtZ2NjLTQuNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmM5YTU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWhvc3QtZ2NjLTQuNi5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDNlZGNlNmEwMDE5YmNiOTBmZWJjMWY2NTRiNWIyZTJiYWQ1YzU5YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI2IE1heSAyMDE2IDIxOjUwOjAxIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBjb21waWxlIGZhaWx1cmUgd2l0aCBvbGRlciBob3N0IGdjYyAoPD00LjYpCisKK1doaWxlIGhvc3QgZ2NjIHZlcnNpb24gaXMgNC42LjMgaW4gdWJ1bnR1IDEyMDQsIGl0CitkaWQgbm90IHJlY29nbml6ZSAtc3RkPWdudTExIGFuZCAtV21heWJlLXVuaW5pdGlhbGl6ZWQuCisKK1doaWxlIGhvc3QgZ2NjIHZlcnNpb24gaXMgNC40LjcgaW4gY2VudG9zNiwgaXQKK2RpZCBub3QgcmVjb2duaXplIC1zdGQ9Z251MTEsIC1XbWF5YmUtdW5pbml0aWFsaXplZCwKK2FuZCAtZmx0by4KKworRm9yIG5hdGl2ZSBidWlsZCwgdXNlIC1zdGQ9Z251OTkgdG8gcmVwbGFjZSAtc3RkPWdudTExLAorYW5kIGRpcmVjdGx5IHJlbW92ZSAtV21heWJlLXVuaW5pdGlhbGl6ZWQgYW5kIC1mbHRvLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBnY2Muc3BlY3MgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjLnNwZWNzIGIvZ2NjLnNwZWNzCitpbmRleCA0NWQ0M2QxLi5mMWM2OTQ0IDEwMDY0NAorLS0tIGEvZ2NjLnNwZWNzCisrKysgYi9nY2Muc3BlY3MKK0BAIC0yLDEzICsyLDEzIEBACisgKyAtRF9HTlVfU09VUkNFCisgCisgKmVmaXZhcl9jcHBfb3B0aW9uczoKKy0gLVdlcnJvciAtV2FsbCAtc3RkPWdudTExIC1XZXh0cmEKKysgLVdlcnJvciAtV2FsbCAtc3RkPWdudTk5IC1XZXh0cmEKKyAKKyAqY3BwX29wdGlvbnM6CisgKyAlKGVmaXZhcl9jcHBfb3B0aW9ucykKKyAKKyAqY2MxX29wdGlvbnM6CistKyAlKGVmaXZhcl9jcHBfb3B0aW9ucykgLVdtYXliZS11bmluaXRpYWxpemVkIC1mbm8tbWVyZ2UtY29uc3RhbnRzIC1mdmlzaWJpbGl0eT1oaWRkZW4gJXshcjoleyFmcGllOiV7IWZQSUU6JXshZnBpYzoleyFmUElDOiV7IWZuby1waWM6LWZQSUV9fX19fX0KKysrICUoZWZpdmFyX2NwcF9vcHRpb25zKSAtZm5vLW1lcmdlLWNvbnN0YW50cyAtZnZpc2liaWxpdHk9aGlkZGVuICV7IXI6JXshZnBpZToleyFmUElFOiV7IWZwaWM6JXshZlBJQzoleyFmbm8tcGljOi1mUElFfX19fX19CisgCisgKnNlbGZfc3BlYzoKKyArICV7IXNoYXJlZDoleyFzdGF0aWM6JXshcjotcGllfX19ICV7c3RhdGljOi1XbCwtbm8tZmF0YWwtd2FybmluZ3MgLVdsLC1zdGF0aWMgLXN0YXRpYyAtV2wsLXoscmVscm8sLXosbm93fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvbXVzbC1zdHJuZHVwYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyL211c2wtc3RybmR1cGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg2NGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyL211c2wtc3RybmR1cGEucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSA4MDAwYjlhZmM4NTg0NzI5MTJhYWNlOTg1MDA0YjQ0ZjhlYjQ2N2UwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTggQXVnIDIwMTcgMDk6NDk6NDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3VwcG9ydCBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgc3JjL2xpbnV4LmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbGludXguYyBiL3NyYy9saW51eC5jCitpbmRleCAzNGVkNDc5Li4xMzA0ZjJiIDEwMDY0NAorLS0tIGEvc3JjL2xpbnV4LmMKKysrKyBiL3NyYy9saW51eC5jCitAQCAtNDAsNiArNDAsMTAgQEAKKyAjaW5jbHVkZSA8ZWZpdmFyLmg+CisgI2luY2x1ZGUgPGVmaWJvb3QuaD4KKyAKKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyNkZWZpbmUgc3RybmR1cGEoeCxzKSBzdHJuY3B5KGFsbG9jYShzdHJsZW4oeCkrMSkseCxzKQorKyNlbmRpZgorKworICNpbmNsdWRlICJkcC5oIgorICNpbmNsdWRlICJsaW51eC5oIgorICNpbmNsdWRlICJ1dGlsLmgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyXzAuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhcl8wLjMxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyXzAuMzEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyXzAuMzEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLXBsYXRmb3JtLUFkZC1yaXNjdi10by1rbm93bi1wbGF0Zm9ybXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1wbGF0Zm9ybS1BZGQtcmlzY3YtdG8ta25vd24tcGxhdGZvcm1zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYTY5YTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1wbGF0Zm9ybS1BZGQtcmlzY3YtdG8ta25vd24tcGxhdGZvcm1zLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gZDJhMjhkY2RiZDEwNTFkMmY0ODMyMGUyZWRhMzM5MzU4MWZlMDUxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE3IE1hciAyMDE4IDIzOjA4OjI5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHBsYXRmb3JtOiBBZGQgcmlzY3YgdG8ga25vd24gcGxhdGZvcm1zCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3Jldmlldy5jb3JlYm9vdC5vcmcvIy9jL2ZsYXNocm9tLysvMjUyNjAvXQorIHBsYXRmb3JtLmggfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcGxhdGZvcm0uaCBiL3BsYXRmb3JtLmgKK2luZGV4IGIyZmRjZDAuLjJjYWRiYjMgMTAwNjQ0CistLS0gYS9wbGF0Zm9ybS5oCisrKysgYi9wbGF0Zm9ybS5oCitAQCAtNjksNiArNjksOSBAQAorICNlbGlmIGRlZmluZWQgKF9fbTY4a19fKQorIAkjZGVmaW5lIF9fRkxBU0hST01fQVJDSF9fICJtNjhrIgorIAkjZGVmaW5lIElTX002OEsgMQorKyNlbGlmIGRlZmluZWQgKF9fcmlzY3YpCisrCSNkZWZpbmUgX19GTEFTSFJPTV9BUkNIX18gInJpc2N2IgorKwkjZGVmaW5lIElTX1JJU0NWIDEKKyAjZWxpZiBkZWZpbmVkIChfX3NoX18pCisgCSNkZWZpbmUgX19GTEFTSFJPTV9BUkNIX18gInNoIgorIAkjZGVmaW5lIElTX1NIIDEKK0BAIC03Nyw3ICs4MCw3IEBACisgCSNkZWZpbmUgSVNfUzM5MCAxCisgI2VuZGlmCisgCistI2lmICEoSVNfWDg2IHx8IElTX01JUFMgfHwgSVNfUFBDIHx8IElTX0FSTSB8fCBJU19TUEFSQyB8fCBJU19BTFBIQSB8fCBJU19IUFBBIHx8IElTX002OEsgfHwgSVNfU0ggfHwgSVNfUzM5MCkKKysjaWYgIShJU19YODYgfHwgSVNfTUlQUyB8fCBJU19QUEMgfHwgSVNfQVJNIHx8IElTX1NQQVJDIHx8IElTX0FMUEhBIHx8IElTX0hQUEEgfHwgSVNfTTY4SyB8fCBJU19SSVNDViB8fCBJU19TSCB8fCBJU19TMzkwKQorICNlcnJvciBVbmtub3duIGFyY2hpdGVjdHVyZQorICNlbmRpZgorIAorLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vc3N0MjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb20vc3N0MjYucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tL3NzdDI2LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb20vc3N0MjYucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb21fMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYWM4NzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb21fMS4wLmJiCkBAIC0wLDAgKzEsMTkgQEAKK0RFU0NSSVBUSU9OID0gImZsYXNocm9tIGlzIGEgdXRpbGl0eSBmb3IgaWRlbnRpZnlpbmcsIHJlYWRpbmcsIHdyaXRpbmcsIHZlcmlmeWluZyBhbmQgZXJhc2luZyBmbGFzaCBjaGlwcyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitIT01FUEFHRSA9ICJodHRwOi8vZmxhc2hyb20ub3JnIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0RFUEVORFMgPSAicGNpdXRpbHMgbGlidXNiIGxpYnVzYi1jb21wYXQiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5mbGFzaHJvbS5vcmcvcmVsZWFzZXMvZmxhc2hyb20tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9zc3QyNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBsYXRmb3JtLUFkZC1yaXNjdi10by1rbm93bi1wbGF0Zm9ybXMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDJkOTk5OTkwYzczNWQ4ODY1MzYyN2NlZmNjMTNiOWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzcwMmZhMjE1YmE1ZmI1YWY4ZTU0Yzg1MmQyMzk4OTljZmExMzg5MTk0YzFlNTFjYjJhMTcwYzRkYzlkZWU2NCIKKworaW5oZXJpdCBwa2djb25maWcKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL2ZhbmNvbnRyb2wgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL2ZhbmNvbnRyb2wKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL2ZhbmNvbnRyb2wKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvZmFuY29udHJvbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvc2Vuc29yZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvc2Vuc29yZApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvc2Vuc29yZApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xtX3NlbnNvcnMvbG1zZW5zb3JzLWNvbmZpZy9zZW5zb3JkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzLWNvbmZpZy9zZW5zb3JkLmNnaSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvc2Vuc29yZC5jZ2kKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL3NlbnNvcmQuY2dpCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL3NlbnNvcmQuY2dpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzLWNvbmZpZy9zZW5zb3JkLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL3NlbnNvcmQuY29uZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvc2Vuc29yZC5jb25mCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL3NlbnNvcmQuY29uZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvc2Vuc29ycy5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xtX3NlbnNvcnMvbG1zZW5zb3JzLWNvbmZpZy9zZW5zb3JzLmNvbmYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL3NlbnNvcnMuY29uZgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xtX3NlbnNvcnMvbG1zZW5zb3JzLWNvbmZpZy9zZW5zb3JzLmNvbmYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWdfMS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzLWNvbmZpZ18xLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWdfMS4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzLzAwMDEtbG1zZW5zb3JzLXNlbnNvcnMtZGV0ZWN0LXByaW50LWEtc3BlY2lhbC1tZXNzYWdlLXdoZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy8wMDAxLWxtc2Vuc29ycy1zZW5zb3JzLWRldGVjdC1wcmludC1hLXNwZWNpYWwtbWVzc2FnZS13aGUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMvMDAwMS1sbXNlbnNvcnMtc2Vuc29ycy1kZXRlY3QtcHJpbnQtYS1zcGVjaWFsLW1lc3NhZ2Utd2hlLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMvMDAwMS1sbXNlbnNvcnMtc2Vuc29ycy1kZXRlY3QtcHJpbnQtYS1zcGVjaWFsLW1lc3NhZ2Utd2hlLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzLzAwMDEtcHJvZy1Eby1ub3QtbGltaXQtc3lzLWlvLmgtaGVhZGVyLWluY2x1ZGUtdG8tanVzdC1nbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy8wMDAxLXByb2ctRG8tbm90LWxpbWl0LXN5cy1pby5oLWhlYWRlci1pbmNsdWRlLXRvLWp1c3QtZ2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMvMDAwMS1wcm9nLURvLW5vdC1saW1pdC1zeXMtaW8uaC1oZWFkZXItaW5jbHVkZS10by1qdXN0LWdsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMvMDAwMS1wcm9nLURvLW5vdC1saW1pdC1zeXMtaW8uaC1oZWFkZXItaW5jbHVkZS10by1qdXN0LWdsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzL2ZhbmNvbnRyb2wuaW5pdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy9mYW5jb250cm9sLmluaXQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMvZmFuY29udHJvbC5pbml0CnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMvZmFuY29udHJvbC5pbml0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzL3NlbnNvcmQuaW5pdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy9zZW5zb3JkLmluaXQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMvc2Vuc29yZC5pbml0CnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMvc2Vuc29yZC5pbml0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzXzMuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xtX3NlbnNvcnMvbG1zZW5zb3JzXzMuNC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzXzMuNC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnNfMy40LjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xzc2NpL2xzc2NzaV8wLjI4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xzc2NpL2xzc2NzaV8wLjI4LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sc3NjaS9sc3Njc2lfMC4yOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xzc2NpL2xzc2NzaV8wLjI4LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDEtaG9zdGFwZC1Bdm9pZC1rZXktcmVpbnN0YWxsYXRpb24taW4tRlQtaGFuZHNoYWtlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDAxLWhvc3RhcGQtQXZvaWQta2V5LXJlaW5zdGFsbGF0aW9uLWluLUZULWhhbmRzaGFrZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTM1YTNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDAxLWhvc3RhcGQtQXZvaWQta2V5LXJlaW5zdGFsbGF0aW9uLWluLUZULWhhbmRzaGFrZS5wYXRjaApAQCAtMCwwICsxLDE3NyBAQAorRnJvbSAwNDRhZTM1YzU2OTRjMzlhNGFjYTJhMzM1MDJjYzM4OTdlODhmNzllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0aHkgVmFuaG9lZiA8TWF0aHkuVmFuaG9lZkBjcy5rdWxldXZlbi5iZT4KK0RhdGU6IEZyaSwgMTQgSnVsIDIwMTcgMTU6MTU6MzUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzddIGhvc3RhcGQ6IEF2b2lkIGtleSByZWluc3RhbGxhdGlvbiBpbiBGVCBoYW5kc2hha2UKKworRG8gbm90IHJlaW5zdGFsbCBUSyB0byB0aGUgZHJpdmVyIGR1cmluZyBSZWFzc29jaWF0aW9uIFJlc3BvbnNlIGZyYW1lCitwcm9jZXNzaW5nIGlmIHRoZSBmaXJzdCBhdHRlbXB0IG9mIHNldHRpbmcgdGhlIFRLIHN1Y2NlZWRlZC4gVGhpcyBhdm9pZHMKK2lzc3VlcyByZWxhdGVkIHRvIGNsZWFyaW5nIHRoZSBUWC9SWCBQTiB0aGF0IGNvdWxkIHJlc3VsdCBpbiByZXVzaW5nCitzYW1lIFBOIHZhbHVlcyBmb3IgdHJhbnNtaXR0ZWQgZnJhbWVzIChlLmcuLCBkdWUgdG8gQ0NNIG5vbmNlIHJldXNlIGFuZAorYWxzbyBoaXR0aW5nIHJlcGxheSBwcm90ZWN0aW9uIG9uIHRoZSByZWNlaXZlcikgYW5kIGFjY2VwdGluZyByZXBsYXllZAorZnJhbWVzIG9uIFJYIHNpZGUuCisKK1RoaXMgaXNzdWUgd2FzIGludHJvZHVjZWQgYnkgdGhlIGNvbW1pdAorMGU4NGMyNTQzNGU2YTFmMjgzYzdiNGU2MmU0ODM3MjkwODViNzhkMiAoJ0ZUOiBGaXggUFRLIGNvbmZpZ3VyYXRpb24gaW4KK2F1dGhlbnRpY2F0b3InKSB3aGljaCBhbGxvd2VkIHdwYV9mdF9pbnN0YWxsX3B0aygpIHRvIGJlIGNhbGxlZCBtdWx0aXBsZQordGltZXMgd2l0aCB0aGUgc2FtZSBQVEsuIFdoaWxlIHRoZSBzZWNvbmQgY29uZmlndXJhdGlvbiBhdHRlbXB0IGlzCituZWVkZWQgd2l0aCBzb21lIGRyaXZlcnMsIGl0IG11c3QgYmUgZG9uZSBvbmx5IGlmIHRoZSBmaXJzdCBhdHRlbXB0CitmYWlsZWQuCisKK1NpZ25lZC1vZmYtYnk6IE1hdGh5IFZhbmhvZWYgPE1hdGh5LlZhbmhvZWZAY3Mua3VsZXV2ZW4uYmU+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgc3JjL2FwL2llZWU4MDJfMTEuYyAgfCAxNiArKysrKysrKysrKysrLS0tCisgc3JjL2FwL3dwYV9hdXRoLmMgICAgfCAxMSArKysrKysrKysrKworIHNyYy9hcC93cGFfYXV0aC5oICAgIHwgIDMgKystCisgc3JjL2FwL3dwYV9hdXRoX2Z0LmMgfCAxMCArKysrKysrKysrCisgc3JjL2FwL3dwYV9hdXRoX2kuaCAgfCAgMSArCisgNSBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2FwL2llZWU4MDJfMTEuYyBiL3NyYy9hcC9pZWVlODAyXzExLmMKK2luZGV4IDRlMDQxNjkuLjMzMzAzNWYgMTAwNjQ0CistLS0gYS9zcmMvYXAvaWVlZTgwMl8xMS5jCisrKysgYi9zcmMvYXAvaWVlZTgwMl8xMS5jCitAQCAtMTg0MSw2ICsxODQxLDcgQEAgc3RhdGljIGludCBhZGRfYXNzb2NpYXRlZF9zdGEoc3RydWN0IGhvc3RhcGRfZGF0YSAqaGFwZCwKKyB7CisgCXN0cnVjdCBpZWVlODAyMTFfaHRfY2FwYWJpbGl0aWVzIGh0X2NhcDsKKyAJc3RydWN0IGllZWU4MDIxMV92aHRfY2FwYWJpbGl0aWVzIHZodF9jYXA7CisrCWludCBzZXQgPSAxOworIAorIAkvKgorIAkgKiBSZW1vdmUgdGhlIFNUQSBlbnRyeSB0byBlbnN1cmUgdGhlIFNUQSBQUyBzdGF0ZSBnZXRzIGNsZWFyZWQgYW5kCitAQCAtMTg0OCw5ICsxODQ5LDE4IEBAIHN0YXRpYyBpbnQgYWRkX2Fzc29jaWF0ZWRfc3RhKHN0cnVjdCBob3N0YXBkX2RhdGEgKmhhcGQsCisgCSAqIEZULW92ZXItdGhlLURTLCB3aGVyZSBhIHN0YXRpb24gcmUtYXNzb2NpYXRlcyBiYWNrIHRvIHRoZSBzYW1lIEFQIGJ1dAorIAkgKiBza2lwcyB0aGUgYXV0aGVudGljYXRpb24gZmxvdywgb3IgaWYgd29ya2luZyB3aXRoIGEgZHJpdmVyIHRoYXQKKyAJICogZG9lcyBub3Qgc3VwcG9ydCBmdWxsIEFQIGNsaWVudCBzdGF0ZS4KKysJICoKKysJICogU2tpcCB0aGlzIGlmIHRoZSBTVEEgaGFzIGFscmVhZHkgY29tcGxldGVkIEZUIHJlYXNzb2NpYXRpb24gYW5kIHRoZQorKwkgKiBUSyBoYXMgYmVlbiBjb25maWd1cmVkIHNpbmNlIHRoZSBUWC9SWCBQTiBtdXN0IG5vdCBiZSByZXNldCB0byAwIGZvcgorKwkgKiB0aGUgc2FtZSBrZXkuCisgCSAqLworLQlpZiAoIXN0YS0+YWRkZWRfdW5hc3NvYykKKysJaWYgKCFzdGEtPmFkZGVkX3VuYXNzb2MgJiYKKysJICAgICghKHN0YS0+ZmxhZ3MgJiBXTEFOX1NUQV9BVVRIT1JJWkVEKSB8fAorKwkgICAgICF3cGFfYXV0aF9zdGFfZnRfdGtfYWxyZWFkeV9zZXQoc3RhLT53cGFfc20pKSkgeworIAkJaG9zdGFwZF9kcnZfc3RhX3JlbW92ZShoYXBkLCBzdGEtPmFkZHIpOworKwkJd3BhX2F1dGhfc21fZXZlbnQoc3RhLT53cGFfc20sIFdQQV9EUlZfU1RBX1JFTU9WRUQpOworKwkJc2V0ID0gMDsKKysJfQorIAorICNpZmRlZiBDT05GSUdfSUVFRTgwMjExTgorIAlpZiAoc3RhLT5mbGFncyAmIFdMQU5fU1RBX0hUKQorQEAgLTE4NzMsMTEgKzE4ODMsMTEgQEAgc3RhdGljIGludCBhZGRfYXNzb2NpYXRlZF9zdGEoc3RydWN0IGhvc3RhcGRfZGF0YSAqaGFwZCwKKyAJCQkgICAgc3RhLT5mbGFncyAmIFdMQU5fU1RBX1ZIVCA/ICZ2aHRfY2FwIDogTlVMTCwKKyAJCQkgICAgc3RhLT5mbGFncyB8IFdMQU5fU1RBX0FTU09DLCBzdGEtPnFvc2luZm8sCisgCQkJICAgIHN0YS0+dmh0X29wbW9kZSwgc3RhLT5wMnBfaWUgPyAxIDogMCwKKy0JCQkgICAgc3RhLT5hZGRlZF91bmFzc29jKSkgeworKwkJCSAgICBzZXQpKSB7CisgCQlob3N0YXBkX2xvZ2dlcihoYXBkLCBzdGEtPmFkZHIsCisgCQkJICAgICAgIEhPU1RBUERfTU9EVUxFX0lFRUU4MDIxMSwgSE9TVEFQRF9MRVZFTF9OT1RJQ0UsCisgCQkJICAgICAgICJDb3VsZCBub3QgJXMgU1RBIHRvIGtlcm5lbCBkcml2ZXIiLAorLQkJCSAgICAgICBzdGEtPmFkZGVkX3VuYXNzb2MgPyAic2V0IiA6ICJhZGQiKTsKKysJCQkgICAgICAgc2V0ID8gInNldCIgOiAiYWRkIik7CisgCisgCQlpZiAoc3RhLT5hZGRlZF91bmFzc29jKSB7CisgCQkJaG9zdGFwZF9kcnZfc3RhX3JlbW92ZShoYXBkLCBzdGEtPmFkZHIpOworZGlmZiAtLWdpdCBhL3NyYy9hcC93cGFfYXV0aC5jIGIvc3JjL2FwL3dwYV9hdXRoLmMKK2luZGV4IDM1ODcwODYuLjcwNzk3MWQgMTAwNjQ0CistLS0gYS9zcmMvYXAvd3BhX2F1dGguYworKysrIGIvc3JjL2FwL3dwYV9hdXRoLmMKK0BAIC0xNzQ1LDYgKzE3NDUsOSBAQCBpbnQgd3BhX2F1dGhfc21fZXZlbnQoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSwgZW51bSB3cGFfZXZlbnQgZXZlbnQpCisgI2Vsc2UgLyogQ09ORklHX0lFRUU4MDIxMVIgKi8KKyAJCWJyZWFrOworICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExUiAqLworKwljYXNlIFdQQV9EUlZfU1RBX1JFTU9WRUQ6CisrCQlzbS0+dGtfYWxyZWFkeV9zZXQgPSBGQUxTRTsKKysJCXJldHVybiAwOworIAl9CisgCisgI2lmZGVmIENPTkZJR19JRUVFODAyMTFSCitAQCAtMzI1MCw2ICszMjUzLDE0IEBAIGludCB3cGFfYXV0aF9zdGFfd3BhX3ZlcnNpb24oc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSkKKyB9CisgCisgCisraW50IHdwYV9hdXRoX3N0YV9mdF90a19hbHJlYWR5X3NldChzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKQorK3sKKysJaWYgKCFzbSB8fCAhd3BhX2tleV9tZ210X2Z0KHNtLT53cGFfa2V5X21nbXQpKQorKwkJcmV0dXJuIDA7CisrCXJldHVybiBzbS0+dGtfYWxyZWFkeV9zZXQ7CisrfQorKworKworIGludCB3cGFfYXV0aF9zdGFfY2xlYXJfcG1rc2Eoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSwKKyAJCQkgICAgIHN0cnVjdCByc25fcG1rc2FfY2FjaGVfZW50cnkgKmVudHJ5KQorIHsKK2RpZmYgLS1naXQgYS9zcmMvYXAvd3BhX2F1dGguaCBiL3NyYy9hcC93cGFfYXV0aC5oCitpbmRleCAwZGU4ZDk3Li45NzQ2MWIwIDEwMDY0NAorLS0tIGEvc3JjL2FwL3dwYV9hdXRoLmgKKysrKyBiL3NyYy9hcC93cGFfYXV0aC5oCitAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgd3BhX3JlY2VpdmUoc3RydWN0IHdwYV9hdXRoZW50aWNhdG9yICp3cGFfYXV0aCwKKyAJCSB1OCAqZGF0YSwgc2l6ZV90IGRhdGFfbGVuKTsKKyBlbnVtIHdwYV9ldmVudCB7CisgCVdQQV9BVVRILCBXUEFfQVNTT0MsIFdQQV9ESVNBU1NPQywgV1BBX0RFQVVUSCwgV1BBX1JFQVVUSCwKKy0JV1BBX1JFQVVUSF9FQVBPTCwgV1BBX0FTU09DX0ZUCisrCVdQQV9SRUFVVEhfRUFQT0wsIFdQQV9BU1NPQ19GVCwgV1BBX0RSVl9TVEFfUkVNT1ZFRAorIH07Cisgdm9pZCB3cGFfcmVtb3ZlX3B0ayhzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKTsKKyBpbnQgd3BhX2F1dGhfc21fZXZlbnQoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSwgZW51bSB3cGFfZXZlbnQgZXZlbnQpOworQEAgLTI4MCw2ICsyODAsNyBAQCBpbnQgd3BhX2F1dGhfcGFpcndpc2Vfc2V0KHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pOworIGludCB3cGFfYXV0aF9nZXRfcGFpcndpc2Uoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSk7CisgaW50IHdwYV9hdXRoX3N0YV9rZXlfbWdtdChzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKTsKKyBpbnQgd3BhX2F1dGhfc3RhX3dwYV92ZXJzaW9uKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pOworK2ludCB3cGFfYXV0aF9zdGFfZnRfdGtfYWxyZWFkeV9zZXQoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSk7CisgaW50IHdwYV9hdXRoX3N0YV9jbGVhcl9wbWtzYShzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtLAorIAkJCSAgICAgc3RydWN0IHJzbl9wbWtzYV9jYWNoZV9lbnRyeSAqZW50cnkpOworIHN0cnVjdCByc25fcG1rc2FfY2FjaGVfZW50cnkgKgorZGlmZiAtLWdpdCBhL3NyYy9hcC93cGFfYXV0aF9mdC5jIGIvc3JjL2FwL3dwYV9hdXRoX2Z0LmMKK2luZGV4IDQyMjQyYTUuLmU2M2I5OWEgMTAwNjQ0CistLS0gYS9zcmMvYXAvd3BhX2F1dGhfZnQuYworKysrIGIvc3JjL2FwL3dwYV9hdXRoX2Z0LmMKK0BAIC03ODAsNiArNzgwLDE0IEBAIHZvaWQgd3BhX2Z0X2luc3RhbGxfcHRrKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pCisgCQlyZXR1cm47CisgCX0KKyAKKysJaWYgKHNtLT50a19hbHJlYWR5X3NldCkgeworKwkJLyogTXVzdCBhdm9pZCBUSyByZWNvbmZpZ3VyYXRpb24gdG8gcHJldmVudCBjbGVhcmluZyBvZiBUWC9SWAorKwkJICogUE4gaW4gdGhlIGRyaXZlciAqLworKwkJd3BhX3ByaW50ZihNU0dfREVCVUcsCisrCQkJICAgIkZUOiBEbyBub3QgcmUtaW5zdGFsbCBzYW1lIFBUSyB0byB0aGUgZHJpdmVyIik7CisrCQlyZXR1cm47CisrCX0KKysKKyAJLyogRklYOiBhZGQgU1RBIGVudHJ5IHRvIGtlcm5lbC9kcml2ZXIgaGVyZT8gVGhlIHNldF9rZXkgd2lsbCBmYWlsCisgCSAqIG1vc3QgbGlrZWx5IHdpdGhvdXQgdGhpcy4uIEF0IHRoZSBtb21lbnQsIFNUQSBlbnRyeSBpcyBhZGRlZCBvbmx5CisgCSAqIGFmdGVyIGFzc29jaWF0aW9uIGhhcyBiZWVuIGNvbXBsZXRlZC4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZAorQEAgLTc5Miw2ICs4MDAsNyBAQCB2b2lkIHdwYV9mdF9pbnN0YWxsX3B0ayhzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKQorIAorIAkvKiBGSVg6IE1MTUUtU2V0UHJvdGVjdGlvbi5SZXF1ZXN0KFRBLCBUeF9SeCkgKi8KKyAJc20tPnBhaXJ3aXNlX3NldCA9IFRSVUU7CisrCXNtLT50a19hbHJlYWR5X3NldCA9IFRSVUU7CisgfQorIAorIAorQEAgLTg5OCw2ICs5MDcsNyBAQCBzdGF0aWMgaW50IHdwYV9mdF9wcm9jZXNzX2F1dGhfcmVxKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20sCisgCisgCXNtLT5wYWlyd2lzZSA9IHBhaXJ3aXNlOworIAlzbS0+UFRLX3ZhbGlkID0gVFJVRTsKKysJc20tPnRrX2FscmVhZHlfc2V0ID0gRkFMU0U7CisgCXdwYV9mdF9pbnN0YWxsX3B0ayhzbSk7CisgCisgCWJ1ZmxlbiA9IDIgKyBzaXplb2Yoc3RydWN0IHJzbl9tZGllKSArIDIgKyBzaXplb2Yoc3RydWN0IHJzbl9mdGllKSArCitkaWZmIC0tZ2l0IGEvc3JjL2FwL3dwYV9hdXRoX2kuaCBiL3NyYy9hcC93cGFfYXV0aF9pLmgKK2luZGV4IDcyYjdlYjMuLjdmZDhmMDUgMTAwNjQ0CistLS0gYS9zcmMvYXAvd3BhX2F1dGhfaS5oCisrKysgYi9zcmMvYXAvd3BhX2F1dGhfaS5oCitAQCAtNjUsNiArNjUsNyBAQCBzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgeworIAlzdHJ1Y3Qgd3BhX3B0ayBQVEs7CisgCUJvb2xlYW4gUFRLX3ZhbGlkOworIAlCb29sZWFuIHBhaXJ3aXNlX3NldDsKKysJQm9vbGVhbiB0a19hbHJlYWR5X3NldDsKKyAJaW50IGtleWNvdW50OworIAlCb29sZWFuIFBhaXI7CisgCXN0cnVjdCB3cGFfa2V5X3JlcGxheV9jb3VudGVyIHsKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDItUHJldmVudC1yZWluc3RhbGxhdGlvbi1vZi1hbi1hbHJlYWR5LWluLXVzZS1ncm91cC1rZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvMDAwMi1QcmV2ZW50LXJlaW5zdGFsbGF0aW9uLW9mLWFuLWFscmVhZHktaW4tdXNlLWdyb3VwLWtlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNTdiY2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDItUHJldmVudC1yZWluc3RhbGxhdGlvbi1vZi1hbi1hbHJlYWR5LWluLXVzZS1ncm91cC1rZS5wYXRjaApAQCAtMCwwICsxLDI1MyBAQAorRnJvbSBjNjIzY2M5NzNkZTUyNWY3NDExZGZmZTQzOGU5NTdiYTg2ZWY0NzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0aHkgVmFuaG9lZiA8TWF0aHkuVmFuaG9lZkBjcy5rdWxldXZlbi5iZT4KK0RhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMTY6MDM6MjQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzddIFByZXZlbnQgcmVpbnN0YWxsYXRpb24gb2YgYW4gYWxyZWFkeSBpbi11c2UgZ3JvdXAga2V5CisKK1RyYWNrIHRoZSBjdXJyZW50IEdUSyBhbmQgSUdUSyB0aGF0IGlzIGluIHVzZSBhbmQgd2hlbiByZWNlaXZpbmcgYQorKHBvc3NpYmx5IHJldHJhbnNtaXR0ZWQpIEdyb3VwIE1lc3NhZ2UgMSBvciBXTk0tU2xlZXAgTW9kZSBSZXNwb25zZSwgZG8KK25vdCBpbnN0YWxsIHRoZSBnaXZlbiBrZXkgaWYgaXQgaXMgYWxyZWFkeSBpbiB1c2UuIFRoaXMgcHJldmVudHMgYW4KK2F0dGFja2VyIGZyb20gdHJ5aW5nIHRvIHRyaWNrIHRoZSBjbGllbnQgaW50byByZXNldHRpbmcgb3IgbG93ZXJpbmcgdGhlCitzZXF1ZW5jZSBjb3VudGVyIGFzc29jaWF0ZWQgdG8gdGhlIGdyb3VwIGtleS4KKworU2lnbmVkLW9mZi1ieTogTWF0aHkgVmFuaG9lZiA8TWF0aHkuVmFuaG9lZkBjcy5rdWxldXZlbi5iZT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogWmhlbmcgUnVvcWluIDx6aGVuZ3JxLmZuc3RAY24uZnVqaXRzdS5jb20+CistLS0KKyBzcmMvY29tbW9uL3dwYV9jb21tb24uaCB8ICAxMSArKysrKworIHNyYy9yc25fc3VwcC93cGEuYyAgICAgIHwgMTE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9yc25fc3VwcC93cGFfaS5oICAgIHwgICA0ICsrCisgMyBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vd3BhX2NvbW1vbi5oIGIvc3JjL2NvbW1vbi93cGFfY29tbW9uLmgKK2luZGV4IGFmMWQwZjAuLmQyMDAyODUgMTAwNjQ0CistLS0gYS9zcmMvY29tbW9uL3dwYV9jb21tb24uaAorKysrIGIvc3JjL2NvbW1vbi93cGFfY29tbW9uLmgKK0BAIC0yMTcsNiArMjE3LDE3IEBAIHN0cnVjdCB3cGFfcHRrIHsKKyAJc2l6ZV90IHRrX2xlbjsKKyB9OworIAorK3N0cnVjdCB3cGFfZ3RrIHsKKysJdTggZ3RrW1dQQV9HVEtfTUFYX0xFTl07CisrCXNpemVfdCBndGtfbGVuOworK307CisrCisrI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCisrc3RydWN0IHdwYV9pZ3RrIHsKKysJdTggaWd0a1tXUEFfSUdUS19NQVhfTEVOXTsKKysJc2l6ZV90IGlndGtfbGVuOworK307CisrI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCisgCisgLyogV1BBIElFIHZlcnNpb24gMQorICAqIDAwLTUwLWYyOjEgKE9VSTpPVUkgdHlwZSkKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhLmMgYi9zcmMvcnNuX3N1cHAvd3BhLmMKK2luZGV4IDNjNDc4NzkuLjk1YmQ3YmUgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhLmMKKysrKyBiL3NyYy9yc25fc3VwcC93cGEuYworQEAgLTcxNCw2ICs3MTQsMTUgQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKKyAJY29uc3QgdTggKl9ndGsgPSBnZC0+Z3RrOworIAl1OCBndGtfYnVmWzMyXTsKKyAKKysJLyogRGV0ZWN0IHBvc3NpYmxlIGtleSByZWluc3RhbGxhdGlvbiAqLworKwlpZiAoc20tPmd0ay5ndGtfbGVuID09IChzaXplX3QpIGdkLT5ndGtfbGVuICYmCisrCSAgICBvc19tZW1jbXAoc20tPmd0ay5ndGssIGdkLT5ndGssIHNtLT5ndGsuZ3RrX2xlbikgPT0gMCkgeworKwkJd3BhX2RiZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfREVCVUcsCisrCQkJIldQQTogTm90IHJlaW5zdGFsbGluZyBhbHJlYWR5IGluLXVzZSBHVEsgdG8gdGhlIGRyaXZlciAoa2V5aWR4PSVkIHR4PSVkIGxlbj0lZCkiLAorKwkJCWdkLT5rZXlpZHgsIGdkLT50eCwgZ2QtPmd0a19sZW4pOworKwkJcmV0dXJuIDA7CisrCX0KKysKKyAJd3BhX2hleGR1bXBfa2V5KE1TR19ERUJVRywgIldQQTogR3JvdXAgS2V5IiwgZ2QtPmd0aywgZ2QtPmd0a19sZW4pOworIAl3cGFfZGJnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19ERUJVRywKKyAJCSJXUEE6IEluc3RhbGxpbmcgR1RLIHRvIHRoZSBkcml2ZXIgKGtleWlkeD0lZCB0eD0lZCBsZW49JWQpIiwKK0BAIC03NDgsNiArNzU3LDkgQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKKyAJfQorIAlvc19tZW1zZXQoZ3RrX2J1ZiwgMCwgc2l6ZW9mKGd0a19idWYpKTsKKyAKKysJc20tPmd0ay5ndGtfbGVuID0gZ2QtPmd0a19sZW47CisrCW9zX21lbWNweShzbS0+Z3RrLmd0aywgZ2QtPmd0aywgc20tPmd0ay5ndGtfbGVuKTsKKysKKyAJcmV0dXJuIDA7CisgfQorIAorQEAgLTg1NCw2ICs4NjYsNDggQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9wYWlyd2lzZV9ndGsoc3RydWN0IHdwYV9zbSAqc20sCisgfQorIAorIAorKyNpZmRlZiBDT05GSUdfSUVFRTgwMjExVworK3N0YXRpYyBpbnQgd3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9pZ3RrKHN0cnVjdCB3cGFfc20gKnNtLAorKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IHdwYV9pZ3RrX2tkZSAqaWd0aykKKyt7CisrCXNpemVfdCBsZW4gPSB3cGFfY2lwaGVyX2tleV9sZW4oc20tPm1nbXRfZ3JvdXBfY2lwaGVyKTsKKysJdTE2IGtleWlkeCA9IFdQQV9HRVRfTEUxNihpZ3RrLT5rZXlpZCk7CisrCisrCS8qIERldGVjdCBwb3NzaWJsZSBrZXkgcmVpbnN0YWxsYXRpb24gKi8KKysJaWYgKHNtLT5pZ3RrLmlndGtfbGVuID09IGxlbiAmJgorKwkgICAgb3NfbWVtY21wKHNtLT5pZ3RrLmlndGssIGlndGstPmlndGssIHNtLT5pZ3RrLmlndGtfbGVuKSA9PSAwKSB7CisrCQl3cGFfZGJnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19ERUJVRywKKysJCQkiV1BBOiBOb3QgcmVpbnN0YWxsaW5nIGFscmVhZHkgaW4tdXNlIElHVEsgdG8gdGhlIGRyaXZlciAoa2V5aWR4PSVkKSIsCisrCQkJa2V5aWR4KTsKKysJCXJldHVybiAgMDsKKysJfQorKworKwl3cGFfZGJnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19ERUJVRywKKysJCSJXUEE6IElHVEsga2V5aWQgJWQgcG4gJTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4IiwKKysJCWtleWlkeCwgTUFDMlNUUihpZ3RrLT5wbikpOworKwl3cGFfaGV4ZHVtcF9rZXkoTVNHX0RFQlVHLCAiV1BBOiBJR1RLIiwgaWd0ay0+aWd0aywgbGVuKTsKKysJaWYgKGtleWlkeCA+IDQwOTUpIHsKKysJCXdwYV9tc2coc20tPmN0eC0+bXNnX2N0eCwgTVNHX1dBUk5JTkcsCisrCQkJIldQQTogSW52YWxpZCBJR1RLIEtleUlEICVkIiwga2V5aWR4KTsKKysJCXJldHVybiAtMTsKKysJfQorKwlpZiAod3BhX3NtX3NldF9rZXkoc20sIHdwYV9jaXBoZXJfdG9fYWxnKHNtLT5tZ210X2dyb3VwX2NpcGhlciksCisrCQkJICAgYnJvYWRjYXN0X2V0aGVyX2FkZHIsCisrCQkJICAga2V5aWR4LCAwLCBpZ3RrLT5wbiwgc2l6ZW9mKGlndGstPnBuKSwKKysJCQkgICBpZ3RrLT5pZ3RrLCBsZW4pIDwgMCkgeworKwkJd3BhX21zZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfV0FSTklORywKKysJCQkiV1BBOiBGYWlsZWQgdG8gY29uZmlndXJlIElHVEsgdG8gdGhlIGRyaXZlciIpOworKwkJcmV0dXJuIC0xOworKwl9CisrCisrCXNtLT5pZ3RrLmlndGtfbGVuID0gbGVuOworKwlvc19tZW1jcHkoc20tPmlndGsuaWd0aywgaWd0ay0+aWd0aywgc20tPmlndGsuaWd0a19sZW4pOworKworKwlyZXR1cm4gMDsKKyt9CisrI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCisrCisrCisgc3RhdGljIGludCBpZWVlODAyMTF3X3NldF9rZXlzKHN0cnVjdCB3cGFfc20gKnNtLAorIAkJCSAgICAgICBzdHJ1Y3Qgd3BhX2VhcG9sX2llX3BhcnNlICppZSkKKyB7CitAQCAtODY0LDMwICs5MTgsMTQgQEAgc3RhdGljIGludCBpZWVlODAyMTF3X3NldF9rZXlzKHN0cnVjdCB3cGFfc20gKnNtLAorIAlpZiAoaWUtPmlndGspIHsKKyAJCXNpemVfdCBsZW47CisgCQljb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICppZ3RrOworLQkJdTE2IGtleWlkeDsKKysKKyAJCWxlbiA9IHdwYV9jaXBoZXJfa2V5X2xlbihzbS0+bWdtdF9ncm91cF9jaXBoZXIpOworIAkJaWYgKGllLT5pZ3RrX2xlbiAhPSBXUEFfSUdUS19LREVfUFJFRklYX0xFTiArIGxlbikKKyAJCQlyZXR1cm4gLTE7CisrCisgCQlpZ3RrID0gKGNvbnN0IHN0cnVjdCB3cGFfaWd0a19rZGUgKikgaWUtPmlndGs7CistCQlrZXlpZHggPSBXUEFfR0VUX0xFMTYoaWd0ay0+a2V5aWQpOworLQkJd3BhX2RiZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfREVCVUcsICJXUEE6IElHVEsga2V5aWQgJWQgIgorLQkJCSJwbiAlMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAorLQkJCWtleWlkeCwgTUFDMlNUUihpZ3RrLT5wbikpOworLQkJd3BhX2hleGR1bXBfa2V5KE1TR19ERUJVRywgIldQQTogSUdUSyIsCistCQkJCWlndGstPmlndGssIGxlbik7CistCQlpZiAoa2V5aWR4ID4gNDA5NSkgeworLQkJCXdwYV9tc2coc20tPmN0eC0+bXNnX2N0eCwgTVNHX1dBUk5JTkcsCistCQkJCSJXUEE6IEludmFsaWQgSUdUSyBLZXlJRCAlZCIsIGtleWlkeCk7CistCQkJcmV0dXJuIC0xOworLQkJfQorLQkJaWYgKHdwYV9zbV9zZXRfa2V5KHNtLCB3cGFfY2lwaGVyX3RvX2FsZyhzbS0+bWdtdF9ncm91cF9jaXBoZXIpLAorLQkJCQkgICBicm9hZGNhc3RfZXRoZXJfYWRkciwKKy0JCQkJICAga2V5aWR4LCAwLCBpZ3RrLT5wbiwgc2l6ZW9mKGlndGstPnBuKSwKKy0JCQkJICAgaWd0ay0+aWd0aywgbGVuKSA8IDApIHsKKy0JCQl3cGFfbXNnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19XQVJOSU5HLAorLQkJCQkiV1BBOiBGYWlsZWQgdG8gY29uZmlndXJlIElHVEsgdG8gdGhlIGRyaXZlciIpOworKwkJaWYgKHdwYV9zdXBwbGljYW50X2luc3RhbGxfaWd0ayhzbSwgaWd0aykgPCAwKQorIAkJCXJldHVybiAtMTsKKy0JCX0KKyAJfQorIAorIAlyZXR1cm4gMDsKK0BAIC0yMzA3LDcgKzIzNDUsNyBAQCB2b2lkIHdwYV9zbV9kZWluaXQoc3RydWN0IHdwYV9zbSAqc20pCisgICovCisgdm9pZCB3cGFfc21fbm90aWZ5X2Fzc29jKHN0cnVjdCB3cGFfc20gKnNtLCBjb25zdCB1OCAqYnNzaWQpCisgeworLQlpbnQgY2xlYXJfcHRrID0gMTsKKysJaW50IGNsZWFyX2tleXMgPSAxOworIAorIAlpZiAoc20gPT0gTlVMTCkKKyAJCXJldHVybjsKK0BAIC0yMzMzLDExICsyMzcxLDExIEBAIHZvaWQgd3BhX3NtX25vdGlmeV9hc3NvYyhzdHJ1Y3Qgd3BhX3NtICpzbSwgY29uc3QgdTggKmJzc2lkKQorIAkJLyogUHJlcGFyZSBmb3IgdGhlIG5leHQgdHJhbnNpdGlvbiAqLworIAkJd3BhX2Z0X3ByZXBhcmVfYXV0aF9yZXF1ZXN0KHNtLCBOVUxMKTsKKyAKKy0JCWNsZWFyX3B0ayA9IDA7CisrCQljbGVhcl9rZXlzID0gMDsKKyAJfQorICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExUiAqLworIAorLQlpZiAoY2xlYXJfcHRrKSB7CisrCWlmIChjbGVhcl9rZXlzKSB7CisgCQkvKgorIAkJICogSUVFRSA4MDIuMTEsIDguNC4xMDogRGVsZXRlIFBUSyBTQSBvbiAocmUpYXNzb2NpYXRpb24gaWYKKyAJCSAqIHRoaXMgaXMgbm90IHBhcnQgb2YgYSBGYXN0IEJTUyBUcmFuc2l0aW9uLgorQEAgLTIzNDcsNiArMjM4NSwxMCBAQCB2b2lkIHdwYV9zbV9ub3RpZnlfYXNzb2Moc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICpic3NpZCkKKyAJCW9zX21lbXNldCgmc20tPnB0aywgMCwgc2l6ZW9mKHNtLT5wdGspKTsKKyAJCXNtLT50cHRrX3NldCA9IDA7CisgCQlvc19tZW1zZXQoJnNtLT50cHRrLCAwLCBzaXplb2Yoc20tPnRwdGspKTsKKysJCW9zX21lbXNldCgmc20tPmd0aywgMCwgc2l6ZW9mKHNtLT5ndGspKTsKKysjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKKysJCW9zX21lbXNldCgmc20tPmlndGssIDAsIHNpemVvZihzbS0+aWd0aykpOworKyNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExVyAqLworIAl9CisgCisgI2lmZGVmIENPTkZJR19URExTCitAQCAtMjg3Nyw2ICsyOTE5LDEwIEBAIHZvaWQgd3BhX3NtX2Ryb3Bfc2Eoc3RydWN0IHdwYV9zbSAqc20pCisgCW9zX21lbXNldChzbS0+cG1rLCAwLCBzaXplb2Yoc20tPnBtaykpOworIAlvc19tZW1zZXQoJnNtLT5wdGssIDAsIHNpemVvZihzbS0+cHRrKSk7CisgCW9zX21lbXNldCgmc20tPnRwdGssIDAsIHNpemVvZihzbS0+dHB0aykpOworKwlvc19tZW1zZXQoJnNtLT5ndGssIDAsIHNpemVvZihzbS0+Z3RrKSk7CisrI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCisrCW9zX21lbXNldCgmc20tPmlndGssIDAsIHNpemVvZihzbS0+aWd0aykpOworKyNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExVyAqLworICNpZmRlZiBDT05GSUdfSUVFRTgwMjExUgorIAlvc19tZW1zZXQoc20tPnh4a2V5LCAwLCBzaXplb2Yoc20tPnh4a2V5KSk7CisgCW9zX21lbXNldChzbS0+cG1rX3IwLCAwLCBzaXplb2Yoc20tPnBta19yMCkpOworQEAgLTI5NDksMjkgKzI5OTUsMTEgQEAgaW50IHdwYV93bm1zbGVlcF9pbnN0YWxsX2tleShzdHJ1Y3Qgd3BhX3NtICpzbSwgdTggc3ViZWxlbV9pZCwgdTggKmJ1ZikKKyAJCW9zX21lbXNldCgmZ2QsIDAsIHNpemVvZihnZCkpOworICNpZmRlZiBDT05GSUdfSUVFRTgwMjExVworIAl9IGVsc2UgaWYgKHN1YmVsZW1faWQgPT0gV05NX1NMRUVQX1NVQkVMRU1fSUdUSykgeworLQkJc3RydWN0IHdwYV9pZ3RrX2tkZSBpZ2Q7CistCQl1MTYga2V5aWR4OworLQorLQkJb3NfbWVtc2V0KCZpZ2QsIDAsIHNpemVvZihpZ2QpKTsKKy0JCWtleWxlbiA9IHdwYV9jaXBoZXJfa2V5X2xlbihzbS0+bWdtdF9ncm91cF9jaXBoZXIpOworLQkJb3NfbWVtY3B5KGlnZC5rZXlpZCwgYnVmICsgMiwgMik7CistCQlvc19tZW1jcHkoaWdkLnBuLCBidWYgKyA0LCA2KTsKKy0KKy0JCWtleWlkeCA9IFdQQV9HRVRfTEUxNihpZ2Qua2V5aWQpOworLQkJb3NfbWVtY3B5KGlnZC5pZ3RrLCBidWYgKyAxMCwga2V5bGVuKTsKKy0KKy0JCXdwYV9oZXhkdW1wX2tleShNU0dfREVCVUcsICJJbnN0YWxsIElHVEsgKFdOTSBTTEVFUCkiLAorLQkJCQlpZ2QuaWd0aywga2V5bGVuKTsKKy0JCWlmICh3cGFfc21fc2V0X2tleShzbSwgd3BhX2NpcGhlcl90b19hbGcoc20tPm1nbXRfZ3JvdXBfY2lwaGVyKSwKKy0JCQkJICAgYnJvYWRjYXN0X2V0aGVyX2FkZHIsCistCQkJCSAgIGtleWlkeCwgMCwgaWdkLnBuLCBzaXplb2YoaWdkLnBuKSwKKy0JCQkJICAgaWdkLmlndGssIGtleWxlbikgPCAwKSB7CistCQkJd3BhX3ByaW50ZihNU0dfREVCVUcsICJGYWlsZWQgdG8gaW5zdGFsbCB0aGUgSUdUSyBpbiAiCistCQkJCSAgICJXTk0gbW9kZSIpOworLQkJCW9zX21lbXNldCgmaWdkLCAwLCBzaXplb2YoaWdkKSk7CisrCQljb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICppZ3RrOworKworKwkJaWd0ayA9IChjb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICopIChidWYgKyAyKTsKKysJCWlmICh3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2lndGsoc20sIGlndGspIDwgMCkKKyAJCQlyZXR1cm4gLTE7CistCQl9CistCQlvc19tZW1zZXQoJmlnZCwgMCwgc2l6ZW9mKGlnZCkpOworICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExVyAqLworIAl9IGVsc2UgeworIAkJd3BhX3ByaW50ZihNU0dfREVCVUcsICJVbmtub3duIGVsZW1lbnQgaWQiKTsKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhX2kuaCBiL3NyYy9yc25fc3VwcC93cGFfaS5oCitpbmRleCBmNjUzYmE2Li5hZmM5ZTM3IDEwMDY0NAorLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKKysrKyBiL3NyYy9yc25fc3VwcC93cGFfaS5oCitAQCAtMzEsNiArMzEsMTAgQEAgc3RydWN0IHdwYV9zbSB7CisgCXU4IHJ4X3JlcGxheV9jb3VudGVyW1dQQV9SRVBMQVlfQ09VTlRFUl9MRU5dOworIAlpbnQgcnhfcmVwbGF5X2NvdW50ZXJfc2V0OworIAl1OCByZXF1ZXN0X2NvdW50ZXJbV1BBX1JFUExBWV9DT1VOVEVSX0xFTl07CisrCXN0cnVjdCB3cGFfZ3RrIGd0azsKKysjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKKysJc3RydWN0IHdwYV9pZ3RrIGlndGs7CisrI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCisgCisgCXN0cnVjdCBlYXBvbF9zbSAqZWFwb2w7IC8qIEVBUE9MIHN0YXRlIG1hY2hpbmUgZnJvbSB1cHBlciBsZXZlbCBjb2RlICovCisgCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDAzLUV4dGVuZC1wcm90ZWN0aW9uLW9mLUdUSy1JR1RLLXJlaW5zdGFsbGF0aW9uLW9mLVdOTS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDMtRXh0ZW5kLXByb3RlY3Rpb24tb2YtR1RLLUlHVEstcmVpbnN0YWxsYXRpb24tb2YtV05NLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzliYmY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDAzLUV4dGVuZC1wcm90ZWN0aW9uLW9mLUdUSy1JR1RLLXJlaW5zdGFsbGF0aW9uLW9mLVdOTS0ucGF0Y2gKQEAgLTAsMCArMSwxODcgQEAKK0Zyb20gYTZjYWFiODA2MGFiNjA4NzZlMjMzMzA2ZjVjNTg2NDUxMTY5ZWJhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CitEYXRlOiBTdW4sIDEgT2N0IDIwMTcgMTI6MTI6MjQgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzddIEV4dGVuZCBwcm90ZWN0aW9uIG9mIEdUSy9JR1RLIHJlaW5zdGFsbGF0aW9uIG9mIFdOTS1TbGVlcAorIE1vZGUgY2FzZXMKKworVGhpcyBleHRlbmRzIHRoZSBwcm90ZWN0aW9uIHRvIHRyYWNrIGxhc3QgY29uZmlndXJlZCBHVEsvSUdUSyB2YWx1ZQorc2VwYXJhdGVseSBmcm9tIEVBUE9MLUtleSBmcmFtZXMgYW5kIFdOTS1TbGVlcCBNb2RlIGZyYW1lcyB0byBjb3ZlciBhCitjb3JuZXIgY2FzZSB3aGVyZSB0aGVzZSB0d28gZGlmZmVyZW50IG1lY2hhbmlzbXMgbWF5IGdldCB1c2VkIHdoZW4gdGhlCitHVEsvSUdUSyBoYXMgY2hhbmdlZCBhbmQgdHJhY2tpbmcgYSBzaW5nbGUgdmFsdWUgaXMgbm90IHN1ZmZpY2llbnQgdG8KK2RldGVjdCBhIHBvc3NpYmxlIGtleSByZWNvbmZpZ3VyYXRpb24uCisKK1NpZ25lZC1vZmYtYnk6IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgc3JjL3Jzbl9zdXBwL3dwYS5jICAgfCA1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCisgc3JjL3Jzbl9zdXBwL3dwYV9pLmggfCAgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhLmMgYi9zcmMvcnNuX3N1cHAvd3BhLmMKK2luZGV4IDk1YmQ3YmUuLjdhMmM2OGQgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhLmMKKysrKyBiL3NyYy9yc25fc3VwcC93cGEuYworQEAgLTcwOSwxNCArNzA5LDE3IEBAIHN0cnVjdCB3cGFfZ3RrX2RhdGEgeworIAorIHN0YXRpYyBpbnQgd3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9ndGsoc3RydWN0IHdwYV9zbSAqc20sCisgCQkJCSAgICAgIGNvbnN0IHN0cnVjdCB3cGFfZ3RrX2RhdGEgKmdkLAorLQkJCQkgICAgICBjb25zdCB1OCAqa2V5X3JzYykKKysJCQkJICAgICAgY29uc3QgdTggKmtleV9yc2MsIGludCB3bm1fc2xlZXApCisgeworIAljb25zdCB1OCAqX2d0ayA9IGdkLT5ndGs7CisgCXU4IGd0a19idWZbMzJdOworIAorIAkvKiBEZXRlY3QgcG9zc2libGUga2V5IHJlaW5zdGFsbGF0aW9uICovCistCWlmIChzbS0+Z3RrLmd0a19sZW4gPT0gKHNpemVfdCkgZ2QtPmd0a19sZW4gJiYKKy0JICAgIG9zX21lbWNtcChzbS0+Z3RrLmd0aywgZ2QtPmd0aywgc20tPmd0ay5ndGtfbGVuKSA9PSAwKSB7CisrCWlmICgoc20tPmd0ay5ndGtfbGVuID09IChzaXplX3QpIGdkLT5ndGtfbGVuICYmCisrCSAgICAgb3NfbWVtY21wKHNtLT5ndGsuZ3RrLCBnZC0+Z3RrLCBzbS0+Z3RrLmd0a19sZW4pID09IDApIHx8CisrCSAgICAoc20tPmd0a193bm1fc2xlZXAuZ3RrX2xlbiA9PSAoc2l6ZV90KSBnZC0+Z3RrX2xlbiAmJgorKwkgICAgIG9zX21lbWNtcChzbS0+Z3RrX3dubV9zbGVlcC5ndGssIGdkLT5ndGssCisrCQkgICAgICAgc20tPmd0a193bm1fc2xlZXAuZ3RrX2xlbikgPT0gMCkpIHsKKyAJCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAorIAkJCSJXUEE6IE5vdCByZWluc3RhbGxpbmcgYWxyZWFkeSBpbi11c2UgR1RLIHRvIHRoZSBkcml2ZXIgKGtleWlkeD0lZCB0eD0lZCBsZW49JWQpIiwKKyAJCQlnZC0+a2V5aWR4LCBnZC0+dHgsIGdkLT5ndGtfbGVuKTsKK0BAIC03NTcsOCArNzYwLDE0IEBAIHN0YXRpYyBpbnQgd3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9ndGsoc3RydWN0IHdwYV9zbSAqc20sCisgCX0KKyAJb3NfbWVtc2V0KGd0a19idWYsIDAsIHNpemVvZihndGtfYnVmKSk7CisgCistCXNtLT5ndGsuZ3RrX2xlbiA9IGdkLT5ndGtfbGVuOworLQlvc19tZW1jcHkoc20tPmd0ay5ndGssIGdkLT5ndGssIHNtLT5ndGsuZ3RrX2xlbik7CisrCWlmICh3bm1fc2xlZXApIHsKKysJCXNtLT5ndGtfd25tX3NsZWVwLmd0a19sZW4gPSBnZC0+Z3RrX2xlbjsKKysJCW9zX21lbWNweShzbS0+Z3RrX3dubV9zbGVlcC5ndGssIGdkLT5ndGssCisrCQkJICBzbS0+Z3RrX3dubV9zbGVlcC5ndGtfbGVuKTsKKysJfSBlbHNlIHsKKysJCXNtLT5ndGsuZ3RrX2xlbiA9IGdkLT5ndGtfbGVuOworKwkJb3NfbWVtY3B5KHNtLT5ndGsuZ3RrLCBnZC0+Z3RrLCBzbS0+Z3RrLmd0a19sZW4pOworKwl9CisgCisgCXJldHVybiAwOworIH0KK0BAIC04NTIsNyArODYxLDcgQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9wYWlyd2lzZV9ndGsoc3RydWN0IHdwYV9zbSAqc20sCisgCSAgICAod3BhX3N1cHBsaWNhbnRfY2hlY2tfZ3JvdXBfY2lwaGVyKHNtLCBzbS0+Z3JvdXBfY2lwaGVyLAorIAkJCQkJICAgICAgIGd0a19sZW4sIGd0a19sZW4sCisgCQkJCQkgICAgICAgJmdkLmtleV9yc2NfbGVuLCAmZ2QuYWxnKSB8fAorLQkgICAgIHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHNtLCAmZ2QsIGtleV9yc2MpKSkgeworKwkgICAgIHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHNtLCAmZ2QsIGtleV9yc2MsIDApKSkgeworIAkJd3BhX2RiZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfREVCVUcsCisgCQkJIlJTTjogRmFpbGVkIHRvIGluc3RhbGwgR1RLIik7CisgCQlvc19tZW1zZXQoJmdkLCAwLCBzaXplb2YoZ2QpKTsKK0BAIC04NjgsMTQgKzg3NywxOCBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X3BhaXJ3aXNlX2d0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKKyAKKyAjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKKyBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfaWd0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKKy0JCQkJICAgICAgIGNvbnN0IHN0cnVjdCB3cGFfaWd0a19rZGUgKmlndGspCisrCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICppZ3RrLAorKwkJCQkgICAgICAgaW50IHdubV9zbGVlcCkKKyB7CisgCXNpemVfdCBsZW4gPSB3cGFfY2lwaGVyX2tleV9sZW4oc20tPm1nbXRfZ3JvdXBfY2lwaGVyKTsKKyAJdTE2IGtleWlkeCA9IFdQQV9HRVRfTEUxNihpZ3RrLT5rZXlpZCk7CisgCisgCS8qIERldGVjdCBwb3NzaWJsZSBrZXkgcmVpbnN0YWxsYXRpb24gKi8KKy0JaWYgKHNtLT5pZ3RrLmlndGtfbGVuID09IGxlbiAmJgorLQkgICAgb3NfbWVtY21wKHNtLT5pZ3RrLmlndGssIGlndGstPmlndGssIHNtLT5pZ3RrLmlndGtfbGVuKSA9PSAwKSB7CisrCWlmICgoc20tPmlndGsuaWd0a19sZW4gPT0gbGVuICYmCisrCSAgICAgb3NfbWVtY21wKHNtLT5pZ3RrLmlndGssIGlndGstPmlndGssIHNtLT5pZ3RrLmlndGtfbGVuKSA9PSAwKSB8fAorKwkgICAgKHNtLT5pZ3RrX3dubV9zbGVlcC5pZ3RrX2xlbiA9PSBsZW4gJiYKKysJICAgICBvc19tZW1jbXAoc20tPmlndGtfd25tX3NsZWVwLmlndGssIGlndGstPmlndGssCisrCQkgICAgICAgc20tPmlndGtfd25tX3NsZWVwLmlndGtfbGVuKSA9PSAwKSkgeworIAkJd3BhX2RiZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfREVCVUcsCisgCQkJIldQQTogTm90IHJlaW5zdGFsbGluZyBhbHJlYWR5IGluLXVzZSBJR1RLIHRvIHRoZSBkcml2ZXIgKGtleWlkeD0lZCkiLAorIAkJCWtleWlkeCk7CitAQCAtOTAwLDggKzkxMywxNCBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfaWd0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKKyAJCXJldHVybiAtMTsKKyAJfQorIAorLQlzbS0+aWd0ay5pZ3RrX2xlbiA9IGxlbjsKKy0Jb3NfbWVtY3B5KHNtLT5pZ3RrLmlndGssIGlndGstPmlndGssIHNtLT5pZ3RrLmlndGtfbGVuKTsKKysJaWYgKHdubV9zbGVlcCkgeworKwkJc20tPmlndGtfd25tX3NsZWVwLmlndGtfbGVuID0gbGVuOworKwkJb3NfbWVtY3B5KHNtLT5pZ3RrX3dubV9zbGVlcC5pZ3RrLCBpZ3RrLT5pZ3RrLAorKwkJCSAgc20tPmlndGtfd25tX3NsZWVwLmlndGtfbGVuKTsKKysJfSBlbHNlIHsKKysJCXNtLT5pZ3RrLmlndGtfbGVuID0gbGVuOworKwkJb3NfbWVtY3B5KHNtLT5pZ3RrLmlndGssIGlndGstPmlndGssIHNtLT5pZ3RrLmlndGtfbGVuKTsKKysJfQorIAorIAlyZXR1cm4gMDsKKyB9CitAQCAtOTI0LDcgKzk0Myw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExd19zZXRfa2V5cyhzdHJ1Y3Qgd3BhX3NtICpzbSwKKyAJCQlyZXR1cm4gLTE7CisgCisgCQlpZ3RrID0gKGNvbnN0IHN0cnVjdCB3cGFfaWd0a19rZGUgKikgaWUtPmlndGs7CistCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9pZ3RrKHNtLCBpZ3RrKSA8IDApCisrCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9pZ3RrKHNtLCBpZ3RrLCAwKSA8IDApCisgCQkJcmV0dXJuIC0xOworIAl9CisgCitAQCAtMTU3NCw3ICsxNTkzLDcgQEAgc3RhdGljIHZvaWQgd3BhX3N1cHBsaWNhbnRfcHJvY2Vzc18xX29mXzIoc3RydWN0IHdwYV9zbSAqc20sCisgCWlmICh3cGFfc3VwcGxpY2FudF9yc2NfcmVsYXhhdGlvbihzbSwga2V5LT5rZXlfcnNjKSkKKyAJCWtleV9yc2MgPSBudWxsX3JzYzsKKyAKKy0JaWYgKHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHNtLCAmZ2QsIGtleV9yc2MpIHx8CisrCWlmICh3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzbSwgJmdkLCBrZXlfcnNjLCAwKSB8fAorIAkgICAgd3BhX3N1cHBsaWNhbnRfc2VuZF8yX29mXzIoc20sIGtleSwgdmVyLCBrZXlfaW5mbykgPCAwKQorIAkJZ290byBmYWlsZWQ7CisgCW9zX21lbXNldCgmZ2QsIDAsIHNpemVvZihnZCkpOworQEAgLTIzODYsOCArMjQwNSwxMCBAQCB2b2lkIHdwYV9zbV9ub3RpZnlfYXNzb2Moc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICpic3NpZCkKKyAJCXNtLT50cHRrX3NldCA9IDA7CisgCQlvc19tZW1zZXQoJnNtLT50cHRrLCAwLCBzaXplb2Yoc20tPnRwdGspKTsKKyAJCW9zX21lbXNldCgmc20tPmd0aywgMCwgc2l6ZW9mKHNtLT5ndGspKTsKKysJCW9zX21lbXNldCgmc20tPmd0a193bm1fc2xlZXAsIDAsIHNpemVvZihzbS0+Z3RrX3dubV9zbGVlcCkpOworICNpZmRlZiBDT05GSUdfSUVFRTgwMjExVworIAkJb3NfbWVtc2V0KCZzbS0+aWd0aywgMCwgc2l6ZW9mKHNtLT5pZ3RrKSk7CisrCQlvc19tZW1zZXQoJnNtLT5pZ3RrX3dubV9zbGVlcCwgMCwgc2l6ZW9mKHNtLT5pZ3RrX3dubV9zbGVlcCkpOworICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExVyAqLworIAl9CisgCitAQCAtMjkyMCw4ICsyOTQxLDEwIEBAIHZvaWQgd3BhX3NtX2Ryb3Bfc2Eoc3RydWN0IHdwYV9zbSAqc20pCisgCW9zX21lbXNldCgmc20tPnB0aywgMCwgc2l6ZW9mKHNtLT5wdGspKTsKKyAJb3NfbWVtc2V0KCZzbS0+dHB0aywgMCwgc2l6ZW9mKHNtLT50cHRrKSk7CisgCW9zX21lbXNldCgmc20tPmd0aywgMCwgc2l6ZW9mKHNtLT5ndGspKTsKKysJb3NfbWVtc2V0KCZzbS0+Z3RrX3dubV9zbGVlcCwgMCwgc2l6ZW9mKHNtLT5ndGtfd25tX3NsZWVwKSk7CisgI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCisgCW9zX21lbXNldCgmc20tPmlndGssIDAsIHNpemVvZihzbS0+aWd0aykpOworKwlvc19tZW1zZXQoJnNtLT5pZ3RrX3dubV9zbGVlcCwgMCwgc2l6ZW9mKHNtLT5pZ3RrX3dubV9zbGVlcCkpOworICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExVyAqLworICNpZmRlZiBDT05GSUdfSUVFRTgwMjExUgorIAlvc19tZW1zZXQoc20tPnh4a2V5LCAwLCBzaXplb2Yoc20tPnh4a2V5KSk7CitAQCAtMjk4Niw3ICszMDA5LDcgQEAgaW50IHdwYV93bm1zbGVlcF9pbnN0YWxsX2tleShzdHJ1Y3Qgd3BhX3NtICpzbSwgdTggc3ViZWxlbV9pZCwgdTggKmJ1ZikKKyAKKyAJCXdwYV9oZXhkdW1wX2tleShNU0dfREVCVUcsICJJbnN0YWxsIEdUSyAoV05NIFNMRUVQKSIsCisgCQkJCWdkLmd0aywgZ2QuZ3RrX2xlbik7CistCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9ndGsoc20sICZnZCwga2V5X3JzYykpIHsKKysJCWlmICh3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzbSwgJmdkLCBrZXlfcnNjLCAxKSkgeworIAkJCW9zX21lbXNldCgmZ2QsIDAsIHNpemVvZihnZCkpOworIAkJCXdwYV9wcmludGYoTVNHX0RFQlVHLCAiRmFpbGVkIHRvIGluc3RhbGwgdGhlIEdUSyBpbiAiCisgCQkJCSAgICJXTk0gbW9kZSIpOworQEAgLTI5OTgsNyArMzAyMSw3IEBAIGludCB3cGFfd25tc2xlZXBfaW5zdGFsbF9rZXkoc3RydWN0IHdwYV9zbSAqc20sIHU4IHN1YmVsZW1faWQsIHU4ICpidWYpCisgCQljb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICppZ3RrOworIAorIAkJaWd0ayA9IChjb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICopIChidWYgKyAyKTsKKy0JCWlmICh3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2lndGsoc20sIGlndGspIDwgMCkKKysJCWlmICh3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2lndGsoc20sIGlndGssIDEpIDwgMCkKKyAJCQlyZXR1cm4gLTE7CisgI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCisgCX0gZWxzZSB7CitkaWZmIC0tZ2l0IGEvc3JjL3Jzbl9zdXBwL3dwYV9pLmggYi9zcmMvcnNuX3N1cHAvd3BhX2kuaAoraW5kZXggYWZjOWUzNy4uOWE1NDYzMSAxMDA2NDQKKy0tLSBhL3NyYy9yc25fc3VwcC93cGFfaS5oCisrKysgYi9zcmMvcnNuX3N1cHAvd3BhX2kuaAorQEAgLTMyLDggKzMyLDEwIEBAIHN0cnVjdCB3cGFfc20geworIAlpbnQgcnhfcmVwbGF5X2NvdW50ZXJfc2V0OworIAl1OCByZXF1ZXN0X2NvdW50ZXJbV1BBX1JFUExBWV9DT1VOVEVSX0xFTl07CisgCXN0cnVjdCB3cGFfZ3RrIGd0azsKKysJc3RydWN0IHdwYV9ndGsgZ3RrX3dubV9zbGVlcDsKKyAjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKKyAJc3RydWN0IHdwYV9pZ3RrIGlndGs7CisrCXN0cnVjdCB3cGFfaWd0ayBpZ3RrX3dubV9zbGVlcDsKKyAjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVcgKi8KKyAKKyAJc3RydWN0IGVhcG9sX3NtICplYXBvbDsgLyogRUFQT0wgc3RhdGUgbWFjaGluZSBmcm9tIHVwcGVyIGxldmVsIGNvZGUgKi8KKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDQtUHJldmVudC1pbnN0YWxsYXRpb24tb2YtYW4tYWxsLXplcm8tVEsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDQtUHJldmVudC1pbnN0YWxsYXRpb24tb2YtYW4tYWxsLXplcm8tVEsucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEwMzYyNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvMDAwNC1QcmV2ZW50LWluc3RhbGxhdGlvbi1vZi1hbi1hbGwtemVyby1USy5wYXRjaApAQCAtMCwwICsxLDgyIEBACitGcm9tIGFiZjk0MTY0N2YyZGMzM2IwYjU5NjEyZjUyNWUxYjI5MjMzMWNjOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXRoeSBWYW5ob2VmIDxNYXRoeS5WYW5ob2VmQGNzLmt1bGV1dmVuLmJlPgorRGF0ZTogRnJpLCAyOSBTZXAgMjAxNyAwNDoyMjo1MSArMDIwMAorU3ViamVjdDogW1BBVENIIDQvN10gUHJldmVudCBpbnN0YWxsYXRpb24gb2YgYW4gYWxsLXplcm8gVEsKKworUHJvcGVybHkgdHJhY2sgd2hldGhlciBhIFBUSyBoYXMgYWxyZWFkeSBiZWVuIGluc3RhbGxlZCB0byB0aGUgZHJpdmVyCithbmQgdGhlIFRLIHBhcnQgY2xlYXJlZCBmcm9tIG1lbW9yeS4gVGhpcyBwcmV2ZW50cyBhbiBhdHRhY2tlciBmcm9tCit0cnlpbmcgdG8gdHJpY2sgdGhlIGNsaWVudCBpbnRvIGluc3RhbGxpbmcgYW4gYWxsLXplcm8gVEsuCisKK1RoaXMgZml4ZXMgdGhlIGVhcmxpZXIgZml4IGluIGNvbW1pdAorYWQwMGQ2NGU3ZDg4MjdiM2NlYmQ2NjVhMGNlYjA4YWRhYmYxNWUxZSAoJ0ZpeCBUSyBjb25maWd1cmF0aW9uIHRvIHRoZQorZHJpdmVyIGluIEVBUE9MLUtleSAzLzQgcmV0cnkgY2FzZScpIHdoaWNoIGRpZCBub3QgdGFrZSBpbnRvIGFjY291bnQKK3Bvc3NpYmlsaXR5IG9mIGFuIGV4dHJhIG1lc3NhZ2UgMS80IHNob3dpbmcgdXAgYmV0d2VlbiByZXRyaWVzIG9mCittZXNzYWdlIDMvNC4KKworU2lnbmVkLW9mZi1ieTogTWF0aHkgVmFuaG9lZiA8TWF0aHkuVmFuaG9lZkBjcy5rdWxldXZlbi5iZT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogWmhlbmcgUnVvcWluIDx6aGVuZ3JxLmZuc3RAY24uZnVqaXRzdS5jb20+CistLS0KKyBzcmMvY29tbW9uL3dwYV9jb21tb24uaCB8IDEgKworIHNyYy9yc25fc3VwcC93cGEuYyAgICAgIHwgNSArKy0tLQorIHNyYy9yc25fc3VwcC93cGFfaS5oICAgIHwgMSAtCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29tbW9uL3dwYV9jb21tb24uaCBiL3NyYy9jb21tb24vd3BhX2NvbW1vbi5oCitpbmRleCBkMjAwMjg1Li4xMDIxY2NiIDEwMDY0NAorLS0tIGEvc3JjL2NvbW1vbi93cGFfY29tbW9uLmgKKysrKyBiL3NyYy9jb21tb24vd3BhX2NvbW1vbi5oCitAQCAtMjE1LDYgKzIxNSw3IEBAIHN0cnVjdCB3cGFfcHRrIHsKKyAJc2l6ZV90IGtja19sZW47CisgCXNpemVfdCBrZWtfbGVuOworIAlzaXplX3QgdGtfbGVuOworKwlpbnQgaW5zdGFsbGVkOyAvKiAxIGlmIGtleSBoYXMgYWxyZWFkeSBiZWVuIGluc3RhbGxlZCB0byBkcml2ZXIgKi8KKyB9OworIAorIHN0cnVjdCB3cGFfZ3RrIHsKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhLmMgYi9zcmMvcnNuX3N1cHAvd3BhLmMKK2luZGV4IDdhMmM2OGQuLjA1NTBhNDEgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhLmMKKysrKyBiL3NyYy9yc25fc3VwcC93cGEuYworQEAgLTUxMCw3ICs1MTAsNiBAQCBzdGF0aWMgdm9pZCB3cGFfc3VwcGxpY2FudF9wcm9jZXNzXzFfb2ZfNChzdHJ1Y3Qgd3BhX3NtICpzbSwKKyAJCW9zX21lbXNldChidWYsIDAsIHNpemVvZihidWYpKTsKKyAJfQorIAlzbS0+dHB0a19zZXQgPSAxOworLQlzbS0+dGtfdG9fc2V0ID0gMTsKKyAKKyAJa2RlID0gc20tPmFzc29jX3dwYV9pZTsKKyAJa2RlX2xlbiA9IHNtLT5hc3NvY193cGFfaWVfbGVuOworQEAgLTYxNSw3ICs2MTQsNyBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfcHRrKHN0cnVjdCB3cGFfc20gKnNtLAorIAllbnVtIHdwYV9hbGcgYWxnOworIAljb25zdCB1OCAqa2V5X3JzYzsKKyAKKy0JaWYgKCFzbS0+dGtfdG9fc2V0KSB7CisrCWlmIChzbS0+cHRrLmluc3RhbGxlZCkgeworIAkJd3BhX2RiZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfREVCVUcsCisgCQkJIldQQTogRG8gbm90IHJlLWluc3RhbGwgc2FtZSBQVEsgdG8gdGhlIGRyaXZlciIpOworIAkJcmV0dXJuIDA7CitAQCAtNjU5LDcgKzY1OCw3IEBAIHN0YXRpYyBpbnQgd3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9wdGsoc3RydWN0IHdwYV9zbSAqc20sCisgCisgCS8qIFRLIGlzIG5vdCBuZWVkZWQgYW55bW9yZSBpbiBzdXBwbGljYW50ICovCisgCW9zX21lbXNldChzbS0+cHRrLnRrLCAwLCBXUEFfVEtfTUFYX0xFTik7CistCXNtLT50a190b19zZXQgPSAwOworKwlzbS0+cHRrLmluc3RhbGxlZCA9IDE7CisgCisgCWlmIChzbS0+d3BhX3B0a19yZWtleSkgeworIAkJZWxvb3BfY2FuY2VsX3RpbWVvdXQod3BhX3NtX3Jla2V5X3B0aywgc20sIE5VTEwpOworZGlmZiAtLWdpdCBhL3NyYy9yc25fc3VwcC93cGFfaS5oIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKK2luZGV4IDlhNTQ2MzEuLjQxZjM3MWYgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhX2kuaAorKysrIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKK0BAIC0yNCw3ICsyNCw2IEBAIHN0cnVjdCB3cGFfc20geworIAlzdHJ1Y3Qgd3BhX3B0ayBwdGssIHRwdGs7CisgCWludCBwdGtfc2V0LCB0cHRrX3NldDsKKyAJdW5zaWduZWQgaW50IG1zZ18zX29mXzRfb2s6MTsKKy0JdW5zaWduZWQgaW50IHRrX3RvX3NldDoxOworIAl1OCBzbm9uY2VbV1BBX05PTkNFX0xFTl07CisgCXU4IGFub25jZVtXUEFfTk9OQ0VfTEVOXTsgLyogQU5vbmNlIGZyb20gdGhlIGxhc3QgMS80IG1zZyAqLworIAlpbnQgcmVuZXdfc25vbmNlOworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvMDAwNS1GaXgtUFRLLXJla2V5aW5nLXRvLWdlbmVyYXRlLWEtbmV3LUFOb25jZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvMDAwNS1GaXgtUFRLLXJla2V5aW5nLXRvLWdlbmVyYXRlLWEtbmV3LUFOb25jZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGUxZGYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDA1LUZpeC1QVEstcmVrZXlpbmctdG8tZ2VuZXJhdGUtYS1uZXctQU5vbmNlLnBhdGNoCkBAIC0wLDAgKzEsNjcgQEAKK0Zyb20gODA0YjlkNzI4MDhjZGRkODIyZTdkY2VjNGQ2MGY0MGMxYWNlZGE4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CitEYXRlOiBTdW4sIDEgT2N0IDIwMTcgMTI6MzI6NTcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzddIEZpeCBQVEsgcmVrZXlpbmcgdG8gZ2VuZXJhdGUgYSBuZXcgQU5vbmNlCisKK1RoZSBBdXRoZW50aWNhdG9yIHN0YXRlIG1hY2hpbmUgcGF0aCBmb3IgUFRLIHJla2V5aW5nIGVuZGVkIHVwIGJ5cGFzc2luZwordGhlIEFVVEhFTlRJQ0FUSU9OMiBzdGF0ZSB3aGVyZSBhIG5ldyBBTm9uY2UgaXMgZ2VuZXJhdGVkIHdoZW4gZ29pbmcKK2RpcmVjdGx5IHRvIHRoZSBQVEtTVEFSVCBzdGF0ZSBzaW5jZSB0aGVyZSBpcyBubyBuZWVkIHRvIHRyeSB0bworZGV0ZXJtaW5lIHRoZSBQTUsgYWdhaW4gaW4gc3VjaCBhIGNhc2UuIFRoaXMgaXMgZmFyIGZyb20gaWRlYWwgc2luY2UgdGhlCituZXcgUFRLIHdvdWxkIGRlcGVuZCBvbiBhIG5ldyBub25jZSBvbmx5IGZyb20gdGhlIHN1cHBsaWNhbnQuCisKK0ZpeCB0aGlzIGJ5IGdlbmVyYXRpbmcgYSBuZXcgQU5vbmNlIHdoZW4gbW92aW5nIHRvIHRoZSBQVEtTVEFSVCBzdGF0ZQorZm9yIHRoZSBwdXJwb3NlIG9mIHN0YXJ0aW5nIG5ldyA0LXdheSBoYW5kc2hha2UgdG8gcmVrZXkgUFRLLgorCitTaWduZWQtb2ZmLWJ5OiBKb3VuaSBNYWxpbmVuIDxqQHcxLmZpPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBaaGVuZyBSdW9xaW4gPHpoZW5ncnEuZm5zdEBjbi5mdWppdHN1LmNvbT4KKy0tLQorIHNyYy9hcC93cGFfYXV0aC5jIHwgMjQgKysrKysrKysrKysrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYXAvd3BhX2F1dGguYyBiL3NyYy9hcC93cGFfYXV0aC5jCitpbmRleCA3MDc5NzFkLi5iZjEwY2MxIDEwMDY0NAorLS0tIGEvc3JjL2FwL3dwYV9hdXRoLmMKKysrKyBiL3NyYy9hcC93cGFfYXV0aC5jCitAQCAtMTkwMSw2ICsxOTAxLDIxIEBAIFNNX1NUQVRFKFdQQV9QVEssIEFVVEhFTlRJQ0FUSU9OMikKKyB9CisgCisgCisrc3RhdGljIGludCB3cGFfYXV0aF9zbV9wdGtfdXBkYXRlKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pCisreworKwlpZiAocmFuZG9tX2dldF9ieXRlcyhzbS0+QU5vbmNlLCBXUEFfTk9OQ0VfTEVOKSkgeworKwkJd3BhX3ByaW50ZihNU0dfRVJST1IsCisrCQkJICAgIldQQTogRmFpbGVkIHRvIGdldCByYW5kb20gZGF0YSBmb3IgQU5vbmNlIik7CisrCQlzbS0+RGlzY29ubmVjdCA9IFRSVUU7CisrCQlyZXR1cm4gLTE7CisrCX0KKysJd3BhX2hleGR1bXAoTVNHX0RFQlVHLCAiV1BBOiBBc3NpZ24gbmV3IEFOb25jZSIsIHNtLT5BTm9uY2UsCisrCQkgICAgV1BBX05PTkNFX0xFTik7CisrCXNtLT5UaW1lb3V0Q3RyID0gMDsKKysJcmV0dXJuIDA7CisrfQorKworKworIFNNX1NUQVRFKFdQQV9QVEssIElOSVRQTUspCisgeworIAl1OCBtc2tbMiAqIFBNS19MRU5dOworQEAgLTI0NTgsOSArMjQ3MywxMiBAQCBTTV9TVEVQKFdQQV9QVEspCisgCQlTTV9FTlRFUihXUEFfUFRLLCBBVVRIRU5USUNBVElPTik7CisgCWVsc2UgaWYgKHNtLT5SZUF1dGhlbnRpY2F0aW9uUmVxdWVzdCkKKyAJCVNNX0VOVEVSKFdQQV9QVEssIEFVVEhFTlRJQ0FUSU9OMik7CistCWVsc2UgaWYgKHNtLT5QVEtSZXF1ZXN0KQorLQkJU01fRU5URVIoV1BBX1BUSywgUFRLU1RBUlQpOworLQllbHNlIHN3aXRjaCAoc20tPndwYV9wdGtfc3RhdGUpIHsKKysJZWxzZSBpZiAoc20tPlBUS1JlcXVlc3QpIHsKKysJCWlmICh3cGFfYXV0aF9zbV9wdGtfdXBkYXRlKHNtKSA8IDApCisrCQkJU01fRU5URVIoV1BBX1BUSywgRElTQ09OTkVDVEVEKTsKKysJCWVsc2UKKysJCQlTTV9FTlRFUihXUEFfUFRLLCBQVEtTVEFSVCk7CisrCX0gZWxzZSBzd2l0Y2ggKHNtLT53cGFfcHRrX3N0YXRlKSB7CisgCWNhc2UgV1BBX1BUS19JTklUSUFMSVpFOgorIAkJYnJlYWs7CisgCWNhc2UgV1BBX1BUS19ESVNDT05ORUNUOgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvMDAwNi1URExTLVJlamVjdC1UUEstVEstcmVjb25maWd1cmF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDA2LVRETFMtUmVqZWN0LVRQSy1USy1yZWNvbmZpZ3VyYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJjN2Q1MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvMDAwNi1URExTLVJlamVjdC1UUEstVEstcmVjb25maWd1cmF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMTM1IEBACitGcm9tIDdmZDI2ZGIyZDgxNDdlZDY2MmRiMTkyYzQxZDdiYzE1NzUyYTYwMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3VuaSBNYWxpbmVuIDxqQHcxLmZpPgorRGF0ZTogRnJpLCAyMiBTZXAgMjAxNyAxMTowMzoxNSArMDMwMAorU3ViamVjdDogW1BBVENIIDYvN10gVERMUzogUmVqZWN0IFRQSy1USyByZWNvbmZpZ3VyYXRpb24KKworRG8gbm90IHRyeSB0byByZWNvbmZpZ3VyZSB0aGUgc2FtZSBUUEstVEsgdG8gdGhlIGRyaXZlciBhZnRlciBpdCBoYXMKK2JlZW4gc3VjY2Vzc2Z1bGx5IGNvbmZpZ3VyZWQuIFRoaXMgaXMgYW4gZXhwbGljaXQgY2hlY2sgdG8gYXZvaWQgaXNzdWVzCityZWxhdGVkIHRvIHJlc2V0dGluZyB0aGUgVFgvUlggcGFja2V0IG51bWJlci4gVGhlcmUgd2FzIGFscmVhZHkgYSBjaGVjaworZm9yIHRoaXMgZm9yIFRQSyBNMiAocmV0cmllcyBvZiB0aGF0IG1lc3NhZ2UgYXJlIGlnbm9yZWQgY29tcGxldGVseSksIHNvCit0aGF0IGJlaGF2aW9yIGRvZXMgbm90IGdldCBtb2RpZmllZC4KKworRm9yIFRQSyBNMywgdGhlIFRQSy1USyBjb3VsZCBoYXZlIGJlZW4gcmVjb25maWd1cmVkLCBidXQgdGhhdCB3YXMKK2ZvbGxvd2VkIGJ5IGltbWVkaWF0ZSB0ZWFyZG93biBvZiB0aGUgbGluayBkdWUgdG8gYW4gaXNzdWUgaW4gdXBkYXRpbmcKK3RoZSBTVEEgZW50cnkuIEZ1cnRoZXJtb3JlLCBmb3IgVERMUyB3aXRoIGFueSByZWFsIHNlY3VyaXR5IChpLmUuLAoraWdub3Jpbmcgb3Blbi9XRVApLCB0aGUgVFBLIG1lc3NhZ2UgZXhjaGFuZ2UgaXMgcHJvdGVjdGVkIG9uIHRoZSBBUCBwYXRoCithbmQgc2ltcGxlIHJlcGxheSBhdHRhY2tzIGFyZSBub3QgZmVhc2libGUuCisKK0FzIGFuIGFkZGl0aW9uYWwgY29ybmVyIGNhc2UsIG1ha2Ugc3VyZSB0aGUgbG9jYWwgbm9uY2UgZ2V0cyB1cGRhdGVkIGlmCit0aGUgcGVlciB1c2VzIGEgdmVyeSB1bmxpa2VseSAicmFuZG9tIG5vbmNlIiBvZiBhbGwgemVyb3MuCisKK1NpZ25lZC1vZmYtYnk6IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgc3JjL3Jzbl9zdXBwL3RkbHMuYyB8IDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvdGRscy5jIGIvc3JjL3Jzbl9zdXBwL3RkbHMuYworaW5kZXggZTQyNDE2OC4uOWViOTczOCAxMDA2NDQKKy0tLSBhL3NyYy9yc25fc3VwcC90ZGxzLmMKKysrKyBiL3NyYy9yc25fc3VwcC90ZGxzLmMKK0BAIC0xMTIsNiArMTEyLDcgQEAgc3RydWN0IHdwYV90ZGxzX3BlZXIgeworIAkJdTggdGtbMTZdOyAvKiBUUEstVEs7IGFzc3VtaW5nIG9ubHkgQ0NNUCB3aWxsIGJlIHVzZWQgKi8KKyAJfSB0cGs7CisgCWludCB0cGtfc2V0OworKwlpbnQgdGtfc2V0OyAvKiBUUEstVEsgY29uZmlndXJlZCB0byB0aGUgZHJpdmVyICovCisgCWludCB0cGtfc3VjY2VzczsKKyAJaW50IHRwa19pbl9wcm9ncmVzczsKKyAKK0BAIC0xOTIsNiArMTkzLDIwIEBAIHN0YXRpYyBpbnQgd3BhX3RkbHNfc2V0X2tleShzdHJ1Y3Qgd3BhX3NtICpzbSwgc3RydWN0IHdwYV90ZGxzX3BlZXIgKnBlZXIpCisgCXU4IHJzY1s2XTsKKyAJZW51bSB3cGFfYWxnIGFsZzsKKyAKKysJaWYgKHBlZXItPnRrX3NldCkgeworKwkJLyoKKysJCSAqIFRoaXMgc2FtZSBUUEstVEsgaGFzIGFscmVhZHkgYmVlbiBjb25maWd1cmVkIHRvIHRoZSBkcml2ZXIKKysJCSAqIGFuZCB0aGlzIG5ldyBjb25maWd1cmF0aW9uIGF0dGVtcHQgKGxpa2VseSBkdWUgdG8gYW4KKysJCSAqIHVuZXhwZWN0ZWQgcmV0cmFuc21pdHRlZCBmcmFtZSkgd291bGQgcmVzdWx0IGluIGNsZWFyaW5nCisrCQkgKiB0aGUgVFgvUlggc2VxdWVuY2UgbnVtYmVyIHdoaWNoIGNhbiBicmVhayBzZWN1cml0eSwgc28gbXVzdAorKwkJICogbm90IGFsbG93IHRoYXQgdG8gaGFwcGVuLgorKwkJICovCisrCQl3cGFfcHJpbnRmKE1TR19JTkZPLCAiVERMUzogVFBLLVRLIGZvciB0aGUgcGVlciAiIE1BQ1NUUgorKwkJCSAgICIgaGFzIGFscmVhZHkgYmVlbiBjb25maWd1cmVkIHRvIHRoZSBkcml2ZXIgLSBkbyBub3QgcmVjb25maWd1cmUiLAorKwkJCSAgIE1BQzJTVFIocGVlci0+YWRkcikpOworKwkJcmV0dXJuIC0xOworKwl9CisrCisgCW9zX21lbXNldChyc2MsIDAsIDYpOworIAorIAlzd2l0Y2ggKHBlZXItPmNpcGhlcikgeworQEAgLTIwOSwxMiArMjI0LDE1IEBAIHN0YXRpYyBpbnQgd3BhX3RkbHNfc2V0X2tleShzdHJ1Y3Qgd3BhX3NtICpzbSwgc3RydWN0IHdwYV90ZGxzX3BlZXIgKnBlZXIpCisgCQlyZXR1cm4gLTE7CisgCX0KKyAKKysJd3BhX3ByaW50ZihNU0dfREVCVUcsICJURExTOiBDb25maWd1cmUgcGFpcndpc2Uga2V5IGZvciBwZWVyICIgTUFDU1RSLAorKwkJICAgTUFDMlNUUihwZWVyLT5hZGRyKSk7CisgCWlmICh3cGFfc21fc2V0X2tleShzbSwgYWxnLCBwZWVyLT5hZGRyLCAtMSwgMSwKKyAJCQkgICByc2MsIHNpemVvZihyc2MpLCBwZWVyLT50cGsudGssIGtleV9sZW4pIDwgMCkgeworIAkJd3BhX3ByaW50ZihNU0dfV0FSTklORywgIlRETFM6IEZhaWxlZCB0byBzZXQgVFBLIHRvIHRoZSAiCisgCQkJICAgImRyaXZlciIpOworIAkJcmV0dXJuIC0xOworIAl9CisrCXBlZXItPnRrX3NldCA9IDE7CisgCXJldHVybiAwOworIH0KKyAKK0BAIC02OTYsNyArNzE0LDcgQEAgc3RhdGljIHZvaWQgd3BhX3RkbHNfcGVlcl9jbGVhcihzdHJ1Y3Qgd3BhX3NtICpzbSwgc3RydWN0IHdwYV90ZGxzX3BlZXIgKnBlZXIpCisgCXBlZXItPmNpcGhlciA9IDA7CisgCXBlZXItPnFvc19pbmZvID0gMDsKKyAJcGVlci0+d21tX2NhcGFibGUgPSAwOworLQlwZWVyLT50cGtfc2V0ID0gcGVlci0+dHBrX3N1Y2Nlc3MgPSAwOworKwlwZWVyLT50a19zZXQgPSBwZWVyLT50cGtfc2V0ID0gcGVlci0+dHBrX3N1Y2Nlc3MgPSAwOworIAlwZWVyLT5jaGFuX3N3aXRjaF9lbmFibGVkID0gMDsKKyAJb3NfbWVtc2V0KCZwZWVyLT50cGssIDAsIHNpemVvZihwZWVyLT50cGspKTsKKyAJb3NfbWVtc2V0KHBlZXItPmlub25jZSwgMCwgV1BBX05PTkNFX0xFTik7CitAQCAtMTE1OSw2ICsxMTc3LDcgQEAgc2tpcF9yc25pZToKKyAJCXdwYV90ZGxzX3BlZXJfZnJlZShzbSwgcGVlcik7CisgCQlyZXR1cm4gLTE7CisgCX0KKysJcGVlci0+dGtfc2V0ID0gMDsgLyogQSBuZXcgbm9uY2UgcmVzdWx0cyBpbiBhIG5ldyBUSyAqLworIAl3cGFfaGV4ZHVtcChNU0dfREVCVUcsICJURExTOiBJbml0aWF0b3IgTm9uY2UgZm9yIFRQSyBoYW5kc2hha2UiLAorIAkJICAgIHBlZXItPmlub25jZSwgV1BBX05PTkNFX0xFTik7CisgCW9zX21lbWNweShmdGllLT5Tbm9uY2UsIHBlZXItPmlub25jZSwgV1BBX05PTkNFX0xFTik7CitAQCAtMTc1MSw2ICsxNzcwLDE5IEBAIHN0YXRpYyBpbnQgd3BhX3RkbHNfYWRkc2V0X3BlZXIoc3RydWN0IHdwYV9zbSAqc20sIHN0cnVjdCB3cGFfdGRsc19wZWVyICpwZWVyLAorIH0KKyAKKyAKKytzdGF0aWMgaW50IHRkbHNfbm9uY2Vfc2V0KGNvbnN0IHU4ICpub25jZSkKKyt7CisrCWludCBpOworKworKwlmb3IgKGkgPSAwOyBpIDwgV1BBX05PTkNFX0xFTjsgaSsrKSB7CisrCQlpZiAobm9uY2VbaV0pCisrCQkJcmV0dXJuIDE7CisrCX0KKysKKysJcmV0dXJuIDA7CisrfQorKworKworIHN0YXRpYyBpbnQgd3BhX3RkbHNfcHJvY2Vzc190cGtfbTEoc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICpzcmNfYWRkciwKKyAJCQkJICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbikKKyB7CitAQCAtMjAwNCw3ICsyMDM2LDggQEAgc2tpcF9yc246CisgCXBlZXItPnJzbmllX2lfbGVuID0ga2RlLnJzbl9pZV9sZW47CisgCXBlZXItPmNpcGhlciA9IGNpcGhlcjsKKyAKKy0JaWYgKG9zX21lbWNtcChwZWVyLT5pbm9uY2UsIGZ0aWUtPlNub25jZSwgV1BBX05PTkNFX0xFTikgIT0gMCkgeworKwlpZiAob3NfbWVtY21wKHBlZXItPmlub25jZSwgZnRpZS0+U25vbmNlLCBXUEFfTk9OQ0VfTEVOKSAhPSAwIHx8CisrCSAgICAhdGRsc19ub25jZV9zZXQocGVlci0+aW5vbmNlKSkgeworIAkJLyoKKyAJCSAqIFRoZXJlIGlzIG5vIHBvaW50IGluIHVwZGF0aW5nIHRoZSBSTm9uY2UgZm9yIGV2ZXJ5IG9idGFpbmVkCisgCQkgKiBUUEsgTTEgZnJhbWUgKGUuZy4sIHJldHJhbnNtaXNzaW9uIGR1ZSB0byB0aW1lb3V0KSB3aXRoIHRoZQorQEAgLTIwMjAsNiArMjA1Myw3IEBAIHNraXBfcnNuOgorIAkJCQkiVERMUzogRmFpbGVkIHRvIGdldCByYW5kb20gZGF0YSBmb3IgcmVzcG9uZGVyIG5vbmNlIik7CisgCQkJZ290byBlcnJvcjsKKyAJCX0KKysJCXBlZXItPnRrX3NldCA9IDA7IC8qIEEgbmV3IG5vbmNlIHJlc3VsdHMgaW4gYSBuZXcgVEsgKi8KKyAJfQorIAorICNpZiAwCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDA3LUZULURvLW5vdC1hbGxvdy1tdWx0aXBsZS1SZWFzc29jaWF0aW9uLVJlc3BvbnNlLWZyYW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDctRlQtRG8tbm90LWFsbG93LW11bHRpcGxlLVJlYXNzb2NpYXRpb24tUmVzcG9uc2UtZnJhbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDk3OGM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDA3LUZULURvLW5vdC1hbGxvdy1tdWx0aXBsZS1SZWFzc29jaWF0aW9uLVJlc3BvbnNlLWZyYW0ucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSBhNDJlYjY3YzQyZjg0NWZhZjI2NmIwNjMzZDUyZTE3ZjJhODJmNTExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm91bmkgTWFsaW5lbiA8akB3MS5maT4KK0RhdGU6IEZyaSwgMjIgU2VwIDIwMTcgMTI6MDY6MzcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCA3LzddIEZUOiBEbyBub3QgYWxsb3cgbXVsdGlwbGUgUmVhc3NvY2lhdGlvbiBSZXNwb25zZSBmcmFtZXMKKworVGhlIGRyaXZlciBpcyBleHBlY3RlZCB0byBub3QgcmVwb3J0IGEgc2Vjb25kIGFzc29jaWF0aW9uIGV2ZW50IHdpdGhvdXQKK3RoZSBzdGF0aW9uIGhhdmluZyBleHBsaWNpdGx5IHJlcXVlc3QgYSBuZXcgYXNzb2NpYXRpb24uIEFzIHN1Y2gsIHRoaXMKK2Nhc2Ugc2hvdWxkIG5vdCBiZSByZWFjaGFibGUuIEhvd2V2ZXIsIHNpbmNlIHJlY29uZmlndXJpbmcgdGhlIHNhbWUKK3BhaXJ3aXNlIG9yIGdyb3VwIGtleXMgdG8gdGhlIGRyaXZlciBjb3VsZCByZXN1bHQgaW4gbm9uY2UgcmV1c2UgaXNzdWVzLAorYmUgZXh0cmEgY2FyZWZ1bCBoZXJlIGFuZCBkbyBhbiBhZGRpdGlvbmFsIHN0YXRlIGNoZWNrIHRvIGF2b2lkIHRoaXMKK2V2ZW4gaWYgdGhlIGxvY2FsIGRyaXZlciBlbmRzIHVwIHNvbWVob3cgYWNjZXB0aW5nIGFuIHVuZXhwZWN0ZWQKK1JlYXNzb2NpYXRpb24gUmVzcG9uc2UgZnJhbWUuCisKK1NpZ25lZC1vZmYtYnk6IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgc3JjL3Jzbl9zdXBwL3dwYS5jICAgIHwgMyArKysKKyBzcmMvcnNuX3N1cHAvd3BhX2Z0LmMgfCA4ICsrKysrKysrCisgc3JjL3Jzbl9zdXBwL3dwYV9pLmggIHwgMSArCisgMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhLmMgYi9zcmMvcnNuX3N1cHAvd3BhLmMKK2luZGV4IDA1NTBhNDEuLjJhNTNjNmYgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhLmMKKysrKyBiL3NyYy9yc25fc3VwcC93cGEuYworQEAgLTI0NDAsNiArMjQ0MCw5IEBAIHZvaWQgd3BhX3NtX25vdGlmeV9kaXNhc3NvYyhzdHJ1Y3Qgd3BhX3NtICpzbSkKKyAjaWZkZWYgQ09ORklHX1RETFMKKyAJd3BhX3RkbHNfZGlzYXNzb2Moc20pOworICNlbmRpZiAvKiBDT05GSUdfVERMUyAqLworKyNpZmRlZiBDT05GSUdfSUVFRTgwMjExUgorKwlzbS0+ZnRfcmVhc3NvY19jb21wbGV0ZWQgPSAwOworKyNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExUiAqLworIAorIAkvKiBLZXlzIGFyZSBub3QgbmVlZGVkIGluIHRoZSBXUEEgc3RhdGUgbWFjaGluZSBhbnltb3JlICovCisgCXdwYV9zbV9kcm9wX3NhKHNtKTsKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhX2Z0LmMgYi9zcmMvcnNuX3N1cHAvd3BhX2Z0LmMKK2luZGV4IDIwNTc5M2UuLmQ0NWJiNDUgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhX2Z0LmMKKysrKyBiL3NyYy9yc25fc3VwcC93cGFfZnQuYworQEAgLTE1Myw2ICsxNTMsNyBAQCBzdGF0aWMgdTggKiB3cGFfZnRfZ2VuX3JlcV9pZXMoc3RydWN0IHdwYV9zbSAqc20sIHNpemVfdCAqbGVuLAorIAl1MTYgY2FwYWI7CisgCisgCXNtLT5mdF9jb21wbGV0ZWQgPSAwOworKwlzbS0+ZnRfcmVhc3NvY19jb21wbGV0ZWQgPSAwOworIAorIAlidWZfbGVuID0gMiArIHNpemVvZihzdHJ1Y3QgcnNuX21kaWUpICsgMiArIHNpemVvZihzdHJ1Y3QgcnNuX2Z0aWUpICsKKyAJCTIgKyBzbS0+cjBraF9pZF9sZW4gKyByaWNfaWVzX2xlbiArIDEwMDsKK0BAIC02ODEsNiArNjgyLDExIEBAIGludCB3cGFfZnRfdmFsaWRhdGVfcmVhc3NvY19yZXNwKHN0cnVjdCB3cGFfc20gKnNtLCBjb25zdCB1OCAqaWVzLAorIAkJcmV0dXJuIC0xOworIAl9CisgCisrCWlmIChzbS0+ZnRfcmVhc3NvY19jb21wbGV0ZWQpIHsKKysJCXdwYV9wcmludGYoTVNHX0RFQlVHLCAiRlQ6IFJlYXNzb2NpYXRpb24gaGFzIGFscmVhZHkgYmVlbiBjb21wbGV0ZWQgZm9yIHRoaXMgRlQgcHJvdG9jb2wgaW5zdGFuY2UgLSBpZ25vcmUgdW5leHBlY3RlZCByZXRyYW5zbWlzc2lvbiIpOworKwkJcmV0dXJuIDA7CisrCX0KKysKKyAJaWYgKHdwYV9mdF9wYXJzZV9pZXMoaWVzLCBpZXNfbGVuLCAmcGFyc2UpIDwgMCkgeworIAkJd3BhX3ByaW50ZihNU0dfREVCVUcsICJGVDogRmFpbGVkIHRvIHBhcnNlIElFcyIpOworIAkJcmV0dXJuIC0xOworQEAgLTc4MSw2ICs3ODcsOCBAQCBpbnQgd3BhX2Z0X3ZhbGlkYXRlX3JlYXNzb2NfcmVzcChzdHJ1Y3Qgd3BhX3NtICpzbSwgY29uc3QgdTggKmllcywKKyAJCXJldHVybiAtMTsKKyAJfQorIAorKwlzbS0+ZnRfcmVhc3NvY19jb21wbGV0ZWQgPSAxOworKworIAlpZiAod3BhX2Z0X3Byb2Nlc3NfZ3RrX3N1YmVsZW0oc20sIHBhcnNlLmd0aywgcGFyc2UuZ3RrX2xlbikgPCAwKQorIAkJcmV0dXJuIC0xOworIAorZGlmZiAtLWdpdCBhL3NyYy9yc25fc3VwcC93cGFfaS5oIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKK2luZGV4IDQxZjM3MWYuLjU2Zjg4ZGMgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhX2kuaAorKysrIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKK0BAIC0xMjgsNiArMTI4LDcgQEAgc3RydWN0IHdwYV9zbSB7CisgCXNpemVfdCByMGtoX2lkX2xlbjsKKyAJdTggcjFraF9pZFtGVF9SMUtIX0lEX0xFTl07CisgCWludCBmdF9jb21wbGV0ZWQ7CisrCWludCBmdF9yZWFzc29jX2NvbXBsZXRlZDsKKyAJaW50IG92ZXJfdGhlX2RzX2luX3Byb2dyZXNzOworIAl1OCB0YXJnZXRfYXBbRVRIX0FMRU5dOyAvKiBvdmVyLXRoZS1EUyB0YXJnZXQgQVAgKi8KKyAJaW50IHNldF9wdGtfYWZ0ZXJfYXNzb2M7CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC9rZXktcmVwbGF5LWN2ZS1tdWx0aXBsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQva2V5LXJlcGxheS1jdmUtbXVsdGlwbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NGRhOGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC9rZXktcmVwbGF5LWN2ZS1tdWx0aXBsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk4NCArMCwwIEBACi1UaGUgV1BBMiBmb3VyLXdheSBoYW5kc2hha2UgcHJvdG9jb2wgaXMgdnVsbmVyYWJsZSB0byByZXBsYXkgYXR0YWNrcyB3aGljaCBjYW4KLXJlc3VsdCBpbiB1bmF1dGhlbnRpY2F0ZWQgY2xpZW50cyBnYWluaW5nIGFjY2VzcyB0byB0aGUgbmV0d29yay4KLQotQmFja3BvcnQgYSBudW1iZXIgb2YgcGF0Y2hlcyBmcm9tIHVwc3RyZWFtIHRvIGZpeCB0aGlzLgotCi1DVkU6IENWRS0yMDE3LTEzMDc3Ci1DVkU6IENWRS0yMDE3LTEzMDc4Ci1DVkU6IENWRS0yMDE3LTEzMDc5Ci1DVkU6IENWRS0yMDE3LTEzMDgwCi1DVkU6IENWRS0yMDE3LTEzMDgxCi1DVkU6IENWRS0yMDE3LTEzMDgyCi1DVkU6IENWRS0yMDE3LTEzMDg2Ci1DVkU6IENWRS0yMDE3LTEzMDg3Ci1DVkU6IENWRS0yMDE3LTEzMDg4Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gY2Y0Y2FiODA0YzdhZmQ1YzQ1NTA1NTI4YThkMTZlNDYxNjMyNDNhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdGh5IFZhbmhvZWYgPE1hdGh5LlZhbmhvZWZAY3Mua3VsZXV2ZW4uYmU+Ci1EYXRlOiBGcmksIDE0IEp1bCAyMDE3IDE1OjE1OjM1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS84XSBob3N0YXBkOiBBdm9pZCBrZXkgcmVpbnN0YWxsYXRpb24gaW4gRlQgaGFuZHNoYWtlCi0KLURvIG5vdCByZWluc3RhbGwgVEsgdG8gdGhlIGRyaXZlciBkdXJpbmcgUmVhc3NvY2lhdGlvbiBSZXNwb25zZSBmcmFtZQotcHJvY2Vzc2luZyBpZiB0aGUgZmlyc3QgYXR0ZW1wdCBvZiBzZXR0aW5nIHRoZSBUSyBzdWNjZWVkZWQuIFRoaXMgYXZvaWRzCi1pc3N1ZXMgcmVsYXRlZCB0byBjbGVhcmluZyB0aGUgVFgvUlggUE4gdGhhdCBjb3VsZCByZXN1bHQgaW4gcmV1c2luZwotc2FtZSBQTiB2YWx1ZXMgZm9yIHRyYW5zbWl0dGVkIGZyYW1lcyAoZS5nLiwgZHVlIHRvIENDTSBub25jZSByZXVzZSBhbmQKLWFsc28gaGl0dGluZyByZXBsYXkgcHJvdGVjdGlvbiBvbiB0aGUgcmVjZWl2ZXIpIGFuZCBhY2NlcHRpbmcgcmVwbGF5ZWQKLWZyYW1lcyBvbiBSWCBzaWRlLgotCi1UaGlzIGlzc3VlIHdhcyBpbnRyb2R1Y2VkIGJ5IHRoZSBjb21taXQKLTBlODRjMjU0MzRlNmExZjI4M2M3YjRlNjJlNDgzNzI5MDg1Yjc4ZDIgKCdGVDogRml4IFBUSyBjb25maWd1cmF0aW9uIGluCi1hdXRoZW50aWNhdG9yJykgd2hpY2ggYWxsb3dlZCB3cGFfZnRfaW5zdGFsbF9wdGsoKSB0byBiZSBjYWxsZWQgbXVsdGlwbGUKLXRpbWVzIHdpdGggdGhlIHNhbWUgUFRLLiBXaGlsZSB0aGUgc2Vjb25kIGNvbmZpZ3VyYXRpb24gYXR0ZW1wdCBpcwotbmVlZGVkIHdpdGggc29tZSBkcml2ZXJzLCBpdCBtdXN0IGJlIGRvbmUgb25seSBpZiB0aGUgZmlyc3QgYXR0ZW1wdAotZmFpbGVkLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXRoeSBWYW5ob2VmIDxNYXRoeS5WYW5ob2VmQGNzLmt1bGV1dmVuLmJlPgotLS0tCi0gc3JjL2FwL2llZWU4MDJfMTEuYyAgfCAxNiArKysrKysrKysrKysrLS0tCi0gc3JjL2FwL3dwYV9hdXRoLmMgICAgfCAxMSArKysrKysrKysrKwotIHNyYy9hcC93cGFfYXV0aC5oICAgIHwgIDMgKystCi0gc3JjL2FwL3dwYV9hdXRoX2Z0LmMgfCAxMCArKysrKysrKysrCi0gc3JjL2FwL3dwYV9hdXRoX2kuaCAgfCAgMSArCi0gNSBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FwL2llZWU4MDJfMTEuYyBiL3NyYy9hcC9pZWVlODAyXzExLmMKLWluZGV4IDRlMDQxNjkuLjMzMzAzNWYgMTAwNjQ0Ci0tLS0gYS9zcmMvYXAvaWVlZTgwMl8xMS5jCi0rKysgYi9zcmMvYXAvaWVlZTgwMl8xMS5jCi1AQCAtMTg0MSw2ICsxODQxLDcgQEAgc3RhdGljIGludCBhZGRfYXNzb2NpYXRlZF9zdGEoc3RydWN0IGhvc3RhcGRfZGF0YSAqaGFwZCwKLSB7Ci0gCXN0cnVjdCBpZWVlODAyMTFfaHRfY2FwYWJpbGl0aWVzIGh0X2NhcDsKLSAJc3RydWN0IGllZWU4MDIxMV92aHRfY2FwYWJpbGl0aWVzIHZodF9jYXA7Ci0rCWludCBzZXQgPSAxOwotIAotIAkvKgotIAkgKiBSZW1vdmUgdGhlIFNUQSBlbnRyeSB0byBlbnN1cmUgdGhlIFNUQSBQUyBzdGF0ZSBnZXRzIGNsZWFyZWQgYW5kCi1AQCAtMTg0OCw5ICsxODQ5LDE4IEBAIHN0YXRpYyBpbnQgYWRkX2Fzc29jaWF0ZWRfc3RhKHN0cnVjdCBob3N0YXBkX2RhdGEgKmhhcGQsCi0gCSAqIEZULW92ZXItdGhlLURTLCB3aGVyZSBhIHN0YXRpb24gcmUtYXNzb2NpYXRlcyBiYWNrIHRvIHRoZSBzYW1lIEFQIGJ1dAotIAkgKiBza2lwcyB0aGUgYXV0aGVudGljYXRpb24gZmxvdywgb3IgaWYgd29ya2luZyB3aXRoIGEgZHJpdmVyIHRoYXQKLSAJICogZG9lcyBub3Qgc3VwcG9ydCBmdWxsIEFQIGNsaWVudCBzdGF0ZS4KLSsJICoKLSsJICogU2tpcCB0aGlzIGlmIHRoZSBTVEEgaGFzIGFscmVhZHkgY29tcGxldGVkIEZUIHJlYXNzb2NpYXRpb24gYW5kIHRoZQotKwkgKiBUSyBoYXMgYmVlbiBjb25maWd1cmVkIHNpbmNlIHRoZSBUWC9SWCBQTiBtdXN0IG5vdCBiZSByZXNldCB0byAwIGZvcgotKwkgKiB0aGUgc2FtZSBrZXkuCi0gCSAqLwotLQlpZiAoIXN0YS0+YWRkZWRfdW5hc3NvYykKLSsJaWYgKCFzdGEtPmFkZGVkX3VuYXNzb2MgJiYKLSsJICAgICghKHN0YS0+ZmxhZ3MgJiBXTEFOX1NUQV9BVVRIT1JJWkVEKSB8fAotKwkgICAgICF3cGFfYXV0aF9zdGFfZnRfdGtfYWxyZWFkeV9zZXQoc3RhLT53cGFfc20pKSkgewotIAkJaG9zdGFwZF9kcnZfc3RhX3JlbW92ZShoYXBkLCBzdGEtPmFkZHIpOwotKwkJd3BhX2F1dGhfc21fZXZlbnQoc3RhLT53cGFfc20sIFdQQV9EUlZfU1RBX1JFTU9WRUQpOwotKwkJc2V0ID0gMDsKLSsJfQotIAotICNpZmRlZiBDT05GSUdfSUVFRTgwMjExTgotIAlpZiAoc3RhLT5mbGFncyAmIFdMQU5fU1RBX0hUKQotQEAgLTE4NzMsMTEgKzE4ODMsMTEgQEAgc3RhdGljIGludCBhZGRfYXNzb2NpYXRlZF9zdGEoc3RydWN0IGhvc3RhcGRfZGF0YSAqaGFwZCwKLSAJCQkgICAgc3RhLT5mbGFncyAmIFdMQU5fU1RBX1ZIVCA/ICZ2aHRfY2FwIDogTlVMTCwKLSAJCQkgICAgc3RhLT5mbGFncyB8IFdMQU5fU1RBX0FTU09DLCBzdGEtPnFvc2luZm8sCi0gCQkJICAgIHN0YS0+dmh0X29wbW9kZSwgc3RhLT5wMnBfaWUgPyAxIDogMCwKLS0JCQkgICAgc3RhLT5hZGRlZF91bmFzc29jKSkgewotKwkJCSAgICBzZXQpKSB7Ci0gCQlob3N0YXBkX2xvZ2dlcihoYXBkLCBzdGEtPmFkZHIsCi0gCQkJICAgICAgIEhPU1RBUERfTU9EVUxFX0lFRUU4MDIxMSwgSE9TVEFQRF9MRVZFTF9OT1RJQ0UsCi0gCQkJICAgICAgICJDb3VsZCBub3QgJXMgU1RBIHRvIGtlcm5lbCBkcml2ZXIiLAotLQkJCSAgICAgICBzdGEtPmFkZGVkX3VuYXNzb2MgPyAic2V0IiA6ICJhZGQiKTsKLSsJCQkgICAgICAgc2V0ID8gInNldCIgOiAiYWRkIik7Ci0gCi0gCQlpZiAoc3RhLT5hZGRlZF91bmFzc29jKSB7Ci0gCQkJaG9zdGFwZF9kcnZfc3RhX3JlbW92ZShoYXBkLCBzdGEtPmFkZHIpOwotZGlmZiAtLWdpdCBhL3NyYy9hcC93cGFfYXV0aC5jIGIvc3JjL2FwL3dwYV9hdXRoLmMKLWluZGV4IDM1ODcwODYuLjcwNzk3MWQgMTAwNjQ0Ci0tLS0gYS9zcmMvYXAvd3BhX2F1dGguYwotKysrIGIvc3JjL2FwL3dwYV9hdXRoLmMKLUBAIC0xNzQ1LDYgKzE3NDUsOSBAQCBpbnQgd3BhX2F1dGhfc21fZXZlbnQoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSwgZW51bSB3cGFfZXZlbnQgZXZlbnQpCi0gI2Vsc2UgLyogQ09ORklHX0lFRUU4MDIxMVIgKi8KLSAJCWJyZWFrOwotICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExUiAqLwotKwljYXNlIFdQQV9EUlZfU1RBX1JFTU9WRUQ6Ci0rCQlzbS0+dGtfYWxyZWFkeV9zZXQgPSBGQUxTRTsKLSsJCXJldHVybiAwOwotIAl9Ci0gCi0gI2lmZGVmIENPTkZJR19JRUVFODAyMTFSCi1AQCAtMzI1MCw2ICszMjUzLDE0IEBAIGludCB3cGFfYXV0aF9zdGFfd3BhX3ZlcnNpb24oc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSkKLSB9Ci0gCi0gCi0raW50IHdwYV9hdXRoX3N0YV9mdF90a19hbHJlYWR5X3NldChzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKQotK3sKLSsJaWYgKCFzbSB8fCAhd3BhX2tleV9tZ210X2Z0KHNtLT53cGFfa2V5X21nbXQpKQotKwkJcmV0dXJuIDA7Ci0rCXJldHVybiBzbS0+dGtfYWxyZWFkeV9zZXQ7Ci0rfQotKwotKwotIGludCB3cGFfYXV0aF9zdGFfY2xlYXJfcG1rc2Eoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSwKLSAJCQkgICAgIHN0cnVjdCByc25fcG1rc2FfY2FjaGVfZW50cnkgKmVudHJ5KQotIHsKLWRpZmYgLS1naXQgYS9zcmMvYXAvd3BhX2F1dGguaCBiL3NyYy9hcC93cGFfYXV0aC5oCi1pbmRleCAwZGU4ZDk3Li45NzQ2MWIwIDEwMDY0NAotLS0tIGEvc3JjL2FwL3dwYV9hdXRoLmgKLSsrKyBiL3NyYy9hcC93cGFfYXV0aC5oCi1AQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgd3BhX3JlY2VpdmUoc3RydWN0IHdwYV9hdXRoZW50aWNhdG9yICp3cGFfYXV0aCwKLSAJCSB1OCAqZGF0YSwgc2l6ZV90IGRhdGFfbGVuKTsKLSBlbnVtIHdwYV9ldmVudCB7Ci0gCVdQQV9BVVRILCBXUEFfQVNTT0MsIFdQQV9ESVNBU1NPQywgV1BBX0RFQVVUSCwgV1BBX1JFQVVUSCwKLS0JV1BBX1JFQVVUSF9FQVBPTCwgV1BBX0FTU09DX0ZUCi0rCVdQQV9SRUFVVEhfRUFQT0wsIFdQQV9BU1NPQ19GVCwgV1BBX0RSVl9TVEFfUkVNT1ZFRAotIH07Ci0gdm9pZCB3cGFfcmVtb3ZlX3B0ayhzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKTsKLSBpbnQgd3BhX2F1dGhfc21fZXZlbnQoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSwgZW51bSB3cGFfZXZlbnQgZXZlbnQpOwotQEAgLTI4MCw2ICsyODAsNyBAQCBpbnQgd3BhX2F1dGhfcGFpcndpc2Vfc2V0KHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pOwotIGludCB3cGFfYXV0aF9nZXRfcGFpcndpc2Uoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSk7Ci0gaW50IHdwYV9hdXRoX3N0YV9rZXlfbWdtdChzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKTsKLSBpbnQgd3BhX2F1dGhfc3RhX3dwYV92ZXJzaW9uKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pOwotK2ludCB3cGFfYXV0aF9zdGFfZnRfdGtfYWxyZWFkeV9zZXQoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSk7Ci0gaW50IHdwYV9hdXRoX3N0YV9jbGVhcl9wbWtzYShzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtLAotIAkJCSAgICAgc3RydWN0IHJzbl9wbWtzYV9jYWNoZV9lbnRyeSAqZW50cnkpOwotIHN0cnVjdCByc25fcG1rc2FfY2FjaGVfZW50cnkgKgotZGlmZiAtLWdpdCBhL3NyYy9hcC93cGFfYXV0aF9mdC5jIGIvc3JjL2FwL3dwYV9hdXRoX2Z0LmMKLWluZGV4IDQyMjQyYTUuLmU2M2I5OWEgMTAwNjQ0Ci0tLS0gYS9zcmMvYXAvd3BhX2F1dGhfZnQuYwotKysrIGIvc3JjL2FwL3dwYV9hdXRoX2Z0LmMKLUBAIC03ODAsNiArNzgwLDE0IEBAIHZvaWQgd3BhX2Z0X2luc3RhbGxfcHRrKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pCi0gCQlyZXR1cm47Ci0gCX0KLSAKLSsJaWYgKHNtLT50a19hbHJlYWR5X3NldCkgewotKwkJLyogTXVzdCBhdm9pZCBUSyByZWNvbmZpZ3VyYXRpb24gdG8gcHJldmVudCBjbGVhcmluZyBvZiBUWC9SWAotKwkJICogUE4gaW4gdGhlIGRyaXZlciAqLwotKwkJd3BhX3ByaW50ZihNU0dfREVCVUcsCi0rCQkJICAgIkZUOiBEbyBub3QgcmUtaW5zdGFsbCBzYW1lIFBUSyB0byB0aGUgZHJpdmVyIik7Ci0rCQlyZXR1cm47Ci0rCX0KLSsKLSAJLyogRklYOiBhZGQgU1RBIGVudHJ5IHRvIGtlcm5lbC9kcml2ZXIgaGVyZT8gVGhlIHNldF9rZXkgd2lsbCBmYWlsCi0gCSAqIG1vc3QgbGlrZWx5IHdpdGhvdXQgdGhpcy4uIEF0IHRoZSBtb21lbnQsIFNUQSBlbnRyeSBpcyBhZGRlZCBvbmx5Ci0gCSAqIGFmdGVyIGFzc29jaWF0aW9uIGhhcyBiZWVuIGNvbXBsZXRlZC4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZAotQEAgLTc5Miw2ICs4MDAsNyBAQCB2b2lkIHdwYV9mdF9pbnN0YWxsX3B0ayhzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKQotIAotIAkvKiBGSVg6IE1MTUUtU2V0UHJvdGVjdGlvbi5SZXF1ZXN0KFRBLCBUeF9SeCkgKi8KLSAJc20tPnBhaXJ3aXNlX3NldCA9IFRSVUU7Ci0rCXNtLT50a19hbHJlYWR5X3NldCA9IFRSVUU7Ci0gfQotIAotIAotQEAgLTg5OCw2ICs5MDcsNyBAQCBzdGF0aWMgaW50IHdwYV9mdF9wcm9jZXNzX2F1dGhfcmVxKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20sCi0gCi0gCXNtLT5wYWlyd2lzZSA9IHBhaXJ3aXNlOwotIAlzbS0+UFRLX3ZhbGlkID0gVFJVRTsKLSsJc20tPnRrX2FscmVhZHlfc2V0ID0gRkFMU0U7Ci0gCXdwYV9mdF9pbnN0YWxsX3B0ayhzbSk7Ci0gCi0gCWJ1ZmxlbiA9IDIgKyBzaXplb2Yoc3RydWN0IHJzbl9tZGllKSArIDIgKyBzaXplb2Yoc3RydWN0IHJzbl9mdGllKSArCi1kaWZmIC0tZ2l0IGEvc3JjL2FwL3dwYV9hdXRoX2kuaCBiL3NyYy9hcC93cGFfYXV0aF9pLmgKLWluZGV4IDcyYjdlYjMuLjdmZDhmMDUgMTAwNjQ0Ci0tLS0gYS9zcmMvYXAvd3BhX2F1dGhfaS5oCi0rKysgYi9zcmMvYXAvd3BhX2F1dGhfaS5oCi1AQCAtNjUsNiArNjUsNyBAQCBzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgewotIAlzdHJ1Y3Qgd3BhX3B0ayBQVEs7Ci0gCUJvb2xlYW4gUFRLX3ZhbGlkOwotIAlCb29sZWFuIHBhaXJ3aXNlX3NldDsKLSsJQm9vbGVhbiB0a19hbHJlYWR5X3NldDsKLSAJaW50IGtleWNvdW50OwotIAlCb29sZWFuIFBhaXI7Ci0gCXN0cnVjdCB3cGFfa2V5X3JlcGxheV9jb3VudGVyIHsKLS0tIAotMi43LjQKLQotRnJvbSA5MjdmODkxMDA3YzQwMmZlZmQxZmYzODQ2NDViM2YwNzU5N2MzZWRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0aHkgVmFuaG9lZiA8TWF0aHkuVmFuaG9lZkBjcy5rdWxldXZlbi5iZT4KLURhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMTY6MDM6MjQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzhdIFByZXZlbnQgcmVpbnN0YWxsYXRpb24gb2YgYW4gYWxyZWFkeSBpbi11c2UgZ3JvdXAga2V5Ci0KLVRyYWNrIHRoZSBjdXJyZW50IEdUSyBhbmQgSUdUSyB0aGF0IGlzIGluIHVzZSBhbmQgd2hlbiByZWNlaXZpbmcgYQotKHBvc3NpYmx5IHJldHJhbnNtaXR0ZWQpIEdyb3VwIE1lc3NhZ2UgMSBvciBXTk0tU2xlZXAgTW9kZSBSZXNwb25zZSwgZG8KLW5vdCBpbnN0YWxsIHRoZSBnaXZlbiBrZXkgaWYgaXQgaXMgYWxyZWFkeSBpbiB1c2UuIFRoaXMgcHJldmVudHMgYW4KLWF0dGFja2VyIGZyb20gdHJ5aW5nIHRvIHRyaWNrIHRoZSBjbGllbnQgaW50byByZXNldHRpbmcgb3IgbG93ZXJpbmcgdGhlCi1zZXF1ZW5jZSBjb3VudGVyIGFzc29jaWF0ZWQgdG8gdGhlIGdyb3VwIGtleS4KLQotU2lnbmVkLW9mZi1ieTogTWF0aHkgVmFuaG9lZiA8TWF0aHkuVmFuaG9lZkBjcy5rdWxldXZlbi5iZT4KLS0tLQotIHNyYy9jb21tb24vd3BhX2NvbW1vbi5oIHwgIDExICsrKysrCi0gc3JjL3Jzbl9zdXBwL3dwYS5jICAgICAgfCAxMTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL3Jzbl9zdXBwL3dwYV9pLmggICAgfCAgIDQgKysKLSAzIGZpbGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi93cGFfY29tbW9uLmggYi9zcmMvY29tbW9uL3dwYV9jb21tb24uaAotaW5kZXggYWYxZDBmMC4uZDIwMDI4NSAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vd3BhX2NvbW1vbi5oCi0rKysgYi9zcmMvY29tbW9uL3dwYV9jb21tb24uaAotQEAgLTIxNyw2ICsyMTcsMTcgQEAgc3RydWN0IHdwYV9wdGsgewotIAlzaXplX3QgdGtfbGVuOwotIH07Ci0gCi0rc3RydWN0IHdwYV9ndGsgewotKwl1OCBndGtbV1BBX0dUS19NQVhfTEVOXTsKLSsJc2l6ZV90IGd0a19sZW47Ci0rfTsKLSsKLSsjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKLStzdHJ1Y3Qgd3BhX2lndGsgewotKwl1OCBpZ3RrW1dQQV9JR1RLX01BWF9MRU5dOwotKwlzaXplX3QgaWd0a19sZW47Ci0rfTsKLSsjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVcgKi8KLSAKLSAvKiBXUEEgSUUgdmVyc2lvbiAxCi0gICogMDAtNTAtZjI6MSAoT1VJOk9VSSB0eXBlKQotZGlmZiAtLWdpdCBhL3NyYy9yc25fc3VwcC93cGEuYyBiL3NyYy9yc25fc3VwcC93cGEuYwotaW5kZXggM2M0Nzg3OS4uOTViZDdiZSAxMDA2NDQKLS0tLSBhL3NyYy9yc25fc3VwcC93cGEuYwotKysrIGIvc3JjL3Jzbl9zdXBwL3dwYS5jCi1AQCAtNzE0LDYgKzcxNCwxNSBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHN0cnVjdCB3cGFfc20gKnNtLAotIAljb25zdCB1OCAqX2d0ayA9IGdkLT5ndGs7Ci0gCXU4IGd0a19idWZbMzJdOwotIAotKwkvKiBEZXRlY3QgcG9zc2libGUga2V5IHJlaW5zdGFsbGF0aW9uICovCi0rCWlmIChzbS0+Z3RrLmd0a19sZW4gPT0gKHNpemVfdCkgZ2QtPmd0a19sZW4gJiYKLSsJICAgIG9zX21lbWNtcChzbS0+Z3RrLmd0aywgZ2QtPmd0aywgc20tPmd0ay5ndGtfbGVuKSA9PSAwKSB7Ci0rCQl3cGFfZGJnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19ERUJVRywKLSsJCQkiV1BBOiBOb3QgcmVpbnN0YWxsaW5nIGFscmVhZHkgaW4tdXNlIEdUSyB0byB0aGUgZHJpdmVyIChrZXlpZHg9JWQgdHg9JWQgbGVuPSVkKSIsCi0rCQkJZ2QtPmtleWlkeCwgZ2QtPnR4LCBnZC0+Z3RrX2xlbik7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwotIAl3cGFfaGV4ZHVtcF9rZXkoTVNHX0RFQlVHLCAiV1BBOiBHcm91cCBLZXkiLCBnZC0+Z3RrLCBnZC0+Z3RrX2xlbik7Ci0gCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAotIAkJIldQQTogSW5zdGFsbGluZyBHVEsgdG8gdGhlIGRyaXZlciAoa2V5aWR4PSVkIHR4PSVkIGxlbj0lZCkiLAotQEAgLTc0OCw2ICs3NTcsOSBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHN0cnVjdCB3cGFfc20gKnNtLAotIAl9Ci0gCW9zX21lbXNldChndGtfYnVmLCAwLCBzaXplb2YoZ3RrX2J1ZikpOwotIAotKwlzbS0+Z3RrLmd0a19sZW4gPSBnZC0+Z3RrX2xlbjsKLSsJb3NfbWVtY3B5KHNtLT5ndGsuZ3RrLCBnZC0+Z3RrLCBzbS0+Z3RrLmd0a19sZW4pOwotKwotIAlyZXR1cm4gMDsKLSB9Ci0gCi1AQCAtODU0LDYgKzg2Niw0OCBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X3BhaXJ3aXNlX2d0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKLSB9Ci0gCi0gCi0rI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCi0rc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2lndGsoc3RydWN0IHdwYV9zbSAqc20sCi0rCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICppZ3RrKQotK3sKLSsJc2l6ZV90IGxlbiA9IHdwYV9jaXBoZXJfa2V5X2xlbihzbS0+bWdtdF9ncm91cF9jaXBoZXIpOwotKwl1MTYga2V5aWR4ID0gV1BBX0dFVF9MRTE2KGlndGstPmtleWlkKTsKLSsKLSsJLyogRGV0ZWN0IHBvc3NpYmxlIGtleSByZWluc3RhbGxhdGlvbiAqLwotKwlpZiAoc20tPmlndGsuaWd0a19sZW4gPT0gbGVuICYmCi0rCSAgICBvc19tZW1jbXAoc20tPmlndGsuaWd0aywgaWd0ay0+aWd0aywgc20tPmlndGsuaWd0a19sZW4pID09IDApIHsKLSsJCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAotKwkJCSJXUEE6IE5vdCByZWluc3RhbGxpbmcgYWxyZWFkeSBpbi11c2UgSUdUSyB0byB0aGUgZHJpdmVyIChrZXlpZHg9JWQpIiwKLSsJCQlrZXlpZHgpOwotKwkJcmV0dXJuICAwOwotKwl9Ci0rCi0rCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAotKwkJIldQQTogSUdUSyBrZXlpZCAlZCBwbiAlMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAotKwkJa2V5aWR4LCBNQUMyU1RSKGlndGstPnBuKSk7Ci0rCXdwYV9oZXhkdW1wX2tleShNU0dfREVCVUcsICJXUEE6IElHVEsiLCBpZ3RrLT5pZ3RrLCBsZW4pOwotKwlpZiAoa2V5aWR4ID4gNDA5NSkgewotKwkJd3BhX21zZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfV0FSTklORywKLSsJCQkiV1BBOiBJbnZhbGlkIElHVEsgS2V5SUQgJWQiLCBrZXlpZHgpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCWlmICh3cGFfc21fc2V0X2tleShzbSwgd3BhX2NpcGhlcl90b19hbGcoc20tPm1nbXRfZ3JvdXBfY2lwaGVyKSwKLSsJCQkgICBicm9hZGNhc3RfZXRoZXJfYWRkciwKLSsJCQkgICBrZXlpZHgsIDAsIGlndGstPnBuLCBzaXplb2YoaWd0ay0+cG4pLAotKwkJCSAgIGlndGstPmlndGssIGxlbikgPCAwKSB7Ci0rCQl3cGFfbXNnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19XQVJOSU5HLAotKwkJCSJXUEE6IEZhaWxlZCB0byBjb25maWd1cmUgSUdUSyB0byB0aGUgZHJpdmVyIik7Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSsJc20tPmlndGsuaWd0a19sZW4gPSBsZW47Ci0rCW9zX21lbWNweShzbS0+aWd0ay5pZ3RrLCBpZ3RrLT5pZ3RrLCBzbS0+aWd0ay5pZ3RrX2xlbik7Ci0rCi0rCXJldHVybiAwOwotK30KLSsjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVcgKi8KLSsKLSsKLSBzdGF0aWMgaW50IGllZWU4MDIxMXdfc2V0X2tleXMoc3RydWN0IHdwYV9zbSAqc20sCi0gCQkJICAgICAgIHN0cnVjdCB3cGFfZWFwb2xfaWVfcGFyc2UgKmllKQotIHsKLUBAIC04NjQsMzAgKzkxOCwxNCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMXdfc2V0X2tleXMoc3RydWN0IHdwYV9zbSAqc20sCi0gCWlmIChpZS0+aWd0aykgewotIAkJc2l6ZV90IGxlbjsKLSAJCWNvbnN0IHN0cnVjdCB3cGFfaWd0a19rZGUgKmlndGs7Ci0tCQl1MTYga2V5aWR4OwotKwotIAkJbGVuID0gd3BhX2NpcGhlcl9rZXlfbGVuKHNtLT5tZ210X2dyb3VwX2NpcGhlcik7Ci0gCQlpZiAoaWUtPmlndGtfbGVuICE9IFdQQV9JR1RLX0tERV9QUkVGSVhfTEVOICsgbGVuKQotIAkJCXJldHVybiAtMTsKLSsKLSAJCWlndGsgPSAoY29uc3Qgc3RydWN0IHdwYV9pZ3RrX2tkZSAqKSBpZS0+aWd0azsKLS0JCWtleWlkeCA9IFdQQV9HRVRfTEUxNihpZ3RrLT5rZXlpZCk7Ci0tCQl3cGFfZGJnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19ERUJVRywgIldQQTogSUdUSyBrZXlpZCAlZCAiCi0tCQkJInBuICUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCIsCi0tCQkJa2V5aWR4LCBNQUMyU1RSKGlndGstPnBuKSk7Ci0tCQl3cGFfaGV4ZHVtcF9rZXkoTVNHX0RFQlVHLCAiV1BBOiBJR1RLIiwKLS0JCQkJaWd0ay0+aWd0aywgbGVuKTsKLS0JCWlmIChrZXlpZHggPiA0MDk1KSB7Ci0tCQkJd3BhX21zZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfV0FSTklORywKLS0JCQkJIldQQTogSW52YWxpZCBJR1RLIEtleUlEICVkIiwga2V5aWR4KTsKLS0JCQlyZXR1cm4gLTE7Ci0tCQl9Ci0tCQlpZiAod3BhX3NtX3NldF9rZXkoc20sIHdwYV9jaXBoZXJfdG9fYWxnKHNtLT5tZ210X2dyb3VwX2NpcGhlciksCi0tCQkJCSAgIGJyb2FkY2FzdF9ldGhlcl9hZGRyLAotLQkJCQkgICBrZXlpZHgsIDAsIGlndGstPnBuLCBzaXplb2YoaWd0ay0+cG4pLAotLQkJCQkgICBpZ3RrLT5pZ3RrLCBsZW4pIDwgMCkgewotLQkJCXdwYV9tc2coc20tPmN0eC0+bXNnX2N0eCwgTVNHX1dBUk5JTkcsCi0tCQkJCSJXUEE6IEZhaWxlZCB0byBjb25maWd1cmUgSUdUSyB0byB0aGUgZHJpdmVyIik7Ci0rCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9pZ3RrKHNtLCBpZ3RrKSA8IDApCi0gCQkJcmV0dXJuIC0xOwotLQkJfQotIAl9Ci0gCi0gCXJldHVybiAwOwotQEAgLTIzMDcsNyArMjM0NSw3IEBAIHZvaWQgd3BhX3NtX2RlaW5pdChzdHJ1Y3Qgd3BhX3NtICpzbSkKLSAgKi8KLSB2b2lkIHdwYV9zbV9ub3RpZnlfYXNzb2Moc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICpic3NpZCkKLSB7Ci0tCWludCBjbGVhcl9wdGsgPSAxOwotKwlpbnQgY2xlYXJfa2V5cyA9IDE7Ci0gCi0gCWlmIChzbSA9PSBOVUxMKQotIAkJcmV0dXJuOwotQEAgLTIzMzMsMTEgKzIzNzEsMTEgQEAgdm9pZCB3cGFfc21fbm90aWZ5X2Fzc29jKHN0cnVjdCB3cGFfc20gKnNtLCBjb25zdCB1OCAqYnNzaWQpCi0gCQkvKiBQcmVwYXJlIGZvciB0aGUgbmV4dCB0cmFuc2l0aW9uICovCi0gCQl3cGFfZnRfcHJlcGFyZV9hdXRoX3JlcXVlc3Qoc20sIE5VTEwpOwotIAotLQkJY2xlYXJfcHRrID0gMDsKLSsJCWNsZWFyX2tleXMgPSAwOwotIAl9Ci0gI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFSICovCi0gCi0tCWlmIChjbGVhcl9wdGspIHsKLSsJaWYgKGNsZWFyX2tleXMpIHsKLSAJCS8qCi0gCQkgKiBJRUVFIDgwMi4xMSwgOC40LjEwOiBEZWxldGUgUFRLIFNBIG9uIChyZSlhc3NvY2lhdGlvbiBpZgotIAkJICogdGhpcyBpcyBub3QgcGFydCBvZiBhIEZhc3QgQlNTIFRyYW5zaXRpb24uCi1AQCAtMjM0Nyw2ICsyMzg1LDEwIEBAIHZvaWQgd3BhX3NtX25vdGlmeV9hc3NvYyhzdHJ1Y3Qgd3BhX3NtICpzbSwgY29uc3QgdTggKmJzc2lkKQotIAkJb3NfbWVtc2V0KCZzbS0+cHRrLCAwLCBzaXplb2Yoc20tPnB0aykpOwotIAkJc20tPnRwdGtfc2V0ID0gMDsKLSAJCW9zX21lbXNldCgmc20tPnRwdGssIDAsIHNpemVvZihzbS0+dHB0aykpOwotKwkJb3NfbWVtc2V0KCZzbS0+Z3RrLCAwLCBzaXplb2Yoc20tPmd0aykpOwotKyNpZmRlZiBDT05GSUdfSUVFRTgwMjExVwotKwkJb3NfbWVtc2V0KCZzbS0+aWd0aywgMCwgc2l6ZW9mKHNtLT5pZ3RrKSk7Ci0rI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCi0gCX0KLSAKLSAjaWZkZWYgQ09ORklHX1RETFMKLUBAIC0yODc3LDYgKzI5MTksMTAgQEAgdm9pZCB3cGFfc21fZHJvcF9zYShzdHJ1Y3Qgd3BhX3NtICpzbSkKLSAJb3NfbWVtc2V0KHNtLT5wbWssIDAsIHNpemVvZihzbS0+cG1rKSk7Ci0gCW9zX21lbXNldCgmc20tPnB0aywgMCwgc2l6ZW9mKHNtLT5wdGspKTsKLSAJb3NfbWVtc2V0KCZzbS0+dHB0aywgMCwgc2l6ZW9mKHNtLT50cHRrKSk7Ci0rCW9zX21lbXNldCgmc20tPmd0aywgMCwgc2l6ZW9mKHNtLT5ndGspKTsKLSsjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKLSsJb3NfbWVtc2V0KCZzbS0+aWd0aywgMCwgc2l6ZW9mKHNtLT5pZ3RrKSk7Ci0rI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCi0gI2lmZGVmIENPTkZJR19JRUVFODAyMTFSCi0gCW9zX21lbXNldChzbS0+eHhrZXksIDAsIHNpemVvZihzbS0+eHhrZXkpKTsKLSAJb3NfbWVtc2V0KHNtLT5wbWtfcjAsIDAsIHNpemVvZihzbS0+cG1rX3IwKSk7Ci1AQCAtMjk0OSwyOSArMjk5NSwxMSBAQCBpbnQgd3BhX3dubXNsZWVwX2luc3RhbGxfa2V5KHN0cnVjdCB3cGFfc20gKnNtLCB1OCBzdWJlbGVtX2lkLCB1OCAqYnVmKQotIAkJb3NfbWVtc2V0KCZnZCwgMCwgc2l6ZW9mKGdkKSk7Ci0gI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCi0gCX0gZWxzZSBpZiAoc3ViZWxlbV9pZCA9PSBXTk1fU0xFRVBfU1VCRUxFTV9JR1RLKSB7Ci0tCQlzdHJ1Y3Qgd3BhX2lndGtfa2RlIGlnZDsKLS0JCXUxNiBrZXlpZHg7Ci0tCi0tCQlvc19tZW1zZXQoJmlnZCwgMCwgc2l6ZW9mKGlnZCkpOwotLQkJa2V5bGVuID0gd3BhX2NpcGhlcl9rZXlfbGVuKHNtLT5tZ210X2dyb3VwX2NpcGhlcik7Ci0tCQlvc19tZW1jcHkoaWdkLmtleWlkLCBidWYgKyAyLCAyKTsKLS0JCW9zX21lbWNweShpZ2QucG4sIGJ1ZiArIDQsIDYpOwotLQotLQkJa2V5aWR4ID0gV1BBX0dFVF9MRTE2KGlnZC5rZXlpZCk7Ci0tCQlvc19tZW1jcHkoaWdkLmlndGssIGJ1ZiArIDEwLCBrZXlsZW4pOwotLQotLQkJd3BhX2hleGR1bXBfa2V5KE1TR19ERUJVRywgIkluc3RhbGwgSUdUSyAoV05NIFNMRUVQKSIsCi0tCQkJCWlnZC5pZ3RrLCBrZXlsZW4pOwotLQkJaWYgKHdwYV9zbV9zZXRfa2V5KHNtLCB3cGFfY2lwaGVyX3RvX2FsZyhzbS0+bWdtdF9ncm91cF9jaXBoZXIpLAotLQkJCQkgICBicm9hZGNhc3RfZXRoZXJfYWRkciwKLS0JCQkJICAga2V5aWR4LCAwLCBpZ2QucG4sIHNpemVvZihpZ2QucG4pLAotLQkJCQkgICBpZ2QuaWd0aywga2V5bGVuKSA8IDApIHsKLS0JCQl3cGFfcHJpbnRmKE1TR19ERUJVRywgIkZhaWxlZCB0byBpbnN0YWxsIHRoZSBJR1RLIGluICIKLS0JCQkJICAgIldOTSBtb2RlIik7Ci0tCQkJb3NfbWVtc2V0KCZpZ2QsIDAsIHNpemVvZihpZ2QpKTsKLSsJCWNvbnN0IHN0cnVjdCB3cGFfaWd0a19rZGUgKmlndGs7Ci0rCi0rCQlpZ3RrID0gKGNvbnN0IHN0cnVjdCB3cGFfaWd0a19rZGUgKikgKGJ1ZiArIDIpOwotKwkJaWYgKHdwYV9zdXBwbGljYW50X2luc3RhbGxfaWd0ayhzbSwgaWd0aykgPCAwKQotIAkJCXJldHVybiAtMTsKLS0JCX0KLS0JCW9zX21lbXNldCgmaWdkLCAwLCBzaXplb2YoaWdkKSk7Ci0gI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCi0gCX0gZWxzZSB7Ci0gCQl3cGFfcHJpbnRmKE1TR19ERUJVRywgIlVua25vd24gZWxlbWVudCBpZCIpOwotZGlmZiAtLWdpdCBhL3NyYy9yc25fc3VwcC93cGFfaS5oIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKLWluZGV4IGY2NTNiYTYuLmFmYzllMzcgMTAwNjQ0Ci0tLS0gYS9zcmMvcnNuX3N1cHAvd3BhX2kuaAotKysrIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKLUBAIC0zMSw2ICszMSwxMCBAQCBzdHJ1Y3Qgd3BhX3NtIHsKLSAJdTggcnhfcmVwbGF5X2NvdW50ZXJbV1BBX1JFUExBWV9DT1VOVEVSX0xFTl07Ci0gCWludCByeF9yZXBsYXlfY291bnRlcl9zZXQ7Ci0gCXU4IHJlcXVlc3RfY291bnRlcltXUEFfUkVQTEFZX0NPVU5URVJfTEVOXTsKLSsJc3RydWN0IHdwYV9ndGsgZ3RrOwotKyNpZmRlZiBDT05GSUdfSUVFRTgwMjExVwotKwlzdHJ1Y3Qgd3BhX2lndGsgaWd0azsKLSsjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVcgKi8KLSAKLSAJc3RydWN0IGVhcG9sX3NtICplYXBvbDsgLyogRUFQT0wgc3RhdGUgbWFjaGluZSBmcm9tIHVwcGVyIGxldmVsIGNvZGUgKi8KLSAKLS0tIAotMi43LjQKLQotRnJvbSA4MjgwMjk0ZTc0ODQ2ZWEzNDIzODlhMGNkMTcyMTUwNTBmYTVhZmU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm91bmkgTWFsaW5lbiA8akB3MS5maT4KLURhdGU6IFN1biwgMSBPY3QgMjAxNyAxMjoxMjoyNCArMDMwMAotU3ViamVjdDogW1BBVENIIDMvOF0gRXh0ZW5kIHByb3RlY3Rpb24gb2YgR1RLL0lHVEsgcmVpbnN0YWxsYXRpb24gb2YgV05NLVNsZWVwCi0gTW9kZSBjYXNlcwotCi1UaGlzIGV4dGVuZHMgdGhlIHByb3RlY3Rpb24gdG8gdHJhY2sgbGFzdCBjb25maWd1cmVkIEdUSy9JR1RLIHZhbHVlCi1zZXBhcmF0ZWx5IGZyb20gRUFQT0wtS2V5IGZyYW1lcyBhbmQgV05NLVNsZWVwIE1vZGUgZnJhbWVzIHRvIGNvdmVyIGEKLWNvcm5lciBjYXNlIHdoZXJlIHRoZXNlIHR3byBkaWZmZXJlbnQgbWVjaGFuaXNtcyBtYXkgZ2V0IHVzZWQgd2hlbiB0aGUKLUdUSy9JR1RLIGhhcyBjaGFuZ2VkIGFuZCB0cmFja2luZyBhIHNpbmdsZSB2YWx1ZSBpcyBub3Qgc3VmZmljaWVudCB0bwotZGV0ZWN0IGEgcG9zc2libGUga2V5IHJlY29uZmlndXJhdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogSm91bmkgTWFsaW5lbiA8akB3MS5maT4KLS0tLQotIHNyYy9yc25fc3VwcC93cGEuYyAgIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQotIHNyYy9yc25fc3VwcC93cGFfaS5oIHwgIDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Jzbl9zdXBwL3dwYS5jIGIvc3JjL3Jzbl9zdXBwL3dwYS5jCi1pbmRleCA5NWJkN2JlLi43YTJjNjhkIDEwMDY0NAotLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYS5jCi0rKysgYi9zcmMvcnNuX3N1cHAvd3BhLmMKLUBAIC03MDksMTQgKzcwOSwxNyBAQCBzdHJ1Y3Qgd3BhX2d0a19kYXRhIHsKLSAKLSBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHN0cnVjdCB3cGFfc20gKnNtLAotIAkJCQkgICAgICBjb25zdCBzdHJ1Y3Qgd3BhX2d0a19kYXRhICpnZCwKLS0JCQkJICAgICAgY29uc3QgdTggKmtleV9yc2MpCi0rCQkJCSAgICAgIGNvbnN0IHU4ICprZXlfcnNjLCBpbnQgd25tX3NsZWVwKQotIHsKLSAJY29uc3QgdTggKl9ndGsgPSBnZC0+Z3RrOwotIAl1OCBndGtfYnVmWzMyXTsKLSAKLSAJLyogRGV0ZWN0IHBvc3NpYmxlIGtleSByZWluc3RhbGxhdGlvbiAqLwotLQlpZiAoc20tPmd0ay5ndGtfbGVuID09IChzaXplX3QpIGdkLT5ndGtfbGVuICYmCi0tCSAgICBvc19tZW1jbXAoc20tPmd0ay5ndGssIGdkLT5ndGssIHNtLT5ndGsuZ3RrX2xlbikgPT0gMCkgewotKwlpZiAoKHNtLT5ndGsuZ3RrX2xlbiA9PSAoc2l6ZV90KSBnZC0+Z3RrX2xlbiAmJgotKwkgICAgIG9zX21lbWNtcChzbS0+Z3RrLmd0aywgZ2QtPmd0aywgc20tPmd0ay5ndGtfbGVuKSA9PSAwKSB8fAotKwkgICAgKHNtLT5ndGtfd25tX3NsZWVwLmd0a19sZW4gPT0gKHNpemVfdCkgZ2QtPmd0a19sZW4gJiYKLSsJICAgICBvc19tZW1jbXAoc20tPmd0a193bm1fc2xlZXAuZ3RrLCBnZC0+Z3RrLAotKwkJICAgICAgIHNtLT5ndGtfd25tX3NsZWVwLmd0a19sZW4pID09IDApKSB7Ci0gCQl3cGFfZGJnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19ERUJVRywKLSAJCQkiV1BBOiBOb3QgcmVpbnN0YWxsaW5nIGFscmVhZHkgaW4tdXNlIEdUSyB0byB0aGUgZHJpdmVyIChrZXlpZHg9JWQgdHg9JWQgbGVuPSVkKSIsCi0gCQkJZ2QtPmtleWlkeCwgZ2QtPnR4LCBnZC0+Z3RrX2xlbik7Ci1AQCAtNzU3LDggKzc2MCwxNCBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHN0cnVjdCB3cGFfc20gKnNtLAotIAl9Ci0gCW9zX21lbXNldChndGtfYnVmLCAwLCBzaXplb2YoZ3RrX2J1ZikpOwotIAotLQlzbS0+Z3RrLmd0a19sZW4gPSBnZC0+Z3RrX2xlbjsKLS0Jb3NfbWVtY3B5KHNtLT5ndGsuZ3RrLCBnZC0+Z3RrLCBzbS0+Z3RrLmd0a19sZW4pOwotKwlpZiAod25tX3NsZWVwKSB7Ci0rCQlzbS0+Z3RrX3dubV9zbGVlcC5ndGtfbGVuID0gZ2QtPmd0a19sZW47Ci0rCQlvc19tZW1jcHkoc20tPmd0a193bm1fc2xlZXAuZ3RrLCBnZC0+Z3RrLAotKwkJCSAgc20tPmd0a193bm1fc2xlZXAuZ3RrX2xlbik7Ci0rCX0gZWxzZSB7Ci0rCQlzbS0+Z3RrLmd0a19sZW4gPSBnZC0+Z3RrX2xlbjsKLSsJCW9zX21lbWNweShzbS0+Z3RrLmd0aywgZ2QtPmd0aywgc20tPmd0ay5ndGtfbGVuKTsKLSsJfQotIAotIAlyZXR1cm4gMDsKLSB9Ci1AQCAtODUyLDcgKzg2MSw3IEBAIHN0YXRpYyBpbnQgd3BhX3N1cHBsaWNhbnRfcGFpcndpc2VfZ3RrKHN0cnVjdCB3cGFfc20gKnNtLAotIAkgICAgKHdwYV9zdXBwbGljYW50X2NoZWNrX2dyb3VwX2NpcGhlcihzbSwgc20tPmdyb3VwX2NpcGhlciwKLSAJCQkJCSAgICAgICBndGtfbGVuLCBndGtfbGVuLAotIAkJCQkJICAgICAgICZnZC5rZXlfcnNjX2xlbiwgJmdkLmFsZykgfHwKLS0JICAgICB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzbSwgJmdkLCBrZXlfcnNjKSkpIHsKLSsJICAgICB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzbSwgJmdkLCBrZXlfcnNjLCAwKSkpIHsKLSAJCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAotIAkJCSJSU046IEZhaWxlZCB0byBpbnN0YWxsIEdUSyIpOwotIAkJb3NfbWVtc2V0KCZnZCwgMCwgc2l6ZW9mKGdkKSk7Ci1AQCAtODY4LDE0ICs4NzcsMTggQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9wYWlyd2lzZV9ndGsoc3RydWN0IHdwYV9zbSAqc20sCi0gCi0gI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCi0gc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2lndGsoc3RydWN0IHdwYV9zbSAqc20sCi0tCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICppZ3RrKQotKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IHdwYV9pZ3RrX2tkZSAqaWd0aywKLSsJCQkJICAgICAgIGludCB3bm1fc2xlZXApCi0gewotIAlzaXplX3QgbGVuID0gd3BhX2NpcGhlcl9rZXlfbGVuKHNtLT5tZ210X2dyb3VwX2NpcGhlcik7Ci0gCXUxNiBrZXlpZHggPSBXUEFfR0VUX0xFMTYoaWd0ay0+a2V5aWQpOwotIAotIAkvKiBEZXRlY3QgcG9zc2libGUga2V5IHJlaW5zdGFsbGF0aW9uICovCi0tCWlmIChzbS0+aWd0ay5pZ3RrX2xlbiA9PSBsZW4gJiYKLS0JICAgIG9zX21lbWNtcChzbS0+aWd0ay5pZ3RrLCBpZ3RrLT5pZ3RrLCBzbS0+aWd0ay5pZ3RrX2xlbikgPT0gMCkgewotKwlpZiAoKHNtLT5pZ3RrLmlndGtfbGVuID09IGxlbiAmJgotKwkgICAgIG9zX21lbWNtcChzbS0+aWd0ay5pZ3RrLCBpZ3RrLT5pZ3RrLCBzbS0+aWd0ay5pZ3RrX2xlbikgPT0gMCkgfHwKLSsJICAgIChzbS0+aWd0a193bm1fc2xlZXAuaWd0a19sZW4gPT0gbGVuICYmCi0rCSAgICAgb3NfbWVtY21wKHNtLT5pZ3RrX3dubV9zbGVlcC5pZ3RrLCBpZ3RrLT5pZ3RrLAotKwkJICAgICAgIHNtLT5pZ3RrX3dubV9zbGVlcC5pZ3RrX2xlbikgPT0gMCkpIHsKLSAJCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAotIAkJCSJXUEE6IE5vdCByZWluc3RhbGxpbmcgYWxyZWFkeSBpbi11c2UgSUdUSyB0byB0aGUgZHJpdmVyIChrZXlpZHg9JWQpIiwKLSAJCQlrZXlpZHgpOwotQEAgLTkwMCw4ICs5MTMsMTQgQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2lndGsoc3RydWN0IHdwYV9zbSAqc20sCi0gCQlyZXR1cm4gLTE7Ci0gCX0KLSAKLS0Jc20tPmlndGsuaWd0a19sZW4gPSBsZW47Ci0tCW9zX21lbWNweShzbS0+aWd0ay5pZ3RrLCBpZ3RrLT5pZ3RrLCBzbS0+aWd0ay5pZ3RrX2xlbik7Ci0rCWlmICh3bm1fc2xlZXApIHsKLSsJCXNtLT5pZ3RrX3dubV9zbGVlcC5pZ3RrX2xlbiA9IGxlbjsKLSsJCW9zX21lbWNweShzbS0+aWd0a193bm1fc2xlZXAuaWd0aywgaWd0ay0+aWd0aywKLSsJCQkgIHNtLT5pZ3RrX3dubV9zbGVlcC5pZ3RrX2xlbik7Ci0rCX0gZWxzZSB7Ci0rCQlzbS0+aWd0ay5pZ3RrX2xlbiA9IGxlbjsKLSsJCW9zX21lbWNweShzbS0+aWd0ay5pZ3RrLCBpZ3RrLT5pZ3RrLCBzbS0+aWd0ay5pZ3RrX2xlbik7Ci0rCX0KLSAKLSAJcmV0dXJuIDA7Ci0gfQotQEAgLTkyNCw3ICs5NDMsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMXdfc2V0X2tleXMoc3RydWN0IHdwYV9zbSAqc20sCi0gCQkJcmV0dXJuIC0xOwotIAotIAkJaWd0ayA9IChjb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICopIGllLT5pZ3RrOwotLQkJaWYgKHdwYV9zdXBwbGljYW50X2luc3RhbGxfaWd0ayhzbSwgaWd0aykgPCAwKQotKwkJaWYgKHdwYV9zdXBwbGljYW50X2luc3RhbGxfaWd0ayhzbSwgaWd0aywgMCkgPCAwKQotIAkJCXJldHVybiAtMTsKLSAJfQotIAotQEAgLTE1NzQsNyArMTU5Myw3IEBAIHN0YXRpYyB2b2lkIHdwYV9zdXBwbGljYW50X3Byb2Nlc3NfMV9vZl8yKHN0cnVjdCB3cGFfc20gKnNtLAotIAlpZiAod3BhX3N1cHBsaWNhbnRfcnNjX3JlbGF4YXRpb24oc20sIGtleS0+a2V5X3JzYykpCi0gCQlrZXlfcnNjID0gbnVsbF9yc2M7Ci0gCi0tCWlmICh3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzbSwgJmdkLCBrZXlfcnNjKSB8fAotKwlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9ndGsoc20sICZnZCwga2V5X3JzYywgMCkgfHwKLSAJICAgIHdwYV9zdXBwbGljYW50X3NlbmRfMl9vZl8yKHNtLCBrZXksIHZlciwga2V5X2luZm8pIDwgMCkKLSAJCWdvdG8gZmFpbGVkOwotIAlvc19tZW1zZXQoJmdkLCAwLCBzaXplb2YoZ2QpKTsKLUBAIC0yMzg2LDggKzI0MDUsMTAgQEAgdm9pZCB3cGFfc21fbm90aWZ5X2Fzc29jKHN0cnVjdCB3cGFfc20gKnNtLCBjb25zdCB1OCAqYnNzaWQpCi0gCQlzbS0+dHB0a19zZXQgPSAwOwotIAkJb3NfbWVtc2V0KCZzbS0+dHB0aywgMCwgc2l6ZW9mKHNtLT50cHRrKSk7Ci0gCQlvc19tZW1zZXQoJnNtLT5ndGssIDAsIHNpemVvZihzbS0+Z3RrKSk7Ci0rCQlvc19tZW1zZXQoJnNtLT5ndGtfd25tX3NsZWVwLCAwLCBzaXplb2Yoc20tPmd0a193bm1fc2xlZXApKTsKLSAjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKLSAJCW9zX21lbXNldCgmc20tPmlndGssIDAsIHNpemVvZihzbS0+aWd0aykpOwotKwkJb3NfbWVtc2V0KCZzbS0+aWd0a193bm1fc2xlZXAsIDAsIHNpemVvZihzbS0+aWd0a193bm1fc2xlZXApKTsKLSAjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVcgKi8KLSAJfQotIAotQEAgLTI5MjAsOCArMjk0MSwxMCBAQCB2b2lkIHdwYV9zbV9kcm9wX3NhKHN0cnVjdCB3cGFfc20gKnNtKQotIAlvc19tZW1zZXQoJnNtLT5wdGssIDAsIHNpemVvZihzbS0+cHRrKSk7Ci0gCW9zX21lbXNldCgmc20tPnRwdGssIDAsIHNpemVvZihzbS0+dHB0aykpOwotIAlvc19tZW1zZXQoJnNtLT5ndGssIDAsIHNpemVvZihzbS0+Z3RrKSk7Ci0rCW9zX21lbXNldCgmc20tPmd0a193bm1fc2xlZXAsIDAsIHNpemVvZihzbS0+Z3RrX3dubV9zbGVlcCkpOwotICNpZmRlZiBDT05GSUdfSUVFRTgwMjExVwotIAlvc19tZW1zZXQoJnNtLT5pZ3RrLCAwLCBzaXplb2Yoc20tPmlndGspKTsKLSsJb3NfbWVtc2V0KCZzbS0+aWd0a193bm1fc2xlZXAsIDAsIHNpemVvZihzbS0+aWd0a193bm1fc2xlZXApKTsKLSAjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVcgKi8KLSAjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVIKLSAJb3NfbWVtc2V0KHNtLT54eGtleSwgMCwgc2l6ZW9mKHNtLT54eGtleSkpOwotQEAgLTI5ODYsNyArMzAwOSw3IEBAIGludCB3cGFfd25tc2xlZXBfaW5zdGFsbF9rZXkoc3RydWN0IHdwYV9zbSAqc20sIHU4IHN1YmVsZW1faWQsIHU4ICpidWYpCi0gCi0gCQl3cGFfaGV4ZHVtcF9rZXkoTVNHX0RFQlVHLCAiSW5zdGFsbCBHVEsgKFdOTSBTTEVFUCkiLAotIAkJCQlnZC5ndGssIGdkLmd0a19sZW4pOwotLQkJaWYgKHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHNtLCAmZ2QsIGtleV9yc2MpKSB7Ci0rCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9ndGsoc20sICZnZCwga2V5X3JzYywgMSkpIHsKLSAJCQlvc19tZW1zZXQoJmdkLCAwLCBzaXplb2YoZ2QpKTsKLSAJCQl3cGFfcHJpbnRmKE1TR19ERUJVRywgIkZhaWxlZCB0byBpbnN0YWxsIHRoZSBHVEsgaW4gIgotIAkJCQkgICAiV05NIG1vZGUiKTsKLUBAIC0yOTk4LDcgKzMwMjEsNyBAQCBpbnQgd3BhX3dubXNsZWVwX2luc3RhbGxfa2V5KHN0cnVjdCB3cGFfc20gKnNtLCB1OCBzdWJlbGVtX2lkLCB1OCAqYnVmKQotIAkJY29uc3Qgc3RydWN0IHdwYV9pZ3RrX2tkZSAqaWd0azsKLSAKLSAJCWlndGsgPSAoY29uc3Qgc3RydWN0IHdwYV9pZ3RrX2tkZSAqKSAoYnVmICsgMik7Ci0tCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9pZ3RrKHNtLCBpZ3RrKSA8IDApCi0rCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9pZ3RrKHNtLCBpZ3RrLCAxKSA8IDApCi0gCQkJcmV0dXJuIC0xOwotICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExVyAqLwotIAl9IGVsc2UgewotZGlmZiAtLWdpdCBhL3NyYy9yc25fc3VwcC93cGFfaS5oIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKLWluZGV4IGFmYzllMzcuLjlhNTQ2MzEgMTAwNjQ0Ci0tLS0gYS9zcmMvcnNuX3N1cHAvd3BhX2kuaAotKysrIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKLUBAIC0zMiw4ICszMiwxMCBAQCBzdHJ1Y3Qgd3BhX3NtIHsKLSAJaW50IHJ4X3JlcGxheV9jb3VudGVyX3NldDsKLSAJdTggcmVxdWVzdF9jb3VudGVyW1dQQV9SRVBMQVlfQ09VTlRFUl9MRU5dOwotIAlzdHJ1Y3Qgd3BhX2d0ayBndGs7Ci0rCXN0cnVjdCB3cGFfZ3RrIGd0a193bm1fc2xlZXA7Ci0gI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCi0gCXN0cnVjdCB3cGFfaWd0ayBpZ3RrOwotKwlzdHJ1Y3Qgd3BhX2lndGsgaWd0a193bm1fc2xlZXA7Ci0gI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCi0gCi0gCXN0cnVjdCBlYXBvbF9zbSAqZWFwb2w7IC8qIEVBUE9MIHN0YXRlIG1hY2hpbmUgZnJvbSB1cHBlciBsZXZlbCBjb2RlICovCi0tLSAKLTIuNy40Ci0KLUZyb20gOGY4MmJjOTRlODY5N2E5ZDQ3ZmE4Nzc0ZGZkYWFlZGUxMDg0OTEyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdGh5IFZhbmhvZWYgPE1hdGh5LlZhbmhvZWZAY3Mua3VsZXV2ZW4uYmU+Ci1EYXRlOiBGcmksIDI5IFNlcCAyMDE3IDA0OjIyOjUxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNC84XSBQcmV2ZW50IGluc3RhbGxhdGlvbiBvZiBhbiBhbGwtemVybyBUSwotCi1Qcm9wZXJseSB0cmFjayB3aGV0aGVyIGEgUFRLIGhhcyBhbHJlYWR5IGJlZW4gaW5zdGFsbGVkIHRvIHRoZSBkcml2ZXIKLWFuZCB0aGUgVEsgcGFydCBjbGVhcmVkIGZyb20gbWVtb3J5LiBUaGlzIHByZXZlbnRzIGFuIGF0dGFja2VyIGZyb20KLXRyeWluZyB0byB0cmljayB0aGUgY2xpZW50IGludG8gaW5zdGFsbGluZyBhbiBhbGwtemVybyBUSy4KLQotVGhpcyBmaXhlcyB0aGUgZWFybGllciBmaXggaW4gY29tbWl0Ci1hZDAwZDY0ZTdkODgyN2IzY2ViZDY2NWEwY2ViMDhhZGFiZjE1ZTFlICgnRml4IFRLIGNvbmZpZ3VyYXRpb24gdG8gdGhlCi1kcml2ZXIgaW4gRUFQT0wtS2V5IDMvNCByZXRyeSBjYXNlJykgd2hpY2ggZGlkIG5vdCB0YWtlIGludG8gYWNjb3VudAotcG9zc2liaWxpdHkgb2YgYW4gZXh0cmEgbWVzc2FnZSAxLzQgc2hvd2luZyB1cCBiZXR3ZWVuIHJldHJpZXMgb2YKLW1lc3NhZ2UgMy80LgotCi1TaWduZWQtb2ZmLWJ5OiBNYXRoeSBWYW5ob2VmIDxNYXRoeS5WYW5ob2VmQGNzLmt1bGV1dmVuLmJlPgotLS0tCi0gc3JjL2NvbW1vbi93cGFfY29tbW9uLmggfCAxICsKLSBzcmMvcnNuX3N1cHAvd3BhLmMgICAgICB8IDUgKystLS0KLSBzcmMvcnNuX3N1cHAvd3BhX2kuaCAgICB8IDEgLQotIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi93cGFfY29tbW9uLmggYi9zcmMvY29tbW9uL3dwYV9jb21tb24uaAotaW5kZXggZDIwMDI4NS4uMTAyMWNjYiAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vd3BhX2NvbW1vbi5oCi0rKysgYi9zcmMvY29tbW9uL3dwYV9jb21tb24uaAotQEAgLTIxNSw2ICsyMTUsNyBAQCBzdHJ1Y3Qgd3BhX3B0ayB7Ci0gCXNpemVfdCBrY2tfbGVuOwotIAlzaXplX3Qga2VrX2xlbjsKLSAJc2l6ZV90IHRrX2xlbjsKLSsJaW50IGluc3RhbGxlZDsgLyogMSBpZiBrZXkgaGFzIGFscmVhZHkgYmVlbiBpbnN0YWxsZWQgdG8gZHJpdmVyICovCi0gfTsKLSAKLSBzdHJ1Y3Qgd3BhX2d0ayB7Ci1kaWZmIC0tZ2l0IGEvc3JjL3Jzbl9zdXBwL3dwYS5jIGIvc3JjL3Jzbl9zdXBwL3dwYS5jCi1pbmRleCA3YTJjNjhkLi4wNTUwYTQxIDEwMDY0NAotLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYS5jCi0rKysgYi9zcmMvcnNuX3N1cHAvd3BhLmMKLUBAIC01MTAsNyArNTEwLDYgQEAgc3RhdGljIHZvaWQgd3BhX3N1cHBsaWNhbnRfcHJvY2Vzc18xX29mXzQoc3RydWN0IHdwYV9zbSAqc20sCi0gCQlvc19tZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7Ci0gCX0KLSAJc20tPnRwdGtfc2V0ID0gMTsKLS0Jc20tPnRrX3RvX3NldCA9IDE7Ci0gCi0gCWtkZSA9IHNtLT5hc3NvY193cGFfaWU7Ci0gCWtkZV9sZW4gPSBzbS0+YXNzb2Nfd3BhX2llX2xlbjsKLUBAIC02MTUsNyArNjE0LDcgQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX3B0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKLSAJZW51bSB3cGFfYWxnIGFsZzsKLSAJY29uc3QgdTggKmtleV9yc2M7Ci0gCi0tCWlmICghc20tPnRrX3RvX3NldCkgewotKwlpZiAoc20tPnB0ay5pbnN0YWxsZWQpIHsKLSAJCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAotIAkJCSJXUEE6IERvIG5vdCByZS1pbnN0YWxsIHNhbWUgUFRLIHRvIHRoZSBkcml2ZXIiKTsKLSAJCXJldHVybiAwOwotQEAgLTY1OSw3ICs2NTgsNyBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfcHRrKHN0cnVjdCB3cGFfc20gKnNtLAotIAotIAkvKiBUSyBpcyBub3QgbmVlZGVkIGFueW1vcmUgaW4gc3VwcGxpY2FudCAqLwotIAlvc19tZW1zZXQoc20tPnB0ay50aywgMCwgV1BBX1RLX01BWF9MRU4pOwotLQlzbS0+dGtfdG9fc2V0ID0gMDsKLSsJc20tPnB0ay5pbnN0YWxsZWQgPSAxOwotIAotIAlpZiAoc20tPndwYV9wdGtfcmVrZXkpIHsKLSAJCWVsb29wX2NhbmNlbF90aW1lb3V0KHdwYV9zbV9yZWtleV9wdGssIHNtLCBOVUxMKTsKLWRpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhX2kuaCBiL3NyYy9yc25fc3VwcC93cGFfaS5oCi1pbmRleCA5YTU0NjMxLi40MWYzNzFmIDEwMDY0NAotLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKLSsrKyBiL3NyYy9yc25fc3VwcC93cGFfaS5oCi1AQCAtMjQsNyArMjQsNiBAQCBzdHJ1Y3Qgd3BhX3NtIHsKLSAJc3RydWN0IHdwYV9wdGsgcHRrLCB0cHRrOwotIAlpbnQgcHRrX3NldCwgdHB0a19zZXQ7Ci0gCXVuc2lnbmVkIGludCBtc2dfM19vZl80X29rOjE7Ci0tCXVuc2lnbmVkIGludCB0a190b19zZXQ6MTsKLSAJdTggc25vbmNlW1dQQV9OT05DRV9MRU5dOwotIAl1OCBhbm9uY2VbV1BBX05PTkNFX0xFTl07IC8qIEFOb25jZSBmcm9tIHRoZSBsYXN0IDEvNCBtc2cgKi8KLSAJaW50IHJlbmV3X3Nub25jZTsKLS0tIAotMi43LjQKLQotRnJvbSAxMmZhYzA5YjQzN2ExZGM4YTBmMjUzZTI2NTkzNGE4YWFmNGQyZjhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm91bmkgTWFsaW5lbiA8akB3MS5maT4KLURhdGU6IFN1biwgMSBPY3QgMjAxNyAxMjozMjo1NyArMDMwMAotU3ViamVjdDogW1BBVENIIDUvOF0gRml4IFBUSyByZWtleWluZyB0byBnZW5lcmF0ZSBhIG5ldyBBTm9uY2UKLQotVGhlIEF1dGhlbnRpY2F0b3Igc3RhdGUgbWFjaGluZSBwYXRoIGZvciBQVEsgcmVrZXlpbmcgZW5kZWQgdXAgYnlwYXNzaW5nCi10aGUgQVVUSEVOVElDQVRJT04yIHN0YXRlIHdoZXJlIGEgbmV3IEFOb25jZSBpcyBnZW5lcmF0ZWQgd2hlbiBnb2luZwotZGlyZWN0bHkgdG8gdGhlIFBUS1NUQVJUIHN0YXRlIHNpbmNlIHRoZXJlIGlzIG5vIG5lZWQgdG8gdHJ5IHRvCi1kZXRlcm1pbmUgdGhlIFBNSyBhZ2FpbiBpbiBzdWNoIGEgY2FzZS4gVGhpcyBpcyBmYXIgZnJvbSBpZGVhbCBzaW5jZSB0aGUKLW5ldyBQVEsgd291bGQgZGVwZW5kIG9uIGEgbmV3IG5vbmNlIG9ubHkgZnJvbSB0aGUgc3VwcGxpY2FudC4KLQotRml4IHRoaXMgYnkgZ2VuZXJhdGluZyBhIG5ldyBBTm9uY2Ugd2hlbiBtb3ZpbmcgdG8gdGhlIFBUS1NUQVJUIHN0YXRlCi1mb3IgdGhlIHB1cnBvc2Ugb2Ygc3RhcnRpbmcgbmV3IDQtd2F5IGhhbmRzaGFrZSB0byByZWtleSBQVEsuCi0KLVNpZ25lZC1vZmYtYnk6IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+Ci0tLS0KLSBzcmMvYXAvd3BhX2F1dGguYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FwL3dwYV9hdXRoLmMgYi9zcmMvYXAvd3BhX2F1dGguYwotaW5kZXggNzA3OTcxZC4uYmYxMGNjMSAxMDA2NDQKLS0tLSBhL3NyYy9hcC93cGFfYXV0aC5jCi0rKysgYi9zcmMvYXAvd3BhX2F1dGguYwotQEAgLTE5MDEsNiArMTkwMSwyMSBAQCBTTV9TVEFURShXUEFfUFRLLCBBVVRIRU5USUNBVElPTjIpCi0gfQotIAotIAotK3N0YXRpYyBpbnQgd3BhX2F1dGhfc21fcHRrX3VwZGF0ZShzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKQotK3sKLSsJaWYgKHJhbmRvbV9nZXRfYnl0ZXMoc20tPkFOb25jZSwgV1BBX05PTkNFX0xFTikpIHsKLSsJCXdwYV9wcmludGYoTVNHX0VSUk9SLAotKwkJCSAgICJXUEE6IEZhaWxlZCB0byBnZXQgcmFuZG9tIGRhdGEgZm9yIEFOb25jZSIpOwotKwkJc20tPkRpc2Nvbm5lY3QgPSBUUlVFOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCXdwYV9oZXhkdW1wKE1TR19ERUJVRywgIldQQTogQXNzaWduIG5ldyBBTm9uY2UiLCBzbS0+QU5vbmNlLAotKwkJICAgIFdQQV9OT05DRV9MRU4pOwotKwlzbS0+VGltZW91dEN0ciA9IDA7Ci0rCXJldHVybiAwOwotK30KLSsKLSsKLSBTTV9TVEFURShXUEFfUFRLLCBJTklUUE1LKQotIHsKLSAJdTggbXNrWzIgKiBQTUtfTEVOXTsKLUBAIC0yNDU4LDkgKzI0NzMsMTIgQEAgU01fU1RFUChXUEFfUFRLKQotIAkJU01fRU5URVIoV1BBX1BUSywgQVVUSEVOVElDQVRJT04pOwotIAllbHNlIGlmIChzbS0+UmVBdXRoZW50aWNhdGlvblJlcXVlc3QpCi0gCQlTTV9FTlRFUihXUEFfUFRLLCBBVVRIRU5USUNBVElPTjIpOwotLQllbHNlIGlmIChzbS0+UFRLUmVxdWVzdCkKLS0JCVNNX0VOVEVSKFdQQV9QVEssIFBUS1NUQVJUKTsKLS0JZWxzZSBzd2l0Y2ggKHNtLT53cGFfcHRrX3N0YXRlKSB7Ci0rCWVsc2UgaWYgKHNtLT5QVEtSZXF1ZXN0KSB7Ci0rCQlpZiAod3BhX2F1dGhfc21fcHRrX3VwZGF0ZShzbSkgPCAwKQotKwkJCVNNX0VOVEVSKFdQQV9QVEssIERJU0NPTk5FQ1RFRCk7Ci0rCQllbHNlCi0rCQkJU01fRU5URVIoV1BBX1BUSywgUFRLU1RBUlQpOwotKwl9IGVsc2Ugc3dpdGNoIChzbS0+d3BhX3B0a19zdGF0ZSkgewotIAljYXNlIFdQQV9QVEtfSU5JVElBTElaRToKLSAJCWJyZWFrOwotIAljYXNlIFdQQV9QVEtfRElTQ09OTkVDVDoKLS0tIAotMi43LjQKLQotRnJvbSA2YzRiZWQ0ZjQ3ZDE5NjBlYzA0OTgxYTlkNTBlNTA3NmFlYTUyMjNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm91bmkgTWFsaW5lbiA8akB3MS5maT4KLURhdGU6IEZyaSwgMjIgU2VwIDIwMTcgMTE6MDM6MTUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCA2LzhdIFRETFM6IFJlamVjdCBUUEstVEsgcmVjb25maWd1cmF0aW9uCi0KLURvIG5vdCB0cnkgdG8gcmVjb25maWd1cmUgdGhlIHNhbWUgVFBLLVRLIHRvIHRoZSBkcml2ZXIgYWZ0ZXIgaXQgaGFzCi1iZWVuIHN1Y2Nlc3NmdWxseSBjb25maWd1cmVkLiBUaGlzIGlzIGFuIGV4cGxpY2l0IGNoZWNrIHRvIGF2b2lkIGlzc3VlcwotcmVsYXRlZCB0byByZXNldHRpbmcgdGhlIFRYL1JYIHBhY2tldCBudW1iZXIuIFRoZXJlIHdhcyBhbHJlYWR5IGEgY2hlY2sKLWZvciB0aGlzIGZvciBUUEsgTTIgKHJldHJpZXMgb2YgdGhhdCBtZXNzYWdlIGFyZSBpZ25vcmVkIGNvbXBsZXRlbHkpLCBzbwotdGhhdCBiZWhhdmlvciBkb2VzIG5vdCBnZXQgbW9kaWZpZWQuCi0KLUZvciBUUEsgTTMsIHRoZSBUUEstVEsgY291bGQgaGF2ZSBiZWVuIHJlY29uZmlndXJlZCwgYnV0IHRoYXQgd2FzCi1mb2xsb3dlZCBieSBpbW1lZGlhdGUgdGVhcmRvd24gb2YgdGhlIGxpbmsgZHVlIHRvIGFuIGlzc3VlIGluIHVwZGF0aW5nCi10aGUgU1RBIGVudHJ5LiBGdXJ0aGVybW9yZSwgZm9yIFRETFMgd2l0aCBhbnkgcmVhbCBzZWN1cml0eSAoaS5lLiwKLWlnbm9yaW5nIG9wZW4vV0VQKSwgdGhlIFRQSyBtZXNzYWdlIGV4Y2hhbmdlIGlzIHByb3RlY3RlZCBvbiB0aGUgQVAgcGF0aAotYW5kIHNpbXBsZSByZXBsYXkgYXR0YWNrcyBhcmUgbm90IGZlYXNpYmxlLgotCi1BcyBhbiBhZGRpdGlvbmFsIGNvcm5lciBjYXNlLCBtYWtlIHN1cmUgdGhlIGxvY2FsIG5vbmNlIGdldHMgdXBkYXRlZCBpZgotdGhlIHBlZXIgdXNlcyBhIHZlcnkgdW5saWtlbHkgInJhbmRvbSBub25jZSIgb2YgYWxsIHplcm9zLgotCi1TaWduZWQtb2ZmLWJ5OiBKb3VuaSBNYWxpbmVuIDxqQHcxLmZpPgotLS0tCi0gc3JjL3Jzbl9zdXBwL3RkbHMuYyB8IDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvdGRscy5jIGIvc3JjL3Jzbl9zdXBwL3RkbHMuYwotaW5kZXggZTQyNDE2OC4uOWViOTczOCAxMDA2NDQKLS0tLSBhL3NyYy9yc25fc3VwcC90ZGxzLmMKLSsrKyBiL3NyYy9yc25fc3VwcC90ZGxzLmMKLUBAIC0xMTIsNiArMTEyLDcgQEAgc3RydWN0IHdwYV90ZGxzX3BlZXIgewotIAkJdTggdGtbMTZdOyAvKiBUUEstVEs7IGFzc3VtaW5nIG9ubHkgQ0NNUCB3aWxsIGJlIHVzZWQgKi8KLSAJfSB0cGs7Ci0gCWludCB0cGtfc2V0OwotKwlpbnQgdGtfc2V0OyAvKiBUUEstVEsgY29uZmlndXJlZCB0byB0aGUgZHJpdmVyICovCi0gCWludCB0cGtfc3VjY2VzczsKLSAJaW50IHRwa19pbl9wcm9ncmVzczsKLSAKLUBAIC0xOTIsNiArMTkzLDIwIEBAIHN0YXRpYyBpbnQgd3BhX3RkbHNfc2V0X2tleShzdHJ1Y3Qgd3BhX3NtICpzbSwgc3RydWN0IHdwYV90ZGxzX3BlZXIgKnBlZXIpCi0gCXU4IHJzY1s2XTsKLSAJZW51bSB3cGFfYWxnIGFsZzsKLSAKLSsJaWYgKHBlZXItPnRrX3NldCkgewotKwkJLyoKLSsJCSAqIFRoaXMgc2FtZSBUUEstVEsgaGFzIGFscmVhZHkgYmVlbiBjb25maWd1cmVkIHRvIHRoZSBkcml2ZXIKLSsJCSAqIGFuZCB0aGlzIG5ldyBjb25maWd1cmF0aW9uIGF0dGVtcHQgKGxpa2VseSBkdWUgdG8gYW4KLSsJCSAqIHVuZXhwZWN0ZWQgcmV0cmFuc21pdHRlZCBmcmFtZSkgd291bGQgcmVzdWx0IGluIGNsZWFyaW5nCi0rCQkgKiB0aGUgVFgvUlggc2VxdWVuY2UgbnVtYmVyIHdoaWNoIGNhbiBicmVhayBzZWN1cml0eSwgc28gbXVzdAotKwkJICogbm90IGFsbG93IHRoYXQgdG8gaGFwcGVuLgotKwkJICovCi0rCQl3cGFfcHJpbnRmKE1TR19JTkZPLCAiVERMUzogVFBLLVRLIGZvciB0aGUgcGVlciAiIE1BQ1NUUgotKwkJCSAgICIgaGFzIGFscmVhZHkgYmVlbiBjb25maWd1cmVkIHRvIHRoZSBkcml2ZXIgLSBkbyBub3QgcmVjb25maWd1cmUiLAotKwkJCSAgIE1BQzJTVFIocGVlci0+YWRkcikpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0gCW9zX21lbXNldChyc2MsIDAsIDYpOwotIAotIAlzd2l0Y2ggKHBlZXItPmNpcGhlcikgewotQEAgLTIwOSwxMiArMjI0LDE1IEBAIHN0YXRpYyBpbnQgd3BhX3RkbHNfc2V0X2tleShzdHJ1Y3Qgd3BhX3NtICpzbSwgc3RydWN0IHdwYV90ZGxzX3BlZXIgKnBlZXIpCi0gCQlyZXR1cm4gLTE7Ci0gCX0KLSAKLSsJd3BhX3ByaW50ZihNU0dfREVCVUcsICJURExTOiBDb25maWd1cmUgcGFpcndpc2Uga2V5IGZvciBwZWVyICIgTUFDU1RSLAotKwkJICAgTUFDMlNUUihwZWVyLT5hZGRyKSk7Ci0gCWlmICh3cGFfc21fc2V0X2tleShzbSwgYWxnLCBwZWVyLT5hZGRyLCAtMSwgMSwKLSAJCQkgICByc2MsIHNpemVvZihyc2MpLCBwZWVyLT50cGsudGssIGtleV9sZW4pIDwgMCkgewotIAkJd3BhX3ByaW50ZihNU0dfV0FSTklORywgIlRETFM6IEZhaWxlZCB0byBzZXQgVFBLIHRvIHRoZSAiCi0gCQkJICAgImRyaXZlciIpOwotIAkJcmV0dXJuIC0xOwotIAl9Ci0rCXBlZXItPnRrX3NldCA9IDE7Ci0gCXJldHVybiAwOwotIH0KLSAKLUBAIC02OTYsNyArNzE0LDcgQEAgc3RhdGljIHZvaWQgd3BhX3RkbHNfcGVlcl9jbGVhcihzdHJ1Y3Qgd3BhX3NtICpzbSwgc3RydWN0IHdwYV90ZGxzX3BlZXIgKnBlZXIpCi0gCXBlZXItPmNpcGhlciA9IDA7Ci0gCXBlZXItPnFvc19pbmZvID0gMDsKLSAJcGVlci0+d21tX2NhcGFibGUgPSAwOwotLQlwZWVyLT50cGtfc2V0ID0gcGVlci0+dHBrX3N1Y2Nlc3MgPSAwOwotKwlwZWVyLT50a19zZXQgPSBwZWVyLT50cGtfc2V0ID0gcGVlci0+dHBrX3N1Y2Nlc3MgPSAwOwotIAlwZWVyLT5jaGFuX3N3aXRjaF9lbmFibGVkID0gMDsKLSAJb3NfbWVtc2V0KCZwZWVyLT50cGssIDAsIHNpemVvZihwZWVyLT50cGspKTsKLSAJb3NfbWVtc2V0KHBlZXItPmlub25jZSwgMCwgV1BBX05PTkNFX0xFTik7Ci1AQCAtMTE1OSw2ICsxMTc3LDcgQEAgc2tpcF9yc25pZToKLSAJCXdwYV90ZGxzX3BlZXJfZnJlZShzbSwgcGVlcik7Ci0gCQlyZXR1cm4gLTE7Ci0gCX0KLSsJcGVlci0+dGtfc2V0ID0gMDsgLyogQSBuZXcgbm9uY2UgcmVzdWx0cyBpbiBhIG5ldyBUSyAqLwotIAl3cGFfaGV4ZHVtcChNU0dfREVCVUcsICJURExTOiBJbml0aWF0b3IgTm9uY2UgZm9yIFRQSyBoYW5kc2hha2UiLAotIAkJICAgIHBlZXItPmlub25jZSwgV1BBX05PTkNFX0xFTik7Ci0gCW9zX21lbWNweShmdGllLT5Tbm9uY2UsIHBlZXItPmlub25jZSwgV1BBX05PTkNFX0xFTik7Ci1AQCAtMTc1MSw2ICsxNzcwLDE5IEBAIHN0YXRpYyBpbnQgd3BhX3RkbHNfYWRkc2V0X3BlZXIoc3RydWN0IHdwYV9zbSAqc20sIHN0cnVjdCB3cGFfdGRsc19wZWVyICpwZWVyLAotIH0KLSAKLSAKLStzdGF0aWMgaW50IHRkbHNfbm9uY2Vfc2V0KGNvbnN0IHU4ICpub25jZSkKLSt7Ci0rCWludCBpOwotKwotKwlmb3IgKGkgPSAwOyBpIDwgV1BBX05PTkNFX0xFTjsgaSsrKSB7Ci0rCQlpZiAobm9uY2VbaV0pCi0rCQkJcmV0dXJuIDE7Ci0rCX0KLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKwotIHN0YXRpYyBpbnQgd3BhX3RkbHNfcHJvY2Vzc190cGtfbTEoc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICpzcmNfYWRkciwKLSAJCQkJICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbikKLSB7Ci1AQCAtMjAwNCw3ICsyMDM2LDggQEAgc2tpcF9yc246Ci0gCXBlZXItPnJzbmllX2lfbGVuID0ga2RlLnJzbl9pZV9sZW47Ci0gCXBlZXItPmNpcGhlciA9IGNpcGhlcjsKLSAKLS0JaWYgKG9zX21lbWNtcChwZWVyLT5pbm9uY2UsIGZ0aWUtPlNub25jZSwgV1BBX05PTkNFX0xFTikgIT0gMCkgewotKwlpZiAob3NfbWVtY21wKHBlZXItPmlub25jZSwgZnRpZS0+U25vbmNlLCBXUEFfTk9OQ0VfTEVOKSAhPSAwIHx8Ci0rCSAgICAhdGRsc19ub25jZV9zZXQocGVlci0+aW5vbmNlKSkgewotIAkJLyoKLSAJCSAqIFRoZXJlIGlzIG5vIHBvaW50IGluIHVwZGF0aW5nIHRoZSBSTm9uY2UgZm9yIGV2ZXJ5IG9idGFpbmVkCi0gCQkgKiBUUEsgTTEgZnJhbWUgKGUuZy4sIHJldHJhbnNtaXNzaW9uIGR1ZSB0byB0aW1lb3V0KSB3aXRoIHRoZQotQEAgLTIwMjAsNiArMjA1Myw3IEBAIHNraXBfcnNuOgotIAkJCQkiVERMUzogRmFpbGVkIHRvIGdldCByYW5kb20gZGF0YSBmb3IgcmVzcG9uZGVyIG5vbmNlIik7Ci0gCQkJZ290byBlcnJvcjsKLSAJCX0KLSsJCXBlZXItPnRrX3NldCA9IDA7IC8qIEEgbmV3IG5vbmNlIHJlc3VsdHMgaW4gYSBuZXcgVEsgKi8KLSAJfQotIAotICNpZiAwCi0tLSAKLTIuNy40Ci0KLU5vdGU6IFtQQVRDSCA3LzhdIG9ubHkgYXBwbGllcyB0byB3cGFfc3VwcGxpY2FudAotCi1Gcm9tIGIzNzJhYjBiN2RhZWE3MTk3NDkxOTRkYzU1NGIyNmU2MzY3NjAzZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb3VuaSBNYWxpbmVuIDxqQHcxLmZpPgotRGF0ZTogRnJpLCAyMiBTZXAgMjAxNyAxMjowNjozNyArMDMwMAotU3ViamVjdDogW1BBVENIIDgvOF0gRlQ6IERvIG5vdCBhbGxvdyBtdWx0aXBsZSBSZWFzc29jaWF0aW9uIFJlc3BvbnNlIGZyYW1lcwotCi1UaGUgZHJpdmVyIGlzIGV4cGVjdGVkIHRvIG5vdCByZXBvcnQgYSBzZWNvbmQgYXNzb2NpYXRpb24gZXZlbnQgd2l0aG91dAotdGhlIHN0YXRpb24gaGF2aW5nIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBhc3NvY2lhdGlvbi4gQXMgc3VjaCwgdGhpcwotY2FzZSBzaG91bGQgbm90IGJlIHJlYWNoYWJsZS4gSG93ZXZlciwgc2luY2UgcmVjb25maWd1cmluZyB0aGUgc2FtZQotcGFpcndpc2Ugb3IgZ3JvdXAga2V5cyB0byB0aGUgZHJpdmVyIGNvdWxkIHJlc3VsdCBpbiBub25jZSByZXVzZSBpc3N1ZXMsCi1iZSBleHRyYSBjYXJlZnVsIGhlcmUgYW5kIGRvIGFuIGFkZGl0aW9uYWwgc3RhdGUgY2hlY2sgdG8gYXZvaWQgdGhpcwotZXZlbiBpZiB0aGUgbG9jYWwgZHJpdmVyIGVuZHMgdXAgc29tZWhvdyBhY2NlcHRpbmcgYW4gdW5leHBlY3RlZAotUmVhc3NvY2lhdGlvbiBSZXNwb25zZSBmcmFtZS4KLQotU2lnbmVkLW9mZi1ieTogSm91bmkgTWFsaW5lbiA8akB3MS5maT4KLS0tLQotIHNyYy9yc25fc3VwcC93cGEuYyAgICB8IDMgKysrCi0gc3JjL3Jzbl9zdXBwL3dwYV9mdC5jIHwgOCArKysrKysrKwotIHNyYy9yc25fc3VwcC93cGFfaS5oICB8IDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Jzbl9zdXBwL3dwYS5jIGIvc3JjL3Jzbl9zdXBwL3dwYS5jCi1pbmRleCAwNTUwYTQxLi4yYTUzYzZmIDEwMDY0NAotLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYS5jCi0rKysgYi9zcmMvcnNuX3N1cHAvd3BhLmMKLUBAIC0yNDQwLDYgKzI0NDAsOSBAQCB2b2lkIHdwYV9zbV9ub3RpZnlfZGlzYXNzb2Moc3RydWN0IHdwYV9zbSAqc20pCi0gI2lmZGVmIENPTkZJR19URExTCi0gCXdwYV90ZGxzX2Rpc2Fzc29jKHNtKTsKLSAjZW5kaWYgLyogQ09ORklHX1RETFMgKi8KLSsjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVIKLSsJc20tPmZ0X3JlYXNzb2NfY29tcGxldGVkID0gMDsKLSsjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVIgKi8KLSAKLSAJLyogS2V5cyBhcmUgbm90IG5lZWRlZCBpbiB0aGUgV1BBIHN0YXRlIG1hY2hpbmUgYW55bW9yZSAqLwotIAl3cGFfc21fZHJvcF9zYShzbSk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3Jzbl9zdXBwL3dwYV9mdC5jIGIvc3JjL3Jzbl9zdXBwL3dwYV9mdC5jCi1pbmRleCAyMDU3OTNlLi5kNDViYjQ1IDEwMDY0NAotLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYV9mdC5jCi0rKysgYi9zcmMvcnNuX3N1cHAvd3BhX2Z0LmMKLUBAIC0xNTMsNiArMTUzLDcgQEAgc3RhdGljIHU4ICogd3BhX2Z0X2dlbl9yZXFfaWVzKHN0cnVjdCB3cGFfc20gKnNtLCBzaXplX3QgKmxlbiwKLSAJdTE2IGNhcGFiOwotIAotIAlzbS0+ZnRfY29tcGxldGVkID0gMDsKLSsJc20tPmZ0X3JlYXNzb2NfY29tcGxldGVkID0gMDsKLSAKLSAJYnVmX2xlbiA9IDIgKyBzaXplb2Yoc3RydWN0IHJzbl9tZGllKSArIDIgKyBzaXplb2Yoc3RydWN0IHJzbl9mdGllKSArCi0gCQkyICsgc20tPnIwa2hfaWRfbGVuICsgcmljX2llc19sZW4gKyAxMDA7Ci1AQCAtNjgxLDYgKzY4MiwxMSBAQCBpbnQgd3BhX2Z0X3ZhbGlkYXRlX3JlYXNzb2NfcmVzcChzdHJ1Y3Qgd3BhX3NtICpzbSwgY29uc3QgdTggKmllcywKLSAJCXJldHVybiAtMTsKLSAJfQotIAotKwlpZiAoc20tPmZ0X3JlYXNzb2NfY29tcGxldGVkKSB7Ci0rCQl3cGFfcHJpbnRmKE1TR19ERUJVRywgIkZUOiBSZWFzc29jaWF0aW9uIGhhcyBhbHJlYWR5IGJlZW4gY29tcGxldGVkIGZvciB0aGlzIEZUIHByb3RvY29sIGluc3RhbmNlIC0gaWdub3JlIHVuZXhwZWN0ZWQgcmV0cmFuc21pc3Npb24iKTsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0gCWlmICh3cGFfZnRfcGFyc2VfaWVzKGllcywgaWVzX2xlbiwgJnBhcnNlKSA8IDApIHsKLSAJCXdwYV9wcmludGYoTVNHX0RFQlVHLCAiRlQ6IEZhaWxlZCB0byBwYXJzZSBJRXMiKTsKLSAJCXJldHVybiAtMTsKLUBAIC03ODEsNiArNzg3LDggQEAgaW50IHdwYV9mdF92YWxpZGF0ZV9yZWFzc29jX3Jlc3Aoc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICppZXMsCi0gCQlyZXR1cm4gLTE7Ci0gCX0KLSAKLSsJc20tPmZ0X3JlYXNzb2NfY29tcGxldGVkID0gMTsKLSsKLSAJaWYgKHdwYV9mdF9wcm9jZXNzX2d0a19zdWJlbGVtKHNtLCBwYXJzZS5ndGssIHBhcnNlLmd0a19sZW4pIDwgMCkKLSAJCXJldHVybiAtMTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhX2kuaCBiL3NyYy9yc25fc3VwcC93cGFfaS5oCi1pbmRleCA0MWYzNzFmLi41NmY4OGRjIDEwMDY0NAotLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKLSsrKyBiL3NyYy9yc25fc3VwcC93cGFfaS5oCi1AQCAtMTI4LDYgKzEyOCw3IEBAIHN0cnVjdCB3cGFfc20gewotIAlzaXplX3QgcjBraF9pZF9sZW47Ci0gCXU4IHIxa2hfaWRbRlRfUjFLSF9JRF9MRU5dOwotIAlpbnQgZnRfY29tcGxldGVkOwotKwlpbnQgZnRfcmVhc3NvY19jb21wbGV0ZWQ7Ci0gCWludCBvdmVyX3RoZV9kc19pbl9wcm9ncmVzczsKLSAJdTggdGFyZ2V0X2FwW0VUSF9BTEVOXTsgLyogb3Zlci10aGUtRFMgdGFyZ2V0IEFQICovCi0gCWludCBzZXRfcHRrX2FmdGVyX2Fzc29jOwotLS0gCi0yLjcuNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZF8yLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkXzIuNi5iYgppbmRleCBjM2ExZWFkLi4yNTBhZGQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkXzIuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkXzIuNi5iYgpAQCAtMSwzNCArMSw0OCBAQAorU1VNTUFSWSA9ICJVc2VyIHNwYWNlIGRhZW1vbiBmb3IgZXh0ZW5kZWQgSUVFRSA4MDIuMTEgbWFuYWdlbWVudCIKIEhPTUVQQUdFID0gImh0dHA6Ly93MS5maS9ob3N0YXBkLyIKIFNFQ1RJT04gPSAia2VybmVsL3VzZXJsYW5kIgotTElDRU5TRSA9ICJHUEx2MiB8IEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Qn0vUkVBRE1FO21kNT04YWE0ZThjNzhiNTliMTIwMTZjNGNiMmQwYThkYjM1MCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaG9zdGFwZC9SRUFETUU7bWQ1PThhYTRlOGM3OGI1OWIxMjAxNmM0Y2IyZDBhOGRiMzUwIgorCiBERVBFTkRTID0gImxpYm5sIG9wZW5zc2wiCi1TVU1NQVJZID0gIlVzZXIgc3BhY2UgZGFlbW9uIGZvciBleHRlbmRlZCBJRUVFIDgwMi4xMSBtYW5hZ2VtZW50IgotCi1pbmhlcml0IHVwZGF0ZS1yYy5kIHN5c3RlbWQKLUlOSVRTQ1JJUFRfTkFNRSA9ICJob3N0YXBkIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiaG9zdGFwZC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJkaXNhYmxlIgogCiBTUkNfVVJJID0gIiBcCiAgICAgaHR0cDovL3cxLmZpL3JlbGVhc2VzL2hvc3RhcGQtJHtQVn0udGFyLmd6IFwKICAgICBmaWxlOi8vZGVmY29uZmlnIFwKICAgICBmaWxlOi8vaW5pdCBcCiAgICAgZmlsZTovL2hvc3RhcGQuc2VydmljZSBcCi0gICAgZmlsZTovL2tleS1yZXBsYXktY3ZlLW11bHRpcGxlLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1ob3N0YXBkLUF2b2lkLWtleS1yZWluc3RhbGxhdGlvbi1pbi1GVC1oYW5kc2hha2UucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLVByZXZlbnQtcmVpbnN0YWxsYXRpb24tb2YtYW4tYWxyZWFkeS1pbi11c2UtZ3JvdXAta2UucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLUV4dGVuZC1wcm90ZWN0aW9uLW9mLUdUSy1JR1RLLXJlaW5zdGFsbGF0aW9uLW9mLVdOTS0ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LVByZXZlbnQtaW5zdGFsbGF0aW9uLW9mLWFuLWFsbC16ZXJvLVRLLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNS1GaXgtUFRLLXJla2V5aW5nLXRvLWdlbmVyYXRlLWEtbmV3LUFOb25jZS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDYtVERMUy1SZWplY3QtVFBLLVRLLXJlY29uZmlndXJhdGlvbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDctRlQtRG8tbm90LWFsbG93LW11bHRpcGxlLVJlYXNzb2NpYXRpb24tUmVzcG9uc2UtZnJhbS5wYXRjaCBcCiAiCiAKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYWE1NmRjZTliZDhmMWQxOTVlYjYyNTk2ZWFiMzRjNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMTUyNmI5MGMxZDIzYmVjNGIwZjA1MjAzOWNjNDQ1NmMyZmQxOTM0N2I0ZDgzMGQxZDU4YTBhNmFlYTcxMTdkIgorCiBTID0gIiR7V09SS0RJUn0vaG9zdGFwZC0ke1BWfSIKIEIgPSAiJHtXT1JLRElSfS9ob3N0YXBkLSR7UFZ9L2hvc3RhcGQiCiAKLWRvX2NvbmZpZ3VyZSgpIHsKK2luaGVyaXQgdXBkYXRlLXJjLmQgc3lzdGVtZCBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK0NPTkZMSUNUX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuc3NsLW5vLXdlYWstY2lwaGVycyIKKworSU5JVFNDUklQVF9OQU1FID0gImhvc3RhcGQiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJob3N0YXBkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59ID0gImRpc2FibGUiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CiAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZGVmY29uZmlnICR7Qn0vLmNvbmZpZwogfQogCiBkb19jb21waWxlKCkgewotICAgIGV4cG9ydCBDRkxBR1M9Ii1NTUQgLU8yIC1XYWxsIC1nIC1JJHtTVEFHSU5HX0lOQ0RJUn0vbGlibmwzIgotICAgIG1ha2UKKyAgICBleHBvcnQgQ0ZMQUdTPSItTU1EIC1PMiAtV2FsbCAtZyIKKyAgICBleHBvcnQgRVhUUkFfQ0ZMQUdTPSIke0NGTEFHU30iCisgICAgbWFrZSBWPTEKIH0KIAogZG9faW5zdGFsbCgpIHsKQEAgLTQyLDcgKzU2LDMgQEAKIH0KIAogQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2hvc3RhcGQuY29uZiIKLQotU1JDX1VSSVttZDVzdW1dID0gImVhYTU2ZGNlOWJkOGYxZDE5NWViNjI1OTZlYWIzNGM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAxNTI2YjkwYzFkMjNiZWM0YjBmMDUyMDM5Y2M0NDU2YzJmZDE5MzQ3YjRkODMwZDFkNThhMGE2YWVhNzExN2QiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUvMDAwMS1hY2xvY2FsLUFkZC1wYXJhbWV0ZXItdG8tZGlzYWJsZS1rZXl1dGlscy1kZXRlY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1LzAwMDEtYWNsb2NhbC1BZGQtcGFyYW1ldGVyLXRvLWRpc2FibGUta2V5dXRpbHMtZGV0ZWN0aW9uLnBhdGNoCmluZGV4IGYwYzMxMGMuLmNiZDVkNzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUvMDAwMS1hY2xvY2FsLUFkZC1wYXJhbWV0ZXItdG8tZGlzYWJsZS1rZXl1dGlscy1kZXRlY3Rpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS8wMDAxLWFjbG9jYWwtQWRkLXBhcmFtZXRlci10by1kaXNhYmxlLWtleXV0aWxzLWRldGVjdGlvbi5wYXRjaApAQCAtMSwxOCArMSwxOSBAQAotRnJvbSBlY2I2MmYzNDY3ZjQ5M2NjMGQ2NzkzMjNmMDUzNjdlZWJiZjBmYjY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhOWU0MDU3YmZkYTE5MGFkMzY1YjUwM2FmMDU4YjQ2MGFiOGM3NjE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogRGF0ZTogVHVlLCAxIE9jdCAyMDEzIDIyOjIyOjU3ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIGFjbG9jYWw6IEFkZCBwYXJhbWV0ZXIgdG8gZGlzYWJsZSBrZXl1dGlscyBkZXRlY3Rpb24KIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCiAtLS0KICBhY2xvY2FsLm00IHwgNCArKysrCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvYWNsb2NhbC5tNCBiL2FjbG9jYWwubTQKLWluZGV4IDIxMGM0NzMuLjgzYjFmMDIgMTAwNjQ0CitpbmRleCBkNmQxMjc5Li44MGNlNjA0IDEwMDY0NAogLS0tIGEvYWNsb2NhbC5tNAogKysrIGIvYWNsb2NhbC5tNAotQEAgLTE2NTAsMTEgKzE2NTAsMTUgQEAgZmkKK0BAIC0xNjc5LDEyICsxNjc5LDE2IEBAIGZpCiAgZG5sCiAgZG5sIElmIGxpYmtleXV0aWxzIGV4aXN0cyAob24gTGludXgpIGluY2x1ZGUgaXQgYW5kIHVzZSBrZXlyaW5nIGNjYWNoZQogIEFDX0RFRlVOKEtSQjVfQUNfS0VZUklOR19DQ0FDSEUsWwpAQCAtMjgsNiArMjksNCBAQAogK2ZpCiAgXSlkbmwKICBkbmwKLS0tIAotMS44LjMuMgotCisgZG5sIElmIGxpYmtleXV0aWxzIHN1cHBvcnRzIHBlcnNpc3RlbnQga2V5cmluZ3MsIHVzZSB0aGVtCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L0NWRS0yMDE3LTExNDYyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9DVkUtMjAxNy0xMTQ2Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI4MmYwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L0NWRS0yMDE3LTExNDYyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDE5ICswLDAgQEAKLUZyb20gNTZmN2IxYmM5NWEyYTNlZWI0MjBlMDY5ZTc2NTVmYjE4MWFkZTVjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEdyZWcgSHVkc29uIDxnaHVkc29uQG1pdC5lZHU+Ci1EYXRlOiBGcmksIDE0IEp1bCAyMDE3IDEzOjAyOjQ2IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZXNlcnZlIEdTUyBjb250ZXh0IG9uIGluaXQvYWNjZXB0IGZhaWx1cmUKLQotQWZ0ZXIgZ3NzX2luaXRfc2VjX2NvbnRleHQoKSBvciBnc3NfYWNjZXB0X3NlY19jb250ZXh0KCkgaGFzIGNyZWF0ZWQgYQotY29udGV4dCwgZG9uJ3QgZGVsZXRlIHRoZSBtZWNoZ2x1ZSBjb250ZXh0IG9uIGZhaWx1cmVzIGZyb20gc3Vic2VxdWVudAotY2FsbHMsIGV2ZW4gaWYgdGhlIG1lY2hhbmlzbSBkZWxldGVzIHRoZSBtZWNoLXNwZWNpZmljIGNvbnRleHQgKHdoaWNoCi1pcyBhbGxvd2VkIGJ5IFJGQyAyNzQ0IGJ1dCBub3QgcHJlZmVycmVkKS4gIENoZWNrIGZvciB1bmlvbiBjb250ZXh0cwotd2l0aCBubyBtZWNoYW5pc20gY29udGV4dCBpbiBlYWNoIEdTUyBmdW5jdGlvbiB3aGljaCBhY2NlcHRzIGEKLWdzc19jdHhfaWRfdC4KLQotQ1ZFLTIwMTctMTE0NjI6Ci0KLVJGQyAyNzQ0IHBlcm1pdHMgYSBHU1MtQVBJIGltcGxlbWVudGF0aW9uIHRvIGRlbGV0ZSBhbiBleGlzdGluZwotc2VjdXJpdHkgY29udGV4dCBvbiBhIHNlY29uZCBvciBzdWJzZXF1ZW50IGNhbGwgdG8KLWdzc19pbml0X3NlY19jb250ZXh0KCkgb3IgZ3NzX2FjY2VwdF9zZWNfY29udGV4dCgpIGlmIHRoZSBjYWxsIHJlc3VsdHMKLWluIGFuIGVycm9yLiAgVGhpcyBBUEkgYmVoYXZpb3IgaGFzIGJlZW4gZm91bmQgdG8gYmUgZGFuZ2Vyb3VzLAotbGVhZGluZyB0byB0aGUgcG9zc2liaWxpdHkgb2YgbWVtb3J5IGVycm9ycyBpbiBzb21lIGNhbGxlcnMuICBGb3IKLXNhZmV0eSwgR1NTLUFQSSBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGluc3RlYWQgcHJlc2VydmUgZXhpc3RpbmcKLXNlY3VyaXR5IGNvbnRleHRzIG9uIGVycm9yIHVudGlsIHRoZSBjYWxsZXIgZGVsZXRlcyB0aGVtLgotCi1BbGwgdmVyc2lvbnMgb2YgTUlUIGtyYjUgcHJpb3IgdG8gdGhpcyBjaGFuZ2UgbWF5IGRlbGV0ZSBhY2NlcHRvcgotY29udGV4dHMgb24gZXJyb3IuICBWZXJzaW9ucyAxLjEzLjQgdGhyb3VnaCAxLjEzLjcsIDEuMTQuMSB0aHJvdWdoCi0xLjE0LjUsIGFuZCAxLjE1IHRocm91Z2ggMS4xNS4xIG1heSBhbHNvIGRlbGV0ZSBpbml0aWF0b3IgY29udGV4dHMgb24KLWVycm9yLgotCi10aWNrZXQ6IDg1OTggKG5ldykKLXRhcmdldF92ZXJzaW9uOiAxLjE1LW5leHQKLXRhcmdldF92ZXJzaW9uOiAxLjE0LW5leHQKLXRhZ3M6IHB1bGx1cAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTExNDYyCi0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19hY2NlcHRfc2VjX2NvbnRleHQuYyAgfCAyMiArKysrKysrKysrKysrKystLS0tLS0tCi0gc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19jb21wbGV0ZV9hdXRoX3Rva2VuLmMgfCAgMiArKwotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29udGV4dF90aW1lLmMgICAgICAgIHwgIDIgKysKLSBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2RlbGV0ZV9zZWNfY29udGV4dC5jICB8IDE0ICsrKysrKysrLS0tLS0tCi0gc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19leHBfc2VjX2NvbnRleHQuYyAgICAgfCAgMiArKwotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5pdF9zZWNfY29udGV4dC5jICAgIHwgMTkgKysrKysrKysrKystLS0tLS0tLQotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYyAgICAgICAgIHwgIDIgKysKLSBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ByZi5jICAgICAgICAgICAgICAgICB8ICAyICsrCi0gc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcm9jZXNzX2NvbnRleHQuYyAgICAgfCAgMiArKwotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2VhbC5jICAgICAgICAgICAgICAgIHwgIDQgKysrKwotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2lnbi5jICAgICAgICAgICAgICAgIHwgIDIgKysKLSBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vuc2VhbC5jICAgICAgICAgICAgICB8ICAyICsrCi0gc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bndyYXBfYWVhZC5jICAgICAgICAgfCAgMiArKwotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW53cmFwX2lvdi5jICAgICAgICAgIHwgIDQgKysrKwotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdmVyaWZ5LmMgICAgICAgICAgICAgIHwgIDIgKysKLSBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfYWVhZC5jICAgICAgICAgICB8ICAyICsrCi0gc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2lvdi5jICAgICAgICAgICAgfCAgOCArKysrKysrKwotIDE3IGZpbGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19hY2NlcHRfc2VjX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfYWNjZXB0X3NlY19jb250ZXh0LmMKLWluZGV4IGRkYWY4NzQuLmYyOGUyYjEgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2FjY2VwdF9zZWNfY29udGV4dC5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2FjY2VwdF9zZWNfY29udGV4dC5jCi1AQCAtMjE2LDYgKzIxNiw4IEBAIGdzc19jcmVkX2lkX3QgKgkJZF9jcmVkOwotICAgICB9IGVsc2UgewotIAl1bmlvbl9jdHhfaWQgPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSpjb250ZXh0X2hhbmRsZTsKLSAJc2VsZWN0ZWRfbWVjaCA9IHVuaW9uX2N0eF9pZC0+bWVjaF90eXBlOwotKwlpZiAodW5pb25fY3R4X2lkLT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJICAgIHJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7Ci0gICAgIH0KLSAKLSAgICAgLyogTm93IGNyZWF0ZSBhIG5ldyBjb250ZXh0IGlmIHdlIGRpZG4ndCBnZXQgb25lLiAqLwotQEAgLTIzNCw5ICsyMzYsNiBAQCBnc3NfY3JlZF9pZF90ICoJCWRfY3JlZDsKLSAJICAgIGZyZWUodW5pb25fY3R4X2lkKTsKLSAJICAgIHJldHVybiAoc3RhdHVzKTsKLSAJfQotLQotLQkvKiBzZXQgdGhlIG5ldyBjb250ZXh0IGhhbmRsZSB0byBjYWxsZXIncyBkYXRhICovCi0tCSpjb250ZXh0X2hhbmRsZSA9IChnc3NfY3R4X2lkX3QpdW5pb25fY3R4X2lkOwotICAgICB9Ci0gCi0gICAgIC8qCi1AQCAtMjc3LDggKzI3NiwxMCBAQCBnc3NfY3JlZF9pZF90ICoJCWRfY3JlZDsKLSAJCQkJCWRfY3JlZCA/ICZ0bXBfZF9jcmVkIDogTlVMTCk7Ci0gCi0gCSAgICAvKiBJZiB0aGVyZSdzIG1vcmUgd29yayB0byBkbywga2VlcCBnb2luZy4uLiAqLwotLQkgICAgaWYgKHN0YXR1cyA9PSBHU1NfU19DT05USU5VRV9ORUVERUQpCi0rCSAgICBpZiAoc3RhdHVzID09IEdTU19TX0NPTlRJTlVFX05FRURFRCkgewotKwkJKmNvbnRleHRfaGFuZGxlID0gKGdzc19jdHhfaWRfdCl1bmlvbl9jdHhfaWQ7Ci0gCQlyZXR1cm4gR1NTX1NfQ09OVElOVUVfTkVFREVEOwotKwkgICAgfQotIAotIAkgICAgLyogaWYgdGhlIGNhbGwgZmFpbGVkLCByZXR1cm4gd2l0aCBmYWlsdXJlICovCi0gCSAgICBpZiAoc3RhdHVzICE9IEdTU19TX0NPTVBMRVRFKSB7Ci1AQCAtMzY0LDE0ICszNjUsMjIgQEAgZ3NzX2NyZWRfaWRfdCAqCQlkX2NyZWQ7Ci0gCQkqbWVjaF90eXBlID0gZ3NzaW50X2dldF9wdWJsaWNfb2lkKGFjdHVhbF9tZWNoKTsKLSAJICAgIGlmIChyZXRfZmxhZ3MgIT0gTlVMTCkKLSAJCSpyZXRfZmxhZ3MgPSB0ZW1wX3JldF9mbGFnczsKLS0JICAgIHJldHVybgkoc3RhdHVzKTsKLSsJICAgICpjb250ZXh0X2hhbmRsZSA9IChnc3NfY3R4X2lkX3QpdW5pb25fY3R4X2lkOwotKwkgICAgcmV0dXJuIEdTU19TX0NPTVBMRVRFOwotICAgICB9IGVsc2UgewotIAotIAlzdGF0dXMgPSBHU1NfU19CQURfTUVDSDsKLSAgICAgfQotIAotIGVycm9yX291dDoKLS0gICAgaWYgKHVuaW9uX2N0eF9pZCkgewotKwkvKgotKwkgKiBSRkMgMjc0NCA1LjEgcmVxdWlyZXMgdGhhdCB3ZSBub3QgY3JlYXRlIGEgY29udGV4dCBvbiBhIGZhaWxlZCBmaXJzdAotKwkgKiBjYWxsIHRvIGFjY2VwdCwgYW5kIHJlY29tbWVuZHMgdGhhdCBvbiBhIGZhaWxlZCBzdWJzZXF1ZW50IGNhbGwgd2UKLSsJICogbWFrZSB0aGUgY2FsbGVyIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGdzc19kZWxldGVfc2VjX2NvbnRleHQuCi0rCSAqIEV2ZW4gaWYgdGhlIG1lY2ggZGVsZXRlZCBpdHMgY29udGV4dCwga2VlcCB0aGUgdW5pb24gY29udGV4dCBhcm91bmQKLSsJICogZm9yIHRoZSBjYWxsZXIgdG8gZGVsZXRlLgotKwkgKi8KLSsgICAgaWYgKHVuaW9uX2N0eF9pZCAmJiAqY29udGV4dF9oYW5kbGUgPT0gR1NTX0NfTk9fQ09OVEVYVCkgewotIAlpZiAodW5pb25fY3R4X2lkLT5tZWNoX3R5cGUpIHsKLSAJICAgIGlmICh1bmlvbl9jdHhfaWQtPm1lY2hfdHlwZS0+ZWxlbWVudHMpCi0gCQlmcmVlKHVuaW9uX2N0eF9pZC0+bWVjaF90eXBlLT5lbGVtZW50cyk7Ci1AQCAtMzg0LDcgKzM5Myw2IEBAIGVycm9yX291dDoKLSAJCQkJCSBHU1NfQ19OT19CVUZGRVIpOwotIAl9Ci0gCWZyZWUodW5pb25fY3R4X2lkKTsKLS0JKmNvbnRleHRfaGFuZGxlID0gR1NTX0NfTk9fQ09OVEVYVDsKLSAgICAgfQotIAotICAgICBpZiAoc3JjX25hbWUpCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19jb21wbGV0ZV9hdXRoX3Rva2VuLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbXBsZXRlX2F1dGhfdG9rZW4uYwotaW5kZXggOTE4MTU1MS4uNGJjYjQ3ZSAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29tcGxldGVfYXV0aF90b2tlbi5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbXBsZXRlX2F1dGhfdG9rZW4uYwotQEAgLTUyLDYgKzUyLDggQEAgZ3NzX2NvbXBsZXRlX2F1dGhfdG9rZW4gKE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLAotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKwlyZXR1cm4gR1NTX1NfTk9fQ09OVEVYVDsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gCi0gICAgIGlmIChtZWNoICE9IE5VTEwpIHsKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbnRleHRfdGltZS5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19jb250ZXh0X3RpbWUuYwotaW5kZXggMmZmOGQwOS4uYzk0N2U3NiAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29udGV4dF90aW1lLmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29udGV4dF90aW1lLmMKLUBAIC01OCw2ICs1OCw4IEBAIE9NX3VpbnQzMiAqCQl0aW1lX3JlYzsKLSAgICAgICovCi0gCi0gICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gCi0gICAgIGlmIChtZWNoKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19kZWxldGVfc2VjX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfZGVsZXRlX3NlY19jb250ZXh0LmMKLWluZGV4IDRiZjBkZWMuLjU3NGZmMDIgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2RlbGV0ZV9zZWNfY29udGV4dC5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2RlbGV0ZV9zZWNfY29udGV4dC5jCi1AQCAtODcsMTIgKzg3LDE0IEBAIGdzc19idWZmZXJfdAkJb3V0cHV0X3Rva2VuOwotICAgICBpZiAoR1NTSU5UX0NIS19MT09QKGN0eCkpCi0gCXJldHVybiAoR1NTX1NfQ0FMTF9JTkFDQ0VTU0lCTEVfUkVBRCB8IEdTU19TX05PX0NPTlRFWFQpOwotIAotLSAgICBzdGF0dXMgPSBnc3NpbnRfZGVsZXRlX2ludGVybmFsX3NlY19jb250ZXh0KG1pbm9yX3N0YXR1cywKLS0JCQkJCQljdHgtPm1lY2hfdHlwZSwKLS0JCQkJCQkmY3R4LT5pbnRlcm5hbF9jdHhfaWQsCi0tCQkJCQkJb3V0cHV0X3Rva2VuKTsKLS0gICAgaWYgKHN0YXR1cykKLS0JcmV0dXJuIHN0YXR1czsKLSsgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkICE9IEdTU19DX05PX0NPTlRFWFQpIHsKLSsJc3RhdHVzID0gZ3NzaW50X2RlbGV0ZV9pbnRlcm5hbF9zZWNfY29udGV4dChtaW5vcl9zdGF0dXMsCi0rCQkJCQkJICAgIGN0eC0+bWVjaF90eXBlLAotKwkJCQkJCSAgICAmY3R4LT5pbnRlcm5hbF9jdHhfaWQsCi0rCQkJCQkJICAgIG91dHB1dF90b2tlbik7Ci0rCWlmIChzdGF0dXMpCi0rCSAgICByZXR1cm4gc3RhdHVzOwotKyAgICB9Ci0gCi0gICAgIC8qIG5vdyBmcmVlIHVwIHRoZSBzcGFjZSBmb3IgdGhlIHVuaW9uIGNvbnRleHQgc3RydWN0dXJlICovCi0gICAgIGZyZWUoY3R4LT5tZWNoX3R5cGUtPmVsZW1lbnRzKTsKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2V4cF9zZWNfY29udGV4dC5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19leHBfc2VjX2NvbnRleHQuYwotaW5kZXggYjYzNzQ1Mi4uMWQ3OTkwYiAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfZXhwX3NlY19jb250ZXh0LmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfZXhwX3NlY19jb250ZXh0LmMKLUBAIC05NSw2ICs5NSw4IEBAIGdzc19idWZmZXJfdAkJaW50ZXJwcm9jZXNzX3Rva2VuOwotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgKmNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gICAgIGlmICghbWVjaCkKLSAJcmV0dXJuIEdTU19TX0JBRF9NRUNIOwotZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5pdF9zZWNfY29udGV4dC5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19pbml0X3NlY19jb250ZXh0LmMKLWluZGV4IDlmMTU0YjguLmUyZGYxY2UgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2luaXRfc2VjX2NvbnRleHQuYwotKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19pbml0X3NlY19jb250ZXh0LmMKLUBAIC0xOTIsOCArMTkyLDEzIEBAIE9NX3VpbnQzMiAqCQl0aW1lX3JlYzsKLSAKLSAJLyogY29weSB0aGUgc3VwcGxpZWQgY29udGV4dCBoYW5kbGUgKi8KLSAJdW5pb25fY3R4X2lkLT5pbnRlcm5hbF9jdHhfaWQgPSBHU1NfQ19OT19DT05URVhUOwotLSAgICB9IGVsc2UKLSsgICAgfSBlbHNlIHsKLSAJdW5pb25fY3R4X2lkID0gKGdzc191bmlvbl9jdHhfaWRfdCkqY29udGV4dF9oYW5kbGU7Ci0rCWlmICh1bmlvbl9jdHhfaWQtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKSB7Ci0rCSAgICBzdGF0dXMgPSBHU1NfU19OT19DT05URVhUOwotKwkgICAgZ290byBlbmQ7Ci0rCX0KLSsgICAgfQotIAotICAgICAvKgotICAgICAgKiBnZXQgdGhlIGFwcHJvcHJpYXRlIGNyZWQgaGFuZGxlIGZyb20gdGhlIHVuaW9uIGNyZWQgc3RydWN0LgotQEAgLTIyNCwxNSArMjI5LDEzIEBAIE9NX3VpbnQzMiAqCQl0aW1lX3JlYzsKLSAKLSAgICAgaWYgKHN0YXR1cyAhPSBHU1NfU19DT01QTEVURSAmJiBzdGF0dXMgIT0gR1NTX1NfQ09OVElOVUVfTkVFREVEKSB7Ci0gCS8qCi0tCSAqIFRoZSBzcGVjIHNheXMgdGhlIHByZWZlcnJlZCBtZXRob2QgaXMgdG8gZGVsZXRlIGFsbCBjb250ZXh0IGluZm8gb24KLS0JICogdGhlIGZpcnN0IGNhbGwgdG8gaW5pdCwgYW5kIG9uIGFsbCBzdWJzZXF1ZW50IGNhbGxzIG1ha2UgdGhlIGNhbGxlcgotLQkgKiByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBnc3NfZGVsZXRlX3NlY19jb250ZXh0LiAgSG93ZXZlciwgaWYgdGhlCi0tCSAqIG1lY2hhbmlzbSBkZWNpZGVkIHRvIGRlbGV0ZSB0aGUgaW50ZXJuYWwgY29udGV4dCwgd2Ugc2hvdWxkIGFsc28KLS0JICogZGVsZXRlIHRoZSB1bmlvbiBjb250ZXh0LgotKwkgKiBSRkMgMjc0NCA1LjE5IHJlcXVpcmVzIHRoYXQgd2Ugbm90IGNyZWF0ZSBhIGNvbnRleHQgb24gYSBmYWlsZWQKLSsJICogZmlyc3QgY2FsbCB0byBpbml0LCBhbmQgcmVjb21tZW5kcyB0aGF0IG9uIGEgZmFpbGVkIHN1YnNlcXVlbnQgY2FsbAotKwkgKiB3ZSBtYWtlIHRoZSBjYWxsZXIgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgZ3NzX2RlbGV0ZV9zZWNfY29udGV4dC4KLSsJICogRXZlbiBpZiB0aGUgbWVjaCBkZWxldGVkIGl0cyBjb250ZXh0LCBrZWVwIHRoZSB1bmlvbiBjb250ZXh0IGFyb3VuZAotKwkgKiBmb3IgdGhlIGNhbGxlciB0byBkZWxldGUuCi0gCSAqLwotIAltYXBfZXJyb3IobWlub3Jfc3RhdHVzLCBtZWNoKTsKLS0JaWYgKHVuaW9uX2N0eF9pZC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCi0tCSAgICAqY29udGV4dF9oYW5kbGUgPSBHU1NfQ19OT19DT05URVhUOwotIAlpZiAoKmNvbnRleHRfaGFuZGxlID09IEdTU19DX05PX0NPTlRFWFQpIHsKLSAJICAgIGZyZWUodW5pb25fY3R4X2lkLT5tZWNoX3R5cGUtPmVsZW1lbnRzKTsKLSAJICAgIGZyZWUodW5pb25fY3R4X2lkLT5tZWNoX3R5cGUpOwotZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYwotaW5kZXggNmYxYzcxZS4uNmMwZDk4ZCAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYwotKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19pbnFfY29udGV4dC5jCi1AQCAtMTA0LDYgKzEwNCw4IEBAIGdzc19pbnF1aXJlX2NvbnRleHQoCi0gICAgICAqLwotIAotICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKLSsgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCi0rCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7Ci0gICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOwotIAotICAgICBpZiAoIW1lY2ggfHwgIW1lY2gtPmdzc19pbnF1aXJlX2NvbnRleHQgfHwgIW1lY2gtPmdzc19kaXNwbGF5X25hbWUgfHwKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ByZi5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcmYuYwotaW5kZXggZmNjYTNlNC4uOWUxNjhhZCAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfcHJmLmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfcHJmLmMKLUBAIC01OSw2ICs1OSw4IEBAIGdzc19wc2V1ZG9fcmFuZG9tIChPTV91aW50MzIgKm1pbm9yX3N0YXR1cywKLSAgICAgICovCi0gCi0gICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIEdTU19TX05PX0NPTlRFWFQ7Ci0gICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOwotIAotICAgICBpZiAobWVjaCAhPSBOVUxMKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcm9jZXNzX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfcHJvY2Vzc19jb250ZXh0LmMKLWluZGV4IGJjMjYwYWUuLjM5NjhiNWQgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Byb2Nlc3NfY29udGV4dC5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Byb2Nlc3NfY29udGV4dC5jCi1AQCAtNjEsNiArNjEsOCBAQCBnc3NfYnVmZmVyX3QJCXRva2VuX2J1ZmZlcjsKLSAgICAgICovCi0gCi0gICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gCi0gICAgIGlmIChtZWNoKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19zZWFsLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NlYWwuYwotaW5kZXggZjE3MjQxYy4uM2RiMWVlMCAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2VhbC5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NlYWwuYwotQEAgLTkyLDYgKzkyLDggQEAgZ3NzX3dyYXAoIE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLAotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKyAgICAgICAgcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gCi0gICAgIGlmIChtZWNoKSB7Ci1AQCAtMjI2LDYgKzIyOCw4IEBAIGdzc193cmFwX3NpemVfbGltaXQoT01fdWludDMyICAqbWlub3Jfc3RhdHVzLAotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKyAgICAgICAgcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gCi0gICAgIGlmICghbWVjaCkKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NpZ24uYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2lnbi5jCi1pbmRleCA4NmQ2NDFhLi4wM2ZiZDhjIDEwMDY0NAotLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19zaWduLmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2lnbi5jCi1AQCAtOTQsNiArOTQsOCBAQCBnc3NfYnVmZmVyX3QJCW1zZ190b2tlbjsKLSAgICAgICovCi0gCi0gICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gCi0gICAgIGlmIChtZWNoKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bnNlYWwuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW5zZWFsLmMKLWluZGV4IDNlODA1M2MuLmMyMDg2MzUgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vuc2VhbC5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vuc2VhbC5jCi1AQCAtNzYsNiArNzYsOCBAQCBnc3NfcW9wX3QgKgkJcW9wX3N0YXRlOwotICAgICAgKiBjYWxsIGl0LgotICAgICAgKi8KLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOwotICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKLSAKLSAgICAgaWYgKG1lY2gpIHsKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9hZWFkLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9hZWFkLmMKLWluZGV4IGU3OGJmZjIuLjA2ODJiZDggMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9hZWFkLmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW53cmFwX2FlYWQuYwotQEAgLTE4Niw2ICsxODYsOCBAQCBnc3NfcW9wX3QJCSpxb3Bfc3RhdGU7Ci0gICAgICAqIGNhbGwgaXQuCi0gICAgICAqLwotICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKLSsgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCi0rCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7Ci0gICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOwotIAotICAgICBpZiAoIW1lY2gpCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bndyYXBfaW92LmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9pb3YuYwotaW5kZXggYzBkZDMxNC4uNTk5YmUyYyAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW53cmFwX2lvdi5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9pb3YuYwotQEAgLTg5LDYgKzg5LDggQEAgaW50CQkJaW92X2NvdW50OwotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOwotICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKLSAKLSAgICAgaWYgKG1lY2gpIHsKLUBAIC0xMjgsNiArMTMwLDggQEAgZ3NzX3ZlcmlmeV9taWNfaW92KE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLCBnc3NfY3R4X2lkX3QgY29udGV4dF9oYW5kbGUsCi0gCi0gICAgIC8qIFNlbGVjdCB0aGUgYXBwcm9wcmF0ZSB1bmRlcmx5aW5nIG1lY2hhbmlzbSByb3V0aW5lIGFuZCBjYWxsIGl0LiAqLwotICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KWNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIEdTU19TX05PX0NPTlRFWFQ7Ci0gICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbShjdHgtPm1lY2hfdHlwZSk7Ci0gICAgIGlmIChtZWNoID09IE5VTEwpCi0gCXJldHVybiBHU1NfU19CQURfTUVDSDsKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ZlcmlmeS5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ192ZXJpZnkuYwotaW5kZXggMTU3OGFlMS4uODk5NmZjZSAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdmVyaWZ5LmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdmVyaWZ5LmMKLUBAIC02NSw2ICs2NSw4IEBAIGdzc19xb3BfdCAqCQlxb3Bfc3RhdGU7Ci0gICAgICAqLwotIAotICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKLSsgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCi0rCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7Ci0gICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOwotIAotICAgICBpZiAobWVjaCkgewotZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfd3JhcF9hZWFkLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfYWVhZC5jCi1pbmRleCA5NmNkZjNjLi43ZmUzYjdiIDEwMDY0NAotLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2FlYWQuYwotKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2FlYWQuYwotQEAgLTI1Niw2ICsyNTYsOCBAQCBnc3NfYnVmZmVyX3QJCW91dHB1dF9tZXNzYWdlX2J1ZmZlcjsKLSAgICAgICogY2FsbCBpdC4KLSAgICAgICovCi0gICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOwotICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKLSAgICAgaWYgKCFtZWNoKQotIAlyZXR1cm4gKEdTU19TX0JBRF9NRUNIKTsKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfaW92LmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfaW92LmMKLWluZGV4IDQwY2Q5OGYuLjE0NDQ3YzQgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfaW92LmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfd3JhcF9pb3YuYwotQEAgLTkzLDYgKzkzLDggQEAgaW50CQkJaW92X2NvdW50OwotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOwotICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKLSAKLSAgICAgaWYgKG1lY2gpIHsKLUBAIC0xNTEsNiArMTUzLDggQEAgaW50CQkJaW92X2NvdW50OwotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOwotICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKLSAKLSAgICAgaWYgKG1lY2gpIHsKLUBAIC0xOTAsNiArMTk0LDggQEAgZ3NzX2dldF9taWNfaW92KE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLCBnc3NfY3R4X2lkX3QgY29udGV4dF9oYW5kbGUsCi0gCi0gICAgIC8qIFNlbGVjdCB0aGUgYXBwcm9wcmF0ZSB1bmRlcmx5aW5nIG1lY2hhbmlzbSByb3V0aW5lIGFuZCBjYWxsIGl0LiAqLwotICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KWNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIEdTU19TX05PX0NPTlRFWFQ7Ci0gICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbShjdHgtPm1lY2hfdHlwZSk7Ci0gICAgIGlmIChtZWNoID09IE5VTEwpCi0gCXJldHVybiBHU1NfU19CQURfTUVDSDsKLUBAIC0yMTgsNiArMjI0LDggQEAgZ3NzX2dldF9taWNfaW92X2xlbmd0aChPTV91aW50MzIgKm1pbm9yX3N0YXR1cywgZ3NzX2N0eF9pZF90IGNvbnRleHRfaGFuZGxlLAotIAotICAgICAvKiBTZWxlY3QgdGhlIGFwcHJvcHJhdGUgdW5kZXJseWluZyBtZWNoYW5pc20gcm91dGluZSBhbmQgY2FsbCBpdC4gKi8KLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCljb250ZXh0X2hhbmRsZTsKLSsgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCi0rCXJldHVybiBHU1NfU19OT19DT05URVhUOwotICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20oY3R4LT5tZWNoX3R5cGUpOwotICAgICBpZiAobWVjaCA9PSBOVUxMKQotIAlyZXR1cm4gR1NTX1NfQkFEX01FQ0g7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2V0Yy9kZWZhdWx0L2tyYjUtYWRtaW4tc2VydmVyIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9ldGMvZGVmYXVsdC9rcmI1LWFkbWluLXNlcnZlcgppbmRleCAyODM1OTI5Li5lMDk3MzUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2V0Yy9kZWZhdWx0L2tyYjUtYWRtaW4tc2VydmVyCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUvZXRjL2RlZmF1bHQva3JiNS1hZG1pbi1zZXJ2ZXIKQEAgLTEsNiArMSw0IEBACiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLiAgSWYgeW91IGNoYW5nZSBhbnl0aGluZyBpbiB0aGlzIGZpbGUgb3RoZXIgdGhhbiB0aGUKLSMgdmFsdWVzIG9mIFJVTl9LQURNSU5EIG9yIERBRU1PTl9BUkdTLCBmaXJzdCBydW4gZHBrZy1yZWNvbmZpZ3VyZQorIyB2YWx1ZXMgb2YgREFFTU9OX0FSR1MsIGZpcnN0IHJ1biBkcGtnLXJlY29uZmlndXJlCiAjIGtyYjUtYWRtaW4tc2VydmVyIGFuZCBkaXNhYmxlIG1hbmFnaW5nIHRoZSBrYWRtaW4gY29uZmlndXJhdGlvbiB3aXRoCiAjIGRlYmNvbmYuICBPdGhlcndpc2UsIGNoYW5nZXMgd2lsbCBiZSBvdmVyd3JpdHRlbi4KLQotUlVOX0tBRE1JTkQ9dHJ1ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9maXgtQ1ZFLTIwMTctMTEzNjgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2ZpeC1DVkUtMjAxNy0xMTM2OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJlYjdiYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2ZpeC1DVkUtMjAxNy0xMTM2OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20va3JiNS9rcmI1L2NvbW1pdC9mZmIzNWJhYWM2OTgxZjllODkxNGY4ZjNiZmZkMzdmMjg0Yjg1OTcwXQotCi1CYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTctMTEzNjguCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi1Gcm9tIGZmYjM1YmFhYzY5ODFmOWU4OTE0ZjhmM2JmZmQzN2YyODRiODU5NzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBHcmVnIEh1ZHNvbiA8Z2h1ZHNvbkBtaXQuZWR1PgotRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAxMjoxNDoyMCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IEtEQyB1bnNldCBzdGF0dXMgYXNzZXJ0aW9uIGZhaWx1cmVzCi0KLUFzc2lnbiBzdGF0dXMgdmFsdWVzIGlmIFM0VTJTZWxmIHBhZGF0YSBmYWlscyB0byBkZWNvZGUsIGlmIGFuCi1TNFUyUHJveHkgcmVxdWVzdCB1c2VzIGludmFsaWQgS0RDIG9wdGlvbnMsIG9yIGlmIGFuIFM0VTJQcm94eSByZXF1ZXN0Ci11c2VzIGFuIGV2aWRlbmNlIHRpY2tldCB3aGljaCBkb2VzIG5vdCBtYXRjaCB0aGUgY2Fub25pY2FsaXplZCByZXF1ZXN0Ci1zZXJ2ZXIgcHJpbmNpcGFsIG5hbWUuICBSZXBvcnRlZCBieSBTYW11ZWwgQ2FicmVyby4KLQotSWYgYSBzdGF0dXMgdmFsdWUgaXMgbm90IGFzc2lnbmVkIGR1cmluZyBLREMgcHJvY2Vzc2luZywgZGVmYXVsdCB0bwotIlVOS05PV05fUkVBU09OIiByYXRoZXIgdGhhbiBmYWlsaW5nIGFuIGFzc2VydGlvbi4gIFRoaXMgY2hhbmdlIHdpbGwKLXByZXZlbnQgZnV0dXJlIGRlbmlhbCBvZiBzZXJ2aWNlIGJ1Z3MgZHVlIHRvIHNpbWlsYXIgbWlzdGFrZXMsIGFuZAotd2lsbCBhbGxvdyB1cyB0byBvbWl0IGFzc2lnbmluZyBzdGF0dXMgdmFsdWVzIGZvciB1bmxpa2VseSBlcnJvcnMgc3VjaAotYXMgc21hbGwgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuCi0KLUNWRS0yMDE3LTExMzY4OgotCi1JbiBNSVQga3JiNSAxLjcgYW5kIGxhdGVyLCBhbiBhdXRoZW50aWNhdGVkIGF0dGFja2VyIGNhbiBjYXVzZSBhbgotYXNzZXJ0aW9uIGZhaWx1cmUgaW4ga3JiNWtkYyBieSBzZW5kaW5nIGFuIGludmFsaWQgUzRVMlNlbGYgb3IKLVM0VTJQcm94eSByZXF1ZXN0LgotCi0gIENWU1N2MyBWZWN0b3I6IEFWOk4vQUM6TC9QUjpML1VJOk4vUzpVL0M6Ti9JOk4vQTpIL0U6SC9STDpPL1JDOkMKLQotdGlja2V0OiA4NTk5IChuZXcpCi10YXJnZXRfdmVyc2lvbjogMS4xNS1uZXh0Ci10YXJnZXRfdmVyc2lvbjogMS4xNC1uZXh0Ci10YWdzOiBwdWxsdXAKLS0tLQotIHNyYy9rZGMvZG9fYXNfcmVxLmMgIHwgIDQgKystLQotIHNyYy9rZGMvZG9fdGdzX3JlcS5jIHwgIDMgKystCi0gc3JjL2tkYy9rZGNfdXRpbC5jICAgfCAxMCArKysrKysrKy0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2tkYy9kb19hc19yZXEuYyBiL3NyYy9rZGMvZG9fYXNfcmVxLmMKLWluZGV4IDJkM2FkMTMuLjliMjU2YzggMTAwNjQ0Ci0tLS0gYS9zcmMva2RjL2RvX2FzX3JlcS5jCi0rKysgYi9zcmMva2RjL2RvX2FzX3JlcS5jCi1AQCAtMzY2LDggKzM2Niw4IEBAIGZpbmlzaF9wcm9jZXNzX2FzX3JlcShzdHJ1Y3QgYXNfcmVxX3N0YXRlICpzdGF0ZSwga3JiNV9lcnJvcl9jb2RlIGVycmNvZGUpCi0gICAgIGRpZF9sb2cgPSAxOwotIAotIGVncmVzczoKLS0gICAgaWYgKGVycmNvZGUgIT0gMCkKLS0gICAgICAgIGFzc2VydCAoc3RhdGUtPnN0YXR1cyAhPSAwKTsKLSsgICAgaWYgKGVycmNvZGUgIT0gMCAmJiBzdGF0ZS0+c3RhdHVzID09IE5VTEwpCi0rICAgICAgICBzdGF0ZS0+c3RhdHVzID0gIlVOS05PV05fUkVBU09OIjsKLSAKLSAgICAgYXVfc3RhdGUtPnN0YXR1cyA9IHN0YXRlLT5zdGF0dXM7Ci0gICAgIGF1X3N0YXRlLT5yZXBseSA9ICZzdGF0ZS0+cmVwbHk7Ci1kaWZmIC0tZ2l0IGEvc3JjL2tkYy9kb190Z3NfcmVxLmMgYi9zcmMva2RjL2RvX3Rnc19yZXEuYwotaW5kZXggY2RjNzlhZC4uZDhkNjcxOSAxMDA2NDQKLS0tLSBhL3NyYy9rZGMvZG9fdGdzX3JlcS5jCi0rKysgYi9zcmMva2RjL2RvX3Rnc19yZXEuYwotQEAgLTgyMyw3ICs4MjMsOCBAQCBwcm9jZXNzX3Rnc19yZXEoc3RydWN0IHNlcnZlcl9oYW5kbGUgKmhhbmRsZSwga3JiNV9kYXRhICpwa3QsCi0gICAgIGZyZWUocmVwbHkuZW5jX3BhcnQuY2lwaGVydGV4dC5kYXRhKTsKLSAKLSBjbGVhbnVwOgotLSAgICBhc3NlcnQoc3RhdHVzICE9IE5VTEwpOwotKyAgICBpZiAoc3RhdHVzID09IE5VTEwpCi0rICAgICAgICBzdGF0dXMgPSAiVU5LTk9XTl9SRUFTT04iOwotICAgICBpZiAocmVwbHlfa2V5KQotICAgICAgICAga3JiNV9mcmVlX2tleWJsb2NrKGtkY19jb250ZXh0LCByZXBseV9rZXkpOwotICAgICBpZiAoZXJyY29kZSkKLWRpZmYgLS1naXQgYS9zcmMva2RjL2tkY191dGlsLmMgYi9zcmMva2RjL2tkY191dGlsLmMKLWluZGV4IDc3OGE2MjkuLmI3MTBhZWYgMTAwNjQ0Ci0tLS0gYS9zcmMva2RjL2tkY191dGlsLmMKLSsrKyBiL3NyYy9rZGMva2RjX3V0aWwuYwotQEAgLTEyMjAsOCArMTIyMCwxMCBAQCBrZGNfcHJvY2Vzc19mb3JfdXNlcihrZGNfcmVhbG1fdCAqa2RjX2FjdGl2ZV9yZWFsbSwKLSAgICAgcmVxX2RhdGEuZGF0YSA9IChjaGFyICopcGFfZGF0YS0+Y29udGVudHM7Ci0gCi0gICAgIGNvZGUgPSBkZWNvZGVfa3JiNV9wYV9mb3JfdXNlcigmcmVxX2RhdGEsICZmb3JfdXNlcik7Ci0tICAgIGlmIChjb2RlKQotKyAgICBpZiAoY29kZSkgewotKyAgICAgICAgKnN0YXR1cyA9ICJERUNPREVfUEFfRk9SX1VTRVIiOwotICAgICAgICAgcmV0dXJuIGNvZGU7Ci0rICAgIH0KLSAKLSAgICAgY29kZSA9IHZlcmlmeV9mb3JfdXNlcl9jaGVja3N1bShrZGNfY29udGV4dCwgdGdzX3Nlc3Npb24sIGZvcl91c2VyKTsKLSAgICAgaWYgKGNvZGUpIHsKLUBAIC0xMzIwLDggKzEzMjIsMTAgQEAga2RjX3Byb2Nlc3NfczR1X3g1MDlfdXNlcihrcmI1X2NvbnRleHQgY29udGV4dCwKLSAgICAgcmVxX2RhdGEuZGF0YSA9IChjaGFyICopcGFfZGF0YS0+Y29udGVudHM7Ci0gCi0gICAgIGNvZGUgPSBkZWNvZGVfa3JiNV9wYV9zNHVfeDUwOV91c2VyKCZyZXFfZGF0YSwgczR1X3g1MDlfdXNlcik7Ci0tICAgIGlmIChjb2RlKQotKyAgICBpZiAoY29kZSkgewotKyAgICAgICAgKnN0YXR1cyA9ICJERUNPREVfUEFfUzRVX1g1MDlfVVNFUiI7Ci0gICAgICAgICByZXR1cm4gY29kZTsKLSsgICAgfQotIAotICAgICBjb2RlID0gdmVyaWZ5X3M0dV94NTA5X3VzZXJfY2hlY2tzdW0oY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRnc19zdWJrZXkgPyB0Z3Nfc3Via2V5IDoKLUBAIC0xNjI0LDYgKzE2MjgsNyBAQCBrZGNfcHJvY2Vzc19zNHUycHJveHlfcmVxKGtkY19yZWFsbV90ICprZGNfYWN0aXZlX3JlYWxtLAotICAgICAgKiB0aGF0IGlzIHZhbGlkYXRlZCBwcmV2aW91c2x5IGluIHZhbGlkYXRlX3Rnc19yZXF1ZXN0KCkuCi0gICAgICAqLwotICAgICBpZiAocmVxdWVzdC0+a2RjX29wdGlvbnMgJiAoTk9OX1RHVF9PUFRJT04gfCBLRENfT1BUX0VOQ19US1RfSU5fU0tFWSkpIHsKLSsgICAgICAgICpzdGF0dXMgPSAiSU5WQUxJRF9TNFUyUFJPWFlfT1BUSU9OUyI7Ci0gICAgICAgICByZXR1cm4gS1JCNUtEQ19FUlJfQkFET1BUSU9OOwotICAgICB9Ci0gCi1AQCAtMTYzMSw2ICsxNjM2LDcgQEAga2RjX3Byb2Nlc3NfczR1MnByb3h5X3JlcShrZGNfcmVhbG1fdCAqa2RjX2FjdGl2ZV9yZWFsbSwKLSAgICAgaWYgKCFrcmI1X3ByaW5jaXBhbF9jb21wYXJlKGtkY19jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLT5wcmluYywgLyogYWZ0ZXIgY2Fub24gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wcmluYykpIHsKLSsgICAgICAgICpzdGF0dXMgPSAiRVZJREVOQ0VfVElDS0VUX01JU01BVENIIjsKLSAgICAgICAgIHJldHVybiBLUkI1S0RDX0VSUl9TRVJWRVJfTk9NQVRDSDsKLSAgICAgfQotIAotLS0gCi0yLjEwLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9rcmI1LWFkbWluLXNlcnZlci5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9rcmI1LWFkbWluLXNlcnZlci5zZXJ2aWNlCmluZGV4IDFiNDI3MTYuLjIxOTM5YTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUva3JiNS1hZG1pbi1zZXJ2ZXIuc2VydmljZQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2tyYjUtYWRtaW4tc2VydmVyLnNlcnZpY2UKQEAgLTcsNiArNyw3IEBACiBUeXBlPWZvcmtpbmcKIEV4ZWNTdGFydFByZT0vYmluL3NoIC1jICJ0ZXN0ICEgLWYgL3Zhci9sb2cva2FkbWluZC5sb2cgfHwgdGVzdCAhIC14IC9zYmluL3Jlc3RvcmVjb24gfHwgL3NiaW4vcmVzdG9yZWNvbiAtRiAvdmFyL2xvZy9rYWRtaW5kLmxvZyIKIEV4ZWNTdGFydD0vdXNyL3NiaW4va2FkbWluZAorRW52aXJvbm1lbnRGaWxlPS0vZXRjL2RlZmF1bHQva3JiNS1hZG1pbi1zZXJ2ZXIKIFN1Y2Nlc3NFeGl0U3RhdHVzPTEgMiBTSUdLSUxMCiBUaW1lb3V0U3RvcFNlYz0zMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2tyYjUta2RjLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2tyYjUta2RjLnNlcnZpY2UKaW5kZXggZDVlNWE5NS4uYmYzN2M0NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9rcmI1LWtkYy5zZXJ2aWNlCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUva3JiNS1rZGMuc2VydmljZQpAQCAtNiw2ICs2LDcgQEAKIFtTZXJ2aWNlXQogVHlwZT1mb3JraW5nCiBFeGVjU3RhcnQ9L3Vzci9zYmluL2tyYjVrZGMKK0Vudmlyb25tZW50RmlsZT0tL2V0Yy9kZWZhdWx0L2tyYjUta2RjCiBTdWNjZXNzRXhpdFN0YXR1cz0xIDIgU0lHS0lMTAogVGltZW91dFN0b3BTZWM9MzAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNV8xLjE1LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc1ZTg2MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi1TVU1NQVJZID0gIkEgbmV0d29yayBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCIKLURFU0NSSVBUSU9OID0gIktlcmJlcm9zIGlzIGEgc3lzdGVtIGZvciBhdXRoZW50aWNhdGluZyB1c2VycyBhbmQgc2VydmljZXMgb24gYSBuZXR3b3JrLiBcCi0gS2VyYmVyb3MgaXMgYSB0cnVzdGVkIHRoaXJkLXBhcnR5IHNlcnZpY2UuICBUaGF0IG1lYW5zIHRoYXQgdGhlcmUgaXMgYSBcCi0gdGhpcmQgcGFydHkgKHRoZSBLZXJiZXJvcyBzZXJ2ZXIpIHRoYXQgaXMgdHJ1c3RlZCBieSBhbGwgdGhlIGVudGl0aWVzIG9uIFwKLSB0aGUgbmV0d29yayAodXNlcnMgYW5kIHNlcnZpY2VzLCB1c3VhbGx5IGNhbGxlZCAicHJpbmNpcGFscyIpLiBcCi0gLiBcCi0gVGhpcyBpcyB0aGUgTUlUIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBLZXJiZXJvcyBWNS4gXAotIC4gXAotIFRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgS2VyYmVyb3Mga2V5IHNlcnZlciAoS0RDKS4gIFRoZSBLREMgbWFuYWdlcyBhbGwgXAotIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGZvciBhIEtlcmJlcm9zIHJlYWxtLCBob2xkcyB0aGUgbWFzdGVyIGtleXMgXAotIGZvciB0aGUgcmVhbG0sIGFuZCByZXNwb25kcyB0byBhdXRoZW50aWNhdGlvbiByZXF1ZXN0cy4gIFRoaXMgcGFja2FnZSBcCi0gc2hvdWxkIGJlIGluc3RhbGxlZCBvbiBib3RoIG1hc3RlciBhbmQgc2xhdmUgS0RDcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93ZWIubWl0LmVkdS9LZXJiZXJvcy8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtTfS8uLi9OT1RJQ0U7bWQ1PTNlMTJiOGEwNjVjY2EyNWRmZGNhYzczNGZiM2VjMGI5IgotREVQRU5EUyA9ICJuY3Vyc2VzIHV0aWwtbGludXggZTJmc3Byb2dzIGUyZnNwcm9ncy1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBiaW5jb25maWcgcGVybG5hdGl2ZSBzeXN0ZW1kIHVwZGF0ZS1yYy5kCi0KLVNIUlRfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi1TUkNfVVJJID0gImh0dHA6Ly93ZWIubWl0LmVkdS9rZXJiZXJvcy9kaXN0LyR7QlBOfS8ke1NIUlRfVkVSfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hY2xvY2FsLUFkZC1wYXJhbWV0ZXItdG8tZGlzYWJsZS1rZXl1dGlscy1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLXN1cHByZXNzLXVzci1saWItaW4ta3JiNS1jb25maWcucGF0Y2g7c3RyaXBsZXZlbD0yIFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzY29tcGlsZV9ubS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ldGMvaW5pdC5kL2tyYjUta2RjIFwKLSAgICAgICAgICAgZmlsZTovL2V0Yy9pbml0LmQva3JiNS1hZG1pbi1zZXJ2ZXIgXAotICAgICAgICAgICBmaWxlOi8vZXRjL2RlZmF1bHQva3JiNS1rZGMgXAotICAgICAgICAgICBmaWxlOi8vZXRjL2RlZmF1bHQva3JiNS1hZG1pbi1zZXJ2ZXIgXAotICAgICAgICAgICBmaWxlOi8va3JiNS1rZGMuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9rcmI1LWFkbWluLXNlcnZlci5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1DVkUtMjAxNy0xMTM2OC5wYXRjaDtzdHJpcGxldmVsPTIgXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTE0NjIucGF0Y2g7c3RyaXBsZXZlbD0yIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4MDIyZjNhMWNkZTg0NjNlNDRmZDM1ZWY0MjczMWY4NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MzdjODgzMWRkZDVmZGUyYTk5M2ZlZjQyNWRlZGI0ODQ2ODEwOWJiM2QzMjYxZWY4MzgyOTUwNDVhODllYjQ1IgotCi1DVkVfUFJPRFVDVCA9ICJrZXJiZXJvcyIKLQotUyA9ICIke1dPUktESVJ9LyR7QlB9L3NyYyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1saWJlZGl0LC0td2l0aG91dC1saWJlZGl0LGxpYmVkaXQiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1wa2luaXQtY3J5cHRvLWltcGw9b3BlbnNzbCwsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdba2V5dXRpbHNdID0gIi0tZW5hYmxlLWtleXV0aWxzLC0tZGlzYWJsZS1rZXl1dGlscyxrZXl1dGlscyIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmUsLS13aXRob3V0LXJlYWRsaW5lLHJlYWRsaW5lIgotCi1FWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGhvdXQtdGNsIC0td2l0aC1zeXN0ZW0tZXQgLS1kaXNhYmxlLXJwYXRoIgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImtyYjVfY3ZfYXR0cl9jb25zdHJ1Y3Rvcl9kZXN0cnVjdG9yPXllcyBhY19jdl9mdW5jX3JlZ2NvbXA9eWVzIFwKLSAgICAgICAgICAgICAgICAgIGFjX2N2X3ByaW50Zl9wb3NpdGlvbmFsPXllcyBhY19jdl9maWxlX19ldGNfZW52aXJvbm1lbnQ9eWVzIFwKLSAgICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2V0Y19USU1FWk9ORT1ubyIKLQotQ0ZMQUdTX2FwcGVuZCA9ICIgLWZQSUMgLURERVNUUlVDVE9SX0FUVFJfV09SS1M9MSAtSSR7U1RBR0lOR19JTkNESVJ9L2V0IgotTERGTEFHU19hcHBlbmQgPSAiIC1wdGhyZWFkIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlCi0gICAgYXV0b3JlY29uZgotICAgIG9lX3J1bmNvbmYKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXJmICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9ydW4KLSAgICBybSAtZiAke0R9JHtiaW5kaXJ9L3NjbGllbnQKLSAgICBybSAtZiAke0R9JHtiaW5kaXJ9L3NpbV9jbGllbnQKLSAgICBybSAtZiAke0R9JHtiaW5kaXJ9L3V1Y2xpZW50Ci0gICAgcm0gLWYgJHtEfSR7c2JpbmRpcn0va3JiNS1zZW5kLXByCi0gICAgcm0gLWYgJHtEfSR7c2JpbmRpcn0vc2ltX3NlcnZlcgotICAgIHJtIC1mICR7RH0ke3NiaW5kaXJ9L3NzZXJ2ZXIKLSAgICBybSAtZiAke0R9JHtzYmluZGlyfS91dXNlcnZlcgotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIG1rZGlyIC1wICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZXRjL2luaXQuZC8qICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZXRjL2RlZmF1bHQvKiAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdAotCi0gICAgICAgIG1rZGlyIC1wICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotICAgICAgICBlY2hvICJkIHJvb3Qgcm9vdCAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vcnVuL2tyYjVrZGMgbm9uZSIgXAotICAgICAgICAgICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzg3X2tyYjUKLSAgICBmaQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgICAgICBlY2hvICJkIC9ydW4va3JiNWtkYyAtIC0gLSAtIiBcCi0gICAgICAgICAgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9rcmI1LmNvbmYKLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tyYjUtYWRtaW4tc2VydmVyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0va3JiNS1rZGMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQotICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1hZG1pbi1zZXJ2ZXIgXAotICAgICAgICAgICAgICR7UE59LWdzcy1zYW1wbGVzIFwKLSAgICAgICAgICAgICAke1BOfS1rNXRscyBcCi0gICAgICAgICAgICAgJHtQTn0ta2RjIFwKLSAgICAgICAgICAgICAke1BOfS1rZGMtbGRhcCBcCi0gICAgICAgICAgICAgJHtQTn0ta3Byb3BkIFwKLSAgICAgICAgICAgICAke1BOfS1vdHAgXAotICAgICAgICAgICAgICR7UE59LXBraW5pdCBcCi0gICAgICAgICAgICAgJHtQTn0tdXNlciBcCi0gICAgICAgICAgICAgbGliZ3NzYXBpLWtyYjUgXAotICAgICAgICAgICAgIGxpYmdzc3JwYyBcCi0gICAgICAgICAgICAgbGliazVjcnlwdG8gXAotICAgICAgICAgICAgIGxpYmthZG01Y2xudC1taXQgXAotICAgICAgICAgICAgIGxpYmthZG01c3J2LW1pdCBcCi0gICAgICAgICAgICAgbGlia2RiNSBcCi0gICAgICAgICAgICAgbGlia3JhZCBcCi0gICAgICAgICAgICAgbGlia3JiNSBcCi0gICAgICAgICAgICAgbGlia3JiNXN1cHBvcnQgXAotICAgICAgICAgICAgIGxpYnZlcnRvIgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0va3JiNS9wbHVnaW5zL3ByZWF1dGgvdGVzdC5zbyIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9leGFtcGxlcyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy8qLy5kZWJ1ZyIKLQotRklMRVNfJHtQTn0tYWRtaW4tc2VydmVyID0gIiR7c2JpbmRpcn0va2FkbWluLmxvY2FsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L2thZG1pbmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0va3Byb3AgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGVmYXVsdC9rcmI1LWFkbWluLXNlcnZlciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQva3JiNS1hZG1pbi1zZXJ2ZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0va3JiNS1hZG1pbi1zZXJ2ZXIuc2VydmljZSIKLQotRklMRVNfJHtQTn0tZ3NzLXNhbXBsZXMgPSAiJHtiaW5kaXJ9L2dzcy1jbGllbnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9nc3Mtc2VydmVyIgotCi1GSUxFU18ke1BOfS1rNXRscyA9ICIke2xpYmRpcn0va3JiNS9wbHVnaW5zL3Rscy9rNXRscy5zbyIKLQotRklMRVNfJHtQTn0ta2RjID0gIiR7bGliZGlyfS9rcmI1L3BsdWdpbnMva2RiL2RiMi5zbyBcCi0gICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9rcmI1a2RjIFwKLSAgICAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L2tkYjVfdXRpbCBcCi0gICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9rcHJvcGxvZyBcCi0gICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9rcmI1a2RjIFwKLSAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQva3JiNS1rZGMgXAotICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvODdfa3JiNSBcCi0gICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQva3JiNS1rZGMgXAotICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9rcmI1LmNvbmYgXAotICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0va3JiNS1rZGMuc2VydmljZSIKLQotRklMRVNfJHtQTn0ta2RjLWxkYXAgPSAiJHtsaWJkaXJ9L2tyYjUvbGlia2RiX2xkYXAke1NPTElCU30gXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy9rZGIva2xkYXAuc28gXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9rZGI1X2xkYXBfdXRpbCIKLQotRklMRVNfJHtQTn0ta3Byb3BkID0gIiR7c2JpbmRpcn0va3Byb3BkIgotRklMRVNfJHtQTn0tb3RwID0gIiR7bGliZGlyfS9rcmI1L3BsdWdpbnMvcHJlYXV0aC9vdHAuc28iCi1GSUxFU18ke1BOfS1wa2luaXQgPSAiJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy9wcmVhdXRoL3BraW5pdC5zbyIKLUZJTEVTXyR7UE59LXVzZXIgPSAiJHtiaW5kaXJ9L2sqIgotCi1GSUxFU19saWJnc3NhcGkta3JiNSA9ICIke2xpYmRpcn0vbGliZ3NzYXBpX2tyYjUke1NPTElCU30iCi1GSUxFU19saWJnc3NycGMgPSAiJHtsaWJkaXJ9L2xpYmdzc3JwYyR7U09MSUJTfSIKLUZJTEVTX2xpYms1Y3J5cHRvID0gIiR7bGliZGlyfS9saWJrNWNyeXB0byR7U09MSUJTfSIKLUZJTEVTX2xpYmthZG01Y2xudC1taXQgPSAiJHtsaWJkaXJ9L2xpYmthZG01Y2xudF9taXQke1NPTElCU30iCi1GSUxFU19saWJrYWRtNXNydi1taXQgPSAiJHtsaWJkaXJ9L2xpYmthZG01c3J2X21pdCR7U09MSUJTfSIKLUZJTEVTX2xpYmtkYjUgPSAiJHtsaWJkaXJ9L2xpYmtkYjUke1NPTElCU30iCi1GSUxFU19saWJrcmFkID0gIiR7bGliZGlyfS9saWJrcmFkJHtTT0xJQlN9IgotRklMRVNfbGlia3JiNSA9ICIke2xpYmRpcn0vbGlia3JiNSR7U09MSUJTfSBcCi0gICAgICAgICAgICAgICAgICR7bGliZGlyfS9rcmI1L3BsdWdpbnMvYXV0aGRhdGEgXAotICAgICAgICAgICAgICAgICAke2xpYmRpcn0va3JiNS9wbHVnaW5zL2xpYmtyYjUiCi1GSUxFU19saWJrcmI1c3VwcG9ydCA9ICIke2xpYmRpcn0vbGlia3JiNXN1cHBvcnQke1NPTElCU30iCi1GSUxFU19saWJ2ZXJ0byA9ICIke2xpYmRpcn0vbGlidmVydG8ke1NPTElCU30iCi0KLVJERVBFTkRTXyR7UE59LWthZG1pbi1zZXJ2ZXIgPSAiJHtQTn0ta2RjIgotUkRFUEVORFNfJHtQTn0ta3Byb3BkID0gIiR7UE59LWtkYyIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1hZG1pbi1zZXJ2ZXIgJHtQTn0ta2RjIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LWFkbWluLXNlcnZlciA9ICJrcmI1LWFkbWluLXNlcnZlciIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1rZGMgPSAia3JiNS1rZGMiCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tYWRtaW4tc2VydmVyICR7UE59LWtkYyIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1hZG1pbi1zZXJ2ZXIgPSAia3JiNS1hZG1pbi1zZXJ2ZXIuc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1rZGMgPSAia3JiNS1rZGMuc2VydmljZSIKLQotcGtnX3Bvc3RpbnN0XyR7UE59LWtkYyAoKSB7Ci0gICAgaWYgWyAteiAiJEQiIF07IHRoZW4KLSAgICAgICAgaWYgY29tbWFuZCAtdiBzeXN0ZW1kLXRtcGZpbGVzID4vZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgIHN5c3RlbWQtdG1wZmlsZXMgLS1jcmVhdGUgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2tyYjUuY29uZgotICAgICAgICBlbGlmIFsgLWUgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXTsgdGhlbgotICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCi0gICAgICAgIGZpCi0gICAgZmkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNV8xLjE2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNV8xLjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NTI0MGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTYuYmIKQEAgLTAsMCArMSwxODggQEAKK1NVTU1BUlkgPSAiQSBuZXR3b3JrIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sIgorREVTQ1JJUFRJT04gPSAiS2VyYmVyb3MgaXMgYSBzeXN0ZW0gZm9yIGF1dGhlbnRpY2F0aW5nIHVzZXJzIGFuZCBzZXJ2aWNlcyBvbiBhIG5ldHdvcmsuIFwKKyBLZXJiZXJvcyBpcyBhIHRydXN0ZWQgdGhpcmQtcGFydHkgc2VydmljZS4gIFRoYXQgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIFwKKyB0aGlyZCBwYXJ0eSAodGhlIEtlcmJlcm9zIHNlcnZlcikgdGhhdCBpcyB0cnVzdGVkIGJ5IGFsbCB0aGUgZW50aXRpZXMgb24gXAorIHRoZSBuZXR3b3JrICh1c2VycyBhbmQgc2VydmljZXMsIHVzdWFsbHkgY2FsbGVkICJwcmluY2lwYWxzIikuIFwKKyAuIFwKKyBUaGlzIGlzIHRoZSBNSVQgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIEtlcmJlcm9zIFY1LiBcCisgLiBcCisgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBLZXJiZXJvcyBrZXkgc2VydmVyIChLREMpLiAgVGhlIEtEQyBtYW5hZ2VzIGFsbCBcCisgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgZm9yIGEgS2VyYmVyb3MgcmVhbG0sIGhvbGRzIHRoZSBtYXN0ZXIga2V5cyBcCisgZm9yIHRoZSByZWFsbSwgYW5kIHJlc3BvbmRzIHRvIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3RzLiAgVGhpcyBwYWNrYWdlIFwKKyBzaG91bGQgYmUgaW5zdGFsbGVkIG9uIGJvdGggbWFzdGVyIGFuZCBzbGF2ZSBLRENzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3dlYi5taXQuZWR1L0tlcmJlcm9zLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9Ly4uL05PVElDRTttZDU9NTliOGRhNjUyZjA3MTg2YjQ0NzgyYTg0NTQ1NzRmMzAiCitERVBFTkRTID0gIm5jdXJzZXMgdXRpbC1saW51eCBlMmZzcHJvZ3MgZTJmc3Byb2dzLW5hdGl2ZSBvcGVuc3NsIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgYmluY29uZmlnIHBlcmxuYXRpdmUgc3lzdGVtZCB1cGRhdGUtcmMuZAorCitTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorU1JDX1VSSSA9ICJodHRwOi8vd2ViLm1pdC5lZHUva2VyYmVyb3MvZGlzdC8ke0JQTn0vJHtTSFJUX1ZFUn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWNsb2NhbC1BZGQtcGFyYW1ldGVyLXRvLWRpc2FibGUta2V5dXRpbHMtZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi1zdXBwcmVzcy11c3ItbGliLWluLWtyYjUtY29uZmlnLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9zc2NvbXBpbGVfbm0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZXRjL2luaXQuZC9rcmI1LWtkYyBcCisgICAgICAgICAgIGZpbGU6Ly9ldGMvaW5pdC5kL2tyYjUtYWRtaW4tc2VydmVyIFwKKyAgICAgICAgICAgZmlsZTovL2V0Yy9kZWZhdWx0L2tyYjUta2RjIFwKKyAgICAgICAgICAgZmlsZTovL2V0Yy9kZWZhdWx0L2tyYjUtYWRtaW4tc2VydmVyIFwKKyAgICAgICAgICAgZmlsZTovL2tyYjUta2RjLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8va3JiNS1hZG1pbi1zZXJ2ZXIuc2VydmljZSBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMjNjNWU5ZjA3NjQyZGI0YTY3ZjdhNWI2MTY4YjEzMTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmFlYjEyNWY4M2IwZmI0Y2RiMmY5OWYwODgxNDA2MzFiYjQ3ZDk3NTk4MmRlMDk1NmQxOGM4NTg0Mjk2OWUwOCIKKworQ1ZFX1BST0RVQ1QgPSAia2VyYmVyb3MiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQfS9zcmMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1saWJlZGl0LC0td2l0aG91dC1saWJlZGl0LGxpYmVkaXQiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1jcnlwdG8taW1wbD1vcGVuc3NsLCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1trZXl1dGlsc10gPSAiLS1lbmFibGUta2V5dXRpbHMsLS1kaXNhYmxlLWtleXV0aWxzLGtleXV0aWxzIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZSwtLXdpdGhvdXQtcmVhZGxpbmUscmVhZGxpbmUiCisKK0VYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10Y2wgLS13aXRoLXN5c3RlbS1ldCAtLWRpc2FibGUtcnBhdGgiCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAia3JiNV9jdl9hdHRyX2NvbnN0cnVjdG9yX2Rlc3RydWN0b3I9eWVzIGFjX2N2X2Z1bmNfcmVnY29tcD15ZXMgXAorICAgICAgICAgICAgICAgICAgYWNfY3ZfcHJpbnRmX3Bvc2l0aW9uYWw9eWVzIGFjX2N2X2ZpbGVfX2V0Y19lbnZpcm9ubWVudD15ZXMgXAorICAgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZXRjX1RJTUVaT05FPW5vIgorCitDRkxBR1NfYXBwZW5kID0gIiAtZlBJQyAtRERFU1RSVUNUT1JfQVRUUl9XT1JLUz0xIC1JJHtTVEFHSU5HX0lOQ0RJUn0vZXQiCitDRkxBR1NfYXBwZW5kX3Jpc2N2NjQgPSAiIC1EX1JFRU5UUkFOVCAtcHRocmVhZCIKK0xERkxBR1NfYXBwZW5kID0gIiAtcHRocmVhZCIKKworZG9fY29uZmlndXJlKCkgeworICAgIGdudS1jb25maWdpemUgLS1mb3JjZQorICAgIGF1dG9yZWNvbmYKKyAgICBvZV9ydW5jb25mCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtIC1yZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vcnVuCisgICAgcm0gLWYgJHtEfSR7YmluZGlyfS9zY2xpZW50CisgICAgcm0gLWYgJHtEfSR7YmluZGlyfS9zaW1fY2xpZW50CisgICAgcm0gLWYgJHtEfSR7YmluZGlyfS91dWNsaWVudAorICAgIHJtIC1mICR7RH0ke3NiaW5kaXJ9L2tyYjUtc2VuZC1wcgorICAgIHJtIC1mICR7RH0ke3NiaW5kaXJ9L3NpbV9zZXJ2ZXIKKyAgICBybSAtZiAke0R9JHtzYmluZGlyfS9zc2VydmVyCisgICAgcm0gLWYgJHtEfSR7c2JpbmRpcn0vdXVzZXJ2ZXIKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0CisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2V0Yy9pbml0LmQvKiAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2V0Yy9kZWZhdWx0LyogJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKworICAgICAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKyAgICAgICAgZWNobyAiZCByb290IHJvb3QgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L3J1bi9rcmI1a2RjIG5vbmUiIFwKKyAgICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy84N19rcmI1CisKKyAgICAgICAgZWNobyAiUlVOX0tBRE1JTkQ9dHJ1ZSIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQva3JiNS1hZG1pbi1zZXJ2ZXIKKyAgICBmaQorICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBlY2hvICJkIC9ydW4va3JiNWtkYyAtIC0gLSAtIiBcCisgICAgICAgICAgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9rcmI1LmNvbmYKKworICAgICAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdAorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ldGMvZGVmYXVsdC8qICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0CisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rcmI1LWFkbWluLXNlcnZlci5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tyYjUta2RjLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBmaQorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tYWRtaW4tc2VydmVyIFwKKyAgICAgICAgICAgICAke1BOfS1nc3Mtc2FtcGxlcyBcCisgICAgICAgICAgICAgJHtQTn0tazV0bHMgXAorICAgICAgICAgICAgICR7UE59LWtkYyBcCisgICAgICAgICAgICAgJHtQTn0ta2RjLWxkYXAgXAorICAgICAgICAgICAgICR7UE59LWtwcm9wZCBcCisgICAgICAgICAgICAgJHtQTn0tb3RwIFwKKyAgICAgICAgICAgICAke1BOfS1wa2luaXQgXAorICAgICAgICAgICAgICR7UE59LXVzZXIgXAorICAgICAgICAgICAgIGxpYmdzc2FwaS1rcmI1IFwKKyAgICAgICAgICAgICBsaWJnc3NycGMgXAorICAgICAgICAgICAgIGxpYms1Y3J5cHRvIFwKKyAgICAgICAgICAgICBsaWJrYWRtNWNsbnQtbWl0IFwKKyAgICAgICAgICAgICBsaWJrYWRtNXNydi1taXQgXAorICAgICAgICAgICAgIGxpYmtkYjUgXAorICAgICAgICAgICAgIGxpYmtyYWQgXAorICAgICAgICAgICAgIGxpYmtyYjUgXAorICAgICAgICAgICAgIGxpYmtyYjVzdXBwb3J0IFwKKyAgICAgICAgICAgICBsaWJ2ZXJ0byIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy9wcmVhdXRoL3Rlc3Quc28iCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vZXhhbXBsZXMiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9rcmI1L3BsdWdpbnMvKi8uZGVidWciCisKK0ZJTEVTXyR7UE59LWFkbWluLXNlcnZlciA9ICIke3NiaW5kaXJ9L2thZG1pbi5sb2NhbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9rYWRtaW5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L2twcm9wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQva3JiNS1hZG1pbi1zZXJ2ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tyYjUtYWRtaW4tc2VydmVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2tyYjUtYWRtaW4tc2VydmVyLnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59LWdzcy1zYW1wbGVzID0gIiR7YmluZGlyfS9nc3MtY2xpZW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0vZ3NzLXNlcnZlciIKKworRklMRVNfJHtQTn0tazV0bHMgPSAiJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy90bHMvazV0bHMuc28iCisKK0ZJTEVTXyR7UE59LWtkYyA9ICIke2xpYmRpcn0va3JiNS9wbHVnaW5zL2tkYi9kYjIuc28gXAorICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0va3JiNWtkYyBcCisgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9rZGI1X3V0aWwgXAorICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0va3Byb3Bsb2cgXAorICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0va3JiNWtkYyBcCisgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kZWZhdWx0L2tyYjUta2RjIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzg3X2tyYjUgXAorICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tyYjUta2RjIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQva3JiNS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2tyYjUta2RjLnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59LWtkYy1sZGFwID0gIiR7bGliZGlyfS9rcmI1L2xpYmtkYl9sZGFwJHtTT0xJQlN9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9rcmI1L3BsdWdpbnMva2RiL2tsZGFwLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0va2RiNV9sZGFwX3V0aWwiCisKK0ZJTEVTXyR7UE59LWtwcm9wZCA9ICIke3NiaW5kaXJ9L2twcm9wZCIKK0ZJTEVTXyR7UE59LW90cCA9ICIke2xpYmRpcn0va3JiNS9wbHVnaW5zL3ByZWF1dGgvb3RwLnNvIgorRklMRVNfJHtQTn0tcGtpbml0ID0gIiR7bGliZGlyfS9rcmI1L3BsdWdpbnMvcHJlYXV0aC9wa2luaXQuc28iCitGSUxFU18ke1BOfS11c2VyID0gIiR7YmluZGlyfS9rKiIKKworRklMRVNfbGliZ3NzYXBpLWtyYjUgPSAiJHtsaWJkaXJ9L2xpYmdzc2FwaV9rcmI1JHtTT0xJQlN9IgorRklMRVNfbGliZ3NzcnBjID0gIiR7bGliZGlyfS9saWJnc3NycGMke1NPTElCU30iCitGSUxFU19saWJrNWNyeXB0byA9ICIke2xpYmRpcn0vbGliazVjcnlwdG8ke1NPTElCU30iCitGSUxFU19saWJrYWRtNWNsbnQtbWl0ID0gIiR7bGliZGlyfS9saWJrYWRtNWNsbnRfbWl0JHtTT0xJQlN9IgorRklMRVNfbGlia2FkbTVzcnYtbWl0ID0gIiR7bGliZGlyfS9saWJrYWRtNXNydl9taXQke1NPTElCU30iCitGSUxFU19saWJrZGI1ID0gIiR7bGliZGlyfS9saWJrZGI1JHtTT0xJQlN9IgorRklMRVNfbGlia3JhZCA9ICIke2xpYmRpcn0vbGlia3JhZCR7U09MSUJTfSIKK0ZJTEVTX2xpYmtyYjUgPSAiJHtsaWJkaXJ9L2xpYmtyYjUke1NPTElCU30gXAorICAgICAgICAgICAgICAgICAke2xpYmRpcn0va3JiNS9wbHVnaW5zL2F1dGhkYXRhIFwKKyAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy9saWJrcmI1IgorRklMRVNfbGlia3JiNXN1cHBvcnQgPSAiJHtsaWJkaXJ9L2xpYmtyYjVzdXBwb3J0JHtTT0xJQlN9IgorRklMRVNfbGlidmVydG8gPSAiJHtsaWJkaXJ9L2xpYnZlcnRvJHtTT0xJQlN9IgorCitSREVQRU5EU18ke1BOfS1rYWRtaW4tc2VydmVyID0gIiR7UE59LWtkYyIKK1JERVBFTkRTXyR7UE59LWtwcm9wZCA9ICIke1BOfS1rZGMiCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tYWRtaW4tc2VydmVyICR7UE59LWtkYyIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfS1hZG1pbi1zZXJ2ZXIgPSAia3JiNS1hZG1pbi1zZXJ2ZXIiCitJTklUU0NSSVBUX05BTUVfJHtQTn0ta2RjID0gImtyYjUta2RjIgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWFkbWluLXNlcnZlciAke1BOfS1rZGMiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tYWRtaW4tc2VydmVyID0gImtyYjUtYWRtaW4tc2VydmVyLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0ta2RjID0gImtyYjUta2RjLnNlcnZpY2UiCisKK3BrZ19wb3N0aW5zdF8ke1BOfS1rZGMgKCkgeworICAgIGlmIFsgLXogIiREIiBdOyB0aGVuCisgICAgICAgIGlmIGNvbW1hbmQgLXYgc3lzdGVtZC10bXBmaWxlcyA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgICBzeXN0ZW1kLXRtcGZpbGVzIC0tY3JlYXRlICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9rcmI1LmNvbmYKKyAgICAgICAgZWxpZiBbIC1lICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF07IHRoZW4KKyAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQorICAgICAgICBmaQorICAgIGZpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pLzAwMDEtRGV0ZWN0LWNsYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnFtaS9saWJxbWkvMDAwMS1EZXRlY3QtY2xhbmcucGF0Y2gKaW5kZXggNDA0N2ZmYi4uN2EzNDI5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnFtaS9saWJxbWkvMDAwMS1EZXRlY3QtY2xhbmcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnFtaS9saWJxbWkvMDAwMS1EZXRlY3QtY2xhbmcucGF0Y2gKQEAgLTEyLDYgKzEyLDcgQEAKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiAtLS0KICBtNC9jb21waWxlci13YXJuaW5ncy5tNCB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCkBAIC01Myw3ICs1NCw3IEBACiAgCQkgICAgICAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCAtV3N0cmljdC1wcm90b3R5cGVzIFwKIEBAIC0xNywyMiArMzcsMjMgQEAgaWYgdGVzdCAiJEdDQyIgPSAieWVzIiAtYSAiJHNldF9tb3JlX3dhcm5pbmdzIiAhPSAibm8iOyB0aGVuCiAgCQkgICAgICAtV21pc3NpbmctaW5jbHVkZS1kaXJzIC1XYWdncmVnYXRlLXJldHVybiBcCi0gCQkgICAgICAtV2Zvcm1hdC1zZWN1cml0eTsgZG8KKyAJCSAgICAgIC1XZm9ybWF0LXNlY3VyaXR5IC1XdHlwZS1saW1pdHM7IGRvCiAgCQlTQVZFX0NGTEFHUz0iJENGTEFHUyIKIC0JCUNGTEFHUz0iJENGTEFHUyAkb3B0aW9uIgogKwkJQ0ZMQUdTPSIkQ0ZMQUdTICRvcHRpb24gJFdFUlJPUiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pXzEuMTYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pXzEuMTYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBjMjZjMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjE2LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gImxpYnFtaSBpcyBhIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBkZXZpY2VzIGJ5IFFNSSBwcm90b2NvbCIKLURFU0NSSVBUSU9OID0gImxpYnFtaSBpcyBhIGdsaWItYmFzZWQgbGlicmFyeSBmb3IgdGFsa2luZyB0byBXV0FOIG1vZGVtcyBhbmQgZGV2aWNlcyB3aGljaCBzcGVhayB0aGUgUXVhbGNvbW0gTVNNIEludGVyZmFjZSAoUU1JKSBwcm90b2NvbCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGlicW1pIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0iCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgbGliZ3VkZXYgbGlibWJpbSBnbGliLTIuMC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiYXNoLWNvbXBsZXRpb24KLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURldGVjdC1jbGFuZy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0OTcwYzExMGYxNjBiMzM2MzdhMzUxNTAwNGM2MzdiMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3YWI2YmI0N2ZkMjNiZjRkM2ZhMTc0MjRlNDBlYTU1NTJkMDhiMTllNWVlNGYxMjVmMjFmMzE2YzgwODZiYTJhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnFtaS9saWJxbWlfMS4yMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnFtaS9saWJxbWlfMS4yMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMDFjYmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjIwLjAuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJsaWJxbWkgaXMgYSBsaWJyYXJ5IGZvciB0YWxraW5nIHRvIFdXQU4gZGV2aWNlcyBieSBRTUkgcHJvdG9jb2wiCitERVNDUklQVElPTiA9ICJsaWJxbWkgaXMgYSBnbGliLWJhc2VkIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBtb2RlbXMgYW5kIGRldmljZXMgd2hpY2ggc3BlYWsgdGhlIFF1YWxjb21tIE1TTSBJbnRlcmZhY2UgKFFNSSkgcHJvdG9jb2wiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYnFtaSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiIFwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorIgorCitERVBFTkRTID0gImdsaWItMi4wIGxpYmd1ZGV2IGxpYm1iaW0gZ2xpYi0yLjAtbmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmFzaC1jb21wbGV0aW9uCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EZXRlY3QtY2xhbmcucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNzk3ZTM2NTUyMWRmNzZiNzdiMDY3ZTYzMTc2MThiNDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjE0MjhjZDM3NDljNTYyNDY1NjUxMjNmNzA3ZmVlNTEyMzg2NTFhMjJjNjBiZGM4NWViY2U5NzM4ODYyNmViNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1di9saWJ1dl8xLjExLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXYvbGlidXZfMS4xMS4wLmJiCmluZGV4IDBhNTg0NmIuLmNhNDY4NWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1di9saWJ1dl8xLjExLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnV2L2xpYnV2XzEuMTEuMC5iYgpAQCAtNCwxMCArNCwxMCBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iYjVlYTBkNjUxZjRjMzUxOTMyNzE3MTkwNjA0NTc3NSIKIAotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlidXYvJHtCUE59L2FyY2hpdmUvdiR7UFZ9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE1NTUwYTlmNWY0NWY3ZjMyYWUyZDliYjBhMjFhMmE3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZlYzdlZWM2ZWNjMjRiMWE4ZmZlZGViZWRiMmZlOTMxM2ZmZmI1NDEwZGU4OWFhZjc4NGRkMDEwODA0MTFjN2EiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gIjc0NTJlZjRlMDZhNGY5OWVlMjZiNjk0YzY1NDc2NDAxNTM0ZjI3MjUiCitCUkFOQ0ggPSAidjEueCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saWJ1di9saWJ1di5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPSR7QlJBTkNIfTsiCiAKIGluaGVyaXQgYXV0b3Rvb2xzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ3ZWJzb2NrZXRzL2xpYndlYnNvY2tldHNfMi4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlid2Vic29ja2V0cy9saWJ3ZWJzb2NrZXRzXzIuMS4wLmJiCmluZGV4IDkzNTQ3OTkuLjEwMGYzYTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ3ZWJzb2NrZXRzL2xpYndlYnNvY2tldHNfMi4xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYndlYnNvY2tldHMvbGlid2Vic29ja2V0c18yLjEuMC5iYgpAQCAtNSwxMCArNSw5IEBACiAKIERFUEVORFMgPSAiemxpYiIKIAotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2FybWNhdC9saWJ3ZWJzb2NrZXRzL2FyY2hpdmUvdiR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRkZjNiZTU3ZGVlNDNhZWViZDU0YTNlZDU2NTY4ZjUwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjYzk2YWFhNjA5ZGFhZTRkM2Y3YWIxZWU0ODAxMjY3MDllZjRmNmE4YmY5Yzg1ZGU0MGFhZTQ4ZTM4Y2NlNjYiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gIjczNTU3NTA5YmQxNWY5NWExYWQwODFhNmY0ZmFiNDhmZjc3NDMyMTUiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vd2FybWNhdC9saWJ3ZWJzb2NrZXRzLmdpdDtwcm90b2NvbD1odHRwczsiCiAKIGluaGVyaXQgY21ha2UgcGtnY29uZmlnCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMDAwMS1jb25maWcubWstYWxsb3ctcHJlZml4LW1hbmRpci1sb2NhbGVkaXItZnJvbS1lbnZpcm9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy8wMDAxLWNvbmZpZy5tay1hbGxvdy1wcmVmaXgtbWFuZGlyLWxvY2FsZWRpci1mcm9tLWVudmlyb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVhYTI3NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMDAwMS1jb25maWcubWstYWxsb3ctcHJlZml4LW1hbmRpci1sb2NhbGVkaXItZnJvbS1lbnZpcm9uLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gMGJlMzgzMDEyNDlkNzk3ZWMxZjU5MDcxY2M4NjhjZWRhNmQ0NzIwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwRHJhc3ppaz89IDxhbmRyZS5kcmFzemlrQGpjaS5jb20+CitEYXRlOiBUdWUsIDEyIEFwciAyMDE2IDEyOjUwOjMyICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBjb25maWcubWs6IGFsbG93IHByZWZpeCAvIG1hbmRpciAvIGxvY2FsZWRpciBmcm9tCisgZW52aXJvbm1lbnQKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworV2Ugd2FudCB0byBjb250cm9sIHRoZW0gdXNpbmcgT0UgZW52aXJvbm1lbnQgdmFyaWFibGVzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkLXNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KKy0tLQorIGNvbmZpZy5tayB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZy5tayBiL2NvbmZpZy5taworaW5kZXggNzFmMTdlNS4uODFkOTcwMiAxMDA2NDQKKy0tLSBhL2NvbmZpZy5taworKysrIGIvY29uZmlnLm1rCitAQCAtMjQ5LDcgKzI0OSw3IEBAIGlmZXEgKCQoV0lUSF9ET0NTKSx5ZXMpCisgZW5kaWYKKyAKKyBJTlNUQUxMPz1pbnN0YWxsCistcHJlZml4PS91c3IvbG9jYWwKKy1tYW5kaXI9JHtwcmVmaXh9L3NoYXJlL21hbgorLWxvY2FsZWRpcj0ke3ByZWZpeH0vc2hhcmUvbG9jYWxlCisrcHJlZml4Pz0vdXNyL2xvY2FsCisrbWFuZGlyPz0ke3ByZWZpeH0vc2hhcmUvbWFuCisrbG9jYWxlZGlyPz0ke3ByZWZpeH0vc2hhcmUvbG9jYWxlCisgU1RSSVA/PXN0cmlwCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzLzAwMDItdXRoYXNoLXJlbW92ZS1pbi10cmVlLXZlcnNpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzLzAwMDItdXRoYXNoLXJlbW92ZS1pbi10cmVlLXZlcnNpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg5ZGZlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMDAwMi11dGhhc2gtcmVtb3ZlLWluLXRyZWUtdmVyc2lvbi5wYXRjaApAQCAtMCwwICsxLDk3NSBAQAorRnJvbSBkOWFlZWY4ZDk1YTMyNTk0MmNjOTJmNGQ3MjQxNTc3MWQ3NWQ5MDRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBEcmFzemlrPz0gPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KK0RhdGU6IFR1ZSwgMTIgQXByIDIwMTYgMTM6MDU6MTAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIHV0aGFzaDogcmVtb3ZlIGluLXRyZWUgdmVyc2lvbgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitXZSBkb24ndCBuZWVkIGl0IGFzIHdlIHdhbnQgdG8gdXNlIHRoZSB2ZXJzaW9uIHByb3ZpZGVkIGJ5CittZXRhLW9lIGluc3RlYWQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQtc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YW5kcmUuZHJhc3ppa0BqY2kuY29tPgorLS0tCisgc3JjL3V0aGFzaC5oIHwgOTQ4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDk0OCBkZWxldGlvbnMoLSkKKyBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3V0aGFzaC5oCisKK2RpZmYgLS1naXQgYS9zcmMvdXRoYXNoLmggYi9zcmMvdXRoYXNoLmgKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggOTE1YTgyNS4uMDAwMDAwMAorLS0tIGEvc3JjL3V0aGFzaC5oCisrKysgL2Rldi9udWxsCitAQCAtMSw5NDggKzAsMCBAQAorLS8qCistQ29weXJpZ2h0IChjKSAyMDAzLTIwMTMsIFRyb3kgRC4gSGFuc29uICAgICBodHRwOi8vdHJveWRoYW5zb24uZ2l0aHViLmNvbS91dGhhc2gvCistQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy0KKy1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy0KKy0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLSAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy0KKy1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworLUlTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorLVRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorLVBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgorLU9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLUVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy1QUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy1QUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCistTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKy1ORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKy1TT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy0qLworLQorLSNpZm5kZWYgVVRIQVNIX0gKKy0jZGVmaW5lIFVUSEFTSF9IIAorLQorLSNpbmNsdWRlIDxzdHJpbmcuaD4gICAvKiBtZW1jbXAsc3RybGVuICovCistI2luY2x1ZGUgPHN0ZGRlZi5oPiAgIC8qIHB0cmRpZmZfdCAqLworLSNpbmNsdWRlIDxzdGRsaWIuaD4gICAvKiBleGl0KCkgKi8KKy0KKy0vKiBUaGVzZSBtYWNyb3MgdXNlIGRlY2x0eXBlIG9yIHRoZSBlYXJsaWVyIF9fdHlwZW9mIEdOVSBleHRlbnNpb24uCistICAgQXMgZGVjbHR5cGUgaXMgb25seSBhdmFpbGFibGUgaW4gbmV3ZXIgY29tcGlsZXJzIChWUzIwMTAgb3IgZ2NjIDQuMysKKy0gICB3aGVuIGNvbXBpbGluZyBjKysgc291cmNlKSB0aGlzIGNvZGUgdXNlcyB3aGF0ZXZlciBtZXRob2QgaXMgbmVlZGVkCistICAgb3IsIGZvciBWUzIwMDggd2hlcmUgbmVpdGhlciBpcyBhdmFpbGFibGUsIHVzZXMgY2FzdGluZyB3b3JrYXJvdW5kcy4gKi8KKy0jaWZkZWYgX01TQ19WRVIgICAgICAgICAvKiBNUyBjb21waWxlciAqLworLSNpZiBfTVNDX1ZFUiA+PSAxNjAwICYmIGRlZmluZWQoX19jcGx1c3BsdXMpICAvKiBWUzIwMTAgb3IgbmV3ZXIgaW4gQysrIG1vZGUgKi8KKy0jZGVmaW5lIERFQ0xUWVBFKHgpIChkZWNsdHlwZSh4KSkKKy0jZWxzZSAgICAgICAgICAgICAgICAgICAvKiBWUzIwMDggb3Igb2xkZXIgKG9yIFZTMjAxMCBpbiBDIG1vZGUpICovCistI2RlZmluZSBOT19ERUNMVFlQRQorLSNkZWZpbmUgREVDTFRZUEUoeCkKKy0jZW5kaWYKKy0jZWxzZSAgICAgICAgICAgICAgICAgICAvKiBHTlUsIFN1biBhbmQgb3RoZXIgY29tcGlsZXJzICovCistI2RlZmluZSBERUNMVFlQRSh4KSAoX190eXBlb2YoeCkpCistI2VuZGlmCistCistI2lmZGVmIE5PX0RFQ0xUWVBFCistI2RlZmluZSBERUNMVFlQRV9BU1NJR04oZHN0LHNyYykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGNoYXIgKipfZGFfZHN0ID0gKGNoYXIqKikoJihkc3QpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAqX2RhX2RzdCA9IChjaGFyKikoc3JjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkKKy0jZWxzZSAKKy0jZGVmaW5lIERFQ0xUWVBFX0FTU0lHTihkc3Qsc3JjKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKGRzdCkgPSBERUNMVFlQRShkc3QpKHNyYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlKDApCistI2VuZGlmCistCistLyogYSBudW1iZXIgb2YgdGhlIGhhc2ggZnVuY3Rpb24gdXNlIHVpbnQzMl90IHdoaWNoIGlzbid0IGRlZmluZWQgb24gd2luMzIgKi8KKy0jaWZkZWYgX01TQ19WRVIKKy10eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKKy10eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKKy0jZWxzZQorLSNpbmNsdWRlIDxpbnR0eXBlcy5oPiAgIC8qIHVpbnQzMl90ICovCistI2VuZGlmCistCistI2RlZmluZSBVVEhBU0hfVkVSU0lPTiAxLjkuOAorLQorLSNpZm5kZWYgdXRoYXNoX2ZhdGFsCistI2RlZmluZSB1dGhhc2hfZmF0YWwobXNnKSBleGl0KC0xKSAgICAgICAgLyogZmF0YWwgZXJyb3IgKG91dCBvZiBtZW1vcnksZXRjKSAqLworLSNlbmRpZgorLSNpZm5kZWYgdXRoYXNoX21hbGxvYworLSNkZWZpbmUgdXRoYXNoX21hbGxvYyhzeikgbWFsbG9jKHN6KSAgICAgIC8qIG1hbGxvYyBmY24gICAgICAgICAgICAgICAgICAgICAgKi8KKy0jZW5kaWYKKy0jaWZuZGVmIHV0aGFzaF9mcmVlCistI2RlZmluZSB1dGhhc2hfZnJlZShwdHIsc3opIGZyZWUocHRyKSAgICAgLyogZnJlZSBmY24gICAgICAgICAgICAgICAgICAgICAgICAqLworLSNlbmRpZgorLQorLSNpZm5kZWYgdXRoYXNoX25vZXhwYW5kX2Z5aQorLSNkZWZpbmUgdXRoYXNoX25vZXhwYW5kX2Z5aSh0YmwpICAgICAgICAgIC8qIGNhbiBiZSBkZWZpbmVkIHRvIGxvZyBub2V4cGFuZCAgKi8KKy0jZW5kaWYKKy0jaWZuZGVmIHV0aGFzaF9leHBhbmRfZnlpCistI2RlZmluZSB1dGhhc2hfZXhwYW5kX2Z5aSh0YmwpICAgICAgICAgICAgLyogY2FuIGJlIGRlZmluZWQgdG8gbG9nIGV4cGFuZHMgICAqLworLSNlbmRpZgorLQorLS8qIGluaXRpYWwgbnVtYmVyIG9mIGJ1Y2tldHMgKi8KKy0jZGVmaW5lIEhBU0hfSU5JVElBTF9OVU1fQlVDS0VUUyAzMiAgICAgIC8qIGluaXRpYWwgbnVtYmVyIG9mIGJ1Y2tldHMgICAgICAgICovCistI2RlZmluZSBIQVNIX0lOSVRJQUxfTlVNX0JVQ0tFVFNfTE9HMiA1ICAvKiBsZzIgb2YgaW5pdGlhbCBudW1iZXIgb2YgYnVja2V0cyAqLworLSNkZWZpbmUgSEFTSF9CS1RfQ0FQQUNJVFlfVEhSRVNIIDEwICAgICAgLyogZXhwYW5kIHdoZW4gYnVja2V0IGNvdW50IHJlYWNoZXMgKi8KKy0KKy0vKiBjYWxjdWxhdGUgdGhlIGVsZW1lbnQgd2hvc2UgaGFzaCBoYW5kbGUgYWRkcmVzcyBpcyBoaGUgKi8KKy0jZGVmaW5lIEVMTVRfRlJPTV9ISCh0YmwsaGhwKSAoKHZvaWQqKSgoKGNoYXIqKShoaHApKSAtICgodGJsKS0+aGhvKSkpCistCistI2RlZmluZSBIQVNIX0ZJTkQoaGgsaGVhZCxrZXlwdHIsa2V5bGVuLG91dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHVuc2lnbmVkIF9oZl9ia3QsX2hmX2hhc2h2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBvdXQ9TlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgaWYgKGhlYWQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgIEhBU0hfRkNOKGtleXB0cixrZXlsZW4sIChoZWFkKS0+aGgudGJsLT5udW1fYnVja2V0cywgX2hmX2hhc2h2LCBfaGZfYmt0KTsgICBcCistICAgICBpZiAoSEFTSF9CTE9PTV9URVNUKChoZWFkKS0+aGgudGJsLCBfaGZfaGFzaHYpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICBIQVNIX0ZJTkRfSU5fQktUKChoZWFkKS0+aGgudGJsLCBoaCwgKGhlYWQpLT5oaC50YmwtPmJ1Y2tldHNbIF9oZl9ia3QgXSwgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICBrZXlwdHIsa2V5bGVuLG91dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlICgwKQorLQorLSNpZmRlZiBIQVNIX0JMT09NCistI2RlZmluZSBIQVNIX0JMT09NX0JJVExFTiAoMVVMTCA8PCBIQVNIX0JMT09NKQorLSNkZWZpbmUgSEFTSF9CTE9PTV9CWVRFTEVOIChIQVNIX0JMT09NX0JJVExFTi84KSArICgoSEFTSF9CTE9PTV9CSVRMRU4lOCkgPyAxOjApCistI2RlZmluZSBIQVNIX0JMT09NX01BS0UodGJsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICh0YmwpLT5ibG9vbV9uYml0cyA9IEhBU0hfQkxPT007ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAodGJsKS0+Ymxvb21fYnYgPSAodWludDhfdCopdXRoYXNoX21hbGxvYyhIQVNIX0JMT09NX0JZVEVMRU4pOyAgICAgICAgICAgICAgICAgXAorLSAgaWYgKCEoKHRibCktPmJsb29tX2J2KSkgIHsgdXRoYXNoX2ZhdGFsKCAib3V0IG9mIG1lbW9yeSIpOyB9ICAgICAgICAgICAgICAgICAgIFwKKy0gIG1lbXNldCgodGJsKS0+Ymxvb21fYnYsIDAsIEhBU0hfQkxPT01fQllURUxFTik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAodGJsKS0+Ymxvb21fc2lnID0gSEFTSF9CTE9PTV9TSUdOQVRVUkU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUgKDApIAorLQorLSNkZWZpbmUgSEFTSF9CTE9PTV9GUkVFKHRibCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB1dGhhc2hfZnJlZSgodGJsKS0+Ymxvb21fYnYsIEhBU0hfQkxPT01fQllURUxFTik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUgKDApIAorLQorLSNkZWZpbmUgSEFTSF9CTE9PTV9CSVRTRVQoYnYsaWR4KSAoYnZbKGlkeCkvOF0gfD0gKDFVIDw8ICgoaWR4KSU4KSkpCistI2RlZmluZSBIQVNIX0JMT09NX0JJVFRFU1QoYnYsaWR4KSAoYnZbKGlkeCkvOF0gJiAoMVUgPDwgKChpZHgpJTgpKSkKKy0KKy0jZGVmaW5lIEhBU0hfQkxPT01fQUREKHRibCxoYXNodikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBIQVNIX0JMT09NX0JJVFNFVCgodGJsKS0+Ymxvb21fYnYsIChoYXNodiAmICh1aW50MzJfdCkoKDFVTEwgPDwgKHRibCktPmJsb29tX25iaXRzKSAtIDEpKSkKKy0KKy0jZGVmaW5lIEhBU0hfQkxPT01fVEVTVCh0YmwsaGFzaHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBIQVNIX0JMT09NX0JJVFRFU1QoKHRibCktPmJsb29tX2J2LCAoaGFzaHYgJiAodWludDMyX3QpKCgxVUxMIDw8ICh0YmwpLT5ibG9vbV9uYml0cykgLSAxKSkpCistCistI2Vsc2UKKy0jZGVmaW5lIEhBU0hfQkxPT01fTUFLRSh0YmwpIAorLSNkZWZpbmUgSEFTSF9CTE9PTV9GUkVFKHRibCkgCistI2RlZmluZSBIQVNIX0JMT09NX0FERCh0YmwsaGFzaHYpIAorLSNkZWZpbmUgSEFTSF9CTE9PTV9URVNUKHRibCxoYXNodikgKDEpCistI2RlZmluZSBIQVNIX0JMT09NX0JZVEVMRU4gMAorLSNlbmRpZgorLQorLSNkZWZpbmUgSEFTSF9NQUtFX1RBQkxFKGhoLGhlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAoaGVhZCktPmhoLnRibCA9IChVVF9oYXNoX3RhYmxlKil1dGhhc2hfbWFsbG9jKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgIHNpemVvZihVVF9oYXNoX3RhYmxlKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGlmICghKChoZWFkKS0+aGgudGJsKSkgIHsgdXRoYXNoX2ZhdGFsKCAib3V0IG9mIG1lbW9yeSIpOyB9ICAgICAgICAgICAgICAgICAgICBcCistICBtZW1zZXQoKGhlYWQpLT5oaC50YmwsIDAsIHNpemVvZihVVF9oYXNoX3RhYmxlKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKGhlYWQpLT5oaC50YmwtPnRhaWwgPSAmKChoZWFkKS0+aGgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIChoZWFkKS0+aGgudGJsLT5udW1fYnVja2V0cyA9IEhBU0hfSU5JVElBTF9OVU1fQlVDS0VUUzsgICAgICAgICAgICAgICAgICAgICAgICBcCistICAoaGVhZCktPmhoLnRibC0+bG9nMl9udW1fYnVja2V0cyA9IEhBU0hfSU5JVElBTF9OVU1fQlVDS0VUU19MT0cyOyAgICAgICAgICAgICAgXAorLSAgKGhlYWQpLT5oaC50YmwtPmhobyA9IChjaGFyKikoJihoZWFkKS0+aGgpIC0gKGNoYXIqKShoZWFkKTsgICAgICAgICAgICAgICAgICAgIFwKKy0gIChoZWFkKS0+aGgudGJsLT5idWNrZXRzID0gKFVUX2hhc2hfYnVja2V0Kil1dGhhc2hfbWFsbG9jKCAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgIEhBU0hfSU5JVElBTF9OVU1fQlVDS0VUUypzaXplb2Yoc3RydWN0IFVUX2hhc2hfYnVja2V0KSk7ICAgICAgICAgICAgICAgXAorLSAgaWYgKCEgKGhlYWQpLT5oaC50YmwtPmJ1Y2tldHMpIHsgdXRoYXNoX2ZhdGFsKCAib3V0IG9mIG1lbW9yeSIpOyB9ICAgICAgICAgICAgIFwKKy0gIG1lbXNldCgoaGVhZCktPmhoLnRibC0+YnVja2V0cywgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgIEhBU0hfSU5JVElBTF9OVU1fQlVDS0VUUypzaXplb2Yoc3RydWN0IFVUX2hhc2hfYnVja2V0KSk7ICAgICAgICAgICAgICAgXAorLSAgSEFTSF9CTE9PTV9NQUtFKChoZWFkKS0+aGgudGJsKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIChoZWFkKS0+aGgudGJsLT5zaWduYXR1cmUgPSBIQVNIX1NJR05BVFVSRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSgwKQorLQorLSNkZWZpbmUgSEFTSF9BREQoaGgsaGVhZCxmaWVsZG5hbWUsa2V5bGVuX2luLGFkZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIEhBU0hfQUREX0tFWVBUUihoaCxoZWFkLCYoKGFkZCktPmZpZWxkbmFtZSksa2V5bGVuX2luLGFkZCkKKy0KKy0jZGVmaW5lIEhBU0hfUkVQTEFDRShoaCxoZWFkLGZpZWxkbmFtZSxrZXlsZW5faW4sYWRkLHJlcGxhY2VkKSAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgcmVwbGFjZWQ9TlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIEhBU0hfRklORChoaCxoZWFkLCYoKGFkZCktPmZpZWxkbmFtZSksa2V5bGVuX2luLHJlcGxhY2VkKTsgICAgICAgICAgICAgICAgICAgICBcCistICBpZiAocmVwbGFjZWQhPU5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgSEFTSF9ERUxFVEUoaGgsaGVhZCxyZXBsYWNlZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBIQVNIX0FERChoaCxoZWFkLGZpZWxkbmFtZSxrZXlsZW5faW4sYWRkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkKKy0gCistI2RlZmluZSBIQVNIX0FERF9LRVlQVFIoaGgsaGVhZCxrZXlwdHIsa2V5bGVuX2luLGFkZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gdW5zaWduZWQgX2hhX2JrdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIChhZGQpLT5oaC5uZXh0ID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAoYWRkKS0+aGgua2V5ID0gKGNoYXIqKWtleXB0cjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gKGFkZCktPmhoLmtleWxlbiA9ICh1bnNpZ25lZClrZXlsZW5faW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSBpZiAoIShoZWFkKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaGVhZCA9IChhZGQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIChoZWFkKS0+aGgucHJldiA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBIQVNIX01BS0VfVEFCTEUoaGgsaGVhZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIChoZWFkKS0+aGgudGJsLT50YWlsLT5uZXh0ID0gKGFkZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAoYWRkKS0+aGgucHJldiA9IEVMTVRfRlJPTV9ISCgoaGVhZCktPmhoLnRibCwgKGhlYWQpLT5oaC50YmwtPnRhaWwpOyAgICAgICAgIFwKKy0gICAgKGhlYWQpLT5oaC50YmwtPnRhaWwgPSAmKChhZGQpLT5oaCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAoaGVhZCktPmhoLnRibC0+bnVtX2l0ZW1zKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gKGFkZCktPmhoLnRibCA9IChoZWFkKS0+aGgudGJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIEhBU0hfRkNOKGtleXB0cixrZXlsZW5faW4sIChoZWFkKS0+aGgudGJsLT5udW1fYnVja2V0cywgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgIChhZGQpLT5oaC5oYXNodiwgX2hhX2JrdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gSEFTSF9BRERfVE9fQktUKChoZWFkKS0+aGgudGJsLT5idWNrZXRzW19oYV9ia3RdLCYoYWRkKS0+aGgpOyAgICAgICAgICAgICAgICAgICBcCistIEhBU0hfQkxPT01fQUREKChoZWFkKS0+aGgudGJsLChhZGQpLT5oaC5oYXNodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSBIQVNIX0VNSVRfS0VZKGhoLGhlYWQsa2V5cHRyLGtleWxlbl9pbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gSEFTSF9GU0NLKGhoLGhlYWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSgwKQorLQorLSNkZWZpbmUgSEFTSF9UT19CS1QoIGhhc2h2LCBudW1fYmt0cywgYmt0ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBia3QgPSAoKGhhc2h2KSAmICgobnVtX2JrdHMpIC0gMSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkKKy0KKy0vKiBkZWxldGUgImRlbHB0ciIgZnJvbSB0aGUgaGFzaCB0YWJsZS4KKy0gKiAidGhlIHVzdWFsIiBwYXRjaC11cCBwcm9jZXNzIGZvciB0aGUgYXBwLW9yZGVyIGRvdWJseS1saW5rZWQtbGlzdC4KKy0gKiBUaGUgdXNlIG9mIF9oZF9oaF9kZWwgYmVsb3cgZGVzZXJ2ZXMgc3BlY2lhbCBleHBsYW5hdGlvbi4KKy0gKiBUaGVzZSB1c2VkIHRvIGJlIGV4cHJlc3NlZCB1c2luZyAoZGVscHRyKSBidXQgdGhhdCBsZWQgdG8gYSBidWcKKy0gKiBpZiBzb21lb25lIHVzZWQgdGhlIHNhbWUgc3ltYm9sIGZvciB0aGUgaGVhZCBhbmQgZGVsZXRlZSwgbGlrZQorLSAqICBIQVNIX0RFTEVURShoaCx1c2Vycyx1c2Vycyk7CistICogV2Ugd2FudCB0aGF0IHRvIHdvcmssIGJ1dCBieSBjaGFuZ2luZyB0aGUgaGVhZCAodXNlcnMpIGJlbG93CistICogd2Ugd2VyZSBmb3JmZWl0aW5nIG91ciBhYmlsaXR5IHRvIGZ1cnRoZXIgcmVmZXIgdG8gdGhlIGRlbGV0ZWUgKHVzZXJzKQorLSAqIGluIHRoZSBwYXRjaC11cCBwcm9jZXNzLiBTb2x1dGlvbjogdXNlIHNjcmF0Y2ggc3BhY2UgdG8KKy0gKiBjb3B5IHRoZSBkZWxldGVlIHBvaW50ZXIsIHRoZW4gdGhlIGxhdHRlciByZWZlcmVuY2VzIGFyZSB2aWEgdGhhdAorLSAqIHNjcmF0Y2ggcG9pbnRlciByYXRoZXIgdGhhbiB0aHJvdWdoIHRoZSByZXBvaW50ZWQgKHVzZXJzKSBzeW1ib2wuCistICovCistI2RlZmluZSBIQVNIX0RFTEVURShoaCxoZWFkLGRlbHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgdW5zaWduZWQgX2hkX2JrdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIHN0cnVjdCBVVF9oYXNoX2hhbmRsZSAqX2hkX2hoX2RlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBpZiAoICgoZGVscHRyKS0+aGgucHJldiA9PSBOVUxMKSAmJiAoKGRlbHB0ciktPmhoLm5leHQgPT0gTlVMTCkgKSAgeyAgICAgICAgIFwKKy0gICAgICAgIHV0aGFzaF9mcmVlKChoZWFkKS0+aGgudGJsLT5idWNrZXRzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAoaGVhZCktPmhoLnRibC0+bnVtX2J1Y2tldHMqc2l6ZW9mKHN0cnVjdCBVVF9oYXNoX2J1Y2tldCkgKTsgXAorLSAgICAgICAgSEFTSF9CTE9PTV9GUkVFKChoZWFkKS0+aGgudGJsKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIHV0aGFzaF9mcmVlKChoZWFkKS0+aGgudGJsLCBzaXplb2YoVVRfaGFzaF90YWJsZSkpOyAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICBoZWFkID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIF9oZF9oaF9kZWwgPSAmKChkZWxwdHIpLT5oaCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICBpZiAoKGRlbHB0cikgPT0gRUxNVF9GUk9NX0hIKChoZWFkKS0+aGgudGJsLChoZWFkKS0+aGgudGJsLT50YWlsKSkgeyAgICAgXAorLSAgICAgICAgICAgIChoZWFkKS0+aGgudGJsLT50YWlsID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgKFVUX2hhc2hfaGFuZGxlKikoKHB0cmRpZmZfdCkoKGRlbHB0ciktPmhoLnByZXYpICsgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgIChoZWFkKS0+aGgudGJsLT5oaG8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIGlmICgoZGVscHRyKS0+aGgucHJldikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgKChVVF9oYXNoX2hhbmRsZSopKChwdHJkaWZmX3QpKChkZWxwdHIpLT5oaC5wcmV2KSArICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgKGhlYWQpLT5oaC50YmwtPmhobykpLT5uZXh0ID0gKGRlbHB0ciktPmhoLm5leHQ7ICAgICAgICAgICAgIFwKKy0gICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgREVDTFRZUEVfQVNTSUdOKGhlYWQsKGRlbHB0ciktPmhoLm5leHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIGlmIChfaGRfaGhfZGVsLT5uZXh0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgKChVVF9oYXNoX2hhbmRsZSopKChwdHJkaWZmX3QpX2hkX2hoX2RlbC0+bmV4dCArICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgKGhlYWQpLT5oaC50YmwtPmhobykpLT5wcmV2ID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgIF9oZF9oaF9kZWwtPnByZXY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgSEFTSF9UT19CS1QoIF9oZF9oaF9kZWwtPmhhc2h2LCAoaGVhZCktPmhoLnRibC0+bnVtX2J1Y2tldHMsIF9oZF9ia3QpOyAgIFwKKy0gICAgICAgIEhBU0hfREVMX0lOX0JLVChoaCwoaGVhZCktPmhoLnRibC0+YnVja2V0c1tfaGRfYmt0XSwgX2hkX2hoX2RlbCk7ICAgICAgICBcCistICAgICAgICAoaGVhZCktPmhoLnRibC0+bnVtX2l0ZW1zLS07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgSEFTSF9GU0NLKGhoLGhlYWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSAoMCkKKy0KKy0KKy0vKiBjb252ZW5pZW5jZSBmb3JtcyBvZiBIQVNIX0ZJTkQvSEFTSF9BREQvSEFTSF9ERUwgKi8KKy0jZGVmaW5lIEhBU0hfRklORF9TVFIoaGVhZCxmaW5kc3RyLG91dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIEhBU0hfRklORChoaCxoZWFkLGZpbmRzdHIsc3RybGVuKGZpbmRzdHIpLG91dCkKKy0jZGVmaW5lIEhBU0hfQUREX1NUUihoZWFkLHN0cmZpZWxkLGFkZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIEhBU0hfQUREKGhoLGhlYWQsc3RyZmllbGQsc3RybGVuKGFkZC0+c3RyZmllbGQpLGFkZCkKKy0jZGVmaW5lIEhBU0hfUkVQTEFDRV9TVFIoaGVhZCxzdHJmaWVsZCxhZGQscmVwbGFjZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBIQVNIX1JFUExBQ0UoaGgsaGVhZCxzdHJmaWVsZCxzdHJsZW4oYWRkLT5zdHJmaWVsZCksYWRkLHJlcGxhY2VkKQorLSNkZWZpbmUgSEFTSF9GSU5EX0lOVChoZWFkLGZpbmRpbnQsb3V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgSEFTSF9GSU5EKGhoLGhlYWQsZmluZGludCxzaXplb2YoaW50KSxvdXQpCistI2RlZmluZSBIQVNIX0FERF9JTlQoaGVhZCxpbnRmaWVsZCxhZGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBIQVNIX0FERChoaCxoZWFkLGludGZpZWxkLHNpemVvZihpbnQpLGFkZCkKKy0jZGVmaW5lIEhBU0hfUkVQTEFDRV9JTlQoaGVhZCxpbnRmaWVsZCxhZGQscmVwbGFjZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIEhBU0hfUkVQTEFDRShoaCxoZWFkLGludGZpZWxkLHNpemVvZihpbnQpLGFkZCxyZXBsYWNlZCkKKy0jZGVmaW5lIEhBU0hfRklORF9QVFIoaGVhZCxmaW5kcHRyLG91dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIEhBU0hfRklORChoaCxoZWFkLGZpbmRwdHIsc2l6ZW9mKHZvaWQgKiksb3V0KQorLSNkZWZpbmUgSEFTSF9BRERfUFRSKGhlYWQscHRyZmllbGQsYWRkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgSEFTSF9BREQoaGgsaGVhZCxwdHJmaWVsZCxzaXplb2Yodm9pZCAqKSxhZGQpCistI2RlZmluZSBIQVNIX1JFUExBQ0VfUFRSKGhlYWQscHRyZmllbGQsYWRkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBIQVNIX1JFUExBQ0UoaGgsaGVhZCxwdHJmaWVsZCxzaXplb2Yodm9pZCAqKSxhZGQscmVwbGFjZWQpCistI2RlZmluZSBIQVNIX0RFTChoZWFkLGRlbHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBIQVNIX0RFTEVURShoaCxoZWFkLGRlbHB0cikKKy0KKy0vKiBIQVNIX0ZTQ0sgY2hlY2tzIGhhc2ggaW50ZWdyaXR5IG9uIGV2ZXJ5IGFkZC9kZWxldGUgd2hlbiBIQVNIX0RFQlVHIGlzIGRlZmluZWQuCistICogVGhpcyBpcyBmb3IgdXRoYXNoIGRldmVsb3BlciBvbmx5OyBpdCBjb21waWxlcyBhd2F5IGlmIEhBU0hfREVCVUcgaXNuJ3QgZGVmaW5lZC4KKy0gKi8KKy0jaWZkZWYgSEFTSF9ERUJVRworLSNkZWZpbmUgSEFTSF9PT1BTKC4uLikgZG8geyBmcHJpbnRmKHN0ZGVycixfX1ZBX0FSR1NfXyk7IGV4aXQoLTEpOyB9IHdoaWxlICgwKQorLSNkZWZpbmUgSEFTSF9GU0NLKGhoLGhlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIHVuc2lnbmVkIF9ia3RfaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB1bnNpZ25lZCBfY291bnQsIF9ia3RfY291bnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgY2hhciAqX3ByZXY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIHN0cnVjdCBVVF9oYXNoX2hhbmRsZSAqX3RoaDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBpZiAoaGVhZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIF9jb3VudCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICBmb3IoIF9ia3RfaSA9IDA7IF9ia3RfaSA8IChoZWFkKS0+aGgudGJsLT5udW1fYnVja2V0czsgX2JrdF9pKyspIHsgICAgICAgXAorLSAgICAgICAgICAgIF9ia3RfY291bnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBfdGhoID0gKGhlYWQpLT5oaC50YmwtPmJ1Y2tldHNbX2JrdF9pXS5oaF9oZWFkOyAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgX3ByZXYgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHdoaWxlIChfdGhoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICBpZiAoX3ByZXYgIT0gKGNoYXIqKShfdGhoLT5oaF9wcmV2KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgIEhBU0hfT09QUygiaW52YWxpZCBoaF9wcmV2ICVwLCBhY3R1YWwgJXBcbiIsICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgX3RoaC0+aGhfcHJldiwgX3ByZXYgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgX2JrdF9jb3VudCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgIF9wcmV2ID0gKGNoYXIqKShfdGhoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICBfdGhoID0gX3RoaC0+aGhfbmV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIF9jb3VudCArPSBfYmt0X2NvdW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBpZiAoKGhlYWQpLT5oaC50YmwtPmJ1Y2tldHNbX2JrdF9pXS5jb3VudCAhPSAgX2JrdF9jb3VudCkgeyAgICAgICAgICBcCistICAgICAgICAgICAgICAgSEFTSF9PT1BTKCJpbnZhbGlkIGJ1Y2tldCBjb3VudCAlZCwgYWN0dWFsICVkXG4iLCAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAoaGVhZCktPmhoLnRibC0+YnVja2V0c1tfYmt0X2ldLmNvdW50LCBfYmt0X2NvdW50KTsgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgaWYgKF9jb3VudCAhPSAoaGVhZCktPmhoLnRibC0+bnVtX2l0ZW1zKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBIQVNIX09PUFMoImludmFsaWQgaGggaXRlbSBjb3VudCAlZCwgYWN0dWFsICVkXG4iLCAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgIChoZWFkKS0+aGgudGJsLT5udW1faXRlbXMsIF9jb3VudCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIC8qIHRyYXZlcnNlIGhoIGluIGFwcCBvcmRlcjsgY2hlY2sgbmV4dC9wcmV2IGludGVncml0eSwgY291bnQgKi8gICAgICAgICBcCistICAgICAgICBfY291bnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgX3ByZXYgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIF90aGggPSAgJihoZWFkKS0+aGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICB3aGlsZSAoX3RoaCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgX2NvdW50Kys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgIGlmIChfcHJldiAhPShjaGFyKikoX3RoaC0+cHJldikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICBIQVNIX09PUFMoImludmFsaWQgcHJldiAlcCwgYWN0dWFsICVwXG4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgX3RoaC0+cHJldiwgX3ByZXYgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICBfcHJldiA9IChjaGFyKilFTE1UX0ZST01fSEgoKGhlYWQpLT5oaC50YmwsIF90aGgpOyAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgX3RoaCA9ICggX3RoaC0+bmV4dCA/ICAoVVRfaGFzaF9oYW5kbGUqKSgoY2hhciopKF90aGgtPm5leHQpICsgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhlYWQpLT5oaC50YmwtPmhobykgOiBOVUxMICk7ICAgICAgICAgICAgICAgICBcCistICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgaWYgKF9jb3VudCAhPSAoaGVhZCktPmhoLnRibC0+bnVtX2l0ZW1zKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBIQVNIX09PUFMoImludmFsaWQgYXBwIGl0ZW0gY291bnQgJWQsIGFjdHVhbCAlZFxuIiwgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgIChoZWFkKS0+aGgudGJsLT5udW1faXRlbXMsIF9jb3VudCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSAoMCkKKy0jZWxzZQorLSNkZWZpbmUgSEFTSF9GU0NLKGhoLGhlYWQpIAorLSNlbmRpZgorLQorLS8qIFdoZW4gY29tcGlsZWQgd2l0aCAtREhBU0hfRU1JVF9LRVlTLCBsZW5ndGgtcHJlZml4ZWQga2V5cyBhcmUgZW1pdHRlZCB0byAKKy0gKiB0aGUgZGVzY3JpcHRvciB0byB3aGljaCB0aGlzIG1hY3JvIGlzIGRlZmluZWQgZm9yIHR1bmluZyB0aGUgaGFzaCBmdW5jdGlvbi4KKy0gKiBUaGUgYXBwIGNhbiAjaW5jbHVkZSA8dW5pc3RkLmg+IHRvIGdldCB0aGUgcHJvdG90eXBlIGZvciB3cml0ZSgyKS4gKi8KKy0jaWZkZWYgSEFTSF9FTUlUX0tFWVMKKy0jZGVmaW5lIEhBU0hfRU1JVF9LRVkoaGgsaGVhZCxrZXlwdHIsZmllbGRsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB1bnNpZ25lZCBfa2xlbiA9IGZpZWxkbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgd3JpdGUoSEFTSF9FTUlUX0tFWVMsICZfa2xlbiwgc2l6ZW9mKF9rbGVuKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIHdyaXRlKEhBU0hfRU1JVF9LRVlTLCBrZXlwdHIsIGZpZWxkbGVuKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUgKDApCistI2Vsc2UgCistI2RlZmluZSBIQVNIX0VNSVRfS0VZKGhoLGhlYWQsa2V5cHRyLGZpZWxkbGVuKSAgICAgICAgICAgICAgICAgICAgCistI2VuZGlmCistCistLyogZGVmYXVsdCB0byBKZW5raW4ncyBoYXNoIHVubGVzcyBvdmVycmlkZGVuIGUuZy4gREhBU0hfRlVOQ1RJT049SEFTSF9TQVggKi8KKy0jaWZkZWYgSEFTSF9GVU5DVElPTiAKKy0jZGVmaW5lIEhBU0hfRkNOIEhBU0hfRlVOQ1RJT04KKy0jZWxzZQorLSNkZWZpbmUgSEFTSF9GQ04gSEFTSF9KRU4KKy0jZW5kaWYKKy0KKy0vKiBUaGUgQmVybnN0ZWluIGhhc2ggZnVuY3Rpb24sIHVzZWQgaW4gUGVybCBwcmlvciB0byB2NS42ICovCistI2RlZmluZSBIQVNIX0JFUihrZXksa2V5bGVuLG51bV9ia3RzLGhhc2h2LGJrdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHVuc2lnbmVkIF9oYl9rZXlsZW49a2V5bGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBjaGFyICpfaGJfa2V5PShjaGFyKikoa2V5KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKGhhc2h2KSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHdoaWxlIChfaGJfa2V5bGVuLS0pICB7IChoYXNodikgPSAoKGhhc2h2KSAqIDMzKSArICpfaGJfa2V5Kys7IH0gICAgICAgICAgICAgICBcCistICBia3QgPSAoaGFzaHYpICYgKG51bV9ia3RzLTEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUgKDApCistCistCistLyogU0FYL0ZOVi9PQVQvSkVOIGhhc2ggZnVuY3Rpb25zIGFyZSBtYWNybyB2YXJpYW50cyBvZiB0aG9zZSBsaXN0ZWQgYXQgCistICogaHR0cDovL2V0ZXJuYWxseWNvbmZ1enpsZWQuY29tL3R1dHMvYWxnb3JpdGhtcy9qc3dfdHV0X2hhc2hpbmcuYXNweCAqLworLSNkZWZpbmUgSEFTSF9TQVgoa2V5LGtleWxlbixudW1fYmt0cyxoYXNodixia3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB1bnNpZ25lZCBfc3hfaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgY2hhciAqX2hzX2tleT0oY2hhciopKGtleSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGhhc2h2ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBmb3IoX3N4X2k9MDsgX3N4X2kgPCBrZXlsZW47IF9zeF9pKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgIGhhc2h2IF49IChoYXNodiA8PCA1KSArIChoYXNodiA+PiAyKSArIF9oc19rZXlbX3N4X2ldOyAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGJrdCA9IGhhc2h2ICYgKG51bV9ia3RzLTEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSAoMCkKKy0KKy0jZGVmaW5lIEhBU0hfRk5WKGtleSxrZXlsZW4sbnVtX2JrdHMsaGFzaHYsYmt0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgdW5zaWduZWQgX2ZuX2k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGNoYXIgKl9oZl9rZXk9KGNoYXIqKShrZXkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBoYXNodiA9IDIxNjYxMzYyNjFVTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgZm9yKF9mbl9pPTA7IF9mbl9pIDwga2V5bGVuOyBfZm5faSsrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICBoYXNodiA9IChoYXNodiAqIDE2Nzc3NjE5KSBeIF9oZl9rZXlbX2ZuX2ldOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBia3QgPSBoYXNodiAmIChudW1fYmt0cy0xKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkgCistIAorLSNkZWZpbmUgSEFTSF9PQVQoa2V5LGtleWxlbixudW1fYmt0cyxoYXNodixia3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB1bnNpZ25lZCBfaG9faTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgY2hhciAqX2hvX2tleT0oY2hhciopKGtleSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGhhc2h2ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBmb3IoX2hvX2k9MDsgX2hvX2kgPCBrZXlsZW47IF9ob19pKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgIGhhc2h2ICs9IF9ob19rZXlbX2hvX2ldOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICBoYXNodiArPSAoaGFzaHYgPDwgMTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgaGFzaHYgXj0gKGhhc2h2ID4+IDYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGhhc2h2ICs9IChoYXNodiA8PCAzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBoYXNodiBePSAoaGFzaHYgPj4gMTEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgaGFzaHYgKz0gKGhhc2h2IDw8IDE1KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGJrdCA9IGhhc2h2ICYgKG51bV9ia3RzLTEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSgwKQorLQorLSNkZWZpbmUgSEFTSF9KRU5fTUlYKGEsYixjKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBhIC09IGI7IGEgLT0gYzsgYSBePSAoIGMgPj4gMTMgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgYiAtPSBjOyBiIC09IGE7IGIgXj0gKCBhIDw8IDggKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGMgLT0gYTsgYyAtPSBiOyBjIF49ICggYiA+PiAxMyApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBhIC09IGI7IGEgLT0gYzsgYSBePSAoIGMgPj4gMTIgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgYiAtPSBjOyBiIC09IGE7IGIgXj0gKCBhIDw8IDE2ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGMgLT0gYTsgYyAtPSBiOyBjIF49ICggYiA+PiA1ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBhIC09IGI7IGEgLT0gYzsgYSBePSAoIGMgPj4gMyApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgYiAtPSBjOyBiIC09IGE7IGIgXj0gKCBhIDw8IDEwICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGMgLT0gYTsgYyAtPSBiOyBjIF49ICggYiA+PiAxNSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSAoMCkKKy0KKy0jZGVmaW5lIEhBU0hfSkVOKGtleSxrZXlsZW4sbnVtX2JrdHMsaGFzaHYsYmt0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgdW5zaWduZWQgX2hqX2ksX2hqX2osX2hqX2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHVuc2lnbmVkIGNoYXIgKl9oal9rZXk9KHVuc2lnbmVkIGNoYXIqKShrZXkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBoYXNodiA9IDB4ZmVlZGJlZWY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgX2hqX2kgPSBfaGpfaiA9IDB4OWUzNzc5Yjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIF9oal9rID0gKHVuc2lnbmVkKWtleWxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB3aGlsZSAoX2hqX2sgPj0gMTIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBfaGpfaSArPSAgICAoX2hqX2tleVswXSArICggKHVuc2lnbmVkKV9oal9rZXlbMV0gPDwgOCApICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICsgKCAodW5zaWduZWQpX2hqX2tleVsyXSA8PCAxNiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICArICggKHVuc2lnbmVkKV9oal9rZXlbM10gPDwgMjQgKSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBfaGpfaiArPSAgICAoX2hqX2tleVs0XSArICggKHVuc2lnbmVkKV9oal9rZXlbNV0gPDwgOCApICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICsgKCAodW5zaWduZWQpX2hqX2tleVs2XSA8PCAxNiApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICArICggKHVuc2lnbmVkKV9oal9rZXlbN10gPDwgMjQgKSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBoYXNodiArPSAoX2hqX2tleVs4XSArICggKHVuc2lnbmVkKV9oal9rZXlbOV0gPDwgOCApICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICsgKCAodW5zaWduZWQpX2hqX2tleVsxMF0gPDwgMTYgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICArICggKHVuc2lnbmVkKV9oal9rZXlbMTFdIDw8IDI0ICkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgIEhBU0hfSkVOX01JWChfaGpfaSwgX2hqX2osIGhhc2h2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgX2hqX2tleSArPSAxMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgIF9oal9rIC09IDEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgaGFzaHYgKz0ga2V5bGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHN3aXRjaCAoIF9oal9rICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICBjYXNlIDExOiBoYXNodiArPSAoICh1bnNpZ25lZClfaGpfa2V5WzEwXSA8PCAyNCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgY2FzZSAxMDogaGFzaHYgKz0gKCAodW5zaWduZWQpX2hqX2tleVs5XSA8PCAxNiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgIGNhc2UgOTogIGhhc2h2ICs9ICggKHVuc2lnbmVkKV9oal9rZXlbOF0gPDwgOCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICBjYXNlIDg6ICBfaGpfaiArPSAoICh1bnNpZ25lZClfaGpfa2V5WzddIDw8IDI0ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgY2FzZSA3OiAgX2hqX2ogKz0gKCAodW5zaWduZWQpX2hqX2tleVs2XSA8PCAxNiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgIGNhc2UgNjogIF9oal9qICs9ICggKHVuc2lnbmVkKV9oal9rZXlbNV0gPDwgOCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICBjYXNlIDU6ICBfaGpfaiArPSBfaGpfa2V5WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgY2FzZSA0OiAgX2hqX2kgKz0gKCAodW5zaWduZWQpX2hqX2tleVszXSA8PCAyNCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgIGNhc2UgMzogIF9oal9pICs9ICggKHVuc2lnbmVkKV9oal9rZXlbMl0gPDwgMTYgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICBjYXNlIDI6ICBfaGpfaSArPSAoICh1bnNpZ25lZClfaGpfa2V5WzFdIDw8IDggKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgY2FzZSAxOiAgX2hqX2kgKz0gX2hqX2tleVswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBIQVNIX0pFTl9NSVgoX2hqX2ksIF9oal9qLCBoYXNodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgYmt0ID0gaGFzaHYgJiAobnVtX2JrdHMtMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlKDApCistCistLyogVGhlIFBhdWwgSHNpZWggaGFzaCBmdW5jdGlvbiAqLworLSN1bmRlZiBnZXQxNmJpdHMKKy0jaWYgKGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19pMzg2X18pKSB8fCBkZWZpbmVkKF9fV0FUQ09NQ19fKSAgICAgICAgICAgICBcCistICB8fCBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkIChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQgKF9fVFVSQk9DX18pCistI2RlZmluZSBnZXQxNmJpdHMoZCkgKCooKGNvbnN0IHVpbnQxNl90ICopIChkKSkpCistI2VuZGlmCistCistI2lmICFkZWZpbmVkIChnZXQxNmJpdHMpCistI2RlZmluZSBnZXQxNmJpdHMoZCkgKCgoKHVpbnQzMl90KSgoKGNvbnN0IHVpbnQ4X3QgKikoZCkpWzFdKSkgPDwgOCkgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgKyh1aW50MzJfdCkoKChjb25zdCB1aW50OF90ICopKGQpKVswXSkgKQorLSNlbmRpZgorLSNkZWZpbmUgSEFTSF9TRkgoa2V5LGtleWxlbixudW1fYmt0cyxoYXNodixia3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB1bnNpZ25lZCBjaGFyICpfc2ZoX2tleT0odW5zaWduZWQgY2hhciopKGtleSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgdWludDMyX3QgX3NmaF90bXAsIF9zZmhfbGVuID0ga2V5bGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBpbnQgX3NmaF9yZW0gPSBfc2ZoX2xlbiAmIDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgX3NmaF9sZW4gPj49IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGhhc2h2ID0gMHhjYWZlYmFiZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgLyogTWFpbiBsb29wICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGZvciAoO19zZmhfbGVuID4gMDsgX3NmaF9sZW4tLSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGhhc2h2ICAgICs9IGdldDE2Yml0cyAoX3NmaF9rZXkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBfc2ZoX3RtcCAgICAgICA9ICh1aW50MzJfdCkoZ2V0MTZiaXRzIChfc2ZoX2tleSsyKSkgPDwgMTEgIF4gaGFzaHY7ICAgICAgICAgIFwKKy0gICAgaGFzaHYgICAgID0gKGhhc2h2IDw8IDE2KSBeIF9zZmhfdG1wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9zZmhfa2V5ICs9IDIqc2l6ZW9mICh1aW50MTZfdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBoYXNodiAgICArPSBoYXNodiA+PiAxMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgLyogSGFuZGxlIGVuZCBjYXNlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHN3aXRjaCAoX3NmaF9yZW0pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGNhc2UgMzogaGFzaHYgKz0gZ2V0MTZiaXRzIChfc2ZoX2tleSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIGhhc2h2IF49IGhhc2h2IDw8IDE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBoYXNodiBePSAodWludDMyX3QpKF9zZmhfa2V5W3NpemVvZiAodWludDE2X3QpXSA8PCAxOCk7ICAgICAgICAgICAgICBcCistICAgICAgICAgICAgaGFzaHYgKz0gaGFzaHYgPj4gMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgY2FzZSAyOiBoYXNodiArPSBnZXQxNmJpdHMgKF9zZmhfa2V5KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgaGFzaHYgXj0gaGFzaHYgPDwgMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIGhhc2h2ICs9IGhhc2h2ID4+IDE3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGNhc2UgMTogaGFzaHYgKz0gKl9zZmhfa2V5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIGhhc2h2IF49IGhhc2h2IDw8IDEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBoYXNodiArPSBoYXNodiA+PiAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgLyogRm9yY2UgImF2YWxhbmNoaW5nIiBvZiBmaW5hbCAxMjcgYml0cyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGhhc2h2IF49IGhhc2h2IDw8IDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBoYXNodiArPSBoYXNodiA+PiA1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaGFzaHYgXj0gaGFzaHYgPDwgNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGhhc2h2ICs9IGhhc2h2ID4+IDE3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBoYXNodiBePSBoYXNodiA8PCAyNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaGFzaHYgKz0gaGFzaHYgPj4gNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGJrdCA9IGhhc2h2ICYgKG51bV9ia3RzLTEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkgCistCistI2lmZGVmIEhBU0hfVVNJTkdfTk9fU1RSSUNUX0FMSUFTSU5HCistLyogVGhlIE11cm11ckhhc2ggZXhwbG9pdHMgc29tZSBDUFUncyAoeDg2LHg4Nl82NCkgdG9sZXJhbmNlIGZvciB1bmFsaWduZWQgcmVhZHMuCistICogRm9yIG90aGVyIHR5cGVzIG9mIENQVSdzIChlLmcuIFNwYXJjKSBhbiB1bmFsaWduZWQgcmVhZCBjYXVzZXMgYSBidXMgZXJyb3IuCistICogTXVybXVySGFzaCB1c2VzIHRoZSBmYXN0ZXIgYXBwcm9hY2ggb25seSBvbiBDUFUncyB3aGVyZSB3ZSBrbm93IGl0J3Mgc2FmZS4gCistICoKKy0gKiBOb3RlIHRoZSBwcmVwcm9jZXNzb3IgYnVpbHQtaW4gZGVmaW5lcyBjYW4gYmUgZW1pdHRlZCB1c2luZzoKKy0gKgorLSAqICAgZ2NjIC1tNjQgLWRNIC1FIC0gPCAvZGV2L251bGwgICAgICAgICAgICAgICAgICAob24gZ2NjKQorLSAqICAgY2MgLSMjIGEuYyAod2hlcmUgYS5jIGlzIGEgc2ltcGxlIHRlc3QgZmlsZSkgICAoU3VuIFN0dWRpbykKKy0gKi8KKy0jaWYgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgIHx8IGRlZmluZWQoX01fSVg4NikpCistI2RlZmluZSBNVVJfR0VUQkxPQ0socCxpKSBwW2ldCistI2Vsc2UgLyogbm9uIGludGVsICovCistI2RlZmluZSBNVVJfUExVUzBfQUxJR05FRChwKSAoKCh1bnNpZ25lZCBsb25nKXAgJiAweDMpID09IDApCistI2RlZmluZSBNVVJfUExVUzFfQUxJR05FRChwKSAoKCh1bnNpZ25lZCBsb25nKXAgJiAweDMpID09IDEpCistI2RlZmluZSBNVVJfUExVUzJfQUxJR05FRChwKSAoKCh1bnNpZ25lZCBsb25nKXAgJiAweDMpID09IDIpCistI2RlZmluZSBNVVJfUExVUzNfQUxJR05FRChwKSAoKCh1bnNpZ25lZCBsb25nKXAgJiAweDMpID09IDMpCistI2RlZmluZSBXUChwKSAoKHVpbnQzMl90KikoKHVuc2lnbmVkIGxvbmcpKHApICYgfjNVTCkpCistI2lmIChkZWZpbmVkKF9fQklHX0VORElBTl9fKSB8fCBkZWZpbmVkKFNQQVJDKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSkKKy0jZGVmaW5lIE1VUl9USFJFRV9PTkUocCkgKCgoKCpXUChwKSkmMHgwMGZmZmZmZikgPDwgOCkgfCAoKCgqKFdQKHApKzEpKSYweGZmMDAwMDAwKSA+PiAyNCkpCistI2RlZmluZSBNVVJfVFdPX1RXTyhwKSAgICgoKCgqV1AocCkpJjB4MDAwMGZmZmYpIDw8MTYpIHwgKCgoKihXUChwKSsxKSkmMHhmZmZmMDAwMCkgPj4gMTYpKQorLSNkZWZpbmUgTVVSX09ORV9USFJFRShwKSAoKCgoKldQKHApKSYweDAwMDAwMGZmKSA8PDI0KSB8ICgoKCooV1AocCkrMSkpJjB4ZmZmZmZmMDApID4+ICA4KSkKKy0jZWxzZSAvKiBhc3N1bWUgbGl0dGxlIGVuZGlhbiBub24taW50ZWwgKi8KKy0jZGVmaW5lIE1VUl9USFJFRV9PTkUocCkgKCgoKCpXUChwKSkmMHhmZmZmZmYwMCkgPj4gOCkgfCAoKCgqKFdQKHApKzEpKSYweDAwMDAwMGZmKSA8PCAyNCkpCistI2RlZmluZSBNVVJfVFdPX1RXTyhwKSAgICgoKCgqV1AocCkpJjB4ZmZmZjAwMDApID4+MTYpIHwgKCgoKihXUChwKSsxKSkmMHgwMDAwZmZmZikgPDwgMTYpKQorLSNkZWZpbmUgTVVSX09ORV9USFJFRShwKSAoKCgoKldQKHApKSYweGZmMDAwMDAwKSA+PjI0KSB8ICgoKCooV1AocCkrMSkpJjB4MDBmZmZmZmYpIDw8ICA4KSkKKy0jZW5kaWYKKy0jZGVmaW5lIE1VUl9HRVRCTE9DSyhwLGkpIChNVVJfUExVUzBfQUxJR05FRChwKSA/ICgocClbaV0pIDogICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKE1VUl9QTFVTMV9BTElHTkVEKHApID8gTVVSX1RIUkVFX09ORShwKSA6IFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChNVVJfUExVUzJfQUxJR05FRChwKSA/IE1VUl9UV09fVFdPKHApIDogIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVVJfT05FX1RIUkVFKHApKSkpCistI2VuZGlmCistI2RlZmluZSBNVVJfUk9UTDMyKHgscikgKCgoeCkgPDwgKHIpKSB8ICgoeCkgPj4gKDMyIC0gKHIpKSkpCistI2RlZmluZSBNVVJfRk1JWChfaCkgXAorLWRvIHsgICAgICAgICAgICAgICAgIFwKKy0gIF9oIF49IF9oID4+IDE2OyAgICBcCistICBfaCAqPSAweDg1ZWJjYTZiOyAgXAorLSAgX2ggXj0gX2ggPj4gMTM7ICAgIFwKKy0gIF9oICo9IDB4YzJiMmFlMzVsOyBcCistICBfaCBePSBfaCA+PiAxNjsgICAgXAorLX0gd2hpbGUoMCkKKy0KKy0jZGVmaW5lIEhBU0hfTVVSKGtleSxrZXlsZW4sbnVtX2JrdHMsaGFzaHYsYmt0KSAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGNvbnN0IHVpbnQ4X3QgKl9tdXJfZGF0YSA9IChjb25zdCB1aW50OF90Kikoa2V5KTsgICAgICAgICAgICAgICAgICAgIFwKKy0gIGNvbnN0IGludCBfbXVyX25ibG9ja3MgPSAoa2V5bGVuKSAvIDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHVpbnQzMl90IF9tdXJfaDEgPSAweGY4OEQ1MzUzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHVpbnQzMl90IF9tdXJfYzEgPSAweGNjOWUyZDUxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHVpbnQzMl90IF9tdXJfYzIgPSAweDFiODczNTkzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHVpbnQzMl90IF9tdXJfazEgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGNvbnN0IHVpbnQ4X3QgKl9tdXJfdGFpbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGNvbnN0IHVpbnQzMl90ICpfbXVyX2Jsb2NrcyA9IChjb25zdCB1aW50MzJfdCopKF9tdXJfZGF0YStfbXVyX25ibG9ja3MqNCk7IFwKKy0gIGludCBfbXVyX2k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGZvcihfbXVyX2kgPSAtX211cl9uYmxvY2tzOyBfbXVyX2k7IF9tdXJfaSsrKSB7ICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX211cl9rMSA9IE1VUl9HRVRCTE9DSyhfbXVyX2Jsb2NrcyxfbXVyX2kpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX211cl9rMSAqPSBfbXVyX2MxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX211cl9rMSA9IE1VUl9ST1RMMzIoX211cl9rMSwxNSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX211cl9rMSAqPSBfbXVyX2MyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX211cl9oMSBePSBfbXVyX2sxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX211cl9oMSA9IE1VUl9ST1RMMzIoX211cl9oMSwxMyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX211cl9oMSA9IF9tdXJfaDEqNSsweGU2NTQ2YjY0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIF9tdXJfdGFpbCA9IChjb25zdCB1aW50OF90KikoX211cl9kYXRhICsgX211cl9uYmxvY2tzKjQpOyAgICAgICAgICAgIFwKKy0gIF9tdXJfazE9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHN3aXRjaCgoa2V5bGVuKSAmIDMpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgY2FzZSAzOiBfbXVyX2sxIF49IF9tdXJfdGFpbFsyXSA8PCAxNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgY2FzZSAyOiBfbXVyX2sxIF49IF9tdXJfdGFpbFsxXSA8PCA4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgY2FzZSAxOiBfbXVyX2sxIF49IF9tdXJfdGFpbFswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX211cl9rMSAqPSBfbXVyX2MxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX211cl9rMSA9IE1VUl9ST1RMMzIoX211cl9rMSwxNSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX211cl9rMSAqPSBfbXVyX2MyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX211cl9oMSBePSBfbXVyX2sxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIF9tdXJfaDEgXj0gKGtleWxlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIE1VUl9GTUlYKF9tdXJfaDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGhhc2h2ID0gX211cl9oMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGJrdCA9IGhhc2h2ICYgKG51bV9ia3RzLTEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlKDApCistI2VuZGlmICAvKiBIQVNIX1VTSU5HX05PX1NUUklDVF9BTElBU0lORyAqLworLQorLS8qIGtleSBjb21wYXJpc29uIGZ1bmN0aW9uOyByZXR1cm4gMCBpZiBrZXlzIGVxdWFsICovCistI2RlZmluZSBIQVNIX0tFWUNNUChhLGIsbGVuKSBtZW1jbXAoYSxiLGxlbikgCistCistLyogaXRlcmF0ZSBvdmVyIGl0ZW1zIGluIGEga25vd24gYnVja2V0IHRvIGZpbmQgZGVzaXJlZCBpdGVtICovCistI2RlZmluZSBIQVNIX0ZJTkRfSU5fQktUKHRibCxoaCxoZWFkLGtleXB0cixrZXlsZW5faW4sb3V0KSAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gaWYgKGhlYWQuaGhfaGVhZCkgREVDTFRZUEVfQVNTSUdOKG91dCxFTE1UX0ZST01fSEgodGJsLGhlYWQuaGhfaGVhZCkpOyAgICAgICAgICBcCistIGVsc2Ugb3V0PU5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSB3aGlsZSAob3V0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaWYgKChvdXQpLT5oaC5rZXlsZW4gPT0ga2V5bGVuX2luKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIGlmICgoSEFTSF9LRVlDTVAoKG91dCktPmhoLmtleSxrZXlwdHIsa2V5bGVuX2luKSkgPT0gMCkgYnJlYWs7ICAgICAgICAgICAgIFwKKy0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGlmICgob3V0KS0+aGguaGhfbmV4dCkgREVDTFRZUEVfQVNTSUdOKG91dCxFTE1UX0ZST01fSEgodGJsLChvdXQpLT5oaC5oaF9uZXh0KSk7IFwKKy0gICAgZWxzZSBvdXQgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkKKy0KKy0vKiBhZGQgYW4gaXRlbSB0byBhIGJ1Y2tldCAgKi8KKy0jZGVmaW5lIEhBU0hfQUREX1RPX0JLVChoZWFkLGFkZGhoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSBoZWFkLmNvdW50Kys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gKGFkZGhoKS0+aGhfbmV4dCA9IGhlYWQuaGhfaGVhZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIChhZGRoaCktPmhoX3ByZXYgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSBpZiAoaGVhZC5oaF9oZWFkKSB7IChoZWFkKS5oaF9oZWFkLT5oaF9wcmV2ID0gKGFkZGhoKTsgfSAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gKGhlYWQpLmhoX2hlYWQ9YWRkaGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIGlmIChoZWFkLmNvdW50ID49ICgoaGVhZC5leHBhbmRfbXVsdCsxKSAqIEhBU0hfQktUX0NBUEFDSVRZX1RIUkVTSCkgICAgICAgICAgICAgXAorLSAgICAgJiYgKGFkZGhoKS0+dGJsLT5ub2V4cGFuZCAhPSAxKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgSEFTSF9FWFBBTkRfQlVDS0VUUygoYWRkaGgpLT50YmwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkKKy0KKy0vKiByZW1vdmUgYW4gaXRlbSBmcm9tIGEgZ2l2ZW4gYnVja2V0ICovCistI2RlZmluZSBIQVNIX0RFTF9JTl9CS1QoaGgsaGVhZCxoaF9kZWwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAoaGVhZCkuY291bnQtLTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaWYgKChoZWFkKS5oaF9oZWFkID09IGhoX2RlbCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgKGhlYWQpLmhoX2hlYWQgPSBoaF9kZWwtPmhoX25leHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaWYgKGhoX2RlbC0+aGhfcHJldikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICBoaF9kZWwtPmhoX3ByZXYtPmhoX25leHQgPSBoaF9kZWwtPmhoX25leHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaWYgKGhoX2RlbC0+aGhfbmV4dCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICBoaF9kZWwtPmhoX25leHQtPmhoX3ByZXYgPSBoaF9kZWwtPmhoX3ByZXY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLQorLS8qIEJ1Y2tldCBleHBhbnNpb24gaGFzIHRoZSBlZmZlY3Qgb2YgZG91YmxpbmcgdGhlIG51bWJlciBvZiBidWNrZXRzCistICogYW5kIHJlZGlzdHJpYnV0aW5nIHRoZSBpdGVtcyBpbnRvIHRoZSBuZXcgYnVja2V0cy4gSWRlYWxseSB0aGUKKy0gKiBpdGVtcyB3aWxsIGRpc3RyaWJ1dGUgbW9yZSBvciBsZXNzIGV2ZW5seSBpbnRvIHRoZSBuZXcgYnVja2V0cworLSAqICh0aGUgZXh0ZW50IHRvIHdoaWNoIHRoaXMgaXMgdHJ1ZSBpcyBhIG1lYXN1cmUgb2YgdGhlIHF1YWxpdHkgb2YKKy0gKiB0aGUgaGFzaCBmdW5jdGlvbiBhcyBpdCBhcHBsaWVzIHRvIHRoZSBrZXkgZG9tYWluKS4gCistICogCistICogV2l0aCB0aGUgaXRlbXMgZGlzdHJpYnV0ZWQgaW50byBtb3JlIGJ1Y2tldHMsIHRoZSBjaGFpbiBsZW5ndGgKKy0gKiAoaXRlbSBjb3VudCkgaW4gZWFjaCBidWNrZXQgaXMgcmVkdWNlZC4gVGh1cyBieSBleHBhbmRpbmcgYnVja2V0cworLSAqIHRoZSBoYXNoIGtlZXBzIGEgYm91bmQgb24gdGhlIGNoYWluIGxlbmd0aC4gVGhpcyBib3VuZGVkIGNoYWluIAorLSAqIGxlbmd0aCBpcyB0aGUgZXNzZW5jZSBvZiBob3cgYSBoYXNoIHByb3ZpZGVzIGNvbnN0YW50IHRpbWUgbG9va3VwLgorLSAqIAorLSAqIFRoZSBjYWxjdWxhdGlvbiBvZiB0YmwtPmlkZWFsX2NoYWluX21heGxlbiBiZWxvdyBkZXNlcnZlcyBzb21lCistICogZXhwbGFuYXRpb24uIEZpcnN0LCBrZWVwIGluIG1pbmQgdGhhdCB3ZSdyZSBjYWxjdWxhdGluZyB0aGUgaWRlYWwKKy0gKiBtYXhpbXVtIGNoYWluIGxlbmd0aCBiYXNlZCBvbiB0aGUgKm5ldyogKGRvdWJsZWQpIGJ1Y2tldCBjb3VudC4KKy0gKiBJbiBmcmFjdGlvbnMgdGhpcyBpcyBqdXN0IG4vYiAobj1udW1iZXIgb2YgaXRlbXMsYj1uZXcgbnVtIGJ1Y2tldHMpLgorLSAqIFNpbmNlIHRoZSBpZGVhbCBjaGFpbiBsZW5ndGggaXMgYW4gaW50ZWdlciwgd2Ugd2FudCB0byBjYWxjdWxhdGUgCistICogY2VpbChuL2IpLiBXZSBkb24ndCBkZXBlbmQgb24gZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBpbiB0aGlzCistICogaGFzaCwgc28gdG8gY2FsY3VsYXRlIGNlaWwobi9iKSB3aXRoIGludGVnZXJzIHdlIGNvdWxkIHdyaXRlCistICogCistICogICAgICBjZWlsKG4vYikgPSAobi9iKSArICgobiViKT8xOjApCistICogCistICogYW5kIGluIGZhY3QgYSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoaXMgaGFzaCBkaWQganVzdCB0aGF0LgorLSAqIEJ1dCBub3cgd2UgaGF2ZSBpbXByb3ZlZCB0aGluZ3MgYSBiaXQgYnkgcmVjb2duaXppbmcgdGhhdCBiIGlzCistICogYWx3YXlzIGEgcG93ZXIgb2YgdHdvLiBXZSBrZWVwIGl0cyBiYXNlIDIgbG9nIGhhbmR5IChjYWxsIGl0IGxiKSwKKy0gKiBzbyBub3cgd2UgY2FuIHdyaXRlIHRoaXMgd2l0aCBhIGJpdCBzaGlmdCBhbmQgbG9naWNhbCBBTkQ6CistICogCistICogICAgICBjZWlsKG4vYikgPSAobj4+bGIpICsgKCAobiAmIChiLTEpKSA/IDE6MCkKKy0gKiAKKy0gKi8KKy0jZGVmaW5lIEhBU0hfRVhQQU5EX0JVQ0tFVFModGJsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB1bnNpZ25lZCBfaGVfYmt0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgdW5zaWduZWQgX2hlX2JrdF9pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIHN0cnVjdCBVVF9oYXNoX2hhbmRsZSAqX2hlX3RoaCwgKl9oZV9oaF9ueHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBVVF9oYXNoX2J1Y2tldCAqX2hlX25ld19idWNrZXRzLCAqX2hlX25ld2JrdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX2hlX25ld19idWNrZXRzID0gKFVUX2hhc2hfYnVja2V0Kil1dGhhc2hfbWFsbG9jKCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgIDIgKiB0YmwtPm51bV9idWNrZXRzICogc2l6ZW9mKHN0cnVjdCBVVF9oYXNoX2J1Y2tldCkpOyAgICAgICAgICAgICAgXAorLSAgICBpZiAoIV9oZV9uZXdfYnVja2V0cykgeyB1dGhhc2hfZmF0YWwoICJvdXQgb2YgbWVtb3J5Iik7IH0gICAgICAgICAgICAgICAgICAgIFwKKy0gICAgbWVtc2V0KF9oZV9uZXdfYnVja2V0cywgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgMiAqIHRibC0+bnVtX2J1Y2tldHMgKiBzaXplb2Yoc3RydWN0IFVUX2hhc2hfYnVja2V0KSk7ICAgICAgICAgICAgICAgXAorLSAgICB0YmwtPmlkZWFsX2NoYWluX21heGxlbiA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgKHRibC0+bnVtX2l0ZW1zID4+ICh0YmwtPmxvZzJfbnVtX2J1Y2tldHMrMSkpICsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICgodGJsLT5udW1faXRlbXMgJiAoKHRibC0+bnVtX2J1Y2tldHMqMiktMSkpID8gMSA6IDApOyAgICAgICAgICAgICAgICAgICAgXAorLSAgICB0YmwtPm5vbmlkZWFsX2l0ZW1zID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgZm9yKF9oZV9ia3RfaSA9IDA7IF9oZV9ia3RfaSA8IHRibC0+bnVtX2J1Y2tldHM7IF9oZV9ia3RfaSsrKSAgICAgICAgICAgICAgICBcCistICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgX2hlX3RoaCA9IHRibC0+YnVja2V0c1sgX2hlX2JrdF9pIF0uaGhfaGVhZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIHdoaWxlIChfaGVfdGhoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICBfaGVfaGhfbnh0ID0gX2hlX3RoaC0+aGhfbmV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgSEFTSF9UT19CS1QoIF9oZV90aGgtPmhhc2h2LCB0YmwtPm51bV9idWNrZXRzKjIsIF9oZV9ia3QpOyAgICAgICAgICAgIFwKKy0gICAgICAgICAgIF9oZV9uZXdia3QgPSAmKF9oZV9uZXdfYnVja2V0c1sgX2hlX2JrdCBdKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICBpZiAoKysoX2hlX25ld2JrdC0+Y291bnQpID4gdGJsLT5pZGVhbF9jaGFpbl9tYXhsZW4pIHsgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICB0YmwtPm5vbmlkZWFsX2l0ZW1zKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgX2hlX25ld2JrdC0+ZXhwYW5kX211bHQgPSBfaGVfbmV3Ymt0LT5jb3VudCAvICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRibC0+aWRlYWxfY2hhaW5fbWF4bGVuOyAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgIF9oZV90aGgtPmhoX3ByZXYgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICBfaGVfdGhoLT5oaF9uZXh0ID0gX2hlX25ld2JrdC0+aGhfaGVhZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgaWYgKF9oZV9uZXdia3QtPmhoX2hlYWQpIF9oZV9uZXdia3QtPmhoX2hlYWQtPmhoX3ByZXYgPSAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgX2hlX3RoaDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICBfaGVfbmV3Ymt0LT5oaF9oZWFkID0gX2hlX3RoaDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgX2hlX3RoaCA9IF9oZV9oaF9ueHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB1dGhhc2hfZnJlZSggdGJsLT5idWNrZXRzLCB0YmwtPm51bV9idWNrZXRzKnNpemVvZihzdHJ1Y3QgVVRfaGFzaF9idWNrZXQpICk7IFwKKy0gICAgdGJsLT5udW1fYnVja2V0cyAqPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIHRibC0+bG9nMl9udW1fYnVja2V0cysrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB0YmwtPmJ1Y2tldHMgPSBfaGVfbmV3X2J1Y2tldHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgdGJsLT5pbmVmZl9leHBhbmRzID0gKHRibC0+bm9uaWRlYWxfaXRlbXMgPiAodGJsLT5udW1faXRlbXMgPj4gMSkpID8gICAgICAgICBcCistICAgICAgICAodGJsLT5pbmVmZl9leHBhbmRzKzEpIDogMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBpZiAodGJsLT5pbmVmZl9leHBhbmRzID4gMSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIHRibC0+bm9leHBhbmQ9MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICB1dGhhc2hfbm9leHBhbmRfZnlpKHRibCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgdXRoYXNoX2V4cGFuZF9meWkodGJsKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSgwKQorLQorLQorLS8qIFRoaXMgaXMgYW4gYWRhcHRhdGlvbiBvZiBTaW1vbiBUYXRoYW0ncyBPKG4gbG9nKG4pKSBtZXJnZXNvcnQgKi8KKy0vKiBOb3RlIHRoYXQgSEFTSF9TT1JUIGFzc3VtZXMgdGhlIGhhc2ggaGFuZGxlIG5hbWUgdG8gYmUgaGguIAorLSAqIEhBU0hfU1JUIHdhcyBhZGRlZCB0byBhbGxvdyB0aGUgaGFzaCBoYW5kbGUgbmFtZSB0byBiZSBwYXNzZWQgaW4uICovCistI2RlZmluZSBIQVNIX1NPUlQoaGVhZCxjbXBmY24pIEhBU0hfU1JUKGhoLGhlYWQsY21wZmNuKQorLSNkZWZpbmUgSEFTSF9TUlQoaGgsaGVhZCxjbXBmY24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB1bnNpZ25lZCBfaHNfaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgdW5zaWduZWQgX2hzX2xvb3BpbmcsX2hzX25tZXJnZXMsX2hzX2luc2l6ZSxfaHNfcHNpemUsX2hzX3FzaXplOyAgICAgICAgICAgICAgIFwKKy0gIHN0cnVjdCBVVF9oYXNoX2hhbmRsZSAqX2hzX3AsICpfaHNfcSwgKl9oc19lLCAqX2hzX2xpc3QsICpfaHNfdGFpbDsgICAgICAgICAgICBcCistICBpZiAoaGVhZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgIF9oc19pbnNpemUgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICBfaHNfbG9vcGluZyA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgX2hzX2xpc3QgPSAmKChoZWFkKS0+aGgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgIHdoaWxlIChfaHNfbG9vcGluZykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgX2hzX3AgPSBfaHNfbGlzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgIF9oc19saXN0ID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICBfaHNfdGFpbCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgX2hzX25tZXJnZXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgIHdoaWxlIChfaHNfcCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgX2hzX25tZXJnZXMrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgIF9oc19xID0gX2hzX3A7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICBfaHNfcHNpemUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgZm9yICggX2hzX2kgPSAwOyBfaHNfaSAgPCBfaHNfaW5zaXplOyBfaHNfaSsrICkgeyAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICBfaHNfcHNpemUrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgX2hzX3EgPSAoVVRfaGFzaF9oYW5kbGUqKSgoX2hzX3EtPm5leHQpID8gICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2b2lkKikoKGNoYXIqKShfaHNfcS0+bmV4dCkgKyAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIChoZWFkKS0+aGgudGJsLT5oaG8pKSA6IE5VTEwpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgaWYgKCEgKF9oc19xKSApIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgIF9oc19xc2l6ZSA9IF9oc19pbnNpemU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICB3aGlsZSAoKF9oc19wc2l6ZSA+IDApIHx8ICgoX2hzX3FzaXplID4gMCkgJiYgX2hzX3EgKSkgeyAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgIGlmIChfaHNfcHNpemUgPT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgX2hzX2UgPSBfaHNfcTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgIF9oc19xID0gKFVUX2hhc2hfaGFuZGxlKikoKF9oc19xLT5uZXh0KSA/ICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCopKChjaGFyKikoX2hzX3EtPm5leHQpICsgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGVhZCktPmhoLnRibC0+aGhvKSkgOiBOVUxMKTsgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgIF9oc19xc2l6ZS0tOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIChfaHNfcXNpemUgPT0gMCkgfHwgIShfaHNfcSkgKSB7ICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgX2hzX2UgPSBfaHNfcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgIGlmIChfaHNfcCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgIF9oc19wID0gKFVUX2hhc2hfaGFuZGxlKikoKF9oc19wLT5uZXh0KSA/ICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCopKChjaGFyKikoX2hzX3AtPm5leHQpICsgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGVhZCktPmhoLnRibC0+aGhvKSkgOiBOVUxMKTsgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgX2hzX3BzaXplLS07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICBjbXBmY24oREVDTFRZUEUoaGVhZCkoRUxNVF9GUk9NX0hIKChoZWFkKS0+aGgudGJsLF9oc19wKSksIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFQ0xUWVBFKGhlYWQpKEVMTVRfRlJPTV9ISCgoaGVhZCktPmhoLnRibCxfaHNfcSkpKSBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDw9IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICBfaHNfZSA9IF9oc19wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgaWYgKF9oc19wKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgX2hzX3AgPSAoVVRfaGFzaF9oYW5kbGUqKSgoX2hzX3AtPm5leHQpID8gICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQqKSgoY2hhciopKF9oc19wLT5uZXh0KSArICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhlYWQpLT5oaC50YmwtPmhobykpIDogTlVMTCk7ICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICBfaHNfcHNpemUtLTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgIF9oc19lID0gX2hzX3E7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICBfaHNfcSA9IChVVF9oYXNoX2hhbmRsZSopKChfaHNfcS0+bmV4dCkgPyAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQqKSgoY2hhciopKF9oc19xLT5uZXh0KSArICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhlYWQpLT5oaC50YmwtPmhobykpIDogTlVMTCk7ICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICBfaHNfcXNpemUtLTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgaWYgKCBfaHNfdGFpbCApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICBfaHNfdGFpbC0+bmV4dCA9ICgoX2hzX2UpID8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRUxNVF9GUk9NX0hIKChoZWFkKS0+aGgudGJsLF9oc19lKSA6IE5VTEwpOyAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICBfaHNfbGlzdCA9IF9oc19lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgaWYgKF9oc19lKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgIF9oc19lLT5wcmV2ID0gKChfaHNfdGFpbCkgPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICBFTE1UX0ZST01fSEgoKGhlYWQpLT5oaC50YmwsX2hzX3RhaWwpIDogTlVMTCk7ICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgIF9oc190YWlsID0gX2hzX2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICBfaHNfcCA9IF9oc19xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgaWYgKF9oc190YWlsKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgX2hzX3RhaWwtPm5leHQgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgaWYgKCBfaHNfbm1lcmdlcyA8PSAxICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICBfaHNfbG9vcGluZz0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgKGhlYWQpLT5oaC50YmwtPnRhaWwgPSBfaHNfdGFpbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgIERFQ0xUWVBFX0FTU0lHTihoZWFkLEVMTVRfRlJPTV9ISCgoaGVhZCktPmhoLnRibCwgX2hzX2xpc3QpKTsgICAgICBcCistICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICBfaHNfaW5zaXplICo9IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgSEFTSF9GU0NLKGhoLGhlYWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlICgwKQorLQorLS8qIFRoaXMgZnVuY3Rpb24gc2VsZWN0cyBpdGVtcyBmcm9tIG9uZSBoYXNoIGludG8gYW5vdGhlciBoYXNoLiAKKy0gKiBUaGUgZW5kIHJlc3VsdCBpcyB0aGF0IHRoZSBzZWxlY3RlZCBpdGVtcyBoYXZlIGR1YWwgcHJlc2VuY2UgCistICogaW4gYm90aCBoYXNoZXMuIFRoZXJlIGlzIG5vIGNvcHkgb2YgdGhlIGl0ZW1zIG1hZGU7IHJhdGhlciAKKy0gKiB0aGV5IGFyZSBhZGRlZCBpbnRvIHRoZSBuZXcgaGFzaCB0aHJvdWdoIGEgc2Vjb25kYXJ5IGhhc2ggCistICogaGFzaCBoYW5kbGUgdGhhdCBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIHN0cnVjdHVyZS4gKi8KKy0jZGVmaW5lIEhBU0hfU0VMRUNUKGhoX2RzdCwgZHN0LCBoaF9zcmMsIHNyYywgY29uZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgdW5zaWduZWQgX3NyY19ia3QsIF9kc3RfYmt0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHZvaWQgKl9sYXN0X2VsdD1OVUxMLCAqX2VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBVVF9oYXNoX2hhbmRsZSAqX3NyY19oaCwgKl9kc3RfaGgsICpfbGFzdF9lbHRfaGg9TlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgcHRyZGlmZl90IF9kc3RfaGhvID0gKChjaGFyKikoJihkc3QpLT5oaF9kc3QpIC0gKGNoYXIqKShkc3QpKTsgICAgICAgICAgICAgICAgIFwKKy0gIGlmIChzcmMpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGZvcihfc3JjX2JrdD0wOyBfc3JjX2JrdCA8IChzcmMpLT5oaF9zcmMudGJsLT5udW1fYnVja2V0czsgX3NyY19ia3QrKykgeyAgICAgXAorLSAgICAgIGZvcihfc3JjX2hoID0gKHNyYyktPmhoX3NyYy50YmwtPmJ1Y2tldHNbX3NyY19ia3RdLmhoX2hlYWQ7ICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgX3NyY19oaDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgIF9zcmNfaGggPSBfc3JjX2hoLT5oaF9uZXh0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICBfZWx0ID0gRUxNVF9GUk9NX0hIKChzcmMpLT5oaF9zcmMudGJsLCBfc3JjX2hoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgaWYgKGNvbmQoX2VsdCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgX2RzdF9oaCA9IChVVF9oYXNoX2hhbmRsZSopKCgoY2hhciopX2VsdCkgKyBfZHN0X2hobyk7ICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIF9kc3RfaGgtPmtleSA9IF9zcmNfaGgtPmtleTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBfZHN0X2hoLT5rZXlsZW4gPSBfc3JjX2hoLT5rZXlsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgX2RzdF9oaC0+aGFzaHYgPSBfc3JjX2hoLT5oYXNodjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIF9kc3RfaGgtPnByZXYgPSBfbGFzdF9lbHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBfZHN0X2hoLT5uZXh0ID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgaWYgKF9sYXN0X2VsdF9oaCkgeyBfbGFzdF9lbHRfaGgtPm5leHQgPSBfZWx0OyB9ICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIGlmICghZHN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgIERFQ0xUWVBFX0FTU0lHTihkc3QsX2VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICBIQVNIX01BS0VfVEFCTEUoaGhfZHN0LGRzdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgIF9kc3RfaGgtPnRibCA9IChkc3QpLT5oaF9kc3QudGJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIEhBU0hfVE9fQktUKF9kc3RfaGgtPmhhc2h2LCBfZHN0X2hoLT50YmwtPm51bV9idWNrZXRzLCBfZHN0X2JrdCk7ICAgIFwKKy0gICAgICAgICAgICBIQVNIX0FERF9UT19CS1QoX2RzdF9oaC0+dGJsLT5idWNrZXRzW19kc3RfYmt0XSxfZHN0X2hoKTsgICAgICAgICAgICBcCistICAgICAgICAgICAgKGRzdCktPmhoX2RzdC50YmwtPm51bV9pdGVtcysrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIF9sYXN0X2VsdCA9IF9lbHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBfbGFzdF9lbHRfaGggPSBfZHN0X2hoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgSEFTSF9GU0NLKGhoX2RzdCxkc3QpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlICgwKQorLQorLSNkZWZpbmUgSEFTSF9DTEVBUihoaCxoZWFkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBpZiAoaGVhZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB1dGhhc2hfZnJlZSgoaGVhZCktPmhoLnRibC0+YnVja2V0cywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgKGhlYWQpLT5oaC50YmwtPm51bV9idWNrZXRzKnNpemVvZihzdHJ1Y3QgVVRfaGFzaF9idWNrZXQpKTsgICAgICBcCistICAgIEhBU0hfQkxPT01fRlJFRSgoaGVhZCktPmhoLnRibCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB1dGhhc2hfZnJlZSgoaGVhZCktPmhoLnRibCwgc2l6ZW9mKFVUX2hhc2hfdGFibGUpKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgKGhlYWQpPU5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkKKy0KKy0jZGVmaW5lIEhBU0hfT1ZFUkhFQUQoaGgsaGVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIChzaXplX3QpKCgoKGhlYWQpLT5oaC50YmwtPm51bV9pdGVtcyAgICogc2l6ZW9mKFVUX2hhc2hfaGFuZGxlKSkgICArICAgICAgICAgICAgXAorLSAgICAgICAgICAgKChoZWFkKS0+aGgudGJsLT5udW1fYnVja2V0cyAqIHNpemVvZihVVF9oYXNoX2J1Y2tldCkpICAgKyAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAoc2l6ZW9mKFVUX2hhc2hfdGFibGUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICAgICBcCistICAgICAgICAgICAgKEhBU0hfQkxPT01fQllURUxFTikpKQorLQorLSNpZmRlZiBOT19ERUNMVFlQRQorLSNkZWZpbmUgSEFTSF9JVEVSKGhoLGhlYWQsZWwsdG1wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1mb3IoKGVsKT0oaGVhZCksICgqKGNoYXIqKikoJih0bXApKSk9KGNoYXIqKSgoaGVhZCk/KGhlYWQpLT5oaC5uZXh0Ok5VTEwpOyAgICAgICBcCistICBlbDsgKGVsKT0odG1wKSwoKihjaGFyKiopKCYodG1wKSkpPShjaGFyKikoKHRtcCk/KHRtcCktPmhoLm5leHQ6TlVMTCkpIAorLSNlbHNlCistI2RlZmluZSBIQVNIX0lURVIoaGgsaGVhZCxlbCx0bXApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWZvcigoZWwpPShoZWFkKSwodG1wKT1ERUNMVFlQRShlbCkoKGhlYWQpPyhoZWFkKS0+aGgubmV4dDpOVUxMKTsgICAgICAgICAgICAgICAgIFwKKy0gIGVsOyAoZWwpPSh0bXApLCh0bXApPURFQ0xUWVBFKGVsKSgodG1wKT8odG1wKS0+aGgubmV4dDpOVUxMKSkKKy0jZW5kaWYKKy0KKy0vKiBvYnRhaW4gYSBjb3VudCBvZiBpdGVtcyBpbiB0aGUgaGFzaCAqLworLSNkZWZpbmUgSEFTSF9DT1VOVChoZWFkKSBIQVNIX0NOVChoaCxoZWFkKSAKKy0jZGVmaW5lIEhBU0hfQ05UKGhoLGhlYWQpICgoaGVhZCk/KChoZWFkKS0+aGgudGJsLT5udW1faXRlbXMpOjApCistCistdHlwZWRlZiBzdHJ1Y3QgVVRfaGFzaF9idWNrZXQgeworLSAgIHN0cnVjdCBVVF9oYXNoX2hhbmRsZSAqaGhfaGVhZDsKKy0gICB1bnNpZ25lZCBjb3VudDsKKy0KKy0gICAvKiBleHBhbmRfbXVsdCBpcyBub3JtYWxseSBzZXQgdG8gMC4gSW4gdGhpcyBzaXR1YXRpb24sIHRoZSBtYXggY2hhaW4gbGVuZ3RoCistICAgICogdGhyZXNob2xkIGlzIGVuZm9yY2VkIGF0IGl0cyBkZWZhdWx0IHZhbHVlLCBIQVNIX0JLVF9DQVBBQ0lUWV9USFJFU0guIChJZgorLSAgICAqIHRoZSBidWNrZXQncyBjaGFpbiBleGNlZWRzIHRoaXMgbGVuZ3RoLCBidWNrZXQgZXhwYW5zaW9uIGlzIHRyaWdnZXJlZCkuIAorLSAgICAqIEhvd2V2ZXIsIHNldHRpbmcgZXhwYW5kX211bHQgdG8gYSBub24temVybyB2YWx1ZSBkZWxheXMgYnVja2V0IGV4cGFuc2lvbgorLSAgICAqICh0aGF0IHdvdWxkIGJlIHRyaWdnZXJlZCBieSBhZGRpdGlvbnMgdG8gdGhpcyBwYXJ0aWN1bGFyIGJ1Y2tldCkKKy0gICAgKiB1bnRpbCBpdHMgY2hhaW4gbGVuZ3RoIHJlYWNoZXMgYSAqbXVsdGlwbGUqIG9mIEhBU0hfQktUX0NBUEFDSVRZX1RIUkVTSC4KKy0gICAgKiAoVGhlIG11bHRpcGxpZXIgaXMgc2ltcGx5IGV4cGFuZF9tdWx0KzEpLiBUaGUgd2hvbGUgaWRlYSBvZiB0aGlzCistICAgICogbXVsdGlwbGllciBpcyB0byByZWR1Y2UgYnVja2V0IGV4cGFuc2lvbnMsIHNpbmNlIHRoZXkgYXJlIGV4cGVuc2l2ZSwgaW4KKy0gICAgKiBzaXR1YXRpb25zIHdoZXJlIHdlIGtub3cgdGhhdCBhIHBhcnRpY3VsYXIgYnVja2V0IHRlbmRzIHRvIGJlIG92ZXJ1c2VkLgorLSAgICAqIEl0IGlzIGJldHRlciB0byBsZXQgaXRzIGNoYWluIGxlbmd0aCBncm93IHRvIGEgbG9uZ2VyIHlldC1zdGlsbC1ib3VuZGVkCistICAgICogdmFsdWUsIHRoYW4gdG8gZG8gYW4gTyhuKSBidWNrZXQgZXhwYW5zaW9uIHRvbyBvZnRlbi4gCistICAgICovCistICAgdW5zaWduZWQgZXhwYW5kX211bHQ7CistCistfSBVVF9oYXNoX2J1Y2tldDsKKy0KKy0vKiByYW5kb20gc2lnbmF0dXJlIHVzZWQgb25seSB0byBmaW5kIGhhc2ggdGFibGVzIGluIGV4dGVybmFsIGFuYWx5c2lzICovCistI2RlZmluZSBIQVNIX1NJR05BVFVSRSAweGEwMTExZmUxCistI2RlZmluZSBIQVNIX0JMT09NX1NJR05BVFVSRSAweGIxMjIyMGYyCistCistdHlwZWRlZiBzdHJ1Y3QgVVRfaGFzaF90YWJsZSB7CistICAgVVRfaGFzaF9idWNrZXQgKmJ1Y2tldHM7CistICAgdW5zaWduZWQgbnVtX2J1Y2tldHMsIGxvZzJfbnVtX2J1Y2tldHM7CistICAgdW5zaWduZWQgbnVtX2l0ZW1zOworLSAgIHN0cnVjdCBVVF9oYXNoX2hhbmRsZSAqdGFpbDsgLyogdGFpbCBoaCBpbiBhcHAgb3JkZXIsIGZvciBmYXN0IGFwcGVuZCAgICAqLworLSAgIHB0cmRpZmZfdCBoaG87IC8qIGhhc2ggaGFuZGxlIG9mZnNldCAoYnl0ZSBwb3Mgb2YgaGFzaCBoYW5kbGUgaW4gZWxlbWVudCAqLworLQorLSAgIC8qIGluIGFuIGlkZWFsIHNpdHVhdGlvbiAoYWxsIGJ1Y2tldHMgdXNlZCBlcXVhbGx5KSwgbm8gYnVja2V0IHdvdWxkIGhhdmUKKy0gICAgKiBtb3JlIHRoYW4gY2VpbCgjaXRlbXMvI2J1Y2tldHMpIGl0ZW1zLiB0aGF0J3MgdGhlIGlkZWFsIGNoYWluIGxlbmd0aC4gKi8KKy0gICB1bnNpZ25lZCBpZGVhbF9jaGFpbl9tYXhsZW47CistCistICAgLyogbm9uaWRlYWxfaXRlbXMgaXMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgaGFzaCB3aG9zZSBjaGFpbiBwb3NpdGlvbgorLSAgICAqIGV4Y2VlZHMgdGhlIGlkZWFsIGNoYWluIG1heGxlbi4gdGhlc2UgaXRlbXMgcGF5IHRoZSBwZW5hbHR5IGZvciBhbiB1bmV2ZW4KKy0gICAgKiBoYXNoIGRpc3RyaWJ1dGlvbjsgcmVhY2hpbmcgdGhlbSBpbiBhIGNoYWluIHRyYXZlcnNhbCB0YWtlcyA+aWRlYWwgc3RlcHMgKi8KKy0gICB1bnNpZ25lZCBub25pZGVhbF9pdGVtczsKKy0KKy0gICAvKiBpbmVmZmVjdGl2ZSBleHBhbmRzIG9jY3VyIHdoZW4gYSBidWNrZXQgZG91Ymxpbmcgd2FzIHBlcmZvcm1lZCwgYnV0IAorLSAgICAqIGFmdGVyd2FyZCwgbW9yZSB0aGFuIGhhbGYgdGhlIGl0ZW1zIGluIHRoZSBoYXNoIGhhZCBub25pZGVhbCBjaGFpbgorLSAgICAqIHBvc2l0aW9ucy4gSWYgdGhpcyBoYXBwZW5zIG9uIHR3byBjb25zZWN1dGl2ZSBleHBhbnNpb25zIHdlIGluaGliaXQgYW55CistICAgICogZnVydGhlciBleHBhbnNpb24sIGFzIGl0J3Mgbm90IGhlbHBpbmc7IHRoaXMgaGFwcGVucyB3aGVuIHRoZSBoYXNoCistICAgICogZnVuY3Rpb24gaXNuJ3QgYSBnb29kIGZpdCBmb3IgdGhlIGtleSBkb21haW4uIFdoZW4gZXhwYW5zaW9uIGlzIGluaGliaXRlZAorLSAgICAqIHRoZSBoYXNoIHdpbGwgc3RpbGwgd29yaywgYWxiZWl0IG5vIGxvbmdlciBpbiBjb25zdGFudCB0aW1lLiAqLworLSAgIHVuc2lnbmVkIGluZWZmX2V4cGFuZHMsIG5vZXhwYW5kOworLQorLSAgIHVpbnQzMl90IHNpZ25hdHVyZTsgLyogdXNlZCBvbmx5IHRvIGZpbmQgaGFzaCB0YWJsZXMgaW4gZXh0ZXJuYWwgYW5hbHlzaXMgKi8KKy0jaWZkZWYgSEFTSF9CTE9PTQorLSAgIHVpbnQzMl90IGJsb29tX3NpZzsgLyogdXNlZCBvbmx5IHRvIHRlc3QgYmxvb20gZXhpc3RzIGluIGV4dGVybmFsIGFuYWx5c2lzICovCistICAgdWludDhfdCAqYmxvb21fYnY7CistICAgY2hhciBibG9vbV9uYml0czsKKy0jZW5kaWYKKy0KKy19IFVUX2hhc2hfdGFibGU7CistCistdHlwZWRlZiBzdHJ1Y3QgVVRfaGFzaF9oYW5kbGUgeworLSAgIHN0cnVjdCBVVF9oYXNoX3RhYmxlICp0Ymw7CistICAgdm9pZCAqcHJldjsgICAgICAgICAgICAgICAgICAgICAgIC8qIHByZXYgZWxlbWVudCBpbiBhcHAgb3JkZXIgICAgICAqLworLSAgIHZvaWQgKm5leHQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiBuZXh0IGVsZW1lbnQgaW4gYXBwIG9yZGVyICAgICAgKi8KKy0gICBzdHJ1Y3QgVVRfaGFzaF9oYW5kbGUgKmhoX3ByZXY7ICAgLyogcHJldmlvdXMgaGggaW4gYnVja2V0IG9yZGVyICAgICovCistICAgc3RydWN0IFVUX2hhc2hfaGFuZGxlICpoaF9uZXh0OyAgIC8qIG5leHQgaGggaW4gYnVja2V0IG9yZGVyICAgICAgICAqLworLSAgIHZvaWQgKmtleTsgICAgICAgICAgICAgICAgICAgICAgICAvKiBwdHIgdG8gZW5jbG9zaW5nIHN0cnVjdCdzIGtleSAgKi8KKy0gICB1bnNpZ25lZCBrZXlsZW47ICAgICAgICAgICAgICAgICAgLyogZW5jbG9zaW5nIHN0cnVjdCdzIGtleSBsZW4gICAgICovCistICAgdW5zaWduZWQgaGFzaHY7ICAgICAgICAgICAgICAgICAgIC8qIHJlc3VsdCBvZiBoYXNoLWZjbihrZXkpICAgICAgICAqLworLX0gVVRfaGFzaF9oYW5kbGU7CistCistI2VuZGlmIC8qIFVUSEFTSF9IICovCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL2J1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQwOTEyYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL2J1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotRnJvbSBlYmQ3YzhlNTQ4ZTliOGUwOTZlZTRjMzkwMTczZGI5YTcwMWYyNjA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQnJ1bm8gQm90dGF6emluaSA8YnJ1bm8uYm90dGF6emluaUBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE1hciAyMDE2IDExOjE4OjI2IC0wMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkCi0KLURpc2FibGUgc3RyaXBwaW5nIGFuZCBhbGxvdyBlYXNpbHkgb3ZlcnJpZGluZyBwcmVmaXgKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEJydW5vIEJvdHRhenppbmkgPGJydW5vLmJvdHRhenppbmlAaW50ZWwuY29tPgotLS0tCi0gY2xpZW50L01ha2VmaWxlICB8IDQgKystLQotIGNvbmZpZy5tayAgICAgICAgfCAyICstCi0gbGliL01ha2VmaWxlICAgICB8IDIgKy0KLSBsaWIvY3BwL01ha2VmaWxlIHwgMiArLQotIHNyYy9NYWtlZmlsZSAgICAgfCA0ICsrLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVudC9NYWtlZmlsZSBiL2NsaWVudC9NYWtlZmlsZQotaW5kZXggYmQ2NTM1NS4uNGU1YTY0MCAxMDA2NDQKLS0tLSBhL2NsaWVudC9NYWtlZmlsZQotKysrIGIvY2xpZW50L01ha2VmaWxlCi1AQCAtMjQsOCArMjQsOCBAQCBjbGllbnRfc2hhcmVkLm8gOiBjbGllbnRfc2hhcmVkLmMgY2xpZW50Ci0gCi0gaW5zdGFsbCA6IGFsbAotIAkkKElOU1RBTEwpIC1kICR7REVTVERJUn0kKHByZWZpeCkvYmluCi0tCSQoSU5TVEFMTCkgLXMgLS1zdHJpcC1wcm9ncmFtPSR7Q1JPU1NfQ09NUElMRX0ke1NUUklQfSBtb3NxdWl0dG9fcHViICR7REVTVERJUn0ke3ByZWZpeH0vYmluL21vc3F1aXR0b19wdWIKLS0JJChJTlNUQUxMKSAtcyAtLXN0cmlwLXByb2dyYW09JHtDUk9TU19DT01QSUxFfSR7U1RSSVB9IG1vc3F1aXR0b19zdWIgJHtERVNURElSfSR7cHJlZml4fS9iaW4vbW9zcXVpdHRvX3N1YgotKwkkKElOU1RBTEwpIG1vc3F1aXR0b19wdWIgJHtERVNURElSfSR7cHJlZml4fS9iaW4vbW9zcXVpdHRvX3B1YgotKwkkKElOU1RBTEwpIG1vc3F1aXR0b19zdWIgJHtERVNURElSfSR7cHJlZml4fS9iaW4vbW9zcXVpdHRvX3N1YgotIAotIHVuaW5zdGFsbCA6Ci0gCS1ybSAtZiAke0RFU1RESVJ9JHtwcmVmaXh9L2Jpbi9tb3NxdWl0dG9fcHViCi1kaWZmIC0tZ2l0IGEvY29uZmlnLm1rIGIvY29uZmlnLm1rCi1pbmRleCBjMGYxNzVmLi4zNDI3YjgzIDEwMDY0NAotLS0tIGEvY29uZmlnLm1rCi0rKysgYi9jb25maWcubWsKLUBAIC0yNDEsNyArMjQxLDcgQEAgaWZlcSAoJChXSVRIX0RPQ1MpLHllcykKLSBlbmRpZgotIAotIElOU1RBTEw/PWluc3RhbGwKLS1wcmVmaXg9L3Vzci9sb2NhbAotK3ByZWZpeD89L3VzcgotIG1hbmRpcj0ke3ByZWZpeH0vc2hhcmUvbWFuCi0gbG9jYWxlZGlyPSR7cHJlZml4fS9zaGFyZS9sb2NhbGUKLSBTVFJJUD89c3RyaXAKLWRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKLWluZGV4IDgyNWZjZWEuLjliN2MwNWMgMTAwNjQ0Ci0tLS0gYS9saWIvTWFrZWZpbGUKLSsrKyBiL2xpYi9NYWtlZmlsZQotQEAgLTI1LDcgKzI1LDcgQEAgYWxsIDogbGlibW9zcXVpdHRvLnNvLiR7U09WRVJTSU9OfSBsaWJtbwotIAotIGluc3RhbGwgOiBhbGwKLSAJJChJTlNUQUxMKSAtZCAke0RFU1RESVJ9JChwcmVmaXgpL2xpYiR7TElCX1NVRkZJWH0vCi0tCSQoSU5TVEFMTCkgLXMgLS1zdHJpcC1wcm9ncmFtPSR7Q1JPU1NfQ09NUElMRX0ke1NUUklQfSBsaWJtb3NxdWl0dG8uc28uJHtTT1ZFUlNJT059ICR7REVTVERJUn0ke3ByZWZpeH0vbGliJHtMSUJfU1VGRklYfS9saWJtb3NxdWl0dG8uc28uJHtTT1ZFUlNJT059Ci0rCSQoSU5TVEFMTCkgbGlibW9zcXVpdHRvLnNvLiR7U09WRVJTSU9OfSAke0RFU1RESVJ9JHtwcmVmaXh9L2xpYiR7TElCX1NVRkZJWH0vbGlibW9zcXVpdHRvLnNvLiR7U09WRVJTSU9OfQotIAlsbiAtc2YgbGlibW9zcXVpdHRvLnNvLiR7U09WRVJTSU9OfSAke0RFU1RESVJ9JHtwcmVmaXh9L2xpYiR7TElCX1NVRkZJWH0vbGlibW9zcXVpdHRvLnNvCi0gCSQoSU5TVEFMTCkgLWQgJHtERVNURElSfSR7cHJlZml4fS9pbmNsdWRlLwotIAkkKElOU1RBTEwpIG1vc3F1aXR0by5oICR7REVTVERJUn0ke3ByZWZpeH0vaW5jbHVkZS9tb3NxdWl0dG8uaAotZGlmZiAtLWdpdCBhL2xpYi9jcHAvTWFrZWZpbGUgYi9saWIvY3BwL01ha2VmaWxlCi1pbmRleCA4YjYyN2QzLi5jZGIyOTIzIDEwMDY0NAotLS0tIGEvbGliL2NwcC9NYWtlZmlsZQotKysrIGIvbGliL2NwcC9NYWtlZmlsZQotQEAgLTEwLDcgKzEwLDcgQEAgYWxsIDogbGlibW9zcXVpdHRvcHAuc28uJHtTT1ZFUlNJT059Ci0gCi0gaW5zdGFsbCA6IGFsbAotIAkkKElOU1RBTEwpIC1kICR7REVTVERJUn0kKHByZWZpeCkvbGliJHtMSUJfU1VGRklYfS8KLS0JJChJTlNUQUxMKSAtcyAtLXN0cmlwLXByb2dyYW09JHtDUk9TU19DT01QSUxFfSR7U1RSSVB9IGxpYm1vc3F1aXR0b3BwLnNvLiR7U09WRVJTSU9OfSAke0RFU1RESVJ9JHtwcmVmaXh9L2xpYiR7TElCX1NVRkZJWH0vbGlibW9zcXVpdHRvcHAuc28uJHtTT1ZFUlNJT059Ci0rCSQoSU5TVEFMTCkgbGlibW9zcXVpdHRvcHAuc28uJHtTT1ZFUlNJT059ICR7REVTVERJUn0ke3ByZWZpeH0vbGliJHtMSUJfU1VGRklYfS9saWJtb3NxdWl0dG9wcC5zby4ke1NPVkVSU0lPTn0KLSAJbG4gLXNmIGxpYm1vc3F1aXR0b3BwLnNvLiR7U09WRVJTSU9OfSAke0RFU1RESVJ9JHtwcmVmaXh9L2xpYiR7TElCX1NVRkZJWH0vbGlibW9zcXVpdHRvcHAuc28KLSAJJChJTlNUQUxMKSAtZCAke0RFU1RESVJ9JHtwcmVmaXh9L2luY2x1ZGUvCi0gCSQoSU5TVEFMTCkgbW9zcXVpdHRvcHAuaCAke0RFU1RESVJ9JHtwcmVmaXh9L2luY2x1ZGUvbW9zcXVpdHRvcHAuaAotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQotaW5kZXggMmNmYjdkNC4uOWE5NzY0NCAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZQotKysrIGIvc3JjL01ha2VmaWxlCi1AQCAtMTAzLDEyICsxMDMsMTIgQEAgbW9zcXVpdHRvX3Bhc3N3ZC5vIDogbW9zcXVpdHRvX3Bhc3N3ZC5jCi0gCi0gaW5zdGFsbCA6IGFsbAotIAkkKElOU1RBTEwpIC1kICR7REVTVERJUn0kKHByZWZpeCkvc2JpbgotLQkkKElOU1RBTEwpIC1zIC0tc3RyaXAtcHJvZ3JhbT0ke0NST1NTX0NPTVBJTEV9JHtTVFJJUH0gbW9zcXVpdHRvICR7REVTVERJUn0ke3ByZWZpeH0vc2Jpbi9tb3NxdWl0dG8KLSsJJChJTlNUQUxMKSBtb3NxdWl0dG8gJHtERVNURElSfSR7cHJlZml4fS9zYmluL21vc3F1aXR0bwotCSQoSU5TVEFMTCkgLWQgJHtERVNURElSfSQocHJlZml4KS9pbmNsdWRlCi0gCSQoSU5TVEFMTCkgbW9zcXVpdHRvX3BsdWdpbi5oICR7REVTVERJUn0ke3ByZWZpeH0vaW5jbHVkZS9tb3NxdWl0dG9fcGx1Z2luLmgKLSBpZmVxICgkKFdJVEhfVExTKSx5ZXMpCi0JJChJTlNUQUxMKSAtZCAke0RFU1RESVJ9JChwcmVmaXgpL2JpbgotLQkkKElOU1RBTEwpIC1zIC0tc3RyaXAtcHJvZ3JhbT0ke0NST1NTX0NPTVBJTEV9JHtTVFJJUH0gbW9zcXVpdHRvX3Bhc3N3ZCAke0RFU1RESVJ9JHtwcmVmaXh9L2Jpbi9tb3NxdWl0dG9fcGFzc3dkCi0rCSQoSU5TVEFMTCkgbW9zcXVpdHRvX3Bhc3N3ZCAke0RFU1RESVJ9JHtwcmVmaXh9L2Jpbi9tb3NxdWl0dG9fcGFzc3dkCi0gZW5kaWYKLSAKLSB1bmluc3RhbGwgOgotLS0gCi0yLjcuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjQuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjQuMTQuYmIKaW5kZXggNzU1NDI0OC4uMTNjZTM4MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9tb3NxdWl0dG9fMS40LjE0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNC4xNC5iYgpAQCAtOCw5ICs4LDExIEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lcGwtdjEwO21kNT04ZDM4M2MzNzllOTFkMjBiYTE4YTUyYzNlN2QzYTk3OSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ub3RpY2UuaHRtbDttZDU9YTAwZDZmOWFiNTQyYmU3YmFiYzJkOGI4MGQ1ZDJhNGMgXAogIgorREVQRU5EUyA9ICJ1dGhhc2giCiAKIFNSQ19VUkkgPSAiaHR0cDovL21vc3F1aXR0by5vcmcvZmlsZXMvc291cmNlL21vc3F1aXR0by0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWcubWstYWxsb3ctcHJlZml4LW1hbmRpci1sb2NhbGVkaXItZnJvbS1lbnZpcm9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItdXRoYXNoLXJlbW92ZS1pbi10cmVlLXZlcnNpb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbW9zcXVpdHRvLnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vbW9zcXVpdHRvLmluaXQgXAogIgpAQCAtMjYsNiArMjgsNyBAQAogUEFDS0FHRUNPTkZJR1tzc2xdID0gIiwsb3BlbnNzbCIKIFBBQ0tBR0VDT05GSUdbdXVpZF0gPSAiLCx1dGlsLWxpbnV4IgogRVhUUkFfT0VNQUtFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2Rucy1zcnYnLCAnV0lUSF9TUlY9eWVzJywgJ1dJVEhfU1JWPW5vJywgZCl9IFwKKyAgICAgICAgICAgICAgICBTVFJJUD0vYmluL3RydWUgXAogICAgICAgICAgICAgICAgIFdJVEhfRE9DUz1ubyBcCiAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3NsJywgJ1dJVEhfVExTPXllcyBXSVRIX1RMU19QU0s9eWVzJywgJ1dJVEhfVExTPW5vIFdJVEhfVExTX1BTSz1ubycsIGQpfSBcCiAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXVpZCcsICdXSVRIX1VVSUQ9eWVzJywgJ1dJVEhfVVVJRD1ubycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4L29iZXgtZGF0YS1zZXJ2ZXJfMC40LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vYmV4LWRhdGEtc2VydmVyXzAuNC42LmJiCmluZGV4IGUxMGI4OWMuLjcxNWIwMjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4L29iZXgtZGF0YS1zZXJ2ZXJfMC40LjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXgvb2JleC1kYXRhLXNlcnZlcl8wLjQuNi5iYgpAQCAtMTEsNiArMTEsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjk2MWNhNWRiNmZlOWM5NzAyNGUxMzNjYzYyMDNjYzRkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzOTk0NjVkZGJkNmQwMjE3YWJlZGQ5NDExZDlkNzRhODIwZWZmYTBhNmExNDJhZGM0NDgyNjhkMzkyMDA5NGYiCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIEZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vcGVub2JleF8xLjcuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4L29wZW5vYmV4XzEuNy4yLmJiCmluZGV4IDJkYjQ4ZjMuLjFiNTY2ODUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4L29wZW5vYmV4XzEuNy4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4L29wZW5vYmV4XzEuNy4yLmJiCkBAIC0yNSw2ICsyNSw4IEBACiAKICMtLWVuYWJsZS1hcHBzIC0tZW5hYmxlLXN5c2xvZwogCitBU05FRURFRCA9ICIiCisKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKICAgICBybWRpciAke0R9JHtiaW5kaXJ9CiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleGZ0cC9vYmV4ZnRwXzAuMjQuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4ZnRwL29iZXhmdHBfMC4yNC4yLmJiCmluZGV4IDQ4OTg2MWMuLmI0YTkxNGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4ZnRwL29iZXhmdHBfMC4yNC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4ZnRwL29iZXhmdHBfMC4yNC4yLmJiCkBAIC0xNiw2ICsxNiw4IEBACiAKIGluaGVyaXQgY21ha2UgcGtnY29uZmlnCiAKK09FQ01BS0VfR0VORVJBVE9SID0gIlVuaXggTWFrZWZpbGVzIgorCiBQQUNLQUdFQ09ORklHID89ICIiCiAjIGZ1c2Ugc3VwcG9ydCB3aWxsIG5lZWQgbWV0YS1maWxlc3lzdGVtcyBsYXllcgogUEFDS0FHRUNPTkZJR1tmdXNlXSA9ICItREVOQUJMRV9GVVNFPU9OLC1ERU5BQkxFX0ZVU0U9T0ZGLGZ1c2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc21zdG9vbHMzL3Ntc3Rvb2xzMy9maXgtbWFrZWZpbGUtb3ZlcnJpZGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc21zdG9vbHMzL3Ntc3Rvb2xzMy9maXgtbWFrZWZpbGUtb3ZlcnJpZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwYTFkMzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczMvZml4LW1ha2VmaWxlLW92ZXJyaWRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZGViaWFuXQotCi0tLS0gYS9zcmMvTWFrZWZpbGUKLSsrKyBiL3NyYy9NYWtlZmlsZQotQEAgLTM3LDE2ICszNywxNSBAQAotICMgVXNlIHRoZSBmb2xsb3dpbmcgb25seSBvbiBHTlUvTGludXggYW5kIG9ubHkgaWYgeW91IG5lZWQgcHMgbGlzdGluZyBsaWtlICJzbXNkOiBNQUlOUFJPQ0VTUyIgYW5kICJzbXNkOiBHU00xIgotICMgQ0ZMQUdTICs9IC1EIFVTRV9MSU5VWF9QU19UUklDSwotIAotLWFsbDogc21zZCAKLS0KLS1zbXNkOiBzbXNkLmMgZXh0cmFzLm8gbG9ja2luZy5vIGNmZ2ZpbGUubyBsb2dnaW5nLm8gYWxhcm0ubyBzbXNkX2NmZy5vIGNoYXJzZXQubyBzdGF0cy5vIGJsYWNrbGlzdC5vIHdoaXRlbGlzdC5vIG1vZGVtaW5pdC5vIHBkdS5vCi0tCi0gaWZuZXEgKCwkKGZpbmRzdHJpbmcgU09MQVJJUywkKENGTEFHUykpKQotIGlmZXEgKCwkKGZpbmRzdHJpbmcgRElTQUJMRV9JTkVUX1NPQ0tFVCwkKENGTEFHUykpKQotIG92ZXJyaWRlIExGTEFHUyArPSAtbHNvY2tldCAtbG5zbAotIGVuZGlmCi0gZW5kaWYKLSAKLSthbGw6IHNtc2QgCi0rCi0rc21zZDogc21zZC5jIGV4dHJhcy5vIGxvY2tpbmcubyBjZmdmaWxlLm8gbG9nZ2luZy5vIGFsYXJtLm8gc21zZF9jZmcubyBjaGFyc2V0Lm8gc3RhdHMubyBibGFja2xpc3QubyB3aGl0ZWxpc3QubyBtb2RlbWluaXQubyBwZHUubwotIGlmbmVxICgsJChmaW5kc3RyaW5nIE5PU1RBVFMsJChDRkxBR1MpKSkKLSAJJChDQykgJChDRkxBR1MpIC1vICRAICReICQoTEZMQUdTKQotIGVsc2UgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc21zdG9vbHMzL3Ntc3Rvb2xzMy9zY3JpcHRzX25vX2Jhc2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc21zdG9vbHMzL3Ntc3Rvb2xzMy9zY3JpcHRzX25vX2Jhc2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDliNGQxZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbXN0b29sczMvc21zdG9vbHMzL3NjcmlwdHNfbm9fYmFzaC5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDg1NjAyYzNlNTMxZDM5ZTg5ZGM4Y2VlMGM0YTU5MmY4NTAwNmEwNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCaWxsIFJhbmRsZSA8YmlsbC5yYW5kbGVAZ21haWwuY29tPgorRGF0ZTogU3VuLCAzMSBEZWMgMjAxNyAwOTowODoyMyAtMDgwMAorCistLS0KKyBzY3JpcHRzL3NlbmRzbXMgICAgIHwgMiArLQorIHNjcmlwdHMvc21zMmh0bWwgICAgfCAyICstCisgc2NyaXB0cy9zbXMydW5pY29kZSB8IDIgKy0KKyBzY3JpcHRzL3VuaWNvZGUyc21zIHwgMiArLQorIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9zZW5kc21zIGIvc2NyaXB0cy9zZW5kc21zCitpbmRleCA1MTIwMjZkLi5iYjU2ODU2IDEwMDc1NQorLS0tIGEvc2NyaXB0cy9zZW5kc21zCisrKysgYi9zY3JpcHRzL3NlbmRzbXMKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgIyBUaGlzIHNjcmlwdCBzZW5kIGEgdGV4dCBzbXMgYXQgdGhlIGNvbW1hbmQgbGluZSBieSBjcmVhdGluZworICMgYSBzbXMgZmlsZSBpbiB0aGUgb3V0Z29pbmcgcXVldWUuCisgCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9zbXMyaHRtbCBiL3NjcmlwdHMvc21zMmh0bWwKK2luZGV4IGZmMjUzZTMuLjk0NjE4NWUgMTAwNzU1CistLS0gYS9zY3JpcHRzL3NtczJodG1sCisrKysgYi9zY3JpcHRzL3NtczJodG1sCitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorIAorICMgVGhpcyBzY3JpcHQgY29udmVydHMgYSByZWNlaXZlZCBzbXMgZmlsZSBpbnRvIGEgaHRtbCBmaWxlLiAKKyAKK2RpZmYgLS1naXQgYS9zY3JpcHRzL3NtczJ1bmljb2RlIGIvc2NyaXB0cy9zbXMydW5pY29kZQoraW5kZXggNDZlMjc1Ni4uMjgyNmRjMSAxMDA3NTUKKy0tLSBhL3NjcmlwdHMvc21zMnVuaWNvZGUKKysrKyBiL3NjcmlwdHMvc21zMnVuaWNvZGUKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgCisgIyBUaGlzIHNjcmlwdCBjb252ZXJ0cyBhIHJlY2VpdmVkIHNtcyBmaWxlIGludG8gYSBwdXJlIHVuaWNvZGUgdGV4dCBmaWxlLgorIAorZGlmZiAtLWdpdCBhL3NjcmlwdHMvdW5pY29kZTJzbXMgYi9zY3JpcHRzL3VuaWNvZGUyc21zCitpbmRleCAyYWU4NmRjLi4zZmNjZjBkIDEwMDc1NQorLS0tIGEvc2NyaXB0cy91bmljb2RlMnNtcworKysrIGIvc2NyaXB0cy91bmljb2RlMnNtcworQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAKKyAjIFRoaXMgc2NyaXB0IGNvbnZlcnRzIGEgcHVyZSB1bmljb2RlIHRleHQgZmlsZSBpbnRvIGFuIHNtcyBmaWxlIGZvciBzZW5kaW5nLgorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczMvc21zX2JpbnBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc21zdG9vbHMzL3Ntc3Rvb2xzMy9zbXNfYmlucGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWQ3OWQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczMvc21zX2JpbnBhdGgucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSA5YTRhODcyZGNhNzhjYTljYjZiZGMyMjhiZTYxZjVhNGMyZDY4YjFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FpIFVscmljaCA8a2FpdUBnbXguZGU+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDExOjIwOjUzICswMTAwCisKKy0tLQorIHNjcmlwdHMvc21zMyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zY3JpcHRzL3NtczMgYi9zY3JpcHRzL3NtczMKK2luZGV4IDZiOTkwYmYuLjA5YzA2M2IgMTAwNzU1CistLS0gYS9zY3JpcHRzL3NtczMKKysrKyBiL3NjcmlwdHMvc21zMworQEAgLTI0LDkgKzI0LDkgQEAgSU5GT0ZJTEU9Ii92YXIvcnVuL3Ntc2Qud29ya2luZyIKKyAjIExvZ2ZpbGUgY2FuIGFsc28gYmUgZGVmaW5lZCBpbiBoZXJlOgorIExPR0ZJTEU9Ii92YXIvbG9nL3Ntc2QubG9nIgorIAorLURBRU1PTj0vdXNyL2xvY2FsL2Jpbi9zbXNkCisrREFFTU9OPS91c3IvYmluL3Ntc2QKKyAjIEEgcHJvZ3JhbSB3aGljaCB0dXJucyBwb3dlciBvZmYgZm9yIGNvdXBsZSBvZiBzZWNvbmRzOgorLVJFU0VUTU9ERU1TPS91c3IvbG9jYWwvYmluL3Ntc2RfcmVzZXRtb2RlbXMKKytSRVNFVE1PREVNUz0vdXNyL2Jpbi9zbXNkX3Jlc2V0bW9kZW1zCisgTkFNRT1zbXNkCisgUFNPUFQ9Ii1lIgorIEVDSE89ZWNobwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczMvc21zX2JpbnBhdGhfYW5kX3Bzb3BzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczMvc21zX2JpbnBhdGhfYW5kX3Bzb3BzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmNhYTA5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbXN0b29sczMvc21zdG9vbHMzL3Ntc19iaW5wYXRoX2FuZF9wc29wcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLUluZGV4OiBzbXN0b29sczMvc2NyaXB0cy9zbXMzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc21zdG9vbHMzLm9yaWcvc2NyaXB0cy9zbXMzCTIwMTAtMDUtMDQgMTE6MjE6NDQuMDAwMDAwMDAwICswMjAwCi0rKysgc21zdG9vbHMzL3NjcmlwdHMvc21zMwkyMDE1LTAyLTIyIDIwOjA1OjUxLjYxNTA3NDQ2OSArMDEwMAotQEAgLTI0LDExICsyNCwxMSBAQAotICMgTG9nZmlsZSBjYW4gYWxzbyBiZSBkZWZpbmVkIGluIGhlcmU6Ci0gTE9HRklMRT0iL3Zhci9sb2cvc21zZC5sb2ciCi0gCi0tREFFTU9OPS91c3IvbG9jYWwvYmluL3Ntc2QKLStEQUVNT049L3Vzci9iaW4vc21zZAotICMgQSBwcm9ncmFtIHdoaWNoIHR1cm5zIHBvd2VyIG9mZiBmb3IgY291cGxlIG9mIHNlY29uZHM6Ci0tUkVTRVRNT0RFTVM9L3Vzci9sb2NhbC9iaW4vc21zZF9yZXNldG1vZGVtcwotK1JFU0VUTU9ERU1TPS91c3IvYmluL3Ntc2RfcmVzZXRtb2RlbXMKLSBOQU1FPXNtc2QKLS1QU09QVD0iLWUiCi0rUFNPUFQ9IiIKLSBFQ0hPPWVjaG8KLSBjYXNlIGB1bmFtZWAgaW4KLSAgICpCU0R8RGFyd2luKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczNfMy4xLjE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczNfMy4xLjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTBhMTNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbXN0b29sczMvc21zdG9vbHMzXzMuMS4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVNVTU1BUlkgPSAiU01TIEdhdGV3YXkgc29mdHdhcmUiCi1ERVNDUklQVElPTiA9ICJUaGUgU01TIFNlcnZlciBUb29scyAzIGlzIGEgU01TIEdhdGV3YXkgc29mdHdhcmUgd2hpY2ggY2FuIHNlbmQgYW5kIHJlY2VpdmUgc2hvcnQgbWVzc2FnZXMgdGhyb3VnaCBHU00gbW9kZW1zIGFuZCBtb2JpbGUgcGhvbmVzLiIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRkMjFlZmExYmIyYTE4NjM2MGRkZTQwMzVmODYwNjgyIgotSE9NRVBBR0UgPSAiaHR0cDovL3Ntc3Rvb2xzMy5rZWtla2FzdmkuY29tIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbXN0b29sczMua2VrZWthc3ZpLmNvbS9wYWNrYWdlcy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc21zX2JpbnBhdGhfYW5kX3Bzb3BzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1tYWtlZmlsZS1vdmVycmlkZS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAyNDFlZjYwZTY0NmZhYzFhMDYyNTRhODQ4ZTYxZWQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkMDBmZmFlYWEzMTJhNWI0Zjk2OWY0ZTk3YTY0NjAzYTg2NmJiZTE2ZTM5M2VhMDJmNWJmMDUyMzQ4MTRkNTkiCi0KLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKLQotRVhUUkFfT0VNQUtFICs9ICJMRkxBR1M9JyR7TERGTEFHU30nIgotCi1SREVQRU5EU18ke1BOfSA9ICJiYXNoIgotSU5JVFNDUklQVF9OQU1FID0gInNtczMiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLQotaW5oZXJpdCB1cGRhdGUtcmMuZAotCi1kb19pbnN0YWxsICgpIHsKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc3JjL3Ntc2QgIiR7RH0ke2JpbmRpcn0vc21zZCIKLQotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2NyaXB0cy9zZW5kc21zICIke0R9JHtiaW5kaXJ9L3NlbmRzbXMiCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zY3JpcHRzL3NtczJodG1sICIke0R9JHtiaW5kaXJ9L3NtczJodG1sIgotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2NyaXB0cy9zbXMydW5pY29kZSAiJHtEfSR7YmluZGlyfS9zbXMydW5pY29kZSIKLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3NjcmlwdHMvdW5pY29kZTJzbXMgIiR7RH0ke2JpbmRpcn0vdW5pY29kZTJzbXMiCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9leGFtcGxlcy9zbXNkLmNvbmYuZWFzeSAiJHtEfSR7c3lzY29uZmRpcn0vc21zZC5jb25mIgotCi0gICAgaW5zdGFsbCAtZCAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wiCi0gICAgaW5zdGFsbCAtZCAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvc21zIgotICAgIGluc3RhbGwgLWQgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL3Ntcy9pbmNvbWluZyIKLSAgICBpbnN0YWxsIC1kICIke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9zbXMvb3V0Z29pbmciCi0gICAgaW5zdGFsbCAtZCAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvc21zL2NoZWNrZWQiCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2NyaXB0cy9zbXMzICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtJTklUU0NSSVBUX05BTUV9IgotCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc21zdG9vbHMzL3Ntc3Rvb2xzM18zLjEuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc21zdG9vbHMzL3Ntc3Rvb2xzM18zLjEuMjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU2NDEzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbXN0b29sczMvc21zdG9vbHMzXzMuMS4yMS5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIlNNUyBHYXRld2F5IHNvZnR3YXJlIgorREVTQ1JJUFRJT04gPSAiVGhlIFNNUyBTZXJ2ZXIgVG9vbHMgMyBpcyBhIFNNUyBHYXRld2F5IHNvZnR3YXJlIHdoaWNoIGNhbiBzZW5kIGFuZCByZWNlaXZlIHNob3J0IG1lc3NhZ2VzIHRocm91Z2ggR1NNIG1vZGVtcyBhbmQgbW9iaWxlIHBob25lcy4iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00ZDIxZWZhMWJiMmExODYzNjBkZGU0MDM1Zjg2MDY4MiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zbXN0b29sczMua2VrZWthc3ZpLmNvbSIKKworU1JDX1VSSSA9ICJodHRwOi8vc21zdG9vbHMzLmtla2VrYXN2aS5jb20vcGFja2FnZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3Ntc19iaW5wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NjcmlwdHNfbm9fYmFzaC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjZhOWYwMzhmYjM4YTQ5Y2MzYTRmOGYxNGE4OGZiOGFmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyNmJhNGMwMmIxNmY2Y2YxMzE3N2JmZmNhNmM5MjMwZGM1ZmVmYWViYThlMzAzMGNkNGU0OTA1ZjZhOTIwODQiCisKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKKworRVhUUkFfT0VNQUtFICs9ICJMRkxBR1M9JyR7TERGTEFHU30nIgorCitJTklUU0NSSVBUX05BTUUgPSAic21zMyIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCitpbmhlcml0IHVwZGF0ZS1yYy5kCisKK2RvX2luc3RhbGwgKCkgeworCisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zcmMvc21zZCAiJHtEfSR7YmluZGlyfS9zbXNkIgorCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zY3JpcHRzL3NlbmRzbXMgIiR7RH0ke2JpbmRpcn0vc2VuZHNtcyIKKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3NjcmlwdHMvc21zMmh0bWwgIiR7RH0ke2JpbmRpcn0vc21zMmh0bWwiCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zY3JpcHRzL3NtczJ1bmljb2RlICIke0R9JHtiaW5kaXJ9L3NtczJ1bmljb2RlIgorICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2NyaXB0cy91bmljb2RlMnNtcyAiJHtEfSR7YmluZGlyfS91bmljb2RlMnNtcyIKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICBpbnN0YWxsIC1tIDY0NCAke1N9L2V4YW1wbGVzL3Ntc2QuY29uZi5lYXN5ICIke0R9JHtzeXNjb25mZGlyfS9zbXNkLmNvbmYiCisKKyAgICBpbnN0YWxsIC1kICIke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbCIKKyAgICBpbnN0YWxsIC1kICIke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9zbXMiCisgICAgaW5zdGFsbCAtZCAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvc21zL2luY29taW5nIgorICAgIGluc3RhbGwgLWQgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL3Ntcy9vdXRnb2luZyIKKyAgICBpbnN0YWxsIC1kICIke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9zbXMvY2hlY2tlZCIKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zY3JpcHRzL3NtczMgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0lOSVRTQ1JJUFRfTkFNRX0iCisKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzLzAwMDEtcmVwbGFjZS1TSUdDTEQtd2l0aC1TSUdDSExELWFuZC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvZmlsZXMvMDAwMS1yZXBsYWNlLVNJR0NMRC13aXRoLVNJR0NITEQtYW5kLWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE5MjA1NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzLzAwMDEtcmVwbGFjZS1TSUdDTEQtd2l0aC1TSUdDSExELWFuZC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gZjU2Nzc0MGNmNjQ5NzhhYzlkYjAxNGM3ODZiNmQwMjY3YjI0NGYzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDQgTWFyIDIwMTggMjI6MzA6MzAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIHJlcGxhY2UgU0lHQ0xEIHdpdGggU0lHQ0hMRCBhbmQgaW5jbHVkZSBzeXMvdHlwZXMuaAorCitGaXhlcworbWFpbi5jOjEyOToxMDogZXJyb3I6ICdTSUdDTEQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdTSUdDSExEJz8KKyAgIHNpZ25hbChTSUdDTEQsIHNpZ19jaGlsZCk7CisgICAgICAgICAgXn5+fn5+CisgICAgICAgICAgU0lHQ0hMRAorCittYWluLmM6MTI1OjI6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICd1bWFzaycgWy1XaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCisgIHVtYXNrKDApOworICBefn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9tYWluLmMgfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tYWluLmMgYi9zcmMvbWFpbi5jCitpbmRleCAzY2Y0MDcyLi5jZDM0MTk2IDEwMDY0NAorLS0tIGEvc3JjL21haW4uYworKysrIGIvc3JjL21haW4uYworQEAgLTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KK0BAIC0xMjYsOSArMTI3LDkgQEAgc3RhdGljIHZvaWQgZGFlbW9uX3N0YXJ0KGludCBpZ25zaWdjbGQpCisgCisgCWlmIChpZ25zaWdjbGQpIHsKKyAjaWZkZWYgU0lHVFNUUAorLQkJc2lnbmFsKFNJR0NMRCwgc2lnX2NoaWxkKTsKKysJCXNpZ25hbChTSUdDSExELCBzaWdfY2hpbGQpOworICNlbHNlCistCQlzaWduYWwoU0lHQ0xELCBTSUdfSUdOKTsKKysJCXNpZ25hbChTSUdDSExELCBTSUdfSUdOKTsKKyAjZW5kaWYKKyAJfQorIH0KKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzLzAwMDItcmVwbGFjZS1QVEhSRUFEX01VVEVYX0ZBU1RfTlAtd2l0aC1QVEhSRUFEX01VVEVYX05PUi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzLzAwMDItcmVwbGFjZS1QVEhSRUFEX01VVEVYX0ZBU1RfTlAtd2l0aC1QVEhSRUFEX01VVEVYX05PUi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGQxMmRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvZmlsZXMvMDAwMi1yZXBsYWNlLVBUSFJFQURfTVVURVhfRkFTVF9OUC13aXRoLVBUSFJFQURfTVVURVhfTk9SLnBhdGNoCkBAIC0wLDAgKzEsMTQzIEBACitGcm9tIDE5YjZjZjgwOTllMTk3NGI1ZmMzOTA4NmZjNTQxMDNiMGNiYzI2NTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCA0IE1hciAyMDE4IDIzOjAxOjI1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSByZXBsYWNlIFBUSFJFQURfTVVURVhfRkFTVF9OUCB3aXRoIFBUSFJFQURfTVVURVhfTk9STUFMCisKK1BUSFJFQURfTVVURVhfRkFTVF9OUCBpcyBub3QgYXZhaWxhYmxlIG9uIG5vbi1wb3NpeCBzeXN0ZW1zCitlLmcuIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvaGEuYyAgICAgICAgfCAyICstCisgc3JjL2ljbXA2LmMgICAgIHwgMiArLQorIHNyYy9taC5jICAgICAgICB8IDIgKy0KKyBzcmMvbW4uYyAgICAgICAgfCAyICstCisgc3JjL21vdmVtZW50LmMgIHwgMiArLQorIHNyYy9tcGRpc2NfaGEuYyB8IDIgKy0KKyBzcmMvbXBkaXNjX21uLmMgfCAyICstCisgc3JjL3RxdWV1ZS5jICAgIHwgMiArLQorIHNyYy90dW5uZWxjdGwuYyB8IDIgKy0KKyA5IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9oYS5jIGIvc3JjL2hhLmMKK2luZGV4IGZiZGNmZjAuLmIyZjgxMWUgMTAwNjQ0CistLS0gYS9zcmMvaGEuYworKysrIGIvc3JjL2hhLmMKK0BAIC0xMjQ2LDcgKzEyNDYsNyBAQCBpbnQgaGFfaW5pdCh2b2lkKQorIHsKKyAJcHRocmVhZF9tdXRleGF0dHJfdCBtYXR0cnM7CisgCXB0aHJlYWRfbXV0ZXhhdHRyX2luaXQoJm1hdHRycyk7CistCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9GQVNUX05QKTsKKysJcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHJzLCBQVEhSRUFEX01VVEVYX05PUk1BTCk7CisgCWlmIChwdGhyZWFkX211dGV4X2luaXQoJmJ1X3dvcmtlcl9tdXRleCwgJm1hdHRycykgfHwKKyAJICAgIHB0aHJlYWRfY29uZF9pbml0KCZjb25kLCBOVUxMKSkKKyAJCXJldHVybiAtMTsKK2RpZmYgLS1naXQgYS9zcmMvaWNtcDYuYyBiL3NyYy9pY21wNi5jCitpbmRleCAzNjk1MTM1Li42NDYwNjM0IDEwMDY0NAorLS0tIGEvc3JjL2ljbXA2LmMKKysrKyBiL3NyYy9pY21wNi5jCitAQCAtMjQzLDcgKzI0Myw3IEBAIGludCBpY21wNl9pbml0KHZvaWQpCisgCQlyZXR1cm4gLTE7CisgCS8qIGNyZWF0ZSBJQ01QIGxpc3RlbmVyIHRocmVhZCAqLworIAlwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cnMpOworLQlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0cnMsIFBUSFJFQURfTVVURVhfRkFTVF9OUCk7CisrCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9OT1JNQUwpOworIAlpZiAocHRocmVhZF9tdXRleF9pbml0KCZpY21wNl9zb2NrLnNlbmRfbXV0ZXgsICZtYXR0cnMpIHx8CisgCSAgICBwdGhyZWFkX3J3bG9ja19pbml0KCZoYW5kbGVyX2xvY2ssIE5VTEwpIHx8CisgCSAgICBwdGhyZWFkX2NyZWF0ZSgmaWNtcDZfbGlzdGVuZXIsIE5VTEwsIGljbXA2X2xpc3RlbiwgTlVMTCkpCitkaWZmIC0tZ2l0IGEvc3JjL21oLmMgYi9zcmMvbWguYworaW5kZXggNjBlMzQ1ZS4uNzkyOGY0YyAxMDA2NDQKKy0tLSBhL3NyYy9taC5jCisrKysgYi9zcmMvbWguYworQEAgLTIwNCw3ICsyMDQsNyBAQCBpbnQgbWhfaW5pdCh2b2lkKQorIAkJcmV0dXJuIC0xOworIAorIAlwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cnMpOworLQlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0cnMsIFBUSFJFQURfTVVURVhfRkFTVF9OUCk7CisrCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9OT1JNQUwpOworIAlpZiAocHRocmVhZF9tdXRleF9pbml0KCZtaF9zb2NrLnNlbmRfbXV0ZXgsICZtYXR0cnMpIHx8CisgCSAgICBwdGhyZWFkX3J3bG9ja19pbml0KCZoYW5kbGVyX2xvY2ssIE5VTEwpIHx8CisgCSAgICBwdGhyZWFkX2NyZWF0ZSgmbWhfbGlzdGVuZXIsIE5VTEwsIG1oX2xpc3RlbiwgTlVMTCkpCitkaWZmIC0tZ2l0IGEvc3JjL21uLmMgYi9zcmMvbW4uYworaW5kZXggMDkyY2ZjYi4uOGY3ZjQ0OCAxMDA2NDQKKy0tLSBhL3NyYy9tbi5jCisrKysgYi9zcmMvbW4uYworQEAgLTE0NzgsNyArMTQ3OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaG9tZV9hZGRyX2luZm8gKmhhaV9jb3B5KHN0cnVjdCBob21lX2FkZHJfaW5mbyAqY29uZl9oYWkpCisgCWlmIChoYWkgIT0gTlVMTCkgeworIAkJcHRocmVhZF9tdXRleGF0dHJfdCBtYXR0cnM7CisgCQlwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cnMpOworLQkJcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHJzLCBQVEhSRUFEX01VVEVYX0ZBU1RfTlApOworKwkJcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHJzLCBQVEhSRUFEX01VVEVYX05PUk1BTCk7CisgCisgCQltZW1jcHkoaGFpLCBjb25mX2hhaSwgc2l6ZW9mKHN0cnVjdCBob21lX2FkZHJfaW5mbykpOworIAorZGlmZiAtLWdpdCBhL3NyYy9tb3ZlbWVudC5jIGIvc3JjL21vdmVtZW50LmMKK2luZGV4IGQ5ODU5MzcuLjY0MDA0NDggMTAwNjQ0CistLS0gYS9zcmMvbW92ZW1lbnQuYworKysrIGIvc3JjL21vdmVtZW50LmMKK0BAIC0yMDEzLDcgKzIwMTMsNyBAQCBpbnQgbWRfaW5pdCh2b2lkKQorIAlpbnQgdmFsOworIAorIAlwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cnMpOworLQlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0cnMsIFBUSFJFQURfTVVURVhfRkFTVF9OUCk7CisrCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9OT1JNQUwpOworIAlpZiAocHRocmVhZF9tdXRleF9pbml0KCZpZmFjZV9sb2NrLCAmbWF0dHJzKSkKKyAJCXJldHVybiAtMTsKKyAKK2RpZmYgLS1naXQgYS9zcmMvbXBkaXNjX2hhLmMgYi9zcmMvbXBkaXNjX2hhLmMKK2luZGV4IDQwYmEwNWYuLmZkN2E5MGQgMTAwNjQ0CistLS0gYS9zcmMvbXBkaXNjX2hhLmMKKysrKyBiL3NyYy9tcGRpc2NfaGEuYworQEAgLTU1OSw3ICs1NTksNyBAQCBpbnQgbXBkX2hhX2luaXQodm9pZCkKKyB7CisgCXB0aHJlYWRfbXV0ZXhhdHRyX3QgbWF0dHJzOworIAlwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cnMpOworLQlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0cnMsIFBUSFJFQURfTVVURVhfRkFTVF9OUCk7CisrCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9OT1JNQUwpOworIAlpZiAocHRocmVhZF9tdXRleF9pbml0KCZtcGFfbG9jaywgJm1hdHRycykgfHwKKyAJICAgIHB0aHJlYWRfcndsb2NrX2luaXQoJnByZWZpeF9sb2NrLCBOVUxMKSB8fAorIAkgICAgaGFzaF9pbml0KCZtcGFfaGFzaCwgRE9VQkxFX0FERFIsIE1QQV9CVUNLRVRTKSA8IDApCitkaWZmIC0tZ2l0IGEvc3JjL21wZGlzY19tbi5jIGIvc3JjL21wZGlzY19tbi5jCitpbmRleCA0ODczYmQ2Li5hZGEwMmJkIDEwMDY0NAorLS0tIGEvc3JjL21wZGlzY19tbi5jCisrKysgYi9zcmMvbXBkaXNjX21uLmMKK0BAIC0yNjcsNyArMjY3LDcgQEAgaW50IG1wZF9tbl9pbml0KHZvaWQpCisgeworIAlwdGhyZWFkX211dGV4YXR0cl90IG1hdHRyczsKKyAJcHRocmVhZF9tdXRleGF0dHJfaW5pdCgmbWF0dHJzKTsKKy0JcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHJzLCBQVEhSRUFEX01VVEVYX0ZBU1RfTlApOworKwlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0cnMsIFBUSFJFQURfTVVURVhfTk9STUFMKTsKKyAJaWYgKHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXBzX2xvY2ssICZtYXR0cnMpKQorIAkJcmV0dXJuIC0xOworIAlpZiAoaGFzaF9pbml0KCZtcHNfaGFzaCwgRE9VQkxFX0FERFIsIE1QU19CVUNLRVRTKSA8IDApCitkaWZmIC0tZ2l0IGEvc3JjL3RxdWV1ZS5jIGIvc3JjL3RxdWV1ZS5jCitpbmRleCAyZjdhYTBiLi45YzE4NWI4IDEwMDY0NAorLS0tIGEvc3JjL3RxdWV1ZS5jCisrKysgYi9zcmMvdHF1ZXVlLmMKK0BAIC02NSw3ICs2NSw3IEBAIGludCB0YXNrcXVldWVfaW5pdCh2b2lkKQorIHsKKyAJcHRocmVhZF9tdXRleGF0dHJfdCBtYXR0cnM7CisgCXB0aHJlYWRfbXV0ZXhhdHRyX2luaXQoJm1hdHRycyk7CistCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9GQVNUX05QKTsKKysJcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHJzLCBQVEhSRUFEX01VVEVYX05PUk1BTCk7CisgCWlmIChwdGhyZWFkX211dGV4X2luaXQoJm11dGV4LCAmbWF0dHJzKSB8fAorIAkgICAgcHRocmVhZF9jb25kX2luaXQoJmNvbmQsIE5VTEwpIHx8CisgCSAgICBwdGhyZWFkX2NyZWF0ZSgmdHFfcnVubmVyLCBOVUxMLCBydW5uZXIsIE5VTEwpKQorZGlmZiAtLWdpdCBhL3NyYy90dW5uZWxjdGwuYyBiL3NyYy90dW5uZWxjdGwuYworaW5kZXggMjNmYzIwYi4uODEzYjhlYyAxMDA2NDQKKy0tLSBhL3NyYy90dW5uZWxjdGwuYworKysrIGIvc3JjL3R1bm5lbGN0bC5jCitAQCAtNDMzLDcgKzQzMyw3IEBAIGludCB0dW5uZWxjdGxfaW5pdCh2b2lkKQorIAkJcmV0dXJuIC0xOworIAorIAlwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cnMpOworLQlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0cnMsIFBUSFJFQURfTVVURVhfRkFTVF9OUCk7CisrCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9OT1JNQUwpOworIAlpZiAocHRocmVhZF9tdXRleF9pbml0KCZ0bmxfbG9jaywgJm1hdHRycykpCisgCQlyZXR1cm4gLTE7CisgCistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC91bWlwXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXBfMS4wLmJiCmluZGV4IDIxMjllMzcuLjBjMTIwYmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXBfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXBfMS4wLmJiCkBAIC0xNCw2ICsxNCw4IEBACiAgICAgICAgICAgIGZpbGU6Ly9taXA2ZCBcCiAgICAgICAgICAgIGZpbGU6Ly9taXA2ZC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWZvcm1hdC1zdHJpbmctdG8tZnByaW50Zi1jYWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1TSUdDTEQtd2l0aC1TSUdDSExELWFuZC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItcmVwbGFjZS1QVEhSRUFEX01VVEVYX0ZBU1RfTlAtd2l0aC1QVEhSRUFEX01VVEVYX05PUi5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ1JFViA9ICI3ZDY3MjA5Y2QxYmJhMmRkMGUxODNhMGZhMDdlZWVmMDc5NjRkZDE0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL2NwcHptcV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL2NwcHptcV9naXQuYmIKaW5kZXggYTY0NzQ1Yy4uNDkyMGJjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS9jcHB6bXFfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvY3Bwem1xX2dpdC5iYgpAQCAtNCw4ICs0LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRiMTc0ZWFmN2I1NWEzNGE3Yzg5NTUxMTk3ZjY2ZTk0IgogREVQRU5EUyA9ICJ6ZXJvbXEiCiAKLVNSQ1JFViA9ICI2OGE3YjA5Y2ZjZTAxYzRjMjc5ZmJhMmNmOTE2ODZmY2ZjNTY2ODQ4IgotUFYgPSAiNC4xLjUrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiNmFhM2FiNjg2ZTkxNmNiMGU2MmRmN2ZhN2QxMmUwYjEzYWU5ZmFlNiIKK1BWID0gIjQuMi4zK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vemVyb21xL2NwcHptcS5naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvemVyb21xXzQuMS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS96ZXJvbXFfNC4xLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMjZmMzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS96ZXJvbXFfNC4xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJaZXJvTVEgbG9va3MgbGlrZSBhbiBlbWJlZGRhYmxlIG5ldHdvcmtpbmcgbGlicmFyeSBidXQgYWN0cyBsaWtlIGEgY29uY3VycmVuY3kgZnJhbWV3b3JrIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy56ZXJvbXEub3JnIgotTElDRU5TRSA9ICJMR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWQ1MzExNDk1ZDk1MjA2MmUwZTRmYmJhMzljYmYzZGUxIgotCi1QQUNLQUdFQ09ORklHID8/PSAibGlic29kaXVtIgotUEFDS0FHRUNPTkZJR1tsaWJzb2RpdW1dID0gIi0td2l0aC1saWJzb2RpdW0sIC0td2l0aG91dC1saWJzb2RpdW0sIGxpYnNvZGl1bSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ2l0aHViLmNvbS96ZXJvbXEvemVyb21xNC0xL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS96ZXJvbXEtJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjODlkYjRkYmMwYjkwYzM0YzlmNDk4M2NiZmY2ZDMyMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMmViZjYwYTQzMDExZTc3MDc5OTMzNjM2NWJjYmNlMmViODU1NjllOWI1ZjUyYWEwZDhjYzA0NjcyNDM4YTBhIgotCi1TID0gIiR7V09SS0RJUn0vemVyb21xLSR7UFZ9IgotCi0jVW5jb21tZW50IHRvIGNob29zZSBwb2xsaW5nIHN5c3RlbSBtYW51YWxseS4gdmFsaWQgdmFsdWVzIGFyZSBrcXVldWUsIGVwb2xsLCBkZXZwb2xsLCBwb2xsIG9yIHNlbGVjdAotI0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXBvbGxlcj1rcXVldWUiCi0jQ0ZMQUdTX2FwcGVuZCA9ICIgLU8wIgotI0NYWEZMQUdTX2FwcGVuZCA9ICIgLU8wIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBwa2djb25maWcKLQotZG9fY29tcGlsZV9wdGVzdCAoKSB7Ci0gICAgZWNobyAnYnVpbGR0ZXN0LVRFU1RTOiAkKGNoZWNrX1BST0dSQU1TKScgPj4gJHtCfS9NYWtlZmlsZQotICAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS8ubGlicy90ZXN0XyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvemVyb21xXzQuMi41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS96ZXJvbXFfNC4yLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU2MzQ4YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvemVyb21xXzQuMi41LmJiCkBAIC0wLDAgKzEsMzIgQEAKK0RFU0NSSVBUSU9OID0gIlplcm9NUSBsb29rcyBsaWtlIGFuIGVtYmVkZGFibGUgbmV0d29ya2luZyBsaWJyYXJ5IGJ1dCBhY3RzIGxpa2UgYSBjb25jdXJyZW5jeSBmcmFtZXdvcmsiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lnplcm9tcS5vcmciCitMSUNFTlNFID0gIkxHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9ZDUzMTE0OTVkOTUyMDYyZTBlNGZiYmEzOWNiZjNkZTEiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJzb2RpdW0iCitQQUNLQUdFQ09ORklHW2xpYnNvZGl1bV0gPSAiLS13aXRoLWxpYnNvZGl1bSwgLS13aXRob3V0LWxpYnNvZGl1bSwgbGlic29kaXVtIgorCitTUkNfVVJJID0gImh0dHA6Ly9naXRodWIuY29tL3plcm9tcS9saWJ6bXEvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L3plcm9tcS0ke1BWfS50YXIuZ3ogXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorU1JDX1VSSVttZDVzdW1dID0gImExYzk1YjM0Mzg0MjU3ZTk4Njg0MmY0ZDAwNjk1N2I4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjOTA5MGJhMzU3MTNkNTliYjJmN2Q3OTY1Zjg3NzAzNmM0OWM1NTU4ZWEwYzI5MGIwZGNjNmYyYTE3ZTQ4OWYiCisKK1MgPSAiJHtXT1JLRElSfS96ZXJvbXEtJHtQVn0iCisKKyNVbmNvbW1lbnQgdG8gY2hvb3NlIHBvbGxpbmcgc3lzdGVtIG1hbnVhbGx5LiB2YWxpZCB2YWx1ZXMgYXJlIGtxdWV1ZSwgZXBvbGwsIGRldnBvbGwsIHBvbGwgb3Igc2VsZWN0CisjRVhUUkFfT0VDT05GICs9ICItLXdpdGgtcG9sbGVyPWtxdWV1ZSIKKyNDRkxBR1NfYXBwZW5kID0gIiAtTzAiCisjQ1hYRkxBR1NfYXBwZW5kID0gIiAtTzAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IHBrZ2NvbmZpZworCitkb19jb21waWxlX3B0ZXN0ICgpIHsKKyAgICBlY2hvICdidWlsZHRlc3QtVEVTVFM6ICQoY2hlY2tfUFJPR1JBTVMpJyA+PiAke0J9L01ha2VmaWxlCisgICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L3Rlc3RzLy5saWJzL3Rlc3RfKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDEtQ29tbWVudC1yc3QybWFuLXJlbGF0ZWQtc3R1ZmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXIvMDAwMS1Db21tZW50LXJzdDJtYW4tcmVsYXRlZC1zdHVmZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTBjNDllCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDEtQ29tbWVudC1yc3QybWFuLXJlbGF0ZWQtc3R1ZmYucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBhOTJmZDdkYTNhMjYyZTIxYzA5NzBhMzkwOGViMGI0NTAyODE5YTAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWWFuZyBMeXUgPHlhbmdsQGF4aXMuY29tPgorRGF0ZTogRnJpLCAyMyBGZWIgMjAxOCAxNjozMTo0OSArMDEwMAorU3ViamVjdDogW1BBVENIXSBDb21tZW50IHJzdDJtYW4gcmVsYXRlZCBzdHVmZgorCistLS0KKyBtZXNvbi5idWlsZCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA1NmQzOGU0Li4zYzNiMTA5IDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMTUsNyArMTUsNyBAQCBhZGRfcHJvamVjdF9hcmd1bWVudHMoJy1EQklORElSPSInICsgam9pbl9wYXRocyhnZXRfb3B0aW9uKCdwcmVmaXgnKSwgZ2V0X29wdGlvbgorIGNjID0gbWVzb24uZ2V0X2NvbXBpbGVyKCdjJykKKyBjb25mID0gY29uZmlndXJhdGlvbl9kYXRhKCkKKyBtb2RfcGtnY29uZmlnID0gaW1wb3J0KCdwa2djb25maWcnKQorLXByb2dfcnN0Mm1hbiA9IGZpbmRfcHJvZ3JhbSgncnN0Mm1hbicsICdyc3QybWFuLnB5JykKKysjcHJvZ19yc3QybWFuID0gZmluZF9wcm9ncmFtKCdyc3QybWFuJywgJ3JzdDJtYW4ucHknKQorIAorIHN1Yl9jZHZhciA9IHN1YnByb2plY3QoJ2MtZHZhcicsIHZlcnNpb246ICc+PTEnKQorIHN1Yl9jbGlzdCA9IHN1YnByb2plY3QoJ2MtbGlzdCcsIHZlcnNpb246ICc+PTMnKQorQEAgLTU2LDcgKzU2LDcgQEAgZW5kaWYKKyAKKyBjb25mLnNldCgnYmluZGlyJywgam9pbl9wYXRocyhnZXRfb3B0aW9uKCdwcmVmaXgnKSwgZ2V0X29wdGlvbignYmluZGlyJykpKQorIAorLXN1YmRpcignZG9jcycpCisrI3N1YmRpcignZG9jcycpCisgc3ViZGlyKCdzcmMnKQorIAorIGlmIHVzZV9sYXVuY2hlcgorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXIvMDAwMi1Db3JyZWN0LWluY2x1ZGluZy1kaXJlY3RvcnktZm9yLWNvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXIvMDAwMi1Db3JyZWN0LWluY2x1ZGluZy1kaXJlY3RvcnktZm9yLWNvbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkwOWRlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlci8wMDAyLUNvcnJlY3QtaW5jbHVkaW5nLWRpcmVjdG9yeS1mb3ItY29uZi5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIDRiNzlmNjAzYjk0ODcwOTkwNmMxMDg3OTYwODdkZTdiNTY0M2Y2MWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZYW5nIEx5dSA8eWFuZ2xAYXhpcy5jb20+CitEYXRlOiBNb24sIDI2IEZlYiAyMDE4IDEyOjQ4OjM0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIENvcnJlY3QgaW5jbHVkaW5nIGRpcmVjdG9yeSBmb3IgY29uZgorCistLS0KKyBzcmMvbGF1bmNoL2NvbmZpZy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xhdW5jaC9jb25maWcuYyBiL3NyYy9sYXVuY2gvY29uZmlnLmMKK2luZGV4IDZhNjg2OTkuLjU3OTQ3MWIgMTAwNjQ0CistLS0gYS9zcmMvbGF1bmNoL2NvbmZpZy5jCisrKysgYi9zcmMvbGF1bmNoL2NvbmZpZy5jCitAQCAtMTAyMiw3ICsxMDIyLDcgQEAgc3RhdGljIHZvaWQgY29uZmlnX3BhcnNlcl9lbmRfZm4odm9pZCAqdXNlcmRhdGEsIGNvbnN0IFhNTF9DaGFyICpuYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmN1cnJlbnQtPmluY2x1ZGUuc2VsaW51eF9yb290X3JlbGF0aXZlID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzX3NlbGludXhfcG9saWN5X3Jvb3QoKSA6CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5maWxlLT5wYXRoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5jdXJyZW50LT5jZGF0YSk7CisgICAgICAgICAgICAgICAgIGlmIChyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmVycm9yID0gZXJyb3JfdHJhY2Uocik7CistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXJfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MmJjY2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXJfZ2l0LmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiZGJ1cyBicm9rZXIiCitERVNDUklQVElPTiA9ICJEcm9wLWluIHJlcGxhY2VtZW50IGZvciBkYnVzLWRhZW1vbi4iCisKK1NFQ1RJT04gPSAiYmFzZSIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9N2I0ODZjMjMzOGQyMjVhMTQwNWQ5NzllZDJjMTVjZTgiCisKK0RFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCBleHBhdCIKKworUFYgPSAiOStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJjY2QwNmIyODQ4OTIxODJhZjU2OWU2OTA0NjI2MjMzMTE1MGUzNTM2IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYnVzMS9kYnVzLWJyb2tlcjtwcm90b2NvbD1naXQiCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Db21tZW50LXJzdDJtYW4tcmVsYXRlZC1zdHVmZi5wYXRjaCIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAyLUNvcnJlY3QtaW5jbHVkaW5nLWRpcmVjdG9yeS1mb3ItY29uZi5wYXRjaCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgc3lzdGVtZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0JQTn0uc2VydmljZSIKKworRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0iCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0iCisKK1JERVBFTkRTXyR7UE59ID0gImRidXMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvbGliZGJ1cy1jKystMC45LjAvMDAwNC11c2UtUE9TSVgtcG9sbC5oLWluc3RlYWQtb2Ytc3lzLXBvbGwuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9saWJkYnVzLWMrKy0wLjkuMC8wMDA0LXVzZS1QT1NJWC1wb2xsLmgtaW5zdGVhZC1vZi1zeXMtcG9sbC5oLnBhdGNoCmluZGV4IDBjMmM0ODcuLmIxMDhhNGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9saWJkYnVzLWMrKy0wLjkuMC8wMDA0LXVzZS1QT1NJWC1wb2xsLmgtaW5zdGVhZC1vZi1zeXMtcG9sbC5oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9saWJkYnVzLWMrKy0wLjkuMC8wMDA0LXVzZS1QT1NJWC1wb2xsLmgtaW5zdGVhZC1vZi1zeXMtcG9sbC5oLnBhdGNoCkBAIC0zMywxMCArMzMsMTAgQEAKICBzcmMvcGlwZS5jcHAgICAgICAgICAgICAgICAgICB8IDIgKy0KICAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3NyYy9ldmVudGxvb3AtaW50ZWdyYXRpb24uY3BwIGIvc3JjL2V2ZW50bG9vcC1pbnRlZ3JhdGlvbi5jcHAKLWluZGV4IDU3NzY5NzEuLjI3MWI1MDMgMTAwNjQ0Ci0tLS0gYS9zcmMvZXZlbnRsb29wLWludGVncmF0aW9uLmNwcAotKysrIGIvc3JjL2V2ZW50bG9vcC1pbnRlZ3JhdGlvbi5jcHAKK0luZGV4OiBsaWJkYnVzLWMrKy0wLjkuMC9zcmMvZXZlbnRsb29wLWludGVncmF0aW9uLmNwcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmRidXMtYysrLTAuOS4wLm9yaWcvc3JjL2V2ZW50bG9vcC1pbnRlZ3JhdGlvbi5jcHAKKysrKyBsaWJkYnVzLWMrKy0wLjkuMC9zcmMvZXZlbnRsb29wLWludGVncmF0aW9uLmNwcAogQEAgLTM2LDcgKzM2LDcgQEAKICAvKiBTVEQgKi8KICAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC00NCwxMiArNDQsMTIgQEAKIC0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KICsjaW5jbHVkZSA8cG9sbC5oPgogICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KICAKLWRpZmYgLS1naXQgYS9zcmMvZXZlbnRsb29wLmNwcCBiL3NyYy9ldmVudGxvb3AuY3BwCi1pbmRleCBmNjIyODEyLi43NzkwZTFlIDEwMDY0NAotLS0tIGEvc3JjL2V2ZW50bG9vcC5jcHAKLSsrKyBiL3NyYy9ldmVudGxvb3AuY3BwCisgdXNpbmcgbmFtZXNwYWNlIERCdXM7CitJbmRleDogbGliZGJ1cy1jKystMC45LjAvc3JjL2V2ZW50bG9vcC5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJkYnVzLWMrKy0wLjkuMC5vcmlnL3NyYy9ldmVudGxvb3AuY3BwCisrKysgbGliZGJ1cy1jKystMC45LjAvc3JjL2V2ZW50bG9vcC5jcHAKIEBAIC0yOCw3ICsyOCw3IEBACiAgI2luY2x1ZGUgPGRidXMtYysrL2V2ZW50bG9vcC5oPgogICNpbmNsdWRlIDxkYnVzLWMrKy9kZWJ1Zy5oPgpAQCAtNTksMTAgKzU5LDEwIEBACiAgI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAgCiAgI2luY2x1ZGUgPGRidXMvZGJ1cy5oPgotZGlmZiAtLWdpdCBhL3NyYy9waXBlLmNwcCBiL3NyYy9waXBlLmNwcAotaW5kZXggMDEyMTFiMy4uNDVjMmJhNiAxMDA2NDQKLS0tLSBhL3NyYy9waXBlLmNwcAotKysrIGIvc3JjL3BpcGUuY3BwCitJbmRleDogbGliZGJ1cy1jKystMC45LjAvc3JjL3BpcGUuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliZGJ1cy1jKystMC45LjAub3JpZy9zcmMvcGlwZS5jcHAKKysrKyBsaWJkYnVzLWMrKy0wLjkuMC9zcmMvcGlwZS5jcHAKIEBAIC0zMiw3ICszMiw3IEBACiAgCiAgLyogU1REICovCkBAIC03Miw2ICs3MiwzIEBACiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPGNhc3NlcnQ+Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvbGliZGJ1cy1jKystMC45LjAvZml4LW1pc3NpbmctdW5pc3RkLmgtaW5jbHVkZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9saWJkYnVzLWMrKy0wLjkuMC9maXgtbWlzc2luZy11bmlzdGQuaC1pbmNsdWRlLnBhdGNoCmluZGV4IDkwM2E3MjAuLmJmNjg3MGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9saWJkYnVzLWMrKy0wLjkuMC9maXgtbWlzc2luZy11bmlzdGQuaC1pbmNsdWRlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9saWJkYnVzLWMrKy0wLjkuMC9maXgtbWlzc2luZy11bmlzdGQuaC1pbmNsdWRlLnBhdGNoCkBAIC0yNCwxNyArMjQsMTUgQEAKICBpbmNsdWRlL2RidXMtYysrL2V2ZW50bG9vcC1pbnRlZ3JhdGlvbi5oIHwgICAgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2RidXMtYysrL2V2ZW50bG9vcC1pbnRlZ3JhdGlvbi5oIGIvaW5jbHVkZS9kYnVzLWMrKy9ldmVudGxvb3AtaW50ZWdyYXRpb24uaAotaW5kZXggNTEwODM0MC4uMWI1NmFiNSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvZGJ1cy1jKysvZXZlbnRsb29wLWludGVncmF0aW9uLmgKLSsrKyBiL2luY2x1ZGUvZGJ1cy1jKysvZXZlbnRsb29wLWludGVncmF0aW9uLmgKLUBAIC0yNyw2ICsyNyw3IEBACitJbmRleDogbGliZGJ1cy1jKystMC45LjAvaW5jbHVkZS9kYnVzLWMrKy9ldmVudGxvb3AtaW50ZWdyYXRpb24uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmRidXMtYysrLTAuOS4wLm9yaWcvaW5jbHVkZS9kYnVzLWMrKy9ldmVudGxvb3AtaW50ZWdyYXRpb24uaAorKysrIGxpYmRidXMtYysrLTAuOS4wL2luY2x1ZGUvZGJ1cy1jKysvZXZlbnRsb29wLWludGVncmF0aW9uLmgKK0BAIC0yNiw2ICsyNiw3IEBACisgI2RlZmluZSBfX0RCVVNYWF9FVkVOVExPT1BfSU5URUdSQVRJT05fSAogIAotICNpbmNsdWRlIDxjc3RyaW5nPgogICNpbmNsdWRlIDxlcnJuby5oPgogKyNpbmNsdWRlIDx1bmlzdGQuaD4KICAjaW5jbHVkZSAiYXBpLmgiCiAgI2luY2x1ZGUgImRpc3BhdGNoZXIuaCIKICAjaW5jbHVkZSAidXRpbC5oIgotLS0gCi0xLjcuOS43CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGwvMDAwMS1lbGwtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9lbGwvZWxsLzAwMDEtZWxsLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTcyYTkzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9lbGwvZWxsLzAwMDEtZWxsLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDRmOGM2ODc1N2IwNWQxMjM5MmNkMWE4YWVkMTc0Y2I4ZTU2ZjgwZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogVGh1LCA1IEFwciAyMDE4IDE3OjE5OjQ0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGVsbDogZml4IGJ1aWxkIHdpdGggbXVzbCBsaWJjCisKK211c2wgbGliYyBkb2Vzbid0IGltcGxlbWVudCBURU1QX0ZBSUxVUkVfUkVUUlkuIFVzZSB0aGUKK1RFTVBfRkFJTFVSRV9SRVRSWSBmcm9tIGdsaWJjIHRvIGZpeCBidWlsZC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMuMDEub3JnL3BpcGVybWFpbC9lbGwvMjAxOC1BcHJpbC8wMDEyMDkuaHRtbF0KKworU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBlbGwvZGJ1cy5oIHwgMTAgKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9lbGwvZGJ1cy5oIGIvZWxsL2RidXMuaAoraW5kZXggYTdjMDhkMi4uM2ZmNWUwZiAxMDA2NDQKKy0tLSBhL2VsbC9kYnVzLmgKKysrKyBiL2VsbC9kYnVzLmgKK0BAIC0yOCw2ICsyOCwxNiBAQAorICNpbmNsdWRlIDxzdGRkZWYuaD4KKyAjaW5jbHVkZSA8c3RkYXJnLmg+CisgCisrLyogdGFrZW4gZnJvbSBnbGliYyB1bmlzdGQuaCBmb3IgbXVzbCBzdXBwb3J0ICovCisrI2lmbmRlZiBURU1QX0ZBSUxVUkVfUkVUUlkKKysjZGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWShleHByZXNzaW9uKSAgICAgICAgICAgICBcCisrICAoX19leHRlbnNpb25fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAoeyBsb25nIGludCBfX3Jlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgZG8gX19yZXN1bHQgPSAobG9uZyBpbnQpIChleHByZXNzaW9uKTsgICAgICBcCisrICAgICAgIHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYgZXJybm8gPT0gRUlOVFIpOyAgXAorKyAgICAgICBfX3Jlc3VsdDsgfSkpCisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGxfMC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MjRiZDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGxfMC40LmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgID0gIkVtYmVkZGVkIExpbnV4IExpYnJhcnkiCitERVNDUklQVElPTiA9ICJFTEwgaXMgYSBEQlVTIGxpYnJhcnkgd2hpY2ggcHJvdmlkZXMgREJVUyBiaW5kaW5ncy4iCitMSUNFTlNFICA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiNTA0YjY3YzUwMzMxZmM3ODczNGZlZDkwZmIwZTA5IgorU0VDVElPTiA9ICJsaWJzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICJiNGFlYTA2ZmFiYjJhZjFhZjAxZjg2MWY4ZjM5NGM3NTk1MGI2ZDQ3IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpYnMvZWxsL2VsbC5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1lbGwtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoIFwKKyAgICAgICAgICAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICBta2RpciAke1N9L2J1aWxkLWF1eAorfQorCitERVBFTkRTID0gImRidXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGxfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9lbGwvZWxsX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBkZjZlMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGxfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSAgPSAiRW1iZWRkZWQgTGludXggTGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkVMTCBpcyBhIERCVVMgbGlicmFyeSB3aGljaCBwcm92aWRlcyBEQlVTIGJpbmRpbmdzLiIKLUxJQ0VOU0UgID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkiCi1TRUNUSU9OID0gImxpYnMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDUkVWID0gIjdiN2MxNWMyZTVjYWZmODhmYzQ1ZTdhOGI4NzRhNDcxOTZhMGVkZGQiCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGlicy9lbGwvZWxsLmdpdCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgIG1rZGlyICR7U30vYnVpbGQtYXV4Ci19Ci0KLURFUEVORFMgPSAiZGJ1cyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tLzAwMDEtR2xpYi1UaHJlYWRzLVByaXZhdGUtRml4LWdvYmoucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbS8wMDAxLUdsaWItVGhyZWFkcy1Qcml2YXRlLUZpeC1nb2JqLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4OTkwMjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbS8wMDAxLUdsaWItVGhyZWFkcy1Qcml2YXRlLUZpeC1nb2JqLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gODM4ZmU4NGMyZGRjYzlhZjUxYzM0Zjc1MWRlZmJmM2RkMGJhOGEwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtqZWxsIEFobHN0ZWR0IDxramVsbGFobHN0ZWR0QGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjAgRGVjIDIwMTcgMjA6MDA6MzIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gR2xpYjo6VGhyZWFkczo6UHJpdmF0ZTogRml4IGdvYmooKQorCitCdWcgNzkxNzExCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9HTk9NRS9nbGlibW0vY29tbWl0LzM3ZDU3YWU5NTcyYjdkNzRhYTM4NWEzMDMxM2VjZWFlN2YyZDNmY2VdCisgZ2xpYi9nbGlibW0vdGhyZWFkcy5oIHwgMiArLQorIGdsaWIvc3JjL3RocmVhZHMuaGcgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dsaWIvZ2xpYm1tL3RocmVhZHMuaCBiL2dsaWIvZ2xpYm1tL3RocmVhZHMuaAoraW5kZXggZjdlMmI4MmEuLjJjMGNiZThjIDEwMDY0NAorLS0tIGEvZ2xpYi9nbGlibW0vdGhyZWFkcy5oCisrKysgYi9nbGliL2dsaWJtbS90aHJlYWRzLmgKK0BAIC02NTcsNyArNjU3LDcgQEAgcHVibGljOgorICAgICovCisgICBpbmxpbmUgdm9pZCByZXBsYWNlKFQqIGRhdGEpOworIAorLSAgR1ByaXZhdGUqIGdvYmooKSB7IHJldHVybiBnb2JqZWN0XzsgfQorKyAgR1ByaXZhdGUqIGdvYmooKSB7IHJldHVybiAmZ29iamVjdF87IH0KKyAKKyBwcml2YXRlOgorICAgR1ByaXZhdGUgZ29iamVjdF87CitkaWZmIC0tZ2l0IGEvZ2xpYi9zcmMvdGhyZWFkcy5oZyBiL2dsaWIvc3JjL3RocmVhZHMuaGcKK2luZGV4IDg2ZDdhMTdiLi5jODJhNjEzMCAxMDA2NDQKKy0tLSBhL2dsaWIvc3JjL3RocmVhZHMuaGcKKysrKyBiL2dsaWIvc3JjL3RocmVhZHMuaGcKK0BAIC02MjgsNyArNjI4LDcgQEAgcHVibGljOgorICAgICovCisgICBpbmxpbmUgdm9pZCByZXBsYWNlKFQqIGRhdGEpOworIAorLSAgR1ByaXZhdGUqIGdvYmooKSB7IHJldHVybiBnb2JqZWN0XzsgfQorKyAgR1ByaXZhdGUqIGdvYmooKSB7IHJldHVybiAmZ29iamVjdF87IH0KKyAKKyBwcml2YXRlOgorICAgR1ByaXZhdGUgZ29iamVjdF87CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbS9yZW1vdmUtZXhhbXBsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbS9yZW1vdmUtZXhhbXBsZXMucGF0Y2gKaW5kZXggYTU5NDRjMi4uZDMyZmU3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGlibW0vcmVtb3ZlLWV4YW1wbGVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tL3JlbW92ZS1leGFtcGxlcy5wYXRjaApAQCAtMSw3ICsxLDE2IEBACi1JbmRleDogZ2xpYm1tLTIuMjIuMS9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdsaWJtbS0yLjIyLjEub3JpZy9NYWtlZmlsZS5hbQotKysrIGdsaWJtbS0yLjIyLjEvTWFrZWZpbGUuYW0KK0Zyb20gZjQ4YTY5ZmQxMWIyZWRhNmM0M2ZmMDQ2YzIwMmNiYzRkY2Q0ZTkyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CitEYXRlOiBUdWUsIDEyIEp1bCAyMDExIDExOjQ2OjM3ICswMjAwCisKKy0tLQorIE1ha2VmaWxlLmFtICB8IDcgKy0tLS0tLQorIGNvbmZpZ3VyZS5hYyB8IDEgLQorIDIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBhMGRmOGFmLi5jM2Q1ZTA2IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCiBAQCAtMjMsMTIgKzIzLDcgQEAgc3JjX3N1YmRpcnMgPSBnbGliL3NyYyBnaW8vc3JjCiAgZWxzZQogIHNyY19zdWJkaXJzID0KQEAgLTE2LDE1ICsyNSwxNSBAQAogIAogIGdsaWJtbV9pbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS8kKEdMSUJNTV9NT0RVTEVfTkFNRSkKICBnbGlibW1faW5jbHVkZV9IRUFERVJTID0gZ2xpYi9nbGlibW0uaAotSW5kZXg6IGdsaWJtbS0yLjIyLjEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2xpYm1tLTIuMjIuMS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdsaWJtbS0yLjIyLjEvY29uZmlndXJlLmFjCi1AQCAtMTM2LDcgKzEzNiw2IEBAIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGUKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGMyMGU3NzguLjc0MjAzYmUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE2Niw3ICsxNjYsNiBAQCBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlCiAgICAgICAgICAgICAgICAgICBnaW8vc3JjL01ha2VmaWxlCiAgICAgICAgICAgICAgICAgICBnaW8vZ2lvbW0vTWFrZWZpbGUKICAgICAgICAgICAgICAgICAgIHRlc3RzL01ha2VmaWxlCiAtICAgICAgICAgICAgICAgICBleGFtcGxlcy9NYWtlZmlsZQogICAgICAgICAgICAgICAgICAgZG9jcy9NYWtlZmlsZQogICAgICAgICAgICAgICAgICAgZG9jcy9yZWZlcmVuY2UvRG94eWZpbGUKLSAgICAgICAgICAgICAgICAgIE1TVkNfTmV0MjAwNS9nbGlibW0vZ2xpYm1tLnJjCisgICAgICAgICAgICAgICAgICBNU1ZDX05ldDIwMTMvZ2xpYm1tL2dsaWJtbS5yYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGlibW1fMi41MC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGlibW1fMi41MC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2M1NThmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tXzIuNTAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiQysrIGJpbmRpbmdzIGZvciB0aGUgZ2xpYiBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ndGttbS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy50b29sczttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLURFUEVORFMgPSAibW0tY29tbW9uIGdsaWItMi4wIGxpYnNpZ2MrKy0yLjAgZ2xpYi0yLjAtbmF0aXZlIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gIiBcCi0gICAgZnRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9nbGlibW0vJHtTSFJUX1ZFUn0vZ2xpYm1tLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL3JlbW92ZS1leGFtcGxlcy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYTViOTE1ZGM0MmZjNjI5ODNmYTc4Y2E4NDg2ZjQzOTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZkODUwNTFkYTljYjQwMmNjODM0OGNlYzcyZGZlNGQ3OWY5MzQ1ZGY0YTFkYmY2ODcwM2E0ZGVkNDU4NDZhNCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9nbGlibW0tMi40Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hY2xvY2FsCi0KLSAgICBpbnN0YWxsIC1tIDA2NDQgZ2xpYi9nbGlibW1jb25maWcuaCAke0R9JHtkYXRhZGlyfS9nbGlibW0tMi40LwotICAgIGluc3RhbGwgLW0gMDY0NCBzY3JpcHRzL2dsaWJtbV9jaGVja19wZXJsLm00ICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvIHx8IHRydWUKLQotICAgIGZvciBpIGluIGdlbmVyYXRlX3dyYXBfaW5pdC5wbCBnbW1wcm9jOyBkbwotICAgICAgICBzZWQgLWkgLWUgJzFzLC4qLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZGlyfS9nbGlibW0tMi40L3Byb2MvJGkKLSAgICBkb25lCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vZ2xpYm1tLSogJHtsaWJkaXJ9L2dsaWJtbS0yLjQvaW5jbHVkZS8gJHtsaWJkaXJ9L2dsaWJtbS0yLjQvcHJvYy8gJHtsaWJkaXJ9L2dpb21tLTIuNC9pbmNsdWRlLyIKLQotUkRFUEVORFNfJHtQTn0tZGV2ID0gInBlcmwiCi1TRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tXzIuNTQuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tXzIuNTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzA2NDMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGlibW1fMi41NC4xLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiQysrIGJpbmRpbmdzIGZvciB0aGUgZ2xpYiBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ndGttbS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDJkZmZmZWJjNTZmZWM3NTI3YWFjNTNiN2E4OWQxZDggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy50b29sczttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0RFUEVORFMgPSAibW0tY29tbW9uIGdsaWItMi4wIGxpYnNpZ2MrKy0yLjAgZ2xpYi0yLjAtbmF0aXZlIgoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1NIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgorCitTUkNfVVJJID0gIiBcCisgICAgZnRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9nbGlibW0vJHtTSFJUX1ZFUn0vZ2xpYm1tLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovL3JlbW92ZS1leGFtcGxlcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtR2xpYi1UaHJlYWRzLVByaXZhdGUtRml4LWdvYmoucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImRlZTVlYmUzMDlmNTk3NmMzZGFjZmNmNWM0M2EwNjJiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdjYzI4YzczMmIwNGQ3MGVkMzRmMGM5MjM1NDMxMjkwODNjZmI5MDU4MGVhNGEyYjRiZTViMzg4MDJiZjZhNGEiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZ2xpYm1tLTIuNAorICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYWNsb2NhbAorCisgICAgaW5zdGFsbCAtbSAwNjQ0IGdsaWIvZ2xpYm1tY29uZmlnLmggJHtEfSR7ZGF0YWRpcn0vZ2xpYm1tLTIuNC8KKyAgICBpbnN0YWxsIC1tIDA2NDQgc2NyaXB0cy9nbGlibW1fY2hlY2tfcGVybC5tNCAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLyB8fCB0cnVlCisKKyAgICBmb3IgaSBpbiBnZW5lcmF0ZV93cmFwX2luaXQucGwgZ21tcHJvYzsgZG8KKyAgICAgICAgc2VkIC1pIC1lICcxcywuKiwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmRpcn0vZ2xpYm1tLTIuNC9wcm9jLyRpCisgICAgZG9uZQorfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2dsaWJtbS0qICR7bGliZGlyfS9nbGlibW0tMi40L2luY2x1ZGUvICR7bGliZGlyfS9nbGlibW0tMi40L3Byb2MvICR7bGliZGlyfS9naW9tbS0yLjQvaW5jbHVkZS8iCisKK1JERVBFTkRTXyR7UE59LWRldiA9ICJwZXJsIgorU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL21tLWNvbW1vbi9tbS1jb21tb25fMC45LjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9tbS1jb21tb24vbW0tY29tbW9uXzAuOS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk5ZWI4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL21tLWNvbW1vbi9tbS1jb21tb25fMC45LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotaW5oZXJpdCBnbm9tZWJhc2UKLQotR05PTUVfQ09NUFJFU1NfVFlQRT0ieHoiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjQ5ZGM0N2FmOGM4OWNlNWIzYzc2ODMwNmI5YTBmOTIyIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMTZjMGUyYmMxOTZiNjdmYmMxNDVlZGFlY2I1ZGJlNTgxODM4NjUwNGZlNTcwM2RlMjcwMDJkNzcxNDBmYTIxNyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9tbS1jb21tb24vbW0tY29tbW9uXzAuOS4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbW0tY29tbW9uL21tLWNvbW1vbl8wLjkuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkxY2FhNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbW0tY29tbW9uL21tLWNvbW1vbl8wLjkuMTEuYmIKQEAgLTAsMCArMSw5IEBACitpbmhlcml0IGdub21lYmFzZQorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkNmYyYTQzNTg5NDgwZDIzMTU2NzJkYTBiNTgzOWI1NiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjIwZDFlNzQ2NmNhNGM4M2M5MmUyOWY5ZThkZmNjOGU1NzIxZmRmMTMzN2Y1MzE1N2JlZDk3YmUzYjczYjMyYTgiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BseW1vdXRoL2ZpbGVzLzAwMDEtTWFrZS1mdWxsLXBhdGgtdG8tc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50LWNvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvZmlsZXMvMDAwMS1NYWtlLWZ1bGwtcGF0aC10by1zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQtY29uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhODZjNzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BseW1vdXRoL2ZpbGVzLzAwMDEtTWFrZS1mdWxsLXBhdGgtdG8tc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50LWNvbi5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDc0NmM2OTBmNTdiNTJlNmZlMjFjYzJhMTFiNWJiNzFkMjVhZjMxMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMyBEZWMgMjAxNyAxNjoxNTo1NyArMDEwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIGZ1bGwgcGF0aCB0byBzeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQgY29uZmlndXJhYmxlCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBhYWQ2NzNlLi42YjM3MTc5IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC00OCw3ICs0OCwxMCBAQCBQTFlNT1VUSF9MSUJTPSItbG0gLWxydCAtbGRsIgorIEFDX1NVQlNUKFBMWU1PVVRIX0NGTEFHUykKKyBBQ19TVUJTVChQTFlNT1VUSF9MSUJTKQorIAorLUFDX1BBVEhfUFJPRyhbU1lTVEVNRF9BU0tfUEFTU1dPUkRfQUdFTlRdLCBbc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50XSkKKytBQ19BUkdfV0lUSChzeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQsIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50XSxbcGF0aCBvZiBzeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnRdKSxTWVNURU1EX0FTS19QQVNTV09SRF9BR0VOVD0ke3dpdGh2YWx9LFNZU1RFTURfQVNLX1BBU1NXT1JEX0FHRU5UPS9iaW4vc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50KQorK0FDX1NVQlNUKFNZU1RFTURfQVNLX1BBU1NXT1JEX0FHRU5UKQorKworKyMgY2hlY2tlZDogVURFVkFETSBpcyBub3QgdXNlZAorIEFDX1BBVEhfUFJPRyhbVURFVkFETV0sIFt1ZGV2YWRtXSkKKyAKKyBBQ19BUkdfRU5BQkxFKHBhbmdvLCBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcGFuZ29dLFtlbmFibGUgYnVpbGRpbmcgd2l0aCBwYW5nbywgZGlzYWJsZWQgdGhlcmUgaXMgbm8gZW5jcnlwdGlvbiBwcm9tcHRzXSksZW5hYmxlX3BhbmdvPSRlbmFibGV2YWwsZW5hYmxlX3BhbmdvPXllcykKKy0tIAorMi45LjUKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wbHltb3V0aC9wbHltb3V0aF8wLjkuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvcGx5bW91dGhfMC45LjIuYmIKaW5kZXggNjE2M2NmZi4uN2U4ZDZlMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wbHltb3V0aC9wbHltb3V0aF8wLjkuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BseW1vdXRoL3BseW1vdXRoXzAuOS4yLmJiCkBAIC0xNiwxMyArMTYsMTYgQEAKIFBST1ZJREVTID0gInZpcnR1YWwvcHNwbGFzaCIKIFJQUk9WSURFU18ke1BOfSA9ICJ2aXJ0dWFsLXBzcGxhc2ggdmlydHVhbC1wc3BsYXNoLXN1cHBvcnQiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcGx5bW91dGgvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci5iejIiCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcGx5bW91dGgvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgIGZpbGU6Ly8wMDAxLU1ha2UtZnVsbC1wYXRoLXRvLXN5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudC1jb24ucGF0Y2ggXAorIgogU1JDX1VSSVttZDVzdW1dID0gImZmNDIwOTk0ZGViN2VhMjAzZGY2NzhkZjkyZTdhYjdkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmMGNlODIwNDJjZjljN2VhZGQyNTE3YTFmNzRjOGE4NWZhODY5OTc4MWQ5ZjI5NGEwNmVhZGUyOWZiZWQ1N2YiCiAKIEVYVFJBX09FQ09ORiArPSAiIC0tZW5hYmxlLXNoYXJlZCAtLWRpc2FibGUtc3RhdGljIC0tZGlzYWJsZS1ndGsgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gXAogICAgIC0td2l0aC1sb2dvPSR7TE9HT30gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLWVuYWJsZS1zeXN0ZW1kLWludGVncmF0aW9uIC0td2l0aC1zeXN0ZW0tcm9vdC1pbnN0YWxsJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXN5c3RlbWQtaW50ZWdyYXRpb24gLS13aXRoLXN5c3RlbS1yb290LWluc3RhbGwgLS13aXRoLXN5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQnLCAnJywgZCl9IFwKICIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gInBhbmdvIGluaXRyZCIKQEAgLTMxLDcgKzM0LDcgQEAKIAogUEFDS0FHRUNPTkZJR1tkcm1dID0gIi0tZW5hYmxlLWRybSwtLWRpc2FibGUtZHJtLGxpYmRybSIKIFBBQ0tBR0VDT05GSUdbcGFuZ29dID0gIi0tZW5hYmxlLXBhbmdvLC0tZGlzYWJsZS1wYW5nbyxwYW5nbyIKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLWVuYWJsZS1ndGssLS1kaXNhYmxlLWd0ayxndGsrIgorUEFDS0FHRUNPTkZJR1tndGtdID0gIi0tZW5hYmxlLWd0aywtLWRpc2FibGUtZ3RrLGd0ayszIgogUEFDS0FHRUNPTkZJR1tpbml0cmRdID0gIiwsLCIKIAogTE9HTyA/Pz0gIiR7ZGF0YWRpcn0vcGx5bW91dGgvYml6Y29tLnBuZyIKQEAgLTM5LDkgKzQyLDYgQEAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDY0NCAke0J9L3N5c3RlbWQtdW5pdHMvKi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtCfS9zeXN0ZW1kLXVuaXRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXBseW1vdXRoLnBhdGggJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KICAgICAjIFJlbW92ZSAvdmFyL3J1biBmcm9tIHBhY2thZ2UgYXMgcGx5bW91dGggd2lsbCBwb3B1bGF0ZSBpdCBvbiBzdGFydHVwCiAgICAgcm0gLWZyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvdG95Ym94L3RveWJveF8wLjcuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvdG95Ym94L3RveWJveF8wLjcuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDdjMjg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS90b3lib3gvdG95Ym94XzAuNy41LmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAiVG95Ym94IGNvbWJpbmVzIGNvbW1vbiB1dGlsaXRpZXMgdG9nZXRoZXIgaW50byBhIHNpbmdsZSBleGVjdXRhYmxlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGFuZGxleS5uZXQvdG95Ym94LyIKK0RFUEVORFMgPSAiYXR0ciIKKworTElDRU5TRSA9ICJCU0QtMC1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mMGI4YjNkZDY0MzFiY2FhMjQ1ZGEwYTA4YmQwZDUxMSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxhbmRsZXkubmV0L3RveWJveC9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhOGJiNTAyYTFiZTk0MWYwNmRkMjY0NGZmZjI1ZjU0NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzYWRhNDUwYWMxZWFiMWRmYzM1MmZlZTkxNWVhNjEyOWI5YTQzNDljMTg4NWYxMzk0YjYxYmQyZDg5YTQ2YzA0IgorCitTRUNUSU9OID0gImJhc2UiCisKK1RPWUJPWF9CSU4gPSAiZ2VuZXJhdGVkL3Vuc3RyaXBwZWQvdG95Ym94IgorCitFWFRSQV9PRU1BS0UgPSAnSE9TVENDPSIke0JVSUxEX0NDfSIgQ1BVUz0ke0BvZS51dGlscy5jcHVfY291bnQoKX0nCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBvZV9ydW5tYWtlIGRlZmNvbmZpZworCisgICAgIyBEaXNhYmxlIGtpbGxhbGw1IGFzIGl0IGlzbid0IG1hbmFnZWQgYnkgdXBkYXRlLWFsdGVybmF0aXZlcworICAgIHNlZCAtZSAncy9DT05GSUdfS0lMTEFMTDU9eS8jIENPTkZJR19LSUxMQUxMNSBpcyBub3Qgc2V0LycgLWkgLmNvbmZpZworCisgICAgIyBEaXNhYmxlIHN3YXBvbiBhcyBpdCBkb2Vzbid0IGhhbmRsZSB0aGUgJy1hJyBhcmd1bWVudCB1c2VkIGR1cmluZyBib290CisgICAgc2VkIC1lICdzL0NPTkZJR19TV0FQT049eS8jIENPTkZJR19TV0FQT04gaXMgbm90IHNldC8nIC1pIC5jb25maWcKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICBvZV9ydW5tYWtlICR7VE9ZQk9YX0JJTn0KKworICAgICMgQ3JlYXRlIGEgbGlzdCBvZiBsaW5rcyBuZWVkZWQKKyAgICAke0JVSUxEX0NDfSAtSSAuIHNjcmlwdHMvaW5zdGFsbC5jIC1vIGdlbmVyYXRlZC9pbnN0bGlzdAorICAgIC4vZ2VuZXJhdGVkL2luc3RsaXN0IGxvbmcgfCBzZWQgLWUgJ3MjXiMvIycgPiB0b3lib3gubGlua3MKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICAjIEluc3RhbGwgbWFudWFsbHkgaW5zdGVhZCBvZiB1c2luZyAnbWFrZSBpbnN0YWxsJworICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgaWYgZ3JlcCAtcSAiQ09ORklHX1RPWUJPWF9TVUlEPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgorICAgICAgICBpbnN0YWxsIC1tIDQ3NTUgJHtCfS8ke1RPWUJPWF9CSU59ICR7RH0ke2Jhc2VfYmluZGlyfS90b3lib3gKKyAgICBlbHNlCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9LyR7VE9ZQk9YX0JJTn0gJHtEfSR7YmFzZV9iaW5kaXJ9L3RveWJveAorICAgIGZpCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vdG95Ym94LmxpbmtzICR7RH0ke3N5c2NvbmZkaXJ9Cit9CisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCisjIElmIHlvdSd2ZSBjaG9zZW4gdG8gaW5zdGFsbCB0b3lib3ggeW91IHByb2JhYmx5IHdhbnQgaXQgdG8gdGFrZSBwcmVjZWRlbmNlCisjIG92ZXIgYnVzeWJveCB3aGVyZSBwb3NzaWJsZSBidXQgbm90IG92ZXIgb3RoZXIgcGFja2FnZXMKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjYwIgorCitweXRob24gZG9fcGFja2FnZV9wcmVwZW5kICgpIHsKKyAgICAjIFJlYWQgbGlua3MgZnJvbSAvZXRjL3RveWJveC5saW5rcyBhbmQgY3JlYXRlIGFwcHJvcHJpYXRlCisgICAgIyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHZhcmlhYmxlcworCisgICAgZHZhciA9IGQuZ2V0VmFyKCdEJykKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisgICAgdGFyZ2V0ID0gIi9iaW4vdG95Ym94IgorCisgICAgZiA9IG9wZW4oJyVzL2V0Yy90b3lib3gubGlua3MnICUgKGR2YXIpLCAncicpCisgICAgZm9yIGFsdF9saW5rX25hbWUgaW4gZjoKKyAgICAgICAgYWx0X2xpbmtfbmFtZSA9IGFsdF9saW5rX25hbWUuc3RyaXAoKQorICAgICAgICBhbHRfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoYWx0X2xpbmtfbmFtZSkKKyAgICAgICAgZC5hcHBlbmRWYXIoJ0FMVEVSTkFUSVZFXyVzJyAlIChwbiksICcgJyArIGFsdF9uYW1lKQorICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIGFsdF9uYW1lLCBhbHRfbGlua19uYW1lKQorICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX1RBUkdFVCcsIGFsdF9uYW1lLCB0YXJnZXQpCisgICAgZi5jbG9zZSgpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3RveWJveC90b3lib3hfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS90b3lib3gvdG95Ym94X2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhmOTcxNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3RveWJveC90b3lib3hfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotU1VNTUFSWSA9ICJUb3lib3ggY29tYmluZXMgY29tbW9uIHV0aWxpdGllcyB0b2dldGhlciBpbnRvIGEgc2luZ2xlIGV4ZWN1dGFibGUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5sYW5kbGV5Lm5ldC90b3lib3gvIgotREVQRU5EUyA9ICJhdHRyIgotCi1MSUNFTlNFID0gIkJTRC0wLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWYwYjhiM2RkNjQzMWJjYWEyNDVkYTBhMDhiZDBkNTExIgotCi1QViA9ICIwLjcuNCtnaXQke1NSQ1BWfSIKLQotU1JDUkVWID0gIjc4Mjg5MjAzMDMxYWZjMjM1ODUwMzVjMzYyYmVlYzEwZGI1NDk1OGQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGFuZGxleS90b3lib3g7cHJvdG9jb2w9aHR0cHMgXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1TRUNUSU9OID0gImJhc2UiCi0KLVRPWUJPWF9CSU4gPSAiZ2VuZXJhdGVkL3Vuc3RyaXBwZWQvdG95Ym94IgotCi1FWFRSQV9PRU1BS0UgPSAnSE9TVENDPSIke0JVSUxEX0NDfSIgQ1BVUz0ke0BvZS51dGlscy5jcHVfY291bnQoKX0nCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICBvZV9ydW5tYWtlIGRlZmNvbmZpZwotCi0gICAgIyBEaXNhYmxlIGtpbGxhbGw1IGFzIGl0IGlzbid0IG1hbmFnZWQgYnkgdXBkYXRlLWFsdGVybmF0aXZlcwotICAgIHNlZCAtZSAncy9DT05GSUdfS0lMTEFMTDU9eS8jIENPTkZJR19LSUxMQUxMNSBpcyBub3Qgc2V0LycgLWkgLmNvbmZpZwotCi0gICAgIyBEaXNhYmxlIHN3YXBvbiBhcyBpdCBkb2Vzbid0IGhhbmRsZSB0aGUgJy1hJyBhcmd1bWVudCB1c2VkIGR1cmluZyBib290Ci0gICAgc2VkIC1lICdzL0NPTkZJR19TV0FQT049eS8jIENPTkZJR19TV0FQT04gaXMgbm90IHNldC8nIC1pIC5jb25maWcKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlICR7VE9ZQk9YX0JJTn0KLQotICAgICMgQ3JlYXRlIGEgbGlzdCBvZiBsaW5rcyBuZWVkZWQKLSAgICAke0JVSUxEX0NDfSAtSSAuIHNjcmlwdHMvaW5zdGFsbC5jIC1vIGdlbmVyYXRlZC9pbnN0bGlzdAotICAgIC4vZ2VuZXJhdGVkL2luc3RsaXN0IGxvbmcgfCBzZWQgLWUgJ3MjXiMvIycgPiB0b3lib3gubGlua3MKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICAjIEluc3RhbGwgbWFudWFsbHkgaW5zdGVhZCBvZiB1c2luZyAnbWFrZSBpbnN0YWxsJwotICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0gICAgaWYgZ3JlcCAtcSAiQ09ORklHX1RPWUJPWF9TVUlEPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgotICAgICAgICBpbnN0YWxsIC1tIDQ3NTUgJHtCfS8ke1RPWUJPWF9CSU59ICR7RH0ke2Jhc2VfYmluZGlyfS90b3lib3gKLSAgICBlbHNlCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9LyR7VE9ZQk9YX0JJTn0gJHtEfSR7YmFzZV9iaW5kaXJ9L3RveWJveAotICAgIGZpCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vdG95Ym94LmxpbmtzICR7RH0ke3N5c2NvbmZkaXJ9Ci19Ci0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi0jIElmIHlvdSd2ZSBjaG9zZW4gdG8gaW5zdGFsbCB0b3lib3ggeW91IHByb2JhYmx5IHdhbnQgaXQgdG8gdGFrZSBwcmVjZWRlbmNlCi0jIG92ZXIgYnVzeWJveCB3aGVyZSBwb3NzaWJsZSBidXQgbm90IG92ZXIgb3RoZXIgcGFja2FnZXMKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjYwIgotCi1weXRob24gZG9fcGFja2FnZV9wcmVwZW5kICgpIHsKLSAgICAjIFJlYWQgbGlua3MgZnJvbSAvZXRjL3RveWJveC5saW5rcyBhbmQgY3JlYXRlIGFwcHJvcHJpYXRlCi0gICAgIyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHZhcmlhYmxlcwotCi0gICAgZHZhciA9IGQuZ2V0VmFyKCdEJykKLSAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0gICAgdGFyZ2V0ID0gIi9iaW4vdG95Ym94IgotCi0gICAgZiA9IG9wZW4oJyVzL2V0Yy90b3lib3gubGlua3MnICUgKGR2YXIpLCAncicpCi0gICAgZm9yIGFsdF9saW5rX25hbWUgaW4gZjoKLSAgICAgICAgYWx0X2xpbmtfbmFtZSA9IGFsdF9saW5rX25hbWUuc3RyaXAoKQotICAgICAgICBhbHRfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoYWx0X2xpbmtfbmFtZSkKLSAgICAgICAgZC5hcHBlbmRWYXIoJ0FMVEVSTkFUSVZFXyVzJyAlIChwbiksICcgJyArIGFsdF9uYW1lKQotICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIGFsdF9uYW1lLCBhbHRfbGlua19uYW1lKQotICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX1RBUkdFVCcsIGFsdF9uYW1lLCB0YXJnZXQpCi0gICAgZi5jbG9zZSgpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NyeXB0c2V0dXAvY3J5cHRzZXR1cF8xLjcuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9jcnlwdHNldHVwL2NyeXB0c2V0dXBfMS43LjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3J5cHRzZXR1cC9jcnlwdHNldHVwXzEuNy40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vY3J5cHRzZXR1cC9jcnlwdHNldHVwXzEuNy40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vZW5naW5lLXBrY3MxMS9lbmdpbmUtcGtjczExXzAuMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2VuZ2luZS1wa2NzMTEvZW5naW5lLXBrY3MxMV8wLjIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzc5ZjM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2VuZ2luZS1wa2NzMTEvZW5naW5lLXBrY3MxMV8wLjIuMi5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIkEgUEtDUyIKK0RFU0NSSVBUSU9OID0gIlwKK0VuZ2luZV9wa2NzMTEgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYW4gZW5naW5lIGZvciBPcGVuU1NMLiBJdCBjYW4gYmUgXAorbG9hZGVkIHVzaW5nIGNvZGUsIGNvbmZpZyBmaWxlIG9yIGNvbW1hbmQgbGluZSBhbmQgd2lsbCBwYXNzIGFueSBmdW5jdGlvbiBcCitjYWxsIGJ5IG9wZW5zc2wgdG8gYSBQS0NTIGNhcmRzIGFuZCBzb2Z0d2FyZSBmb3IgdXNpbmcgc21hcnQgY2FyZHMgaW4gUEtDUyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuU0MvZW5naW5lX3BrY3MxMSIKK1NFQ1RJT04gPSAiRGV2ZWxvcG1lbnQvTGlicmFyaWVzIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvZW5naW5lX3BrY3MxMS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjY7bWQ1PTk3M2ExOWY4YTYxMDVkZTA0N2YyYWRmYmJmYzA0YzMzIgorREVQRU5EUyA9ICJvcGVuc3NsIGxpYnAxMSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL09wZW5TQy9lbmdpbmVfcGtjczExLmdpdCIKK1NSQ1JFViA9ICIxMzJmY2YyYzhiMzE5ZjlmNGIyZWJkYzhkY2I1NGZmNDk2ZGMwNTE5IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWRpc2FibGUtc3RhdGljIFwKKyAgICAtLWxpYmRpciAke2xpYmRpcn0vZW5naW5lcyBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2VuZ2luZXMvbGlicGtjczExLmxhCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZW5naW5lcy9saWJwa2NzMTEke1NPTElCU0RFVn0iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9lbmdpbmVzLy5kZWJ1Zy8iCisKK1JERVBFTkRTXyR7UE59ICs9ICJvcGVuc3NsIGxpYnAxMSBvcGVuc2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1jcnlwdC9saWJtY3J5cHRfMi41LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vbGlibWNyeXB0L2xpYm1jcnlwdF8yLjUuOC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtY3J5cHQvbGlibWNyeXB0XzIuNS44LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vbGlibWNyeXB0L2xpYm1jcnlwdF8yLjUuOC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzb2RpdW0vbGlic29kaXVtXzEuMC4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9saWJzb2RpdW0vbGlic29kaXVtXzEuMC4xMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzb2RpdW0vbGlic29kaXVtXzEuMC4xMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2xpYnNvZGl1bS9saWJzb2RpdW1fMS4wLjExLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BrY3MxMS1oZWxwZXIvcGtjczExLWhlbHBlcl8xLjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL3BrY3MxMS1oZWxwZXIvcGtjczExLWhlbHBlcl8xLjExLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BrY3MxMS1oZWxwZXIvcGtjczExLWhlbHBlcl8xLjExLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vcGtjczExLWhlbHBlci9wa2NzMTEtaGVscGVyXzEuMTEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYi8wMDAxLU1ha2VmaWxlLUZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9sZXZlbGRiL2xldmVsZGIvMDAwMS1NYWtlZmlsZS1GaXgtcGFyYWxsZWwtYnVpbGQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYi8wMDAxLU1ha2VmaWxlLUZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL2xldmVsZGIvbGV2ZWxkYi8wMDAxLU1ha2VmaWxlLUZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtYnVpbGRfZGV0ZWN0X3BsYXRmb3JtLUNoZWNrLWZvci1fX1NTRTRfMl9fLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL2xldmVsZGIvbGV2ZWxkYi8wMDAxLWJ1aWxkX2RldGVjdF9wbGF0Zm9ybS1DaGVjay1mb3ItX19TU0U0XzJfXy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtYnVpbGRfZGV0ZWN0X3BsYXRmb3JtLUNoZWNrLWZvci1fX1NTRTRfMl9fLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtYnVpbGRfZGV0ZWN0X3BsYXRmb3JtLUNoZWNrLWZvci1fX1NTRTRfMl9fLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGIvMDAwMi1tYWtlZmlsZS1idWlsZC1TSEFSRURfTUVNRU5WTElCLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL2xldmVsZGIvbGV2ZWxkYi8wMDAyLW1ha2VmaWxlLWJ1aWxkLVNIQVJFRF9NRU1FTlZMSUIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYi8wMDAyLW1ha2VmaWxlLWJ1aWxkLVNIQVJFRF9NRU1FTlZMSUIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9sZXZlbGRiL2xldmVsZGIvMDAwMi1tYWtlZmlsZS1idWlsZC1TSEFSRURfTUVNRU5WTElCLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL2xldmVsZGIvbGV2ZWxkYl9naXQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYl9naXQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9sZXZlbGRiL2xldmVsZGJfZ2l0LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmRiaS9saWJkYmkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL2xpYmRiaS9saWJkYmkuaW5jCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmRiaS9saWJkYmkuaW5jCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbGliZGJpL2xpYmRiaS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZGJpL2xpYmRiaV8wLjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9saWJkYmkvbGliZGJpXzAuOS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmRiaS9saWJkYmlfMC45LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9saWJkYmkvbGliZGJpXzAuOS4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLUludGVsUkRGUE1hdGhMaWIyMFUxLUNoZWNrLWZvci1fX0RFRklORURfd2NoYXJfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1JbnRlbFJERlBNYXRoTGliMjBVMS1DaGVjay1mb3ItX19ERUZJTkVEX3djaGFyX3QucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVGVsbC1zY29ucy10by11c2UtYnVpbGQtc2V0dGluZ3MtZnJvbS1lbnZpcm9ubWVudC12YS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMDFlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVGVsbC1zY29ucy10by11c2UtYnVpbGQtc2V0dGluZ3MtZnJvbS1lbnZpcm9ubWVudC12YS5wYXRjaApAQCAtMCwwICsxLDY0IEBACitGcm9tIDUzMzY4ZDNmNGFkYzA5ZGQ4NDIzNGE5YWYzMTc3MWJjZDhjYTI3NTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdmVuIEViZW5mZWxkIDxzdmVuLmViZW5mZWxkQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgSmFuIDIwMTYgMjI6NDE6MjggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gVGVsbCBzY29ucyB0byB1c2UgYnVpbGQgc2V0dGluZ3MgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKworU2lnbmVkLW9mZi1ieTogU3ZlbiBFYmVuZmVsZCA8c3Zlbi5lYmVuZmVsZEBnbWFpbC5jb20+CistLS0KKyBTQ29uc3RydWN0ICAgICAgICAgICAgICAgIHwgOCArKysrKystLQorIHNyYy9tb25nby91dGlsL1NDb25zY3JpcHQgfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvU0NvbnN0cnVjdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL1NDb25zdHJ1Y3QKKysrKyBnaXQvU0NvbnN0cnVjdAorQEAgLTU0OCw2ICs1NDgsNyBAQCBkZWYgdmFyaWFibGVfYXJjaF9jb252ZXJ0ZXIodmFsKToKKyAgICAgICAgICdhbWQ2NCc6ICAneDg2XzY0JywKKyAgICAgICAgICdlbXQ2NCc6ICAgJ3g4Nl82NCcsCisgICAgICAgICAneDg2JzogICAgJ2kzODYnLAorKyAgICAgICAgJ2FhcmNoNjQnOiAnYXJtNjQnLAorICAgICB9CisgICAgIHZhbCA9IHZhbC5sb3dlcigpCisgCitAQCAtNjI3LDcgKzYyOCw4IEBAIGVudl92YXJzLkFkZCgKKyApCisgCisgZW52X3ZhcnMuQWRkKCdDQycsCistICAgIGhlbHA9J1NlbGVjdCB0aGUgQyBjb21waWxlciB0byB1c2UnKQorKyAgICBoZWxwPSdTZWxlY3QgdGhlIEMgY29tcGlsZXIgdG8gdXNlJywKKysgICAgZGVmYXVsdD1vcy5nZXRlbnYoJ0NDJykpCisgCisgZW52X3ZhcnMuQWRkKCdDQ0ZMQUdTJywKKyAgICAgaGVscD0nU2V0cyBmbGFncyBmb3IgdGhlIEMgYW5kIEMrKyBjb21waWxlcicsCitAQCAtNjQ3LDcgKzY0OSw4IEBAIGVudl92YXJzLkFkZCgnQ1BQUEFUSCcsCisgICAgIGNvbnZlcnRlcj12YXJpYWJsZV9zaGxleF9jb252ZXJ0ZXIpCisgCisgZW52X3ZhcnMuQWRkKCdDWFgnLAorLSAgICBoZWxwPSdTZWxlY3QgdGhlIEMrKyBjb21waWxlciB0byB1c2UnKQorKyAgICBoZWxwPSdTZWxlY3QgdGhlIEMrKyBjb21waWxlciB0byB1c2UnLAorKyAgICBkZWZhdWx0PW9zLmdldGVudignQ1hYJykpCisgCisgZW52X3ZhcnMuQWRkKCdDWFhGTEFHUycsCisgICAgIGhlbHA9J1NldHMgZmxhZ3MgZm9yIHRoZSBDKysgY29tcGlsZXInLAorQEAgLTg5NSw2ICs4OTgsNyBAQCBlbnZEaWN0ID0gZGljdChCVUlMRF9ST09UPWJ1aWxkRGlyLAorICAgICAgICAgICAgICAgICkKKyAKKyBlbnYgPSBFbnZpcm9ubWVudCh2YXJpYWJsZXM9ZW52X3ZhcnMsICoqZW52RGljdCkKKytlbnYuUHJlcGVuZEVOVlBhdGgoJ1BBVEgnLCBvcy5nZXRlbnYoJ1BBVEgnKSkKKyBkZWwgZW52RGljdAorIAorIGVudi5BZGRNZXRob2QoZW52X29zX2lzX3dyYXBwZXIsICdUYXJnZXRPU0lzJykKK0luZGV4OiBnaXQvc3JjL21vbmdvL3V0aWwvU0NvbnNjcmlwdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9tb25nby91dGlsL1NDb25zY3JpcHQKKysrKyBnaXQvc3JjL21vbmdvL3V0aWwvU0NvbnNjcmlwdAorQEAgLTI3NCw2ICsyNzQsOCBAQCBpZiBlbnZbJ01PTkdPX0FMTE9DQVRPUiddID09ICd0Y21hbGxvYyc6CisgICAgICAgICAgICAgICAgICdNT05HT19IQVZFX0dQRVJGVE9PTFNfU0laRV9DTEFTU19TVEFUUycKKyAgICAgICAgICAgICBdCisgICAgICAgICApCisrICAgIGlmIG5vdCB1c2Vfc3lzdGVtX3ZlcnNpb25fb2ZfbGlicmFyeSgndmFsZ3JpbmQnKToKKysgICAgICAgIHRjbXNwRW52LkluamVjdFRoaXJkUGFydHlJbmNsdWRlUGF0aHMoJ3ZhbGdyaW5kJykKKyAKKyAgICAgaWYgbm90IHVzZV9zeXN0ZW1fdmVyc2lvbl9vZl9saWJyYXJ5KCd2YWxncmluZCcpOgorICAgICAgICAgIyBJbmNsdWRlIHZhbGdyaW5kIHNpbmNlIHRjbWFsbG9jIGRpc2FibGVzIGl0c2VsZiB3aGlsZSBydW5uaW5nIHVuZGVyIHZhbGdyaW5kCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1fX0dMSUJDX18tdG8tY29udHJvbC11c2Utb2YtZ251X2dldF9saWJjX3ZlcnNpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OWIzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSBhNDk1MTQ4OWQ2NDljMmI2MDljYmI4MGY2Y2ZiNDlmZGNhZDhiZDQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMiBTZXAgMjAxNyAxMDowMzozNyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBVc2UgbG9uZyBsb25nIGluc3RlYWQgb2YgaW50NjRfdAorCitGaXhlcworZXJyb3I6IGNhbGwgdG8gbWVtYmVyIGZ1bmN0aW9uICdhcHBlbmROdW1iZXInIGlzIGFtYmlndW91cworc2luY2UgdGhpcyBmdW5jdGlvbiBleHBlY3RzIGxvbmcgbG9uZyBhcyBwYXJhbWV0ZXIgYW5kIG5vdCBpbnQ2NF90CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworIHNyYy9tb25nby91dGlsL3Byb2NwYXJzZXIuY3BwIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvc3JjL21vbmdvL3V0aWwvcHJvY3BhcnNlci5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvbW9uZ28vdXRpbC9wcm9jcGFyc2VyLmNwcAorKysrIGdpdC9zcmMvbW9uZ28vdXRpbC9wcm9jcGFyc2VyLmNwcAorQEAgLTI2MCw3ICsyNjAsNyBAQCBTdGF0dXMgcGFyc2VQcm9jU3RhdChjb25zdCBzdGQ6OnZlY3RvcjxTCisgCisgICAgICAgICAgICAgICAgICAgICBTdHJpbmdEYXRhIHN0cmluZ1ZhbHVlKCgqcGFydEl0KS5iZWdpbigpLCAoKnBhcnRJdCkuZW5kKCkgLSAoKnBhcnRJdCkuYmVnaW4oKSk7CisgCistICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWx1ZTsKKysgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyAgdmFsdWU7CisgCisgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyRnJvbVN0cmluZyhzdHJpbmdWYWx1ZSwgJnZhbHVlKS5pc09LKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CitAQCAtMjcyLDcgKzI3Miw3IEBAIFN0YXR1cyBwYXJzZVByb2NTdGF0KGNvbnN0IHN0ZDo6dmVjdG9yPFMKKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICBTdHJpbmdEYXRhIHN0cmluZ1ZhbHVlKCgqcGFydEl0KS5iZWdpbigpLCAoKnBhcnRJdCkuZW5kKCkgLSAoKnBhcnRJdCkuYmVnaW4oKSk7CisgCistICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbHVlOworKyAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmFsdWU7CisgCisgICAgICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHN0cmluZ1ZhbHVlLCAmdmFsdWUpLmlzT0soKSkgeworICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAwOworQEAgLTM2NSw3ICszNjUsNyBAQCBTdGF0dXMgcGFyc2VQcm9jTWVtSW5mbyhjb25zdCBzdGQ6OnZlY3RvCisgCisgICAgICAgICAgICAgU3RyaW5nRGF0YSBzdHJpbmdWYWx1ZSgoKnBhcnRJdCkuYmVnaW4oKSwgKCpwYXJ0SXQpLmVuZCgpKTsKKyAKKy0gICAgICAgICAgICB1aW50NjRfdCB2YWx1ZTsKKysgICAgICAgICAgICBsb25nIGxvbmcgdmFsdWU7CisgCisgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcoc3RyaW5nVmFsdWUsICZ2YWx1ZSkuaXNPSygpKSB7CisgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKK0BAIC00MjYsNyArNDI2LDcgQEAgU3RhdHVzIHBhcnNlUHJvY0Rpc2tTdGF0cyhjb25zdCBzdGQ6OnZlYworICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nRGF0YSBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNPTk9iakJ1aWxkZXIqIGJ1aWxkZXIpIHsKKyAgICAgYm9vbCBmb3VuZEtleXMgPSBmYWxzZTsKKy0gICAgc3RkOjp2ZWN0b3I8dWludDY0X3Q+IHN0YXRzOworKyAgICBzdGQ6OnZlY3Rvcjxsb25nIGxvbmc+IHN0YXRzOworICAgICBzdGF0cy5yZXNlcnZlKGtEaXNrRmllbGRDb3VudCk7CisgCisgICAgIHVzaW5nIHN0cmluZ19zcGxpdF9pdGVyYXRvciA9IGJvb3N0OjpzcGxpdF9pdGVyYXRvcjxTdHJpbmdEYXRhOjpjb25zdF9pdGVyYXRvcj47CitAQCAtNTAxLDcgKzUwMSw3IEBAIFN0YXR1cyBwYXJzZVByb2NEaXNrU3RhdHMoY29uc3Qgc3RkOjp2ZWMKKyAKKyAgICAgICAgICAgICAgICAgU3RyaW5nRGF0YSBzdHJpbmdWYWx1ZSgoKnBhcnRJdCkuYmVnaW4oKSwgKCpwYXJ0SXQpLmVuZCgpKTsKKyAKKy0gICAgICAgICAgICAgICAgdWludDY0X3QgdmFsdWU7CisrICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB2YWx1ZTsKKyAKKyAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcoc3RyaW5nVmFsdWUsICZ2YWx1ZSkuaXNPSygpKSB7CisgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1zdHJlcnJvcl9yLW9ubHktb24tZ2xpYmMtc3lzdGVtcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2Utc3RyZXJyb3Jfci1vbmx5LW9uLWdsaWJjLXN5c3RlbXMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLXN0cmVycm9yX3Itb25seS1vbi1nbGliYy1zeXN0ZW1zLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLXN0cmVycm9yX3Itb25seS1vbi1nbGliYy1zeXN0ZW1zLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAyLUFkZC1hLWRlZmluaXRpb24tZm9yLXRoZS1tYWNyby1fX0VMRl9OQVRJVkVfQ0xBU1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMi1BZGQtYS1kZWZpbml0aW9uLWZvci10aGUtbWFjcm8tX19FTEZfTkFUSVZFX0NMQVNTLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDItZF9zdGF0ZS5jcHAtQWRkLW1pc3NpbmctZGVwZW5kZW5uY3ktb24tbG9jYWxfc2hhcmRpbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzQ4OGFkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSA1NzU5ODc4ZTVkMjc4ZjExYTEwNjNlOGZjY2QxZTZiN2I1NGNhYWRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMiBBdWcgMjAxNyAxNjoyNTozNyAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvMl0gZF9zdGF0ZS5jcHA6IEFkZCBtaXNzaW5nIGRlcGVuZGVubmN5IG9uCisgbG9jYWxfc2hhcmRpbmdfaW5mbworCitGaXhlcworfCBzcmMvbW9uZ28vcy9kX3N0YXRlLmNwcDo4MTogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ21vbmdvOjplbmFibGVMb2NhbFNoYXJkaW5nSW5mbyhtb25nbzo6U2VydmljZUNvbnRleHQqLCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKG1vbmdvOjpPcGVyYXRpb25Db250ZXh0Kiwgc3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCYpPiknCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbW9uZ28vcy9TQ29uc2NyaXB0IHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK0luZGV4OiBnaXQvc3JjL21vbmdvL3MvU0NvbnNjcmlwdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9tb25nby9zL1NDb25zY3JpcHQKKysrKyBnaXQvc3JjL21vbmdvL3MvU0NvbnNjcmlwdAorQEAgLTMxNyw1ICszMTcsNiBAQCBlbnYuTGlicmFyeSgKKyAgICAgICAgICIkQlVJTERfRElSL21vbmdvL2RiL3Mvc2hhcmRpbmciLAorICAgICAgICAgIiRCVUlMRF9ESVIvbW9uZ28vZXhlY3V0b3IvbmV0d29ya19pbnRlcmZhY2VfZmFjdG9yeSIsCisgICAgICAgICAiJEJVSUxEX0RJUi9tb25nby9zL2NsaWVudC9zaGFyZF9sb2NhbCIsCisrICAgICAgICAiJEJVSUxEX0RJUi9tb25nby9zL2xvY2FsX3NoYXJkaW5nX2luZm8iLAorICAgICBdLAorICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDMtQ29uZGl0aW9uYWxpemUtZ2xpYmMtc3BlY2lmaWMtc3RyZXJyb3Jfci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMy1Db25kaXRpb25hbGl6ZS1nbGliYy1zcGVjaWZpYy1zdHJlcnJvcl9yLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAzLUNvbmRpdGlvbmFsaXplLWdsaWJjLXNwZWNpZmljLXN0cmVycm9yX3IucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMy1Db25kaXRpb25hbGl6ZS1nbGliYy1zcGVjaWZpYy1zdHJlcnJvcl9yLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDA0LXdpcmVkdGlnZXItRGlzYWJsZS1zdHJ0b3VxLW9uLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDQtd2lyZWR0aWdlci1EaXNhYmxlLXN0cnRvdXEtb24tbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDQtd2lyZWR0aWdlci1EaXNhYmxlLXN0cnRvdXEtb24tbXVzbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi9hcm02NC1zdXBwb3J0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi9kaXNhYmxlLWh3LWNyYzMyLW9uLWFybTY0LXMzOTB4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi9kaXNhYmxlLWh3LWNyYzMyLW9uLWFybTY0LXMzOTB4LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi9kaXNhYmxlLWh3LWNyYzMyLW9uLWFybTY0LXMzOTB4LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiL2Rpc2FibGUtaHctY3JjMzItb24tYXJtNjQtczM5MHgucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYl9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIzZmYzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGJfZ2l0LmJiCkBAIC0wLDAgKzEsNzYgQEAKK1NVTU1BUlkgPSAibW9uZ29kYiIKK0xJQ0VOU0UgPSAiQUdQTC0zLjAgJiBBcGFjaGUtMi4wICYgWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0dOVS1BR1BMLTMuMC50eHQ7bWQ1PTczZjFlYjIwNTE3YzU1YmY5NDkzYjdkZDZlNDgwNzg4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0FQQUNIRS0yLjAudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworREVQRU5EUyA9ICJvcGVuc3NsIGxpYnBjcmUgbGlicGNhcCB6bGliIHB5dGhvbiBib29zdCIKKworaW5oZXJpdCBzY29ucyBkb3MydW5peCBzaXRlaW5mbworCitQViA9ICIzLjQuMTMrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiZmJkZWYyY2NjNTNlMGZjYzlhZmI1NzAwNjM2MzNkOTkyYjJhYWU0MiIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tb25nb2RiL21vbmdvLmdpdDticmFuY2g9djMuNCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRlbGwtc2NvbnMtdG8tdXNlLWJ1aWxkLXNldHRpbmdzLWZyb20tZW52aXJvbm1lbnQtdmEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1kX3N0YXRlLmNwcC1BZGQtbWlzc2luZy1kZXBlbmRlbm5jeS1vbi1sb2NhbF9zaGFyZGluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXN0cmVycm9yX3Itb25seS1vbi1nbGliYy1zeXN0ZW1zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUNvbmRpdGlvbmFsaXplLWdsaWJjLXNwZWNpZmljLXN0cmVycm9yX3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXJtNjQtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUludGVsUkRGUE1hdGhMaWIyMFUxLUNoZWNrLWZvci1fX0RFRklORURfd2NoYXJfdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWh3LWNyYzMyLW9uLWFybTY0LXMzOTB4LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0iXAorICAgICAgICAgICBmaWxlOi8vMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworIyBXaXJlZHRpZ2VyIHN1cHBvcnRzIG9ubHkgNjQtYml0IHBsYXRmb3JtcworUEFDS0FHRUNPTkZJR194ODYtNjQgPz89ICJ0Y21hbGxvYyB3aXJlZHRpZ2VyIgorUEFDS0FHRUNPTkZJR19hYXJjaDY0ID8/PSAidGNtYWxsb2Mgd2lyZWR0aWdlciIKK1BBQ0tBR0VDT05GSUcgPz89ICJ0Y21hbGxvYyIKKyMgZ3BlcmZ0b29scyBjb21waWxhdGlvbiBmYWlscyBmb3IgYXJtIGJlbG93IHY3IGJlY2F1c2Ugb2YgbWlzc2luZyBzdXBwb3J0IG9mCisjIGRtYiBvcGVyYXRpb24uIFNvIHdlIHVzZSBzeXN0ZW0tYWxsb2NhdG9yIGluc3RlYWQgb2YgdGNtYWxsb2MKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2FybXY2ID0gInRjbWFsbG9jIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gInRjbWFsbG9jIgorCisjc3RkOjpjdXJyZW50X2V4Y2VwdGlvbiBpcyB1bmRlZmluZWQgZm9yIGFybSA8IHY2CitDT01QQVRJQkxFX01BQ0hJTkVfYXJtdjQgPSAiKCEuKmFybXY0KS4qIgorQ09NUEFUSUJMRV9NQUNISU5FX2FybXY1ID0gIighLiphcm12NSkuKiIKK0NPTVBBVElCTEVfTUFDSElORV9hcm12N2EgPSAiKCEuKmFybXY3YSkuKiIKK0NPTVBBVElCTEVfTUFDSElORV9hcm12N3ZlID0gIighLiphcm12N3ZlKS4qIgorQ09NUEFUSUJMRV9NQUNISU5FX21pcHM2NCA9ICIoIS4qbWlwczY0KS4qIgorQ09NUEFUSUJMRV9NQUNISU5FX3Bvd2VycGMgPSAiKCEuKnBwYykuKiIKKworUEFDS0FHRUNPTkZJR1t0Y21hbGxvY10gPSAiLS11c2Utc3lzdGVtLXRjbWFsbG9jLC0tYWxsb2NhdG9yPXN5c3RlbSxncGVyZnRvb2xzLCIKK1BBQ0tBR0VDT05GSUdbd2lyZWR0aWdlcl0gPSAiLS13aXJlZHRpZ2VyPW9uLC0td2lyZWR0aWdlcj1vZmYsLCIKKworRVhUUkFfT0VTQ09OUyA9ICItLXByZWZpeD0ke0R9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAgTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBcCisgICAgICAgICAgICAgICAgIExJTktGTEFHUz0nJHtMREZMQUdTfScgXAorICAgICAgICAgICAgICAgICBDWFhGTEFHUz0nJHtDWFhGTEFHU30nIFwKKyAgICAgICAgICAgICAgICAgVEFSR0VUX0FSQ0g9JHtUQVJHRVRfQVJDSH0gXAorICAgICAgICAgICAgICAgICAtLXNzbCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS13YXJuaW5ncy1hcy1lcnJvcnMgXAorICAgICAgICAgICAgICAgICAtLXVzZS1zeXN0ZW0tcGNyZSBcCisgICAgICAgICAgICAgICAgIC0tdXNlLXN5c3RlbS16bGliIFwKKyAgICAgICAgICAgICAgICAgLS1qcy1lbmdpbmU9bm9uZSBcCisgICAgICAgICAgICAgICAgIC0tbm9zdHJpcCBcCisgICAgICAgICAgICAgICAgIC0tZW5kaWFuPSR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJ2xpdHRsZScsICdiaWcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKKyAgICAgICAgICAgICAgICAgbW9uZ29kIG1vbmdvcyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgICAgICMgdGVzdHMgdXNlIGhleCBmbG9hdHMsIG5vdCBzdXBwb3J0ZWQgaW4gcGxhaW4gQysrCisgICAgICAgIHNlZCAtZSAnc3wtc3RkPWMrKzExfC1zdGQ9Z251KysxMXxnJyAtaSAke1N9L1NDb25zdHJ1Y3QKK30KK3Njb25zX2RvX2NvbXBpbGUoKSB7CisgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9zY29ucyAke1BBUkFMTEVMX01BS0V9ICR7RVhUUkFfT0VTQ09OU30gfHwgXAorICAgICAgICBkaWUgInNjb25zIGJ1aWxkIGV4ZWN1dGlvbiBmYWlsZWQuIgorfQorCitzY29uc19kb19pbnN0YWxsKCkgeworICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vc2NvbnMgaW5zdGFsbCAke0VYVFJBX09FU0NPTlN9fHwgXAorICAgICAgICBkaWUgInNjb25zIGluc3RhbGwgZXhlY3V0aW9uIGZhaWxlZC4iCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGItbmF0aXZlXzUuNS41Ny5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiLW5hdGl2ZV81LjUuNTkuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi1uYXRpdmVfNS41LjU3LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi1uYXRpdmVfNS41LjU5LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTllNzA1MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiLmluYwpAQCAtMCwwICsxLDI5NyBAQAorU1VNTUFSWSA9ICJBIHJvYnVzdCwgc2NhbGFibGUsIGFuZCByZWxpYWJsZSBTUUwgc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL21hcmlhZGIub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTUkNfVVJJID0gImh0dHBzOi8vZG93bmxvYWRzLm1hcmlhZGIub3JnL2YvJHtCUH0vc291cmNlLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtY21ha2UtbW9kdWxlLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWJhZC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1teXNxbGNsaWVudC1yLXZlcnNpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbXkuY25mIFwKKyAgICAgICAgICAgZmlsZTovL215c3FsZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL2luc3RhbGxfZGIuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsX2RiIFwKKyAgICAgICAgICAgZmlsZTovL215c3FsLXN5c3RlbWQtc3RhcnQgXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmNtYWtlLWZpeC12YWxncmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtYS1idWlsZGluZy1mYWlsdXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NoYW5nZS1jYy10by1jYy12ZXJzaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZGlzYWJsZS11Y29udGV4dC1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzY2VjNGFmYzA2YjQ2ODY4N2VmNTc2YzkwMTQ4ZDEwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMzI2OWNlMjBiNDViMTc3MjM5ZmQxZTNkNmQ5NDI4YTk0MTMxNzExZjEyNzU4ZWJmNWY2NTIyMjI3OGJiMTEwIgorCitTID0gIiR7V09SS0RJUn0vbWFyaWFkYi0ke1BWfSIKKworQklOQ09ORklHX0dMT0IgPSAibXlzcWxfY29uZmlnIgorCitpbmhlcml0IGNtYWtlIGdldHRleHQgYmluY29uZmlnIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZAorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNlcnZlciAke1BOfS1zZXR1cGRiIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LXNlcnZlciA9ICJteXNxbGQiCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zZXJ2ZXIgPz0gInN0YXJ0IDQ1IDUgLiBzdG9wIDQ1IDAgNiAxIC4iCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tc2VydmVyIgorVVNFUkFERF9QQVJBTV8ke1BOfS1zZXJ2ZXIgPSAiLS1zeXN0ZW0gLS1ob21lLWRpciAvdmFyL215c3FsIC1nIG15c3FsIC0tc2hlbGwgL2Jpbi9mYWxzZSBteXNxbCIKK0dST1VQQUREX1BBUkFNXyR7UE59LXNlcnZlciA9ICItLXN5c3RlbSBteXNxbCIKKworSU5JVFNDUklQVF9OQU1FXyR7UE59LXNldHVwZGIgPSAiaW5zdGFsbF9kYiIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNldHVwZGIgPz0gImRlZmF1bHRzIDQ0IDQ0IgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXNlcnZlciAke1BOfS1zZXR1cGRiIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNlcnZlciA9ICJteXNxbGQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0tc2VydmVyID89ICJkaXNhYmxlIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tc2V0dXBkYiA9ICJpbnN0YWxsX2RiLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LXNldHVwZGIgPz0gImVuYWJsZSIKK0FMTE9XX0VNUFRZXyR7UE59LXNldHVwZGIgPz0gIjEiCitGSUxFU18ke1BOfS1zZXR1cGRiID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kL2luc3RhbGxfZGIiCisKK0VYVFJBX09FTUFLRSA9ICInR0VOX0xFWF9IQVNIPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9nZW5fbGV4X2hhc2gnIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IHNldHVwZGIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLC1EV0lUSE9VVF9BVVRIX1BBTT1UUlVFLGxpYnBhbSIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi1EV0lUSF9WQUxHUklORD1UUlVFLC1EV0lUSF9WQUxHUklORD1GQUxTRSx2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLURMSUJFRElUX0lOVEVSRkFDRT1UUlVFLC1ETElCRURJVF9JTlRFUkZBQ0U9RkFMU0UsbGliZWRpdCIKK1BBQ0tBR0VDT05GSUdba3JiNV0gPSAiLCAsa3JiNSIKK1BBQ0tBR0VDT05GSUdbc2V0dXBkYl0gPSAiLCAsLCR7UE59LXNldHVwZGIiCisKKyMgTWFyaWFEQiBkb2Vzbid0IGxpbmsgcHJvcGVybHkgd2l0aCBnb2xkCisjIGh0dHBzOi8vbWFyaWFkYi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9NREVWLTU5ODIKK1RBUkdFVF9DRkxBR1MgKz0gIi1mdXNlLWxkPWJmZCIKKworQlVJTERfQ0ZMQUdTICs9ICItZnVzZS1sZD1iZmQiCitCVUlMRF9DWFhGTEFHUyArPSAiLWZ1c2UtbGQ9YmZkIgorCitFWFRSQV9PRUNNQUtFID0gIi1EV0lUSF9FTUJFRERFRF9TRVJWRVI9T04gXAorICAgICAgICAgICAgICAgICAtRFdJVEhfSkVNQUxMT0M9bm8gXAorICAgICAgICAgICAgICAgICAtRFdJVEhPVVRfVE9LVURCPVRSVUUgXAorICAgICAgICAgICAgICAgICAtRENNQUtFX0RJU0FCTEVfRklORF9QQUNLQUdFX0Jvb3N0PVRSVUUgXAorICAgICAgICAgICAgICAgICAtREdST0ZGPUZBTFNFIFwKKyAgICAgICAgICAgICAgICAgLUROUk9GRj1GQUxTRSBcCisgICAgICAgICAgICAgICAgIC1ERU5BQkxFX0RUUkFDRT1GQUxTRSBcCisgICAgICAgICAgICAgICAgIC1EV0lUSF9QSUM9T04gXAorICAgICAgICAgICAgICAgICAtRElOU1RBTExfTEFZT1VUPVJQTSBcCisgICAgICAgICAgICAgICAgIC1ESU5TVEFMTF9ET0NESVI6UEFUSD0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0gXAorICAgICAgICAgICAgICAgICAtRElOU1RBTExfTElCRElSOlBBVEg9JHtiYXNlbGlifSBcCisgICAgICAgICAgICAgICAgIC1ESU5TVEFMTF9QTFVHSU5ESVI6UEFUSD0ke2Jhc2VsaWJ9L3BsdWdpbiBcCisgICAgICAgICAgICAgICAgIC1ESU5TVEFMTF9TWVNDT05GRElSOlBBVEg9JHtzeXNjb25mZGlyfSBcCisgICAgICAgICAgICAgICAgIC1ETVlTUUxfREFUQURJUjpQQVRIPS92YXIvbXlzcWwgXAorICAgICAgICAgICAgICAgICAtRENBVF9FWEVDVVRBQkxFPWB3aGljaCBjYXRgIFwKKyAgICAgICAgICAgICAgICAgLURDTUFLRV9BUjpGSUxFUEFUSD0ke0FSfSIKKworIyBXaXRoIE5pbmphIGl0IGZhaWxzIHdpdGg6CisjIG1ha2U6ICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0IGBpbnN0YWxsJy4gIFN0b3AuCitPRUNNQUtFX0dFTkVSQVRPUiA9ICJVbml4IE1ha2VmaWxlcyIKKworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKyAgICAjIGhhbmRsZSBkaXN0cm9zIHdpdGggZGlmZmVyZW50IHZhbHVlcyBvZiAke2xpYmV4ZWNkaXJ9CisgICAgbGliZXhlY2RpcjI9YGVjaG8gJHtsaWJleGVjZGlyfSB8IHNlZCAtZSAncysvdXNyLysrZydgCisgICAgc2VkIC1pIC1lICJzOi9saWJleGVjOi8kbGliZXhlY2RpcjI6ZyIgJHtTfS9zY3JpcHRzL215c3FsX2luc3RhbGxfZGIuc2gKKyAgICBzZWQgLWkgLWUgInM6bXlzcWxkIGxpYmV4ZWM6bXlzcWxkICRsaWJleGVjZGlyMjpnIiAke1N9L3NjcmlwdHMvbXlzcWxfaW5zdGFsbF9kYi5zaAorICAgIHNlZCAtaSAtZSAiczovbGliZXhlYzovJGxpYmV4ZWNkaXIyOmciICR7U30vc2NyaXB0cy9teXNxbGRfc2FmZS5zaAorfQorCitkb19nZW5lcmF0ZV90b29sY2hhaW5fZmlsZV9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKyAgICAjIElmIHRoZXNlIGFyZSBzZXQgY21ha2Ugd2lsbCBhc3N1bWUgd2UncmUgY3Jvc3MtY29tcGlsaW5nLCB3aGljaCB3aWxsCisgICAgIyByZXN1bHQgaW4gY2VydGFpbiB0aGluZ3Mgd2Ugd2FudCBiZWluZyBkaXNhYmxlZAorICAgIHNlZCAtaSAiL3NldCggQ01BS0VfU1lTVEVNX05BTUUvZCIgJHtXT1JLRElSfS90b29sY2hhaW4uY21ha2UKKyAgICBzZWQgLWkgIi9zZXQoIENNQUtFX1NZU1RFTV9QUk9DRVNTT1IvZCIgJHtXT1JLRElSfS90b29sY2hhaW4uY21ha2UKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisgICAgIyBUaGVzZSBuZWVkIHRvIGJlIGluLXRyZWUgb3IgbWFrZSB3aWxsIHRoaW5rIHRoZXkgbmVlZCB0byBiZSBidWlsdCwKKyAgICAjIGFuZCBzaW5jZSB3ZSdyZSBjcm9zcy1jb21waWxpbmcgdGhhdCBpcyBkaXNhYmxlZAorICAgIGNwICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9jb21wX2VyciAke1N9L2V4dHJhCisgICAgY3AgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2NvbXBfc3FsICR7U30vc2NyaXB0cworCisgICAgaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAna3JiNScsICd5ZXMnLCAnbm8nLCBkKX0iID0gIm5vIiBdOyB0aGVuCisgICAgICAgIGlmICEgWyAtZSAke0J9L2luY2x1ZGUvb3BlbnNzbC9rc3NsLmggXSA7IHRoZW4KKyAgICAgICAgICAgIG1rZGlyIC1wICR7Qn0vaW5jbHVkZS9vcGVuc3NsCisgICAgICAgICAgICBlY2hvICIjaWZuZGVmIEtTU0xfSCIgPiR7Qn0vaW5jbHVkZS9vcGVuc3NsL2tzc2wuaAorICAgICAgICAgICAgZWNobyAiI2RlZmluZSBLU1NMX0giID4+JHtCfS9pbmNsdWRlL29wZW5zc2wva3NzbC5oCisgICAgICAgICAgICBlY2hvICIjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPiI+PiR7Qn0vaW5jbHVkZS9vcGVuc3NsL2tzc2wuaAorICAgICAgICAgICAgZWNobyAiI2VuZGlmIiA+PiR7Qn0vaW5jbHVkZS9vcGVuc3NsL2tzc2wuaAorICAgICAgICBmaQorICAgIGZpCit9CisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAibWFyaWFkYl9zeXNyb290X3ByZXByb2Nlc3MiCisKKyMgV2UgbmVlZCB0byBhcHBlbmQgdGhpcyBzbyBpdCBydW5zICphZnRlciogYmluY29uZmlnJ3MgcHJlcHJvY2VzcyBmdW5jdGlvbgorIworIyBXZSByZWFsbHkgZG9uJ3QgY2FyZSBleGFjdGx5IHdoYXQgdGhlIGRpcmVjdG9yaWVzIHdlcmUgc2V0IHRvIG9yaWdpbmFsbHkuCisjIHBsdWdpbmRpciBpcyBub3QgZml4ZWQsIGJ1dCB3ZSBkb24ndCBjcmVhdGUgYW55IHBsdWdpbnMuCisjCittYXJpYWRiX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CisgICAgc2VkIC1pIC1lcyxecGtnaW5jbHVkZWRpcj0uKixwa2dpbmNsdWRlZGlyPVwnJHtTVEFHSU5HX0lOQ0RJUn0vbXlzcWxcJywgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9teXNxbF9jb25maWcKKyAgICBzZWQgLWkgLWVzLF5wa2dsaWJkaXI9LioscGtnbGliZGlyPVwnJHtTVEFHSU5HX0xJQkRJUn1cJywgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9teXNxbF9jb25maWcKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L215LmNuZiAke0R9LyR7c3lzY29uZmRpcn0vCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5zdGFsbF9kYiAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kLworICAgIG12ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvbXlzcWwgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9teXNxbGQKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9teXNxbGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2luc3RhbGxfZGIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIHNlZCAtaSAtZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgLWUgJ3MsQFBSRUZJWEAsJHtwcmVmaXh9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL215c3FsZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9pbnN0YWxsX2RiLnNlcnZpY2UKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBlY2hvICJmIC92YXIvbG9nL215c3FsZC5lcnIgMDY0MCBteXNxbCBteXNxbCAtIiBcCisgICAgICAgICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvOTktbXlzcWxkLmNvbmYKKyAgICBmaQorICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vbXlzcWwtc3lzdGVtZC1zdGFydCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9kb2MvJHtQTn0KKyAgICBpZiBbIC1mICR7RH0ke2RhdGFkaXJ9L2RvYy9SRUFETUUgXTsgdGhlbgorICAgICAgICBtdiAke0R9JHtkYXRhZGlyfS9kb2MvUkVBRE1FICR7RH0ke2RhdGFkaXJ9L2RvYy8ke1BOfS8KKyAgICBmaQorfQorCitQQUNLQUdFUyA9ICIke1BOfS1kYmcgJHtQTn0gXAorICAgIGxpYm15c3FsY2xpZW50LXIgbGlibXlzcWxjbGllbnQtci1kZXYgbGlibXlzcWxjbGllbnQtci1zdGF0aWNkZXYgbGlibXlzcWxjbGllbnQtci1kYmcgXAorICAgIGxpYm15c3FsY2xpZW50IGxpYm15c3FsY2xpZW50LWRldiBsaWJteXNxbGNsaWVudC1zdGF0aWNkZXYgbGlibXlzcWxjbGllbnQtZGJnIFwKKyAgICBsaWJteXNxbGQgbGlibXlzcWxkLWRldiAke1BOfS1jbGllbnQgJHtQTn0tc2VydmVyICR7UE59LXNldHVwZGIgJHtQTn0tbGVmdG92ZXJzIgorQ09ORkZJTEVTXyR7UE59LXNlcnZlciArPSAiJHtzeXNjb25mZGlyfS9teS5jbmYgJHtzeXNjb25mZGlyfS9teS5jbmYuZC9zZXJ2ZXIuY25mIgorQ09ORkZJTEVTXyR7UE59LWNsaWVudCArPSAiJHtzeXNjb25mZGlyfS9teS5jbmYuZC9teXNxbC1jbGllbnRzLmNuZiIKK0NPTkZGSUxFU19saWJteXNxbGNsaWVudCArPSAiJHtzeXNjb25mZGlyfS9teS5jbmYuZC9jbGllbnQuY25mIgorCitGSUxFU18ke1BOfSA9ICIgIgorUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tY2xpZW50ICR7UE59LXNlcnZlciIKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK1JERVBFTkRTXyR7UE59LWNsaWVudCA9ICJwZXJsIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCBcCisgICAgcGVybC1tb2R1bGUtZmNudGwgcGVybC1tb2R1bGUtc3lzLWhvc3RuYW1lIHBlcmwtbW9kdWxlLWlwYy1vcGVuMyBcCisgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIiCitSREVQRU5EU18ke1BOfS1zZXJ2ZXIgPSAicGVybCBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBwZXJsLW1vZHVsZS1maWxlLXBhdGggcGVybC1tb2R1bGUtc3lzLWhvc3RuYW1lIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWNvcHkgcGVybC1tb2R1bGUtZmlsZS10ZW1wIHBlcmwtbW9kdWxlLXBvc2l4IFwKKyAgICAke1BOfS1jbGllbnQgbGliZGJpLXBlcmwgbGliZGJkLW15c3FsLXBlcmwiCitSREVQRU5EU18ke1BOfS1sZWZ0b3ZlcnMgPSAicGVybCBwZXJsLW1vZHVsZS1jd2QgcGVybC1tb2R1bGUtYmVuY2htYXJrIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKKyAgICBwZXJsLW1vZHVsZS1wb3NpeCBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBwZXJsLW1vZHVsZS1zaWd0cmFwIHBlcmwtbW9kdWxlLXRocmVhZHMgXAorICAgIHBlcmwtbW9kdWxlLXRocmVhZHMtc2hhcmVkIHBlcmwtbW9kdWxlLWlvLXNvY2tldCBwZXJsLW1vZHVsZS1zeXMtaG9zdG5hbWUgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgcGVybC1tb2R1bGUtZmlsZS1maW5kIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKKyAgICBwZXJsLW1vZHVsZS1jb25zdGFudCBwZXJsLW1vZHVsZS1saWIgcGVybC1tb2R1bGUtZmlsZS10ZW1wIHBlcmwtbW9kdWxlLWZpbGUtc3BlYy1mdW5jdGlvbnMgXAorICAgIHBlcmwtbW9kdWxlLWlvLXNvY2tldC1pbmV0IHBlcmwtbW9kdWxlLWlvLXNlbGVjdCIKK1JERVBFTkRTXyR7UE59LXNldHVwZGIgPSAiY29yZXV0aWxzIgorCisjIEFsbG93IG9sZCBjb2RlIHRvIGxpbmsgdG8gdGhlIGJhY2t3YXJkIGNvbXBhdGlibGUgbGlicmFyeQorUkRFUEVORFNfbGlibXlzcWxjbGllbnQtZGV2ID0gImxpYm15c3FsY2xpZW50LXItZGV2IgorCitGSUxFU19saWJteXNxbGNsaWVudCA9ICJcCisgICAgJHtsaWJkaXJ9L2xpYm15c3FsY2xpZW50LnNvLiogXAorICAgICR7c3lzY29uZmRpcn0vbXkuY25mLmQvY2xpZW50LmNuZiIKK0ZJTEVTX2xpYm15c3FsY2xpZW50LWRldiA9ICIgXAorICAgICR7aW5jbHVkZWRpcn0vbXlzcWwvIFwKKyAgICAke2xpYmRpcn0vbGlibXlzcWxjbGllbnQuc28gXAorICAgICR7c3lzY29uZmRpcn0vYWNsb2NhbCBcCisgICAgJHtiaW5kaXJ9L215c3FsX2NvbmZpZyIKK0ZJTEVTX2xpYm15c3FsY2xpZW50LXN0YXRpY2RldiA9ICJcCisgICAgJHtsaWJkaXJ9LyouYSIKK0ZJTEVTX2xpYm15c3FsY2xpZW50LWRiZyA9ICIke2xpYmRpcn0vcGx1Z2luLy5kZWJ1Zy8gXAorICAgICR7ZGF0YWRpcn0vbXlzcWwtdGVzdC9saWIvTXkvU2FmZVByb2Nlc3MvLmRlYnVnL215X3NhZmVfcHJvY2VzcyIKKworIyBBdm9pZCB3YXJuaW5ncyBhYm91dCBoYV94dHJhZGIuc28uMC4wLjAgYW5kIGhhX2lubm9kYl9wbHVnaW4uc28uMC4wLjAKKyMgd2hpY2ggYXJlIGludGVudGlvbmFsbHkgbm9uLVBJQyBvbiAzMi1iaXQgeDg2IChzZWUgZS5nLgorIyBzdG9yYWdlL3h0cmFkYi9wbHVnLmluIGluIHRoZSBzb3VyY2UpCitJTlNBTkVfU0tJUF9saWJteXNxbGNsaWVudF9hcHBlbmRfeDg2ID0gIiB0ZXh0cmVsIgorCitGSUxFU19saWJteXNxbGNsaWVudC1yID0gIiR7bGliZGlyfS9saWJteXNxbGNsaWVudF9yLnNvLioiCitGSUxFU19saWJteXNxbGNsaWVudC1yLWRldiA9ICJcCisgICAgJHtsaWJkaXJ9L2xpYm15c3FsY2xpZW50X3Iuc28iCitGSUxFU19saWJteXNxbGNsaWVudC1yLXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGlibXlzcWxjbGllbnRfci5hIgorRklMRVNfbGlibXlzcWxjbGllbnQtci1kYmcgPSAiJHtsaWJkaXJ9L3BsdWdpbi8uZGVidWdsaWJteXNxbGNsaWVudF9yLnNvLioiCisKK0ZJTEVTX2xpYm15c3FsZCA9ICJcCisgICAgJHtsaWJkaXJ9L2xpYm15c3FsZC5zby4qIgorRklMRVNfbGlibXlzcWxkLWRldiA9ICJcCisgICAgJHtsaWJkaXJ9L2xpYm15c3FsZC5zbyIKKworRklMRVNfJHtQTn0tY2xpZW50ID0gIlwKKyAgICAke2JpbmRpcn0vbXlpc2FtX2Z0ZHVtcCBcCisgICAgJHtiaW5kaXJ9L215c3FsIFwKKyAgICAke2JpbmRpcn0vbXlzcWxfY2xpZW50X3Rlc3QgXAorICAgICR7YmluZGlyfS9teXNxbF9jbGllbnRfdGVzdF9lbWJlZGRlZCBcCisgICAgJHtiaW5kaXJ9L215c3FsX2ZpbmRfcm93cyBcCisgICAgJHtiaW5kaXJ9L215c3FsX2ZpeF9leHRlbnNpb25zIFwKKyAgICAke2JpbmRpcn0vbXlzcWxfd2FpdHBpZCBcCisgICAgJHtiaW5kaXJ9L215c3FsYWNjZXNzIFwKKyAgICAke2JpbmRpcn0vbXlzcWxhZG1pbiBcCisgICAgJHtiaW5kaXJ9L215c3FsYnVnIFwKKyAgICAke2JpbmRpcn0vbXlzcWxjaGVjayBcCisgICAgJHtiaW5kaXJ9L215c3FsZHVtcCBcCisgICAgJHtiaW5kaXJ9L215c3FsZHVtcHNsb3cgXAorICAgICR7YmluZGlyfS9teXNxbGltcG9ydCBcCisgICAgJHtiaW5kaXJ9L215c3Fsc2hvdyBcCisgICAgJHtiaW5kaXJ9L215c3Fsc2xhcCBcCisgICAgJHtiaW5kaXJ9L215c3FsdGVzdF9lbWJlZGRlZCBcCisgICAgJHtsaWJleGVjZGlyfS9teXNxbG1hbmFnZXIgXAorICAgICR7c3lzY29uZmRpcn0vbXkuY25mLmQvbXlzcWwtY2xpZW50cy5jbmYiCisKK0ZJTEVTXyR7UE59LXNlcnZlciA9ICJcCisgICAgJHtiaW5kaXJ9L2NvbXBfZXJyIFwKKyAgICAke2JpbmRpcn0vaXNhbWNoayBcCisgICAgJHtiaW5kaXJ9L2lzYW1sb2cgXAorICAgICR7YmluZGlyfS9tc3FsMm15c3FsIFwKKyAgICAke2JpbmRpcn0vbXlfcHJpbnRfZGVmYXVsdHMgXAorICAgICR7YmluZGlyfS9teWlzYW1jaGsgXAorICAgICR7YmluZGlyfS9teWlzYW1sb2cgXAorICAgICR7YmluZGlyfS9teWlzYW1wYWNrIFwKKyAgICAke2JpbmRpcn0vbXlzcWxfY29udmVydF90YWJsZV9mb3JtYXQgXAorICAgICR7YmluZGlyfS9teXNxbF9maXhfcHJpdmlsZWdlX3RhYmxlcyBcCisgICAgJHtiaW5kaXJ9L215c3FsX2luc3RhbGxfZGIgXAorICAgICR7YmluZGlyfS9teXNxbF9zZWN1cmVfaW5zdGFsbGF0aW9uIFwKKyAgICAke2JpbmRpcn0vbXlzcWxfc2V0cGVybWlzc2lvbiBcCisgICAgJHtiaW5kaXJ9L215c3FsLXN5c3RlbWQtc3RhcnQgXAorICAgICR7YmluZGlyfS9teXNxbF90emluZm9fdG9fc3FsIFwKKyAgICAke2JpbmRpcn0vbXlzcWxfdXBncmFkZSBcCisgICAgJHtiaW5kaXJ9L215c3FsX3BsdWdpbiBcCisgICAgJHtiaW5kaXJ9L215c3FsX3phcCBcCisgICAgJHtiaW5kaXJ9L215c3FsYmlubG9nIFwKKyAgICAke2JpbmRpcn0vbXlzcWxkX211bHRpIFwKKyAgICAke2JpbmRpcn0vbXlzcWxkX3NhZmUgXAorICAgICR7YmluZGlyfS9teXNxbGRfc2FmZV9oZWxwZXIgXAorICAgICR7YmluZGlyfS9teXNxbGhvdGNvcHkgXAorICAgICR7YmluZGlyfS9teXNxbHRlc3QgXAorICAgICR7YmluZGlyfS9uZGJfZGVsZXRlX2FsbCBcCisgICAgJHtiaW5kaXJ9L25kYl9kZXNjIFwKKyAgICAke2JpbmRpcn0vbmRiX2Ryb3BfaW5kZXggXAorICAgICR7YmluZGlyfS9uZGJfZHJvcF90YWJsZSBcCisgICAgJHtiaW5kaXJ9L25kYl9tZ20gXAorICAgICR7YmluZGlyfS9uZGJfcmVzdG9yZSBcCisgICAgJHtiaW5kaXJ9L25kYl9zZWxlY3RfYWxsIFwKKyAgICAke2JpbmRpcn0vbmRiX3NlbGVjdF9jb3VudCBcCisgICAgJHtiaW5kaXJ9L25kYl9zaG93X3RhYmxlcyBcCisgICAgJHtiaW5kaXJ9L25kYl93YWl0ZXIgXAorICAgICR7YmluZGlyfS9wYWNrX2lzYW0gXAorICAgICR7YmluZGlyfS9wZXJyb3IgXAorICAgICR7YmluZGlyfS9yZXBsYWNlIFwKKyAgICAke2JpbmRpcn0vcmVzb2x2ZV9zdGFja19kdW1wIFwKKyAgICAke2JpbmRpcn0vcmVzb2x2ZWlwIFwKKyAgICAke2xpYmV4ZWNkaXJ9L215c3FsZCBcCisgICAgJHtzYmluZGlyfS9teXNxbGQgXAorICAgICR7c2JpbmRpcn0vbmRiX2NwY2QgXAorICAgICR7c2JpbmRpcn0vbmRiZCBcCisgICAgJHtzYmluZGlyfS9uZGJfbWdtZCBcCisgICAgJHtsaWJkaXJ9L3BsdWdpbi8qLnNvIFwKKyAgICAke2RhdGFkaXJ9L215c3FsLyBcCisgICAgJHtsb2NhbHN0YXRlZGlyfS9teXNxbC8gXAorICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL215c3FsZCBcCisgICAgJHtzeXNjb25mZGlyfS9teS5jbmYgXAorICAgICR7c3lzY29uZmRpcn0vbXkuY25mLmQvc2VydmVyLmNuZiBcCisgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIgorCitERVNDUklQVElPTl8ke1BOfS1sZWZ0b3ZlcnMgPSAidW5wYWNrYWdlZCBhbmQgcHJvYmFibHkgdW5uZWVkZWQgZmlsZXMgZm9yICR7UE59IgorRklMRVNfJHtQTn0tbGVmdG92ZXJzID0gIi8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvMDAwMS1kaXNhYmxlLXVjb250ZXh0LW9uLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi8wMDAxLWRpc2FibGUtdWNvbnRleHQtb24tbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiLzAwMDEtZGlzYWJsZS11Y29udGV4dC1vbi1tdXNsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi8wMDAxLWRpc2FibGUtdWNvbnRleHQtb24tbXVzbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2NoYW5nZS1jYy10by1jYy12ZXJzaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvY2hhbmdlLWNjLXRvLWNjLXZlcnNpb24ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9jaGFuZ2UtY2MtdG8tY2MtdmVyc2lvbi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvY2hhbmdlLWNjLXRvLWNjLXZlcnNpb24ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9jb25maWd1cmUuY21ha2UtZml4LXZhbGdyaW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvY29uZmlndXJlLmNtYWtlLWZpeC12YWxncmluZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2NvbmZpZ3VyZS5jbWFrZS1maXgtdmFsZ3JpbmQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2NvbmZpZ3VyZS5jbWFrZS1maXgtdmFsZ3JpbmQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9maXgtYS1idWlsZGluZy1mYWlsdXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvZml4LWEtYnVpbGRpbmctZmFpbHVyZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2ZpeC1hLWJ1aWxkaW5nLWZhaWx1cmUucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2ZpeC1hLWJ1aWxkaW5nLWZhaWx1cmUucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9maXgtY21ha2UtbW9kdWxlLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9maXgtY21ha2UtbW9kdWxlLXBhdGgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9maXgtY21ha2UtbW9kdWxlLXBhdGgucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2ZpeC1jbWFrZS1tb2R1bGUtcGF0aC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvZml4LW15c3FsY2xpZW50LXItdmVyc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2ZpeC1teXNxbGNsaWVudC1yLXZlcnNpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUxOWU0MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2ZpeC1teXNxbGNsaWVudC1yLXZlcnNpb24ucGF0Y2gKQEAgLTAsMCArMSwxNjAgQEAKK0Zyb20gNmRiMmE2MDYxOTZmYjM4YTZkMTA2ZGM0MDllZWUxY2I5YTQwYTQ0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRvciBEaWRyaWtzZW4gPHRvci5kaWRyaWtzZW5Ab3JhY2xlLmNvbT4KK0RhdGU6IE1vbiwgMjQgSnVuIDIwMTMgMTc6MTU6MzUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQnVnIzE2ODA5MDU1IE1ZU1FMIDUuNiBBTkQgNS43IFNUSUxMIFVTRSBMSUJNWVNRTENMSUVOVC5TTy4xOAorCitXaXRoIHRoaXMgcGF0Y2gsIHRoZSBsaWJteXNxbC8gZGlyZWN0b3J5IGNvbnRhaW5zOgorbGlibXlzcWxjbGllbnQuYQorbGlibXlzcWxjbGllbnRfci5hIC0+IGxpYm15c3FsY2xpZW50LmEKK2xpYm15c3FsY2xpZW50X3Iuc28gLT4gbGlibXlzcWxjbGllbnQuc28qCitsaWJteXNxbGNsaWVudF9yLnNvLjE4IC0+IGxpYm15c3FsY2xpZW50LnNvLjE4KgorbGlibXlzcWxjbGllbnRfci5zby4xOC4xLjAgLT4gbGlibXlzcWxjbGllbnQuc28uMTguMS4wKgorbGlibXlzcWxjbGllbnQuc28gLT4gbGlibXlzcWxjbGllbnQuc28uMTgqCitsaWJteXNxbGNsaWVudC5zby4xOCAtPiBsaWJteXNxbGNsaWVudC5zby4xOC4xLjAqCitsaWJteXNxbGNsaWVudC5zby4xOC4xLjAqCisKK1RoaXMgZml4ZXMgbGlibXlzcWxjbGllbnRfciBzeW1saW5rcyBwb2ludGluZyB0byB0aGUgdW52ZXJzaW9uZWQKK2xpYm15c3FsY2xpZW50LnNvIHN5bWxpbmsgKGxlYWRpbmcgdG8gcGFja2FnZSBRQSBlcnJvcnMgc2luY2UgdGhlCitsaWJteXNxbGNsaWVudC1yIHBhY2thZ2UgZW5kcyB1cCBkZXBlbmRpbmcgb24gbGlibXlzcWxjbGllbnQtZGV2KS4KKworQm9ycm93ZWQgZnJvbSBNeVNRTCA1LjYgdHJlZSBhdCBodHRwczovL2dpdGh1Yi5jb20vcGVyY29uYS9teXNxbC8KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorCistLS0KKyBjbWFrZS9pbnN0YWxsX21hY3Jvcy5jbWFrZSB8IDI1ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0KKyBsaWJteXNxbC9DTWFrZUxpc3RzLnR4dCAgICB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY21ha2UvaW5zdGFsbF9tYWNyb3MuY21ha2UgYi9jbWFrZS9pbnN0YWxsX21hY3Jvcy5jbWFrZQoraW5kZXggYjhlZmRmOC4uYTBkMGU2OCAxMDA2NDQKKy0tLSBhL2NtYWtlL2luc3RhbGxfbWFjcm9zLmNtYWtlCisrKysgYi9jbWFrZS9pbnN0YWxsX21hY3Jvcy5jbWFrZQorQEAgLTEsNCArMSw0IEBACistIyBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrIyBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTMsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgIyAKKyAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorQEAgLTE2NywyOCArMTY3LDMzIEBAIEVOREZVTkNUSU9OKCkKKyAKKyAKKyAjIEluc3RhbGwgc3ltYm9saWMgbGluayB0byBDTWFrZSB0YXJnZXQuIAorLSMgdGhlIGxpbmsgaXMgY3JlYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGFyZ2V0CistIyBhbmQgZXh0ZW5zaW9uIHdpbGwgYmUgdGhlIHNhbWUgYXMgZm9yIHRhcmdldCBmaWxlLgorLU1BQ1JPKElOU1RBTExfU1lNTElOSyBsaW5rbmFtZSB0YXJnZXQgZGVzdGluYXRpb24gY29tcG9uZW50KQorKyMgV2UgZG8gJ2NkIHBhdGg7IGxuIC1zIHRhcmdldF9uYW1lIGxpbmtfbmFtZScKKysjIFdlIGFsc28gYWRkIGFuIElOU1RBTEwgdGFyZ2V0IGZvciAiJHtwYXRofS8ke2xpbmtfbmFtZX0iCisrTUFDUk8oSU5TVEFMTF9TWU1MSU5LIHRhcmdldCB0YXJnZXRfbmFtZSBsaW5rX25hbWUgZGVzdGluYXRpb24gY29tcG9uZW50KQorIElGKFVOSVgpCisgICBHRVRfVEFSR0VUX1BST1BFUlRZKGxvY2F0aW9uICR7dGFyZ2V0fSBMT0NBVElPTikKKyAgIEdFVF9GSUxFTkFNRV9DT01QT05FTlQocGF0aCAke2xvY2F0aW9ufSBQQVRIKQorLSAgR0VUX0ZJTEVOQU1FX0NPTVBPTkVOVChuYW1lICR7bG9jYXRpb259IE5BTUUpCistICBTRVQob3V0cHV0ICR7cGF0aH0vJHtsaW5rbmFtZX0pCisrICBNRVNTQUdFKFNUQVRVUyAidGFyZ2V0ICR7dGFyZ2V0fSIpCisrICBNRVNTQUdFKFNUQVRVUyAibGlua19uYW1lICR7bGlua19uYW1lfSIpCisrICBNRVNTQUdFKFNUQVRVUyAidGFyZ2V0X25hbWUgJHt0YXJnZXRfbmFtZX0iKQorKyAgTUVTU0FHRShTVEFUVVMgInBhdGggJHtwYXRofSIpCisrICBNRVNTQUdFKFNUQVRVUyAiIikKKysKKysgIFNFVChvdXRwdXQgJHtwYXRofS8ke2xpbmtfbmFtZX0pCisgICBBRERfQ1VTVE9NX0NPTU1BTkQoCisgICAgIE9VVFBVVCAke291dHB1dH0KKyAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IEFSR1MgLUUgcmVtb3ZlIC1mICR7b3V0cHV0fQorICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gQVJHUyAtRSBjcmVhdGVfc3ltbGluayAKKy0gICAgICAke25hbWV9IAorLSAgICAgICR7bGlua25hbWV9CisrICAgICAgJHt0YXJnZXRfbmFtZX0gCisrICAgICAgJHtsaW5rX25hbWV9CisgICAgIFdPUktJTkdfRElSRUNUT1JZICR7cGF0aH0KKyAgICAgREVQRU5EUyAke3RhcmdldH0KKyAgICAgKQorICAgCistICBBRERfQ1VTVE9NX1RBUkdFVChzeW1saW5rXyR7bGlua25hbWV9CisrICBBRERfQ1VTVE9NX1RBUkdFVChzeW1saW5rXyR7bGlua19uYW1lfQorICAgICBBTEwKKyAgICAgREVQRU5EUyAke291dHB1dH0pCistICBTRVRfVEFSR0VUX1BST1BFUlRJRVMoc3ltbGlua18ke2xpbmtuYW1lfSBQUk9QRVJUSUVTIENMRUFOX0RJUkVDVF9PVVRQVVQgMSkKKysgIFNFVF9UQVJHRVRfUFJPUEVSVElFUyhzeW1saW5rXyR7bGlua19uYW1lfSBQUk9QRVJUSUVTIENMRUFOX0RJUkVDVF9PVVRQVVQgMSkKKyAgIElGKENNQUtFX0dFTkVSQVRPUiBNQVRDSEVTICJYY29kZSIpCisgICAgICMgRm9yIFhjb2RlLCByZXBsYWNlIHByb2plY3QgY29uZmlnIHdpdGggaW5zdGFsbCBjb25maWcKKyAgICAgU1RSSU5HKFJFUExBQ0UgIiR7Q01BS0VfQ0ZHX0lOVERJUn0iIAorZGlmZiAtLWdpdCBhL2xpYm15c3FsL0NNYWtlTGlzdHMudHh0IGIvbGlibXlzcWwvQ01ha2VMaXN0cy50eHQKK2luZGV4IGJlNTc2MGYuLjk2Mjg2ZmYgMTAwNjQ0CistLS0gYS9saWJteXNxbC9DTWFrZUxpc3RzLnR4dAorKysrIGIvbGlibXlzcWwvQ01ha2VMaXN0cy50eHQKK0BAIC00MzMsNiArNDMzLDEyIEBAIElGKE1TVkMpCisgIElOU1RBTExfREVCVUdfVEFSR0VUKGNsaWVudGxpYiBERVNUSU5BVElPTiAke0lOU1RBTExfTElCRElSfS9kZWJ1ZykKKyBFTkRJRigpCisgCisrTUFDUk8oR0VUX1RBUkdFVF9OQU1FIHRhcmdldCBvdXRfbmFtZSkKKysgIEdFVF9UQVJHRVRfUFJPUEVSVFkobG9jYXRpb24gJHt0YXJnZXR9IExPQ0FUSU9OKQorKyAgR0VUX0ZJTEVOQU1FX0NPTVBPTkVOVChuYW1lICR7bG9jYXRpb259IE5BTUUpCisrICBTRVQoJHtvdXRfbmFtZX0gJHtuYW1lfSkKKytFTkRNQUNSTygpCisrCisgSUYoVU5JWCkKKyAgIE1BQ1JPKEdFVF9WRVJTSU9ORURfTElCTkFNRSBMSUJOQU1FIEVYVEVOU0lPTiBWRVJTSU9OIE9VVE5BTUUpCisgICAgIFNFVChET1RfVkVSU0lPTiAiLiR7VkVSU0lPTn0iKQorQEAgLTQ0NSw3ICs0NTEsMTMgQEAgSUYoVU5JWCkKKyAgICAgICBTRVQoJHtPVVROQU1FfSAke0xJQk5BTUV9JHtFWFRFTlNJT059JHtET1RfVkVSU0lPTn0pCisgICAgIEVORElGKCkgCisgICBFTkRNQUNSTygpCistICBJTlNUQUxMX1NZTUxJTksoJHtDTUFLRV9TVEFUSUNfTElCUkFSWV9QUkVGSVh9bXlzcWxjbGllbnRfci5hIG15c3FsY2xpZW50ICR7SU5TVEFMTF9MSUJESVJ9IERldmVsb3BtZW50KQorK0VORElGKCkKKysKKytJRihVTklYKQorKyAgR0VUX1RBUkdFVF9OQU1FKG15c3FsY2xpZW50IGxpYl9uYW1lKQorKyAgSU5TVEFMTF9TWU1MSU5LKG15c3FsY2xpZW50CisrICAgICR7bGliX25hbWV9ICR7Q01BS0VfU1RBVElDX0xJQlJBUllfUFJFRklYfW15c3FsY2xpZW50X3IuYQorKyAgICAke0lOU1RBTExfTElCRElSfSBEZXZlbG9wbWVudCkKKyBFTkRJRigpCisgCisgSUYoTk9UIERJU0FCTEVfU0hBUkVEKQorQEAgLTQ1NiwxMCArNDY4LDkgQEAgSUYoTk9UIERJU0FCTEVfU0hBUkVEKQorICAgICAjIGxpYnRvb2wgY29tcGF0YWJpbGl0eQorICAgICBJRihDTUFLRV9TWVNURU1fTkFNRSBNQVRDSEVTICJGcmVlQlNEIiBPUiBBUFBMRSkKKyAgICAgICBTRVQoT1NfU0hBUkVEX0xJQl9WRVJTSU9OICIke1NIQVJFRF9MSUJfTUFKT1JfVkVSU0lPTn0iKQorLSAgICBFTFNFSUYoQ01BS0VfU1lTVEVNX05BTUUgTUFUQ0hFUyAiSFAtVVgiKQorLSAgICAgIFNFVChPU19TSEFSRURfTElCX1ZFUlNJT04gIiR7U0hBUkVEX0xJQl9NQUpPUl9WRVJTSU9OfS4wIikKKyAgICAgRUxTRSgpCistICAgICAgU0VUKE9TX1NIQVJFRF9MSUJfVkVSU0lPTiAiJHtTSEFSRURfTElCX01BSk9SX1ZFUlNJT059LjAuMCIpCisrICAgICAgU0VUKE9TX1NIQVJFRF9MSUJfVkVSU0lPTgorKyAgICAgICAgIiR7U0hBUkVEX0xJQl9NQUpPUl9WRVJTSU9OfS4ke1NIQVJFRF9MSUJfTUlOT1JfVkVSU0lPTn0uMCIpCisgICAgIEVORElGKCkKKyAgICAgIyBOYW1lIG9mIHNoYXJlZCBsaWJyYXJ5IGlzIG15c3FsY2xpZW50IG9uIFVuaXgKKyAgICAgU0VUX1RBUkdFVF9QUk9QRVJUSUVTKGxpYm15c3FsIFBST1BFUlRJRVMgCitAQCAtNDgyLDggKzQ5MywxMyBAQCBJRihOT1QgRElTQUJMRV9TSEFSRUQpCisgICAgICAgIiR7Q01BS0VfU0hBUkVEX0xJQlJBUllfU1VGRklYfSIKKyAgICAgICAiIgorICAgICAgIGxpbmtuYW1lKQorLSAgICBJTlNUQUxMX1NZTUxJTksoJHtsaW5rbmFtZX0gbGlibXlzcWwgJHtJTlNUQUxMX0xJQkRJUn0gU2hhcmVkTGlicmFyaWVzKQorLSAgICBTRVQoT1NfU0hBUkVEX0xJQl9TWU1MSU5LUyAiJHtTSEFSRURfTElCX01BSk9SX1ZFUlNJT059IiAiJHtPU19TSEFSRURfTElCX1ZFUlNJT059IikKKysgICAgR0VUX1RBUkdFVF9OQU1FKGxpYm15c3FsIGxpYl9uYW1lKQorKyAgICBHRVRfRklMRU5BTUVfQ09NUE9ORU5UKGxpYl9uYW1lX3dlICR7bGliX25hbWV9IE5BTUVfV0UpCisrICAgIElOU1RBTExfU1lNTElOSyhsaWJteXNxbAorKyAgICAgICR7bGliX25hbWV9ICR7bGlua25hbWV9CisrICAgICAgJHtJTlNUQUxMX0xJQkRJUn0gU2hhcmVkTGlicmFyaWVzKQorKyAgICBTRVQoT1NfU0hBUkVEX0xJQl9TWU1MSU5LUworKyAgICAgICIke1NIQVJFRF9MSUJfTUFKT1JfVkVSU0lPTn0iICIke09TX1NIQVJFRF9MSUJfVkVSU0lPTn0iKQorICAgICBMSVNUKFJFTU9WRV9EVVBMSUNBVEVTIE9TX1NIQVJFRF9MSUJfU1lNTElOS1MpCisgICAgIEZPUkVBQ0godmVyICR7T1NfU0hBUkVEX0xJQl9TWU1MSU5LU30pCisgICAgICAgR0VUX1ZFUlNJT05FRF9MSUJOQU1FKAorQEAgLTQ5MSw3ICs1MDcsMTEgQEAgSUYoTk9UIERJU0FCTEVfU0hBUkVEKQorICAgICAgICAgIiR7Q01BS0VfU0hBUkVEX0xJQlJBUllfU1VGRklYfSIKKyAgICAgICAgICIke3Zlcn0iCisgICAgICAgICBsaW5rbmFtZSkKKy0gICAgICBJTlNUQUxMX1NZTUxJTksoJHtsaW5rbmFtZX0gbGlibXlzcWwgJHtJTlNUQUxMX0xJQkRJUn0gU2hhcmVkTGlicmFyaWVzKQorKyAgICAgIEdFVF9WRVJTSU9ORURfTElCTkFNRSgKKysgICAgICAgICR7bGliX25hbWVfd2V9ICIke0NNQUtFX1NIQVJFRF9MSUJSQVJZX1NVRkZJWH0iICIke3Zlcn0iIGxpYl9uYW1lX3ZlcikKKysgICAgICBJTlNUQUxMX1NZTUxJTksobGlibXlzcWwKKysgICAgICAgICR7bGliX25hbWVfdmVyfSAke2xpbmtuYW1lfQorKyAgICAgICAgJHtJTlNUQUxMX0xJQkRJUn0gU2hhcmVkTGlicmFyaWVzKQorICAgICBFTkRGT1JFQUNIKCkKKyAgIEVORElGKCkKKyBFTkRJRigpCistLSAKKzIuMC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9pbnN0YWxsX2RiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvaW5zdGFsbF9kYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2luc3RhbGxfZGIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2luc3RhbGxfZGIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9pbnN0YWxsX2RiLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9pbnN0YWxsX2RiLnNlcnZpY2UKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9pbnN0YWxsX2RiLnNlcnZpY2UKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2luc3RhbGxfZGIuc2VydmljZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL215LmNuZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL215LmNuZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL215LmNuZgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvbXkuY25mCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvbXlzcWwtc3lzdGVtZC1zdGFydCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL215c3FsLXN5c3RlbWQtc3RhcnQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9teXNxbC1zeXN0ZW1kLXN0YXJ0CnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9teXNxbC1zeXN0ZW1kLXN0YXJ0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvbXlzcWxkLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9teXNxbGQuc2VydmljZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL215c3FsZC5zZXJ2aWNlCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9teXNxbGQuc2VydmljZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL3JlbW92ZS1iYWQtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL3JlbW92ZS1iYWQtcGF0aC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL3JlbW92ZS1iYWQtcGF0aC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvcmVtb3ZlLWJhZC1wYXRoLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGJfNS41LjU3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGJfNS41LjU5LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGJfNS41LjU3LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYl81LjUuNTkuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbXlzcWwtcHl0aG9uXzEuMi41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL215c3FsLXB5dGhvbl8xLjIuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9teXNxbC1weXRob25fMS4yLjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9teXNxbC1weXRob25fMS4yLjUuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLWxpYnhtbDItZGV0ZWN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItbGlieG1sMi1kZXRlY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UyYTYwYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLWxpYnhtbDItZGV0ZWN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gZDUyZTMzMGJlODk1YmI4YzVmMGZiM2UyODg0NzY2YWNiZDk0MmE4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBoaWxpcCBCYWxpc3RlciA8cGhpbGlwQGJhbGlzdGVyLm9yZz4KK0RhdGU6IFR1ZSwgMSBKdWwgMjAxNCAwOTo0MDo0NCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBVc2UgcGtnLWNvbmZpZyBmb3IgbGlieG1sMiBkZXRlY3Rpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworeG1sMi1jb25maWcgZG9lcyBub3Qgd29yay4gVXNlIHBrZ2NvbmZpZyB0byBzZXQgQ1BQRkxBR1MgYW5kIExJQlMuCisKK1NpZ25lZC1vZmYtYnk6IFBoaWxpcCBCYWxpc3RlciA8cGhpbGlwQGJhbGlzdGVyLm9yZz4KKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDE1ICsrLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorCitJbmRleDogcG9zdGdyZXNxbC05LjQuMTUvY29uZmlndXJlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcG9zdGdyZXNxbC05LjQuMTUub3JpZy9jb25maWd1cmUuaW4KKysrKyBwb3N0Z3Jlc3FsLTkuNC4xNS9jb25maWd1cmUuaW4KK0BAIC03NTksMTkgKzc1OSw4IEBAIFBHQUNfQVJHX0JPT0wod2l0aCwgbGlieG1sLCBubywgW2J1aWxkIHcKKyAgICAgICAgICAgICAgIFtBQ19ERUZJTkUoW1VTRV9MSUJYTUxdLCAxLCBbRGVmaW5lIHRvIDEgdG8gYnVpbGQgd2l0aCBYTUwgc3VwcG9ydC4gKC0td2l0aC1saWJ4bWwpXSldKQorIAorIGlmIHRlc3QgIiR3aXRoX2xpYnhtbCIgPSB5ZXMgOyB0aGVuCistICBBQ19DSEVDS19QUk9HUyhYTUwyX0NPTkZJRywgeG1sMi1jb25maWcpCistICBpZiB0ZXN0IC1uICIkWE1MMl9DT05GSUciOyB0aGVuCistICAgIGZvciBwZ2FjX29wdGlvbiBpbiBgJFhNTDJfQ09ORklHIC0tY2ZsYWdzYDsgZG8KKy0gICAgICBjYXNlICRwZ2FjX29wdGlvbiBpbgorLSAgICAgICAgLUkqfC1EKikgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkcGdhY19vcHRpb24iOzsKKy0gICAgICBlc2FjCistICAgIGRvbmUKKy0gICAgZm9yIHBnYWNfb3B0aW9uIGluIGAkWE1MMl9DT05GSUcgLS1saWJzYDsgZG8KKy0gICAgICBjYXNlICRwZ2FjX29wdGlvbiBpbgorLSAgICAgICAgLUwqKSBMREZMQUdTPSIkTERGTEFHUyAkcGdhY19vcHRpb24iOzsKKy0gICAgICBlc2FjCistICAgIGRvbmUKKy0gIGZpCisrICBDUFBGTEFHUz0iJENQUEZMQUdTIGBwa2ctY29uZmlnIC0tc2hvcnQtZXJyb3JzIC0tcHJpbnQtZXJyb3JzIC0tY2ZsYWdzICJsaWJ4bWwtMi4wIiAyPiYxYCIKKysgIExJQlM9ImBwa2ctY29uZmlnIC0tc2hvcnQtZXJyb3JzIC0tcHJpbnQtZXJyb3JzIC0tbGlicyAibGlieG1sLTIuMCIgMj4mMWAgJExJQlMiCisgZmkKKyAKKyBBQ19TVUJTVCh3aXRoX2xpYnhtbCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzL25vdC1jaGVjay1saWJwZXJsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvbm90LWNoZWNrLWxpYnBlcmwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcxNTEwOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzL25vdC1jaGVjay1saWJwZXJsLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK1tQQVRDSF0gbm90IGNoZWNrIGxpYnBlcmwgdW5kZXIgY3Jvc3MgY29tcGlsaW5nCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworbGlicGVybCBsZGZsYWdzIHJldHVybmVkIGJ5IFBHQUNfQ0hFQ0tfUEVSTF9FTUJFRF9MREZMQUdTIGFyZSBuYXRpdmUsCitjYW4gbm90IGJlIHVzZWQgdG8gY2hlY2sgdGFyZ2V0IGxpYnJhcnkuCisKK3Bvc3RwcmVzcWwgaGFzIHRoZSBkZXBlbmRlbmN5IG9uIHBlcmwsIHNvIG5vdCBuZWVkIHRvIGNoZWNrIGxpYnBlcmwKK2FnYWluLCBsaWtlIGluIHBvc3RncmVzcWwtOS4yLjQgCisKK1NpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IHBvc3RncmVzcWwtOS40LjE1L2NvbmZpZ3VyZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBvc3RncmVzcWwtOS40LjE1Lm9yaWcvY29uZmlndXJlLmluCisrKysgcG9zdGdyZXNxbC05LjQuMTUvY29uZmlndXJlLmluCitAQCAtMTg3OSw3ICsxODc5LDcgQEAgaWYgdGVzdCAiJHdpdGhfdGNsIiA9IHllczsgdGhlbgorIGZpCisgCisgIyBjaGVjayBmb3IgPHBlcmwuaD4KKy1pZiB0ZXN0ICIkd2l0aF9wZXJsIiA9IHllczsgdGhlbgorK2lmIHRlc3QgIiR3aXRoX3BlcmwiID0geWVzICYmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbm87IHRoZW4KKyAgIGFjX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisgICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJHBlcmxfYXJjaGxpYmV4cC9DT1JFIgorICAgQUNfQ0hFQ0tfSEVBREVSKHBlcmwuaCwgW10sIFtBQ19NU0dfRVJST1IoW2hlYWRlciBmaWxlIDxwZXJsLmg+IGlzIHJlcXVpcmVkIGZvciBQZXJsXSldLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwtYmFzaHByb2ZpbGUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy9wb3N0Z3Jlc3FsLWJhc2hwcm9maWxlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC1iYXNocHJvZmlsZQpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC1iYXNocHJvZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwtc2V0dXAgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy9wb3N0Z3Jlc3FsLXNldHVwCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC1zZXR1cApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC1zZXR1cApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwuaW5pdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwuaW5pdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwuaW5pdApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC5pbml0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC5wYW0gYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy9wb3N0Z3Jlc3FsLnBhbQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwucGFtCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy9wb3N0Z3Jlc3FsLnBhbQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwuc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwuc2VydmljZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwuc2VydmljZQpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC5zZXJ2aWNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvcG9zdGdyZXNxbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsLmluYwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWwuaW5jCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbF85LjQuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzkuNC4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjExODRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbF85LjQuMTcuYmIKQEAgLTAsMCArMSwxNCBAQAorcmVxdWlyZSBwb3N0Z3Jlc3FsLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTZkYzk1ZTYzYWE0ZDcyNTAyZmY4MTkzZGZlMmRkZDM4IgorCitTUkNfVVJJICs9ICJcCisgICAgZmlsZTovL25vdC1jaGVjay1saWJwZXJsLnBhdGNoIFwKKyIKKworZG9fY29tcGlsZV9wcmVwZW5kX2xpYmMtbXVzbCgpIHsKKyAgICBzZWQgLWkgLWUgJ3MvXC1sbnNsLy9nJyAke0J9L3NyYy9NYWtlZmlsZS5nbG9iYWwKK30KKworU1JDX1VSSVttZDVzdW1dID0gIjBhMDhmNDA3OGY1ZTRhNTRlNzY0ZjYzYWQzOGE2ZGUzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdhMzIwY2QzMzUwNTJiODQwZDIwOWRjOTY4OGYwOTk2NTc2MzM1MWM1OTBlM2NjN2JmNTc3NTkxMTc5ZmQ3YzYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BzcWxvZGJjL2ZpbGVzL3BzcWxvZGJjLWRvbm90LXVzZS10aGUtaGFyZGNvZGUtbGliZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3BzcWxvZGJjL2ZpbGVzL3BzcWxvZGJjLWRvbm90LXVzZS10aGUtaGFyZGNvZGUtbGliZGlyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BzcWxvZGJjL2ZpbGVzL3BzcWxvZGJjLWRvbm90LXVzZS10aGUtaGFyZGNvZGUtbGliZGlyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcHNxbG9kYmMvZmlsZXMvcHNxbG9kYmMtZG9ub3QtdXNlLXRoZS1oYXJkY29kZS1saWJkaXIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHNxbG9kYmMvZmlsZXMvcHNxbG9kYmMtZml4LWZvci1wdGVzdC1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3BzcWxvZGJjL2ZpbGVzL3BzcWxvZGJjLWZpeC1mb3ItcHRlc3Qtc3VwcG9ydC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wc3Fsb2RiYy9maWxlcy9wc3Fsb2RiYy1maXgtZm9yLXB0ZXN0LXN1cHBvcnQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wc3Fsb2RiYy9maWxlcy9wc3Fsb2RiYy1maXgtZm9yLXB0ZXN0LXN1cHBvcnQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHNxbG9kYmMvZmlsZXMvcHNxbG9kYmMtcmVtb3ZlLXNvbWUtY2hlY2tzLWZvci1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcHNxbG9kYmMvZmlsZXMvcHNxbG9kYmMtcmVtb3ZlLXNvbWUtY2hlY2tzLWZvci1jcm9zcy1jb21waWxpbmcucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHNxbG9kYmMvZmlsZXMvcHNxbG9kYmMtcmVtb3ZlLXNvbWUtY2hlY2tzLWZvci1jcm9zcy1jb21waWxpbmcucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wc3Fsb2RiYy9maWxlcy9wc3Fsb2RiYy1yZW1vdmUtc29tZS1jaGVja3MtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wc3Fsb2RiYy9maWxlcy9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcHNxbG9kYmMvZmlsZXMvcnVuLXB0ZXN0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BzcWxvZGJjL2ZpbGVzL3J1bi1wdGVzdApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3BzcWxvZGJjL2ZpbGVzL3J1bi1wdGVzdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wc3Fsb2RiYy9wc3Fsb2RiYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcHNxbG9kYmMvcHNxbG9kYmMuaW5jCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BzcWxvZGJjL3BzcWxvZGJjLmluYwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3BzcWxvZGJjL3BzcWxvZGJjLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wc3Fsb2RiYy9wc3Fsb2RiY18wOS4wNS4wMzAwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3BzcWxvZGJjL3BzcWxvZGJjXzA5LjA1LjAzMDAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHNxbG9kYmMvcHNxbG9kYmNfMDkuMDUuMDMwMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3BzcWxvZGJjL3BzcWxvZGJjXzA5LjA1LjAzMDAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvcm9ja3NkYl9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU2Y2JhZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiUm9ja3NEQiBhbiBlbWJlZGRhYmxlLCBwZXJzaXN0ZW50IGtleS12YWx1ZSBzdG9yZSIKK0RFU0NSSVBUSU9OID0gIlJvY2tzREIgaXMgbGlicmFyeSB0aGF0IHByb3ZpZGVzIGFuIGVtYmVkZGFibGUsIHBlcnNpc3RlbnQga2V5LXZhbHVlIHN0b3JlIGZvciBmYXN0IHN0b3JhZ2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL3JvY2tzZGIub3JnLyIKK0xJQ0VOU0UgPSAiKEFwYWNoZS0yLjAgfCBHUEwtMi4wKSAmIEJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuQXBhY2hlO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmxldmVsZGI7bWQ1PWZiMDRmZjU3YTE0ZjMwOGYyZWVkNGE5Yjg3ZDQ1ODM3IgorCitTUkNSRVYgPSAiODk2OTQ0NTY0MjAzOTU2NjIxNGQ2NTBjYzY2MTQ4NDllN2RkNWUxNyIKK1NSQ0JSQU5DSCA9ICI1LjEyLmZiIgorUFYgPSAiNS4xMi4yIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmFjZWJvb2svJHtCUE59LmdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCisKK1BBQ0tBR0VDT05GSUcgPz89ICJiemlwMiB6bGliIGx6NCIKK1BBQ0tBR0VDT05GSUdbYnppcDJdID0gIi1EV0lUSF9CWjI9T04sLURXSVRIX0JaMj1PRkYsYnppcDIiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiLURXSVRIX0xaND1PTiwtRFdJVEhfTFo0PU9GRixsejQiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi1EV0lUSF9aTElCPU9OLC1EV0lUSF9aTElCPU9GRix6bGliIgorUEFDS0FHRUNPTkZJR1tsaXRlXSA9ICItRFJPQ0tTREJfTElURT1PTiwtRFJPQ0tTREJfTElURT1PRkYiCisKKyMgVG9vbHMgYW5kIHRlc3RzIGN1cnJlbnRseSBkb24ndCBjb21waWxlIG9uIGFybXY1IHNvIHdlIGRpc2FibGUgdGhlbQorRVhUUkFfT0VDTUFLRSA9ICJcCisgICAgLURQT1JUQUJMRT1PTiBcCisgICAgLURXSVRIX1RFU1RTPU9GRiBcCisgICAgLURXSVRIX1RPT0xTPU9GRiBcCisiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zb2NpL3NvY2kvc29jaV9saWJkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvc29jaS9zb2NpL3NvY2lfbGliZGlyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NvY2kvc29jaS9zb2NpX2xpYmRpci5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3NvY2kvc29jaS9zb2NpX2xpYmRpci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3NvY2kvc29jaV8zLjIuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9zb2NpL3NvY2lfMy4yLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2YyMmQzOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9zb2NpL3NvY2lfMy4yLjMuYmIKQEAgLTAsMCArMSw0OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTUgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworREVTQ1JJUFRJT04gPSAiVGhlIEMrKyBEYXRhYmFzZSBBY2Nlc3MgTGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb2NpLnNvdXJjZWZvcmdlLm5ldCIKK0xJQ0VOU0UgPSAiQlNMLTEuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VfMV8wLnR4dDttZDU9ZTQyMjRjY2FlY2IxNGQ5NDJjNzFkMzFiZWYyMGQ3OGMiCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gImJvb3N0IgorCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfS8ke0JQfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vc29jaV9saWJkaXIucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhY2ZiY2NmMTc2Y2QyMGUwNjgzM2E4MDM3YTJkMzY5OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzY1OWRiMGY0ZjdiNDI0YmJjZmZlMTk1YzAzYzI5M2ExZGJmNjc2MTg5YTI3YjA3N2ZiMmFhYjRkNTNhNjEwIgorCitURVNUQ09ORklHID0gJy1EU09DSV9URVNUX0VNUFRZX0NPTk5TVFI9ImR1bW15IiAtRFNPQ0lfVEVTVF9TUUxJVEUzX0NPTk5TVFI9InRlc3QuZGIiIFwKKyAgICAgICAgICAgICAgLURTT0NJX1RFU1RfUE9TVEdSRVNRTF9DT05OU1RSOlNUUklORz0iZGJuYW1lPXNvY2lfdGVzdCIgXAorICAgICAgICAgICAgICAtRFNPQ0lfVEVTVF9NWVNRTF9DT05OU1RSOlNUUklORz0iZGI9c29jaV90ZXN0IHVzZXI9b2UgcGFzc3dvcmQ9b2UiJworCitPQkFTRURJUiA/PSAiL29wdC9vcmFjbGUiCitPSU5DRElSID0gInJkYm1zL3B1YmxpYyIKK09MSUJESVIgPSAibGliIgorCitQQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi1EU09DSV9TUUxJVEUzPU9OLC1EU09DSV9TUUxJVEUzPU9GRixzcWxpdGUzLCIKK1BBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi1EU09DSV9NWVNRTD1PTiwtRFNPQ0lfTVlTUUw9T0ZGLG1hcmlhZGIsIgorUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItRFNPQ0lfUE9TVEdSRVNRTD1PTiwtRFNPQ0lfUE9TVEdSRVNRTD1PRkYscG9zdGdyZXNxbCwiCitQQUNLQUdFQ09ORklHW29kYmNdID0gIi1EU09DSV9PREJDPU9OLC1EU09DSV9PREJDPU9GRiwsIgorUEFDS0FHRUNPTkZJR1tlbXB0eV0gPSAiLURTT0NJX0VNUFRZPU9OLC1EU09DSV9FTVBUWT1PRkYsLCIKK1BBQ0tBR0VDT05GSUdbb3JhY2xlXSA9ICItRFdJVEhfT1JBQ0xFPU9OIC0td2l0aC1vcmFjbGUtaW5jbHVkZT0ke09JTkNESVJ9IC0td2l0aC1vcmFjbGUtbGliPSR7T0xJQkRJUn0sLURXSVRIX09SQUNMRT1PRkYsLCIKK1BBQ0tBR0VDT05GSUdbcHRlc3RdID0gIiR7VEVTVENPTkZJR30sLCwiCisKKyMgZW5hYmxlIHlvdXIgYmFja2VuZCBieSBkZWZhdWx0IHdlIGVuYWJsZSAnZW1wdHknCitQQUNLQUdFQ09ORklHID8/PSAiZW1wdHkiCisKKyMgVGFrZSB0aGUgZmxhZ3MgYWRkZWQgYnkgUEFDS0FHRUNPTkZJRyBhbmQgcGFzcyB0aGVtIHRvIGNtYWtlLgorRVhUUkFfT0VDTUFLRSA9ICIke0VYVFJBX09FQ09ORn0gLURTT0NJX0xJQkRJUj0ke2xpYmRpcn0iCitESVNBQkxFX1NUQVRJQyA9ICIiCisKK2luaGVyaXQgZG9zMnVuaXggY21ha2UKKworUEFDS0FHRVMgKz0gIiR7UE59LXNxbGl0ZTMgJHtQTn0tbXlzcWwgJHtQTn0tcG9zdGdyZXNxbCAke1BOfS1vZGJjICR7UE59LW9yYWNsZSIKKworRklMRVNfJHtQTn0tc3FsaXRlMyA9ICIke2xpYmRpcn0vbGliJHtCUE59X3NxbGl0ZTMuc28uKiIKK0ZJTEVTXyR7UE59LW15c3FsID0gIiR7bGliZGlyfS9saWIke0JQTn1fbXlzcWwuc28uKiIKK0ZJTEVTXyR7UE59LXBvc3RncmVzcWwgPSAiJHtsaWJkaXJ9L2xpYiR7QlBOfV9wb3N0Z3Jlc3FsLnNvLioiCitGSUxFU18ke1BOfS1vZGJjID0gIiR7bGliZGlyfS9saWIke0JQTn1fb2RiYy5zby4qIgorRklMRVNfJHtQTn0tb3JhY2xlID0gIiR7bGliZGlyfS9saWIke0JQTn1fb3JhY2xlLnNvLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUtMi44LjE3LzAwMDEtc2hlbGwuYy1GaXgtZm9ybWF0LW5vdC1hLXN0cmluZy1saXRlcmFsLXdhcm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvc3FsaXRlL3NxbGl0ZS0yLjguMTcvMDAwMS1zaGVsbC5jLUZpeC1mb3JtYXQtbm90LWEtc3RyaW5nLWxpdGVyYWwtd2FybmluZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlLTIuOC4xNy8wMDAxLXNoZWxsLmMtRml4LWZvcm1hdC1ub3QtYS1zdHJpbmctbGl0ZXJhbC13YXJuaW5nLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvc3FsaXRlL3NxbGl0ZS0yLjguMTcvMDAwMS1zaGVsbC5jLUZpeC1mb3JtYXQtbm90LWEtc3RyaW5nLWxpdGVyYWwtd2FybmluZy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlLTIuOC4xNy9tYWlubWtfYnVpbGRfZHluYW1pYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9zcWxpdGUvc3FsaXRlLTIuOC4xNy9tYWlubWtfYnVpbGRfZHluYW1pYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlLTIuOC4xNy9tYWlubWtfYnVpbGRfZHluYW1pYy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3NxbGl0ZS9zcWxpdGUtMi44LjE3L21haW5ta19idWlsZF9keW5hbWljLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUtMi44LjE3L21haW5ta19ub190Y2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvc3FsaXRlL3NxbGl0ZS0yLjguMTcvbWFpbm1rX25vX3RjbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlLTIuOC4xNy9tYWlubWtfbm9fdGNsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvc3FsaXRlL3NxbGl0ZS0yLjguMTcvbWFpbm1rX25vX3RjbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlLTIuOC4xNy9zcWxpdGUucGMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvc3FsaXRlL3NxbGl0ZS0yLjguMTcvc3FsaXRlLnBjCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUtMi44LjE3L3NxbGl0ZS5wYwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3NxbGl0ZS9zcWxpdGUtMi44LjE3L3NxbGl0ZS5wYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlXzIuOC4xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9zcWxpdGUvc3FsaXRlXzIuOC4xNy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlXzIuOC4xNy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3NxbGl0ZS9zcWxpdGVfMi44LjE3LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvcHJlc2VydmUtb3duZXJzaGlwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL3ByZXNlcnZlLW93bmVyc2hpcC5wYXRjaAppbmRleCA4NWFmODFmLi41YzkwMzk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvcHJlc2VydmUtb3duZXJzaGlwLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9wcmVzZXJ2ZS1vd25lcnNoaXAucGF0Y2gKQEAgLTEsMTkgKzEsNTAgQEAKK0Zyb20gYWE2NjkzMTJhMzgwNjExZDI4MGQxMjZjYjUwOWZhMjgyMDgwNzA3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmt1cyBNYXllciA8bW1heWVyQG1tYXllci5uZXQ+CitEYXRlOiBXZWQsIDcgU2VwIDIwMTYgMTI6NTg6NDcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gYW5kcm9pZC10b29sczogYWRkIHJlY2lwZSBmcm9tIEFPU1AgdGFnIGFuZHJvaWQtNS4xLjFfcjM3CisKIERlc2NyaXB0aW9uOiBhZGQgLW8gYXJndW1lbnQgdG8gcHJlc2VydmUgb3duZXJzaGlwCi1BdXRob3I6IE1hcmt1cyBNYXllciA8bW1heWVyQG1tYXllci5uZXQ+CiAKIFNlZSBhbHNvIGh0dHBzOi8vYW5kcm9pZC1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS8jL2MvMTAwMzEyLwogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKwogLS0tCi0gc3lzdGVtL2V4dHJhcy9leHQ0X3V0aWxzL21ha2VfZXh0NGZzLmMgICAgICB8ICAgIDYgKysrKysrCi0gc3lzdGVtL2V4dHJhcy9leHQ0X3V0aWxzL21ha2VfZXh0NGZzX21haW4uYyB8ICAgMTAgKysrKysrKystLQorIGV4dDRfdXRpbHMvbWFrZV9leHQ0ZnMuYyAgICAgIHwgIDYgKysrKysrCisgZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMgfCAxMCArKysrKysrKy0tCiAgMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi0tLS0gYS9zeXN0ZW0vZXh0cmFzL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnNfbWFpbi5jCi0rKysgYi9zeXN0ZW0vZXh0cmFzL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnNfbWFpbi5jCi1AQCAtNDksMTMgKzQ5LDE1IEBAIGV4dGVybiBzdHJ1Y3QgZnNfaW5mbyBpbmZvOworZGlmZiAtLWdpdCBhL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnMuYyBiL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnMuYworaW5kZXggMmY4OWFlOGEuLmNjNDFkNjIzIDEwMDY0NAorLS0tIGEvZXh0NF91dGlscy9tYWtlX2V4dDRmcy5jCisrKysgYi9leHQ0X3V0aWxzL21ha2VfZXh0NGZzLmMKK0BAIC02OCw2ICs2OCw4IEBACiAgCi0gZXh0ZXJuIHN0cnVjdCBzZWxhYmVsX2hhbmRsZSogc2VsaW51eF9hbmRyb2lkX2ZpbGVfY29udGV4dF9oYW5kbGUodm9pZCk7CisgI2VuZGlmCisgCisraW50IHByZXNlcnZlX293bmVyID0gMDsKKysKKyAvKiBUT0RPOiBOb3QgaW1wbGVtZW50ZWQ6CisgICAgQWxsb2NhdGluZyBibG9ja3MgaW4gdGhlIHNhbWUgYmxvY2sgZ3JvdXAgYXMgdGhlIGZpbGUgaW5vZGUKKyAgICBIYXNoIG9yIGJpbmFyeSB0cmVlIGRpcmVjdG9yaWVzCitAQCAtMTg2LDYgKzE4OCwxMCBAQCBzdGF0aWMgdTMyIGJ1aWxkX2RpcmVjdG9yeV9zdHJ1Y3R1cmUoY29uc3QgY2hhciAqZnVsbF9wYXRoLCBjb25zdCBjaGFyICpkaXJfcGF0aAorIAkJfSBlbHNlIHsKKyAJCQlkZW50cmllc1tpXS5tdGltZSA9IGZpeGVkX3RpbWU7CisgCQl9CisrCQlpZiAocHJlc2VydmVfb3duZXIpIHsKKysJCQlkZW50cmllc1tpXS51aWQgPSBzdGF0LnN0X3VpZDsKKysJCQlkZW50cmllc1tpXS5naWQgPSBzdGF0LnN0X2dpZDsKKysJCX0KKyAJCXVpbnQ2NF90IGNhcGFiaWxpdGllczsKKyAJCWlmIChmc19jb25maWdfZnVuYyAhPSBOVUxMKSB7CisgI2lmZGVmIEFORFJPSUQKK2RpZmYgLS1naXQgYS9leHQ0X3V0aWxzL21ha2VfZXh0NGZzX21haW4uYyBiL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnNfbWFpbi5jCitpbmRleCBhNmM1ZjYxNi4uN2FmMGRkZGYgMTAwNjQ0CistLS0gYS9leHQ0X3V0aWxzL21ha2VfZXh0NGZzX21haW4uYworKysrIGIvZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMKK0BAIC00OCwxMyArNDgsMTUgQEAgc3RydWN0IHNlbGFiZWxfaGFuZGxlOworIGV4dGVybiBzdHJ1Y3QgZnNfaW5mbyBpbmZvOworIAogIAogK2V4dGVybiBpbnQgcHJlc2VydmVfb3duZXI7CiArCkBAIC0yOCw3ICs1OSw3IEBACiAgCWZwcmludGYoc3RkZXJyLCAiICAgIDxmaWxlbmFtZT4gWzxkaXJlY3Rvcnk+XVxuIik7CiAgfQogIAotQEAgLTgxLDcgKzgzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorQEAgLTgwLDcgKzgyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAlzdHJ1Y3Qgc2VsaW51eF9vcHQgc2VvcHRzW10gPSB7IHsgU0VMQUJFTF9PUFRfUEFUSCwgIiIgfSB9OwogICNlbmRpZgogIApAQCAtMzcsNyArNjgsNyBAQAogIAkJc3dpdGNoIChvcHQpIHsKICAJCWNhc2UgJ2wnOgogIAkJCWluZm8ubGVuID0gcGFyc2VfbnVtKG9wdGFyZyk7Ci1AQCAtMTQ0LDYgKzE0NiwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMTQzLDYgKzE0NSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCQkJfQogICNlbmRpZgogIAkJCWJyZWFrOwpAQCAtNDgsMjUgKzc5LDMgQEAKICAJCWNhc2UgJ3YnOgogIAkJCXZlcmJvc2UgPSAxOwogIAkJCWJyZWFrOwotLS0tIGEvc3lzdGVtL2V4dHJhcy9leHQ0X3V0aWxzL21ha2VfZXh0NGZzLmMKLSsrKyBiL3N5c3RlbS9leHRyYXMvZXh0NF91dGlscy9tYWtlX2V4dDRmcy5jCi1AQCAtNjcsNiArNjcsOCBAQAotIAotICNlbmRpZgotIAotK2ludCBwcmVzZXJ2ZV9vd25lciA9IDA7Ci0rCi0gLyogVE9ETzogTm90IGltcGxlbWVudGVkOgotICAgIEFsbG9jYXRpbmcgYmxvY2tzIGluIHRoZSBzYW1lIGJsb2NrIGdyb3VwIGFzIHRoZSBmaWxlIGlub2RlCi0gICAgSGFzaCBvciBiaW5hcnkgdHJlZSBkaXJlY3RvcmllcwotQEAgLTE4NSw2ICsxODcsMTAgQEAgc3RhdGljIHUzMiBidWlsZF9kaXJlY3Rvcnlfc3RydWN0dXJlKGNvbgotIAkJfSBlbHNlIHsKLSAJCQlkZW50cmllc1tpXS5tdGltZSA9IGZpeGVkX3RpbWU7Ci0gCQl9Ci0rCQlpZiAocHJlc2VydmVfb3duZXIpIHsKLSsJCQlkZW50cmllc1tpXS51aWQgPSBzdGF0LnN0X3VpZDsKLSsJCQlkZW50cmllc1tpXS5naWQgPSBzdGF0LnN0X2dpZDsKLSsJCX0KLSAJCXVpbnQ2NF90IGNhcGFiaWxpdGllczsKLSAJCWlmIChmc19jb25maWdfZnVuYyAhPSBOVUxMKSB7Ci0gI2lmZGVmIEFORFJPSUQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29sc181LjEuMS5yMzcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHNfNS4xLjEucjM3LmJiCmluZGV4IGQzY2NkMWQuLjc4MGVjYWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29sc181LjEuMS5yMzcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzXzUuMS4xLnIzNy5iYgpAQCAtOSw3ICs5LDYgQEAKICIKIERFUEVORFMgPSAibGliYnNkIGxpYnBjcmUgb3BlbnNzbCB6bGliIGxpYmNhcCIKIAotQU5EUk9JRF9UQUcgPSAiYW5kcm9pZC01LjEuMV9yMzciCiBBTkRST0lEX01JUlJPUiA9ICJhbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20iCiBDT1JFX1JFUE8gPSAiJHtBTkRST0lEX01JUlJPUn0vcGxhdGZvcm0vc3lzdGVtL2NvcmUiCiBFWFRSQVNfUkVQTyA9ICIke0FORFJPSURfTUlSUk9SfS9wbGF0Zm9ybS9zeXN0ZW0vZXh0cmFzIgpAQCAtMTcsMTYgKzE2LDIzIEBACiBMSUJTRUxJTlVYX1JFUE8gPSAiJHtBTkRST0lEX01JUlJPUn0vcGxhdGZvcm0vZXh0ZXJuYWwvbGlic2VsaW51eCIKIEJVSUxEX1JFUE8gPSAiJHtBTkRST0lEX01JUlJPUn0vcGxhdGZvcm0vYnVpbGQiCiAKKyMgbWF0Y2hlcyB3aXRoIGFuZHJvaWQtNS4xLjFfcjM3CitTUkNSRVZfY29yZSA9ICIyMzE0YjExMGJkZWJkYmZkMmQ5NGM1MDIyODJmOWU1N2M4NDk4OTdlIgorU1JDUkVWX2V4dHJhcyA9ICIzZWNiZThkODQxZGY5NjEyN2Q3ODU1NjYxMjkzZTVhYjZiYTZjMjA1IgorU1JDUkVWX2xpYmhhcmR3YXJlID0gImJlNTVlYjFmNGQ4NDBjODJmZmFmN2M0NzQ2MGRmMTdmZjViYzRkOWIiCitTUkNSRVZfbGlic2VsaW51eCA9ICIwN2U5ZTEzMzlhZDFiYTYwOGFjZmJhOWRjZTJkMGY0NzRiMjUyZmViIgorU1JDUkVWX2J1aWxkID0gIjE2ZTk4N2RlZjNkN2Q4ZjdkMzA4MDVlYjk1Y2VmNjllNTJhODdkYmMiCisKIFNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly8ke0NPUkVfUkVQT307bmFtZT1jb3JlO3Byb3RvY29sPWh0dHBzO25vYnJhbmNoPTE7ZGVzdHN1ZmZpeD1naXQvc3lzdGVtL2NvcmU7dGFnPSR7QU5EUk9JRF9UQUd9IFwKLSAgICBnaXQ6Ly8ke0VYVFJBU19SRVBPfTtuYW1lPWV4dHJhcztwcm90b2NvbD1odHRwcztub2JyYW5jaD0xO2Rlc3RzdWZmaXg9Z2l0L3N5c3RlbS9leHRyYXM7dGFnPSR7QU5EUk9JRF9UQUd9IFwKLSAgICBnaXQ6Ly8ke0xJQkhBUkRXQVJFX1JFUE99O25hbWU9bGliaGFyZHdhcmU7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9oYXJkd2FyZS9saWJoYXJkd2FyZTt0YWc9JHtBTkRST0lEX1RBR30gXAotICAgIGdpdDovLyR7TElCU0VMSU5VWF9SRVBPfTtuYW1lPWxpYnNlbGludXg7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9leHRlcm5hbC9saWJzZWxpbnV4O3RhZz0ke0FORFJPSURfVEFHfSBcCi0gICAgZ2l0Oi8vJHtCVUlMRF9SRVBPfTtuYW1lPWJ1aWxkO3Byb3RvY29sPWh0dHBzO25vYnJhbmNoPTE7ZGVzdHN1ZmZpeD1naXQvYnVpbGQ7dGFnPSR7QU5EUk9JRF9UQUd9IFwKKyAgICBnaXQ6Ly8ke0NPUkVfUkVQT307bmFtZT1jb3JlO3Byb3RvY29sPWh0dHBzO25vYnJhbmNoPTE7ZGVzdHN1ZmZpeD1naXQvc3lzdGVtL2NvcmUgXAorICAgIGdpdDovLyR7RVhUUkFTX1JFUE99O25hbWU9ZXh0cmFzO3Byb3RvY29sPWh0dHBzO25vYnJhbmNoPTE7ZGVzdHN1ZmZpeD1naXQvc3lzdGVtL2V4dHJhcyBcCisgICAgZ2l0Oi8vJHtMSUJIQVJEV0FSRV9SRVBPfTtuYW1lPWxpYmhhcmR3YXJlO3Byb3RvY29sPWh0dHBzO25vYnJhbmNoPTE7ZGVzdHN1ZmZpeD1naXQvaGFyZHdhcmUvbGliaGFyZHdhcmUgXAorICAgIGdpdDovLyR7TElCU0VMSU5VWF9SRVBPfTtuYW1lPWxpYnNlbGludXg7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9leHRlcm5hbC9saWJzZWxpbnV4IFwKKyAgICBnaXQ6Ly8ke0JVSUxEX1JFUE99O25hbWU9YnVpbGQ7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9idWlsZCBcCiAgICAgZmlsZTovL3JlbW92ZS1zZWxpbnV4LWFuZHJvaWQucGF0Y2ggXAogICAgIGZpbGU6Ly91c2UtY2FwYWJpbGl0eS5wYXRjaCBcCiAgICAgZmlsZTovL3VzZS1sb2NhbC1zb2NrZXQucGF0Y2ggXAotICAgIGZpbGU6Ly9wcmVzZXJ2ZS1vd25lcnNoaXAucGF0Y2ggXAorICAgIGZpbGU6Ly9wcmVzZXJ2ZS1vd25lcnNoaXAucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2V4dHJhcyBcCiAgICAgZmlsZTovL21rYm9vdGltZy1BZGQtZHQtcGFyYW1ldGVyLXRvLXNwZWNpZnktRFQtaW1hZ2UucGF0Y2ggXAogICAgIGZpbGU6Ly9yZW1vdmUtYmlvbmljLWFuZHJvaWQucGF0Y2ggXAogICAgIGZpbGU6Ly9kZWZpbmUtc2hlbGwtY29tbWFuZC5wYXRjaCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAxLWRpc2FibGUtY2FsbHMtdG8tZ2V0Y29udGV4dC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAxLWRpc2FibGUtY2FsbHMtdG8tZ2V0Y29udGV4dC13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc2Mjc1NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtZGlzYWJsZS1jYWxscy10by1nZXRjb250ZXh0LXdpdGgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIDU3ZWNmNzIwNWZlZWRkMjNmOTAxZTFiYjlkMTkzNzg3ZTU1OWU0MzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogVHVlLCAyMyBKYW4gMjAxOCAxNToxMzoyNiAtMDgwMAorU3ViamVjdDogW1BBVENIXSBkaXNhYmxlIGNhbGxzIHRvIGdldGNvbnRleHQoKSB3aXRoIG11c2wKKworU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYyB8IDE3ICsrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYyBiL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworaW5kZXggY2NhMDIzZi4uZjNlNDYwYyAxMDA2NDQKKy0tLSBhL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworKysrIGIvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitAQCAtNDk1LDcgKzQ5NSwxOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OlNpbXVsYXRlU2lnbmFsRGVsaXZlcnkoaW50IHNpZykgeworICAgc2lnaW5mby5zaV9jb2RlID0gU0lfVVNFUjsKKyAgIHNpZ2luZm8uc2lfcGlkID0gZ2V0cGlkKCk7CisgICB1Y29udGV4dF90IGNvbnRleHQ7CisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICAgZ2V0Y29udGV4dCgmY29udGV4dCk7CisrI2Vsc2UKKysgIC8vIEV4dHJlbWUgaGFjazogQWxsb3cgbXVzbCBidWlsZHMgdG8gY29tcGlsZSAtIGJ1dCBkb24ndCBleHBlY3QgdGhlbSB0byB3b3JrLgorKyAgLy8gQWx0aG91Z2ggbXVzbCBwcm92aWRlcyBhIGRlZmluaXRpb24gZm9yIGdldGNvbnRleHQoKSBpbiB1Y29udGV4dC5oICh3aGljaAorKyAgLy8gZW5vdWdoIHRvIGJ1aWxkIGxpYmJyZWFrcGFkX2NsaWVudCkgbXVzbCBkb2VzIG5vdCBwcm92aWRlIGEgY29ycmVzcG9uZGluZworKyAgLy8gZ2V0Y29udGV4dCgpIGZ1bmN0aW9uLCBzbyBidWlsZHMgd2lsbCBmYWlsIHdoZW4gYXR0ZW1wdGluZyB0byBsaW5rIGFueXRoaW5nCisrICAvLyB3aXRoIGxpYmJyZWFrcGFkX2NsaWVudC4gRGlzYWJsaW5nIGNhbGxzIHRvIGdldGNvbnRleHQoKSBpcyBhIHRlbXBvcmFyeQorKyAgLy8gaGFjay4gVGhlIHJlYWwgZml4IGlzIHByb2JhYmx5IHRvIGVuYWJsZSBCcmVha3BhZCdzIG93biBpbXBsZW1lbnRhdGlvbiBvZgorKyAgLy8gZ2V0Y29udGV4dCgpIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wgKGl0J3MgY3VycmVudGx5IG9ubHkgZW5hYmxlZCB3aGVuCisrICAvLyBidWlsZGluZyBmb3IgQW5kcm9pZCkuCisrICBtZW1zZXQgKCZjb250ZXh0LCAwLCBzaXplb2YoY29udGV4dCkpOworKyNlbmRpZgorICAgcmV0dXJuIEhhbmRsZVNpZ25hbChzaWcsICZzaWdpbmZvLCAmY29udGV4dCk7CisgfQorIAorQEAgLTY4MCw5ICs2OTIsMTQgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpXcml0ZU1pbmlkdW1wKCkgeworICAgc3lzX3ByY3RsKFBSX1NFVF9EVU1QQUJMRSwgMSwgMCwgMCwgMCk7CisgCisgICBDcmFzaENvbnRleHQgY29udGV4dDsKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICBpbnQgZ2V0Y29udGV4dF9yZXN1bHQgPSBnZXRjb250ZXh0KCZjb250ZXh0LmNvbnRleHQpOworICAgaWYgKGdldGNvbnRleHRfcmVzdWx0KQorICAgICByZXR1cm4gZmFsc2U7CisrI2Vsc2UKKysgIC8vIEV4dHJlbWUgaGFjayAtIHNlZSBjb21tZW50cyBhYm92ZS4KKysgIG1lbXNldCAoJmNvbnRleHQuY29udGV4dCwgMCwgc2l6ZW9mKCZjb250ZXh0LmNvbnRleHQpKTsKKysjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykKKyAgIC8vIEluIENQVUZpbGxGcm9tVUNvbnRleHQgaW4gbWluaWR1bXB3cml0ZXIuY2MgdGhlIHN0YWNrIHBvaW50ZXIgaXMgcmV0cmlldmVkCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDUtSW1wb3J0LW5lY2Vzc2FyeS1kZWZpbml0aW9ucy1mcm9tLXN0YWIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDUtSW1wb3J0LW5lY2Vzc2FyeS1kZWZpbml0aW9ucy1mcm9tLXN0YWIuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBkZThjNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDA1LUltcG9ydC1uZWNlc3NhcnktZGVmaW5pdGlvbnMtZnJvbS1zdGFiLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTkgKzAsMCBAQAotRnJvbSBmYTdhM2I3MzEyMzA3YWNhZDAwNDU1NDlkNWYzMDZlN2ZkMTE3ODA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KLURhdGU6IFN1biwgMSBGZWIgMjAxNSAxNDozNDo0NCArMDEwMAotU3ViamVjdDogW1BBVENIIDUvNl0gSW1wb3J0IG5lY2Vzc2FyeSBkZWZpbml0aW9ucyBmcm9tIHN0YWIuaAotCi0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAtCi0gc3JjL2NvbW1vbi9hbmRyb2lkL2luY2x1ZGUvc3RhYi5oICAgfCAxMDAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2NvbW1vbi9jb21tb24uZ3lwICAgICAgICAgICAgICAgfCAgIDEgLQotIHNyYy9jb21tb24vc3RhYnNfcmVhZGVyLmNjICAgICAgICAgIHwgICAxIC0KLSBzcmMvY29tbW9uL3N0YWJzX3JlYWRlci5oICAgICAgICAgICB8ICAxMyArKystLQotIHNyYy9jb21tb24vc3RhYnNfcmVhZGVyX3VuaXR0ZXN0LmNjIHwgICAxIC0KLSA2IGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwNyBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2NvbW1vbi9hbmRyb2lkL2luY2x1ZGUvc3RhYi5oCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDIyMjM5MjAuLjBlNTVjZDkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTczLDcgKzczLDYgQEAgQUNfSEVBREVSX1NUREMKLSBBQ19TWVNfTEFSR0VGSUxFCi0gbTRfaW5jbHVkZShtNC9heF9wdGhyZWFkLm00KQotIEFYX1BUSFJFQUQKLS1BQ19DSEVDS19IRUFERVJTKFthLm91dC5oXSkKLSAKLSAjIE9ubHkgYnVpbGQgTGludXggY2xpZW50IGxpYnMgd2hlbiBjb21waWxpbmcgZm9yIExpbnV4Ci0gY2FzZSAkaG9zdCBpbgotZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRlL3N0YWIuaCBiL3NyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRlL3N0YWIuaAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBjZDkyOTAyLi4wMDAwMDAwCi0tLS0gYS9zcmMvY29tbW9uL2FuZHJvaWQvaW5jbHVkZS9zdGFiLmgKLSsrKyAvZGV2L251bGwKLUBAIC0xLDEwMCArMCwwIEBACi0tLy8gQ29weXJpZ2h0IChjKSAyMDEyLCBHb29nbGUgSW5jLgotLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0tLy8KLS0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0tLy8gbWV0OgotLS8vCi0tLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0tLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0tLy8gZGlzdHJpYnV0aW9uLgotLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0tLy8KLS0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0tLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0tLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0tLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0KLS0jaWZuZGVmIEdPT0dMRV9CUkVBS1BBRF9DT01NT05fQU5EUk9JRF9JTkNMVURFX1NUQUJfSAotLSNkZWZpbmUgR09PR0xFX0JSRUFLUEFEX0NPTU1PTl9BTkRST0lEX0lOQ0xVREVfU1RBQl9ICi0tCi0tI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotLQotLSNpZmRlZiBfX0JJT05JQ19IQVZFX1NUQUJfSAotLSNpbmNsdWRlIDxzdGFiLmg+Ci0tI2Vsc2UKLS0KLS0jaWZkZWYgX19jcGx1c3BsdXMKLS1leHRlcm4gIkMiIHsKLS0jZW5kaWYgIC8vIF9fY3BsdXNwbHVzCi0tCi0tI2RlZmluZSBfU1RBQl9DT0RFX0xJU1QgICAgICAgXAotLSAgX1NUQUJfQ09ERV9ERUYoVU5ERiwweDAwKSAgIFwKLS0gIF9TVEFCX0NPREVfREVGKEdTWU0sMHgyMCkgICBcCi0tICBfU1RBQl9DT0RFX0RFRihGTkFNRSwweDIyKSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoRlVOLDB4MjQpICAgIFwKLS0gIF9TVEFCX0NPREVfREVGKFNUU1lNLDB4MjYpICBcCi0tICBfU1RBQl9DT0RFX0RFRihMQ1NZTSwweDI4KSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoTUFJTiwweDJhKSAgIFwKLS0gIF9TVEFCX0NPREVfREVGKFBDLDB4MzApICAgICBcCi0tICBfU1RBQl9DT0RFX0RFRihOU1lNUywweDMyKSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoTk9NQVAsMHgzNCkgIFwKLS0gIF9TVEFCX0NPREVfREVGKE9CSiwweDM4KSAgICBcCi0tICBfU1RBQl9DT0RFX0RFRihPUFQsMHgzYykgICAgXAotLSAgX1NUQUJfQ09ERV9ERUYoUlNZTSwweDQwKSAgIFwKLS0gIF9TVEFCX0NPREVfREVGKE0yQywweDQyKSAgICBcCi0tICBfU1RBQl9DT0RFX0RFRihTTElORSwweDQ0KSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoRFNMSU5FLDB4NDYpIFwKLS0gIF9TVEFCX0NPREVfREVGKEJTTElORSwweDQ4KSBcCi0tICBfU1RBQl9DT0RFX0RFRihCUk9XUywweDQ4KSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoREVGRCwweDRhKSAgIFwKLS0gIF9TVEFCX0NPREVfREVGKEVIREVDTCwweDUwKSBcCi0tICBfU1RBQl9DT0RFX0RFRihNT0QyLDB4NTApICAgXAotLSAgX1NUQUJfQ09ERV9ERUYoQ0FUQ0gsMHg1NCkgIFwKLS0gIF9TVEFCX0NPREVfREVGKFNTWU0sMHg2MCkgICBcCi0tICBfU1RBQl9DT0RFX0RFRihTTywweDY0KSAgICAgXAotLSAgX1NUQUJfQ09ERV9ERUYoTFNZTSwweDgwKSAgIFwKLS0gIF9TVEFCX0NPREVfREVGKEJJTkNMLDB4ODIpICBcCi0tICBfU1RBQl9DT0RFX0RFRihTT0wsMHg4NCkgICAgXAotLSAgX1NUQUJfQ09ERV9ERUYoUFNZTSwweGEwKSAgIFwKLS0gIF9TVEFCX0NPREVfREVGKEVJTkNMLDB4YTIpICBcCi0tICBfU1RBQl9DT0RFX0RFRihFTlRSWSwweGE0KSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoTEJSQUMsMHhjMCkgIFwKLS0gIF9TVEFCX0NPREVfREVGKEVYQ0wsMHhjMikgICBcCi0tICBfU1RBQl9DT0RFX0RFRihTQ09QRSwweGM0KSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoUkJSQUMsMHhlMCkgIFwKLS0gIF9TVEFCX0NPREVfREVGKEJDT01NLDB4ZTIpICBcCi0tICBfU1RBQl9DT0RFX0RFRihFQ09NTSwweGU0KSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoRUNPTUwsMHhlOCkgIFwKLS0gIF9TVEFCX0NPREVfREVGKE5CVEVYVCwweGYwKSBcCi0tICBfU1RBQl9DT0RFX0RFRihOQkRBVEEsMHhmMikgXAotLSAgX1NUQUJfQ09ERV9ERUYoTkJCU1MsMHhmNCkgIFwKLS0gIF9TVEFCX0NPREVfREVGKE5CU1RTLDB4ZjYpICBcCi0tICBfU1RBQl9DT0RFX0RFRihOQkxDUywweGY4KSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoTEVORywweGZlKQotLQotLWVudW0gX19zdGFiX2RlYnVnX2NvZGUgewotLSNkZWZpbmUgX1NUQUJfQ09ERV9ERUYoeCx5KSAgTl8jI3ggPSB5LAotLV9TVEFCX0NPREVfTElTVAotLSN1bmRlZiBfU1RBQl9DT0RFX0RFRgotLX07Ci0tCi0tI2lmZGVmIF9fY3BsdXNwbHVzCi0tfSAgLy8gZXh0ZXJuICJDIgotLSNlbmRpZiAgLy8gX19jcGx1c3BsdXMKLS0KLS0jZW5kaWYgIC8vIF9fQklPTklDX0hBVkVfU1RBQl9ICi0tCi0tI2VuZGlmICAvLyBHT09HTEVfQlJFQUtQQURfQ09NTU9OX0FORFJPSURfSU5DTFVERV9TVEFCX0gKLWRpZmYgLS1naXQgYS9zcmMvY29tbW9uL2NvbW1vbi5neXAgYi9zcmMvY29tbW9uL2NvbW1vbi5neXAKLWluZGV4IGYwMWVkZTUuLmM0OWZmODUgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uL2NvbW1vbi5neXAKLSsrKyBiL3NyYy9jb21tb24vY29tbW9uLmd5cAotQEAgLTQ2LDcgKzQ2LDYgQEAKLSAgICAgICAgICdhbmRyb2lkL2luY2x1ZGUvZWxmLmgnLAotICAgICAgICAgJ2FuZHJvaWQvaW5jbHVkZS9saW5rLmgnLAotICAgICAgICAgJ2FuZHJvaWQvaW5jbHVkZS9zZ2lkZWZzLmgnLAotLSAgICAgICAgJ2FuZHJvaWQvaW5jbHVkZS9zdGFiLmgnLAotICAgICAgICAgJ2FuZHJvaWQvaW5jbHVkZS9zeXMvcHJvY2ZzLmgnLAotICAgICAgICAgJ2FuZHJvaWQvaW5jbHVkZS9zeXMvc2lnbmFsLmgnLAotICAgICAgICAgJ2FuZHJvaWQvaW5jbHVkZS9zeXMvdXNlci5oJywKLWRpZmYgLS1naXQgYS9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5jYyBiL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmNjCi1pbmRleCA2MDE5ZmM3Li45NTYyY2FhIDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuY2MKLSsrKyBiL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmNjCi1AQCAtMzQsNyArMzQsNiBAQAotICNpbmNsdWRlICJjb21tb24vc3RhYnNfcmVhZGVyLmgiCi0gCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotLSNpbmNsdWRlIDxzdGFiLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotIAotICNpbmNsdWRlIDxzdHJpbmc+Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuaCBiL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmgKLWluZGV4IGQ4OWFmYzAuLjU5MWYwMDcgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5oCi0rKysgYi9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5oCi1AQCAtNTMsMTIgKzUzLDE5IEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpZmRlZiBIQVZFX0FfT1VUX0gKLS0jaW5jbHVkZSA8YS5vdXQuaD4KLS0jZW5kaWYKLSAjaWZkZWYgSEFWRV9NQUNIX09fTkxJU1RfSAotICNpbmNsdWRlIDxtYWNoLW8vbmxpc3QuaD4KLSAjZW5kaWYKLSsvLyBEZWZpbml0aW9ucyBmcm9tIDxzdGFiLmg+IGFuZCA8YS5vdXQuaD4gZm9yIHN5c3RlbXMgd2hpY2gKLSsvLyBkbyBub3QgaGF2ZSB0aGVtCi0rI3VuZGVmIE5fVU5ERgotKyNkZWZpbmUgTl9VTkRGIDB4MAotKyNkZWZpbmUgTl9GVU4gMHgyNAotKyNkZWZpbmUgTl9TTElORSAweDQ0Ci0rI2RlZmluZSBOX1NPIDB4NjQKLSsjZGVmaW5lIE5fTFNZTSAweDgwCi0rI2RlZmluZSBOX0JJTkNMIDB4ODIKLSsjZGVmaW5lIE5fU09MIDB4ODQKLSAKLSAjaW5jbHVkZSA8c3RyaW5nPgotICNpbmNsdWRlIDx2ZWN0b3I+Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9zdGFic19yZWFkZXJfdW5pdHRlc3QuY2MgYi9zcmMvY29tbW9uL3N0YWJzX3JlYWRlcl91bml0dGVzdC5jYwotaW5kZXggYTg0ZGExYy4uODU0YWM0MiAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyX3VuaXR0ZXN0LmNjCi0rKysgYi9zcmMvY29tbW9uL3N0YWJzX3JlYWRlcl91bml0dGVzdC5jYwotQEAgLTMzLDcgKzMzLDYgQEAKLSAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHN0YWIuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0tIAotMi4wLjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWRfZ2l0LmJiCmluZGV4IDVmNmQ4MmMuLmQ5NzczYzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZF9naXQuYmIKQEAgLTQxLDYgKzQxLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDUtbWQyY29yZS1SZXBsYWNlLWJhc2VuYW1lLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItVXNlLV9mcHN0YXRlLWluc3RlYWQtb2YtX2xpYmNfZnBzdGF0ZS1vbi1saW51eC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9tY29udGV4dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc2FibGUtY2FsbHMtdG8tZ2V0Y29udGV4dC13aXRoLW11c2wucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1sc3MtTWF0Y2gtc3lzY2FsbHMtdG8tbWF0Y2gtbXVzbC5wYXRjaDtwYXRjaGRpcj1zcmMvdGhpcmRfcGFydHkvbHNzIFwKICAgICAgICAgICAgZmlsZTovL21pcHNfYXNtX3NnaWRlZnMucGF0Y2g7cGF0Y2hkaXI9c3JjL3RoaXJkX3BhcnR5L2xzcyBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jb25jdXJyZW5jeWtpdC9jb25jdXJyZW5jeWtpdC9jcm9zcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NvbmN1cnJlbmN5a2l0L2NvbmN1cnJlbmN5a2l0L2Nyb3NzLnBhdGNoCmluZGV4IGQzYmZhYjcuLjllNTA1OGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NvbmN1cnJlbmN5a2l0L2NvbmN1cnJlbmN5a2l0L2Nyb3NzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NvbmN1cnJlbmN5a2l0L2NvbmN1cnJlbmN5a2l0L2Nyb3NzLnBhdGNoCkBAIC0xLDggKzEsMTYgQEAKLUluZGV4OiBnaXQvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvY29uZmlndXJlCTIwMTItMTEtMTkgMjE6MDc6NTEuOTE3NDI5NDY1IC0wODAwCi0rKysgZ2l0L2NvbmZpZ3VyZQkyMDEyLTExLTE5IDIxOjEzOjE5LjMzNzQzNzI3OCAtMDgwMAotQEAgLTQzOSwxNCArNDQyLDE4IEBACitGcm9tIGFiMGVlYzc4MzgyYmQwMGNlNTMzYWVjMmM4NGZkNTBjMTczMzAzM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCA1IEphbiAyMDEzIDE5OjQyOjUxIC0wODAwCisKKy0tLQorIGNvbmZpZ3VyZSB8IDMyICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCA3NmMyODEyLi43OGNlMmZmIDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC01MzUsMTQgKzUzNSwxOCBAQCBlbHNlCiAgCUdaSVBfU1VGRklYPSIuZ3oiCiAgZmkKICAKQEAgLTI1LDEyICszMywxNiBAQAogKwljYXQgPDwgRU9GID4gLjEuYwogICNpbmNsdWRlIDxzdGRpby5oPgogIGludCBtYWluKHZvaWQpIHsKLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDQpCi1AQCAtNTY5LDE2ICs1NzYsMTYgQEAKKyAjaWYgZGVmaW5lZChfV0lOMzIpCitAQCAtNTY5LDE2ICs1NzMsMTYgQEAgaW50IG1haW4odm9pZCkgewogICNlbmRpZgogIH0KICBFT0YKLS0KKysJJENDIC1vIC4xIC4xLmMKKysJQ09NUElMRVI9YC4vLjFgCisrCXI9JD8KKysJcm0gLWYgLjEuYyAuMQorIAogLSRDQyAtbyAuMSAuMS5jCiAtQ09NUElMRVI9YC4vLjFgCiAtcj0kPwpAQCAtNDAsMTEgKzUyLDYgQEAKIC0JYXNzZXJ0ICIiICJ1cGRhdGUgY29tcGlsZXIiCiAtZWxzZQogLQllY2hvICJzdWNjZXNzIFskQ0NdIgotKwkkQ0MgLW8gLjEgLjEuYwotKwlDT01QSUxFUj1gLi8uMWAKLSsJcj0kPwotKwlybSAtZiAuMS5jIC4xCi0rCiArCWlmIHRlc3QgIiRyIiAtbmUgMDsgdGhlbgogKwkJYXNzZXJ0ICIiICJ1cGRhdGUgY29tcGlsZXIiCiArCWVsc2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwdWlkL2NwdWlkXzIwMTcwMTIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3B1aWQvY3B1aWRfMjAxNzAxMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E3MGY3NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwdWlkL2NwdWlkXzIwMTcwMTIyLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiTGludXggdG9vbCB0byBkdW1wIHg4NiBDUFVJRCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQ1BVKHMpIgorREVTQ1JJUFRJT04gPSAiY3B1aWQgZHVtcHMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIENQVShzKSBnYXRoZXJlZCBcCitmcm9tIHRoZSBDUFVJRCBpbnN0cnVjdGlvbiwgYW5kIGFsc28gZGV0ZXJtaW5lcyB0aGUgZXhhY3QgbW9kZWwgb2YgQ1BVKHMpLiBcCitJdCBzdXBwb3J0cyBJbnRlbCwgQU1ELCBhbmQgVklBIENQVXMsIGFzIHdlbGwgYXMgb2xkZXIgVHJhbnNtZXRhLCBDeXJpeCwgXAorVU1DLCBOZXhHZW4sIFJpc2UsIGFuZCBTaVMgQ1BVcyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmV0YWxsZW4uY29tLyR7QlBOfS8ke0JQfS5zcmMudGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjFjNDZhNjY2MjYyNmM1YTZlYWNhNjI2ZjIzYTVhN2Q3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2NzYxMmFhZTY3MDQzNDFkZDEwODQ0ZTk3Yzg0YzVjNWM4NzAwODE3YTU5MzdhM2MyOTNiNTUwMTNiYzQ4NjUiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjQpLiotbGludXgiCisKKyMgVGhlIGluc3RhbGwgcnVsZSBmcm9tIHRoZSBNYWtlZmlsZSBoYXMgaGFyZGNvZGVkIHBhdGhzLCBzbyB3ZSBkdXBsaWNhdGUKKyMgdGhlIGFjdGlvbnMgdG8gYWNjb21tb2RhdGUgZGlmZmVyZW50IHBhdGhzLgorZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtZCAtbTc1NSAke0R9LyR7YmluZGlyfQorICAgIGluc3RhbGwgLW03NTUgJHtCfS9jcHVpZCAke0R9LyR7YmluZGlyfS9jcHVpZAorICAgIGluc3RhbGwgLWQgLW03NTUgJHtEfS8ke21hbmRpcn0KKyAgICBpbnN0YWxsIC1tNDQ0ICR7Qn0vY3B1aWQubWFuLmd6ICR7RH0vJHttYW5kaXJ9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9mbGF0YnVmZmVyc18xLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzXzEuOS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9mbGF0YnVmZmVyc18xLjcuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnNfMS45LjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55LXBsdWdpbnNfMS4zMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55LXBsdWdpbnNfMS4zMS5iYgppbmRleCAyN2ZlODYwLi5kOGYyZjg5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueS1wbHVnaW5zXzEuMzEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnktcGx1Z2luc18xLjMxLmJiCkBAIC0xMSw2ICsxMSw3IEBACiB9CiAKIERFUEVORFMgPSAiIFwKKyAgICBmcmliaWRpIFwKICAgICBnZWFueSBcCiAgICAgbGlieG1sMiBcCiAgICAgbGlic291cC0yLjQgXApAQCAtMjIsNyArMjMsOSBAQAogICAgIGxpYmdpdDIgXAogIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWljb24tY2FjaGUKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgZ3RrLWljb24tY2FjaGUKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogU1JDX1VSSSA9ICJodHRwOi8vcGx1Z2lucy5nZWFueS5vcmcvJHtQTn0vJHtQTn0tJHtQVn0udGFyLmJ6MiIKIFNSQ19VUklbbWQ1c3VtXSA9ICI4MDhmOTA0OGI3N2ZkOTcwNDU2OWVkMmJhMTJhNTZlOSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55XzEuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueV8xLjMxLmJiCmluZGV4IGNlMzZlMWUuLmJiOWQ4YmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55XzEuMzEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnlfMS4zMS5iYgpAQCAtNSw3ICs1LDkgQEAKIAogREVQRU5EUyA9ICJndGsrIGxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUgcHl0aG9uMy1kb2N1dGlscy1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcGVybG5hdGl2ZSBweXRob25uYXRpdmUgZ2V0dGV4dAoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB5dGhvbm5hdGl2ZSBnZXR0ZXh0CisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmdlYW55Lm9yZy8ke0JQfS50YXIuYnoyIgogU1JDX1VSSVttZDVzdW1dID0gIjM4NjAwMGJlNmIyNjk3MmM2YTY5OTkzOWMzN2NkYTM0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzXzMuOC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzXzMuOC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGY2MDAwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlM18zLjguNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiR2xhZGUgLSBBIFVzZXIgSW50ZXJmYWNlIERlc2lnbmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2duYXNoIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWFhYmU4NzU5MWNiOGFlMGYzYzY4YmU2OTc3YmI1NTIyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT05YWMyZTdjZmYxZGRhZjQ4YjZlYWI2MDI4ZjIzZWY4OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTI1Mjg5MGQ5ZWVlMjZhYWI3YjQzMmU4YjhhNjE2NDc1IgotREVQRU5EUyA9ICJndGsrIGdub21lLWRvYy11dGlscyBnbm9tZS1jb21tb24gbGlieG1sMiBpbnRsdG9vbC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob25uYXRpdmUgZ3RrLWljb24tY2FjaGUKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9nbGFkZTMvMy44L2dsYWRlMy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nbm9tZS1kb2MtdXRpbHMubWFrZS1zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWZpeC1nY2MtNi1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1HX0dOVUNfUFJJTlRGLW9uLWZ1bmN0aW9ucy13aXRoLWZvcm1hdC1zdHJpbmdzLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjRlNGI0ZjVlZTM0YTAzZTAxN2U0Y2VmOTdkNzk2YzFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4YTVmNmU0ZGY0MDI4MjMwZGRlY2M3NGM1NjQ4MDhiN2VjNDQ3MWIxOTI1MDU4ZTI5MzA0Zjc3OGI2YjI3MzUiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXNjcm9sbGtlZXBlciIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZ25vbWVdID0gIi0tZW5hYmxlLWdub21lLC0tZGlzYWJsZS1nbm9tZSxsaWJib25vYm91aSBsaWJnbm9tZXVpIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlXzMuMjAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlXzMuMjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjMzYjZlMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkdsYWRlIC0gQSBVc2VyIEludGVyZmFjZSBEZXNpZ25lciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbmFzaCIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hYWJlODc1OTFjYjhhZTBmM2M2OGJlNjk3N2JiNTUyMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OWFjMmU3Y2ZmMWRkYWY0OGI2ZWFiNjAyOGYyM2VmODggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMO21kNT0yNTI4OTBkOWVlZTI2YWFiN2I0MzJlOGI4YTYxNjQ3NSIKLURFUEVORFMgPSAiZ3RrKyBndGsrMyBnbGliLTIuMCBsaWJ4bWwyIGludGx0b29sLW5hdGl2ZSBcCi0gICAgICAgICAgIGdub21lLWNvbW1vbi1uYXRpdmUgXAotIgotCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZ2xhZGUvMy4yMC9nbGFkZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXllbHAtaGVscC1ydWxlcy12YXIucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5OTY0YTJkYTE0YzVmODQ1ZWFlMzYzODg5NTg2Y2E0MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MmQ5NmRjYTVkZWM0MGVlMzRlMmY0MWQ0OWMxM2I0ZWE1MGRhOGYzMmEzYTQ5Y2EyZGE4MDJmZjE0ZGMxOGZlIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1tYW4tcGFnZXMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyogJHtsaWJkaXJ9L2dsYWRlL21vZHVsZXMvbGliZ2xhZGVndGsuc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nbGFkZS9tb2R1bGVzL2xpYmdsYWRlZ3RrLmxhIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2xhZGUvbW9kdWxlcy8uZGVidWcvbGliZ2xhZGVndGsuc28iCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlXzMuMjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlXzMuMjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWUxNzM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMC4yLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiR2xhZGUgLSBBIFVzZXIgSW50ZXJmYWNlIERlc2lnbmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2duYXNoIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWFhYmU4NzU5MWNiOGFlMGYzYzY4YmU2OTc3YmI1NTIyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT05YWMyZTdjZmYxZGRhZjQ4YjZlYWI2MDI4ZjIzZWY4OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTI1Mjg5MGQ5ZWVlMjZhYWI3YjQzMmU4YjhhNjE2NDc1IgorREVQRU5EUyA9ICJndGsrIGd0ayszIGdsaWItMi4wIGxpYnhtbDIgaW50bHRvb2wtbmF0aXZlIFwKKyAgICAgICAgICAgZ25vbWUtY29tbW9uLW5hdGl2ZSBcCisiCisKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZ2xhZGUvMy4yMC9nbGFkZS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXllbHAtaGVscC1ydWxlcy12YXIucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkM2RkOWJhMzNjN2Q3Yzg1NGFiMjA3ZTFiYTg0NGRkYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwN2QxNTQ1NTcwOTUxYWVkZWQyMGU5ZmRjNmQzZDhhNTZhZWVmZTI1Mzg3MzQ1NjhjNTMzNWJlMzM2YzZhYmVkIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1tYW4tcGFnZXMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyogJHtsaWJkaXJ9L2dsYWRlL21vZHVsZXMvbGliZ2xhZGVndGsuc28iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nbGFkZS9tb2R1bGVzL2xpYmdsYWRlZ3RrLmxhIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2xhZGUvbW9kdWxlcy8uZGVidWcvbGliZ2xhZGVndGsuc28iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwYy8wMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1ncnBjX2NwcF9wbHVnaW4tcGF0aC1kdXJpbmctY3Jvc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NzRlNjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoCkBAIC0wLDAgKzEsNjggQEAKK0Zyb20gY2M2ZGJhYmVhMGU0NTJlYmM5MzY4MmRmODYwYTc5ZWQ5YTQ1NzIyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhleSBGaXJhZ28gPGFsZXhleV9maXJhZ29AbWVudG9yLmNvbT4KK0RhdGU6IEZyaSwgMjAgT2N0IDIwMTcgMDA6MDQ6MTkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ01ha2VMaXN0cy50eHQ6IEZpeCBncnBjX2NwcF9wbHVnaW4gcGF0aCBkdXJpbmcKKyBjcm9zcy1jb21waWxhdGlvbgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgRmlyYWdvIDxhbGV4ZXlfZmlyYWdvQG1lbnRvci5jb20+CistLS0KKyBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgfCA5ICsrKysrKysrLQorIHRlbXBsYXRlcy9DTWFrZUxpc3RzLnR4dC50ZW1wbGF0ZSB8IDkgKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggZjljZDYzMC4uOTY2MzkzNCAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTMyOCw2ICszMjgsMTMgQEAgZnVuY3Rpb24ocHJvdG9idWZfZ2VuZXJhdGVfZ3JwY19jcHApCisgICAgIHJldHVybigpCisgICBlbmRpZigpCisKKysgICNpZiBjcm9zcy1jb21waWxpbmcsIGZpbmQgaG9zdCBwbHVnaW4KKysgIGlmKENNQUtFX0NST1NTQ09NUElMSU5HKQorKyAgICAgIGZpbmRfcHJvZ3JhbShnUlBDX0NQUF9QTFVHSU4gZ3JwY19jcHBfcGx1Z2luKQorKyAgZWxzZSgpCisrICAgICAgc2V0KGdSUENfQ1BQX1BMVUdJTiAkPFRBUkdFVF9GSUxFOmdycGNfY3BwX3BsdWdpbj4pCisrICBlbmRpZigpCisrCisgICBzZXQoX3Byb3RvYnVmX2luY2x1ZGVfcGF0aCAtSSAuIC1JICR7UFJPVE9CVUZfV0VMTEtOT1dOX0lNUE9SVF9ESVJ9KQorICAgZm9yZWFjaChGSUwgJHtBUkdOfSkKKyAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChBQlNfRklMICR7RklMfSBBQlNPTFVURSkKK0BAIC0zNDUsNyArMzUyLDcgQEAgZnVuY3Rpb24ocHJvdG9idWZfZ2VuZXJhdGVfZ3JwY19jcHApCisgICAgICAgQ09NTUFORCAke19nUlBDX1BST1RPQlVGX1BST1RPQ19FWEVDVVRBQkxFfQorICAgICAgIEFSR1MgLS1ncnBjX291dD1nZW5lcmF0ZV9tb2NrX2NvZGU9dHJ1ZToke19nUlBDX1BST1RPX0dFTlNfRElSfQorICAgICAgICAgICAgLS1jcHBfb3V0PSR7X2dSUENfUFJPVE9fR0VOU19ESVJ9CistICAgICAgICAgICAtLXBsdWdpbj1wcm90b2MtZ2VuLWdycGM9JDxUQVJHRVRfRklMRTpncnBjX2NwcF9wbHVnaW4+CisrICAgICAgICAgICAtLXBsdWdpbj1wcm90b2MtZ2VuLWdycGM9JHtnUlBDX0NQUF9QTFVHSU59CisgICAgICAgICAgICAke19wcm90b2J1Zl9pbmNsdWRlX3BhdGh9CisgICAgICAgICAgICAke1JFTF9GSUx9CisgICAgICAgREVQRU5EUyAke0FCU19GSUx9ICR7X2dSUENfUFJPVE9CVUZfUFJPVE9DfSBncnBjX2NwcF9wbHVnaW4KK2RpZmYgLS1naXQgYS90ZW1wbGF0ZXMvQ01ha2VMaXN0cy50eHQudGVtcGxhdGUgYi90ZW1wbGF0ZXMvQ01ha2VMaXN0cy50eHQudGVtcGxhdGUKK2luZGV4IDY0ZGFmMDQuLmE3ZTg2MjkgMTAwNjQ0CistLS0gYS90ZW1wbGF0ZXMvQ01ha2VMaXN0cy50eHQudGVtcGxhdGUKKysrKyBiL3RlbXBsYXRlcy9DTWFrZUxpc3RzLnR4dC50ZW1wbGF0ZQorQEAgLTM3Myw2ICszNzMsMTMgQEAKKyAgICAgICByZXR1cm4oKQorICAgICBlbmRpZigpCisKKysgICAgI2lmIGNyb3NzLWNvbXBpbGluZywgZmluZCBob3N0IHBsdWdpbgorKyAgICBpZihDTUFLRV9DUk9TU0NPTVBJTElORykKKysgICAgICAgIGZpbmRfcHJvZ3JhbShnUlBDX0NQUF9QTFVHSU4gZ3JwY19jcHBfcGx1Z2luKQorKyAgICBlbHNlKCkKKysgICAgICAgIHNldChnUlBDX0NQUF9QTFVHSU4gJDxUQVJHRVRfRklMRTpncnBjX2NwcF9wbHVnaW4+KQorKyAgICBlbmRpZigpCisrCisgICAgIHNldChfcHJvdG9idWZfaW5jbHVkZV9wYXRoIC1JIC4gLUkgPCV0ZXh0PiR7UFJPVE9CVUZfV0VMTEtOT1dOX0lNUE9SVF9ESVJ9PC8ldGV4dD4pCisgICAgIGZvcmVhY2goRklMIDwldGV4dD4ke0FSR059PC8ldGV4dD4pCisgICAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChBQlNfRklMIDwldGV4dD4ke0ZJTH08LyV0ZXh0PiBBQlNPTFVURSkKK0BAIC0zOTAsNyArMzk3LDcgQEAKKyAgICAgICAgIENPTU1BTkQgPCV0ZXh0PiR7X2dSUENfUFJPVE9CVUZfUFJPVE9DX0VYRUNVVEFCTEV9PC8ldGV4dD4KKyAgICAgICAgIEFSR1MgLS1ncnBjX291dD08JXRleHQ+Z2VuZXJhdGVfbW9ja19jb2RlPXRydWU6JHtfZ1JQQ19QUk9UT19HRU5TX0RJUn08LyV0ZXh0PgorICAgICAgICAgICAgICAtLWNwcF9vdXQ9PCV0ZXh0PiR7X2dSUENfUFJPVE9fR0VOU19ESVJ9PC8ldGV4dD4KKy0gICAgICAgICAgICAgLS1wbHVnaW49cHJvdG9jLWdlbi1ncnBjPSQ8VEFSR0VUX0ZJTEU6Z3JwY19jcHBfcGx1Z2luPgorKyAgICAgICAgICAgICAtLXBsdWdpbj1wcm90b2MtZ2VuLWdycGM9JHtnUlBDX0NQUF9QTFVHSU59CisgICAgICAgICAgICAgIDwldGV4dD4ke19wcm90b2J1Zl9pbmNsdWRlX3BhdGh9PC8ldGV4dD4KKyAgICAgICAgICAgICAgPCV0ZXh0PiR7UkVMX0ZJTH08LyV0ZXh0PgorICAgICAgICAgREVQRU5EUyA8JXRleHQ+JHtBQlNfRklMfTwvJXRleHQ+IDwldGV4dD4ke19nUlBDX1BST1RPQlVGX1BST1RPQ308LyV0ZXh0PiBncnBjX2NwcF9wbHVnaW4KKy0tCisyLjcuNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZDk2NTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtbGlicmFyaWVzLWluc3RhbGxhdGlvbi1mb3ItTGludXgucGF0Y2gKQEAgLTAsMCArMSwxNjYgQEAKK0Zyb20gOGU5YmY5NjJhNDVhODJmMWMyZWI1ODU4ZTI5ZmE4OWEzYTYwYjU2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhleSBGaXJhZ28gPGFsZXhleV9maXJhZ29AbWVudG9yLmNvbT4KK0RhdGU6IE1vbiwgMzAgT2N0IDIwMTcgMjM6MjQ6NDkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIENNYWtlTGlzdHMudHh0OiBGaXggbGlicmFyaWVzIGluc3RhbGxhdGlvbiBmb3IgTGludXgKKworKiBTZXQgbGlicyB2ZXJzaW9ucyBhcyBpbiBNYWtlZmlsZQorCitTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgRmlyYWdvIDxhbGV4ZXlfZmlyYWdvQG1lbnRvci5jb20+CisKKyUlIG9yaWdpbmFsIHBhdGNoOiAwMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1saWJyYXJpZXMtaW5zdGFsbGF0aW9uLWZvci1MaW51eC5wYXRjaAorLS0tCisgQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICB8IDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgQ01ha2VMaXN0cy50eHQgPT4gQ01ha2VMaXN0cy50eHQub3JpZyB8ICAwCisgMiBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspCisgY29weSBDTWFrZUxpc3RzLnR4dCA9PiBDTWFrZUxpc3RzLnR4dC5vcmlnICgxMDAlKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggYjFhNDlkZi4uMTNlNjRhYyAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTMwLDYgKzMwLDE1IEBAIHNldChQQUNLQUdFX1RBUk5BTUUgICAiJHtQQUNLQUdFX05BTUV9LSR7UEFDS0FHRV9WRVJTSU9OfSIpCisgc2V0KFBBQ0tBR0VfQlVHUkVQT1JUICJodHRwczovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjL2lzc3Vlcy8iKQorIHByb2plY3QoJHtQQUNLQUdFX05BTUV9IEMgQ1hYKQorIAorK3NldCAoQ09SRV9WRVJTSU9OX01BSk9SICI0IikKKytzZXQgKENPUkVfVkVSU0lPTiAiNC4wLjAiKQorKworK3NldCAoQ1BQX1ZFUlNJT05fTUFKT1IgIjEiKQorK3NldCAoQ1BQX1ZFUlNJT04gIiR7UEFDS0FHRV9WRVJTSU9OfSIpCisrCisrc2V0IChDU0hBUlBfVkVSU0lPTl9NQUpPUiAiMSIpCisrc2V0IChDU0hBUlBfVkVSU0lPTiAiJHtQQUNLQUdFX1ZFUlNJT059IikKKysKKyBzZXQoZ1JQQ19JTlNUQUxMX0JJTkRJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vYmluIiBDQUNIRSBQQVRIICJJbnN0YWxsYXRpb24gZGlyZWN0b3J5IGZvciBleGVjdXRhYmxlcyIpCisgc2V0KGdSUENfSU5TVEFMTF9MSUJESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2xpYiIgQ0FDSEUgUEFUSCAiSW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBmb3IgbGlicmFyaWVzIikKKyBzZXQoZ1JQQ19JTlNUQUxMX0lOQ0xVREVESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2luY2x1ZGUiIENBQ0hFIFBBVEggIkluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIGhlYWRlcnMiKQorQEAgLTg0MSw2ICs4NTAsMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCisgICBlbmRpZigpCisgZW5kaWYoKQorIAorK2lmKF9nUlBDX1BMQVRGT1JNX0xJTlVYKQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncHIgUFJPUEVSVFkgVkVSU0lPTiAke0NPUkVfVkVSU0lPTn0pCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdwciBQUk9QRVJUWSBTT1ZFUlNJT04gJHtDT1JFX1ZFUlNJT05fTUFKT1J9KQorK2VuZGlmKCkKKyAKKyB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhncHIKKyAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KK0BAIC0xMjIxLDYgKzEyMzQsMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCisgICBlbmRpZigpCisgZW5kaWYoKQorIAorK2lmKF9nUlBDX1BMQVRGT1JNX0xJTlVYKQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjIFBST1BFUlRZIFZFUlNJT04gJHtDT1JFX1ZFUlNJT059KQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjIFBST1BFUlRZIFNPVkVSU0lPTiAke0NPUkVfVkVSU0lPTl9NQUpPUn0pCisrZW5kaWYoKQorIAorIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGdycGMKKyAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KK0BAIC0xNTM1LDYgKzE1NTIsMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCisgICBlbmRpZigpCisgZW5kaWYoKQorIAorK2lmKF9nUlBDX1BMQVRGT1JNX0xJTlVYKQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjX2Nyb25ldCBQUk9QRVJUWSBWRVJTSU9OICR7Q09SRV9WRVJTSU9OfSkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3JwY19jcm9uZXQgUFJPUEVSVFkgU09WRVJTSU9OICR7Q09SRV9WRVJTSU9OX01BSk9SfSkKKytlbmRpZigpCisgCisgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3JwY19jcm9uZXQKKyAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KK0BAIC0yMzc3LDYgKzIzOTgsMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCisgICBlbmRpZigpCisgZW5kaWYoKQorIAorK2lmKF9nUlBDX1BMQVRGT1JNX0xJTlVYKQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjX3Vuc2VjdXJlIFBST1BFUlRZIFZFUlNJT04gJHtDT1JFX1ZFUlNJT059KQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjX3Vuc2VjdXJlIFBST1BFUlRZIFNPVkVSU0lPTiAke0NPUkVfVkVSU0lPTl9NQUpPUn0pCisrZW5kaWYoKQorIAorIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGdycGNfdW5zZWN1cmUKKyAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KK0BAIC0yNTkyLDYgKzI2MTcsMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCisgICBlbmRpZigpCisgZW5kaWYoKQorIAorK2lmKF9nUlBDX1BMQVRGT1JNX0xJTlVYKQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjKysgUFJPUEVSVFkgVkVSU0lPTiAke0NQUF9WRVJTSU9OfSkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3JwYysrIFBST1BFUlRZIFNPVkVSU0lPTiAke0NQUF9WRVJTSU9OX01BSk9SfSkKKytlbmRpZigpCisgCisgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3JwYysrCisgICBQVUJMSUMgJDxJTlNUQUxMX0lOVEVSRkFDRToke2dSUENfSU5TVEFMTF9JTkNMVURFRElSfT4gJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+CitAQCAtMzA3OCw2ICszMTA3LDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQorICAgZW5kaWYoKQorIGVuZGlmKCkKKyAKKytpZihfZ1JQQ19QTEFURk9STV9MSU5VWCkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3JwYysrX2Nyb25ldCBQUk9QRVJUWSBWRVJTSU9OICR7Q1BQX1ZFUlNJT059KQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjKytfY3JvbmV0IFBST1BFUlRZIFNPVkVSU0lPTiAke0NQUF9WRVJTSU9OX01BSk9SfSkKKytlbmRpZigpCisgCisgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3JwYysrX2Nyb25ldAorICAgUFVCTElDICQ8SU5TVEFMTF9JTlRFUkZBQ0U6JHtnUlBDX0lOU1RBTExfSU5DTFVERURJUn0+ICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlPgorQEAgLTMyODIsNiArMzMxNSwxMSBAQCBwcm90b2J1Zl9nZW5lcmF0ZV9ncnBjX2NwcCgKKyAgIHNyYy9wcm90by9ncnBjL3N0YXR1cy9zdGF0dXMucHJvdG8KKyApCisgCisraWYoX2dSUENfUExBVEZPUk1fTElOVVgpCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdycGMrK19lcnJvcl9kZXRhaWxzIFBST1BFUlRZIFZFUlNJT04gJHtDUFBfVkVSU0lPTn0pCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdycGMrK19lcnJvcl9kZXRhaWxzIFBST1BFUlRZIFNPVkVSU0lPTiAke0NQUF9WRVJTSU9OX01BSk9SfSkKKytlbmRpZigpCisrCisgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3JwYysrX2Vycm9yX2RldGFpbHMKKyAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KKyAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9CitAQCAtMzQwOCw2ICszNDQ2LDExIEBAIHByb3RvYnVmX2dlbmVyYXRlX2dycGNfY3BwKAorICAgc3JjL3Byb3RvL2dycGMvcmVmbGVjdGlvbi92MWFscGhhL3JlZmxlY3Rpb24ucHJvdG8KKyApCisgCisraWYoX2dSUENfUExBVEZPUk1fTElOVVgpCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdycGMrK19yZWZsZWN0aW9uIFBST1BFUlRZIFZFUlNJT04gJHtDUFBfVkVSU0lPTn0pCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdycGMrK19yZWZsZWN0aW9uIFBST1BFUlRZIFNPVkVSU0lPTiAke0NQUF9WRVJTSU9OX01BSk9SfSkKKytlbmRpZigpCisrCisgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3JwYysrX3JlZmxlY3Rpb24KKyAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KKyAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9CitAQCAtMzgyNyw2ICszODcwLDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQorICAgZW5kaWYoKQorIGVuZGlmKCkKKyAKKytpZihfZ1JQQ19QTEFURk9STV9MSU5VWCkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3JwYysrX3Vuc2VjdXJlIFBST1BFUlRZIFZFUlNJT04gJHtDUFBfVkVSU0lPTn0pCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdycGMrK191bnNlY3VyZSBQUk9QRVJUWSBTT1ZFUlNJT04gJHtDUFBfVkVSU0lPTl9NQUpPUn0pCisrZW5kaWYoKQorIAorIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGdycGMrK191bnNlY3VyZQorICAgUFVCTElDICQ8SU5TVEFMTF9JTlRFUkZBQ0U6JHtnUlBDX0lOU1RBTExfSU5DTFVERURJUn0+ICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlPgorQEAgLTQxNDAsNiArNDE4NywxMCBAQCBpZihXSU4zMiBBTkQgTVNWQykKKyAgIGVuZGlmKCkKKyBlbmRpZigpCisgCisraWYoX2dSUENfUExBVEZPUk1fTElOVVgpCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdycGNfcGx1Z2luX3N1cHBvcnQgUFJPUEVSVFkgVkVSU0lPTiAke0NPUkVfVkVSU0lPTn0pCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdycGNfcGx1Z2luX3N1cHBvcnQgUFJPUEVSVFkgU09WRVJTSU9OICR7Q09SRV9WRVJTSU9OX01BSk9SfSkKKytlbmRpZigpCisgCisgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3JwY19wbHVnaW5fc3VwcG9ydAorICAgUFVCTElDICQ8SU5TVEFMTF9JTlRFUkZBQ0U6JHtnUlBDX0lOU1RBTExfSU5DTFVERURJUn0+ICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlPgorQEAgLTQ2NDksNiArNDcwMCwxMCBAQCBpZihXSU4zMiBBTkQgTVNWQykKKyAgIGVuZGlmKCkKKyBlbmRpZigpCisgCisraWYoX2dSUENfUExBVEZPUk1fTElOVVgpCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdycGNfY3NoYXJwX2V4dCBQUk9QRVJUWSBWRVJTSU9OICR7Q1NIQVJQX1ZFUlNJT059KQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjX2NzaGFycF9leHQgUFJPUEVSVFkgU09WRVJTSU9OICR7Q1NIQVJQX1ZFUlNJT05fTUFKT1J9KQorK2VuZGlmKCkKKyAKKyB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhncnBjX2NzaGFycF9leHQKKyAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Lm9yaWcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorY29weSBmcm9tIENNYWtlTGlzdHMudHh0Citjb3B5IHRvIENNYWtlTGlzdHMudHh0Lm9yaWcKKy0tIAorMi4xNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwYy8wMDA0LUNNYWtlTGlzdHMudHh0LUZpbmQtYy1hcmVzLWluLXRhcmdldC1zeXNyb290LWFsb25lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDQtQ01ha2VMaXN0cy50eHQtRmluZC1jLWFyZXMtaW4tdGFyZ2V0LXN5c3Jvb3QtYWxvbmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk4NTAyMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwYy8wMDA0LUNNYWtlTGlzdHMudHh0LUZpbmQtYy1hcmVzLWluLXRhcmdldC1zeXNyb290LWFsb25lLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYTQ5OGI1NmJhOTY5NDgwMTVmMGYyNzg0YjJhYjgyOTY5NDY3MTZlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEgRmViIDIwMTggMjM6Mjg6MTcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIENNYWtlTGlzdHMudHh0OiBGaW5kIGMtYXJlcyBpbiB0YXJnZXQgc3lzcm9vdCBhbG9uZQorCitDdXJyZW50IGNvZGUgbGV0cyBpdCBsb29rIGludG8gbmF0aXZlIHN5c3Jvb3QgYXMgd2VsbAord2hpY2ggaXMgdGhlbiBwcmVmZXJyZWQgZHVyaW5nIGNyb3NzIGNvbXBpbGUgYW5kIGl0IGFkZHMKK2Fic29sdXRlIHBhdGggdG8gbGliY2FyZXMgaW50byBsaW5rZXIgZmxhZ3MKK29uIGhldGVyb2dlbm91cyBhcmNoaXRlY3R1cmVzIGxpbmtlciBjb21wbGFpbnMgYW5kIGJ1aWxkCitmYWlscworCit8IC9tbnQvYS9vZS9idWlsZC90bXAvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC1iZWMtbGludXgtZ251ZWFiaS9ncnBjLzEuOC41LXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZS91c3IvbGliL2xpYgorY2FyZXMuc28uMi4yLjA6IGZpbGUgbm90IHJlY29nbml6ZWQ6IEZpbGUgZm9ybWF0IG5vdCByZWNvZ25pemVkCit8IGNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0IHwgNiArKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggMWQ3ZWVmMS4uMDU4NDIzZCAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTE1MywxMCArMTUzLDggQEAgaWYoIiR7Z1JQQ19DQVJFU19QUk9WSURFUn0iIFNUUkVRVUFMICJtb2R1bGUiKQorICAgICBzZXQoZ1JQQ19JTlNUQUxMIEZBTFNFKQorICAgZW5kaWYoKQorIGVsc2VpZigiJHtnUlBDX0NBUkVTX1BST1ZJREVSfSIgU1RSRVFVQUwgInBhY2thZ2UiKQorLSAgZmluZF9wYWNrYWdlKGMtYXJlcyBSRVFVSVJFRCBDT05GSUcpCistICBpZihUQVJHRVQgYy1hcmVzOjpjYXJlcykKKy0gICAgc2V0KF9nUlBDX0NBUkVTX0xJQlJBUklFUyBjLWFyZXM6OmNhcmVzKQorLSAgZW5kaWYoKQorKyAgZmluZF9wYWNrYWdlKGMtYXJlcyBSRVFVSVJFRCkKKysgIHNldChfZ1JQQ19DQVJFU19MSUJSQVJJRVMgY2FyZXMpCisgICBzZXQoX2dSUENfRklORF9DQVJFUyAiaWYoTk9UIGMtYXJlc19GT1VORClcbiAgZmluZF9wYWNrYWdlKGMtYXJlcyBDT05GSUcpXG5lbmRpZigpIikKKyBlbmRpZigpCisgCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGNfMS44LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGNfMS44LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg4M2VjMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwY18xLjguNS5iYgpAQCAtMCwwICsxLDM2IEBACitERVNDUklQVElPTiA9ICJBIGhpZ2ggcGVyZm9ybWFuY2UsIG9wZW4gc291cmNlLCBnZW5lcmFsLXB1cnBvc2UgUlBDIGZyYW1ld29yay4gXAorUHJvdmlkZXMgZ1JQQyBsaWJyYXJpZXMgZm9yIG11bHRpcGxlIGxhbmd1YWdlcyB3cml0dGVuIG9uIHRvcCBvZiBzaGFyZWQgQyBjb3JlIGxpYnJhcnkgXAorKEMrKywgTm9kZS5qcywgUHl0aG9uLCBSdWJ5LCBPYmplY3RpdmUtQywgUEhQLCBDIykiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcGFjaGUtMiIKKworREVQRU5EUyA9ICJnZmxhZ3MgYy1hcmVzIHByb3RvYnVmIHByb3RvYnVmLW5hdGl2ZSBwcm90b2J1Zi1jIHByb3RvYnVmLWMtbmF0aXZlIG9wZW5zc2wiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGd0ZXN0IGdycGMtbmF0aXZlICIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9hcmNoaXZlL3Yke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtbGlicmFyaWVzLWluc3RhbGxhdGlvbi1mb3ItTGludXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1DTWFrZUxpc3RzLnR4dC1GaW5kLWMtYXJlcy1pbi10YXJnZXQtc3lzcm9vdC1hbG9uZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNTY1ZmE2Nzg3ZTQyZjQ5NjkzOTU4NzBjMmFkNDM2ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZjkxNjhkYTc2MGZkMmVlOTcwYzc0YzlkMWI2MzM3N2UwMDI0YmUyNDhkZWFhODQ0ZTc4NGQwZGY0NzU5OWRlIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly8wMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1ncnBjX2NwcF9wbHVnaW4tcGF0aC1kdXJpbmctY3Jvc3MucGF0Y2giCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICIgXAorICAgIC1EZ1JQQ19DQVJFU19QUk9WSURFUj1wYWNrYWdlIFwKKyAgICAtRGdSUENfWkxJQl9QUk9WSURFUj1wYWNrYWdlIFwKKyAgICAtRGdSUENfU1NMX1BST1ZJREVSPXBhY2thZ2UgXAorICAgIC1EZ1JQQ19QUk9UT0JVRl9QUk9WSURFUj1wYWNrYWdlIFwKKyAgICAtRGdSUENfR0ZMQUdTX1BST1ZJREVSPXBhY2thZ2UgXAorICAgIC1EZ1JQQ19JTlNUQUxMPTEgXAorICAgIC1EQlVJTERfU0hBUkVEX0xJQlM9T04gXAorICAgICIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbmNwcC9qc29uY3BwXzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbmNwcC9qc29uY3BwXzEuOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2EwMmVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb25jcHAvanNvbmNwcF8xLjguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiSlNPTiBDKysgbGliIHVzZWQgdG8gcmVhZCBhbmQgd3JpdGUganNvbiBmaWxlLiIKLURFU0NSSVBUSU9OID0gIkpzb25jcHAgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYSBKU09OIChodHRwOi8vanNvbi5vcmcpIHJlYWRlciBcCi0gICAgICAgICAgICAgICBhbmQgd3JpdGVyIGluIEMrKy4gSlNPTiAoSmF2YVNjcmlwdCBPYmplY3QgTm90YXRpb24pIGlzIGEgXAotICAgICAgICAgICAgICAgbGlnaHR3ZWlnaHQgZGF0YS1pbnRlcmNoYW5nZSBmb3JtYXQuIEl0IGlzIGVhc3kgZm9yIGh1bWFucyB0byBcCi0gICAgICAgICAgICAgICByZWFkIGFuZCB3cml0ZS4gSXQgaXMgZWFzeSBmb3IgbWFjaGluZXMgdG8gcGFyc2UgYW5kIGdlbmVyYXRlLiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW4tc291cmNlLXBhcnNlcnMvanNvbmNwcCIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWZhMmEyM2RkMWRjNmMxMzlmMzUxMDUzNzlkNzZkZjJiIgotCi1TUkNSRVYgPSAiMmRlMTgwMjFmY2IxMTM3MGU5YjVhMWZiZTdkY2ZkNjczNTMzYTEzNCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJzL2pzb25jcHAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotRVhUUkFfT0VDTUFLRSArPSAiLURCVUlMRF9TSEFSRURfTElCUz1PTiAtREpTT05DUFBfV0lUSF9URVNUUz1PRkYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uY3BwL2pzb25jcHBfMS44LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uY3BwL2pzb25jcHBfMS44LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhlMzMyMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb25jcHAvanNvbmNwcF8xLjguNC5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkpTT04gQysrIGxpYiB1c2VkIHRvIHJlYWQgYW5kIHdyaXRlIGpzb24gZmlsZS4iCitERVNDUklQVElPTiA9ICJKc29uY3BwIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgSlNPTiAoaHR0cDovL2pzb24ub3JnKSByZWFkZXIgXAorICAgICAgICAgICAgICAgYW5kIHdyaXRlciBpbiBDKysuIEpTT04gKEphdmFTY3JpcHQgT2JqZWN0IE5vdGF0aW9uKSBpcyBhIFwKKyAgICAgICAgICAgICAgIGxpZ2h0d2VpZ2h0IGRhdGEtaW50ZXJjaGFuZ2UgZm9ybWF0LiBJdCBpcyBlYXN5IGZvciBodW1hbnMgdG8gXAorICAgICAgICAgICAgICAgcmVhZCBhbmQgd3JpdGUuIEl0IGlzIGVhc3kgZm9yIG1hY2hpbmVzIHRvIHBhcnNlIGFuZCBnZW5lcmF0ZS4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJzL2pzb25jcHAiCisKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mYTJhMjNkZDFkYzZjMTM5ZjM1MTA1Mzc5ZDc2ZGYyYiIKKworU1JDUkVWID0gImRkYWJmNTBmNzJjZjM2OWJmNjUyYTk1YzRkOWZlMzFhMTg2NWE3ODEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3Blbi1zb3VyY2UtcGFyc2Vycy9qc29uY3BwIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCisKK0VYVFJBX09FQ01BS0UgKz0gIi1EQlVJTERfU0hBUkVEX0xJQlM9T04gLURKU09OQ1BQX1dJVEhfVEVTVFM9T0ZGIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZl8yLjIuMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZl8yLjIuMC4wLmJiCmluZGV4IDQzZWZmNzIuLjI2N2MwZTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2ZfMi4yLjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmXzIuMi4wLjAuYmIKQEAgLTUwLDMgKzUwLDUgQEAKIEZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzL0ZpbmRMaWJSY2YuY21ha2UiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgorCitQTkJMQUNLTElTVFtsaWJyY2ZdID0gIiBlcnJvcjogaW52YWxpZCB1c2Ugb2YgaW5jb21wbGV0ZSB0eXBlICdSQ0Y6OkFzaW9Jb1NlcnZpY2Uge2FrYSBjbGFzcyBib29zdDo6YXNpbzo6aW9fc2VydmljZX07IGFtb25nIG90aGVycz8iIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF8yLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfMi4wLjUuYmIKaW5kZXggNzNjMzgxMS4uMWQ2OWIzYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF8yLjAuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0XzIuMC41LmJiCkBAIC01Myw2ICs1Myw3IEBACiAgICAgXAogICAgICdQUkVGSVg9JHtwcmVmaXh9JyBcCiAgICAgJ01VTFRJTElCPSR7YmFzZWxpYn0nIFwKKyAgICAnTERDT05GSUc9OicgXAogIgogCiBkb19jb21waWxlICgpIHsKQEAgLTkwLDMgKzkxLDUgQEAKICIKIEZJTEVTX2x1YWppdC1jb21tb24gPSAiJHtkYXRhZGlyfS8ke0JQTn0tJHtQVn0iCiAKKyMgQWFyY2g2NCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcmVsZWFzZSAKK0NPTVBBVElCTEVfSE9TVCA9ICJeKD8hYWFyY2g2NCkuKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lcmN1cmlhbC9maWxlcy9tZXJjdXJpYWwtQ1ZFLTIwMTctOTQ2Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lcmN1cmlhbC9maWxlcy9tZXJjdXJpYWwtQ1ZFLTIwMTctOTQ2Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU2NDY2MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXJjdXJpYWwvZmlsZXMvbWVyY3VyaWFsLUNWRS0yMDE3LTk0NjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKLSMgVXNlciBBdWdpZSBGYWNrbGVyIDxhdWdpZUBnb29nbGUuY29tPgotIyBEYXRlIDE0OTIwMjE0MzUgMjUyMDAKLSMgICAgICBXZWQgQXByIDEyIDExOjIzOjU1IDIwMTcgLTA3MDAKLSMgQnJhbmNoIHN0YWJsZQotIyBOb2RlIElEIDc3ZWFmOTUzOTQ5OWExYjhiZTI1OWZmZTdhZGE3ODdkMDc4NTdmODAKLSMgUGFyZW50ICA2OGYyNjNmNTJkMmUzZTI3OThiNGYxZTU1Y2I2NjVjNmIwNDNmOTNiCi1kaXNwYXRjaDogcHJvdGVjdCBhZ2FpbnN0IG1hbGljaW91cyAnaGcgc2VydmUgLS1zdGRpbycgaW52b2NhdGlvbnMgKHNlYykKLQotU29tZSBzaGFyZWQtc3NoIGluc3RhbGxhdGlvbnMgYXNzdW1lIHRoYXQgJ2hnIHNlcnZlIC0tc3RkaW8nIGlzIGEgc2FmZQotY29tbWFuZCB0byBydW4gZm9yIG1pbmltYWxseSB0cnVzdGVkIHVzZXJzLiBVbmZvcnR1bmF0ZWx5LCB0aGUgbWVzc3kKLWltcGxlbWVudGF0aW9uIG9mIGFyZ3VtZW50IHBhcnNpbmcgaGVyZSBtZWFudCB0aGF0IHRyeWluZyB0byBhY2Nlc3MgYQotcmVwbyBuYW1lZCAnLS1kZWJ1Z2dlcicgd291bGQgZ2l2ZSB0aGUgdXNlciBhIHBkYiBwcm9tcHQsIHRoZXJlYnkKLXNpZGVzdGVwcGluZyBhbnkgaG9wZWQtZm9yIHNhbmRib3hpbmcuIFNlcnZpbmcgcmVwb3NpdG9yaWVzIG92ZXIgSFRUUChTKQotaXMgdW5hZmZlY3RlZC4KLQotV2UncmUgbm90IGN1cnJlbnRseSBoYXJkZW5pbmcgYW55IHN1YmNvbW1hbmRzIG90aGVyIHRoYW4gJ3NlcnZlJy4gSWYKLXlvdXIgc2VydmljZSBleHBvc2VzIG90aGVyIGNvbW1hbmRzIHRvIHVzZXJzIHdpdGggYXJiaXRyYXJ5IHJlcG9zaXRvcnkKLW5hbWVzLCBpdCBpcyBpbXBlcmF0aXZlIHRoYXQgeW91IGRlZmVuZCBhZ2FpbnN0IHJlcG9zaXRvcnkgbmFtZXMgb2YKLSctLWRlYnVnZ2VyJyBhbmQgYW55dGhpbmcgc3RhcnRpbmcgd2l0aCAnLS1jb25maWcnLgotCi1UaGUgcmVhZC1vbmx5IG1vZGUgb2YgaGctc3NoIHN0b3BwZWQgd29ya2luZyBiZWNhdXNlIGl0IHByb3ZpZGVkIGl0cyBob29rCi1jb25maWd1cmF0aW9uIHRvICJoZyBzZXJ2ZSAtLXN0ZGlvIiB2aWEgLS1jb25maWcgcGFyYW1ldGVyLiBUaGlzIGlzIGJhbm5lZCBmb3IKLXNlY3VyaXR5IHJlYXNvbnMgbm93LiBUaGlzIHBhdGNoIHN3aXRjaGVzIGl0IHRvIGRpcmVjdGx5IGNhbGwgdWkuc2V0Y29uZmlnKCkuCi1JZiB5b3VyIGN1c3RvbSBob3N0aW5nIGluZnJhc3RydWN0dXJlIHJlbGllcyBvbiBwYXNzaW5nIC0tY29uZmlnIHRvCi0iaGcgc2VydmUgLS1zdGRpbyIsIHlvdSdsbCBuZWVkIHRvIGZpbmQgYSBkaWZmZXJlbnQgd2F5IHRvIGdldCB0aGF0IGNvbmZpZ3VyYXRpb24KLWludG8gTWVyY3VyaWFsLCBlaXRoZXIgYnkgdXNpbmcgdWkuc2V0Y29uZmlnKCkgYXMgaGctc3NoIGRvZXMgaW4gdGhpcyBwYXRjaCwKLW9yIGJ5IHBsYWNpbmcgYW4gaGdyYyBmaWxlIHNvbWVwbGFjZSB3aGVyZSBNZXJjdXJpYWwgd2lsbCByZWFkIGl0LgotCi1taXRyYW5kaXJAZmIuY29tIHByb3ZpZGVkIHNvbWUgZXh0cmEgZml4ZXMgZm9yIHRoZSBkaXNwYXRjaCBjb2RlIGFuZAotZm9yIGhnLXNzaCBpbiBwbGFjZXMgdGhhdCBJIG92ZXJsb29rZWQuCi0KLUNWRTogQ1ZFLTIwMTctOTQ2MgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLWRpZmYgLS1naXQgYS9jb250cmliL2hnLXNzaCBiL2NvbnRyaWIvaGctc3NoCi0tLS0gYS9jb250cmliL2hnLXNzaAotKysrIGIvY29udHJpYi9oZy1zc2gKLUBAIC0zMiw3ICszMiw3IEBACi0gIyBlbmFibGUgaW1wb3J0aW5nIG9uIGRlbWFuZCB0byByZWR1Y2Ugc3RhcnR1cCB0aW1lCi0gZnJvbSBtZXJjdXJpYWwgaW1wb3J0IGRlbWFuZGltcG9ydDsgZGVtYW5kaW1wb3J0LmVuYWJsZSgpCi0gCi0tZnJvbSBtZXJjdXJpYWwgaW1wb3J0IGRpc3BhdGNoCi0rZnJvbSBtZXJjdXJpYWwgaW1wb3J0IGRpc3BhdGNoLCB1aSBhcyB1aW1vZAotIAotIGltcG9ydCBzeXMsIG9zLCBzaGxleAotIAotQEAgLTYxLDE0ICs2MSwxNSBAQAotICAgICAgICAgcmVwbyA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGN3ZCwgb3MucGF0aC5leHBhbmR1c2VyKHBhdGgpKSkKLSAgICAgICAgIGlmIHJlcG8gaW4gYWxsb3dlZF9wYXRoczoKLSAgICAgICAgICAgICBjbWQgPSBbJy1SJywgcmVwbywgJ3NlcnZlJywgJy0tc3RkaW8nXQotKyAgICAgICAgICAgIHJlcSA9IGRpc3BhdGNoLnJlcXVlc3QoY21kKQotICAgICAgICAgICAgIGlmIHJlYWRvbmx5OgotLSAgICAgICAgICAgICAgICBjbWQgKz0gWwotLSAgICAgICAgICAgICAgICAgICAgJy0tY29uZmlnJywKLS0gICAgICAgICAgICAgICAgICAgICdob29rcy5wcmV0eG5vcGVuLmhnLXNzaD1weXRob246X19tYWluX18ucmVqZWN0cHVzaCcsCi0tICAgICAgICAgICAgICAgICAgICAnLS1jb25maWcnLAotLSAgICAgICAgICAgICAgICAgICAgJ2hvb2tzLnByZXB1c2hrZXkuaGctc3NoPXB5dGhvbjpfX21haW5fXy5yZWplY3RwdXNoJwotLSAgICAgICAgICAgICAgICAgICAgXQotLSAgICAgICAgICAgIGRpc3BhdGNoLmRpc3BhdGNoKGRpc3BhdGNoLnJlcXVlc3QoY21kKSkKLSsgICAgICAgICAgICAgICAgaWYgbm90IHJlcS51aToKLSsgICAgICAgICAgICAgICAgICAgIHJlcS51aSA9IHVpbW9kLnVpLmxvYWQoKQotKyAgICAgICAgICAgICAgICByZXEudWkuc2V0Y29uZmlnKCdob29rcycsICdwcmV0eG5vcGVuLmhnLXNzaCcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbjpfX21haW5fXy5yZWplY3RwdXNoJywgJ2hnLXNzaCcpCi0rICAgICAgICAgICAgICAgIHJlcS51aS5zZXRjb25maWcoJ2hvb2tzJywgJ3ByZXB1c2hrZXkuaGctc3NoJywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHl0aG9uOl9fbWFpbl9fLnJlamVjdHB1c2gnLCAnaGctc3NoJykKLSsgICAgICAgICAgICBkaXNwYXRjaC5kaXNwYXRjaChyZXEpCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0lsbGVnYWwgcmVwb3NpdG9yeSAiJXMiXG4nICUgcmVwbykKLSAgICAgICAgICAgICBzeXMuZXhpdCgyNTUpCi1kaWZmIC0tZ2l0IGEvbWVyY3VyaWFsL2Rpc3BhdGNoLnB5IGIvbWVyY3VyaWFsL2Rpc3BhdGNoLnB5Ci0tLS0gYS9tZXJjdXJpYWwvZGlzcGF0Y2gucHkKLSsrKyBiL21lcmN1cmlhbC9kaXNwYXRjaC5weQotQEAgLTE1NSw2ICsxNTUsMzcgQEAKLSAgICAgICAgIHBhc3MgIyBoYXBwZW5zIGlmIGNhbGxlZCBpbiBhIHRocmVhZAotIAotICAgICBkZWYgX3J1bmNhdGNoZnVuYygpOgotKyAgICAgICAgcmVhbGNtZCA9IE5vbmUKLSsgICAgICAgIHRyeToKLSsgICAgICAgICAgICBjbWRhcmdzID0gZmFuY3lvcHRzLmZhbmN5b3B0cyhyZXEuYXJnc1s6XSwgY29tbWFuZHMuZ2xvYmFsb3B0cywge30pCi0rICAgICAgICAgICAgY21kID0gY21kYXJnc1swXQotKyAgICAgICAgICAgIGFsaWFzZXMsIGVudHJ5ID0gY21kdXRpbC5maW5kY21kKGNtZCwgY29tbWFuZHMudGFibGUsIEZhbHNlKQotKyAgICAgICAgICAgIHJlYWxjbWQgPSBhbGlhc2VzWzBdCi0rICAgICAgICBleGNlcHQgKGVycm9yLlVua25vd25Db21tYW5kLCBlcnJvci5BbWJpZ3VvdXNDb21tYW5kLAotKyAgICAgICAgICAgICAgICBJbmRleEVycm9yLCBnZXRvcHQuR2V0b3B0RXJyb3IpOgotKyAgICAgICAgICAgICMgRG9uJ3QgaGFuZGxlIHRoaXMgaGVyZS4gV2Uga25vdyB0aGUgY29tbWFuZCBpcwotKyAgICAgICAgICAgICMgaW52YWxpZCwgYnV0IGFsbCB3ZSdyZSB3b3JyaWVkIGFib3V0IGZvciBub3cgaXMgdGhhdAotKyAgICAgICAgICAgICMgaXQncyBub3QgYSBjb21tYW5kIHRoYXQgc2VydmVyIG9wZXJhdG9ycyBleHBlY3QgdG8KLSsgICAgICAgICAgICAjIGJlIHNhZmUgdG8gb2ZmZXIgdG8gdXNlcnMgaW4gYSBzYW5kYm94LgotKyAgICAgICAgICAgIHBhc3MKLSsgICAgICAgIGlmIHJlYWxjbWQgPT0gJ3NlcnZlJyBhbmQgJy0tc3RkaW8nIGluIGNtZGFyZ3M6Ci0rICAgICAgICAgICAgIyBXZSB3YW50IHRvIGNvbnN0cmFpbiAnaGcgc2VydmUgLS1zdGRpbycgaW5zdGFuY2VzIHByZXR0eQotKyAgICAgICAgICAgICMgY2xvc2VseSwgYXMgbWFueSBzaGFyZWQtc3NoIGFjY2VzcyB0b29scyB3YW50IHRvIGdyYW50Ci0rICAgICAgICAgICAgIyBhY2Nlc3MgdG8gcnVuICpvbmx5KiAnaGcgLVIgJHJlcG8gc2VydmUgLS1zdGRpbycuIFdlCi0rICAgICAgICAgICAgIyByZXN0cmljdCB0byBleGFjdGx5IHRoYXQgc2V0IG9mIGFyZ3VtZW50cywgYW5kIHByb2hpYml0Ci0rICAgICAgICAgICAgIyBhbnkgcmVwbyBuYW1lIHRoYXQgc3RhcnRzIHdpdGggJy0tJyB0byBwcmV2ZW50Ci0rICAgICAgICAgICAgIyBzaGVuYW5pZ2FucyB3aGVyZWluIGEgdXNlciBkb2VzIHNvbWV0aGluZyBsaWtlIHBhc3MKLSsgICAgICAgICAgICAjIC0tZGVidWdnZXIgb3IgLS1jb25maWc9dWkuZGVidWdnZXI9MSBhcyBhIHJlcG8KLSsgICAgICAgICAgICAjIG5hbWUuIFRoaXMgdXNlZCB0byBhY3R1YWxseSBydW4gdGhlIGRlYnVnZ2VyLgotKyAgICAgICAgICAgIGlmIChsZW4ocmVxLmFyZ3MpICE9IDQgb3IKLSsgICAgICAgICAgICAgICAgcmVxLmFyZ3NbMF0gIT0gJy1SJyBvcgotKyAgICAgICAgICAgICAgICByZXEuYXJnc1sxXS5zdGFydHN3aXRoKCctLScpIG9yCi0rICAgICAgICAgICAgICAgIHJlcS5hcmdzWzJdICE9ICdzZXJ2ZScgb3IKLSsgICAgICAgICAgICAgICAgcmVxLmFyZ3NbM10gIT0gJy0tc3RkaW8nKToKLSsgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IuQWJvcnQoCi0rICAgICAgICAgICAgICAgICAgICBfKCdwb3RlbnRpYWxseSB1bnNhZmUgc2VydmUgLS1zdGRpbyBpbnZvY2F0aW9uOiAlcicpICUKLSsgICAgICAgICAgICAgICAgICAgIChyZXEuYXJncywpKQotKwotICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIGRlYnVnZ2VyID0gJ3BkYicKLSAgICAgICAgICAgICBkZWJ1Z3RyYWNlID0gewotZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3Qtc3NoLnQgYi90ZXN0cy90ZXN0LXNzaC50Ci0tLS0gYS90ZXN0cy90ZXN0LXNzaC50Ci0rKysgYi90ZXN0cy90ZXN0LXNzaC50Ci1AQCAtMzU3LDYgKzM1NywxOSBAQAotICAgYWJvcnQ6IGRlc3RpbmF0aW9uICdhIHJlcG8nIGlzIG5vdCBlbXB0eQotICAgWzI1NV0KLSAKLStNYWtlIHN1cmUgaGcgaXMgcmVhbGx5IHBhcmFub2lkIGluIHNlcnZlIC0tc3RkaW8gbW9kZS4gSXQgdXNlZCB0byBiZQotK3Bvc3NpYmxlIHRvIGdldCBhIGRlYnVnZ2VyIFJFUEwgYnkgc3BlY2lmeWluZyBhIHJlcG8gbmFtZWQgLS1kZWJ1Z2dlci4KLSsgICQgaGcgLVIgLS1kZWJ1Z2dlciBzZXJ2ZSAtLXN0ZGlvCi0rICBhYm9ydDogcG90ZW50aWFsbHkgdW5zYWZlIHNlcnZlIC0tc3RkaW8gaW52b2NhdGlvbjogWyctUicsICctLWRlYnVnZ2VyJywgJ3NlcnZlJywgJy0tc3RkaW8nXQotKyAgWzI1NV0KLSsgICQgaGcgLVIgLS1jb25maWc9dWkuZGVidWdnZXI9eWVzIHNlcnZlIC0tc3RkaW8KLSsgIGFib3J0OiBwb3RlbnRpYWxseSB1bnNhZmUgc2VydmUgLS1zdGRpbyBpbnZvY2F0aW9uOiBbJy1SJywgJy0tY29uZmlnPXVpLmRlYnVnZ2VyPXllcycsICdzZXJ2ZScsICctLXN0ZGlvJ10KLSsgIFsyNTVdCi0rQWJicmV2aWF0aW9ucyBvZiAnc2VydmUnIGFsc28gZG9uJ3Qgd29yaywgdG8gYXZvaWQgc2hlbmFuaWdhbnMuCi0rICAkIGhnIC1SIG5hcmYgc2VydiAtLXN0ZGlvCi0rICBhYm9ydDogcG90ZW50aWFsbHkgdW5zYWZlIHNlcnZlIC0tc3RkaW8gaW52b2NhdGlvbjogWyctUicsICduYXJmJywgJ3NlcnYnLCAnLS1zdGRpbyddCi0rICBbMjU1XQotKwotIFRlc3QgaGctc3NoIHVzaW5nIGEgaGVscGVyIHNjcmlwdCB0aGF0IHdpbGwgcmVzdG9yZSBQWVRIT05QQVRIICh3aGljaCBtaWdodAotIGhhdmUgYmVlbiBjbGVhcmVkIGJ5IGEgaGcuZXhlIHdyYXBwZXIpIGFuZCBpbnZva2UgaGctc3NoIHdpdGggdGhlIHJpZ2h0Ci0gcGFyYW1ldGVyczoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lcmN1cmlhbC9tZXJjdXJpYWwtbmF0aXZlXzQuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVyY3VyaWFsL21lcmN1cmlhbC1uYXRpdmVfNC4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwOGFjZDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVyY3VyaWFsL21lcmN1cmlhbC1uYXRpdmVfNC4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBNZXJjdXJpYWwgZGlzdHJpYnV0ZWQgU0NNIgotSE9NRVBBR0UgPSAiaHR0cDovL21lcmN1cmlhbC5zZWxlbmljLmNvbS8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1ERVBFTkRTID0gInB5dGhvbi1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cubWVyY3VyaWFsLXNjbS5vcmcvcmVsZWFzZS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbWVyY3VyaWFsLUNWRS0yMDE3LTk0NjIucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjIyYTliMWQ3YzBjMDZhNTNmMGFlNWIzODZkNTM2ZDA4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZhYTRhZGU5M2MxYjVlMTE5Mzc4MjA4ODBhNDY2ZWJmMWM4MjQwODZkNDQzY2Q3OTlmYzQ2ZTI2MTcyNTBkNDAiCi0KLVMgPSAiJHtXT1JLRElSfS9tZXJjdXJpYWwtJHtQVn0iCi0KLWluaGVyaXQgbmF0aXZlCi0KLUVYVFJBX09FTUFLRSA9ICJTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgUFJFRklYPSR7cHJlZml4fSIKLQotZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7Ci0gICAgc2VkIC1pIC1lICdzOlBZVEhPTj1weXRob246UFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbjpnJyAke1N9L01ha2VmaWxlCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgLWUgaW5zdGFsbC1iaW4gREVTVERJUj0ke0R9IFBSRUZJWD0ke3ByZWZpeH0KLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVyY3VyaWFsL21lcmN1cmlhbF80LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXJjdXJpYWwvbWVyY3VyaWFsXzQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDUyNDk3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVyY3VyaWFsL21lcmN1cmlhbF80LjQuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJUaGUgTWVyY3VyaWFsIGRpc3RyaWJ1dGVkIFNDTSIKK0hPTUVQQUdFID0gImh0dHA6Ly9tZXJjdXJpYWwuc2VsZW5pYy5jb20vIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorREVQRU5EUyA9ICJweXRob24gcHl0aG9uLW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInB5dGhvbi1uYXRpdmUiCitSREVQRU5EU18ke1BOfSA9ICJweXRob24gcHl0aG9uLW1vZHVsZXMiCisKK2luaGVyaXQgcHl0aG9uLWRpcgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3Lm1lcmN1cmlhbC1zY20ub3JnL3JlbGVhc2UvJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImMxZDlmYWQxYjdlZDcwNzdiMGQ0YWU4MmU3MTE1NGRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzNGFmNGE2NzU2NWM4NTkyM2IwYTE5MTBjNzA0YWI0NGJjZjEyZjY5Yjg1NTMyNjg3MjA4Nzc2NTYzZDg3ZGUiCisKK1MgPSAiJHtXT1JLRElSfS9tZXJjdXJpYWwtJHtQVn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitFWFRSQV9PRU1BS0UgPSAiU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgIFBSRUZJWD0ke3ByZWZpeH0iCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgeworICAgIHNlZCAtaSAtZSAnczpQWVRIT049cHl0aG9uOlBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob246ZycgJHtTfS9NYWtlZmlsZQorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIC1lIGluc3RhbGwtYmluIERFU1RESVI9JHtEfSBQUkVGSVg9JHtwcmVmaXh9Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uL25hdGl2ZV9iaW5kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9uYXRpdmVfYmluZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTNlOTc1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uL25hdGl2ZV9iaW5kaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1UaGVyZSBhcmUgc29tZSBkaXNjdXNzaW9ucyB1cHN0cmVhbSB0byBtZXJnZSB0aGlzIHBhdGNoLCBidXQgSSBwcmVzb25hbHkgYmVsaWV2ZQotdGhhdCBpcyBpcyBPRSBvbmx5LiBodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9pc3N1ZXMvMTg0OSNpc3N1ZWNvbW1lbnQtMzAzNzMwMzIzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQGdtYWlsLmNvbT4KLWRpZmYgLS1naXQgYS9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy5weSBiL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzLnB5Ci1pbmRleCAwNGEyMmY5ODU5NDEuLjNlMzNiYzRhNzllNyAxMDA2NDQKLS0tLSBhL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzLnB5Ci0rKysgYi9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy5weQotQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgRGVwZW5kZW5jeToKLSAgICAgZGVmIG5lZWRfdGhyZWFkcyhzZWxmKToKLSAgICAgICAgIHJldHVybiBGYWxzZQotIAotLSAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lKToKLSsgICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwgdXNlX25hdGl2ZT1GYWxzZSk6Ci0gICAgICAgICByYWlzZSBNZXNvbkV4Y2VwdGlvbignVHJpZWQgdG8gZ2V0IGEgcGtnLWNvbmZpZyB2YXJpYWJsZSBmcm9tIGEgbm9uLXBrZ2NvbmZpZyBkZXBlbmRlbmN5LicpCi0gCi0gY2xhc3MgSW50ZXJuYWxEZXBlbmRlbmN5KERlcGVuZGVuY3kpOgotQEAgLTIyNCw4ICsyMjQsMTIgQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShEZXBlbmRlbmN5KToKLSAgICAgICAgIHJldHVybiBzLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lLCBzZWxmLmlzX2ZvdW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyc2lvbl9yZXFzKQotIAotLSAgICBkZWYgX2NhbGxfcGtnYmluKHNlbGYsIGFyZ3MpOgotLSAgICAgICAgcCwgb3V0ID0gUG9wZW5fc2FmZShbc2VsZi5wa2diaW5dICsgYXJncywgZW52PW9zLmVudmlyb24pWzA6Ml0KLSsgICAgZGVmIF9jYWxsX3BrZ2JpbihzZWxmLCBhcmdzLCB1c2VfbmF0aXZlPUZhbHNlKToKLSsgICAgICAgIGlmIHVzZV9uYXRpdmU6Ci0rICAgICAgICAgICAgcGtnYmluID0gW3NlbGYucGtnYmluICsgIi1uYXRpdmUiXQotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBwa2diaW4gPSBbc2VsZi5wa2diaW5dCi0rICAgICAgICBwLCBvdXQgPSBQb3Blbl9zYWZlKHBrZ2JpbiArIGFyZ3MsIGVudj1vcy5lbnZpcm9uKVswOjJdCi0gICAgICAgICByZXR1cm4gcC5yZXR1cm5jb2RlLCBvdXQuc3RyaXAoKQotIAotICAgICBkZWYgX3NldF9jYXJncyhzZWxmKToKLUBAIC0yNTksOCArMjYzLDggQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShEZXBlbmRlbmN5KToKLSAgICAgICAgICAgICAgICAgc2VsZi5pc19saWJ0b29sID0gVHJ1ZQotICAgICAgICAgICAgIHNlbGYubGlicy5hcHBlbmQobGliKQotIAotLSAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lKToKLS0gICAgICAgIHJldCwgb3V0ID0gc2VsZi5fY2FsbF9wa2diaW4oWyctLXZhcmlhYmxlPScgKyB2YXJpYWJsZV9uYW1lLCBzZWxmLm5hbWVdKQotKyAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCB1c2VfbmF0aXZlPUZhbHNlKToKLSsgICAgICAgIHJldCwgb3V0ID0gc2VsZi5fY2FsbF9wa2diaW4oWyctLXZhcmlhYmxlPScgKyB2YXJpYWJsZV9uYW1lLCBzZWxmLm5hbWVdLCB1c2VfbmF0aXZlPXVzZV9uYXRpdmUpCi0gICAgICAgICB2YXJpYWJsZSA9ICcnCi0gICAgICAgICBpZiByZXQgIT0gMDoKLSAgICAgICAgICAgICBpZiBzZWxmLnJlcXVpcmVkOgotQEAgLTEwOTEsNyArMTA5NSw3IEBAIGNsYXNzIFF0QmFzZURlcGVuZGVuY3koRGVwZW5kZW5jeSk6Ci0gICAgICAgICBzZWxmLmJpbmRpciA9IHNlbGYuZ2V0X3BrZ2NvbmZpZ19ob3N0X2JpbnMoY29yZSkKLSAgICAgICAgIGlmIG5vdCBzZWxmLmJpbmRpcjoKLSAgICAgICAgICAgICAjIElmIGV4ZWNfcHJlZml4IGlzIG5vdCBkZWZpbmVkLCB0aGUgcGtnLWNvbmZpZyBmaWxlIGlzIGJyb2tlbgotLSAgICAgICAgICAgIHByZWZpeCA9IGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnZXhlY19wcmVmaXgnKQotKyAgICAgICAgICAgIHByZWZpeCA9IGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnZXhlY19wcmVmaXgnLCB1c2VfbmF0aXZlPVRydWUpCi0gICAgICAgICAgICAgaWYgcHJlZml4OgotICAgICAgICAgICAgICAgICBzZWxmLmJpbmRpciA9IG9zLnBhdGguam9pbihwcmVmaXgsICdiaW4nKQotIAotQEAgLTEyMDIsNyArMTIwNiw3IEBAIGNsYXNzIFF0NURlcGVuZGVuY3koUXRCYXNlRGVwZW5kZW5jeSk6Ci0gICAgICAgICBRdEJhc2VEZXBlbmRlbmN5Ll9faW5pdF9fKHNlbGYsICdxdDUnLCBlbnYsIGt3YXJncykKLSAKLSAgICAgZGVmIGdldF9wa2djb25maWdfaG9zdF9iaW5zKHNlbGYsIGNvcmUpOgotLSAgICAgICAgcmV0dXJuIGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnaG9zdF9iaW5zJykKLSsgICAgICAgIHJldHVybiBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycsIHVzZV9uYXRpdmU9VHJ1ZSkKLSAKLSBjbGFzcyBRdDREZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgotICAgICBkZWYgX19pbml0X18oc2VsZiwgZW52LCBrd2FyZ3MpOgotQEAgLTEyMTYsNyArMTIyMCw3IEBAIGNsYXNzIFF0NERlcGVuZGVuY3koUXRCYXNlRGVwZW5kZW5jeSk6Ci0gICAgICAgICBhcHBsaWNhdGlvbnMgPSBbJ21vYycsICd1aWMnLCAncmNjJywgJ2x1cGRhdGUnLCAnbHJlbGVhc2UnXQotICAgICAgICAgZm9yIGFwcGxpY2F0aW9uIGluIGFwcGxpY2F0aW9uczoKLSAgICAgICAgICAgICB0cnk6Ci0tICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUoY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCclc19sb2NhdGlvbicgJSBhcHBsaWNhdGlvbikpCi0rICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUoY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCclc19sb2NhdGlvbicgJSBhcHBsaWNhdGlvbiwgdXNlX25hdGl2ZT1UcnVlKSkKLSAgICAgICAgICAgICBleGNlcHQgTWVzb25FeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgIHBhc3MKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNDAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNDAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ2NDRiYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjQwLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1IT01FUEFHRSA9ICJodHRwOi8vbWVzb25idWlsZC5jb20iCi1TVU1NQVJZID0gIkEgaGlnaCBwZXJmb3JtYW5jZSBidWlsZCBzeXN0ZW0iCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uLmdpdCBcCi0gICAgZmlsZTovL25hdGl2ZV9iaW5kaXIucGF0Y2ggXAotIgotCi1TUkNSRVYgPSAiYjI1ZDNlNGQzZjJiNGQzNzAyOWE1MDdjYzA4OWJkZGU2NDNjNjI0MCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMwotCi1SREVQRU5EU18ke1BOfSA9ICJuaW5qYSBweXRob24zLWNvcmUgcHl0aG9uMy1tb2R1bGVzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21waWNoL21waWNoXzMuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21waWNoL21waWNoXzMuMi5iYgppbmRleCA0YTJjMzc3Li41MWIzMTNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tcGljaC9tcGljaF8zLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXBpY2gvbXBpY2hfMy4yLmJiCkBAIC0zMSw2ICszMSwxMSBAQAogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGdldHRleHQKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgZm9yIGQgaW4gY29uZmRiIHRlc3QvbXBpL2NvbmZkYiBzcmMvb3BlbnBhL2NvbmZkYiBzcmMvcG0vaHlkcmEvY29uZmRiIHNyYy9wbS9oeWRyYS90b29scy90b3BvL2h3bG9jL2h3bG9jL2NvbmZpZyBzcmMvcG0vaHlkcmEvbXBsL2NvbmZkYiBzcmMvbXBsL2NvbmZkYiBzcmMvbXBpL3JvbWlvL2NvbmZkYjsgIGRvCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30vJGQKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuc3ViICR7U30vJGQKKyAgICBkb25lCisKICAgICBhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtSSAuIC1JIGNvbmZkYi8gLUkgbWFpbnQvCiAgICAgb2VfcnVuY29uZgogICAgIGV4aXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21zZ3BhY2svbXNncGFjay1jLzAwMDEtRml4LVdlcnJvci1jbGFzcy1tZW1hY2Nlc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tc2dwYWNrL21zZ3BhY2stYy8wMDAxLUZpeC1XZXJyb3ItY2xhc3MtbWVtYWNjZXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZDc3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tc2dwYWNrL21zZ3BhY2stYy8wMDAxLUZpeC1XZXJyb3ItY2xhc3MtbWVtYWNjZXNzLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gYTA1ZDkyYWU4NTAyNGQwNjQ4ZjY5Zjk1MzA3YTFkM2U4ZTUxMTA5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDEgQXByIDIwMTggMTk6NTU6MzggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IC1XZXJyb3I9Y2xhc3MtbWVtYWNjZXNzCisKK0Nhc3RpbmcgdG8gdm9pZCogbWFrZSBnY2MgaGFwcHkgc2luY2UgaXRzIHVwc2V0IGFib3V0CitvYmplY3QgdHlwZXMgYW5kIHJpZ2h0bHkgc28KKworRml4ZXMKKworJ3ZvaWQqIG1lbWNweSh2b2lkKiwgY29uc3Qgdm9pZCosIHNpemVfdCknIGNvcHlpbmcgYW4gb2JqZWN0IG9mIG5vbi10cml2aWFsIHR5cGUgJ3N0cnVjdCBtc2dwYWNrOjp2Mjo6b2JqZWN0JyBmcm9tIGFuIGFycmF5IG9mICdjb25zdCBtc2dwYWNrX29iamVjdCcge2FrYSAnY29uc3Qgc3RydWN0IG1zZ3BhY2tfb2JqZWN0J30gWy1XZXJyb3I9Y2xhc3MtbWVtYWNjZXNzXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL21zZ3BhY2svbXNncGFjay1jL3B1bGwvNjU5XQorCisgaW5jbHVkZS9tc2dwYWNrL3YxL29iamVjdC5ocHAgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL21zZ3BhY2svdjEvb2JqZWN0LmhwcCBiL2luY2x1ZGUvbXNncGFjay92MS9vYmplY3QuaHBwCitpbmRleCA2NGRhOGM1My4uOTcyMWY3MDUgMTAwNjQ0CistLS0gYS9pbmNsdWRlL21zZ3BhY2svdjEvb2JqZWN0LmhwcAorKysrIGIvaW5jbHVkZS9tc2dwYWNrL3YxL29iamVjdC5ocHAKK0BAIC02NjEsNyArNjYxLDcgQEAgaW5saW5lIG9iamVjdDo6b2JqZWN0KGNvbnN0IG1zZ3BhY2tfb2JqZWN0JiBvKQorIGlubGluZSB2b2lkIG9wZXJhdG9yPDwgKG1zZ3BhY2s6Om9iamVjdCYgbywgY29uc3QgbXNncGFja19vYmplY3QmIHYpCisgeworICAgICAvLyBGSVhNRSBiZXRlciB3YXk/CistICAgIHN0ZDo6bWVtY3B5KCZvLCAmdiwgc2l6ZW9mKHYpKTsKKysgICAgc3RkOjptZW1jcHkoc3RhdGljX2Nhc3Q8dm9pZCo+KCZvKSwgJnYsIHNpemVvZih2KSk7CisgfQorIAorIGlubGluZSBvYmplY3Q6Om9wZXJhdG9yIG1zZ3BhY2tfb2JqZWN0KCkgY29uc3QKKy0tIAorMi4xNi4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21zZ3BhY2svbXNncGFjay1jXzIuMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXNncGFjay9tc2dwYWNrLWNfMi4xLjUuYmIKaW5kZXggZDlmNjk1Ni4uMDJjMGNkMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXNncGFjay9tc2dwYWNrLWNfMi4xLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXNncGFjay9tc2dwYWNrLWNfMi4xLjUuYmIKQEAgLTksOSArOSwxMCBAQAogCiBQViAuPSAiK2dpdCR7U1JDUFZ9IgogCi1TUkNSRVYgPSAiN2E5ODEzOGYyN2YyNzI5MGU2ODBiZjhmYmYxZjhkMWIwODliZjEzOCIKK1NSQ1JFViA9ICIyMDg1OTViMjYyMGNmNjI2MGNlM2Q2ZDRjZjg1NDNmMTNiMjA2NDQ5IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbXNncGFjay9tc2dwYWNrLWMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtV2Vycm9yLWNsYXNzLW1lbWFjY2Vzcy5wYXRjaCBcCiAgICAgICAgICAgICIKIAogaW5oZXJpdCBjbWFrZSBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy8wMDAxLURpc2FibGUtcnVubmluZy1neXAtZmlsZXMtZm9yLWJ1bmRsZWQtZGVwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy8wMDAxLURpc2FibGUtcnVubmluZy1neXAtZmlsZXMtZm9yLWJ1bmRsZWQtZGVwcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI0YTQ2OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIGMyYWZmMTZjYzE5NmE2MWY0YWIxY2RhZTRhOTFjNzkyNjEyM2MyMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBadXphbmEgU3ZldGxpa292YSA8enN2ZXRsaWtAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMjcgQXByIDIwMTcgMTQ6MjU6NDIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSBydW5uaW5nIGd5cCBvbiBzaGFyZWQgZGVwcwotCi0tLS0KLSBNYWtlZmlsZSB8IDcgKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAwYTIxN2JkODkzLi5lMTIyOWFkMDdmIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtNzksMTAgKzc5LDkgQEAgJChOT0RFX0dfRVhFKTogY29uZmlnLmd5cGkgb3V0L01ha2VmaWxlCi0gCSQoTUFLRSkgLUMgb3V0IEJVSUxEVFlQRT1EZWJ1ZyBWPSQoVikKLSAJaWYgWyAhIC1yICRAIC1vICEgLUwgJEAgXTsgdGhlbiBsbiAtZnMgb3V0L0RlYnVnLyQoTk9ERV9FWEUpICRAOyBmaQotIAotLW91dC9NYWtlZmlsZTogY29tbW9uLmd5cGkgZGVwcy91di91di5neXAgZGVwcy9odHRwX3BhcnNlci9odHRwX3BhcnNlci5neXAgXAotLSAgICAgICAgICAgICAgZGVwcy96bGliL3psaWIuZ3lwIGRlcHMvdjgvZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgXAotLSAgICAgICAgICAgICAgZGVwcy92OC9neXBmaWxlcy9mZWF0dXJlcy5neXBpIGRlcHMvdjgvc3JjL3Y4Lmd5cCBub2RlLmd5cCBcCi0tICAgICAgICAgICAgICBjb25maWcuZ3lwaQotK291dC9NYWtlZmlsZTogY29tbW9uLmd5cGkgZGVwcy9odHRwX3BhcnNlci9odHRwX3BhcnNlci5neXAgXAotKyAgICAgICAgICAgICAgZGVwcy92OC9neXBmaWxlcy90b29sY2hhaW4uZ3lwaSBkZXBzL3Y4L2d5cGZpbGVzL2ZlYXR1cmVzLmd5cGkgXAotKwkJCSAgZGVwcy92OC9zcmMvdjguZ3lwIG5vZGUuZ3lwIGNvbmZpZy5neXBpCi0gCSQoUFlUSE9OKSB0b29scy9neXBfbm9kZS5weSAtZiBtYWtlCi0gCi0gY29uZmlnLmd5cGk6IGNvbmZpZ3VyZQotLS0gCi0yLjEyLjIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvbm8tcmVnaXN0cnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzL25vLXJlZ2lzdHJ5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDI0NzM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvbm8tcmVnaXN0cnkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1CdWdmaXggZm9yIC0tbm8tcmVnaXN0cnkgaW4gbm9kZWpzLXYwLjEyLjIKLQotZGlmZiAtdSAtciBub2RlLXYwLjEyLjJfZGVmL2RlcHMvbnBtL2xpYi9jYWNoZS9jYWNoaW5nLWNsaWVudC5qcyBub2RlLXYwLjEyLjIvZGVwcy9ucG0vbGliL2NhY2hlL2NhY2hpbmctY2xpZW50LmpzCi0tLS0gbm9kZS12MC4xMi4yX2RlZi9kZXBzL25wbS9saWIvY2FjaGUvY2FjaGluZy1jbGllbnQuanMJMjAxNS0wNC0wMSAwMToxMzowMS4wMDAwMDAwMDAgKzAzMDAKLSsrKyBub2RlLXYwLjEyLjIvZGVwcy9ucG0vbGliL2NhY2hlL2NhY2hpbmctY2xpZW50LmpzCTIwMTUtMDUtMTggMDA6NDc6MTAuNzM4NTk5Njg2ICswMzAwCi1AQCAtNjcsNiArNjcsMjIgQEAKLSAgIHZhciBjYWNoZUJhc2UgPSBjYWNoZUZpbGUobnBtLmNvbmZpZy5nZXQoImNhY2hlIikpKHVyaSkKLSAgIHZhciBjYWNoZVBhdGggPSBwYXRoLmpvaW4oY2FjaGVCYXNlLCAiLmNhY2hlLmpzb24iKQotIAotKyAgaWYgKHBhcnNlZC5ob3N0ID09PSAibm9yZWdpc3RyeSIpIChmdW5jdGlvbigpIHsKLSsgICAgdmFyIHN0YXQgPSBudWxsCi0rICAgIHZhciBmaWxlID0gbnBtLmNvbmZpZy5nZXQoImNhY2hlIikgKyBwYXJzZWQucGF0aG5hbWUgKyAiLy5jYWNoZS5qc29uIgotKyAgICB0cnkgewotKyAgICAgIHN0YXQgPSBmcy5zdGF0U3luYyhjYWNoZVBhdGgpCi0rICAgIH0gY2F0Y2ggKGV4KSB7fQotKyAgICBpZiAoIXN0YXQpIHRyeSB7Ci0rICAgICAgc3RhdCA9IGZzLnN0YXRTeW5jKGZpbGUpIAotKyAgICAgIGNhY2hlUGF0aCA9IGZpbGUKLSsgICAgfSBjYXRjaCAoZXgpIHsKLSsgICAgICBzdGF0ID0gIlJlZ2lzdHJ5IG5vdCBkZWZpbmVkIGFuZCByZWdpc3RyeSBmaWxlcyBub3QgZm91bmQ6IFwiIiArCi0rICAgICAgICAgICAgIGNhY2hlUGF0aCArICJcIiwgXCIiICsgZmlsZSArICJcIi4iCi0rICAgICAgdGhyb3cgbmV3IEVycm9yKHN0YXQpCi0rICAgIH0KLSsgIH0pKCkKLSsKLSAgIC8vIElmIHRoZSBHRVQgaXMgcGFydCBvZiBhIHdyaXRlIG9wZXJhdGlvbiAoUFVUIG9yIERFTEVURSksIHRoZW4KLSAgIC8vIHNraXAgcGFzdCB0aGUgY2FjaGUgZW50aXJlbHksIGJ1dCBzdGlsbCBzYXZlIHRoZSByZXN1bHRzLgotICAgaWYgKHVyaS5tYXRjaCgvXD93cml0ZT10cnVlJC8pKSB7Ci1AQCAtODMsMTIgKzk5LDE3IEBACi0gICAgICAgICB9Ci0gICAgICAgICBjYXRjaCAoZXgpIHsKLSAgICAgICAgICAgZGF0YSA9IG51bGwKLSsgICAgICAgICAgaWYgKHBhcnNlZC5ob3N0ID09PSAibm9yZWdpc3RyeSIpCi0rICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGaWxlIFwiIiArIGNhY2hlUGF0aCsiXCIiICsgIiBjb3JydXB0ZWQuIikKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIHBhcmFtcy5zdGF0ID0gc3RhdAotICAgICAgICAgcGFyYW1zLmRhdGEgPSBkYXRhCi0gCi0tICAgICAgICBnZXRfLmNhbGwoY2xpZW50LCB1cmksIGNhY2hlUGF0aCwgcGFyYW1zLCBjYikKLSsgICAgICAgIGlmIChwYXJzZWQuaG9zdCA9PT0gIm5vcmVnaXN0cnkiKQotKyAgICAgICAgICBjYihudWxsLCBkYXRhLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgeyBzdGF0dXNDb2RlIDogMzA0IH0pCi0rICAgICAgICBlbHNlCi0rICAgICAgICAgIGdldF8uY2FsbChjbGllbnQsIHVyaSwgY2FjaGVQYXRoLCBwYXJhbXMsIGNiKQotICAgICAgIH0pCi0gICAgIH0KLSAgICAgZWxzZSB7Ci1kaWZmIC11IC1yIG5vZGUtdjAuMTIuMl9kZWYvZGVwcy9ucG0vbGliL3V0aWxzL21hcC10by1yZWdpc3RyeS5qcyBub2RlLXYwLjEyLjIvZGVwcy9ucG0vbGliL3V0aWxzL21hcC10by1yZWdpc3RyeS5qcwotLS0tIG5vZGUtdjAuMTIuMl9kZWYvZGVwcy9ucG0vbGliL3V0aWxzL21hcC10by1yZWdpc3RyeS5qcwkyMDE1LTA0LTAxIDAxOjEzOjAxLjAwMDAwMDAwMCArMDMwMAotKysrIG5vZGUtdjAuMTIuMi9kZXBzL25wbS9saWIvdXRpbHMvbWFwLXRvLXJlZ2lzdHJ5LmpzCTIwMTUtMDUtMTggMDE6MTU6MTAuMDMwNTY5NjEzICswMzAwCi1AQCAtNDUsNiArNDUsOCBAQAotIAotICAgbG9nLnNpbGx5KCJtYXBUb1JlZ2lzdHJ5IiwgInJlZ2lzdHJ5IiwgcmVnaXN0cnkpCi0gCi0rICBpZiAoIXJlZ2lzdHJ5KSByZXR1cm4gY2IobnVsbCwgImh0dHA6Ly9ub3JlZ2lzdHJ5LyIgKyBuYW1lLCB7fSkKLSsKLSAgIHZhciBhdXRoID0gY29uZmlnLmdldENyZWRlbnRpYWxzQnlVUkkocmVnaXN0cnkpCi0gCi0gICAvLyBub3JtYWxpemUgcmVnaXN0cnkgVVJMIHNvIHJlc29sdXRpb24gZG9lc24ndCBkcm9wIGEgcGllY2Ugb2YgcmVnaXN0cnkgVVJMCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzXzguNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc184LjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJjYmMwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzXzguNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAibm9kZUpTIEV2ZW50ZWQgSS9PIGZvciBWOCBKYXZhU2NyaXB0IgotSE9NRVBBR0UgPSAiaHR0cDovL25vZGVqcy5vcmciCi1MSUNFTlNFID0gIk1JVCAmIEJTRCAmIEFydGlzdGljLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU0ZDM1YzYxMjBmMTc1ZTFmYmU1ZmY5MDhiMWNmMmQ2IgotCi1ERVBFTkRTID0gIm9wZW5zc2wxMCB6bGliIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfYXJtdjQgPSAiKCEuKmFybXY0KS4qIgotQ09NUEFUSUJMRV9NQUNISU5FX2FybXY1ID0gIighLiphcm12NSkuKiIKLUNPTVBBVElCTEVfTUFDSElORV9taXBzNjQgPSAiKCEuKm1pcHM2NCkuKiIKLQotU1JDX1VSSSA9ICJodHRwOi8vbm9kZWpzLm9yZy9kaXN0L3Yke1BWfS9ub2RlLXYke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImU2Yzg1YzgzMDAxMzQwYjMwNjcxZTk0MzJlMWJkMzM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkNWFhMmExMDFkY2M2MTcyMzFhNDc1ODEyZWI4ZWQ4N2NhYzIxNDkxZjFkY2M3OTk3YjlkZDQ2MzU2M2YzNjEiCi0KLVMgPSAiJHtXT1JLRElSfS9ub2RlLXYke1BWfSIKLQotIyB2OCBlcnJvcnMgb3V0IGlmIHlvdSBoYXZlIHNldCBDQ0FDSEUKLUNDQUNIRSA9ICIiCi0KLWRlZiBtYXBfbm9kZWpzX2FyY2goYSwgZCk6Ci0gICAgaW1wb3J0IHJlCi0KLSAgICBpZiAgIHJlLm1hdGNoKCdpLjg2JCcsIGEpOiByZXR1cm4gJ2lhMzInCi0gICAgZWxpZiByZS5tYXRjaCgneDg2XzY0JCcsIGEpOiByZXR1cm4gJ3g2NCcKLSAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0JCcsIGEpOiByZXR1cm4gJ2FybTY0JwotICAgIGVsaWYgcmUubWF0Y2goJ3Bvd2VycGM2NCQnLCBhKTogcmV0dXJuICdwcGM2NCcKLSAgICBlbGlmIHJlLm1hdGNoKCdwb3dlcnBjJCcsIGEpOiByZXR1cm4gJ3BwYycKLSAgICByZXR1cm4gYQotCi1BUkNIRkxBR1NfYXJtID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NhbGxjb252ZW50aW9uLWhhcmQnLCAnLS13aXRoLWFybS1mbG9hdC1hYmk9aGFyZCcsICctLXdpdGgtYXJtLWZsb2F0LWFiaT1zb2Z0ZnAnLCBkKX0gXAotICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1hcm0tZnB1PW5lb24nLCBcCi0gICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3ZmcHYzZDE2JywgJy0td2l0aC1hcm0tZnB1PXZmcHYzLWQxNicsIFwKLSAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndmZwdjMnLCAnLS13aXRoLWFybS1mcHU9dmZwdjMnLCBcCi0gICAgICAgICAgICAgICAgICAgICctLXdpdGgtYXJtLWZwdT12ZnAnLCBkKSwgZCksIGQpfSIKLUdZUF9ERUZJTkVTX2FwcGVuZF9taXBzZWwgPSAiIG1pcHNfYXJjaF92YXJpYW50PSdyMScgIgotQVJDSEZMQUdTID89ICIiCi0KLSMgTm9kZSBpcyB3YXkgdG9vIGNvb2wgdG8gdXNlIHByb3BlciBhdXRvdG9vbHMsIHNvIHdlIGluc3RhbGwgdHdvIHdyYXBwZXJzIHRvIGZvcmNlZnVsbHkgaW5qZWN0IHByb3BlciBhcmNoIGNmbGFncyB0byB3b3JrYXJvdW5kIGd5cGkKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgcm0gLXJmICR7U30vZGVwcy9vcGVuc3NsCi0gICAgZXhwb3J0IExEPSIke0NYWH0iCi0gICAgR1lQX0RFRklORVM9IiR7R1lQX0RFRklORVN9IiBleHBvcnQgR1lQX0RFRklORVMKLSAgICAjICRUQVJHRVRfQVJDSCBzZXR0aW5ncyBkb24ndCBtYXRjaCAtLWRlc3QtY3B1IHNldHRpbmdzCi0gICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gLS13aXRob3V0LWludGwgLS13aXRob3V0LXNuYXBzaG90IC0tc2hhcmVkLW9wZW5zc2wgLS1zaGFyZWQtemxpYiBcCi0gICAgICAgICAgICAgICAtLWRlc3QtY3B1PSIke0BtYXBfbm9kZWpzX2FyY2goZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQpfSIgXAotICAgICAgICAgICAgICAgLS1kZXN0LW9zPWxpbnV4IFwKLSAgICAgICAgICAgICAgICR7QVJDSEZMQUdTfQotfQotCi1kb19jb21waWxlICgpIHsKLSAgICBleHBvcnQgTEQ9IiR7Q1hYfSIKLSAgICBvZV9ydW5tYWtlIEJVSUxEVFlQRT1SZWxlYXNlCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICMgdXNlIG5vZGUgZnJvbSBQQVRIIGluc3RlYWQgb2YgYWJzb2x1dGUgcGF0aCB0byBzeXNyb290Ci0gICAgIyBub2RlLXYwLjEwLjI1L3Rvb2xzL2luc3RhbGwucHkgaXMgdXNpbmc6Ci0gICAgIyBzaGViYW5nID0gb3MucGF0aC5qb2luKG5vZGVfcHJlZml4LCAnYmluL25vZGUnKQotICAgICMgdXBkYXRlX3NoZWJhbmcobGlua19wYXRoLCBzaGViYW5nKQotICAgICMgYW5kIG5vZGVfcHJlZml4IGNhbiBiZSB2ZXJ5IGxvbmcgcGF0aCB0byBiaW5kaXIgaW4gbmF0aXZlIHN5c3Jvb3QgYW5kCi0gICAgIyB3aGVuIGl0IGV4Y2VlZHMgMTI4IGNoYXJhY3RlciBzaGViYW5nIGxpbWl0IGl0J3Mgc3RyaXBwZWQgdG8gaW5jb3JyZWN0IHBhdGgKLSAgICAjIGFuZCBucG0gZmFpbHMgdG8gZXhlY3V0ZSBsaWtlIGluIHRoaXMgY2FzZSB3aXRoIDEzMyBjaGFyYWN0ZXJzIHNob3cgaW4gbG9nLmRvX2luc3RhbGw6Ci0gICAgIyB1cGRhdGluZyBzaGViYW5nIG9mIC9ob21lL2plbmtpbnMvd29ya3NwYWNlL2J1aWxkLXdlYm9zLW5pZ2h0bHkvZGV2aWNlL3FlbXV4ODYvbGFiZWwvb3Blbi13ZWJvcy1idWlsZGVyL0JVSUxELXFlbXV4ODYvd29yay94ODZfNjQtbGludXgvbm9kZWpzLW5hdGl2ZS8wLjEwLjE1LXIwL2ltYWdlL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9ucG0gdG8gL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9ub2RlCi0gICAgIyAvdXNyL2Jpbi9ucG0gaXMgc3ltbGluayB0byAvdXNyL2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzCi0gICAgIyB1c2Ugc2VkIG9uIG5wbS1jbGkuanMgYmVjYXVzZSBvdGhlcndpc2Ugc3ltbGluayBpcyByZXBsYWNlZCB3aXRoIG5vcm1hbCBmaWxlIGFuZAotICAgICMgbnBtLWNsaS5qcyBjb250aW51ZXMgdG8gdXNlIG9sZCBzaGViYW5nCi0gICAgc2VkICIxc14uKl4jXCEvdXNyL2Jpbi9lbnYgbm9kZV5nIiAtaSAke0R9JHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIHNlZCAiMXNeLipeI1whJHtiaW5kaXJ9L2VudiBub2RlXmciIC1pICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcwotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbnBtIgotRklMRVNfJHtQTn0tbnBtID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ub2RlX21vZHVsZXMgJHtiaW5kaXJ9L25wbSAke2JpbmRpcn0vbnB4IgotUkRFUEVORFNfJHtQTn0tbnBtID0gImJhc2ggcHl0aG9uLXNoZWxsIHB5dGhvbi1kYXRldGltZSBweXRob24tc3VicHJvY2VzcyBweXRob24tdGV4dHV0aWxzIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tc3lzdGVtdGFwIgotRklMRVNfJHtQTn0tc3lzdGVtdGFwID0gIiR7ZGF0YWRpcn0vc3lzdGVtdGFwIgotCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc184LjkuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfOC45LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkzMGNkOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfOC45LjQuYmIKQEAgLTAsMCArMSw5MCBAQAorREVTQ1JJUFRJT04gPSAibm9kZUpTIEV2ZW50ZWQgSS9PIGZvciBWOCBKYXZhU2NyaXB0IgorSE9NRVBBR0UgPSAiaHR0cDovL25vZGVqcy5vcmciCitMSUNFTlNFID0gIk1JVCAmIEJTRCAmIEFydGlzdGljLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTI3MGY3NDc3YTE3MDVmN2NkM2UyOWQzZDQ1MTI5MTVkIgorCitERVBFTkRTID0gIm9wZW5zc2wxMCB6bGliIgorCitDT01QQVRJQkxFX01BQ0hJTkVfYXJtdjQgPSAiKCEuKmFybXY0KS4qIgorQ09NUEFUSUJMRV9NQUNISU5FX2FybXY1ID0gIighLiphcm12NSkuKiIKK0NPTVBBVElCTEVfTUFDSElORV9taXBzNjQgPSAiKCEuKm1pcHM2NCkuKiIKKworU1JDX1VSSSA9ICJodHRwOi8vbm9kZWpzLm9yZy9kaXN0L3Yke1BWfS9ub2RlLXYke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjYzMWVkMTAyZmU1OGMxM2NmNjNiYzkyYTY4Y2Y0NzU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjZGNkZTljOWMxY2E5ZjQ1MGEwYjI0ZWFmYTIyOWNhNzU5ZTU3NmRhYTBmYWU4OTJjZTc0ZDU0MWVjZGM4NmYiCisKK1MgPSAiJHtXT1JLRElSfS9ub2RlLXYke1BWfSIKKworIyB2OCBlcnJvcnMgb3V0IGlmIHlvdSBoYXZlIHNldCBDQ0FDSEUKK0NDQUNIRSA9ICIiCisKK2RlZiBtYXBfbm9kZWpzX2FyY2goYSwgZCk6CisgICAgaW1wb3J0IHJlCisKKyAgICBpZiAgIHJlLm1hdGNoKCdpLjg2JCcsIGEpOiByZXR1cm4gJ2lhMzInCisgICAgZWxpZiByZS5tYXRjaCgneDg2XzY0JCcsIGEpOiByZXR1cm4gJ3g2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0JCcsIGEpOiByZXR1cm4gJ2FybTY0JworICAgIGVsaWYgcmUubWF0Y2goJyhwb3dlcnBjNjR8cHBjNjRsZSkkJywgYSk6IHJldHVybiAncHBjNjQnCisgICAgZWxpZiByZS5tYXRjaCgncG93ZXJwYyQnLCBhKTogcmV0dXJuICdwcGMnCisgICAgcmV0dXJuIGEKKworQVJDSEZMQUdTX2FybSA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdjYWxsY29udmVudGlvbi1oYXJkJywgJy0td2l0aC1hcm0tZmxvYXQtYWJpPWhhcmQnLCAnLS13aXRoLWFybS1mbG9hdC1hYmk9c29mdGZwJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbmVvbicsICctLXdpdGgtYXJtLWZwdT1uZW9uJywgXAorICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICd2ZnB2M2QxNicsICctLXdpdGgtYXJtLWZwdT12ZnB2My1kMTYnLCBcCisgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3ZmcHYzJywgJy0td2l0aC1hcm0tZnB1PXZmcHYzJywgXAorICAgICAgICAgICAgICAgICAgICAnLS13aXRoLWFybS1mcHU9dmZwJywgZCksIGQpLCBkKX0iCitHWVBfREVGSU5FU19hcHBlbmRfbWlwc2VsID0gIiBtaXBzX2FyY2hfdmFyaWFudD0ncjEnICIKK0FSQ0hGTEFHUyA/PSAiIgorCisjIE5vZGUgaXMgd2F5IHRvbyBjb29sIHRvIHVzZSBwcm9wZXIgYXV0b3Rvb2xzLCBzbyB3ZSBpbnN0YWxsIHR3byB3cmFwcGVycyB0byBmb3JjZWZ1bGx5IGluamVjdCBwcm9wZXIgYXJjaCBjZmxhZ3MgdG8gd29ya2Fyb3VuZCBneXBpCitkb19jb25maWd1cmUgKCkgeworICAgIHJtIC1yZiAke1N9L2RlcHMvb3BlbnNzbAorICAgIGV4cG9ydCBMRD0iJHtDWFh9IgorICAgIEdZUF9ERUZJTkVTPSIke0dZUF9ERUZJTkVTfSIgZXhwb3J0IEdZUF9ERUZJTkVTCisgICAgIyAkVEFSR0VUX0FSQ0ggc2V0dGluZ3MgZG9uJ3QgbWF0Y2ggLS1kZXN0LWNwdSBzZXR0aW5ncworICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IC0td2l0aG91dC1pbnRsIC0td2l0aG91dC1zbmFwc2hvdCAtLXNoYXJlZC1vcGVuc3NsIC0tc2hhcmVkLXpsaWIgXAorICAgICAgICAgICAgICAgLS1kZXN0LWNwdT0iJHtAbWFwX25vZGVqc19hcmNoKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkKX0iIFwKKyAgICAgICAgICAgICAgIC0tZGVzdC1vcz1saW51eCBcCisgICAgICAgICAgICAgICAke0FSQ0hGTEFHU30KK30KKworZG9fY29tcGlsZSAoKSB7CisgICAgZXhwb3J0IExEPSIke0NYWH0iCisgICAgb2VfcnVubWFrZSBCVUlMRFRZUEU9UmVsZWFzZQorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAjIHVzZSBub2RlIGZyb20gUEFUSCBpbnN0ZWFkIG9mIGFic29sdXRlIHBhdGggdG8gc3lzcm9vdAorICAgICMgbm9kZS12MC4xMC4yNS90b29scy9pbnN0YWxsLnB5IGlzIHVzaW5nOgorICAgICMgc2hlYmFuZyA9IG9zLnBhdGguam9pbihub2RlX3ByZWZpeCwgJ2Jpbi9ub2RlJykKKyAgICAjIHVwZGF0ZV9zaGViYW5nKGxpbmtfcGF0aCwgc2hlYmFuZykKKyAgICAjIGFuZCBub2RlX3ByZWZpeCBjYW4gYmUgdmVyeSBsb25nIHBhdGggdG8gYmluZGlyIGluIG5hdGl2ZSBzeXNyb290IGFuZAorICAgICMgd2hlbiBpdCBleGNlZWRzIDEyOCBjaGFyYWN0ZXIgc2hlYmFuZyBsaW1pdCBpdCdzIHN0cmlwcGVkIHRvIGluY29ycmVjdCBwYXRoCisgICAgIyBhbmQgbnBtIGZhaWxzIHRvIGV4ZWN1dGUgbGlrZSBpbiB0aGlzIGNhc2Ugd2l0aCAxMzMgY2hhcmFjdGVycyBzaG93IGluIGxvZy5kb19pbnN0YWxsOgorICAgICMgdXBkYXRpbmcgc2hlYmFuZyBvZiAvaG9tZS9qZW5raW5zL3dvcmtzcGFjZS9idWlsZC13ZWJvcy1uaWdodGx5L2RldmljZS9xZW11eDg2L2xhYmVsL29wZW4td2Vib3MtYnVpbGRlci9CVUlMRC1xZW11eDg2L3dvcmsveDg2XzY0LWxpbnV4L25vZGVqcy1uYXRpdmUvMC4xMC4xNS1yMC9pbWFnZS9ob21lL2plbmtpbnMvd29ya3NwYWNlL2J1aWxkLXdlYm9zLW5pZ2h0bHkvZGV2aWNlL3FlbXV4ODYvbGFiZWwvb3Blbi13ZWJvcy1idWlsZGVyL0JVSUxELXFlbXV4ODYvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9iaW4vbnBtIHRvIC9ob21lL2plbmtpbnMvd29ya3NwYWNlL2J1aWxkLXdlYm9zLW5pZ2h0bHkvZGV2aWNlL3FlbXV4ODYvbGFiZWwvb3Blbi13ZWJvcy1idWlsZGVyL0JVSUxELXFlbXV4ODYvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9iaW4vbm9kZQorICAgICMgL3Vzci9iaW4vbnBtIGlzIHN5bWxpbmsgdG8gL3Vzci9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcworICAgICMgdXNlIHNlZCBvbiBucG0tY2xpLmpzIGJlY2F1c2Ugb3RoZXJ3aXNlIHN5bWxpbmsgaXMgcmVwbGFjZWQgd2l0aCBub3JtYWwgZmlsZSBhbmQKKyAgICAjIG5wbS1jbGkuanMgY29udGludWVzIHRvIHVzZSBvbGQgc2hlYmFuZworICAgIHNlZCAiMXNeLipeI1whL3Vzci9iaW4vZW52IG5vZGVeZyIgLWkgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBzZWQgIjFzXi4qXiNcISR7YmluZGlyfS9lbnYgbm9kZV5nIiAtaSAke0R9JHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LW5wbSIKK0ZJTEVTXyR7UE59LW5wbSA9ICIke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzICR7YmluZGlyfS9ucG0gJHtiaW5kaXJ9L25weCIKK1JERVBFTkRTXyR7UE59LW5wbSA9ICJiYXNoIHB5dGhvbi1zaGVsbCBweXRob24tZGF0ZXRpbWUgcHl0aG9uLXN1YnByb2Nlc3MgcHl0aG9uLXRleHR1dGlscyBcCisgICAgcHl0aG9uLWNvbXBpbGVyIHB5dGhvbi1taXNjIHB5dGhvbi1tdWx0aXByb2Nlc3NpbmciCisKK1BBQ0tBR0VTID0rICIke1BOfS1zeXN0ZW10YXAiCitGSUxFU18ke1BOfS1zeXN0ZW10YXAgPSAiJHtkYXRhZGlyfS9zeXN0ZW10YXAiCisKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZGstdGFyZ2V0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2RrLXRhcmdldC5iYgppbmRleCAxYmU3ZjZhLi41M2ZjMTU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZGstdGFyZ2V0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNkay10YXJnZXQuYmIKQEAgLTQsNyArNCw3IEBACiAKIFBSID0gInIxIgogCi1pbmhlcml0IHBhY2thZ2Vncm91cCBhbGxhcmNoCitpbmhlcml0IHBhY2thZ2Vncm91cAogCiBSUFJPVklERVNfJHtQTn0gKz0gInBhY2thZ2Vncm91cC1uYXRpdmUtc2RrIgogUlJFUExBQ0VTXyR7UE59ICs9ICJwYWNrYWdlZ3JvdXAtbmF0aXZlLXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvaXBjLXJ1bl8wLjk0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9pcGMtcnVuXzAuOTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNTg5MzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9pcGMtcnVuXzAuOTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJcCi1JUEM6OlJ1biBhbGxvd3MgeW91IHJ1biBhbmQgaW50ZXJhY3Qgd2l0aCBjaGlsZCBwcm9jZXNzZXMgXAotdXNpbmcgZmlsZXMsIHBpcGVzLCBhbmQgcHNldWRvLXR0eXMuIEJvdGggc3lzdGVtKCktc3R5bGUgYW5kIHNjcmlwdGVkIFwKLXVzYWdlcyBhcmUgc3VwcG9ydGVkIGFuZCBtYXkgYmUgbWl4ZWQuIExpa2V3aXNlLCBmdW5jdGlvbmFsIGFuZCBPTyBBUEkgXAotc3R5bGVzIGFyZSBib3RoIHN1cHBvcnRlZCBhbmQgbWF5IGJlIG1peGVkLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3JlbGVhc2UvSVBDLVJ1biIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wZWJkMzdjYWY1Mzc4MWU4YjcyMjNlNmI5OWI2M2Y0ZSIKLURFUEVORFMgPSAicGVybCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3RvZGRyL0lQQy1SdW4uZ2l0IgotU1JDUkVWID0gIjZiZGY0MWUyNzZlMDZkMjNlMTQwNzgzYjEzYTZlYWVmNDc0NWMyMTYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY3BhbgotCi1FWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSIKLQotZG9fY29tcGlsZSgpIHsKLSAgICBleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgotICAgIGNwYW5fZG9fY29tcGlsZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9pcGMtcnVuXzAuOTYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2lwYy1ydW5fMC45Ni5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGM5NjZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9pcGMtcnVuXzAuOTYuYmIKQEAgLTAsMCArMSwyNCBAQAorREVTQ1JJUFRJT04gPSAiXAorSVBDOjpSdW4gYWxsb3dzIHlvdSBydW4gYW5kIGludGVyYWN0IHdpdGggY2hpbGQgcHJvY2Vzc2VzIFwKK3VzaW5nIGZpbGVzLCBwaXBlcywgYW5kIHBzZXVkby10dHlzLiBCb3RoIHN5c3RlbSgpLXN0eWxlIGFuZCBzY3JpcHRlZCBcCit1c2FnZXMgYXJlIHN1cHBvcnRlZCBhbmQgbWF5IGJlIG1peGVkLiBMaWtld2lzZSwgZnVuY3Rpb25hbCBhbmQgT08gQVBJIFwKK3N0eWxlcyBhcmUgYm90aCBzdXBwb3J0ZWQgYW5kIG1heSBiZSBtaXhlZC4iCitIT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9yZWxlYXNlL0lQQy1SdW4iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MGViZDM3Y2FmNTM3ODFlOGI3MjIzZTZiOTliNjNmNGUiCitERVBFTkRTID0gInBlcmwiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS90b2Rkci9JUEMtUnVuLmdpdCIKK1NSQ1JFViA9ICI5NjA2NjM2NmFjOGM0MDFkZmY5Yzk3OWQwNGYyNWRjODIxOWZmY2MxIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNwYW4KKworRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCisKK2RvX2NvbXBpbGUoKSB7CisgICAgZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKKyAgICBjcGFuX2RvX2NvbXBpbGUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZGJkLW15c3FsLXBlcmxfNC4wMzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiZC1teXNxbC1wZXJsXzQuMDM2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWRiZWYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZGJkLW15c3FsLXBlcmxfNC4wMzYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkEgUGVybCBEQkkgZHJpdmVyIGZvciBNeVNRTCIKLURFU0NSSVBUSU9OID0gIkRCRDo6bXlzcWwgaXMgdGhlIFBlcmw1IERhdGFiYXNlIEludGVyZmFjZSBkcml2ZXIgZm9yIFwKLXRoZSBNeVNRTCBkYXRhYmFzZS4gSW4gb3RoZXIgd29yZHM6IERCRDo6bXlzcWwgaXMgYW4gaW50ZXJmYWNlIGJldHdlZW4gXAotdGhlIFBlcmwgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgYW5kIHRoZSBNeVNRTCBwcm9ncmFtbWluZyBBUEkgdGhhdCBjb21lcyBcCi13aXRoIHRoZSBNeVNRTCByZWxhdGlvbmFsIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtLiBNb3N0IGZ1bmN0aW9ucyBcCi1wcm92aWRlZCBieSB0aGlzIHByb2dyYW1taW5nIEFQSSBhcmUgc3VwcG9ydGVkLiBTb21lIHJhcmVseSB1c2VkIFwKLWZ1bmN0aW9ucyBhcmUgbWlzc2luZywgbWFpbmx5IGJlY2F1c2Ugbm8tb25lIGV2ZXIgcmVxdWVzdGVkIHRoZW0uIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfm1pY2hpZWxiL0RCRC1teXNxbC00LjAzNi9saWIvREJEL215c3FsLnBtIgotCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotREVQRU5EUyArPSAibGliZGJpLXBlcmwtbmF0aXZlIGxpYm15c3FsY2xpZW50IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMGEwNjk2NDM0MGU1YzBjZGU4OGI3YWY2MTFmNzU1YyIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9NL01JL01JQ0hJRUxCL0RCRC1teXNxbC0ke1BWfS50YXIuZ3ogXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmRlZTFkOGRjNGFlNTRiYzZjYjdjZDVhM2YzZDMzNDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWM0OGE4MjNmODZiODExMGNjYjY1MDRjNjE3NmNhMjQ4YjUyZjU2ODI5ZGQ0NTQ4YmMzOWMzNTA5ZjQxNTRjZiIKLQotUyA9ICIke1dPUktESVJ9L0RCRC1teXNxbC0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiZC1teXNxbC1wZXJsXzQuMDQzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmQtbXlzcWwtcGVybF80LjA0My5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDhiYTc4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmQtbXlzcWwtcGVybF80LjA0My5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIkEgUGVybCBEQkkgZHJpdmVyIGZvciBNeVNRTCIKK0RFU0NSSVBUSU9OID0gIkRCRDo6bXlzcWwgaXMgdGhlIFBlcmw1IERhdGFiYXNlIEludGVyZmFjZSBkcml2ZXIgZm9yIFwKK3RoZSBNeVNRTCBkYXRhYmFzZS4gSW4gb3RoZXIgd29yZHM6IERCRDo6bXlzcWwgaXMgYW4gaW50ZXJmYWNlIGJldHdlZW4gXAordGhlIFBlcmwgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgYW5kIHRoZSBNeVNRTCBwcm9ncmFtbWluZyBBUEkgdGhhdCBjb21lcyBcCit3aXRoIHRoZSBNeVNRTCByZWxhdGlvbmFsIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtLiBNb3N0IGZ1bmN0aW9ucyBcCitwcm92aWRlZCBieSB0aGlzIHByb2dyYW1taW5nIEFQSSBhcmUgc3VwcG9ydGVkLiBTb21lIHJhcmVseSB1c2VkIFwKK2Z1bmN0aW9ucyBhcmUgbWlzc2luZywgbWFpbmx5IGJlY2F1c2Ugbm8tb25lIGV2ZXIgcmVxdWVzdGVkIHRoZW0uIFwKKyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfm1pY2hpZWxiL0RCRC1teXNxbC00LjAzNi9saWIvREJEL215c3FsLnBtIgorCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorREVQRU5EUyArPSAibGliZGJpLXBlcmwtbmF0aXZlIGxpYm15c3FsY2xpZW50IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMGEwNjk2NDM0MGU1YzBjZGU4OGI3YWY2MTFmNzU1YyIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9NL01JL01JQ0hJRUxCL0RCRC1teXNxbC0ke1BWfS50YXIuZ3ogXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGEwMGRkN2YxYzA1NzkzMTE0N2M2NWRmYzQ5MDFjMzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjI5Zjg2NWU4MzE3ZjUyNjAyYjJmMmVmZDJiNjg4MDAyOTAzZDJlNGJiY2JhNTQyN2NiNjE4OGIwNDNkNmY5OSIKKworUyA9ICIke1dPUktESVJ9L0RCRC1teXNxbC0ke1BWfSIKKworaW5oZXJpdCBjcGFuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiaS1wZXJsXzEuNjM2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmktcGVybF8xLjYzNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg1YjkwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiaS1wZXJsXzEuNjM2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUGVybCBEYXRhYmFzZSBJbnRlcmZhY2UiCi1ERVNDUklQVElPTiA9ICJEQkkgaXMgYSBkYXRhYmFzZSBhY2Nlc3MgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlIFwKLShBUEkpIGZvciB0aGUgUGVybCBMYW5ndWFnZS4gVGhlIERCSSBBUEkgU3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgc2V0IFwKLW9mIGZ1bmN0aW9ucywgdmFyaWFibGVzIGFuZCBjb252ZW50aW9ucyB0aGF0IHByb3ZpZGUgYSBjb25zaXN0ZW50IFwKLWRhdGFiYXNlIGludGVyZmFjZSBpbmRlcGVuZGVudCBvZiB0aGUgYWN0dWFsIGRhdGFiYXNlIGJlaW5nIHVzZWQuIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9EQkkvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLVJERVBFTkRTXyR7UE59ID0gIiBwZXJsLW1vZHVsZS1jYXJwIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXItaGVhdnkgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWR5bmFsb2FkZXIgXAotIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9EQkkucG07YmVnaW5saW5lPTgxNDc7ZW5kbGluZT04MTUxO21kNT0yZTVmNmNmNDdlNWFkN2I3N2RjYjYxNzJlZGMyOTI5MiIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9UL1RJL1RJTUIvREJJLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2MGYyOTFlNWYwMTU1NTBkZGU3MWQxODU4ZGZlOTNiYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZjdkZGNlOTdjMDRiNGI3YTAwMGU2NWU1ZDA1ZjY3OWM5NjRkNjJjOGIwMmM5NGMxYTdkODE1YmIyZGQ2NzZjIgotCi1TID0gIiR7V09SS0RJUn0vREJJLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiaS1wZXJsXzEuNjQxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmktcGVybF8xLjY0MS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGExMjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmktcGVybF8xLjY0MS5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIlRoZSBQZXJsIERhdGFiYXNlIEludGVyZmFjZSIKK0RFU0NSSVBUSU9OID0gIkRCSSBpcyBhIGRhdGFiYXNlIGFjY2VzcyBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2UgXAorKEFQSSkgZm9yIHRoZSBQZXJsIExhbmd1YWdlLiBUaGUgREJJIEFQSSBTcGVjaWZpY2F0aW9uIGRlZmluZXMgYSBzZXQgXAorb2YgZnVuY3Rpb25zLCB2YXJpYWJsZXMgYW5kIGNvbnZlbnRpb25zIHRoYXQgcHJvdmlkZSBhIGNvbnNpc3RlbnQgXAorZGF0YWJhc2UgaW50ZXJmYWNlIGluZGVwZW5kZW50IG9mIHRoZSBhY3R1YWwgZGF0YWJhc2UgYmVpbmcgdXNlZC4gXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L0RCSS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorUkRFUEVORFNfJHtQTn0gPSAiIHBlcmwtbW9kdWxlLWNhcnAgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlci1oZWF2eSBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZHluYWxvYWRlciBcCisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTEwOTgyYzcxNDhlMGEwMTJjMGZkODA1MzQ1MjJmNWM1IgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1QvVEkvVElNQi9EQkktJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImU3N2ZkMzdmY2Y3N2ZjODhmZGUwMjljMWI3NWRlZDU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1MDllNTMyY2RkMGUzZDkxZWRhNTUwNTc4ZGVhYWMyOWUyZjAwOGExMmI2NDU3NmU4YzI2MWJiOTJlOGMyYzEiCisKK1MgPSAiJHtXT1JLRElSfS9EQkktJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KKwlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50CisJcm0gLXJmICR7Qn0vdC8xM3RhaW50LnQKKwkjIHNvdXJjZSBvZiB0ZXN0IGZhaWx1cmUgbm90IG9idmlvdXMKKwlybSAtcmYgJHtCfS90Lzg1Z29mZXIudAorCSMgdW5jbGVhciB3aHkgdGhlcmUgYXJlIHNldmVyYWwgZHVwbGljYXRlcyBvZiB0ZXN0cyBpbiB0YXJiYWxsCisJcm0gLXJmICR7Qn0vdC96Ki50Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMzEvY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTUuNi4zMS9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzljMzM0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTUuNi4zMS9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLVtQQVRDSF0gY29uZmlnLm00OiBjaGFuZ2UgQUNfVFJZX1JVTiB0byBBQ19UUllfTElOSwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotQUNfVFJZX1JVTiBpcyBub3Qgc3VpdGFibGUgZm9yIGNyb3NzLWNvbXBpbGUKLQotU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZXh0L2ZpbGVpbmZvL2NvbmZpZy5tNCB8IDMxICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4dC9maWxlaW5mby9jb25maWcubTQgYi9leHQvZmlsZWluZm8vY29uZmlnLm00Ci1pbmRleCA3ZTk4ZDYyLi44YThlYTBlIDEwMDY0NAotLS0tIGEvZXh0L2ZpbGVpbmZvL2NvbmZpZy5tNAotKysrIGIvZXh0L2ZpbGVpbmZvL2NvbmZpZy5tNAotQEAgLTE0LDMxICsxNCwxMiBAQCBpZiB0ZXN0ICIkUEhQX0ZJTEVJTkZPIiAhPSAibm8iOyB0aGVuCi0gICAgIGxpYm1hZ2ljL3JlYWRjZGYuYyBsaWJtYWdpYy9zb2Z0bWFnaWMuYyIKLSAKLSAgIEFDX01TR19DSEVDS0lORyhbZm9yIHN0cmNhc2VzdHJdKQotLSAgQUNfVFJZX1JVTihbCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxzdHJpbmdzLmg+Ci0tI2luY2x1ZGUgPHN0ZGxpYi5oPgotLQotLWludCBtYWluKHZvaWQpCi0tewotLSAgICAgICAgY2hhciAqczAsICpzMSwgKnJldDsKLS0KLS0gICAgICAgIHMwID0gKGNoYXIgKikgbWFsbG9jKDQyKTsKLS0gICAgICAgIHMxID0gKGNoYXIgKikgbWFsbG9jKDgpOwotLQotLSAgICAgICAgbWVtc2V0KHMwLCAnWCcsIDQyKTsKLS0gICAgICAgIHMwWzI0XSA9ICdZJzsKLS0gICAgICAgIHMwWzI2XSA9ICdaJzsKLS0gICAgICAgIHMwWzQxXSA9ICdcMCc7Ci0tICAgICAgICBtZW1zZXQoczEsICd4JywgOCk7Ci0tICAgICAgICBzMVswXSA9ICd5JzsKLS0gICAgICAgIHMxWzJdID0gJ1onOwotLSAgICAgICAgczFbN10gPSAnXDAnOwotLQotLSAgICAgICAgcmV0ID0gc3RyY2FzZXN0cihzMCwgczEpOwotLQotLSAgICAgICAgcmV0dXJuICEoTlVMTCAhPSByZXQpOwotLX0KLSsgIEFDX1RSWV9DT01QSUxFKFsKLSsgICAgICNpbmNsdWRlIDxzdHJpbmcuaD4KLSsgICAgICNpbmNsdWRlIDxzdHJpbmdzLmg+Ci0rICAgICAjaW5jbHVkZSA8c3RkbGliLmg+Ci0rICBdLFsKLSsgICAgIHN0cmNhc2VzdHIoTlVMTCwgTlVMTCk7Ci0gICBdLFsKLSAgICAgZG5sIHVzaW5nIHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbgotICAgICBBQ19NU0dfUkVTVUxUKHllcykKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS8wMDAxLVNwZWNpZnktdGFnLXdpdGgtbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNy4xLjkvMDAwMS1TcGVjaWZ5LXRhZy13aXRoLWxpYnRvb2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4YjQ5MzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS8wMDAxLVNwZWNpZnktdGFnLXdpdGgtbGlidG9vbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUZyb20gNWM4NGIwMzllOTdhYmQ4OGY2YTE4ZGEwZTZkMjczODNjMDBmZWE5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDI2IEp1bCAyMDE3IDIzOjA2OjU2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNwZWNpZnkgLS10YWcgd2l0aCBsaWJ0b29sCi0KLVRoaXMgaGVscHMgaW4gY29tcGlsaW5nIHdpdGggZXh0ZXJuYWwgdG9vbGNoYWlucwotd2l0aCAtZlBJRSBhcHBlbmRlZCB0byBDQyBlLmcuIHZpYSBoYXJkZW5pbmcgZmxhZ3MKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGFjaW5jbHVkZS5tNCB8IDggKysrKy0tLS0KLSBjb25maWd1cmUuaW4gfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggYTExNGE5OC4uMWNjN2EyNiAxMDA2NDQKLS0tLSBhL2FjaW5jbHVkZS5tNAotKysrIGIvYWNpbmNsdWRlLm00Ci1AQCAtODA2LDEwICs4MDYsMTAgQEAgZG5sCi0gZG5sIFBIUF9CVUlMRF9QUk9HUkFNCi0gZG5sCi0gQUNfREVGVU4oW1BIUF9CVUlMRF9QUk9HUkFNXSxbCi0tICBwaHBfY19wcmU9JyQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDQyknCi0rICBwaHBfY19wcmU9JyQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgJChDQyknCi0gICBwaHBfY19tZXRhPSckKENPTU1PTl9GTEFHUykgJChDRkxBR1NfQ0xFQU4pICQoRVhUUkFfQ0ZMQUdTKScKLSAgIHBocF9jX3Bvc3Q9Ci0tICBwaHBfY3h4X3ByZT0nJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENYWCknCi0rICBwaHBfY3h4X3ByZT0nJChMSUJUT09MKSAtLXRhZz1DWFggLS1tb2RlPWNvbXBpbGUgJChDWFgpJwotICAgcGhwX2N4eF9tZXRhPSckKENPTU1PTl9GTEFHUykgJChDWFhGTEFHU19DTEVBTikgJChFWFRSQV9DWFhGTEFHUyknCi0gICBwaHBfY3h4X3Bvc3Q9Ci0gICBwaHBfbG89bG8KLUBAIC04MTksMTAgKzgxOSwxMCBAQCBBQ19ERUZVTihbUEhQX0JVSUxEX1BST0dSQU1dLFsKLSAgICAgbm8pICBwaWNfc2V0dGluZz0nLXByZWZlci1ub24tcGljJzs7Ci0gICBlc2FjCi0gCi0tICBzaGFyZWRfY19wcmU9JyQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDQyknCi0rICBzaGFyZWRfY19wcmU9JyQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgJChDQyknCi0gICBzaGFyZWRfY19tZXRhPSckKENPTU1PTl9GTEFHUykgJChDRkxBR1NfQ0xFQU4pICQoRVhUUkFfQ0ZMQUdTKSAnJHBpY19zZXR0aW5nCi0gICBzaGFyZWRfY19wb3N0PQotLSAgc2hhcmVkX2N4eF9wcmU9JyQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDWFgpJwotKyAgc2hhcmVkX2N4eF9wcmU9JyQoTElCVE9PTCkgLS10YWc9Q1hYIC0tbW9kZT1jb21waWxlICQoQ1hYKScKLSAgIHNoYXJlZF9jeHhfbWV0YT0nJChDT01NT05fRkxBR1MpICQoQ1hYRkxBR1NfQ0xFQU4pICQoRVhUUkFfQ1hYRkxBR1MpICckcGljX3NldHRpbmcKLSAgIHNoYXJlZF9jeHhfcG9zdD0KLSAgIHNoYXJlZF9sbz1sbwotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggN2Q2NWI2My4uNzIyMWFmOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTQzMSw4ICsxNDMxLDggQEAgUEhQX1NFVF9MSUJUT09MX1ZBUklBQkxFKFstLXNpbGVudF0pCi0gZG5sIGxpYnRvb2wgMS40LjMgbmVlZHMgdGhpcy4KLSBQSFBfU0VUX0xJQlRPT0xfVkFSSUFCTEUoWy0tcHJlc2VydmUtZHVwLWRlcHNdKQotIAotLXRlc3QgLXogIiRQSFBfQ09NUElMRSIgJiYgUEhQX0NPTVBJTEU9JyQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAtYyAkPCcKLS10ZXN0IC16ICIkQ1hYX1BIUF9DT01QSUxFIiAmJiBDWFhfUEhQX0NPTVBJTEU9JyQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDWFhfQ09NUElMRSkgLWMgJDwnCi0rdGVzdCAteiAiJFBIUF9DT01QSUxFIiAmJiBQSFBfQ09NUElMRT0nJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpIC1jICQ8JwotK3Rlc3QgLXogIiRDWFhfUEhQX0NPTVBJTEUiICYmIENYWF9QSFBfQ09NUElMRT0nJChMSUJUT09MKSAtLXRhZz1DWFggLS1tb2RlPWNvbXBpbGUgJChDWFhfQ09NUElMRSkgLWMgJDwnCi0gU0hBUkVEX0xJQlRPT0w9JyQoTElCVE9PTCknCi0gCi0gQ0M9JG9sZF9DQwotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS9DVkUtMjAxNy0xNjY0Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNy4xLjkvQ1ZFLTIwMTctMTY2NDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZDJhMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS9DVkUtMjAxNy0xNjY0Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyNDEgKzAsMCBAQAotRnJvbSBmMmY5MDc2NzMxMTM1NWNhZmFiZmY2MDRhN2E4NTdjYTYwZWUzZjAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyMiBOb3YgMjAxNyAyMToxNDo1OSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXhlZCBidWcgIzc1MDU1IE91dC1PZi1Cb3VuZHMgUmVhZCBpbiB0aW1lbGliX21lcmlkaWFuKCkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xNjY0MgotU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyAgICAgICAgIHwgMTU0NCArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUgICAgICAgIHwgICAgNCArLQotIGV4dC9kYXRlL3Rlc3RzL2J1ZzUzNDM3X3ZhcjMucGhwdCB8ICAgIDIgKy0KLSBleHQvd2RkeC90ZXN0cy9idWc3NTA1NS5waHB0ICAgICAgfCAgIDIwICsKLSBleHQvd2RkeC90ZXN0cy9idWc3NTA1NS53ZGR4ICAgICAgfCAgIDEzICsKLSA1IGZpbGVzIGNoYW5nZWQsIDkxMSBpbnNlcnRpb25zKCspLCA2NzIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGV4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LnBocHQKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0L3dkZHgvdGVzdHMvYnVnNzUwNTUud2RkeAotCi1kaWZmIC0tZ2l0IGEvZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyBiL2V4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMKLWluZGV4IGY5Mjk2MTkuLjZiMTE0MTggMTAwNjQ0Ci0tLS0gYS9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jCi0rKysgYi9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jCi1AQCAtMSw0ICsxLDUgQEAKLS0vKiBHZW5lcmF0ZWQgYnkgcmUyYyAwLjE1LjMgb24gVHVlIEp1bCAgNCAyMToxNToxNyAyMDE3ICovCi0rLyogR2VuZXJhdGVkIGJ5IHJlMmMgMC4xNS4zIG9uIFdlZCBOb3YgMjIgMjE6MTQ6NDcgMjAxNyAqLwotKyNsaW5lIDEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIC8qCi0gICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCi0gICoKLUBAIC04MzcsOSArODM4LDExIEBAIHN0YXRpYyBpbnQgc2NhbihTY2FubmVyICpzLCB0aW1lbGliX3R6X2dldF93cmFwcGVyIHR6X2dldF93cmFwcGVyKQotIHN0ZDoKLSAJcy0+dG9rID0gY3Vyc29yOwotIAlzLT5sZW4gPSAwOwotKyNsaW5lIDk2NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCi0gCi0gCi0rI2xpbmUgODQ2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHsKLSAJWVlDVFlQRSB5eWNoOwotIAl1bnNpZ25lZCBpbnQgeXlhY2NlcHQgPSAwOwotQEAgLTk2MiwxOCArOTY1LDE5IEBAIHl5MjoKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNjU7Ci0tCQkJZ290byB5eTE1MjE7Ci0rCQkJZ290byB5eTE1MjM7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnZCcpIHsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjU7Ci0gCQkJaWYgKHl5Y2ggPj0gJ2EnKSBnb3RvIHl5MTcwOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTMwOwotKwkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MzI7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcwOwotIAkJfQotIAl9Ci0geXkzOgotKyNsaW5lIDE2NzMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgdHpfbm90X2ZvdW5kOwotIAkJREVCVUdfT1VUUFVUKCJ0emNvcnJlY3Rpb24gfCB0eiIpOwotQEAgLTk4Niw2ICs5OTAsNyBAQCB5eTM6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1RJTUVaT05FOwotIAl9Ci0rI2xpbmUgOTk0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnRScpIHsKLUBAIC05OTUsNyArMTAwMCw3IEBAIHl5NDoKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNjU7Ci0tCQkJZ290byB5eTE1MjE7Ci0rCQkJZ290byB5eTE1MjM7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnZCcpIHsKLUBAIC0xMDAzLDcgKzEwMDgsNyBAQCB5eTQ6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY1OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTIxOwotKwkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MjM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY1OwotIAkJCWdvdG8geXkzOwotIAkJfQotQEAgLTEwMTcsMTIgKzEwMjIsMTIgQEAgeXk1OgotIAkJCWdvdG8geXkxNjU7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdIJykgewotLQkJCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNDkyOwotKwkJCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNDk0OwotIAkJCQlnb3RvIHl5MTY1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdJJykgZ290byB5eTE0OTM7Ci0rCQkJCWlmICh5eWNoIDw9ICdJJykgZ290byB5eTE0OTU7Ci0gCQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE2NTsKLS0JCQkJZ290byB5eTE0OTE7Ci0rCQkJCWdvdG8geXkxNDkzOwotIAkJCX0KLSAJCX0KLSAJfSBlbHNlIHsKLUBAIC0xMDMxLDE1ICsxMDM2LDE1IEBAIHl5NToKLSAJCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA9PSAnZScpIGdvdG8geXkxNTA4OwotKwkJCQlpZiAoeXljaCA9PSAnZScpIGdvdG8geXkxNTEwOwotIAkJCQlnb3RvIHl5MTcwOwotIAkJCX0KLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ24nKSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE1MDk7Ci0rCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE1MTE7Ci0gCQkJCWdvdG8geXkxNzA7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTUwNzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTUwOTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcwOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci1AQCAtMTA1NCwxMiArMTA1OSwxMiBAQCB5eTY6Ci0gCQkJZ290byB5eTE2NTsKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0gnKSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0OTI7Ci0rCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0OTQ7Ci0gCQkJCWdvdG8geXkxNjU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ0knKSBnb3RvIHl5MTQ5MzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ0knKSBnb3RvIHl5MTQ5NTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTY1OwotLQkJCQlnb3RvIHl5MTQ5MTsKLSsJCQkJZ290byB5eTE0OTM7Ci0gCQkJfQotIAkJfQotIAl9IGVsc2UgewotQEAgLTEwNjgsMTUgKzEwNzMsMTUgQEAgeXk2OgotIAkJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjU7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoID09ICdlJykgZ290byB5eTE0OTI7Ci0rCQkJCWlmICh5eWNoID09ICdlJykgZ290byB5eTE0OTQ7Ci0gCQkJCWdvdG8geXkxNjU7Ci0gCQkJfQotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnbicpIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTQ5MzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTQ5NTsKLSAJCQkJZ290byB5eTE2NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNDkxOwotKwkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNDkzOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjU7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLUBAIC0xMDg4LDI0ICsxMDkzLDI0IEBAIHl5NzoKLSAJCWlmICh5eWNoIDw9ICdBJykgewotIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotLQkJCWdvdG8geXkxNDYxOwotKwkJCWdvdG8geXkxNDYzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxNDYyOwotKwkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTE0NjQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTY1OwotLQkJCWdvdG8geXkxNDYzOwotKwkJCWdvdG8geXkxNDY1OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2gnKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY1OwotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ3NjsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDc4OwotIAkJCWdvdG8geXkxNzA7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICduJykgewotLQkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDc3OwotKwkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDc5OwotIAkJCQlnb3RvIHl5MTcwOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0Nzg7Ci0rCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0ODA7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MDsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotQEAgLTExMTcsMjQgKzExMjIsMjQgQEAgeXk4OgotIAkJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0gCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0tCQkJZ290byB5eTE0NjE7Ci0rCQkJZ290byB5eTE0NjM7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTE0NjI7Ci0rCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQ2NDsKLSAJCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNjU7Ci0tCQkJZ290byB5eTE0NjM7Ci0rCQkJZ290byB5eTE0NjU7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnaCcpIHsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjU7Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLS0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDYxOwotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NjM7Ci0gCQkJZ290byB5eTE2NTsKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ24nKSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0NjI7Ci0rCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0NjQ7Ci0gCQkJCWdvdG8geXkxNjU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQ2MzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQ2NTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci1AQCAtMTE0NiwxNSArMTE1MSwxNSBAQCB5eTk6Ci0gCXN3aXRjaCAoeXljaCkgewotIAljYXNlICcpJzoJZ290byB5eTE2NDsKLSAJY2FzZSAnMCc6Ci0tCWNhc2UgJzEnOglnb3RvIHl5MTM5MTsKLS0JY2FzZSAnMic6CWdvdG8geXkxMzkyOwotKwljYXNlICcxJzoJZ290byB5eTEzOTM7Ci0rCWNhc2UgJzInOglnb3RvIHl5MTM5NDsKLSAJY2FzZSAnMyc6Ci0gCWNhc2UgJzQnOgotIAljYXNlICc1JzoKLSAJY2FzZSAnNic6Ci0gCWNhc2UgJzcnOgotIAljYXNlICc4JzoKLS0JY2FzZSAnOSc6CWdvdG8geXkxMzkzOwotKwljYXNlICc5JzoJZ290byB5eTEzOTU7Ci0gCWNhc2UgJ0EnOgotIAljYXNlICdCJzoKLSAJY2FzZSAnQyc6Ci1AQCAtMTE3NiwxMSArMTE4MSwxMSBAQCB5eTk6Ci0gCWNhc2UgJ1gnOgotIAljYXNlICdZJzoKLSAJY2FzZSAnWic6CWdvdG8geXkxNjU7Ci0tCWNhc2UgJ0UnOglnb3RvIHl5MTM4NjsKLS0JY2FzZSAnSCc6CWdvdG8geXkxMzg3OwotLQljYXNlICdPJzoJZ290byB5eTEzODg7Ci0tCWNhc2UgJ1UnOglnb3RvIHl5MTM4OTsKLS0JY2FzZSAnVyc6CWdvdG8geXkxMzkwOwotKwljYXNlICdFJzoJZ290byB5eTEzODg7Ci0rCWNhc2UgJ0gnOglnb3RvIHl5MTM4OTsKLSsJY2FzZSAnTyc6CWdvdG8geXkxMzkwOwotKwljYXNlICdVJzoJZ290byB5eTEzOTE7Ci0rCWNhc2UgJ1cnOglnb3RvIHl5MTM5MjsKLSAJY2FzZSAnYSc6Ci0gCWNhc2UgJ2InOgotIAljYXNlICdjJzoKLUBAIC0xMjAyLDExICsxMjA3LDExIEBAIHl5OToKLSAJY2FzZSAneCc6Ci0gCWNhc2UgJ3knOgotIAljYXNlICd6JzoJZ290byB5eTE3MDsKLS0JY2FzZSAnZSc6CWdvdG8geXkxNDI5OwotLQljYXNlICdoJzoJZ290byB5eTE0MzA7Ci0tCWNhc2UgJ28nOglnb3RvIHl5MTQzMTsKLS0JY2FzZSAndSc6CWdvdG8geXkxNDMyOwotLQljYXNlICd3JzoJZ290byB5eTE0MzM7Ci0rCWNhc2UgJ2UnOglnb3RvIHl5MTQzMTsKLSsJY2FzZSAnaCc6CWdvdG8geXkxNDMyOwotKwljYXNlICdvJzoJZ290byB5eTE0MzM7Ci0rCWNhc2UgJ3UnOglnb3RvIHl5MTQzNDsKLSsJY2FzZSAndyc6CWdvdG8geXkxNDM1OwotIAlkZWZhdWx0Oglnb3RvIHl5MzsKLSAJfQotIHl5MTA6Ci1AQCAtMTIxNSwxNSArMTIyMCwxNSBAQCB5eTEwOgotIAlzd2l0Y2ggKHl5Y2gpIHsKLSAJY2FzZSAnKSc6CWdvdG8geXkxNjQ7Ci0gCWNhc2UgJzAnOgotLQljYXNlICcxJzoJZ290byB5eTEzOTE7Ci0tCWNhc2UgJzInOglnb3RvIHl5MTM5MjsKLSsJY2FzZSAnMSc6CWdvdG8geXkxMzkzOwotKwljYXNlICcyJzoJZ290byB5eTEzOTQ7Ci0gCWNhc2UgJzMnOgotIAljYXNlICc0JzoKLSAJY2FzZSAnNSc6Ci0gCWNhc2UgJzYnOgotIAljYXNlICc3JzoKLSAJY2FzZSAnOCc6Ci0tCWNhc2UgJzknOglnb3RvIHl5MTM5MzsKLSsJY2FzZSAnOSc6CWdvdG8geXkxMzk1OwotIAljYXNlICdBJzoKLSAJY2FzZSAnQic6Ci0gCWNhc2UgJ0MnOgotQEAgLTEyNjcsMjggKzEyNzIsMzAgQEAgeXkxMDoKLSAJY2FzZSAneSc6Ci0gCWNhc2UgJ3onOglnb3RvIHl5MTY1OwotIAljYXNlICdFJzoKLS0JY2FzZSAnZSc6CWdvdG8geXkxMzg2OwotKwljYXNlICdlJzoJZ290byB5eTEzODg7Ci0gCWNhc2UgJ0gnOgotLQljYXNlICdoJzoJZ290byB5eTEzODc7Ci0rCWNhc2UgJ2gnOglnb3RvIHl5MTM4OTsKLSAJY2FzZSAnTyc6Ci0tCWNhc2UgJ28nOglnb3RvIHl5MTM4ODsKLSsJY2FzZSAnbyc6CWdvdG8geXkxMzkwOwotIAljYXNlICdVJzoKLS0JY2FzZSAndSc6CWdvdG8geXkxMzg5OwotKwljYXNlICd1JzoJZ290byB5eTEzOTE7Ci0gCWNhc2UgJ1cnOgotLQljYXNlICd3JzoJZ290byB5eTEzOTA7Ci0rCWNhc2UgJ3cnOglnb3RvIHl5MTM5MjsKLSAJZGVmYXVsdDoJZ290byB5eTM7Ci0gCX0KLSB5eTExOgotIAl5eWFjY2VwdCA9IDE7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0tCWlmICh5eWNoID09ICctJykgZ290byB5eTEzNzQ7Ci0rCWlmICh5eWNoID09ICctJykgZ290byB5eTEzNzY7Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEyOwotLQlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzc1OwotKwlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzc3OwotIHl5MTI6Ci0rI2xpbmUgMTc2OCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCWFkZF9lcnJvcihzLCAiVW5leHBlY3RlZCBjaGFyYWN0ZXIiKTsKLSAJCWdvdG8gc3RkOwotIAl9Ci0rI2xpbmUgMTI5OSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTEzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdSJykgewotQEAgLTEyOTksMTYgKzEzMDYsMTYgQEAgeXkxMzoKLSAJCQl9IGVsc2UgewotIAkJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotIAkJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNjU7Ci0tCQkJCWdvdG8geXkxMzEwOwotKwkJCQlnb3RvIHl5MTMxMTsKLSAJCQl9Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdOJykgewotLQkJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxMzExOwotKwkJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxMzEyOwotIAkJCQlnb3RvIHl5MTY1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTI7Ci0rCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTM7Ci0gCQkJCWlmICh5eWNoIDw9ICdRJykgZ290byB5eTE2NTsKLS0JCQkJZ290byB5eTEzMTM7Ci0rCQkJCWdvdG8geXkxMzE0OwotIAkJCX0KLSAJCX0KLSAJfSBlbHNlIHsKLUBAIC0xMzE4LDE2ICsxMzI1LDE2IEBAIHl5MTM6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzA7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTM1MTsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTM1MzsKLSAJCQkJaWYgKHl5Y2ggPD0gJ2gnKSBnb3RvIHl5MTcwOwotLQkJCQlnb3RvIHl5MTM1MjsKLSsJCQkJZ290byB5eTEzNTQ7Ci0gCQkJfQotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAncScpIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTM1MzsKLSsJCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTM1NTsKLSAJCQkJZ290byB5eTE3MDsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzU0OwotKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzU2OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzA7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLUBAIC0xMzQzLDE2ICsxMzUwLDE2IEBAIHl5MTQ6Ci0gCQkJfSBlbHNlIHsKLSAJCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKLSAJCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTY1OwotLQkJCQlnb3RvIHl5MTMxMDsKLSsJCQkJZ290byB5eTEzMTE7Ci0gCQkJfQotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnTicpIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTMxMTsKLSsJCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTMxMjsKLSAJCQkJZ290byB5eTE2NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxMzEyOwotKwkJCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxMzEzOwotIAkJCQlpZiAoeXljaCA8PSAnUScpIGdvdG8geXkxNjU7Ci0tCQkJCWdvdG8geXkxMzEzOwotKwkJCQlnb3RvIHl5MTMxNDsKLSAJCQl9Ci0gCQl9Ci0gCX0gZWxzZSB7Ci1AQCAtMTM2MiwxNiArMTM2OSwxNiBAQCB5eTE0OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTY1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTEzMTA7Ci0rCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTEzMTE7Ci0gCQkJCWlmICh5eWNoIDw9ICdoJykgZ290byB5eTE2NTsKLS0JCQkJZ290byB5eTEzMTE7Ci0rCQkJCWdvdG8geXkxMzEyOwotIAkJCX0KLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3EnKSB7Ci0tCQkJCWlmICh5eWNoID09ICdvJykgZ290byB5eTEzMTI7Ci0rCQkJCWlmICh5eWNoID09ICdvJykgZ290byB5eTEzMTM7Ci0gCQkJCWdvdG8geXkxNjU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTMxMzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTMxNDsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci1AQCAtMTM4MiwxMyArMTM4OSwxMyBAQCB5eTE1OgotIAlpZiAoeXljaCA8PSAnQScpIHsKLSAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0tCQlnb3RvIHl5MTI5NjsKLSsJCWdvdG8geXkxMjk3OwotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY1OwotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzA3OwotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMDg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcwOwotIAkJCWdvdG8geXkzOwotIAkJfQotQEAgLTEzOTgsMTMgKzE0MDUsMTMgQEAgeXkxNjoKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotLQkJZ290byB5eTEyOTY7Ci0rCQlnb3RvIHl5MTI5NzsKLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdgJykgewotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NTsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTI5NjsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjk3OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NTsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLUBAIC0xNDIwLDcgKzE0MjcsNyBAQCB5eTE3OgotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NTsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTI5MzsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjk0OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MDsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLUBAIC0yNDk1LDE4ICsyNTAyLDIyIEBAIHl5NDg6Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTQ5OwotIAlpZiAoeXljaCA8PSAnOScpIGdvdG8geXk1NDsKLSB5eTQ5OgotKyNsaW5lIDE3NTcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlnb3RvIHN0ZDsKLSAJfQotKyNsaW5lIDI1MTAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk1MDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlnb3RvIHl5NDk7Ci0geXk1MToKLSAJKytZWUNVUlNPUjsKLSsjbGluZSAxNzYyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJcy0+cG9zID0gY3Vyc29yOyBzLT5saW5lKys7Ci0gCQlnb3RvIHN0ZDsKLSAJfQotKyNsaW5lIDI1MjEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk1MzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlnb3RvIHl5MTI7Ci1AQCAtMjY5MywyMyArMjcwNCwyMyBAQCB5eTU2OgotIAkJCQkJfQotIAkJCQl9IGVsc2UgewotIAkJCQkJaWYgKHl5YWNjZXB0ID09IDI4KSB7Ci0tCQkJCQkJZ290byB5eTEzNzc7Ci0rCQkJCQkJZ290byB5eTEzNzk7Ci0gCQkJCQl9IGVsc2UgewotLQkJCQkJCWdvdG8geXkxNDE1OwotKwkJCQkJCWdvdG8geXkxNDE3OwotIAkJCQkJfQotIAkJCQl9Ci0gCQkJfSBlbHNlIHsKLSAJCQkJaWYgKHl5YWNjZXB0IDw9IDMxKSB7Ci0gCQkJCQlpZiAoeXlhY2NlcHQgPT0gMzApIHsKLS0JCQkJCQlnb3RvIHl5MTQxODsKLSsJCQkJCQlnb3RvIHl5MTQyMDsKLSAJCQkJCX0gZWxzZSB7Ci0tCQkJCQkJZ290byB5eTE0OTg7Ci0rCQkJCQkJZ290byB5eTE1MDA7Ci0gCQkJCQl9Ci0gCQkJCX0gZWxzZSB7Ci0gCQkJCQlpZiAoeXlhY2NlcHQgPT0gMzIpIHsKLS0JCQkJCQlnb3RvIHl5MTUwNjsKLSsJCQkJCQlnb3RvIHl5MTUwODsKLSAJCQkJCX0gZWxzZSB7Ci0tCQkJCQkJZ290byB5eTE1Mjk7Ci0rCQkJCQkJZ290byB5eTE1MzE7Ci0gCQkJCQl9Ci0gCQkJCX0KLSAJCQl9Ci1AQCAtMjkyMCw2ICsyOTMxLDcgQEAgeXk3MzoKLSAJaWYgKHl5Y2ggPT0gJ1MnKSBnb3RvIHl5NzU7Ci0gCWlmICh5eWNoID09ICdzJykgZ290byB5eTc1OwotIHl5NzQ6Ci0rI2xpbmUgMTc0MSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCXRpbWVsaWJfdWxsIGk7Ci0gCQlERUJVR19PVVRQVVQoInJlbGF0aXZlIik7Ci1AQCAtMjkzNCw2ICsyOTQ2LDcgQEAgeXk3NDoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7Ci0gCX0KLSsjbGluZSAyOTUwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NzU6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPT0gJ0QnKSBnb3RvIHl5NzY7Ci1AQCAtMzcxOSw2ICszNzMyLDcgQEAgeXkxOTA6Ci0gCQl9Ci0gCX0KLSB5eTE5MToKLSsjbGluZSAxNjA0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJY29uc3QgdGltZWxpYl9yZWx1bml0KiByZWx1bml0OwotIAkJREVCVUdfT1VUUFVUKCJkYXl0ZXh0Iik7Ci1AQCAtMzczNSw2ICszNzQ5LDcgQEAgeXkxOTE6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1dFRUtEQVk7Ci0gCX0KLSsjbGluZSAzNzUzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5MTkyOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdLJykgewotQEAgLTQyMjcsNiArNDI0Miw3IEBAIHl5MjE3OgotIAkJfQotIAl9Ci0geXkyMTg6Ci0rI2xpbmUgMTY2MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgibW9udGh0ZXh0Iik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtNDIzNSw2ICs0MjUxLDcgQEAgeXkyMTg6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0RBVEVfVEVYVDsKLSAJfQotKyNsaW5lIDQyNTUgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXkyMTk6Ci0gCSsrWVlDVVJTT1I7Ci0gCWlmICgoWVlMSU1JVCAtIFlZQ1VSU09SKSA8IDIzKSBZWUZJTEwoMjMpOwotQEAgLTQ0NjksNiArNDQ4Niw3IEBAIHl5MjMxOgotIAlpZiAoeXljaCA9PSAndCcpIGdvdG8geXkzMTk7Ci0gCWdvdG8geXkyMzc7Ci0geXkyMzI6Ci0rI2xpbmUgMTQwOSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCWludCBsZW5ndGggPSAwOwotIAkJREVCVUdfT1VUUFVUKCJkYXRldGV4dHVhbCB8IGRhdGVub3llYXIiKTsKLUBAIC00NDgxLDYgKzQ0OTksNyBAQCB5eTIzMjoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfREFURV9URVhUOwotIAl9Ci0rI2xpbmUgNDUwMyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTIzMzoKLSAJeXlhY2NlcHQgPSA2OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTQ1OTMsNiArNDYxMiw3IEBAIHl5MjQ1OgotIAkJaWYgKHl5Y2ggPD0gJzonKSBnb3RvIHl5MjQ4OwotIAl9Ci0geXkyNDY6Ci0rI2xpbmUgMTcxMSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCWludCB0el9ub3RfZm91bmQ7Ci0gCQlERUJVR19PVVRQVVQoImRhdGVzaG9ydHdpdGh0aW1lc2hvcnQgfCBkYXRlc2hvcnR3aXRodGltZWxvbmcgfCBkYXRlc2hvcnR3aXRodGltZWxvbmd0eiIpOwotQEAgLTQ2MjEsNiArNDY0MSw3IEBAIHl5MjQ2OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9TSE9SVERBVEVfV0lUSF9USU1FOwotIAl9Ci0rI2xpbmUgNDY0NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTI0NzoKLSAJeXlhY2NlcHQgPSA3OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTQ4OTMsNiArNDkxNCw3IEBAIHl5MjY5OgotIAl9Ci0geXkyNzA6Ci0gCSsrWVlDVVJTT1I7Ci0rI2xpbmUgMTY4NyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgiZGF0ZXNob3J0d2l0aHRpbWVzaG9ydDEyIHwgZGF0ZXNob3J0d2l0aHRpbWVsb25nMTIiKTsKLSAJCVRJTUVMSUJfSU5JVDsKLUBAIC00OTE1LDYgKzQ5MzcsNyBAQCB5eTI3MDoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfU0hPUlREQVRFX1dJVEhfVElNRTsKLSAJfQotKyNsaW5lIDQ5NDEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXkyNzI6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gMHgxRikgewotQEAgLTU0NzAsNiArNTQ5Myw3IEBAIHl5MzIwOgotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKLSAJaWYgKHl5Y2ggPj0gJzonKSBnb3RvIHl5NTY7Ci0gCSsrWVlDVVJTT1I7Ci0rI2xpbmUgMTM4MSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCWludCBsZW5ndGggPSAwOwotIAkJREVCVUdfT1VUUFVUKCJkYXRlbm9kYXkiKTsKLUBAIC01NDgyLDYgKzU1MDYsNyBAQCB5eTMyMDoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfREFURV9OT19EQVk7Ci0gCX0KLSsjbGluZSA1NTEwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5MzIzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICc5JykgewotQEAgLTU3MDQsNiArNTcyOSw3IEBAIHl5MzI3OgotIAlpZiAoKHl5Y2ggPSAqWVlDVVJTT1IpIDw9ICcvJykgZ290byB5eTMzMDsKLSAJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MzMxOwotIHl5MzMwOgotKyNsaW5lIDE1MjUgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgbGVuZ3RoID0gMDsKLSAJCURFQlVHX09VVFBVVCgicGd0ZXh0c2hvcnQiKTsKLUBAIC01NzE2LDYgKzU3NDIsNyBAQCB5eTMzMDoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfUEdfVEVYVDsKLSAJfQotKyNsaW5lIDU3NDYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXkzMzE6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MzMwOwotQEAgLTYyNzAsNiArNjI5Nyw3IEBAIHl5MzU2OgotIAkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OwotIAl9Ci0geXkzNTc6Ci0rI2xpbmUgMTU4MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgiYWdvIik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtNjI4OSw2ICs2MzE3LDcgQEAgeXkzNTc6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0FHTzsKLSAJfQotKyNsaW5lIDYzMjEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXkzNTg6Ci0gCXl5YWNjZXB0ID0gNTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLUBAIC04MDA5LDYgKzgwMzgsNyBAQCB5eTQxNzoKLSB5eTQxODoKLSAJKytZWUNVUlNPUjsKLSB5eTQxOToKLSsjbGluZSAxMjg2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJpc284NjAxZGF0ZTQgfCBpc284NjAxZGF0ZTIgfCBpc284NjAxZGF0ZXNsYXNoIHwgZGF0ZXNsYXNoIik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtODAxOSw2ICs4MDQ5LDcgQEAgeXk0MTk6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0lTT19EQVRFOwotIAl9Ci0rI2xpbmUgODA1MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTQyMDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTg2NDEsNiArODY3Miw3IEBAIHl5NDM5OgotIAkJfQotIAl9Ci0geXk0NDA6Ci0rI2xpbmUgMTQyMyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgiZGF0ZW5veWVhcnJldiIpOwotIAkJVElNRUxJQl9JTklUOwotQEAgLTg2NTEsNiArODY4Myw3IEBAIHl5NDQwOgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9EQVRFX1RFWFQ7Ci0gCX0KLSsjbGluZSA4Njg3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NDQxOgotIAl5eWFjY2VwdCA9IDk7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci1AQCAtODc3OCw2ICs4ODExLDcgQEAgeXk0NTA6Ci0gCX0KLSB5eTQ1MjoKLSAJKytZWUNVUlNPUjsKLSsjbGluZSAxMTQxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJ0aW1ldGlueTEyIHwgdGltZXNob3J0MTIgfCB0aW1lbG9uZzEyIik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtODc5Myw2ICs4ODI3LDcgQEAgeXk0NTI6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1RJTUUxMjsKLSAJfQotKyNsaW5lIDg4MzEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk0NTQ6Ci0gCXl5YWNjZXB0ID0gMTA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci1AQCAtODgwMyw2ICs4ODM4LDcgQEAgeXk0NTQ6Ci0gCQlpZiAoeXljaCA8PSAnOicpIGdvdG8geXk0NTc7Ci0gCX0KLSB5eTQ1NToKLSsjbGluZSAxMTc4ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJaW50IHR6X25vdF9mb3VuZDsKLSAJCURFQlVHX09VVFBVVCgidGltZXNob3J0MjQgfCB0aW1lbG9uZzI0IHwgaXNvODYwMWxvbmciKTsKLUBAIC04ODI3LDYgKzg4NjMsNyBAQCB5eTQ1NToKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfVElNRTI0X1dJVEhfWk9ORTsKLSAJfQotKyNsaW5lIDg4NjcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk0NTY6Ci0gCXl5YWNjZXB0ID0gMTA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci1AQCAtOTEwMyw2ICs5MTQwLDcgQEAgeXk0ODU6Ci0gCX0KLSB5eTQ4NzoKLSAJKytZWUNVUlNPUjsKLSsjbGluZSAxMTU4ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJtc3NxbHRpbWUiKTsKLSAJCVRJTUVMSUJfSU5JVDsKLUBAIC05MTIxLDYgKzkxNTksNyBAQCB5eTQ4NzoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfVElNRTI0X1dJVEhfWk9ORTsKLSAJfQotKyNsaW5lIDkxNjMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk0ODk6Ci0gCXl5YWNjZXB0ID0gMTA7Ci0gCVlZTUFSS0VSID0gKytZWUNVUlNPUjsKLUBAIC05MjE1LDYgKzkyNTQsNyBAQCB5eTQ5ODoKLSAJaWYgKCh5eWNoID0gKllZQ1VSU09SKSA8PSAnLycpIGdvdG8geXk0OTk7Ci0gCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTUwNTsKLSB5eTQ5OToKLSsjbGluZSAxMzQwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJaW50IGxlbmd0aCA9IDA7Ci0gCQlERUJVR19PVVRQVVQoImRhdGVmdWxsIik7Ci1AQCAtOTIyOCw2ICs5MjY4LDcgQEAgeXk0OTk6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0RBVEVfRlVMTDsKLSAJfQotKyNsaW5lIDkyNzIgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk1MDA6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPT0gJ00nKSBnb3RvIHl5NTAxOwotQEAgLTk4OTEsNiArOTkzMiw3IEBAIHl5NTY5OgotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKLSAJaWYgKHl5Y2ggPj0gJzonKSBnb3RvIHl5NTY7Ci0gCSsrWVlDVVJTT1I7Ci0rI2xpbmUgMTM1NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgicG9pbnRlZCBkYXRlIFlZWVkiKTsKLSAJCVRJTUVMSUJfSU5JVDsKLUBAIC05OTAxLDYgKzk5NDMsNyBAQCB5eTU2OToKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfREFURV9GVUxMX1BPSU5URUQ7Ci0gCX0KLSsjbGluZSA5OTQ3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NTcyOgotIAl5eWFjY2VwdCA9IDEwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTk5MzEsNiArOTk3NCw3IEBAIHl5NTc1OgotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NzY7Ci0gCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTU2OTsKLSB5eTU3NjoKLSsjbGluZSAxMzY3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJaW50IGxlbmd0aCA9IDA7Ci0gCQlERUJVR19PVVRQVVQoInBvaW50ZWQgZGF0ZSBZWSIpOwotQEAgLTk5NDMsNiArOTk4Nyw3IEBAIHl5NTc2OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9EQVRFX0ZVTExfUE9JTlRFRDsKLSAJfQotKyNsaW5lIDk5OTEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk1Nzc6Ci0gCXl5YWNjZXB0ID0gMTA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci1AQCAtMTA1MzgsNiArMTA1ODMsNyBAQCB5eTYyMDoKLSAJCX0KLSAJfQotIHl5NjIxOgotKyNsaW5lIDEzMjYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgbGVuZ3RoID0gMDsKLSAJCURFQlVHX09VVFBVVCgiZ251ZGF0ZXNob3J0Iik7Ci1AQCAtMTA1NTAsNiArMTA1OTYsNyBAQCB5eTYyMToKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfSVNPX0RBVEU7Ci0gCX0KLSsjbGluZSAxMDYwMCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTYyMjoKLSAJeXlhY2NlcHQgPSAxMjsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLUBAIC0xMDY0NSw2ICsxMDY5Miw3IEBAIHl5NjMwOgotIAkJfQotIAl9Ci0geXk2MzE6Ci0rI2xpbmUgMTI3MCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCWludCBsZW5ndGggPSAwOwotIAkJREVCVUdfT1VUUFVUKCJhbWVyaWNhbnNob3J0IHwgYW1lcmljYW4iKTsKLUBAIC0xMDY1OSw2ICsxMDcwNyw3IEBAIHl5NjMxOgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9BTUVSSUNBTjsKLSAJfQotKyNsaW5lIDEwNzExICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NjMyOgotIAl5eWFjY2VwdCA9IDEzOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTEwODU3LDYgKzEwOTA2LDcgQEAgeXk2NjQ6Ci0gCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTY2NzsKLSAJaWYgKHl5Y2ggPD0gJzonKSBnb3RvIHl5NjY4OwotIHl5NjY1OgotKyNsaW5lIDE1NTMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgdHpfbm90X2ZvdW5kOwotIAkJREVCVUdfT1VUUFVUKCJjbGYiKTsKLUBAIC0xMDg3Niw2ICsxMDkyNiw3IEBAIHl5NjY1OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9DTEY7Ci0gCX0KLSsjbGluZSAxMDkzMCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTY2NjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnNScpIHsKLUBAIC0xMTM2Miw2ICsxMTQxMyw3IEBAIHl5NzI3OgotIAkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5NjI3OwotIAl9Ci0geXk3Mjg6Ci0rI2xpbmUgMTI5OCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCWludCBsZW5ndGggPSAwOwotIAkJREVCVUdfT1VUUFVUKCJpc284NjAxZGF0ZTIiKTsKLUBAIC0xMTM3NCw2ICsxMTQyNiw3IEBAIHl5NzI4OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9JU09fREFURTsKLSAJfQotKyNsaW5lIDExNDMwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NzI5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoID09ICdDJykgZ290byB5eTczMDsKLUBAIC0xMTQwNCw2ICsxMTQ1Nyw3IEBAIHl5NzM0OgotIAlpZiAoeXljaCA+PSAnMicpIGdvdG8geXk1NjsKLSB5eTczNToKLSAJKytZWUNVUlNPUjsKLSsjbGluZSAxNTM5ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJaW50IGxlbmd0aCA9IDA7Ci0gCQlERUJVR19PVVRQVVQoInBndGV4dHJldmVyc2UiKTsKLUBAIC0xMTQxNiw2ICsxMTQ3MCw3IEBAIHl5NzM1OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9QR19URVhUOwotIAl9Ci0rI2xpbmUgMTE0NzQgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk3Mzc6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPT0gJ1YnKSBnb3RvIHl5NzMwOwotQEAgLTExNTY4LDYgKzExNjIzLDcgQEAgeXk3NDc6Ci0gCQl9Ci0gCX0KLSB5eTc0ODoKLSsjbGluZSAxNTc0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJ5ZWFyNCIpOwotIAkJVElNRUxJQl9JTklUOwotQEAgLTExNTc1LDYgKzExNjMxLDcgQEAgeXk3NDg6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0NMRjsKLSAJfQotKyNsaW5lIDExNjM1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NzQ5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCXN3aXRjaCAoeXljaCkgewotQEAgLTExNzY5LDYgKzExODI2LDcgQEAgeXk3NTc6Ci0gCQlpZiAoeXljaCA8PSAnWCcpIGdvdG8geXk4NDg7Ci0gCX0KLSB5eTc1ODoKLSsjbGluZSAxMzk1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJaW50IGxlbmd0aCA9IDA7Ci0gCQlERUJVR19PVVRQVVQoImRhdGVub2RheXJldiIpOwotQEAgLTExNzgxLDYgKzExODM5LDcgQEAgeXk3NTg6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0RBVEVfTk9fREFZOwotIAl9Ci0rI2xpbmUgMTE4NDMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk3NTk6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5ODkyOwotQEAgLTExOTgwLDYgKzEyMDM5LDcgQEAgeXk3Nzg6Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTc3OTsKLSAJaWYgKHl5Y2ggPD0gJzcnKSBnb3RvIHl5NzgxOwotIHl5Nzc5OgotKyNsaW5lIDE1MDYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQl0aW1lbGliX3NsbCB3LCBkOwotIAkJREVCVUdfT1VUUFVUKCJpc293ZWVrIik7Ci1AQCAtMTE5OTcsMTIgKzEyMDU3LDE0IEBAIHl5Nzc5OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9JU09fV0VFSzsKLSAJfQotKyNsaW5lIDEyMDYxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NzgwOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OwotIAlpZiAoeXljaCA+PSAnOCcpIGdvdG8geXk1NjsKLSB5eTc4MToKLSAJKytZWUNVUlNPUjsKLSsjbGluZSAxNDg3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJdGltZWxpYl9zbGwgdywgZDsKLSAJCURFQlVHX09VVFBVVCgiaXNvd2Vla2RheSIpOwotQEAgLTEyMDIwLDYgKzEyMDgyLDcgQEAgeXk3ODE6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0lTT19XRUVLOwotIAl9Ci0rI2xpbmUgMTIwODYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk3ODM6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5NjA7Ci1AQCAtMTIwODUsNiArMTIxNDgsNyBAQCB5eTc4NToKLSAJCX0KLSAJfQotIHl5Nzg2OgotKyNsaW5lIDE0NzMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgbGVuZ3RoID0gMDsKLSAJCURFQlVHX09VVFBVVCgicGd5ZG90ZCIpOwotQEAgLTEyMDk3LDYgKzEyMTYxLDcgQEAgeXk3ODY6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1BHX1lFQVJEQVk7Ci0gCX0KLSsjbGluZSAxMjE2NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTc4NzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk2MDsKLUBAIC0xMjE3OCw2ICsxMjI0Myw3IEBAIHl5ODA1OgotIHl5ODA2OgotIAkrK1lZQ1VSU09SOwotIHl5ODA3OgotKyNsaW5lIDE0NDcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgdHpfbm90X2ZvdW5kOwotIAkJREVCVUdfT1VUUFVUKCJ4bWxycGMgfCB4bWxycGNub2NvbG9uIHwgc29hcCB8IHdkZHggfCBleGlmIik7Ci1AQCAtMTIyMDIsNiArMTIyNjgsNyBAQCB5eTgwNzoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfWE1MUlBDX1NPQVA7Ci0gCX0KLSsjbGluZSAxMjI3MiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTgwODoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnMicpIHsKLUBAIC0xMjQ5MCw2ICsxMjU1Nyw3IEBAIHl5ODEyOgotIAkJfQotIAl9Ci0geXk4MTM6Ci0rI2xpbmUgMTQzNSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgiZGF0ZW5vY29sb24iKTsKLSAJCVRJTUVMSUJfSU5JVDsKLUBAIC0xMjUwMCw2ICsxMjU2OCw3IEBAIHl5ODEzOgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9EQVRFX05PQ09MT047Ci0gCX0KLSsjbGluZSAxMjU3MiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTgxNDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnSCcpIHsKLUBAIC0xMzI5Myw2ICsxMzM2Miw3IEBAIHl5OTM3OgotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk5Mzg7Ci0gCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTk2MDsKLSB5eTkzODoKLSsjbGluZSAxMzEyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJaW50IGxlbmd0aCA9IDA7Ci0gCQlERUJVR19PVVRQVVQoImdudWRhdGVzaG9ydGVyIik7Ci1AQCAtMTMzMDUsNiArMTMzNzUsNyBAQCB5eTkzODoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfSVNPX0RBVEU7Ci0gCX0KLSsjbGluZSAxMzM3OSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTkzOToKLSAJeXlhY2NlcHQgPSAyMTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLUBAIC0xNDMwMyw2ICsxNDM3NCw3IEBAIHl5MTAzMDoKLSAJCX0KLSAJfQotIHl5MTAzMjoKLSsjbGluZSAxMjA0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJnbnVub2NvbG9uIik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtMTQzMjQsNiArMTQzOTYsNyBAQCB5eTEwMzI6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0dOVV9OT0NPTE9OOwotIAl9Ci0rI2xpbmUgMTQ0MDAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXkxMDMzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTYwOwotQEAgLTE0NDEzLDYgKzE0NDg2LDcgQEAgeXkxMDM5OgotIAkJfQotIAl9Ci0geXkxMDQwOgotKyNsaW5lIDEyNTAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgdHpfbm90X2ZvdW5kOwotIAkJREVCVUdfT1VUUFVUKCJpc284NjAxbm9jb2xvbiIpOwotQEAgLTE0NDMxLDYgKzE0NTA1LDcgQEAgeXkxMDQwOgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9JU09fTk9DT0xPTjsKLSAJfQotKyNsaW5lIDE0NTA5ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5MTA0MToKLSAJeXlhY2NlcHQgPSAyNDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLUBAIC0xNTM2Miw2ICsxNTQzNyw3IEBAIHl5MTA4MzoKLSAJCX0KLSAJfQotIHl5MTA4NDoKLSsjbGluZSAxNjQ2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJdGltZWxpYl9zbGwgaTsKLSAJCWludCAgICAgICAgIGJlaGF2aW9yID0gMDsKLUBAIC0xNTM3Nyw2ICsxNTQ1Myw3IEBAIHl5MTA4NDoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7Ci0gCX0KLSsjbGluZSAxNTQ1NyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTEwODU6Ci0gCSsrWVlDVVJTT1I7Ci0gCWlmICgoWVlMSU1JVCAtIFlZQ1VSU09SKSA8IDIpIFlZRklMTCgyKTsKLUBAIC0xNTQxOCw2ICsxNTQ5NSw3IEBAIHl5MTA5MToKLSAJaWYgKHl5Y2ggIT0gJ2YnKSBnb3RvIHl5NTY7Ci0geXkxMDkyOgotIAkrK1lZQ1VSU09SOwotKyNsaW5lIDExMTkgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQl0aW1lbGliX3NsbCBpOwotIAkJaW50ICAgICAgICAgYmVoYXZpb3IgPSAwOwotQEAgLTE1NDM4LDYgKzE1NTE2LDcgQEAgeXkxMDkyOgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9XRUVLX0RBWV9PRl9NT05USDsKLSAJfQotKyNsaW5lIDE1NTIwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5MTA5NDoKLSAJeXlhY2NlcHQgPSAyNTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLUBAIC0xNTUzMCw2ICsxNTYwOSw3IEBAIHl5MTEwNzoKLSAJCX0KLSAJfQotIHl5MTEwODoKLSsjbGluZSAxNjIyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJdGltZWxpYl9zbGwgaTsKLSAJCWludCAgICAgICAgIGJlaGF2aW9yID0gMDsKLUBAIC0xNTU1Miw2ICsxNTYzMiw3IEBAIHl5MTEwODoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7Ci0gCX0KLSsjbGluZSAxNTYzNiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTExMDk6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJZ290byB5eTEwODQ7Ci1AQCAtMTgyMDYsMTAgKzE4Mjg3LDI1IEBAIHl5MTI4MToKLSB5eTEyODM6Ci0gCXl5YWNjZXB0ID0gMjc7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0tCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEyODc7Ci0tCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEyODY7Ci0tCWdvdG8geXkxMjg3OwotKwlpZiAoeXljaCA8PSAnQCcpIHsKLSsJCWlmICh5eWNoIDw9IDB4MUYpIHsKLSsJCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTI4NzsKLSsJCX0gZWxzZSB7Ci0rCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI4NzsKLSsJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMjg0OwotKwkJCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEyODY7Ci0rCQl9Ci0rCX0gZWxzZSB7Ci0rCQlpZiAoeXljaCA8PSAnYCcpIHsKLSsJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMjg5OwotKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEyODk7Ci0rCQl9IGVsc2UgewotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyODk7Ci0rCQkJaWYgKHl5Y2ggPT0gJ3AnKSBnb3RvIHl5MTI4OTsKLSsJCX0KLSsJfQotIHl5MTI4NDoKLSsjbGluZSAxMDk2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJiYWNrb2YgfCBmcm9udG9mIik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtMTgyMzEsNjYgKzE4MzI3LDEwNCBAQCB5eTEyODQ6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0xGX0RBWV9PRl9NT05USDsKLSAJfQotKyNsaW5lIDE4MzMxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5MTI4NToKLSAJeXlhY2NlcHQgPSAyNzsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLS0JaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTI4NzsKLS0JaWYgKHl5Y2ggPj0gJzUnKSBnb3RvIHl5MTI4NzsKLSsJaWYgKHl5Y2ggPD0gJ0AnKSB7Ci0rCQlpZiAoeXljaCA8PSAweDFGKSB7Ci0rCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyODc7Ci0rCQkJZ290byB5eTEyODQ7Ci0rCQl9IGVsc2UgewotKwkJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEyODc7Ci0rCQkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTI4NDsKLSsJCQlpZiAoeXljaCA+PSAnNScpIGdvdG8geXkxMjg0OwotKwkJfQotKwl9IGVsc2UgewotKwkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTI4OTsKLSsJCQlpZiAoeXljaCA9PSAnUCcpIGdvdG8geXkxMjg5OwotKwkJCWdvdG8geXkxMjg0OwotKwkJfSBlbHNlIHsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjg5OwotKwkJCWlmICh5eWNoID09ICdwJykgZ290byB5eTEyODk7Ci0rCQkJZ290byB5eTEyODQ7Ci0rCQl9Ci0rCX0KLSB5eTEyODY6Ci0gCXl5YWNjZXB0ID0gMjc7Ci0tCVlZTUFSS0VSID0gKytZWUNVUlNPUjsKLSsJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSsJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0rCQlpZiAoeXljaCA8PSAweDFGKSB7Ci0rCQkJaWYgKHl5Y2ggIT0gJ1x0JykgZ290byB5eTEyODQ7Ci0rCQl9IGVsc2UgewotKwkJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEyODc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTI4NDsKLSsJCQlnb3RvIHl5MTI4OTsKLSsJCX0KLSsJfSBlbHNlIHsKLSsJCWlmICh5eWNoIDw9ICdgJykgewotKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEyODk7Ci0rCQkJZ290byB5eTEyODQ7Ci0rCQl9IGVsc2UgewotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyODk7Ci0rCQkJaWYgKHl5Y2ggPT0gJ3AnKSBnb3RvIHl5MTI4OTsKLSsJCQlnb3RvIHl5MTI4NDsKLSsJCX0KLSsJfQotK3l5MTI4NzoKLSsJKytZWUNVUlNPUjsKLSAJaWYgKChZWUxJTUlUIC0gWVlDVVJTT1IpIDwgNSkgWVlGSUxMKDUpOwotIAl5eWNoID0gKllZQ1VSU09SOwotLXl5MTI4NzoKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0gCQlpZiAoeXljaCA8PSAweDFGKSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyODY7Ci0tCQkJZ290byB5eTEyODQ7Ci0rCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyODc7Ci0rCQkJZ290byB5eTU2OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMjg2OwotLQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTEyODQ7Ci0rCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI4NzsKLSsJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXk1NjsKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdgJykgewotLQkJCWlmICh5eWNoICE9ICdQJykgZ290byB5eTEyODQ7Ci0rCQkJaWYgKHl5Y2ggIT0gJ1AnKSBnb3RvIHl5NTY7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyODg7Ci0tCQkJaWYgKHl5Y2ggIT0gJ3AnKSBnb3RvIHl5MTI4NDsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjg5OwotKwkJCWlmICh5eWNoICE9ICdwJykgZ290byB5eTU2OwotIAkJfQotIAl9Ci0teXkxMjg4OgotK3l5MTI4OToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnTCcpIHsKLSAJCWlmICh5eWNoICE9ICcuJykgZ290byB5eTU2OwotIAl9IGVsc2UgewotLQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTI5MDsKLS0JCWlmICh5eWNoID09ICdtJykgZ290byB5eTEyOTA7Ci0rCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxMjkxOwotKwkJaWYgKHl5Y2ggPT0gJ20nKSBnb3RvIHl5MTI5MTsKLSAJCWdvdG8geXk1NjsKLSAJfQotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdNJykgZ290byB5eTEyOTA7Ci0rCWlmICh5eWNoID09ICdNJykgZ290byB5eTEyOTE7Ci0gCWlmICh5eWNoICE9ICdtJykgZ290byB5eTU2OwotLXl5MTI5MDoKLSt5eTEyOTE6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gMHgxRikgewotLQkJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTEyOTI7Ci0tCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTI5MjsKLSsJCWlmICh5eWNoIDw9IDB4MDApIGdvdG8geXkxMjkzOwotKwkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyOTM7Ci0gCQlnb3RvIHl5NTY7Ci0gCX0gZWxzZSB7Ci0tCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMjkyOwotKwkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI5MzsKLSAJCWlmICh5eWNoICE9ICcuJykgZ290byB5eTU2OwotIAl9Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1x0JykgewotLQkJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTEyOTI7Ci0rCQlpZiAoeXljaCA8PSAweDAwKSBnb3RvIHl5MTI5MzsKLSAJCWlmICh5eWNoIDw9IDB4MDgpIGdvdG8geXk1NjsKLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoICE9ICcgJykgZ290byB5eTU2OwotIAl9Ci0teXkxMjkyOgotK3l5MTI5MzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlnb3RvIHl5MTI4NDsKLS15eTEyOTM6Ci0reXkxMjk0OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdCJykgewotQEAgLTE4MzE0LDEzICsxODQ0OCwxMyBAQCB5eTEyOTM6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzE7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2MnKSBnb3RvIHl5MTI5NDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2MnKSBnb3RvIHl5MTI5NTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEyOTQ6Ci0reXkxMjk1OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdKJykgewotQEAgLTE4MzQ0LDEzICsxODQ3OCwxMyBAQCB5eTEyOTQ6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2snKSBnb3RvIHl5MTI5NTsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2snKSBnb3RvIHl5MTI5NjsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEyOTU6Ci0reXkxMjk2OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICcuJykgewotQEAgLTE4Mzc1LDcgKzE4NTA5LDcgQEAgeXkxMjk1OgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMjk2OgotK3l5MTI5NzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTE4MzkxLDEyICsxODUyNSwxMiBAQCB5eTEyOTY6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY2OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxMjk3OwotKwkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEyOTg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMjk3OgotK3l5MTI5ODoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnVCcpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTE4NDEyLDEyICsxODU0NiwxMiBAQCB5eTEyOTc6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY3OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMjk4OwotKwkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEyOTk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMjk4OgotK3l5MTI5OToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnKCcpIHsKLUBAIC0xODQzOCwxOSArMTg1NzIsMTkgQEAgeXkxMjk4OgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMjk5OgotK3l5MTMwMDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnRCcpIGdvdG8geXkxMzAwOwotKwlpZiAoeXljaCA9PSAnRCcpIGdvdG8geXkxMzAxOwotIAlpZiAoeXljaCAhPSAnZCcpIGdvdG8geXkxMDcwOwotLXl5MTMwMDoKLSt5eTEzMDE6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ0EnKSBnb3RvIHl5MTMwMTsKLSsJaWYgKHl5Y2ggPT0gJ0EnKSBnb3RvIHl5MTMwMjsKLSAJaWYgKHl5Y2ggIT0gJ2EnKSBnb3RvIHl5NTY7Ci0teXkxMzAxOgotK3l5MTMwMjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkxMzAyOwotKwlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkxMzAzOwotIAlpZiAoeXljaCAhPSAneScpIGdvdG8geXk1NjsKLS15eTEzMDI6Ci0reXkxMzAzOgotIAl5eWFjY2VwdCA9IDI1OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUicpIHsKLUBAIC0xODQ2MSwxNCArMTg1OTUsMTUgQEAgeXkxMzAyOgotIAkJZ290byB5eTEwODQ7Ci0gCX0KLSAJeXljaCA9ICorK1lZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnTycpIGdvdG8geXkxMzA0OwotKwlpZiAoeXljaCA9PSAnTycpIGdvdG8geXkxMzA1OwotIAlpZiAoeXljaCAhPSAnbycpIGdvdG8geXk1NjsKLS15eTEzMDQ6Ci0reXkxMzA1OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMDU7Ci0rCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMDY7Ci0gCWlmICh5eWNoICE9ICdmJykgZ290byB5eTU2OwotLXl5MTMwNToKLSt5eTEzMDY6Ci0gCSsrWVlDVVJTT1I7Ci0rI2xpbmUgMTA3OSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgiZmlyc3RkYXlvZiB8IGxhc3RkYXlvZiIpOwotIAkJVElNRUxJQl9JTklUOwotQEAgLTE4NDg0LDcgKzE4NjE5LDggQEAgeXkxMzA1OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9MRl9EQVlfT0ZfTU9OVEg7Ci0gCX0KLS15eTEzMDc6Ci0rI2xpbmUgMTg2MjMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0reXkxMzA4OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdSJykgewotQEAgLTE4NDk5LDcgKzE4NjM1LDcgQEAgeXkxMzA3OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTI5NzsKLSsJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxMjk4OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMTg1MDgsMTMgKzE4NjQ0LDEzIEBAIHl5MTMwNzoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3MTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxMzA4OwotKwkJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxMzA5OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTMwODoKLSt5eTEzMDk6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1MnKSB7Ci1AQCAtMTg1MjksNyArMTg2NjUsNyBAQCB5eTEzMDg6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxMjk4OwotKwkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEyOTk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xODUzOCwyMCArMTg2NzQsMjAgQEAgeXkxMzA4OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMDk7Ci0rCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMTA7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzA5OgotK3l5MTMxMDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnLScpIHsKLSAJCWlmICh5eWNoIDw9ICcgJykgewotIAkJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMDY5OwotIAkJCWlmICh5eWNoIDw9IDB4MUYpIGdvdG8geXkzOwotLQkJCWdvdG8geXkxMjk5OwotKwkJCWdvdG8geXkxMzAwOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJywnKSBnb3RvIHl5MzsKLUBAIC0xODU3Myw3ICsxODcwOSw3IEBAIHl5MTMwOToKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzMTA6Ci0reXkxMzExOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdCJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg1ODIsNyArMTg3MTgsNyBAQCB5eTEzMTA6Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxMzQ2OwotKwkJCWdvdG8geXkxMzQ4OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2EnKSB7Ci1AQCAtMTg1OTAsMzUgKzE4NzI2LDM1IEBAIHl5MTMxMDoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjY7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTEzNDY7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2InKSBnb3RvIHl5MTM0ODsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMTE6Ci0reXkxMzEyOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdSJykgewotIAkJaWYgKHl5Y2ggPD0gJ0AnKSB7Ci0gCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAnRicpIGdvdG8geXkxMzM2OwotKwkJCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMzg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1EnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxMzM1OwotKwkJCWdvdG8geXkxMzM3OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2YnKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OwotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxMzM2OwotKwkJCWdvdG8geXkxMzM4OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAncicpIGdvdG8geXkxMzM1OwotKwkJCWlmICh5eWNoID09ICdyJykgZ290byB5eTEzMzc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzEyOgotK3l5MTMxMzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnVScpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTE4NjI3LDcgKzE4NzYzLDcgQEAgeXkxMzEyOgotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotIAkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE2NjsKLS0JCQlnb3RvIHl5MTMzMjsKLSsJCQlnb3RvIHl5MTMzNDsKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICd0JykgewotQEAgLTE4NjM1LDE5ICsxODc3MSwxOSBAQCB5eTEzMTI6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY2OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAndScpIGdvdG8geXkxMzMyOwotKwkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzMzQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzEzOgotK3l5MTMxNDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnTycpIHsKLSAJCWlmICh5eWNoIDw9ICdAJykgewotIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTMxNTsKLSsJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxMzE2OwotIAkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE2NjsKLSAJCX0KLSAJfSBlbHNlIHsKLUBAIC0xODY1NSwxNCArMTg3OTEsMTQgQEAgeXkxMzEzOgotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWlmICh5eWNoIDw9ICdoJykgZ290byB5eTE2NjsKLS0JCQlnb3RvIHl5MTMxNTsKLSsJCQlnb3RvIHl5MTMxNjsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTMxNDsKLSsJCQlpZiAoeXljaCA9PSAnbycpIGdvdG8geXkxMzE1OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTMxNDoKLSt5eTEzMTU6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ04nKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0xODY3MSw3ICsxODgwNyw3IEBAIHl5MTMxNDoKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxNjc7Ci0tCQkJZ290byB5eTEzMTg7Ci0rCQkJZ290byB5eTEzMTk7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnbScpIHsKLUBAIC0xODY3OSwxMiArMTg4MTUsMTIgQEAgeXkxMzE0OgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTMxODsKLSsJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxMzE5OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTMxNToKLSt5eTEzMTY6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0QnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0xODcwMCwxMiArMTg4MzYsMTIgQEAgeXkxMzE1OgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE5MTsKLSAJCQlnb3RvIHl5MTY3OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxMzE2OwotKwkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTEzMTc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OwotIAkJCWdvdG8geXkxOTE7Ci0gCQl9Ci0gCX0KLS15eTEzMTY6Ci0reXkxMzE3OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdBJykgewotIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotQEAgLTE4NzE1LDEyICsxODg1MSwxMiBAQCB5eTEzMTY6Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzE3OwotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMTg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzE3OgotK3l5MTMxODoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnWScpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTE4NzQyLDcgKzE4ODc4LDcgQEAgeXkxMzE3OgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzE4OgotK3l5MTMxOToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnVCcpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTE4NzU4LDE2ICsxODg5NCwxNiBAQCB5eTEzMTg6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY4OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzE5OwotKwkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMjA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzE5OgotK3l5MTMyMDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnKScpIHsKLS0JCWlmICh5eWNoID09ICcgJykgZ290byB5eTEzMjA7Ci0rCQlpZiAoeXljaCA9PSAnICcpIGdvdG8geXkxMzIxOwotIAkJaWYgKHl5Y2ggPD0gJygnKSBnb3RvIHl5MzsKLSAJCWdvdG8geXkxNjQ7Ci0gCX0gZWxzZSB7Ci1AQCAtMTg3ODAsODggKzE4OTE2LDE0MyBAQCB5eTEzMTk6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMjA6Ci0reXkxMzIxOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzMjE7Ci0rCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzMjI7Ci0gCWlmICh5eWNoICE9ICdvJykgZ290byB5eTU2OwotLXl5MTMyMToKLSt5eTEzMjI6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMyMjsKLSsJaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMyMzsKLSAJaWYgKHl5Y2ggIT0gJ2YnKSBnb3RvIHl5NTY7Ci0teXkxMzIyOgotK3l5MTMyMzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCAhPSAnICcpIGdvdG8geXk1NjsKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKLS0JaWYgKHl5Y2ggPD0gJzEnKSBnb3RvIHl5MTMyNDsKLS0JaWYgKHl5Y2ggPD0gJzInKSBnb3RvIHl5MTMyNTsKLS0JaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTMyNjsKLSsJaWYgKHl5Y2ggPD0gJzEnKSBnb3RvIHl5MTMyNTsKLSsJaWYgKHl5Y2ggPD0gJzInKSBnb3RvIHl5MTMyNjsKLSsJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTMyNzsKLSAJZ290byB5eTU2OwotLXl5MTMyNDoKLS0JeXlhY2NlcHQgPSAyNzsKLS0JeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLS0JaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTMyNzsKLS0JaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTMyNjsKLS0JZ290byB5eTEzMjc7Ci0geXkxMzI1OgotIAl5eWFjY2VwdCA9IDI3OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotLQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMzI3OwotLQlpZiAoeXljaCA+PSAnNScpIGdvdG8geXkxMzI3OwotKwlpZiAoeXljaCA8PSAnQCcpIHsKLSsJCWlmICh5eWNoIDw9IDB4MUYpIHsKLSsJCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTMyODsKLSsJCQlnb3RvIHl5MTI4NDsKLSsJCX0gZWxzZSB7Ci0rCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTMyODsKLSsJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMjg0OwotKwkJCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEzMjc7Ci0rCQkJZ290byB5eTEyODQ7Ci0rCQl9Ci0rCX0gZWxzZSB7Ci0rCQlpZiAoeXljaCA8PSAnYCcpIHsKLSsJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMzMwOwotKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEzMzA7Ci0rCQkJZ290byB5eTEyODQ7Ci0rCQl9IGVsc2UgewotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMzA7Ci0rCQkJaWYgKHl5Y2ggPT0gJ3AnKSBnb3RvIHl5MTMzMDsKLSsJCQlnb3RvIHl5MTI4NDsKLSsJCX0KLSsJfQotIHl5MTMyNjoKLSAJeXlhY2NlcHQgPSAyNzsKLS0JWVlNQVJLRVIgPSArK1lZQ1VSU09SOwotLQlpZiAoKFlZTElNSVQgLSBZWUNVUlNPUikgPCA1KSBZWUZJTEwoNSk7Ci0tCXl5Y2ggPSAqWVlDVVJTT1I7Ci0rCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0rCWlmICh5eWNoIDw9ICdAJykgewotKwkJaWYgKHl5Y2ggPD0gMHgxRikgewotKwkJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMzI4OwotKwkJCWdvdG8geXkxMjg0OwotKwkJfSBlbHNlIHsKLSsJCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMzI4OwotKwkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEyODQ7Ci0rCQkJaWYgKHl5Y2ggPj0gJzUnKSBnb3RvIHl5MTI4NDsKLSsJCX0KLSsJfSBlbHNlIHsKLSsJCWlmICh5eWNoIDw9ICdgJykgewotKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTEzMzA7Ci0rCQkJaWYgKHl5Y2ggPT0gJ1AnKSBnb3RvIHl5MTMzMDsKLSsJCQlnb3RvIHl5MTI4NDsKLSsJCX0gZWxzZSB7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTMzMDsKLSsJCQlpZiAoeXljaCA9PSAncCcpIGdvdG8geXkxMzMwOwotKwkJCWdvdG8geXkxMjg0OwotKwkJfQotKwl9Ci0geXkxMzI3OgotKwl5eWFjY2VwdCA9IDI3OwotKwl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQScpIHsKLSAJCWlmICh5eWNoIDw9IDB4MUYpIHsKLS0JCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTMyNjsKLS0JCQlnb3RvIHl5MTI4NDsKLSsJCQlpZiAoeXljaCAhPSAnXHQnKSBnb3RvIHl5MTI4NDsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTMyNjsKLSsJCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMzI4OwotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTEyODQ7Ci0rCQkJZ290byB5eTEzMzA7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnYCcpIHsKLS0JCQlpZiAoeXljaCAhPSAnUCcpIGdvdG8geXkxMjg0OwotKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEzMzA7Ci0rCQkJZ290byB5eTEyODQ7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMjg7Ci0tCQkJaWYgKHl5Y2ggIT0gJ3AnKSBnb3RvIHl5MTI4NDsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzMwOwotKwkJCWlmICh5eWNoID09ICdwJykgZ290byB5eTEzMzA7Ci0rCQkJZ290byB5eTEyODQ7Ci0gCQl9Ci0gCX0KLSB5eTEzMjg6Ci0rCSsrWVlDVVJTT1I7Ci0rCWlmICgoWVlMSU1JVCAtIFlZQ1VSU09SKSA8IDUpIFlZRklMTCg1KTsKLSsJeXljaCA9ICpZWUNVUlNPUjsKLSsJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0rCQlpZiAoeXljaCA8PSAweDFGKSB7Ci0rCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEzMjg7Ci0rCQkJZ290byB5eTU2OwotKwkJfSBlbHNlIHsKLSsJCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMzI4OwotKwkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTU2OwotKwkJfQotKwl9IGVsc2UgewotKwkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0rCQkJaWYgKHl5Y2ggIT0gJ1AnKSBnb3RvIHl5NTY7Ci0rCQl9IGVsc2UgewotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMzA7Ci0rCQkJaWYgKHl5Y2ggIT0gJ3AnKSBnb3RvIHl5NTY7Ci0rCQl9Ci0rCX0KLSt5eTEzMzA6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0wnKSB7Ci0gCQlpZiAoeXljaCAhPSAnLicpIGdvdG8geXk1NjsKLSAJfSBlbHNlIHsKLS0JCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTEzMzA7Ci0tCQlpZiAoeXljaCA9PSAnbScpIGdvdG8geXkxMzMwOwotKwkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTMzMjsKLSsJCWlmICh5eWNoID09ICdtJykgZ290byB5eTEzMzI7Ci0gCQlnb3RvIHl5NTY7Ci0gCX0KLSAJeXljaCA9ICorK1lZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnTScpIGdvdG8geXkxMzMwOwotKwlpZiAoeXljaCA9PSAnTScpIGdvdG8geXkxMzMyOwotIAlpZiAoeXljaCAhPSAnbScpIGdvdG8geXk1NjsKLS15eTEzMzA6Ci0reXkxMzMyOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9IDB4MUYpIHsKLS0JCWlmICh5eWNoIDw9IDB4MDApIGdvdG8geXkxMjkyOwotLQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyOTI7Ci0rCQlpZiAoeXljaCA8PSAweDAwKSBnb3RvIHl5MTI5MzsKLSsJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMjkzOwotIAkJZ290byB5eTU2OwotIAl9IGVsc2UgewotLQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI5MjsKLSsJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEyOTM7Ci0gCQlpZiAoeXljaCAhPSAnLicpIGdvdG8geXk1NjsKLSAJfQotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdcdCcpIHsKLS0JCWlmICh5eWNoIDw9IDB4MDApIGdvdG8geXkxMjkyOwotKwkJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTEyOTM7Ci0gCQlpZiAoeXljaCA8PSAweDA4KSBnb3RvIHl5NTY7Ci0tCQlnb3RvIHl5MTI5MjsKLSsJCWdvdG8geXkxMjkzOwotIAl9IGVsc2UgewotLQkJaWYgKHl5Y2ggPT0gJyAnKSBnb3RvIHl5MTI5MjsKLSsJCWlmICh5eWNoID09ICcgJykgZ290byB5eTEyOTM7Ci0gCQlnb3RvIHl5NTY7Ci0gCX0KLS15eTEzMzI6Ci0reXkxMzM0OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdSJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg4NzcsMTIgKzE5MDY4LDEyIEBAIHl5MTMzMjoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzMzM7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTMzNTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzM6Ci0reXkxMzM1OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdUJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg4OTgsMTIgKzE5MDg5LDEyIEBAIHl5MTMzMzoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMzQ7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTMzNjsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzQ6Ci0reXkxMzM2OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdIJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg5MjUsNyArMTkxMTYsNyBAQCB5eTEzMzQ6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzU6Ci0reXkxMzM3OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdTJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg5MzQsNyArMTkxMjUsNyBAQCB5eTEzMzU6Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTY3OwotLQkJCWdvdG8geXkxMzM4OwotKwkJCWdvdG8geXkxMzQwOwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ3InKSB7Ci1AQCAtMTg5NDIsMTIgKzE5MTMzLDEyIEBAIHl5MTMzNToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEzMzg7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTM0MDsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzY6Ci0reXkxMzM4OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdUJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg5NjMsMTIgKzE5MTU0LDEyIEBAIHl5MTMzNjoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMzc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTMzOTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzc6Ci0reXkxMzM5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdIJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg5OTAsNyArMTkxODEsNyBAQCB5eTEzMzc6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzg6Ci0reXkxMzQwOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdUJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTkwMDYsMTIgKzE5MTk3LDEyIEBAIHl5MTMzODoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMzk7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM0MTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzk6Ci0reXkxMzQxOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICcoJykgewotQEAgLTE5MDMyLDE5ICsxOTIyMywxOSBAQCB5eTEzMzk6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzNDA6Ci0reXkxMzQyOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdEJykgZ290byB5eTEzNDE7Ci0rCWlmICh5eWNoID09ICdEJykgZ290byB5eTEzNDM7Ci0gCWlmICh5eWNoICE9ICdkJykgZ290byB5eTExOTc7Ci0teXkxMzQxOgotK3l5MTM0MzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxMzQyOwotKwlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxMzQ0OwotIAlpZiAoeXljaCAhPSAnYScpIGdvdG8geXk1NjsKLS15eTEzNDI6Ci0reXkxMzQ0OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdZJykgZ290byB5eTEzNDM7Ci0rCWlmICh5eWNoID09ICdZJykgZ290byB5eTEzNDU7Ci0gCWlmICh5eWNoICE9ICd5JykgZ290byB5eTU2OwotLXl5MTM0MzoKLSt5eTEzNDU6Ci0gCXl5YWNjZXB0ID0gMjU7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdSJykgewotQEAgLTE5MDU1LDE0ICsxOTI0NiwxNCBAQCB5eTEzNDM6Ci0gCQlnb3RvIHl5MTA4NDsKLSAJfQotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzNDU7Ci0rCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzNDc7Ci0gCWlmICh5eWNoICE9ICdvJykgZ290byB5eTU2OwotLXl5MTM0NToKLSt5eTEzNDc6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMwNTsKLS0JaWYgKHl5Y2ggPT0gJ2YnKSBnb3RvIHl5MTMwNTsKLSsJaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMwNjsKLSsJaWYgKHl5Y2ggPT0gJ2YnKSBnb3RvIHl5MTMwNjsKLSAJZ290byB5eTU2OwotLXl5MTM0NjoKLSt5eTEzNDg6Ci0gCXl5YWNjZXB0ID0gNTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJy8nKSB7Ci1AQCAtMTkwOTcsMTMgKzE5Mjg4LDEzIEBAIHl5MTM0NjoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MjE4OwotIAkJCQlnb3RvIHl5MTY3OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNDc7Ci0rCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNDk7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQkJZ290byB5eTIxODsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzNDc6Ci0reXkxMzQ5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdVJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTkxMTksMTIgKzE5MzEwLDEyIEBAIHl5MTM0NzoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNDg7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3UnKSBnb3RvIHl5MTM1MDsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzNDg6Ci0reXkxMzUwOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdBJykgewotIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotQEAgLTE5MTM0LDI3ICsxOTMyNSwyNyBAQCB5eTEzNDg6Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY5OwotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzQ5OwotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzNTE7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY5OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzQ5OgotK3l5MTM1MToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUScpIHsKLSAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJCWdvdG8geXkzOwotIAl9IGVsc2UgewotLQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM1MDsKLSsJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzNTI7Ci0gCQlpZiAoeXljaCAhPSAncicpIGdvdG8geXkzOwotIAl9Ci0teXkxMzUwOgotK3l5MTM1MjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkyMjk7Ci0gCWlmICh5eWNoID09ICd5JykgZ290byB5eTIyOTsKLSAJZ290byB5eTU2OwotLXl5MTM1MToKLSt5eTEzNTM6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci1AQCAtMTkxNjksNyArMTkzNjAsNyBAQCB5eTEzNTE6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnQicpIGdvdG8geXkxMzQ2OwotKwkJCWlmICh5eWNoIDw9ICdCJykgZ290byB5eTEzNDg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTE3OCwxMyArMTkzNjksMTMgQEAgeXkxMzUxOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTcxOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTEzNjk7Ci0rCQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTEzNzE7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzUyOgotK3l5MTM1NDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUScpIHsKLUBAIC0xOTIwMSwxNCArMTkzOTIsMTQgQEAgeXkxMzUyOgotIAkJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxNzI7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMzY7Ci0rCQkJCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMzg7Ci0gCQkJCWdvdG8geXkxNjY7Ci0gCQkJfQotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzMzU7Ci0rCQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzMzc7Ci0gCQkJCWdvdG8geXkxNjY7Ci0gCQkJfSBlbHNlIHsKLSAJCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOwotQEAgLTE5MjE2LDE2ICsxOTQwNywxNiBAQCB5eTEzNTI6Ci0gCQkJfQotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAncScpIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ2YnKSBnb3RvIHl5MTM2NTsKLSsJCQkJaWYgKHl5Y2ggPT0gJ2YnKSBnb3RvIHl5MTM2NzsKLSAJCQkJZ290byB5eTE3MTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzY0OwotKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzY2OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTM1MzoKLSt5eTEzNTU6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1QnKSB7Ci1AQCAtMTkyNDAsNyArMTk0MzEsNyBAQCB5eTEzNTM6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnVScpIGdvdG8geXkxMzMyOwotKwkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTEzMzQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTI0OSwxMyArMTk0NDAsMTMgQEAgeXkxMzUzOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTcxOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNjE7Ci0rCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNjM7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzU0OgotK3l5MTM1NjoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnTicpIHsKLUBAIC0xOTI3MiwxNCArMTk0NjMsMTQgQEAgeXkxMzU0OgotIAkJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxNzI7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTEzMTU7Ci0rCQkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTEzMTY7Ci0gCQkJCWdvdG8geXkxNjY7Ci0gCQkJfQotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTQ7Ci0rCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTU7Ci0gCQkJCWdvdG8geXkxNjY7Ci0gCQkJfSBlbHNlIHsKLSAJCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOwotQEAgLTE5Mjg3LDE2ICsxOTQ3OCwxNiBAQCB5eTEzNTQ6Ci0gCQkJfQotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnbicpIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ2knKSBnb3RvIHl5MTM1NjsKLSsJCQkJaWYgKHl5Y2ggPT0gJ2knKSBnb3RvIHl5MTM1ODsKLSAJCQkJZ290byB5eTE3MTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxMzU1OwotKwkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxMzU3OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTM1NToKLSt5eTEzNTc6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ00nKSB7Ci1AQCAtMTkzMTEsNyArMTk1MDIsNyBAQCB5eTEzNTU6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxMzE4OwotKwkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTEzMTk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTMyMCwxMyArMTk1MTEsMTMgQEAgeXkxMzU1OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTEzNTk7Ci0rCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTEzNjE7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzU2OgotK3l5MTM1ODoKLSAJeXlhY2NlcHQgPSA0OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQycpIHsKLUBAIC0xOTM0MSw3ICsxOTUzMiw3IEBAIHl5MTM1NjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTEzMTY7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTMxNzsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MTkxOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMTkzNTAsMTMgKzE5NTQxLDEzIEBAIHl5MTM1NjoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTEzNTc7Ci0rCQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTEzNTk7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTE5MTsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzNTc6Ci0reXkxMzU5OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdAJykgewotQEAgLTE5MzcwLDE4ICsxOTU2MSwxOCBAQCB5eTEzNTc6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMzE3OwotKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTEzMTg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLS0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzU4OwotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzNjA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzU4OgotK3l5MTM2MDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnWCcpIHsKLUBAIC0xOTQxMSw3ICsxOTYwMiw3IEBAIHl5MTM1ODoKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzNTk6Ci0reXkxMzYxOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdTJykgewotQEAgLTE5NDI2LDcgKzE5NjE3LDcgQEAgeXkxMzU5OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTMxOTsKLSsJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxMzIwOwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMTk0MzUsMTggKzE5NjI2LDE4IEBAIHl5MTM1OToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NjsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzYwOwotKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzYyOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTM2MDoKLSt5eTEzNjI6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJy4nKSB7Ci0gCQlpZiAoeXljaCA8PSAnKCcpIHsKLS0JCQlpZiAoeXljaCA9PSAnICcpIGdvdG8geXkxMzIwOwotKwkJCWlmICh5eWNoID09ICcgJykgZ290byB5eTEzMjE7Ci0gCQkJZ290byB5eTM7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICcpJykgZ290byB5eTE2NDsKLUBAIC0xOTQ2Niw3ICsxOTY1Nyw3IEBAIHl5MTM2MDoKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTM2MToKLSt5eTEzNjM6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1EnKSB7Ci1AQCAtMTk0ODEsNyArMTk2NzIsNyBAQCB5eTEzNjE6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxMzMzOwotKwkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzMzU7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTQ5MCwxMyArMTk2ODEsMTMgQEAgeXkxMzYxOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNjI7Ci0rCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNjQ7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzYyOgotK3l5MTM2NDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLUBAIC0xOTUxMSw3ICsxOTcwMiw3IEBAIHl5MTM2MjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEzMzQ7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTMzNjsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTE5NTIwLDEzICsxOTcxMSwxMyBAQCB5eTEzNjI6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzY7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2MzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2NTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzNjM6Ci0reXkxMzY1OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotQEAgLTE5NTU2LDcgKzE5NzQ3LDcgQEAgeXkxMzYzOgotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTM2NDoKLSt5eTEzNjY6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1InKSB7Ci1AQCAtMTk1NzEsNyArMTk3NjIsNyBAQCB5eTEzNjQ6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxMzM4OwotKwkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTEzNDA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTU4MCwxMyArMTk3NzEsMTMgQEAgeXkxMzY0OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEzNjc7Ci0rCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEzNjk7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzY1OgotK3l5MTM2NzoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLUBAIC0xOTYwMSw3ICsxOTc5Miw3IEBAIHl5MTM2NToKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEzMzc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTMzOTsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTE5NjEwLDEzICsxOTgwMSwxMyBAQCB5eTEzNjU6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2NjsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2ODsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzNjY6Ci0reXkxMzY4OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotQEAgLTE5NjQ2LDcgKzE5ODM3LDcgQEAgeXkxMzY2OgotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTM2NzoKLSt5eTEzNjk6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1MnKSB7Ci1AQCAtMTk2NjEsNyArMTk4NTIsNyBAQCB5eTEzNjc6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxMzM5OwotKwkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEzNDE7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTY3MCwyMCArMTk4NjEsMjAgQEAgeXkxMzY3OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc2OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzNjg7Ci0rCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzNzA7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzY4OgotK3l5MTM3MDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnLScpIHsKLSAJCWlmICh5eWNoIDw9ICcgJykgewotIAkJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMTk2OwotIAkJCWlmICh5eWNoIDw9IDB4MUYpIGdvdG8geXkzOwotLQkJCWdvdG8geXkxMzQwOwotKwkJCWdvdG8geXkxMzQyOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJywnKSBnb3RvIHl5MzsKLUBAIC0xOTcwNSw3ICsxOTg5Niw3IEBAIHl5MTM2ODoKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzNjk6Ci0reXkxMzcxOgotIAl5eWFjY2VwdCA9IDU7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICc5JykgewotQEAgLTE5NzMzLDcgKzE5OTI0LDcgQEAgeXkxMzY5OgotIAkJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkyMTg7Ci0gCQkJCWdvdG8geXkxNjc7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM0NzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM0OTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCQlnb3RvIHl5MjE4OwotIAkJCX0KLUBAIC0xOTc0MywxMyArMTk5MzQsMTMgQEAgeXkxMzY5OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkyMTg7Ci0gCQkJCWdvdG8geXkxNzU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTM3MDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTM3MjsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MjE4OwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTM3MDoKLSt5eTEzNzI6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1QnKSB7Ci1AQCAtMTk3NjQsNyArMTk5NTUsNyBAQCB5eTEzNzA6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnVScpIGdvdG8geXkxMzQ4OwotKwkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTEzNTA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTc3MywxMyArMTk5NjQsMTMgQEAgeXkxMzcwOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc2OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNzE7Ci0rCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNzM7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzcxOgotK3l5MTM3MzoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQCcpIHsKLUBAIC0xOTc5MywxOCArMTk5ODQsMTggQEAgeXkxMzcxOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTM0OTsKLSsJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMzUxOwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTM3MjsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzc0OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTM3MjoKLSt5eTEzNzQ6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1EnKSB7Ci1AQCAtMTk4MTgsMzMgKzIwMDA5LDM0IEBAIHl5MTM3MjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdgJykgewotLQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzNTA7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM1MjsKLSAJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7Ci0gCQkJZ290byB5eTM7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoID09ICdyJykgZ290byB5eTEzNzM7Ci0rCQkJaWYgKHl5Y2ggPT0gJ3InKSBnb3RvIHl5MTM3NTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzNzM6Ci0reXkxMzc1OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoID09ICdZJykgZ290byB5eTIyOTsKLSAJaWYgKHl5Y2ggPT0gJ3knKSBnb3RvIHl5MzQxOwotIAlnb3RvIHl5MTc5OwotLXl5MTM3NDoKLSt5eTEzNzY6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5NTY7Ci0gCWlmICh5eWNoID49ICc6JykgZ290byB5eTU2OwotLXl5MTM3NToKLSt5eTEzNzc6Ci0gCXl5YWNjZXB0ID0gMjg7Ci0gCVlZTUFSS0VSID0gKytZWUNVUlNPUjsKLSAJaWYgKChZWUxJTUlUIC0gWVlDVVJTT1IpIDwgNykgWVlGSUxMKDcpOwotIAl5eWNoID0gKllZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxMzc4OwotLQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMzc3OwotLQlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzc1OwotLXl5MTM3NzoKLSsJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTM4MDsKLSsJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTM3OTsKLSsJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTM3NzsKLSt5eTEzNzk6Ci0rI2xpbmUgMTAyNSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCXRpbWVsaWJfdWxsIGk7Ci0gCi1AQCAtMTk4NjksNyArMjAwNjEsOCBAQCB5eTEzNzc6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOwotIAl9Ci0teXkxMzc4OgotKyNsaW5lIDIwMDY1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotK3l5MTM4MDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKLSAJaWYgKHl5Y2ggPj0gJzonKSBnb3RvIHl5NTY7Ci1AQCAtMTk4ODksNiArMjAwODIsNyBAQCB5eTEzNzg6Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OwotIAlpZiAoeXljaCA+PSAnOicpIGdvdG8geXk1NjsKLSAJKytZWUNVUlNPUjsKLSsjbGluZSAxMDUxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJdGltZWxpYl91bGwgaSwgbXM7Ci0gCi1AQCAtMTk5MTUsNyArMjAxMDksOCBAQCB5eTEzNzg6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOwotIAl9Ci0teXkxMzg2OgotKyNsaW5lIDIwMTEzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotK3l5MTM4ODoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnTicpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTE5OTI0LDcgKzIwMTE5LDcgQEAgeXkxMzg2OgotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotIAkJCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTE2NjsKLS0JCQlnb3RvIHl5MTQyNzsKLSsJCQlnb3RvIHl5MTQyOTsKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdtJykgewotQEAgLTE5OTMyLDU4ICsyMDEyNyw1OCBAQCB5eTEzODY6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY2OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDI3OwotKwkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0Mjk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzg3OgotK3l5MTM4OToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnVScpIHsKLSAJCWlmICh5eWNoIDw9ICdAJykgewotIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQxOTsKLSsJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxNDIxOwotIAkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE2NjsKLS0JCQlnb3RvIHl5MTQyMDsKLSsJCQlnb3RvIHl5MTQyMjsKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdpJykgewotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWlmICh5eWNoIDw9ICdoJykgZ290byB5eTE2NjsKLS0JCQlnb3RvIHl5MTQxOTsKLSsJCQlnb3RvIHl5MTQyMTsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ3UnKSBnb3RvIHl5MTQyMDsKLSsJCQlpZiAoeXljaCA9PSAndScpIGdvdG8geXkxNDIyOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTM4ODoKLSt5eTEzOTA6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ00nKSB7Ci0gCQlpZiAoeXljaCA8PSAnQCcpIHsKLSAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQkJZ290byB5eTM7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoID09ICdEJykgZ290byB5eTE0MDg7Ci0rCQkJaWYgKHl5Y2ggPT0gJ0QnKSBnb3RvIHl5MTQxMDsKLSAJCQlpZiAoeXljaCA8PSAnTCcpIGdvdG8geXkxNjY7Ci0tCQkJZ290byB5eTE0MDk7Ci0rCQkJZ290byB5eTE0MTE7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnZCcpIHsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnYycpIGdvdG8geXkxNjY7Ci0tCQkJZ290byB5eTE0MDg7Ci0rCQkJZ290byB5eTE0MTA7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoID09ICdtJykgZ290byB5eTE0MDk7Ci0rCQkJaWYgKHl5Y2ggPT0gJ20nKSBnb3RvIHl5MTQxMTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzODk6Ci0reXkxMzkxOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdFJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTk5OTIsNyArMjAxODcsNyBAQCB5eTEzODk6Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxNDA0OwotKwkJCWdvdG8geXkxNDA2OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2QnKSB7Ci1AQCAtMjAwMDAsMTIgKzIwMTk1LDEyIEBAIHl5MTM4OToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjY7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE0MDQ7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQwNjsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzOTA6Ci0reXkxMzkyOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdFJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjAwMTQsNyArMjAyMDksNyBAQCB5eTEzOTA6Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxNDAwOwotKwkJCWdvdG8geXkxNDAyOwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2QnKSB7Ci1AQCAtMjAwMjIsNjggKzIwMjE3LDY4IEBAIHl5MTM5MDoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjY7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE0MDA7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQwMjsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzOTE6Ci0reXkxMzkzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICcvJykgewotIAkJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTAyOTsKLSAJCWdvdG8geXk1NjsKLSAJfSBlbHNlIHsKLS0JCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEzOTQ7Ci0rCQlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzk2OwotIAkJaWYgKHl5Y2ggPD0gJzonKSBnb3RvIHl5MTAyOTsKLSAJCWdvdG8geXk1NjsKLSAJfQotLXl5MTM5MjoKLSt5eTEzOTQ6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJy8nKSB7Ci0gCQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxMDI5OwotIAkJZ290byB5eTU2OwotIAl9IGVsc2UgewotLQkJaWYgKHl5Y2ggPD0gJzQnKSBnb3RvIHl5MTM5NDsKLSsJCWlmICh5eWNoIDw9ICc0JykgZ290byB5eTEzOTY7Ci0gCQlpZiAoeXljaCA9PSAnOicpIGdvdG8geXkxMDI5OwotIAkJZ290byB5eTU2OwotIAl9Ci0teXkxMzkzOgotK3l5MTM5NToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxMDI5OwotIAlpZiAoeXljaCA9PSAnOicpIGdvdG8geXkxMDI5OwotIAlnb3RvIHl5NTY7Ci0teXkxMzk0OgotK3l5MTM5NjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnLycpIHsKLSAJCWlmICh5eWNoID09ICcuJykgZ290byB5eTEwMjk7Ci0gCQlnb3RvIHl5NTY7Ci0gCX0gZWxzZSB7Ci0tCQlpZiAoeXljaCA8PSAnNScpIGdvdG8geXkxMzk1OwotKwkJaWYgKHl5Y2ggPD0gJzUnKSBnb3RvIHl5MTM5NzsKLSAJCWlmICh5eWNoID09ICc6JykgZ290byB5eTEwMjk7Ci0gCQlnb3RvIHl5NTY7Ci0gCX0KLS15eTEzOTU6Ci0reXkxMzk3OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OwotIAlpZiAoeXljaCA+PSAnOicpIGdvdG8geXk1NjsKLSAJeXlhY2NlcHQgPSAyMzsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTAzMjsKLS0JaWYgKHl5Y2ggPD0gJzUnKSBnb3RvIHl5MTM5NzsKLS0JaWYgKHl5Y2ggPD0gJzYnKSBnb3RvIHl5MTM5ODsKLSsJaWYgKHl5Y2ggPD0gJzUnKSBnb3RvIHl5MTM5OTsKLSsJaWYgKHl5Y2ggPD0gJzYnKSBnb3RvIHl5MTQwMDsKLSAJZ290byB5eTEwMzI7Ci0teXkxMzk3OgotK3l5MTM5OToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKLS0JaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTM5OTsKLSsJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTQwMTsKLSAJZ290byB5eTU2OwotLXl5MTM5ODoKLSt5eTE0MDA6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggIT0gJzAnKSBnb3RvIHl5NTY7Ci0teXkxMzk5OgotK3l5MTQwMToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlnb3RvIHl5MTA0MDsKLS15eTE0MDA6Ci0reXkxNDAyOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdMJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjAwOTksMTIgKzIwMjk0LDEyIEBAIHl5MTQwMDoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdsJykgZ290byB5eTE0MDE7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2wnKSBnb3RvIHl5MTQwMzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0MDE6Ci0reXkxNDAzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdGJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjAxMjAsMTIgKzIwMzE1LDEyIEBAIHl5MTQwMToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdmJykgZ290byB5eTE0MDI7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2YnKSBnb3RvIHl5MTQwNDsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0MDI6Ci0reXkxNDA0OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdUJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjAxNDEsMTIgKzIwMzM2LDEyIEBAIHl5MTQwMjoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjk7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE0MDM7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQwNTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0MDM6Ci0reXkxNDA1OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotQEAgLTIwMTU3LDcgKzIwMzUyLDcgQEAgeXkxNDAzOgotIAkJaWYgKHl5Y2ggPT0gJ2gnKSBnb3RvIHl5MTE5NTsKLSAJCWdvdG8geXkzOwotIAl9Ci0teXkxNDA0OgotK3l5MTQwNjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIwMTczLDEyICsyMDM2OCwxMiBAQCB5eTE0MDQ6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0MDU7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQwNzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTE5MTsKLSAJCX0KLSAJfQotLXl5MTQwNToKLSt5eTE0MDc6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0QnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMDE5NCwxMiArMjAzODksMTIgQEAgeXkxNDA1OgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2ODsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQwNjsKLSsJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDA4OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQwNjoKLSt5eTE0MDg6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci1AQCAtMjAyMDksMTIgKzIwNDA0LDEyIEBAIHl5MTQwNjoKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7Ci0gCQkJZ290byB5eTM7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0MDc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQwOTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0MDc6Ci0reXkxNDA5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdYJykgewotIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotQEAgLTIwMjI0LDIzICsyMDQxOSwyMyBAQCB5eTE0MDc6Ci0gCQlpZiAoeXljaCA9PSAneScpIGdvdG8geXkxOTc7Ci0gCQlnb3RvIHl5MzsKLSAJfQotLXl5MTQwODoKLSt5eTE0MTA6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotLQkJZ290byB5eTE0MTY7Ci0rCQlnb3RvIHl5MTQxODsKLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdgJykgewotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQxNjsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDE4OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQwOToKLSt5eTE0MTE6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ08nKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMDI1NiwxMiArMjA0NTEsMTIgQEAgeXkxNDA5OgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQxMDsKLSsJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNDEyOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQxMDoKLSt5eTE0MTI6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1InKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMDI3NywxMiArMjA0NzIsMTIgQEAgeXkxNDEwOgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2ODsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQxMTsKLSsJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDEzOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQxMToKLSt5eTE0MTM6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1InKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMDI5OCwyOCArMjA0OTMsMjkgQEAgeXkxNDExOgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2OTsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQxMjsKLSsJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDE0OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2OTsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQxMjoKLSt5eTE0MTQ6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ04nKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQlnb3RvIHl5MzsKLSAJfSBlbHNlIHsKLS0JCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0MTM7Ci0rCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxNDE1OwotIAkJaWYgKHl5Y2ggIT0gJ28nKSBnb3RvIHl5MzsKLSAJfQotLXl5MTQxMzoKLSt5eTE0MTU6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ1cnKSBnb3RvIHl5MTQxNDsKLSsJaWYgKHl5Y2ggPT0gJ1cnKSBnb3RvIHl5MTQxNjsKLSAJaWYgKHl5Y2ggIT0gJ3cnKSBnb3RvIHl5NTY7Ci0teXkxNDE0OgotK3l5MTQxNjoKLSAJKytZWUNVUlNPUjsKLS15eTE0MTU6Ci0reXkxNDE3OgotKyNsaW5lIDEwMTMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlERUJVR19PVVRQVVQoInRvbW9ycm93Iik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtMjAzMzAsNyArMjA1MjYsOCBAQCB5eTE0MTU6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOwotIAl9Ci0teXkxNDE2OgotKyNsaW5lIDIwNTMwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotK3l5MTQxODoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnWScpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIwMzQ2LDIxICsyMDU0MywyMiBAQCB5eTE0MTY6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY4OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAneScpIGdvdG8geXkxNDE3OwotKwkJCWlmICh5eWNoIDw9ICd5JykgZ290byB5eTE0MTk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDE3OgotK3l5MTQxOToKLSAJKytZWUNVUlNPUjsKLSAJaWYgKCh5eWNoID0gKllZQ1VSU09SKSA8PSAnQCcpIHsKLSAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKLS0JCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE0MTg7Ci0rCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNDIwOwotIAkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY5OwotIAl9Ci0teXkxNDE4OgotK3l5MTQyMDoKLSsjbGluZSAxMDAzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJtaWRuaWdodCB8IHRvZGF5Iik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtMjAzNjksNyArMjA1NjcsOCBAQCB5eTE0MTg6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOwotIAl9Ci0teXkxNDE5OgotKyNsaW5lIDIwNTcxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotK3l5MTQyMToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLSAJCWlmICh5eWNoIDw9ICdAJykgewotQEAgLTIwMzc3LDggKzIwNTc2LDggQEAgeXkxNDE5OgotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnUScpIGdvdG8geXkxNjc7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQyNTsKLS0JCQlnb3RvIHl5MTQyNjsKLSsJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDI3OwotKwkJCWdvdG8geXkxNDI4OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ3EnKSB7Ci1AQCAtMjAzODYsMTMgKzIwNTg1LDEzIEBAIHl5MTQxOToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE0MjU7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQyNjsKLSsJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDI3OwotKwkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0Mjg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDIwOgotK3l5MTQyMjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnUicpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIwNDA4LDEyICsyMDYwNywxMiBAQCB5eTE0MjA6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE0MjE7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQyMzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTE5MTsKLSAJCX0KLSAJfQotLXl5MTQyMToKLSt5eTE0MjM6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1MnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMDQyOSwxMiArMjA2MjgsMTIgQEAgeXkxNDIxOgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2ODsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQyMjsKLSsJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxNDI0OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQyMjoKLSt5eTE0MjQ6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0QnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMDQ1MCwyNyArMjA2NDksMjcgQEAgeXkxNDIyOgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2OTsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQyMzsKLSsJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDI1OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2OTsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQyMzoKLSt5eTE0MjU6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0AnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQlnb3RvIHl5MzsKLSAJfSBlbHNlIHsKLS0JCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0MjQ7Ci0rCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDI2OwotIAkJaWYgKHl5Y2ggIT0gJ2EnKSBnb3RvIHl5MzsKLSAJfQotLXl5MTQyNDoKLSt5eTE0MjY6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTk3OwotIAlpZiAoeXljaCA9PSAneScpIGdvdG8geXkxOTc7Ci0gCWdvdG8geXk1NjsKLS15eTE0MjU6Ci0reXkxNDI3OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdEJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjA0OTIsNyArMjA2OTEsNyBAQCB5eTE0MjU6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0MjY6Ci0reXkxNDI4OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICcoJykgewotQEAgLTIwNTE0LDcgKzIwNzEzLDcgQEAgeXkxNDI2OgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDI3OgotK3l5MTQyOToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnVCcpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIwNTMwLDEyICsyMDcyOSwxMiBAQCB5eTE0Mjc6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY3OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDI4OwotKwkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE0MzA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDI4OgotK3l5MTQzMDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnSCcpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIwNTU3LDcgKzIwNzU2LDcgQEAgeXkxNDI4OgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDI5OgotK3l5MTQzMToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnTScpIHsKLUBAIC0yMDU3Miw3ICsyMDc3MSw3IEBAIHl5MTQyOToKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE0Mjc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQyOTsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIwNTgxLDEzICsyMDc4MCwxMyBAQCB5eTE0Mjk6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzE7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ1OTsKLSsJCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ2MTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0MzA6Ci0reXkxNDMyOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdUJykgewotQEAgLTIwNjA0LDE0ICsyMDgwMywxNCBAQCB5eTE0MzA6Ci0gCQkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTE3MjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQxOTsKLSsJCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQyMTsKLSAJCQkJZ290byB5eTE2NjsKLSAJCQl9Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnYCcpIHsKLSAJCQlpZiAoeXljaCA8PSAnWicpIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ1UnKSBnb3RvIHl5MTQyMDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ1UnKSBnb3RvIHl5MTQyMjsKLSAJCQkJZ290byB5eTE2NjsKLSAJCQl9IGVsc2UgewotIAkJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7Ci1AQCAtMjA2MTksMTYgKzIwODE4LDE2IEBAIHl5MTQzMDoKLSAJCQl9Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICd0JykgewotLQkJCQlpZiAoeXljaCA9PSAnaScpIGdvdG8geXkxNDUxOwotKwkJCQlpZiAoeXljaCA9PSAnaScpIGdvdG8geXkxNDUzOwotIAkJCQlnb3RvIHl5MTcxOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTE0NTI7Ci0rCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTE0NTQ7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDMxOgotK3l5MTQzMzoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnTCcpIHsKLUBAIC0yMDY0NSwxNCArMjA4NDQsMTQgQEAgeXkxNDMxOgotIAkJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxNzI7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoID09ICdEJykgZ290byB5eTE0MDg7Ci0rCQkJCWlmICh5eWNoID09ICdEJykgZ290byB5eTE0MTA7Ci0gCQkJCWdvdG8geXkxNjY7Ci0gCQkJfQotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTE0MDk7Ci0rCQkJCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTE0MTE7Ci0gCQkJCWdvdG8geXkxNjY7Ci0gCQkJfSBlbHNlIHsKLSAJCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOwotQEAgLTIwNjYwLDE2ICsyMDg1OSwxNiBAQCB5eTE0MzE6Ci0gCQkJfQotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnbCcpIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ2QnKSBnb3RvIHl5MTQ0MjsKLSsJCQkJaWYgKHl5Y2ggPT0gJ2QnKSBnb3RvIHl5MTQ0NDsKLSAJCQkJZ290byB5eTE3MTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNDQzOwotKwkJCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNDQ1OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQzMjoKLSt5eTE0MzQ6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0QnKSB7Ci1AQCAtMjA2ODQsNyArMjA4ODMsNyBAQCB5eTE0MzI6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNDA0OwotKwkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0MDY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMDY5MywxMyArMjA4OTIsMTMgQEAgeXkxNDMyOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTcxOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE0Mzg7Ci0rCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE0NDA7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDMzOgotK3l5MTQzNToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnRCcpIHsKLUBAIC0yMDcxNCw3ICsyMDkxMyw3IEBAIHl5MTQzMzoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0MDA7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTQwMjsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIwNzIzLDEzICsyMDkyMiwxMyBAQCB5eTE0MzM6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzE7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQzNDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQzNjsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0MzQ6Ci0reXkxNDM2OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdLJykgewotQEAgLTIwNzQ0LDcgKzIwOTQzLDcgQEAgeXkxNDM0OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0wnKSBnb3RvIHl5MTQwMTsKLSsJCQlpZiAoeXljaCA8PSAnTCcpIGdvdG8geXkxNDAzOwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjA3NTMsMTMgKzIwOTUyLDEzIEBAIHl5MTQzNDoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnbCcpIGdvdG8geXkxNDM1OwotKwkJCQlpZiAoeXljaCA8PSAnbCcpIGdvdG8geXkxNDM3OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQzNToKLSt5eTE0Mzc6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0UnKSB7Ci1AQCAtMjA3NzQsNyArMjA5NzMsNyBAQCB5eTE0MzU6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnRicpIGdvdG8geXkxNDAyOwotKwkJCWlmICh5eWNoIDw9ICdGJykgZ290byB5eTE0MDQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMDc4MywxMyArMjA5ODIsMTMgQEAgeXkxNDM1OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc2OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdmJykgZ290byB5eTE0MzY7Ci0rCQkJCWlmICh5eWNoIDw9ICdmJykgZ290byB5eTE0Mzg7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDM2OgotK3l5MTQzODoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLUBAIC0yMDgwNCw3ICsyMTAwMyw3IEBAIHl5MTQzNjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE0MDM7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQwNTsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIwODEzLDEzICsyMTAxMiwxMyBAQCB5eTE0MzY6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzc7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQzNzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQzOTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0Mzc6Ci0reXkxNDM5OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotQEAgLTIwODQyLDcgKzIxMDQxLDcgQEAgeXkxNDM3OgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDM4OgotK3l5MTQ0MDoKLSAJeXlhY2NlcHQgPSA0OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUicpIHsKLUBAIC0yMDg1Nyw3ICsyMTA1Niw3IEBAIHl5MTQzODoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE0MDU7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTQwNzsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MTkxOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjA4NjYsMTMgKzIxMDY1LDEzIEBAIHl5MTQzODoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0Mzk7Ci0rCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0NDE7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTE5MTsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0Mzk6Ci0reXkxNDQxOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdDJykgewotQEAgLTIwODg3LDcgKzIxMDg2LDcgQEAgeXkxNDM5OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTQwNjsKLSsJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNDA4OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjA4OTYsMTMgKzIxMDk1LDEzIEBAIHl5MTQzOToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NjsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDQwOwotKwkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDQyOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ0MDoKLSt5eTE0NDI6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0AnKSB7Ci1AQCAtMjA5MTYsMTggKzIxMTE1LDE4IEBAIHl5MTQ0MDoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0MDc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTQwOTsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NDE7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ0MzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0NDE6Ci0reXkxNDQzOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdYJykgewotQEAgLTIwOTUwLDcgKzIxMTQ5LDcgQEAgeXkxNDQxOgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDQyOgotK3l5MTQ0NDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQCcpIHsKLUBAIC0yMDk2NCwxOCArMjExNjMsMTggQEAgeXkxNDQyOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTQxNjsKLSsJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDE4OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ0OTsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDUxOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ0MzoKLSt5eTE0NDU6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ04nKSB7Ci1AQCAtMjA5OTAsNyArMjExODksNyBAQCB5eTE0NDM6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxNDEwOwotKwkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0MTI7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMDk5OSwxMyArMjExOTgsMTMgQEAgeXkxNDQzOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0NDQ7Ci0rCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0NDY7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDQ0OgotK3l5MTQ0NjoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUScpIHsKLUBAIC0yMTAyMCw3ICsyMTIxOSw3IEBAIHl5MTQ0NDoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTE0MTE7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQxMzsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIxMDI5LDEzICsyMTIyOCwxMyBAQCB5eTE0NDQ6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzY7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQ0NTsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQ0NzsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0NDU6Ci0reXkxNDQ3OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdRJykgewotQEAgLTIxMDUwLDcgKzIxMjQ5LDcgQEAgeXkxNDQ1OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQxMjsKLSsJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDE0OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjEwNTksMTMgKzIxMjU4LDEzIEBAIHl5MTQ0NToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NzsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDQ2OwotKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDQ4OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzc7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ0NjoKLSt5eTE0NDg6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ04nKSB7Ci1AQCAtMjEwNzksMTggKzIxMjc4LDE4IEBAIHl5MTQ0NjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdgJykgewotLQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0MTM7Ci0rCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTQxNTsKLSAJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7Ci0gCQkJZ290byB5eTM7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoID09ICdvJykgZ290byB5eTE0NDc7Ci0rCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTQ0OTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0NDc6Ci0reXkxNDQ5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdXJykgZ290byB5eTE0MTQ7Ci0rCWlmICh5eWNoID09ICdXJykgZ290byB5eTE0MTY7Ci0gCWlmICh5eWNoICE9ICd3JykgZ290byB5eTE3OTsKLSAJeXlhY2NlcHQgPSAyOTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLUBAIC0yMTA5OSwxMyArMjEyOTgsMTMgQEAgeXkxNDQ3OgotIAl9Ci0gCWlmICh5eWNoIDw9ICcuJykgewotIAkJaWYgKHl5Y2ggPT0gJy0nKSBnb3RvIHl5MTcyOwotLQkJZ290byB5eTE0MTU7Ci0rCQlnb3RvIHl5MTQxNzsKLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTE3MjsKLSAJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKLS0JCWdvdG8geXkxNDE1OwotKwkJZ290byB5eTE0MTc7Ci0gCX0KLS15eTE0NDk6Ci0reXkxNDUxOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdYJykgewotQEAgLTIxMTIwLDcgKzIxMzE5LDcgQEAgeXkxNDQ5OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1knKSBnb3RvIHl5MTQxNzsKLSsJCQlpZiAoeXljaCA8PSAnWScpIGdvdG8geXkxNDE5OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjExMjksMzYgKzIxMzI4LDM2IEBAIHl5MTQ0OToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NjsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAneScpIGdvdG8geXkxNDUwOwotKwkJCQlpZiAoeXljaCA8PSAneScpIGdvdG8geXkxNDUyOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ1MDoKLSt5eTE0NTI6Ci0gCXl5YWNjZXB0ID0gMzA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICcvJykgewotIAkJaWYgKHl5Y2ggPD0gJywnKSB7Ci0gCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotLQkJCWdvdG8geXkxNDE4OwotKwkJCWdvdG8geXkxNDIwOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxNDE4OwotKwkJCWlmICh5eWNoID09ICcuJykgZ290byB5eTE0MjA7Ci0gCQkJZ290byB5eTE3MjsKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdeJykgewotLQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTE0MTg7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTQyMDsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7Ci0tCQkJZ290byB5eTE0MTg7Ci0rCQkJZ290byB5eTE0MjA7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdfJykgZ290byB5eTE3MjsKLS0JCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNDE4OwotKwkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE0MjA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OwotLQkJCWdvdG8geXkxNDE4OwotKwkJCWdvdG8geXkxNDIwOwotIAkJfQotIAl9Ci0teXkxNDUxOgotK3l5MTQ1MzoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUicpIHsKLUBAIC0yMTE3MywxMyArMjEzNzIsMTMgQEAgeXkxNDUxOgotIAkJCX0gZWxzZSB7Ci0gCQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJCWlmICh5eWNoIDw9ICdRJykgZ290byB5eTE2NzsKLS0JCQkJZ290byB5eTE0MjU7Ci0rCQkJCWdvdG8geXkxNDI3OwotIAkJCX0KLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdgJykgewotIAkJCWlmICh5eWNoIDw9ICdaJykgewotLQkJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNDI2OwotKwkJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNDI4OwotIAkJCQlnb3RvIHl5MTY3OwotIAkJCX0gZWxzZSB7Ci0gCQkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKLUBAIC0yMTE4OCwxNSArMjEzODcsMTUgQEAgeXkxNDUxOgotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAncicpIHsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3EnKSBnb3RvIHl5MTc1OwotLQkJCQlnb3RvIHl5MTQ1NzsKLSsJCQkJZ290byB5eTE0NTk7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQ1ODsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQ2MDsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0NTI6Ci0reXkxNDU0OgotIAl5eWFjY2VwdCA9IDQ7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdRJykgewotQEAgLTIxMjExLDcgKzIxNDEwLDcgQEAgeXkxNDUyOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQyMTsKLSsJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDIzOwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkxOTE7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMTIyMCwxMyArMjE0MTksMTMgQEAgeXkxNDUyOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxOTE7Ci0gCQkJCWdvdG8geXkxNzU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQ1MzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQ1NTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MTkxOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ1MzoKLSt5eTE0NTU6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1InKSB7Ci1AQCAtMjEyNDEsNyArMjE0NDAsNyBAQCB5eTE0NTM6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNDIyOwotKwkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE0MjQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMTI1MCwxMyArMjE0NDksMTMgQEAgeXkxNDUzOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc2OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0NTQ7Ci0rCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0NTY7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDU0OgotK3l5MTQ1NjoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQycpIHsKLUBAIC0yMTI3MSw3ICsyMTQ3MCw3IEBAIHl5MTQ1NDoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE0MjM7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTQyNTsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIxMjgwLDEzICsyMTQ3OSwxMyBAQCB5eTE0NTQ6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzc7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ1NTsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ1NzsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0NTU6Ci0reXkxNDU3OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdAJykgewotQEAgLTIxMzAwLDIyICsyMTQ5OSwyMiBAQCB5eTE0NTU6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDI0OwotKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0MjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NTY7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ1ODsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0NTY6Ci0reXkxNDU4OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoID09ICdZJykgZ290byB5eTE5NzsKLSAJaWYgKHl5Y2ggPT0gJ3knKSBnb3RvIHl5MjEwOwotIAlnb3RvIHl5MTc5OwotLXl5MTQ1NzoKLSt5eTE0NTk6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0MnKSB7Ci1AQCAtMjEzNDUsNyArMjE1NDQsNyBAQCB5eTE0NTc6Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDU4OgotK3l5MTQ2MDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnLScpIHsKLUBAIC0yMTM3NCw3ICsyMTU3Myw3IEBAIHl5MTQ1ODoKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0NTk6Ci0reXkxNDYxOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdTJykgewotQEAgLTIxMzg5LDcgKzIxNTg4LDcgQEAgeXkxNDU5OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQyODsKLSsJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNDMwOwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjEzOTgsMTMgKzIxNTk3LDEzIEBAIHl5MTQ1OToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDYwOwotKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDYyOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ2MDoKLSt5eTE0NjI6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0cnKSB7Ci1AQCAtMjE0MzQsMzAgKzIxNjMzLDMwIEBAIHl5MTQ2MDoKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0NjE6Ci0reXkxNDYzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdZJykgewotIAkJaWYgKHl5Y2ggPD0gJ0AnKSB7Ci0gCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAnUicpIGdvdG8geXkxNDczOwotKwkJCWlmICh5eWNoID09ICdSJykgZ290byB5eTE0NzU7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1gnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxNDc0OwotKwkJCWdvdG8geXkxNDc2OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ3InKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OwotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3EnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxNDczOwotKwkJCWdvdG8geXkxNDc1OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAneScpIGdvdG8geXkxNDc0OwotKwkJCWlmICh5eWNoID09ICd5JykgZ290byB5eTE0NzY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDYyOgotK3l5MTQ2NDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnRCcpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIxNDY2LDcgKzIxNjY1LDcgQEAgeXkxNDYyOgotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotIAkJCWlmICh5eWNoIDw9ICdDJykgZ290byB5eTE2NjsKLS0JCQlnb3RvIHl5MTQ2NzsKLSsJCQlnb3RvIHl5MTQ2OTsKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdjJykgewotQEAgLTIxNDc0LDEyICsyMTY3MywxMiBAQCB5eTE0NjI6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY2OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDY3OwotKwkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0Njk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDYzOgotK3l5MTQ2NToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnTicpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIxNDk1LDEyICsyMTY5NCwxMiBAQCB5eTE0NjM6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY2OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDY0OwotKwkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0NjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDY0OgotK3l5MTQ2NjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnRCcpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIxNTE2LDEyICsyMTcxNSwxMiBAQCB5eTE0NjQ6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0NjU7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ2NzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTE5MTsKLSAJCX0KLSAJfQotLXl5MTQ2NToKLSt5eTE0Njc6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci1AQCAtMjE1MzEsMTIgKzIxNzMwLDEyIEBAIHl5MTQ2NToKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NjY7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ2ODsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0NjY6Ci0reXkxNDY4OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdZJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjE1NTgsNyArMjE3NTcsNyBAQCB5eTE0NjY6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0Njc6Ci0reXkxNDY5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdOJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjE1NzQsMTIgKzIxNzczLDEyIEBAIHl5MTQ2NzoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0Njg7Ci0rCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ3MDsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0Njg6Ci0reXkxNDcwOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdJJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjE1OTUsMTIgKzIxNzk0LDEyIEBAIHl5MTQ2ODoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0Njk7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTQ3MTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0Njk6Ci0reXkxNDcxOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjE2MTYsMjkgKzIxODE1LDI5IEBAIHl5MTQ2OToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjk7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdnJykgZ290byB5eTE0NzA7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2cnKSBnb3RvIHl5MTQ3MjsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0NzA6Ci0reXkxNDcyOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotIAkJZ290byB5eTM7Ci0gCX0gZWxzZSB7Ci0tCQlpZiAoeXljaCA8PSAnSCcpIGdvdG8geXkxNDcxOwotKwkJaWYgKHl5Y2ggPD0gJ0gnKSBnb3RvIHl5MTQ3MzsKLSAJCWlmICh5eWNoICE9ICdoJykgZ290byB5eTM7Ci0gCX0KLS15eTE0NzE6Ci0reXkxNDczOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdUJykgZ290byB5eTE0NzI7Ci0rCWlmICh5eWNoID09ICdUJykgZ290byB5eTE0NzQ7Ci0gCWlmICh5eWNoICE9ICd0JykgZ290byB5eTU2OwotLXl5MTQ3MjoKLSt5eTE0NzQ6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JZ290byB5eTE0MTg7Ci0teXkxNDczOgotKwlnb3RvIHl5MTQyMDsKLSt5eTE0NzU6Ci0gCXl5YWNjZXB0ID0gNTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJy8nKSB7Ci1AQCAtMjE2NjYsNyArMjE4NjUsNyBAQCB5eTE0NzM6Ci0gCQkJCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTIyMDsKLSAJCQkJZ290byB5eTIxODsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA9PSAnQycpIGdvdG8geXkxNDc1OwotKwkJCQlpZiAoeXljaCA9PSAnQycpIGdvdG8geXkxNDc3OwotIAkJCQlnb3RvIHl5MTY3OwotIAkJCX0KLSAJCX0gZWxzZSB7Ci1AQCAtMjE2NzQsMTMgKzIxODczLDEzIEBAIHl5MTQ3MzoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MjE4OwotIAkJCQlnb3RvIHl5MTY3OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdjJykgZ290byB5eTE0NzU7Ci0rCQkJCWlmICh5eWNoIDw9ICdjJykgZ290byB5eTE0Nzc7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQkJZ290byB5eTIxODsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0NzQ6Ci0reXkxNDc2OgotIAl5eWFjY2VwdCA9IDU7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICctJykgewotQEAgLTIxNzA1LDcgKzIxOTA0LDcgQEAgeXkxNDc0OgotIAkJCWdvdG8geXkyMTg7Ci0gCQl9Ci0gCX0KLS15eTE0NzU6Ci0reXkxNDc3OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdIJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjE3MjcsNyArMjE5MjYsNyBAQCB5eTE0NzU6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0NzY6Ci0reXkxNDc4OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdYJykgewotQEAgLTIxNzQ0LDE0ICsyMTk0MywxNCBAQCB5eTE0NzY6Ci0gCQkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTE3MjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ1InKSBnb3RvIHl5MTQ3MzsKLSsJCQkJaWYgKHl5Y2ggPT0gJ1InKSBnb3RvIHl5MTQ3NTsKLSAJCQkJZ290byB5eTE2NjsKLSAJCQl9Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnYCcpIHsKLSAJCQlpZiAoeXljaCA8PSAnWicpIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ1knKSBnb3RvIHl5MTQ3NDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ1knKSBnb3RvIHl5MTQ3NjsKLSAJCQkJZ290byB5eTE2NjsKLSAJCQl9IGVsc2UgewotIAkJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7Ci1AQCAtMjE3NTksMTYgKzIxOTU4LDE2IEBAIHl5MTQ3NjoKLSAJCQl9Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICd4JykgewotLQkJCQlpZiAoeXljaCA9PSAncicpIGdvdG8geXkxNDg4OwotKwkJCQlpZiAoeXljaCA9PSAncicpIGdvdG8geXkxNDkwOwotIAkJCQlnb3RvIHl5MTcxOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd5JykgZ290byB5eTE0ODk7Ci0rCQkJCWlmICh5eWNoIDw9ICd5JykgZ290byB5eTE0OTE7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDc3OgotK3l5MTQ3OToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQycpIHsKLUBAIC0yMTc4Myw3ICsyMTk4Miw3IEBAIHl5MTQ3NzoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE0Njc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTQ2OTsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIxNzkyLDEzICsyMTk5MSwxMyBAQCB5eTE0Nzc6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzE7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ4MjsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ4NDsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0Nzg6Ci0reXkxNDgwOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdNJykgewotQEAgLTIxODEzLDcgKzIyMDEyLDcgQEAgeXkxNDc4OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQ2NDsKLSsJCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNDY2OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjE4MjIsMTMgKzIyMDIxLDEzIEBAIHl5MTQ3ODoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3MTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDc5OwotKwkJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDgxOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ3OToKLSt5eTE0ODE6Ci0gCXl5YWNjZXB0ID0gNDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0MnKSB7Ci1AQCAtMjE4NDMsNyArMjIwNDIsNyBAQCB5eTE0Nzk6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNDY1OwotKwkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE0Njc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTE5MTsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIxODUyLDEzICsyMjA1MSwxMyBAQCB5eTE0Nzk6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE5MTsKLSAJCQkJZ290byB5eTE3NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDgwOwotKwkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDgyOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7Ci0gCQkJCWdvdG8geXkxOTE7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDgwOgotK3l5MTQ4MjoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQCcpIHsKLUBAIC0yMTg3MiwxOCArMjIwNzEsMTggQEAgeXkxNDgwOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTQ2NjsKLSsJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDY4OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ4MTsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDgzOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ4MToKLSt5eTE0ODM6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1gnKSB7Ci1AQCAtMjE5MTMsNyArMjIxMTIsNyBAQCB5eTE0ODE6Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDgyOgotK3l5MTQ4NDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnTScpIHsKLUBAIC0yMTkyOCw3ICsyMjEyNyw3IEBAIHl5MTQ4MjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE0Njg7Ci0rCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQ3MDsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIxOTM3LDEzICsyMjEzNiwxMyBAQCB5eTE0ODI6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ4MzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ4NTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0ODM6Ci0reXkxNDg1OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdIJykgewotQEAgLTIxOTU4LDcgKzIyMTU3LDcgQEAgeXkxNDgzOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0knKSBnb3RvIHl5MTQ2OTsKLSsJCQlpZiAoeXljaCA8PSAnSScpIGdvdG8geXkxNDcxOwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjE5NjcsMTMgKzIyMTY2LDEzIEBAIHl5MTQ4MzoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NjsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDg0OwotKwkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDg2OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ4NDoKLSt5eTE0ODY6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0YnKSB7Ci1AQCAtMjE5ODgsNyArMjIxODcsNyBAQCB5eTE0ODQ6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnRycpIGdvdG8geXkxNDcwOwotKwkJCWlmICh5eWNoIDw9ICdHJykgZ290byB5eTE0NzI7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY5OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMTk5NywxMyArMjIxOTYsMTMgQEAgeXkxNDg0OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc3OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdnJykgZ290byB5eTE0ODU7Ci0rCQkJCWlmICh5eWNoIDw9ICdnJykgZ290byB5eTE0ODc7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NzsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDg1OgotK3l5MTQ4NzoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnRycpIHsKLUBAIC0yMjAxNywxOCArMjIyMTYsMTggQEAgeXkxNDg1OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0gnKSBnb3RvIHl5MTQ3MTsKLSsJCQlpZiAoeXljaCA8PSAnSCcpIGdvdG8geXkxNDczOwotIAkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ2gnKSBnb3RvIHl5MTQ4NjsKLSsJCQlpZiAoeXljaCA9PSAnaCcpIGdvdG8geXkxNDg4OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3ODsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ4NjoKLSt5eTE0ODg6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ1QnKSBnb3RvIHl5MTQ3MjsKLSsJaWYgKHl5Y2ggPT0gJ1QnKSBnb3RvIHl5MTQ3NDsKLSAJaWYgKHl5Y2ggIT0gJ3QnKSBnb3RvIHl5MTc5OwotIAl5eWFjY2VwdCA9IDMwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTIyMDM3LDEzICsyMjIzNiwxMyBAQCB5eTE0ODY6Ci0gCX0KLSAJaWYgKHl5Y2ggPD0gJy4nKSB7Ci0gCQlpZiAoeXljaCA9PSAnLScpIGdvdG8geXkxNzI7Ci0tCQlnb3RvIHl5MTQxODsKLSsJCWdvdG8geXkxNDIwOwotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTcyOwotIAkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOwotLQkJZ290byB5eTE0MTg7Ci0rCQlnb3RvIHl5MTQyMDsKLSAJfQotLXl5MTQ4ODoKLSt5eTE0OTA6Ci0gCXl5YWNjZXB0ID0gNTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJzknKSB7Ci1AQCAtMjIwNzEsNyArMjIyNzAsNyBAQCB5eTE0ODg6Ci0gCQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTIxODsKLSAJCQkJZ290byB5eTE2NzsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnQycpIGdvdG8geXkxNDc1OwotKwkJCQlpZiAoeXljaCA8PSAnQycpIGdvdG8geXkxNDc3OwotIAkJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0gCQkJCWdvdG8geXkyMTg7Ci0gCQkJfQotQEAgLTIyMDgxLDEzICsyMjI4MCwxMyBAQCB5eTE0ODg6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTIxODsKLSAJCQkJZ290byB5eTE3NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnYycpIGdvdG8geXkxNDkwOwotKwkJCQlpZiAoeXljaCA8PSAnYycpIGdvdG8geXkxNDkyOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7Ci0gCQkJCWdvdG8geXkyMTg7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDg5OgotK3l5MTQ5MToKLSAJeXlhY2NlcHQgPSA1OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnLicpIHsKLUBAIC0yMjEyMiw3ICsyMjMyMSw3IEBAIHl5MTQ4OToKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0OTA6Ci0reXkxNDkyOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotQEAgLTIyMTUyLDcgKzIyMzUxLDcgQEAgeXkxNDkwOgotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ5MToKLSt5eTE0OTM6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1cnKSB7Ci0gCQlpZiAoeXljaCA8PSAnTicpIHsKLUBAIC0yMjE2MCwyOSArMjIzNTksMjkgQEAgeXkxNDkxOgotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NjsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTQ5OTsKLSsJCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxNTAxOwotIAkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTE2NjsKLS0JCQlpZiAoeXljaCA8PSAnVicpIGdvdG8geXkxNTAwOwotLQkJCWdvdG8geXkxNDk3OwotKwkJCWlmICh5eWNoIDw9ICdWJykgZ290byB5eTE1MDI7Ci0rCQkJZ290byB5eTE0OTk7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnbycpIHsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNjY7Ci0tCQkJZ290byB5eTE0OTk7Ci0rCQkJZ290byB5eTE1MDE7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICd2JykgewotIAkJCQlpZiAoeXljaCA8PSAndScpIGdvdG8geXkxNjY7Ci0tCQkJCWdvdG8geXkxNTAwOwotKwkJCQlnb3RvIHl5MTUwMjsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAndycpIGdvdG8geXkxNDk3OwotKwkJCQlpZiAoeXljaCA8PSAndycpIGdvdG8geXkxNDk5OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ5MjoKLSt5eTE0OTQ6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1gnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMjE5MSw3ICsyMjM5MCw3IEBAIHl5MTQ5MjoKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnVycpIGdvdG8geXkxNjY7Ci0tCQkJZ290byB5eTE0OTY7Ci0rCQkJZ290byB5eTE0OTg7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAndycpIHsKLUBAIC0yMjE5OSwxMiArMjIzOTgsMTIgQEAgeXkxNDkyOgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NjsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3gnKSBnb3RvIHl5MTQ5NjsKLSsJCQlpZiAoeXljaCA8PSAneCcpIGdvdG8geXkxNDk4OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ5MzoKLSt5eTE0OTU6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ04nKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMjIyMCwxMiArMjI0MTksMTIgQEAgeXkxNDkzOgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NjsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ5NDsKLSsJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDk2OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ5NDoKLSt5eTE0OTY6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1QnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMjI0MSwxMiArMjI0NDAsMTIgQEAgeXkxNDk0OgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQ5NTsKLSsJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDk3OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ5NToKLSt5eTE0OTc6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0gnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMjI2OCw3ICsyMjQ2Nyw3IEBAIHl5MTQ5NToKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ5NjoKLSt5eTE0OTg6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1QnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMjI3Nyw3ICsyMjQ3Niw3IEBAIHl5MTQ5NjoKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNjc7Ci0tCQkJZ290byB5eTE0MjY7Ci0rCQkJZ290byB5eTE0Mjg7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAncycpIHsKLUBAIC0yMjI4NSwyMSArMjI0ODQsMjIgQEAgeXkxNDk2OgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQyNjsKLSsJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDI4OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ5NzoKLSt5eTE0OTk6Ci0gCSsrWVlDVVJTT1I7Ci0gCWlmICgoeXljaCA9ICpZWUNVUlNPUikgPD0gJ0AnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0tCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNDk4OwotKwkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTUwMDsKLSAJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJfQotLXl5MTQ5ODoKLSt5eTE1MDA6Ci0rI2xpbmUgOTgyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJub3ciKTsKLSAJCVRJTUVMSUJfSU5JVDsKLUBAIC0yMjMwNyw3ICsyMjUwNyw4IEBAIHl5MTQ5ODoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7Ci0gCX0KLS15eTE0OTk6Ci0rI2xpbmUgMjI1MTEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0reXkxNTAxOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdOJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjIzMTYsNyArMjI1MTcsNyBAQCB5eTE0OTk6Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTY3OwotLQkJCWdvdG8geXkxNTA1OwotKwkJCWdvdG8geXkxNTA3OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ20nKSB7Ci1AQCAtMjIzMjQsMTIgKzIyNTI1LDEyIEBAIHl5MTQ5OToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE1MDU7Ci0rCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTUwNzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE1MDA6Ci0reXkxNTAyOgotIAl5eWFjY2VwdCA9IDU7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICcvJykgewotQEAgLTIyMzY0LDEzICsyMjU2NSwxMyBAQCB5eTE1MDA6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTIxODsKLSAJCQkJZ290byB5eTE2NzsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTAxOwotKwkJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTAzOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJCWdvdG8geXkyMTg7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNTAxOgotK3l5MTUwMzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnTScpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIyMzg2LDEyICsyMjU4NywxMiBAQCB5eTE1MDE6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY4OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNTAyOwotKwkJCWlmICh5eWNoIDw9ICdtJykgZ290byB5eTE1MDQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNTAyOgotK3l5MTUwNDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnQicpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIyNDA3LDM2ICsyMjYwOCwzNyBAQCB5eTE1MDI6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY5OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnYicpIGdvdG8geXkxNTAzOwotKwkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTE1MDU7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY5OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNTAzOgotK3l5MTUwNToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnRCcpIHsKLSAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJCWdvdG8geXkzOwotIAl9IGVsc2UgewotLQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTUwNDsKLSsJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MDY7Ci0gCQlpZiAoeXljaCAhPSAnZScpIGdvdG8geXkzOwotIAl9Ci0teXkxNTA0OgotK3l5MTUwNjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA9PSAnUicpIGdvdG8geXkyMjk7Ci0gCWlmICh5eWNoID09ICdyJykgZ290byB5eTIyOTsKLSAJZ290byB5eTU2OwotLXl5MTUwNToKLSt5eTE1MDc6Ci0gCSsrWVlDVVJTT1I7Ci0gCWlmICgoeXljaCA9ICpZWUNVUlNPUikgPD0gJ0AnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7Ci0tCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNTA2OwotKwkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTUwODsKLSAJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKLSAJfQotLXl5MTUwNjoKLSt5eTE1MDg6Ci0rI2xpbmUgOTkxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJub29uIik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtMjI0NDcsNyArMjI2NDksOCBAQCB5eTE1MDY6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOwotIAl9Ci0teXkxNTA3OgotKyNsaW5lIDIyNjUzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotK3l5MTUwOToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnVicpIHsKLUBAIC0yMjQ2NSwxNSArMjI2NjgsMTUgQEAgeXkxNTA3OgotIAkJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTY2OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0OTk7Ci0rCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE1MDE7Ci0gCQkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTE2NjsKLS0JCQkJZ290byB5eTE1MDA7Ci0rCQkJCWdvdG8geXkxNTAyOwotIAkJCX0KLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICduJykgewotIAkJCWlmICh5eWNoIDw9ICdeJykgewotLQkJCQlpZiAoeXljaCA8PSAnVycpIGdvdG8geXkxNDk3OwotKwkJCQlpZiAoeXljaCA8PSAnVycpIGdvdG8geXkxNDk5OwotIAkJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0gZWxzZSB7Ci1AQCAtMjI0ODMsMTcgKzIyNjg2LDE3IEBAIHl5MTUwNzoKLSAJCQl9Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICd2JykgewotLQkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNTE0OwotKwkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNTE2OwotIAkJCQlpZiAoeXljaCA8PSAndScpIGdvdG8geXkxNzE7Ci0tCQkJCWdvdG8geXkxNTE1OwotKwkJCQlnb3RvIHl5MTUxNzsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAndycpIGdvdG8geXkxNTEzOwotKwkJCQlpZiAoeXljaCA8PSAndycpIGdvdG8geXkxNTE1OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTUwODoKLSt5eTE1MTA6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1cnKSB7Ci1AQCAtMjI1MDgsNyArMjI3MTEsNyBAQCB5eTE1MDg6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnWCcpIGdvdG8geXkxNDk2OwotKwkJCWlmICh5eWNoIDw9ICdYJykgZ290byB5eTE0OTg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMjUxNywxMyArMjI3MjAsMTMgQEAgeXkxNTA4OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTcxOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd4JykgZ290byB5eTE1MTI7Ci0rCQkJCWlmICh5eWNoIDw9ICd4JykgZ290byB5eTE1MTQ7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNTA5OgotK3l5MTUxMToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnTScpIHsKLUBAIC0yMjUzOCw3ICsyMjc0MSw3IEBAIHl5MTUwOToKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE0OTQ7Ci0rCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQ5NjsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIyNTQ3LDEzICsyMjc1MCwxMyBAQCB5eTE1MDk6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzE7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTUxMDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTUxMjsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE1MTA6Ci0reXkxNTEyOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdTJykgewotQEAgLTIyNTY4LDcgKzIyNzcxLDcgQEAgeXkxNTEwOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQ5NTsKLSsJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNDk3OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjI1NzcsMTMgKzIyNzgwLDEzIEBAIHl5MTUxMDoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTExOwotKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTEzOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTUxMToKLSt5eTE1MTM6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0cnKSB7Ci1AQCAtMjI2MTMsNyArMjI4MTYsNyBAQCB5eTE1MTE6Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNTEyOgotK3l5MTUxNDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLUBAIC0yMjYyOCw3ICsyMjgzMSw3IEBAIHl5MTUxMjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE0MjY7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQyODsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIyNjM3LDM2ICsyMjg0MCwzNiBAQCB5eTE1MTI6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQ1ODsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQ2MDsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE1MTM6Ci0reXkxNTE1OgotIAl5eWFjY2VwdCA9IDMxOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnLycpIHsKLSAJCWlmICh5eWNoIDw9ICcsJykgewotIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLS0JCQlnb3RvIHl5MTQ5ODsKLSsJCQlnb3RvIHl5MTUwMDsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTQ5ODsKLSsJCQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxNTAwOwotIAkJCWdvdG8geXkxNzI7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXicpIHsKLS0JCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkxNDk4OwotKwkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTE1MDA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotLQkJCWdvdG8geXkxNDk4OwotKwkJCWdvdG8geXkxNTAwOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnXycpIGdvdG8geXkxNzI7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTQ5ODsKLSsJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNTAwOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLS0JCQlnb3RvIHl5MTQ5ODsKLSsJCQlnb3RvIHl5MTUwMDsKLSAJCX0KLSAJfQotLXl5MTUxNDoKLSt5eTE1MTY6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ00nKSB7Ci1AQCAtMjI2ODEsNyArMjI4ODQsNyBAQCB5eTE1MTQ6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNTA1OwotKwkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE1MDc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMjY5MCwxMyArMjI4OTMsMTMgQEAgeXkxNTE0OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE1MjA7Ci0rCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE1MjI7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNTE1OgotK3l5MTUxNzoKLSAJeXlhY2NlcHQgPSA1OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnOScpIHsKLUBAIC0yMjcyNCw3ICsyMjkyNyw3IEBAIHl5MTUxNToKLSAJCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MjE4OwotIAkJCQlnb3RvIHl5MTY3OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MDE7Ci0rCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MDM7Ci0gCQkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQkJZ290byB5eTIxODsKLSAJCQl9Ci1AQCAtMjI3MzQsMTMgKzIyOTM3LDEzIEBAIHl5MTUxNToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MjE4OwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MTY7Ci0rCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MTg7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTIxODsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE1MTY6Ci0reXkxNTE4OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdMJykgewotQEAgLTIyNzU1LDcgKzIyOTU4LDcgQEAgeXkxNTE2OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTUwMjsKLSsJCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxNTA0OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjI3NjQsMTMgKzIyOTY3LDEzIEBAIHl5MTUxNjoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NjsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNTE3OwotKwkJCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNTE5OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTUxNzoKLSt5eTE1MTk6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci1AQCAtMjI3ODUsNyArMjI5ODgsNyBAQCB5eTE1MTc6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnQicpIGdvdG8geXkxNTAzOwotKwkJCWlmICh5eWNoIDw9ICdCJykgZ290byB5eTE1MDU7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY5OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMjc5NCwxMyArMjI5OTcsMTMgQEAgeXkxNTE3OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc3OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTE1MTg7Ci0rCQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTE1MjA7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NzsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNTE4OgotK3l5MTUyMDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnRCcpIHsKLUBAIC0yMjgxNCw0NCArMjMwMTcsNDQgQEAgeXkxNTE4OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTUwNDsKLSsJCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNTA2OwotIAkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ2UnKSBnb3RvIHl5MTUxOTsKLSsJCQlpZiAoeXljaCA9PSAnZScpIGdvdG8geXkxNTIxOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3ODsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTUxOToKLSt5eTE1MjE6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPT0gJ1InKSBnb3RvIHl5MjI5OwotIAlpZiAoeXljaCA9PSAncicpIGdvdG8geXkzNDE7Ci0gCWdvdG8geXkxNzk7Ci0teXkxNTIwOgotK3l5MTUyMjoKLSAJeXlhY2NlcHQgPSAzMjsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJy8nKSB7Ci0gCQlpZiAoeXljaCA8PSAnLCcpIHsKLSAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0tCQkJZ290byB5eTE1MDY7Ci0rCQkJZ290byB5eTE1MDg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoID09ICcuJykgZ290byB5eTE1MDY7Ci0rCQkJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTUwODsKLSAJCQlnb3RvIHl5MTcyOwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ14nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTUwNjsKLSsJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkxNTA4OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLS0JCQlnb3RvIHl5MTUwNjsKLSsJCQlnb3RvIHl5MTUwODsKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ18nKSBnb3RvIHl5MTcyOwotLQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE1MDY7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTUwODsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7Ci0tCQkJZ290byB5eTE1MDY7Ci0rCQkJZ290byB5eTE1MDg7Ci0gCQl9Ci0gCX0KLS15eTE1MjE6Ci0reXkxNTIzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdTJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjI4NjcsMTIgKzIzMDcwLDEyIEBAIHl5MTUyMToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjY7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE1MjI7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTUyNDsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE1MjI6Ci0reXkxNTI0OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdUJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjI4ODgsMTIgKzIzMDkxLDEyIEBAIHl5MTUyMjoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE1MjM7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTUyNTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE1MjM6Ci0reXkxNTI1OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdFJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjI5MDksMTIgKzIzMTEyLDEyIEBAIHl5MTUyMzoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MjQ7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTUyNjsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE1MjQ6Ci0reXkxNTI2OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdSJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjI5MzAsMzIgKzIzMTMzLDMzIEBAIHl5MTUyNDoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjk7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE1MjU7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTUyNzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE1MjU6Ci0reXkxNTI3OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdDJykgewotIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotIAkJZ290byB5eTM7Ci0gCX0gZWxzZSB7Ci0tCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNTI2OwotKwkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTUyODsKLSAJCWlmICh5eWNoICE9ICdkJykgZ290byB5eTM7Ci0gCX0KLS15eTE1MjY6Ci0reXkxNTI4OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdBJykgZ290byB5eTE1Mjc7Ci0rCWlmICh5eWNoID09ICdBJykgZ290byB5eTE1Mjk7Ci0gCWlmICh5eWNoICE9ICdhJykgZ290byB5eTU2OwotLXl5MTUyNzoKLSt5eTE1Mjk6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTUyODsKLSsJaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTUzMDsKLSAJaWYgKHl5Y2ggIT0gJ3knKSBnb3RvIHl5NTY7Ci0teXkxNTI4OgotK3l5MTUzMDoKLSAJKytZWUNVUlNPUjsKLS15eTE1Mjk6Ci0reXkxNTMxOgotKyNsaW5lIDk3MCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgieWVzdGVyZGF5Iik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtMjI5NjYsNyArMjMxNzAsOCBAQCB5eTE1Mjk6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOwotIAl9Ci0teXkxNTMwOgotKyNsaW5lIDIzMTc0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotK3l5MTUzMjoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUicpIHsKLUBAIC0yMjk4MSw3ICsyMzE4Niw3IEBAIHl5MTUzMDoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE1MjI7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTUyNDsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIyOTkwLDEzICsyMzE5NSwxMyBAQCB5eTE1MzA6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzE7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTUzMTsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTUzMzsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE1MzE6Ci0reXkxNTMzOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdTJykgewotQEAgLTIzMDExLDcgKzIzMjE2LDcgQEAgeXkxNTMxOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTUyMzsKLSsJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNTI1OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjMwMjAsMTMgKzIzMjI1LDEzIEBAIHl5MTUzMToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTMyOwotKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTM0OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTUzMjoKLSt5eTE1MzQ6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0QnKSB7Ci1AQCAtMjMwNDEsNyArMjMyNDYsNyBAQCB5eTE1MzI6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNTI0OwotKwkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMzA1MCwxMyArMjMyNTUsMTMgQEAgeXkxNTMyOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc2OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MzM7Ci0rCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MzU7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNTMzOgotK3l5MTUzNToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUScpIHsKLUBAIC0yMzA3MSw3ICsyMzI3Niw3IEBAIHl5MTUzMzoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTE1MjU7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTUyNzsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIzMDgwLDEzICsyMzI4NSwxMyBAQCB5eTE1MzM6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzc7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTUzNDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTUzNjsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE1MzQ6Ci0reXkxNTM2OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdDJykgewotQEAgLTIzMTAwLDIxICsyMzMwNSwyMSBAQCB5eTE1MzQ6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnYCcpIHsKLS0JCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNTI2OwotKwkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE1Mjg7Ci0gCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOwotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAnZCcpIGdvdG8geXkxNTM1OwotKwkJCWlmICh5eWNoID09ICdkJykgZ290byB5eTE1Mzc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc4OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNTM1OgotK3l5MTUzNzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxNTI3OwotKwlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxNTI5OwotIAlpZiAoeXljaCAhPSAnYScpIGdvdG8geXkxNzk7Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTUyODsKLSsJaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTUzMDsKLSAJaWYgKHl5Y2ggIT0gJ3knKSBnb3RvIHl5MTc5OwotIAl5eWFjY2VwdCA9IDMzOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTIzMTIzLDEzICsyMzMyOCwxNCBAQCB5eTE1MzU6Ci0gCX0KLSAJaWYgKHl5Y2ggPD0gJy4nKSB7Ci0gCQlpZiAoeXljaCA9PSAnLScpIGdvdG8geXkxNzI7Ci0tCQlnb3RvIHl5MTUyOTsKLSsJCWdvdG8geXkxNTMxOwotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTcyOwotIAkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOwotLQkJZ290byB5eTE1Mjk7Ci0rCQlnb3RvIHl5MTUzMTsKLSAJfQotIH0KLSsjbGluZSAxNzcyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUgYi9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZQotaW5kZXggNzRkOWVhMy4uZjI2ZTI3NiAxMDA2NDQKLS0tLSBhL2V4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlCi0rKysgYi9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZQotQEAgLTkzMSw4ICs5MzEsOCBAQCBpc293ZWVrICAgICAgICAgID0geWVhcjQgIi0iPyAiVyIgd2Vla29meWVhcjsKLSBleGlmICAgICAgICAgICAgID0geWVhcjQgIjoiIG1vbnRobHogIjoiIGRheWx6ICIgIiBob3VyMjRseiAiOiIgbWludXRlbHogIjoiIHNlY29uZGx6OwotIGZpcnN0ZGF5b2YgICAgICAgPSAnZmlyc3QgZGF5IG9mJzsKLSBsYXN0ZGF5b2YgICAgICAgID0gJ2xhc3QgZGF5IG9mJzsKLS1iYWNrb2YgICAgICAgICAgID0gJ2JhY2sgb2YgJyBob3VyMjQgc3BhY2U/IG1lcmlkaWFuPzsKLS1mcm9udG9mICAgICAgICAgID0gJ2Zyb250IG9mICcgaG91cjI0IHNwYWNlPyBtZXJpZGlhbj87Ci0rYmFja29mICAgICAgICAgICA9ICdiYWNrIG9mICcgaG91cjI0IChzcGFjZT8gbWVyaWRpYW4pPzsKLStmcm9udG9mICAgICAgICAgID0gJ2Zyb250IG9mICcgaG91cjI0IChzcGFjZT8gbWVyaWRpYW4pPzsKLSAKLSAvKiBDb21tb24gTG9nIEZvcm1hdDogMTAvT2N0LzIwMDA6MTM6NTU6MzYgLTA3MDAgKi8KLSBjbGYgICAgICAgICAgICAgID0gZGF5ICIvIiBtb250aGFiYnIgIi8iIHllYXI0ICI6IiBob3VyMjRseiAiOiIgbWludXRlbHogIjoiIHNlY29uZGx6IHNwYWNlIHR6Y29ycmVjdGlvbjsKLWRpZmYgLS1naXQgYS9leHQvZGF0ZS90ZXN0cy9idWc1MzQzN192YXIzLnBocHQgYi9leHQvZGF0ZS90ZXN0cy9idWc1MzQzN192YXIzLnBocHQKLWluZGV4IDhmNDhiMWIuLjhkY2Q0YzggMTAwNjQ0Ci0tLS0gYS9leHQvZGF0ZS90ZXN0cy9idWc1MzQzN192YXIzLnBocHQKLSsrKyBiL2V4dC9kYXRlL3Rlc3RzL2J1ZzUzNDM3X3ZhcjMucGhwdAotQEAgLTQwLDcgKzQwLDcgQEAgb2JqZWN0KERhdGVJbnRlcnZhbCkjJWQgKDE2KSB7Ci0gICBbInNwZWNpYWxfYW1vdW50Il09PgotICAgaW50KC0xKQotICAgWyJoYXZlX3dlZWtkYXlfcmVsYXRpdmUiXT0+Ci0tICBpbnQoOSkKLSsgIGludCgwKQotICAgWyJoYXZlX3NwZWNpYWxfcmVsYXRpdmUiXT0+Ci0gICBpbnQoMCkKLSAgIFsiZiJdPT4KLWRpZmYgLS1naXQgYS9leHQvd2RkeC90ZXN0cy9idWc3NTA1NS5waHB0IGIvZXh0L3dkZHgvdGVzdHMvYnVnNzUwNTUucGhwdAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI5NTYyODQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2V4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LnBocHQKLUBAIC0wLDAgKzEsMjAgQEAKLSstLVRFU1QtLQotK0J1ZyAjNzUwNTUgT3V0LU9mLUJvdW5kcyBSZWFkIGluIHRpbWVsaWJfbWVyaWRpYW4oKQotKy0tU0tJUElGLS0KLSs8P3BocCBpZiAoIWV4dGVuc2lvbl9sb2FkZWQoIndkZHgiKSkgcHJpbnQgInNraXAiOyA/PgotKy0tRklMRS0tCi0rPD9waHAKLSsKLSskZmlsZV9zdHIgPSBkaXJuYW1lKF9fRklMRV9fKSAuICIvYnVnNzUwNTUud2RkeCI7Ci0rCi0rJHdkZHhfc3RyID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVfc3RyKTsKLStwcmludCBzdHJsZW4oJHdkZHhfc3RyKSAuICIgYnl0ZXMgcmVhZC5cbiI7Ci0rCi0rdmFyX2R1bXAod2RkeF9kZXNlcmlhbGl6ZSgkd2RkeF9zdHIpKTsKLSs/PgotKy0tRVhQRUNULS0KLSszMjMgYnl0ZXMgcmVhZC4KLSthcnJheSgxKSB7Ci0rICBbImFEYXRlVGltZSJdPT4KLSsgIHN0cmluZygxMikgImZyT050IG9mIDAgMCIKLSt9Ci1kaWZmIC0tZ2l0IGEvZXh0L3dkZHgvdGVzdHMvYnVnNzUwNTUud2RkeCBiL2V4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LndkZHgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42NDkzMzUyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9leHQvd2RkeC90ZXN0cy9idWc3NTA1NS53ZGR4Ci1AQCAtMCwwICsxLDEzIEBACi0rPD94bWwgdmVyc2lvbj0nMS4wJz8+Ci0rPCFET0NUWVBFIHdkZHhQYWNrZXQgU1lTVEVNICd3ZGR4XzAxMDAuZHRkJz4KLSs8d2RkeFBhY2tldCB2ZXJzaW9uPScxLjAnPgotKzxoZWFkZXIvPgotKwk8ZGF0YT4KLSsgICAgICAgIAk8c3RydWN0PgotKyAgICAgICAgICAgICAgICAgICAgPHZhciBuYW1lPSdhRGF0ZVRpbWUnPgotKyAgICAgICAgICAgICAgICAgICAgICAgICA8ZGF0ZVRpbWU+ZnJPTnQgb2YgMCAwPC9kYXRlVGltZT4KLSsgICAgICAgICAgICAgICAgICAgICA8L3Zhcj4KLSsgICAgICAgICAgICAgICAgPC9zdHJ1Y3Q+Ci0rCTwvZGF0YT4KLSs8L3dkZHhQYWNrZXQ+Ci0rCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTcuMS45L2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzljMzM0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTcuMS45L2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotW1BBVENIXSBjb25maWcubTQ6IGNoYW5nZSBBQ19UUllfUlVOIHRvIEFDX1RSWV9MSU5LCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1BQ19UUllfUlVOIGlzIG5vdCBzdWl0YWJsZSBmb3IgY3Jvc3MtY29tcGlsZQotCi1TaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBleHQvZmlsZWluZm8vY29uZmlnLm00IHwgMzEgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZXh0L2ZpbGVpbmZvL2NvbmZpZy5tNCBiL2V4dC9maWxlaW5mby9jb25maWcubTQKLWluZGV4IDdlOThkNjIuLjhhOGVhMGUgMTAwNjQ0Ci0tLS0gYS9leHQvZmlsZWluZm8vY29uZmlnLm00Ci0rKysgYi9leHQvZmlsZWluZm8vY29uZmlnLm00Ci1AQCAtMTQsMzEgKzE0LDEyIEBAIGlmIHRlc3QgIiRQSFBfRklMRUlORk8iICE9ICJubyI7IHRoZW4KLSAgICAgbGlibWFnaWMvcmVhZGNkZi5jIGxpYm1hZ2ljL3NvZnRtYWdpYy5jIgotIAotICAgQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3RyY2FzZXN0cl0pCi0tICBBQ19UUllfUlVOKFsKLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHN0cmluZ3MuaD4KLS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tCi0taW50IG1haW4odm9pZCkKLS17Ci0tICAgICAgICBjaGFyICpzMCwgKnMxLCAqcmV0OwotLQotLSAgICAgICAgczAgPSAoY2hhciAqKSBtYWxsb2MoNDIpOwotLSAgICAgICAgczEgPSAoY2hhciAqKSBtYWxsb2MoOCk7Ci0tCi0tICAgICAgICBtZW1zZXQoczAsICdYJywgNDIpOwotLSAgICAgICAgczBbMjRdID0gJ1knOwotLSAgICAgICAgczBbMjZdID0gJ1onOwotLSAgICAgICAgczBbNDFdID0gJ1wwJzsKLS0gICAgICAgIG1lbXNldChzMSwgJ3gnLCA4KTsKLS0gICAgICAgIHMxWzBdID0gJ3knOwotLSAgICAgICAgczFbMl0gPSAnWic7Ci0tICAgICAgICBzMVs3XSA9ICdcMCc7Ci0tCi0tICAgICAgICByZXQgPSBzdHJjYXNlc3RyKHMwLCBzMSk7Ci0tCi0tICAgICAgICByZXR1cm4gIShOVUxMICE9IHJldCk7Ci0tfQotKyAgQUNfVFJZX0NPTVBJTEUoWwotKyAgICAgI2luY2x1ZGUgPHN0cmluZy5oPgotKyAgICAgI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSsgICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KLSsgIF0sWwotKyAgICAgc3RyY2FzZXN0cihOVUxMLCBOVUxMKTsKLSAgIF0sWwotICAgICBkbmwgdXNpbmcgdGhlIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uCi0gICAgIEFDX01TR19SRVNVTFQoeWVzKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAuaW5jCmluZGV4IDI4M2Q2MzAuLjA2NmI5N2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAuaW5jCkBAIC02LDI2ICs2LDIyIEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgogREVQRU5EUyA9ICJ6bGliIGJ6aXAyIGxpYnhtbDIgdmlydHVhbC9saWJpY29udiBwaHAtbmF0aXZlIGxlbW9uLW5hdGl2ZSBcCi0gICAgICAgICAgIG9wZW5zc2wgbGlibWNyeXB0IgorICAgICAgICAgICBvcGVuc3NsIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUgbGlieG1sMi1uYXRpdmUiCiAKIFBIUF9NQUpPUl9WRVJTSU9OID0gIiR7QGQuZ2V0VmFyKCdQVicsIFRydWUpLnNwbGl0KCcuJylbMF19IgogCiBTUkNfVVJJID0gImh0dHA6Ly9waHAubmV0L2Rpc3RyaWJ1dGlvbnMvcGhwLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vYWNpbmNsdWRlLXhtbDItY29uZmlnLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGhwLWRvbi10LXVzZS1icm9rZW4td3JhcHBlci1mb3ItbWtkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hY2luY2x1ZGUtdXNlLXBrZ2NvbmZpZy1mb3ItbGlieG1sMi1jb25maWcucGF0Y2ggXAogICAgICAgICAgICIKIAogU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCiAgICAgICAgICAgICBmaWxlOi8vaWNvbnYucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovL2ltYXAtZml4LWF1dG9mb28ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BlYXItbWFrZWZpbGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BoYXItbWFrZWZpbGUucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovL3BocF9leGVjX25hdGl2ZS5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vcGhwLWZwbS5jb25mIFwKICAgICAgICAgICAgIGZpbGU6Ly9waHAtZnBtLWFwYWNoZS5jb25mIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtYWNpbmNsdWRlLm00LWRvbi10LXVuc2V0LWNhY2hlLXZhcmlhYmxlcy5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vNzBfbW9kX3BocCR7UEhQX01BSk9SX1ZFUlNJT059LmNvbmYgXAogICAgICAgICAgICAgZmlsZTovL3BocC1mcG0uc2VydmljZSBcCiAgICAgICAgICAgIgpAQCAtNDQsNyArNDAsNiBAQAogQ09NTU9OX0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zb2NrZXRzIFwKICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtcGNudGwgXAogICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3BjYWNoZSBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1waWMgXAogICAgICAgICAgICAgICAgICAgICAgICAtLWxpYmRpcj0ke1BIUF9MSUJESVJ9IFwKQEAgLTU3LDIwICs1MiwyMiBAQAogICAgICAgICAgICAgICAgIC0td2l0aC1nZXR0ZXh0PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCiAgICAgICAgICAgICAgICAgLS13aXRoLWljb252PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtbWNyeXB0PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7ZXhlY19wcmVmaXh9IFwKICAgICAgICAgICAgICAgICAtLXdpdGgtYnoyPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7ZXhlY19wcmVmaXh9IFwKICAgICAgICAgICAgICAgICAtLXdpdGgtY29uZmlnLWZpbGUtcGF0aD0ke3N5c2NvbmZkaXJ9L3BocC9hcGFjaGUyLXBocCR7UEhQX01BSk9SX1ZFUlNJT059IFwKLSAgICAgICAgICAgICAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJ2FjX2N2X2NfYmlnZW5kaWFuX3BocD1ubycsICdhY19jdl9jX2JpZ2VuZGlhbl9waHA9eWVzJywgZCl9IFwKKyAgICAgICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICdhY19jdl9jX2JpZ2VuZGlhbl9waHA9bm8nLCAnYWNfY3ZfY19iaWdlbmRpYW5fcGhwPXllcycsIGQpfSBcCiAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGFtJywgJycsICdhY19jdl9saWJfcGFtX3BhbV9zdGFydD1ubycsIGQpfSBcCiAgICAgICAgICAgICAgICAgJHtDT01NT05fRVhUUkFfT0VDT05GfSBcCiAiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9mdW5jX2Rsb3Blbj15ZXMgYWNfY3ZfbGliX2RsX2Rsb3Blbj15ZXMiCisKIEVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vLi4gXAogICAgICAgICAgICAgICAgIC0td2l0aG91dC1pY29udiBcCiAgICAgICAgICAgICAgICAgJHtDT01NT05fRVhUUkFfT0VDT05GfSBcCiAiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJteXNxbCBzcWxpdGUzIGltYXAgXAorUEFDS0FHRUNPTkZJRyA/Pz0gIm15c3FsIHNxbGl0ZTMgaW1hcCBvcGNhY2hlIFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2IHBhbScsIGQpfSBcCiAiCiBQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCkBAIC05NCw3ICs5MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtaW1hcCAtLXdpdGhvdXQtaW1hcC1zc2wgXAogICAgICAgICAgICAgICAgICAgICAgICAsdXctaW1hcCIKIFBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KK1BBQ0tBR0VDT05GSUdbb3BjYWNoZV0gPSAiLC0tZGlzYWJsZS1vcGNhY2hlIgogCiBleHBvcnQgUEhQX05BVElWRV9ESVIgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IgogZXhwb3J0IFBIUF9QRUFSX1BIUF9CSU4gPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BocCIKQEAgLTIwMSwxNCArMTk4LDE0IEBACiAKIE1PRFBIUF9QQUNLQUdFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FwYWNoZTInLCAnJHtQTn0tbW9kcGhwJywgJycsIGQpfSIKIAotUEFDS0FHRVMgPSAiJHtQTn0tZGJnICR7UE59LWNsaSAke1BOfS1jZ2kgJHtQTn0tZnBtICR7UE59LWZwbS1hcGFjaGUyICR7UE59LXBlYXIgJHtQTn0tcGhhciAke01PRFBIUF9QQUNLQUdFfSAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRvYyAke1BOfSIKK1BBQ0tBR0VTID0gIiR7UE59LWRiZyAke1BOfS1jbGkgJHtQTn0tY2dpICR7UE59LWZwbSAke1BOfS1mcG0tYXBhY2hlMiAke1BOfS1wZWFyICR7UE59LXBoYXIgJHtNT0RQSFBfUEFDS0FHRX0gJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MgJHtQTn0tb3BjYWNoZSAke1BOfSIKIAogUkRFUEVORFNfJHtQTn0gKz0gImxpYmdjYyIKIFJERVBFTkRTXyR7UE59LXBlYXIgPSAiJHtQTn0iCiBSREVQRU5EU18ke1BOfS1waGFyID0gIiR7UE59LWNsaSIKIFJERVBFTkRTXyR7UE59LWNsaSA9ICIke1BOfSIKIFJERVBFTkRTXyR7UE59LW1vZHBocCA9ICIke1BOfSBhcGFjaGUyIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tb3BjYWNoZSA9ICIke1BOfSIKIAogSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1mcG0iCiBpbmhlcml0IHVwZGF0ZS1yYy5kCkBAIC0yMzcsNiArMjM0LDggQEAKICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcGhwLWNvbmZpZyAke1BIUF9MSUJESVJ9L3BocC8uZGVwZGIgXAogICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5kZXBkYmxvY2sgJHtQSFBfTElCRElSfS9waHAvLmZpbGVtYXAgXAogICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5sb2NrICR7UEhQX0xJQkRJUn0vcGhwL3Rlc3QiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UEhQX0xJQkRJUn0vZXh0ZW5zaW9ucy8qLyouYSIKK0ZJTEVTXyR7UE59LW9wY2FjaGUgPSAiJHtQSFBfTElCRElSfS9leHRlbnNpb25zLyovb3BjYWNoZSR7U09MSUJTREVWfSIKIEZJTEVTXyR7UE59ID0gIiR7UEhQX0xJQkRJUn0vcGhwIgogRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSIKIApAQCAtMjUzLDE4ICsyNTIsNiBAQAogICAgICAgICBQSFBfUEVBUl9TWVNDT05GX0RJUj0ke3N5c2NvbmZkaXJ9LwogfQogCi1TU1RBVEVQT1NUSU5TVEZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHBocF9zc3RhdGVfcG9zdGluc3QgIgotCi1waHBfc3N0YXRlX3Bvc3RpbnN0KCkgewotICAgIGlmIFsgIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIiBdCi0gICAgdGhlbgotICAgICAgICBoZWFkIC1uMSAke3N5c2NvbmZkaXJ9L3BlYXIuY29uZiA+ICR7c3lzY29uZmRpcn0vcGVhci50bXAuY29uZgotICAgICAgICBmb3IgcCBpbiBgdGFpbCAtbjEgICR7c3lzY29uZmRpcn0vcGVhci5jb25mIHwgc2VkIC1zICdzLzsvIC9nJ2A7IGRvCi0gICAgICAgICAgICBlY2hvICRwIHwgYXdrIC1GOiAnQkVHSU4ge09GUyA9ICI6IjsgT1JTID0gIjsifXtpZihORj09Myl7cHJpbnQgJDEsIGxlbmd0aCgkMyktMiptYXRjaCgkMywgL14iLyksICQzfSBlbHNlIHtwcmludCAkMH19JzsKLSAgICAgICAgZG9uZSA+PiAke3N5c2NvbmZkaXJ9L3BlYXIudG1wLmNvbmYKLSAgICAgICAgbXYgLWYgJHtzeXNjb25mZGlyfS9wZWFyLnRtcC5jb25mICR7c3lzY29uZmRpcn0vcGVhci5jb25mCi0gICAgZmkKLX0KIAogIyBGYWlscyB0byBidWlsZCB3aXRoIHRodW1iLTEgKHFlbXVhcm0pCiAjIHwge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMzEvMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMzEvMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLUFkZC1scHRocmVhZC10by1saW5rLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtYWNpbmNsdWRlLm00LWRvbi10LXVuc2V0LWNhY2hlLXZhcmlhYmxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1hY2luY2x1ZGUubTQtZG9uLXQtdW5zZXQtY2FjaGUtdmFyaWFibGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNTBjYWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtYWNpbmNsdWRlLm00LWRvbi10LXVuc2V0LWNhY2hlLXZhcmlhYmxlcy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGRmZWJlODFmOTQ2YTgzZmUyNDk5ZmM4NGQ0ZjNkYmRjNTYxMjI3NmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorRGF0ZTogVHVlLCAzIEFwciAyMDE4IDExOjM1OjAzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFjaW5jbHVkZS5tNDogZG9uJ3QgdW5zZXQgY2FjaGUgdmFyaWFibGVzCisKK1Vuc2V0dGluZyBwcmV2ZW50cyBjYWNoZSB2YXJpYWJsZSBmcm9tIGJlaW5nIHBhc3NlZCB0byBjb25maWd1cmUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Utc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBhY2luY2x1ZGUubTQgfCA0IC0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAoraW5kZXggZjZhNTVlYy4uZDMzNDZkZiAxMDA2NDQKKy0tLSBhL2FjaW5jbHVkZS5tNAorKysrIGIvYWNpbmNsdWRlLm00CitAQCAtMTg5MCw4ICsxODkwLDYgQEAgZGVmaW5lKFtwaHBzaGlmdF0sW2lmZWxzZShpbmRleChbJEBdLFssXSksLTEsLFtzdWJzdHIoWyRAXSxpbmNyKGluZGV4KFskQF0sWyxdKSkKKyBkbmwKKyBBQ19ERUZVTihbUEhQX0NIRUNLX0ZVTkNfTElCXSxbCisgICBpZmVsc2UoJDIsLDosWworLSAgdW5zZXQgYWNfY3ZfbGliXyQyW11fJDEKKy0gIHVuc2V0IGFjX2N2X2xpYl8kMltdX19fJDEKKyAgIHVuc2V0IGZvdW5kCisgICBBQ19DSEVDS19MSUIoJDIsICQxLCBbZm91bmQ9eWVzXSwgWworICAgICBBQ19DSEVDS19MSUIoJDIsIF9fJDEsIFtmb3VuZD15ZXNdLCBbZm91bmQ9bm9dKQorQEAgLTE5MjMsOCArMTkyMSw2IEBAIGRubCBpbiB0aGUgZGVmYXVsdCBsaWJyYXJpZXMgYW5kIGFzIGEgZmFsbCBiYWNrIGluIHRoZSBzcGVjaWZpZWQgbGlicmFyeS4KKyBkbmwgRGVmaW5lcyBIQVZFX2Z1bmMgYW5kIEhBVkVfbGlicmFyeSBpZiBmb3VuZCBhbmQgYWRkcyB0aGUgbGlicmFyeSB0byBMSUJTLgorIGRubAorIEFDX0RFRlVOKFtQSFBfQ0hFQ0tfRlVOQ10sWworLSAgdW5zZXQgYWNfY3ZfZnVuY18kMQorLSAgdW5zZXQgYWNfY3ZfZnVuY19fXyQxCisgICB1bnNldCBmb3VuZAorICAgCisgICBBQ19DSEVDS19GVU5DKCQxLCBbZm91bmQ9eWVzXSxbIEFDX0NIRUNLX0ZVTkMoX18kMSxbZm91bmQ9eWVzXSxbZm91bmQ9bm9dKSBdKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtYWNpbmNsdWRlLm00LXNraXAtYmluY29uZmlnLWNoZWNrLWZvci1saWJ4bWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtYWNpbmNsdWRlLm00LXNraXAtYmluY29uZmlnLWNoZWNrLWZvci1saWJ4bWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUzMjkyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1hY2luY2x1ZGUubTQtc2tpcC1iaW5jb25maWctY2hlY2stZm9yLWxpYnhtbC5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIGEyZDE0NmI4ZGQ5ZDAyZjUyM2QxZTIwNWQ3OTc5MjYyNmE3MWRlYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorRGF0ZTogTW9uLCAyIEFwciAyMDE4IDE1OjI3OjA5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFjaW5jbHVkZS5tNDogc2tpcCBiaW5jb25maWcgY2hlY2sgZm9yIGxpYnhtbAorCitXZSB3YW50IGxpYnhtbCBmbGFncyB0byBiZSBwaWNrZWQgdXAgdXNpbmcgcGtnLWNvbmZpZyBpbnN0ZWFkIG9mIHRoZQoreG1sMi1jb25maWcgZmlsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKworLS0tCisgYWNpbmNsdWRlLm00IHwgMjkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hY2luY2x1ZGUubTQgYi9hY2luY2x1ZGUubTQKK2luZGV4IGQ0MmQ3MDguLmQzMjc2NmEgMTAwNjQ0CistLS0gYS9hY2luY2x1ZGUubTQKKysrKyBiL2FjaW5jbHVkZS5tNAorQEAgLTI1MjUsMzUgKzI1MjUsNiBAQCBkbmwKKyBBQ19ERUZVTihbUEhQX1NFVFVQX0xJQlhNTF0sIFsKKyAgIGZvdW5kX2xpYnhtbD1ubworIAorLSAgZG5sIEZpcnN0IHRyeSB0byBmaW5kIHhtbDItY29uZmlnCistICBBQ19DQUNIRV9DSEVDSyhbZm9yIHhtbDItY29uZmlnIHBhdGhdLCBhY19jdl9waHBfeG1sMl9jb25maWdfcGF0aCwKKy0gIFsKKy0gICAgZm9yIGkgaW4gJFBIUF9MSUJYTUxfRElSIC91c3IvbG9jYWwgL3VzcjsgZG8KKy0gICAgICBpZiB0ZXN0IC14ICIkaS9iaW4veG1sMi1jb25maWciOyB0aGVuCistICAgICAgICBhY19jdl9waHBfeG1sMl9jb25maWdfcGF0aD0iJGkvYmluL3htbDItY29uZmlnIgorLSAgICAgICAgYnJlYWsKKy0gICAgICBmaQorLSAgICBkb25lCistICBdKQorLQorLSAgaWYgdGVzdCAteCAiJGFjX2N2X3BocF94bWwyX2NvbmZpZ19wYXRoIjsgdGhlbgorLSAgICBYTUwyX0NPTkZJRz0iJGFjX2N2X3BocF94bWwyX2NvbmZpZ19wYXRoIgorLSAgICBsaWJ4bWxfZnVsbF92ZXJzaW9uPWAkWE1MMl9DT05GSUcgLS12ZXJzaW9uYAorLSAgICBhY19JRlM9JElGUworLSAgICBJRlM9Ii4iCistICAgIHNldCAkbGlieG1sX2Z1bGxfdmVyc2lvbgorLSAgICBJRlM9JGFjX0lGUworLSAgICBMSUJYTUxfVkVSU0lPTj1gZXhwciBbJF0xIFwqIDEwMDAwMDAgKyBbJF0yIFwqIDEwMDAgKyBbJF0zYAorLSAgICBpZiB0ZXN0ICIkTElCWE1MX1ZFUlNJT04iIC1nZSAiMjAwNjAxMSI7IHRoZW4KKy0gICAgICBmb3VuZF9saWJ4bWw9eWVzCistICAgICAgTElCWE1MX0xJQlM9YCRYTUwyX0NPTkZJRyAtLWxpYnNgCistICAgICAgTElCWE1MX0lOQ1M9YCRYTUwyX0NPTkZJRyAtLWNmbGFnc2AKKy0gICAgZWxzZQorLSAgICAgIEFDX01TR19FUlJPUihbbGlieG1sMiB2ZXJzaW9uIDIuNi4xMSBvciBncmVhdGVyIHJlcXVpcmVkLl0pCistICAgIGZpCistICBmaQorLQorLSAgZG5sIElmIHhtbDItY29uZmlnIGZhaWxzLCB0cnkgcGtnLWNvbmZpZworICAgaWYgdGVzdCAiJGZvdW5kX2xpYnhtbCIgPSAibm8iOyB0aGVuCisgICAgIGlmIHRlc3QgLXogIiRQS0dfQ09ORklHIjsgdGhlbgorICAgICAgIEFDX1BBVEhfUFJPRyhQS0dfQ09ORklHLCBwa2ctY29uZmlnLCBubykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1maXgtZXJyb3ItY2F1c2VkLWJ5LWEtbmV3LXZhcmlhYmxlLWlzLWRlY2xhcmVkLWFmdGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLWZpeC1lcnJvci1jYXVzZWQtYnktYS1uZXctdmFyaWFibGUtaXMtZGVjbGFyZWQtYWZ0ZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFiMTAxYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1maXgtZXJyb3ItY2F1c2VkLWJ5LWEtbmV3LXZhcmlhYmxlLWlzLWRlY2xhcmVkLWFmdGVyLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gMGQ4OGQ3MzU4ODdjNmYyZmEwMGE3NDNjMjcxMjRjN2E1MjAwNmE0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgMTUgQXByIDIwMTggMTk6MTc6MjcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGVycm9yIGNhdXNlZCBieSBhIG5ldyB2YXJpYWJsZSBpcyBkZWNsYXJlZCBhZnRlciB0aGUKKyBsYWJlbAorCitUaGVyZSBpcyBhIGJ1aWxkIGZhaWx1cmUgb24gbWlwczoKKy4uLgorfHNsaml0TmF0aXZlTUlQU19jb21tb24uYzogSW4gZnVuY3Rpb24gJ3Nsaml0X2hhc19jcHVfZmVhdHVyZSc6Cit8c2xqaXROYXRpdmVNSVBTX2NvbW1vbi5jOjUwNjozOiBlcnJvcjogYSBsYWJlbCBjYW4gb25seSBiZSBwYXJ0CitvZiBhIHN0YXRlbWVudCBhbmQgYSBkZWNsYXJhdGlvbiBpcyBub3QgYSBzdGF0ZW1lbnQKK3wgICBzbGppdF9zdyBmaXI7Cit8ICAgXn5+fn5+fn4KKy4uLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgZXh0L3BjcmUvcGNyZWxpYi9zbGppdC9zbGppdE5hdGl2ZU1JUFNfY29tbW9uLmMgfCA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9leHQvcGNyZS9wY3JlbGliL3Nsaml0L3Nsaml0TmF0aXZlTUlQU19jb21tb24uYyBiL2V4dC9wY3JlL3BjcmVsaWIvc2xqaXQvc2xqaXROYXRpdmVNSVBTX2NvbW1vbi5jCitpbmRleCBlZTIwN2ZlLi5hZGZkMzQyIDEwMDY0NAorLS0tIGEvZXh0L3BjcmUvcGNyZWxpYi9zbGppdC9zbGppdE5hdGl2ZU1JUFNfY29tbW9uLmMKKysrKyBiL2V4dC9wY3JlL3BjcmVsaWIvc2xqaXQvc2xqaXROYXRpdmVNSVBTX2NvbW1vbi5jCitAQCAtNDk4LDEyICs0OTgsMTQgQEAgU0xKSVRfQVBJX0ZVTkNfQVRUUklCVVRFIHZvaWQqIHNsaml0X2dlbmVyYXRlX2NvZGUoc3RydWN0IHNsaml0X2NvbXBpbGVyICpjb21waWwKKyAKKyBTTEpJVF9BUElfRlVOQ19BVFRSSUJVVEUgc2xqaXRfczMyIHNsaml0X2hhc19jcHVfZmVhdHVyZShzbGppdF9zMzIgZmVhdHVyZV90eXBlKQorIHsKKysjaWYgZGVmaW5lZChfX0dOVUNfXykKKysJc2xqaXRfc3cgZmlyOworKyNlbmRpZgorIAlzd2l0Y2ggKGZlYXR1cmVfdHlwZSkgeworIAljYXNlIFNMSklUX0hBU19GUFU6CisgI2lmZGVmIFNMSklUX0lTX0ZQVV9BVkFJTEFCTEUKKyAJCXJldHVybiBTTEpJVF9JU19GUFVfQVZBSUxBQkxFOworICNlbGlmIGRlZmluZWQoX19HTlVDX18pCistCQlzbGppdF9zdyBmaXI7CisgCQlhc20gKCJjZmMxICUwLCAkMCIgOiAiPXIiKGZpcikpOworIAkJcmV0dXJuIChmaXIgPj4gMjIpICYgMHgxOworICNlbHNlCistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtbWFpbi1waHBfaW5pLmMtYnVpbGQtZW1wdHktcGhwX2xvYWRfemVuZF9leHRlbnNpb25fYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1tYWluLXBocF9pbmkuYy1idWlsZC1lbXB0eS1waHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZTk3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtbWFpbi1waHBfaW5pLmMtYnVpbGQtZW1wdHktcGhwX2xvYWRfemVuZF9leHRlbnNpb25fYy5wYXRjaApAQCAtMCwwICsxLDYzIEBACitGcm9tIDI4NDJhYTJhMDc4ZWIxY2FkNTU1NDBiNjFlN2VkZjExMTM5NTE1MGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25pQGJvb3RsaW4uY29tPgorRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxOTozMDo1NSArMDEwMAorU3ViamVjdDogW1BBVENIXSBtYWluL3BocF9pbmkuYzogYnVpbGQgZW1wdHkgcGhwX2xvYWRfemVuZF9leHRlbnNpb25fY2IoKSB3aGVuCisgIUhBVkVfTElCREwKKworQ29tbWl0IDA3ODJhN2ZjNjMxNGM4YmQzY2JmZDU3ZjEyZDA0NzliZjljYzhkYzcgKCJGaXhlZCBidWcgIzc0ODY2CitleHRlbnNpb25fZGlyID0gIi4vZXh0IiBub3cgdXNlIGN1cnJlbnQgZGlyZWN0b3J5IGZvciBiYXNlIikgbW9kaWZpZWQKK3RoZSBwaHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jYigpIGZ1bmN0aW9uIHRvIHVzZSBwaHBfbG9hZF9zaGxpYigpLCBhbmQKK3Bhc3MgYSBoYW5kbGUgdG8gdGhlIG5ld2x5IGludHJvZHVjZWQgemVuZF9sb2FkX2V4dGVuc2lvbl9oYW5kbGUoKQorZnVuY3Rpb24gaW5zdGVhZCBvZiBwYXNzaW5nIHRoZSBleHRlbnNpb24gcGF0aCB0bworemVuZF9sb2FkX2V4dGVuc2lvbigpLgorCitXaGlsZSBkb2luZyBzbywgaXQgaW50cm9kdWNlZCBhIGNhbGwgdG8gcGhwX2xvYWRfc2hsaWIoKSBmcm9tIGNvZGUKK3RoYXQgaXMgYnVpbHQgZXZlbiB3aGVuIEhBVkVfTElCREwgaXMgbm90IGRlZmluZWQuIEhvd2V2ZXIsCitwaHBfbG9hZF9zaGxpYigpIGlzIG5vdCBpbXBsZW1lbnRlZCB3aGVuIEhBVkVfTElCREwgaXMgbm90IGRlZmluZWQsCitmb3Igb2J2aW91cyByZWFzb25zLgorCitJdCB0dXJucyBvdXQgdGhhdCB6ZW5kX2xvYWRfZXh0ZW5zaW9uX2hhbmRsZSgpIGFueXdheSBkb2Vzbid0IGRvCithbnl0aGluZyB3aGVuIFpFTkRfRVhURU5TSU9OU19TVVBQT1JUIGlzIGRlZmluZWQgdG8gMCwgYW5kCitaRU5EX0VYVEVOU0lPTlNfU1VQUE9SVCBpcyBub3QgZGVmaW5lZCB3aGVuIEhBVkVfTElCREwgaXMgbm90IGRlZmluZWQKKyhaZW5kL3plbmRfcG9ydGFiaWxpdHkuaCkuCisKK0ZpeGVzIHRoZSBmb2xsb3dpbmcgYnVpbGQgZmFpbHVyZSB3aGVuIGJ1aWxkaW5nIG9uIGEgc3lzdGVtIHRoYXQKK2RvZXNuJ3QgaGF2ZSBsaWJkbDoKKworbWFpbi9waHBfaW5pLm86IEluIGZ1bmN0aW9uIGBwaHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jYic6CitwaHBfaW5pLmM6KC50ZXh0KzB4NDc4KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcGhwX2xvYWRfc2hsaWInCitwaHBfaW5pLmM6KC50ZXh0KzB4NGIwKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcGhwX2xvYWRfc2hsaWInCitjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL2dpdC5waHAubmV0Lz9wPXBocC1zcmMuZ2l0O2E9Y29tbWl0O2g9Mjg0MmFhMmEwNzhlYjFjYWQ1NTU0MGI2MWU3ZWRmMTExMzk1MTUwZF0KK1NpZ25lZC1vZmYtYnk6IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAYm9vdGxpbi5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgbWFpbi9waHBfaW5pLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tYWluL3BocF9pbmkuYyBiL21haW4vcGhwX2luaS5jCitpbmRleCBiYTU4ZWIxLi5mY2EyNjNlIDEwMDY0NAorLS0tIGEvbWFpbi9waHBfaW5pLmMKKysrKyBiL21haW4vcGhwX2luaS5jCitAQCAtMzUwLDYgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIHBocF9sb2FkX3BocF9leHRlbnNpb25fY2Iodm9pZCAqYXJnKQorIAorIC8qIHt7eyBwaHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jYgorICAqLworKyNpZmRlZiBIQVZFX0xJQkRMCisgc3RhdGljIHZvaWQgcGhwX2xvYWRfemVuZF9leHRlbnNpb25fY2Iodm9pZCAqYXJnKQorIHsKKyAJY2hhciAqZmlsZW5hbWUgPSAqKChjaGFyICoqKSBhcmcpOworQEAgLTQwOSw2ICs0MTAsOSBAQCBzdGF0aWMgdm9pZCBwaHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jYih2b2lkICphcmcpCisgCQllZnJlZShsaWJwYXRoKTsKKyAJfQorIH0KKysjZWxzZQorK3N0YXRpYyB2b2lkIHBocF9sb2FkX3plbmRfZXh0ZW5zaW9uX2NiKHZvaWQgKmFyZykgeyB9CisrI2VuZGlmCisgLyogfX19ICovCisgCisgLyoge3t7IHBocF9pbml0X2NvbmZpZworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQyNGQzNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1vcGNhY2hlLWNvbmZpZy5tNC1lbmFibGUtb3BjYWNoZS5wYXRjaApAQCAtMCwwICsxLDM4NSBAQAorRnJvbSBiMmZiNzI1ZGM0MDRkNDcxMzcxNzMxYjY2MzIzNGU4N2NiMGZjYTg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMiBBcHIgMjAxOCAxNzo1NDo1MiArMDgwMAorU3ViamVjdDogW1BBVENIXSBvcGNhY2hlL2NvbmZpZy5tNDogZW5hYmxlIG9wY2FjaGUKKworV2UgY2FuJ3QgdXNlIEFDX1RSWV9SVU4gdG8gcnVuIHByb2dyYW1zIGluIGEgY3Jvc3MgY29tcGlsZSBlbnZpcm9ubWVudC4gU2V0Cit0aGUgdmFyaWFibGVzIGRpcmVjdGx5IGluc3RlYWQgc2luY2Ugd2Uga25vdyB0aGF0IHdlJ2QgYmUgcnVubmluZyBvbiBsYXRlc3QKK2Vub3VnaCBsaW51eCBrZXJuZWwuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQ29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIGV4dC9vcGNhY2hlL2NvbmZpZy5tNCB8IDM0OSArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDM0MSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4dC9vcGNhY2hlL2NvbmZpZy5tNCBiL2V4dC9vcGNhY2hlL2NvbmZpZy5tNAoraW5kZXggN2I1MDBmMC4uMTBiYjk5YSAxMDA2NDQKKy0tLSBhL2V4dC9vcGNhY2hlL2NvbmZpZy5tNAorKysrIGIvZXh0L29wY2FjaGUvY29uZmlnLm00CitAQCAtMjgsMzUzICsyOCwyMCBAQCBpZiB0ZXN0ICIkUEhQX09QQ0FDSEUiICE9ICJubyI7IHRoZW4KKyAKKyAgIEFDX0NIRUNLX0hFQURFUlMoW3VuaXN0ZC5oIHN5cy91aW8uaF0pCisgCistICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHN5c3ZpcGMgc2hhcmVkIG1lbW9yeSBzdXBwb3J0KQorLSAgQUNfVFJZX1JVTihbCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgorLSNpbmNsdWRlIDxzeXMvaXBjLmg+CistI2luY2x1ZGUgPHN5cy9zaG0uaD4KKy0jaW5jbHVkZSA8dW5pc3RkLmg+CistI2luY2x1ZGUgPHN0cmluZy5oPgorKyAgQUNfREVGSU5FKEhBVkVfU0hNX0lQQywgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBTeXNWIElQQyBTSE0gc3VwcG9ydF0pCisgCistaW50IG1haW4oKSB7CistICBwaWRfdCBwaWQ7CistICBpbnQgc3RhdHVzOworLSAgaW50IGlwY19pZDsKKy0gIGNoYXIgKnNobTsKKy0gIHN0cnVjdCBzaG1pZF9kcyBzaG1idWY7CisrICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9BTk9OLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoTUFQX0FOT04pIFNITSBzdXBwb3J0XSkKKyAKKy0gIGlwY19pZCA9IHNobWdldChJUENfUFJJVkFURSwgNDA5NiwgKElQQ19DUkVBVCB8IFNITV9SIHwgU0hNX1cpKTsKKy0gIGlmIChpcGNfaWQgPT0gLTEpIHsKKy0gICAgcmV0dXJuIDE7CistICB9CisrICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9aRVJPLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoIi9kZXYvemVybyIpIFNITSBzdXBwb3J0XSkKKyAKKy0gIHNobSA9IHNobWF0KGlwY19pZCwgTlVMTCwgMCk7CistICBpZiAoc2htID09ICh2b2lkICopLTEpIHsKKy0gICAgc2htY3RsKGlwY19pZCwgSVBDX1JNSUQsIE5VTEwpOworLSAgICByZXR1cm4gMjsKKy0gIH0KKy0KKy0gIGlmIChzaG1jdGwoaXBjX2lkLCBJUENfU1RBVCwgJnNobWJ1ZikgIT0gMCkgeworLSAgICBzaG1kdChzaG0pOworLSAgICBzaG1jdGwoaXBjX2lkLCBJUENfUk1JRCwgTlVMTCk7CistICAgIHJldHVybiAzOworLSAgfQorLQorLSAgc2htYnVmLnNobV9wZXJtLnVpZCA9IGdldHVpZCgpOworLSAgc2htYnVmLnNobV9wZXJtLmdpZCA9IGdldGdpZCgpOworLSAgc2htYnVmLnNobV9wZXJtLm1vZGUgPSAwNjAwOworLQorLSAgaWYgKHNobWN0bChpcGNfaWQsIElQQ19TRVQsICZzaG1idWYpICE9IDApIHsKKy0gICAgc2htZHQoc2htKTsKKy0gICAgc2htY3RsKGlwY19pZCwgSVBDX1JNSUQsIE5VTEwpOworLSAgICByZXR1cm4gNDsKKy0gIH0KKy0KKy0gIHNobWN0bChpcGNfaWQsIElQQ19STUlELCBOVUxMKTsKKy0KKy0gIHN0cmNweShzaG0sICJoZWxsbyIpOworLQorLSAgcGlkID0gZm9yaygpOworLSAgaWYgKHBpZCA8IDApIHsKKy0gICAgcmV0dXJuIDU7CistICB9IGVsc2UgaWYgKHBpZCA9PSAwKSB7CistICAgIHN0cmNweShzaG0sICJieWUiKTsKKy0gICAgcmV0dXJuIDY7CistICB9CistICBpZiAod2FpdCgmc3RhdHVzKSAhPSBwaWQpIHsKKy0gICAgcmV0dXJuIDc7CistICB9CistICBpZiAoIVdJRkVYSVRFRChzdGF0dXMpIHx8IFdFWElUU1RBVFVTKHN0YXR1cykgIT0gNikgeworLSAgICByZXR1cm4gODsKKy0gIH0KKy0gIGlmIChzdHJjbXAoc2htLCAiYnllIikgIT0gMCkgeworLSAgICByZXR1cm4gOTsKKy0gIH0KKy0gIHJldHVybiAwOworLX0KKy1dLGRubAorLSAgICBBQ19ERUZJTkUoSEFWRV9TSE1fSVBDLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFN5c1YgSVBDIFNITSBzdXBwb3J0XSkKKy0gICAgbXNnPXllcyxtc2c9bm8sbXNnPW5vKQorLSAgQUNfTVNHX1JFU1VMVChbJG1zZ10pCistCistICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1tYXAoKSB1c2luZyBNQVBfQU5PTiBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCistICBBQ19UUllfUlVOKFsKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistI2luY2x1ZGUgPHN5cy9tbWFuLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0KKy0jaWZuZGVmIE1BUF9BTk9OCistIyBpZmRlZiBNQVBfQU5PTllNT1VTCistIyAgZGVmaW5lIE1BUF9BTk9OIE1BUF9BTk9OWU1PVVMKKy0jIGVuZGlmCistI2VuZGlmCistI2lmbmRlZiBNQVBfRkFJTEVECistIyBkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQqKS0xKQorLSNlbmRpZgorLQorLWludCBtYWluKCkgeworLSAgcGlkX3QgcGlkOworLSAgaW50IHN0YXR1czsKKy0gIGNoYXIgKnNobTsKKy0KKy0gIHNobSA9IG1tYXAoTlVMTCwgNDA5NiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCB8IE1BUF9BTk9OLCAtMSwgMCk7CistICBpZiAoc2htID09IE1BUF9GQUlMRUQpIHsKKy0gICAgcmV0dXJuIDE7CistICB9CistCistICBzdHJjcHkoc2htLCAiaGVsbG8iKTsKKy0KKy0gIHBpZCA9IGZvcmsoKTsKKy0gIGlmIChwaWQgPCAwKSB7CistICAgIHJldHVybiA1OworLSAgfSBlbHNlIGlmIChwaWQgPT0gMCkgeworLSAgICBzdHJjcHkoc2htLCAiYnllIik7CistICAgIHJldHVybiA2OworLSAgfQorLSAgaWYgKHdhaXQoJnN0YXR1cykgIT0gcGlkKSB7CistICAgIHJldHVybiA3OworLSAgfQorLSAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IDYpIHsKKy0gICAgcmV0dXJuIDg7CistICB9CistICBpZiAoc3RyY21wKHNobSwgImJ5ZSIpICE9IDApIHsKKy0gICAgcmV0dXJuIDk7CistICB9CistICByZXR1cm4gMDsKKy19CistXSxkbmwKKy0gICAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfQU5PTiwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKE1BUF9BTk9OKSBTSE0gc3VwcG9ydF0pCistICAgIG1zZz15ZXMsbXNnPW5vLG1zZz1ubykKKy0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQorLQorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBtbWFwKCkgdXNpbmcgL2Rldi96ZXJvIHNoYXJlZCBtZW1vcnkgc3VwcG9ydCkKKy0gIEFDX1RSWV9SVU4oWworLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KKy0jaW5jbHVkZSA8c3lzL21tYW4uaD4KKy0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy0jaW5jbHVkZSA8ZmNudGwuaD4KKy0jaW5jbHVkZSA8dW5pc3RkLmg+CistI2luY2x1ZGUgPHN0cmluZy5oPgorLQorLSNpZm5kZWYgTUFQX0ZBSUxFRAorLSMgZGVmaW5lIE1BUF9GQUlMRUQgKCh2b2lkKiktMSkKKy0jZW5kaWYKKy0KKy1pbnQgbWFpbigpIHsKKy0gIHBpZF90IHBpZDsKKy0gIGludCBzdGF0dXM7CistICBpbnQgZmQ7CistICBjaGFyICpzaG07CistCistICBmZCA9IG9wZW4oIi9kZXYvemVybyIsIE9fUkRXUiwgU19JUlVTUiB8IFNfSVdVU1IpOworLSAgaWYgKGZkID09IC0xKSB7CistICAgIHJldHVybiAxOworLSAgfQorLQorLSAgc2htID0gbW1hcChOVUxMLCA0MDk2LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgMCk7CistICBpZiAoc2htID09IE1BUF9GQUlMRUQpIHsKKy0gICAgcmV0dXJuIDI7CistICB9CistCistICBzdHJjcHkoc2htLCAiaGVsbG8iKTsKKy0KKy0gIHBpZCA9IGZvcmsoKTsKKy0gIGlmIChwaWQgPCAwKSB7CistICAgIHJldHVybiA1OworLSAgfSBlbHNlIGlmIChwaWQgPT0gMCkgeworLSAgICBzdHJjcHkoc2htLCAiYnllIik7CistICAgIHJldHVybiA2OworLSAgfQorLSAgaWYgKHdhaXQoJnN0YXR1cykgIT0gcGlkKSB7CistICAgIHJldHVybiA3OworLSAgfQorLSAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IDYpIHsKKy0gICAgcmV0dXJuIDg7CistICB9CistICBpZiAoc3RyY21wKHNobSwgImJ5ZSIpICE9IDApIHsKKy0gICAgcmV0dXJuIDk7CistICB9CistICByZXR1cm4gMDsKKy19CistXSxkbmwKKy0gICAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfWkVSTywgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKCIvZGV2L3plcm8iKSBTSE0gc3VwcG9ydF0pCistICAgIG1zZz15ZXMsbXNnPW5vLG1zZz1ubykKKy0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQorLQorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBtbWFwKCkgdXNpbmcgc2htX29wZW4oKSBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCistICBBQ19UUllfUlVOKFsKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistI2luY2x1ZGUgPHN5cy9tbWFuLmg+CistI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN0ZGlvLmg+CistCistI2lmbmRlZiBNQVBfRkFJTEVECistIyBkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQqKS0xKQorLSNlbmRpZgorLQorLWludCBtYWluKCkgeworLSAgcGlkX3QgcGlkOworLSAgaW50IHN0YXR1czsKKy0gIGludCBmZDsKKy0gIGNoYXIgKnNobTsKKy0gIGNoYXIgdG1wbmFtZVs0MDk2XTsKKy0KKy0gIHNwcmludGYodG1wbmFtZSwidGVzdC5zaG0uJWRYWFhYWFgiLCBnZXRwaWQoKSk7CistICBpZiAobWt0ZW1wKHRtcG5hbWUpID09IE5VTEwpIHsKKy0gICAgcmV0dXJuIDE7CistICB9CistICBmZCA9IHNobV9vcGVuKHRtcG5hbWUsIE9fUkRXUiB8IE9fQ1JFQVQsIFNfSVJVU1IgfCBTX0lXVVNSKTsKKy0gIGlmIChmZCA9PSAtMSkgeworLSAgICByZXR1cm4gMjsKKy0gIH0KKy0gIGlmIChmdHJ1bmNhdGUoZmQsIDQwOTYpIDwgMCkgeworLSAgICBjbG9zZShmZCk7CistICAgIHNobV91bmxpbmsodG1wbmFtZSk7CistICAgIHJldHVybiAzOworLSAgfQorLQorLSAgc2htID0gbW1hcChOVUxMLCA0MDk2LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgMCk7CistICBpZiAoc2htID09IE1BUF9GQUlMRUQpIHsKKy0gICAgcmV0dXJuIDQ7CistICB9CistICBzaG1fdW5saW5rKHRtcG5hbWUpOworLSAgY2xvc2UoZmQpOworLQorLSAgc3RyY3B5KHNobSwgImhlbGxvIik7CistCistICBwaWQgPSBmb3JrKCk7CistICBpZiAocGlkIDwgMCkgeworLSAgICByZXR1cm4gNTsKKy0gIH0gZWxzZSBpZiAocGlkID09IDApIHsKKy0gICAgc3RyY3B5KHNobSwgImJ5ZSIpOworLSAgICByZXR1cm4gNjsKKy0gIH0KKy0gIGlmICh3YWl0KCZzdGF0dXMpICE9IHBpZCkgeworLSAgICByZXR1cm4gNzsKKy0gIH0KKy0gIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSA2KSB7CistICAgIHJldHVybiA4OworLSAgfQorLSAgaWYgKHN0cmNtcChzaG0sICJieWUiKSAhPSAwKSB7CistICAgIHJldHVybiA5OworLSAgfQorLSAgcmV0dXJuIDA7CistfQorLV0sZG5sCistICAgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX1BPU0lYLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFBPU0lYIG1tYXAoKSBTSE0gc3VwcG9ydF0pCistICAgIG1zZz15ZXMsbXNnPW5vLG1zZz1ubykKKy0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQorKyAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfUE9TSVgsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgUE9TSVggbW1hcCgpIFNITSBzdXBwb3J0XSkKKyAKKyAgIEFDX01TR19DSEVDS0lORyhmb3IgbW1hcCgpIHVzaW5nIHJlZ3VsYXIgZmlsZSBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCistICBBQ19UUllfUlVOKFsKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistI2luY2x1ZGUgPHN5cy9tbWFuLmg+CistI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN0ZGlvLmg+CistCistI2lmbmRlZiBNQVBfRkFJTEVECistIyBkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQqKS0xKQorLSNlbmRpZgorLQorLWludCBtYWluKCkgeworLSAgcGlkX3QgcGlkOworLSAgaW50IHN0YXR1czsKKy0gIGludCBmZDsKKy0gIGNoYXIgKnNobTsKKy0gIGNoYXIgdG1wbmFtZVs0MDk2XTsKKy0KKy0gIHNwcmludGYodG1wbmFtZSwidGVzdC5zaG0uJWRYWFhYWFgiLCBnZXRwaWQoKSk7CistICBpZiAobWt0ZW1wKHRtcG5hbWUpID09IE5VTEwpIHsKKy0gICAgcmV0dXJuIDE7CistICB9CistICBmZCA9IG9wZW4odG1wbmFtZSwgT19SRFdSIHwgT19DUkVBVCwgU19JUlVTUiB8IFNfSVdVU1IpOworLSAgaWYgKGZkID09IC0xKSB7CistICAgIHJldHVybiAyOworLSAgfQorLSAgaWYgKGZ0cnVuY2F0ZShmZCwgNDA5NikgPCAwKSB7CistICAgIGNsb3NlKGZkKTsKKy0gICAgdW5saW5rKHRtcG5hbWUpOworLSAgICByZXR1cm4gMzsKKy0gIH0KKy0KKy0gIHNobSA9IG1tYXAoTlVMTCwgNDA5NiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZmQsIDApOworLSAgaWYgKHNobSA9PSBNQVBfRkFJTEVEKSB7CistICAgIHJldHVybiA0OworLSAgfQorLSAgdW5saW5rKHRtcG5hbWUpOworLSAgY2xvc2UoZmQpOworLQorLSAgc3RyY3B5KHNobSwgImhlbGxvIik7CistCistICBwaWQgPSBmb3JrKCk7CistICBpZiAocGlkIDwgMCkgeworLSAgICByZXR1cm4gNTsKKy0gIH0gZWxzZSBpZiAocGlkID09IDApIHsKKy0gICAgc3RyY3B5KHNobSwgImJ5ZSIpOworLSAgICByZXR1cm4gNjsKKy0gIH0KKy0gIGlmICh3YWl0KCZzdGF0dXMpICE9IHBpZCkgeworLSAgICByZXR1cm4gNzsKKy0gIH0KKy0gIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSA2KSB7CistICAgIHJldHVybiA4OworLSAgfQorLSAgaWYgKHN0cmNtcChzaG0sICJieWUiKSAhPSAwKSB7CistICAgIHJldHVybiA5OworLSAgfQorLSAgcmV0dXJuIDA7CistfQorLV0sZG5sCistICAgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX0ZJTEUsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgbW1hcCgpIFNITSBzdXBwb3J0XSkKKy0gICAgbXNnPXllcyxtc2c9bm8sbXNnPW5vKQorLSAgQUNfTVNHX1JFU1VMVChbJG1zZ10pCistCistZmxvY2tfdHlwZT11bmtub3duCistQUNfTVNHX0NIRUNLSU5HKCJ3aGV0aGVyIGZsb2NrIHN0cnVjdCBpcyBsaW51eCBvcmRlcmVkIikKKy1BQ19UUllfUlVOKFsKKy0gICNpbmNsdWRlIDxmY250bC5oPgorLSAgc3RydWN0IGZsb2NrIGxvY2sgPSB7IDEsIDIsIDMsIDQsIDUgfTsKKy0gIGludCBtYWluKCkgeyAKKy0gICAgaWYobG9jay5sX3R5cGUgPT0gMSAmJiBsb2NrLmxfd2hlbmNlID09IDIgJiYgbG9jay5sX3N0YXJ0ID09IDMgJiYgbG9jay5sX2xlbiA9PSA0KSB7CistCQlyZXR1cm4gMDsKKy0gICAgfQorLSAgICByZXR1cm4gMTsKKy0gIH0gCistXSwgWworLQlmbG9ja190eXBlPWxpbnV4CistICAgIEFDX0RFRklORShbSEFWRV9GTE9DS19MSU5VWF0sIFtdLCBbU3RydWN0IGZsb2NrIGlzIExpbnV4LXR5cGVdKQorLSAgICBBQ19NU0dfUkVTVUxUKCJ5ZXMiKQorLV0sIEFDX01TR19SRVNVTFQoIm5vIikgKQorKyAgCisrICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9GSUxFLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoKSBTSE0gc3VwcG9ydF0pCisgCistQUNfTVNHX0NIRUNLSU5HKCJ3aGV0aGVyIGZsb2NrIHN0cnVjdCBpcyBCU0Qgb3JkZXJlZCIpCistQUNfVFJZX1JVTihbCistICAjaW5jbHVkZSA8ZmNudGwuaD4KKy0gIHN0cnVjdCBmbG9jayBsb2NrID0geyAxLCAyLCAzLCA0LCA1IH07CistICBpbnQgbWFpbigpIHsgCistICAgIGlmKGxvY2subF9zdGFydCA9PSAxICYmIGxvY2subF9sZW4gPT0gMiAmJiBsb2NrLmxfdHlwZSA9PSA0ICYmIGxvY2subF93aGVuY2UgPT0gNSkgeworLQkJcmV0dXJuIDA7CistICAgIH0KKy0gICAgcmV0dXJuIDE7CistICB9IAorLV0sIFsKKy0JZmxvY2tfdHlwZT1ic2QKKy0gICAgQUNfREVGSU5FKFtIQVZFX0ZMT0NLX0JTRF0sIFtdLCBbU3RydWN0IGZsb2NrIGlzIEJTRC10eXBlXSkgCistICAgIEFDX01TR19SRVNVTFQoInllcyIpCistXSwgQUNfTVNHX1JFU1VMVCgibm8iKSApCisrICBmbG9ja190eXBlPWxpbnV4CisrICBBQ19ERUZJTkUoW0hBVkVfRkxPQ0tfTElOVVhdLCBbXSwgW1N0cnVjdCBmbG9jayBpcyBMaW51eC10eXBlXSkKKyAKKyBpZiB0ZXN0ICIkZmxvY2tfdHlwZSIgPSAidW5rbm93biI7IHRoZW4KKyAJQUNfTVNHX0VSUk9SKFtEb24ndCBrbm93IGhvdyB0byBkZWZpbmUgc3RydWN0IGZsb2NrIG9uIHRoaXMgc3lzdGVtWyxdIHNldCAtLWVuYWJsZS1vcGNhY2hlPW5vXSkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U5MDE4NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSAzYmZjYzdmZGQyMjI2MWVhZWQxMDk0OTcxNGRlMGE5MGQzMWUxMGFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMCBBdWcgMjAxNSAxNjoyOTozNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBbUEFUQ0hdIGNvbmZpZy5tNDogY2hhbmdlIEFDX1RSWV9SVU4gdG8gQUNfVFJZX0xJTksKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0FDX1RSWV9SVU4gaXMgbm90IHN1aXRhYmxlIGZvciBjcm9zcy1jb21waWxlCisKK1NpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworJSUgb3JpZ2luYWwgcGF0Y2g6IGNoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCistLS0KKyBleHQvZmlsZWluZm8vY29uZmlnLm00IHwgMzEgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0L2ZpbGVpbmZvL2NvbmZpZy5tNCBiL2V4dC9maWxlaW5mby9jb25maWcubTQKK2luZGV4IDUyM2I0ZmQuLjBhYWE0YzggMTAwNjQ0CistLS0gYS9leHQvZmlsZWluZm8vY29uZmlnLm00CisrKysgYi9leHQvZmlsZWluZm8vY29uZmlnLm00CitAQCAtMTQsMzEgKzE0LDEyIEBAIGlmIHRlc3QgIiRQSFBfRklMRUlORk8iICE9ICJubyI7IHRoZW4KKyAgICAgbGlibWFnaWMvcmVhZGNkZi5jIGxpYm1hZ2ljL3NvZnRtYWdpYy5jIGxpYm1hZ2ljL2Rlci5jIgorIAorICAgQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3RyY2FzZXN0cl0pCistICBBQ19UUllfUlVOKFsKKy0jaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPHN0cmluZ3MuaD4KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistCistaW50IG1haW4odm9pZCkKKy17CistICAgICAgICBjaGFyICpzMCwgKnMxLCAqcmV0OworLQorLSAgICAgICAgczAgPSAoY2hhciAqKSBtYWxsb2MoNDIpOworLSAgICAgICAgczEgPSAoY2hhciAqKSBtYWxsb2MoOCk7CistCistICAgICAgICBtZW1zZXQoczAsICdYJywgNDIpOworLSAgICAgICAgczBbMjRdID0gJ1knOworLSAgICAgICAgczBbMjZdID0gJ1onOworLSAgICAgICAgczBbNDFdID0gJ1wwJzsKKy0gICAgICAgIG1lbXNldChzMSwgJ3gnLCA4KTsKKy0gICAgICAgIHMxWzBdID0gJ3knOworLSAgICAgICAgczFbMl0gPSAnWic7CistICAgICAgICBzMVs3XSA9ICdcMCc7CistCistICAgICAgICByZXQgPSBzdHJjYXNlc3RyKHMwLCBzMSk7CistCistICAgICAgICByZXR1cm4gIShOVUxMICE9IHJldCk7CistfQorKyAgQUNfVFJZX0NPTVBJTEUoWworKyAgICAgI2luY2x1ZGUgPHN0cmluZy5oPgorKyAgICAgI2luY2x1ZGUgPHN0cmluZ3MuaD4KKysgICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KKysgIF0sWworKyAgICAgc3RyY2FzZXN0cihOVUxMLCBOVUxMKTsKKyAgIF0sWworICAgICBkbmwgdXNpbmcgdGhlIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uCisgICAgIEFDX01TR19SRVNVTFQoeWVzKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTMzNGM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIHBocC01LjEuNi9jb25maWd1cmUub2xkCTIwMDYtMDktMTIgMDc6NTQ6MTQuMDAwMDAwMDAwIC0wNzAwCi0rKysgcGhwLTUuMS42L2NvbmZpZ3VyZQkyMDA2LTA5LTEyIDA3OjU0OjM3LjAwMDAwMDAwMCAtMDcwMAotQEAgLTE0NzE1LDggKzE0NzE1LDYgQEAKLSAKLSAKLSAKLS0gIHVuc2V0IGFjX2N2X2Z1bmNfZGxvcGVuCi0tICB1bnNldCBhY19jdl9mdW5jX19fZGxvcGVuCi0gICB1bnNldCBmb3VuZAotICAgCi0gICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZGxvcGVuIiIuLi4gJGFjX2MiIDE+JjYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvaWNvbnYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ljb252LnBhdGNoCmluZGV4IDI1NWZiYjAuLmI2ZTNjZWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvaWNvbnYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9pY29udi5wYXRjaApAQCAtMSwxMCArMSwxOCBAQAotVXBzdHJlYW0tc3RhdHVzOiBVbmtub3duCitGcm9tIDE3Y2M1NjQ1ZjNhY2Y5NDNhNWEwNjQ2NWQwOWQwZWJjZmVhOTg3YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogV2VkLCAyIE5vdiAyMDExIDE2OjU0OjU3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVwc3RyZWFtLXN0YXR1czogVW5rbm93bgorCistLS0KKyBhY2luY2x1ZGUubTQgICAgICAgIHwgMyArKy0KKyBleHQvaWNvbnYvY29uZmlnLm00IHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYWNpbmNsdWRlLm00IGIvYWNpbmNsdWRlLm00Ci1pbmRleCBhNmMwZDg0Li5kZjExYWJkIDEwMDY0NAoraW5kZXggZDMyNzY2YS4uYWQ1MTY2ZSAxMDA2NDQKIC0tLSBhL2FjaW5jbHVkZS5tNAogKysrIGIvYWNpbmNsdWRlLm00Ci1AQCAtMjQ1Miw3ICsyNDUyLDggQEAgQUNfREVGVU4oW1BIUF9TRVRVUF9JQ09OVl0sIFsKK0BAIC0yNDQ1LDcgKzI0NDUsOCBAQCBBQ19ERUZVTihbUEhQX1NFVFVQX0lDT05WXSwgWwogICAgZG5sIENoZWNrIGxpYmMgZmlyc3QgaWYgbm8gcGF0aCBpcyBwcm92aWRlZCBpbiAtLXdpdGgtaWNvbnYKICAgIGRubAogIApAQCAtMTUsNyArMjMsNyBAQAogICAgICBkbmwgLWxpY29udiBpbi4KICAgICAgTElCU19zYXZlPSIkTElCUyIKIGRpZmYgLS1naXQgYS9leHQvaWNvbnYvY29uZmlnLm00IGIvZXh0L2ljb252L2NvbmZpZy5tNAotaW5kZXggZDY3M2IwYS4uMWZiZWYxMyAxMDA2NDQKK2luZGV4IDZhMDU2OTcuLjk3M2U3NTAgMTAwNjQ0CiAtLS0gYS9leHQvaWNvbnYvY29uZmlnLm00CiArKysgYi9leHQvaWNvbnYvY29uZmlnLm00CiBAQCAtMTUsNyArMTUsNyBAQCBpZiB0ZXN0ICIkUEhQX0lDT05WIiAhPSAibm8iOyB0aGVuCkBAIC0yNyw2ICszNSwzIEBACiAgICAgICAgICBpZiB0ZXN0IC1mICIkaS9pbmNsdWRlL2ljb252LmgiIHx8IHRlc3QgLWYgIiRpL2luY2x1ZGUvZ2ljb252LmgiOyB0aGVuCiAgICAgICAgICAgIFBIUF9JQ09OVl9QUkVGSVg9IiRpIgogICAgICAgICAgICBicmVhawotLS0gCi0xLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ltYXAtZml4LWF1dG9mb28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ltYXAtZml4LWF1dG9mb28ucGF0Y2gKaW5kZXggZGEwNGMyZC4uYjVmYjdkNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9pbWFwLWZpeC1hdXRvZm9vLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvaW1hcC1maXgtYXV0b2Zvby5wYXRjaApAQCAtMSwxMCArMSwxOCBAQAotVXBzdHJlYW0tc3RhdHVzOiBVbmtub3duCitGcm9tIGMwODRjODM0OWQxNzgwOTgwZTIzMmNiMjhiNjBhMTA5ZTNkODk0MzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogV2VkLCAyIE5vdiAyMDExIDE2OjU0OjU3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVwc3RyZWFtLXN0YXR1czogVW5rbm93bgorCistLS0KKyBhY2luY2x1ZGUubTQgICAgICAgfCAgMiArLQorIGV4dC9pbWFwL2NvbmZpZy5tNCB8IDEwICsrLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggZGYxMWFiZC4uMDZlNzIzNiAxMDA2NDQKK2luZGV4IGFkNTE2NmUuLmY2YTU1ZWMgMTAwNjQ0CiAtLS0gYS9hY2luY2x1ZGUubTQKICsrKyBiL2FjaW5jbHVkZS5tNAotQEAgLTIzNTcsNyArMjM1Nyw3IEBAIEFDX0RFRlVOKFtQSFBfU0VUVVBfT1BFTlNTTF0sWworQEAgLTIzNTAsNyArMjM1MCw3IEBAIEFDX0RFRlVOKFtQSFBfU0VUVVBfT1BFTlNTTF0sWwogICAgICAgIFBIUF9PUEVOU1NMX0RJUj0iL3Vzci9sb2NhbC9zc2wgL3Vzci9sb2NhbCAvdXNyIC91c3IvbG9jYWwvb3BlbnNzbCIKICAgICAgZmkKICAKQEAgLTE0LDcgKzIyLDcgQEAKICAgICAgICAgIE9QRU5TU0xfSU5DRElSPSRpL2luY2x1ZGUKICAgICAgICBmaQogZGlmZiAtLWdpdCBhL2V4dC9pbWFwL2NvbmZpZy5tNCBiL2V4dC9pbWFwL2NvbmZpZy5tNAotaW5kZXggM2ZjZjY3NC4uZjA4Y2FmNyAxMDA2NDQKK2luZGV4IGJhZGI2ZTIuLjhmZjgwM2MgMTAwNjQ0CiAtLS0gYS9leHQvaW1hcC9jb25maWcubTQKICsrKyBiL2V4dC9pbWFwL2NvbmZpZy5tNAogQEAgLTEwOSw3ICsxMDksNyBAQCBpZiB0ZXN0ICIkUEhQX0lNQVAiICE9ICJubyI7IHRoZW4KQEAgLTQxLDYgKzQ5LDMgQEAKICAgICAgICBJTUFQX0xJQj0kbGliCiAgICAgICAgSU1BUF9MSUJfQ0hLKCRQSFBfTElCRElSKQogICAgICAgIElNQVBfTElCX0NISyhjLWNsaWVudCkKLS0tIAotMS45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9wZWFyLW1ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9wZWFyLW1ha2VmaWxlLnBhdGNoCmluZGV4IDk5MjdkMmQuLjRiYzEwMjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGVhci1tYWtlZmlsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BlYXItbWFrZWZpbGUucGF0Y2gKQEAgLTEsMTEgKzEsMTggQEAKLVVwc3RyZWFtLXN0YXR1czogVW5rbm93bgorRnJvbSBlZGQ1NzVhNTQ2ZDU2YmI1NjgzYWZmMTk3ODJiMTY5NjNkNjFmZDBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KK0RhdGU6IFdlZCwgMiBOb3YgMjAxMSAxNjo1NDo1NyArMDEwMAorU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1zdGF0dXM6IFVua25vd24KKworLS0tCisgcGVhci9NYWtlZmlsZS5mcmFnIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvcGVhci9NYWtlZmlsZS5mcmFnIGIvcGVhci9NYWtlZmlsZS5mcmFnCi1pbmRleCAwMGJhY2FlLi43MzllZWNhIDEwMDY0NAoraW5kZXggYmJlOGVjMy4uMTZmNDNlMiAxMDA2NDQKIC0tLSBhL3BlYXIvTWFrZWZpbGUuZnJhZwogKysrIGIvcGVhci9NYWtlZmlsZS5mcmFnCi1AQCAtMTEsNyArMTEsNyBAQCBQRUFSX1BSRUZJWCA9IC1kcCBhJHtwcm9ncmFtX3ByZWZpeH0KLSBQRUFSX1NVRkZJWCA9IC1kcyBhJChwcm9ncmFtX3N1ZmZpeCkKK0BAIC0xMiw3ICsxMiw3IEBAIFBFQVJfU1VGRklYID0gLWRzIGEkKHByb2dyYW1fc3VmZml4KQorIFBFQVJfSU5TVEFMTEVSX1VSTCA9IGh0dHBzOi8vcGVhci5waHAubmV0L2luc3RhbGwtcGVhci1ub3psaWIucGhhcgogIAogIGluc3RhbGwtcGVhci1pbnN0YWxsZXI6ICQoU0FQSV9DTElfUEFUSCkKIC0JQCQodG9wX2J1aWxkZGlyKS9zYXBpL2NsaS9waHAgJChQRUFSX0lOU1RBTExfRkxBR1MpIHBlYXIvaW5zdGFsbC1wZWFyLW5vemxpYi5waGFyIC1kICIkKHBlYXJkaXIpIiAtYiAiJChiaW5kaXIpIiAke1BFQVJfUFJFRklYfSAke1BFQVJfU1VGRklYfQpAQCAtMTMsNiArMjAsMyBAQAogIAogIGluc3RhbGwtcGVhcjoKICAJQGVjaG8gIkluc3RhbGxpbmcgUEVBUiBlbnZpcm9ubWVudDogICAgICAkKElOU1RBTExfUk9PVCkkKHBlYXJkaXIpLyIKLS0tIAotMS45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waGFyLW1ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waGFyLW1ha2VmaWxlLnBhdGNoCmluZGV4IDJmN2ZlMzQuLjMzNmNmMGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhhci1tYWtlZmlsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BoYXItbWFrZWZpbGUucGF0Y2gKQEAgLTEsMTcgKzEsMjQgQEAKLUZpeCBwaGFyIHBhY2thZ2luZworRnJvbSAwODk2MmE1NmY2OTk2M2UwMTg5MmQ5OGNhNWI3NWRlODM1NGJkM2Y1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KK0RhdGU6IFdlZCwgMiBOb3YgMjAxMSAxNjo1NDo1NyArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggcGhhciBwYWNrYWdpbmcKIAogSW5oZXJpdGVkIGZyb20gT0UtQ2xhc3NpYywgd2l0aCBzb21lIGFkZGl0aW9ucyB0byBmaXggaG9zdCBwYXRocyBsZWFraW5nCiBpbnRvIHRoZSB0YXJnZXQgcGFja2FnZS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWddCiAKKy0tLQorIGV4dC9waGFyL01ha2VmaWxlLmZyYWcgfCAxNyArKystLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorCiBkaWZmIC0tZ2l0IGEvZXh0L3BoYXIvTWFrZWZpbGUuZnJhZyBiL2V4dC9waGFyL01ha2VmaWxlLmZyYWcKLWluZGV4IDY1MTZkZGYuLjM2ZTZjZjQgMTAwNjQ0CitpbmRleCAwZTM3MTNmLi4yMmY3ODk4IDEwMDY0NAogLS0tIGEvZXh0L3BoYXIvTWFrZWZpbGUuZnJhZwogKysrIGIvZXh0L3BoYXIvTWFrZWZpbGUuZnJhZwotQEAgLTUsMjAgKzUsOSBAQCBwaGFyY21kOiAkKGJ1aWxkZGlyKS9waGFyLnBocCAkKGJ1aWxkZGlyKS9waGFyLnBoYXIKK0BAIC0xMCwyMCArMTAsOSBAQCBwaGFyY21kOiAkKGJ1aWxkZGlyKS9waGFyLnBocCAkKGJ1aWxkZGlyKS9waGFyLnBoYXIKICAKLSBQSFBfUEhBUkNNRF9TRVRUSU5HUyA9IC1kICdvcGVuX2Jhc2VkaXI9JyAtZCAnb3V0cHV0X2J1ZmZlcmluZz0wJyAtZCAnbWVtb3J5X2xpbWl0PS0xJyAtZCBwaGFyLnJlYWRvbmx5PTAgLWQgJ3NhZmVfbW9kZT0wJworIFBIUF9QSEFSQ01EX1NFVFRJTkdTID0gLW4gLWQgJ29wZW5fYmFzZWRpcj0nIC1kICdvdXRwdXRfYnVmZmVyaW5nPTAnIC1kICdtZW1vcnlfbGltaXQ9LTEnIC1kIHBoYXIucmVhZG9ubHk9MCAtZCAnc2FmZV9tb2RlPTAnCiAgUEhQX1BIQVJDTURfRVhFQ1VUQUJMRSA9IGAgXAogLQlpZiB0ZXN0IC14ICIkKHRvcF9idWlsZGRpcikvJChTQVBJX0NMSV9QQVRIKSI7IHRoZW4gXAogLQkJJCh0b3Bfc3JjZGlyKS9idWlsZC9zaHRvb2wgZWNobyAtbiAtLSAiJCh0b3BfYnVpbGRkaXIpLyQoU0FQSV9DTElfUEFUSCkgLW4iOyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocDUtMDAwMS1vcGNhY2hlLWNvbmZpZy5tNC1lbmFibGUtb3BjYWNoZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhwNS0wMDAxLW9wY2FjaGUtY29uZmlnLm00LWVuYWJsZS1vcGNhY2hlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZTY3ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocDUtMDAwMS1vcGNhY2hlLWNvbmZpZy5tNC1lbmFibGUtb3BjYWNoZS5wYXRjaApAQCAtMCwwICsxLDM4NyBAQAorRnJvbSBmYWZjZmFjMDkzM2MxN2UxYmY1NTE2MDAwODBlYjA1NDExODZjYWY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMiBBcHIgMjAxOCAxNzo1NDo1MiArMDgwMAorU3ViamVjdDogW1BBVENIXSBvcGNhY2hlL2NvbmZpZy5tNDogZW5hYmxlIG9wY2FjaGUKKworV2UgY2FuJ3QgdXNlIEFDX1RSWV9SVU4gdG8gcnVuIHByb2dyYW1zIGluIGEgY3Jvc3MgY29tcGlsZSBlbnZpcm9ubWVudC4gU2V0Cit0aGUgdmFyaWFibGVzIGRpcmVjdGx5IGluc3RlYWQgc2luY2Ugd2Uga25vdyB0aGF0IHdlJ2QgYmUgcnVubmluZyBvbiBsYXRlc3QKK2Vub3VnaCBsaW51eCBrZXJuZWwuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQ29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKworJSUgb3JpZ2luYWwgcGF0Y2g6IHBocDUtMDAwMS1vcGNhY2hlLWNvbmZpZy5tNC1lbmFibGUtb3BjYWNoZS5wYXRjaAorLS0tCisgZXh0L29wY2FjaGUvY29uZmlnLm00IHwgMzQ5ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMzQxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0L29wY2FjaGUvY29uZmlnLm00IGIvZXh0L29wY2FjaGUvY29uZmlnLm00CitpbmRleCA1YThiODZjLi42ZTg3ZmE1IDEwMDY0NAorLS0tIGEvZXh0L29wY2FjaGUvY29uZmlnLm00CisrKysgYi9leHQvb3BjYWNoZS9jb25maWcubTQKK0BAIC0xMSwzNTMgKzExLDIwIEBAIGlmIHRlc3QgIiRQSFBfT1BDQUNIRSIgIT0gIm5vIjsgdGhlbgorICAgICBBQ19ERUZJTkUoSEFWRV9NUFJPVEVDVCwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtcHJvdGVjdCgpIGZ1bmN0aW9uXSkKKyAgIF0pCisgCistICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHN5c3ZpcGMgc2hhcmVkIG1lbW9yeSBzdXBwb3J0KQorLSAgQUNfVFJZX1JVTihbCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgorLSNpbmNsdWRlIDxzeXMvaXBjLmg+CistI2luY2x1ZGUgPHN5cy9zaG0uaD4KKy0jaW5jbHVkZSA8dW5pc3RkLmg+CistI2luY2x1ZGUgPHN0cmluZy5oPgorKyAgQUNfREVGSU5FKEhBVkVfU0hNX0lQQywgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBTeXNWIElQQyBTSE0gc3VwcG9ydF0pCisgCistaW50IG1haW4oKSB7CistICBwaWRfdCBwaWQ7CistICBpbnQgc3RhdHVzOworLSAgaW50IGlwY19pZDsKKy0gIGNoYXIgKnNobTsKKy0gIHN0cnVjdCBzaG1pZF9kcyBzaG1idWY7CisrICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9BTk9OLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoTUFQX0FOT04pIFNITSBzdXBwb3J0XSkKKyAKKy0gIGlwY19pZCA9IHNobWdldChJUENfUFJJVkFURSwgNDA5NiwgKElQQ19DUkVBVCB8IFNITV9SIHwgU0hNX1cpKTsKKy0gIGlmIChpcGNfaWQgPT0gLTEpIHsKKy0gICAgcmV0dXJuIDE7CistICB9CisrICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9aRVJPLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoIi9kZXYvemVybyIpIFNITSBzdXBwb3J0XSkKKyAKKy0gIHNobSA9IHNobWF0KGlwY19pZCwgTlVMTCwgMCk7CistICBpZiAoc2htID09ICh2b2lkICopLTEpIHsKKy0gICAgc2htY3RsKGlwY19pZCwgSVBDX1JNSUQsIE5VTEwpOworLSAgICByZXR1cm4gMjsKKy0gIH0KKy0KKy0gIGlmIChzaG1jdGwoaXBjX2lkLCBJUENfU1RBVCwgJnNobWJ1ZikgIT0gMCkgeworLSAgICBzaG1kdChzaG0pOworLSAgICBzaG1jdGwoaXBjX2lkLCBJUENfUk1JRCwgTlVMTCk7CistICAgIHJldHVybiAzOworLSAgfQorLQorLSAgc2htYnVmLnNobV9wZXJtLnVpZCA9IGdldHVpZCgpOworLSAgc2htYnVmLnNobV9wZXJtLmdpZCA9IGdldGdpZCgpOworLSAgc2htYnVmLnNobV9wZXJtLm1vZGUgPSAwNjAwOworLQorLSAgaWYgKHNobWN0bChpcGNfaWQsIElQQ19TRVQsICZzaG1idWYpICE9IDApIHsKKy0gICAgc2htZHQoc2htKTsKKy0gICAgc2htY3RsKGlwY19pZCwgSVBDX1JNSUQsIE5VTEwpOworLSAgICByZXR1cm4gNDsKKy0gIH0KKy0KKy0gIHNobWN0bChpcGNfaWQsIElQQ19STUlELCBOVUxMKTsKKy0KKy0gIHN0cmNweShzaG0sICJoZWxsbyIpOworLQorLSAgcGlkID0gZm9yaygpOworLSAgaWYgKHBpZCA8IDApIHsKKy0gICAgcmV0dXJuIDU7CistICB9IGVsc2UgaWYgKHBpZCA9PSAwKSB7CistICAgIHN0cmNweShzaG0sICJieWUiKTsKKy0gICAgcmV0dXJuIDY7CistICB9CistICBpZiAod2FpdCgmc3RhdHVzKSAhPSBwaWQpIHsKKy0gICAgcmV0dXJuIDc7CistICB9CistICBpZiAoIVdJRkVYSVRFRChzdGF0dXMpIHx8IFdFWElUU1RBVFVTKHN0YXR1cykgIT0gNikgeworLSAgICByZXR1cm4gODsKKy0gIH0KKy0gIGlmIChzdHJjbXAoc2htLCAiYnllIikgIT0gMCkgeworLSAgICByZXR1cm4gOTsKKy0gIH0KKy0gIHJldHVybiAwOworLX0KKy1dLGRubAorLSAgICBBQ19ERUZJTkUoSEFWRV9TSE1fSVBDLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFN5c1YgSVBDIFNITSBzdXBwb3J0XSkKKy0gICAgbXNnPXllcyxtc2c9bm8sbXNnPW5vKQorLSAgQUNfTVNHX1JFU1VMVChbJG1zZ10pCistCistICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1tYXAoKSB1c2luZyBNQVBfQU5PTiBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCistICBBQ19UUllfUlVOKFsKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistI2luY2x1ZGUgPHN5cy9tbWFuLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0KKy0jaWZuZGVmIE1BUF9BTk9OCistIyBpZmRlZiBNQVBfQU5PTllNT1VTCistIyAgZGVmaW5lIE1BUF9BTk9OIE1BUF9BTk9OWU1PVVMKKy0jIGVuZGlmCistI2VuZGlmCistI2lmbmRlZiBNQVBfRkFJTEVECistIyBkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQqKS0xKQorLSNlbmRpZgorLQorLWludCBtYWluKCkgeworLSAgcGlkX3QgcGlkOworLSAgaW50IHN0YXR1czsKKy0gIGNoYXIgKnNobTsKKy0KKy0gIHNobSA9IG1tYXAoTlVMTCwgNDA5NiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCB8IE1BUF9BTk9OLCAtMSwgMCk7CistICBpZiAoc2htID09IE1BUF9GQUlMRUQpIHsKKy0gICAgcmV0dXJuIDE7CistICB9CistCistICBzdHJjcHkoc2htLCAiaGVsbG8iKTsKKy0KKy0gIHBpZCA9IGZvcmsoKTsKKy0gIGlmIChwaWQgPCAwKSB7CistICAgIHJldHVybiA1OworLSAgfSBlbHNlIGlmIChwaWQgPT0gMCkgeworLSAgICBzdHJjcHkoc2htLCAiYnllIik7CistICAgIHJldHVybiA2OworLSAgfQorLSAgaWYgKHdhaXQoJnN0YXR1cykgIT0gcGlkKSB7CistICAgIHJldHVybiA3OworLSAgfQorLSAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IDYpIHsKKy0gICAgcmV0dXJuIDg7CistICB9CistICBpZiAoc3RyY21wKHNobSwgImJ5ZSIpICE9IDApIHsKKy0gICAgcmV0dXJuIDk7CistICB9CistICByZXR1cm4gMDsKKy19CistXSxkbmwKKy0gICAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfQU5PTiwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKE1BUF9BTk9OKSBTSE0gc3VwcG9ydF0pCistICAgIG1zZz15ZXMsbXNnPW5vLG1zZz1ubykKKy0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQorLQorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBtbWFwKCkgdXNpbmcgL2Rldi96ZXJvIHNoYXJlZCBtZW1vcnkgc3VwcG9ydCkKKy0gIEFDX1RSWV9SVU4oWworLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KKy0jaW5jbHVkZSA8c3lzL21tYW4uaD4KKy0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy0jaW5jbHVkZSA8ZmNudGwuaD4KKy0jaW5jbHVkZSA8dW5pc3RkLmg+CistI2luY2x1ZGUgPHN0cmluZy5oPgorLQorLSNpZm5kZWYgTUFQX0ZBSUxFRAorLSMgZGVmaW5lIE1BUF9GQUlMRUQgKCh2b2lkKiktMSkKKy0jZW5kaWYKKy0KKy1pbnQgbWFpbigpIHsKKy0gIHBpZF90IHBpZDsKKy0gIGludCBzdGF0dXM7CistICBpbnQgZmQ7CistICBjaGFyICpzaG07CistCistICBmZCA9IG9wZW4oIi9kZXYvemVybyIsIE9fUkRXUiwgU19JUlVTUiB8IFNfSVdVU1IpOworLSAgaWYgKGZkID09IC0xKSB7CistICAgIHJldHVybiAxOworLSAgfQorLQorLSAgc2htID0gbW1hcChOVUxMLCA0MDk2LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgMCk7CistICBpZiAoc2htID09IE1BUF9GQUlMRUQpIHsKKy0gICAgcmV0dXJuIDI7CistICB9CistCistICBzdHJjcHkoc2htLCAiaGVsbG8iKTsKKy0KKy0gIHBpZCA9IGZvcmsoKTsKKy0gIGlmIChwaWQgPCAwKSB7CistICAgIHJldHVybiA1OworLSAgfSBlbHNlIGlmIChwaWQgPT0gMCkgeworLSAgICBzdHJjcHkoc2htLCAiYnllIik7CistICAgIHJldHVybiA2OworLSAgfQorLSAgaWYgKHdhaXQoJnN0YXR1cykgIT0gcGlkKSB7CistICAgIHJldHVybiA3OworLSAgfQorLSAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IDYpIHsKKy0gICAgcmV0dXJuIDg7CistICB9CistICBpZiAoc3RyY21wKHNobSwgImJ5ZSIpICE9IDApIHsKKy0gICAgcmV0dXJuIDk7CistICB9CistICByZXR1cm4gMDsKKy19CistXSxkbmwKKy0gICAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfWkVSTywgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKCIvZGV2L3plcm8iKSBTSE0gc3VwcG9ydF0pCistICAgIG1zZz15ZXMsbXNnPW5vLG1zZz1ubykKKy0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQorLQorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBtbWFwKCkgdXNpbmcgc2htX29wZW4oKSBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCistICBBQ19UUllfUlVOKFsKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistI2luY2x1ZGUgPHN5cy9tbWFuLmg+CistI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN0ZGlvLmg+CistCistI2lmbmRlZiBNQVBfRkFJTEVECistIyBkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQqKS0xKQorLSNlbmRpZgorLQorLWludCBtYWluKCkgeworLSAgcGlkX3QgcGlkOworLSAgaW50IHN0YXR1czsKKy0gIGludCBmZDsKKy0gIGNoYXIgKnNobTsKKy0gIGNoYXIgdG1wbmFtZVs0MDk2XTsKKy0KKy0gIHNwcmludGYodG1wbmFtZSwidGVzdC5zaG0uJWRYWFhYWFgiLCBnZXRwaWQoKSk7CistICBpZiAobWt0ZW1wKHRtcG5hbWUpID09IE5VTEwpIHsKKy0gICAgcmV0dXJuIDE7CistICB9CistICBmZCA9IHNobV9vcGVuKHRtcG5hbWUsIE9fUkRXUiB8IE9fQ1JFQVQsIFNfSVJVU1IgfCBTX0lXVVNSKTsKKy0gIGlmIChmZCA9PSAtMSkgeworLSAgICByZXR1cm4gMjsKKy0gIH0KKy0gIGlmIChmdHJ1bmNhdGUoZmQsIDQwOTYpIDwgMCkgeworLSAgICBjbG9zZShmZCk7CistICAgIHNobV91bmxpbmsodG1wbmFtZSk7CistICAgIHJldHVybiAzOworLSAgfQorLQorLSAgc2htID0gbW1hcChOVUxMLCA0MDk2LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgMCk7CistICBpZiAoc2htID09IE1BUF9GQUlMRUQpIHsKKy0gICAgcmV0dXJuIDQ7CistICB9CistICBzaG1fdW5saW5rKHRtcG5hbWUpOworLSAgY2xvc2UoZmQpOworLQorLSAgc3RyY3B5KHNobSwgImhlbGxvIik7CistCistICBwaWQgPSBmb3JrKCk7CistICBpZiAocGlkIDwgMCkgeworLSAgICByZXR1cm4gNTsKKy0gIH0gZWxzZSBpZiAocGlkID09IDApIHsKKy0gICAgc3RyY3B5KHNobSwgImJ5ZSIpOworLSAgICByZXR1cm4gNjsKKy0gIH0KKy0gIGlmICh3YWl0KCZzdGF0dXMpICE9IHBpZCkgeworLSAgICByZXR1cm4gNzsKKy0gIH0KKy0gIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSA2KSB7CistICAgIHJldHVybiA4OworLSAgfQorLSAgaWYgKHN0cmNtcChzaG0sICJieWUiKSAhPSAwKSB7CistICAgIHJldHVybiA5OworLSAgfQorLSAgcmV0dXJuIDA7CistfQorLV0sZG5sCistICAgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX1BPU0lYLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFBPU0lYIG1tYXAoKSBTSE0gc3VwcG9ydF0pCistICAgIG1zZz15ZXMsbXNnPW5vLG1zZz1ubykKKy0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQorKyAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfUE9TSVgsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgUE9TSVggbW1hcCgpIFNITSBzdXBwb3J0XSkKKyAKKyAgIEFDX01TR19DSEVDS0lORyhmb3IgbW1hcCgpIHVzaW5nIHJlZ3VsYXIgZmlsZSBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCistICBBQ19UUllfUlVOKFsKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistI2luY2x1ZGUgPHN5cy9tbWFuLmg+CistI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN0ZGlvLmg+CistCistI2lmbmRlZiBNQVBfRkFJTEVECistIyBkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQqKS0xKQorLSNlbmRpZgorLQorLWludCBtYWluKCkgeworLSAgcGlkX3QgcGlkOworLSAgaW50IHN0YXR1czsKKy0gIGludCBmZDsKKy0gIGNoYXIgKnNobTsKKy0gIGNoYXIgdG1wbmFtZVs0MDk2XTsKKy0KKy0gIHNwcmludGYodG1wbmFtZSwidGVzdC5zaG0uJWRYWFhYWFgiLCBnZXRwaWQoKSk7CistICBpZiAobWt0ZW1wKHRtcG5hbWUpID09IE5VTEwpIHsKKy0gICAgcmV0dXJuIDE7CistICB9CistICBmZCA9IG9wZW4odG1wbmFtZSwgT19SRFdSIHwgT19DUkVBVCwgU19JUlVTUiB8IFNfSVdVU1IpOworLSAgaWYgKGZkID09IC0xKSB7CistICAgIHJldHVybiAyOworLSAgfQorLSAgaWYgKGZ0cnVuY2F0ZShmZCwgNDA5NikgPCAwKSB7CistICAgIGNsb3NlKGZkKTsKKy0gICAgdW5saW5rKHRtcG5hbWUpOworLSAgICByZXR1cm4gMzsKKy0gIH0KKy0KKy0gIHNobSA9IG1tYXAoTlVMTCwgNDA5NiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZmQsIDApOworLSAgaWYgKHNobSA9PSBNQVBfRkFJTEVEKSB7CistICAgIHJldHVybiA0OworLSAgfQorLSAgdW5saW5rKHRtcG5hbWUpOworLSAgY2xvc2UoZmQpOworLQorLSAgc3RyY3B5KHNobSwgImhlbGxvIik7CistCistICBwaWQgPSBmb3JrKCk7CistICBpZiAocGlkIDwgMCkgeworLSAgICByZXR1cm4gNTsKKy0gIH0gZWxzZSBpZiAocGlkID09IDApIHsKKy0gICAgc3RyY3B5KHNobSwgImJ5ZSIpOworLSAgICByZXR1cm4gNjsKKy0gIH0KKy0gIGlmICh3YWl0KCZzdGF0dXMpICE9IHBpZCkgeworLSAgICByZXR1cm4gNzsKKy0gIH0KKy0gIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSA2KSB7CistICAgIHJldHVybiA4OworLSAgfQorLSAgaWYgKHN0cmNtcChzaG0sICJieWUiKSAhPSAwKSB7CistICAgIHJldHVybiA5OworLSAgfQorLSAgcmV0dXJuIDA7CistfQorLV0sZG5sCistICAgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX0ZJTEUsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgbW1hcCgpIFNITSBzdXBwb3J0XSkKKy0gICAgbXNnPXllcyxtc2c9bm8sbXNnPW5vKQorLSAgQUNfTVNHX1JFU1VMVChbJG1zZ10pCistCistZmxvY2tfdHlwZT11bmtub3duCistQUNfTVNHX0NIRUNLSU5HKCJ3aGV0aGVyIGZsb2NrIHN0cnVjdCBpcyBsaW51eCBvcmRlcmVkIikKKy1BQ19UUllfUlVOKFsKKy0gICNpbmNsdWRlIDxmY250bC5oPgorLSAgc3RydWN0IGZsb2NrIGxvY2sgPSB7IDEsIDIsIDMsIDQsIDUgfTsKKy0gIGludCBtYWluKCkgeyAKKy0gICAgaWYobG9jay5sX3R5cGUgPT0gMSAmJiBsb2NrLmxfd2hlbmNlID09IDIgJiYgbG9jay5sX3N0YXJ0ID09IDMgJiYgbG9jay5sX2xlbiA9PSA0KSB7CistCQlyZXR1cm4gMDsKKy0gICAgfQorLSAgICByZXR1cm4gMTsKKy0gIH0gCistXSwgWworLQlmbG9ja190eXBlPWxpbnV4CistICAgIEFDX0RFRklORShbSEFWRV9GTE9DS19MSU5VWF0sIFtdLCBbU3RydWN0IGZsb2NrIGlzIExpbnV4LXR5cGVdKQorLSAgICBBQ19NU0dfUkVTVUxUKCJ5ZXMiKQorLV0sIEFDX01TR19SRVNVTFQoIm5vIikgKQorKyAgCisrICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9GSUxFLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoKSBTSE0gc3VwcG9ydF0pCisgCistQUNfTVNHX0NIRUNLSU5HKCJ3aGV0aGVyIGZsb2NrIHN0cnVjdCBpcyBCU0Qgb3JkZXJlZCIpCistQUNfVFJZX1JVTihbCistICAjaW5jbHVkZSA8ZmNudGwuaD4KKy0gIHN0cnVjdCBmbG9jayBsb2NrID0geyAxLCAyLCAzLCA0LCA1IH07CistICBpbnQgbWFpbigpIHsgCistICAgIGlmKGxvY2subF9zdGFydCA9PSAxICYmIGxvY2subF9sZW4gPT0gMiAmJiBsb2NrLmxfdHlwZSA9PSA0ICYmIGxvY2subF93aGVuY2UgPT0gNSkgeworLQkJcmV0dXJuIDA7CistICAgIH0KKy0gICAgcmV0dXJuIDE7CistICB9IAorLV0sIFsKKy0JZmxvY2tfdHlwZT1ic2QKKy0gICAgQUNfREVGSU5FKFtIQVZFX0ZMT0NLX0JTRF0sIFtdLCBbU3RydWN0IGZsb2NrIGlzIEJTRC10eXBlXSkgCistICAgIEFDX01TR19SRVNVTFQoInllcyIpCistXSwgQUNfTVNHX1JFU1VMVCgibm8iKSApCisrICBmbG9ja190eXBlPWxpbnV4CisrICBBQ19ERUZJTkUoW0hBVkVfRkxPQ0tfTElOVVhdLCBbXSwgW1N0cnVjdCBmbG9jayBpcyBMaW51eC10eXBlXSkKKyAKKyBpZiB0ZXN0ICIkZmxvY2tfdHlwZSIgPSAidW5rbm93biI7IHRoZW4KKyAJQUNfTVNHX0VSUk9SKFtEb24ndCBrbm93IGhvdyB0byBkZWZpbmUgc3RydWN0IGZsb2NrIG9uIHRoaXMgc3lzdGVtWyxdIHNldCAtLWVuYWJsZS1vcGNhY2hlPW5vXSkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHA1LWNoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHA1LWNoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMjFmOGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocDUtY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSA1ZjQ5OTg3ZTg4ZGZjYmRiODRiZTZlMGM5MDI1NDMyZmJkOTk4NzA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMCBBdWcgMjAxNSAxNjoyOTozNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBjb25maWcubTQ6IGNoYW5nZSBBQ19UUllfUlVOIHRvIEFDX1RSWV9MSU5LCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitBQ19UUllfUlVOIGlzIG5vdCBzdWl0YWJsZSBmb3IgY3Jvc3MtY29tcGlsZQorCitTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKKyUlIG9yaWdpbmFsIHBhdGNoOiBjaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaAorCislJSBvcmlnaW5hbCBwYXRjaDogcGhwNS1jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaAorLS0tCisgZXh0L2ZpbGVpbmZvL2NvbmZpZy5tNCB8IDMxICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4dC9maWxlaW5mby9jb25maWcubTQgYi9leHQvZmlsZWluZm8vY29uZmlnLm00CitpbmRleCA3ZTk4ZDYyLi44YThlYTBlIDEwMDY0NAorLS0tIGEvZXh0L2ZpbGVpbmZvL2NvbmZpZy5tNAorKysrIGIvZXh0L2ZpbGVpbmZvL2NvbmZpZy5tNAorQEAgLTE0LDMxICsxNCwxMiBAQCBpZiB0ZXN0ICIkUEhQX0ZJTEVJTkZPIiAhPSAibm8iOyB0aGVuCisgICAgIGxpYm1hZ2ljL3JlYWRjZGYuYyBsaWJtYWdpYy9zb2Z0bWFnaWMuYyIKKyAKKyAgIEFDX01TR19DSEVDS0lORyhbZm9yIHN0cmNhc2VzdHJdKQorLSAgQUNfVFJZX1JVTihbCistI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxzdHJpbmdzLmg+CistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLQorLWludCBtYWluKHZvaWQpCisteworLSAgICAgICAgY2hhciAqczAsICpzMSwgKnJldDsKKy0KKy0gICAgICAgIHMwID0gKGNoYXIgKikgbWFsbG9jKDQyKTsKKy0gICAgICAgIHMxID0gKGNoYXIgKikgbWFsbG9jKDgpOworLQorLSAgICAgICAgbWVtc2V0KHMwLCAnWCcsIDQyKTsKKy0gICAgICAgIHMwWzI0XSA9ICdZJzsKKy0gICAgICAgIHMwWzI2XSA9ICdaJzsKKy0gICAgICAgIHMwWzQxXSA9ICdcMCc7CistICAgICAgICBtZW1zZXQoczEsICd4JywgOCk7CistICAgICAgICBzMVswXSA9ICd5JzsKKy0gICAgICAgIHMxWzJdID0gJ1onOworLSAgICAgICAgczFbN10gPSAnXDAnOworLQorLSAgICAgICAgcmV0ID0gc3RyY2FzZXN0cihzMCwgczEpOworLQorLSAgICAgICAgcmV0dXJuICEoTlVMTCAhPSByZXQpOworLX0KKysgIEFDX1RSWV9DT01QSUxFKFsKKysgICAgICNpbmNsdWRlIDxzdHJpbmcuaD4KKysgICAgICNpbmNsdWRlIDxzdHJpbmdzLmg+CisrICAgICAjaW5jbHVkZSA8c3RkbGliLmg+CisrICBdLFsKKysgICAgIHN0cmNhc2VzdHIoTlVMTCwgTlVMTCk7CisgICBdLFsKKyAgICAgZG5sIHVzaW5nIHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbgorICAgICBBQ19NU0dfUkVTVUxUKHllcykKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHA1LXBlYXItbWFrZWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocDUtcGVhci1tYWtlZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmY2NDI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHA1LXBlYXItbWFrZWZpbGUucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSA3OTcyNWU4MmQ1OTgxZmM5NGViNjU3ZjBmNDZhNDk5ZGJmYzFjYzQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KK0RhdGU6IFdlZCwgMiBOb3YgMjAxMSAxNjo1NDo1NyArMDEwMAorU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1zdGF0dXM6IFVua25vd24KKworJSUgb3JpZ2luYWwgcGF0Y2g6IHBocDUtcGVhci1tYWtlZmlsZS5wYXRjaAorLS0tCisgcGVhci9NYWtlZmlsZS5mcmFnIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcGVhci9NYWtlZmlsZS5mcmFnIGIvcGVhci9NYWtlZmlsZS5mcmFnCitpbmRleCAwMGJhY2FlLi43MzllZWNhIDEwMDY0NAorLS0tIGEvcGVhci9NYWtlZmlsZS5mcmFnCisrKysgYi9wZWFyL01ha2VmaWxlLmZyYWcKK0BAIC0xMSw3ICsxMSw3IEBAIFBFQVJfUFJFRklYID0gLWRwIGEke3Byb2dyYW1fcHJlZml4fQorIFBFQVJfU1VGRklYID0gLWRzIGEkKHByb2dyYW1fc3VmZml4KQorIAorIGluc3RhbGwtcGVhci1pbnN0YWxsZXI6ICQoU0FQSV9DTElfUEFUSCkKKy0JQCQodG9wX2J1aWxkZGlyKS9zYXBpL2NsaS9waHAgJChQRUFSX0lOU1RBTExfRkxBR1MpIHBlYXIvaW5zdGFsbC1wZWFyLW5vemxpYi5waGFyIC1kICIkKHBlYXJkaXIpIiAtYiAiJChiaW5kaXIpIiAke1BFQVJfUFJFRklYfSAke1BFQVJfU1VGRklYfQorKwlAJChQSFBfTkFUSVZFX0RJUikvcGhwICQoUEVBUl9JTlNUQUxMX0ZMQUdTKSAkKGJ1aWxkZGlyKS9pbnN0YWxsLXBlYXItbm96bGliLnBoYXIgLWQgIiQocGVhcmRpcikiIC1iICIkKGJpbmRpcikiICR7UEVBUl9QUkVGSVh9ICR7UEVBUl9TVUZGSVh9CisgCisgaW5zdGFsbC1wZWFyOgorIAlAZWNobyAiSW5zdGFsbGluZyBQRUFSIGVudmlyb25tZW50OiAgICAgICQoSU5TVEFMTF9ST09UKSQocGVhcmRpcikvIgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocDUtcGhhci1tYWtlZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhwNS1waGFyLW1ha2VmaWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlMWVmZDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocDUtcGhhci1tYWtlZmlsZS5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDNlYTYyNmE4ZDA4MWY1NmIwMTAwNGI3OTkyNTM0ZDRlNmI4MWE5Y2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogV2VkLCAyIE5vdiAyMDExIDE2OjU0OjU3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBwaGFyIHBhY2thZ2luZworCitJbmhlcml0ZWQgZnJvbSBPRS1DbGFzc2ljLCB3aXRoIHNvbWUgYWRkaXRpb25zIHRvIGZpeCBob3N0IHBhdGhzIGxlYWtpbmcKK2ludG8gdGhlIHRhcmdldCBwYWNrYWdlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ10KKworJSUgb3JpZ2luYWwgcGF0Y2g6IHBocDUtcGhhci1tYWtlZmlsZS5wYXRjaAorLS0tCisgZXh0L3BoYXIvTWFrZWZpbGUuZnJhZyB8IDE3ICsrKy0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9leHQvcGhhci9NYWtlZmlsZS5mcmFnIGIvZXh0L3BoYXIvTWFrZWZpbGUuZnJhZworaW5kZXggYjhiMWI0Mi4uMTAwNWIyZCAxMDA2NDQKKy0tLSBhL2V4dC9waGFyL01ha2VmaWxlLmZyYWcKKysrKyBiL2V4dC9waGFyL01ha2VmaWxlLmZyYWcKK0BAIC01LDIwICs1LDkgQEAgcGhhcmNtZDogJChidWlsZGRpcikvcGhhci5waHAgJChidWlsZGRpcikvcGhhci5waGFyCisgCisgUEhQX1BIQVJDTURfU0VUVElOR1MgPSAtZCAnb3Blbl9iYXNlZGlyPScgLWQgJ291dHB1dF9idWZmZXJpbmc9MCcgLWQgJ21lbW9yeV9saW1pdD0tMScgLWQgcGhhci5yZWFkb25seT0wIC1kICdzYWZlX21vZGU9MCcKKyBQSFBfUEhBUkNNRF9FWEVDVVRBQkxFID0gYCBcCistCWlmIHRlc3QgLXggIiQodG9wX2J1aWxkZGlyKS8kKFNBUElfQ0xJX1BBVEgpIjsgdGhlbiBcCistCQkkKHRvcF9zcmNkaXIpL2J1aWxkL3NodG9vbCBlY2hvIC1uIC0tICIkKHRvcF9idWlsZGRpcikvJChTQVBJX0NMSV9QQVRIKSAtbiI7IFwKKy0JCWlmIHRlc3QgIngkKFBIUF9NT0RVTEVTKSIgIT0gIngiOyB0aGVuIFwKKy0JCSQodG9wX3NyY2RpcikvYnVpbGQvc2h0b29sIGVjaG8gLW4gLS0gIiAtZCBleHRlbnNpb25fZGlyPSQodG9wX2J1aWxkZGlyKS9tb2R1bGVzIjsgXAorLQkJZm9yIGkgaW4gYnoyIHpsaWIgcGhhcjsgZG8gXAorLQkJCWlmIHRlc3QgLWYgIiQodG9wX2J1aWxkZGlyKS9tb2R1bGVzLyQkaS5sYSI7IHRoZW4gXAorLQkJCQkuICQodG9wX2J1aWxkZGlyKS9tb2R1bGVzLyQkaS5sYTsgJCh0b3Bfc3JjZGlyKS9idWlsZC9zaHRvb2wgZWNobyAtbiAtLSAiIC1kIGV4dGVuc2lvbj0kJGRsbmFtZSI7IFwKKy0JCQlmaTsgXAorLQkJZG9uZTsgXAorLQkJZmk7IFwKKy0JZWxzZSBcCistCQkkKHRvcF9zcmNkaXIpL2J1aWxkL3NodG9vbCBlY2hvIC1uIC0tICIkKFBIUF9FWEVDVVRBQkxFKSI7IFwKKy0JZmk7YAorLVBIUF9QSEFSQ01EX0JBTkcgPSBgJCh0b3Bfc3JjZGlyKS9idWlsZC9zaHRvb2wgZWNobyAtbiAtLSAiJChJTlNUQUxMX1JPT1QpJChiaW5kaXIpLyQocHJvZ3JhbV9wcmVmaXgpcGhwJChwcm9ncmFtX3N1ZmZpeCkkKEVYRUVYVCkiO2AKKysJCSQodG9wX3NyY2RpcikvYnVpbGQvc2h0b29sIGVjaG8gLW4gLS0gIiQoUEhQX0VYRUNVVEFCTEUpIjsgYAorKworK1BIUF9QSEFSQ01EX0JBTkcgPSBgJCh0b3Bfc3JjZGlyKS9idWlsZC9zaHRvb2wgZWNobyAtbiAtLSAiJChiaW5kaXIpLyQocHJvZ3JhbV9wcmVmaXgpcGhwJChwcm9ncmFtX3N1ZmZpeCkkKEVYRUVYVCkiO2AKKyAKKyAkKGJ1aWxkZGlyKS9waGFyL3BoYXIuaW5jOiAkKHNyY2RpcikvcGhhci9waGFyLmluYworIAktQHRlc3QgLWQgJChidWlsZGRpcikvcGhhciB8fCBta2RpciAkKGJ1aWxkZGlyKS9waGFyCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhwX2V4ZWNfbmF0aXZlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHBfZXhlY19uYXRpdmUucGF0Y2gKaW5kZXggMDUwNmJkZC4uNmFmMGRjOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHBfZXhlY19uYXRpdmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHBfZXhlY19uYXRpdmUucGF0Y2gKQEAgLTEsMTAgKzEsMTcgQEAKLVVwc3RyZWFtLXN0YXR1czogSW5hcHByaWF0ZQorRnJvbSBkMjUxYjVhYTNkMjM4MDNkMDE2Y2ExNjgxOGUyZTFkMmYyYjcwYTAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KK0RhdGU6IFdlZCwgMiBOb3YgMjAxMSAxNjo1NDo1NyArMDEwMAorU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1zdGF0dXM6IEluYXBwcmlhdGUKKworLS0tCisgc2FwaS9jbGkvY29uZmlnLm00IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc2FwaS9jbGkvY29uZmlnLm00IGIvc2FwaS9jbGkvY29uZmlnLm00Ci1pbmRleCBjZGZhMWY3Li4wZmUxMWUzIDEwMDY0NAoraW5kZXggMjE2ODE1MS4uMjBhODFkYiAxMDA2NDQKIC0tLSBhL3NhcGkvY2xpL2NvbmZpZy5tNAogKysrIGIvc2FwaS9jbGkvY29uZmlnLm00Ci1AQCAtMzYsNyArMzYsNyBAQCBpZiB0ZXN0ICIkUEhQX0NMSSIgIT0gIm5vIjsgdGhlbgorQEAgLTUwLDcgKzUwLDcgQEAgaWYgdGVzdCAiJFBIUF9DTEkiICE9ICJubyI7IHRoZW4KICAgIGVzYWMKICAKICAgIGRubCBTZXQgZXhlY3V0YWJsZSBmb3IgdGVzdHMKQEAgLTEzLDYgKzIwLDMgQEAKICAgIFBIUF9TVUJTVChQSFBfRVhFQ1VUQUJMRSkKICAKICAgIGRubCBFeHBvc2UgdG8gTWFrZWZpbGUKLS0tIAotMS45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF81LjYuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzUuNi4zMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ4MDQ3Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzUuNi4zMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgcGhwLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNjAyNjM2ZDQ2YTYxYzBhYzA0MzJiYmY1YzA3OGZlNCIKLQotU1JDX1VSSSArPSAiZmlsZTovL2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wdGhyZWFkLWNoZWNrLXRocmVhZHMtbTQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWxwdGhyZWFkLXRvLWxpbmsucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNjIwYWJlMjVlMGQ2Y2Q1ZjA0MWEzNjBhMzBjZTU3ODMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGYzOTcxNjljYjY1ZjA1MzlmM2JjYjA0MDYwZjk3NzcwZDczZTE5MDc0YTM3YmQyYzU4Yjk4ZWJmNmVjYjEwZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNS42LjM1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF81LjYuMzUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE3YzBkNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNS42LjM1LmJiCkBAIC0wLDAgKzEsMjMgQEAKK3JlcXVpcmUgcGhwLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNjAyNjM2ZDQ2YTYxYzBhYzA0MzJiYmY1YzA3OGZlNCIKKworU1JDX1VSSSArPSAiZmlsZTovL3BocDUtY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3B0aHJlYWQtY2hlY2stdGhyZWFkcy1tNC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYWNpbmNsdWRlLXhtbDItY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFjaW5jbHVkZS11c2UtcGtnY29uZmlnLWZvci1saWJ4bWwyLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGhwNS1wZWFyLW1ha2VmaWxlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BocDUtcGhhci1tYWtlZmlsZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9waHA1LTAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5MDVhZTVmNTg2MzUxZjNjYTI5ZDA0NGM5NDg0ZDQ3NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZTc4YTdlOWNhMjFkOGVhMzk0ZDAzN2M1NWVmZmZmNDc3YTQ5ZGJhZTMxYzc3NTNjNTQ3MDM2ZjViZDczYjkyIgorCitERVBFTkRTICs9ICJsaWJtY3J5cHQiCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1tY3J5cHQ9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtleGVjX3ByZWZpeH0gXAorICAgICAgICAgICAgICAgICAiIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF83LjEuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNy4xLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZjY4YTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF83LjEuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLXJlcXVpcmUgcGhwLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jMGFmNTk5ZjY2ZDA0NjFjNTgzN2M2OTVmY2JjNWMxZSIKLQotU1JDX1VSSSArPSAiZmlsZTovL2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNwZWNpZnktdGFnLXdpdGgtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTY2NDIucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjM5N2JlNTRmMzI4MWNkZjMwYzdlZjA3NmIyOGY3ZDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzE0ZGNjMTBkZmRkN2M0NDQzZWRiNGZlMWUxMzNhNDRmMmIyYTgzNTFiZThjOWViNmFiOTIyMmQ0NWZkOWJhZSIKLQotUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsaT0ke1NUQUdJTkdfQklORElSX0NST1NTfS9teXNxbF9jb25maWcgXAotICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXBkby1teXNxbD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9teXNxbF9jb25maWcgXAotICAgICAgICAgICAgICAgICAgICAgICAgLC0td2l0aG91dC1teXNxbGkgLS13aXRob3V0LXBkby1teXNxbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAsbXlzcWw1IgotCi1GSUxFU18ke1BOfS1mcG0gKz0gIiR7c3lzY29uZmRpcn0vcGhwLWZwbS5kL3d3dy5jb25mLmRlZmF1bHQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF83LjIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmQxZTY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF83LjIuNC5iYgpAQCAtMCwwICsxLDI0IEBACityZXF1aXJlIHBocC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjdlMzY5YmM4ZDFmMmU2NDEyMzZiODAwMjAzOWE2YTIiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1hY2luY2x1ZGUubTQtc2tpcC1iaW5jb25maWctY2hlY2stZm9yLWxpYnhtbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWluLXBocF9pbmkuYy1idWlsZC1lbXB0eS1waHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1lcnJvci1jYXVzZWQtYnktYS1uZXctdmFyaWFibGUtaXMtZGVjbGFyZWQtYWZ0ZXIucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BlYXItbWFrZWZpbGUucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGhhci1tYWtlZmlsZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wY2FjaGUtY29uZmlnLm00LWVuYWJsZS1vcGNhY2hlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODY0YzY0ZmZkMmYxNjg2YjAzNWVmOGNlNmE2ZDg0NzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTE2NThhMGQ3NjRkYzk0MDIzYjlmYjYwZDRiNWViNzVkNDM4YWQxNzk4MWVmZTcwYWJiMGQwZDA5YTQ0N2VmMyIKKworUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsaT0ke1NUQUdJTkdfQklORElSX0NST1NTfS9teXNxbF9jb25maWcgXAorICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXBkby1teXNxbD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9teXNxbF9jb25maWcgXAorICAgICAgICAgICAgICAgICAgICAgICAgLC0td2l0aG91dC1teXNxbGkgLS13aXRob3V0LXBkby1teXNxbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAsbXlzcWw1IgorCitGSUxFU18ke1BOfS1mcG0gKz0gIiR7c3lzY29uZmRpcn0vcGhwLWZwbS5kL3d3dy5jb25mLmRlZmF1bHQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MzYThkMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmL3J1bi1wdGVzdApAQCAtMCwwICsxLDM4IEBACisjIS9iaW4vYmFzaAorRElSPSIkKCBjZCAiJCggZGlybmFtZSAiJHtCQVNIX1NPVVJDRVswXX0iICkiICYmIHB3ZCApIgorVEVTVF9GSUxFPSIvdG1wL3Rlc3QuZGF0YSIKKworUkVUVkFMPTAKKyMgVGVzdCBldmVyeSB3cml0aW5nIHRlc3QgYXBwbGljYXRpb24KK2ZvciB3cml0ZV9leGVfZnVsbF9wYXRoIGluICR7RElSfS9hZGRfcGVyc29uXyo7IGRvCisJaWYgWyAteCAiJHt3cml0ZV9leGVfZnVsbF9wYXRofSIgXTsgdGhlbgorCQl3cml0ZV9leGU9YGJhc2VuYW1lICR7d3JpdGVfZXhlX2Z1bGxfcGF0aH1gCisJCWVjaG8gIkdlbmVyYXRpbmcgbmV3IHRlc3QgZmlsZSB1c2luZyAke3dyaXRlX2V4ZX0uLi4iCisJCSR7d3JpdGVfZXhlX2Z1bGxfcGF0aH0gIiR7VEVTVF9GSUxFfSIKKwkJUkVUVkFMPSQ/CisJCVsgJFJFVFZBTCAtZXEgMCBdIHx8IGV4aXQgJFJFVFZBTAorCisJCSMgVGVzdCBldmVyeSByZWFkaW5nIHRlc3QgYXBwbGljYXRpb24KKwkJZm9yIHJlYWRfZXhlX2Z1bGxfcGF0aCBpbiAke0RJUn0vbGlzdF9wZW9wbGVfKjsgZG8KKwkJCXJlYWRfZXhlPWBiYXNlbmFtZSAke3JlYWRfZXhlX2Z1bGxfcGF0aH1gCisJCQllY2hvICJUZXN0OiBXcml0ZSB3aXRoICR7d3JpdGVfZXhlfTsgUmVhZCB3aXRoICR7cmVhZF9leGV9Li4uIgorCQkJaWYgWyAteCAiJHtyZWFkX2V4ZV9mdWxsX3BhdGh9IiBdOyB0aGVuCisJCQkJJHtyZWFkX2V4ZV9mdWxsX3BhdGh9ICIke1RFU1RfRklMRX0iCisJCQkJUkVUVkFMPSQ/CisJCQkJWyAkUkVUVkFMIC1lcSAwIF0gfHwgZXhpdCAkUkVUVkFMCisJCQlmaQorCQlkb25lCisKKwkJIyBDbGVhbnVwLi4uCisJCWlmIFsgLWUgIiR7VEVTVF9GSUxFfSIgXTsgdGhlbgorCQkJcm0gIiR7VEVTVF9GSUxFfSIKKwkJZmkKKwlmaQorZG9uZQorCitpZiBbICRSRVRWQUwgLWVxIDAgXSA7IHRoZW4KKyAgICBlY2hvICJQQVNTOiBwcm90b2J1ZiIKK2Vsc2UKKyAgICBlY2hvICJGQUlMOiBwcm90b2J1ZiIKK2ZpCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmXzMuNC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZTdjMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIlByb3RvY29sIEJ1ZmZlcnMgLSBzdHJ1Y3R1cmVkIGRhdGEgc2VyaWFsaXNhdGlvbiBtZWNoYW5pc20iCi1ERVNDUklQVElPTiA9ICJQcm90b2NvbCBCdWZmZXJzIGFyZSBhIHdheSBvZiBlbmNvZGluZyBzdHJ1Y3R1cmVkIGRhdGEgaW4gYW4gXAotZWZmaWNpZW50IHlldCBleHRlbnNpYmxlIGZvcm1hdC4gR29vZ2xlIHVzZXMgUHJvdG9jb2wgQnVmZmVycyBmb3IgYWxtb3N0IFwKLWFsbCBvZiBpdHMgaW50ZXJuYWwgUlBDIHByb3RvY29scyBhbmQgZmlsZSBmb3JtYXRzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvcHJvdG9idWYiCi1TRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLQotUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIgJHtQTn0tbGl0ZSIKLQotREVQRU5EUyA9ICJ6bGliIgotUkRFUEVORFNfJHtQTn0tY29tcGlsZXIgPSAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gIiR7UE59LWNvbXBpbGVyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNTk1M2M3NTJlZmM5Mjk5YjE4NGY5MWJlZjU0MDA5NSIKLQotU1JDUkVWID0gImIwNGU1Y2JhMzU2MjEyZTRlOGM2NmM2MWJiZTBjM2EyMDUzN2M1YjkiCi0KLVBWID0gIjMuNC4xK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL3Byb3RvYnVmLmdpdDticmFuY2g9My40LngiCi0KLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aC1wcm90b2M9ZWNobyIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUZJTEVTXyR7UE59LWNvbXBpbGVyID0gIiR7YmluZGlyfSAke2xpYmRpcn0vbGlicHJvdG9jJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tbGl0ZSA9ICIke2JpbmRpcn0gJHtsaWJkaXJ9L2xpYnByb3RvYnVmLWxpdGUke1NPTElCU30iCi0KLU1JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmXzMuNS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy41LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZmYjc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmXzMuNS4xLmJiCkBAIC0wLDAgKzEsODQgQEAKK1NVTU1BUlkgPSAiUHJvdG9jb2wgQnVmZmVycyAtIHN0cnVjdHVyZWQgZGF0YSBzZXJpYWxpc2F0aW9uIG1lY2hhbmlzbSIKK0RFU0NSSVBUSU9OID0gIlByb3RvY29sIEJ1ZmZlcnMgYXJlIGEgd2F5IG9mIGVuY29kaW5nIHN0cnVjdHVyZWQgZGF0YSBpbiBhbiBcCitlZmZpY2llbnQgeWV0IGV4dGVuc2libGUgZm9ybWF0LiBHb29nbGUgdXNlcyBQcm90b2NvbCBCdWZmZXJzIGZvciBhbG1vc3QgXAorYWxsIG9mIGl0cyBpbnRlcm5hbCBSUEMgcHJvdG9jb2xzIGFuZCBmaWxlIGZvcm1hdHMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1ZiIKK1NFQ1RJT04gPSAiY29uc29sZS90b29scyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorCitQQUNLQUdFX0JFRk9SRV9QTiA9ICIke1BOfS1jb21waWxlciAke1BOfS1saXRlIgorCitERVBFTkRTID0gInpsaWIiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgID0gIiBwcm90b2J1Zi1uYXRpdmUiCitSREVQRU5EU18ke1BOfS1jb21waWxlciA9ICIke1BOfSIKK1JERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIHB5dGhvbi1wcm90b2J1ZiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzU5NTNjNzUyZWZjOTI5OWIxODRmOTFiZWY1NDAwOTUiCisKK1NSQ1JFViA9ICIxMDZmZmMwNGJlMWFiZjNmZjMzOTlmNTRjY2YxNDk4MTViMjg3ZGQ5IgorCitQViA9ICIzLjUuMStnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1Zi5naXQ7YnJhbmNoPTMuNS54IFwKKwkgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAiCisKK0VYVFJBX09FQ09ORiArPSAiIC0td2l0aC1wcm90b2M9ZWNobyIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBwdGVzdAorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorVEVTVF9TUkNfRElSPSJleGFtcGxlcyIKK0xBTkdfU1VQUE9SVD0iY3BwIHB5dGhvbiIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwkjIE1vZGlmeSBtYWtlZmlsZSB0byB1c2UgdGhlIGNyb3NzLWNvbXBpbGVyCisJc2VkIC1lICJzfGMrK3wke0NYWH0gXCQoTERGTEFHUyl8ZyIgLWkgIiR7U30vJHtURVNUX1NSQ19ESVJ9L01ha2VmaWxlIgorCisJbWtkaXIgLXAgIiR7Qn0vJHtURVNUX1NSQ19ESVJ9IgorCisJIyBBZGQgdGhlIGxvY2F0aW9uIG9mIHRoZSBjcm9zcy1jb21waWxlZCBoZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMKKwkjIHdoaWNoIGhhdmVuJ3QgYmVlbiBpbnN0YWxsZWQgeWV0LgorCWNwICIke0J9L3Byb3RvYnVmLnBjIiAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCisJc2VkIC1lICdzfGxpYmRpcj18bGliZGlyPSR7UEtHX0NPTkZJR19TWVNST09UX0RJUn18JyAtaSAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCisJc2VkIC1lICdzfENmbGFnczp8Q2ZsYWdzOiAtSSR7U30vc3JjfCcgLWkgIiR7Qn0vJHtURVNUX1NSQ19ESVJ9L3Byb3RvYnVmLnBjIgorCXNlZCAtZSAnc3xMaWJzOnxMaWJzOiAtTCR7Qn0vc3JjLy5saWJzfCcgLWkgIiR7Qn0vJHtURVNUX1NSQ19ESVJ9L3Byb3RvYnVmLnBjIgorCWV4cG9ydCBQS0dfQ09ORklHX1BBVEg9IiR7Qn0vJHtURVNUX1NSQ19ESVJ9IgorCisJIyBTYXZlIHRoZSBwa2djZmcgc3lzcm9vdCB2YXJpYWJsZSwgYW5kIHVwZGF0ZSBpdCB0byBub3RoaW5nIHNvCisJIyB0aGF0IGl0IGRvZXNuJ3QgYXBwZW5kIHRoZSBzeXNyb290IHRvIHRoZSBiZWdpbm5pbmcgb2YgcGF0aHMuCisJIyBUaGUgaGVhZGVyIGFuZCBsaWJyYXJ5IGZpbGVzIGFyZW4ndCBpbnN0YWxsZWQgdG8gdGhlIHRhcmdldAorCSMgc3lzdGVtIHlldC4gIFNvIHRoZSBhYnNvbHV0ZSBwYXRocyB3ZXJlIHNwZWNpZmllZCBhYm92ZS4KKwlzYXZlX3BrZ19jb25maWdfc3lzcm9vdF9kaXI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIKKwlleHBvcnQgUEtHX0NPTkZJR19TWVNST09UX0RJUj0KKworCSMgQ29tcGlsZSB0aGUgdGVzdHMKKwlmb3IgbGFuZyBpbiAke0xBTkdfU1VQUE9SVH07IGRvCisJCW9lX3J1bm1ha2UgLUMgIiR7U30vJHtURVNUX1NSQ19ESVJ9IiAke2xhbmd9CisJZG9uZQorCisJIyBSZXN0b3JlIHRoZSBwa2djb25maWcgc3lzcm9vdCB2YXJpYWJsZQorCWV4cG9ydCBQS0dfQ09ORklHX1NZU1JPT1RfRElSPSRzYXZlX3BrZ19jb25maWdfc3lzcm9vdF9kaXIKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlsb2NhbCBvbGRkaXI9YHB3ZGAKKworCWNkICIke1N9LyR7VEVTVF9TUkNfRElSfSIKKwlpbnN0YWxsIC1kICIke0R9LyR7UFRFU1RfUEFUSH0iCisJZm9yIGkgaW4gYWRkX3BlcnNvbiogbGlzdF9wZW9wbGUqOyBkbworCQlpZiBbIC14ICIkaSIgXTsgdGhlbgorCQkJaW5zdGFsbCAiJGkiICIke0R9LyR7UFRFU1RfUEFUSH0iCisJCWZpCisJZG9uZQorCWNwICIke1N9LyR7VEVTVF9TUkNfRElSfS9hZGRyZXNzYm9va19wYjIucHkiICIke0R9LyR7UFRFU1RfUEFUSH0iCisJY2QgIiRvbGRkaXIiCit9CisKK0ZJTEVTXyR7UE59LWNvbXBpbGVyID0gIiR7YmluZGlyfSAke2xpYmRpcn0vbGlicHJvdG9jJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tbGl0ZSA9ICIke2JpbmRpcn0gJHtsaWJkaXJ9L2xpYnByb3RvYnVmLWxpdGUke1NPTElCU30iCisKK01JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3B1c2V0XzEuNS43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcHVzZXRfMS41LjcuYmIKaW5kZXggOGY2NTMyYy4uMTU2ZTUyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcHVzZXRfMS41LjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcHVzZXRfMS41LjcuYmIKQEAgLTMsMTQgKzMsOSBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgogCi1TUkNOQU1FID0gImNwdXNldCIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbHBlY2hhY2VrLyR7U1JDTkFNRX0vYXJjaGl2ZS92JHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmFkNzliMjZiYTAzZjU1OTYwNGQ3NDUxM2NjMzQzOTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzIzMzRlMTY0NDE1ZWQ1YWVjODNjNWZmYzNkYzAxYzQxODQwNmViMDJkOTZkODgxZmRmZDQ5NTU4N2ZmMGMwMSIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gImFlNjI5YWExZGM5NTkzNDI3NDVhZDk3NDA2YWRkZGY2M2JiNmRiZGQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbHBlY2hhY2VrL2NwdXNldC5naXQ7cHJvdG9jb2w9aHR0cHM7IgogCiBpbmhlcml0IGRpc3R1dGlscwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZXNfMy4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZXNfMy4wLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NWZjNTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdXR1cmVzXzMuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIGNvbmN1cnJlbnQuZnV0dXJlcyBtb2R1bGUgcHJvdmlkZXMgYSBoaWdoLWxldmVsIGludGVyZmFjZSBmb3IgYXN5bmNocm9ub3VzbHkgZXhlY3V0aW5nIGNhbGxhYmxlcy4iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTNkNzhjNWJiMTVhYzY0MWQzNGYyZGRjM2JkN2Y1MWZhIgotSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3B5dGhvbmZ1dHVyZXMiCi1ERVBFTkRTID0gInB5dGhvbiIKLQotU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvZi9mdXR1cmVzL2Z1dHVyZXMtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImNlZDJjMzY1ZTUxODI0MjUxMmQ3YTM5OGI1MTVmZjk1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA1NDI1MjUxNDVkNWFmYzk4NGM4OGY5MTRhMGM4NWM3NzUyN2Y2NTk0NjYxN2VkYjUyNzRmNzI0MDZmOTgxZGYiCi0KLVMgPSAiJHtXT1JLRElSfS9mdXR1cmVzLSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZXNfMy4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZXNfMy4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VlOTQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlc18zLjIuMC5iYgpAQCAtMCwwICsxLDEzIEBACitERVNDUklQVElPTiA9ICJUaGUgY29uY3VycmVudC5mdXR1cmVzIG1vZHVsZSBwcm92aWRlcyBhIGhpZ2gtbGV2ZWwgaW50ZXJmYWNlIGZvciBhc3luY2hyb25vdXNseSBleGVjdXRpbmcgY2FsbGFibGVzLiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJQU0YiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04MzRkOTgyZjk3M2M0OGI2ZDY2MmI1OTQ0YzVhYjU2NyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hZ3JvbmhvbG0vcHl0aG9uZnV0dXJlcyIKK0RFUEVORFMgPSAicHl0aG9uIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDFiMjk5YTA2Yjk2Y2NiNTlmNzAzMjQ3MTZkYzAwMTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWVjMDJhYTdkNjc0YWNiODYxOGFmYjEyN2UyN2ZkZTdmYzY4OTk0YzA0MzdhZDc1OWZhMDk0YTU3NGFkYjI2NSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3QvMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3QvMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoCmluZGV4IGEzOTFmN2UuLjlhMTE0NDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtc3lzcm9vdC1wYXRoLXRvLUdJX0RBVEFESVItZG9uLXQtc2UucGF0Y2gKQEAgLTE0LDI4ICsxNCwxNSBAQAogaW5kZXggMmMwY2ZiZC4uY2ZjYjNiZiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTk0LDcgKzE5NCw3IEBAIFBLR19DSEVDS19NT0RVTEVTKEdJLAotICAgICBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wID49IGludHJvc3BlY3Rpb25fcmVxdWlyZWRfdmVyc2lvbgotICkKK0BAIC0xNTUsNyArMTU1LDcgQEAgUEtHX0NIRUNLX01PRFVMRVMoR0ksCisgCisgR09CSkVDVF9JTlRST1NQRUNUSU9OX0NIRUNLKGludHJvc3BlY3Rpb25fcmVxdWlyZWRfdmVyc2lvbikKICAKIC1HSV9EQVRBRElSPSQoJFBLR19DT05GSUcgLS12YXJpYWJsZT1naWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCkKICtHSV9EQVRBRElSPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSJCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdpZGF0YWRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wKQogIEFDX1NVQlNUKEdJX0RBVEFESVIpCiAgCiAgaWYgdGVzdCAiJGVuYWJsZV9jYWlybyIgIT0gbm87IHRoZW4KLUBAIC0yMTksMTIgKzIxOSw2IEBAIEFDX0FSR19XSVRIKGNvbW1vbiwKLSAgICAgd2l0aF9jb21tb249eWVzKQotIEFNX0NPTkRJVElPTkFMKFdJVEhfQ09NTU9OLCB0ZXN0ICIkd2l0aF9jb21tb24iID0gInllcyIpCi0gCi0tSU5UUk9TUEVDVElPTl9TQ0FOTkVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfc2Nhbm5lciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLUlOVFJPU1BFQ1RJT05fQ09NUElMRVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9jb21waWxlciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLQotLUFDX1NVQlNUKElOVFJPU1BFQ1RJT05fU0NBTk5FUikKLS1BQ19TVUJTVChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKQotLQotICMgY29tcGlsZXIgd2FybmluZ3MsIGVycm9ycywgcmVxdWlyZWQgY2ZsYWdzLCBhbmQgY29kZSBjb3ZlcmFnZSBzdXBwb3J0Ci0gR05PTUVfQ09NUElMRV9XQVJOSU5HUyhbbWF4aW11bV0pCi0gQUNfTVNHX0NIRUNLSU5HKGZvciBHbm9tZSBjb2RlIGNvdmVyYWdlIHN1cHBvcnQpCiAtLSAKIDIuMS40CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQyZTE2NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z29iamVjdF8zLjIyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBHT2JqZWN0IGJpbmRpbmdzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weWd0ay5vcmcvIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZGlzdHV0aWxzLWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVBZVEhPTl9CQVNFVkVSU0lPTiA9ICIyLjciCi1QWVRIT05fUE4gPSAicHl0aG9uIgotCi1ERVBFTkRTICs9ICJnbm9tZS1jb21tb24tbmF0aXZlIHB5dGhvbiBnbGliLTIuMCIKLQotU1JDTkFNRT0icHlnb2JqZWN0IgotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzLyR7U1JDTkFNRX0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZDQxMTdlZDVkNTU0ZDI1ZmQ3NzE4ODA3ZmJmODE5ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOGIyOWNmYjA4ZWZjODBmN2E4NjMwYTI3MzRkZWM2NWE5OWMxYjU5ZjFlNTc3MWM2NzFkMmU0ZWQ4YTVjYmU3IgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtY2Fpcm8gLS13aXRoLXB5dGhvbj0ke1BZVEhPTn0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tc2V0dXB0b29scyBweXRob24taW1wb3J0bGliIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBSZW1vdmUgZmlsZXMgdGhhdCBjbGFzaCB3aXRoIHB5dGhvbjMtcHlnb2JqZWN0OyB0aGVpciBjb250ZW50IGlzIHNhbWUKLSAgICBybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0vcHlnb2JqZWN0LTMuMC8vcHlnb2JqZWN0LmggJHtEfSR7bGliZGlyfS9wa2djb25maWcKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMjguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjY1YmExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4yOC4wLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIEdPYmplY3QgYmluZGluZ3MiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5Z3RrLm9yZy8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBkaXN0dXRpbHMtYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUFlUSE9OX0JBU0VWRVJTSU9OID0gIjIuNyIKK1BZVEhPTl9QTiA9ICJweXRob24iCisKK0RFUEVORFMgKz0gImdub21lLWNvbW1vbi1uYXRpdmUgcHl0aG9uIGdsaWItMi4wIgorCitTUkNOQU1FPSJweWdvYmplY3QiCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvJHtTUkNOQU1FfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7U1JDTkFNRX0tJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImIyOWQ2OWVkYjYzYWUxZjU1NWFmZWIxOWY5MGI5OTk2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQyYjQ3YjI2MWI0NWFlZGZjNzdlMDJlM2M5MGEwMWNkNzRkNmY4NmMzMjczYzE4NjBhMDU0ZDUzMWQ2MDZlNWEiCisKK1MgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jYWlybyAtLXdpdGgtcHl0aG9uPSR7UFlUSE9OfSIKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1zZXR1cHRvb2xzIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBSZW1vdmUgZmlsZXMgdGhhdCBjbGFzaCB3aXRoIHB5dGhvbjMtcHlnb2JqZWN0OyB0aGVpciBjb250ZW50IGlzIHNhbWUKKyAgICBybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0vcHlnb2JqZWN0LTMuMC8vcHlnb2JqZWN0LmggJHtEfSR7bGliZGlyfS9wa2djb25maWcKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3NpcC9zaXBfNC4xOS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvc2lwL3NpcF80LjE5LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkODM3YzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvc2lwL3NpcF80LjE5LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIlNJUCBpcyBhIEMrKy9QeXRob24gV3JhcHBlciBHZW5lcmF0b3IiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnJpdmVyYmFua2NvbXB1dGluZy5jby51ay9zaXAiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLUdQTDI7bWQ1PWU5MTM1NWQ4YTZmOGJkOGY3YzY5OWQ2Mjg2M2M3MzAzIgotCi1pbmhlcml0IHB5dGhvbi1kaXIKLQotREVQRU5EUyA9ICJweXRob24iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvcHlxdC9zaXAvc2lwLSR7UFZ9L3NpcC0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiNGY0OGUyMTI4OTBlYmU1ODRlOGQ4MDRjZmJjZmM2MWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDMyYjRhYWQyNTI1NGU2OTk3OTEzZTMzYjFjYTNjZjVmZDIxZDU3MjlhNTBhM2NlMmVkY2NiZWE4MmM4MDUzMyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVBBQ0tBR0VTICs9ICJweXRob24tc2lwIgotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgZWNobyAicHlfcGxhdGZvcm0gPSBsaW51eCIgPiBzaXAuY2ZnCi0gICAgZWNobyAicHlfaW5jX2RpciA9ICUoc3lzcm9vdCkvJHtpbmNsdWRlZGlyfS9weXRob24lKHB5X21ham9yKS4lKHB5X21pbm9yKSIgPj4gc2lwLmNmZwotICAgIGVjaG8gInNpcF9iaW5fZGlyID0gJHtEfS8ke2JpbmRpcn0iID4+IHNpcC5jZmcKLSAgICBlY2hvICJzaXBfaW5jX2RpciA9ICR7RH0vJHtpbmNsdWRlZGlyfSIgPj4gc2lwLmNmZwotICAgIGVjaG8gInNpcF9tb2R1bGVfZGlyID0gJHtEfS8ke2xpYmRpcn0vcHl0aG9uJShweV9tYWpvcikuJShweV9taW5vcikvc2l0ZS1wYWNrYWdlcyIgPj4gc2lwLmNmZwotICAgIGVjaG8gInNpcF9zaXBfZGlyID0gJHtEfS8ke2RhdGFkaXJ9L3NpcCIgPj4gc2lwLmNmZwotICAgIHB5dGhvbiBjb25maWd1cmUucHkgLS1jb25maWd1cmF0aW9uIHNpcC5jZmcgLS1zeXNyb290ICR7U1RBR0lOR19ESVJfSE9TVH0gQ0M9IiR7Q0N9IiBDWFg9IiR7Q1hYfSIgTElOSz0iJHtDWFh9IiBTVFJJUD0iIiBMSU5LX1NITElCPSIke0NYWH0iIENGTEFHUz0iJHtDRkxBR1N9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU30iIExGTEFHUz0iJHtMREZMQUdTfSIKLX0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBlY2hvICJweV9wbGF0Zm9ybSA9IGxpbnV4IiA+IHNpcC5jZmcKLSAgICBlY2hvICJweV9pbmNfZGlyID0gJHtpbmNsdWRlZGlyfS9weXRob24lKHB5X21ham9yKS4lKHB5X21pbm9yKSIgPj4gc2lwLmNmZwotICAgIGVjaG8gInNpcF9iaW5fZGlyID0gJHtEfS8ke2JpbmRpcn0iID4+IHNpcC5jZmcKLSAgICBlY2hvICJzaXBfaW5jX2RpciA9ICR7RH0vJHtpbmNsdWRlZGlyfSIgPj4gc2lwLmNmZwotICAgIGVjaG8gInNpcF9tb2R1bGVfZGlyID0gJHtEfS8ke2xpYmRpcn0vcHl0aG9uJShweV9tYWpvcikuJShweV9taW5vcikvc2l0ZS1wYWNrYWdlcyIgPj4gc2lwLmNmZwotICAgIGVjaG8gInNpcF9zaXBfZGlyID0gJHtEfS8ke2RhdGFkaXJ9L3NpcCIgPj4gc2lwLmNmZwotICAgIHB5dGhvbiBjb25maWd1cmUucHkgLS1jb25maWd1cmF0aW9uIHNpcC5jZmcgLS1zeXNyb290ICR7U1RBR0lOR19ESVJfTkFUSVZFfQotfQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwKLX0KLQotRklMRVNfcHl0aG9uLXNpcCA9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzLyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy8uZGVidWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9zaXAvc2lwXzQuMTkuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3NpcC9zaXBfNC4xOS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhOTQ0YjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9zaXAvc2lwXzQuMTkuOC5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIlNJUCBpcyBhIEMrKy9QeXRob24gV3JhcHBlciBHZW5lcmF0b3IiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnJpdmVyYmFua2NvbXB1dGluZy5jby51ay9zaXAiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLUdQTDI7bWQ1PWU5MTM1NWQ4YTZmOGJkOGY3YzY5OWQ2Mjg2M2M3MzAzIgorCitpbmhlcml0IHB5dGhvbi1kaXIKKworREVQRU5EUyA9ICJweXRob24iCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvcHlxdC9zaXAvc2lwLSR7UFZ9L3NpcC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMDYyNWZiMjAzNDdkNGZmMWI1ZGE1NTE1MzliZTA3MjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2VhZjdhMmVhN2Q0ZDM4YTU2ZGQ2ZDI1MDY1NzQ0NjRiZGRmN2NmMjg0Yzk2MDgwMTY3OTk0MjM3N2MyOTdiYyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK1BBQ0tBR0VTICs9ICJweXRob24tc2lwIgorCitkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgZWNobyAicHlfcGxhdGZvcm0gPSBsaW51eCIgPiBzaXAuY2ZnCisgICAgZWNobyAicHlfaW5jX2RpciA9ICUoc3lzcm9vdCkvJHtpbmNsdWRlZGlyfS9weXRob24lKHB5X21ham9yKS4lKHB5X21pbm9yKSIgPj4gc2lwLmNmZworICAgIGVjaG8gInNpcF9iaW5fZGlyID0gJHtEfS8ke2JpbmRpcn0iID4+IHNpcC5jZmcKKyAgICBlY2hvICJzaXBfaW5jX2RpciA9ICR7RH0vJHtpbmNsdWRlZGlyfSIgPj4gc2lwLmNmZworICAgIGVjaG8gInNpcF9tb2R1bGVfZGlyID0gJHtEfS8ke2xpYmRpcn0vcHl0aG9uJShweV9tYWpvcikuJShweV9taW5vcikvc2l0ZS1wYWNrYWdlcyIgPj4gc2lwLmNmZworICAgIGVjaG8gInNpcF9zaXBfZGlyID0gJHtEfS8ke2RhdGFkaXJ9L3NpcCIgPj4gc2lwLmNmZworICAgIHB5dGhvbiBjb25maWd1cmUucHkgLS1jb25maWd1cmF0aW9uIHNpcC5jZmcgLS1zeXNyb290ICR7U1RBR0lOR19ESVJfSE9TVH0gQ0M9IiR7Q0N9IiBDWFg9IiR7Q1hYfSIgTElOSz0iJHtDWFh9IiBTVFJJUD0iIiBMSU5LX1NITElCPSIke0NYWH0iIENGTEFHUz0iJHtDRkxBR1N9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU30iIExGTEFHUz0iJHtMREZMQUdTfSIKK30KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICBlY2hvICJweV9wbGF0Zm9ybSA9IGxpbnV4IiA+IHNpcC5jZmcKKyAgICBlY2hvICJweV9pbmNfZGlyID0gJHtpbmNsdWRlZGlyfS9weXRob24lKHB5X21ham9yKS4lKHB5X21pbm9yKSIgPj4gc2lwLmNmZworICAgIGVjaG8gInNpcF9iaW5fZGlyID0gJHtEfS8ke2JpbmRpcn0iID4+IHNpcC5jZmcKKyAgICBlY2hvICJzaXBfaW5jX2RpciA9ICR7RH0vJHtpbmNsdWRlZGlyfSIgPj4gc2lwLmNmZworICAgIGVjaG8gInNpcF9tb2R1bGVfZGlyID0gJHtEfS8ke2xpYmRpcn0vcHl0aG9uJShweV9tYWpvcikuJShweV9taW5vcikvc2l0ZS1wYWNrYWdlcyIgPj4gc2lwLmNmZworICAgIGVjaG8gInNpcF9zaXBfZGlyID0gJHtEfS8ke2RhdGFkaXJ9L3NpcCIgPj4gc2lwLmNmZworICAgIHB5dGhvbiBjb25maWd1cmUucHkgLS1jb25maWd1cmF0aW9uIHNpcC5jZmcgLS1zeXNyb290ICR7U1RBR0lOR19ESVJfTkFUSVZFfQorfQorZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwKK30KKworRklMRVNfcHl0aG9uLXNpcCA9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzLyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy8uZGVidWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90ay9jb25mc2VhcmNoLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90ay9jb25mc2VhcmNoLmRpZmYKaW5kZXggYzUxZTQ3NS4uNGRiZDlhNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGsvY29uZnNlYXJjaC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RrL2NvbmZzZWFyY2guZGlmZgpAQCAtNCwyOSArNCwzMiBAQAogCiAtLS0gdGs4LjUtOC41Ljgub3JpZy91bml4L2NvbmZpZ3VyZQogKysrIHRrOC41LTguNS44L3VuaXgvY29uZmlndXJlCi1AQCAtMTQzMSw2ICsxNDMxLDcgQEAKLSAJCQlgbHMgLWQgJHtwcmVmaXh9L2xpYiAyPi9kZXYvbnVsbGAgXAotIAkJCWBscyAtZCAvdXNyL2xvY2FsL2xpYiAyPi9kZXYvbnVsbGAgXAorQEAgLTE0MzEsNyArMTQzMSw4IEBACiAgCQkJYGxzIC1kIC91c3IvY29udHJpYi9saWIgMj4vZGV2L251bGxgIFwKKyAJCQlgbHMgLWQgL3Vzci9sb2NhbC9saWIgMj4vZGV2L251bGxgIFwKKyAJCQlgbHMgLWQgL3Vzci9wa2cvbGliIDI+L2Rldi9udWxsYCBcCiArCQkJYGxzIC1kIC91c3Ivc2hhcmUvdGNsdGsvdGNsOC41IDI+L2Rldi9udWxsYCBcCiAgCQkJYGxzIC1kIC91c3IvbGliIDI+L2Rldi9udWxsYCBcCisgCQkJYGxzIC1kIC91c3IvbGliNjQgMj4vZGV2L251bGxgIFwKICAJCQk7IGRvCiAgCQkgICAgaWYgdGVzdCAtZiAiJGkvdGNsQ29uZmlnLnNoIiA7IHRoZW4KIC0tLSB0azguNS04LjUuOC5vcmlnL3VuaXgvdGNsLm00CiArKysgdGs4LjUtOC41LjgvdW5peC90Y2wubTQKLUBAIC05Myw2ICs5Myw3IEBACi0gCQkJYGxzIC1kICR7cHJlZml4fS9saWIgMj4vZGV2L251bGxgIFwKLSAJCQlgbHMgLWQgL3Vzci9sb2NhbC9saWIgMj4vZGV2L251bGxgIFwKK0BAIC05Myw3ICs5Myw4IEBACiAgCQkJYGxzIC1kIC91c3IvY29udHJpYi9saWIgMj4vZGV2L251bGxgIFwKKyAJCQlgbHMgLWQgL3Vzci9sb2NhbC9saWIgMj4vZGV2L251bGxgIFwKKyAJCQlgbHMgLWQgL3Vzci9wa2cvbGliIDI+L2Rldi9udWxsYCBcCiArCQkJYGxzIC1kIC91c3Ivc2hhcmUvdGNsdGsvdGNsOC41IDI+L2Rldi9udWxsYCBcCiAgCQkJYGxzIC1kIC91c3IvbGliIDI+L2Rldi9udWxsYCBcCisgCQkJYGxzIC1kIC91c3IvbGliNjQgMj4vZGV2L251bGxgIFwKICAJCQk7IGRvCiAgCQkgICAgaWYgdGVzdCAtZiAiJGkvdGNsQ29uZmlnLnNoIiA7IHRoZW4KLUBAIC0yMjMsNiArMjI0LDcgQEAKK0BAIC0yMjMsNyArMjI0LDggQEAKICAJCQlgbHMgLWQgJHtwcmVmaXh9L2xpYiAyPi9kZXYvbnVsbGAgXAogIAkJCWBscyAtZCAvdXNyL2xvY2FsL2xpYiAyPi9kZXYvbnVsbGAgXAogIAkJCWBscyAtZCAvdXNyL2NvbnRyaWIvbGliIDI+L2Rldi9udWxsYCBcCiArCQkJYGxzIC1kIC91c3Ivc2hhcmUvdGNsdGsvdGs4LjUgMj4vZGV2L251bGxgIFwKICAJCQlgbHMgLWQgL3Vzci9saWIgMj4vZGV2L251bGxgIFwKKyAJCQlgbHMgLWQgL3Vzci9saWI2NCAyPi9kZXYvbnVsbGAgXAogIAkJCTsgZG8KICAJCSAgICBpZiB0ZXN0IC1mICIkaS90a0NvbmZpZy5zaCIgOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90a184LjYuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RrXzguNi42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2JmMzk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RrXzguNi42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29sIENvbW1hbmQgTGFuZ3VhZ2UgVG9vbEtpdCBFeHRlbnNpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vdGNsLnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiZGV2ZWwvdGNsdGsiCi0KLSMgaHR0cDovL3d3dy50Y2wudGsvc29mdHdhcmUvdGNsdGsvbGljZW5zZS5odG1sCi1MSUNFTlNFID0gInRjbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL2xpY2Vuc2UudGVybXM7bWQ1PWM4OGY5OWRlY2VjMTFhZmE5NjdhZDMzZDMxNGY4N2ZlIFwKLSAgICBmaWxlOi8vLi4vY29tcGF0L2xpY2Vuc2UudGVybXM7bWQ1PWM4OGY5OWRlY2VjMTFhZmE5NjdhZDMzZDMxNGY4N2ZlIFwKLSAgICBmaWxlOi8vLi4vZG9jL2xpY2Vuc2UudGVybXM7bWQ1PWM4OGY5OWRlY2VjMTFhZmE5NjdhZDMzZDMxNGY4N2ZlIFwKLSAgICBmaWxlOi8vLi4vbGlicmFyeS9saWNlbnNlLnRlcm1zO21kNT1jODhmOTlkZWNlYzExYWZhOTY3YWQzM2QzMTRmODdmZSBcCi0gICAgZmlsZTovLy4uL21hY29zeC9saWNlbnNlLnRlcm1zO21kNT1jODhmOTlkZWNlYzExYWZhOTY3YWQzM2QzMTRmODdmZSBcCi0gICAgZmlsZTovLy4uL3Rlc3RzL2xpY2Vuc2UudGVybXM7bWQ1PWM4OGY5OWRlY2VjMTFhZmE5NjdhZDMzZDMxNGY4N2ZlIFwKLSAgICBmaWxlOi8vLi4vdW5peC9saWNlbnNlLnRlcm1zO21kNT1jODhmOTlkZWNlYzExYWZhOTY3YWQzM2QzMTRmODdmZSBcCi0gICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT1jODhmOTlkZWNlYzExYWZhOTY3YWQzM2QzMTRmODdmZSBcCi0gICAgZmlsZTovLy4uL3hsaWIvbGljZW5zZS50ZXJtczttZDU9Yzg4Zjk5ZGVjZWMxMWFmYTk2N2FkMzNkMzE0Zjg3ZmUgXAotIgotCi1ERVBFTkRTID0gInRjbCB2aXJ0dWFsL2xpYngxMSBsaWJ4dCIKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKLSAgICBmaWxlOi8vY29uZnNlYXJjaC5kaWZmO3N0cmlwbGV2ZWw9MiBcCi0gICAgZmlsZTovL25vbi1saW51eC5kaWZmO3N0cmlwbGV2ZWw9MiBcCi0gICAgZmlsZTovL3RrbGlicmFyeS5kaWZmO3N0cmlwbGV2ZWw9MiBcCi0gICAgZmlsZTovL3RrcHJpdmF0ZS5kaWZmO3N0cmlwbGV2ZWw9MiBcCi0gICAgZmlsZTovL2ZpeC14ZnQuZGlmZiBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS51c2UuZm9udGNvbmZpZy53aXRoLnhmdC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZGQ3ZGJiM2E2NTIzYzQyZDA1ZjZhYjZlODYwOTZlOTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDYyYzM3MWE3MWI0NzQ0ZWQ4MzBlM2MyMWQyNzk2OGMzMWRiYTc0ZGQyYzQ1ZjM2YjliMDcxZTZkODhlYjE5ZCIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSR7UFZ9L3VuaXgiCi0KLSMgU2hvcnQgdmVyc2lvbiBmb3JtYXQ6ICI4LjYiCi1WRVIgPSAiJHtAb3MucGF0aC5zcGxpdGV4dChkLmdldFZhcignUFYnKSlbMF19IgotCi1MREZMQUdTICs9ICItV2wsLXJwYXRoLCR7bGliZGlyfS90Y2x0ay8ke1BWfS9saWIiCi1pbmhlcml0IGF1dG90b29scyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS10aHJlYWRzIFwKLSAgICAtLXdpdGgteCBcCi0gICAgLS13aXRoLXRjbD0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgbG4gLXNmIGxpYnRrJHtWRVJ9LnNvICR7RH0ke2xpYmRpcn0vbGlidGske1ZFUn0uc28uMAotICAgIG9lX2xpYmluc3RhbGwgLXNvIGxpYnRrJHtWRVJ9ICR7RH0ke2xpYmRpcn0KLSAgICBsbiAtc2Ygd2lzaCR7VkVSfSAke0R9JHtiaW5kaXJ9L3dpc2gKLQotICAgICMgRXZlbiBhZnRlciBwYXNzaW5nIGxpYmRpcj0ke2xpYmRpcn0gYXQgY29uZmlnLCBzb21lIGluY29ycmVjdCBkaXJzIGFyZSBzdGlsbCBnZW5lcmF0ZWQgZm9yIHRoZSBtdWx0aWxpYiBidWlsZAotICAgIGlmIFsgIiRsaWJkaXIiICE9ICIvdXNyL2xpYiIgXTsgdGhlbgotICAgICAgICAjIE1vdmUgZmlsZXMgdG8gY29ycmVjdCBsaWJyYXJ5IGRpcmVjdG9yeQotICAgICAgICBtdiAke0R9L3Vzci9saWIvdGske1ZFUn0vKiAke0R9LyR7bGliZGlyfS90ayR7VkVSfS8KLSAgICAgICAgIyBSZW1vdmUgdW5uZWVkZWQvaW5jb3JyZWN0IGRpciAoJ3Vzci9saWIvJykKLSAgICAgICAgcm0gLXJmICR7RH0vdXNyL2xpYgotICAgIGZpCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJ4ZnQiCi1QQUNLQUdFQ09ORklHW3hmdF0gPSAiLS1lbmFibGUteGZ0LC0tZGlzYWJsZS14ZnQseGZ0IgotUEFDS0FHRUNPTkZJR1t4c3NdID0gIi0tZW5hYmxlLXhzcywtLWRpc2FibGUteHNzLGxpYnhzY3Juc2F2ZXIgbGlieGV4dCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWxpYiIKLQotRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWJ0ayR7VkVSfS5zbyoiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RrKiIKLQotIyBpc24ndCBnZXR0aW5nIHBpY2tlZCB1cCBieSBzaGxpYnMgY29kZQotUkRFUEVORFNfJHtQTn0gKz0gInRrLWxpYiIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGtfOC42LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90a184LjYuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2RjNGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGtfOC42LjguYmIKQEAgLTAsMCArMSw3OSBAQAorU1VNTUFSWSA9ICJUb29sIENvbW1hbmQgTGFuZ3VhZ2UgVG9vbEtpdCBFeHRlbnNpb24iCitIT01FUEFHRSA9ICJodHRwOi8vdGNsLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiZGV2ZWwvdGNsdGsiCisKKyMgaHR0cDovL3d3dy50Y2wudGsvc29mdHdhcmUvdGNsdGsvbGljZW5zZS5odG1sCitMSUNFTlNFID0gInRjbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL2xpY2Vuc2UudGVybXM7bWQ1PWM4OGY5OWRlY2VjMTFhZmE5NjdhZDMzZDMxNGY4N2ZlIFwKKyAgICBmaWxlOi8vLi4vY29tcGF0L2xpY2Vuc2UudGVybXM7bWQ1PWM4OGY5OWRlY2VjMTFhZmE5NjdhZDMzZDMxNGY4N2ZlIFwKKyAgICBmaWxlOi8vLi4vZG9jL2xpY2Vuc2UudGVybXM7bWQ1PWM4OGY5OWRlY2VjMTFhZmE5NjdhZDMzZDMxNGY4N2ZlIFwKKyAgICBmaWxlOi8vLi4vbGlicmFyeS9saWNlbnNlLnRlcm1zO21kNT1jODhmOTlkZWNlYzExYWZhOTY3YWQzM2QzMTRmODdmZSBcCisgICAgZmlsZTovLy4uL21hY29zeC9saWNlbnNlLnRlcm1zO21kNT1jODhmOTlkZWNlYzExYWZhOTY3YWQzM2QzMTRmODdmZSBcCisgICAgZmlsZTovLy4uL3Rlc3RzL2xpY2Vuc2UudGVybXM7bWQ1PWM4OGY5OWRlY2VjMTFhZmE5NjdhZDMzZDMxNGY4N2ZlIFwKKyAgICBmaWxlOi8vLi4vdW5peC9saWNlbnNlLnRlcm1zO21kNT1jODhmOTlkZWNlYzExYWZhOTY3YWQzM2QzMTRmODdmZSBcCisgICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT1jODhmOTlkZWNlYzExYWZhOTY3YWQzM2QzMTRmODdmZSBcCisgICAgZmlsZTovLy4uL3hsaWIvbGljZW5zZS50ZXJtczttZDU9Yzg4Zjk5ZGVjZWMxMWFmYTk2N2FkMzNkMzE0Zjg3ZmUgXAorIgorCitERVBFTkRTID0gInRjbCB2aXJ0dWFsL2xpYngxMSBsaWJ4dCIKKworU1JDX1VSSSA9ICJcCisgICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKKyAgICBmaWxlOi8vY29uZnNlYXJjaC5kaWZmO3N0cmlwbGV2ZWw9MiBcCisgICAgZmlsZTovL25vbi1saW51eC5kaWZmO3N0cmlwbGV2ZWw9MiBcCisgICAgZmlsZTovL3RrbGlicmFyeS5kaWZmO3N0cmlwbGV2ZWw9MiBcCisgICAgZmlsZTovL3RrcHJpdmF0ZS5kaWZmO3N0cmlwbGV2ZWw9MiBcCisgICAgZmlsZTovL2ZpeC14ZnQuZGlmZiBcCisgICAgZmlsZTovL2NvbmZpZ3VyZS51c2UuZm9udGNvbmZpZy53aXRoLnhmdC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNWUwZmFlY2JhNDU4ZWUxMzg2MDc4ZmIyMjhkMDA4YmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDllN2JjYTA4ZGRlOTUxOTVhMjdmNTk0ZjdjODUwYjA4OGJlMzU3YTdjNzA5NmU0NGUxMTU4YzdhNWZkN2IzMyIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSR7UFZ9L3VuaXgiCisKKyMgU2hvcnQgdmVyc2lvbiBmb3JtYXQ6ICI4LjYiCitWRVIgPSAiJHtAb3MucGF0aC5zcGxpdGV4dChkLmdldFZhcignUFYnKSlbMF19IgorCitMREZMQUdTICs9ICItV2wsLXJwYXRoLCR7bGliZGlyfS90Y2x0ay8ke1BWfS9saWIiCitpbmhlcml0IGF1dG90b29scyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWVuYWJsZS10aHJlYWRzIFwKKyAgICAtLXdpdGgteCBcCisgICAgLS13aXRoLXRjbD0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgbG4gLXNmIGxpYnRrJHtWRVJ9LnNvICR7RH0ke2xpYmRpcn0vbGlidGske1ZFUn0uc28uMAorICAgIG9lX2xpYmluc3RhbGwgLXNvIGxpYnRrJHtWRVJ9ICR7RH0ke2xpYmRpcn0KKyAgICBsbiAtc2Ygd2lzaCR7VkVSfSAke0R9JHtiaW5kaXJ9L3dpc2gKKworICAgICMgRXZlbiBhZnRlciBwYXNzaW5nIGxpYmRpcj0ke2xpYmRpcn0gYXQgY29uZmlnLCBzb21lIGluY29ycmVjdCBkaXJzIGFyZSBzdGlsbCBnZW5lcmF0ZWQgZm9yIHRoZSBtdWx0aWxpYiBidWlsZAorICAgIGlmIFsgIiRsaWJkaXIiICE9ICIvdXNyL2xpYiIgXTsgdGhlbgorICAgICAgICAjIE1vdmUgZmlsZXMgdG8gY29ycmVjdCBsaWJyYXJ5IGRpcmVjdG9yeQorICAgICAgICBtdiAke0R9L3Vzci9saWIvdGske1ZFUn0vKiAke0R9LyR7bGliZGlyfS90ayR7VkVSfS8KKyAgICAgICAgIyBSZW1vdmUgdW5uZWVkZWQvaW5jb3JyZWN0IGRpciAoJ3Vzci9saWIvJykKKyAgICAgICAgcm0gLXJmICR7RH0vdXNyL2xpYgorICAgIGZpCit9CisKK1BBQ0tBR0VDT05GSUcgPz89ICJ4ZnQiCitQQUNLQUdFQ09ORklHW3hmdF0gPSAiLS1lbmFibGUteGZ0LC0tZGlzYWJsZS14ZnQseGZ0IgorUEFDS0FHRUNPTkZJR1t4c3NdID0gIi0tZW5hYmxlLXhzcywtLWRpc2FibGUteHNzLGxpYnhzY3Juc2F2ZXIgbGlieGV4dCIKKworUEFDS0FHRVMgPSsgIiR7UE59LWxpYiIKKworRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWJ0ayR7VkVSfS5zbyoiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RrKiIKKworIyBpc24ndCBnZXR0aW5nIHBpY2tlZCB1cCBieSBzaGxpYnMgY29kZQorUkRFUEVORFNfJHtQTn0gKz0gInRrLWxpYiIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUtbWFzdGVyZmlsZXMvcmVtb3ZlLXBvbGljeS1vZi11c3ItbG9jYWwtc2Jpbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzL3JlbW92ZS1wb2xpY3ktb2YtdXNyLWxvY2FsLXNiaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmOGRlYmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUtbWFzdGVyZmlsZXMvcmVtb3ZlLXBvbGljeS1vZi11c3ItbG9jYWwtc2Jpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotRGlyZWN0b3J5IC91c3IvbG9jYWwgaXMgbm90IHVzZWQgZm9yIHVzLiBSZW1vdmUgdGhlIHBvbGljeSB0aGF0IG5vdCB0byBpbnN0YWxsCi1iaW5hcmllcyB0byAvdXNyL2xvY2FsL3NiaW4uCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi1kaWZmIC0tZ2l0IGEvY2ZlX2ludGVybmFsL3VwZGF0ZS91cGRhdGVfYmlucy5jZiBiL2NmZV9pbnRlcm5hbC91cGRhdGUvdXBkYXRlX2JpbnMuY2YKLWluZGV4IDE3OTZjYWEuLjY5N2FmMGQgMTAwNjQ0Ci0tLS0gYS9jZmVfaW50ZXJuYWwvdXBkYXRlL3VwZGF0ZV9iaW5zLmNmCi0rKysgYi9jZmVfaW50ZXJuYWwvdXBkYXRlL3VwZGF0ZV9iaW5zLmNmCi1AQCAtNTUsMTYgKzU1LDYgQEAgYnVuZGxlIGFnZW50IGNmZV9pbnRlcm5hbF9iaW5zCi0gICAgICAgZGVwdGhfc2VhcmNoID0+IHVfcmVjdXJzZV9iYXNlZGlyKCJpbmYiKSwKLSAgICAgICBhY3Rpb24gPT4gdV9pbW1lZGlhdGU7Ci0gCi0tICAgICAgIi91c3IvbG9jYWwvc2Jpbi8kKGFnZW50cykiCi0tICAgICAgY29tbWVudCA9PiAiQ3JlYXRlIHN5bWxpbmtzIG9mIENGRSBiaW5hcmllcyBpbiAvdXNyL2xvY2FsL3NiaW4iLAotLSAgICAgIGhhbmRsZSA9PiBjYW5vbmlmeSgiY2ZlX2ludGVybmFsX2JpbnNfZmlsZXNfc2Jpbl8kKGFnZW50cykiKSwKLS0gICAgICBtb3ZlX29ic3RydWN0aW9ucyA9PiAidHJ1ZSIsCi0tICAgICAgbGlua19mcm9tID0+IHVfbG5fcygiJChzeXMud29ya2RpcikvYmluLyQoYWdlbnRzKSIpOwotLQotLSAgICAgICIvdXNyL2xvY2FsL3NiaW4vJChhZ2VudHMpLmNmc2F2ZWQiCi0tICAgICAgY29tbWVudCA9PiAiUmVtb3ZlIGFsbCAuY2ZzYXZlZCBmaWxlIGV4dGVuc2lvbiIsCi0tICAgICAgaGFuZGxlID0+IGNhbm9uaWZ5KCJjZmVfaW50ZXJuYWxfYmluc19maWxlc19yZW1vdmVfJChhZ2VudClfY2ZzYXZlZCIpLAotLSAgICAgIGRlbGV0ZSA9PiB1X3RpZHk7Ci0gfQotIAotIGJ1bmRsZSBhZ2VudCBjZmVfaW50ZXJuYWxfdXBkYXRlX2JpbnMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuMTAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuMTAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTJlN2NjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUtbWFzdGVyZmlsZXNfMy4xMC4yLmJiCkBAIC0wLDAgKzEsMzYgQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE0IC0gMjAxNyBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMKK1NVTU1BUlkgPSAiQmFzZSBwb2xpY3kgZm9yIENGRW5naW5lIgorCitERVNDUklQVElPTiA9ICJDRkVuZ2luZSBpcyBhbiBJVCBpbmZyYXN0cnVjdHVyZSBhdXRvbWF0aW9uIGZyYW1ld29yayBcCit0aGF0IGhlbHBzIGVuZ2luZWVycywgc3lzdGVtIGFkbWluaXN0cmF0b3JzIGFuZCBvdGhlciBzdGFrZWhvbGRlcnMgXAoraW4gYW4gSVQgc3lzdGVtIHRvIG1hbmFnZSBhbmQgdW5kZXJzdGFuZCBJVCBpbmZyYXN0cnVjdHVyZSB0aHJvdWdob3V0IFwKK2l0cyBsaWZlY3ljbGUuIENGRW5naW5lIHRha2VzIHN5c3RlbXMgZnJvbSBCdWlsZCB0byBEZXBsb3ksIE1hbmFnZSBhbmQgQXVkaXQuIFwKKyBcCitUaGlzIHBhY2thZ2UgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIHN0YWJsZSBiYXNlIHBvbGljeSBmb3IgXAoraW5zdGFsbGF0aW9ucyBhbmQgdXBncmFkZXMsIGFuZCBpcyB1c2VkIGJ5IENGRW5naW5lIDMuNiBhbmQgbmV3ZXIuIFwKKyBcCitUaGUgY29udGVudHMgb2YgdGhpcyBwYWNrZ2UgYXJlIGludGVuZGVkIHRvIGxpdmUgaW4gYC92YXIvY2ZlbmdpbmUvbWFzdGVyZmlsZXNgIFwKK29yIHdoZXJldmVyIGAkKHN5cy5tYXN0ZXJkaXIpYCBwb2ludHMuIFwKKyIKKworSE9NRVBBR0UgPSAiaHR0cDovL2NmZW5naW5lLmNvbSIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05Zjc2NDI2ZjllZjhjNmY2NzM5ZmFkZDIxZDgxN2E0ZiIKKworU1JDX1VSSSA9ICJodHRwczovL2NmZW5naW5lLXBhY2thZ2UtcmVwb3MuczMuYW1hem9uYXdzLmNvbS90YXJiYWxscy8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMjQ3ZWY0ZThmM2NlZTVlZmE5OGRhNTBjMzI2ZTVhNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDE4YThkNzFmNDUxZDBiNWRkMWY1ZTU3OTQ1MmIyOWI5OWI2NjRmMmJiMDgyN2RiYmE5YTYxNWYyNzY0ZGY2IgorCitpbmhlcml0IGF1dG90b29scworCitleHBvcnQgRVhQTElDSVRfVkVSU0lPTj0iJHtQVn0iCisKK0VYVFJBX09FQ09ORiA9ICItLXByZWZpeD0ke2RhdGFkaXJ9L2NmZW5naW5lIgorCitGSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9L2NmZW5naW5lIgorCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWNvcmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS1tYXN0ZXJmaWxlc18zLjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDAxYzUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuOS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE2IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgotIwotU1VNTUFSWSA9ICJCYXNlIHBvbGljeSBmb3IgQ0ZFbmdpbmUiCi0KLURFU0NSSVBUSU9OID0gIkNGRW5naW5lIGlzIGFuIElUIGluZnJhc3RydWN0dXJlIGF1dG9tYXRpb24gZnJhbWV3b3JrIFwKLXRoYXQgaGVscHMgZW5naW5lZXJzLCBzeXN0ZW0gYWRtaW5pc3RyYXRvcnMgYW5kIG90aGVyIHN0YWtlaG9sZGVycyBcCi1pbiBhbiBJVCBzeXN0ZW0gdG8gbWFuYWdlIGFuZCB1bmRlcnN0YW5kIElUIGluZnJhc3RydWN0dXJlIHRocm91Z2hvdXQgXAotaXRzIGxpZmVjeWNsZS4gQ0ZFbmdpbmUgdGFrZXMgc3lzdGVtcyBmcm9tIEJ1aWxkIHRvIERlcGxveSwgTWFuYWdlIGFuZCBBdWRpdC4gXAotIFwKLVRoaXMgcGFja2FnZSBpcyBpbnRlbmRlZCB0byBwcm92aWRlIGEgc3RhYmxlIGJhc2UgcG9saWN5IGZvciBcCi1pbnN0YWxsYXRpb25zIGFuZCB1cGdyYWRlcywgYW5kIGlzIHVzZWQgYnkgQ0ZFbmdpbmUgMy42IGFuZCBuZXdlci4gXAotIFwKLVRoZSBjb250ZW50cyBvZiB0aGlzIHBhY2tnZSBhcmUgaW50ZW5kZWQgdG8gbGl2ZSBpbiBgL3Zhci9jZmVuZ2luZS9tYXN0ZXJmaWxlc2AgXAotb3Igd2hlcmV2ZXIgYCQoc3lzLm1hc3RlcmRpcilgIHBvaW50cy4gXAotIgotCi1IT01FUEFHRSA9ICJodHRwOi8vY2ZlbmdpbmUuY29tIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTUyY2QzZDEzYWY5MzE4MDgyMjg4OGFiMDA4OGU5MzI4IgotCi1TUkNfVVJJID0gImh0dHBzOi8vY2ZlbmdpbmUtcGFja2FnZS1yZXBvcy5zMy5hbWF6b25hd3MuY29tL3RhcmJhbGxzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcG9saWN5LW9mLXVzci1sb2NhbC1zYmluLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiMTAxZGRjZDU0NjczOGFmNmVjOTFiZTVjMjk3Y2IyNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2M2RlYzJmODY0OWY1ZjI3ODhjZDQ2M2RjY2Y0N2Y4ZGJlOTQxNTIyYWNmY2YzMDkzNTE3Zjk4M2JiZmEwNjA2IgotCi1pbmhlcml0IGF1dG90b29scwotCi1leHBvcnQgRVhQTElDSVRfVkVSU0lPTj0iJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICItLXByZWZpeD0ke2xvY2Fsc3RhdGVkaXJ9L2NmZW5naW5lIgotCi1GSUxFU18ke1BOfSArPSAiJHtsb2NhbHN0YXRlZGlyfS9jZmVuZ2luZSIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1jb3JlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmVfMy4xMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmVfMy4xMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NmIwYTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZV8zLjEwLjIuYmIKQEAgLTAsMCArMSw3MyBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE3IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIworU1VNTUFSWSA9ICJDRkVuZ2luZSBpcyBhbiBJVCBpbmZyYXN0cnVjdHVyZSBhdXRvbWF0aW9uIGZyYW1ld29yayIKKworREVTQ1JJUFRJT04gPSAiQ0ZFbmdpbmUgaXMgYW4gSVQgaW5mcmFzdHJ1Y3R1cmUgYXV0b21hdGlvbiBmcmFtZXdvcmsgXAordGhhdCBoZWxwcyBlbmdpbmVlcnMsIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBhbmQgb3RoZXIgc3Rha2Vob2xkZXJzIFwKK2luIGFuIElUIHN5c3RlbSB0byBtYW5hZ2UgYW5kIHVuZGVyc3RhbmQgSVQgaW5mcmFzdHJ1Y3R1cmUgdGhyb3VnaG91dCBcCitpdHMgbGlmZWN5Y2xlLiBDRkVuZ2luZSB0YWtlcyBzeXN0ZW1zIGZyb20gQnVpbGQgdG8gRGVwbG95LCBNYW5hZ2UgYW5kIEF1ZGl0LiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2NmZW5naW5lLmNvbSIKKworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY4YjM0ODI4YWIzNzNkNmIxYmI0YjBmYzYwYTc4NDk0IgorCitERVBFTkRTID0gImF0dHIgdG9reW9jYWJpbmV0IgorCitTUkNfVVJJID0gImh0dHBzOi8vY2ZlbmdpbmUtcGFja2FnZS1yZXBvcy5zMy5hbWF6b25hd3MuY29tL3RhcmJhbGxzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jaGFuZ2UtaGFyZC1jb2RlZC1saWItcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXQtcGF0aC1vZi1kZWZhdWx0LWNvbmZpZy1maWxlLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImMxNmJhZjA4MTg5YTFhZjZmY2YyZTJmZjYxMTAyOTkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0ZmE5YWM3Mjc2ZGJhN2I4NWQ2NzU3YWFiMmYwOTI5YWI4ZDNiMTE1Y2IwZTdiMGNmOTg0NzYwMzQ3NDI5ZDciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKKworZXhwb3J0IEVYUExJQ0lUX1ZFUlNJT049IiR7UFZ9IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY2ZlbmdpbmUzLnNlcnZpY2UgY2YtYXBhY2hlLnNlcnZpY2UgY2YtaHViLnNlcnZpY2UgY2YtcG9zdGdyZXMuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgY2YtcnVuYWxlcnRzLnNlcnZpY2UgY2YtY29uc3VtZXIuc2VydmljZSBjZi1leGVjZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjZi1tb25pdG9yZC5zZXJ2aWNlICBjZi1yZWRpcy1zZXJ2ZXIuc2VydmljZSAgY2Ytc2VydmVyZC5zZXJ2aWNlIFwKKyIKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZGlzYWJsZSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnBjcmUgb3BlbnNzbCBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLXdpdGgtbGlieG1sMj15ZXMsLS13aXRoLWxpYnhtbDI9bm8sbGlieG1sMiwiCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWw9eWVzLC0td2l0aC1teXNxbD1ubyxteXNxbCwiCitQQUNLQUdFQ09ORklHW3Bvc3RncmVzcWxdID0gIi0td2l0aC1wb3N0Z3Jlc3FsPXllcywtLXdpdGgtcG9zdGdyZXNxbD1ubyxwb3N0Z3Jlc3FsLCIKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtbGliYWNsPXllcywtLXdpdGgtbGliYWNsPW5vLGFjbCwiCitQQUNLQUdFQ09ORklHW2xpYnZpcnRdID0gIi0td2l0aC1saWJ2aXJ0PXllcywtLXdpdGgtbGlidmlydD1ubyxsaWJ2aXJ0LCIKK1BBQ0tBR0VDT05GSUdbbGlicGNyZV0gPSAiLS13aXRoLXBjcmU9eWVzLC0td2l0aC1wY3JlPW5vLGxpYnBjcmUsIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbD15ZXMsLS13aXRoLW9wZW5zc2w9bm8sb3BlbnNzbCwiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbT15ZXMsLS13aXRoLXBhbT1ubyxsaWJwYW0sIgorUEFDS0FHRUNPTkZJR1tsaWJ5YW1sXSA9ICItLXdpdGgtbGlieWFtbCwtLXdpdGhvdXQtbGlieWFtbCxsaWJ5YW1sLCIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQtc2VydmljZT0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0td2l0aG91dC1zeXN0ZW1kLXNlcnZpY2UiCitQQUNLQUdFQ09ORklHW2xpYmN1cmxdID0gIi0td2l0aC1saWJjdXJsLC0td2l0aG91dC1saWJjdXJsLGN1cmwsIgorCitFWFRSQV9PRUNPTkYgPSAiaHdfY3ZfZnVuY192YV9jb3B5PXllcyAtLXdpdGgtaW5pdC1zY3JpcHQ9JHtzeXNjb25mZGlyfS9pbml0LmQgLS13aXRoLXRva3lvY2FiaW5ldCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vYmluCisgICAgZm9yIGYgaW4gYGxzICR7RH0ke2JpbmRpcn1gOyBkbworICAgICAgICBsbiAtcyAke2JpbmRpcn0vYGJhc2VuYW1lICRmYCAke0R9JHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vYmluLworICAgIGRvbmUKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorICAgIGNhdCA8PCBFT0YgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L2NmZW5naW5lMworUlVOX0NGX1NFUlZFUkQ9MQorUlVOX0NGX0VYRUNEPTEKK1JVTl9DRl9NT05JVE9SRD0xCitSVU5fQ0ZfSFVCPTAKK0VPRgorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1IC1EICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jZmVuZ2luZTMgJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2NmZW5naW5lMworICAgICAgICBzZWQgLWkgLWUgJ3MjL2V0Yy9pbml0LmQjJHtkYXRhZGlyfS8ke0JQTn0jJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8qLnNlcnZpY2UKKyAgICBmaQorfQorCitSREVQRU5EU18ke1BOfSArPSAiJHtCUE59LW1hc3RlcmZpbGVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmVfMy45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZV8zLjkuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFhOGRlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZV8zLjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE0IC0gMjAxNiBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KLSMKLVNVTU1BUlkgPSAiQ0ZFbmdpbmUgaXMgYW4gSVQgaW5mcmFzdHJ1Y3R1cmUgYXV0b21hdGlvbiBmcmFtZXdvcmsiCi0KLURFU0NSSVBUSU9OID0gIkNGRW5naW5lIGlzIGFuIElUIGluZnJhc3RydWN0dXJlIGF1dG9tYXRpb24gZnJhbWV3b3JrIFwKLXRoYXQgaGVscHMgZW5naW5lZXJzLCBzeXN0ZW0gYWRtaW5pc3RyYXRvcnMgYW5kIG90aGVyIHN0YWtlaG9sZGVycyBcCi1pbiBhbiBJVCBzeXN0ZW0gdG8gbWFuYWdlIGFuZCB1bmRlcnN0YW5kIElUIGluZnJhc3RydWN0dXJlIHRocm91Z2hvdXQgXAotaXRzIGxpZmVjeWNsZS4gQ0ZFbmdpbmUgdGFrZXMgc3lzdGVtcyBmcm9tIEJ1aWxkIHRvIERlcGxveSwgTWFuYWdlIGFuZCBBdWRpdC4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9jZmVuZ2luZS5jb20iCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jZDU5YzM2NTBjOGI3ZmYzNmJhYjFjYzY1ODdiMDk3YSIKLQotREVQRU5EUyA9ICJhdHRyIHRva3lvY2FiaW5ldCIKLQotU1JDX1VSSSA9ICJodHRwczovL2NmZW5naW5lLXBhY2thZ2UtcmVwb3MuczMuYW1hem9uYXdzLmNvbS90YXJiYWxscy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY2hhbmdlLWhhcmQtY29kZWQtbGliLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2V0LXBhdGgtb2YtZGVmYXVsdC1jb25maWctZmlsZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2M2RhMzk2NTVjZmNhMzBjYTg4NWZjYzRhMWJmOGFhNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMmEzOGFlZGYxMTk5YzIzNjFlMTMzNWUwZDRhMWQ5OGY5ZWZhN2NkNTkxYmNiNjQ3ZjM1YzczOTViYjY2ZjJkIgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kCi0KLWV4cG9ydCBFWFBMSUNJVF9WRVJTSU9OPSIke1BWfSIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNmZW5naW5lMy5zZXJ2aWNlIGNmZW5naW5lMy13ZWIuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZGlzYWJsZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnBjcmUgb3BlbnNzbCBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLXdpdGgtbGlieG1sMj15ZXMsLS13aXRoLWxpYnhtbDI9bm8sbGlieG1sMiwiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWw9eWVzLC0td2l0aC1teXNxbD1ubyxteXNxbCwiCi1QQUNLQUdFQ09ORklHW3Bvc3RncmVzcWxdID0gIi0td2l0aC1wb3N0Z3Jlc3FsPXllcywtLXdpdGgtcG9zdGdyZXNxbD1ubyxwb3N0Z3Jlc3FsLCIKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtbGliYWNsPXllcywtLXdpdGgtbGliYWNsPW5vLGFjbCwiCi1QQUNLQUdFQ09ORklHW2xpYnZpcnRdID0gIi0td2l0aC1saWJ2aXJ0PXllcywtLXdpdGgtbGlidmlydD1ubyxsaWJ2aXJ0LCIKLVBBQ0tBR0VDT05GSUdbbGlicGNyZV0gPSAiLS13aXRoLXBjcmU9eWVzLC0td2l0aC1wY3JlPW5vLGxpYnBjcmUsIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbD15ZXMsLS13aXRoLW9wZW5zc2w9bm8sb3BlbnNzbCwiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbT15ZXMsLS13aXRoLXBhbT1ubyxsaWJwYW0sIgotUEFDS0FHRUNPTkZJR1tsaWJ5YW1sXSA9ICItLXdpdGgtbGlieWFtbCwtLXdpdGhvdXQtbGlieWFtbCxsaWJ5YW1sLCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQtc2VydmljZT0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0td2l0aG91dC1zeXN0ZW1kLXNlcnZpY2UiCi1QQUNLQUdFQ09ORklHW2xpYmN1cmxdID0gIi0td2l0aC1saWJjdXJsLC0td2l0aG91dC1saWJjdXJsLGN1cmwsIgotCi1FWFRSQV9PRUNPTkYgPSAiaHdfY3ZfZnVuY192YV9jb3B5PXllcyAtLXdpdGgtaW5pdC1zY3JpcHQ9JHtzeXNjb25mZGlyfS9pbml0LmQgLS13aXRoLXRva3lvY2FiaW5ldCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vYmluCi0gICAgZm9yIGYgaW4gYGxzICR7RH0ke2JpbmRpcn1gOyBkbwotICAgICAgICBsbiAtcyAke2JpbmRpcn0vYGJhc2VuYW1lICRmYCAke0R9JHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vYmluLwotICAgIGRvbmUKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotICAgIGNhdCA8PCBFT0YgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L2NmZW5naW5lMwotUlVOX0NGX1NFUlZFUkQ9MQotUlVOX0NGX0VYRUNEPTEKLVJVTl9DRl9NT05JVE9SRD0xCi1SVU5fQ0ZfSFVCPTAKLUVPRgotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1IC1EICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jZmVuZ2luZTMgJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2NmZW5naW5lMwotICAgICAgICBzZWQgLWkgLWUgJ3MjL2V0Yy9pbml0LmQjJHtkYXRhZGlyfS8ke0JQTn0jJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8qLnNlcnZpY2UKLSAgICBmaQotfQotCi1SREVQRU5EU18ke1BOfSArPSAiJHtCUE59LW1hc3RlcmZpbGVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY21waS1iaW5kaW5ncy9jbXBpLWJpbmRpbmdzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NtcGktYmluZGluZ3MvY21waS1iaW5kaW5nc19naXQuYmIKaW5kZXggMjUxNjZhYi4uOTg3YzA5ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY21waS1iaW5kaW5ncy9jbXBpLWJpbmRpbmdzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jbXBpLWJpbmRpbmdzL2NtcGktYmluZGluZ3NfZ2l0LmJiCkBAIC0yNCw2ICsyNCwxMCBAQAogRVhUUkFfT0VDTUFLRSA9ICItRExJQj0nJHtiYXNlbGlifScgXAogICAgICAgICAgICAgICAgICAtRFBZVEhPTl9JTkNMVURFX1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059IgogCisjIFdpdGggTmluamEgaXQgZmFpbHMgd2l0aDoKKyMgbmluamE6IGVycm9yOiBidWlsZC5uaW5qYToyODI6IGJhZCAkLWVzY2FwZSAobGl0ZXJhbCAkIG11c3QgYmUgd3JpdHRlbiBhcyAkJCkKK09FQ01BS0VfR0VORVJBVE9SID0gIlVuaXggTWFrZWZpbGVzIgorCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICBleHBvcnQgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0KICAgICBleHBvcnQgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Rhc2gvZGFzaF8wLjUuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Rhc2gvZGFzaF8wLjUuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhjYTYwZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kYXNoL2Rhc2hfMC41LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIlNtYWxsIGFuZCBmYXN0IFBPU0lYLWNvbXBsaWFudCBzaGVsbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb25kb3IuYXBhbmEub3JnLmF1L35oZXJiZXJ0L2Rhc2gvIgotU0VDVElPTiA9ICJTeXN0ZW0gRW52aXJvbm1lbnQvU2hlbGxzIgotCi1MSUNFTlNFID0gIkJTRCAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWI1MjYyYjRhMWExYmZmNzJiNDhlOTM1NTMxOTc2ZDJlIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dvbmRvci5hcGFuYS5vcmcuYXUvfmhlcmJlcnQvJHtCUE59L2ZpbGVzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1wcmludGYtZm9ybWF0LWVycm9ycy13aXRoLWNsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjVjMTUyMjA5NjgwZGFiM2MzMTllODkyM2Y2YzUxMzc4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM2ZGIzYTIzNzc0N2IwMmQyMDM4MmE3NjEzOTc1NjNkODEzYjMwNmMwMjBhZTI4Y2UyNWExYzM5MTVmYWM2MGYiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1iaW5kaXI9JHtiYXNlX2JpbmRpcn0iCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gInNoIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NoXSA9ICIke2Jhc2VfYmluZGlyfS9zaCIKLUFMVEVSTkFUSVZFX1RBUkdFVFtzaF0gPSAiJHtiYXNlX2JpbmRpcn0vZGFzaCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwIgotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIGdyZXAgLXEgIl4ke2Jhc2VfYmluZGlyfS9kYXNoJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmFzZV9iaW5kaXJ9L2Rhc2ggPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQotCi1wa2dfcG9zdHJtXyR7UE59ICgpIHsKLSAgICBwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmFzZV9iaW5kaXJ9L2Rhc2gkIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RkcmVzY3VlL2RkcmVzY3VlXzEuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kZHJlc2N1ZS9kZHJlc2N1ZV8xLjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2UwMGE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RkcmVzY3VlL2RkcmVzY3VlXzEuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1TVU1NQVJZID0gIkRhdGEgcmVjb3ZlcnkgdG9vbCIKLURFU0NSSVBUSU9OID0gIkdOVSBkZHJlc2N1ZSBpcyBhIGRhdGEgcmVjb3ZlcnkgdG9vbC4gSXQgY29waWVzIGRhdGEgXAotICAgIGZyb20gb25lIGZpbGUgb3IgYmxvY2sgZGV2aWNlIChoYXJkIGRpc2MsIGNkcm9tLCBldGMpIHRvIGFub3RoZXIsIFwKLSAgICB0cnlpbmcgaGFyZCB0byByZXNjdWUgZGF0YSBpbiBjYXNlIG9mIHJlYWQgZXJyb3JzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9kZHJlc2N1ZS9kZHJlc2N1ZS5odG1sIgotU0VDVElPTiA9ICJjb25zb2xlIgotTElDRU5TRSA9ICJHUEx2MisiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2ZDZlMzAwZmZkOGZiOWQxOGJkOWIxMzZhOWJiYTEzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW5fY29tbW9uLmNjO2JlZ2lubGluZT01O2VuZGxpbmU9MTY7bWQ1PTNlYzI4OGIyNjc2NTI4Y2QyYjA2OTM2NGUzMTMwMTZmIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5seiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlZDZiNWI4MmQ3NGNiZDkyNWRiMmI4MjkzNTBlNzRiMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZDhkMGM5ZDlhYWM4MGE5MTEwZTljYjBkMGE5MWE3MzkwZDNiZjlmODE2YjY3YTYyY2E0ZWIxNDBmNDc0N2I4IgotCi0jIFRoaXMgaXNuJ3QgYWxyZWFkeSBhZGRlZCBieSBiYXNlLmJiY2xhc3MKLWRvX3VucGFja1tkZXBlbmRzXSArPSAibHppcC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKLQotQ09ORklHVVJFT1BUUyA9ICJcCi0gICAgJy0tc3JjZGlyPSR7U30nIFwKLSAgICAnLS1wcmVmaXg9JHtwcmVmaXh9JyBcCi0gICAgJy0tZXhlYy1wcmVmaXg9JHtleGVjX3ByZWZpeH0nIFwKLSAgICAnLS1iaW5kaXI9JHtiaW5kaXJ9JyBcCi0gICAgJy0tZGF0YWRpcj0ke2RhdGFkaXJ9JyBcCi0gICAgJy0taW5mb2Rpcj0ke2luZm9kaXJ9JyBcCi0gICAgJy0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9JyBcCi0gICAgJ0NYWD0ke0NYWH0nIFwKLSAgICAnQ1BQRkxBR1M9JHtDUFBGTEFHU30nIFwKLSAgICAnQ1hYRkxBR1M9JHtDWFhGTEFHU30nIFwKLSAgICAnTERGTEFHUz0ke0xERkxBR1N9JyBcCi0iCi1FWFRSQV9PRU1BS0UgPSAiIgotCi1kb19jb25maWd1cmUgKCkgewotICAgICR7U30vY29uZmlndXJlICR7Q09ORklHVVJFT1BUU30KLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0gICAgIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KLSAgICBpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KLSAgICAgICAgcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCi0gICAgZmkKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGRyZXNjdWUvZGRyZXNjdWVfMS4yMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RkcmVzY3VlL2RkcmVzY3VlXzEuMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRmN2RiOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RkcmVzY3VlL2RkcmVzY3VlXzEuMjIuYmIKQEAgLTAsMCArMSw0NSBAQAorU1VNTUFSWSA9ICJEYXRhIHJlY292ZXJ5IHRvb2wiCitERVNDUklQVElPTiA9ICJHTlUgZGRyZXNjdWUgaXMgYSBkYXRhIHJlY292ZXJ5IHRvb2wuIEl0IGNvcGllcyBkYXRhIFwKKyAgICBmcm9tIG9uZSBmaWxlIG9yIGJsb2NrIGRldmljZSAoaGFyZCBkaXNjLCBjZHJvbSwgZXRjKSB0byBhbm90aGVyLCBcCisgICAgdHJ5aW5nIGhhcmQgdG8gcmVzY3VlIGRhdGEgaW4gY2FzZSBvZiByZWFkIGVycm9ycy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZGRyZXNjdWUvZGRyZXNjdWUuaHRtbCIKK1NFQ1RJT04gPSAiY29uc29sZSIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NmQ2ZTMwMGZmZDhmYjlkMThiZDliMTM2YTliYmExMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYWluX2NvbW1vbi5jYztiZWdpbmxpbmU9NTtlbmRsaW5lPTE2O21kNT0zZWMyODhiMjY3NjUyOGNkMmIwNjkzNjRlMzEzMDE2ZiIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIubHoiCitTUkNfVVJJW21kNXN1bV0gPSAiNDljODQ1ZWQ4OWQyNWI1MzQ4NDJlNDAzNjYxNTRjYjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk4NTdiMmU4MDc0ODEzYWMxOWRhNWQyNjI4OTBmNzIyZTVmNzkwMGU1MjFhNGM2MDM1NGNlZjk1ZWVhMTBhNyIKKworIyBUaGlzIGlzbid0IGFscmVhZHkgYWRkZWQgYnkgYmFzZS5iYmNsYXNzCitkb191bnBhY2tbZGVwZW5kc10gKz0gImx6aXAtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisKK0NPTkZJR1VSRU9QVFMgPSAiXAorICAgICctLXNyY2Rpcj0ke1N9JyBcCisgICAgJy0tcHJlZml4PSR7cHJlZml4fScgXAorICAgICctLWV4ZWMtcHJlZml4PSR7ZXhlY19wcmVmaXh9JyBcCisgICAgJy0tYmluZGlyPSR7YmluZGlyfScgXAorICAgICctLWRhdGFkaXI9JHtkYXRhZGlyfScgXAorICAgICctLWluZm9kaXI9JHtpbmZvZGlyfScgXAorICAgICctLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfScgXAorICAgICdDWFg9JHtDWFh9JyBcCisgICAgJ0NQUEZMQUdTPSR7Q1BQRkxBR1N9JyBcCisgICAgJ0NYWEZMQUdTPSR7Q1hYRkxBR1N9JyBcCisgICAgJ0xERkxBR1M9JHtMREZMQUdTfScgXAorIgorRVhUUkFfT0VNQUtFID0gIiIKKworZG9fY29uZmlndXJlICgpIHsKKyAgICAke1N9L2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9Cit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorICAgICMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCisgICAgaWYgWyAtZSAiJHtEfSR7aW5mb2Rpcn0vZGlyIiBdOyB0aGVuCisgICAgICAgIHJtIC1mICR7RH0ke2luZm9kaXJ9L2RpcgorICAgIGZpCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RpYWxvZy9kaWFsb2dfMS4zLTIwMTYwODI4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGlhbG9nL2RpYWxvZ18xLjMtMjAxNjA4MjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1ZGVkZTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGlhbG9nL2RpYWxvZ18xLjMtMjAxNjA4MjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gImRpc3BsYXkgZGlhbG9nIGJveGVzIGZyb20gc2hlbGwgc2NyaXB0cyIKLURFU0NSSVBUSU9OID0gIkRpYWxvZyBsZXRzIHlvdSB0byBwcmVzZW50IGEgdmFyaWV0eSBvZiBxdWVzdGlvbnMgXAotb3IgZGlzcGxheSBtZXNzYWdlcyB1c2luZyBkaWFsb2cgYm94ZXMgZnJvbSBhIHNoZWxsIFwKLXNjcmlwdCAob3IgYW55IHNjcmlwdGluZyBsYW5ndWFnZSkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpYWxvZy8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1ERVBFTkRTID0gIm5jdXJzZXMiCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmludmlzaWJsZS1pc2xhbmQubmV0LyR7QlBOfS8ke0JQfS50Z3ogXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhMzllYzE4MzUxN2JjMWZlYWZmMDE3ZDA2NzMwMGI4YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NTMwOTVhYmFlYzI4OGJmYmMxY2E5ZmFjZWQ5MTdlMTc3NDJjZmYxZWE0NWVjNDYyMTAwNzFhYzE1MzU2MmY5IgotCi0jIGhhcmRjb2RlZCBoZXJlIGZvciB1c2UgaW4gZGlhbG9nLXN0YXRpYyByZWNpcGUKLVMgPSAiJHtXT1JLRElSfS9kaWFsb2ctJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1uY3Vyc2VzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGgtaGFjayIKLQotZG9fY29uZmlndXJlKCkgewotICAgIGdudS1jb25maWdpemUgLS1mb3JjZQotICAgIHNlZCAtaSAncywke2NmX25jdWNvbmZpZ19yb290fTYtY29uZmlnLCR7Y2ZfbmN1Y29uZmlnX3Jvb3R9LWNvbmZpZyxnJyAtaSBjb25maWd1cmUKLSAgICBzZWQgLWkgJ3MsY2ZfaGF2ZV9uY3Vjb25maWc9dW5rbm93bixjZl9oYXZlX25jdWNvbmZpZz15ZXMsZycgLWkgY29uZmlndXJlCi0gICAgb2VfcnVuY29uZgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGlhbG9nL2RpYWxvZ18xLjMtMjAxNzEyMDkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kaWFsb2cvZGlhbG9nXzEuMy0yMDE3MTIwOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2M2NWM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGlhbG9nL2RpYWxvZ18xLjMtMjAxNzEyMDkuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJkaXNwbGF5IGRpYWxvZyBib3hlcyBmcm9tIHNoZWxsIHNjcmlwdHMiCitERVNDUklQVElPTiA9ICJEaWFsb2cgbGV0cyB5b3UgdG8gcHJlc2VudCBhIHZhcmlldHkgb2YgcXVlc3Rpb25zIFwKK29yIGRpc3BsYXkgbWVzc2FnZXMgdXNpbmcgZGlhbG9nIGJveGVzIGZyb20gYSBzaGVsbCBcCitzY3JpcHQgKG9yIGFueSBzY3JpcHRpbmcgbGFuZ3VhZ2UpLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kaWFsb2cvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorREVQRU5EUyA9ICJuY3Vyc2VzIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5pbnZpc2libGUtaXNsYW5kLm5ldC8ke0JQTn0vJHtCUH0udGd6IFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZjY2ZjI4YmVjYTkwMGI1NGY1ZmM5MGZkY2NlOTM1MDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjAxMzk0NDIxMTllMmVmZjVjMzUyMzZlOGU1ZTMxM2M5MDE1MzkwMDhkOWNjY2Y4YzhhYjM4NTFiNDEyNjdlNiIKKworIyBoYXJkY29kZWQgaGVyZSBmb3IgdXNlIGluIGRpYWxvZy1zdGF0aWMgcmVjaXBlCitTID0gIiR7V09SS0RJUn0vZGlhbG9nLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtbmN1cnNlcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWhhY2siCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBnbnUtY29uZmlnaXplIC0tZm9yY2UKKyAgICBzZWQgLWkgJ3MsJHtjZl9uY3Vjb25maWdfcm9vdH02LWNvbmZpZywke2NmX25jdWNvbmZpZ19yb290fS1jb25maWcsZycgLWkgY29uZmlndXJlCisgICAgc2VkIC1pICdzLGNmX2hhdmVfbmN1Y29uZmlnPXVua25vd24sY2ZfaGF2ZV9uY3Vjb25maWc9eWVzLGcnIC1pIGNvbmZpZ3VyZQorICAgIG9lX3J1bmNvbmYKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2R1bWItaW5pdC9kdW1iLWluaXRfMS4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kdW1iLWluaXQvZHVtYi1pbml0XzEuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxYTZkOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kdW1iLWluaXQvZHVtYi1pbml0XzEuMi4wLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiU2ltcGxlIHdyYXBwZXIgc2NyaXB0IHdoaWNoIHByb3hpZXMgc2lnbmFscyB0byBhIGNoaWxkIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL1llbHAvZHVtYi1pbml0LyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTk0MGQzOTk5NWVhNjg1N2QwMWI4MjI3MTA5YzJlOWMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL1llbHAvZHVtYi1pbml0L2FyY2hpdmUvdiR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZWI3ZjQzZDc4MjM2ODY3MjNmZjdhYzFiYWQwOTdjYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NDQ4Njk5NzMyMWJkOTM5Y2FkMmVlNmFmMDMwZjQ4MWQzOTc1MWJjOWFhMGVjZTg0ZWQ1NWY4NjRlMzA5YTNmIgorCitFWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyBDRkxBR1M9JyR7Q0ZMQUdTfSAke0xERkxBR1N9JyIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKyAgICBpbnN0YWxsICR7U30vZHVtYi1pbml0ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDEtZWZpdmFyLWRwLmgtQWRkLVd1bmtub3duLWF0dHJpYnV0ZXMtd2hlbi11c2luZy1jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjg4MTVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSAzZDQzYzVlZmRiNjMyZGE1ZDczODdkY2FkY2U0ZTg3YjgzOTI5YzY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjQgQXVnIDIwMTcgMTU6NTQ6NDcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gZWZpdmFyLWRwLmg6IEFkZCAtV3Vua25vd24tYXR0cmlidXRlcyB3aGVuIHVzaW5nIGNsYW5nCi0KLWNoYW5nZSAhZHAgY2hlY2sgdG8gYSBjb21wYXJpc2lvbiBhZ2FpbnN0IE5VTEwgdG8gc2lsZW50IGNsYW5nIHdhcm5pbmcKLW5vbm51bGwgcGFyYW1ldGVyICdkcCcgd2lsbCBldmFsdWF0ZSB0byAndHJ1ZScgb24gZmlyc3QgZW5jb3VudGVyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvaW5jbHVkZS9lZml2YXIvZWZpdmFyLWRwLmggfCAxMiArKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L3NyYy9pbmNsdWRlL2VmaXZhci9lZml2YXItZHAuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3NyYy9pbmNsdWRlL2VmaXZhci9lZml2YXItZHAuaAotKysrIGdpdC9zcmMvaW5jbHVkZS9lZml2YXIvZWZpdmFyLWRwLmgKLUBAIC03ODMsOSArNzgzLDE0IEBAIGV4dGVybiBpbnQgZWZpZHBfYXBwZW5kX2luc3RhbmNlKGNvbnN0X2UKLSAgKiB0aG91Z2ggb2xkZXIgb3Igb3RoZXIgY29tcGlsZXJzIG1pZ2h0IGp1c3QgaWdub3JlIHRoYXQgYXR0cmlidXRlIGlmIHRoZXkKLSAgKiBkb24ndCBzdXBwb3J0IGl0LiAgVWdoLgotICAqLwotKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSA2Ci0gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV25vbm51bGwtY29tcGFyZSIKLSAjZW5kaWYKLSsjaWYgZGVmaW5lZChfX2NsYW5nX18pCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tYXR0cmlidXRlcyIKLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XcG9pbnRlci1ib29sLWNvbnZlcnNpb24iCi0rI2VuZGlmCi0gCi0gc3RhdGljIGlubGluZSBpbnQxNl90Ci0gX19hdHRyaWJ1dGVfXygoX19hcnRpZmljaWFsX18pKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAxLWVmaXZhci1maXgtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDEtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY2Y2E2NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDEtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gOWEzYzQ4MGFmNjUzYjM3ZTYyZDFiZTA0ZDQ5ZmU3YTYwYTgwMTY4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyNSBTZXAgMjAxNSAxODoxNDozMSArMDgwMAotU3ViamVjdDogW1BBVENIIDEvMl0gZWZpdmFyOiBmaXggZm9yIGNyb3NzIGNvbXBpbGUKLQotSXQgYnVpbGRzIGFuZCBjYWxscyBlbGYgZmlsZSBtYWtlZ3VpZHMgdG8gZ2VuZXJhdGUgYSBoZWFkZXIgZmlsZSB3aGljaAotZG9lc24ndCB3b3JrIGZvciBjcm9zcyBjb21waWxlLiBGaXggaXQuCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotLS0tCi0gc3JjL01ha2VmaWxlIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQotaW5kZXggNWZjNzg4Ny4uMTgyOWQyMiAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZQotKysrIGIvc3JjL01ha2VmaWxlCi1AQCAtMjksOCArMjksOCBAQCBhbGwgOiBkZXBzICQoVEFSR0VUUykKLSAuL2d1aWQtc3ltYm9scy5jIDogaW5jbHVkZS9lZml2YXIvZWZpdmFyLWd1aWRzLmgKLSAuL2d1aWRzLmJpbiA6IGluY2x1ZGUvZWZpdmFyL2VmaXZhci1ndWlkcy5oCi0gLi9uYW1lcy5iaW4gOiBpbmNsdWRlL2VmaXZhci9lZml2YXItZ3VpZHMuaAotLWluY2x1ZGUvZWZpdmFyL2VmaXZhci1ndWlkcy5oIDogbWFrZWd1aWRzIGd1aWRzLnR4dAotLQkuL21ha2VndWlkcyBndWlkcy50eHQgZ3VpZHMuYmluIG5hbWVzLmJpbiBcCi0raW5jbHVkZS9lZml2YXIvZWZpdmFyLWd1aWRzLmggOiBndWlkcy50eHQKLSsJbWFrZWd1aWRzIGd1aWRzLnR4dCBndWlkcy5iaW4gbmFtZXMuYmluIFwKLSAJCWd1aWQtc3ltYm9scy5jIGluY2x1ZGUvZWZpdmFyL2VmaXZhci1ndWlkcy5oCi0gCi0gbWFrZWd1aWRzIDogQ1BQRkxBR1MrPS1ERUZJVkFSX0JVSUxEX0VOVklST05NRU5UCi0tLSAKLTIuNC4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1tYWtlZ3VpZHMtRG8tbm90LXVzZS1fX2Jzd2FwX2NvbnN0YW50Xy0xNi0zMi1tYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDEtbWFrZWd1aWRzLURvLW5vdC11c2UtX19ic3dhcF9jb25zdGFudF8tMTYtMzItbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2E3NzIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1tYWtlZ3VpZHMtRG8tbm90LXVzZS1fX2Jzd2FwX2NvbnN0YW50Xy0xNi0zMi1tYWNyb3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDk4YjMzZDQxOTM5OTg2ODdhYTNhNzhjMDk3ZjdiZDRjMzkzZTBjODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxNSBKdWwgMjAxNyAwMDoyOTo0MiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBtYWtlZ3VpZHM6IERvIG5vdCB1c2UgX19ic3dhcF9jb25zdGFudF97MTZ8MzJ9IG1hY3JvcwotCi1ub3QgYXZhaWxhYmxlIG9uIG11c2wKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9tYWtlZ3VpZHMuYyB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL21ha2VndWlkcy5jIGIvc3JjL21ha2VndWlkcy5jCi1pbmRleCBkYTJmNWY3Li5kYWY4MjFhIDEwMDY0NAotLS0tIGEvc3JjL21ha2VndWlkcy5jCi0rKysgYi9zcmMvbWFrZWd1aWRzLmMKLUBAIC0xNTUsMTMgKzE1NSwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gI2lmIEJZVEVfT1JERVIgPT0gQklHX0VORElBTlxuXAotICNkZWZpbmUgY3B1X3RvX2JlMzIobikgKG4pXG5cCi0gI2RlZmluZSBjcHVfdG9fYmUxNihuKSAobilcblwKLS0jZGVmaW5lIGNwdV90b19sZTMyKG4pIChfX2Jzd2FwX2NvbnN0YW50XzMyKG4pKVxuXAotLSNkZWZpbmUgY3B1X3RvX2xlMTYobikgKF9fYnN3YXBfY29uc3RhbnRfMTYobikpXG5cCi0rI2RlZmluZSBjcHVfdG9fbGUzMihuKSAoKHVpbnQzMl90KSAoKG4pPj4yNCB8IChuKT4+OCYweGZmMDAgfCAobik8PDgmMHhmZjAwMDAgfCAobik8PDI0KSlcblwKLSsjZGVmaW5lIGNwdV90b19sZTE2KG4pICgodWludDE2X3QpICgobik8PDggfCAobik+PjgpKVxuXAotICNlbHNlXG5cCi0gI2RlZmluZSBjcHVfdG9fbGUzMihuKSAobilcblwKLSAjZGVmaW5lIGNwdV90b19sZTE2KG4pIChuKVxuXAotLSNkZWZpbmUgY3B1X3RvX2JlMzIobikgKF9fYnN3YXBfY29uc3RhbnRfMzIobikpXG5cCi0tI2RlZmluZSBjcHVfdG9fYmUxNihuKSAoX19ic3dhcF9jb25zdGFudF8xNihuKSlcblwKLSsjZGVmaW5lIGNwdV90b19iZTMyKG4pICgodWludDMyX3QpICgobik+PjI0IHwgKG4pPj44JjB4ZmYwMCB8IChuKTw8OCYweGZmMDAwMCB8IChuKTw8MjQpKVxuXAotKyNkZWZpbmUgY3B1X3RvX2JlMTYobikgKCh1aW50MTZfdCkgKChuKTw8OCB8IChuKT4+OCkpXG5cCi0gI2VuZGlmXG5cCi0gIiIiKTsKLSAKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMy1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAzLWVmaXZhci1maXgtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmNDNmMmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAzLWVmaXZhci1maXgtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDdlYWQyOWNhNmJiNWUyODBhZTA3NTUxY2MzNTIxMjgxZWNmNzM2ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBTYXQsIDcgTWF5IDIwMTYgMDI6MDY6NDcgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGU6IGZpeCBlZml2YXIucGMgbm90IGZvdW5kCi0KLUl0IGZpeGVzIGVmaXZhci5wYyBub3QgZm91bmQ6Ci0uLi4KLXwgaW5zdGFsbCAtZCAtbSA3NTUgZWZpdmFyLzAuMjMtcjAvaW1hZ2UvdXNyL2xpYi9wa2djb25maWcvCi18IGluc3RhbGwgLW0gNjQ0IGVmaXZhci5wYyBlZml2YXIvMC4yMy1yMC9pbWFnZS91c3IvbGliL3BrZ2NvbmZpZy8KLTsgIGluc3RhbGwgLW0gNjQ0IGVmaWJvb3QucGMgZWZpdmFyLzAuMjMtcjAvaW1hZ2UvdXNyL2xpYi9wa2djb25maWcvCi07Ci18IGluc3RhbGw6IGNhbm5vdCBzdGF0ICdlZml2YXIucGMnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci18IGluc3RhbGw6IGNhbm5vdCBzdGF0ICdlZmlib290LnBjJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotfCBtYWtlWzFdOiAqKiogW2luc3RhbGxdIEVycm9yIDEKLXwgbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgYGVmaXZhci8wLjIzLXIwL2dpdC9zcmMnCi18IG1ha2U6ICoqKiBbaW5zdGFsbF0gRXJyb3IgMgotfCBFUlJPUjogb2VfcnVubWFrZSBmYWlsZWQKLS4uLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL01ha2VmaWxlIHwgNCArKystCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCi1pbmRleCBjN2EwY2EzLi5hZDljNDI3IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlCi0rKysgYi9zcmMvTWFrZWZpbGUKLUBAIC03OCw3ICs3OCw5IEBAIGluc3RhbGwgOiBhbGwKLSAJCWxuIC1mcyAkKHgpLiQoVkVSU0lPTikgJChERVNURElSKSQobGliZGlyKS8kKHgpLiQoTUFKT1JfVkVSU0lPTik7XAotIAkJbG4gLWZzICQoeCkuJChWRVJTSU9OKSAkKERFU1RESVIpJChsaWJkaXIpLyQoeCk7ICkKLSAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQoUENESVIpCi0tCSQoZm9yZWFjaCB4LCAkKFBDVEFSR0VUUyksICQoSU5TVEFMTCkgLW0gNjQ0ICQoeCkgJChERVNURElSKSQoUENESVIpIDspCi0rCSQoZm9yZWFjaCB4LCAkKFBDVEFSR0VUUyksICQoSU5TVEFMTCkgLW0gNjQ0ICQoVE9QRElSKS9zcmMvJCh4KS5pbiAkKERFU1RESVIpJChQQ0RJUikvJCh4KSA7XAotKwkJc2VkIC1pIC1lICJzOkBATElCRElSQEA6JChsaWJkaXIpOmciIC1lICJzOkBAVkVSU0lPTkBAOiQoVkVSU0lPTik6ZyIgXAotKwkJCSQoREVTVERJUikkKFBDRElSKS8kKHgpOyApCi0gCSQoSU5TVEFMTCkgLWQgLW0gNzU1ICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2VmaXZhcgotIAkkKGZvcmVhY2ggeCwgJCh3aWxkY2FyZCAkKFRPUERJUikvc3JjL2luY2x1ZGUvZWZpdmFyLyouaCksICQoSU5TVEFMTCkgLW0gNjQ0ICQoeCkgJChERVNURElSKSQoaW5jbHVkZWRpcikvZWZpdmFyLyQobm90ZGlyICQoeCkpOykKLSAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQoYmluZGlyKQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyL2FsbG93LW11bHRpLWRlZmluaXRpb25zLWZvci1uYXRpdmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyL2FsbG93LW11bHRpLWRlZmluaXRpb25zLWZvci1uYXRpdmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3ZjU1NTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9hbGxvdy1tdWx0aS1kZWZpbml0aW9ucy1mb3ItbmF0aXZlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUl0IGZhaWxzIHRvIGNyZWF0ZSAuc28gZmlsZSB3aGVuIGJ1aWxkIGVmaXZhci1uYXRpdmU6Ci0KLXwgbGliLm86KCpJTkQqKzB4MCk6IG11bHRpcGxlIGRlZmluaXRpb24gb2YgYGVmaV9zZXRfdmFyaWFibGUnCi18IGxpYi5vOmxpYi5jOigudGV4dCsweGEwKTogZmlyc3QgZGVmaW5lZCBoZXJlCi0KLUFkZCBsaW5rIG9wdGlvbiAnLXogbXVsZGVmcycgdG8gZml4IGl0LgotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotZGlmZiAtLWdpdCBhL01ha2UucnVsZXMgYi9NYWtlLnJ1bGVzCi1pbmRleCBkOWMwNjA5Li44NzRiY2UwIDEwMDY0NAotLS0tIGEvTWFrZS5ydWxlcwotKysrIGIvTWFrZS5ydWxlcwotQEAgLTIwLDYgKzIwLDcgQEAgaW5jbHVkZSAkKFRPUERJUikvTWFrZS52ZXJzaW9uCi0gCSQoQ0NMRCkgJChjY2xkZmxhZ3MpICQoQ1BQRkxBR1MpICQoU09GTEFHUykgXAotIAkgIC1XbCwtc29uYW1lLCRALiQoTUFKT1JfVkVSU0lPTikgXAotIAkgIC1XbCwtLXZlcnNpb24tc2NyaXB0PSQoTUFQKSBcCi0rCSAgLVdsLC16LG11bGRlZnMgXAotIAkgIC1vICRAICReICQoTERMSUJTKQotIAotICUubyA6ICUuYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtaG9zdC1nY2MtNC42LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtaG9zdC1nY2MtNC42LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2ZhMmUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWhvc3QtZ2NjLTQuNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gMTM2MTIyNWFiYmFiYTg3ODk2MGY5NzBkZjM5YTQ1NzBiYmMzOTU1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjYgTWF5IDIwMTYgMjE6NTA6MDEgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGNvbXBpbGUgZmFpbHVyZSB3aXRoIG9sZGVyIGhvc3QgZ2NjICg8PTQuNikKLQotV2hpbGUgaG9zdCBnY2MgdmVyc2lvbiBpcyA0LjYuMyBpbiB1YnVudHUgMTIwNCwgaXQKLWRpZCBub3QgcmVjb2duaXplIC1zdGQ9Z251MTEgYW5kIC1XbWF5YmUtdW5pbml0aWFsaXplZC4KLQotV2hpbGUgaG9zdCBnY2MgdmVyc2lvbiBpcyA0LjQuNyBpbiBjZW50b3M2LCBpdAotZGlkIG5vdCByZWNvZ25pemUgLXN0ZD1nbnUxMSwgLVdtYXliZS11bmluaXRpYWxpemVkLAotYW5kIC1mbHRvLgotCi1Gb3IgbmF0aXZlIGJ1aWxkLCB1c2UgLXN0ZD1nbnU5OSB0byByZXBsYWNlIC1zdGQ9Z251MTEsCi1hbmQgZGlyZWN0bHkgcmVtb3ZlIC1XbWF5YmUtdW5pbml0aWFsaXplZCBhbmQgLWZsdG8uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2Muc3BlY3MgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2djYy5zcGVjcwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2djYy5zcGVjcwotKysrIGdpdC9nY2Muc3BlY3MKLUBAIC0yLDEzICsyLDEzIEBACi0gKyAtRF9HTlVfU09VUkNFCi0gCi0gKmVmaXZhcl9jcHBfb3B0aW9uczoKLS0gLVdlcnJvciAtV2FsbCAtc3RkPWdudTExIC1XZXh0cmEKLSsgLVdlcnJvciAtV2FsbCAtc3RkPWdudTk5IC1XZXh0cmEKLSAKLSAqY3BwX29wdGlvbnM6Ci0gKyAlKGVmaXZhcl9jcHBfb3B0aW9ucykKLSAKLSAqY2MxX29wdGlvbnM6Ci0tKyAlKGVmaXZhcl9jcHBfb3B0aW9ucykgLVdtYXliZS11bmluaXRpYWxpemVkIC1mbm8tbWVyZ2UtY29uc3RhbnRzIC1mdmlzaWJpbGl0eT1oaWRkZW4gJXshcjoleyFmcGllOiV7IWZQSUU6JXshZnBpYzoleyFmUElDOiV7IWZuby1waWM6LWZQSUV9fX19fX0KLSsrICUoZWZpdmFyX2NwcF9vcHRpb25zKSAtZm5vLW1lcmdlLWNvbnN0YW50cyAtZnZpc2liaWxpdHk9aGlkZGVuICV7IXI6JXshZnBpZToleyFmUElFOiV7IWZwaWM6JXshZlBJQzoleyFmbm8tcGljOi1mUElFfX19fX19Ci0gCi0gKnNlbGZfc3BlYzoKLSArICV7IXNoYXJlZDoleyFzdGF0aWM6JXshcjotcGllfX19ICV7c3RhdGljOi1XbCwtbm8tZmF0YWwtd2FybmluZ3MgLVdsLC1zdGF0aWMgLXN0YXRpYyAtV2wsLXoscmVscm8sLXosbm93fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9tdXNsLXN0cm5kdXBhLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9tdXNsLXN0cm5kdXBhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzhmOGM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvbXVzbC1zdHJuZHVwYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRha2VuIGZyb20gdm9pZCBsaW51eAotCi1JbmRleDogZ2l0L3NyYy9saW51eC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvc3JjL2xpbnV4LmMKLSsrKyBnaXQvc3JjL2xpbnV4LmMKLUBAIC00MCw2ICs0MCwxMCBAQAotICNpbmNsdWRlIDxlZml2YXIuaD4KLSAjaW5jbHVkZSA8ZWZpYm9vdC5oPgotIAotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rI2RlZmluZSBzdHJuZHVwYSh4LHMpIHN0cm5jcHkoYWxsb2NhKHN0cmxlbih4KSsxKSx4LHMpCi0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgImRwLmgiCi0gI2luY2x1ZGUgImxpbnV4LmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtUmVtb3ZlLXVuZGVmaW5lZC1iZWhhdmlvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtUmVtb3ZlLXVuZGVmaW5lZC1iZWhhdmlvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEzOTdkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLVJlbW92ZS11bmRlZmluZWQtYmVoYXZpb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi1Gcm9tIGQyYTAzYjNlNDMwNDNiNTk2YTc5ODAzYmNiOTNmNzBlNTEzYmJiNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXRyaWNrIEdlb3JnaSA8cGdlb3JnaUBnb29nbGUuY29tPgotRGF0ZTogTW9uLCAxMyBNYXIgMjAxNyAxMzo0ODowMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBSZW1vdmUgdW5kZWZpbmVkIGJlaGF2aW9yCi0KLVBlciBjbGFuZy0zLjksIHRoZSBjb21waWxlciBmYWlscyBvbiAjZGVmaW5lIC4uLmRlZmluZWQoLi4uKSBzdGF0ZW1lbnRzCi1hcyB0aGV5J3JlIHVuZGVmaW5lZCBiZWhhdmlvciAoYXBwYXJlbnRseSB3aXRoIGRpZmZlcmVudCBiZWhhdmlvcgotYmV0d2VlbiBnY2MvY2xhbmcgYW5kIG1zdmMsIHRvbykuCi0KLVNlZSBjbGFuZydzIGNmZSByZXBvIGNvbW1pdCByMjU4MTI4IGZvciBkZXRhaWxzLgotCi1DaGFuZ2UtSWQ6IEk4MmI2MjM1ZTExYjQyNWZhZTQ1ZWViYmUwNmIwOGY4MWM1YmRiYjk4Ci1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIEdlb3JnaSA8cGdlb3JnaUBnb29nbGUuY29tPgotUmV2aWV3ZWQtb246IGh0dHBzOi8vcmV2aWV3LmNvcmVib290Lm9yZy8xODc5MgotUmV2aWV3ZWQtYnk6IFN0ZWZhbiBSZWluYXVlciA8c3RlZmFuLnJlaW5hdWVyQGNvcmVib290Lm9yZz4KLVRlc3RlZC1ieTogYnVpbGQgYm90IChKZW5raW5zKSA8bm8tcmVwbHlAY29yZWJvb3Qub3JnPgotLS0tCi0gaHdhY2Nlc3MuYyB8IDE4ICsrKysrKysrKysrKysrKy0tLQotIHBsYXRmb3JtLmggfCAxOCArKysrKysrKysrKysrKystLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9od2FjY2Vzcy5jIGIvaHdhY2Nlc3MuYwotaW5kZXggYWVkZTdlMy4uMmJmNmY0MiAxMDA2NDQKLS0tLSBhL2h3YWNjZXNzLmMKLSsrKyBiL2h3YWNjZXNzLmMKLUBAIC0zNyw5ICszNywyMSBAQAotICNlcnJvciAiVW5rbm93biBvcGVyYXRpbmcgc3lzdGVtIgotICNlbmRpZgotIAotLSNkZWZpbmUgVVNFX0lPUEwJKElTX0xJTlVYIHx8IElTX01BQ09TWCB8fCBkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNEX18pKQotLSNkZWZpbmUgVVNFX0RFVl9JTwkoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykpCi0tI2RlZmluZSBVU0VfSU9QRVJNCShkZWZpbmVkKF9fZ251X2h1cmRfXykpCi0rI2lmIElTX0xJTlVYIHx8IElTX01BQ09TWCB8fCBkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNEX18pCi0rI2RlZmluZSBVU0VfSU9QTCAxCi0rI2Vsc2UKLSsjZGVmaW5lIFVTRV9JT1BMIDAKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykKLSsjZGVmaW5lIFVTRV9ERVZfSU8gMQotKyNlbHNlCi0rI2RlZmluZSBVU0VfREVWX0lPIDAKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX2dudV9odXJkX18pCi0rI2RlZmluZSBVU0VfSU9QRVJNIDEKLSsjZWxzZQotKyNkZWZpbmUgVVNFX0lPUEVSTSAwCi0rI2VuZGlmCi0gCi0gI2lmIFVTRV9JT1BFUk0KLSAjaW5jbHVkZSA8c3lzL2lvLmg+Ci1kaWZmIC0tZ2l0IGEvcGxhdGZvcm0uaCBiL3BsYXRmb3JtLmgKLWluZGV4IGM1YTUyZWYuLmIyZmRjZDAgMTAwNjQ0Ci0tLS0gYS9wbGF0Zm9ybS5oCi0rKysgYi9wbGF0Zm9ybS5oCi1AQCAtMjUsOSArMjUsMjEgQEAKLSAjZGVmaW5lIF9fUExBVEZPUk1fSF9fIDEKLSAKLSAvLyBIZWxwZXIgZGVmaW5lcyBmb3Igb3BlcmF0aW5nIHN5c3RlbXMKLS0jZGVmaW5lIElTX0xJTlVYCShkZWZpbmVkKF9fZ251X2xpbnV4X18pIHx8IGRlZmluZWQoX19saW51eF9fKSkKLS0jZGVmaW5lIElTX01BQ09TWAkoZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoX19NQUNIX18pKSAvKiB5ZXMsIGJvdGguICovCi0tI2RlZmluZSBJU19XSU5ET1dTCShkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9fV0lORE9XU19fKSkKLSsjaWYgZGVmaW5lZChfX2dudV9saW51eF9fKSB8fCBkZWZpbmVkKF9fbGludXhfXykKLSsjZGVmaW5lIElTX0xJTlVYIDEKLSsjZWxzZQotKyNkZWZpbmUgSVNfTElOVVggMAotKyNlbmRpZgotKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChfX01BQ0hfXykgLyogeWVzLCBib3RoLiAqLwotKyNkZWZpbmUgSVNfTUFDT1NYIDEKLSsjZWxzZQotKyNkZWZpbmUgSVNfTUFDT1NYIDAKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChfX1dJTkRPV1NfXykKLSsjZGVmaW5lIElTX1dJTkRPV1MgMQotKyNlbHNlCi0rI2RlZmluZSBJU19XSU5ET1dTIDAKLSsjZW5kaWYKLSAKLSAvLyBMaWtld2lzZSBmb3IgdGFyZ2V0IGFyY2hpdGVjdHVyZXMKLSAjaWYgZGVmaW5lZCAoX19pMzg2X18pIHx8IGRlZmluZWQgKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hbWQ2NF9fKQotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1zcGktRGVmaW5lLV9YT1BFTl9TT1VSQ0UtdG8tZW5hYmxlLWZmcy1saWJjLUFQSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtc3BpLURlZmluZS1fWE9QRU5fU09VUkNFLXRvLWVuYWJsZS1mZnMtbGliYy1BUEkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxNzBmZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1zcGktRGVmaW5lLV9YT1BFTl9TT1VSQ0UtdG8tZW5hYmxlLWZmcy1saWJjLUFQSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gN2M2NWE0NjVhM2RkZWI3YWZiOWE3YzQ5ZDAxMGFlN2U1ZDViMWFkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE4IEp1bCAyMDE3IDIwOjI1OjQ5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNwaTogRGVmaW5lIF9YT1BFTl9TT1VSQ0UgdG8gZW5hYmxlIGZmcygpIGxpYmMgQVBJCi0KLW11c2wgZXhwb3NlcyB0aGlzIGlzc3VlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcGkuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NwaS5jIGIvc3BpLmMKLWluZGV4IDg5NGY3M2YuLmFlYjY1MTggMTAwNjQ0Ci0tLS0gYS9zcGkuYwotKysrIGIvc3BpLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gLyoKLSAgKiBDb250YWlucyB0aGUgZ2VuZXJpYyBTUEkgZnJhbWV3b3JrCi0gICovCi0tCi0rI2RlZmluZSBfWE9QRU5fU09VUkNFCi0gI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgImZsYXNoLmgiCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbV8wLjkuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tXzAuOS45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2RkOGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tXzAuOS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiZmxhc2hyb20gaXMgYSB1dGlsaXR5IGZvciBpZGVudGlmeWluZywgcmVhZGluZywgd3JpdGluZywgdmVyaWZ5aW5nIGFuZCBlcmFzaW5nIGZsYXNoIGNoaXBzIgotTElDRU5TRSA9ICJHUEx2MiIKLUhPTUVQQUdFID0gImh0dHA6Ly9mbGFzaHJvbS5vcmciCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotREVQRU5EUyA9ICJwY2l1dGlscyBsaWJ1c2IgbGlidXNiLWNvbXBhdCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZmxhc2hyb20ub3JnL3JlbGVhc2VzL2ZsYXNocm9tLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zcGktRGVmaW5lLV9YT1BFTl9TT1VSQ0UtdG8tZW5hYmxlLWZmcy1saWJjLUFQSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zc3QyNi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS11bmRlZmluZWQtYmVoYXZpb3IucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYWFiOWM5ODkyNWQ5Y2ZiNWZmYjI4YjY3YTYxMTI1MzAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2IzMTU2YjBmNjNlYjE5MjAyNGI3NmMwODE0MTM1OTMwMjk3YWFjNDFmODA3NjFhNWQyOTNkZTc2OTc4M2M0NSIKLQotaW5oZXJpdCBwa2djb25maWcKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXRfMC4xMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdF8wLjEyLjEuYmIKaW5kZXggZTJlZGQwOS4uOTlmNjgwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdF8wLjEyLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdF8wLjEyLjEuYmIKQEAgLTIxLDYgKzIxLDEwIEBACiAKIEVYVFJBX09FQ01BS0UgPSAiLURHTlVfSE9TVD0ke0hPU1RfU1lTfSAtREZMQl9BTEw9T04gLURGTEJfVEQ9MSIKIAorIyBXaXRoIE5pbmphIGl0IGZhaWxzIHdpdGg6CisjIG5pbmphOiBlcnJvcjogYnVpbGQubmluamE6MTM0OiBiYWQgJC1lc2NhcGUgKGxpdGVyYWwgJCBtdXN0IGJlIHdyaXR0ZW4gYXMgJCQpCitPRUNNQUtFX0dFTkVSQVRPUiA9ICJVbml4IE1ha2VmaWxlcyIKKwogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInRkLWFnZW50LWJpdC5zZXJ2aWNlIgogCiBUQVJHRVRfQ0NfQVJDSF9hcHBlbmQgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWVlODc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJHbnVwbG90IGlzIGEgcG9ydGFibGUgY29tbWFuZC1saW5lIGRyaXZlbiBpbnRlcmFjdGl2ZSBkYXRhZmlsZSBcCi0odGV4dCBvciBiaW5hcnkpIGFuZCBmdW5jdGlvbiBwbG90dGluZyB1dGlsaXR5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGxvdC5pbmZvLyIKLVNFQ1RJT04gPSAiY29uc29sZS9zY2llbnRpZmljIgotTElDRU5TRSA9ICJnbnVwbG90IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0yNDNhMTg2ZmMyZmQzYjk5MjEyNWQ2MGQ1YjFiYWI4ZiIKLURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgZ2QgcmVhZGxpbmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1hY3BhdGhzID0gIiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImNhaXJvIgotUEFDS0FHRUNPTkZJR1tjYWlyb10gPSAiLS13aXRoLWNhaXJvLC0td2l0aG91dC1jYWlybyxjYWlybyBwYW5nbyIKLVBBQ0tBR0VDT05GSUdbbHVhXSA9ICItLXdpdGgtbHVhLC0td2l0aG91dC1sdWEsbHVhIgotIyB0aGVyZSdzIGNvbXBpbGF0aW9uIGZhaWx1cmUgaWYgcXQ0IGlzIGVuYWJsZWQKLVBBQ0tBR0VDT05GSUdbcXQ0XSA9ICItLXdpdGgtcXQsLS13aXRob3V0LXF0LHF0NC14MTEtZnJlZSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXR1dG9yaWFsIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtd3h3aWRnZXRzIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcXRwbG90LTAuMi9xdG9waWEudHJtICR7U30vdGVybS8KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZ251cGxvdC5kZXNrdG9wICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy8KLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L3BpeG1hcHMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZ251cGxvdC5wbmcgJHtEfSR7ZGF0YWRpcn0vcGl4bWFwcy8KLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXgxMS1kYmcgJHtQTn0teDExIgotREVTQ1JJUFRJT05fJHtQTn0teDExID0gIlgxMSBkaXNwbGF5IHRlcm1pbmFsIGZvciBHbnVwbG90LiIKLVNFQ1RJT05fJHtQTn0teDExID0gIngxMS9zY2llbnRpZmljIgotRklMRVNfJHtQTn0teDExID0gIiR7bGliZXhlY2Rpcn0gJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgJHtkYXRhZGlyfS9waXhtYXBzICR7bGliZGlyfS9YMTEgIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS90ZXhtZiIKLUZJTEVTXyR7UE59LXgxMS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vZ251cGxvdC8qLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC8wMDAxLXJlZHVjZS1idWlsZC10by1jb252ZXJzaW9uLXRvb2xzLWZvci1uYXRpdmUtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvMDAwMS1yZWR1Y2UtYnVpbGQtdG8tY29udmVyc2lvbi10b29scy1mb3ItbmF0aXZlLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZjFmZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvMDAwMS1yZWR1Y2UtYnVpbGQtdG8tY29udmVyc2lvbi10b29scy1mb3ItbmF0aXZlLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYTJhYzk2NjgxM2ZkYzA0Yjc4OGJlOWM4NDc0YTRjNWUzNmMxMDlhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDYgTWFyIDIwMTggMjE6NTM6MjYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVkdWNlIGJ1aWxkIHRvIGNvbnZlcnNpb24gdG9vbHMgZm9yIG5hdGl2ZSBidWlsZAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA5MjQxY2U1Li5iMjRlMjkxIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMSw3ICsxLDcgQEAKKyAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIHByb2R1Y2UgTWFrZWZpbGUuaW4gLSotTWFrZWZpbGUtKi0KKyBBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgorIAorLVNVQkRJUlMgPSBjb25maWcgbTQgdGVybSBzcmMgZG9jcyBtYW4gZGVtbyB0dXRvcmlhbCBzaGFyZQorK1NVQkRJUlMgPSBkb2NzCisgCisgRVhUUkFfRElTVCA9IEJVR1MgQ29weXJpZ2h0IEZBUS5wZGYgR05VbWFrZWZpbGUgSU5TVEFMTCBJTlNUQUxMLmdudSBcCisgTWFrZWZpbGUubWFpbnQgUEFUQ0hMRVZFTCBQR1BLRVlTIFJFQURNRSBSRUxFQVNFX05PVEVTIFwKKy0tIAorMi4xNC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC8wMDAyLWRvLW5vdC1idWlsZC1kZW1vcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC8wMDAyLWRvLW5vdC1idWlsZC1kZW1vcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTBiNGEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90LzAwMDItZG8tbm90LWJ1aWxkLWRlbW9zLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYTJhYzk2NjgxM2ZkYzA0Yjc4OGJlOWM4NDc0YTRjNWUzNmMxMDlhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDYgTWFyIDIwMTggMjE6NTM6MjYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGJ1aWxkIGRlbW9zCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IDkyNDFjZTUuLmIyNGUyOTEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0xLDcgKzEsNyBAQAorICMjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b21ha2UgdG8gcHJvZHVjZSBNYWtlZmlsZS5pbiAtKi1NYWtlZmlsZS0qLQorIEFVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCisgCistU1VCRElSUyA9IGNvbmZpZyBtNCB0ZXJtIHNyYyBkb2NzIG1hbiBkZW1vIHR1dG9yaWFsIHNoYXJlCisrU1VCRElSUyA9IGNvbmZpZyBtNCB0ZXJtIHNyYyBkb2NzIG1hbiB0dXRvcmlhbCBzaGFyZQorIAorIEVYVFJBX0RJU1QgPSBCVUdTIENvcHlyaWdodCBGQVEucGRmIEdOVW1ha2VmaWxlIElOU1RBTEwgSU5TVEFMTC5nbnUgXAorIE1ha2VmaWxlLm1haW50IFBBVENITEVWRUwgUEdQS0VZUyBSRUFETUUgUkVMRUFTRV9OT1RFUyBcCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvMDAwMy1Vc2UtbmF0aXZlLXRvb2xzLXRvLWJ1aWxkLWRvY3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvMDAwMy1Vc2UtbmF0aXZlLXRvb2xzLXRvLWJ1aWxkLWRvY3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQwMzljMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC8wMDAzLVVzZS1uYXRpdmUtdG9vbHMtdG8tYnVpbGQtZG9jcy5wYXRjaApAQCAtMCwwICsxLDExMSBAQAorRnJvbSAxMTI4YTk4ZmQxNjc2OTgxZTUzNmQ4NzczZjM2M2NiODMyY2ZhNmJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNiBNYXIgMjAxOCAyMjoyODo1NiArMDEwMAorU3ViamVjdDogW1BBVENIXSBVc2UgbmF0aXZlIHRvb2xzIHRvIGJ1aWxkIGRvY3MKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIGRvY3MvTWFrZWZpbGUuYW0gfCAyMiArKysrKysrKysrKy0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZG9jcy9NYWtlZmlsZS5hbSBiL2RvY3MvTWFrZWZpbGUuYW0KK2luZGV4IDNiYWYwYzQuLmU4MmY4N2QgMTAwNjQ0CistLS0gYS9kb2NzL01ha2VmaWxlLmFtCisrKysgYi9kb2NzL01ha2VmaWxlLmFtCitAQCAtMTUyLDcgKzE1Miw3IEBAIGdudXBsb3QtZ3JvZmYucHM6IGdudXBsb3QubXMgJChzcmNkaXIpL3RpdGxlcGFnLm1zCisgCisgIyMjIGRvYzJ4eHggZGVwZW5kZW5jaWVzCisgZ251cGxvdC5tczogZG9jMm1zJChFWEVFWFQpICQoc3JjZGlyKS9nbnVwbG90LmRvYworLQkkKEFNX1ZfR0VOKSAuL2RvYzJtcyQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MgZ251cGxvdC5tcyAiJChzcmNkaXIpL3RpdGxlcGFnLm1zIgorKwkkKEFNX1ZfR0VOKSBkb2MybXMkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3QubXMgIiQoc3JjZGlyKS90aXRsZXBhZy5tcyIKKyAKKyBkb2MybXNfU09VUkNFUyA9IGRvYzJtcy5jIHRlcm1kb2MuYworIGRvYzJtc19DUFBGTEFHUyA9IC1EQUxMX1RFUk1fRE9DICQoQU1fQ1BQRkxBR1MpCitAQCAtMTczLDEwICsxNzMsMTAgQEAgcGRmX2ZpZ3VyZXM6ICQoR05VUExPVF9FWEUpICQoc3JjZGlyKS9wbG90c3R5bGVzLmdudQorIAkkKEFNX1ZfR0VOKXRvdWNoICRACisgCisgZmlndXJlcy50ZXg6IGFsbHRlcm0uaCBkb2MydGV4JChFWEVFWFQpICQoc3JjZGlyKS9nbnVwbG90LmRvYworLQkkKEFNX1ZfR0VOKS4vZG9jMnRleCQoRVhFRVhUKSAtZmlndXJlcyAkKHNyY2RpcikvZ251cGxvdC5kb2MgJEAKKysJJChBTV9WX0dFTikgZG9jMnRleCQoRVhFRVhUKSAtZmlndXJlcyAkKHNyY2RpcikvZ251cGxvdC5kb2MgJEAKKyAKKyBub2ZpZ3VyZXMudGV4OiBhbGx0ZXJtLmggZG9jMnRleCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MKKy0JJChBTV9WX0dFTikuL2RvYzJ0ZXgkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jICRACisrCSQoQU1fVl9HRU4pIGRvYzJ0ZXgkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jICRACisgCisgcGRmOiBnbnVwbG90LnBkZgorIHBkZl9ub2ZpZzogbm9maWd1cmVzLnBkZgorQEAgLTI1Niw3ICsyNTYsNyBAQCBnbnVwbG90LnBzOiBnbnVwbG90LmR2aQorIGhscDogZ251cGxvdC5obHAKKyAKKyBnbnVwbG90LmhscDogZG9jMmhscCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MKKy0JJChBTV9WX0dFTikuL2RvYzJobHAkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3QuaGxwCisrCSQoQU1fVl9HRU4pZG9jMmhscCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MgZ251cGxvdC5obHAKKyAKKyBkb2MyaGxwX1NPVVJDRVMgPSBkb2MyaGxwLmMgdGVybWRvYy5jCisgCitAQCAtMjY0LDE0ICsyNjQsMTQgQEAgZG9jMmhscF9TT1VSQ0VTID0gZG9jMmhscC5jIHRlcm1kb2MuYworIGdpaDogZ251cGxvdC5naWgKKyAKKyBnbnVwbG90LmdpaDogZG9jMmdpaCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MKKy0JJChBTV9WX0dFTikuL2RvYzJnaWgkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3QuZ2loCisrCSQoQU1fVl9HRU4pZG9jMmdpaCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MgZ251cGxvdC5naWgKKyAKKyBkb2MyZ2loX1NPVVJDRVMgPSBkb2MyZ2loLmMgdGVybWRvYy5jCisgCisgIyBUbyBpbmNsdWRlIGFsbCB0ZXJtaW5hbHMgaW4gdGhlIC5naWggZmlsZQorIGFsbGdpaDogYWxsZG9jMmdpaCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MKKyAJQGVjaG8gImdlbmVyYXRlIGdudXBsb3QuZ2loIHdpdGggYWxsIHRlcm1pbmFscyIKKy0JJChBTV9WX2F0KS4vYWxsZG9jMmdpaCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MgZ251cGxvdC5naWgKKysJJChBTV9WX2F0KWFsbGRvYzJnaWgkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3QuZ2loCisgCisgYWxsZG9jMmdpaF9TT1VSQ0VTID0gZG9jMmdpaC5jIHRlcm1kb2MuYworIGFsbGRvYzJnaWhfQ1BQRkxBR1MgPSAtREFMTF9URVJNX0RPQyAkKEFNX0NQUEZMQUdTKQorQEAgLTI4Niw3ICsyODYsNyBAQCAkKHNyY2Rpcikvd2luZG93cy93Z251cGxvdC5oaGsKKyB3eGhlbHAvd2dudXBsb3QuaGhjIHd4aGVscC93Z251cGxvdC5oaGsgd3hoZWxwLyouaHRtbCB3aW5kb3dzLyoucG5nCisgCisgd3hoZWxwL3dnbnVwbG90Lmh0bWw6IGRvYzJ3eGh0bWwkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIAorLQkkKEFNX1ZfR0VOKSAuL2RvYzJ3eGh0bWwkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIHd4aGVscC8KKysJJChBTV9WX0dFTikgZG9jMnd4aHRtbCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2Mgd3hoZWxwLworIAorICNkb2Myd3hodG1sX1NPVVJDRVMgPSB3aW5kb3dzL2RvYzJodG1sLmMgdGVybWRvYy5jIHhyZWYuYyBhbGx0ZXJtLmgKKyAjZG9jMnd4aHRtbF9DUFBGTEFHUyA9IC1EQUxMX1RFUk1fRE9DIC1EV1hIRUxQIC1JLi4vc3JjICQoQU1fQ1BQRkxBR1MpCitAQCAtMzM2LDcgKzMzNiw3IEBAIGluc3RhbGwtaW5mbzogZ251cGxvdC5pbmZvCisgaXBmOiBnbnVwbG90LmlwZgorIAorIGdudXBsb3QuaXBmOiBkb2MyaXBmJChFWEVFWFQpICQoc3JjZGlyKS9nbnVwbG90LmRvYworLQkkKEFNX1ZfR0VOKSAuL2RvYzJpcGYkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3QuaXBmCisrCSQoQU1fVl9HRU4pIGRvYzJpcGYkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3QuaXBmCisgCisgZG9jMmlwZl9TT1VSQ0VTID0gZG9jMmlwZi5jIHRlcm1kb2MuYyB4cmVmLmMKKyAKK0BAIC0zNDQsNyArMzQ0LDcgQEAgZG9jMmlwZl9TT1VSQ0VTID0gZG9jMmlwZi5jIHRlcm1kb2MuYyB4cmVmLmMKKyBydGY6IGdudXBsb3QucnRmCisgCisgZ251cGxvdC5ydGY6IGRvYzJydGYkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jCistCSQoQU1fVl9HRU4pIC4vZG9jMnJ0ZiQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MgZ251cGxvdC5ydGYKKysJJChBTV9WX0dFTikgZG9jMnJ0ZiQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MgZ251cGxvdC5ydGYKKyAKKyBkb2MycnRmX1NPVVJDRVMgPSBkb2MycnRmLmMgdGVybWRvYy5jIHhyZWYuYworIAorQEAgLTM1MiwxMyArMzUyLDEzIEBAIGRvYzJydGZfU09VUkNFUyA9IGRvYzJydGYuYyB0ZXJtZG9jLmMgeHJlZi5jCisgcm5oOiBnbnVwbG90LnJuaAorIAorIGdudXBsb3Qucm5oOiBkb2Mycm5oJChFWEVFWFQpICQoc3JjZGlyKS9nbnVwbG90LmRvYworLQkkKEFNX1ZfR0VOKSAuL2RvYzJybmgkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3Qucm5oCisrCSQoQU1fVl9HRU4pIGRvYzJybmgkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3Qucm5oCisgCisgZG9jMnJuaF9TT1VSQ0VTID0gZG9jMnJuaC5jIHRlcm1kb2MuYworIAorICMgdGhpcyBpcyBob3cgdG8gY2hlY2sgdGhlIGdudXBsb3QuZG9jIGZpbGUKKyBjaGVjay1sb2NhbDogY2hlY2tkb2MkKEVYRUVYVCkKKy0JJChBTV9WX2F0KS4vY2hlY2tkb2MkKEVYRUVYVCkgPCAkKHNyY2RpcikvZ251cGxvdC5kb2M7IFwKKysJJChBTV9WX2F0KWNoZWNrZG9jJChFWEVFWFQpIDwgJChzcmNkaXIpL2dudXBsb3QuZG9jOyBcCisgCWlmIHRlc3QgJCQ/IC1lcSAwOyB0aGVuIFwKKyAJICBlY2hvICJQQVNTOiBnbnVwbG90LmRvYyI7IFwKKyAJZWxzZSBcCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvMDAwNC1BZGQtY29uZmlndXJlLW9wdGlvbi10by1maW5kLXF0NS1uYXRpdmUtdG9vbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvMDAwNC1BZGQtY29uZmlndXJlLW9wdGlvbi10by1maW5kLXF0NS1uYXRpdmUtdG9vbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VkOWU3NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC8wMDA0LUFkZC1jb25maWd1cmUtb3B0aW9uLXRvLWZpbmQtcXQ1LW5hdGl2ZS10b29scy5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDU3N2UyMTYyMjQ3NWZhMjlmZDQ3MTE0OWNmMjM4MGM1M2ZkYmZjYmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogVHVlLCA2IE1hciAyMDE4IDIyOjI2OjQ4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBjb25maWd1cmUgb3B0aW9uIHRvIGZpbmQgcXQ1IG5hdGl2ZSB0b29scworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitQa2ctY29uZmlnIGNoZWNrcyBmb3IgdGFyZ2V0IGxvY2F0aW9ucy4gV2l0aCB0aGVzZSBxdDUgdG9vbHMgYXMgdWljL21vYy4uCitjYW5ub3QgYmUgdXNlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDYgKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjZGQ4MzFhLi5mZGQxOTJiIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMTMzLDExICsxMTMzLDE1IEBAIGlmIHRlc3QgIiR7ZW5hYmxlX3F0fSIgPSB5ZXMgOyB0aGVuCisgICBlbHNlCisgICAgIHRyeV9xdDQ9eWVzCisgICBmaQorKyAgQUNfQVJHX1dJVEgocXQ1bmF0aXZlc3lzcm9vdCwKKysgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1xdDVuYXRpdmVzeXNyb290PVBBVEhdLCBbcHJlcGVuZCBwYXRoIC0gZm9yIG5hdGl2ZSBxdDUgdG9vbHNdKSwKKysgICAgW1FUNU5BVElWRVNZU1JPT1Q9IiR3aXRodmFsIl0sIFtRVDVOQVRJVkVTWVNST09UPSIiXSkKKysKKyAgIGlmIHRlc3QgIngke3dpdGhfcXR9IiAhPSAieHF0NCI7IHRoZW4KKyAgICAgUEtHX0NIRUNLX01PRFVMRVNfTk9GQUlMKFFULCBbUXQ1Q29yZSBRdDVHdWkgUXQ1TmV0d29yayBRdDVTdmcgUXQ1UHJpbnRTdXBwb3J0XSkKKyAgICAgaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IG5vOyB0aGVuCisgICAgICAgdHJ5X3F0ND1ubworLSAgICAgIFFUNUxPQz1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1ob3N0X2JpbnMgUXQ1Q29yZWAKKysgICAgICBRVDVMT0M9JHtRVDVOQVRJVkVTWVNST09UfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWhvc3RfYmlucyBRdDVDb3JlYAorICAgICAgIGlmIHRlc3QgIngke1FUNUxPQ30iICE9ICJ4IjsgdGhlbgorICAgICAgICAgVUlDPSR7UVQ1TE9DfS91aWMKKyAgICAgICAgIE1PQz0ke1FUNUxPQ30vbW9jCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvZ251cGxvdC5kZXNrdG9wIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90L2dudXBsb3QuZGVza3RvcAppbmRleCBmNjdkZjllLi4xMDEyZTQ3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvZ251cGxvdC5kZXNrdG9wCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC9nbnVwbG90LmRlc2t0b3AKQEAgLTEsOCArMSw4IEBACiBbRGVza3RvcCBFbnRyeV0KIE5hbWU9R251cGxvdAogQ29tbWVudD1QbG90IGRhdGEgYW5kIGZ1bmN0aW9uIGdyYXBocwotRXhlYz14LXRlcm1pbmFsLWVtdWxhdG9yIC1lIGdudXBsb3QKLVRlcm1pbmFsPWZhbHNlCitFeGVjPWdudXBsb3QKK1Rlcm1pbmFsPXRydWUKIFR5cGU9QXBwbGljYXRpb24KIEljb249Z251cGxvdAogQ2F0ZWdvcmllcz1TY2llbmNlOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90L2x1YS1sb2FkbGlicy1jb25maWd1cmUtaW4tZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90L2x1YS1sb2FkbGlicy1jb25maWd1cmUtaW4tZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2YyY2QyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC9sdWEtbG9hZGxpYnMtY29uZmlndXJlLWluLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUluZGV4OiBnbnVwbG90LTQuNi41L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdudXBsb3QtNC42LjUub3JpZy9jb25maWd1cmUuaW4KLSsrKyBnbnVwbG90LTQuNi41L2NvbmZpZ3VyZS5pbgotQEAgLTY5MCw2ICs2OTAsMTEgQEAgaWYgdGVzdCAiJHt3aXRoX2x1YX0iID0geWVzIDsgdGhlbgotICAgZmkKLSAKLSAgIGlmIHRlc3QgIiR3aXRoX2x1YSIgIT0gbm87IHRoZW4KLSsgICAgZG5sIGNoZWNrIGZvciBkbG9wZW4vZGwgdG8gZml4IGxvYWRsaWJzIGxpbmsgZmFpbHVyZQotKyAgICBBQ19DSEVDS19GVU5DKFtkbG9wZW5dLCBbXSwKLSsgICAgICBBQ19DSEVDS19MSUIoW2RsXSwgW2Rsb3Blbl0sIERMT1BFTl9MSUJTPSItbGRsIikpCi0rICAgIEFDX1NVQlNUKERMT1BFTl9MSUJTKQotKyAgICBMVUFfTElCUz0iJExVQV9MSUJTICRETE9QRU5fTElCUyIKLSAgICAgVEVSTUxJQlM9IiRURVJNTElCUyAkTFVBX0xJQlMiCi0gICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJExVQV9DRkxBR1MiCi0gICBlbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvcXRvcGlhLnRybSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC9xdG9waWEudHJtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTJmOWJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC9xdG9waWEudHJtCisrKyAvZGV2L251bGwKQEAgLTEsNDgzICswLDAgQEAKLS8qCi0gKiAkSWQ6IGR1bWIudHJtLHYgMS4xNiAyMDA0LzA0LzEzIDE3OjI0OjE2IGJyb2VrZXIgRXhwICQKLSAqCi0gKi8KLQotLyogR05VUExPVCAtIHF0b3BpYS50cm0gKi8KLQotLypbCi0gKiBDb3B5cmlnaHQgMTk5MSAtIDE5OTMsIDE5OTgsIDIwMDQgICBUaG9tYXMgV2lsbGlhbXMsIENvbGluIEtlbGxleQotICoKLSAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKLSAqIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsCi0gKiBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZAotICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIKLSAqIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiBQZXJtaXNzaW9uIHRvIG1vZGlmeSB0aGUgc29mdHdhcmUgaXMgZ3JhbnRlZCwgYnV0IG5vdCB0aGUgcmlnaHQgdG8KLSAqIGRpc3RyaWJ1dGUgdGhlIGNvbXBsZXRlIG1vZGlmaWVkIHNvdXJjZSBjb2RlLiAgTW9kaWZpY2F0aW9ucyBhcmUgdG8KLSAqIGJlIGRpc3RyaWJ1dGVkIGFzIHBhdGNoZXMgdG8gdGhlIHJlbGVhc2VkIHZlcnNpb24uICBQZXJtaXNzaW9uIHRvCi0gKiBkaXN0cmlidXRlIGJpbmFyaWVzIHByb2R1Y2VkIGJ5IGNvbXBpbGluZyBtb2RpZmllZCBzb3VyY2VzIGlzIGdyYW50ZWQsCi0gKiBwcm92aWRlZCB5b3UKLSAqICAgMS4gZGlzdHJpYnV0ZSB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgbW9kaWZpY2F0aW9ucyBmcm9tIHRoZQotICogICAgcmVsZWFzZWQgdmVyc2lvbiBpbiB0aGUgZm9ybSBvZiBhIHBhdGNoIGZpbGUgYWxvbmcgd2l0aCB0aGUgYmluYXJpZXMsCi0gKiAgIDIuIGFkZCBzcGVjaWFsIHZlcnNpb24gaWRlbnRpZmljYXRpb24gdG8gZGlzdGluZ3Vpc2ggeW91ciB2ZXJzaW9uCi0gKiAgICBpbiBhZGRpdGlvbiB0byB0aGUgYmFzZSByZWxlYXNlIHZlcnNpb24gbnVtYmVyLAotICogICAzLiBwcm92aWRlIHlvdXIgbmFtZSBhbmQgYWRkcmVzcyBhcyB0aGUgcHJpbWFyeSBjb250YWN0IGZvciB0aGUKLSAqICAgIHN1cHBvcnQgb2YgeW91ciBtb2RpZmllZCB2ZXJzaW9uLCBhbmQKLSAqICAgNC4gcmV0YWluIG91ciBjb250YWN0IGluZm9ybWF0aW9uIGluIHJlZ2FyZCB0byB1c2Ugb2YgdGhlIGJhc2UKLSAqICAgIHNvZnR3YXJlLgotICogUGVybWlzc2lvbiB0byBkaXN0cmlidXRlIHRoZSByZWxlYXNlZCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgY29kZSBhbG9uZwotICogd2l0aCBjb3JyZXNwb25kaW5nIHNvdXJjZSBtb2RpZmljYXRpb25zIGluIHRoZSBmb3JtIG9mIGEgcGF0Y2ggZmlsZSBpcwotICogZ3JhbnRlZCB3aXRoIHNhbWUgcHJvdmlzaW9ucyAyIHRocm91Z2ggNCBmb3IgYmluYXJ5IGRpc3RyaWJ1dGlvbnMuCi0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5Ci0gKiB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4KLV0qLwotCi0vKgotICogVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGJ5IC4uL3Rlcm0uYy4KLSAqCi0gKiBUaGlzIHRlcm1pbmFsIGRyaXZlciBzdXBwb3J0czoKLSAqICAgcXRvcGlhIHRlcm1pbmFscwotICoKLSAqIEFVVEhPUlMKLSAqICAgTWljaGFlbCBOZXVyb3RoLCAyMDA0LTA1LTE2Ci0gKiAgICAgICAgICAgSU5URVJORVQ6IG1pY2hhZWwubmV1cm90aEBmcmVlbmV0LmRlCi0gKgotICogc2VuZCB5b3VyIGNvbW1lbnRzIG9yIHN1Z2dlc3Rpb25zIHRvIChnbnVwbG90LWluZm9AbGlzdHMuc291cmNlZm9yZ2UubmV0KS4KLSAqCi0gKi8KLSNpbmNsdWRlICJkcml2ZXIuaCIKLQotI2RlZmluZSBOT19RVE9QSUFfRU5IQU5DRURfU1VQUE9SVAotCi0jaWZkZWYgVEVSTV9SRUdJU1RFUgotcmVnaXN0ZXJfdGVybShxdG9waWFfZHJpdmVyKQotI2VuZGlmCi0KLSNpZmRlZiBURVJNX1BST1RPCi1URVJNX1BVQkxJQyB2b2lkIFFUT1BJQV9vcHRpb25zIF9fUFJPVE8oKHZvaWQpKTsKLVRFUk1fUFVCTElDIHZvaWQgUVRPUElBX2luaXQgX19QUk9UTygodm9pZCkpOwotVEVSTV9QVUJMSUMgdm9pZCBRVE9QSUFfZ3JhcGhpY3MgX19QUk9UTygodm9pZCkpOwotVEVSTV9QVUJMSUMgdm9pZCBRVE9QSUFfdGV4dCBfX1BST1RPKCh2b2lkKSk7Ci1URVJNX1BVQkxJQyB2b2lkIFFUT1BJQV9yZXNldCBfX1BST1RPKCh2b2lkKSk7Ci1URVJNX1BVQkxJQyB2b2lkIFFUT1BJQV9saW5ldHlwZSBfX1BST1RPKChpbnQgbGluZXR5cGUpKTsKLVRFUk1fUFVCTElDIHZvaWQgUVRPUElBX21vdmUgX19QUk9UTygodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KSk7Ci1URVJNX1BVQkxJQyB2b2lkIFFUT1BJQV9wb2ludCBfX1BST1RPKCh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCi0JCQkJICAgICBpbnQgcG9pbnQpKTsKLVRFUk1fUFVCTElDIHZvaWQgUVRPUElBX3ZlY3RvciBfX1BST1RPKCh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpKTsKLVRFUk1fUFVCTElDIHZvaWQgUVRPUElBX3B1dF90ZXh0IF9fUFJPVE8oKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKLQkJCQkJY29uc3QgY2hhciAqc3RyKSk7Ci1URVJNX1BVQkxJQyB2b2lkIFFUT1BJQV9hcnJvdyBfX1BST1RPKCh1bnNpZ25lZCBpbnQgc3gsIHVuc2lnbmVkIGludCBzeSwKLQkJCQkgICAgIHVuc2lnbmVkIGludCBleCwgdW5zaWduZWQgaW50IGV5LAotCQkJCSAgICAgaW50IGhlYWQpKTsKLQotI2RlZmluZSBFTkhxdG9waWFfcHV0X3RleHQgTlVMTAotCi0KLSNkZWZpbmUgUVRPUElBX1hNQVggNDA5NgotI2RlZmluZSBRVE9QSUFfWU1BWCA0MDk2Ci0KLSNpZmRlZiBaQVVSVVMKLSNkZWZpbmUgUVRPUElBX1ZDSEFSIChRVE9QSUFfWU1BWC8yNSkKLSNkZWZpbmUgUVRPUElBX0hDSEFSIChRVE9QSUFfWE1BWC80MCkKLSNkZWZpbmUgUVRPUElBX1ZUSUMgKFFUT1BJQV9ZTUFYLzUwKQotI2RlZmluZSBRVE9QSUFfSFRJQyAoUVRPUElBX1hNQVgvNDApCi0jZWxzZQotI2RlZmluZSBRVE9QSUFfVkNIQVIgKFFUT1BJQV9ZTUFYLzI1KQotI2RlZmluZSBRVE9QSUFfSENIQVIgKFFUT1BJQV9YTUFYLzUwKQotI2RlZmluZSBRVE9QSUFfVlRJQyAoUVRPUElBX1lNQVgvMTAwKQotI2RlZmluZSBRVE9QSUFfSFRJQyAoUVRPUElBX1hNQVgvMTUwKQotI2VuZGlmCi0KLSNlbmRpZiAvKiBURVJNX1BST1RPICovCi0KLSNpZmRlZiBURVJNX0JPRFkKLQotLyojaW5jbHVkZSA8d2luc29jazIuaD4qLwotLyogbmVlZHM6IHdzMl8zMi5saWIgKi8KLSNpZm5kZWYgX01TQ19WRVIKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotI2VuZGlmCi0KLSNkZWZpbmUgUVRPUElBX01BWF9CVUZGRVIJCTUxMgotI2RlZmluZSBRVE9QSUFfTUFYX0RFTEFZX0NPVU5UCTIwCS8qICogMTAwIG1zID0gMiBzICovCi0KLSNpZmRlZiBfTVNDX1ZFUgotI2RlZmluZSBRVE9QSUFfQkFEX1NPQ0tFVAkJSU5WQUxJRF9TT0NLRVQJCS8qIC0xICovCi0jZGVmaW5lIFFUT1BJQV9CQURfQ09OTkVDVAkJU09DS0VUX0VSUk9SCi0jZWxzZQotI2RlZmluZSBRVE9QSUFfQkFEX1NPQ0tFVAkJLTEKLSNkZWZpbmUgUVRPUElBX0JBRF9DT05ORUNUCQktMQotI2VuZGlmCi0jZGVmaW5lIFFUT1BJQV9QT1JUX05PCQkJNTA1MAotCi1zdGF0aWMgaW50IHF0b3BpYV9jbGllbnRfc29ja2V0ID0gUVRPUElBX0JBRF9TT0NLRVQ7Ci1zdGF0aWMgdW5zaWduZWQgc2hvcnQgcXRvcGlhX3BvcnRfbm8gPSBRVE9QSUFfUE9SVF9OTzsKLXN0YXRpYyBjaGFyIHF0b3BpYV9ob3N0X25hbWVbUVRPUElBX01BWF9CVUZGRVIrMV0gPSB7ICJsb2NhbGhvc3QiIH07Ci0KLXN0YXRpYyBpbnQgT3BlbkNsaWVudCBfX1BST1RPKCggaW50IHRlc3QpKTsKLXN0YXRpYyB2b2lkIENsb3NlQ2xpZW50KCk7Ci0KLXN0YXRpYyB2b2lkIE15U2xlZXAoIGRlbGF5ICkKLWludCBkZWxheTsKLXsKLSNpZmRlZiBfTVNDX1ZFUgotCVNsZWVwKCBkZWxheSApOwotI2Vsc2UKLQl1c2xlZXAoIGRlbGF5ICk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIHZvaWQgSW5pdFNvY2tldHMoKQotewotI2lmZGVmIF9NU0NfVkVSCi0JV09SRCB3VmVyc2lvblJlcXVlc3RlZDsKLQlXU0FEQVRBIHdzYURhdGE7Ci0JaW50IGVycjsKLQotCXdWZXJzaW9uUmVxdWVzdGVkID0gTUFLRVdPUkQoIDIsIDIgKTsKLQotCWVyciA9IFdTQVN0YXJ0dXAoIHdWZXJzaW9uUmVxdWVzdGVkLCAmd3NhRGF0YSApOwotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkIEV4aXRTb2NrZXRzKCkKLXsKLSNpZmRlZiBfTVNDX1ZFUgotCVdTQUNsZWFudXAoKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgaW50IENoZWNrRm9yUXRwbG90KCBjb3VudCApCi1pbnQgY291bnQ7Ci17Ci0JLyogdGVzdCAodmlhIHNvY2tldHMpIGlmIHF0cGxvdCBpcyBhbGxyZWFkeSBydW5uaW5nICovCi0JaWYoICFPcGVuQ2xpZW50KCAxICkgKQotCXsKLQkJLyogZ2l2ZSBxdHBsb3QgYSBsaXRsZSBiaXQgdGltZSB0byBzdGFydC4uLiAqLwotCQlpZiggY291bnQgPCBRVE9QSUFfTUFYX0RFTEFZX0NPVU5UICkKLQkJewotCQkJaWYoIGNvdW50ID09IDAgKQotCQkJewotI2lmZGVmIF9NU0NfVkVSCi0JCQkJc3lzdGVtKCAic3RhcnQgcXRwbG90IiApOwotI2Vsc2UKLQkJCQlzeXN0ZW0oICJxdHBsb3QmIiApOwotI2VuZGlmCi0JCQl9Ci0JCQotCQkJTXlTbGVlcCgxMDApOwotCi0JCQlyZXR1cm4gQ2hlY2tGb3JRdHBsb3QoIGNvdW50KzEgKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCXJldHVybiAwOwotCQl9Ci0JfQotCWVsc2UKLQl7Ci0JCUNsb3NlQ2xpZW50KCk7Ci0KLQkJcmV0dXJuIDE7Ci0JfQotfQotCi1zdGF0aWMgaW50IE9wZW5DbGllbnQoIHRlc3QgKQotaW50IHRlc3Q7Ci17Ci0gICAgaW50IGxlbjsKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcmVzczsKLSAgICBpbnQgcmVzdWx0OwotCi0JLyogIENyZWF0ZSBhIHNvY2tldCBmb3IgdGhlIGNsaWVudC4gICovCi0KLSAgICBxdG9waWFfY2xpZW50X3NvY2tldCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7Ci0KLQlpZiggcXRvcGlhX2NsaWVudF9zb2NrZXQgIT0gUVRPUElBX0JBRF9TT0NLRVQgKQotCXsKLQkJLyogIE5hbWUgdGhlIHNvY2tldCwgYXMgYWdyZWVkIHdpdGggdGhlIHNlcnZlci4gICovCi0KLQkJYWRkcmVzcy5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLQkJYWRkcmVzcy5zaW5fYWRkci5zX2FkZHIgPSBpbmV0X2FkZHIoLypxdG9waWFfaG9zdF9uYW1lKi8iMTI3LjAuMC4xIik7CS8qIGxvY2FsaG9zdCAqLwotCQlhZGRyZXNzLnNpbl9wb3J0ID0gaHRvbnMocXRvcGlhX3BvcnRfbm8pOwotCQlsZW4gPSBzaXplb2YoYWRkcmVzcyk7Ci0KLQkJLyogIE5vdyBjb25uZWN0IG91ciBzb2NrZXQgdG8gdGhlIHNlcnZlcidzIHNvY2tldC4gICovCi0KLQkJcmVzdWx0ID0gY29ubmVjdChxdG9waWFfY2xpZW50X3NvY2tldCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyZXNzLCBsZW4pOwotCQkKLQkJaWYoIHJlc3VsdCA9PSBRVE9QSUFfQkFEX1NPQ0tFVCApCi0JCXsKLQkJCS8qIG1hcmsgdGhpcyBzb2NrZXQgYXMgYmFkICovCi0KLQkJCWNsb3NlKCBxdG9waWFfY2xpZW50X3NvY2tldCApOwotCi0JCQlxdG9waWFfY2xpZW50X3NvY2tldCA9IFFUT1BJQV9CQURfU09DS0VUOwotCi0JCQlpZiggIXRlc3QgKQotCQkJewotCQkJCWZwcmludGYoIGdwb3V0ZmlsZSwgImVycm9yIGNvbm5lY3RpbmcgdG8gc2VydmVyICFcbiIgKTsKLQkJCX0KLQkJCXJldHVybiAwOwkvKiBzb21ldGhpbmcgd2VudCB3cm9uZyAqLwotCQl9Ci0JfQotCWVsc2UKLQl7Ci0JCWlmKCAhdGVzdCApCi0JCXsKLQkJCWZwcmludGYoIGdwb3V0ZmlsZSwgImVycm9yIGNyZWF0aW5nIHNvY2tldCAhXG4iICk7Ci0JCX0KLQkJcmV0dXJuIDA7CS8qIHNvbWV0aGluZyB3ZW50IHdyb25nICovCi0JfQotCi0JcmV0dXJuIDE7CS8qIGV2ZXJ5dGhpbmcgaXN0IG9rICEgKi8KLX0KLQotc3RhdGljIHZvaWQgQ2xvc2VDbGllbnQoKQotewotICAgIGNsb3NlKCBxdG9waWFfY2xpZW50X3NvY2tldCApOwotfQotCi1zdGF0aWMgaW50IElzQ2xpZW50T2soKQotewotCXJldHVybiBxdG9waWFfY2xpZW50X3NvY2tldCAhPSBRVE9QSUFfQkFEX1NPQ0tFVDsKLX0KLQotc3RhdGljIHZvaWQgU2VuZERhdGFUb1NvY2tldCggc0xpbmUgKQotY29uc3QgY2hhciAqIHNMaW5lOwotewotCWlmKCBJc0NsaWVudE9rKCkgKQotCXsKLQkJaW50IHNlbmRfY291bnQ7Ci0KLQkJc2VuZF9jb3VudCA9IHNlbmQoIHF0b3BpYV9jbGllbnRfc29ja2V0LCBzTGluZSwgc3RybGVuKCBzTGluZSApLCAwICk7Ci0KLQkJaWYoIHNlbmRfY291bnQgPD0gMCApCi0JCXsKLQkJCWZwcmludGYoIGdwb3V0ZmlsZSwgImVycm9yIHdyaXRpbmcgdG8gc29ja2V0IHN0cj0lcyFcbiIsIHNMaW5lICk7Ci0JCX0KLQkJLyoKLQkJZWxzZQotCQl7Ci0JCQlmcHJpbnRmKCBncG91dGZpbGUsICJ3cm90ZSAlZCBieXRlc1xuIiwgc2VuZF9jb3VudCApOwotCQl9Ci0JCSovCi0JfQotCWVsc2UKLQl7Ci0JCS8qIGZvciB0ZXN0aW5nLi4uICovCi0JCS8qZnByaW50ZiggZ3BvdXRmaWxlLCBzTGluZSApOyovCi0JfQotfQotCi0vKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotCi1lbnVtIFFUT1BJQV9pZCB7IFFUT1BJQV9QT1JULCBRVE9QSUFfSE9TVCwgUVRPUElBX09USEVSIH07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ2VuX3RhYmxlIFFUT1BJQV9vcHRzW10gPQotewotICAgIHsgInBvJHJ0IiwgUVRPUElBX1BPUlQgfSwKLSAgICB7ICJobyRzdCIsIFFUT1BJQV9IT1NUIH0sCi0gICAgeyBOVUxMLCBRVE9QSUFfT1RIRVIgfQotfTsKLQotVEVSTV9QVUJMSUMgdm9pZAotUVRPUElBX29wdGlvbnMoKQotewotICAgIC8qIHRoaXMgaXMgbm90IGZvciB0aGUgcXRvcGlhIHRlcm1pbmFsICEgKi8KLQkvKlNlbmREYXRhVG9Tb2NrZXQoICJxdGQgb3B0aW9uc1xuIiApOyovCi0KLSAgICBpbnQgeCwgeTsKLSAgICBzdHJ1Y3QgdmFsdWUgYTsKLQotICAgIHdoaWxlICghRU5EX09GX0NPTU1BTkQpIAotCXsKLQkJc3dpdGNoKGxvb2t1cF90YWJsZSgmUVRPUElBX29wdHNbMF0sY190b2tlbikpIAotCQl7Ci0JCQljYXNlIFFUT1BJQV9QT1JUOgotCQkJCWNfdG9rZW4rKzsKLQkJCQlpZiAoRU5EX09GX0NPTU1BTkQpCi0JCQkJCWludF9lcnJvcihjX3Rva2VuLCAiZXhwZWN0aW5nIHBvcnQgbnVtYmVyIik7Ci0JCQkJcXRvcGlhX3BvcnRfbm8gPSAoaW50KSByZWFsKGNvbnN0X2V4cHJlc3MoJmEpKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgUVRPUElBX0hPU1Q6Ci0JCQkJY190b2tlbisrOwotCQkJCWlmIChFTkRfT0ZfQ09NTUFORCkKLQkJCQkJaW50X2Vycm9yKGNfdG9rZW4sICJleHBlY3RpbmcgaG9zdCBuYW1lIik7Ci0JCQkJaWYgKGlzc3RyaW5nKGNfdG9rZW4pKQotCQkJCQlxdW90ZV9zdHIoIHF0b3BpYV9ob3N0X25hbWUsIGNfdG9rZW4sIHNpemVvZihxdG9waWFfaG9zdF9uYW1lKSApOwotCQkJCWVsc2UKLSAJCQkJCWNvcHlfc3RyKCBxdG9waWFfaG9zdF9uYW1lLCBjX3Rva2VuLCBzaXplb2YocXRvcGlhX2hvc3RfbmFtZSkgKTsKLQkJCQljX3Rva2VuKys7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIFFUT1BJQV9PVEhFUjoKLQkJCWRlZmF1bHQ6Ci0JCQkJYnJlYWs7Ci0JCX0KLSAgICB9Ci0KLSAgICBzcHJpbnRmKHRlcm1fb3B0aW9ucywgImhvc3Q9JXMgcG9ydD0lZCIscXRvcGlhX2hvc3RfbmFtZSxxdG9waWFfcG9ydF9ubyk7Ci19Ci0KLQotVEVSTV9QVUJMSUMgdm9pZAotUVRPUElBX2luaXQoKQotewotCS8qIGluaXRpYWxpemUgbGliIChpZiBuZWNhc3NhcnkpICovCi0JSW5pdFNvY2tldHMoKTsKLQlDaGVja0ZvclF0cGxvdCggMCApOwotCU9wZW5DbGllbnQoIDAgKTsgCi0KLQlTZW5kRGF0YVRvU29ja2V0KCAicXRkIGluaXRcbiIgKTsKLX0KLQotCi1URVJNX1BVQkxJQyB2b2lkCi1RVE9QSUFfZ3JhcGhpY3MoKQotewotCVNlbmREYXRhVG9Tb2NrZXQoICJxdGQgZ3JhcGhpY3NcbiIgKTsKLX0KLQotVEVSTV9QVUJMSUMgdm9pZAotUVRPUElBX3RleHQoKQotewotCVNlbmREYXRhVG9Tb2NrZXQoICJxdGQgdGV4dFxuIiApOwotfQotCi0KLVRFUk1fUFVCTElDIHZvaWQKLVFUT1BJQV9yZXNldCgpCi17Ci0JU2VuZERhdGFUb1NvY2tldCggInF0ZCByZXNldFxuIiApOwotCi0JLyogZ2l2ZSB0aGUgcXRwbG90IGEgbGl0bGUgYml0IHRpbWUgdG8gc2h1dGRvd24gKi8KLQlNeVNsZWVwKDEwMCk7Ci0KLQlDbG9zZUNsaWVudCgpOwotCUV4aXRTb2NrZXRzKCk7Ci19Ci0KLQotVEVSTV9QVUJMSUMgdm9pZAotUVRPUElBX2xpbmV0eXBlKGxpbmV0eXBlKQotaW50IGxpbmV0eXBlOwotewotCWNoYXIgc0J1ZmZlcltRVE9QSUFfTUFYX0JVRkZFUl07Ci0KLQlzcHJpbnRmKCBzQnVmZmVyLCAicXRkIGxpbmV0eXBlIHR5cGU9JWRcbiIsbGluZXR5cGUgKTsKLQotCVNlbmREYXRhVG9Tb2NrZXQoIHNCdWZmZXIgKTsKLX0KLQotCi1URVJNX1BVQkxJQyB2b2lkCi1RVE9QSUFfbW92ZSh4LCB5KQotdW5zaWduZWQgaW50IHgsIHk7Ci17Ci0JY2hhciBzQnVmZmVyW1FUT1BJQV9NQVhfQlVGRkVSXTsKLQotCXNwcmludGYoIHNCdWZmZXIsICJxdGQgbW92ZSB4PSVkIHk9JWRcbiIseCx5ICk7Ci0KLQlTZW5kRGF0YVRvU29ja2V0KCBzQnVmZmVyICk7Ci19Ci0KLQotVEVSTV9QVUJMSUMgdm9pZAotUVRPUElBX3BvaW50KHgsIHksIHBvaW50KQotdW5zaWduZWQgaW50IHgsIHk7Ci1pbnQgcG9pbnQ7Ci17Ci0JY2hhciBzQnVmZmVyW1FUT1BJQV9NQVhfQlVGRkVSXTsKLQotCXNwcmludGYoIHNCdWZmZXIsICJxdGQgcG9pbnQgeD0lZCB5PSVkIHBvaW50PSVkXG4iLHgseSxwb2ludCApOwotCi0JU2VuZERhdGFUb1NvY2tldCggc0J1ZmZlciApOwotfQotCi0KLVRFUk1fUFVCTElDIHZvaWQKLVFUT1BJQV92ZWN0b3IoX3gsIF95KQotdW5zaWduZWQgaW50IF94LCBfeTsKLXsKLQljaGFyIHNCdWZmZXJbUVRPUElBX01BWF9CVUZGRVJdOwotCi0Jc3ByaW50Ziggc0J1ZmZlciwgInF0ZCB2ZWN0b3IgeD0lZCB5PSVkXG4iLF94LF95ICk7Ci0KLQlTZW5kRGF0YVRvU29ja2V0KCBzQnVmZmVyICk7Ci19Ci0KLQotVEVSTV9QVUJMSUMgdm9pZAotUVRPUElBX3B1dF90ZXh0KHgsIHksIHN0cikKLXVuc2lnbmVkIGludCB4LCB5OwotY29uc3QgY2hhciAqc3RyOwotewotCWNoYXIgc0J1ZmZlcltRVE9QSUFfTUFYX0JVRkZFUl07Ci0KLQlzcHJpbnRmKCBzQnVmZmVyLCAicXRkIHB1dF90ZXh0IHg9JWQgeT0lZCBzdHI9JXNcbiIseCx5LHN0ciApOwotCi0JU2VuZERhdGFUb1NvY2tldCggc0J1ZmZlciApOwotfQotCi0vKiBub3Qgc3Vwb3J0ZWQgeWV0ICEgKi8KLVRFUk1fUFVCTElDIHZvaWQKLVFUT1BJQV9hcnJvdyhzeCwgc3ksIGV4LCBleSwgaGVhZCkKLSAgICB1bnNpZ25lZCBpbnQgc3gsIHN5LCBleCwgZXk7Ci0gICAgaW50IGhlYWQ7CQkvKiBpZ25vcmVkICovCi17Ci0JY2hhciBzQnVmZmVyW1FUT1BJQV9NQVhfQlVGRkVSXTsKLQotCXNwcmludGYoIHNCdWZmZXIsICJxdGQgYXJyb3cgc3g9JWQgc3k9JWQgZXg9JWQgZXk9JWQgaGVhZD0lZFxuIixzeCxzeSxleCxleSxoZWFkICk7Ci0KLQlTZW5kRGF0YVRvU29ja2V0KCBzQnVmZmVyICk7Ci19Ci0KLQotI2VuZGlmIC8qIFRFUk1fQk9EWSAqLwotCi0jaWZkZWYgVEVSTV9UQUJMRQotVEVSTV9UQUJMRV9TVEFSVChxdG9waWFfZHJpdmVyKQotICAgICJxdG9waWEiLCAicXRvcGlhIG9yIFF0IiwKLSAgICBRVE9QSUFfWE1BWCwgUVRPUElBX1lNQVgsIFFUT1BJQV9WQ0hBUiwgUVRPUElBX0hDSEFSLAotICAgIFFUT1BJQV9WVElDLCBRVE9QSUFfSFRJQywgUVRPUElBX29wdGlvbnMsIFFUT1BJQV9pbml0LCBRVE9QSUFfcmVzZXQsCi0gICAgUVRPUElBX3RleHQsIG51bGxfc2NhbGUsIFFUT1BJQV9ncmFwaGljcywgUVRPUElBX21vdmUsIFFUT1BJQV92ZWN0b3IsCi0gICAgUVRPUElBX2xpbmV0eXBlLCBRVE9QSUFfcHV0X3RleHQsIG51bGxfdGV4dF9hbmdsZSwKLSAgICBudWxsX2p1c3RpZnlfdGV4dCwgUVRPUElBX3BvaW50LCAvKlFUT1BJQV9hcnJvdyovMCwgc2V0X2ZvbnRfbnVsbCwKLSAgICAwLAkJCQkvKiBwb2ludHNpemUgKi8KLSAgICBURVJNX0NBTl9NVUxUSVBMT1QsCi0gICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTAotI2lmZGVmIFVTRV9NT1VTRQotICAgICwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTAotI2VuZGlmCi0jaWZkZWYgUE0zRAotICAgICwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTAotI2VuZGlmCi1URVJNX1RBQkxFX0VORChxdG9waWFfZHJpdmVyKQotCi0jdW5kZWYgTEFTVF9URVJNCi0jZGVmaW5lIExBU1RfVEVSTSBxdG9waWFfZHJpdmVyCi0KLSNlbmRpZiAvKiBURVJNX1RBQkxFICovCi0KLSNpZmRlZiBURVJNX0hFTFAKLVNUQVJUX0hFTFAocXRvcGlhKQotIjEgcXRvcGlhIiwKLSI/Y29tbWFuZHMgc2V0IHRlcm1pbmFsIHF0b3BpYSIsCi0iP3NldCB0ZXJtaW5hbCBxdG9waWEiLAotIj9zZXQgdGVybSBxdG9waWEiLAotIj90ZXJtaW5hbCBxdG9waWEiLAotIj90ZXJtIHF0b3BpYSIsCi0iP3F0b3BpYSIsCi0iIFRoZSBgcXRvcGlhYCB0ZXJtaW5hbCBkcml2ZXIgaGFzIG5vIGFkZGl0aW9uYWwgb3B0aW9ucy4iLAotIiIsCi0iIFN5bnRheDoiLAotIiAgICAgICBzZXQgdGVybWluYWwgcXRvcGlhIiwKLSIiCi1FTkRfSEVMUChxdG9waWEpCi0jZW5kaWYgLyogVEVSTV9IRUxQICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3Qvc3ViZGlycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC9zdWJkaXJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzdkMWYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC9zdWJkaXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIC90bXAvTWFrZWZpbGUuYW0JMjAwNy0wOC0yMyAxMzoxMDoxNS41NjA2NTkwMjMgKzAyMDAKLSsrKyBnbnVwbG90LTQuMi4wL01ha2VmaWxlLmFtCTIwMDctMDgtMjMgMTM6MTA6MzQuOTYxNzY0NjI5ICswMjAwCi1AQCAtMSw3ICsxLDcgQEAKLSAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIHByb2R1Y2UgTWFrZWZpbGUuaW4gLSotTWFrZWZpbGUtKi0KLSBBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbiAxLjJoCi0gCi0tU1VCRElSUyA9IGNvbmZpZyBtNCB0ZXJtIHNyYyBkb2NzICQoTElTUERJUikgbWFuIGRlbW8gdHV0b3JpYWwgc2hhcmUKLStTVUJESVJTID0gY29uZmlnIG00IHRlcm0gc3JjICAkKExJU1BESVIpIG1hbiBzaGFyZQotIAotIEVYVFJBX0RJU1QgPSBCVUdTIENvZGVTdHlsZSBDb3B5cmlnaHQgRkFRIEdOVW1ha2VmaWxlIElOU1RBTEwgSU5TVEFMTC5nbnUgXAotIE1ha2VmaWxlLm1haW50IFBBVENITEVWRUwgUEdQS0VZUyBQT1JUSU5HIFJFQURNRSBSRUFETUUuMVNUIFJFQURNRS5leHAgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90XzUuMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90XzUuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjMwOGJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdF81LjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgZ251cGxvdC5pbmMKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZ251cGxvdC8ke0JQfS50YXIuZ3o7bmFtZT1hcmNoaXZlIFwKLSAgICBodHRwOi8vd3d3Lm1uZXVyb3RoLmRlL3ByaXZhdC96YXVydXMvcXRwbG90LTAuMi50YXIuZ3o7bmFtZT1xdHBsb3QgXAotICAgIGZpbGU6Ly9zdWJkaXJzLnBhdGNoIFwKLSAgICBmaWxlOi8vbHVhLWxvYWRsaWJzLWNvbmZpZ3VyZS1pbi1maXgucGF0Y2ggXAotICAgIGZpbGU6Ly9nbnVwbG90LmRlc2t0b3AgXAotICAgIGZpbGU6Ly9nbnVwbG90LnBuZyBcCi0iCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImM1ZTk2ZmNhNzNhZmJlZTRmNTdjYmMxYmZjZTZiM2I4IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMjVmM2UwYmYxOTJlMDExMTVjNTgwZjI3OGMzNzI1ZDdhNTY5ZWI4NDg3ODZlMTJiNDU1YTNmZGE3MDMxMjA1MyIKLVNSQ19VUklbcXRwbG90Lm1kNXN1bV0gPSAiMGE0ODE4ODVhNDk2MDkyYzc3ZWI0MDE3NTQwYjVjZjYiCi1TUkNfVVJJW3F0cGxvdC5zaGEyNTZzdW1dID0gIjZkZjMxNzE4M2ZmNjJjYzgyZjNkY2Y4ODIwN2EyNjdjZDY0NzhjYjUxNDdmNTVkNzUzMGM5NGYxYWQ1ZjQxMzIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3RfNS4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3RfNS4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNjMjg5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdF81LjIuMi5iYgpAQCAtMCwwICsxLDY5IEBACitTVU1NQVJZID0gIkdudXBsb3QgaXMgYSBwb3J0YWJsZSBjb21tYW5kLWxpbmUgZHJpdmVuIGdyYXBoaW5nIHV0aWxpdHkiCitERVNDUklQVElPTiA9ICJHbnVwbG90IGlzIGEgcG9ydGFibGUgY29tbWFuZC1saW5lIGRyaXZlbiBpbnRlcmFjdGl2ZSBkYXRhZmlsZSBcCisodGV4dCBvciBiaW5hcnkpIGFuZCBmdW5jdGlvbiBwbG90dGluZyB1dGlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGxvdC5pbmZvLyIKK1NFQ1RJT04gPSAiY29uc29sZS9zY2llbnRpZmljIgorTElDRU5TRSA9ICJnbnVwbG90IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0yNDNhMTg2ZmMyZmQzYjk5MjEyNWQ2MGQ1YjFiYWI4ZiIKK0RFUEVORFMgPSAiJHtCUE59LW5hdGl2ZSB2aXJ0dWFsL2xpYngxMSBnZCByZWFkbGluZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisjIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2dudXBsb3QvJHtCUH0udGFyLmd6O25hbWU9YXJjaGl2ZSBcCisgICAgaHR0cDovL3d3dy5tbmV1cm90aC5kZS9wcml2YXQvemF1cnVzL3F0cGxvdC0wLjIudGFyLmd6O25hbWU9cXRwbG90IFwKKyAgICBmaWxlOi8vZ251cGxvdC5kZXNrdG9wIFwKKyAgICBmaWxlOi8vZ251cGxvdC5wbmcgXAorIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgZmlsZTovLzAwMDItZG8tbm90LWJ1aWxkLWRlbW9zLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1Vc2UtbmF0aXZlLXRvb2xzLXRvLWJ1aWxkLWRvY3MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LUFkZC1jb25maWd1cmUtb3B0aW9uLXRvLWZpbmQtcXQ1LW5hdGl2ZS10b29scy5wYXRjaCBcCisiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjYwYWVkZDA4OTk4MTYwNTkzMTk5NDU5ZGVhODQ2N2ZlIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYTQxNmQyMmYwMmJkZjM4NzNlZjgyYzVlYjdmOGU5NDE0Njc5NTgxMWVmODA4ZTEyYjAzNWFkYTg4ZWY3YjFhMSIKK1NSQ19VUklbcXRwbG90Lm1kNXN1bV0gPSAiMGE0ODE4ODVhNDk2MDkyYzc3ZWI0MDE3NTQwYjVjZjYiCitTUkNfVVJJW3F0cGxvdC5zaGEyNTZzdW1dID0gIjZkZjMxNzE4M2ZmNjJjYzgyZjNkY2Y4ODIwN2EyNjdjZDY0NzhjYjUxNDdmNTVkNzUzMGM5NGYxYWQ1ZjQxMzIiCisKKyMgZm9yIGJ1aWxkaW5nIGRvY3MgKHRoZXkgZGVzZXJ2ZSBpdCkgd2UgbmVlZCAqZG9jMiogdG9vbHMgbmF0aXZlCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInJlYWRsaW5lLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gImZpbGU6Ly8wMDAxLXJlZHVjZS1idWlsZC10by1jb252ZXJzaW9uLXRvb2xzLWZvci1uYXRpdmUtYnVpbGQucGF0Y2giCisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgJHtCfS9kb2NzLypkb2MqICR7RH0ke2JpbmRpcn0KKyAgICBybSAke0R9JHtiaW5kaXJ9LyoubworfQorCitQQUNLQUdFQ09ORklHID8/PSAiY2Fpcm8iCitQQUNLQUdFQ09ORklHW2NhaXJvXSA9ICItLXdpdGgtY2Fpcm8sLS13aXRob3V0LWNhaXJvLGNhaXJvIHBhbmdvIgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWEiCitQQUNLQUdFQ09ORklHW3F0NV0gPSAiLS13aXRoLXF0IC0td2l0aC1xdDVuYXRpdmVzeXNyb290PSR7U1RBR0lOR19ESVJfTkFUSVZFfSwtLXdpdGhvdXQtcXQscXRiYXNlLW5hdGl2ZSBxdGJhc2UgcXRzdmcgcXR0b29scy1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtcmVhZGxpbmU9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC10dXRvcmlhbCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXd4d2lkZ2V0cyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3F0cGxvdC0wLjIvcXRvcGlhLnRybSAke1N9L3Rlcm0vCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9nbnVwbG90LmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zLworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vcGl4bWFwcy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9nbnVwbG90LnBuZyAke0R9JHtkYXRhZGlyfS9waXhtYXBzLworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0teDExLWRiZyAke1BOfS14MTEiCitERVNDUklQVElPTl8ke1BOfS14MTEgPSAiWDExIGRpc3BsYXkgdGVybWluYWwgZm9yIEdudXBsb3QuIgorU0VDVElPTl8ke1BOfS14MTEgPSAieDExL3NjaWVudGlmaWMiCitGSUxFU18ke1BOfS14MTEgPSAiJHtsaWJleGVjZGlyfSAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyAke2RhdGFkaXJ9L3BpeG1hcHMgJHtsaWJkaXJ9L1gxMSAiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3RleG1mIgorRklMRVNfJHtQTn0teDExLWRiZyArPSAiJHtsaWJleGVjZGlyfS9nbnVwbG90LyovLmRlYnVnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGF2ZWdlZC9oYXZlZ2VkL2hhdmVnZWQtaW5pdC5kLU1ha2VmaWxlLmFtLWFkZC1taXNzaW5nLWRlcGVuZGVuY3kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWQvaGF2ZWdlZC1pbml0LmQtTWFrZWZpbGUuYW0tYWRkLW1pc3NpbmctZGVwZW5kZW5jeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmZkNTdjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGF2ZWdlZC9oYXZlZ2VkL2hhdmVnZWQtaW5pdC5kLU1ha2VmaWxlLmFtLWFkZC1taXNzaW5nLWRlcGVuZGVuY3kucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBiMDRlZWVhNzc3ZGYzMjM2NGRmNzRiZDYzZmM1YjdmYjA1ZDIxYzhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjcgTWFyIDIwMTggMTA6MjE6MDkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5pdC5kL01ha2VmaWxlLmFtOiBhZGQgbWlzc2luZyBkZXBlbmRlbmN5CisKK2luc3RhbGwtZGF0YS1ob29rIHNob3VsZCBlcGVuZCBvbiBpbnN0YWxsLWV4ZWMtaG9vaywgb3IgdGhlCitoYXZlZ2VkLnNlcnZpY2UgbWlnaHQgYmUgaW5zdGFsbGVkIGluY29ycmVjdGx5IHdoZW4gYnVpbGQKK3dpdGggLWogb3B0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vIHVwc3RyZWFtIG1haWxpbmcgbGlzdF0KKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGluaXQuZC9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luaXQuZC9NYWtlZmlsZS5hbSBiL2luaXQuZC9NYWtlZmlsZS5hbQoraW5kZXggNTk0MGY3OC4uMDdiY2RmNyAxMDA2NDQKKy0tLSBhL2luaXQuZC9NYWtlZmlsZS5hbQorKysrIGIvaW5pdC5kL01ha2VmaWxlLmFtCitAQCAtMzMsNyArMzMsNyBAQCBpZiBFTkFCTEVfU1lTVEVNRAorIGluc3RhbGwtZXhlYy1ob29rOgorIAkkKGRvX3N1YnN0KSA8ICQoc3JjZGlyKS8kKHNyY190bXBsKSA+IGhhdmVnZWQuc2VydmljZTsKKyAKKy1pbnN0YWxsLWRhdGEtaG9vazoKKytpbnN0YWxsLWRhdGEtaG9vazogaW5zdGFsbC1leGVjLWhvb2sKKyBpZiBFTkFCTEVfU1lTVEVNRF9MT09LVVAKKyAJaW5zdGFsbCAtcCAtRCAtbTY0NCBoYXZlZ2VkLnNlcnZpY2UgJChERVNURElSKWBwa2ctY29uZmlnIC0tdmFyaWFibGU9c3lzdGVtZHN5c3RlbXVuaXRkaXIgc3lzdGVtZGAvaGF2ZWdlZC5zZXJ2aWNlOworIGVsc2UKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hhdmVnZWQvaGF2ZWdlZC9yZW1vdmUtc3lzdGVtZC11bml0LTUwMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hhdmVnZWQvaGF2ZWdlZC9yZW1vdmUtc3lzdGVtZC11bml0LTUwMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYyN2JjYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWQvcmVtb3ZlLXN5c3RlbWQtdW5pdC01MDMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0tLS0gYS9pbml0LmQvTWFrZWZpbGUuYW0JMjAxNC0wMS0wMiAxODo1NTo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL2luaXQuZC9NYWtlZmlsZS5hbQkyMDE0LTA4LTExIDEwOjU5OjQwLjAwMDAwMDAwMCArMDIwMAotQEAgLTM0LDExICszNCwxMSBAQAotIAkkKGRvX3N1YnN0KSA8ICQoc3JjZGlyKS8kKHNyY190bXBsKSA+IGhhdmVnZWQuc2VydmljZTsKLSAKLSBpbnN0YWxsLWRhdGEtaG9vazoKLS1pZiBFTkFCTEVfU1lTVEVNRF9MT09LVVAKLS0JaW5zdGFsbCAtcCAtbTY0NCBoYXZlZ2VkLnNlcnZpY2UgYHBrZy1jb25maWcgLS12YXJpYWJsZT1zeXN0ZW1kc3lzdGVtdW5pdGRpciBzeXN0ZW1kYC9oYXZlZ2VkLnNlcnZpY2U7Ci0tZWxzZQotLQlpbnN0YWxsIC1wIC1tNjQ0IGhhdmVnZWQuc2VydmljZSAoJHVuaXRfZGlyKS9oYXZlZ2VkLnNlcnZpY2U7Ci0tZW5kaWYKLS0Jc3lzdGVtY3RsIGVuYWJsZSBoYXZlZ2VkLnNlcnZpY2U7Ci0rI2lmIEVOQUJMRV9TWVNURU1EX0xPT0tVUAotKyMJaW5zdGFsbCAtcCAtbTY0NCBoYXZlZ2VkLnNlcnZpY2UgYHBrZy1jb25maWcgLS12YXJpYWJsZT1zeXN0ZW1kc3lzdGVtdW5pdGRpciBzeXN0ZW1kYC9oYXZlZ2VkLnNlcnZpY2U7Ci0rI2Vsc2UKLSsjCWluc3RhbGwgLXAgLW02NDQgaGF2ZWdlZC5zZXJ2aWNlICgkdW5pdF9kaXIpL2hhdmVnZWQuc2VydmljZTsKLSsjZW5kaWYKLSsjCXN5c3RlbWN0bCBlbmFibGUgaGF2ZWdlZC5zZXJ2aWNlOwotIAotIGVuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWRfMS45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWRfMS45LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNDRjNDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGF2ZWdlZC9oYXZlZ2VkXzEuOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJoYXZlZ2VkIC0gQSBzaW1wbGUgZW50cm9weSBkYWVtb24iCi1ERVNDUklQVElPTiA9ICJUaGUgaGF2ZWdlZCBwcm9qZWN0IGlzIGFuIGF0dGVtcHQgdG8gcHJvdmlkZSBhbiBlYXN5LXRvLXVzZSwgdW5wcmVkaWN0YWJsZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBiYXNlZCB1cG9uIGFuIGFkYXB0YXRpb24gb2YgdGhlIEhBVkVHRSBhbGdvcml0aG0uIEhhdmVnZWQgd2FzIGNyZWF0ZWQgdG8gcmVtZWR5IGxvdy1lbnRyb3B5IGNvbmRpdGlvbnMgaW4gdGhlIExpbnV4IHJhbmRvbSBkZXZpY2UgdGhhdCBjYW4gb2NjdXIgdW5kZXIgc29tZSB3b3JrbG9hZHMsIGVzcGVjaWFsbHkgb24gaGVhZGxlc3Mgc2VydmVycy4iCi1BVVRIT1IgPSAiR2FyeSBXdWVydHoiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmlzc2lob3N0cy5jb20vaGF2ZWdlZC9pbmRleC5odG1sIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU09ImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmlzc2lob3N0cy5jb20vaGF2ZWdlZC9oYXZlZ2VkLSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL3JlbW92ZS1zeXN0ZW1kLXVuaXQtNTAzLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAxNWZmNThjZDEwNjA3ZGIwZTBkZTYwYWVjYTJmNWY4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljMjM2M2VkOTU0MmE2Nzg0ZmYwOGUyNDcxODIxMzdlNzFmMmRkYjc5ZThlNmMxYWM0YWQ1MGQyMWNlZDM3MTUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1pbml0PXNlcnZpY2UucmVkaGF0IFwKLSAgICAtLWVuYWJsZS1uaXN0ZXN0PXllcyBcCi0gICAgLS1lbmFibGUtb2x0PXllcyBcCi0gICAgLS1lbmFibGUtdGhyZWFkcz1ubyBcCi0iCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiaGF2ZWdlZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBta2RpciAtcCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLXAgLW02NDQgJHtCfS9pbml0LmQvaGF2ZWdlZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi19Ci0KLU1JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWRfMS45LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWRfMS45LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVlZTg0MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hhdmVnZWQvaGF2ZWdlZF8xLjkuMi5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gImhhdmVnZWQgLSBBIHNpbXBsZSBlbnRyb3B5IGRhZW1vbiIKK0RFU0NSSVBUSU9OID0gIlRoZSBoYXZlZ2VkIHByb2plY3QgaXMgYW4gYXR0ZW1wdCB0byBwcm92aWRlIGFuIGVhc3ktdG8tdXNlLCB1bnByZWRpY3RhYmxlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGJhc2VkIHVwb24gYW4gYWRhcHRhdGlvbiBvZiB0aGUgSEFWRUdFIGFsZ29yaXRobS4gSGF2ZWdlZCB3YXMgY3JlYXRlZCB0byByZW1lZHkgbG93LWVudHJvcHkgY29uZGl0aW9ucyBpbiB0aGUgTGludXggcmFuZG9tIGRldmljZSB0aGF0IGNhbiBvY2N1ciB1bmRlciBzb21lIHdvcmtsb2FkcywgZXNwZWNpYWxseSBvbiBoZWFkbGVzcyBzZXJ2ZXJzLiIKK0FVVEhPUiA9ICJHYXJ5IFd1ZXJ0eiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaXNzaWhvc3RzLmNvbS9oYXZlZ2VkL2luZGV4Lmh0bWwiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTT0iZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuaXNzaWhvc3RzLmNvbS9oYXZlZ2VkL2hhdmVnZWQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2hhdmVnZWQtaW5pdC5kLU1ha2VmaWxlLmFtLWFkZC1taXNzaW5nLWRlcGVuZGVuY3kucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZmIxZDhiM2RjYmI5ZDA2YjMwZWNjZDhhYTUwMGZkMzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjc3ZDlhZGJkZjQyMWI2MTYwMWZhMjlmYWE5Y2UzYjQ3OWQ5MTBmNzNjNjZiOWUzNjRiYTg2NDJjY2JmYmU3MCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitFWFRSQV9PRUNPTkYgPSAiXAorICAgIC0tZW5hYmxlLW5pc3Rlc3Q9eWVzIFwKKyAgICAtLWVuYWJsZS1vbHQ9eWVzIFwKKyAgICAtLWVuYWJsZS10aHJlYWRzPW5vIFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLWluaXQ9c2VydmljZS5yZWRoYXQgLS1lbmFibGUtaW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LCAtLWVuYWJsZS1pbml0PXN5c3YucmVkaGF0LCBzeXN0ZW1kIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59IgorSU5JVFNDUklQVF9OQU1FID0gImhhdmVnZWQiCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfSA9ICJkZWZhdWx0cyA5IgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImhhdmVnZWQuc2VydmljZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBUaGUgZXhpdCBzdGF0dXMgaXMgMTQzIHdoZW4gdGhlIHNlcnZpY2UgaXMgc3RvcHBlZAorICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIHNlZCAtaSAnL0V4ZWNTdGFydC9hIFN1Y2Nlc3NFeGl0U3RhdHVzPTE0MycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vaGF2ZWdlZC5zZXJ2aWNlCisgICAgZmkKK30KKworTUlQU19JTlNUUlVDVElPTl9TRVQgPSAibWlwcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hleGVkaXQvaGV4ZWRpdC8wMDAxLWRvbi10LXN0cmlwLXdoZW4taW5zdGFsbGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hleGVkaXQvaGV4ZWRpdC8wMDAxLWRvbi10LXN0cmlwLXdoZW4taW5zdGFsbGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM4NGIwNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oZXhlZGl0L2hleGVkaXQvMDAwMS1kb24tdC1zdHJpcC13aGVuLWluc3RhbGxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGNjNjcyNDZjYTY4MzllNWIzZjZhMjg2ZjEwZWQyNGMyMjViNzdhNWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/RXJpYz0yMEI9QzM9QTluYXJkPz0gPGVyaWNAZXVrcmVhLmNvbT4KLURhdGU6IFRodSwgNCBKdWwgMjAxMyAxMjozNDozMiArMDIwMAotU3ViamVjdDogW1BBVENIXSBkb24ndCBzdHJpcCB3aGVuIGluc3RhbGxpbmcKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotU2lnbmVkLW9mZi1ieTogRXJpYyBCw6luYXJkIDxlcmljQGV1a3JlYS5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLS0tLQotIE1ha2VmaWxlLmluIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggMTU5NDYzZS4uNzM1Y2M3MiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTQyLDYgKzQyLDYgQEAgZGlzdGNsZWFuOiBjbGVhbgotIAotIGluc3RhbGw6ICQoUFJPRFVDVCkKLSAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQoYmluZGlyKQotLQkkKElOU1RBTEwpIC1zIC1tIDc1NSAkKFBST0RVQ1QpICQoREVTVERJUikkKGJpbmRpcikKLSsJJChJTlNUQUxMKSAtbSA3NTUgJChQUk9EVUNUKSAkKERFU1RESVIpJChiaW5kaXIpCi0gCSQoSU5TVEFMTCkgLWQgLW0gNzU1ICQoREVTVERJUikkKG1hbmRpcikvbWFuMQotIAkkKElOU1RBTEwpIC1tIDY0NCAkKFBST0RVQ1QpLjEgJChERVNURElSKSQobWFuZGlyKS9tYW4xCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hleGVkaXQvaGV4ZWRpdF8xLjIuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oZXhlZGl0L2hleGVkaXRfMS4yLjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWRmNWIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hleGVkaXQvaGV4ZWRpdF8xLjIuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gInZpZXcgYW5kIGVkaXQgZmlsZXMgaW4gaGV4YWRlY2ltYWwgb3IgaW4gQVNDSUkiCi1IT01FUEFHRSA9ICJodHRwOi8vcmlnYXV4Lm9yZy9oZXhlZGl0Lmh0bWwiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLURFUEVORFMgPSAibmN1cnNlcyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3JpZ2F1eC5vcmcvJHtCUH0uc3JjLnRneiBcCi0gICAgZmlsZTovLzAwMDEtZG9uLXQtc3RyaXAtd2hlbi1pbnN0YWxsaW5nLnBhdGNoICIKLQotU1JDX1VSSVttZDVzdW1dID0gImE1YWYxMzc4ZDAyODUxMmE5Y2FkMjdhNWJhM2UxNWY5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZhMTI2ZGEzMGE3N2Y1YzBiMDgwMzhhYTdhODgxZDkxMGUzYjY1ZDEzNzY3ZmI1NGM1OGM5ODM5NjNiODhkZDciCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGV4ZWRpdC9oZXhlZGl0XzEuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGV4ZWRpdC9oZXhlZGl0XzEuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MGI3ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oZXhlZGl0L2hleGVkaXRfMS40LjIuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJ2aWV3IGFuZCBlZGl0IGZpbGVzIGluIGhleGFkZWNpbWFsIG9yIGluIEFTQ0lJIgorSE9NRVBBR0UgPSAiaHR0cDovL3JpZ2F1eC5vcmcvaGV4ZWRpdC5odG1sIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitERVBFTkRTID0gIm5jdXJzZXMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcGl4ZWwvaGV4ZWRpdC5naXQgXAorICAgICIKKworU1JDUkVWID0gIjgwMGU0YjJlNjI4MDUzMWE4NGZkMjNlZTBiNDhlMTZiYWViOTA4NzgiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGlfMC45LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYgppbmRleCBjYmYwNDczLi4wZjc5OGQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYgpAQCAtMjAsOCArMjAsOCBAQAogaW5oZXJpdCBjbWFrZQogCiBFWFRSQV9PRUNNQUtFID0gIi1EV0lUSF9QWVRIT049T04gXAotICAgICAgICAgICAgICAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWI2NCIsICItRExJQl9TVUZGSVg9NjQiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICAgJHtAYmFzZV9jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliMzIiLCAiLURMSUJfU1VGRklYPTMyIiwgIiIsIGQpfSBcCisgICAgICAgICAgICAgICAgICR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWI2NCIsICItRExJQl9TVUZGSVg9NjQiLCAiIiwgZCl9IFwKKyAgICAgICAgICAgICAgICAgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjMyIiwgIi1ETElCX1NVRkZJWD0zMiIsICIiLCBkKX0gXAogICAgICAgICAgICAgICAgICIKIAogTERGTEFHU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDEtZml4LWNvbmZpZ3VyZS1hbmQtY29tcGlsZS1mYWlsdXJlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDEtZml4LWNvbmZpZ3VyZS1hbmQtY29tcGlsZS1mYWlsdXJlcy5wYXRjaAppbmRleCA5MTRlZTk5Li43NDU4ODNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDAxLWZpeC1jb25maWd1cmUtYW5kLWNvbXBpbGUtZmFpbHVyZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMS1maXgtY29uZmlndXJlLWFuZC1jb21waWxlLWZhaWx1cmVzLnBhdGNoCkBAIC0zMyw3ICszMyw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMDI3MGM5OS4uYjdjNzM2OCAxMDA2NDQKK2luZGV4IGQ0MWEzMDcuLmIwMzZlMDQgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTksNiArOSw4IEBAIEFDX0RJU0FCTEVfU1RBVElDCkBAIC00NSw3ICs0NSw3IEBACiAgQU1fUEFUSF9QWVRIT04KICAKICBBTV9QUk9HX0FSCi1AQCAtMTI5LDcgKzEzMSw2IEBAIExJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtVREVWXSwgW2xpYnVkZXYgPj0gMjE2XSkKK0BAIC0xNTQsNyArMTU2LDYgQEAgTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW0tNT0RdLCBbbGlia21vZCA+PSAxOV0pCiAgQVNfSUYoW3Rlc3QgIngkd2l0aF9jcnlwdG8iICE9ICJ4bm8iXSwKICAgICAgICBbTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW0NSWVBUU0VUVVBdLCBbbGliY3J5cHRzZXR1cCA+PSAxLjYuN10pCiAgICAgICAgIExJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtOU1NdLCBbbnNzID49IDMuMTguMF0pCkBAIC01Myw3ICs1Myw3IEBACiAgICAgICAgXSwKICAgICAgICBbXSkKICAKLUBAIC0xMzcsMTAgKzEzOCw2IEBAIEFTX0lGKFt0ZXN0ICJ4JHdpdGhfZG0iICE9ICJ4bm8iIC1vICJ4JHdpdGhfbHZtIiAhPSAieG5vIiAtbyAieCR3aXRoX2x2bV9kYnVzIiAhCitAQCAtMTYyLDEwICsxNjMsNiBAQCBBU19JRihbdGVzdCAieCR3aXRoX2RtIiAhPSAieG5vIiAtbyAieCR3aXRoX2x2bSIgIT0gInhubyIgLW8gIngkd2l0aF9sdm1fZGJ1cyIgIQogICAgICAgIFtMSUJCTE9DS0RFVl9QS0dfQ0hFQ0tfTU9EVUxFUyhbREVWTUFQUEVSXSwgW2Rldm1hcHBlciA+PSAxLjAyLjkzXSldLAogICAgICAgIFtdKQogIApAQCAtNjEsMTAgKzYxLDEwIEBACiAtICAgICAgW0xJQkJMT0NLREVWX0NIRUNLX0hFQURFUihbZG1yYWlkL2RtcmFpZC5oXSwgW10sIFtkbXJhaWQuaCBub3QgYXZhaWxhYmxlXSldLAogLSAgICAgIFtdKQogLQotIEFTX0lGKFt0ZXN0ICJ4JHdpdGhfa2JkIiAhPSAieG5vIl0sCi0gICAgICAgW0xJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtLTU9EXSwgW2xpYmttb2QgPj0gMTldKV0sCisgQVNfSUYoW3Rlc3QgIngkd2l0aF9wYXJ0IiAhPSAieG5vIiAtbyAieCR3aXRoX2ZzIiAhPSAieG5vIl0sCisgICAgICAgW0xJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtQQVJURURdLCBbbGlicGFydGVkID49IDMuMV0pXQogICAgICAgIFtdKQotQEAgLTE1NCw3ICsxNTEsOCBAQCBBU19JRihbdGVzdCAieCR3aXRoX2ZzIiAhPSAieG5vIl0sCitAQCAtMTc0LDcgKzE3MSw4IEBAIEFTX0lGKFt0ZXN0ICJ4JHdpdGhfZnMiICE9ICJ4bm8iXSwKICAgICAgICBbTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW01PVU5UXSwgW21vdW50ID49IDIuMjMuMF0pCiAgICAgICAgICMgbmV3IHZlcnNpb25zIG9mIGxpYm1vdW50IGhhcyBzb21lIG5ldyBmdW5jdGlvbnMgd2UgY2FuIHVzZQogICAgICAgICBBU19JRihbJFBLR19DT05GSUcgLS1hdGxlYXN0LXZlcnNpb249Mi4zMC4wIG1vdW50XSwKQEAgLTc1LDUgKzc1LDUgQEAKICAgICAgICAgTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW0JMS0lEXSwgW2Jsa2lkID49IDIuMjMuMF0pCiAgICAgICAgICMgb2xkZXIgdmVyc2lvbnMgb2YgbGliYmxraWQgZG9uJ3Qgc3VwcG9ydCBCTEtJRF9TVUJMS1NfQkFEQ1NVTSBzbyBsZXQncyBqdXN0CiAtLSAKLTEuOC4zLjEKKzIuMTQuMwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDAzLXJlbW92ZS1kbXJhaWQtd2hpbGUtY29tcGlsaW5nLXdpdGgtd2l0aC1kbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDMtcmVtb3ZlLWRtcmFpZC13aGlsZS1jb21waWxpbmctd2l0aC13aXRoLWRtLnBhdGNoCmluZGV4IDNkOWNiNmQuLmFjNWI1ZTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDMtcmVtb3ZlLWRtcmFpZC13aGlsZS1jb21waWxpbmctd2l0aC13aXRoLWRtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDMtcmVtb3ZlLWRtcmFpZC13aGlsZS1jb21waWxpbmctd2l0aC13aXRoLWRtLnBhdGNoCkBAIC0yMiwyMSArMjIsMjIgQEAKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCi0gc3JjL2xpYi9wbHVnaW5fYXBpcy9kbS5hcGkgICAgICAgICAgfCAgNDEgLS0tLS0KKyBzcmMvbGliL3BsdWdpbl9hcGlzL2RtLmFwaSAgICAgICAgICB8ICA1MCAtLS0tLS0KICBzcmMvcGx1Z2lucy9NYWtlZmlsZS5hbSAgICAgICAgICAgICB8ICAgMiArLQotIHNyYy9wbHVnaW5zL2RtLmMgICAgICAgICAgICAgICAgICAgIHwgMzE4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9wbHVnaW5zL2RtLmMgICAgICAgICAgICAgICAgICAgIHwgMzMwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIHNyYy9wbHVnaW5zL2RtLmggICAgICAgICAgICAgICAgICAgIHwgICA1IC0KICBzcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9CbG9ja0Rldi5weSB8ICAgNiAtCi0gNSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMzcxIGRlbGV0aW9ucygtKQorIDUgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDM5MiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9saWIvcGx1Z2luX2FwaXMvZG0uYXBpIGIvc3JjL2xpYi9wbHVnaW5fYXBpcy9kbS5hcGkKLWluZGV4IGE4ODViYmEuLmVjODZiODAgMTAwNjQ0CitpbmRleCAwNGZkOGQ4Li41ZDMwYjZhIDEwMDY0NAogLS0tIGEvc3JjL2xpYi9wbHVnaW5fYXBpcy9kbS5hcGkKICsrKyBiL3NyYy9saWIvcGx1Z2luX2FwaXMvZG0uYXBpCi1AQCAtNjgsNDQgKzY4LDMgQEAgZ2NoYXIqIGJkX2RtX25vZGVfZnJvbV9uYW1lIChjb25zdCBnY2hhciAqbWFwX25hbWUsIEdFcnJvciAqKmVycm9yKTsKK0BAIC0xMTEsNTMgKzExMSwzIEBAIGdjaGFyKiBiZF9kbV9nZXRfc3Vic3lzdGVtX2Zyb21fbmFtZSAoY29uc3QgZ2NoYXIgKmRldmljZV9uYW1lLCBHRXJyb3IgKiplcnJvcik7CisgICogVGVjaCBjYXRlZ29yeTogJUJEX0RNX1RFQ0hfTUFQLSVCRF9ETV9URUNIX01PREVfUVVFUlkKICAgKi8KICBnYm9vbGVhbiBiZF9kbV9tYXBfZXhpc3RzIChjb25zdCBnY2hhciAqbWFwX25hbWUsIGdib29sZWFuIGxpdmVfb25seSwgZ2Jvb2xlYW4gYWN0aXZlX29ubHksIEdFcnJvciAqKmVycm9yKTsKLSAKKy0KIC0vKioKIC0gKiBiZF9kbV9nZXRfbWVtYmVyX3JhaWRfc2V0czoKIC0gKiBAbmFtZTogKGFsbG93LW5vbmUpOiBuYW1lIG9mIHRoZSBtZW1iZXIKQEAgLTQ5LDYgKzUwLDggQEAKIC0gKiB0aGUgbWVtYmVyIG9yICVOVUxMIGluIGNhc2Ugb2YgZXJyb3IKIC0gKgogLSAqIE9uZSBvZiBAbmFtZSwgQHV1aWQgb3IgQG1ham9yOkBtaW5vciBoYXMgdG8gYmUgZ2l2ZW4uCistICoKKy0gKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9SQUlELSVCRF9ETV9URUNIX01PREVfUVVFUlkKIC0gKi8KIC1nY2hhcioqIGJkX2RtX2dldF9tZW1iZXJfcmFpZF9zZXRzIChjb25zdCBnY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKnV1aWQsIGdpbnQgbWFqb3IsIGdpbnQgbWlub3IsIEdFcnJvciAqKmVycm9yKTsKIC0KQEAgLTU4LDYgKzYxLDggQEAKIC0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQogLSAqCiAtICogUmV0dXJuczogd2hldGhlciB0aGUgUkFJRCBzZXQgQG5hbWUgd2FzIHN1Y2Nlc3NmdWxseSBhY3RpdmF0ZSBvciBub3QKKy0gKgorLSAqIFRlY2ggY2F0ZWdvcnk6ICVCRF9ETV9URUNIX1JBSUQtJUJEX0RNX1RFQ0hfQ1JFQVRFX0FDVElWQVRFCiAtICovCiAtZ2Jvb2xlYW4gYmRfZG1fYWN0aXZhdGVfcmFpZF9zZXQgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcik7CiAtCkBAIC02Nyw2ICs3Miw4IEBACiAtICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKIC0gKgogLSAqIFJldHVybnM6IHdoZXRoZXIgdGhlIFJBSUQgc2V0IEBuYW1lIHdhcyBzdWNjZXNzZnVsbHkgZGVhY3RpdmF0ZSBvciBub3QKKy0gKgorLSAqIFRlY2ggY2F0ZWdvcnk6ICVCRF9ETV9URUNIX1JBSUQtJUJEX0RNX1RFQ0hfUkVNT1ZFX0RFQUNUSVZBVEUKIC0gKi8KIC1nYm9vbGVhbiBiZF9kbV9kZWFjdGl2YXRlX3JhaWRfc2V0IChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpOwogLQpAQCAtNzYsMTMgKzgzLDE1IEBACiAtICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKIC0gKgogLSAqIFJldHVybnM6IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgQG5hbWUgUkFJRCBzZXQncyB0eXBlCistICoKKy0gKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9SQUlELSVCRF9ETV9URUNIX1FVRVJZCiAtICovCiAtZ2NoYXIqIGJkX2RtX2dldF9yYWlkX3NldF90eXBlIChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpOwogZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL01ha2VmaWxlLmFtIGIvc3JjL3BsdWdpbnMvTWFrZWZpbGUuYW0KLWluZGV4IDZjNDAzOGYuLjU5ZGM1ZTMgMTAwNjQ0CitpbmRleCBiNjljOGY3Li43NTc1ZjRhIDEwMDY0NAogLS0tIGEvc3JjL3BsdWdpbnMvTWFrZWZpbGUuYW0KICsrKyBiL3NyYy9wbHVnaW5zL01ha2VmaWxlLmFtCi1AQCAtNzYsNyArNzYsNyBAQCBlbmRpZgorQEAgLTc1LDcgKzc1LDcgQEAgZW5kaWYKICAKICBpZiBXSVRIX0RNCiAgbGliYmRfZG1fbGFfQ0ZMQUdTID0gJChHTElCX0NGTEFHUykgJChERVZNQVBQRVJfQ0ZMQUdTKSAkKFVERVZfQ0ZMQUdTKSAtV2FsbCAtV2V4dHJhIC1XZXJyb3IKQEAgLTkyLDEwICsxMDEsMTAgQEAKICAjIERlYXIgYXV0aG9yIG9mIGxpYmRtZHJhaWQsIFZFUlNJT04gcmVhbGx5IGlzIG5vdCBhIGdvb2QgbmFtZSBmb3IgYW4gZW51bSBtZW1iZXIhCiAgbGliYmRfZG1fbGFfQ1BQRkxBR1MgPSAtSSR7YnVpbGRkaXJ9Ly4uLy4uL2luY2x1ZGUvIC1VVkVSU0lPTgogZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2RtLmMgYi9zcmMvcGx1Z2lucy9kbS5jCi1pbmRleCA5Y2VlNzQyLi5mZDdjN2JhIDEwMDY0NAoraW5kZXggMGU1NDY2Yy4uMzFlYmU5NiAxMDA2NDQKIC0tLSBhL3NyYy9wbHVnaW5zL2RtLmMKICsrKyBiL3NyYy9wbHVnaW5zL2RtLmMKLUBAIC0yMSwxNiArMjEsMTAgQEAKK0BAIC0yMSwxNyArMjEsMTEgQEAKICAjaW5jbHVkZSA8dW5pc3RkLmg+CiAgI2luY2x1ZGUgPGJsb2NrZGV2L3V0aWxzLmg+CiAgI2luY2x1ZGUgPGxpYmRldm1hcHBlci5oPgpAQCAtMTAzLDYgKzExMiw3IEBACiAgI2luY2x1ZGUgPGxpYnVkZXYuaD4KICAKICAjaW5jbHVkZSAiZG0uaCIKKyAjaW5jbHVkZSAiY2hlY2tfZGVwcy5oIgogIAogLS8qIG1hY3JvcyB0YWtlbiBmcm9tIHRoZSBweWJsb2NrL2RtcmFpZC5oIGZpbGUgcGx1cyBvbmUgbW9yZSovCiAtI2RlZmluZSBmb3JfZWFjaF9yYWlkc2V0KF9jLCBfbikgbGlzdF9mb3JfZWFjaF9lbnRyeShfbiwgTENfUlMoX2MpLCBsaXN0KQpAQCAtMTEyLDEwICsxMjIsMTEgQEAKICAvKioKICAgKiBTRUNUSU9OOiBkbQogICAqIEBzaG9ydF9kZXNjcmlwdGlvbjogcGx1Z2luIGZvciBiYXNpYyBvcGVyYXRpb25zIHdpdGggZGV2aWNlIG1hcHBlcgotQEAgLTI4NiwzMTUgKzI4MCwzIEBAIGdib29sZWFuIGJkX2RtX21hcF9leGlzdHMgKGNvbnN0IGdjaGFyICptYXBfbmFtZSwgZ2Jvb2xlYW4gbGl2ZV9vbmx5LCBnYm9vbGVhbiBhCitAQCAtMzgwLDMyNyArMzc0LDMgQEAgZ2Jvb2xlYW4gYmRfZG1fbWFwX2V4aXN0cyAoY29uc3QgZ2NoYXIgKm1hcF9uYW1lLCBnYm9vbGVhbiBsaXZlX29ubHksIGdib29sZWFuIGEKKyAKICAgICAgcmV0dXJuIHJldDsKICB9Ci0gCistCiAtLyoqCiAtICogaW5pdF9kbXJhaWRfc3RhY2s6IChza2lwKQogLSAqCkBAIC0xOTEsNiArMjAyLDkgQEAKIC0gICAgLyogaWYgd2UgZG9uJ3QgaGF2ZSB0aGUgbmFtZSwgd2UgY2Fubm90IGNoZWNrIGFueSBtYXRjaCAqLwogLSAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGV2X25hbWUsIEZBTFNFKTsKIC0KKy0gICAgLyogZ19yZXR1cm5fdmFsX2lmX2ZhaWwgYWJvdmUgY2hlY2tzIHZhbHVlIG9mIGRldl9uYW1lIGFuZCByZXR1cm5zIEZBTFNFIGlmCistICAgICAqIGl0IGlzIE5VTEwgc28gd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBpdCBoZXJlICovCistICAgIC8qIGNvdmVyaXR5W3Zhcl9kZXJlZl9tb2RlbF0gKi8KIC0gICAgaWYgKG5hbWUgJiYgc3RyY21wIChkZXZfbmFtZSwgbmFtZSkgIT0gMCkgewogLSAgICAgICAgcmV0dXJuIEZBTFNFOwogLSAgICB9CkBAIC0yMjAsOCArMjM0LDggQEAKIC0gKiBmaW5kX3JhaWRfc2V0c19mb3JfZGV2OiAoc2tpcCkKIC0gKi8KIC1zdGF0aWMgdm9pZCBmaW5kX3JhaWRfc2V0c19mb3JfZGV2IChjb25zdCBnY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKnV1aWQsIGdpbnQgbWFqb3IsIGdpbnQgbWlub3IsIHN0cnVjdCBsaWJfY29udGV4dCAqbGMsIHN0cnVjdCByYWlkX3NldCAqcnMsIEdQdHJBcnJheSAqcmV0X3NldHMpIHsKLS0gICAgc3RydWN0IHJhaWRfc2V0ICpzdWJzZXQ7Ci0tICAgIHN0cnVjdCByYWlkX2RldiAqZGV2OworLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKnN1YnNldCA9IE5VTEw7CistICAgIHN0cnVjdCByYWlkX2RldiAqZGV2ID0gTlVMTDsKIC0KIC0gICAgaWYgKFRfR1JPVVAocnMpIHx8ICFsaXN0X2VtcHR5KCYocnMtPnNldHMpKSkgewogLSAgICAgICAgZm9yX2VhY2hfc3Vic2V0IChycywgc3Vic2V0KQpAQCAtMjQ2LDYgKzI2MCw4IEBACiAtICogdGhlIG1lbWJlciBvciAlTlVMTCBpbiBjYXNlIG9mIGVycm9yCiAtICoKIC0gKiBPbmUgb2YgQG5hbWUsIEB1dWlkIG9yIEBtYWpvcjpAbWlub3IgaGFzIHRvIGJlIGdpdmVuLgorLSAqCistICogVGVjaCBjYXRlZ29yeTogJUJEX0RNX1RFQ0hfUkFJRC0lQkRfRE1fVEVDSF9NT0RFX1FVRVJZCiAtICovCiAtZ2NoYXIqKiBiZF9kbV9nZXRfbWVtYmVyX3JhaWRfc2V0cyAoY29uc3QgZ2NoYXIgKm5hbWUsIGNvbnN0IGdjaGFyICp1dWlkLCBnaW50IG1ham9yLCBnaW50IG1pbm9yLCBHRXJyb3IgKiplcnJvcikgewogLSAgICBndWludDY0IGkgPSAwOwpAQCAtMzEyLDggKzMyOCw4IEBACiAtCiAtc3RhdGljIGdib29sZWFuIGNoYW5nZV9zZXRfYnlfbmFtZSAoY29uc3QgZ2NoYXIgKm5hbWUsIGVudW0gYWN0aXZhdGVfdHlwZSBhY3Rpb24sIEdFcnJvciAqKmVycm9yKSB7CiAtICAgIGdpbnQgcmMgPSAwOwotLSAgICBzdHJ1Y3QgbGliX2NvbnRleHQgKmxjOwotLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKml0ZXJfcnM7CistICAgIHN0cnVjdCBsaWJfY29udGV4dCAqbGMgPSBOVUxMOworLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKml0ZXJfcnMgPSBOVUxMOwogLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKm1hdGNoX3JzID0gTlVMTDsKIC0KIC0gICAgbGMgPSBpbml0X2RtcmFpZF9zdGFjayAoZXJyb3IpOwpAQCAtMzUyLDYgKzM2OCw4IEBACiAtICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKIC0gKgogLSAqIFJldHVybnM6IHdoZXRoZXIgdGhlIFJBSUQgc2V0IEBuYW1lIHdhcyBzdWNjZXNzZnVsbHkgYWN0aXZhdGUgb3Igbm90CistICoKKy0gKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9SQUlELSVCRF9ETV9URUNIX0NSRUFURV9BQ1RJVkFURQogLSAqLwogLWdib29sZWFuIGJkX2RtX2FjdGl2YXRlX3JhaWRfc2V0IChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpIHsKIC0gICAgZ3VpbnQ2NCBwcm9ncmVzc19pZCA9IDA7CkBAIC0zNzIsNiArMzkwLDggQEAKIC0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQogLSAqCiAtICogUmV0dXJuczogd2hldGhlciB0aGUgUkFJRCBzZXQgQG5hbWUgd2FzIHN1Y2Nlc3NmdWxseSBkZWFjdGl2YXRlIG9yIG5vdAorLSAqCistICogVGVjaCBjYXRlZ29yeTogJUJEX0RNX1RFQ0hfUkFJRC0lQkRfRE1fVEVDSF9SRU1PVkVfREVBQ1RJVkFURQogLSAqLwogLWdib29sZWFuIGJkX2RtX2RlYWN0aXZhdGVfcmFpZF9zZXQgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcikgewogLSAgICBndWludDY0IHByb2dyZXNzX2lkID0gMDsKQEAgLTM5MiwxMCArNDEyLDEyIEBACiAtICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKIC0gKgogLSAqIFJldHVybnM6IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgQG5hbWUgUkFJRCBzZXQncyB0eXBlCistICoKKy0gKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9SQUlELSVCRF9ETV9URUNIX1FVRVJZCiAtICovCiAtZ2NoYXIqIGJkX2RtX2dldF9yYWlkX3NldF90eXBlIChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpIHsKLS0gICAgc3RydWN0IGxpYl9jb250ZXh0ICpsYzsKLS0gICAgc3RydWN0IHJhaWRfc2V0ICppdGVyX3JzOworLSAgICBzdHJ1Y3QgbGliX2NvbnRleHQgKmxjID0gTlVMTDsKKy0gICAgc3RydWN0IHJhaWRfc2V0ICppdGVyX3JzID0gTlVMTDsKIC0gICAgc3RydWN0IHJhaWRfc2V0ICptYXRjaF9ycyA9IE5VTEw7CiAtICAgIGNvbnN0IGdjaGFyICp0eXBlID0gTlVMTDsKIC0KQEAgLTQyOSw3ICs0NTEsNyBAQAogLSAgICByZXR1cm4gZ19zdHJkdXAgKHR5cGUpOwogLX0KIGRpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9kbS5oIGIvc3JjL3BsdWdpbnMvZG0uaAotaW5kZXggODU5ZmI4MC4uODBhY2Q0OSAxMDA2NDQKK2luZGV4IDBkY2U2YWMuLjFlZTM3ODggMTAwNjQ0CiAtLS0gYS9zcmMvcGx1Z2lucy9kbS5oCiArKysgYi9zcmMvcGx1Z2lucy9kbS5oCiBAQCAtMSw1ICsxLDQgQEAKQEAgLTQzOCwxMCArNDYwLDEwIEBACiAgCiAgI2lmbmRlZiBCRF9ETQogICNkZWZpbmUgQkRfRE0KLUBAIC0zNSw5ICszNCw1IEBAIGdib29sZWFuIGJkX2RtX3JlbW92ZSAoY29uc3QgZ2NoYXIgKm1hcF9uYW1lLCBHRXJyb3IgKiplcnJvcik7CitAQCAtNDgsOSArNDcsNSBAQCBnYm9vbGVhbiBiZF9kbV9tYXBfZXhpc3RzIChjb25zdCBnY2hhciAqbWFwX25hbWUsIGdib29sZWFuIGxpdmVfb25seSwgZ2Jvb2xlYW4gYQogIGdjaGFyKiBiZF9kbV9uYW1lX2Zyb21fbm9kZSAoY29uc3QgZ2NoYXIgKmRtX25vZGUsIEdFcnJvciAqKmVycm9yKTsKICBnY2hhciogYmRfZG1fbm9kZV9mcm9tX25hbWUgKGNvbnN0IGdjaGFyICptYXBfbmFtZSwgR0Vycm9yICoqZXJyb3IpOwotIGdib29sZWFuIGJkX2RtX21hcF9leGlzdHMgKGNvbnN0IGdjaGFyICptYXBfbmFtZSwgZ2Jvb2xlYW4gbGl2ZV9vbmx5LCBnYm9vbGVhbiBhY3RpdmVfb25seSwgR0Vycm9yICoqZXJyb3IpOworIGdjaGFyKiBiZF9kbV9nZXRfc3Vic3lzdGVtX2Zyb21fbmFtZSAoY29uc3QgZ2NoYXIgKmRldmljZV9uYW1lLCBHRXJyb3IgKiplcnJvcik7CiAtZ2NoYXIqKiBiZF9kbV9nZXRfbWVtYmVyX3JhaWRfc2V0cyAoY29uc3QgZ2NoYXIgKm5hbWUsIGNvbnN0IGdjaGFyICp1dWlkLCBnaW50IG1ham9yLCBnaW50IG1pbm9yLCBHRXJyb3IgKiplcnJvcik7CiAtZ2Jvb2xlYW4gYmRfZG1fYWN0aXZhdGVfcmFpZF9zZXQgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcik7CiAtZ2Jvb2xlYW4gYmRfZG1fZGVhY3RpdmF0ZV9yYWlkX3NldCAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKTsKQEAgLTQ2Niw1ICs0ODgsNSBAQAogIF9sb29wX3NldHVwID0gQmxvY2tEZXYubG9vcF9zZXR1cAogIEBvdmVycmlkZShCbG9ja0Rldi5sb29wX3NldHVwKQogLS0gCi0xLjguMy4xCisyLjE0LjMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNC1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDA0LWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaAppbmRleCBmMThiNTY5Li4wYjViODA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDA0LWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDA0LWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaApAQCAtMTIsNyArMTIsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvY3J5cHRvLmMgYi9zcmMvcGx1Z2lucy9jcnlwdG8uYwotaW5kZXggOGZiY2U0Zi4uNjZlMTFlNSAxMDA2NDQKK2luZGV4IGI5NjE0NzEuLjJkM2QyNTEgMTAwNjQ0CiAtLS0gYS9zcmMvcGx1Z2lucy9jcnlwdG8uYwogKysrIGIvc3JjL3BsdWdpbnMvY3J5cHRvLmMKIEBAIC0yMiw3ICsyMiw3IEBACkBAIC0yNSw3ICsyNSw3IEBACiAgI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgogICNpbmNsdWRlIDxsb2NhbGUuaD4KIGRpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9wYXJ0LmMgYi9zcmMvcGx1Z2lucy9wYXJ0LmMKLWluZGV4IDEyZDJlZjcuLjNhZmUyOTcgMTAwNjQ0CitpbmRleCA2YjJhNjkwLi5hYjQ5MGQ5IDEwMDY0NAogLS0tIGEvc3JjL3BsdWdpbnMvcGFydC5jCiArKysgYi9zcmMvcGx1Z2lucy9wYXJ0LmMKIEBAIC0yNSw2ICsyNSw3IEBACkBAIC0zMywxMCArMzMsMTAgQEAKICAjaW5jbHVkZSA8dW5pc3RkLmg+CiAgI2luY2x1ZGUgPHN5cy9maWxlLmg+CiArI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxsaW51eC9mcy5oPgogICNpbmNsdWRlIDxibG9ja2Rldi91dGlscy5oPgotICNpbmNsdWRlIDxwYXJ0X2Vyci5oPgotIAotQEAgLTEyMjQsNyArMTIyNSw3IEBAIHN0YXRpYyBnYm9vbGVhbiBzZXRfZ3B0X2ZsYWdzIChjb25zdCBnY2hhciAqZGV2aWNlLCBpbnQgcGFydF9udW0sIGd1aW50NjQgZmxhZ3MsCitAQCAtMTM1NCw3ICsxMzU1LDcgQEAgc3RhdGljIGdib29sZWFuIHNldF9ncHRfZmxhZ3MgKGNvbnN0IGdjaGFyICpkZXZpY2UsIGludCBwYXJ0X251bSwgZ3VpbnQ2NCBmbGFncywKICAgICAgICAgIHJlYWxfZmxhZ3MgfD0gMHg0MDAwMDAwMDAwMDAwMDAwOyAvKiAxIDw8IDYyICovCiAgICAgIGlmIChmbGFncyAmIEJEX1BBUlRfRkxBR19HUFRfTk9fQVVUT01PVU5UKQogICAgICAgICAgcmVhbF9mbGFncyB8PSAweDgwMDAwMDAwMDAwMDAwMDA7IC8qIDEgPDwgNjMgKi8KQEAgLTQ2LDUgKzQ2LDUgQEAKICAgICAgYXJnc1syXSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVkOj06JXMiLCBwYXJ0X251bSwgbWFza19zdHIpOwogICAgICBnX2ZyZWUgKG1hc2tfc3RyKTsKIC0tIAotMS44LjMuMQorMi4xNC4zCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDUtZml4LWEtY2xhbmctY29tcGlsaW5nLWlzc3VlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNS1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2gKaW5kZXggMzgxODkzNi4uYjIxNGYwYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNS1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNS1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2gKQEAgLTE5LDE3ICsxOSwxNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KLSBzcmMvcGx1Z2lucy9jcnlwdG8uYyB8IDYgKysrLS0tCi0gc3JjL3BsdWdpbnMvZnMuYyAgICAgfCA0ICsrLS0KLSBzcmMvcGx1Z2lucy9wYXJ0LmMgICB8IDQgKystLQotIHNyYy91dGlscy9leGVjLmMgICAgIHwgMiArLQorIHNyYy9wbHVnaW5zL2NyeXB0by5jICB8IDYgKysrLS0tCisgc3JjL3BsdWdpbnMvZnMvdmZhdC5jIHwgNCArKy0tCisgc3JjL3BsdWdpbnMvcGFydC5jICAgIHwgNCArKy0tCisgc3JjL3V0aWxzL2V4ZWMuYyAgICAgIHwgMiArLQogIDQgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvY3J5cHRvLmMgYi9zcmMvcGx1Z2lucy9jcnlwdG8uYwotaW5kZXggOGZiY2U0Zi4uN2VlN2NkYyAxMDA2NDQKK2luZGV4IDU2MzA5M2UuLmI5NjE0NzEgMTAwNjQ0CiAtLS0gYS9zcmMvcGx1Z2lucy9jcnlwdG8uYwogKysrIGIvc3JjL3BsdWdpbnMvY3J5cHRvLmMKLUBAIC04ODEsNyArODgxLDcgQEAgZ2Jvb2xlYW4gYmRfY3J5cHRvX3RjX29wZW4gKGNvbnN0IGdjaGFyICpkZXZpY2UsIGNvbnN0IGdjaGFyICpuYW1lLCBjb25zdCBndWludDgKK0BAIC05NzAsNyArOTcwLDcgQEAgZ2Jvb2xlYW4gYmRfY3J5cHRvX3RjX29wZW4gKGNvbnN0IGdjaGFyICpkZXZpY2UsIGNvbnN0IGdjaGFyICpuYW1lLCBjb25zdCBndWludDgKICAgICAgZ2ludCByZXQgPSAwOwogICAgICBndWludDY0IHByb2dyZXNzX2lkID0gMDsKICAgICAgZ2NoYXIgKm1zZyA9IE5VTEw7CkBAIC0zOCw3ICszOCw3IEBACiAgCiAgICAgIG1zZyA9IGdfc3RyZHVwX3ByaW50ZiAoIlN0YXJ0ZWQgb3BlbmluZyAnJXMnIFRydWVDcnlwdC9WZXJhQ3J5cHQgZGV2aWNlIiwgZGV2aWNlKTsKICAgICAgcHJvZ3Jlc3NfaWQgPSBiZF91dGlsc19yZXBvcnRfc3RhcnRlZCAobXNnKTsKLUBAIC05OTksNyArOTk5LDcgQEAgc3RhdGljIGdjaGFyICpyZXBsYWNlX2NoYXIgKGdjaGFyICpzdHIsIGdjaGFyIG9yaWcsIGdjaGFyIG5ldykgeworQEAgLTEwOTAsNyArMTA5MCw3IEBAIHN0YXRpYyBnY2hhciAqcmVwbGFjZV9jaGFyIChnY2hhciAqc3RyLCBnY2hhciBvcmlnLCBnY2hhciBuZXcpIHsKICAgICAgcmV0dXJuIHN0cjsKICB9CiAgCkBAIC00Nyw3ICs0Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFUlRDZXJ0aWZpY2F0ZSAqY2VydCwgR0Vycm9yICoqZXJyb3IpIHsKICAgICAgZ3BvaW50ZXIgcGFja2V0X2RhdGEgPSBOVUxMOwogICAgICBnc2l6ZSBwYWNrZXRfZGF0YV9zaXplID0gMDsKLUBAIC0xMDA4LDcgKzEwMDgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd3JpdGVfZXNjcm93X2RhdGFfZmlsZSAoc3RydWN0IGxpYnZrX3ZvbHVtZSAqdm9sdW1lLCBzdHJ1Y3QgbGlidgorQEAgLTEwOTksNyArMTA5OSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3cml0ZV9lc2Nyb3dfZGF0YV9maWxlIChzdHJ1Y3QgbGlidmtfdm9sdW1lICp2b2x1bWUsIHN0cnVjdCBsaWJ2CiAgICAgIGdzaXplIGJ5dGVzX3dyaXR0ZW4gPSAwOwogICAgICBHRXJyb3IgKnRtcF9lcnJvciA9IE5VTEw7CiAgCkBAIC01NiwxMSArNTYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aSwgTElCVktfUEFDS0VUX0ZPUk1BVF9BU1lNTUVUUklDX1dSQVBfU0VDUkVUX09OTFksIGVycm9yKTsKICAKICAgICAgaWYgKCFwYWNrZXRfZGF0YSkgewotZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2ZzLmMgYi9zcmMvcGx1Z2lucy9mcy5jCi1pbmRleCBjNGI2YWM4Li42NDcwOTZkIDEwMDY0NAotLS0tIGEvc3JjL3BsdWdpbnMvZnMuYwotKysrIGIvc3JjL3BsdWdpbnMvZnMuYwotQEAgLTI2MTQsOCArMjYxNCw4IEBAIEJERlNWZmF0SW5mbyogYmRfZnNfdmZhdF9nZXRfaW5mbyAoY29uc3QgZ2NoYXIgKmRldmljZSwgR0Vycm9yICoqZXJyb3IpIHsKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9mcy92ZmF0LmMgYi9zcmMvcGx1Z2lucy9mcy92ZmF0LmMKK2luZGV4IDNlZDdkNGEuLjVmZjc3OTUgMTAwNjQ0CistLS0gYS9zcmMvcGx1Z2lucy9mcy92ZmF0LmMKKysrKyBiL3NyYy9wbHVnaW5zL2ZzL3ZmYXQuYworQEAgLTM3Niw4ICszNzYsOCBAQCBCREZTVmZhdEluZm8qIGJkX2ZzX3ZmYXRfZ2V0X2luZm8gKGNvbnN0IGdjaGFyICpkZXZpY2UsIEdFcnJvciAqKmVycm9yKSB7CiAgICovCiAgZ2Jvb2xlYW4gYmRfZnNfdmZhdF9yZXNpemUgKGNvbnN0IGdjaGFyICpkZXZpY2UsIGd1aW50NjQgbmV3X3NpemUsIEdFcnJvciAqKmVycm9yKSB7CiAgICAgIFBlZERldmljZSAqcGVkX2RldiA9IE5VTEw7CkBAIC03MiwxMCArNzIsMTAgQEAKICAgICAgUGVkU2VjdG9yIHN0YXJ0ID0gMDsKICAgICAgUGVkU2VjdG9yIGxlbmd0aCA9IDA7CiBkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvcGFydC5jIGIvc3JjL3BsdWdpbnMvcGFydC5jCi1pbmRleCAxMmQyZWY3Li5kMjc3Njg4IDEwMDY0NAoraW5kZXggZmVkODMwMC4uNmIyYTY5MCAxMDA2NDQKIC0tLSBhL3NyYy9wbHVnaW5zL3BhcnQuYwogKysrIGIvc3JjL3BsdWdpbnMvcGFydC5jCi1AQCAtODQ5LDcgKzg0OSw3IEBAIHN0YXRpYyBQZWRQYXJ0aXRpb24qIGFkZF9wYXJ0X3RvX2Rpc2sgKFBlZERldmljZSAqZGV2LCBQZWREaXNrICpkaXNrLCBCRFBhcnRUeXBlCitAQCAtOTI2LDcgKzkyNiw3IEBAIHN0YXRpYyBQZWRQYXJ0aXRpb24qIGFkZF9wYXJ0X3RvX2Rpc2sgKFBlZERldmljZSAqZGV2LCBQZWREaXNrICpkaXNrLCBCRFBhcnRUeXBlCiAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgfQogIApAQCAtODQsNyArODQsNyBAQAogICAgICBpZiAoIXBhcnQpIHsKICAgICAgICAgIHNldF9wYXJ0ZWRfZXJyb3IgKGVycm9yLCBCRF9QQVJUX0VSUk9SX0ZBSUwpOwogICAgICAgICAgZ19wcmVmaXhfZXJyb3IgKGVycm9yLCAiRmFpbGVkIHRvIGNyZWF0ZSBuZXcgcGFydGl0aW9uIG9uIGRldmljZSAnJXMnIiwgZGV2LT5wYXRoKTsKLUBAIC0xNDI3LDcgKzE0MjcsNyBAQCBnYm9vbGVhbiBiZF9wYXJ0X3NldF9wYXJ0X2ZsYWdzIChjb25zdCBnY2hhciAqZGlzaywgY29uc3QgZ2NoYXIgKnBhcnQsIGd1aW50NjQgZgorQEAgLTE1NjQsNyArMTU2NCw3IEBAIGdib29sZWFuIGJkX3BhcnRfc2V0X3BhcnRfZmxhZ3MgKGNvbnN0IGdjaGFyICpkaXNrLCBjb25zdCBnY2hhciAqcGFydCwgZ3VpbnQ2NCBmCiAgICAgIFBlZFBhcnRpdGlvbiAqcGVkX3BhcnQgPSBOVUxMOwogICAgICBjb25zdCBnY2hhciAqcGFydF9udW1fc3RyID0gTlVMTDsKICAgICAgZ2ludCBwYXJ0X251bSA9IDA7CkBAIC05NCw3ICs5NCw3IEBACiAgICAgIGdib29sZWFuIHJldCA9IEZBTFNFOwogICAgICBndWludDY0IHByb2dyZXNzX2lkID0gMDsKIGRpZmYgLS1naXQgYS9zcmMvdXRpbHMvZXhlYy5jIGIvc3JjL3V0aWxzL2V4ZWMuYwotaW5kZXggN2FjNDRmZC4uMGEzMDk0YyAxMDA2NDQKK2luZGV4IDExYzE0ODkuLmRjZjg3ZTUgMTAwNjQ0CiAtLS0gYS9zcmMvdXRpbHMvZXhlYy5jCiArKysgYi9zcmMvdXRpbHMvZXhlYy5jCiBAQCAtMzU0LDcgKzM1NCw3IEBAIGdib29sZWFuIGJkX3V0aWxzX2V4ZWNfYW5kX3JlcG9ydF9wcm9ncmVzcyAoY29uc3QgZ2NoYXIgKiphcmd2LCBjb25zdCBCREV4dHJhQXJnCkBAIC0xMDcsNSArMTA3LDUgQEAKICAgICAgZ2Jvb2xlYW4gZXJyX2RvbmUgPSBGQUxTRTsKICAgICAgR1N0cmluZyAqc3Rkb3V0X2RhdGEgPSBnX3N0cmluZ19uZXcgKE5VTEwpOwogLS0gCi0xLjguMy4xCisyLjE0LjMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvbGliYmxvY2tkZXZfMi4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2xpYmJsb2NrZGV2XzIuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhOTIzNTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvbGliYmxvY2tkZXZfMi4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLURFU0NSSVBUSU9OID0gImxpYmJsb2NrZGV2IGlzIGEgQyBsaWJyYXJ5IHN1cHBvcnRpbmcgR09iamVjdCBpbnRyb3NwZWN0aW9uIGZvciBtYW5pcHVsYXRpb24gb2YgXAotYmxvY2sgZGV2aWNlcy4gSXQgaGFzIGEgcGx1Z2luLWJhc2VkIGFyY2hpdGVjdHVyZSB3aGVyZSBlYWNoIHRlY2hub2xvZ3kgKGxpa2UgXAotTFZNLCBCdHJmcywgTUQgUkFJRCwgU3dhcCwuLi4pIGlzIGltcGxlbWVudGVkIGluIGEgc2VwYXJhdGUgcGx1Z2luLCBwb3NzaWJseSBcCi13aXRoIG11bHRpcGxlIGltcGxlbWVudGF0aW9ucyAoZS5nLiB1c2luZyBMVk0gQ0xJIG9yIHRoZSBuZXcgTFZNIERCdXMgQVBJKS4iCi1IT01FUEFHRSA9ICJodHRwOi8vcmhpbnN0YWxsZXIuZ2l0aHViLmlvL2xpYmJsb2NrZGV2LyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLVNFQ1RJT04gPSAiZGV2ZWwvbGliIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jMDdjYjQ5OWQyNTk0NTJmMzI0YmI5MGMzMDY3ZDg1YyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtTfSIKLQotU1JDUkVWID0gImMxZGRhNDUwMDE1NDJlZGQ3ZDdmMWZmYzY0NTFjNWE3NDYyM2Y4MDUiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvbGliYmxvY2tkZXY7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1jb25maWd1cmUtYW5kLWNvbXBpbGUtZmFpbHVyZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtcmVtb3ZlLWRtcmFpZC13aGlsZS1jb21waWxpbmctd2l0aC13aXRoLWRtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtZml4LWEtY2xhbmctY29tcGlsaW5nLWlzc3VlLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2ggXAotIgotCi1pbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1ERVBFTkRTICs9ICIgXAotICAgIGNyeXB0c2V0dXAgXAotICAgIG5zcyBcCi0gICAgdm9sdW1lLWtleSBcCi0gICAgbGliYnl0ZXNpemUgXAotICAgIGJ0cmZzLXRvb2xzIFwKLSIKLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgIGx2bTIgXAotIgotCi1GSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIGx2bSBkbSBrbW9kIHBhcnRlZCBmcyIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLS13aXRoLXB5dGhvbjMsIC0td2l0aG91dC1weXRob24zLCxweXRob24zIgotUEFDS0FHRUNPTkZJR1tsdm1dID0gIi0td2l0aC1sdm0sIC0td2l0aG91dC1sdm0sIG11bHRpcGF0aC10b29scyIKLVBBQ0tBR0VDT05GSUdbZG1dID0gIi0td2l0aC1kbSwgLS13aXRob3V0LWRtIgotUEFDS0FHRUNPTkZJR1trbW9kXSA9ICItLXdpdGgta2JkLCAtLXdpdGhvdXQta2JkLCBrbW9kIgotUEFDS0FHRUNPTkZJR1twYXJ0ZWRdID0gIi0td2l0aC1wYXJ0LCAtLXdpdGhvdXQtcGFydCwgcGFydGVkIgotUEFDS0FHRUNPTkZJR1tmc10gPSAiLS13aXRoLWZzLCAtLXdpdGhvdXQtZnMsIHV0aWwtbGludXgiCi1QQUNLQUdFQ09ORklHW2RvY10gPSAiLS13aXRoLWd0ay1kb2MsIC0td2l0aG91dC1ndGstZG9jLCBndGstZG9jLW5hdGl2ZSIKLQotZXhwb3J0IFNUQUdJTkdfSU5DRElSCi1leHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9zcmMvdXRpbHMvLmxpYnMiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2xpYmJsb2NrZGV2XzIuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9saWJibG9ja2Rldl8yLjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjOTU0YWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9saWJibG9ja2Rldl8yLjE2LmJiCkBAIC0wLDAgKzEsNTEgQEAKK0RFU0NSSVBUSU9OID0gImxpYmJsb2NrZGV2IGlzIGEgQyBsaWJyYXJ5IHN1cHBvcnRpbmcgR09iamVjdCBpbnRyb3NwZWN0aW9uIGZvciBtYW5pcHVsYXRpb24gb2YgXAorYmxvY2sgZGV2aWNlcy4gSXQgaGFzIGEgcGx1Z2luLWJhc2VkIGFyY2hpdGVjdHVyZSB3aGVyZSBlYWNoIHRlY2hub2xvZ3kgKGxpa2UgXAorTFZNLCBCdHJmcywgTUQgUkFJRCwgU3dhcCwuLi4pIGlzIGltcGxlbWVudGVkIGluIGEgc2VwYXJhdGUgcGx1Z2luLCBwb3NzaWJseSBcCit3aXRoIG11bHRpcGxlIGltcGxlbWVudGF0aW9ucyAoZS5nLiB1c2luZyBMVk0gQ0xJIG9yIHRoZSBuZXcgTFZNIERCdXMgQVBJKS4iCitIT01FUEFHRSA9ICJodHRwOi8vcmhpbnN0YWxsZXIuZ2l0aHViLmlvL2xpYmJsb2NrZGV2LyIKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK1NFQ1RJT04gPSAiZGV2ZWwvbGliIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jMDdjYjQ5OWQyNTk0NTJmMzI0YmI5MGMzMDY3ZDg1YyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHl0aG9uM25hdGl2ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworREVQRU5EUyArPSAiIFwKKyAgICBjcnlwdHNldHVwIFwKKyAgICBuc3MgXAorICAgIHZvbHVtZS1rZXkgXAorICAgIGxpYmJ5dGVzaXplIFwKKyAgICBidHJmcy10b29scyBcCisiCisKK1NSQ1JFViA9ICJlMmUwODk5ZWZlOGRkM2YxMTFmZjk1NWZiNmMxZGMxMGIwYmQyMDc1IgorU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvbGliYmxvY2tkZXY7YnJhbmNoPW1hc3RlciBcCisgICAgZmlsZTovLzAwMDEtZml4LWNvbmZpZ3VyZS1hbmQtY29tcGlsZS1mYWlsdXJlcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItcmVtb3ZlLXB5dGhvbjItc3VwcG9ydC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtcmVtb3ZlLWRtcmFpZC13aGlsZS1jb21waWxpbmctd2l0aC13aXRoLWRtLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNS1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgZmlsZTovLzAwMDQtZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgbHZtMiBcCisiCisKK0ZJTEVTXyR7UE59ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMgbHZtIGRtIGttb2QgcGFydGVkIGZzIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uMywgLS13aXRob3V0LXB5dGhvbjMsLHB5dGhvbjMiCitQQUNLQUdFQ09ORklHW2x2bV0gPSAiLS13aXRoLWx2bSwgLS13aXRob3V0LWx2bSwgbXVsdGlwYXRoLXRvb2xzIgorUEFDS0FHRUNPTkZJR1tkbV0gPSAiLS13aXRoLWRtLCAtLXdpdGhvdXQtZG0iCitQQUNLQUdFQ09ORklHW2ttb2RdID0gIi0td2l0aC1rYmQsIC0td2l0aG91dC1rYmQsIGttb2QiCitQQUNLQUdFQ09ORklHW3BhcnRlZF0gPSAiLS13aXRoLXBhcnQsIC0td2l0aG91dC1wYXJ0LCBwYXJ0ZWQiCitQQUNLQUdFQ09ORklHW2ZzXSA9ICItLXdpdGgtZnMsIC0td2l0aG91dC1mcywgdXRpbC1saW51eCIKK1BBQ0tBR0VDT05GSUdbZG9jXSA9ICItLXdpdGgtZ3RrLWRvYywgLS13aXRob3V0LWd0ay1kb2MsIGd0ay1kb2MtbmF0aXZlIgorCitleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9zcmMvdXRpbHMvLmxpYnMiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmRpdmVjb21wdXRlci9maWxlcy9maXgtYXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJkaXZlY29tcHV0ZXIvZmlsZXMvZml4LWFyLnBhdGNoCmluZGV4IGNjM2Y1ZDQuLmY2NWQyNmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmRpdmVjb21wdXRlci9maWxlcy9maXgtYXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliZGl2ZWNvbXB1dGVyL2ZpbGVzL2ZpeC1hci5wYXRjaApAQCAtMiwxMSArMiwxMSBAQAogIGNvbmZpZ3VyZS5hYyB8ICAgIDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCitJbmRleDogZ2l0L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYwogKysrIGdpdC9jb25maWd1cmUuYWMKLUBAIC0yNCwxMCArMjQsMTEgQEAgTFRfSU5JVChbd2luMzItZGxsXSkKLSBMVF9QUk9HX1JDCi0gCitAQCAtNTYsNiArNTYsNyBAQCBBTV9DT05ESVRJT05BTChbRU5BQkxFX0VYQU1QTEVTXSwgW3Rlc3QKICAjIENoZWNrcyBmb3IgcHJvZ3JhbXMuCiAgQUNfUFJPR19DQwogIEFDX1BST0dfQ0NfQzk5CkBAIC0xNCw1ICsxNCwzIEBACiAgCiAgIyBFbmFibGUgYXV0b21ha2Ugc2lsZW50IGJ1aWxkIHJ1bGVzLgogIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKLSAKLSAjIENoZWNrcyBmb3IgbmF0aXZlIFdpbmRvd3MuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJneGltL2xpYmd4aW1fMC41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJneGltL2xpYmd4aW1fMC41LjAuYmIKaW5kZXggNWJmN2M2ZS4uN2U0YzMzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliZ3hpbS9saWJneGltXzAuNS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmd4aW0vbGliZ3hpbV8wLjUuMC5iYgpAQCAtMjYsNCArMjYsNiBAQAogRVhUUkFfT0VDT05GID0gIiAtLWRpc2FibGUtc3RhdGljIC0tZGlzYWJsZS1yZWJ1aWxkcyAtLWVuYWJsZS1jb21waWxlLXdhcm5pbmdzPW1pbmltdW0iCiBERVBFTkRTICs9ICJndGsrIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBydWJ5LW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWIvMDAwMS1SZW1vdmUtcnVudGltZS1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWIvMDAwMS1SZW1vdmUtcnVudGltZS1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGJjNWMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiLzAwMDEtUmVtb3ZlLXJ1bnRpbWUtY2hlY2stZm9yLUNMT0NLX01PTk9UT05JQy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gZTZmYmFkMGMxMjJiYThlODdiNjdhOWUyNDQ3NTA1YWRjYWFmZTIwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDI5IE1hciAyMDE3IDE2OjMxOjM4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBydW50aW1lIGNoZWNrIGZvciBDTE9DS19NT05PVE9OSUMKLQotRG9lcyBub3Qgd29yayBkdXJpbmcgY3Jvc3MgY29tcGlsZQotCi11c2UgYSBjb21waWxlLXRpbWUgY2hlY2sgdG8gZGV0ZWN0IHdoZXRoZXIgdGhlCi1tb25vdG9uaWMgY2xvY2sgaXMgYXZhaWxhYmxlLiBUaGlzIGNoZWNrIGNhbiBydW4ganVzdCBmaW5lIHdoZW4gd2UgYXJlCi1jcm9zcy1jb21waWxpbmcuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxMiArKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZmExM2FlNi4uZjRmMGY0NiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTc1LDkgKzE3NSwxNyBAQCBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKAotICAgICAgICAgICAgICAgICAgKQotIAotIEFDX01TR19DSEVDS0lORyhmb3IgYSB3b3JraW5nIGNsb2NrX2dldHJlcyhDTE9DS19NT05PVE9OSUMsICZ0cykpCi0tQUNfUlVOX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKAotK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oCi0gW1sjaW5jbHVkZSA8dGltZS5oPl1dLAotLVtbc3RydWN0IHRpbWVzcGVjIHRzOyBpZihjbG9ja19nZXRyZXMoQ0xPQ0tfTU9OT1RPTklDLCAmdHMpKSByZXR1cm4gLTE7XV0pXSwKLStbWwotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLStpbnQgbWFpbigpIHsKLSsjaWYgIShkZWZpbmVkKF9QT1NJWF9NT05PVE9OSUNfQ0xPQ0spICYmIF9QT1NJWF9NT05PVE9OSUNfQ0xPQ0sgPj0gMCAmJiBkZWZpbmVkKENMT0NLX01PTk9UT05JQykpCi0rICAgICAgICAjZXJyb3IgTm8gbW9ub3RvbmljIGNsb2NrCi0rI2VuZGlmCi0rICAgIHJldHVybiAwOwotKwotK11dKV0sCi0gICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0gICAgICAgICAgICAgICAgICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChbSEFWRV9DTE9DS19HRVRSRVNfTU9OT1RPTklDXSwgMSwgW0RlZmluZSB0byAxIGlmIGNsb2NrX2dldHJlcyhDTE9DS19NT05PVE9OSUMsICZ0cykgd29ya3NdKQotLS0gCi0yLjEyLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWIvMDAwMS1idWlsZC1maXgtY29uZmlndXJlLXNjcmlwdC1uZWdsZWN0aW5nLXJlLWVuYWJsZS1vdXQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWIvMDAwMS1idWlsZC1maXgtY29uZmlndXJlLXNjcmlwdC1uZWdsZWN0aW5nLXJlLWVuYWJsZS1vdXQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MmYzYmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYi8wMDAxLWJ1aWxkLWZpeC1jb25maWd1cmUtc2NyaXB0LW5lZ2xlY3RpbmctcmUtZW5hYmxlLW91dC0ucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSA3M2QyYWVhMzNlMzIyNzJiYWM2OTM1NTBlOGEzYjBlM2FkODk3MDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0phbj0yMFBva29ybj1DMz1CRD89IDxqcG9rb3JueUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyNiBEZWMgMjAxNyAwMDowMjoyNiArMDEwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogZml4IGNvbmZpZ3VyZSBzY3JpcHQgbmVnbGVjdGluZywgcmUtZW5hYmxlIG91dC1vZi10cmVlCisgYnVpbGRzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0ZvciB0aGUgZm9ybWVyLCBhIHByb3RvdHlwZSBhbmQgdGhlIGZpbmFsIGNvZGUgZ290IChobSwgbXlzdGVyaW91c2x5KQoraW50ZXJ0d2lzdGVkLiAgRm9yIHRoZSBsYXR0ZXIsIEkgYW0gY2xlYXJseSBndWlsdHkgb2YgKHJhcmUsIGFueXdheSkKK3Rlc3Rpbmcgb2YgdGhlIG91dC1vZi10cmVlIGJ1aWxkcyBvbmx5IHdpdGggbGlicWItYWxyZWFkeS1zeXN0ZW0td2lkZQorc2NlbmFyaW8sIHdoaWNoIGlzIHJhdGhlciBzaG9ydHNpZ2h0ZWQuCisKK1RoYW5rcyBGYWJpbyBhbmQgaGlzIGNpLmtyb25vc25ldC5vcmcgcHJvamVjdCBmb3Igc3BvdHRpbmcgdGhhdC4KKworWC1tYXMtcHJlc2VudC1mb3I6IEZhYmlvIE0uIERpIE5pdHRvIDxmZGluaXR0b0ByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogSmFuIFBva29ybsO9IDxqcG9rb3JueUByZWRoYXQuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyBjb25maWd1cmUuYWMgICAgfCAyICstCisgbGliL01ha2VmaWxlLmFtIHwgNCArKystCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDk5MDAzMTAuLmY5NzYxY2MgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTcxMCw3ICs3MTAsNyBAQCBpZiB0ZXN0ICJ4JHtHQ0N9IiA9IHh5ZXM7IHRoZW4KKyAJCQkgICAgICAgICAgICAgICAgICAgICAgfCBncmVwIF9fc3RvcF9fX3ZlcmJvc2UgfCBjdXQgLWQiICIgLWYgMykKKyAJCQkgdGVzdCAiJHt2ZXJib3NlX3N0YXJ0X2FkZHJ9IiA9ICIke3ZlcmJvc2Vfc3RvcF9hZGRyfSIgXAorIAkJCSAgICYmIGdjY19oYXNfYXR0cmlidXRlX3NlY3Rpb25fdmlzaWJsZT1ubyBcCistCQkJICAgfHwgeyB2ZXJib3NlX3N0YXJ0X3R5cGU9JCgke1JFQURFTEZ9IC1zIGJhY2t1cCBcCisrCQkJICAgfHwgeyB2ZXJib3NlX3N0YXJ0X3R5cGU9JCgke1JFQURFTEZ9IC1zICJjb25mdGVzdCR7c2hyZXh0X2NtZHN9IiBcCisgCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtbiAnL19fc3RhcnRfX192ZXJib3NlL3tzL15ccyovL3A7cX0nIFwKKyAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHIgLXMgJyAnIFwKKyAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY3V0IC1kIiAiIC1mNikKK2RpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0gYi9saWIvTWFrZWZpbGUuYW0KK2luZGV4IDZjYTZiMTUuLmIwMzVmMGIgMTAwNjQ0CistLS0gYS9saWIvTWFrZWZpbGUuYW0KKysrKyBiL2xpYi9NYWtlZmlsZS5hbQorQEAgLTEwMSw3ICsxMDEsOSBAQCBlbmRpZgorIGVuZGlmCisgCisgcWJsb2dfc2NyaXB0LmxkOiAlLmxkOiAlLmxkLmluCistCSQoQU1fVl9HRU4pJChDUFApIC14YyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtRF9HTlVfU09VUkNFIC1DIC1QICQ8IFwKKysJJChBTV9WX0dFTikkKENQUCkgLUMgLURfR05VX1NPVVJDRSAtUCBcCisrCSAgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUkkKHRvcF9idWlsZGRpcikvaW5jbHVkZSBcCisrCSAgLXhjICQ8IFwKKyAJICB8IHNlZCAtbiAiLyQkKHNlZCAtbiAnL15bXiNdL3tzL1sqXC9dL1xcJi9nO3A7cTt9JyAkPCkvLCQkIHAiIFwKKyAJICA+ICRACisgCistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYl8xLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiXzEuMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzRmNjYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiXzEuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBJUEMgbGlicmFyeSBmb3IgaGlnaCBwZXJmb3JtYW5jZSBzZXJ2ZXJzIgotREVTQ1JJUFRJT04gPSAibGlicWIgaXMgYSBsaWJyYXJ5IHdpdGggdGhlIHByaW1hcnkgcHVycG9zZSBvZiBwcm92aWRpbmcgaGlnaCBwZXJmb3JtYW5jZSBjbGllbnQgc2VydmVyIHJldXNhYmxlIGZlYXR1cmVzLiBcCi1JdCBwcm92aWRlcyBoaWdoIHBlcmZvcm1hbmNlIGxvZ2dpbmcsIHRyYWNpbmcsIGlwYywgYW5kIHBvbGwuIgotCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY2x1c3RlcmxhYnMvbGlicWIvd2lraSIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMjFiZjQxZjI4MGNmODA1MDg2ZGQ1YTcyMGIzNzc4NSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBWIC49ICIrZ2l0JHtTUkNQVn0iCi0KLVNSQ1JFViA9ICI2MDhkZTZkNTlhM2RlMGVlZjBmYmNiZDhmMjg0YWNiYzAxOGRhYTlhIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0NsdXN0ZXJMYWJzLyR7QlBOfS5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtcnVudGltZS1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIFwKLSAgICAgICAgICAiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAoIGNkICR7U30KLSAgICAke1N9L2F1dG9nZW4uc2ggKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWJfMS4wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYl8xLjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2NlYTVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWJfMS4wLjMuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJBbiBJUEMgbGlicmFyeSBmb3IgaGlnaCBwZXJmb3JtYW5jZSBzZXJ2ZXJzIgorREVTQ1JJUFRJT04gPSAibGlicWIgaXMgYSBsaWJyYXJ5IHdpdGggdGhlIHByaW1hcnkgcHVycG9zZSBvZiBwcm92aWRpbmcgaGlnaCBwZXJmb3JtYW5jZSBjbGllbnQgc2VydmVyIHJldXNhYmxlIGZlYXR1cmVzLiBcCitJdCBwcm92aWRlcyBoaWdoIHBlcmZvcm1hbmNlIGxvZ2dpbmcsIHRyYWNpbmcsIGlwYywgYW5kIHBvbGwuIgorCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY2x1c3RlcmxhYnMvbGlicWIvd2lraSIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMjFiZjQxZjI4MGNmODA1MDg2ZGQ1YTcyMGIzNzc4NSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BWIC49ICIrZ2l0JHtTUkNQVn0iCisKKyMgdjEuMC4zCitTUkNSRVYgPSAiMjhkZmYwOTBjNzRiNmJhODYwOWM0Nzk3Mjk0YTVhZmUzZmU3Mzk4NyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9DbHVzdGVyTGFicy8ke0JQTn0uZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtZml4LWNvbmZpZ3VyZS1zY3JpcHQtbmVnbGVjdGluZy1yZS1lbmFibGUtb3V0LS5wYXRjaCBcCisgICAgICAgICAgIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworQ0ZMQUdTICs9ICItcHRocmVhZCAtRF9SRUVOVFJBTlQiCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAoIGNkICR7U30KKyAgICAke1N9L2F1dG9nZW4uc2ggKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2xpYnJlcG9ydF8yLjkuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9saWJyZXBvcnRfMi45LjIuYmIKaW5kZXggNTI1NDM3Yi4uZjJjNjYxYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2xpYnJlcG9ydF8yLjkuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvbGlicmVwb3J0XzIuOS4yLmJiCkBAIC01LDcgKzUsNyBAQAogTElDRU5TRSA9ICJHUEx2MisiCiBERVBFTkRTID0gInhtbHJwYy1jIHhtbHJwYy1jLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUgXAogICAgICAgICBqc29uLWMgbGlidGFyIGxpYm5ld3QgbGlicHJveHkgcnBtIFwKLSAgICAgICAgYXVnZWFzIHNhdHlyIHN5c3RlbWQgZ3RrKzMgXAorICAgICAgICBhdWdlYXMgc2F0eXIgc3lzdGVtZCBcCiAiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgpAQCAtMjYsNiArMjYsOSBAQAogCiBpbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUgcGtnY29uZmlnCiAKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywneDExJywnZ3RrJywnJyxkKX0iCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0aywgLS13aXRob3V0LWd0aywgZ3RrKzMsIgorCiBSREVQRU5EU19weXRob24zLWxpYnJlcG9ydCArPSAiJHtQTn0iCiAKIGRvX3BhdGNoW3ByZWZ1bmNzXSArPSAiZG9fZ2VuX3ZlcnNpb24iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJ3bWYvbGlid21mXzAuMi44LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJ3bWYvbGlid21mXzAuMi44LjQuYmIKaW5kZXggOGFkNTQ1Ny4uMmMzMWEyMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlid21mL2xpYndtZl8wLjIuOC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYndtZi9saWJ3bWZfMC4yLjguNC5iYgpAQCAtMTIsNyArMTIsOSBAQAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3d2d2FyZS8ke0JQTn0vJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5nejtuYW1lPXRhcmJhbGwgXAogICAgICAgICAgICBmaWxlOi8vbGlid21mLTAuMi44LjQtaW50b3ZlcmZsb3cucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW1sLXdpZGdldC9ndGttYXRodmlld18wLjguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21tbC13aWRnZXQvZ3RrbWF0aHZpZXdfMC44LjAuYmIKaW5kZXggMTU5MzVjOC4uZGY4MmJlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW1sLXdpZGdldC9ndGttYXRodmlld18wLjguMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tbWwtd2lkZ2V0L2d0a21hdGh2aWV3XzAuOC4wLmJiCkBAIC0xNyw3ICsxNyw5IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBkb19jb25maWd1cmVfYXBwZW5kKCkgewogICAgICMgYXZvaWQgaG9zdCBwb2x1dGlvbiBpbmYgcGtnLWNvbmZpZyBmaWxlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvTWFudWFsbHlfbW1hcF9oZWFwX21lbW9yeV9lc3IxNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzL01hbnVhbGx5X21tYXBfaGVhcF9tZW1vcnlfZXNyMTcucGF0Y2gKaW5kZXggMTVhZDAzZi4uODNmNDU0MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvTWFudWFsbHlfbW1hcF9oZWFwX21lbW9yeV9lc3IxNy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9NYW51YWxseV9tbWFwX2hlYXBfbWVtb3J5X2VzcjE3LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhMGMwZjMyMjk5NDE5MzU5YjQ0YWMwZjg4MGMxZWE5MDczYWU1MWUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxZDFmYTk1YzhmZjc2OTdlNDYzNDMzODVhNzlhOGY3ZTVjNTE0YTg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogWmhlbmcgWHUgPHpoZW5nLnh1QGxpbmFyby5vcmc+CiBEYXRlOiBGcmksIDIgU2VwIDIwMTYgMTc6NDA6MDUgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gQnVnIDExNDMwMjIgLSBNYW51YWxseSBtbWFwIG9uIGFybTY0IHRvIGVuc3VyZSBoaWdoIDE3IGJpdHMKQEAgLTE2LDExICsxNiwxMSBAQAogIDEgZmlsZSBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvanMvc3JjL2djL01lbW9yeS5jcHAgYi9qcy9zcmMvZ2MvTWVtb3J5LmNwcAotaW5kZXggNWIzODZhMi4uMzgxMDFjZiAxMDA2NDQKK2luZGV4IGU1YWQwMTguLjQxNDlhZGYgMTAwNjQ0CiAtLS0gYS9qcy9zcmMvZ2MvTWVtb3J5LmNwcAogKysrIGIvanMvc3JjL2djL01lbW9yeS5jcHAKLUBAIC0zMDYsNiArMzA2LDc1IEBAIEluaXRNZW1vcnlTdWJzeXN0ZW0oKQotICAgICAgICAgTU9aX0NSQVNIKCk7CitAQCAtMzA5LDYgKzMwOSw3NSBAQCBJbml0TWVtb3J5U3Vic3lzdGVtKCkKKyAjZW5kaWYKICB9CiAgCiArc3RhdGljIGlubGluZSB2b2lkICoKQEAgLTk1LDcgKzk1LDcgQEAKICB2b2lkICoKICBNYXBBbGlnbmVkUGFnZXMoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCiAgewotQEAgLTMxOSwxMiArMzg4LDEyIEBAIE1hcEFsaWduZWRQYWdlcyhzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCkKK0BAIC0zMjIsMTIgKzM5MSwxMiBAQCBNYXBBbGlnbmVkUGFnZXMoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCiAgCiAgICAgIC8qIFNwZWNpYWwgY2FzZTogSWYgd2Ugd2FudCBwYWdlIGFsaWdubWVudCwgbm8gZnVydGhlciB3b3JrIGlzIG5lZWRlZC4gKi8KICAgICAgaWYgKGFsaWdubWVudCA9PSBQYWdlU2l6ZSkgewpAQCAtMTEwLDYgKzExMCwzIEBACiAgICAgIGlmIChyZWdpb24gPT0gTUFQX0ZBSUxFRCkKICAgICAgICAgIHJldHVybiBOVUxMOwogIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tcmFhL21yYWFfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbXJhYS9tcmFhX2dpdC5iYgppbmRleCA2MTYwNDhmLi45MzBjMDQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tcmFhL21yYWFfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21yYWEvbXJhYV9naXQuYmIKQEAgLTMsMTIgKzMsMTMgQEAKIFNFQ1RJT04gPSAibGlicyIKIAogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NjQ5M2Q1NGU2NWJmYzEyYzc5ODNmZjJlODg0ZjM3ZiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRiOTJhM2I0OTdkNzk0MzA0MmE2ZGI0MGMwODhjM2YyIgogCi1TUkNSRVYgPSAiOGRkYmNkZTg0ZTJkMTQ2YmMwZjllMzg1MDRkNmM4OWMxNDI5MTQ4MCIKLVBWID0gIjEuNy4wLWdpdCR7U1JDUFZ9IgorU1JDUkVWID0gImZiYjdkOTIzMjA2N2VhYzNmNDUwOGEzN2E4ZjdlYTBjNGZjZWJhY2IiCitQViA9ICIxLjkuMC1naXQke1NSQ1BWfSIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ludGVsLWlvdC1kZXZraXQvJHtCUE59LmdpdDtwcm90b2NvbD1odHRwIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ludGVsLWlvdC1kZXZraXQvJHtCUE59LmdpdDtwcm90b2NvbD1odHRwIFwKKyAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0zMSw3ICszMiwxMyBAQAogIyBvdmVycmlkZSB0aGlzIGluIGxvY2FsLmNvbmYgdG8gZ2V0IG5lZWRlZCBiaW5kaW5ncy4KICMgQklORElOR1NfcG4tbXJhYT0icHl0aG9uIgogIyB3aWxsIHJlc3VsdCBpbiBvbmx5IHRoZSBweXRob24gYmluZGluZ3MgYmVpbmcgYnVpbHQvcGFja2FnZWQuCi1CSU5ESU5HUyA/Pz0gInB5dGhvbiAke0AgJ25vZGVqcycgaWYgb2UudHlwZXMuYm9vbGVhbihkLmdldFZhcignSEFWRV9OT0RFSlMnKSBvciAnMCcpIGVsc2UgJycgfSIKKyMgTm90ZTogJ25vZGVqcycgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBiZWNhdXNlIHRoZSBiaW5kaW5ncworIyBnZW5lcmF0aW9uIGN1cnJlbnRseSBmYWlscyB3aXRoIG5vZGVqcyAoPnY3LngpLgorQklORElOR1MgPz89ICJweXRob24iCisKKyMgbm9kZWpzIGlzbid0IGF2YWlsYWJsZSBmb3IgYXJtdjQvYXJtdjUgYXJjaGl0ZWN0dXJlcworQklORElOR1NfYXJtdjQgPz89ICJweXRob24iCitCSU5ESU5HU19hcm12NSA/Pz0gInB5dGhvbiIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFUycsICdub2RlLSR7UE59JywgJ25vZGVqcycsICcnLCBkKX0gXAogICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFUycsICcke1BZVEhPTl9QTn0tJHtQTn0nLCAncHl0aG9uJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW5fMi42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuXzIuNi4zLmJiCmluZGV4IGM0Nzc4Y2EuLmY2MThmMDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW5fMi42LjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbndzbWFuL29wZW53c21hbl8yLjYuMy5iYgpAQCAtMTIsNiArMTIsOSBAQAogCiBERVBFTkRTID0gImN1cmwgbGlieG1sMiBvcGVuc3NsIGxpYnBhbSIKIAoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCisKIFNSQ1JFViA9ICJmZWI3ZWM5YjAwNGZjYWVhMGRiZTY1Y2U4YTFhNzljYzI5ZGQ5OTRjIgogUFYgPSAiMi42LjMiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3A3emlwL2ZpbGVzLzAwMDEtRml4LW5hcnJvd2luZy1lcnJvcnMtV2MtMTEtbmFycm93aW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDd6aXAvZmlsZXMvMDAwMS1GaXgtbmFycm93aW5nLWVycm9ycy1XYy0xMS1uYXJyb3dpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUyNzUxNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3A3emlwL2ZpbGVzLzAwMDEtRml4LW5hcnJvd2luZy1lcnJvcnMtV2MtMTEtbmFycm93aW5nLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gYjZiMTc4MmFmNGFhN2Y5MDg0ZDMyZTQxNDQ3MzhkYzI1MzVjOGQ2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIzIEFwciAyMDE4IDIzOjA3OjIxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBuYXJyb3dpbmcgZXJyb3JzIC1XYysrMTEtbmFycm93aW5nCisKK0NsYW5nIDYueCBmaW5kcyB0aGVzZSBlcnJvcnMKKworICAgIC4uLy4uLy4uLy4uL0NQUC9XaW5kb3dzL0Vycm9yTXNnLmNwcDoyNDoxMDogZXJyb3I6IGNhc2UgdmFsdWUgZXZhbHVhdGVzIHRvIC0yMTQ3MDI0ODA5LCB3aGljaCBjYW5ub3QgYmUgbmFycm93ZWQgdG8gdHlwZSAnRFdPUkQnIChha2EgJ3Vuc2lnbmVkIGludCcpIFstV2MrKzExLW5hcnJvd2luZ10KKyAgICAgICAgY2FzZSBFX0lOVkFMSURBUkcgICAgICAgICAgOiB0eHQgPSAiRV9JTlZBTElEQVJHIjsgYnJlYWsgOworICAgICAgICAgICAgIF4KKworSFJFU1VMVCBjYXVzZXMgdGhlIG1hY3JvIHRvIGJlIHBhcnNlZCBhcyBhIHNpZ25lZCBsb25nLCBzbyB3ZSBuZWVkIHRvIGZvcmNlIGl0Cit0byBiZSBjaGVja2VkIGFzIGFuIHVuc2lnbmVkIGxvbmcgaW5zdGVhZC4KKworYWxzbyByZXBvcnRlZCBoZXJlIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjI0OTMwCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgQ1BQL1dpbmRvd3MvRXJyb3JNc2cuY3BwIHwgMTQgKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ1BQL1dpbmRvd3MvRXJyb3JNc2cuY3BwIGIvQ1BQL1dpbmRvd3MvRXJyb3JNc2cuY3BwCitpbmRleCA5OTY4NGFlLi43OGE2NGJhIDEwMDY0NAorLS0tIGEvQ1BQL1dpbmRvd3MvRXJyb3JNc2cuY3BwCisrKysgYi9DUFAvV2luZG93cy9FcnJvck1zZy5jcHAKK0BAIC0xNSwxMyArMTUsMTMgQEAgVVN0cmluZyBNeUZvcm1hdE1lc3NhZ2UoRFdPUkQgZXJyb3JDb2RlKQorIAorICAgc3dpdGNoKGVycm9yQ29kZSkgeworICAgICBjYXNlIEVSUk9SX05PX01PUkVfRklMRVMgICA6IHR4dCA9ICJObyBtb3JlIGZpbGVzIjsgYnJlYWsgOworLSAgICBjYXNlIEVfTk9USU1QTCAgICAgICAgICAgICA6IHR4dCA9ICJFX05PVElNUEwiOyBicmVhayA7CistICAgIGNhc2UgRV9OT0lOVEVSRkFDRSAgICAgICAgIDogdHh0ID0gIkVfTk9JTlRFUkZBQ0UiOyBicmVhayA7CistICAgIGNhc2UgRV9BQk9SVCAgICAgICAgICAgICAgIDogdHh0ID0gIkVfQUJPUlQiOyBicmVhayA7CistICAgIGNhc2UgRV9GQUlMICAgICAgICAgICAgICAgIDogdHh0ID0gIkVfRkFJTCI7IGJyZWFrIDsKKy0gICAgY2FzZSBTVEdfRV9JTlZBTElERlVOQ1RJT04gOiB0eHQgPSAiU1RHX0VfSU5WQUxJREZVTkNUSU9OIjsgYnJlYWsgOworLSAgICBjYXNlIEVfT1VUT0ZNRU1PUlkgICAgICAgICA6IHR4dCA9ICJFX09VVE9GTUVNT1JZIjsgYnJlYWsgOworLSAgICBjYXNlIEVfSU5WQUxJREFSRyAgICAgICAgICA6IHR4dCA9ICJFX0lOVkFMSURBUkciOyBicmVhayA7CisrICAgIGNhc2UgKERXT1JEKSBFX05PVElNUEwgICAgICAgICAgICAgOiB0eHQgPSAiRV9OT1RJTVBMIjsgYnJlYWsgOworKyAgICBjYXNlIChEV09SRCkgRV9OT0lOVEVSRkFDRSAgICAgICAgIDogdHh0ID0gIkVfTk9JTlRFUkZBQ0UiOyBicmVhayA7CisrICAgIGNhc2UgKERXT1JEKSBFX0FCT1JUICAgICAgICAgICAgICAgOiB0eHQgPSAiRV9BQk9SVCI7IGJyZWFrIDsKKysgICAgY2FzZSAoRFdPUkQpIEVfRkFJTCAgICAgICAgICAgICAgICA6IHR4dCA9ICJFX0ZBSUwiOyBicmVhayA7CisrICAgIGNhc2UgKERXT1JEKSBTVEdfRV9JTlZBTElERlVOQ1RJT04gOiB0eHQgPSAiU1RHX0VfSU5WQUxJREZVTkNUSU9OIjsgYnJlYWsgOworKyAgICBjYXNlIChEV09SRCkgRV9PVVRPRk1FTU9SWSAgICAgICAgIDogdHh0ID0gIkVfT1VUT0ZNRU1PUlkiOyBicmVhayA7CisrICAgIGNhc2UgKERXT1JEKSBFX0lOVkFMSURBUkcgICAgICAgICAgOiB0eHQgPSAiRV9JTlZBTElEQVJHIjsgYnJlYWsgOworICAgICBjYXNlIEVSUk9SX0RJUkVDVE9SWSAgICAgICAgICA6IHR4dCA9ICJFcnJvciBEaXJlY3RvcnkiOyBicmVhayA7CisgICAgIGRlZmF1bHQ6CisgICAgICAgdHh0ID0gc3RyZXJyb3IoZXJyb3JDb2RlKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3A3emlwL2ZpbGVzL0NWRS0yMDE3LTE3OTY5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDd6aXAvZmlsZXMvQ1ZFLTIwMTctMTc5NjkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc3ZDE0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3A3emlwL2ZpbGVzL0NWRS0yMDE3LTE3OTY5LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK3A3emlwOiBGaXggQ1ZFLTIwMTctMTc5NjkKKworW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTg4ODI5NworCitIZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdyBpbiA3emlwCisKK0NvbXByZXNzL1Nocmlua0RlY29kZXIuY3BwOiBIZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdworaW4gdGhlIE5Db21wcmVzczo6TlNocmluazo6Q0RlY29kZXI6OkNvZGVSZWFsIG1ldGhvZAoraW4gNy1aaXAgYmVmb3JlIDE4LjAwIGFuZCBwN3ppcCBhbGxvd3MgcmVtb3RlIGF0dGFja2VycwordG8gY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZSAob3V0LW9mLWJvdW5kcyB3cml0ZSkKK29yIHBvdGVudGlhbGx5IGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgdmlhIGEgY3JhZnRlZCBaSVAgYXJjaGl2ZS4gCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvcDd6aXAvYnVncy9fZGlzY3Vzcy90aHJlYWQvMDkyMGYzNjkvODMxNi9hdHRhY2htZW50L0NWRS0yMDE3LTE3OTY5LnBhdGNoXQorQ1ZFOiBDVkUtMjAxNy0xNzk2OQorU2lnbmVkLW9mZi1ieTogUmFkb3ZhbiBTY2FzbnkgPHJhZG92YW4uc2Nhc255QHNpZW1lbnMuY29tPgorCistLS0gYS9DUFAvN3ppcC9Db21wcmVzcy9TaHJpbmtEZWNvZGVyLmNwcAorKysrIGIvQ1BQLzd6aXAvQ29tcHJlc3MvU2hyaW5rRGVjb2Rlci5jcHAKK0BAIC0xMjEsNyArMTIxLDEyIEBAIEhSRVNVTFQgQ0RlY29kZXI6OkNvZGVSZWFsKElTZXF1ZW50aWFsSW5TdHJlYW0gKmluU3RyZWFtLCBJU2VxdWVudGlhbE91dFN0cmVhbSAqCisgICAgIHsKKyAgICAgICBfc3RhY2tbaSsrXSA9IF9zdWZmaXhlc1tjdXJdOworICAgICAgIGN1ciA9IF9wYXJlbnRzW2N1cl07CisrCSAgaWYgKGN1ciA+PSBrTnVtSXRlbXMgfHwgaSA+PSBrTnVtSXRlbXMpCisrCSAgCWJyZWFrOworICAgICB9CisrCQorKwlpZiAoY3VyID49IGtOdW1JdGVtcyB8fCBpID49IGtOdW1JdGVtcykKKysJCWJyZWFrOworICAgICAKKyAgICAgX3N0YWNrW2krK10gPSAoQnl0ZSljdXI7CisgICAgIGxhc3RDaGFyMiA9IChCeXRlKWN1cjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3A3emlwL3A3emlwXzE2LjAyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDd6aXAvcDd6aXBfMTYuMDIuYmIKaW5kZXggNjdmZmJjNi4uZDk4NmRhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDd6aXAvcDd6aXBfMTYuMDIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDd6aXAvcDd6aXBfMTYuMDIuYmIKQEAgLTYsNyArNiwxMCBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vRE9DL0xpY2Vuc2UudHh0O21kNT04Nzk1OThlZGYxZjU0ZGRkYjY5MzBkNzU4MTM1N2Y4YiIKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wN3ppcC9wN3ppcC8ke1BWfS9wN3ppcF8ke1BWfV9zcmNfYWxsLnRhci5iejIgXAotICAgICAgICAgIGZpbGU6Ly9kb19ub3Rfb3ZlcnJpZGVfY29tcGlsZXJfYW5kX2RvX25vdF9zdHJpcC5wYXRjaCIKKyAgICAgICAgICAgZmlsZTovL2RvX25vdF9vdmVycmlkZV9jb21waWxlcl9hbmRfZG9fbm90X3N0cmlwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE3OTY5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LW5hcnJvd2luZy1lcnJvcnMtV2MtMTEtbmFycm93aW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYTAxMjhkNjYxY2ZlN2NjOGMxMjFlNzM1MTljNTRmYmYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWViMjBhYzBlMjk0NGY2Y2I5YzJkNTFkZDZjNDUxODk0MWMxODUzNDdkNDA4OWVhODkwODdmZmRkNmUyMzQxZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9wYW0tc3NoLWFnZW50LWF1dGhfMC4xMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1zc2gtYWdlbnQtYXV0aF8wLjEwLjMuYmIKaW5kZXggZmY4ODUzMy4uMTYzOGM0MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1zc2gtYWdlbnQtYXV0aF8wLjEwLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1zc2gtYWdlbnQtYXV0aF8wLjEwLjMuYmIKQEAgLTEzLDYgKzEzLDkgQEAKIAogREVQRU5EUyArPSAibGlicGFtIG9wZW5zc2wiCiAKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgorCiAjIFRoaXMgZ2V0cyB1cyBzc2gtYWdlbnQsIHdoaWNoIHdlIGFyZSBhbG1vc3QgY2VydGFpbiB0byB3YW50LgogIwogUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2gtbWlzYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9maWxlcy9ndGstZG9jLWNoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L2ZpbGVzL2d0ay1kb2MtY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiNmFkNzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L2ZpbGVzL2d0ay1kb2MtY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0tLS0gcG9sa2l0LWdub21lLTAuMTA1L2NvbmZpZ3VyZS5hYy5vcmcJMjAxNS0wNS0wNCAyMjozMzowMy45MjU5Nzc5NTMgLTA3MDAKLSsrKyBwb2xraXQtZ25vbWUtMC4xMDUvY29uZmlndXJlLmFjCTIwMTUtMDUtMDQgMjI6MzM6MTYuODYyMjg4MDMwIC0wNzAwCi1AQCAtMTIwLDYgKzEyMCw5IEBACi0gIyBDaGVjayBmb3IgcmVxdWlyZWQgcGFja2FnZXMKLSAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKgotIAotKyMgY2hlY2sgZm9yIGd0ay1kb2MKLStHVEtfRE9DX0NIRUNLKFsxLjE0XSxbLS1mbGF2b3VyIG5vLXRtcGxdKQotKwotIFBPTEtJVF9BR0VOVF9SRVFVSVJFRD0wLjk3Ci0gUE9MS0lUX0dPQkpFQ1RfUkVRVUlSRUQ9MC45NwotIEdUS19SRVFVSVJFRD0zLjAuMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdC1nbm9tZV8wLjEwNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXQtZ25vbWVfMC4xMDUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlOTk3MzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdC1nbm9tZV8wLjEwNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgQXV0aGVudGljYXRpb24gQWdlbnQgZm9yIFBvbGljeUtpdCIKLURFU0NSSVBUSU9OID0gIlBvbGljeUtpdC1nbm9tZSBwcm92aWRlcyBhbiBBdXRoZW50aWNhdGlvbiBBZ2VudCBmb3IgUG9saWN5S2l0IHRoYXQgaW50ZWdyYXRlcyB3ZWxsIHdpdGggdGhlIEdOT01FIGRlc2t0b3AgZW52aXJvbm1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBhY2thZ2VraXQub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1ERVBFTkRTID0gInBvbGtpdCBkYnVzLWdsaWIgZ2NvbmYgZ3RrKyBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uIgotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzQ1NzlmYWIxNzNlNGM1ZTEyYWFjMGNkODNlZTk4ZWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1hYmExNDVkMTgwMmYyMzI5YmE1NjFlM2U0OGVjYjc5NSIKLQotU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLmdub21lLm9yZy9zb3VyY2VzL3BvbGtpdC1nbm9tZS8ke1BWfS9wb2xraXQtZ25vbWUtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2d0ay1kb2MtY2hlY2sucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjUwZWNhZDM3YzgzNDJmYjRhNTJmNTkwZGI3NTMwNjIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3ODQ0OTQ5NjNiOGJmOWEwMGVlZGM2Y2QzYTI4NjhmYjEyM2I4YTVlNTE2ZTY2YzVlZGE0OGRmMTdhYjkzNjkiCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1kaXNhYmxlLXN0YXRpYyBcCi0iCi0KLURFUEVORFMgKz0gImd0ayszIgotCi1pbmhlcml0IGF1dG90b29scyBndGstZG9jIHBrZ2NvbmZpZwotCi1GSUxFU18ke1BOfSArPSAiICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9Qb2xpY3lLaXQgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmFycGQvcmFycGRfc3M5ODExMDcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yYXJwZC9yYXJwZF9zczk4MTEwNy5iYgppbmRleCA0MDI1YjgwLi43YzlmMmRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yYXJwZC9yYXJwZF9zczk4MTEwNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yYXJwZC9yYXJwZF9zczk4MTEwNy5iYgpAQCAtMzgsMTMgKzM4LDExIEBACiAgICAgaW5zdGFsbCAtbSA2NDQgcmFycGQuOCAke0R9JHttYW5kaXJ9L21hbjgvcmFycGQuOAogICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZXRoZXJzLnNhbXBsZSAke0R9JHtzeXNjb25mZGlyfS9ldGhlcnMKIAotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9yYXJwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgIGZpCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JhcnBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCiB9CiAKLWluaGVyaXQgJHtAYmIudXRpbHMuZmlsdGVyKCdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyJywgJ3N5c3RlbWQnLCBkKX0KK2luaGVyaXQgc3lzdGVtZAogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJhcnBkLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcm9ja3NkYi9yb2Nrc2RiX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIxOWMxYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJSb2Nrc0RCIGFuIGVtYmVkZGFibGUsIHBlcnNpc3RlbnQga2V5LXZhbHVlIHN0b3JlIgotREVTQ1JJUFRJT04gPSAiUm9ja3NEQiBpcyBsaWJyYXJ5IHRoYXQgcHJvdmlkZXMgYW4gZW1iZWRkYWJsZSwgcGVyc2lzdGVudCBrZXktdmFsdWUgc3RvcmUgZm9yIGZhc3Qgc3RvcmFnZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vcm9ja3NkYi5vcmcvIgotTElDRU5TRSA9ICIoQXBhY2hlLTIuMCB8IEdQTC0yLjApICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5BcGFjaGU7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UubGV2ZWxkYjttZDU9ZmIwNGZmNTdhMTRmMzA4ZjJlZWQ0YTliODdkNDU4MzciCi0KLVNSQ1JFViA9ICIyNjZhYzI0NWFmZmQ2OTU1NTY0M2I3MzVkMTlkMzcxNWM0ZWZmOTFhIgotUFYgPSAiNS44K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmFjZWJvb2svJHtCUE59LmdpdCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotCi1QQUNLQUdFQ09ORklHID8/PSAiYnppcDIgemxpYiBsejQiCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItRFdJVEhfQloyPU9OLC1EV0lUSF9CWjI9T0ZGLGJ6aXAyIgotUEFDS0FHRUNPTkZJR1tsejRdID0gIi1EV0lUSF9MWjQ9T04sLURXSVRIX0xaND1PRkYsbHo0IgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItRFdJVEhfWkxJQj1PTiwtRFdJVEhfWkxJQj1PRkYsemxpYiIKLVBBQ0tBR0VDT05GSUdbbGl0ZV0gPSAiLURST0NLU0RCX0xJVEU9T04sLURST0NLU0RCX0xJVEU9T0ZGIgotCi0jIFRvb2xzIGFuZCB0ZXN0cyBjdXJyZW50bHkgZG9uJ3QgY29tcGlsZSBvbiBhcm12NSBzbyB3ZSBkaXNhYmxlIHRoZW0KLUVYVFJBX09FQ01BS0UgPSAiXAotICAgIC1EUE9SVEFCTEU9T04gXAotICAgIC1EV0lUSF9URVNUUz1PRkYgXAotICAgIC1EV0lUSF9UT09MUz1PRkYgXAotIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy8wMDAxLUluY2x1ZGUtc3lzLXRpbWUtaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy8wMDAxLUluY2x1ZGUtc3lzLXRpbWUtaC5wYXRjaAppbmRleCAyM2MwZjI1Li5jYTg4ZGQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvMDAwMS1JbmNsdWRlLXN5cy10aW1lLWgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nLzAwMDEtSW5jbHVkZS1zeXMtdGltZS1oLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzYzNjMjFmNDczNWViMjE1MjA2MjczYmM3MTRjNTdjOTY5OTI2ZDNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5NzM5MDk1ZGU2YWU1Zjg0NDM1NDc1NmFlOTY4ZjVmODg2NGViM2UzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWluZyBMaXUgPHBldGVyLngubGl1QGV4dGVybmFsLmF0bGFzY29wY28uY29tPgogRGF0ZTogU3VuLCAyNiBGZWIgMjAxNyAxNDoxMDoyMSArMDEwMAogU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIHN5cy90aW1lLmgKQEAgLTgsNiArOCw3IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgbGliYyBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPHBldGVyLngubGl1QGV4dGVybmFsLmF0bGFzY29wY28uY29tPgorCiAtLS0KICB0ZXN0cy9tc2xlZXAuYyB8IDQgLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQpAQCAtMjgsNiArMjksMyBAQAogIAogIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgewotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvMDAwMS1VbmRlZmluZS1HTE9CX0JSQUNFLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nLzAwMDEtVW5kZWZpbmUtR0xPQl9CUkFDRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkwM2JiMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvMDAwMS1VbmRlZmluZS1HTE9CX0JSQUNFLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA2NzQ2ZTNhOTYxNWQxNTY2YmYyMjhlOTAxMmQwODQxYjE1MTc4ODEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWluZyBMaXUgPGxpdS5taW5nNTBAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyNiBGZWIgMjAxNyAxMzo1MDozMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBVbmRlZmluZSBHTE9CX0JSQUNFCi0KLUdMT0JfQlJBQ0UgaXMgbm90IGRlZmluZWQgaW4gcG9zaXggYW5kIHRodXMgbm90IGltcGxlbWVudGVkIGluIG11c2wgbGliYy4KLQotRml4ZWQgYnkgZGVmaW5pbmcgaXQgdG8gMCBpZiBpdCBpcyB1bmRlZmluZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBsaWJjIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8cGV0ZXIueC5saXVAZXh0ZXJuYWwuYXRsYXNjb3Bjby5jb20+Ci0tLS0KLSBwbHVnaW5zL2ltZmlsZS9pbWZpbGUuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9wbHVnaW5zL2ltZmlsZS9pbWZpbGUuYyBiL3BsdWdpbnMvaW1maWxlL2ltZmlsZS5jCi1pbmRleCBkMjA0NzFmLi5mOWFmZjgxIDEwMDY0NAotLS0tIGEvcGx1Z2lucy9pbWZpbGUvaW1maWxlLmMKLSsrKyBiL3BsdWdpbnMvaW1maWxlL2ltZmlsZS5jCi1AQCAtODUsNiArODUsMTEgQEAgc3RhdGljIGludCBiTGVnYWN5Q25mTW9kR2xvYmFsc1Blcm1pdHRlZDsvKiBhcmUgbGVnYWN5IG1vZHVsZS1nbG9iYWwgY29uZmlnIHBhcmEKLSAKLSAjZGVmaW5lIEFERF9NRVRBREFUQV9VTlNQRUNJRklFRCAtMQotIAotKy8qIGZpeGVzIGJ1aWxkIHdpdGggbXVzbCBsaWJjICovCi0rI2lmbmRlZiBHTE9CX0JSQUNFCi0rI2RlZmluZSBHTE9CX0JSQUNFIDAKLSsjZW5kaWYKLSsKLSAvKiB0aGlzIHN0cnVjdHVyZSBpcyB1c2VkIGluIHB1cmUgcG9sbGluZyBtb2RlIGFzIHdlbGwgb25lIG9mIHRoZSBzdXBwb3J0Ci0gICogc3RydWN0dXJlcyBmb3IgaW5vdGlmeS4KLSAgKi8KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3JzeXNsb2ctZml4LXB0ZXN0LW5vdC1maW5pc2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnN5c2xvZy1maXgtcHRlc3Qtbm90LWZpbmlzaC5wYXRjaAppbmRleCBiZGNiNmUyLi5hMjQ4Zjc1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnN5c2xvZy1maXgtcHRlc3Qtbm90LWZpbmlzaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnN5c2xvZy1maXgtcHRlc3Qtbm90LWZpbmlzaC5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gMDdhZDJhMTkwNTA4OWI5MTI0NjIzMzI0YTk5NjllNDUyMjMxNzExMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDEyIFNlcCAyMDE0IDAzOjQxOjExIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHJzeXNsb2c6IHVwZGF0ZSBjb25maWd1cmUgdG8gZml4IHB0ZXN0CisKICRNYXhNZXNzYWdlU2l6ZSBkb2Vzbid0IHdvcmsgaWYgYmVmb3JlICRJbmNsdWRlQ29uZmlnIGRpYWctY29tbW9uLmNvbmYsIHRoZW4KIHRlc3QgY2FzZXMgZmFsbCBpbnRvIGluZmluaXRlIGxvb3Agd2l0aCBlcnJvciBtZXNzYWdlOgogCkBAIC02LDEzICsxMSwyNCBAQAogCiBVcGRhdGUgY29uZmlndXJlIHRvIGZpeCBpdC4KIAotVXBzdHJlYW0tU3RhdHVzOiBwZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKwogLS0tCi1kaWZmIC1OcnUgcnN5c2xvZy03LjQuNC90ZXN0cy90ZXN0c3VpdGVzL2NvbXBsZXgxLmNvbmYgcnN5c2xvZy03LjQuNC5uZXcvdGVzdHMvdGVzdHN1aXRlcy9jb21wbGV4MS5jb25mCi0tLS0gcnN5c2xvZy03LjQuNC90ZXN0cy90ZXN0c3VpdGVzL2NvbXBsZXgxLmNvbmYJMjAxMy0wOC0zMSAwMDozMDo0MS4wMDAwMDAwMDAgKzA4MDAKLSsrKyByc3lzbG9nLTcuNC40Lm5ldy90ZXN0cy90ZXN0c3VpdGVzL2NvbXBsZXgxLmNvbmYJMjAxMy0xMi0xOCAxNDoyODoxMC42NDQwMDQxODQgKzA4MDAKKyB0ZXN0cy90ZXN0c3VpdGVzL2NvbXBsZXgxLmNvbmYgICAgICAgICAgICAgfCAyICstCisgdGVzdHMvdGVzdHN1aXRlcy9nemlwd3JfbGFyZ2UuY29uZiAgICAgICAgIHwgMiArLQorIHRlc3RzL3Rlc3RzdWl0ZXMvZ3ppcHdyX2xhcmdlX2R5bmZpbGUuY29uZiB8IDIgKy0KKyB0ZXN0cy90ZXN0c3VpdGVzL2ltcHRjcF9jb25uZHJvcC5jb25mICAgICAgfCAyICstCisgdGVzdHMvdGVzdHN1aXRlcy9pbXB0Y3BfbGFyZ2UuY29uZiAgICAgICAgIHwgMiArLQorIHRlc3RzL3Rlc3RzdWl0ZXMvaW10Y3BfY29ubmRyb3AuY29uZiAgICAgICB8IDIgKy0KKyB0ZXN0cy90ZXN0c3VpdGVzL3dyX2xhcmdlLmNvbmYgICAgICAgICAgICAgfCAyICstCisgNyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0c3VpdGVzL2NvbXBsZXgxLmNvbmYgYi90ZXN0cy90ZXN0c3VpdGVzL2NvbXBsZXgxLmNvbmYKK2luZGV4IDliNmE5ZjMuLmUwMGNhYTQgMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0c3VpdGVzL2NvbXBsZXgxLmNvbmYKKysrKyBiL3Rlc3RzL3Rlc3RzdWl0ZXMvY29tcGxleDEuY29uZgogQEAgLTEsNyArMSw3IEBACiAgIyBjb21wbGV4IHRlc3QgY2FzZSB3aXRoIG11bHRpcGxlIGFjdGlvbnMgaW4gZ3ppcCBtb2RlCiAgIyByZ2VyaGFyZHMsIDIwMDktMDUtMjIKQEAgLTIyLDkgKzM4LDEwIEBACiAgCiAgJE1haW5Nc2dRdWV1ZVRpbWVvdXRFbnF1ZXVlIDUwMDAKICAKLWRpZmYgLU5ydSByc3lzbG9nLTcuNC40L3Rlc3RzL3Rlc3RzdWl0ZXMvZ3ppcHdyX2xhcmdlLmNvbmYgcnN5c2xvZy03LjQuNC5uZXcvdGVzdHMvdGVzdHN1aXRlcy9nemlwd3JfbGFyZ2UuY29uZgotLS0tIHJzeXNsb2ctNy40LjQvdGVzdHMvdGVzdHN1aXRlcy9nemlwd3JfbGFyZ2UuY29uZgkyMDEyLTA0LTA0IDE0OjI5OjU1LjAwMDAwMDAwMCArMDgwMAotKysrIHJzeXNsb2ctNy40LjQubmV3L3Rlc3RzL3Rlc3RzdWl0ZXMvZ3ppcHdyX2xhcmdlLmNvbmYJMjAxMy0xMi0xOCAxNDoyODoxMC42NDUwMDQxODYgKzA4MDAKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZS5jb25mIGIvdGVzdHMvdGVzdHN1aXRlcy9nemlwd3JfbGFyZ2UuY29uZgoraW5kZXggNTRhZDNiYi4uZTgyNDdhOSAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Rlc3RzdWl0ZXMvZ3ppcHdyX2xhcmdlLmNvbmYKKysrKyBiL3Rlc3RzL3Rlc3RzdWl0ZXMvZ3ppcHdyX2xhcmdlLmNvbmYKIEBAIC0xLDcgKzEsNyBAQAogICMgc2ltcGxlIGFzeW5jIHdyaXRpbmcgdGVzdAogICMgcmdlcmhhcmRzLCAyMDEwLTAzLTA5CkBAIC0zNCw5ICs1MSwxMCBAQAogIAogICRNb2RMb2FkIC4uL3BsdWdpbnMvaW10Y3AvLmxpYnMvaW10Y3AKICAkTWFpbk1zZ1F1ZXVlVGltZW91dFNodXRkb3duIDEwMDAwCi1kaWZmIC1OcnUgcnN5c2xvZy03LjQuNC90ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZV9keW5maWxlLmNvbmYgcnN5c2xvZy03LjQuNC5uZXcvdGVzdHMvdGVzdHN1aXRlcy9nemlwd3JfbGFyZ2VfZHluZmlsZS5jb25mCi0tLS0gcnN5c2xvZy03LjQuNC90ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZV9keW5maWxlLmNvbmYJMjAxMi0wNC0wNCAxNDoyOTo1NS4wMDAwMDAwMDAgKzA4MDAKLSsrKyByc3lzbG9nLTcuNC40Lm5ldy90ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZV9keW5maWxlLmNvbmYJMjAxMy0xMi0xOCAxNDoyODoxMC42NDUwMDQxODYgKzA4MDAKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZV9keW5maWxlLmNvbmYgYi90ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZV9keW5maWxlLmNvbmYKK2luZGV4IDNhMWIyNTUuLjI5N2NiNzAgMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZV9keW5maWxlLmNvbmYKKysrKyBiL3Rlc3RzL3Rlc3RzdWl0ZXMvZ3ppcHdyX2xhcmdlX2R5bmZpbGUuY29uZgogQEAgLTEsNyArMSw3IEBACiAgIyBzaW1wbGUgYXN5bmMgd3JpdGluZyB0ZXN0CiAgIyByZ2VyaGFyZHMsIDIwMTAtMDMtMDkKQEAgLTQ2LDkgKzY0LDEwIEBACiAgCiAgJE1vZExvYWQgLi4vcGx1Z2lucy9pbXRjcC8ubGlicy9pbXRjcAogICRNYWluTXNnUXVldWVUaW1lb3V0U2h1dGRvd24gMTAwMDAKLWRpZmYgLU5ydSByc3lzbG9nLTcuNC40L3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2Nvbm5kcm9wLmNvbmYgcnN5c2xvZy03LjQuNC5uZXcvdGVzdHMvdGVzdHN1aXRlcy9pbXB0Y3BfY29ubmRyb3AuY29uZgotLS0tIHJzeXNsb2ctNy40LjQvdGVzdHMvdGVzdHN1aXRlcy9pbXB0Y3BfY29ubmRyb3AuY29uZgkyMDEzLTA4LTMxIDAwOjMwOjQxLjAwMDAwMDAwMCArMDgwMAotKysrIHJzeXNsb2ctNy40LjQubmV3L3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2Nvbm5kcm9wLmNvbmYJMjAxMy0xMi0xOCAxNDoyODoxMC42NDYwMDQxODkgKzA4MDAKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0c3VpdGVzL2ltcHRjcF9jb25uZHJvcC5jb25mIGIvdGVzdHMvdGVzdHN1aXRlcy9pbXB0Y3BfY29ubmRyb3AuY29uZgoraW5kZXggNzdhNWQ3OS4uZDlhMTRhOCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2Nvbm5kcm9wLmNvbmYKKysrKyBiL3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2Nvbm5kcm9wLmNvbmYKIEBAIC0xLDcgKzEsNyBAQAogICMgc2ltcGxlIGFzeW5jIHdyaXRpbmcgdGVzdAogICMgcmdlcmhhcmRzLCAyMDEwLTAzLTA5CkBAIC01OCw5ICs3NywxMCBAQAogIAogICRNb2RMb2FkIC4uL3BsdWdpbnMvaW1wdGNwLy5saWJzL2ltcHRjcAogICRNYWluTXNnUXVldWVUaW1lb3V0U2h1dGRvd24gMTAwMDAKLWRpZmYgLU5ydSByc3lzbG9nLTcuNC40L3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2xhcmdlLmNvbmYgcnN5c2xvZy03LjQuNC5uZXcvdGVzdHMvdGVzdHN1aXRlcy9pbXB0Y3BfbGFyZ2UuY29uZgotLS0tIHJzeXNsb2ctNy40LjQvdGVzdHMvdGVzdHN1aXRlcy9pbXB0Y3BfbGFyZ2UuY29uZgkyMDEzLTA4LTMxIDAwOjMwOjQxLjAwMDAwMDAwMCArMDgwMAotKysrIHJzeXNsb2ctNy40LjQubmV3L3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2xhcmdlLmNvbmYJMjAxMy0xMi0xOCAxNDoyODoxMC42NDYwMDQxODkgKzA4MDAKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0c3VpdGVzL2ltcHRjcF9sYXJnZS5jb25mIGIvdGVzdHMvdGVzdHN1aXRlcy9pbXB0Y3BfbGFyZ2UuY29uZgoraW5kZXggNzdhNWQ3OS4uZDlhMTRhOCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2xhcmdlLmNvbmYKKysrKyBiL3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2xhcmdlLmNvbmYKIEBAIC0xLDcgKzEsNyBAQAogICMgc2ltcGxlIGFzeW5jIHdyaXRpbmcgdGVzdAogICMgcmdlcmhhcmRzLCAyMDEwLTAzLTA5CkBAIC03MCw5ICs5MCwxMCBAQAogIAogICRNb2RMb2FkIC4uL3BsdWdpbnMvaW1wdGNwLy5saWJzL2ltcHRjcAogICRNYWluTXNnUXVldWVUaW1lb3V0U2h1dGRvd24gMTAwMDAKLWRpZmYgLU5ydSByc3lzbG9nLTcuNC40L3Rlc3RzL3Rlc3RzdWl0ZXMvaW10Y3BfY29ubmRyb3AuY29uZiByc3lzbG9nLTcuNC40Lm5ldy90ZXN0cy90ZXN0c3VpdGVzL2ltdGNwX2Nvbm5kcm9wLmNvbmYKLS0tLSByc3lzbG9nLTcuNC40L3Rlc3RzL3Rlc3RzdWl0ZXMvaW10Y3BfY29ubmRyb3AuY29uZgkyMDEzLTA3LTE5IDIwOjU5OjAzLjAwMDAwMDAwMCArMDgwMAotKysrIHJzeXNsb2ctNy40LjQubmV3L3Rlc3RzL3Rlc3RzdWl0ZXMvaW10Y3BfY29ubmRyb3AuY29uZgkyMDEzLTEyLTE4IDE0OjI4OjEwLjY0NjAwNDE4OSArMDgwMAorZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3RzdWl0ZXMvaW10Y3BfY29ubmRyb3AuY29uZiBiL3Rlc3RzL3Rlc3RzdWl0ZXMvaW10Y3BfY29ubmRyb3AuY29uZgoraW5kZXggZGU0MWJjNC4uNzg0NGRjNyAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Rlc3RzdWl0ZXMvaW10Y3BfY29ubmRyb3AuY29uZgorKysrIGIvdGVzdHMvdGVzdHN1aXRlcy9pbXRjcF9jb25uZHJvcC5jb25mCiBAQCAtMSw3ICsxLDcgQEAKICAjIHNpbXBsZSBhc3luYyB3cml0aW5nIHRlc3QKICAjIHJnZXJoYXJkcywgMjAxMC0wMy0wOQpAQCAtODIsOSArMTAzLDEwIEBACiAgCiAgJE1vZExvYWQgLi4vcGx1Z2lucy9pbXRjcC8ubGlicy9pbXRjcAogICRNYWluTXNnUXVldWVUaW1lb3V0U2h1dGRvd24gMTAwMDAKLWRpZmYgLU5ydSByc3lzbG9nLTcuNC40L3Rlc3RzL3Rlc3RzdWl0ZXMvd3JfbGFyZ2UuY29uZiByc3lzbG9nLTcuNC40Lm5ldy90ZXN0cy90ZXN0c3VpdGVzL3dyX2xhcmdlLmNvbmYKLS0tLSByc3lzbG9nLTcuNC40L3Rlc3RzL3Rlc3RzdWl0ZXMvd3JfbGFyZ2UuY29uZgkyMDEyLTA0LTA0IDE0OjI5OjU1LjAwMDAwMDAwMCArMDgwMAotKysrIHJzeXNsb2ctNy40LjQubmV3L3Rlc3RzL3Rlc3RzdWl0ZXMvd3JfbGFyZ2UuY29uZgkyMDEzLTEyLTE4IDE0OjI4OjEwLjY0NzAwNDE5MCArMDgwMAorZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3RzdWl0ZXMvd3JfbGFyZ2UuY29uZiBiL3Rlc3RzL3Rlc3RzdWl0ZXMvd3JfbGFyZ2UuY29uZgoraW5kZXggYjY0ZjEzMi4uYjBhZTI2NCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Rlc3RzdWl0ZXMvd3JfbGFyZ2UuY29uZgorKysrIGIvdGVzdHMvdGVzdHN1aXRlcy93cl9sYXJnZS5jb25mCiBAQCAtMSw3ICsxLDcgQEAKICAjIHNpbXBsZSBhc3luYyB3cml0aW5nIHRlc3QKICAjIHJnZXJoYXJkcywgMjAxMC0wMy0wOQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3VzZS1wa2djb25maWctdG8tY2hlY2stbGliZ2NyeXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3VzZS1wa2djb25maWctdG8tY2hlY2stbGliZ2NyeXB0LnBhdGNoCmluZGV4IDQ2ZWRkZDYuLjE2MmQyMzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy91c2UtcGtnY29uZmlnLXRvLWNoZWNrLWxpYmdjcnlwdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvdXNlLXBrZ2NvbmZpZy10by1jaGVjay1saWJnY3J5cHQucGF0Y2gKQEAgLTEsNSArMSw1IEBACi1Gcm9tIDVjM2JhNzkxNzdmN2QxNzYzZGIzM2M0MzU4YWYyYWY2MGZmMjE0YjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+IAorRnJvbSBkMDg1MjAwNmJmM2QzMDVlODk4NGI4NWI0MTk5N2Q0M2Q0NDc2OTM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAxOCBKdW4gMjAxNCAxMzo0Njo1MiArMDgwMAogU3ViamVjdDogW1BBVENIXSB1c2UgcGtnY29uZmlnIHRvIGNoZWNrIGxpYmdjcnlwdAogCkBAIC0xMCwxNSArMTAsMTYgQEAKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIGNvbmZpZ3VyZS5hYyB8IDE1ICstLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDBmMzE4NjkuLmQzNWRiNDIgMTAwNjQ0CitpbmRleCA2MjE3OGMzLi5iNTZjOWM3IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC03NzcsMjAgKzc3Nyw3IEBAIEFDX0FSR19FTkFCTEUobGliZ2NyeXB0LAorQEAgLTg4OSwyMCArODg5LDcgQEAgQUNfQVJHX0VOQUJMRShsaWJnY3J5cHQsCiAgICAgICAgICBbZW5hYmxlX2xpYmdjcnlwdD15ZXNdCiAgKQogIGlmIHRlc3QgIngkZW5hYmxlX2xpYmdjcnlwdCIgPSAieHllcyI7IHRoZW4KQEAgLTQwLDYgKzQxLDMgQEAKICBmaQogIEFNX0NPTkRJVElPTkFMKEVOQUJMRV9MSUJHQ1JZUFQsIHRlc3QgeCRlbmFibGVfbGliZ2NyeXB0ID0geHllcykKICBBQ19TVUJTVChMSUJHQ1JZUFRfQ0ZMQUdTKQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2dfOC4yOS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nXzguMjkuMC5iYgppbmRleCA3MDU2ZTFjLi40NzY1NDBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2dfOC4yOS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjI5LjAuYmIKQEAgLTI3LDcgKzI3LDYgQEAKICIKIAogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgZmlsZTovLzAwMDEtVW5kZWZpbmUtR0xPQl9CUkFDRS5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdGltZS1oLnBhdGNoIFwKICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2JsaW0tc2ZjYi9zYmxpbS1zZmNiXzEuNC45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2JsaW0tc2ZjYi9zYmxpbS1zZmNiXzEuNC45LmJiCmluZGV4IGM2YjlmMTAuLjEwZmZhYWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NibGltLXNmY2Ivc2JsaW0tc2ZjYl8xLjQuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYmxpbS1zZmNiL3NibGltLXNmY2JfMS40LjkuYmIKQEAgLTExLDYgKzExLDkgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYzMDBhZmQ1OTg1NDZhZGQwMzQzNjRjZDBhNTMzMjYxIgogREVQRU5EUyA9ICJjdXJsIGxpYnBhbSBvcGVuc3NsIHNibGltLXNmYy1jb21tb24gdW56aXAtbmF0aXZlIgogCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInBhbSIKKwogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9zYmxpbS8ke0JQfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL3NmY2Iuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9zYmxpbS1zZmNiLTEuMy45LXNmY2JyZXBvcy1zY2hlbWEtbG9jYXRpb24ucGF0Y2ggXApAQCAtMjgsNyArMzEsNyBAQAogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYzNGE2N2IyZjdhYzNiMzg2YTc5MTYwZWI0NDQxM2Q2MThlMzNlNGU3ZmM3NGFlNjhiMDI0MDQ4NGFmMTQ5ZGQiCiAKIGluaGVyaXQgYXV0b3Rvb2xzCi1pbmhlcml0ICR7QGJiLnV0aWxzLmZpbHRlcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicsICdzeXN0ZW1kJywgZCl9Citpbmhlcml0IHN5c3RlbWQKIAogU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzYmxpbS1zZmNiLnNlcnZpY2UiCkBAIC01MywxMCArNTYsOCBAQAogCiAgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAogCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NmY2Iuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zYmxpbS1zZmNiLnNlcnZpY2UKLSAgICBmaQorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zZmNiLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2JsaW0tc2ZjYi5zZXJ2aWNlCiAKICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAogICAgIG12ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zZmNiICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zYmxpbS1zZmNiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbWFydG1vbnRvb2xzL3NtYXJ0bW9udG9vbHNfNi41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc21hcnRtb250b29scy9zbWFydG1vbnRvb2xzXzYuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk3MGQyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbWFydG1vbnRvb2xzL3NtYXJ0bW9udG9vbHNfNi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJDb250cm9sIGFuZCBtb25pdG9yIHN0b3JhZ2Ugc3lzdGVtcyB1c2luZyBTLk0uQS5SLlQiCi1ERVNDUklQVElPTiA9IFwKLSJUaGUgc21hcnRtb250b29scyBwYWNrYWdlIGNvbnRhaW5zIHR3byB1dGlsaXR5IHByb2dyYW1zIChzbWFydGN0bCBcCi1hbmQgc21hcnRkKSB0byBjb250cm9sIGFuZCBtb25pdG9yIHN0b3JhZ2Ugc3lzdGVtcyB1c2luZyB0aGUgU2VsZi1cCi1Nb25pdG9yaW5nLCBBbmFseXNpcyBhbmQgUmVwb3J0aW5nIFRlY2hub2xvZ3kgU3lzdGVtIChTTUFSVCkgYnVpbHQgXAotaW50byBtb3N0IG1vZGVybiBBVEEgYW5kIFNDU0kgaGFyZCBkaXNrcy4gSW4gbWFueSBjYXNlcywgdGhlc2UgXAotdXRpbGl0aWVzIHdpbGwgcHJvdmlkZSBhZHZhbmNlZCB3YXJuaW5nIG9mIGRpc2sgZGVncmFkYXRpb24gYW5kIGZhaWx1cmUuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc21hcnRtb250b29scy5zb3VyY2Vmb3JnZS5uZXQvIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3NtYXJ0bW9udG9vbHMvc21hcnRtb250b29scy0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly9pbml0ZC5zbWFydGQgXAotICAgIGZpbGU6Ly9zbWFydG1vbnRvb2xzLmRlZmF1bHQgXAotICAgIGZpbGU6Ly9zbWFydGQuc2VydmljZSBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdsaWJjYXAtbmcgc2VsaW51eCcsIGQpfSIKLVBBQ0tBR0VDT05GSUdbbGliY2FwLW5nXSA9ICItLXdpdGgtbGliY2FwLW5nPXllcywtLXdpdGgtbGliY2FwLW5nPW5vLGxpYmNhcC1uZyIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS13aXRoLXNlbGludXg9eWVzLC0td2l0aC1zZWxpbnV4PW5vLGxpYnNlbGludXgiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwOTNhZWVjM2Y4ZjM5ZmE5YTM3NTkzYzQwMTJkMzE1NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4OWU4YmIwODAxMzBiYzZjZTE0ODU3M2JhNWJiOTFiZmUzMDIzNmI2NGIxYjViYmNhMjY1MTVkNGI1Yzk0NWJjIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzbWFydGQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICNpbnN0YWxsIHRoZSBpbml0LmQvc21hcnRkCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1wIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ZC5zbWFydGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NtYXJ0ZAotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotICAgIGluc3RhbGwgLXAgLW0gMDY0NCAke1dPUktESVJ9L3NtYXJ0bW9udG9vbHMuZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3NtYXJ0bW9udG9vbHMKLQotICAgICNpbnN0YWxsIHN5c3RlbWQgc2VydmljZSBmaWxlCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NtYXJ0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotICAgICAgICAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCi0gICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLSAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc21hcnRkLnNlcnZpY2UKLX0KLQotSU5JVFNDUklQVF9OQU1FID0gInNtYXJ0ZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDYwIDIgMyA0IDUgLiBzdG9wIDYwIDAgMSA2IC4iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJtYWlseCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NtYXJ0bW9udG9vbHMvc21hcnRtb250b29sc182LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbWFydG1vbnRvb2xzL3NtYXJ0bW9udG9vbHNfNi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMTc2N2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbWFydG1vbnRvb2xzL3NtYXJ0bW9udG9vbHNfNi42LmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiQ29udHJvbCBhbmQgbW9uaXRvciBzdG9yYWdlIHN5c3RlbXMgdXNpbmcgUy5NLkEuUi5UIgorREVTQ1JJUFRJT04gPSBcCisiVGhlIHNtYXJ0bW9udG9vbHMgcGFja2FnZSBjb250YWlucyB0d28gdXRpbGl0eSBwcm9ncmFtcyAoc21hcnRjdGwgXAorYW5kIHNtYXJ0ZCkgdG8gY29udHJvbCBhbmQgbW9uaXRvciBzdG9yYWdlIHN5c3RlbXMgdXNpbmcgdGhlIFNlbGYtXAorTW9uaXRvcmluZywgQW5hbHlzaXMgYW5kIFJlcG9ydGluZyBUZWNobm9sb2d5IFN5c3RlbSAoU01BUlQpIGJ1aWx0IFwKK2ludG8gbW9zdCBtb2Rlcm4gQVRBIGFuZCBTQ1NJIGhhcmQgZGlza3MuIEluIG1hbnkgY2FzZXMsIHRoZXNlIFwKK3V0aWxpdGllcyB3aWxsIHByb3ZpZGUgYWR2YW5jZWQgd2FybmluZyBvZiBkaXNrIGRlZ3JhZGF0aW9uIGFuZCBmYWlsdXJlLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NtYXJ0bW9udG9vbHMuc291cmNlZm9yZ2UubmV0LyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9zbWFydG1vbnRvb2xzL3NtYXJ0bW9udG9vbHMtJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vaW5pdGQuc21hcnRkIFwKKyAgICBmaWxlOi8vc21hcnRtb250b29scy5kZWZhdWx0IFwKKyAgICBmaWxlOi8vc21hcnRkLnNlcnZpY2UgXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGliY2FwLW5nIHNlbGludXgnLCBkKX0iCitQQUNLQUdFQ09ORklHW2xpYmNhcC1uZ10gPSAiLS13aXRoLWxpYmNhcC1uZz15ZXMsLS13aXRoLWxpYmNhcC1uZz1ubyxsaWJjYXAtbmciCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0td2l0aC1zZWxpbnV4PXllcywtLXdpdGgtc2VsaW51eD1ubyxsaWJzZWxpbnV4IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWFlMmM2ZTcxMzFjZDI4MTNlZGNjNjVjYmU1ZjIyM2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTFmNDNkMGZiMDY0ZmNjYWY4MjNiYmU2OGNmMGQzMTdkMDg5NWZmODk1YWEzNTNiMzMzOWEzYjMxNmE1MzA1NCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAic21hcnRkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjaW5zdGFsbCB0aGUgaW5pdC5kL3NtYXJ0ZAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtcCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdGQuc21hcnRkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zbWFydGQKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBpbnN0YWxsIC1wIC1tIDA2NDQgJHtXT1JLRElSfS9zbWFydG1vbnRvb2xzLmRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9zbWFydG1vbnRvb2xzCisKKyAgICAjaW5zdGFsbCBzeXN0ZW1kIHNlcnZpY2UgZmlsZQorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zbWFydGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIHNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKyAgICAgICAgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorICAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisgICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NtYXJ0ZC5zZXJ2aWNlCit9CisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJzbWFydGQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA2MCAyIDMgNCA1IC4gc3RvcCA2MCAwIDEgNiAuIgorCitSREVQRU5EU18ke1BOfSArPSAibWFpbHgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zb2NrZXRjYW4vY2FuLWlzb3RwX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NvY2tldGNhbi9jYW4taXNvdHBfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMDE5ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zb2NrZXRjYW4vY2FuLWlzb3RwX2dpdC5iYgpAQCAtMCwwICsxLDEyIEBACitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzJkOTc3ZDY5N2MzYzA1ODMwZmRmZjAwYTc0NDg5MzEiCitTUkNSRVYgPSAiZDEyNDhiMGYyMmVhOGRjM2I5ZDg0YTYxYmQzNWE4MzMwOWJkYjRiNCIKK1BWID0gIjEuMCtnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2hhcnRrb3BwL2Nhbi1pc290cC5naXQ7cHJvdG9jb2w9aHR0cHMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgbW9kdWxlCisKK0VYVFJBX09FTUFLRSArPSAiS0VSTkVMRElSPSR7U1RBR0lOR19LRVJORUxfRElSfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWdfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZ19naXQuYmIKaW5kZXggYmM2ZmVjMC4uNGY1ODI4MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZ19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZ19naXQuYmIKQEAgLTgsNiArOCw4IEBACiAKIGluaGVyaXQgY21ha2UgcGtnY29uZmlnCiAKK09FQ01BS0VfR0VORVJBVE9SID0gIlVuaXggTWFrZWZpbGVzIgorCiBERVBFTkRTID0gImx1YWppdCB6bGliIG5jdXJzZXMiCiBSREVQRU5EU18ke1BOfSA9ICJiYXNoIgogCkBAIC0zMywzICszNSw3IEBACiAgICAgJHtkYXRhZGlyfS96c2gvKiBcCiAgICAgJHtwcmVmaXh9L3NyYy8qICBcCiAiCisKKyMgbHVhaml0IG5vdCBzdXBwb3J0ZWQgb24gQWFyY2g2NAorQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFhYXJjaDY0KS4qIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90MWxpYi90MWxpYi01LjEuMi9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90MWxpYi90MWxpYi01LjEuMi9jb25maWd1cmUucGF0Y2gKaW5kZXggOGI5ODcwNy4uOTc2ZTAzOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdDFsaWIvdDFsaWItNS4xLjIvY29uZmlndXJlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3QxbGliL3QxbGliLTUuMS4yL2NvbmZpZ3VyZS5wYXRjaApAQCAtMSwxMSArMSwyMSBAQAorRnJvbSA4MWMxYmE5NDA0MTU1OTU1ODRhODM3YWIxMDc4YzY0ODU1MDcyZjBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KK0RhdGU6IE1vbiwgMjEgTm92IDIwMTEgMTI6MDA6NTQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdDFsaWI6IGFkZCA1LjEuMgogCiAjCiAjIFBhdGNoIG1hbmFnZWQgYnkgaHR0cDovL3d3dy5ob2xnZXJzY2h1cmlnLmRlL3BhdGNoZXIuaHRtbAogIwogCi0tLS0gdDFsaWItNS4wLjIvY29uZmlndXJlLmlufmNvbmZpZ3VyZS5wYXRjaAotKysrIHQxbGliLTUuMC4yL2NvbmZpZ3VyZS5pbgotQEAgLTc1LDkgKzc1LDkgQEAKKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDk1ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCA1NyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggZWFkZTRjMC4uZTY0OWVhOSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtNzQsOSArNzQsOSBAQCBUMUxJQl9QQVRDSExFVkVMPWJ1aWx0aW4oZXZhbCwgTUFDUk9fVDFMSUJfTFRfUkVWSVNJT04pCiAgVDFMSUJfVkVSU0lPTlNUUklORz1cIk1BQ1JPX1QxTElCX0lERU5USUZJRVJcIgogIAogIApAQCAtMTgsNyArMjgsNyBAQAogIAogIGRubCBXZSB3YW50IHRoZXNlIGJlZm9yZSB0aGUgY2hlY2tzLCBzbyB0aGUgY2hlY2tzIGNhbiBtb2RpZnkgdGhlaXIgdmFsdWVzLgogIHRlc3QgLXogIiRMRExJQlMiICYmIExETElCUz0tbG0gICBBQ19TVUJTVChMRExJQlMpCi1AQCAtMTYxLDYgKzE2MSw3IEBACitAQCAtMTYyLDYgKzE2Miw3IEBAIGZpCiAgCiAgZG5sICoqKiogQ2hlY2sgZm9yIHVuZGVyc2NvcmUgb24gZXh0ZXJuYWwgc3ltYm9scyAqKioqCiAgCkBAIC0yNiwyMSArMzYsMTIgQEAKICBBQ19DQUNIRV9DSEVDSygid2hldGhlciBleHRlcm5hbCBzeW1ib2xzIG5lZWQgYW4gdW5kZXJzY29yZSBwcmVmaXgiLAogICAgICAgICAgICAgICAgIGFjX2N2X2NfZXh0ZXJuX3ByZWZpeCwKICBbc2F2ZWRfbGlicz0kTElCUwotQEAgLTE3OCw2OCArMTc5LDQ4IEBACitAQCAtMTc5LDY4ICsxODAsNDggQEAgdGhlbgogICAgQUNfREVGSU5FKE5FRURfVU5ERVJTQ09SRV9QUkVGSVgpCiAgZmkKICAKIC1kbmwgKioqKiBDaGVjayB3aGljaCBBTlNJIGludGVnZXIgdHlwZSBpcyAxNiBiaXQgCi0rZG5sICoqKiogQ2hlY2sgd2hpY2ggQU5TSSBpbnRlZ2VyIHR5cGUgaXMgMTYgYml0Ci0rVDFfQUFfVFlQRTE2PSIiCi0rZm9yIHR5cGUgaW4gc2hvcnQgaW50OyBkbwotKwlpZiB0ZXN0IHgiYGV2YWwgZWNobyBcXCRhY19jdl9zaXplb2ZfJHR5cGVgIiA9ICJ4MiI7IHRoZW4KLSsJCVQxX0FBX1RZUEUxNj0iLURUMV9BQV9UWVBFMTY9JHR5cGUiCi0rCQlUMV9JTlQxNj0iJHR5cGUiCi0rCQlicmVhawotKwlmaQotK2RvbmUKLSAKKy0KIC1BQ19DQUNIRV9DSEVDSyggIndoaWNoIEFOU0kgaW50ZWdlciB0eXBlIGlzIDE2IGJpdCIsIGFjXzE2Yml0X3R5cGUsCiAtCQlBQ19UUllfUlVOKFsKIC1pbnQgbWFpbih2b2lkKSB7CkBAIC01OCwyMSArNTksMjMgQEAKIC1lbHNlCiAtICBUMV9BQV9UWVBFMTY9Ii1EVDFfQUFfVFlQRTE2PWludCIKIC0gIFQxX0lOVDE2PSJpbnQiCisrZG5sICoqKiogQ2hlY2sgd2hpY2ggQU5TSSBpbnRlZ2VyIHR5cGUgaXMgMTYgYml0CisrVDFfQUFfVFlQRTE2PSIiCisrZm9yIHR5cGUgaW4gc2hvcnQgaW50OyBkbworKwlpZiB0ZXN0IHgiYGV2YWwgZWNobyBcXCRhY19jdl9zaXplb2ZfJHR5cGVgIiA9ICJ4MiI7IHRoZW4KKysJCVQxX0FBX1RZUEUxNj0iLURUMV9BQV9UWVBFMTY9JHR5cGUiCisrCQlUMV9JTlQxNj0iJHR5cGUiCisrCQlicmVhaworKwlmaQorK2RvbmUKKysKICtpZiB0ZXN0IHgiJFQxX0FBX1RZUEUxNiIgPSAieCI7IHRoZW4KICsJQUNfTVNHX0VSUk9SKCJVbmFibGUgdG8gZGV0ZXJtaW5lIHdoaWNoIGludGVnZXIgdHlwZSBpcyAxNiBiaXQuIikKICBmaQogIAogLQogIGRubCAqKioqIENoZWNrIHdoaWNoIEFOU0kgaW50ZWdlciB0eXBlIGlzIDMyIGJpdCAKLStUMV9BQV9UWVBFMzI9IiIKLStmb3IgdHlwZSBpbiBpbnQgbG9uZzsgZG8KLSsJaWYgdGVzdCB4ImBldmFsIGVjaG8gXFwkYWNfY3Zfc2l6ZW9mXyR0eXBlYCIgPSAieDQiOyB0aGVuCi0rCQlUMV9BQV9UWVBFMzI9Ii1EVDFfQUFfVFlQRTMyPSR0eXBlIgotKwkJVDFfSU5UMzI9IiR0eXBlIgotKwkJYnJlYWsKLSsJZmkKLStkb25lCi0gCistCiAtQUNfQ0FDSEVfQ0hFQ0soICJ3aGljaCBBTlNJIGludGVnZXIgdHlwZSBpcyAzMiBiaXQiLCBhY18zMmJpdF90eXBlLAogLQkJQUNfVFJZX1JVTihbCiAtaW50IG1haW4odm9pZCkgewpAQCAtOTAsMjEgKzkzLDIyIEBACiAtZWxzZQogLSAgVDFfQUFfVFlQRTMyPSItRFQxX0FBX1RZUEUzMj1sb25nIgogLSAgVDFfSU5UMzI9ImxvbmciCisrVDFfQUFfVFlQRTMyPSIiCisrZm9yIHR5cGUgaW4gaW50IGxvbmc7IGRvCisrCWlmIHRlc3QgeCJgZXZhbCBlY2hvIFxcJGFjX2N2X3NpemVvZl8kdHlwZWAiID0gIng0IjsgdGhlbgorKwkJVDFfQUFfVFlQRTMyPSItRFQxX0FBX1RZUEUzMj0kdHlwZSIKKysJCVQxX0lOVDMyPSIkdHlwZSIKKysJCWJyZWFrCisrCWZpCisrZG9uZQorKwogK2lmIHRlc3QgeCIkVDFfQUFfVFlQRTMyIiA9ICJ4IjsgdGhlbgogKwlBQ19NU0dfRVJST1IoIlVuYWJsZSB0byBkZXRlcm1pbmUgd2hpY2ggaW50ZWdlciB0eXBlIGlzIDMyIGJpdC4iKQogIGZpCiAgCiAtCiAgZG5sICoqKiogQ2hlY2sgd2hpY2ggQU5TSSBpbnRlZ2VyIHR5cGUgaXMgNjQgYml0IAotK1QxX0FBX1RZUEU2ND0iIgotK2ZvciB0eXBlIGluIGxvbmcgbG9uZ19sb25nOyBkbwotKwlpZiB0ZXN0IHgiYGV2YWwgZWNobyBcXCRhY19jdl9zaXplb2ZfJHR5cGVgIiA9ICJ4OCI7IHRoZW4KLSsJCUFDX01TR19XQVJOKCIkdHlwZSBpcyA2NCBiaXQiKQotKwkJVDFfQUFfVFlQRTY0PSItRFQxX0FBX1RZUEU2ND1cImBlY2hvICR0eXBlfHRyICdfJyAnICdgXCIiCi0rCQlicmVhawotKwlmaQotK2RvbmUKLSAKKy0KIC1BQ19DQUNIRV9DSEVDSyggIndoaWNoIEFOU0kgaW50ZWdlciB0eXBlIGlzIDY0IGJpdCIsIGFjXzY0Yml0X3R5cGUsCiAtCQlBQ19UUllfUlVOKFsKIC1pbnQgbWFpbih2b2lkKSB7CkBAIC0xMTgsNiArMTIyLDE1IEBACiAtICBUMV9BQV9UWVBFNjQ9Ii1EVDFfQUFfVFlQRTY0PWxvbmciCiAtZWxzZQogLSAgVDFfQUFfVFlQRTY0PQorK1QxX0FBX1RZUEU2ND0iIgorK2ZvciB0eXBlIGluIGxvbmcgbG9uZ19sb25nOyBkbworKwlpZiB0ZXN0IHgiYGV2YWwgZWNobyBcXCRhY19jdl9zaXplb2ZfJHR5cGVgIiA9ICJ4OCI7IHRoZW4KKysJCUFDX01TR19XQVJOKCIkdHlwZSBpcyA2NCBiaXQiKQorKwkJVDFfQUFfVFlQRTY0PSItRFQxX0FBX1RZUEU2ND1cImBlY2hvICR0eXBlfHRyICdfJyAnICdgXCIiCisrCQlicmVhaworKwlmaQorK2RvbmUKKysKICtpZiB0ZXN0IHgiJFQxX0FBX1RZUEU2NCIgPSAieCI7IHRoZW4KICsJQUNfTVNHX0VSUk9SKCJVbmFibGUgdG8gZGV0ZXJtaW5lIHdoaWNoIGludGVnZXIgdHlwZSBpcyA2NCBiaXQuIikKICBmaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdDFsaWIvdDFsaWItNS4xLjIvZm9ybWF0X3NlY3VyaXR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdDFsaWIvdDFsaWItNS4xLjIvZm9ybWF0X3NlY3VyaXR5LnBhdGNoCmluZGV4IDhiNGNlNDAuLmJjMjQ3NmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3QxbGliL3QxbGliLTUuMS4yL2Zvcm1hdF9zZWN1cml0eS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90MWxpYi90MWxpYi01LjEuMi9mb3JtYXRfc2VjdXJpdHkucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIGNlYTgzMDAzZGUzZmZlYmRlOTJiZWNkMWU1OTlmZTNiMjhmMGE3YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjEzOjM2IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHQxbGliOiBGaXggcHJpbnRmIGZvcm1hdCBzdHJpbmcgZXJyb3JzCisKIEZpeCBwcmludGYgZm9ybWF0cyB0byB1c2UgZm9ybWF0IHF1YWxpZmllcnMKIGZpeGVzCiAKQEAgLTYsMjAgKzExLDE3IEBACiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLS0tLSBhL2xpYi90eXBlMS9vYmplY3RzLmMKLSsrKyBiL2xpYi90eXBlMS9vYmplY3RzLmMKLUBAIC05NTcsNyArOTU3LDcgQEAKLSAgCi0gICAgICAgIHNwcmludGYodHlwZW1zZywgIldyb25nIG9iamVjdCB0eXBlIGluICVzOyBleHBlY3RlZCAlcywgZm91bmQgJXMuXG4iLAotICAgICAgICAgICAgICAgICAgIG5hbWUsIFR5cGVGbXQoZXhwZWN0KSwgVHlwZUZtdChvYmotPnR5cGUpKTsKLS0gICAgICAgSWZUcmFjZTAoVFJVRSx0eXBlbXNnKTsKLSsgICAgICAgSWZUcmFjZTEoVFJVRSwgIiVzIiwgdHlwZW1zZyk7Ci0gIAotICAgICAgICBPYmplY3RQb3N0TW9ydGVtKG9iaik7Ci0gIAorLS0tCisgbGliL3QxbGliL3Qxc3Vic2V0LmMgfCAyICstCisgbGliL3R5cGUxL29iamVjdHMuYyAgfCAyICstCisgbGliL3R5cGUxL29iamVjdHMuaCAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvdDFsaWIvdDFzdWJzZXQuYyBiL2xpYi90MWxpYi90MXN1YnNldC5jCitpbmRleCBkYTQyN2IyLi5lNzY5NzRmIDEwMDY0NAogLS0tIGEvbGliL3QxbGliL3Qxc3Vic2V0LmMKICsrKyBiL2xpYi90MWxpYi90MXN1YnNldC5jCi1AQCAtNzU5LDcgKzc1OSw3IEBACitAQCAtNzU5LDcgKzc1OSw3IEBAIGNoYXIgKlQxX1N1YnNldEZvbnQoIGludCBGb250SUQsCiAgCSAgICAgdHJfbGVuKTsKICAgICAgVDFfUHJpbnRMb2coICJUMV9TdWJzZXRGb250KCkiLCBlcnJfd2Fybl9tc2dfYnVmLAogIAkJIFQxTE9HX0RFQlVHKTsKQEAgLTI4LDkgKzMwLDI0IEBACiAgICB9CiAgICAKICAgIC8qIGNvbXB1dGUgc2l6ZSBvZiBvdXRwdXQgZmlsZSAqLworZGlmZiAtLWdpdCBhL2xpYi90eXBlMS9vYmplY3RzLmMgYi9saWIvdHlwZTEvb2JqZWN0cy5jCitpbmRleCBjNDEzYTBmLi5mODI4ZTZhIDEwMDY0NAorLS0tIGEvbGliL3R5cGUxL29iamVjdHMuYworKysrIGIvbGliL3R5cGUxL29iamVjdHMuYworQEAgLTk1Nyw3ICs5NTcsNyBAQCBzdHJ1Y3QgeG9iamVjdCAqVHlwZUVycihuYW1lLCBvYmosIGV4cGVjdCwgcmV0KSAvKiBub24tQU5TSSBhdm9pZHMgb3Zlcmx5IHN0cmljdAorICAKKyAgICAgICAgc3ByaW50Zih0eXBlbXNnLCAiV3Jvbmcgb2JqZWN0IHR5cGUgaW4gJXM7IGV4cGVjdGVkICVzLCBmb3VuZCAlcy5cbiIsCisgICAgICAgICAgICAgICAgICAgbmFtZSwgVHlwZUZtdChleHBlY3QpLCBUeXBlRm10KG9iai0+dHlwZSkpOworLSAgICAgICBJZlRyYWNlMChUUlVFLHR5cGVtc2cpOworKyAgICAgICBJZlRyYWNlMShUUlVFLCAiJXMiLCB0eXBlbXNnKTsKKyAgCisgICAgICAgIE9iamVjdFBvc3RNb3J0ZW0ob2JqKTsKKyAgCitkaWZmIC0tZ2l0IGEvbGliL3R5cGUxL29iamVjdHMuaCBiL2xpYi90eXBlMS9vYmplY3RzLmgKK2luZGV4IDEzY2JhZTcuLjNhMWQzMzcgMTAwNjQ0CiAtLS0gYS9saWIvdHlwZTEvb2JqZWN0cy5oCiArKysgYi9saWIvdHlwZTEvb2JqZWN0cy5oCi1AQCAtMjE0LDcgKzIxNCw3IEBACitAQCAtMjE0LDcgKzIxNCw3IEBAIHN0cnVjdCB4b2JqZWN0IHsKICAvKlNIQVJFRCovCiAgLyogTkRXOiBwZXJzb25hbGx5LCBJIHdhbnQgdG8gc2VlIHN0YXR1cyBhbmQgZXJyb3IgbWVzc2FnZXMhICovCiAgI2RlZmluZSBJZlRyYWNlMChjb25kaXRpb24sbW9kZWwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdDFsaWIvdDFsaWItNS4xLjIvbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3QxbGliL3QxbGliLTUuMS4yL2xpYnRvb2wucGF0Y2gKaW5kZXggZTA1MDAyNS4uZGE1NGY4NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdDFsaWIvdDFsaWItNS4xLjIvbGlidG9vbC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90MWxpYi90MWxpYi01LjEuMi9saWJ0b29sLnBhdGNoCkBAIC0xLDEyICsxLDI4IEBACitGcm9tIGJhYjQxZjVlMWZjMWZjODA5ZGExMzcxZTZhMDIyMmUwZWIyMWU1ZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogTW9uLCAyMSBOb3YgMjAxMSAxMjowMDo1NCArMDEwMAorU3ViamVjdDogW1BBVENIXSB0MWxpYjogYWRkIDUuMS4yCiAKICMKICMgUGF0Y2ggbWFuYWdlZCBieSBodHRwOi8vd3d3LmhvbGdlcnNjaHVyaWcuZGUvcGF0Y2hlci5odG1sCiAjCiAKLS0tLSB0MWxpYi01LjAuMi9NYWtlZmlsZS5pbn5saWJ0b29sCi0rKysgdDFsaWItNS4wLjIvTWFrZWZpbGUuaW4KKy0tLQorIE1ha2VmaWxlLmluICAgICAgICAgICB8IDUgKysrLS0KKyBleGFtcGxlcy9NYWtlZmlsZS5pbiAgfCA1ICsrKy0tCisgbGliL01ha2VmaWxlLmluICAgICAgIHwgNiArKysrLS0KKyBsaWIvdDFsaWIvTWFrZWZpbGUuaW4gfCA2ICsrKystLQorIGxpYi90eXBlMS9NYWtlZmlsZS5pbiB8IDYgKysrKy0tCisgdHlwZTFhZm0vTWFrZWZpbGUuaW4gIHwgNiArKysrLS0KKyB4Z2x5cGgvTWFrZWZpbGUuaW4gICAgfCA2ICsrKystLQorIDcgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCAyOWMzNDY4Li4zOTZjMDIwIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCiBAQCAtMTgsNyArMTgsOCBAQAotICMgTGFzdCBtb2RpZmllZDogICAgICAgMjAwMS0wNC0wMQorICMgTGFzdCBtb2RpZmllZDogICAgICAgMjAwNS0wNS0wMQogICMKICAKIC1TSEVMTCAgICAgPSAvYmluL3NoCkBAIC0xNSw3ICszMSw3IEBACiAgQ0MgICAgICAgID0gQENDQAogIENQUCAgICAgICA9IEBDUFBACiAgQ0ZMQUdTICAgID0gQENGTEFHU0AKLUBAIC0xNTAsNyArMTUxLDcgQEAKK0BAIC0xNDksNyArMTUwLDcgQEAgZGlzdGNsZWFuOiBjbGVhbgogIAkkKFJNKSBleGFtcGxlcy9NYWtlZmlsZQogIAkkKFJNKSB4Z2x5cGgvTWFrZWZpbGUKICAJJChSTSkgZG9jL01ha2VmaWxlCkBAIC0yNCw4ICs0MCwxMCBAQAogIAogIAogICMgVGhlIGZvbGxvd2luZyB0d28gdGFyZ2V0cyBhcmUgZm9yIGJ1aWxkaW5nIGFuZCBjbGVhbmluZyB0aGUgcHl0aG9uLQotLS0tIHQxbGliLTUuMC4yL2V4YW1wbGVzL01ha2VmaWxlLmlufmxpYnRvb2wKLSsrKyB0MWxpYi01LjAuMi9leGFtcGxlcy9NYWtlZmlsZS5pbgorZGlmZiAtLWdpdCBhL2V4YW1wbGVzL01ha2VmaWxlLmluIGIvZXhhbXBsZXMvTWFrZWZpbGUuaW4KK2luZGV4IGIzMDFkYjUuLjdhNmE1MTQgMTAwNjQ0CistLS0gYS9leGFtcGxlcy9NYWtlZmlsZS5pbgorKysrIGIvZXhhbXBsZXMvTWFrZWZpbGUuaW4KIEBAIC0xNCw5ICsxNCwxMCBAQAogICMgTGFzdCBtb2RpZmllZDogICAgICAgMjAwMS0wNC0wMQogICMKQEAgLTM5LDggKzU3LDEwIEBACiAgQ0MgICAgICAgID0gQENDQAogIENQUCAgICAgICA9IEBDUFBACiAgQ0ZMQUdTICAgID0gQENGTEFHU0AKLS0tLSB0MWxpYi01LjAuMi9saWIvTWFrZWZpbGUuaW5+bGlidG9vbAotKysrIHQxbGliLTUuMC4yL2xpYi9NYWtlZmlsZS5pbgorZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5pbiBiL2xpYi9NYWtlZmlsZS5pbgoraW5kZXggODllNWU4Ni4uNmUwZjk2MCAxMDA2NDQKKy0tLSBhL2xpYi9NYWtlZmlsZS5pbgorKysrIGIvbGliL01ha2VmaWxlLmluCiBAQCAtMTUsOCArMTUsMTAgQEAKICAjCiAgIyBDb250cmlidXRpb25zIGJ5IEguS2FrdWdhd2EgdG8gdXNlIGxpYnRvb2whCkBAIC01NCw4ICs3NCwxMCBAQAogIENDICAgICAgICA9IEBDQ0AKICBDUFAgICAgICAgPSBAQ1BQQAogIENGTEFHUyAgICA9IEBDRkxBR1NACi0tLS0gdDFsaWItNS4wLjIvbGliL3QxbGliL01ha2VmaWxlLmlufmxpYnRvb2wKLSsrKyB0MWxpYi01LjAuMi9saWIvdDFsaWIvTWFrZWZpbGUuaW4KK2RpZmYgLS1naXQgYS9saWIvdDFsaWIvTWFrZWZpbGUuaW4gYi9saWIvdDFsaWIvTWFrZWZpbGUuaW4KK2luZGV4IGE2YzI0NzguLjMyNDM0YjMgMTAwNjQ0CistLS0gYS9saWIvdDFsaWIvTWFrZWZpbGUuaW4KKysrKyBiL2xpYi90MWxpYi9NYWtlZmlsZS5pbgogQEAgLTE0LDggKzE0LDEwIEBACiAgIwogICMgTW9kaWZpZWQgYnkgSC5LYWt1Z2F3YSB0byB1c2UgbGlidG9vbApAQCAtNjksOCArOTEsMTAgQEAKICBDQyAgICAgICAgPSBAQ0NACiAgQ1BQICAgICAgID0gQENQUEAKICBDRkxBR1MgICAgPSBAQ0ZMQUdTQAotLS0tIHQxbGliLTUuMC4yL2xpYi90eXBlMS9NYWtlZmlsZS5pbn5saWJ0b29sCi0rKysgdDFsaWItNS4wLjIvbGliL3R5cGUxL01ha2VmaWxlLmluCitkaWZmIC0tZ2l0IGEvbGliL3R5cGUxL01ha2VmaWxlLmluIGIvbGliL3R5cGUxL01ha2VmaWxlLmluCitpbmRleCAyNDFmMTI0Li40MmVmYTk0IDEwMDY0NAorLS0tIGEvbGliL3R5cGUxL01ha2VmaWxlLmluCisrKysgYi9saWIvdHlwZTEvTWFrZWZpbGUuaW4KIEBAIC0xNCw4ICsxNCwxMCBAQAogICMKICAjIE1vZGlmaWVkIGJ5IEguS2FrdWdhd2EgdG8gdXNlIGxpYnRvb2wKQEAgLTg0LDggKzEwOCwxMCBAQAogIENDICAgICAgICA9IEBDQ0AKICBDUFAgICAgICAgPSBAQ1BQQAogIENGTEFHUyAgICA9IEBDRkxBR1NACi0tLS0gdDFsaWItNS4wLjIvdHlwZTFhZm0vTWFrZWZpbGUuaW5+bGlidG9vbAotKysrIHQxbGliLTUuMC4yL3R5cGUxYWZtL01ha2VmaWxlLmluCitkaWZmIC0tZ2l0IGEvdHlwZTFhZm0vTWFrZWZpbGUuaW4gYi90eXBlMWFmbS9NYWtlZmlsZS5pbgoraW5kZXggNjE2MTFlMS4uOWI1MTQwNiAxMDA2NDQKKy0tLSBhL3R5cGUxYWZtL01ha2VmaWxlLmluCisrKysgYi90eXBlMWFmbS9NYWtlZmlsZS5pbgogQEAgLTE1LDggKzE1LDEwIEBACiAgIwogICMgTW9kaWZpZWQgYnkgSC5LYWt1Z2F3YSB0byB1c2UgbGlidG9vbApAQCAtOTksOCArMTI1LDEwIEBACiAgQ0MgICAgICAgID0gQENDQAogIENQUCAgICAgICA9IEBDUFBACiAgQ0ZMQUdTICAgID0gQENGTEFHU0AKLS0tLSB0MWxpYi01LjAuMi94Z2x5cGgvTWFrZWZpbGUuaW5+bGlidG9vbAotKysrIHQxbGliLTUuMC4yL3hnbHlwaC9NYWtlZmlsZS5pbgorZGlmZiAtLWdpdCBhL3hnbHlwaC9NYWtlZmlsZS5pbiBiL3hnbHlwaC9NYWtlZmlsZS5pbgoraW5kZXggOGRhOWI2My4uNzQxMzM0YyAxMDA2NDQKKy0tLSBhL3hnbHlwaC9NYWtlZmlsZS5pbgorKysrIGIveGdseXBoL01ha2VmaWxlLmluCiBAQCAtMTUsOCArMTUsMTAgQEAKICAjCiAgIyBNb2RpZmllZCBieSBILktha3VnYXdhIHRvIHVzZSBsaWJ0b29sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXBjdXRpbHMvdGlwY3V0aWxzLzAwMDEtbXVsdGljYXN0X2JsYXN0LXRpcGNjLUZpeC1zdHJ1Y3QtdHlwZS1mb3ItVElQQ19HUk9VUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RpcGN1dGlscy90aXBjdXRpbHMvMDAwMS1tdWx0aWNhc3RfYmxhc3QtdGlwY2MtRml4LXN0cnVjdC10eXBlLWZvci1USVBDX0dST1VQLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0OTUyODUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXBjdXRpbHMvdGlwY3V0aWxzLzAwMDEtbXVsdGljYXN0X2JsYXN0LXRpcGNjLUZpeC1zdHJ1Y3QtdHlwZS1mb3ItVElQQ19HUk9VUC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDFjZTg5Mjc0OWU0ZjUzYmQwYWVhYTRjM2NlNDVmODAxNzg3OTk0MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAzIE1hciAyMDE4IDE3OjUyOjUxIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIG11bHRpY2FzdF9ibGFzdC90aXBjYzogRml4IHN0cnVjdCB0eXBlIGZvciBUSVBDX0dST1VQX0pPSU4KKworS2VybmVsIGRlZmluZXMgaXQgYXMgdGlwY19ncm91cF9yZXEgYW5kIG5vdCB0aXBjX21yZXEKK3RoaXMgY29kZSB3YXMgbm90IGV4Y2VyY2lzZWQgd2l0aCBvbGRlciBrZXJuZWxzIHNvIHdlCituZXZlciByYW4gaW50byB0aGUgY29tcGlsZXIgZmFpbHVyZXMgc2luY2UgVElQQ19HUk9VUF9KT0lOCitpcyBvbmx5IGRlZmluZWQgaW4ga2VybmVsIHN0YXJ0aW5nIDQuMTUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBtdWx0aWNhc3RfYmxhc3QvdGlwY2MuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL211bHRpY2FzdF9ibGFzdC90aXBjYy5jIGIvbXVsdGljYXN0X2JsYXN0L3RpcGNjLmMKK2luZGV4IDkwNjQ0ZDMuLjkxMWM3NTkgMTAwNzU1CistLS0gYS9tdWx0aWNhc3RfYmxhc3QvdGlwY2MuYworKysrIGIvbXVsdGljYXN0X2JsYXN0L3RpcGNjLmMKK0BAIC0yMTMsNyArMjEzLDcgQEAgaW50IHRpcGNfYWNjZXB0KGludCBzZCwgc3RydWN0IHRpcGNfYWRkciAqc3JjKQorIGludCB0aXBjX2pvaW4oaW50IHNkLCBzdHJ1Y3QgdGlwY19hZGRyICptZW1iZXIpCisgeworICNpZmRlZiBUSVBDX0dST1VQX0pPSU4KKy0Jc3RydWN0IHRpcGNfbXJlcSBtcmVxID0geworKwlzdHJ1Y3QgdGlwY19ncm91cF9yZXEgbXJlcSA9IHsKKyAJCS50eXBlID0gbWVtYmVyLT50eXBlLAorIAkJLmluc3RhbmNlID0gbWVtYmVyLT5pbnN0YW5jZSwKKyAJCS5zY29wZSA9IGRvbWFpbjJzY29wZShtZW1iZXItPmRvbWFpbikKKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RpcGN1dGlscy90aXBjdXRpbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwY3V0aWxzL3RpcGN1dGlsc19naXQuYmIKaW5kZXggNzIwYWEzYy4uNTRlZDA0MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwY3V0aWxzL3RpcGN1dGlsc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwY3V0aWxzL3RpcGN1dGlsc19naXQuYmIKQEAgLTUsNiArNSw3IEBACiBTUkNfVVJJID0gImdpdDovL2dpdC5jb2RlLnNmLm5ldC9wL3RpcGMvdGlwY3V0aWxzIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtc2VsZWN0LmgtZm9yLUZEXy1kZWZpbml0aW9ucy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXJlcGxhY2Utbm9uLXN0YW5kYXJkLXVpbnQtd2l0aC11bnNpZ25lZC1pbnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tdWx0aWNhc3RfYmxhc3QtdGlwY2MtRml4LXN0cnVjdC10eXBlLWZvci1USVBDX0dST1VQLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDUkVWID0gIjdhYjIyMTFiODc0MTRiYTI0MGIwYjJlNGFmMjE5YzEwNTdjOWNmOWEiCiBQViA9ICIyLjIuMCtnaXQke1NSQ1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RpcHRvcC90aXB0b3BfMi4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXB0b3AvdGlwdG9wXzIuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMDBhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXB0b3AvdGlwdG9wXzIuMy4xLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiSGFyZHdhcmUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBjb3VudGVycyIKK0hPTUVQQUdFID0gImh0dHA6Ly90aXB0b3AuZ2ZvcmdlLmlucmlhLmZyLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAibmN1cnNlcyBsaWJ4bWwyIgorCitTUkNfVVJJID0gImh0dHA6Ly90aXB0b3AuZ2ZvcmdlLmlucmlhLmZyL3JlbGVhc2VzLyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NmNhMGZkZjAyMzZmMDJkZDJiOTZkMzQ3NjI2ZDJhMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MWM0NDQ5Yzk1YmJhMzRmMTZiNDI5NzI5YzJmNTg0MzE0OTA2NjVkODA5M2VmYWE4NjQzYjJlMWQxMDg0MTgyIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKK0VYVFJBX09FQ09ORiA9ICJDRkxBR1M9IiRDRkxBR1MgLUkke1NUQUdJTkdfSU5DRElSfS9saWJ4bWwyIiIKK0NPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YXJtfHBvd2VycGMpLiotbGludXgiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICAjIFR3byBidWdzIGluIGNvbmZpZ3VyZS5hYyB3aGVuIGNyb3NzLWNvbXBpbGluZy4KKyAgICAjIDEuIFRoZSBwYXRoIG9mIGxpYnhtbDIuIFNwZWNpZnkgaXQgaW4gRVhUUkFfT0VDT05GLgorICAgICMgMi4gaHcncyB2YWx1ZSBvbiBvdGhlciBwbGF0Zm9ybXMuIFJlcGxhY2UgaXQgaWYgdGhlIHRhcmdldCBpcworICAgICMgICAgbm90IGkqODYveDg2XzY0LgorICAgIGlmICggZWNobyAiJHtUQVJHRVRfQVJDSH0iIHwgZ3JlcCAtcSAtZSAnaS44NicgLWUgJ3g4Nl82NCcgKTsgdGhlbgorICAgICAgICBzZWQgLWkgJ3M9IC1JL3Vzci9pbmNsdWRlL2xpYnhtbDI9PScgICAgJHtTfS9jb25maWd1cmUuYWMKKyAgICBlbHNlCisgICAgICAgIHNlZCAtaSAncy9odz1gdW5hbWUgLW1gL2h3PSJ1bmtub3duIi8nICAke1N9L2NvbmZpZ3VyZS5hYworICAgICAgICBzZWQgLWkgJ3M9IC1JL3Vzci9pbmNsdWRlL2xpYnhtbDI9PScgICAgJHtTfS9jb25maWd1cmUuYWMKKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwdG9wL3RpcHRvcF8yLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXB0b3AvdGlwdG9wXzIuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDcyOWRlOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXB0b3AvdGlwdG9wXzIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiSGFyZHdhcmUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBjb3VudGVycyIKLUhPTUVQQUdFID0gImh0dHA6Ly90aXB0b3AuZ2ZvcmdlLmlucmlhLmZyLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLURFUEVORFMgPSAibmN1cnNlcyBsaWJ4bWwyIgotCi1TUkNfVVJJID0gImh0dHA6Ly90aXB0b3AuZ2ZvcmdlLmlucmlhLmZyL3JlbGVhc2VzLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmMWZiYTFlOTA0NjViMGU1YTM4NjViMTkxMzNmYTE5ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZjA3ZTk1OGI0MGFjYWVhYjk4ZTllYjEzMjZjOWY5MWIwYmUwYTc4MmMxY2MyYmQ3YTllMThkMzFmYWIxOGNhIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLUVYVFJBX09FQ09ORiA9ICJDRkxBR1M9IiRDRkxBR1MgLUkke1NUQUdJTkdfSU5DRElSfS9saWJ4bWwyIiIKLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YXJtfHBvd2VycGMpLiotbGludXgiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICAjIFR3byBidWdzIGluIGNvbmZpZ3VyZS5hYyB3aGVuIGNyb3NzLWNvbXBpbGluZy4KLSAgICAjIDEuIFRoZSBwYXRoIG9mIGxpYnhtbDIuIFNwZWNpZnkgaXQgaW4gRVhUUkFfT0VDT05GLgotICAgICMgMi4gaHcncyB2YWx1ZSBvbiBvdGhlciBwbGF0Zm9ybXMuIFJlcGxhY2UgaXQgaWYgdGhlIHRhcmdldCBpcwotICAgICMgICAgbm90IGkqODYveDg2XzY0LgotICAgIGlmICggZWNobyAiJHtUQVJHRVRfQVJDSH0iIHwgZ3JlcCAtcSAtZSAnaS44NicgLWUgJ3g4Nl82NCcgKTsgdGhlbgotICAgICAgICBzZWQgLWkgJ3M9IC1JL3Vzci9pbmNsdWRlL2xpYnhtbDI9PScgICAgJHtTfS9jb25maWd1cmUuYWMKLSAgICBlbHNlCi0gICAgICAgIHNlZCAtaSAncy9odz1gdW5hbWUgLW1gL2h3PSJ1bmtub3duIi8nICAke1N9L2NvbmZpZ3VyZS5hYwotICAgICAgICBzZWQgLWkgJ3M9IC1JL3Vzci9pbmNsdWRlL2xpYnhtbDI9PScgICAgJHtTfS9jb25maWd1cmUuYWMKLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdG11eC90bXV4XzIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RtdXgvdG11eF8yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMjFkZTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdG11eC90bXV4XzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiVGVybWluYWwgbXVsdGlwbGV4ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vdG11eC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiSVNDIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdG11eC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTc7bWQ1PTg2ODViNDQ1NTMzMGE5NDBmYWIxZmY0NTFhYTk0MWEwIgotCi1ERVBFTkRTID0gIm5jdXJzZXMgbGliZXZlbnQiCi0KLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3RtdXgvdG11eC5naXQ7YnJhbmNoPW1hc3RlciIKLVNSQ1JFViA/PSAiMzEwZjBhOTYwY2E2NGZhMzgwOTU0NWJhZGM2MjljMGMxNjZjNmNkMiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtXT1JLRElSfS9idWlsZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3V0ZW1wdGVyXSA9ICJhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD15ZXMsYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9bm8sbGlidXRlbXB0ZXIsIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90bXV4L3RtdXhfMi42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdG11eC90bXV4XzIuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmE1MTU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdG11eC90bXV4XzIuNi5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIlRlcm1pbmFsIG11bHRpcGxleGVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3RtdXguc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIklTQyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3RtdXguYztiZWdpbmxpbmU9MztlbmRsaW5lPTE3O21kNT1mMjU2Yjc2ZDUyZTdiNGQwMmJmMTkxNDRiZGFjYTEwNyIKKworREVQRU5EUyA9ICJuY3Vyc2VzIGxpYmV2ZW50IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS90bXV4L3RtdXgvcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vdG11eC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZDU0MWZmMzkyMjQ5Zjk0YzRmMzYzNTc5MzU1NmY4MjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjE3Y2QxNzBhOTRkN2I1OGMwNjk4NzUyZTFmNGYyNjNhYjZkYzQ3NDI1MjMwZGY3ZTUzYTY0MzVjYzdjZDdlOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3V0ZW1wdGVyXSA9ICJhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD15ZXMsYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9bm8sbGlidXRlbXB0ZXIsIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIFRoZSAnY29tcGF0JyBkaXJlY3RvcnkgaXMgbmVlZGVkIGZvciBvdXRwdXQgZHVyaW5nIHRoZSBidWlsZCBidXQgaXQncworICAgICMgbm90IGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aGVuIGJ1aWxkaW5nIG91dHNpZGUgdGhlIHNvdXJjZSBkaXJlY3RvcnkuCisgICAgbWtkaXIgJHtCfS9jb21wYXQKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS9maWxlcy9hZHMxeDE1LWZpeGVkLWNhc2UtbG9naWMtaW4tZ2V0VGhyZXNoLWZ1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL2ZpbGVzL2FkczF4MTUtZml4ZWQtY2FzZS1sb2dpYy1pbi1nZXRUaHJlc2gtZnVuY3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MTdkMTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL2ZpbGVzL2FkczF4MTUtZml4ZWQtY2FzZS1sb2dpYy1pbi1nZXRUaHJlc2gtZnVuY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGM2NGQwNGQwODRmNDdiNGNiM2UxY2RlZTZlOTYzNDhmY2M2YTc1NmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWhhaSBUdWRvciBQYW51IDxtaWhhaS50dWRvci5wYW51QGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMzAgTWF5IDIwMTcgMTU6MTQ6MDkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzFdIGFkczF4MTU6IGZpeGVkIGNhc2UgbG9naWMgaW4gZ2V0VGhyZXNoKCkgZnVuY3Rpb24KLQotU2lnbmVkLW9mZi1ieTogTWloYWkgVHVkb3IgUGFudSA8bWloYWkudHVkb3IucGFudUBpbnRlbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnRlZCBbYzY0ZDA0ZDA4NGY0N2I0Y2IzZTFjZGVlNmU5NjM0OGZjYzZhNzU2ZV0KLQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotCi0tLS0KLSBzcmMvYWRzMXgxNS9hZHMxeDE1LmN4eCB8IDQgKystLQotIHNyYy9hZHMxeDE1L2FkczF4MTUuaHBwIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FkczF4MTUvYWRzMXgxNS5jeHggYi9zcmMvYWRzMXgxNS9hZHMxeDE1LmN4eAotaW5kZXggMzU3ODI3MDkuLjQ3NzAxYjJhIDEwMDY0NAotLS0tIGEvc3JjL2FkczF4MTUvYWRzMXgxNS5jeHgKLSsrKyBiL3NyYy9hZHMxeDE1L2FkczF4MTUuY3h4Ci1AQCAtMTE2LDcgKzExNiw3IEBAIEFEUzFYMTU6OnNldENvbnRpbnVvdXMoYm9vbCBtb2RlKXsKLSAKLSBmbG9hdAotIEFEUzFYMTU6OmdldFRocmVzaChBRFNUSFJFU0ggcmVnKXsKLS0gICAgIGlmKCBUSFJFU0hfSElHSCAmJiBUSFJFU0hfTE9XKSByZXR1cm4gZ2V0TGFzdFNhbXBsZShyZWcpOwotKyAgICAgaWYocmVnID09IFRIUkVTSF9ISUdIIHx8IHJlZyA9PSBUSFJFU0hfTE9XKSByZXR1cm4gZ2V0TGFzdFNhbXBsZShyZWcpOwotICAgICAgZWxzZSByZXR1cm4gMC4wOwotIH0KLSAKLUBAIC0xMzcsNyArMTM3LDcgQEAgQURTMVgxNTo6c2V0VGhyZXNoKEFEU1RIUkVTSCByZWcsIGZsb2F0IHZhbHVlKXsKLSAgICAgIGNhc2UgMjoKLSAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgc2V0X3ZhbHVlID0gdmFsdWUgLyBnZXRNdWx0aXBsaWVyKCk7Ci0tICAgICAgICAgc2V0X3ZhbHVlID0gc2V0X3ZhbHVlIDw8IG1fYml0U2hpZnQ7Ci0rICAgICAgICAgIHNldF92YWx1ZSA9IHNldF92YWx1ZSA8PCBtX2JpdFNoaWZ0OwotICAgICAgICAgICBpZihpMmMtPndyaXRlV29yZFJlZyhyZWcsIHN3YXBXb3JkKHNldF92YWx1ZSkpICE9IG1yYWE6OlNVQ0NFU1MpewotICAgICAgICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcihzdGQ6OnN0cmluZyhfX0ZVTkNUSU9OX18pICsgIjogSTJjLndyaXRlKCkgZmFpbGVkIik7Ci0gICAgICAgICAgICAgcmV0dXJuOwotZGlmZiAtLWdpdCBhL3NyYy9hZHMxeDE1L2FkczF4MTUuaHBwIGIvc3JjL2FkczF4MTUvYWRzMXgxNS5ocHAKLWluZGV4IDc1MjQ1NzJkLi5lZmQ4YzhlYyAxMDA2NDQKLS0tLSBhL3NyYy9hZHMxeDE1L2FkczF4MTUuaHBwCi0rKysgYi9zcmMvYWRzMXgxNS9hZHMxeDE1LmhwcAotQEAgLTM5MCw3ICszOTAsNyBAQCBuYW1lc3BhY2UgdXBtIHsKLSAgICAgICAgICAgICAgKiBAcGFyYW0gcmVnIEFEU1RIUkVTIGVudW0gdmFsdWUuCi0gICAgICAgICAgICAgICogUmV0dXJucyAwLjAgdW5sZXNzIFRIUkVTSF9ISUdIIG9yIFRIUkVTSF9MT1cgcmVxdWVzdGVkLgotICAgICAgICAgICAgICAqLwotLSAgICAgICAgICAgIGZsb2F0IGdldFRocmVzaChBRFNUSFJFU0ggcmVnID0gVEhSRVNIX0xPVyk7Ci0rICAgICAgICAgICAgZmxvYXQgZ2V0VGhyZXNoKEFEU1RIUkVTSCByZWcgPSBUSFJFU0hfREVGQVVMVCk7Ci0gCi0gICAgICAgICAgICAgLyoqCi0gICAgICAgICAgICAgICogU2V0cyB0aHJlc2hvbGQgbGV2ZWxzIG9yIGNvbmZpZ3VyZXMgZm9yIGNvbnZlcnNpb24gcmVhZHkKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS91cG1fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIKaW5kZXggMzgwNjVjZS4uZDc0MmE1ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIKQEAgLTcsMTIgKzcsMTEgQEAKIAogREVQRU5EUyA9ICJsaWJqcGVnLXR1cmJvIG1yYWEiCiAKLVNSQ1JFViA9ICIxMDZiNmM3MDYyNjg1MjJhYjAxNjhhNGRkYjE5ZTg5Y2U4MzJlMDg0IgotUFYgPSAiMS4zLjAtZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiY2M3ZmVjOWFlMDIyOGFkZDkwMTFiZjFjMmNkNWUwY2EyYmEwZDRmMCIKK1BWID0gIjEuNi4wLWdpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gIiBcCiAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9pbnRlbC1pb3QtZGV2a2l0LyR7QlBOfS5naXQ7cHJvdG9jb2w9aHR0cCBcCi0gICAgZmlsZTovL2FkczF4MTUtZml4ZWQtY2FzZS1sb2dpYy1pbi1nZXRUaHJlc2gtZnVuY3Rpb24ucGF0Y2ggXAogIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtMjYsNyArMjUsMTMgQEAKICMgb3ZlcnJpZGUgdGhpcyBpbiBsb2NhbC5jb25mIHRvIGdldCBuZWVkZWQgYmluZGluZ3MuCiAjIEJJTkRJTkdTX3BuLXVwbT0icHl0aG9uIgogIyB3aWxsIHJlc3VsdCBpbiBvbmx5IHRoZSBweXRob24gYmluZGluZ3MgYmVpbmcgYnVpbHQvcGFja2FnZWQuCi1CSU5ESU5HUyA/Pz0gInB5dGhvbiAke0AgJ25vZGVqcycgaWYgb2UudHlwZXMuYm9vbGVhbihkLmdldFZhcignSEFWRV9OT0RFSlMnKSBvciAnMCcpIGVsc2UgJycgfSIKKyMgTm90ZTogJ25vZGVqcycgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBiZWNhdXNlIHRoZSBiaW5kaW5ncworIyBnZW5lcmF0aW9uIGN1cnJlbnRseSBmYWlscyB3aXRoIG5vZGVqcyAoPnY3LngpLgorQklORElOR1MgPz89ICJweXRob24iCisKKyMgbm9kZWpzIGlzbid0IGF2YWlsYWJsZSBmb3IgYXJtdjQvYXJtdjUgYXJjaGl0ZWN0dXJlcworQklORElOR1NfYXJtdjQgPz89ICJweXRob24iCitCSU5ESU5HU19hcm12NSA/Pz0gInB5dGhvbiIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFUycsICdub2RlLSR7UE59JywgJ25vZGVqcycsICcnLCBkKX0gXAogICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFUycsICcke1BZVEhPTl9QTn0tJHtQTn0nLCAncHl0aG9uJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL2Rpc2FibGVfdmxvY2tyYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL2Rpc2FibGVfdmxvY2tyYy5wYXRjaAppbmRleCBlZTBkMDc0Li4yNDEyYmI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy9kaXNhYmxlX3Zsb2NrcmMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvZGlzYWJsZV92bG9ja3JjLnBhdGNoCkBAIC0xLDEzICsxLDIzIEBACitGcm9tIGY3MWNjOTIwNTI4YzM0OTZiMDExODk2NGViYmNmNTQ0MGNkYTRlZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMzozNzo0MCArMDgwMAorU3ViamVjdDogW1BBVENIXSB2bG9jazogYWRkIG5ldyByZWNpcGUKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCiB3cml0dGVuIGJ5OiBKZWZmIFBvbGsgPGplZmYucG9sa0B3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KIAotSW5kZXg6IHZsb2NrLTIuMi4yL21hbi92bG9jay4xCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdmxvY2stMi4yLjIub3JpZy9tYW4vdmxvY2suMQkyMDEwLTA3LTI2IDE0OjEyOjQyLjAwMDAwMDAwMCAtMDQwMAotKysrIHZsb2NrLTIuMi4yL21hbi92bG9jay4xCTIwMTAtMDctMjYgMTQ6MTM6MDYuMDAwMDAwMDAwIC0wNDAwCi1AQCAtMTExLDExICsxMTEsNiBAQAorLS0tCisgbWFuL3Zsb2NrLjEgIHwgNSAtLS0tLQorIHNyYy92bG9jay5zaCB8IDUgLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWFuL3Zsb2NrLjEgYi9tYW4vdmxvY2suMQoraW5kZXggMGQyOWI0OS4uMDFjYjk0NCAxMDA2NDQKKy0tLSBhL21hbi92bG9jay4xCisrKysgYi9tYW4vdmxvY2suMQorQEAgLTExMSwxMSArMTExLDYgQEAgZW50ZXIgeW91ciBwYXNzd29yZCBhdCB0aGUgcGFzc3dvcmQgcHJvbXB0LiAgSWYgdGhpcyB2YXJpYWJsZSBpcyB1bnNldCBvciBzZXQKICB0byBhbiBpbnZhbGlkIHZhbHVlIG9yIDAgbm8gdGltZW91dCBpcyB1c2VkLiAgXGZCV2FybmluZ1xmUjogSWYgdGhpcyB2YWx1ZSBpcwogIHRvbyBsb3csIHlvdSBtYXkgbm90IGJlIGFibGUgdG8gdW5sb2NrIHlvdXIgc2Vzc2lvbi4KICAuUFAKQEAgLTE5LDExICsyOSwxMSBAQAogIC5TSCBTRUNVUklUWQogIFNlZSB0aGUgU0VDVVJJVFkgZmlsZSBpbiB0aGUgXGZCdmxvY2tcZlIgZGlzdHJpYnV0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIC5QUAotSW5kZXg6IHZsb2NrLTIuMi4yL3NyYy92bG9jay5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHZsb2NrLTIuMi4yLm9yaWcvc3JjL3Zsb2NrLnNoCTIwMTAtMDctMjYgMTQ6MTI6MzIuMDAwMDAwMDAwIC0wNDAwCi0rKysgdmxvY2stMi4yLjIvc3JjL3Zsb2NrLnNoCTIwMTAtMDctMjYgMTQ6MTM6MzMuMDAwMDAwMDAwIC0wNDAwCi1AQCAtMzUsMTEgKzM1LDYgQEAKK2RpZmYgLS1naXQgYS9zcmMvdmxvY2suc2ggYi9zcmMvdmxvY2suc2gKK2luZGV4IDc1ZjEzNjkuLmY1NzI3NzYgMTAwNjQ0CistLS0gYS9zcmMvdmxvY2suc2gKKysrKyBiL3NyYy92bG9jay5zaAorQEAgLTM1LDExICszNSw2IEBAIFRoaXMgVFRZIGlzIG5vdyBsb2NrZWQuCiAgCiAgJHtWTE9DS19FTlRFUl9QUk9NUFR9IgogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvdmxvY2stbm9fdGFsbHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9jay1ub190YWxseS5wYXRjaAppbmRleCA2ZThhNmE5Li4zYTM0NGIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9jay1ub190YWxseS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9jay1ub190YWxseS5wYXRjaApAQCAtMSw4ICsxLDIxIEBACitGcm9tIDE3ZTVjOGQzMmFiYzIxNGFlYTQwOGYwODM3YmU0MWU4OGJjZTdlYjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMzozNzo0MCArMDgwMAorU3ViamVjdDogW1BBVENIXSB2bG9jazogYWRkIG5ldyByZWNpcGUKKwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIHdyaXR0ZW4gYnk6IEplZmYgUG9sayA8amVmZi5wb2xrQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogCistLS0KKyBNYWtlZmlsZSAgICAgICAgIHwgNCArKysrCisgY29uZmlndXJlICAgICAgICB8IDkgKysrKysrKysrCisgc3JjL3Zsb2NrLW1haW4uYyB8IDggKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDRlZWI0MmEuLjgzNGNkMmMgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKIEBAIC0xMjYsNiArMTI2LDEwIEBAIGlmZXEgKCQoQVVUSF9NRVRIT0QpLHNoYWRvdykKQEAgLTE2LDYgKzI5LDggQEAKICBpZmVxICgkKEVOQUJMRV9QTFVHSU5TKSx5ZXMpCiAgdmxvY2stbWFpbjogcGx1Z2lucy5vIHBsdWdpbi5vIG1vZHVsZS5vIHByb2Nlc3MubyBzY3JpcHQubyB0c29ydC5vIGxpc3QubwogICMgLXJkeW5hbWljIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBhbGwgcGx1Z2luIGNhbiBhY2Nlc3MgdGhlIHN5bWJvbHMgZnJvbSBjb25zb2xlX3N3aXRjaC5vCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCBkNWQ4NGQ2Li4xMzAzNTk4IDEwMDc1NQogLS0tIGEvY29uZmlndXJlCiArKysgYi9jb25maWd1cmUKIEBAIC00NCw2ICs0NCw3IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgpAQCAtMzYsNyArNTEsNyBAQAogICAgICBwYW18c2hhZG93KQogICAgICAgIGlmIFsgIiQyIiA9ICJ5ZXMiIF0gOyB0aGVuCiAgICAgICAgICBpZiBbIC1uICIkYXV0aF9tZXRob2QiIF0gJiYgWyAiJGF1dGhfbWV0aG9kIiAhPSAiJDEiIF0gOyB0aGVuCi1AQCAtMjMyLDYgKzIzMiw3IEBAIHNldF9kZWZhdWx0cygpIHsKK0BAIC0yMjgsNiArMjMyLDcgQEAgc2V0X2RlZmF1bHRzKCkgewogICAgQVVUSF9NRVRIT0Q9InBhbSIKICAgIEVOQUJMRV9ST09UX1BBU1NXT1JEPSJ5ZXMiCiAgICBFTkFCTEVfUExVR0lOUz0ieWVzIgpAQCAtNDQsOSArNTksNyBAQAogICAgU0NSSVBUUz0iIgogIAogICAgVkxPQ0tfR1JPVVA9InZsb2NrIgotQEAgLTM1NiwxMCArMzU2LDE0IEBAIEVOQUJMRV9QTFVHSU5TID0gJHtFTkFCTEVfUExVR0lOU30KLSAjIHdoaWNoIHBsdWdpbnMgc2hvdWxkIGJlIGJ1aWxkCi0gTU9EVUxFUyA9ICR7TU9EVUxFU30KK0BAIC0zNTMsNiArMzU4LDEwIEBAIE1PRFVMRVMgPSAke01PRFVMRVN9CiAgIyB3aGljaCBzY3JpcHRzIHNob3VsZCBiZSBpbnN0YWxsZWQKICBTQ1JJUFRTID0gJHtTQ1JJUFRTfQogIApAQCAtNTcsMTIgKzcwLDEyIEBACiAgIyByb290J3MgZ3JvdXAKICBST09UX0dST1VQID0gJHtST09UX0dST1VQfQogIAotICMgZ3JvdXAgZm9yIHByaXZpbGVnZWQgcGx1Z2lucwotIFZMT0NLX0dST1VQID0gJHtWTE9DS19HUk9VUH0KK2RpZmYgLS1naXQgYS9zcmMvdmxvY2stbWFpbi5jIGIvc3JjL3Zsb2NrLW1haW4uYworaW5kZXggMDA4ZjZmMC4uMTA4Y2U4YiAxMDA2NDQKIC0tLSBhL3NyYy92bG9jay1tYWluLmMKICsrKyBiL3NyYy92bG9jay1tYWluLmMKLUBAIC0xMTEsNyArMTExLDkgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV90ZXJtaW5hbCh2b2lkKQotICAgKHZvaWQpIHRjc2V0YXR0cihTVERJTl9GSUxFTk8sIFRDU0FOT1csICZ0ZXJtKTsKK0BAIC0xMTIsNyArMTEyLDkgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV90ZXJtaW5hbCh2b2lkKQorICAgKHZvaWQpIHRjc2V0YXR0cihTVERJTl9GSUxFTk8sIFRDU0FOT1csICZvbGRfdGVybSk7CiAgfQogIAogKyNpZmRlZiBFTkFCTEVfRkFJTF9DT1VOVApAQCAtNzEsNyArODQsNyBAQAogIAogIHN0YXRpYyB2b2lkIGF1dGhfbG9vcChjb25zdCBjaGFyICp1c2VybmFtZSkKICB7Ci1AQCAtMTgxLDcgKzE4Myw5IEBAIHN0YXRpYyB2b2lkIGF1dGhfbG9vcChjb25zdCBjaGFyICp1c2VybmEKK0BAIC0xODIsNyArMTg0LDkgQEAgc3RhdGljIHZvaWQgYXV0aF9sb29wKGNvbnN0IGNoYXIgKnVzZXJuYW1lKQogICAgICB9CiAgI2VuZGlmCiAgCkBAIC04MSw3ICs5NCw3IEBACiAgICB9CiAgCiAgICAvKiBGcmVlIHRpbWVvdXRzIG1lbW9yeS4gKi8KLUBAIC0xODksMTEgKzE5MywxMyBAQCBzdGF0aWMgdm9pZCBhdXRoX2xvb3AoY29uc3QgY2hhciAqdXNlcm5hCitAQCAtMTkwLDExICsxOTQsMTMgQEAgc3RhdGljIHZvaWQgYXV0aF9sb29wKGNvbnN0IGNoYXIgKnVzZXJuYW1lKQogICAgZnJlZShwcm9tcHRfdGltZW91dCk7CiAgfQogIApAQCAtOTUsNyArMTA4LDcgQEAKICAKICAjaWZkZWYgVVNFX1BMVUdJTlMKICBzdGF0aWMgdm9pZCBjYWxsX2VuZF9ob29rKHZvaWQpCi1AQCAtMjE2LDcgKzIyMiw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICpjb25zdCBhcmd2W10pCitAQCAtMjE3LDcgKzIyMyw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICpjb25zdCBhcmd2W10pCiAgICBpZiAodXNlcm5hbWUgPT0gTlVMTCkKICAgICAgZmF0YWxfcGVycm9yKCJ2bG9jazogY291bGQgbm90IGdldCB1c2VybmFtZSIpOwogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvdmxvY2tfcGFtX3RhbGx5Ml9yZXNldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL3Zsb2NrX3BhbV90YWxseTJfcmVzZXQucGF0Y2gKaW5kZXggNGNlMGFiYy4uNDYwYjI5MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvdmxvY2tfcGFtX3RhbGx5Ml9yZXNldC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9ja19wYW1fdGFsbHkyX3Jlc2V0LnBhdGNoCkBAIC0xLDEzICsxLDIyIEBACitGcm9tIGZjZWM0ZTdmZTg5OWY4YzAwNzdiMzAwNGVlY2NiNzI5MmE5NDVhNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMzozNzo0MCArMDgwMAorU3ViamVjdDogW1BBVENIXSB2bG9jazogYWRkIG5ldyByZWNpcGUKKwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIHdyaXR0ZW4gYnk6IEplZmYgUG9sayA8amVmZi5wb2xrQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogCi1JbmRleDogdmxvY2stMi4yLjIvc3JjL2F1dGgtcGFtLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB2bG9jay0yLjIuMi5vcmlnL3NyYy9hdXRoLXBhbS5jCTIwMTAtMDYtMTQgMTQ6Mzg6NTEuMDAwMDAwMDAwIC0wNDAwCi0rKysgdmxvY2stMi4yLjIvc3JjL2F1dGgtcGFtLmMJMjAxMC0wNi0xNCAxNDozOToxMi4wMDAwMDAwMDAgLTA0MDAKLUBAIC0xNDgsNiArMTQ4LDkgQEAKKy0tLQorIHNyYy9hdXRoLXBhbS5jIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYXV0aC1wYW0uYyBiL3NyYy9hdXRoLXBhbS5jCitpbmRleCA1Y2Y5M2Y2Li5jNWNjNjdhIDEwMDY0NAorLS0tIGEvc3JjL2F1dGgtcGFtLmMKKysrKyBiL3NyYy9hdXRoLXBhbS5jCitAQCAtMTQ4LDYgKzE0OCw5IEBAIGJvb2wgYXV0aChjb25zdCBjaGFyICp1c2VyLCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWVvdXQpCiAgCiAgICBpZiAocGFtX3N0YXR1cyAhPSBQQU1fU1VDQ0VTUykgewogICAgICBmcHJpbnRmKHN0ZGVyciwgInZsb2NrOiAlc1xuIiwgcGFtX3N0cmVycm9yKHBhbWgsIHBhbV9zdGF0dXMpKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pyYW0venJhbS9pbml0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenJhbS96cmFtL2luaXQKaW5kZXggN2I2Y2JmNC4uYTJjOWMyMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenJhbS96cmFtL2luaXQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenJhbS96cmFtL2luaXQKQEAgLTM0LDcgKzM0LDcgQEAKICAgICBtZW1fYnlfY3B1PSQoKCRtZW10b3RhbC8kbnVtX2NwdXMqJGZhY3Rvci8xMDAqMTAyNCkpCiAKICAgICAjIGxvYWQgZGVwZW5kZW5jeSBtb2R1bGVzCi0gICAgbW9kcHJvYmUgenJhbSB6cmFtX251bV9kZXZpY2VzPSRudW1fY3B1cworICAgIG1vZHByb2JlIHpyYW0gbnVtX2RldmljZXM9JG51bV9jcHVzCiAgICAgZWNobyAienJhbSBkZXZpY2VzIHByb2JlZCBzdWNjZXNzZnVsbHkiCiAKICAgICAjIGluaXRpYWxpemUgdGhlIGRldmljZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pzaC96c2hfNS4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96c2gvenNoXzUuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjVlMzkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pzaC96c2hfNS4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1TVU1NQVJZID0gIlVOSVggU2hlbGwgc2ltaWxhciB0byB0aGUgS29ybiBzaGVsbCIKLURFU0NSSVBUSU9OID0gIlpzaCBpcyBhIHNoZWxsIGRlc2lnbmVkIGZvciBpbnRlcmFjdGl2ZSB1c2UsIGFsdGhvdWdoIGl0IGlzIGFsc28gYSBcCi0gICAgICAgICAgICAgICBwb3dlcmZ1bCBzY3JpcHRpbmcgbGFuZ3VhZ2UuIE1hbnkgb2YgdGhlIHVzZWZ1bCBmZWF0dXJlcyBvZiBiYXNoLCBcCi0gICAgICAgICAgICAgICBrc2gsIGFuZCB0Y3NoIHdlcmUgaW5jb3Jwb3JhdGVkIGludG8genNoOyBtYW55IG9yaWdpbmFsIGZlYXR1cmVzIHdlcmUgYWRkZWQuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy56c2gub3JnIgotU0VDVElPTiA9ICJiYXNlL3NoZWxsIgotCi1MSUNFTlNFID0gInpzaCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWI3YmM4NTM4OTQ2NjRiZTQ1NWE5MjJkYjk4MDUyODhlIgotCi1ERVBFTkRTID0gIm5jdXJzZXMgYmlzb24tbmF0aXZlIGxpYmNhcCBsaWJwY3JlIGdkYm0gZ3JvZmYtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImQ1ODNmYmNhMGMyNDEwYmY5NTQyY2U4YTY1MWMyNmNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkOTRhNTkwZmYzYzU2MmVjZjM4N2RhNzhhYzM1NmQ2YmVhNzliMDUwYTllZjgxZTNlY2I5ZjhlZTUxMzA0MGUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWJpbmRpcj0ke2Jhc2VfYmluZGlyfSBcCi0gICAgLS1lbmFibGUtZXRjZGlyPSR7c3lzY29uZmRpcn0gXAotICAgIC0tZW5hYmxlLWZuZGlyPSR7ZGF0YWRpcn0vJHtQTn0vJHtQVn0vZnVuY3Rpb25zIFwKLSAgICAtLWVuYWJsZS1zaXRlLWZuZGlyPSR7ZGF0YWRpcn0vJHtQTn0vc2l0ZS1mdW5jdGlvbnMgXAotICAgIC0td2l0aC10ZXJtLWxpYj0nbmN1cnNlc3cgbmN1cnNlcycgXAotICAgIC0td2l0aC10Y3NldHBncnAgXAotICAgIC0tZW5hYmxlLWNhcCBcCi0gICAgLS1lbmFibGUtbXVsdGlieXRlIFwKLSAgICAtLWRpc2FibGUtZ2RibSBcCi0gICAgLS1kaXNhYmxlLWR5bmFtaWMgXAotICAgIHpzaF9jdl9zaGFyZWRfZW52aXJvbj15ZXMgXAotIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAic2giCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2hdID0gIiR7YmFzZV9iaW5kaXJ9L3NoIgotQUxURVJOQVRJVkVfVEFSR0VUW3NoXSA9ICIke2Jhc2VfYmluZGlyfS8ke0JQTn0iCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLWV4cG9ydCBBVVRPSEVBREVSID0gInRydWUiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlICR7U30KLSAgICBvZV9ydW5jb25mCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBybSAtZnIgJHtEfS91c3Ivc2hhcmUKLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICB0b3VjaCAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCi0gICAgZ3JlcCAtcSAiYmluL3pzaCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvIC9iaW4venNoID4+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKLSAgICBncmVwIC1xICJiaW4vc2giICREJHtzeXNjb25mZGlyfS9zaGVsbHMgfHwgZWNobyAvYmluL3NoID4+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKLX0KLQotRklMRVNfJHtQTn0tZGJnICs9ICJcCi0gICAgJHtsaWJkaXJ9LyR7UE59LyR7UFZ9LyR7UE59Ly5kZWJ1Zy8qLnNvIFwKLSAgICAke2xpYmRpcn0vJHtQTn0vJHtQVn0vJHtQTn0vZGIvLmRlYnVnLyouc28gXAotICAgICR7bGliZGlyfS8ke1BOfS8ke1BWfS8ke1BOfS9uZXQvLmRlYnVnLyouc28gXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvYXRrL2F0a21tXzIuMjQuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2F0ay9hdGttbV8yLjI0LjIuYmIKaW5kZXggMzBhYzkwYS4uMzA3Nzc0YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvYXRrL2F0a21tXzIuMjQuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9hdGsvYXRrbW1fMi4yNC4yLmJiCkBAIC03LDcgKzcsOSBAQAogCiBERVBFTkRTID0gImF0ayBnbGlibW0iCiAKLWluaGVyaXQgZ25vbWUgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ25vbWUgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkNTNiNjBiMGYxYmU1OTdlODYwNzA5NTRhNDljZjBjMyIKIFNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImZmOTUzODU3NTllMmFmMjM4MjhkNDA1NjM1NmYyNTM3NmNmYWJjNDFlNjkwYWMxZGYwNTUzNzE1MzdlNDU4YmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9nbm9tZS1jb21tb24vZ25vbWUtY29tbW9uXzMuMTguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2dub21lLWNvbW1vbi9nbm9tZS1jb21tb25fMy4xOC4wLmJiCmluZGV4IDA2ZjNiYjMuLmQ4NzQxNjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2dub21lLWNvbW1vbi9nbm9tZS1jb21tb25fMy4xOC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2dub21lLWNvbW1vbi9nbm9tZS1jb21tb25fMy4xOC4wLmJiCkBAIC0xNCw2ICsxNCwxMCBAQAogRVhUUkFfQVVUT1JFQ09ORiA9ICIiCiBERVBFTkRTID0gIiIKIAorIyBEZWZhdWx0IHRvIGVuYWJsZSBhdXRvY29uZi1hcmNoaXZlIHRvIGF2b2lkIGNvbmZsaWN0cworUEFDS0FHRUNPTkZJRyA/Pz0gImF1dG9jb25mLWFyY2hpdmUiCitQQUNLQUdFQ09ORklHW2F1dG9jb25mLWFyY2hpdmVdID0gIi0td2l0aC1hdXRvY29uZi1hcmNoaXZlLCAtLXdpdGhvdXQtYXV0b2NvbmYtYXJjaGl2ZSwgYXV0b2NvbmYtYXJjaGl2ZSIKKwogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKIEZJTEVTXyR7UE59LWRldiA9ICIiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0aysvZmlsZXMvMDAwMS1kby1ub3QtYnVpbGQtZGVtb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGsrL2ZpbGVzLzAwMDEtZG8tbm90LWJ1aWxkLWRlbW9zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3NmU5NzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGsrL2ZpbGVzLzAwMDEtZG8tbm90LWJ1aWxkLWRlbW9zLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gNjkxNGVjY2VlMzQzNzZmOTA2N2IwZWU5ZjE3MDM5ZmUxODIxMjVlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMxIE1hciAyMDE4IDIyOjI5OjE2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGRvIG5vdCBidWlsZCBkZW1vcworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitUaGV5IGFyZSBub3QgaW5zdGFsbGVkIGFueXdheSBhbmQgYWRkIGxpYmVwb3h5IGRlcGVuZGVuY3kKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5hbSAgfCAzICsrLQorIGNvbmZpZ3VyZS5hYyB8IDMgLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA5ODRiNmE3Li42Yzc1NGE2IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMjgsNyArMjgsOCBAQCBkb2Nfc3ViZGlycyA9IGRvY3MKKyBlbHNlCisgZG9jX3N1YmRpcnMgPQorIGVuZGlmCistU1VCRElSUyA9IHRvb2xzICQoc3JjX3N1YmRpcnMpIGdkay9nZGttbSBndGsvZ3RrbW0gdGVzdHMgZGVtb3MgJChkb2Nfc3ViZGlycykKKysKKytTVUJESVJTID0gdG9vbHMgJChzcmNfc3ViZGlycykgZ2RrL2dka21tIGd0ay9ndGttbSB0ZXN0cyAkKGRvY19zdWJkaXJzKQorIAorIGdka21tX2luY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpLyQoR0RLTU1fTU9EVUxFX05BTUUpCisgZ2RrbW1faW5jbHVkZV9IRUFERVJTID0gZ2RrL2dka21tLmgKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGU1ZTgyZGMuLmMxYzc2NTggMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEwOSwxMSArMTA5LDggQEAgQVNfSUYoW3Rlc3QgIngkZ3RrbW1fZW5hYmxlX2FwaV9hdGttbSIgIT0geG5vXSwKKyAgICAgICBbR1RLTU1fTU9EVUxFUz0iYXRrbW0tMS42ID49IDIuMjQuMiAkR1RLTU1fTU9EVUxFUyJdKQorIEFDX1NVQlNUKFtHVEtNTV9NT0RVTEVTXSkKKyAKKy1BQ19TVUJTVChbR1RLTU1fREVNT1NfRVhUUkFfTU9EVUxFU10sIFsnZXBveHkgPj0gMS4yJ10pCistCisgUEtHX0NIRUNLX01PRFVMRVMoW0dES01NXSwgWyRHREtNTV9NT0RVTEVTXSkKKyBQS0dfQ0hFQ0tfTU9EVUxFUyhbR1RLTU1dLCBbJEdUS01NX01PRFVMRVNdKQorLVBLR19DSEVDS19NT0RVTEVTKFtHVEtNTV9ERU1PU19FWFRSQV0sIFskR1RLTU1fREVNT1NfRVhUUkFfTU9EVUxFU10pCisgCisgTU1fUEtHX0NPTkZJR19TVUJTVChbR1RIUkVBRF9DRkxBR1NdLCBbLS1jZmxhZ3Mtb25seS1vdGhlciBndGhyZWFkLTIuMF0pCisgTU1fUEtHX0NPTkZJR19TVUJTVChbR1RIUkVBRF9MSUJTXSwgWy0tbGlicyBndGhyZWFkLTIuMF0pCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGsrL2d0a21tM18zLjIyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGsrL2d0a21tM18zLjIyLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZiNTRkZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0aysvZ3RrbW0zXzMuMjIuMi5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkMrKyBiaW5kaW5ncyBmb3IgdGhlIEdUSysgdG9vbGtpdCBWMyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrbW0ub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy50b29sczttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0RFUEVORFMgPSAiYXRrbW0gcGFuZ29tbSBnbGlibW0gZ3RrKzMgY2Fpcm9tbSIKKworQlBOID0gImd0a21tIgorCitpbmhlcml0IGdub21lYmFzZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiODgzZTkwNDY3NjhiM2E1YWZjOGUzNjU5ODg4MjNlNzciCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI5MWFmZDk4YTMxNTE5NTM2ZjVmMzk3YzJkNzk2OTZlM2Q1MzE0M2I4MGI3NTc3ODUyMWNhN2I0OGNiMjgwMDkwIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtZG8tbm90LWJ1aWxkLWRlbW9zLnBhdGNoIgorCitFWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uICIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vKi9pbmNsdWRlICR7bGliZGlyfS8qL3Byb2MvbTQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGsrL2d0a21tXzIuMjQuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0aysvZ3RrbW1fMi4yNC41LmJiCmluZGV4IDE5NWJiMjEuLmI3ODBkMDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0aysvZ3RrbW1fMi4yNC41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2d0aysvZ3RrbW1fMi4yNC41LmJiCkBAIC04LDEyICs4LDEwIEBACiAKIERFUEVORFMgPSAiYXRrbW0gcGFuZ29tbSBnbGlibW0gZ3RrKyBjYWlyb21tIgogCi1pbmhlcml0IGdub21lIGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGdub21lYmFzZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIAogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAotR05PTUVfQ09NUFJFU1NfVFlQRSA9ICJ4eiIKLQogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNmM1OWFlOGJiZmY0OGZhZDkxMzJmMjNhZjM0N2FjZjEiCiBTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwNjgwYTUzYjdiZjkwYjRlNGJmNDQ0ZDFkODllNmRmNDFjNzc3ZTBiYWNjOTZlOWMwOWZjNGRkMmY1ZmU2YjcyIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZS0yLjYuNC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtZGVwcmVjYXRlZC1HTk9NRV9DT01NT05fSU5JVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlLTIuNi40LzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS1kZXByZWNhdGVkLUdOT01FX0NPTU1PTl9JTklULnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzM4Mjc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlLTIuNi40LzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS1kZXByZWNhdGVkLUdOT01FX0NPTU1PTl9JTklULnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSBjZWVmY2IxOWNlYmY4YmMzZDQ1ZWU1MDJmOGVhYmQzYmM1YmQwYWFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogU2F0LCAxMSBGZWIgMjAxNyAxNjo0MjoxMiArMDEwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuaW46IHJlbW92ZSBkZXByZWNhdGVkIEdOT01FX0NPTU1PTl9JTklUCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuaW4gfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA4OTA1ZjFjLi4zOTAxMzk4IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0xNSw3ICsxNSw2IEBAIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0gCi0gQU1fSU5JVF9BVVRPTUFLRShbMS45IG5vLWRpc3QtZ3ppcCBkaXN0LWJ6aXAyXSkKLSAKLS1HTk9NRV9DT01NT05fSU5JVAotIAotIGlmIHRlc3QgIiRlbmFibGVfZGVidWciICE9ICJubyI7IHRoZW4KLSAgIEFDX0RFRklORShbREVCVUddLFsxXSxbZW5hYmxlIHVzZSBvZiBMSUJHTEFERV9ERUJVRyBlbnZpcm9ubWVudCB2YXJpYWJsZV0pCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlLTIuNi40L2dsYWRlLWNydWZ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGliZ2xhZGUvbGliZ2xhZGUtMi42LjQvZ2xhZGUtY3J1ZnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1ZDU4NjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGliZ2xhZGUvbGliZ2xhZGUtMi42LjQvZ2xhZGUtY3J1ZnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWRpZmYgLXVyIGxpYmdsYWRlLTIuNC4wfi9jb25maWd1cmUuaW4gbGliZ2xhZGUtMi40LjAvY29uZmlndXJlLmluCi0tLS0gbGliZ2xhZGUtMi40LjB+L2NvbmZpZ3VyZS5pbgkyMDA0LTA1LTE3IDEyOjM4OjMxLjAwMDAwMDAwMCArMDEwMAotKysrIGxpYmdsYWRlLTIuNC4wL2NvbmZpZ3VyZS5pbgkyMDA0LTA3LTI4IDE2OjUzOjA5LjAwMDAwMDAwMCArMDEwMAotQEAgLTE0Nyw2ICsxNDcsMTggQEAKLSBBTV9DT05ESVRJT05BTChIQVZFX1BZVEhPTiwgJGhhdmVfcHl0aG9uKQotIEFDX1NVQlNUKFBZVEhPTikKLSAKLStBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBjcnVmdCBpbiBsaWJndGtdKQotK0FDX1RSWV9MSU5LKFsKLSsjaW5jbHVkZSA8Z3RrL2d0ay5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotK10sICAgICAgWyBndGtfdHJlZV9nZXRfdHlwZSAoKTsgcmV0dXJuIDA7IF0sCi0rICAgICAgICBbIEFDX01TR19SRVNVTFQoeWVzKQotKyAgICAgICAgICBoYXZlX2NydWZ0PXllcyBdLAotKyAgICAgICAgWyBBQ19NU0dfUkVTVUxUKG5vKQotKwkgIEFDX0RFRklORShESVNBQkxFX0NSVUZULCxbbGVhdmUgb3V0IHN1cHBvcnQgZm9yIG9sZCwgYnJva2VuIHdpZGdldHNdKQotKyAgICAgICAgICBoYXZlX2NydWZ0PW5vIF0pCi0rQUNfU1VCU1QoRElTQUJMRV9DUlVGVCkKLSsKLSBkbmwgYWRkIGRlYnVnZ2luZyBvcHRpb25zIC4uLgotIGNoYW5nZXF1b3RlKCwpZG5sCi0gaWYgdGVzdCAieCRHQ0MiID0geHllczsgdGhlbgotT25seSBpbiBsaWJnbGFkZS0yLjQuMDogY29uZmlndXJlLmluLm9yaWcKLWRpZmYgLXVyIGxpYmdsYWRlLTIuNC4wfi9nbGFkZS9nbGFkZS1ndGsuYyBsaWJnbGFkZS0yLjQuMC9nbGFkZS9nbGFkZS1ndGsuYwotLS0tIGxpYmdsYWRlLTIuNC4wfi9nbGFkZS9nbGFkZS1ndGsuYwkyMDA0LTAzLTEzIDEzOjQ3OjM1LjAwMDAwMDAwMCArMDAwMAotKysrIGxpYmdsYWRlLTIuNC4wL2dsYWRlL2dsYWRlLWd0ay5jCTIwMDQtMDctMjggMTY6NTM6NTIuMDAwMDAwMDAwICswMTAwCi1AQCAtMjEzLDYgKzIxMyw4IEBACi0gCWd0a19jbGlzdF9jb2x1bW5fdGl0bGVzX2hpZGUgKEdUS19DTElTVCAodykpOwotIH0KLSAKLSsjaWZuZGVmIERJU0FCTEVfQ1JVRlQKLSsKLSBzdGF0aWMgdm9pZAotIHRyZWVfc2V0X3NlbGVjdGlvbl9tb2RlIChHbGFkZVhNTCAqeG1sLCBHdGtXaWRnZXQgKncsCi0gCQkJIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotQEAgLTIzOCw2ICsyNDAsOCBAQAotICAgICBndGtfdHJlZV9zZXRfdmlld19saW5lcyAoR1RLX1RSRUUgKHcpLCBCT09MICh2YWx1ZSkpOwotIH0KLSAKLSsjZW5kaWYKLSsKLSBzdGF0aWMgdm9pZAotIGxpc3Rfc2V0X3NlbGVjdGlvbl9tb2RlIChHbGFkZVhNTCAqeG1sLCBHdGtXaWRnZXQgKncsCi0gCQkJIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotQEAgLTI1NCw2ICsyNTgsNyBAQAotICAgICBndGtfY2hlY2tfbWVudV9pdGVtX3NldF9zaG93X3RvZ2dsZSAoR1RLX0NIRUNLX01FTlVfSVRFTSAodyksIEJPT0wgKHZhbHVlKSk7Ci0gfQotIAotKyNpZm5kZWYgRElTQUJMRV9DUlVGVAotIHN0YXRpYyB2b2lkCi0gdGV4dF9zZXRfdGV4dCAoR2xhZGVYTUwgKnhtbCwgR3RrV2lkZ2V0ICp3LAotIAkgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCi1AQCAtMjYyLDYgKzI2Nyw3IEBACi0gCi0gICAgIGd0a19lZGl0YWJsZV9pbnNlcnRfdGV4dCAoR1RLX0VESVRBQkxFICh3KSwgdmFsdWUsIC0xLCAmcG9zKTsKLSB9Ci0rI2VuZGlmCi0gCi0gc3RhdGljIHZvaWQKLSByYWRpb19tZW51X2l0ZW1fc2V0X2dyb3VwIChHbGFkZVhNTCAqeG1sLCBHdGtXaWRnZXQgKncsCi1AQCAtMTEyNSwxMyArMTEzMSwxNyBAQAotICAgICBnbGFkZV9yZWdpc3Rlcl9jdXN0b21fcHJvcCAoR1RLX1RZUEVfQ0xJU1QsICJzZWxlY3Rpb25fbW9kZSIsIGNsaXN0X3NldF9zZWxlY3Rpb25fbW9kZSk7Ci0gICAgIGdsYWRlX3JlZ2lzdGVyX2N1c3RvbV9wcm9wIChHVEtfVFlQRV9DTElTVCwgInNoYWRvd190eXBlIiwgY2xpc3Rfc2V0X3NoYWRvd190eXBlKTsKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfY3VzdG9tX3Byb3AgKEdUS19UWVBFX0NMSVNULCAic2hvd190aXRsZXMiLCBjbGlzdF9zZXRfc2hvd190aXRsZXMpOwotKyNpZm5kZWYgRElTQUJMRV9DUlVGVAotICAgICBnbGFkZV9yZWdpc3Rlcl9jdXN0b21fcHJvcCAoR1RLX1RZUEVfVFJFRSwgInNlbGVjdGlvbl9tb2RlIiwgdHJlZV9zZXRfc2VsZWN0aW9uX21vZGUpOwotICAgICBnbGFkZV9yZWdpc3Rlcl9jdXN0b21fcHJvcCAoR1RLX1RZUEVfVFJFRSwgInZpZXdfbW9kZSIsIHRyZWVfc2V0X3ZpZXdfbW9kZSk7Ci0gICAgIGdsYWRlX3JlZ2lzdGVyX2N1c3RvbV9wcm9wIChHVEtfVFlQRV9UUkVFLCAidmlld19saW5lIiwgdHJlZV9zZXRfdmlld19saW5lKTsKLSsjZW5kaWYKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfY3VzdG9tX3Byb3AgKEdUS19UWVBFX0xJU1QsICJzZWxlY3Rpb25fbW9kZSIsIGxpc3Rfc2V0X3NlbGVjdGlvbl9tb2RlKTsKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfY3VzdG9tX3Byb3AgKEdUS19UWVBFX0NIRUNLX01FTlVfSVRFTSwgImFsd2F5c19zaG93X3RvZ2dsZSIsCi0gCQkJCWNoZWNrX21lbnVfaXRlbV9zZXRfYWx3YXlzX3Nob3dfdG9nZ2xlKTsKLSsjaWZuZGVmIERJU0FCTEVfQ1JVRlQKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfY3VzdG9tX3Byb3AgKEdUS19UWVBFX1RFWFQsICJ0ZXh0IiwgdGV4dF9zZXRfdGV4dCk7Ci0rI2VuZGlmCi0gICAgIGdsYWRlX3JlZ2lzdGVyX2N1c3RvbV9wcm9wIChHVEtfVFlQRV9SQURJT19NRU5VX0lURU0sICJncm91cCIsCi0gCQkJCXJhZGlvX21lbnVfaXRlbV9zZXRfZ3JvdXApOwotICAgICBnbGFkZV9yZWdpc3Rlcl9jdXN0b21fcHJvcCAoR1RLX1RZUEVfVE9PTEJBUiwgInRvb2x0aXBzIiwgdG9vbGJhcl9zZXRfdG9vbHRpcHMpOwotQEAgLTEyODgsOCArMTI5OCwxMCBAQAotIAkJCSAgIGdsYWRlX3N0YW5kYXJkX2J1aWxkX2NoaWxkcmVuLCBOVUxMKTsKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfd2lkZ2V0IChHVEtfVFlQRV9URUFST0ZGX01FTlVfSVRFTSwgZ2xhZGVfc3RhbmRhcmRfYnVpbGRfd2lkZ2V0LAotIAkJCSAgIE5VTEwsIE5VTEwpOwotKyNpZm5kZWYgRElTQUJMRV9DUlVGVAotICAgICBnbGFkZV9yZWdpc3Rlcl93aWRnZXQgKEdUS19UWVBFX1RFWFQsIGdsYWRlX3N0YW5kYXJkX2J1aWxkX3dpZGdldCwKLSAJCQkgICBOVUxMLCBOVUxMKTsKLSsjZW5kaWYKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfd2lkZ2V0IChHVEtfVFlQRV9URVhUX1ZJRVcsIGdsYWRlX3N0YW5kYXJkX2J1aWxkX3dpZGdldCwKLSAJCQkgICBOVUxMLCBOVUxMKTsKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfd2lkZ2V0IChHVEtfVFlQRV9USVBTX1FVRVJZLCBnbGFkZV9zdGFuZGFyZF9idWlsZF93aWRnZXQsCi1AQCAtMTMwNCw4ICsxMzE2LDEwIEBACi0gCQkJICAgZ2xhZGVfc3RhbmRhcmRfYnVpbGRfY2hpbGRyZW4sIE5VTEwpOwotICAgICBnbGFkZV9yZWdpc3Rlcl93aWRnZXQgKEdUS19UWVBFX1RPT0xfQlVUVE9OLCBnbGFkZV9zdGFuZGFyZF9idWlsZF93aWRnZXQsCi0gCQkJICAgTlVMTCwgTlVMTCk7Ci0rI2lmbmRlZiBESVNBQkxFX0NSVUZUCi0gICAgIGdsYWRlX3JlZ2lzdGVyX3dpZGdldCAoR1RLX1RZUEVfVFJFRSwgZ2xhZGVfc3RhbmRhcmRfYnVpbGRfd2lkZ2V0LAotIAkJCSAgIE5VTEwsIE5VTEwpOwotKyNlbmRpZgotICAgICBnbGFkZV9yZWdpc3Rlcl93aWRnZXQgKEdUS19UWVBFX1RSRUVfVklFVywgZ2xhZGVfc3RhbmRhcmRfYnVpbGRfd2lkZ2V0LAotIAkJCSAgIE5VTEwsIE5VTEwpOwotICAgICBnbGFkZV9yZWdpc3Rlcl93aWRnZXQgKEdUS19UWVBFX1ZCVVRUT05fQk9YLCBnbGFkZV9zdGFuZGFyZF9idWlsZF93aWRnZXQsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZS0yLjYuNC9uby14bWwyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGliZ2xhZGUvbGliZ2xhZGUtMi42LjQvbm8teG1sMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM0YzA5Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZS0yLjYuNC9uby14bWwyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotZGlmZiAtdXJOIGxpYmdsYWRlLTIuNC4yLm9yaWcvY29uZmlndXJlLmluIGxpYmdsYWRlLTIuNC4yL2NvbmZpZ3VyZS5pbgotLS0tIGxpYmdsYWRlLTIuNC4yLm9yaWcvY29uZmlndXJlLmluCTIwMDUtMDItMTEgMTI6NDI6NTguMDAwMDAwMDAwICswMTAwCi0rKysgbGliZ2xhZGUtMi40LjIvY29uZmlndXJlLmluCTIwMDUtMDMtMjIgMDE6MjI6MDAuMDAwMDAwMDAwICswMTAwCi1AQCAtNTIsMTEgKzUyLDMzIEBACi0gQUNfUEFUSF9QUk9HKFBLR19DT05GSUcsIHBrZy1jb25maWcsIG5vKQotIAotIFBLR19DSEVDS19NT0RVTEVTKExJQkdMQURFLCBbZG5sCi0tICBsaWJ4bWwtMi4wID49IHJlcXVpcmVkX2xpYnhtbF92ZXJzaW9uIGRubAotICAgYXRrID49IHJlcXVpcmVkX2F0a192ZXJzaW9uIGRubAotICAgZ3RrKy0yLjAgPj0gcmVxdWlyZWRfZ3RrX3ZlcnNpb24gZG5sCi0gICBnbGliLTIuMCA+PSByZXF1aXJlZF9nbGliX3ZlcnNpb25dKQotIAotK2Rpc2FibGVfeG1sMj1ubwotK0FDX0FSR19XSVRIKFtsaWJ4bWwyXSwKLSsgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtbGlieG1sMl0sIFtEb24ndCB1c2UgbGlieG1sMiwgdXNlIEdsaWIncyBHTWFya3VwUGFyc2VyIGluc3RlYWRdKSwKLSsgIFtkaXNhYmxlX3htbDI9eWVzXSwKLSsgIFtkaXNhYmxlX3htbDI9bm9dKQotKwotK0FDX01TR19DSEVDS0lORyhbaWYgd2UgYXJlIHVzaW5nIGxpYnhtbDJdKQotK2lmIHRlc3QgIngkZGlzYWJsZV94bWwyIiA9PSAieG5vIjsgdGhlbgotKyAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0rICBQS0dfQ0hFQ0tfTU9EVUxFUyhYTUwyLCBsaWJ4bWwtMi4wID49IDIuNC4xMCkKLSsgIFBLR0NGR19SRVFVSVJFX0xJQlhNTDI9ImxpYnhtbC0yLjAiCi0rICBMSUJHTEFERV9DRkxBR1M9IiRMSUJHTEFERV9DRkxBR1MgJFhNTDJfQ0ZMQUdTIgotKyAgTElCR0xBREVfTElCUz0iJExJQkdMQURFX0xJQlMgJFhNTDJfTElCUyIKLStlbHNlCi0rICBMSUJHTEFERV9DRkxBR1M9IiRMSUJHTEFERV9DRkxBR1MgLURVU0VfR01BUktVUF9QQVJTRVIiCi0rICBQS0dDRkdfUkVRVUlSRV9MSUJYTUwyPSIiCi0rICBBQ19NU0dfUkVTVUxUKG5vKQotK2ZpCi0rCi0rQUNfU1VCU1QoWE1MMl9MSUJTKQotK0FDX1NVQlNUKFhNTDJfQ0ZMQUdTKQotK0FDX1NVQlNUKFBLR0NGR19SRVFVSVJFX0xJQlhNTDIpCi0rCi0gQUNfTVNHX0NIRUNLSU5HKFtmb3IgbmF0aXZlIFdpbjMyXSkKLSBjYXNlICIkaG9zdCIgaW4KLSAgICotKi1taW5ndyopCi1AQCAtMTE2LDYgKzEzOCwyMSBAQAotICAgZmkKLSBmaQotIAotK2lmIHRlc3QgIngkZGlzYWJsZV94bWwyIiA9PSAieHllcyI7IHRoZW4KLSsgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgotKyAgZWNobyAiICBZb3UgY2hvc2UgdG8gZGlzYWJsZSBsaWJ4bWwyIGFuZCB1c2UgR2xpYidzIgotKyAgZWNobyAiICBHTWFya3VwUGFyc2VyIGluc3RlYWQuIiAKLSsgIGVjaG8gIAotKyAgZWNobyAiICBQbGVhc2UgYmVhciBpbiBtaW5kIHRoYXQgdXNpbmcgbGliZ2xhZGUgd2l0aCIKLSsgIGVjaG8gIiAgR01hcmt1cFBhcnNlciBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSBvbmx5LiIKLSsgIGVjaG8KLSsgIGVjaG8gIiAgUGxlYXNlIHBvc3QgcHJvYmxlbXMgb3Igc3VjY2VzcyBzdG9yaWVzIHRvIgotKyAgZWNobyAiICB0aGUgZ2xhZGUtZGV2ZWwgbWFpbGluZyBsaXN0LiBUaGFuayB5b3UuIgotKyAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCi0rZmkKLSsKLSsKLSsKLSBHVEtfRE9DX0NIRUNLKDEuMCkKLSAKLSBkbmwgZ2V0dGV4dCBzdHVmZiAuLi4gdGhlcmUgaXMgbm8gbWVzc2FnZSBjYXRhbG9nIGZvciBsaWJnbGFkZSAtLSBsaWJnbGFkZQotZGlmZiAtdXJOIGxpYmdsYWRlLTIuNC4yLm9yaWcvZ2xhZGUvZ2xhZGUtcGFyc2VyLmMgbGliZ2xhZGUtMi40LjIvZ2xhZGUvZ2xhZGUtcGFyc2VyLmMKLS0tLSBsaWJnbGFkZS0yLjQuMi5vcmlnL2dsYWRlL2dsYWRlLXBhcnNlci5jCTIwMDQtMTEtMTEgMTE6NTY6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgbGliZ2xhZGUtMi40LjIvZ2xhZGUvZ2xhZGUtcGFyc2VyLmMJMjAwNS0wMy0yMiAwMToyMDowMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zNCw3ICszNCwxNSBAQAotICMgIGRlZmluZSBkZ2V0dGV4dChEb21haW4sIFN0cmluZykgKFN0cmluZykKLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8bGlieG1sL3BhcnNlci5oPgotKyNpZmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsjICBpbmNsdWRlIDx6bGliLmg+Ci0rI2Vsc2UKLSsjICBpbmNsdWRlIDxsaWJ4bWwvcGFyc2VyLmg+Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIFVTRV9HTUFSS1VQX1BBUlNFUgotKyMgIGRlZmluZSB4bWxDaGFyIGdjaGFyCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgImdsYWRlLXBhcnNlci5oIgotICNpbmNsdWRlICJnbGFkZS1wcml2YXRlLmgiCi1AQCAtNTA4LDcgKzUxNiw5IEBACi0gICAgIGNhc2UgUEFSU0VSX1NUQVJUOgotIAlpZiAoIXN0cmNtcChuYW1lLCAiZ2xhZGUtaW50ZXJmYWNlIikpIHsKLSAJICAgIHN0YXRlLT5zdGF0ZSA9IFBBUlNFUl9HTEFERV9JTlRFUkZBQ0U7Ci0tI2lmIDAKLSsKLSsjaWZuZGVmIFVTRV9HTUFSS1VQX1BBUlNFUgotKyAjaWYgMAotIAkgICAgLyogY2hlY2sgZm9yIGNvcnJlY3QgWE1MIG5hbWVzcGFjZSAqLwotIAkgICAgZm9yIChpID0gMDsgYXR0cnMgJiYgYXR0cnNbaV0gIT0gTlVMTDsgaSArPSAyKSB7Ci0gCQlpZiAoIXN0cmNtcChhdHRyc1tpXSwgInhtbG5zIikgJiYKLUBAIC01MTgsNyArNTI4LDkgQEAKLSAJCSAgICBnX3dhcm5pbmcoInVua25vd24gYXR0cmlidXRlIGAlcycgZm9yIDxnbGFkZS1pbnRlcmZhY2U+IiwKLSAJCQkgICAgICBhdHRyc1tpXSk7Ci0gCSAgICB9Ci0rICNlbmRpZgotICNlbmRpZgotKwotIAl9IGVsc2UgewotIAkgICAgZ193YXJuaW5nKCJFeHBlY3RlZCA8Z2xhZGUtaW50ZXJmYWNlPi4gIEdvdCA8JXM+LiIsIG5hbWUpOwotIAkgICAgc3RhdGUtPnByZXZfc3RhdGUgPSBzdGF0ZS0+c3RhdGU7Ci1AQCAtMTA2MywxMiArMTA3NSwxOCBAQAotICAgICB9Ci0gfQotIAotKyNpZm5kZWYgVVNFX0dNQVJLVVBfUEFSU0VSCi0rCi0gc3RhdGljIHhtbEVudGl0eVB0cgotIGdsYWRlX3BhcnNlcl9nZXRfZW50aXR5KEdsYWRlUGFyc2VTdGF0ZSAqc3RhdGUsIGNvbnN0IHhtbENoYXIgKm5hbWUpCi0gewotICAgICByZXR1cm4geG1sR2V0UHJlZGVmaW5lZEVudGl0eShuYW1lKTsKLSB9Ci0gCi0rI2VuZGlmIC8qICFkZWZpbmVkKFVTRV9HTUFSS1VQX1BBUlNFUikgKi8KLSsKLSsjaWZuZGVmIFVTRV9HTUFSS1VQX1BBUlNFUgotKwotIHN0YXRpYyB2b2lkCi0gZ2xhZGVfcGFyc2VyX3dhcm5pbmcoR2xhZGVQYXJzZVN0YXRlICpzdGF0ZSwgY29uc3QgY2hhciAqbXNnLCAuLi4pCi0gewotQEAgLTEwNzksNiArMTA5NywxMCBAQAotICAgICB2YV9lbmQoYXJncyk7Ci0gfQotIAotKyNlbmRpZiAvKiAhZGVmaW5lZChVU0VfR01BUktVUF9QQVJTRVIpICovCi0rCi0rI2lmbmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsKLSBzdGF0aWMgdm9pZAotIGdsYWRlX3BhcnNlcl9lcnJvcihHbGFkZVBhcnNlU3RhdGUgKnN0YXRlLCBjb25zdCBjaGFyICptc2csIC4uLikKLSB7Ci1AQCAtMTA4OSw2ICsxMTExLDEwIEBACi0gICAgIHZhX2VuZChhcmdzKTsKLSB9Ci0gCi0rI2VuZGlmIC8qICFkZWZpbmVkKFVTRV9HTUFSS1VQX1BBUlNFUikgKi8KLSsKLSsjaWZuZGVmIFVTRV9HTUFSS1VQX1BBUlNFUgotKwotIHN0YXRpYyB2b2lkCi0gZ2xhZGVfcGFyc2VyX2ZhdGFsX2Vycm9yKEdsYWRlUGFyc2VTdGF0ZSAqc3RhdGUsIGNvbnN0IGNoYXIgKm1zZywgLi4uKQotIHsKLUBAIC0xMDk5LDYgKzExMjUsMTAgQEAKLSAgICAgdmFfZW5kKGFyZ3MpOwotIH0KLSAKLSsjZW5kaWYgLyogIWRlZmluZWQoVVNFX0dNQVJLVVBfUEFSU0VSKSAqLwotKwotKyNpZm5kZWYgVVNFX0dNQVJLVVBfUEFSU0VSCi0rCi0gc3RhdGljIHhtbFNBWEhhbmRsZXIgZ2xhZGVfcGFyc2VyID0gewotICAgICAoaW50ZXJuYWxTdWJzZXRTQVhGdW5jKU5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnRlcm5hbFN1YnNldCAqLwotICAgICAoaXNTdGFuZGFsb25lU0FYRnVuYylOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpc1N0YW5kYWxvbmUgKi8KLUBAIC0xMTI2LDYgKzExNTYsODIgQEAKLSAgICAgKGZhdGFsRXJyb3JTQVhGdW5jKWdsYWRlX3BhcnNlcl9mYXRhbF9lcnJvciwgICAgICAgLyogZmF0YWxFcnJvciAqLwotIH07Ci0gCi0rI2Vsc2UgLyogVVNFX0dNQVJLVVBfUEFSU0VSICovCi0rCi0rc3RhdGljIHZvaWQKLStnbGFkZV9wYXJzZXJfc3RhcnRfZWxlbWVudF93cmFwcGVyKEdNYXJrdXBQYXJzZUNvbnRleHQgKmNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICpuYW1lLCAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAqKmF0dHJfbmFtZXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgKiphdHRyX3ZhbHVlcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgIHN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICoqZXJyb3IpCi0rewotKyAgICBndWludCBpID0gMDsKLSsKLSsgICAgLyogUGFjayBhdHRyaWJ1dGUgbmFtZXMvdmFsdWVzIGZyb20gdHdvIHNlcGFyYXRlCi0rICAgICAqICBhcnJheXMgKEdNYXJrdXBQYXJzZXIgc3R5bGUpIGludG8gb25lIHNpbmdsZQotKyAgICAgKiAgYXJyYXkgKGxpYnhtbCBTQVhQYXJzZXIgc3R5bGUpLiBUaGlzIGlzIG5vdAotKyAgICAgKiAgdmVyeSBlZmZpY2llbnQsIGJ1dCB3ZSBkbyBpdCB0byBtYWtlIHRoZQotKyAgICAgKiAgR01hcmt1cFBhcnNlciBjb2RlIGFzIGxpdHRsZSBpbnZhc2l2ZSBhcwotKyAgICAgKiAgcG9zc2libGUuICovCi0rCi0rICAgIHdoaWxlIChhdHRyX25hbWVzW2ldICE9IE5VTEwpIHsKLSsgICAgICArK2k7Ci0rICAgIH0KLSsKLSsgICAgaWYgKDEpCi0rICAgIHsKLSsgICAgICAgIGNvbnN0IGdjaGFyICphdHRyWyhpKjIpKzFdOwotKyAgICAgICAgZ3VpbnQgaiwgazsKLSsgICAgICAgCi0rICAgICAgICBmb3IgKGo9MCwgaz0wOyAgayA8IGk7ICBqICs9IDIpCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgYXR0cltqXSA9IGF0dHJfbmFtZXNba107Ci0rICAgICAgICAgICAgYXR0cltqKzFdID0gYXR0cl92YWx1ZXNba107Ci0rICAgICAgICAgICAgKytrOwotKyAgICAgICAgfQotKyAgICAgICAgYXR0cltpKjJdID0gTlVMTDsKLSsKLSsgICAgICAgIGdsYWRlX3BhcnNlcl9zdGFydF9lbGVtZW50KChHbGFkZVBhcnNlU3RhdGUqKXN0YXRlLCBuYW1lLCBhdHRyKTsKLSsgICAgfQotK30KLSsKLStzdGF0aWMgdm9pZAotK2dsYWRlX3BhcnNlcl9lbmRfZWxlbWVudF93cmFwcGVyKEdNYXJrdXBQYXJzZUNvbnRleHQgKmNvbnRleHQsIAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgKm5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgc3RhdGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICoqZXJyKQotK3sKLSsgICAgZ2xhZGVfcGFyc2VyX2VuZF9lbGVtZW50KChHbGFkZVBhcnNlU3RhdGUqKXN0YXRlLCBuYW1lKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnbGFkZV9wYXJzZXJfY2hhcmFjdGVyc193cmFwcGVyKEdNYXJrdXBQYXJzZUNvbnRleHQgKmNvbnRleHQsIAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAqY2hhcnMsIAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgICAgICAgICAgICAgICAgbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgc3RhdGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgKiplcnIpCi0rewotKyAgICBnbGFkZV9wYXJzZXJfY2hhcmFjdGVycygoR2xhZGVQYXJzZVN0YXRlKilzdGF0ZSwgY2hhcnMsIChpbnQpIGxlbik7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ2xhZGVfcGFyc2VyX2Vycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQgKmNvbnRleHQsIEdFcnJvciAqZXJyLCBncG9pbnRlciBkYXRhKQotK3sKLSsgICAgZ19sb2coIkdsYWRlLVBhcnNlciIsIEdfTE9HX0xFVkVMX0NSSVRJQ0FMLCAiJXMiLCBlcnItPm1lc3NhZ2UpOwotK30KLSsKLStzdGF0aWMgY29uc3QgR01hcmt1cFBhcnNlciAgIGdsYWRlX3BhcnNlciA9IHsKLSsgICAgZ2xhZGVfcGFyc2VyX3N0YXJ0X2VsZW1lbnRfd3JhcHBlciwgIC8qIGVsZW1lbnQgb3BlbiAgICovCi0rICAgIGdsYWRlX3BhcnNlcl9lbmRfZWxlbWVudF93cmFwcGVyLCAgICAvKiBlbGVtZW50IGNsb3NlICAqLwotKyAgICBnbGFkZV9wYXJzZXJfY2hhcmFjdGVyc193cmFwcGVyLCAgICAgLyogdGV4dCBjb250ZW50ICAgKi8KLSsgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBhc3N0aHJvdWdoICAgICovCi0rICAgIGdsYWRlX3BhcnNlcl9lcnJvciwgICAgICAgICAgICAgICAgICAvKiBwYXJzZSBlcnJvciAgICAqLwotK307Ci0rCi0rI2VuZGlmIC8qIFVTRV9HTUFSS1VQX1BBUlNFUiAqLwotKwotKwotIHN0YXRpYyB2b2lkCi0gd2lkZ2V0X2luZm9fZnJlZShHbGFkZVdpZGdldEluZm8gKmluZm8pCi0gewotQEAgLTExOTEsNiArMTI5Nyw5IEBACi0gICoKLSAgKiBSZXR1cm5zOiB0aGUgR2xhZGVJbnRlcmZhY2Ugc3RydWN0dXJlIGZvciB0aGUgWE1MIGZpbGUuCi0gICovCi0rCi0rI2lmbmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsKLSBHbGFkZUludGVyZmFjZSAqCi0gZ2xhZGVfcGFyc2VyX3BhcnNlX2ZpbGUoY29uc3QgZ2NoYXIgKmZpbGUsIGNvbnN0IGdjaGFyICpkb21haW4pCi0gewotQEAgLTEyMjIsNiArMTMzMSwzMSBAQAotICAgICByZXR1cm4gc3RhdGUuaW50ZXJmYWNlOwotIH0KLSAKLSsjZWxzZSAvKiBkZWZpbmVkKFVTRV9HTUFSS1VQX1BBUlNFUikgKi8KLSsKLStHbGFkZUludGVyZmFjZSAqCi0rZ2xhZGVfcGFyc2VyX3BhcnNlX2ZpbGUoY29uc3QgZ2NoYXIgKmZpbGUsIGNvbnN0IGdjaGFyICpkb21haW4pCi0rewotKyAgICBHbGFkZUludGVyZmFjZSAgKmludGVyZmFjZTsKLSsgICAgR0Vycm9yICAgICAgICAgICplcnIgICAgID0gTlVMTDsKLSsgICAgZ2NoYXIgICAgICAgICAgICpjb250ZW50ID0gTlVMTDsKLSsgICAgZ3NpemUgICAgICAgICAgICBjbGVuOwotKwotKyAgICBpZiAoIWdfZmlsZV9nZXRfY29udGVudHMoZmlsZSwgJmNvbnRlbnQsICZjbGVuLCAmZXJyKSkgewotKyAgICAgICAgZ193YXJuaW5nKCJjb3VsZCBub3QgbG9hZCBnbGFkZSBmaWxlOiAlcyIsIGVyci0+bWVzc2FnZSk7Ci0rICAgICAgICBnX2Vycm9yX2ZyZWUoZXJyKTsKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICAgIGludGVyZmFjZSA9IGdsYWRlX3BhcnNlcl9wYXJzZV9idWZmZXIoY29udGVudCwgKGdpbnQpIGNsZW4sIGRvbWFpbik7Ci0rCi0rICAgIGdfZnJlZShjb250ZW50KTsKLSsKLSsgICAgcmV0dXJuIGludGVyZmFjZTsKLSt9Ci0rCi0rI2VuZGlmIC8qIFVTRV9HTUFSS1VQX1BBUlNFUiAqLwotKwotIC8qKgotICAqIGdsYWRlX3BhcnNlcl9wYXJzZV9idWZmZXIKLSAgKiBAYnVmZmVyOiBhIGJ1ZmZlciBpbiBtZW1vcnkgY29udGFpbmluZyBYTUwgZGF0YS4KLUBAIC0xMjM3LDYgKzEzNzEsOSBAQAotICAqCi0gICogUmV0dXJuczogdGhlIEdsYWRlSW50ZXJmYWNlIHN0cnVjdHVyZSBmb3IgdGhlIFhNTCBidWZmZXIuCi0gICovCi0rCi0rI2lmbmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsKLSBHbGFkZUludGVyZmFjZSAqCi0gZ2xhZGVfcGFyc2VyX3BhcnNlX2J1ZmZlcihjb25zdCBnY2hhciAqYnVmZmVyLCBnaW50IGxlbiwgY29uc3QgZ2NoYXIgKmRvbWFpbikKLSB7Ci1AQCAtMTI2Myw2ICsxNDAwLDE2MSBAQAotICAgICByZXR1cm4gc3RhdGUuaW50ZXJmYWNlOwotIH0KLSAKLSsjZWxzZSAvKiBkZWZpbmVkKFVTRV9HTUFSS1VQX1BBUlNFUikgKi8KLSsKLSsKLStzdGF0aWMgR2xhZGVJbnRlcmZhY2UgKgotK2dsYWRlX3BhcnNlcl9wYXJzZV9idWZmZXJfaW50ZXJuYWwoY29uc3QgZ2NoYXIgKmJ1ZmZlciwgZ2ludCBsZW4sIGNvbnN0IGdjaGFyICpkb21haW4pCi0rewotKwlHTWFya3VwUGFyc2VDb250ZXh0ICAqY29udGV4dDsKLSsJR2xhZGVQYXJzZVN0YXRlICAgICAgIHN0YXRlID0geyAwIH07Ci0rCUdFcnJvciAgICAgICAgICAgICAgICplcnIgICA9IE5VTEw7Ci0rCi0rCXN0YXRlLmludGVyZmFjZSA9IE5VTEw7Ci0rCWlmIChkb21haW4pCi0rCQlzdGF0ZS5kb21haW4gPSBkb21haW47Ci0rCWVsc2UKLSsJCXN0YXRlLmRvbWFpbiA9IHRleHRkb21haW4oTlVMTCk7Ci0rCi0rCS8qIEZJWE1FOiBUaGlzIHN0cnN0cigpIGlzIG5vdCBzYWZlLCBhcyBpdCBpZ25vcmVzIHRoZSBsZW4KLSsJICogICAgICAgIGFyZ3VtZW50IGFuZCBhc3N1bWVzIHRoZSBidWZmZXIgaXMgTlVMLXRlcm1pbmF0ZWQgKi8KLSsJaWYgKHN0cnN0cihidWZmZXIsICI8P3htbCIpID09IE5VTEwpIHsKLSsJCWdfd2FybmluZygiTm8gWE1MIGhlYWRlciBmb3VuZCBpbiBkb2N1bWVudCEiKTsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rCWNvbnRleHQgPSBnX21hcmt1cF9wYXJzZV9jb250ZXh0X25ldygmZ2xhZGVfcGFyc2VyLCAoR01hcmt1cFBhcnNlRmxhZ3MpIDAsICZzdGF0ZSwgTlVMTCk7Ci0rCi0rCWdsYWRlX3BhcnNlcl9zdGFydF9kb2N1bWVudCgmc3RhdGUpOwotKwotKwlpZiAoIWdfbWFya3VwX3BhcnNlX2NvbnRleHRfcGFyc2UoY29udGV4dCwgYnVmZmVyLCAoZ3NzaXplKSBsZW4sICZlcnIpKSB7Ci0rCQlnX3dhcm5pbmcoImRvY3VtZW50IG5vdCB3ZWxsIGZvcm1lZDogJXMiLCBlcnItPm1lc3NhZ2UpOwotKwkJZ19lcnJvcl9mcmVlKGVycik7Ci0rCQlpZiAoc3RhdGUuaW50ZXJmYWNlKQotKwkJCWdsYWRlX2ludGVyZmFjZV9kZXN0cm95IChzdGF0ZS5pbnRlcmZhY2UpOwotKwkJcmV0dXJuIE5VTEw7Ci0rCX0KLSsKLSsJZ2xhZGVfcGFyc2VyX2VuZF9kb2N1bWVudCgmc3RhdGUpOwotKwotKwlpZiAoc3RhdGUuc3RhdGUgIT0gUEFSU0VSX0ZJTklTSCkgewotKwkJZ193YXJuaW5nKCJkaWQgbm90IGZpbmlzaCBpbiBQQVJTRVJfRklOSVNIIHN0YXRlISIpOwotKwotKwkJaWYgKHN0YXRlLmludGVyZmFjZSkKLSsJCQlnbGFkZV9pbnRlcmZhY2VfZGVzdHJveShzdGF0ZS5pbnRlcmZhY2UpOwotKwotKwkJcmV0dXJuIE5VTEw7Ci0rCX0KLSsKLSsJcmV0dXJuIHN0YXRlLmludGVyZmFjZTsKLSt9Ci0rCi0rc3RydWN0IF9nemlwX3JmYzE5NTJfaGRyCi0rewotKwlndWludDgJaWQxLCBpZDIsIGNtLCBmbGFnczsKLSsJZ3VpbnQzMiBtdGltZTsKLSsJZ3VpbnQ4ICB4ZmxhZ3M7Ci0rCWd1aW50OCAgb3M7Ci0rfTsKLSsKLStzdGF0aWMgR2xhZGVJbnRlcmZhY2UgKgotK2dsYWRlX3BhcnNlcl9wYXJzZV9nemlwcGVkX2J1ZmZlcihjb25zdCBnY2hhciAqYnVmZmVyLCBnaW50IGxlbiwgY29uc3QgZ2NoYXIgKmRvbWFpbikKLSt7Ci0rCXN0cnVjdCBfZ3ppcF9yZmMxOTUyX2hkciAqaGRyID0gKHN0cnVjdCBfZ3ppcF9yZmMxOTUyX2hkciopYnVmZmVyOwotKwlzdHJ1Y3Qgel9zdHJlYW1fcyAgICAgICAgIHpzdHJlYW07Ci0rCUdsYWRlSW50ZXJmYWNlICAgICAgICAgICAqaW50ZXJmYWNlOwotKwljb25zdCBndWludDggICAgICAgICAgICAgKmNidWY7ICAgICAgICAgICAgICAvKiBzdGFydCBvZiBjb21wcmVzc2VkIGRhdGEgKi8KLSsJZ3VpbnQ4ICAgICAgICAgICAgICAgICAgICpkZWNvbXByZXNzX2J1ZjsKLSsJZ3Vsb25nICAgICAgICAgICAgICAgICAgICBkZWNvbXByZXNzX2xlbiA9IDA7Ci0rCWdpbnQgICAgICAgICAgICAgICAgICAgICAgcmV0OwotKwotKwlnX2Fzc2VydChoZHIgIT0gTlVMTCAmJiBoZHItPmlkMSA9PSAweDFmICYmIGhkci0+aWQyID09IDB4OGIpOwotKwotKwlpZiAoaGRyLT5jbSAhPSBaX0RFRkxBVEVEKSB7Ci0rCQlnX3dhcm5pbmcoIlVua25vd24gZGVjb21wcmVzc2lvbiBtZXRob2QgJXUiLCAoZ3VpbnQpIGhkci0+Y20pOwotKwkJcmV0dXJuIE5VTEw7Ci0rCX0KLSsKLSsJLyogVW5jb21wcmVzc2VkIHNpemUgKG1vZHVsbyAyXjMyKSBpcyBsYXN0Ci0rCSAqICA0IGJ5dGVzIG9mIGd6aXBwZWQgZmlsZSwgYW5kIGxpdHRsZSBlbmRpYW4uCi0rCSAqICBTZWUgUkZDIDE5NTIgKi8KLSsJZGVjb21wcmVzc19sZW4gPSBHVUlOVDMyX0ZST01fTEUoKigoZ3VpbnQzMiopKCgoZ3VpbnQ4KilidWZmZXIpICsgbGVuIC0gNCkpKTsKLSsKLSsJLyogcGFyYW5vaWQgbW9kZTogZ2xhZGUgZmlsZXMgPiA1TUIgYXJlIHVubGlrZWx5ICovCi0rCWdfcmV0dXJuX3ZhbF9pZl9mYWlsKGRlY29tcHJlc3NfbGVuIDwgNSoxMDI0KjEwMjQsIE5VTEwpOwotKwotKwlkZWNvbXByZXNzX2J1ZiA9IGdfbWFsbG9jMChkZWNvbXByZXNzX2xlbiArIDEpOyAvKiArMSBmb3IgTlVMLXRlcm1pbmF0b3IgKi8KLSsKLSsJLyogZmluZCBzdGFydCBvZiBjb21wcmVzc2VkIGRhdGEsIHNraXBwaW5nIGhlYWRlciBzdHVmZiAqLwotKwljYnVmID0gKGd1aW50OCopYnVmZmVyICsgMTA7Ci0rCWlmIChoZHItPmZsYWdzICYgMHgwNCkgewotKwkJZ3VpbnQxNiB4bGVuID0gR1VJTlQxNl9GUk9NX0xFKCooKGd1aW50MTYqKWNidWYpKTsKLSsJCWNidWYgKz0geGxlbiArIDI7Ci0rCX0KLSsJaWYgKGhkci0+ZmxhZ3MgJiAweDA4KSB7Ci0rCQlndWludDE2IG9uYW1lbGVuID0gc3RybGVuKGNidWYpOwotKwkJY2J1ZiArPSBvbmFtZWxlbiArIDE7Ci0rCX0KLSsJaWYgKGhkci0+ZmxhZ3MgJiAweDEwKSB7Ci0rCQlndWludDE2IGNvbW1lbnRsZW4gPSBzdHJsZW4oY2J1Zik7Ci0rCQljYnVmICs9IGNvbW1lbnRsZW4gKyAxOwotKwl9Ci0rCWlmIChoZHItPmZsYWdzICYgMHgwMikKLSsJewotKwkJY2J1ZiArPSAyOyAvKiBza2lwIGhlYWRlciBDUkMxNiAqLwotKwl9Ci0rCi0rCXpzdHJlYW0ubmV4dF9pbiAgPSAodm9pZCopY2J1ZjsKLSsJenN0cmVhbS5hdmFpbF9pbiA9ICh1TG9uZ2YpIGxlbiAtICgodm9pZCopY2J1Zi0odm9pZCopYnVmZmVyKSAtIDQgLSA0ICsxOyAKLSsJenN0cmVhbS5uZXh0X291dCA9IGRlY29tcHJlc3NfYnVmOwotKwl6c3RyZWFtLmF2YWlsX291dD0gZGVjb21wcmVzc19sZW47Ci0rCXpzdHJlYW0uemFsbG9jICAgPSBaX05VTEw7Ci0rCXpzdHJlYW0uemZyZWUgICAgPSBaX05VTEw7Ci0rCXpzdHJlYW0ub3BhcXVlICAgPSBaX05VTEw7Ci0rCi0rCXJldCA9IGluZmxhdGVJbml0MigmenN0cmVhbSwgLU1BWF9XQklUUyk7Ci0rCi0rCWlmIChyZXQgIT0gWl9PSykgewotKwkJZ193YXJuaW5nKCJpbmZsYXRlSW5pdDIoKSBmYWlsZWQuIHpsaWIgZXJyb3IgY29kZTogJWQiLCByZXQpOwotKwkJZ19mcmVlKGRlY29tcHJlc3NfYnVmKTsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rCXJldCA9IGluZmxhdGUoJnpzdHJlYW0sIFpfRklOSVNIKTsKLSsKLSsJaWYgKHJldCAhPSBaX1NUUkVBTV9FTkQpIHsKLSsJCWdfd2FybmluZygiemxpYiBkZWNvbXByZXNzaW9uIGZhaWxlZC4gemxpYiBlcnJvciBjb2RlOiAlZCIsIHJldCk7Ci0rCQlnX2ZyZWUoZGVjb21wcmVzc19idWYpOwotKwkJcmV0dXJuIE5VTEw7Ci0rCX0KLSsKLSsJaW50ZXJmYWNlID0gZ2xhZGVfcGFyc2VyX3BhcnNlX2J1ZmZlcl9pbnRlcm5hbChkZWNvbXByZXNzX2J1ZiwgZGVjb21wcmVzc19sZW4sIGRvbWFpbik7Ci0rCi0rCWdfZnJlZShkZWNvbXByZXNzX2J1Zik7Ci0rCi0rCXJldHVybiBpbnRlcmZhY2U7Ci0rfQotKwotK0dsYWRlSW50ZXJmYWNlICoKLStnbGFkZV9wYXJzZXJfcGFyc2VfYnVmZmVyKGNvbnN0IGdjaGFyICpidWZmZXIsIGdpbnQgbGVuLCBjb25zdCBnY2hhciAqZG9tYWluKQotK3sKLSsJZ19yZXR1cm5fdmFsX2lmX2ZhaWwoYnVmZmVyICE9IE5VTEwsIE5VTEwpOwotKwlnX3JldHVybl92YWxfaWZfZmFpbChsZW4gPiAwLCBOVUxMKTsKLSsKLSsJLyogQ2hlY2sgaWYgYnVmZmVyIGlzIGd6aXBwZWQgKi8KLSsJaWYgKGJ1ZmZlclswXSA9PSAweDFmICYmIGJ1ZmZlclsxXSA9PSAoZ2NoYXIpMHg4YikgewotKwkJcmV0dXJuIGdsYWRlX3BhcnNlcl9wYXJzZV9nemlwcGVkX2J1ZmZlcihidWZmZXIsIGxlbiwgZG9tYWluKTsKLSsJfQotKwotKwkvKiBCdWZmZXIgaXMgY2xlYXJ0ZXh0LiAqLwotKwlyZXR1cm4gZ2xhZGVfcGFyc2VyX3BhcnNlX2J1ZmZlcl9pbnRlcm5hbChidWZmZXIsIGxlbiwgZG9tYWluKTsKLSt9Ci0rCi0rI2VuZGlmIC8qIFVTRV9HTUFSS1VQX1BBUlNFUiAqLwotKwotKwotKyNpZm5kZWYgVVNFX0dNQVJLVVBfUEFSU0VSCi0rCi0gc3RhdGljIHZvaWQKLSBkdW1wX3dpZGdldCh4bWxOb2RlICpwYXJlbnQsIEdsYWRlV2lkZ2V0SW5mbyAqaW5mbywgZ2ludCBpbmRlbnQpCi0gewotQEAgLTEzODIsNiArMTY3NCw4IEBACi0gCXhtbE5vZGVBZGRDb250ZW50KHdpZGdldCwgIiAgIik7Ci0gfQotIAotKyNlbmRpZiAvKiAhZGVmaW5lZChVU0VfR01BUktVUF9QQVJTRVIpICovCi0rCi0gLyoqCi0gICogZ2xhZGVfaW50ZXJmYWNlX2R1bXAKLSAgKiBAaW50ZXJmYWNlOiB0aGUgR2xhZGVJbnRlcmZhY2UKLUBAIC0xMzkwLDYgKzE2ODQsOSBAQAotICAqIFRoaXMgZnVuY3Rpb24gZHVtcHMgdGhlIGNvbnRlbnRzIG9mIGEgR2xhZGVJbnRlcmZhY2UgaW50byBhIGZpbGUgYXMKLSAgKiBYTUwuICBJdCBpcyBpbnRlbmRlZCBtYWlubHkgYXMgYSBkZWJ1Z2dpbmcgdG9vbC4KLSAgKi8KLSsKLSsjaWZuZGVmIFVTRV9HTUFSS1VQX1BBUlNFUgotKwotIHZvaWQKLSBnbGFkZV9pbnRlcmZhY2VfZHVtcChHbGFkZUludGVyZmFjZSAqaW50ZXJmYWNlLCBjb25zdCBnY2hhciAqZmlsZW5hbWUpCi0gewotQEAgLTE0MjgsNiArMTcyNSwxNyBAQAotICAgICB4bWxGcmVlRG9jKGRvYyk7Ci0gfQotIAotKyNlbHNlIC8qIGRlZmluZWQoVVNFX0dNQVJLVVBfUEFSU0VSKSAqLwotKwotK3ZvaWQKLStnbGFkZV9pbnRlcmZhY2VfZHVtcChHbGFkZUludGVyZmFjZSAqaW50ZXJmYWNlLCBjb25zdCBnY2hhciAqZmlsZW5hbWUpCi0rewotKyAgICBnX3dhcm5pbmcoImdsYWRlX2ludGVyZmFjZV9kdW1wKCkgaXMgb25seSBhdmFpbGFibGUgd2l0aCBsaWJ4bWwyLiIpOwotK30KLSsKLSsjZW5kaWYgLyogVVNFX0dNQVJLVVBfUEFSU0VSICovCi0rCi0rCi0gI2lmIDAKLSBpbnQKLSBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotZGlmZiAtdXJOIGxpYmdsYWRlLTIuNC4yLm9yaWcvbGliZ2xhZGUtMi4wLnBjLmluIGxpYmdsYWRlLTIuNC4yL2xpYmdsYWRlLTIuMC5wYy5pbgotLS0tIGxpYmdsYWRlLTIuNC4yLm9yaWcvbGliZ2xhZGUtMi4wLnBjLmluCTIwMDEtMTItMTIgMTU6Mjg6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgbGliZ2xhZGUtMi40LjIvbGliZ2xhZGUtMi4wLnBjLmluCTIwMDUtMDMtMjIgMDE6MjA6MDAuMDAwMDAwMDAwICswMTAwCi1AQCAtMTEsNyArMTEsNyBAQAotIE5hbWU6IExpYmdsYWRlCi0gRGVzY3JpcHRpb246IGEgbGlicmFyeSBmb3IgZHluYW1pY2FsbHkgbG9hZGluZyBHTEFERSBpbnRlcmZhY2UgZmlsZXMKLSBWZXJzaW9uOiBAVkVSU0lPTkAKLS1SZXF1aXJlczogZ3RrKy0yLjAgbGlieG1sLTIuMAotK1JlcXVpcmVzOiBndGsrLTIuMCBAUEtHQ0ZHX1JFUVVJUkVfTElCWE1MMkAKLSBMaWJzOiAtTCR7bGliZGlyfSAtbGdsYWRlLTIuMAotIENmbGFnczogLUkke2luY2x1ZGVkaXJ9L2xpYmdsYWRlLTIuMAotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGliZ2xhZGUvbGliZ2xhZGUtMi42LjQvcHl0aG9uX2Vudmlyb25tZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGliZ2xhZGUvbGliZ2xhZGUtMi42LjQvcHl0aG9uX2Vudmlyb25tZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWIyZWM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlLTIuNi40L3B5dGhvbl9lbnZpcm9ubWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVVzaW5nIEBQWVRIT05AIGZvciB0aGlzIHBhdGggd291bGQgcmVzdWx0IGluIHRoZSBidWlsZCBzeXN0ZW0gcHl0aG9uIGJlaW5nIAotcmVmZXJyZWQgdG8uIEluc3RlYWQgd2Ugd2FudCB0byBsb2NhdGUgcHl0aG9uIGZyb20gdGhlIGVudmlyb25tZW50LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLWRpZmYgLXJ1TiBsaWJnbGFkZS0yLjYuNC1vcmlnLy9saWJnbGFkZS1jb252ZXJ0LmluIGxpYmdsYWRlLTIuNi40L2xpYmdsYWRlLWNvbnZlcnQuaW4KLS0tLSBsaWJnbGFkZS0yLjYuNC1vcmlnLy9saWJnbGFkZS1jb252ZXJ0LmluCTIwMTEtMDktMjIgMTA6MTg6MjguOTkxMTY0MDAzICswODAwCi0rKysgbGliZ2xhZGUtMi42LjQvbGliZ2xhZGUtY29udmVydC5pbgkyMDExLTA5LTIyIDEwOjE4OjU1LjQzMTE2NDAwMyArMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyFAUFlUSE9OQAotKyMhL3Vzci9iaW4vZW52IHB5dGhvbgotICMgLSotIG1vZGU6IHB5dGhvbiAtKi0KLSAKLSAjIHllcywgdGhpcyByZXF1aXJlcyBweXRob24gMi54IGFuZCBhbiBYTUwgcGFyc2VyIG1vZHVsZSAoZWcuIFB5RXhwYXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZV8yLjYuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlXzIuNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGI5ZjhhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlXzIuNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJSdW50aW1lIHN1cHBvcnQgZm9yIHRoZSBHVEsrIGludGVyZmFjZSBidWlsZGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYnJhcnkuZ25vbWUub3JnL2RldmVsL2xpYmdsYWRlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbGFkZS9nbGFkZS5oO2VuZGxpbmU9MjI7bWQ1PWEwNGY0NjFjOTY0YmE0YjU3YTE3MmQxZmJjZDhmOGZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsYWRlL2dsYWRlLWd0ay5jO2VuZGxpbmU9MjI7bWQ1PTc2NmY5OTM0MzNlMjY0MmZlYzg3OTM2ZDMxOTk5MGZmIgotCi1TRUNUSU9OID0gImxpYnMiCi1QUiA9ICJyNSIKLURFUEVORFMgPSAiemxpYiBnZGstcGl4YnVmIGd0aysiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEsyRElTVFJPRkVBVFVSRVN9IgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly9nbGFkZS1jcnVmdC5wYXRjaCBcCi0gICAgZmlsZTovL25vLXhtbDIucGF0Y2ggXAotICAgIGZpbGU6Ly9weXRob25fZW52aXJvbm1lbnQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtZGVwcmVjYXRlZC1HTk9NRV9DT01NT05fSU5JVC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImQxNzc2YjQwZjRlMTY2YjVlOWMxMDdmMWM4ZmU0MTM5IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNjQzNjFlNzY0NzgzOWQzNmVkODMzNmQ5OTJmZDIxMGQzZTgxMzk4ODIyNjliZWQ0N2RjNDY3NDk4MDE2NWRlYyIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlieG1sMiAtLWRpc2FibGUtZ3RrLWRvYyIKLQotQ0ZMQUdTICs9ICItbHogLWxnbW9kdWxlLTIuMCIKLQotUEFDS0FHRVMgKz0gIiAke1BOfS1kYXRhIgotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKLUZJTEVTXyR7UE59LWRhdGEgPSAiJHtkYXRhZGlyfS94bWwvbGliZ2xhZGUvZ2xhZGUtMi4wLmR0ZCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2xpYmdsYWRlLWNvbnZlcnQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJ1bmlxdWUvbGlidW5pcXVlXzEuMS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGlidW5pcXVlL2xpYnVuaXF1ZV8xLjEuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTEzM2NjYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJ1bmlxdWUvbGlidW5pcXVlXzEuMS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzdXBwb3J0aW5nIHNpbmdsZSBpbnN0YW5jZSBHVEsrIGFwcGxpY2F0aW9ucyIKLURFU0NSSVBUSU9OID0gIlVuaXF1ZSBpcyBhIGxpYnJhcnkgZm9yIHdyaXRpbmcgc2luZ2xlIGluc3RhbmNlIEdUSysgYXBwbGljYXRpb25zLiBJZiB5b3UgbGF1bmNoIGEgc2luZ2xlIGluc3RhbmNlIGFwcGxpY2F0aW9uIHR3aWNlLCB0aGUgc2Vjb25kIGluc3RhbmNlIHdpbGwgZWl0aGVyIGp1c3QgcXVpdCBvciB3aWxsIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSBydW5uaW5nIGluc3RhbmNlLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvQXR0aWMvTGliVW5pcXVlIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9bGlidW5pcXVlIgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJ1bmlxdWUvMS4xL2xpYnVuaXF1ZS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9mb3JfY29tcGlsZV93aXRoX2djYy00LjYuMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ub2NvbnN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1aWxkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tdXNlLUxJQlRPT0wtaW5zdGVhZC1vZi1oYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3QtdW5pcXVlLUFkZC1mb3JtYXQtcXVhbGlmaWVyLXMtZm9yLXN0cmluZy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc5NTU3NjllZjMxZjFiYzRmODM0NDZkYmIzNjI1ZTZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU1YzgwNDFjZWY4ZTMzYzU1NzMyZjA2YTI5MjM4MWNiMzQ1ZGI5NDZjZjc5MmE0YWUxOGFhNWM2NmNkZDRmYmIiCi0KLVBSID0gInI3IgotCi1ERVBFTkRTID0gImRidXMtZ2xpYi1uYXRpdmUgZ2xpYi0yLjAgZ3RrKyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImRidXMiCi1QQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyBkYnVzLWdsaWIiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKLQotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZGlyZWN0ZmIvZGlyZWN0ZmIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZGlyZWN0ZmIvZGlyZWN0ZmIuaW5jCmluZGV4IGJmYmQ5YzIuLmJkNjZhMjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi5pbmMKQEAgLTQxLDE2ICs0MSwxNiBAQAogUEFDS0FHRUNPTkZJR1t0c2xpYl0gPSAiLS13aXRoLWlucHV0ZHJpdmVycz10c2xpYiwsdHNsaWIiCiBQQUNLQUdFQ09ORklHW2xpbnV4aW5wdXRdID0gIi0td2l0aC1pbnB1dGRyaXZlcnM9bGludXhpbnB1dCwsIgogUEFDS0FHRUNPTkZJR1tub2lucHV0XSA9ICItLXdpdGgtaW5wdXRkcml2ZXJzPW5vbmUsLCIKK1BBQ0tBR0VDT05GSUdbbWVzYV0gPSAiLS1lbmFibGUtbWVzYSwtLWRpc2FibGUtbWVzYSx2aXJ0dWFsL21lc2EsIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHhzZXJ2ZXIteG9yZywiCiAKIEVYVFJBX09FQ09ORiA9ICJcCiAgIC0td2l0aC1nZnhkcml2ZXJzPW5vbmUgXAogICAtLWVuYWJsZS1mcmVldHlwZT15ZXMgXAogICAtLWVuYWJsZS16bGliIFwKICAgLS1kaXNhYmxlLWltbGliMiBcCi0gIC0tZGlzYWJsZS1tZXNhIFwKICAgLS1kaXNhYmxlLXNkbCBcCiAgIC0tZGlzYWJsZS12bmMgXAotICAtLWRpc2FibGUteDExIFwKICAgLS1kaXNhYmxlLXgxMXZkcGF1IFwKICAgLS1kaXNhYmxlLXhpbmUtdmRwYXUgXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmQ0ZGJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSA4MDE3OWMyOTdhYmI5ZGUyODI5YmQwMjM1NjI1NzI0MWRkNDE0ZDcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgorRGF0ZTogTW9uLCAxOCBEZWMgMjAxNyAxNjoyNTo1NCArMDkwMAorU3ViamVjdDogW1BBVENIXSBEbyBub3Qgc2V0IFBZVEhPTl9JTlNUQUxMX0RJUiBieSBydW5uaW5nIHB5dGhvbi4KKworU2lnbmVkLW9mZi1ieTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCA3YzY2YjM5Li4xNDg5ZWY2IDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMTksNyArMTksNyBAQCBlbHNlKE5PVCBTUEhJTlhfRVhFQ1VUQUJMRS1OT1RGT1VORCkKKyAJbWVzc2FnZShTVEFUVVMgIkNvdWxkIE5PVCBmaW5kIHNwaGlueC1idWlsZC4iKQorIGVuZGlmKE5PVCBTUEhJTlhfRVhFQ1VUQUJMRS1OT1RGT1VORCkKKyAKKy1leGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBnZXRfcHl0aG9uX2xpYjsgcHJpbnQoZ2V0X3B5dGhvbl9saWIoKSwgZW5kPScnKSIgT1VUUFVUX1ZBUklBQkxFIFBZVEhPTl9JTlNUQUxMX0RJUikKKysjZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X3B5dGhvbl9saWI7IHByaW50KGdldF9weXRob25fbGliKCksIGVuZD0nJykiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCisgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIlxuJCIgIiIgJHtQWVRIT05fSU5TVEFMTF9ESVJ9ICIke1BZVEhPTl9JTlNUQUxMX0RJUn0iKQorIGV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICJpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKCclcy4lcycgJSAoc3lzLnZlcnNpb25faW5mby5tYWpvciwgc3lzLnZlcnNpb25faW5mby5taW5vcikpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX01BSk9SX0RPVF9NSU5PUl9WRVJTSU9OKQorIG1lc3NhZ2UoU1RBVFVTICJQeXRob24gaW5zdGFsbCBkaXIgaXMgJHtQWVRIT05fSU5TVEFMTF9ESVJ9IikKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzViNmI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSAxNWQwYWZjZmE0ODY4YjdiMDcyYjM0MzRiYWMwMDY0NjE3ZDYxZjk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgorRGF0ZTogVHVlLCAxOSBEZWMgMjAxNyAxNDo1MzoxNCArMDkwMAorU3ViamVjdDogW1BBVENIXSBSdW4gcHl0aG9uIHNjcmlwdHMgdXNpbmcgZW52CisKK090aGVyd2lzZSB0aGUgYnVpbGQgdG9vbHMgaGFyZGNvZGUgdGhlIHB5dGhvbiBwYXRoIGludG8gdGhlbS4KKworU2lnbmVkLW9mZi1ieTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgorLS0tCisgYmluL2RuZmRyYWdvcmEgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9iaW4vZG5mZHJhZ29yYSBiL2Jpbi9kbmZkcmFnb3JhCitpbmRleCBiOGUwNTUwLi5jZDgwZjdmIDEwMDc1NQorLS0tIGEvYmluL2RuZmRyYWdvcmEKKysrKyBiL2Jpbi9kbmZkcmFnb3JhCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL3B5dGhvbjMKKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyB2aW06IHNldCBldCB0cz00IHN3PTQ6CisgIyAgICBDb3B5cmlnaHQgMjAxNi0yMDE3IEFuZ2VsbyBOYXNlbGxpIDxhbmFzZWxsaUBsaW51eC5pdD4KKyAjCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLVRvLWZpeC1lcnJvci13aGVuLWRvX3BhY2thZ2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1Uby1maXgtZXJyb3Itd2hlbi1kb19wYWNrYWdlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwY2UxZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1Uby1maXgtZXJyb3Itd2hlbi1kb19wYWNrYWdlLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNTZkOWI4MzhiMzQ3NTcyOWQ3ZWQ5YzZjMTU2ZDcyYzI4OTQzYzJiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExlaSBNYW9odWkgPGxlaW1hb2h1aUBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IFR1ZSwgMTkgRGVjIDIwMTcgMTE6MTU6MjkgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gVG8gZml4IGVycm9yIHdoZW4gZG9fcGFja2FnZQorCitRQSBJc3N1ZTogbmF0aXZlc2RrLWRuZmRyYWdvcmE6IEZpbGVzL2RpcmVjdG9yaWVzIHdlcmUgaW5zdGFsbGVkIGJ1dCBub3Qgc2hpcHBlZCBpbiBhbnkgcGFja2FnZToKKyAgL2V0YworICAvZXRjL2RuZmRyYWdvcmEKKyAgL2V0Yy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEueWFtbAorCitTaWduZWQtb2ZmLWJ5OiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+CistLS0KKyBDTWFrZUxpc3RzLnR4dCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDdjNjZiMzkuLmE1NjU5ZjcgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC01Miw3ICs1Miw3IEBAIGVuZGlmKEVOQUJMRV9DT01QUykKKyBzZXQoQ01BS0VfSU5TVEFMTF9CSU5ESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2JpbiIpCisgc2V0KENNQUtFX0lOU1RBTExfREFUQVJPT1RESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L3NoYXJlIikKKyBzZXQoQ01BS0VfSU5TVEFMTF9MT0NBTEVESVIgIiR7Q01BS0VfSU5TVEFMTF9EQVRBUk9PVERJUn0vbG9jYWxlIikKKy1zZXQoQ01BS0VfSU5TVEFMTF9GVUxMX1NZU0NPTkZESVIgIi9ldGMiKQorK3NldChDTUFLRV9JTlNUQUxMX0ZVTExfU1lTQ09ORkRJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vLi4vZXRjIikKKyAKKyAjIENvbmZpZ3VyZSBmaWxlcworIGNvbmZpZ3VyZV9maWxlKCR7Q01BS0VfU09VUkNFX0RJUn0vZXRjL2RuZmRyYWdvcmEueWFtbC5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L2V0Yy9kbmZkcmFnb3JhLnlhbWwgQE9OTFkpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLWRpc2FibGUtYnVpbGQtbWFucGFnZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1kaXNhYmxlLWJ1aWxkLW1hbnBhZ2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YmI2MzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1kaXNhYmxlLWJ1aWxkLW1hbnBhZ2VzLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gMmU2YTBkYjI0YmUzNzNhNWI3NzQxZGM1YTBkMzIyYTI4Mzg5ZmJmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorRGF0ZTogVGh1LCAyMyBOb3YgMjAxNyAxNjozNTo0NCArMDkwMAorU3ViamVjdDogW1BBVENIXSBkaXNhYmxlIGJ1aWxkIG1hbnBhZ2VzLgorCitTaWduZWQtb2ZmLWJ5OiBaaGVuZyBSdW9xaW4gPHpoZW5ncnEuZm5zdEBjbi5mdWppdHN1LmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0IHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDdjNjZiMzkuLmZjMzI3NTAgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC02NSw3ICs2NSw2IEBAIGVuZGlmKEdFVFRFWFRfRk9VTkQpCisgCisgIyBCdWlsZCBhbmQgaW5zdGFsbCB0aGUgbWFuLXBhZ2VzCisgaWYoTk9UIFNQSElOWF9FWEVDVVRBQkxFLU5PVEZPVU5EKQorLQlhZGRfc3ViZGlyZWN0b3J5KG1hbikKKyBlbmRpZihOT1QgU1BISU5YX0VYRUNVVEFCTEUtTk9URk9VTkQpCisgCisgIyBJbnN0YWxsaW5nIGFwcGxpY2F0aW9uIGNvZGUKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYV9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNkMWVmYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYV9naXQuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJkbmZkcmFnb3JhIGlzIGEgRE5GIGZyb250ZW5kLCBiYXNlZCBvbiBycG1kcmFnb3JhIGZyb20gTWFnZWlhIChvcmlnaW5hbGx5IHJwbWRyYWtlKSBQZXJsIGNvZGUuIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tYW5hdG9vbHMvZG5mZHJhZ29yYS5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kaXNhYmxlLWJ1aWxkLW1hbnBhZ2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Uby1maXgtZXJyb3Itd2hlbi1kb19wYWNrYWdlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaCBcCisgICAgICAgICAgICIKKworUFYgPSAiMS4wLjErZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiNGZlZjRjZTg4OWI4ZTRmYTAzMTkxZDQxNGY2M2JmZDUwNzk2MTUyYSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBnZXR0ZXh0IHBrZ2NvbmZpZyBweXRob24zLWRpciBweXRob24zbmF0aXZlIGRpc3R1dGlsczMtYmFzZQorCitERVBFTkRTICs9ICJkbmYgcHl0aG9uMyAiCisjREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgKz0gIm5hdGl2ZXNkay1weXRob24zIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiIHB5dGhvbjMtY29yZSBsaWJ5dWkgbGlieXVpLW5jdXJzZXMgIgorCisjIG1hbnBhZ2VzIGdlbmVyYXRpb24gcmVxdWlyZXMgaHR0cDovL3d3dy5zcGhpbngtZG9jLm9yZy8KK0VYVFJBX09FQ01BS0UgPSAiIC1EV0lUSF9NQU49T0ZGIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCisKK0ZJTEVTXyR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyAke2RhdGFkaXJ9LyAke2JpbmRpcn0vICR7c3lzY29uZmRpcn0vZG5mZHJhZ29yYSAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mb250Zm9yZ2UvZm9udGZvcmdlXzIwMTcwNzMxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGZvcmdlL2ZvbnRmb3JnZV8yMDE3MDczMS5iYgppbmRleCBkOWYwODY3Li40ODFmZWRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mb250Zm9yZ2UvZm9udGZvcmdlXzIwMTcwNzMxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxNzA3MzEuYmIKQEAgLTYsNyArNiw3IEBACiAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTNmOTIyYjQyZWQwMDMzZmEwZmQ0Y2QzMjY4ZjY0MjljIFwKICIKIAotREVQRU5EUyA9ICJnbGliLTIuMCBwYW5nbyBnaWZsaWIgdGlmZiBsaWJ4bWwyIGpwZWcgcHl0aG9uIGxpYnRvb2wgdXRoYXNoIGdudWxpYiIKK0RFUEVORFMgPSAiZ2xpYi0yLjAgcGFuZ28gZ2lmbGliIHRpZmYgbGlieG1sMiBqcGVnIHB5dGhvbiBsaWJ0b29sIHV0aGFzaCBnbnVsaWIgZ2V0dGV4dC1uYXRpdmUiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGxpYnhpIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9ubmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjayBnZXR0ZXh0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mdndtL2Z2d20vMDAwMS1GaXgtY29tcGlsYXRpb24tZm9yLWRpc2FibGVkLWdub21lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnZ3bS9mdndtLzAwMDEtRml4LWNvbXBpbGF0aW9uLWZvci1kaXNhYmxlZC1nbm9tZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTc2NDc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnZ3bS9mdndtLzAwMDEtRml4LWNvbXBpbGF0aW9uLWZvci1kaXNhYmxlZC1nbm9tZS5wYXRjaApAQCAtMCwwICsxLDY5IEBACitGcm9tIDYwYzE3ZWI0OTEyMWJmMmFhNDg1YWNkMzA3NTBiMmZjNmM4ZWI2MWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXJtbyBKYWFra29sYSA8amFybW8uamFha2tvbGFAdmluY2l0LmZpPgorRGF0ZTogTW9uLCAxOSBKdW4gMjAxNyAxNjo0MTozNiArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggY29tcGlsYXRpb24gZm9yIEhlbGl4LgorCitHbm9tZSBzdXBwb3J0LCBpbmNsdWRpbmcgR05PTUVfSU5JVF9IT09LLCBoYXMgYmVlbiByZW1vdmVkLCBidXQgaXQgd2FzCitzdGlsbCBiZWluZyBjYWxsZWQuCisKK0NPTVBBVF9PTERfS0VZU1lNREVGIGlzIGEgY2hlY2sgZm9yIGEgbGVnYWN5IHN5c3RlbSwgd2hpY2ggb3VyIHN5c3RlbQorbW9zdCBkZWZpbml0ZWx5IGlzIG5vdC4gIEl0IGlzIGFjY29tcGxpc2hlZCBieSB0cnlpbmcgdG8gZXhlY3V0ZQorYSBwcm9ncmFtLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdoZW4gY3Jvc3MgY29tcGlsaW5nLgorCitUaGUgZnZ3bSgxKSBtYW4gcGFnZSBpcyBjcmVhdGVkIGZyb20gRG9jYm9vayBYTUwgd2hpY2ggaXMgc2V0IGZvcgorYSBXaW5kb3dzIGNvZGUgcGFnZSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgd2hlbiBjb21waWxpbmcuICBFYXNpZXN0IGlzCit0byBqdXN0IG5vdCBjcmVhdGUgdGhlIG1hbiBwYWdlIGFzIHRob3NlIGFyZSBub3QgbmVlZGVkIG9uIHRoZSBtb25pdG9yLgorCitVcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogSmFybW8gSmFha2tvbGEgPGphcm1vLmphYWtrb2xhQHZpbmNpdC5maT4KK1NpZ25lZC1vZmYtYnk6IFJpa3UgSMOkbcOkbMOkaW5lbiA8cmlrdS5oYW1hbGFpbmVuQGdlLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFNlYmFzdGlhbiBSZWljaGVsIDxzZWJhc3RpYW4ucmVpY2hlbEBjb2xsYWJvcmEuY28udWs+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICB8IDIwICsrKystLS0tLS0tLS0tLS0tLS0tCisgZG9jL2Z2d20vTWFrZWZpbGUuYW0gfCAgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNDhjZTI2NC4uZmFiN2I0NCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTQxMywyMyArMTQxMyw3IEBAIGVsc2UKKyAgIHByb2JsZW1fZ2RraW1saWI9IjogRmFpbGVkIG9uIGdkay1pbWxpYiwgc2VlIGNvbmZpZy5sb2ciCisgZmkKKyAKKy1HTk9NRV9JTklUX0hPT0sKKy0KKy0jIFVuZm9ydHVuYXRlbHkgd2UgaGF2ZSAyIGdub21lIHN1cHBvcnRzOiBXTSBoaW50cyBhbmQgZ25vbWUgbGlicy4KKy0jIFRoZSAkd2l0aF9nbm9tZWhpbnRzIGJlbG93IHJlZmVycyB0byB0aGUgZmlyc3QsIG5vdCBHTk9NRV9JTklUX0hPT0suCistaWYgdGVzdCAhIHgiJGVuYWJsZV9nbm9tZV9oaW50cyIgPSB4bm87IHRoZW4KKy0gIHdpdGhfZ25vbWVoaW50cz15ZXMKKy0gIHByb2JsZW1fZ25vbWVoaW50cz0iIgorLWVsc2UKKy0gIHdpdGhfZ25vbWVoaW50cz1ubworLSAgcHJvYmxlbV9nbm9tZWhpbnRzPSI6IEV4cGxpY2l0bHkgZGlzYWJsZWQiCistZmkKKy0KKyAjIERlZmluZSBzb21lIGNvbXBhdGliaWxpdHkgbWFjcm9zIG5lZWRlZCBmb3IgY29uZmlnLmguCistbWdfREVGSU5FX0lGX05PVChbI2luY2x1ZGUgPFgxMS9rZXlzeW0uaD5dLAorLSAgW2RlZmluZWQgWEtfUGFnZV9VcCAmJiBkZWZpbmVkIFhLX1BhZ2VfRG93bl0sCistICBbQ09NUEFUX09MRF9LRVlTWU1ERUZdLCBbJFhfQ0ZMQUdTXSwKKy0gIFtPbGQgQUlYIHN5c3RlbXMgKDMuMi41KSBkb24ndCBkZWZpbmUgc29tZSBjb21tb24ga2V5c3ltcy5dKQorIEFIX1ZFUkJBVElNKFtfQ09NUEFUX09MRF9LRVlTWU1ERUZdLAorIFsjaWZkZWYgQ09NUEFUX09MRF9LRVlTWU1ERUYKKyAjICBkZWZpbmUgWEtfUGFnZV9VcCAgIFhLX1ByaW9yCitkaWZmIC0tZ2l0IGEvZG9jL2Z2d20vTWFrZWZpbGUuYW0gYi9kb2MvZnZ3bS9NYWtlZmlsZS5hbQoraW5kZXggY2RkYjEwMi4uZmYwMDE0OSAxMDA3NTUKKy0tLSBhL2RvYy9mdndtL01ha2VmaWxlLmFtCisrKysgYi9kb2MvZnZ3bS9NYWtlZmlsZS5hbQorQEAgLTEwLDcgKzEwLDcgQEAgWFNMX1BST0ZJTEUgPSAkKHNyY2RpcikvLi4vZG9jYm9vay14c2wvcHJvZmlsaW5nL3Byb2ZpbGUueHNsCisgSFRNTF9GSUxFUyA9IGZ2d20ubWFuLmh0bWwKKyBYTUxfRklMRVMgPSBARE9DX1NFQ1RJT05TX1hNTF9QQVRIQAorIEVYVFJBX0RJU1QgPSBARE9DX1NFQ1RJT05TX1hNTEAgJChtYW5fTUFOUykgc2VjdGlvbnMKKy1tYW5fTUFOUyA9IGZ2d20uMQorK21hbl9NQU5TID0KKyAKKyBpZiBGVldNX0JVSUxEX0hUTUxET0MKKyBkb2NfREFUQSA9ICQoSFRNTF9GSUxFUykKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnZ3bS9mdndtLzAwMDItQXZvaWQtYWJzb2x1dGUtc3ltbGlua3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mdndtL2Z2d20vMDAwMi1Bdm9pZC1hYnNvbHV0ZS1zeW1saW5rcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTZjYzg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnZ3bS9mdndtLzAwMDItQXZvaWQtYWJzb2x1dGUtc3ltbGlua3MucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbTogU2ViYXN0aWFuIFJlaWNoZWwgPHNlYmFzdGlhbi5yZWljaGVsQGNvbGxhYm9yYS5jby51az4KK0RhdGU6IFR1ZSwgMjkgQXVmIDIwMTcgMTY6MDg6NDIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQXZvaWQgYWJzb2x1dGUgc3ltbGlua3MKKworQXZvaWQgdXNhZ2Ugb2YgYWJzb2x1dGUgc3ltbGlua3MsIHdoaWNoIGJyZWFrcyB5b2N0byBidWlsZHMKK3NpbmNlIHB5cm8uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogU2ViYXN0aWFuIFJlaWNoZWwgPHNlYmFzdGlhbi5yZWljaGVsQGNvbGxhYm9yYS5jby51az4KKworZGlmZiAtLWdpdCBhL2RlZmF1bHQtY29uZmlnL01ha2VmaWxlLmFtIGIvZGVmYXVsdC1jb25maWcvTWFrZWZpbGUuYW0KK2luZGV4IDVlMTZkMDk1YTEzNy4uNTQwNDE0NWE3NDJjIDEwMDY0NAorLS0tIGEvZGVmYXVsdC1jb25maWcvTWFrZWZpbGUuYW0KKysrKyBiL2RlZmF1bHQtY29uZmlnL01ha2VmaWxlLmFtCitAQCAtMTcsOSArMTcsOSBAQCBFWFRSQV9ESVNUICA9IGltYWdlcyBcCisgCisgaW5zdGFsbC1kYXRhLWhvb2s6CisgCWNwIC1yICQoc3JjZGlyKS9pbWFnZXMgJChpbnN0X2xvY2F0aW9uKQorLQlsbiAtc2YgJChpbnN0X2xvY2F0aW9uKS9GdndtU2NyaXB0LURhdGVUaW1lICQoaW5zdF9sb2NhdGlvbikvLi4KKy0JbG4gLXNmICQoaW5zdF9sb2NhdGlvbikvRnZ3bVNjcmlwdC1Db25maXJtUXVpdCAkKGluc3RfbG9jYXRpb24pLy4uCistCWxuIC1zZiAkKGluc3RfbG9jYXRpb24pL0Z2d21TY3JpcHQtQ29uZmlybUNvcHlDb25maWcgJChpbnN0X2xvY2F0aW9uKS8uLgorKwlsbiAtc2YgZGVmYXVsdC1jb25maWcvRnZ3bVNjcmlwdC1EYXRlVGltZSAkKGluc3RfbG9jYXRpb24pLy4uCisrCWxuIC1zZiBkZWZhdWx0LWNvbmZpZy9GdndtU2NyaXB0LUNvbmZpcm1RdWl0ICQoaW5zdF9sb2NhdGlvbikvLi4KKysJbG4gLXNmIGRlZmF1bHQtY29uZmlnL0Z2d21TY3JpcHQtQ29uZmlybUNvcHlDb25maWcgJChpbnN0X2xvY2F0aW9uKS8uLgorIAorIHVuaW5zdGFsbC1ob29rOgorIAlybSAtZnIgJChERVNURElSKS8kKGNvbmZpZ2RpcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2Z2d20vZnZ3bV8yLjYuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2Z2d20vZnZ3bV8yLjYuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjg1MWJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnZ3bS9mdndtXzIuNi43LmJiCkBAIC0wLDAgKzEsMTE0IEBACitTVU1NQVJZID0gIkYgVmlydHVhbCBXaW5kb3cgTWFuYWdlciAiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZ2d20ub3JnLyIKK1NFQ1RJT04gPSAieDExL3dtIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM2M2ZiY2ZiNTkxMjQ2ODlhZjcyYzkxNDU2MGVhZjZlIgorCitERVBFTkRTID0gIiBcCisgICAgYmlzb24tbmF0aXZlIFwKKyAgICBmbGV4LW5hdGl2ZSBcCisgICAgZnJlZXR5cGUtbmF0aXZlIFwKKyAgICBnZXR0ZXh0LW5hdGl2ZSBcCisgICAgbGlieHNsdC1uYXRpdmUgXAorICAgIGZvbnRjb25maWcgXAorICAgIGxpYmljZSBcCisgICAgbGlicG5nIFwKKyAgICBsaWJyc3ZnIFwKKyAgICBsaWJzbSBcCisgICAgbGlieGF1IFwKKyAgICBsaWJ4Y2IgXAorICAgIGxpYnhjdXJzb3IgXAorICAgIGxpYnhkbWNwIFwKKyAgICBsaWJ4ZXh0IFwKKyAgICBsaWJ4Zml4ZXMgXAorICAgIGxpYnhmdCBcCisgICAgbGlieGluZXJhbWEgXAorICAgIGxpYnhtbDIgXAorICAgIGxpYnhyZW5kZXIgXAorICAgIGxpYnh0IFwKKyAgICB2aXJ0dWFsL2xpYngxMSBcCisgICAgeHJhbmRyIFwKKyAgICB6bGliIFwKKyIKKworUFYgPSAiMi42LjcrZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL2Z2d21vcmcvZnZ3bS5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgIGZpbGU6Ly8wMDAxLUZpeC1jb21waWxhdGlvbi1mb3ItZGlzYWJsZWQtZ25vbWUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLUF2b2lkLWFic29sdXRlLXN5bWxpbmtzLnBhdGNoIFwKKyIKKworU1JDUkVWID0gIjU5N2E0ZTI5NmRhNGYyMWU3MWExN2ZhY2FiMjk3ZTAxNmEzYTgwYTgiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcgcHl0aG9ubmF0aXZlIHBlcmxuYXRpdmUgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisjIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIngtd2luZG93LW1hbmFnZXIiCitBTFRFUk5BVElWRV9UQVJHRVRbeC13aW5kb3ctbWFuYWdlcl0gPSAiJHtiaW5kaXJ9L2Z2d20iCitBTFRFUk5BVElWRV9QUklPUklUWVt4LXdpbmRvdy1tYW5hZ2VyXSA9ICIyMCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLWJpZGkgXAorICAgIC0tZGlzYWJsZS1mb250Y29uZmlndGVzdCBcCisgICAgLS1kaXNhYmxlLWZyZWV0eXBldGVzdCBcCisgICAgLS1kaXNhYmxlLWh0bWxkb2MgXAorICAgIC0tZGlzYWJsZS1pbWxpYnRlc3QgXAorICAgIC0tZGlzYWJsZS1tYW5kb2MgXAorICAgIC0tZGlzYWJsZS1ubHMgXAorICAgIC0tZGlzYWJsZS1wZXJsbGliIFwKKyAgICAtLWRpc2FibGUtcnN2ZyBcCisgICAgLS1kaXNhYmxlLXNoYXBlIFwKKyAgICAtLWRpc2FibGUtc20gXAorICAgIC0tZGlzYWJsZS14ZnR0ZXN0IFwKKyAgICAtLXdpdGgtaW1saWItZXhlYy1wcmVmaXg9L25vbmV4aXN0ZW50IFwKKyAgICAtLXdpdGgtaW1saWItcHJlZml4PS9ub25leGlzdGVudCBcCisgICAgLS13aXRob3V0LW5jdXJzZXMtbGlicmFyeSBcCisgICAgLS13aXRob3V0LXJlYWRsaW5lLWxpYnJhcnkgXAorICAgIC0td2l0aG91dC1ycGxheS1saWJyYXJ5IFwKKyAgICAtLXdpdGhvdXQtc3Ryb2tlLWxpYnJhcnkgXAorICAgIC0td2l0aG91dC10ZXJtY2FwLWxpYnJhcnkgXAorICAgIC0td2l0aG91dC14cG0tbGlicmFyeSBcCisgICAgYWNfY3ZfZnVuY19ta3N0ZW1wPW5vIFwKKyAgICBoYXNfc2FmZXR5X21rc3RlbXA9eWVzIFwKKyIKKworIyBzaG93IHRoZSBleGFjdCBjb21tYW5kcyBpbiB0aGUgbG9nIGZpbGUKK0VYVFJBX09FTUFLRSA9ICIgXAorICAgIFY9MSBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgLW0gMDc1NSAke0R9LyR7c3lzY29uZmRpcn0veGRnL2Z2d20KKyAgICAjIFlvdSBjYW4gaW5zdGFsbCB0aGUgY29uZmlnIGZpbGUgaGVyZQorCisgICAgaW5zdGFsbCAtZCAtbSAwNzU1ICR7RH0vJHtkYXRhZGlyfS9mdndtCisgICAgdG91Y2ggJHtEfS8ke2RhdGFkaXJ9L2Z2d20vQ29uZmlnRnZ3bURlZmF1bHRzCit9CisKKyMgdGhlIG9ubHkgbmVlZGVkIHBhY2thZ2VzIChub3RlOiBsb2NhbGUgcGFja2FnZXMgYXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkCisjIGFzIHdlbGwpCitQQUNLQUdFUyA9ICIgXAorICAgICR7UE59IFwKKyAgICAke1BOfS1kYmcgXAorIgorCisjIG1pbmltYWwgc2V0IG9mIGJpbmFyaWVzCitGSUxFU18ke1BOfSA9ICIgXAorICAgICR7YmluZGlyfS9mdndtIFwKKyAgICAke2JpbmRpcn0vZnZ3bS1yb290IFwKKyAgICAke2RhdGFkaXJ9L2Z2d20vQ29uZmlnRnZ3bURlZmF1bHRzIFwKKyIKKworUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICB4dXNlci1hY2NvdW50IFwKKyIKKworIyBieSBkZWZhdWx0IGEgbG90IG9mIHN0dWZmIGlzIGluc3RhbGxlZCBhbmQgaXQncyBub3QgZWFzeSB0byBjb250cm9sIHdoYXQgdG8KKyMgaW5zdGFsbCwgc28gaW5zdGFsbCBldmVyeXRoaW5nLCBidXQgc2tpcCB0aGUgY2hlY2sKK0lOU0FORV9TS0lQXyR7UE59ID0gIiBcCisgICAgaW5zdGFsbGVkLXZzLXNoaXBwZWQgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsXzAuMy4xOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dlZ2wvZ2VnbF8wLjMuMTguYmIKaW5kZXggNmNjMjBmNS4uMDA1M2MwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsXzAuMy4xOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nZWdsL2dlZ2xfMC4zLjE4LmJiCkBAIC01LDcgKzUsOSBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRvY3MiCiAKLWluaGVyaXQgZ25vbWViYXNlIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbamFzcGVyXSA9ICItLXdpdGgtamFzcGVyLC0td2l0aG91dC1qYXNwZXIsamFzcGVyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wXzIuOC4yMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcF8yLjguMjIuYmIKaW5kZXggY2Q3ZTI3YS4uOTQzOTg2ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wXzIuOC4yMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXBfMi44LjIyLmJiCkBAIC0yNCw3ICsyNCw5IEBACiAiCiBERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdsaWJ4bXUgbGlieHBtJywgJycsIGQpfSIKIAotaW5oZXJpdCBnbm9tZSBndGstZG9jCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBnbm9tZSBndGstZG9jCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2Z0cC5naW1wLm9yZy9wdWIvZ2ltcC92Mi44L2dpbXAtJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1hYy1kby1ub3QtY2hlY2stZm9yLWZyZWV0eXBlLWNvbmZpZy5wYXRjaCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbG0vZmlsZXMvMDAwMS1NYWtlLUdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMLWEtY29uZmlndXJhYmxlLW9wdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsbS9maWxlcy8wMDAxLU1ha2UtR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwtYS1jb25maWd1cmFibGUtb3B0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2OWM1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbG0vZmlsZXMvMDAwMS1NYWtlLUdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMLWEtY29uZmlndXJhYmxlLW9wdGlvbi5wYXRjaApAQCAtMCwwICsxLDg2MCBAQAorRnJvbSA5OWE5Njc2YTAxOTNmNjI5MWQ3MjAyZDdhZjcyZTI0NTgwYWJlNTY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTYgTWFyIDIwMTggMTM6NTU6MjkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIE1ha2UgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYSBjb25maWd1cmFibGUgb3B0aW9uCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0l0IHNlZW1zIHRoYXQgZXJyb3Jpbmcgb3V0IGlmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGlzIG5vdCBzZXQgdHVybnMgaW50bworcGFja2FnZXJzIG5pZ2h0bWFyZTogVGhlcmUgYXJlIHBhY2thZ2VzIGFyb3VuZCBleHBlY3RpbmcgZ2x4IGhlYWRlcnMuIEUuZworbGliZ2x0ZiBbMV0gZmFpbHMgZHVyaW5nIGNvbmZpZ3VyZSBjaGVja2luZyBmb3IgdXNhYmxlIGhlYWRlcnMgQU5EIGR1cmluZworY29tcGlsZS4gUGF0aWN1bGFybHkgZml4aW5nIGNvbmZpZ3VyZSBmb3IgdGhvc2UgcGFja2FnZXMgaXMgdGltZS1jb25zdW1pbmc6CitUaGUgb25seSB3YXkgKGNvcnJlY3QgbWUgaWYgSSBhbSB3cm9uZykgaXMgY3JlYXRpbmcgYSBwYXRjaCBhZGRpbmcKKworQUNfREVGSU5FKFtHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTF0sIFsxXSwgW2dsbSBuZWVkcyB0aGlzIGZvciBndHggaGVhZGVyc10pCisKK0J5IGFkZGluZyBhIGNvbmZpZ3VyZSBvcHRpb24gJ0dMTV9FTkFCTEVfRVhQRVJJTUVOVEFMJywgdGhlIGRlY2lzaW9uIHRvIHVzZQorZ2xtL2dseCBpcyBkb25lIGF0IG9uZSAoYW5kIHRoZSByaWdodCkgcGxhY2UuCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CisKK1sxXSBodHRwczovL2dlcnJpdC5saWJyZW9mZmljZS5vcmcvZ2l0d2ViP3A9bGliZ2x0Zi5naXQKKworVXB0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbMl0KKworWzJdIGh0dHBzOi8vZ2l0aHViLmNvbS9nLXRydWMvZ2xtL3B1bGwvNzQxCistLS0KKyBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICB8IDYgKysrKysrCisgZ2xtL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgfCAyICsrCisgZ2xtL2V4cGVyaW1lbnRhbC5ocHAuaW4gICAgICAgICAgICAgfCAxICsKKyBnbG0vZXh0LmhwcCAgICAgICAgICAgICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvYXNzb2NpYXRlZF9taW5fbWF4LmhwcCAgICAgIHwgMSArCisgZ2xtL2d0eC9iaXQuaHBwICAgICAgICAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L2Nsb3Nlc3RfcG9pbnQuaHBwICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvY29sb3Jfc3BhY2UuaHBwICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9jb2xvcl9zcGFjZV9ZQ29DZy5ocHAgICAgICAgfCAxICsKKyBnbG0vZ3R4L2NvbW1vbi5ocHAgICAgICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvY29tcGF0aWJpbGl0eS5ocHAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9jb21wb25lbnRfd2lzZS5ocHAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L2R1YWxfcXVhdGVybmlvbi5ocHAgICAgICAgICB8IDEgKworIGdsbS9ndHgvZXVsZXJfYW5nbGVzLmhwcCAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9leHRlbmQuaHBwICAgICAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L2V4dGVuZGVkX21pbl9tYXguaHBwICAgICAgICB8IDEgKworIGdsbS9ndHgvZmFzdF9leHBvbmVudGlhbC5ocHAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9mYXN0X3NxdWFyZV9yb290LmhwcCAgICAgICAgfCAxICsKKyBnbG0vZ3R4L2Zhc3RfdHJpZ29ub21ldHJ5LmhwcCAgICAgICB8IDEgKworIGdsbS9ndHgvZ3JhZGllbnRfcGFpbnQuaHBwICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9oYW5kZWRfY29vcmRpbmF0ZV9zcGFjZS5ocHAgfCAxICsKKyBnbG0vZ3R4L2hhc2guaHBwICAgICAgICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvaW50ZWdlci5ocHAgICAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9pbnRlcnNlY3QuaHBwICAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L2lvLmhwcCAgICAgICAgICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvbG9nX2Jhc2UuaHBwICAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9tYXRyaXhfY3Jvc3NfcHJvZHVjdC5ocHAgICAgfCAxICsKKyBnbG0vZ3R4L21hdHJpeF9kZWNvbXBvc2UuaHBwICAgICAgICB8IDEgKworIGdsbS9ndHgvbWF0cml4X2ZhY3RvcmlzYXRpb24uaHBwICAgIHwgMSArCisgZ2xtL2d0eC9tYXRyaXhfaW50ZXJwb2xhdGlvbi5ocHAgICAgfCAxICsKKyBnbG0vZ3R4L21hdHJpeF9tYWpvcl9zdG9yYWdlLmhwcCAgICB8IDEgKworIGdsbS9ndHgvbWF0cml4X29wZXJhdGlvbi5ocHAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9tYXRyaXhfcXVlcnkuaHBwICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L21hdHJpeF90cmFuc2Zvcm1fMmQuaHBwICAgICB8IDEgKworIGdsbS9ndHgvbWl4ZWRfcHJvZHVjdC5ocHAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9ub3JtLmhwcCAgICAgICAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L25vcm1hbC5ocHAgICAgICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvbm9ybWFsaXplX2RvdC5ocHAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9udW1iZXJfcHJlY2lzaW9uLmhwcCAgICAgICAgfCAxICsKKyBnbG0vZ3R4L29wdGltdW1fcG93LmhwcCAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvb3J0aG9ub3JtYWxpemUuaHBwICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9wZXJwZW5kaWN1bGFyLmhwcCAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3BvbGFyX2Nvb3JkaW5hdGVzLmhwcCAgICAgICB8IDEgKworIGdsbS9ndHgvcHJvamVjdGlvbi5ocHAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9xdWF0ZXJuaW9uLmhwcCAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3JhbmdlLmhwcCAgICAgICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvcmF3X2RhdGEuaHBwICAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9yb3RhdGVfbm9ybWFsaXplZF9heGlzLmhwcCAgfCAxICsKKyBnbG0vZ3R4L3JvdGF0ZV92ZWN0b3IuaHBwICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvc2NhbGFyX211bHRpcGxpY2F0aW9uLmhwcCAgIHwgMSArCisgZ2xtL2d0eC9zY2FsYXJfcmVsYXRpb25hbC5ocHAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3NwbGluZS5ocHAgICAgICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvc3RkX2Jhc2VkX3R5cGUuaHBwICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9zdHJpbmdfY2FzdC5ocHAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3RleHR1cmUuaHBwICAgICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvdHJhbnNmb3JtLmhwcCAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC90cmFuc2Zvcm0yLmhwcCAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3R5cGVfYWxpZ25lZC5ocHAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvdHlwZV90cmFpdC5ocHAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC92ZWNfc3dpenpsZS5ocHAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3ZlY3Rvcl9hbmdsZS5ocHAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvdmVjdG9yX3F1ZXJ5LmhwcCAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC93cmFwLmhwcCAgICAgICAgICAgICAgICAgICAgfCAxICsKKyA2MyBmaWxlcyBjaGFuZ2VkLCA2OSBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdsbS9leHBlcmltZW50YWwuaHBwLmluCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCBlNTE1OWIwZi4uYmQ0ZGQ2NTQgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC04Miw2ICs4MiwxMSBAQCBvcHRpb24oR0xNX1RFU1RfRU5BQkxFX1NJTURfQVZYICJFbmFibGUgQVZYIG9wdGltaXphdGlvbnMiIE9GRikKKyBvcHRpb24oR0xNX1RFU1RfRU5BQkxFX1NJTURfQVZYMiAiRW5hYmxlIEFWWDIgb3B0aW1pemF0aW9ucyIgT0ZGKQorIG9wdGlvbihHTE1fVEVTVF9GT1JDRV9QVVJFICJGb3JjZSAncHVyZScgaW5zdHJ1Y3Rpb25zIiBPRkYpCisgCisrb3B0aW9uKEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMICJFbmFibGUgZXhwZXJpbWVudGFsIEdMTV9HVFgiIE9GRikKKytjb25maWd1cmVfZmlsZShnbG0vZXhwZXJpbWVudGFsLmhwcC5pbiBleHBlcmltZW50YWwuaHBwIEBPTkxZKQorK2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtDTUFLRV9CSU5BUllfRElSfS9nbG0pCisraW5jbHVkZV9kaXJlY3Rvcmllcygke0NNQUtFX0JJTkFSWV9ESVJ9KQorKworIGlmKEdMTV9URVNUX0ZPUkNFX1BVUkUpCisgCWFkZF9kZWZpbml0aW9ucygtREdMTV9GT1JDRV9QVVJFKQorIAorQEAgLTE2Nyw2ICsxNzIsNyBAQCBvcHRpb24oR0xNX0lOU1RBTExfRU5BQkxFICJHTE0gaW5zdGFsbCIgT04pCisgc2V0KEdMTV9JTlNUQUxMX0NPTkZJR0RJUiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vY21ha2UvZ2xtIikKKyBpZiAoR0xNX0lOU1RBTExfRU5BQkxFKQorIAlpbnN0YWxsKERJUkVDVE9SWSBnbG0gREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9KQorKwlpbnN0YWxsKEZJTEVTICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vZXhwZXJpbWVudGFsLmhwcCIgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9L2dsbSkKKyBlbmRpZigpCisgCisgd3JpdGVfYmFzaWNfcGFja2FnZV92ZXJzaW9uX2ZpbGUoIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9nbG1Db25maWdWZXJzaW9uLmNtYWtlIiBWRVJTSU9OICR7R0xNX1ZFUlNJT059IENPTVBBVElCSUxJVFkgQW55TmV3ZXJWZXJzaW9uKQorZGlmZiAtLWdpdCBhL2dsbS9DTWFrZUxpc3RzLnR4dCBiL2dsbS9DTWFrZUxpc3RzLnR4dAoraW5kZXggZGY5YzllZTUuLmRjNWRiNGJjIDEwMDY0NAorLS0tIGEvZ2xtL0NNYWtlTGlzdHMudHh0CisrKysgYi9nbG0vQ01ha2VMaXN0cy50eHQKK0BAIC00Myw2ICs0Myw4IEBAIHNvdXJjZV9ncm91cCgiU0lNRCBGaWxlcyIgRklMRVMgJHtTSU1EX0lOTElORX0pCisgc291cmNlX2dyb3VwKCJTSU1EIEZpbGVzIiBGSUxFUyAke1NJTURfSEVBREVSfSkKKyAKKyBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLikKKysjIG1ha2Ugb3V0LW9mIHRyZWUgYnVpbGRzIGZpbmQgZXhwZXJpbWVudGFsLmhwcAorK2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtDTUFLRV9CSU5BUllfRElSfS9nbG0pCisgCisgaWYoR0xNX1NUQVRJQ19MSUJSQVJZX0VOQUJMRSBPUiBHTE1fRFlOQU1JQ19MSUJSQVJZX0VOQUJMRSkKKyAJaWYoR0xNX1NUQVRJQ19MSUJSQVJZX0VOQUJMRSkKK2RpZmYgLS1naXQgYS9nbG0vZXhwZXJpbWVudGFsLmhwcC5pbiBiL2dsbS9leHBlcmltZW50YWwuaHBwLmluCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLmJmYWI1MTM4CistLS0gL2Rldi9udWxsCisrKysgYi9nbG0vZXhwZXJpbWVudGFsLmhwcC5pbgorQEAgLTAsMCArMSBAQAorKyNjbWFrZWRlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorZGlmZiAtLWdpdCBhL2dsbS9leHQuaHBwIGIvZ2xtL2V4dC5ocHAKK2luZGV4IGQwODViZmQ1Li5hMjk0ODQ0NyAxMDA2NDQKKy0tLSBhL2dsbS9leHQuaHBwCisrKysgYi9nbG0vZXh0LmhwcAorQEAgLTM5LDYgKzM5LDcgQEAKKyAjCWluY2x1ZGUgIi4vZ3RjL3R5cGVfYWxpZ25lZC5ocHAiCisgI2VuZGlmCisgCisrI2luY2x1ZGUgImV4cGVyaW1lbnRhbC5ocHAiCisgI2lmZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgI2luY2x1ZGUgIi4vZ3R4L2Fzc29jaWF0ZWRfbWluX21heC5ocHAiCisgI2luY2x1ZGUgIi4vZ3R4L2JpdC5ocHAiCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9hc3NvY2lhdGVkX21pbl9tYXguaHBwIGIvZ2xtL2d0eC9hc3NvY2lhdGVkX21pbl9tYXguaHBwCitpbmRleCAwYzk5MzVmMy4uZDAwYzJiYzQgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2Fzc29jaWF0ZWRfbWluX21heC5ocHAKKysrKyBiL2dsbS9ndHgvYXNzb2NpYXRlZF9taW5fbWF4LmhwcAorQEAgLTE2LDYgKzE2LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdUWF9hc3NvY2lhdGVkX21pbl9tYXggaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2JpdC5ocHAgYi9nbG0vZ3R4L2JpdC5ocHAKK2luZGV4IDE0NDdmYTAwLi4zMTk1NzA4MyAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvYml0LmhwcAorKysrIGIvZ2xtL2d0eC9iaXQuaHBwCitAQCAtMTUsNiArMTUsNyBAQAorIC8vIERlcGVuZGVuY2llcworICNpbmNsdWRlICIuLi9ndGMvYml0ZmllbGQuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfYml0IGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9jbG9zZXN0X3BvaW50LmhwcCBiL2dsbS9ndHgvY2xvc2VzdF9wb2ludC5ocHAKK2luZGV4IDY4NTliYjk2Li5lYmQ5ZmU1YSAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvY2xvc2VzdF9wb2ludC5ocHAKKysrKyBiL2dsbS9ndHgvY2xvc2VzdF9wb2ludC5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2Nsb3Nlc3RfcG9pbnQgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2NvbG9yX3NwYWNlLmhwcCBiL2dsbS9ndHgvY29sb3Jfc3BhY2UuaHBwCitpbmRleCBkMWU2NTVjMy4uNTE0MTY4MTkgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2NvbG9yX3NwYWNlLmhwcAorKysrIGIvZ2xtL2d0eC9jb2xvcl9zcGFjZS5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2NvbG9yX3NwYWNlIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9jb2xvcl9zcGFjZV9ZQ29DZy5ocHAgYi9nbG0vZ3R4L2NvbG9yX3NwYWNlX1lDb0NnLmhwcAoraW5kZXggZTgyY2JkOGIuLjdhZTcxMDQxIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9jb2xvcl9zcGFjZV9ZQ29DZy5ocHAKKysrKyBiL2dsbS9ndHgvY29sb3Jfc3BhY2VfWUNvQ2cuaHBwCitAQCAtMTUsNiArMTUsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9jb2xvcl9zcGFjZV9ZQ29DZyBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvY29tbW9uLmhwcCBiL2dsbS9ndHgvY29tbW9uLmhwcAoraW5kZXggODA4MWJmZjcuLjU3YTY4YThkIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9jb21tb24uaHBwCisrKysgYi9nbG0vZ3R4L2NvbW1vbi5ocHAKK0BAIC0xOCw2ICsxOCw3IEBACisgI2luY2x1ZGUgIi4uL3ZlYzQuaHBwIgorICNpbmNsdWRlICIuLi9ndGMvdmVjMS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9jb21tb24gaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2NvbXBhdGliaWxpdHkuaHBwIGIvZ2xtL2d0eC9jb21wYXRpYmlsaXR5LmhwcAoraW5kZXggZTViNjAzOTkuLjk4NzY2NjljIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9jb21wYXRpYmlsaXR5LmhwcAorKysrIGIvZ2xtL2d0eC9jb21wYXRpYmlsaXR5LmhwcAorQEAgLTE2LDYgKzE2LDcgQEAKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ3RjL3F1YXRlcm5pb24uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfY29tcGF0aWJpbGl0eSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvY29tcG9uZW50X3dpc2UuaHBwIGIvZ2xtL2d0eC9jb21wb25lbnRfd2lzZS5ocHAKK2luZGV4IDM5YmFiNWQ1Li40ZmUwZTRlMiAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvY29tcG9uZW50X3dpc2UuaHBwCisrKysgYi9nbG0vZ3R4L2NvbXBvbmVudF93aXNlLmhwcAorQEAgLTE4LDYgKzE4LDcgQEAKKyAjaW5jbHVkZSAiLi4vZGV0YWlsL3NldHVwLmhwcCIKKyAjaW5jbHVkZSAiLi4vZGV0YWlsL3F1YWxpZmllci5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9jb21wb25lbnRfd2lzZSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvZHVhbF9xdWF0ZXJuaW9uLmhwcCBiL2dsbS9ndHgvZHVhbF9xdWF0ZXJuaW9uLmhwcAoraW5kZXggYzQzNDNlOWQuLmQ1OWZiNDU5IDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9kdWFsX3F1YXRlcm5pb24uaHBwCisrKysgYi9nbG0vZ3R4L2R1YWxfcXVhdGVybmlvbi5ocHAKK0BAIC0yMCw2ICsyMCw3IEBACisgI2luY2x1ZGUgIi4uL2d0Yy9jb25zdGFudHMuaHBwIgorICNpbmNsdWRlICIuLi9ndGMvcXVhdGVybmlvbi5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9kdWFsX3F1YXRlcm5pb24gaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2V1bGVyX2FuZ2xlcy5ocHAgYi9nbG0vZ3R4L2V1bGVyX2FuZ2xlcy5ocHAKK2luZGV4IGU2NmU5MjgxLi5hZDU5ODhjMSAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvZXVsZXJfYW5nbGVzLmhwcAorKysrIGIvZ2xtL2d0eC9ldWxlcl9hbmdsZXMuaHBwCitAQCAtMTUsNiArMTUsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9ldWxlcl9hbmdsZXMgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2V4dGVuZC5ocHAgYi9nbG0vZ3R4L2V4dGVuZC5ocHAKK2luZGV4IGVkYTRlNDcwLi5jZGU2ZGI2MyAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvZXh0ZW5kLmhwcAorKysrIGIvZ2xtL2d0eC9leHRlbmQuaHBwCitAQCAtMTUsNiArMTUsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9leHRlbmQgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2V4dGVuZGVkX21pbl9tYXguaHBwIGIvZ2xtL2d0eC9leHRlbmRlZF9taW5fbWF4LmhwcAoraW5kZXggM2U3NjdiMGMuLjBiY2ZmY2M2IDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9leHRlbmRlZF9taW5fbWF4LmhwcAorKysrIGIvZ2xtL2d0eC9leHRlbmRlZF9taW5fbWF4LmhwcAorQEAgLTE1LDYgKzE1LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfZXh0ZW50ZWRfbWluX21heCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvZmFzdF9leHBvbmVudGlhbC5ocHAgYi9nbG0vZ3R4L2Zhc3RfZXhwb25lbnRpYWwuaHBwCitpbmRleCAyZDQ5MThlNy4uZTZkMTFmMGEgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2Zhc3RfZXhwb25lbnRpYWwuaHBwCisrKysgYi9nbG0vZ3R4L2Zhc3RfZXhwb25lbnRpYWwuaHBwCitAQCAtMTYsNiArMTYsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9mYXN0X2V4cG9uZW50aWFsIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9mYXN0X3NxdWFyZV9yb290LmhwcCBiL2dsbS9ndHgvZmFzdF9zcXVhcmVfcm9vdC5ocHAKK2luZGV4IDFlMWVjM2NmLi5mNzU4YWVlZiAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvZmFzdF9zcXVhcmVfcm9vdC5ocHAKKysrKyBiL2dsbS9ndHgvZmFzdF9zcXVhcmVfcm9vdC5ocHAKK0BAIC0xOSw2ICsxOSw3IEBACisgI2luY2x1ZGUgIi4uL2V4cG9uZW50aWFsLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ2VvbWV0cmljLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2Zhc3Rfc3F1YXJlX3Jvb3QgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2Zhc3RfdHJpZ29ub21ldHJ5LmhwcCBiL2dsbS9ndHgvZmFzdF90cmlnb25vbWV0cnkuaHBwCitpbmRleCA3MzkwNjVmYi4uZjEzMzI5NTggMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2Zhc3RfdHJpZ29ub21ldHJ5LmhwcAorKysrIGIvZ2xtL2d0eC9mYXN0X3RyaWdvbm9tZXRyeS5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ3RjL2NvbnN0YW50cy5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9mYXN0X3RyaWdvbm9tZXRyeSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvZ3JhZGllbnRfcGFpbnQuaHBwIGIvZ2xtL2d0eC9ncmFkaWVudF9wYWludC5ocHAKK2luZGV4IDI3MTNjZWMwLi5kNDcwMzk5MSAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvZ3JhZGllbnRfcGFpbnQuaHBwCisrKysgYi9nbG0vZ3R4L2dyYWRpZW50X3BhaW50LmhwcAorQEAgLTE3LDYgKzE3LDcgQEAKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ3R4L29wdGltdW1fcG93LmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2dyYWRpZW50X3BhaW50IGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9oYW5kZWRfY29vcmRpbmF0ZV9zcGFjZS5ocHAgYi9nbG0vZ3R4L2hhbmRlZF9jb29yZGluYXRlX3NwYWNlLmhwcAoraW5kZXggMWQwZDQxMDQuLjNhNTJkZGNmIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9oYW5kZWRfY29vcmRpbmF0ZV9zcGFjZS5ocHAKKysrKyBiL2dsbS9ndHgvaGFuZGVkX2Nvb3JkaW5hdGVfc3BhY2UuaHBwCitAQCAtMTUsNiArMTUsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9oYW5kZWRfY29vcmRpbmF0ZV9zcGFjZSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvaGFzaC5ocHAgYi9nbG0vZ3R4L2hhc2guaHBwCitpbmRleCBmZThhM2VmZC4uOTJiZmM5YjIgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2hhc2guaHBwCisrKysgYi9nbG0vZ3R4L2hhc2guaHBwCitAQCAtMTIsNiArMTIsNyBAQAorIAorICNwcmFnbWEgb25jZQorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfaGFzaCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvaW50ZWdlci5ocHAgYi9nbG0vZ3R4L2ludGVnZXIuaHBwCitpbmRleCA5NjYzN2ExMy4uNWQxYTE2YzYgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2ludGVnZXIuaHBwCisrKysgYi9nbG0vZ3R4L2ludGVnZXIuaHBwCitAQCAtMTYsNiArMTYsNyBAQAorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorICNpbmNsdWRlICIuLi9ndGMvaW50ZWdlci5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9pbnRlZ2VyIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9pbnRlcnNlY3QuaHBwIGIvZ2xtL2d0eC9pbnRlcnNlY3QuaHBwCitpbmRleCA2MWUyMjI2YS4uNDg5NWJhOTMgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2ludGVyc2VjdC5ocHAKKysrKyBiL2dsbS9ndHgvaW50ZXJzZWN0LmhwcAorQEAgLTIxLDYgKzIxLDcgQEAKKyAjaW5jbHVkZSAiLi4vZ3R4L2Nsb3Nlc3RfcG9pbnQuaHBwIgorICNpbmNsdWRlICIuLi9ndHgvdmVjdG9yX3F1ZXJ5LmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2Nsb3Nlc3RfcG9pbnQgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2lvLmhwcCBiL2dsbS9ndHgvaW8uaHBwCitpbmRleCA0OWExZWMxMS4uYWUzOWNkNjAgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2lvLmhwcAorKysrIGIvZ2xtL2d0eC9pby5ocHAKK0BAIC0yMyw2ICsyMyw3IEBACisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgI2luY2x1ZGUgIi4uL2d0eC9xdWF0ZXJuaW9uLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2lvIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9sb2dfYmFzZS5ocHAgYi9nbG0vZ3R4L2xvZ19iYXNlLmhwcAoraW5kZXggZTg3M2UzNTYuLjQ1YjhkNTNjIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9sb2dfYmFzZS5ocHAKKysrKyBiL2dsbS9ndHgvbG9nX2Jhc2UuaHBwCitAQCAtMTUsNiArMTUsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9sb2dfYmFzZSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvbWF0cml4X2Nyb3NzX3Byb2R1Y3QuaHBwIGIvZ2xtL2d0eC9tYXRyaXhfY3Jvc3NfcHJvZHVjdC5ocHAKK2luZGV4IDk2Nzc0M2I4Li41MmQ2YzE3MyAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvbWF0cml4X2Nyb3NzX3Byb2R1Y3QuaHBwCisrKysgYi9nbG0vZ3R4L21hdHJpeF9jcm9zc19wcm9kdWN0LmhwcAorQEAgLTE2LDYgKzE2LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfbWF0cml4X2Nyb3NzX3Byb2R1Y3QgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L21hdHJpeF9kZWNvbXBvc2UuaHBwIGIvZ2xtL2d0eC9tYXRyaXhfZGVjb21wb3NlLmhwcAoraW5kZXggYjdlYzBlODMuLjY3OTNmZWUyIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9tYXRyaXhfZGVjb21wb3NlLmhwcAorKysrIGIvZ2xtL2d0eC9tYXRyaXhfZGVjb21wb3NlLmhwcAorQEAgLTIwLDYgKzIwLDcgQEAKKyAjaW5jbHVkZSAiLi4vZ3RjL3F1YXRlcm5pb24uaHBwIgorICNpbmNsdWRlICIuLi9ndGMvbWF0cml4X3RyYW5zZm9ybS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9tYXRyaXhfZGVjb21wb3NlIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9tYXRyaXhfZmFjdG9yaXNhdGlvbi5ocHAgYi9nbG0vZ3R4L21hdHJpeF9mYWN0b3Jpc2F0aW9uLmhwcAoraW5kZXggZTMwYTc3NDYuLjc5YzI5M2JlIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9tYXRyaXhfZmFjdG9yaXNhdGlvbi5ocHAKKysrKyBiL2dsbS9ndHgvbWF0cml4X2ZhY3RvcmlzYXRpb24uaHBwCitAQCAtMTUsNiArMTUsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9tYXRyaXhfZmFjdG9yaXNhdGlvbiBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvbWF0cml4X2ludGVycG9sYXRpb24uaHBwIGIvZ2xtL2d0eC9tYXRyaXhfaW50ZXJwb2xhdGlvbi5ocHAKK2luZGV4IDg5YzQ1OTZjLi43OTk5ODNiYiAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvbWF0cml4X2ludGVycG9sYXRpb24uaHBwCisrKysgYi9nbG0vZ3R4L21hdHJpeF9pbnRlcnBvbGF0aW9uLmhwcAorQEAgLTE2LDYgKzE2LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfbWF0cml4X2ludGVycG9sYXRpb24gaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L21hdHJpeF9tYWpvcl9zdG9yYWdlLmhwcCBiL2dsbS9ndHgvbWF0cml4X21ham9yX3N0b3JhZ2UuaHBwCitpbmRleCA3ZjI2NGE1OS4uZTY4NDY3Y2QgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L21hdHJpeF9tYWpvcl9zdG9yYWdlLmhwcAorKysrIGIvZ2xtL2d0eC9tYXRyaXhfbWFqb3Jfc3RvcmFnZS5ocHAKK0BAIC0xNiw2ICsxNiw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX21hdHJpeF9tYWpvcl9zdG9yYWdlIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9tYXRyaXhfb3BlcmF0aW9uLmhwcCBiL2dsbS9ndHgvbWF0cml4X29wZXJhdGlvbi5ocHAKK2luZGV4IGJjZTkzOGJiLi4xZTg1YmI1ZSAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvbWF0cml4X29wZXJhdGlvbi5ocHAKKysrKyBiL2dsbS9ndHgvbWF0cml4X29wZXJhdGlvbi5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX21hdHJpeF9vcGVyYXRpb24gaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L21hdHJpeF9xdWVyeS5ocHAgYi9nbG0vZ3R4L21hdHJpeF9xdWVyeS5ocHAKK2luZGV4IDVkZjVmNTJmLi5lZWMxZWVjMCAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvbWF0cml4X3F1ZXJ5LmhwcAorKysrIGIvZ2xtL2d0eC9tYXRyaXhfcXVlcnkuaHBwCitAQCAtMTgsNiArMTgsNyBAQAorICNpbmNsdWRlICIuLi9ndHgvdmVjdG9yX3F1ZXJ5LmhwcCIKKyAjaW5jbHVkZSA8bGltaXRzPgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfbWF0cml4X3F1ZXJ5IGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9tYXRyaXhfdHJhbnNmb3JtXzJkLmhwcCBiL2dsbS9ndHgvbWF0cml4X3RyYW5zZm9ybV8yZC5ocHAKK2luZGV4IDIzOWFiOWY0Li4zY2E4ZDJmMiAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvbWF0cml4X3RyYW5zZm9ybV8yZC5ocHAKKysrKyBiL2dsbS9ndHgvbWF0cml4X3RyYW5zZm9ybV8yZC5ocHAKK0BAIC0xNyw2ICsxNyw3IEBACisgI2luY2x1ZGUgIi4uL21hdDN4My5ocHAiCisgI2luY2x1ZGUgIi4uL3ZlYzIuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfbWF0cml4X3RyYW5zZm9ybV8yZCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvbWl4ZWRfcHJvZHVjdC5ocHAgYi9nbG0vZ3R4L21peGVkX3Byb2R1Y3QuaHBwCitpbmRleCA1ODU2MmFhYi4uNWM3NDYwZDUgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L21peGVkX3Byb2R1Y3QuaHBwCisrKysgYi9nbG0vZ3R4L21peGVkX3Byb2R1Y3QuaHBwCitAQCAtMTUsNiArMTUsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9taXhlZF9wcm9kdWN0IGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9ub3JtLmhwcCBiL2dsbS9ndHgvbm9ybS5ocHAKK2luZGV4IDQ2NDc0ZTA3Li4zY2YyYzNlYSAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvbm9ybS5ocHAKKysrKyBiL2dsbS9ndHgvbm9ybS5ocHAKK0BAIC0xNyw2ICsxNyw3IEBACisgI2luY2x1ZGUgIi4uL2dlb21ldHJpYy5ocHAiCisgI2luY2x1ZGUgIi4uL2d0eC9xdWF0ZXJuaW9uLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX25vcm0gaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L25vcm1hbC5ocHAgYi9nbG0vZ3R4L25vcm1hbC5ocHAKK2luZGV4IDE1Y2VjOWMyLi43YmI0YzA5NiAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvbm9ybWFsLmhwcAorKysrIGIvZ2xtL2d0eC9ub3JtYWwuaHBwCitAQCAtMTYsNiArMTYsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9ub3JtYWwgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L25vcm1hbGl6ZV9kb3QuaHBwIGIvZ2xtL2d0eC9ub3JtYWxpemVfZG90LmhwcAoraW5kZXggODYwNDhlNzAuLmM2NjA0ZGE0IDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9ub3JtYWxpemVfZG90LmhwcAorKysrIGIvZ2xtL2d0eC9ub3JtYWxpemVfZG90LmhwcAorQEAgLTE2LDYgKzE2LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9ndHgvZmFzdF9zcXVhcmVfcm9vdC5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9ub3JtYWxpemVfZG90IGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9udW1iZXJfcHJlY2lzaW9uLmhwcCBiL2dsbS9ndHgvbnVtYmVyX3ByZWNpc2lvbi5ocHAKK2luZGV4IDM3MzJhNTZjLi5iNDg4NDVmNyAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvbnVtYmVyX3ByZWNpc2lvbi5ocHAKKysrKyBiL2dsbS9ndHgvbnVtYmVyX3ByZWNpc2lvbi5ocHAKK0BAIC0xOCw2ICsxOCw3IEBACisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgI2luY2x1ZGUgIi4uL2d0Yy90eXBlX3ByZWNpc2lvbi5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9udW1iZXJfcHJlY2lzaW9uIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9vcHRpbXVtX3Bvdy5ocHAgYi9nbG0vZ3R4L29wdGltdW1fcG93LmhwcAoraW5kZXggZWIwOWYxYzMuLjk0YTZiYmIyIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9vcHRpbXVtX3Bvdy5ocHAKKysrKyBiL2dsbS9ndHgvb3B0aW11bV9wb3cuaHBwCitAQCAtMTUsNiArMTUsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9vcHRpbXVtX3BvdyBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvb3J0aG9ub3JtYWxpemUuaHBwIGIvZ2xtL2d0eC9vcnRob25vcm1hbGl6ZS5ocHAKK2luZGV4IDJhNjg0ZWU0Li40ZmY0N2U1MyAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvb3J0aG9ub3JtYWxpemUuaHBwCisrKysgYi9nbG0vZ3R4L29ydGhvbm9ybWFsaXplLmhwcAorQEAgLTE4LDYgKzE4LDcgQEAKKyAjaW5jbHVkZSAiLi4vbWF0M3gzLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ2VvbWV0cmljLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX29ydGhvbm9ybWFsaXplIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9wZXJwZW5kaWN1bGFyLmhwcCBiL2dsbS9ndHgvcGVycGVuZGljdWxhci5ocHAKK2luZGV4IDM1NjAxYWM3Li4xNzI1MWViZSAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvcGVycGVuZGljdWxhci5ocHAKKysrKyBiL2dsbS9ndHgvcGVycGVuZGljdWxhci5ocHAKK0BAIC0xNyw2ICsxNyw3IEBACisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgI2luY2x1ZGUgIi4uL2d0eC9wcm9qZWN0aW9uLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3BlcnBlbmRpY3VsYXIgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3BvbGFyX2Nvb3JkaW5hdGVzLmhwcCBiL2dsbS9ndHgvcG9sYXJfY29vcmRpbmF0ZXMuaHBwCitpbmRleCBiODQyMWRiNC4uNTEyNTIxNWQgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3BvbGFyX2Nvb3JkaW5hdGVzLmhwcAorKysrIGIvZ2xtL2d0eC9wb2xhcl9jb29yZGluYXRlcy5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3BvbGFyX2Nvb3JkaW5hdGVzIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9wcm9qZWN0aW9uLmhwcCBiL2dsbS9ndHgvcHJvamVjdGlvbi5ocHAKK2luZGV4IDlhMjRhYmY5Li40ZDViZjc2ZiAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvcHJvamVjdGlvbi5ocHAKKysrKyBiL2dsbS9ndHgvcHJvamVjdGlvbi5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2VvbWV0cmljLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3Byb2plY3Rpb24gaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3F1YXRlcm5pb24uaHBwIGIvZ2xtL2d0eC9xdWF0ZXJuaW9uLmhwcAoraW5kZXggYzNkOTlhNWMuLjgwOGJhMGZkIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9xdWF0ZXJuaW9uLmhwcAorKysrIGIvZ2xtL2d0eC9xdWF0ZXJuaW9uLmhwcAorQEAgLTE5LDYgKzE5LDcgQEAKKyAjaW5jbHVkZSAiLi4vZ3RjL3F1YXRlcm5pb24uaHBwIgorICNpbmNsdWRlICIuLi9ndHgvbm9ybS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9xdWF0ZXJuaW9uIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9yYW5nZS5ocHAgYi9nbG0vZ3R4L3JhbmdlLmhwcAoraW5kZXggZTBlZjQ2YWYuLjAzYzc5N2MzIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9yYW5nZS5ocHAKKysrKyBiL2dsbS9ndHgvcmFuZ2UuaHBwCitAQCAtMTUsNiArMTUsNyBAQAorIC8vIERlcGVuZGVuY2llcworICNpbmNsdWRlICIuLi9kZXRhaWwvc2V0dXAuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfcmFuZ2UgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3Jhd19kYXRhLmhwcCBiL2dsbS9ndHgvcmF3X2RhdGEuaHBwCitpbmRleCBmYjM0YzhjYi4uMDA4NGZlYzYgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3Jhd19kYXRhLmhwcAorKysrIGIvZ2xtL2d0eC9yYXdfZGF0YS5ocHAKK0BAIC0xNiw2ICsxNiw3IEBACisgI2luY2x1ZGUgIi4uL2RldGFpbC9zZXR1cC5ocHAiCisgI2luY2x1ZGUgIi4uL2RldGFpbC90eXBlX2ludC5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9yYXdfZGF0YSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvcm90YXRlX25vcm1hbGl6ZWRfYXhpcy5ocHAgYi9nbG0vZ3R4L3JvdGF0ZV9ub3JtYWxpemVkX2F4aXMuaHBwCitpbmRleCBlZWU5MGQ2ZS4uODI2MTI5MjggMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3JvdGF0ZV9ub3JtYWxpemVkX2F4aXMuaHBwCisrKysgYi9nbG0vZ3R4L3JvdGF0ZV9ub3JtYWxpemVkX2F4aXMuaHBwCitAQCAtMTksNiArMTksNyBAQAorICNpbmNsdWRlICIuLi9ndGMvZXBzaWxvbi5ocHAiCisgI2luY2x1ZGUgIi4uL2d0Yy9xdWF0ZXJuaW9uLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3JvdGF0ZV9ub3JtYWxpemVkX2F4aXMgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3JvdGF0ZV92ZWN0b3IuaHBwIGIvZ2xtL2d0eC9yb3RhdGVfdmVjdG9yLmhwcAoraW5kZXggYzhhY2U4OWUuLmU5NTRiMDQxIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9yb3RhdGVfdmVjdG9yLmhwcAorKysrIGIvZ2xtL2d0eC9yb3RhdGVfdmVjdG9yLmhwcAorQEAgLTE3LDYgKzE3LDcgQEAKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ3R4L3RyYW5zZm9ybS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9yb3RhdGVfdmVjdG9yIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9zY2FsYXJfbXVsdGlwbGljYXRpb24uaHBwIGIvZ2xtL2d0eC9zY2FsYXJfbXVsdGlwbGljYXRpb24uaHBwCitpbmRleCBiNzNlZGY2Ny4uMjJiYWE1MmEgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3NjYWxhcl9tdWx0aXBsaWNhdGlvbi5ocHAKKysrKyBiL2dsbS9ndHgvc2NhbGFyX211bHRpcGxpY2F0aW9uLmhwcAorQEAgLTE2LDYgKzE2LDcgQEAKKyAKKyAjaW5jbHVkZSAiLi4vZGV0YWlsL3NldHVwLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3NjYWxhcl9tdWx0aXBsaWNhdGlvbiBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvc2NhbGFyX3JlbGF0aW9uYWwuaHBwIGIvZ2xtL2d0eC9zY2FsYXJfcmVsYXRpb25hbC5ocHAKK2luZGV4IDdmYzhjMWNjLi5mMjFmM2IyYiAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvc2NhbGFyX3JlbGF0aW9uYWwuaHBwCisrKysgYi9nbG0vZ3R4L3NjYWxhcl9yZWxhdGlvbmFsLmhwcAorQEAgLTE1LDYgKzE1LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfZXh0ZW5kIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9zcGxpbmUuaHBwIGIvZ2xtL2d0eC9zcGxpbmUuaHBwCitpbmRleCBmOTZkN2UwNy4uNzYzNTljZmQgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3NwbGluZS5ocHAKKysrKyBiL2dsbS9ndHgvc3BsaW5lLmhwcAorQEAgLTE2LDYgKzE2LDcgQEAKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ3R4L29wdGltdW1fcG93LmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3NwbGluZSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvc3RkX2Jhc2VkX3R5cGUuaHBwIGIvZ2xtL2d0eC9zdGRfYmFzZWRfdHlwZS5ocHAKK2luZGV4IDU1YTJmMDc0Li45MjUzMmI5ZSAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvc3RkX2Jhc2VkX3R5cGUuaHBwCisrKysgYi9nbG0vZ3R4L3N0ZF9iYXNlZF90eXBlLmhwcAorQEAgLTE3LDYgKzE3LDcgQEAKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAjaW5jbHVkZSA8Y3N0ZGxpYj4KKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3N0ZF9iYXNlZF90eXBlIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9zdHJpbmdfY2FzdC5ocHAgYi9nbG0vZ3R4L3N0cmluZ19jYXN0LmhwcAoraW5kZXggNGI0ZTI4MGYuLmRmY2Q1MDg1IDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9zdHJpbmdfY2FzdC5ocHAKKysrKyBiL2dsbS9ndHgvc3RyaW5nX2Nhc3QuaHBwCitAQCAtMjQsNiArMjQsNyBAQAorICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUgPGNtYXRoPgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfc3RyaW5nX2Nhc3QgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3RleHR1cmUuaHBwIGIvZ2xtL2d0eC90ZXh0dXJlLmhwcAoraW5kZXggMzEyYmYzOTguLjdhZjE4NWY2IDEwMDY0NAorLS0tIGEvZ2xtL2d0eC90ZXh0dXJlLmhwcAorKysrIGIvZ2xtL2d0eC90ZXh0dXJlLmhwcAorQEAgLTE3LDYgKzE3LDcgQEAKKyAjaW5jbHVkZSAiLi4vZ3RjL2ludGVnZXIuaHBwIgorICNpbmNsdWRlICIuLi9ndHgvY29tcG9uZW50X3dpc2UuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfdGV4dHVyZSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvdHJhbnNmb3JtLmhwcCBiL2dsbS9ndHgvdHJhbnNmb3JtLmhwcAoraW5kZXggZDIzYjk5Y2UuLjVhNWQ5NjE5IDEwMDY0NAorLS0tIGEvZ2xtL2d0eC90cmFuc2Zvcm0uaHBwCisrKysgYi9nbG0vZ3R4L3RyYW5zZm9ybS5ocHAKK0BAIC0xOSw2ICsxOSw3IEBACisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgI2luY2x1ZGUgIi4uL2d0Yy9tYXRyaXhfdHJhbnNmb3JtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3RyYW5zZm9ybSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvdHJhbnNmb3JtMi5ocHAgYi9nbG0vZ3R4L3RyYW5zZm9ybTIuaHBwCitpbmRleCA4NWY1YmVhNC4uNWQ3YzgzZmMgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3RyYW5zZm9ybTIuaHBwCisrKysgYi9nbG0vZ3R4L3RyYW5zZm9ybTIuaHBwCitAQCAtMTcsNiArMTcsNyBAQAorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorICNpbmNsdWRlICIuLi9ndHgvdHJhbnNmb3JtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3RyYW5zZm9ybTIgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3R5cGVfYWxpZ25lZC5ocHAgYi9nbG0vZ3R4L3R5cGVfYWxpZ25lZC5ocHAKK2luZGV4IDZmZjlmMjc2Li42YWQ5MmZhZCAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvdHlwZV9hbGlnbmVkLmhwcAorKysrIGIvZ2xtL2d0eC90eXBlX2FsaWduZWQuaHBwCitAQCAtMTgsNiArMTgsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2d0Yy90eXBlX3ByZWNpc2lvbi5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF90eXBlX2FsaWduZWQgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3R5cGVfdHJhaXQuaHBwIGIvZ2xtL2d0eC90eXBlX3RyYWl0LmhwcAoraW5kZXggNjM3YmJkMTkuLjY1NTE5Y2FiIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC90eXBlX3RyYWl0LmhwcAorKysrIGIvZ2xtL2d0eC90eXBlX3RyYWl0LmhwcAorQEAgLTEyLDYgKzEyLDcgQEAKKyAKKyAjcHJhZ21hIG9uY2UKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3R5cGVfdHJhaXQgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3ZlY19zd2l6emxlLmhwcCBiL2dsbS9ndHgvdmVjX3N3aXp6bGUuaHBwCitpbmRleCBkYWViYWMzOC4uMTNkNTIzZGMgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3ZlY19zd2l6emxlLmhwcAorKysrIGIvZ2xtL2d0eC92ZWNfc3dpenpsZS5ocHAKK0BAIC0xNCw2ICsxNCw3IEBACisgCisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF92ZWNfc3dpenpsZSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvdmVjdG9yX2FuZ2xlLmhwcCBiL2dsbS9ndHgvdmVjdG9yX2FuZ2xlLmhwcAoraW5kZXggNDAxYTQ3ZWIuLjk4YzlkMTEwIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC92ZWN0b3JfYW5nbGUuaHBwCisrKysgYi9nbG0vZ3R4L3ZlY3Rvcl9hbmdsZS5ocHAKK0BAIC0yMCw2ICsyMCw3IEBACisgI2luY2x1ZGUgIi4uL2d0eC9xdWF0ZXJuaW9uLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ3R4L3JvdGF0ZV92ZWN0b3IuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfdmVjdG9yX2FuZ2xlIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC92ZWN0b3JfcXVlcnkuaHBwIGIvZ2xtL2d0eC92ZWN0b3JfcXVlcnkuaHBwCitpbmRleCA2NTYwZWFhNS4uNWFiMWZmZGEgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3ZlY3Rvcl9xdWVyeS5ocHAKKysrKyBiL2dsbS9ndHgvdmVjdG9yX3F1ZXJ5LmhwcAorQEAgLTE3LDYgKzE3LDcgQEAKKyAjaW5jbHVkZSA8Y2Zsb2F0PgorICNpbmNsdWRlIDxsaW1pdHM+CisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF92ZWN0b3JfcXVlcnkgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3dyYXAuaHBwIGIvZ2xtL2d0eC93cmFwLmhwcAoraW5kZXggMmM0YjU1ZGYuLjViZjI2YTMzIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC93cmFwLmhwcAorKysrIGIvZ2xtL2d0eC93cmFwLmhwcAorQEAgLTE2LDYgKzE2LDcgQEAKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ3RjL3ZlYzEuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfd3JhcCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xtL2ZpbGVzLzAwMDItZ2xtLWluc3RhbGwtaGVhZGVycy1vbmx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xtL2ZpbGVzLzAwMDItZ2xtLWluc3RhbGwtaGVhZGVycy1vbmx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZTMzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbG0vZmlsZXMvMDAwMi1nbG0taW5zdGFsbC1oZWFkZXJzLW9ubHkucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSA3ZmRkMzZkNzQ5NjIzOGUwM2U0M2ZjYzMyODM5Zjc1NTg4MTE2YzVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTYgTWFyIDIwMTggMTU6NDQ6NDggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGdsbTogaW5zdGFsbCBoZWFkZXJzIG9ubHkKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworUGxhdXNpYmlsaXR5IGNoZWNrIGluIHJvb3Qgc291cmNlIHBhdGgKKworJCBmaW5kIGdsbSAtdHlwZSBmICEgLW5hbWUgJyouaHBwJyAhIC1uYW1lICcqLmgnICEgLW5hbWUgJyouaW5sJworZ2xtL2RldGFpbC9nbG0uY3BwCitnbG0vZGV0YWlsL2R1bW15LmNwcAorZ2xtL2V4cGVyaW1lbnRhbC5ocHAuaW4KK2dsbS9DTWFrZUxpc3RzLnR4dAorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorCitVcHRyZWFtLVN0YXR1czogU3VibWl0dGVkIFsxXQorCitbMV0gaHR0cHM6Ly9naXRodWIuY29tL2ctdHJ1Yy9nbG0vcHVsbC83NDEKKy0tLQorIENNYWtlTGlzdHMudHh0IHwgNyArKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggYmQ0ZGQ2NTQuLjExM2RkNzM1IDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMTcxLDcgKzE3MSwxMiBAQCBvcHRpb24oR0xNX0lOU1RBTExfRU5BQkxFICJHTE0gaW5zdGFsbCIgT04pCisgCisgc2V0KEdMTV9JTlNUQUxMX0NPTkZJR0RJUiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vY21ha2UvZ2xtIikKKyBpZiAoR0xNX0lOU1RBTExfRU5BQkxFKQorLQlpbnN0YWxsKERJUkVDVE9SWSBnbG0gREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9KQorKwlpbnN0YWxsKERJUkVDVE9SWSBnbG0KKysJCURFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfQorKwkJRklMRVNfTUFUQ0hJTkcKKysJCQlQQVRURVJOICIqLmgiCisrCQkJUEFUVEVSTiAiKi5ocHAiCisrCQkJUEFUVEVSTiAiKi5pbmwiKQorIAlpbnN0YWxsKEZJTEVTICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vZXhwZXJpbWVudGFsLmhwcCIgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9L2dsbSkKKyBlbmRpZigpCisgCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbG0vZ2xtXzAuOS44LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbG0vZ2xtXzAuOS44LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExNzRmMmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xtL2dsbV8wLjkuOC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuR0wgTWF0aGVtYXRpY3MgTGlicmFyeSIKLURFU0NSSVBUSU9OID0gIk9wZW5HTCBNYXRoZW1hdGljcyAoR0xNKSBpcyBhIGhlYWRlciBvbmx5IEMrKyBcCi1tYXRoZW1hdGljcyBsaWJyYXJ5IGZvciBncmFwaGljcyBzb2Z0d2FyZSBiYXNlZCBvbiB0aGUgT3BlbkdMIFwKLVNoYWRpbmcgTGFuZ3VhZ2UgKEdMU0wpIHNwZWNpZmljYXRpb25zLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2xtLmctdHJ1Yy5uZXQiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nLXRydWMvZ2xtL2lzc3VlcyIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NvcHlpbmcudHh0O21kNT00NDMxNjA2ZDE0NDI1MjE0M2M5YzNkZjM4NGE3NGNhZCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ctdHJ1Yy9nbG07YnJhbmNoPTAuOS44IgotU1JDUkVWID0gIjZmYTIwM2VlYjdmYmNiYjZmNjIwNTAxZmFkNDAzNTljOGE0NTYwNDkiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbG0vZ2xtXzAuOS45LWEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xtL2dsbV8wLjkuOS1hMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTJlZTIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xtL2dsbV8wLjkuOS1hMi5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIk9wZW5HTCBNYXRoZW1hdGljcyBMaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiT3BlbkdMIE1hdGhlbWF0aWNzIChHTE0pIGlzIGEgaGVhZGVyIG9ubHkgQysrIFwKK21hdGhlbWF0aWNzIGxpYnJhcnkgZm9yIGdyYXBoaWNzIHNvZnR3YXJlIGJhc2VkIG9uIHRoZSBPcGVuR0wgXAorU2hhZGluZyBMYW5ndWFnZSAoR0xTTCkgc3BlY2lmaWNhdGlvbnMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9nbG0uZy10cnVjLm5ldCIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ctdHJ1Yy9nbG0vaXNzdWVzIgorCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcmVhZG1lLm1kO2JlZ2lubGluZT0yMTtlbmRsaW5lPTIyO21kNT0zMDc1YjU3MjdkMzZmMjllZGNjZjk3YjkzZTcyYjc5MCIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vZy10cnVjL2dsbTticmFuY2g9bWFzdGVyIFwKKyAgICBmaWxlOi8vMDAwMS1NYWtlLUdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMLWEtY29uZmlndXJhYmxlLW9wdGlvbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItZ2xtLWluc3RhbGwtaGVhZGVycy1vbmx5LnBhdGNoIFwKKyIKK1NSQ1JFViA9ICJmY2JlZGY1MDU4ZWY4NjEzZGQwMmFhYzYyZWYwMGQ1NWRjZmVhZGQ3IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitFWFRSQV9PRUNNQUtFID0gIi1ER0xNX0VOQUJMRV9FWFBFUklNRU5UQUw9T04iCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2dwaG90bzItMi41LjgvMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2dwaG90bzIvMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvZ3Bob3RvMi0yLjUuOC8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtQU1fUE9fU1VCRElSUy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9ncGhvdG8yLzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1BTV9QT19TVUJESVJTLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2dwaG90bzItMi41LjgvMDAwMi1Mb29rLWZvci1wb3B0LXdpdGgtR1BfQ0hFQ0tfTElCUkFSWS1mdW5jdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvZ3Bob3RvMi8wMDAyLUxvb2stZm9yLXBvcHQtd2l0aC1HUF9DSEVDS19MSUJSQVJZLWZ1bmN0aW9uLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2dwaG90bzItMi41LjgvMDAwMi1Mb29rLWZvci1wb3B0LXdpdGgtR1BfQ0hFQ0tfTElCUkFSWS1mdW5jdGlvbi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9ncGhvdG8yLzAwMDItTG9vay1mb3ItcG9wdC13aXRoLUdQX0NIRUNLX0xJQlJBUlktZnVuY3Rpb24ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvZ3Bob3RvMl8yLjUuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2dwaG90bzJfMi41LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YWQ3ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2dwaG90bzJfMi41LjE0LmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiZ3Bob3RvMiAtIGEgY29tbWFuZC1saW5lIGZyb250ZW5kIHRvIGxpYmdwaG90bzIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdwaG90by5jb20vIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorCitERVBFTkRTID0gImxpYmdwaG90bzIgcG9wdCByZWFkbGluZSIKK1JERVBFTkRTX2dwaG90bzIgPSAibGliZ3Bob3RvMiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZ3Bob3RvL2dwaG90bzItJHtQVn0udGFyLmJ6MjtuYW1lPWdwaG90bzIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Mb29rLWZvci1wb3B0LXdpdGgtR1BfQ0hFQ0tfTElCUkFSWS1mdW5jdGlvbi5wYXRjaCBcCisiCisKK1NSQ19VUklbZ3Bob3RvMi5tZDVzdW1dID0gIjZjNmEyMWI1ZTg3OTMzMGNkZDcxZWY5MmRjZTM2Mzk5IgorU1JDX1VSSVtncGhvdG8yLnNoYTI1NnN1bV0gPSAiOTMwMmQwMmZiNDcyZDQ5MzY5ODgzODJiNzI3N2NjZGM0ZWRhZjdlZGU1NmM0OTAyNzg5MTJmZmQwNjI3Njk5YyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtanBlZy1wcmVmaXg9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY2RrIFwKKyIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9ncGhvdG8yXzIuNS44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9ncGhvdG8yXzIuNS44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmQyODNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvZ3Bob3RvMl8yLjUuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiZ3Bob3RvMiAtIGEgY29tbWFuZC1saW5lIGZyb250ZW5kIHRvIGxpYmdwaG90bzIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdwaG90by5jb20vIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotCi1ERVBFTkRTID0gImxpYmdwaG90bzIgcG9wdCByZWFkbGluZSIKLVJERVBFTkRTX2dwaG90bzIgPSAibGliZ3Bob3RvMiIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZ3Bob3RvL2dwaG90bzItJHtQVn0udGFyLmJ6MjtuYW1lPWdwaG90bzIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1Mb29rLWZvci1wb3B0LXdpdGgtR1BfQ0hFQ0tfTElCUkFSWS1mdW5jdGlvbi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbZ3Bob3RvMi5tZDVzdW1dID0gImJhZTM2OWFlZTY4ODFlNTkwYzVjOTFiZGJiMTFhNWY4IgotU1JDX1VSSVtncGhvdG8yLnNoYTI1NnN1bV0gPSAiYTlhYmNkMTVkOTVmMjA1MzE4ZDE3ZTNhYzEyYWY3Y2U1MjNkMmJjNDk0MzcwOWQ1MGIwYTEyYzMwY2M1ZWU0ZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtanBlZy1wcmVmaXg9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY2RrIFwKLSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzAwMDEtc2NyaXB0cy1yZW1vdmUtYmFzaGlzbXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMDAwMS1zY3JpcHRzLXJlbW92ZS1iYXNoaXNtcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUwZGM4Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMDAwMS1zY3JpcHRzLXJlbW92ZS1iYXNoaXNtcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi1Gcm9tIGMwMGU2M2U5N2Q4NzE4ODM2YmEwMTFkOTE3MjEyODczMmVlY2YwMDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBJc21vIFB1dXN0aW5lbiA8aXNtby5wdXVzdGluZW5AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAyNCBKYW4gMjAxNyAyMjoyNDowNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBzY3JpcHRzOiByZW1vdmUgYmFzaGlzbXMuCi0KLUNvbnZlcnQgYmFzaCBzY3JpcHRzIHRvIG1vcmUgZ2VuZXJpYyBzaGVsbCBzY3JpcHRzLiBUaGlzIHJlbW92ZXMgdGhlCi1zdHJpY3QgYmFzaCBkZXBlbmRlbmN5IGFuZCB0aGUgc2NyaXB0cyBzaG91bGQgbm93IHJ1biB3aXRoIGFueSBwb3NpeAotc2hlbGwuIEFsc28gZml4IHRoZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgc2hlbGxjaGVjayB3aGlsZSBhdCBpdC4KLQotVXBzdHJlYW0tc3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2dwaG90by9saWJncGhvdG8yL2NvbW1pdC8zOWI0Mzk1NTMyMDU4YzBlZGI5YTU2ZDBmZjA0ZTQ4YTQ3MmU0NzQzXQotCi0tLS0KLSBwYWNrYWdpbmcvZ2VuZXJpYy9jaGVjay1wdHAtY2FtZXJhICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvZ3Bob3RvLXNldC1wcm9jcGVybSB8IDE0ICsrKysrKystLS0tLS0tCi0gcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLmNvbnNvbGUgICAgICB8ICA0ICsrLS0KLSBwYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0uZ3JvdXAgICAgICAgIHwgIDIgKy0KLSBwYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0udXNlciAgICAgICAgIHwgIDIgKy0KLSBwYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0ueDExLWFwcCAgICAgIHwgIDQgKystLQotIDYgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wYWNrYWdpbmcvZ2VuZXJpYy9jaGVjay1wdHAtY2FtZXJhIGIvcGFja2FnaW5nL2dlbmVyaWMvY2hlY2stcHRwLWNhbWVyYQotaW5kZXggMTc5M2ZjOC4uYmMzYzZhYyAxMDA2NDQKLS0tLSBhL3BhY2thZ2luZy9nZW5lcmljL2NoZWNrLXB0cC1jYW1lcmEKLSsrKyBiL3BhY2thZ2luZy9nZW5lcmljL2NoZWNrLXB0cC1jYW1lcmEKLUBAIC0xLDQgKzEsNCBAQAotLSMhL2Jpbi9iYXNoCi0rIyEvYmluL3NoCi0gIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLUBAIC0yMCwxMyArMjAsMTMgQEAgSU5URVJGQUNFPSIkezE6LTA2LzAxLzAxfSIKLSAKLSBCQVNFTkFNRT0ke0RFVlBBVEgjIyovfQotIGZvciBkIGluIC9zeXMvJHtERVZQQVRIfS8ke0JBU0VOQU1FfToqOyBkbwotLQlbWyAtZCAke2R9IF1dIHx8IGNvbnRpbnVlCi0tCUlOVEVSRkFDRUlEPSIkKDwgJHtkfS9iSW50ZXJmYWNlQ2xhc3MpIgotLQlJTlRFUkZBQ0VJRD0iJHtJTlRFUkZBQ0VJRH0vJCg8ICR7ZH0vYkludGVyZmFjZVN1YkNsYXNzKSIKLS0JSU5URVJGQUNFSUQ9IiR7SU5URVJGQUNFSUR9LyQoPCAke2R9L2JJbnRlcmZhY2VQcm90b2NvbCkiCi0rCVsgLWQgIiR7ZH0iIF0gfHwgY29udGludWUKLSsJSU5URVJGQUNFSUQ9IiQoY2F0ICIke2R9Ii9iSW50ZXJmYWNlQ2xhc3MpIgotKwlJTlRFUkZBQ0VJRD0iJHtJTlRFUkZBQ0VJRH0vJChjYXQgIiR7ZH0iL2JJbnRlcmZhY2VTdWJDbGFzcykiCi0rCUlOVEVSRkFDRUlEPSIke0lOVEVSRkFDRUlEfS8kKGNhdCAiJHtkfSIvYkludGVyZmFjZVByb3RvY29sKSIKLSAKLSAJI2VjaG8gJHtkfTogJHtJTlRFUkZBQ0VJRH0KLS0JaWYgW1sgJHtJTlRFUkZBQ0V9ID09ICR7SU5URVJGQUNFSUR9IF1dOyB0aGVuCi0rCWlmIFsgIiR7SU5URVJGQUNFfSIgPSAiJHtJTlRFUkZBQ0VJRH0iIF07IHRoZW4KLSAJCSMgRm91bmQgaW50ZXJmYWNlCi0gCQlleGl0IDAKLSAJZmkKLWRpZmYgLS1naXQgYS9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy9ncGhvdG8tc2V0LXByb2NwZXJtIGIvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvZ3Bob3RvLXNldC1wcm9jcGVybQotaW5kZXggZDcyZWU2OC4uOTc3Y2JmNSAxMDA2NDQKLS0tLSBhL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL2dwaG90by1zZXQtcHJvY3Blcm0KLSsrKyBiL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL2dwaG90by1zZXQtcHJvY3Blcm0KLUBAIC0xLDQgKzEsNCBAQAotLSMhL2Jpbi9iYXNoCi0rIyEvYmluL3NoCi0gIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLUBAIC0xOCwyMiArMTgsMjIgQEAKLSAjIFRoaXMgaXMgdGFrZW4gZnJvbSBGZWRvcmEgQ29yZSBncGhvdG8yIHBhY2thZ2UuCi0gIyBodHRwOi8vY3ZzLmZlZG9yYS5yZWRoYXQuY29tL3ZpZXdjdnMvKmNoZWNrb3V0Ki9kZXZlbC9ncGhvdG8yL2dwaG90by1zZXQtcHJvY3Blcm0KLSAKLS1jb25zb2xlX3VzZXI9YGNhdCAvdmFyL3J1bi9jb25zb2xlL2NvbnNvbGUubG9ja2AgCi0rY29uc29sZV91c2VyPSQoY2F0IC92YXIvcnVuL2NvbnNvbGUvY29uc29sZS5sb2NrKQotIAotIGlmIFsgLXogIiRjb25zb2xlX3VzZXIiIF0gOyB0aGVuCi0gICBleGl0IDEgCi0gZmkKLSAKLS1pZiBbIC16ICIkSEFMX1BST1BfVVNCX0JVU19OVU1CRVIiIC1vIC16ICIkSEFMX1BST1BfVVNCX0xJTlVYX0RFVklDRV9OVU1CRVIiIF0gOyB0aGVuCi0raWYgWyAteiAiJEhBTF9QUk9QX1VTQl9CVVNfTlVNQkVSIiBdIHx8IFsgLXogIiRIQUxfUFJPUF9VU0JfTElOVVhfREVWSUNFX05VTUJFUiIgXSA7IHRoZW4KLSAgIGV4aXQgMSAKLSBmaQotIAotLWlmIFsgJEhBTF9QUk9QX1VTQl9CVVNfTlVNQkVSIC1sdCAwIC1vICAkSEFMX1BST1BfVVNCX0xJTlVYX0RFVklDRV9OVU1CRVIgLWx0IDAgXSA7IHRoZW4KLStpZiBbICIkSEFMX1BST1BfVVNCX0JVU19OVU1CRVIiIC1sdCAwIF0gfHwgWyAiJEhBTF9QUk9QX1VTQl9MSU5VWF9ERVZJQ0VfTlVNQkVSIiAtbHQgMCBdIDsgdGhlbgotICAgZXhpdCAxIAotIGZpCi0gCi0gCi0tYnVzX251bT1gcHJpbnRmICUuM3UgJEhBTF9QUk9QX1VTQl9CVVNfTlVNQkVSYAotLWRldl9udW09YHByaW50ZiAlLjN1ICRIQUxfUFJPUF9VU0JfTElOVVhfREVWSUNFX05VTUJFUmAKLStidXNfbnVtPSQocHJpbnRmICUuM3UgIiRIQUxfUFJPUF9VU0JfQlVTX05VTUJFUiIpCi0rZGV2X251bT0kKHByaW50ZiAlLjN1ICIkSEFMX1BST1BfVVNCX0xJTlVYX0RFVklDRV9OVU1CRVIiKQotIAotLWNob3duICRjb25zb2xlX3VzZXIgL3Byb2MvYnVzL3VzYi8kYnVzX251bS8kZGV2X251bSAKLStjaG93biAiJGNvbnNvbGVfdXNlciIgL3Byb2MvYnVzL3VzYi8iJGJ1c19udW0iLyIkZGV2X251bSIKLWRpZmYgLS1naXQgYS9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0uY29uc29sZSBiL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL3VzYmNhbS5jb25zb2xlCi1pbmRleCBkNzIxMjhmLi43YWM2ZGM1IDEwMDc1NQotLS0tIGEvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLmNvbnNvbGUKLSsrKyBiL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL3VzYmNhbS5jb25zb2xlCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vYmFzaAotKyMhL2Jpbi9zaAotICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi1AQCAtNTAsNyArNTAsNyBAQCB0aGVuCi0gICAgICAgICAvdmFyL2xvY2svY29uc29sZS5sb2NrCi0gICAgIGRvCi0gICAgICAgICBpZiBbIC1mICIkY29ubG9jayIgXTsgdGhlbgotLQkgICAgQ09OU09MRU9XTkVSPWBjYXQgJGNvbmxvY2tgCi0rICAgICAgICAgICAgQ09OU09MRU9XTkVSPSQoY2F0ICRjb25sb2NrKQotICAgICAgICAgZmkKLSAgICAgZG9uZQotICAgICBpZiBbIC1uICIkQ09OU09MRU9XTkVSIiBdCi1kaWZmIC0tZ2l0IGEvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLmdyb3VwIGIvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLmdyb3VwCi1pbmRleCBmOTZjMzNkLi44NzYxZmFjIDEwMDc1NQotLS0tIGEvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLmdyb3VwCi0rKysgYi9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0uZ3JvdXAKLUBAIC0xLDQgKzEsNCBAQAotLSMhL2Jpbi9iYXNoCi0rIyEvYmluL3NoCi0gIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLWRpZmYgLS1naXQgYS9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0udXNlciBiL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL3VzYmNhbS51c2VyCi1pbmRleCBjNDZmMTU1Li5hM2JhNzFhIDEwMDY0NAotLS0tIGEvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLnVzZXIKLSsrKyBiL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL3VzYmNhbS51c2VyCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vYmFzaAotKyMhL2Jpbi9zaAotICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi1kaWZmIC0tZ2l0IGEvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLngxMS1hcHAgYi9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0ueDExLWFwcAotaW5kZXggMDIzYWU5Yi4uNjE4ZTdkYiAxMDA2NDQKLS0tLSBhL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL3VzYmNhbS54MTEtYXBwCi0rKysgYi9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0ueDExLWFwcAotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotQEAgLTY5LDcgKzY5LDcgQEAgdGhlbgotICAgICBpZiBbICIke1VTRVJ9IiAhPSAicm9vdCIgXQotICAgICB0aGVuCi0gCSMgd2UgZG9uJ3Qgd2FudCB0byBydW4gdGhpcyBhcyByb290LiBkZWZpbml0ZWx5IG5vdC4KLS0JY2QgIiR7RElSRUNUT1JZfSIKLSsJY2QgIiR7RElSRUNUT1JZfSIgfHwgZXhpdCAxCi0gCXVzcmhvbWU9fiR7VVNFUn0KLSAJIiR7U1V9IiAiJHtVU0VSfSIgLWMgIiR7RU5WfSBESVNQTEFZPSR7RElTUExBWX0gSE9NRT0ke3VzcmhvbWV9ICR7WDExX0FQUH0iCi0gICAgIGZpCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi0yLjUuOC8wMDAyLWNvcnJlY3QtanBlZy1tZW1zcmNkZXN0LXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMDAwMi1jb3JyZWN0LWpwZWctbWVtc3JjZGVzdC1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjJkODZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi0yLjUuOC8wMDAyLWNvcnJlY3QtanBlZy1tZW1zcmNkZXN0LXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0tLS0gbGliZ3Bob3RvMi0yLjUuOC9jYW1saWJzL2F4MjAzL2pwZWdfbWVtc3JjZGVzdC5oLm9yaWcJMjAxNi0wNi0xNSAwOTowMzoyMC42MjU3NzQ2ODQgLTA0MDAKLSsrKyBsaWJncGhvdG8yLTIuNS44L2NhbWxpYnMvYXgyMDMvanBlZ19tZW1zcmNkZXN0LmgJMjAxNi0wNi0xNSAwOTowMzo0Ny4wNDk3NzQxNDggLTA0MDAKLUBAIC0xLDUgKzEsNyBAQAotICNpbmNsdWRlIDxqcGVnbGliLmg+Ci0gCi0rI2lmIEpQRUdfTElCX1ZFUlNJT04gPCA4MCAmJiAhZGVmaW5lZChNRU1fU1JDRFNUX1NVUFBPUlRFRCkKLSsKLSB2b2lkCi0ganBlZ19tZW1fc3JjIChqX2RlY29tcHJlc3NfcHRyIGNpbmZvLCB1bnNpZ25lZCBjaGFyICogYnVmZmVyLAotIAl1bnNpZ25lZCBsb25nIGJ1ZnNpemUpOwotQEAgLTcsMyArOSw1IEBACi0gdm9pZAotIGpwZWdfbWVtX2Rlc3QgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCB1bnNpZ25lZCBjaGFyICoqIG91dGJ1ZmZlciwKLSAJdW5zaWduZWQgbG9uZyAqIG91dHNpemUpOwotKwotKyNlbmRpZgotLS0tIGxpYmdwaG90bzItMi41LjgvY2FtbGlicy9heDIwMy9qcGVnX21lbXNyY2Rlc3QuYy5vcmlnCTIwMTYtMDYtMTUgMDk6MDM6NTguNjg5NzczOTEzIC0wNDAwCi0rKysgbGliZ3Bob3RvMi0yLjUuOC9jYW1saWJzL2F4MjAzL2pwZWdfbWVtc3JjZGVzdC5jCTIwMTYtMDYtMTUgMDk6MDQ6MTcuNzY5NzczNTI2IC0wNDAwCi1AQCAtMjYsNyArMjYsNyBAQAotIAotIC8qIGxpYmpwZWc4IGFuZCBsYXRlciBjb21lIHdpdGggdGhlaXIgb3duIChBUEkgY29tcGF0aWJsZSkgbWVtb3J5IHNvdXJjZQotICAgIGFuZCBkZXN0ICovCi0tI2lmIEpQRUdfTElCX1ZFUlNJT04gPCA4MAotKyNpZiBKUEVHX0xJQl9WRVJTSU9OIDwgODAgICYmICFkZWZpbmVkKE1FTV9TUkNEU1RfU1VQUE9SVEVEKQotIAotIC8qIEV4cGFuZGVkIGRhdGEgc291cmNlIG9iamVjdCBmb3IgbWVtb3J5IGlucHV0ICovCi0gCi0tLS0gbGliZ3Bob3RvMi0yLjUuOC9jYW1saWJzL2psMjAwNWMvanBlZ19tZW1zcmNkZXN0Lmgub3JpZwkyMDE2LTA2LTE1IDA5OjA1OjAxLjg5Mzc3MjYzMiAtMDQwMAotKysrIGxpYmdwaG90bzItMi41LjgvY2FtbGlicy9qbDIwMDVjL2pwZWdfbWVtc3JjZGVzdC5oCTIwMTYtMDYtMTUgMDk6MDU6MTcuNDMzNzcyMzE4IC0wNDAwCi1AQCAtMSw1ICsxLDcgQEAKLSAjaW5jbHVkZSA8anBlZ2xpYi5oPgotIAotKyNpZiBKUEVHX0xJQl9WRVJTSU9OIDwgODAgJiYgIWRlZmluZWQoTUVNX1NSQ0RTVF9TVVBQT1JURUQpCi0rCi0gdm9pZAotIGpwZWdfbWVtX3NyYyAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgdW5zaWduZWQgY2hhciAqIGJ1ZmZlciwKLSAJdW5zaWduZWQgbG9uZyBidWZzaXplKTsKLUBAIC03LDMgKzksNSBAQAotIHZvaWQKLSBqcGVnX21lbV9kZXN0IChqX2NvbXByZXNzX3B0ciBjaW5mbywgdW5zaWduZWQgY2hhciAqKiBvdXRidWZmZXIsCi0gCXVuc2lnbmVkIGxvbmcgKiBvdXRzaXplKTsKLSsKLSsjZW5kaWYKLS0tLSBsaWJncGhvdG8yLTIuNS44L2NhbWxpYnMvamwyMDA1Yy9qcGVnX21lbXNyY2Rlc3QuYy5vcmlnCTIwMTYtMDYtMTUgMDk6MDQ6NDIuNjQxNzczMDIyIC0wNDAwCi0rKysgbGliZ3Bob3RvMi0yLjUuOC9jYW1saWJzL2psMjAwNWMvanBlZ19tZW1zcmNkZXN0LmMJMjAxNi0wNi0xNSAwOTowNDo0OC42NTc3NzI5MDEgLTA0MDAKLUBAIC0yNiw3ICsyNiw3IEBACi0gCi0gLyogbGlianBlZzggYW5kIGxhdGVyIGNvbWUgd2l0aCB0aGVpciBvd24gKEFQSSBjb21wYXRpYmxlKSBtZW1vcnkgc291cmNlCi0gICAgYW5kIGRlc3QgKi8KLS0jaWYgSlBFR19MSUJfVkVSU0lPTiA8IDgwCi0rI2lmIEpQRUdfTElCX1ZFUlNJT04gPCA4MCAgJiYgIWRlZmluZWQoTUVNX1NSQ0RTVF9TVVBQT1JURUQpCi0gCi0gLyogRXhwYW5kZWQgZGF0YSBzb3VyY2Ugb2JqZWN0IGZvciBtZW1vcnkgaW5wdXQgKi8KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi0yLjUuOC9hdm9pZF91c2luZ19zcHJpbnRmLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44L2F2b2lkX3VzaW5nX3NwcmludGYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiYTRjNjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44L2F2b2lkX3VzaW5nX3NwcmludGYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotRnJvbSA0YWRmZTVhNmM5ZGIwNzUzN2RmMzAyZjNjMTc3MTM1MTViZjIzYTJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+Ci1EYXRlOiBTYXQsIDExIEp1bCAyMDE1IDA5OjM4OjEzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2b2lkIHVzZSBvZiBzcHJpbnRmIHRvIGNvbnZlcnQgJSUgdG8gJSwgZHVwbGljYXRlIHRoZSBtYWNybwotCi1naXQtc3ZuLWlkOiBodHRwczovL3N2bi5jb2RlLnNmLm5ldC9wL2dwaG90by9jb2RlL3RydW5rL2xpYmdwaG90bzJAMTU0OTAgNjdlZDc3NzgtNzM4OC00NGFiLTkwY2YtMGEyOTFmNjVmNTdjCi0tLS0KLSBjYW1saWJzL3B0cDIvY2hkay5jICAgICB8ICA4ICsrLS0tCi0gY2FtbGlicy9wdHAyL2NoZGtfcHRwLmggfCA4MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2FtbGlicy9wdHAyL2NoZGsuYyBiL2NhbWxpYnMvcHRwMi9jaGRrLmMKLWluZGV4IDVmYjg0ZWEuLjNiOGE5OTUgMTAwNjQ0Ci0tLS0gYS9jYW1saWJzL3B0cDIvY2hkay5jCi0rKysgYi9jYW1saWJzL3B0cDIvY2hkay5jCi1AQCAtMTExOSwxOCArMTExOSwxNCBAQCBjaGRrX2NhbWVyYV9jYXB0dXJlIChDYW1lcmEgKmNhbWVyYSwgQ2FtZXJhQ2FwdHVyZVR5cGUgdHlwZSwgQ2FtZXJhRmlsZVBhdGggKnBhdAotIAlpbnQJCXJldCwgcmV0aW50OwotIAljaGFyCQkqdGFibGUsICpzOwotIAlQVFBQYXJhbXMJKnBhcmFtcyA9ICZjYW1lcmEtPnBsLT5wYXJhbXM7Ci0tCWNoYXIJCSpsdWE7Ci0tCWNvbnN0IGNoYXIJKmx1YXNjcmlwdCA9CVBUUF9DSERLX0xVQV9TRVJJQUxJWkVfTVNHUyBcCi0rCWNvbnN0IGNoYXIJKmx1YXNjcmlwdCA9IFBUUF9DSERLX0xVQV9TRVJJQUxJWkVfTVNHU19TSU1QTEVRVU9URSBcCi0gCQkJCVBUUF9DSERLX0xVQV9STElCX1NIT09UCVwKLSAJCQkJInJldHVybiBybGliX3Nob290KHtpbmZvPXRydWV9KTtcbiI7Ci0gCi0gCXJldCA9ICBjYW1lcmFfcHJlcGFyZV9jaGRrX2NhcHR1cmUoY2FtZXJhLCBjb250ZXh0KTsKLSAJaWYgKHJldCAhPSBHUF9PSykgcmV0dXJuIHJldDsKLSAKLS0JbHVhID0gbWFsbG9jKHN0cmxlbihsdWFzY3JpcHQpKzEpOwotLQlzcHJpbnRmKGx1YSxsdWFzY3JpcHQpOyAvKiBUaGlzIGV4cGFuZHMgdGhlICVxIGluc2lkZSB0aGUgc3RyaW5nIHRvbyAuLi4gZG8gbm90IG9wdGltaXplIGF3YXkuICovCi0tCXJldCA9IGNoZGtfZ2VuZXJpY19zY3JpcHRfcnVuIChwYXJhbXMsIGx1YSwgJnRhYmxlLCAmcmV0aW50LCBjb250ZXh0KTsKLS0JZnJlZSAobHVhKTsKLSsJcmV0ID0gY2hka19nZW5lcmljX3NjcmlwdF9ydW4gKHBhcmFtcywgbHVhc2NyaXB0LCAmdGFibGUsICZyZXRpbnQsIGNvbnRleHQpOwotIAlHUF9MT0dfRCgicmxpYl9zaG9vdCByZXR1cm5lZCB0YWJsZSAlcywgcmV0aW50ICVkXG4iLCB0YWJsZSwgcmV0aW50KTsKLSAJcyA9IHN0cnN0cih0YWJsZSwgImV4cD0iKTsKLSAJaWYgKHMpIHsKLWRpZmYgLS1naXQgYS9jYW1saWJzL3B0cDIvY2hka19wdHAuaCBiL2NhbWxpYnMvcHRwMi9jaGRrX3B0cC5oCi1pbmRleCBkMTFlMGI3Li42NWRjZmQ3IDEwMDY0NAotLS0tIGEvY2FtbGlicy9wdHAyL2NoZGtfcHRwLmgKLSsrKyBiL2NhbWxpYnMvcHRwMi9jaGRrX3B0cC5oCi1AQCAtMTk4LDEwICsxOTgsOTIgQEAgZnVuY3Rpb24gc2VyaWFsaXplKHYsb3B0cylcblwKLSAJcmV0dXJuIHRhYmxlLmNvbmNhdChyKVxuXAotIGVuZFxuIgotIAotKyNkZWZpbmUgUFRQX0NIREtfTFVBX1NFUklBTElaRV9TSU1QTEVRVU9URSAiXG5cCi0rc2VyaWFsaXplX3IgPSBmdW5jdGlvbih2LG9wdHMscixzZWVuLGRlcHRoKVxuXAotKwlsb2NhbCB2dCA9IHR5cGUodilcblwKLSsJaWYgdnQgPT0gJ25pbCcgb3IgIHZ0ID09ICdib29sZWFuJyBvciB2dCA9PSAnbnVtYmVyJyB0aGVuXG5cCi0rCQl0YWJsZS5pbnNlcnQocix0b3N0cmluZyh2KSlcblwKLSsJCXJldHVyblxuXAotKwllbmRcblwKLSsJaWYgdnQgPT0gJ3N0cmluZycgdGhlblxuXAotKwkJdGFibGUuaW5zZXJ0KHIsc3RyaW5nLmZvcm1hdCgnJXEnLHYpKVxuXAotKwkJcmV0dXJuXG5cCi0rCWVuZFxuXAotKwlpZiB2dCA9PSAndGFibGUnIHRoZW5cblwKLSsJCWlmIG5vdCBkZXB0aCB0aGVuXG5cCi0rCQkJZGVwdGggPSAxXG5cCi0rCQllbmRcblwKLSsJCWlmIGRlcHRoID49IG9wdHMubWF4ZGVwdGggdGhlblxuXAotKwkJCWVycm9yKCdzZXJpYWxpemU6IG1heCBkZXB0aCcpXG5cCi0rCQllbmRcblwKLSsJCWlmIG5vdCBzZWVuIHRoZW5cblwKLSsJCQlzZWVuPXt9XG5cCi0rCQllbHNlaWYgc2Vlblt2XSB0aGVuXG5cCi0rCQkJaWYgb3B0cy5lcnJfY3ljbGUgdGhlblxuXAotKwkJCQllcnJvcignc2VyaWFsaXplOiBjeWNsZScpXG5cCi0rCQkJZWxzZVxuXAotKwkJCQl0YWJsZS5pbnNlcnQociwnXCJjeWNsZTonLi50b3N0cmluZyh2KS4uJ1wiJylcblwKLSsJCQkJcmV0dXJuXG5cCi0rCQkJZW5kXG5cCi0rCQllbmRcblwKLSsJCXNlZW5bdl0gPSB0cnVlO1xuXAotKwkJdGFibGUuaW5zZXJ0KHIsJ3snKVxuXAotKwkJZm9yIGssdjEgaW4gcGFpcnModikgZG9cblwKLSsJCQlpZiBvcHRzLnByZXR0eSB0aGVuXG5cCi0rCQkJCXRhYmxlLmluc2VydChyLCdcXG4nLi5zdHJpbmcucmVwKCcgJyxkZXB0aCkpXG5cCi0rCQkJZW5kXG5cCi0rCQkJaWYgdHlwZShrKSA9PSAnc3RyaW5nJyBhbmQgc3RyaW5nLm1hdGNoKGssJ15bXyVhXVslYSVkX10qJCcpIHRoZW5cblwKLSsJCQkJdGFibGUuaW5zZXJ0KHIsaylcblwKLSsJCQllbHNlXG5cCi0rCQkJCXRhYmxlLmluc2VydChyLCdbJylcblwKLSsJCQkJc2VyaWFsaXplX3IoayxvcHRzLHIsc2VlbixkZXB0aCsxKVxuXAotKwkJCQl0YWJsZS5pbnNlcnQociwnXScpXG5cCi0rCQkJZW5kXG5cCi0rCQkJdGFibGUuaW5zZXJ0KHIsJz0nKVxuXAotKwkJCXNlcmlhbGl6ZV9yKHYxLG9wdHMscixzZWVuLGRlcHRoKzEpXG5cCi0rCQkJdGFibGUuaW5zZXJ0KHIsJywnKVxuXAotKwkJZW5kXG5cCi0rCQlpZiBvcHRzLnByZXR0eSB0aGVuXG5cCi0rCQkJdGFibGUuaW5zZXJ0KHIsJ1xcbicuLnN0cmluZy5yZXAoJyAnLGRlcHRoLTEpKVxuXAotKwkJZW5kXG5cCi0rCQl0YWJsZS5pbnNlcnQociwnfScpXG5cCi0rCQlyZXR1cm5cblwKLSsJZW5kXG5cCi0rCWlmIG9wdHMuZXJyX3R5cGUgdGhlblxuXAotKwkJZXJyb3IoJ3NlcmlhbGl6ZTogdW5zdXBwb3J0ZWQgdHlwZSAnIC4uIHZ0LCAyKVxuXAotKwllbHNlXG5cCi0rCQl0YWJsZS5pbnNlcnQociwnXCInLi50b3N0cmluZyh2KS4uJ1wiJylcblwKLSsJZW5kXG5cCi0rZW5kXG5cCi0rc2VyaWFsaXplX2RlZmF1bHRzID0ge1xuXAotKwltYXhkZXB0aD0xMCxcblwKLSsJZXJyX3R5cGU9dHJ1ZSxcblwKLSsJZXJyX2N5Y2xlPXRydWUsXG5cCi0rCXByZXR0eT1mYWxzZSxcblwKLSt9XG5cCi0rZnVuY3Rpb24gc2VyaWFsaXplKHYsb3B0cylcblwKLSsJaWYgb3B0cyB0aGVuXG5cCi0rCQlmb3Igayx2IGluIHBhaXJzKHNlcmlhbGl6ZV9kZWZhdWx0cykgZG9cblwKLSsJCQlpZiBub3Qgb3B0c1trXSB0aGVuXG5cCi0rCQkJCW9wdHNba109dlxuXAotKwkJCWVuZFxuXAotKwkJZW5kXG5cCi0rCWVsc2VcblwKLSsJCW9wdHM9c2VyaWFsaXplX2RlZmF1bHRzXG5cCi0rCWVuZFxuXAotKwlsb2NhbCByPXt9XG5cCi0rCXNlcmlhbGl6ZV9yKHYsb3B0cyxyKVxuXAotKwlyZXR1cm4gdGFibGUuY29uY2F0KHIpXG5cCi0rZW5kXG4iCi0rCi0gI2RlZmluZSBQVFBfQ0hES19MVUFfU0VSSUFMSVpFX01TR1MgXAotIFBUUF9DSERLX0xVQV9TRVJJQUxJWkVcCi0gInVzYl9tc2dfdGFibGVfdG9fc3RyaW5nPXNlcmlhbGl6ZVxuIgotIAotKyNkZWZpbmUgUFRQX0NIREtfTFVBX1NFUklBTElaRV9NU0dTX1NJTVBMRVFVT1RFIFwKLStQVFBfQ0hES19MVUFfU0VSSUFMSVpFX1NJTVBMRVFVT1RFXAotKyJ1c2JfbXNnX3RhYmxlX3RvX3N0cmluZz1zZXJpYWxpemVcbiIKLSsKLSAjZGVmaW5lIFBUUF9DSERLX0xVQV9FWFRFTkRfVEFCTEUgXAotICJmdW5jdGlvbiBleHRlbmRfdGFibGUodGFyZ2V0LHNvdXJjZSxkZWVwKVxuXAotIAlpZiB0eXBlKHRhcmdldCkgfj0gJ3RhYmxlJyB0aGVuXG5cCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzIvMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi0yLjUuOC8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtQU1fUE9fU1VCRElSUy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1BTV9QT19TVUJESVJTLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMTAtY2FtZXJhLWxpYmdwaG90bzItZGV2aWNlLmZkaSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi8xMC1jYW1lcmEtbGliZ3Bob3RvMi1kZXZpY2UuZmRpCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMTAtY2FtZXJhLWxpYmdwaG90bzItZGV2aWNlLmZkaQpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLzEwLWNhbWVyYS1saWJncGhvdG8yLWRldmljZS5mZGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi0yLjUuOC8xMC1jYW1lcmEtbGliZ3Bob3RvMi5mZGkgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzIvMTAtY2FtZXJhLWxpYmdwaG90bzIuZmRpCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMTAtY2FtZXJhLWxpYmdwaG90bzIuZmRpCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzIvMTAtY2FtZXJhLWxpYmdwaG90bzIuZmRpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvNDAtbGliZ3Bob3RvMi5ydWxlcyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi80MC1saWJncGhvdG8yLnJ1bGVzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvNDAtbGliZ3Bob3RvMi5ydWxlcwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLzQwLWxpYmdwaG90bzIucnVsZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNjkxYzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjE2LmJiCkBAIC0wLDAgKzEsNTQgQEAKK1NVTU1BUlkgPSAibGliZ3Bob3RvMiBhbGxvd3MgeW91IHRvIGFjY2VzcyBkaWdpdGFsIGNhbWVyYXMiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDQ0OGQzNjc2YmMwZGUwMDQwNmFmMjI3ZDM0MWE0ZDEiCisKK0RFUEVORFMgPSAibGlidG9vbCBqcGVnIHZpcnR1YWwvbGlidXNiMCBsaWJleGlmIHpsaWIgbGlieG1sMiIKKworIyBUaGUgLmZkaSBhbmQgLnJ1bGVzIGZpbGVzIHdlcmUgZ2VuZXJhdGVkIHdpdGg6CisjICBsaWJncGhvdG8yLTIuNS44L3BhY2thZ2luZy9nZW5lcmljJCBxZW11LWFybSAtcyAxMDQ4NTc2IC1yIDIuNi4yNCAtTCAvT0UvYW5nc3Ryb20tZGV2L3N0YWdpbmcvYXJtdjV0ZS1hbmdzdHJvbS1saW51eC1nbnVlYWJpLyAubGlicy9wcmludC1jYW1lcmEtbGlzdAorIyBUaGV5IGFyZSByZWxlYXNlIHNwZWNpZmljLCBzbyBwbGVhc2UgcmVnZW4gd2hlbiBhZGRpbmcgbmV3IHJlbGVhc2VzCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2dwaG90by9saWJncGhvdG8yLSR7UFZ9LnRhci5iejI7bmFtZT1saWJncGhvdG8yIFwKKyAgICAgICAgICAgZmlsZTovLzEwLWNhbWVyYS1saWJncGhvdG8yLWRldmljZS5mZGkgXAorICAgICAgICAgICBmaWxlOi8vMTAtY2FtZXJhLWxpYmdwaG90bzIuZmRpIFwKKyAgICAgICAgICAgZmlsZTovLzQwLWxpYmdwaG90bzIucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2ggXAorIgorCitTUkNfVVJJW2xpYmdwaG90bzIubWQ1c3VtXSA9ICIwODRkMjIwZDA3OGQyOGMwYzdhM2JhMTNmNDQ3NjEyOCIKK1NSQ19VUklbbGliZ3Bob3RvMi5zaGEyNTZzdW1dID0gImU3NTc0MTZkMTYyM2UwMWE5ZDBkMjk0YjJlNzkwMTYyZTQzNGMwOTY0ZjUwZDNiN2ZmMWEzNDI0YjYyYTI5MDYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGxpYl9wYWNrYWdlCisKK0VYVFJBX09FQ09ORiA9ICIgLS13aXRoLWRyaXZlcnM9YWxsIHVkZXZzY3JpcHRkaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IGFjX2N2X2xpYl9sdGRsX2x0X2RsY2FsbGVyX3JlZ2lzdGVyPXllcyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZ2RdID0gIiwtLXdpdGhvdXQtZ2RsaWIsZ2QiCitQQUNLQUdFQ09ORklHW3NlcmlhbF0gPSAiLS1lbmFibGUtc2VyaWFsLC0tZGlzYWJsZS1zZXJpYWwsbG9ja2RldiIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKyAgICBjcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9saWJncGhvdG8yX3BvcnQvcG8vCisgICAgY2QgJHtTfS9saWJncGhvdG8yX3BvcnQvCisgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAke0VYVFJBX0FVVE9SRUNPTkZ9ICRhY3BhdGhzCisgICAgY2QgJHtTfQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2hhbC9mZGkvaW5mb3JtYXRpb24vMjB0aGlyZHBhcnR5CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5mZGkgJHtEfSR7ZGF0YWRpcn0vaGFsL2ZkaS9pbmZvcm1hdGlvbi8yMHRoaXJkcGFydHkvCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS8qLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KK30KKworUEFDS0FHRVMgPSsgImxpYmdwaG90b3BvcnQgbGliZ3Bob3RvMi1jYW1saWJzIgorRklMRVNfbGliZ3Bob3RvMi1jYW1saWJzID0gIiR7bGliZGlyfS9saWJncGhvdG8yKi8qLyouc28qIgorUlJFQ09NTUVORFNfJHtQTn0gPSAibGliZ3Bob3RvMi1jYW1saWJzIgorCitGSUxFU19saWJncGhvdG9wb3J0ID0gIiR7bGliZGlyfS9saWJncGhvdG8yX3BvcnQuc28uKiIKKworRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qICR7ZGF0YWRpcn0vaGFsIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vKi8qLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyovKi8qLmxhIgorRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2xpYmdwaG90bzJfcG9ydC8wLjEyLjAvdmNhbWVyYS9SRUFETUUudHh0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yXzIuNS44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yXzIuNS44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDM0YWY5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLVNVTU1BUlkgPSAibGliZ3Bob3RvMiBhbGxvd3MgeW91IHRvIGFjY2VzcyBkaWdpdGFsIGNhbWVyYXMiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDQ0OGQzNjc2YmMwZGUwMDQwNmFmMjI3ZDM0MWE0ZDEiCi0KLURFUEVORFMgPSAibGlidG9vbCBqcGVnIHZpcnR1YWwvbGlidXNiMCBsaWJleGlmIHpsaWIgbGlieG1sMiIKLQotIyBUaGUgLmZkaSBhbmQgLnJ1bGVzIGZpbGVzIHdlcmUgZ2VuZXJhdGVkIHdpdGg6Ci0jICBsaWJncGhvdG8yLTIuNS44L3BhY2thZ2luZy9nZW5lcmljJCBxZW11LWFybSAtcyAxMDQ4NTc2IC1yIDIuNi4yNCAtTCAvT0UvYW5nc3Ryb20tZGV2L3N0YWdpbmcvYXJtdjV0ZS1hbmdzdHJvbS1saW51eC1nbnVlYWJpLyAubGlicy9wcmludC1jYW1lcmEtbGlzdAotIyBUaGV5IGFyZSByZWxlYXNlIHNwZWNpZmljLCBzbyBwbGVhc2UgcmVnZW4gd2hlbiBhZGRpbmcgbmV3IHJlbGVhc2VzCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2dwaG90by9saWJncGhvdG8yLSR7UFZ9LnRhci5iejI7bmFtZT1saWJncGhvdG8yIFwKLSAgICAgICAgICAgZmlsZTovLzEwLWNhbWVyYS1saWJncGhvdG8yLWRldmljZS5mZGkgXAotICAgICAgICAgICBmaWxlOi8vMTAtY2FtZXJhLWxpYmdwaG90bzIuZmRpIFwKLSAgICAgICAgICAgZmlsZTovLzQwLWxpYmdwaG90bzIucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb3JyZWN0LWpwZWctbWVtc3JjZGVzdC1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkX3VzaW5nX3NwcmludGYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zY3JpcHRzLXJlbW92ZS1iYXNoaXNtcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbGliZ3Bob3RvMi5tZDVzdW1dID0gIjg3M2FiMDFhY2VkNDljNmI5MmE5OGU1MTVkYjVkY2VmIgotU1JDX1VSSVtsaWJncGhvdG8yLnNoYTI1NnN1bV0gPSAiMDMxYTI2MmUzNDJmYWU0M2Y3MjRhZmU2Njc4Nzk0N2NlMWZiNDgzMjc3ZGZlNWE4Y2YxZmJlOTJjNThlMjdiNiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgbGliX3BhY2thZ2UKLQotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtZHJpdmVycz1hbGwgdWRldnNjcmlwdGRpcj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgYWNfY3ZfbGliX2x0ZGxfbHRfZGxjYWxsZXJfcmVnaXN0ZXI9eWVzIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tnZF0gPSAiLC0td2l0aG91dC1nZGxpYixnZCIKLVBBQ0tBR0VDT05GSUdbc2VyaWFsXSA9ICItLWVuYWJsZS1zZXJpYWwsLS1kaXNhYmxlLXNlcmlhbCxsb2NrZGV2IgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgIGNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbiAke1N9L2xpYmdwaG90bzJfcG9ydC9wby8KLSAgICBjZCAke1N9L2xpYmdwaG90bzJfcG9ydC8KLSAgICBhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlICR7RVhUUkFfQVVUT1JFQ09ORn0gJGFjcGF0aHMKLSAgICBjZCAke1N9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vaGFsL2ZkaS9pbmZvcm1hdGlvbi8yMHRoaXJkcGFydHkKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8qLmZkaSAke0R9JHtkYXRhZGlyfS9oYWwvZmRpL2luZm9ybWF0aW9uLzIwdGhpcmRwYXJ0eS8KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotfQotCi1QQUNLQUdFUyA9KyAibGliZ3Bob3RvcG9ydCBsaWJncGhvdG8yLWNhbWxpYnMiCi1GSUxFU19saWJncGhvdG8yLWNhbWxpYnMgPSAiJHtsaWJkaXJ9L2xpYmdwaG90bzIqLyovKi5zbyoiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJsaWJncGhvdG8yLWNhbWxpYnMiCi0KLUZJTEVTX2xpYmdwaG90b3BvcnQgPSAiJHtsaWJkaXJ9L2xpYmdwaG90bzJfcG9ydC5zby4qIgotCi1GSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2LyogJHtkYXRhZGlyfS9oYWwiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8qLyovLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vKi8qLyoubGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ndGtwZXJmL2d0a3BlcmZfMC40MC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3BlcmYvZ3RrcGVyZl8wLjQwLmJiCmluZGV4IDJkYjkxOTAuLjQwOTQ1MTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3BlcmYvZ3RrcGVyZl8wLjQwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3BlcmYvZ3RrcGVyZl8wLjQwLmJiCkBAIC0xNiw3ICsxNiw5IEBACiAKIFMgPSAiJHtXT1JLRElSfS8ke0JQTn0iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZyBwa2djb25maWcgZ2V0dGV4dAoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIGJpbmNvbmZpZyBwa2djb25maWcgZ2V0dGV4dAorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAgICAgcm0gLWYgJHtTfS9tNC9pbml0Lm00CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyXzAuOS4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjExLmJiCmluZGV4IDQ1N2Q3MjEuLjM4ZGFjMDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjExLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjExLmJiCkBAIC0xMiw3ICsxMiw5IEBACiAKIFJERVBFTkRTXyR7UE59ICs9ICJsaWJwbmcgZ3RrKyBsaWJnY3J5cHQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZyBwa2djb25maWcKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBiaW5jb25maWcgcGtnY29uZmlnCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0xpYlZOQy9saWJ2bmNzZXJ2ZXIvYXJjaGl2ZS9MaWJWTkNTZXJ2ZXItJHtQVn0udGFyLmd6IgogU1JDX1VSSVttZDVzdW1dID0gIjdmMDYxMDRkNWMwMDk4MTNlOTUxNDI5MzJjNGRkYjA2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzLzAwMDEtRml4LXRoZS1lcnJvci1vZi1jYW4tdC1maW5kLWhlYWRlci1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzLzAwMDEtRml4LXRoZS1lcnJvci1vZi1jYW4tdC1maW5kLWhlYWRlci1maWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NWYzY2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXMvMDAwMS1GaXgtdGhlLWVycm9yLW9mLWNhbi10LWZpbmQtaGVhZGVyLWZpbGUucGF0Y2gKQEAgLTAsMCArMSwxMDEgQEAKK0Zyb20gZWIwMDg2ZGM0ZWE4ZmU5Y2RhMDY5NDU2Mjg3YjNhMjlhMjYzMWQzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorRGF0ZTogV2VkLCAxMyBEZWMgMjAxNyAxNjoxODo0NSArMDkwMAorU3ViamVjdDogW1BBVENIXSBGaXggdGhlIGVycm9yIG9mIGNhbid0IGZpbmQgaGVhZGVyIGZpbGUKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KK1RoaXMgZml4IGlzIGp1c3QgZm9yIHlvY3RvLgorCitTaWduZWQtb2ZmLWJ5OiBaaGVuZyBSdW9xaW4gPHpoZW5ncnEuZm5zdEBjbi5mdWppdHN1LmNvbT4KKy0tLQorIHNyYy9OQ0FwcGxpY2F0aW9uLmNjIHwgMiArLQorIHNyYy9OQ3N0eWxlLmggICAgICAgIHwgMiArLQorIHNyYy9OQ3Vyc2VzLmggICAgICAgIHwgMiArLQorIHNyYy9uY3Vyc2VzcC5oICAgICAgIHwgMiArLQorIHNyYy9uY3Vyc2Vzdy5jYyAgICAgIHwgMiArLQorIHNyYy9uY3Vyc2Vzdy5oICAgICAgIHwgNCArKy0tCisgNiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTkNBcHBsaWNhdGlvbi5jYyBiL3NyYy9OQ0FwcGxpY2F0aW9uLmNjCitpbmRleCA1YmNmOTY5Li41MTBmMDM0IDEwMDY0NAorLS0tIGEvc3JjL05DQXBwbGljYXRpb24uY2MKKysrKyBiL3NyYy9OQ0FwcGxpY2F0aW9uLmNjCitAQCAtMjMsNyArMjMsNyBAQAorIAorIC8tKi8KKyAKKy0jaW5jbHVkZSA8bmN1cnNlc3cvY3Vyc2VzLmg+CisrI2luY2x1ZGUgPGN1cnNlcy5oPgorIAorICNkZWZpbmUgIFlVSUxvZ0NvbXBvbmVudCAibmN1cnNlcyIKKyAjaW5jbHVkZSA8eXVpL1lVSUxvZy5oPgorZGlmZiAtLWdpdCBhL3NyYy9OQ3N0eWxlLmggYi9zcmMvTkNzdHlsZS5oCitpbmRleCBhNDBkNWE4Li4zNjU3OTE3IDEwMDY0NAorLS0tIGEvc3JjL05Dc3R5bGUuaAorKysrIGIvc3JjL05Dc3R5bGUuaAorQEAgLTI1LDcgKzI1LDcgQEAKKyAjaWZuZGVmIE5Dc3R5bGVfaAorICNkZWZpbmUgTkNzdHlsZV9oCisgCistI2luY2x1ZGUgPG5jdXJzZXN3L25jdXJzZXMuaD4KKysjaW5jbHVkZSA8bmN1cnNlcy5oPgorIAorICNpbmNsdWRlIDxpb3Nmd2Q+CisgI2luY2x1ZGUgPHN0cmluZz4KK2RpZmYgLS1naXQgYS9zcmMvTkN1cnNlcy5oIGIvc3JjL05DdXJzZXMuaAoraW5kZXggYTA3YzZiZi4uZDE3ZDNjMyAxMDA2NDQKKy0tLSBhL3NyYy9OQ3Vyc2VzLmgKKysrKyBiL3NyYy9OQ3Vyc2VzLmgKK0BAIC0zNCw3ICszNCw3IEBACisgI2luY2x1ZGUgPHl1aS9ZV2lkZ2V0Lmg+CisgI2luY2x1ZGUgPHl1aS9ZTWVudUl0ZW0uaD4KKyAKKy0jaW5jbHVkZSA8bmN1cnNlc3cvY3Vyc2VzLmg+CS8qIGN1cnNlcy5oOiAjZGVmaW5lICBOQ1VSU0VTX0NIX1QgY2NoYXJfdCAqLworKyNpbmNsdWRlIDxjdXJzZXMuaD4JLyogY3Vyc2VzLmg6ICNkZWZpbmUgIE5DVVJTRVNfQ0hfVCBjY2hhcl90ICovCisgI2luY2x1ZGUgPHdjaGFyLmg+CisgCisgI2luY2x1ZGUgIm5jdXJzZXN3LmgiCitkaWZmIC0tZ2l0IGEvc3JjL25jdXJzZXNwLmggYi9zcmMvbmN1cnNlc3AuaAoraW5kZXggZDQ3ODM0Ny4uMmZjZmVhNSAxMDA2NDQKKy0tLSBhL3NyYy9uY3Vyc2VzcC5oCisrKysgYi9zcmMvbmN1cnNlc3AuaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSA8aW9zZndkPgorIAorICNpbmNsdWRlICJuY3Vyc2Vzdy5oIgorLSNpbmNsdWRlIDxuY3Vyc2Vzdy9wYW5lbC5oPgorKyNpbmNsdWRlIDxwYW5lbC5oPgorIAorIGNsYXNzIE5DdXJzZXNQYW5lbCA6IHB1YmxpYyBOQ3Vyc2VzV2luZG93CisgeworZGlmZiAtLWdpdCBhL3NyYy9uY3Vyc2Vzdy5jYyBiL3NyYy9uY3Vyc2Vzdy5jYworaW5kZXggM2M3NzFhZi4uYmI4MzIxMCAxMDA2NDQKKy0tLSBhL3NyYy9uY3Vyc2Vzdy5jYworKysrIGIvc3JjL25jdXJzZXN3LmNjCitAQCAtNDcsNyArNDcsNyBAQAorICNpbmNsdWRlIDxpb3N0cmVhbT4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxuY3Vyc2Vzdy90ZXJtLmg+CisrI2luY2x1ZGUgPHRlcm0uaD4KKyAjdW5kZWYgbGluZQorICN1bmRlZiBjb2x1bW5zCisgCitkaWZmIC0tZ2l0IGEvc3JjL25jdXJzZXN3LmggYi9zcmMvbmN1cnNlc3cuaAoraW5kZXggZDI1OTIzYS4uYzE0MGQzNyAxMDA2NDQKKy0tLSBhL3NyYy9uY3Vyc2Vzdy5oCisrKysgYi9zcmMvbmN1cnNlc3cuaAorQEAgLTI3LDggKzI3LDggQEAKKyAKKyAjaW5jbHVkZSA8aW9zZndkPgorIAorLSNpbmNsdWRlIDxuY3Vyc2Vzdy9jdXJzZXMuaD4KKy0jaW5jbHVkZSA8bmN1cnNlc3cvZXRpcC5oPgorKyNpbmNsdWRlIDxjdXJzZXMuaD4KKysjaW5jbHVkZSA8ZXRpcC5oPgorICNpbmNsdWRlIDxjc3RkaW8+CisgI2luY2x1ZGUgPGNzdGRhcmc+CisgI2luY2x1ZGUgPGNsaW1pdHM+CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAxLXVzZS1fbmxfbXNnX2NhdF9jbnRyLW9ubHktd2l0aC1nbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAxLXVzZS1fbmxfbXNnX2NhdF9jbnRyLW9ubHktd2l0aC1nbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTM3NzRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzLzAwMDEtdXNlLV9ubF9tc2dfY2F0X2NudHItb25seS13aXRoLWdsaWJjLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gNGI4NGYyNDNhNzBhOGMwN2Y2YTM4ZGFkM2M5NDExZmE3MDdmMjVjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDQgTWFyIDIwMTggMTc6MDg6NDMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gdXNlIF9ubF9tc2dfY2F0X2NudHIgb25seSB3aXRoIGdsaWJjCisKK1RoZSBtdXNsIGxpYmMgcHJvdmlkZXMgbGliaW50bCAoc2ltaWxhciB0byBnbGliYykKK2J1dCBkb2VzIG5vdCB1c2UgdGhlIHNhbWUgaW50ZXJuYWxzLAorc28gZXZlbiB0aG91Z2ggd2UgYXJlIHVzaW5nIHRoZSBHTlUgZ2V0dGV4dAordGhlIGxpYmludGwgaW5jbHVkZWQgd2l0aCB0aGUgbGliYyBkb2VzIG5vdCBkZWZpbmUKK19ubF9tc2dfY2F0X2NudHIgYW5kIGl0IGRvZXMgbm90IG5lZWQgdG8uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL05DaTE4bi5oIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTkNpMThuLmggYi9zcmMvTkNpMThuLmgKK2luZGV4IDE2NWIwZTcuLmJmYzRlZDcgMTAwNjQ0CistLS0gYS9zcmMvTkNpMThuLmgKKysrKyBiL3NyYy9OQ2kxOG4uaAorQEAgLTU5LDEyICs1OSwxMyBAQCBpbmxpbmUgdm9pZCBzZXRUZXh0ZG9tYWluKCBjb25zdCBjaGFyICogZG9tYWluICkKKyAgICAgYmluZHRleHRkb21haW4oIGRvbWFpbiwgIFlTZXR0aW5nczo6bG9jYWxlRGlyKCkuY19zdHIoKSApOworICAgICBiaW5kX3RleHRkb21haW5fY29kZXNldCggZG9tYWluLCAiVVRGLTgiICk7CisgICAgIHRleHRkb21haW4oIGRvbWFpbiApOworLQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAgLy8gTWFrZSBjaGFuZ2Uga25vd24KKyAgICAgeworIAlleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7CisgCSsrX25sX21zZ19jYXRfY250cjsKKyAgICAgfQorKyNlbmRpZgorIH0KKyAKKyAKKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXNfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OGM3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXNfZ2l0LmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiQ2hhcmFjdGVyIEJhc2VkIFVzZXIgSW50ZXJmYWNlIGZvciBsaWJ5dWkiCitMSUNFTlNFID0gIkxHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcubGdwbC0zO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiBcCisgICAgZmlsZTovL0NPUFlJTkcubGdwbC0yLjE7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYnl1aS9saWJ5dWktbmN1cnNlcy5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11c2UtX25sX21zZ19jYXRfY250ci1vbmx5LXdpdGgtZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1GaXgtdGhlLWVycm9yLW9mLWNhbi10LWZpbmQtaGVhZGVyLWZpbGUucGF0Y2giCisKK1BWID0gIjIuNDguMytnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI3OWI4MDRiNDVmZmM2YTBkOTJlMjhlNzkzZmYzODlhMjBiNjNiNTRiIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIGdldHRleHQgcGtnY29uZmlnCisKK0RFUEVORFMgKz0gImJvb3N0IGxpYnl1aSBuY3Vyc2VzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIGNkICR7U30KKyAgICBnaXQgY2hlY2tvdXQgYm9vdHN0cmFwLnNoCisgICAgc2VkIC1pICJzIy91c3IjJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9JiMiIGJvb3RzdHJhcC5zaAorICAgIC4vYm9vdHN0cmFwLnNoCisgICAgbWtkaXIgLXAgJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9L3Vzci9saWI2NC8KKyAgICBjcCAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtiYXNlX3ByZWZpeH0vdXNyL2xpYi9saWJ5dWkuc28qICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fS91c3IvbGliNjQvCisgICAgY2QgLQorICAgIHNlZCAtaSAicyNcJHtZUFJFRklYfSNcJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9JiMiICR7U30vQ01ha2VMaXN0cy50eHQKKyAgICBzZWQgLWkgInMjL3VzciMke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtiYXNlX3ByZWZpeH0mIyIgJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7bGliZGlyfS9jbWFrZS9saWJ5dWkvTGlieXVpTGlicmFyeURlcGVuZHMtcmVsZWFzZS5jbWFrZQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaWYgWyAiJHtsaWJkaXJ9IiA9ICIke2Jhc2VfcHJlZml4fS91c3IvbGliIiBdICYmIFsgLWQgJHtEfS91c3IvbGliNjQgXTsgdGhlbgorICAgICAgICBtdiAke0R9L3Vzci9saWI2NCAke0R9L3Vzci9saWIKKyAgICBmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworICAgIG1rZGlyIC1wICR7RH0vJHtiYXNlX3ByZWZpeH0KKyAgICBtdiAke0R9L3VzciAke0R9LyR7YmFzZV9wcmVmaXh9Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyoiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtRml4LUdDQy04LXdhcm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtRml4LUdDQy04LXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFiYTQyZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWkvMDAwMS1GaXgtR0NDLTgtd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDFlNmQ0MGZlYzE2YTk0ZDFhNGJkNDA2MzQ0MDUyNjcyMDBiN2U5NjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBtYXJ4aW4gPG1saXNrYUBzdXNlLmN6PgorRGF0ZTogVHVlLCAxMCBBcHIgMjAxOCAxNToyMTo0MCArMDIwMAorU3ViamVjdDogW1BBVENIXSBGaXggR0NDIDggd2FybmluZzoKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworL2hvbWUvbWFyeGluL1Byb2dyYW1taW5nL2xpYnl1aS9zcmMvWURpYWxvZy5jYzogSW4gc3RhdGljIG1lbWJlciBmdW5jdGlvbiDigJhzdGF0aWMgdm9pZCBZRGlhbG9nOjpzaG93VGV4dChjb25zdCBzdHJpbmcmLCBib29sKeKAmToKKy9ob21lL21hcnhpbi9Qcm9ncmFtbWluZy9saWJ5dWkvc3JjL1lEaWFsb2cuY2M6NjkwOjI2OiBlcnJvcjogY2F0Y2hpbmcgcG9seW1vcnBoaWMgdHlwZSDigJhjbGFzcyBZVUlFeGNlcHRpb27igJkgYnkgdmFsdWUgWy1XZXJyb3I9Y2F0Y2gtdmFsdWU9XQorICAgICBjYXRjaCAoIFlVSUV4Y2VwdGlvbiBleGNlcHRpb24gKQorICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KKy9ob21lL21hcnhpbi9Qcm9ncmFtbWluZy9saWJ5dWkvc3JjL1lEaWFsb2cuY2M6IEluIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24g4oCYc3RhdGljIGJvb2wgWURpYWxvZzo6c2hvd1JlbE5vdGVzVGV4dCgp4oCZOgorL2hvbWUvbWFyeGluL1Byb2dyYW1taW5nL2xpYnl1aS9zcmMvWURpYWxvZy5jYzo4MTQ6MjY6IGVycm9yOiBjYXRjaGluZyBwb2x5bW9ycGhpYyB0eXBlIOKAmGNsYXNzIFlVSUV4Y2VwdGlvbuKAmSBieSB2YWx1ZSBbLVdlcnJvcj1jYXRjaC12YWx1ZT1dCisgICAgIGNhdGNoICggWVVJRXhjZXB0aW9uIGV4Y2VwdGlvbiApCisgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYnl1aS9saWJ5dWkvcHVsbC8xMjJdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgc3JjL1lEaWFsb2cuY2MgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL1lEaWFsb2cuY2MgYi9zcmMvWURpYWxvZy5jYworaW5kZXggOTJlNTAzMS4uOGVjZmY5MCAxMDA2NDQKKy0tLSBhL3NyYy9ZRGlhbG9nLmNjCisrKysgYi9zcmMvWURpYWxvZy5jYworQEAgLTY4Nyw3ICs2ODcsNyBAQCBZRGlhbG9nOjpzaG93VGV4dCggY29uc3Qgc3RkOjpzdHJpbmcgJiB0ZXh0LCBib29sIHVzZVJpY2hUZXh0ICkKKyAJZGlhbG9nLT53YWl0Rm9yRXZlbnQoKTsKKyAJZGlhbG9nLT5kZXN0cm95KCk7CisgICAgIH0KKy0gICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gZXhjZXB0aW9uICkKKysgICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gJmV4Y2VwdGlvbiApCisgICAgIHsKKyAJLy8gRG9uJ3QgbGV0IHRoZSBhcHBsaWNhdGlvbiBkaWUganVzdCBiZWNhdXNlIGhlbHAgY291bGRuJ3QgYmUgZGlzcGxheWVkLgorIAorQEAgLTgxMSw3ICs4MTEsNyBAQCBZRGlhbG9nOjpzaG93UmVsTm90ZXNUZXh0KCkKKyAJfQorICAgICAgICAgZGlhbG9nLT5kZXN0cm95KCk7CisgICAgIH0KKy0gICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gZXhjZXB0aW9uICkKKysgICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gJmV4Y2VwdGlvbiApCisgICAgIHsKKyAgICAgICAgIC8vIERvbid0IGxldCB0aGUgYXBwbGljYXRpb24gZGllIGp1c3QgYmVjYXVzZSBSTiBjb3VsZG4ndCBiZSBkaXNwbGF5ZWQuCisgCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI2OTAxOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWkvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaApAQCAtMCwwICsxLDY4NyBAQAorRnJvbSAxODU2MjY3MTk4MmFkOTc1NDliY2NiNDQ0ZmRiYjU5MDViNmU5MzM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjQgQXByIDIwMTggMTU6MDY6MTQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggY2xhbmcKKworRml4IHdhcm5pbmdzIGZvdW5kIHdpdGggY2xhbmcKKworZXJyb3I6IGNsYXNzICdZQnV0dG9uQm94UHJpdmF0ZScgd2FzIHByZXZpb3VzbHkgZGVjbGFyZWQgYXMgYSBzdHJ1Y3QgWy1XZXJyb3IsLVdtaXNtYXRjaGVkLXRhZ3NdCit8ICAgICBmcmllbmQgY2xhc3MgWUJ1dHRvbkJveFByaXZhdGU7CisKK1lUaW1lem9uZVNlbGVjdG9yLmNjOjM1Ojk6IGVycm9yOiBwcml2YXRlIGZpZWxkICdkdW1teScgaXMgbm90IHVzZWQgWy1XZXJyb3IsLVd1bnVzZWQtcHJpdmF0ZS1maWVsZF0KKyAgIGJvb2wgZHVtbXk7CisgICAgICAgIF4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJ5dWkvbGlieXVpL3B1bGwvMTIzXQorCisgc3JjL1lBbGlnbm1lbnQuaCAgICAgICAgICB8IDIgKy0KKyBzcmMvWUJhckdyYXBoLmggICAgICAgICAgIHwgMiArLQorIHNyYy9ZQnVzeUluZGljYXRvci5oICAgICAgfCAyICstCisgc3JjL1lCdXR0b25Cb3guaCAgICAgICAgICB8IDQgKystLQorIHNyYy9ZQ2hlY2tCb3guaCAgICAgICAgICAgfCAyICstCisgc3JjL1lDaGVja0JveEZyYW1lLmggICAgICB8IDIgKy0KKyBzcmMvWUNvbWJvQm94LmggICAgICAgICAgIHwgMiArLQorIHNyYy9ZQ29tbWFuZExpbmUuaCAgICAgICAgfCAyICstCisgc3JjL1lDb250ZXh0TWVudS5oICAgICAgICB8IDIgKy0KKyBzcmMvWURhdGVGaWVsZC5oICAgICAgICAgIHwgMiArLQorIHNyYy9ZRGlhbG9nLmggICAgICAgICAgICAgfCAyICstCisgc3JjL1lEb3dubG9hZFByb2dyZXNzLmggICB8IDIgKy0KKyBzcmMvWUR1bWJUYWIuaCAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZRW1wdHkuaCAgICAgICAgICAgICAgfCAyICstCisgc3JjL1lFdmVudEZpbHRlci5oICAgICAgICB8IDIgKy0KKyBzcmMvWUZyYW1lLmggICAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZR3JhcGguaCAgICAgICAgICAgICAgfCAyICstCisgc3JjL1lJbWFnZS5oICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvWUlucHV0RmllbGQuaCAgICAgICAgIHwgMiArLQorIHNyYy9ZSW50RmllbGQuaCAgICAgICAgICAgfCAyICstCisgc3JjL1lMYWJlbC5oICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvWUxheW91dEJveC5oICAgICAgICAgIHwgMiArLQorIHNyYy9ZTG9nVmlldy5oICAgICAgICAgICAgfCAyICstCisgc3JjL1lNZW51QnV0dG9uLmggICAgICAgICB8IDIgKy0KKyBzcmMvWU11bHRpTGluZUVkaXQuaCAgICAgIHwgMiArLQorIHNyYy9ZTXVsdGlQcm9ncmVzc01ldGVyLmggfCAyICstCisgc3JjL1lNdWx0aVNlbGVjdGlvbkJveC5oICB8IDIgKy0KKyBzcmMvWVBhcnRpdGlvblNwbGl0dGVyLmggIHwgMiArLQorIHNyYy9ZUHJvZ3Jlc3NCYXIuaCAgICAgICAgfCAyICstCisgc3JjL1lQdXNoQnV0dG9uLmggICAgICAgICB8IDIgKy0KKyBzcmMvWVJhZGlvQnV0dG9uLmggICAgICAgIHwgMiArLQorIHNyYy9ZUmFkaW9CdXR0b25Hcm91cC5oICAgfCAyICstCisgc3JjL1lSaWNoVGV4dC5oICAgICAgICAgICB8IDIgKy0KKyBzcmMvWVNlbGVjdGlvbkJveC5oICAgICAgIHwgMiArLQorIHNyYy9ZU2VsZWN0aW9uV2lkZ2V0LmggICAgfCAyICstCisgc3JjL1lTaW1wbGVJbnB1dEZpZWxkLmggICB8IDIgKy0KKyBzcmMvWVNsaWRlci5oICAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZU3BhY2luZy5oICAgICAgICAgICAgfCAyICstCisgc3JjL1lTcXVhc2guaCAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvWVRhYmxlLmggICAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZVGFibGVIZWFkZXIuaCAgICAgICAgfCAyICstCisgc3JjL1lUaW1lRmllbGQuaCAgICAgICAgICB8IDIgKy0KKyBzcmMvWVRpbWV6b25lU2VsZWN0b3IuY2MgIHwgMiArLQorIHNyYy9ZVHJlZS5oICAgICAgICAgICAgICAgfCAyICstCisgc3JjL1lVSUxvZy5oICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvWVdpZGdldC5oICAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZV2l6YXJkLmggICAgICAgICAgICAgfCAyICstCisgNDcgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvWUFsaWdubWVudC5oIGIvc3JjL1lBbGlnbm1lbnQuaAoraW5kZXggZDcxNmM3Ny4uNzI3Njk0NCAxMDA2NDQKKy0tLSBhL3NyYy9ZQWxpZ25tZW50LmgKKysrKyBiL3NyYy9ZQWxpZ25tZW50LmgKK0BAIC0yOCw3ICsyOCw3IEBACisgI2luY2x1ZGUgIllTaW5nbGVDaGlsZENvbnRhaW5lcldpZGdldC5oIgorIAorIAorLWNsYXNzIFlBbGlnbm1lbnRQcml2YXRlOworK3N0cnVjdCBZQWxpZ25tZW50UHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBJbXBsZW1lbnRhdGlvbiBvZiBhbGwgdGhlIGFsaWdubWVudCB3aWRnZXRzOgorZGlmZiAtLWdpdCBhL3NyYy9ZQmFyR3JhcGguaCBiL3NyYy9ZQmFyR3JhcGguaAoraW5kZXggMjlmN2YyNi4uZDdlYWFkMiAxMDA2NDQKKy0tLSBhL3NyYy9ZQmFyR3JhcGguaAorKysrIGIvc3JjL1lCYXJHcmFwaC5oCitAQCAtMjksNyArMjksNyBAQAorICNpbmNsdWRlICJZQ29sb3IuaCIKKyAKKyAKKy1jbGFzcyBZQmFyR3JhcGhQcml2YXRlOworK3N0cnVjdCBZQmFyR3JhcGhQcml2YXRlOworIGNsYXNzIFlCYXJHcmFwaFNlZ21lbnQ7CisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lCdXN5SW5kaWNhdG9yLmggYi9zcmMvWUJ1c3lJbmRpY2F0b3IuaAoraW5kZXggOTUzMGZhNS4uNzUyOTdkOCAxMDA2NDQKKy0tLSBhL3NyYy9ZQnVzeUluZGljYXRvci5oCisrKysgYi9zcmMvWUJ1c3lJbmRpY2F0b3IuaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorLWNsYXNzIFlCdXN5SW5kaWNhdG9yUHJpdmF0ZTsKKytzdHJ1Y3QgWUJ1c3lJbmRpY2F0b3JQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZQnV0dG9uQm94LmggYi9zcmMvWUJ1dHRvbkJveC5oCitpbmRleCA4NGY4ZGJiLi5jYTUxZjU3IDEwMDY0NAorLS0tIGEvc3JjL1lCdXR0b25Cb3guaAorKysrIGIvc3JjL1lCdXR0b25Cb3guaAorQEAgLTMwLDcgKzMwLDcgQEAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorICNpbmNsdWRlICJZUHVzaEJ1dHRvbi5oIgorIAorLWNsYXNzIFlCdXR0b25Cb3hQcml2YXRlOworK3N0cnVjdCBZQnV0dG9uQm94UHJpdmF0ZTsKKyBjbGFzcyBZUHVzaEJ1dHRvbjsKKyAKKyAKK0BAIC0xNDcsNyArMTQ3LDcgQEAgc3RydWN0IFlCdXR0b25Cb3hNYXJnaW5zCisgICoqLworIGNsYXNzIFlCdXR0b25Cb3ggOiBwdWJsaWMgWVdpZGdldAorIHsKKy0gICAgZnJpZW5kIGNsYXNzIFlCdXR0b25Cb3hQcml2YXRlOworKyAgICBmcmllbmQgc3RydWN0IFlCdXR0b25Cb3hQcml2YXRlOworIAorIHByb3RlY3RlZDoKKyAgICAgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lDaGVja0JveC5oIGIvc3JjL1lDaGVja0JveC5oCitpbmRleCA3OTNjYzc3Li4wM2YzZmFhIDEwMDY0NAorLS0tIGEvc3JjL1lDaGVja0JveC5oCisrKysgYi9zcmMvWUNoZWNrQm94LmgKK0BAIC0zMCw3ICszMCw3IEBACisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAjaW5jbHVkZSAiSW1wbFB0ci5oIgorIAorLWNsYXNzIFlDaGVja0JveFByaXZhdGU7Cisrc3RydWN0IFlDaGVja0JveFByaXZhdGU7CisgCisgZW51bSBZQ2hlY2tCb3hTdGF0ZQorIHsKK2RpZmYgLS1naXQgYS9zcmMvWUNoZWNrQm94RnJhbWUuaCBiL3NyYy9ZQ2hlY2tCb3hGcmFtZS5oCitpbmRleCAyNDNmMWEwLi43MDE3MTEwIDEwMDY0NAorLS0tIGEvc3JjL1lDaGVja0JveEZyYW1lLmgKKysrKyBiL3NyYy9ZQ2hlY2tCb3hGcmFtZS5oCitAQCAtMjksNyArMjksNyBAQAorICNpbmNsdWRlICJZU2luZ2xlQ2hpbGRDb250YWluZXJXaWRnZXQuaCIKKyAjaW5jbHVkZSAiSW1wbFB0ci5oIgorIAorLWNsYXNzIFlDaGVja0JveEZyYW1lUHJpdmF0ZTsKKytzdHJ1Y3QgWUNoZWNrQm94RnJhbWVQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZQ29tYm9Cb3guaCBiL3NyYy9ZQ29tYm9Cb3guaAoraW5kZXggNDE2MzU5YS4uYWQwZTU1MCAxMDA2NDQKKy0tLSBhL3NyYy9ZQ29tYm9Cb3guaAorKysrIGIvc3JjL1lDb21ib0JveC5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZU2VsZWN0aW9uV2lkZ2V0LmgiCisgCistY2xhc3MgWUNvbWJvQm94UHJpdmF0ZTsKKytzdHJ1Y3QgWUNvbWJvQm94UHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWUNvbW1hbmRMaW5lLmggYi9zcmMvWUNvbW1hbmRMaW5lLmgKK2luZGV4IDcwY2I0ZmUuLmYzNDRhM2IgMTAwNjQ0CistLS0gYS9zcmMvWUNvbW1hbmRMaW5lLmgKKysrKyBiL3NyYy9ZQ29tbWFuZExpbmUuaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSA8c3RyaW5nPgorICNpbmNsdWRlICJJbXBsUHRyLmgiCisgCistY2xhc3MgWUNvbW1hbmRMaW5lUHJpdmF0ZTsKKytzdHJ1Y3QgWUNvbW1hbmRMaW5lUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWUNvbnRleHRNZW51LmggYi9zcmMvWUNvbnRleHRNZW51LmgKK2luZGV4IGE0YWNiMWMuLjEyNTMwMDIgMTAwNjQ0CistLS0gYS9zcmMvWUNvbnRleHRNZW51LmgKKysrKyBiL3NyYy9ZQ29udGV4dE1lbnUuaAorQEAgLTI5LDcgKzI5LDcgQEAKKyAjaW5jbHVkZSAiWU1lbnVJdGVtLmgiCisgCisgY2xhc3MgWU1lbnVJdGVtOworLWNsYXNzIFlDb250ZXh0TWVudVByaXZhdGU7Cisrc3RydWN0IFlDb250ZXh0TWVudVByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lEYXRlRmllbGQuaCBiL3NyYy9ZRGF0ZUZpZWxkLmgKK2luZGV4IGU1YTQ2OGQuLjYxNjRmYmEgMTAwNjQ0CistLS0gYS9zcmMvWURhdGVGaWVsZC5oCisrKysgYi9zcmMvWURhdGVGaWVsZC5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZU2ltcGxlSW5wdXRGaWVsZC5oIgorIAorLWNsYXNzIFlEYXRlRmllbGRQcml2YXRlOworK3N0cnVjdCBZRGF0ZUZpZWxkUHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBJbnB1dCBmaWVsZCBmb3IgZW50ZXJpbmcgYSBkYXRlLgorZGlmZiAtLWdpdCBhL3NyYy9ZRGlhbG9nLmggYi9zcmMvWURpYWxvZy5oCitpbmRleCA2NmMyNWMwLi4zNzEyMDliIDEwMDY0NAorLS0tIGEvc3JjL1lEaWFsb2cuaAorKysrIGIvc3JjL1lEaWFsb2cuaAorQEAgLTMyLDcgKzMyLDcgQEAKKyAKKyBjbGFzcyBZU2hvcnRjdXRNYW5hZ2VyOworIGNsYXNzIFlQdXNoQnV0dG9uOworLWNsYXNzIFlEaWFsb2dQcml2YXRlOworK3N0cnVjdCBZRGlhbG9nUHJpdmF0ZTsKKyBjbGFzcyBZRXZlbnQ7CisgY2xhc3MgWUV2ZW50RmlsdGVyOworIAorZGlmZiAtLWdpdCBhL3NyYy9ZRG93bmxvYWRQcm9ncmVzcy5oIGIvc3JjL1lEb3dubG9hZFByb2dyZXNzLmgKK2luZGV4IGM0N2VjNGYuLmZlMDlhOWQgMTAwNjQ0CistLS0gYS9zcmMvWURvd25sb2FkUHJvZ3Jlc3MuaAorKysrIGIvc3JjL1lEb3dubG9hZFByb2dyZXNzLmgKK0BAIC0yOCw3ICsyOCw3IEBACisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAKKyAKKy1jbGFzcyBZRG93bmxvYWRQcm9ncmVzc1ByaXZhdGU7Cisrc3RydWN0IFlEb3dubG9hZFByb2dyZXNzUHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBEb3dubG9hZFByb2dyZXNzOiBBIHByb2dyZXNzIGJhciB0aGF0IG1vbml0b3JzIGRvd25sb2FkaW5nIGEgZmlsZSBieQorZGlmZiAtLWdpdCBhL3NyYy9ZRHVtYlRhYi5oIGIvc3JjL1lEdW1iVGFiLmgKK2luZGV4IGFlYzE3YTMuLmY4ZmIyNTAgMTAwNjQ0CistLS0gYS9zcmMvWUR1bWJUYWIuaAorKysrIGIvc3JjL1lEdW1iVGFiLmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllTZWxlY3Rpb25XaWRnZXQuaCIKKyAKKy1jbGFzcyBZRHVtYlRhYlByaXZhdGU7Cisrc3RydWN0IFlEdW1iVGFiUHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBEdW1iVGFiOiBBIHZlcnkgc2ltcGxlIHRhYiB3aWRnZXQgdGhhdCBjYW4gZGlzcGxheSBhbmQgc3dpdGNoIGJldHdlZW4gYQorZGlmZiAtLWdpdCBhL3NyYy9ZRW1wdHkuaCBiL3NyYy9ZRW1wdHkuaAoraW5kZXggOWEzY2IzNi4uOWI4OGZiYyAxMDA2NDQKKy0tLSBhL3NyYy9ZRW1wdHkuaAorKysrIGIvc3JjL1lFbXB0eS5oCitAQCAtMjksNyArMjksNyBAQAorICNpbmNsdWRlICJJbXBsUHRyLmgiCisgCisgCistY2xhc3MgWUVtcHR5UHJpdmF0ZTsKKytzdHJ1Y3QgWUVtcHR5UHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBBIHdpZGdldCB3aXRoIHplcm8gc2l6ZSwgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIuCitkaWZmIC0tZ2l0IGEvc3JjL1lFdmVudEZpbHRlci5oIGIvc3JjL1lFdmVudEZpbHRlci5oCitpbmRleCAzZGMxODAzLi43NGFhNjJkIDEwMDY0NAorLS0tIGEvc3JjL1lFdmVudEZpbHRlci5oCisrKysgYi9zcmMvWUV2ZW50RmlsdGVyLmgKK0BAIC0zMiw3ICszMiw3IEBACisgY2xhc3MgWUV2ZW50OworIGNsYXNzIFlEaWFsb2c7CisgCistY2xhc3MgWUV2ZW50RmlsdGVyUHJpdmF0ZTsKKytzdHJ1Y3QgWUV2ZW50RmlsdGVyUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWUZyYW1lLmggYi9zcmMvWUZyYW1lLmgKK2luZGV4IDExMWU4ZWMuLjRmOGM2MWUgMTAwNjQ0CistLS0gYS9zcmMvWUZyYW1lLmgKKysrKyBiL3NyYy9ZRnJhbWUuaAorQEAgLTI5LDcgKzI5LDcgQEAKKyAjaW5jbHVkZSAiWVNpbmdsZUNoaWxkQ29udGFpbmVyV2lkZ2V0LmgiCisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKy1jbGFzcyBZRnJhbWVQcml2YXRlOworK3N0cnVjdCBZRnJhbWVQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZR3JhcGguaCBiL3NyYy9ZR3JhcGguaAoraW5kZXggZDkwZDFhZS4uMjg3ZDgwMCAxMDA2NDQKKy0tLSBhL3NyYy9ZR3JhcGguaAorKysrIGIvc3JjL1lHcmFwaC5oCitAQCAtMzcsNyArMzcsNyBAQAorICAqIEZvciB0aGF0IHJlYXNvbiBhIGxvdCBvZiBmdW5jdGlvbnMgc2ltcGx5IHRha2UgYSB2b2lkKiBpbnN0ZWFkIG9mIGdyYXBoX3QqLgorICAqLworIAorLWNsYXNzIFlHcmFwaFByaXZhdGU7Cisrc3RydWN0IFlHcmFwaFByaXZhdGU7CisgCisgLyoqCisgICogQSBncmFwaCB3aXRoIG5vZGVzIGFuZCBlZGdlcywgcmVuZGVyZWQgd2l0aCBHcmFwaHZpei4KK2RpZmYgLS1naXQgYS9zcmMvWUltYWdlLmggYi9zcmMvWUltYWdlLmgKK2luZGV4IDE3YmVhMjEuLjg0ZWI2NzQgMTAwNjQ0CistLS0gYS9zcmMvWUltYWdlLmgKKysrKyBiL3NyYy9ZSW1hZ2UuaAorQEAgLTI5LDcgKzI5LDcgQEAKKyAjaW5jbHVkZSA8c3RyaW5nPgorIAorIAorLWNsYXNzIFlJbWFnZVByaXZhdGU7Cisrc3RydWN0IFlJbWFnZVByaXZhdGU7CisgCisgLyoqCisgICogQSBwaWN0dXJlLCBwb3NzaWJseSBhbmltYXRlZCwgbG9hZGVkIGZyb20gYSBmaWxlLgorZGlmZiAtLWdpdCBhL3NyYy9ZSW5wdXRGaWVsZC5oIGIvc3JjL1lJbnB1dEZpZWxkLmgKK2luZGV4IDcwNjQxY2UuLmZhMjliNDIgMTAwNjQ0CistLS0gYS9zcmMvWUlucHV0RmllbGQuaAorKysrIGIvc3JjL1lJbnB1dEZpZWxkLmgKK0BAIC0yOCw3ICsyOCw3IEBACisgI2luY2x1ZGUgPHN0cmluZz4KKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorLWNsYXNzIFlJbnB1dEZpZWxkUHJpdmF0ZTsKKytzdHJ1Y3QgWUlucHV0RmllbGRQcml2YXRlOworIAorIAorIAorZGlmZiAtLWdpdCBhL3NyYy9ZSW50RmllbGQuaCBiL3NyYy9ZSW50RmllbGQuaAoraW5kZXggOWRhMDUzNy4uOGFkMjk0OSAxMDA2NDQKKy0tLSBhL3NyYy9ZSW50RmllbGQuaAorKysrIGIvc3JjL1lJbnRGaWVsZC5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCistY2xhc3MgWUludEZpZWxkUHJpdmF0ZTsKKytzdHJ1Y3QgWUludEZpZWxkUHJpdmF0ZTsKKyAKKyAKKyAKK2RpZmYgLS1naXQgYS9zcmMvWUxhYmVsLmggYi9zcmMvWUxhYmVsLmgKK2luZGV4IGQyZmZmNjEuLmJmMDZkOGIgMTAwNjQ0CistLS0gYS9zcmMvWUxhYmVsLmgKKysrKyBiL3NyYy9ZTGFiZWwuaAorQEAgLTMwLDcgKzMwLDcgQEAKKyAjaW5jbHVkZSAiSW1wbFB0ci5oIgorIAorIAorLWNsYXNzIFlMYWJlbFByaXZhdGU7Cisrc3RydWN0IFlMYWJlbFByaXZhdGU7CisgCisgLyoqCisgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIExhYmVsLCBIZWFkaW5nIGFuZCBPdXRwdXRGaWVsZCB3aWRnZXRzCitkaWZmIC0tZ2l0IGEvc3JjL1lMYXlvdXRCb3guaCBiL3NyYy9ZTGF5b3V0Qm94LmgKK2luZGV4IGU2NTJhNDUuLjA3MGVhZmYgMTAwNjQ0CistLS0gYS9zcmMvWUxheW91dEJveC5oCisrKysgYi9zcmMvWUxheW91dEJveC5oCitAQCAtMjksNyArMjksNyBAQAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCisgCistY2xhc3MgWUxheW91dEJveFByaXZhdGU7Cisrc3RydWN0IFlMYXlvdXRCb3hQcml2YXRlOworIAorIC8qKgorICAqIEEgdmVydGljYWwgb3IgaG9yaXpvbnRhbCBzdGFja2luZyBvZiB3aWRnZXRzLCBpbXBsZW1lbnRpbmcgSEJveCBhbmQgVkJveC4KK2RpZmYgLS1naXQgYS9zcmMvWUxvZ1ZpZXcuaCBiL3NyYy9ZTG9nVmlldy5oCitpbmRleCA1M2ZiOWVlLi41YjQ0MjI5IDEwMDY0NAorLS0tIGEvc3JjL1lMb2dWaWV3LmgKKysrKyBiL3NyYy9ZTG9nVmlldy5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCistY2xhc3MgWUxvZ1ZpZXdQcml2YXRlOworK3N0cnVjdCBZTG9nVmlld1ByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lNZW51QnV0dG9uLmggYi9zcmMvWU1lbnVCdXR0b24uaAoraW5kZXggMjA1ZTczMC4uNWRmN2VmYiAxMDA2NDQKKy0tLSBhL3NyYy9ZTWVudUJ1dHRvbi5oCisrKysgYi9zcmMvWU1lbnVCdXR0b24uaAorQEAgLTI5LDcgKzI5LDcgQEAKKyAjaW5jbHVkZSAiWU1lbnVJdGVtLmgiCisgCisgY2xhc3MgWU1lbnVJdGVtOworLWNsYXNzIFlNZW51QnV0dG9uUHJpdmF0ZTsKKytzdHJ1Y3QgWU1lbnVCdXR0b25Qcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZTXVsdGlMaW5lRWRpdC5oIGIvc3JjL1lNdWx0aUxpbmVFZGl0LmgKK2luZGV4IGM1MmE2YWUuLjFmNzkyZjggMTAwNjQ0CistLS0gYS9zcmMvWU11bHRpTGluZUVkaXQuaAorKysrIGIvc3JjL1lNdWx0aUxpbmVFZGl0LmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAKKy1jbGFzcyBZTXVsdGlMaW5lRWRpdFByaXZhdGU7Cisrc3RydWN0IFlNdWx0aUxpbmVFZGl0UHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBBIG11bHRpLWxpbmUgcGxhaW4tdGV4dCBhcmVhCitkaWZmIC0tZ2l0IGEvc3JjL1lNdWx0aVByb2dyZXNzTWV0ZXIuaCBiL3NyYy9ZTXVsdGlQcm9ncmVzc01ldGVyLmgKK2luZGV4IDU3Yzc1OGQuLmY2YmVjOTEgMTAwNjQ0CistLS0gYS9zcmMvWU11bHRpUHJvZ3Jlc3NNZXRlci5oCisrKysgYi9zcmMvWU11bHRpUHJvZ3Jlc3NNZXRlci5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKKy1jbGFzcyBZTXVsdGlQcm9ncmVzc01ldGVyUHJpdmF0ZTsKKytzdHJ1Y3QgWU11bHRpUHJvZ3Jlc3NNZXRlclByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lNdWx0aVNlbGVjdGlvbkJveC5oIGIvc3JjL1lNdWx0aVNlbGVjdGlvbkJveC5oCitpbmRleCBiYmU1YTIwLi5mM2EyOTQ3IDEwMDY0NAorLS0tIGEvc3JjL1lNdWx0aVNlbGVjdGlvbkJveC5oCisrKysgYi9zcmMvWU11bHRpU2VsZWN0aW9uQm94LmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllTZWxlY3Rpb25XaWRnZXQuaCIKKyAKKy1jbGFzcyBZTXVsdGlTZWxlY3Rpb25Cb3hQcml2YXRlOworK3N0cnVjdCBZTXVsdGlTZWxlY3Rpb25Cb3hQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZUGFydGl0aW9uU3BsaXR0ZXIuaCBiL3NyYy9ZUGFydGl0aW9uU3BsaXR0ZXIuaAoraW5kZXggMjgzOWJiYy4uOWRlMTE3NCAxMDA2NDQKKy0tLSBhL3NyYy9ZUGFydGl0aW9uU3BsaXR0ZXIuaAorKysrIGIvc3JjL1lQYXJ0aXRpb25TcGxpdHRlci5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCisgCistY2xhc3MgWVBhcnRpdGlvblNwbGl0dGVyUHJpdmF0ZTsKKytzdHJ1Y3QgWVBhcnRpdGlvblNwbGl0dGVyUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVByb2dyZXNzQmFyLmggYi9zcmMvWVByb2dyZXNzQmFyLmgKK2luZGV4IDcxODM1MmYuLmJhYWI2NjIgMTAwNjQ0CistLS0gYS9zcmMvWVByb2dyZXNzQmFyLmgKKysrKyBiL3NyYy9ZUHJvZ3Jlc3NCYXIuaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorLWNsYXNzIFlQcm9ncmVzc0JhclByaXZhdGU7Cisrc3RydWN0IFlQcm9ncmVzc0JhclByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lQdXNoQnV0dG9uLmggYi9zcmMvWVB1c2hCdXR0b24uaAoraW5kZXggNWI2NWM5OC4uZTI4ODI1MiAxMDA2NDQKKy0tLSBhL3NyYy9ZUHVzaEJ1dHRvbi5oCisrKysgYi9zcmMvWVB1c2hCdXR0b24uaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorLWNsYXNzIFlQdXNoQnV0dG9uUHJpdmF0ZTsKKytzdHJ1Y3QgWVB1c2hCdXR0b25Qcml2YXRlOworIAorIAorIAorZGlmZiAtLWdpdCBhL3NyYy9ZUmFkaW9CdXR0b24uaCBiL3NyYy9ZUmFkaW9CdXR0b24uaAoraW5kZXggOWRjNjJkZS4uNWE3YzBkZCAxMDA2NDQKKy0tLSBhL3NyYy9ZUmFkaW9CdXR0b24uaAorKysrIGIvc3JjL1lSYWRpb0J1dHRvbi5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCisgY2xhc3MgWVJhZGlvQnV0dG9uR3JvdXA7CistY2xhc3MgWVJhZGlvQnV0dG9uUHJpdmF0ZTsKKytzdHJ1Y3QgWVJhZGlvQnV0dG9uUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVJhZGlvQnV0dG9uR3JvdXAuaCBiL3NyYy9ZUmFkaW9CdXR0b25Hcm91cC5oCitpbmRleCAwNjNhNTJlLi42NzFhMjU3IDEwMDY0NAorLS0tIGEvc3JjL1lSYWRpb0J1dHRvbkdyb3VwLmgKKysrKyBiL3NyYy9ZUmFkaW9CdXR0b25Hcm91cC5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlICJZU2luZ2xlQ2hpbGRDb250YWluZXJXaWRnZXQuaCIKKyAKKyBjbGFzcyBZUmFkaW9CdXR0b247CistY2xhc3MgWVJhZGlvQnV0dG9uR3JvdXBQcml2YXRlOworK3N0cnVjdCBZUmFkaW9CdXR0b25Hcm91cFByaXZhdGU7CisgCisgdHlwZWRlZiBzdGQ6Omxpc3Q8WVJhZGlvQnV0dG9uICo+IAkJWVJhZGlvQnV0dG9uTGlzdDsKKyB0eXBlZGVmIFlSYWRpb0J1dHRvbkxpc3Q6Oml0ZXJhdG9yCQlZUmFkaW9CdXR0b25MaXN0SXRlcmF0b3I7CitkaWZmIC0tZ2l0IGEvc3JjL1lSaWNoVGV4dC5oIGIvc3JjL1lSaWNoVGV4dC5oCitpbmRleCAxNDliZmIzLi44NmIzZjgwIDEwMDY0NAorLS0tIGEvc3JjL1lSaWNoVGV4dC5oCisrKysgYi9zcmMvWVJpY2hUZXh0LmgKK0BAIC0zMCw3ICszMCw3IEBACisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKyAKKy1jbGFzcyBZUmljaFRleHRQcml2YXRlOworK3N0cnVjdCBZUmljaFRleHRQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZU2VsZWN0aW9uQm94LmggYi9zcmMvWVNlbGVjdGlvbkJveC5oCitpbmRleCA3ZmM0ZmI4Li45YmJmOWYzIDEwMDY0NAorLS0tIGEvc3JjL1lTZWxlY3Rpb25Cb3guaAorKysrIGIvc3JjL1lTZWxlY3Rpb25Cb3guaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVNlbGVjdGlvbldpZGdldC5oIgorIAorLWNsYXNzIFlTZWxlY3Rpb25Cb3hQcml2YXRlOworK3N0cnVjdCBZU2VsZWN0aW9uQm94UHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVNlbGVjdGlvbldpZGdldC5oIGIvc3JjL1lTZWxlY3Rpb25XaWRnZXQuaAoraW5kZXggYWJiZGZiNC4uY2YwNWFmZCAxMDA2NDQKKy0tLSBhL3NyYy9ZU2VsZWN0aW9uV2lkZ2V0LmgKKysrKyBiL3NyYy9ZU2VsZWN0aW9uV2lkZ2V0LmgKK0BAIC0yOSw3ICsyOSw3IEBACisgI2luY2x1ZGUgIllJdGVtLmgiCisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKy1jbGFzcyBZU2VsZWN0aW9uV2lkZ2V0UHJpdmF0ZTsKKytzdHJ1Y3QgWVNlbGVjdGlvbldpZGdldFByaXZhdGU7CisgCisgLyoqCisgICogQmFzZSBjbGFzcyBmb3IgdmFyaW91cyBraW5kcyBvZiBtdWx0aS12YWx1ZSB3aWRnZXRzLgorZGlmZiAtLWdpdCBhL3NyYy9ZU2ltcGxlSW5wdXRGaWVsZC5oIGIvc3JjL1lTaW1wbGVJbnB1dEZpZWxkLmgKK2luZGV4IDZkOTI2ZDQuLmI5M2ZlNmIgMTAwNjQ0CistLS0gYS9zcmMvWVNpbXBsZUlucHV0RmllbGQuaAorKysrIGIvc3JjL1lTaW1wbGVJbnB1dEZpZWxkLmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAKKy1jbGFzcyBZU2ltcGxlSW5wdXRGaWVsZFByaXZhdGU7Cisrc3RydWN0IFlTaW1wbGVJbnB1dEZpZWxkUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVNsaWRlci5oIGIvc3JjL1lTbGlkZXIuaAoraW5kZXggZDI5ZjZiOC4uNGJjZDdkMyAxMDA2NDQKKy0tLSBhL3NyYy9ZU2xpZGVyLmgKKysrKyBiL3NyYy9ZU2xpZGVyLmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllJbnRGaWVsZC5oIgorIAorLWNsYXNzIFlTbGlkZXJQcml2YXRlOworK3N0cnVjdCBZU2xpZGVyUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVNwYWNpbmcuaCBiL3NyYy9ZU3BhY2luZy5oCitpbmRleCBlOGFhZmQzLi4wNjZjZDY4IDEwMDY0NAorLS0tIGEvc3JjL1lTcGFjaW5nLmgKKysrKyBiL3NyYy9ZU3BhY2luZy5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKy1jbGFzcyBZU3BhY2luZ1ByaXZhdGU7Cisrc3RydWN0IFlTcGFjaW5nUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVNxdWFzaC5oIGIvc3JjL1lTcXVhc2guaAoraW5kZXggNGJkMGZiNi4uMzgwNGNjNCAxMDA2NDQKKy0tLSBhL3NyYy9ZU3F1YXNoLmgKKysrKyBiL3NyYy9ZU3F1YXNoLmgKK0BAIC0yOSw3ICsyOSw3IEBACisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKyAKKy1jbGFzcyBZU3F1YXNoUHJpdmF0ZTsKKytzdHJ1Y3QgWVNxdWFzaFByaXZhdGU7CisgCisgLyoqCisgICogSFNxdWFzaCwgVlNxdWFzaCBIVlNxdWFzaDogcmVkdWNlIGNoaWxkIHRvIGl0cyBwcmVmZXJyZWQgc2l6ZS4KK2RpZmYgLS1naXQgYS9zcmMvWVRhYmxlLmggYi9zcmMvWVRhYmxlLmgKK2luZGV4IDY2OTRmMTAuLjQ2OWI4Y2EgMTAwNjQ0CistLS0gYS9zcmMvWVRhYmxlLmgKKysrKyBiL3NyYy9ZVGFibGUuaAorQEAgLTMwLDcgKzMwLDcgQEAKKyAjaW5jbHVkZSAiWVRhYmxlSXRlbS5oIgorICNpbmNsdWRlICJZVGFibGVIZWFkZXIuaCIKKyAKKy1jbGFzcyBZVGFibGVQcml2YXRlOworK3N0cnVjdCBZVGFibGVQcml2YXRlOworIAorIAorIAorZGlmZiAtLWdpdCBhL3NyYy9ZVGFibGVIZWFkZXIuaCBiL3NyYy9ZVGFibGVIZWFkZXIuaAoraW5kZXggNzAxNjZjMi4uNGFlOTliNCAxMDA2NDQKKy0tLSBhL3NyYy9ZVGFibGVIZWFkZXIuaAorKysrIGIvc3JjL1lUYWJsZUhlYWRlci5oCitAQCAtMzEsNyArMzEsNyBAQAorIAorIAorIAorLWNsYXNzIFlUYWJsZUhlYWRlclByaXZhdGU7Cisrc3RydWN0IFlUYWJsZUhlYWRlclByaXZhdGU7CisgCisgLyoqCisgICogSGVscGVyIGNsYXNzIGZvciBZVGFibGUgZm9yIHRhYmxlIGNvbHVtbiBwcm9wZXJ0aWVzOgorZGlmZiAtLWdpdCBhL3NyYy9ZVGltZUZpZWxkLmggYi9zcmMvWVRpbWVGaWVsZC5oCitpbmRleCBhYjJmOWEzLi5mM2E3Yjk0IDEwMDY0NAorLS0tIGEvc3JjL1lUaW1lRmllbGQuaAorKysrIGIvc3JjL1lUaW1lRmllbGQuaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVNpbXBsZUlucHV0RmllbGQuaCIKKyAKKy1jbGFzcyBZVGltZUZpZWxkUHJpdmF0ZTsKKytzdHJ1Y3QgWVRpbWVGaWVsZFByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lUaW1lem9uZVNlbGVjdG9yLmNjIGIvc3JjL1lUaW1lem9uZVNlbGVjdG9yLmNjCitpbmRleCA5MjU5YjY0Li5lMmY5YjZmIDEwMDY0NAorLS0tIGEvc3JjL1lUaW1lem9uZVNlbGVjdG9yLmNjCisrKysgYi9zcmMvWVRpbWV6b25lU2VsZWN0b3IuY2MKK0BAIC0zMiw3ICszMiw3IEBACisgCisgY2xhc3MgWVRpbWV6b25lU2VsZWN0b3JQcml2YXRlCisgeworLSAgIGJvb2wgZHVtbXk7CisrLy8gICBib29sIGR1bW15OworIH07CisgCisgCitkaWZmIC0tZ2l0IGEvc3JjL1lUcmVlLmggYi9zcmMvWVRyZWUuaAoraW5kZXggMTRmYTI3OS4uNzBlMTM2NCAxMDA2NDQKKy0tLSBhL3NyYy9ZVHJlZS5oCisrKysgYi9zcmMvWVRyZWUuaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSAiWVNlbGVjdGlvbldpZGdldC5oIgorIAorIGNsYXNzIFlUcmVlSXRlbTsKKy1jbGFzcyBZVHJlZVByaXZhdGU7Cisrc3RydWN0IFlUcmVlUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVVJTG9nLmggYi9zcmMvWVVJTG9nLmgKK2luZGV4IDA4OTBiYzUuLjRhOTI3YTcgMTAwNjQ0CistLS0gYS9zcmMvWVVJTG9nLmgKKysrKyBiL3NyYy9ZVUlMb2cuaAorQEAgLTY0LDcgKzY0LDcgQEAKKyAKKyAKKyAKKy1jbGFzcyBZVUlMb2dQcml2YXRlOworK3N0cnVjdCBZVUlMb2dQcml2YXRlOworIAorIGVudW0gWVVJTG9nTGV2ZWxfdAorIHsKK2RpZmYgLS1naXQgYS9zcmMvWVdpZGdldC5oIGIvc3JjL1lXaWRnZXQuaAoraW5kZXggNWIyODVkMC4uNjM2YTQxYiAxMDA2NDQKKy0tLSBhL3NyYy9ZV2lkZ2V0LmgKKysrKyBiL3NyYy9ZV2lkZ2V0LmgKK0BAIC00NSw3ICs0NSw3IEBAIHR5cGVkZWYgWUNoaWxkcmVuTWFuYWdlcjxZV2lkZ2V0PglZV2lkZ2V0Q2hpbGRyZW5NYW5hZ2VyOworIHR5cGVkZWYgWVNpbmdsZUNoaWxkTWFuYWdlcjxZV2lkZ2V0PglZU2luZ2xlV2lkZ2V0Q2hpbGRNYW5hZ2VyOworIHR5cGVkZWYgWUNoaWxkcmVuUmVqZWN0b3I8WVdpZGdldD4JWVdpZGdldENoaWxkcmVuUmVqZWN0b3I7CisgCistY2xhc3MgWVdpZGdldFByaXZhdGU7Cisrc3RydWN0IFlXaWRnZXRQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZV2l6YXJkLmggYi9zcmMvWVdpemFyZC5oCitpbmRleCA3NjcxY2JmLi45NzViNTk3IDEwMDY0NAorLS0tIGEvc3JjL1lXaXphcmQuaAorKysrIGIvc3JjL1lXaXphcmQuaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorIGNsYXNzIFlNYWNyb1JlY29yZGVyOworLWNsYXNzIFlXaXphcmRQcml2YXRlOworK3N0cnVjdCBZV2l6YXJkUHJpdmF0ZTsKKyBjbGFzcyBZUHVzaEJ1dHRvbjsKKyBjbGFzcyBZUmVwbGFjZVBvaW50OworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Mjk0NTI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aV9naXQuYmIKQEAgLTAsMCArMSw0MSBAQAorU1VNTUFSWSA9ICJMaWJ5dWkgaXMgYSB3aWRnZXQgYWJzdHJhY3Rpb24gbGlicmFyeSBwcm92aWRpbmcgUXQsIEdUSyBhbmQgbmN1cnNlcyBmcm9udGVuZHMuIgorTElDRU5TRSA9ICJMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLmdwbC0zO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLmxncGwtMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLmxncGwtMzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAorICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYnl1aS9saWJ5dWkuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LUdDQy04LXdhcm5pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgICIKKworUFYgPSAiMy4zLjMrZ2l0IgorU1JDUkVWID0gIjJiNjM0Y2I3ODIxZTJlNzlkZDRiN2E3M2NhZjhlNjdjNTAxODkzNzYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UgZ2V0dGV4dCBwa2djb25maWcKKworREVQRU5EUyArPSAiYm9vc3QiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgICAgICBjZCAke1N9CisgICAgICAgIC4vYm9vdHN0cmFwLnNoCisgICAgICAgIGNkIC0KK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICAgICBpZiBbICIke2xpYmRpcn0iID0gIiR7YmFzZV9wcmVmaXh9L3Vzci9saWIiIF0gJiYgWyAtZCAke0R9L3Vzci9saWI2NCBdOyB0aGVuCisgICAgICAgICAgICBtdiAke0R9L3Vzci9saWI2NCAke0R9L3Vzci9saWIKKyAgICAgICAgZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKKyAgICAgICAgbWtkaXIgLXAgJHtEfS8ke2Jhc2VfcHJlZml4fQorICAgICAgICBtdiAke0R9L3VzciAke0R9LyR7YmFzZV9wcmVmaXh9Cit9CisKK0ZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vKiAke2luY2x1ZGVkaXJ9L3l1aSoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuYm94L29wZW5ib3hfMy42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuYm94L29wZW5ib3hfMy42LjEuYmIKaW5kZXggYjM1NGFlNy4uYzM1YTBjNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmJveC9vcGVuYm94XzMuNi4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5ib3gvb3BlbmJveF8zLjYuMS5iYgpAQCAtMTYsOSArMTYsMTEgQEAKICMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAotQUxURVJOQVRJVkVfJHtQTn0tY29yZSA9ICJ4LXdpbmRvdy1tYW5hZ2VyIgorQUxURVJOQVRJVkVfJHtQTn0tY29yZSA9ICJ4LXdpbmRvdy1tYW5hZ2VyIHgtc2Vzc2lvbi1tYW5hZ2VyIgogQUxURVJOQVRJVkVfVEFSR0VUW3gtd2luZG93LW1hbmFnZXJdID0gIiR7YmluZGlyfS9vcGVuYm94IgogQUxURVJOQVRJVkVfUFJJT1JJVFlbeC13aW5kb3ctbWFuYWdlcl0gPSAiMTAiCitBTFRFUk5BVElWRV9UQVJHRVRbeC1zZXNzaW9uLW1hbmFnZXJdID0gIiR7YmluZGlyfS9vcGVuYm94LXNlc3Npb24iCitBTFRFUk5BVElWRV9QUklPUklUWVt4LXNlc3Npb24tbWFuYWdlcl0gPSAiMTAwIgogCiBQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1tpbWxpYjJdID0gIi0tZW5hYmxlLWltbGliMiwtLWRpc2FibGUtaW1saWIyLGltbGliMiIKQEAgLTM4LDcgKzQwLDcgQEAKIH0KIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWNvcmUgJHtQTn0tY29uZmlnICR7UE59LXRoZW1lLWNsZWFybG9va3MiCi1GSUxFU18ke1BOfS1jb3JlID0gIiR7YmluZGlyfS9vcGVuYm94ICR7bGliZGlyfS8qJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tY29yZSA9ICIke2JpbmRpcn0vb3BlbmJveCAke2JpbmRpcn0vb3BlbmJveC1zZXNzaW9uICR7bGliZGlyfS8qJHtTT0xJQlN9IgogCiBGSUxFU18ke1BOfS1seGRlICs9ICIke2RhdGFkaXJ9L2x4ZGUvIFwKICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vbHhwYW5lbCBcCkBAIC00Niw2ICs0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ljb25zIgogCiBGSUxFU18ke1BOfS1nbm9tZSArPSAiIFwKKyAgICAke2JpbmRpcn0vb3BlbmJveC1nbm9tZS1zZXNzaW9uIFwKICAgICAke2RhdGFkaXJ9L2dub21lIFwKICAgICAke2RhdGFkaXJ9L2dub21lLXNlc3Npb24gXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZm9udHMtdHJ1ZXR5cGUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1mb250cy10cnVldHlwZS5iYgppbmRleCA2MzJlN2Q0Li4zMDY5ZDJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1mb250cy10cnVldHlwZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1mb250cy10cnVldHlwZS5iYgpAQCAtNSw3ICs1LDcgQEAKIFBWID0gIjEuMCIKIFBSID0gInIyIgogCi1pbmhlcml0IHBhY2thZ2Vncm91cCBhbGxhcmNoCitpbmhlcml0IHBhY2thZ2Vncm91cAogCiBQQUNLQUdFUyArPSAiXAogICAgICR7UE59LWNvcmUgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29tbV8yLjQwLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb21tXzIuNDAuMS5iYgppbmRleCAwMmJiMWNjLi5lMGY3MmNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb21tXzIuNDAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb21tXzIuNDAuMS5iYgpAQCAtMTIsNyArMTIsOSBAQAogU1JDX1VSSVttZDVzdW1dID0gIjg3NGVhZGQ5NDM0NjEzZGJhY2YwMjcyYzgyYzNhYzIzIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3NjJlZTJhMmQ1NzgxYmU2Nzk3NDQ4ZDRkZDIzODNjZTE0OTA3MTU5YjMwYmMxMmJmNmIwOGU3MjI3YmUzYWYiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBFWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcXJlbmNvZGUvcXJlbmNvZGVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcXJlbmNvZGUvcXJlbmNvZGVfZ2l0LmJiCmluZGV4IDZhMTU5YTcuLmY1Mzk3NzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3FyZW5jb2RlL3FyZW5jb2RlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9xcmVuY29kZS9xcmVuY29kZV9naXQuYmIKQEAgLTQsOSArNCw5IEBACiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkxHUEx2Mi4xIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCi1QViA9ICIzLjQuNCtnaXQke1NSQ1BWfSIKK1BWID0gIjQuMC4wK2dpdCR7U1JDUFZ9IgogCi1TUkNSRVYgPSAiMWI1NjVjN2I1OTkwMjk4MThmYzU5NmU3ZGE0MzcxYTMwODNkYTM2YyIKK1NSQ1JFViA9ICIwN2YzYzVkNGJmOTEzNjcxMTQyMmNjN2RiZjI4YWZmNDY5ZGEyMjBhIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2Z1a3VjaGkvbGlicXJlbmNvZGUuZ2l0IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL01ha2VmaWxlLm9lIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL01ha2VmaWxlLm9lCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWU2OTM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9NYWtlZmlsZS5vZQorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLSMgTWFrZWZpbGUgZm9yIHNsaW0gLSBPcGVuRW1iZWRkZWQKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotCi1TTElNTERGTEFHUz0tbFhmdCAtbFgxMSAtbGZyZWV0eXBlIC1sWHJlbmRlciAtbGZvbnRjb25maWcgLWxwbmcxMiAtbHogLWxtIC1sY3J5cHQgLWxYbXUgLWxwbmcgLWxqcGVnIC1scnQgLWxwdGhyZWFkCi1DVVNUT009LURIQVZFX1NIQURPVwotCi1VU0VfUEFNPTEKLWlmZGVmIFVTRV9QQU0KLVNMSU1MREZMQUdTKz0gLWxwYW0KLUNVU1RPTSs9IC1EVVNFX1BBTQotZW5kaWYKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1OQU1FPXNsaW0KLVZFUlNJT049MS4zLjIKLQotREVGSU5FUz0tRFBBQ0tBR0U9XCIkKE5BTUUpXCIgLURWRVJTSU9OPVwiJChWRVJTSU9OKVwiIFwKLQkJLURQS0dEQVRBRElSPVwiJChQUkVGSVgpL3NoYXJlL3NsaW1cIiAtRFNZU0NPTkZESVI9XCIkKENGR0RJUilcIgotCi1PQkpFQ1RTPWpwZWcubyBwbmcubyBtYWluLm8gaW1hZ2UubyBudW1sb2NrLm8gY2ZnLm8gc3dpdGNodXNlci5vIGFwcC5vIFwKLQlwYW5lbC5vIHV0aWwubwotaWZkZWYgVVNFX1BBTQotT0JKRUNUUys9UEFNLm8KLWVuZGlmCi0KLWFsbDogc2xpbQotCi1zbGltOiAkKE9CSkVDVFMpCi0JJChDWFgpICQoT0JKRUNUUykgJChMREZMQUdTKSAkKFNMSU1MREZMQUdTKSAtbyAkKE5BTUUpCi0KLS5jcHAubzoKLQkkKENYWCkgJChDWFhGTEFHUykgJChERUZJTkVTKSAkKENVU1RPTSkgLWMgJDwgLW8gJEAKLQotLmMubzoKLQkkKENDKSAkKENGTEFHUykgJChERUZJTkVTKSAkKENVU1RPTSkgLWMgJDwgLW8gJEAKLQotaW5zdGFsbDogc2xpbSBpbnN0YWxsLXRoZW1lCi0JaW5zdGFsbCAtRCAtbSA3NTUgc2xpbSAkKERFU1RESVIpJChQUkVGSVgpL2Jpbi9zbGltCi0JaW5zdGFsbCAtRCAtbSA2NDQgc2xpbS4xICQoREVTVERJUikkKE1BTkRJUikvbWFuMS9zbGltLjEKLQl0ZXN0IC1lICQoREVTVERJUikkKENGR0RJUikvc2xpbS5jb25mIHx8IFwKLQkJaW5zdGFsbCAtRCAtbSA2NDQgc2xpbS5jb25mICQoREVTVERJUikkKENGR0RJUikvc2xpbS5jb25mCi0KLWNsZWFuOgotCUBybSAtZiBzbGltICoubwotCi1kaXN0OgotCUBybSAtcmYgJChOQU1FKS0kKFZFUlNJT04pCi0JQG1rZGlyICQoTkFNRSktJChWRVJTSU9OKQotCUBjcCAtciAqLmNwcCAqLmggKi5jIE1ha2VmaWxlIE1ha2VmaWxlLiogQ09QWUlORyBDaGFuZ2VMb2cgSU5TVEFMTCBSRUFETUUgVE9ETyBcCi0JCXhpbml0cmMuc2FtcGxlIHNsaW0uMSBUSEVNRVMgdGhlbWVzIHNsaW0uY29uZiAkKE5BTUUpLSQoVkVSU0lPTikKLQlAcm0gLXJmICQoTkFNRSktJChWRVJTSU9OKS90aGVtZXMvLnN2bgkkKE5BTUUpLSQoVkVSU0lPTikvdGhlbWVzL2RlZmF1bHQvLnN2bgotCUB0YXIgY3Z6ZiAkKE5BTUUpLSQoVkVSU0lPTikudGFyLmd6ICQoTkFNRSktJChWRVJTSU9OKQotCUBybSAtcmYgJChOQU1FKS0kKFZFUlNJT04pCi0KLQotaW5zdGFsbC10aGVtZToKLQlpbnN0YWxsIC1EIC1tIDY0NCB0aGVtZXMvZGVmYXVsdC9zbGltLnRoZW1lIFwKLQkJICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvc2xpbS90aGVtZXMvZGVmYXVsdC9zbGltLnRoZW1lCi0JaW5zdGFsbCAtRCAtbSA2NDQgdGhlbWVzL2RlZmF1bHQvcGFuZWwucG5nIFwKLQkJICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvc2xpbS90aGVtZXMvZGVmYXVsdC9wYW5lbC5wbmcKLQlpbnN0YWxsIC1EIC1tIDY0NCB0aGVtZXMvZGVmYXVsdC9iYWNrZ3JvdW5kLmpwZyBcCi0JCSAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL3NsaW0vdGhlbWVzL2RlZmF1bHQvYmFja2dyb3VuZC5qcGcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9zbGltLWR5bndtIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3NsaW0tZHlud20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5YzlkNDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3NsaW0tZHlud20KKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLSMhL2Jpbi9zaAotdXBkYXRlX3NsaW1fd21saXN0Ci1pZiBbICJ4JDEiID0gIngtbm9kYWVtb24iIF07IHRoZW4KLSAgc2hpZnQKLSAgZXhlYyBzbGltICIkQCIKLWVsc2UKLSAgc2xpbSAtZCAiJEAiCi1maQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3NsaW0ucGFtZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9zbGltLnBhbWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwYzM0YjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3NsaW0ucGFtZAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLSMgQmVnaW4gL2V0Yy9wYW0uZC9zbGltCi0KLWF1dGggICAgICAgcmVxdWlyZWQgICAgIHBhbV9zaGVsbHMuc28KLWF1dGggICAgICAgaW5jbHVkZSAgICAgIGNvbW1vbi1hdXRoCi1hdXRoICAgICAgIG9wdGlvbmFsICAgICBwYW1fc2VjdXJldHR5LnNvCi1hdXRoICAgICAgIG9wdGlvbmFsICAgICBwYW1fZ25vbWVfa2V5cmluZy5zbwotCi1hY2NvdW50ICAgIHJlcXVpcmVkICAgICBwYW1fbm9sb2dpbi5zbwotYWNjb3VudCAgICBpbmNsdWRlICAgICAgY29tbW9uLWFjY291bnQKLQotcGFzc3dvcmQgICBpbmNsdWRlICAgICAgY29tbW9uLXBhc3N3b3JkCi0KLXNlc3Npb24gICAgaW5jbHVkZSAgICAgIGNvbW1vbi1zZXNzaW9uCi1zZXNzaW9uICAgIHJlcXVpcmVkICAgICBwYW1fbWtob21lZGlyLnNvIHNrZWw9L2V0Yy9za2VsLyB1bWFzaz0wMDIyCi1zZXNzaW9uICAgIG9wdGlvbmFsICAgICBwYW1fbGFzdGxvZy5zbyBub3d0bXAKLXNlc3Npb24gICAgb3B0aW9uYWwgICAgIHBhbV9tYWlsLnNvIGRpcj0vdmFyL21haWwgc3RhbmRhcmQKLXNlc3Npb24gICAgb3B0aW9uYWwgICAgIHBhbV9nbm9tZV9rZXlyaW5nLnNvICBhdXRvX3N0YXJ0Ci0KLSMgRW5kIC9ldGMvcGFtLmQvc2xpbQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3NsaW0uc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9zbGltLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MTM1MWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3NsaW0uc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249U0xpTSBTaW1wbGUgTG9naW4gTWFuYWdlcgotUmVxdWlyZXM9ZGV2LXR0eTcuZGV2aWNlCi1BZnRlcj1kZXYtdHR5Ny5kZXZpY2Ugc3lzdGVtZC11c2VyLXNlc3Npb25zLnNlcnZpY2UKLQotW1NlcnZpY2VdCi1FeGVjU3RhcnQ9L3Vzci9iaW4vc2xpbSAtbm9kYWVtb24KLVN0YW5kYXJkT3V0cHV0PXN5c2xvZwotCi1bSW5zdGFsbF0KLVdhbnRlZEJ5PWdyYXBoaWNhbC50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS91cGRhdGVfc2xpbV93bWxpc3QgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vdXBkYXRlX3NsaW1fd21saXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjExNjUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS91cGRhdGVfc2xpbV93bWxpc3QKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0jIS91c3IvYmluL3BlcmwgLXcKLSMKLSMgdXBkYXRlX3NsaW1fd21saXN0LCBiYXNlZCBvbjoKLSMgdXBkYXRlX3dkbV93bWxpc3QsIChjKSAxOTk4IE1hcmNlbG8gTWFnYWxs824gPG1tYWdhbGxvQGRlYmlhbi5vcmc+Ci0jIHJld3JpdGVuIHRvIHVzZSB0aGUgeC13aW5kb3ctbWFuYWdlciBhbHRlcm5hdGl2ZQotIyBtb2RpZmllZCB0byBhbHNvIHVzZSB0aGUgeC1zZXNzaW9uLW1hbmFnZXIgYWx0ZXJuYXRpdmUgYnkgQXJ0aHVyIEtvcm4KLSMgQ29weXJpZ2h0IDIwMDAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KLSMgTW9kaWZpZWQgdG8gdXNlIHRoZSBmcmVlZGVza3RvcC5vcmcgLmRlc2t0b3AgbGlrZSBrZG0gYW5kIGdkbQotIwotIyBUaGlzIHNjcmlwdCB3aWxsIHJlYWQgdGhlIGxpc3Qgb2YgaW5zdGFsbGVkIHdpbmRvdyBtYW5hZ2VycyBmcm9tCi0jIHRoZSBmcmVlZGVza3RvcCAuZGVza3RvcCBmaWxlcyBpbiA8ZXRjPi9YMTEvc2Vzc2lvbnMvOjxldGM+L2RtL1Nlc3Npb25zLzoKLSMgPHNoYXJlPi94c2Vzc2lvbnMvCi0jIGFuZCB1cGRhdGUgdGhlIHNlc3Npb25zIGxpbmUgaW4gL2V0Yy9zbGltLmNvbmYuCi0jIEJFV0FSRTogSXQgZG9lc24ndCBhc2sgYW55IHF1ZXN0aW9ucyBhYm91dCB0aGlzLiBJdCBqdXN0IGRvZXMgaXQuIEl0Ci0jIHRha2VzIGFuIG9wdGlvbmFsIGxpc3Qgb2Ygd2luZG93IG1hbmFnZXJzLgotCi11c2Ugc3RyaWN0OwotdXNlIEZpbGU6OkRlc2t0b3BFbnRyeTsKLQotbXkgJHdtX2xpc3Q9Jyc7Ci1teSAlZGVza3RvcF9maWxlczsKLQotdW5sZXNzIChAQVJHVikgewotICAgICNteSBAd21fbGlzdCA9ICgnZGVmYXVsdCcpOwotICAgIG15IEB3bV9saXN0OwotICAgIGZvcmVhY2ggbXkgJGRpciAoJy9ldGMvWDExL3Nlc3Npb25zLycsJy9ldGMvZG0vU2Vzc2lvbnMvJywnL3Vzci9zaGFyZS94c2Vzc2lvbnMvJykgewotCSAgICBuZXh0IHVubGVzcyAob3BlbmRpciBESVIsICRkaXIpOwotCSAgICBteSBAZmlsZXM7Ci0JICAgIEBmaWxlcyA9IGdyZXAgeyAvXC5kZXNrdG9wJC8gJiYgLXIgIiRkaXIvJF8iIH0gcmVhZGRpcihESVIpOwotCSAgICBmb3JlYWNoIG15ICRmaWxlIChAZmlsZXMpIHsKLQkJICAgcHVzaCBAeyRkZXNrdG9wX2ZpbGVzeyRmaWxlfX0sICIkZGlyLyRmaWxlIjsKLQkgICAgfQotICAgIH0KLSAgICBERVNLVE9QOiBmb3JlYWNoIG15ICRkZXNrdG9wX2ZpbGUgKGtleXMoJWRlc2t0b3BfZmlsZXMpKSB7Ci0JICAgIGZvcmVhY2ggbXkgJGZpbGUgKEB7JGRlc2t0b3BfZmlsZXN7JGRlc2t0b3BfZmlsZX19KSB7Ci0JCSAgICBteSAkZW50cnkgPSBGaWxlOjpEZXNrdG9wRW50cnktPm5ld19mcm9tX2ZpbGUoJGZpbGUpOwotCQkgICAgbmV4dCBERVNLVE9QIGlmIChkZWZpbmVkKCRlbnRyeS0+Z2V0X3ZhbHVlKCdIaWRkZW4nKSkKLQkJCWFuZCAkZW50cnktPmdldF92YWx1ZSgnSGlkZGVuJykgZXEgJ3RydWUnKTsKLQkJICAgIGlmICgkZW50cnktPmdldF92YWx1ZSgnTmFtZScpID1+IC9eZ25vbWUkL2kpIHsKLQkJCSAgICBwdXNoIChAd21fbGlzdCwgJ2dub21lJyk7Ci0JCSAgICB9Ci0JCSAgICBlbHNpZiAoJGVudHJ5LT5nZXRfdmFsdWUoJ05hbWUnKSA9fiAvXmtkZSQvaSkgewotCQkJICAgIHB1c2ggKEB3bV9saXN0LCAna2RlJyk7Ci0JCSAgICB9Ci0JCSAgICBlbHNpZiAoZGVmaW5lZCgkZW50cnktPmdldF92YWx1ZSgnRXhlYycpKSkgewotCQkJICAgIHB1c2ggKEB3bV9saXN0LCAkZW50cnktPmdldF92YWx1ZSgnRXhlYycpKTsKLQkJICAgIH0KLQkJICAgIGVsc2UgeyAjIG5vdCBmb3VuZCwgZ28gdG8gbmV4dCBmaWxlCi0JCQkgICAgbmV4dDsKLQkJICAgIH0KLQkJICAgICMgZm91bmQsIHByb2NlZWQgdG8gbmV4dCBkZXN0b3AgZmlsZQotCQkgICAgbmV4dCBERVNLVE9QOwotCSAgICB9Ci0gICAgfQotICAgJHdtX2xpc3QgPSBqb2luICgnLCcsIHNvcnQgQHdtX2xpc3QpIC4gJyxjdXN0b20nOwotfSBlbHNlIHsKLSAgICAkd21fbGlzdCA9IGpvaW4gKCcsJywgc29ydCBAQVJHVik7Ci19Ci0KLW9wZW4gKFNMSU1fQ09ORklHX0ZJTEUsICc8L2V0Yy9zbGltLmNvbmYnKQotICAgIG9yIGRpZSAiQ2FuJ3Qgb3BlbiAvZXRjL3NsaW0uY29uZiBmb3IgcmVhZGluZzogJCEiOwotb3BlbiAoTkVXX1NMSU1fQ09ORklHX0ZJTEUsICc+L2V0Yy9zbGltLmNvbmYubmV3JykKLSAgICBvciBkaWUgIkNhbid0IG9wZW4gL2V0Yy9zbGltLmNvbmYubmV3IGZvciB3cml0aW5nOiAkISI7Ci0KLXdoaWxlICg8U0xJTV9DT05GSUdfRklMRT4pIHsKLSAgICBzfF4oc2Vzc2lvbnNccyopLip8JDEkd21fbGlzdHw7Ci0gICAgcHJpbnQgTkVXX1NMSU1fQ09ORklHX0ZJTEU7Ci19Ci0KLWNsb3NlKFNMSU1fQ09ORklHX0ZJTEUpOwotY2xvc2UoTkVXX1NMSU1fQ09ORklHX0ZJTEUpOwotCi1yZW5hbWUgJy9ldGMvc2xpbS5jb25mLm5ldycsICcvZXRjL3NsaW0uY29uZicKLSAgICBvciBkaWUgIkNhbid0IHJlbmFtZSAvZXRjL3NsaW0uY29uZi5uZXc6ICQhIjsKLQotZXhpdCAwOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2M0OGZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIHRvdWNoc2NyZWVuIHBhbmVsIGV2ZW50cyIKLURFU0NSSVBUSU9OID0gIlRzbGliIGlzIGFuIGFic3RyYWN0aW9uIGxheWVyIGZvciB0b3VjaHNjcmVlbiBwYW5lbCBcCi1ldmVudHMsIGFzIHdlbGwgYXMgYSBmaWx0ZXIgc3RhY2sgZm9yIHRoZSBtYW5pcHVsYXRpb24gb2YgdGhvc2UgZXZlbnRzLiBcCi1Uc2xpYiBpcyBnZW5lcmFsbHkgdXNlZCBvbiBlbWJlZGRlZCBkZXZpY2VzIHRvIHByb3ZpZGUgYSBjb21tb24gdXNlciBcCi1zcGFjZSBpbnRlcmZhY2UgdG8gdG91Y2hzY3JlZW4gZnVuY3Rpb25hbGl0eS4iCi1IT01FUEFHRSA9ICJodHRwOi8vdHNsaWIub3JnLyIKLQotQVVUSE9SID0gIlJ1c3NlbGwgS2luZyB3LyBwbHVnaW5zIGJ5IENocmlzIExhcnNvbiBldC4gYWwuIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMzBhOTcxNmVmMzc2MmUzNDY3YTJmNjJiZjc5MGYwYSIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20va2VyZ290aC90c2xpYi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS90c2xpYi0ke1BWfS50YXIueHo7ZG93bmxvYWRmaWxlbmFtZT10c2xpYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vdHMuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly90c2xpYi5zaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNDc3MWY4NjA3YjM0MWJiNGIyOTc4MTlkMzdlODM3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZTM1ZTVmNzEwZWE5MzNiMTE4ZjcxMGUyY2U0NDAzYWMwNzZmZTY5OTI2YjU3MDMzMzg2N2Q0ZGUwODJhNTFjIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2tlcmdvdGgvdHNsaWIvcmVsZWFzZXMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkIC0tZGlzYWJsZS1oMzYwMCAtLWVuYWJsZS1pbnB1dCAtLWRpc2FibGUtY29yZ2kgLS1kaXNhYmxlLWNvbGxpZSAtLWRpc2FibGUtbWs3MTIgLS1kaXNhYmxlLWFyY3RpYzIgLS1kaXNhYmxlLXVjYjF4MDAiCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90cy5jb25mICR7U30vZXRjL3RzLmNvbmYKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9wcm9maWxlLmQvCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdHNsaWIuc2ggJHtEfSR7c3lzY29uZmRpcn0vcHJvZmlsZS5kLwotfQotCi0jIFBlb3BsZSBzaG91bGQgY29uc2lkZXIgdXNpbmcgdWRldidzIC9kZXYvaW5wdXQvdG91Y2hzY3JlZW4wIHN5bWxpbmsKLSMgaW5zdGVhZCBvZiBkZXRlY3Qtc3R5bHVzCi0jUkRFUEVORFNfdHNsaWItY29uZl93ZWlyZC1tYWNoaW5lID0gImRldGVjdC1zdHlsdXMiCi1SUFJPVklERVNfdHNsaWItY29uZiA9ICJsaWJ0cy0wLjAtY29uZiIKLQotUEFDS0FHRVMgPSsgInRzbGliLWNvbmYgdHNsaWItdGVzdHMgdHNsaWItY2FsaWJyYXRlIgotREVCSUFOX05PQVVUT05BTUVfdHNsaWItY29uZiA9ICIxIgotREVCSUFOX05PQVVUT05BTUVfdHNsaWItdGVzdHMgPSAiMSIKLURFQklBTl9OT0FVVE9OQU1FX3RzbGliLWNhbGlicmF0ZSA9ICIxIgotCi1SREVQRU5EU18ke1BOfSA9ICJ0c2xpYi1jb25mIgotUlJFQ09NTUVORFNfJHtQTn0gPSAicG9pbnRlcmNhbCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdHMvKi5sYSIKLUZJTEVTX3RzbGliLWNvbmYgPSAiJHtzeXNjb25mZGlyfS90cy5jb25mICR7c3lzY29uZmRpcn0vcHJvZmlsZS5kL3RzbGliLnNoICR7ZGF0YWRpcn0vdHNsaWIiCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS90cy8qLnNvKiIKLUZJTEVTX3RzbGliLWNhbGlicmF0ZSArPSAiJHtiaW5kaXJ9L3RzX2NhbGlicmF0ZSIKLUZJTEVTX3RzbGliLXRlc3RzID0gIiR7YmluZGlyfS90c19oYXJ2ZXN0ICR7YmluZGlyfS90c19wcmludCAke2JpbmRpcn0vdHNfcHJpbnRfcmF3ICR7YmluZGlyfS90c190ZXN0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FlOTQxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMTUuYmIKQEAgLTAsMCArMSw4MiBAQAorU1VNTUFSWSA9ICJBbiBhYnN0cmFjdGlvbiBsYXllciBmb3IgdG91Y2hzY3JlZW4gcGFuZWwgZXZlbnRzIgorREVTQ1JJUFRJT04gPSAiVHNsaWIgaXMgYW4gYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIHRvdWNoc2NyZWVuIHBhbmVsIFwKK2V2ZW50cywgYXMgd2VsbCBhcyBhIGZpbHRlciBzdGFjayBmb3IgdGhlIG1hbmlwdWxhdGlvbiBvZiB0aG9zZSBldmVudHMuIFwKK1RzbGliIGlzIGdlbmVyYWxseSB1c2VkIG9uIGVtYmVkZGVkIGRldmljZXMgdG8gcHJvdmlkZSBhIGNvbW1vbiB1c2VyIFwKK3NwYWNlIGludGVyZmFjZSB0byB0b3VjaHNjcmVlbiBmdW5jdGlvbmFsaXR5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly90c2xpYi5vcmcvIgorCitBVVRIT1IgPSAiTWFydGluIEtlcHBsaW5nZXIgPG1hcnRpbmtAcG9zdGVvLmRlPiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1mYzE3OGJjZDQyNTA5MDkzOWE4YjYzNGQxZDZhOTU5NCBcCisgICAgZmlsZTovL3Rlc3RzL0NPUFlJTkc7bWQ1PWEyM2E3NGIzZjRjYWY5NjE2MjMwNzg5ZDk0MjE3YWNiIFwKKyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20va2VyZ290aC90c2xpYi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS90c2xpYi0ke1BWfS50YXIueHo7ZG93bmxvYWRmaWxlbmFtZT10c2xpYi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vdHMuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly90c2xpYi5zaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiOWZmMzY3ODhjOWFiNzZhMTBiNTg0MjIyMjdiOTYyOWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2NlNDg4MDdjYWI2NTUwNzZkNzFhMWNlZWYzZWQwYWI4YTI1ZGY5ODA3NDk4MWQ0YThmZDE0NzdlZTVmNzEwYyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rZXJnb3RoL3RzbGliL3JlbGVhc2VzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gImRlYm91bmNlIGRlaml0dGVyIGlpciBsaW5lYXIgbWVkaWFuIHB0aHJlcyBza2lwIGxvd3Bhc3MgaW52ZXJ0IHZhcmlhbmNlIGlucHV0IHRvdWNoa2l0IHdhdmVzaGFyZSIKK1BBQ0tBR0VDT05GSUdbZGVib3VuY2VdID0gIi0tZW5hYmxlLWRlYm91bmNlLC0tZGlzYWJsZS1kZWJvdW5jZSIKK1BBQ0tBR0VDT05GSUdbZGVqaXR0ZXJdID0gIi0tZW5hYmxlLWRlaml0dGVyLC0tZGlzYWJsZS1kZWppdHRlciIKK1BBQ0tBR0VDT05GSUdbaWlyXSA9ICItLWVuYWJsZS1paXIsLS1kaXNhYmxlLWlpciIKK1BBQ0tBR0VDT05GSUdbbGluZWFyXSA9ICItLWVuYWJsZS1saW5lYXIsLS1kaXNhYmxlLWxpbmVhciIKK1BBQ0tBR0VDT05GSUdbbWVkaWFuXSA9ICItLWVuYWJsZS1tZWRpYW4sLS1kaXNhYmxlLW1lZGlhbiIKK1BBQ0tBR0VDT05GSUdbcHRocmVzXSA9ICItLWVuYWJsZS1wdGhyZXMsLS1kaXNhYmxlLXB0aHJlcyIKK1BBQ0tBR0VDT05GSUdbc2tpcF0gPSAiLS1lbmFibGUtc2tpcCwtLWRpc2FibGUtc2tpcCIKK1BBQ0tBR0VDT05GSUdbbG93cGFzc10gPSAiLS1lbmFibGUtbG93cGFzcywtLWRpc2FibGUtbG93cGFzcyIKK1BBQ0tBR0VDT05GSUdbaW52ZXJ0XSA9ICItLWVuYWJsZS1pbnZlcnQsLS1kaXNhYmxlLWludmVydCIKK1BBQ0tBR0VDT05GSUdbdmFyaWFuY2VdID0gIi0tZW5hYmxlLXZhcmlhbmNlLC0tZGlzYWJsZS12YXJpYW5jZSIKK1BBQ0tBR0VDT05GSUdbaW5wdXRdID0gIi0tZW5hYmxlLWlucHV0LC0tZGlzYWJsZS1pbnB1dCIKK1BBQ0tBR0VDT05GSUdbdGF0dW5nXSA9ICItLWVuYWJsZS10YXR1bmcsLS1kaXNhYmxlLXRhdHVuZyIKK1BBQ0tBR0VDT05GSUdbdG91Y2hraXRdID0gIi0tZW5hYmxlLXRvdWNoa2l0LC0tZGlzYWJsZS10b3VjaGtpdCIKK1BBQ0tBR0VDT05GSUdbd2F2ZXNoYXJlXSA9ICItLWVuYWJsZS13YXZlc2hhcmUsLS1kaXNhYmxlLXdhdmVzaGFyZSIKK1BBQ0tBR0VDT05GSUdbdWNiMXgwMF0gPSAiLS1lbmFibGUtdWNiMXgwMCwtLWRpc2FibGUtdWNiMXgwMCIKK1BBQ0tBR0VDT05GSUdbbWs3MTJdID0gIi0tZW5hYmxlLW1rNzEyLC0tZGlzYWJsZS1tazcxMiIKK1BBQ0tBR0VDT05GSUdbaDM2MDBdID0gIi0tZW5hYmxlLWgzNjAwLC0tZGlzYWJsZS1oMzYwMCIKK1BBQ0tBR0VDT05GSUdbZG1jXSA9ICItLWVuYWJsZS1kbWMsLS1kaXNhYmxlLWRtYyIKK1BBQ0tBR0VDT05GSUdbbGluZWFyLWgyMjAwXSA9ICItLWVuYWJsZS1saW5lYXItaDIyMDAsLS1kaXNhYmxlLWxpbmVhci1oMjIwMCIKK1BBQ0tBR0VDT05GSUdbY29yZ2ldID0gIi0tZW5hYmxlLWNvcmdpLC0tZGlzYWJsZS1jb3JnaSIKK1BBQ0tBR0VDT05GSUdbY29sbGllXSA9ICItLWVuYWJsZS1jb2xsaWUsLS1kaXNhYmxlLWNvbGxpZSIKK1BBQ0tBR0VDT05GSUdbYXJjdGljMl0gPSAiLS1lbmFibGUtYXJjdGljMiwtLWRpc2FibGUtYXJjdGljMiIKK1BBQ0tBR0VDT05GSUdbZG1jX2R1czMwMDBdID0gIi0tZW5hYmxlLWRtY19kdXMzMDAwLC0tZGlzYWJsZS1kbWNfZHVzMzAwMCIKK1BBQ0tBR0VDT05GSUdbY3k4bXJsbi1wYWxtcHJlXSA9ICItLWVuYWJsZS1jeThtcmxuLXBhbG1wcmUsLS1kaXNhYmxlLWN5OG1ybG4tcGFsbXByZSIKK1BBQ0tBR0VDT05GSUdbZ2FsYXhdID0gIi0tZW5hYmxlLWdhbGF4LC0tZGlzYWJsZS1nYWxheCIKK1BBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnLC0tZGlzYWJsZS1kZWJ1ZyIKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3RzLmNvbmYgJHtTfS9ldGMvdHMuY29uZgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3Byb2ZpbGUuZC8KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS90c2xpYi5zaCAke0R9JHtzeXNjb25mZGlyfS9wcm9maWxlLmQvCit9CisKK1JQUk9WSURFU190c2xpYi1jb25mID0gImxpYnRzLTAuMC1jb25mIgorCitQQUNLQUdFUyA9KyAidHNsaWItY29uZiB0c2xpYi10ZXN0cyB0c2xpYi1jYWxpYnJhdGUgdHNsaWItdWlucHV0IgorREVCSUFOX05PQVVUT05BTUVfdHNsaWItY29uZiA9ICIxIgorREVCSUFOX05PQVVUT05BTUVfdHNsaWItdGVzdHMgPSAiMSIKK0RFQklBTl9OT0FVVE9OQU1FX3RzbGliLWNhbGlicmF0ZSA9ICIxIgorREVCSUFOX05PQVVUT05BTUVfdHNsaWItdWlucHV0ID0gIjEiCisKK1JERVBFTkRTXyR7UE59ID0gInRzbGliLWNvbmYiCitSUkVDT01NRU5EU18ke1BOfSA9ICJwb2ludGVyY2FsIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS90cy8qLmxhIgorRklMRVNfdHNsaWItY29uZiA9ICIke3N5c2NvbmZkaXJ9L3RzLmNvbmYgJHtzeXNjb25mZGlyfS9wcm9maWxlLmQvdHNsaWIuc2ggJHtkYXRhZGlyfS90c2xpYiIKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L3RzLyouc28qIgorRklMRVNfdHNsaWItY2FsaWJyYXRlICs9ICIke2JpbmRpcn0vdHNfY2FsaWJyYXRlIgorRklMRVNfdHNsaWItdWlucHV0ICs9ICIke2JpbmRpcn0vdHNfdWlucHV0IgorCitGSUxFU190c2xpYi10ZXN0cyA9ICIke2JpbmRpcn0vdHNfaGFydmVzdCAke2JpbmRpcn0vdHNfcHJpbnQgJHtiaW5kaXJ9L3RzX3ByaW50X3JhdyAke2JpbmRpcn0vdHNfcHJpbnRfbXQgXAorICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RzX3Rlc3QgJHtiaW5kaXJ9L3RzX3Rlc3RfbXQgJHtiaW5kaXJ9L3RzX3ZlcmlmeSAke2JpbmRpcn0vdHNfZmluZGRldiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3ZkcGF1L2xpYnZkcGF1X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3ZkcGF1L2xpYnZkcGF1X2dpdC5iYgppbmRleCAzMWY0ZGY0Li4zMWJjY2UwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy92ZHBhdS9saWJ2ZHBhdV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdmRwYXUvbGlidmRwYXVfZ2l0LmJiCkBAIC0xMiw3ICsxMiw5IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKICAgICBybSAtZiAke0R9JHtsaWJkaXJ9LyovKi5sYQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvcmdlbi94Y3Vyc29yZ2VuXzEuMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvcmdlbi94Y3Vyc29yZ2VuXzEuMC41LmJiCmluZGV4IDI3YTM4YzEuLmEyMWRjNDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3JnZW4veGN1cnNvcmdlbl8xLjAuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yZ2VuL3hjdXJzb3JnZW5fMS4wLjUuYmIKQEAgLTcsNiArNyw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMDlmNTY5NzhhNjI4NTQ1MzRkZWFjYzhhYThmZjMwMzEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmM3MTcxYTBmYTIxMmRhODY2ZmNhMjMwMTI0MTYzMGUyMDA5YWVhOGM0ZGRiNzVmMjFiNTFhMzFjMmU0YzU4MSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvYmRmdG9wY2ZfMS4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9iZGZ0b3BjZl8xLjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVkNTAwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9iZGZ0b3BjZl8xLjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94b3JnLWFwcC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiYmRmdG9wY2YgaXMgYSB0b29sIHRvIGNvbnZlcnQgQkRGIGZvbnRzIHRvIFBDRiBmb250cyIKLUhPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL2FwcC9iZGZ0b3BjZi8iCi1TRUNUSU9OID0gIngxMS9hcHAiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY5YTM1MzMzYWRmNzVlZGQxZWFlZjg0YmNhNjVhNDkwIgotREVQRU5EUyA9ICJsaWJ4Zm9udCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUzYTQ4ZTFmZGZlYzI5YWIyZTg5Zjg2ZDRiN2NhOTAyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM4ZjQ0N2JlMGM2MWY5NGM0NzNmMTI4Y2Y1MTlkZDBjZmY2M2I1ZDc3NzUyNDBhMmU4OTVhMTgzYTYxZTIwMjYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvYmRmdG9wY2ZfMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvYmRmdG9wY2ZfMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMTZiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9iZGZ0b3BjZl8xLjEuYmIKQEAgLTAsMCArMSwxMyBAQAorcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hvcmctYXBwLWNvbW1vbi5pbmMKKworU1VNTUFSWSA9ICJiZGZ0b3BjZiBpcyBhIHRvb2wgdG8gY29udmVydCBCREYgZm9udHMgdG8gUENGIGZvbnRzIgorSE9NRVBBR0UgPSAiaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcvYXBwL2JkZnRvcGNmLyIKK1NFQ1RJT04gPSAieDExL2FwcCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjlhMzUzMzNhZGY3NWVkZDFlYWVmODRiY2E2NWE0OTAiCitERVBFTkRTID0gImxpYnhmb250IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmE0NTVkM2MwMjM5MDU5N2ZlYjljZWZiM2ZlOTdhNDUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGI0ZGYwNWZjNTNmMWU5ODk5MzYzOGQ2ZjdlMTc4ZDk1YjMxNzQ1YzQ1NjhjZWU0MDdlMTY3NDkxZmQzMTFhMiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9zZXNzcmVnXzEuMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvc2Vzc3JlZ18xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg4NWQ2MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9zZXNzcmVnXzEuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hvcmctYXBwLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJhIHNpbXBsZSBwcm9ncmFtIGZvciBtYW5hZ2luZyB1dG1wL3d0bXAgZW50cmllcyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDkzOGE3MGM4MjgwYzI2NWExY2NkMjk1NDM2NWQxODUiCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1FcnJvci1GaXgucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiZTIzOGM4OWRhYmM1NjZlMTgzNWUxZWNiNjFiNjA1YjkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTUxMTc3NjU3ODM1ZTA5MDJiNWVlZTdiMTk3MTMwMzViZWFhMTU4MWJiZDNjNjUwNmJhYTU1M2U3NTFlMDE3YyIKLQotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EX1dUTVBYX0ZJTEU9V1RNUF9GSUxFIC1EX1BBVEhfV1RNUFg9X1BBVEhfV1RNUCAtRF9VVE1QWF9GSUxFPVVUTVBfRklMRSAtRF9QQVRIX1VUTVBYPV9QQVRIX1VUTVAgIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9zZXNzcmVnXzEuMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvc2Vzc3JlZ18xLjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmFmYTc4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvc2Vzc3JlZ18xLjEuMS5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gImEgc2ltcGxlIHByb2dyYW0gZm9yIG1hbmFnaW5nIHV0bXAvd3RtcCBlbnRyaWVzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kOTM4YTcwYzgyODBjMjY1YTFjY2QyOTU0MzY1ZDE4NSIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLUVycm9yLUZpeC5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNDc1MTY3YTg5MmI1ODlkYTIzZWRmOGVkZjhjOTQyZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3OGE3NmFlM2YzZjZhMjY1NDdhMzQ2MzBkMWI3NDBmNDIzNDQ4NDhiNWZiNmQ3YzljN2Y3ZGEyNTVlMzVhNmUxIgorCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURfV1RNUFhfRklMRT1XVE1QX0ZJTEUgLURfUEFUSF9XVE1QWD1fUEFUSF9XVE1QIC1EX1VUTVBYX0ZJTEU9VVRNUF9GSUxFIC1EX1BBVEhfVVRNUFg9X1BBVEhfVVRNUCAiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2NsaWVudHNfMS4xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94bHNjbGllbnRzXzEuMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODNhNTMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2NsaWVudHNfMS4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlguT3JnIFgxMSBYIGNsaWVudCB1dGlsaXRpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy9hcHAveGxzY2xpZW50cy8iCi1ERVNDUklQVElPTiA9ICJ4bHNjbGllbnRzIGlzIGEgdXRpbGl0eSBmb3IgbGlzdGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgXAotY2xpZW50IGFwcGxpY2F0aW9ucyBydW5uaW5nIG9uIGEgWDExIHNlcnZlci4iCi1TRUNUSU9OID0gIngxMS9hcHAiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM1MGUxYjcxOGE1NmRmMzljZmU4Y2E5MzQ1ZWE0NTc1IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjlmYmY2YjE3NGE1MTM4YTYxNzM4YTQyZTcwN2FkOGY1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkOTY2NmZjYzZjM2RlMjEwZmM3MGQ1YTg0MWE0MDQ5NTVhZjcwOWE2MTZmZGU1MzBmZTRlOGY3NzIzZTNkM2QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94bHNjbGllbnRzXzEuMS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGxzY2xpZW50c18xLjEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmJkYTdlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGxzY2xpZW50c18xLjEuNC5iYgpAQCAtMCwwICsxLDE0IEBACityZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gIlguT3JnIFgxMSBYIGNsaWVudCB1dGlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy9hcHAveGxzY2xpZW50cy8iCitERVNDUklQVElPTiA9ICJ4bHNjbGllbnRzIGlzIGEgdXRpbGl0eSBmb3IgbGlzdGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgXAorY2xpZW50IGFwcGxpY2F0aW9ucyBydW5uaW5nIG9uIGEgWDExIHNlcnZlci4iCitTRUNUSU9OID0gIngxMS9hcHAiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM1MGUxYjcxOGE1NmRmMzljZmU4Y2E5MzQ1ZWE0NTc1IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjRmYTkyMzc3ZTBkZGMxMzdjZDIyNmE3YTg3YjZiMjlhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc3M2YyYWY0OWM3ZWEyYzQ0ZmJhNDIxM2JlZTY0MzI1ODc1YzFiM2M5YmM0YmJjZDhkYWM5MjYxNzUxODA5YzEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94bHNmb250c18xLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2ZvbnRzXzEuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmVlZDc1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2ZvbnRzXzEuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hvcmctYXBwLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJzZXJ2ZXIgZm9udCBsaXN0IGRpc3BsYXllciBmb3IgWCIKLUhPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL2FwcC94bHNmb250cy8iCi1TRUNUSU9OID0gIngxMS9hcHAiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVlYzc0ZGQ3ZWE0ZDEwYzQ3MTVhN2M0NGYxNTlhNDBiIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmY1NzExYmVmOGM3NjU4NTdhMDg4N2E5MTQ3NjI4M2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDAyOTViZWMzNTA3N2NlZTkzYmUyZTRjMjZjYzAwMjY4ZWQ2YWNlNzc5YWU2ZTk3NzY2YTg2NmMxZTM5MjdmYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2ZvbnRzXzEuMC42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGxzZm9udHNfMS4wLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZiNzZlNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2ZvbnRzXzEuMC42LmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94b3JnLWFwcC1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAic2VydmVyIGZvbnQgbGlzdCBkaXNwbGF5ZXIgZm9yIFgiCitIT01FUEFHRSA9ICJodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy9hcHAveGxzZm9udHMvIgorU0VDVElPTiA9ICJ4MTEvYXBwIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZWM3NGRkN2VhNGQxMGM0NzE1YTdjNDRmMTU5YTQwYiIKKworU1JDX1VSSVttZDVzdW1dID0gIjU3NzRmZDRmNTE4YjNmMzM4ZjJiMjhmMjcwZTA0YmZjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5YjgwYjNhMDMwMDA2YWI2Y2VmNzE3YmUyODZjMTJmMjQ3Nzg5NGIyMjcxNThiMWU2MTMzMjc0ZjZlYmQzNjgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94dGVybV8zMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94dGVybV8zMzAuYmIKaW5kZXggZTNiYjBmYi4uMTZmOWI3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHRlcm1fMzMwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzMzMC5iYgpAQCAtMjcsMyArMjcsOCBAQAogfQogCiBGSUxFU18ke1BOfSArPSAiL3Vzci9saWIvWDExIgorCisjIGJ1c3lib3ggY2FuIHN1cHBseSByZXNpemUgdG9vCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAicmVzaXplIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHd1ZF8xLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h3dWRfMS4wLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYmQ3ZjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHd1ZF8xLjAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94b3JnLWFwcC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWC5PcmcgWDExIFggY2xpZW50IHV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL2FwcC94d3VkLyIKLURFU0NSSVBUSU9OID0gInh3dWQgYWxsb3dzIFggdXNlcnMgdG8gZGlzcGxheSBpbiBhIHdpbmRvdyBhbiBpbWFnZSBzYXZlZCBcCi1pbiBhIHNwZWNpYWxseSBmb3JtYXR0ZWQgZHVtcCBmaWxlLCBzdWNoIGFzIHByb2R1Y2VkIGJ5IHh3ZC4iCi1TRUNUSU9OID0gIngxMS9hcHAiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMxZTg4OTJjODBiN2EwYzFjNWYzN2M4ZThhZTZkNzk0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzAyNWIxNTJiNGYxM2ZkZmZkMGM0NmQwYmU1ODdiZTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDZiM2EwOWNjZmU3NTA4NjhlMjZiZDIzODQ5MDBhYjVmZjBkNDM0ZjdmNDBjZDI3MmE1MGVkYThhYWExZjhiZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h3dWRfMS4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94d3VkXzEuMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjYjU1MGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94d3VkXzEuMC41LmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94b3JnLWFwcC1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiWC5PcmcgWDExIFggY2xpZW50IHV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL2FwcC94d3VkLyIKK0RFU0NSSVBUSU9OID0gInh3dWQgYWxsb3dzIFggdXNlcnMgdG8gZGlzcGxheSBpbiBhIHdpbmRvdyBhbiBpbWFnZSBzYXZlZCBcCitpbiBhIHNwZWNpYWxseSBmb3JtYXR0ZWQgZHVtcCBmaWxlLCBzdWNoIGFzIHByb2R1Y2VkIGJ5IHh3ZC4iCitTRUNUSU9OID0gIngxMS9hcHAiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMxZTg4OTJjODBiN2EwYzFjNWYzN2M4ZThhZTZkNzk0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzk5NzIwOTNiYjA3NjZmY2QwMjIzYjJiZDZkMTE5MzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTk5OTcwNTFmOGE4OTIzMTNmMjJlZGY0MWRhYjQ1ODY0ZTg2ZTcwNjJlZTkwMTJkNWRiYjZhNDBmYzZiMTBhOSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZGF0YS94b3JnLWRhdGEtY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZGF0YS94b3JnLWRhdGEtY29tbW9uLmluYwppbmRleCBiMjMwOTYyLi5jYjZiNWFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRhdGEveG9yZy1kYXRhLWNvbW1vbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kYXRhL3hvcmctZGF0YS1jb21tb24uaW5jCkBAIC03LDQgKzcsNiBAQAogU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEvJHtCUH0udGFyLmJ6MiIKIFMgPSAiJHtXT1JLRElSfS8ke1hPUkdfUE59LSR7UFZ9IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwMS1DT1BZSU5HLWFkZC1HUEx2Mi1saWNlbnNlLWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDEtQ09QWUlORy1hZGQtR1BMdjItbGljZW5zZS1maWxlLnBhdGNoCmluZGV4IDI5ZGQ3MWEuLjJiZmU4NWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwMS1DT1BZSU5HLWFkZC1HUEx2Mi1saWNlbnNlLWZpbGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDAxLUNPUFlJTkctYWRkLUdQTHYyLWxpY2Vuc2UtZmlsZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gODM0ZmEwNjkyMGY4OGNlZWRmNzUyOTY0YzhlMjk2YzY1M2Q1NDFlNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjkxOTcyNTkxOGZhZDJiMzI1MDRmODlhMjgzMTBmY2FlNGFiMDQwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFl1IEtlIDxrZS55dUBpbnRlbC5jb20+CiBEYXRlOiBXZWQsIDExIEFwciAyMDEyIDE0OjI2OjE2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMTJdIENPUFlJTkc6IGFkZCBHUEx2MiBsaWNlbnNlIGZpbGUKK1N1YmplY3Q6IFtQQVRDSF0gQ09QWUlORzogYWRkIEdQTHYyIGxpY2Vuc2UgZmlsZQogCiB0aGlzIGlzIGEgbG9jYWwgZmlsZSByZWNpcGUgYW5kIHRoZSBsaWNlbnNlIGZpbGUgaXMgbWlzc2luZy5JbiBvcmRlcgogdG8gcGFzcyB0aGUgbGljZW5zZSBjaGVja3N1bSBjaGVja2luZywgdGhlIGxpY2Vuc2UgZmlsZSBpcyBuZWVkZWQuIFNvCkBAIC05LDkgKzksMTAgQEAKIAogU2lnbmVkLW9mZi1ieTogWXUgS2UgPGtlLnl1QGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKwogLS0tCi0gQ09QWUlORyB8ICAzMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCAzMzkgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBDT1BZSU5HIHwgMzM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMzM5IGluc2VydGlvbnMoKykKICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09QWUlORwogCiBkaWZmIC0tZ2l0IGEvQ09QWUlORyBiL0NPUFlJTkcKQEAgLTM1OSw2ICszNjAsMyBAQAogK2NvbnNpZGVyIGl0IG1vcmUgdXNlZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9ucyB3aXRoIHRoZQogK2xpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsCiArUHVibGljIExpY2Vuc2UgaW5zdGVhZCBvZiB0aGlzIExpY2Vuc2UuCi0tLSAKLTEuNy44LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDAxLURvbi10LWluc3RhbGwtWHNlc3Npb24tb3ItWHNlcnZlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwMS1Eb24tdC1pbnN0YWxsLVhzZXNzaW9uLW9yLVhzZXJ2ZXIucGF0Y2gKaW5kZXggMjYyODhkNi4uMGVkMTJkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDAxLURvbi10LWluc3RhbGwtWHNlc3Npb24tb3ItWHNlcnZlci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDEtRG9uLXQtaW5zdGFsbC1Yc2Vzc2lvbi1vci1Yc2VydmVyLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBjOTJjZTZhNGIzNjIyODc0ZjgyMGI1ZWM0ODdhMmI2M2Y1MTk4MjZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxMDAyYTExMzdiMTQwZGFkMzMxOWJmMzIwNmZlYzViNmM2Yjc0ZmVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IFRodSwgMTAgTm92IDIwMTYgMTQ6MzM6MDUgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgaW5zdGFsbCBYc2Vzc2lvbiBvciBYc2VydmVyCkBAIC04LDE1ICs4LDE2IEBACiBiZSB1c2VkIGFzIGJlZm9yZS4KIAogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKwogLS0tCi0gTWFrZWZpbGUgfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorIE1ha2VmaWxlIHwgMiAtLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggY2FhNWRlMS4uN2UzNmJiYyAxMDA2NDQKK2luZGV4IGNhYTVkZTEuLjk0MjgyMDUgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKLUBAIC0yMCw3ICsyMCw1IEBAIGluc3RhbGwtcHJvZ3JhbToKK0BAIC0yMCw4ICsyMCw2IEBAIGluc3RhbGwtcHJvZ3JhbToKICAJaW5zdGFsbCAtbSA3NTUgcnVuLWNhbGlicmF0ZS5zaCAkKERFU1RESVIpJChQUkVGSVgpL2Jpbi9ydW4tY2FsaWJyYXRlLnNoCiAgCWluc3RhbGwgLW0gNjQ0IFgxMS9YZGVmYXVsdHMgJChERVNURElSKS9ldGMvWDExL1hkZWZhdWx0cwogIAlpbnN0YWxsIC1tIDc1NSBYMTEvWGluaXQgJChERVNURElSKS9ldGMvWDExL1hpbml0CkBAIC0yNSw2ICsyNiwzIEBACiAgCWluc3RhbGwgLW0gNzU1IFgxMS94c2VydmVyLWNvbW1vbiAkKERFU1RESVIpL2V0Yy9YMTEveHNlcnZlci1jb21tb24KICAJaW5zdGFsbCAtbSA3NTUgWDExL2Z1bmN0aW9ucyAkKERFU1RESVIpL2V0Yy9YMTEvZnVuY3Rpb25zCiAgCWluc3RhbGwgLWQgJChERVNURElSKS9ldGMvWDExL3htb2RtYXAKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDAyLWFkZC1zZXRkcGktWGluaXQuZC1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDItYWRkLXNldGRwaS1YaW5pdC5kLXNjcmlwdC5wYXRjaAppbmRleCAyM2I1MzQ1Li4wYmUzZmE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDItYWRkLXNldGRwaS1YaW5pdC5kLXNjcmlwdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDItYWRkLXNldGRwaS1YaW5pdC5kLXNjcmlwdC5wYXRjaApAQCAtMSwxMiArMSwxMyBAQAotRnJvbSAzZDFhMWE4MjczMTEyNjY4OTI3YTZjNmJiM2UzNjFlODk2ZjViMjI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzYjVmNDMxYTM3MDA1NGJmYzA5MDc5NmU4ZDU1ZGU4YzhjZWE0NmY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogRGF0ZTogV2VkLCAxMSBBcHIgMjAxMiAxNDoyODo0NSArMDIwMAotU3ViamVjdDogW1BBVENIIDAyLzEyXSBhZGQgc2V0ZHBpIFhpbml0LmQgc2NyaXB0CitTdWJqZWN0OiBbUEFUQ0hdIGFkZCBzZXRkcGkgWGluaXQuZCBzY3JpcHQKIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCiAtLS0KLSBYMTEvWGluaXQuZC81MHNldGRwaSB8ICAgOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCisgWDExL1hpbml0LmQvNTBzZXRkcGkgfCA5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKykKICBjcmVhdGUgbW9kZSAxMDA2NDQgWDExL1hpbml0LmQvNTBzZXRkcGkKIAogZGlmZiAtLWdpdCBhL1gxMS9YaW5pdC5kLzUwc2V0ZHBpIGIvWDExL1hpbml0LmQvNTBzZXRkcGkKQEAgLTEwNyw2ICsxMDgsMyBAQAogKwogK3NldF9kcGkgIiRTRVRfU0NSRUVOX0RQSSIKICtzZXRfcnh2dF9mb250ICIkU0NSRUVOX0RQSSIKLS0tIAotMS43LjguNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDYtYWRkLXN1cHBvcnQtZm9yLWV0Yy1YMTEteHNlcnZlci1zeXN0ZW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDYtYWRkLXN1cHBvcnQtZm9yLWV0Yy1YMTEteHNlcnZlci1zeXN0ZW0ucGF0Y2gKaW5kZXggN2VlODU3Mi4uNTNhMjgzZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA2LWFkZC1zdXBwb3J0LWZvci1ldGMtWDExLXhzZXJ2ZXItc3lzdGVtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwNi1hZGQtc3VwcG9ydC1mb3ItZXRjLVgxMS14c2VydmVyLXN5c3RlbS5wYXRjaApAQCAtMSwxNSArMSwxNiBAQAotRnJvbSAwYzQyZTFmYjg0Y2MyYmZlNzY4YmVkMTdmM2I5NzlhY2E4NjhjZjY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiNjBlMzY0YzM1ZDU2YTJhMzE2NDI1NGQ5OGM5OTMxYmZhM2ZlZWQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogRGF0ZTogV2VkLCAxMSBBcHIgMjAxMiAxNDozNDo0MyArMDIwMAotU3ViamVjdDogW1BBVENIIDA2LzEyXSBhZGQgc3VwcG9ydCBmb3IgL2V0Yy9YMTEveHNlcnZlci1zeXN0ZW0KK1N1YmplY3Q6IFtQQVRDSF0gYWRkIHN1cHBvcnQgZm9yIC9ldGMvWDExL3hzZXJ2ZXItc3lzdGVtCiAKIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKwogLS0tCi0gWDExL3hzZXJ2ZXItY29tbW9uIHwgICAgNSArKysrKwotIDEgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorIFgxMS94c2VydmVyLWNvbW1vbiB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9YMTEveHNlcnZlci1jb21tb24gYi9YMTEveHNlcnZlci1jb21tb24KLWluZGV4IDRjN2VkNmUuLjZkOGM5ZGYgMTAwNjQ0CitpbmRleCA1MjY1NWNiLi5iYjdjMmZmIDEwMDY0NAogLS0tIGEvWDExL3hzZXJ2ZXItY29tbW9uCiArKysgYi9YMTEveHNlcnZlci1jb21tb24KIEBAIC0yMDQsMyArMjA0LDggQEAgZmkKQEAgLTIxLDYgKzIyLDMgQEAKICtpZiBbIC1lIC9ldGMvWDExL3hzZXJ2ZXItc3lzdGVtIF0gOyB0aGVuICAgICAgICAgICAgICAgICAgICAKICsgICAgICAgLiAvZXRjL1gxMS94c2VydmVyLXN5c3RlbSAgICAgICAgICAgICAgICAgICAgCiArZmkgICAgICAgICAgICAgICAgICAgIAotLS0gCi0xLjcuOC41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwNy11c2Utb3duLWZ1bmN0aW9ucy1maWxlLWluc3RlYWQtZXRjLWluaXQuZC1mdW5jdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDctdXNlLW93bi1mdW5jdGlvbnMtZmlsZS1pbnN0ZWFkLWV0Yy1pbml0LmQtZnVuY3Rpb25zLnBhdGNoCmluZGV4IDg3OTEyMjYuLjk0YTM1NDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwNy11c2Utb3duLWZ1bmN0aW9ucy1maWxlLWluc3RlYWQtZXRjLWluaXQuZC1mdW5jdGlvbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA3LXVzZS1vd24tZnVuY3Rpb25zLWZpbGUtaW5zdGVhZC1ldGMtaW5pdC5kLWZ1bmN0aW9ucy5wYXRjaApAQCAtMSwxNyArMSwxOCBAQAotRnJvbSA2M2U2YjlhNTRlMWYxMmRiZjdkZGJmZTMzNzZmZmY0YzM4MjQyMWE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0OTJjNjVhMzJhNGFlNDRjMzQ1ODBlZDhhYzVkM2Y1MGExNTVjZmVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogRGF0ZTogV2VkLCAxMSBBcHIgMjAxMiAxNDozNjowMiArMDIwMAotU3ViamVjdDogW1BBVENIIDA3LzEyXSB1c2Ugb3duIGZ1bmN0aW9ucyBmaWxlIGluc3RlYWQgL2V0Yy9pbml0LmQvZnVuY3Rpb25zCitTdWJqZWN0OiBbUEFUQ0hdIHVzZSBvd24gZnVuY3Rpb25zIGZpbGUgaW5zdGVhZCAvZXRjL2luaXQuZC9mdW5jdGlvbnMKIAogKiBzbyB3ZSBkb24ndCBoYXZlIHRvIGRlcGVuZCBvbiBpbml0c2NyaXB0cwogCiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKIC0tLQotIE1ha2VmaWxlICAgICAgICAgICAgIHwgICAgMSArCi0gWDExL1hpbml0LmQvMTF6YXVydXMgfCAgICAyICstCi0gWDExL1hpbml0LmQvMTJrZXltYXAgfCAgICAyICstCi0gWDExL2Z1bmN0aW9ucyAgICAgICAgfCAgIDExICsrKysrKysrKysrCi0gWDExL3hzZXJ2ZXItY29tbW9uICAgfCAgICAyICstCisgTWFrZWZpbGUgICAgICAgICAgICAgfCAgMSArCisgWDExL1hpbml0LmQvMTF6YXVydXMgfCAgMiArLQorIFgxMS9YaW5pdC5kLzEya2V5bWFwIHwgIDIgKy0KKyBYMTEvZnVuY3Rpb25zICAgICAgICB8IDExICsrKysrKysrKysrCisgWDExL3hzZXJ2ZXItY29tbW9uICAgfCAgMiArLQogIDUgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgWDExL2Z1bmN0aW9ucwogCkBAIC03MCw3ICs3MSw3IEBACiArCQl7IGdzdWIoIiAiLCAiXyIsICQyKTsgcHJpbnQgdG9sb3dlcigkMikgfSAnIDwvcHJvYy9jcHVpbmZvCiArfQogZGlmZiAtLWdpdCBhL1gxMS94c2VydmVyLWNvbW1vbiBiL1gxMS94c2VydmVyLWNvbW1vbgotaW5kZXggNmQ4YzlkZi4uZGU5MmJiNyAxMDA2NDQKK2luZGV4IGJiN2MyZmYuLmQ2MjJmMmEgMTAwNjQ0CiAtLS0gYS9YMTEveHNlcnZlci1jb21tb24KICsrKyBiL1gxMS94c2VydmVyLWNvbW1vbgogQEAgLTMwLDcgKzMwLDcgQEAgaWYgWyAtZiAvZXRjL3Byb2ZpbGUgXTsgdGhlbgpAQCAtODIsNiArODMsMyBAQAogIAogIGZhbGxiYWNrX3NjcmVlbl9hcmcoKSB7CiAgICAgIGdlb209YGZic2V0IHwgZ3JlcCBnZW9tZXRyeWAKLS0tIAotMS43LjguNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDgteHNlcnZlci1jb21tb24tYWRkLWRwaS1hbmQtbm9jdXJzb3ItcGFyYW1zLWZvci1ndGEwMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwOC14c2VydmVyLWNvbW1vbi1hZGQtZHBpLWFuZC1ub2N1cnNvci1wYXJhbXMtZm9yLWd0YTAxLnBhdGNoCmluZGV4IGUzNWU0YTcuLjkwZDBmMjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwOC14c2VydmVyLWNvbW1vbi1hZGQtZHBpLWFuZC1ub2N1cnNvci1wYXJhbXMtZm9yLWd0YTAxLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwOC14c2VydmVyLWNvbW1vbi1hZGQtZHBpLWFuZC1ub2N1cnNvci1wYXJhbXMtZm9yLWd0YTAxLnBhdGNoCkBAIC0xLDE2ICsxLDE3IEBACi1Gcm9tIDBlZTdiZjg3ZTBjODNhYmM3OWRlM2E5OWRmYTNjODdkZDVjNWIyMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGUyYWJiZTExMGU3MWE3YjRiNTY1NjRlNmI5ZDU4ZmZhN2YzNGE5ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDExIEFwciAyMDEyIDE0OjM3OjI5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMTJdIHhzZXJ2ZXItY29tbW9uOiBhZGQgZHBpIGFuZCBub2N1cnNvciBwYXJhbXMgZm9yIGd0YTAxCi0gYW5kIGd0YTAyCitTdWJqZWN0OiBbUEFUQ0hdIHhzZXJ2ZXItY29tbW9uOiBhZGQgZHBpIGFuZCBub2N1cnNvciBwYXJhbXMgZm9yIGd0YTAxIGFuZAorIGd0YTAyCiAKIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKwogLS0tCi0gWDExL3hzZXJ2ZXItY29tbW9uIHwgICAgOCArKysrKystLQotIDEgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIFgxMS94c2VydmVyLWNvbW1vbiB8IDggKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvWDExL3hzZXJ2ZXItY29tbW9uIGIvWDExL3hzZXJ2ZXItY29tbW9uCi1pbmRleCBkZTkyYmI3Li5mNzZmYTVmIDEwMDY0NAoraW5kZXggZDYyMmYyYS4uYTJjMDU5MSAxMDA2NDQKIC0tLSBhL1gxMS94c2VydmVyLWNvbW1vbgogKysrIGIvWDExL3hzZXJ2ZXItY29tbW9uCiBAQCAtMTMzLDE1ICsxMzMsMTkgQEAgZWxzZQpAQCAtMzUsNiArMzYsMyBAQAogICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAgOzsKICAgICAgICAgICJtb3Rvcm9sYV9lenhfcGxhdGZvcm0iKQotLS0gCi0xLjcuOC41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwOS14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItbjkwMC1hbGlhcy1ub2tpYV9yeC01LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA5LXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1uOTAwLWFsaWFzLW5va2lhX3J4LTUucGF0Y2gKaW5kZXggMWEwYmRlOC4uOGZiNjliMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA5LXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1uOTAwLWFsaWFzLW5va2lhX3J4LTUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA5LXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1uOTAwLWFsaWFzLW5va2lhX3J4LTUucGF0Y2gKQEAgLTEsMTYgKzEsMTYgQEAKLUZyb20gNmQ2Y2FlY2I3MTcyYjliMzNlNzM2NDU2NGIwZTZlYWJmNjdiNmU4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjJkODA4Y2VhNWI5ZjY5MTU4ZjgyZTE2YzA2Zjg4MmE2ZGIxMGQ2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTEgQXByIDIwMTIgMTQ6NDA6MTQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8xMl0geHNlcnZlci1jb21tb246IGFkZCBzdXBwb3J0IGZvciBuOTAwIGFsaWFzCi0gbm9raWFfcngtNTFfYm9hcmQKK1N1YmplY3Q6IFtQQVRDSF0geHNlcnZlci1jb21tb246IGFkZCBzdXBwb3J0IGZvciBuOTAwIGFsaWFzIG5va2lhX3J4LTUxX2JvYXJkCiAKIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKwogLS0tCi0gWDExL3hzZXJ2ZXItY29tbW9uIHwgICAgNyArKysrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCisgWDExL3hzZXJ2ZXItY29tbW9uIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvWDExL3hzZXJ2ZXItY29tbW9uIGIvWDExL3hzZXJ2ZXItY29tbW9uCi1pbmRleCBmNzZmYTVmLi44NmVkMTdmIDEwMDY0NAoraW5kZXggYTJjMDU5MS4uYjhjMzdlNiAxMDA2NDQKIC0tLSBhL1gxMS94c2VydmVyLWNvbW1vbgogKysrIGIvWDExL3hzZXJ2ZXItY29tbW9uCiBAQCAtMTMyLDYgKzEzMiwxMyBAQCBlbHNlCkBAIC0yNyw2ICsyNywzIEBACiAgICAgICAgICAiZ3RhMDEiICkKICAgICAgICAgICAgICBEUEk9IjI4MCIKICAgICAgICAgICAgICBpZiBbICIkWFNFUlZFUiIgIT0gIlhvcmciIF0gOyB0aGVuCi0tLSAKLTEuNy44LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDEwLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1uZXh1cy1TLWFsaWFzLWhlcnJpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTAteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLW5leHVzLVMtYWxpYXMtaGVycmluZy5wYXRjaAppbmRleCA2ODhiZTQwLi5kMzBjN2JiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTAteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLW5leHVzLVMtYWxpYXMtaGVycmluZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTAteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLW5leHVzLVMtYWxpYXMtaGVycmluZy5wYXRjaApAQCAtMSwxNSArMSwxNiBAQAotRnJvbSA1MjAwM2U2YjUyYjE0MTdjMWEwZTU3MjQzZDgzMzQ5YWRkY2RhY2Y2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhMTk0YmEyMDEzZjllNThjZjczY2QzOWI1N2JlNjgzODZlNTAxZWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogRGF0ZTogV2VkLCAxMSBBcHIgMjAxMiAxNDo0MDo0NCArMDIwMAotU3ViamVjdDogW1BBVENIIDEwLzEyXSB4c2VydmVyLWNvbW1vbjogYWRkIHN1cHBvcnQgZm9yIG5leHVzIFMgYWxpYXMgaGVycmluZworU3ViamVjdDogW1BBVENIXSB4c2VydmVyLWNvbW1vbjogYWRkIHN1cHBvcnQgZm9yIG5leHVzIFMgYWxpYXMgaGVycmluZwogCiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKIC0tLQotIFgxMS94c2VydmVyLWNvbW1vbiB8ICAgIDMgKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCisgWDExL3hzZXJ2ZXItY29tbW9uIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9YMTEveHNlcnZlci1jb21tb24gYi9YMTEveHNlcnZlci1jb21tb24KLWluZGV4IDg2ZWQxN2YuLjVjOWE2ZWIgMTAwNjQ0CitpbmRleCBiOGMzN2U2Li45YWE2YjI0IDEwMDY0NAogLS0tIGEvWDExL3hzZXJ2ZXItY29tbW9uCiArKysgYi9YMTEveHNlcnZlci1jb21tb24KIEBAIC0xMjYsNiArMTI2LDkgQEAgZWxzZQpAQCAtMjIsNiArMjMsMyBAQAogICAgICAgICAgImdlbmVyaWNfb21hcDE1MTAvMTYxMC8xNzEwIikKICAgICAgICAgICAgICBBUkdTPSIkQVJHUyAtc2NyZWVuICR7U0NSRUVOX1NJWkV9IgogICAgICAgICAgICAgIERQST0iMjI1IiA7OwotLS0gCi0xLjcuOC41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMS14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItbmV4dXMtb25lLWFsaWFzLW1haGltLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDExLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1uZXh1cy1vbmUtYWxpYXMtbWFoaW0ucGF0Y2gKaW5kZXggZjgwNDU2ZC4uMjNlMTdmMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDExLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1uZXh1cy1vbmUtYWxpYXMtbWFoaW0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDExLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1uZXh1cy1vbmUtYWxpYXMtbWFoaW0ucGF0Y2gKQEAgLTEsMTYgKzEsMTYgQEAKLUZyb20gMGVjYzk3OGI3ZDhjYjY4Njc2NDZmYjJhMjk1MjNlYmVmM2FmYTAxNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZGZkODMyYjM1YjZjYjRjZjJiNmYyYjUxZGY3YjA5OTlmMTBjOGNhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTEgQXByIDIwMTIgMTQ6NDE6MDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8xMl0geHNlcnZlci1jb21tb246IGFkZCBzdXBwb3J0IGZvciBuZXh1cyBvbmUgYWxpYXMKLSBtYWhpbWFoaQorU3ViamVjdDogW1BBVENIXSB4c2VydmVyLWNvbW1vbjogYWRkIHN1cHBvcnQgZm9yIG5leHVzIG9uZSBhbGlhcyBtYWhpbWFoaQogCiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKIC0tLQotIFgxMS94c2VydmVyLWNvbW1vbiB8ICAgIDMgKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCisgWDExL3hzZXJ2ZXItY29tbW9uIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9YMTEveHNlcnZlci1jb21tb24gYi9YMTEveHNlcnZlci1jb21tb24KLWluZGV4IDVjOWE2ZWIuLjU1NTk0ZmQgMTAwNjQ0CitpbmRleCA5YWE2YjI0Li44ZGE5MjZlIDEwMDY0NAogLS0tIGEvWDExL3hzZXJ2ZXItY29tbW9uCiArKysgYi9YMTEveHNlcnZlci1jb21tb24KIEBAIC0xMjksNiArMTI5LDkgQEAgZWxzZQpAQCAtMjMsNiArMjMsMyBAQAogICAgICAgICAgImdlbmVyaWNfb21hcDE1MTAvMTYxMC8xNzEwIikKICAgICAgICAgICAgICBBUkdTPSIkQVJHUyAtc2NyZWVuICR7U0NSRUVOX1NJWkV9IgogICAgICAgICAgICAgIERQST0iMjI1IiA7OwotLS0gCi0xLjcuOC41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMi14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItZ3RhMDQtYWxpYXMtT3BlblBob2VuLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDEyLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1ndGEwNC1hbGlhcy1PcGVuUGhvZW4ucGF0Y2gKaW5kZXggNTRhMDMyOS4uNWU3OTRmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDEyLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1ndGEwNC1hbGlhcy1PcGVuUGhvZW4ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDEyLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1ndGEwNC1hbGlhcy1PcGVuUGhvZW4ucGF0Y2gKQEAgLTEsMTYgKzEsMTYgQEAKLUZyb20gZDE5NGYwMzAyNTgyZjFjYTU5OWYyZWE1OGMxNWUxNWY0ZmQ2YmRlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDllMDVlNTNiMzBjNjY3MDU4NTIyNTZmZjVjNjAzMjUyYWE5NGIyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTEgQXByIDIwMTIgMTQ6NDE6NTIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8xMl0geHNlcnZlci1jb21tb246IGFkZCBzdXBwb3J0IGZvciBndGEwNCBhbGlhcwotIE9wZW5QaG9lbnV4CitTdWJqZWN0OiBbUEFUQ0hdIHhzZXJ2ZXItY29tbW9uOiBhZGQgc3VwcG9ydCBmb3IgZ3RhMDQgYWxpYXMgT3BlblBob2VudXgKIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCiAtLS0KLSBYMTEveHNlcnZlci1jb21tb24gfCAgICA4ICsrKysrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCisgWDExL3hzZXJ2ZXItY29tbW9uIHwgOCArKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL1gxMS94c2VydmVyLWNvbW1vbiBiL1gxMS94c2VydmVyLWNvbW1vbgotaW5kZXggNTU1OTRmZC4uNDM0MzMzZSAxMDA2NDQKK2luZGV4IDhkYTkyNmUuLmQ5MzI1ZGQgMTAwNjQ0CiAtLS0gYS9YMTEveHNlcnZlci1jb21tb24KICsrKyBiL1gxMS94c2VydmVyLWNvbW1vbgogQEAgLTE2MSw2ICsxNjEsMTQgQEAgZWxzZQpAQCAtMjgsNiArMjgsMyBAQAogICAgICAgICAgIm1vdG9yb2xhX2V6eF9wbGF0Zm9ybSIpCiAgICAgICAgICAgICAgQVJHUz0iJEFSR1MgLXNjcmVlbiAyNDB4MzIwIgogICAgICAgICAgICAgIERQST0iMTcwIiA7OwotLS0gCi0xLjcuOC41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMy14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItdHVuYS1hbGlhcy1HYWxheHktTmV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDEzLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci10dW5hLWFsaWFzLUdhbGF4eS1OZXgucGF0Y2gKaW5kZXggNDkzMjFlYi4uNzhkMmU0MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDEzLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci10dW5hLWFsaWFzLUdhbGF4eS1OZXgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDEzLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci10dW5hLWFsaWFzLUdhbGF4eS1OZXgucGF0Y2gKQEAgLTEsMTMgKzEsMTMgQEAKLUZyb20gMTc2YzNiZDNkODZjMjIzZmQ0NGIwZjE1YjYyZDM4NTI2YmIzYjBkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTdhYjUyMWZmYzEwMjRmMjExMDVjYTE0YmUyZDA0MWE0Nzc5NDJiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMTcgQXVnIDIwMTIgMTM6MDA6NTYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8xM10geHNlcnZlci1jb21tb246IGFkZCBzdXBwb3J0IGZvciB0dW5hIGFsaWFzIEdhbGF4eQotIE5leHVzCitTdWJqZWN0OiBbUEFUQ0hdIHhzZXJ2ZXItY29tbW9uOiBhZGQgc3VwcG9ydCBmb3IgdHVuYSBhbGlhcyBHYWxheHkgTmV4dXMKIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCiAtLS0KLSBYMTEveHNlcnZlci1jb21tb24gfCAgICA4ICsrKysrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCisgWDExL3hzZXJ2ZXItY29tbW9uIHwgOCArKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL1gxMS94c2VydmVyLWNvbW1vbiBiL1gxMS94c2VydmVyLWNvbW1vbgogaW5kZXggZDkzMjVkZC4uMDE3ZTVhZSAxMDA2NDQKQEAgLTI4LDYgKzI4LDMgQEAKICAgICAgICAgICJtb3Rvcm9sYV9lenhfcGxhdGZvcm0iKQogICAgICAgICAgICAgIEFSR1M9IiRBUkdTIC1zY3JlZW4gMjQweDMyMCIKICAgICAgICAgICAgICBEUEk9IjE3MCIgOzsKLS0tIAotMS43LjguNgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTUteHNlcnZlci1jb21tb24tZGlzYWJsZS1UQ1AtY29ubmVjdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTUteHNlcnZlci1jb21tb24tZGlzYWJsZS1UQ1AtY29ubmVjdGlvbnMucGF0Y2gKaW5kZXggMDZkZjI2MS4uYTczMTkxNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDE1LXhzZXJ2ZXItY29tbW9uLWRpc2FibGUtVENQLWNvbm5lY3Rpb25zLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxNS14c2VydmVyLWNvbW1vbi1kaXNhYmxlLVRDUC1jb25uZWN0aW9ucy5wYXRjaApAQCAtMSwzICsxLDQgQEAKK0Zyb20gNTIzNjIwOWUzMGUwZjQ1MTEzZTE0MGYwNjY3YzhmZmNmZTYyMTUzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphdmllciBWaWd1ZXJhIDxqYXZpZXIudmlndWVyYUBkaWdpLmNvbT4KIERhdGU6IFdlZCwgMjYgTm92IDIwMTQgMDk6MjQ6NDQgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0geHNlcnZlci1jb21tb246IGRpc2FibGUgVENQIGNvbm5lY3Rpb25zCkBAIC01LDEyICs2LDEzIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFNpZ25lZC1vZmYtYnk6IEphdmllciBWaWd1ZXJhIDxqYXZpZXIudmlndWVyYUBkaWdpLmNvbT4KKwogLS0tCiAgWDExL3hzZXJ2ZXItY29tbW9uIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvWDExL3hzZXJ2ZXItY29tbW9uIGIvWDExL3hzZXJ2ZXItY29tbW9uCi1pbmRleCAwMTdlNWFlZTFhYjAuLjRkYzQ4YzQxMjc0MSAxMDA2NDQKK2luZGV4IDAxN2U1YWUuLjRkYzQ4YzQgMTAwNjQ0CiAtLS0gYS9YMTEveHNlcnZlci1jb21tb24KICsrKyBiL1gxMS94c2VydmVyLWNvbW1vbgogQEAgLTQ0LDcgKzQ0LDcgQEAgU0NSRUVOX1NJWkU9YGZhbGxiYWNrX3NjcmVlbl9hcmdgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbl8xLjM0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb25fMS4zNC5iYgppbmRleCBjYzMwNTQxLi5hNWVkMjFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbl8xLjM0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uXzEuMzQuYmIKQEAgLTUsNyArNSw5IEBACiBQUiA9ICJyOSIKIAogIyB3ZSBhcmUgdXNpbmcgYSBncGUtc3R5bGUgTWFrZWZpbGUKLWluaGVyaXQgZ3BlCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBncGUKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogU1JDX1VSSVttZDVzdW1dID0gIjgyZjJmODRjZDk2NjEwZThmN2I5MmM3MDBjZDMxYzE0IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkMDRjMzM0MThmNzc2YjFlMTNmY2M3YWYzZDZiZDBjN2NjY2QwM2ZiYWJkN2RiY2Q5N2Y4ODE2NmNjMzQyMTAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3B1cG93ZXIvY3B1cG93ZXIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3B1cG93ZXIvY3B1cG93ZXIuYmIKaW5kZXggYzk2M2M4ZS4uNGFiZDI3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NwdXBvd2VyL2NwdXBvd2VyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcHVwb3dlci9jcHVwb3dlci5iYgpAQCAtMyw3ICszLDcgQEAKIHNhdmluZyByZWxhdGVkIGZlYXR1cmVzIG9mIHlvdXIgcHJvY2Vzc29yLiIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzgxMGZhYjc0ODdmYjBhYWQzMjdiNzZmMWJlN2NkNyIKLURFUEVORFMgPSAicGNpdXRpbHMiCitERVBFTkRTID0gInBjaXV0aWxzIGdldHRleHQtbmF0aXZlIgogUFJPVklERVMgPSAidmlydHVhbC9jcHVwb3dlciIKIAogaW5oZXJpdCBrZXJuZWxzcmMga2VybmVsLWFyY2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaC8wMDA0LWNyYXNoLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtbWlwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaC8wMDA0LWNyYXNoLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtbWlwcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU3Y2U2Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2gvMDAwNC1jcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1Gcm9tIDQyM2ViZGNlMDdhYTlmMzk4ZjMyYzBhZGY2NTkzNTMwNjlkMDIzYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCA0IE1heSAyMDE3IDA3OjE0OjEzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNyYXNoOiBmaXggYnVpbGQgZmFpbHVyZSB3aXRoIG1pcHMKLQotV2hlbiBidWlsZCBjcmFzaCB3aXRoIG1pcHM6Ci0KLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotbWlwcy1saW51eC1uYXQuYzoxNTc6MTogZXJyb3I6IGNvbmZsaWN0aW5nIHR5cGVzIGZvciAncHNfZ2V0X3RocmVhZF9hcmVhJwotIHBzX2dldF90aHJlYWRfYXJlYSAoY29uc3Qgc3RydWN0IHBzX3Byb2NoYW5kbGUgKnBoLAotIF5+fn5+fn5+fn5+fn5+fn5+fgotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGdkYl9wcm9jX3NlcnZpY2UuaDoyNjowLAotICAgICAgICAgICAgICAgICBmcm9tIG1pcHMtbGludXgtbmF0LmM6MzI6Ci1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotVGhpcyBwcm9ibGVtIGhhdmUgYmVlbiBmaXhlZCBvbiBpbnRlbCBhbmQgYXJtIHBsYW50Zm9ybSwgd2UgY2FuIHVzZSB0aGUKLXNpbWlsYXIgYXBwcm9jaCB0byBmaXggaXQgb24gbWlwcy4KLQotVXBzdHJlYW0tc3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9jcmFzaC11dGlsaXR5L2NyYXNoL3B1bGwvMTFdCi0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBNYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCi0gY3Jhc2gtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1taXBzLnBhdGNoIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGNyYXNoLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtbWlwcy5wYXRjaAotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNTQ5NjUyMy4uMmVjMzMyNSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTI2OCw2ICsyNjgsNyBAQCBnZGJfcGF0Y2g6Ci0gCQlncmVwICdleHRlcm4gcHNfZXJyX2UgcHNfZ2V0X3RocmVhZF9hcmVhIChzdHJ1Y3QnICR7UkVDSVBFX1NZU1JPT1R9L3Vzci9pbmNsdWRlL3Byb2Nfc2VydmljZS5oOyBcCi0gCQlpZiBbICQkPyAtZXEgMCBdOyB0aGVuIFwKLSAJCQlwYXRjaCAtcDAgPCAke0dEQn0tcHJvY19zZXJ2aWNlLmgucGF0Y2g7IFwKLSsJCQlwYXRjaCAtcDEgPCBjcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2g7IFwKLSAJCWZpOyBcCi0gCWZpCi0gCi1kaWZmIC0tZ2l0IGEvY3Jhc2gtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1taXBzLnBhdGNoIGIvY3Jhc2gtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1taXBzLnBhdGNoCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMGM3MGM1ZgotLS0tIC9kZXYvbnVsbAotKysrIGIvY3Jhc2gtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1taXBzLnBhdGNoCi1AQCAtMCwwICsxLDM5IEBACi0rRnJvbSA2MTVjODAyZDljNzNmYWQ0ODcyM2I2NTY3MDQyY2Q1NGY2Nzk1ODQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotK0Zyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0rRGF0ZTogVGh1LCA0IE1heSAyMDE3IDA2OjE0OjQ3ICswMDAwCi0rU3ViamVjdDogW1BBVENIXSBjcmFzaDogZml4IGJ1aWxkIGZhaWx1cmUgd2l0aCBtaXBzCi0rCi0rV2hlbiBidWlsZCBjcmFzaCB3aXRoIG1pcHM6Ci0rCi0rfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotK21pcHMtbGludXgtbmF0LmM6MTU3OjE6IGVycm9yOiBjb25mbGljdGluZyB0eXBlcyBmb3IgJ3BzX2dldF90aHJlYWRfYXJlYScKLSsgcHNfZ2V0X3RocmVhZF9hcmVhIChjb25zdCBzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqcGgsCi0rIF5+fn5+fn5+fn5+fn5+fn5+fgotK0luIGZpbGUgaW5jbHVkZWQgZnJvbSBnZGJfcHJvY19zZXJ2aWNlLmg6MjY6MCwKLSsgICAgICAgICAgICAgICAgIGZyb20gbWlwcy1saW51eC1uYXQuYzozMjoKLSt+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0rCi0rVGhpcyBwcm9ibGVtIGhhdmUgYmVlbiBmaXhlZCBvbiBpbnRlbCBhbmQgYXJtIHBsYW50Zm9ybSwgd2UgY2FuIHVzZSB0aGUKLStzaW1pbGFyIGFwcHJvY2ggdG8gZml4IGl0IG9uIG1pcHMuCi0rCi0rU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLSstLS0KLSsgZ2RiLTcuNi9nZGIvbWlwcy1saW51eC1uYXQuYyB8IDIgKy0KLSsgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0rCi0rZGlmZiAtLWdpdCBhL2dkYi03LjYvZ2RiL21pcHMtbGludXgtbmF0LmMgYi9nZGItNy42L2dkYi9taXBzLWxpbnV4LW5hdC5jCi0raW5kZXggNjFlODNjNi4uZDUxN2UzNyAxMDA2NDQKLSstLS0gYS9nZGItNy42L2dkYi9taXBzLWxpbnV4LW5hdC5jCi0rKysrIGIvZ2RiLTcuNi9nZGIvbWlwcy1saW51eC1uYXQuYwotK0BAIC0xNTQsNyArMTU0LDcgQEAgbWlwczY0X2xpbnV4X3JlZ2lzdGVyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbm8sIGludCBzdG9yZSkKLSsgLyogRmV0Y2ggdGhlIHRocmVhZC1sb2NhbCBzdG9yYWdlIHBvaW50ZXIgZm9yIGxpYnRocmVhZF9kYi4gICovCi0rIAotKyBwc19lcnJfZQotKy1wc19nZXRfdGhyZWFkX2FyZWEgKGNvbnN0IHN0cnVjdCBwc19wcm9jaGFuZGxlICpwaCwKLSsrcHNfZ2V0X3RocmVhZF9hcmVhIChzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqcGgsCi0rICAgICAgICAgICAgICAgICAgICAgbHdwaWRfdCBsd3BpZCwgaW50IGlkeCwgdm9pZCAqKmJhc2UpCi0rIHsKLSsgICBpZiAocHRyYWNlIChQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBLCBsd3BpZCwgTlVMTCwgYmFzZSkgIT0gMCkKLSstLSAKLSsyLjExLjAKLSsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjEuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjEuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQwOTM3ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4xLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJLZXJuZWwgYW5hbHlzaXMgdXRpbGl0eSBmb3IgbGl2ZSBzeXN0ZW1zLCBuZXRkdW1wLCBkaXNrZHVtcCwga2R1bXAsIExLQ0Qgb3IgbWNvcmUgZHVtcGZpbGVzIgotREVTQ1JJUFRJT04gPSAiVGhlIGNvcmUgYW5hbHlzaXMgc3VpdGUgaXMgYSBzZWxmLWNvbnRhaW5lZCB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG9cCi1pbnZlc3RpZ2F0ZSBlaXRoZXIgbGl2ZSBzeXN0ZW1zLCBrZXJuZWwgY29yZSBkdW1wcyBjcmVhdGVkIGZyb20gdGhlXAotbmV0ZHVtcCwgZGlza2R1bXAgYW5kIGtkdW1wIHBhY2thZ2VzIGZyb20gUmVkIEhhdCBMaW51eCwgdGhlIG1jb3JlIGtlcm5lbCBwYXRjaFwKLW9mZmVyZWQgYnkgTWlzc2lvbiBDcml0aWNhbCBMaW51eCwgb3IgdGhlIExLQ0Qga2VybmVsIHBhdGNoLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3Blb3BsZS5yZWRoYXQuY29tL2FuZGVyc29uIgotU0VDVElPTiA9ICJkZXZlbCIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotREVQRU5EUyA9ICJ6bGliIHJlYWRsaW5lIGNvcmV1dGlscy1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NyYXNoLXV0aWxpdHkvJHtCUE59L2FyY2hpdmUvJHtQVn0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9JHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgaHR0cDovL2Z0cC5nbnUub3JnL2dudS9nZGIvZ2RiLTcuNi50YXIuZ3o7bmFtZT1nZGI7c3ViZGlyPSR7QlB9IFwKLSAgICAgICAgICAgZmlsZTovLzcwMDFmb3JjZV9kZWZpbmVfYXJjaGl0ZWN0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzcwMDNjcm9zc19yYW5saWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jcm9zc19hZGRfY29uZmlndXJlX29wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zaW0tcHBjLWRyb3AtTElCUy1mcm9tLXBzaW0tZGVwZW5kZW5jeS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zaW0tY29tbW9uLXNpbS1hcmFuZ2UtZml4LWV4dGVybi1pbmxpbmUtaGFuZGxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9ubm90LWV4dHJhY3QtZ2RiLWR1cmluZy1kby1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dkYl9idWlsZF9qb2JzX2FuZF9ub3Rfd3JpdGVfY3Jhc2hfdGFyZ2V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS11bnJlY29nbml6ZWQtZ2NjLW9wdGlvbi1tMzItZm9yLW1pcHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jcmFzaC1maXgtYnVpbGQtZXJyb3ItdW5rbm93bi10eXBlLW5hbWUtZ2RiX2ZwcmVnc2V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtY3Jhc2gtZGV0ZWN0LXRoZS1zeXNyb290LXMtZ2xpYmMtaGVhZGVyLWZpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1jcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjNiNDRhMTUxZGJlNzA0NjQ2MmI5Y2FhYTk4NDdjYTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzQ4ZTEyNjk0NDNhNmE4ZTgzMzdlMzI4YjIxYjAzZTRlNTAyNDhmNjA3ZWVkODNmYmIyN2ViMGQ4MzNkNmFhNCIKLQotU1JDX1VSSVtnZGIubWQ1c3VtXSA9ICJhOTgzNjcwNzMzN2U1ZjdiZjc2YTAwOWE4OTA0ZjQ3MCIKLVNSQ19VUklbZ2RiLnNoYTI1NnN1bV0gPSAiODA3MDM4OWE1ZGNjMTA0ZWIwYmU0ODNkNTgyNzI5Zjk4ZWQ0ZDc2MWFkMTljZWRkM2YxN2I1ZDI1MDJmYWEzNiIKLQotaW5oZXJpdCBnZXR0ZXh0Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIGNyb3NzIgotVEFSR0VUX0NDX0FSQ0hfYXBwZW5kID0gIiAke1NFTEVDVEVEX09QVElNSVpBVElPTn0iCi0KLSMgY3Jhc2ggNy4xLjMgYW5kIGJlZm9yZSBkb24ndCBzdXBwb3J0IG1pcHM2NAotQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFtaXBzNjQpLioiCi0KLUVYVFJBX09FTUFLRSA9ICdSUE1QS0c9IiR7UFZ9IiBcCi0gICAgICAgICAgICAgICAgR0RCX1RBUkdFVD0iJHtUQVJHRVRfU1lTfSIgXAotICAgICAgICAgICAgICAgIEdEQl9IT1NUPSIke0JVSUxEX1NZU30iIFwKLSAgICAgICAgICAgICAgICBHREJfTUFLRV9KT0JTPSIke1BBUkFMTEVMX01BS0V9IiBcCi0gICAgICAgICAgICAgICAgTERGTEFHUz0iJHtMREZMQUdTfSIgXAotICAgICAgICAgICAgICAgICcKLQotRVhUUkFfT0VNQUtFX2NsYXNzLWNyb3NzID0gJ1JQTVBLRz0iJHtQVn0iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJfVEFSR0VUPSIke0JVSUxEX1NZU30gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwke0dEQl9DT05GX0ZMQUdTfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9IT1NUPSIke0JVSUxEX1NZU30iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJfTUFLRV9KT0JTPSIke1BBUkFMTEVMX01BS0V9IiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJwotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgTERGTEFHUz0nJHtCVUlMRF9MREZMQUdTfSciCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLWNyb3NzID0gIiBMREZMQUdTPScke0JVSUxEX0xERkxBR1N9JyIKLQotUkVNT1ZFX00zMiA9ICJzZWQgLWkgLWUgJ3MvI2RlZmluZSBUQVJHRVRfQ0ZMQUdTX0FSTV9PTl9YODZfNjQuKi8jZGVmaW5lIFRBUkdFVF9DRkxBR1NfQVJNX09OX1g4Nl82NFx0XCJUQVJHRVRfQ0ZMQUdTPS1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjRcIi9nJyAke1N9L2NvbmZpZ3VyZS5jIgotCi1SRU1PVkVfTTMyX2NsYXNzLWNyb3NzID0gIiIKLQotZG9fY29uZmlndXJlKCkgewotICAgIDoKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KLSAgICAgICAgYWFyY2g2NCopICAgIEFSQ0g9QVJNNjQgOzsKLSAgICAgICAgYXJtKikgICAgICAgIEFSQ0g9QVJNIDs7Ci0gICAgICAgIGkqODYqKSAgICAgICBBUkNIPVg4NiA7OwotICAgICAgICB4ODZfNjQqKSAgICAgQVJDSD1YODZfNjQgOzsKLSAgICAgICAgcG93ZXJwYzY0KikgIEFSQ0g9UFBDNjQgOzsKLSAgICAgICAgcG93ZXJwYyopICAgIEFSQ0g9UFBDIDs7Ci0gICAgICAgIG1pcHMqKSAgICAgICBBUkNIPU1JUFMgOzsKLSAgICBlc2FjCi0KLSAgICBzZWQgLWkgcy9GT1JDRV9ERUZJTkVfQVJDSC8iJHtBUkNIfSIvZyAke1N9L2NvbmZpZ3VyZS5jCi0gICAgJHtSRU1PVkVfTTMyfQotICAgIHNlZCAtaSAncy8mZ3Q7Lz4vZycgJHtTfS9NYWtlZmlsZQotfQotCi1kb19jb21waWxlKCkgewotICAgIG9lX3J1bm1ha2UgJHtFWFRSQV9PRU1BS0V9IFJFQ0lQRV9TWVNST09UPSR7UkVDSVBFX1NZU1JPT1R9Ci19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9jcmFzaAotCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3Jhc2guOCAke0R9LyR7bWFuZGlyfS9tYW44LwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RlZnMuaCAke0R9JHtpbmNsdWRlZGlyfS9jcmFzaAotfQotCi1kb19pbnN0YWxsX2NsYXNzLXRhcmdldCAoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0ke1NUQUdJTkdfRElSX05BVElWRX0gaW5zdGFsbAotfQotCi1kb19pbnN0YWxsX2NsYXNzLWNyb3NzICgpIHsKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9jcmFzaCAke0R9LyR7YmluZGlyfQotfQotCi1SREVQRU5EU18ke1BOfSArPSAibGlibHptYSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1jcm9zcyA9ICIiCi0KLSMgQ2F1c2VzIGdjYyB0byBnZXQgc3R1Y2sgYW5kIGVhdCBhbGwgYXZhaWxhYmxlIG1lbW9yeSBpbiBxZW11YXJtIGJ1aWxkcwotIyBqZW5raW5zICAxNTE2MSAgMTAwIDEyLjUgMTAzODk1OTYgMTAzMjEyODQgPyAgIFIgICAgMTE6NDAgIDI4OjE3IC9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliZXhlYy9hcm0tb2UtbGludXgtZ251ZWFiaS9nY2MvYXJtLW9lLWxpbnV4LWdudWVhYmkvNC45LjIvY2MxIC1xdWlldCAtSSAuIC1JIC4gLUkgLi9jb21tb24gLUkgLi9jb25maWcgLUkgLi8uLi9pbmNsdWRlL29wY29kZSAtSSAuLy4uL29wY29kZXMvLi4gLUkgLi8uLi9yZWFkbGluZS8uLiAtSSAuLi9iZmQgLUkgLi8uLi9iZmQgLUkgLi8uLi9pbmNsdWRlIC1JIC4uL2xpYmRlY251bWJlciAtSSAuLy4uL2xpYmRlY251bWJlciAtSSAuL2dudWxpYi9pbXBvcnQgLUkgYnVpbGQtZ251bGliL2ltcG9ydCAtaXN5c3Jvb3QgL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdWFybSAtTU1EIGV2YWwuZCAtTUYgLmRlcHMvZXZhbC5UcG8gLU1QIC1NVCBldmFsLm8gLUQgTE9DQUxFRElSPSIvdXNyL2xvY2FsL3NoYXJlL2xvY2FsZSIgLUQgQ1JBU0hfTUVSR0UgLUQgSEFWRV9DT05GSUdfSCAtRCBUVUk9MSBldmFsLmMgLXF1aWV0IC1kdW1wYmFzZSBldmFsLmMgLW1hcmNoPWFybXY1dGUgLW10aHVtYiAtbXRodW1iLWludGVyd29yayAtbXRscy1kaWFsZWN0PWdudSAtYXV4YmFzZS1zdHJpcCBldmFsLm8gLWcgLU8yIC1XYWxsIC1XcG9pbnRlci1hcml0aCAtV2Zvcm1hdC1ub25saXRlcmFsIC1Xbm8tcG9pbnRlci1zaWduIC1Xbm8tdW51c2VkIC1XdW51c2VkLXZhbHVlIC1XdW51c2VkLWZ1bmN0aW9uIC1Xbm8tc3dpdGNoIC1Xbm8tY2hhci1zdWJzY3JpcHRzIC1XbWlzc2luZy1wcm90b3R5cGVzIC1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IC1XZW1wdHktYm9keSAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgLW8gLQotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJlYTQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjIuMC5iYgpAQCAtMCwwICsxLDExNSBAQAorU1VNTUFSWSA9ICJLZXJuZWwgYW5hbHlzaXMgdXRpbGl0eSBmb3IgbGl2ZSBzeXN0ZW1zLCBuZXRkdW1wLCBkaXNrZHVtcCwga2R1bXAsIExLQ0Qgb3IgbWNvcmUgZHVtcGZpbGVzIgorREVTQ1JJUFRJT04gPSAiVGhlIGNvcmUgYW5hbHlzaXMgc3VpdGUgaXMgYSBzZWxmLWNvbnRhaW5lZCB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG9cCitpbnZlc3RpZ2F0ZSBlaXRoZXIgbGl2ZSBzeXN0ZW1zLCBrZXJuZWwgY29yZSBkdW1wcyBjcmVhdGVkIGZyb20gdGhlXAorbmV0ZHVtcCwgZGlza2R1bXAgYW5kIGtkdW1wIHBhY2thZ2VzIGZyb20gUmVkIEhhdCBMaW51eCwgdGhlIG1jb3JlIGtlcm5lbCBwYXRjaFwKK29mZmVyZWQgYnkgTWlzc2lvbiBDcml0aWNhbCBMaW51eCwgb3IgdGhlIExLQ0Qga2VybmVsIHBhdGNoLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3Blb3BsZS5yZWRoYXQuY29tL2FuZGVyc29uIgorU0VDVElPTiA9ICJkZXZlbCIKKworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyA9ICJ6bGliIHJlYWRsaW5lIGNvcmV1dGlscy1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NyYXNoLXV0aWxpdHkvJHtCUE59L2FyY2hpdmUvJHtQVn0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9JHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgaHR0cDovL2Z0cC5nbnUub3JnL2dudS9nZGIvZ2RiLTcuNi50YXIuZ3o7bmFtZT1nZGI7c3ViZGlyPSR7QlB9IFwKKyAgICAgICAgICAgZmlsZTovLzcwMDFmb3JjZV9kZWZpbmVfYXJjaGl0ZWN0dXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzcwMDNjcm9zc19yYW5saWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jcm9zc19hZGRfY29uZmlndXJlX29wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zaW0tcHBjLWRyb3AtTElCUy1mcm9tLXBzaW0tZGVwZW5kZW5jeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zaW0tY29tbW9uLXNpbS1hcmFuZ2UtZml4LWV4dGVybi1pbmxpbmUtaGFuZGxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9ubm90LWV4dHJhY3QtZ2RiLWR1cmluZy1kby1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dkYl9idWlsZF9qb2JzX2FuZF9ub3Rfd3JpdGVfY3Jhc2hfdGFyZ2V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS11bnJlY29nbml6ZWQtZ2NjLW9wdGlvbi1tMzItZm9yLW1pcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1jcmFzaC1maXgtYnVpbGQtZXJyb3ItdW5rbm93bi10eXBlLW5hbWUtZ2RiX2ZwcmVnc2V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtY3Jhc2gtZGV0ZWN0LXRoZS1zeXNyb290LXMtZ2xpYmMtaGVhZGVyLWZpbGUucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDg4OTlkZTMxMThlMDRjZmE0MGEyMzY0ZjU2MTgxOTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQwNzZlMWZlZmI0MWFhMTc4YWQzZTFjZWY2NTExNjcwZWZjNDdkZTVjYjA0ZDRhZjliZGQ0ZThmMmYxOGNiYyIKKworU1JDX1VSSVtnZGIubWQ1c3VtXSA9ICJhOTgzNjcwNzMzN2U1ZjdiZjc2YTAwOWE4OTA0ZjQ3MCIKK1NSQ19VUklbZ2RiLnNoYTI1NnN1bV0gPSAiODA3MDM4OWE1ZGNjMTA0ZWIwYmU0ODNkNTgyNzI5Zjk4ZWQ0ZDc2MWFkMTljZWRkM2YxN2I1ZDI1MDJmYWEzNiIKKworaW5oZXJpdCBnZXR0ZXh0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIGNyb3NzIgorVEFSR0VUX0NDX0FSQ0hfYXBwZW5kID0gIiAke1NFTEVDVEVEX09QVElNSVpBVElPTn0iCisKKyMgY3Jhc2ggNy4xLjMgYW5kIGJlZm9yZSBkb24ndCBzdXBwb3J0IG1pcHM2NAorQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFtaXBzNjQpLioiCisKK0VYVFJBX09FTUFLRSA9ICdSUE1QS0c9IiR7UFZ9IiBcCisgICAgICAgICAgICAgICAgR0RCX1RBUkdFVD0iJHtUQVJHRVRfU1lTfSIgXAorICAgICAgICAgICAgICAgIEdEQl9IT1NUPSIke0JVSUxEX1NZU30iIFwKKyAgICAgICAgICAgICAgICBHREJfTUFLRV9KT0JTPSIke1BBUkFMTEVMX01BS0V9IiBcCisgICAgICAgICAgICAgICAgTERGTEFHUz0iJHtMREZMQUdTfSIgXAorICAgICAgICAgICAgICAgICcKKworRVhUUkFfT0VNQUtFX2NsYXNzLWNyb3NzID0gJ1JQTVBLRz0iJHtQVn0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJfVEFSR0VUPSIke0JVSUxEX1NZU30gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwke0dEQl9DT05GX0ZMQUdTfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9IT1NUPSIke0JVSUxEX1NZU30iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJfTUFLRV9KT0JTPSIke1BBUkFMTEVMX01BS0V9IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgTERGTEFHUz0nJHtCVUlMRF9MREZMQUdTfSciCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLWNyb3NzID0gIiBMREZMQUdTPScke0JVSUxEX0xERkxBR1N9JyIKKworUkVNT1ZFX00zMiA9ICJzZWQgLWkgLWUgJ3MvI2RlZmluZSBUQVJHRVRfQ0ZMQUdTX0FSTV9PTl9YODZfNjQuKi8jZGVmaW5lIFRBUkdFVF9DRkxBR1NfQVJNX09OX1g4Nl82NFx0XCJUQVJHRVRfQ0ZMQUdTPS1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjRcIi9nJyAke1N9L2NvbmZpZ3VyZS5jIgorCitSRU1PVkVfTTMyX2NsYXNzLWNyb3NzID0gIiIKKworZG9fY29uZmlndXJlKCkgeworICAgIDoKK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KKyAgICAgICAgYWFyY2g2NCopICAgIEFSQ0g9QVJNNjQgOzsKKyAgICAgICAgYXJtKikgICAgICAgIEFSQ0g9QVJNIDs7CisgICAgICAgIGkqODYqKSAgICAgICBBUkNIPVg4NiA7OworICAgICAgICB4ODZfNjQqKSAgICAgQVJDSD1YODZfNjQgOzsKKyAgICAgICAgcG93ZXJwYzY0KikgIEFSQ0g9UFBDNjQgOzsKKyAgICAgICAgcG93ZXJwYyopICAgIEFSQ0g9UFBDIDs7CisgICAgICAgIG1pcHMqKSAgICAgICBBUkNIPU1JUFMgOzsKKyAgICBlc2FjCisKKyAgICBzZWQgLWkgcy9GT1JDRV9ERUZJTkVfQVJDSC8iJHtBUkNIfSIvZyAke1N9L2NvbmZpZ3VyZS5jCisgICAgJHtSRU1PVkVfTTMyfQorICAgIHNlZCAtaSAncy8mZ3Q7Lz4vZycgJHtTfS9NYWtlZmlsZQorfQorCitkb19jb21waWxlKCkgeworICAgIG9lX3J1bm1ha2UgJHtFWFRSQV9PRU1BS0V9IFJFQ0lQRV9TWVNST09UPSR7UkVDSVBFX1NZU1JPT1R9Cit9CisKK2RvX2luc3RhbGxfcHJlcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9jcmFzaAorCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3Jhc2guOCAke0R9LyR7bWFuZGlyfS9tYW44LworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RlZnMuaCAke0R9JHtpbmNsdWRlZGlyfS9jcmFzaAorfQorCitkb19pbnN0YWxsX2NsYXNzLXRhcmdldCAoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAorfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0ke1NUQUdJTkdfRElSX05BVElWRX0gaW5zdGFsbAorfQorCitkb19pbnN0YWxsX2NsYXNzLWNyb3NzICgpIHsKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9jcmFzaCAke0R9LyR7YmluZGlyfQorfQorCitSREVQRU5EU18ke1BOfSArPSAibGlibHptYSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1jcm9zcyA9ICIiCisKKyMgQ2F1c2VzIGdjYyB0byBnZXQgc3R1Y2sgYW5kIGVhdCBhbGwgYXZhaWxhYmxlIG1lbW9yeSBpbiBxZW11YXJtIGJ1aWxkcworIyBqZW5raW5zICAxNTE2MSAgMTAwIDEyLjUgMTAzODk1OTYgMTAzMjEyODQgPyAgIFIgICAgMTE6NDAgIDI4OjE3IC9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliZXhlYy9hcm0tb2UtbGludXgtZ251ZWFiaS9nY2MvYXJtLW9lLWxpbnV4LWdudWVhYmkvNC45LjIvY2MxIC1xdWlldCAtSSAuIC1JIC4gLUkgLi9jb21tb24gLUkgLi9jb25maWcgLUkgLi8uLi9pbmNsdWRlL29wY29kZSAtSSAuLy4uL29wY29kZXMvLi4gLUkgLi8uLi9yZWFkbGluZS8uLiAtSSAuLi9iZmQgLUkgLi8uLi9iZmQgLUkgLi8uLi9pbmNsdWRlIC1JIC4uL2xpYmRlY251bWJlciAtSSAuLy4uL2xpYmRlY251bWJlciAtSSAuL2dudWxpYi9pbXBvcnQgLUkgYnVpbGQtZ251bGliL2ltcG9ydCAtaXN5c3Jvb3QgL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdWFybSAtTU1EIGV2YWwuZCAtTUYgLmRlcHMvZXZhbC5UcG8gLU1QIC1NVCBldmFsLm8gLUQgTE9DQUxFRElSPSIvdXNyL2xvY2FsL3NoYXJlL2xvY2FsZSIgLUQgQ1JBU0hfTUVSR0UgLUQgSEFWRV9DT05GSUdfSCAtRCBUVUk9MSBldmFsLmMgLXF1aWV0IC1kdW1wYmFzZSBldmFsLmMgLW1hcmNoPWFybXY1dGUgLW10aHVtYiAtbXRodW1iLWludGVyd29yayAtbXRscy1kaWFsZWN0PWdudSAtYXV4YmFzZS1zdHJpcCBldmFsLm8gLWcgLU8yIC1XYWxsIC1XcG9pbnRlci1hcml0aCAtV2Zvcm1hdC1ub25saXRlcmFsIC1Xbm8tcG9pbnRlci1zaWduIC1Xbm8tdW51c2VkIC1XdW51c2VkLXZhbHVlIC1XdW51c2VkLWZ1bmN0aW9uIC1Xbm8tc3dpdGNoIC1Xbm8tY2hhci1zdWJzY3JpcHRzIC1XbWlzc2luZy1wcm90b3R5cGVzIC1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IC1XZW1wdHktYm9keSAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgLW8gLQorQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl0b29sL2lwbWl0b29sXzEuOC4xOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbF8xLjguMTguYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl1dGlsL2lwbWl1dGlsL2ZpeF9zeXN0ZW1kX3BhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXV0aWwvaXBtaXV0aWwvZml4X3N5c3RlbWRfcGF0aC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pcG1pdXRpbC9pcG1pdXRpbC9maXhfc3lzdGVtZF9wYXRoLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXV0aWwvaXBtaXV0aWwvZml4X3N5c3RlbWRfcGF0aC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pcG1pdXRpbC9pcG1pdXRpbF8zLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdXRpbC9pcG1pdXRpbF8zLjAuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pcG1pdXRpbC9pcG1pdXRpbF8zLjAuNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl1dGlsL2lwbWl1dGlsXzMuMC41LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFlNzNlOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLmluYwpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkxpbnV4IGR5bmFtaWMga2VybmVsIHBhdGNoaW5nIGluZnJhc3RydWN0dXJlIgorREVTQ1JJUFRJT04gPSAia3BhdGNoIGlzIGEgTGludXggZHluYW1pYyBrZXJuZWwgcGF0Y2hpbmcgaW5mcmFzdHJ1Y3R1cmUgd2hpY2ggYWxsb3dzIHlvdSB0byBwYXRjaCBhIHJ1bm5pbmcga2VybmVsIHdpdGhvdXQgcmVib290aW5nIG9yIHJlc3RhcnRpbmcgYW55IHByb2Nlc3Nlcy4iCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgorREVQRU5EUyA9ICJlbGZ1dGlscyBiYXNoIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZHludXAva3BhdGNoLmdpdDtwcm90b2NvbD1odHRwcyBcCisJZmlsZTovLzAwMDEta3BhdGNoLWJ1aWxkLWFkZC1jcm9zcy1jb21waWxhdGlvbi1zdXBwb3J0LnBhdGNoIFwKKwlmaWxlOi8vMDAwMi1rcGF0Y2gtYnVpbGQtYWxsb3ctb3ZlcnJpZGluZy1vZi1kaXN0cm8tbmFtZS5wYXRjaCBcCisJIgorCitFWFRSQV9PRU1BS0UgPSAiIFwKKwlQUkVGSVg9JHtwcmVmaXh9IFwKKwlCSU5ESVI9JHtEfSR7YmluZGlyfSBcCisJU0JJTkRJUj0ke0R9JHtzYmluZGlyfSBcCisJTElCRElSPSR7RH0ke2xpYmRpcn0gXAorCU1BTkRJUj0ke0R9JHttYW5kaXJ9L21hbjEgXAorCVNZU1RFTURESVI9JHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAorCURFU1RESVI9JHtEfSBcCisJQlVJTERNT0Q9bm8gXAorCUNDPScke0NDfScgXAorCSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBpbnN0YWxsCit9CisKK1BBQ0tBR0VTID0rICJrcGF0Y2gtYnVpbGQiCitQUk9WSURFUyArPSAia3BhdGNoLWJ1aWxkIgorCitDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NCkuKi1saW51eCIKKworUkRFUEVORFNfJHtQTn0gPSAiYmFzaCBiaW51dGlscyIKK1JERVBFTkRTX2twYXRjaC1idWlsZCA9ICJiYXNoIGdsaWJjLXV0aWxzIgorCitGSUxFU18ke1BOfSA9ICIgXAorCSR7c2JpbmRpcn0va3BhdGNoIFwKKwkke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2twYXRjaC5zZXJ2aWNlIFwKKwkke21hbmRpcn0vbWFuMS9rcGF0Y2guMS5neiBcCisJIgorRklMRVNfa3BhdGNoLWJ1aWxkID0gIiBcCisJJHtiaW5kaXJ9L2twYXRjaC1idWlsZCBcCisJJHtsaWJleGVjZGlyfS8qIFwKKwkke2RhdGFkaXJ9L2twYXRjaCBcCisJJHttYW5kaXJ9L21hbjEva3BhdGNoLWJ1aWxkLjEuZ3ogXAorCSIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImtwYXRjaC5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2gvMDAwMS1rcGF0Y2gtYnVpbGQtYWRkLWNyb3NzLWNvbXBpbGF0aW9uLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAxLWtwYXRjaC1idWlsZC1hZGQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTlmYjIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2gvMDAwMS1rcGF0Y2gtYnVpbGQtYWRkLWNyb3NzLWNvbXBpbGF0aW9uLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwxMDMgQEAKK0Zyb20gYTlhODBhMWY0ZGY2NTg5MmEwMjY5Mjk1Y2U4YTY0YjA2ZjJmZjYxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJ1c2xhbiBCaWxvdm9sIDxyYmlsb3ZvbEBjaXNjby5jb20+CitEYXRlOiBUdWUsIDE5IERlYyAyMDE3IDE1OjU5OjA0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGtwYXRjaC1idWlsZDogYWRkIGNyb3NzLWNvbXBpbGF0aW9uIHN1cHBvcnQKKworVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBvcHRpb24gZm9yIGtwYXRjaC1idWlsZAorc2NyaXB0ICItLWNyb3NzLWNvbXBpbGUiIHdoaWNoIGNhbiBiZSB1c2VkIGZvcgorc3BlY2lmeWluZyBjcm9zcy1jb21wbGllciBwcmVmaXguCitJdCBhbGxvd3MgdG8gYnVpbGQgbGl2ZSBwYXRjaGVzIG5vdCBvbmx5IG9uCit0YXJnZXQgc3lzdGVtLCBidXQgYWxzbyBvbiBob3N0cyBmb3IgYSB0YXJnZXQgb3RoZXIKK3RoYW4gdGhlIG9uZSBvbiB3aGljaCB0aGUgY29tcGlsZXIgaXMgcnVubmluZworCitBbHNvIHJlbW92ZWQgcXVvdGVzIGluIGV4ZWMgbGluZXMsIHNvIGl0IGlzCitwb3NzaWJsZSB0byBwYXNzIG11bHR5LWNvbXBvbmVudCBzdHJpbmdzIGxpa2UKKyJjY2FjaGUgeDg2XzY0LXhlbGludXgtbGludXgtIiBhcyBjcm9zcy1jb21waWxlcgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUnVzbGFuIEJpbG92b2wgPHJiaWxvdm9sQGNpc2NvLmNvbT4KKy0tLQorIGtwYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQgfCAxMyArKysrKysrKysrKy0tCisga3BhdGNoLWJ1aWxkL2twYXRjaC1nY2MgICB8ICA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9rcGF0Y2gtYnVpbGQva3BhdGNoLWJ1aWxkIGIva3BhdGNoLWJ1aWxkL2twYXRjaC1idWlsZAoraW5kZXggMTY2ZWNiZC4uYWYyNGNjNCAxMDA3NTUKKy0tLSBhL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQKKysrKyBiL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQKK0BAIC0xOTUsNyArMTk1LDcgQEAgZ2NjX3ZlcnNpb25fY2hlY2soKSB7CisgCSMgZ2NjIC0tdmVyc2lvbiB2YXJpZXMgYmV0d2VlbiBkaXN0cmlidXRpb25zIHRoZXJlZm9yZSBleHRyYWN0IHZlcnNpb24KKyAJIyBieSBjb21waWxpbmcgYSB0ZXN0IGZpbGUgYW5kIGNvbXBhcmUgaXQgdG8gdm1saW51eCdzIHZlcnNpb24uCisgCWVjaG8gJ3ZvaWQgbWFpbih2b2lkKSB7fScgPiAiJGMiCistCW91dD0iJChnY2MgLWMgLXBnIC1mZnVuY3Rpb24tc2VjdGlvbnMgLW8gIiRvIiAiJGMiIDI+JjEpIgorKwlvdXQ9IiQoJHtLUEFUQ0hfQ1JPU1NfQ09NUElMRX1nY2MgLWMgLXBnIC1mZnVuY3Rpb24tc2VjdGlvbnMgLW8gIiRvIiAiJGMiIDI+JjEpIgorIAlnY2N2ZXI9IiQoZ2NjX3ZlcnNpb25fZnJvbV9maWxlICIkbyIpIgorIAlrZ2NjdmVyPSIkKGdjY192ZXJzaW9uX2Zyb21fZmlsZSAiJFZNTElOVVgiKSIKKyAJcm0gLWYgIiRjIiAiJG8iCitAQCAtMzgxLDEyICszODEsMTQgQEAgdXNhZ2UoKSB7CisgCWVjaG8gIgkJLWQsIC0tZGVidWcgICAgICAgIEVuYWJsZSAneHRyYWNlJyBhbmQga2VlcCBzY3JhdGNoIGZpbGVzIiA+JjIKKyAJZWNobyAiCQkgICAgICAgICAgICAgICAgICAgaW4gPENBQ0hFRElSPi90bXAiID4mMgorIAllY2hvICIJCSAgICAgICAgICAgICAgICAgICAoY2FuIGJlIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcykiID4mMgorKwllY2hvICIJCS0tY3Jvc3MtY29tcGlsZSAgICBTcGVjaWZ5IHRoZSBwcmVmaXggdXNlZCBmb3IgYWxsIGV4ZWN1dGFibGVzIiA+JjIKKysJZWNobyAiCQkgICAgICAgICAgICAgICAgICAgdXNlZCBkdXJpbmcgY29tcGlsYXRpb24iID4mMgorIAllY2hvICIJCS0tc2tpcC1jbGVhbnVwICAgICBTa2lwIHBvc3QtYnVpbGQgY2xlYW51cCIgPiYyCisgCWVjaG8gIgkJLS1za2lwLWdjYy1jaGVjayAgIFNraXAgZ2NjIHZlcnNpb24gbWF0Y2hpbmcgY2hlY2siID4mMgorIAllY2hvICIJCSAgICAgICAgICAgICAgICAgICAobm90IHJlY29tbWVuZGVkKSIgPiYyCisgfQorIAorLW9wdGlvbnM9IiQoZ2V0b3B0IC1vIGhhOnI6czpjOnY6ajp0Om46bzpkIC1sICJoZWxwLGFyY2h2ZXJzaW9uOixzb3VyY2VycG06LHNvdXJjZWRpcjosY29uZmlnOix2bWxpbnV4Oixqb2JzOix0YXJnZXQ6LG5hbWU6LG91dHB1dDosZGVidWcsc2tpcC1nY2MtY2hlY2ssc2tpcC1jbGVhbnVwIiAtLSAiJEAiKSIgfHwgZGllICJnZXRvcHQgZmFpbGVkIgorK29wdGlvbnM9IiQoZ2V0b3B0IC1vIGhhOnI6czpjOnY6ajp0Om46bzpkIC1sICJoZWxwLGFyY2h2ZXJzaW9uOixzb3VyY2VycG06LHNvdXJjZWRpcjosY29uZmlnOix2bWxpbnV4Oixqb2JzOix0YXJnZXQ6LG5hbWU6LG91dHB1dDosZGVidWcsY3Jvc3MtY29tcGlsZTosc2tpcC1nY2MtY2hlY2ssc2tpcC1jbGVhbnVwIiAtLSAiJEAiKSIgfHwgZGllICJnZXRvcHQgZmFpbGVkIgorIAorIGV2YWwgc2V0IC0tICIkb3B0aW9ucyIKKyAKK0BAIC00NDQsNiArNDQ2LDEwIEBAIHdoaWxlIFtbICQjIC1ndCAwIF1dOyBkbworIAkJCWVjaG8gIkRFQlVHIG1vZGUgZW5hYmxlZCIKKyAJCWZpCisgCQk7OworKwktLWNyb3NzLWNvbXBpbGUpCisrCQlLUEFUQ0hfQ1JPU1NfQ09NUElMRT0iJDIiCisrCQlzaGlmdAorKwkJOzsKKyAJLS1za2lwLWNsZWFudXApCisgCQllY2hvICJTa2lwcGluZyBjbGVhbnVwIgorIAkJU0tJUENMRUFOVVA9MQorQEAgLTY5MSw2ICs2OTcsOCBAQCBpZiBbWyAkREVCVUcgLWdlIDQgXV07IHRoZW4KKyAJZXhwb3J0IEtQQVRDSF9HQ0NfREVCVUc9MQorIGZpCisgCisrZXhwb3J0IEtQQVRDSF9DUk9TU19DT01QSUxFCisrCisgZWNobyAiQnVpbGRpbmcgb3JpZ2luYWwga2VybmVsIgorIC4vc2NyaXB0cy9zZXRsb2NhbHZlcnNpb24gLS1zYXZlLXNjbXZlcnNpb24gfHwgZGllCisgbWFrZSBtcnByb3BlciAyPiYxIHwgbG9nZ2VyIHx8IGRpZQorQEAgLTg0MCw2ICs4NDgsNyBAQCBjZCAiJFRFTVBESVIvcGF0Y2giIHx8IGRpZQorIEtQQVRDSF9CVUlMRD0iJFNSQ0RJUiIgS1BBVENIX05BTUU9IiRNT0ROQU1FIiBcCisgS0JVSUxEX0VYVFJBX1NZTUJPTFM9IiRLQlVJTERfRVhUUkFfU1lNQk9MUyIgXAorIEtQQVRDSF9MREZMQUdTPSIkS1BBVENIX0xERkxBR1MiIFwKKytDUk9TU19DT01QSUxFPSIkS1BBVENIX0NST1NTX0NPTVBJTEUiIFwKKyAJbWFrZSAyPiYxIHwgbG9nZ2VyIHx8IGRpZQorIAorIGlmICEgIiRLUEFUQ0hfTU9EVUxFIjsgdGhlbgorZGlmZiAtLWdpdCBhL2twYXRjaC1idWlsZC9rcGF0Y2gtZ2NjIGIva3BhdGNoLWJ1aWxkL2twYXRjaC1nY2MKK2luZGV4IDZiYTEzM2MuLjM5Mzc5NDggMTAwNzU1CistLS0gYS9rcGF0Y2gtYnVpbGQva3BhdGNoLWdjYworKysrIGIva3BhdGNoLWJ1aWxkL2twYXRjaC1nY2MKK0BAIC04LDcgKzgsNyBAQCBUT09MQ0hBSU5DTUQ9IiQxIgorIHNoaWZ0CisgCisgaWYgW1sgLXogIiRLUEFUQ0hfR0NDX1RFTVBESVIiIF1dOyB0aGVuCistCWV4ZWMgIiRUT09MQ0hBSU5DTUQiICIkQCIKKysJZXhlYyAke0tQQVRDSF9DUk9TU19DT01QSUxFfSR7VE9PTENIQUlOQ01EfSAiJEAiCisgZmkKKyAKKyBkZWNsYXJlIC1hIGFyZ3M9KCIkQCIpCitAQCAtODAsNCArODAsNCBAQCBlbGlmIFtbICIkVE9PTENIQUlOQ01EIiA9ICJsZCIgXV0gOyB0aGVuCisgCWRvbmUKKyBmaQorIAorLWV4ZWMgIiRUT09MQ0hBSU5DTUQiICIke2FyZ3NbQF19IgorK2V4ZWMgJHtLUEFUQ0hfQ1JPU1NfQ09NUElMRX0ke1RPT0xDSEFJTkNNRH0gIiR7YXJnc1tAXX0iCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLzAwMDIta3BhdGNoLWJ1aWxkLWFsbG93LW92ZXJyaWRpbmctb2YtZGlzdHJvLW5hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAyLWtwYXRjaC1idWlsZC1hbGxvdy1vdmVycmlkaW5nLW9mLWRpc3Ryby1uYW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZDhhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAyLWtwYXRjaC1idWlsZC1hbGxvdy1vdmVycmlkaW5nLW9mLWRpc3Ryby1uYW1lLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gZDQxOGQ3MTZkYWUxZTJhMDUxMzFkZmI0MmExOWE0ZGEyZmM4YTg1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJ1c2xhbiBCaWxvdm9sIDxyYmlsb3ZvbEBjaXNjby5jb20+CitEYXRlOiBUdWUsIDIgSmFuIDIwMTggMTQ6NTA6MDMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0ga3BhdGNoLWJ1aWxkOiBhbGxvdyBvdmVycmlkaW5nIG9mIGRpc3RybyBuYW1lCisKK0l0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gaGF2ZSBhYmlsaXR5IHRvIG92ZXJyaWRlCitkaXN0cm8gbmFtZSwgZm9yIGV4YW1wbGUgZHVyaW5nIGNyb3NzLWNvbXBpbGF0aW9uCitidWlsZCB3aGVuIGxpdmVwYXRjaCBtb2R1bGVzIHdpbGwgYmUgcmFuIG9uIHRoZQordGFyZ2V0IHdoaWNoIGRpZmZlcnMgZnJvbSBob3N0LgorCitUaGlzIHBhdGNoIGFkZHMgYSBuZXcgLS1kaXN0cm8gb3B0aW9uIHdoaWNoCitpbXBsZW1lbnRzIGFsbCBuZWVkZWQgZnVuY3Rpb25hbGl0eQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUnVzbGFuIEJpbG92b2wgPHJiaWxvdm9sQGNpc2NvLmNvbT4KKy0tLQorIGtwYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQgfCA5ICsrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9rcGF0Y2gtYnVpbGQva3BhdGNoLWJ1aWxkIGIva3BhdGNoLWJ1aWxkL2twYXRjaC1idWlsZAoraW5kZXggYWYyNGNjNC4uNGY5Zjc4ZCAxMDA3NTUKKy0tLSBhL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQKKysrKyBiL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQKK0BAIC0zODMsMTIgKzM4MywxMyBAQCB1c2FnZSgpIHsKKyAJZWNobyAiCQkgICAgICAgICAgICAgICAgICAgKGNhbiBiZSBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMpIiA+JjIKKyAJZWNobyAiCQktLWNyb3NzLWNvbXBpbGUgICAgU3BlY2lmeSB0aGUgcHJlZml4IHVzZWQgZm9yIGFsbCBleGVjdXRhYmxlcyIgPiYyCisgCWVjaG8gIgkJICAgICAgICAgICAgICAgICAgIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIiA+JjIKKysJZWNobyAiCQktLWRpc3RybyAgICAgICAgICAgT3ZlcnJpZGUgZGlzdHJvIG5hbWUiID4mMgorIAllY2hvICIJCS0tc2tpcC1jbGVhbnVwICAgICBTa2lwIHBvc3QtYnVpbGQgY2xlYW51cCIgPiYyCisgCWVjaG8gIgkJLS1za2lwLWdjYy1jaGVjayAgIFNraXAgZ2NjIHZlcnNpb24gbWF0Y2hpbmcgY2hlY2siID4mMgorIAllY2hvICIJCSAgICAgICAgICAgICAgICAgICAobm90IHJlY29tbWVuZGVkKSIgPiYyCisgfQorIAorLW9wdGlvbnM9IiQoZ2V0b3B0IC1vIGhhOnI6czpjOnY6ajp0Om46bzpkIC1sICJoZWxwLGFyY2h2ZXJzaW9uOixzb3VyY2VycG06LHNvdXJjZWRpcjosY29uZmlnOix2bWxpbnV4Oixqb2JzOix0YXJnZXQ6LG5hbWU6LG91dHB1dDosZGVidWcsY3Jvc3MtY29tcGlsZTosc2tpcC1nY2MtY2hlY2ssc2tpcC1jbGVhbnVwIiAtLSAiJEAiKSIgfHwgZGllICJnZXRvcHQgZmFpbGVkIgorK29wdGlvbnM9IiQoZ2V0b3B0IC1vIGhhOnI6czpjOnY6ajp0Om46bzpkIC1sICJoZWxwLGFyY2h2ZXJzaW9uOixzb3VyY2VycG06LHNvdXJjZWRpcjosY29uZmlnOix2bWxpbnV4Oixqb2JzOix0YXJnZXQ6LG5hbWU6LG91dHB1dDosZGVidWcsY3Jvc3MtY29tcGlsZTosZGlzdHJvOixza2lwLWdjYy1jaGVjayxza2lwLWNsZWFudXAiIC0tICIkQCIpIiB8fCBkaWUgImdldG9wdCBmYWlsZWQiCisgCisgZXZhbCBzZXQgLS0gIiRvcHRpb25zIgorIAorQEAgLTQ1MCw2ICs0NTEsMTAgQEAgd2hpbGUgW1sgJCMgLWd0IDAgXV07IGRvCisgCQlLUEFUQ0hfQ1JPU1NfQ09NUElMRT0iJDIiCisgCQlzaGlmdAorIAkJOzsKKysJLS1kaXN0cm8pCisrCQlESVNUUk89IiQyIgorKwkJc2hpZnQKKysJCTs7CisgCS0tc2tpcC1jbGVhbnVwKQorIAkJZWNobyAiU2tpcHBpbmcgY2xlYW51cCIKKyAJCVNLSVBDTEVBTlVQPTEKK0BAIC01MjYsNyArNTMxLDcgQEAgZmkKKyAjIERvbid0IGNoZWNrIGV4dGVybmFsIGZpbGUuCisgIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MxMDkxCisgc291cmNlIC9ldGMvb3MtcmVsZWFzZQorLURJU1RSTz0iJElEIgorK0RJU1RSTz0iJHtESVNUUk86LSR7SUR9fSIKKyBpZiBbWyAiJERJU1RSTyIgPSBmZWRvcmEgXV0gfHwgW1sgIiRESVNUUk8iID0gcmhlbCBdXSB8fCBbWyAiJERJU1RSTyIgPSBvbCBdXSB8fCBbWyAiJERJU1RSTyIgPSBjZW50b3MgXV07IHRoZW4KKyAJW1sgLXogIiRWTUxJTlVYIiBdXSAmJiBWTUxJTlVYPSIvdXNyL2xpYi9kZWJ1Zy9saWIvbW9kdWxlcy8kQVJDSFZFUlNJT04vdm1saW51eCIKKyAJW1sgLWUgIiRWTUxJTlVYIiBdXSB8fCBkaWUgImtlcm5lbC1kZWJ1Z2luZm8tJEFSQ0hWRVJTSU9OIG5vdCBpbnN0YWxsZWQiCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDk1ZTI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2hfZ2l0LmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUga3BhdGNoLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDUkVWID0gImRiNmVmYmI4YzdlOTBkMmI3NjEyNzJjZjU2MzA0NzExOTA3Mjc2OGYiCisKK1BWID0gIjAuNS4wK2dpdCR7U1JDUFZ9IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXguaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LmluYwppbmRleCBlMjAwMTI3Li45ZjE0MzcwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXguaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC5pbmMKQEAgLTE2LDcgKzE2LDcgQEAKIAogIyBLZXJuZWwgYm9vdGxvZ28gaXMgZGlzdHJvLXNwZWNpZmljIChkZWZhdWx0IGlzIE9FIGxvZ28pLgogIyBMb2dvIHJlc29sdXRpb24gKHF2Z2EsIHZnYSwgLi4uKSBpcyBtYWNoaW5lLXNwZWNpZmljLgotTE9HT19TSVpFID89ICcke0BiYXNlX2NvbmRpdGlvbmFsKCJNQUNISU5FX0dVSV9DTEFTUyIsICJiaWdzY3JlZW4iLCAidmdhIiwgInF2Z2EiLCBkKX0nCitMT0dPX1NJWkUgPz0gJyR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJNQUNISU5FX0dVSV9DTEFTUyIsICJiaWdzY3JlZW4iLCAidmdhIiwgInF2Z2EiLCBkKX0nCiAjIFRvIHVzZSB0aGlzLCBhZGQgZmlsZTovLyR7TE9HT19TSVpFfS9sb2dvX2xpbnV4X2NsdXQyMjQucHBtLmJ6MiBvciBzaW1pbGFyCiAjIHRvIHlvdXIga2VybmVsIHJlY2lwZSwgYW5kIHRoZW4gc3RydWN0dXJlIHlvdXIgbG9nb3MgZm9yIGVhY2ggcmVzb2x1dGlvbgogIyBhY2NvcmRpbmdseS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9maWxlcy9taW5pY29yZWR1bXBlci5pbml0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzL21pbmljb3JlZHVtcGVyLmluaXQKaW5kZXggOTBlZjdmYS4uOWM5NmUzMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzL21pbmljb3JlZHVtcGVyLmluaXQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzL21pbmljb3JlZHVtcGVyLmluaXQKQEAgLTIyLDcgKzIyLDcgQEAKIAogY2FzZSAiJDEiIGluCiAgICAgc3RhcnQpCi0gICAgICAgIGVjaG8gInwvdXNyL2Jpbi9taW5pY29yZWR1bXBlciAlcCAldSAlZyAlcyAldCAlaCAlZSIgPiAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybgorICAgICAgICBlY2hvICJ8L3Vzci9zYmluL21pbmljb3JlZHVtcGVyICVwICV1ICVnICVzICV0ICVoICVlIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0ZXJuCiAgICAgICAgIDs7CiAgICAgc3RvcCkKICAgICAgICAgZWNobyAiY29yZSIgPiAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzL21pbmljb3JlZHVtcGVyLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvZmlsZXMvbWluaWNvcmVkdW1wZXIuc2VydmljZQppbmRleCA4NTFiNTRjLi40NWQwOThmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvZmlsZXMvbWluaWNvcmVkdW1wZXIuc2VydmljZQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvZmlsZXMvbWluaWNvcmVkdW1wZXIuc2VydmljZQpAQCAtNCw3ICs0LDcgQEAKIFtTZXJ2aWNlXQogVHlwZT1vbmVzaG90CiBSZW1haW5BZnRlckV4aXQ9eWVzCi1FeGVjU3RhcnQ9L2Jpbi9zaCAtYyAnL2Jpbi9lY2hvICJ8L3Vzci9iaW4vbWluaWNvcmVkdW1wZXIgJSVwICUldSAlJWcgJSVzICUldCAlJWggJSVlIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0ZXJuJworRXhlY1N0YXJ0PS9iaW4vc2ggLWMgJy9iaW4vZWNobyAifC91c3Ivc2Jpbi9taW5pY29yZWR1bXBlciAlJXAgJSV1ICUlZyAlJXMgJSV0ICUlaCAlJWUiID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4nCiBFeGVjU3RvcD0vYmluL3NoIC1jICcvYmluL2VjaG8gImNvcmUiID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4nCiAKIFtJbnN0YWxsXQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL21pbmljb3JlZHVtcGVyXzIuMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL21pbmljb3JlZHVtcGVyXzIuMC4wLmJiCmluZGV4IDE4NThlMTAuLjBkM2M2NmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9taW5pY29yZWR1bXBlcl8yLjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvbWluaWNvcmVkdW1wZXJfMi4wLjAuYmIKQEAgLTM4LDQgKzM4LDggQEAKICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9taW5pY29yZWR1bXBlci5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9taW5pY29yZWR1bXBlci5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9taW5pY29yZWR1bXBlcgorCisgICAgIyBjb3JyZWN0IHBhdGggb2YgbWluaWNvcmVkdW1wZXIKKyAgICBzZWQgLWkgLWUgczovdXNyL2Jpbi9taW5pY29yZWR1bXBlcjoke3NiaW5kaXJ9L21pbmljb3JlZHVtcGVyOmcgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21pbmljb3JlZHVtcGVyCisgICAgc2VkIC1pIC1lIHM6L3Vzci9iaW4vbWluaWNvcmVkdW1wZXI6JHtzYmluZGlyfS9taW5pY29yZWR1bXBlcjpnICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21pbmljb3JlZHVtcGVyLnNlcnZpY2UKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zcy0xLjAuMTcvbGliaW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3MtMS4wLjE3L2xpYmlvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDUzZTRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zcy0xLjAuMTcvbGliaW8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1JbmRleDogYWxzYS1vc3MtMS4wLjE1L2Fsc2Evc3RkaW9lbXUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFsc2Etb3NzLTEuMC4xNS5vcmlnL2Fsc2Evc3RkaW9lbXUuYwkyMDA3LTEwLTE1IDEwOjUwOjQwLjAwMDAwMDAwMCArMDIwMAotKysrIGFsc2Etb3NzLTEuMC4xNS9hbHNhL3N0ZGlvZW11LmMJMjAwOC0wNy0yMSAyMjoxNzowNi4zMDMxNjE0MzggKzAyMDAKLUBAIC0zNyw3ICszNyw5IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2lmZGVmIEhBVkVfTElCSU9fSAotICNpbmNsdWRlIDxsaWJpby5oPgotKyNlbmRpZgotIAotIHN0cnVjdCBmZF9jb29raWUgewotIAlpbnQgZmQ7Ci1AQCAtOTksNyArMTAxLDExIEBACi0gCi0gCWlmIChvcGVuX21vZGUgJiYgZmRjLT5mZCA+IDApIHsKLSAJCXJlc3VsdCA9IGZvcGVuY29va2llIChmZGMsInciLCBmbnMpOwotKyNpZmRlZiBIQVZFX0ZJTEVOTwotIAkJcmVzdWx0LT5fZmlsZW5vID0gZmRjLT5mZDsJCS8qIHVnbHkgcGF0Y2h5IHNsaW15IGtsdWRneSBoYWNrICovCi0rI2Vsc2UKLSsJCXJlc3VsdC0+X19maWxlZGVzID0gZmRjLT5mZDsKLSsjZW5kaWYKLSAJfQotIAlyZXR1cm4gcmVzdWx0OwotIH0KLUluZGV4OiBhbHNhLW9zcy0xLjAuMTUvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYWxzYS1vc3MtMS4wLjE1Lm9yaWcvY29uZmlndXJlLmluCTIwMDctMTAtMTUgMTA6NTA6NDAuMDAwMDAwMDAwICswMjAwCi0rKysgYWxzYS1vc3MtMS4wLjE1L2NvbmZpZ3VyZS5pbgkyMDA4LTA3LTIxIDIyOjE2OjExLjcxOTgzNzI5OCArMDIwMAotQEAgLTMzLDYgKzMzLDEyIEBACi0gICBMSUJTPSIkT0xEX0xJQlMiCi0gZmkKLSAKLStBQ19DSEVDS19IRUFERVJTX09OQ0UoW2xpYmlvLmhdKQotKwotK0FDX0NIRUNLX01FTUJFUihbc3RydWN0IF9JT19GSUxFLl9maWxlbm9dLAotKwkJW0FDX0RFRklORShbSEFWRV9GSUxFTk9dLCBbMV0sW0RlZmluZSBpZiBfZmlsZW5vIGV4aXN0cy5dKV0sCi0rCQlbXSxbXSkKLSsKLSBBQ19PVVRQVVQoTWFrZWZpbGUgYWxzYS9NYWtlZmlsZSBhbHNhL2Fvc3MgYWxzYS9hb3NzLm9sZCBcCi0gCSAgb3NzLXJlZGlyL01ha2VmaWxlIHRlc3QvTWFrZWZpbGUgXAotICAgICAgICAgICBhbHNhL3Rlc3Rhb3NzIHRlc3QvdGVzdGFvc3MpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3MvbGliaW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3MvbGliaW8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI5OTk0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zcy9saWJpby5wYXRjaApAQCAtMCwwICsxLDQzIEBACitJbmRleDogYWxzYS1vc3MtMS4wLjI4L2Fsc2Evc3RkaW9lbXUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFsc2Etb3NzLTEuMC4yOC5vcmlnL2Fsc2Evc3RkaW9lbXUuYworKysrIGFsc2Etb3NzLTEuMC4yOC9hbHNhL3N0ZGlvZW11LmMKK0BAIC0zNyw3ICszNyw5IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2lmZGVmIEhBVkVfTElCSU9fSAorICNpbmNsdWRlIDxsaWJpby5oPgorKyNlbmRpZgorIAorIHN0cnVjdCBmZF9jb29raWUgeworIAlpbnQgZmQ7CitAQCAtOTksNyArMTAxLDExIEBAIHN0YXRpYyBGSUxFICpmYWtlX2ZvcGVuKGNvbnN0IGNoYXIgKnBhdGgKKyAKKyAJaWYgKG9wZW5fbW9kZSAmJiBmZGMtPmZkID4gMCkgeworIAkJcmVzdWx0ID0gZm9wZW5jb29raWUgKGZkYywidyIsIGZucyk7CisrI2lmZGVmIEhBVkVfRklMRU5PCisgCQlyZXN1bHQtPl9maWxlbm8gPSBmZGMtPmZkOwkJLyogdWdseSBwYXRjaHkgc2xpbXkga2x1ZGd5IGhhY2sgKi8KKysjZWxzZQorKwkJcmVzdWx0LT5fX2ZpbGVkZXMgPSBmZGMtPmZkOworKyNlbmRpZgorIAl9CisgCXJldHVybiByZXN1bHQ7CisgfQorSW5kZXg6IGFsc2Etb3NzLTEuMC4yOC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbHNhLW9zcy0xLjAuMjgub3JpZy9jb25maWd1cmUuYWMKKysrKyBhbHNhLW9zcy0xLjAuMjgvY29uZmlndXJlLmFjCitAQCAtMzUsNiArMzUsMTIgQEAgaWYgdGVzdCAiJHdpdGhfYW9zcyIgPSAieWVzIjsgdGhlbgorICAgTElCUz0iJE9MRF9MSUJTIgorIGZpCisgCisrQUNfQ0hFQ0tfSEVBREVSU19PTkNFKFtsaWJpby5oXSkKKysKKytBQ19DSEVDS19NRU1CRVIoW3N0cnVjdCBfSU9fRklMRS5fZmlsZW5vXSwKKysJCVtBQ19ERUZJTkUoW0hBVkVfRklMRU5PXSwgWzFdLFtEZWZpbmUgaWYgX2ZpbGVubyBleGlzdHMuXSldLAorKwkJW10sW10pCisrCisgQUNfT1VUUFVUKE1ha2VmaWxlIGFsc2EvTWFrZWZpbGUgYWxzYS9hb3NzIGFsc2EvYW9zcy5vbGQgXAorIAkgIG9zcy1yZWRpci9NYWtlZmlsZSB0ZXN0L01ha2VmaWxlIFwKKyAgICAgICAgICAgYWxzYS90ZXN0YW9zcyB0ZXN0L3Rlc3Rhb3NzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2Etb3NzXzEuMC4xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zc18xLjAuMTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NjZkYmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2Etb3NzXzEuMC4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiQWxzYSBPU1MgQ29tcGF0aWJpbGl0eSBQYWNrYWdlIgotU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzkzYTVjYTQ0NWY2OTY1ODczZWNhMDI1OWExN2Y4MzMiCi1ERVBFTkRTID0gImFsc2EtbGliIgotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL29zcy1saWIvYWxzYS1vc3MtJHtQVn0udGFyLmJ6MiBcCi0gICAgZmlsZTovL2xpYmlvLnBhdGNoIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotTEVBRF9TT05BTUUgPSAibGliYW9zcy5zby4wIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgdG91Y2ggTkVXUyBSRUFETUUgQVVUSE9SUyBDaGFuZ2VMb2cKLSAgICBzZWQgLWkgInMvbGliYW9zcy5zby8ke0xFQURfU09OQU1FfS8iICR7U30vYWxzYS9hb3NzLmluCi19Ci0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYjE4NTBjMmZjOTE0NzZhNzNkNTBmNTM3Y2JkNDAyZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZDAwOWUyM2UyY2JlZTE2OTFlYzNjOTVkMTgzODA1NmE4MDRkOTg0NDBlYWU3NzE1ZDZjM2FlYmM3MTBmOWNhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2Etb3NzXzEuMC4yOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zc18xLjAuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM0YTlmNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zc18xLjAuMjguYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJBbHNhIE9TUyBDb21wYXRpYmlsaXR5IFBhY2thZ2UiCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zOTNhNWNhNDQ1ZjY5NjU4NzNlY2EwMjU5YTE3ZjgzMyIKK0RFUEVORFMgPSAiYWxzYS1saWIiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL29zcy1saWIvYWxzYS1vc3MtJHtQVn0udGFyLmJ6MiBcCisgICAgZmlsZTovL2xpYmlvLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5MWY1N2U4Y2VlMWFkNGNjOTU2Y2FhOGI2MmFjNWQ0MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzYWU2MmNhYTg4YTBiYzdiMzBlZDgzNmRjYjc5NGRjNmVmNGQzNjUwNDM5ZTIyNjBkYjU0Y2FjZTdkNWM2YWQ1IgorCitpbmhlcml0IGF1dG90b29scworCitMRUFEX1NPTkFNRSA9ICJsaWJhb3NzLnNvLjAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICB0b3VjaCBORVdTIFJFQURNRSBBVVRIT1JTIENoYW5nZUxvZworICAgIHNlZCAtaSAicy9saWJhb3NzLnNvLyR7TEVBRF9TT05BTUV9LyIgJHtTfS9hbHNhL2Fvc3MuaW4KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvY2Rya2l0L2NkcmtpdF8xLjEuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2NkcmtpdC9jZHJraXRfMS4xLjExLmJiCmluZGV4IGMwZjIyMGYuLjNiMTBlOTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvY2Rya2l0L2NkcmtpdF8xLjEuMTEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9jZHJraXQvY2Rya2l0XzEuMS4xMS5iYgpAQCAtMTgsMyArMTgsNyBAQAogCiBERVBFTkRTID0gImxpYmNhcCBmaWxlIGJ6aXAyIgogUkRFUEVORFNfJHtQTn0gPSAicGVybCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgbG4gLXNmICR7YmluZGlyfS9nZW5pc29pbWFnZSAke0R9JHtiaW5kaXJ9L21raXNvZnMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAxLWF1ZGlvX2Fsc2EwOS5jLWFsc2EtZHJhaW4tZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDEtYXVkaW9fYWxzYTA5LmMtYWxzYS1kcmFpbi1maXgucGF0Y2gKaW5kZXggNmM3ZjNiZC4uMTMwZjNjMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDEtYXVkaW9fYWxzYTA5LmMtYWxzYS1kcmFpbi1maXgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDEtYXVkaW9fYWxzYTA5LmMtYWxzYS1kcmFpbi1maXgucGF0Y2gKQEAgLTEsOSArMSwxMCBAQAotRnJvbSBhODYwZmUwNzk2YzQzZTM1ZWFjOTc4MzE0MGZjYjU2M2NhYjlmNTVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5NDVkZjJkYTg3YTQxMjc1OGNlYWI0YWM1NzExYWJiYjI2OWE0N2MxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgOCBKdW4gMjAxNyAyMzowOTo1MSAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvM10gYXVkaW9fYWxzYTA5LmM6IGFsc2EgZHJhaW4gZml4CitTdWJqZWN0OiBbUEFUQ0hdIGF1ZGlvX2Fsc2EwOS5jOiBhbHNhIGRyYWluIGZpeAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBhdWRpb19hbHNhMDkuYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKQEAgLTIxLDYgKzIyLDMgQEAKICAgIAogIAlpZiAoYWxzYWRiZykgCiAgCQlwcmludF9zdGF0ZSgpOwotLS0gCi0yLjEzLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDItVW5kZWZpbmUtb3BlbjY0LWFuZC1mb3BlbjY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDItVW5kZWZpbmUtb3BlbjY0LWFuZC1mb3BlbjY0LnBhdGNoCmluZGV4IDMzNzU0NmEuLjEwYTZiYTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAyLVVuZGVmaW5lLW9wZW42NC1hbmQtZm9wZW42NC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMi1VbmRlZmluZS1vcGVuNjQtYW5kLWZvcGVuNjQucGF0Y2gKQEAgLTEsMTEgKzEsMTIgQEAKLUZyb20gMWZiZWU2ZTk2Mzg0ZjM0MGI4MTZlMjIxZmUxYzJmM2ZmMGI0ODdiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTIxOGQ1YTBhNTQ1ZWJiOTYyM2Q2MmRhNWNmY2E0NzhmOWM5MGZjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDggSnVuIDIwMTcgMjM6MTE6MzEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzNdIFVuZGVmaW5lIG9wZW42NCBhbmQgZm9wZW42NAorU3ViamVjdDogW1BBVENIXSBVbmRlZmluZSBvcGVuNjQgYW5kIGZvcGVuNjQKIAogU2luY2UgdGhlIHNpZ25hdHVyZXMgZG8gbm90IG1hdGNoIHdpdGggbGliYwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBlc2Rkc3AuYyB8IDIgKysKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCkBAIC0zMCw2ICszMSwzIEBACiAgRklMRSAqCiAgZm9wZW42NCAoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKICB7Ci0tLSAKLTIuMTMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMy1Vc2UtSS1wYXRoLWluLWNvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAzLVVzZS1JLXBhdGgtaW4tY29uZmlndXJlLnBhdGNoCmluZGV4IDYyYzg4MGQuLjgzMzY1YjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAzLVVzZS1JLXBhdGgtaW4tY29uZmlndXJlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAzLVVzZS1JLXBhdGgtaW4tY29uZmlndXJlLnBhdGNoCkBAIC0xLDEyICsxLDEzIEBACi1Gcm9tIDk3OWEwMmQ5ZWM5YzI4Njg2MDIxY2QyYjQ5Y2E1NWQyMTk1YzlkY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDg5YzYyZGI1NDcxNmQ1MTRlNjM5ZjllMWJmZDNjMWY3ZDgyNjQxZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVGh1LCA4IEp1biAyMDE3IDIzOjEyOjM2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBVc2UgLUk9PHBhdGg+IGluIGNvbmZpZ3VyZQorU3ViamVjdDogW1BBVENIXSBVc2UgLUk9PHBhdGg+IGluIGNvbmZpZ3VyZQogCiBUaGlzIGhlbHBzIHRvIHVzZSBwcm9wZXIgc3lzcm9vdCBpbgogY3Jvc3MgYnVpbGQgZW52aXJvbm1lbnQKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgY29uZmlndXJlLmFjIHwgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKQEAgLTMzLDYgKzM0LDMgQEAKICAJU09VTkRfTElCUz0tbG1tZQogICAgICAgIGVzYWMKICAgICBmaQotLS0gCi0yLjEzLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kL25vLWRvY3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvbm8tZG9jcy5wYXRjaAppbmRleCBmYzY5ZjFhLi44YTU0NmU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvbm8tZG9jcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvbm8tZG9jcy5wYXRjaApAQCAtMSwxMSArMSwxOSBAQAotSW5kZXg6IGVzb3VuZC0wLjIuMzYvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlc291bmQtMC4yLjM2Lm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBlc291bmQtMC4yLjM2L01ha2VmaWxlLmFtCitGcm9tIGJmY2FhOWJkYzcwNDQwZGI5NmYxMGFmYzBjMmE3OTI4NzBmNzVhY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogRnJpLCAzIEp1biAyMDExIDE5OjM5OjAyICswMjAwCisKKy0tLQorIE1ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggMDhjNGM5NC4uZWRlOWQyNiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQogQEAgLTEsNSArMSw1IEBACiAgCiAtU1VCRElSUyA9IGRvY3MKICtTVUJESVJTID0gCiAgCi0gQUNMT0NBTF9GTEFHUyA9IC1JIG00CisgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvamFjay9qYWNrLzAwMDEtdHlwZWNhc3QtaW5wdXQtcGFyYW1ldGVyLXRvLWludC1mb3ItYWJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9qYWNrL2phY2svMDAwMS10eXBlY2FzdC1pbnB1dC1wYXJhbWV0ZXItdG8taW50LWZvci1hYnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMTlmMTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9qYWNrL2phY2svMDAwMS10eXBlY2FzdC1pbnB1dC1wYXJhbWV0ZXItdG8taW50LWZvci1hYnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDhlYzZmNzViZjdhMzE4YTNhMWUzNTJkZjdjOTc2MzBjZmFiYTUzN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMSBBcHIgMjAxNyAxNjoxODozOSAtMDcwMAotU3ViamVjdDogW1BBVENIXSB0eXBlY2FzdCBpbnB1dCBwYXJhbWV0ZXIgdG8gaW50IGZvciBhYnMoKQotCi1GaXhlcwotLi4vdGVzdHMvdGVzdC5jcHA6NDgyOjczOiBlcnJvcjogY2FsbCBvZiBvdmVybG9hZGVkICdhYnMoamFja19uZnJhbWVzX3QpJyBpcyBhbWJpZ3VvdXMKLQotYmVjYXVzZSB0aGUgc2lnbmF0dXJlIGlzIGludCBhYnMoaW50KSBhbmQgaXRzIHBhc3NpbmcKLXVuc2lnbmVkIGludCB0byBpdC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHRlc3RzL3Rlc3QuY3BwIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdC5jcHAgYi90ZXN0cy90ZXN0LmNwcAotaW5kZXggOGE4YTgxMTcuLjk2NTU3NDJlIDEwMDY0NAotLS0tIGEvdGVzdHMvdGVzdC5jcHAKLSsrKyBiL3Rlc3RzL3Rlc3QuY3BwCi1AQCAtNDc5LDcgKzQ3OSw3IEBAIGludCBwcm9jZXNzNChqYWNrX25mcmFtZXNfdCBuZnJhbWVzLCB2b2lkICphcmcpCi0gCWphY2tfbmZyYW1lc190IGRlbHRhX3RpbWUgPSBjdXJfdGltZSAtIGxhc3RfdGltZTsKLSAKLSAJTG9nKCJjYWxsaW5nIHByb2Nlc3M0IGNhbGxiYWNrIDogamFja19mcmFtZV90aW1lID0gJWxkIGRlbHRhX3RpbWUgPSAlbGRcbiIsIGN1cl90aW1lLCBkZWx0YV90aW1lKTsKLS0JaWYgKGRlbHRhX3RpbWUgPiAwICAmJiAoamFja19uZnJhbWVzX3QpYWJzKGRlbHRhX3RpbWUgLSBjdXJfYnVmZmVyX3NpemUpID4gdG9sZXJhbmNlKSB7Ci0rCWlmIChkZWx0YV90aW1lID4gMCAgJiYgKGphY2tfbmZyYW1lc190KWFicyhpbnQoZGVsdGFfdGltZSAtIGN1cl9idWZmZXJfc2l6ZSkpID4gdG9sZXJhbmNlKSB7Ci0gCQlwcmludGYoIiEhISBFUlJPUiAhISEgamFja19mcmFtZV90aW1lIHNlZW1zIHRvIHJldHVybiBpbmNvcnJlY3QgdmFsdWVzIGN1cl9idWZmZXJfc2l6ZSA9ICVkLCBkZWx0YV90aW1lID0gJWQgdG9sZXJhbmNlICVkXG4iLCBjdXJfYnVmZmVyX3NpemUsIGRlbHRhX3RpbWUsIHRvbGVyYW5jZSk7Ci0gCX0KLSAKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvamFjay9qYWNrX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvamFjay9qYWNrX2dpdC5iYgppbmRleCBiODViYThhLi4xMWRhNmIxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2phY2svamFja19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9qYWNrL2phY2tfZ2l0LmJiCkBAIC0xNCwxMSArMTQsOSBAQAogCiBERVBFTkRTID0gImxpYnNhbXBsZXJhdGUwIGxpYnNuZGZpbGUxIHJlYWRsaW5lIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vamFja2F1ZGlvL2phY2syLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXR5cGVjYXN0LWlucHV0LXBhcmFtZXRlci10by1pbnQtZm9yLWFicy5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDUkVWID0gIjJkMWQzMjM1MDU1ODVkNDA2YTdlNjRmYjkzMjk1M2JhZWZjNTk0NWUiCi1QViA9ICIxLjkuMTArZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vamFja2F1ZGlvL2phY2syLmdpdCIKK1NSQ1JFViA9ICJjMTY0NzgxOWVlZDZkMTFmOTRiMjE5ODFkOWM4Njk2MjkyOTlmMzU3IgorUFYgPSAiMS45LjEyIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCB3YWYgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmFzcy9saWJhc3MuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJhc3MvbGliYXNzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJjM2RiMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmFzcy9saWJhc3MuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAibGliYXNzIGlzIGEgcG9ydGFibGUgc3VidGl0bGUgcmVuZGVyZXIgZm9yIHRoZSBBU1MvU1NBIChBZHZhbmNlZCBTdWJzdGF0aW9uIEFscGhhL1N1YnN0YXRpb24gQWxwaGEpIHN1YnRpdGxlIGZvcm1hdC4gSXQgaXMgbW9zdGx5IGNvbXBhdGlibGUgd2l0aCBWU0ZpbHRlci4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliYXNzL2xpYmFzcyIKLVNFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIklTQyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE0MjUzMmEwNjg0NDIwYmRiMTU1NTZjM2NkZDQ5YTc1IgotCi1ERVBFTkRTID0gImVuY2EgZm9udGNvbmZpZyBmcmVldHlwZSBsaWJwbmcgZnJpYmlkaSIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliYXNzL2xpYmFzcy9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9saWJhc3MtJHtQVn0udGFyLnh6IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbaGFyZmJ1enpdID0gIi0tZW5hYmxlLWhhcmZidXp6LC0tZGlzYWJsZS1oYXJmYnV6eixoYXJmYnV6eiIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtZm9udGNvbmZpZyBcCi0iCi0KLSMgRGlzYWJsZSBjb21waWxpbmcgd2l0aCBBU00gZm9yIHg4NiB0byBhdm9pZCB0ZXh0cmVsCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3g4NiA9ICIgLS1kaXNhYmxlLWFzbSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgotCi1GSUxFU18ke1BOfS10ZXN0cyA9ICIgXAotICAgICR7bGliZGlyfS90ZXN0L3Rlc3QgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJhc3MvbGliYXNzXzAuMTMuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliYXNzL2xpYmFzc18wLjEzLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYWMwZjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJhc3MvbGliYXNzXzAuMTMuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLW11bHRpbWVkaWEvJHtCUE59LyR7QlBOfS5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImRhYTZjZmNhNDM3YzA3NzZhZjVmNzk3NTBjZGQ5YjRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY4YTg3NGQxMDRlM2U3MmUyY2MwNTdlNWExNzEwYzY1MGIxMDM2NzQ4Njg0NWEyNmU1ZmYyOGVkN2E5MTJjMmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmFzcy9saWJhc3NfMC4xNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJhc3MvbGliYXNzXzAuMTQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDU0YTVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJhc3MvbGliYXNzXzAuMTQuMC5iYgpAQCAtMCwwICsxLDMwIEBACitERVNDUklQVElPTiA9ICJsaWJhc3MgaXMgYSBwb3J0YWJsZSBzdWJ0aXRsZSByZW5kZXJlciBmb3IgdGhlIEFTUy9TU0EgKEFkdmFuY2VkIFN1YnN0YXRpb24gQWxwaGEvU3Vic3RhdGlvbiBBbHBoYSkgc3VidGl0bGUgZm9ybWF0LiBJdCBpcyBtb3N0bHkgY29tcGF0aWJsZSB3aXRoIFZTRmlsdGVyLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJhc3MvbGliYXNzIgorU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTQyNTMyYTA2ODQ0MjBiZGIxNTU1NmMzY2RkNDlhNzUiCisKK0RFUEVORFMgPSAiZW5jYSBmb250Y29uZmlnIGZyZWV0eXBlIGxpYnBuZyBmcmliaWRpIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliYXNzL2xpYmFzcy5naXQiCitTUkNSRVYgPSAiNzMyODRiNjc2YjEyYjQ3ZTE3YWYyZWYxYjQzMDUyNzI5OWUxMGMxNyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS1lbmFibGUtaGFyZmJ1enosLS1kaXNhYmxlLWhhcmZidXp6LGhhcmZidXp6IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWVuYWJsZS1mb250Y29uZmlnIFwKKyIKKworIyBEaXNhYmxlIGNvbXBpbGluZyB3aXRoIEFTTSBmb3IgeDg2IHRvIGF2b2lkIHRleHRyZWwKK0VYVFJBX09FQ09ORl9hcHBlbmRfeDg2ID0gIiAtLWRpc2FibGUtYXNtIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCisKK0ZJTEVTXyR7UE59LXRlc3RzID0gIiBcCisgICAgJHtsaWJkaXJ9L3Rlc3QvdGVzdCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmNkaW8vbGliY2Rpb18wLjkzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJjZGlvL2xpYmNkaW9fMC45My5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTllNmE4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmNkaW8vbGliY2Rpb18wLjkzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgR05VIENvbXBhY3QgRGlzYyBJbnB1dCBhbmQgQ29udHJvbCBsaWJyYXJ5IChsaWJjZGlvKSBjb250YWlucyBhIGxpYnJhcnkgZm9yIENELVJPTSBhbmQgQ0QgaW1hZ2UgYWNjZXNzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjZGlvLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImQxNTQ0NzZmZWFhYzVhN2I1ZjE4MGU4M2VhZjNkNjg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5NzJjZDIyZmQ4ZDBlOGJmZjkyMmQzNWM3YTY0NWJlMGRiMGFiMGU3YjNkZmFlY2M5Y2Q4MjcyNDI5ZDY5NzUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiY2RkYS1wbGF5ZXIiCi1QQUNLQUdFQ09ORklHW2NkZGEtcGxheWVyXSA9ICItLXdpdGgtY2RkYS1wbGF5ZXIsLS13aXRob3V0LWNkZGEtcGxheWVyLG5jdXJzZXMiCi1QQUNLQUdFQ09ORklHW2NkZGJdID0gIi0tZW5hYmxlLWNkZGIsLS1kaXNhYmxlLWNkZGIsbGliY2RkYiIKLVBBQ0tBR0VDT05GSUdbdmNkLWluZm9dID0gIi0tZW5hYmxlLXZjZC1pbmZvLC0tZGlzYWJsZS12Y2QtaW5mbyx2Y2RpbWFnZXIiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS11dGlscyIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9LyR7QlBOfSR7U09MSUJ9IgotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLXB5dGhvbiBsaWJjZGlvX3NwbGl0X3BhY2thZ2VzKCkgewotICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zb1wuLionLCAnbGliJXMnLCAnbGliY2RpbyAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLX0KLQotUEFDS0FHRVNQTElURlVOQ1MgPSsgImxpYmNkaW9fc3BsaXRfcGFja2FnZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmNkaW8vbGliY2Rpb18yLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliY2Rpby9saWJjZGlvXzIuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZjY0ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmNkaW8vbGliY2Rpb18yLjAuMC5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIlRoZSBHTlUgQ29tcGFjdCBEaXNjIElucHV0IGFuZCBDb250cm9sIGxpYnJhcnkgKGxpYmNkaW8pIGNvbnRhaW5zIGEgbGlicmFyeSBmb3IgQ0QtUk9NIGFuZCBDRCBpbWFnZSBhY2Nlc3MuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmNkaW8vIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwY2IyNTkwNTExM2I5MzBlNDUzOWQyZjRlYjY1NzRiMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjQ4MWI1ZGEwMDliZWEzMWRiODc1ODA1NjY1OTc0ZTJmYzU2OGUyYjJhZmE1MTZmNDAzNjczMzY1N2NmOTU4IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gImNkZGEtcGxheWVyIgorUEFDS0FHRUNPTkZJR1tjZGRhLXBsYXllcl0gPSAiLS13aXRoLWNkZGEtcGxheWVyLC0td2l0aG91dC1jZGRhLXBsYXllcixuY3Vyc2VzIgorUEFDS0FHRUNPTkZJR1tjZGRiXSA9ICItLWVuYWJsZS1jZGRiLC0tZGlzYWJsZS1jZGRiLGxpYmNkZGIiCitQQUNLQUdFQ09ORklHW3ZjZC1pbmZvXSA9ICItLWVuYWJsZS12Y2QtaW5mbywtLWRpc2FibGUtdmNkLWluZm8sdmNkaW1hZ2VyIgorCitQQUNLQUdFUyArPSAiJHtQTn0tdXRpbHMiCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8ke0JQTn0ke1NPTElCfSIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8qIgorCitweXRob24gbGliY2Rpb19zcGxpdF9wYWNrYWdlcygpIHsKKyAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdebGliKC4qKVwuc29cLi4qJywgJ2xpYiVzJywgJ2xpYmNkaW8gJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCit9CisKK1BBQ0tBR0VTUExJVEZVTkNTID0rICJsaWJjZGlvX3NwbGl0X3BhY2thZ2VzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzZGwtbWl4ZXIvbGlic2RsMi1taXhlcl8yLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic2RsLW1peGVyL2xpYnNkbDItbWl4ZXJfMi4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyNzZiNDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzZGwtbWl4ZXIvbGlic2RsMi1taXhlcl8yLjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVNVTU1BUlkgPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIG1peGVyIGxpYnJhcnkgVjIiCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gInZpcnR1YWwvbGlic2RsMiBmbGFjIGxpYm1pa21vZCBsaWJ2b3JiaXMiCi1MSUNFTlNFID0gIlpsaWIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9MjlkOGJjN2MzOGFhNDRiMWNmM2E2MzNhNDY1ODk5MTciCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnL3Byb2plY3RzL1NETF9taXhlci9yZWxlYXNlL1NETDJfbWl4ZXItJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzZjNGY1NTZkNDQxNTg3MWY1MjYyNDhmNWM5YTYyN2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWEyNGY2MmE2MTAyNDlkNzQ0Y2JkOGQyOGVlMzk5ZDg5MDVkYjcyMjJiZjNiZGJjOGE4YjRhNzZlNTk3Njk1ZiIKLQotUyA9ICIke1dPUktESVJ9L1NETDJfbWl4ZXItJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1pbmNsdWRlPWFjaW5jbHVkZSIKLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbXVzaWMtbXAzIC0tZW5hYmxlLW11c2ljLW9nZyAtLWVuYWJsZS1tdXNpYy1vZ2ctdHJlbW9yIExJQlM9LUwke1NUQUdJTkdfTElCRElSfSIKLQotUEFDS0FHRUNPTkZJR1ttYWRdID0gIi0tZW5hYmxlLW11c2ljLW1wMy1tYWQtZ3BsLC0tZGlzYWJsZS1tdXNpYy1tcDMtbWFkLWdwbCxsaWJtYWQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICAjIFJlbW92ZSBvbGQgbGlidG9vbCBtYWNyb3MuCi0gICAgTUFDUk9TPSJsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNCIKLSAgICBmb3IgaSBpbiAke01BQ1JPU307IGRvCi0gICAgICAgIHJtIC1mIGFjaW5jbHVkZS8kaQotICAgIGRvbmUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic2RsLW1peGVyL2xpYnNkbDItbWl4ZXJfMi4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNkbC1taXhlci9saWJzZGwyLW1peGVyXzIuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxOGYzZjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNkbC1taXhlci9saWJzZGwyLW1peGVyXzIuMC4yLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIG1peGVyIGxpYnJhcnkgVjIiCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gInZpcnR1YWwvbGlic2RsMiBmbGFjIGxpYm1pa21vZCBsaWJ2b3JiaXMiCitMSUNFTlNFID0gIlpsaWIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9OTVlMGMzY2Y2M2Y3MWI5NTA5MTFlNjk4YTU0YjdmYzUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnL3Byb2plY3RzL1NETF9taXhlci9yZWxlYXNlL1NETDJfbWl4ZXItJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWFhMDU1MTM5Mzk5M2MxNGExM2Y3MmIzMzljMGVkNmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGU2MTVlMjdlZmNhNGY0MzlkZjlhZjZhYTJjNmRlODQxNTBkMTdjYmZkMTIxNzRiNTQ4NjhjMTJmMTljODNiYiIKKworUyA9ICIke1dPUktESVJ9L1NETDJfbWl4ZXItJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1pbmNsdWRlPWFjaW5jbHVkZSIKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbXVzaWMtbXAzIC0tZW5hYmxlLW11c2ljLW9nZyAtLWVuYWJsZS1tdXNpYy1vZ2ctdHJlbW9yIExJQlM9LUwke1NUQUdJTkdfTElCRElSfSIKKworUEFDS0FHRUNPTkZJR1ttYWRdID0gIi0tZW5hYmxlLW11c2ljLW1wMy1tYWQtZ3BsLC0tZGlzYWJsZS1tdXNpYy1tcDMtbWFkLWdwbCxsaWJtYWQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICAjIFJlbW92ZSBvbGQgbGlidG9vbCBtYWNyb3MuCisgICAgTUFDUk9TPSJsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNCIKKyAgICBmb3IgaSBpbiAke01BQ1JPU307IGRvCisgICAgICAgIHJtIC1mIGFjaW5jbHVkZS8kaQorICAgIGRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcHZfMC4yNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIKaW5kZXggNDRkOTJhMC4uZGU3OGRlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIKQEAgLTE2LDcgKzE2LDcgQEAKIAogU1JDX1VSSSA9ICIgXAogICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9tcHYtcGxheWVyL21wdi9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7bmFtZT1tcHYgXAotICAgIGh0dHA6Ly93d3cuZnJlZWhhY2tlcnMub3JnL350bmFneS9yZWxlYXNlL3dhZi0xLjguMTI7bmFtZT13YWY7c3ViZGlyPSR7QlBOfS0ke1BWfSBcCisgICAgaHR0cDovL3d3dy5mcmVlaGFja2Vycy5vcmcvfnRuYWd5L3JlbGVhc2Uvd2FmLTEuOC4xMjtuYW1lPXdhZjtkb3dubG9hZGZpbGVuYW1lPXdhZjtzdWJkaXI9JHtCUE59LSR7UFZ9IFwKICIKIFNSQ19VUklbbXB2Lm1kNXN1bV0gPSAiMDM4ZDBiNjYwZGUwN2ZmNjQ1YWQ2YTc0MTcwNGVjYWIiCiBTUkNfVVJJW21wdi5zaGEyNTZzdW1dID0gImRhZjNlZjM1OGQ1ZjI2MGYyMjY5ZjdjYWFiY2UyN2Y0NDZjMjkxNDU3ZWMzMzAwNzcxNTIxMjcxMzNiNzFiNDYiCkBAIC02NCw5ICs2NCwxMCBAQAogICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAogIgogCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgbG4gLXNmIHdhZi0xLjguMTIgJHtTfS93YWYKK2FkanVzdF93YWZfcGVybXMoKSB7CiAgICAgY2htb2QgK3ggJHtTfS93YWYKIH0KIAorZG9fcGF0Y2hbcG9zdGZ1bmNzXSArPSAiYWRqdXN0X3dhZl9wZXJtcyIKKwogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLVJldmVydC1tZWRpYS1jdGwtRG9uLXQtaW5zdGFsbC1saWJtZWRpYWN0bC1hbmQtbGlidjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLVJldmVydC1tZWRpYS1jdGwtRG9uLXQtaW5zdGFsbC1saWJtZWRpYWN0bC1hbmQtbGlidjQucGF0Y2gKaW5kZXggNzQxMzA5NC4uZWIyOTRiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMS1SZXZlcnQtbWVkaWEtY3RsLURvbi10LWluc3RhbGwtbGlibWVkaWFjdGwtYW5kLWxpYnY0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtUmV2ZXJ0LW1lZGlhLWN0bC1Eb24tdC1pbnN0YWxsLWxpYm1lZGlhY3RsLWFuZC1saWJ2NC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMmQ2YmZhNzViMmUxNmI0ZDc2NGYxYmYwMGJiOTAyZmI0YjVlNTA3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjdhNmU5MTliODI2M2Q2ZDJiNzE1MGU2MmYyNmZiMDZiYmM1MjZlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDI3IEZlYiAyMDE1IDIxOjU1OjM2ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIFJldmVydCAibWVkaWEtY3RsOiBEb24ndCBpbnN0YWxsIGxpYm1lZGlhY3RsIGFuZApAQCAtMTAsNiArMTAsNyBAQAogCiBDb25mbGljdHM6CiAJdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCisKIC0tLQogIHV0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbSB8IDEwICsrKy0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQpAQCAtNDAsNiArNDEsMyBAQAogIG1lZGlhY3RsX2luY2x1ZGVkaXI9JChpbmNsdWRlZGlyKS9tZWRpYWN0bAogIG5vaW5zdF9IRUFERVJTID0gbWVkaWFjdGwuaCB2NGwyc3ViZGV2LmgKICAKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMS1idWlsZHN5c3RlbS1kby1ub3QtYXNzdW1lLWJ1aWxkaW5nLWluLXNvdXJjZS10cmVlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMS1idWlsZHN5c3RlbS1kby1ub3QtYXNzdW1lLWJ1aWxkaW5nLWluLXNvdXJjZS10cmVlLnBhdGNoCmluZGV4IDU0MTYxZjkuLjEyNjA5ZDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtYnVpbGRzeXN0ZW0tZG8tbm90LWFzc3VtZS1idWlsZGluZy1pbi1zb3VyY2UtdHJlZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLWJ1aWxkc3lzdGVtLWRvLW5vdC1hc3N1bWUtYnVpbGRpbmctaW4tc291cmNlLXRyZWUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDgwNjgyMmY1YWNiNzU2ZDVhY2RhMGY5MDYzYzg0YjI4YjM4YjNmZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDc1MzcyYjgwODhjMjA0NzQ0OTdiNzllYzZjZjFlOTlmMmQxN2Y1NmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBJc21vIFB1dXN0aW5lbiA8aXNtby5wdXVzdGluZW5AaW50ZWwuY29tPgogRGF0ZTogTW9uLCAzIEFwciAyMDE3IDEzOjIzOjM4ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggdjRsLXV0aWxzXSBidWlsZHN5c3RlbTogZG8gbm90IGFzc3VtZSBidWlsZGluZyBpbiBzb3VyY2UgdHJlZS4KK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGRzeXN0ZW06IGRvIG5vdCBhc3N1bWUgYnVpbGRpbmcgaW4gc291cmNlIHRyZWUuCiAKIFVzZSAkKHRvcF9zcmNkaXIpIGFzIHJlZmVyZW5jZSBmb3IgaW5jbHVkZSBwYXRocyBhbmQgYnVpbGR0aW1lIHNjcmlwdHMuCiBPdGhlcndpc2UgY29tcGlsYXRpb24gb3V0c2lkZSBvZiBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5IHdpbGwgZmFpbApAQCAtMTIsNiArMTIsNyBAQAogVXBzdHJlYW0tc3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXQubGludXh0di5vcmcvL3Y0bC11dGlscy5naXQvY29tbWl0Lz9pZD1iZDk4YzlhOTliZmZjOGQ0NGM1NDg1OTM0NWU0ZGZlZTBhZGE0Mjc1XQogCiBTaWduZWQtb2ZmLWJ5OiBJc21vIFB1dXN0aW5lbiA8aXNtby5wdXVzdGluZW5AaW50ZWwuY29tPgorCiAtLS0KICB1dGlscy9jZWMtY29tcGxpYW5jZS9NYWtlZmlsZS5hbSAgfCAyICstCiAgdXRpbHMvY2VjLWN0bC9NYWtlZmlsZS5hbSAgICAgICAgIHwgMiArLQpAQCAtMjIsNyArMjMsNyBAQAogIDYgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdXRpbHMvY2VjLWNvbXBsaWFuY2UvTWFrZWZpbGUuYW0gYi91dGlscy9jZWMtY29tcGxpYW5jZS9NYWtlZmlsZS5hbQotaW5kZXggZWM1ZGU1MS4uODMzMWFhMCAxMDA2NDQKK2luZGV4IGYwNWZlNmMuLmY3ZDE1MzUgMTAwNjQ0CiAtLS0gYS91dGlscy9jZWMtY29tcGxpYW5jZS9NYWtlZmlsZS5hbQogKysrIGIvdXRpbHMvY2VjLWNvbXBsaWFuY2UvTWFrZWZpbGUuYW0KIEBAIC03LDcgKzcsNyBAQCBjZWNfY29tcGxpYW5jZV9MREZMQUdTID0gLWxydApAQCAtMzUsMTAgKzM2LDEwIEBACiAgY2VjLWNvbXBsaWFuY2UuY3BwOiB2ZXJzaW9uLmgKICAKIGRpZmYgLS1naXQgYS91dGlscy9jZWMtY3RsL01ha2VmaWxlLmFtIGIvdXRpbHMvY2VjLWN0bC9NYWtlZmlsZS5hbQotaW5kZXggMGE3ZWYyMi4uNmFmYjZjOSAxMDA2NDQKK2luZGV4IDRhNmVhZTUuLjU3MGEwNzAgMTAwNjQ0CiAtLS0gYS91dGlscy9jZWMtY3RsL01ha2VmaWxlLmFtCiArKysgYi91dGlscy9jZWMtY3RsL01ha2VmaWxlLmFtCi1AQCAtNyw3ICs3LDcgQEAgY2VjX2N0bF9MREZMQUdTID0gLWxydAorQEAgLTYsNyArNiw3IEBAIGNlY19jdGxfU09VUkNFUyA9IGNlYy1jdGwuY3BwCiAgY2VjLWN0bC5jcHA6IGNlYy1jdGwtZ2VuLmgKICAKICBjZWMtY3RsLWdlbi5oOiBtc2cyY3RsLnBsIC4uLy4uL2luY2x1ZGUvbGludXgvY2VjLmggLi4vLi4vaW5jbHVkZS9saW51eC9jZWMtZnVuY3MuaApAQCAtNDgsNyArNDksNyBAQAogIGNsZWFuLWxvY2FsOgogIAktcm0gLXZmIGNlYy1jdGwtZ2VuLmgKIGRpZmYgLS1naXQgYS91dGlscy9jZWMtZm9sbG93ZXIvTWFrZWZpbGUuYW0gYi91dGlscy9jZWMtZm9sbG93ZXIvTWFrZWZpbGUuYW0KLWluZGV4IDUzOGVkYjIuLmZkYmYzZDkgMTAwNjQ0CitpbmRleCBkOGFkMjkyLi5lMzU1M2ViIDEwMDY0NAogLS0tIGEvdXRpbHMvY2VjLWZvbGxvd2VyL01ha2VmaWxlLmFtCiArKysgYi91dGlscy9jZWMtZm9sbG93ZXIvTWFrZWZpbGUuYW0KIEBAIC03LDEyICs3LDEyIEBAIGNlY19mb2xsb3dlcl9MREZMQUdTID0gLWxydApAQCAtNjUsNyArNjYsNyBAQAogKwkkKHRvcF9zcmNkaXIpL3V0aWxzL2NlYy1jdGwvbXNnMmN0bC5wbCAyICQodG9wX3NyY2RpcikvaW5jbHVkZS9saW51eC9jZWMuaCAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbGludXgvY2VjLWZ1bmNzLmggPiRACiAgCiAgdmVyc2lvbi5oOgotIAlAaWYgZ2l0IHJldi1wYXJzZSBIRUFEID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisgCUBpZiBnaXQgc2hvdy1yZWYgLXMgSEVBRCA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAogZGlmZiAtLWdpdCBhL3V0aWxzL3F2NGwyL01ha2VmaWxlLmFtIGIvdXRpbHMvcXY0bDIvTWFrZWZpbGUuYW0KIGluZGV4IGZkNTg0ODYuLmNjZDFhMmEgMTAwNjQ0CiAtLS0gYS91dGlscy9xdjRsMi9NYWtlZmlsZS5hbQpAQCAtODAsNyArODEsNyBAQAogIGlmIFdJVEhfUVRHTAogIHF2NGwyX0NQUEZMQUdTICs9ICQoUVRHTF9DRkxBR1MpCiBkaWZmIC0tZ2l0IGEvdXRpbHMvdjRsMi1jb21wbGlhbmNlL01ha2VmaWxlLmFtIGIvdXRpbHMvdjRsMi1jb21wbGlhbmNlL01ha2VmaWxlLmFtCi1pbmRleCAwM2RiOGRmLi4xOGI5ODkyIDEwMDY0NAoraW5kZXggYzJiNTkxOS4uZmI4ZDEyZSAxMDA2NDQKIC0tLSBhL3V0aWxzL3Y0bDItY29tcGxpYW5jZS9NYWtlZmlsZS5hbQogKysrIGIvdXRpbHMvdjRsMi1jb21wbGlhbmNlL01ha2VmaWxlLmFtCiBAQCAtNSw3ICs1LDcgQEAgREVGUyA6PQpAQCAtMTA1LDYgKzEwNiwzIEBACiAgCiAgaWYgV0lUSF9WNEwyX0NUTF9MSUJWNEwKICB2NGwyX2N0bF9MREFERCA9IC4uLy4uL2xpYi9saWJ2NGwyL2xpYnY0bDIubGEgLi4vLi4vbGliL2xpYnY0bGNvbnZlcnQvbGlidjRsY29udmVydC5sYSAtbHJ0IC1scHRocmVhZAotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLWlyLWN0bC1EZWZpbmUtVEVNUF9GQUlMVVJFX1JFVFJZLWlmLXVuZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtaXItY3RsLURlZmluZS1URU1QX0ZBSUxVUkVfUkVUUlktaWYtdW5kZWZpbmVkLnBhdGNoCmluZGV4IGYxZTExZGEuLjgyZmMzZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtaXItY3RsLURlZmluZS1URU1QX0ZBSUxVUkVfUkVUUlktaWYtdW5kZWZpbmVkLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtaXItY3RsLURlZmluZS1URU1QX0ZBSUxVUkVfUkVUUlktaWYtdW5kZWZpbmVkLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBlNjBhZWE1MGU0MWFlOGExNzY3MmJlYjU4NTliZWVjYjY2ZTdhMzA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiMmVmY2MyMDYxN2Q2MzE3Zjc0YzRhY2IyYTZhZjViNzY1ZjIwYjM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMTQgSnVsIDIwMTcgMTM6MTE6MjUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIGlyLWN0bDogRGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWSBpZiB1bmRlZmluZWQKK1N1YmplY3Q6IFtQQVRDSF0gaXItY3RsOiBEZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZIGlmIHVuZGVmaW5lZAogCiB1c2Ugc3RybmR1cCgpIGluc3RlYWQgb2Ygc3RybmR1cGEoKSB3aGljaCBpcyBub3QKIHVuaXZlcnNhbGx5IGF2YWlsYWJsZSBpbiBDIGxpYnJhcmllcwpAQCAtOSw2ICs5LDcgQEAKIFRha2VuIGZyb20gQWxwaW5lTGludXgKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgdXRpbHMvaXItY3RsL2lyLWN0bC5jIHwgMTQgKysrKysrKysrKysrKy0KICAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQpAQCAtNTAsNiArNTEsMyBAQAogIAogIAlpZiAoIXN0cnRvc2NhbmNvZGUocCArIDEsICZzY2FuY29kZSkpIHsKICAJCWZwcmludGYoc3RkZXJyLCBfKCJlcnJvcjogaW52YWxpZCBzY2FuY29kZSAnJXMnXG4iKSwgcCArIDEpOwotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMi1jb250cmliLXRlc3QtTGluay1tY19uZXh0Z2VuX3Rlc3Qtd2l0aC1saWJhcmdwLWlmLW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMi1jb250cmliLXRlc3QtTGluay1tY19uZXh0Z2VuX3Rlc3Qtd2l0aC1saWJhcmdwLWlmLW5lLnBhdGNoCmluZGV4IDJmYjQwNTcuLmE3NzlhMzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDItY29udHJpYi10ZXN0LUxpbmstbWNfbmV4dGdlbl90ZXN0LXdpdGgtbGliYXJncC1pZi1uZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAyLWNvbnRyaWItdGVzdC1MaW5rLW1jX25leHRnZW5fdGVzdC13aXRoLWxpYmFyZ3AtaWYtbmUucGF0Y2gKQEAgLTEsMTEgKzEsMTIgQEAKLUZyb20gYjNhY2M0YzY0MDdmOTU1M2YzMjU4MmE5YWVlNmExMWI1ZmNkMWQ4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDlmODY1YTE3ZDYyZGI3YmJkMzMzYTliODNmYWRlZWE1NTY4NmUzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDE0IEp1bCAyMDE3IDEzOjE3OjE5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSBjb250cmliL3Rlc3Q6IExpbmsgbWNfbmV4dGdlbl90ZXN0IHdpdGggbGliYXJncCBpZiBuZWVkZWQKK1N1YmplY3Q6IFtQQVRDSF0gY29udHJpYi90ZXN0OiBMaW5rIG1jX25leHRnZW5fdGVzdCB3aXRoIGxpYmFyZ3AgaWYgbmVlZGVkCiAKIG11c2wgZGVwZW5kcyBvbiBleHRlcm5hbCBhcmdwIGltcGxlbWVudGF0aW9uIGUuZy4KIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgY29udHJpYi90ZXN0L01ha2VmaWxlLmFtIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQpAQCAtMjMsNiArMjQsMyBAQAogIAogIAogIGlvY3RsX3Rlc3RfU09VUkNFUyA9IGlvY3RsLXRlc3QuYyBpb2N0bC10ZXN0LmggaW9jdGxfMzIuaCBpb2N0bF82NC5oCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAzLXY0bDItY3RsLURvLW5vdC11c2UtZ2V0c3Vib3B0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMy12NGwyLWN0bC1Eby1ub3QtdXNlLWdldHN1Ym9wdC5wYXRjaAppbmRleCAwYTk4NmFlLi41Yjg0YWYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAzLXY0bDItY3RsLURvLW5vdC11c2UtZ2V0c3Vib3B0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDMtdjRsMi1jdGwtRG8tbm90LXVzZS1nZXRzdWJvcHQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGQwNGFhNjg2NmNiZWE1N2M0YTgxYjAzM2NkNjA1ODZhOTQzNmFjNmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY3YTRiNzliMzMyMzUzNDQ2MGE2M2IzZTZjNThlYmFmMDZhZGYyMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogRnJpLCAxNCBKdWwgMjAxNyAxMzoyMDowNSAtMDcwMAotU3ViamVjdDogW1BBVENIIDMvM10gdjRsMi1jdGw6IERvIG5vdCB1c2UgZ2V0c3Vib3B0CitTdWJqZWN0OiBbUEFUQ0hdIHY0bDItY3RsOiBEbyBub3QgdXNlIGdldHN1Ym9wdAogCiBQT1NJWCBzYXlzIHRoYXQgYmVoYXZpb3Igd2hlbiBzdWJvcHRzIGxpc3QgaXMgZW1wdHkgaXMgdW5kZWZpbmVkLgogbXVzbCBsaWJzIHdpbGwgc2V0IHZhbHVlIHRvIE5VTEwgd2hpY2ggbGVhZHMgdG8gY3Jhc2guCkBAIC05LDYgKzksNyBAQAogVGFrZW4gZnJvbSBBbHBpbmVMaW51eAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICB1dGlscy92NGwyLWN0bC92NGwyLWN0bC1jb21tb24uY3BwIHwgMTkgKysrKysrKysrKy0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQpAQCAtNDQsNiArNDUsMyBAQAogIH0KICAKICB2b2lkIGNvbW1vbl9jbWQoaW50IGNoLCBjaGFyICpvcHRhcmcpCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy9leHBvcnQtbWVkaWFjdGwtaGVhZGVycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzL2V4cG9ydC1tZWRpYWN0bC1oZWFkZXJzLnBhdGNoCmluZGV4IGM2MTBlN2UuLjU1YTVjZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzL2V4cG9ydC1tZWRpYWN0bC1oZWFkZXJzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzL2V4cG9ydC1tZWRpYWN0bC1oZWFkZXJzLnBhdGNoCkBAIC0xLDkgKzEsMTcgQEAKLUluZGV4OiB2NGwtdXRpbHMtMS42LjIvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdjRsLXV0aWxzLTEuNi4yLm9yaWcvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCi0rKysgdjRsLXV0aWxzLTEuNi4yL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQotQEAgLTQsOCArNCw4IEBAIGxpYm1lZGlhY3RsX2xhX0NGTEFHUyA9ICQoTElCVURFVl9DRkxBR1MKLSBsaWJtZWRpYWN0bF9sYV9MREZMQUdTID0gJChMSUJVREVWX0xJQlMpCitGcm9tIGI4MmU1MDljMTA2NTlhNDY0Nzk2MWE2ZGEzYWRmNGQyODVkZWEyZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxIE1hciAyMDE1IDIyOjI1OjA3ICswMDAwCisKKy0tLQorIHV0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0gYi91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KK2luZGV4IDdjNTIwYTIuLjc0ODM1M2QgMTAwNjQ0CistLS0gYS91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KKysrKyBiL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQorQEAgLTE3LDggKzE3LDggQEAgQ0xFQU5GSUxFUyA9ICQoQlVJTFRfU09VUkNFUykKKyBub2Rpc3RfbGlidjRsMnN1YmRldl9sYV9TT1VSQ0VTID0gJChCVUlMVF9TT1VSQ0VTKQogIGxpYnY0bDJzdWJkZXZfbGFfU09VUkNFUyA9IGxpYnY0bDJzdWJkZXYuYwogIGxpYnY0bDJzdWJkZXZfbGFfTElCQUREID0gbGlibWVkaWFjdGwubGEKIC1tZWRpYWN0bF9pbmNsdWRlZGlyPSQoaW5jbHVkZWRpcikvbWVkaWFjdGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzL21lZGlhY3RsLXBrZ2NvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzL21lZGlhY3RsLXBrZ2NvbmZpZy5wYXRjaAppbmRleCAzNGZiM2NmLi45ZmNmNjExIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy9tZWRpYWN0bC1wa2djb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvbWVkaWFjdGwtcGtnY29uZmlnLnBhdGNoCkBAIC0xLDggKzEsMTYgQEAKLUluZGV4OiB2NGwtdXRpbHMtMS42LjIvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdjRsLXV0aWxzLTEuNi4yLm9yaWcvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCi0rKysgdjRsLXV0aWxzLTEuNi4yL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQotQEAgLTcsNiArNyw3IEBAIGxpYnY0bDJzdWJkZXZfbGFfTElCQUREID0gbGlibWVkaWFjdGwubGEKK0Zyb20gNDgwYzA0YWM2YTlkMTFiZmVmOWQ0YWNhMDczMDUyZmRjZWU0ZmRlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDEgTWFyIDIwMTUgMjI6MjU6MDcgKzAwMDAKKworLS0tCisgdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0gYi91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KK2luZGV4IGQxMWZhMmUuLjdjNTIwYTIgMTAwNjQ0CistLS0gYS91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KKysrKyBiL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQorQEAgLTIwLDYgKzIwLDcgQEAgbGlidjRsMnN1YmRldl9sYV9MSUJBREQgPSBsaWJtZWRpYWN0bC5sYQogIG1lZGlhY3RsX2luY2x1ZGVkaXI9JChpbmNsdWRlZGlyKS9tZWRpYWN0bAogIG5vaW5zdF9IRUFERVJTID0gbWVkaWFjdGwuaCB2NGwyc3ViZGV2LmgKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvd2VibS9saWJ2cHgvbGlidnB4LWNvbmZpZ3VyZS1zdXBwb3J0LWJsYW5rLXByZWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvd2VibS9saWJ2cHgvbGlidnB4LWNvbmZpZ3VyZS1zdXBwb3J0LWJsYW5rLXByZWZpeC5wYXRjaAppbmRleCBjN2E2ZTUxLi42YWQ3ZjJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYm0vbGlidnB4L2xpYnZweC1jb25maWd1cmUtc3VwcG9ydC1ibGFuay1wcmVmaXgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJtL2xpYnZweC9saWJ2cHgtY29uZmlndXJlLXN1cHBvcnQtYmxhbmstcHJlZml4LnBhdGNoCkBAIC0xLDE5ICsxLDI4IEBACi1VcHN0cmVhbTogbm90IHlldAorRnJvbSBkYzBhNWMzZDJkZDRlNzlkMTJhMTUwYTI0NmE5NWM0ZGM4ODMyNmYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KK0RhdGU6IFR1ZSwgMTYgQXVnIDIwMTEgMTY6MDQ6MzUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXBzdHJlYW06IG5vdCB5ZXQKIAogRml4IGNvbmZpZ3VyZSB0byBhY2NlcHQgIi0tcHJlZml4PSIgKGEgYmxhbmsgcHJlZml4KS4KIAotLS0tIGxpYnZweC0wLjkuMS9idWlsZC9tYWtlL2NvbmZpZ3VyZS5zaC5vcmlnCTIwMTAtMDYtMTcgMDk6MDg6NTYuMDAwMDAwMDAwIC0wNDAwCi0rKysgbGlidnB4LTAuOS4xL2J1aWxkL21ha2UvY29uZmlndXJlLnNoCTIwMTAtMDktMjMgMTQ6Mjc6NDguMDAwMDAwMDAwIC0wNDAwCi1AQCAtNDQ0LDYgKzQ0NCw4IEBACistLS0KKyBidWlsZC9tYWtlL2NvbmZpZ3VyZS5zaCB8IDIwICsrKysrKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZC9tYWtlL2NvbmZpZ3VyZS5zaCBiL2J1aWxkL21ha2UvY29uZmlndXJlLnNoCitpbmRleCAwMDdlMDIwLi4wNGQ1Y2JmIDEwMDY0NAorLS0tIGEvYnVpbGQvbWFrZS9jb25maWd1cmUuc2gKKysrKyBiL2J1aWxkL21ha2UvY29uZmlndXJlLnNoCitAQCAtNTgxLDYgKzU4MSw4IEBAIHByb2Nlc3NfY29tbW9uX2NtZGxpbmUoKSB7CiAgICAgICAgICA7OwotICAgICAgICAgLS1wcmVmaXg9KikKKyAgICAgICAtLXByZWZpeD0qKQogICAgICAgICAgcHJlZml4PSIke29wdHZhbH0iCiArICAgICAgICAjIERpc3Rpbmd1aXNoIGJldHdlZW4gInByZWZpeCBub3Qgc2V0IiBhbmQgInByZWZpeCBzZXQgdG8gJyciCiArICAgICAgICBwcmVmaXhzZXQ9MQogICAgICAgICAgOzsKLSAgICAgICAgIC0tbGliZGlyPSopCisgICAgICAgLS1saWJkaXI9KikKICAgICAgICAgIGxpYmRpcj0iJHtvcHR2YWx9IgotQEAgLTU4NywxMyArNTg3LDIzIEBAIHByb2Nlc3NfY21kbGluZSgpIHsKK0BAIC02MTQsMTMgKzYxNiwyMyBAQCBwcm9jZXNzX2NtZGxpbmUoKSB7CiAgfQogIAogIHBvc3RfcHJvY2Vzc19jb21tb25fY21kbGluZSgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ2VvY2x1ZS9nZW9jbHVlXzIuNC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9nZW9jbHVlL2dlb2NsdWVfMi40LjQuYmIKaW5kZXggMWQ1MzFhZS4uYjMxZDhlYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9nZW9jbHVlL2dlb2NsdWVfMi40LjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9nZW9jbHVlL2dlb2NsdWVfMi40LjQuYmIKQEAgLTgsOSArOCw5IEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTgxMTRiODNhMDQzNWQ4MTM2YjQ3YmQ3MDExMWNlNWNkIgogCi1ERVBFTkRTID0gImdsaWItMi4wIGRidXMganNvbi1nbGliIGxpYnNvdXAtMi40IGludGx0b29sLW5hdGl2ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24tbmF0aXZlIgorREVQRU5EUyA9ICJnbGliLTIuMCBkYnVzIGpzb24tZ2xpYiBsaWJzb3VwLTIuNCBpbnRsdG9vbC1uYXRpdmUiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KIAogU1JDX1VSSSA9ICIgXAogICAgIGh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2dlb2NsdWUvcmVsZWFzZXMvMi40L2dlb2NsdWUtJHtQVn0udGFyLnh6IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwMS1TQ29uc3RydWN0LXByZWZpeC1pbmNsdWRlcHktd2l0aC1zeXNyb290LWFuZC1kcm9wLXN5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNi8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYTMyMjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNi8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1Gcm9tIDFlMmNlYTg5NDViYzIxODNmYmUxYTAxMmRjZDYzM2EzNTIxMjU5NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI0IEFwciAyMDEyIDE4OjQ1OjE0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNDb25zdHJ1Y3Q6IHByZWZpeCBpbmNsdWRlcHkgd2l0aCBzeXNyb290IGFuZCBkcm9wIHN5c3Jvb3QKLSBmcm9tIHB5dGhvbl9saWJfZGlyCi0KLSogd2l0aG91dCBQWVRIT05QQVRILCBkaXN0dXRpbCdzIHN5c2NvbmZpZyByZXR1cm5zIElOQ0xVREVQWSB3aXRob3V0IHN5c3Jvb3QgcHJlZml4Ci0gIGFuZCB3aXRoIFBZVEhPTlBBVEggZnJvbSBPRSBpdCdzIHBvaW50aW5nIHRvIG5hdGl2ZSBweXRob24gZGlyCi0KLSAgICAkIGV4cG9ydCBQWVRIT05QQVRIPS9PRS9zaHItY29yZS90bXAtZWdsaWJjL3N5c3Jvb3RzL29tLWd0YTAyL3Vzci9saWIvcHl0aG9uMi43LwotICAgICQgcHl0aG9uCi0gICAgUHl0aG9uIDIuNy4yIChkZWZhdWx0LCBBcHIgMTggMjAxMiwgMDk6MTk6NTkpCi0gICAgW0dDQyA0LjYuMl0gb24gbGludXgyCi0gICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgID4+PiBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCi0gICAgPj4+IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoJ0lOQ0xVREVQWScpCi0gICAgWycvT0Uvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUvcHl0aG9uMi43J10KLSAgICA+Pj4KLSAgICAkIHVuc2V0IFBZVEhPTlBBVEgKLSAgICAkIHB5dGhvbgotICAgIFB5dGhvbiAyLjcuMiAoZGVmYXVsdCwgQXByIDE4IDIwMTIsIDA5OjE5OjU5KQotICAgIFtHQ0MgNC42LjJdIG9uIGxpbnV4MgotICAgIFR5cGUgImhlbHAiLCAiY29weXJpZ2h0IiwgImNyZWRpdHMiIG9yICJsaWNlbnNlIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICA+Pj4gZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZwotICAgID4+PiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCdJTkNMVURFUFknKQotICAgIFsnL3B5dGhvbjIuNyddCi0gICAgPj4+IGltcG9ydCBzeXNjb25maWcKLSAgICA+Pj4gc3lzY29uZmlnLmdldF9jb25maWdfdmFycygnSU5DTFVERVBZJykKLSAgICBbJy9PRS9zaHItY29yZS90bXAtZWdsaWJjL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZS9weXRob24yLjcnXQotKiBweXRob25fbGliX2RpciA9IHB5dGhvbl9saWJfZGlyLnJlcGxhY2UoZW52WydzeXNyb290J10sICcnKQotICByZXR1cm5zIHBhdGggdG8gdGFyZ2V0IHN5c3Jvb3QKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogUGV0ZXIgQS4gQmlnb3QgPHBhYkBwYWJpZ290LmNvbT4KLS0tLQotIFNDb25zdHJ1Y3QgfCA5ICsrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL1NDb25zdHJ1Y3QgYi9TQ29uc3RydWN0Ci1pbmRleCA2YzkzMzExLi5jZGU4YjNkIDEwMDY0NAotLS0tIGEvU0NvbnN0cnVjdAotKysrIGIvU0NvbnN0cnVjdAotQEAgLTExNDgsNiArMTE0OCwxMiBAQCBlbHNlOgotICAgICAgICAgYmFzZWNmbGFncyArPSAnIC1jb3ZlcmFnZScKLSAgICAgICAgIGxkZmxhZ3MgKz0gJyAtY292ZXJhZ2UnCi0gICAgICAgICBsZHNoYXJlZCArPSAnIC1jb3ZlcmFnZScKLSsKLSsgICAgaWYgZW52WydzeXNyb290J106Ci0rICAgICAgICBwcmludCAiUHJlZml4aW5nIGluY2x1ZGVweSAnJXMnIHdpdGggc3lzcm9vdCBwcmVmaXgiICUgaW5jbHVkZXB5Ci0rICAgICAgICBpbmNsdWRlcHkgPSBvcy5wYXRoLm5vcm1wYXRoKCIlcy8lcy8lcy8lcyIgJSAoZW52WydzeXNyb290J10sIGVudlsncHJlZml4J10sIGVudlsnaW5jbHVkZWRpciddLCBpbmNsdWRlcHkpKQotKyAgICAgICAgcHJpbnQgIiclcyciICUgaW5jbHVkZXB5Ci0rCi0gICAgICMgaW4gY2FzZSBDQy9DWFggd2FzIHNldCB0byB0aGUgc2Nhbi1idWlsZCB3cmFwcGVyLAotICAgICAjIGVuc3VyZSB0aGF0IHdlIGJ1aWxkIHRoZSBweXRob24gbW9kdWxlcyB3aXRoIHNjYW4tYnVpbGQsIHRvbwotICAgICBpZiBlbnZbJ0NDJ10gaXMgTm9uZSBvciBlbnZbJ0NDJ10uZmluZCgnc2Nhbi1idWlsZCcpIDwgMDoKLUBAIC0xNDA4LDExICsxNDE0LDE0IEBAIGlmIG5vdCBlbnZbJ3B5dGhvbiddOgotICAgICBweXRob25faW5zdGFsbCA9IFtdCi0gZWxzZToKLSAgICAgcHl0aG9uX2xpYl9kaXIgPSBlbnZbJ3B5dGhvbl9saWJkaXInXQotKyAgICBweXRob25fbGliX2RpciA9IHB5dGhvbl9saWJfZGlyLnJlcGxhY2UoZW52WydzeXNyb290J10sICcnKQotICAgICBweXRob25fbW9kdWxlX2RpciA9IHB5dGhvbl9saWJfZGlyICsgb3Muc2VwICsgJ2dwcycKLSAgICAgcHl0aG9uX2V4dGVuc2lvbnNfaW5zdGFsbCA9IHB5dGhvbl9lbnYuSW5zdGFsbCggREVTVERJUiArIHB5dGhvbl9tb2R1bGVfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRob25fYnVpbHRfZXh0ZW5zaW9ucykKLSAgICAgaWYgbm90IGVudlsnZGVidWcnXSBhbmQgbm90IGVudlsncHJvZmlsaW5nJ10gYW5kIG5vdCBlbnZbJ25vc3RyaXAnXSBhbmQgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdkYXJ3aW4nKToKLSAgICAgICAgIHB5dGhvbl9lbnYuQWRkUG9zdEFjdGlvbihweXRob25fZXh0ZW5zaW9uc19pbnN0YWxsLCAnJFNUUklQICRUQVJHRVQnKQotKyAgICBlbnYuQWRkUG9zdEFjdGlvbihweXRob25fZXh0ZW5zaW9uc19pbnN0YWxsLCAnJENIUlBBVEggLXIgIiVzIiAiJFRBUkdFVCInIFwKLSsgICAgICAgICAgICAgICAgICAgICAlIChweXRob25fbGliX2RpciwgKSkKLSAKLSAgICAgcHl0aG9uX21vZHVsZXNfaW5zdGFsbCA9IHB5dGhvbl9lbnYuSW5zdGFsbCggREVTVERJUiArIHB5dGhvbl9tb2R1bGVfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbl9tb2R1bGVzKQotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDk2YjVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBmMjIxZmE5NTljODBiNDNjNjU0MjY1MDBhNjgzNmExYjVjZjZmZTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTcgQXVnIDIwMTYgMDI6MTY6MTIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzeXMvdHR5ZGVmYXVsdHMuaAotCi1UaGlzIGlzIG5lZWRlZCBmb3IgQ1RSTCBkZWZpbml0aW9uLCBhcyBleHBvc2VkIGJ5IG11c2wgb24gZ2xpYmMKLXRoaXMgaW5jbHVkZSBmaWxlIGdldHMgcHVsbGVkIGluZGlyZWN0bHkuCi0KLS91c3Ivc3JjL2RlYnVnL2dwc2QvMy4xNC1yMC9ncHNkLTMuMTQvZ3BzbW9uLmM6NjA1OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBDVFJMJwotY2xhbmctMy45OiBlcnJvcjogbGlua2VyIGNvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlIDEgKHVzZSAtdiB0byBzZWUgaW52b2NhdGlvbikKLXNjb25zOiAqKiogW2dwc21vbl0gRXJyb3IgMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1Gb3Jld2FyZCBwb3J0IHRvIGdwc2QgMy4xNgotU2lnbmVkLW9mZi1ieTogTWF4IEtydW1tZW5hY2hlciA8bWF4LmtydW1tZW5hY2hlckB0b3JhZGV4LmNvbT4KLS0tLQotIGdwc21vbi5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9ncHNtb24uYyBiL2dwc21vbi5jCi1pbmRleCBlYWQ4NGQwLi5mMjA1Y2IxIDEwMDY0NAotLS0tIGEvZ3BzbW9uLmMKLSsrKyBiL2dwc21vbi5jCi1AQCAtMjAsNiArMjAsNyBAQAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgotKyNpbmNsdWRlIDxzeXMvdHR5ZGVmYXVsdHMuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDQtU0NvbnN0cnVjdC1kaXNhYmxlLWh0bWwtYW5kLW1hbi1kb2NzLWJ1aWxkaW5nLWJlY2F1cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwNC1TQ29uc3RydWN0LWRpc2FibGUtaHRtbC1hbmQtbWFuLWRvY3MtYnVpbGRpbmctYmVjYXVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTI3ZjBkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwNC1TQ29uc3RydWN0LWRpc2FibGUtaHRtbC1hbmQtbWFuLWRvY3MtYnVpbGRpbmctYmVjYXVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSA2OTdlMmU5ZmY5NzQ4NzI2NmQ4MTdjZGQ0MWJhY2M4M2Y2ODFlM2Q3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyOSBBcHIgMjAxMiAwMDowNTo1OSArMDIwMAotU3ViamVjdDogW1BBVENIIDQvNF0gU0NvbnN0cnVjdDogZGlzYWJsZSBodG1sIGFuZCBtYW4gZG9jcyBidWlsZGluZyBiZWNhdXNlCi0geG1sdG8tbmF0aXZlIGZyb20gT0UgaXMgYnJva2VuCi0KLUl0IHdpbGwgdHJ5IHRvIGxvYWQgZHRkIGFuZCBmYWlsOgotfCB4bWx0byBtYW4gZ3BzY3RsLnhtbDsgbXYgYGJhc2VuYW1lIGdwc2N0bC4xYCBncHNjdGwuMQotfCB4bWx0bzogL3Zhci9saWIvamVua2lucy9qb2JzL3Noci1jb3JlLWJyYW5jaGVzL3dvcmtzcGFjZS9zaHItY29yZS90bXAtZWdsaWJjL3dvcmsvYXJtdjR0LW9lLWxpbnV4LWdudWVhYmkvZ3BzZC0zLjQtcjIvZ3BzZC0zLjQvZ3BzY3RsLnhtbCBkb2VzIG5vdCB2YWxpZGF0ZSAoc3RhdHVzIDMpCi18IHhtbHRvOiBGaXggZG9jdW1lbnQgc3ludGF4IG9yIHVzZSAtLXNraXAtdmFsaWRhdGlvbiBvcHRpb24KLXwgSS9PIGVycm9yIDogQXR0ZW1wdCB0byBsb2FkIG5ldHdvcmsgZW50aXR5IGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4xLjIvZG9jYm9va3guZHRkCi18IC92YXIvbGliL2plbmtpbnMvam9icy9zaHItY29yZS1icmFuY2hlcy93b3Jrc3BhY2Uvc2hyLWNvcmUvdG1wLWVnbGliYy93b3JrL2FybXY0dC1vZS1saW51eC1nbnVlYWJpL2dwc2QtMy40LXIyL2dwc2QtMy40L2dwc2N0bC54bWw6ODogd2FybmluZzogZmFpbGVkIHRvIGxvYWQgZXh0ZXJuYWwgZW50aXR5ICJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIKLXwgICAgImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4xLjIvZG9jYm9va3guZHRkIj4KLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi18IEkvTyBlcnJvciA6IEF0dGVtcHQgdG8gbG9hZCBuZXR3b3JrIGVudGl0eSBodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZAotfCB3YXJuaW5nOiBmYWlsZWQgdG8gbG9hZCBleHRlcm5hbCBlbnRpdHkgImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4xLjIvZG9jYm9va3guZHRkIgotfCB2YWxpZGl0eSBlcnJvciA6IENvdWxkIG5vdCBsb2FkIHRoZSBleHRlcm5hbCBzdWJzZXQgImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4xLjIvZG9jYm9va3guZHRkIgotfCBEb2N1bWVudCAvdmFyL2xpYi9qZW5raW5zL2pvYnMvc2hyLWNvcmUtYnJhbmNoZXMvd29ya3NwYWNlL3Noci1jb3JlL3RtcC1lZ2xpYmMvd29yay9hcm12NHQtb2UtbGludXgtZ251ZWFiaS9ncHNkLTMuNC1yMi9ncHNkLTMuNC9ncHNjdGwueG1sIGRvZXMgbm90IHZhbGlkYXRlCi18IG12OiBjYW5ub3Qgc3RhdCBgZ3BzY3RsLjEnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci18IHNjb25zOiAqKiogW2dwc2N0bC4xXSBFcnJvciAxCi18IHNjb25zOiBidWlsZGluZyB0ZXJtaW5hdGVkIGJlY2F1c2Ugb2YgZXJyb3JzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogUGV0ZXIgQS4gQmlnb3QgPHBhYkBwYWJpZ290LmNvbT4KLS0tLQotIFNDb25zdHJ1Y3QgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvU0NvbnN0cnVjdCBiL1NDb25zdHJ1Y3QKLWluZGV4IDBlNTE4ZTcuLmMwMWE3MWIgMTAwNjQ0Ci0tLS0gYS9TQ29uc3RydWN0Ci0rKysgYi9TQ29uc3RydWN0Ci1AQCAtNzA0LDEyICs3MDQsMTIgQEAgc2l6ZV90IHN0cmxjcHkoLypAb3V0QCovY2hhciAqZHN0LCAvKkBpbkAqL2NvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUpOwotIAotICAgICBtYW5idWlsZGVyID0gbWFuZ2VuZXJhdG9yID0gaHRtbGJ1aWxkZXIgPSBOb25lCi0gICAgIGlmIGVudlsnbWFuYnVpbGQnXToKLS0gICAgICAgIGlmIGNvbmZpZy5DaGVja1hzbHRwcm9jKCk6Ci0rICAgICAgICBpZiBGYWxzZSBhbmQgY29uZmlnLkNoZWNrWHNsdHByb2MoKToKLSAgICAgICAgICAgICBtYW5nZW5lcmF0b3IgPSAneHNsdHByb2MnCi0gICAgICAgICAgICAgYnVpbGQgPSAieHNsdHByb2MgLS1ub25ldCAlcyAkU09VUkNFID4kVEFSR0VUIgotICAgICAgICAgICAgIGh0bWxidWlsZGVyID0gYnVpbGQgJSBkb2Nib29rX2h0bWxfdXJpCi0gICAgICAgICAgICAgbWFuYnVpbGRlciA9IGJ1aWxkICUgZG9jYm9va19tYW5fdXJpCi0tICAgICAgICBlbGlmIFdoZXJlSXMoInhtbHRvIik6Ci0rICAgICAgICBlbGlmIEZhbHNlIGFuZCBXaGVyZUlzKCJ4bWx0byIpOgotICAgICAgICAgICAgIG1hbmdlbmVyYXRvciA9ICd4bWx0bycKLSAgICAgICAgICAgICB4bWx0byA9ICJ4bWx0byAlcyAkU09VUkNFIHx8IG12IGBiYXNlbmFtZSAkVEFSR0VUYCBgZGlybmFtZSAkVEFSR0VUYCIKLSAgICAgICAgICAgICBodG1sYnVpbGRlciA9IHhtbHRvICUgImh0bWwtbm9jaHVua3MiCi0tLSAKLTEuOC41LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNy8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE3LzAwMDEtU0NvbnN0cnVjdC1wcmVmaXgtaW5jbHVkZXB5LXdpdGgtc3lzcm9vdC1hbmQtZHJvcC1zeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmEyN2MyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNy8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2gKQEAgLTAsMCArMSw4MSBAQAorRnJvbSAxZTJjZWE4OTQ1YmMyMTgzZmJlMWEwMTJkY2Q2MzNhMzUyMTI1OTUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNCBBcHIgMjAxMiAxODo0NToxNCArMDIwMAorU3ViamVjdDogW1BBVENIXSBTQ29uc3RydWN0OiBwcmVmaXggaW5jbHVkZXB5IHdpdGggc3lzcm9vdCBhbmQgZHJvcCBzeXNyb290CisgZnJvbSBweXRob25fbGliX2RpcgorCisqIHdpdGhvdXQgUFlUSE9OUEFUSCwgZGlzdHV0aWwncyBzeXNjb25maWcgcmV0dXJucyBJTkNMVURFUFkgd2l0aG91dCBzeXNyb290IHByZWZpeAorICBhbmQgd2l0aCBQWVRIT05QQVRIIGZyb20gT0UgaXQncyBwb2ludGluZyB0byBuYXRpdmUgcHl0aG9uIGRpcgorCisgICAgJCBleHBvcnQgUFlUSE9OUEFUSD0vT0Uvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy9vbS1ndGEwMi91c3IvbGliL3B5dGhvbjIuNy8KKyAgICAkIHB5dGhvbgorICAgIFB5dGhvbiAyLjcuMiAoZGVmYXVsdCwgQXByIDE4IDIwMTIsIDA5OjE5OjU5KQorICAgIFtHQ0MgNC42LjJdIG9uIGxpbnV4MgorICAgIFR5cGUgImhlbHAiLCAiY29weXJpZ2h0IiwgImNyZWRpdHMiIG9yICJsaWNlbnNlIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICA+Pj4gZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZworICAgID4+PiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCdJTkNMVURFUFknKQorICAgIFsnL09FL3Noci1jb3JlL3RtcC1lZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlL3B5dGhvbjIuNyddCisgICAgPj4+CisgICAgJCB1bnNldCBQWVRIT05QQVRICisgICAgJCBweXRob24KKyAgICBQeXRob24gMi43LjIgKGRlZmF1bHQsIEFwciAxOCAyMDEyLCAwOToxOTo1OSkKKyAgICBbR0NDIDQuNi4yXSBvbiBsaW51eDIKKyAgICBUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgPj4+IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKKyAgICA+Pj4gc3lzY29uZmlnLmdldF9jb25maWdfdmFycygnSU5DTFVERVBZJykKKyAgICBbJy9weXRob24yLjcnXQorICAgID4+PiBpbXBvcnQgc3lzY29uZmlnCisgICAgPj4+IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoJ0lOQ0xVREVQWScpCisgICAgWycvT0Uvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUvcHl0aG9uMi43J10KKyogcHl0aG9uX2xpYl9kaXIgPSBweXRob25fbGliX2Rpci5yZXBsYWNlKGVudlsnc3lzcm9vdCddLCAnJykKKyAgcmV0dXJucyBwYXRoIHRvIHRhcmdldCBzeXNyb290CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBldGVyIEEuIEJpZ290IDxwYWJAcGFiaWdvdC5jb20+CistLS0KKyBTQ29uc3RydWN0IHwgOSArKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9TQ29uc3RydWN0IGIvU0NvbnN0cnVjdAoraW5kZXggMzMxOGJiNDguLmUxYzRmOTYzIDEwMDY0NAorLS0tIGEvU0NvbnN0cnVjdAorKysrIGIvU0NvbnN0cnVjdAorQEAgLTkzNCw3ICs5MzQsNyBAQCBlbHNlOgorIAorICMgU2V0IHVwIGNvbmZpZ3VyYXRpb24gZm9yIHRhcmdldCBQeXRob24KKyAKKy1QWVRIT05fTElCRElSX0NBTEwgPSAnc3lzY29uZmlnLmdldF9weXRob25fbGliKCknCisrUFlUSE9OX0xJQkRJUl9DQUxMID0gJ3N5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTEpJworIAorIFBZVEhPTl9DT05GSUdfTkFNRVMgPSBbJ0NDJywgJ0NYWCcsICdPUFQnLCAnQkFTRUNGTEFHUycsCisgICAgICAgICAgICAgICAgICAgICAgICAnQ0NTSEFSRUQnLCAnTERTSEFSRUQnLCAnU08nLCAnSU5DTFVERVBZJywgJ0xERkxBR1MnXQorQEAgLTEzNjQsNyArMTM2NCw3IEBAIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBMSU5LPWxkc2hhcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgU0hMSUJQUkVGSVg9IiIsCisgICAgICAgICAgICAgICAgICAgICAgICBTSExJQlNVRkZJWD1weXRob25fY29uZmlnWydTTyddLAorLSAgICAgICAgICAgICAgICAgICAgICAgQ1BQUEFUSD1bcHl0aG9uX2NvbmZpZ1snSU5DTFVERVBZJ11dLAorKyAgICAgICAgICAgICAgICAgICAgICAgQ1BQUEFUSD1bb3MucGF0aC5ub3JtcGF0aCgiJXMvJXMvJXMvJXMiICUgKGVudlsnc3lzcm9vdCddLCBlbnZbJ3ByZWZpeCddLCBlbnZbJ2luY2x1ZGVkaXInXSwgcHl0aG9uX2NvbmZpZ1snSU5DTFVERVBZJ10pKV0gaWYgZW52WydzeXNyb290J10gZWxzZSBbcHl0aG9uX2NvbmZpZ1snSU5DTFVERVBZJ11dLAorICAgICAgICAgICAgICAgICAgICAgICAgQ1BQRkxBR1M9cHl0aG9uX2NvbmZpZ1snT1BUJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBDRkxBR1M9cHl0aG9uX2NvbmZpZ1snQkFTRUNGTEFHUyddLAorICAgICAgICAgICAgICAgICAgICAgICAgQ1hYRkxBR1M9cHl0aG9uX2NvbmZpZ1snQkFTRUNGTEFHUyddKQorQEAgLTE2NjIsMTIgKzE2NjIsMTUgQEAgaWYgKChub3QgZW52WydkZWJ1ZyddIGFuZCBub3QgZW52Wydwcm9maWxpbmcnXSBhbmQgbm90IGVudlsnbm9zdHJpcCddCisgaWYgbm90IGVudlsncHl0aG9uJ106CisgICAgIHB5dGhvbl9pbnN0YWxsID0gW10KKyBlbHNlOgorKyAgICBweXRob25fbGliZGlyID0gcHl0aG9uX2xpYmRpci5yZXBsYWNlKGVudlsnc3lzcm9vdCddLCAnJykKKyAgICAgcHl0aG9uX21vZHVsZV9kaXIgPSBweXRob25fbGliZGlyICsgb3Muc2VwICsgJ2dwcycKKyAgICAgcHl0aG9uX2V4dGVuc2lvbnNfaW5zdGFsbCA9IHB5dGhvbl9lbnYuSW5zdGFsbChERVNURElSICsgcHl0aG9uX21vZHVsZV9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uX2J1aWx0X2V4dGVuc2lvbnMpCisgICAgIGlmICgobm90IGVudlsnZGVidWcnXSBhbmQgbm90IGVudlsncHJvZmlsaW5nJ10KKyAgICAgICAgICBhbmQgbm90IGVudlsnbm9zdHJpcCddIGFuZCBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2RhcndpbicpKSk6CisgICAgICAgICBweXRob25fZW52LkFkZFBvc3RBY3Rpb24ocHl0aG9uX2V4dGVuc2lvbnNfaW5zdGFsbCwgJyRTVFJJUCAkVEFSR0VUJykKKysgICAgZW52LkFkZFBvc3RBY3Rpb24ocHl0aG9uX2V4dGVuc2lvbnNfaW5zdGFsbCwgJyRDSFJQQVRIIC1yICIlcyIgIiRUQVJHRVQiJyBcCisrICAgICAgICAgICAgICAgICAgICAgJSAocHl0aG9uX2xpYmRpciwgKSkKKyAKKyAgICAgcHl0aG9uX21vZHVsZXNfaW5zdGFsbCA9IHB5dGhvbl9lbnYuSW5zdGFsbChERVNURElSICsgcHl0aG9uX21vZHVsZV9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uX21vZHVsZXMpCistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTcvMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNy8wMDAxLWluY2x1ZGUtc3lzLXR0eWRlZmF1bHRzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkxZTRlOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTcvMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gZjIyMWZhOTU5YzgwYjQzYzY1NDI2NTAwYTY4MzZhMWI1Y2Y2ZmUwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE3IEF1ZyAyMDE2IDAyOjE2OjEyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3lzL3R0eWRlZmF1bHRzLmgKKworVGhpcyBpcyBuZWVkZWQgZm9yIENUUkwgZGVmaW5pdGlvbiwgYXMgZXhwb3NlZCBieSBtdXNsIG9uIGdsaWJjCit0aGlzIGluY2x1ZGUgZmlsZSBnZXRzIHB1bGxlZCBpbmRpcmVjdGx5LgorCisvdXNyL3NyYy9kZWJ1Zy9ncHNkLzMuMTQtcjAvZ3BzZC0zLjE0L2dwc21vbi5jOjYwNTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgQ1RSTCcKK2NsYW5nLTMuOTogZXJyb3I6IGxpbmtlciBjb21tYW5kIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAxICh1c2UgLXYgdG8gc2VlIGludm9jYXRpb24pCitzY29uczogKioqIFtncHNtb25dIEVycm9yIDEKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworRm9yZXdhcmQgcG9ydCB0byBncHNkIDMuMTYKK1NpZ25lZC1vZmYtYnk6IE1heCBLcnVtbWVuYWNoZXIgPG1heC5rcnVtbWVuYWNoZXJAdG9yYWRleC5jb20+CistLS0KKyBncHNtb24uYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZ3BzbW9uLmMgYi9ncHNtb24uYworaW5kZXggODljNDNlZTIuLjVjYzBkYWJkIDEwMDY0NAorLS0tIGEvZ3BzbW9uLmMKKysrKyBiL2dwc21vbi5jCitAQCAtMjQsNiArMjQsNyBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorKyNpbmNsdWRlIDxzeXMvdHR5ZGVmYXVsdHMuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCistLSAKKzIuMTIuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE3LzAwMDQtU0NvbnN0cnVjdC1kaXNhYmxlLWh0bWwtYW5kLW1hbi1kb2NzLWJ1aWxkaW5nLWJlY2F1cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTcvMDAwNC1TQ29uc3RydWN0LWRpc2FibGUtaHRtbC1hbmQtbWFuLWRvY3MtYnVpbGRpbmctYmVjYXVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhM2QyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE3LzAwMDQtU0NvbnN0cnVjdC1kaXNhYmxlLWh0bWwtYW5kLW1hbi1kb2NzLWJ1aWxkaW5nLWJlY2F1cy5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDY5N2UyZTlmZjk3NDg3MjY2ZDgxN2NkZDQxYmFjYzgzZjY4MWUzZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDI5IEFwciAyMDEyIDAwOjA1OjU5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBTQ29uc3RydWN0OiBkaXNhYmxlIGh0bWwgYW5kIG1hbiBkb2NzIGJ1aWxkaW5nIGJlY2F1c2UKKyB4bWx0by1uYXRpdmUgZnJvbSBPRSBpcyBicm9rZW4KKworSXQgd2lsbCB0cnkgdG8gbG9hZCBkdGQgYW5kIGZhaWw6Cit8IHhtbHRvIG1hbiBncHNjdGwueG1sOyBtdiBgYmFzZW5hbWUgZ3BzY3RsLjFgIGdwc2N0bC4xCit8IHhtbHRvOiAvdmFyL2xpYi9qZW5raW5zL2pvYnMvc2hyLWNvcmUtYnJhbmNoZXMvd29ya3NwYWNlL3Noci1jb3JlL3RtcC1lZ2xpYmMvd29yay9hcm12NHQtb2UtbGludXgtZ251ZWFiaS9ncHNkLTMuNC1yMi9ncHNkLTMuNC9ncHNjdGwueG1sIGRvZXMgbm90IHZhbGlkYXRlIChzdGF0dXMgMykKK3wgeG1sdG86IEZpeCBkb2N1bWVudCBzeW50YXggb3IgdXNlIC0tc2tpcC12YWxpZGF0aW9uIG9wdGlvbgorfCBJL08gZXJyb3IgOiBBdHRlbXB0IHRvIGxvYWQgbmV0d29yayBlbnRpdHkgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQKK3wgL3Zhci9saWIvamVua2lucy9qb2JzL3Noci1jb3JlLWJyYW5jaGVzL3dvcmtzcGFjZS9zaHItY29yZS90bXAtZWdsaWJjL3dvcmsvYXJtdjR0LW9lLWxpbnV4LWdudWVhYmkvZ3BzZC0zLjQtcjIvZ3BzZC0zLjQvZ3BzY3RsLnhtbDo4OiB3YXJuaW5nOiBmYWlsZWQgdG8gbG9hZCBleHRlcm5hbCBlbnRpdHkgImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4xLjIvZG9jYm9va3guZHRkIgorfCAgICAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiPgorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK3wgSS9PIGVycm9yIDogQXR0ZW1wdCB0byBsb2FkIG5ldHdvcmsgZW50aXR5IGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4xLjIvZG9jYm9va3guZHRkCit8IHdhcm5pbmc6IGZhaWxlZCB0byBsb2FkIGV4dGVybmFsIGVudGl0eSAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiCit8IHZhbGlkaXR5IGVycm9yIDogQ291bGQgbm90IGxvYWQgdGhlIGV4dGVybmFsIHN1YnNldCAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiCit8IERvY3VtZW50IC92YXIvbGliL2plbmtpbnMvam9icy9zaHItY29yZS1icmFuY2hlcy93b3Jrc3BhY2Uvc2hyLWNvcmUvdG1wLWVnbGliYy93b3JrL2FybXY0dC1vZS1saW51eC1nbnVlYWJpL2dwc2QtMy40LXIyL2dwc2QtMy40L2dwc2N0bC54bWwgZG9lcyBub3QgdmFsaWRhdGUKK3wgbXY6IGNhbm5vdCBzdGF0IGBncHNjdGwuMSc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK3wgc2NvbnM6ICoqKiBbZ3BzY3RsLjFdIEVycm9yIDEKK3wgc2NvbnM6IGJ1aWxkaW5nIHRlcm1pbmF0ZWQgYmVjYXVzZSBvZiBlcnJvcnMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzYWJsZSBmZWF0dXJlXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRlciBBLiBCaWdvdCA8cGFiQHBhYmlnb3QuY29tPgorLS0tCisgU0NvbnN0cnVjdCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9TQ29uc3RydWN0IGIvU0NvbnN0cnVjdAoraW5kZXggMzMxOGJiNDguLmE1YmI3NTZkIDEwMDY0NAorLS0tIGEvU0NvbnN0cnVjdAorKysrIGIvU0NvbnN0cnVjdAorQEAgLTg4OSwxMSArODg5LDExIEBAIGVsc2U6CisgCisgICAgIG1hbmJ1aWxkZXIgPSBodG1sYnVpbGRlciA9IE5vbmUKKyAgICAgaWYgZW52WydtYW5idWlsZCddOgorLSAgICAgICAgaWYgY29uZmlnLkNoZWNrWHNsdHByb2MoKToKKysgICAgICAgIGlmIEZhbHNlIGFuZCBjb25maWcuQ2hlY2tYc2x0cHJvYygpOgorICAgICAgICAgICAgIGJ1aWxkID0gInhzbHRwcm9jIC0tbm9uZXQgJXMgJFNPVVJDRSA+JFRBUkdFVCIKKyAgICAgICAgICAgICBodG1sYnVpbGRlciA9IGJ1aWxkICUgZG9jYm9va19odG1sX3VyaQorICAgICAgICAgICAgIG1hbmJ1aWxkZXIgPSBidWlsZCAlIGRvY2Jvb2tfbWFuX3VyaQorLSAgICAgICAgZWxpZiBXaGVyZUlzKCJ4bWx0byIpOgorKyAgICAgICAgZWxpZiBGYWxzZSBhbmQgV2hlcmVJcygieG1sdG8iKToKKyAgICAgICAgICAgICB4bWx0byA9ICJ4bWx0byAlcyAkU09VUkNFIHx8IG12IGBiYXNlbmFtZSAkVEFSR0VUYCAiIFwKKyAgICAgICAgICAgICAgICAgICAgICJgZGlybmFtZSAkVEFSR0VUYCIKKyAgICAgICAgICAgICBodG1sYnVpbGRlciA9IHhtbHRvICUgImh0bWwtbm9jaHVua3MiCistLSAKKzEuOC41LjUKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QvNjAtZ3BzZC5ydWxlcyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLzYwLWdwc2QucnVsZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxMTQzYjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QvNjAtZ3BzZC5ydWxlcworKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLSMgdWRldiBydWxlcyBmb3IgZ3BzZAotIyAkSWQkCi0jCi0jIEdQU2VzIGRvbid0IGhhdmUgdGhlaXIgb3duIFVTQiBkZXZpY2UgY2xhc3MuICBUaGV5J3JlIHNlcmlhbC1vdmVyLVVTQgotIyBkZXZpY2VzLCBzbyB3aGF0IHlvdSBzZWUgaXMgYWN0dWFsbHkgdGhlIElEIG9mIHRoZSBzZXJpYWwtb3Zlci1VU0IgY2hpcC4KLSMgRm9ydHVuYXRlbHksIGp1c3QgdHdvIG9mIHRoZXNlIGFjY291bnQgZm9yIG92ZXIgODAlIG9mIGNvbnN1bWVyLWdyYWRlCi0jIEdQUyBzZW5zb3JzLiAgVGhlIGdwc2QuaG90cGx1Zy53cmFwcGVyIHNjcmlwdCB3aWxsIHRlbGwgYSBydW5uaW5nIGdwc2QKLSMgdGhhdCBpdCBzaG91bGQgbG9vayBhdCB0aGUgZGV2aWNlIHRoYXQganVzdCB3ZW50IGFjdGl2ZSwgYmVjYXVzZSBpdAotIyBtaWdodCBiZSBhIEdQUy4KLSMKLSMgVGhlIGZvbGxvd2luZyBzZXR1cCB3b3JrcyBvbiBEZWJpYW4gLSBzb21ldGhpbmcgc2ltaWxhciB3aWxsIGFwcGx5IG9uIAotIyBvdGhlciBkaXN0cmlidXRpb25zOgotIyAKLSMgICAvZXRjL3VkZXYvZ3BzZC5ydWxlcwotIyAgIC9ldGMvdWRldi9ydWxlcy5kLzAyNV9ncHNkLnJ1bGVzIC0+IC4uL2dwc2QucnVsZXMKLSMgICAvbGliL3VkZXYvZ3BzZC5ob3RwbHVnLndyYXBwZXIKLSMgICAvbGliL3VkZXYvZ3BzZC5ob3RwbHVnCi0jIAotIyBTZXR0aW5nIHRoZSBsaW5rIGluIC9ldGMvdWRldi9ydWxlcy5kIGFjdGl2YXRlcyB0aGUgcnVsZSBhbmQgZGV0ZXJtaW5lcwotIyB3aGVuIHRvIHJ1biBpdCBvbiBib290IChzaW1pbGFyIHRvIGluaXQuZCBwcm9jZXNzaW5nKS4KLQotU1VCU1lTVEVNIT0idHR5IiwgR09UTz0iZ3BzZF9ydWxlc19lbmQiCi0KLSMgUHJvbGlmaWMgVGVjaG5vbG9neSwgSW5jLiBQTDIzMDMgU2VyaWFsIFBvcnQKLUFUVFJ7aWRWZW5kb3J9PT0iMDY3YiIsIEFUVFJ7aWRQcm9kdWN0fT09IjIzMDMiLCBTWU1MSU5LKz0iZ3BzJW4iLCBSVU4rPSIvbGliL3VkZXYvZ3BzZC5ob3RwbHVnLndyYXBwZXIiCi0jIEFURU4gSW50ZXJuYXRpb25hbCBDby4sIEx0ZCBVQy0yMzJBIFNlcmlhbCBQb3J0IFtwbDIzMDNdCi1BVFRSe2lkVmVuZG9yfT09IjA1NTciLCBBVFRSe2lkUHJvZHVjdH09PSIyMDA4IiwgU1lNTElOSys9ImdwcyVuIiwgUlVOKz0iL2xpYi91ZGV2L2dwc2QuaG90cGx1Zy53cmFwcGVyIgotIyBGVERJIDhVMjMyQU0KLUFUVFJ7aWRWZW5kb3J9PT0iMDQwMyIsIEFUVFJ7aWRQcm9kdWN0fT09IjYwMDEiLCBTWU1MSU5LKz0iZ3BzJW4iLCBSVU4rPSIvbGliL3VkZXYvZ3BzZC5ob3RwbHVnLndyYXBwZXIiCi0jIEN5cHJlc3MgTTgvQ1k3QzY0MDEzIChEZUxvcm1lIHVzZXMgdGhlc2UpCi1BVFRSe2lkVmVuZG9yfT09IjExNjMiLCBBVFRSe2lkUHJvZHVjdH09PSIwMTAwIiwgU1lNTElOSys9ImdwcyVuIiwgUlVOKz0iL2xpYi91ZGV2L2dwc2QuaG90cGx1Zy53cmFwcGVyIgotIyBQUy0zNjAgT0VNIChNaWNyb3NvZnQgR1BTIHNvbGQgd2l0aCBTdHJlZXQgYW5kIFRyaXBzIDIwMDUpCi1BVFRSe2lkVmVuZG9yfT09IjA2N2IiLCBBVFRSe2lkUHJvZHVjdH09PSJhYWEwIiwgU1lNTElOSys9ImdwcyVuIiwgUlVOKz0iL2xpYi91ZGV2L2dwc2QuaG90cGx1Zy53cmFwcGVyIgotIyBHYXJtaW4gSW50ZXJuYXRpb25hbCBHUFNtYXAsIHZhcmlvdXMgbW9kZWxzICh0ZXN0ZWQgd2l0aCBHYXJtaW4gR1BTIDE4IFVTQikKLUFUVFJ7aWRWZW5kb3J9PT0iMDkxZSIsIEFUVFJ7aWRQcm9kdWN0fT09IjAwMDMiLCBTWU1MSU5LKz0iZ3BzJW4iLCBSVU4rPSIvbGliL3VkZXYvZ3BzZC5ob3RwbHVnLndyYXBwZXIiCi0jIEN5Z25hbCBJbnRlZ3JhdGVkIFByb2R1Y3RzLCBJbmMuIENQMjEweCBDb21wb3NpdGUgRGV2aWNlIChVc2VkIGJ5IEhvbHV4IG0yNDEpCi1BVFRSe2lkVmVuZG9yfT09IjEwYzQiLCBBVFRSe2lkUHJvZHVjdH09PSJlYTYwIiwgU1lNTElOSys9ImdwcyVuIiwgUlVOKz0iL2xpYi91ZGV2L2dwc2QuaG90cGx1Zy53cmFwcGVyIgotIyB1LWJsb3ggQUcsIHUtYmxveCA1ICh0ZXN0ZWQgd2l0aCBOYXZpbG9jayBOTC00MDJVKQotQVRUUntpZFZlbmRvcn09PSIxNTQ2IiwgQVRUUntpZFByb2R1Y3R9PT0iMDFhNSIsIFNZTUxJTks9ImdwcyVuIiwgUlVOKz0iL2xpYi91ZGV2L2dwc2QuaG90cGx1Zy53cmFwcGVyIgotIyBGVERJIEZUMjMyCi1BVFRSe2lkVmVuZG9yfT09IjA0MDMiLCBBVFRSe2lkUHJvZHVjdH09PSI2MDAxIiwgU1lNTElOSz0iZ3BzJW4iLCBSVU4rPSIvbGliL3VkZXYvZ3BzZC5ob3RwbHVnLndyYXBwZXIiCi0jIHUtYmxveCA0Ci1BVFRSe2lkVmVuZG9yfT09IjE1NDYiLCBBVFRSe2lkUHJvZHVjdH09PSIwMWE0IiwgU1lNTElOSz0iZ3BzJW4iLCBSVU4rPSIvbGliL3VkZXYvZ3BzZC5ob3RwbHVnLndyYXBwZXIiCi0KLUFDVElPTj09InJlbW92ZSIsIFJVTis9Ii9saWIvdWRldi9ncHNkLmhvdHBsdWcud3JhcHBlciIKLQotTEFCRUw9Imdwc2RfcnVsZXNfZW5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QvZ3BzZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkL2dwc2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJhNzNkYWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QvZ3BzZAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0jIS9iaW4vc2gKLSMjIyBCRUdJTiBJTklUIElORk8KLSMgUHJvdmlkZXM6ICAgICAgICAgIGdwc2QKLSMgUmVxdWlyZWQtU3RhcnQ6ICAgICRyZW1vdGVfZnMgJG5ldHdvcmsKLSMgU2hvdWxkLVN0YXJ0OiAgICAgIGJsdWV0b290aCBkYnVzIHVkZXYKLSMgUmVxdWlyZWQtU3RvcDogICAgICRyZW1vdGVfZnMgJG5ldHdvcmsKLSMgRGVmYXVsdC1TdGFydDogICAgIDIgMyA0IDUKLSMgRGVmYXVsdC1TdG9wOiAgICAgIDAgMSA2Ci0jIFNob3J0LURlc2NyaXB0aW9uOiBHUFMgKEdsb2JhbCBQb3NpdGlvbmluZyBTeXN0ZW0pIGRhZW1vbiBzdGFydC9zdG9wIHNjcmlwdAotIyBEZXNjcmlwdGlvbjogICAgICAgU3RhcnQvU3RvcCBzY3JpcHQgZm9yIHRoZSBncHNkIHNlcnZpY2UgZGFlbW9uLAotIyAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYWJsZSB0byBtb25pdG9yIG9uZSBvciBtb3JlIEdQUyBkZXZpY2VzCi0jICAgICAgICAgICAgICAgICAgICBjb25uZWN0ZWQgdG8gYSBob3N0IGNvbXB1dGVyLCBtYWtpbmcgYWxsIGRhdGEgb24KLSMgICAgICAgICAgICAgICAgICAgIHRoZSBsb2NhdGlvbiBhbmQgbW92ZW1lbnRzIG9mIHRoZSBzZW5zb3JzIGF2YWlsYWJsZQotIyAgICAgICAgICAgICAgICAgICAgdG8gYmUgcXVlcmllZCBvbiBUQ1AgcG9ydCAyOTQ3LgotIyMjIEVORCBJTklUIElORk8KLQotIyBBdXRob3I6IEJlcm5kIFplaW1ldHogPGJ6ZWRAZGViaWFuLm9yZz4KLSMKLSMgUGxlYXNlIHJlbW92ZSB0aGUgIkF1dGhvciIgbGluZXMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbQotIyB3aXRoIHlvdXIgb3duIG5hbWUgaWYgeW91IGNvcHkgYW5kIG1vZGlmeSB0aGlzIHNjcmlwdC4KLQotIyBEbyBOT1QgInNldCAtZSIKLQotIyBQQVRIIHNob3VsZCBvbmx5IGluY2x1ZGUgL3Vzci8qIGlmIGl0IHJ1bnMgYWZ0ZXIgdGhlIG1vdW50bmZzLnNoIHNjcmlwdAotUEFUSD0vc2JpbjovdXNyL3NiaW46L2JpbjovdXNyL2JpbgotREVTQz0iR1BTIChHbG9iYWwgUG9zaXRpb25pbmcgU3lzdGVtKSBkYWVtb24iCi1OQU1FPWdwc2QKLURBRU1PTj0vdXNyL3NiaW4vJE5BTUUKLVBJREZJTEU9L3Zhci9ydW4vJE5BTUUucGlkCi1TQ1JJUFROQU1FPS9ldGMvaW5pdC5kLyROQU1FCi0KLSMgRXhpdCBpZiB0aGUgcGFja2FnZSBpcyBub3QgaW5zdGFsbGVkCi1bIC14ICIkREFFTU9OIiBdIHx8IGV4aXQgMAotCi0jIFJlYWQgY29uZmlndXJhdGlvbiwgaWYgcHJlc2VudAotWyAtciAvZXRjL2RlZmF1bHQvJE5BTUUgXSAmJiAuIC9ldGMvZGVmYXVsdC8kTkFNRQotCi1pZiBbIC16ICIkR1BTRF9TT0NLRVQiIF0gJiYgWyAteiAiJERFVklDRVMiIF07IHRoZW4KLQlHUFNEX1NPQ0tFVD0vdmFyL3J1bi9ncHNkLnNvY2sKLWZpCi0KLWlmIFsgLW4gIiRHUFNEX1NPQ0tFVCIgXTsgdGhlbgotICAgICAgICBHUFNEX09QVElPTlM9IiRHUFNEX09QVElPTlMgLUYgJEdQU0RfU09DS0VUIgotZmkKLQotIwotIyBGdW5jdGlvbiB0aGF0IHN0YXJ0cyB0aGUgZGFlbW9uL3NlcnZpY2UKLSMKLWRvX3N0YXJ0KCkKLXsKLQkjIFJldHVybgotCSMgICAwIGlmIGRhZW1vbiBoYXMgYmVlbiBzdGFydGVkCi0JIyAgIDEgaWYgZGFlbW9uIHdhcyBhbHJlYWR5IHJ1bm5pbmcKLQkjICAgMiBpZiBkYWVtb24gY291bGQgbm90IGJlIHN0YXJ0ZWQKLQlzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1waWRmaWxlICRQSURGSUxFIC0tZXhlYyAkREFFTU9OIC0tdGVzdCBcCi0gICAgICAgIC0tICRHUFNEX09QVElPTlMgLVAgJFBJREZJTEUgJEdQU19ERVZJQ0VTID4gL2Rldi9udWxsIFwKLQkJfHwgcmV0dXJuIDEKLQlzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1waWRmaWxlICRQSURGSUxFIC0tZXhlYyAkREFFTU9OIC0tIFwKLQkJJEdQU0RfT1BUSU9OUyAtUCAkUElERklMRSAkR1BTX0RFVklDRVMgXAotCQl8fCByZXR1cm4gMgotfQotCi0jCi0jIEZ1bmN0aW9uIHRoYXQgc3RvcHMgdGhlIGRhZW1vbi9zZXJ2aWNlCi0jCi1kb19zdG9wKCkKLXsKLQkjIFJldHVybgotCSMgICAwIGlmIGRhZW1vbiBoYXMgYmVlbiBzdG9wcGVkCi0JIyAgIDEgaWYgZGFlbW9uIHdhcyBhbHJlYWR5IHN0b3BwZWQKLQkjICAgMiBpZiBkYWVtb24gY291bGQgbm90IGJlIHN0b3BwZWQKLQkjICAgb3RoZXIgaWYgYSBmYWlsdXJlIG9jY3VycmVkCi0Jc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1yZXRyeT1URVJNLzMwL0tJTEwvNSAtLXBpZGZpbGUgJFBJREZJTEUgLS1uYW1lICROQU1FCi0JUkVUVkFMPSIkPyIKLQlbICIkUkVUVkFMIiA9IDIgXSAmJiByZXR1cm4gMgotCSMgTWFueSBkYWVtb25zIGRvbid0IGRlbGV0ZSB0aGVpciBwaWRmaWxlcyB3aGVuIHRoZXkgZXhpdC4KLQlybSAtZiAkUElERklMRQotCXJldHVybiAiJFJFVFZBTCIKLX0KLQotIwotIyBGdW5jdGlvbiB0aGF0IHNlbmRzIGEgU0lHSFVQIHRvIHRoZSBkYWVtb24vc2VydmljZQotIwotZG9fcmVsb2FkKCkgewotCSMKLQkjIElmIHRoZSBkYWVtb24gY2FuIHJlbG9hZCBpdHMgY29uZmlndXJhdGlvbiB3aXRob3V0Ci0JIyByZXN0YXJ0aW5nIChmb3IgZXhhbXBsZSwgd2hlbiBpdCBpcyBzZW50IGEgU0lHSFVQKSwKLQkjIHRoZW4gaW1wbGVtZW50IHRoYXQgaGVyZS4KLQkjCi0Jc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tc2lnbmFsIDEgLS1xdWlldCAtLXBpZGZpbGUgJFBJREZJTEUgLS1uYW1lICROQU1FCi0JcmV0dXJuIDAKLX0KLQotY2FzZSAiJDEiIGluCi0gIHN0YXJ0KQotCQllY2hvICJTdGFydGluZyAkREVTQyIgIiROQU1FIgotCQlkb19zdGFydAotCQlleGl0ICQ/Ci0JOzsKLSAgc3RvcCkKLQllY2hvICJTdG9wcGluZyAkREVTQyIgIiROQU1FIgotCWRvX3N0b3AKLQlleGl0ICQ/Ci0JOzsKLSAgc3RhdHVzKQotICAgICAgIDs7Ci0gIHJlbG9hZHxmb3JjZS1yZWxvYWQpCi0JZWNobyAiUmVsb2FkaW5nICRERVNDIiAiJE5BTUUiCi0JZG9fcmVsb2FkCi0JZXhpdCAkPwotCTs7Ci0gIHJlc3RhcnQpCi0JIwotCSMgSWYgdGhlICJyZWxvYWQiIG9wdGlvbiBpcyBpbXBsZW1lbnRlZCB0aGVuIHJlbW92ZSB0aGUKLQkjICdmb3JjZS1yZWxvYWQnIGFsaWFzCi0JIwotCWVjaG8gIlJlc3RhcnRpbmcgJERFU0MiICIkTkFNRSIKLQlkb19zdG9wCi0JY2FzZSAiJD8iIGluCi0JICAwfDEpCi0JCWRvX3N0YXJ0Ci0JCWV4aXQgJD8KLQkJOzsKLQkgICopCi0JIAkjIEZhaWxlZCB0byBzdG9wCi0JCWV4aXQgMQotCQk7OwotCWVzYWMKLQk7OwotICAqKQotCWVjaG8gIlVzYWdlOiAkU0NSSVBUTkFNRSB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxmb3JjZS1yZWxvYWR9IiA+JjIKLQlleGl0IDMKLQk7OwotZXNhYwotCi06CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC9ncHNkLWRlZmF1bHQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC9ncHNkLWRlZmF1bHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZWZmMDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QvZ3BzZC1kZWZhdWx0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jIElmIHlvdSBtdXN0IHNwZWNpZnkgYSBub24tTk1FQSBkcml2ZXIsIHVuY29tbWVudCBhbmQgbW9kaWZ5IHRoZSBuZXh0IGxpbmUKLUdQU0RfU09DS0VUPSIvdmFyL3J1bi9ncHNkLnNvY2siCi1HUFNEX09QVElPTlM9IiIgCi1HUFNfREVWSUNFUz0iIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC9ncHNkLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC9ncHNkLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMzFhNTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QvZ3BzZC5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1HUFMgKEdsb2JhbCBQb3NpdGlvbmluZyBTeXN0ZW0pIERhZW1vbgotUmVxdWlyZXM9Z3BzZC5zb2NrZXQKLQotW1NlcnZpY2VdCi1FbnZpcm9ubWVudEZpbGU9L2V0Yy9kZWZhdWx0L2dwc2QKLUV4ZWNTdGFydD0vdXNyL3NiaW4vZ3BzZCAtTiAkR1BTX0RFVklDRVMKLQotW0luc3RhbGxdCi1BbHNvPWdwc2Quc29ja2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZkNzQ4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLVNVTU1BUlkgPSAiQSBUQ1AvSVAgRGFlbW9uIHNpbXBsaWZ5aW5nIHRoZSBjb21tdW5pY2F0aW9uIHdpdGggR1BTIGRldmljZXMiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDIxN2EyM2Y0MDhlOTFjOTQzNTk0NDc3MzViYzE4MDAiCi1ERVBFTkRTID0gImRidXMgZGJ1cy1nbGliIG5jdXJzZXMgcHl0aG9uIGxpYnVzYjEgY2hycGF0aC1yZXBsYWNlbWVudC1uYXRpdmUgcHBzLXRvb2xzIgotUFJPVklERVMgPSAidmlydHVhbC9ncHNkIgotCi1FWFRSQU5BVElWRVBBVEggKz0gImNocnBhdGgtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiBcCi0gICAgZmlsZTovLzAwMDEtU0NvbnN0cnVjdC1wcmVmaXgtaW5jbHVkZXB5LXdpdGgtc3lzcm9vdC1hbmQtZHJvcC1zeS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtU0NvbnN0cnVjdC1kaXNhYmxlLWh0bWwtYW5kLW1hbi1kb2NzLWJ1aWxkaW5nLWJlY2F1cy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaCBcCi0gICAgZmlsZTovL2dwc2QtZGVmYXVsdCBcCi0gICAgZmlsZTovL2dwc2QgXAotICAgIGZpbGU6Ly82MC1ncHNkLnJ1bGVzIFwKLSAgICBmaWxlOi8vZ3BzZC5zZXJ2aWNlIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ODY5MWI1ZGU0Yzk0ZjgyZWM0MDYyYjA0MmI1ZWI2MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMzU3OWFmMTNhNGQzZmUwYzViNzlmYTQ0YjVmNzVjOWYzY2FjNjc0OTM1N2YxZDk5Y2U1ZDM4YzA5YmMyMDI5IgotCi1pbmhlcml0IHNjb25zIHVwZGF0ZS1yYy5kIHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlIHN5c3RlbWQgYmx1ZXRvb3RoIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJncHNkLWNvbmYiCi1JTklUU0NSSVBUX05BTUUgPSAiZ3BzZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDM1IgotCi1TWVNURU1EX09FU0NPTlMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLGQpfSIKLQotZXhwb3J0IFNUQUdJTkdfSU5DRElSCi1leHBvcnQgU1RBR0lOR19MSUJESVIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImJsdWV6PSd0cnVlJyxibHVlej0nZmFsc2UnLCR7QkxVRVp9IgotUEFDS0FHRUNPTkZJR1txdF0gPSAicXQ9J3llcycscXQ9J25vJyxxdDQteDExLWZyZWUiCi1FWFRSQV9PRVNDT05TID0gIiBcCi0gICAgc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAotICAgIGxpYlFncHNtbT0nZmFsc2UnIFwKLSAgICBkZWJ1Zz0ndHJ1ZScgXAotICAgIHN0cmlwPSdmYWxzZScgXAotICAgIGNocnBhdGg9J3llcycgXAotICAgIHN5c3RlbWQ9JyR7U1lTVEVNRF9PRVNDT05TfScgXAotICAgIGxpYmRpcj0nJHtsaWJkaXJ9JyBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCi0iCi0jIHRoaXMgY2Fubm90IGJlIHVzZWQsIGJlY2F1c2UgdGhlbiBjaHJwYXRoIGlzIG5vdCBmb3VuZCBhbmQgb25seSBzdGF0aWMgbGliIGlzIGJ1aWx0Ci0jIHRhcmdldD0ke0hPU1RfU1lTfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IFBLR19DT05GSUdfUEFUSD0iJHtQS0dfQ09ORklHX1BBVEh9IgotICAgIGV4cG9ydCBQS0dfQ09ORklHPSJQS0dfQ09ORklHX1NZU1JPT1RfRElSPVwiJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfVwiIHBrZy1jb25maWciCi0gICAgZXhwb3J0IFNUQUdJTkdfUFJFRklYPSIke1NUQUdJTkdfRElSX0hPU1R9LyR7cHJlZml4fSIKLSAgICBleHBvcnQgTElOS0ZMQUdTPSIke0xERkxBR1N9IgotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGV4cG9ydCBQS0dfQ09ORklHX1BBVEg9IiR7UEtHX0NPTkZJR19QQVRIfSIKLSAgICBleHBvcnQgUEtHX0NPTkZJRz0iUEtHX0NPTkZJR19TWVNST09UX0RJUj1cIiR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1cIiBwa2ctY29uZmlnIgotICAgIGV4cG9ydCBTVEFHSU5HX1BSRUZJWD0iJHtTVEFHSU5HX0RJUl9IT1NUfS8ke3ByZWZpeH0iCi0gICAgZXhwb3J0IExJTktGTEFHUz0iJHtMREZMQUdTfSIKLQotICAgIGV4cG9ydCBERVNURElSPSIke0R9IgotICAgICMgcHJlZml4IGlzIHVzZWQgZm9yIFJQQVRIIGFuZCBERVNURElSL3ByZWZpeCBmb3IgaW5zdGFsYXRpb24KLSAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vc2NvbnMgcHJlZml4PSR7cHJlZml4fSBpbnN0YWxsICR7RVhUUkFfT0VTQ09OU318fCBcCi0gICAgICBiYmZhdGFsICJzY29ucyBpbnN0YWxsIGV4ZWN1dGlvbiBmYWlsZWQuIgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9ncHNkICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2dwc2QtZGVmYXVsdCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC9ncHNkLmRlZmF1bHQKLQotICAgICNzdXBwb3J0IGZvciB1ZGV2Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vNjAtZ3BzZC5ydWxlcyAke0R9LyR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9ncHNkLmhvdHBsdWcgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvCi0KLSAgICAjc3VwcG9ydCBmb3IgcHl0aG9uCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2dwcwotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vZ3BzLyoucHkgJHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ncHMKLQotICAgICNzdXBwb3J0IGZvciBzeXN0ZW1kCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn0uc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn0uc2VydmljZQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3N5c3RlbWQvJHtCUE59LnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn0uc29ja2V0Ci19Ci0KLVBBQ0tBR0VTID0rICJsaWJncHMgbGliZ3BzZCBweXRob24tcHlncHMtZGJnIHB5dGhvbi1weWdwcyBncHNkLXVkZXYgZ3BzZC1jb25mIGdwc2QtZ3BzY3RsIGdwcy11dGlscyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmRpci9saWJncHNkLnBjICR7bGliZGlyfS9wa2djb25mZGlyL2xpYmdwcy5wYyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJRZ3BzbW0ucHJsIgotCi1GSUxFU19weXRob24tcHlncHMtZGJnICs9ICIgJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9ncHMvLmRlYnVnIgotCi1SREVQRU5EU18ke1BOfSA9ICJncHNkLWdwc2N0bCIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImdwc2QtY29uZiBncHNkLXVkZXYgZ3BzZC1tYWNoaW5lLWNvbmYiCi0KLVNVTU1BUllfZ3BzZC11ZGV2ID0gInVkZXYgcmVsZXZhbnQgZmlsZXMgdG8gdXNlIGdwc2QgaG90cGx1Z2dpbmciCi1GSUxFU19ncHNkLXVkZXYgPSAiJHtiYXNlX2xpYmRpcn0vdWRldiAke3N5c2NvbmZkaXJ9L3VkZXYvKiIKLVJERVBFTkRTX2dwc2QtdWRldiArPSAidWRldiBncHNkLWNvbmYiCi0KLVNVTU1BUllfbGliZ3BzZCA9ICJDIHNlcnZpY2UgbGlicmFyeSB1c2VkIGZvciBjb21tdW5pY2F0aW5nIHdpdGggZ3BzZCIKLUZJTEVTX2xpYmdwc2QgPSAiJHtsaWJkaXJ9L2xpYmdwc2Quc28uKiIKLQotU1VNTUFSWV9saWJncHMgPSAiQyBzZXJ2aWNlIGxpYnJhcnkgdXNlZCBmb3IgY29tbXVuaWNhdGluZyB3aXRoIGdwc2QiCi1GSUxFU19saWJncHMgPSAiJHtsaWJkaXJ9L2xpYmdwcy5zby4qIgotCi1TVU1NQVJZX2dwc2QtY29uZiA9ICJncHNkIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGluaXQgc2NyaXB0cyIKLUZJTEVTX2dwc2QtY29uZiA9ICIke3N5c2NvbmZkaXJ9IgotQ09ORkZJTEVTX2dwc2QtY29uZiA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZ3BzZC5kZWZhdWx0IgotCi1TVU1NQVJZX2dwc2QtZ3BzY3RsID0gIlRvb2wgZm9yIHR3ZWFraW5nIEdQUyBtb2RlcyIKLUZJTEVTX2dwc2QtZ3BzY3RsID0gIiR7YmluZGlyfS9ncHNjdGwiCi0KLVNVTU1BUllfZ3BzLXV0aWxzID0gIlV0aWxzIHVzZWQgZm9yIHNpbXVsYXRpbmcsIG1vbml0b3JpbmcsLi4uIGEgR1BTIgotRklMRVNfZ3BzLXV0aWxzID0gIiR7YmluZGlyfS8qIgotUkRFUEVORFNfZ3BzLXV0aWxzID0gInB5dGhvbi1weWdwcyIKLQotU1VNTUFSWV9weXRob24tcHlncHMgPSAiUHl0aG9uIGJpbmRpbmdzIHRvIGdwc2QiCi1GSUxFU19weXRob24tcHlncHMgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLVJERVBFTkRTX3B5dGhvbi1weWdwcyA9ICIgXAotICAgIHB5dGhvbi1jb3JlIFwKLSAgICBweXRob24taW8gXAotICAgIHB5dGhvbi10aHJlYWRpbmcgXAotICAgIHB5dGhvbi10ZXJtaW5hbCBcCi0gICAgcHl0aG9uLWN1cnNlcyBcCi0gICAgZ3BzZCBcCi0gICAgcHl0aG9uLWpzb24iCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtQTn0uc29ja2V0IgotCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImdwc2QtZGVmYXVsdHMiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZ3BzZC1kZWZhdWx0c10gPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L2dwc2QiCi1BTFRFUk5BVElWRV9UQVJHRVRbZ3BzZC1kZWZhdWx0c10gPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L2dwc2QuZGVmYXVsdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkXzMuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MjZkYjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE3LmJiCkBAIC0wLDAgKzEsMTM3IEBACitTVU1NQVJZID0gIkEgVENQL0lQIERhZW1vbiBzaW1wbGlmeWluZyB0aGUgY29tbXVuaWNhdGlvbiB3aXRoIEdQUyBkZXZpY2VzIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQyMTdhMjNmNDA4ZTkxYzk0MzU5NDQ3NzM1YmMxODAwIgorREVQRU5EUyA9ICJkYnVzIGRidXMtZ2xpYiBuY3Vyc2VzIHB5dGhvbiBsaWJ1c2IxIGNocnBhdGgtcmVwbGFjZW1lbnQtbmF0aXZlIHBwcy10b29scyIKK1BST1ZJREVTID0gInZpcnR1YWwvZ3BzZCIKKworRVhUUkFOQVRJVkVQQVRIICs9ICJjaHJwYXRoLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LVNDb25zdHJ1Y3QtZGlzYWJsZS1odG1sLWFuZC1tYW4tZG9jcy1idWlsZGluZy1iZWNhdXMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR0eWRlZmF1bHRzLmgucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImUwY2ZhZGNmNGE2NWRmYmRkMmFmYjExYzU4ZjRlNGExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4ZTBkYmVjZmI1ODMxOTk3ZjhiM2Q2YmE0OGFlZDgxMmViNDY1ZDhjMDA4OTQyMGFiNjhmOWNlNGQ4NWU3N2EiCisKK2luaGVyaXQgc2NvbnMgdXBkYXRlLXJjLmQgcHl0aG9uLWRpciBweXRob25uYXRpdmUgc3lzdGVtZCBibHVldG9vdGggdXBkYXRlLWFsdGVybmF0aXZlcworCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gImdwc2QtY29uZiIKK0lOSVRTQ1JJUFRfTkFNRSA9ICJncHNkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgMzUiCisKK1NZU1RFTURfT0VTQ09OUyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsZCl9IgorCitleHBvcnQgU1RBR0lOR19JTkNESVIKK2V4cG9ydCBTVEFHSU5HX0xJQkRJUgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tibHVlel0gPSAiYmx1ZXo9J3RydWUnLGJsdWV6PSdmYWxzZScsJHtCTFVFWn0iCitQQUNLQUdFQ09ORklHW3F0XSA9ICJxdD0neWVzJyxxdD0nbm8nLHF0NC14MTEtZnJlZSIKK0VYVFJBX09FU0NPTlMgPSAiIFwKKyAgICBzeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSBcCisgICAgbGliUWdwc21tPSdmYWxzZScgXAorICAgIGRlYnVnPSd0cnVlJyBcCisgICAgc3RyaXA9J2ZhbHNlJyBcCisgICAgY2hycGF0aD0neWVzJyBcCisgICAgc3lzdGVtZD0nJHtTWVNURU1EX09FU0NPTlN9JyBcCisgICAgbGliZGlyPScke2xpYmRpcn0nIFwKKyAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKKyIKKyMgdGhpcyBjYW5ub3QgYmUgdXNlZCwgYmVjYXVzZSB0aGVuIGNocnBhdGggaXMgbm90IGZvdW5kIGFuZCBvbmx5IHN0YXRpYyBsaWIgaXMgYnVpbHQKKyMgdGFyZ2V0PSR7SE9TVF9TWVN9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgUEtHX0NPTkZJR19QQVRIPSIke1BLR19DT05GSUdfUEFUSH0iCisgICAgZXhwb3J0IFBLR19DT05GSUc9IlBLR19DT05GSUdfU1lTUk9PVF9ESVI9XCIke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9XCIgcGtnLWNvbmZpZyIKKyAgICBleHBvcnQgU1RBR0lOR19QUkVGSVg9IiR7U1RBR0lOR19ESVJfSE9TVH0vJHtwcmVmaXh9IgorICAgIGV4cG9ydCBMSU5LRkxBR1M9IiR7TERGTEFHU30iCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgZXhwb3J0IFBLR19DT05GSUdfUEFUSD0iJHtQS0dfQ09ORklHX1BBVEh9IgorICAgIGV4cG9ydCBQS0dfQ09ORklHPSJQS0dfQ09ORklHX1NZU1JPT1RfRElSPVwiJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfVwiIHBrZy1jb25maWciCisgICAgZXhwb3J0IFNUQUdJTkdfUFJFRklYPSIke1NUQUdJTkdfRElSX0hPU1R9LyR7cHJlZml4fSIKKyAgICBleHBvcnQgTElOS0ZMQUdTPSIke0xERkxBR1N9IgorCisgICAgZXhwb3J0IERFU1RESVI9IiR7RH0iCisgICAgIyBwcmVmaXggaXMgdXNlZCBmb3IgUlBBVEggYW5kIERFU1RESVIvcHJlZml4IGZvciBpbnN0YWxhdGlvbgorICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9zY29ucyBwcmVmaXg9JHtwcmVmaXh9IGluc3RhbGwgJHtFWFRSQV9PRVNDT05TfXx8IFwKKyAgICAgIGJiZmF0YWwgInNjb25zIGluc3RhbGwgZXhlY3V0aW9uIGZhaWxlZC4iCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3BhY2thZ2luZy9kZWIvZXRjX2luaXQuZF9ncHNkICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvZ3BzZAorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9wYWNrYWdpbmcvZGViL2V0Y19kZWZhdWx0X2dwc2QgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZ3BzZC5kZWZhdWx0CisKKyAgICAjc3VwcG9ydCBmb3IgdWRldgorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZAorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2dwc2QucnVsZXMgJHtEfS8ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KKyAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2LworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2dwc2QuaG90cGx1ZyAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi8KKworICAgICNzdXBwb3J0IGZvciBweXRob24KKyAgICBpbnN0YWxsIC1kICR7RH0vJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vZ3BzCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9ncHMvKi5weSAke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2dwcworCisgICAgI3N1cHBvcnQgZm9yIHN5c3RlbWQKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3N5c3RlbWQvJHtCUE59LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59LnNlcnZpY2UKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zeXN0ZW1kLyR7QlBOfWN0bEAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn1jdGxALnNlcnZpY2UKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zeXN0ZW1kLyR7QlBOfS5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59LnNvY2tldAorfQorCitQQUNLQUdFUyA9KyAibGliZ3BzIGxpYmdwc2QgcHl0aG9uLXB5Z3BzLWRiZyBweXRob24tcHlncHMgZ3BzZC11ZGV2IGdwc2QtY29uZiBncHNkLWdwc2N0bCBncHMtdXRpbHMiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BrZ2NvbmZkaXIvbGliZ3BzZC5wYyAke2xpYmRpcn0vcGtnY29uZmRpci9saWJncHMucGMgXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliUWdwc21tLnBybCIKKworRklMRVNfcHl0aG9uLXB5Z3BzLWRiZyArPSAiICR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvZ3BzLy5kZWJ1ZyIKKworUkRFUEVORFNfJHtQTn0gPSAiZ3BzZC1ncHNjdGwiCitSUkVDT01NRU5EU18ke1BOfSA9ICJncHNkLWNvbmYgZ3BzZC11ZGV2IGdwc2QtbWFjaGluZS1jb25mIgorCitTVU1NQVJZX2dwc2QtdWRldiA9ICJ1ZGV2IHJlbGV2YW50IGZpbGVzIHRvIHVzZSBncHNkIGhvdHBsdWdnaW5nIgorRklMRVNfZ3BzZC11ZGV2ID0gIiR7YmFzZV9saWJkaXJ9L3VkZXYgJHtzeXNjb25mZGlyfS91ZGV2LyoiCitSREVQRU5EU19ncHNkLXVkZXYgKz0gInVkZXYgZ3BzZC1jb25mIgorCitTVU1NQVJZX2xpYmdwc2QgPSAiQyBzZXJ2aWNlIGxpYnJhcnkgdXNlZCBmb3IgY29tbXVuaWNhdGluZyB3aXRoIGdwc2QiCitGSUxFU19saWJncHNkID0gIiR7bGliZGlyfS9saWJncHNkLnNvLioiCisKK1NVTU1BUllfbGliZ3BzID0gIkMgc2VydmljZSBsaWJyYXJ5IHVzZWQgZm9yIGNvbW11bmljYXRpbmcgd2l0aCBncHNkIgorRklMRVNfbGliZ3BzID0gIiR7bGliZGlyfS9saWJncHMuc28uKiIKKworU1VNTUFSWV9ncHNkLWNvbmYgPSAiZ3BzZCBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBpbml0IHNjcmlwdHMiCitGSUxFU19ncHNkLWNvbmYgPSAiJHtzeXNjb25mZGlyfSIKK0NPTkZGSUxFU19ncHNkLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L2dwc2QuZGVmYXVsdCIKKworU1VNTUFSWV9ncHNkLWdwc2N0bCA9ICJUb29sIGZvciB0d2Vha2luZyBHUFMgbW9kZXMiCitGSUxFU19ncHNkLWdwc2N0bCA9ICIke2JpbmRpcn0vZ3BzY3RsIgorCitTVU1NQVJZX2dwcy11dGlscyA9ICJVdGlscyB1c2VkIGZvciBzaW11bGF0aW5nLCBtb25pdG9yaW5nLC4uLiBhIEdQUyIKK0ZJTEVTX2dwcy11dGlscyA9ICIke2JpbmRpcn0vKiIKK1JERVBFTkRTX2dwcy11dGlscyA9ICJweXRob24tcHlncHMiCisKK1NVTU1BUllfcHl0aG9uLXB5Z3BzID0gIlB5dGhvbiBiaW5kaW5ncyB0byBncHNkIgorRklMRVNfcHl0aG9uLXB5Z3BzID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitSREVQRU5EU19weXRob24tcHlncHMgPSAiIFwKKyAgICBweXRob24tY29yZSBcCisgICAgcHl0aG9uLWlvIFwKKyAgICBweXRob24tdGhyZWFkaW5nIFwKKyAgICBweXRob24tdGVybWluYWwgXAorICAgIHB5dGhvbi1jdXJzZXMgXAorICAgIGdwc2QgXAorICAgIHB5dGhvbi1qc29uIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfS5zb2NrZXQgJHtCUE59Y3RsQC5zZXJ2aWNlIgorCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImdwc2QtZGVmYXVsdHMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ3BzZC1kZWZhdWx0c10gPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L2dwc2QiCitBTFRFUk5BVElWRV9UQVJHRVRbZ3BzZC1kZWZhdWx0c10gPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L2dwc2QuZGVmYXVsdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vb3JyZXJ5L29ycmVyeV8yLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL29ycmVyeS9vcnJlcnlfMi43LmJiCmluZGV4IDFhMDBiMDguLjAxMGY2NWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vb3JyZXJ5L29ycmVyeV8yLjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9vcnJlcnkvb3JyZXJ5XzIuNy5iYgpAQCAtNSw3ICs1LDkgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL29ycmVyeS5jO2VuZGxpbmU9MjU7bWQ1PWQ3OTJiZGYyYjU5MTk3MmRhMTc1YWVjYzM4ZDg4Y2ZlIgogREVQRU5EUyA9ICJndGsrIgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBTUkNfVVJJID0gImh0dHA6Ly9wcm9qZWN0cy5vcGVubW9rby5vcmcvZnJzL2Rvd25sb2FkLnBocC85MjMvb3JyZXJ5XzIuN19jbGVhbi50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vb3JyZXJ5LnBuZyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bhc3N3ZHFjL3Bhc3N3ZHFjL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvcGFzc3dkcWMvcGFzc3dkcWMvbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFzc3dkcWMvcGFzc3dkcWMvbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L3Bhc3N3ZHFjL3Bhc3N3ZHFjL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS9wYXNzd2RxYy9wYXNzd2RxY18xLjMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L3Bhc3N3ZHFjL3Bhc3N3ZHFjXzEuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYzBiMzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS9wYXNzd2RxYy9wYXNzd2RxY18xLjMuMS5iYgpAQCAtMCwwICsxLDY2IEBACitTVU1NQVJZID0gIkEgcGFzc3dvcmQvcGFzc3BocmFzZSBzdHJlbmd0aCBjaGVja2luZyBhbmQgZW5mb3JjZW1lbnQgdG9vbHNldCIKK0RFU0NSSVBUSU9OID0gIlwKK3Bhc3N3ZHFjIGlzIGEgcGFzc3dvcmQvcGFzc3BocmFzZSBzdHJlbmd0aCBjaGVja2luZyBhbmQgcG9saWN5IGVuZm9yY2VtZW50IFwKK3Rvb2xzZXQsIGluY2x1ZGluZyBhbiBvcHRpb25hbCBQQU0gbW9kdWxlIChwYW1fcGFzc3dkcWMpLCBjb21tYW5kLWxpbmUgXAorcHJvZ3JhbXMgKHB3cWNoZWNrIGFuZCBwd3FnZW4pLCBhbmQgYSBsaWJyYXJ5IChsaWJwYXNzd2RxYykuIFwKK3BhbV9wYXNzd2RxYyBpcyBub3JtYWxseSBpbnZva2VkIG9uIHBhc3N3b3JkIGNoYW5nZXMgYnkgcHJvZ3JhbXMgc3VjaCBhcyBcCitwYXNzd2QoMSkuICBJdCBpcyBjYXBhYmxlIG9mIGNoZWNraW5nIHBhc3N3b3JkIG9yIHBhc3NwaHJhc2Ugc3RyZW5ndGgsIFwKK2VuZm9yY2luZyBhIHBvbGljeSwgYW5kIG9mZmVyaW5nIHJhbmRvbWx5LWdlbmVyYXRlZCBwYXNzcGhyYXNlcywgd2l0aCBcCithbGwgb2YgdGhlc2UgZmVhdHVyZXMgYmVpbmcgb3B0aW9uYWwgYW5kIGVhc2lseSAocmUtKWNvbmZpZ3VyYWJsZS4gXAorXAorcHdxY2hlY2sgYW5kIHB3cWdlbiBhcmUgc3RhbmRhbG9uZSBwYXNzd29yZC9wYXNzcGhyYXNlIHN0cmVuZ3RoIGNoZWNraW5nIFwKK2FuZCByYW5kb20gcGFzc3BocmFzZSBnZW5lcmF0b3IgcHJvZ3JhbXMsIHJlc3BlY3RpdmVseSwgd2hpY2ggYXJlIHVzYWJsZSBcCitmcm9tIHNjcmlwdHMuIFwKK1wKK2xpYnBhc3N3ZHFjIGlzIHRoZSB1bmRlcmx5aW5nIGxpYnJhcnksIHdoaWNoIG1heSBhbHNvIGJlIHVzZWQgZnJvbSBcCit0aGlyZC1wYXJ0eSBwcm9ncmFtcy4gXAorIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9wYXNzd2RxYyIKK1NFQ1RJT04gPSAiU3lzdGVtIEVudmlyb25tZW50L0Jhc2UiCisKK0RFUEVORFMgKz0gImxpYnBhbSIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWI0YWY2ZjNkNGVlMDc5YTM4MTA3MzY2ZTkzYjMzNGQiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVud2FsbC5jb20vJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjM4NzhiNTdiY2QzZmRiY2YzZDRiMzYyZGJjNjIyOGI5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQxZmVkZWFmNzU5ZThhMGYzMmQyOGI1ODExZWYxMWI1YTUzNjUxNTQ4NDkxOTBmNGI3ZmFiNjcwYTcwZmZiMTQiCisKKyMgZXhwbGljaXRseSBkZWZpbmUgTElOVVhfUEFNIGluIGNhc2UgRElTVFJPX0ZFQVRVUkVTIG5vIHBhbQorIyB0aGlzIHBhY2thZ2UncyBwYW1fcGFzc3dkcWMuc28gbmVlZHMgcGFtCitDRkxBR1NfYXBwZW5kICs9ICItV2FsbCAtZlBJQyAtREhBVkVfU0hBRE9XIC1ETElOVVhfUEFNIgorCisjIC1lIGlzIG5vIGxvbmdlciBkZWZhdWx0IHNldHRpbmcgaW4gYml0YmFrZS5jb25mCitFWFRSQV9PRU1BS0UgPSAiLWUiCisKK2RvX2NvbXBpbGUoKSB7CisgICAgIyBtYWtlIHN1cmUgc3ViIG1ha2UgdXNlIGVudmlyb25tZW50IHRvIG92ZXJyaWRlIHZhcmlhYmxlcyBpbiBNYWtlZmlsZQorICAgICMgTGludXgpICAgICQoTUFLRSksIHRoZXJlIGlzIGEgdGFiIGJldHdlZW4KKyAgICBzZWQgLWkgLWUgJ3MvTGludXgpCSQoTUFLRSkgQ0ZMQUdTX2xpYi9MaW51eCkJJChNQUtFKSAtZSBDRkxBR1NfbGliLycgJHtTfS9NYWtlZmlsZQorCisgICAgIyBMRF9saWIgYW5kIExEIG11c3QgYmUgQ0MgYmVjYXVzZSBvZiBNYWtlZmlsZQorICAgIG9lX3J1bm1ha2UgTEQ9IiR7Q0N9IgorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gU0hBUkVEX0xJQkRJUj0ke2Jhc2VfbGliZGlyfSBcCisgICAgICAgICAgIERFVkVMX0xJQkRJUj0ke2xpYmRpcn0gU0VDVVJFRElSPSR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5IFwKKyAgICAgICAgICAgSU5TVEFMTD0iaW5zdGFsbCAtcCIKK30KKworUFJPVklERVMgKz0gInBhbS0ke0JQTn0iCitQQUNLQUdFUyA9KyAibGliJHtCUE59IHBhbS0ke0JQTn0iCisKK0ZJTEVTX2xpYiR7QlBOfSA9ICIke2Jhc2VfbGliZGlyfS9saWJwYXNzd2RxYy5zby4wIgorRklMRVNfcGFtLSR7QlBOfSA9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS9wYW1fcGFzc3dkcWMuc28iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Ly5kZWJ1ZyIKKworUkRFUEVORFNfJHtQTn0gPSAibGliJHtCUE59IHBhbS0ke0JQTn0iCitSREVQRU5EU19wYW0tJHtCUE59ID0gImxpYiR7QlBOfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L3RvbW95by10b29scy90b21veW8tdG9vbHNfMi41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS90b21veW8tdG9vbHMvdG9tb3lvLXRvb2xzXzIuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNjI3NzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS90b21veW8tdG9vbHMvdG9tb3lvLXRvb2xzXzIuNS4wLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiVE9NT1lPIExpbnV4IHRvb2xzIgorREVTQ1JJUFRJT04gPSAiVE9NT1lPIExpbnV4IGlzIGEgTWFuZGF0b3J5IEFjY2VzcyBDb250cm9sIChNQUMpIGltcGxlbWVudGF0aW9uIFwKK2ZvciBMaW51eCB0aGF0IGNhbiBiZSB1c2VkIHRvIGluY3JlYXNlIHRoZSBzZWN1cml0eSBvZiBhIHN5c3RlbSwgd2hpbGUgYWxzbyBcCitiZWluZyB1c2VmdWwgcHVyZWx5IGFzIGEgc3lzdGVtIGFuYWx5c2lzIHRvb2wuIgorSE9NRVBBR0UgPSAiaHR0cDovL3RvbW95by5zb3VyY2Vmb3JnZS5qcC8iCitTRUNUSU9OID0gIlN5c3RlbSBFbnZpcm9ubWVudC9LZXJuZWwiCisKK1NSQ19VUkkgPSAiaHR0cDovL2phaXN0LmRsLnNvdXJjZWZvcmdlLmpwL3RvbW95by81MzM1Ny8ke0JQfS0yMDE3MDEwMi50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiODg4ODA0ZDU4NzQyNDUyZmUyMTNhNjhmN2VhZGQwYWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDBmZWRmYWM1ZTUxNDMyMTI1MGJiZTY5ZWFjY2M3MzJjOGE4MTU4NTk2Zjc3YTc4NWMyZTNhZTlmOTk2ODI4MyIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudG9tb3lvO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworRklMRVNfJHtQTn0gICAgICs9ICIke2xpYmRpcn0vdG9tb3lvIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vdG9tb3lvLy5kZWJ1ZyIKKworREVQRU5EUyA9ICJsaW51eC1saWJjLWhlYWRlcnMgbmN1cnNlcyIKKworRVhUUkFfT0VNQUtFID0gIi1lIFVTUkxJQkRJUj0ke2xpYmRpcn0iCisKK2RvX2NvbXBpbGUgKCkgeworICAgIG9lX3J1bm1ha2UgJ0NDPSR7Q0N9JworfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBJTlNUQUxMRElSPSR7RH0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Rhc2gvZGFzaC8wMDAxLUZpeC1wcmludGYtZm9ybWF0LWVycm9ycy13aXRoLWNsYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL2Rhc2gvZGFzaC8wMDAxLUZpeC1wcmludGYtZm9ybWF0LWVycm9ycy13aXRoLWNsYW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kYXNoL2Rhc2gvMDAwMS1GaXgtcHJpbnRmLWZvcm1hdC1lcnJvcnMtd2l0aC1jbGFuZy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL2Rhc2gvZGFzaC8wMDAxLUZpeC1wcmludGYtZm9ybWF0LWVycm9ycy13aXRoLWNsYW5nLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvZGFzaC9kYXNoXzAuNS45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvZGFzaC9kYXNoXzAuNS45LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRlZTY2ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy9kYXNoL2Rhc2hfMC41LjkuMS5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIlNtYWxsIGFuZCBmYXN0IFBPU0lYLWNvbXBsaWFudCBzaGVsbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb25kb3IuYXBhbmEub3JnLmF1L35oZXJiZXJ0L2Rhc2gvIgorU0VDVElPTiA9ICJTeXN0ZW0gRW52aXJvbm1lbnQvU2hlbGxzIgorCitMSUNFTlNFID0gIkJTRCAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWI1MjYyYjRhMWExYmZmNzJiNDhlOTM1NTMxOTc2ZDJlIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK1NSQ19VUkkgPSAiaHR0cDovL2dvbmRvci5hcGFuYS5vcmcuYXUvfmhlcmJlcnQvJHtCUE59L2ZpbGVzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1wcmludGYtZm9ybWF0LWVycm9ycy13aXRoLWNsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjY0NzI3MDJhOGQ5NzYwZDE2NmVmODMzM2RjYjUyN2E2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVlY2Q1YmVhNzJhOTNlZDEwZWIxNWExYmU5OTUxZGQ1MWI1MmU1ZGExZDRhN2FlMDIwZWZkOTgyNmI0OWU2NTkiCisKK0VYVFJBX09FQ09ORiArPSAiLS1iaW5kaXI9JHtiYXNlX2JpbmRpcn0iCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInNoIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NoXSA9ICIke2Jhc2VfYmluZGlyfS9zaCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtzaF0gPSAiJHtiYXNlX2JpbmRpcn0vZGFzaCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwIgorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworICAgIGdyZXAgLXEgIl4ke2Jhc2VfYmluZGlyfS9kYXNoJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmFzZV9iaW5kaXJ9L2Rhc2ggPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscworfQorCitwa2dfcG9zdHJtXyR7UE59ICgpIHsKKyAgICBwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmFzZV9iaW5kaXJ9L2Rhc2gkIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rjc2gvdGNzaC8wMDAxLUVuYWJsZS1zeXN0ZW0tbWFsbG9jLW9uLWFsbC1saW51eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy90Y3NoL3Rjc2gvMDAwMS1FbmFibGUtc3lzdGVtLW1hbGxvYy1vbi1hbGwtbGludXgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rjc2gvdGNzaC8wMDAxLUVuYWJsZS1zeXN0ZW0tbWFsbG9jLW9uLWFsbC1saW51eC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL3Rjc2gvdGNzaC8wMDAxLUVuYWJsZS1zeXN0ZW0tbWFsbG9jLW9uLWFsbC1saW51eC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGNzaC90Y3NoLzAwMDItQWRkLWRlYmlhbi1jc2gtc2NyaXB0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy90Y3NoL3Rjc2gvMDAwMi1BZGQtZGViaWFuLWNzaC1zY3JpcHRzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90Y3NoL3Rjc2gvMDAwMi1BZGQtZGViaWFuLWNzaC1zY3JpcHRzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoLzAwMDItQWRkLWRlYmlhbi1jc2gtc2NyaXB0cy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGNzaC90Y3NoXzYuMjAuMDAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoXzYuMjAuMDAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rjc2gvdGNzaF82LjIwLjAwLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoXzYuMjAuMDAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy96c2gvenNoXzUuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL3pzaC96c2hfNS40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAwYzQ0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy96c2gvenNoXzUuNC4yLmJiCkBAIC0wLDAgKzEsNjQgQEAKK1NVTU1BUlkgPSAiVU5JWCBTaGVsbCBzaW1pbGFyIHRvIHRoZSBLb3JuIHNoZWxsIgorREVTQ1JJUFRJT04gPSAiWnNoIGlzIGEgc2hlbGwgZGVzaWduZWQgZm9yIGludGVyYWN0aXZlIHVzZSwgYWx0aG91Z2ggaXQgaXMgYWxzbyBhIFwKKyAgICAgICAgICAgICAgIHBvd2VyZnVsIHNjcmlwdGluZyBsYW5ndWFnZS4gTWFueSBvZiB0aGUgdXNlZnVsIGZlYXR1cmVzIG9mIGJhc2gsIFwKKyAgICAgICAgICAgICAgIGtzaCwgYW5kIHRjc2ggd2VyZSBpbmNvcnBvcmF0ZWQgaW50byB6c2g7IG1hbnkgb3JpZ2luYWwgZmVhdHVyZXMgd2VyZSBhZGRlZC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnpzaC5vcmciCitTRUNUSU9OID0gImJhc2Uvc2hlbGwiCisKK0xJQ0VOU0UgPSAienNoIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9MWE0YzRjZGEzZTgwOTZkMmZkNDgzZmYyZjQ1MTRmZWMiCisKK0RFUEVORFMgPSAibmN1cnNlcyBiaXNvbi1uYXRpdmUgbGliY2FwIGxpYnBjcmUgZ2RibSBncm9mZi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZGZlMTU2ZmQ2OWIwZDhkMTc0NWVjZjZkNmUwMmUwNDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTU3YmNkYjJjNTdmNjRjMDJmNjczNjkzZWE1YTc1MThlZjI0YjY1NTdhZWIzYTRjZTIyMmNlZmE2ZDc0YWNjOSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tYmluZGlyPSR7YmFzZV9iaW5kaXJ9IFwKKyAgICAtLWVuYWJsZS1ldGNkaXI9JHtzeXNjb25mZGlyfSBcCisgICAgLS1lbmFibGUtZm5kaXI9JHtkYXRhZGlyfS8ke1BOfS8ke1BWfS9mdW5jdGlvbnMgXAorICAgIC0tZW5hYmxlLXNpdGUtZm5kaXI9JHtkYXRhZGlyfS8ke1BOfS9zaXRlLWZ1bmN0aW9ucyBcCisgICAgLS13aXRoLXRlcm0tbGliPSduY3Vyc2VzdyBuY3Vyc2VzJyBcCisgICAgLS13aXRoLXRjc2V0cGdycCBcCisgICAgLS1lbmFibGUtY2FwIFwKKyAgICAtLWVuYWJsZS1tdWx0aWJ5dGUgXAorICAgIC0tZGlzYWJsZS1nZGJtIFwKKyAgICAtLWRpc2FibGUtZHluYW1pYyBcCisgICAgenNoX2N2X3NoYXJlZF9lbnZpcm9uPXllcyBcCisiCisKKyMgQ29uZmlndXJlIHJlc3BlY3RzIC0tYmluZGlyIGZyb20gRVhUUkFfT0VDT05GLCBidXQgdGhlbiBTcmMvTWFrZWZpbGUgd2lsbCByZWFkIGJpbmRpciBmcm9tIGVudmlyb25tZW50CitleHBvcnQgYmluZGlyPSIke2Jhc2VfYmluZGlyfSIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInNoIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NoXSA9ICIke2Jhc2VfYmluZGlyfS9zaCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtzaF0gPSAiJHtiYXNlX2JpbmRpcn0vJHtCUE59IgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitleHBvcnQgQVVUT0hFQURFUiA9ICJ0cnVlIgorCitkb19jb25maWd1cmUgKCkgeworICAgIGdudS1jb25maWdpemUgLS1mb3JjZSAke1N9CisgICAgb2VfcnVuY29uZgorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgcm0gLWZyICR7RH0vdXNyL3NoYXJlCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgdG91Y2ggJEQke3N5c2NvbmZkaXJ9L3NoZWxscworICAgIGdyZXAgLXEgImJpbi96c2giICREJHtzeXNjb25mZGlyfS9zaGVsbHMgfHwgZWNobyAvYmluL3pzaCA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCisgICAgZ3JlcCAtcSAiYmluL3NoIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gL2Jpbi9zaCA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCit9CisKK0ZJTEVTXyR7UE59LWRiZyArPSAiXAorICAgICR7bGliZGlyfS8ke1BOfS8ke1BWfS8ke1BOfS8uZGVidWcvKi5zbyBcCisgICAgJHtsaWJkaXJ9LyR7UE59LyR7UFZ9LyR7UE59L2RiLy5kZWJ1Zy8qLnNvIFwKKyAgICAke2xpYmRpcn0vJHtQTn0vJHtQVn0vJHtQTn0vbmV0Ly5kZWJ1Zy8qLnNvIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYW50aHkvYW50aHkvbmF0aXZlLWhlbHBlcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FudGh5L2FudGh5L25hdGl2ZS1oZWxwZXJzLnBhdGNoCmluZGV4IDI5MWI2NmIuLjQ3Y2UwMDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYW50aHkvYW50aHkvbmF0aXZlLWhlbHBlcnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hbnRoeS9hbnRoeS9uYXRpdmUtaGVscGVycy5wYXRjaApAQCAtMywyMCArMywyNCBAQAogY29tbWVudDogU3RhZ2UgdGhlIG5hdGl2ZSBhbnRoeSBoZWxwZXJzIG1rZmlsZWRpYywgbWtkZXBncmFwaCwgbWt3b3JkZGljLCAKIGNvbW1lbnQ6IGNhbGN0cmFucyBhbmQgcHJvY2NvcnB1cy4KIAotLS0tIGFudGh5LTc4MTEvbWthbnRoeWRpYy9NYWtlZmlsZS5hbX4JMjAwNi0wNS0xMyAxODoyODozNS4wMDAwMDAwMDAgKzA5MDAKLSsrKyBhbnRoeS03ODExL21rYW50aHlkaWMvTWFrZWZpbGUuYW0JMjAwNi0wNi0xOCAxMDo1NjoyNS43NzAwMDAwMDAgKzA5MDAKLUBAIC0zLDcgKzMsNyBAQAorSW5kZXg6IGFudGh5LTkxMDBoL21rYW50aHlkaWMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbnRoeS05MTAwaC5vcmlnL21rYW50aHlkaWMvTWFrZWZpbGUuYW0KKysrKyBhbnRoeS05MTAwaC9ta2FudGh5ZGljL01ha2VmaWxlLmFtCitAQCAtMyw3ICszLDcgQEAgbm9pbnN0X1NDUklQVFMgPQogIENMRUFORklMRVMgPSBhbnRoeS5kaWMKLSBJTkNMVURFUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1EU1JDRElSPVwiJChzcmNkaXIpXCIKKyBJTkNMVURFUyA9IC1JJCh0b3Bfc3JjZGlyKS8gLURTUkNESVI9XCIkKHNyY2RpcilcIgogIAogLW5vaW5zdF9QUk9HUkFNUyA9IG1rZmlsZWRpYwogK2Jpbl9QUk9HUkFNUyA9IG1rZmlsZWRpYwogIG1rZmlsZWRpY19TT1VSQ0VTID0gbWtmaWxlZGljLmMKICBta2ZpbGVkaWNfTERBREQgPSAuLi9zcmMtZGljbGliL2xpYmRpY2xpYi5sYQogIAotLS0tIGFudGh5LTc4MTEvZGVwZ3JhcGgvTWFrZWZpbGUuYW1+CTIwMDYtMDYtMDIgMDA6MjA6NTQuMDAwMDAwMDAwICswOTAwCi0rKysgYW50aHktNzgxMS9kZXBncmFwaC9NYWtlZmlsZS5hbQkyMDA2LTA2LTE4IDEwOjU3OjE5LjQyMDAwMDAwMCArMDkwMAotQEAgLTksNyArOSw3IEBACitJbmRleDogYW50aHktOTEwMGgvZGVwZ3JhcGgvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbnRoeS05MTAwaC5vcmlnL2RlcGdyYXBoL01ha2VmaWxlLmFtCisrKysgYW50aHktOTEwMGgvZGVwZ3JhcGgvTWFrZWZpbGUuYW0KK0BAIC05LDcgKzksNyBAQCBDTEVBTkZJTEVTID0gYW50aHkuZGVwCiAgRVhUUkFfRElTVCA9IGluZGVwd29yZC50eHQgJChERVBXT1JEUykKICAKICAjIEdlbmVyYXRlIHRoZSBkaWN0aW9uYXJ5CkBAIC0yNSwxMCArMjksMTIgQEAKICBta2RlcGdyYXBoX1NPVVJDRVMgPSBta2RlcGdyYXBoLmMKICBta2RlcGdyYXBoX0xEQUREID0gIC4uL3NyYy1tYWluL2xpYmFudGh5LmxhIC4uL3NyYy13b3JkZGljL2xpYmFudGh5ZGljLmxhCiAgCi0tLS0gYW50aHktNzgxMS9ta3dvcmRkaWMvTWFrZWZpbGUuYW1+CTIwMDYtMDUtMTMgMTg6Mjk6MDcuMDAwMDAwMDAwICswOTAwCi0rKysgYW50aHktNzgxMS9ta3dvcmRkaWMvTWFrZWZpbGUuYW0JMjAwNi0wNi0xOCAxMToyMTo1Ni4zMDAwMDAwMDAgKzA5MDAKLUBAIC0xNiw3ICsxNiw4IEBACi0gIHVkaWN0IGRpY3QuYXJncy5pbgorSW5kZXg6IGFudGh5LTkxMDBoL21rd29yZGRpYy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFudGh5LTkxMDBoLm9yaWcvbWt3b3JkZGljL01ha2VmaWxlLmFtCisrKysgYW50aHktOTEwMGgvbWt3b3JkZGljL01ha2VmaWxlLmFtCitAQCAtMjYsNyArMjYsOCBAQCBESUNfRklMRVMgPSBAdG9wX3NyY2RpckAvYWx0LWNhbm5hZGljL2djCisgCSAgICBAdG9wX3NyY2RpckAvbWt3b3JkZGljL3VkaWN0CiAgCiAgIyBHZW5lcmF0ZSB0aGUgZGljdGlvbmFyeQogLW5vaW5zdF9QUk9HUkFNUyA9IG1rd29yZGRpYwpAQCAtMzYsMTAgKzQyLDEyIEBACiArYmluX1BST0dSQU1TID0gbWt3b3JkZGljCiAgbWt3b3JkZGljX1NPVVJDRVMgPSBta2RpYy5jIHdyaXRld29yZHMuYyBta3VkaWMuYyBjYWxjZnJlcS5jIG1rZGljLmgKICBta3dvcmRkaWNfTERBREQgPSAuLi9zcmMtd29yZGRpYy9saWJhbnRoeWRpYy5sYQotCi0tLS0gYW50aHktOTEwMGUub3JpZy9jYWxjdHJhbnMvTWFrZWZpbGUuYW0JMjAwOC0wNS0wOCAxNTowNDoxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBhbnRoeS05MTAwZS9jYWxjdHJhbnMvTWFrZWZpbGUuYW0JMjAwOC0wNS0wOCAxNTowNDoyNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zLDcgKzMsNyBAQAorIAorSW5kZXg6IGFudGh5LTkxMDBoL2NhbGN0cmFucy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFudGh5LTkxMDBoLm9yaWcvY2FsY3RyYW5zL01ha2VmaWxlLmFtCisrKysgYW50aHktOTEwMGgvY2FsY3RyYW5zL01ha2VmaWxlLmFtCitAQCAtMyw3ICszLDcgQEAgRVhUUkFfRElTVCA9XAogICBjb3JwdXMuMy50eHQgY29ycHVzLjQudHh0IGNvcnB1cy41LnR4dFwKICAgY29ycHVzX2luZm8gd2Vha193b3JkcwogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hbnRoeS9hbnRoeS9ub3RfYnVpbGRfZWxjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hbnRoeS9hbnRoeS9ub3RfYnVpbGRfZWxjLnBhdGNoCmluZGV4IGJmNzQ4ZjMuLjFjNWM0OTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYW50aHkvYW50aHkvbm90X2J1aWxkX2VsYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FudGh5L2FudGh5L25vdF9idWlsZF9lbGMucGF0Y2gKQEAgLTEsMTIgKzEsMTMgQEAKIHVwc3RyZWFtOiBub3QgYXBwbGljYWJsZQogc291cmNlOiBzdG9sZW4gZnJvbSBkZWJpYW4KIAotZGlmZiAtTmF1ciBhbnRoeS03ODExL3NyYy11dGlsLm9yaWcvTWFrZWZpbGUuYW0gYW50aHktNzgxMS9zcmMtdXRpbC9NYWtlZmlsZS5hbQotLS0tIGFudGh5LTc4MTEvc3JjLXV0aWwub3JpZy9NYWtlZmlsZS5hbQkyMDA2LTA2LTE4IDEwOjQ3OjU1Ljc5MDAwMDAwMCArMDkwMAotKysrIGFudGh5LTc4MTEvc3JjLXV0aWwvTWFrZWZpbGUuYW0JMjAwNi0wNi0xOCAxMDo0ODoyMy44NjAwMDAwMDAgKzA5MDAKLUBAIC02LDcgKzYsOCBAQAorSW5kZXg6IGFudGh5LTkxMDBoL3NyYy11dGlsL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW50aHktOTEwMGgub3JpZy9zcmMtdXRpbC9NYWtlZmlsZS5hbQorKysrIGFudGh5LTkxMDBoL3NyYy11dGlsL01ha2VmaWxlLmFtCitAQCAtOCw3ICs4LDggQEAgRUxJU1BfRklMRVMgPSBhbnRoeS5lbCBhbnRoeS1kaWMuZWwgYW50aAogICBhbnRoeS1pc2VhcmNoLmVsIGFudGh5LWF6aWsuZWwgYW50aHkta3l1cmkuZWwKLSBFWFRSQV9ESVNUID0gJChFTElTUF9GSUxFUykgdHlwZXRhYiBkaWMtdG9vbC11c2FnZS50eHQgcmNzaXplLnJiCisgRVhUUkFfRElTVCA9ICQoRUxJU1BfRklMRVMpIHR5cGV0YWIgZGljLXRvb2wtdXNhZ2UudHh0IGFudGh5LmkKICBiaW5fUFJPR1JBTVMgPSBhbnRoeS1kaWMtdG9vbCBhbnRoeS1hZ2VudCBhbnRoeS1tb3JwaG9sb2dpY2FsLWFuYWx5emVyCiAtRUxDRklMRVMgPSBhbnRoeS5lbGMgYW50aHktZGljLmVsYyBhbnRoeS1hemlrLmVsYyBhbnRoeS1jb25mLmVsYyBhbnRoeS1pc2VhcmNoLmVsYyBhbnRoeS1reXVyaS5lbGMgbGVpbS1saXN0LmVsYwogKyNFTENGSUxFUyA9IGFudGh5LmVsYyBhbnRoeS1kaWMuZWxjIGFudGh5LWF6aWsuZWxjIGFudGh5LWNvbmYuZWxjIGFudGh5LWlzZWFyY2guZWxjIGFudGh5LWt5dXJpLmVsYyBsZWltLWxpc3QuZWxjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmluZGV4IDlhMTk4NzYuLjBiYTdjNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBiOTU2NWRjMmZlMGM0ZjdkYWFlYzkxYjdlODNiYzczMTNkZWUyZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzMmIxNTMzMmUyMTMwYTU0YjI1ZjRmYmY2ZjU4YjQwN2I4NTFkZDhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKQEAgLTExLDE0ICsxMSwxNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQotIGxpYi9nbnVsaWIubWsgfCAyICstCisgZ251bGliL2xpYi9NYWtlZmlsZS5hbSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IGF1Z2Vhcy0xLjIuMC9nbnVsaWIvbGliL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXVnZWFzLTEuMi4wLm9yaWcvZ251bGliL2xpYi9NYWtlZmlsZS5hbQotKysrIGF1Z2Vhcy0xLjIuMC9nbnVsaWIvbGliL01ha2VmaWxlLmFtCitkaWZmIC0tZ2l0IGEvZ251bGliL2xpYi9NYWtlZmlsZS5hbSBiL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KK2luZGV4IDk2M2IyMmQuLjc1Nzg4ZDIgMTAwNjQ0CistLS0gYS9nbnVsaWIvbGliL01ha2VmaWxlLmFtCisrKysgYi9nbnVsaWIvbGliL01ha2VmaWxlLmFtCiBAQCAtNDYzLDcgKzQ2Myw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAogIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKICAJICAgIGRhcndpbls1Nl0qKSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMvYWRkLW1pc3NpbmctYXJnei1jb25kaXRpb25hbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy9hZGQtbWlzc2luZy1hcmd6LWNvbmRpdGlvbmFsLnBhdGNoCmluZGV4IGFiYmRiYWEuLjM2OGJiNDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy9hZGQtbWlzc2luZy1hcmd6LWNvbmRpdGlvbmFsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy9hZGQtbWlzc2luZy1hcmd6LWNvbmRpdGlvbmFsLnBhdGNoCkBAIC0xLDE0ICsxLDIxIEBACi1BZGQgbWlzc2luZyBHTF9HRU5FUkFURV9BUkdaX0ggY29uZGl0aW9uYWwKK0Zyb20gOWE2ZTYzNzRkYTdkNzA1NmRiMDk1MGYwZjdkNmI4YjkwNTAwOTc3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgMTUgSnVsIDIwMTYgMTA6MDQ6NDggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIG1pc3NpbmcgR0xfR0VORVJBVEVfQVJHWl9IIGNvbmRpdGlvbmFsCiAKIC0gR0xfR0VORVJBVEVfQVJHWl9IIGlzIHVzZWQgaW4gZ251bGliL2xpYi9NYWtlZmlsZS5hbQogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KIAotSW5kZXg6IGF1Z2Vhcy0xLjAuMC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdWdlYXMtMS4wLjAub3JpZy9jb25maWd1cmUuYWMKLSsrKyBhdWdlYXMtMS4wLjAvY29uZmlndXJlLmFjCistLS0KKyBjb25maWd1cmUuYWMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA3MmI2OTg0Li5mYjk2NTNlIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKIEBAIC01NSw2ICs1NSw4IEBAIEFDX0FSR19XSVRIKFtmYWlsbWFsbG9jXSwKICAKICBBTV9DT05ESVRJT05BTChbV0lUSF9GQUlMTUFMTE9DXSwgW3Rlc3QgeCR3aXRoX2ZhaWxtYWxsb2MgIT0geG5vXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy9zZXBidWlsZGZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy9zZXBidWlsZGZpeC5wYXRjaAppbmRleCBiODJhM2VlLi4yYjE4NjE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMvc2VwYnVpbGRmaXgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzL3NlcGJ1aWxkZml4LnBhdGNoCkBAIC0xLDE1ICsxLDI0IEBACi1FbnN1cmUgdGhhdCBidWlsZHMgaW4gc2VwYXJhdGUgYnVpbGRkaXJzICgke0J9ICE9ICR7U30pIGNvcnJlY3RseSBpbnN0YWxsIHRoZSAKK0Zyb20gOGEyNzc5NTdhMjU3OWU3MTQ5YzE4NTA2NzU0NDFiMjg4MTkyMDc3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBGcmksIDE1IEp1bCAyMDE2IDEwOjA0OjQ4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGF1Z2VhczogZml4IHNlcGFyYXRlIGJ1aWxkZGlycworCitFbnN1cmUgdGhhdCBidWlsZHMgaW4gc2VwYXJhdGUgYnVpbGRkaXJzICgke0J9ICE9ICR7U30pIGNvcnJlY3RseSBpbnN0YWxsIHRoZQogbGVuc2VzIGZpbGVzLgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogUlAgMjAxMy80LzE3CiAKLUluZGV4OiBhdWdlYXMtMS4wLjAvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdWdlYXMtMS4wLjAub3JpZy9NYWtlZmlsZS5hbQkyMDEyLTExLTAyIDE1OjIwOjExLjAwMDAwMDAwMCArMDAwMAotKysrIGF1Z2Vhcy0xLjAuMC9NYWtlZmlsZS5hbQkyMDEzLTA0LTE3IDEwOjM2OjI0LjAzMzQwMDEyNSArMDAwMAotQEAgLTUsOCArNSw4IEBACistLS0KKyBNYWtlZmlsZS5hbSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA4N2Q1MTFhLi43NzEwYjNiIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNSw4ICs1LDggQEAgQUNMT0NBTF9BTUZMQUdTID0gLUkgZ251bGliL200CiAgbGVuc2Rpcj0kKGRhdGFkaXIpL2F1Z2Vhcy9sZW5zZXMvZGlzdAogIGxlbnN0ZXN0ZGlyPSQoZGF0YWRpcikvYXVnZWFzL2xlbnNlcy9kaXN0L3Rlc3RzCiAgCkBAIC0xOCw1ICsyNyw1IEBACiArZGlzdF9sZW5zX0RBVEE9JCh3aWxkY2FyZCAkKHRvcF9zcmNkaXIpL2xlbnNlcy8qLmF1ZykKICtkaXN0X2xlbnN0ZXN0X0RBVEE9JCh3aWxkY2FyZCAkKHRvcF9zcmNkaXIpbGVuc2VzL3Rlc3RzLyouYXVnKQogIAotIEVYVFJBX0RJU1Q9YXVnZWFzLnNwZWMgYnVpbGQvYXV4L21vdmUtaWYtY2hhbmdlIE1ha2VmaWxlLmFtIEhBQ0tJTkcKKyBFWFRSQV9ESVNUPWF1Z2Vhcy5zcGVjIGJ1aWxkL2FjLWF1eC9tb3ZlLWlmLWNoYW5nZSBNYWtlZmlsZS5hbSBIQUNLSU5HLm1kCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dlaXNfMi4yLjE3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9nZWlzXzIuMi4xNy5iYgppbmRleCA5NzZhYWZiLi4zMGQ0MWExIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dlaXNfMi4yLjE3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2Fub25pY2FsLW11bHRpdG91Y2gvZ2Vpc18yLjIuMTcuYmIKQEAgLTMwLDcgKzMwLDYgQEAKIAogRklMRVNfJHtQTn0tYmluID0gIiR7YmluZGlyfSIKIFJERVBFTkRTXyR7UE59LWJpbiA9ICIgXAotICAgIHB5dGhvbjMtYXJncGFyc2UgXAogICAgIHB5dGhvbjMtY29tcHJlc3Npb24gXAogICAgIHB5dGhvbjMtY29yZSBcCiAgICAgcHl0aG9uMy1jcnlwdCBcCkBAIC00MCw4ICszOSw2IEBACiAgICAgcHl0aG9uMy1waWNrbGUgXAogICAgIHB5dGhvbjMtc2hlbGwgXAogICAgIHB5dGhvbjMtc3RyaW5nb2xkIFwKLSAgICBweXRob24zLXN1YnByb2Nlc3MgXAotICAgIHB5dGhvbjMtdGV4dHV0aWxzIFwKICAgICBweXRob24zLXRocmVhZGluZyBcCiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2VyZXMtc29sdmVyL2NlcmVzLXNvbHZlcl8xLjEzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyXzEuMTMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4ODNjNzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyXzEuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJDZXJlcyBTb2x2ZXIgaXMgYW4gb3BlbiBzb3VyY2UgQysrIGxpYnJhcnkgZm9yIG1vZGVsaW5nIGFuZCBzb2x2aW5nIGxhcmdlLCBjb21wbGljYXRlZCBvcHRpbWl6YXRpb24gcHJvYmxlbXMuIgotQVVUSE9SID0gIlNhbWVlciBBZ2Fyd2FsIGFuZCBLZWlyIE1pZXJsZSBhbmQgT3RoZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL2NlcmVzLXNvbHZlci5vcmcvIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM1ZTAwZjBjNGM5NmEwODIwYTAzZTBiMzFlNjQxNmJlIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY2VyZXMtc29sdmVyL2NlcmVzLXNvbHZlci5naXQiCi1TUkNSRVYgPSAiMTkzMzNiMGY1NWM4NDYyMzgxMDM4ZTcwZDQyYWY0M2I1Mjk0MTEyOCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJsaWJlaWdlbiBnbG9nIgotCi1pbmhlcml0IGNtYWtlCi0KLSMgT25seSBhIHN0YXRpYyBsaWJyYXJ5IGFuZCBoZWFkZXJzIGFyZSBjcmVhdGVkCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyXzEuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXJfMS4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTkxN2M4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyXzEuMTQuYmIKQEAgLTAsMCArMSwyMCBAQAorREVTQ1JJUFRJT04gPSAiQ2VyZXMgU29sdmVyIGlzIGFuIG9wZW4gc291cmNlIEMrKyBsaWJyYXJ5IGZvciBtb2RlbGluZyBhbmQgc29sdmluZyBsYXJnZSwgY29tcGxpY2F0ZWQgb3B0aW1pemF0aW9uIHByb2JsZW1zLiIKK0FVVEhPUiA9ICJTYW1lZXIgQWdhcndhbCBhbmQgS2VpciBNaWVybGUgYW5kIE90aGVycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZXJlcy1zb2x2ZXIub3JnLyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNWUwMGYwYzRjOTZhMDgyMGEwM2UwYjMxZTY0MTZiZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXIuZ2l0IgorU1JDUkVWID0gImZhY2IxOTlmM2VkYTkwMjM2MGY5ZTFkNTI3MTM3MmI3ZTU0ZmViZTEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAibGliZWlnZW4gZ2xvZyIKKworaW5oZXJpdCBjbWFrZQorCisjIE9ubHkgYSBzdGF0aWMgbGlicmFyeSBhbmQgaGVhZGVycyBhcmUgY3JlYXRlZAorQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0LTIuMTAuMi9maXgtY21ha2UtaW5zdGFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0LTIuMTAuMi9maXgtY21ha2UtaW5zdGFsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmVhZmVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3QtMi4xMC4yL2ZpeC1jbWFrZS1pbnN0YWxsLnBhdGNoCkBAIC0wLDAgKzEsMTcgQEAKK0Rlc2NyaXB0aW9uOiBpbnN0YWxsIGNtYWtlIGZpbGVzIGludG8gL3Vzci9saWIvY21ha2UvY3BwcmVzdHNkaworQXV0aG9yOiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGxvY3V0dXNvZmJvcmdAZGViaWFuLm9yZz4KK1Vwc3RyZWFtLVN0YXR1czogaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9jcHByZXN0c2RrL3B1bGwvNzM3CitGb3J3YXJkZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvY3BwcmVzdHNkay9wdWxsLzczNworTGFzdC1VcGRhdGU6IDIwMTgtMDQtMTkKKworLS0tIGNwcHJlc3QtMi4xMC4yLm9yaWcvQ01ha2VMaXN0cy50eHQKKysrKyBjcHByZXN0LTIuMTAuMi9DTWFrZUxpc3RzLnR4dAorQEAgLTE4LDcgKzE4LDcgQEAgZW5hYmxlX3Rlc3RpbmcoKQorIHNldChXRVJST1IgT04gQ0FDSEUgQk9PTCAiVHJlYXQgV2FybmluZ3MgYXMgRXJyb3JzLiIpCisgc2V0KENQUFJFU1RfRVhDTFVERV9XRUJTT0NLRVRTIE9GRiBDQUNIRSBCT09MICJFeGNsdWRlIHdlYnNvY2tldHMgZnVuY3Rpb25hbGl0eS4iKQorIHNldChDUFBSRVNUX0VYQ0xVREVfQ09NUFJFU1NJT04gT0ZGIENBQ0hFIEJPT0wgIkV4Y2x1ZGUgY29tcHJlc3Npb24gZnVuY3Rpb25hbGl0eS4iKQorLXNldChDUFBSRVNUX0VYUE9SVF9ESVIgbGliL2NwcHJlc3RzZGsgQ0FDSEUgU1RSSU5HICJEaXJlY3RvcnkgdG8gaW5zdGFsbCBDTWFrZSBjb25maWcgZmlsZXMuIikKKytzZXQoQ1BQUkVTVF9FWFBPUlRfRElSIGxpYi9jbWFrZS9jcHByZXN0c2RrIENBQ0hFIFNUUklORyAiRGlyZWN0b3J5IHRvIGluc3RhbGwgQ01ha2UgY29uZmlnIGZpbGVzLiIpCisgc2V0KENQUFJFU1RfSU5TVEFMTF9IRUFERVJTIE9OIENBQ0hFIEJPT0wgIkluc3RhbGwgaGVhZGVyIGZpbGVzLiIpCisgc2V0KENQUFJFU1RfSU5TVEFMTCBPTiBDQUNIRSBCT09MICJBZGQgaW5zdGFsbCBjb21tYW5kcy4iKQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3RfMi4xMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3RfMi4xMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYTZmYzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdF8yLjEwLjIuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJNaWNyb3NvZnQgcHJvamVjdCBmb3IgY2xvdWQtYmFzZWQgY2xpZW50LXNlcnZlciBjb21tdW5pY2F0aW9uIGluIG5hdGl2ZSBjb2RlIHVzaW5nIGEgbW9kZXJuIGFzeW5jaHJvbm91cyBDKysgQVBJIGRlc2lnbi4iCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvY3BwcmVzdHNkay8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7U30vLi4vbGljZW5zZS50eHQ7bWQ1PWEyZTE1Yjk1NDc2OTIxOGZmOTEyNDY4ZWVjZDZhMDJmIgorREVQRU5EUyA9ICJvcGVuc3NsIHdlYnNvY2tldHBwIHpsaWIgYm9vc3QiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvY3BwcmVzdHNkay5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPW1hc3RlciIKKworU1JDX1VSSSArPSAiZmlsZTovL2ZpeC1jbWFrZS1pbnN0YWxsLnBhdGNoIgorCisjIHRhZyAyLjEwLjIKK1NSQ1JFVj0gImZlYTg0OGUyYTc3NTYzY2YyYTZmMjhmOGVhYjM5NmZkNmU3ODdmYmYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQvUmVsZWFzZSIKKworaW5oZXJpdCBjbWFrZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjMuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy4zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZjdkMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29udmVydCB0ZXh0IGZpbGUgbGluZSBlbmRpbmdzIGJldHdlZW4gQ1JMRiBhbmQgTEYiCi1ERVNDUklQVElPTiA9ICJUaGUgRG9zMnVuaXggcGFja2FnZSBpbmNsdWRlcyB1dGlsaXRpZXMgZG9zMnVuaXggYW5kIFwKLXVuaXgyZG9zIHRvIGNvbnZlcnQgcGxhaW4gdGV4dCBmaWxlcyBpbiBET1Mgb3IgTWFjIGZvcm1hdCB0byBVbml4IFwKLWZvcm1hdCBhbmQgdmljZSB2ZXJzYS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2F0ZXJsYW4uaG9tZS54czRhbGwubmwvZG9zMnVuaXguaHRtbCIKLVNFQ1RJT04gPSAic3VwcG9ydCIKLQotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9MWI3OGZjYTc4NGRiMjRmNGE0MGUzMGIzMDA3ODdmM2YiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvZG9zMnVuaXgvZG9zMnVuaXgiCi0KLSMgUmVsZWFzZSA3LjMuNAotU1JDUkVWID0gIjgzODFiYTRlMWM0Y2Q1Y2U5OGViZDljMjQ3MjZkNTFjYjIwM2NkZTAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQvZG9zMnVuaXgiCi0KLWluaGVyaXQgZ2V0dGV4dCBwZXJsbmF0aXZlCi0KLSMgVGhlIGRvczJ1bml4IE5MUyByZWxpZXMgb24gcG80YS1uYXRpdmUsIHdoaWxlIHBvNGEgcmVjaXBlIGlzCi0jIHByb3ZpZGVkIGJ5IG1ldGEtcGVybCBsYXllciwgc28gbWFrZSBpdCBvcHRpb25hbCBoZXJlLCB5b3UKLSMgbmVlZCBoYXZlIG1ldGEtcGVybCBpbiBiYmxheWVycy5jb25mIGJlZm9yZSBlbmFibGluZyBubHMgaW4KLSMgUEFDS0FHRUNPTkZJRy4KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW25sc10gPSAiRU5BQkxFX05MUz0xLEVOQUJMRV9OTFM9LHBvNGEtbmF0aXZlIgotCi1FWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBMREZMQUdTX1VTRVI9JyR7TERGTEFHU30nIgotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICJFTkFCTEVfTkxTPSIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSIke0R9JHtiYXNlX3ByZWZpeH0iIGluc3RhbGwKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQzYzU3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy40LjAuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJDb252ZXJ0IHRleHQgZmlsZSBsaW5lIGVuZGluZ3MgYmV0d2VlbiBDUkxGIGFuZCBMRiIKK0RFU0NSSVBUSU9OID0gIlRoZSBEb3MydW5peCBwYWNrYWdlIGluY2x1ZGVzIHV0aWxpdGllcyBkb3MydW5peCBhbmQgXAordW5peDJkb3MgdG8gY29udmVydCBwbGFpbiB0ZXh0IGZpbGVzIGluIERPUyBvciBNYWMgZm9ybWF0IHRvIFVuaXggXAorZm9ybWF0IGFuZCB2aWNlIHZlcnNhLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXRlcmxhbi5ob21lLnhzNGFsbC5ubC9kb3MydW5peC5odG1sIgorU0VDVElPTiA9ICJzdXBwb3J0IgorCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT0xYjc4ZmNhNzg0ZGIyNGY0YTQwZTMwYjMwMDc4N2YzZiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQuY29kZS5zZi5uZXQvcC9kb3MydW5peC9kb3MydW5peCIKKworIyBSZWxlYXNlIDcuNC4wCitTUkNSRVYgPSAiMTE4MjUzM2JkZTNjMWZlNjViZTJlYWQ0NjVlODc2NzFmYWEyYzAyNyIKKworUyA9ICIke1dPUktESVJ9L2dpdC9kb3MydW5peCIKKworaW5oZXJpdCBnZXR0ZXh0IHBlcmxuYXRpdmUKKworIyBUaGUgZG9zMnVuaXggTkxTIHJlbGllcyBvbiBwbzRhLW5hdGl2ZSwgd2hpbGUgcG80YSByZWNpcGUgaXMKKyMgcHJvdmlkZWQgYnkgbWV0YS1wZXJsIGxheWVyLCBzbyBtYWtlIGl0IG9wdGlvbmFsIGhlcmUsIHlvdQorIyBuZWVkIGhhdmUgbWV0YS1wZXJsIGluIGJibGF5ZXJzLmNvbmYgYmVmb3JlIGVuYWJsaW5nIG5scyBpbgorIyBQQUNLQUdFQ09ORklHLgorUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbmxzXSA9ICJFTkFCTEVfTkxTPTEsRU5BQkxFX05MUz0scG80YS1uYXRpdmUiCisKK0VYVFJBX09FTUFLRSA9ICIke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IExERkxBR1NfVVNFUj0nJHtMREZMQUdTfSciCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gIkVOQUJMRV9OTFM9IgorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0ke2Jhc2VfcHJlZml4fSIgaW5zdGFsbAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VuZ2luZS1wa2NzMTEvZW5naW5lLXBrY3MxMV8wLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZW5naW5lLXBrY3MxMS9lbmdpbmUtcGtjczExXzAuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDdmNzAxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZW5naW5lLXBrY3MxMS9lbmdpbmUtcGtjczExXzAuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFBLQ1MiCi1ERVNDUklQVElPTiA9ICJcCi1FbmdpbmVfcGtjczExIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGFuIGVuZ2luZSBmb3IgT3BlblNTTC4gSXQgY2FuIGJlIFwKLWxvYWRlZCB1c2luZyBjb2RlLCBjb25maWcgZmlsZSBvciBjb21tYW5kIGxpbmUgYW5kIHdpbGwgcGFzcyBhbnkgZnVuY3Rpb24gXAotY2FsbCBieSBvcGVuc3NsIHRvIGEgUEtDUyBjYXJkcyBhbmQgc29mdHdhcmUgZm9yIHVzaW5nIHNtYXJ0IGNhcmRzIGluIFBLQ1MiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vT3BlblNDL2VuZ2luZV9wa2NzMTEiCi1TRUNUSU9OID0gIkRldmVsb3BtZW50L0xpYnJhcmllcyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL2VuZ2luZV9wa2NzMTEuaDtzdGFydGxpbmU9MTtlbmRsaW5lPTI2O21kNT05NzNhMTlmOGE2MTA1ZGUwNDdmMmFkZmJiZmMwNGMzMyIKLURFUEVORFMgPSAib3BlbnNzbCBsaWJwMTEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9PcGVuU0MvZW5naW5lX3BrY3MxMS5naXQiCi1TUkNSRVYgPSAiMTMyZmNmMmM4YjMxOWY5ZjRiMmViZGM4ZGNiNTRmZjQ5NmRjMDUxOSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1kaXNhYmxlLXN0YXRpYyBcCi0gICAgLS1saWJkaXIgJHtsaWJkaXJ9L2VuZ2luZXMgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgcm0gLWYgJHtEfSR7bGliZGlyfS9lbmdpbmVzL2xpYnBrY3MxMS5sYQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2VuZ2luZXMvbGlicGtjczExJHtTT0xJQlNERVZ9IgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZW5naW5lcy8uZGVidWcvIgotCi1SREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCBsaWJwMTEgb3BlbnNjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ldmVudGxvZy9ldmVudGxvZ18wLjIuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2ZW50bG9nL2V2ZW50bG9nXzAuMi4xMy5iYgppbmRleCA1OWIwMWI2Li4xM2ViNzk0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2ZW50bG9nL2V2ZW50bG9nXzAuMi4xMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2ZW50bG9nL2V2ZW50bG9nXzAuMi4xMy5iYgpAQCAtMTMsNyArMTMsNyBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iOGJhOGU3N2JjZGE5YTUzZmFjMGZlMzlmZTk1Nzc2NyIKIAotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmJhbGFiaXQuY29tL2Rvd25sb2Fkcy9maWxlcy9zeXNsb2ctbmcvb3Blbi1zb3VyY2UtZWRpdGlvbi8zLjQuMi9zb3VyY2UvJHtCUE59XyR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuYmFsYWJpdC5jb20vZG93bmxvYWRzL3N5c2xvZy1uZy9vcGVuLXNvdXJjZS1lZGl0aW9uLzMuNC4yL3NvdXJjZS8ke0JQTn1fJHtQVn0udGFyLmd6IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mZnR3L2ZmdHdfMy4zLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvZmZ0d18zLjMuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQxNGUxNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvZmZ0d18zLjMuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkZGVFciCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vd3d3LmZmdHcub3JnL2ZmdHctJHtQVn0tcGwxLnRhci5neiBcCi0gICAgZmlsZTovLzAwMDEtTkVPTi1hdXRvZGV0ZWN0aW9uLXNlZ2ZhdWx0cy1hc3N1bWUtbmVvbi1wcmVzZW50LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ODJhMGU3OGQ2OTY2Y2EzN2M3NDQ2ZDRhYjRjYzJhMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZWY0YWE4NDI3ZDk3ODU4MzliYzc2N2YzZWI2YTg0ZmNiNWU5YTM3YzMxZWQ3N2EwNGU3ZTA0NzUxOWExODNkIgotCi1TID0gIiR7V09SS0RJUn0vZmZ0dy0ke1BWfS1wbDEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIHdlIGhhZCBtdWx0aXBsZSByZWNpcGVzIGluIHRoZSBwYXN0Ci1QUk9WSURFUyA9ICJmZnR3bCBmZnR3ZiIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1mb3J0cmFuIC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS10aHJlYWRzIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0KLUZGVFdfTkVPTiA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0tZW5hYmxlLW5lb24nLCAnJywgZCl9IgotRkZUV19ORU9OX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAjIGNvbmZpZ3VyZSBmZnR3Ci0gICAgcm0gLXJmICR7V09SS0RJUn0vYnVpbGQtZmZ0dwotCW1rZGlyIC1wICR7Qn0KLSAgICBjZCAke0J9Ci0gICAgIyBmdWxsIChyZSljb25maWd1cmUKLSAgICBhdXRvdG9vbHNfZG9fY29uZmlndXJlCi0gICAgbXYgJHtCfSAke1dPUktESVJ9L2J1aWxkLWZmdHcKLQotICAgICMgY29uZmlndXJlIGZmdHdsCi0gICAgcm0gLXJmICR7V09SS0RJUn0vYnVpbGQtZmZ0d2wKLQlta2RpciAtcCAke0J9Ci0gICAgY2QgJHtCfQotICAgICMgY29uZmlndXJlIG9ubHkKLSAgICBvZV9ydW5jb25mICAtLWVuYWJsZS1sb25nLWRvdWJsZQotICAgIG12ICR7Qn0gJHtXT1JLRElSfS9idWlsZC1mZnR3bCAKLQotICAgICMgY29uZmlndXJlIGZmdHdmCi0gICAgcm0gLXJmICR7V09SS0RJUn0vYnVpbGQtZmZ0d2YKLQlta2RpciAtcCAke0J9Ci0gICAgY2QgJHtCfQotICAgICMgY29uZmlndXJlIG9ubHkKLSAgICBvZV9ydW5jb25mIC0tZW5hYmxlLXNpbmdsZSAke0ZGVFdfTkVPTn0KLSAgICBtdiAke0J9ICR7V09SS0RJUn0vYnVpbGQtZmZ0d2YKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBmb3IgbGliIGluIGZmdHcgZmZ0d2wgZmZ0d2Y7IGRvCi0gICAgICAgIGNkICR7V09SS0RJUn0vYnVpbGQtJGxpYgotICAgICAgICBhdXRvdG9vbHNfZG9fY29tcGlsZQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBmb3IgbGliIGluIGZmdHcgZmZ0d2wgZmZ0d2Y7IGRvCi0gICAgICAgIGNkICR7V09SS0RJUn0vYnVpbGQtJGxpYgotICAgICAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAotICAgIGRvbmUKLX0KLQotCi1QQUNLQUdFUyA9KyAibGliZmZ0dyBsaWJmZnR3bCBsaWJmZnR3ZiIKLUZJTEVTX2xpYmZmdHcgPSAiJHtsaWJkaXJ9L2xpYmZmdHczLnNvLiogJHtsaWJkaXJ9L2xpYmZmdHczXyouc28uKiIKLUZJTEVTX2xpYmZmdHdsID0gIiR7bGliZGlyfS9saWJmZnR3M2wuc28uKiAke2xpYmRpcn0vbGliZmZ0dzNsXyouc28uKiIKLUZJTEVTX2xpYmZmdHdmID0gIiR7bGliZGlyfS9saWJmZnR3M2Yuc28uKiAke2xpYmRpcn0vbGliZmZ0dzNmXyouc28uKiIKLQotUEFDS0FHRVMgPSsgImZmdHctd2lzZG9tIGZmdHdsLXdpc2RvbSBmZnR3Zi13aXNkb20gZmZ0dy13aXNkb20tdG8tY29uZiIKLUZJTEVTX2ZmdHctd2lzZG9tID0gIiR7YmluZGlyfS9mZnR3LXdpc2RvbSIKLUZJTEVTX2ZmdHdsLXdpc2RvbSA9ICIke2JpbmRpcn0vZmZ0d2wtd2lzZG9tIgotRklMRVNfZmZ0d2Ytd2lzZG9tID0gIiR7YmluZGlyfS9mZnR3Zi13aXNkb20iCi1GSUxFU19mZnR3LXdpc2RvbS10by1jb25mID0gIiR7YmluZGlyfS9mZnR3LXdpc2RvbS10by1jb25mIgotCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmZ0dy9mZnR3XzMuMy43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mZnR3L2ZmdHdfMy4zLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFlNmVjOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmZ0dy9mZnR3XzMuMy43LmJiCkBAIC0wLDAgKzEsODAgQEAKK0RFU0NSSVBUSU9OID0gIkZGVFciCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vd3d3LmZmdHcub3JnL2ZmdHctJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vMDAwMS1ORU9OLWF1dG9kZXRlY3Rpb24tc2VnZmF1bHRzLWFzc3VtZS1uZW9uLXByZXNlbnQucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjBkNTkxNWQ3ZDM5YjMyNTNjMWNjMDUwMzBkNzlhYzQ3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiNjA5YjdmZWJhNTIzMGU4ZjZkZDhkMjQ1ZGRiZWZhYzMyNGM1YTZhZTQxODY5NDc2NzBkOWFjMmNkMjU1NzMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIHdlIGhhZCBtdWx0aXBsZSByZWNpcGVzIGluIHRoZSBwYXN0CitQUk9WSURFUyA9ICJmZnR3bCBmZnR3ZiIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1mb3J0cmFuIC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS10aHJlYWRzIgorCitDRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCisKK0ZGVFdfTkVPTiA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0tZW5hYmxlLW5lb24nLCAnJywgZCl9IgorRkZUV19ORU9OX2NsYXNzLW5hdGl2ZSA9ICIiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAjIGNvbmZpZ3VyZSBmZnR3CisgICAgcm0gLXJmICR7V09SS0RJUn0vYnVpbGQtZmZ0dworCW1rZGlyIC1wICR7Qn0KKyAgICBjZCAke0J9CisgICAgIyBmdWxsIChyZSljb25maWd1cmUKKyAgICBhdXRvdG9vbHNfZG9fY29uZmlndXJlCisgICAgbXYgJHtCfSAke1dPUktESVJ9L2J1aWxkLWZmdHcKKworICAgICMgY29uZmlndXJlIGZmdHdsCisgICAgcm0gLXJmICR7V09SS0RJUn0vYnVpbGQtZmZ0d2wKKwlta2RpciAtcCAke0J9CisgICAgY2QgJHtCfQorICAgICMgY29uZmlndXJlIG9ubHkKKyAgICBvZV9ydW5jb25mICAtLWVuYWJsZS1sb25nLWRvdWJsZQorICAgIG12ICR7Qn0gJHtXT1JLRElSfS9idWlsZC1mZnR3bCAKKworICAgICMgY29uZmlndXJlIGZmdHdmCisgICAgcm0gLXJmICR7V09SS0RJUn0vYnVpbGQtZmZ0d2YKKwlta2RpciAtcCAke0J9CisgICAgY2QgJHtCfQorICAgICMgY29uZmlndXJlIG9ubHkKKyAgICBvZV9ydW5jb25mIC0tZW5hYmxlLXNpbmdsZSAke0ZGVFdfTkVPTn0KKyAgICBtdiAke0J9ICR7V09SS0RJUn0vYnVpbGQtZmZ0d2YKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICBmb3IgbGliIGluIGZmdHcgZmZ0d2wgZmZ0d2Y7IGRvCisgICAgICAgIGNkICR7V09SS0RJUn0vYnVpbGQtJGxpYgorICAgICAgICBhdXRvdG9vbHNfZG9fY29tcGlsZQorICAgIGRvbmUKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBmb3IgbGliIGluIGZmdHcgZmZ0d2wgZmZ0d2Y7IGRvCisgICAgICAgIGNkICR7V09SS0RJUn0vYnVpbGQtJGxpYgorICAgICAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAorICAgIGRvbmUKK30KKworCitQQUNLQUdFUyA9KyAibGliZmZ0dyBsaWJmZnR3bCBsaWJmZnR3ZiIKK0ZJTEVTX2xpYmZmdHcgPSAiJHtsaWJkaXJ9L2xpYmZmdHczLnNvLiogJHtsaWJkaXJ9L2xpYmZmdHczXyouc28uKiIKK0ZJTEVTX2xpYmZmdHdsID0gIiR7bGliZGlyfS9saWJmZnR3M2wuc28uKiAke2xpYmRpcn0vbGliZmZ0dzNsXyouc28uKiIKK0ZJTEVTX2xpYmZmdHdmID0gIiR7bGliZGlyfS9saWJmZnR3M2Yuc28uKiAke2xpYmRpcn0vbGliZmZ0dzNmXyouc28uKiIKKworUEFDS0FHRVMgPSsgImZmdHctd2lzZG9tIGZmdHdsLXdpc2RvbSBmZnR3Zi13aXNkb20gZmZ0dy13aXNkb20tdG8tY29uZiIKK0ZJTEVTX2ZmdHctd2lzZG9tID0gIiR7YmluZGlyfS9mZnR3LXdpc2RvbSIKK0ZJTEVTX2ZmdHdsLXdpc2RvbSA9ICIke2JpbmRpcn0vZmZ0d2wtd2lzZG9tIgorRklMRVNfZmZ0d2Ytd2lzZG9tID0gIiR7YmluZGlyfS9mZnR3Zi13aXNkb20iCitGSUxFU19mZnR3LXdpc2RvbS10by1jb25mID0gIiR7YmluZGlyfS9mZnR3LXdpc2RvbS10by1jb25mIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICJsaWJmZnR3IGxpYmZmdHdsIGxpYmZmdHdmIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmxpdGUvZmxpdGUtYWxzYS0xLjMvZmxpdGUtMS4zLWFsc2Ffc3VwcG9ydC0xLjIuZGlmZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmxpdGUvZmxpdGUtYWxzYS0xLjMvZmxpdGUtMS4zLWFsc2Ffc3VwcG9ydC0xLjIuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNlNGI3YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsaXRlL2ZsaXRlLWFsc2EtMS4zL2ZsaXRlLTEuMy1hbHNhX3N1cHBvcnQtMS4yLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSw2NjE1ICswLDAgQEAKLUluZGV4OiBsYW5nL3VzZW5nbGlzaC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL2xhbmcvdXNlbmdsaXNoL01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL2xhbmcvdXNlbmdsaXNoL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTM4LDYgKzM4LDcgQEAKLSBESVJOQU1FPWxhbmcvdXNlbmdsaXNoCi0gQlVJTERfRElSUyA9IAotIEFMTF9ESVJTPSAKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29uZmlnCi0gSCA9IHVzZW5nbGlzaC5oIHVzX2ludF9hY2NlbnRfY2FydC5oIHVzX2ludF90b25lX2NhcnQuaCB1c19kdXJ6X2NhcnQuaCBcCi0gICAgIHVzX2ZmZWF0dXJlcy5oIHVzX3BocmFzaW5nX2NhcnQuaCB1c190ZXh0LmggdXNfZjAuaCB1c19udW1zX2NhcnQuaAotIFNSQ1MgPSB1c19pbnRfYWNjZW50X2NhcnQuYyB1c19pbnRfdG9uZV9jYXJ0LmMgdXNfZjBfbW9kZWwuYyBcCi1AQCAtNDUsNyArNDYsMTEgQEAKLSAgICAgICAgdXNfcGhvbmVzZXQuYyB1c19mZmVhdHVyZXMuYyB1c19waHJhc2luZ19jYXJ0LmMgXAotICAgICAgICB1c19ncG9zLmMgdXNfdGV4dC5jIHVzX2V4cGFuZC5jIHVzX3Bvc3RsZXguYyBcCi0gICAgICAgIHVzX251bXNfY2FydC5jIHVzX2Fzd2QuYyB1c2VuZ2xpc2guYyAKLS1PQkpTID0gJChTUkNTOi5jPS5vKQotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0gU0NNPQotIEZJTEVTID0gTWFrZWZpbGUgJChTQ00pICQoU1JDUykgJChIKQotIExJQk5BTUUgPSBmbGl0ZV91c2VuZ2xpc2gKLUluZGV4OiBsYW5nL2NtdV91c19rYWwvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdV91c19rYWwvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2UvbGFuZy9jbXVfdXNfa2FsL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTQzLDcgKzQzLDEyIEBACi0gICAgICAgIGNtdV91c19rYWxfbHBjLmMgXAotICAgICAgICBjbXVfdXNfa2FsX3Jlcy5jIFwKLSAgICAgICAgY211X3VzX2thbF9yZXNpZHguYwotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raW5jbHVkZSAkKFRPUCkvY29uZmlnL2NvbmZpZwotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0gU0NNPQotIEZJTEVTID0gTWFrZWZpbGUgJChTQ00pICQoU1JDUykgJChIKQotIExJQk5BTUUgPSBmbGl0ZV9jbXVfdXNfa2FsCi1JbmRleDogbGFuZy9jbXVfdXNfa2FsMTYvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdV91c19rYWwxNi9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdV91c19rYWwxNi9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC00NCw3ICs0NCwxMiBAQAotICAgICAgICBjbXVfdXNfa2FsMTZfbHBjLmMgXAotICAgICAgICBjbXVfdXNfa2FsMTZfcmVzLmMgXAotICAgICAgICBjbXVfdXNfa2FsMTZfcmVzaWR4LmMKLS1PQkpTID0gJChTUkNTOi5jPS5vKQotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb25maWcKLStpZmRlZiBTSEZMQUdTCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm9zKQotK2Vsc2UKLStPQkpTIDo9ICQoU1JDUzouYz0ubykKLStlbmRpZgotIFNDTT0KLSBGSUxFUyA9IE1ha2VmaWxlICQoU0NNKSAkKFNSQ1MpICQoSCkKLSBMSUJOQU1FID0gZmxpdGVfY211X3VzX2thbDE2Ci1JbmRleDogbGFuZy9jbXVfdGltZV9hd2IvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdV90aW1lX2F3Yi9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdV90aW1lX2F3Yi9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC00NSw3ICs0NSwxMiBAQAotIAljbXVfdGltZV9hd2JfbWNlcC5jIFwKLSAJY211X3RpbWVfYXdiX2xwYy5jIFwKLSAJY211X3RpbWVfYXdiX2xleF9lbnRyeS5jCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29uZmlnCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSBTQ009Ci0gRklMRVMgPSBNYWtlZmlsZSAkKFNDTSkgJChTUkNTKSAkKEgpCi0gTElCTkFNRSA9IGZsaXRlX2NtdV90aW1lX2F3YgotSW5kZXg6IGxhbmcvY211bGV4L01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2UvbGFuZy9jbXVsZXgvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2UvbGFuZy9jbXVsZXgvTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMzgsMTMgKzM4LDIwIEBACi0gRElSTkFNRT1sYW5nL2NtdWxleAotIEJVSUxEX0RJUlMgPSAKLSBBTExfRElSUz0gCi0rCi0gSCA9IGNtdV9sdHNfbW9kZWwuaCBjbXVsZXguaAotIFNSQ1MgPSBjbXVfbHRzX3J1bGVzLmMgY211X2x0c19tb2RlbC5jIFwKLSAgICAgICAgY211X2xleC5jIGNtdV9sZXhfZW50cmllcy5jIGNtdV9sZXhfZGF0YS5jCi0gTEVYX0RBVEFfSU5DTFVERVMgPSBjbXVfbGV4X2RhdGFfcmF3LmMgY211X2xleF9udW1fYnl0ZXMuYyBcCi0gICAgICBjbXVfbGV4X3Bob25lc19odWZmX3RhYmxlLmMgY211X2xleF9lbnRyaWVzX2h1ZmZfdGFibGUuYwotIAotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raW5jbHVkZSAkKFRPUCkvY29uZmlnL2NvbmZpZwotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0rCi0gU0NSSVBUUz1tYWtlX2NtdWxleCAgCi0gCi0gU0NNPQotSW5kZXg6IGNvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL2NvbmZpZ3VyZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9jb25maWd1cmUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMSwzMjQgKzEsMzggQEAKLSAjISAvYmluL3NoCi0rCi0gIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotLSMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjU3LgotKyMgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgdXNpbmcgYXV0b2NvbmYgdmVyc2lvbiAyLjEzIAotKyMgQ29weXJpZ2h0IChDKSAxOTkyLCA5MywgOTQsIDk1LCA5NiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjCi0tIyBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMgotLSMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gIyBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LgotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIE00c2ggSW5pdGlhbGl6YXRpb24uICAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIAotLSMgQmUgQm91cm5lIGNvbXBhdGlibGUKLS1pZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIGVtdWxhdGUgc2gKLS0gIE5VTExDTUQ9OgotLSAgIyBac2ggMy54IGFuZCA0LnggcGVyZm9ybXMgd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAotLSAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KLS0gIGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJwotLWVsaWYgdGVzdCAtbiAiJHtCQVNIX1ZFUlNJT04rc2V0fSIgJiYgKHNldCAtbyBwb3NpeCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICBzZXQgLW8gcG9zaXgKLS1maQotLQotLSMgU3VwcG9ydCB1bnNldCB3aGVuIHBvc3NpYmxlLgotLWlmIChGT089Rk9POyB1bnNldCBGT08pID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgYXNfdW5zZXQ9dW5zZXQKLS1lbHNlCi0tICBhc191bnNldD1mYWxzZQotLWZpCi0tCi0tCi0tIyBXb3JrIGFyb3VuZCBidWdzIGluIHByZS0zLjAgVVdJTiBrc2guCi0tJGFzX3Vuc2V0IEVOViBNQUlMIE1BSUxQQVRICi0tUFMxPSckICcKLS1QUzI9Jz4gJwotLVBTND0nKyAnCi0tCi0tIyBOTFMgbnVpc2FuY2VzLgotLWZvciBhc192YXIgaW4gXAotLSAgTEFORyBMQU5HVUFHRSBMQ19BRERSRVNTIExDX0FMTCBMQ19DT0xMQVRFIExDX0NUWVBFIExDX0lERU5USUZJQ0FUSU9OIFwKLS0gIExDX01FQVNVUkVNRU5UIExDX01FU1NBR0VTIExDX01PTkVUQVJZIExDX05BTUUgTENfTlVNRVJJQyBMQ19QQVBFUiBcCi0tICBMQ19URUxFUEhPTkUgTENfVElNRQotLWRvCi0tICBpZiAoc2V0ICt4OyB0ZXN0IC1uICJgKGV2YWwgJGFzX3Zhcj1DOyBleHBvcnQgJGFzX3ZhcikgMj4mMWAiKTsgdGhlbgotLSAgICBldmFsICRhc192YXI9QzsgZXhwb3J0ICRhc192YXIKLS0gIGVsc2UKLS0gICAgJGFzX3Vuc2V0ICRhc192YXIKLS0gIGZpCi0tZG9uZQotLQotLSMgUmVxdWlyZWQgdG8gdXNlIGJhc2VuYW1lLgotLWlmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICBhc19leHByPWV4cHIKLS1lbHNlCi0tICBhc19leHByPWZhbHNlCi0tZmkKLS0KLS1pZiAoYmFzZW5hbWUgLykgPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgIlhgYmFzZW5hbWUgLyAyPiYxYCIgPSAiWC8iOyB0aGVuCi0tICBhc19iYXNlbmFtZT1iYXNlbmFtZQotLWVsc2UKLS0gIGFzX2Jhc2VuYW1lPWZhbHNlCi0tZmkKLS0KLS0KLS0jIE5hbWUgb2YgdGhlIGV4ZWN1dGFibGUuCi0tYXNfbWU9YCRhc19iYXNlbmFtZSAiJDAiIHx8Ci0tJGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkvKiQnIFx8IFwKLS0JIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcCi0tCSBYIiQwIiA6ICdYXCgvXCkkJyBcfCBcCi0tCSAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKLS1lY2hvIFgvIiQwIiB8Ci0tICAgIHNlZCAnL14uKlwvXChbXi9dW14vXSpcKVwvKiQveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwvXChcL1wvXCkkL3sgcy8vXDEvOyBxOyB9Ci0tICAJICAvXlhcL1woXC9cKS4qL3sgcy8vXDEvOyBxOyB9Ci0tICAJICBzLy4qLy4vOyBxJ2AKLS0KLS0KLS0jIFBBVEggbmVlZHMgQ1IsIGFuZCBMSU5FTk8gbmVlZHMgQ1IgYW5kIFBBVEguCi0tIyBBdm9pZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLgotLWFzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JwotLWFzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJwotLWFzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUwotLWFzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScKLS1hc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKLS0KLS0jIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KLS1pZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgotLSAgZWNobyAiIyEgL2Jpbi9zaCIgPmNvbmYkJC5zaAotLSAgZWNobyAgImV4aXQgMCIgICA+PmNvbmYkJC5zaAotLSAgY2htb2QgK3ggY29uZiQkLnNoCi0tICBpZiAoUEFUSD0iL25vbmV4aXN0ZW50Oy4iOyBjb25mJCQuc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgICBQQVRIX1NFUEFSQVRPUj0nOycKLS0gIGVsc2UKLS0gICAgUEFUSF9TRVBBUkFUT1I9OgotLSAgZmkKLS0gIHJtIC1mIGNvbmYkJC5zaAotLWZpCi0tCi0tCi0tICBhc19saW5lbm9fMT0kTElORU5PCi0tICBhc19saW5lbm9fMj0kTElORU5PCi0tICBhc19saW5lbm9fMz1gKGV4cHIgJGFzX2xpbmVub18xICsgMSkgMj4vZGV2L251bGxgCi0tICB0ZXN0ICJ4JGFzX2xpbmVub18xIiAhPSAieCRhc19saW5lbm9fMiIgJiYKLS0gIHRlc3QgIngkYXNfbGluZW5vXzMiICA9ICJ4JGFzX2xpbmVub18yIiAgfHwgewotLSAgIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gcGF0aCBhdCBhbGwKLS0gICMgcmVsYXRpdmUgb3Igbm90LgotLSAgY2FzZSAkMCBpbgotLSAgICAqW1xcL10qICkgYXNfbXlzZWxmPSQwIDs7Ci0tICAgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICB0ZXN0IC1yICIkYXNfZGlyLyQwIiAmJiBhc19teXNlbGY9JGFzX2Rpci8kMCAmJiBicmVhawotLWRvbmUKLS0KLS0gICAgICAgOzsKLS0gIGVzYWMKLS0gICMgV2UgZGlkIG5vdCBmaW5kIG91cnNlbHZlcywgbW9zdCBwcm9iYWJseSB3ZSB3ZXJlIHJ1biBhcyBgc2ggQ09NTUFORCcKLS0gICMgaW4gd2hpY2ggY2FzZSB3ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLgotLSAgaWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbgotLSAgICBhc19teXNlbGY9JDAKLS0gIGZpCi0tICBpZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuCi0tICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIHBhdGgiID4mMgotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotLSAgZmkKLS0gIGNhc2UgJENPTkZJR19TSEVMTCBpbgotLSAgJycpCi0tICAgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluIC9iaW4kUEFUSF9TRVBBUkFUT1IvdXNyL2JpbiRQQVRIX1NFUEFSQVRPUiRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBmb3IgYXNfYmFzZSBpbiBzaCBiYXNoIGtzaCBzaDU7IGRvCi0tCSBjYXNlICRhc19kaXIgaW4KLS0JIC8qKQotLQkgICBpZiAoIiRhc19kaXIvJGFzX2Jhc2UiIC1jICcKLS0gIGFzX2xpbmVub18xPSRMSU5FTk8KLS0gIGFzX2xpbmVub18yPSRMSU5FTk8KLS0gIGFzX2xpbmVub18zPWAoZXhwciAkYXNfbGluZW5vXzEgKyAxKSAyPi9kZXYvbnVsbGAKLS0gIHRlc3QgIngkYXNfbGluZW5vXzEiICE9ICJ4JGFzX2xpbmVub18yIiAmJgotLSAgdGVzdCAieCRhc19saW5lbm9fMyIgID0gIngkYXNfbGluZW5vXzIiICcpIDI+L2Rldi9udWxsOyB0aGVuCi0tCSAgICAgJGFzX3Vuc2V0IEJBU0hfRU5WIHx8IHRlc3QgIiR7QkFTSF9FTlYrc2V0fSIgIT0gc2V0IHx8IHsgQkFTSF9FTlY9OyBleHBvcnQgQkFTSF9FTlY7IH0KLS0JICAgICAkYXNfdW5zZXQgRU5WIHx8IHRlc3QgIiR7RU5WK3NldH0iICE9IHNldCB8fCB7IEVOVj07IGV4cG9ydCBFTlY7IH0KLS0JICAgICBDT05GSUdfU0hFTEw9JGFzX2Rpci8kYXNfYmFzZQotLQkgICAgIGV4cG9ydCBDT05GSUdfU0hFTEwKLS0JICAgICBleGVjICIkQ09ORklHX1NIRUxMIiAiJDAiICR7MSsiJEAifQotLQkgICBmaTs7Ci0tCSBlc2FjCi0tICAgICAgIGRvbmUKLS1kb25lCi0tOzsKLS0gIGVzYWMKLS0KLS0gICMgQ3JlYXRlICRhc19tZS5saW5lbm8gYXMgYSBjb3B5IG9mICRhc19teXNlbGYsIGJ1dCB3aXRoICRMSU5FTk8KLS0gICMgdW5pZm9ybWx5IHJlcGxhY2VkIGJ5IHRoZSBsaW5lIG51bWJlci4gIFRoZSBmaXJzdCAnc2VkJyBpbnNlcnRzIGEKLS0gICMgbGluZS1udW1iZXIgbGluZSBiZWZvcmUgZWFjaCBsaW5lOyB0aGUgc2Vjb25kICdzZWQnIGRvZXMgdGhlIHJlYWwKLS0gICMgd29yay4gIFRoZSBzZWNvbmQgc2NyaXB0IHVzZXMgJ04nIHRvIHBhaXIgZWFjaCBsaW5lLW51bWJlciBsaW5lCi0tICAjIHdpdGggdGhlIG51bWJlcmVkIGxpbmUsIGFuZCBhcHBlbmRzIHRyYWlsaW5nICctJyBkdXJpbmcKLS0gICMgc3Vic3RpdHV0aW9uIHNvIHRoYXQgJExJTkVOTyBpcyBub3QgYSBzcGVjaWFsIGNhc2UgYXQgbGluZSBlbmQuCi0tICAjIChSYWphIFIgSGFyaW5hdGggc3VnZ2VzdGVkIHNlZCAnPScsIGFuZCBQYXVsIEVnZ2VydCB3cm90ZSB0aGUKLS0gICMgc2Vjb25kICdzZWQnIHNjcmlwdC4gIEJsYW1lIExlZSBFLiBNY01haG9uIGZvciBzZWQncyBzeW50YXguICA6LSkKLS0gIHNlZCAnPScgPCRhc19teXNlbGYgfAotLSAgICBzZWQgJwotLSAgICAgIE4KLS0gICAgICBzLCQsLSwKLS0gICAgICA6IGxvb3AKLS0gICAgICBzLF5cKFsnJGFzX2NyX2RpZ2l0cyddKlwpXCguKlwpWyRdTElORU5PXChbXickYXNfY3JfYWxudW0nX11cKSxcMVwyXDFcMywKLS0gICAgICB0IGxvb3AKLS0gICAgICBzLC0kLCwKLS0gICAgICBzLF5bJyRhc19jcl9kaWdpdHMnXSpcbiwsCi0tICAgICcgPiRhc19tZS5saW5lbm8gJiYKLS0gIGNobW9kICt4ICRhc19tZS5saW5lbm8gfHwKLS0gICAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY3JlYXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tCi0tICAjIERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5nZXMgJFswXSwgY2F1c2luZyBhbGwgc29ydCBvZiBwcm9ibGVtcwotLSAgIyAodGhlIGRpcm5hbWUgb2YgJFswXSBpcyBub3QgdGhlIHBsYWNlIHdoZXJlIHdlIG1pZ2h0IGZpbmQgdGhlCi0tICAjIG9yaWdpbmFsIGFuZCBzbyBvbi4gIEF1dG9jb25mIGlzIGVzcGVjaWFsbHkgc2Vuc2libGUgdG8gdGhpcykuCi0tICAuIC4vJGFzX21lLmxpbmVubwotLSAgIyBFeGl0IHN0YXR1cyBpcyB0aGF0IG9mIHRoZSBsYXN0IGNvbW1hbmQuCi0tICBleGl0Ci0tfQotLQotLQotLWNhc2UgYGVjaG8gInRlc3RpbmdcYyI7IGVjaG8gMSwyLDNgLGBlY2hvIC1uIHRlc3Rpbmc7IGVjaG8gMSwyLDNgIGluCi0tICAqYyosLW4qKSBFQ0hPX049IEVDSE9fQz0nCi0tJyBFQ0hPX1Q9JwknIDs7Ci0tICAqYyosKiAgKSBFQ0hPX049LW4gRUNIT19DPSBFQ0hPX1Q9IDs7Ci0tICAqKSAgICAgICBFQ0hPX049IEVDSE9fQz0nXGMnIEVDSE9fVD0gOzsKLS1lc2FjCi0tCi0taWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIGFzX2V4cHI9ZXhwcgotLWVsc2UKLS0gIGFzX2V4cHI9ZmFsc2UKLS1maQotLQotLXJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCi0tZWNobyA+Y29uZiQkLmZpbGUKLS1pZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KLS0gICMgV2UgY291bGQganVzdCBjaGVjayBmb3IgREpHUFA7IGJ1dCB0aGlzIHRlc3QgYSkgd29ya3MgYikgaXMgbW9yZSBnZW5lcmljCi0tICAjIGFuZCBjKSB3aWxsIHJlbWFpbiB2YWxpZCBvbmNlIERKR1BQIHN1cHBvcnRzIHN5bWxpbmtzIChESkdQUCAyLjA0KS4KLS0gIGlmIHRlc3QgLWYgY29uZiQkLmV4ZTsgdGhlbgotLSAgICAjIERvbid0IHVzZSBsbiBhdCBhbGw7IHdlIGRvbid0IGhhdmUgYW55IGxpbmtzCi0tICAgIGFzX2xuX3M9J2NwIC1wJwotLSAgZWxzZQotLSAgICBhc19sbl9zPSdsbiAtcycKLS0gIGZpCi0tZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KLS0gIGFzX2xuX3M9bG4KLS1lbHNlCi0tICBhc19sbl9zPSdjcCAtcCcKLS1maQotLXJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCi0tCi0taWYgbWtkaXIgLXAgLiAyPi9kZXYvbnVsbDsgdGhlbgotLSAgYXNfbWtkaXJfcD06Ci0tZWxzZQotLSAgYXNfbWtkaXJfcD1mYWxzZQotLWZpCi0tCi0tYXNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC1mIgotLQotLSMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4KLS1hc190cl9jcHA9InNlZCB5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWciCi0tCi0tIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCi0tYXNfdHJfc2g9InNlZCB5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnIgotLQotLQotLSMgSUZTCi0tIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkgdGhhdCBvcmRlci4KLS1hc19ubD0nCi0tJwotLUlGUz0iIAkkYXNfbmwiCi0tCi0tIyBDRFBBVEguCi0tJGFzX3Vuc2V0IENEUEFUSAotLQotLQotLSMgTmFtZSBvZiB0aGUgaG9zdC4KLS0jIGhvc3RuYW1lIG9uIHNvbWUgc3lzdGVtcyAoU1ZSMy4yLCBMaW51eCkgcmV0dXJucyBhIGJvZ3VzIGV4aXQgc3RhdHVzLAotLSMgc28gdW5hbWUgZ2V0cyBydW4gdG9vLgotLWFjX2hvc3RuYW1lPWAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAotLQotLWV4ZWMgNj4mMQotLQotLSMKLS0jIEluaXRpYWxpemF0aW9ucy4KLS0jCi0rIyBEZWZhdWx0czoKLSthY19oZWxwPQotIGFjX2RlZmF1bHRfcHJlZml4PS91c3IvbG9jYWwKLS1hY19jb25maWdfbGlib2JqX2Rpcj0uCi0tY3Jvc3NfY29tcGlsaW5nPW5vCi0tc3ViZGlycz0KLS1NRkxBR1M9Ci0tTUFLRUZMQUdTPQotLVNIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9Ci0rIyBBbnkgYWRkaXRpb25zIGZyb20gY29uZmlndXJlLmluOgotK2FjX2hlbHA9IiRhY19oZWxwCi0rICAtLWRpc2FibGUtc2hhcmVkICAgICB3aXRob3V0IHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQiCi0rYWNfaGVscD0iJGFjX2hlbHAKLSsgIC0tZGlzYWJsZS1zb2NrZXRzICAgICB3aXRob3V0IHNvY2tldCBzdXBwb3J0IgotK2FjX2hlbHA9IiRhY19oZWxwCi0rICAtLXdpdGgtYXVkaW8gICAgICAgICAgd2l0aCBzcGVjaWZpYyBhdWRpbyBzdXBwb3J0IChub25lIGxpbnV4IGZyZWVic2QgZXRjKSAiCi0rYWNfaGVscD0iJGFjX2hlbHAKLSsgIC0td2l0aC1sYW5nICAgICAgICAgICB3aXRoIGxhbmd1YWdlICIKLSthY19oZWxwPSIkYWNfaGVscAotKyAgLS13aXRoLXZveCAgICAgICAgICAgIHdpdGggdm94ICIKLSthY19oZWxwPSIkYWNfaGVscAotKyAgLS13aXRoLWxleCAgICAgICAgICAgIHdpdGggbGV4aWNvbiAiCi0gCi0tIyBNYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBwdXQgaW4gYSBzaGVsbCBoZXJlIGRvY3VtZW50LgotLSMgVGhpcyB2YXJpYWJsZSBzZWVtcyBvYnNvbGV0ZS4gIEl0IHNob3VsZCBwcm9iYWJseSBiZSByZW1vdmVkLCBhbmQKLS0jIG9ubHkgYWNfbWF4X3NlZF9saW5lcyBzaG91bGQgYmUgdXNlZC4KLS06ICR7YWNfbWF4X2hlcmVfbGluZXM9Mzh9Ci0tCi0tIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCi0tUEFDS0FHRV9OQU1FPQotLVBBQ0tBR0VfVEFSTkFNRT0KLS1QQUNLQUdFX1ZFUlNJT049Ci0tUEFDS0FHRV9TVFJJTkc9Ci0tUEFDS0FHRV9CVUdSRVBPUlQ9Ci0tCi0tYWNfdW5pcXVlX2ZpbGU9ImluY2x1ZGUvZmxpdGUuaCIKLS0jIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRlcnMgZm9yIG1vc3QgdGVzdHMuCi0tYWNfaW5jbHVkZXNfZGVmYXVsdD0iXAotLSNpbmNsdWRlIDxzdGRpby5oPgotLSNpZiBIQVZFX1NZU19UWVBFU19ICi0tIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jZW5kaWYKLS0jaWYgSEFWRV9TWVNfU1RBVF9ICi0tIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgotLSNlbmRpZgotLSNpZiBTVERDX0hFQURFUlMKLS0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotLSMgaW5jbHVkZSA8c3RkZGVmLmg+Ci0tI2Vsc2UKLS0jIGlmIEhBVkVfU1RETElCX0gKLS0jICBpbmNsdWRlIDxzdGRsaWIuaD4KLS0jIGVuZGlmCi0tI2VuZGlmCi0tI2lmIEhBVkVfU1RSSU5HX0gKLS0jIGlmICFTVERDX0hFQURFUlMgJiYgSEFWRV9NRU1PUllfSAotLSMgIGluY2x1ZGUgPG1lbW9yeS5oPgotLSMgZW5kaWYKLS0jIGluY2x1ZGUgPHN0cmluZy5oPgotLSNlbmRpZgotLSNpZiBIQVZFX1NUUklOR1NfSAotLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotLSNlbmRpZgotLSNpZiBIQVZFX0lOVFRZUEVTX0gKLS0jIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0tI2Vsc2UKLS0jIGlmIEhBVkVfU1RESU5UX0gKLS0jICBpbmNsdWRlIDxzdGRpbnQuaD4KLS0jIGVuZGlmCi0tI2VuZGlmCi0tI2lmIEhBVkVfVU5JU1REX0gKLS0jIGluY2x1ZGUgPHVuaXN0ZC5oPgotLSNlbmRpZiIKLS0KLS1hY19zdWJzdF92YXJzPSdTSEVMTCBQQVRIX1NFUEFSQVRPUiBQQUNLQUdFX05BTUUgUEFDS0FHRV9UQVJOQU1FIFBBQ0tBR0VfVkVSU0lPTiBQQUNLQUdFX1NUUklORyBQQUNLQUdFX0JVR1JFUE9SVCBleGVjX3ByZWZpeCBwcmVmaXggcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSBiaW5kaXIgc2JpbmRpciBsaWJleGVjZGlyIGRhdGFkaXIgc3lzY29uZmRpciBzaGFyZWRzdGF0ZWRpciBsb2NhbHN0YXRlZGlyIGxpYmRpciBpbmNsdWRlZGlyIG9sZGluY2x1ZGVkaXIgaW5mb2RpciBtYW5kaXIgYnVpbGRfYWxpYXMgaG9zdF9hbGlhcyB0YXJnZXRfYWxpYXMgREVGUyBFQ0hPX0MgRUNIT19OIEVDSE9fVCBMSUJTIGJ1aWxkIGJ1aWxkX2NwdSBidWlsZF92ZW5kb3IgYnVpbGRfb3MgaG9zdCBob3N0X2NwdSBob3N0X3ZlbmRvciBob3N0X29zIHRhcmdldCB0YXJnZXRfY3B1IHRhcmdldF92ZW5kb3IgdGFyZ2V0X29zIENDIENGTEFHUyBMREZMQUdTIENQUEZMQUdTIGFjX2N0X0NDIEVYRUVYVCBPQkpFWFQgUkFOTElCIGFjX2N0X1JBTkxJQiBJTlNUQUxMX1BST0dSQU0gSU5TVEFMTF9TQ1JJUFQgSU5TVEFMTF9EQVRBIEFSIGFjX2N0X0FSIFRBUkdFVF9PUyBUQVJHRVRfQ1BVIE02OEtDQyBMRVhERUZTIFZPWERFRlMgSE9TVF9PUyBIT1NUX0NQVSBPVEhFUkxJQlMgU0hGTEFHUyBNTUFQVFlQRSBTVERJT1RZUEUgQ1BQIEVHUkVQIEFVRElPRFJJVkVSIEFVRElPREVGUyBBVURJT0xJQlMgRkxfTEFORyBGTF9WT1ggRkxfTEVYIExJQk9CSlMgTFRMSUJPQkpTJwotLWFjX3N1YnN0X2ZpbGVzPScnCi0tCi0gIyBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzIHNldCBieSBvcHRpb25zLgotLWFjX2luaXRfaGVscD0KLS1hY19pbml0X3ZlcnNpb249ZmFsc2UKLSAjIFRoZSB2YXJpYWJsZXMgaGF2ZSB0aGUgc2FtZSBuYW1lcyBhcyB0aGUgb3B0aW9ucywgd2l0aAotICMgZGFzaGVzIGNoYW5nZWQgdG8gdW5kZXJsaW5lcy4KLS1jYWNoZV9maWxlPS9kZXYvbnVsbAotK2J1aWxkPU5PTkUKLStjYWNoZV9maWxlPS4vY29uZmlnLmNhY2hlCi0gZXhlY19wcmVmaXg9Tk9ORQotK2hvc3Q9Tk9ORQotIG5vX2NyZWF0ZT0KLStub25vcHQ9Tk9ORQotIG5vX3JlY3Vyc2lvbj0KLSBwcmVmaXg9Tk9ORQotIHByb2dyYW1fcHJlZml4PU5PTkUKLUBAIC0zMjcsMTUgKzQxLDEwIEBACi0gc2lsZW50PQotIHNpdGU9Ci0gc3JjZGlyPQotK3RhcmdldD1OT05FCi0gdmVyYm9zZT0KLSB4X2luY2x1ZGVzPU5PTkUKLSB4X2xpYnJhcmllcz1OT05FCi0tCi0tIyBJbnN0YWxsYXRpb24gZGlyZWN0b3J5IG9wdGlvbnMuCi0tIyBUaGVzZSBhcmUgbGVmdCB1bmV4cGFuZGVkIHNvIHVzZXJzIGNhbiAibWFrZSBpbnN0YWxsIGV4ZWNfcHJlZml4PS9mb28iCi0tIyBhbmQgYWxsIHRoZSB2YXJpYWJsZXMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gYmUgYmFzZWQgb24gZXhlY19wcmVmaXgKLS0jIGJ5IGRlZmF1bHQgd2lsbCBhY3R1YWxseSBjaGFuZ2UuCi0tIyBVc2UgYnJhY2VzIGluc3RlYWQgb2YgcGFyZW5zIGJlY2F1c2Ugc2gsIHBlcmwsIGV0Yy4gYWxzbyBhY2NlcHQgdGhlbS4KLSBiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L2JpbicKLSBzYmluZGlyPScke2V4ZWNfcHJlZml4fS9zYmluJwotIGxpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnCi1AQCAtMzQ5LDkgKzU4LDE3IEBACi0gaW5mb2Rpcj0nJHtwcmVmaXh9L2luZm8nCi0gbWFuZGlyPScke3ByZWZpeH0vbWFuJwotIAotKyMgSW5pdGlhbGl6ZSBzb21lIG90aGVyIHZhcmlhYmxlcy4KLStzdWJkaXJzPQotK01GTEFHUz0gTUFLRUZMQUdTPQotK1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9Ci0rIyBNYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBwdXQgaW4gYSBzaGVsbCBoZXJlIGRvY3VtZW50LgotK2FjX21heF9oZXJlX2xpbmVzPTEyCi0rCi0gYWNfcHJldj0KLSBmb3IgYWNfb3B0aW9uCi0gZG8KLSsKLSAgICMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0LgotICAgaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCi0gICAgIGV2YWwgIiRhY19wcmV2PVwkYWNfb3B0aW9uIgotQEAgLTM1OSw1OSArNzYsNTkgQEAKLSAgICAgY29udGludWUKLSAgIGZpCi0gCi0tICBhY19vcHRhcmc9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4W149XSo9XCguKlwpJ2AKLSsgIGNhc2UgIiRhY19vcHRpb24iIGluCi0rICAtKj0qKSBhY19vcHRhcmc9YGVjaG8gIiRhY19vcHRpb24iIHwgc2VkICdzL1stX2EtekEtWjAtOV0qPS8vJ2AgOzsKLSsgICopIGFjX29wdGFyZz0gOzsKLSsgIGVzYWMKLSAKLSAgICMgQWNjZXB0IHRoZSBpbXBvcnRhbnQgQ3lnbnVzIGNvbmZpZ3VyZSBvcHRpb25zLCBzbyB3ZSBjYW4gZGlhZ25vc2UgdHlwb3MuCi0gCi0tICBjYXNlICRhY19vcHRpb24gaW4KLSsgIGNhc2UgIiRhY19vcHRpb24iIGluCi0gCi0gICAtYmluZGlyIHwgLS1iaW5kaXIgfCAtLWJpbmRpIHwgLS1iaW5kIHwgLS1iaW4gfCAtLWJpKQotICAgICBhY19wcmV2PWJpbmRpciA7OwotICAgLWJpbmRpcj0qIHwgLS1iaW5kaXI9KiB8IC0tYmluZGk9KiB8IC0tYmluZD0qIHwgLS1iaW49KiB8IC0tYmk9KikKLS0gICAgYmluZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgYmluZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLWJ1aWxkIHwgLS1idWlsZCB8IC0tYnVpbCB8IC0tYnVpIHwgLS1idSkKLS0gICAgYWNfcHJldj1idWlsZF9hbGlhcyA7OwotKyAgICBhY19wcmV2PWJ1aWxkIDs7Ci0gICAtYnVpbGQ9KiB8IC0tYnVpbGQ9KiB8IC0tYnVpbD0qIHwgLS1idWk9KiB8IC0tYnU9KikKLS0gICAgYnVpbGRfYWxpYXM9JGFjX29wdGFyZyA7OwotKyAgICBidWlsZD0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZpIFwKLSAgIHwgLS1jYWNoZS1mIHwgLS1jYWNoZS0gfCAtLWNhY2hlIHwgLS1jYWNoIHwgLS1jYWMgfCAtLWNhIHwgLS1jKQotICAgICBhY19wcmV2PWNhY2hlX2ZpbGUgOzsKLSAgIC1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXAotICAgfCAtLWNhY2hlLWY9KiB8IC0tY2FjaGUtPSogfCAtLWNhY2hlPSogfCAtLWNhY2g9KiB8IC0tY2FjPSogfCAtLWNhPSogfCAtLWM9KikKLS0gICAgY2FjaGVfZmlsZT0kYWNfb3B0YXJnIDs7Ci0rICAgIGNhY2hlX2ZpbGU9IiRhY19vcHRhcmciIDs7Ci0gCi0tICAtLWNvbmZpZy1jYWNoZSB8IC1DKQotLSAgICBjYWNoZV9maWxlPWNvbmZpZy5jYWNoZSA7OwotLQotICAgLWRhdGFkaXIgfCAtLWRhdGFkaXIgfCAtLWRhdGFkaSB8IC0tZGF0YWQgfCAtLWRhdGEgfCAtLWRhdCB8IC0tZGEpCi0gICAgIGFjX3ByZXY9ZGF0YWRpciA7OwotICAgLWRhdGFkaXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0tZGF0YWQ9KiB8IC0tZGF0YT0qIHwgLS1kYXQ9KiBcCi0gICB8IC0tZGE9KikKLS0gICAgZGF0YWRpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIGRhdGFkaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSopCi0tICAgIGFjX2ZlYXR1cmU9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSpkaXNhYmxlLVwoLipcKSdgCi0rICAgIGFjX2ZlYXR1cmU9YGVjaG8gJGFjX29wdGlvbnxzZWQgLWUgJ3MvLSpkaXNhYmxlLS8vJ2AKLSAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgotLSAgICBleHByICJ4JGFjX2ZlYXR1cmUiIDogIi4qW14tXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLS0gICAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfZmVhdHVyZSIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICAgIGFjX2ZlYXR1cmU9YGVjaG8gJGFjX2ZlYXR1cmUgfCBzZWQgJ3MvLS9fL2cnYAotLSAgICBldmFsICJlbmFibGVfJGFjX2ZlYXR1cmU9bm8iIDs7Ci0rICAgIGlmIHRlc3QgLW4gImBlY2hvICRhY19mZWF0dXJlfCBzZWQgJ3MvWy1hLXpBLVowLTlfXS8vZydgIjsgdGhlbgotKyAgICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogJGFjX2ZlYXR1cmU6IGludmFsaWQgZmVhdHVyZSBuYW1lIiAxPiYyOyBleGl0IDE7IH0KLSsgICAgZmkKLSsgICAgYWNfZmVhdHVyZT1gZWNobyAkYWNfZmVhdHVyZXwgc2VkICdzLy0vXy9nJ2AKLSsgICAgZXZhbCAiZW5hYmxlXyR7YWNfZmVhdHVyZX09bm8iIDs7Ci0gCi0gICAtZW5hYmxlLSogfCAtLWVuYWJsZS0qKQotLSAgICBhY19mZWF0dXJlPWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZW5hYmxlLVwoW149XSpcKSdgCi0rICAgIGFjX2ZlYXR1cmU9YGVjaG8gJGFjX29wdGlvbnxzZWQgLWUgJ3MvLSplbmFibGUtLy8nIC1lICdzLz0uKi8vJ2AKLSAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgotLSAgICBleHByICJ4JGFjX2ZlYXR1cmUiIDogIi4qW14tXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLS0gICAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfZmVhdHVyZSIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICAgIGFjX2ZlYXR1cmU9YGVjaG8gJGFjX2ZlYXR1cmUgfCBzZWQgJ3MvLS9fL2cnYAotLSAgICBjYXNlICRhY19vcHRpb24gaW4KLS0gICAgICAqPSopIGFjX29wdGFyZz1gZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OwotKyAgICBpZiB0ZXN0IC1uICJgZWNobyAkYWNfZmVhdHVyZXwgc2VkICdzL1stX2EtekEtWjAtOV0vL2cnYCI7IHRoZW4KLSsgICAgICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6ICRhY19mZWF0dXJlOiBpbnZhbGlkIGZlYXR1cmUgbmFtZSIgMT4mMjsgZXhpdCAxOyB9Ci0rICAgIGZpCi0rICAgIGFjX2ZlYXR1cmU9YGVjaG8gJGFjX2ZlYXR1cmV8IHNlZCAncy8tL18vZydgCi0rICAgIGNhc2UgIiRhY19vcHRpb24iIGluCi0rICAgICAgKj0qKSA7OwotICAgICAgICopIGFjX29wdGFyZz15ZXMgOzsKLSAgICAgZXNhYwotLSAgICBldmFsICJlbmFibGVfJGFjX2ZlYXR1cmU9JyRhY19vcHRhcmcnIiA7OwotKyAgICBldmFsICJlbmFibGVfJHthY19mZWF0dXJlfT0nJGFjX29wdGFyZyciIDs7Ci0gCi0gICAtZXhlYy1wcmVmaXggfCAtLWV4ZWNfcHJlZml4IHwgLS1leGVjLXByZWZpeCB8IC0tZXhlYy1wcmVmaSBcCi0gICB8IC0tZXhlYy1wcmVmIHwgLS1leGVjLXByZSB8IC0tZXhlYy1wciB8IC0tZXhlYy1wIHwgLS1leGVjLSBcCi1AQCAtNDIwLDQ3ICsxMzcsOTUgQEAKLSAgIC1leGVjLXByZWZpeD0qIHwgLS1leGVjX3ByZWZpeD0qIHwgLS1leGVjLXByZWZpeD0qIHwgLS1leGVjLXByZWZpPSogXAotICAgfCAtLWV4ZWMtcHJlZj0qIHwgLS1leGVjLXByZT0qIHwgLS1leGVjLXByPSogfCAtLWV4ZWMtcD0qIHwgLS1leGVjLT0qIFwKLSAgIHwgLS1leGVjPSogfCAtLWV4ZT0qIHwgLS1leD0qKQotLSAgICBleGVjX3ByZWZpeD0kYWNfb3B0YXJnIDs7Ci0rICAgIGV4ZWNfcHJlZml4PSIkYWNfb3B0YXJnIiA7OwotIAotICAgLWdhcyB8IC0tZ2FzIHwgLS1nYSB8IC0tZykKLSAgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aC1nYXMuCi0gICAgIHdpdGhfZ2FzPXllcyA7OwotIAotLSAgLWhlbHAgfCAtLWhlbHAgfCAtLWhlbCB8IC0taGUgfCAtaCkKLS0gICAgYWNfaW5pdF9oZWxwPWxvbmcgOzsKLS0gIC1oZWxwPXIqIHwgLS1oZWxwPXIqIHwgLS1oZWw9ciogfCAtLWhlPXIqIHwgLWhyKikKLS0gICAgYWNfaW5pdF9oZWxwPXJlY3Vyc2l2ZSA7OwotLSAgLWhlbHA9cyogfCAtLWhlbHA9cyogfCAtLWhlbD1zKiB8IC0taGU9cyogfCAtaHMqKQotLSAgICBhY19pbml0X2hlbHA9c2hvcnQgOzsKLSsgIC1oZWxwIHwgLS1oZWxwIHwgLS1oZWwgfCAtLWhlKQotKyAgICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KLSsgICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgotKyAgICBjYXQgPDwgRU9GCi0rVXNhZ2U6IGNvbmZpZ3VyZSBbb3B0aW9uc10gW2hvc3RdCi0rT3B0aW9uczogW2RlZmF1bHRzIGluIGJyYWNrZXRzIGFmdGVyIGRlc2NyaXB0aW9uc10KLStDb25maWd1cmF0aW9uOgotKyAgLS1jYWNoZS1maWxlPUZJTEUgICAgICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUKLSsgIC0taGVscCAgICAgICAgICAgICAgICAgIHByaW50IHRoaXMgbWVzc2FnZQotKyAgLS1uby1jcmVhdGUgICAgICAgICAgICAgZG8gbm90IGNyZWF0ZSBvdXRwdXQgZmlsZXMKLSsgIC0tcXVpZXQsIC0tc2lsZW50ICAgICAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nLi4uJyBtZXNzYWdlcwotKyAgLS12ZXJzaW9uICAgICAgICAgICAgICAgcHJpbnQgdGhlIHZlcnNpb24gb2YgYXV0b2NvbmYgdGhhdCBjcmVhdGVkIGNvbmZpZ3VyZQotK0RpcmVjdG9yeSBhbmQgZmlsZSBuYW1lczoKLSsgIC0tcHJlZml4PVBSRUZJWCAgICAgICAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGZpbGVzIGluIFBSRUZJWAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KLSsgIC0tZXhlYy1wcmVmaXg9RVBSRUZJWCAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBpbiBFUFJFRklYCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBbc2FtZSBhcyBwcmVmaXhdCi0rICAtLWJpbmRpcj1ESVIgICAgICAgICAgICB1c2VyIGV4ZWN1dGFibGVzIGluIERJUiBbRVBSRUZJWC9iaW5dCi0rICAtLXNiaW5kaXI9RElSICAgICAgICAgICBzeXN0ZW0gYWRtaW4gZXhlY3V0YWJsZXMgaW4gRElSIFtFUFJFRklYL3NiaW5dCi0rICAtLWxpYmV4ZWNkaXI9RElSICAgICAgICBwcm9ncmFtIGV4ZWN1dGFibGVzIGluIERJUiBbRVBSRUZJWC9saWJleGVjXQotKyAgLS1kYXRhZGlyPURJUiAgICAgICAgICAgcmVhZC1vbmx5IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWC9zaGFyZV0KLSsgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIGluIERJUiBbUFJFRklYL2V0Y10KLSsgIC0tc2hhcmVkc3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBbUFJFRklYL2NvbV0KLSsgIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBpbiBESVIgW1BSRUZJWC92YXJdCi0rICAtLWxpYmRpcj1ESVIgICAgICAgICAgICBvYmplY3QgY29kZSBsaWJyYXJpZXMgaW4gRElSIFtFUFJFRklYL2xpYl0KLSsgIC0taW5jbHVkZWRpcj1ESVIgICAgICAgIEMgaGVhZGVyIGZpbGVzIGluIERJUiBbUFJFRklYL2luY2x1ZGVdCi0rICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBmaWxlcyBmb3Igbm9uLWdjYyBpbiBESVIgWy91c3IvaW5jbHVkZV0KLSsgIC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBpbiBESVIgW1BSRUZJWC9pbmZvXQotKyAgLS1tYW5kaXI9RElSICAgICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gaW4gRElSIFtQUkVGSVgvbWFuXQotKyAgLS1zcmNkaXI9RElSICAgICAgICAgICAgZmluZCB0aGUgc291cmNlcyBpbiBESVIgW2NvbmZpZ3VyZSBkaXIgb3IgLi5dCi0rICAtLXByb2dyYW0tcHJlZml4PVBSRUZJWCBwcmVwZW5kIFBSRUZJWCB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcwotKyAgLS1wcm9ncmFtLXN1ZmZpeD1TVUZGSVggYXBwZW5kIFNVRkZJWCB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcwotKyAgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPVBST0dSQU0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biBzZWQgUFJPR1JBTSBvbiBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcwotK0VPRgotKyAgICBjYXQgPDwgRU9GCi0rSG9zdCB0eXBlOgotKyAgLS1idWlsZD1CVUlMRCAgICAgICAgICAgY29uZmlndXJlIGZvciBidWlsZGluZyBvbiBCVUlMRCBbQlVJTEQ9SE9TVF0KLSsgIC0taG9zdD1IT1NUICAgICAgICAgICAgIGNvbmZpZ3VyZSBmb3IgSE9TVCBbZ3Vlc3NlZF0KLSsgIC0tdGFyZ2V0PVRBUkdFVCAgICAgICAgIGNvbmZpZ3VyZSBmb3IgVEFSR0VUIFtUQVJHRVQ9SE9TVF0KLStGZWF0dXJlcyBhbmQgcGFja2FnZXM6Ci0rICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pCi0rICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FSRz15ZXNdCi0rICAtLXdpdGgtUEFDS0FHRVs9QVJHXSAgICB1c2UgUEFDS0FHRSBbQVJHPXllc10KLSsgIC0td2l0aG91dC1QQUNLQUdFICAgICAgIGRvIG5vdCB1c2UgUEFDS0FHRSAoc2FtZSBhcyAtLXdpdGgtUEFDS0FHRT1ubykKLSsgIC0teC1pbmNsdWRlcz1ESVIgICAgICAgIFggaW5jbHVkZSBmaWxlcyBhcmUgaW4gRElSCi0rICAtLXgtbGlicmFyaWVzPURJUiAgICAgICBYIGxpYnJhcnkgZmlsZXMgYXJlIGluIERJUgotK0VPRgotKyAgICBpZiB0ZXN0IC1uICIkYWNfaGVscCI7IHRoZW4KLSsgICAgICBlY2hvICItLWVuYWJsZSBhbmQgLS13aXRoIG9wdGlvbnMgcmVjb2duaXplZDokYWNfaGVscCIKLSsgICAgZmkKLSsgICAgZXhpdCAwIDs7Ci0gCi0gICAtaG9zdCB8IC0taG9zdCB8IC0taG9zIHwgLS1obykKLS0gICAgYWNfcHJldj1ob3N0X2FsaWFzIDs7Ci0rICAgIGFjX3ByZXY9aG9zdCA7OwotICAgLWhvc3Q9KiB8IC0taG9zdD0qIHwgLS1ob3M9KiB8IC0taG89KikKLS0gICAgaG9zdF9hbGlhcz0kYWNfb3B0YXJnIDs7Ci0rICAgIGhvc3Q9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtaW5jbHVkZWRpciB8IC0taW5jbHVkZWRpciB8IC0taW5jbHVkZWRpIHwgLS1pbmNsdWRlZCB8IC0taW5jbHVkZSBcCi0gICB8IC0taW5jbHVkIHwgLS1pbmNsdSB8IC0taW5jbCB8IC0taW5jKQotICAgICBhY19wcmV2PWluY2x1ZGVkaXIgOzsKLSAgIC1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpPSogfCAtLWluY2x1ZGVkPSogfCAtLWluY2x1ZGU9KiBcCi0gICB8IC0taW5jbHVkPSogfCAtLWluY2x1PSogfCAtLWluY2w9KiB8IC0taW5jPSopCi0tICAgIGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7OwotKyAgICBpbmNsdWRlZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5mb2QgfCAtLWluZm8gfCAtLWluZikKLSAgICAgYWNfcHJldj1pbmZvZGlyIDs7Ci0gICAtaW5mb2Rpcj0qIHwgLS1pbmZvZGlyPSogfCAtLWluZm9kaT0qIHwgLS1pbmZvZD0qIHwgLS1pbmZvPSogfCAtLWluZj0qKQotLSAgICBpbmZvZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgaW5mb2Rpcj0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1saWJkaXIgfCAtLWxpYmRpciB8IC0tbGliZGkgfCAtLWxpYmQpCi0gICAgIGFjX3ByZXY9bGliZGlyIDs7Ci0gICAtbGliZGlyPSogfCAtLWxpYmRpcj0qIHwgLS1saWJkaT0qIHwgLS1saWJkPSopCi0tICAgIGxpYmRpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIGxpYmRpcj0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1saWJleGVjZGlyIHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVjZGkgfCAtLWxpYmV4ZWNkIHwgLS1saWJleGVjIFwKLSAgIHwgLS1saWJleGUgfCAtLWxpYmV4IHwgLS1saWJlKQotICAgICBhY19wcmV2PWxpYmV4ZWNkaXIgOzsKLSAgIC1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaXI9KiB8IC0tbGliZXhlY2RpPSogfCAtLWxpYmV4ZWNkPSogfCAtLWxpYmV4ZWM9KiBcCi0gICB8IC0tbGliZXhlPSogfCAtLWxpYmV4PSogfCAtLWxpYmU9KikKLS0gICAgbGliZXhlY2Rpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIGxpYmV4ZWNkaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxzdGF0ZWRpIHwgLS1sb2NhbHN0YXRlZCBcCi0gICB8IC0tbG9jYWxzdGF0ZSB8IC0tbG9jYWxzdGF0IHwgLS1sb2NhbHN0YSB8IC0tbG9jYWxzdCBcCi1AQCAtNDY5LDE5ICsyMzQsMTkgQEAKLSAgIC1sb2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpPSogfCAtLWxvY2Fsc3RhdGVkPSogXAotICAgfCAtLWxvY2Fsc3RhdGU9KiB8IC0tbG9jYWxzdGF0PSogfCAtLWxvY2Fsc3RhPSogfCAtLWxvY2Fsc3Q9KiBcCi0gICB8IC0tbG9jYWxzPSogfCAtLWxvY2FsPSogfCAtLWxvY2E9KiB8IC0tbG9jPSogfCAtLWxvPSopCi0tICAgIGxvY2Fsc3RhdGVkaXI9JGFjX29wdGFyZyA7OwotKyAgICBsb2NhbHN0YXRlZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLW1hbmRpciB8IC0tbWFuZGlyIHwgLS1tYW5kaSB8IC0tbWFuZCB8IC0tbWFuIHwgLS1tYSB8IC0tbSkKLSAgICAgYWNfcHJldj1tYW5kaXIgOzsKLSAgIC1tYW5kaXI9KiB8IC0tbWFuZGlyPSogfCAtLW1hbmRpPSogfCAtLW1hbmQ9KiB8IC0tbWFuPSogfCAtLW1hPSogfCAtLW09KikKLS0gICAgbWFuZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgbWFuZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLW5mcCB8IC0tbmZwIHwgLS1uZikKLSAgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aG91dC1mcC4KLSAgICAgd2l0aF9mcD1ubyA7OwotIAotICAgLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXRlIHwgLS1uby1jcmVhdCB8IC0tbm8tY3JlYSB8IC0tbm8tY3JlIFwKLS0gIHwgLS1uby1jciB8IC0tbm8tYyB8IC1uKQotKyAgfCAtLW5vLWNyIHwgLS1uby1jKQotICAgICBub19jcmVhdGU9eWVzIDs7Ci0gCi0gICAtbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvIHwgLS1uby1yZWN1cnNpIFwKLUBAIC00OTUsMjYgKzI2MCwyNiBAQAotICAgLW9sZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGk9KiB8IC0tb2xkaW5jbHVkZWQ9KiBcCi0gICB8IC0tb2xkaW5jbHVkZT0qIHwgLS1vbGRpbmNsdWQ9KiB8IC0tb2xkaW5jbHU9KiB8IC0tb2xkaW5jbD0qIHwgLS1vbGRpbmM9KiBcCi0gICB8IC0tb2xkaW49KiB8IC0tb2xkaT0qIHwgLS1vbGQ9KiB8IC0tb2w9KiB8IC0tbz0qKQotLSAgICBvbGRpbmNsdWRlZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgb2xkaW5jbHVkZWRpcj0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1wcmVmaXggfCAtLXByZWZpeCB8IC0tcHJlZmkgfCAtLXByZWYgfCAtLXByZSB8IC0tcHIgfCAtLXApCi0gICAgIGFjX3ByZXY9cHJlZml4IDs7Ci0gICAtcHJlZml4PSogfCAtLXByZWZpeD0qIHwgLS1wcmVmaT0qIHwgLS1wcmVmPSogfCAtLXByZT0qIHwgLS1wcj0qIHwgLS1wPSopCi0tICAgIHByZWZpeD0kYWNfb3B0YXJnIDs7Ci0rICAgIHByZWZpeD0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dyYW0tcHJlZmkgfCAtLXByb2dyYW0tcHJlZiBcCi0gICB8IC0tcHJvZ3JhbS1wcmUgfCAtLXByb2dyYW0tcHIgfCAtLXByb2dyYW0tcCkKLSAgICAgYWNfcHJldj1wcm9ncmFtX3ByZWZpeCA7OwotICAgLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZmk9KiBcCi0gICB8IC0tcHJvZ3JhbS1wcmVmPSogfCAtLXByb2dyYW0tcHJlPSogfCAtLXByb2dyYW0tcHI9KiB8IC0tcHJvZ3JhbS1wPSopCi0tICAgIHByb2dyYW1fcHJlZml4PSRhY19vcHRhcmcgOzsKLSsgICAgcHJvZ3JhbV9wcmVmaXg9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtcHJvZ3JhbS1zdWZmaXggfCAtLXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpIHwgLS1wcm9ncmFtLXN1ZmYgXAotICAgfCAtLXByb2dyYW0tc3VmIHwgLS1wcm9ncmFtLXN1IHwgLS1wcm9ncmFtLXMpCi0gICAgIGFjX3ByZXY9cHJvZ3JhbV9zdWZmaXggOzsKLSAgIC1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpPSogXAotICAgfCAtLXByb2dyYW0tc3VmZj0qIHwgLS1wcm9ncmFtLXN1Zj0qIHwgLS1wcm9ncmFtLXN1PSogfCAtLXByb2dyYW0tcz0qKQotLSAgICBwcm9ncmFtX3N1ZmZpeD0kYWNfb3B0YXJnIDs7Ci0rICAgIHByb2dyYW1fc3VmZml4PSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUgXAotICAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmEgXAotQEAgLTUzMSw3ICsyOTYsNyBAQAotICAgfCAtLXByb2dyYW0tdHJhbnNmbz0qIHwgLS1wcm9ncmFtLXRyYW5zZj0qIFwKLSAgIHwgLS1wcm9ncmFtLXRyYW5zPSogfCAtLXByb2dyYW0tdHJhbj0qIFwKLSAgIHwgLS1wcm9nci10cmE9KiB8IC0tcHJvZ3JhbS10cj0qIHwgLS1wcm9ncmFtLXQ9KikKLS0gICAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0kYWNfb3B0YXJnIDs7Ci0rICAgIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXAotICAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpCi1AQCAtNTQxLDcgKzMwNiw3IEBACi0gICAgIGFjX3ByZXY9c2JpbmRpciA7OwotICAgLXNiaW5kaXI9KiB8IC0tc2JpbmRpcj0qIHwgLS1zYmluZGk9KiB8IC0tc2JpbmQ9KiB8IC0tc2Jpbj0qIFwKLSAgIHwgLS1zYmk9KiB8IC0tc2I9KikKLS0gICAgc2JpbmRpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIHNiaW5kaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpIFwKLSAgIHwgLS1zaGFyZWRzdGF0ZWQgfCAtLXNoYXJlZHN0YXRlIHwgLS1zaGFyZWRzdGF0IHwgLS1zaGFyZWRzdGEgXAotQEAgLTU1Miw1NyArMzE3LDU4IEBACi0gICB8IC0tc2hhcmVkc3RhdGVkPSogfCAtLXNoYXJlZHN0YXRlPSogfCAtLXNoYXJlZHN0YXQ9KiB8IC0tc2hhcmVkc3RhPSogXAotICAgfCAtLXNoYXJlZHN0PSogfCAtLXNoYXJlZHM9KiB8IC0tc2hhcmVkPSogfCAtLXNoYXJlPSogfCAtLXNoYXI9KiBcCi0gICB8IC0tc2hhPSogfCAtLXNoPSopCi0tICAgIHNoYXJlZHN0YXRlZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgc2hhcmVkc3RhdGVkaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtc2l0ZSB8IC0tc2l0ZSB8IC0tc2l0KQotICAgICBhY19wcmV2PXNpdGUgOzsKLSAgIC1zaXRlPSogfCAtLXNpdGU9KiB8IC0tc2l0PSopCi0tICAgIHNpdGU9JGFjX29wdGFyZyA7OwotKyAgICBzaXRlPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXNyY2RpciB8IC0tc3JjZGlyIHwgLS1zcmNkaSB8IC0tc3JjZCB8IC0tc3JjIHwgLS1zcikKLSAgICAgYWNfcHJldj1zcmNkaXIgOzsKLSAgIC1zcmNkaXI9KiB8IC0tc3JjZGlyPSogfCAtLXNyY2RpPSogfCAtLXNyY2Q9KiB8IC0tc3JjPSogfCAtLXNyPSopCi0tICAgIHNyY2Rpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIHNyY2Rpcj0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1zeXNjb25mZGlyIHwgLS1zeXNjb25mZGlyIHwgLS1zeXNjb25mZGkgfCAtLXN5c2NvbmZkIHwgLS1zeXNjb25mIFwKLSAgIHwgLS1zeXNjb24gfCAtLXN5c2NvIHwgLS1zeXNjIHwgLS1zeXMgfCAtLXN5KQotICAgICBhY19wcmV2PXN5c2NvbmZkaXIgOzsKLSAgIC1zeXNjb25mZGlyPSogfCAtLXN5c2NvbmZkaXI9KiB8IC0tc3lzY29uZmRpPSogfCAtLXN5c2NvbmZkPSogfCAtLXN5c2NvbmY9KiBcCi0gICB8IC0tc3lzY29uPSogfCAtLXN5c2NvPSogfCAtLXN5c2M9KiB8IC0tc3lzPSogfCAtLXN5PSopCi0tICAgIHN5c2NvbmZkaXI9JGFjX29wdGFyZyA7OwotKyAgICBzeXNjb25mZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXRhcmdldCB8IC0tdGFyZ2V0IHwgLS10YXJnZSB8IC0tdGFyZyB8IC0tdGFyIHwgLS10YSB8IC0tdCkKLS0gICAgYWNfcHJldj10YXJnZXRfYWxpYXMgOzsKLSsgICAgYWNfcHJldj10YXJnZXQgOzsKLSAgIC10YXJnZXQ9KiB8IC0tdGFyZ2V0PSogfCAtLXRhcmdlPSogfCAtLXRhcmc9KiB8IC0tdGFyPSogfCAtLXRhPSogfCAtLXQ9KikKLS0gICAgdGFyZ2V0X2FsaWFzPSRhY19vcHRhcmcgOzsKLSsgICAgdGFyZ2V0PSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0tdmVyYm9zIHwgLS12ZXJibyB8IC0tdmVyYikKLSAgICAgdmVyYm9zZT15ZXMgOzsKLSAKLS0gIC12ZXJzaW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLVYpCi0tICAgIGFjX2luaXRfdmVyc2lvbj06IDs7Ci0rICAtdmVyc2lvbiB8IC0tdmVyc2lvbiB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8IC0tdmVycykKLSsgICAgZWNobyAiY29uZmlndXJlIGdlbmVyYXRlZCBieSBhdXRvY29uZiB2ZXJzaW9uIDIuMTMiCi0rICAgIGV4aXQgMCA7OwotIAotICAgLXdpdGgtKiB8IC0td2l0aC0qKQotLSAgICBhY19wYWNrYWdlPWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0aC1cKFtePV0qXCknYAotKyAgICBhY19wYWNrYWdlPWBlY2hvICRhY19vcHRpb258c2VkIC1lICdzLy0qd2l0aC0vLycgLWUgJ3MvPS4qLy8nYAotICAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCi0tICAgIGV4cHIgIngkYWNfcGFja2FnZSIgOiAiLipbXi1fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotLSAgICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY19wYWNrYWdlIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsgICAgaWYgdGVzdCAtbiAiYGVjaG8gJGFjX3BhY2thZ2V8IHNlZCAncy9bLV9hLXpBLVowLTldLy9nJ2AiOyB0aGVuCi0rICAgICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiAkYWNfcGFja2FnZTogaW52YWxpZCBwYWNrYWdlIG5hbWUiIDE+JjI7IGV4aXQgMTsgfQotKyAgICBmaQotICAgICBhY19wYWNrYWdlPWBlY2hvICRhY19wYWNrYWdlfCBzZWQgJ3MvLS9fL2cnYAotLSAgICBjYXNlICRhY19vcHRpb24gaW4KLS0gICAgICAqPSopIGFjX29wdGFyZz1gZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OwotKyAgICBjYXNlICIkYWNfb3B0aW9uIiBpbgotKyAgICAgICo9KikgOzsKLSAgICAgICAqKSBhY19vcHRhcmc9eWVzIDs7Ci0gICAgIGVzYWMKLS0gICAgZXZhbCAid2l0aF8kYWNfcGFja2FnZT0nJGFjX29wdGFyZyciIDs7Ci0rICAgIGV2YWwgIndpdGhfJHthY19wYWNrYWdlfT0nJGFjX29wdGFyZyciIDs7Ci0gCi0gICAtd2l0aG91dC0qIHwgLS13aXRob3V0LSopCi0tICAgIGFjX3BhY2thZ2U9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRob3V0LVwoLipcKSdgCi0rICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX29wdGlvbnxzZWQgLWUgJ3MvLSp3aXRob3V0LS8vJ2AKLSAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgotLSAgICBleHByICJ4JGFjX3BhY2thZ2UiIDogIi4qW14tXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLS0gICAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfcGFja2FnZSIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX3BhY2thZ2UgfCBzZWQgJ3MvLS9fL2cnYAotLSAgICBldmFsICJ3aXRoXyRhY19wYWNrYWdlPW5vIiA7OwotKyAgICBpZiB0ZXN0IC1uICJgZWNobyAkYWNfcGFja2FnZXwgc2VkICdzL1stYS16QS1aMC05X10vL2cnYCI7IHRoZW4KLSsgICAgICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6ICRhY19wYWNrYWdlOiBpbnZhbGlkIHBhY2thZ2UgbmFtZSIgMT4mMjsgZXhpdCAxOyB9Ci0rICAgIGZpCi0rICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX3BhY2thZ2V8IHNlZCAncy8tL18vZydgCi0rICAgIGV2YWwgIndpdGhfJHthY19wYWNrYWdlfT1ubyIgOzsKLSAKLSAgIC0teCkKLSAgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aC14LgotQEAgLTYxMywxMTAgKzM3OSw5OSBAQAotICAgICBhY19wcmV2PXhfaW5jbHVkZXMgOzsKLSAgIC14LWluY2x1ZGVzPSogfCAtLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlPSogfCAtLXgtaW5jbHVkPSogfCAtLXgtaW5jbHU9KiBcCi0gICB8IC0teC1pbmNsPSogfCAtLXgtaW5jPSogfCAtLXgtaW49KiB8IC0teC1pPSopCi0tICAgIHhfaW5jbHVkZXM9JGFjX29wdGFyZyA7OwotKyAgICB4X2luY2x1ZGVzPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZSB8IC0teC1saWJyYXJpIFwKLSAgIHwgLS14LWxpYnJhciB8IC0teC1saWJyYSB8IC0teC1saWJyIHwgLS14LWxpYiB8IC0teC1saSB8IC0teC1sKQotICAgICBhY19wcmV2PXhfbGlicmFyaWVzIDs7Ci0gICAteC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZT0qIHwgLS14LWxpYnJhcmk9KiBcCi0gICB8IC0teC1saWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxpYnI9KiB8IC0teC1saWI9KiB8IC0teC1saT0qIHwgLS14LWw9KikKLS0gICAgeF9saWJyYXJpZXM9JGFjX29wdGFyZyA7OwotKyAgICB4X2xpYnJhcmllcz0iJGFjX29wdGFyZyIgOzsKLSAKLS0gIC0qKSB7IGVjaG8gIiRhc19tZTogZXJyb3I6IHVucmVjb2duaXplZCBvcHRpb246ICRhY19vcHRpb24KLS1UcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0rICAtKikgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiAkYWNfb3B0aW9uOiBpbnZhbGlkIG9wdGlvbjsgdXNlIC0taGVscCB0byBzaG93IHVzYWdlIiAxPiYyOyBleGl0IDE7IH0KLSAgICAgOzsKLSAKLS0gICo9KikKLS0gICAgYWNfZW52dmFyPWBleHByICJ4JGFjX29wdGlvbiIgOiAneFwoW149XSpcKT0nYAotLSAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCi0tICAgIGV4cHIgIngkYWNfZW52dmFyIiA6ICIuKlteXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLS0gICAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgdmFyaWFibGUgbmFtZTogJGFjX2VudnZhciIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICAgIGFjX29wdGFyZz1gZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAKLS0gICAgZXZhbCAiJGFjX2VudnZhcj0nJGFjX29wdGFyZyciCi0tICAgIGV4cG9ydCAkYWNfZW52dmFyIDs7Ci0tCi0gICAqKQotLSAgICAjIEZJWE1FOiBzaG91bGQgYmUgcmVtb3ZlZCBpbiBhdXRvY29uZiAzLjAuCi0tICAgIGVjaG8gIiRhc19tZTogV0FSTklORzogeW91IHNob3VsZCB1c2UgLS1idWlsZCwgLS1ob3N0LCAtLXRhcmdldCIgPiYyCi0tICAgIGV4cHIgIngkYWNfb3B0aW9uIiA6ICIuKlteLS5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotLSAgICAgIGVjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBob3N0IHR5cGU6ICRhY19vcHRpb24iID4mMgotLSAgICA6ICR7YnVpbGRfYWxpYXM9JGFjX29wdGlvbn0gJHtob3N0X2FsaWFzPSRhY19vcHRpb259ICR7dGFyZ2V0X2FsaWFzPSRhY19vcHRpb259Ci0rICAgIGlmIHRlc3QgLW4gImBlY2hvICRhY19vcHRpb258IHNlZCAncy9bLWEtejAtOS5dLy9nJ2AiOyB0aGVuCi0rICAgICAgZWNobyAiY29uZmlndXJlOiB3YXJuaW5nOiAkYWNfb3B0aW9uOiBpbnZhbGlkIGhvc3QgdHlwZSIgMT4mMgotKyAgICBmaQotKyAgICBpZiB0ZXN0ICJ4JG5vbm9wdCIgIT0geE5PTkU7IHRoZW4KLSsgICAgICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGNhbiBvbmx5IGNvbmZpZ3VyZSBmb3Igb25lIGhvc3QgYW5kIG9uZSB0YXJnZXQgYXQgYSB0aW1lIiAxPiYyOyBleGl0IDE7IH0KLSsgICAgZmkKLSsgICAgbm9ub3B0PSIkYWNfb3B0aW9uIgotICAgICA7OwotIAotICAgZXNhYwotIGRvbmUKLSAKLSBpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KLS0gIGFjX29wdGlvbj0tLWBlY2hvICRhY19wcmV2IHwgc2VkICdzL18vLS9nJ2AKLS0gIHsgZWNobyAiJGFzX21lOiBlcnJvcjogbWlzc2luZyBhcmd1bWVudCB0byAkYWNfb3B0aW9uIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogbWlzc2luZyBhcmd1bWVudCB0byAtLWBlY2hvICRhY19wcmV2IHwgc2VkICdzL18vLS9nJ2AiIDE+JjI7IGV4aXQgMTsgfQotIGZpCi0gCi0tIyBCZSBzdXJlIHRvIGhhdmUgYWJzb2x1dGUgcGF0aHMuCi0tZm9yIGFjX3ZhciBpbiBleGVjX3ByZWZpeCBwcmVmaXgKLS1kbwotLSAgZXZhbCBhY192YWw9JGBlY2hvICRhY192YXJgCi0tICBjYXNlICRhY192YWwgaW4KLS0gICAgW1xcLyRdKiB8ID86W1xcL10qIHwgTk9ORSB8ICcnICkgOzsKLS0gICAgKikgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogZXhwZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9OzsKLS0gIGVzYWMKLS1kb25lCi0rdHJhcCAncm0gLWZyIGNvbmZ0ZXN0KiBjb25mZGVmcyogY29yZSBjb3JlLiogKi5jb3JlICRhY19jbGVhbl9maWxlczsgZXhpdCAxJyAxIDIgMTUKLSAKLS0jIEJlIHN1cmUgdG8gaGF2ZSBhYnNvbHV0ZSBwYXRocy4KLS1mb3IgYWNfdmFyIGluIGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIFwKLS0gICAgICAgICAgICAgIGxvY2Fsc3RhdGVkaXIgbGliZGlyIGluY2x1ZGVkaXIgb2xkaW5jbHVkZWRpciBpbmZvZGlyIG1hbmRpcgotKyMgRmlsZSBkZXNjcmlwdG9yIHVzYWdlOgotKyMgMCBzdGFuZGFyZCBpbnB1dAotKyMgMSBmaWxlIGNyZWF0aW9uCi0rIyAyIGVycm9ycyBhbmQgd2FybmluZ3MKLSsjIDMgc29tZSBzeXN0ZW1zIG1heSBvcGVuIGl0IHRvIC9kZXYvdHR5Ci0rIyA0IHVzZWQgb24gdGhlIEt1Ym90YSBUaXRhbgotKyMgNiBjaGVja2luZyBmb3IuLi4gbWVzc2FnZXMgYW5kIHJlc3VsdHMKLSsjIDUgY29tcGlsZXIgbWVzc2FnZXMgc2F2ZWQgaW4gY29uZmlnLmxvZwotK2lmIHRlc3QgIiRzaWxlbnQiID0geWVzOyB0aGVuCi0rICBleGVjIDY+L2Rldi9udWxsCi0rZWxzZQotKyAgZXhlYyA2PiYxCi0rZmkKLStleGVjIDU+Li9jb25maWcubG9nCi0rCi0rZWNobyAiXAotK1RoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCi0rcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KLSsiIDE+JjUKLSsKLSsjIFN0cmlwIG91dCAtLW5vLWNyZWF0ZSBhbmQgLS1uby1yZWN1cnNpb24gc28gdGhleSBkbyBub3QgcGlsZSB1cC4KLSsjIEFsc28gcXVvdGUgYW55IGFyZ3MgY29udGFpbmluZyBzaGVsbCBtZXRhY2hhcmFjdGVycy4KLSthY19jb25maWd1cmVfYXJncz0KLStmb3IgYWNfYXJnCi0gZG8KLS0gIGV2YWwgYWNfdmFsPSRgZWNobyAkYWNfdmFyYAotLSAgY2FzZSAkYWNfdmFsIGluCi0tICAgIFtcXC8kXSogfCA/OltcXC9dKiApIDs7Ci0tICAgICopICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGV4cGVjdGVkIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIGZvciAtLSRhY192YXI6ICRhY192YWwiID4mMgotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfTs7Ci0rICBjYXNlICIkYWNfYXJnIiBpbgotKyAgLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXRlIHwgLS1uby1jcmVhdCB8IC0tbm8tY3JlYSB8IC0tbm8tY3JlIFwKLSsgIHwgLS1uby1jciB8IC0tbm8tYykgOzsKLSsgIC1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW8gfCAtLW5vLXJlY3Vyc2kgXAotKyAgfCAtLW5vLXJlY3VycyB8IC0tbm8tcmVjdXIgfCAtLW5vLXJlY3UgfCAtLW5vLXJlYyB8IC0tbm8tcmUgfCAtLW5vLXIpIDs7Ci0rICAqIiAiKnwqIgkiKnwqW1xbXF1cflwjXCRcXlwmXCpcKFwpXHtcfVxcXHxcO1w8XD5cP10qKQotKyAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAnJGFjX2FyZyciIDs7Ci0rICAqKSBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzICRhY19hcmciIDs7Ci0gICBlc2FjCi0gZG9uZQotIAotLSMgVGhlcmUgbWlnaHQgYmUgcGVvcGxlIHdobyBkZXBlbmQgb24gdGhlIG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcKLS0jIHVzZWQgdG8gaG9sZCB0aGUgYXJndW1lbnQgb2YgLS1ob3N0IGV0Yy4KLS0jIEZJWE1FOiBUbyByZW1vdmUgc29tZSBkYXkuCi0tYnVpbGQ9JGJ1aWxkX2FsaWFzCi0taG9zdD0kaG9zdF9hbGlhcwotLXRhcmdldD0kdGFyZ2V0X2FsaWFzCi0rIyBOTFMgbnVpc2FuY2VzLgotKyMgT25seSBzZXQgdGhlc2UgdG8gQyBpZiBhbHJlYWR5IHNldC4gIFRoZXNlIG11c3Qgbm90IGJlIHNldCB1bmNvbmRpdGlvbmFsbHkKLSsjIGJlY2F1c2Ugbm90IGFsbCBzeXN0ZW1zIHVuZGVyc3RhbmQgZS5nLiBMQU5HPUMgKG5vdGFibHkgU0NPKS4KLSsjIEZpeGluZyBMQ19NRVNTQUdFUyBwcmV2ZW50cyBTb2xhcmlzIHNoIGZyb20gdHJhbnNsYXRpbmcgdmFyIHZhbHVlcyBpbiBgc2V0JyEKLSsjIE5vbi1DIExDX0NUWVBFIHZhbHVlcyBicmVhayB0aGUgY3R5cGUgY2hlY2suCi0raWYgdGVzdCAiJHtMQU5HK3NldH0iICAgPSBzZXQ7IHRoZW4gTEFORz1DOyAgIGV4cG9ydCBMQU5HOyAgIGZpCi0raWYgdGVzdCAiJHtMQ19BTEwrc2V0fSIgPSBzZXQ7IHRoZW4gTENfQUxMPUM7IGV4cG9ydCBMQ19BTEw7IGZpCi0raWYgdGVzdCAiJHtMQ19NRVNTQUdFUytzZXR9IiA9IHNldDsgdGhlbiBMQ19NRVNTQUdFUz1DOyBleHBvcnQgTENfTUVTU0FHRVM7IGZpCi0raWYgdGVzdCAiJHtMQ19DVFlQRStzZXR9IiAgICA9IHNldDsgdGhlbiBMQ19DVFlQRT1DOyAgICBleHBvcnQgTENfQ1RZUEU7ICAgIGZpCi0gCi0tIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUgZGF5LgotLWlmIHRlc3QgIngkaG9zdF9hbGlhcyIgIT0geDsgdGhlbgotLSAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgPSB4OyB0aGVuCi0tICAgIGNyb3NzX2NvbXBpbGluZz1tYXliZQotLSAgICBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IElmIHlvdSB3YW50ZWQgdG8gc2V0IHRoZSAtLWJ1aWxkIHR5cGUsIGRvbid0IHVzZSAtLWhvc3QuCi0tICAgIElmIGEgY3Jvc3MgY29tcGlsZXIgaXMgZGV0ZWN0ZWQgdGhlbiBjcm9zcyBjb21waWxlIG1vZGUgd2lsbCBiZSB1c2VkLiIgPiYyCi0tICBlbGlmIHRlc3QgIngkYnVpbGRfYWxpYXMiICE9ICJ4JGhvc3RfYWxpYXMiOyB0aGVuCi0tICAgIGNyb3NzX2NvbXBpbGluZz15ZXMKLS0gIGZpCi0tZmkKLSsjIGNvbmZkZWZzLmggYXZvaWRzIE9TIGNvbW1hbmQgbGluZSBsZW5ndGggbGltaXRzIHRoYXQgREVGUyBjYW4gZXhjZWVkLgotK3JtIC1yZiBjb25mdGVzdCogY29uZmRlZnMuaAotKyMgQUlYIGNwcCBsb3NlcyBvbiBhbiBlbXB0eSBmaWxlLCBzbyBtYWtlIHN1cmUgaXQgY29udGFpbnMgYXQgbGVhc3QgYSBuZXdsaW5lLgotK2VjaG8gPiBjb25mZGVmcy5oCi0gCi0tYWNfdG9vbF9wcmVmaXg9Ci0tdGVzdCAtbiAiJGhvc3RfYWxpYXMiICYmIGFjX3Rvb2xfcHJlZml4PSRob3N0X2FsaWFzLQotKyMgQSBmaWxlbmFtZSB1bmlxdWUgdG8gdGhpcyBwYWNrYWdlLCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IHRoYXQKLSsjIGNvbmZpZ3VyZSBpcyBpbiwgd2hpY2ggd2UgY2FuIGxvb2sgZm9yIHRvIGZpbmQgb3V0IGlmIHNyY2RpciBpcyBjb3JyZWN0LgotK2FjX3VuaXF1ZV9maWxlPWluY2x1ZGUvZmxpdGUuaAotIAotLXRlc3QgIiRzaWxlbnQiID0geWVzICYmIGV4ZWMgNj4vZGV2L251bGwKLS0KLS0KLSAjIEZpbmQgdGhlIHNvdXJjZSBmaWxlcywgaWYgbG9jYXRpb24gd2FzIG5vdCBzcGVjaWZpZWQuCi0gaWYgdGVzdCAteiAiJHNyY2RpciI7IHRoZW4KLSAgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9eWVzCi0gICAjIFRyeSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBzY3JpcHQsIHRoZW4gaXRzIHBhcmVudC4KLS0gIGFjX2NvbmZkaXI9YChkaXJuYW1lICIkMCIpIDI+L2Rldi9udWxsIHx8Ci0tJGFzX2V4cHIgWCIkMCIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKLS0gICAgICAgICBYIiQwIiA6ICdYXCgvL1wpW14vXScgXHwgXAotLSAgICAgICAgIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcCi0tICAgICAgICAgWCIkMCIgOiAnWFwoL1wpJyBcfCBcCi0tICAgICAgICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8Ci0tZWNobyBYIiQwIiB8Ci0tICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXChcL1wvXClbXi9dLioveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwoXC9cL1wpJC97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXChcL1wpLioveyBzLy9cMS87IHE7IH0KLS0gIAkgIHMvLiovLi87IHEnYAotKyAgYWNfcHJvZz0kMAotKyAgYWNfY29uZmRpcj1gZWNobyAkYWNfcHJvZ3xzZWQgJ3MlL1teL11bXi9dKiQlJSdgCi0rICB0ZXN0ICJ4JGFjX2NvbmZkaXIiID0gIngkYWNfcHJvZyIgJiYgYWNfY29uZmRpcj0uCi0gICBzcmNkaXI9JGFjX2NvbmZkaXIKLSAgIGlmIHRlc3QgISAtciAkc3JjZGlyLyRhY191bmlxdWVfZmlsZTsgdGhlbgotICAgICBzcmNkaXI9Li4KLUBAIC03MjYsNDQxICs0ODEsMTMgQEAKLSBmaQotIGlmIHRlc3QgISAtciAkc3JjZGlyLyRhY191bmlxdWVfZmlsZTsgdGhlbgotICAgaWYgdGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiID0geWVzOyB0aGVuCi0tICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkYWNfY29uZmRpciBvciAuLiIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0rICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBmaW5kIHNvdXJjZXMgaW4gJGFjX2NvbmZkaXIgb3IgLi4iIDE+JjI7IGV4aXQgMTsgfQotICAgZWxzZQotLSAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIHNvdXJjZXMgKCRhY191bmlxdWVfZmlsZSkgaW4gJHNyY2RpciIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0rICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBmaW5kIHNvdXJjZXMgaW4gJHNyY2RpciIgMT4mMjsgZXhpdCAxOyB9Ci0gICBmaQotIGZpCi0tKGNkICRzcmNkaXIgJiYgdGVzdCAtciAuLyRhY191bmlxdWVfZmlsZSkgMj4vZGV2L251bGwgfHwKLS0gIHsgZWNobyAiJGFzX21lOiBlcnJvcjogc291cmNlcyBhcmUgaW4gJHNyY2RpciwgYnV0IFxgY2QgJHNyY2RpcicgZG9lcyBub3Qgd29yayIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tc3JjZGlyPWBlY2hvICIkc3JjZGlyIiB8IHNlZCAncyVcKFteXFwvXVwpW1xcL10qJCVcMSUnYAotLWFjX2Vudl9idWlsZF9hbGlhc19zZXQ9JHtidWlsZF9hbGlhcytzZXR9Ci0tYWNfZW52X2J1aWxkX2FsaWFzX3ZhbHVlPSRidWlsZF9hbGlhcwotLWFjX2N2X2Vudl9idWlsZF9hbGlhc19zZXQ9JHtidWlsZF9hbGlhcytzZXR9Ci0tYWNfY3ZfZW52X2J1aWxkX2FsaWFzX3ZhbHVlPSRidWlsZF9hbGlhcwotLWFjX2Vudl9ob3N0X2FsaWFzX3NldD0ke2hvc3RfYWxpYXMrc2V0fQotLWFjX2Vudl9ob3N0X2FsaWFzX3ZhbHVlPSRob3N0X2FsaWFzCi0tYWNfY3ZfZW52X2hvc3RfYWxpYXNfc2V0PSR7aG9zdF9hbGlhcytzZXR9Ci0tYWNfY3ZfZW52X2hvc3RfYWxpYXNfdmFsdWU9JGhvc3RfYWxpYXMKLS1hY19lbnZfdGFyZ2V0X2FsaWFzX3NldD0ke3RhcmdldF9hbGlhcytzZXR9Ci0tYWNfZW52X3RhcmdldF9hbGlhc192YWx1ZT0kdGFyZ2V0X2FsaWFzCi0tYWNfY3ZfZW52X3RhcmdldF9hbGlhc19zZXQ9JHt0YXJnZXRfYWxpYXMrc2V0fQotLWFjX2N2X2Vudl90YXJnZXRfYWxpYXNfdmFsdWU9JHRhcmdldF9hbGlhcwotLWFjX2Vudl9DQ19zZXQ9JHtDQytzZXR9Ci0tYWNfZW52X0NDX3ZhbHVlPSRDQwotLWFjX2N2X2Vudl9DQ19zZXQ9JHtDQytzZXR9Ci0tYWNfY3ZfZW52X0NDX3ZhbHVlPSRDQwotLWFjX2Vudl9DRkxBR1Nfc2V0PSR7Q0ZMQUdTK3NldH0KLS1hY19lbnZfQ0ZMQUdTX3ZhbHVlPSRDRkxBR1MKLS1hY19jdl9lbnZfQ0ZMQUdTX3NldD0ke0NGTEFHUytzZXR9Ci0tYWNfY3ZfZW52X0NGTEFHU192YWx1ZT0kQ0ZMQUdTCi0tYWNfZW52X0xERkxBR1Nfc2V0PSR7TERGTEFHUytzZXR9Ci0tYWNfZW52X0xERkxBR1NfdmFsdWU9JExERkxBR1MKLS1hY19jdl9lbnZfTERGTEFHU19zZXQ9JHtMREZMQUdTK3NldH0KLS1hY19jdl9lbnZfTERGTEFHU192YWx1ZT0kTERGTEFHUwotLWFjX2Vudl9DUFBGTEFHU19zZXQ9JHtDUFBGTEFHUytzZXR9Ci0tYWNfZW52X0NQUEZMQUdTX3ZhbHVlPSRDUFBGTEFHUwotLWFjX2N2X2Vudl9DUFBGTEFHU19zZXQ9JHtDUFBGTEFHUytzZXR9Ci0tYWNfY3ZfZW52X0NQUEZMQUdTX3ZhbHVlPSRDUFBGTEFHUwotLWFjX2Vudl9DUFBfc2V0PSR7Q1BQK3NldH0KLS1hY19lbnZfQ1BQX3ZhbHVlPSRDUFAKLS1hY19jdl9lbnZfQ1BQX3NldD0ke0NQUCtzZXR9Ci0tYWNfY3ZfZW52X0NQUF92YWx1ZT0kQ1BQCi0rc3JjZGlyPWBlY2hvICIke3NyY2Rpcn0iIHwgc2VkICdzJVwoW14vXVwpLyokJVwxJSdgCi0gCi0tIwotLSMgUmVwb3J0IHRoZSAtLWhlbHAgbWVzc2FnZS4KLS0jCi0taWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAibG9uZyI7IHRoZW4KLS0gICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgotLSAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgotLSAgY2F0IDw8X0FDRU9GCi0tXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgdGhpcyBwYWNrYWdlIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KLS0KLS1Vc2FnZTogJDAgW09QVElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4KLS0KLS1UbyBhc3NpZ24gZW52aXJvbm1lbnQgdmFyaWFibGVzIChlLmcuLCBDQywgQ0ZMQUdTLi4uKSwgc3BlY2lmeSB0aGVtIGFzCi0tVkFSPVZBTFVFLiAgU2VlIGJlbG93IGZvciBkZXNjcmlwdGlvbnMgb2Ygc29tZSBvZiB0aGUgdXNlZnVsIHZhcmlhYmxlcy4KLS0KLS1EZWZhdWx0cyBmb3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBicmFja2V0cy4KLS0KLS1Db25maWd1cmF0aW9uOgotLSAgLWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQKLS0gICAgICAtLWhlbHA9c2hvcnQgICAgICAgIGRpc3BsYXkgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGlzIHBhY2thZ2UKLS0gICAgICAtLWhlbHA9cmVjdXJzaXZlICAgIGRpc3BsYXkgdGhlIHNob3J0IGhlbHAgb2YgYWxsIHRoZSBpbmNsdWRlZCBwYWNrYWdlcwotLSAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0tICAtcSwgLS1xdWlldCwgLS1zaWxlbnQgICBkbyBub3QgcHJpbnQgXGBjaGVja2luZy4uLicgbWVzc2FnZXMKLS0gICAgICAtLWNhY2hlLWZpbGU9RklMRSAgIGNhY2hlIHRlc3QgcmVzdWx0cyBpbiBGSUxFIFtkaXNhYmxlZF0KLS0gIC1DLCAtLWNvbmZpZy1jYWNoZSAgICAgIGFsaWFzIGZvciBcYC0tY2FjaGUtZmlsZT1jb25maWcuY2FjaGUnCi0tICAtbiwgLS1uby1jcmVhdGUgICAgICAgICBkbyBub3QgY3JlYXRlIG91dHB1dCBmaWxlcwotLSAgICAgIC0tc3JjZGlyPURJUiAgICAgICAgZmluZCB0aGUgc291cmNlcyBpbiBESVIgW2NvbmZpZ3VyZSBkaXIgb3IgXGAuLiddCi0tCi0tX0FDRU9GCi0tCi0tICBjYXQgPDxfQUNFT0YKLS1JbnN0YWxsYXRpb24gZGlyZWN0b3JpZXM6Ci0tICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIFskYWNfZGVmYXVsdF9wcmVmaXhdCi0tICAtLWV4ZWMtcHJlZml4PUVQUkVGSVggICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgZmlsZXMgaW4gRVBSRUZJWAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWF0KLS0KLS1CeSBkZWZhdWx0LCBcYG1ha2UgaW5zdGFsbCcgd2lsbCBpbnN0YWxsIGFsbCB0aGUgZmlsZXMgaW4KLS1cYCRhY19kZWZhdWx0X3ByZWZpeC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4gc3BlY2lmeQotLWFuIGluc3RhbGxhdGlvbiBwcmVmaXggb3RoZXIgdGhhbiBcYCRhY19kZWZhdWx0X3ByZWZpeCcgdXNpbmcgXGAtLXByZWZpeCcsCi0tZm9yIGluc3RhbmNlIFxgLS1wcmVmaXg9XCRIT01FJy4KLS0KLS1Gb3IgYmV0dGVyIGNvbnRyb2wsIHVzZSB0aGUgb3B0aW9ucyBiZWxvdy4KLS0KLS1GaW5lIHR1bmluZyBvZiB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgotLSAgLS1iaW5kaXI9RElSICAgICAgICAgICB1c2VyIGV4ZWN1dGFibGVzIFtFUFJFRklYL2Jpbl0KLS0gIC0tc2JpbmRpcj1ESVIgICAgICAgICAgc3lzdGVtIGFkbWluIGV4ZWN1dGFibGVzIFtFUFJFRklYL3NiaW5dCi0tICAtLWxpYmV4ZWNkaXI9RElSICAgICAgIHByb2dyYW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10KLS0gIC0tZGF0YWRpcj1ESVIgICAgICAgICAgcmVhZC1vbmx5IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvc2hhcmVdCi0tICAtLXN5c2NvbmZkaXI9RElSICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvZXRjXQotLSAgLS1zaGFyZWRzdGF0ZWRpcj1ESVIgICBtb2RpZmlhYmxlIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvY29tXQotLSAgLS1sb2NhbHN0YXRlZGlyPURJUiAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC92YXJdCi0tICAtLWxpYmRpcj1ESVIgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9saWJdCi0tICAtLWluY2x1ZGVkaXI9RElSICAgICAgIEMgaGVhZGVyIGZpbGVzIFtQUkVGSVgvaW5jbHVkZV0KLS0gIC0tb2xkaW5jbHVkZWRpcj1ESVIgICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5vbi1nY2MgWy91c3IvaW5jbHVkZV0KLS0gIC0taW5mb2Rpcj1ESVIgICAgICAgICAgaW5mbyBkb2N1bWVudGF0aW9uIFtQUkVGSVgvaW5mb10KLS0gIC0tbWFuZGlyPURJUiAgICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gW1BSRUZJWC9tYW5dCi0tX0FDRU9GCi0tCi0tICBjYXQgPDxcX0FDRU9GCi0tCi0tU3lzdGVtIHR5cGVzOgotLSAgLS1idWlsZD1CVUlMRCAgICAgY29uZmlndXJlIGZvciBidWlsZGluZyBvbiBCVUlMRCBbZ3Vlc3NlZF0KLS0gIC0taG9zdD1IT1NUICAgICAgIGNyb3NzLWNvbXBpbGUgdG8gYnVpbGQgcHJvZ3JhbXMgdG8gcnVuIG9uIEhPU1QgW0JVSUxEXQotLSAgLS10YXJnZXQ9VEFSR0VUICAgY29uZmlndXJlIGZvciBidWlsZGluZyBjb21waWxlcnMgZm9yIFRBUkdFVCBbSE9TVF0KLS1fQUNFT0YKLS1maQotLQotLWlmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCi0tCi0tICBjYXQgPDxcX0FDRU9GCi0tCi0tT3B0aW9uYWwgRmVhdHVyZXM6Ci0tICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pCi0tICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FSRz15ZXNdCi0tICAtLWRpc2FibGUtc2hhcmVkICAgICB3aXRob3V0IHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQKLS0gIC0tZGlzYWJsZS1zb2NrZXRzICAgICB3aXRob3V0IHNvY2tldCBzdXBwb3J0Ci0tCi0tT3B0aW9uYWwgUGFja2FnZXM6Ci0tICAtLXdpdGgtUEFDS0FHRVs9QVJHXSAgICB1c2UgUEFDS0FHRSBbQVJHPXllc10KLS0gIC0td2l0aG91dC1QQUNLQUdFICAgICAgIGRvIG5vdCB1c2UgUEFDS0FHRSAoc2FtZSBhcyAtLXdpdGgtUEFDS0FHRT1ubykKLS0gIC0td2l0aC1hdWRpbyAgICAgICAgICB3aXRoIHNwZWNpZmljIGF1ZGlvIHN1cHBvcnQgKG5vbmUgbGludXggZnJlZWJzZCBldGMpCi0tICAtLXdpdGgtbGFuZyAgICAgICAgICAgd2l0aCBsYW5ndWFnZQotLSAgLS13aXRoLXZveCAgICAgICAgICAgIHdpdGggdm94Ci0tICAtLXdpdGgtbGV4ICAgICAgICAgICAgd2l0aCBsZXhpY29uCi0tCi0tU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Ci0tICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKLS0gIENGTEFHUyAgICAgIEMgY29tcGlsZXIgZmxhZ3MKLS0gIExERkxBR1MgICAgIGxpbmtlciBmbGFncywgZS5nLiAtTDxsaWIgZGlyPiBpZiB5b3UgaGF2ZSBsaWJyYXJpZXMgaW4gYQotLSAgICAgICAgICAgICAgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxsaWIgZGlyPgotLSAgQ1BQRkxBR1MgICAgQy9DKysgcHJlcHJvY2Vzc29yIGZsYWdzLCBlLmcuIC1JPGluY2x1ZGUgZGlyPiBpZiB5b3UgaGF2ZQotLSAgICAgICAgICAgICAgaGVhZGVycyBpbiBhIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8aW5jbHVkZSBkaXI+Ci0tICBDUFAgICAgICAgICBDIHByZXByb2Nlc3NvcgotLQotLVVzZSB0aGVzZSB2YXJpYWJsZXMgdG8gb3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0byBoZWxwCi0taXQgdG8gZmluZCBsaWJyYXJpZXMgYW5kIHByb2dyYW1zIHdpdGggbm9uc3RhbmRhcmQgbmFtZXMvbG9jYXRpb25zLgotLQotLV9BQ0VPRgotLWZpCi0tCi0taWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAicmVjdXJzaXZlIjsgdGhlbgotLSAgIyBJZiB0aGVyZSBhcmUgc3ViZGlycywgcmVwb3J0IHRoZWlyIHNwZWNpZmljIC0taGVscC4KLS0gIGFjX3BvcGRpcj1gcHdkYAotLSAgZm9yIGFjX2RpciBpbiA6ICRhY19zdWJkaXJzX2FsbDsgZG8gdGVzdCAieCRhY19kaXIiID0geDogJiYgY29udGludWUKLS0gICAgdGVzdCAtZCAkYWNfZGlyIHx8IGNvbnRpbnVlCi0tICAgIGFjX2J1aWxkZGlyPS4KLS0KLS1pZiB0ZXN0ICIkYWNfZGlyIiAhPSAuOyB0aGVuCi0tICBhY19kaXJfc3VmZml4PS9gZWNobyAiJGFjX2RpciIgfCBzZWQgJ3MsXlwuW1xcL10sLCdgCi0tICAjIEEgIi4uLyIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4LgotLSAgYWNfdG9wX2J1aWxkZGlyPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCIgfCBzZWQgJ3MsL1teXFwvXSosLi4vLGcnYAotLWVsc2UKLS0gIGFjX2Rpcl9zdWZmaXg9IGFjX3RvcF9idWlsZGRpcj0KLS1maQotLQotLWNhc2UgJHNyY2RpciBpbgotLSAgLikgICMgTm8gLS1zcmNkaXIgb3B0aW9uLiAgV2UgYXJlIGJ1aWxkaW5nIGluIHBsYWNlLgotLSAgICBhY19zcmNkaXI9LgotLSAgICBpZiB0ZXN0IC16ICIkYWNfdG9wX2J1aWxkZGlyIjsgdGhlbgotLSAgICAgICBhY190b3Bfc3JjZGlyPS4KLS0gICAgZWxzZQotLSAgICAgICBhY190b3Bfc3JjZGlyPWBlY2hvICRhY190b3BfYnVpbGRkaXIgfCBzZWQgJ3MsLyQsLCdgCi0tICAgIGZpIDs7Ci0tICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIHBhdGguCi0tICAgIGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZmaXg7Ci0tICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpciA7OwotLSAgKikgIyBSZWxhdGl2ZSBwYXRoLgotLSAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZGRpciRzcmNkaXIkYWNfZGlyX3N1ZmZpeAotLSAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXIkc3JjZGlyIDs7Ci0tZXNhYwotLSMgRG9uJ3QgYmxpbmRseSBwZXJmb3JtIGEgYGNkICIkYWNfZGlyIi8kYWNfZm9vICYmIHB3ZGAgc2luY2UgJGFjX2ZvbyBjYW4gYmUKLS0jIGFic29sdXRlLgotLWFjX2Fic19idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY19idWlsZGRpciAmJiBwd2RgCi0tYWNfYWJzX3RvcF9idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNkICR7YWNfdG9wX2J1aWxkZGlyfS4gJiYgcHdkYAotLWFjX2Fic19zcmNkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfc3JjZGlyICYmIHB3ZGAKLS1hY19hYnNfdG9wX3NyY2Rpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY190b3Bfc3JjZGlyICYmIHB3ZGAKLS0KLS0gICAgY2QgJGFjX2RpcgotLSAgICAjIENoZWNrIGZvciBndWVzdGVkIGNvbmZpZ3VyZTsgb3RoZXJ3aXNlIGdldCBDeWdudXMgc3R5bGUgY29uZmlndXJlLgotLSAgICBpZiB0ZXN0IC1mICRhY19zcmNkaXIvY29uZmlndXJlLmdudTsgdGhlbgotLSAgICAgIGVjaG8KLS0gICAgICAkU0hFTEwgJGFjX3NyY2Rpci9jb25maWd1cmUuZ251ICAtLWhlbHA9cmVjdXJzaXZlCi0tICAgIGVsaWYgdGVzdCAtZiAkYWNfc3JjZGlyL2NvbmZpZ3VyZTsgdGhlbgotLSAgICAgIGVjaG8KLS0gICAgICAkU0hFTEwgJGFjX3NyY2Rpci9jb25maWd1cmUgIC0taGVscD1yZWN1cnNpdmUKLS0gICAgZWxpZiB0ZXN0IC1mICRhY19zcmNkaXIvY29uZmlndXJlLmFjIHx8Ci0tICAgICAgICAgICB0ZXN0IC1mICRhY19zcmNkaXIvY29uZmlndXJlLmluOyB0aGVuCi0tICAgICAgZWNobwotLSAgICAgICRhY19jb25maWd1cmUgLS1oZWxwCi0tICAgIGVsc2UKLS0gICAgICBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IG5vIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gaXMgaW4gJGFjX2RpciIgPiYyCi0tICAgIGZpCi0tICAgIGNkICRhY19wb3BkaXIKLS0gIGRvbmUKLS1maQotLQotLXRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgMAotLWlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KLS0gIGNhdCA8PFxfQUNFT0YKLS0KLS1Db3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMgotLUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLVRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0tZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LgotLV9BQ0VPRgotLSAgZXhpdCAwCi0tZmkKLS1leGVjIDU+Y29uZmlnLmxvZwotLWNhdCA+JjUgPDxfQUNFT0YKLS1UaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQotLXJ1bm5pbmcgY29uZmlndXJlLCB0byBhaWQgZGVidWdnaW5nIGlmIGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuCi0tCi0tSXQgd2FzIGNyZWF0ZWQgYnkgJGFzX21lLCB3aGljaCB3YXMKLS1nZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNTcuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKLS0KLS0gICQgJDAgJEAKLS0KLS1fQUNFT0YKLS17Ci0tY2F0IDw8X0FTVU5BTUUKLS0jIyAtLS0tLS0tLS0gIyMKLS0jIyBQbGF0Zm9ybS4gIyMKLS0jIyAtLS0tLS0tLS0gIyMKLS0KLS1ob3N0bmFtZSA9IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAotLXVuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotLXVuYW1lIC1yID0gYCh1bmFtZSAtcikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotLXVuYW1lIC1zID0gYCh1bmFtZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotLXVuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotLQotLS91c3IvYmluL3VuYW1lIC1wID0gYCgvdXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotLS9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1YKSAyPi9kZXYvbnVsbCAgICAgfHwgZWNobyB1bmtub3duYAotLQotLS9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2L251bGwgICAgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS0vdXNyL2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25vd25gCi0tL3Vzci9jb252ZXgvZ2V0c3lzaW5mbyA9IGAoL3Vzci9jb252ZXgvZ2V0c3lzaW5mbykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotLWhvc3RpbmZvICAgICAgICAgICAgICAgPSBgKGhvc3RpbmZvKSAyPi9kZXYvbnVsbCAgICAgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS0vYmluL21hY2hpbmUgICAgICAgICAgID0gYCgvYmluL21hY2hpbmUpIDI+L2Rldi9udWxsICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCi0tL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IGAoL3Vzci9iaW4vb3NsZXZlbCkgMj4vZGV2L251bGwgICAgICAgfHwgZWNobyB1bmtub3duYAotLS9iaW4vdW5pdmVyc2UgICAgICAgICAgPSBgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS0KLS1fQVNVTkFNRQotLQotLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBlY2hvICJQQVRIOiAkYXNfZGlyIgotLWRvbmUKLS0KLS19ID4mNQotLQotLWNhdCA+JjUgPDxfQUNFT0YKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLSAjIwotLSMjIENvcmUgdGVzdHMuICMjCi0tIyMgLS0tLS0tLS0tLS0gIyMKLS0KLS1fQUNFT0YKLS0KLS0KLS0jIEtlZXAgYSB0cmFjZSBvZiB0aGUgY29tbWFuZCBsaW5lLgotLSMgU3RyaXAgb3V0IC0tbm8tY3JlYXRlIGFuZCAtLW5vLXJlY3Vyc2lvbiBzbyB0aGV5IGRvIG5vdCBwaWxlIHVwLgotLSMgU3RyaXAgb3V0IC0tc2lsZW50IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByZWNvcmQgaXQgZm9yIGZ1dHVyZSBydW5zLgotLSMgQWxzbyBxdW90ZSBhbnkgYXJncyBjb250YWluaW5nIHNoZWxsIG1ldGEtY2hhcmFjdGVycy4KLS0jIE1ha2UgdHdvIHBhc3NlcyB0byBhbGxvdyBmb3IgcHJvcGVyIGR1cGxpY2F0ZS1hcmd1bWVudCBzdXBwcmVzc2lvbi4KLS1hY19jb25maWd1cmVfYXJncz0KLS1hY19jb25maWd1cmVfYXJnczA9Ci0tYWNfY29uZmlndXJlX2FyZ3MxPQotLWFjX3NlcD0KLS1hY19tdXN0X2tlZXBfbmV4dD1mYWxzZQotLWZvciBhY19wYXNzIGluIDEgMgotLWRvCi0tICBmb3IgYWNfYXJnCi0tICBkbwotLSAgICBjYXNlICRhY19hcmcgaW4KLS0gICAgLW5vLWNyZWF0ZSB8IC0tbm8tYyogfCAtbiB8IC1uby1yZWN1cnNpb24gfCAtLW5vLXIqKSBjb250aW51ZSA7OwotLSAgICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXAotLSAgICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKLS0gICAgICBjb250aW51ZSA7OwotLSAgICAqIiAiKnwqIgkiKnwqW1xbXF1cflwjXCRcXlwmXCpcKFwpXHtcfVxcXHxcO1w8XD5cP1wiXCddKikKLS0gICAgICBhY19hcmc9YGVjaG8gIiRhY19hcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7Ci0tICAgIGVzYWMKLS0gICAgY2FzZSAkYWNfcGFzcyBpbgotLSAgICAxKSBhY19jb25maWd1cmVfYXJnczA9IiRhY19jb25maWd1cmVfYXJnczAgJyRhY19hcmcnIiA7OwotLSAgICAyKQotLSAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzMT0iJGFjX2NvbmZpZ3VyZV9hcmdzMSAnJGFjX2FyZyciCi0tICAgICAgaWYgdGVzdCAkYWNfbXVzdF9rZWVwX25leHQgPSB0cnVlOyB0aGVuCi0tICAgICAgICBhY19tdXN0X2tlZXBfbmV4dD1mYWxzZSAjIEdvdCB2YWx1ZSwgYmFjayB0byBub3JtYWwuCi0tICAgICAgZWxzZQotLSAgICAgICAgY2FzZSAkYWNfYXJnIGluCi0tICAgICAgICAgICo9KiB8IC0tY29uZmlnLWNhY2hlIHwgLUMgfCAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSogXAotLSAgICAgICAgICB8IC1lbmFibGUtKiB8IC0tZW5hYmxlLSogfCAtZ2FzIHwgLS1nKiB8IC1uZnAgfCAtLW5mKiBcCi0tICAgICAgICAgIHwgLXEgfCAtcXVpZXQgfCAtLXEqIHwgLXNpbGVudCB8IC0tc2lsKiB8IC12IHwgLXZlcmIqIFwKLS0gICAgICAgICAgfCAtd2l0aC0qIHwgLS13aXRoLSogfCAtd2l0aG91dC0qIHwgLS13aXRob3V0LSogfCAtLXgpCi0tICAgICAgICAgICAgY2FzZSAiJGFjX2NvbmZpZ3VyZV9hcmdzMCAiIGluCi0tICAgICAgICAgICAgICAiJGFjX2NvbmZpZ3VyZV9hcmdzMSIqIiAnJGFjX2FyZycgIiogKSBjb250aW51ZSA7OwotLSAgICAgICAgICAgIGVzYWMKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAtKiApIGFjX211c3Rfa2VlcF9uZXh0PXRydWUgOzsKLS0gICAgICAgIGVzYWMKLS0gICAgICBmaQotLSAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MkYWNfc2VwJyRhY19hcmcnIgotLSAgICAgICMgR2V0IHJpZCBvZiB0aGUgbGVhZGluZyBzcGFjZS4KLS0gICAgICBhY19zZXA9IiAiCi0tICAgICAgOzsKLS0gICAgZXNhYwotLSAgZG9uZQotLWRvbmUKLS0kYXNfdW5zZXQgYWNfY29uZmlndXJlX2FyZ3MwIHx8IHRlc3QgIiR7YWNfY29uZmlndXJlX2FyZ3MwK3NldH0iICE9IHNldCB8fCB7IGFjX2NvbmZpZ3VyZV9hcmdzMD07IGV4cG9ydCBhY19jb25maWd1cmVfYXJnczA7IH0KLS0kYXNfdW5zZXQgYWNfY29uZmlndXJlX2FyZ3MxIHx8IHRlc3QgIiR7YWNfY29uZmlndXJlX2FyZ3MxK3NldH0iICE9IHNldCB8fCB7IGFjX2NvbmZpZ3VyZV9hcmdzMT07IGV4cG9ydCBhY19jb25maWd1cmVfYXJnczE7IH0KLS0KLS0jIFdoZW4gaW50ZXJydXB0ZWQgb3IgZXhpdCdkLCBjbGVhbnVwIHRlbXBvcmFyeSBmaWxlcywgYW5kIGNvbXBsZXRlCi0tIyBjb25maWcubG9nLiAgV2UgcmVtb3ZlIGNvbW1lbnRzIGJlY2F1c2UgYW55d2F5IHRoZSBxdW90ZXMgaW4gdGhlcmUKLS0jIHdvdWxkIGNhdXNlIHByb2JsZW1zIG9yIGxvb2sgdWdseS4KLS0jIFdBUk5JTkc6IEJlIHN1cmUgbm90IHRvIHVzZSBzaW5nbGUgcXVvdGVzIGluIHRoZXJlLCBhcyBzb21lIHNoZWxscywKLS0jIHN1Y2ggYXMgb3VyIERVIDUuMCBmcmllbmQsIHdpbGwgdGhlbiBgY2xvc2UnIHRoZSB0cmFwLgotLXRyYXAgJ2V4aXRfc3RhdHVzPSQ/Ci0tICAjIFNhdmUgaW50byBjb25maWcubG9nIHNvbWUgaW5mb3JtYXRpb24gdGhhdCBtaWdodCBoZWxwIGluIGRlYnVnZ2luZy4KLS0gIHsKLS0gICAgZWNobwotLQotLSAgICBjYXQgPDxcX0FTQk9YCi0tIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIENhY2hlIHZhcmlhYmxlcy4gIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tICMjCi0tX0FTQk9YCi0tICAgIGVjaG8KLS0gICAgIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKLS17Ci0tICAoc2V0KSAyPiYxIHwKLS0gICAgY2FzZSBgKGFjX3NwYWNlPSciJyInICciJyInOyBzZXQgfCBncmVwIGFjX3NwYWNlKSAyPiYxYCBpbgotLSAgICAqYWNfc3BhY2U9XCAqKQotLSAgICAgIHNlZCAtbiBcCi0tICAgICAgICAicy8nIiciJy8nIiciJ1xcXFwnIiciJyciJyInL2c7Ci0tICAgIAkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9JyInIidcXDInIiciJy9wIgotLSAgICAgIDs7Ci0tICAgICopCi0tICAgICAgc2VkIC1uIFwKLS0gICAgICAgICJzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPVxcMi9wIgotLSAgICAgIDs7Ci0tICAgIGVzYWM7Ci0tfQotLSAgICBlY2hvCi0tCi0tICAgIGNhdCA8PFxfQVNCT1gKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIE91dHB1dCB2YXJpYWJsZXMuICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS1fQVNCT1gKLS0gICAgZWNobwotLSAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF92YXJzCi0tICAgIGRvCi0tICAgICAgZXZhbCBhY192YWw9JGBlY2hvICRhY192YXJgCi0tICAgICAgZWNobyAiJGFjX3Zhcj0nIiciJyRhY192YWwnIiciJyIKLS0gICAgZG9uZSB8IHNvcnQKLS0gICAgZWNobwotLQotLSAgICBpZiB0ZXN0IC1uICIkYWNfc3Vic3RfZmlsZXMiOyB0aGVuCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0gIyMKLS0jIyBPdXRwdXQgZmlsZXMuICMjCi0tIyMgLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICAgIGVjaG8KLS0gICAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF9maWxlcwotLSAgICAgIGRvCi0tCWV2YWwgYWNfdmFsPSRgZWNobyAkYWNfdmFyYAotLSAgICAgICAgZWNobyAiJGFjX3Zhcj0nIiciJyRhY192YWwnIiciJyIKLS0gICAgICBkb25lIHwgc29ydAotLSAgICAgIGVjaG8KLS0gICAgZmkKLS0KLS0gICAgaWYgdGVzdCAtcyBjb25mZGVmcy5oOyB0aGVuCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tICMjCi0tIyMgY29uZmRlZnMuaC4gIyMKLS0jIyAtLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICAgIGVjaG8KLS0gICAgICBzZWQgIi9eJC9kIiBjb25mZGVmcy5oIHwgc29ydAotLSAgICAgIGVjaG8KLS0gICAgZmkKLS0gICAgdGVzdCAiJGFjX3NpZ25hbCIgIT0gMCAmJgotLSAgICAgIGVjaG8gIiRhc19tZTogY2F1Z2h0IHNpZ25hbCAkYWNfc2lnbmFsIgotLSAgICBlY2hvICIkYXNfbWU6IGV4aXQgJGV4aXRfc3RhdHVzIgotLSAgfSA+JjUKLS0gIHJtIC1mIGNvcmUgY29yZS4qICouY29yZSAmJgotLSAgcm0gLXJmIGNvbmZ0ZXN0KiBjb25mZGVmcyogY29uZiQkKiAkYWNfY2xlYW5fZmlsZXMgJiYKLS0gICAgZXhpdCAkZXhpdF9zdGF0dXMKLS0gICAgICcgMAotLWZvciBhY19zaWduYWwgaW4gMSAyIDEzIDE1OyBkbwotLSAgdHJhcCAnYWNfc2lnbmFsPSckYWNfc2lnbmFsJzsgeyAoZXhpdCAxKTsgZXhpdCAxOyB9JyAkYWNfc2lnbmFsCi0tZG9uZQotLWFjX3NpZ25hbD0wCi0tCi0tIyBjb25mZGVmcy5oIGF2b2lkcyBPUyBjb21tYW5kIGxpbmUgbGVuZ3RoIGxpbWl0cyB0aGF0IERFRlMgY2FuIGV4Y2VlZC4KLS1ybSAtcmYgY29uZnRlc3QqIGNvbmZkZWZzLmgKLS0jIEFJWCBjcHAgbG9zZXMgb24gYW4gZW1wdHkgZmlsZSwgc28gbWFrZSBzdXJlIGl0IGNvbnRhaW5zIGF0IGxlYXN0IGEgbmV3bGluZS4KLS1lY2hvID5jb25mZGVmcy5oCi0tCi0tIyBQcmVkZWZpbmVkIHByZXByb2Nlc3NvciB2YXJpYWJsZXMuCi0tCi0tY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotLSNkZWZpbmUgUEFDS0FHRV9OQU1FICIkUEFDS0FHRV9OQU1FIgotLV9BQ0VPRgotLQotLQotLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLS0jZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAiJFBBQ0tBR0VfVEFSTkFNRSIKLS1fQUNFT0YKLS0KLS0KLS1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0tI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIiRQQUNLQUdFX1ZFUlNJT04iCi0tX0FDRU9GCi0tCi0tCi0tY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotLSNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIiRQQUNLQUdFX1NUUklORyIKLS1fQUNFT0YKLS0KLS0KLS1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0tI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAiJFBBQ0tBR0VfQlVHUkVQT1JUIgotLV9BQ0VPRgotLQotLQotLSMgTGV0IHRoZSBzaXRlIGZpbGUgc2VsZWN0IGFuIGFsdGVybmF0ZSBjYWNoZSBmaWxlIGlmIGl0IHdhbnRzIHRvLgotICMgUHJlZmVyIGV4cGxpY2l0bHkgc2VsZWN0ZWQgZmlsZSB0byBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIG9uZXMuCi0gaWYgdGVzdCAteiAiJENPTkZJR19TSVRFIjsgdGhlbgotICAgaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCi1AQCAtMTE3MSwxMDYgKzQ5OCw0MiBAQAotIGZpCi0gZm9yIGFjX3NpdGVfZmlsZSBpbiAkQ09ORklHX1NJVEU7IGRvCi0gICBpZiB0ZXN0IC1yICIkYWNfc2l0ZV9maWxlIjsgdGhlbgotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNQotLWVjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIiA+JjY7fQotLSAgICBzZWQgJ3MvXi98IC8nICIkYWNfc2l0ZV9maWxlIiA+JjUKLSsgICAgZWNobyAibG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIgotICAgICAuICIkYWNfc2l0ZV9maWxlIgotICAgZmkKLSBkb25lCi0gCi0gaWYgdGVzdCAtciAiJGNhY2hlX2ZpbGUiOyB0aGVuCi0tICAjIFNvbWUgdmVyc2lvbnMgb2YgYmFzaCB3aWxsIGZhaWwgdG8gc291cmNlIC9kZXYvbnVsbCAoc3BlY2lhbAotLSAgIyBmaWxlcyBhY3R1YWxseSksIHNvIHdlIGF2b2lkIGRvaW5nIHRoYXQuCi0tICBpZiB0ZXN0IC1mICIkY2FjaGVfZmlsZSI7IHRoZW4KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogbG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1Ci0tZWNobyAiJGFzX21lOiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQotLSAgICBjYXNlICRjYWNoZV9maWxlIGluCi0tICAgICAgW1xcL10qIHwgPzpbXFwvXSogKSAuICRjYWNoZV9maWxlOzsKLS0gICAgICAqKSAgICAgICAgICAgICAgICAgICAgICAuIC4vJGNhY2hlX2ZpbGU7OwotLSAgICBlc2FjCi0tICBmaQotKyAgZWNobyAibG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIKLSsgIC4gJGNhY2hlX2ZpbGUKLSBlbHNlCi0tICB7IGVjaG8gIiRhc19tZTokTElORU5POiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1Ci0tZWNobyAiJGFzX21lOiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KLS0gID4kY2FjaGVfZmlsZQotKyAgZWNobyAiY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiCi0rICA+ICRjYWNoZV9maWxlCi0gZmkKLSAKLS0jIENoZWNrIHRoYXQgdGhlIHByZWNpb3VzIHZhcmlhYmxlcyBzYXZlZCBpbiB0aGUgY2FjaGUgaGF2ZSBrZXB0IHRoZSBzYW1lCi0tIyB2YWx1ZS4KLS1hY19jYWNoZV9jb3JydXB0ZWQ9ZmFsc2UKLS1mb3IgYWNfdmFyIGluIGAoc2V0KSAyPiYxIHwKLS0gICAgICAgICAgICAgICBzZWQgLW4gJ3MvXmFjX2Vudl9cKFthLXpBLVpfMC05XSpcKV9zZXQ9LiovXDEvcCdgOyBkbwotLSAgZXZhbCBhY19vbGRfc2V0PVwkYWNfY3ZfZW52XyR7YWNfdmFyfV9zZXQKLS0gIGV2YWwgYWNfbmV3X3NldD1cJGFjX2Vudl8ke2FjX3Zhcn1fc2V0Ci0tICBldmFsIGFjX29sZF92YWw9IlwkYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1ZSIKLS0gIGV2YWwgYWNfbmV3X3ZhbD0iXCRhY19lbnZfJHthY192YXJ9X3ZhbHVlIgotLSAgY2FzZSAkYWNfb2xkX3NldCwkYWNfbmV3X3NldCBpbgotLSAgICBzZXQsKQotLSAgICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBcYCRhY192YXInIHdhcyBzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9Ci0tICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsKLS0gICAgLHNldCkKLS0gICAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9Ci0tICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsKLS0gICAgLCk7OwotLSAgICAqKQotLSAgICAgIGlmIHRlc3QgIngkYWNfb2xkX3ZhbCIgIT0gIngkYWNfbmV3X3ZhbCI7IHRoZW4KLS0gICAgICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjI7fQotLSAgICAgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogICBmb3JtZXIgdmFsdWU6ICAkYWNfb2xkX3ZhbCIgPiY1Ci0tZWNobyAiJGFzX21lOiAgIGZvcm1lciB2YWx1ZTogICRhY19vbGRfdmFsIiA+JjI7fQotLSAgICAgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogICBjdXJyZW50IHZhbHVlOiAkYWNfbmV3X3ZhbCIgPiY1Ci0tZWNobyAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6ICRhY19uZXdfdmFsIiA+JjI7fQotLSAgICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPToKLS0gICAgICBmaTs7Ci0tICBlc2FjCi0tICAjIFBhc3MgcHJlY2lvdXMgdmFyaWFibGVzIHRvIGNvbmZpZy5zdGF0dXMuCi0tICBpZiB0ZXN0ICIkYWNfbmV3X3NldCIgPSBzZXQ7IHRoZW4KLS0gICAgY2FzZSAkYWNfbmV3X3ZhbCBpbgotLSAgICAqIiAiKnwqIgkiKnwqW1xbXF1cflwjXCRcXlwmXCpcKFwpXHtcfVxcXHxcO1w8XD5cP1wiXCddKikKLS0gICAgICBhY19hcmc9JGFjX3Zhcj1gZWNobyAiJGFjX25ld192YWwiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7Ci0tICAgICopIGFjX2FyZz0kYWNfdmFyPSRhY19uZXdfdmFsIDs7Ci0tICAgIGVzYWMKLS0gICAgY2FzZSAiICRhY19jb25maWd1cmVfYXJncyAiIGluCi0tICAgICAgKiIgJyRhY19hcmcnICIqKSA7OyAjIEF2b2lkIGR1cHMuICBVc2Ugb2YgcXVvdGVzIGVuc3VyZXMgYWNjdXJhY3kuCi0tICAgICAgKikgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAnJGFjX2FyZyciIDs7Ci0tICAgIGVzYWMKLS0gIGZpCi0tZG9uZQotLWlmICRhY19jYWNoZV9jb3JydXB0ZWQ7IHRoZW4KLS0gIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25tZW50IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiYyO30KLS0gIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IHJ1biBcYG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IHJ1biBcYG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tZmkKLS0KLSBhY19leHQ9YwotKyMgQ0ZMQUdTIGlzIG5vdCBpbiBhY19jcHAgYmVjYXVzZSAtZywgLU8sIGV0Yy4gYXJlIG5vdCB2YWxpZCBjcHAgb3B0aW9ucy4KLSBhY19jcHA9JyRDUFAgJENQUEZMQUdTJwotLWFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLS1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLSthY19jb21waWxlPScke0NDLWNjfSAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0IDE+JjUnCi0rYWNfbGluaz0nJHtDQy1jY30gLW8gY29uZnRlc3Qke2FjX2V4ZWV4dH0gJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyAxPiY1JwotK2Nyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jY19jcm9zcwotIAotK2FjX2V4ZWV4dD0KLSthY19vYmpleHQ9bwotK2lmIChlY2hvICJ0ZXN0aW5nXGMiOyBlY2hvIDEsMiwzKSB8IGdyZXAgYyA+L2Rldi9udWxsOyB0aGVuCi0rICAjIFN0YXJkZW50IFZpc3RyYSBTVlI0IGdyZXAgbGFja3MgLWUsIHNheXMgZ2hhemlAY2FpcC5ydXRnZXJzLmVkdS4KLSsgIGlmIChlY2hvIC1uIHRlc3Rpbmc7IGVjaG8gMSwyLDMpIHwgc2VkIHMvLW4veG4vIHwgZ3JlcCB4biA+L2Rldi9udWxsOyB0aGVuCi0rICAgIGFjX249IGFjX2M9JwotKycgYWNfdD0nCScKLSsgIGVsc2UKLSsgICAgYWNfbj0tbiBhY19jPSBhY190PQotKyAgZmkKLStlbHNlCi0rICBhY19uPSBhY19jPSdcYycgYWNfdD0KLStmaQotIAotIAotIAotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotIGFjX2F1eF9kaXI9Ci0gZm9yIGFjX2RpciBpbiAkc3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8uLi8uLjsgZG8KLSAgIGlmIHRlc3QgLWYgJGFjX2Rpci9pbnN0YWxsLXNoOyB0aGVuCi1AQCAtMTI4MSw3NDAgKzU0NCwzMTIgQEAKLSAgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwuc2ggLWMiCi0gICAgIGJyZWFrCi0tICBlbGlmIHRlc3QgLWYgJGFjX2Rpci9zaHRvb2w7IHRoZW4KLS0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0tICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL3NodG9vbCBpbnN0YWxsIC1jIgotLSAgICBicmVhawotICAgZmkKLSBkb25lCi0gaWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuCi0tICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgZmluZCBpbnN0YWxsLXNoIG9yIGluc3RhbGwuc2ggaW4gJHNyY2RpciAkc3JjZGlyLy4uICRzcmNkaXIvLi4vLi4iID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGluc3RhbGwtc2ggb3IgaW5zdGFsbC5zaCBpbiAkc3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8uLi8uLiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBmaW5kIGluc3RhbGwtc2ggb3IgaW5zdGFsbC5zaCBpbiAkc3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8uLi8uLiIgMT4mMjsgZXhpdCAxOyB9Ci0gZmkKLS1hY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiCi0tYWNfY29uZmlnX3N1Yj0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiCi0tYWNfY29uZmlndXJlPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlndXJlIiAjIFRoaXMgc2hvdWxkIGJlIEN5Z251cyBjb25maWd1cmUuCi0rYWNfY29uZmlnX2d1ZXNzPSRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcwotK2FjX2NvbmZpZ19zdWI9JGFjX2F1eF9kaXIvY29uZmlnLnN1YgotK2FjX2NvbmZpZ3VyZT0kYWNfYXV4X2Rpci9jb25maWd1cmUgIyBUaGlzIHNob3VsZCBiZSBDeWdudXMgY29uZmlndXJlLgotIAotLSMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KLS0kYWNfY29uZmlnX3N1YiBzdW40ID4vZGV2L251bGwgMj4mMSB8fAotLSAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IHJ1biAkYWNfY29uZmlnX3N1YiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IHJ1biAkYWNfY29uZmlnX3N1YiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSAKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9idWlsZCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBhY19jdl9idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMKLS10ZXN0IC16ICIkYWNfY3ZfYnVpbGRfYWxpYXMiICYmCi0tICBhY19jdl9idWlsZF9hbGlhcz1gJGFjX2NvbmZpZ19ndWVzc2AKLS10ZXN0IC16ICIkYWNfY3ZfYnVpbGRfYWxpYXMiICYmCi0tICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS1hY19jdl9idWlsZD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2J1aWxkX2FsaWFzYCB8fAotLSAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2J1aWxkX2FsaWFzIGZhaWxlZCIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2J1aWxkX2FsaWFzIGZhaWxlZCIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsjIERvIHNvbWUgZXJyb3IgY2hlY2tpbmcgYW5kIGRlZmF1bHRpbmcgZm9yIHRoZSBob3N0IGFuZCB0YXJnZXQgdHlwZS4KLSsjIFRoZSBpbnB1dHMgYXJlOgotKyMgICAgY29uZmlndXJlIC0taG9zdD1IT1NUIC0tdGFyZ2V0PVRBUkdFVCAtLWJ1aWxkPUJVSUxEIE5PTk9QVAotKyMKLSsjIFRoZSBydWxlcyBhcmU6Ci0rIyAxLiBZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHNwZWNpZnkgLS1ob3N0LCAtLXRhcmdldCwgYW5kIG5vbm9wdCBhdCB0aGUKLSsjICAgIHNhbWUgdGltZS4KLSsjIDIuIEhvc3QgZGVmYXVsdHMgdG8gbm9ub3B0LgotKyMgMy4gSWYgbm9ub3B0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gaG9zdCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBob3N0LAotKyMgICAgYXMgZGV0ZXJtaW5lZCBieSBjb25maWcuZ3Vlc3MuCi0rIyA0LiBUYXJnZXQgYW5kIGJ1aWxkIGRlZmF1bHQgdG8gbm9ub3B0LgotKyMgNS4gSWYgbm9ub3B0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGFyZ2V0IGFuZCBidWlsZCBkZWZhdWx0IHRvIGhvc3QuCi0gCi0rIyBUaGUgYWxpYXNlcyBzYXZlIHRoZSBuYW1lcyB0aGUgdXNlciBzdXBwbGllZCwgd2hpbGUgJGhvc3QgZXRjLgotKyMgd2lsbCBnZXQgY2Fub25pY2FsaXplZC4KLStjYXNlICRob3N0LS0tJHRhcmdldC0tLSRub25vcHQgaW4KLStOT05FLS0tKi0tLSogfCAqLS0tTk9ORS0tLSogfCAqLS0tKi0tLU5PTkUpIDs7Ci0rKikgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gb25seSBjb25maWd1cmUgZm9yIG9uZSBob3N0IGFuZCBvbmUgdGFyZ2V0IGF0IGEgdGltZSIgMT4mMjsgZXhpdCAxOyB9IDs7Ci0rZXNhYwotKwotKwotKyMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KLStpZiAke0NPTkZJR19TSEVMTC0vYmluL3NofSAkYWNfY29uZmlnX3N1YiBzdW40ID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rZWxzZSB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGNhbiBub3QgcnVuICRhY19jb25maWdfc3ViIiAxPiYyOyBleGl0IDE7IH0KLSBmaQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2J1aWxkIiA+JjYKLS1idWlsZD0kYWNfY3ZfYnVpbGQKLS1idWlsZF9jcHU9YGVjaG8gJGFjX2N2X2J1aWxkIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKLS1idWlsZF92ZW5kb3I9YGVjaG8gJGFjX2N2X2J1aWxkIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKLS1idWlsZF9vcz1gZWNobyAkYWNfY3ZfYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAotIAotK2VjaG8gJGFjX24gImNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo1ODU6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQotIAotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9ob3N0K3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGFjX2N2X2hvc3RfYWxpYXM9JGhvc3RfYWxpYXMKLS10ZXN0IC16ICIkYWNfY3ZfaG9zdF9hbGlhcyIgJiYKLS0gIGFjX2N2X2hvc3RfYWxpYXM9JGFjX2N2X2J1aWxkX2FsaWFzCi0tYWNfY3ZfaG9zdD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2hvc3RfYWxpYXNgIHx8Ci0tICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfaG9zdF9hbGlhcyBmYWlsZWQiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl9ob3N0X2FsaWFzIGZhaWxlZCIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLStob3N0X2FsaWFzPSRob3N0Ci0rY2FzZSAiJGhvc3RfYWxpYXMiIGluCi0rTk9ORSkKLSsgIGNhc2UgJG5vbm9wdCBpbgotKyAgTk9ORSkKLSsgICAgaWYgaG9zdF9hbGlhcz1gJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJGFjX2NvbmZpZ19ndWVzc2A7IHRoZW4gOgotKyAgICBlbHNlIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBndWVzcyBob3N0IHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkgb25lIiAxPiYyOyBleGl0IDE7IH0KLSsgICAgZmkgOzsKLSsgICopIGhvc3RfYWxpYXM9JG5vbm9wdCA7OwotKyAgZXNhYyA7OwotK2VzYWMKLSAKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaG9zdCIgPiY2Ci0taG9zdD0kYWNfY3ZfaG9zdAotLWhvc3RfY3B1PWBlY2hvICRhY19jdl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKLS1ob3N0X3ZlbmRvcj1gZWNobyAkYWNfY3ZfaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCi0taG9zdF9vcz1gZWNobyAkYWNfY3ZfaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCi0raG9zdD1gJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJGFjX2NvbmZpZ19zdWIgJGhvc3RfYWxpYXNgCi0raG9zdF9jcHU9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotK2hvc3RfdmVuZG9yPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKLStob3N0X29zPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLStlY2hvICIkYWNfdCIiJGhvc3QiIDE+JjYKLSAKLStlY2hvICRhY19uICJjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo2MDY6IGNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZSIgPiY1Ci0gCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl90YXJnZXQrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgYWNfY3ZfdGFyZ2V0X2FsaWFzPSR0YXJnZXRfYWxpYXMKLS10ZXN0ICJ4JGFjX2N2X3RhcmdldF9hbGlhcyIgPSAieCIgJiYKLS0gIGFjX2N2X3RhcmdldF9hbGlhcz0kYWNfY3ZfaG9zdF9hbGlhcwotLWFjX2N2X3RhcmdldD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X3RhcmdldF9hbGlhc2AgfHwKLS0gIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl90YXJnZXRfYWxpYXMgZmFpbGVkIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfdGFyZ2V0X2FsaWFzIGZhaWxlZCIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSt0YXJnZXRfYWxpYXM9JHRhcmdldAotK2Nhc2UgIiR0YXJnZXRfYWxpYXMiIGluCi0rTk9ORSkKLSsgIGNhc2UgJG5vbm9wdCBpbgotKyAgTk9ORSkgdGFyZ2V0X2FsaWFzPSRob3N0X2FsaWFzIDs7Ci0rICAqKSB0YXJnZXRfYWxpYXM9JG5vbm9wdCA7OwotKyAgZXNhYyA7OwotK2VzYWMKLSAKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl90YXJnZXQiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl90YXJnZXQiID4mNgotLXRhcmdldD0kYWNfY3ZfdGFyZ2V0Ci0tdGFyZ2V0X2NwdT1gZWNobyAkYWNfY3ZfdGFyZ2V0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKLS10YXJnZXRfdmVuZG9yPWBlY2hvICRhY19jdl90YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAotLXRhcmdldF9vcz1gZWNobyAkYWNfY3ZfdGFyZ2V0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLSt0YXJnZXQ9YCR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICRhY19jb25maWdfc3ViICR0YXJnZXRfYWxpYXNgCi0rdGFyZ2V0X2NwdT1gZWNobyAkdGFyZ2V0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKLSt0YXJnZXRfdmVuZG9yPWBlY2hvICR0YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAotK3RhcmdldF9vcz1gZWNobyAkdGFyZ2V0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLStlY2hvICIkYWNfdCIiJHRhcmdldCIgMT4mNgotIAotK2VjaG8gJGFjX24gImNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6NjI0OiBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZSIgPiY1Ci0gCi0tIyBUaGUgYWxpYXNlcyBzYXZlIHRoZSBuYW1lcyB0aGUgdXNlciBzdXBwbGllZCwgd2hpbGUgJGhvc3QgZXRjLgotLSMgd2lsbCBnZXQgY2Fub25pY2FsaXplZC4KLS10ZXN0IC1uICIkdGFyZ2V0X2FsaWFzIiAmJgotK2J1aWxkX2FsaWFzPSRidWlsZAotK2Nhc2UgIiRidWlsZF9hbGlhcyIgaW4KLStOT05FKQotKyAgY2FzZSAkbm9ub3B0IGluCi0rICBOT05FKSBidWlsZF9hbGlhcz0kaG9zdF9hbGlhcyA7OwotKyAgKikgYnVpbGRfYWxpYXM9JG5vbm9wdCA7OwotKyAgZXNhYyA7OwotK2VzYWMKLSsKLStidWlsZD1gJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJGFjX2NvbmZpZ19zdWIgJGJ1aWxkX2FsaWFzYAotK2J1aWxkX2NwdT1gZWNobyAkYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotK2J1aWxkX3ZlbmRvcj1gZWNobyAkYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAotK2J1aWxkX29zPWBlY2hvICRidWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCi0rZWNobyAiJGFjX3QiIiRidWlsZCIgMT4mNgotKwotK3Rlc3QgIiRob3N0X2FsaWFzIiAhPSAiJHRhcmdldF9hbGlhcyIgJiYKLSAgIHRlc3QgIiRwcm9ncmFtX3ByZWZpeCRwcm9ncmFtX3N1ZmZpeCRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIiA9IFwKLSAgICAgTk9ORU5PTkVzLHgseCwgJiYKLSAgIHByb2dyYW1fcHJlZml4PSR7dGFyZ2V0X2FsaWFzfS0KLS1hY19leHQ9YwotLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi0tYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotLWFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi0tYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotLWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1nY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWdjYzsgYWNfd29yZD0kMgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0tICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotLWVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWdjYyIKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotLSAgICBicmVhayAyCi0tICBmaQotLWRvbmUKLS1kb25lCi0gCi0tZmkKLS1maQotLUNDPSRhY19jdl9wcm9nX0NDCi0taWYgdGVzdCAtbiAiJENDIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJENDIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kQ0MiID4mNgotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0tZmkKLS0KLS1maQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0NDIjsgdGhlbgotLSAgYWNfY3RfQ0M9JENDCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotIHNldCBkdW1teSBnY2M7IGFjX3dvcmQ9JDIKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6NjQ5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NDJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgotLSAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLS1lbHNlCi0tYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotLWZvciBhc19kaXIgaW4gJFBBVEgKLS1kbwotLSAgSUZTPSRhc19zYXZlX0lGUwotLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLS0gIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotLSAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iZ2NjIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLS0KLS1maQotLWZpCi0tYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKLS1pZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdF9DQyIgPiY2Ci0tZWxzZQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQotLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLS1maQotLQotLSAgQ0M9JGFjX2N0X0NDCi0tZWxzZQotLSAgQ0M9IiRhY19jdl9wcm9nX0NDIgotLWZpCi0tCi0taWYgdGVzdCAteiAiJENDIjsgdGhlbgotLSAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1jYzsgYWNfd29yZD0kMgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0gICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0gICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotIGVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWNjIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLS0KLSsgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IjoiCi0rICBhY19kdW1teT0iJFBBVEgiCi0rICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSsgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSsgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyRhY193b3JkOyB0aGVuCi0rICAgICAgYWNfY3ZfcHJvZ19DQz0iZ2NjIgotKyAgICAgIGJyZWFrCi0rICAgIGZpCi0rICBkb25lCi0rICBJRlM9IiRhY19zYXZlX2lmcyIKLSBmaQotIGZpCi0tQ0M9JGFjX2N2X3Byb2dfQ0MKLStDQz0iJGFjX2N2X3Byb2dfQ0MiCi0gaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJENDIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kQ0MiID4mNgotKyAgZWNobyAiJGFjX3QiIiRDQyIgMT4mNgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0rICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotIAotLWZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQ0MiOyB0aGVuCi0tICBhY19jdF9DQz0kQ0MKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBjYzsgYWNfd29yZD0kMgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCi0tICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotLWVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSJjYyIKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotLSAgICBicmVhayAyCi0tICBmaQotLWRvbmUKLS1kb25lCi0tCi0tZmkKLS1maQotLWFjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0X0NDCi0taWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3RfQ0MiID4mNgotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0tZmkKLS0KLS0gIENDPSRhY19jdF9DQwotLWVsc2UKLS0gIENDPSIkYWNfY3ZfcHJvZ19DQyIKLS1maQotLQotLWZpCi0gaWYgdGVzdCAteiAiJENDIjsgdGhlbgotICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0gc2V0IGR1bW15IGNjOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjY3OTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DQycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLSAgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0gZWxzZQotKyAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKLSAgIGFjX3Byb2dfcmVqZWN0ZWQ9bm8KLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBpZiB0ZXN0ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KLS0gICAgICAgYWNfcHJvZ19yZWplY3RlZD15ZXMKLS0gICAgICAgY29udGludWUKLS0gICAgIGZpCi0tICAgIGFjX2N2X3Byb2dfQ0M9ImNjIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLS0KLSsgIGFjX2R1bW15PSIkUEFUSCIKLSsgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotKyAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRoZW4KLSsgICAgICBpZiB0ZXN0ICIkYWNfZGlyLyRhY193b3JkIiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KLSsgICAgICAgIGFjX3Byb2dfcmVqZWN0ZWQ9eWVzCi0rCWNvbnRpbnVlCi0rICAgICAgZmkKLSsgICAgICBhY19jdl9wcm9nX0NDPSJjYyIKLSsgICAgICBicmVhawotKyAgICBmaQotKyAgZG9uZQotKyAgSUZTPSIkYWNfc2F2ZV9pZnMiCi0gaWYgdGVzdCAkYWNfcHJvZ19yZWplY3RlZCA9IHllczsgdGhlbgotICAgIyBXZSBmb3VuZCBhIGJvZ29uIGluIHRoZSBwYXRoLCBzbyBtYWtlIHN1cmUgd2UgbmV2ZXIgdXNlIGl0LgotICAgc2V0IGR1bW15ICRhY19jdl9wcm9nX0NDCi0gICBzaGlmdAotLSAgaWYgdGVzdCAkIyAhPSAwOyB0aGVuCi0rICBpZiB0ZXN0ICQjIC1ndCAwOyB0aGVuCi0gICAgICMgV2UgY2hvc2UgYSBkaWZmZXJlbnQgY29tcGlsZXIgZnJvbSB0aGUgYm9ndXMgb25lLgotICAgICAjIEhvd2V2ZXIsIGl0IGhhcyB0aGUgc2FtZSBiYXNlbmFtZSwgc28gdGhlIGJvZ29uIHdpbGwgYmUgY2hvc2VuCi0gICAgICMgZmlyc3QgaWYgd2Ugc2V0IENDIHRvIGp1c3QgdGhlIGJhc2VuYW1lOyB1c2UgdGhlIGZ1bGwgZmlsZSBuYW1lLgotICAgICBzaGlmdAotLSAgICBhY19jdl9wcm9nX0NDPSIkYXNfZGlyLyRhY193b3JkJHsxKycgJ30kQCIKLSsgICAgc2V0IGR1bW15ICIkYWNfZGlyLyRhY193b3JkIiAiJEAiCi0rICAgIHNoaWZ0Ci0rICAgIGFjX2N2X3Byb2dfQ0M9IiRAIgotICAgZmkKLSBmaQotIGZpCi0gZmkKLS1DQz0kYWNfY3ZfcHJvZ19DQwotK0NDPSIkYWNfY3ZfcHJvZ19DQyIKLSBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkQ0MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRDQyIgPiY2Ci0rICBlY2hvICIkYWNfdCIiJENDIiAxPiY2Ci0gZWxzZQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQotLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLSsgIGVjaG8gIiRhY190IiJubyIgMT4mNgotIGZpCi0gCi0tZmkKLS1pZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCi0tICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICBmb3IgYWNfcHJvZyBpbiBjbAotLSAgZG8KLS0gICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotKyAgaWYgdGVzdCAteiAiJENDIjsgdGhlbgotKyAgICBjYXNlICJgdW5hbWUgLXNgIiBpbgotKyAgICAqd2luMzIqIHwgKldJTjMyKikKLSsgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNsIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgY2w7IGFjX3dvcmQ9JDIKLStlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo3MzA6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ0MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0gICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotIGVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0NDPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotLSAgICBicmVhayAyCi0tICBmaQotLWRvbmUKLS1kb25lCi0tCi0rICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSI6IgotKyAgYWNfZHVtbXk9IiRQQVRIIgotKyAgZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0rICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0rICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgotKyAgICAgIGFjX2N2X3Byb2dfQ0M9ImNsIgotKyAgICAgIGJyZWFrCi0rICAgIGZpCi0rICBkb25lCi0rICBJRlM9IiRhY19zYXZlX2lmcyIKLSBmaQotIGZpCi0tQ0M9JGFjX2N2X3Byb2dfQ0MKLStDQz0iJGFjX2N2X3Byb2dfQ0MiCi0gaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJENDIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kQ0MiID4mNgotKyAgZWNobyAiJGFjX3QiIiRDQyIgMT4mNgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0rICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotLQotLSAgICB0ZXN0IC1uICIkQ0MiICYmIGJyZWFrCi0tICBkb25lCi0tZmkKLS1pZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCi0tICBhY19jdF9DQz0kQ0MKLS0gIGZvciBhY19wcm9nIGluIGNsCi0tZG8KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCi0tICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotLWVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfcHJvZyIKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotLSAgICBicmVhayAyCi0rIDs7Ci0rICAgIGVzYWMKLSAgIGZpCi0tZG9uZQotLWRvbmUKLS0KLSsgIHRlc3QgLXogIiRDQyIgJiYgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBubyBhY2NlcHRhYmxlIGNjIGZvdW5kIGluIFwkUEFUSCIgMT4mMjsgZXhpdCAxOyB9Ci0gZmkKLS1maQotLWFjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0X0NDCi0taWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3RfQ0MiID4mNgotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0tZmkKLSAKLS0gIHRlc3QgLW4gIiRhY19jdF9DQyIgJiYgYnJlYWsKLS1kb25lCi0rZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIHdvcmtzIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6NzYyOiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgd29ya3MiID4mNQotIAotLSAgQ0M9JGFjX2N0X0NDCi0tZmkKLSthY19leHQ9YwotKyMgQ0ZMQUdTIGlzIG5vdCBpbiBhY19jcHAgYmVjYXVzZSAtZywgLU8sIGV0Yy4gYXJlIG5vdCB2YWxpZCBjcHAgb3B0aW9ucy4KLSthY19jcHA9JyRDUFAgJENQUEZMQUdTJwotK2FjX2NvbXBpbGU9JyR7Q0MtY2N9IC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgMT4mNScKLSthY19saW5rPScke0NDLWNjfSAtbyBjb25mdGVzdCR7YWNfZXhlZXh0fSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTIDE+JjUnCi0rY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gCi0tZmkKLStjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8IEVPRgotIAotKyNsaW5lIDc3MyAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotLXRlc3QgLXogIiRDQyIgJiYgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogbm8gYWNjZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5kIGluIFwkUEFUSAotLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBubyBhY2NlcHRhYmxlIEMgY29tcGlsZXIgZm91bmQgaW4gXCRQQVRICi0tU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tCi0tIyBQcm92aWRlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyLgotLWVjaG8gIiRhc19tZTokTElORU5POiIgXAotLSAgICAgImNoZWNraW5nIGZvciBDIGNvbXBpbGVyIHZlcnNpb24iID4mNQotLWFjX2NvbXBpbGVyPWBzZXQgWCAkYWNfY29tcGlsZTsgZWNobyAkMmAKLS17IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlciAtLXZlcnNpb24gPC9kZXYvbnVsbCA+JjVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGVyIC0tdmVyc2lvbiA8L2Rldi9udWxsID4mNSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfQotLXsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVyIC12IDwvZGV2L251bGwgPiY1XCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlciAtdiA8L2Rldi9udWxsID4mNSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfQotLXsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVyIC1WIDwvZGV2L251bGwgPiY1XCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlciAtViA8L2Rldi9udWxsID4mNSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfQotLQotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLQotLWludAotLW1haW4gKCkKLS17Ci0tCi0tICA7Ci0tICByZXR1cm4gMDsKLS19Ci0tX0FDRU9GCi0tYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMKLS1hY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzIGEub3V0IGEuZXhlIGIub3V0IgotLSMgVHJ5IHRvIGNyZWF0ZSBhbiBleGVjdXRhYmxlIHdpdGhvdXQgLW8gZmlyc3QsIGRpc3JlZ2FyZCBhLm91dC4KLS0jIEl0IHdpbGwgaGVscCB1cyBkaWFnbm9zZSBicm9rZW4gY29tcGlsZXJzLCBhbmQgZmluZGluZyBvdXQgYW4gaW50dWl0aW9uCi0tIyBvZiBleGVleHQuCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0Li4uICRFQ0hPX0MiID4mNgotLWFjX2xpbmtfZGVmYXVsdD1gZWNobyAiJGFjX2xpbmsiIHwgc2VkICdzLyAtbyAqY29uZnRlc3RbXiBdKi8vJ2AKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rX2RlZmF1bHRcIiIpID4mNQotLSAgKGV2YWwgJGFjX2xpbmtfZGVmYXVsdCkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgotLSAgIyBGaW5kIHRoZSBvdXRwdXQsIHN0YXJ0aW5nIGZyb20gdGhlIG1vc3QgbGlrZWx5LiAgVGhpcyBzY2hlbWUgaXMKLS0jIG5vdCByb2J1c3QgdG8ganVuayBpbiBgLicsIGhlbmNlIGdvIHRvIHdpbGRjYXJkcyAoYS4qKSBvbmx5IGFzIGEgbGFzdAotLSMgcmVzb3J0LgotLQotLSMgQmUgY2FyZWZ1bCB0byBpbml0aWFsaXplIHRoaXMgdmFyaWFibGUsIHNpbmNlIGl0IHVzZWQgdG8gYmUgY2FjaGVkLgotLSMgT3RoZXJ3aXNlIGFuIG9sZCBjYWNoZSB2YWx1ZSBvZiBgbm8nIGxlZCB0byBgRVhFRVhUID0gbm8nIGluIGEgTWFrZWZpbGUuCi0tYWNfY3ZfZXhlZXh0PQotLSMgYi5vdXQgaXMgY3JlYXRlZCBieSBpOTYwIGNvbXBpbGVycy4KLS1mb3IgYWNfZmlsZSBpbiBhX291dC5leGUgYS5leGUgY29uZnRlc3QuZXhlIGEub3V0IGNvbmZ0ZXN0IGEuKiBjb25mdGVzdC4qIGIub3V0Ci0tZG8KLS0gIHRlc3QgLWYgIiRhY19maWxlIiB8fCBjb250aW51ZQotLSAgY2FzZSAkYWNfZmlsZSBpbgotLSAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubyB8ICoub2JqICkKLS0gICAgICAgIDs7Ci0tICAgIGNvbmZ0ZXN0LiRhY19leHQgKQotLSAgICAgICAgIyBUaGlzIGlzIHRoZSBzb3VyY2UgZmlsZS4KLS0gICAgICAgIDs7Ci0tICAgIFthYl0ub3V0ICkKLS0gICAgICAgICMgV2UgZm91bmQgdGhlIGRlZmF1bHQgZXhlY3V0YWJsZSwgYnV0IGV4ZWV4dD0nJyBpcyBtb3N0Ci0tICAgICAgICAjIGNlcnRhaW5seSByaWdodC4KLS0gICAgICAgIGJyZWFrOzsKLS0gICAgKi4qICkKLS0gICAgICAgIGFjX2N2X2V4ZWV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJ1teLl0qXChcLi4qXCknYAotLSAgICAgICAgIyBGSVhNRTogSSBiZWxpZXZlIHdlIGV4cG9ydCBhY19jdl9leGVleHQgZm9yIExpYnRvb2wsCi0tICAgICAgICAjIGJ1dCBpdCB3b3VsZCBiZSBjb29sIHRvIGZpbmQgb3V0IGlmIGl0J3MgdHJ1ZS4gIERvZXMgYW55Ym9keQotLSAgICAgICAgIyBtYWludGFpbiBMaWJ0b29sPyAtLWFraW0uCi0tICAgICAgICBleHBvcnQgYWNfY3ZfZXhlZXh0Ci0tICAgICAgICBicmVhazs7Ci0tICAgICogKQotLSAgICAgICAgYnJlYWs7OwotLSAgZXNhYwotLWRvbmUKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS17IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogQyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzCi0tU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mMjt9Ci0tICAgeyAoZXhpdCA3Nyk7IGV4aXQgNzc7IH07IH0KLS1maQotLQotLWFjX2V4ZWV4dD0kYWNfY3ZfZXhlZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2ZpbGUiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19maWxlIiA+JjYKLS0KLS0jIENoZWNrIHRoZSBjb21waWxlciBwcm9kdWNlcyBleGVjdXRhYmxlcyB3ZSBjYW4gcnVuLiAgSWYgbm90LCBlaXRoZXIKLS0jIHRoZSBjb21waWxlciBpcyBicm9rZW4sIG9yIHdlIGNyb3NzIGNvbXBpbGUuCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgd29ya3MiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciB3b3Jrcy4uLiAkRUNIT19DIiA+JjYKLS0jIEZJWE1FOiBUaGVzZSBjcm9zcyBjb21waWxlciBoYWNrcyBzaG91bGQgYmUgcmVtb3ZlZCBmb3IgQXV0b2NvbmYgMy4wCi0tIyBJZiBub3QgY3Jvc3MgY29tcGlsaW5nLCBjaGVjayB0aGF0IHdlIGNhbiBydW4gYSBzaW1wbGUgcHJvZ3JhbS4KLS1pZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiAhPSB5ZXM7IHRoZW4KLS0gIGlmIHsgYWNfdHJ5PScuLyRhY19maWxlJwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gICAgY3Jvc3NfY29tcGlsaW5nPW5vCi0rbWFpbigpe3JldHVybigwKTt9Ci0rRU9GCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3Nzg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotKyAgYWNfY3ZfcHJvZ19jY193b3Jrcz15ZXMKLSsgICMgSWYgd2UgY2FuJ3QgcnVuIGEgdHJpdmlhbCBwcm9ncmFtLCB3ZSBhcmUgcHJvYmFibHkgdXNpbmcgYSBjcm9zcyBjb21waWxlci4KLSsgIGlmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbDsgdGhlbgotKyAgICBhY19jdl9wcm9nX2NjX2Nyb3NzPW5vCi0gICBlbHNlCi0tICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbWF5YmU7IHRoZW4KLS0JY3Jvc3NfY29tcGlsaW5nPXllcwotLSAgICBlbHNlCi0tCXsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBydW4gQyBjb21waWxlZCBwcm9ncmFtcy4KLS1JZiB5b3UgbWVhbnQgdG8gY3Jvc3MgY29tcGlsZSwgdXNlIFxgLS1ob3N0Jy4KLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IHJ1biBDIGNvbXBpbGVkIHByb2dyYW1zLgotLUlmIHlvdSBtZWFudCB0byBjcm9zcyBjb21waWxlLCB1c2UgXGAtLWhvc3QnLgotLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotLSAgICBmaQotKyAgICBhY19jdl9wcm9nX2NjX2Nyb3NzPXllcwotICAgZmkKLStlbHNlCi0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBhY19jdl9wcm9nX2NjX3dvcmtzPW5vCi0gZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiB5ZXMiID4mNQotLWVjaG8gIiR7RUNIT19UfXllcyIgPiY2Ci0rcm0gLWZyIGNvbmZ0ZXN0KgotK2FjX2V4dD1jCi0rIyBDRkxBR1MgaXMgbm90IGluIGFjX2NwcCBiZWNhdXNlIC1nLCAtTywgZXRjLiBhcmUgbm90IHZhbGlkIGNwcCBvcHRpb25zLgotK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi0rYWNfY29tcGlsZT0nJHtDQy1jY30gLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCAxPiY1JwotK2FjX2xpbms9JyR7Q0MtY2N9IC1vIGNvbmZ0ZXN0JHthY19leGVleHR9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgMT4mNScKLStjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY2NfY3Jvc3MKLSAKLS1ybSAtZiBhLm91dCBhLmV4ZSBjb25mdGVzdCRhY19jdl9leGVleHQgYi5vdXQKLS1hY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQotLSMgQ2hlY2sgdGhlIGNvbXBpbGVyIHByb2R1Y2VzIGV4ZWN1dGFibGVzIHdlIGNhbiBydW4uICBJZiBub3QsIGVpdGhlcgotLSMgdGhlIGNvbXBpbGVyIGlzIGJyb2tlbiwgb3Igd2UgY3Jvc3MgY29tcGlsZS4KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIGNyb3NzIGNvbXBpbGluZy4uLiAkRUNIT19DIiA+JjYKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkY3Jvc3NfY29tcGlsaW5nIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kY3Jvc3NfY29tcGlsaW5nIiA+JjYKLS0KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBleGVjdXRhYmxlcyIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc3VmZml4IG9mIGV4ZWN1dGFibGVzLi4uICRFQ0hPX0MiID4mNgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQotLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KLS0gICMgSWYgYm90aCBgY29uZnRlc3QuZXhlJyBhbmQgYGNvbmZ0ZXN0JyBhcmUgYHByZXNlbnQnICh3ZWxsLCBvYnNlcnZhYmxlKQotLSMgY2F0Y2ggYGNvbmZ0ZXN0LmV4ZScuICBGb3IgaW5zdGFuY2Ugd2l0aCBDeWd3aW4sIGBscyBjb25mdGVzdCcgd2lsbAotLSMgd29yayBwcm9wZXJseSAoaS5lLiwgcmVmZXIgdG8gYGNvbmZ0ZXN0LmV4ZScpLCB3aGlsZSBpdCB3b24ndCB3aXRoCi0tIyBgcm0nLgotLWZvciBhY19maWxlIGluIGNvbmZ0ZXN0LmV4ZSBjb25mdGVzdCBjb25mdGVzdC4qOyBkbwotLSAgdGVzdCAtZiAiJGFjX2ZpbGUiIHx8IGNvbnRpbnVlCi0tICBjYXNlICRhY19maWxlIGluCi0tICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5vIHwgKi5vYmogKSA7OwotLSAgICAqLiogKSBhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4uKlwpJ2AKLS0gICAgICAgICAgZXhwb3J0IGFjX2N2X2V4ZWV4dAotLSAgICAgICAgICBicmVhazs7Ci0tICAgICogKSBicmVhazs7Ci0tICBlc2FjCi0tZG9uZQotLWVsc2UKLS0gIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBleGVjdXRhYmxlczogY2Fubm90IGNvbXBpbGUgYW5kIGxpbmsKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBhbmQgbGluawotLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotK2VjaG8gIiRhY190IiIkYWNfY3ZfcHJvZ19jY193b3JrcyIgMT4mNgotK2lmIHRlc3QgJGFjX2N2X3Byb2dfY2Nfd29ya3MgPSBubzsgdGhlbgotKyAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBpbnN0YWxsYXRpb24gb3IgY29uZmlndXJhdGlvbiBwcm9ibGVtOiBDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMuIiAxPiYyOyBleGl0IDE7IH0KLSBmaQotK2VjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSBpcyBhIGNyb3NzLWNvbXBpbGVyIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6ODA0OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgaXMgYSBjcm9zcy1jb21waWxlciIgPiY1Ci0rZWNobyAiJGFjX3QiIiRhY19jdl9wcm9nX2NjX2Nyb3NzIiAxPiY2Ci0rY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gCi0tcm0gLWYgY29uZnRlc3QkYWNfY3ZfZXhlZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2V4ZWV4dCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2V4ZWV4dCIgPiY2Ci0tCi0tcm0gLWYgY29uZnRlc3QuJGFjX2V4dAotLUVYRUVYVD0kYWNfY3ZfZXhlZXh0Ci0tYWNfZXhlZXh0PSRFWEVFWFQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXMiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXMuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9vYmpleHQrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo4MDk6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdOVSBDIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19nY2MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0KLS1pbnQKLS1tYWluICgpCi0tewotLQotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0Lm8gY29uZnRlc3Qub2JqCi0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgotLSAgZm9yIGFjX2ZpbGUgaW4gYChscyBjb25mdGVzdC5vIGNvbmZ0ZXN0Lm9iajsgbHMgY29uZnRlc3QuKikgMj4vZGV2L251bGxgOyBkbwotLSAgY2FzZSAkYWNfZmlsZSBpbgotLSAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyApIDs7Ci0tICAgICopIGFjX2N2X29iamV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJy4qXC5cKC4qXCknYAotLSAgICAgICBicmVhazs7Ci0tICBlc2FjCi0tZG9uZQotKyAgY2F0ID4gY29uZnRlc3QuYyA8PEVPRgotKyNpZmRlZiBfX0dOVUNfXwotKyAgeWVzOwotKyNlbmRpZgotK0VPRgotK2lmIHsgYWNfdHJ5PScke0NDLWNjfSAtRSBjb25mdGVzdC5jJzsgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4MTg6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9OyB9IHwgZWdyZXAgeWVzID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgYWNfY3ZfcHJvZ19nY2M9eWVzCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0teyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIG9iamVjdCBmaWxlczogY2Fubm90IGNvbXBpbGUKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIG9iamVjdCBmaWxlczogY2Fubm90IGNvbXBpbGUKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsgIGFjX2N2X3Byb2dfZ2NjPW5vCi0gZmkKLS0KLS1ybSAtZiBjb25mdGVzdC4kYWNfY3Zfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSBmaQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9vYmpleHQiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9vYmpleHQiID4mNgotLU9CSkVYVD0kYWNfY3Zfb2JqZXh0Ci0tYWNfb2JqZXh0PSRPQkpFWFQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlci4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2NfY29tcGlsZXJfZ251K3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotLWludAotLW1haW4gKCkKLS17Ci0tI2lmbmRlZiBfX0dOVUNfXwotLSAgICAgICBjaG9rZSBtZQotLSNlbmRpZgotK2VjaG8gIiRhY190IiIkYWNfY3ZfcHJvZ19nY2MiIDE+JjYKLSAKLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgYWNfY29tcGlsZXJfZ251PXllcwotK2lmIHRlc3QgJGFjX2N2X3Byb2dfZ2NjID0geWVzOyB0aGVuCi0rICBHQ0M9eWVzCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tYWNfY29tcGlsZXJfZ251PW5vCi0rICBHQ0M9Ci0gZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1hY19jdl9jX2NvbXBpbGVyX2dudT0kYWNfY29tcGlsZXJfZ251Ci0gCi0tZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY2Ci0tR0NDPWB0ZXN0ICRhY19jb21waWxlcl9nbnUgPSB5ZXMgJiYgZWNobyB5ZXNgCi0tYWNfdGVzdF9DRkxBR1M9JHtDRkxBR1Mrc2V0fQotLWFjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLS1DRkxBR1M9Ii1nIgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWcuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX2NjX2crc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rYWNfdGVzdF9DRkxBR1M9IiR7Q0ZMQUdTK3NldH0iCi0rYWNfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rQ0ZMQUdTPQotK2VjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gYWNjZXB0cyAtZyIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjgzNzogY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1nIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19jY19nJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tCi0taW50Ci0tbWFpbiAoKQotLXsKLS0KLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotKyAgZWNobyAndm9pZCBmKCl7fScgPiBjb25mdGVzdC5jCi0raWYgdGVzdCAteiAiYCR7Q0MtY2N9IC1nIC1jIGNvbmZ0ZXN0LmMgMj4mMWAiOyB0aGVuCi0gICBhY19jdl9wcm9nX2NjX2c9eWVzCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBhY19jdl9wcm9nX2NjX2c9bm8KLStmaQotK3JtIC1mIGNvbmZ0ZXN0KgotIAotLWFjX2N2X3Byb2dfY2NfZz1ubwotIGZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19nIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfcHJvZ19jY19nIiA+JjYKLSsKLStlY2hvICIkYWNfdCIiJGFjX2N2X3Byb2dfY2NfZyIgMT4mNgotIGlmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgPSBzZXQ7IHRoZW4KLS0gIENGTEFHUz0kYWNfc2F2ZV9DRkxBR1MKLSsgIENGTEFHUz0iJGFjX3NhdmVfQ0ZMQUdTIgotIGVsaWYgdGVzdCAkYWNfY3ZfcHJvZ19jY19nID0geWVzOyB0aGVuCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBDRkxBR1M9Ii1nIC1PMiIKLUBAIC0yMDI4LDMwNCArODYzLDM3IEBACi0gICAgIENGTEFHUz0KLSAgIGZpCi0gZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IEFOU0kgQyIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgQU5TSSBDLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jY19zdGRjK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGFjX2N2X3Byb2dfY2Nfc3RkYz1ubwotLWFjX3NhdmVfQ0M9JENDCi0tY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tI2luY2x1ZGUgPHN0ZGFyZy5oPgotLSNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLS0vKiBNb3N0IG9mIHRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMvY29uZi5zaC4gICovCi0tc3RydWN0IGJ1ZiB7IGludCB4OyB9OwotLUZJTEUgKiAoKnJjc29wZW4pIChzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCk7Ci0tc3RhdGljIGNoYXIgKmUgKHAsIGkpCi0tICAgICBjaGFyICoqcDsKLS0gICAgIGludCBpOwotLXsKLS0gIHJldHVybiBwW2ldOwotLX0KLS1zdGF0aWMgY2hhciAqZiAoY2hhciAqICgqZykgKGNoYXIgKiosIGludCksIGNoYXIgKipwLCAuLi4pCi0tewotLSAgY2hhciAqczsKLS0gIHZhX2xpc3QgdjsKLS0gIHZhX3N0YXJ0ICh2LHApOwotLSAgcyA9IGcgKHAsIHZhX2FyZyAodixpbnQpKTsKLS0gIHZhX2VuZCAodik7Ci0tICByZXR1cm4gczsKLS19Ci0taW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7Ci0tc3RydWN0IHMxIHtpbnQgKCpmKSAoaW50IGEpO307Ci0tc3RydWN0IHMyIHtpbnQgKCpmKSAoZG91YmxlIGEpO307Ci0taW50IHBhaXJuYW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpLCBpbnQsIGludCk7Ci0taW50IGFyZ2M7Ci0tY2hhciAqKmFyZ3Y7Ci0taW50Ci0tbWFpbiAoKQotLXsKLS1yZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAgfHwgIGYgKGUsIGFyZ3YsIDEpICE9IGFyZ3ZbMV07Ci0tICA7Ci0tICByZXR1cm4gMDsKLS19Ci0tX0FDRU9GCi0tIyBEb24ndCB0cnkgZ2NjIC1hbnNpOyB0aGF0IHR1cm5zIG9mZiB1c2VmdWwgZXh0ZW5zaW9ucyBhbmQKLS0jIGJyZWFrcyBzb21lIHN5c3RlbXMnIGhlYWRlciBmaWxlcy4KLS0jIEFJWAkJCS1xbGFuZ2x2bD1hbnNpCi0tIyBVbHRyaXggYW5kIE9TRi8xCS1zdGQxCi0tIyBIUC1VWCAxMC4yMCBhbmQgbGF0ZXIJLUFlCi0tIyBIUC1VWCBvbGRlciB2ZXJzaW9ucwktQWEgLURfSFBVWF9TT1VSQ0UKLS0jIFNWUjQJCQktWGMgLURfX0VYVEVOU0lPTlNfXwotLWZvciBhY19hcmcgaW4gIiIgLXFsYW5nbHZsPWFuc2kgLXN0ZDEgLUFlICItQWEgLURfSFBVWF9TT1VSQ0UiICItWGMgLURfX0VYVEVOU0lPTlNfXyIKLS1kbwotLSAgQ0M9IiRhY19zYXZlX0NDICRhY19hcmciCi0tICBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgYWNfY3ZfcHJvZ19jY19zdGRjPSRhY19hcmcKLS1icmVhawotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotIAotLWZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotLWRvbmUKLS1ybSAtZiBjb25mdGVzdC4kYWNfZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1DQz0kYWNfc2F2ZV9DQwotLQotLWZpCi0tCi0tY2FzZSAieCRhY19jdl9wcm9nX2NjX3N0ZGMiIGluCi0tICB4fHhubykKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm9uZSBuZWVkZWQiID4mNQotLWVjaG8gIiR7RUNIT19UfW5vbmUgbmVlZGVkIiA+JjYgOzsKLS0gICopCi0tICAgIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX3N0ZGMiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9wcm9nX2NjX3N0ZGMiID4mNgotLSAgICBDQz0iJENDICRhY19jdl9wcm9nX2NjX3N0ZGMiIDs7Ci0tZXNhYwotLQotLSMgU29tZSBwZW9wbGUgdXNlIGEgQysrIGNvbXBpbGVyIHRvIGNvbXBpbGUgQy4gIFNpbmNlIHdlIHVzZSBgZXhpdCcsCi0tIyBpbiBDKysgd2UgbmVlZCB0byBkZWNsYXJlIGl0LiAgSW4gY2FzZSBzb21lb25lIHVzZXMgdGhlIHNhbWUgY29tcGlsZXIKLS0jIGZvciBib3RoIGNvbXBpbGluZyBDIGFuZCBDKysgd2UgbmVlZCB0byBoYXZlIHRoZSBDKysgY29tcGlsZXIgZGVjaWRlCi0tIyB0aGUgZGVjbGFyYXRpb24gb2YgZXhpdCwgc2luY2UgaXQncyB0aGUgbW9zdCBkZW1hbmRpbmcgZW52aXJvbm1lbnQuCi0tY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2lmbmRlZiBfX2NwbHVzcGx1cwotLSAgY2hva2UgbWUKLS0jZW5kaWYKLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgZm9yIGFjX2RlY2xhcmF0aW9uIGluIFwKLS0gICAnJ1wKLS0gICAnI2luY2x1ZGUgPHN0ZGxpYi5oPicgXAotLSAgICdleHRlcm4gIkMiIHZvaWQgc3RkOjpleGl0IChpbnQpIHRocm93ICgpOyB1c2luZyBzdGQ6OmV4aXQ7JyBcCi0tICAgJ2V4dGVybiAiQyIgdm9pZCBzdGQ6OmV4aXQgKGludCk7IHVzaW5nIHN0ZDo6ZXhpdDsnIFwKLS0gICAnZXh0ZXJuICJDIiB2b2lkIGV4aXQgKGludCkgdGhyb3cgKCk7JyBcCi0tICAgJ2V4dGVybiAiQyIgdm9pZCBleGl0IChpbnQpOycgXAotLSAgICd2b2lkIGV4aXQgKGludCk7JwotLWRvCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tJGFjX2RlY2xhcmF0aW9uCi0taW50Ci0tbWFpbiAoKQotLXsKLS1leGl0ICg0Mik7Ci0tICA7Ci0tICByZXR1cm4gMDsKLS19Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gIDoKLSsjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IHJhbmxpYjsgYWNfd29yZD0kMgotK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjg3MTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19SQU5MSUInK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1jb250aW51ZQotLWZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0kYWNfZGVjbGFyYXRpb24KLS1pbnQKLS1tYWluICgpCi0tewotLWV4aXQgKDQyKTsKLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgYnJlYWsKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1maQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotLWRvbmUKLS1ybSAtZiBjb25mdGVzdCoKLS1pZiB0ZXN0IC1uICIkYWNfZGVjbGFyYXRpb24iOyB0aGVuCi0tICBlY2hvICcjaWZkZWYgX19jcGx1c3BsdXMnID4+Y29uZmRlZnMuaAotLSAgZWNobyAkYWNfZGVjbGFyYXRpb24gICAgICA+PmNvbmZkZWZzLmgKLS0gIGVjaG8gJyNlbmRpZicgICAgICAgICAgICAgPj5jb25mZGVmcy5oCi0tZmkKLS0KLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1maQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotLWFjX2V4dD1jCi0tYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLS1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0tYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLS1hY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci0tCi0taWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cmFubGliOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX1JBTkxJQitzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0gICBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgotICAgYWNfY3ZfcHJvZ19SQU5MSUI9IiRSQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotIGVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX1JBTkxJQj0iJHthY190b29sX3ByZWZpeH1yYW5saWIiCi0tICAgIGVjaG8gIiRhc19tZTokTElORU5POiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLS0gICAgYnJlYWsgMgotLSAgZmkKLS1kb25lCi0tZG9uZQotLQotKyAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKLSsgIGFjX2R1bW15PSIkUEFUSCIKLSsgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotKyAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRoZW4KLSsgICAgICBhY19jdl9wcm9nX1JBTkxJQj0icmFubGliIgotKyAgICAgIGJyZWFrCi0rICAgIGZpCi0rICBkb25lCi0rICBJRlM9IiRhY19zYXZlX2lmcyIKLSsgIHRlc3QgLXogIiRhY19jdl9wcm9nX1JBTkxJQiIgJiYgYWNfY3ZfcHJvZ19SQU5MSUI9IjoiCi0gZmkKLSBmaQotLVJBTkxJQj0kYWNfY3ZfcHJvZ19SQU5MSUIKLStSQU5MSUI9IiRhY19jdl9wcm9nX1JBTkxJQiIKLSBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJFJBTkxJQiIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JFJBTkxJQiIgPiY2Ci0rICBlY2hvICIkYWNfdCIiJFJBTkxJQiIgMT4mNgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0rICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotIAotLWZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfUkFOTElCIjsgdGhlbgotLSAgYWNfY3RfUkFOTElCPSRSQU5MSUIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgcmFubGliOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X1JBTkxJQitzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBpZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbgotLSAgYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9IiRhY19jdF9SQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotLWVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0icmFubGliIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLS0KLS0gIHRlc3QgLXogIiRhY19jdl9wcm9nX2FjX2N0X1JBTkxJQiIgJiYgYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9IjoiCi0tZmkKLS1maQotLWFjX2N0X1JBTkxJQj0kYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIKLS1pZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N0X1JBTkxJQiIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N0X1JBTkxJQiIgPiY2Ci0tZWxzZQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQotLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLS1maQotLQotLSAgUkFOTElCPSRhY19jdF9SQU5MSUIKLS1lbHNlCi0tICBSQU5MSUI9IiRhY19jdl9wcm9nX1JBTkxJQiIKLS1maQotLQotICMgRmluZCBhIGdvb2QgaW5zdGFsbCBwcm9ncmFtLiAgV2UgcHJlZmVyIGEgQyBwcm9ncmFtIChmYXN0ZXIpLAotICMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcgotICMgaW5jb21wYXRpYmxlIHZlcnNpb25zOgotQEAgLTIzMzMsMzA2ICs5MDEsMTU4IEBACi0gIyBTdW5PUyAvdXNyL2V0Yy9pbnN0YWxsCi0gIyBJUklYIC9zYmluL2luc3RhbGwKLSAjIEFJWCAvYmluL2luc3RhbGwKLS0jIEFtaWdhT1MgL0MvaW5zdGFsbCwgd2hpY2ggaW5zdGFsbHMgYm9vdGJsb2NrcyBvbiBmbG9wcHkgZGlzY3MKLSAjIEFJWCA0IC91c3IvYmluL2luc3RhbGxic2QsIHdoaWNoIGRvZXNuJ3Qgd29yayB3aXRob3V0IGEgLWcgZmxhZwotICMgQUZTIC91c3IvYWZzd3MvYmluL2luc3RhbGwsIHdoaWNoIG1pc2hhbmRsZXMgbm9uZXhpc3RlbnQgYXJncwotICMgU1ZSNCAvdXNyL3VjYi9pbnN0YWxsLCB3aGljaCB0cmllcyB0byB1c2UgdGhlIG5vbmV4aXN0ZW50IGdyb3VwICJzdGFmZiIKLSAjIC4vaW5zdGFsbCwgd2hpY2ggY2FuIGJlIGVycm9uZW91c2x5IGNyZWF0ZWQgYnkgbWFrZSBmcm9tIC4vaW5zdGFsbC5zaC4KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsLi4uICRFQ0hPX0MiID4mNgotK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo5MTA6IGNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwiID4mNQotIGlmIHRlc3QgLXogIiRJTlNUQUxMIjsgdGhlbgotLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX2luc3RhbGwnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0tICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgIyBBY2NvdW50IGZvciBwZW9wbGUgd2hvIHB1dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEggZWxlbWVudHMuCi0tY2FzZSAkYXNfZGlyLyBpbgotLSAgLi8gfCAuLy8gfCAvY0MvKiB8IFwKLS0gIC9ldGMvKiB8IC91c3Ivc2Jpbi8qIHwgL3Vzci9ldGMvKiB8IC9zYmluLyogfCAvdXNyL2Fmc3dzL2Jpbi8qIHwgXAotLSAgL3Vzci91Y2IvKiApIDs7Ci0tICAqKQotLSAgICAjIE9TRjEgYW5kIFNDTyBPRFQgMy4wIGhhdmUgdGhlaXIgb3duIG5hbWVzIGZvciBpbnN0YWxsLgotLSAgICAjIERvbid0IHVzZSBpbnN0YWxsYnNkIGZyb20gT1NGIHNpbmNlIGl0IGluc3RhbGxzIHN0dWZmIGFzIHJvb3QKLS0gICAgIyBieSBkZWZhdWx0LgotLSAgICBmb3IgYWNfcHJvZyBpbiBnaW5zdGFsbCBzY29pbnN0IGluc3RhbGw7IGRvCi0tICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICAgICAgICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICAgICAgICBpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJgotLSAgICAgICAgICAgIGdyZXAgZHNwbXNnICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gICAgICAgICAgICAjIEFJWCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uCi0tICAgICAgICAgICAgOgotLSAgICAgICAgICBlbGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCi0tICAgICAgICAgICAgZ3JlcCBwd3BsdXMgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgICAgICAgICAgICMgcHJvZ3JhbS1zcGVjaWZpYyBpbnN0YWxsIHNjcmlwdCB1c2VkIGJ5IEhQIHB3cGx1cy0tZG9uJ3QgdXNlLgotLSAgICAgICAgICAgIDoKLS0gICAgICAgICAgZWxzZQotLSAgICAgICAgICAgIGFjX2N2X3BhdGhfaW5zdGFsbD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCAtYyIKLS0gICAgICAgICAgICBicmVhayAzCi0tICAgICAgICAgIGZpCi0tICAgICAgICBmaQotKyAgICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfSUZTPSIkSUZTIjsgSUZTPSI6IgotKyAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KLSsgICAgIyBBY2NvdW50IGZvciBwZW9wbGUgd2hvIHB1dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEggZWxlbWVudHMuCi0rICAgIGNhc2UgIiRhY19kaXIvIiBpbgotKyAgICAvfC4vfC4vL3wvZXRjLyp8L3Vzci9zYmluLyp8L3Vzci9ldGMvKnwvc2Jpbi8qfC91c3IvYWZzd3MvYmluLyp8L3Vzci91Y2IvKikgOzsKLSsgICAgKikKLSsgICAgICAjIE9TRjEgYW5kIFNDTyBPRFQgMy4wIGhhdmUgdGhlaXIgb3duIG5hbWVzIGZvciBpbnN0YWxsLgotKyAgICAgICMgRG9uJ3QgdXNlIGluc3RhbGxic2QgZnJvbSBPU0Ygc2luY2UgaXQgaW5zdGFsbHMgc3R1ZmYgYXMgcm9vdAotKyAgICAgICMgYnkgZGVmYXVsdC4KLSsgICAgICBmb3IgYWNfcHJvZyBpbiBnaW5zdGFsbCBzY29pbnN0IGluc3RhbGw7IGRvCi0rICAgICAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3Byb2c7IHRoZW4KLSsJICBpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJgotKyAgICAgICAgICAgIGdyZXAgZHNwbXNnICRhY19kaXIvJGFjX3Byb2cgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rCSAgICAjIEFJWCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uCi0rCSAgICA6Ci0rCSAgZWxzZQotKwkgICAgYWNfY3ZfcGF0aF9pbnN0YWxsPSIkYWNfZGlyLyRhY19wcm9nIC1jIgotKwkgICAgYnJlYWsgMgotKwkgIGZpCi0rCWZpCi0gICAgICAgZG9uZQotLSAgICBkb25lCi0tICAgIDs7Ci0tZXNhYwotLWRvbmUKLSsgICAgICA7OwotKyAgICBlc2FjCi0rICBkb25lCi0rICBJRlM9IiRhY19zYXZlX0lGUyIKLSAKLS0KLSBmaQotICAgaWYgdGVzdCAiJHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gICAgSU5TVEFMTD0kYWNfY3ZfcGF0aF9pbnN0YWxsCi0rICAgIElOU1RBTEw9IiRhY19jdl9wYXRoX2luc3RhbGwiCi0gICBlbHNlCi0gICAgICMgQXMgYSBsYXN0IHJlc29ydCwgdXNlIHRoZSBzbG93IHNoZWxsIHNjcmlwdC4gIFdlIGRvbid0IGNhY2hlIGEKLSAgICAgIyBwYXRoIGZvciBJTlNUQUxMIHdpdGhpbiBhIHNvdXJjZSBkaXJlY3RvcnksIGJlY2F1c2UgdGhhdCB3aWxsCi0gICAgICMgYnJlYWsgb3RoZXIgcGFja2FnZXMgdXNpbmcgdGhlIGNhY2hlIGlmIHRoYXQgZGlyZWN0b3J5IGlzCi0gICAgICMgcmVtb3ZlZCwgb3IgaWYgdGhlIHBhdGggaXMgcmVsYXRpdmUuCi0tICAgIElOU1RBTEw9JGFjX2luc3RhbGxfc2gKLSsgICAgSU5TVEFMTD0iJGFjX2luc3RhbGxfc2giCi0gICBmaQotIGZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJElOU1RBTEwiID4mNQotLWVjaG8gIiR7RUNIT19UfSRJTlNUQUxMIiA+JjYKLStlY2hvICIkYWNfdCIiJElOU1RBTEwiIDE+JjYKLSAKLSAjIFVzZSB0ZXN0IC16IGJlY2F1c2UgU3VuT1M0IHNoIG1pc2hhbmRsZXMgYnJhY2VzIGluICR7dmFyLXZhbH0uCi0gIyBJdCB0aGlua3MgdGhlIGZpcnN0IGNsb3NlIGJyYWNlIGVuZHMgdGhlIHZhcmlhYmxlIHN1YnN0aXR1dGlvbi4KLSB0ZXN0IC16ICIkSU5TVEFMTF9QUk9HUkFNIiAmJiBJTlNUQUxMX1BST0dSQU09JyR7SU5TVEFMTH0nCi0gCi0tdGVzdCAteiAiJElOU1RBTExfU0NSSVBUIiAmJiBJTlNUQUxMX1NDUklQVD0nJHtJTlNUQUxMfScKLSt0ZXN0IC16ICIkSU5TVEFMTF9TQ1JJUFQiICYmIElOU1RBTExfU0NSSVBUPScke0lOU1RBTExfUFJPR1JBTX0nCi0gCi0gdGVzdCAteiAiJElOU1RBTExfREFUQSIgJiYgSU5TVEFMTF9EQVRBPScke0lOU1RBTEx9IC1tIDY0NCcKLSAKLS1pZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK2lmIHRlc3QgJGhvc3QgIT0gJGJ1aWxkOyB0aGVuCi0rICBhY190b29sX3ByZWZpeD0ke2hvc3RfYWxpYXN9LQotK2Vsc2UKLSsgIGFjX3Rvb2xfcHJlZml4PQotK2ZpCi0rCi0rIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLSBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLStlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo5NzE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQVInK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBpZiB0ZXN0IC1uICIkQVIiOyB0aGVuCi0gICBhY19jdl9wcm9nX0FSPSIkQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotIGVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLS0KLSsgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IjoiCi0rICBhY19kdW1teT0iJFBBVEgiCi0rICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSsgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSsgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyRhY193b3JkOyB0aGVuCi0rICAgICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgICBicmVhawotKyAgICBmaQotKyAgZG9uZQotKyAgSUZTPSIkYWNfc2F2ZV9pZnMiCi0rICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiIgJiYgYWNfY3ZfcHJvZ19BUj0iYXIiCi0gZmkKLSBmaQotLUFSPSRhY19jdl9wcm9nX0FSCi0rQVI9IiRhY19jdl9wcm9nX0FSIgotIGlmIHRlc3QgLW4gIiRBUiI7IHRoZW4KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRBUiIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JEFSIiA+JjYKLSsgIGVjaG8gIiRhY190IiIkQVIiIDE+JjYKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLSAKLS1maQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotLSAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgotLSAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX2N0X0FSIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLS1lbHNlCi0tYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotLWZvciBhc19kaXIgaW4gJFBBVEgKLS1kbwotLSAgSUZTPSRhc19zYXZlX0lGUwotLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLS0gIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotLSAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0tICAgIGVjaG8gIiRhc19tZTokTElORU5POiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLS0gICAgYnJlYWsgMgotLSAgZmkKLS1kb25lCi0tZG9uZQotIAotLWZpCi0tZmkKLS1hY19jdF9BUj0kYWNfY3ZfcHJvZ19hY19jdF9BUgotLWlmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdF9BUiIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N0X0FSIiA+JjYKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotLWZpCi0gCi0tICBBUj0kYWNfY3RfQVIKLStlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6MTAwMTogY2hlY2tpbmcgd2hldGhlciBieXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbiIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2NfYmlnZW5kaWFuJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotLWZpCi0tCi0tCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHdoZXRoZXIgYnl0ZSBvcmRlcmluZyBpcyBiaWdlbmRpYW4iID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciBieXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbi4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2NfYmlnZW5kaWFuK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gICMgU2VlIGlmIHN5cy9wYXJhbS5oIGRlZmluZXMgdGhlIEJZVEVfT1JERVIgbWFjcm8uCi0tY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0rICBhY19jdl9jX2JpZ2VuZGlhbj11bmtub3duCi0rIyBTZWUgaWYgc3lzL3BhcmFtLmggZGVmaW5lcyB0aGUgQllURV9PUkRFUiBtYWNyby4KLStjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTAwOCAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0raW50IG1haW4oKSB7Ci0gCi0taW50Ci0tbWFpbiAoKQotLXsKLSAjaWYgIUJZVEVfT1JERVIgfHwgIUJJR19FTkRJQU4gfHwgIUxJVFRMRV9FTkRJQU4KLSAgYm9ndXMgZW5kaWFuIG1hY3JvcwotICNlbmRpZgotLQotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0rOyByZXR1cm4gMDsgfQotK0VPRgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTAxOTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgIyBJdCBkb2VzOyBub3cgc2VlIHdoZXRoZXIgaXQgZGVmaW5lZCB0byBCSUdfRU5ESUFOIG9yIG5vdC4KLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLStjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTAyMyAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0raW50IG1haW4oKSB7Ci0gCi0taW50Ci0tbWFpbiAoKQotLXsKLSAjaWYgQllURV9PUkRFUiAhPSBCSUdfRU5ESUFOCi0gIG5vdCBiaWcgZW5kaWFuCi0gI2VuZGlmCi0tCi0tICA7Ci0tICByZXR1cm4gMDsKLS19Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSs7IHJldHVybiAwOyB9Ci0rRU9GCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMDM0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0rICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9jX2JpZ2VuZGlhbj15ZXMKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1hY19jdl9jX2JpZ2VuZGlhbj1ubwotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgYWNfY3ZfY19iaWdlbmRpYW49bm8KLSBmaQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotK3JtIC1mIGNvbmZ0ZXN0KgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLSMgSXQgZG9lcyBub3Q7IGNvbXBpbGUgYSB0ZXN0IHByb2dyYW0uCi0taWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KLS0gICMgdHJ5IHRvIGd1ZXNzIHRoZSBlbmRpYW5uZXNzIGJ5IGdyZXBwaW5nIHZhbHVlcyBpbnRvIGFuIG9iamVjdCBmaWxlCi0tICBhY19jdl9jX2JpZ2VuZGlhbj11bmtub3duCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1zaG9ydCBhc2NpaV9tbVtdID0geyAweDQyNDksIDB4NDc2NSwgMHg2RTQ0LCAweDY5NjEsIDB4NkU1MywgMHg3OTUzLCAwIH07Ci0tc2hvcnQgYXNjaWlfaWlbXSA9IHsgMHg2OTRDLCAweDU0NTQsIDB4NjU2QywgMHg2RTQ1LCAweDY5NDQsIDB4NkU2MSwgMCB9OwotLXZvaWQgX2FzY2lpICgpIHsgY2hhciAqcyA9IChjaGFyICopIGFzY2lpX21tOyBzID0gKGNoYXIgKikgYXNjaWlfaWk7IH0KLS1zaG9ydCBlYmNkaWNfaWlbXSA9IHsgMHg4OUQzLCAweEUzRTMsIDB4ODU5MywgMHg5NUM1LCAweDg5QzQsIDB4OTU4MSwgMCB9OwotLXNob3J0IGViY2RpY19tbVtdID0geyAweEMyQzksIDB4Qzc4NSwgMHg5NUM0LCAweDg5ODEsIDB4OTVFMiwgMHhBOEUyLCAwIH07Ci0tdm9pZCBfZWJjZGljICgpIHsgY2hhciAqcyA9IChjaGFyICopIGViY2RpY19tbTsgcyA9IChjaGFyICopIGViY2RpY19paTsgfQotLWludAotLW1haW4gKCkKLS17Ci0tIF9hc2NpaSAoKTsgX2ViY2RpYyAoKTsKLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgaWYgZ3JlcCBCSUdlbkRpYW5TeVMgY29uZnRlc3QuJGFjX29iamV4dCA+L2Rldi9udWxsIDsgdGhlbgotLSAgYWNfY3ZfY19iaWdlbmRpYW49eWVzCi0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0gZmkKLS1pZiBncmVwIExpVFRsZUVuRGlhbiBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGwgOyB0aGVuCi0tICBpZiB0ZXN0ICIkYWNfY3ZfY19iaWdlbmRpYW4iID0gdW5rbm93bjsgdGhlbgotLSAgICBhY19jdl9jX2JpZ2VuZGlhbj1ubwotLSAgZWxzZQotLSAgICAjIGZpbmRpbmcgYm90aCBzdHJpbmdzIGlzIHVubGlrZWx5IHRvIGhhcHBlbiwgYnV0IHdobyBrbm93cz8KLS0gICAgYWNfY3ZfY19iaWdlbmRpYW49dW5rbm93bgotLSAgZmkKLS1maQotK3JtIC1mIGNvbmZ0ZXN0KgotK2lmIHRlc3QgJGFjX2N2X2NfYmlnZW5kaWFuID0gdW5rbm93bjsgdGhlbgotK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCi0rICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBydW4gdGVzdCBwcm9ncmFtIHdoaWxlIGNyb3NzIGNvbXBpbGluZyIgMT4mMjsgZXhpdCAxOyB9Ci0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1lbHNlCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQKLS1tYWluICgpCi0tewotKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotKyNsaW5lIDEwNTQgImNvbmZpZ3VyZSIKLSsjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSttYWluICgpIHsKLSAgIC8qIEFyZSB3ZSBsaXR0bGUgb3IgYmlnIGVuZGlhbj8gIEZyb20gSGFyYmlzb24mU3RlZWxlLiAgKi8KLSAgIHVuaW9uCi0gICB7Ci1AQCAtMjY0Miw1MiArMTA2MiwzMSBAQAotICAgdS5sID0gMTsKLSAgIGV4aXQgKHUuY1tzaXplb2YgKGxvbmcpIC0gMV0gPT0gMSk7Ci0gfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQotLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLStFT0YKLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNjc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKLSt0aGVuCi0gICBhY19jdl9jX2JpZ2VuZGlhbj1ubwotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0dXMgJGFjX3N0YXR1cyIgPiY1Ci0tZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tKCBleGl0ICRhY19zdGF0dXMgKQotLWFjX2N2X2NfYmlnZW5kaWFuPXllcwotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLWZyIGNvbmZ0ZXN0KgotKyAgYWNfY3ZfY19iaWdlbmRpYW49eWVzCi0gZmkKLS1ybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLStybSAtZnIgY29uZnRlc3QqCi0gZmkKLSsKLSBmaQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIGZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2NfYmlnZW5kaWFuIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfY19iaWdlbmRpYW4iID4mNgotLWNhc2UgJGFjX2N2X2NfYmlnZW5kaWFuIGluCi0tICB5ZXMpCi0gCi0tY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKLStlY2hvICIkYWNfdCIiJGFjX2N2X2NfYmlnZW5kaWFuIiAxPiY2Ci0raWYgdGVzdCAkYWNfY3ZfY19iaWdlbmRpYW4gPSB5ZXM7IHRoZW4KLSsgIGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgotICNkZWZpbmUgV09SRFNfQklHRU5ESUFOIDEKLS1fQUNFT0YKLS0gOzsKLS0gIG5vKQotLSAgICAgOzsKLS0gICopCi0tICAgIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IHVua25vd24gZW5kaWFubmVzcwotLXByZXNldHRpbmcgYWNfY3ZfY19iaWdlbmRpYW49bm8gKG9yIHllcykgd2lsbCBoZWxwIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiB1bmtub3duIGVuZGlhbm5lc3MKLS1wcmVzZXR0aW5nIGFjX2N2X2NfYmlnZW5kaWFuPW5vIChvciB5ZXMpIHdpbGwgaGVscCIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0gOzsKLS1lc2FjCi0rRU9GCi0gCi0rZmkKLSAKLSsKLSBpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KLSAJQ0ZMQUdTPSIkQ0ZMQUdTIC1XYWxsIgotIGZpCi1AQCAtMjY5NywxNCArMTA5NiwxMyBAQAotICAgY2FzZSAiJHtlbmFibGV2YWx9IiBpbgotICAgICAgICAgICAgICAgICAgeWVzKSBzaGFyZWQ9dHJ1ZSA7OwotICAgICAgICAgICAgICAgICAgbm8pIHNoYXJlZD1mYWxzZSA7OwotLSAgICAgICAgICAgICAgICAgKikgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3Igc2hhcmVkIG9wdGlvbnMiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIHNoYXJlZCBvcHRpb25zIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfSA7OwotKyAgICAgICAgICAgICAgICAgKikgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciBzaGFyZWQgb3B0aW9ucyIgMT4mMjsgZXhpdCAxOyB9IDs7Ci0gICAgICAgICAgICAgICAgICBlc2FjCi0gZWxzZQotICAgc2hhcmVkPWZhbHNlCi0tZmk7Ci0rZmkKLSAKLSsKLSBjYXNlICIkdGFyZ2V0X2NwdSIgaW4KLSAgICAgIGkzODZ8aTQ4NnxpNTg2fGk2ODYpCi0gCVRBUkdFVF9DUFU9aTM4NgotQEAgLTI3MTIsNyArMTExMCw3IEBACi0gICAgICAqKQotICAgICAgICAgVEFSR0VUX0NQVT0kdGFyZ2V0X2NwdQotICAgICAgOzsKLS1lc2FjCi0rZXNhYyAgICAgCi0gVEFSR0VUX09TPSR0YXJnZXRfb3MKLSAKLSBNNjhLQ0M9Ci1AQCAtMjcyNiw3ICsxMTI0LDcgQEAKLSAJCU02OEtDQz0vdXNyL202OGstcGFsbW9zL2Jpbi9nY2MKLSAJCSMgR2VuZXJpYyBidWlsZCBpcyBBUk0gb3IgTTY4SyAocHJvYmFibHkgQVJNIHRob3VnaCkKLSAgICAgICAgICAgICAgICAgQ0M9Ii91c3IvJFRBUkdFVF9DUFUtcGFsbW9zL2Jpbi9nY2MiCi0tCQlpZiB0ZXN0ICIkdGFyZ2V0X2NwdSIgPSAiYXJtIgotKwkJaWYgdGVzdCAiJHRhcmdldF9jcHUiID0gImFybSIgCi0gICAgICAgICAgICAgICAgIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgQ0M9IiRDQyAtZlBJQyAtbWFyY2g9YXJtdjR0IgotICAgICAgICAgICAgICAgICBmaQotQEAgLTI3NjIsNyArMTE2MCw3IEBACi0gICAgICAqKQotICAgICAgICAgSE9TVF9DUFU9JGhvc3RfY3B1Ci0gICAgICA7OwotLWVzYWMKLStlc2FjICAgICAKLSBIT1NUX09TPSRob3N0X29zCi0gCi0gCi1AQCAtMjgwMCwxMzggKzExOTgsOTEgQEAKLSAgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KLSAgICAgICAgICAgICAgICAgIHllcykgc29ja2V0cz10cnVlIDs7Ci0gICAgICAgICAgICAgICAgICBubykgc29ja2V0cz1mYWxzZSA7OwotLSAgICAgICAgICAgICAgICAgKikgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3Igc29ja2V0cyBvcHRpb25zIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciBzb2NrZXRzIG9wdGlvbnMiID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9IDs7Ci0rICAgICAgICAgICAgICAgICAqKSB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIHNvY2tldHMgb3B0aW9ucyIgMT4mMjsgZXhpdCAxOyB9IDs7Ci0gICAgICAgICAgICAgICAgICBlc2FjCi0gZWxzZQotICAgc29ja2V0cz10cnVlCi0tZmk7Ci0rZmkKLSsKLSBpZiB0ZXN0ICIkc29ja2V0cyIgPSBmYWxzZTsgdGhlbgotLSAgIGNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCi0rICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCi0gI2RlZmluZSBDU1RfTk9fU09DS0VUUyAxCi0tX0FDRU9GCi0rRU9GCi0gCi0gZmkKLSAKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLStjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTIxNiAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzdGRpby5oPgotLWludAotLW1haW4gKCkKLS17Ci0raW50IG1haW4oKSB7Ci0gIHN0cnVjdCBhIHsgdW5pb24geyBmbG9hdCBiOyBpbnQgYzsgfSBkOyB9OwotLSAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGEgZSA9IHsgLmQ9eyAuYj0zLjE0IH0gfTsKLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotKyAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGEgZSA9IHsgLmQ9eyAuYj0zLjE0IH0gfTsgCi0rOyByZXR1cm4gMDsgfQotK0VPRgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTIyNDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgdW5pb25pbml0PXllcwotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLXVuaW9uaW5pdD1ubwotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgdW5pb25pbml0PW5vCi0gZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLStybSAtZiBjb25mdGVzdCoKLSBpZiB0ZXN0ICIkdW5pb25pbml0IiA9IG5vOyB0aGVuCi0tICAgY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKLSsgICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKLSAjZGVmaW5lIE5PX1VOSU9OX0lOSVRJQUxJWkFUSU9OIDEKLS1fQUNFT0YKLStFT0YKLSAKLSBmaQotIAotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgbW1hcCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbW1hcC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2Z1bmNfbW1hcCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLStlY2hvICRhY19uICJjaGVja2luZyBmb3IgbW1hcCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjEyNDI6IGNoZWNraW5nIGZvciBtbWFwIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY19tbWFwJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTI0NyAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKLS0gICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBtbWFwICgpOyBiZWxvdy4KLS0gICAgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQotLSAgICA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuICAqLwotLSNpZmRlZiBfX1NURENfXwotLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0tI2Vsc2UKLS0jIGluY2x1ZGUgPGFzc2VydC5oPgotLSNlbmRpZgotKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIG1tYXAoKTsgYmVsb3cuICAqLwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwotLSNpZmRlZiBfX2NwbHVzcGx1cwotLWV4dGVybiAiQyIKLS17Ci0tI2VuZGlmCi0gLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgotLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi0tY2hhciBtbWFwICgpOwotKyAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotK2NoYXIgbW1hcCgpOwotKwotK2ludCBtYWluKCkgewotKwotIC8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKLSAgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKLSAgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCi0gI2lmIGRlZmluZWQgKF9fc3R1Yl9tbWFwKSB8fCBkZWZpbmVkIChfX3N0dWJfX19tbWFwKQotIGNob2tlIG1lCi0gI2Vsc2UKLS1jaGFyICgqZikgKCkgPSBtbWFwOwotK21tYXAoKTsKLSAjZW5kaWYKLS0jaWZkZWYgX19jcGx1c3BsdXMKLS19Ci0tI2VuZGlmCi0gCi0taW50Ci0tbWFpbiAoKQotLXsKLS1yZXR1cm4gZiAhPSBtbWFwOwotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1Ci0tICAoZXZhbCAkYWNfbGluaykgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19jdl9mdW5jX21tYXA9eWVzCi0rOyByZXR1cm4gMDsgfQotK0VPRgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTI3MDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9mdW5jX21tYXA9eWVzIgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWFjX2N2X2Z1bmNfbW1hcD1ubwotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgZXZhbCAiYWNfY3ZfZnVuY19tbWFwPW5vIgotIGZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotK3JtIC1mIGNvbmZ0ZXN0KgotIGZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2Z1bmNfbW1hcCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2Z1bmNfbW1hcCIgPiY2Ci0taWYgdGVzdCAkYWNfY3ZfZnVuY19tbWFwID0geWVzOyB0aGVuCi0rCi0raWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3ZfZnVuY18nbW1hcGBcIiA9IHllcyI7IHRoZW4KLSsgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKLSAgIE1NQVBUWVBFPXBvc2l4Ci0rZWxzZQotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLSAKLSAKLUBAIC0yOTU2LDEwMjggKzEzMDcsMjY2IEBACi0gCi0gCi0gQVVESU9EUklWRVI9bm9uZQotLWFjX2V4dD1jCi0tYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLS1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0tYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLS1hY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yLi4uICRFQ0hPX0MiID4mNgotK2VjaG8gJGFjX24gImNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6MTMxMjogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IiID4mNQotICMgT24gU3Vucywgc29tZXRpbWVzICRDUFAgbmFtZXMgYSBkaXJlY3RvcnkuCi0gaWYgdGVzdCAtbiAiJENQUCIgJiYgdGVzdCAtZCAiJENQUCI7IHRoZW4KLSAgIENQUD0KLSBmaQotIGlmIHRlc3QgLXogIiRDUFAiOyB0aGVuCi0tICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ1BQK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NQUCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gICAgICAjIERvdWJsZSBxdW90ZXMgYmVjYXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhwYW5kZWQKLS0gICAgZm9yIENQUCBpbiAiJENDIC1FIiAiJENDIC1FIC10cmFkaXRpb25hbC1jcHAiICIvbGliL2NwcCIKLS0gICAgZG8KLS0gICAgICBhY19wcmVwcm9jX29rPWZhbHNlCi0tZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCi0tZG8KLS0gICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKLS0gICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgotLSAgIyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCi0tICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KLSsgICAgIyBUaGlzIG11c3QgYmUgaW4gZG91YmxlIHF1b3Rlcywgbm90IHNpbmdsZSBxdW90ZXMsIGJlY2F1c2UgQ1BQIG1heSBnZXQKLSsgICMgc3Vic3RpdHV0ZWQgaW50byB0aGUgTWFrZWZpbGUgYW5kICIke0NDLWNjfSIgd2lsbCBjb25mdXNlIG1ha2UuCi0rICBDUFA9IiR7Q0MtY2N9IC1FIgotICAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKLS0gICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tI2lmZGVmIF9fU1REQ19fCi0tIyBpbmNsdWRlIDxsaW1pdHMuaD4KLS0jZWxzZQotLSMgaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2VuZGlmCi0tICAgICAgICAgICAgICAgICAgICAgU3ludGF4IGVycm9yCi0tX0FDRU9GCi0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0tICBjYXQgY29uZnRlc3QuZXJyID4mNQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotLSAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KLS0gICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwotLSAgZWxzZQotLSAgICBhY19jcHBfZXJyPQotLSAgZmkKLS1lbHNlCi0tICBhY19jcHBfZXJyPXllcwotLWZpCi0taWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0rICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLgotKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotKyNsaW5lIDEzMjcgImNvbmZpZ3VyZSIKLSsjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rU3ludGF4IEVycm9yCi0rRU9GCi0rYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLSt7IChldmFsIGVjaG8gY29uZmlndXJlOjEzMzM6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Ci0rYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAotK2lmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCi0gICA6Ci0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCi0tY29udGludWUKLS1maQotLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci0tCi0tICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uLWV4aXN0ZW50IGhlYWRlcnMKLS0gICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KLS1fQUNFT0YKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCi0tICBhY19zdGF0dXM9JD8KLS0gIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0tICBybSAtZiBjb25mdGVzdC5lcjEKLS0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCi0tICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotLSAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCi0tICBlbHNlCi0tICAgIGFjX2NwcF9lcnI9Ci0tICBmaQotLWVsc2UKLS0gIGFjX2NwcF9lcnI9eWVzCi0tZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KLS0gICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCi0tY29udGludWUKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS0gICMgUGFzc2VzIGJvdGggdGVzdHMuCi0tYWNfcHJlcHJvY19vaz06Ci0tYnJlYWsKLS1maQotLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci0tCi0tZG9uZQotLSMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgotLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci0taWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4KLS0gIGJyZWFrCi0tZmkKLS0KLS0gICAgZG9uZQotLSAgICBhY19jdl9wcm9nX0NQUD0kQ1BQCi0tCi0tZmkKLS0gIENQUD0kYWNfY3ZfcHJvZ19DUFAKLS1lbHNlCi0tICBhY19jdl9wcm9nX0NQUD0kQ1BQCi0tZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkQ1BQIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kQ1BQIiA+JjYKLS1hY19wcmVwcm9jX29rPWZhbHNlCi0tZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCi0tZG8KLS0gICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKLS0gICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgotLSAgIyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCi0tICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KLS0gICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCi0tICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpZmRlZiBfX1NURENfXwotLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0tI2Vsc2UKLS0jIGluY2x1ZGUgPGFzc2VydC5oPgotLSNlbmRpZgotLSAgICAgICAgICAgICAgICAgICAgIFN5bnRheCBlcnJvcgotLV9BQ0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLS0gIGVsc2UKLS0gICAgYWNfY3BwX2Vycj0KLS0gIGZpCi0tZWxzZQotLSAgYWNfY3BwX2Vycj15ZXMKLS1maQotLWlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgotKyAgZWNobyAiJGFjX2VyciIgPiY1Ci0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBDUFA9IiR7Q0MtY2N9IC1FIC10cmFkaXRpb25hbC1jcHAiCi0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTM0NCAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLStTeW50YXggRXJyb3IKLStFT0YKLSthY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgotK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MTM1MDogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KLSthY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCi0raWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KLSAgIDoKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS0gICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KLS1jb250aW51ZQotLWZpCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS0KLS0gICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub24tZXhpc3RlbnQgaGVhZGVycwotLSAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgotLV9BQ0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLS0gIGVsc2UKLS0gICAgYWNfY3BwX2Vycj0KLS0gIGZpCi0tZWxzZQotLSAgYWNfY3BwX2Vycj15ZXMKLS1maQotLWlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgotLSAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KLS1jb250aW51ZQotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLSAgIyBQYXNzZXMgYm90aCB0ZXN0cy4KLS1hY19wcmVwcm9jX29rPToKLS1icmVhawotLWZpCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS0KLS1kb25lCi0tIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS1pZiAkYWNfcHJlcHJvY19vazsgdGhlbgotKyAgZWNobyAiJGFjX2VyciIgPiY1Ci0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBDUFA9IiR7Q0MtY2N9IC1ub2xvZ28gLUUiCi0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTM2MSAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLStTeW50YXggRXJyb3IKLStFT0YKLSthY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgotK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MTM2NzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KLSthY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCi0raWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KLSAgIDoKLSBlbHNlCi0tICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2sKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrCi0tU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0rICBlY2hvICIkYWNfZXJyIiA+JjUKLSsgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0rICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSsgIHJtIC1yZiBjb25mdGVzdCoKLSsgIENQUD0vbGliL2NwcAotIGZpCi0tCi0tYWNfZXh0PWMKLS1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotLWFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLS1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLS0KLS0KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIGVncmVwIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBlZ3JlcC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfZWdyZXArc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgaWYgZWNobyBhIHwgKGdyZXAgLUUgJyhhfGIpJykgPi9kZXYvbnVsbCAyPiYxCi0tICAgIHRoZW4gYWNfY3ZfcHJvZ19lZ3JlcD0nZ3JlcCAtRScKLS0gICAgZWxzZSBhY19jdl9wcm9nX2VncmVwPSdlZ3JlcCcKLS0gICAgZmkKLStybSAtZiBjb25mdGVzdCoKLSBmaQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9wcm9nX2VncmVwIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfcHJvZ19lZ3JlcCIgPiY2Ci0tIEVHUkVQPSRhY19jdl9wcm9nX2VncmVwCi0tCi0tCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N0ZGMrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxzdGRhcmcuaD4KLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGZsb2F0Lmg+Ci0tCi0taW50Ci0tbWFpbiAoKQotLXsKLS0KLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgYWNfY3ZfaGVhZGVyX3N0ZGM9eWVzCi0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KLS1maQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotLQotLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0tICAjIFN1bk9TIDQueCBzdHJpbmcuaCBkb2VzIG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFOU0kuCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0tCi0tX0FDRU9GCi0taWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJtZW1jaHIiID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgOgotLWVsc2UKLS0gIGFjX2N2X2hlYWRlcl9zdGRjPW5vCi0tZmkKLSBybSAtZiBjb25mdGVzdCoKLS0KLSBmaQotLQotLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0tICAjIElTQyAyLjAuMiBzdGRsaWIuaCBkb2VzIG5vdCBkZWNsYXJlIGZyZWUsIGNvbnRyYXJ5IHRvIEFOU0kuCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tCi0tX0FDRU9GCi0taWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJmcmVlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIDoKLS1lbHNlCi0tICBhY19jdl9oZWFkZXJfc3RkYz1ubwotLWZpCi0gcm0gLWYgY29uZnRlc3QqCi0tCi0rICBhY19jdl9wcm9nX0NQUD0iJENQUCIKLSBmaQotLQotLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0tICAjIC9iaW4vY2MgaW4gSXJpeC00LjAuNSBnZXRzIG5vbi1BTlNJIGN0eXBlIG1hY3JvcyB1bmxlc3MgdXNpbmcgLWFuc2kuCi0tICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgotLSAgOgotKyAgQ1BQPSIkYWNfY3ZfcHJvZ19DUFAiCi0gZWxzZQotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tI2luY2x1ZGUgPGN0eXBlLmg+Ci0tI2lmICgoJyAnICYgMHgwRkYpID09IDB4MDIwKQotLSMgZGVmaW5lIElTTE9XRVIoYykgKCdhJyA8PSAoYykgJiYgKGMpIDw9ICd6JykKLS0jIGRlZmluZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gJ0EnICsgKChjKSAtICdhJykgOiAoYykpCi0tI2Vsc2UKLS0jIGRlZmluZSBJU0xPV0VSKGMpIFwKLS0gICAgICAgICAgICAgICAgICAgKCgnYScgPD0gKGMpICYmIChjKSA8PSAnaScpIFwKLS0gICAgICAgICAgICAgICAgICAgICB8fCAoJ2onIDw9IChjKSAmJiAoYykgPD0gJ3InKSBcCi0tICAgICAgICAgICAgICAgICAgICAgfHwgKCdzJyA8PSAoYykgJiYgKGMpIDw9ICd6JykpCi0tIyBkZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ICgoYykgfCAweDQwKSA6IChjKSkKLS0jZW5kaWYKLS0KLS0jZGVmaW5lIFhPUihlLCBmKSAoKChlKSAmJiAhKGYpKSB8fCAoIShlKSAmJiAoZikpKQotLWludAotLW1haW4gKCkKLS17Ci0tICBpbnQgaTsKLS0gIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKLS0gICAgaWYgKFhPUiAoaXNsb3dlciAoaSksIElTTE9XRVIgKGkpKQotLSAgICAgICAgfHwgdG91cHBlciAoaSkgIT0gVE9VUFBFUiAoaSkpCi0tICAgICAgZXhpdCgyKTsKLS0gIGV4aXQgKDApOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdCRhY19leGVleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+JjUKLS0gIChldmFsICRhY19saW5rKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICA6Ci0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKLS1lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS0oIGV4aXQgJGFjX3N0YXR1cyApCi0tYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KLSsgIGFjX2N2X3Byb2dfQ1BQPSIkQ1BQIgotIGZpCi0tcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tZmkKLS1maQotLWZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zdGRjIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNgotLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0rZWNobyAiJGFjX3QiIiRDUFAiIDE+JjYKLSAKLS1jYXQgPj5jb25mZGVmcy5oIDw8XF9BQ0VPRgotLSNkZWZpbmUgU1REQ19IRUFERVJTIDEKLS1fQUNFT0YKLS0KLS1maQotLQotLSMgT24gSVJJWCA1LjMsIHN5cy90eXBlcyBhbmQgaW50dHlwZXMuaCBhcmUgY29uZmxpY3RpbmcuCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tZm9yIGFjX2hlYWRlciBpbiBzeXMvdHlwZXMuaCBzeXMvc3RhdC5oIHN0ZGxpYi5oIHN0cmluZy5oIG1lbW9yeS5oIHN0cmluZ3MuaCBcCi0tICAgICAgICAgICAgICAgICAgaW50dHlwZXMuaCBzdGRpbnQuaCB1bmlzdGQuaAotLWRvCi0tYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVyLi4uICRFQ0hPX0MiID4mNgotLWlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rYWNfc2FmZT1gZWNobyAic3lzL3NvdW5kY2FyZC5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLStlY2hvICRhY19uICJjaGVja2luZyBmb3Igc3lzL3NvdW5kY2FyZC5oIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6MTM5MzogY2hlY2tpbmcgZm9yIHN5cy9zb3VuZGNhcmQuaCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0tCi0tI2luY2x1ZGUgPCRhY19oZWFkZXI+Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gIGV2YWwgIiRhc19hY19IZWFkZXI9eWVzIgotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWV2YWwgIiRhc19hY19IZWFkZXI9bm8iCi0tZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKLS1lY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2Ci0taWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCA9IHllczsgdGhlbgotLSAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotLSNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCi0tX0FDRU9GCi0tCi0tZmkKLS0KLS1kb25lCi0tCi0tCi0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3lzX3NvdW5kY2FyZF9oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHN5cy9zb3VuZGNhcmQuaCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc3lzL3NvdW5kY2FyZC5oLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N5c19zb3VuZGNhcmRfaCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3lzX3NvdW5kY2FyZF9oIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N5c19zb3VuZGNhcmRfaCIgPiY2Ci0tZWxzZQotLSAgIyBJcyB0aGUgaGVhZGVyIGNvbXBpbGFibGU/Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHN5cy9zb3VuZGNhcmQuaCB1c2FiaWxpdHkiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgc3lzL3NvdW5kY2FyZC5oIHVzYWJpbGl0eS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0kYWNfaW5jbHVkZXNfZGVmYXVsdAotKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotKyNsaW5lIDEzOTggImNvbmZpZ3VyZSIKLSsjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8c3lzL3NvdW5kY2FyZC5oPgotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCi0rRU9GCi0rYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLSt7IChldmFsIGVjaG8gY29uZmlndXJlOjE0MDM6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Ci0rYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAotK2lmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCi0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWFjX2hlYWRlcl9jb21waWxlcj1ubwotKyAgZWNobyAiJGFjX2VyciIgPiY1Ci0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9bm8iCi0gZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjYKLS0KLS0jIElzIHRoZSBoZWFkZXIgcHJlc2VudD8KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgc3lzL3NvdW5kY2FyZC5oIHByZXNlbmNlIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIHN5cy9zb3VuZGNhcmQuaCBwcmVzZW5jZS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8c3lzL3NvdW5kY2FyZC5oPgotLV9BQ0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLS0gIGVsc2UKLS0gICAgYWNfY3BwX2Vycj0KLS0gIGZpCi0tZWxzZQotLSAgYWNfY3BwX2Vycj15ZXMKLStybSAtZiBjb25mdGVzdCoKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgotLSAgYWNfaGVhZGVyX3ByZXByb2M9eWVzCi0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tICBhY19oZWFkZXJfcHJlcHJvYz1ubwotLWZpCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX3ByZXByb2MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJfcHJlcHJvYyIgPiY2Ci0tCi0tIyBTbz8gIFdoYXQgYWJvdXQgdGhpcyBoZWFkZXI/Ci0tY2FzZSAkYWNfaGVhZGVyX2NvbXBpbGVyOiRhY19oZWFkZXJfcHJlcHJvYyBpbgotLSAgeWVzOm5vICkKLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL3NvdW5kY2FyZC5oOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy9zb3VuZGNhcmQuaDogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL3NvdW5kY2FyZC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBzeXMvc291bmRjYXJkLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQotLSAgICAoCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICApIHwKLS0gICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKLS0gICAgOzsKLS0gIG5vOnllcyApCi0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IHN5cy9zb3VuZGNhcmQuaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy9zb3VuZGNhcmQuaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBzeXMvc291bmRjYXJkLmg6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBzeXMvc291bmRjYXJkLmg6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL3NvdW5kY2FyZC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBzeXMvc291bmRjYXJkLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQotLSAgICAoCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICApIHwKLS0gICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKLS0gICAgOzsKLS1lc2FjCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBzeXMvc291bmRjYXJkLmgiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHN5cy9zb3VuZGNhcmQuaC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9zeXNfc291bmRjYXJkX2grc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgYWNfY3ZfaGVhZGVyX3N5c19zb3VuZGNhcmRfaD0kYWNfaGVhZGVyX3ByZXByb2MKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3lzX3NvdW5kY2FyZF9oIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N5c19zb3VuZGNhcmRfaCIgPiY2Ci0tCi0tZmkKLS1pZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3lzX3NvdW5kY2FyZF9oID0geWVzOyB0aGVuCi0raWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3ZfaGVhZGVyXyckYWNfc2FmZWBcIiA9IHllcyI7IHRoZW4KLSsgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKLSAgIEFVRElPRFJJVkVSPSJvc3MiCi0gICAgICAgICAgICAgICAgQVVESU9ERUZTPS1EQ1NUX0FVRElPX0xJTlVYCi0rZWxzZQotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLSAKLS0KLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9tYWNoaW5lX3NvdW5kY2FyZF9oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIG1hY2hpbmUvc291bmRjYXJkLmgiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG1hY2hpbmUvc291bmRjYXJkLmguLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfbWFjaGluZV9zb3VuZGNhcmRfaCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfbWFjaGluZV9zb3VuZGNhcmRfaCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9tYWNoaW5lX3NvdW5kY2FyZF9oIiA+JjYKLSthY19zYWZlPWBlY2hvICJtYWNoaW5lL3NvdW5kY2FyZC5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLStlY2hvICRhY19uICJjaGVja2luZyBmb3IgbWFjaGluZS9zb3VuZGNhcmQuaCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjE0Mjc6IGNoZWNraW5nIGZvciBtYWNoaW5lL3NvdW5kY2FyZC5oIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgIyBJcyB0aGUgaGVhZGVyIGNvbXBpbGFibGU/Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIG1hY2hpbmUvc291bmRjYXJkLmggdXNhYmlsaXR5IiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIG1hY2hpbmUvc291bmRjYXJkLmggdXNhYmlsaXR5Li4uICRFQ0hPX0MiID4mNgotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTQzMiAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxtYWNoaW5lL3NvdW5kY2FyZC5oPgotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCi0rRU9GCi0rYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLSt7IChldmFsIGVjaG8gY29uZmlndXJlOjE0Mzc6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Ci0rYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAotK2lmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCi0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWFjX2hlYWRlcl9jb21waWxlcj1ubwotKyAgZWNobyAiJGFjX2VyciIgPiY1Ci0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9bm8iCi0gZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjYKLS0KLS0jIElzIHRoZSBoZWFkZXIgcHJlc2VudD8KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgbWFjaGluZS9zb3VuZGNhcmQuaCBwcmVzZW5jZSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBtYWNoaW5lL3NvdW5kY2FyZC5oIHByZXNlbmNlLi4uICRFQ0hPX0MiID4mNgotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxtYWNoaW5lL3NvdW5kY2FyZC5oPgotLV9BQ0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLS0gIGVsc2UKLS0gICAgYWNfY3BwX2Vycj0KLS0gIGZpCi0tZWxzZQotLSAgYWNfY3BwX2Vycj15ZXMKLStybSAtZiBjb25mdGVzdCoKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgotLSAgYWNfaGVhZGVyX3ByZXByb2M9eWVzCi0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tICBhY19oZWFkZXJfcHJlcHJvYz1ubwotLWZpCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX3ByZXByb2MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJfcHJlcHJvYyIgPiY2Ci0tCi0tIyBTbz8gIFdoYXQgYWJvdXQgdGhpcyBoZWFkZXI/Ci0tY2FzZSAkYWNfaGVhZGVyX2NvbXBpbGVyOiRhY19oZWFkZXJfcHJlcHJvYyBpbgotLSAgeWVzOm5vICkKLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogbWFjaGluZS9zb3VuZGNhcmQuaDogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiYyO30KLS0gICAgKAotLSAgICAgIGNhdCA8PFxfQVNCT1gKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBSZXBvcnQgdGhpcyB0byBidWctYXV0b2NvbmZAZ251Lm9yZy4gIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS1fQVNCT1gKLS0gICAgKSB8Ci0tICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCi0tICAgIDs7Ci0tICBubzp5ZXMgKQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogbWFjaGluZS9zb3VuZGNhcmQuaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogbWFjaGluZS9zb3VuZGNhcmQuaDogY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiYyO30KLS0gICAgKAotLSAgICAgIGNhdCA8PFxfQVNCT1gKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBSZXBvcnQgdGhpcyB0byBidWctYXV0b2NvbmZAZ251Lm9yZy4gIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS1fQVNCT1gKLS0gICAgKSB8Ci0tICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCi0tICAgIDs7Ci0tZXNhYwotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgbWFjaGluZS9zb3VuZGNhcmQuaCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbWFjaGluZS9zb3VuZGNhcmQuaC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9tYWNoaW5lX3NvdW5kY2FyZF9oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGFjX2N2X2hlYWRlcl9tYWNoaW5lX3NvdW5kY2FyZF9oPSRhY19oZWFkZXJfcHJlcHJvYwotLWZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9tYWNoaW5lX3NvdW5kY2FyZF9oIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX21hY2hpbmVfc291bmRjYXJkX2giID4mNgotLQotLWZpCi0taWYgdGVzdCAkYWNfY3ZfaGVhZGVyX21hY2hpbmVfc291bmRjYXJkX2ggPSB5ZXM7IHRoZW4KLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9oZWFkZXJfJyRhY19zYWZlYFwiID0geWVzIjsgdGhlbgotKyAgZWNobyAiJGFjX3QiInllcyIgMT4mNgotICAgQVVESU9EUklWRVI9Im9zcyIKLSAgICAgICAgICAgICAgICBBVURJT0RFRlM9LURDU1RfQVVESU9fRlJFRUJTRAotK2Vsc2UKLSsgIGVjaG8gIiRhY190IiJubyIgMT4mNgotIGZpCi0gCi0tCi0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3lzX2F1ZGlvaW9faCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBzeXMvYXVkaW9pby5oIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzeXMvYXVkaW9pby5oLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N5c19hdWRpb2lvX2grc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N5c19hdWRpb2lvX2giID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfc3lzX2F1ZGlvaW9faCIgPiY2Ci0rYWNfc2FmZT1gZWNobyAic3lzL2F1ZGlvaW8uaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0rZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHN5cy9hdWRpb2lvLmgiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZToxNDYxOiBjaGVja2luZyBmb3Igc3lzL2F1ZGlvaW8uaCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gICMgSXMgdGhlIGhlYWRlciBjb21waWxhYmxlPwotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBzeXMvYXVkaW9pby5oIHVzYWJpbGl0eSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBzeXMvYXVkaW9pby5oIHVzYWJpbGl0eS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0kYWNfaW5jbHVkZXNfZGVmYXVsdAotKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotKyNsaW5lIDE0NjYgImNvbmZpZ3VyZSIKLSsjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8c3lzL2F1ZGlvaW8uaD4KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcwotK0VPRgotK2FjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi0reyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDcxOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQotK2FjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKLStpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPXllcyIKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1hY19oZWFkZXJfY29tcGlsZXI9bm8KLSsgIGVjaG8gIiRhY19lcnIiID4mNQotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPW5vIgotIGZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9jb21waWxlciIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9jb21waWxlciIgPiY2Ci0tCi0tIyBJcyB0aGUgaGVhZGVyIHByZXNlbnQ/Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHN5cy9hdWRpb2lvLmggcHJlc2VuY2UiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgc3lzL2F1ZGlvaW8uaCBwcmVzZW5jZS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8c3lzL2F1ZGlvaW8uaD4KLS1fQUNFT0YKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCi0tICBhY19zdGF0dXM9JD8KLS0gIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0tICBybSAtZiBjb25mdGVzdC5lcjEKLS0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCi0tICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotLSAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCi0tICBlbHNlCi0tICAgIGFjX2NwcF9lcnI9Ci0tICBmaQotLWVsc2UKLS0gIGFjX2NwcF9lcnI9eWVzCi0rcm0gLWYgY29uZnRlc3QqCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KLS0gIGFjX2hlYWRlcl9wcmVwcm9jPXllcwotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLSAgYWNfaGVhZGVyX3ByZXByb2M9bm8KLS1maQotLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX3ByZXByb2MiID4mNgotLQotLSMgU28/ICBXaGF0IGFib3V0IHRoaXMgaGVhZGVyPwotLWNhc2UgJGFjX2hlYWRlcl9jb21waWxlcjokYWNfaGVhZGVyX3ByZXByb2MgaW4KLS0gIHllczpubyApCi0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IHN5cy9hdWRpb2lvLmg6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9Ci0tICAgICgKLS0gICAgICBjYXQgPDxcX0FTQk9YCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgUmVwb3J0IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tX0FTQk9YCi0tICAgICkgfAotLSAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgotLSAgICA7OwotLSAgbm86eWVzICkKLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy9hdWRpb2lvLmg6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy9hdWRpb2lvLmg6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9Ci0tICAgICgKLS0gICAgICBjYXQgPDxcX0FTQk9YCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgUmVwb3J0IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tX0FTQk9YCi0tICAgICkgfAotLSAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgotLSAgICA7OwotLWVzYWMKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHN5cy9hdWRpb2lvLmgiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHN5cy9hdWRpb2lvLmguLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3lzX2F1ZGlvaW9faCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBhY19jdl9oZWFkZXJfc3lzX2F1ZGlvaW9faD0kYWNfaGVhZGVyX3ByZXByb2MKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3lzX2F1ZGlvaW9faCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9zeXNfYXVkaW9pb19oIiA+JjYKLS0KLS1maQotLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zeXNfYXVkaW9pb19oID0geWVzOyB0aGVuCi0raWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3ZfaGVhZGVyXyckYWNfc2FmZWBcIiA9IHllcyI7IHRoZW4KLSsgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKLSAgIEFVRElPRFJJVkVSPSJzdW4iCi0gICAgICAgICAgICAgICAgQVVESU9ERUZTPS1EQ1NUX0FVRElPX1NVTk9TCi0rZWxzZQotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLSAKLS0KLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9tbXN5c3RlbV9oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIG1tc3lzdGVtLmgiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG1tc3lzdGVtLmguLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfbW1zeXN0ZW1faCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfbW1zeXN0ZW1faCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9tbXN5c3RlbV9oIiA+JjYKLSsgYWNfc2FmZT1gZWNobyAiYWxzYS9hc291bmRsaWIuaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0rZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGFsc2EvYXNvdW5kbGliLmgiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZToxNDk1OiBjaGVja2luZyBmb3IgYWxzYS9hc291bmRsaWIuaCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gICMgSXMgdGhlIGhlYWRlciBjb21waWxhYmxlPwotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBtbXN5c3RlbS5oIHVzYWJpbGl0eSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBtbXN5c3RlbS5oIHVzYWJpbGl0eS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0kYWNfaW5jbHVkZXNfZGVmYXVsdAotLSNpbmNsdWRlIDxtbXN5c3RlbS5oPgotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCi0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTUwMCAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotKyNpbmNsdWRlIDxhbHNhL2Fzb3VuZGxpYi5oPgotK0VPRgotK2FjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi0reyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNTA1OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQotK2FjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKLStpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPXllcyIKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1hY19oZWFkZXJfY29tcGlsZXI9bm8KLSsgIGVjaG8gIiRhY19lcnIiID4mNQotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPW5vIgotIGZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9jb21waWxlciIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9jb21waWxlciIgPiY2Ci0tCi0tIyBJcyB0aGUgaGVhZGVyIHByZXNlbnQ/Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIG1tc3lzdGVtLmggcHJlc2VuY2UiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgbW1zeXN0ZW0uaCBwcmVzZW5jZS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8bW1zeXN0ZW0uaD4KLS1fQUNFT0YKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCi0tICBhY19zdGF0dXM9JD8KLS0gIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0tICBybSAtZiBjb25mdGVzdC5lcjEKLS0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCi0tICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotLSAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCi0tICBlbHNlCi0tICAgIGFjX2NwcF9lcnI9Ci0tICBmaQotLWVsc2UKLS0gIGFjX2NwcF9lcnI9eWVzCi0rcm0gLWYgY29uZnRlc3QqCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KLS0gIGFjX2hlYWRlcl9wcmVwcm9jPXllcwotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2hlYWRlcl8nJGFjX3NhZmVgXCIgPSB5ZXMiOyB0aGVuCi0rICBlY2hvICIkYWNfdCIieWVzIiAxPiY2Ci0rICBBVURJT0RSSVZFUj0iYWxzYSIKLSsJICAgICAgIEFVRElPREVGUz0tRENTVF9BVURJT19BTFNBCi0rICAgICAgICAgICAgICAgQVVESU9MSUJTPS1sYXNvdW5kCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tICBhY19oZWFkZXJfcHJlcHJvYz1ubwotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLS1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFkZXJfcHJlcHJvYyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9wcmVwcm9jIiA+JjYKLSAKLS0jIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KLS1jYXNlICRhY19oZWFkZXJfY29tcGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jIGluCi0tICB5ZXM6bm8gKQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBtbXN5c3RlbS5oOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG1tc3lzdGVtLmg6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1tc3lzdGVtLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG1tc3lzdGVtLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQotLSAgICAoCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICApIHwKLS0gICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKLS0gICAgOzsKLS0gIG5vOnllcyApCi0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1tc3lzdGVtLmg6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBtbXN5c3RlbS5oOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1tc3lzdGVtLmg6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBtbXN5c3RlbS5oOiBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1tc3lzdGVtLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG1tc3lzdGVtLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQotLSAgICAoCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICApIHwKLS0gICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKLS0gICAgOzsKLS1lc2FjCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBtbXN5c3RlbS5oIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBtbXN5c3RlbS5oLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX21tc3lzdGVtX2grc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rYWNfc2FmZT1gZWNobyAibW1zeXN0ZW0uaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0rZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG1tc3lzdGVtLmgiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZToxNTMwOiBjaGVja2luZyBmb3IgbW1zeXN0ZW0uaCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gIGFjX2N2X2hlYWRlcl9tbXN5c3RlbV9oPSRhY19oZWFkZXJfcHJlcHJvYwotKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotKyNsaW5lIDE1MzUgImNvbmZpZ3VyZSIKLSsjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSsjaW5jbHVkZSA8bW1zeXN0ZW0uaD4KLStFT0YKLSthY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgotK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MTU0MDogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KLSthY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCi0raWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KLSsgIHJtIC1yZiBjb25mdGVzdCoKLSsgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0rZWxzZQotKyAgZWNobyAiJGFjX2VyciIgPiY1Ci0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9bm8iCi0gZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX21tc3lzdGVtX2giID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfbW1zeXN0ZW1faCIgPiY2Ci0tCi0rcm0gLWYgY29uZnRlc3QqCi0gZmkKLS1pZiB0ZXN0ICRhY19jdl9oZWFkZXJfbW1zeXN0ZW1faCA9IHllczsgdGhlbgotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2hlYWRlcl8nJGFjX3NhZmVgXCIgPSB5ZXMiOyB0aGVuCi0rICBlY2hvICIkYWNfdCIieWVzIiAxPiY2Ci0gICBBVURJT0RSSVZFUj0id2luY2UiCi0gCSAgICAgICBBVURJT0RFRlM9LURDU1RfQVVESU9fV0lOQ0UKLSAJICAgICAgIEFVRElPTElCUz0tbHdpbm1tCi0rZWxzZQotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLSAKLSAKLS0KLS0KLSAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWF1ZGlvIG9yIC0td2l0aG91dC1hdWRpbyB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHt3aXRoX2F1ZGlvK3NldH0iID0gc2V0OyB0aGVuCi0gICB3aXRodmFsPSIkd2l0aF9hdWRpbyIKLS0gIEFVRElPRFJJVkVSPSR3aXRoX2F1ZGlvCi0tZmk7Ci0rICBBVURJT0RSSVZFUj0kd2l0aF9hdWRpbyAKLStmaQotIAotKwotIGlmIHRlc3QgIngkQVVESU9ERUZTIiA9IHg7IHRoZW4KLSAgICAgY2FzZSAiJEFVRElPRFJJVkVSIiBpbgotIAlsaW51eHxvc3MpCi1AQCAtNDAwNiwzNCArMTU5NSwzNCBAQAotIAotIAotIAotLQotICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGFuZyBvciAtLXdpdGhvdXQtbGFuZyB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHt3aXRoX2xhbmcrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgIHdpdGh2YWw9IiR3aXRoX2xhbmciCi0tICBGTF9MQU5HPSR3aXRoX2xhbmcKLS1maTsKLSsgIEZMX0xBTkc9JHdpdGhfbGFuZyAKLStmaQotKwotIGlmIHRlc3QgIngkd2l0aF9sYW5nIiA9ICJ4IjsgdGhlbgotICAgICAgICAgRkxfTEFORz0idXNlbmdsaXNoIgotIGZpCi0gCi0gCi0tCi0gIyBDaGVjayB3aGV0aGVyIC0td2l0aC12b3ggb3IgLS13aXRob3V0LXZveCB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHt3aXRoX3ZveCtzZXR9IiA9IHNldDsgdGhlbgotICAgd2l0aHZhbD0iJHdpdGhfdm94IgotLSAgRkxfVk9YPSR3aXRoX3ZveAotLWZpOwotKyAgRkxfVk9YPSR3aXRoX3ZveCAKLStmaQotKwotIGlmIHRlc3QgIngkd2l0aF92b3giID0gIngiOyB0aGVuCi0gICAgICAgICBGTF9WT1g9ImNtdV91c19rYWwiCi0gZmkKLSAKLSAKLS0KLSAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxleCBvciAtLXdpdGhvdXQtbGV4IHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke3dpdGhfbGV4K3NldH0iID0gc2V0OyB0aGVuCi0gICB3aXRodmFsPSIkd2l0aF9sZXgiCi0tICBGTF9MRVg9JHdpdGhfbGV4Ci0tZmk7Ci0rICBGTF9MRVg9JHdpdGhfbGV4IAotK2ZpCi0rCi0gaWYgdGVzdCAieCR3aXRoX2xleCIgPSAieCI7IHRoZW4KLSAgICAgICAgIEZMX0xFWD0iY211bGV4IgotIGZpCi1AQCAtNDA0MSw5MjEgKzE2MzAsMzAwIEBACi0gCi0gCi0gCi0tICAgICAgICAgICAgICAgICAgICBhY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgY29uZmlnL2NvbmZpZyBjb25maWcvc3lzdGVtLm1hayIKLS1jYXQgPmNvbmZjYWNoZSA8PFxfQUNFT0YKLSt0cmFwICcnIDEgMiAxNQotK2NhdCA+IGNvbmZjYWNoZSA8PFxFT0YKLSAjIFRoaXMgZmlsZSBpcyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUKLSAjIHRlc3RzIHJ1biBvbiB0aGlzIHN5c3RlbSBzbyB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBjb25maWd1cmUKLS0jIHNjcmlwdHMgYW5kIGNvbmZpZ3VyZSBydW5zLCBzZWUgY29uZmlndXJlJ3Mgb3B0aW9uIC0tY29uZmlnLWNhY2hlLgotLSMgSXQgaXMgbm90IHVzZWZ1bCBvbiBvdGhlciBzeXN0ZW1zLiAgSWYgaXQgY29udGFpbnMgcmVzdWx0cyB5b3UgZG9uJ3QKLS0jIHdhbnQgdG8ga2VlcCwgeW91IG1heSByZW1vdmUgb3IgZWRpdCBpdC4KLSsjIHNjcmlwdHMgYW5kIGNvbmZpZ3VyZSBydW5zLiAgSXQgaXMgbm90IHVzZWZ1bCBvbiBvdGhlciBzeXN0ZW1zLgotKyMgSWYgaXQgY29udGFpbnMgcmVzdWx0cyB5b3UgZG9uJ3Qgd2FudCB0byBrZWVwLCB5b3UgbWF5IHJlbW92ZSBvciBlZGl0IGl0LgotICMKLS0jIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlvbiB0byB0aGUgY2FjaGUgZmlsZSBpZiB5b3UgZ2l2ZSBpdAotLSMgdGhlIC0tcmVjaGVjayBvcHRpb24gdG8gcmVydW4gY29uZmlndXJlLgotKyMgQnkgZGVmYXVsdCwgY29uZmlndXJlIHVzZXMgLi9jb25maWcuY2FjaGUgYXMgdGhlIGNhY2hlIGZpbGUsCi0rIyBjcmVhdGluZyBpdCBpZiBpdCBkb2VzIG5vdCBleGlzdCBhbHJlYWR5LiAgWW91IGNhbiBnaXZlIGNvbmZpZ3VyZQotKyMgdGhlIC0tY2FjaGUtZmlsZT1GSUxFIG9wdGlvbiB0byB1c2UgYSBkaWZmZXJlbnQgY2FjaGUgZmlsZTsgdGhhdCBpcwotKyMgd2hhdCBjb25maWd1cmUgZG9lcyB3aGVuIGl0IGNhbGxzIGNvbmZpZ3VyZSBzY3JpcHRzIGluCi0rIyBzdWJkaXJlY3Rvcmllcywgc28gdGhleSBzaGFyZSB0aGUgY2FjaGUuCi0rIyBHaXZpbmcgLS1jYWNoZS1maWxlPS9kZXYvbnVsbCBkaXNhYmxlcyBjYWNoaW5nLCBmb3IgZGVidWdnaW5nIGNvbmZpZ3VyZS4KLSsjIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlvbiB0byB0aGUgY2FjaGUgZmlsZSBpZiB5b3UgZ2l2ZSBpdCB0aGUKLSsjIC0tcmVjaGVjayBvcHRpb24gdG8gcmVydW4gY29uZmlndXJlLgotICMKLS0jIGBhY19jdl9lbnZfZm9vJyB2YXJpYWJsZXMgKHNldCBvciB1bnNldCkgd2lsbCBiZSBvdmVycmlkZGVuIHdoZW4KLS0jIGxvYWRpbmcgdGhpcyBmaWxlLCBvdGhlciAqdW5zZXQqIGBhY19jdl9mb28nIHdpbGwgYmUgYXNzaWduZWQgdGhlCi0tIyBmb2xsb3dpbmcgdmFsdWVzLgotLQotLV9BQ0VPRgotLQotK0VPRgotICMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMsCi0gIyBidXQgd2Uga25vdyBvZiBubyB3b3JrYXJvdW5kIHRoYXQgaXMgc2ltcGxlLCBwb3J0YWJsZSwgYW5kIGVmZmljaWVudC4KLSAjIFNvLCBkb24ndCBwdXQgbmV3bGluZXMgaW4gY2FjaGUgdmFyaWFibGVzJyB2YWx1ZXMuCi0gIyBVbHRyaXggc2ggc2V0IHdyaXRlcyB0byBzdGRlcnIgYW5kIGNhbid0IGJlIHJlZGlyZWN0ZWQgZGlyZWN0bHksCi0gIyBhbmQgc2V0cyB0aGUgaGlnaCBiaXQgaW4gdGhlIGNhY2hlIGZpbGUgdW5sZXNzIHdlIGFzc2lnbiB0byB0aGUgdmFycy4KLS17Ci0tICAoc2V0KSAyPiYxIHwKLS0gICAgY2FzZSBgKGFjX3NwYWNlPScgJzsgc2V0IHwgZ3JlcCBhY19zcGFjZSkgMj4mMWAgaW4KLS0gICAgKmFjX3NwYWNlPVwgKikKLS0gICAgICAjIGBzZXQnIGRvZXMgbm90IHF1b3RlIGNvcnJlY3RseSwgc28gYWRkIHF1b3RlcyAoZG91YmxlLXF1b3RlCi0tICAgICAgIyBzdWJzdGl0dXRpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgc2VkIHR1cm5zIFxcIGludG8gXCkuCi0tICAgICAgc2VkIC1uIFwKLS0gICAgICAgICJzLycvJ1xcXFwnJy9nOwotLSAgICAJICBzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPSdcXDInL3AiCi0tICAgICAgOzsKLS0gICAgKikKLS0gICAgICAjIGBzZXQnIHF1b3RlcyBjb3JyZWN0bHkgYXMgcmVxdWlyZWQgYnkgUE9TSVgsIHNvIGRvIG5vdCBhZGQgcXVvdGVzLgotLSAgICAgIHNlZCAtbiBcCi0tICAgICAgICAicy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT1cXDIvcCIKLS0gICAgICA7OwotLSAgICBlc2FjOwotLX0gfAotLSAgc2VkICcKLS0gICAgIHQgY2xlYXIKLS0gICAgIDogY2xlYXIKLS0gICAgIHMvXlwoW149XSpcKT1cKC4qW3t9XS4qXCkkL3Rlc3QgIiR7XDErc2V0fSIgPSBzZXQgfHwgJi8KLS0gICAgIHQgZW5kCi0tICAgICAvXmFjX2N2X2Vudi8hcy9eXChbXj1dKlwpPVwoLipcKSQvXDE9JHtcMT1cMn0vCi0tICAgICA6IGVuZCcgPj5jb25mY2FjaGUKLS1pZiBkaWZmICRjYWNoZV9maWxlIGNvbmZjYWNoZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQotKyhzZXQpIDI+JjEgfAotKyAgY2FzZSBgKGFjX3NwYWNlPScgJzsgc2V0IHwgZ3JlcCBhY19zcGFjZSkgMj4mMWAgaW4KLSsgICphY19zcGFjZT1cICopCi0rICAgICMgYHNldCcgZG9lcyBub3QgcXVvdGUgY29ycmVjdGx5LCBzbyBhZGQgcXVvdGVzIChkb3VibGUtcXVvdGUgc3Vic3RpdHV0aW9uCi0rICAgICMgdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgc2VkIHR1cm5zIFxcIGludG8gXCkuCi0rICAgIHNlZCAtbiBcCi0rICAgICAgLWUgInMvJy8nXFxcXCcnL2ciIFwKLSsgICAgICAtZSAicy9eXFwoW2EtekEtWjAtOV9dKl9jdl9bYS16QS1aMC05X10qXFwpPVxcKC4qXFwpL1xcMT1cJHtcXDE9J1xcMid9L3AiCi0rICAgIDs7Ci0rICAqKQotKyAgICAjIGBzZXQnIHF1b3RlcyBjb3JyZWN0bHkgYXMgcmVxdWlyZWQgYnkgUE9TSVgsIHNvIGRvIG5vdCBhZGQgcXVvdGVzLgotKyAgICBzZWQgLW4gLWUgJ3MvXlwoW2EtekEtWjAtOV9dKl9jdl9bYS16QS1aMC05X10qXCk9XCguKlwpL1wxPSR7XDE9XDJ9L3AnCi0rICAgIDs7Ci0rICBlc2FjID4+IGNvbmZjYWNoZQotK2lmIGNtcCAtcyAkY2FjaGVfZmlsZSBjb25mY2FjaGU7IHRoZW4KLSsgIDoKLStlbHNlCi0gICBpZiB0ZXN0IC13ICRjYWNoZV9maWxlOyB0aGVuCi0tICAgIHRlc3QgIngkY2FjaGVfZmlsZSIgIT0gIngvZGV2L251bGwiICYmIGVjaG8gInVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIgotLSAgICBjYXQgY29uZmNhY2hlID4kY2FjaGVfZmlsZQotKyAgICBlY2hvICJ1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIKLSsgICAgY2F0IGNvbmZjYWNoZSA+ICRjYWNoZV9maWxlCi0gICBlbHNlCi0gICAgIGVjaG8gIm5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hlICRjYWNoZV9maWxlIgotICAgZmkKLSBmaQotIHJtIC1mIGNvbmZjYWNoZQotIAotK3RyYXAgJ3JtIC1mciBjb25mdGVzdCogY29uZmRlZnMqIGNvcmUgY29yZS4qICouY29yZSAkYWNfY2xlYW5fZmlsZXM7IGV4aXQgMScgMSAyIDE1Ci0rCi0gdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSRhY19kZWZhdWx0X3ByZWZpeAotICMgTGV0IG1ha2UgZXhwYW5kIGV4ZWNfcHJlZml4LgotIHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKLSAKLS0jIFZQQVRIIG1heSBjYXVzZSB0cm91YmxlIHdpdGggc29tZSBtYWtlcywgc28gd2UgcmVtb3ZlICQoc3JjZGlyKSwKLS0jICR7c3JjZGlyfSBhbmQgQHNyY2RpckAgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4iLCBzdHJpcCBsZWFkaW5nIGFuZAotLSMgdHJhaWxpbmcgY29sb25zIGFuZCB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgbGluZSBpZiBWUEFUSCBiZWNvbWVzIGVtcHR5Ci0tIyAoYWN0dWFsbHkgd2UgbGVhdmUgYW4gZW1wdHkgbGluZSB0byBwcmVzZXJ2ZSBsaW5lIG51bWJlcnMpLgotKyMgQW55IGFzc2lnbm1lbnQgdG8gVlBBVEggY2F1c2VzIFN1biBtYWtlIHRvIG9ubHkgZXhlY3V0ZQotKyMgdGhlIGZpcnN0IHNldCBvZiBkb3VibGUtY29sb24gcnVsZXMsIHNvIHJlbW92ZSBpdCBpZiBub3QgbmVlZGVkLgotKyMgSWYgdGhlcmUgaXMgYSBjb2xvbiBpbiB0aGUgcGF0aCwgd2UgbmVlZCB0byBrZWVwIGl0LgotIGlmIHRlc3QgIngkc3JjZGlyIiA9IHguOyB0aGVuCi0tICBhY192cHN1Yj0nL15bIAldKlZQQVRIWyAJXSo9L3sKLS1zLzoqXCQoc3JjZGlyKToqLzovOwotLXMvOipcJHtzcmNkaXJ9OiovOi87Ci0tcy86KkBzcmNkaXJAOiovOi87Ci0tcy9eXChbXj1dKj1bIAldKlwpOiovXDEvOwotLXMvOiokLy87Ci0tcy9eW149XSo9WyAJXSokLy87Ci0tfScKLSsgIGFjX3Zwc3ViPScvXlsgCV0qVlBBVEhbIAldKj1bXjpdKiQvZCcKLSBmaQotIAotK3RyYXAgJ3JtIC1mICRDT05GSUdfU1RBVFVTIGNvbmZ0ZXN0KjsgZXhpdCAxJyAxIDIgMTUKLSsKLSAjIFRyYW5zZm9ybSBjb25mZGVmcy5oIGludG8gREVGUy4KLSAjIFByb3RlY3QgYWdhaW5zdCBzaGVsbCBleHBhbnNpb24gd2hpbGUgZXhlY3V0aW5nIE1ha2VmaWxlIHJ1bGVzLgotICMgUHJvdGVjdCBhZ2FpbnN0IE1ha2VmaWxlIG1hY3JvIGV4cGFuc2lvbi4KLS0jCi0tIyBJZiB0aGUgZmlyc3Qgc2VkIHN1YnN0aXR1dGlvbiBpcyBleGVjdXRlZCAod2hpY2ggbG9va3MgZm9yIG1hY3JvcyB0aGF0Ci0tIyB0YWtlIGFyZ3VtZW50cyksIHRoZW4gd2UgYnJhbmNoIHRvIHRoZSBxdW90ZSBzZWN0aW9uLiAgT3RoZXJ3aXNlLAotLSMgbG9vayBmb3IgYSBtYWNybyB0aGF0IGRvZXNuJ3QgdGFrZSBhcmd1bWVudHMuCi0tY2F0ID5jb25mZGVmMm9wdC5zZWQgPDxcX0FDRU9GCi0tdCBjbGVhcgotLTogY2xlYXIKLS1zLF5bIAldKiNbIAldKmRlZmluZVsgCV1bIAldKlwoW14gCShdW14gCShdKihbXildKilcKVsgCV0qXCguKlwpLC1EXDE9XDIsZwotLXQgcXVvdGUKLS1zLF5bIAldKiNbIAldKmRlZmluZVsgCV1bIAldKlwoW14gCV1bXiAJXSpcKVsgCV0qXCguKlwpLC1EXDE9XDIsZwotLXQgcXVvdGUKLS1kCi0tOiBxdW90ZQotLXMsWyAJYH4jJF4mKigpe31cXHw7JyI8Pj9dLFxcJixnCi0tcyxcWyxcXCYsZwotLXMsXF0sXFwmLGcKLS1zLFwkLCQkLGcKLS1wCi0tX0FDRU9GCi0tIyBXZSB1c2UgZWNobyB0byBhdm9pZCBhc3N1bWluZyBhIHBhcnRpY3VsYXIgbGluZS1icmVha2luZyBjaGFyYWN0ZXIuCi0tIyBUaGUgZXh0cmEgZG90IGlzIHRvIHByZXZlbnQgdGhlIHNoZWxsIGZyb20gY29uc3VtaW5nIHRyYWlsaW5nCi0tIyBsaW5lLWJyZWFrcyBmcm9tIHRoZSBzdWItY29tbWFuZCBvdXRwdXQuICBBIGxpbmUtYnJlYWsgd2l0aGluCi0tIyBzaW5nbGUtcXVvdGVzIGRvZXNuJ3Qgd29yayBiZWNhdXNlLCBpZiB0aGlzIHNjcmlwdCBpcyBjcmVhdGVkIGluIGEKLS0jIHBsYXRmb3JtIHRoYXQgdXNlcyB0d28gY2hhcmFjdGVycyBmb3IgbGluZS1icmVha3MgKGUuZy4sIERPUyksIHRyCi0tIyB3b3VsZCBicmVhay4KLS1hY19MRl9hbmRfRE9UPWBlY2hvOyBlY2hvIC5gCi0tREVGUz1gc2VkIC1uIC1mIGNvbmZkZWYyb3B0LnNlZCBjb25mZGVmcy5oIHwgdHIgIiRhY19MRl9hbmRfRE9UIiAnIC4nYAotLXJtIC1mIGNvbmZkZWYyb3B0LnNlZAotK2NhdCA+IGNvbmZ0ZXN0LmRlZnMgPDxcRU9GCi0rcyUjZGVmaW5lIFwoW0EtWmEtel9dW0EtWmEtejAtOV9dKlwpICpcKC4qXCklLURcMT1cMiVnCi0rcyVbIAlgfiMkXiYqKCl7fVxcfDsnIjw+P10lXFwmJWcKLStzJVxbJVxcJiVnCi0rcyVcXSVcXCYlZwotK3MlXCQlJCQlZwotK0VPRgotK0RFRlM9YHNlZCAtZiBjb25mdGVzdC5kZWZzIGNvbmZkZWZzLmggfCB0ciAnXDAxMicgJyAnYAotK3JtIC1mIGNvbmZ0ZXN0LmRlZnMKLSAKLSAKLS1hY19saWJvYmpzPQotLWFjX2x0bGlib2Jqcz0KLS1mb3IgYWNfaSBpbiA6ICRMSUJPQkpTOyBkbyB0ZXN0ICJ4JGFjX2kiID0geDogJiYgY29udGludWUKLS0gICMgMS4gUmVtb3ZlIHRoZSBleHRlbnNpb24sIGFuZCAkVSBpZiBhbHJlYWR5IGluc3RhbGxlZC4KLS0gIGFjX2k9YGVjaG8gIiRhY19pIiB8Ci0tICAgICAgICAgc2VkICdzL1wkVVwuLy4vO3MvXC5vJC8vO3MvXC5vYmokLy8nYAotLSAgIyAyLiBBZGQgdGhlbS4KLS0gIGFjX2xpYm9ianM9IiRhY19saWJvYmpzICRhY19pXCRVLiRhY19vYmpleHQiCi0tICBhY19sdGxpYm9ianM9IiRhY19sdGxpYm9ianMgJGFjX2kiJyRVLmxvJwotLWRvbmUKLS1MSUJPQkpTPSRhY19saWJvYmpzCi0tCi0tTFRMSUJPQkpTPSRhY19sdGxpYm9ianMKLS0KLS0KLS0KLSsjIFdpdGhvdXQgdGhlICIuLyIsIHNvbWUgc2hlbGxzIGxvb2sgaW4gUEFUSCBmb3IgY29uZmlnLnN0YXR1cy4KLSA6ICR7Q09ORklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9Ci0tYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMKLS1hY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzICRDT05GSUdfU1RBVFVTIgotLXsgZWNobyAiJGFzX21lOiRMSU5FTk86IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjUKLS1lY2hvICIkYXNfbWU6IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjY7fQotLWNhdCA+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YKLS0jISAkU0hFTEwKLS0jIEdlbmVyYXRlZCBieSAkYXNfbWUuCi0rCi0rZWNobyBjcmVhdGluZyAkQ09ORklHX1NUQVRVUwotK3JtIC1mICRDT05GSUdfU1RBVFVTCi0rY2F0ID4gJENPTkZJR19TVEFUVVMgPDxFT0YKLSsjISAvYmluL3NoCi0rIyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUuCi0gIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0rIyBUaGlzIGRpcmVjdG9yeSB3YXMgY29uZmlndXJlZCBhcyBmb2xsb3dzLAotKyMgb24gaG9zdCBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWA6Ci0rIwotKyMgJDAgJGFjX2NvbmZpZ3VyZV9hcmdzCi0rIwotICMgQ29tcGlsZXIgb3V0cHV0IHByb2R1Y2VkIGJ5IGNvbmZpZ3VyZSwgdXNlZnVsIGZvciBkZWJ1Z2dpbmcKLS0jIGNvbmZpZ3VyZSwgaXMgaW4gY29uZmlnLmxvZyBpZiBpdCBleGlzdHMuCi0rIyBjb25maWd1cmUsIGlzIGluIC4vY29uZmlnLmxvZyBpZiBpdCBleGlzdHMuCi0gCi0tZGVidWc9ZmFsc2UKLS1hY19jc19yZWNoZWNrPWZhbHNlCi0tYWNfY3Nfc2lsZW50PWZhbHNlCi0tU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KLS1fQUNFT0YKLS0KLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBNNHNoIEluaXRpYWxpemF0aW9uLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0jIEJlIEJvdXJuZSBjb21wYXRpYmxlCi0taWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICBlbXVsYXRlIHNoCi0tICBOVUxMQ01EPToKLS0gICMgWnNoIDMueCBhbmQgNC54IHBlcmZvcm1zIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gKLS0gICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCi0tICBhbGlhcyAtZyAnJHsxKyIkQCJ9Jz0nIiRAIicKLS1lbGlmIHRlc3QgLW4gIiR7QkFTSF9WRVJTSU9OK3NldH0iICYmIChzZXQgLW8gcG9zaXgpID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgc2V0IC1vIHBvc2l4Ci0tZmkKLS0KLS0jIFN1cHBvcnQgdW5zZXQgd2hlbiBwb3NzaWJsZS4KLS1pZiAoRk9PPUZPTzsgdW5zZXQgRk9PKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIGFzX3Vuc2V0PXVuc2V0Ci0tZWxzZQotLSAgYXNfdW5zZXQ9ZmFsc2UKLS1maQotLQotLQotLSMgV29yayBhcm91bmQgYnVncyBpbiBwcmUtMy4wIFVXSU4ga3NoLgotLSRhc191bnNldCBFTlYgTUFJTCBNQUlMUEFUSAotLVBTMT0nJCAnCi0tUFMyPSc+ICcKLS1QUzQ9JysgJwotLQotLSMgTkxTIG51aXNhbmNlcy4KLS1mb3IgYXNfdmFyIGluIFwKLS0gIExBTkcgTEFOR1VBR0UgTENfQUREUkVTUyBMQ19BTEwgTENfQ09MTEFURSBMQ19DVFlQRSBMQ19JREVOVElGSUNBVElPTiBcCi0tICBMQ19NRUFTVVJFTUVOVCBMQ19NRVNTQUdFUyBMQ19NT05FVEFSWSBMQ19OQU1FIExDX05VTUVSSUMgTENfUEFQRVIgXAotLSAgTENfVEVMRVBIT05FIExDX1RJTUUKLSthY19jc191c2FnZT0iVXNhZ2U6ICRDT05GSUdfU1RBVFVTIFstLXJlY2hlY2tdIFstLXZlcnNpb25dIFstLWhlbHBdIgotK2ZvciBhY19vcHRpb24KLSBkbwotLSAgaWYgKHNldCAreDsgdGVzdCAtbiAiYChldmFsICRhc192YXI9QzsgZXhwb3J0ICRhc192YXIpIDI+JjFgIik7IHRoZW4KLS0gICAgZXZhbCAkYXNfdmFyPUM7IGV4cG9ydCAkYXNfdmFyCi0tICBlbHNlCi0tICAgICRhc191bnNldCAkYXNfdmFyCi0tICBmaQotKyAgY2FzZSAiXCRhY19vcHRpb24iIGluCi0rICAtcmVjaGVjayB8IC0tcmVjaGVjayB8IC0tcmVjaGVjIHwgLS1yZWNoZSB8IC0tcmVjaCB8IC0tcmVjIHwgLS1yZSB8IC0tcikKLSsgICAgZWNobyAicnVubmluZyBcJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJDAgJGFjX2NvbmZpZ3VyZV9hcmdzIC0tbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uIgotKyAgICBleGVjIFwke0NPTkZJR19TSEVMTC0vYmluL3NofSAkMCAkYWNfY29uZmlndXJlX2FyZ3MgLS1uby1jcmVhdGUgLS1uby1yZWN1cnNpb24gOzsKLSsgIC12ZXJzaW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLS12ZXIgfCAtLXZlIHwgLS12KQotKyAgICBlY2hvICIkQ09ORklHX1NUQVRVUyBnZW5lcmF0ZWQgYnkgYXV0b2NvbmYgdmVyc2lvbiAyLjEzIgotKyAgICBleGl0IDAgOzsKLSsgIC1oZWxwIHwgLS1oZWxwIHwgLS1oZWwgfCAtLWhlIHwgLS1oKQotKyAgICBlY2hvICJcJGFjX2NzX3VzYWdlIjsgZXhpdCAwIDs7Ci0rICAqKSBlY2hvICJcJGFjX2NzX3VzYWdlIjsgZXhpdCAxIDs7Ci0rICBlc2FjCi0gZG9uZQotIAotLSMgUmVxdWlyZWQgdG8gdXNlIGJhc2VuYW1lLgotLWlmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICBhc19leHByPWV4cHIKLS1lbHNlCi0tICBhc19leHByPWZhbHNlCi0tZmkKLSthY19naXZlbl9zcmNkaXI9JHNyY2RpcgotK2FjX2dpdmVuX0lOU1RBTEw9IiRJTlNUQUxMIgotIAotLWlmIChiYXNlbmFtZSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAvIDI+JjFgIiA9ICJYLyI7IHRoZW4KLS0gIGFzX2Jhc2VuYW1lPWJhc2VuYW1lCi0tZWxzZQotLSAgYXNfYmFzZW5hbWU9ZmFsc2UKLS1maQotK3RyYXAgJ3JtIC1mciBgZWNobyAiY29uZmlnL2NvbmZpZyBjb25maWcvc3lzdGVtLm1hayIgfCBzZWQgInMvOlteIF0qLy9nImAgY29uZnRlc3QqOyBleGl0IDEnIDEgMiAxNQotK0VPRgotK2NhdCA+PiAkQ09ORklHX1NUQVRVUyA8PEVPRgotIAotKyMgUHJvdGVjdCBhZ2FpbnN0IGJlaW5nIG9uIHRoZSByaWdodCBzaWRlIG9mIGEgc2VkIHN1YnN0IGluIGNvbmZpZy5zdGF0dXMuCi0rc2VkICdzLyVAL0BALzsgcy9AJS9AQC87IHMvJWdcJC9AZy87IC9AZ1wkL3MvW1xcXFwmJV0vXFxcXCYvZzsKLSsgcy9AQC8lQC87IHMvQEAvQCUvOyBzL0BnXCQvJWcvJyA+IGNvbmZ0ZXN0LnN1YnMgPDxcXENFT0YKLSskYWNfdnBzdWIKLSskZXh0cmFzdWIKLStzJUBTSEVMTEAlJFNIRUxMJWcKLStzJUBDRkxBR1NAJSRDRkxBR1MlZwotK3MlQENQUEZMQUdTQCUkQ1BQRkxBR1MlZwotK3MlQENYWEZMQUdTQCUkQ1hYRkxBR1MlZwotK3MlQEZGTEFHU0AlJEZGTEFHUyVnCi0rcyVAREVGU0AlJERFRlMlZwotK3MlQExERkxBR1NAJSRMREZMQUdTJWcKLStzJUBMSUJTQCUkTElCUyVnCi0rcyVAZXhlY19wcmVmaXhAJSRleGVjX3ByZWZpeCVnCi0rcyVAcHJlZml4QCUkcHJlZml4JWcKLStzJUBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQCUkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSVnCi0rcyVAYmluZGlyQCUkYmluZGlyJWcKLStzJUBzYmluZGlyQCUkc2JpbmRpciVnCi0rcyVAbGliZXhlY2RpckAlJGxpYmV4ZWNkaXIlZwotK3MlQGRhdGFkaXJAJSRkYXRhZGlyJWcKLStzJUBzeXNjb25mZGlyQCUkc3lzY29uZmRpciVnCi0rcyVAc2hhcmVkc3RhdGVkaXJAJSRzaGFyZWRzdGF0ZWRpciVnCi0rcyVAbG9jYWxzdGF0ZWRpckAlJGxvY2Fsc3RhdGVkaXIlZwotK3MlQGxpYmRpckAlJGxpYmRpciVnCi0rcyVAaW5jbHVkZWRpckAlJGluY2x1ZGVkaXIlZwotK3MlQG9sZGluY2x1ZGVkaXJAJSRvbGRpbmNsdWRlZGlyJWcKLStzJUBpbmZvZGlyQCUkaW5mb2RpciVnCi0rcyVAbWFuZGlyQCUkbWFuZGlyJWcKLStzJUBob3N0QCUkaG9zdCVnCi0rcyVAaG9zdF9hbGlhc0AlJGhvc3RfYWxpYXMlZwotK3MlQGhvc3RfY3B1QCUkaG9zdF9jcHUlZwotK3MlQGhvc3RfdmVuZG9yQCUkaG9zdF92ZW5kb3IlZwotK3MlQGhvc3Rfb3NAJSRob3N0X29zJWcKLStzJUB0YXJnZXRAJSR0YXJnZXQlZwotK3MlQHRhcmdldF9hbGlhc0AlJHRhcmdldF9hbGlhcyVnCi0rcyVAdGFyZ2V0X2NwdUAlJHRhcmdldF9jcHUlZwotK3MlQHRhcmdldF92ZW5kb3JAJSR0YXJnZXRfdmVuZG9yJWcKLStzJUB0YXJnZXRfb3NAJSR0YXJnZXRfb3MlZwotK3MlQGJ1aWxkQCUkYnVpbGQlZwotK3MlQGJ1aWxkX2FsaWFzQCUkYnVpbGRfYWxpYXMlZwotK3MlQGJ1aWxkX2NwdUAlJGJ1aWxkX2NwdSVnCi0rcyVAYnVpbGRfdmVuZG9yQCUkYnVpbGRfdmVuZG9yJWcKLStzJUBidWlsZF9vc0AlJGJ1aWxkX29zJWcKLStzJUBDQ0AlJENDJWcKLStzJUBSQU5MSUJAJSRSQU5MSUIlZwotK3MlQElOU1RBTExfUFJPR1JBTUAlJElOU1RBTExfUFJPR1JBTSVnCi0rcyVASU5TVEFMTF9TQ1JJUFRAJSRJTlNUQUxMX1NDUklQVCVnCi0rcyVASU5TVEFMTF9EQVRBQCUkSU5TVEFMTF9EQVRBJWcKLStzJUBBUkAlJEFSJWcKLStzJUBUQVJHRVRfT1NAJSRUQVJHRVRfT1MlZwotK3MlQFRBUkdFVF9DUFVAJSRUQVJHRVRfQ1BVJWcKLStzJUBNNjhLQ0NAJSRNNjhLQ0MlZwotK3MlQExFWERFRlNAJSRMRVhERUZTJWcKLStzJUBWT1hERUZTQCUkVk9YREVGUyVnCi0rcyVASE9TVF9PU0AlJEhPU1RfT1MlZwotK3MlQEhPU1RfQ1BVQCUkSE9TVF9DUFUlZwotK3MlQE9USEVSTElCU0AlJE9USEVSTElCUyVnCi0rcyVAU0hGTEFHU0AlJFNIRkxBR1MlZwotK3MlQE1NQVBUWVBFQCUkTU1BUFRZUEUlZwotK3MlQFNURElPVFlQRUAlJFNURElPVFlQRSVnCi0rcyVAQ1BQQCUkQ1BQJWcKLStzJUBBVURJT0RSSVZFUkAlJEFVRElPRFJJVkVSJWcKLStzJUBBVURJT0RFRlNAJSRBVURJT0RFRlMlZwotK3MlQEFVRElPTElCU0AlJEFVRElPTElCUyVnCi0rcyVARkxfTEFOR0AlJEZMX0xBTkclZwotK3MlQEZMX1ZPWEAlJEZMX1ZPWCVnCi0rcyVARkxfTEVYQCUkRkxfTEVYJWcKLStzJUBFWEVFWFRAJSRFWEVFWFQlZwotIAotLSMgTmFtZSBvZiB0aGUgZXhlY3V0YWJsZS4KLS1hc19tZT1gJGFzX2Jhc2VuYW1lICIkMCIgfHwKLS0kYXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAotLQkgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwKLS0JIFgiJDAiIDogJ1hcKC9cKSQnIFx8IFwKLS0JIC4gICAgIDogJ1woLlwpJyAyPi9kZXYvbnVsbCB8fAotLWVjaG8gWC8iJDAiIHwKLS0gICAgc2VkICcvXi4qXC9cKFteL11bXi9dKlwpXC8qJC97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXC9cKFwvXC9cKSQveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwvXChcL1wpLioveyBzLy9cMS87IHE7IH0KLS0gIAkgIHMvLiovLi87IHEnYAotK0NFT0YKLStFT0YKLSAKLStjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxcRU9GCi0gCi0tIyBQQVRIIG5lZWRzIENSLCBhbmQgTElORU5PIG5lZWRzIENSIGFuZCBQQVRILgotLSMgQXZvaWQgZGVwZW5kaW5nIHVwb24gQ2hhcmFjdGVyIFJhbmdlcy4KLS1hc19jcl9sZXR0ZXJzPSdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKLS1hc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKLS1hc19jcl9MZXR0ZXJzPSRhc19jcl9sZXR0ZXJzJGFzX2NyX0xFVFRFUlMKLS1hc19jcl9kaWdpdHM9JzAxMjM0NTY3ODknCi0tYXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzCi0tCi0tIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCi0taWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KLS0gIGVjaG8gIiMhIC9iaW4vc2giID5jb25mJCQuc2gKLS0gIGVjaG8gICJleGl0IDAiICAgPj5jb25mJCQuc2gKLS0gIGNobW9kICt4IGNvbmYkJC5zaAotLSAgaWYgKFBBVEg9Ii9ub25leGlzdGVudDsuIjsgY29uZiQkLnNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gICAgUEFUSF9TRVBBUkFUT1I9JzsnCi0rIyBTcGxpdCB0aGUgc3Vic3RpdHV0aW9ucyBpbnRvIGJpdGUtc2l6ZWQgcGllY2VzIGZvciBzZWRzIHdpdGgKLSsjIHNtYWxsIGNvbW1hbmQgbnVtYmVyIGxpbWl0cywgbGlrZSBvbiBEaWdpdGFsIE9TRi8xIGFuZCBIUC1VWC4KLSthY19tYXhfc2VkX2NtZHM9OTAgIyBNYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBwdXQgaW4gYSBzZWQgc2NyaXB0LgotK2FjX2ZpbGU9MSAjIE51bWJlciBvZiBjdXJyZW50IGZpbGUuCi0rYWNfYmVnPTEgIyBGaXJzdCBsaW5lIGZvciBjdXJyZW50IGZpbGUuCi0rYWNfZW5kPSRhY19tYXhfc2VkX2NtZHMgIyBMaW5lIGFmdGVyIGxhc3QgbGluZSBmb3IgY3VycmVudCBmaWxlLgotK2FjX21vcmVfbGluZXM9OgotK2FjX3NlZF9jbWRzPSIiCi0rd2hpbGUgJGFjX21vcmVfbGluZXM7IGRvCi0rICBpZiB0ZXN0ICRhY19iZWcgLWd0IDE7IHRoZW4KLSsgICAgc2VkICIxLCR7YWNfYmVnfWQ7ICR7YWNfZW5kfXEiIGNvbmZ0ZXN0LnN1YnMgPiBjb25mdGVzdC5zJGFjX2ZpbGUKLSAgIGVsc2UKLS0gICAgUEFUSF9TRVBBUkFUT1I9OgotKyAgICBzZWQgIiR7YWNfZW5kfXEiIGNvbmZ0ZXN0LnN1YnMgPiBjb25mdGVzdC5zJGFjX2ZpbGUKLSAgIGZpCi0tICBybSAtZiBjb25mJCQuc2gKLS1maQotLQotLQotLSAgYXNfbGluZW5vXzE9JExJTkVOTwotLSAgYXNfbGluZW5vXzI9JExJTkVOTwotLSAgYXNfbGluZW5vXzM9YChleHByICRhc19saW5lbm9fMSArIDEpIDI+L2Rldi9udWxsYAotLSAgdGVzdCAieCRhc19saW5lbm9fMSIgIT0gIngkYXNfbGluZW5vXzIiICYmCi0tICB0ZXN0ICJ4JGFzX2xpbmVub18zIiAgPSAieCRhc19saW5lbm9fMiIgIHx8IHsKLS0gICMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIHBhdGggYXQgYWxsCi0tICAjIHJlbGF0aXZlIG9yIG5vdC4KLS0gIGNhc2UgJDAgaW4KLS0gICAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7OwotLSAgICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgdGVzdCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsKLS1kb25lCi0tCi0tICAgICAgIDs7Ci0tICBlc2FjCi0tICAjIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnCi0tICAjIGluIHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4KLS0gIGlmIHRlc3QgIngkYXNfbXlzZWxmIiA9IHg7IHRoZW4KLS0gICAgYXNfbXlzZWxmPSQwCi0tICBmaQotLSAgaWYgdGVzdCAhIC1mICIkYXNfbXlzZWxmIjsgdGhlbgotLSAgICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgZmluZCBteXNlbGY7IHJlcnVuIHdpdGggYW4gYWJzb2x1dGUgcGF0aCIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIHBhdGgiID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICBmaQotLSAgY2FzZSAkQ09ORklHX1NIRUxMIGluCi0tICAnJykKLS0gICAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotLWZvciBhc19kaXIgaW4gL2JpbiRQQVRIX1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgKLS1kbwotLSAgSUZTPSRhc19zYXZlX0lGUwotLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLS0gIGZvciBhc19iYXNlIGluIHNoIGJhc2gga3NoIHNoNTsgZG8KLS0JIGNhc2UgJGFzX2RpciBpbgotLQkgLyopCi0tCSAgIGlmICgiJGFzX2Rpci8kYXNfYmFzZSIgLWMgJwotLSAgYXNfbGluZW5vXzE9JExJTkVOTwotLSAgYXNfbGluZW5vXzI9JExJTkVOTwotLSAgYXNfbGluZW5vXzM9YChleHByICRhc19saW5lbm9fMSArIDEpIDI+L2Rldi9udWxsYAotLSAgdGVzdCAieCRhc19saW5lbm9fMSIgIT0gIngkYXNfbGluZW5vXzIiICYmCi0tICB0ZXN0ICJ4JGFzX2xpbmVub18zIiAgPSAieCRhc19saW5lbm9fMiIgJykgMj4vZGV2L251bGw7IHRoZW4KLS0JICAgICAkYXNfdW5zZXQgQkFTSF9FTlYgfHwgdGVzdCAiJHtCQVNIX0VOVitzZXR9IiAhPSBzZXQgfHwgeyBCQVNIX0VOVj07IGV4cG9ydCBCQVNIX0VOVjsgfQotLQkgICAgICRhc191bnNldCBFTlYgfHwgdGVzdCAiJHtFTlYrc2V0fSIgIT0gc2V0IHx8IHsgRU5WPTsgZXhwb3J0IEVOVjsgfQotLQkgICAgIENPTkZJR19TSEVMTD0kYXNfZGlyLyRhc19iYXNlCi0tCSAgICAgZXhwb3J0IENPTkZJR19TSEVMTAotLQkgICAgIGV4ZWMgIiRDT05GSUdfU0hFTEwiICIkMCIgJHsxKyIkQCJ9Ci0tCSAgIGZpOzsKLS0JIGVzYWMKLS0gICAgICAgZG9uZQotLWRvbmUKLS07OwotLSAgZXNhYwotLQotLSAgIyBDcmVhdGUgJGFzX21lLmxpbmVubyBhcyBhIGNvcHkgb2YgJGFzX215c2VsZiwgYnV0IHdpdGggJExJTkVOTwotLSAgIyB1bmlmb3JtbHkgcmVwbGFjZWQgYnkgdGhlIGxpbmUgbnVtYmVyLiAgVGhlIGZpcnN0ICdzZWQnIGluc2VydHMgYQotLSAgIyBsaW5lLW51bWJlciBsaW5lIGJlZm9yZSBlYWNoIGxpbmU7IHRoZSBzZWNvbmQgJ3NlZCcgZG9lcyB0aGUgcmVhbAotLSAgIyB3b3JrLiAgVGhlIHNlY29uZCBzY3JpcHQgdXNlcyAnTicgdG8gcGFpciBlYWNoIGxpbmUtbnVtYmVyIGxpbmUKLS0gICMgd2l0aCB0aGUgbnVtYmVyZWQgbGluZSwgYW5kIGFwcGVuZHMgdHJhaWxpbmcgJy0nIGR1cmluZwotLSAgIyBzdWJzdGl0dXRpb24gc28gdGhhdCAkTElORU5PIGlzIG5vdCBhIHNwZWNpYWwgY2FzZSBhdCBsaW5lIGVuZC4KLS0gICMgKFJhamEgUiBIYXJpbmF0aCBzdWdnZXN0ZWQgc2VkICc9JywgYW5kIFBhdWwgRWdnZXJ0IHdyb3RlIHRoZQotLSAgIyBzZWNvbmQgJ3NlZCcgc2NyaXB0LiAgQmxhbWUgTGVlIEUuIE1jTWFob24gZm9yIHNlZCdzIHN5bnRheC4gIDotKQotLSAgc2VkICc9JyA8JGFzX215c2VsZiB8Ci0tICAgIHNlZCAnCi0tICAgICAgTgotLSAgICAgIHMsJCwtLAotLSAgICAgIDogbG9vcAotLSAgICAgIHMsXlwoWyckYXNfY3JfZGlnaXRzJ10qXClcKC4qXClbJF1MSU5FTk9cKFteJyRhc19jcl9hbG51bSdfXVwpLFwxXDJcMVwzLAotLSAgICAgIHQgbG9vcAotLSAgICAgIHMsLSQsLAotLSAgICAgIHMsXlsnJGFzX2NyX2RpZ2l0cyddKlxuLCwKLS0gICAgJyA+JGFzX21lLmxpbmVubyAmJgotLSAgY2htb2QgK3ggJGFzX21lLmxpbmVubyB8fAotLSAgICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgY3JlYXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSAkYXNfbWUubGluZW5vOyByZXJ1biB3aXRoIGEgUE9TSVggc2hlbGwiID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tCi0tICAjIERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5nZXMgJFswXSwgY2F1c2luZyBhbGwgc29ydCBvZiBwcm9ibGVtcwotLSAgIyAodGhlIGRpcm5hbWUgb2YgJFswXSBpcyBub3QgdGhlIHBsYWNlIHdoZXJlIHdlIG1pZ2h0IGZpbmQgdGhlCi0tICAjIG9yaWdpbmFsIGFuZCBzbyBvbi4gIEF1dG9jb25mIGlzIGVzcGVjaWFsbHkgc2Vuc2libGUgdG8gdGhpcykuCi0tICAuIC4vJGFzX21lLmxpbmVubwotLSAgIyBFeGl0IHN0YXR1cyBpcyB0aGF0IG9mIHRoZSBsYXN0IGNvbW1hbmQuCi0tICBleGl0Ci0tfQotLQotLQotLWNhc2UgYGVjaG8gInRlc3RpbmdcYyI7IGVjaG8gMSwyLDNgLGBlY2hvIC1uIHRlc3Rpbmc7IGVjaG8gMSwyLDNgIGluCi0tICAqYyosLW4qKSBFQ0hPX049IEVDSE9fQz0nCi0tJyBFQ0hPX1Q9JwknIDs7Ci0tICAqYyosKiAgKSBFQ0hPX049LW4gRUNIT19DPSBFQ0hPX1Q9IDs7Ci0tICAqKSAgICAgICBFQ0hPX049IEVDSE9fQz0nXGMnIEVDSE9fVD0gOzsKLS1lc2FjCi0tCi0taWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIGFzX2V4cHI9ZXhwcgotLWVsc2UKLS0gIGFzX2V4cHI9ZmFsc2UKLS1maQotLQotLXJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCi0tZWNobyA+Y29uZiQkLmZpbGUKLS1pZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KLS0gICMgV2UgY291bGQganVzdCBjaGVjayBmb3IgREpHUFA7IGJ1dCB0aGlzIHRlc3QgYSkgd29ya3MgYikgaXMgbW9yZSBnZW5lcmljCi0tICAjIGFuZCBjKSB3aWxsIHJlbWFpbiB2YWxpZCBvbmNlIERKR1BQIHN1cHBvcnRzIHN5bWxpbmtzIChESkdQUCAyLjA0KS4KLS0gIGlmIHRlc3QgLWYgY29uZiQkLmV4ZTsgdGhlbgotLSAgICAjIERvbid0IHVzZSBsbiBhdCBhbGw7IHdlIGRvbid0IGhhdmUgYW55IGxpbmtzCi0tICAgIGFzX2xuX3M9J2NwIC1wJwotKyAgaWYgdGVzdCAhIC1zIGNvbmZ0ZXN0LnMkYWNfZmlsZTsgdGhlbgotKyAgICBhY19tb3JlX2xpbmVzPWZhbHNlCi0rICAgIHJtIC1mIGNvbmZ0ZXN0LnMkYWNfZmlsZQotICAgZWxzZQotLSAgICBhc19sbl9zPSdsbiAtcycKLSsgICAgaWYgdGVzdCAteiAiJGFjX3NlZF9jbWRzIjsgdGhlbgotKyAgICAgIGFjX3NlZF9jbWRzPSJzZWQgLWYgY29uZnRlc3QucyRhY19maWxlIgotKyAgICBlbHNlCi0rICAgICAgYWNfc2VkX2NtZHM9IiRhY19zZWRfY21kcyB8IHNlZCAtZiBjb25mdGVzdC5zJGFjX2ZpbGUiCi0rICAgIGZpCi0rICAgIGFjX2ZpbGU9YGV4cHIgJGFjX2ZpbGUgKyAxYAotKyAgICBhY19iZWc9JGFjX2VuZAotKyAgICBhY19lbmQ9YGV4cHIgJGFjX2VuZCArICRhY19tYXhfc2VkX2NtZHNgCi0gICBmaQotLWVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCi0tICBhc19sbl9zPWxuCi0tZWxzZQotLSAgYXNfbG5fcz0nY3AgLXAnCi0tZmkKLS1ybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZmlsZQotLQotLWlmIG1rZGlyIC1wIC4gMj4vZGV2L251bGw7IHRoZW4KLS0gIGFzX21rZGlyX3A9OgotLWVsc2UKLS0gIGFzX21rZGlyX3A9ZmFsc2UKLS1maQotLQotLWFzX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKLS0KLS0jIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuCi0tYXNfdHJfY3BwPSJzZWQgeSUqJGFzX2NyX2xldHRlcnMlUCRhc19jcl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnIgotLQotLSMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgotLWFzX3RyX3NoPSJzZWQgeSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyIKLS0KLS0KLS0jIElGUwotLSMgV2UgbmVlZCBzcGFjZSwgdGFiIGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRoYXQgb3JkZXIuCi0tYXNfbmw9JwotLScKLS1JRlM9IiAJJGFzX25sIgotLQotLSMgQ0RQQVRILgotLSRhc191bnNldCBDRFBBVEgKLS0KLS1leGVjIDY+JjEKLS0KLS0jIE9wZW4gdGhlIGxvZyByZWFsIHNvb24sIHRvIGtlZXAgXCRbMF0gYW5kIHNvIG9uIG1lYW5pbmdmdWwsIGFuZCB0bwotLSMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgotLSMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuICBMb2dnaW5nIC0tdmVyc2lvbiBldGMuIGlzIE9LLgotLWV4ZWMgNT4+Y29uZmlnLmxvZwotLXsKLS0gIGVjaG8KLS0gIHNlZCAnaDtzLy4vLS9nO3MvXi4uLi8jIyAvO3MvLi4uJC8gIyMvO3A7eDtwO3gnIDw8X0FTQk9YCi0tIyMgUnVubmluZyAkYXNfbWUuICMjCi0tX0FTQk9YCi0tfSA+JjUKLS1jYXQgPiY1IDw8X0NTRU9GCi0tCi0tVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSAkYXNfbWUsIHdoaWNoIHdhcwotLWdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi41Ny4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwotLQotLSAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwotLSAgQ09ORklHX0hFQURFUlMgID0gJENPTkZJR19IRUFERVJTCi0tICBDT05GSUdfTElOS1MgICAgPSAkQ09ORklHX0xJTktTCi0tICBDT05GSUdfQ09NTUFORFMgPSAkQ09ORklHX0NPTU1BTkRTCi0tICAkICQwICRACi0tCi0tX0NTRU9GCi0tZWNobyAib24gYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgIiA+JjUKLS1lY2hvID4mNQotLV9BQ0VPRgotLQotLSMgRmlsZXMgdGhhdCBjb25maWcuc3RhdHVzIHdhcyBtYWRlIGZvci4KLS1pZiB0ZXN0IC1uICIkYWNfY29uZmlnX2ZpbGVzIjsgdGhlbgotLSAgZWNobyAiY29uZmlnX2ZpbGVzPVwiJGFjX2NvbmZpZ19maWxlc1wiIiA+PiRDT05GSUdfU1RBVFVTCi0tZmkKLS0KLS1pZiB0ZXN0IC1uICIkYWNfY29uZmlnX2hlYWRlcnMiOyB0aGVuCi0tICBlY2hvICJjb25maWdfaGVhZGVycz1cIiRhY19jb25maWdfaGVhZGVyc1wiIiA+PiRDT05GSUdfU1RBVFVTCi0tZmkKLS0KLS1pZiB0ZXN0IC1uICIkYWNfY29uZmlnX2xpbmtzIjsgdGhlbgotLSAgZWNobyAiY29uZmlnX2xpbmtzPVwiJGFjX2NvbmZpZ19saW5rc1wiIiA+PiRDT05GSUdfU1RBVFVTCi0tZmkKLS0KLS1pZiB0ZXN0IC1uICIkYWNfY29uZmlnX2NvbW1hbmRzIjsgdGhlbgotLSAgZWNobyAiY29uZmlnX2NvbW1hbmRzPVwiJGFjX2NvbmZpZ19jb21tYW5kc1wiIiA+PiRDT05GSUdfU1RBVFVTCi0tZmkKLS0KLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKLS0KLS1hY19jc191c2FnZT0iXAotLVxgJGFzX21lJyBpbnN0YW50aWF0ZXMgZmlsZXMgZnJvbSB0ZW1wbGF0ZXMgYWNjb3JkaW5nIHRvIHRoZQotLWN1cnJlbnQgY29uZmlndXJhdGlvbi4KLS0KLS1Vc2FnZTogJDAgW09QVElPTlNdIFtGSUxFXS4uLgotLQotLSAgLWgsIC0taGVscCAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAotLSAgLVYsIC0tdmVyc2lvbiAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0Ci0tICAtcSwgLS1xdWlldCAgICAgIGRvIG5vdCBwcmludCBwcm9ncmVzcyBtZXNzYWdlcwotLSAgLWQsIC0tZGVidWcgICAgICBkb24ndCByZW1vdmUgdGVtcG9yYXJ5IGZpbGVzCi0tICAgICAgLS1yZWNoZWNrICAgIHVwZGF0ZSAkYXNfbWUgYnkgcmVjb25maWd1cmluZyBpbiB0aGUgc2FtZSBjb25kaXRpb25zCi0tICAtLWZpbGU9RklMRVs6VEVNUExBVEVdCi0tICAgICAgICAgICAgICAgICAgIGluc3RhbnRpYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgRklMRQotLQotLUNvbmZpZ3VyYXRpb24gZmlsZXM6Ci0tJGNvbmZpZ19maWxlcwotLQotLVJlcG9ydCBidWdzIHRvIDxidWctYXV0b2NvbmZAZ251Lm9yZz4uIgotLV9BQ0VPRgotLQotLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GCi0tYWNfY3NfdmVyc2lvbj0iXFwKLS1jb25maWcuc3RhdHVzCi0tY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjU3LAotLSAgd2l0aCBvcHRpb25zIFxcImBlY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL1tcXCIiXGBcJF0vXFxcXCYvZydgXFwiCi0tCi0tQ29weXJpZ2h0IDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEKLS1GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS1UaGlzIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLS1naXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgotLXNyY2Rpcj0kc3JjZGlyCi0tSU5TVEFMTD0iJElOU1RBTEwiCi0tX0FDRU9GCi0tCi0tY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GCi0tIyBJZiBubyBmaWxlIGFyZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIHRoZW4gd2UgbmVlZCB0byBwcm92aWRlIGRlZmF1bHQKLS0jIHZhbHVlLiAgQnkgd2UgbmVlZCB0byBrbm93IGlmIGZpbGVzIHdlcmUgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLgotLWFjX25lZWRfZGVmYXVsdHM9OgotLXdoaWxlIHRlc3QgJCMgIT0gMAotLWRvCi0tICBjYXNlICQxIGluCi0tICAtLSo9KikKLS0gICAgYWNfb3B0aW9uPWBleHByICJ4JDEiIDogJ3hcKFtePV0qXCk9J2AKLS0gICAgYWNfb3B0YXJnPWBleHByICJ4JDEiIDogJ3hbXj1dKj1cKC4qXCknYAotLSAgICBhY19zaGlmdD06Ci0tICAgIDs7Ci0tICAtKikKLS0gICAgYWNfb3B0aW9uPSQxCi0tICAgIGFjX29wdGFyZz0kMgotLSAgICBhY19zaGlmdD1zaGlmdAotLSAgICA7OwotLSAgKikgIyBUaGlzIGlzIG5vdCBhbiBvcHRpb24sIHNvIHRoZSB1c2VyIGhhcyBwcm9iYWJseSBnaXZlbiBleHBsaWNpdAotLSAgICAgIyBhcmd1bWVudHMuCi0tICAgICBhY19vcHRpb249JDEKLS0gICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OwotLSAgZXNhYwotLQotLSAgY2FzZSAkYWNfb3B0aW9uIGluCi0tICAjIEhhbmRsaW5nIG9mIHRoZSBvcHRpb25zLgotLV9BQ0VPRgotLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRgotLSAgLXJlY2hlY2sgfCAtLXJlY2hlY2sgfCAtLXJlY2hlYyB8IC0tcmVjaGUgfCAtLXJlY2ggfCAtLXJlYyB8IC0tcmUgfCAtLXIpCi0tICAgIGFjX2NzX3JlY2hlY2s9OiA7OwotLSAgLS12ZXJzaW9uIHwgLS12ZXJzKiB8IC1WICkKLS0gICAgZWNobyAiJGFjX2NzX3ZlcnNpb24iOyBleGl0IDAgOzsKLS0gIC0taGUgfCAtLWgpCi0tICAgICMgQ29uZmxpY3QgYmV0d2VlbiAtLWhlbHAgYW5kIC0taGVhZGVyCi0tICAgIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGFtYmlndW91cyBvcHRpb246ICQxCi0tVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGFtYmlndW91cyBvcHRpb246ICQxCi0tVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9OzsKLS0gIC0taGVscCB8IC0taGVsIHwgLWggKQotLSAgICBlY2hvICIkYWNfY3NfdXNhZ2UiOyBleGl0IDAgOzsKLS0gIC0tZGVidWcgfCAtLWQqIHwgLWQgKQotLSAgICBkZWJ1Zz06IDs7Ci0tICAtLWZpbGUgfCAtLWZpbCB8IC0tZmkgfCAtLWYgKQotLSAgICAkYWNfc2hpZnQKLS0gICAgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTICRhY19vcHRhcmciCi0tICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OwotLSAgLS1oZWFkZXIgfCAtLWhlYWRlIHwgLS1oZWFkIHwgLS1oZWEgKQotLSAgICAkYWNfc2hpZnQKLS0gICAgQ09ORklHX0hFQURFUlM9IiRDT05GSUdfSEVBREVSUyAkYWNfb3B0YXJnIgotLSAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlOzsKLS0gIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCi0tICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCB8IC0tc2kgfCAtLXMpCi0tICAgIGFjX2NzX3NpbGVudD06IDs7Ci0tCi0tICAjIFRoaXMgaXMgYW4gZXJyb3IuCi0tICAtKikgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogdW5yZWNvZ25pemVkIG9wdGlvbjogJDEKLS1UcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogdW5yZWNvZ25pemVkIG9wdGlvbjogJDEKLS1UcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0gOzsKLS0KLS0gICopIGFjX2NvbmZpZ190YXJnZXRzPSIkYWNfY29uZmlnX3RhcmdldHMgJDEiIDs7Ci0tCi0tICBlc2FjCi0tICBzaGlmdAotIGRvbmUKLS0KLS1hY19jb25maWd1cmVfZXh0cmFfYXJncz0KLS0KLS1pZiAkYWNfY3Nfc2lsZW50OyB0aGVuCi0tICBleGVjIDY+L2Rldi9udWxsCi0tICBhY19jb25maWd1cmVfZXh0cmFfYXJncz0iJGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzIC0tc2lsZW50IgotK2lmIHRlc3QgLXogIiRhY19zZWRfY21kcyI7IHRoZW4KLSsgIGFjX3NlZF9jbWRzPWNhdAotIGZpCi0rRU9GCi0gCi0tX0FDRU9GCi0tY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YKLS1pZiBcJGFjX2NzX3JlY2hlY2s7IHRoZW4KLS0gIGVjaG8gInJ1bm5pbmcgJFNIRUxMICQwICIgJGFjX2NvbmZpZ3VyZV9hcmdzIFwkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgIiAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbiIgPiY2Ci0tICBleGVjICRTSEVMTCAkMCAkYWNfY29uZmlndXJlX2FyZ3MgXCRhY19jb25maWd1cmVfZXh0cmFfYXJncyAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbgotLWZpCi0rY2F0ID4+ICRDT05GSUdfU1RBVFVTIDw8RU9GCi0gCi0tX0FDRU9GCi0tCi0tCi0tCi0tCi0tCi0tY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GCi0tZm9yIGFjX2NvbmZpZ190YXJnZXQgaW4gJGFjX2NvbmZpZ190YXJnZXRzCi0tZG8KLS0gIGNhc2UgIiRhY19jb25maWdfdGFyZ2V0IiBpbgotLSAgIyBIYW5kbGluZyBvZiBhcmd1bWVudHMuCi0tICAiY29uZmlnL2NvbmZpZyIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgY29uZmlnL2NvbmZpZyIgOzsKLS0gICJjb25maWcvc3lzdGVtLm1hayIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgY29uZmlnL3N5c3RlbS5tYWsiIDs7Ci0tICAqKSB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBpbnZhbGlkIGFyZ3VtZW50OiAkYWNfY29uZmlnX3RhcmdldCIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBhcmd1bWVudDogJGFjX2NvbmZpZ190YXJnZXQiID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9OzsKLStDT05GSUdfRklMRVM9XCR7Q09ORklHX0ZJTEVTLSJjb25maWcvY29uZmlnIGNvbmZpZy9zeXN0ZW0ubWFrIn0KLStFT0YKLStjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxcRU9GCi0rZm9yIGFjX2ZpbGUgaW4gLi4gJENPTkZJR19GSUxFUzsgZG8gaWYgdGVzdCAieCRhY19maWxlIiAhPSB4Li47IHRoZW4KLSsgICMgU3VwcG9ydCAib3V0ZmlsZVs6aW5maWxlWzppbmZpbGUuLi5dXSIsIGRlZmF1bHRpbmcgaW5maWxlPSJvdXRmaWxlLmluIi4KLSsgIGNhc2UgIiRhY19maWxlIiBpbgotKyAgKjoqKSBhY19maWxlX2luPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJVteOl0qOiUlJ2AKLSsgICAgICAgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyU6LiolJSdgIDs7Ci0rICAqKSBhY19maWxlX2luPSIke2FjX2ZpbGV9LmluIiA7OwotICAgZXNhYwotLWRvbmUKLSAKLS0jIElmIHRoZSB1c2VyIGRpZCBub3QgdXNlIHRoZSBhcmd1bWVudHMgdG8gc3BlY2lmeSB0aGUgaXRlbXMgdG8gaW5zdGFudGlhdGUsCi0tIyB0aGVuIHRoZSBlbnZ2YXIgaW50ZXJmYWNlIGlzIHVzZWQuICBTZXQgb25seSB0aG9zZSB0aGF0IGFyZSBub3QuCi0tIyBXZSB1c2UgdGhlIGxvbmcgZm9ybSBmb3IgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBiZWNhdXNlIG9mIGFuIGV4dHJlbWVseQotLSMgYml6YXJyZSBidWcgb24gU3VuT1MgNC4xLjMuCi0taWYgJGFjX25lZWRfZGVmYXVsdHM7IHRoZW4KLS0gIHRlc3QgIiR7Q09ORklHX0ZJTEVTK3NldH0iID0gc2V0IHx8IENPTkZJR19GSUxFUz0kY29uZmlnX2ZpbGVzCi0tZmkKLSsgICMgQWRqdXN0IGEgcmVsYXRpdmUgc3JjZGlyLCB0b3Bfc3JjZGlyLCBhbmQgSU5TVEFMTCBmb3Igc3ViZGlyZWN0b3JpZXMuCi0gCi0tIyBIYXZlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3IgY29udmVuaWVuY2UuICBNYWtlIGl0IGluIHRoZSBidWlsZCB0cmVlCi0tIyBzaW1wbHkgYmVjYXVzZSB0aGVyZSBpcyBubyByZWFzb24gdG8gcHV0IGl0IGhlcmUsIGFuZCBpbiBhZGRpdGlvbiwKLS0jIGNyZWF0aW5nIGFuZCBtb3ZpbmcgZmlsZXMgZnJvbSAvdG1wIGNhbiBzb21ldGltZXMgY2F1c2UgcHJvYmxlbXMuCi0tIyBDcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LCBhbmQgaG9vayBmb3IgaXRzIHJlbW92YWwgdW5sZXNzIGRlYnVnZ2luZy4KLS0kZGVidWcgfHwKLS17Ci0tICB0cmFwICdleGl0X3N0YXR1cz0kPzsgcm0gLXJmICR0bXAgJiYgZXhpdCAkZXhpdF9zdGF0dXMnIDAKLS0gIHRyYXAgJ3sgKGV4aXQgMSk7IGV4aXQgMTsgfScgMSAyIDEzIDE1Ci0tfQotLQotLSMgQ3JlYXRlIGEgKHNlY3VyZSkgdG1wIGRpcmVjdG9yeSBmb3IgdG1wIGZpbGVzLgotLQotLXsKLS0gIHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgLXEgIi4vY29uZnN0YXRYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYKLS0gIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiCi0tfSAgfHwKLS17Ci0tICB0bXA9Li9jb25mc3RhdCQkLSRSQU5ET00KLS0gICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkKLS19IHx8Ci0tewotLSAgIGVjaG8gIiRtZTogY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gLiIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9Ci0tfQotLQotLV9BQ0VPRgotLQotLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GCi0tCi0tIwotLSMgQ09ORklHX0ZJTEVTIHNlY3Rpb24uCi0tIwotLQotLSMgTm8gbmVlZCB0byBnZW5lcmF0ZSB0aGUgc2NyaXB0cyBpZiB0aGVyZSBhcmUgbm8gQ09ORklHX0ZJTEVTLgotLSMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aGVuIC4vY29uZmlnLnN0YXR1cyBjb25maWcuaAotLWlmIHRlc3QgLW4gIlwkQ09ORklHX0ZJTEVTIjsgdGhlbgotLSAgIyBQcm90ZWN0IGFnYWluc3QgYmVpbmcgb24gdGhlIHJpZ2h0IHNpZGUgb2YgYSBzZWQgc3Vic3QgaW4gY29uZmlnLnN0YXR1cy4KLS0gIHNlZCAncy8sQC9AQC87IHMvQCwvQEAvOyBzLyw7dCB0XCQvQDt0IHQvOyAvQDt0IHRcJC9zL1tcXFxcJixdL1xcXFwmL2c7Ci0tICAgcy9AQC8sQC87IHMvQEAvQCwvOyBzL0A7dCB0XCQvLDt0IHQvJyA+XCR0bXAvc3Vicy5zZWQgPDxcXENFT0YKLS1zLEBTSEVMTEAsJFNIRUxMLDt0IHQKLS1zLEBQQVRIX1NFUEFSQVRPUkAsJFBBVEhfU0VQQVJBVE9SLDt0IHQKLS1zLEBQQUNLQUdFX05BTUVALCRQQUNLQUdFX05BTUUsO3QgdAotLXMsQFBBQ0tBR0VfVEFSTkFNRUAsJFBBQ0tBR0VfVEFSTkFNRSw7dCB0Ci0tcyxAUEFDS0FHRV9WRVJTSU9OQCwkUEFDS0FHRV9WRVJTSU9OLDt0IHQKLS1zLEBQQUNLQUdFX1NUUklOR0AsJFBBQ0tBR0VfU1RSSU5HLDt0IHQKLS1zLEBQQUNLQUdFX0JVR1JFUE9SVEAsJFBBQ0tBR0VfQlVHUkVQT1JULDt0IHQKLS1zLEBleGVjX3ByZWZpeEAsJGV4ZWNfcHJlZml4LDt0IHQKLS1zLEBwcmVmaXhALCRwcmVmaXgsO3QgdAotLXMsQHByb2dyYW1fdHJhbnNmb3JtX25hbWVALCRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lLDt0IHQKLS1zLEBiaW5kaXJALCRiaW5kaXIsO3QgdAotLXMsQHNiaW5kaXJALCRzYmluZGlyLDt0IHQKLS1zLEBsaWJleGVjZGlyQCwkbGliZXhlY2Rpciw7dCB0Ci0tcyxAZGF0YWRpckAsJGRhdGFkaXIsO3QgdAotLXMsQHN5c2NvbmZkaXJALCRzeXNjb25mZGlyLDt0IHQKLS1zLEBzaGFyZWRzdGF0ZWRpckAsJHNoYXJlZHN0YXRlZGlyLDt0IHQKLS1zLEBsb2NhbHN0YXRlZGlyQCwkbG9jYWxzdGF0ZWRpciw7dCB0Ci0tcyxAbGliZGlyQCwkbGliZGlyLDt0IHQKLS1zLEBpbmNsdWRlZGlyQCwkaW5jbHVkZWRpciw7dCB0Ci0tcyxAb2xkaW5jbHVkZWRpckAsJG9sZGluY2x1ZGVkaXIsO3QgdAotLXMsQGluZm9kaXJALCRpbmZvZGlyLDt0IHQKLS1zLEBtYW5kaXJALCRtYW5kaXIsO3QgdAotLXMsQGJ1aWxkX2FsaWFzQCwkYnVpbGRfYWxpYXMsO3QgdAotLXMsQGhvc3RfYWxpYXNALCRob3N0X2FsaWFzLDt0IHQKLS1zLEB0YXJnZXRfYWxpYXNALCR0YXJnZXRfYWxpYXMsO3QgdAotLXMsQERFRlNALCRERUZTLDt0IHQKLS1zLEBFQ0hPX0NALCRFQ0hPX0MsO3QgdAotLXMsQEVDSE9fTkAsJEVDSE9fTiw7dCB0Ci0tcyxARUNIT19UQCwkRUNIT19ULDt0IHQKLS1zLEBMSUJTQCwkTElCUyw7dCB0Ci0tcyxAYnVpbGRALCRidWlsZCw7dCB0Ci0tcyxAYnVpbGRfY3B1QCwkYnVpbGRfY3B1LDt0IHQKLS1zLEBidWlsZF92ZW5kb3JALCRidWlsZF92ZW5kb3IsO3QgdAotLXMsQGJ1aWxkX29zQCwkYnVpbGRfb3MsO3QgdAotLXMsQGhvc3RALCRob3N0LDt0IHQKLS1zLEBob3N0X2NwdUAsJGhvc3RfY3B1LDt0IHQKLS1zLEBob3N0X3ZlbmRvckAsJGhvc3RfdmVuZG9yLDt0IHQKLS1zLEBob3N0X29zQCwkaG9zdF9vcyw7dCB0Ci0tcyxAdGFyZ2V0QCwkdGFyZ2V0LDt0IHQKLS1zLEB0YXJnZXRfY3B1QCwkdGFyZ2V0X2NwdSw7dCB0Ci0tcyxAdGFyZ2V0X3ZlbmRvckAsJHRhcmdldF92ZW5kb3IsO3QgdAotLXMsQHRhcmdldF9vc0AsJHRhcmdldF9vcyw7dCB0Ci0tcyxAQ0NALCRDQyw7dCB0Ci0tcyxAQ0ZMQUdTQCwkQ0ZMQUdTLDt0IHQKLS1zLEBMREZMQUdTQCwkTERGTEFHUyw7dCB0Ci0tcyxAQ1BQRkxBR1NALCRDUFBGTEFHUyw7dCB0Ci0tcyxAYWNfY3RfQ0NALCRhY19jdF9DQyw7dCB0Ci0tcyxARVhFRVhUQCwkRVhFRVhULDt0IHQKLS1zLEBPQkpFWFRALCRPQkpFWFQsO3QgdAotLXMsQFJBTkxJQkAsJFJBTkxJQiw7dCB0Ci0tcyxAYWNfY3RfUkFOTElCQCwkYWNfY3RfUkFOTElCLDt0IHQKLS1zLEBJTlNUQUxMX1BST0dSQU1ALCRJTlNUQUxMX1BST0dSQU0sO3QgdAotLXMsQElOU1RBTExfU0NSSVBUQCwkSU5TVEFMTF9TQ1JJUFQsO3QgdAotLXMsQElOU1RBTExfREFUQUAsJElOU1RBTExfREFUQSw7dCB0Ci0tcyxAQVJALCRBUiw7dCB0Ci0tcyxAYWNfY3RfQVJALCRhY19jdF9BUiw7dCB0Ci0tcyxAVEFSR0VUX09TQCwkVEFSR0VUX09TLDt0IHQKLS1zLEBUQVJHRVRfQ1BVQCwkVEFSR0VUX0NQVSw7dCB0Ci0tcyxATTY4S0NDQCwkTTY4S0NDLDt0IHQKLS1zLEBMRVhERUZTQCwkTEVYREVGUyw7dCB0Ci0tcyxAVk9YREVGU0AsJFZPWERFRlMsO3QgdAotLXMsQEhPU1RfT1NALCRIT1NUX09TLDt0IHQKLS1zLEBIT1NUX0NQVUAsJEhPU1RfQ1BVLDt0IHQKLS1zLEBPVEhFUkxJQlNALCRPVEhFUkxJQlMsO3QgdAotLXMsQFNIRkxBR1NALCRTSEZMQUdTLDt0IHQKLS1zLEBNTUFQVFlQRUAsJE1NQVBUWVBFLDt0IHQKLS1zLEBTVERJT1RZUEVALCRTVERJT1RZUEUsO3QgdAotLXMsQENQUEAsJENQUCw7dCB0Ci0tcyxARUdSRVBALCRFR1JFUCw7dCB0Ci0tcyxAQVVESU9EUklWRVJALCRBVURJT0RSSVZFUiw7dCB0Ci0tcyxAQVVESU9ERUZTQCwkQVVESU9ERUZTLDt0IHQKLS1zLEBBVURJT0xJQlNALCRBVURJT0xJQlMsO3QgdAotLXMsQEZMX0xBTkdALCRGTF9MQU5HLDt0IHQKLS1zLEBGTF9WT1hALCRGTF9WT1gsO3QgdAotLXMsQEZMX0xFWEAsJEZMX0xFWCw7dCB0Ci0tcyxATElCT0JKU0AsJExJQk9CSlMsO3QgdAotLXMsQExUTElCT0JKU0AsJExUTElCT0JKUyw7dCB0Ci0tQ0VPRgotLQotLV9BQ0VPRgotLQotLSAgY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GCi0tICAjIFNwbGl0IHRoZSBzdWJzdGl0dXRpb25zIGludG8gYml0ZS1zaXplZCBwaWVjZXMgZm9yIHNlZHMgd2l0aAotLSAgIyBzbWFsbCBjb21tYW5kIG51bWJlciBsaW1pdHMsIGxpa2Ugb24gRGlnaXRhbCBPU0YvMSBhbmQgSFAtVVguCi0tICBhY19tYXhfc2VkX2xpbmVzPTQ4Ci0tICBhY19zZWRfZnJhZz0xICMgTnVtYmVyIG9mIGN1cnJlbnQgZmlsZS4KLS0gIGFjX2JlZz0xICMgRmlyc3QgbGluZSBmb3IgY3VycmVudCBmaWxlLgotLSAgYWNfZW5kPSRhY19tYXhfc2VkX2xpbmVzICMgTGluZSBhZnRlciBsYXN0IGxpbmUgZm9yIGN1cnJlbnQgZmlsZS4KLS0gIGFjX21vcmVfbGluZXM9OgotLSAgYWNfc2VkX2NtZHM9Ci0tICB3aGlsZSAkYWNfbW9yZV9saW5lczsgZG8KLS0gICAgaWYgdGVzdCAkYWNfYmVnIC1ndCAxOyB0aGVuCi0tICAgICAgc2VkICIxLCR7YWNfYmVnfWQ7ICR7YWNfZW5kfXEiICR0bXAvc3Vicy5zZWQgPiR0bXAvc3Vicy5mcmFnCi0tICAgIGVsc2UKLS0gICAgICBzZWQgIiR7YWNfZW5kfXEiICR0bXAvc3Vicy5zZWQgPiR0bXAvc3Vicy5mcmFnCi0tICAgIGZpCi0tICAgIGlmIHRlc3QgISAtcyAkdG1wL3N1YnMuZnJhZzsgdGhlbgotLSAgICAgIGFjX21vcmVfbGluZXM9ZmFsc2UKLS0gICAgZWxzZQotLSAgICAgICMgVGhlIHB1cnBvc2Ugb2YgdGhlIGxhYmVsIGFuZCBvZiB0aGUgYnJhbmNoaW5nIGNvbmRpdGlvbiBpcyB0bwotLSAgICAgICMgc3BlZWQgdXAgdGhlIHNlZCBwcm9jZXNzaW5nIChpZiB0aGVyZSBhcmUgbm8gYEAnIGF0IGFsbCwgdGhlcmUKLS0gICAgICAjIGlzIG5vIG5lZWQgdG8gYnJvd3NlIGFueSBvZiB0aGUgc3Vic3RpdHV0aW9ucykuCi0tICAgICAgIyBUaGVzZSBhcmUgdGhlIHR3byBleHRyYSBzZWQgY29tbWFuZHMgbWVudGlvbmVkIGFib3ZlLgotLSAgICAgIChlY2hvICc6dAotLSAgL0BbYS16QS1aX11bYS16QS1aXzAtOV0qQC8hYicgJiYgY2F0ICR0bXAvc3Vicy5mcmFnKSA+JHRtcC9zdWJzLSRhY19zZWRfZnJhZy5zZWQKLS0gICAgICBpZiB0ZXN0IC16ICIkYWNfc2VkX2NtZHMiOyB0aGVuCi0tICAJYWNfc2VkX2NtZHM9InNlZCAtZiAkdG1wL3N1YnMtJGFjX3NlZF9mcmFnLnNlZCIKLS0gICAgICBlbHNlCi0tICAJYWNfc2VkX2NtZHM9IiRhY19zZWRfY21kcyB8IHNlZCAtZiAkdG1wL3N1YnMtJGFjX3NlZF9mcmFnLnNlZCIKLS0gICAgICBmaQotLSAgICAgIGFjX3NlZF9mcmFnPWBleHByICRhY19zZWRfZnJhZyArIDFgCi0tICAgICAgYWNfYmVnPSRhY19lbmQKLS0gICAgICBhY19lbmQ9YGV4cHIgJGFjX2VuZCArICRhY19tYXhfc2VkX2xpbmVzYAotLSAgICBmaQotLSAgZG9uZQotLSAgaWYgdGVzdCAteiAiJGFjX3NlZF9jbWRzIjsgdGhlbgotLSAgICBhY19zZWRfY21kcz1jYXQKLSsgICMgUmVtb3ZlIGxhc3Qgc2xhc2ggYW5kIGFsbCB0aGF0IGZvbGxvd3MgaXQuICBOb3QgYWxsIHN5c3RlbXMgaGF2ZSBkaXJuYW1lLgotKyAgYWNfZGlyPWBlY2hvICRhY19maWxlfHNlZCAncyUvW14vXVteL10qJCUlJ2AKLSsgIGlmIHRlc3QgIiRhY19kaXIiICE9ICIkYWNfZmlsZSIgJiYgdGVzdCAiJGFjX2RpciIgIT0gLjsgdGhlbgotKyAgICAjIFRoZSBmaWxlIGlzIGluIGEgc3ViZGlyZWN0b3J5LgotKyAgICB0ZXN0ICEgLWQgIiRhY19kaXIiICYmIG1rZGlyICIkYWNfZGlyIgotKyAgICBhY19kaXJfc3VmZml4PSIvYGVjaG8gJGFjX2RpcnxzZWQgJ3MlXlwuLyUlJ2AiCi0rICAgICMgQSAiLi4vIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguCi0rICAgIGFjX2RvdHM9YGVjaG8gJGFjX2Rpcl9zdWZmaXh8c2VkICdzJS9bXi9dKiUuLi8lZydgCi0rICBlbHNlCi0rICAgIGFjX2Rpcl9zdWZmaXg9IGFjX2RvdHM9Ci0gICBmaQotLWZpICMgdGVzdCAtbiAiJENPTkZJR19GSUxFUyIKLSAKLS1fQUNFT0YKLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKLS1mb3IgYWNfZmlsZSBpbiA6ICRDT05GSUdfRklMRVM7IGRvIHRlc3QgIngkYWNfZmlsZSIgPSB4OiAmJiBjb250aW51ZQotLSAgIyBTdXBwb3J0ICJvdXRmaWxlWzppbmZpbGVbOmluZmlsZS4uLl1dIiwgZGVmYXVsdGluZyBpbmZpbGU9Im91dGZpbGUuaW4iLgotLSAgY2FzZSAkYWNfZmlsZSBpbgotLSAgLSB8ICo6LSB8ICo6LToqICkgIyBpbnB1dCBmcm9tIHN0ZGluCi0tICAgICAgICBjYXQgPiR0bXAvc3RkaW4KLS0gICAgICAgIGFjX2ZpbGVfaW49YGVjaG8gIiRhY19maWxlIiB8IHNlZCAncyxbXjpdKjosLCdgCi0tICAgICAgICBhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsOi4qLCwnYCA7OwotLSAgKjoqICkgYWNfZmlsZV9pbj1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKLS0gICAgICAgIGFjX2ZpbGU9YGVjaG8gIiRhY19maWxlIiB8IHNlZCAncyw6LiosLCdgIDs7Ci0tICAqICkgICBhY19maWxlX2luPSRhY19maWxlLmluIDs7Ci0rICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgotKyAgLikgIHNyY2Rpcj0uCi0rICAgICAgaWYgdGVzdCAteiAiJGFjX2RvdHMiOyB0aGVuIHRvcF9zcmNkaXI9LgotKyAgICAgIGVsc2UgdG9wX3NyY2Rpcj1gZWNobyAkYWNfZG90c3xzZWQgJ3MlLyQlJSdgOyBmaSA7OwotKyAgLyopIHNyY2Rpcj0iJGFjX2dpdmVuX3NyY2RpciRhY19kaXJfc3VmZml4IjsgdG9wX3NyY2Rpcj0iJGFjX2dpdmVuX3NyY2RpciIgOzsKLSsgICopICMgUmVsYXRpdmUgcGF0aC4KLSsgICAgc3JjZGlyPSIkYWNfZG90cyRhY19naXZlbl9zcmNkaXIkYWNfZGlyX3N1ZmZpeCIKLSsgICAgdG9wX3NyY2Rpcj0iJGFjX2RvdHMkYWNfZ2l2ZW5fc3JjZGlyIiA7OwotICAgZXNhYwotIAotLSAgIyBDb21wdXRlIEBzcmNkaXJALCBAdG9wX3NyY2RpckAsIGFuZCBASU5TVEFMTEAgZm9yIHN1YmRpcmVjdG9yaWVzLgotLSAgYWNfZGlyPWAoZGlybmFtZSAiJGFjX2ZpbGUiKSAyPi9kZXYvbnVsbCB8fAotLSRhc19leHByIFgiJGFjX2ZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCi0tICAgICAgICAgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKVteL10nIFx8IFwKLS0gICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvL1wpJCcgXHwgXAotLSAgICAgICAgIFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgXAotLSAgICAgICAgIC4gICAgIDogJ1woLlwpJyAyPi9kZXYvbnVsbCB8fAotLWVjaG8gWCIkYWNfZmlsZSIgfAotLSAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwoXC9cL1wpW14vXS4qL3sgcy8vXDEvOyBxOyB9Ci0tICAJICAvXlhcKFwvXC9cKSQveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwoXC9cKS4qL3sgcy8vXDEvOyBxOyB9Ci0tICAJICBzLy4qLy4vOyBxJ2AKLS0gIHsgaWYgJGFzX21rZGlyX3A7IHRoZW4KLS0gICAgbWtkaXIgLXAgIiRhY19kaXIiCi0tICBlbHNlCi0tICAgIGFzX2Rpcj0iJGFjX2RpciIKLS0gICAgYXNfZGlycz0KLS0gICAgd2hpbGUgdGVzdCAhIC1kICIkYXNfZGlyIjsgZG8KLS0gICAgICBhc19kaXJzPSIkYXNfZGlyICRhc19kaXJzIgotLSAgICAgIGFzX2Rpcj1gKGRpcm5hbWUgIiRhc19kaXIiKSAyPi9kZXYvbnVsbCB8fAotLSRhc19leHByIFgiJGFzX2RpciIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKLS0gICAgICAgICBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcCi0tICAgICAgICAgWCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcgXHwgXAotLSAgICAgICAgIFgiJGFzX2RpciIgOiAnWFwoL1wpJyBcfCBcCi0tICAgICAgICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8Ci0tZWNobyBYIiRhc19kaXIiIHwKLS0gICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sgcy8vXDEvOyBxOyB9Ci0tICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXChcL1wvXCkkL3sgcy8vXDEvOyBxOyB9Ci0tICAJICAvXlhcKFwvXCkuKi97IHMvL1wxLzsgcTsgfQotLSAgCSAgcy8uKi8uLzsgcSdgCi0tICAgIGRvbmUKLS0gICAgdGVzdCAhIC1uICIkYXNfZGlycyIgfHwgbWtkaXIgJGFzX2RpcnMKLS0gIGZpIHx8IHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJGFjX2RpclwiIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiRhY19kaXJcIiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH07IH0KLSsgIGNhc2UgIiRhY19naXZlbl9JTlNUQUxMIiBpbgotKyAgWy8kXSopIElOU1RBTEw9IiRhY19naXZlbl9JTlNUQUxMIiA7OwotKyAgKikgSU5TVEFMTD0iJGFjX2RvdHMkYWNfZ2l2ZW5fSU5TVEFMTCIgOzsKLSsgIGVzYWMKLSAKLS0gIGFjX2J1aWxkZGlyPS4KLS0KLS1pZiB0ZXN0ICIkYWNfZGlyIiAhPSAuOyB0aGVuCi0tICBhY19kaXJfc3VmZml4PS9gZWNobyAiJGFjX2RpciIgfCBzZWQgJ3MsXlwuW1xcL10sLCdgCi0tICAjIEEgIi4uLyIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4LgotLSAgYWNfdG9wX2J1aWxkZGlyPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCIgfCBzZWQgJ3MsL1teXFwvXSosLi4vLGcnYAotLWVsc2UKLS0gIGFjX2Rpcl9zdWZmaXg9IGFjX3RvcF9idWlsZGRpcj0KLS1maQotLQotLWNhc2UgJHNyY2RpciBpbgotLSAgLikgICMgTm8gLS1zcmNkaXIgb3B0aW9uLiAgV2UgYXJlIGJ1aWxkaW5nIGluIHBsYWNlLgotLSAgICBhY19zcmNkaXI9LgotLSAgICBpZiB0ZXN0IC16ICIkYWNfdG9wX2J1aWxkZGlyIjsgdGhlbgotLSAgICAgICBhY190b3Bfc3JjZGlyPS4KLS0gICAgZWxzZQotLSAgICAgICBhY190b3Bfc3JjZGlyPWBlY2hvICRhY190b3BfYnVpbGRkaXIgfCBzZWQgJ3MsLyQsLCdgCi0tICAgIGZpIDs7Ci0tICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIHBhdGguCi0tICAgIGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZmaXg7Ci0tICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpciA7OwotLSAgKikgIyBSZWxhdGl2ZSBwYXRoLgotLSAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZGRpciRzcmNkaXIkYWNfZGlyX3N1ZmZpeAotLSAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXIkc3JjZGlyIDs7Ci0tZXNhYwotLSMgRG9uJ3QgYmxpbmRseSBwZXJmb3JtIGEgYGNkICIkYWNfZGlyIi8kYWNfZm9vICYmIHB3ZGAgc2luY2UgJGFjX2ZvbyBjYW4gYmUKLS0jIGFic29sdXRlLgotLWFjX2Fic19idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY19idWlsZGRpciAmJiBwd2RgCi0tYWNfYWJzX3RvcF9idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNkICR7YWNfdG9wX2J1aWxkZGlyfS4gJiYgcHdkYAotLWFjX2Fic19zcmNkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfc3JjZGlyICYmIHB3ZGAKLS1hY19hYnNfdG9wX3NyY2Rpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY190b3Bfc3JjZGlyICYmIHB3ZGAKLS0KLS0KLS0gIGNhc2UgJElOU1RBTEwgaW4KLS0gIFtcXC8kXSogfCA/OltcXC9dKiApIGFjX0lOU1RBTEw9JElOU1RBTEwgOzsKLS0gICopIGFjX0lOU1RBTEw9JGFjX3RvcF9idWlsZGRpciRJTlNUQUxMIDs7Ci0rICBlY2hvIGNyZWF0aW5nICIkYWNfZmlsZSIKLSsgIHJtIC1mICIkYWNfZmlsZSIKLSsgIGNvbmZpZ3VyZV9pbnB1dD0iR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSBgZWNobyAkYWNfZmlsZV9pbnxzZWQgJ3MlLiovJSUnYCBieSBjb25maWd1cmUuIgotKyAgY2FzZSAiJGFjX2ZpbGUiIGluCi0rICAqTWFrZWZpbGUqKSBhY19jb21zdWI9IjFpXFwKLSsjICRjb25maWd1cmVfaW5wdXQiIDs7Ci0rICAqKSBhY19jb21zdWI9IDs7Ci0gICBlc2FjCi0gCi0tICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCi0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGNyZWF0aW5nICRhY19maWxlIiA+JjUKLS1lY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQotLSAgICBybSAtZiAiJGFjX2ZpbGUiCi0tICBmaQotLSAgIyBMZXQncyBzdGlsbCBwcmV0ZW5kIGl0IGlzIGBjb25maWd1cmUnIHdoaWNoIGluc3RhbnRpYXRlcyAoaS5lLiwgZG9uJ3QKLS0gICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKLS0gICMgICAgLyogY29uZmlnLmguICBHZW5lcmF0ZWQgYnkgY29uZmlnLnN0YXR1cy4gICovCi0tICBpZiB0ZXN0IHgiJGFjX2ZpbGUiID0geC07IHRoZW4KLS0gICAgY29uZmlndXJlX2lucHV0PQotLSAgZWxzZQotLSAgICBjb25maWd1cmVfaW5wdXQ9IiRhY19maWxlLiAgIgotLSAgZmkKLS0gIGNvbmZpZ3VyZV9pbnB1dD0kY29uZmlndXJlX2lucHV0IkdlbmVyYXRlZCBmcm9tIGBlY2hvICRhY19maWxlX2luIHwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VkICdzLC4qLywsJ2AgYnkgY29uZmlndXJlLiIKLSsgIGFjX2ZpbGVfaW5wdXRzPWBlY2hvICRhY19maWxlX2lufHNlZCAtZSAicyVeJSRhY19naXZlbl9zcmNkaXIvJSIgLWUgInMlOiUgJGFjX2dpdmVuX3NyY2Rpci8lZyJgCi0rICBzZWQgLWUgIiRhY19jb21zdWIKLStzJUBjb25maWd1cmVfaW5wdXRAJSRjb25maWd1cmVfaW5wdXQlZwotK3MlQHNyY2RpckAlJHNyY2RpciVnCi0rcyVAdG9wX3NyY2RpckAlJHRvcF9zcmNkaXIlZwotK3MlQElOU1RBTExAJSRJTlNUQUxMJWcKLSsiICRhY19maWxlX2lucHV0cyB8IChldmFsICIkYWNfc2VkX2NtZHMiKSA+ICRhY19maWxlCi0rZmk7IGRvbmUKLStybSAtZiBjb25mdGVzdC5zKgotIAotLSAgIyBGaXJzdCBsb29rIGZvciB0aGUgaW5wdXQgZmlsZXMgaW4gdGhlIGJ1aWxkIHRyZWUsIG90aGVyd2lzZSBpbiB0aGUKLS0gICMgc3JjIHRyZWUuCi0tICBhY19maWxlX2lucHV0cz1gSUZTPToKLS0gICAgZm9yIGYgaW4gJGFjX2ZpbGVfaW47IGRvCi0tICAgICAgY2FzZSAkZiBpbgotLSAgICAgIC0pIGVjaG8gJHRtcC9zdGRpbiA7OwotLSAgICAgIFtcXC8kXSopCi0tICAgICAgICAgIyBBYnNvbHV0ZSAoY2FuJ3QgYmUgRE9TLXN0eWxlLCBhcyBJRlM9OikKLS0gICAgICAgICB0ZXN0IC1mICIkZiIgfHwgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotLSAgICAgICAgIGVjaG8gJGY7OwotLSAgICAgICopICMgUmVsYXRpdmUKLS0gICAgICAgICBpZiB0ZXN0IC1mICIkZiI7IHRoZW4KLS0gICAgICAgICAgICMgQnVpbGQgdHJlZQotLSAgICAgICAgICAgZWNobyAkZgotLSAgICAgICAgIGVsaWYgdGVzdCAtZiAiJHNyY2Rpci8kZiI7IHRoZW4KLS0gICAgICAgICAgICMgU291cmNlIHRyZWUKLS0gICAgICAgICAgIGVjaG8gJHNyY2Rpci8kZgotLSAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICMgL2Rldi9udWxsIHRyZWUKLS0gICAgICAgICAgIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS0gICAgICAgICBmaTs7Ci0tICAgICAgZXNhYwotLSAgICBkb25lYCB8fCB7IChleGl0IDEpOyBleGl0IDE7IH0KLS1fQUNFT0YKLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRgotLSAgc2VkICIkYWNfdnBzdWIKLS0kZXh0cmFzdWIKLS1fQUNFT0YKLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKLS06dAotLS9AW2EtekEtWl9dW2EtekEtWl8wLTldKkAvIWIKLS1zLEBjb25maWd1cmVfaW5wdXRALCRjb25maWd1cmVfaW5wdXQsO3QgdAotLXMsQHNyY2RpckAsJGFjX3NyY2Rpciw7dCB0Ci0tcyxAYWJzX3NyY2RpckAsJGFjX2Fic19zcmNkaXIsO3QgdAotLXMsQHRvcF9zcmNkaXJALCRhY190b3Bfc3JjZGlyLDt0IHQKLS1zLEBhYnNfdG9wX3NyY2RpckAsJGFjX2Fic190b3Bfc3JjZGlyLDt0IHQKLS1zLEBidWlsZGRpckAsJGFjX2J1aWxkZGlyLDt0IHQKLS1zLEBhYnNfYnVpbGRkaXJALCRhY19hYnNfYnVpbGRkaXIsO3QgdAotLXMsQHRvcF9idWlsZGRpckAsJGFjX3RvcF9idWlsZGRpciw7dCB0Ci0tcyxAYWJzX3RvcF9idWlsZGRpckAsJGFjX2Fic190b3BfYnVpbGRkaXIsO3QgdAotLXMsQElOU1RBTExALCRhY19JTlNUQUxMLDt0IHQKLS0iICRhY19maWxlX2lucHV0cyB8IChldmFsICIkYWNfc2VkX2NtZHMiKSA+JHRtcC9vdXQKLS0gIHJtIC1mICR0bXAvc3RkaW4KLS0gIGlmIHRlc3QgeCIkYWNfZmlsZSIgIT0geC07IHRoZW4KLS0gICAgbXYgJHRtcC9vdXQgJGFjX2ZpbGUKLS0gIGVsc2UKLS0gICAgY2F0ICR0bXAvb3V0Ci0tICAgIHJtIC1mICR0bXAvb3V0Ci0tICBmaQotK0VPRgotK2NhdCA+PiAkQ09ORklHX1NUQVRVUyA8PEVPRgotIAotLWRvbmUKLS1fQUNFT0YKLStFT0YKLStjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxcRU9GCi0gCi0tY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GCi0tCi0teyAoZXhpdCAwKTsgZXhpdCAwOyB9Ci0tX0FDRU9GCi0rZXhpdCAwCi0rRU9GCi0gY2htb2QgK3ggJENPTkZJR19TVEFUVVMKLS1hY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQotK3JtIC1mciBjb25mZGVmcyogJGFjX2NsZWFuX2ZpbGVzCi0rdGVzdCAiJG5vX2NyZWF0ZSIgPSB5ZXMgfHwgJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJENPTkZJR19TVEFUVVMgfHwgZXhpdCAxCi0gCi0tCi0tIyBjb25maWd1cmUgaXMgd3JpdGluZyB0byBjb25maWcubG9nLCBhbmQgdGhlbiBjYWxscyBjb25maWcuc3RhdHVzLgotLSMgY29uZmlnLnN0YXR1cyBkb2VzIGl0cyBvd24gcmVkaXJlY3Rpb24sIGFwcGVuZGluZyB0byBjb25maWcubG9nLgotLSMgVW5mb3J0dW5hdGVseSwgb24gRE9TIHRoaXMgZmFpbHMsIGFzIGNvbmZpZy5sb2cgaXMgc3RpbGwga2VwdCBvcGVuCi0tIyBieSBjb25maWd1cmUsIHNvIGNvbmZpZy5zdGF0dXMgd29uJ3QgYmUgYWJsZSB0byB3cml0ZSB0byBpdDsgaXRzCi0tIyBvdXRwdXQgaXMgc2ltcGx5IGRpc2NhcmRlZC4gIFNvIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYvbnVsbCwKLS0jIGVmZmVjdGl2ZWx5IGNsb3NpbmcgY29uZmlnLmxvZywgc28gaXQgY2FuIGJlIHByb3Blcmx5IChyZSlvcGVuZWQgYW5kCi0tIyBhcHBlbmRlZCB0byBieSBjb25maWcuc3RhdHVzLiAgV2hlbiBjb21pbmcgYmFjayB0byBjb25maWd1cmUsIHdlCi0tIyBuZWVkIHRvIG1ha2UgdGhlIEZEIGF2YWlsYWJsZSBhZ2Fpbi4KLS1pZiB0ZXN0ICIkbm9fY3JlYXRlIiAhPSB5ZXM7IHRoZW4KLS0gIGFjX2NzX3N1Y2Nlc3M9OgotLSAgYWNfY29uZmlnX3N0YXR1c19hcmdzPQotLSAgdGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYKLS0gICAgYWNfY29uZmlnX3N0YXR1c19hcmdzPSIkYWNfY29uZmlnX3N0YXR1c19hcmdzIC0tcXVpZXQiCi0tICBleGVjIDU+L2Rldi9udWxsCi0tICAkU0hFTEwgJENPTkZJR19TVEFUVVMgJGFjX2NvbmZpZ19zdGF0dXNfYXJncyB8fCBhY19jc19zdWNjZXNzPWZhbHNlCi0tICBleGVjIDU+PmNvbmZpZy5sb2cKLS0gICMgVXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRpbmcgZnJvbSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoCi0tICAjIHdvdWxkIG1ha2UgY29uZmlndXJlIGZhaWwgaWYgdGhpcyBpcyB0aGUgbGFzdCBpbnN0cnVjdGlvbi4KLS0gICRhY19jc19zdWNjZXNzIHx8IHsgKGV4aXQgMSk7IGV4aXQgMTsgfQotLWZpCi0tCi1JbmRleDogY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2UvY29uZmlndXJlLmluCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL2NvbmZpZ3VyZS5pbgkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC0yMDYsMTAgKzIwNiwxMCBAQAotIEFDX0NIRUNLX0hFQURFUihzeXMvYXVkaW9pby5oLAotICAgICAgICAgICAgICAgW0FVRElPRFJJVkVSPSJzdW4iCi0gICAgICAgICAgICAgICAgQVVESU9ERUZTPS1EQ1NUX0FVRElPX1NVTk9TXSkKLS1kbmwgQUNfQ0hFQ0tfSEVBREVSKHN5cy9hc291bmRsaWIuaCwKLS1kbmwgICAgICAgICAgICAgIFtBVURJT0RSSVZFUj0iYWxzYSIKLS1kbmwJICAgICAgIEFVRElPREVGUz0tRENTVF9BVURJT19BTFNBCi0tZG5sICAgICAgICAgICAgICAgQVVESU9MSUJTPS1sYXNvdW5kXSkKLSsgQUNfQ0hFQ0tfSEVBREVSKGFsc2EvYXNvdW5kbGliLmgsCi0rICAgICAgICAgICAgICBbQVVESU9EUklWRVI9ImFsc2EiCi0rCSAgICAgICBBVURJT0RFRlM9LURDU1RfQVVESU9fQUxTQQotKyAgICAgICAgICAgICAgIEFVRElPTElCUz0tbGFzb3VuZF0pCi0gQUNfQ0hFQ0tfSEVBREVSKG1tc3lzdGVtLmgsCi0gCSAgICAgIFtBVURJT0RSSVZFUj0id2luY2UiCi0gCSAgICAgICBBVURJT0RFRlM9LURDU1RfQVVESU9fV0lOQ0UKLUluZGV4OiBzcmMvaHJnL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL2hyZy9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvaHJnL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTM5LDkgKzM5LDE0IEBACi0gQlVJTERfRElSUyA9IAotIEFMTF9ESVJTPSAKLSBIID0gCi0raW5jbHVkZSAkKFRPUCkvY29uZmlnL2NvbmZpZwotIFNSQ1MgPSBjc3RfdXR0ZXJhbmNlLmMgY3N0X3JlbGF0aW9uLmMgY3N0X2l0ZW0uYyBjc3RfZmZlYXR1cmUuYyBcCi0gICAgICAgIGNzdF9yZWxfaW8uYwotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSBGSUxFUyA9IE1ha2VmaWxlICQoSCkgJChTUkNTKQotIExJQk5BTUUgPSBmbGl0ZQotIAotSW5kZXg6IHNyYy91dGlscy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy91dGlscy9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvdXRpbHMvTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtNDQsOCArNDQsMTMgQEAKLSAgICAgICAgY3N0X3Rva2Vuc3RyZWFtLmMgY3N0X3ZhbC5jIGNzdF9mZWF0dXJlcy5jIFwKLSAgICAgICAgY3N0X2VuZGlhbi5jIGNzdF9zb2NrZXQuYyBjc3RfdmFsX2NvbnN0LmMgXAotICAgICAgICBjc3RfdmFsX3VzZXIuYyBjc3RfYXJncy5jIAotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpICQoTU1BUFRZUEU6JT1jc3RfbW1hcF8lLm9zKSBcCi0rICAgICAgICAkKFNURElPVFlQRTolPWNzdF9maWxlXyUub3MpCi0rZWxzZQotIE9CSlMgOj0gJChTUkNTOi5jPS5vKSAkKE1NQVBUWVBFOiU9Y3N0X21tYXBfJS5vKSBcCi0gICAgICAgICAkKFNURElPVFlQRTolPWNzdF9maWxlXyUubykKLStlbmRpZgotIEZJTEVTID0gTWFrZWZpbGUgJChIKSAkKFNSQ1MpIFwKLSAJY3N0X21tYXBfcG9zaXguYyBjc3RfbW1hcF93aW4zMi5jIGNzdF9tbWFwX25vbmUuYyBcCi0gCWNzdF9maWxlX3N0ZGlvLmMgY3N0X2ZpbGVfd2luY2UuYyBjc3RfZmlsZV9wYWxtb3MuYwotSW5kZXg6IHNyYy9hdWRpby9hdV9hbHNhLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvYXVkaW8vYXVfYWxzYS5jCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiAwKQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9hdWRpby9hdV9hbHNhLmMJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMCwwICsxLDMxMSBAQAotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgVGVjaG5vbG9naWVzIEluc3RpdHV0ZSAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgICAgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gdXNlIGFuZCBkaXN0cmlidXRlICAqLwotKy8qICB0aGlzIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAqLwotKy8qICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAqLwotKy8qICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhpcyB3b3JrLCBhbmQgdG8gICAgICAqLwotKy8qICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoaXMgd29yayBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gICAqLwotKy8qICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgMS4gVGhlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiAgICAqLwotKy8qICAgICAgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgMi4gQW55IG1vZGlmaWNhdGlvbnMgbXVzdCBiZSBjbGVhcmx5IG1hcmtlZCBhcyBzdWNoLiAgICAgICAgICAgICAgICAqLwotKy8qICAgMy4gT3JpZ2luYWwgYXV0aG9ycycgbmFtZXMgYXJlIG5vdCBkZWxldGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgNC4gVGhlIGF1dGhvcnMnIG5hbWVzIGFyZSBub3QgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgICAqLwotKy8qICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuICAgICAgICAqLwotKy8qICAgICAgcGVybWlzc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICBDQVJORUdJRSBNRUxMT04gVU5JVkVSU0lUWSBBTkQgVEhFIENPTlRSSUJVVE9SUyBUTyBUSElTIFdPUksgICAgICAgICAqLwotKy8qICBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcgICAgICAqLwotKy8qICBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywgSU4gTk8gRVZFTlQgICAqLwotKy8qICBTSEFMTCBDQVJORUdJRSBNRUxMT04gVU5JVkVSU0lUWSBOT1IgVEhFIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgICAgICAqLwotKy8qICBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyAgICAqLwotKy8qICBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gICAqLwotKy8qICBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCAgICAgICAgICAqLwotKy8qICBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiAgICAgICAqLwotKy8qICBUSElTIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotKy8qICAgICAgICAgICAgIEF1dGhvcjogIEx1a2FzIExvZWhyZXIgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgRGF0ZTogIEphbnVhcnkgMjAwNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICBOYXRpdmUgYWNjZXNzIHRvIGFsc2EgYXVkaW8gZGV2aWNlcyBvbiBMaW51eCAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICBUZXN0ZWQgd2l0aCBsaWJhc291bmQgdmVyc2lvbiAxLjAuMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsKLSsjaW5jbHVkZSAiY3N0X3N0cmluZy5oIgotKyNpbmNsdWRlICJjc3Rfd2F2ZS5oIgotKyNpbmNsdWRlICJjc3RfYXVkaW8uaCIKLSsKLSsjaW5jbHVkZSA8YWxzYS9hc291bmRsaWIuaD4KLSsKLSsKLSsvKnN0YXRpYyBjaGFyICpwY21fZGV2X25hbWUgPSAiaHc6MCwwIjsgKi8KLStzdGF0aWMgY2hhciAqcGNtX2Rldl9uYW1lID0iZGVmYXVsdCI7Ci0rCi0rc3RhdGljIGlubGluZSB2b2lkIHByaW50X3BjbV9zdGF0ZShzbmRfcGNtX3QgKmhhbmRsZSwgY2hhciAqbXNnKQotK3sKLSsgIGZwcmludGYoc3RkZXJyLCAiUENNIHN0YXRlIGF0ICVzID0gJXNcbiIsIG1zZywKLSsJCSAgc25kX3BjbV9zdGF0ZV9uYW1lKHNuZF9wY21fc3RhdGUoaGFuZGxlKSkpOwotK30KLSsKLStjc3RfYXVkaW9kZXYgKmF1ZGlvX29wZW5fYWxzYShpbnQgc3BzLCBpbnQgY2hhbm5lbHMsIGNzdF9hdWRpb2ZtdCBmbXQpCi0rewotKyAgY3N0X2F1ZGlvZGV2ICphZDsKLSsgIHVuc2lnbmVkIAlpbnQgcmVhbF9yYXRlOwotKyAgaW50IGVycjsKLSsKLSsgIC8qIGFsc2Egc3BlY2lmaWMgc3R1ZmYgKi8KLSsgIHNuZF9wY21fdCAqcGNtX2hhbmRsZTsgICAgICAgICAgCi0rICBzbmRfcGNtX3N0cmVhbV90IHN0cmVhbSA9IFNORF9QQ01fU1RSRUFNX1BMQVlCQUNLOwotKyAgc25kX3BjbV9od19wYXJhbXNfdCAqaHdwYXJhbXM7Ci0rICBzbmRfcGNtX2Zvcm1hdF90IGZvcm1hdDsKLSsgIHNuZF9wY21fYWNjZXNzX3QgYWNjZXNzID0gU05EX1BDTV9BQ0NFU1NfUldfSU5URVJMRUFWRUQ7Ci0rCi0rICAvKiBBbGxvY2F0ZSB0aGUgc25kX3BjbV9od19wYXJhbXNfdCBzdHJ1Y3R1cmUgb24gdGhlIHN0YWNrLiAqLwotKyAgc25kX3BjbV9od19wYXJhbXNfYWxsb2NhKCZod3BhcmFtcyk7Ci0rCi0rICAvKiBPcGVuIHBjbSBkZXZpY2UgKi8KLSsgIGVyciA9IHNuZF9wY21fb3BlbigmcGNtX2hhbmRsZSwgcGNtX2Rldl9uYW1lLCBzdHJlYW0sIDApOwotKyAgaWYgKGVyciA8IDApIAotKyAgewotKwljc3RfZXJybXNnKCJhdWRpb19vcGVuX2Fsc2E6IGZhaWxlZCB0byBvcGVuIGF1ZGlvIGRldmljZSAlcy4gJXNcbiIsCi0rCQkJICAgcGNtX2Rldl9uYW1lLCBzbmRfc3RyZXJyb3IoZXJyKSk7Ci0rCXJldHVybiBOVUxMOwotKyAgfQotKwotKyAgLyogSW5pdCBod3BhcmFtcyB3aXRoIGZ1bGwgY29uZmlndXJhdGlvbiBzcGFjZSAqLwotKyAgZXJyID0gc25kX3BjbV9od19wYXJhbXNfYW55KHBjbV9oYW5kbGUsIGh3cGFyYW1zKTsKLSsgIGlmIChlcnIgPCAwKSAKLSsgIHsKLSsJc25kX3BjbV9jbG9zZShwY21faGFuZGxlKTsKLSsJY3N0X2Vycm1zZygiYXVkaW9fb3Blbl9hbHNhOiBmYWlsZWQgdG8gZ2V0IGhhcmR3YXJlIHBhcmFtZXRlcnMgZnJvbSBhdWRpbyBkZXZpY2UuICVzXG4iLCBzbmRfc3RyZXJyb3IoZXJyKSk7Ci0rCXJldHVybiBOVUxMOwotKyAgfQotKwotKyAgLyogU2V0IGFjY2VzcyBtb2RlICovCi0rICBlcnIgPSBzbmRfcGNtX2h3X3BhcmFtc19zZXRfYWNjZXNzKHBjbV9oYW5kbGUsIGh3cGFyYW1zLCBhY2Nlc3MpOwotKyAgaWYgKGVyciA8IDApIAotKyAgewotKwlzbmRfcGNtX2Nsb3NlKHBjbV9oYW5kbGUpOwotKwljc3RfZXJybXNnKCJhdWRpb19vcGVuX2Fsc2E6IGZhaWxlZCB0byBzZXQgYWNjZXNzIG1vZGUuICVzLlxuIiwgc25kX3N0cmVycm9yKGVycikpOwotKwlyZXR1cm4gTlVMTDsKLSsgIH0KLSsKLSsgIC8qIERldGVybWluZSBtYXRjaGluZyBhbHNhIHNhbXBsZSBmb3JtYXQgKi8KLSsgIC8qIFRoaXMgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gYSBtb3JlICovCi0rICAvKiBmbGV4aWJsZSB3YXkgKGJ5dGUgb3JkZXIgY29udmVyc2lvbikuICovCi0rICBzd2l0Y2ggKGZtdCkKLSsgIHsKLSsgIGNhc2UgQ1NUX0FVRElPX0xJTkVBUjE2OgotKwlpZiAoQ1NUX0xJVFRMRV9FTkRJQU4pCi0rCSAgZm9ybWF0ID0gU05EX1BDTV9GT1JNQVRfUzE2X0xFOwotKwllbHNlCi0rCSAgZm9ybWF0ID0gU05EX1BDTV9GT1JNQVRfUzE2X0JFOwotKwlicmVhazsKLSsgIGNhc2UgQ1NUX0FVRElPX0xJTkVBUjg6Ci0rCWZvcm1hdCA9IFNORF9QQ01fRk9STUFUX1U4OwotKwlicmVhazsKLSsgIGNhc2UgQ1NUX0FVRElPX01VTEFXOgotKwlmb3JtYXQgPSBTTkRfUENNX0ZPUk1BVF9NVV9MQVc7Ci0rCWJyZWFrOwotKyAgZGVmYXVsdDoKLSsJc25kX3BjbV9jbG9zZShwY21faGFuZGxlKTsKLSsJY3N0X2Vycm1zZygiYXVkaW9fb3Blbl9hbHNhOiBmYWlsZWQgdG8gZmluZCBzdWl0YWJsZSBmb3JtYXQuXG4iKTsKLSsJcmV0dXJuIE5VTEw7Ci0rCWJyZWFrOwotKyAgfQotKwotKyAgLyogU2V0IHNhbWJsZSBmb3JtYXQgKi8KLSsgIGVyciA9IHNuZF9wY21faHdfcGFyYW1zX3NldF9mb3JtYXQocGNtX2hhbmRsZSwgaHdwYXJhbXMsIGZvcm1hdCk7Ci0rICBpZiAoZXJyIDwwKSAKLSsgIHsKLSsJc25kX3BjbV9jbG9zZShwY21faGFuZGxlKTsKLSsJY3N0X2Vycm1zZygiYXVkaW9fb3Blbl9hbHNhOiBmYWlsZWQgdG8gc2V0IGZvcm1hdC4gJXMuXG4iLCBzbmRfc3RyZXJyb3IoZXJyKSk7Ci0rCXJldHVybiBOVUxMOwotKyAgfQotKwotKyAgLyogU2V0IHNhbXBsZSByYXRlIG5lYXIgdGhlIGRpc2lyZWQgcmF0ZSAqLwotKyAgcmVhbF9yYXRlID0gc3BzOwotKyAgZXJyID0gc25kX3BjbV9od19wYXJhbXNfc2V0X3JhdGVfbmVhcihwY21faGFuZGxlLCBod3BhcmFtcywgJnJlYWxfcmF0ZSwgMCk7Ci0rICBpZiAoZXJyIDwgMCkgICAKLSsgIHsKLSsJc25kX3BjbV9jbG9zZShwY21faGFuZGxlKTsKLSsJY3N0X2Vycm1zZygiYXVkaW9fb3Blbl9hbHNhOiBmYWlsZWQgdG8gc2V0IHNhbXBsZSByYXRlIG5lYXIgJWQuICVzLlxuIiwgc3BzLCBzbmRfc3RyZXJyb3IoZXJyKSk7Ci0rCXJldHVybiBOVUxMOwotKyAgfQotKyAgLypGSVhNRTogIFRoaXMgaXMgcHJvYmFibHkgdG9vIHN0cmljdCAqLwotKyAgYXNzZXJ0KHNwcyA9PSByZWFsX3JhdGUpOwotKwotKyAgLyogU2V0IG51bWJlciBvZiBjaGFubmVscyAqLwotKyAgYXNzZXJ0KGNoYW5uZWxzID4wKTsKLSsgIGVyciA9IHNuZF9wY21faHdfcGFyYW1zX3NldF9jaGFubmVscyhwY21faGFuZGxlLCBod3BhcmFtcywgY2hhbm5lbHMpOwotKyAgaWYgKGVyciA8IDApIAotKyAgewotKwlzbmRfcGNtX2Nsb3NlKHBjbV9oYW5kbGUpOwotKwljc3RfZXJybXNnKCJhdWRpb19vcGVuX2Fsc2E6IGZhaWxlZCB0byBzZXQgbnVtYmVyIG9mIGNoYW5uZWxzIHRvICVkLiAlcy5cbiIsIGNoYW5uZWxzLCBzbmRfc3RyZXJyb3IoZXJyKSk7Ci0rCXJldHVybiBOVUxMOwotKyAgfQotKwotKyAgLyogQ29tbWl0IGhhcmR3YXJlIHBhcmFtZXRlcnMgKi8KLSsgIGVyciA9IHNuZF9wY21faHdfcGFyYW1zKHBjbV9oYW5kbGUsIGh3cGFyYW1zKTsKLSsgIGlmIChlcnIgPCAwKSAKLSsgIHsKLSsJc25kX3BjbV9jbG9zZShwY21faGFuZGxlKTsKLSsJY3N0X2Vycm1zZygiYXVkaW9fb3Blbl9hbHNhOiBmYWlsZWQgdG8gc2V0IGh3IHBhcmFtZXRlcnMuICVzLlxuIiwgc25kX3N0cmVycm9yKGVycikpOwotKwlyZXR1cm4gTlVMTDsKLSsgIH0KLSsKLSsgIC8qIE1ha2Ugc3VyZSB0aGUgZGV2aWNlIGlzIHJlYWR5IHRvIGFjY2VwdCBkYXRhICovCi0rICBhc3NlcnQoc25kX3BjbV9zdGF0ZShwY21faGFuZGxlKSA9PSBTTkRfUENNX1NUQVRFX1BSRVBBUkVEKTsKLSsKLSsgIC8qIFdyaXRlIGhhcmR3YXJlIHBhcmFtZXRlcnMgdG8gZmxpdGUgYXVkaW8gZGV2aWNlIGRhdGEgc3RydWN0dXJlICovCi0rICBhZCA9IGNzdF9hbGxvYyhjc3RfYXVkaW9kZXYsIDEpOwotKyAgYXNzZXJ0KGFkICE9IE5VTEwpOwotKyAgYWQtPnJlYWxfc3BzID0gYWQtPnNwcyA9IHNwczsKLSsgIGFkLT5yZWFsX2NoYW5uZWxzID0gYWQtPmNoYW5uZWxzID0gY2hhbm5lbHM7Ci0rICBhZC0+cmVhbF9mbXQgPSBhZC0+Zm10ID0gZm10OwotKyAgYWQtPnBsYXRmb3JtX2RhdGEgPSAodm9pZCAqKSBwY21faGFuZGxlOwotKwotKyAgcmV0dXJuIGFkOwotK30KLSsKLStpbnQgYXVkaW9fY2xvc2VfYWxzYShjc3RfYXVkaW9kZXYgKmFkKQotK3sKLSsgIGludCByZXN1bHQ7Ci0rICBzbmRfcGNtX3QgKnBjbV9oYW5kbGU7Ci0rCi0rICBpZiAoYWQgPT0gTlVMTCkKLSsJcmV0dXJuIDA7Ci0rCi0rICBwY21faGFuZGxlID0gKHNuZF9wY21fdCAqKSBhZC0+cGxhdGZvcm1fZGF0YTsKLSsgIHJlc3VsdCA9IHNuZF9wY21fY2xvc2UocGNtX2hhbmRsZSk7Ci0rICBpZiAocmVzdWx0IDwgMCkKLSsgIHsKLSsJY3N0X2Vycm1zZygiYXVkaW9fY2xvc2VfYWxzYTogRXJyb3I6ICVzLlxuIiwgc25kX3N0cmVycm9yKHJlc3VsdCkpOwotKyAgfQotKyAgY3N0X2ZyZWUoYWQpOwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rLyogUmV0dXJucyB6ZXJvIGlmIHJlY292ZXJ5IHdhcyBzdWNjZXNzZnVsLiAqLwotK3N0YXRpYyBpbnQgcmVjb3Zlcl9mcm9tX2Vycm9yKHNuZF9wY21fdCAqcGNtX2hhbmRsZSwgc3NpemVfdCByZXMpCi0rewotKyAgaWYgKHJlcyA9PSAtRVBJUEUpIC8qIHhydW4gKi8KLSsgIHsKLSsJcmVzID0gc25kX3BjbV9wcmVwYXJlKHBjbV9oYW5kbGUpOwotKwlpZiAocmVzIDwgMCkgCi0rCXsKLSsJICAvKiBGYWlsZWQgdG8gcmVjb3ZlciBmcm9tIHhydW4gKi8KLSsJICBjc3RfZXJybXNnKCJyZWNvdmVyX2Zyb21fd3JpdGVfZXJyb3I6IGZhaWxlZCB0byByZWNvdmVyIGZyb20geHJ1bi4gJXNcbi4iLCBzbmRfc3RyZXJyb3IocmVzKSk7Ci0rCSAgcmV0dXJuIHJlczsKLSsJfQotKyAgfSAKLSsgIGVsc2UgaWYgKHJlcyA9PSAtRVNUUlBJUEUpIC8qIFN1c3BlbmQgKi8KLSsgIHsKLSsJd2hpbGUgKChyZXMgPSBzbmRfcGNtX3Jlc3VtZShwY21faGFuZGxlKSkgPT0gLUVBR0FJTikgCi0rCXsKLSsJICBzbmRfcGNtX3dhaXQocGNtX2hhbmRsZSwgMTAwMCk7Ci0rCX0KLSsJaWYgKHJlcyA8IDApIAotKwl7Ci0rCSAgcmVzID0gc25kX3BjbV9wcmVwYXJlKHBjbV9oYW5kbGUpOwotKwkgIGlmIChyZXMgPDApIAotKwkgIHsKLSsJCS8qIFJlc3VtZSBmYWlsZWQgKi8KLSsJCWNzdF9lcnJtc2coImF1ZGlvX3JlY292ZXJfZnJvbV93cml0ZV9lcnJvcjogZmFpbGVkIHRvIHJlc3VtZSBhZnRlciBzdXNwZW5kLiAlc1xuLiIsIHNuZF9zdHJlcnJvcihyZXMpKTsKLSsJCXJldHVybiByZXM7Ci0rCSAgfQotKwl9Ci0rICB9IAotKyAgZWxzZSBpZiAocmVzIDwgMCkgCi0rICB7Ci0rCS8qIFVua25vd24gZmFpbHVyZSAqLwotKwljc3RfZXJybXNnKCJhdWRpb19yZWNvdmVyX2Zyb21fd3JpdGVfZXJyb3I6ICVzLlxuIiwgc25kX3N0cmVycm9yKHJlcykpOwotKwlyZXR1cm4gcmVzOwotKyAgfQotKyAgcmV0dXJuIDA7Ci0rfQotKwotK2ludCBhdWRpb193cml0ZV9hbHNhKGNzdF9hdWRpb2RldiAqYWQsIHZvaWQgKnNhbXBsZXMsIGludCBudW1fYnl0ZXMpCi0rewotKyAgc2l6ZV90IGZyYW1lX3NpemU7Ci0rICBzc2l6ZV90IG51bV9mcmFtZXMsIHJlczsKLSsgIHNuZF9wY21fdCAqcGNtX2hhbmRsZTsKLSsgIGNoYXIgKmJ1ZiA9IChjaGFyICopIHNhbXBsZXM7Ci0rCi0rICAvKiBEZXRlcm1pbmUgZnJhbWUgc2l6ZSBpbiBieXRlcyAqLwotKyAgZnJhbWVfc2l6ZSAgPSBhdWRpb19icHMoYWQtPnJlYWxfZm10KSAqIGFkLT5yZWFsX2NoYW5uZWxzOwotKyAgLyogUmVxdWlyZSB0aGF0IG9ubHkgY29tcGxldGUgZnJhbWVzIGFyZSBoYW5kZWQgaW4gKi8KLSsgIGFzc2VydCgobnVtX2J5dGVzICUgZnJhbWVfc2l6ZSkgPT0gMCk7Ci0rICBudW1fZnJhbWVzID0gbnVtX2J5dGVzIC8gZnJhbWVfc2l6ZTsKLSsgIHBjbV9oYW5kbGUgPSAoc25kX3BjbV90ICopIGFkLT5wbGF0Zm9ybV9kYXRhOwotKwotKyAgd2hpbGUgKG51bV9mcmFtZXMgPiAwKSAKLSsgIHsKLSsJcmVzID0gc25kX3BjbV93cml0ZWkocGNtX2hhbmRsZSwgYnVmLCBudW1fZnJhbWVzKTsKLSsJaWYgKHJlcyAhPSBudW1fZnJhbWVzKSAKLSsJewotKwkgIGlmIChyZXMgPT0gLUVBR0FJTiB8fCAocmVzID4gMCAmJiByZXMgPCBudW1fZnJhbWVzKSkgCi0rCSAgewotKwkJc25kX3BjbV93YWl0KHBjbV9oYW5kbGUsIDEwMCk7Ci0rCSAgfQotKwkgIGVsc2UgaWYgKHJlY292ZXJfZnJvbV9lcnJvcihwY21faGFuZGxlLCByZXMpIDwgMCkgCi0rCSAgewotKwkJcmV0dXJuIC0xOwotKwkgIH0KLSsJfQotKwotKwlpZiAocmVzID4wKSAKLSsJewotKwkgIG51bV9mcmFtZXMgLT0gcmVzOwotKwkgIGJ1ZiArPSByZXMgKiBmcmFtZV9zaXplOwotKwl9Ci0rICB9Ci0rICByZXR1cm4gbnVtX2J5dGVzOwotK30KLSsKLStpbnQgYXVkaW9fZmx1c2hfYWxzYShjc3RfYXVkaW9kZXYgKmFkKQotK3sKLSsgIGludCByZXN1bHQ7Ci0rICByZXN1bHQgPSBzbmRfcGNtX2RyYWluKChzbmRfcGNtX3QgKikgYWQtPnBsYXRmb3JtX2RhdGEpOwotKyAgaWYgKHJlc3VsdCA8IDApCi0rICB7Ci0rCWNzdF9lcnJtc2coImF1ZGlvX2ZsdXNoX2Fsc2E6IEVycm9yOiAlcy5cbiIsIHNuZF9zdHJlcnJvcihyZXN1bHQpKTsKLSsgIH0KLSsJLyogUHJlcGFyZSBkZXZpY2UgZm9yIG1vcmUgZGF0YSAqLwotKyAgcmVzdWx0ID0gc25kX3BjbV9wcmVwYXJlKChzbmRfcGNtX3QgKikgYWQtPnBsYXRmb3JtX2RhdGEpOwotK2lmIChyZXN1bHQgPCAwKQotKyAgewotKwljc3RfZXJybXNnKCJhdWRpb19mbHVzaF9hbHNhOiBFcnJvcjogJXMuXG4iLCBzbmRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rICB9Ci0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLStpbnQgYXVkaW9fZHJhaW5fYWxzYShjc3RfYXVkaW9kZXYgKmFkKQotK3sKLSsgIGludCByZXN1bHQ7Ci0rICByZXN1bHQgPSBzbmRfcGNtX2Ryb3AoKHNuZF9wY21fdCAqKSBhZC0+cGxhdGZvcm1fZGF0YSk7Ci0rICBpZiAocmVzdWx0IDwgMCkKLSsgIHsKLSsJY3N0X2Vycm1zZygiYXVkaW9fZHJhaW5fYWxzYTogRXJyb3I6ICVzLlxuIiwgc25kX3N0cmVycm9yKHJlc3VsdCkpOwotKyAgfQotKy8qIFByZXBhcmUgZGV2aWNlIGZvciBtb3JlIGRhdGEgKi8KLSsgIHJlc3VsdCA9IHNuZF9wY21fcHJlcGFyZSgoc25kX3BjbV90ICopIGFkLT5wbGF0Zm9ybV9kYXRhKTsKLStpZiAocmVzdWx0IDwgMCkKLSsgIHsKLSsJY3N0X2Vycm1zZygiYXVkaW9fZHJhaW5fYWxzYTogRXJyb3I6ICVzLlxuIiwgc25kX3N0cmVycm9yKHJlc3VsdCkpOwotKyAgfQotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci1JbmRleDogc3JjL2F1ZGlvL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL2F1ZGlvL01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9hdWRpby9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC00Myw5ICs0MywxMyBAQAotIAotIEJBU0VTUkNTID0gYXVjbGllbnQuYyBhdXNlcnZlci5jIGF1ZGlvLmMgCi0gU1JDUyA9ICQoQkFTRVNSQ1MpICQoQVVESU9EUklWRVI6JT1hdV8lLmMpCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpZmRlZiBTSEZMQUdTCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm9zKQotK2Vsc2UKLStPQkpTIDo9ICQoU1JDUzouYz0ubykKLStlbmRpZgotIEZJTEVTID0gTWFrZWZpbGUgJChIKSAkKEJBU0VTUkNTKSBhdV9jb21tYW5kLmMgYXVfbm9uZS5jIFwKLS0JYXVfb3NzLmMgYXVfc3VuLmMgYXVfd2luY2UuYyBhdV9wYWxtb3MuYwotKwlhdV9vc3MuYyBhdV9zdW4uYyBhdV93aW5jZS5jIGF1X3BhbG1vcy5jIGF1X2Fsc2EuYwotIExJQk5BTUUgPSBmbGl0ZQotIAotIExPQ0FMX0lOQ0xVREVTID0gLUkuICQoQVVESU9ERUZTKQotSW5kZXg6IHNyYy9sZXhpY29uL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL2xleGljb24vTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL2xleGljb24vTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMzgsOCArMzgsMTMgQEAKLSBESVJOQU1FPXNyYy9sZXhpY29uCi0gQlVJTERfRElSUyA9IAotIEFMTF9ESVJTPSAKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29uZmlnCi0gU1JDUyA9IGNzdF9sZXhpY29uLmMgY3N0X2x0cy5jIGNzdF9sdHNfcmV3cml0ZXMuYwotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSBGSUxFUyA9IE1ha2VmaWxlICQoU1JDUykKLSBMSUJOQU1FID0gZmxpdGUKLSAKLUluZGV4OiBzcmMvc3ludGgvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvc3ludGgvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3N5bnRoL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTM4LDkgKzM4LDE0IEBACi0gRElSTkFNRT1zcmMvc3ludGgKLSBCVUlMRF9ESVJTID0gCi0gQUxMX0RJUlM9IAotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb25maWcKLSBTUkNTID0gY3N0X3N5bnRoLmMgY3N0X3V0dF91dGlscy5jIGNzdF92b2ljZS5jIGNzdF9waG9uZXNldC5jIFwKLSAgICAgICAgZmxpdGUuYyAKLS1PQkpTID0gJChTUkNTOi5jPS5vKQotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0gRklMRVMgPSBNYWtlZmlsZSAkKFNSQ1MpCi0gTElCTkFNRSA9IGZsaXRlCi0gCi1JbmRleDogc3JjL3NwZWVjaC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9zcGVlY2gvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3NwZWVjaC9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC0zOSw5ICszOSwxNCBAQAotIEJVSUxEX0RJUlMgPSAKLSBBTExfRElSUz0gCi0gSCA9IAotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb25maWcKLSBTUkNTID0gY3N0X3dhdmUuYyBjc3Rfd2F2ZV9pby5jIGNzdF90cmFjay5jIGNzdF90cmFja19pby5jIFwKLSAgICAgICAgY3N0X3dhdmVfdXRpbHMuYyBjc3RfbHBjcmVzLmMgcmF0ZWNvbnYuYwotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSBGSUxFUyA9IE1ha2VmaWxlICQoSCkgJChTUkNTKQotIExJQk5BTUUgPSBmbGl0ZQotIAotSW5kZXg6IHNyYy93YXZlc3ludGgvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvd2F2ZXN5bnRoL01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy93YXZlc3ludGgvTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMzgsOSArMzgsMTQgQEAKLSBESVJOQU1FPXNyYy93YXZlc3ludGgKLSBCVUlMRF9ESVJTID0gCi0gQUxMX0RJUlM9Ci0raW5jbHVkZSAkKFRPUCkvY29uZmlnL2NvbmZpZwotIFNSQ1MgPSBjc3RfdW5pdHMuYyBjc3Rfc2lncHIuYyBjc3RfY2x1bml0cy5jIGNzdF9kaXBob25lLmMgXAotICAgICAgICBjc3Rfc2lncHJGUC5jIGNzdF9zdHMuYyBjc3RfcmVmbHBjLmMKLS1PQkpTID0gJChTUkNTOi5jPS5vKQotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0gTElCTkFNRSA9IGZsaXRlCi0gRklMRVMgPSBNYWtlZmlsZSAkKFNSQ1MpCi0gCi1JbmRleDogc3JjL3JlZ2V4L01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3JlZ2V4L01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9yZWdleC9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC00Miw4ICs0MiwxMyBAQAotIERJUk5BTUU9c3JjL3JlZ2V4Ci0gQlVJTERfRElSUyA9IAotIEFMTF9ESVJTPSAKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29uZmlnCi0gU1JDUyA9IGNzdF9yZWdleC5jIHJlZ2V4cC5jIHJlZ3N1Yi5jCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpZmRlZiBTSEZMQUdTCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm9zKQotK2Vsc2UKLStPQkpTIDo9ICQoU1JDUzouYz0ubykKLStlbmRpZgotIEZJTEVTID0gTWFrZWZpbGUgJChIKSAkKFNSQ1MpCi0gTElCTkFNRSA9IGZsaXRlCi0gCi1JbmRleDogc3JjL3N0YXRzL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3N0YXRzL01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9zdGF0cy9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC0zOSw4ICszOSwxMyBAQAotIEJVSUxEX0RJUlMgPSAKLSBBTExfRElSUz0gCi0gSCA9IAotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb25maWcKLSBTUkNTID0gY3N0X2NhcnQuYyBjc3Rfdml0ZXJiaS5jIGNzdF9zcy5jCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpZmRlZiBTSEZMQUdTCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm9zKQotK2Vsc2UKLStPQkpTIDo9ICQoU1JDUzouYz0ubykKLStlbmRpZgotIEZJTEVTID0gTWFrZWZpbGUgJChIKSAkKFNSQ1MpCi0gTElCTkFNRSA9IGZsaXRlCi0gCi1JbmRleDogY29uZmlnL2NvbW1vbl9tYWtlX3J1bGVzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2UvY29uZmlnL2NvbW1vbl9tYWtlX3J1bGVzCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL2NvbmZpZy9jb21tb25fbWFrZV9ydWxlcwkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC03MywxMiArNzMsMTMgQEAKLSBpZmRlZiBTSEZMQUdTCi0gU09PQkpTID0gJChPQkpTOi5vPS5vcykKLSBGVUxMU0hPQkpTID0gJChTT09CSlM6JT0kKE9CSkRJUikvJSkKLS1pZmRlZiBMSUJOQU1FCi0tQUxMICs9ICQoT0JKRElSKS8uYnVpbGRfc28KLSsjaWZkZWYgTElCTkFNRQotKyNBTEwgKz0gJChPQkpESVIpLy5idWlsZF9zbwotKyNlbmRpZgotIGVuZGlmCi0tZW5kaWYKLSBpZmRlZiBMSUJOQU1FCi0gQUxMICs9ICQoT0JKRElSKS8uYnVpbGRfbGliCi0rQUxMICs9ICQoT0JKRElSKS8uYnVpbGRfc28KLSBlbmRpZgotICMgT25seSBkbyBzb21lIGRpcmVjdG9yaWVzIHdoZW4geW91IGFyZSBub3QgY3Jvc3MgY29tcGlsaW5nCi0gaWZlcSAoJChIT1NUX1BMQVRGT1JNKSwkKFRBUkdFVF9QTEFURk9STSkpCi1AQCAtMTE3LDE0ICsxMTgsMTcgQEAKLSAJQCB0b3VjaCAkKE9CSkRJUikvLmJ1aWxkX3NvCi0gCi0gIyBVc2VkIGluIHRoZSBsaWIvIGRpcmVjdG9yeSBhbmQgaW4gYnVpbGRpbmcgbmV3IHZvaWNlcwotLSQoT0JKRElSKS8lLnNvOiAlLnNoYXJlZC5hCi0rIyQoT0JKRElSKS8lLnNvOiAlLnNoYXJlZC5hCi0rJS5zbzogJS5zaGFyZWQuYQotIAlAIGVjaG8gbWFraW5nICRACi0gCUAgcm0gLXJmIHNoYXJlZF9vcyAmJiBta2RpciBzaGFyZWRfb3MKLSAJQCBybSAtZiAkQCAkKExJQkRJUikvJEAuJHtQUk9KRUNUX1ZFUlNJT059ICQoTElCRElSKS8kQC4ke1BST0pFQ1RfU0hMSUJfVkVSU0lPTn0gCi0gCUAgKGNkIHNoYXJlZF9vcyAmJiBhciB4IC4uLyQ8KQotIAlAIChjZCBzaGFyZWRfb3MgJiYgJChDQykgLXNoYXJlZCAtV2wsLXNvbmFtZSwkQC4ke1BST0pFQ1RfU0hMSUJfVkVSU0lPTn0gLW8gLi4vJEAuJHtQUk9KRUNUX1ZFUlNJT059ICoub3MpCi0tCUAgbG4gLXMgJChMSUJESVIpLyRALiR7UFJPSkVDVF9WRVJTSU9OfSAkKExJQkRJUikvJEAuJHtQUk9KRUNUX1NITElCX1ZFUlNJT059Ci0tCUAgbG4gLXMgJChMSUJESVIpLyRALiR7UFJPSkVDVF9TSExJQl9WRVJTSU9OfSAkKExJQkRJUikvJEAKLSsJI0AgbG4gLXMgJChMSUJESVIpLyRALiR7UFJPSkVDVF9WRVJTSU9OfSAkKExJQkRJUikvJEAuJHtQUk9KRUNUX1NITElCX1ZFUlNJT059Ci0rCSNAIGxuIC1zICQoTElCRElSKS8kQC4ke1BST0pFQ1RfU0hMSUJfVkVSU0lPTn0gJChMSUJESVIpLyRACi0rCUAgbG4gLXMgJEAuJHtQUk9KRUNUX1ZFUlNJT059ICRALiR7UFJPSkVDVF9TSExJQl9WRVJTSU9OfQotKwlAIGxuIC1zICRALiR7UFJPSkVDVF9TSExJQl9WRVJTSU9OfSAkQAotIAlAIHJtIC1yZiBzaGFyZWRfb3MKLSAKLSAkKE9CSkRJUikvLm1ha2VfYnVpbGRfZGlyczoKLUluZGV4OiBsaWIvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9saWIvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDApCi0rKysgZmxpdGUtMS4zLXJlbGVhc2UvbGliL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTAsMCArMSw3MCBAQAotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgVGVjaG5vbG9naWVzIEluc3RpdHV0ZSAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gdXNlIGFuZCBkaXN0cmlidXRlICAjIwotKyMjICB0aGlzIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAjIwotKyMjICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAjIwotKyMjICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhpcyB3b3JrLCBhbmQgdG8gICAgICAjIwotKyMjICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoaXMgd29yayBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gICAjIwotKyMjICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgMS4gVGhlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiAgICAjIwotKyMjICAgICAgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgMi4gQW55IG1vZGlmaWNhdGlvbnMgbXVzdCBiZSBjbGVhcmx5IG1hcmtlZCBhcyBzdWNoLiAgICAgICAgICAgICAgICAjIwotKyMjICAgMy4gT3JpZ2luYWwgYXV0aG9ycycgbmFtZXMgYXJlIG5vdCBkZWxldGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgNC4gVGhlIGF1dGhvcnMnIG5hbWVzIGFyZSBub3QgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgICAjIwotKyMjICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuICAgICAgICAjIwotKyMjICAgICAgcGVybWlzc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICBDQVJORUdJRSBNRUxMT04gVU5JVkVSU0lUWSBBTkQgVEhFIENPTlRSSUJVVE9SUyBUTyBUSElTIFdPUksgICAgICAgICAjIwotKyMjICBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcgICAgICAjIwotKyMjICBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywgSU4gTk8gRVZFTlQgICAjIwotKyMjICBTSEFMTCBDQVJORUdJRSBNRUxMT04gVU5JVkVSU0lUWSBOT1IgVEhFIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgICAgICAjIwotKyMjICBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyAgICAjIwotKyMjICBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gICAjIwotKyMjICBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCAgICAgICAgICAjIwotKyMjICBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiAgICAgICAjIwotKyMjICBUSElTIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgIEZMSVRFIGxpYnJhcmllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotK1RPUD0uLgotK0RJUk5BTUU9bGliCi0rQlVJTERfRElSUyA9IAotK0FMTF9ESVJTPQotK0ZJTEVTID0gTWFrZWZpbGUKLStMSUJOQU1FUyA9IGZsaXRlIGZsaXRlX2NtdWxleCBmbGl0ZV91c2VuZ2xpc2ggXAotKyAgICAgICAgICAgZmxpdGVfY211X3VzX2thbCBmbGl0ZV9jbXVfdXNfa2FsMTYgZmxpdGVfY211X3RpbWVfYXdiCi0rCi0rU1RBVElDTElCUz0gJChMSUJOQU1FUzolPWxpYiUuYSkKLStTSEFSRURBUkxJQlM9ICQoTElCTkFNRVM6JT1saWIlLnNoYXJlZC5hKQotKyNTSEFSRURMSUJTID0gJChMSUJOQU1FUzolPWxpYiUuc28pCi0rU0hBUkVETElCUyA9ICQoU0hBUkVEQVJMSUJTOiUuc2hhcmVkLmE9JS5zbykKLStWRVJTSU9OU0hBUkVETElCUyA9ICQoU0hBUkVETElCUzolPSUuJHtQUk9KRUNUX1ZFUlNJT059KSBcCi0rICAgICAgICAgICAgICAgICAgICAkKFNIQVJFRExJQlM6JT0lLiR7UFJPSkVDVF9TSExJQl9WRVJTSU9OfSkKLStBTExfTElCUyA9ICQoU1RBVElDTElCUykgJChTSEFSRURMSUJTKSAkKFZFUlNJT05TSEFSRURMSUJTKQotKwotK0FMTCA9IHNoYXJlZF9saWJzCi0rCi0rTE9DQUxfQ0xFQU49Ki5hICouc28gKi5zby4ke1BST0pFQ1RfVkVSU0lPTn0gKi5zby4ke1BST0pFQ1RfU0hMSUJfVkVSU0lPTn0KLSsKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29tbW9uX21ha2VfcnVsZXMKLSsKLStpZmRlZiBTSEZMQUdTCi0rc2hhcmVkX2xpYnM6ICQoU0hBUkVETElCUykKLStlbHNlCi0rc2hhcmVkX2xpYnM6IG5vdGhpbmcKLStlbmRpZgotKwotK2luc3RhbGw6Ci0rCUAgY3AgLXZmICQoTElCRElSKS8qIC4KLSsJQCAkKE1BS0UpIHNoYXJlZF9saWJzCi0rCUAgZWNobyBBUkxJQlM6ICQoU0hBUkVEQVJMSUJTKQotKwlAIGVjaG8gU0hBUkxJQlM6ICQoU0hBUkVETElCUykKLSsJQCB0YXIgY3ZmIC0gJChBTExfTElCUykgfCAoIGNkICQoSU5TVEFMTExJQkRJUikgJiYgdGFyIHhmIC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmJiCmluZGV4IDYxOWQxNDIuLmVjOWUwNGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmJiCkBAIC0yLDcgKzIsMTAgQEAKIAogREVQRU5EUyA9ICJhbHNhLWxpYiB6bGliIGpwZWcgbGlicG5nIGxpYnhleHQgbGlieGZ0IgogCi1pbmhlcml0IGJpbmNvbmZpZyBsaWJfcGFja2FnZSBndGstaWNvbi1jYWNoZSBtaW1lCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBiaW5jb25maWcgbGliX3BhY2thZ2UgZ3RrLWljb24tY2FjaGUgbWltZQorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDMtQ01ha2UtYnVpbGQtRm9yY2Utc2hhcmVkLWxpYnMtd2l0aC11bnN1ZmZpeGVkLW5hbWVzLnBhdGNoIgogCiBFWFRSQV9PRUNNQUtFID0gIiBcCiAgICAgLURPUFRJT05fQlVJTERfU0hBUkVEX0xJQlM9T04gXApAQCAtMTUsNiArMTgsNyBAQAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIGQpfSIKIAogUEFDS0FHRUNPTkZJR1tleGFtcGxlc10gPSAiLURPUFRJT05fQlVJTERfRVhBTVBMRVM9T04sLURPUFRJT05fQlVJTERfRVhBTVBMRVM9T0ZGLCIKK1BBQ0tBR0VDT05GSUdbY2Fpcm9dID0gIi1ET1BUSU9OX0NBSVJPPU9OLC1ET1BUSU9OX0NBSVJPPU9GRixjYWlybyIKIFBBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItRE9QVElPTl9VU0VfR0w9T04sLURPUFRJT05fVVNFX0dMPU9GRix2aXJ0dWFsL2xpYmdsIgogUEFDS0FHRUNPTkZJR1t4aW5lcmFtYV0gPSAiLURPUFRJT05fVVNFX1hJTkVSQU1BPU9OLC1ET1BUSU9OX1VTRV9YSU5FUkFNQT1PRkYsbGlieGluZXJhbWEiCiBQQUNLQUdFQ09ORklHW3hmaXhlc10gPSAiLURPUFRJT05fVVNFX1hGSVhFUz1PTiwtRE9QVElPTl9VU0VfWEZJWEVTPU9GRixsaWJ4Zml4ZXMiCkBAIC0zMSw0ICszNSwxMiBAQAogCiBMRUFEX1NPTkFNRSA9ICJsaWJmbHRrLnNvIgogCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taW1lIgorIyAuZGVza3RvcCAvIGljb25zIC8gbWltZSBvbmx5IG5lY2Vzc2FyeSBmb3IgZmx1aWQgYXBwCitGSUxFU18ke1BOfS1iaW4gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMgXAorICAgICR7ZGF0YWRpcn0vbWltZSBcCisiCisKKyMgY21ha2UgZmlsZXMKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9mbHRrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsvMDAwMy1DTWFrZS1idWlsZC1Gb3JjZS1zaGFyZWQtbGlicy13aXRoLXVuc3VmZml4ZWQtbmFtZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay8wMDAzLUNNYWtlLWJ1aWxkLUZvcmNlLXNoYXJlZC1saWJzLXdpdGgtdW5zdWZmaXhlZC1uYW1lcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjJmOGFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsvMDAwMy1DTWFrZS1idWlsZC1Gb3JjZS1zaGFyZWQtbGlicy13aXRoLXVuc3VmZml4ZWQtbmFtZXMucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBiYzM4ZmI0MTA0NDUwM2M5ZGViZjU3MTA5MTBjNTFkZDI5Njc0YjZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgRGVjIDIwMTcgMjI6MTQ6MDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ01ha2UgYnVpbGQ6IEZvcmNlIHNoYXJlZCBsaWJzIHdpdGggdW5zdWZmaXhlZCBuYW1lcworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitGb3Igd2luZG93cyBidWlsZCBzYWtlIENNYWtlIGNvbXBsYWlucyB3aGVuIGEgcHJvamVjdCB3YW50cyB0byBidWlsZCBzaGFyZWQgYW5kCitzdGF0aWMgbGlicmFyaWVzIHdpdGggc2FtZSBuYW1lLiBUaGlzIGNhdXNlZCB0aGUgYXV0aG9ycyBvZiBmbHRrIHRvIGdlbmVyYXRlCitsaWJyYXJpZXMgd2l0aCBuYW1lcyBzdWZmaXhlZCBieSAnX1NIQVJFRCcgd2hlbiBidWlsZGluZyBmbHRrIHdpdGggY21ha2UgLQorYXV0b3Rvb2xzIGJ1aWxkcyBkbyBub3Qgc3VmZml4LgorCitSZWFzb25zIHRvIGJ1aWxkIHNoYXJlZCBsaWJzIHdpdGggY29ycmVjdCBuYW1lczoKKworKiBTaGFyZWQgbGlicmFyaWVzIGFyZSB0aGUgcHJlZmVycmVkIGNob2ljZSBmb3IgZW1iZWRkZWQgZGV2aWNlcworKiBUaGVyZSBhcmUgcHJvamVjdHMgKGUuZyB5b3NoaW1pKSBleHBlY3Rpbmcgc2hhcmVkIGxpYnJhcmllcyB3aXRoIHVuc3VmZml4ZWQKKyAgbmFtZXMgLSBhcyBjcmVhdGVkIGJ5IGF1dG90b29scyBidWlsZC4gVGhlc2UgcHJvamVjdHMgbGluayBhZ2FpbnN0IHN0YXRpYworICBsaWJyYXJpZXMgYnkgYWNjaWRlbnQgY2F1c2luZyB1bnVzYWJsZSBiaW5hcmllcy4KKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIENNYWtlL21hY3Jvcy5jbWFrZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlL21hY3Jvcy5jbWFrZSBiL0NNYWtlL21hY3Jvcy5jbWFrZQoraW5kZXggNGRlZjYyZC4uYWI2NzVmMCAxMDA2NDQKKy0tLSBhL0NNYWtlL21hY3Jvcy5jbWFrZQorKysrIGIvQ01ha2UvbWFjcm9zLmNtYWtlCitAQCAtNDksNyArNDksNyBAQCBtYWNybyhGTF9BRERfTElCUkFSWSBMSUJOQU1FIExJQlRZUEUgTElCRklMRVMpCisgCSAgICBQUk9QRVJUSUVTCisgCSAgICBWRVJTSU9OICR7RkxUS19WRVJTSU9OX0ZVTEx9CisgCSAgICBTT1ZFUlNJT04gJHtGTFRLX1ZFUlNJT05fTUFKT1J9LiR7RkxUS19WRVJTSU9OX01JTk9SfQorLQkgICAgUFJFRklYICJsaWIiICAgICMgZm9yIE1TVkMgc3RhdGljL3NoYXJlZCBjb2V4aXN0ZW5jZQorKwkgICAgT1VUUFVUX05BTUUgJHtMSUJOQU1FfSBDTEVBTl9ESVJFQ1RfT1VUUFVUIDEKKyAJICAgICkKKyAgICAgZW5kaWYgKCR7TElCVFlQRX0gU1RSRVFVQUwgIlNIQVJFRCIpCisgCistLSAKKzIuOS41CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwLzAwMDEtRmluZEdTdHJlYW1lcl8xXzAtZml4LWJ1aWxkLWZhaWx1cmUtZm9yLW5ldy1nc3RyZWFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwLzAwMDEtRmluZEdTdHJlYW1lcl8xXzAtZml4LWJ1aWxkLWZhaWx1cmUtZm9yLW5ldy1nc3RyZWFtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVmNjQ4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcC8wMDAxLUZpbmRHU3RyZWFtZXJfMV8wLWZpeC1idWlsZC1mYWlsdXJlLWZvci1uZXctZ3N0cmVhbWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1Gcm9tIGJlYTI3ZmQ5MTliNjRlZThkOTc5OTY0MDllMjc5ZTFlODNkMTM1OTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKZWFuLUxvdWlzIER1cG9uZCA8amVhbi1sb3Vpc0BkdXBvbmQuYmU+Ci1EYXRlOiBTdW4sIDQgT2N0IDIwMTUgMTg6MTc6MzMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRmluZEdTdHJlYW1lcl8xXzA6IGZpeCBidWlsZCBmYWlsdXJlIGZvciBuZXcgZ3N0cmVhbWVyCi0gdmVyc2lvbnMKLQotLS0tCi0gY21ha2UvRmluZEdTdHJlYW1lcl8xXzAuY21ha2UgfCAzMCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbWFrZS9GaW5kR1N0cmVhbWVyXzFfMC5jbWFrZSBiL2NtYWtlL0ZpbmRHU3RyZWFtZXJfMV8wLmNtYWtlCi1pbmRleCBmN2JmOTkwLi4zYWE4ZmM2IDEwMDY0NAotLS0tIGEvY21ha2UvRmluZEdTdHJlYW1lcl8xXzAuY21ha2UKLSsrKyBiL2NtYWtlL0ZpbmRHU3RyZWFtZXJfMV8wLmNtYWtlCi1AQCAtNTMsMTcgKzUzLDE3IEBAIHNldChHU1RSRUFNRVJfMV8wX01JTklNVU1fVkVSU0lPTiAxLjAuNSkKLSAjIEhlbHBlciBtYWNybyB0byBmaW5kIGEgR3N0cmVhbWVyIHBsdWdpbiAob3IgR3N0cmVhbWVyIGl0c2VsZikKLSAjICAgX2NvbXBvbmVudF9wcmVmaXggaXMgcHJlcGVuZGVkIHRvIHRoZSBfSU5DTFVERV9ESVJTIGFuZCBfTElCUkFSSUVTIHZhcmlhYmxlcyAoZWcuICJHU1RSRUFNRVJfMV8wX0FVRElPIikKLSAjICAgX3BrZ2NvbmZpZ19uYW1lIGlzIHRoZSBjb21wb25lbnQncyBwa2ctY29uZmlnIG5hbWUgKGVnLiAiZ3N0cmVhbWVyLTEuMCIsIG9yICJnc3RyZWFtZXItdmlkZW8tMS4wIikuCi0tIyAgIF9oZWFkZXIgaXMgdGhlIGNvbXBvbmVudCdzIGhlYWRlciwgcmVsYXRpdmUgdG8gdGhlIGdzdHJlYW1lci0xLjAgZGlyZWN0b3J5IChlZy4gImdzdC9nc3QuaCIpLgotICMgICBfbGlicmFyeSBpcyB0aGUgY29tcG9uZW50J3MgbGlicmFyeSBuYW1lIChlZy4gImdzdHJlYW1lci0xLjAiIG9yICJnc3R2aWRlby0xLjAiKQotLW1hY3JvKEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVCBfY29tcG9uZW50X3ByZWZpeCBfcGtnY29uZmlnX25hbWUgX2hlYWRlciBfbGlicmFyeSkKLSttYWNybyhGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQgX2NvbXBvbmVudF9wcmVmaXggX3BrZ2NvbmZpZ19uYW1lIF9saWJyYXJ5KQotICAgICAjIEZJWE1FOiBUaGUgUVVJRVQga2V5d29yZCBjYW4gYmUgdXNlZCBvbmNlIHdlIHJlcXVpcmUgQ01ha2UgMi44LjIuCi0tICAgIHBrZ19jaGVja19tb2R1bGVzKFBDXyR7X2NvbXBvbmVudF9wcmVmaXh9ICR7X3BrZ2NvbmZpZ19uYW1lfSkKLSAKLS0gICAgZmluZF9wYXRoKCR7X2NvbXBvbmVudF9wcmVmaXh9X0lOQ0xVREVfRElSUwotLSAgICAgICAgTkFNRVMgJHtfaGVhZGVyfQotLSAgICAgICAgSElOVFMgJHtQQ18ke19jb21wb25lbnRfcHJlZml4fV9JTkNMVURFX0RJUlN9ICR7UENfJHtfY29tcG9uZW50X3ByZWZpeH1fSU5DTFVERURJUn0KLS0gICAgICAgIFBBVEhfU1VGRklYRVMgZ3N0cmVhbWVyLTEuMAotLSAgICApCi0rICAgIHN0cmluZyhSRUdFWCBNQVRDSCAiKC4qKT49KC4qKSIgX2R1bW15ICIke19wa2djb25maWdfbmFtZX0iKQotKyAgICBpZiAoIiR7Q01BS0VfTUFUQ0hfMn0iIFNUUkVRVUFMICIiKQotKyAgICAgICAgcGtnX2NoZWNrX21vZHVsZXMoUENfJHtfY29tcG9uZW50X3ByZWZpeH0gIiR7X3BrZ2NvbmZpZ19uYW1lfSA+PSAke0dTdHJlYW1lcl9GSU5EX1ZFUlNJT059IikKLSsgICAgZWxzZSAoKQotKyAgICAgICAgcGtnX2NoZWNrX21vZHVsZXMoUENfJHtfY29tcG9uZW50X3ByZWZpeH0gJHtfcGtnY29uZmlnX25hbWV9KQotKyAgICBlbmRpZiAoKQotKyAgICBzZXQoJHtfY29tcG9uZW50X3ByZWZpeH1fSU5DTFVERV9ESVJTICR7UENfJHtfY29tcG9uZW50X3ByZWZpeH1fSU5DTFVERV9ESVJTfSkKLSAKLSAgICAgZmluZF9saWJyYXJ5KCR7X2NvbXBvbmVudF9wcmVmaXh9X0xJQlJBUklFUwotICAgICAgICAgTkFNRVMgJHtfbGlicmFyeX0gZ3N0cmVhbWVyX2FuZHJvaWQKLUBAIC03OCw4ICs3OCw4IEBAIGVuZG1hY3JvKCkKLSAjIDEuMS4gRmluZCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMKLSBzZXQoR0xJQl9ST09UX0RJUiAke0dTVFJFQU1FUl8xXzBfUk9PVF9ESVJ9KQotIGZpbmRfcGFja2FnZShHbGliIFJFUVVJUkVEKQotLUZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wIGdzdHJlYW1lci0xLjAgZ3N0L2dzdC5oIGdzdHJlYW1lci0xLjApCi0tRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl8xXzBfQkFTRSBnc3RyZWFtZXItYmFzZS0xLjAgZ3N0L2dzdC5oIGdzdGJhc2UtMS4wKQotK0ZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wIGdzdHJlYW1lci0xLjAgZ3N0cmVhbWVyLTEuMCkKLStGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9CQVNFIGdzdHJlYW1lci1iYXNlLTEuMCBnc3RiYXNlLTEuMCkKLSAKLSAjIDEuMi4gQ2hlY2sgR3N0cmVhbWVyIHZlcnNpb24KLSBpZiAoR1NUUkVBTUVSXzFfMF9JTkNMVURFX0RJUlMpCi1AQCAtMTEwLDExICsxMTAsMTEgQEAgZW5kaWYgKCkKLSAjIDIuIEZpbmQgR3N0cmVhbWVyIHBsdWdpbnMKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLS1GSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9BUFAgZ3N0cmVhbWVyLWFwcC0xLjAgZ3N0L2FwcC9nc3RhcHBzaW5rLmggZ3N0YXBwLTEuMCkKLS1GSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9BVURJTyBnc3RyZWFtZXItYXVkaW8tMS4wIGdzdC9hdWRpby9hdWRpby5oIGdzdGF1ZGlvLTEuMCkKLS1GSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9GRlQgZ3N0cmVhbWVyLWZmdC0xLjAgZ3N0L2ZmdC9nc3RmZnQuaCBnc3RmZnQtMS4wKQotLUZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wX1BCVVRJTFMgZ3N0cmVhbWVyLXBidXRpbHMtMS4wIGdzdC9wYnV0aWxzL3BidXRpbHMuaCBnc3RwYnV0aWxzLTEuMCkKLS1GSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9WSURFTyBnc3RyZWFtZXItdmlkZW8tMS4wIGdzdC92aWRlby92aWRlby5oIGdzdHZpZGVvLTEuMCkKLStGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9BUFAgZ3N0cmVhbWVyLWFwcC0xLjAgZ3N0YXBwLTEuMCkKLStGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9BVURJTyBnc3RyZWFtZXItYXVkaW8tMS4wIGdzdGF1ZGlvLTEuMCkKLStGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9GRlQgZ3N0cmVhbWVyLWZmdC0xLjAgZ3N0ZmZ0LTEuMCkKLStGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9QQlVUSUxTIGdzdHJlYW1lci1wYnV0aWxzLTEuMCBnc3RwYnV0aWxzLTEuMCkKLStGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9WSURFTyBnc3RyZWFtZXItdmlkZW8tMS4wIGdzdHZpZGVvLTEuMCkKLSAKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICMgMy4gUHJvY2VzcyB0aGUgQ09NUE9ORU5UUyBwYXNzZWQgdG8gRklORF9QQUNLQUdFCi0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwLzAwMDEtRml4LWdzdHJlYW1lci0xLjAtZGV0ZWN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHAvMDAwMS1GaXgtZ3N0cmVhbWVyLTEuMC1kZXRlY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU2N2NiYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwLzAwMDEtRml4LWdzdHJlYW1lci0xLjAtZGV0ZWN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMzY4OTg5NTI2YzMyY2RmOWQ2ODBhMzk3ZmVkZTNjYjc3M2ZhMjYwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pa2UgR2lsYmVydCA8ZmxvcHB5bUBnZW50b28ub3JnPgorRGF0ZTogRnJpLCAyOCBKdWwgMjAxNyAxNjozMTo0MSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBGaXggZ3N0cmVhbWVyLTEuMCBkZXRlY3Rpb24KKworVXBzdHJlYW0gU3RhdGU6IEJhY2twb3J0CisKKy0tLQorIGNtYWtlL0ZpbmRHU3RyZWFtZXJfMV8wLmNtYWtlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY21ha2UvRmluZEdTdHJlYW1lcl8xXzAuY21ha2UgYi9jbWFrZS9GaW5kR1N0cmVhbWVyXzFfMC5jbWFrZQoraW5kZXggM2FhOGZjNi4uNmZiYzBlYyAxMDA2NDQKKy0tLSBhL2NtYWtlL0ZpbmRHU3RyZWFtZXJfMV8wLmNtYWtlCisrKysgYi9jbWFrZS9GaW5kR1N0cmVhbWVyXzFfMC5jbWFrZQorQEAgLTU5LDcgKzU5LDcgQEAgbWFjcm8oRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UIF9jb21wb25lbnRfcHJlZml4IF9wa2djb25maWdfbmFtZSBfbGlicmFyeSkKKyAKKyAgICAgc3RyaW5nKFJFR0VYIE1BVENIICIoLiopPj0oLiopIiBfZHVtbXkgIiR7X3BrZ2NvbmZpZ19uYW1lfSIpCisgICAgIGlmICgiJHtDTUFLRV9NQVRDSF8yfSIgU1RSRVFVQUwgIiIpCistICAgICAgICBwa2dfY2hlY2tfbW9kdWxlcyhQQ18ke19jb21wb25lbnRfcHJlZml4fSAiJHtfcGtnY29uZmlnX25hbWV9ID49ICR7R1N0cmVhbWVyX0ZJTkRfVkVSU0lPTn0iKQorKyAgICAgICAgcGtnX2NoZWNrX21vZHVsZXMoUENfJHtfY29tcG9uZW50X3ByZWZpeH0gIiR7X3BrZ2NvbmZpZ19uYW1lfSA+PSAke0dTVFJFQU1FUl8xXzBfTUlOSU1VTV9WRVJTSU9OfSIpCisgICAgIGVsc2UgKCkKKyAgICAgICAgIHBrZ19jaGVja19tb2R1bGVzKFBDXyR7X2NvbXBvbmVudF9wcmVmaXh9ICR7X3BrZ2NvbmZpZ19uYW1lfSkKKyAgICAgZW5kaWYgKCkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHAvMDAwMy1hZGQtbWlzc2luZy1kZWZpbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcC8wMDAzLWFkZC1taXNzaW5nLWRlZmluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjIwZWRlZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcC8wMDAzLWFkZC1taXNzaW5nLWRlZmluZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLWxpYndpbnByL2NvbW1fc2VyaWE6IGZpeCBtaXNzaW5nIGRlZmluZQotCi1GcmVlUkRQIHVzZXMgQ01TUEFSLCB3aGljaCBpcyBkZWZpbmVkIGJ5IGdsaWJjIGluIGJpdHMvdGVybWlvcy5oIC4KLQotZ2xpYmMgaGFzIHR3byBmbGF2b3VycyBvZiBiaXRzL3Rlcm1pb3MuaDogYSBnZW5tZXJpYyBvbmUgYW5kIGFuCi1hcmNoaXRlY3R1cmUtc3BlY2lmaWMgb25lLiBXaGVuIGluc3RhbGxpbmcsIGdsaWJjIHdpbGwgaW5zdGFsbCB0aGUKLWFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmaWxlIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIGl0IGluc3RhbGxzIHRoZQotZ2VuZXJpYyBmaWxlLiBPbmx5IEFscGhhLCBNSVBTLCBQUEMgYW5kIFNwYXJjIGhhdmUgdGhlaXIgb3duCi1iaXRzL3Rlcm1pb3MuaC4KLQotVGhlIGdlbmVyaWMgYml0cy90ZXJtaW9zLmgsIGFzIHdlbGwgYXMgdGhlIEFscGhhLCBQUEMgYW5kIFNwYXJjIGZsYXZvdXJzCi1kbyBkZWZpbmUgQ01TUEFSLiBIb3dldmVyLCB0aGUgTUlQUyBmbGF2b3VyIGRvZXMgbm90IGRlZmluZSBpdC4KLQotRGVmaW5lIENNU1BBUiB0byB0aGUgdmFsdWUgZnJvbSB0aGUgZ2VuZXJpYyB2YWx1ZSwgd2hpY2ggaXMgYWxzbyB0aGUKLXZhbHVlIGtub3duIHRvIHRoZSBMaW51eCBrZXJuZWwgZm9yIE1JUFMuCi0KLUZpeGVzOgotICAgIGh0dHA6Ly9hdXRvYnVpbGQuYnVpbGRyb290Lm9yZy9yZXN1bHRzLzBiNC8wYjQ3OTNmMGJmOWY0YzU3OTMzODk3ZjM0ODAwNTRhNGUwNjUyOGFkLwotICAgIGh0dHA6Ly9hdXRvYnVpbGQuYnVpbGRyb290Lm9yZy9yZXN1bHRzLzdhMi83YTIyODRkMGEyOTg3MTU4ZmEyZTc4Zjc4OWIwN2M4YzZmY2RiOTc0LwotICAgIGh0dHA6Ly9hdXRvYnVpbGQuYnVpbGRyb290Lm9yZy9yZXN1bHRzLzM4Ny8zODc0MDg4YzNjY2Q0YmJmNzZlYTBjOTExY2ExZWY2NGM3ZGM5ZDFjLwotICAgIC4uLgotCi1TaWduZWQtb2ZmLWJ5OiAiWWFubiBFLiBNT1JJTiIgPHlhbm4ubW9yaW4uMTk5OEBmcmVlLmZyPgotQ2M6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHVjbGliYy5vcmc+Ci1DYzogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+Ci0KLWRpZmYgLWR1ck4gZnJlZXJkcC0xNzgzNGFmN2JiMzc4Zjg1YTNiM2NjNGRjYWRhYTUxMjVhMzM3ZTE2Lm9yaWcvd2lucHIvbGlid2lucHIvY29tbS9jb21tX3NlcmlhbF9zeXMuYyBmcmVlcmRwLTE3ODM0YWY3YmIzNzhmODVhM2IzY2M0ZGNhZGFhNTEyNWEzMzdlMTYvd2lucHIvbGlid2lucHIvY29tbS9jb21tX3NlcmlhbF9zeXMuYwotLS0tIGZyZWVyZHAtMTc4MzRhZjdiYjM3OGY4NWEzYjNjYzRkY2FkYWE1MTI1YTMzN2UxNi5vcmlnL3dpbnByL2xpYndpbnByL2NvbW0vY29tbV9zZXJpYWxfc3lzLmMJMjAxNS0wOS0wNCAxNjoyMDoxNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBmcmVlcmRwLTE3ODM0YWY3YmIzNzhmODVhM2IzY2M0ZGNhZGFhNTEyNWEzMzdlMTYvd2lucHIvbGlid2lucHIvY29tbS9jb21tX3NlcmlhbF9zeXMuYwkyMDE1LTEwLTA0IDExOjA3OjQxLjg2ODUxMzcyNiArMDEwMAotQEAgLTI3LDYgKzI3LDE0IEBACi0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDx0ZXJtaW9zLmg+Ci0rCi0rLyogZ2xpYmMgZm9yIE1JUFMgaGFzIGl0cyBvd24gYml0cy90ZXJtaW9zLmggd2hpY2ggZG9lcyBub3QgZGVmaW5lCi0rICogQ01TUEFSLCBzbyB3ZSB2YW1waXJpc2UgdGhlIHZhbHVlIGZyb20gdGhlIGdlbmVyaWMgYml0cy90ZXJtaW9zLmgKLSsgKi8KLSsjaWZuZGVmIENNU1BBUgotKyNkZWZpbmUgQ01TUEFSIDAxMDAwMDAwMDAwMAotKyNlbmRpZgotKwotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjaW5jbHVkZSAiY29tbV9zZXJpYWxfc3lzLmgiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwL3dpbnByLW1ha2VjZXJ0LUJ1aWxkLXdpdGgtaW5zdGFsbC1SUEFUSC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwL3dpbnByLW1ha2VjZXJ0LUJ1aWxkLXdpdGgtaW5zdGFsbC1SUEFUSC5wYXRjaAppbmRleCBkMjc5ZDZkLi4wZDdkY2MyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcC93aW5wci1tYWtlY2VydC1CdWlsZC13aXRoLWluc3RhbGwtUlBBVEgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHAvd2lucHItbWFrZWNlcnQtQnVpbGQtd2l0aC1pbnN0YWxsLVJQQVRILnBhdGNoCkBAIC0xLDMxICsxLDMxIEBACi1Gcm9tIDI1M2VhZmM4YzhkYTgzZmMyYjFhOTlhOWU0MzgyNGVmYzYxMDVjN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYW51ZWwgQmFjaG1hbm4gPG1hbnVlbC5iYWNobWFubkBpb3QuYnpoPgotRGF0ZTogU3VuLCA0IE9jdCAyMDE1IDEwOjQ0OjQ5ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIHdpbnByLW1ha2VjZXJ0OiBCdWlsZCB3aXRoIGluc3RhbGwgUlBBVEgKIAogQXMgd2UgYXJlIGluc3RhbGxpbmcgIndpbnByLW1ha2VjZXJ0IiBtYW51YWxseSwgd2UgZG8gd2FudAogdG8gcmVmZXIgdG8gdGhlIGxpYnJhcnkgaW4gREVTVERJUiwgbm90IHRoZSBvbmUgcmVzdGluZyBpbgogdGhlIGJ1aWxkIHRyZWUuCiAKLVNpZ25lZC1vZmYtYnk6IE1hbnVlbCBCYWNobWFubiA8bWFudWVsLmJhY2htYW5uQGlvdC5iemg+Ci0tLS0KLSB3aW5wci90b29scy9tYWtlY2VydC9jbGkvQ01ha2VMaXN0cy50eHQgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCitVcGRhdGUgaXQgZm9yIDIuMC4wLgogCi1kaWZmIC0tZ2l0IGEvd2lucHIvdG9vbHMvbWFrZWNlcnQvY2xpL0NNYWtlTGlzdHMudHh0IGIvd2lucHIvdG9vbHMvbWFrZWNlcnQvY2xpL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAxNzk1NGM0Li45MGM0NDZiIDEwMDY0NAotLS0tIGEvd2lucHIvdG9vbHMvbWFrZWNlcnQvY2xpL0NNYWtlTGlzdHMudHh0Ci0rKysgYi93aW5wci90b29scy9tYWtlY2VydC9jbGkvQ01ha2VMaXN0cy50eHQKLUBAIC00NSw1ICs0NSw5IEBAIHNldCgke01PRFVMRV9QUkVGSVh9X0xJQlMgd2lucHItbWFrZWNlcnQtdG9vbCkKK1NpZ25lZC1vZmYtYnk6IE1hbnVlbCBCYWNobWFubiA8bWFudWVsLmJhY2htYW5uQGlvdC5iemg+CitTaWduZWQtb2ZmLWJ5OiBaaGVuZyBSdW9xaW4gPHpoZW5ncnEuZm5zdEBjbi5mdWppdHN1LmNvbT4KKy0tLQorIHdpbnByL3Rvb2xzL21ha2VjZXJ0LWNsaS9DTWFrZUxpc3RzLnR4dCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvd2lucHIvdG9vbHMvbWFrZWNlcnQtY2xpL0NNYWtlTGlzdHMudHh0IGIvd2lucHIvdG9vbHMvbWFrZWNlcnQtY2xpL0NNYWtlTGlzdHMudHh0CitpbmRleCA3NGFmYTA5Li44ZDAwZWYxIDEwMDY0NAorLS0tIGEvd2lucHIvdG9vbHMvbWFrZWNlcnQtY2xpL0NNYWtlTGlzdHMudHh0CisrKysgYi93aW5wci90b29scy9tYWtlY2VydC1jbGkvQ01ha2VMaXN0cy50eHQKK0BAIC00NCw2ICs0NCw5IEBAIHNldCgke01PRFVMRV9QUkVGSVh9X0xJQlMgd2lucHItdG9vbHMpCiAgCiAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7TU9EVUxFX05BTUV9ICR7JHtNT0RVTEVfUFJFRklYfV9MSUJTfSkKICAKLStzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtNT0RVTEVfTkFNRX0gUFJPUEVSVElFUyAKLSsJQlVJTERfV0lUSF9JTlNUQUxMX1JQQVRIIDEpCisrc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7TU9EVUxFX05BTUV9IFBST1BFUlRJRVMKKysgICAgICAgQlVJTERfV0lUSF9JTlNUQUxMX1JQQVRIIDEpCiArCiAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke01PRFVMRV9OQU1FfSBQUk9QRVJUWSBGT0xERVIgIldpblBSL1Rvb2xzIikKICAKLSsKKyBpbnN0YWxsKFRBUkdFVFMgJHtNT0RVTEVfTkFNRX0gREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0gQ09NUE9ORU5UIHRvb2xzIEVYUE9SVCBXaW5QUlRhcmdldHMpCiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwX2dpdC5iYgppbmRleCBmMGFhMWI2Li44OGFlYzljIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHBfZ2l0LmJiCkBAIC0xMCwxNCArMTAsMTMgQEAKIAogaW5oZXJpdCBwa2djb25maWcgY21ha2UgZ2l0cGtndgogCi1QViA9ICIxLjIuNStnaXRyJHtTUkNQVn0iCitQViA9ICIyLjAuMCtnaXRyJHtTUkNQVn0iCiBQS0dWID0gIiR7R0lUUEtHVlRBR30iCiAKLVNSQ1JFViA9ICI2MmRhOWQyOGM2NzQ4MTRjODFjMjQ1YzFjNzg4MmViMGRhN2JlNzZiIgorU1JDUkVWID0gIjE2NDhkZWI0MzVhZDUyMjA2ZjdhYTJhZmU0YjRkZmY3MWQ5MzI5YmMiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vRnJlZVJEUC9GcmVlUkRQLmdpdCBcCiAgICAgZmlsZTovL3dpbnByLW1ha2VjZXJ0LUJ1aWxkLXdpdGgtaW5zdGFsbC1SUEFUSC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtRmluZEdTdHJlYW1lcl8xXzAtZml4LWJ1aWxkLWZhaWx1cmUtZm9yLW5ldy1nc3RyZWFtZS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtYWRkLW1pc3NpbmctZGVmaW5lLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1GaXgtZ3N0cmVhbWVyLTEuMC1kZXRlY3Rpb24ucGF0Y2ggXAogIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtNTcsNyArNTYsNyBAQAogIyB3ZSB3aWxsIG5lZWQgd2lucHItbWFrZWNlcnQgdG8gZ2VuZXJhdGUgVExTIGNlcnRpZmljYXRlcwogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW03NTUgd2lucHIvdG9vbHMvbWFrZWNlcnQvY2xpL3dpbnByLW1ha2VjZXJ0ICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tNzU1IHdpbnByL3Rvb2xzL21ha2VjZXJ0LWNsaS93aW5wci1tYWtlY2VydCAke0R9JHtiaW5kaXJ9CiAgICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vY21ha2UKICAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9mcmVlcmRwCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkzMmJiNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJnZCBpcyBhIGxpYnJhcnkgdXNlZCB0byBjcmVhdGUgUE5HLCBKUEVHLCBvciBXQk1QIGltYWdlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBnZCBncmFwaGljcyBsaWJyYXJ5IGFsbG93cyB5b3VyIGNvZGUgdG8gcXVpY2tseSBkcmF3IGltYWdlcyBcCi1jb21wbGV0ZSB3aXRoIGxpbmVzLCBhcmNzLCB0ZXh0LCBtdWx0aXBsZSBjb2xvcnMsIGN1dCBhbmQgcGFzdGUgZnJvbSBvdGhlciBcCi1pbWFnZXMsIGFuZCBmbG9vZCBmaWxscywgYW5kIHRvIHdyaXRlIG91dCB0aGUgcmVzdWx0IGFzIGEgUE5HIG9yIEpQRUcgZmlsZS4gXAotVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGluIFdlYiBhcHBsaWNhdGlvbnMsIHdoZXJlIFBORyBhbmQgSlBFRyBhcmUgdHdvIFwKLW9mIHRoZSBmb3JtYXRzIGFjY2VwdGVkIGZvciBpbmxpbmUgaW1hZ2VzIGJ5IG1vc3QgYnJvd3NlcnMuIE5vdGUgdGhhdCBnZCBpcyBub3QgXAotYSBwYWludCBwcm9ncmFtLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJnZC5iaXRidWNrZXQub3JnLyIKLQotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJHRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA3Mzg0YjNhYTJlMGQzOWFmY2EwZDZjNDAyODZmNTQ1IgotCi1ERVBFTkRTID0gImZyZWV0eXBlIGxpYnBuZyBqcGVnIHpsaWIgdGlmZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYmdkL2xpYmdkLmdpdDticmFuY2g9R0QtMi4yIFwKLSAgICAgICAgICAiCi0KLVNSQ1JFViA9ICJkZTA5ODc0YjE1YTRjODg3NzJkYjM1Y2VkODQyMzMwZjVkZTIzZTc2IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWcgZ2V0dGV4dCBwa2djb25maWcKLQotRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAgICAgICAgICAgICAgIC0td2l0aC1qcGVnPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICAgIC0td2l0aC1mcmVldHlwZT15ZXMgXAotICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWZvbnRjb25maWcgXAotICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXdlYnAgXAotICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXhwbSBcCi0gICAgICAgICAgICAgICAgICAtLXdpdGhvdXQteCBcCi0gICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRU1BS0UgPSAnTERGTEFHUz0iJHtMREZMQUdTfSInCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gZ2RsaWIucGMKLSAgICBzZWQgLWkgLWUgJ3MjJHtTVEFHSU5HX0RJUl9IT1NUfSMjZycgJHtEfSR7bGliZGlyfS9wa2djb25maWcvZ2RsaWIucGMKLX0KLQotUEFDS0FHRVMgKz0gIiR7UE59LXRvb2xzIgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgotCi1QUk9WSURFUyArPSAiJHtQTn0tdG9vbHMiCi1SUFJPVklERVNfJHtQTn0tdG9vbHMgPSAiJHtQTn0tdG9vbHMiCi1SREVQRU5EU18ke1BOfS10b29scyA9ICJwZXJsIHBlcmwtbW9kdWxlLXN0cmljdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZDlhY2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi41LmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiZ2QgaXMgYSBsaWJyYXJ5IHVzZWQgdG8gY3JlYXRlIFBORywgSlBFRywgb3IgV0JNUCBpbWFnZXMiCitERVNDUklQVElPTiA9ICJUaGUgZ2QgZ3JhcGhpY3MgbGlicmFyeSBhbGxvd3MgeW91ciBjb2RlIHRvIHF1aWNrbHkgZHJhdyBpbWFnZXMgXAorY29tcGxldGUgd2l0aCBsaW5lcywgYXJjcywgdGV4dCwgbXVsdGlwbGUgY29sb3JzLCBjdXQgYW5kIHBhc3RlIGZyb20gb3RoZXIgXAoraW1hZ2VzLCBhbmQgZmxvb2QgZmlsbHMsIGFuZCB0byB3cml0ZSBvdXQgdGhlIHJlc3VsdCBhcyBhIFBORyBvciBKUEVHIGZpbGUuIFwKK1RoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBpbiBXZWIgYXBwbGljYXRpb25zLCB3aGVyZSBQTkcgYW5kIEpQRUcgYXJlIHR3byBcCitvZiB0aGUgZm9ybWF0cyBhY2NlcHRlZCBmb3IgaW5saW5lIGltYWdlcyBieSBtb3N0IGJyb3dzZXJzLiBOb3RlIHRoYXQgZ2QgaXMgbm90IFwKK2EgcGFpbnQgcHJvZ3JhbS4iCitIT01FUEFHRSA9ICJodHRwOi8vbGliZ2QuYml0YnVja2V0Lm9yZy8iCisKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiR0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNzM4NGIzYWEyZTBkMzlhZmNhMGQ2YzQwMjg2ZjU0NSIKKworREVQRU5EUyA9ICJmcmVldHlwZSBsaWJwbmcganBlZyB6bGliIHRpZmYiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saWJnZC9saWJnZC5naXQ7YnJhbmNoPUdELTIuMiBcCisgICAgICAgICAgIgorCitTUkNSRVYgPSAiODI1NTIzMWI2ODg4OTU5N2QwNGQ0NTFhNzI0MzhhYjkyYTQwNWFiYSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnIGdldHRleHQgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgICAtLXdpdGgtanBlZz0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisgICAgICAgICAgICAgICAgICAtLXdpdGgtZnJlZXR5cGU9eWVzIFwKKyAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1mb250Y29uZmlnIFwKKyAgICAgICAgICAgICAgICAgIC0td2l0aG91dC13ZWJwIFwKKyAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14cG0gXAorICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXggXAorICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VNQUtFID0gJ0xERkxBR1M9IiR7TERGTEFHU30iJworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGdkbGliLnBjCisgICAgc2VkIC1pIC1lICdzIyR7U1RBR0lOR19ESVJfSE9TVH0jI2cnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2dkbGliLnBjCit9CisKK1BBQ0tBR0VTICs9ICIke1BOfS10b29scyIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30iCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKKworUFJPVklERVMgKz0gIiR7UE59LXRvb2xzIgorUlBST1ZJREVTXyR7UE59LXRvb2xzID0gIiR7UE59LXRvb2xzIgorUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAicGVybCBwZXJsLW1vZHVsZS1zdHJpY3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dmbGFncy9nZmxhZ3NfMi4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dmbGFncy9nZmxhZ3NfMi4yLjAuYmIKaW5kZXggMGU4NWIzZi4uMjhiNjUyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZmxhZ3MvZ2ZsYWdzXzIuMi4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2ZsYWdzL2dmbGFnc18yLjIuMC5iYgpAQCAtMTksMyArMTksNSBAQAogUEFDS0FHRVMgPSsgIiR7UE59LWJhc2gtY29tcGxldGlvbiIKIEZJTEVTXyR7UE59LWJhc2gtY29tcGxldGlvbiArPSAiJHtiaW5kaXJ9L2dmbGFnc19jb21wbGV0aW9ucy5zaCIKIFJERVBFTkRTXyR7UE59LWJhc2gtY29tcGxldGlvbiA9ICJiYXNoIGJhc2gtY29tcGxldGlvbiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dudWxpYi9nbnVsaWJfMjAxNy0wOC0yMC4xOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ251bGliL2dudWxpYl8yMDE3LTA4LTIwLjE4LmJiCmluZGV4IGI1MDVhYzEuLmI3MmZmYTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ251bGliL2dudWxpYl8yMDE3LTA4LTIwLjE4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ251bGliL2dudWxpYl8yMDE3LTA4LTIwLjE4LmJiCkBAIC0yOSw4ICsyOSw4IEBACiBkb19jb21waWxlW25vZXhlY10gPSAiMSIKIGRvX3BhY2thZ2Vbbm9leGVjXSA9ICIxIgogZG9fcGFja2FnZWRhdGFbbm9leGVjXSA9ICIxIgotZG9fcGFja2FnZV93cml0ZV9pcGtbbm9leGVjXSA9ICIxIgotZG9fcGFja2FnZV93cml0ZV9kZWJbbm9leGVjXSA9ICIxIgotZG9fcGFja2FnZV93cml0ZV9ycG1bbm9leGVjXSA9ICIxIgorZGVsdGFzayBwYWNrYWdlX3dyaXRlX2lwaworZGVsdGFzayBwYWNrYWdlX3dyaXRlX2RlYgorZGVsdGFzayBwYWNrYWdlX3dyaXRlX3JwbQogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtU3VwcG9ydC1BdG9taWMtb3BzLW9uLWNsYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1TdXBwb3J0LUF0b21pYy1vcHMtb24tY2xhbmcucGF0Y2gKaW5kZXggZTU4MmMwZC4uMmZkMjFjMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1TdXBwb3J0LUF0b21pYy1vcHMtb24tY2xhbmcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1TdXBwb3J0LUF0b21pYy1vcHMtb24tY2xhbmcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGVhOWY2NGViMmNkZjNiZTZjNGRjNjVmYTE0NzJkODU0NjE2ZTQzY2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGFhMGE2MzIwOWFmNjgxM2Q4NzI1NWVjM2FiMzM5ZjJkYmJmMjdkNmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCA2IE1hciAyMDE3IDEzOjM4OjQ2IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIFN1cHBvcnQgQXRvbWljIG9wcyBvbiBjbGFuZwpAQCAtOSwyNSArOSwyMyBAQAogdGhlIGF0b21pY3MgYW5kIGZhaWxzIGZvciBjbGFuZwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCisKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCistLS0KICBzcmMvYmFzZS9hdG9taWNvcHMuaCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2F0b21pY29wcy5oIGIvc3JjL2Jhc2UvYXRvbWljb3BzLmgKLWluZGV4IGJlMDM4ZjMuLmYxYTIxZmYgMTAwNjQ0CitpbmRleCBkYWM5NWJlLi4zOTA3MzNjIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2UvYXRvbWljb3BzLmgKICsrKyBiL3NyYy9iYXNlL2F0b21pY29wcy5oCi1AQCAtMTE4LDcgKzExOCw3IEBACitAQCAtMTI0LDcgKzEyNCw3IEBACiAgI2luY2x1ZGUgImJhc2UvYXRvbWljb3BzLWludGVybmFscy1saW51eHBwYy5oIgogICNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19taXBzX18pCiAgI2luY2x1ZGUgImJhc2UvYXRvbWljb3BzLWludGVybmFscy1taXBzLmgiCiAtI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgR0NDX1ZFUlNJT04gPj0gNDA3MDAKICsjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBHQ0NfVkVSU0lPTiA+PSA0MDcwMCB8fCBkZWZpbmVkKF9fY2xhbmdfXykKICAjaW5jbHVkZSAiYmFzZS9hdG9taWNvcHMtaW50ZXJuYWxzLWdjYy5oIgotICNlbHNlCi0gI2Vycm9yIFlvdSBuZWVkIHRvIGltcGxlbWVudCBhdG9taWMgb3BlcmF0aW9ucyBmb3IgdGhpcyBhcmNoaXRlY3R1cmUKLS0tIAotMi4xMi4wCi0KKyAjZWxpZiBkZWZpbmVkKF9fY2xhbmdfXykgJiYgQ0xBTkdfVkVSU0lPTiA+PSAzMDQwMAorICNpbmNsdWRlICJiYXNlL2F0b21pY29wcy1pbnRlcm5hbHMtZ2NjLmgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb250ZXh0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29udGV4dC5wYXRjaAppbmRleCA1YmQwYjZmLi5iMzAzMzYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb250ZXh0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbnRleHQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDEyYWMwZGM2NzQyZTFiY2RmYWYxODQyMTg2YzkwMDJmMDgyMGE1ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDIzMGNkODQ0ODYxNDVjNWJiMWQ2OWQ0YzlhNTQ0ZTAwYWRiY2M5YjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAxIEp1bCAyMDE3IDEzOjIxOjIxIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIFVzZSB1Y29udGV4dF90IGluc3RlYWQgb2Ygc3RydWN0IHVjb250ZXh0CkBAIC02LDEyICs2LDEzIEBACiBOZXdlciBnbGliYyBoYXMgZHJvcHBlZCB0aGUgdWNvbnRleHQgdGFnIGZyb20gZXhwb3NpbmcKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgc3JjL3N0YWNrdHJhY2VfcG93ZXJwYy1saW51eC1pbmwuaCB8IDMgKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3N0YWNrdHJhY2VfcG93ZXJwYy1saW51eC1pbmwuaCBiL3NyYy9zdGFja3RyYWNlX3Bvd2VycGMtbGludXgtaW5sLmgKLWluZGV4IGE5YmY3NzUuLjQ3ZmYyZDcgMTAwNjQ0CitpbmRleCAzYjM4NDNiLi5hMzAxYTQ2IDEwMDY0NAogLS0tIGEvc3JjL3N0YWNrdHJhY2VfcG93ZXJwYy1saW51eC1pbmwuaAogKysrIGIvc3JjL3N0YWNrdHJhY2VfcG93ZXJwYy1saW51eC1pbmwuaAogQEAgLTUzLDcgKzUzLDYgQEAKQEAgLTMxLDYgKzMyLDMgQEAKICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgcmVzdCwgc2luY2UgSVAgdmFsdWUgaXMgYXQgJ3VjJyBmaWVsZC5BCiAgICAgICAgICB9ICpzaWdmcmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8cnRfc2lnbmFsX2ZyYW1lXzMyKj4oY3VycmVudCk7CiAgICAgICAgICByZXN1bHRbbl0gPSAodm9pZCopIHNpZ2ZyYW1lLT51Yy51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1tQVF9OSVBdOwotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1kaXNiYWxlLWhlYXAtY2hlY2tlcnMtYW5kLWRlYnVnLWFsbG9jYXRvci1vbi1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1kaXNiYWxlLWhlYXAtY2hlY2tlcnMtYW5kLWRlYnVnLWFsbG9jYXRvci1vbi1tdXNsLnBhdGNoCmluZGV4IDk5MTI3ZTEuLmFiM2NlYjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZGlzYmFsZS1oZWFwLWNoZWNrZXJzLWFuZC1kZWJ1Zy1hbGxvY2F0b3Itb24tbXVzbC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWRpc2JhbGUtaGVhcC1jaGVja2Vycy1hbmQtZGVidWctYWxsb2NhdG9yLW9uLW11c2wucGF0Y2gKQEAgLTEsMTkgKzEsMjAgQEAKLUZyb20gYjU5NjFmMTdlOWQ3ZjJiYzQ0ZGE2MTFiM2U0YjI3YzhhNjQxZmM3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDY2MDUxNTg4NTJmOTM2NDUxOTM5MWZhMTEwNzBiYTVlYzQzMDNlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDIgU2VwIDIwMTcgMDg6MDc6MTcgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gZGlzYmFsZSBoZWFwIGNoZWNrZXJzIGFuZCBkZWJ1ZyBhbGxvY2F0b3Igb24gbXVzbAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCisKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCistLS0KICBjb25maWd1cmUuYWMgfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCi1JbmRleDogZ2l0L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdpdC9jb25maWd1cmUuYWMKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDcwYjQ5YTMuLjgxNTRjNWMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTUxLDYgKzUxLDggQEAgY2FzZSAiJGhvc3QiIGluCiAgICAgKi1jeWd3aW4qKSBkZWZhdWx0X2VuYWJsZV9oZWFwX2NoZWNrZXI9bm87IGRlZmF1bHRfZW5hYmxlX2NwdV9wcm9maWxlcj1ubzs7CiAgICAgKi1mcmVlYnNkKikgZGVmYXVsdF9lbmFibGVfaGVhcF9jaGVja2VyPW5vOzsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKaW5kZXggNzg2MjFjNy4uMGE3MmZmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDE1NzkxNDk0MWJkMzhmMWEzOGJiNmJkNzI5NGNhNmMyYmMxYjhkY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDAzNGU3ZGEwOGMzZmJmZmNiYThjZjhkNGUyNGE3MWExNjU1OGRiNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU3VuLCAxNiBKdWwgMjAxNyAxNTo1MToyOCAtMDcwMAogU3ViamVjdDogW1BBVENIXSBmaXggYnVpbGQgd2l0aCBtdXNsIGxpYmMKQEAgLTYsNiArNiw3IEBACiBQYXRjaCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvcHVsbC83NjUvCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgfCAxICsKICBzcmMvbWFsbG9jX2hvb2tfbW1hcF9saW51eC5oIHwgOCArKysrKystLQpAQCAtNTYsNiArNTcsMyBAQAogIC8vIGxpYmMncyB2ZXJzaW9uOgogIGV4dGVybiAiQyIgdm9pZCogX19zYnJrKHB0cmRpZmZfdCBpbmNyZW1lbnQpOwogIAotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1pbmNsdWRlLWZjbnRsLmgtZm9yLWxvZmZfdC1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1pbmNsdWRlLWZjbnRsLmgtZm9yLWxvZmZfdC1kZWZpbml0aW9uLnBhdGNoCmluZGV4IDY2NzAwOGEuLjRjNjNlNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtaW5jbHVkZS1mY250bC5oLWZvci1sb2ZmX3QtZGVmaW5pdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWluY2x1ZGUtZmNudGwuaC1mb3ItbG9mZl90LWRlZmluaXRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDA0ZWE4ZTAwMTUwMTkzMWY0ZGJmMjAyODhhY2E3ODQ2OTYxN2IwOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGExNmE3M2YwODE5ZDI2MjE5ZWU4M2NkOThlZWE4Mjc4NmQ3YzE3NTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU3VuLCAxNiBKdWwgMjAxNyAxOToyODoxNyAtMDcwMAogU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIGZjbnRsLmggZm9yIGxvZmZfdCBkZWZpbml0aW9uCkBAIC03LDYgKzcsNyBAQAogbGludXhfc3lzY2FsbF9zdXBwb3J0Lmg6MjY0MToyNjogZXJyb3I6ICdsb2ZmX3QnIGhhcyBub3QgYmVlbiBkZWNsYXJlZAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQpAQCAtMjMsNiArMjQsMyBAQAogIAogICNpZmRlZiBfX21pcHNfXwogIC8qIEluY2x1ZGUgZGVmaW5pdGlvbnMgb2YgdGhlIEFCSSBjdXJyZW50bHkgaW4gdXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL2Rpc2FibGVfbGlidW53aW5kX2FhcmNoNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9kaXNhYmxlX2xpYnVud2luZF9hYXJjaDY0LnBhdGNoCmluZGV4IGYyNjQ3NDAuLmMzYzU3ODQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL2Rpc2FibGVfbGlidW53aW5kX2FhcmNoNjQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvZGlzYWJsZV9saWJ1bndpbmRfYWFyY2g2NC5wYXRjaApAQCAtMSwxNSArMSwyMiBAQAotRGlzYWJsZSBsaWJ1bndpbmQgb24gYWFyY2g2NAorRnJvbSA1NjRmODAwZTNlMjQ2NDdjMDk1ZjdhMzIxYmYzZWJkY2NmYmY3NjJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMiBTZXAgMjAxNyAxMjowMjowNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIGxpYnVud2luZCBvbiBhYXJjaDY0CiAKIEZpeGVzIGhhbmdzIHdoZW4gdXNpbmcgbGlidGNtYWxsb2Muc28KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogCi1JbmRleDogZ2l0L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdpdC9jb25maWd1cmUuYWMKLUBAIC02OSw2ICs2OSwxMSBAQCBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKCwgW3JlCistLS0KKyBjb25maWd1cmUuYWMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA4MTU0YzVjLi4wNjNiMjYwIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02OSw2ICs2OSwxMSBAQCBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKCwgW3JldHVybiBfX1BQQzY0X19dKV0sCiAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRfZW5hYmxlX2xpYnVud2luZD15ZXMKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF90Y21hbGxvY19wYWdlc2l6ZT04XSkKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL3NnaWRlZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL3NnaWRlZi5wYXRjaAppbmRleCA3ZTFhMjNiLi4xMDI3NGE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9zZ2lkZWYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvc2dpZGVmLnBhdGNoCkBAIC0xLDExICsxLDE5IEBACi1zZ2lkZWYuaCBkb2VzIG5vdCBleGlzdCBvbiBtdXNsIGFuZCBpdHMgbm90IG5lZWRlZCB0byBjb21waWxlCitGcm9tIDI1OWI0MjA0NDRjNTI0NjM3OTViNGI1ODJhMmFiNzUxMTE0OWVlYTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAxNiBPY3QgMjAxNyAyMToyNjo0MCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBzZ2lkZWYuaCBkb2VzIG5vdCBleGlzdCBvbiBtdXNsIGFuZCBpdHMgbm90IG5lZWRlZCB0byBjb21waWxlCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnaXQvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9zcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAotKysrIGdpdC9zcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorCistLS0KKyBzcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oIGIvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKK2luZGV4IDcwNDMxY2EuLmIyM2NhNTkgMTAwNjQ0CistLS0gYS9zcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorKysrIGIvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKIEBAIC0xNjQsNyArMTY0LDcgQEAgZXh0ZXJuICJDIiB7CiAgI2luY2x1ZGUgPGVuZGlhbi5oPgogICNpbmNsdWRlIDxmY250bC5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9oZGR0ZW1wL2hkZHRlbXAvaGRkdGVtcC0wLjMtYmV0YTE1LWF1dG9kZXRlY3QtNzE3NDc5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9oZGR0ZW1wL2hkZHRlbXAvaGRkdGVtcC0wLjMtYmV0YTE1LWF1dG9kZXRlY3QtNzE3NDc5LnBhdGNoCmluZGV4IDE5ZjgzODAuLjFlYzZhNjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wL2hkZHRlbXAtMC4zLWJldGExNS1hdXRvZGV0ZWN0LTcxNzQ3OS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcC9oZGR0ZW1wLTAuMy1iZXRhMTUtYXV0b2RldGVjdC03MTc0NzkucGF0Y2gKQEAgLTMsOSArMywxMCBAQAogUmVmZXIgdG86CiBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTcxNzQ3OQogCi1kaWZmIC11cCBoZGR0ZW1wLTAuMy1iZXRhMTUvZG9jL2hkZHRlbXAuOH4gaGRkdGVtcC0wLjMtYmV0YTE1L2RvYy9oZGR0ZW1wLjgKLS0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUvZG9jL2hkZHRlbXAuOH4JMjAxMS0wOC0xOCAwMDozNjowNS42ODkwMDE0NzAgKzAzMDAKLSsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvZG9jL2hkZHRlbXAuOAkyMDExLTA4LTE4IDAwOjQ0OjQ2Ljc1MzAwNjI1MyArMDMwMAorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9kb2MvaGRkdGVtcC44Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvZG9jL2hkZHRlbXAuOAorKysrIGhkZHRlbXAtMC4zLWJldGExNS9kb2MvaGRkdGVtcC44CiBAQCAtMTksNyArMTksNyBAQAogIGhkZHRlbXAgXC0gVXRpbGl0eSB0byBtb25pdG9yIGhhcmQgZHJpdmUgdGVtcGVyYXR1cmUKICAuU0ggU1lOT1BTSVMKQEAgLTI1LDkgKzI2LDEwIEBACiAgCiAgCiAgLlNIICJPUFRJT05TIgotZGlmZiAtdXAgaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9oZGR0ZW1wLmN+IGhkZHRlbXAtMC4zLWJldGExNS9zcmMvaGRkdGVtcC5jCi0tLS0gaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9oZGR0ZW1wLmN+CTIwMTEtMDgtMTggMDA6MzY6MDUuNjM4OTk2ODYxICswMzAwCi0rKysgaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9oZGR0ZW1wLmMJMjAxMS0wOC0xOCAwMDozNTo1NS40ODUwNjA3OTggKzAzMDAKK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2hkZHRlbXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3NyYy9oZGR0ZW1wLmMKKysrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2hkZHRlbXAuYwogQEAgLTU0LDYgKzU0LDcgQEAKICAjaW5jbHVkZSA8bGludXgvaGRyZWcuaD4KICAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTQ0LDcgKzQ2LDcgQEAKICAKICAgIGJhY2t0cmFjZV9zaWdzZWd2KCk7CiAgICBiYWNrdHJhY2Vfc2lnaWxsKCk7Ci1AQCAtNDE5LDExICs0MjEsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CitAQCAtNDIzLDExICs0MjUsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgICBleGl0KDApOwogICAgfQogICAgCkBAIC01Niw3ICs1OCw3IEBACiAgICBpZihkZWJ1ZykgewogICAgICAvKiAgICBhcmdjID0gb3B0aW5kICsgMTsqLwogICAgICBxdWlldCA9IDE7Ci1AQCAtNDM0LDYgKzQzMSwyMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CitAQCAtNDM4LDYgKzQzNSwyMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgIGV4aXQoMSk7CiAgICB9CiAgCkBAIC04MCw3ICs4Miw3IEBACiAgICBpbml0X2J1c190eXBlcygpOwogIAogICAgLyogY29sbGVjdCBkaXNrcyBpbmZvcm1hdGlvbnMgKi8KLUBAIC01MjcsNiArNTQxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeworQEAgLTUzMSw2ICs1NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICBlbHNlIHsKICAgICAgZG9fZGlyZWN0X21vZGUobGRpc2tzKTsKICAgIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wL2hkZHRlbXBfMC4zLWJldGExNS01Mi5kaWZmIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9oZGR0ZW1wL2hkZHRlbXAvaGRkdGVtcF8wLjMtYmV0YTE1LTUyLmRpZmYKaW5kZXggZjYxYzE2NC4uMDU3YjFmZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9oZGR0ZW1wL2hkZHRlbXAvaGRkdGVtcF8wLjMtYmV0YTE1LTUyLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9oZGR0ZW1wL2hkZHRlbXAvaGRkdGVtcF8wLjMtYmV0YTE1LTUyLmRpZmYKQEAgLTgsOSArOCwxMSBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IHVubWFpbnRhaW5lZAogCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L2RvYy9oZGR0ZW1wLjgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9kb2MvaGRkdGVtcC44CiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L2RvYy9oZGR0ZW1wLjgKLUBAIC01OCw2ICs1OCwxMCBAQAorQEAgLTU4LDYgKzU4LDEwIEBAIEV4ZWN1dGUgaGRkdGVtcCBpbiBUQ1AvSVAgZGFlbW9uIG1vZGUgKHAKICAuQiBcLWYsIFwtXC1maWxlPVxmSWZpbGVcZkkKICBTcGVjaWZ5IHRoZSBkYXRhYmFzZSBmaWxlIHRvIHVzZS4KICAuVFAKQEAgLTIxLDcgKzIzLDcgQEAKICAuQiBcLWwsIFwtXC1saXN0ZW49XGZJYWRkclxmUgogIExpc3RlbiBvbiBhIHNwZWNpZmljIGFkZHJlc3MuICBcZklhZGRyXGZSIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYQogIGhvc3QgbmFtZSBvciBhIG51bWVyaWMgaG9zdCBhZGRyZXNzIHN0cmluZy4gIFRoZSBudW1lcmljIGhvc3QgYWRkcmVzcwotQEAgLTgwLDYgKzg0LDkgQEAKK0BAIC04MCw2ICs4NCw5IEBAIHNlY29uZHMuCiAgLkIgXC1xLCBcLVwtcXVpZXQKICBEb24ndCBjaGVjayBpZiB0aGUgZHJpdmUgaXMgc3VwcG9ydGVkLgogIC5UUApAQCAtMzEsNyArMzMsNyBAQAogIC5CIFwtdiwgXC1cLXZlcnNpb24KICBEaXNwbGF5IGhkZHRlbXAgdmVyc2lvbiBudW1iZXIuCiAgLlRQCi1AQCAtOTYsNyArMTAzLDcgQEAKK0BAIC05Niw3ICsxMDMsNyBAQCBMaXN0ZW4gb24gSVB2NiBzb2NrZXRzIG9ubHkuCiAgLlNIICJEUklWRSBEQVRBQkFTRSIKICBJZiB5b3Uga25vdyB5b3VyIGRyaXZlIGhhcyBhIHRlbXBlcmF0dXJlIHNlbnNvciBidXQgaXQgaXMgYmVpbmcKICByZXBvcnRlZCB1bnN1cHBvcnRlZCwgdGVsbCBtZSB3aGljaCBtb2RlbCBhbmQgd2hpY2ggbWFudWZhY3R1cmVyIGl0CkBAIC00MCw3ICs0Miw3IEBACiAgbGluZSBvZiBoZGR0ZW1wLmRiIGlzIGVpdGhlciBhIGNvbW1lbnQsIGEgYmxhbmsgbGluZSBvciBhIGxpbmUKICBjb250YWluaW5nOgogIC5UUAotQEAgLTExMiw3ICsxMTksNyBAQAorQEAgLTExMiw3ICsxMTksNyBAQCBzZXQgb2YgZHJpdmVzIGZyb20gaXRzIG1vZGVsIG5hbWUgb3IgZnJvCiAgRmVlZGJhY2sgaXMgd2VsY29tZSAoc2VlIHRoZSBSRVBPUlQgc2VjdGlvbiBiZWxvdykuCiAgCiAgLlNIICJUQ1AvSVAgREFFTU9OIE1PREUiCkBAIC00OSw3ICs1MSw3IEBACiAgLlBQCiAgIyBoZGR0ZW1wIFNBVEE6L2Rldi9zZGEgUEFUQTovZGV2L2hkYQogIC5QUAotQEAgLTEyMCw3ICsxMjcsNyBAQAorQEAgLTEyMCw3ICsxMjcsNyBAQCBUbyB0ZXN0CiAgLkIgaGRkdGVtcAogIGluIGRhZW1vbiBtb2RlLCBzdGFydCBpdCBsaWtlIHRoaXM6CiAgLlBQCkBAIC01OCw3ICs2MCw3IEBACiAgLlBQCiAgLlBQCiAgYW5kIHVzZQotQEAgLTE2NSw4ICsxNzIsOCBAQAorQEAgLTE2NSw4ICsxNzIsOCBAQCBhbmQgMTIgYXJlIG9mdGVuIHJlcG9ydGVkIHRvIG1hdGNoIGEgdGVtCiAgaW52ZXN0aWdhdGlvbiB0aGV5IGRvIG5vdC4gIEJ1dCBmaWVsZHMgMTk0ICh3aGljaCBpcyB0aGUgc3RhbmRhcmQKICBmaWVsZCBmb3IgdGVtcGVyYXR1cmUpIGFuZCAyMzEgYXJlIGdvb2QgY2FuZGlkYXRlcy4KICAuUFAKQEAgLTY5LDEzICs3MSwxNSBAQAogIHlvdXJzZWxmLgogIAogIC5TSCAiQlVHUyIKLUBAIC0xODMsNSArMTkwLDUgQEAKK0BAIC0xODMsNSArMTkwLDUgQEAgc3VwcG9ydGVkIG9uIGkzODYgYXJjaGl0ZWN0dXJlcyBvbmx5LgogIC5QUAogIEVtbWFudWVsIFZhcmFnbmF0IChoZGR0ZW1wQGd1enUubmV0KS4KICAuUFAKIC1UaGlzIG1hbnVhbCBwYWdlIHdhcyBvcmlnaW5hbHkgd3JpdHRlbiBieSBBdXJlbGllbiBKYXJubyA8YXVyZWwzMkBkZWJpYW4ub3JnPiwKICtUaGlzIG1hbnVhbCBwYWdlIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgQXVyZWxpZW4gSmFybm8gPGF1cmVsMzJAZGViaWFuLm9yZz4sCiAgZm9yIHRoZSBEZWJpYW4gR05VL0xpbnV4IHN5c3RlbSAoYnV0IG1heSBiZSB1c2VkIGJ5IG90aGVycykuCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3BvL2ZyLnBvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvcG8vZnIucG8KICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vZnIucG8KIEBAIC03LDkgKzcsOSBAQApAQCAtOTEsNyArOTUsNyBAQAogICJMYXN0LVRyYW5zbGF0b3I6IEF1cmVsaWVuIEphcm5vIDxhdXJlbGllbkBhdXJlbDMyLm5ldD5cbiIKICAiTGFuZ3VhZ2UtVGVhbTogRlJBTkNBSVMgPGZyQGxpLm9yZz5cbiIKICAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKLUBAIC0xNywyMyArMTcsNyBAQAorQEAgLTE3LDIzICsxNyw3IEBAIG1zZ3N0ciAiIgogICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAgIlgtR2VuZXJhdG9yOiBLQmFiZWwgMS4wLjFcbiIKICAKQEAgLTExNiw3ICsxMjAsNyBAQAogICMsIGMtZm9ybWF0CiAgbXNnaWQgIiIKICAiXG4iCi1AQCAtNDYsNyArMzAsNyBAQAorQEAgLTQ2LDcgKzMwLDcgQEAgbXNnc3RyICIiCiAgIk1vZOhsZTogJXNcbiIKICAiXG4iCiAgCkBAIC0xMjUsNyArMTI5LDcgQEAKICAjLCBjLWZvcm1hdAogIG1zZ2lkICIiCiAgIldBUk5JTkc6IERyaXZlICVzIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGEgdGVtcGVyYXR1cmUgc2Vuc29yLlxuIgotQEAgLTYwLDc1ICs0NCw2MCBAQAorQEAgLTYwLDc1ICs0NCw2MCBAQCBtc2dzdHIgIiIKICAibmV0KS5cbiIKICAiQVRURU5USU9OIDogVm9pciBsZXMgb3B0aW9ucyAtLWhlbHAsIC0tZGVidWcgZXQgLS1kcml2ZWJhc2UuXG4iCiAgCkBAIC0yMTYsNyArMjIwLDcgQEAKICAiICAtYiAgIC0tZHJpdmViYXNlICAgOiAgZGlzcGxheSBkYXRhYmFzZSBmaWxlIGNvbnRlbnQgdGhhdCBhbGxvdyBoZGR0ZW1wIHRvXG4iCiAgIiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29nbml6ZSBzdXBwb3J0ZWQgZHJpdmVzLlxuIgogICIgIC1EICAgLS1kZWJ1ZyAgICAgICA6ICBkaXNwbGF5IHZhcmlvdXMgUy5NLkEuUi5ULiBmaWVsZHMgYW5kIHRoZWlyIHZhbHVlcy5cbiIKLUBAIC0xMzgsNiArMTA3LDcgQEAKK0BAIC0xMzgsNiArMTA3LDcgQEAgbXNnaWQgIiIKICAiICAtZCAgIC0tZGFlbW9uICAgICAgOiAgcnVuIGhkZHRlbXAgaW4gVENQL0lQIGRhZW1vbiBtb2RlIChwb3J0ICVkIGJ5ICIKICAiZGVmYXVsdC4pXG4iCiAgIiAgLWYgICAtLWZpbGU9RklMRSAgIDogIHNwZWNpZnkgZGF0YWJhc2UgZmlsZSB0byB1c2UuXG4iCkBAIC0yMjQsNyArMjI4LDcgQEAKICAiICAtbCAgIC0tbGlzdGVuPWFkZHIgOiAgbGlzdGVuIG9uIGEgc3BlY2lmaWMgaW50ZXJmYWNlIChpbiBUQ1AvSVAgZGFlbW9uICIKICAibW9kZSkuXG4iCiAgIiAgLW4gICAtLW51bWVyaWMgICAgIDogIHByaW50IG9ubHkgdGhlIHRlbXBlcmF0dXJlLlxuIgotQEAgLTE0NSw2ICsxMTUsOCBAQAorQEAgLTE0NSw2ICsxMTUsOCBAQCBtc2dpZCAiIgogICIgIC1zICAgLS1zZXBhcmF0b3I9QyA6ICBzZXBhcmF0b3IgdG8gdXNlIGJldHdlZW4gZmllbGRzIChpbiBUQ1AvSVAgZGFlbW9uICIKICAibW9kZSkuXG4iCiAgIiAgLVMgICAtLXN5c2xvZz1zICAgIDogIGxvZyB0ZW1wZXJhdHVyZSB0byBzeXNsb2cgZXZlcnkgcyBzZWNvbmRzLlxuIgpAQCAtMjMzLDcgKzIzNyw3IEBACiAgIiAgLXEgICAtLXF1aWV0ICAgICAgIDogIGRvIG5vdCBjaGVjayBpZiB0aGUgZHJpdmUgaXMgc3VwcG9ydGVkLlxuIgogICIgIC12ICAgLS12ZXJzaW9uICAgICA6ICBkaXNwbGF5IGhkZHRlbXAgdmVyc2lvbiBudW1iZXIuXG4iCiAgIiAgLXcgICAtLXdha2UtdXAgICAgIDogIHdha2UtdXAgdGhlIGRyaXZlIGlmIG5lZWQuXG4iCi1AQCAtMTUzLDExICsxMjUsMTQgQEAKK0BAIC0xNTMsMTEgKzEyNSwxNCBAQCBtc2dpZCAiIgogICJcbiIKICAiUmVwb3J0IGJ1Z3Mgb3IgbmV3IGRyaXZlcyB0byA8aGRkdGVtcEBndXp1Lm5ldD4uXG4iCiAgbXNnc3RyICIiCkBAIC0yNDksNyArMjUzLDcgQEAKICAiICAtYiAgIC0tZHJpdmViYXNlICAgOiAgYWZmaWNoZSBsZSBjb250ZW51IGR1IGZpY2hpZXIgZGUgYmFzZSBkZSBkb25u6WUgIgogICJxdWkgXG4iCiAgIiAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1ldCDgIGhkZHRlbXAgZGUgcmVjb25uYe50cmUgbGVzIGxlY3RldXJzICIKLUBAIC0xNzIsNiArMTQ3LDcgQEAKK0BAIC0xNzIsNiArMTQ3LDcgQEAgbXNnc3RyICIiCiAgImTpZmF1dCkuXG4iCiAgIiAgLWYgICAtLWZpbGU9RklMRSAgIDogIHNwZWNpZmllIGxlIGZpY2hpZXIg4CB1dGlsaXNlciBjb21tZSBiYXNlIGRlICIKICAiZG9ubullcy5cbiIKQEAgLTI1Nyw3ICsyNjEsNyBAQAogICIgIC1sICAgLS1saXN0ZW49YWRkciA6ICDpY291dGUgc3VyIHVuZSBpbnRlcmZhY2Ugc3DpY2lmaXF1ZSAoZW4gbW9kZSBk6W1vbiAiCiAgIlRDUC9JUCkuXG4iCiAgIiAgLW4gICAtLW51bWVyaWMgICAgIDogIGFmZmljaGUgc2V1bGVtZW50IGxhIHRlbXDpcmF0dXJlLlxuIgotQEAgLTE4MCw2ICsxNTYsOCBAQAorQEAgLTE4MCw2ICsxNTYsOCBAQCBtc2dzdHIgIiIKICAiZOltb24gVENQL0lQKS5cbiIKICAiICAtUyAgIC0tc3lzbG9nPXMgICAgOiAgZW5yZWdpc3RyZSBsYSB0ZW1w6XJhdHVyZSBkYW5zIHN5c2xvZyB0b3VzIGxlcyBzICIKICAic2Vjb25kZXMuXG4iCkBAIC0yNjYsNyArMjcwLDcgQEAKICAiICAtcSAgIC0tcXVpZXQgICAgICAgOiAgbmUgdulyaWZpZSBwYXMgc2kgbGUgbGVjdGV1ciBlc3Qgc3VwcG9ydOkuXG4iCiAgIiAgLXYgICAtLXZlcnNpb24gICAgIDogIGFmZmljaGUgbGEgdmVyc2lvbiBkZSBoZGR0ZW1wLlxuIgogICIgIC13ICAgLS13YWtlLXVwICAgICA6ICBy6XZlaWxsZXIgbGUgbGVjdGV1ciBzaSBu6WNlc3NhaXJlLlxuIgotQEAgLTE4OCw2MiArMTY2LDk1IEBACitAQCAtMTg4LDYyICsxNjYsOTUgQEAgbXNnc3RyICIiCiAgIlxuIgogICJSZXBvcnQgYnVncyBvciBuZXcgZHJpdmVzIHRvIDxoZGR0ZW1wQGd1enUubmV0Pi5cbiIKICAKQEAgLTM3Nyw2ICszODEsOCBAQAogKwogKyN+IG1zZ2lkICJmaWVsZCglZClcdCA9ICVkXG4iCiArI34gbXNnc3RyICJjaGFtcCglZClcdCA9ICVkXG4iCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3BvL3J1LnBvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvcG8vcnUucG8KICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vcnUucG8KIEBAIC02LDggKzYsOCBAQApAQCAtMzkwLDcgKzM5Niw3IEBACiAgIlBPLVJldmlzaW9uLURhdGU6IDIwMDMtMDMtMDggMTY6NDIrMDMwMFxuIgogICJMYXN0LVRyYW5zbGF0b3I6IE1pY2hhZWwgU2hpZ29yaW4gPG1pa2VAYWx0bGludXgucnU+XG4iCiAgIkxhbmd1YWdlLVRlYW06IFJ1c3NpYW4gPHJ1QGxpLm9yZz5cbiIKLUBAIC0xNSwyMyArMTUsNyBAQAorQEAgLTE1LDIzICsxNSw3IEBAIG1zZ3N0ciAiIgogICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9a29pOC1yXG4iCiAgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKICAKQEAgLTQxNSw3ICs0MjEsNyBAQAogICMsIGMtZm9ybWF0CiAgbXNnaWQgIiIKICAiXG4iCi1AQCAtNDAsNyArMjQsNyBAQAorQEAgLTQwLDcgKzI0LDcgQEAgbXNnaWQgIiIKICAiXG4iCiAgbXNnc3RyICIiCiAgCkBAIC00MjQsNyArNDMwLDcgQEAKICAjLCBjLWZvcm1hdAogIG1zZ2lkICIiCiAgIldBUk5JTkc6IERyaXZlICVzIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGEgdGVtcGVyYXR1cmUgc2Vuc29yLlxuIgotQEAgLTUzLDcyICszNyw1OSBAQAorQEAgLTUzLDcyICszNyw1OSBAQCBtc2dzdHIgIiIKICAi9+7p7eHu6eU6IOXTzMkg19kg1M/ezs8g2s7BxdTFLCDe1M8gxMHU3snLIMXT1NgsIM7B0MnbydTFIGhkZHRlbXBAZ3V6dS5uZXRcbiIKICAi9+7p7eHu6eU6ICjTzS4gz9DDyckgLS1oZWxwLCAtLWRlYnVnIMkgLS1kcml2ZWJhc2UpLlxuIgogIApAQCAtNTEyLDcgKzUxOCw3IEBACiAgIiAgLWIgICAtLWRyaXZlYmFzZSAgIDogIGRpc3BsYXkgZGF0YWJhc2UgZmlsZSBjb250ZW50IHRoYXQgYWxsb3cgaGRkdGVtcCB0b1xuIgogICIgICAgICAgICAgICAgICAgICAgICAgICByZWNvZ25pemUgc3VwcG9ydGVkIGRyaXZlcy5cbiIKICAiICAtRCAgIC0tZGVidWcgICAgICAgOiAgZGlzcGxheSB2YXJpb3VzIFMuTS5BLlIuVC4gZmllbGRzIGFuZCB0aGVpciB2YWx1ZXMuXG4iCi1AQCAtMTI4LDYgKzk5LDcgQEAKK0BAIC0xMjgsNiArOTksNyBAQCBtc2dpZCAiIgogICIgIC1kICAgLS1kYWVtb24gICAgICA6ICBydW4gaGRkdGVtcCBpbiBUQ1AvSVAgZGFlbW9uIG1vZGUgKHBvcnQgJWQgYnkgIgogICJkZWZhdWx0LilcbiIKICAiICAtZiAgIC0tZmlsZT1GSUxFICAgOiAgc3BlY2lmeSBkYXRhYmFzZSBmaWxlIHRvIHVzZS5cbiIKQEAgLTUyMCw3ICs1MjYsNyBAQAogICIgIC1sICAgLS1saXN0ZW49YWRkciA6ICBsaXN0ZW4gb24gYSBzcGVjaWZpYyBpbnRlcmZhY2UgKGluIFRDUC9JUCBkYWVtb24gIgogICJtb2RlKS5cbiIKICAiICAtbiAgIC0tbnVtZXJpYyAgICAgOiAgcHJpbnQgb25seSB0aGUgdGVtcGVyYXR1cmUuXG4iCi1AQCAtMTM1LDYgKzEwNyw4IEBACitAQCAtMTM1LDYgKzEwNyw4IEBAIG1zZ2lkICIiCiAgIiAgLXMgICAtLXNlcGFyYXRvcj1DIDogIHNlcGFyYXRvciB0byB1c2UgYmV0d2VlbiBmaWVsZHMgKGluIFRDUC9JUCBkYWVtb24gIgogICJtb2RlKS5cbiIKICAiICAtUyAgIC0tc3lzbG9nPXMgICAgOiAgbG9nIHRlbXBlcmF0dXJlIHRvIHN5c2xvZyBldmVyeSBzIHNlY29uZHMuXG4iCkBAIC01MjksNyArNTM1LDcgQEAKICAiICAtcSAgIC0tcXVpZXQgICAgICAgOiAgZG8gbm90IGNoZWNrIGlmIHRoZSBkcml2ZSBpcyBzdXBwb3J0ZWQuXG4iCiAgIiAgLXYgICAtLXZlcnNpb24gICAgIDogIGRpc3BsYXkgaGRkdGVtcCB2ZXJzaW9uIG51bWJlci5cbiIKICAiICAtdyAgIC0td2FrZS11cCAgICAgOiAgd2FrZS11cCB0aGUgZHJpdmUgaWYgbmVlZC5cbiIKLUBAIC0xNjgsNTkgKzE0Miw5MCBAQAorQEAgLTE2OCw1OSArMTQyLDkwIEBAIG1zZ3N0ciAiIgogICJcbiIKICAi88/Pwt3FzsnRIM/CIM/bycLLwcggySDEwc7O2cUgxMzRIMTJ08vP1yDP1NDSwdfM0crUxSDOwSA8aGRkdGVtcEBndXp1Lm5ldD4uXG4iCiAgCkBAIC02MzYsNiArNjQyLDggQEAKICsKICsjfiBtc2dpZCAiZmllbGQoJWQpXHQgPSAlZFxuIgogKyN+IG1zZ3N0ciAi0M/MxSglZClcdCA9ICVkXG4iCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3BvL3N2LnBvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvcG8vc3YucG8KICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vc3YucG8KIEBAIC02LDggKzYsOCBAQApAQCAtNjQ5LDcgKzY1Nyw3IEBACiAgIlBPLVJldmlzaW9uLURhdGU6IDIwMDUtMTEtMDIgMTk6MDMrMDEwMFxuIgogICJMYXN0LVRyYW5zbGF0b3I6IERhbmllbCBOeWxhbmRlciA8cG9AZGFuaWVsbnlsYW5kZXIuc2U+XG4iCiAgIkxhbmd1YWdlLVRlYW06IFN3ZWRpc2ggPHN2QGxpLm9yZz5cbiIKLUBAIC0xNywyMyArMTcsNyBAQAorQEAgLTE3LDIzICsxNyw3IEBAIG1zZ3N0ciAiIgogICJYLVBvZWRpdC1MYW5ndWFnZTogc3dlXG4iCiAgIlgtUG9lZGl0LUNvdW50cnk6IHN3ZVxuIgogIApAQCAtNjc0LDcgKzY4Miw3IEBACiAgIywgYy1mb3JtYXQKICBtc2dpZCAiIgogICJcbiIKLUBAIC00Niw3ICszMCw3IEBACitAQCAtNDYsNyArMzAsNyBAQCBtc2dzdHIgIiIKICAiTW9kZWxsOiAlc1xuIgogICJcbiIKICAKQEAgLTY4Myw3ICs2OTEsNyBAQAogICMsIGMtZm9ybWF0CiAgbXNnaWQgIiIKICAiV0FSTklORzogRHJpdmUgJXMgZG9lc24ndCBzZWVtIHRvIGhhdmUgYSB0ZW1wZXJhdHVyZSBzZW5zb3IuXG4iCi1AQCAtNjAsNzYgKzQ0LDYzIEBACitAQCAtNjAsNzYgKzQ0LDYzIEBAIG1zZ3N0ciAiIgogICJuZXQpLlxuIgogICJWQVJOSU5HOiBTZSAtLWhlbHAsIC0tZGVidWcgb2NoIC0tZHJpdmViYXNlIGZsYWdnb3JuYS5cbiIKICAKQEAgLTc3Nyw3ICs3ODUsNyBAQAogICIgIC1iICAgLS1kcml2ZWJhc2UgICA6ICBkaXNwbGF5IGRhdGFiYXNlIGZpbGUgY29udGVudCB0aGF0IGFsbG93IGhkZHRlbXAgdG9cbiIKICAiICAgICAgICAgICAgICAgICAgICAgICAgcmVjb2duaXplIHN1cHBvcnRlZCBkcml2ZXMuXG4iCiAgIiAgLUQgICAtLWRlYnVnICAgICAgIDogIGRpc3BsYXkgdmFyaW91cyBTLk0uQS5SLlQuIGZpZWxkcyBhbmQgdGhlaXIgdmFsdWVzLlxuIgotQEAgLTEzOSw2ICsxMTAsNyBAQAorQEAgLTEzOSw2ICsxMTAsNyBAQCBtc2dpZCAiIgogICIgIC1kICAgLS1kYWVtb24gICAgICA6ICBydW4gaGRkdGVtcCBpbiBUQ1AvSVAgZGFlbW9uIG1vZGUgKHBvcnQgJWQgYnkgIgogICJkZWZhdWx0LilcbiIKICAiICAtZiAgIC0tZmlsZT1GSUxFICAgOiAgc3BlY2lmeSBkYXRhYmFzZSBmaWxlIHRvIHVzZS5cbiIKQEAgLTc4NSw3ICs3OTMsNyBAQAogICIgIC1sICAgLS1saXN0ZW49YWRkciA6ICBsaXN0ZW4gb24gYSBzcGVjaWZpYyBpbnRlcmZhY2UgKGluIFRDUC9JUCBkYWVtb24gIgogICJtb2RlKS5cbiIKICAiICAtbiAgIC0tbnVtZXJpYyAgICAgOiAgcHJpbnQgb25seSB0aGUgdGVtcGVyYXR1cmUuXG4iCi1AQCAtMTQ2LDYgKzExOCw4IEBACitAQCAtMTQ2LDYgKzExOCw4IEBAIG1zZ2lkICIiCiAgIiAgLXMgICAtLXNlcGFyYXRvcj1DIDogIHNlcGFyYXRvciB0byB1c2UgYmV0d2VlbiBmaWVsZHMgKGluIFRDUC9JUCBkYWVtb24gIgogICJtb2RlKS5cbiIKICAiICAtUyAgIC0tc3lzbG9nPXMgICAgOiAgbG9nIHRlbXBlcmF0dXJlIHRvIHN5c2xvZyBldmVyeSBzIHNlY29uZHMuXG4iCkBAIC03OTQsNyArODAyLDcgQEAKICAiICAtcSAgIC0tcXVpZXQgICAgICAgOiAgZG8gbm90IGNoZWNrIGlmIHRoZSBkcml2ZSBpcyBzdXBwb3J0ZWQuXG4iCiAgIiAgLXYgICAtLXZlcnNpb24gICAgIDogIGRpc3BsYXkgaGRkdGVtcCB2ZXJzaW9uIG51bWJlci5cbiIKICAiICAtdyAgIC0td2FrZS11cCAgICAgOiAgd2FrZS11cCB0aGUgZHJpdmUgaWYgbmVlZC5cbiIKLUBAIC0xODQsNjEgKzE1OCw5MSBAQAorQEAgLTE4NCw2MSArMTU4LDkxIEBAIG1zZ3N0ciAiIgogICJcbiIKICAiUmFwcG9ydGVyYSBidWdnYXIgZWxsZXIgbnlhIGjlcmRkaXNrYXIgdGlsbCA8aGRkdGVtcEBndXp1Lm5ldD4uXG4iCiAgCkBAIC05MDEsOSArOTA5LDExIEBACiArCiArI34gbXNnaWQgImZpZWxkKCVkKVx0ID0gJWRcbiIKICsjfiBtc2dzdHIgImbkbHQoJWQpXHQgPSAlZFxuIgorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9wby9wdC5wbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3BvL3B0LnBvCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3BvL3B0LnBvCi1AQCAtNyw3ICs3LDcgQEAKK0BAIC03LDcgKzcsNyBAQCBtc2dpZCAiIgogIG1zZ3N0ciAiIgogICJQcm9qZWN0LUlkLVZlcnNpb246IGhkZHRlbXAgMC4zLWJldGExNFxuIgogICJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCkBAIC05MTIsNyArOTIyLDcgQEAKICAiUE8tUmV2aXNpb24tRGF0ZTogMjAwNi0wMy0yOSAyMzoyMiswMDAwXG4iCiAgIkxhc3QtVHJhbnNsYXRvcjogTWlndWVsIEZpZ3VlaXJlZG8gPGVsbWlnQGRlYmlhbnAub3JnPlxuIgogICJMYW5ndWFnZS1UZWFtOiBQb3J0dWd1ZXNlIDx0cmFkdXpAZGViaWFucHQub3JnPlxuIgotQEAgLTE1LDIzICsxNSw3IEBACitAQCAtMTUsMjMgKzE1LDcgQEAgbXNnc3RyICIiCiAgIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgogICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAgCkBAIC05MzcsNyArOTQ3LDcgQEAKICAjLCBjLWZvcm1hdAogIG1zZ2lkICIiCiAgIlxuIgotQEAgLTQ0LDcgKzI4LDcgQEAKK0BAIC00NCw3ICsyOCw3IEBAIG1zZ3N0ciAiIgogICJNb2RlbG86ICVzXG4iCiAgIlxuIgogIApAQCAtOTQ2LDcgKzk1Niw3IEBACiAgIywgYy1mb3JtYXQKICBtc2dpZCAiIgogICJXQVJOSU5HOiBEcml2ZSAlcyBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIHRlbXBlcmF0dXJlIHNlbnNvci5cbiIKLUBAIC01NCw3OSArMzgsNjggQEAKK0BAIC01NCw3OSArMzgsNjggQEAgbXNnaWQgIiIKICBtc2dzdHIgIiIKICAiQVZJU086IE8gZGlzY28gJXMgbsOjbyBwYXJlY2UgdGVyIHVtIHNlbnNvciBkZSB0ZW1wZXJhdHVyYS5cbiIKICAiQVZJU086IElzdG8gbsOjbyBzaWduaWZpY2EgcXVlIG7Do28gdGVtIG5lbmh1bS5cbiIKQEAgLTEwNDcsNyArMTA1Nyw3IEBACiAgIiAgLWIgICAtLWRyaXZlYmFzZSAgIDogIGRpc3BsYXkgZGF0YWJhc2UgZmlsZSBjb250ZW50IHRoYXQgYWxsb3cgaGRkdGVtcCB0b1xuIgogICIgICAgICAgICAgICAgICAgICAgICAgICByZWNvZ25pemUgc3VwcG9ydGVkIGRyaXZlcy5cbiIKICAiICAtRCAgIC0tZGVidWcgICAgICAgOiAgZGlzcGxheSB2YXJpb3VzIFMuTS5BLlIuVC4gZmllbGRzIGFuZCB0aGVpciB2YWx1ZXMuXG4iCi1AQCAtMTM2LDYgKzEwOSw3IEBACitAQCAtMTM2LDYgKzEwOSw3IEBAIG1zZ2lkICIiCiAgIiAgLWQgICAtLWRhZW1vbiAgICAgIDogIHJ1biBoZGR0ZW1wIGluIFRDUC9JUCBkYWVtb24gbW9kZSAocG9ydCAlZCBieSAiCiAgImRlZmF1bHQuKVxuIgogICIgIC1mICAgLS1maWxlPUZJTEUgICA6ICBzcGVjaWZ5IGRhdGFiYXNlIGZpbGUgdG8gdXNlLlxuIgpAQCAtMTA1NSw3ICsxMDY1LDcgQEAKICAiICAtbCAgIC0tbGlzdGVuPWFkZHIgOiAgbGlzdGVuIG9uIGEgc3BlY2lmaWMgaW50ZXJmYWNlIChpbiBUQ1AvSVAgZGFlbW9uICIKICAibW9kZSkuXG4iCiAgIiAgLW4gICAtLW51bWVyaWMgICAgIDogIHByaW50IG9ubHkgdGhlIHRlbXBlcmF0dXJlLlxuIgotQEAgLTE0Myw2ICsxMTcsOCBAQAorQEAgLTE0Myw2ICsxMTcsOCBAQCBtc2dpZCAiIgogICIgIC1zICAgLS1zZXBhcmF0b3I9QyA6ICBzZXBhcmF0b3IgdG8gdXNlIGJldHdlZW4gZmllbGRzIChpbiBUQ1AvSVAgZGFlbW9uICIKICAibW9kZSkuXG4iCiAgIiAgLVMgICAtLXN5c2xvZz1zICAgIDogIGxvZyB0ZW1wZXJhdHVyZSB0byBzeXNsb2cgZXZlcnkgcyBzZWNvbmRzLlxuIgpAQCAtMTA2NCw3ICsxMDc0LDcgQEAKICAiICAtcSAgIC0tcXVpZXQgICAgICAgOiAgZG8gbm90IGNoZWNrIGlmIHRoZSBkcml2ZSBpcyBzdXBwb3J0ZWQuXG4iCiAgIiAgLXYgICAtLXZlcnNpb24gICAgIDogIGRpc3BsYXkgaGRkdGVtcCB2ZXJzaW9uIG51bWJlci5cbiIKICAiICAtdyAgIC0td2FrZS11cCAgICAgOiAgd2FrZS11cCB0aGUgZHJpdmUgaWYgbmVlZC5cbiIKLUBAIC0xNTYsMTkgKzEzMiwyMyBAQAorQEAgLTE1NiwxOSArMTMyLDIzIEBAIG1zZ3N0ciAiIgogICIgICBoZGR0ZW1wIG1vc3RyYSBhIHRlbXBlcmF0dXJhIGRvcyBkaXNjb3MgaW5kaWNhZG9zIG5vIGFyZ3VtZW50by5cbiIKICAiICAgT3MgZGlzY29zIHTDqm0gZGUgc3Vwb3J0YXIgUy5NLkEuUi5ULlxuIgogICJcbiIKQEAgLTEwOTYsNyArMTEwNiw3IEBACiAgIiAgLXEgICAtLXF1aWV0ICAgICAgIDogIG7Do28gdmVyaWZpY2FyIHNlIG8gZGlzY28gw6kgc3Vwb3J0YWRvLlxuIgogICIgIC12ICAgLS12ZXJzaW9uICAgICA6ICBtb3N0cmFyIG8gbsO6bWVybyBkYSB2ZXJzw6NvIGRvIGhkZHRlbXAuXG4iCiAgIiAgLXcgICAtLXdha2UtdXAgICAgIDogIGFjb3JkYXIgbyBkaXNjbyBzZSBuZWNlc3PDoXJpby5cbiIKLUBAIC0xNzcsNTggKzE1Nyw5MyBAQAorQEAgLTE3Nyw1OCArMTU3LDkzIEBAIG1zZ3N0ciAiIgogICJcbiIKICAiUmVsYXRhciBidWdzIG91IG5vdm9zIGRpc2NvcyBwYXJhIDxoZGR0ZW1wQGd1enUubmV0Pi5cbiIKICAKQEAgLTEyMDgsNyArMTIxOCw5IEBACiArCiArI34gbXNnaWQgImZpZWxkKCVkKVx0ID0gJWRcbiIKICsjfiBtc2dzdHIgImNhbXBvKCVkKVx0ID0gJWRcbiIKLS0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9wby9kZS5wbworSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9wby9kZS5wbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAogKysrIGhkZHRlbXAtMC4zLWJldGExNS9wby9kZS5wbwogQEAgLTAsMCArMSwyNTAgQEAKICsjIEdlcm1hbiB0cmFuc2xhdGlvbiBvZiBoZGR0ZW1wLgpAQCAtMTQ2MSwxMiArMTQ3MywxNiBAQAogKyMsIGMtZm9ybWF0CiArbXNnaWQgImxvZyBzZW5zZSBmYWlsZWQgOiAlcyIKICttc2dzdHIgIlByb3Rva29sbC1Fcmtlbm51bmcgZmVobGdlc2NobGFnZW4gOiAlcyIKK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vTElOR1VBUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3BvL0xJTkdVQVMKICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vTElOR1VBUwogQEAgLTEsMiArMSwyIEBACiAgIyBTZXQgb2YgYXZhaWxhYmxlIGxhbmd1YWdlcy4KIC1mciBwdCBydSBzdiAKICtkZSBmciBwdCBydSBzdiAKK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vaGRkdGVtcC5wb3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9wby9oZGR0ZW1wLnBvdAogKysrIGhkZHRlbXAtMC4zLWJldGExNS9wby9oZGR0ZW1wLnBvdAogQEAgLTEsMzUgKzEsMjIgQEAKQEAgLTE1MTMsNyArMTUyOSw3IEBACiAgIywgYy1mb3JtYXQKICBtc2dpZCAiIgogICJcbiIKLUBAIC0zOCw3ICsyNSw3IEBACitAQCAtMzgsNyArMjUsNyBAQCBtc2dpZCAiIgogICJcbiIKICBtc2dzdHIgIiIKICAKQEAgLTE1MjIsNyArMTUzOCw3IEBACiAgIywgYy1mb3JtYXQKICBtc2dpZCAiIgogICJXQVJOSU5HOiBEcml2ZSAlcyBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIHRlbXBlcmF0dXJlIHNlbnNvci5cbiIKLUBAIC00Nyw2NyArMzQsNTkgQEAKK0BAIC00Nyw2NyArMzQsNTkgQEAgbXNnaWQgIiIKICAiV0FSTklORzogU2VlIC0taGVscCwgLS1kZWJ1ZyBhbmQgLS1kcml2ZWJhc2Ugb3B0aW9ucy5cbiIKICBtc2dzdHIgIiIKICAKQEAgLTE2MDQsNyArMTYyMCw3IEBACiAgIiAgLWIgICAtLWRyaXZlYmFzZSAgIDogIGRpc3BsYXkgZGF0YWJhc2UgZmlsZSBjb250ZW50IHRoYXQgYWxsb3cgaGRkdGVtcCB0b1xuIgogICIgICAgICAgICAgICAgICAgICAgICAgICByZWNvZ25pemUgc3VwcG9ydGVkIGRyaXZlcy5cbiIKICAiICAtRCAgIC0tZGVidWcgICAgICAgOiAgZGlzcGxheSB2YXJpb3VzIFMuTS5BLlIuVC4gZmllbGRzIGFuZCB0aGVpciB2YWx1ZXMuXG4iCi1AQCAtMTE3LDYgKzk2LDcgQEAKK0BAIC0xMTcsNiArOTYsNyBAQCBtc2dpZCAiIgogICIgIC1kICAgLS1kYWVtb24gICAgICA6ICBydW4gaGRkdGVtcCBpbiBUQ1AvSVAgZGFlbW9uIG1vZGUgKHBvcnQgJWQgYnkgIgogICJkZWZhdWx0LilcbiIKICAiICAtZiAgIC0tZmlsZT1GSUxFICAgOiAgc3BlY2lmeSBkYXRhYmFzZSBmaWxlIHRvIHVzZS5cbiIKQEAgLTE2MTIsNyArMTYyOCw3IEBACiAgIiAgLWwgICAtLWxpc3Rlbj1hZGRyIDogIGxpc3RlbiBvbiBhIHNwZWNpZmljIGludGVyZmFjZSAoaW4gVENQL0lQIGRhZW1vbiAiCiAgIm1vZGUpLlxuIgogICIgIC1uICAgLS1udW1lcmljICAgICA6ICBwcmludCBvbmx5IHRoZSB0ZW1wZXJhdHVyZS5cbiIKLUBAIC0xMjQsNiArMTA0LDggQEAKK0BAIC0xMjQsNiArMTA0LDggQEAgbXNnaWQgIiIKICAiICAtcyAgIC0tc2VwYXJhdG9yPUMgOiAgc2VwYXJhdG9yIHRvIHVzZSBiZXR3ZWVuIGZpZWxkcyAoaW4gVENQL0lQIGRhZW1vbiAiCiAgIm1vZGUpLlxuIgogICIgIC1TICAgLS1zeXNsb2c9cyAgICA6ICBsb2cgdGVtcGVyYXR1cmUgdG8gc3lzbG9nIGV2ZXJ5IHMgc2Vjb25kcy5cbiIKQEAgLTE2MjEsNyArMTYzNyw3IEBACiAgIiAgLXEgICAtLXF1aWV0ICAgICAgIDogIGRvIG5vdCBjaGVjayBpZiB0aGUgZHJpdmUgaXMgc3VwcG9ydGVkLlxuIgogICIgIC12ICAgLS12ZXJzaW9uICAgICA6ICBkaXNwbGF5IGhkZHRlbXAgdmVyc2lvbiBudW1iZXIuXG4iCiAgIiAgLXcgICAtLXdha2UtdXAgICAgIDogIHdha2UtdXAgdGhlIGRyaXZlIGlmIG5lZWQuXG4iCi1AQCAtMTMzLDU4ICsxMTUsNjkgQEAKK0BAIC0xMzMsNTggKzExNSw2OSBAQCBtc2dpZCAiIgogICJSZXBvcnQgYnVncyBvciBuZXcgZHJpdmVzIHRvIDxoZGR0ZW1wQGd1enUubmV0Pi5cbiIKICBtc2dzdHIgIiIKICAKQEAgLTE3MDUsOSArMTcyMSwxMSBAQAogICMsIGMtZm9ybWF0CiAgbXNnaWQgImxvZyBzZW5zZSBmYWlsZWQgOiAlcyIKICBtc2dzdHIgIiIKK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL3NhdGEuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3NyYy9zYXRhLmMKICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL3NhdGEuYwotQEAgLTExOCwxMSArMTE4LDIyIEBACitAQCAtMTE4LDExICsxMTgsMjIgQEAgc3RhdGljIGVudW0gZV9nZXR0ZW1wIHNhdGFfZ2V0X3RlbXBlcmF0dQogICAgaW50ICAgICAgICAgICAgICBpOwogICAgdTE2ICogICAgICAgICAgICBwOwogIApAQCAtMTczMSw3ICsxNzQ5LDcgQEAKICAgIAogICAgLyogZ2V0IFNNQVJUIHZhbHVlcyAqLwogICAgaWYoc2F0YV9lbmFibGVfc21hcnQoZHNrLT5mZCkgIT0gMCkgewotQEAgLTE1NCwyNCArMTY1LDE1IEBACitAQCAtMTU0LDI0ICsxNjUsMTUgQEAgc3RhdGljIGVudW0gZV9nZXR0ZW1wIHNhdGFfZ2V0X3RlbXBlcmF0dQogICAgfQogIAogICAgLyogdGVtcGVyYXR1cmUgKi8KQEAgLTE3NTksNiArMTc3Nyw4IEBACiAgCiAgICAvKiBuZXZlciByZWFjaGVkICovCiAgfQorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9zcmMvc2F0YWNtZHMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3NyYy9zYXRhY21kcy5jCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9zYXRhY21kcy5jCiBAQCAtMzksNyArMzksNyBAQApAQCAtMTc3MCw3ICsxNzkwLDcgQEAKICAKICAvLyBBcHBsaWNhdGlvbiBzcGVjaWZpYyBpbmNsdWRlcwogICNpbmNsdWRlICJzYXRhY21kcy5oIgotQEAgLTgwLDggKzgwLDggQEAKK0BAIC04MCw4ICs4MCw4IEBAIGludCBzYXRhX3Bhc3NfdGhydShpbnQgZGV2aWNlLCB1bnNpZ25lZAogIAogICAgcmV0ID0gc2NzaV9TR19JTyhkZXZpY2UsIGNkYiwgc2l6ZW9mKGNkYiksIGJ1ZmZlciwgY21kWzNdICogNTEyLCBzZW5zZSwgc2l6ZW9mKHNlbnNlKSwgZHhmZXJfZGlyZWN0aW9uKTsKICAgCkBAIC0xNzgxLDcgKzE4MDEsNyBAQAogICAgICByZXR1cm4gMTsJCSAgCiAgICBlbHNlIAogICAgICByZXR1cm4gcmV0OwotQEAgLTk1LDEwICs5NSwxMCBAQAorQEAgLTk1LDEwICs5NSwxMCBAQCB2b2lkIHNhdGFfZml4c3RyaW5nKHVuc2lnbmVkIGNoYXIgKnMsIGluCiAgICBwID0gczsKICAgIGVuZCA9ICZzW2J5dGVjb3VudCAmIH4xXTsgLyogYnl0ZWNvdW50IG11c3QgYmUgZXZlbiAqLwogIApAQCAtMTc5NCw2ICsxODE0LDggQEAKICAgIH0KICAKICAgIC8qIHN0cmlwIGxlYWRpbmcgYmxhbmtzICovCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9iYWNrdHJhY2UuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3NyYy9iYWNrdHJhY2UuYwogKysrIGhkZHRlbXAtMC4zLWJldGExNS9zcmMvYmFja3RyYWNlLmMKIEBAIC0xNiw5ICsxNiwxMCBAQApAQCAtMTgyMiw3ICsxODQ0LDcgQEAKICAKICAjZGVmaW5lIE1BWF9CVFNJWkUgNjQKICAKLUBAIC00Miw3ICs0Nyw2IEBACitAQCAtNDIsNyArNDcsNiBAQCB2b2lkIGJhY2t0cmFjZV9oYW5kbGVyKGludCBuLCBzaWdpbmZvX3QKICAgIHN0YXRpYyBjaGFyICoqbWVzc2FnZXMgPSBOVUxMOwogICAgc3RhdGljIHNpemVfdCBidHNpemUgPSAwOwogICAgc3RhdGljIHNpemVfdCBpOwpAQCAtMTgzMCw3ICsxODUyLDcgQEAKICAgIHN0YXRpYyBjaGFyICpzdHJlcnIgPSAiPz8/IjsKICAgIHN0YXRpYyBGSUxFICpmc3RybTsKICAKLUBAIC02MSwxMCArNjUsMTAgQEAKK0BAIC02MSwxMCArNjUsMTAgQEAgdm9pZCBiYWNrdHJhY2VfaGFuZGxlcihpbnQgbiwgc2lnaW5mb190CiAgICAgICAgU0lDX0NBU0UoU0VHVl9NQVBFUlIpOwogICAgICAgIFNJQ19DQVNFKFNFR1ZfQUNDRVJSKTsKICAgICAgfQpAQCAtMTg0Myw3ICsxODY1LDcgQEAKICAgICAgYnJlYWs7CiAgICBjYXNlIFNJR0lMTDoKICAgICAgc3dpdGNoKGlzdC0+c2lfY29kZSkgewotQEAgLTc3LDEwICs4MSwxMCBAQAorQEAgLTc3LDEwICs4MSwxMCBAQCB2b2lkIGJhY2t0cmFjZV9oYW5kbGVyKGludCBuLCBzaWdpbmZvX3QKICAgICAgICBTSUNfQ0FTRShJTExfQ09QUk9DKTsKICAgICAgICBTSUNfQ0FTRShJTExfQkFEU1RLKTsKICAgICAgfQpAQCAtMTg1Niw3ICsxODc4LDcgQEAKICAgICAgYnJlYWs7CiAgICBjYXNlIFNJR0JVUzoKICAgICAgc3dpdGNoKGlzdC0+c2lfY29kZSkgewotQEAgLTg4LDEwICs5MiwxMCBAQAorQEAgLTg4LDEwICs5MiwxMCBAQCB2b2lkIGJhY2t0cmFjZV9oYW5kbGVyKGludCBuLCBzaWdpbmZvX3QKICAgICAgICBTSUNfQ0FTRShCVVNfQURSRVJSKTsKICAgICAgICBTSUNfQ0FTRShCVVNfT0JKRVJSKTsKICAgICAgfQpAQCAtMTg2OSw3ICsxODkxLDcgQEAKICAgICAgYnJlYWs7CiAgICB9CiAgICBmZmx1c2goZnN0cm0pOwotQEAgLTEwMSw3ICsxMDUsNyBAQAorQEAgLTEwMSw3ICsxMDUsNyBAQCB2b2lkIGJhY2t0cmFjZV9oYW5kbGVyKGludCBuLCBzaWdpbmZvX3QKICAgIC8qCiAgICAgIG9sZF9laXAgPSAqKHVuc2lnbmVkIGludCopKCh2b2lkKikmbi00KTsKICAgICAgb2xkX2VicCA9ICoodW5zaWduZWQgaW50KikoKHZvaWQqKSZuLTgpOwpAQCAtMTg3OCw3ICsxOTAwLDcgQEAKICAgICAgKih1bnNpZ25lZCBpbnQqKSgodm9pZCopJm4tOCkgPSBwdWMtPnVjX21jb250ZXh0LmdyZWdzW1JFR19FQlBdOyAgICAKICAgICAgCiAgICAgIGJ0c2l6ZSA9IGJhY2t0cmFjZShidGluZm8sIE1BWF9CVFNJWkUpOwotQEAgLTExMSwxNCArMTE1LDE0IEBACitAQCAtMTExLDE0ICsxMTUsMTQgQEAgdm9pZCBiYWNrdHJhY2VfaGFuZGxlcihpbnQgbiwgc2lnaW5mb190CiAgICAqLwogICAgCiAgICBidHNpemUgPSBiYWNrdHJhY2UoYnRpbmZvLCBNQVhfQlRTSVpFKTsKQEAgLTE4OTUsOSArMTkxNywxMSBAQAogICAgZmZsdXNoKGZzdHJtKTsKICAgIGZjbG9zZShmc3RybSk7CiAgCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9kYWVtb24uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3NyYy9kYWVtb24uYwogKysrIGhkZHRlbXAtMC4zLWJldGExNS9zcmMvZGFlbW9uLmMKLUBAIC0xNjMsMTkgKzE2MywxNiBAQAorQEAgLTE2MywxOSArMTYzLDE2IEBAIHZvaWQgZGFlbW9uX3NlbmRfbXNnKHN0cnVjdCBkaXNrICpsZGlza3MKICAKICAgICAgc3dpdGNoKGRzay0+cmV0KSB7CiAgICAgIGNhc2UgR0VUVEVNUF9OT1RfQVBQTElDQUJMRToKQEAgLTE5MjIsNyArMTk0Niw3IEBACiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgR0VUVEVNUF9LTk9XTjoKICAgICAgICBuID0gc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIiVzJWMlcyVjJWQlYyVjIiwKLUBAIC0xODUsMjYgKzE4MiwyMyBAQAorQEAgLTE4NSwyNiArMTgyLDIzIEBAIHZvaWQgZGFlbW9uX3NlbmRfbXNnKHN0cnVjdCBkaXNrICpsZGlza3MKICAgICAgICAgICAgICAgICAgICAgZ2V0X3VuaXQoZHNrKSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgR0VUVEVNUF9OT1NFTlNPUjoKQEAgLTE5NTUsNyArMTk3OSw3IEBACiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgd3JpdGUoY2ZkLCZzZXBhcmF0b3IsIDEpOwotQEAgLTIyMiwxNCArMjE2LDExIEBACitAQCAtMjIyLDE0ICsyMTYsMTEgQEAgdm9pZCBkYWVtb25fc3lzbG9nKHN0cnVjdCBkaXNrICpsZGlza3MpCiAgICBmb3IoZHNrID0gbGRpc2tzOyBkc2s7IGRzayA9IGRzay0+bmV4dCkgewogICAgICBzd2l0Y2goZHNrLT5yZXQpIHsKICAgICAgY2FzZSBHRVRURU1QX0tOT1dOOgpAQCAtMTk3Miw3ICsxOTk2LDcgQEAKICAgICAgICBicmVhazsKICAgICAgY2FzZSBHRVRURU1QX0RSSVZFX1NMRUVQOgogICAgICAgIHN5c2xvZyhMT0dfV0FSTklORywgXygiJXM6ICVzOiBkcml2ZSBpcyBzbGVlcGluZyIpLCAKLUBAIC0yNzAsMjggKzI2MSwzMCBAQAorQEAgLTI3MCwyOCArMjYxLDMwIEBAIHZvaWQgZG9fZGFlbW9uX21vZGUoc3RydWN0IGRpc2sgKmxkaXNrcykKICAgIGZkX3NldCAgICAgICAgICAgICBkZWZmZHM7CiAgICB0aW1lX3QgICAgICAgICAgICAgbmV4dF90aW1lOwogIApAQCAtMjAyNSw5ICsyMDQ5LDExIEBACiAgICB9CiAgICBjaGRpcigiLyIpOwogICAgdW1hc2soMCk7CitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9oZGR0ZW1wLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9zcmMvaGRkdGVtcC5jCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9oZGR0ZW1wLmMKLUBAIC03NSw3ICs3NSw3IEBACitAQCAtNzUsNyArNzUsNyBAQCBjaGFyICogICAgICAgICAgICAgbGlzdGVuX2FkZHI7CiAgY2hhciAgICAgICAgICAgICAgIHNlcGFyYXRvciA9IFNFUEFSQVRPUjsKICAKICBzdHJ1Y3QgYnVzdHlwZSAqICAgYnVzW0JVU19UWVBFX01BWF07CkBAIC0yMDM2LDcgKzIwNjIsNyBAQAogIAogIHN0YXRpYyBlbnVtIHsgREVGQVVMVCwgQ0VMU0lVUywgRkFIUkVOSEVJVCB9IHVuaXQ7CiAgCi1AQCAtMTk0LDIzICsxOTQsNyBAQAorQEAgLTE5NCwyMyArMTk0LDcgQEAgc3RhdGljIHZvaWQgZGlzcGxheV90ZW1wZXJhdHVyZShzdHJ1Y3QgZAogICAgICBpZiAobnVtZXJpYyAmJiBxdWlldCkKICAgICAgICBwcmludGYoIjBcbiIpOyAgICAgIAogICAgICBlbHNlCkBAIC0yMDYxLDcgKzIwODcsNyBAQAogIAogICAgICBicmVhazsKICAgIGNhc2UgR0VUVEVNUF9LTk9XTjoKLUBAIC0yMzIsMTQgKzIxNiwxNCBAQAorQEAgLTIzMiwxNCArMjE2LDE0IEBAIHN0YXRpYyB2b2lkIGRpc3BsYXlfdGVtcGVyYXR1cmUoc3RydWN0IGQKICAgICAgaWYgKG51bWVyaWMgJiYgcXVpZXQpCiAgICAgICAgcHJpbnRmKCIwXG4iKTsgICAgICAKICAgICAgZWxzZQpAQCAtMjA3OCw3ICsyMTA0LDcgQEAKICAgICAgICAKICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgotQEAgLTI2OCw4ICsyNTIsOSBAQAorQEAgLTI2OCw4ICsyNTIsOSBAQCB2b2lkIGRvX2RpcmVjdF9tb2RlKHN0cnVjdCBkaXNrICpsZGlza3MpCiAgCiAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgaW50ICAgICAgICAgICBpLCBjLCBsaW5kZXggPSAwLCBkYl9sb2FkZWQgPSAwOwpAQCAtMjA4OSwxNiArMjExNSwxNiBAQAogIAogICAgYmFja3RyYWNlX3NpZ3NlZ3YoKTsKICAgIGJhY2t0cmFjZV9zaWdpbGwoKTsKLUBAIC0yNzksNyArMjY0LDcgQEAKLSAgIGJpbmR0ZXh0ZG9tYWluIChQQUNLQUdFLCBMT0NBTEVESVIpOworQEAgLTI4Myw3ICsyNjgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICB0ZXh0ZG9tYWluIChQQUNLQUdFKTsKKyAjZW5kaWYKICAgIAogLSAgc2hvd19kYiA9IGRlYnVnID0gbnVtZXJpYyA9IHF1aWV0ID0gd2FrZXVwID0gYWZfaGludCA9IHN5c2xvZ19pbnRlcnZhbCA9IDA7CiArICBzaG93X2RiID0gZGVidWcgPSBudW1lcmljID0gcXVpZXQgPSB3YWtldXAgPSBhZl9oaW50ID0gc3lzbG9nX2ludGVydmFsID0gZm9yZWdyb3VuZCA9IDA7CiAgICB1bml0ID0gREVGQVVMVDsKICAgIHBvcnRudW0gPSBQT1JUX05VTUJFUjsKICAgIGxpc3Rlbl9hZGRyID0gTlVMTDsKLUBAIC0yOTQsNiArMjc5LDcgQEAKK0BAIC0yOTgsNiArMjgzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgICAgIHsiZHJpdmViYXNlIiwgIDAsIE5VTEwsICdiJ30sCiAgICAgICAgeyJkZWJ1ZyIsICAgICAgMCwgTlVMTCwgJ0QnfSwKICAgICAgICB7ImZpbGUiLCAgICAgICAxLCBOVUxMLCAnZid9LApAQCAtMjEwNiw3ICsyMTMyLDcgQEAKICAgICAgICB7Imxpc3RlbiIsICAgICAxLCBOVUxMLCAnbCd9LAogICAgICAgIHsidmVyc2lvbiIsICAgIDAsIE5VTEwsICd2J30sCiAgICAgICAgeyJwb3J0IiwgICAgICAgMSwgTlVMTCwgJ3AnfSwKLUBAIC0zMDUsNyArMjkxLDcgQEAKK0BAIC0zMDksNyArMjk1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgICAgIHswLCAwLCAwLCAwfQogICAgICB9OwogICAKQEAgLTIxMTUsNyArMjE0MSw3IEBACiAgICAgIGlmIChjID09IC0xKQogICAgICAgIGJyZWFrOwogICAgICAKLUBAIC0zODIsMTIgKzM2OCwxMyBAQAorQEAgLTM4NiwxMiArMzcyLDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAJCSAiICAgICAgICAgICAgICAgICAgICAgICAgKGRvbmUgZm9yIGV2ZXJ5IGRyaXZlIHN1cHBsaWVkKS5cbiIKICAJCSAiICAtZCAgIC0tZGFlbW9uICAgICAgOiAgcnVuIGhkZHRlbXAgaW4gVENQL0lQIGRhZW1vbiBtb2RlIChwb3J0ICVkIGJ5IGRlZmF1bHQuKVxuIgogIAkJICIgIC1mICAgLS1maWxlPUZJTEUgICA6ICBzcGVjaWZ5IGRhdGFiYXNlIGZpbGUgdG8gdXNlLlxuIgpAQCAtMjEzMCw3ICsyMTU2LDcgQEAKICAJCSAiICAtcSAgIC0tcXVpZXQgICAgICAgOiAgZG8gbm90IGNoZWNrIGlmIHRoZSBkcml2ZSBpcyBzdXBwb3J0ZWQuXG4iCiAgCQkgIiAgLXYgICAtLXZlcnNpb24gICAgIDogIGRpc3BsYXkgaGRkdGVtcCB2ZXJzaW9uIG51bWJlci5cbiIKICAJCSAiICAtdyAgIC0td2FrZS11cCAgICAgOiAgd2FrZS11cCB0aGUgZHJpdmUgaWYgbmVlZC5cbiIKLUBAIC00MTgsNiArNDA1LDkgQEAKK0BAIC00MjIsNiArNDA5LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogIAkgIH0KICAgICAgICAgIH0KICAJYnJlYWs7CkBAIC0yMTQwLDcgKzIxNjYsNyBAQAogICAgICAgIGRlZmF1bHQ6CiAgCWV4aXQoMSk7CiAgICAgICAgfQotQEAgLTQ4OSw2ICs0NzksNyBAQAorQEAgLTQ5Myw2ICs0ODMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgIGlmKCAoZHNrLT5mZCA9IG9wZW4oZHNrLT5kcml2ZSwgT19SRE9OTFkgfCBPX05PTkJMT0NLKSkgPCAwKSB7CiAgICAgICAgc25wcmludGYoZHNrLT5lcnJvcm1zZywgTUFYX0VSUk9STVNHX1NJWkUsICJvcGVuOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKICAgICAgICBkc2stPnR5cGUgPSBFUlJPUjsKQEAgLTIxNDgsNyArMjE3NCw3IEBACiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAKLUBAIC01MDEsNiArNDkyLDcgQEAKK0BAIC01MDUsNiArNDk2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogIAogICAgICAgIGxkaXNrcyA9IGRzay0+bmV4dDsKICAgICAgICBmcmVlKGRzayk7CkBAIC0yMTU2LDcgKzIxODIsNyBAQAogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgCi1AQCAtNTE0LDExICs1MDYsMTcgQEAKK0BAIC01MTgsMTEgKzUxMCwxNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgCWRiX2xvYWRlZCA9IDE7CiAgICAgICAgfSAgICAgIAogIApAQCAtMjE3NywxNiArMjIwMywxOCBAQAogICAgICB9CiAgICB9CiAgCi1AQCAtNTMwLDUgKzUyOCw1IEBACitAQCAtNTM0LDUgKzUzMiw1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICAgZG9fZGlyZWN0X21vZGUobGRpc2tzKTsKICAgIH0KICAKIC0gIHJldHVybiAwOwogKyAgcmV0dXJuIHJldDsKICB9CitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9hdGEuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3NyYy9hdGEuYwogKysrIGhkZHRlbXAtMC4zLWJldGExNS9zcmMvYXRhLmMKLUBAIC03NSw3ICs3NSw3IEBACitAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgZW51bSBlX2dldHRlbXAgYXRhX2dldF90ZW1wZXJhdHVyCiAgICBpbnQgICAgICAgICAgICAgIGk7CiAgICB1MTYgKiAgICAgICAgICAgIHA7CiAgCkBAIC0yMTk1LDcgKzIyMjMsNyBAQAogICAgICBjbG9zZShkc2stPmZkKTsKICAgICAgZHNrLT5mZCA9IC0xOwogICAgICByZXR1cm4gR0VUVEVNUF9OT1NFTlNPUjsKLUBAIC0xNDAsMjQgKzE0MCwxNSBAQAorQEAgLTE0MCwyNCArMTQwLDE1IEBAIHN0YXRpYyBlbnVtIGVfZ2V0dGVtcCBhdGFfZ2V0X3RlbXBlcmF0dXIKICAgICovCiAgCiAgICAvKiB0ZW1wZXJhdHVyZSAqLwpAQCAtMjIyNCw5ICsyMjUyLDExIEBACiAgCiAgICAvKiBuZXZlciByZWFjaGVkICovCiAgfQorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9zcmMvaGRkdGVtcC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvc3JjL2hkZHRlbXAuaAogKysrIGhkZHRlbXAtMC4zLWJldGExNS9zcmMvaGRkdGVtcC5oCi1AQCAtMzksOCArMzksNiBAQAorQEAgLTM5LDggKzM5LDYgQEAgZW51bSBlX2dldHRlbXAgewogICAgR0VUVEVNUF9FUlJPUiwgICAgICAgICAgICAvKiBFcnJvciAqLwogICAgR0VUVEVNUF9OT1RfQVBQTElDQUJMRSwgICAvKiAqLwogICAgR0VUVEVNUF9VTktOT1dOLCAgICAgICAgICAvKiBEcml2ZSBpcyBub3QgaW4gZGF0YWJhc2UgKi8KQEAgLTIyMzUsNyArMjI2NSw3IEBACiAgICBHRVRURU1QX0tOT1dOLCAgICAgICAgICAgIC8qIERyaXZlIGFwcGVhciBpbiBkYXRhYmFzZSAqLwogICAgR0VUVEVNUF9OT1NFTlNPUiwgICAgICAgICAvKiBEcml2ZSBhcHBlYXIgaW4gZGF0YWJhc2UgYnV0IGlzIGtub3duIHRvIGhhdmUgbm8gc2Vuc29yICovCiAgICBHRVRURU1QX0RSSVZFX1NMRUVQICAgICAgIC8qIERyaXZlIGlzIHNsZWVwaW5nICovCi1AQCAtNzgsNyArNzYsNyBAQAorQEAgLTc4LDcgKzc2LDcgQEAgc3RydWN0IGJ1c3R5cGUgewogIAogIGV4dGVybiBzdHJ1Y3QgYnVzdHlwZSAqICAgYnVzW0JVU19UWVBFX01BWF07CiAgZXh0ZXJuIGNoYXIgICAgICAgICAgICAgICBlcnJvcm1zZ1tNQVhfRVJST1JNU0dfU0laRV07CkBAIC0yMjQ0LDkgKzIyNzQsMTEgQEAKICBleHRlcm4gY2hhciAgICAgICAgICAgICAgIHNlcGFyYXRvcjsKICBleHRlcm4gbG9uZyAgICAgICAgICAgICAgIHBvcnRudW0sIHN5c2xvZ19pbnRlcnZhbDsKICBleHRlcm4gY2hhciAqICAgICAgICAgICAgIGxpc3Rlbl9hZGRyOworSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9zcmMvc2NzaWNtZHMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3NyYy9zY3NpY21kcy5jCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9zY3NpY21kcy5jCi1AQCAtMTQ3LDYgKzE0Nyw3IEBACitAQCAtMTQ3LDYgKzE0Nyw3IEBAIGludCBzY3NpX2lucXVpcnkoaW50IGRldmljZSwgdW5zaWduZWQgY2gKICAgICAgcmV0dXJuIDE7CiAgICBlbHNlIHsKICAgICAgc2NzaV9maXhzdHJpbmcoYnVmZmVyICsgOCwgMjQpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odG9wL2ZpbGVzLzAwMDEtVXNlLXBrZy1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h0b3AvZmlsZXMvMDAwMS1Vc2UtcGtnLWNvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzBkODZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odG9wL2ZpbGVzLzAwMDEtVXNlLXBrZy1jb25maWcucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorV2UgbmVlZCB0byB1c2UgcGtnLWNvbmZpZyB0byBmaW5kIHRoZSBuY3Vyc2VzIGxpYnJhcnkgaW5zdGVhZCBvZiB0aGUKK25jdXJzZXMqLWNvbmZpZyBhcHBsaWNhdGlvbnMuCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgQmFya2VyIDxwYmFya2VyQHRvZ2FubGFicy5jb20+CitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgSm9zbHluIDxyb2JlcnQuam9zbHluQHJlZHJlY3RhbmdsZS5vcmc+CisKK1Vwc3RyZWFtLXN0YXR1czogSW5hcHByb3ByaWF0ZQorICAgIChgbmN1cnNlcyotY29uZmlnYCBjYW4gYmUgdXNlZCBvdXRzaWRlIG9mIE9wZW5FbWJlZGRlZCkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNTU5ZGM0ZC4uNzdhZWEyMiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTg1LDEwICsxODUsMTAgQEAgbTRfZGVmaW5lKFtIVE9QX0NIRUNLX0xJQl0sCisgCisgQUNfQVJHX0VOQUJMRSh1bmljb2RlLCBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXVuaWNvZGVdLCBbZW5hYmxlIFVuaWNvZGUgc3VwcG9ydF0pXSwgLGVuYWJsZV91bmljb2RlPSJ5ZXMiKQorIGlmIHRlc3QgIngkZW5hYmxlX3VuaWNvZGUiID0geHllczsgdGhlbgorLSAgIEhUT1BfQ0hFQ0tfU0NSSVBUKFtuY3Vyc2VzdzZdLCBbYWRkbndzdHJdLCBbSEFWRV9MSUJOQ1VSU0VTV10sICJuY3Vyc2VzdzYtY29uZmlnIiwKKy0gICAgSFRPUF9DSEVDS19TQ1JJUFQoW25jdXJzZXN3XSwgW2FkZG53c3RyXSwgW0hBVkVfTElCTkNVUlNFU1ddLCAibmN1cnNlc3c2LWNvbmZpZyIsCistICAgICBIVE9QX0NIRUNLX1NDUklQVChbbmN1cnNlc3ddLCBbYWRkbndzdHJdLCBbSEFWRV9MSUJOQ1VSU0VTV10sICJuY3Vyc2VzdzUtY29uZmlnIiwKKy0gICAgICBIVE9QX0NIRUNLX1NDUklQVChbbmN1cnNlc10sIFthZGRud3N0cl0sIFtIQVZFX0xJQk5DVVJTRVNXXSwgIm5jdXJzZXM1LWNvbmZpZyIsCisrICAgSFRPUF9DSEVDS19TQ1JJUFQoW25jdXJzZXN3Nl0sIFthZGRud3N0cl0sIFtIQVZFX0xJQk5DVVJTRVNXXSwgInBrZy1jb25maWcgbmN1cnNlc3c2IiwKKysgICAgSFRPUF9DSEVDS19TQ1JJUFQoW25jdXJzZXN3XSwgW2FkZG53c3RyXSwgW0hBVkVfTElCTkNVUlNFU1ddLCAicGtnLWNvbmZpZyBuY3Vyc2VzdzYiLAorKyAgICAgSFRPUF9DSEVDS19TQ1JJUFQoW25jdXJzZXN3XSwgW2FkZG53c3RyXSwgW0hBVkVfTElCTkNVUlNFU1ddLCAicGtnLWNvbmZpZyBuY3Vyc2VzdzUiLAorKyAgICAgIEhUT1BfQ0hFQ0tfU0NSSVBUKFtuY3Vyc2VzXSwgW2FkZG53c3RyXSwgW0hBVkVfTElCTkNVUlNFU1ddLCAicGtnLWNvbmZpZyBuY3Vyc2VzNSIsCisgICAgICAgIEhUT1BfQ0hFQ0tfTElCKFtuY3Vyc2VzdzZdLCBbYWRkbndzdHJdLCBbSEFWRV9MSUJOQ1VSU0VTV10sCisgICAgICAgICBIVE9QX0NIRUNLX0xJQihbbmN1cnNlc3ddLCBbYWRkbndzdHJdLCBbSEFWRV9MSUJOQ1VSU0VTV10sCisgICAgICAgICAgSFRPUF9DSEVDS19MSUIoW25jdXJzZXNdLCBbYWRkbndzdHJdLCBbSEFWRV9MSUJOQ1VSU0VTV10sCitAQCAtMjAxLDggKzIwMSw4IEBAIGlmIHRlc3QgIngkZW5hYmxlX3VuaWNvZGUiID0geHllczsgdGhlbgorICAgICAgICAgIFtBQ19DSEVDS19IRUFERVJTKFtuY3Vyc2VzL2N1cnNlcy5oXSxbOl0sCisgICAgICAgICAgICAgW0FDX0NIRUNLX0hFQURFUlMoW25jdXJzZXMuaF0sWzpdLFttaXNzaW5nX2hlYWRlcnM9IiRtaXNzaW5nX2hlYWRlcnMgJGFjX2hlYWRlciJdKV0pXSldKQorIGVsc2UKKy0gICBIVE9QX0NIRUNLX1NDUklQVChbbmN1cnNlczZdLCBbcmVmcmVzaF0sIFtIQVZFX0xJQk5DVVJTRVNdLCAibmN1cnNlczYtY29uZmlnIiwKKy0gICAgSFRPUF9DSEVDS19TQ1JJUFQoW25jdXJzZXNdLCBbcmVmcmVzaF0sIFtIQVZFX0xJQk5DVVJTRVNdLCAibmN1cnNlczUtY29uZmlnIiwKKysgICBIVE9QX0NIRUNLX1NDUklQVChbbmN1cnNlczZdLCBbcmVmcmVzaF0sIFtIQVZFX0xJQk5DVVJTRVNdLCAicGtnLWNvbmZpZyBuY3Vyc2VzNiIsCisrICAgIEhUT1BfQ0hFQ0tfU0NSSVBUKFtuY3Vyc2VzXSwgW3JlZnJlc2hdLCBbSEFWRV9MSUJOQ1VSU0VTXSwgInBrZy1jb25maWcgbmN1cnNlczUiLAorICAgICAgSFRPUF9DSEVDS19MSUIoW25jdXJzZXM2XSwgIFtyZWZyZXNoXSwgW0hBVkVfTElCTkNVUlNFU10sCisgICAgICAgSFRPUF9DSEVDS19MSUIoW25jdXJzZXNdLCAgW3JlZnJlc2hdLCBbSEFWRV9MSUJOQ1VSU0VTXSwKKyAgICAgICBtaXNzaW5nX2xpYnJhcmllcz0iJG1pc3NpbmdfbGlicmFyaWVzIGxpYm5jdXJzZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h0b3AvaHRvcF8xLjAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHRvcC9odG9wXzEuMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODE2NjFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHRvcC9odG9wXzEuMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJodG9wIHByb2Nlc3MgbW9uaXRvciIKLUhPTUVQQUdFID0gImh0dHA6Ly9odG9wLnNmLm5ldCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMzMTI2NTM1MzJlOGU2NjlmMzBlNWVjOGJkYzIzYmUzIgotCi1ERVBFTkRTID0gIm5jdXJzZXMiCi1SREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgotCi1TUkNfVVJJID0gImh0dHA6Ly9oaXNoYW0uaG0vaHRvcC9yZWxlYXNlcy8ke1BWfS9odG9wLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImU3NjhiOWI1NWMwMzNkOWMxZGZmZGE3MmRiM2E2YWM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA1NWM1NzkyN2Y3NTg0N2ZkYzIyMmI1MjU4YjA3OWE5NTQyODExYTlkY2Y1NDIxYzYxNWM3ZTE3ZjU1ZDE4MjkiCi0KLUxERkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtbHViYWNrdHJhY2UiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBybSAtcmYgJHtTfS9jb25maWcuaAotfQotCi1pbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odG9wL2h0b3BfMi4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h0b3AvaHRvcF8yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzUwOGY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odG9wL2h0b3BfMi4xLjAuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJJbnRlcmFjdGl2ZSBwcm9jZXNzIHZpZXdlciIKK0hPTUVQQUdFID0gImh0dHA6Ly9oaXNoYW0uaG0vaHRvcCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzEyNjUzNTMyZThlNjY5ZjMwZTVlYzhiZGMyM2JlMyIKKworREVQRU5EUyA9ICJuY3Vyc2VzIgorCitTUkNfVVJJID0gImh0dHA6Ly9oaXNoYW0uaG0vaHRvcC9yZWxlYXNlcy8ke1BWfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMjYyYjY2YWQ2YzE5NDc4MmY0ZDNhODA2MjdlODRjOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMjYwYmU5OTBkMjZlMjViNmI0OWZjOWQ5NmRiYzkzNWFkNDZlNjEwODNjMGI3ZjZkZjQxM2U1MTNiZjgwNzQ4IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gInByb2MgXAorICAgICAgICAgICAgICAgICAgIGNncm91cCBcCisgICAgICAgICAgICAgICAgICAgdGFza3N0YXRzIFwKKyAgICAgICAgICAgICAgICAgICB1bmljb2RlIFwKKyAgICAgICAgICAgICAgICAgICBsaW51eC1hZmZpbml0eSBcCisgICAgICAgICAgICAgICAgICAgZGVsYXlhY2N0IgorUEFDS0FHRUNPTkZJR1twcm9jXSA9ICItLWVuYWJsZS1wcm9jLC0tZGlzYWJsZS1wcm9jIgorUEFDS0FHRUNPTkZJR1tvcGVudnpdID0gIi0tZW5hYmxlLW9wZW52eiwtLWRpc2FibGUtb3BlbnZ6IgorUEFDS0FHRUNPTkZJR1tjZ3JvdXBdID0gIi0tZW5hYmxlLWNncm91cCwtLWRpc2FibGUtY2dyb3VwIgorUEFDS0FHRUNPTkZJR1t2c2VydmVyXSA9ICItLWVuYWJsZS12c2VydmVyLC0tZGlzYWJsZS12c2VydmVyIgorUEFDS0FHRUNPTkZJR1t0YXNrc3RhdHNdID0gIi0tZW5hYmxlLXRhc2tzdGF0cywtLWRpc2FibGUtdGFza3N0YXRzIgorUEFDS0FHRUNPTkZJR1t1bmljb2RlXSA9ICItLWVuYWJsZS11bmljb2RlLC0tZGlzYWJsZS11bmljb2RlIgorUEFDS0FHRUNPTkZJR1tsaW51eC1hZmZpbml0eV0gPSAiLS1lbmFibGUtbGludXgtYWZmaW5pdHksLS1kaXNhYmxlLWxpbnV4LWFmZmluaXR5IgorUEFDS0FHRUNPTkZJR1tod2xvY10gPSAiLS1lbmFibGUtaHdsb2MsLS1kaXNhYmxlLWh3bG9jLGh3bG9jIgorUEFDS0FHRUNPTkZJR1tzZXR1aWRdID0gIi0tZW5hYmxlLXNldHVpZCwtLWRpc2FibGUtc2V0dWlkIgorUEFDS0FHRUNPTkZJR1tkZWxheWFjY3RdID0gIi0tZW5hYmxlLWRlbGF5YWNjdCwtLWRpc2FibGUtZGVsYXlhY2N0LGxpYm5sIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgcm0gLXJmICR7U30vY29uZmlnLmgKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHVuc3BlbGwvaHVuc3BlbGxfMS42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h1bnNwZWxsL2h1bnNwZWxsXzEuNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjU3MjlmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHVuc3BlbGwvaHVuc3BlbGxfMS42LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIkEgc3BlbGwgY2hlY2tlciBhbmQgbW9ycGhvbG9naWNhbCBhbmFseXplciBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2h1bnNwZWxsLmdpdGh1Yi5pby8iCi1MSUNFTlNFID0gIkdQTHYzIHwgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiBcCi0iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vYXJjaGl2ZS92JHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjBkZjFjMThjMTI4NGY4NjI1YWY1YWU1YThkNWM0Y2VmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwZjU5MzczM2M1MGI3OTQwMTZiYjAzZDMxZmQyYTIwNzFlNDYxMGM2ZmE0NzA4ZTMzZWRhZDIzMzUxMDJjNDkiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLVJERVBFTkRTXyR7UE59ID0gInBlcmwiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odW5zcGVsbC9odW5zcGVsbF8xLjYuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHVuc3BlbGwvaHVuc3BlbGxfMS42LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZlZWE4OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHVuc3BlbGwvaHVuc3BlbGxfMS42LjIuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJBIHNwZWxsIGNoZWNrZXIgYW5kIG1vcnBob2xvZ2ljYWwgYW5hbHl6ZXIgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9odW5zcGVsbC5naXRodWIuaW8vIgorTElDRU5TRSA9ICJHUEx2MyB8IExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiIFwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAorIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L2FyY2hpdmUvdiR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYTU0NTA0Y2I0NzBhYWZhNjUzMGJiMzcyYTEwZGMwNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzY2Q5Y2ViMDYyZmU1ODE0ZjY2OGU0ZjIyYjJmYTZlM2JhMGIzMzliOTIxNzM5NTQxY2UxODBjYWM0ZDZmNGM0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitSREVQRU5EU18ke1BOfSA9ICJwZXJsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h3ZGF0YS9od2RhdGFfZ2l0LmJiCmluZGV4IDUwZDM1YzYuLjY3OTY3M2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9od2RhdGEvaHdkYXRhX2dpdC5iYgpAQCAtNSw4ICs1LDggQEAKIExJQ0VOU0UgPSAiR1BMLTIuMCsiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xNTU2NTQ3NzExZTgyNDY5OTJiOTk5ZWRkOTQ0NWE1NyIKIAotUFYgPSAiMC4yOTErZ2l0JHtTUkNQVn0iCi1TUkNSRVYgPSAiNGJmYmRjZjU5MTNkNmRkNTMzMzZkMzFiODAzNTcwODA3NWU2ZmRmYSIKK1BWID0gIjAuMjk4K2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gIjkwMzBmYmQ2YWIxNTM4ZjRkNzdkM2NmMWUwYjQ2M2E3ZWMyNWI1YzQiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdmNyaG9uZWsvJHtCUE59LmdpdCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsLTEuNC9yMjUuZGlmZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsLTEuNC9yMjUuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY2NmNlMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbC0xLjQvcjI1LmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1UYWtlbiBmcm9tIHVwc3RyZWFtIHN1YnZlcnNpb24gcmVwb3NpdG9yeToKLQotaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2lrc2VtZWwvc291cmNlL2RldGFpbD9yPTI1Ci0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgMTAgKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIGlrc2VtZWwtMS40Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgaWtzZW1lbC0xLjQvY29uZmlndXJlLmFjCi1AQCAtNDMsMTEgKzQzLDE5IEBAIEFNX0NPTkRJVElPTkFMKERPX1BPU0lYLCB0ZXN0ICJ4JGRlZmlvIgotIGRubCBDaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zCi0gQUNfU0VBUkNIX0xJQlMocmVjdixzb2NrZXQpCi0gQUNfQ0hFQ0tfRlVOQ1MoZ2V0b3B0X2xvbmcpCi0gQUNfQ0hFQ0tfRlVOQ1MoZ2V0YWRkcmluZm8pCi0gCi0tQU1fUEFUSF9MSUJHTlVUTFMoLEFDX0RFRklORShIQVZFX0dOVVRMUywsIlVzZSBsaWJnbnV0bHMiKSkKLStkbmwgQ2hlY2sgR05VIFRMUwotK1BLR19DSEVDS19NT0RVTEVTKEdOVVRMUywgZ251dGxzID49IDIuMC4wLCBoYXZlX2dudXRscz15ZXMsIGhhdmVfZ251dGxzPW5vKQotK2lmIHRlc3QgIngkaGF2ZV9nbnV0bHMiID0gInh5ZXMiOyB0aGVuCi0rICBMSUJHTlVUTFNfQ0ZMQUdTPSIkR05VVExTX0NGTEFHUyIKLSsgIExJQkdOVVRMU19MSUJTPSIkR05VVExTX0xJQlMiCi0rICBBQ19TVUJTVChMSUJHTlVUTFNfQ0ZMQUdTKQotKyAgQUNfU1VCU1QoTElCR05VVExTX0xJQlMpCi0rICBBQ19ERUZJTkUoSEFWRV9HTlVUTFMsIDEsIFt3aGV0aGVyIHRvIHVzZSBHbnVUU0wgc3VwcG9ydC5dKQotK2ZpCi0gCi0gZG5sIENoZWNrIC1XYWxsIGZsYWcgb2YgR0NDCi0gaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCi0gICBpZiB0ZXN0IC16ICJgZWNobyAiJENGTEFHUyIgfCBncmVwICJcLVdhbGwiIDI+IC9kZXYvbnVsbGAiIDsgdGhlbgotICAgICBDRkxBR1M9IiRDRkxBR1MgLVdhbGwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbC9hdm9pZC1vYnNvbGV0ZS1nbnV0bHMtYXBpcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsL2F2b2lkLW9ic29sZXRlLWdudXRscy1hcGlzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZmNjYzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbC9hdm9pZC1vYnNvbGV0ZS1nbnV0bHMtYXBpcy5wYXRjaApAQCAtMCwwICsxLDU1IEBACitGcm9tIDcxMzZhOTA4YTA1NmQwZTM2Yzg5YjZlMWMzOWFkZmY4Y2UyYmIxZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogV2VkLCAxIE5vdiAyMDE3IDEzOjE3OjM0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2b2lkIG9ic29sZXRlIGdudXRscyBhcGlzCisKK1RoZSBnbnV0bHNfKl9zZXRfcHJpb3JpdHkoKSBmYW1pbHkgb2YgZnVuY3Rpb25zIHdhcyBtYXJrZWQgZGVwcmVjYXRlZAoraW4gZ251dGxzIDIuMTIueCBhbmQgcmVtb3ZlZCBjb21wbGV0ZWx5IGluIDMuNS54LiBUaGVzZSBmdW5jdGlvbnMKK2hhdmUgYmVlbiBzdXBlcmNlZGVkIGJ5IGdudXRsc19wcmlvcml0eV9zZXRfZGlyZWN0KCksIHdoaWNoIHdhcyBhZGRlZAoraW4gZ251dGxzIDIuMi4wIChyZWxlYXNlZCAyMDA3LTEyLTE0KS4KKworUmF0aGVyIHRoYW4gc2ltcGx5IHVwZGF0ZSB0aGUgY3VzdG9tIGdudXRsc18qX3NldF9wcmlvcml0eSgpIGNhbGxzIHRvCit1c2UgZ251dGxzX3ByaW9yaXR5X3NldF9kaXJlY3QoKSwgZHJvcCB0aGUgY3VzdG9tIHByaW9yaXR5IHNlbGVjdGlvbgorY29tcGxldGVseSBhbmQgdXNlIHRoZSByZWNvbW1lbmRlZCBhcHByb2FjaCBvZiBsZXR0aW5nIGdudXRscyBwaWNrIGEKK3JlYXNvbmFibGUgc2V0IG9mIGRlZmF1bHRzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KKy0tLQorIHNyYy90bHMtZ251dGxzLmMgfCAxMiArKy0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy90bHMtZ251dGxzLmMgYi9zcmMvdGxzLWdudXRscy5jCitpbmRleCBkN2I3YzkxLi43NDllOWVmIDEwMDY0NAorLS0tIGEvc3JjL3Rscy1nbnV0bHMuYworKysrIGIvc3JjL3Rscy1nbnV0bHMuYworQEAgLTQ4LDExICs0OCw2IEBAIHRsc19wdWxsIChzdHJ1Y3QgaWtzdGxzX2RhdGEgKmRhdGEsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbikKKyBzdGF0aWMgaW50CisgdGxzX2hhbmRzaGFrZSAoc3RydWN0IGlrc3Rsc19kYXRhICoqZGF0YXAsIGlrc3RyYW5zcG9ydCAqdHJhbnMsIHZvaWQgKnNvY2spCisgeworLQljb25zdCBpbnQgcHJvdG9jb2xfcHJpb3JpdHlbXSA9IHsgR05VVExTX1RMUzEsIEdOVVRMU19TU0wzLCAwIH07CistCWNvbnN0IGludCBreF9wcmlvcml0eVtdID0geyBHTlVUTFNfS1hfUlNBLCAwIH07CistCWNvbnN0IGludCBjaXBoZXJfcHJpb3JpdHlbXSA9IHsgR05VVExTX0NJUEhFUl8zREVTX0NCQywgR05VVExTX0NJUEhFUl9BUkNGT1VSLCAwfTsKKy0JY29uc3QgaW50IGNvbXBfcHJpb3JpdHlbXSA9IHsgR05VVExTX0NPTVBfWkxJQiwgR05VVExTX0NPTVBfTlVMTCwgMCB9OworLQljb25zdCBpbnQgbWFjX3ByaW9yaXR5W10gPSB7IEdOVVRMU19NQUNfU0hBLCBHTlVUTFNfTUFDX01ENSwgMCB9OworIAlzdHJ1Y3QgaWtzdGxzX2RhdGEgKmRhdGE7CisgCWludCByZXQ7CisgCitAQCAtODEsMTEgKzc2LDggQEAgdGxzX2hhbmRzaGFrZSAoc3RydWN0IGlrc3Rsc19kYXRhICoqZGF0YXAsIGlrc3RyYW5zcG9ydCAqdHJhbnMsIHZvaWQgKnNvY2spCisgCQlyZXR1cm4gSUtTX05PTUVNOworIAl9CisgCistCWdudXRsc19wcm90b2NvbF9zZXRfcHJpb3JpdHkgKGRhdGEtPnNlc3MsIHByb3RvY29sX3ByaW9yaXR5KTsKKy0JZ251dGxzX2NpcGhlcl9zZXRfcHJpb3JpdHkoZGF0YS0+c2VzcywgY2lwaGVyX3ByaW9yaXR5KTsKKy0JZ251dGxzX2NvbXByZXNzaW9uX3NldF9wcmlvcml0eShkYXRhLT5zZXNzLCBjb21wX3ByaW9yaXR5KTsKKy0JZ251dGxzX2t4X3NldF9wcmlvcml0eShkYXRhLT5zZXNzLCBreF9wcmlvcml0eSk7CistCWdudXRsc19tYWNfc2V0X3ByaW9yaXR5KGRhdGEtPnNlc3MsIG1hY19wcmlvcml0eSk7CisrCWdudXRsc19zZXRfZGVmYXVsdF9wcmlvcml0eSAoZGF0YS0+c2Vzcyk7CisrCisgCWdudXRsc19jcmVkZW50aWFsc19zZXQgKGRhdGEtPnNlc3MsIEdOVVRMU19DUkRfQ0VSVElGSUNBVEUsIGRhdGEtPmNyZWQpOworIAorIAlnbnV0bHNfdHJhbnNwb3J0X3NldF9wdXNoX2Z1bmN0aW9uIChkYXRhLT5zZXNzLCAoZ251dGxzX3B1c2hfZnVuYykgdGxzX3B1c2gpOworLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbC9maXgtY29uZmlndXJlLW9wdGlvbi1wYXJzaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWwvZml4LWNvbmZpZ3VyZS1vcHRpb24tcGFyc2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWFjY2RkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWwvZml4LWNvbmZpZ3VyZS1vcHRpb24tcGFyc2luZy5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIDE3YTVjZjhmNzBiODZkOGEyMTk1NTYyZTJkOWRjY2NiNGZhMzVjODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogVHVlLCAzMSBPY3QgMjAxNyAyMDowNTo1OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBmaXggY29uZmlndXJlIG9wdGlvbiBwYXJzaW5nCisKK0Rvbid0IG92ZXItd3JpdGUgd2l0aF9vcGVuc3NsIGV0YyBieSB0cnlpbmcgdG8gc2V0IHRvICRlbmFibGV2YXIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxNCArKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDgyZTZkMmQuLjgyM2U2YzEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTU2LDE3ICs1NiwxNyBAQCBmaQorIGRubCBPcHRpb25zIGZvciBvdmVycmlkaW5nIFRMUyBjaGVja3MKKyBBQ19BUkdfV0lUSChbb3BlbnNzbF0sCisgICBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LW9wZW5zc2xdLFtkaXNhYmxlIGNoZWNraW5nIGZvciBvcGVuc3NsXSksCistICBbd2l0aF9vcGVuc3NsPSRlbmFibGV2YWxdLAorLSAgW3dpdGhfb3BlbnNzbD15ZXNdCisrICBbXSwKKysgIFt3aXRoX29wZW5zc2w9YXV0b10KKyApCisgQUNfQVJHX1dJVEgoW2dudXRsc10sCisgICBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWdudXRsc10sW2Rpc2FibGUgY2hlY2tpbmcgZm9yIEdOVSBUTFNdKSwKKy0gIFt3aXRoX2dudXRscz0kZW5hYmxldmFsXSwKKy0gIFt3aXRoX2dudXRscz15ZXNdCisrICBbXSwKKysgIFt3aXRoX2dudXRscz1hdXRvXQorICkKKyAKKyBkbmwgQ2hlY2sgT3BlblNTTAorLWlmIHRlc3QgIngkd2l0aF9vcGVuc3NsIiA9ICJ4eWVzIjsgdGhlbgorK2lmIHRlc3QgIngkd2l0aF9vcGVuc3NsIiAhPSAieG5vIjsgdGhlbgorICAgUEtHX0NIRUNLX01PRFVMRVMoW09QRU5TU0xdLCBvcGVuc3NsID49IDAuOS44LCBoYXZlX29wZW5zc2w9eWVzLCBoYXZlX29wZW5zc2w9bm8pCisgICBpZiB0ZXN0ICJ4JGhhdmVfb3BlbnNzbCIgPSAieHllcyI7IHRoZW4KKyAgICAgTElCT1BFTlNTTF9DRkxBR1M9IiRPUEVOU1NMX0NGTEFHUyIKK0BAIC03OCw3ICs3OCw3IEBAIGlmIHRlc3QgIngkd2l0aF9vcGVuc3NsIiA9ICJ4eWVzIjsgdGhlbgorIGZpCisgCisgZG5sIENoZWNrIEdOVSBUTFMKKy1pZiB0ZXN0ICJ4JHdpdGhfZ251dGxzIiA9ICJ4eWVzIjsgdGhlbgorK2lmIHRlc3QgIngkd2l0aF9nbnV0bHMiICE9ICJ4bm8iOyB0aGVuCisgICBpZiB0ZXN0ICJ4JGhhdmVfb3BlbnNzbCIgIT0gInh5ZXMiOyB0aGVuCisgICAgIFBLR19DSEVDS19NT0RVTEVTKFtHTlVUTFNdLCBnbnV0bHMgPj0gMi4wLjAsIGhhdmVfZ251dGxzPXllcywgaGF2ZV9nbnV0bHM9bm8pCisgICAgIGlmIHRlc3QgIngkaGF2ZV9nbnV0bHMiID0gInh5ZXMiOyB0aGVuCitAQCAtOTQsNyArOTQsNyBAQCBmaQorIGRubCBPcHRpb24gZm9yIG92ZXJyaWRpbmcgUHl0aG9uIGNoZWNrCisgQUNfQVJHX0VOQUJMRShbcHl0aG9uXSwKKyAgIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtcHl0aG9uXSxbZGlzYWJsZSBjaGVja2luZyBmb3IgUHl0aG9uIGJpbmRpbmdzXSksCistICBbd2l0aF9weXRob249JGVuYWJsZXZhbF0sCisrICBbXSwKKyAgIFt3aXRoX3B5dGhvbj15ZXNdCisgKQorIAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbF8xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbF8xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkwM2U5MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsXzEuNS5iYgpAQCAtMCwwICsxLDI0IEBACitTVU1NQVJZID0gIkZhc3QgYW5kIHBvcnRhYmxlIFhNTCBwYXJzZXIgYW5kIEphYmJlciBwcm90b2NvbCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL21lZHVrZXR0by9pa3NlbWVsIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ4MDQ1ZjNiOGY5MjljMWNiMjlhMWUzZmQ3MzdiNDk5IgorCitTUkNSRVYgPSAiOTc4YjczMzQ2MmU0MWVmZDVkYjcyYmM5OTc0Y2IzYjBkMWQ1ZjZmYSIKK1BWID0gIjEuNStnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21lZHVrZXR0by9pa3NlbWVsLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtY29uZmlndXJlLW9wdGlvbi1wYXJzaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkLW9ic29sZXRlLWdudXRscy1hcGlzLnBhdGNoIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UKKworIyBUTFMgc3VwcG9ydCByZXF1aXJlcyBlaXRoZXIgb3BlbnNzbCBvciBnbnV0bHMgKGlmIGJvdGggYXJlIGVuYWJsZWQgb3BlbnNzbCB3aWxsIGJlIHVzZWQpLgorUEFDS0FHRUNPTkZJRyA/PSAiZ251dGxzIgorCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1weXRob24iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuLzAwMDEtQ01ha2VMaXN0cy50eHQtaW5zdGFsbC1GaW5kRWlnZW4zLmNtYWtlLXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZWlnZW4vbGliZWlnZW4vMDAwMS1DTWFrZUxpc3RzLnR4dC1pbnN0YWxsLUZpbmRFaWdlbjMuY21ha2Utc2NyaXB0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjFkYWRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZWlnZW4vbGliZWlnZW4vMDAwMS1DTWFrZUxpc3RzLnR4dC1pbnN0YWxsLUZpbmRFaWdlbjMuY21ha2Utc2NyaXB0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBmZDhiYzY2ZWZhYzEwNTljMTA2OGY4MDQ3NDZiMDFiOTAxNzdjMzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTHVrYXMgQnVsd2FobiA8bHVrYXMuYnVsd2FobkBvc3MuYm13LWNhcml0LmRlPgotRGF0ZTogU3VuLCAxOCBPY3QgMjAxNSAxNjo1MjoyNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBDTWFrZUxpc3RzLnR4dDogaW5zdGFsbCBGaW5kRWlnZW4zLmNtYWtlIHNjcmlwdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTHVrYXMgQnVsd2FobiA8bHVrYXMuYnVsd2FobkBvc3MuYm13LWNhcml0LmRlPgotLS0tCi0gQ01ha2VMaXN0cy50eHQgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggNzZhMTFiOS4uZWM2YzZlYSAxMDA2NDQKLS0tLSBhL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTM0Miw2ICszNDIsOCBAQCBpZihFSUdFTl9CVUlMRF9QS0dDT05GSUcpCi0gICAgICAgICApCi0gZW5kaWYoRUlHRU5fQlVJTERfUEtHQ09ORklHKQotIAotK2luc3RhbGwoRklMRVMgIiR7UFJPSkVDVF9TT1VSQ0VfRElSfS9jbWFrZS9GaW5kRWlnZW4zLmNtYWtlIiBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vc2hhcmUvY21ha2UvTW9kdWxlcyIpCi0rCi0gYWRkX3N1YmRpcmVjdG9yeShFaWdlbikKLSAKLSBhZGRfc3ViZGlyZWN0b3J5KGRvYyBFWENMVURFX0ZST01fQUxMKQotLS0gCi0xLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuXzMuMi44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlaWdlbi9saWJlaWdlbl8zLjIuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNjYTJlOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuXzMuMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRWlnZW4gaXMgYSBDKysgdGVtcGxhdGUgbGlicmFyeSBmb3IgbGluZWFyIGFsZ2VicmE6IG1hdHJpY2VzLCB2ZWN0b3JzLCBudW1lcmljYWwgc29sdmVycywgYW5kIHJlbGF0ZWQgYWxnb3JpdGhtcy4iCi1BVVRIT1IgPSAiQmVub8OudCBKYWNvYiBhbmQgR2HDq2wgR3Vlbm5lYmF1ZCBhbmQgb3RoZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL2VpZ2VuLnR1eGZhbWlseS5vcmcvIgotTElDRU5TRSA9ICJNUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5NUEwyO21kNT04MTVjYTU5OWM5ZGYyNDdhMGM3ZjYxOWJhYjEyM2RhZCIKLQotU1JDX1VSSSA9ICJodHRwOi8vYml0YnVja2V0Lm9yZy9laWdlbi9laWdlbi9nZXQvJHtQVn0udGFyLmJ6Mjtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1pbnN0YWxsLUZpbmRFaWdlbjMuY21ha2Utc2NyaXB0LnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjllM2JmYWFhYjNkYjE4MjUzY2ZkODdlYTY5N2IzYWIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyMmE2M2Q2NzJiNzBmMzljMjcxYzVlMmE0YTQzYmExNGQxMjAxNTY3NDMzMTc5MDQxNGZjYjE2N2MzNTdlNTUiCi0KLVMgPSAiJHtXT1JLRElSfS9laWdlbi1laWdlbi0wNzEwNWY3MTI0ZjkiCi0KLWluaGVyaXQgY21ha2UKLQotRklMRVNfJHtQTn0gPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzICR7ZGF0YWRpcn0vcGtnY29uZmlnIgotCi0jICR7UE59IGlzIGVtcHR5IHNvIHdlIG5lZWQgdG8gdHdlYWsgLWRldiBhbmQgLWRiZyBwYWNrYWdlIGRlcGVuZGVuY2llcwotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLVJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuXzMuMy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlaWdlbi9saWJlaWdlbl8zLjMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzNiMzJlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlaWdlbi9saWJlaWdlbl8zLjMuNC5iYgpAQCAtMCwwICsxLDIwIEBACitERVNDUklQVElPTiA9ICJFaWdlbiBpcyBhIEMrKyB0ZW1wbGF0ZSBsaWJyYXJ5IGZvciBsaW5lYXIgYWxnZWJyYTogbWF0cmljZXMsIHZlY3RvcnMsIG51bWVyaWNhbCBzb2x2ZXJzLCBhbmQgcmVsYXRlZCBhbGdvcml0aG1zLiIKK0FVVEhPUiA9ICJCZW5vw650IEphY29iIGFuZCBHYcOrbCBHdWVubmViYXVkIGFuZCBvdGhlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vZWlnZW4udHV4ZmFtaWx5Lm9yZy8iCitMSUNFTlNFID0gIk1QTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLk1QTDI7bWQ1PTgxNWNhNTk5YzlkZjI0N2EwYzdmNjE5YmFiMTIzZGFkIgorCitTUkNfVVJJID0gImh0dHA6Ly9iaXRidWNrZXQub3JnL2VpZ2VuL2VpZ2VuL2dldC8ke1BWfS50YXIuYnoyO2Rvd25sb2FkZmlsZW5hbWU9JHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhN2FhYjlmNzU4MjQ5Yjg2YzkzMjIxYWQ0MTdmYmUxOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZDI1NGJlYjBiYWZjNjk1ZDBmNjJhZTFhMjIyZmY4NWI1MmRiYWEzYTE2Zjc2ZTc4MWRjZTIyZDBkMjBhNGE2IgorCitTID0gIiR7V09SS0RJUn0vZWlnZW4tZWlnZW4tNWEwMTU2ZTQwZmViIgorCitpbmhlcml0IGNtYWtlCisKK0ZJTEVTXyR7UE59ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9IgorRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vZWlnZW4zL2NtYWtlICR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlcyAke2RhdGFkaXJ9L3BrZ2NvbmZpZyIKKworIyAke1BOfSBpcyBlbXB0eSBzbyB3ZSBuZWVkIHRvIHR3ZWFrIC1kZXYgYW5kIC1kYmcgcGFja2FnZSBkZXBlbmRlbmNpZXMKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCitSUkVDT01NRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2QuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MDYwNTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiQyBsaWJyYXJ5IGFuZCB0b29scyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbGludXggR1BJTyBjaGFyYWN0ZXIgZGV2aWNlIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJjYWNlZDBiMjVkZmVmZDRjNjAxZDkyYmQxNTExNmRlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL2xpYnMvbGliZ3Bpb2QvJHtCUH0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWY5ZDg1NTM1MmIxYTUyNzJjZjZmMWMyZTIwNjg5ZDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmRmZDZhZWI1NDRlOGI3YmFmNDg0YTA1YzlhZTBlNjcwMjJjMTA5MzYyYTQxZDg3MDA1MzkzMDQ2YjZiZWFjZiIKLQotUFYgPSAiMC4zLjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIGVuYWJsZSB0b29scwotUEFDS0FHRUNPTkZJRyA/PSAidG9vbHMiCi0KLVBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLC0tZGlzYWJsZS10ZXN0cyxrbW9kIHVkZXYiCi1QQUNLQUdFQ09ORklHW3Rvb2xzXSA9ICItLWVuYWJsZS10b29scywtLWRpc2FibGUtdG9vbHMsIgotCi1QQUNLQUdFUyArPSAiICR7UE59LXRvb2xzIgotCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2QuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q3NzUwNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2QuaW5jCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQyBsaWJyYXJ5IGFuZCB0b29scyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbGludXggR1BJTyBjaGFyYWN0ZXIgZGV2aWNlIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJjYWNlZDBiMjVkZmVmZDRjNjAxZDkyYmQxNTExNmRlIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL2xpYnMvbGliZ3Bpb2QvJHtCUH0udGFyLnh6IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworIyBlbmFibGUgdG9vbHMKK1BBQ0tBR0VDT05GSUcgPz0gInRvb2xzIgorCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMsa21vZCB1ZGV2IgorUEFDS0FHRUNPTkZJR1t0b29sc10gPSAiLS1lbmFibGUtdG9vbHMsLS1kaXNhYmxlLXRvb2xzLCIKKworUEFDS0FHRVMgPSsgIiAke1BOfS10b29scyIKKworRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCisKK1JSRUNPTU1FTkRTX1RPT0xTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Rvb2xzJywgJyR7UE59LXRvb2xzJywgJycsZCl9IgorUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7UlJFQ09NTUVORFNfVE9PTFN9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8wLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2RfMC4zLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlmYjY1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2RfMC4zLjMuYmIKQEAgLTAsMCArMSw0IEBACityZXF1aXJlIGxpYmdwaW9kLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiMmFhMWUxYTgwYzNjOTE5YWUxNDJhYjlhNTVmYjU5Y2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjc3M2U1NTdhZjFhNDk3Zjc4NjgyNTQ2MmE3NzZiN2JmOTAxNjhlNjdlZTBhNWJjNWQyNDczYTU2NzRkYzM4YyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2RfMS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kXzEuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNDk5ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kXzEuMC4xLmJiCkBAIC0wLDAgKzEsNCBAQAorcmVxdWlyZSBsaWJncGlvZC5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjJjYTBjM2ViMTdkNjllMzY3YjZmNmExMDljYTg2ZTQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3MjkyNDE5NTM2N2Y1ZmIwNDVjMDIzZDY1MzQwYzRiN2RmYzg3NjQ0OTk1MTZiZTQ0NjU1Mzg2NTIwOGRlZGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmlpby9saWJpaW9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJpaW8vbGliaWlvX2dpdC5iYgppbmRleCBkNjZhYzU4Li5iYTM4MGVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmlpby9saWJpaW9fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaWlvL2xpYmlpb19naXQuYmIKQEAgLTQsMjEgKzQsNDEgQEAKIExJQ0VOU0UgPSAiTEdQTHYyLjErIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTdjMTNiMzM3NmNlYTBjZTY4ZDJkMmRhMGExYjNhNzJjIgogCi1TUkNSRVYgPSAiMDhmOTQ3ZDVlNDA2MDAyNTliYjY5OGMzYjk1NTM4ZTlmMmJmZWNjMiIKLVBWID0gIjAuOCtnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJmYTgyOTc0ZDhiZDFmZGVkNzhlNjMwYWI3MWE3ZGVkMWIxMWQwZTMzIgorUFYgPSAiMC4xNCtnaXQke1NSQ1BWfSIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2FuYWxvZ2RldmljZXNpbmMvbGliaWlvLmdpdCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hbmFsb2dkZXZpY2VzaW5jL2xpYmlpby5naXQ7cHJvdG9jb2w9aHR0cHMiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLURFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGF2YWhpIGxpYmFpbyBsaWJ1c2IxIGxpYnhtbDIiCitpbmhlcml0IGNtYWtlIHB5dGhvbm5hdGl2ZSBzeXN0ZW1kCiAKLWluaGVyaXQgY21ha2UgcHl0aG9ubmF0aXZlCitERVBFTkRTID0gIiBcCisgICAgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGxpYmFpbyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd6ZXJvY29uZicsICdhdmFoaScsICcnLCBkKX0gXAorIgorCitFWFRSQV9PRUNNQUtFID0gIiBcCisgICAgLURDTUFLRV9CVUlMRF9UWVBFPVJlbFdpdGhEZWJJbmZvIFwKKyAgICAtRFVERVZfUlVMRVNfSU5TVEFMTF9ESVI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctRFdJVEhfU1lTVEVNRD1PTiAtRFNZU1RFTURfVU5JVF9JTlNUQUxMX0RJUj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9JywgJycsIGQpfSBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJVU0JfQkFDS0VORCBORVRXT1JLX0JBQ0tFTkQiCisKK1BBQ0tBR0VDT05GSUdbVVNCX0JBQ0tFTkRdID0gIi1EV0lUSF9VU0JfQkFDS0VORD1PTiwtRFdJVEhfVVNCX0JBQ0tFTkQ9T0ZGLGxpYnVzYjEsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbTkVUV09SS19CQUNLRU5EXSA9ICItRFdJVEhfTkVUV09SS19CQUNLRU5EPU9OLC1EV0lUSF9ORVRXT1JLX0JBQ0tFTkQ9T0ZGLGxpYnhtbDIiCiAKIFBBQ0tBR0VTID0rICIke1BOfS1paW9kICR7UE59LXRlc3RzICR7UE59LXB5dGhvbiIKIAogUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gIiR7UE59IHB5dGhvbi1jdHlwZXMgcHl0aG9uLXN0cmluZ29sZCIKIAotRklMRVNfJHtQTn0taWlvZCA9ICIke3NiaW5kaXJ9L2lpb2QiCitGSUxFU18ke1BOfS1paW9kID0gIiBcCisgICAgJHtzYmluZGlyfS9paW9kIFwKKyAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2lpb2Quc2VydmljZSBcCisiCiBGSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0iCiBGSUxFU18ke1BOfS1weXRob24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0taWlvZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1paW9kID0gImlpb2Quc2VydmljZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkXzAuOS41NS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkXzAuOS41NS5iYgppbmRleCBlZTM5OWE3Li4wOTMwYTI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZF8wLjkuNTUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjU1LmJiCkBAIC0xMSw2ICsxMSw4IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZyBnZXR0ZXh0CiAKK0NGTEFHUyArPSAiLXB0aHJlYWQgLURfUkVFTlRSQU5UIgorCiBFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zdGF0aWMgLS13aXRoLWdudXRscz0ke1NUQUdJTkdfTElCRElSfS8uLi8iCiAKIFBBQ0tBR0VDT05GSUcgPz0gImN1cmwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm9sL2xpYm9sXzAuMy4xOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlib2wvbGlib2xfMC4zLjE4LmJiCmluZGV4IDc0ZTFlZjIuLmQ3YWRiMmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlib2wvbGlib2xfMC4zLjE4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlib2wvbGlib2xfMC4zLjE4LmJiCkBAIC00LDcgKzQsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5M2MwNTUwYmQzMTczZjQ1MDRiMmNiZDg5OTFlNTBiIgogCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuYmFsYWJpdC5jb20vZG93bmxvYWRzL2ZpbGVzL2xpYm9sLzAuMy8ke0JQfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwOi8vd3d3LmJhbGFiaXQuY29tL2Rvd25sb2Fkcy9saWJvbC8wLjMvJHtCUH0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKIFNSQ19VUklbbWQ1c3VtXSA9ICJjYmFkZjRiN2VhMjc2ZGZhODVhY2MzOGExY2M1ZmYxNyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZGUzYmYxMzI5N2ZmODgyZTAyYTFlNmU1ZjZiZjc2MGE1NDRhZmY5MmE5ZDhhMWNmNDMyOGEzMjAwNWNlZmU3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2ZpbGVzL2F1dG9tYWtlX2ZvcmVpZ24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvZmlsZXMvYXV0b21ha2VfZm9yZWlnbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ1YmQ2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvZmlsZXMvYXV0b21ha2VfZm9yZWlnbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBTREwyX3R0Zi0yLjAuMTQvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBTREwyX3R0Zi0yLjAuMTQub3JpZy9NYWtlZmlsZS5hbQotKysrIFNETDJfdHRmLTIuMC4xNC9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw4IEBACi0gIyBNYWtlZmlsZS5hbSBmb3IgdGhlIFNETCB0cnVldHlwZSBmb250IGxvYWRpbmcgbGlicmFyeSBhbmQgdmlld2VyCi0gbGliX0xUTElCUkFSSUVTID0gbGliU0RMMl90dGYubGEKLSAKLStBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotKwotIGxpYlNETDJfdHRmaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvU0RMMgotIGxpYlNETDJfdHRmaW5jbHVkZV9IRUFERVJTID0JXAotIAlTRExfdHRmLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9maWxlcy91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2ZpbGVzL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMTFmNjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2ZpbGVzL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1mcmVldHlwZS1jb25maWcgd2FzIHJlbW92ZWQgZnJvbSBvZS1jb3JlIGluCi0KLWNvbW1pdCA1ODcwYmQyNzJiMGIwNzdkMDgyNmZiOTAwYjI1MTg4NGMxYzA1MDYxCi1BdXRob3I6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotRGF0ZTogICBUaHUgTWF5IDIyIDEwOjU5OjMzIDIwMTQgKzAxMDAKLQotICAgIGJpbmNvbmZpZy1kaXNhYmxlZDogQWRkIGNsYXNzIGFuZCB1c2UKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggNDA4ZThkNi4uNWY5ZTczMCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtODYsMzkgKzg2LDExIEBAIGNhc2UgIiRob3N0IiBpbgotIGVzYWMKLSBBTV9DT05ESVRJT05BTChVU0VfVkVSU0lPTl9SQywgdGVzdCB4JHVzZV92ZXJzaW9uX3JjID0geHRydWUpCi0gCi0tZG5sIENoZWNrIGZvciB0aGUgRnJlZVR5cGUgMiBsaWJyYXJ5Ci0tZG5sCi0tZG5sIEdldCB0aGUgY2ZsYWdzIGFuZCBsaWJyYXJpZXMgZnJvbSB0aGUgZnJlZXR5cGUtY29uZmlnIHNjcmlwdAotLWRubAotLUFDX0FSR19XSVRIKGZyZWV0eXBlLXByZWZpeCxbICAtLXdpdGgtZnJlZXR5cGUtcHJlZml4PVBGWCAgIFByZWZpeCB3aGVyZSBGUkVFVFlQRSBpcyAKLS1pbnN0YWxsZWQgKG9wdGlvbmFsKV0sCi0tICAgICAgICAgICAgZnJlZXR5cGVfcHJlZml4PSIkd2l0aHZhbCIsIGZyZWV0eXBlX3ByZWZpeD0iIikKLS1BQ19BUkdfV0lUSChmcmVldHlwZS1leGVjLXByZWZpeCxbICAtLXdpdGgtZnJlZXR5cGUtZXhlYy1wcmVmaXg9UEZYIEV4ZWMgcHJlZml4IAotLXdoZXJlIEZSRUVUWVBFIGlzIGluc3RhbGxlZCAob3B0aW9uYWwpXSwKLS0gICAgICAgICAgICBmcmVldHlwZV9leGVjX3ByZWZpeD0iJHdpdGh2YWwiLCBmcmVldHlwZV9leGVjX3ByZWZpeD0iIikKLS0KLS1pZiB0ZXN0IHgkZnJlZXR5cGVfZXhlY19wcmVmaXggIT0geCA7IHRoZW4KLS0gICAgIGZyZWV0eXBlX2FyZ3M9IiRmcmVldHlwZV9hcmdzIC0tZXhlYy1wcmVmaXg9JGZyZWV0eXBlX2V4ZWNfcHJlZml4IgotLSAgICAgaWYgdGVzdCB4JHtGUkVFVFlQRV9DT05GSUcrc2V0fSAhPSB4c2V0IDsgdGhlbgotLSAgICAgICAgRlJFRVRZUEVfQ09ORklHPSRmcmVldHlwZV9leGVjX3ByZWZpeC9iaW4vZnJlZXR5cGUtY29uZmlnCi0tICAgICBmaQotLWZpCi0taWYgdGVzdCB4JGZyZWV0eXBlX3ByZWZpeCAhPSB4IDsgdGhlbgotLSAgICAgZnJlZXR5cGVfYXJncz0iJGZyZWV0eXBlX2FyZ3MgLS1wcmVmaXg9JGZyZWV0eXBlX3ByZWZpeCIKLS0gICAgIGlmIHRlc3QgeCR7RlJFRVRZUEVfQ09ORklHK3NldH0gIT0geHNldCA7IHRoZW4KLS0gICAgICAgIEZSRUVUWVBFX0NPTkZJRz0kZnJlZXR5cGVfcHJlZml4L2Jpbi9mcmVldHlwZS1jb25maWcKLS0gICAgIGZpCi0tZmkKLS1BQ19QQVRIX1BST0coRlJFRVRZUEVfQ09ORklHLCBmcmVldHlwZS1jb25maWcsIG5vKQotLW5vX2ZyZWV0eXBlPSIiCi0taWYgdGVzdCAiJEZSRUVUWVBFX0NPTkZJRyIgPSAibm8iIDsgdGhlbgotLSAgICBBQ19NU0dfRVJST1IoWwotLSoqKiBVbmFibGUgdG8gZmluZCBGcmVlVHlwZTIgbGlicmFyeSAoaHR0cDovL3d3dy5mcmVldHlwZS5vcmcvKQotLV0pCi0tZWxzZQotLSAgICBDRkxBR1M9IiRDRkxBR1MgYCRGUkVFVFlQRV9DT05GSUcgJGZyZWV0eXBlY29uZl9hcmdzIC0tY2ZsYWdzYCIKLS0gICAgTElCUz0iJExJQlMgYCRGUkVFVFlQRV9DT05GSUcgJGZyZWV0eXBlY29uZl9hcmdzIC0tbGlic2AiCi0tZmkKLStQS0dfQ0hFQ0tfTU9EVUxFUyhGUkVFVFlQRTIsIGZyZWV0eXBlMiwgCi0rICAgIENGTEFHUz0iJENGTEFHUyAkRlJFRVRZUEUyX0NGTEFHUyIKLSsgICAgTElCUz0iJExJQlMgJEZSRUVUWVBFMl9MSUJTIiwKLSsgICAgQUNfTVNHX0VSUk9SKFsqKiogVW5hYmxlIHRvIGZpbmQgRnJlZVR5cGUyIGxpYnJhcnkgKGh0dHA6Ly93d3cuZnJlZXR5cGUub3JnLyldKQotKykKLSAKLSBkbmwgQ2hlY2sgZm9yIFNETAotIFNETF9WRVJTSU9OPTIuMC4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvbGlic2RsLXR0Zi91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2xpYnNkbC10dGYvdXNlLnBrZy1jb25maWcuZm9yLmZyZWV0eXBlMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTE2YzM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2xpYnNkbC10dGYvdXNlLnBrZy1jb25maWcuZm9yLmZyZWV0eXBlMi5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIDhjZjMxODE5N2VlYTkxYmVjNjA1NzMwOGJlZmJiMjk0MjZkNjkwMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFRodSwgMjIgTWF5IDIwMTQgMTA6NTk6MzMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZnJlZXR5cGUtY29uZmlnIHdhcyByZW1vdmVkIGZyb20gb2UtY29yZSBpbgorCitjb21taXQgNTg3MGJkMjcyYjBiMDc3ZDA4MjZmYjkwMGIyNTE4ODRjMWMwNTA2MQorCisgICAgYmluY29uZmlnLWRpc2FibGVkOiBBZGQgY2xhc3MgYW5kIHVzZQorCistLS0KKyBjb25maWd1cmUuaW4gfCAzOCArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCA4NjUwNzVlLi5kN2E1YTgxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC05MCwzOSArOTAsMTEgQEAgY2FzZSAiJGhvc3QiIGluCisgZXNhYworIEFNX0NPTkRJVElPTkFMKFVTRV9WRVJTSU9OX1JDLCB0ZXN0IHgkdXNlX3ZlcnNpb25fcmMgPSB4dHJ1ZSkKKyAKKy1kbmwgQ2hlY2sgZm9yIHRoZSBGcmVlVHlwZSAyIGxpYnJhcnkKKy1kbmwKKy1kbmwgR2V0IHRoZSBjZmxhZ3MgYW5kIGxpYnJhcmllcyBmcm9tIHRoZSBmcmVldHlwZS1jb25maWcgc2NyaXB0CistZG5sCistQUNfQVJHX1dJVEgoZnJlZXR5cGUtcHJlZml4LFsgIC0td2l0aC1mcmVldHlwZS1wcmVmaXg9UEZYICAgUHJlZml4IHdoZXJlIEZSRUVUWVBFIGlzIAorLWluc3RhbGxlZCAob3B0aW9uYWwpXSwKKy0gICAgICAgICAgICBmcmVldHlwZV9wcmVmaXg9IiR3aXRodmFsIiwgZnJlZXR5cGVfcHJlZml4PSIiKQorLUFDX0FSR19XSVRIKGZyZWV0eXBlLWV4ZWMtcHJlZml4LFsgIC0td2l0aC1mcmVldHlwZS1leGVjLXByZWZpeD1QRlggRXhlYyBwcmVmaXggCistd2hlcmUgRlJFRVRZUEUgaXMgaW5zdGFsbGVkIChvcHRpb25hbCldLAorLSAgICAgICAgICAgIGZyZWV0eXBlX2V4ZWNfcHJlZml4PSIkd2l0aHZhbCIsIGZyZWV0eXBlX2V4ZWNfcHJlZml4PSIiKQorLQorLWlmIHRlc3QgeCRmcmVldHlwZV9leGVjX3ByZWZpeCAhPSB4IDsgdGhlbgorLSAgICAgZnJlZXR5cGVfYXJncz0iJGZyZWV0eXBlX2FyZ3MgLS1leGVjLXByZWZpeD0kZnJlZXR5cGVfZXhlY19wcmVmaXgiCistICAgICBpZiB0ZXN0IHgke0ZSRUVUWVBFX0NPTkZJRytzZXR9ICE9IHhzZXQgOyB0aGVuCistICAgICAgICBGUkVFVFlQRV9DT05GSUc9JGZyZWV0eXBlX2V4ZWNfcHJlZml4L2Jpbi9mcmVldHlwZS1jb25maWcKKy0gICAgIGZpCistZmkKKy1pZiB0ZXN0IHgkZnJlZXR5cGVfcHJlZml4ICE9IHggOyB0aGVuCistICAgICBmcmVldHlwZV9hcmdzPSIkZnJlZXR5cGVfYXJncyAtLXByZWZpeD0kZnJlZXR5cGVfcHJlZml4IgorLSAgICAgaWYgdGVzdCB4JHtGUkVFVFlQRV9DT05GSUcrc2V0fSAhPSB4c2V0IDsgdGhlbgorLSAgICAgICAgRlJFRVRZUEVfQ09ORklHPSRmcmVldHlwZV9wcmVmaXgvYmluL2ZyZWV0eXBlLWNvbmZpZworLSAgICAgZmkKKy1maQorLUFDX1BBVEhfUFJPRyhGUkVFVFlQRV9DT05GSUcsIGZyZWV0eXBlLWNvbmZpZywgbm8pCistbm9fZnJlZXR5cGU9IiIKKy1pZiB0ZXN0ICIkRlJFRVRZUEVfQ09ORklHIiA9ICJubyIgOyB0aGVuCistICAgIEFDX01TR19FUlJPUihbCistKioqIFVuYWJsZSB0byBmaW5kIEZyZWVUeXBlMiBsaWJyYXJ5IChodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8pCistXSkKKy1lbHNlCistICAgIENGTEFHUz0iJENGTEFHUyBgJEZSRUVUWVBFX0NPTkZJRyAkZnJlZXR5cGVjb25mX2FyZ3MgLS1jZmxhZ3NgIgorLSAgICBMSUJTPSIkTElCUyBgJEZSRUVUWVBFX0NPTkZJRyAkZnJlZXR5cGVjb25mX2FyZ3MgLS1saWJzYCIKKy1maQorK1BLR19DSEVDS19NT0RVTEVTKEZSRUVUWVBFMiwgZnJlZXR5cGUyLCAKKysgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRGUkVFVFlQRTJfQ0ZMQUdTIgorKyAgICBMSUJTPSIkTElCUyAkRlJFRVRZUEUyX0xJQlMiLAorKyAgICBBQ19NU0dfRVJST1IoWyoqKiBVbmFibGUgdG8gZmluZCBGcmVlVHlwZTIgbGlicmFyeSAoaHR0cDovL3d3dy5mcmVldHlwZS5vcmcvKV0pCisrKQorIAorIGRubCBDaGVjayBmb3IgU0RMCisgU0RMX1ZFUlNJT049MS4yLjQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwyLXR0Zi9hdXRvbWFrZV9mb3JlaWduLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2xpYnNkbDItdHRmL2F1dG9tYWtlX2ZvcmVpZ24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcxZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwyLXR0Zi9hdXRvbWFrZV9mb3JlaWduLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK0Zyb20gZjljNGFkM2ExNzFkNjc2ZTM4MThiOGY2ODk3ZjMyNWNjZjBiMjIwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDkgTWF5IDIwMTcgMDA6NTc6MTAgLTA3MDAKKworLS0tCisgTWFrZWZpbGUuYW0gfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggODE2NmQ5MS4uOGUwNWU0OSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTIsNiArMiw4IEBACisgCisgbGliX0xUTElCUkFSSUVTID0gbGliU0RMMl90dGYubGEKKyAKKytBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgorKworIGxpYlNETDJfdHRmaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvU0RMMgorIGxpYlNETDJfdHRmaW5jbHVkZV9IRUFERVJTID0JXAorIAlTRExfdHRmLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwyLXR0Zi91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2xpYnNkbDItdHRmL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRmYmVjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwyLXR0Zi91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gZTZkMmMwZTEzMDgxMWMxNWI1ZjVjYzEwMjIxZmFlMTgyY2I4NjA5ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorRGF0ZTogVGh1LCAyMiBNYXkgMjAxNCAxMDo1OTozMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBmcmVldHlwZS1jb25maWcgd2FzIHJlbW92ZWQgZnJvbSBvZS1jb3JlIGluCisKK2NvbW1pdCA1ODcwYmQyNzJiMGIwNzdkMDgyNmZiOTAwYjI1MTg4NGMxYzA1MDYxCisKKyAgICBiaW5jb25maWctZGlzYWJsZWQ6IEFkZCBjbGFzcyBhbmQgdXNlCisKKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDM4ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDliMzZlMTUuLmYzMDBjYWUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTg2LDM5ICs4NiwxMSBAQCBjYXNlICIkaG9zdCIgaW4KKyBlc2FjCisgQU1fQ09ORElUSU9OQUwoVVNFX1ZFUlNJT05fUkMsIHRlc3QgeCR1c2VfdmVyc2lvbl9yYyA9IHh0cnVlKQorIAorLWRubCBDaGVjayBmb3IgdGhlIEZyZWVUeXBlIDIgbGlicmFyeQorLWRubAorLWRubCBHZXQgdGhlIGNmbGFncyBhbmQgbGlicmFyaWVzIGZyb20gdGhlIGZyZWV0eXBlLWNvbmZpZyBzY3JpcHQKKy1kbmwKKy1BQ19BUkdfV0lUSChmcmVldHlwZS1wcmVmaXgsWyAgLS13aXRoLWZyZWV0eXBlLXByZWZpeD1QRlggICBQcmVmaXggd2hlcmUgRlJFRVRZUEUgaXMgCistaW5zdGFsbGVkIChvcHRpb25hbCldLAorLSAgICAgICAgICAgIGZyZWV0eXBlX3ByZWZpeD0iJHdpdGh2YWwiLCBmcmVldHlwZV9wcmVmaXg9IiIpCistQUNfQVJHX1dJVEgoZnJlZXR5cGUtZXhlYy1wcmVmaXgsWyAgLS13aXRoLWZyZWV0eXBlLWV4ZWMtcHJlZml4PVBGWCBFeGVjIHByZWZpeCAKKy13aGVyZSBGUkVFVFlQRSBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0sCistICAgICAgICAgICAgZnJlZXR5cGVfZXhlY19wcmVmaXg9IiR3aXRodmFsIiwgZnJlZXR5cGVfZXhlY19wcmVmaXg9IiIpCistCistaWYgdGVzdCB4JGZyZWV0eXBlX2V4ZWNfcHJlZml4ICE9IHggOyB0aGVuCistICAgICBmcmVldHlwZV9hcmdzPSIkZnJlZXR5cGVfYXJncyAtLWV4ZWMtcHJlZml4PSRmcmVldHlwZV9leGVjX3ByZWZpeCIKKy0gICAgIGlmIHRlc3QgeCR7RlJFRVRZUEVfQ09ORklHK3NldH0gIT0geHNldCA7IHRoZW4KKy0gICAgICAgIEZSRUVUWVBFX0NPTkZJRz0kZnJlZXR5cGVfZXhlY19wcmVmaXgvYmluL2ZyZWV0eXBlLWNvbmZpZworLSAgICAgZmkKKy1maQorLWlmIHRlc3QgeCRmcmVldHlwZV9wcmVmaXggIT0geCA7IHRoZW4KKy0gICAgIGZyZWV0eXBlX2FyZ3M9IiRmcmVldHlwZV9hcmdzIC0tcHJlZml4PSRmcmVldHlwZV9wcmVmaXgiCistICAgICBpZiB0ZXN0IHgke0ZSRUVUWVBFX0NPTkZJRytzZXR9ICE9IHhzZXQgOyB0aGVuCistICAgICAgICBGUkVFVFlQRV9DT05GSUc9JGZyZWV0eXBlX3ByZWZpeC9iaW4vZnJlZXR5cGUtY29uZmlnCistICAgICBmaQorLWZpCistQUNfUEFUSF9QUk9HKEZSRUVUWVBFX0NPTkZJRywgZnJlZXR5cGUtY29uZmlnLCBubykKKy1ub19mcmVldHlwZT0iIgorLWlmIHRlc3QgIiRGUkVFVFlQRV9DT05GSUciID0gIm5vIiA7IHRoZW4KKy0gICAgQUNfTVNHX0VSUk9SKFsKKy0qKiogVW5hYmxlIHRvIGZpbmQgRnJlZVR5cGUyIGxpYnJhcnkgKGh0dHA6Ly93d3cuZnJlZXR5cGUub3JnLykKKy1dKQorLWVsc2UKKy0gICAgQ0ZMQUdTPSIkQ0ZMQUdTIGAkRlJFRVRZUEVfQ09ORklHICRmcmVldHlwZWNvbmZfYXJncyAtLWNmbGFnc2AiCistICAgIExJQlM9IiRMSUJTIGAkRlJFRVRZUEVfQ09ORklHICRmcmVldHlwZWNvbmZfYXJncyAtLWxpYnNgIgorLWZpCisrUEtHX0NIRUNLX01PRFVMRVMoRlJFRVRZUEUyLCBmcmVldHlwZTIsIAorKyAgICBDRkxBR1M9IiRDRkxBR1MgJEZSRUVUWVBFMl9DRkxBR1MiCisrICAgIExJQlM9IiRMSUJTICRGUkVFVFlQRTJfTElCUyIsCisrICAgIEFDX01TR19FUlJPUihbKioqIFVuYWJsZSB0byBmaW5kIEZyZWVUeXBlMiBsaWJyYXJ5IChodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8pXSkKKyspCisgCisgZG5sIENoZWNrIGZvciBTREwKKyBTRExfVkVSU0lPTj0yLjAuMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vMDAwMS10ZWFtX2Jhc2ljX3Rlc3QucHktZGlzYWJsZS1SZWRIYXQtc3BlY2lmaWMtdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtLzAwMDEtdGVhbV9iYXNpY190ZXN0LnB5LWRpc2FibGUtUmVkSGF0LXNwZWNpZmljLXRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY4YTU1ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtLzAwMDEtdGVhbV9iYXNpY190ZXN0LnB5LWRpc2FibGUtUmVkSGF0LXNwZWNpZmljLXRlc3QucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAwMGRlYmU2YmQ0Y2Y1YTMxMzNhOGZiYWFiNzVmNzQ0N2EzOWZhNjU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDEyIEFwciAyMDE4IDAxOjU0OjE1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlYW1fYmFzaWNfdGVzdC5weTogZGlzYWJsZSBSZWRIYXQgc3BlY2lmaWMgdGVzdAorCitUaGUgdGVzdCBfcnVuX3RlYW1kX2luaXRzY3JpcHRzKCkgaXMgZm9yIFJlZEhhdCBpZmNmZyBzY3JpcHRzIHdoaWNoIGFyZQoraW5jb21wYXRpYmxlIHdpdGggT0U6CisgIC9ldGMvc3lzY29uZmlnL25ldHdvcmstc2NyaXB0cy9pZmNmZy0qCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc2NyaXB0cy90ZWFtX2Jhc2ljX3Rlc3QucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zY3JpcHRzL3RlYW1fYmFzaWNfdGVzdC5weSBiL3NjcmlwdHMvdGVhbV9iYXNpY190ZXN0LnB5CitpbmRleCBiMDViZTllLi5mYWFiZDE4IDEwMDc1NQorLS0tIGEvc2NyaXB0cy90ZWFtX2Jhc2ljX3Rlc3QucHkKKysrKyBiL3NjcmlwdHMvdGVhbV9iYXNpY190ZXN0LnB5CitAQCAtMTcxLDcgKzE3MSw3IEBAIFRFQU1fUE9SVF9DT05GSUc9J3sicHJpbyI6IDEwfScKKyAgICAgICAgIHRyeToKKyAgICAgICAgICAgICBmb3IgbW9kZV9uYW1lIGluIHNlbGYuX3RlYW1fbW9kZXM6CisgICAgICAgICAgICAgICAgIHNlbGYuX3J1bl9vbmVfbW9kZShtb2RlX25hbWUpCistICAgICAgICAgICAgc2VsZi5fcnVuX3RlYW1kX2luaXRzY3JpcHRzKCkKKysgICAgICAgICAgICAjc2VsZi5fcnVuX3RlYW1kX2luaXRzY3JpcHRzKCkKKyAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgY21kX2V4ZWMoIm1vZHByb2JlIC1yIHRlYW1fbW9kZV9sb2FkYmFsYW5jZSB0ZWFtX21vZGVfcm91bmRyb2JpbiB0ZWFtX21vZGVfYWN0aXZlYmFja3VwIHRlYW1fbW9kZV9icm9hZGNhc3QgdGVhbSIpOworIAorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiYTVhY2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0aG9uICQoZGlybmFtZSAkMCkvdGVhbV9iYXNpY190ZXN0LnB5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbV8xLjI3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW1fMS4yNy5iYgppbmRleCAzMjIyNzAwLi40NDI1OTJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbV8xLjI3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtXzEuMjcuYmIKQEAgLTEwLDYgKzEwLDggQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qcGlya28vbGlidGVhbSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF9zZXQtZGVmaW5pdGlvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXRlYW1kLVJlLWFkanVzdC1pbmNsdWRlLWhlYWRlci1vcmRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlYW1fYmFzaWNfdGVzdC5weS1kaXNhYmxlLVJlZEhhdC1zcGVjaWZpYy10ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgICIKIFNSQ1JFViA9ICI5MWE5MjhhNTZhNTAxZGFhYzVjZThiM2MxNmJkOTk0MzY2MWYxZDE2IgogCkBAIC0xOCw3ICsyMCw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0CiAKIEZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJ0ZWFtJHtTT0xJQlN9IFwKICIKQEAgLTMzLDQgKzM1LDggQEAKICIKIAogUkRFUEVORFNfJHtQTn0tdXRpbHMgPSAiYmFzaCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gInB5dGhvbiIKIAorZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsICR7U30vc2NyaXB0cy90ZWFtX2Jhc2ljX3Rlc3QucHkgJHtEfSR7UFRFU1RfUEFUSH0vCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVRlbGwtc2NvbnMtdG8tdXNlLWJ1aWxkLXNldHRpbmdzLWZyb20tZW52aXJvbm1lbnQtdmEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVRlbGwtc2NvbnMtdG8tdXNlLWJ1aWxkLXNldHRpbmdzLWZyb20tZW52aXJvbm1lbnQtdmEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZDQ5ZDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotRnJvbSA1MzM2OGQzZjRhZGMwOWRkODQyMzRhOWFmMzE3NzFiY2Q4Y2EyNzU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3ZlbiBFYmVuZmVsZCA8c3Zlbi5lYmVuZmVsZEBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE1IEphbiAyMDE2IDIyOjQxOjI4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRlbGwgc2NvbnMgdG8gdXNlIGJ1aWxkIHNldHRpbmdzIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzCi0KLVNpZ25lZC1vZmYtYnk6IFN2ZW4gRWJlbmZlbGQgPHN2ZW4uZWJlbmZlbGRAZ21haWwuY29tPgotLS0tCi0gU0NvbnN0cnVjdCAgICAgICAgICAgICAgICB8IDggKysrKysrLS0KLSBzcmMvbW9uZ28vdXRpbC9TQ29uc2NyaXB0IHwgMiArKwotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvU0NvbnN0cnVjdCBiL1NDb25zdHJ1Y3QKLWluZGV4IDUwODJhNGIuLjMzNzBmNzAgMTAwNjQ0Ci0tLS0gYS9TQ29uc3RydWN0Ci0rKysgYi9TQ29uc3RydWN0Ci1AQCAtNTA3LDYgKzUwNyw3IEBAIGRlZiB2YXJpYWJsZV9hcmNoX2NvbnZlcnRlcih2YWwpOgotICAgICAgICAgJ2FtZDY0JzogICd4ODZfNjQnLAotICAgICAgICAgJ2VtdDY0JzogICAneDg2XzY0JywKLSAgICAgICAgICd4ODYnOiAgICAnaTM4NicsCi0rICAgICAgICAnYWFyY2g2NCc6ICdhcm02NCcsCi0gICAgIH0KLSAgICAgdmFsID0gdmFsLmxvd2VyKCkKLSAKLUBAIC01NjgsNyArNTY5LDggQEAgZW52X3ZhcnMuQWRkKCdBUkZMQUdTJywKLSAgICAgY29udmVydGVyPXZhcmlhYmxlX3NobGV4X2NvbnZlcnRlcikKLSAKLSBlbnZfdmFycy5BZGQoJ0NDJywKLS0gICAgaGVscD0nU2VsZWN0IHRoZSBDIGNvbXBpbGVyIHRvIHVzZScpCi0rICAgIGhlbHA9J1NlbGVjdCB0aGUgQyBjb21waWxlciB0byB1c2UnLAotKyAgICBkZWZhdWx0PW9zLmdldGVudignQ0MnKSkKLSAKLSBlbnZfdmFycy5BZGQoJ0NDRkxBR1MnLAotICAgICBoZWxwPSdTZXRzIGZsYWdzIGZvciB0aGUgQyBhbmQgQysrIGNvbXBpbGVyJywKLUBAIC01ODgsNyArNTkwLDggQEAgZW52X3ZhcnMuQWRkKCdDUFBQQVRIJywKLSAgICAgY29udmVydGVyPXZhcmlhYmxlX3NobGV4X2NvbnZlcnRlcikKLSAKLSBlbnZfdmFycy5BZGQoJ0NYWCcsCi0tICAgIGhlbHA9J1NlbGVjdCB0aGUgQysrIGNvbXBpbGVyIHRvIHVzZScpCi0rICAgIGhlbHA9J1NlbGVjdCB0aGUgQysrIGNvbXBpbGVyIHRvIHVzZScsCi0rICAgIGRlZmF1bHQ9b3MuZ2V0ZW52KCdDWFgnKSkKLSAKLSBlbnZfdmFycy5BZGQoJ0NYWEZMQUdTJywKLSAgICAgaGVscD0nU2V0cyBmbGFncyBmb3IgdGhlIEMrKyBjb21waWxlcicsCi1AQCAtODE4LDYgKzgyMSw3IEBAIGVudkRpY3QgPSBkaWN0KEJVSUxEX1JPT1Q9YnVpbGREaXIsCi0gICAgICAgICAgICAgICAgKQotIAotIGVudiA9IEVudmlyb25tZW50KHZhcmlhYmxlcz1lbnZfdmFycywgKiplbnZEaWN0KQotK2Vudi5QcmVwZW5kRU5WUGF0aCgnUEFUSCcsIG9zLmdldGVudignUEFUSCcpKQotIGRlbCBlbnZEaWN0Ci0gCi0gZW52LkFkZE1ldGhvZChlbnZfb3NfaXNfd3JhcHBlciwgJ1RhcmdldE9TSXMnKQotZGlmZiAtLWdpdCBhL3NyYy9tb25nby91dGlsL1NDb25zY3JpcHQgYi9zcmMvbW9uZ28vdXRpbC9TQ29uc2NyaXB0Ci1pbmRleCA2YWRkNjAyLi44ZDA1YTYyIDEwMDY0NAotLS0tIGEvc3JjL21vbmdvL3V0aWwvU0NvbnNjcmlwdAotKysrIGIvc3JjL21vbmdvL3V0aWwvU0NvbnNjcmlwdAotQEAgLTI1MSw2ICsyNTEsOCBAQCBpZiBnZXRfb3B0aW9uKCdhbGxvY2F0b3InKSA9PSAndGNtYWxsb2MnOgotICAgICAgICAgICAgICAgICAnTU9OR09fSEFWRV9HUEVSRlRPT0xTX0dFVF9USFJFQURfQ0FDSEVfU0laRScKLSAgICAgICAgICAgICBdCi0gICAgICAgICApCi0rICAgIGlmIG5vdCB1c2Vfc3lzdGVtX3ZlcnNpb25fb2ZfbGlicmFyeSgndmFsZ3JpbmQnKToKLSsgICAgICAgIHRjbXNwRW52LkluamVjdFRoaXJkUGFydHlJbmNsdWRlUGF0aHMoJ3ZhbGdyaW5kJykKLSAKLSAgICAgdGNtc3BFbnYuTGlicmFyeSgKLSAgICAgICAgIHRhcmdldD0ndGNtYWxsb2Nfc2V0X3BhcmFtZXRlcicsCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDNiZWI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1Gcm9tIGE0OTUxNDg5ZDY0OWMyYjYwOWNiYjgwZjZjZmI0OWZkY2FkOGJkNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyIFNlcCAyMDE3IDEwOjAzOjM3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBsb25nIGxvbmcgaW5zdGVhZCBvZiBpbnQ2NF90Ci0KLUZpeGVzCi1lcnJvcjogY2FsbCB0byBtZW1iZXIgZnVuY3Rpb24gJ2FwcGVuZE51bWJlcicgaXMgYW1iaWd1b3VzCi1zaW5jZSB0aGlzIGZ1bmN0aW9uIGV4cGVjdHMgbG9uZyBsb25nIGFzIHBhcmFtZXRlciBhbmQgbm90IGludDY0X3QKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0gc3JjL21vbmdvL3V0aWwvcHJvY3BhcnNlci5jcHAgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9tb25nby91dGlsL3Byb2NwYXJzZXIuY3BwIGIvc3JjL21vbmdvL3V0aWwvcHJvY3BhcnNlci5jcHAKLWluZGV4IDM2ZjJhZTAyNTQuLjJjMTY0YmNiZjMgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9uZ28vdXRpbC9wcm9jcGFyc2VyLmNwcAotKysrIGIvc3JjL21vbmdvL3V0aWwvcHJvY3BhcnNlci5jcHAKLUBAIC0yNjAsNyArMjYwLDcgQEAgU3RhdHVzIHBhcnNlUHJvY1N0YXQoY29uc3Qgc3RkOjp2ZWN0b3I8U3RyaW5nRGF0YT4mIGtleXMsCi0gCi0gICAgICAgICAgICAgICAgICAgICBTdHJpbmdEYXRhIHN0cmluZ1ZhbHVlKCgqcGFydEl0KS5iZWdpbigpLCAoKnBhcnRJdCkuZW5kKCkgLSAoKnBhcnRJdCkuYmVnaW4oKSk7Ci0gCi0tICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWx1ZTsKLSsgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyAgdmFsdWU7Ci0gCi0gICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyRnJvbVN0cmluZyhzdHJpbmdWYWx1ZSwgJnZhbHVlKS5pc09LKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7Ci1AQCAtMjcyLDcgKzI3Miw3IEBAIFN0YXR1cyBwYXJzZVByb2NTdGF0KGNvbnN0IHN0ZDo6dmVjdG9yPFN0cmluZ0RhdGE+JiBrZXlzLAotICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgIFN0cmluZ0RhdGEgc3RyaW5nVmFsdWUoKCpwYXJ0SXQpLmJlZ2luKCksICgqcGFydEl0KS5lbmQoKSAtICgqcGFydEl0KS5iZWdpbigpKTsKLSAKLS0gICAgICAgICAgICAgICAgdWludDY0X3QgdmFsdWU7Ci0rICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB2YWx1ZTsKLSAKLSAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcoc3RyaW5nVmFsdWUsICZ2YWx1ZSkuaXNPSygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7Ci1AQCAtMzY1LDcgKzM2NSw3IEBAIFN0YXR1cyBwYXJzZVByb2NNZW1JbmZvKGNvbnN0IHN0ZDo6dmVjdG9yPFN0cmluZ0RhdGE+JiBrZXlzLAotIAotICAgICAgICAgICAgIFN0cmluZ0RhdGEgc3RyaW5nVmFsdWUoKCpwYXJ0SXQpLmJlZ2luKCksICgqcGFydEl0KS5lbmQoKSk7Ci0gCi0tICAgICAgICAgICAgdWludDY0X3QgdmFsdWU7Ci0rICAgICAgICAgICAgbG9uZyBsb25nIHZhbHVlOwotIAotICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHN0cmluZ1ZhbHVlLCAmdmFsdWUpLmlzT0soKSkgewotICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7Ci1AQCAtNDI2LDcgKzQyNiw3IEBAIFN0YXR1cyBwYXJzZVByb2NEaXNrU3RhdHMoY29uc3Qgc3RkOjp2ZWN0b3I8U3RyaW5nRGF0YT4mIGRpc2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nRGF0YSBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNPTk9iakJ1aWxkZXIqIGJ1aWxkZXIpIHsKLSAgICAgYm9vbCBmb3VuZEtleXMgPSBmYWxzZTsKLS0gICAgc3RkOjp2ZWN0b3I8dWludDY0X3Q+IHN0YXRzOwotKyAgICBzdGQ6OnZlY3Rvcjxsb25nIGxvbmc+IHN0YXRzOwotICAgICBzdGF0cy5yZXNlcnZlKGtEaXNrRmllbGRDb3VudCk7Ci0gCi0gICAgIHVzaW5nIHN0cmluZ19zcGxpdF9pdGVyYXRvciA9IGJvb3N0OjpzcGxpdF9pdGVyYXRvcjxTdHJpbmdEYXRhOjpjb25zdF9pdGVyYXRvcj47Ci1AQCAtNTAxLDcgKzUwMSw3IEBAIFN0YXR1cyBwYXJzZVByb2NEaXNrU3RhdHMoY29uc3Qgc3RkOjp2ZWN0b3I8U3RyaW5nRGF0YT4mIGRpc2tzLAotIAotICAgICAgICAgICAgICAgICBTdHJpbmdEYXRhIHN0cmluZ1ZhbHVlKCgqcGFydEl0KS5iZWdpbigpLCAoKnBhcnRJdCkuZW5kKCkpOwotIAotLSAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWx1ZTsKLSsgICAgICAgICAgICAgICAgbG9uZyBsb25nIHZhbHVlOwotIAotICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyRnJvbVN0cmluZyhzdHJpbmdWYWx1ZSwgJnZhbHVlKS5pc09LKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtbW9uZ28tQWRkLXVzaW5nLXN0ZC1zdHJpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLW1vbmdvLUFkZC11c2luZy1zdGQtc3RyaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTE3ZDUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtbW9uZ28tQWRkLXVzaW5nLXN0ZC1zdHJpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi1Gcm9tIDVmZGVjOTU5MjI4NWY1OTc2MzQ1ZmJjY2IzZDA3ZmFlMTI0NWFiNTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAyIEF1ZyAyMDE3IDE1OjQxOjIyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1vbmdvOiBBZGQgdXNpbmcgc3RkOjpzdHJpbmcKLQotVGhpcyBpcyBuZWVkZWQgd2l0aCBsYXRlc3QgY2xhbmcKLUZpeGVzCi1zcmMvbW9uZ28vZGIvZGJ3ZWJzZXJ2ZXIuY3BwOjIwNjoyMzogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ3N0cmluZyc7IGRpZCB5b3UgbWVhbiAnU3RyaW5nJz8KLSAgICAgICAgc3RhdGljIHZlY3RvcjxzdHJpbmc+IGNvbW1hbmRzOwotICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fgotICAgICAgICAgICAgICAgICAgICAgIFN0cmluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL21vbmdvL2RiL2Rid2Vic2VydmVyLmNwcCAgICAgICAgICAgICB8IDEgKwotIHNyYy9tb25nby9kYi9tYXRjaGVyL2V4cHJlc3Npb25fbGVhZi5jcHAgfCAyICsrCi0gc3JjL21vbmdvL2RiL3JlcGwvbWFzdGVyX3NsYXZlLmNwcCAgICAgICB8IDEgKwotIHNyYy9tb25nby91dGlsL25ldC9taW5pd2Vic2VydmVyLmNwcCAgICAgfCAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL21vbmdvL2RiL2Rid2Vic2VydmVyLmNwcCBiL3NyYy9tb25nby9kYi9kYndlYnNlcnZlci5jcHAKLWluZGV4IGIyMDJlMDUwMGIuLjAyNTU2MTM1MjQgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9uZ28vZGIvZGJ3ZWJzZXJ2ZXIuY3BwCi0rKysgYi9zcmMvbW9uZ28vZGIvZGJ3ZWJzZXJ2ZXIuY3BwCi1AQCAtNjcsNiArNjcsNyBAQCBuYW1lc3BhY2UgbW9uZ28gewotIHVzaW5nIHN0ZDo6bWFwOwotIHVzaW5nIHN0ZDo6c3RyaW5nc3RyZWFtOwotIHVzaW5nIHN0ZDo6dmVjdG9yOwotK3VzaW5nIHN0ZDo6c3RyaW5nOwotIAotIHVzaW5nIG5hbWVzcGFjZSBodG1sOwotIAotZGlmZiAtLWdpdCBhL3NyYy9tb25nby9kYi9tYXRjaGVyL2V4cHJlc3Npb25fbGVhZi5jcHAgYi9zcmMvbW9uZ28vZGIvbWF0Y2hlci9leHByZXNzaW9uX2xlYWYuY3BwCi1pbmRleCBkNTYyYmZmMTQxLi40ZDkzMTk4NWUyIDEwMDY0NAotLS0tIGEvc3JjL21vbmdvL2RiL21hdGNoZXIvZXhwcmVzc2lvbl9sZWFmLmNwcAotKysrIGIvc3JjL21vbmdvL2RiL21hdGNoZXIvZXhwcmVzc2lvbl9sZWFmLmNwcAotQEAgLTQ0LDYgKzQ0LDggQEAKLSAjaW5jbHVkZSAibW9uZ28vc3RkeC9tZW1vcnkuaCIKLSAjaW5jbHVkZSAibW9uZ28vdXRpbC9tb25nb3V0aWxzL3N0ci5oIgotIAotK3VzaW5nIHN0ZDo6c3RyaW5nOwotKwotIG5hbWVzcGFjZSBtb25nbyB7Ci0gCi0gU3RhdHVzIExlYWZNYXRjaEV4cHJlc3Npb246OnNldFBhdGgoU3RyaW5nRGF0YSBwYXRoKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL21vbmdvL2RiL3JlcGwvbWFzdGVyX3NsYXZlLmNwcCBiL3NyYy9tb25nby9kYi9yZXBsL21hc3Rlcl9zbGF2ZS5jcHAKLWluZGV4IDA1ZmFhZDEyNTkuLmVhMjVkNzE1MWIgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9uZ28vZGIvcmVwbC9tYXN0ZXJfc2xhdmUuY3BwCi0rKysgYi9zcmMvbW9uZ28vZGIvcmVwbC9tYXN0ZXJfc2xhdmUuY3BwCi1AQCAtNzgsNiArNzgsNyBAQCB1c2luZyBzdGQ6OmVuZGw7Ci0gdXNpbmcgc3RkOjptYXg7Ci0gdXNpbmcgc3RkOjptaW47Ci0gdXNpbmcgc3RkOjpzZXQ7Ci0rdXNpbmcgc3RkOjpzdHJpbmc7Ci0gdXNpbmcgc3RkOjpzdHJpbmdzdHJlYW07Ci0gdXNpbmcgc3RkOjp1bmlxdWVfcHRyOwotIHVzaW5nIHN0ZDo6dmVjdG9yOwotZGlmZiAtLWdpdCBhL3NyYy9tb25nby91dGlsL25ldC9taW5pd2Vic2VydmVyLmNwcCBiL3NyYy9tb25nby91dGlsL25ldC9taW5pd2Vic2VydmVyLmNwcAotaW5kZXggNWY0MTY1ZDQyZi4uMjM5NzIwYzM0OSAxMDA2NDQKLS0tLSBhL3NyYy9tb25nby91dGlsL25ldC9taW5pd2Vic2VydmVyLmNwcAotKysrIGIvc3JjL21vbmdvL3V0aWwvbmV0L21pbml3ZWJzZXJ2ZXIuY3BwCi1AQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgbW9uZ28gewotIAotIHVzaW5nIHN0ZDo6c2hhcmVkX3B0cjsKLSB1c2luZyBzdGQ6OnN0cmluZ3N0cmVhbTsKLSt1c2luZyBzdGQ6OnN0cmluZzsKLSB1c2luZyBzdGQ6OnZlY3RvcjsKLSAKLSBNaW5pV2ViU2VydmVyOjpNaW5pV2ViU2VydmVyKGNvbnN0IHN0cmluZyYgbmFtZSwgY29uc3Qgc3RyaW5nJiBpcCwgaW50IHBvcnQsIFNlcnZpY2VDb250ZXh0KiBjdHgpCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ZjljMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMi1kX3N0YXRlLmNwcC1BZGQtbWlzc2luZy1kZXBlbmRlbm5jeS1vbi1sb2NhbF9zaGFyZGluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA1NzU5ODc4ZTVkMjc4ZjExYTEwNjNlOGZjY2QxZTZiN2I1NGNhYWRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMiBBdWcgMjAxNyAxNjoyNTozNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZF9zdGF0ZS5jcHA6IEFkZCBtaXNzaW5nIGRlcGVuZGVubmN5IG9uCi0gbG9jYWxfc2hhcmRpbmdfaW5mbwotCi1GaXhlcwotfCBzcmMvbW9uZ28vcy9kX3N0YXRlLmNwcDo4MTogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ21vbmdvOjplbmFibGVMb2NhbFNoYXJkaW5nSW5mbyhtb25nbzo6U2VydmljZUNvbnRleHQqLCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKG1vbmdvOjpPcGVyYXRpb25Db250ZXh0Kiwgc3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCYpPiknCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvbW9uZ28vcy9TQ29uc2NyaXB0IHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvbW9uZ28vcy9TQ29uc2NyaXB0IGIvc3JjL21vbmdvL3MvU0NvbnNjcmlwdAotaW5kZXggNzE3MjBiZTUxNy4uNTFiZDE5OTEyNyAxMDA2NDQKLS0tLSBhL3NyYy9tb25nby9zL1NDb25zY3JpcHQKLSsrKyBiL3NyYy9tb25nby9zL1NDb25zY3JpcHQKLUBAIC0zMTcsNSArMzE3LDYgQEAgZW52LkxpYnJhcnkoCi0gICAgICAgICAiJEJVSUxEX0RJUi9tb25nby9kYi9zL3NoYXJkaW5nIiwKLSAgICAgICAgICIkQlVJTERfRElSL21vbmdvL2V4ZWN1dG9yL25ldHdvcmtfaW50ZXJmYWNlX2ZhY3RvcnkiLAotICAgICAgICAgIiRCVUlMRF9ESVIvbW9uZ28vcy9jbGllbnQvc2hhcmRfbG9jYWwiLAotKyAgICAgICAgIiRCVUlMRF9ESVIvbW9uZ28vcy9sb2NhbF9zaGFyZGluZ19pbmZvIiwKLSAgICAgXSwKLSApCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZjdkMGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotU1VNTUFSWSA9ICJtb25nb2RiIgotTElDRU5TRSA9ICJBR1BMLTMuMCAmIEFwYWNoZS0yLjAgJiBabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR05VLUFHUEwtMy4wLnR4dDttZDU9NzNmMWViMjA1MTdjNTViZjk0OTNiN2RkNmU0ODA3ODggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQVBBQ0hFLTIuMC50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotCi1ERVBFTkRTID0gIm9wZW5zc2wgbGlicGNyZSBsaWJwY2FwIHpsaWIgcHl0aG9uIGJvb3N0IgotCi1pbmhlcml0IHNjb25zIGRvczJ1bml4IHNpdGVpbmZvCi0KLVBWID0gIjMuNC42K2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gImM1NWViODZlZjQ2ZWU3YWVkZTNiMWUyYTVkMTg0YTdkZjRiZmI1YjUiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbW9uZ29kYi9tb25nby5naXQ7YnJhbmNoPXYzLjQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbW9uZ28tQWRkLXVzaW5nLXN0ZC1zdHJpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1kX3N0YXRlLmNwcC1BZGQtbWlzc2luZy1kZXBlbmRlbm5jeS1vbi1sb2NhbF9zaGFyZGluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXN0cmVycm9yX3Itb25seS1vbi1nbGliYy1zeXN0ZW1zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUNvbmRpdGlvbmFsaXplLWdsaWJjLXNwZWNpZmljLXN0cmVycm9yX3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXJtNjQtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUludGVsUkRGUE1hdGhMaWIyMFUxLUNoZWNrLWZvci1fX0RFRklORURfd2NoYXJfdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWh3LWNyYzMyLW9uLWFybTY0LXMzOTB4LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0iXAotICAgICAgICAgICBmaWxlOi8vMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotIyBXaXJlZHRpZ2VyIHN1cHBvcnRzIG9ubHkgNjQtYml0IHBsYXRmb3JtcwotUEFDS0FHRUNPTkZJR194ODYtNjQgPz89ICJ0Y21hbGxvYyB3aXJlZHRpZ2VyIgotUEFDS0FHRUNPTkZJR19hYXJjaDY0ID8/PSAidGNtYWxsb2Mgd2lyZWR0aWdlciIKLVBBQ0tBR0VDT05GSUcgPz89ICJ0Y21hbGxvYyIKLSMgZ3BlcmZ0b29scyBjb21waWxhdGlvbiBmYWlscyBmb3IgYXJtIGJlbG93IHY3IGJlY2F1c2Ugb2YgbWlzc2luZyBzdXBwb3J0IG9mCi0jIGRtYiBvcGVyYXRpb24uIFNvIHdlIHVzZSBzeXN0ZW0tYWxsb2NhdG9yIGluc3RlYWQgb2YgdGNtYWxsb2MKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2FybXY2ID0gInRjbWFsbG9jIgotUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gInRjbWFsbG9jIgotCi0jc3RkOjpjdXJyZW50X2V4Y2VwdGlvbiBpcyB1bmRlZmluZWQgZm9yIGFybSA8IHY2Ci1DT01QQVRJQkxFX01BQ0hJTkVfYXJtdjQgPSAiKCEuKmFybXY0KS4qIgotQ09NUEFUSUJMRV9NQUNISU5FX2FybXY1ID0gIighLiphcm12NSkuKiIKLUNPTVBBVElCTEVfTUFDSElORV9hcm12N2EgPSAiKCEuKmFybXY3YSkuKiIKLUNPTVBBVElCTEVfTUFDSElORV9hcm12N3ZlID0gIighLiphcm12N3ZlKS4qIgotQ09NUEFUSUJMRV9NQUNISU5FX21pcHM2NCA9ICIoIS4qbWlwczY0KS4qIgotQ09NUEFUSUJMRV9NQUNISU5FX3Bvd2VycGMgPSAiKCEuKnBwYykuKiIKLQotUEFDS0FHRUNPTkZJR1t0Y21hbGxvY10gPSAiLS11c2Utc3lzdGVtLXRjbWFsbG9jLC0tYWxsb2NhdG9yPXN5c3RlbSxncGVyZnRvb2xzLCIKLVBBQ0tBR0VDT05GSUdbd2lyZWR0aWdlcl0gPSAiLS13aXJlZHRpZ2VyPW9uLC0td2lyZWR0aWdlcj1vZmYsLCIKLQotRVhUUkFfT0VTQ09OUyA9ICItLXByZWZpeD0ke0R9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIExJTktGTEFHUz0nJHtMREZMQUdTfScgXAotICAgICAgICAgICAgICAgICBDWFhGTEFHUz0nJHtDWFhGTEFHU30nIFwKLSAgICAgICAgICAgICAgICAgVEFSR0VUX0FSQ0g9JHtUQVJHRVRfQVJDSH0gXAotICAgICAgICAgICAgICAgICAtLXNzbCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS13YXJuaW5ncy1hcy1lcnJvcnMgXAotICAgICAgICAgICAgICAgICAtLXVzZS1zeXN0ZW0tcGNyZSBcCi0gICAgICAgICAgICAgICAgIC0tdXNlLXN5c3RlbS16bGliIFwKLSAgICAgICAgICAgICAgICAgLS1qcy1lbmdpbmU9bm9uZSBcCi0gICAgICAgICAgICAgICAgIC0tbm9zdHJpcCBcCi0gICAgICAgICAgICAgICAgIC0tZW5kaWFuPSR7QGJhc2VfY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnbGUnLCAnbGl0dGxlJywgJ2JpZycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAotICAgICAgICAgICAgICAgICBtb25nb2QgbW9uZ29zIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAgICAgIyB0ZXN0cyB1c2UgaGV4IGZsb2F0cywgbm90IHN1cHBvcnRlZCBpbiBwbGFpbiBDKysKLSAgICAgICAgc2VkIC1lICdzfC1zdGQ9YysrMTF8LXN0ZD1nbnUrKzExfGcnIC1pICR7U30vU0NvbnN0cnVjdAotfQotc2NvbnNfZG9fY29tcGlsZSgpIHsKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3Njb25zICR7UEFSQUxMRUxfTUFLRX0gJHtFWFRSQV9PRVNDT05TfSB8fCBcCi0gICAgICAgIGRpZSAic2NvbnMgYnVpbGQgZXhlY3V0aW9uIGZhaWxlZC4iCi19Ci0KLXNjb25zX2RvX2luc3RhbGwoKSB7Ci0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9zY29ucyBpbnN0YWxsICR7RVhUUkFfT0VTQ09OU318fCBcCi0gICAgICAgIGRpZSAic2NvbnMgaW5zdGFsbCBleGVjdXRpb24gZmFpbGVkLiIKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjNiMzEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyOTMgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHJvYnVzdCwgc2NhbGFibGUsIGFuZCByZWxpYWJsZSBTUUwgc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL21hcmlhZGIub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZG93bmxvYWRzLm1hcmlhZGIub3JnL2YvJHtCUH0vc291cmNlLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtY21ha2UtbW9kdWxlLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWJhZC1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1teXNxbGNsaWVudC1yLXZlcnNpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbXkuY25mIFwKLSAgICAgICAgICAgZmlsZTovL215c3FsZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2luc3RhbGxfZGIuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsX2RiIFwKLSAgICAgICAgICAgZmlsZTovL215c3FsLXN5c3RlbWQtc3RhcnQgXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmNtYWtlLWZpeC12YWxncmluZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtYS1idWlsZGluZy1mYWlsdXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NoYW5nZS1jYy10by1jYy12ZXJzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZGlzYWJsZS11Y29udGV4dC1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZDQxMDRhYWUwYjllNWVmYTg4Nzg5MThiZDMyOWNiNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZGJkZTk4ZDdlNGE1YTE3MjFiNmNiZWQ3ODk4YjI1NDlhODg4NjYyNDc5NTFjZjU4NjA1Nzk3NWM2Y2VhNjQxIgotCi1TID0gIiR7V09SS0RJUn0vbWFyaWFkYi0ke1BWfSIKLQotQklOQ09ORklHX0dMT0IgPSAibXlzcWxfY29uZmlnIgotCi1pbmhlcml0IGNtYWtlIGdldHRleHQgYmluY29uZmlnIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZAotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNlcnZlciAke1BOfS1zZXR1cGRiIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LXNlcnZlciA9ICJteXNxbGQiCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zZXJ2ZXIgPz0gInN0YXJ0IDQ1IDUgLiBzdG9wIDQ1IDAgNiAxIC4iCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tc2VydmVyIgotVVNFUkFERF9QQVJBTV8ke1BOfS1zZXJ2ZXIgPSAiLS1zeXN0ZW0gLS1ob21lLWRpciAvdmFyL215c3FsIC1nIG15c3FsIC0tc2hlbGwgL2Jpbi9mYWxzZSBteXNxbCIKLUdST1VQQUREX1BBUkFNXyR7UE59LXNlcnZlciA9ICItLXN5c3RlbSBteXNxbCIKLQotSU5JVFNDUklQVF9OQU1FXyR7UE59LXNldHVwZGIgPSAiaW5zdGFsbF9kYiIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNldHVwZGIgPz0gImRlZmF1bHRzIDQ0IDQ0IgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXNlcnZlciAke1BOfS1zZXR1cGRiIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNlcnZlciA9ICJteXNxbGQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0tc2VydmVyID89ICJkaXNhYmxlIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tc2V0dXBkYiA9ICJpbnN0YWxsX2RiLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LXNldHVwZGIgPz0gImVuYWJsZSIKLUFMTE9XX0VNUFRZXyR7UE59LXNldHVwZGIgPz0gIjEiCi1GSUxFU18ke1BOfS1zZXR1cGRiID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kL2luc3RhbGxfZGIiCi0KLUVYVFJBX09FTUFLRSA9ICInR0VOX0xFWF9IQVNIPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9nZW5fbGV4X2hhc2gnIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IHNldHVwZGIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLC1EV0lUSE9VVF9BVVRIX1BBTT1UUlVFLGxpYnBhbSIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi1EV0lUSF9WQUxHUklORD1UUlVFLC1EV0lUSF9WQUxHUklORD1GQUxTRSx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLURMSUJFRElUX0lOVEVSRkFDRT1UUlVFLC1ETElCRURJVF9JTlRFUkZBQ0U9RkFMU0UsbGliZWRpdCIKLVBBQ0tBR0VDT05GSUdba3JiNV0gPSAiLCAsa3JiNSIKLVBBQ0tBR0VDT05GSUdbc2V0dXBkYl0gPSAiLCAsLCR7UE59LXNldHVwZGIiCi0KLSMgTWFyaWFEQiBkb2Vzbid0IGxpbmsgcHJvcGVybHkgd2l0aCBnb2xkCi0jIGh0dHBzOi8vbWFyaWFkYi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9NREVWLTU5ODIKLVRBUkdFVF9DRkxBR1MgKz0gIi1mdXNlLWxkPWJmZCIKLQotQlVJTERfQ0ZMQUdTICs9ICItZnVzZS1sZD1iZmQiCi1CVUlMRF9DWFhGTEFHUyArPSAiLWZ1c2UtbGQ9YmZkIgotCi1FWFRSQV9PRUNNQUtFID0gIi1EV0lUSF9FTUJFRERFRF9TRVJWRVI9T04gXAotICAgICAgICAgICAgICAgICAtRFdJVEhfSkVNQUxMT0M9bm8gXAotICAgICAgICAgICAgICAgICAtRFdJVEhPVVRfVE9LVURCPVRSVUUgXAotICAgICAgICAgICAgICAgICAtRENNQUtFX0RJU0FCTEVfRklORF9QQUNLQUdFX0Jvb3N0PVRSVUUgXAotICAgICAgICAgICAgICAgICAtREdST0ZGPUZBTFNFIFwKLSAgICAgICAgICAgICAgICAgLUROUk9GRj1GQUxTRSBcCi0gICAgICAgICAgICAgICAgIC1ERU5BQkxFX0RUUkFDRT1GQUxTRSBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSF9QSUM9T04gXAotICAgICAgICAgICAgICAgICAtRElOU1RBTExfTEFZT1VUPVJQTSBcCi0gICAgICAgICAgICAgICAgIC1ESU5TVEFMTF9ET0NESVI6UEFUSD0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0gXAotICAgICAgICAgICAgICAgICAtRElOU1RBTExfTElCRElSOlBBVEg9JHtiYXNlbGlifSBcCi0gICAgICAgICAgICAgICAgIC1ESU5TVEFMTF9QTFVHSU5ESVI6UEFUSD0ke2Jhc2VsaWJ9L3BsdWdpbiBcCi0gICAgICAgICAgICAgICAgIC1ESU5TVEFMTF9TWVNDT05GRElSOlBBVEg9JHtzeXNjb25mZGlyfSBcCi0gICAgICAgICAgICAgICAgIC1ETVlTUUxfREFUQURJUjpQQVRIPS92YXIvbXlzcWwgXAotICAgICAgICAgICAgICAgICAtRENBVF9FWEVDVVRBQkxFPWB3aGljaCBjYXRgIFwKLSAgICAgICAgICAgICAgICAgLURDTUFLRV9BUjpGSUxFUEFUSD0ke0FSfSIKLQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICAjIGhhbmRsZSBkaXN0cm9zIHdpdGggZGlmZmVyZW50IHZhbHVlcyBvZiAke2xpYmV4ZWNkaXJ9Ci0gICAgbGliZXhlY2RpcjI9YGVjaG8gJHtsaWJleGVjZGlyfSB8IHNlZCAtZSAncysvdXNyLysrZydgCi0gICAgc2VkIC1pIC1lICJzOi9saWJleGVjOi8kbGliZXhlY2RpcjI6ZyIgJHtTfS9zY3JpcHRzL215c3FsX2luc3RhbGxfZGIuc2gKLSAgICBzZWQgLWkgLWUgInM6bXlzcWxkIGxpYmV4ZWM6bXlzcWxkICRsaWJleGVjZGlyMjpnIiAke1N9L3NjcmlwdHMvbXlzcWxfaW5zdGFsbF9kYi5zaAotICAgIHNlZCAtaSAtZSAiczovbGliZXhlYzovJGxpYmV4ZWNkaXIyOmciICR7U30vc2NyaXB0cy9teXNxbGRfc2FmZS5zaAotfQotCi1kb19nZW5lcmF0ZV90b29sY2hhaW5fZmlsZV9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLSAgICAjIElmIHRoZXNlIGFyZSBzZXQgY21ha2Ugd2lsbCBhc3N1bWUgd2UncmUgY3Jvc3MtY29tcGlsaW5nLCB3aGljaCB3aWxsCi0gICAgIyByZXN1bHQgaW4gY2VydGFpbiB0aGluZ3Mgd2Ugd2FudCBiZWluZyBkaXNhYmxlZAotICAgIHNlZCAtaSAiL3NldCggQ01BS0VfU1lTVEVNX05BTUUvZCIgJHtXT1JLRElSfS90b29sY2hhaW4uY21ha2UKLSAgICBzZWQgLWkgIi9zZXQoIENNQUtFX1NZU1RFTV9QUk9DRVNTT1IvZCIgJHtXT1JLRElSfS90b29sY2hhaW4uY21ha2UKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0gICAgIyBUaGVzZSBuZWVkIHRvIGJlIGluLXRyZWUgb3IgbWFrZSB3aWxsIHRoaW5rIHRoZXkgbmVlZCB0byBiZSBidWlsdCwKLSAgICAjIGFuZCBzaW5jZSB3ZSdyZSBjcm9zcy1jb21waWxpbmcgdGhhdCBpcyBkaXNhYmxlZAotICAgIGNwICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9jb21wX2VyciAke1N9L2V4dHJhCi0gICAgY3AgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2NvbXBfc3FsICR7U30vc2NyaXB0cwotCi0gICAgaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAna3JiNScsICd5ZXMnLCAnbm8nLCBkKX0iID0gIm5vIiBdOyB0aGVuCi0gICAgICAgIGlmICEgWyAtZSAke0J9L2luY2x1ZGUvb3BlbnNzbC9rc3NsLmggXSA7IHRoZW4KLSAgICAgICAgICAgIG1rZGlyIC1wICR7Qn0vaW5jbHVkZS9vcGVuc3NsCi0gICAgICAgICAgICBlY2hvICIjaWZuZGVmIEtTU0xfSCIgPiR7Qn0vaW5jbHVkZS9vcGVuc3NsL2tzc2wuaAotICAgICAgICAgICAgZWNobyAiI2RlZmluZSBLU1NMX0giID4+JHtCfS9pbmNsdWRlL29wZW5zc2wva3NzbC5oCi0gICAgICAgICAgICBlY2hvICIjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPiI+PiR7Qn0vaW5jbHVkZS9vcGVuc3NsL2tzc2wuaAotICAgICAgICAgICAgZWNobyAiI2VuZGlmIiA+PiR7Qn0vaW5jbHVkZS9vcGVuc3NsL2tzc2wuaAotICAgICAgICBmaQotICAgIGZpCi19Ci0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAibWFyaWFkYl9zeXNyb290X3ByZXByb2Nlc3MiCi0KLSMgV2UgbmVlZCB0byBhcHBlbmQgdGhpcyBzbyBpdCBydW5zICphZnRlciogYmluY29uZmlnJ3MgcHJlcHJvY2VzcyBmdW5jdGlvbgotIwotIyBXZSByZWFsbHkgZG9uJ3QgY2FyZSBleGFjdGx5IHdoYXQgdGhlIGRpcmVjdG9yaWVzIHdlcmUgc2V0IHRvIG9yaWdpbmFsbHkuCi0jIHBsdWdpbmRpciBpcyBub3QgZml4ZWQsIGJ1dCB3ZSBkb24ndCBjcmVhdGUgYW55IHBsdWdpbnMuCi0jCi1tYXJpYWRiX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0gICAgc2VkIC1pIC1lcyxecGtnaW5jbHVkZWRpcj0uKixwa2dpbmNsdWRlZGlyPVwnJHtTVEFHSU5HX0lOQ0RJUn0vbXlzcWxcJywgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9teXNxbF9jb25maWcKLSAgICBzZWQgLWkgLWVzLF5wa2dsaWJkaXI9LioscGtnbGliZGlyPVwnJHtTVEFHSU5HX0xJQkRJUn1cJywgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9teXNxbF9jb25maWcKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L215LmNuZiAke0R9LyR7c3lzY29uZmRpcn0vCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5zdGFsbF9kYiAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kLwotICAgIG12ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvbXlzcWwgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9teXNxbGQKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9teXNxbGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2luc3RhbGxfZGIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIHNlZCAtaSAtZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgLWUgJ3MsQFBSRUZJWEAsJHtwcmVmaXh9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL215c3FsZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9pbnN0YWxsX2RiLnNlcnZpY2UKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgICAgICBlY2hvICJmIC92YXIvbG9nL215c3FsZC5lcnIgMDY0MCBteXNxbCBteXNxbCAtIiBcCi0gICAgICAgICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvOTktbXlzcWxkLmNvbmYKLSAgICBmaQotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vbXlzcWwtc3lzdGVtZC1zdGFydCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9kb2MvJHtQTn0KLSAgICBpZiBbIC1mICR7RH0ke2RhdGFkaXJ9L2RvYy9SRUFETUUgXTsgdGhlbgotICAgICAgICBtdiAke0R9JHtkYXRhZGlyfS9kb2MvUkVBRE1FICR7RH0ke2RhdGFkaXJ9L2RvYy8ke1BOfS8KLSAgICBmaQotfQotCi1QQUNLQUdFUyA9ICIke1BOfS1kYmcgJHtQTn0gXAotICAgIGxpYm15c3FsY2xpZW50LXIgbGlibXlzcWxjbGllbnQtci1kZXYgbGlibXlzcWxjbGllbnQtci1zdGF0aWNkZXYgbGlibXlzcWxjbGllbnQtci1kYmcgXAotICAgIGxpYm15c3FsY2xpZW50IGxpYm15c3FsY2xpZW50LWRldiBsaWJteXNxbGNsaWVudC1zdGF0aWNkZXYgbGlibXlzcWxjbGllbnQtZGJnIFwKLSAgICBsaWJteXNxbGQgbGlibXlzcWxkLWRldiAke1BOfS1jbGllbnQgJHtQTn0tc2VydmVyICR7UE59LXNldHVwZGIgJHtQTn0tbGVmdG92ZXJzIgotQ09ORkZJTEVTXyR7UE59LXNlcnZlciArPSAiJHtzeXNjb25mZGlyfS9teS5jbmYgJHtzeXNjb25mZGlyfS9teS5jbmYuZC9zZXJ2ZXIuY25mIgotQ09ORkZJTEVTXyR7UE59LWNsaWVudCArPSAiJHtzeXNjb25mZGlyfS9teS5jbmYuZC9teXNxbC1jbGllbnRzLmNuZiIKLUNPTkZGSUxFU19saWJteXNxbGNsaWVudCArPSAiJHtzeXNjb25mZGlyfS9teS5jbmYuZC9jbGllbnQuY25mIgotCi1GSUxFU18ke1BOfSA9ICIgIgotUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tY2xpZW50ICR7UE59LXNlcnZlciIKLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLVJERVBFTkRTXyR7UE59LWNsaWVudCA9ICJwZXJsIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCBcCi0gICAgcGVybC1tb2R1bGUtZmNudGwgcGVybC1tb2R1bGUtc3lzLWhvc3RuYW1lIHBlcmwtbW9kdWxlLWlwYy1vcGVuMyBcCi0gICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIiCi1SREVQRU5EU18ke1BOfS1zZXJ2ZXIgPSAicGVybCBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBwZXJsLW1vZHVsZS1maWxlLXBhdGggcGVybC1tb2R1bGUtc3lzLWhvc3RuYW1lIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLWNvcHkgcGVybC1tb2R1bGUtZmlsZS10ZW1wIHBlcmwtbW9kdWxlLXBvc2l4IFwKLSAgICAke1BOfS1jbGllbnQgbGliZGJpLXBlcmwgbGliZGJkLW15c3FsLXBlcmwiCi1SREVQRU5EU18ke1BOfS1sZWZ0b3ZlcnMgPSAicGVybCBwZXJsLW1vZHVsZS1jd2QgcGVybC1tb2R1bGUtYmVuY2htYXJrIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKLSAgICBwZXJsLW1vZHVsZS1wb3NpeCBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBwZXJsLW1vZHVsZS1zaWd0cmFwIHBlcmwtbW9kdWxlLXRocmVhZHMgXAotICAgIHBlcmwtbW9kdWxlLXRocmVhZHMtc2hhcmVkIHBlcmwtbW9kdWxlLWlvLXNvY2tldCBwZXJsLW1vZHVsZS1zeXMtaG9zdG5hbWUgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgcGVybC1tb2R1bGUtZmlsZS1maW5kIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKLSAgICBwZXJsLW1vZHVsZS1jb25zdGFudCBwZXJsLW1vZHVsZS1saWIgcGVybC1tb2R1bGUtZmlsZS10ZW1wIHBlcmwtbW9kdWxlLWZpbGUtc3BlYy1mdW5jdGlvbnMgXAotICAgIHBlcmwtbW9kdWxlLWlvLXNvY2tldC1pbmV0IHBlcmwtbW9kdWxlLWlvLXNlbGVjdCIKLVJERVBFTkRTXyR7UE59LXNldHVwZGIgPSAiY29yZXV0aWxzIgotCi0jIEFsbG93IG9sZCBjb2RlIHRvIGxpbmsgdG8gdGhlIGJhY2t3YXJkIGNvbXBhdGlibGUgbGlicmFyeQotUkRFUEVORFNfbGlibXlzcWxjbGllbnQtZGV2ID0gImxpYm15c3FsY2xpZW50LXItZGV2IgotCi1GSUxFU19saWJteXNxbGNsaWVudCA9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYm15c3FsY2xpZW50LnNvLiogXAotICAgICR7c3lzY29uZmRpcn0vbXkuY25mLmQvY2xpZW50LmNuZiIKLUZJTEVTX2xpYm15c3FsY2xpZW50LWRldiA9ICIgXAotICAgICR7aW5jbHVkZWRpcn0vbXlzcWwvIFwKLSAgICAke2xpYmRpcn0vbGlibXlzcWxjbGllbnQuc28gXAotICAgICR7c3lzY29uZmRpcn0vYWNsb2NhbCBcCi0gICAgJHtiaW5kaXJ9L215c3FsX2NvbmZpZyIKLUZJTEVTX2xpYm15c3FsY2xpZW50LXN0YXRpY2RldiA9ICJcCi0gICAgJHtsaWJkaXJ9LyouYSIKLUZJTEVTX2xpYm15c3FsY2xpZW50LWRiZyA9ICIke2xpYmRpcn0vcGx1Z2luLy5kZWJ1Zy8gXAotICAgICR7ZGF0YWRpcn0vbXlzcWwtdGVzdC9saWIvTXkvU2FmZVByb2Nlc3MvLmRlYnVnL215X3NhZmVfcHJvY2VzcyIKLQotIyBBdm9pZCB3YXJuaW5ncyBhYm91dCBoYV94dHJhZGIuc28uMC4wLjAgYW5kIGhhX2lubm9kYl9wbHVnaW4uc28uMC4wLjAKLSMgd2hpY2ggYXJlIGludGVudGlvbmFsbHkgbm9uLVBJQyBvbiAzMi1iaXQgeDg2IChzZWUgZS5nLgotIyBzdG9yYWdlL3h0cmFkYi9wbHVnLmluIGluIHRoZSBzb3VyY2UpCi1JTlNBTkVfU0tJUF9saWJteXNxbGNsaWVudF9hcHBlbmRfeDg2ID0gIiB0ZXh0cmVsIgotCi1GSUxFU19saWJteXNxbGNsaWVudC1yID0gIiR7bGliZGlyfS9saWJteXNxbGNsaWVudF9yLnNvLioiCi1GSUxFU19saWJteXNxbGNsaWVudC1yLWRldiA9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYm15c3FsY2xpZW50X3Iuc28iCi1GSUxFU19saWJteXNxbGNsaWVudC1yLXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGlibXlzcWxjbGllbnRfci5hIgotRklMRVNfbGlibXlzcWxjbGllbnQtci1kYmcgPSAiJHtsaWJkaXJ9L3BsdWdpbi8uZGVidWdsaWJteXNxbGNsaWVudF9yLnNvLioiCi0KLUZJTEVTX2xpYm15c3FsZCA9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYm15c3FsZC5zby4qIgotRklMRVNfbGlibXlzcWxkLWRldiA9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYm15c3FsZC5zbyIKLQotRklMRVNfJHtQTn0tY2xpZW50ID0gIlwKLSAgICAke2JpbmRpcn0vbXlpc2FtX2Z0ZHVtcCBcCi0gICAgJHtiaW5kaXJ9L215c3FsIFwKLSAgICAke2JpbmRpcn0vbXlzcWxfY2xpZW50X3Rlc3QgXAotICAgICR7YmluZGlyfS9teXNxbF9jbGllbnRfdGVzdF9lbWJlZGRlZCBcCi0gICAgJHtiaW5kaXJ9L215c3FsX2ZpbmRfcm93cyBcCi0gICAgJHtiaW5kaXJ9L215c3FsX2ZpeF9leHRlbnNpb25zIFwKLSAgICAke2JpbmRpcn0vbXlzcWxfd2FpdHBpZCBcCi0gICAgJHtiaW5kaXJ9L215c3FsYWNjZXNzIFwKLSAgICAke2JpbmRpcn0vbXlzcWxhZG1pbiBcCi0gICAgJHtiaW5kaXJ9L215c3FsYnVnIFwKLSAgICAke2JpbmRpcn0vbXlzcWxjaGVjayBcCi0gICAgJHtiaW5kaXJ9L215c3FsZHVtcCBcCi0gICAgJHtiaW5kaXJ9L215c3FsZHVtcHNsb3cgXAotICAgICR7YmluZGlyfS9teXNxbGltcG9ydCBcCi0gICAgJHtiaW5kaXJ9L215c3Fsc2hvdyBcCi0gICAgJHtiaW5kaXJ9L215c3Fsc2xhcCBcCi0gICAgJHtiaW5kaXJ9L215c3FsdGVzdF9lbWJlZGRlZCBcCi0gICAgJHtsaWJleGVjZGlyfS9teXNxbG1hbmFnZXIgXAotICAgICR7c3lzY29uZmRpcn0vbXkuY25mLmQvbXlzcWwtY2xpZW50cy5jbmYiCi0KLUZJTEVTXyR7UE59LXNlcnZlciA9ICJcCi0gICAgJHtiaW5kaXJ9L2NvbXBfZXJyIFwKLSAgICAke2JpbmRpcn0vaXNhbWNoayBcCi0gICAgJHtiaW5kaXJ9L2lzYW1sb2cgXAotICAgICR7YmluZGlyfS9tc3FsMm15c3FsIFwKLSAgICAke2JpbmRpcn0vbXlfcHJpbnRfZGVmYXVsdHMgXAotICAgICR7YmluZGlyfS9teWlzYW1jaGsgXAotICAgICR7YmluZGlyfS9teWlzYW1sb2cgXAotICAgICR7YmluZGlyfS9teWlzYW1wYWNrIFwKLSAgICAke2JpbmRpcn0vbXlzcWxfY29udmVydF90YWJsZV9mb3JtYXQgXAotICAgICR7YmluZGlyfS9teXNxbF9maXhfcHJpdmlsZWdlX3RhYmxlcyBcCi0gICAgJHtiaW5kaXJ9L215c3FsX2luc3RhbGxfZGIgXAotICAgICR7YmluZGlyfS9teXNxbF9zZWN1cmVfaW5zdGFsbGF0aW9uIFwKLSAgICAke2JpbmRpcn0vbXlzcWxfc2V0cGVybWlzc2lvbiBcCi0gICAgJHtiaW5kaXJ9L215c3FsLXN5c3RlbWQtc3RhcnQgXAotICAgICR7YmluZGlyfS9teXNxbF90emluZm9fdG9fc3FsIFwKLSAgICAke2JpbmRpcn0vbXlzcWxfdXBncmFkZSBcCi0gICAgJHtiaW5kaXJ9L215c3FsX3BsdWdpbiBcCi0gICAgJHtiaW5kaXJ9L215c3FsX3phcCBcCi0gICAgJHtiaW5kaXJ9L215c3FsYmlubG9nIFwKLSAgICAke2JpbmRpcn0vbXlzcWxkX211bHRpIFwKLSAgICAke2JpbmRpcn0vbXlzcWxkX3NhZmUgXAotICAgICR7YmluZGlyfS9teXNxbGRfc2FmZV9oZWxwZXIgXAotICAgICR7YmluZGlyfS9teXNxbGhvdGNvcHkgXAotICAgICR7YmluZGlyfS9teXNxbHRlc3QgXAotICAgICR7YmluZGlyfS9uZGJfZGVsZXRlX2FsbCBcCi0gICAgJHtiaW5kaXJ9L25kYl9kZXNjIFwKLSAgICAke2JpbmRpcn0vbmRiX2Ryb3BfaW5kZXggXAotICAgICR7YmluZGlyfS9uZGJfZHJvcF90YWJsZSBcCi0gICAgJHtiaW5kaXJ9L25kYl9tZ20gXAotICAgICR7YmluZGlyfS9uZGJfcmVzdG9yZSBcCi0gICAgJHtiaW5kaXJ9L25kYl9zZWxlY3RfYWxsIFwKLSAgICAke2JpbmRpcn0vbmRiX3NlbGVjdF9jb3VudCBcCi0gICAgJHtiaW5kaXJ9L25kYl9zaG93X3RhYmxlcyBcCi0gICAgJHtiaW5kaXJ9L25kYl93YWl0ZXIgXAotICAgICR7YmluZGlyfS9wYWNrX2lzYW0gXAotICAgICR7YmluZGlyfS9wZXJyb3IgXAotICAgICR7YmluZGlyfS9yZXBsYWNlIFwKLSAgICAke2JpbmRpcn0vcmVzb2x2ZV9zdGFja19kdW1wIFwKLSAgICAke2JpbmRpcn0vcmVzb2x2ZWlwIFwKLSAgICAke2xpYmV4ZWNkaXJ9L215c3FsZCBcCi0gICAgJHtzYmluZGlyfS9teXNxbGQgXAotICAgICR7c2JpbmRpcn0vbmRiX2NwY2QgXAotICAgICR7c2JpbmRpcn0vbmRiZCBcCi0gICAgJHtzYmluZGlyfS9uZGJfbWdtZCBcCi0gICAgJHtsaWJkaXJ9L3BsdWdpbi8qLnNvIFwKLSAgICAke2RhdGFkaXJ9L215c3FsLyBcCi0gICAgJHtsb2NhbHN0YXRlZGlyfS9teXNxbC8gXAotICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL215c3FsZCBcCi0gICAgJHtzeXNjb25mZGlyfS9teS5jbmYgXAotICAgICR7c3lzY29uZmRpcn0vbXkuY25mLmQvc2VydmVyLmNuZiBcCi0gICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIgotCi1ERVNDUklQVElPTl8ke1BOfS1sZWZ0b3ZlcnMgPSAidW5wYWNrYWdlZCBhbmQgcHJvYmFibHkgdW5uZWVkZWQgZmlsZXMgZm9yICR7UE59IgotRklMRVNfJHtQTn0tbGVmdG92ZXJzID0gIi8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvZml4LW15c3FsY2xpZW50LXItdmVyc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9maXgtbXlzcWxjbGllbnQtci12ZXJzaW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTE2NjE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9maXgtbXlzcWxjbGllbnQtci12ZXJzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLUZyb20gNmRiMmE2MDYxOTZmYjM4YTZkMTA2ZGM0MDllZWUxY2I5YTQwYTQ0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRvciBEaWRyaWtzZW4gPHRvci5kaWRyaWtzZW5Ab3JhY2xlLmNvbT4KLURhdGU6IE1vbiwgMjQgSnVuIDIwMTMgMTc6MTU6MzUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIzE2ODA5MDU1IE1ZU1FMIDUuNiBBTkQgNS43IFNUSUxMIFVTRSBMSUJNWVNRTENMSUVOVC5TTy4xOAotCi1XaXRoIHRoaXMgcGF0Y2gsIHRoZSBsaWJteXNxbC8gZGlyZWN0b3J5IGNvbnRhaW5zOgotbGlibXlzcWxjbGllbnQuYQotbGlibXlzcWxjbGllbnRfci5hIC0+IGxpYm15c3FsY2xpZW50LmEKLWxpYm15c3FsY2xpZW50X3Iuc28gLT4gbGlibXlzcWxjbGllbnQuc28qCi1saWJteXNxbGNsaWVudF9yLnNvLjE4IC0+IGxpYm15c3FsY2xpZW50LnNvLjE4KgotbGlibXlzcWxjbGllbnRfci5zby4xOC4xLjAgLT4gbGlibXlzcWxjbGllbnQuc28uMTguMS4wKgotbGlibXlzcWxjbGllbnQuc28gLT4gbGlibXlzcWxjbGllbnQuc28uMTgqCi1saWJteXNxbGNsaWVudC5zby4xOCAtPiBsaWJteXNxbGNsaWVudC5zby4xOC4xLjAqCi1saWJteXNxbGNsaWVudC5zby4xOC4xLjAqCi0KLVRoaXMgZml4ZXMgbGlibXlzcWxjbGllbnRfciBzeW1saW5rcyBwb2ludGluZyB0byB0aGUgdW52ZXJzaW9uZWQKLWxpYm15c3FsY2xpZW50LnNvIHN5bWxpbmsgKGxlYWRpbmcgdG8gcGFja2FnZSBRQSBlcnJvcnMgc2luY2UgdGhlCi1saWJteXNxbGNsaWVudC1yIHBhY2thZ2UgZW5kcyB1cCBkZXBlbmRpbmcgb24gbGlibXlzcWxjbGllbnQtZGV2KS4KLQotQm9ycm93ZWQgZnJvbSBNeVNRTCA1LjYgdHJlZSBhdCBodHRwczovL2dpdGh1Yi5jb20vcGVyY29uYS9teXNxbC8KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotCi0tLS0KLSBjbWFrZS9pbnN0YWxsX21hY3Jvcy5jbWFrZSB8IDI1ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSBjbWFrZS9teXNxbF92ZXJzaW9uLmNtYWtlICB8ICAzICsrLQotIGxpYm15c3FsL0NNYWtlTGlzdHMudHh0ICAgIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NtYWtlL2luc3RhbGxfbWFjcm9zLmNtYWtlIGIvY21ha2UvaW5zdGFsbF9tYWNyb3MuY21ha2UKLWluZGV4IGI4ZWZkZjguLmEwZDBlNjggMTAwNjQ0Ci0tLS0gYS9jbWFrZS9pbnN0YWxsX21hY3Jvcy5jbWFrZQotKysrIGIvY21ha2UvaW5zdGFsbF9tYWNyb3MuY21ha2UKLUBAIC0xLDQgKzEsNCBAQAotLSMgQ29weXJpZ2h0IChjKSAyMDA5LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyMgQ29weXJpZ2h0IChjKSAyMDA5LCAyMDEzLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICMgCi0gIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLUBAIC0xMTEsMjggKzExMSwzMyBAQCBGVU5DVElPTihJTlNUQUxMX1NDUklQVCkKLSBFTkRGVU5DVElPTigpCi0gCi0gIyBJbnN0YWxsIHN5bWJvbGljIGxpbmsgdG8gQ01ha2UgdGFyZ2V0LiAKLS0jIHRoZSBsaW5rIGlzIGNyZWF0ZWQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRhcmdldAotLSMgYW5kIGV4dGVuc2lvbiB3aWxsIGJlIHRoZSBzYW1lIGFzIGZvciB0YXJnZXQgZmlsZS4KLS1NQUNSTyhJTlNUQUxMX1NZTUxJTksgbGlua25hbWUgdGFyZ2V0IGRlc3RpbmF0aW9uIGNvbXBvbmVudCkKLSsjIFdlIGRvICdjZCBwYXRoOyBsbiAtcyB0YXJnZXRfbmFtZSBsaW5rX25hbWUnCi0rIyBXZSBhbHNvIGFkZCBhbiBJTlNUQUxMIHRhcmdldCBmb3IgIiR7cGF0aH0vJHtsaW5rX25hbWV9IgotK01BQ1JPKElOU1RBTExfU1lNTElOSyB0YXJnZXQgdGFyZ2V0X25hbWUgbGlua19uYW1lIGRlc3RpbmF0aW9uIGNvbXBvbmVudCkKLSBJRihVTklYKQotICAgR0VUX1RBUkdFVF9QUk9QRVJUWShsb2NhdGlvbiAke3RhcmdldH0gTE9DQVRJT04pCi0gICBHRVRfRklMRU5BTUVfQ09NUE9ORU5UKHBhdGggJHtsb2NhdGlvbn0gUEFUSCkKLS0gIEdFVF9GSUxFTkFNRV9DT01QT05FTlQobmFtZSAke2xvY2F0aW9ufSBOQU1FKQotLSAgU0VUKG91dHB1dCAke3BhdGh9LyR7bGlua25hbWV9KQotKyAgTUVTU0FHRShTVEFUVVMgInRhcmdldCAke3RhcmdldH0iKQotKyAgTUVTU0FHRShTVEFUVVMgImxpbmtfbmFtZSAke2xpbmtfbmFtZX0iKQotKyAgTUVTU0FHRShTVEFUVVMgInRhcmdldF9uYW1lICR7dGFyZ2V0X25hbWV9IikKLSsgIE1FU1NBR0UoU1RBVFVTICJwYXRoICR7cGF0aH0iKQotKyAgTUVTU0FHRShTVEFUVVMgIiIpCi0rCi0rICBTRVQob3V0cHV0ICR7cGF0aH0vJHtsaW5rX25hbWV9KQotICAgQUREX0NVU1RPTV9DT01NQU5EKAotICAgICBPVVRQVVQgJHtvdXRwdXR9Ci0gICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSBBUkdTIC1FIHJlbW92ZSAtZiAke291dHB1dH0KLSAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IEFSR1MgLUUgY3JlYXRlX3N5bWxpbmsgCi0tICAgICAgJHtuYW1lfSAKLS0gICAgICAke2xpbmtuYW1lfQotKyAgICAgICR7dGFyZ2V0X25hbWV9IAotKyAgICAgICR7bGlua19uYW1lfQotICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke3BhdGh9Ci0gICAgIERFUEVORFMgJHt0YXJnZXR9Ci0gICAgICkKLSAgIAotLSAgQUREX0NVU1RPTV9UQVJHRVQoc3ltbGlua18ke2xpbmtuYW1lfQotKyAgQUREX0NVU1RPTV9UQVJHRVQoc3ltbGlua18ke2xpbmtfbmFtZX0KLSAgICAgQUxMCi0gICAgIERFUEVORFMgJHtvdXRwdXR9KQotLSAgU0VUX1RBUkdFVF9QUk9QRVJUSUVTKHN5bWxpbmtfJHtsaW5rbmFtZX0gUFJPUEVSVElFUyBDTEVBTl9ESVJFQ1RfT1VUUFVUIDEpCi0rICBTRVRfVEFSR0VUX1BST1BFUlRJRVMoc3ltbGlua18ke2xpbmtfbmFtZX0gUFJPUEVSVElFUyBDTEVBTl9ESVJFQ1RfT1VUUFVUIDEpCi0gICBJRihDTUFLRV9HRU5FUkFUT1IgTUFUQ0hFUyAiWGNvZGUiKQotICAgICAjIEZvciBYY29kZSwgcmVwbGFjZSBwcm9qZWN0IGNvbmZpZyB3aXRoIGluc3RhbGwgY29uZmlnCi0gICAgIFNUUklORyhSRVBMQUNFICIke0NNQUtFX0NGR19JTlRESVJ9IiAKLWRpZmYgLS1naXQgYS9saWJteXNxbC9DTWFrZUxpc3RzLnR4dCBiL2xpYm15c3FsL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBiZTU3NjBmLi45NjI4NmZmIDEwMDY0NAotLS0tIGEvbGlibXlzcWwvQ01ha2VMaXN0cy50eHQKLSsrKyBiL2xpYm15c3FsL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTgwLDYgKzE4MCwxMiBAQCBJRihNU1ZDKQotICBJTlNUQUxMX0RFQlVHX1RBUkdFVChteXNxbGNsaWVudCBERVNUSU5BVElPTiAke0lOU1RBTExfTElCRElSfS9kZWJ1ZykKLSBFTkRJRigpCi0gCi0rTUFDUk8oR0VUX1RBUkdFVF9OQU1FIHRhcmdldCBvdXRfbmFtZSkKLSsgIEdFVF9UQVJHRVRfUFJPUEVSVFkobG9jYXRpb24gJHt0YXJnZXR9IExPQ0FUSU9OKQotKyAgR0VUX0ZJTEVOQU1FX0NPTVBPTkVOVChuYW1lICR7bG9jYXRpb259IE5BTUUpCi0rICBTRVQoJHtvdXRfbmFtZX0gJHtuYW1lfSkKLStFTkRNQUNSTygpCi0rCi0gSUYoVU5JWCkKLSAgIE1BQ1JPKEdFVF9WRVJTSU9ORURfTElCTkFNRSBMSUJOQU1FIEVYVEVOU0lPTiBWRVJTSU9OIE9VVE5BTUUpCi0gICAgIFNFVChET1RfVkVSU0lPTiAiLiR7VkVSU0lPTn0iKQotQEAgLTE5Miw3ICsxOTgsMTMgQEAgSUYoVU5JWCkKLSAgICAgICBTRVQoJHtPVVROQU1FfSAke0xJQk5BTUV9JHtFWFRFTlNJT059JHtET1RfVkVSU0lPTn0pCi0gICAgIEVORElGKCkgCi0gICBFTkRNQUNSTygpCi0tICBJTlNUQUxMX1NZTUxJTksoJHtDTUFLRV9TVEFUSUNfTElCUkFSWV9QUkVGSVh9bXlzcWxjbGllbnRfci5hIG15c3FsY2xpZW50ICR7SU5TVEFMTF9MSUJESVJ9IERldmVsb3BtZW50KQotK0VORElGKCkKLSsKLStJRihVTklYKQotKyAgR0VUX1RBUkdFVF9OQU1FKG15c3FsY2xpZW50IGxpYl9uYW1lKQotKyAgSU5TVEFMTF9TWU1MSU5LKG15c3FsY2xpZW50Ci0rICAgICR7bGliX25hbWV9ICR7Q01BS0VfU1RBVElDX0xJQlJBUllfUFJFRklYfW15c3FsY2xpZW50X3IuYQotKyAgICAke0lOU1RBTExfTElCRElSfSBEZXZlbG9wbWVudCkKLSBFTkRJRigpCi0gCi0gSUYoTk9UIERJU0FCTEVfU0hBUkVEKQotQEAgLTIwNSwxMCArMjE3LDkgQEAgSUYoTk9UIERJU0FCTEVfU0hBUkVEKQotICAgICAjIGxpYnRvb2wgY29tcGF0YWJpbGl0eQotICAgICBJRihDTUFLRV9TWVNURU1fTkFNRSBNQVRDSEVTICJGcmVlQlNEIiBPUiBBUFBMRSkKLSAgICAgICBTRVQoT1NfU0hBUkVEX0xJQl9WRVJTSU9OICIke1NIQVJFRF9MSUJfTUFKT1JfVkVSU0lPTn0iKQotLSAgICBFTFNFSUYoQ01BS0VfU1lTVEVNX05BTUUgTUFUQ0hFUyAiSFAtVVgiKQotLSAgICAgIFNFVChPU19TSEFSRURfTElCX1ZFUlNJT04gIiR7U0hBUkVEX0xJQl9NQUpPUl9WRVJTSU9OfS4wIikKLSAgICAgRUxTRSgpCi0tICAgICAgU0VUKE9TX1NIQVJFRF9MSUJfVkVSU0lPTiAiJHtTSEFSRURfTElCX01BSk9SX1ZFUlNJT059LjAuMCIpCi0rICAgICAgU0VUKE9TX1NIQVJFRF9MSUJfVkVSU0lPTgotKyAgICAgICAgIiR7U0hBUkVEX0xJQl9NQUpPUl9WRVJTSU9OfS4ke1NIQVJFRF9MSUJfTUlOT1JfVkVSU0lPTn0uMCIpCi0gICAgIEVORElGKCkKLSAgICAgIyBOYW1lIG9mIHNoYXJlZCBsaWJyYXJ5IGlzIG15c3FsY2xpZW50IG9uIFVuaXgKLSAgICAgU0VUX1RBUkdFVF9QUk9QRVJUSUVTKGxpYm15c3FsIFBST1BFUlRJRVMgCi1AQCAtMjM5LDggKzI1MCwxMyBAQCBJRihOT1QgRElTQUJMRV9TSEFSRUQpCi0gICAgICAgIiR7Q01BS0VfU0hBUkVEX0xJQlJBUllfU1VGRklYfSIKLSAgICAgICAiIgotICAgICAgIGxpbmtuYW1lKQotLSAgICBJTlNUQUxMX1NZTUxJTksoJHtsaW5rbmFtZX0gbGlibXlzcWwgJHtJTlNUQUxMX0xJQkRJUn0gU2hhcmVkTGlicmFyaWVzKQotLSAgICBTRVQoT1NfU0hBUkVEX0xJQl9TWU1MSU5LUyAiJHtTSEFSRURfTElCX01BSk9SX1ZFUlNJT059IiAiJHtPU19TSEFSRURfTElCX1ZFUlNJT059IikKLSsgICAgR0VUX1RBUkdFVF9OQU1FKGxpYm15c3FsIGxpYl9uYW1lKQotKyAgICBHRVRfRklMRU5BTUVfQ09NUE9ORU5UKGxpYl9uYW1lX3dlICR7bGliX25hbWV9IE5BTUVfV0UpCi0rICAgIElOU1RBTExfU1lNTElOSyhsaWJteXNxbAotKyAgICAgICR7bGliX25hbWV9ICR7bGlua25hbWV9Ci0rICAgICAgJHtJTlNUQUxMX0xJQkRJUn0gU2hhcmVkTGlicmFyaWVzKQotKyAgICBTRVQoT1NfU0hBUkVEX0xJQl9TWU1MSU5LUwotKyAgICAgICIke1NIQVJFRF9MSUJfTUFKT1JfVkVSU0lPTn0iICIke09TX1NIQVJFRF9MSUJfVkVSU0lPTn0iKQotICAgICBMSVNUKFJFTU9WRV9EVVBMSUNBVEVTIE9TX1NIQVJFRF9MSUJfU1lNTElOS1MpCi0gICAgIEZPUkVBQ0godmVyICR7T1NfU0hBUkVEX0xJQl9TWU1MSU5LU30pCi0gICAgICAgR0VUX1ZFUlNJT05FRF9MSUJOQU1FKAotQEAgLTI0OCw3ICsyNjQsMTEgQEAgSUYoTk9UIERJU0FCTEVfU0hBUkVEKQotICAgICAgICAgIiR7Q01BS0VfU0hBUkVEX0xJQlJBUllfU1VGRklYfSIKLSAgICAgICAgICIke3Zlcn0iCi0gICAgICAgICBsaW5rbmFtZSkKLS0gICAgICBJTlNUQUxMX1NZTUxJTksoJHtsaW5rbmFtZX0gbGlibXlzcWwgJHtJTlNUQUxMX0xJQkRJUn0gU2hhcmVkTGlicmFyaWVzKQotKyAgICAgIEdFVF9WRVJTSU9ORURfTElCTkFNRSgKLSsgICAgICAgICR7bGliX25hbWVfd2V9ICIke0NNQUtFX1NIQVJFRF9MSUJSQVJZX1NVRkZJWH0iICIke3Zlcn0iIGxpYl9uYW1lX3ZlcikKLSsgICAgICBJTlNUQUxMX1NZTUxJTksobGlibXlzcWwKLSsgICAgICAgICR7bGliX25hbWVfdmVyfSAke2xpbmtuYW1lfQotKyAgICAgICAgJHtJTlNUQUxMX0xJQkRJUn0gU2hhcmVkTGlicmFyaWVzKQotICAgICBFTkRGT1JFQUNIKCkKLSAgIEVORElGKCkKLSBFTkRJRigpCi0tLSAKLTIuMC4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzIuNy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm9fMi43LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZjM5M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm9fMi43LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluY2x1ZGUgbmFuby5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImMwMTFjN2Y5ZTQ3Y2IxZGEyN2Q0ZTdjYzhiNTZlYzZhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc1MjE3MDY0MzAzOWUyYzk1YTQzM2RlMzU3ZjBjNzBhOGM0YzRjNTYxYTkwYTdlNzI1OWE2M2UyMjViNjU5YjkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25hbm8vbmFub18yLjkuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzIuOS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYjBjZjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25hbm8vbmFub18yLjkuMy5iYgpAQCAtMCwwICsxLDQgQEAKK2luY2x1ZGUgbmFuby5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjZkZDM3ZjAxMGQ2YTk4NWJmMGU1ZjhlZDA5MWZmOTE5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc3ODNiY2ZkNGIyZDVkYzBiZjY0ZDRiZDA3YjFhMTllN2JhM2M5MWRhODgxYTQyNDk3NzJhMzZiOTcyZDQwMTIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25lMTAvbmUxMF8xLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmUxMC9uZTEwXzEuMi4xLmJiCmluZGV4IGU1YjUwY2UuLjc2ZTA3NDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmUxMC9uZTEwXzEuMi4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmUxMC9uZTEwXzEuMi4xLmJiCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgIGQuc2V0VmFyKCdORTEwX1RBUkdFVF9BUkNIJywgJ2FhcmNoNjQnKQogICAgICAgICBiYi5kZWJ1ZygyLCAnQnVpbGRpbmcgTmUxMCBmb3IgYWFyY2g2NCcpCiAgICAgZWxzZToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIkluY29tcGF0aWJsZSB3aXRoIGFyY2hzIG90aGVyIHRoYW4gYXJtdjcgYW5kIGFhcmNoNjQiKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJJbmNvbXBhdGlibGUgd2l0aCBhcmNocyBvdGhlciB0aGFuIGFybXY3IGFuZCBhYXJjaDY0IikKIH0KIAogZG9faW5zdGFsbCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZW9uL25lb24vcGtnY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uZW9uL25lb24vcGtnY29uZmlnLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uL3BrZ2NvbmZpZy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uZW9uL25lb24vcGtnY29uZmlnLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25lb24vbmVvbl8wLjMwLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25lb24vbmVvbl8wLjMwLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBiNzlmNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uXzAuMzAuMi5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIkFuIEhUVFAgYW5kIFdlYkRBViBjbGllbnQgbGlicmFyeSB3aXRoIGEgQyBpbnRlcmZhY2UiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LndlYmRhdi5vcmcvbmVvbi8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvQ09QWUlORy5MSUI7bWQ1PWYzMGE5NzE2ZWYzNzYyZTM0NjdhMmY2MmJmNzkwZjBhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZV91dGlscy5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PTJjYWNhNjA5NTM4ZWRkYWE2ZjZhZGYxMjBhMjE4MDM3IgorCitTUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9uL25lb24yNy9uZW9uMjdfJHtQVn0ub3JpZy50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMjhkNzdiZjE0MDMyZDdmNTA0NmIzOTMwNzA0ZWY0MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYjBiZDhjZGVjMzI5YjQ4ZjUzYTZmMDAxOTljOTJkNWJhNDBiMGYwMTViMTUzNzE4ZDFiMTVkM2Q5NjdmYmNhIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgbGliX3BhY2thZ2UgcGtnY29uZmlnCisKKyMgRW5hYmxlIGdudXRscyBvciBvcGVuc3NsLCBub3QgYm90aAorUEFDS0FHRUNPTkZJRyA/PSAiZXhwYXQgZ251dGxzIGxpYnByb3h5IHdlYmRhdiB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiZXhwYXQgZ251dGxzIHdlYmRhdiB6bGliIgorCitQQUNLQUdFQ09ORklHW2V4cGF0XSA9ICItLXdpdGgtZXhwYXQsLS13aXRob3V0LWV4cGF0LGV4cGF0IgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1zc2w9Z251dGxzLCxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLS13aXRoLWdzc2FwaSwtLXdpdGhvdXQtZ3NzYXBpLGtyYjUiCitQQUNLQUdFQ09ORklHW2xpYnByb3h5XSA9ICItLXdpdGgtbGlicHJveHksLS13aXRob3V0LWxpYnByb3h5LGxpYnByb3h5IgorUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLXdpdGgtbGlieG1sMiwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtc3NsPW9wZW5zc2wsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3dlYmRhdl0gPSAiLS1lbmFibGUtd2ViZGF2LC0tZGlzYWJsZS13ZWJkYXYsIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXNoYXJlZCIKKworZG9fY29tcGlsZV9hcHBlbmQoKSB7CisgICAgb2VfcnVubWFrZSAtQyB0ZXN0Cit9CisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbmVvbi1jb25maWciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uZ2h0dHAyL25naHR0cDJfMS4yNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uZ2h0dHAyL25naHR0cDJfMS4yNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTZiMTBhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmdodHRwMi9uZ2h0dHAyXzEuMjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiSFRUUC8yIEMgTGlicmFyeSBhbmQgdG9vbHMiCi1IT01FUEFHRSA9ICJodHRwczovL25naHR0cDIub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJwa2djb25maWcgY3VuaXQgemxpYiBvcGVuc3NsIGxpYnhtbDIgamFuc3NvbiBjLWFyZXMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL25naHR0cDIvbmdodHRwMi9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vbmdodHRwMi0ke1BWfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjkyNmYwN2FkM2I1MGYzOGY3ZDg5MzVjZWQwNDcxNmNmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkZjQyMjlmNDEyM2I1YWE5NmU4MzRlYmNmZGZmZTk1NGU5M2Q5ODZmMDI1MmZkMTAxMjNkNTBjNmYwMTA5ODMiCi0KLWluaGVyaXQgY21ha2UgcHl0aG9ubmF0aXZlIHB5dGhvbi1kaXIKLQotRVhUUkFfT0VDTUFLRSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvZmlsZXMvdm10b29sc2QuaW5pdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9maWxlcy92bXRvb2xzZC5pbml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MjgwNDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvZmlsZXMvdm10b29sc2QuaW5pdApAQCAtMCwwICsxLDY2IEBACisjIS9iaW4vc2gKKyMKKyMgICB2bXRvb2xzZCAgICAgICAgICBTdGFydC9zdG9wIHRoZSB2bXdhcmUgdG9vbHMgZGFlbW9uCisjCisjIGNoa2NvbmZpZzogIDIzNDUgOTAgNjAKKyMgZGVzY3JpcHRpb246IHZtdG9vbHNkIGlzIGEgZGFlbW9uIHRoYXQgc3RhcnRzIHVwLiAgZm9yIHNvbWUgcmVhc29uLCBpdAorIyAgICAgICAgICAgICAgZG9lc24ndCBpbmNsdWRlIGEgc3lzdiBpbml0IHN0YXJ0dXAgZmlsZSBpbiB0aGUgbGF0ZXN0IHJlbGVhc2UuCisjICAgICAgICAgICAgICBzbyBpIGhhdmUgdG8gd3JpdGUgdGhpcworIworCisjIyMgQkVHSU4gSU5JVCBJTkZPCisjIFByb3ZpZGVzOiB2bXRvb2xzZAorIyBSZXF1aXJlZC1TdGFydDogJGxvY2FsX2ZzICRzeXNsb2cKKyMgUmVxdWlyZWQtU3RvcDogJGxvY2FsX2ZzICRzeXNsb2cKKyMgRGVmYXVsdC1TdGFydDogMjM0NQorIyBEZWZhdWx0LVN0b3A6IDkwCisjIFNob3J0LURlc2NyaXB0aW9uOiBSdW4gdm13YXJlIHRvb2xzIGRhZW1vbgorIyMjIEVORCBJTklUIElORk8KKworUEFUSD0vc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbgorREFFTU9OPS91c3IvYmluL3ZtdG9vbHNkCitOQU1FPXZtdG9vbHNkCitERVNDPSJ2bXdhcmUgdG9vbHMgZGFlbW9uIgorVk1UT09MU0RBUkdTPSIgLWIgL3Zhci9ydW4vdm10b29sc2QucGlkICIKK1JFVFZBTD0iMSIKKworIyBzb3VyY2UgZnVuY3Rpb24gbGlicmFyeQorLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKKwordGVzdCAtZiAkREFFTU9OIHx8IGV4aXQgMAorCisKK2Nhc2UgIiQxIiBpbgorICBzdGFydCkKKyAgICBlY2hvIC1uICJTdGFydGluZyB2bXdhcmUgdG9vbHMgZGFlbW9uOiAiCisgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tZXhlYyAkREFFTU9OIC0tICRWTVRPT0xTREFSR1MKKyAgICBSRVRWQUw9JD8KKyAgICBpZiBbICRSRVRWQUwgLWVxIDAgXSA7IHRoZW4KKyAgICAgICAgZWNobyAiT0siCisgICAgZWxzZQorICAgICAgICBlY2hvICJGQUlMIgorICAgIGZpCisgICAgOzsKKyAgc3RvcCkKKyAgICBlY2hvIC1uICJTdG9wcGluZyB2bXdhcmUgdG9vbHMgZGFlbW9uOiAiCisgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1waWRmaWxlIC92YXIvcnVuL3ZtdG9vbHNkLnBpZAorICAgIFJFVFZBTD0kPworICAgIGlmIFsgJFJFVFZBTCAtZXEgMCBdIDsgdGhlbgorICAgICAgICBlY2hvICJPSyIKKyAgICBlbHNlCisgICAgICAgIGVjaG8gIkZBSUwiCisgICAgZmkKKyAgICA7OworICBzdGF0dXMpCisgICAgc3RhdHVzIHZtdG9vbHNkCisgICAgZXhpdCAkPworICAgIDs7CisgIHJlc3RhcnQpCisgICAgJDAgc3RvcCAmJiBzbGVlcCAxICYmICQwIHN0YXJ0CisgICAgOzsKKyAgKikKKyAgICBlY2hvICJVc2FnZTogL2V0Yy9pbml0LmQvdm10b29sc2Qge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR9IgorICAgIGV4aXQgMQorZXNhYworCitleGl0ICRSRVRWQUwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzXzEwLjEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzXzEwLjEuNS5iYgppbmRleCA4MWU4ZTk2Li5jMzJkMmM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29sc18xMC4xLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHNfMTAuMS41LmJiCkBAIC0yNCw2ICsyNCw3IEBACiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdm13YXJlL29wZW4tdm0tdG9vbHMuZ2l0O3Byb3RvY29sPWh0dHBzIFwKICAgICAgICAgICAgZmlsZTovL3Rvb2xzLmNvbmYgXAogICAgICAgICAgICBmaWxlOi8vdm10b29sc2Quc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly92bXRvb2xzZC5pbml0IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWRvbi10LXVzZS1kbmV0LWNvbmZpZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWFkZC1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1hc3N1bXB0aW9ucy1hYm91dC1nbGliYy1iZWluZy1vbmx5LWxpYmMtaW1wbGUucGF0Y2ggXApAQCAtNTAsNyArNTEsNyBAQAogIyBvcGVuLXZtLXRvb2xzIGlzIHN1cHBvcnRlZCBvbmx5IG9uIHg4Ni4KIENPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qKS1saW51eCcKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kCiAKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ2bXRvb2xzZC5zZXJ2aWNlIgogCkBAIC04NSw4ICs4NiwxNCBAQAogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKICAgICBsbiAtc2YgJHtzYmluZGlyfS9tb3VudC52bWhnZnMgJHtEfS9zYmluL21vdW50LnZtaGdmcwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gJHtEfSR7c3lzY29uZmRpcn0vdm13YXJlLXRvb2xzCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS8qLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3Ztd2FyZS10b29scworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS8qLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBlbHNlCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3ZtdG9vbHNkLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3ZtdG9vbHNkCisgICAgZmkKICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90b29scy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Ztd2FyZS10b29scy90b29scy5jb25mCiB9CiAKQEAgLTk1LDYgKzEwMiwxMCBAQAogICAgIGV4cG9ydCBDVVNUT01fRE5FVF9MSUJTPS1MJHtTVEFHSU5HX0xJQkRJUn0vbGliZG5ldC5zbwogfQogCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59IgorSU5JVFNDUklQVF9OQU1FXyR7UE59ID0gInZtdG9vbHNkIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0gPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKKwogcHl0aG9uKCkgewogICAgIGlmICduZXR3b3JraW5nLWxheWVyJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCkgb3IgXAogCSdmaWxlc3lzdGVtcy1sYXllcicgbm90IGluIGQuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnKS5zcGxpdCgpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Qvb3BlbmN0XzAuNi4yMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN0L29wZW5jdF8wLjYuMjAuYmIKaW5kZXggYzdkNzIwMy4uOTEzMjkwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Qvb3BlbmN0XzAuNi4yMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdC9vcGVuY3RfMC42LjIwLmJiCkBAIC0yNSw3ICsyNSw3IEBACiBMSUNFTlNFID0gIkxHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MR1BMLTIuMTttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCiAKLWluaGVyaXQgJHtAYmIudXRpbHMuZmlsdGVyKCdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyJywgJ3N5c3RlbWQnLCBkKX0KK2luaGVyaXQgc3lzdGVtZAogU1lTVEVNRF9TRVJWSUNFXyR7UE59ICs9ICJvcGVuY3Quc2VydmljZSAiCiBTWVNURU1EX0FVVE9fRU5BQkxFID0gImVuYWJsZSIKIApAQCAtNzcsMTAgKzc3LDggQEAKICAgICBpbnN0YWxsIC1EcG0gNzU1ICR7V09SS0RJUn0vb3BlbmN0LmluaXQgJHtEfS9ldGMvaW5pdC5kL29wZW5jdAogICAgIGluc3RhbGwgLURwbSA2NDQgJHtXT1JLRElSfS9vcGVuY3Quc3lzY29uZmlnICR7RH0vZXRjL3N5c2NvbmZpZy9vcGVuY3QKIAotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVuY3Quc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBmaQorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVuY3Quc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KIAogICAgIHNvPSQoZmluZCAke0R9IC1uYW1lIFwqLnNvIHwgc2VkICJzfF4ke0R9fHwiKQogICAgIHNlZCAtaSAtZSAnc3xcXChMSUJQQVRIXFxzKlxcKS4qfFxcMSRzb3wnIGV0Yy9yZWFkZXIuY29uZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L2FscmVhZHktZXhpc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L2FscmVhZHktZXhpc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMjRmMmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvYWxyZWFkeS1leGlzdHMucGF0Y2gKQEAgLTAsMCArMSwzOTQgQEAKK0Zyb20gZTRiZjE0OGNkZGYyNzc4MzRlNTdjOWFmZWVjOGRhZmY4Mzc4YTY1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMiBOb3YgMjAxNyAxNToyNzowNyArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXg6IEZpbGUgYWxyZWFkeSBleGlzdHMgaW4gZGF0YWJhc2U6IGNhZmZlLnByb3RvCisKK0ZpeGVzIGVycm9yIHdoZW4gaW1wb3J0aW5nIHB5dGhvbiBjdgorCitVcHN0cmVhbS1zdGF0dXM6IEJhY2twb3J0IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L3B1bGwvMTAwOTIKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgorLS0tCisgbW9kdWxlcy9kbm4vQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNiArKystLS0KKyBtb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW1wb3J0ZXIuY3BwICAgICAgICAgICAgICAgICAgfCAxIC0KKyBtb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uY3BwICAgICAgICAgICAgICAgICAgICAgICAgfCAxIC0KKyBtb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbW9kdWxlcy9kbm4vc3JjL2NhZmZlL3tjYWZmZS5wcm90byA9PiBvcGVuY3YtY2FmZmUucHJvdG99IHwgMAorIDUgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorIHJlbmFtZSBtb2R1bGVzL2Rubi9zcmMvY2FmZmUve2NhZmZlLnByb3RvID0+IG9wZW5jdi1jYWZmZS5wcm90b30gKDEwMCUpCisKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9DTWFrZUxpc3RzLnR4dCBiL21vZHVsZXMvZG5uL0NNYWtlTGlzdHMudHh0CitpbmRleCBjNjMyOWE3NDIyNjMuLjhlZjAwZWY5ODNmZiAxMDA2NDQKKy0tLSBhL21vZHVsZXMvZG5uL0NNYWtlTGlzdHMudHh0CisrKysgYi9tb2R1bGVzL2Rubi9DTWFrZUxpc3RzLnR4dAorQEAgLTU1LDEzICs1NSwxMyBAQCBvY3Zfd2FybmluZ3NfZGlzYWJsZShDTUFLRV9DWFhfRkxBR1MKKyAKKyBpZihQUk9UT0JVRl9VUERBVEVfRklMRVMpCisgICBmaWxlKEdMT0IgcHJvdG9fZmlsZXMgc3JjL3RlbnNvcmZsb3cvKi5wcm90bykKKy0gIGxpc3QoQVBQRU5EIHByb3RvX2ZpbGVzIHNyYy9jYWZmZS9jYWZmZS5wcm90bykKKysgIGxpc3QoQVBQRU5EIHByb3RvX2ZpbGVzIHNyYy9jYWZmZS9vcGVuY3YtY2FmZmUucHJvdG8pCisgICBQUk9UT0JVRl9HRU5FUkFURV9DUFAoUHJvdG9idWZfSERSUyBQcm90b2J1Zl9TUkNTICR7cHJvdG9fZmlsZXN9KQorIGVsc2UoKQorICAgZmlsZShHTE9CIGZ3X3NyY3MgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L21pc2MvdGVuc29yZmxvdy8qLmNjKQorICAgZmlsZShHTE9CIGZ3X2hkcnMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L21pc2MvdGVuc29yZmxvdy8qLmgpCistICBsaXN0KEFQUEVORCBmd19zcmNzICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9taXNjL2NhZmZlL2NhZmZlLnBiLmNjKQorLSAgbGlzdChBUFBFTkQgZndfaGRycyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbWlzYy9jYWZmZS9jYWZmZS5wYi5oKQorKyAgbGlzdChBUFBFTkQgZndfc3JjcyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbWlzYy9jYWZmZS9vcGVuY3YtY2FmZmUucGIuY2MpCisrICBsaXN0KEFQUEVORCBmd19oZHJzICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9taXNjL2NhZmZlL29wZW5jdi1jYWZmZS5wYi5oKQorICAgbGlzdChBUFBFTkQgUHJvdG9idWZfU1JDUyAke2Z3X3NyY3N9KQorICAgbGlzdChBUFBFTkQgUHJvdG9idWZfSERSUyAke2Z3X2hkcnN9KQorICAgbGlzdChBUFBFTkQgUHJvdG9idWZfSU5DTFVERV9ESVJTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9taXNjL2NhZmZlKQorZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pbXBvcnRlci5jcHAgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW1wb3J0ZXIuY3BwCitpbmRleCBjMDc1NjUxYjk1YjMuLjJjOTc3Yzg0YjBmNCAxMDA2NDQKKy0tLSBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pbXBvcnRlci5jcHAKKysrKyBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pbXBvcnRlci5jcHAKK0BAIC00Miw3ICs0Miw2IEBACisgI2luY2x1ZGUgIi4uL3ByZWNvbXAuaHBwIgorIAorICNpZmRlZiBIQVZFX1BST1RPQlVGCistI2luY2x1ZGUgImNhZmZlLnBiLmgiCisgCisgI2luY2x1ZGUgPGlvc3RyZWFtPgorICNpbmNsdWRlIDxmc3RyZWFtPgorZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5jcHAgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uY3BwCitpbmRleCAwZjQ2ZWE3N2RmOWEuLjFkM2M1MThmMTMyOCAxMDA2NDQKKy0tLSBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5jcHAKKysrKyBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5jcHAKK0BAIC05OSw3ICs5OSw2IEBACisgI2luY2x1ZGUgPGZzdHJlYW0+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKKy0jaW5jbHVkZSAiY2FmZmUucGIuaCIKKyAjaW5jbHVkZSAiY2FmZmVfaW8uaHBwIgorICNpbmNsdWRlICJnbG9nX2VtdWxhdG9yLmhwcCIKKyAKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmhwcAoraW5kZXggMDliYzU3MDlhMjRlLi5mNTkxMmMzYmNlYzEgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwCisrKysgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwCitAQCAtOTEsNyArOTEsNyBAQAorICNkZWZpbmUgX19PUEVOQ1ZfRE5OX0NBRkZFX0lPX0hQUF9fCisgI2lmZGVmIEhBVkVfUFJPVE9CVUYKKyAKKy0jaW5jbHVkZSAiY2FmZmUucGIuaCIKKysjaW5jbHVkZSAib3BlbmN2LWNhZmZlLnBiLmgiCisgCisgbmFtZXNwYWNlIGN2IHsKKyBuYW1lc3BhY2UgZG5uIHsKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmUucHJvdG8gYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvb3BlbmN2LWNhZmZlLnByb3RvCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIG1vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZS5wcm90bworcmVuYW1lIHRvIG1vZHVsZXMvZG5uL3NyYy9jYWZmZS9vcGVuY3YtY2FmZmUucHJvdG8KK2RpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9zcmMvbGF5ZXJzL2RldGVjdGlvbl9vdXRwdXRfbGF5ZXIuY3BwIGIvbW9kdWxlcy9kbm4vc3JjL2xheWVycy9kZXRlY3Rpb25fb3V0cHV0X2xheWVyLmNwcAoraW5kZXggMGI3MjMyNmY3ZTdkLi5mNDEzYmFkNWI4MWEgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2Rubi9zcmMvbGF5ZXJzL2RldGVjdGlvbl9vdXRwdXRfbGF5ZXIuY3BwCisrKysgYi9tb2R1bGVzL2Rubi9zcmMvbGF5ZXJzL2RldGVjdGlvbl9vdXRwdXRfbGF5ZXIuY3BwCitAQCAtNDQsNyArNDQsNyBAQAorICNpbmNsdWRlICJsYXllcnNfY29tbW9uLmhwcCIKKyAjaW5jbHVkZSA8ZmxvYXQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nPgorLSNpbmNsdWRlIDxjYWZmZS5wYi5oPgorKyNpbmNsdWRlIDxvcGVuY3YtY2FmZmUucGIuaD4KKyAKKyBuYW1lc3BhY2UgY3YKKyB7CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2ltcG9ydGVyLmNwcCBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pbXBvcnRlci5jcHAKK2luZGV4IDJjOTc3Yzg0YjBmNC4uYTE4MjdhMzgxMTE3IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2ltcG9ydGVyLmNwcAorKysrIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2ltcG9ydGVyLmNwcAorQEAgLTc4LDggKzc4LDggQEAgc3RhdGljIGN2OjpTdHJpbmcgdG9TdHJpbmcoY29uc3QgVCAmdikKKyAKKyBjbGFzcyBDYWZmZUltcG9ydGVyIDogcHVibGljIEltcG9ydGVyCisgeworLSAgICBjYWZmZTo6TmV0UGFyYW1ldGVyIG5ldDsKKy0gICAgY2FmZmU6Ok5ldFBhcmFtZXRlciBuZXRCaW5hcnk7CisrICAgIG9wZW5jdmNhZmZlOjpOZXRQYXJhbWV0ZXIgbmV0OworKyAgICBvcGVuY3ZjYWZmZTo6TmV0UGFyYW1ldGVyIG5ldEJpbmFyeTsKKyAKKyBwdWJsaWM6CisgCitAQCAtMTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICB2b2lkIGJsb2JTaGFwZUZyb21Qcm90byhjb25zdCBjYWZmZTo6QmxvYlByb3RvICZwYkJsb2IsIE1hdFNoYXBlJiBzaGFwZSkKKysgICAgdm9pZCBibG9iU2hhcGVGcm9tUHJvdG8oY29uc3Qgb3BlbmN2Y2FmZmU6OkJsb2JQcm90byAmcGJCbG9iLCBNYXRTaGFwZSYgc2hhcGUpCisgICAgIHsKKyAgICAgICAgIHNoYXBlLmNsZWFyKCk7CisgICAgICAgICBpZiAocGJCbG9iLmhhc19udW0oKSB8fCBwYkJsb2IuaGFzX2NoYW5uZWxzKCkgfHwgcGJCbG9iLmhhc19oZWlnaHQoKSB8fCBwYkJsb2IuaGFzX3dpZHRoKCkpCitAQCAtMjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UgaWYgKHBiQmxvYi5oYXNfc2hhcGUoKSkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBjb25zdCBjYWZmZTo6QmxvYlNoYXBlICZfc2hhcGUgPSBwYkJsb2Iuc2hhcGUoKTsKKysgICAgICAgICAgICBjb25zdCBvcGVuY3ZjYWZmZTo6QmxvYlNoYXBlICZfc2hhcGUgPSBwYkJsb2Iuc2hhcGUoKTsKKyAKKyAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IF9zaGFwZS5kaW1fc2l6ZSgpOyBpKyspCisgICAgICAgICAgICAgICAgIHNoYXBlLnB1c2hfYmFjaygoaW50KV9zaGFwZS5kaW0oaSkpOworQEAgLTIxOCw3ICsyMTgsNyBAQCBwdWJsaWM6CisgICAgICAgICAgICAgQ1ZfRXJyb3IoRXJyb3I6OlN0c0Vycm9yLCAiVW5rbm93biBzaGFwZSBvZiBpbnB1dCBibG9iIik7CisgICAgIH0KKyAKKy0gICAgdm9pZCBibG9iRnJvbVByb3RvKGNvbnN0IGNhZmZlOjpCbG9iUHJvdG8gJnBiQmxvYiwgY3Y6Ok1hdCAmZHN0QmxvYikKKysgICAgdm9pZCBibG9iRnJvbVByb3RvKGNvbnN0IG9wZW5jdmNhZmZlOjpCbG9iUHJvdG8gJnBiQmxvYiwgY3Y6Ok1hdCAmZHN0QmxvYikKKyAgICAgeworICAgICAgICAgTWF0U2hhcGUgc2hhcGU7CisgICAgICAgICBibG9iU2hhcGVGcm9tUHJvdG8ocGJCbG9iLCBzaGFwZSk7CitAQCAtMjMzLDcgKzIzMyw3IEBAIHB1YmxpYzoKKyAgICAgICAgICAgICBkc3REYXRhW2ldID0gcGJCbG9iLmRhdGEoaSk7CisgICAgIH0KKyAKKy0gICAgdm9pZCBleHRyYWN0QmluYXJ5TGF5ZXJQYXJtcyhjb25zdCBjYWZmZTo6TGF5ZXJQYXJhbWV0ZXImIGxheWVyLCBMYXllclBhcmFtcyYgbGF5ZXJQYXJhbXMpCisrICAgIHZvaWQgZXh0cmFjdEJpbmFyeUxheWVyUGFybXMoY29uc3Qgb3BlbmN2Y2FmZmU6OkxheWVyUGFyYW1ldGVyJiBsYXllciwgTGF5ZXJQYXJhbXMmIGxheWVyUGFyYW1zKQorICAgICB7CisgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSA9IGxheWVyLm5hbWUoKTsKKyAKK0BAIC0yNDcsNyArMjQ3LDcgQEAgcHVibGljOgorICAgICAgICAgaWYgKGxpID09IG5ldEJpbmFyeS5sYXllcl9zaXplKCkgfHwgbmV0QmluYXJ5LmxheWVyKGxpKS5ibG9ic19zaXplKCkgPT0gMCkKKyAgICAgICAgICAgICByZXR1cm47CisgCistICAgICAgICBjb25zdCBjYWZmZTo6TGF5ZXJQYXJhbWV0ZXIgJmJpbkxheWVyID0gbmV0QmluYXJ5LmxheWVyKGxpKTsKKysgICAgICAgIGNvbnN0IG9wZW5jdmNhZmZlOjpMYXllclBhcmFtZXRlciAmYmluTGF5ZXIgPSBuZXRCaW5hcnkubGF5ZXIobGkpOworICAgICAgICAgbGF5ZXJQYXJhbXMuYmxvYnMucmVzaXplKGJpbkxheWVyLmJsb2JzX3NpemUoKSk7CisgICAgICAgICBmb3IgKGludCBiaSA9IDA7IGJpIDwgYmluTGF5ZXIuYmxvYnNfc2l6ZSgpOyBiaSsrKQorICAgICAgICAgeworQEAgLTI4OSw3ICsyODksNyBAQCBwdWJsaWM6CisgCisgICAgICAgICBmb3IgKGludCBsaSA9IDA7IGxpIDwgbGF5ZXJzU2l6ZTsgbGkrKykKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBjb25zdCBjYWZmZTo6TGF5ZXJQYXJhbWV0ZXIgJmxheWVyID0gbmV0LmxheWVyKGxpKTsKKysgICAgICAgICAgICBjb25zdCBvcGVuY3ZjYWZmZTo6TGF5ZXJQYXJhbWV0ZXIgJmxheWVyID0gbmV0LmxheWVyKGxpKTsKKyAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IGxheWVyLm5hbWUoKTsKKyAgICAgICAgICAgICBTdHJpbmcgdHlwZSA9IGxheWVyLnR5cGUoKTsKKyAgICAgICAgICAgICBMYXllclBhcmFtcyBsYXllclBhcmFtczsKK0BAIC0zMTMsNyArMzEzLDcgQEAgcHVibGljOgorICAgICAgICAgYWRkZWRCbG9icy5jbGVhcigpOworICAgICB9CisgCistICAgIHZvaWQgYWRkT3V0cHV0KGNvbnN0IGNhZmZlOjpMYXllclBhcmFtZXRlciAmbGF5ZXIsIGludCBsYXllcklkLCBpbnQgb3V0TnVtKQorKyAgICB2b2lkIGFkZE91dHB1dChjb25zdCBvcGVuY3ZjYWZmZTo6TGF5ZXJQYXJhbWV0ZXIgJmxheWVyLCBpbnQgbGF5ZXJJZCwgaW50IG91dE51bSkKKyAgICAgeworICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUgPSBsYXllci50b3Aob3V0TnVtKTsKKyAKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmhwcAoraW5kZXggZjU5MTJjM2JjZWMxLi4yNGNkNWZhMjU0ZWIgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwCisrKysgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwCitAQCAtOTgsOSArOTgsOSBAQCBuYW1lc3BhY2UgZG5uIHsKKyAKKyAvLyBSZWFkIHBhcmFtZXRlcnMgZnJvbSBhIGZpbGUgaW50byBhIE5ldFBhcmFtZXRlciBwcm90byBtZXNzYWdlLgorIHZvaWQgUmVhZE5ldFBhcmFtc0Zyb21UZXh0RmlsZU9yRGllKGNvbnN0IGNoYXIqIHBhcmFtX2ZpbGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmZmU6Ok5ldFBhcmFtZXRlciogcGFyYW0pOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5jdmNhZmZlOjpOZXRQYXJhbWV0ZXIqIHBhcmFtKTsKKyB2b2lkIFJlYWROZXRQYXJhbXNGcm9tQmluYXJ5RmlsZU9yRGllKGNvbnN0IGNoYXIqIHBhcmFtX2ZpbGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWZmZTo6TmV0UGFyYW1ldGVyKiBwYXJhbSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuY3ZjYWZmZTo6TmV0UGFyYW1ldGVyKiBwYXJhbSk7CisgCisgfQorIH0KK2RpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvb3BlbmN2LWNhZmZlLnByb3RvIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL29wZW5jdi1jYWZmZS5wcm90bworaW5kZXggM2QyM2ZiNDhlYTZhLi5kZjRlMWQzMjY5YWUgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvb3BlbmN2LWNhZmZlLnByb3RvCisrKysgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvb3BlbmN2LWNhZmZlLnByb3RvCitAQCAtNDgsNyArNDgsNyBAQAorIAorIHN5bnRheCA9ICJwcm90bzIiOworIAorLXBhY2thZ2UgY2FmZmU7CisrcGFja2FnZSBvcGVuY3ZjYWZmZTsKKyAKKyAvLyBTcGVjaWZpZXMgdGhlIHNoYXBlIChkaW1lbnNpb25zKSBvZiBhIEJsb2IuCisgbWVzc2FnZSBCbG9iU2hhcGUgeworZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL3NyYy9sYXllcnMvZGV0ZWN0aW9uX291dHB1dF9sYXllci5jcHAgYi9tb2R1bGVzL2Rubi9zcmMvbGF5ZXJzL2RldGVjdGlvbl9vdXRwdXRfbGF5ZXIuY3BwCitpbmRleCBmNDEzYmFkNWI4MWEuLjgzMmMyNTdlZWJmOSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvZG5uL3NyYy9sYXllcnMvZGV0ZWN0aW9uX291dHB1dF9sYXllci5jcHAKKysrKyBiL21vZHVsZXMvZG5uL3NyYy9sYXllcnMvZGV0ZWN0aW9uX291dHB1dF9sYXllci5jcHAKK0BAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKKyAKKyAgICAgaW50IF9iYWNrZ3JvdW5kTGFiZWxJZDsKKyAKKy0gICAgdHlwZWRlZiBjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGUgQ29kZVR5cGU7CisrICAgIHR5cGVkZWYgb3BlbmN2Y2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlIENvZGVUeXBlOworICAgICBDb2RlVHlwZSBfY29kZVR5cGU7CisgCisgICAgIGJvb2wgX3ZhcmlhbmNlRW5jb2RlZEluVGFyZ2V0OworQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgorICAgICBlbnVtIHsgX251bUF4ZXMgPSA0IH07CisgICAgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBfbGF5ZXJOYW1lOworIAorLSAgICB0eXBlZGVmIHN0ZDo6bWFwPGludCwgc3RkOjp2ZWN0b3I8Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiA+IExhYmVsQkJveDsKKysgICAgdHlwZWRlZiBzdGQ6Om1hcDxpbnQsIHN0ZDo6dmVjdG9yPG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveD4gPiBMYWJlbEJCb3g7CisgCisgICAgIGJvb2wgZ2V0UGFyYW1ldGVyRGljdChjb25zdCBMYXllclBhcmFtcyAmcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBhcmFtZXRlck5hbWUsCitAQCAtMTMxLDExICsxMzEsMTEgQEAgcHVibGljOgorICAgICB7CisgICAgICAgICBTdHJpbmcgY29kZVR5cGVTdHJpbmcgPSBwYXJhbXMuZ2V0PFN0cmluZz4oImNvZGVfdHlwZSIpLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICBpZiAoY29kZVR5cGVTdHJpbmcgPT0gImNvcm5lciIpCistICAgICAgICAgICAgX2NvZGVUeXBlID0gY2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlX0NPUk5FUjsKKysgICAgICAgICAgICBfY29kZVR5cGUgPSBvcGVuY3ZjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGVfQ09STkVSOworICAgICAgICAgZWxzZSBpZiAoY29kZVR5cGVTdHJpbmcgPT0gImNlbnRlcl9zaXplIikKKy0gICAgICAgICAgICBfY29kZVR5cGUgPSBjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGVfQ0VOVEVSX1NJWkU7CisrICAgICAgICAgICAgX2NvZGVUeXBlID0gb3BlbmN2Y2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlX0NFTlRFUl9TSVpFOworICAgICAgICAgZWxzZQorLSAgICAgICAgICAgIF9jb2RlVHlwZSA9IGNhZmZlOjpQcmlvckJveFBhcmFtZXRlcl9Db2RlVHlwZV9DT1JORVI7CisrICAgICAgICAgICAgX2NvZGVUeXBlID0gb3BlbmN2Y2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlX0NPUk5FUjsKKyAgICAgfQorIAorICAgICBEZXRlY3Rpb25PdXRwdXRMYXllckltcGwoY29uc3QgTGF5ZXJQYXJhbXMgJnBhcmFtcykKK0BAIC0yMTUsNyArMjE1LDcgQEAgcHVibGljOgorICAgICAgICAgICAgIEdldENvbmZpZGVuY2VTY29yZXMoY29uZmlkZW5jZURhdGEsIG51bSwgbnVtUHJpb3JzLCBfbnVtQ2xhc3NlcywgYWxsQ29uZmlkZW5jZVNjb3Jlcyk7CisgCisgICAgICAgICAgICAgLy8gUmV0cmlldmUgYWxsIHByaW9yIGJib3hlcworLSAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGNhZmZlOjpOb3JtYWxpemVkQkJveD4gcHJpb3JCQm94ZXM7CisrICAgICAgICAgICAgc3RkOjp2ZWN0b3I8b3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiBwcmlvckJCb3hlczsKKyAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4gPiBwcmlvclZhcmlhbmNlczsKKyAgICAgICAgICAgICBHZXRQcmlvckJCb3hlcyhwcmlvckRhdGEsIG51bVByaW9ycywgcHJpb3JCQm94ZXMsIHByaW9yVmFyaWFuY2VzKTsKKyAKK0BAIC0yNzIsNyArMjcyLDcgQEAgcHVibGljOgorICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgaW5kaWNlcy5zaXplKCk7ICsraiwgKytjb3VudCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGludCBpZHggPSBpbmRpY2VzW2pdOworLSAgICAgICAgICAgICAgICBjb25zdCBjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGRlY29kZV9iYm94ID0gbGFiZWxfYmJveGVzLT5zZWNvbmRbaWR4XTsKKysgICAgICAgICAgICAgICAgY29uc3Qgb3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBkZWNvZGVfYmJveCA9IGxhYmVsX2Jib3hlcy0+c2Vjb25kW2lkeF07CisgICAgICAgICAgICAgICAgIG91dHB1dHNEYXRhW2NvdW50ICogN10gPSBpOworICAgICAgICAgICAgICAgICBvdXRwdXRzRGF0YVtjb3VudCAqIDcgKyAxXSA9IGxhYmVsOworICAgICAgICAgICAgICAgICBvdXRwdXRzRGF0YVtjb3VudCAqIDcgKyAyXSA9IHNjb3Jlc1tpZHhdOworQEAgLTM1NSw3ICszNTUsNyBAQCBwdWJsaWM6CisgCisgICAgIC8vIENvbXB1dGUgYmJveCBzaXplCisgICAgIHRlbXBsYXRlPGJvb2wgbm9ybWFsaXplZD4KKy0gICAgc3RhdGljIGZsb2F0IEJCb3hTaXplKGNvbnN0IGNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveCkKKysgICAgc3RhdGljIGZsb2F0IEJCb3hTaXplKGNvbnN0IG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveCkKKyAgICAgeworICAgICAgICAgaWYgKGJib3gueG1heCgpIDwgYmJveC54bWluKCkgfHwgYmJveC55bWF4KCkgPCBiYm94LnltaW4oKSkKKyAgICAgICAgIHsKK0BAIC0zODgsMTAgKzM4OCwxMCBAQCBwdWJsaWM6CisgICAgIC8vIERlY29kZSBhIGJib3ggYWNjb3JkaW5nIHRvIGEgcHJpb3IgYmJveAorICAgICB0ZW1wbGF0ZTxib29sIHZhcmlhbmNlX2VuY29kZWRfaW5fdGFyZ2V0PgorICAgICBzdGF0aWMgdm9pZCBEZWNvZGVCQm94KAorLSAgICAgICAgY29uc3QgY2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBwcmlvcl9iYm94LCBjb25zdCBzdGQ6OnZlY3RvcjxmbG9hdD4mIHByaW9yX3ZhcmlhbmNlLAorKyAgICAgICAgY29uc3Qgb3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBwcmlvcl9iYm94LCBjb25zdCBzdGQ6OnZlY3RvcjxmbG9hdD4mIHByaW9yX3ZhcmlhbmNlLAorICAgICAgICAgY29uc3QgQ29kZVR5cGUgY29kZV90eXBlLAorLSAgICAgICAgY29uc3QgYm9vbCBjbGlwX2Jib3gsIGNvbnN0IGNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveCwKKy0gICAgICAgIGNhZmZlOjpOb3JtYWxpemVkQkJveCYgZGVjb2RlX2Jib3gpCisrICAgICAgICBjb25zdCBib29sIGNsaXBfYmJveCwgY29uc3Qgb3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBiYm94LAorKyAgICAgICAgb3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBkZWNvZGVfYmJveCkKKyAgICAgeworICAgICAgICAgZmxvYXQgYmJveF94bWluID0gdmFyaWFuY2VfZW5jb2RlZF9pbl90YXJnZXQgPyBiYm94LnhtaW4oKSA6IHByaW9yX3ZhcmlhbmNlWzBdICogYmJveC54bWluKCk7CisgICAgICAgICBmbG9hdCBiYm94X3ltaW4gPSB2YXJpYW5jZV9lbmNvZGVkX2luX3RhcmdldCA/IGJib3gueW1pbigpIDogcHJpb3JfdmFyaWFuY2VbMV0gKiBiYm94LnltaW4oKTsKK0BAIC0zOTksMTMgKzM5OSwxMyBAQCBwdWJsaWM6CisgICAgICAgICBmbG9hdCBiYm94X3ltYXggPSB2YXJpYW5jZV9lbmNvZGVkX2luX3RhcmdldCA/IGJib3gueW1heCgpIDogcHJpb3JfdmFyaWFuY2VbM10gKiBiYm94LnltYXgoKTsKKyAgICAgICAgIHN3aXRjaChjb2RlX3R5cGUpCisgICAgICAgICB7CistICAgICAgICAgICAgY2FzZSBjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGVfQ09STkVSOgorKyAgICAgICAgICAgIGNhc2Ugb3BlbmN2Y2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlX0NPUk5FUjoKKyAgICAgICAgICAgICAgICAgZGVjb2RlX2Jib3guc2V0X3htaW4ocHJpb3JfYmJveC54bWluKCkgKyBiYm94X3htaW4pOworICAgICAgICAgICAgICAgICBkZWNvZGVfYmJveC5zZXRfeW1pbihwcmlvcl9iYm94LnltaW4oKSArIGJib3hfeW1pbik7CisgICAgICAgICAgICAgICAgIGRlY29kZV9iYm94LnNldF94bWF4KHByaW9yX2Jib3gueG1heCgpICsgYmJveF94bWF4KTsKKyAgICAgICAgICAgICAgICAgZGVjb2RlX2Jib3guc2V0X3ltYXgocHJpb3JfYmJveC55bWF4KCkgKyBiYm94X3ltYXgpOworICAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICBjYXNlIGNhZmZlOjpQcmlvckJveFBhcmFtZXRlcl9Db2RlVHlwZV9DRU5URVJfU0laRToKKysgICAgICAgICAgICBjYXNlIG9wZW5jdmNhZmZlOjpQcmlvckJveFBhcmFtZXRlcl9Db2RlVHlwZV9DRU5URVJfU0laRToKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGZsb2F0IHByaW9yX3dpZHRoID0gcHJpb3JfYmJveC54bWF4KCkgLSBwcmlvcl9iYm94LnhtaW4oKTsKKyAgICAgICAgICAgICAgICAgQ1ZfQXNzZXJ0KHByaW9yX3dpZHRoID4gMCk7CitAQCAtNDMxLDcgKzQzMSw3IEBAIHB1YmxpYzoKKyAgICAgICAgIH07CisgICAgICAgICBpZiAoY2xpcF9iYm94KQorICAgICAgICAgeworLSAgICAgICAgICAgIC8vIENsaXAgdGhlIGNhZmZlOjpOb3JtYWxpemVkQkJveCBzdWNoIHRoYXQgdGhlIHJhbmdlIGZvciBlYWNoIGNvcm5lciBpcyBbMCwgMV0KKysgICAgICAgICAgICAvLyBDbGlwIHRoZSBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3ggc3VjaCB0aGF0IHRoZSByYW5nZSBmb3IgZWFjaCBjb3JuZXIgaXMgWzAsIDFdCisgICAgICAgICAgICAgZGVjb2RlX2Jib3guc2V0X3htaW4oc3RkOjptYXgoc3RkOjptaW4oZGVjb2RlX2Jib3gueG1pbigpLCAxLmYpLCAwLmYpKTsKKyAgICAgICAgICAgICBkZWNvZGVfYmJveC5zZXRfeW1pbihzdGQ6Om1heChzdGQ6Om1pbihkZWNvZGVfYmJveC55bWluKCksIDEuZiksIDAuZikpOworICAgICAgICAgICAgIGRlY29kZV9iYm94LnNldF94bWF4KHN0ZDo6bWF4KHN0ZDo6bWluKGRlY29kZV9iYm94LnhtYXgoKSwgMS5mKSwgMC5mKSk7CitAQCAtNDQzLDExICs0NDMsMTEgQEAgcHVibGljOgorIAorICAgICAvLyBEZWNvZGUgYSBzZXQgb2YgYmJveGVzIGFjY29yZGluZyB0byBhIHNldCBvZiBwcmlvciBiYm94ZXMKKyAgICAgc3RhdGljIHZvaWQgRGVjb2RlQkJveGVzKAorLSAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgcHJpb3JfYmJveGVzLAorKyAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8b3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgcHJpb3JfYmJveGVzLAorICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+ID4mIHByaW9yX3ZhcmlhbmNlcywKKyAgICAgICAgIGNvbnN0IENvZGVUeXBlIGNvZGVfdHlwZSwgY29uc3QgYm9vbCB2YXJpYW5jZV9lbmNvZGVkX2luX3RhcmdldCwKKy0gICAgICAgIGNvbnN0IGJvb2wgY2xpcF9iYm94LCBjb25zdCBzdGQ6OnZlY3RvcjxjYWZmZTo6Tm9ybWFsaXplZEJCb3g+JiBiYm94ZXMsCistICAgICAgICBzdGQ6OnZlY3RvcjxjYWZmZTo6Tm9ybWFsaXplZEJCb3g+JiBkZWNvZGVfYmJveGVzKQorKyAgICAgICAgY29uc3QgYm9vbCBjbGlwX2Jib3gsIGNvbnN0IHN0ZDo6dmVjdG9yPG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveD4mIGJib3hlcywKKysgICAgICAgIHN0ZDo6dmVjdG9yPG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveD4mIGRlY29kZV9iYm94ZXMpCisgICAgIHsKKyAgICAgICAgIENWX0Fzc2VydChwcmlvcl9iYm94ZXMuc2l6ZSgpID09IHByaW9yX3ZhcmlhbmNlcy5zaXplKCkpOworICAgICAgICAgQ1ZfQXNzZXJ0KHByaW9yX2Jib3hlcy5zaXplKCkgPT0gYmJveGVzLnNpemUoKSk7CitAQCAtNDcwLDcgKzQ3MCw3IEBAIHB1YmxpYzoKKyAKKyAgICAgLy8gRGVjb2RlIGFsbCBiYm94ZXMgaW4gYSBiYXRjaAorICAgICBzdGF0aWMgdm9pZCBEZWNvZGVCQm94ZXNBbGwoY29uc3Qgc3RkOjp2ZWN0b3I8TGFiZWxCQm94PiYgYWxsX2xvY19wcmVkcywKKy0gICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNhZmZlOjpOb3JtYWxpemVkQkJveD4mIHByaW9yX2Jib3hlcywKKysgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveD4mIHByaW9yX2Jib3hlcywKKyAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0PiA+JiBwcmlvcl92YXJpYW5jZXMsCisgICAgICAgICBjb25zdCBpbnQgbnVtLCBjb25zdCBib29sIHNoYXJlX2xvY2F0aW9uLAorICAgICAgICAgY29uc3QgaW50IG51bV9sb2NfY2xhc3NlcywgY29uc3QgaW50IGJhY2tncm91bmRfbGFiZWxfaWQsCitAQCAtNTAzLDEwICs1MDMsMTAgQEAgcHVibGljOgorICAgICAvLyBHZXQgcHJpb3IgYm91bmRpbmcgYm94ZXMgZnJvbSBwcmlvcl9kYXRhCisgICAgIC8vICAgIHByaW9yX2RhdGE6IDEgeCAyIHggbnVtX3ByaW9ycyAqIDQgeCAxIGJsb2IuCisgICAgIC8vICAgIG51bV9wcmlvcnM6IG51bWJlciBvZiBwcmlvcnMuCistICAgIC8vICAgIHByaW9yX2Jib3hlczogc3RvcmVzIGFsbCB0aGUgcHJpb3IgYmJveGVzIGluIHRoZSBmb3JtYXQgb2YgY2FmZmU6Ok5vcm1hbGl6ZWRCQm94LgorKyAgICAvLyAgICBwcmlvcl9iYm94ZXM6IHN0b3JlcyBhbGwgdGhlIHByaW9yIGJib3hlcyBpbiB0aGUgZm9ybWF0IG9mIG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveC4KKyAgICAgLy8gICAgcHJpb3JfdmFyaWFuY2VzOiBzdG9yZXMgYWxsIHRoZSB2YXJpYW5jZXMgbmVlZGVkIGJ5IHByaW9yIGJib3hlcy4KKyAgICAgc3RhdGljIHZvaWQgR2V0UHJpb3JCQm94ZXMoY29uc3QgZmxvYXQqIHByaW9yRGF0YSwgY29uc3QgaW50JiBudW1QcmlvcnMsCistICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgcHJpb3JCQm94ZXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8b3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgcHJpb3JCQm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+ID4mIHByaW9yVmFyaWFuY2VzKQorICAgICB7CisgICAgICAgICBwcmlvckJCb3hlcy5jbGVhcigpOyBwcmlvckJCb3hlcy5yZXNpemUobnVtUHJpb3JzKTsKK0BAIC01MTQsNyArNTE0LDcgQEAgcHVibGljOgorICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QcmlvcnM7ICsraSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnQgc3RhcnRJZHggPSBpICogNDsKKy0gICAgICAgICAgICBjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGJib3ggPSBwcmlvckJCb3hlc1tpXTsKKysgICAgICAgICAgICBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGJib3ggPSBwcmlvckJCb3hlc1tpXTsKKyAgICAgICAgICAgICBiYm94LnNldF94bWluKHByaW9yRGF0YVtzdGFydElkeF0pOworICAgICAgICAgICAgIGJib3guc2V0X3ltaW4ocHJpb3JEYXRhW3N0YXJ0SWR4ICsgMV0pOworICAgICAgICAgICAgIGJib3guc2V0X3htYXgocHJpb3JEYXRhW3N0YXJ0SWR4ICsgMl0pOworQEAgLTU2NSw3ICs1NjUsNyBAQCBwdWJsaWM6CisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxCQm94W2xhYmVsXS5yZXNpemUobnVtUHJlZHNQZXJDbGFzcyk7CisgICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICBjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGJib3ggPSBsYWJlbEJCb3hbbGFiZWxdW3BdOworKyAgICAgICAgICAgICAgICAgICAgb3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBiYm94ID0gbGFiZWxCQm94W2xhYmVsXVtwXTsKKyAgICAgICAgICAgICAgICAgICAgIGJib3guc2V0X3htaW4obG9jRGF0YVtzdGFydElkeCArIGMgKiA0XSk7CisgICAgICAgICAgICAgICAgICAgICBiYm94LnNldF95bWluKGxvY0RhdGFbc3RhcnRJZHggKyBjICogNCArIDFdKTsKKyAgICAgICAgICAgICAgICAgICAgIGJib3guc2V0X3htYXgobG9jRGF0YVtzdGFydElkeCArIGMgKiA0ICsgMl0pOworQEAgLTYxMiw3ICs2MTIsNyBAQCBwdWJsaWM6CisgICAgIC8vICAgIG5tc190aHJlc2hvbGQ6IGEgdGhyZXNob2xkIHVzZWQgaW4gbm9uIG1heGltdW0gc3VwcHJlc3Npb24uCisgICAgIC8vICAgIHRvcF9rOiBpZiBub3QgLTEsIGtlZXAgYXQgbW9zdCB0b3BfayBwaWNrZWQgaW5kaWNlcy4KKyAgICAgLy8gICAgaW5kaWNlczogdGhlIGtlcHQgaW5kaWNlcyBvZiBiYm94ZXMgYWZ0ZXIgbm1zLgorLSAgICBzdGF0aWMgdm9pZCBBcHBseU5NU0Zhc3QoY29uc3Qgc3RkOjp2ZWN0b3I8Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgYmJveGVzLAorKyAgICBzdGF0aWMgdm9pZCBBcHBseU5NU0Zhc3QoY29uc3Qgc3RkOjp2ZWN0b3I8b3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgYmJveGVzLAorICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxmbG9hdD4mIHNjb3JlcywgY29uc3QgZmxvYXQgc2NvcmVfdGhyZXNob2xkLAorICAgICAgICAgICBjb25zdCBmbG9hdCBubXNfdGhyZXNob2xkLCBjb25zdCBmbG9hdCBldGEsIGNvbnN0IGludCB0b3BfaywKKyAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiYgaW5kaWNlcykKK0BAIC02NzQsMTAgKzY3NCwxMCBAQCBwdWJsaWM6CisgCisgICAgIC8vIENvbXB1dGUgdGhlIGphY2NhcmQgKGludGVyc2VjdGlvbiBvdmVyIHVuaW9uIElvVSkgb3ZlcmxhcCBiZXR3ZWVuIHR3byBiYm94ZXMuCisgICAgIHRlbXBsYXRlPGJvb2wgbm9ybWFsaXplZD4KKy0gICAgc3RhdGljIGZsb2F0IEphY2NhcmRPdmVybGFwKGNvbnN0IGNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveDEsCistICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveDIpCisrICAgIHN0YXRpYyBmbG9hdCBKYWNjYXJkT3ZlcmxhcChjb25zdCBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGJib3gxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGJib3gyKQorICAgICB7CistICAgICAgICBjYWZmZTo6Tm9ybWFsaXplZEJCb3ggaW50ZXJzZWN0X2Jib3g7CisrICAgICAgICBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3ggaW50ZXJzZWN0X2Jib3g7CisgICAgICAgICBpZiAoYmJveDIueG1pbigpID4gYmJveDEueG1heCgpIHx8IGJib3gyLnhtYXgoKSA8IGJib3gxLnhtaW4oKSB8fAorICAgICAgICAgICAgIGJib3gyLnltaW4oKSA+IGJib3gxLnltYXgoKSB8fCBiYm94Mi55bWF4KCkgPCBiYm94MS55bWluKCkpCisgICAgICAgICB7CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmNwcCBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5jcHAKK2luZGV4IDFkM2M1MThmMTMyOC4uM2NmNmUyNTVhYTYwIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmNwcAorKysrIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmNwcAorQEAgLTEwNyw3ICsxMDcsNyBAQCBuYW1lc3BhY2UgZG5uIHsKKyAKKyB1c2luZyBzdGQ6OnN0cmluZzsKKyB1c2luZyBzdGQ6Om1hcDsKKy11c2luZyBuYW1lc3BhY2UgY2FmZmU7CisrdXNpbmcgbmFtZXNwYWNlIG9wZW5jdmNhZmZlOworIHVzaW5nIG5hbWVzcGFjZSA6Omdvb2dsZTo6cHJvdG9idWY7CisgdXNpbmcgbmFtZXNwYWNlIDo6Z29vZ2xlOjpwcm90b2J1Zjo6aW87CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvamF2YWdlbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9qYXZhZ2VuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NTI2ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvamF2YWdlbi5wYXRjaApAQCAtMCwwICsxLDE2IEBACitVcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXSBodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi9wdWxsLzEwMDM5I2lzc3VlY29tbWVudC0zNDI1MzkyODgKKworU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgorZGlmZiAtLWdpdCBhL21vZHVsZXMvamF2YS9DTWFrZUxpc3RzLnR4dCBiL21vZHVsZXMvamF2YS9DTWFrZUxpc3RzLnR4dAoraW5kZXggNzRiYzBlZjA0MTY5Li40NjIyZmJmOWE1ZjEgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2phdmEvQ01ha2VMaXN0cy50eHQKKysrKyBiL21vZHVsZXMvamF2YS9DTWFrZUxpc3RzLnR4dAorQEAgLTI5MSw3ICsyOTEsNyBAQCBmb3JlYWNoKGphdmFfZmlsZSAke3N0ZXAzX2lucHV0X2ZpbGVzfSkKKyAgIGVuZGlmKCkKKyAgIGlmKF9fY29uZmlndXJlKQorICAgICBjb25maWd1cmVfZmlsZSgiJHtqYXZhX2ZpbGV9IiAiJHtqYXZhX3NyY19kaXJ9LyR7b3V0cHV0X25hbWV9IiBAT05MWSkKKy0gIGVsc2VpZihOT1QgIiR7amF2YV9maWxlfSIgTUFUQ0hFUyAiJHtPcGVuQ1ZfQklOQVJZX0RJUn0vIikKKysgIGVsc2VpZihFWElTVFMgIiR7amF2YV9maWxlfSIgQU5EIE5PVCAiJHtqYXZhX2ZpbGV9IiBNQVRDSEVTICIke09wZW5DVl9CSU5BUllfRElSfS8iKQorICAgICBjb25maWd1cmVfZmlsZSgiJHtqYXZhX2ZpbGV9IiAiJHtqYXZhX3NyY19kaXJ9LyR7b3V0cHV0X25hbWV9IiBDT1BZT05MWSkKKyAgIGVsc2UoKQorICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICIke2phdmFfc3JjX2Rpcn0vJHtvdXRwdXRfbmFtZX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvcHJvdG9idWYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvcHJvdG9idWYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYzZGMxNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9wcm90b2J1Zi5wYXRjaApAQCAtMCwwICsxLDU3IEBACitVcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CitkaWZmIC0tZ2l0IGEvY21ha2UvT3BlbkNWRmluZExpYlByb3RvYnVmLmNtYWtlIGIvY21ha2UvT3BlbkNWRmluZExpYlByb3RvYnVmLmNtYWtlCitpbmRleCBiNmNlMWU3ZmQ1NmIuLmU5MTZlYzBkZjJhNiAxMDA2NDQKKy0tLSBhL2NtYWtlL09wZW5DVkZpbmRMaWJQcm90b2J1Zi5jbWFrZQorKysrIGIvY21ha2UvT3BlbkNWRmluZExpYlByb3RvYnVmLmNtYWtlCitAQCAtNywyMSArNywyMSBAQCBPQ1ZfT1BUSU9OKEJVSUxEX1BST1RPQlVGICJGb3JjZSB0byBidWlsZCBsaWJwcm90b2J1ZiBmcm9tIHNvdXJjZXMiIE9OKQorIE9DVl9PUFRJT04oUFJPVE9CVUZfVVBEQVRFX0ZJTEVTICJGb3JjZSB0byByZWJ1aWxkIC5wcm90byBmaWxlcyIgT0ZGKQorIAorIGlmKFBST1RPQlVGX1VQREFURV9GSUxFUykKKy0gIGlmKE5PVCBERUZJTkVEIFByb3RvYnVmX1BST1RPQ19FWEVDVVRBQkxFKQorKyAgaWYoTk9UIERFRklORUQgUFJPVE9CVUZfUFJPVE9DX0VYRUNVVEFCTEUpCisgICAgIGZpbmRfcGFja2FnZShQcm90b2J1ZiBRVUlFVCkKKyAgIGVuZGlmKCkKKy0gIGlmKERFRklORUQgUHJvdG9idWZfUFJPVE9DX0VYRUNVVEFCTEUgQU5EIEVYSVNUUyAke1Byb3RvYnVmX1BST1RPQ19FWEVDVVRBQkxFfSkKKy0gICAgbWVzc2FnZShTVEFUVVMgIlRoZSBwcm90b2NvbCBidWZmZXIgY29tcGlsZXIgaXMgZm91bmQgKCR7UHJvdG9idWZfUFJPVE9DX0VYRUNVVEFCTEV9KSIpCisrICBpZihERUZJTkVEIFBST1RPQlVGX1BST1RPQ19FWEVDVVRBQkxFIEFORCBFWElTVFMgJHtQUk9UT0JVRl9QUk9UT0NfRVhFQ1VUQUJMRX0pCisrICAgIG1lc3NhZ2UoU1RBVFVTICJUaGUgcHJvdG9jb2wgYnVmZmVyIGNvbXBpbGVyIGlzIGZvdW5kICgke1BST1RPQlVGX1BST1RPQ19FWEVDVVRBQkxFfSkiKQorICAgZWxzZSgpCistICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIlRoZSBwcm90b2NvbCBidWZmZXIgY29tcGlsZXIgaXMgbm90IGZvdW5kIChQcm90b2J1Zl9QUk9UT0NfRVhFQ1VUQUJMRT0nJHtQcm90b2J1Zl9QUk9UT0NfRVhFQ1VUQUJMRX0nKSIpCisrICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIlRoZSBwcm90b2NvbCBidWZmZXIgY29tcGlsZXIgaXMgbm90IGZvdW5kIChQUk9UT0JVRl9QUk9UT0NfRVhFQ1VUQUJMRT0nJHtQUk9UT0JVRl9QUk9UT0NfRVhFQ1VUQUJMRX0nKSIpCisgICBlbmRpZigpCisgZW5kaWYoKQorIAorLWlmKE5PVCBCVUlMRF9QUk9UT0JVRiBBTkQgTk9UIChERUZJTkVEIFByb3RvYnVmX0lOQ0xVREVfRElSUyBBTkQgREVGSU5FRCBQcm90b2J1Zl9MSUJSQVJJRVMpKQorK2lmKE5PVCBCVUlMRF9QUk9UT0JVRiBBTkQgTk9UIChERUZJTkVEIFBST1RPQlVGX0lOQ0xVREVfRElSIEFORCBERUZJTkVEIFBST1RPQlVGX0xJQlJBUklFUykpCisgICBmaW5kX3BhY2thZ2UoUHJvdG9idWYgUVVJRVQpCisgZW5kaWYoKQorIAorLWlmKFByb3RvYnVmX0ZPVU5EKQorK2lmKFBST1RPQlVGX0ZPVU5EIE9SIChERUZJTkVEIFBST1RPQlVGX0lOQ0xVREVfRElSIEFORCBERUZJTkVEIFBST1RPQlVGX0xJQlJBUklFUykpCisgICAjIG5vdGhpbmcKKyBlbHNlKCkKKyAgIHNldChQcm90b2J1Zl9MSUJSQVJJRVMgbGlicHJvdG9idWYpCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9kbm4vQ01ha2VMaXN0cy50eHQgYi9tb2R1bGVzL2Rubi9DTWFrZUxpc3RzLnR4dAoraW5kZXggMmE3MTU2OGQxYTQ0Li5jNjMyOWE3NDIyNjMgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2Rubi9DTWFrZUxpc3RzLnR4dAorKysrIGIvbW9kdWxlcy9kbm4vQ01ha2VMaXN0cy50eHQKK0BAIC03LDcgKzcsNyBAQCBpZihERUZJTkVEIEJVSUxEX29wZW5jdl9kbm4gQU5EIE5PVCBCVUlMRF9vcGVuY3ZfZG5uKQorIGVuZGlmKCkKKyAKKyBpbmNsdWRlKCR7T3BlbkNWX1NPVVJDRV9ESVJ9L2NtYWtlL09wZW5DVkZpbmRMaWJQcm90b2J1Zi5jbWFrZSkKKy1pZihOT1QgUHJvdG9idWZfRk9VTkQpCisraWYoTk9UIFBST1RPQlVGX0ZPVU5EKQorICAgb2N2X21vZHVsZV9kaXNhYmxlKG9wZW5jdl9kbm4pCisgZW5kaWYoKQorIAorQEAgLTcyLDcgKzcyLDcgQEAgb2N2X3NvdXJjZV9ncm91cCgiU3JjXFxwcm90b2J1ZiIgRklMRVMgJHtQcm90b2J1Zl9TUkNTfSAke1Byb3RvYnVmX0hEUlN9KQorIG9jdl9tb2R1bGVfaW5jbHVkZV9kaXJlY3RvcmllcyhpbmNsdWRlICR7UHJvdG9idWZfSU5DTFVERV9ESVJTfSkKKyAKKyBvY3ZfZ2xvYl9tb2R1bGVfc291cmNlcygke1Byb3RvYnVmX1NSQ1N9ICR7UHJvdG9idWZfSERSU30gJHtDQkxBU19IX1BST1hZX1BBVEh9KQorLW9jdl9jcmVhdGVfbW9kdWxlKCR7UHJvdG9idWZfTElCUkFSSUVTfSAke0xBUEFDS19MSUJSQVJJRVN9KQorK29jdl9jcmVhdGVfbW9kdWxlKCR7UFJPVE9CVUZfTElCUkFSSUVTfSAke0xBUEFDS19MSUJSQVJJRVN9KQorIG9jdl9hZGRfc2FtcGxlcygpCisgb2N2X2FkZF9hY2N1cmFjeV90ZXN0cygpCisgb2N2X2FkZF9wZXJmX3Rlc3RzKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi90aW55ZG5uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3Rpbnlkbm4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQzM2ZjMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi90aW55ZG5uLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK1Vwc3RyZWFtLXN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSA8cmljYXJkby5yaWJhbGRhQGdtYWlsLmNvbT4KK2RpZmYgLS1naXQgYS9tb2R1bGVzL2Rubl9tb2Rlcm4vQ01ha2VMaXN0cy50eHQgYi9tb2R1bGVzL2Rubl9tb2Rlcm4vQ01ha2VMaXN0cy50eHQKK2luZGV4IDc5YjY0YjEyMTYwYi4uYmEwNmEwYTE2M2U0IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9kbm5fbW9kZXJuL0NNYWtlTGlzdHMudHh0CisrKysgYi9tb2R1bGVzL2Rubl9tb2Rlcm4vQ01ha2VMaXN0cy50eHQKK0BAIC0xNSwyNCArMTUsOCBAQCBsaXN0KEFQUEVORCBDTUFLRV9NT0RVTEVfUEFUSCAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY21ha2UpCisgIyBNT0RVTEUgUkVRVUlSRU1FTlRTCisgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCistc2V0KFRJTllfRE5OX0NQUF9QQVRIICIke09wZW5DVl9CSU5BUllfRElSfS8zcmRwYXJ0eS90aW55ZG5uIikKKy1zZXQoVElOWV9ETk5fQ1BQX1JPT1QgIiR7VElOWV9ETk5fQ1BQX1BBVEh9L3RpbnktZG5uLTEuMC4wYTMiKQorLW9jdl9kb3dubG9hZChGSUxFTkFNRSAidjEuMC4wYTMudGFyLmd6IgorLSAgICAgICAgICAgICAgIEhBU0ggImFkYjFjNTEyZTA5Y2EyYzdhNmZhZWYzNmY5YzUzZTU5IgorLSAgICAgICAgICAgICAgIFVSTAorLSAgICAgICAgICAgICAgICAgIiR7T1BFTkNWX1RJTllfRE5OX1VSTH0iCistICAgICAgICAgICAgICAgICAiJEVOVntPUEVOQ1ZfVElOWV9ETk5fVVJMfSIKKy0gICAgICAgICAgICAgICAgICJodHRwczovL2dpdGh1Yi5jb20vdGlueS1kbm4vdGlueS1kbm4vYXJjaGl2ZS8iCistICAgICAgICAgICAgICAgREVTVElOQVRJT05fRElSICIke1RJTllfRE5OX0NQUF9QQVRIfSIKKy0gICAgICAgICAgICAgICBTVEFUVVMgVElOWV9ETk5fRE9XTkxPQURfU1VDQ0VTUworLSAgICAgICAgICAgICAgIElEICJ0aW55LWRubiIKKy0gICAgICAgICAgICAgICBVTlBBQ0sgUkVMQVRJVkVfVVJMKQorLQorLWlmKE5PVCBUSU5ZX0ROTl9ET1dOTE9BRF9TVUNDRVNTKQorLSAgbWVzc2FnZShTVEFUVVMgIkZhaWxlZCB0byBkb3dubG9hZCB0aW55LWRubiBzb3VyY2VzIikKKy1lbmRpZigpCistCistZmluZF9wYWNrYWdlKFRpbnlETk4gUVVJRVQpCisrc2V0KFRJTllETk5fSU5DTFVERV9ESVJTICIke09wZW5DVl9TT1VSQ0VfRElSfS8zcmRwYXJ0eS90aW55ZG5uL3RpbnktZG5uLTEuMC4wYTMiKQorK3NldChUaW55RE5OX0ZPVU5EIFRSVUUpCisgCisgaW5jbHVkZShDaGVja0NYWENvbXBpbGVyRmxhZykKKyBDSEVDS19DWFhfQ09NUElMRVJfRkxBRygiLXN0ZD1jKysxMSIgQ09NUElMRVJfU1VQUE9SVFNfQ1hYMTEpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3ZfMy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2XzMuMy5iYgppbmRleCBkZDllNGNhLi5jYTYyZGU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3ZfMy4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdl8zLjMuYmIKQEAgLTE1LDYgKzE1LDggQEAKIFNSQ1JFVl9pcHAgPSAiYTYyZTIwNjc2YTYwZWUwYWQ2NTgxZTIxN2ZlN2U0YmFkYTNiOTVkYiIKIFNSQ1JFVl9ib29zdGRlc2MgPSAiMzRlNDIwNmFlZjQ0ZDUwZTZiYmNkMGFiMDYzNTRiNTJlNzQ2NmQyNiIKIFNSQ1JFVl92Z2cgPSAiZmNjZjdjZDZhNGIxMjA3OWY3M2JiZmIyMTc0NWY5YmFiY2Q0ZWIxZCIKK1NSQ19VUklbdGlueWRubi5tZDVzdW1dID0gImFkYjFjNTEyZTA5Y2EyYzdhNmZhZWYzNmY5YzUzZTU5IgorU1JDX1VSSVt0aW55ZG5uLnNoYTI1NnN1bV0gPSAiZTJjNjFjZThjNWRlYmFhNjQ0MTIxMTc5ZTlkYmRjZjgzZjQ5N2YzOWRlODUzZjhkZDUxNzU4NDY1MDVhYTE4YiIKIAogZGVmIGlwcF9maWxlbmFtZShkKToKICAgICBpbXBvcnQgcmUKQEAgLTQxLDkgKzQzLDExIEBACiAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2XzNyZHBhcnR5LmdpdDticmFuY2g9aXBwaWN2L21hc3Rlcl8yMDE3MDQxODtkZXN0c3VmZml4PWlwcDtuYW1lPWlwcCBcCiAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2XzNyZHBhcnR5LmdpdDticmFuY2g9Y29udHJpYl94ZmVhdHVyZXMyZF9ib29zdGRlc2NfMjAxNjEwMTI7ZGVzdHN1ZmZpeD1ib29zdGRlc2M7bmFtZT1ib29zdGRlc2MgXAogICAgIGdpdDovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl8zcmRwYXJ0eS5naXQ7YnJhbmNoPWNvbnRyaWJfeGZlYXR1cmVzMmRfdmdnXzIwMTYwMzE3O2Rlc3RzdWZmaXg9dmdnO25hbWU9dmdnIFwKKyAgICBodHRwczovL2dpdGh1Yi5jb20vdGlueS1kbm4vdGlueS1kbm4vYXJjaGl2ZS92MS4wLjBhMy50YXIuZ3o7ZGVzdHN1ZmZpeD1naXQvM3JkcGFydHkvdGlueWRubi90aW55LWRubi0xLjAuMGEzO25hbWU9dGlueWRubjt1bnBhY2s9ZmFsc2UgXAogICAgIGZpbGU6Ly8wMDAxLTNyZHBhcnR5LWlwcGljdi1Vc2UtcHJlLWRvd25sb2FkZWQtaXBwLnBhdGNoIFwKICAgICBmaWxlOi8vZml4cGtnY29uZmlnLnBhdGNoIFwKICAgICBmaWxlOi8vdXNlbG9jYWx4ZmVhdHVyZXMucGF0Y2g7cGF0Y2hkaXI9Li4vY29udHJpYi8gXAorICAgIGZpbGU6Ly90aW55ZG5uLnBhdGNoO3BhdGNoZGlyPS4uL2NvbnRyaWIvIFwKICAgICBmaWxlOi8vMDAwMi1NYWtlLW9wZW5jdi10cy1jcmVhdGUtc2hhcmUtbGlicmFyeS1pbnRlYWQtb2Ytc3RhdGljLnBhdGNoIFwKICAgICBmaWxlOi8vMDAwMy1Uby1maXgtZXJyb3JzLWFzLWZvbGxvd2luZy5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDEtYnVpbGQtd29ya2Fyb3VuZC1HQ0MtNy4xLjEtY29tcGlsYXRpb24taXNzdWUtd2l0aC1zYS5wYXRjaCBcCkBAIC01MywxMiArNTcsMTcgQEAKICAgICBmaWxlOi8vMDAwMS1jYXJvdGVuZS1kb24tdC11c2UtX19hc21fXy13aXRoLWFhcmNoNjQucGF0Y2ggXAogICAgIGZpbGU6Ly8wMDAyLURvLW5vdC1lbmFibGUtYXNtLXdpdGgtY2xhbmcucGF0Y2ggXAogICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDEzNi5wYXRjaCBcCisgICAgZmlsZTovL2phdmFnZW4ucGF0Y2ggXAorICAgIGZpbGU6Ly9wcm90b2J1Zi5wYXRjaCBcCisgICAgZmlsZTovL2FscmVhZHktZXhpc3RzLnBhdGNoIFwKICIKIFBWID0gIjMuMytnaXQke1NSQ1BWfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogZG9fdW5wYWNrX2V4dHJhKCkgeworICAgIG1rZGlyIC1wICR7U30vM3JkcGFydHkvdGlueWRubi8KKyAgICB0YXIgeHpmICR7V09SS0RJUn0vdjEuMC4wYTMudGFyLmd6IC1DICR7U30vM3JkcGFydHkvdGlueWRubi8KICAgICB0YXIgeHpmICR7V09SS0RJUn0vaXBwL2lwcGljdi8ke0lQUF9GSUxFTkFNRX0gLUMgJHtXT1JLRElSfQogICAgIGNwICR7V09SS0RJUn0vdmdnLyouaSAke1dPUktESVJ9L2NvbnRyaWIvbW9kdWxlcy94ZmVhdHVyZXMyZC9zcmMKICAgICBjcCAke1dPUktESVJ9L2Jvb3N0ZGVzYy8qLmkgJHtXT1JLRElSfS9jb250cmliL21vZHVsZXMveGZlYXR1cmVzMmQvc3JjCkBAIC02OCwxMyArNzcsMTMgQEAKIEVYVFJBX09FQ01BS0UgPSAiLURPUEVOQ1ZfRVhUUkFfTU9EVUxFU19QQVRIPSR7V09SS0RJUn0vY29udHJpYi9tb2R1bGVzIFwKICAgICAtRFdJVEhfMTM5ND1PRkYgXAogICAgIC1EQ01BS0VfU0tJUF9SUEFUSD1PTiBcCi0gICAgLURPUEVOQ1ZfSUNWX1BBQ0tBR0VfRE9XTkxPQURFRD0ke0lQUF9NRDV9IFwKLSAgICAtRE9QRU5DVl9JQ1ZfUEFUSD0ke1dPUktESVJ9L2lwcGljdl9sbnggXAorICAgIC1ET1BFTkNWX0lDVl9IQVNIPSR7SVBQX01ENX0gXAorICAgIC1ESVBQUk9PVD0ke1dPUktESVJ9L2lwcGljdl9sbnggXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUQVJHRVRfQ0NfQVJDSCIsICItbXNzZTMiLCAiLURFTkFCTEVfU1NFPTEgLURFTkFCTEVfU1NFMj0xIC1ERU5BQkxFX1NTRTM9MSAtREVOQUJMRV9TU1NFMz0xIiwgIiIsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9DQ19BUkNIIiwgIi1tc3NlNC4xIiwgIi1ERU5BQkxFX1NTRT0xIC1ERU5BQkxFX1NTRTI9MSAtREVOQUJMRV9TU0UzPTEgLURFTkFCTEVfU1NTRTM9MSAtREVOQUJMRV9TU0U0MT0xIiwgIiIsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9DQ19BUkNIIiwgIi1tc3NlNC4yIiwgIi1ERU5BQkxFX1NTRT0xIC1ERU5BQkxFX1NTRTI9MSAtREVOQUJMRV9TU0UzPTEgLURFTkFCTEVfU1NTRTM9MSAtREVOQUJMRV9TU0U0MT0xIC1ERU5BQkxFX1NTRTQyPTEiLCAiIiwgZCl9IFwKLSAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWI2NCIsICItRExJQl9TVUZGSVg9NjQiLCAiIiwgZCl9IFwKLSAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWIzMiIsICItRExJQl9TVUZGSVg9MzIiLCAiIiwgZCl9IFwKKyAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliNjQiLCAiLURMSUJfU1VGRklYPTY0IiwgIiIsIGQpfSBcCisgICAgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjMyIiwgIi1ETElCX1NVRkZJWD0zMiIsICIiLCBkKX0gXAogIgogRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtRFg4Nj1PTiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYXNzd2RxYy9wYXNzd2RxY18xLjMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFzc3dkcWMvcGFzc3dkcWNfMS4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5OGRiM2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYXNzd2RxYy9wYXNzd2RxY18xLjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLVNVTU1BUlkgPSAiQSBwYXNzd29yZC9wYXNzcGhyYXNlIHN0cmVuZ3RoIGNoZWNraW5nIGFuZCBlbmZvcmNlbWVudCB0b29sc2V0IgotREVTQ1JJUFRJT04gPSAiXAotcGFzc3dkcWMgaXMgYSBwYXNzd29yZC9wYXNzcGhyYXNlIHN0cmVuZ3RoIGNoZWNraW5nIGFuZCBwb2xpY3kgZW5mb3JjZW1lbnQgXAotdG9vbHNldCwgaW5jbHVkaW5nIGFuIG9wdGlvbmFsIFBBTSBtb2R1bGUgKHBhbV9wYXNzd2RxYyksIGNvbW1hbmQtbGluZSBcCi1wcm9ncmFtcyAocHdxY2hlY2sgYW5kIHB3cWdlbiksIGFuZCBhIGxpYnJhcnkgKGxpYnBhc3N3ZHFjKS4gXAotcGFtX3Bhc3N3ZHFjIGlzIG5vcm1hbGx5IGludm9rZWQgb24gcGFzc3dvcmQgY2hhbmdlcyBieSBwcm9ncmFtcyBzdWNoIGFzIFwKLXBhc3N3ZCgxKS4gIEl0IGlzIGNhcGFibGUgb2YgY2hlY2tpbmcgcGFzc3dvcmQgb3IgcGFzc3BocmFzZSBzdHJlbmd0aCwgXAotZW5mb3JjaW5nIGEgcG9saWN5LCBhbmQgb2ZmZXJpbmcgcmFuZG9tbHktZ2VuZXJhdGVkIHBhc3NwaHJhc2VzLCB3aXRoIFwKLWFsbCBvZiB0aGVzZSBmZWF0dXJlcyBiZWluZyBvcHRpb25hbCBhbmQgZWFzaWx5IChyZS0pY29uZmlndXJhYmxlLiBcCi1cCi1wd3FjaGVjayBhbmQgcHdxZ2VuIGFyZSBzdGFuZGFsb25lIHBhc3N3b3JkL3Bhc3NwaHJhc2Ugc3RyZW5ndGggY2hlY2tpbmcgXAotYW5kIHJhbmRvbSBwYXNzcGhyYXNlIGdlbmVyYXRvciBwcm9ncmFtcywgcmVzcGVjdGl2ZWx5LCB3aGljaCBhcmUgdXNhYmxlIFwKLWZyb20gc2NyaXB0cy4gXAotXAotbGlicGFzc3dkcWMgaXMgdGhlIHVuZGVybHlpbmcgbGlicmFyeSwgd2hpY2ggbWF5IGFsc28gYmUgdXNlZCBmcm9tIFwKLXRoaXJkLXBhcnR5IHByb2dyYW1zLiBcCi0iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbndhbGwuY29tL3Bhc3N3ZHFjIgotU0VDVElPTiA9ICJTeXN0ZW0gRW52aXJvbm1lbnQvQmFzZSIKLQotREVQRU5EUyArPSAibGlicGFtIgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFiNGFmNmYzZDRlZTA3OWEzODEwNzM2NmU5M2IzMzRkIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbndhbGwuY29tLyR7QlBOfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzODc4YjU3YmNkM2ZkYmNmM2Q0YjM2MmRiYzYyMjhiOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMWZlZGVhZjc1OWU4YTBmMzJkMjhiNTgxMWVmMTFiNWE1MzY1MTU0ODQ5MTkwZjRiN2ZhYjY3MGE3MGZmYjE0IgotCi0jIGV4cGxpY2l0bHkgZGVmaW5lIExJTlVYX1BBTSBpbiBjYXNlIERJU1RST19GRUFUVVJFUyBubyBwYW0KLSMgdGhpcyBwYWNrYWdlJ3MgcGFtX3Bhc3N3ZHFjLnNvIG5lZWRzIHBhbQotQ0ZMQUdTX2FwcGVuZCArPSAiLVdhbGwgLWZQSUMgLURIQVZFX1NIQURPVyAtRExJTlVYX1BBTSIKLQotIyAtZSBpcyBubyBsb25nZXIgZGVmYXVsdCBzZXR0aW5nIGluIGJpdGJha2UuY29uZgotRVhUUkFfT0VNQUtFID0gIi1lIgotCi1kb19jb21waWxlKCkgewotICAgICMgbWFrZSBzdXJlIHN1YiBtYWtlIHVzZSBlbnZpcm9ubWVudCB0byBvdmVycmlkZSB2YXJpYWJsZXMgaW4gTWFrZWZpbGUKLSAgICAjIExpbnV4KSAgICAkKE1BS0UpLCB0aGVyZSBpcyBhIHRhYiBiZXR3ZWVuCi0gICAgc2VkIC1pIC1lICdzL0xpbnV4KQkkKE1BS0UpIENGTEFHU19saWIvTGludXgpCSQoTUFLRSkgLWUgQ0ZMQUdTX2xpYi8nICR7U30vTWFrZWZpbGUKLQotICAgICMgTERfbGliIGFuZCBMRCBtdXN0IGJlIENDIGJlY2F1c2Ugb2YgTWFrZWZpbGUKLSAgICBvZV9ydW5tYWtlIExEPSIke0NDfSIKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFNIQVJFRF9MSUJESVI9JHtiYXNlX2xpYmRpcn0gXAotICAgICAgICAgICBERVZFTF9MSUJESVI9JHtsaWJkaXJ9IFNFQ1VSRURJUj0ke2Jhc2VfbGliZGlyfS9zZWN1cml0eSBcCi0gICAgICAgICAgIElOU1RBTEw9Imluc3RhbGwgLXAiCi19Ci0KLVBST1ZJREVTICs9ICJwYW0tJHtCUE59IgotUEFDS0FHRVMgPSsgImxpYiR7QlBOfSBwYW0tJHtCUE59IgotCi1GSUxFU19saWIke0JQTn0gPSAiJHtiYXNlX2xpYmRpcn0vbGlicGFzc3dkcWMuc28uMCIKLUZJTEVTX3BhbS0ke0JQTn0gPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvcGFtX3Bhc3N3ZHFjLnNvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8uZGVidWciCi0KLVJERVBFTkRTXyR7UE59ID0gImxpYiR7QlBOfSBwYW0tJHtCUE59IgotUkRFUEVORFNfcGFtLSR7QlBOfSA9ICJsaWIke0JQTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4vcGlkZ2luLWNyb3NzLXB5dGhvbi0yNjUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4vcGlkZ2luLWNyb3NzLXB5dGhvbi0yNjUucGF0Y2gKaW5kZXggNzJiZjRlZC4uMzEyZmM4NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luL3BpZGdpbi1jcm9zcy1weXRob24tMjY1LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi9waWRnaW4tY3Jvc3MtcHl0aG9uLTI2NS5wYXRjaApAQCAtMSw5ICsxLDE3IEBACi1Vc2UgcGtnLWNvbmZpZyBpbnN0ZWFkIG9mICR7UFlUSE9OfS1jb25maWcgdG8gZmluZCBweXRob24KK0Zyb20gODU1Y2MyMGJhZmEzMDU5N2FlN2E2MmY3NjcyZDQyNjU0YjI1Y2RlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhlcnJpZSA8Z2l0aHViLmNvbUBoZXJyaWUub3JnPgorRGF0ZTogTW9uLCAyNCBKdWwgMjAxNyAyMTozMDoxNiArMDIwMAorU3ViamVjdDogW1BBVENIXSBVc2UgcGtnLWNvbmZpZyBpbnN0ZWFkIG9mICR7UFlUSE9OfS1jb25maWcgdG8gZmluZCBweXRob24KIAotZGlmZiAtdU5yIHBpZGdpbi0yLjEwLjEyLm9yaWcvY29uZmlndXJlLmFjIHBpZGdpbi0yLjEwLjEyL2NvbmZpZ3VyZS5hYwotLS0tIHBpZGdpbi0yLjEwLjEyLm9yaWcvY29uZmlndXJlLmFjCTIwMTYtMDEtMDEgMDA6MTk6NDAuMDAwMDAwMDAwICswMTAwCi0rKysgcGlkZ2luLTIuMTAuMTIvY29uZmlndXJlLmFjCTIwMTYtMDUtMDUgMTY6NTU6MTMuMjU4OTQ1OTI1ICswMjAwCi1AQCAtMTU4NSwyMCArMTU4NSwxNSBAQAorLS0tCisgY29uZmlndXJlLmFjIHwgMjEgKysrKysrKystLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGQyMGExOGUuLmM3NDE4MjkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE1NjcsMjAgKzE1NjcsMTUgQEAgQU1fQ09ORElUSU9OQUwoRU5BQkxFX0RCVVMsIHRlc3QgIngkZW5hYmxlX2RidXMiID0gInh5ZXMiKQogIGRubCBDaGVjayBmb3IgUHl0aG9uIGhlYWRlcnMgKGN1cnJlbnRseSB1c2VmdWwgb25seSBmb3IgbGliZ250KQogIGRubCAoVGhhbmtzIHRvIFhDaGF0KQogIGlmIHRlc3QgIngkZW5hYmxlX2NvbnNvbGV1aSIgPSAieHllcyIgLWEgISAteiAiJFBZVEhPTiIgLWEgeCIkUFlUSE9OIiAhPSB4Im5vIiA7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi9wdXJwbGUtT0UtYnJhbmRpbmctMjUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4vcHVycGxlLU9FLWJyYW5kaW5nLTI1LnBhdGNoCmluZGV4IDI5M2VmNzAuLjlhMjRmYmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi9wdXJwbGUtT0UtYnJhbmRpbmctMjUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luL3B1cnBsZS1PRS1icmFuZGluZy0yNS5wYXRjaApAQCAtMSw4ICsxLDE2IEBACi1JbmRleDogcGlkZ2luLTIuNS4wL2xpYnB1cnBsZS9wcm90b2NvbHMvaXJjL2lyYy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGlkZ2luLTIuNS4wLm9yaWcvbGlicHVycGxlL3Byb3RvY29scy9pcmMvaXJjLmgJMjAwOC0wOC0xOSAwMTo1MzozOC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBwaWRnaW4tMi41LjAvbGlicHVycGxlL3Byb3RvY29scy9pcmMvaXJjLmgJMjAwOC0wOC0yNyAxMToxNTo1OC4wMDAwMDAwMDAgKzAwMDAKLUBAIC0zNiw5ICszNiw5IEBACitGcm9tIDQzZTlkYjY1NjQzMWZmYjIyYjQyOWQ1ZmNhNGNlM2I0YWYyMWJjOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIZXJyaWUgPGdpdGh1Yi5jb21AaGVycmllLm9yZz4KK0RhdGU6IE1vbiwgMjQgSnVsIDIwMTcgMjE6MzA6MTYgKzAyMDAKKworLS0tCisgbGlicHVycGxlL3Byb3RvY29scy9pcmMvaXJjLmggfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlicHVycGxlL3Byb3RvY29scy9pcmMvaXJjLmggYi9saWJwdXJwbGUvcHJvdG9jb2xzL2lyYy9pcmMuaAoraW5kZXggZmRlMzVjNC4uNjZlNTJkZCAxMDA2NDQKKy0tLSBhL2xpYnB1cnBsZS9wcm90b2NvbHMvaXJjL2lyYy5oCisrKysgYi9saWJwdXJwbGUvcHJvdG9jb2xzL2lyYy9pcmMuaAorQEAgLTQwLDkgKzQwLDkgQEAKICAKICAjZGVmaW5lIElSQ19ERUZBVUxUX0NIQVJTRVQgIlVURi04IgogICNkZWZpbmUgSVJDX0RFRkFVTFRfQVVUT0RFVEVDVCBGQUxTRQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luL3Nhbml0aXplLWNvbmZpZ3VyZS5hYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi9zYW5pdGl6ZS1jb25maWd1cmUuYWMucGF0Y2gKaW5kZXggYTc3ZDY0Zi4uODRkYmNkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luL3Nhbml0aXplLWNvbmZpZ3VyZS5hYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4vc2FuaXRpemUtY29uZmlndXJlLmFjLnBhdGNoCkBAIC0xLDYgKzEsMTYgQEAKLS0tLSAvdG1wL2NvbmZpZ3VyZS5hYwkyMDA3LTA1LTA4IDE3OjI5OjAyLjAwMDAwMDAwMCArMDIwMAotKysrIHBpZGdpbi0yLjAuMC9jb25maWd1cmUuYWMJMjAwNy0wNS0wOCAxNzozMDozMC4zMjUyNTEwMDAgKzAyMDAKLUBAIC00NzIsNyArNDcyLDcgQEAKK0Zyb20gYzMwNThmOWVhZGFmNWZmMjhiYTc3NmNmZWQ1NGI2MDlhOTNhMTI0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhlcnJpZSA8Z2l0aHViLmNvbUBoZXJyaWUub3JnPgorRGF0ZTogTW9uLCAyNCBKdWwgMjAxNyAyMTozMDoxNiArMDIwMAorCistLS0KKyBjb25maWd1cmUuYWMgfCAxMCArLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiOGFjZDJhLi5kMjBhMThlIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02NDIsNyArNjQyLDcgQEAgaWYgdGVzdCAieCRlbmFibGVfY29uc29sZXVpIiA9ICJ4eWVzIjsgdGhlbgogIAlpZiB0ZXN0ICJ4JGVuYWJsZV9jb25zb2xldWkiID0gInh5ZXMiOyB0aGVuCiAgCQlkbmwgIyBTb21lIGRpc3Ryb3MgcHV0IHRoZSBoZWFkZXJzIGluIG5jdXJzZXN3Lywgc29tZSBkb24ndAogIAkJZm91bmRfbmN1cnNlc19oPW5vCkBAIC04LDggKzE4LDggQEAKICsJCWZvciBsb2NhdGlvbiBpbiAkYWNfbmN1cnNlc19pbmNsdWRlcyAkTkNVUlNFU19IRUFERVJTIAogIAkJZG8KICAJCQlmPSIkbG9jYXRpb24vbmN1cnNlcy5oIgotIAkJCUFDX0NIRUNLX0hFQURFUigkZixbCi1AQCAtMTg2MCwxMCArMTg2MCw2IEBACisgCQkJb3JpZ19DRkxBR1M9IiRDRkxBR1MiCitAQCAtMjM5NywxMCArMjM5Nyw2IEBAIGlmIHRlc3QgIiRrZXJiZXJvcyIgIT0gIm5vIiA7IHRoZW4KICAJCQlLUkI0X0NGTEFHUz0iJEtSQjRfQ0ZMQUdTIC1JJHtrZXJiZXJvc30vaW5jbHVkZS9rZXJiZXJvc0lWIgogIAkJZmkKICAJCUtSQjRfTERGTEFHUz0iLUwke2tlcmJlcm9zfS9saWIiCkBAIC0yMCw3ICszMCw3IEBACiAgCWZpCiAgCUFDX0RFRklORShaRVBIWVJfVVNFU19LRVJCRVJPUywgMSwgW0RlZmluZSBpZiBrZXJiZXJvcyBzaG91bGQgYmUgdXNlZCBpbiBaZXBoeXIuXSkKICAKLUBAIC0xODk2LDEwICsxODkyLDYgQEAKK0BAIC0yNDMzLDEwICsyNDI5LDYgQEAgaWYgdGVzdCAiJHplcGh5ciIgIT0gIm5vIiA7IHRoZW4KICAJCVpFUEhZUl9MREZMQUdTPSItTCR7emVwaHlyfS9saWIiCiAgCWVsaWYgdGVzdCAtZCAvdXNyL2F0aGVuYS9pbmNsdWRlL3plcGh5ciA7IHRoZW4KICAJCVpFUEhZUl9DRkxBR1M9Ii1JL3Vzci9hdGhlbmEvaW5jbHVkZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9jby9wb2NvXzEuNy45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS43LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjNjU3MzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS43LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotU1VNTUFSWSA9ICJNb2Rlcm4sIHBvd2VyZnVsIG9wZW4gc291cmNlIGNyb3NzLXBsYXRmb3JtIEMrKyBjbGFzcyBsaWJyYXJpZXMiCi1ERVNDUklQVElPTiA9ICJNb2Rlcm4sIHBvd2VyZnVsIG9wZW4gc291cmNlIEMrKyBjbGFzcyBsaWJyYXJpZXMgYW5kIGZyYW1ld29ya3MgZm9yIGJ1aWxkaW5nIG5ldHdvcmstIGFuZCBpbnRlcm5ldC1iYXNlZCBhcHBsaWNhdGlvbnMgdGhhdCBydW4gb24gZGVza3RvcCwgc2VydmVyLCBtb2JpbGUgYW5kIGVtYmVkZGVkIHN5c3RlbXMuIgotU0VDVElPTiA9ICJsaWJzIgotSE9NRVBBR0UgPSAiaHR0cDovL3BvY29wcm9qZWN0Lm9yZy8iCi1MSUNFTlNFID0gIkJTTC0xLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00MjY3ZjQ4ZmM3MzhmNTAzODBjYmVlYjc2Zjk1Y2ViYyIKLQotIyBUaGVzZSBkZXBlbmRlbmNpZXMgYXJlIHJlcXVpcmVkIGJ5IEZvdW5kYXRpb24KLURFUEVORFMgPSAibGlicGNyZSB6bGliIgotCi1pbmhlcml0IGNtYWtlIHB0ZXN0Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1TUkNSRVYgPSAiYmZiZTZhMzI4NzQ0ZWFhODRjYjQ0M2I5M2VlMjA5NDdhYTBiZTkxZiIKLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL3BvY29wcm9qZWN0L3BvY28uZ2l0O2JyYW5jaD1tYXN0ZXIgXAotICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRUNNQUtFID0gIi1EQ01BS0VfQlVJTERfVFlQRT1SZWxXaXRoRGViSW5mbyAtRFBPQ09fVU5CVU5ETEVEPU9OIFwKLSAgICAgICAgICAgICAgICAgIC1EWkxJQl9MSUJSQVJZX1JFTEVBU0U6U1RSSU5HPXogLURQQ1JFX0xJQlJBUlk6U1RSSU5HPXBjcmUgXAotICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJy1ERU5BQkxFX1RFU1RTPU9OICcsICcnLCBkKX0iCi0KLSMgRm9yIHRoZSBuYXRpdmUgYnVpbGQgd2Ugd2FudCB0byB1c2UgdGhlIGJ1bmRsZWQgdmVyc2lvbgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtRFBPQ09fVU5CVU5ETEVEPU9GRiIKLQotIyBkbyBub3QgdXNlIHJwYXRoCi1FWFRSQV9PRUNNQUtFX2FwcGVuZCA9ICIgLURDTUFLRV9TS0lQX1JQQVRIPU9OIgotCi0jIEJ5IGRlZmF1bHQgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBwb2NvIGNvbXBvbmVudHMgYXJlIGJ1aWx0Ci0jIEZvdW5kYXRpb24gaXMgYnVpbHQgYW55d2F5IGFuZCBkb2Vzbid0IG5lZWQgdG8gYmUgbGlzdGVkIGV4cGxpY2l0bHkKLSMgdGhlc2UgZG9uJ3QgaGF2ZSBkZXBlbmRlbmNpZXMgb3V0c2lkZSBvZS1jb3JlCi1QQUNLQUdFQ09ORklHID8/PSAiWE1MIEpTT04gTW9uZ29EQiBQREYgVXRpbCBOZXQgTmV0U1NMIENyeXB0byBEYXRhIERhdGFTUUxpdGUgWmlwIgotCi1QQUNLQUdFQ09ORklHW1hNTF0gPSAiLURFTkFCTEVfWE1MPU9OIC1ERVhQQVRfTElCUkFSWTpTVFJJTkc9ZXhwYXQsLURFTkFCTEVfWE1MPU9GRixleHBhdCIKLVBBQ0tBR0VDT05GSUdbSlNPTl0gPSAiLURFTkFCTEVfSlNPTj1PTiwtREVOQUJMRV9KU09OPU9GRiIKLVBBQ0tBR0VDT05GSUdbTW9uZ29EQl0gPSAiLURFTkFCTEVfTU9OR09EQj1PTiwtREVOQUJMRV9NT05HT0RCPU9GRiIKLVBBQ0tBR0VDT05GSUdbUERGXSA9ICItREVOQUJMRV9QREY9T04sLURFTkFCTEVfUERGPU9GRix6bGliIgotUEFDS0FHRUNPTkZJR1tVdGlsXSA9ICItREVOQUJMRV9VVElMPU9OLC1ERU5BQkxFX1VUSUw9T0ZGIgotUEFDS0FHRUNPTkZJR1tOZXRdID0gIi1ERU5BQkxFX05FVD1PTiwtREVOQUJMRV9ORVQ9T0ZGIgotUEFDS0FHRUNPTkZJR1tOZXRTU0xdID0gIi1ERU5BQkxFX05FVFNTTD1PTiAtRE9QRU5TU0xfU1NMX0xJQlJBUlk6U1RSSU5HPXNzbCAtRE9QRU5TU0xfQ1JZUFRPX0xJQlJBUlk6U1RSSU5HPWNyeXB0bywtREVOQUJMRV9ORVRTU0w9T0ZGLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW0NyeXB0b10gPSAiLURFTkFCTEVfQ1JZUFRPPU9OIC1ET1BFTlNTTF9TU0xfTElCUkFSWTpTVFJJTkc9c3NsIC1ET1BFTlNTTF9DUllQVE9fTElCUkFSWTpTVFJJTkc9Y3J5cHRvLC1ERU5BQkxFX0NSWVBUTz1PRkYsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbRGF0YV0gPSAiLURFTkFCTEVfREFUQT1PTiwtREVOQUJMRV9EQVRBPU9GRiIKLVBBQ0tBR0VDT05GSUdbRGF0YVNRTGl0ZV0gPSAiLURFTkFCTEVfREFUQV9TUUxJVEU9T04gLURTUUxJVEUzX0xJQlJBUlk6U1RSSU5HPXNxbGl0ZTMsLURFTkFCTEVfREFUQV9TUUxJVEU9T0ZGLHNxbGl0ZTMiCi1QQUNLQUdFQ09ORklHW1ppcF0gPSAiLURFTkFCTEVfWklQPU9OLC1ERU5BQkxFX1pJUD1PRkYiCi0KLSMgQWRkaXRpb25hbCBjb21wb25lbnRzIG5vdCBidWlsZCBieSBkZWZhdWx0LAotIyB0aGV5IG1pZ2h0IGhhdmUgZGVwZW5kZW5jaWVzIG5vdCBpbmNsdWRlZCBpbiBvZS1jb3JlCi0jIG9yIHRoZXkgZG9uJ3Qgd29yayBvbiBhbGwgYXJjaGl0ZWN0dXJlcwotUEFDS0FHRUNPTkZJR1ttb2RfcG9jb10gPSAiLURFTkFCTEVfQVBBQ0hFQ09OTkVDVE9SPU9OLC1ERU5BQkxFX0FQQUNIRUNPTk5FQ1RPUj1PRkYsYXByIGFwYWNoZTIiCi1QQUNLQUdFQ09ORklHW0NwcFBhcnNlcl0gPSAiLURFTkFCTEVfQ1BQUEFSU0VSPU9OLC1ERU5BQkxFX0NQUFBBUlNFUj1PRkYiCi1QQUNLQUdFQ09ORklHW0RhdGFNeVNRTF0gPSAiLURFTkFCTEVfREFUQV9NWVNRTD1PTiAtRE1ZU1FMX0xJQjpTVFJJTkc9bXlzcWxjbGllbnRfciwtREVOQUJMRV9EQVRBX01ZU1FMPU9GRixtYXJpYWRiIgotUEFDS0FHRUNPTkZJR1tEYXRhT0RCQ10gPSAiLURFTkFCTEVfREFUQV9PREJDPU9OLC1ERU5BQkxFX0RBVEFfT0RCQz1PRkYsbGliaW9kYmMiCi1QQUNLQUdFQ09ORklHW1BhZ2VDb21waWxlcl0gPSAiLURFTkFCTEVfUEFHRUNPTVBJTEVSPU9OLC1ERU5BQkxFX1BBR0VDT01QSUxFUj1PRkYiCi1QQUNLQUdFQ09ORklHW1BhZ2VDb21waWxlckZpbGUyUGFnZV0gPSAiLURFTkFCTEVfUEFHRUNPTVBJTEVSX0ZJTEUyUEFHRT1PTiwtREVOQUJMRV9QQUdFQ09NUElMRVJfRklMRTJQQUdFPU9GRiIKLVBBQ0tBR0VDT05GSUdbU2V2ZW5aaXBdID0gIi1ERU5BQkxFX1NFVkVOWklQPU9OLC1ERU5BQkxFX1NFVkVOWklQPU9GRiIKLQotIyBNYWtlIGEgcGFja2FnZSBmb3IgZWFjaCBsaWJyYXJ5Ci1QQUNLQUdFUyA9ICIke1BOfS1kYmcgJHtQT0NPX1BBQ0tBR0VTfSIKLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgcGFja2FnZXMgPSBbXQotICAgIHRlc3RydW5uZXJzID0gW10KLSAgICBjb21wb25lbnRzID0gZC5nZXRWYXIoIlBBQ0tBR0VDT05GSUciKS5zcGxpdCgpCi0gICAgY29tcG9uZW50cy5hcHBlbmQoIkZvdW5kYXRpb24iKQotICAgIGZvciBsaWIgaW4gY29tcG9uZW50czoKLSAgICAgICAgcGtnID0gKCJwb2NvLSVzIiAlIGxpYi5sb3dlcigpKS5yZXBsYWNlKCJfIiwiIikKLSAgICAgICAgcGFja2FnZXMuYXBwZW5kKHBrZykKLSAgICAgICAgaWYgbm90IGQuZ2V0VmFyKCJGSUxFU18lcyIgJSBwa2cpOgotICAgICAgICAgICAgZC5zZXRWYXIoIkZJTEVTXyVzIiAlIHBrZywgIiR7bGliZGlyfS9saWJQb2NvJXMuc28uKiIgJSBsaWIpCi0gICAgICAgIHRlc3RydW5uZXJzLmFwcGVuZCgiJXMiICUgbGliKQotCi0gICAgZC5zZXRWYXIoIlBPQ09fUEFDS0FHRVMiLCAiICIuam9pbihwYWNrYWdlcykpCi0gICAgZC5zZXRWYXIoIlBPQ09fVEVTVFJVTk5FUlMiLCAiXG4iLmpvaW4odGVzdHJ1bm5lcnMpKQotfQotCi0jICJwb2NvIiBpcyBhIG1ldGFwYWNrYWdlIHdoaWNoIHB1bGxzIGluIGFsbCBQb2NvIGNvbXBvbmVudHMKLVBBQ0tBR0VTICs9ICIke1BOfSIKLVJSRUNPTU1FTkRTXyR7UE59ICs9ICIke1BPQ09fUEFDS0FHRVN9IgotUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLSMgLWRldiBsYXN0IHRvIHBpY2sgdXAgdGhlIHJlbWFpbmluZyBzdHVmZgotUEFDS0FHRVMgKz0gIiR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYiCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliUG9jbyouc28gJHtsaWJkaXJ9L2NtYWtlIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJQb2NvKi5hIgotCi0jIHB0ZXN0IHN1cHBvcnQKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtQVEVTVF9QQVRIfS9iaW4vLmRlYnVnIgotCi0jIGNwcHVuaXQgaXMgb25seSBidWlsdCBpZiB0ZXN0cyBhcmUgZW5hYmxlZAotUEFDS0FHRVMgKz0gIiR7UE59LWNwcHVuaXQiCi1GSUxFU18ke1BOfS1jcHB1bml0ICs9ICIke2xpYmRpcn0vbGliQ3BwVW5pdC5zbyoiCi1BTExPV19FTVBUWV8ke1BOfS1jcHB1bml0ID0gIjEiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1jcHB1bml0IgotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICAgICBjcCAtcmYgJHtCfS9iaW4vICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgICAgY3AgLWYgJHtCfS9saWIvbGliQ3BwVW5pdC5zbyogJHtEfSR7bGliZGlyfQotICAgICAgIGNwIC1yZiAke0J9LyovdGVzdHN1aXRlL2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vYmluLwotICAgICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtZXhlY3V0YWJsZSAtZXhlYyBjaHJwYXRoIC1kIHt9IFw7Ci0gICAgICAgZWNobyAiJHtQT0NPX1RFU1RSVU5ORVJTfSIgPiAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHJ1bm5lcnMiCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjguMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS44LjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjBiNGQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS44LjAuMS5iYgpAQCAtMCwwICsxLDEwNiBAQAorU1VNTUFSWSA9ICJNb2Rlcm4sIHBvd2VyZnVsIG9wZW4gc291cmNlIGNyb3NzLXBsYXRmb3JtIEMrKyBjbGFzcyBsaWJyYXJpZXMiCitERVNDUklQVElPTiA9ICJNb2Rlcm4sIHBvd2VyZnVsIG9wZW4gc291cmNlIEMrKyBjbGFzcyBsaWJyYXJpZXMgYW5kIGZyYW1ld29ya3MgZm9yIGJ1aWxkaW5nIG5ldHdvcmstIGFuZCBpbnRlcm5ldC1iYXNlZCBhcHBsaWNhdGlvbnMgdGhhdCBydW4gb24gZGVza3RvcCwgc2VydmVyLCBtb2JpbGUgYW5kIGVtYmVkZGVkIHN5c3RlbXMuIgorU0VDVElPTiA9ICJsaWJzIgorSE9NRVBBR0UgPSAiaHR0cDovL3BvY29wcm9qZWN0Lm9yZy8iCitMSUNFTlNFID0gIkJTTC0xLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00MjY3ZjQ4ZmM3MzhmNTAzODBjYmVlYjc2Zjk1Y2ViYyIKKworIyBUaGVzZSBkZXBlbmRlbmNpZXMgYXJlIHJlcXVpcmVkIGJ5IEZvdW5kYXRpb24KK0RFUEVORFMgPSAibGlicGNyZSB6bGliIgorCitpbmhlcml0IGNtYWtlIHB0ZXN0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitTUkNSRVYgPSAiYWY1MjdhYjIxZmNhNWFiMjY1OTI4NTQwOGFlYzk5MjBlZDdjN2IxNyIKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL3BvY29wcm9qZWN0L3BvY28uZ2l0IFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRVhUUkFfT0VDTUFLRSA9ICItRENNQUtFX0JVSUxEX1RZUEU9UmVsV2l0aERlYkluZm8gLURQT0NPX1VOQlVORExFRD1PTiBcCisgICAgICAgICAgICAgICAgICAtRFpMSUJfTElCUkFSWV9SRUxFQVNFOlNUUklORz16IC1EUENSRV9MSUJSQVJZOlNUUklORz1wY3JlIFwKKyAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICctREVOQUJMRV9URVNUUz1PTiAnLCAnJywgZCl9IgorCisjIEZvciB0aGUgbmF0aXZlIGJ1aWxkIHdlIHdhbnQgdG8gdXNlIHRoZSBidW5kbGVkIHZlcnNpb24KK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURQT0NPX1VOQlVORExFRD1PRkYiCisKKyMgZG8gbm90IHVzZSBycGF0aAorRVhUUkFfT0VDTUFLRV9hcHBlbmQgPSAiIC1EQ01BS0VfU0tJUF9SUEFUSD1PTiIKKworIyBCeSBkZWZhdWx0IHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgcG9jbyBjb21wb25lbnRzIGFyZSBidWlsdAorIyBGb3VuZGF0aW9uIGlzIGJ1aWx0IGFueXdheSBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIGxpc3RlZCBleHBsaWNpdGx5CisjIHRoZXNlIGRvbid0IGhhdmUgZGVwZW5kZW5jaWVzIG91dHNpZGUgb2UtY29yZQorUEFDS0FHRUNPTkZJRyA/Pz0gIlhNTCBKU09OIE1vbmdvREIgUERGIFV0aWwgTmV0IE5ldFNTTCBDcnlwdG8gRGF0YSBEYXRhU1FMaXRlIFppcCIKKworUEFDS0FHRUNPTkZJR1tYTUxdID0gIi1ERU5BQkxFX1hNTD1PTiAtREVYUEFUX0xJQlJBUlk6U1RSSU5HPWV4cGF0LC1ERU5BQkxFX1hNTD1PRkYsZXhwYXQiCitQQUNLQUdFQ09ORklHW0pTT05dID0gIi1ERU5BQkxFX0pTT049T04sLURFTkFCTEVfSlNPTj1PRkYiCitQQUNLQUdFQ09ORklHW01vbmdvREJdID0gIi1ERU5BQkxFX01PTkdPREI9T04sLURFTkFCTEVfTU9OR09EQj1PRkYiCitQQUNLQUdFQ09ORklHW1BERl0gPSAiLURFTkFCTEVfUERGPU9OLC1ERU5BQkxFX1BERj1PRkYsemxpYiIKK1BBQ0tBR0VDT05GSUdbVXRpbF0gPSAiLURFTkFCTEVfVVRJTD1PTiwtREVOQUJMRV9VVElMPU9GRiIKK1BBQ0tBR0VDT05GSUdbTmV0XSA9ICItREVOQUJMRV9ORVQ9T04sLURFTkFCTEVfTkVUPU9GRiIKK1BBQ0tBR0VDT05GSUdbTmV0U1NMXSA9ICItREVOQUJMRV9ORVRTU0w9T04gLURPUEVOU1NMX1NTTF9MSUJSQVJZOlNUUklORz1zc2wgLURPUEVOU1NMX0NSWVBUT19MSUJSQVJZOlNUUklORz1jcnlwdG8sLURFTkFCTEVfTkVUU1NMPU9GRixvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tDcnlwdG9dID0gIi1ERU5BQkxFX0NSWVBUTz1PTiAtRE9QRU5TU0xfU1NMX0xJQlJBUlk6U1RSSU5HPXNzbCAtRE9QRU5TU0xfQ1JZUFRPX0xJQlJBUlk6U1RSSU5HPWNyeXB0bywtREVOQUJMRV9DUllQVE89T0ZGLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW0RhdGFdID0gIi1ERU5BQkxFX0RBVEE9T04sLURFTkFCTEVfREFUQT1PRkYiCitQQUNLQUdFQ09ORklHW0RhdGFTUUxpdGVdID0gIi1ERU5BQkxFX0RBVEFfU1FMSVRFPU9OIC1EU1FMSVRFM19MSUJSQVJZOlNUUklORz1zcWxpdGUzLC1ERU5BQkxFX0RBVEFfU1FMSVRFPU9GRixzcWxpdGUzIgorUEFDS0FHRUNPTkZJR1taaXBdID0gIi1ERU5BQkxFX1pJUD1PTiwtREVOQUJMRV9aSVA9T0ZGIgorCisjIEFkZGl0aW9uYWwgY29tcG9uZW50cyBub3QgYnVpbGQgYnkgZGVmYXVsdCwKKyMgdGhleSBtaWdodCBoYXZlIGRlcGVuZGVuY2llcyBub3QgaW5jbHVkZWQgaW4gb2UtY29yZQorIyBvciB0aGV5IGRvbid0IHdvcmsgb24gYWxsIGFyY2hpdGVjdHVyZXMKK1BBQ0tBR0VDT05GSUdbbW9kX3BvY29dID0gIi1ERU5BQkxFX0FQQUNIRUNPTk5FQ1RPUj1PTiwtREVOQUJMRV9BUEFDSEVDT05ORUNUT1I9T0ZGLGFwciBhcGFjaGUyIgorUEFDS0FHRUNPTkZJR1tDcHBQYXJzZXJdID0gIi1ERU5BQkxFX0NQUFBBUlNFUj1PTiwtREVOQUJMRV9DUFBQQVJTRVI9T0ZGIgorUEFDS0FHRUNPTkZJR1tEYXRhTXlTUUxdID0gIi1ERU5BQkxFX0RBVEFfTVlTUUw9T04gLURNWVNRTF9MSUI6U1RSSU5HPW15c3FsY2xpZW50X3IsLURFTkFCTEVfREFUQV9NWVNRTD1PRkYsbWFyaWFkYiIKK1BBQ0tBR0VDT05GSUdbRGF0YU9EQkNdID0gIi1ERU5BQkxFX0RBVEFfT0RCQz1PTiwtREVOQUJMRV9EQVRBX09EQkM9T0ZGLGxpYmlvZGJjIgorUEFDS0FHRUNPTkZJR1tQYWdlQ29tcGlsZXJdID0gIi1ERU5BQkxFX1BBR0VDT01QSUxFUj1PTiwtREVOQUJMRV9QQUdFQ09NUElMRVI9T0ZGIgorUEFDS0FHRUNPTkZJR1tQYWdlQ29tcGlsZXJGaWxlMlBhZ2VdID0gIi1ERU5BQkxFX1BBR0VDT01QSUxFUl9GSUxFMlBBR0U9T04sLURFTkFCTEVfUEFHRUNPTVBJTEVSX0ZJTEUyUEFHRT1PRkYiCitQQUNLQUdFQ09ORklHW1NldmVuWmlwXSA9ICItREVOQUJMRV9TRVZFTlpJUD1PTiwtREVOQUJMRV9TRVZFTlpJUD1PRkYiCisKKyMgTWFrZSBhIHBhY2thZ2UgZm9yIGVhY2ggbGlicmFyeQorUEFDS0FHRVMgPSAiJHtQTn0tZGJnICR7UE9DT19QQUNLQUdFU30iCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgIHBhY2thZ2VzID0gW10KKyAgICB0ZXN0cnVubmVycyA9IFtdCisgICAgY29tcG9uZW50cyA9IGQuZ2V0VmFyKCJQQUNLQUdFQ09ORklHIikuc3BsaXQoKQorICAgIGNvbXBvbmVudHMuYXBwZW5kKCJGb3VuZGF0aW9uIikKKyAgICBmb3IgbGliIGluIGNvbXBvbmVudHM6CisgICAgICAgIHBrZyA9ICgicG9jby0lcyIgJSBsaWIubG93ZXIoKSkucmVwbGFjZSgiXyIsIiIpCisgICAgICAgIHBhY2thZ2VzLmFwcGVuZChwa2cpCisgICAgICAgIGlmIG5vdCBkLmdldFZhcigiRklMRVNfJXMiICUgcGtnKToKKyAgICAgICAgICAgIGQuc2V0VmFyKCJGSUxFU18lcyIgJSBwa2csICIke2xpYmRpcn0vbGliUG9jbyVzLnNvLioiICUgbGliKQorICAgICAgICB0ZXN0cnVubmVycy5hcHBlbmQoIiVzIiAlIGxpYikKKworICAgIGQuc2V0VmFyKCJQT0NPX1BBQ0tBR0VTIiwgIiAiLmpvaW4ocGFja2FnZXMpKQorICAgIGQuc2V0VmFyKCJQT0NPX1RFU1RSVU5ORVJTIiwgIlxuIi5qb2luKHRlc3RydW5uZXJzKSkKK30KKworIyAicG9jbyIgaXMgYSBtZXRhcGFja2FnZSB3aGljaCBwdWxscyBpbiBhbGwgUG9jbyBjb21wb25lbnRzCitQQUNLQUdFUyArPSAiJHtQTn0iCitSUkVDT01NRU5EU18ke1BOfSArPSAiJHtQT0NPX1BBQ0tBR0VTfSIKK1JSRUNPTU1FTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCisjIC1kZXYgbGFzdCB0byBwaWNrIHVwIHRoZSByZW1haW5pbmcgc3R1ZmYKK1BBQ0tBR0VTICs9ICIke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2IgorRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYlBvY28qLnNvICR7bGliZGlyfS9jbWFrZSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGliUG9jbyouYSIKKworIyBwdGVzdCBzdXBwb3J0CitGSUxFU18ke1BOfS1kYmcgKz0gIiR7UFRFU1RfUEFUSH0vYmluLy5kZWJ1ZyIKKworIyBjcHB1bml0IGlzIG9ubHkgYnVpbHQgaWYgdGVzdHMgYXJlIGVuYWJsZWQKK1BBQ0tBR0VTICs9ICIke1BOfS1jcHB1bml0IgorRklMRVNfJHtQTn0tY3BwdW5pdCArPSAiJHtsaWJkaXJ9L2xpYkNwcFVuaXQuc28qIgorQUxMT1dfRU1QVFlfJHtQTn0tY3BwdW5pdCA9ICIxIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tY3BwdW5pdCIKKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgICAgY3AgLXJmICR7Qn0vYmluLyAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgIGNwIC1mICR7Qn0vbGliL2xpYkNwcFVuaXQuc28qICR7RH0ke2xpYmRpcn0KKyAgICAgICBjcCAtcmYgJHtCfS8qL3Rlc3RzdWl0ZS9kYXRhICR7RH0ke1BURVNUX1BBVEh9L2Jpbi8KKyAgICAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLWV4ZWN1dGFibGUgLWV4ZWMgY2hycGF0aCAtZCB7fSBcOworICAgICAgIGVjaG8gIiR7UE9DT19URVNUUlVOTkVSU30iID4gIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RydW5uZXJzIgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXItZGF0YV8wLjQuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLWRhdGFfMC40LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MzBhNDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXItZGF0YV8wLjQuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiRW5jb2RpbmcgZmlsZXMgZm9yIFBvcHBsZXIiCi1ERVNDUklQVElPTiA9ICJFbmNvZGluZyBmaWxlcyBmb3IgdXNlIHdpdGggcG9wcGxlciB0aGF0IGVuYWJsZSBwb3BwbGVyIHRvIFwKLSAgICAgICAgICAgICAgIGNvcnJlY3RseSByZW5kZXIgQ0pLIGFuZCBDeXJyaWxpYy4iCi1MSUNFTlNFID0gIkJTRCAmIEdQTHYyICYgR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDg3MGI5ODM0M2YwYmJiMjVmYTQzYjlkMmJhNTk0NDggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5hZG9iZTttZDU9NjNjNmE4YTlkZjIwNGMwMDQ2MWZhNWYxNjNkOGE2NjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5ncGwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCi0iCi0KLWluaGVyaXQgYWxsYXJjaAotCi1JTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotCi1DTUFQX1JFU09VUkNFU19CQVNFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS10eXBlLXRvb2xzL2NtYXAtcmVzb3VyY2VzL3Jhdy8wNTYxZWJjYTAzNTgxM2VkMDRjMzQ4NWJjYTYzNmEwYWE3YWJkYzFkL2NtYXByZXNvdXJjZXNfaWRlbnRpdHktMC9DTWFwIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wb3BwbGVyLmZyZWVkZXNrdG9wLm9yZy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICAke0NNQVBfUkVTT1VSQ0VTX0JBU0V9L0lkZW50aXR5LUg7bmFtZT1pZGggXAotICAgICAgICAgICAke0NNQVBfUkVTT1VSQ0VTX0JBU0V9L0lkZW50aXR5LVY7bmFtZT1pZHYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MzZhOGYyYjlmNmRmOWU3Y2VkOGVjMDk0Njk2MWVhZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNzUyYjBkODhhN2FiYTU0NTc0MTUyMTQzZTdiZjc2NDM2YTdlZjUxOTc3YzU1ZDZiZDlhNDhkY2NkZTNhN2RlIgotU1JDX1VSSVtpZGgubWQ1c3VtXSA9ICIwMDljOTNjZjAxNDFhYjdiZDZhY2I3ZWVhMTQzMDZjYyIKLVNSQ19VUklbaWRoLnNoYTI1NnN1bV0gPSAiYWU3MDJjMjAzYTgyZWExMjRlOWI5NjU5MGY4MjFkYjZmYmY4NzU0ZTJjNDU0N2E5ZGJhMGU4MmY5NDczOWU5NSIKLVNSQ19VUklbaWR2Lm1kNXN1bV0gPSAiMmYzMmE0NWQ0M2QwMDFjMjZlZWFjNmI4Nzg4NTVmYmYiCi1TUkNfVVJJW2lkdi5zaGEyNTZzdW1dID0gIjg5YTg1ZGFmNzAzMWU5M2M4ODNlNzZiOTE2OGEyMjZkZmQ1ODViZjU1MDZlOWUxOTU2NzcyMTYzZjE1Y2IwODIiCi0KLWRvX2NvbXBpbGUoKSB7Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBwcmVmaXg9JHtwcmVmaXh9IGRhdGFkaXI9JHtkYXRhZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vcG9wcGxlci9jTWFwCi0gICAgaW5zdGFsbCAtbTY0NCAke1dPUktESVJ9L0lkZW50aXR5LSogJHtEfSR7ZGF0YWRpcn0vcG9wcGxlci9jTWFwLwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLWRhdGFfMC40LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci1kYXRhXzAuNC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0M2I2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci1kYXRhXzAuNC44LmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiRW5jb2RpbmcgZmlsZXMgZm9yIFBvcHBsZXIiCitERVNDUklQVElPTiA9ICJFbmNvZGluZyBmaWxlcyBmb3IgdXNlIHdpdGggcG9wcGxlciB0aGF0IGVuYWJsZSBwb3BwbGVyIHRvIFwKKyAgICAgICAgICAgICAgIGNvcnJlY3RseSByZW5kZXIgQ0pLIGFuZCBDeXJyaWxpYy4iCitMSUNFTlNFID0gIkJTRCAmIEdQTHYyICYgR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDg3MGI5ODM0M2YwYmJiMjVmYTQzYjlkMmJhNTk0NDggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5hZG9iZTttZDU9NjNjNmE4YTlkZjIwNGMwMDQ2MWZhNWYxNjNkOGE2NjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5ncGwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCisiCisKK2luaGVyaXQgYWxsYXJjaAorCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorCitDTUFQX1JFU09VUkNFU19CQVNFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS10eXBlLXRvb2xzL2NtYXAtcmVzb3VyY2VzL3Jhdy8wNTYxZWJjYTAzNTgxM2VkMDRjMzQ4NWJjYTYzNmEwYWE3YWJkYzFkL2NtYXByZXNvdXJjZXNfaWRlbnRpdHktMC9DTWFwIgorCitTUkNfVVJJID0gImh0dHA6Ly9wb3BwbGVyLmZyZWVkZXNrdG9wLm9yZy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICAke0NNQVBfUkVTT1VSQ0VTX0JBU0V9L0lkZW50aXR5LUg7bmFtZT1pZGggXAorICAgICAgICAgICAke0NNQVBfUkVTT1VSQ0VTX0JBU0V9L0lkZW50aXR5LVY7bmFtZT1pZHYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMGY4OTg5YzgwNGRlODRhZjBiYTJlYTYyOTk0OTk4MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMDk2YTE4MTYxZjI2M2NjY2RjNmQ4YTJlYjU1NDhjNDFmZjhmY2Y5YTM2MDkyNDNmMWI2Mjk2YWJkZjcyODcyIgorU1JDX1VSSVtpZGgubWQ1c3VtXSA9ICIwMDljOTNjZjAxNDFhYjdiZDZhY2I3ZWVhMTQzMDZjYyIKK1NSQ19VUklbaWRoLnNoYTI1NnN1bV0gPSAiYWU3MDJjMjAzYTgyZWExMjRlOWI5NjU5MGY4MjFkYjZmYmY4NzU0ZTJjNDU0N2E5ZGJhMGU4MmY5NDczOWU5NSIKK1NSQ19VUklbaWR2Lm1kNXN1bV0gPSAiMmYzMmE0NWQ0M2QwMDFjMjZlZWFjNmI4Nzg4NTVmYmYiCitTUkNfVVJJW2lkdi5zaGEyNTZzdW1dID0gIjg5YTg1ZGFmNzAzMWU5M2M4ODNlNzZiOTE2OGEyMjZkZmQ1ODViZjU1MDZlOWUxOTU2NzcyMTYzZjE1Y2IwODIiCisKK2RvX2NvbXBpbGUoKSB7Cit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBwcmVmaXg9JHtwcmVmaXh9IGRhdGFkaXI9JHtkYXRhZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vcG9wcGxlci9jTWFwCisgICAgaW5zdGFsbCAtbTY0NCAke1dPUktESVJ9L0lkZW50aXR5LSogJHtEfSR7ZGF0YWRpcn0vcG9wcGxlci9jTWFwLworfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLzAwMDEtRG8tbm90LW92ZXJ3cml0ZS1hbGwtb3VyLWJ1aWxkLWZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXIvMDAwMS1Eby1ub3Qtb3ZlcndyaXRlLWFsbC1vdXItYnVpbGQtZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThmNTA4NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLzAwMDEtRG8tbm90LW92ZXJ3cml0ZS1hbGwtb3VyLWJ1aWxkLWZsYWdzLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gYjZmYzZjMzZkMzU5YTUwNTAzMTM4Y2Q4N2Q3MTQ3ZmFmNmRmZjg5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE3IE1hciAyMDE4IDIwOjUyOjEwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBvdmVyd3JpdGUgYWxsIG91ciBidWlsZCBmbGFncworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgY21ha2UvbW9kdWxlcy9Qb3BwbGVyTWFjcm9zLmNtYWtlIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NtYWtlL21vZHVsZXMvUG9wcGxlck1hY3Jvcy5jbWFrZSBiL2NtYWtlL21vZHVsZXMvUG9wcGxlck1hY3Jvcy5jbWFrZQoraW5kZXggY2NiMjc5MC4uMGYzOTJjYiAxMDA2NDQKKy0tLSBhL2NtYWtlL21vZHVsZXMvUG9wcGxlck1hY3Jvcy5jbWFrZQorKysrIGIvY21ha2UvbW9kdWxlcy9Qb3BwbGVyTWFjcm9zLmNtYWtlCitAQCAtMTI1LDE0ICsxMjUsMTQgQEAgaWYoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYKQorICAgc2V0KERFRkFVTFRfQ09NUElMRV9XQVJOSU5HU19FWFRSQSAiJHtfd2Fybn0gJHtfd2Fybnh9IikKKyAKKyAgIHNldChfc2F2ZV9jeHhmbGFncyAiJHtDTUFLRV9DWFhfRkxBR1N9IikKKy0gIHNldChDTUFLRV9DWFhfRkxBR1MgICAgICAgICAgICAgICAgIi1mbm8tZXhjZXB0aW9ucyAtZm5vLWNoZWNrLW5ldyAtZm5vLWNvbW1vbiAtRF9ERUZBVUxUX1NPVVJDRSIpCisrICBzZXQoQ01BS0VfQ1hYX0ZMQUdTICAgICAgICAgICAgICAgICItZm5vLWV4Y2VwdGlvbnMgLWZuby1jaGVjay1uZXcgLWZuby1jb21tb24gLURfREVGQVVMVF9TT1VSQ0UgJHtfc2F2ZV9jeHhmbGFnc30iKQorICAgc2V0KENNQUtFX0NYWF9GTEFHU19SRUxXSVRIREVCSU5GTyAiLU8yIC1nICR7X3NhdmVfY3h4ZmxhZ3N9IikKKyAgIHNldChDTUFLRV9DWFhfRkxBR1NfUkVMRUFTRSAgICAgICAgIi1PMiAtRE5ERUJVRyAke19zYXZlX2N4eGZsYWdzfSIpCisgICBzZXQoQ01BS0VfQ1hYX0ZMQUdTX0RFQlVHICAgICAgICAgICItZyAtTzIgLWZuby1yZW9yZGVyLWJsb2NrcyAtZm5vLXNjaGVkdWxlLWluc25zIC1mbm8taW5saW5lICR7X3NhdmVfY3h4ZmxhZ3N9IikKKyAgIHNldChDTUFLRV9DWFhfRkxBR1NfREVCVUdGVUxMICAgICAgIi1nMyAtZm5vLWlubGluZSAke19zYXZlX2N4eGZsYWdzfSIpCisgICBzZXQoQ01BS0VfQ1hYX0ZMQUdTX1BST0ZJTEUgICAgICAgICItZzMgLWZuby1pbmxpbmUgLWZ0ZXN0LWNvdmVyYWdlIC1mcHJvZmlsZS1hcmNzICR7X3NhdmVfY3h4ZmxhZ3N9IikKKyAgIHNldChfc2F2ZV9jZmxhZ3MgIiR7Q01BS0VfQ19GTEFHU30iKQorLSAgc2V0KENNQUtFX0NfRkxBR1MgICAgICAgICAgICAgICAgICAiLXN0ZD1jOTkgLURfREVGQVVMVF9TT1VSQ0UiKQorKyAgc2V0KENNQUtFX0NfRkxBR1MgICAgICAgICAgICAgICAgICAiLXN0ZD1jOTkgLURfREVGQVVMVF9TT1VSQ0UgJHtfc2F2ZV9jZmxhZ3N9IikKKyAgIHNldChDTUFLRV9DX0ZMQUdTX1JFTFdJVEhERUJJTkZPICAgIi1PMiAtZyAke19zYXZlX2NmbGFnc30iKQorICAgc2V0KENNQUtFX0NfRkxBR1NfUkVMRUFTRSAgICAgICAgICAiLU8yIC1ETkRFQlVHICR7X3NhdmVfY2ZsYWdzfSIpCisgICBzZXQoQ01BS0VfQ19GTEFHU19ERUJVRyAgICAgICAgICAgICItZyAtTzIgLWZuby1yZW9yZGVyLWJsb2NrcyAtZm5vLXNjaGVkdWxlLWluc25zIC1mbm8taW5saW5lICR7X3NhdmVfY2ZsYWdzfSIpCistLSAKKzIuMTQuMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXIvMDAwMS1hZGQtbWFuYWRhdG9yeS1vcHRpb25zLXRvLWZpbmQtcXQ0LXF0NS1tb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci8wMDAxLWFkZC1tYW5hZGF0b3J5LW9wdGlvbnMtdG8tZmluZC1xdDQtcXQ1LW1vYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU4MGQyNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci8wMDAxLWFkZC1tYW5hZGF0b3J5LW9wdGlvbnMtdG8tZmluZC1xdDQtcXQ1LW1vYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLUZyb20gOTFiNjI3NWYwZTkxYzI1YmViMDQwYjRlZjk0ODQwNTNhZTMwNWQ4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjYgTWF5IDIwMTUgMTI6NDU6NDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYWRkIG1hbmFkYXRvcnkgb3B0aW9ucyB0byBmaW5kIHF0NC9xdDUgbW9jCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDU1ICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0NyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzRjZmMyYy4uOGU5NjFjNyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzEyLDI1ICs3MTIsMTAgQEAgQUNfU1VCU1QoUE9QUExFUl9RVDRfTElCUykKLSBBQ19TVUJTVChQT1BQTEVSX1FUNF9URVNUX0xJQlMpCi0gCi0gaWYgdGVzdCB4JGVuYWJsZV9wb3BwbGVyX3F0NCA9IHh5ZXM7IHRoZW4KLS0gIEFDX0NIRUNLX1RPT0woTU9DUVQ0LCBtb2MpCi0tICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBRdDQgbW9jXSkKLS0gIG1vY3ZlcnNpb249YCRNT0NRVDQgLXYgMj4mMWAKLS0gIG1vY3ZlcnNpb25ncmVwPWBlY2hvICRtb2N2ZXJzaW9uIHwgZ3JlcCAiUXQgNCJgCi0tICBpZiB0ZXN0IHgiJG1vY3ZlcnNpb25ncmVwIiAhPSB4IiRtb2N2ZXJzaW9uIjsgdGhlbgotLSAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0tICAgICMgbW9jIHdhcyBub3QgdGhlIHF0NCBvbmUsIHRyeSB3aXRoIG1vYy1xdDQKLS0gICAgQUNfQ0hFQ0tfVE9PTChNT0NRVDQyLCBtb2MtcXQ0KQotLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBRdDQgbW9jLXF0NF0pCi0tICAgIG1vY3ZlcnNpb249YCRNT0NRVDQyIC12IDI+JjFgCi0tICAgIG1vY3ZlcnNpb25ncmVwPWBlY2hvICRtb2N2ZXJzaW9uIHwgZ3JlcCAiUXQgNCJgCi0tICAgIGlmIHRlc3QgeCIkbW9jdmVyc2lvbmdyZXAiICE9IHgiJG1vY3ZlcnNpb24iOyB0aGVuCi0tICAgICAgIyBubyB2YWxpZCBtb2MgZm91bmQKLS0gICAgICBlbmFibGVfcG9wcGxlcl9xdDQ9bm87Ci0tICAgICAgTU9DUVQ0PSJub3QgZm91bmQiCi0tICAgIGVsc2UKLS0gICAgICBNT0NRVDQ9JE1PQ1FUNDIKLS0gICAgZmkKLS0gIGZpCi0rICBBQ19BUkdfV0lUSChbbW9jLXF0NF0sCi0rICAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLW1vYy1xdDRdLCBbU2V0IGxvY2F0aW9uIG9mIHF0NCBtb2NdKSwKLSsgICAgICAgICAgICAgIFtNT0NRVDQ9JHdpdGh2YWxdCi0rICApCi0gICBBQ19TVUJTVChNT0NRVDQpCi0gICBBQ19NU0dfUkVTVUxUKFskTU9DUVQ0XSkKLSBmaQotQEAgLTc2OSwzNCArNzU0LDEwIEBAIEFDX1NVQlNUKFBPUFBMRVJfUVQ1X0xJQlMpCi0gQUNfU1VCU1QoUE9QUExFUl9RVDVfVEVTVF9MSUJTKQotIAotIGlmIHRlc3QgeCRlbmFibGVfcG9wcGxlcl9xdDUgPSB4eWVzOyB0aGVuCi0tICBBQ19DSEVDS19UT09MKE1PQ1FUNSwgbW9jKQotLSAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgUXQ1IG1vY10pCi0tICBtb2N2ZXJzaW9uPWAkTU9DUVQ1IC12IDI+JjFgCi0tICBtb2N2ZXJzaW9uZ3JlcD1gZWNobyAkbW9jdmVyc2lvbiB8IGdyZXAgLUUgIlF0IDV8bW9jIDUiYAotLSAgaWYgdGVzdCB4IiRtb2N2ZXJzaW9uZ3JlcCIgIT0geCIkbW9jdmVyc2lvbiI7IHRoZW4KLS0gICAgQUNfTVNHX1JFU1VMVChbbm9dKQotLSAgICAjIG1vYyB3YXMgbm90IHRoZSBxdDUgb25lLCB0cnkgd2l0aCBtb2MtcXQ1Ci0tICAgIEFDX0NIRUNLX1RPT0woTU9DUVQ1MiwgbW9jLXF0NSkKLS0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgUXQ1IG1vYy1xdDVdKQotLSAgICBtb2N2ZXJzaW9uPWAkTU9DUVQ1MiAtdiAyPiYxYAotLSAgICBtb2N2ZXJzaW9uZ3JlcD1gZWNobyAkbW9jdmVyc2lvbiB8IGdyZXAgLUUgIlF0IDV8bW9jLXF0NSA1fG1vYyA1ImAKLS0gICAgaWYgdGVzdCB4IiRtb2N2ZXJzaW9uZ3JlcCIgIT0geCIkbW9jdmVyc2lvbiI7IHRoZW4KLS0gICAgICBBQ19DSEVDS19UT09MKFFUQ0hPT1NFUiwgcXRjaG9vc2VyKQotLSAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHF0Y2hvb3Nlcl0pCi0tICAgICAgcXQ1dG9vbGRpcj1gUVRfU0VMRUNUPXF0NSBxdGNob29zZXIgLXByaW50LWVudiB8IGdyZXAgUVRUT09MRElSIHwgY3V0IC1kICc9JyAtZiAyIHwgY3V0IC1kIFwiIC1mIDJgCi0tICAgICAgbW9jdmVyc2lvbj1gJHF0NXRvb2xkaXIvbW9jIC12IDI+JjFgCi0tICAgICAgbW9jdmVyc2lvbmdyZXA9YGVjaG8gJG1vY3ZlcnNpb24gfCBncmVwIC1FICJRdCA1fG1vYyA1ImAKLS0gICAgICBpZiB0ZXN0IHgiJG1vY3ZlcnNpb25ncmVwIiAhPSB4IiRtb2N2ZXJzaW9uIjsgdGhlbgotLSAgICAgICAgIyBubyB2YWxpZCBtb2MgZm91bmQKLS0gICAgICAgIGVuYWJsZV9wb3BwbGVyX3F0NT1ubzsKLS0gICAgICAgIE1PQ1FUNT0ibm90IGZvdW5kIgotLSAgICAgIGVsc2UKLS0gICAgICAgIE1PQ1FUNT0kcXQ1dG9vbGRpci9tb2MKLS0gICAgICBmaQotLSAgICBlbHNlCi0tICAgICAgTU9DUVQ1PSRNT0NRVDUyCi0tICAgIGZpCi0tICBmaQotKyAgQUNfQVJHX1dJVEgoW21vYy1xdDVdLAotKyAgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1tb2MtcXQ1XSwgW1NldCBsb2NhdGlvbiBvZiBxdDUgbW9jXSksCi0rICAgICAgICAgICAgICBbTU9DUVQ1PSR3aXRodmFsXQotKyAgKQotICAgQUNfU1VCU1QoTU9DUVQ1KQotICAgQUNfTVNHX1JFU1VMVChbJE1PQ1FUNV0pCi0gZmkKLS0tIAotMi41LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXIvMDAwMi1DYWlyb091dHB1dERldi5jYy1maXgtYnVpbGQtZXJyb3Itd2hlbi11c2luZy1maXhlZHBvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXIvMDAwMi1DYWlyb091dHB1dERldi5jYy1maXgtYnVpbGQtZXJyb3Itd2hlbi11c2luZy1maXhlZHBvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMjMxZmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci8wMDAyLUNhaXJvT3V0cHV0RGV2LmNjLWZpeC1idWlsZC1lcnJvci13aGVuLXVzaW5nLWZpeGVkcG8ucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0Zyb20gNjI4NzY2M2U3ZGIwNGRmN2U2ZGVjNThhMWZjNWJiNWQ1MTBlOGJkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDkgQXByIDIwMTggMTk6MTE6MjAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ2Fpcm9PdXRwdXREZXYuY2M6IGZpeCBidWlsZCBlcnJvciB3aGVuIHVzaW5nIGZpeGVkcG9pbnQKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworRml4ZXM6Cit8IDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcG9wcGxlci0wLjYzLjAvcG9wcGxlci9DYWlyb091dHB1dERldi5jYzogSW4gZnVuY3Rpb24gJ2ludCBzcGxhc2hSb3VuZChTcGxhc2hDb29yZCknOgorfCA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3BvcHBsZXItMC42My4wL3BvcHBsZXIvQ2Fpcm9PdXRwdXREZXYuY2M6MTYwNDoyODogZXJyb3I6IGNhbGwgb2Ygb3ZlcmxvYWRlZCAnZmxvb3IoRml4ZWRQb2ludCknIGlzIGFtYmlndW91cworfCAgICByZXR1cm4gKGludClmbG9vcih4ICsgMC41KTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaDo0Mjg6MCwKK3wgICAgICAgICAgICAgICAgICBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvYysrLzcuMy4wL2FybS1vZS1saW51eC1nbnVlYWJpL2JpdHMvb3NfZGVmaW5lcy5oOjM5LAorfCAgICAgICAgICAgICAgICAgIGZyb20gPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvNy4zLjAvYXJtLW9lLWxpbnV4LWdudWVhYmkvYml0cy9jKytjb25maWcuaDo1MzMsCit8ICAgICAgICAgICAgICAgICAgZnJvbSA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2MrKy83LjMuMC9jc3RkaW50OjM4LAorfCAgICAgICAgICAgICAgICAgIGZyb20gPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9wb3BwbGVyLTAuNjMuMC9wb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjOjQ0OgorfCA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmg6MTY1OjE6IG5vdGU6IGNhbmRpZGF0ZTogZG91YmxlIGZsb29yKGRvdWJsZSkKK3wgIF9fTUFUSENBTExYIChmbG9vciwsIChfTWRvdWJsZV8gX194KSwgKF9fY29uc3RfXykpOworfCAgXgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvNy4zLjAvbWF0aC5oOjM2OjAsCit8ICAgICAgICAgICAgICAgICAgZnJvbSA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3BvcHBsZXItMC42My4wL3BvcHBsZXIvQ2Fpcm9PdXRwdXREZXYuY2M6NDY6Cit8IDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvYysrLzcuMy4wL2NtYXRoOjI2MDozOiBub3RlOiBjYW5kaWRhdGU6IGNvbnN0ZXhwciBmbG9hdCBzdGQ6OmZsb29yKGZsb2F0KQorfCAgICBmbG9vcihmbG9hdCBfX3gpCit8ICAgIF5+fn5+Cit8IDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvYysrLzcuMy4wL2NtYXRoOjI2NDozOiBub3RlOiBjYW5kaWRhdGU6IGNvbnN0ZXhwciBsb25nIGRvdWJsZSBzdGQ6OmZsb29yKGxvbmcgZG91YmxlKQorfCAgICBmbG9vcihsb25nIGRvdWJsZSBfX3gpCit8ICAgIF5+fn5+Cit8IDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcG9wcGxlci0wLjYzLjAvcG9wcGxlci9DYWlyb091dHB1dERldi5jYzogSW4gZnVuY3Rpb24gJ2ludCBzcGxhc2hDZWlsKFNwbGFzaENvb3JkKSc6Cit8IDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcG9wcGxlci0wLjYzLjAvcG9wcGxlci9DYWlyb091dHB1dERldi5jYzoxNjA4OjIxOiBlcnJvcjogY2FsbCBvZiBvdmVybG9hZGVkICdjZWlsKFNwbGFzaENvb3JkJiknIGlzIGFtYmlndW91cworfCAgICByZXR1cm4gKGludCljZWlsKHgpOworfCAgICAgICAgICAgICAgICAgICAgICBeCit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmg6NDI4OjAsCit8ICAgICAgICAgICAgICAgICAgZnJvbSA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2MrKy83LjMuMC9hcm0tb2UtbGludXgtZ251ZWFiaS9iaXRzL29zX2RlZmluZXMuaDozOSwKK3wgICAgICAgICAgICAgICAgICBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvYysrLzcuMy4wL2FybS1vZS1saW51eC1nbnVlYWJpL2JpdHMvYysrY29uZmlnLmg6NTMzLAorfCAgICAgICAgICAgICAgICAgIGZyb20gPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvNy4zLjAvY3N0ZGludDozOCwKK3wgICAgICAgICAgICAgICAgICBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcG9wcGxlci0wLjYzLjAvcG9wcGxlci9DYWlyb091dHB1dERldi5jYzo0NDoKK3wgPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oOjE1OToxOiBub3RlOiBjYW5kaWRhdGU6IGRvdWJsZSBjZWlsKGRvdWJsZSkKK3wgIF9fTUFUSENBTExYIChjZWlsLCwgKF9NZG91YmxlXyBfX3gpLCAoX19jb25zdF9fKSk7Cit8ICBeCit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2MrKy83LjMuMC9tYXRoLmg6MzY6MCwKK3wgICAgICAgICAgICAgICAgICBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcG9wcGxlci0wLjYzLjAvcG9wcGxlci9DYWlyb091dHB1dERldi5jYzo0NjoKK3wgPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvNy4zLjAvY21hdGg6MTY1OjM6IG5vdGU6IGNhbmRpZGF0ZTogY29uc3RleHByIGZsb2F0IHN0ZDo6Y2VpbChmbG9hdCkKK3wgICAgY2VpbChmbG9hdCBfX3gpCit8ICAgIF5+fn4KK3wgPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvNy4zLjAvY21hdGg6MTY5OjM6IG5vdGU6IGNhbmRpZGF0ZTogY29uc3RleHByIGxvbmcgZG91YmxlIHN0ZDo6Y2VpbChsb25nIGRvdWJsZSkKK3wgICAgY2VpbChsb25nIGRvdWJsZSBfX3gpCit8ICAgIF5+fn4KK3wgPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9wb3BwbGVyLTAuNjMuMC9wb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjOiBJbiBmdW5jdGlvbiAnaW50IHNwbGFzaEZsb29yKFNwbGFzaENvb3JkKSc6Cit8IDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcG9wcGxlci0wLjYzLjAvcG9wcGxlci9DYWlyb091dHB1dERldi5jYzoxNjEyOjIyOiBlcnJvcjogY2FsbCBvZiBvdmVybG9hZGVkICdmbG9vcihTcGxhc2hDb29yZCYpJyBpcyBhbWJpZ3VvdXMKK3wgICAgcmV0dXJuIChpbnQpZmxvb3IoeCk7Cit8ICAgICAgICAgICAgICAgICAgICAgICBeCit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmg6NDI4OjAsCit8ICAgICAgICAgICAgICAgICAgZnJvbSA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2MrKy83LjMuMC9hcm0tb2UtbGludXgtZ251ZWFiaS9iaXRzL29zX2RlZmluZXMuaDozOSwKK3wgICAgICAgICAgICAgICAgICBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvYysrLzcuMy4wL2FybS1vZS1saW51eC1nbnVlYWJpL2JpdHMvYysrY29uZmlnLmg6NTMzLAorfCAgICAgICAgICAgICAgICAgIGZyb20gPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvNy4zLjAvY3N0ZGludDozOCwKK3wgICAgICAgICAgICAgICAgICBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcG9wcGxlci0wLjYzLjAvcG9wcGxlci9DYWlyb091dHB1dERldi5jYzo0NDoKK3wgPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oOjE2NToxOiBub3RlOiBjYW5kaWRhdGU6IGRvdWJsZSBmbG9vcihkb3VibGUpCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBwb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjIHwgMTIgKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3BvcHBsZXIvQ2Fpcm9PdXRwdXREZXYuY2MgYi9wb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjCitpbmRleCAxODEyNGI4Zi4uNGM4NWFkNjUgMTAwNjQ0CistLS0gYS9wb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjCisrKysgYi9wb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjCitAQCAtMTYwMiwxNSArMTYwMiwyNyBAQCB2b2lkIENhaXJvT3V0cHV0RGV2OjplbmRBY3R1YWxUZXh0KEdmeFN0YXRlICpzdGF0ZSkKKyB9CisgCisgc3RhdGljIGlubGluZSBpbnQgc3BsYXNoUm91bmQoU3BsYXNoQ29vcmQgeCkgeworKyNpZiBkZWZpbmVkKFVTRV9GSVhFRFBPSU5UKQorKyAgcmV0dXJuIEZpeGVkUG9pbnQ6OmZsb29yKHggKyAwLjUpOworKyNlbHNlCisgICByZXR1cm4gKGludClmbG9vcih4ICsgMC41KTsKKysjZW5kaWYKKyB9CisgCisgc3RhdGljIGlubGluZSBpbnQgc3BsYXNoQ2VpbChTcGxhc2hDb29yZCB4KSB7CisrI2lmIGRlZmluZWQoVVNFX0ZJWEVEUE9JTlQpCisrICByZXR1cm4gRml4ZWRQb2ludDo6Y2VpbCh4KTsKKysjZWxzZQorICAgcmV0dXJuIChpbnQpY2VpbCh4KTsKKysjZW5kaWYKKyB9CisgCisgc3RhdGljIGlubGluZSBpbnQgc3BsYXNoRmxvb3IoU3BsYXNoQ29vcmQgeCkgeworKyNpZiBkZWZpbmVkKFVTRV9GSVhFRFBPSU5UKQorKyAgcmV0dXJuIEZpeGVkUG9pbnQ6OmZsb29yKHgpOworKyNlbHNlCisgICByZXR1cm4gKGludClmbG9vcih4KTsKKysjZW5kaWYKKyB9CisgCisgc3RhdGljCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci8wMDAyLWZpeC1nY2MtNi1tYXRoLWFtYmlndW91cy1lcnJvcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci8wMDAyLWZpeC1nY2MtNi1tYXRoLWFtYmlndW91cy1lcnJvcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwNjAwOWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXIvMDAwMi1maXgtZ2NjLTYtbWF0aC1hbWJpZ3VvdXMtZXJyb3JzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIHBvcHBsZXItMC40NS4wL3BvcHBsZXIvQ2Fpcm9PdXRwdXREZXYuY2Mub3JpZwkyMDE2LTA2LTE3IDE0OjIzOjM1LjM5OTA4MzkyOSAtMDQwMAotKysrIHBvcHBsZXItMC40NS4wL3BvcHBsZXIvQ2Fpcm9PdXRwdXREZXYuY2MJMjAxNi0wNi0xNyAxNDozNjo1My4zNTEwOTc4MjUgLTA0MDAKLUBAIC00Miw3ICs0Miw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPGNtYXRoPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Y2Fpcm8uaD4KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuNTcuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuNTcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNiNzdhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlcl8wLjU3LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1TVU1NQVJZID0gIlBvcHBsZXIgaXMgYSBQREYgcmVuZGVyaW5nIGxpYnJhcnkgYmFzZWQgb24gdGhlIHhwZGYtMy4wIGNvZGUgYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9wb3BwbGVyLmZyZWVkZXNrdG9wLm9yZy8ke0JQfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLWFkZC1tYW5hZGF0b3J5LW9wdGlvbnMtdG8tZmluZC1xdDQtcXQ1LW1vYy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItZml4LWdjYy02LW1hdGgtYW1iaWd1b3VzLWVycm9ycy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYmM1YTE5MTc0MTYwNDU1MmM5MGQ0ODQxMDMyMjkzNzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGVhMzdkZTcxYjdkYjc4MjEyZWJjNzlkZjU5Zjk5YjY2NDA5YTI5YzJlYWM0ZDg4MmRhZTlmMjM5N2ZlNDRkOCIKLQotREVQRU5EUyA9ICJmb250Y29uZmlnIHpsaWIgY2Fpcm8gbGNtcyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJqcGVnIG9wZW5qcGVnIHBuZyB0aWZmIG5zcyAke0BiYi51dGlscy5jb250YWlucygnQkJGSUxFX0NPTExFQ1RJT05TJywgJ3F0NS1sYXllcicsICdxdDUnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLWVuYWJsZS1kY3RkZWNvZGVyPWxpYmpwZWcsLS1lbmFibGUtZGN0ZGVjb2Rlcj1ub25lLGpwZWciCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLS1lbmFibGUtbGlicG5nLC0tZGlzYWJsZS1saWJwbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLWVuYWJsZS1saWJ0aWZmLC0tZGlzYWJsZS1saWJ0aWZmLHRpZmYiCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWxpYmN1cmwsLS1kaXNhYmxlLWxpYmN1cmwsY3VybCIKLVBBQ0tBR0VDT05GSUdbb3BlbmpwZWddID0gIi0tZW5hYmxlLWxpYm9wZW5qcGVnPW9wZW5qcGVnMiwtLWRpc2FibGUtbGlib3BlbmpwZWcsb3BlbmpwZWciCi1QQUNLQUdFQ09ORklHW3F0NV0gPSAiLS1lbmFibGUtcG9wcGxlci1xdDUgLS13aXRoLW1vYy1xdDU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3F0NS9tb2MsLS1kaXNhYmxlLXBvcHBsZXItcXQ1LHF0YmFzZSBxdHRvb2xzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbcXQ0ZV0gPSAiLS1lbmFibGUtcG9wcGxlci1xdDQgLS13aXRoLW1vYy1xdDQ9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L21vYzQsLS1kaXNhYmxlLXBvcHBsZXItcXQ0LHF0NC1lbWJlZGRlZCIKLVBBQ0tBR0VDT05GSUdbbnNzXSA9ICItLWVuYWJsZS1saWJuc3MsLS1kaXNhYmxlLWxpYm5zcyxuc3MiCi0KLVNFQ1VSSVRZX0NGTEFHUyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZW5hYmxlLXhwZGYtaGVhZGVycyBcCi0gICAgLS1kaXNhYmxlLWd0ay10ZXN0IFwKLSAgICAtLWVuYWJsZS16bGliIFwKLSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3BvcHBsZXIvLmxpYnMiCi19Ci0KLSMgQWRqdXN0IGxpYnJhcnkgbmFtZXMgd2hlbiBidWlsZGluZyBmb3IgUVQ0ZQotUVQ0RV9QQVRDSEVTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3F0NGUnLCAnZmlsZTovL2ZpeC1xdDRlLWxpYnJhcnktZGVwZW5kZW5jaWVzLnBhdGNoJywgJycsIGQpfSIKLVNSQ19VUklfYXBwZW5kID0gIiR7UVQ0RV9QQVRDSEVTfSIKLQotIyBjaGVjayBmb3IgVEFSR0VUX0ZQVT1zb2Z0IGFuZCBpbmZvcm0gY29uZmlndXJlIG9mIHRoZSByZXN1bHQgc28gaXQgY2FuIGRpc2FibGUgc29tZSBmbG9hdGluZyBwb2ludHMKLWRlZiBnZXRfcG9wcGxlcl9mcHVfc2V0dGluZyhiYiwgZCk6Ci0gICAgaWYgZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSBpbiBbICdzb2Z0JyBdOgotICAgICAgICByZXR1cm4gIi0tZW5hYmxlLWZpeGVkcG9pbnQiCi0gICAgcmV0dXJuICIiCi0KLUVYVFJBX09FQ09ORiArPSAiJHtAZ2V0X3BvcHBsZXJfZnB1X3NldHRpbmcoYmIsIGQpfSIKLQotUEFDS0FHRVMgPSsgImxpYnBvcHBsZXIgbGlicG9wcGxlci1nbGliIgotRklMRVNfbGlicG9wcGxlciA9ICIke2xpYmRpcn0vbGlicG9wcGxlci5zby4qIgotRklMRVNfbGlicG9wcGxlci1nbGliID0gIiR7bGliZGlyfS9saWJwb3BwbGVyLWdsaWIuc28uKiIKLQotUkRFUEVORFNfbGlicG9wcGxlciA9ICJwb3BwbGVyLWRhdGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlcl8wLjYzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlcl8wLjYzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFjYjM1NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuNjMuMC5iYgpAQCAtMCwwICsxLDU2IEBACitTVU1NQVJZID0gIlBvcHBsZXIgaXMgYSBQREYgcmVuZGVyaW5nIGxpYnJhcnkgYmFzZWQgb24gdGhlIHhwZGYtMy4wIGNvZGUgYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9wb3BwbGVyLmZyZWVkZXNrdG9wLm9yZy8ke0JQfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1vdmVyd3JpdGUtYWxsLW91ci1idWlsZC1mbGFncy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItQ2Fpcm9PdXRwdXREZXYuY2MtZml4LWJ1aWxkLWVycm9yLXdoZW4tdXNpbmctZml4ZWRwby5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNjZhNTRkYTQ4OTZiMTQwODYxMTY5OWZlZGE1YzE4MjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjdjYzhhZGRhZmM3OTFlMWEyNmNlNmFjYzJiNDkwOTI2ZWE3M2E0Zjg5MTk2ZGQ4YTc3NDJjZmY3Y2Y4YTExMSIKKworREVQRU5EUyA9ICJmb250Y29uZmlnIHpsaWIgY2Fpcm8gbGNtcyIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1BBQ0tBR0VDT05GSUcgPz89ICJqcGVnIG9wZW5qcGVnIHBuZyB0aWZmIG5zcyAke0BiYi51dGlscy5jb250YWlucygnQkJGSUxFX0NPTExFQ1RJT05TJywgJ3F0NS1sYXllcicsICdxdDUnLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItRFdJVEhfSlBFRz1PTiAtREVOQUJMRV9EQ1RERUNPREVSPWxpYmpwZWcsLURXSVRIX0pQRUc9T0ZGIC1ERU5BQkxFX0RDVERFQ09ERVI9bm9uZSxqcGVnIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi1EV0lUSF9QTkc9T04sLURXSVRIX1BORz1PRkYsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItRFdJVEhfVElGRj1PTiwtRFdJVEhfVElGRj1PRkYsdGlmZiIKK1BBQ0tBR0VDT05GSUdbY3VybF0gPSAiLURFTkFCTEVfTElCQ1VSTD1PTiwtREVOQUJMRV9MSUJDVVJMPU9GRixjdXJsIgorUEFDS0FHRUNPTkZJR1tvcGVuanBlZ10gPSAiLURFTkFCTEVfTElCT1BFTkpQRUc9b3BlbmpwZWcyLC1ERU5BQkxFX0xJQk9QRU5KUEVHPW5vbmUsb3BlbmpwZWciCitQQUNLQUdFQ09ORklHW3F0NV0gPSAiLURFTkFCTEVfUVQ1PU9OLC1ERU5BQkxFX1FUNT1PRkYscXRiYXNlIHF0dG9vbHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi1EV0lUSF9OU1MzPU9OLC1EV0lUSF9OU1MzPU9GRixuc3MiCisKKyMgc3VycHJpc2UgLSBkaWQgbm90IGV4cGVjdCB0aGlzIHRvIHdvcmsgOikKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncXQ1JywgJ2NtYWtlX3F0NScsICcnLCBkKX0KKworU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCisKK0VYVFJBX09FQ01BS0UgKz0gIiBcCisgICAgLURFTkFCTEVfWFBERl9IRUFERVJTPU9OIFwKKyAgICAtREJVSUxEX0dUS19URVNUUz1PRkYgXAorICAgIC1ERU5BQkxFX1pMSUI9T04gXAorIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworICAgICMgcG9wcGxlciBtYWNybyB1c2VzIHBrZy1jb25maWcgdG8gY2hlY2sgZm9yIGctaXIgcnVudGltZXMuIFNvbWV0aGluZworICAgICMgbWFrZXMgdGhlbSBwb2ludCB0byAvdXNyL2Jpbi4gQWxpZ24gdGhlbSB0byBzeXNyb290IC0gdGhhdCdzIHdoZXJlIHRoZQorICAgICMgZ2l0LXdyYXBwZXJzIGFyZToKKyAgICBzZWQgLWkgJ3M6ICR7YmluZGlyfS9nLWlyOiAke1NUQUdJTkdfQklORElSfS9nLWlyOicgJHtCfS9idWlsZC5uaW5qYQorfQorCisjIGNoZWNrIGZvciBUQVJHRVRfRlBVPXNvZnQgYW5kIGluZm9ybSBjb25maWd1cmUgb2YgdGhlIHJlc3VsdCBzbyBpdCBjYW4gZGlzYWJsZSBzb21lIGZsb2F0aW5nIHBvaW50cworZGVmIGdldF9wb3BwbGVyX2ZwdV9zZXR0aW5nKGJiLCBkKToKKyAgICBpZiBkLmdldFZhcignVEFSR0VUX0ZQVScpIGluIFsgJ3NvZnQnIF06CisgICAgICAgIHJldHVybiAiLURVU0VfRklYRURQT0lOVD1PTiIKKyAgICByZXR1cm4gIiIKKworRVhUUkFfT0VDTUFLRSArPSAiJHtAZ2V0X3BvcHBsZXJfZnB1X3NldHRpbmcoYmIsIGQpfSIKKworUEFDS0FHRVMgPSsgImxpYnBvcHBsZXIgbGlicG9wcGxlci1nbGliIgorRklMRVNfbGlicG9wcGxlciA9ICIke2xpYmRpcn0vbGlicG9wcGxlci5zby4qIgorRklMRVNfbGlicG9wcGxlci1nbGliID0gIiR7bGliZGlyfS9saWJwb3BwbGVyLWdsaWIuc28uKiIKKworUkRFUEVORFNfbGlicG9wcGxlciA9ICJwb3BwbGVyLWRhdGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItbGlieG1sMi1kZXRlY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItbGlieG1sMi1kZXRlY3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwOGVjNmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLWxpYnhtbDItZGV0ZWN0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSBkNTJlMzMwYmU4OTViYjhjNWYwZmIzZTI4ODQ3NjZhY2JkOTQyYTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGhpbGlwIEJhbGlzdGVyIDxwaGlsaXBAYmFsaXN0ZXIub3JnPgotRGF0ZTogVHVlLCAxIEp1bCAyMDE0IDA5OjQwOjQ0IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBwa2ctY29uZmlnIGZvciBsaWJ4bWwyIGRldGVjdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi14bWwyLWNvbmZpZyBkb2VzIG5vdCB3b3JrLiBVc2UgcGtnY29uZmlnIHRvIHNldCBDUFBGTEFHUyBhbmQgTElCUy4KLQotU2lnbmVkLW9mZi1ieTogUGhpbGlwIEJhbGlzdGVyIDxwaGlsaXBAYmFsaXN0ZXIub3JnPgotLS0tCi0gY29uZmlndXJlLmluIHwgMTUgKystLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IGY4YmY0NjYuLjFmNGZhYmYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTczNCwxOSArNzM0LDggQEAgUEdBQ19BUkdfQk9PTCh3aXRoLCBsaWJ4bWwsIG5vLCBbYnVpbGQgd2l0aCBYTUwgc3VwcG9ydF0sCi0gICAgICAgICAgICAgICBbQUNfREVGSU5FKFtVU0VfTElCWE1MXSwgMSwgW0RlZmluZSB0byAxIHRvIGJ1aWxkIHdpdGggWE1MIHN1cHBvcnQuICgtLXdpdGgtbGlieG1sKV0pXSkKLSAKLSBpZiB0ZXN0ICIkd2l0aF9saWJ4bWwiID0geWVzIDsgdGhlbgotLSAgQUNfQ0hFQ0tfUFJPR1MoWE1MMl9DT05GSUcsIHhtbDItY29uZmlnKQotLSAgaWYgdGVzdCAtbiAiJFhNTDJfQ09ORklHIjsgdGhlbgotLSAgICBmb3IgcGdhY19vcHRpb24gaW4gYCRYTUwyX0NPTkZJRyAtLWNmbGFnc2A7IGRvCi0tICAgICAgY2FzZSAkcGdhY19vcHRpb24gaW4KLS0gICAgICAgIC1JKnwtRCopIENQUEZMQUdTPSIkQ1BQRkxBR1MgJHBnYWNfb3B0aW9uIjs7Ci0tICAgICAgZXNhYwotLSAgICBkb25lCi0tICAgIGZvciBwZ2FjX29wdGlvbiBpbiBgJFhNTDJfQ09ORklHIC0tbGlic2A7IGRvCi0tICAgICAgY2FzZSAkcGdhY19vcHRpb24gaW4KLS0gICAgICAgIC1MKikgTERGTEFHUz0iJExERkxBR1MgJHBnYWNfb3B0aW9uIjs7Ci0tICAgICAgZXNhYwotLSAgICBkb25lCi0tICBmaQotKyAgQ1BQRkxBR1M9IiRDUFBGTEFHUyBgcGtnLWNvbmZpZyAtLXNob3J0LWVycm9ycyAtLXByaW50LWVycm9ycyAtLWNmbGFncyAibGlieG1sLTIuMCIgMj4mMWAiCi0rICBMSUJTPSJgcGtnLWNvbmZpZyAtLXNob3J0LWVycm9ycyAtLXByaW50LWVycm9ycyAtLWxpYnMgImxpYnhtbC0yLjAiIDI+JjFgICRMSUJTIgotIGZpCi0gCi0gQUNfU1VCU1Qod2l0aF9saWJ4bWwpCi0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzL25vdC1jaGVjay1saWJwZXJsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzL25vdC1jaGVjay1saWJwZXJsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTk5ZjM5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9maWxlcy9ub3QtY2hlY2stbGlicGVybC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVtQQVRDSF0gbm90IGNoZWNrIGxpYnBlcmwgdW5kZXIgY3Jvc3MgY29tcGlsaW5nCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotbGlicGVybCBsZGZsYWdzIHJldHVybmVkIGJ5IFBHQUNfQ0hFQ0tfUEVSTF9FTUJFRF9MREZMQUdTIGFyZSBuYXRpdmUsCi1jYW4gbm90IGJlIHVzZWQgdG8gY2hlY2sgdGFyZ2V0IGxpYnJhcnkuCi0KLXBvc3RwcmVzcWwgaGFzIHRoZSBkZXBlbmRlbmN5IG9uIHBlcmwsIHNvIG5vdCBuZWVkIHRvIGNoZWNrIGxpYnBlcmwKLWFnYWluLCBsaWtlIGluIHBvc3RncmVzcWwtOS4yLjQgCi0KLVNpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggYWUxYTVhMC4uOWEwOTcwZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTg3Nyw3ICsxODc3LDcgQEAgaWYgdGVzdCAiJHdpdGhfdGNsIiA9IHllczsgdGhlbgotIGZpCi0gCi0gIyBjaGVjayBmb3IgPHBlcmwuaD4KLS1pZiB0ZXN0ICIkd2l0aF9wZXJsIiA9IHllczsgdGhlbgotK2lmIHRlc3QgIiR3aXRoX3BlcmwiID0geWVzICYmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbm87IHRoZW4KLSAgIGFjX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCi0gICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJHBlcmxfYXJjaGxpYmV4cC9DT1JFIgotICAgQUNfQ0hFQ0tfSEVBREVSKHBlcmwuaCwgW10sIFtBQ19NU0dfRVJST1IoW2hlYWRlciBmaWxlIDxwZXJsLmg+IGlzIHJlcXVpcmVkIGZvciBQZXJsXSldLAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcmVtb3ZlLmF1dG9jb25mLnZlcnNpb24uY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcmVtb3ZlLmF1dG9jb25mLnZlcnNpb24uY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlMjNmZDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzL3JlbW92ZS5hdXRvY29uZi52ZXJzaW9uLmNoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotSW5kZXg6IHBvc3RncmVzcWwtOS4yLjQvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcG9zdGdyZXNxbC05LjIuNC5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIHBvc3RncmVzcWwtOS4yLjQvY29uZmlndXJlLmluCi1AQCAtMTksMTAgKzE5LDYgQEAgbTRfcGF0dGVybl9mb3JiaWQoXlBHQUNfKWRubCB0byBjYXRjaCB1bgotIAotIEFDX0lOSVQoW1Bvc3RncmVTUUxdLCBbOS40LjJdLCBbcGdzcWwtYnVnc0Bwb3N0Z3Jlc3FsLm9yZ10pCi0gCi0tbTRfaWYobTRfZGVmbihbbTRfUEFDS0FHRV9WRVJTSU9OXSksIFsyLjY5XSwgW10sIFttNF9mYXRhbChbQXV0b2NvbmYgdmVyc2lvbiAyLjY5IGlzIHJlcXVpcmVkLgotLVVudGVzdGVkIGNvbWJpbmF0aW9ucyBvZiAnYXV0b2NvbmYnIGFuZCBQb3N0Z3JlU1FMIHZlcnNpb25zIGFyZSBub3QKLS1yZWNvbW1lbmRlZC4gIFlvdSBjYW4gcmVtb3ZlIHRoZSBjaGVjayBmcm9tICdjb25maWd1cmUuaW4nIGJ1dCBpdCBpcyB0aGVuCi0teW91ciByZXNwb25zaWJpbGl0eSB3aGV0aGVyIHRoZSByZXN1bHQgd29ya3Mgb3Igbm90Ll0pXSkKLSBBQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoYykgMTk5Ni0yMDE0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cF0pCi0gQUNfQ09ORklHX1NSQ0RJUihbc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuY10pCi0gQUNfQ09ORklHX0FVWF9ESVIoY29uZmlnKQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvcG9zdGdyZXNxbF85LjQuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvcG9zdGdyZXNxbF85LjQuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYzA5OWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWxfOS40LjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotcmVxdWlyZSBwb3N0Z3Jlc3FsLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTgxYjY5ZGRiMzFhOGJlNjZiYWFmZDE0YTkwMTQ2ZWUyIgotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL3JlbW92ZS5hdXRvY29uZi52ZXJzaW9uLmNoZWNrLnBhdGNoIFwKLSAgICBmaWxlOi8vbm90LWNoZWNrLWxpYnBlcmwucGF0Y2ggXAotIgotCi1kb19jb21waWxlX3ByZXBlbmRfbGliYy1tdXNsKCkgewotICAgIHNlZCAtaSAtZSAncy9cLWxuc2wvL2cnICR7Qn0vc3JjL01ha2VmaWxlLmdsb2JhbAotfQotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGFhZGEwODMzYTkyMDhhZTVmYWI5NjZjNzNjMzkzNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTJiZmIzYzdlOGU0NTUxNWVmOTIxYWQzNjVlMTIyNjgyYTVjNDkzNWRjYzAwMzI2NDQ0MzNhZjJkZTMxYWNjNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc29jaS9zb2NpXzMuMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zb2NpL3NvY2lfMy4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmNWE0ODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zb2NpL3NvY2lfMy4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxNSBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQotCi1ERVNDUklQVElPTiA9ICJUaGUgQysrIERhdGFiYXNlIEFjY2VzcyBMaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3NvY2kuc291cmNlZm9yZ2UubmV0IgotTElDRU5TRSA9ICJCU0wtMS4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRV8xXzAudHh0O21kNT1lNDIyNGNjYWVjYjE0ZDk0MmM3MWQzMWJlZjIwZDc4YyIKLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAiYm9vc3QiCi0KLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59LyR7QlB9LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zb2NpX2xpYmRpci5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImJjM2MzNWY2Y2QzZjgwYTFiZTE5ZmUzMGIzYzExMWJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwZWEyZjRkMjY2MzllZjViNWNkYzI0ZmIzMDBiMzg5Njc0NjI0M2RiYjc3Yjc0MzU4MmRlMmZmNDQzY2NiMWMiCi0KLVRFU1RDT05GSUcgPSAnLURTT0NJX1RFU1RfRU1QVFlfQ09OTlNUUj0iZHVtbXkiIC1EU09DSV9URVNUX1NRTElURTNfQ09OTlNUUj0idGVzdC5kYiIgXAotICAgICAgICAgICAgICAtRFNPQ0lfVEVTVF9QT1NUR1JFU1FMX0NPTk5TVFI6U1RSSU5HPSJkYm5hbWU9c29jaV90ZXN0IiBcCi0gICAgICAgICAgICAgIC1EU09DSV9URVNUX01ZU1FMX0NPTk5TVFI6U1RSSU5HPSJkYj1zb2NpX3Rlc3QgdXNlcj1vZSBwYXNzd29yZD1vZSInCi0KLU9CQVNFRElSID89ICIvb3B0L29yYWNsZSIKLU9JTkNESVIgPSAicmRibXMvcHVibGljIgotT0xJQkRJUiA9ICJsaWIiCi0KLVBBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLURTT0NJX1NRTElURTM9T04sLURTT0NJX1NRTElURTM9T0ZGLHNxbGl0ZTMsIgotUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLURTT0NJX01ZU1FMPU9OLC1EU09DSV9NWVNRTD1PRkYsbWFyaWFkYiwiCi1QQUNLQUdFQ09ORklHW3Bvc3RncmVzcWxdID0gIi1EU09DSV9QT1NUR1JFU1FMPU9OLC1EU09DSV9QT1NUR1JFU1FMPU9GRixwb3N0Z3Jlc3FsLCIKLVBBQ0tBR0VDT05GSUdbb2RiY10gPSAiLURTT0NJX09EQkM9T04sLURTT0NJX09EQkM9T0ZGLCwiCi1QQUNLQUdFQ09ORklHW2VtcHR5XSA9ICItRFNPQ0lfRU1QVFk9T04sLURTT0NJX0VNUFRZPU9GRiwsIgotUEFDS0FHRUNPTkZJR1tvcmFjbGVdID0gIi1EV0lUSF9PUkFDTEU9T04gLS13aXRoLW9yYWNsZS1pbmNsdWRlPSR7T0lOQ0RJUn0gLS13aXRoLW9yYWNsZS1saWI9JHtPTElCRElSfSwtRFdJVEhfT1JBQ0xFPU9GRiwsIgotUEFDS0FHRUNPTkZJR1twdGVzdF0gPSAiJHtURVNUQ09ORklHfSwsLCIKLQotIyBlbmFibGUgeW91ciBiYWNrZW5kIGJ5IGRlZmF1bHQgd2UgZW5hYmxlICdlbXB0eScKLVBBQ0tBR0VDT05GSUcgPz89ICJlbXB0eSIKLQotIyBUYWtlIHRoZSBmbGFncyBhZGRlZCBieSBQQUNLQUdFQ09ORklHIGFuZCBwYXNzIHRoZW0gdG8gY21ha2UuCi1FWFRSQV9PRUNNQUtFID0gIiR7RVhUUkFfT0VDT05GfSAtRFNPQ0lfTElCRElSPSR7bGliZGlyfSIKLURJU0FCTEVfU1RBVElDID0gIiIKLQotaW5oZXJpdCBjbWFrZQotCi1QQUNLQUdFUyArPSAiJHtQTn0tc3FsaXRlMyAke1BOfS1teXNxbCAke1BOfS1wb3N0Z3Jlc3FsICR7UE59LW9kYmMgJHtQTn0tb3JhY2xlIgotCi1GSUxFU18ke1BOfS1zcWxpdGUzID0gIiR7bGliZGlyfS9saWIke0JQTn1fc3FsaXRlMy5zby4qIgotRklMRVNfJHtQTn0tbXlzcWwgPSAiJHtsaWJkaXJ9L2xpYiR7QlBOfV9teXNxbC5zby4qIgotRklMRVNfJHtQTn0tcG9zdGdyZXNxbCA9ICIke2xpYmRpcn0vbGliJHtCUE59X3Bvc3RncmVzcWwuc28uKiIKLUZJTEVTXyR7UE59LW9kYmMgPSAiJHtsaWJkaXJ9L2xpYiR7QlBOfV9vZGJjLnNvLioiCi1GSUxFU18ke1BOfS1vcmFjbGUgPSAiJHtsaWJkaXJ9L2xpYiR7QlBOfV9vcmFjbGUuc28uKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3BpdG9vbHMvc3BpdG9vbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGl0b29scy9zcGl0b29sc19naXQuYmIKaW5kZXggZjgwODEyNS4uM2Y2Y2RjNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGl0b29scy9zcGl0b29sc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGl0b29scy9zcGl0b29sc19naXQuYmIKQEAgLTQsMTEgKzQsMTYgQEAKIExJQ0VOU0U9IkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGMxNjY2NmFlNmMxNTk4NzZhMGJhNjMwOTk2MTQzODEiCiAKK1BSID0gInIwIgorCitCUFYgPSAiMC44LjEiCitQViA9ICIke0JQVn0iCitTUkNSRVYgPSAiMzE4YmNhZTUyNDk3MjI4NzNiZjU4YjI3YWZkZDIwNDczYzcwNDdjYyIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NwYi0vc3BpLXRvb2xzLmdpdDtwcm90b2NvbD1naXQiCiAKLVNSQ1JFViA9ICIwMzQwNWFiNDU4ODRlNDI2NGRmYTAzNzFjMDMyYjJiYWFlZWFhYTk4IgogCiBpbmhlcml0IGF1dG90b29scwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9GaXgtdGhlLW1lbW9yeS1sZWFrLXByb2JsZW0td2hlbi1IQVZFX0VOVklST04tZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL0ZpeC10aGUtbWVtb3J5LWxlYWstcHJvYmxlbS13aGVuLUhBVkVfRU5WSVJPTi1kZWZpbmVkLnBhdGNoCmluZGV4IDJhYzljMGIuLjVkNDgxZjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL0ZpeC10aGUtbWVtb3J5LWxlYWstcHJvYmxlbS13aGVuLUhBVkVfRU5WSVJPTi1kZWZpbmVkLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL0ZpeC10aGUtbWVtb3J5LWxlYWstcHJvYmxlbS13aGVuLUhBVkVfRU5WSVJPTi1kZWZpbmVkLnBhdGNoCkBAIC00LDkgKzQsMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogWHVmZW5nIFpoYW5nIDx4dWZlbmcuemhhbmdAd2luZHJpdmVyLmNvbT4KIC0tLQotLS0tIGEvbGliL2dwcm9jZXNzLmMKLSsrKyBiL2xpYi9ncHJvY2Vzcy5jCi1AQCAtMTQyMSw2ICsxNDIxLDE4IEBACitJbmRleDogc3lzbG9nLW5nLTMuOC4xL2xpYi9ncHJvY2Vzcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3lzbG9nLW5nLTMuOC4xLm9yaWcvbGliL2dwcm9jZXNzLmMKKysrKyBzeXNsb2ctbmctMy44LjEvbGliL2dwcm9jZXNzLmMKK0BAIC0xNDMyLDYgKzE0MzIsMTggQEAgZ19wcm9jZXNzX3N0YXJ0dXBfb2sodm9pZCkKICB2b2lkCiAgZ19wcm9jZXNzX2ZpbmlzaCh2b2lkKQogIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL2NvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWVuYWJsZS10aHJlYWQtdGxzLXRvLW1hbmFnZS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1lbmFibGUtdGhyZWFkLXRscy10by1tYW5hZ2UtLnBhdGNoCmluZGV4IGNjOGQxMTAuLmMxNzJlNGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL2NvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWVuYWJsZS10aHJlYWQtdGxzLXRvLW1hbmFnZS0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZW5hYmxlLXRocmVhZC10bHMtdG8tbWFuYWdlLS5wYXRjaApAQCAtMTAsMTMgKzEwLDEzIEBACiAgY29uZmlndXJlLmFjIHwgMTcgKysrKysrKysrKystLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNDc0ZTA5NC4uY2VkY2E1NCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTIwLDYgKzEyMCw5IEBAIEFDX0FSR19FTkFCTEUobWVtdHJhY2UsCi0gQUNfQVJHX0VOQUJMRShzc2wsCi0gICAgICAgICAgICAgICBbICAtLWVuYWJsZS1zc2wgICAgICAgIEVuYWJsZSBTU0wgc3VwcG9ydC5dLCxlbmFibGVfc3NsPSJhdXRvIikKK0luZGV4OiBzeXNsb2ctbmctMy44LjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3lzbG9nLW5nLTMuOC4xLm9yaWcvY29uZmlndXJlLmFjCisrKysgc3lzbG9nLW5nLTMuOC4xL2NvbmZpZ3VyZS5hYworQEAgLTE0Nyw2ICsxNDcsOSBAQCBBQ19BUkdfRU5BQkxFKGdwcm9mLAorIEFDX0FSR19FTkFCTEUobWVtdHJhY2UsCisgICAgICAgICAgICAgICBbICAtLWVuYWJsZS1tZW10cmFjZSAgIEVuYWJsZSBhbHRlcm5hdGl2ZSBsZWFrIGRlYnVnZ2luZyBjb2RlLl0pCiAgCiArQUNfQVJHX0VOQUJMRSh0aHJlYWQtdGxzLAogKyAgICAgICAgICAgICAgWyAgLS1lbmFibGUtdGhyZWFkLXRscyAgICAgICAgRW5hYmxlIFRocmVhZCBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgc3VwcG9ydC5dLCxlbmFibGVfdGhyZWFkX3Rscz0ibm8iKQpAQCAtMjQsNyArMjQsNyBAQAogIEFDX0FSR19FTkFCTEUoZHluYW1pYy1saW5raW5nLAogICAgICAgICAgICAgICAgWyAgLS1lbmFibGUtZHluYW1pYy1saW5raW5nICAgICAgICBMaW5rIGV2ZXJ5dGhpbmcgZHluYW1pY2FsbHkuXSwsZW5hYmxlX2R5bmFtaWNfbGlua2luZz0iYXV0byIpCiAgCi1AQCAtMzgxLDEyICszODQsMTQgQEAgZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorQEAgLTQ4NiwxMiArNDg5LDE0IEBAIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBkbmwgSXMgdGhlIF9fdGhyZWFkIGtleXdvcmQgYXZhaWxhYmxlPwogIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAKQEAgLTQ1LDYgKzQ1LDMgQEAKICAKICBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgZG5sIEhvdyB0byBkbyBzdGF0aWMgbGlua2luZz8KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvZml4LWNvbmZpZy1saWJuZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9maXgtY29uZmlnLWxpYm5ldC5wYXRjaAppbmRleCA3NTU4MDNjLi41NTNmNGE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9maXgtY29uZmlnLWxpYm5ldC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9maXgtY29uZmlnLWxpYm5ldC5wYXRjaApAQCAtMTAsMTEgKzEwLDExIEBACiAgY29uZmlndXJlLmFjIHwgICAyNyArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KICAxIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiMWUxOGI0Li44ZTEzMDI1IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC03Myw2ICs3Myw5IEBAIEFDX0NPTkZJR19IRUFERVJTKGNvbmZpZy5oKQorSW5kZXg6IHN5c2xvZy1uZy0zLjguMS9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNsb2ctbmctMy44LjEub3JpZy9jb25maWd1cmUuYWMKKysrKyBzeXNsb2ctbmctMy44LjEvY29uZmlndXJlLmFjCitAQCAtMTA0LDYgKzEwNCw5IEBAIEFDX0NPTkZJR19IRUFERVJTKGNvbmZpZy5oKQogIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBkbmwgQXJndW1lbnRzCiAgCkBAIC0yNCw3ICsyNCw3IEBACiAgQUNfQVJHX1dJVEgobGlibmV0LAogICAgIFsgIC0td2l0aC1saWJuZXQ9cGF0aCAgICAgIHVzZSBwYXRoIHRvIGxpYm5ldC1jb25maWcgc2NyaXB0XSwKICAgICAsCi1AQCAtNzY4LDIyICs3NzEsMjYgQEAgZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorQEAgLTg5MywyMiArODk2LDI2IEBAIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBkbmwgbGlibmV0IGhlYWRlcnMvbGlicmFyaWVzCiAgZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIEFDX01TR19DSEVDS0lORyhmb3IgTElCTkVUKQpAQCAtNjEsNiArNjEsMyBAQAogIGlmIHRlc3QgIngkZW5hYmxlX3Nwb29mX3NvdXJjZSIgPSAieGF1dG8iOyB0aGVuCiAgCUFDX01TR19DSEVDS0lORyh3aGV0aGVyIHRvIGVuYWJsZSBzcG9vZiBzb3VyY2Ugc3VwcG9ydCkKICAgICAgICAgIGlmIHRlc3QgIngkTElCTkVUX0xJQlMiICE9ICJ4IjsgdGhlbgotLS0gCi0xLjcuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9maXgtaW52YWxpZC1vd25lcnNoaXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9maXgtaW52YWxpZC1vd25lcnNoaXAucGF0Y2gKaW5kZXggZmFmOTY3Mi4uNTRlY2NlNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvZml4LWludmFsaWQtb3duZXJzaGlwLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL2ZpeC1pbnZhbGlkLW93bmVyc2hpcC5wYXRjaApAQCAtMTAsMTEgKzEwLDExIEBACiAgc2NsL01ha2VmaWxlLmFtIHwgICAgMiArLQogIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvc2NsL01ha2VmaWxlLmFtIGIvc2NsL01ha2VmaWxlLmFtCi1pbmRleCA1N2ZhZDVkLi4yYTI5Y2E1IDEwMDY0NAotLS0tIGEvc2NsL01ha2VmaWxlLmFtCi0rKysgYi9zY2wvTWFrZWZpbGUuYW0KLUBAIC0xNCw3ICsxNCw3IEBAIHNjbC1pbnN0YWxsLWRhdGEtbG9jYWw6CitJbmRleDogc3lzbG9nLW5nLTMuOC4xL3NjbC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN5c2xvZy1uZy0zLjguMS5vcmlnL3NjbC9NYWtlZmlsZS5hbQorKysrIHN5c2xvZy1uZy0zLjguMS9zY2wvTWFrZWZpbGUuYW0KK0BAIC0yNyw3ICsyNyw3IEBAIHNjbC1pbnN0YWxsLWRhdGEtbG9jYWw6CiAgCQlmaTsgXAogIAlkb25lCiAgCSQobWtpbnN0YWxsZGlycykgJChERVNURElSKS8kKHNjbGRpcikKQEAgLTIzLDYgKzIzLDMgQEAKICAJY2htb2QgLVIgdStyd1ggJChERVNURElSKS8kKHNjbGRpcikKICAKICBzY2wtdW5pbnN0YWxsLWxvY2FsOgotLS0gCi0xLjcuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmcuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvc3lzbG9nLW5nLmluYwppbmRleCBmMWJmOWIwLi43NzFjZGIxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmcuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL3N5c2xvZy1uZy5pbmMKQEAgLTQxLDcgKzQxLDcgQEAKICIKIAogQ09ORklHX1RMUyA9ICItLWVuYWJsZS10aHJlYWQtdGxzIgotQ09ORklHX1RMU19hcm0gPSAiJHtAYmFzZV9jb25kaXRpb25hbCggIkRFQlVHX0JVSUxEIiwgIjEiLCAiIC0tZGlzYWJsZS10aHJlYWQtdGxzIiwgIiAtLWVuYWJsZS10aHJlYWQtdGxzIiwgZCApfSIKK0NPTkZJR19UTFNfYXJtID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCAiREVCVUdfQlVJTEQiLCAiMSIsICIgLS1kaXNhYmxlLXRocmVhZC10bHMiLCAiIC0tZW5hYmxlLXRocmVhZC10bHMiLCBkICl9IgogCiBQQUNLQUdFQ09ORklHID8/PSAiIFwKICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2IHN5c3RlbWQnLCBkKX0gXApAQCAtMTAxLDcgKzEwMSw3IEBACiAKICMgc3lzbG9nIGluaXRzY3JpcHQgaXMgaGFuZGxlZCBleHBsaWNpdGx5IGJlY2F1c2Ugb3JkZXIgb2YKICMgdXBkYXRlLXJjLmQgYW5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgaXMgaW1wb3J0YW50Ci1SREVQRU5EU18ke1BOfSArPSAiICR7QGJhc2VfY29uZGl0aW9uYWwoIk9OTElORV9QQUNLQUdFX01BTkFHRU1FTlQiLCAibm9uZSIsICIiLCAidXBkYXRlLXJjLmQiLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAiICR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJPTkxJTkVfUEFDS0FHRV9NQU5BR0VNRU5UIiwgIm5vbmUiLCAiIiwgInVwZGF0ZS1yYy5kIiwgZCl9IgogCiBSQ09ORkxJQ1RTXyR7UE59ID0gImJ1c3lib3gtc3lzbG9nIHN5c2tsb2dkIHJzeXNsb2ciCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdG9tb3lvLXRvb2xzL3RvbW95by10b29sc18yLjUuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdG9tb3lvLXRvb2xzL3RvbW95by10b29sc18yLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGExYjRjZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RvbW95by10b29scy90b21veW8tdG9vbHNfMi41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIlRPTU9ZTyBMaW51eCB0b29scyIKLURFU0NSSVBUSU9OID0gIlRPTU9ZTyBMaW51eCBpcyBhIE1hbmRhdG9yeSBBY2Nlc3MgQ29udHJvbCAoTUFDKSBpbXBsZW1lbnRhdGlvbiBcCi1mb3IgTGludXggdGhhdCBjYW4gYmUgdXNlZCB0byBpbmNyZWFzZSB0aGUgc2VjdXJpdHkgb2YgYSBzeXN0ZW0sIHdoaWxlIGFsc28gXAotYmVpbmcgdXNlZnVsIHB1cmVseSBhcyBhIHN5c3RlbSBhbmFseXNpcyB0b29sLiIKLUhPTUVQQUdFID0gImh0dHA6Ly90b21veW8uc291cmNlZm9yZ2UuanAvIgotU0VDVElPTiA9ICJTeXN0ZW0gRW52aXJvbm1lbnQvS2VybmVsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9qYWlzdC5kbC5zb3VyY2Vmb3JnZS5qcC90b21veW8vNTMzNTcvJHtCUH0tMjAxNDA2MDEudGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjg4ODg2OWI3OTMxMjdmMDBkNjQzOWEzMjQ2NTk4YjgzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExOGVmNmJhMWZiZjdjMGI4MzAxOGMzYTBkNGQ1NDg1ZGZiOWI1YjdmNjQ3ZjM3Y2U5ZjYzODQxYTMxMzNjMmEiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnRvbW95bzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLUZJTEVTXyR7UE59ICAgICArPSAiJHtsaWJkaXJ9L3RvbW95byIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3RvbW95by8uZGVidWciCi0KLURFUEVORFMgPSAibGludXgtbGliYy1oZWFkZXJzIG5jdXJzZXMiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBVU1JMSUJESVI9JHtsaWJkaXJ9IgotCi1kb19jb21waWxlICgpIHsKLSAgICBvZV9ydW5tYWtlICdDQz0ke0NDfScKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5TVEFMTERJUj0ke0R9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Rvc2NvdGVybS90b3Njb3Rlcm1fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90b3Njb3Rlcm0vdG9zY290ZXJtX2dpdC5iYgppbmRleCBhYTAzMWZlLi44NzliNjdiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Rvc2NvdGVybS90b3Njb3Rlcm1fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdG9zY290ZXJtL3Rvc2NvdGVybV9naXQuYmIKQEAgLTExLDcgKzExLDkgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBnaXRwa2d2IHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ2l0cGtndiBwa2djb25maWcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogZG9fY29tcGlsZSgpIHsKICAgICBvZV9ydW5tYWtlIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy8wMDAxLU1ha2UtdWRldi1ydWxlcy1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzLzAwMDEtTWFrZS11ZGV2LXJ1bGVzLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKaW5kZXggM2NjMDQwMC4uMjgyM2M1NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzLzAwMDEtTWFrZS11ZGV2LXJ1bGVzLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzLzAwMDEtTWFrZS11ZGV2LXJ1bGVzLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDMyMjc4Mjk3MTcwZmZiNDkxMTZiNTc4OWU0YTA1ODhiOTlkMDJiZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGE2ZWFiNDEzZjI3NDM3NmNmNzAzYTYwOGUyODY2MTE4MjkxYTYxODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbWFybmF0aCBWYWxsdXJpIDxhbWFybmF0aC52YWxsdXJpQGludGVsLmNvbT4KIERhdGU6IFRodSwgOSBGZWIgMjAxNyAxMTowMjo1MyArMDIwMAogU3ViamVjdDogW1BBVENIXSBNYWtlIHVkZXYgcnVsZXMgZGlyZWN0b3J5IGNvbmZpZ3VyYWJsZS4KQEAgLTksNiArOSw3IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbRW1iZWRkZWQgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEFtYXJuYXRoIFZhbGx1cmkgPGFtYXJuYXRoLnZhbGx1cmlAaW50ZWwuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgICAgICAgICAgICB8IDE0ICsrKy0tLS0tLS0tLS0tCiAgZGF0YS9NYWtlZmlsZS5hbSAgICAgICAgfCAgMSAtCkBAIC00OSwxMSArNTAsMTEgQEAKICAKICAgICAgICAgIGNvbXBpbGVyOiAgICAgICAgICAgICAgICAgICAke0NDfQogZGlmZiAtLWdpdCBhL2RhdGEvTWFrZWZpbGUuYW0gYi9kYXRhL01ha2VmaWxlLmFtCi1pbmRleCA0MTFlYTBmLi40ODM0OTYwIDEwMDY0NAoraW5kZXggMDhhZjVmNC4uOTMyOTE4NiAxMDA2NDQKIC0tLSBhL2RhdGEvTWFrZWZpbGUuYW0KICsrKyBiL2RhdGEvTWFrZWZpbGUuYW0KIEBAIC0zNCw3ICszNCw2IEBAICQoc3lzdGVtZHNlcnZpY2VfREFUQSk6ICQoc3lzdGVtZHNlcnZpY2VfaW5fZmlsZXMpIE1ha2VmaWxlCi0gCUBzZWQgLWUgInN8XEBsaWJleGVjZGlyXEB8JChwcmVmaXgpL2xpYi91ZGlza3N8IiAkPCA+ICRACisgCUBzZWQgLWUgInN8XEBsaWJleGVjZGlyXEB8JChsaWJleGVjZGlyKXwiICQ8ID4gJEAKICBlbmRpZgogIAogLXVkZXZydWxlc2RpciA9ICQoc2xhc2hsaWJkaXIpL3VkZXYvcnVsZXMuZApAQCAtODYsNiArODcsMyBAQAogIAogIHVtb3VudF91ZGlza3NfU09VUkNFUyA9IHVtb3VudC11ZGlza3MuYwogIHVtb3VudF91ZGlza3NfTERBREQgPSAkKERCVVNfR0xJQl9MSUJTKSAkKFBPTEtJVF9EQlVTX0xJQlMpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy8wMDAxLWZpeC1idWlsZC13aXRoLW5ld2VyLWdsaWJjLXZlcnNpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbmV3ZXItZ2xpYmMtdmVyc2lvbnMucGF0Y2gKaW5kZXggNTIwNjU1YS4uOGI0ZjQ0MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbmV3ZXItZ2xpYmMtdmVyc2lvbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbmV3ZXItZ2xpYmMtdmVyc2lvbnMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDk4MjkxNTJiMTJhODkyNGQyZTA5MWEwMDEzM2VkMWEzYTdiYTc1YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDA1NGFkNmEwNmNmYWM3YzNkMTcyZDUzY2Q5MDEyMDQwNzlhNTNlYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kcmUgUm9zdG92dHNldiA8dGV0cm9taW5vQGdlbnRvby5vcmc+CiBEYXRlOiBGcmksIDI5IE1heSAyMDE1IDIxOjA5OjM5IC0wNDAwCiBTdWJqZWN0OiBbUEFUQ0hdIGZpeCBidWlsZCB3aXRoIG5ld2VyIGdsaWJjIHZlcnNpb25zCkBAIC04LDYgKzgsNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBBcHBsaWVkIFsxXQogCiBbMV0gaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3VkaXNrcy9jb21taXQvP2g9dWRpc2tzMSZpZD05ODI5MTUyYjEyYTg5MjRkMmUwOTFhMDAxMzNlZDFhM2E3YmE3NWMwCisKIC0tLQogIHNyYy9oZWxwZXJzL2pvYi1kcml2ZS1kZXRhY2guYyB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQpAQCAtMjQsNiArMjUsMyBAQAogICNpbmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlIDxzdHJpbmcuaD4KICAjaW5jbHVkZSA8ZXJybm8uaD4KLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzL29wdGlvbmFsLWRlcGVuZHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3Mvb3B0aW9uYWwtZGVwZW5kcy5wYXRjaAppbmRleCA2MTMxNzAxLi5hODkwOTU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3Mvb3B0aW9uYWwtZGVwZW5kcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3Mvb3B0aW9uYWwtZGVwZW5kcy5wYXRjaApAQCAtMSwxMiArMSwyOSBAQAotRnJvbSAxYjcwYjdhNzk4ZWVlZWM1NTRhYjVhYTlmY2ZmZjk2YTIyZTkxNzc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlOGIzZmJmYTNkNmExMWVlZTI1ZGIyZGMwZjMxZjQzOWFhZjBiNjVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogR3VzdGF2byBTdmVyenV0IEJhcmJpZXJpIDxiYXJiaWVyaUBwcm9mdXNpb24ubW9iaT4KIERhdGU6IFRodSwgMjYgTWF5IDIwMTEgMTc6MzA6MDQgLTAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgZGlzYWJsaW5nIGF0YXNtYXJ0LCBsdm0yIGFuZCBkZXZpY2VtYXBwZXIgc3VwcG9ydC4KIAogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2NDcKIAorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgfCA1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCisgc3JjL2FkYXB0ZXItcHJpdmF0ZS5oICAgfCAgMSAtCisgc3JjL2FkYXB0ZXIuYyAgICAgICAgICAgfCAgMSAtCisgc3JjL2RhZW1vbi5jICAgICAgICAgICAgfCAgNCArKysrCisgc3JjL2RldmljZS1wcml2YXRlLmMgICAgfCAgMiArLQorIHNyYy9kZXZpY2UtcHJpdmF0ZS5oICAgIHwgIDUgKystLS0KKyBzcmMvZGV2aWNlLmMgICAgICAgICAgICB8IDIzICsrKysrKysrKysrKysrKysrLS0tLQorIHNyYy9leHBhbmRlci1wcml2YXRlLmggIHwgIDEgLQorIHNyYy9leHBhbmRlci5jICAgICAgICAgIHwgIDEgLQorIHNyYy9oZWxwZXJzL01ha2VmaWxlLmFtIHwgMjAgKysrKysrKysrKysrKy0tLS0tLQorIHNyYy9oZWxwZXJzL3BhcnR1dGlsLmMgIHwgIDMgKystCisgc3JjL3BvcnQtcHJpdmF0ZS5oICAgICAgfCAgMSAtCisgc3JjL3Byb2JlcnMvTWFrZWZpbGUuYW0gfCAgOCArKysrKystLQorIHRvb2xzL3VkaXNrcy5jICAgICAgICAgIHwgMTAgKysrKysrKystLQorIDE0IGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQorCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2MmNjMzVkLi5iNjY0MTM1IDEwMDY0NAoraW5kZXggOTQ1NDQyMy4uOGM0ZTRjMiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtMTU1LDEzICsxNTUsMzMgQEAgUEtHX0NIRUNLX01PRFVMRVMoUE9MS0lUX0dPQkpFQ1RfMSwgW3BvbGtpdC1nb2JqZWN0LTEgPj0gMC45N10pCkBAIC00OSw4ICs2Niw4IEBACiArQU1fQ09ORElUSU9OQUwoSEFWRV9ERVZNQVBQRVIsIFt0ZXN0ICIkaGF2ZV9kZXZtYXBwZXIiID0gInllcyJdKQogIAogIGhhdmVfbHZtMj1ubwotIEFDX0FSR19FTkFCTEUobHZtMiwgQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1sdm0yXSwgW2Rpc2FibGUgTFZNMiBzdXBwb3J0XSkpCi1AQCAtMTg1LDkgKzIwNSwxOSBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9kbW1wIiAhPSAieG5vIjsgdGhlbgorIEFDX0FSR19FTkFCTEUobHZtMiwgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWx2bTJdLCBbZW5hYmxlIExWTTIgc3VwcG9ydF0pKQorQEAgLTE4NSw5ICsyMDUsMTkgQEAgaWYgdGVzdCAieCRlbmFibGVfZG1tcCIgPSAieHllcyI7IHRoZW4KICBmaQogIEFNX0NPTkRJVElPTkFMKEhBVkVfRE1NUCwgW3Rlc3QgIiRoYXZlX2RtbXAiID0gInllcyJdKQogIApAQCAtNzMsNyArOTAsNyBAQAogIAogIFBLR19DSEVDS19NT0RVTEVTKExJQlVERVYsIFtsaWJ1ZGV2ID49IDE0M10pCiAgQUNfU1VCU1QoTElCVURFVl9DRkxBR1MpCi1AQCAtMjY3LDkgKzI5NywxMiBAQCBlY2hvICIKK0BAIC0yNzgsOSArMzA4LDEyIEBAIGVjaG8gIgogICAgICAgICAgY3BwZmxhZ3M6ICAgICAgICAgICAgICAgICAgICR7Q1BQRkxBR1N9CiAgICAgICAgICB4c2x0cHJvYzogICAgICAgICAgICAgICAgICAgJHtYU0xUUFJPQ30KICAKQEAgLTk5LDcgKzExNiw3IEBACiAgI2luY2x1ZGUgInR5cGVzLmgiCiAgCiBkaWZmIC0tZ2l0IGEvc3JjL2FkYXB0ZXIuYyBiL3NyYy9hZGFwdGVyLmMKLWluZGV4IGI4NWEwZWYuLjgwMjQyMGIgMTAwNjQ0CitpbmRleCA2NWUwNWIwLi40NWRiOGM4IDEwMDY0NAogLS0tIGEvc3JjL2FkYXB0ZXIuYwogKysrIGIvc3JjL2FkYXB0ZXIuYwogQEAgLTMwLDcgKzMwLDYgQEAKQEAgLTExMSwxMCArMTI4LDEwIEBACiAgI2luY2x1ZGUgImRhZW1vbi5oIgogICNpbmNsdWRlICJhZGFwdGVyLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL2RhZW1vbi5jIGIvc3JjL2RhZW1vbi5jCi1pbmRleCA2MDcyNTAyLi5kMDQzY2IwIDEwMDY0NAoraW5kZXggZmFmY2Y5YS4uMTRlOTUyZiAxMDA2NDQKIC0tLSBhL3NyYy9kYWVtb24uYwogKysrIGIvc3JjL2RhZW1vbi5jCi1AQCAtMTc0NSw2ICsxNzQ1LDcgQEAgbWRzdGF0X2NoYW5nZWRfZXZlbnQgKEdJT0NoYW5uZWwgKmNoYW5uZWwsCitAQCAtMTc0OCw2ICsxNzQ4LDcgQEAgbWRzdGF0X2NoYW5nZWRfZXZlbnQgKEdJT0NoYW5uZWwgKmNoYW5uZWwsCiAgICByZXR1cm4gVFJVRTsKICB9CiAgCkBAIC0xMjIsNyArMTM5LDcgQEAKICBzdGF0aWMgZ2Jvb2xlYW4KICByZWZyZXNoX2F0YV9zbWFydF9kYXRhIChEYWVtb24gKmRhZW1vbikKICB7Ci1AQCAtMTc3Myw2ICsxNzc0LDcgQEAgcmVmcmVzaF9hdGFfc21hcnRfZGF0YSAoRGFlbW9uICpkYWVtb24pCitAQCAtMTc3Niw2ICsxNzc3LDcgQEAgcmVmcmVzaF9hdGFfc21hcnRfZGF0YSAoRGFlbW9uICpkYWVtb24pCiAgCiAgICByZXR1cm4gRkFMU0U7CiAgfQpAQCAtMTMwLDcgKzE0Nyw3IEBACiAgCiAgc3RhdGljIGdib29sZWFuCiAgcmVnaXN0ZXJfZGlza3NfZGFlbW9uIChEYWVtb24gKmRhZW1vbikKLUBAIC0xOTg0LDEyICsxOTg2LDE0IEBAIGRhZW1vbl9uZXcgKHZvaWQpCitAQCAtMTk4NywxMiArMTk4OSwxNCBAQCBkYWVtb25fbmV3ICh2b2lkKQogICAgbW91bnRfZmlsZV9jbGVhbl9zdGFsZSAobCk7CiAgICBnX2xpc3RfZnJlZSAobCk7CiAgCkBAIC0xNDYsMTAgKzE2MywxMCBAQAogICAgUFJPRklMRSAoImRhZW1vbl9uZXcoKTogZW5kIik7CiAgICByZXR1cm4gZGFlbW9uOwogZGlmZiAtLWdpdCBhL3NyYy9kZXZpY2UtcHJpdmF0ZS5jIGIvc3JjL2RldmljZS1wcml2YXRlLmMKLWluZGV4IDIyYTBkMzUuLmZiOTY1MjUgMTAwNjQ0CitpbmRleCA0NTQxOGNlLi5mYjFkOTU5IDEwMDY0NAogLS0tIGEvc3JjL2RldmljZS1wcml2YXRlLmMKICsrKyBiL3NyYy9kZXZpY2UtcHJpdmF0ZS5jCi1AQCAtMTM3OCw3ICsxMzc4LDcgQEAgZGV2aWNlX3NldF9kcml2ZV9hdGFfc21hcnRfdGltZV9jb2xsZWN0ZWQgKERldmljZSAqZGV2aWNlLAorQEAgLTEzOTAsNyArMTM5MCw3IEBAIGRldmljZV9zZXRfZHJpdmVfYXRhX3NtYXJ0X3RpbWVfY29sbGVjdGVkIChEZXZpY2UgKmRldmljZSwKICAKICB2b2lkCiAgZGV2aWNlX3NldF9kcml2ZV9hdGFfc21hcnRfc3RhdHVzIChEZXZpY2UgKmRldmljZSwKQEAgLTE1OSw3ICsxNzYsNyBAQAogICAgaWYgKEdfVU5MSUtFTFkgKGRldmljZS0+cHJpdi0+ZHJpdmVfYXRhX3NtYXJ0X3N0YXR1cyAhPSB2YWx1ZSkpCiAgICAgIHsKIGRpZmYgLS1naXQgYS9zcmMvZGV2aWNlLXByaXZhdGUuaCBiL3NyYy9kZXZpY2UtcHJpdmF0ZS5oCi1pbmRleCBhNmRiN2YyLi43MTQ3M2E2IDEwMDY0NAoraW5kZXggMzJhOWJkMC4uOGM1N2MxMyAxMDA2NDQKIC0tLSBhL3NyYy9kZXZpY2UtcHJpdmF0ZS5oCiArKysgYi9zcmMvZGV2aWNlLXByaXZhdGUuaAogQEAgLTIzLDcgKzIzLDYgQEAKQEAgLTE3MCw3ICsxODcsNyBAQAogIAogICNpbmNsdWRlICJ0eXBlcy5oIgogIAotQEAgLTIyNCw3ICsyMjMsNyBAQCBzdHJ1Y3QgRGV2aWNlUHJpdmF0ZQorQEAgLTIyOCw3ICsyMjcsNyBAQCBzdHJ1Y3QgRGV2aWNlUHJpdmF0ZQogIAogICAgZ2Jvb2xlYW4gZHJpdmVfYXRhX3NtYXJ0X2lzX2F2YWlsYWJsZTsKICAgIGd1aW50NjQgZHJpdmVfYXRhX3NtYXJ0X3RpbWVfY29sbGVjdGVkOwpAQCAtMTc5LDcgKzE5Niw3IEBACiAgICB2b2lkICpkcml2ZV9hdGFfc21hcnRfYmxvYjsKICAgIGdzaXplIGRyaXZlX2F0YV9zbWFydF9ibG9iX3NpemU7CiAgCi1AQCAtMzkxLDcgKzM5MCw3IEBAIHZvaWQgZGV2aWNlX3NldF9ob2xkZXJzX29ianBhdGggKERldmljZSAqZGV2aWNlLCBHU3RydiB2YWx1ZSk7CitAQCAtMzk2LDcgKzM5NSw3IEBAIHZvaWQgZGV2aWNlX3NldF9ob2xkZXJzX29ianBhdGggKERldmljZSAqZGV2aWNlLCBHU3RydiB2YWx1ZSk7CiAgCiAgdm9pZCBkZXZpY2Vfc2V0X2RyaXZlX2F0YV9zbWFydF9pc19hdmFpbGFibGUgKERldmljZSAqZGV2aWNlLCBnYm9vbGVhbiB2YWx1ZSk7CiAgdm9pZCBkZXZpY2Vfc2V0X2RyaXZlX2F0YV9zbWFydF90aW1lX2NvbGxlY3RlZCAoRGV2aWNlICpkZXZpY2UsIGd1aW50NjQgdmFsdWUpOwpAQCAtMTg5LDcgKzIwNiw3IEBACiAgCiAgR19FTkRfREVDTFMKIGRpZmYgLS1naXQgYS9zcmMvZGV2aWNlLmMgYi9zcmMvZGV2aWNlLmMKLWluZGV4IDZhMzQ5NDAuLjdhNWE0YTkgMTAwNjQ0CitpbmRleCAyYWU3ZjM4Li5kNzNmOWQ2IDEwMDY0NAogLS0tIGEvc3JjL2RldmljZS5jCiArKysgYi9zcmMvZGV2aWNlLmMKIEBAIC01MCw3ICs1MCw5IEBACkBAIC0yMDIsNyArMjE5LDcgQEAKICAKICAjaW5jbHVkZSAiZGFlbW9uLmgiCiAgI2luY2x1ZGUgImRldmljZS5oIgotQEAgLTY1OSwxMCArNjYxLDE0IEBAIGdldF9wcm9wZXJ0eSAoR09iamVjdCAqb2JqZWN0LAorQEAgLTY2NCwxMCArNjY2LDE0IEBAIGdldF9wcm9wZXJ0eSAoR09iamVjdCAqb2JqZWN0LAogICAgICBjYXNlIFBST1BfRFJJVkVfQVRBX1NNQVJUX1NUQVRVUzoKICAgICAgICB7CiAgICAgICAgICBjb25zdCBnY2hhciAqc3RhdHVzOwpAQCAtMjE4LDcgKzIzNSw3IEBACiAgICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBzdGF0dXMpOwogICAgICAgIH0KICAgICAgICBicmVhazsKLUBAIC01MTE0LDYgKzUxMjAsNyBAQCBkZXZpY2VfbmV3IChEYWVtb24gKmRhZW1vbiwKK0BAIC01MTQ0LDYgKzUxNTAsNyBAQCBkZXZpY2VfbmV3IChEYWVtb24gKmRhZW1vbiwKICAgICAgICBnb3RvIG91dDsKICAgICAgfQogIApAQCAtMjI2LDcgKzI0Myw3IEBACiAgICAvKiBpZiBqdXN0IGFkZGVkLCB1cGRhdGUgdGhlIHNtYXJ0IGRhdGEgaWYgYXBwbGljYWJsZSAqLwogICAgaWYgKGRldmljZS0+cHJpdi0+ZHJpdmVfYXRhX3NtYXJ0X2lzX2F2YWlsYWJsZSkKICAgICAgewotQEAgLTUxMjEsNiArNTEyOCw3IEBAIGRldmljZV9uZXcgKERhZW1vbiAqZGFlbW9uLAorQEAgLTUxNTEsNiArNTE1OCw3IEBAIGRldmljZV9uZXcgKERhZW1vbiAqZGFlbW9uLAogICAgICAgIGdjaGFyICphdGFfc21hcnRfcmVmcmVzaF9kYXRhX29wdGlvbnNbXSA9IHsgTlVMTCB9OwogICAgICAgIGRldmljZV9kcml2ZV9hdGFfc21hcnRfcmVmcmVzaF9kYXRhIChkZXZpY2UsIGF0YV9zbWFydF9yZWZyZXNoX2RhdGFfb3B0aW9ucywgTlVMTCk7CiAgICAgIH0KQEAgLTIzNCw3ICsyNTEsNyBAQAogIAogICAgUFJPRklMRSAoImRldmljZV9uZXcobmF0aXZlX3BhdGg9JXMpOiBlbmQiLCBuYXRpdmVfcGF0aCk7CiAgIG91dDoKLUBAIC05Nzk0LDE2ICs5ODAyLDE4IEBAIGRyaXZlX2F0YV9zbWFydF9yZWZyZXNoX2RhdGFfY29tcGxldGVkX2NiIChEQnVzR01ldGhvZEludm9jYXRpb24gKmNvbnRleHQsCitAQCAtOTg0MCwxNiArOTg0OCwxOCBAQCBkcml2ZV9hdGFfc21hcnRfcmVmcmVzaF9kYXRhX2NvbXBsZXRlZF9jYiAoREJ1c0dNZXRob2RJbnZvY2F0aW9uICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdGRvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKICB7CkBAIC0yNTYsNyArMjczLDcgQEAKICAgIGJsb2IgPSBOVUxMOwogIAogICAgaWYgKGpvYl93YXNfY2FuY2VsbGVkIHx8IHN0ZG91dCA9PSBOVUxMKQotQEAgLTk5MDcsNiArOTkxNywxMSBAQCBkcml2ZV9hdGFfc21hcnRfcmVmcmVzaF9kYXRhX2NvbXBsZXRlZF9jYiAoREJ1c0dNZXRob2RJbnZvY2F0aW9uICpjb250ZXh0LAorQEAgLTk5NTMsNiArOTk2MywxMSBAQCBkcml2ZV9hdGFfc21hcnRfcmVmcmVzaF9kYXRhX2NvbXBsZXRlZF9jYiAoREJ1c0dNZXRob2RJbnZvY2F0aW9uICpjb250ZXh0LAogICAgZ19mcmVlIChibG9iKTsKICAgIGlmIChkICE9IE5VTEwpCiAgICAgIHNrX2Rpc2tfZnJlZSAoZCk7CkBAIC00MzAsNyArNDQ3LDcgQEAKICB1ZGlza3NfcHJvYmVfc2FzX2V4cGFuZGVyX1NPVVJDRVMgPSB1ZGlza3MtcHJvYmUtc2FzLWV4cGFuZGVyLmMKICB1ZGlza3NfcHJvYmVfc2FzX2V4cGFuZGVyX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgJChHTElCX0NGTEFHUykKIGRpZmYgLS1naXQgYS90b29scy91ZGlza3MuYyBiL3Rvb2xzL3VkaXNrcy5jCi1pbmRleCA2ZmJkNmE2Li5lMGM0ZmJiIDEwMDY0NAoraW5kZXggOTdlODBkNy4uZDMwMTU5YiAxMDA2NDQKIC0tLSBhL3Rvb2xzL3VkaXNrcy5jCiArKysgYi90b29scy91ZGlza3MuYwogQEAgLTQzLDcgKzQzLDkgQEAKQEAgLTQ0Myw3ICs0NjAsNyBAQAogIAogICNpbmNsdWRlICJ1ZGlza3MtZGFlbW9uLWdsdWUuaCIKICAjaW5jbHVkZSAidWRpc2tzLWRldmljZS1nbHVlLmgiCi1AQCAtOTc5LDYgKzk4MSw3IEBAIGVuZF9oaWdobGlnaHQgKHZvaWQpCitAQCAtOTgzLDYgKzk4NSw3IEBAIGVuZF9oaWdobGlnaHQgKHZvaWQpCiAgICAgIGdfcHJpbnQgKCJceDFCWzBtIik7CiAgfQogIApAQCAtNDUxLDcgKzQ2OCw3IEBACiAgc3RhdGljIGNvbnN0IGdjaGFyICoKICBhdGFfc21hcnRfc3RhdHVzX3RvX2Rlc2MgKGNvbnN0IGdjaGFyICpzdGF0dXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAqb3V0X2hpZ2hsaWdodCkKLUBAIC0xMTU5LDYgKzExNjIsNyBAQCBwcmludF9hdGFfc21hcnRfYXR0ciAoU2tEaXNrICpkLAorQEAgLTExNjMsNiArMTE2Niw3IEBAIHByaW50X2F0YV9zbWFydF9hdHRyIChTa0Rpc2sgKmQsCiAgICBnX2ZyZWUgKHRocmVzaG9sZF9zdHIpOwogICAgZ19mcmVlIChwcmV0dHkpOwogIH0KQEAgLTQ1OSw3ICs0NzYsNyBAQAogIAogIHN0YXRpYyB2b2lkCiAgZG9fc2hvd19pbmZvIChjb25zdCBjaGFyICpvYmplY3RfcGF0aCkKLUBAIC0xNDQwLDcgKzE0NDQsNyBAQCBkb19zaG93X2luZm8gKGNvbnN0IGNoYXIgKm9iamVjdF9wYXRoKQorQEAgLTE0NDUsNyArMTQ0OSw3IEBAIGRvX3Nob3dfaW5mbyAoY29uc3QgY2hhciAqb2JqZWN0X3BhdGgpCiAgICAgICAgICBnX3ByaW50ICgiICAgIGlmIHNwZWVkOiAgICAgICAgICAgICAgICAgICUiIEdfR0lOVDY0X0ZPUk1BVCAiIGJpdHMvc1xuIiwgcHJvcHMtPmRyaXZlX2Nvbm5lY3Rpb25fc3BlZWQpOwogIAogICAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTQ2OCw3ICs0ODUsNyBAQAogICAgICAgIGlmICghcHJvcHMtPmRyaXZlX2F0YV9zbWFydF9pc19hdmFpbGFibGUpCiAgICAgICAgICB7CiAgICAgICAgICAgIGdfcHJpbnQgKCIgICAgQVRBIFNNQVJUOiAgICAgICAgICAgICAgICAgbm90IGF2YWlsYWJsZVxuIik7Ci1AQCAtMTQ5Myw3ICsxNDk3LDkgQEAgZG9fc2hvd19pbmZvIChjb25zdCBjaGFyICpvYmplY3RfcGF0aCkKK0BAIC0xNDk4LDcgKzE1MDIsOSBAQCBkb19zaG93X2luZm8gKGNvbnN0IGNoYXIgKm9iamVjdF9wYXRoKQogICAgICAgICAgICAgIH0KICAKICAgICAgICAgIH0KQEAgLTQ3OSw2ICs0OTYsMyBAQAogICAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICAKICAgICAgfQotLS0gCi0xLjcuNS5yYzMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzL3VkaXNrcy0xLjAuNS1maXgtc2VydmljZS1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzL3VkaXNrcy0xLjAuNS1maXgtc2VydmljZS1maWxlLnBhdGNoCmluZGV4IGQ1ZTg0ZDMuLmQ0ZWZhOTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy91ZGlza3MtMS4wLjUtZml4LXNlcnZpY2UtZmlsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MvdWRpc2tzLTEuMC41LWZpeC1zZXJ2aWNlLWZpbGUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDdkNjFhZDA0ODg1NmVlMjM5ODcwYjkxN2Q2OTMzZTNhZDYzZjA3ODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGE0ZjZhYTViZTM3YWU2ZTIxOTRjOWRlZDJlYThjMWRhMzMwZjU2OTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBEYXZpZCBLaW5nIDxhbWlnYWRhdmVAYW1pZ2FkYXZlLmNvbT4KIERhdGU6IFRodSwgMiBKdWwgMjAxNSAxMzo0OToyMiArMDEwMAogU3ViamVjdDogW1BBVENIXSBGaXggc3lzdGVtZCBzZXJ2aWNlIGZpbGUKQEAgLTEyLDYgKzEyLDcgQEAKIFsxXSBodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9jZ2l0L3VkaXNrcy5naXQvdHJlZS91ZGlza3MtMS4wLjUtZml4LXNlcnZpY2UtZmlsZS5wYXRjaAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKwogLS0tCiAgZGF0YS9NYWtlZmlsZS5hbSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKQEAgLTI5LDUgKzMwLDMgQEAKICBlbmRpZgogIAogIHVkZXZydWxlc2RpciA9ICQoc2xhc2hsaWJkaXIpL3VkZXYvcnVsZXMuZAotLS0gCi0yLjQuNQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMi8wMDAxLWRhdGEtZml4LW91dC1vZi10cmVlLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMi8wMDAxLWRhdGEtZml4LW91dC1vZi10cmVlLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYmQ4NzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyLzAwMDEtZGF0YS1maXgtb3V0LW9mLXRyZWUtYnVpbGQucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSA3ZmRkNGFjZGY2ZGFmOTVjNWNjNzRlOTY4ZjQ3MTA1MTNjOGRkYWVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjMgTWFyIDIwMTggMTg6MzM6NTIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZGF0YTogZml4IG91dCBvZiB0cmVlIGJ1aWxkCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK3wgc2VkOiBjYW4ndCByZWFkIHVkaXNrczIuc2VydmljZS5pbjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbMV0KKworWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9yYWdlZC1wcm9qZWN0L3VkaXNrcy9wdWxsLzUxMAorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgZGF0YS9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2RhdGEvTWFrZWZpbGUuYW0gYi9kYXRhL01ha2VmaWxlLmFtCitpbmRleCBkZGY5ZTNkNi4uYjM4OTI4YzggMTAwNjQ0CistLS0gYS9kYXRhL01ha2VmaWxlLmFtCisrKysgYi9kYXRhL01ha2VmaWxlLmFtCitAQCAtMjIsNyArMjIsNyBAQCBzeXN0ZW1kc2VydmljZWRpciAgICAgICA9ICQoc3lzdGVtZHN5c3RlbXVuaXRkaXIpCisgc3lzdGVtZHNlcnZpY2VfREFUQSAgICAgPSAkKHN5c3RlbWRzZXJ2aWNlX2luX2ZpbGVzOi5zZXJ2aWNlLmluPS5zZXJ2aWNlKQorIAorICQoc3lzdGVtZHNlcnZpY2VfREFUQSk6IHVkaXNrczIuc2VydmljZS5pbiBNYWtlZmlsZQorLQlAc2VkIC1lICJzfFxAdWRpc2tzZHByaXZkaXJcQHwkKGxpYmV4ZWNkaXIpL3VkaXNrczJ8IiB1ZGlza3MyLnNlcnZpY2UuaW4gPiB1ZGlza3MyLnNlcnZpY2UKKysJQHNlZCAtZSAic3xcQHVkaXNrc2Rwcml2ZGlyXEB8JChsaWJleGVjZGlyKS91ZGlza3MyfCIgJChzcmNkaXIpL3VkaXNrczIuc2VydmljZS5pbiA+IHVkaXNrczIuc2VydmljZQorIGVuZGlmCisgCisgdWRldnJ1bGVzZGlyID0gJCh1ZGV2ZGlyKS9ydWxlcy5kCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyXzIuMS44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMl8yLjEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNlZmM1MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyXzIuMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJ1ZGlza3MgcHJvdmlkZXMgZGJ1cyBpbnRlcmZhY2VzIGZvciBkaXNrcyBhbmQgc3RvcmFnZSBkZXZpY2VzIgotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGQ3OWY2ZGJiZmZkYmM4ZTg2YjA4NmE4ZjBjMGVmNDMiCi0KLURFUEVORFMgPSAiYWNsIGxpYmF0YXNtYXJ0IHBvbGtpdCBsaWJndWRldiBkYnVzLWdsaWIgZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIGdub21lLWNvbW1vbi1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgotCi1SREVQRU5EU18ke1BOfSA9ICJhY2wiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3VkaXNrcy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvdWRpc2tzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbm9uLWdudS1saWJjLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1MDFkMTFjMjQzYmQ4YzZjMDA2NTA0NzRjZDJhZmFhYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYTQxNjkxNDgxMmE3N2U1ZjRkODJiODFkZWI4YzI1Nzk5ZmQzMjI4ZDI3ZDUyZjdiZjg5YTUwMWIxODU3ZGRhIgotCi1DVkVfUFJPRFVDVCA9ICJ1ZGlza3MiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotUyA9ICIke1dPUktESVJ9L3VkaXNrcy0ke1BWfSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1tYW4gLS1kaXNhYmxlLWd0ay1kb2MiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcG9sa2l0LTEvZXh0ZW5zaW9ucy8qLnNvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS8gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRpc2tzMi8qIFwKLSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWxpYnMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbiIKLUZJTEVTXyR7UE59LWxpYnMgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtleGVjX3ByZWZpeH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkaXNrczIvLmRlYnVnIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyXzIuNy42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMl8yLjcuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDIyYWZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMl8yLjcuNi5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gInVkaXNrcyBwcm92aWRlcyBkYnVzIGludGVyZmFjZXMgZm9yIGRpc2tzIGFuZCBzdG9yYWdlIGRldmljZXMiCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZDc5ZjZkYmJmZmRiYzhlODZiMDg2YThmMGMwZWY0MyIKKworREVQRU5EUyA9ICIgXAorICAgIGFjbCBcCisgICAgbGliYXRhc21hcnQgXAorICAgIHBvbGtpdCBcCisgICAgbGliZ3VkZXYgXAorICAgIGRidXMtZ2xpYiBcCisgICAgZ2xpYi0yLjAgXAorICAgIGxpYmJsb2NrZGV2IFwKKyAgICBpbnRsdG9vbC1uYXRpdmUgXAorICAgIGdub21lLWNvbW1vbi1uYXRpdmUgXAorICAgIGxpYnhzbHQtbmF0aXZlIFwKKyIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCisKK1JERVBFTkRTXyR7UE59ID0gImFjbCIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vc3RvcmFnZWQtcHJvamVjdC91ZGlza3MuZ2l0IFwKKyAgICBmaWxlOi8vMDAwMS1kYXRhLWZpeC1vdXQtb2YtdHJlZS1idWlsZC5wYXRjaCBcCisgICAgZmlsZTovL25vbi1nbnUtbGliYy5wYXRjaCBcCisiCitTUkNSRVYgPSAiYjY0NzFmMmU5OWY2YWExMTMzYWYwZGU2NThmMWZhMDVjNzQ4OTMyYyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0NWRV9QUk9EVUNUID0gInVkaXNrcyIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZCBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW1hbiAtLWRpc2FibGUtZ3RrLWRvYyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEvIFwKKyAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyAgICAke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbiBcCisgICAgJHtsaWJkaXJ9L3BvbGtpdC0xL2V4dGVuc2lvbnMvKi5zbyBcCisgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2LyogXAorICAgICR7ZXhlY19wcmVmaXh9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGlza3MyLyogXAorICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAorIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tbGlicyIKK0ZJTEVTXyR7UE59LWxpYnMgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0JQTn0uc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbS8wMDAxLUFkZC1zdXBwb3J0LWZvci1hYXJjaDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltLzAwMDEtQWRkLXN1cHBvcnQtZm9yLWFhcmNoNjQucGF0Y2gKaW5kZXggNGIxMjQ5NC4uMzkxYjBlNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltLzAwMDEtQWRkLXN1cHBvcnQtZm9yLWFhcmNoNjQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltLzAwMDEtQWRkLXN1cHBvcnQtZm9yLWFhcmNoNjQucGF0Y2gKQEAgLTEsOSArMSwxMCBAQAotRnJvbSAyNGZkNTJjYzQ1ZjdiNWZmNDVhZmUwNzJmNWZiZTY2NDg1ZGY4YzhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4MmY0NGY1M2I5YTk3NjZjMmVjODE2ZjIzNzUwNmJlYjk1M2ViMzMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmVhcyBTY2h3YWIgPHNjaHdhYkBzdXNlLmRlPgogRGF0ZTogV2VkLCAyOSBPY3QgMjAxNCAxNDoxODoyOCArMDEwMAogU3ViamVjdDogW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgYWFyY2g2NAogCiAqIGluY2x1ZGUvcHJpdmF0ZS9nY2NvbmZpZy5oOiBBZGQgc3VwcG9ydCBmb3IgYWFyY2g2NC4KKwogLS0tCiAgc2lnc2NoZW1lL2xpYmdjcm9vdHMvaW5jbHVkZS9wcml2YXRlL2djY29uZmlnLmggfCAzNyArKysrKysrKysrKysrKysrKysrKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKykKQEAgLTc3LDYgKzc4LDMgQEAKICAjIGlmZGVmIEFSTTMyCiAgIyAgIGRlZmluZSBDUFBfV09SRFNaIDMyCiAgIyAgIGRlZmluZSBNQUNIX1RZUEUgIkFSTTMyIgotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltLzAwMDEtZml4LWJ1Zy1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbS8wMDAxLWZpeC1idWctZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKaW5kZXggZGY4MmIwNy4uMGM4ZjAyZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltLzAwMDEtZml4LWJ1Zy1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW0vMDAwMS1maXgtYnVnLWZvci1jcm9zcy1jb21waWxlLnBhdGNoCkBAIC0xLDkgKzEsMTAgQEAKLUZyb20gMjkxODE5NmJhNzgyZGZhNDQwMWJkY2E5MTdhZDRkZTE5MTA1MDVlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDhiNWU1MTIyNGVkOTViMWU3NmU5OTg3M2I1ZjlmNTk4NDBiMGE3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IExlaSBNYW9odWkgPGxlaW1hb2h1aUBjbi5mdWppdHN1LmNvbT4KIERhdGU6IEZyaSwgMjEgQXVnIDIwMTUgMTU6NTg6NDIgKzA5MDAKIFN1YmplY3Q6IFtQQVRDSF0gZml4IGJ1ZyBmb3IgY3Jvc3MgY29tcGlsZQogCiBTaWduZWQtb2ZmLWJ5OiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+CisKIC0tLQogIGNvbmZpZ3VyZS5hYyB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCkBAIC0yMyw2ICsyNCwzIEBACiAgICAgIEFDX0NIRUNLX0xJQihjdXJzZXMsIHRnZXRlbnQsIExJQkVESVRfTElCUz0iLWxjdXJzZXMiLAogICAgICAgICAgW0FDX0NIRUNLX0xJQihuY3Vyc2VzLCB0Z2V0ZW50LCBMSUJFRElUX0xJQlM9Ii1sbmN1cnNlcyIsCiAgICAgICAgICAgICAgQUNfTVNHX1dBUk4oImxpYmVkaXQgbmVlZHMgbGliY3Vyc2VzIG9yIGxpYm5jdXJzZXMuIGRpc2FibGVkLi4uIikKLS0tIAotMS44LjQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW0vdWltLW1vZHVsZS1tYW5hZ2VyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltL3VpbS1tb2R1bGUtbWFuYWdlci5wYXRjaAppbmRleCA4NTY5YmYzLi4zMDc4YWYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW0vdWltLW1vZHVsZS1tYW5hZ2VyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbS91aW0tbW9kdWxlLW1hbmFnZXIucGF0Y2gKQEAgLTEsMTEgKzEsMjEgQEAKLS0tLSB1aW0tMS4xLjAvc2NtL01ha2VmaWxlLmFtfgkyMDA2LTA2LTA5IDEwOjQ2OjEyLjAwMDAwMDAwMCArMDkwMAotKysrIHVpbS0xLjEuMC9zY20vTWFrZWZpbGUuYW0JMjAwNi0wNi0xOSAyMzowMDoxNS42MjAwMDAwMDAgKzA5MDAKLUBAIC01OCw3ICs1OCw3IEBACi0gICBtb2R1bGVfbmFtZXMgKz0gInNjaW0iCitGcm9tIGQ2MTQ5NWQzZmIwMzk4NDJiODJkZjQ0MTg0YzY3ZWIzYzEyNTYxMzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCaWFuIE5haW1lbmcgPGJpYW5ubUBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IEZyaSwgMjYgSnVuIDIwMTUgMTI6NTc6NDggKzA5MDAKKworLS0tCisgc2NtL01ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2NtL01ha2VmaWxlLmFtIGIvc2NtL01ha2VmaWxlLmFtCitpbmRleCAxNGQ5MzkzLi5lOGExMDgzIDEwMDY0NAorLS0tIGEvc2NtL01ha2VmaWxlLmFtCisrKysgYi9zY20vTWFrZWZpbGUuYW0KK0BAIC0xMTksNyArMTE5LDcgQEAgaWYgRVhQQVQKKyAgIG1vZHVsZV9uYW1lcyArPSAieWFob28tanAiCiAgZW5kaWYKICAKIC1VSU1fTU9EVUxFX01BTkFHRVIgPSAkKHRvcF9idWlsZGRpcikvdWltL3VpbS1tb2R1bGUtbWFuYWdlcgogK1VJTV9NT0RVTEVfTUFOQUdFUiA9IHVpbS1tb2R1bGUtbWFuYWdlcgogIFVJTV9NT0RVTEVfTUFOQUdFUl9FTlYgPSBcCisgICAgICAgICBMSUJVSU1fU1lTVEVNX1NDTV9GSUxFUz0kKGFic190b3Bfc3JjZGlyKS9zaWdzY2hlbWUvbGliIFwKICAgICAgICAgIExJQlVJTV9TQ01fRklMRVM9JChhYnNfc3JjZGlyKSBcCi0gICAgICAgICBMSUJVSU1fUExVR0lOX0xJQl9ESVI9JChhYnNfdG9wX2J1aWxkZGlyKS91aW0vLmxpYnMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbV8xLjguNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbV8xLjguNi5iYgppbmRleCAyNzE3MThlLi5hZjI4ODk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW1fMS44LjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltXzEuOC42LmJiCkBAIC0xNywxMSArMTcsMTUgQEAKIERFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgaW50bHRvb2wtbmF0aXZlIGd0aysgZ3RrKzMgdWltLW5hdGl2ZSB0YWthby1mb250cyIKIAogUkRFUEVORFNfdWltID0gImxpYnVpbTAgbGliZWRpdCIKLVJERVBFTkRTX3VpbS1hbnRoeSA9ICJ0YWthby1mb250cyBhbnRoeSBsaWJhbnRoeTAgZ2xpYmMtdXRpbHMgZ2xpYmMtZ2NvbnYtZXVjLWpwIgorUkRFUEVORFNfdWltLWFudGh5ID0gInRha2FvLWZvbnRzIGFudGh5IGxpYmFudGh5MCIKK1JERVBFTkRTX3VpbS1hbnRoeV9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtdXRpbHMgZ2xpYmMtZ2NvbnYtZXVjLWpwIgogCiBMRUFEX1NPTkFNRSA9ICJsaWJ1aW0uc28uMSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcWVtdSBndGstaW1tb2R1bGVzLWNhY2hlCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcWVtdSBndGstaW1tb2R1bGVzLWNhY2hlCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKIEdUS0lNTU9EVUxFU19QQUNLQUdFUyA9ICJ1aW0tZ3RrMi4wIHVpbS1ndGszIgogCiBFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1lbWFjcyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VuaXhvZGJjL2ZpbGVzL2RvLW5vdC11c2UtbGlibHRkbC1zb3VyY2UtZGlyZWN0b3J5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91bml4b2RiYy9maWxlcy9kby1ub3QtdXNlLWxpYmx0ZGwtc291cmNlLWRpcmVjdG9yeS5wYXRjaAppbmRleCA2OWQyNmFkLi4yNDk5Y2ZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VuaXhvZGJjL2ZpbGVzL2RvLW5vdC11c2UtbGlibHRkbC1zb3VyY2UtZGlyZWN0b3J5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdW5peG9kYmMvZmlsZXMvZG8tbm90LXVzZS1saWJsdGRsLXNvdXJjZS1kaXJlY3RvcnkucGF0Y2gKQEAgLTEzLDIyICsxMywyMiBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGU4ODFjY2EuLjEzMjE4MDIgMTAwNjQ0CitpbmRleCA0NjI4NDAxLi5lODk4OWJmIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuYW0KICsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNSw3ICs1LDYgQEAgU1VCRElSUyA9IFwKK0BAIC0xMSw3ICsxMSw2IEBAIFNVQkRJUlMgPSBcCiAgCWxvZyBcCiAgCWxzdCBcCiAgCWluaSBcCi0tICAgIGxpYmx0ZGwgXAorLQlsaWJsdGRsIFwKICAJb2RiY2luc3QgXAogIAlEcml2ZXJNYW5hZ2VyIFwKICAJZXhlIFwKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDIxODUwMmYuLmQ1MGI3YWYgMTAwNjQ0CitpbmRleCBlNGJjZGFmLi41OGFhNWM1IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMzYsOSArMTM2LDcgQEAgZG5sIEFDX0NPTkZJR19NQUNST19ESVIoW2xpYmx0ZGwvbTRdKQorQEAgLTE0NCw5ICsxNDQsNyBAQCBkbmwgQUNfQ09ORklHX01BQ1JPX0RJUihbbGlibHRkbC9tNF0pCiAgZG5sIExUX0NPTkZJR19MVERMX0RJUihbbGlibHRkbF0pCiAgZG5sIExURExfSU5JVAogIApAQCAtMzksNSArMzksNSBAQAogIGRubCBTdWJzdGl0dXRlIElOQ0xUREwgYW5kIExJQkxUREwgaW4gdGhlIE1ha2VmaWxlcwogIEFDX1NVQlNUKExURExJTkNMKQogLS0gCi0yLjguMQorMi4xMi4zCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdW5peG9kYmMvdW5peG9kYmNfMi4zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VuaXhvZGJjL3VuaXhvZGJjXzIuMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjU3ZjM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdW5peG9kYmMvdW5peG9kYmNfMi4zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkFuIE9wZW4gU291cmNlIE9EQkMgc3ViLXN5c3RlbSIKLURFU0NSSVBUSU9OID0gInVuaXhPREJDIGlzIGFuIE9wZW4gU291cmNlIE9EQkMgc3ViLXN5c3RlbSBhbmQgYW4gT0RCQyBTREsgXAotZm9yIExpbnV4LCBNYWMgT1NYLCBhbmQgVU5JWC4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cudW5peG9kYmMub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kN2IzN2JmODBhM2RmNWE2NWIzNTU0MzNhZTM2ZDIwNiIKLQotREVQRU5EUyA9ICJsaWJ0b29sIG15c3FsNSIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAudW5peG9kYmMub3JnL3B1Yi91bml4T0RCQy91bml4T0RCQy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZG8tbm90LXVzZS1saWJsdGRsLXNvdXJjZS1kaXJlY3RvcnkucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImJkMjVkMjYxY2ExODA4Yzk0N2NiNjg3ZTIwMzRiZTgxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJlMTUwOWE5NmJiMThkMjQ4YmYwOGVhZDBkNzQ4MDQ5NTczMDRmZjdjNmY4YjJlNTk2NTMwOWM2MzI0MjFlMzkiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1TID0gIiR7V09SS0RJUn0vdW5peE9EQkMtJHtQVn0iCi0KLUVYVFJBX09FTUFLRSArPSAiTElCUz0tbGx0ZGwiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICMgb2xkIG00IGZpbGVzIHdpbGwgY2F1c2UgbGlidG9vbCB2ZXJzaW9uIGRvbid0IG1hdGNoCi0gICAgcm0gLXJmIG00LyoKLSAgICBybSAtZnIgbGlibHRkbAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91bml4b2RiYy91bml4b2RiY18yLjMuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdW5peG9kYmMvdW5peG9kYmNfMi4zLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJkOWRiOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdW5peG9kYmMvdW5peG9kYmNfMi4zLjYuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJBbiBPcGVuIFNvdXJjZSBPREJDIHN1Yi1zeXN0ZW0iCitERVNDUklQVElPTiA9ICJ1bml4T0RCQyBpcyBhbiBPcGVuIFNvdXJjZSBPREJDIHN1Yi1zeXN0ZW0gYW5kIGFuIE9EQkMgU0RLIFwKK2ZvciBMaW51eCwgTWFjIE9TWCwgYW5kIFVOSVguIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnVuaXhvZGJjLm9yZy8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDdiMzdiZjgwYTNkZjVhNjViMzU1NDMzYWUzNmQyMDYiCisKK0RFUEVORFMgPSAibGlidG9vbCBteXNxbDUiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLnVuaXhvZGJjLm9yZy9wdWIvdW5peE9EQkMvdW5peE9EQkMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2RvLW5vdC11c2UtbGlibHRkbC1zb3VyY2UtZGlyZWN0b3J5LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhODYyOWZkMjk1M2IwNGI0NjM5ZDBhOWQ4YTVjZjlkMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4OGI2MzdmNjQ3YzA1MmVjYzM4NjFhM2JhYTI3NWMzYjUwM2IxOTNiNmE0OWZmOGMyOGIyNTY4NjU2ZDE0ZDY5IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworUyA9ICIke1dPUktESVJ9L3VuaXhPREJDLSR7UFZ9IgorCitFWFRSQV9PRU1BS0UgKz0gIkxJQlM9LWxsdGRsIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIG9sZCBtNCBmaWxlcyB3aWxsIGNhdXNlIGxpYnRvb2wgdmVyc2lvbiBkb24ndCBtYXRjaAorICAgIHJtIC1yZiBtNC8qCisgICAgcm0gLWZyIGxpYmx0ZGwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXBvd2VyL3Vwb3dlcl8wLjk5LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Vwb3dlci91cG93ZXJfMC45OS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzE0NTM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXBvd2VyL3Vwb3dlcl8wLjk5LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJVUG93ZXIgaXMgYW4gYWJzdHJhY3Rpb24gZm9yIGVudW1lcmF0aW5nIHBvd2VyIGRldmljZXMsIGxpc3RlbmluZyB0byBkZXZpY2UgZXZlbnRzIGFuZCBxdWVyeWluZyBoaXN0b3J5IGFuZCBzdGF0aXN0aWNzLiAiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBkZThmYmYxZDk3YTE0MGQxZDkzYjlmMTRkY2ZiZjA4IgotCi1ERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBsaWJ1c2IxIGxpYmd1ZGV2IGdsaWItMi4wIGRidXMtZ2xpYiBwb2xraXQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3Vwb3dlci5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlYzU3YjRiN2JmMGFmNTY4ZjlhN2E1NjAzYzkyMWQ5NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ODYwNTY2NGQwMjdjNzg4ZjZhYjYzYzUwOTUwYmU2ZTg2YzZiYTVkMDMwYzRjZjM1YTY2NjQzMzdkODdmM2IyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBnb2JqZWN0LWludHJvc3BlY3Rpb24gc3lzdGVtZAotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaWRldmljZV0gPSAiLS13aXRoLWlkZXZpY2UsLS13aXRob3V0LWlkZXZpY2UsbGliaW1vYmlsZWRldmljZSBsaWJwbGlzdCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWR1dGlsZGlyPSR7c3lzdGVtZF91bml0ZGlyfSAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3lzdGVtZHV0aWxkaXIgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLHN5c3RlbWQiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS13aXRoLWJhY2tlbmQ9bGludXgiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ1cG93ZXIuc2VydmljZSIKLSMgZG9uJ3Qgc3RhcnQgb24gYm9vdCBieSBkZWZhdWx0IC0gZGJ1cyBkb2VzIHRoYXQgb24gZGVtYW5kCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOi1ub25ldDpcOmcgJHtTfS9kb2MvbWFuL01ha2VmaWxlLmFtCi0gICAgc2VkIC1pIC1lICdzOiBkb2MgOiA6ZycgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1SREVQRU5EU18ke1BOfSArPSAiZGJ1cyIKLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJwbS11dGlscyIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS8gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvIFwKLSAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS91ZGV2LyogXAotIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7YmFzZV9saWJkaXJ9L3VkZXYvLmRlYnVnIgotCi0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91cG93ZXIvdXBvd2VyXzAuOTkuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXBvd2VyL3Vwb3dlcl8wLjk5LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTczZmJlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXBvd2VyL3Vwb3dlcl8wLjk5LjcuYmIKQEAgLTAsMCArMSwzNCBAQAorREVTQ1JJUFRJT04gPSAiVVBvd2VyIGlzIGFuIGFic3RyYWN0aW9uIGZvciBlbnVtZXJhdGluZyBwb3dlciBkZXZpY2VzLCBsaXN0ZW5pbmcgdG8gZGV2aWNlIGV2ZW50cyBhbmQgcXVlcnlpbmcgaGlzdG9yeSBhbmQgc3RhdGlzdGljcy4gIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZGU4ZmJmMWQ5N2ExNDBkMWQ5M2I5ZjE0ZGNmYmYwOCIKKworREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgbGlidXNiMSBsaWJndWRldiBnbGliLTIuMCBkYnVzLWdsaWIgcG9sa2l0IgorCitTUkNfVVJJID0gImh0dHA6Ly91cG93ZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiMjM2YmI0MzlkOWZmMTE1MTQ1MGIzZDg1ODIzOTk1MzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjRiY2MyZjZhYjI1YTI1MzNiYWM3MGI1ODdiY2IwMTllNTkxMjkzMDc2OTIwZjViNWUwNGJkZWRjMTQwYTQwMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHN5c3RlbWQKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lkZXZpY2VdID0gIi0td2l0aC1pZGV2aWNlLC0td2l0aG91dC1pZGV2aWNlLGxpYmltb2JpbGVkZXZpY2UgbGlicGxpc3QiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kdXRpbGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0gLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXN5c3RlbWR1dGlsZGlyIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1iYWNrZW5kPWxpbnV4IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAidXBvd2VyLnNlcnZpY2UiCisjIGRvbid0IHN0YXJ0IG9uIGJvb3QgYnkgZGVmYXVsdCAtIGRidXMgZG9lcyB0aGF0IG9uIGRlbWFuZAorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgczotbm9uZXQ6XDpnICR7U30vZG9jL21hbi9NYWtlZmlsZS5hbQorICAgIHNlZCAtaSAtZSAnczogZG9jIDogOmcnICR7U30vTWFrZWZpbGUuYW0KK30KKworUkRFUEVORFNfJHtQTn0gKz0gImRidXMiCitSUkVDT01NRU5EU18ke1BOfSArPSAicG0tdXRpbHMiCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xLyBcCisgICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0vdWRldi8qIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXJpcGFyc2VyL3VyaXBhcnNlcl8wLjguNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXJpcGFyc2VyL3VyaXBhcnNlcl8wLjguNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGJlODUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91cmlwYXJzZXIvdXJpcGFyc2VyXzAuOC40LmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiUkZDIDM5ODYgY29tcGxpYW50IFVSSSBwYXJzaW5nIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL3VyaXBhcnNlci5naXRodWIuaW8iCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzJiMGY5Yzc0YWU5NmVlYWI4Y2YxYmYzZWZlMDhkYTIiCisKK1NSQ19VUkkgOj0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L3VyaXBhcnNlci9Tb3VyY2VzLyR7UFZ9L3VyaXBhcnNlci0ke1BWfS50YXIuYnoyIgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3QgLS1kaXNhYmxlLWRvYyIKKworU1JDX1VSSVttZDVzdW1dID0gIjlhYWJkYzM2MTE1NDZmNTUzZjRhZjM3MjE2N2RlNmQ2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNlN2NjZGE0MTM2OTc0ODg5MjMxZTg0MjZhNzg1ZTc1NzhlNjZhNjI4MzAwOWNmZDEzZjFiMjRhNWU2NTdiMjMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYi1tb2Rlc3dpdGNoL3VzYi1tb2Rlc3dpdGNoXzIuNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2ItbW9kZXN3aXRjaC91c2ItbW9kZXN3aXRjaF8yLjUuMC5iYgppbmRleCBmZjQzOWYzLi5hYzBkZjhiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYi1tb2Rlc3dpdGNoL3VzYi1tb2Rlc3dpdGNoXzIuNS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNiLW1vZGVzd2l0Y2gvdXNiLW1vZGVzd2l0Y2hfMi41LjAuYmIKQEAgLTgsNyArOCw5IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMzhhZDVjOWQ3MGUwNjIyN2EwMDM2MWJkYzJiMWU1NjgiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzFjMGJlMjgwZDQ5YTk5ZWMzZGMwYmUzMzI1YmVmMzIwZDljMDRiNTA3MTRlZjBjZTFlMzZhNjE0ZDY4NzYzMyIKIAotaW5oZXJpdCBwa2djb25maWcKK2luaGVyaXQgcGtnY29uZmlnIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInVzYl9tb2Rlc3dpdGNoQC5zZXJ2aWNlIgogCiBFWFRSQV9PRU1BS0UgPSAiVENMPSR7YmluZGlyfS90Y2xzaCIKIApAQCAtMTgsNCArMjAsOCBAQAogCiBkb19pbnN0YWxsKCkgewogICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vdXNiX21vZGVzd2l0Y2hALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgZmkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXRoYXNoL3V0aGFzaC9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0aGFzaC91dGhhc2gvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE0MDcxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0aGFzaC91dGhhc2gvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMTAgQEAKKyMhL2Jpbi9zaAorCitjZCB0ZXN0cworZm9yIGkgaW4gdGVzdCpbMC05XSA7IGRvCisgICAgaWYgLi8ke2l9IHwgY21wIC1zICIke2l9LmFucyIgLSA7IHRoZW4KKyAgICAgICAgZWNobyAiUEFTUzogJHtpfSIKKyAgICBlbHNlCisgICAgICAgIGVjaG8gIkZBSUw6ICR7aX0iCisgICAgZmkKK2RvbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXRoYXNoL3V0aGFzaF8xLjkuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXRoYXNoL3V0aGFzaF8xLjkuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJhOWYyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0aGFzaC91dGhhc2hfMS45LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIkhhc2ggdGFibGUgZm9yIEMgc3RydWN0dXJlcyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01NjRmOWM0NDkyN2Y2MjQ3ZGM4MTBiZjU1N2UyYjI0MCIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxZjE0YmJlZTdlZTczZWQwY2ViMzU0OWY4Y2YzNzhiNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NTZmNWM5OTc5ODM0OWM0MTMyNzVmZTRjOWZmMTI4ZDcyZTI4MDY1NWRhZGJlNDM2NWY4ZTlmYmRhOTEzOTNmIgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBpbnN0YWxsIC1kbTc1NSAke0R9JHtpbmNsdWRlZGlyfQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy8qLmggJHtEfSR7aW5jbHVkZWRpcn0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0aGFzaC91dGhhc2hfMi4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0aGFzaC91dGhhc2hfMi4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkZDEzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXRoYXNoL3V0aGFzaF8yLjAuMi5iYgpAQCAtMCwwICsxLDQ2IEBACitTVU1NQVJZID0gIkhhc2ggdGFibGUgYW5kIGxpbmtlZCBsaXN0IGZvciBDIHN0cnVjdHVyZXMiCitERVNDUklQVElPTiA9ICIgdXRoYXNoLWRldiBwcm92aWRlcyBhIGhhc2ggdGFibGUgaW1wbGVtZW50YXRpb24gdXNpbmcgQyBwcmVwcm9jZXNzb3IgbWFjcm9zLlxuXAorIFRoaXMgcGFja2FnZSBhbHNvIGluY2x1ZGVzOlxuXAorICAqIHV0bGlzdC5oIHByb3ZpZGVzIGxpbmtlZCBsaXN0IG1hY3JvcyBmb3IgQyBzdHJ1Y3R1cmVzXG5cCisgICogdXRhcnJheS5oIGltcGxlbWVudHMgZHluYW1pYyBhcnJheXMgdXNpbmcgbWFjcm9zXG5cCisgICogdXRzdHJpbmcuaCBpbXBsZW1lbnRzIGEgYmFzaWMgZHluYW1pYyBzdHJpbmdcblwKKyIKK0hPTUVQQUdFID0gImh0dHBzOi8vdHJveWRoYW5zb24uZ2l0aHViLmlvL3V0aGFzaC8iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkJTRC0xLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTVjYzFmMWU0YzcxZjE5ZjU4MDQ1ODU4Njc1NmMwMmI0IgorCitTUkNfVVJJID0gIlwKKyAgICBodHRwczovL2dpdGh1Yi5jb20vdHJveWRoYW5zb24vJHtCUE59L2FyY2hpdmUvdiR7UFZ9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5neiBcCisgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Ryb3lkaGFuc29uLyR7QlBOfS9yZWxlYXNlcyIKKworU1JDX1VSSVttZDVzdW1dID0gImQwODYzMmE1ODY3NDI3NGM5Y2Q4N2UyOTMwZjU2OTZhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM0YTMxZDUxZGQ3YTgzOTgxOWNlY2Q2ZjQ2MDQ5YjRmZmUwMzFkN2YzMTQ3ZDlhMDQyZjU1MDRmZGIxMzQ4ZDEiCisKK2luaGVyaXQgcHRlc3QKKworZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgb2VfcnVubWFrZSAtQyB0ZXN0cyB0ZXN0c19vbmx5IFRFU1RfVEFSR0VUPQorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICBpbnN0YWxsIC1kbTc1NSAke0R9JHtpbmNsdWRlZGlyfQorICAgIGluc3RhbGwgLW0wNjQ0IHNyYy8qLmggJHtEfSR7aW5jbHVkZWRpcn0KK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBpbnN0YWxsIC1kbTc1NSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGluc3RhbGwgLW0wNzU1IHRlc3RzL3Rlc3QqWzAtOV0gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBpbnN0YWxsIC1tMDY0NCB0ZXN0cy90ZXN0KlswLTldLmFucyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGluc3RhbGwgLW0wNjQ0IHRlc3RzL3Rlc3QqWzAtOV0uZGF0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCit9CisKKyMgVGhlIG1haW4gcGFja2FnZSBpcyBlbXB0eSBhbmQgbm9uLWV4aXN0ZW50LCBzbyAtZGV2CisjIHNob3VsZCBub3QgZGVwZW5kIG9uIGl0Li4uCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzUuMS4yNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzUuMS4yNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRlZmUwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc181LjEuMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1TVU1NQVJZID0gIlZpcnR1YWxCb3ggTGludXggR3Vlc3QgRHJpdmVycyIKLVNFQ1RJT04gPSAiY29yZSIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vJHtWQk9YX05BTUV9L0NPUFlJTkc7bWQ1PWUxOTdkNTY0MWJiMzViMjlkNDZjYThjNGJmN2YyNjYwIgotCi1ERVBFTkRTID0gInZpcnR1YWwva2VybmVsIgotCi1pbmhlcml0IG1vZHVsZSBrZXJuZWwtbW9kdWxlLXNwbGl0Ci0KLUNPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NnxxZW11eDg2LTY0KSIKLQotVkJPWF9OQU1FID0gIlZpcnR1YWxCb3gtJHtQVn0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnZpcnR1YWxib3gub3JnL3ZpcnR1YWxib3gvJHtQVn0vJHtWQk9YX05BTUV9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUudXRpbHMgXAotIgotU1JDX1VSSVttZDVzdW1dID0gImQzYWVjODE5MGM2NDlkN2UwZDkyYmEzNzQ3NzlkZmUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI1NzE1MDM1ZTY4MWExMWVmMTQ3NWY4M2Y5NTAzZDM0YTAwZjAyNzZiODljNTcyZWViZWMzNjNkZGE4MGM4YTkiCi0KLVMgPSAiJHtXT1JLRElSfS92Ym94X21vZHVsZSIKLQotZXhwb3J0IEJVSUxEX1RBUkdFVF9BUkNIPSIke0FSQ0h9IgotZXhwb3J0IEJVSUxEX1RBUkdFVF9BUkNIX3g4Ni02ND0iYW1kNjQiCi1leHBvcnQgS0VSTl9ESVI9IiR7U1RBR0lOR19LRVJORUxfRElSfSIKLQotYWRkdGFzayBleHBvcnRfc291cmNlcyBiZWZvcmUgZG9fcGF0Y2ggYWZ0ZXIgZG9fdW5wYWNrCi0KLWRvX2V4cG9ydF9zb3VyY2VzKCkgewotICAgIG1rZGlyIC1wICIke1N9IgotICAgICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9leHBvcnRfbW9kdWxlcyAke1R9L3Zib3hfbW9kdWxlcy50YXIuZ3oKLSAgICB0YXIgLUMgIiR7U30iIC14emYgJHtUfS92Ym94X21vZHVsZXMudGFyLmd6Ci0KLSAgICAjIGFkZCBhIG1vdW50IHV0aWxpdHkgdG8gdXNlIHNoYXJlZCBmb2xkZXIgZnJvbSBWQm94IEFkZGl0aW9uIFNvdXJjZSBDb2RlCi0gICAgbWtkaXIgLXAgIiR7U30vdXRpbHMiCi0gICAgaW5zdGFsbCAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvc2hhcmVkZm9sZGVycy9tb3VudC52Ym94c2YuYyAke1N9L3V0aWxzCi0gICAgaW5zdGFsbCAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvc2hhcmVkZm9sZGVycy92YnNmbW91bnQuYyAke1N9L3V0aWxzCi0gICAgaW5zdGFsbCAke1N9Ly4uL01ha2VmaWxlLnV0aWxzICR7U30vdXRpbHMvTWFrZWZpbGUKLQotfQotCi0jIGNvbXBpbGUgYW5kIGluc3RhbGwgbW91bnQgdXRpbGl0eQotZG9fY29tcGlsZV9hcHBlbmQoKSB7Ci0gICAgb2VfcnVubWFrZSAnTEQ9JHtDQ30nICdMREZMQUdTPSR7TERGTEFHU30nIC1DICR7U30vdXRpbHMKLSAgICBpZiAhIFsgLWUgdmJveGd1ZXN0LmtvIC1hIC1lIHZib3hzZi5rbyAtYSAtZSB2Ym94dmlkZW8ua28gXSA7IHRoZW4KLSAgICAgICAgZWNobyAiRVJST1I6IE9uZSBvZiB2Ym94Ki5rbyBtb2R1bGVzIHdhc24ndCBidWlsdCIKLSAgICAgICAgZXhpdCAxCi0gICAgZmkKLX0KLQotbW9kdWxlX2RvX2luc3RhbGwoKSB7Ci0gICAgTU9EVUxFX0RJUj0ke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2tlcm5lbC9taXNjCi0gICAgaW5zdGFsbCAtZCAkTU9EVUxFX0RJUgotICAgIGluc3RhbGwgLW0gNjQ0IHZib3hndWVzdC5rbyAkTU9EVUxFX0RJUgotICAgIGluc3RhbGwgLW0gNjQ0IHZib3hzZi5rbyAkTU9EVUxFX0RJUgotICAgIGluc3RhbGwgLW0gNjQ0IHZib3h2aWRlby5rbyAkTU9EVUxFX0RJUgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3V0aWxzL21vdW50LnZib3hzZiAke0R9JHtiYXNlX3NiaW5kaXJ9Ci19Ci0KLVBBQ0tBR0VTICs9ICJrZXJuZWwtbW9kdWxlLXZib3hndWVzdCBrZXJuZWwtbW9kdWxlLXZib3hzZiBrZXJuZWwtbW9kdWxlLXZib3h2aWRlbyIKLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLXZib3hndWVzdCBrZXJuZWwtbW9kdWxlLXZib3hzZiBrZXJuZWwtbW9kdWxlLXZib3h2aWRlbyIKLQotRklMRVNfJHtQTn0gPSAiJHtiYXNlX3NiaW5kaXJ9IgotCi0jIGF1dG9sb2FkIGlmIGluc3RhbGxlZAotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAidmJveGd1ZXN0IHZib3hzZiB2Ym94dmlkZW8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc181LjIuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzUuMi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMGRiNGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc181LjIuOC5iYgpAQCAtMCwwICsxLDc4IEBACitTVU1NQVJZID0gIlZpcnR1YWxCb3ggTGludXggR3Vlc3QgRHJpdmVycyIKK1NFQ1RJT04gPSAiY29yZSIKK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vJHtWQk9YX05BTUV9L0NPUFlJTkc7bWQ1PWUxOTdkNTY0MWJiMzViMjlkNDZjYThjNGJmN2YyNjYwIgorCitERVBFTkRTID0gInZpcnR1YWwva2VybmVsIgorCitpbmhlcml0IG1vZHVsZSBrZXJuZWwtbW9kdWxlLXNwbGl0CisKK0NPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NnxxZW11eDg2LTY0KSIKKworVkJPWF9OQU1FID0gIlZpcnR1YWxCb3gtJHtQVn0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnZpcnR1YWxib3gub3JnL3ZpcnR1YWxib3gvJHtQVn0vJHtWQk9YX05BTUV9LnRhci5iejIgXAorICAgIGZpbGU6Ly9NYWtlZmlsZS51dGlscyBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNzMxZWE5YzVjMzEwOTZlYzRjMmEzYmZiYTI2NjY1YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZTI3NTlkNDdiMGI0YWM4MWI4YjY3MWM5NDg1Yzg3ZmIyZGIxMmMwOTdiM2U3ZTY5Yjk0YzEyOTFhODA4NGU4IgorCitTID0gIiR7V09SS0RJUn0vdmJveF9tb2R1bGUiCisKK2V4cG9ydCBCVUlMRF9UQVJHRVRfQVJDSD0iJHtBUkNIfSIKK2V4cG9ydCBCVUlMRF9UQVJHRVRfQVJDSF94ODYtNjQ9ImFtZDY0IgorCitFWFRSQV9PRU1BS0UgKz0gIktFUk5fRElSPScke1dPUktESVJ9LyR7S0VSTkVMX1ZFUlNJT059L2J1aWxkJyIKKworYWRkdGFzayBleHBvcnRfc291cmNlcyBiZWZvcmUgZG9fcGF0Y2ggYWZ0ZXIgZG9fdW5wYWNrCisKK2RvX2V4cG9ydF9zb3VyY2VzKCkgeworICAgIG1rZGlyIC1wICIke1N9IgorICAgICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9leHBvcnRfbW9kdWxlcy5zaCAke1R9L3Zib3hfbW9kdWxlcy50YXIuZ3oKKyAgICB0YXIgLUMgIiR7U30iIC14emYgJHtUfS92Ym94X21vZHVsZXMudGFyLmd6CisKKyAgICAjIGFkZCBhIG1vdW50IHV0aWxpdHkgdG8gdXNlIHNoYXJlZCBmb2xkZXIgZnJvbSBWQm94IEFkZGl0aW9uIFNvdXJjZSBDb2RlCisgICAgbWtkaXIgLXAgIiR7U30vdXRpbHMiCisgICAgaW5zdGFsbCAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvc2hhcmVkZm9sZGVycy9tb3VudC52Ym94c2YuYyAke1N9L3V0aWxzCisgICAgaW5zdGFsbCAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvc2hhcmVkZm9sZGVycy92YnNmbW91bnQuYyAke1N9L3V0aWxzCisgICAgaW5zdGFsbCAke1N9Ly4uL01ha2VmaWxlLnV0aWxzICR7U30vdXRpbHMvTWFrZWZpbGUKKworfQorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIHZib3hndWVzdGRyaXZlcnMvNS4yLjYtcjAvdmJveF9tb2R1bGUvdmJveGd1ZXN0L01ha2VmaWxlLmluY2x1ZGUuaGVhZGVyOjk5OiAqKiogVGhlIHZhcmlhYmxlIEtFUk5fRElSIG11c3QgYmUgYSBrZXJuZWwgYnVpbGQgZm9sZGVyIGFuZCBlbmQgd2l0aCAvYnVpbGQgd2l0aG91dCBhIHRyYWlsaW5nIHNsYXNoLCBvciBLRVJOX1ZFUiBtdXN0IGJlIHNldC4gIFN0b3AuCisgICAgIyB2Ym94Z3Vlc3Rkcml2ZXJzLzUuMi42LXIwL3Zib3hfbW9kdWxlL3Zib3hndWVzdC9NYWtlZmlsZS5pbmNsdWRlLmhlYWRlcjoxMDg6ICoqKiBUaGUga2VybmVsIGJ1aWxkIGZvbGRlciBwYXRoIG11c3QgZW5kIGluIDx2ZXJzaW9uPi9idWlsZCwgb3IgdGhlIHZhcmlhYmxlIEtFUk5fVkVSIG11c3QgYmUgc2V0LiAgU3RvcC4KKyAgICBta2RpciAtcCAke1dPUktESVJ9LyR7S0VSTkVMX1ZFUlNJT059CisgICAgbG4gLXNuZiAke1NUQUdJTkdfS0VSTkVMX0RJUn0gJHtXT1JLRElSfS8ke0tFUk5FTF9WRVJTSU9OfS9idWlsZAorfQorCisjIGNvbXBpbGUgYW5kIGluc3RhbGwgbW91bnQgdXRpbGl0eQorZG9fY29tcGlsZV9hcHBlbmQoKSB7CisgICAgb2VfcnVubWFrZSAnTEQ9JHtDQ30nICdMREZMQUdTPSR7TERGTEFHU30nIC1DICR7U30vdXRpbHMKKyAgICBpZiAhIFsgLWUgdmJveGd1ZXN0LmtvIC1hIC1lIHZib3hzZi5rbyAtYSAtZSB2Ym94dmlkZW8ua28gXSA7IHRoZW4KKyAgICAgICAgZWNobyAiRVJST1I6IE9uZSBvZiB2Ym94Ki5rbyBtb2R1bGVzIHdhc24ndCBidWlsdCIKKyAgICAgICAgZXhpdCAxCisgICAgZmkKK30KKworbW9kdWxlX2RvX2luc3RhbGwoKSB7CisgICAgTU9EVUxFX0RJUj0ke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2tlcm5lbC9taXNjCisgICAgaW5zdGFsbCAtZCAkTU9EVUxFX0RJUgorICAgIGluc3RhbGwgLW0gNjQ0IHZib3hndWVzdC5rbyAkTU9EVUxFX0RJUgorICAgIGluc3RhbGwgLW0gNjQ0IHZib3hzZi5rbyAkTU9EVUxFX0RJUgorICAgIGluc3RhbGwgLW0gNjQ0IHZib3h2aWRlby5rbyAkTU9EVUxFX0RJUgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3V0aWxzL21vdW50LnZib3hzZiAke0R9JHtiYXNlX3NiaW5kaXJ9Cit9CisKK1BBQ0tBR0VTICs9ICJrZXJuZWwtbW9kdWxlLXZib3hndWVzdCBrZXJuZWwtbW9kdWxlLXZib3hzZiBrZXJuZWwtbW9kdWxlLXZib3h2aWRlbyIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLXZib3hndWVzdCBrZXJuZWwtbW9kdWxlLXZib3hzZiBrZXJuZWwtbW9kdWxlLXZib3h2aWRlbyIKKworRklMRVNfJHtQTn0gPSAiJHtiYXNlX3NiaW5kaXJ9IgorCisjIGF1dG9sb2FkIGlmIGluc3RhbGxlZAorS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAidmJveGd1ZXN0IHZib3hzZiB2Ym94dmlkZW8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS9maWxlcy9DVkUtMjAxNy0xNzA4Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL2ZpbGVzL0NWRS0yMDE3LTE3MDg3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzN2I5YmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS9maWxlcy9DVkUtMjAxNy0xNzA4Ny5wYXRjaApAQCAtMCwwICsxLDcwIEBACitGcm9tIDljMTFmODAzMzkzNzJiN2FhMmY0MzE1M2Q1NzRmMmI1YWJiNzk3MDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CitEYXRlOiBTdW4sIDE3IERlYyAyMDE3IDIzOjA5OjM1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHZpbTogcGF0Y2ggOC4wLjEyNjM6IG90aGVycyBjYW4gcmVhZCB0aGUgc3dhcCBmaWxlIGlmIGEgdXNlcgorIGlzIGNhcmVsZXNzCisKK1Byb2JsZW06ICAgIE90aGVycyBjYW4gcmVhZCB0aGUgc3dhcCBmaWxlIGlmIGEgdXNlciBpcyBjYXJlbGVzcyB3aXRoIGhpcworICAgICAgICAgICAgcHJpbWFyeSBncm91cC4KK1NvbHV0aW9uOiAgIElmIHRoZSBncm91cCBwZXJtaXNzaW9uIGFsbG93cyBmb3IgcmVhZGluZyBidXQgdGhlIHdvcmxkCisgICAgICAgICAgICBwZXJtaXNzaW9ucyBkb2Vzbid0LCBtYWtlIHN1cmUgdGhlIGdyb3VwIGlzIHJpZ2h0LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTE3MDg3CitTaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvZmlsZWlvLmMgIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKystCisgc3JjL3ZlcnNpb24uYyB8ICAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZmlsZWlvLmMgYi9zcmMvZmlsZWlvLmMKK2luZGV4IGY1NGZiODQ2NS4uMmM3NzQwYWY5IDEwMDY0NAorLS0tIGEvc3JjL2ZpbGVpby5jCisrKysgYi9zcmMvZmlsZWlvLmMKK0BAIC03MTYsNyArNzE2LDI5IEBAIHJlYWRmaWxlKAorIAkvKiBTZXQgc3dhcCBmaWxlIHByb3RlY3Rpb24gYml0cyBhZnRlciBjcmVhdGluZyBpdC4gKi8KKyAJaWYgKHN3YXBfbW9kZSA+IDAgJiYgY3VyYnVmLT5iX21sLm1sX21mcCAhPSBOVUxMCisgCQkJICAmJiBjdXJidWYtPmJfbWwubWxfbWZwLT5tZl9mbmFtZSAhPSBOVUxMKQorLQkgICAgKHZvaWQpbWNoX3NldHBlcm0oY3VyYnVmLT5iX21sLm1sX21mcC0+bWZfZm5hbWUsIChsb25nKXN3YXBfbW9kZSk7CisrCXsKKysJICAgIGNoYXJfdSAqc3dhcF9mbmFtZSA9IGN1cmJ1Zi0+Yl9tbC5tbF9tZnAtPm1mX2ZuYW1lOworKworKwkgICAgLyoKKysJICAgICAqIElmIHRoZSBncm91cC1yZWFkIGJpdCBpcyBzZXQgYnV0IG5vdCB0aGUgd29ybGQtcmVhZCBiaXQsIHRoZW4KKysJICAgICAqIHRoZSBncm91cCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBncm91cCBvZiB0aGUgb3JpZ2luYWwgZmlsZS4gIElmCisrCSAgICAgKiB3ZSBjYW4ndCBtYWtlIHRoYXQgaGFwcGVuIHRoZW4gcmVzZXQgdGhlIGdyb3VwLXJlYWQgYml0LiAgVGhpcworKwkgICAgICogYXZvaWRzIG1ha2luZyB0aGUgc3dhcCBmaWxlIHJlYWRhYmxlIHRvIG1vcmUgdXNlcnMgd2hlbiB0aGUKKysJICAgICAqIHByaW1hcnkgZ3JvdXAgb2YgdGhlIHVzZXIgaXMgdG9vIHBlcm1pc3NpdmUuCisrCSAgICAgKi8KKysJICAgIGlmICgoc3dhcF9tb2RlICYgMDQ0KSA9PSAwNDApCisrCSAgICB7CisrCQlzdGF0X1QJc3dhcF9zdDsKKysKKysJCWlmIChtY2hfc3RhdCgoY2hhciAqKXN3YXBfZm5hbWUsICZzd2FwX3N0KSA+PSAwCisrCQkJJiYgc3Quc3RfZ2lkICE9IHN3YXBfc3Quc3RfZ2lkCisrCQkJJiYgZmNob3duKGN1cmJ1Zi0+Yl9tbC5tbF9tZnAtPm1mX2ZkLCAtMSwgc3Quc3RfZ2lkKQorKwkJCQkJCQkJCSA9PSAtMSkKKysJCSAgICBzd2FwX21vZGUgJj0gMDYwMDsKKysJICAgIH0KKysKKysJICAgICh2b2lkKW1jaF9zZXRwZXJtKHN3YXBfZm5hbWUsIChsb25nKXN3YXBfbW9kZSk7CisrCX0KKyAjZW5kaWYKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3NyYy92ZXJzaW9uLmMgYi9zcmMvdmVyc2lvbi5jCitpbmRleCBhNWNiMDc4ZjAuLjVjMGRmNDc1ZiAxMDA2NDQKKy0tLSBhL3NyYy92ZXJzaW9uLmMKKysrKyBiL3NyYy92ZXJzaW9uLmMKK0BAIC03NzAsNiArNzcwLDggQEAgc3RhdGljIGNoYXIgKihmZWF0dXJlc1tdKSA9Cisgc3RhdGljIGludCBpbmNsdWRlZF9wYXRjaGVzW10gPQorIHsgICAvKiBBZGQgbmV3IHBhdGNoIG51bWJlciBiZWxvdyB0aGlzIGxpbmUgKi8KKyAvKiovCisrICAgIDEyNjMsCisrLyoqLworICAgICA5ODMsCisgLyoqLworICAgICA5ODIsCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4wLjA5ODMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4wLjA5ODMuYmIKaW5kZXggNDA3Y2U1ZS4uNDRjODY4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMC4wOTgzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbV84LjAuMDk4My5iYgpAQCAtOSw2ICs5LDcgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS92aW0vdmltLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX2FjbF9oZWFkZXJfY2hlY2sucGF0Y2g7cGF0Y2hkaXI9Li4gXAogICAgICAgICAgICBmaWxlOi8vdmltLWFkZC1rbm9iLXdoZXRoZXItZWxmLmgtYXJlLWNoZWNrZWQucGF0Y2g7cGF0Y2hkaXI9Li4gXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTcwODcucGF0Y2g7cGF0Y2hkaXI9Li4gXAogIgogU1JDUkVWID0gIjNmOWExZmYxNDE0MTJlOWU4NWY3ZGZmNDdkMDI5NDZjYjliZTkyMjgiCiAKQEAgLTE2LDggKzE3LDkgQEAKIAogVklNRElSID0gInZpbSR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19JHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAoraW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQ0xFQU5CUk9LRU4gPSAiMSIKIAogIyB2aW0gY29uZmlndXJlLmluIGNvbnRhaW5zIGZ1bmN0aW9ucyB3aGljaCBnb3QgJ2Ryb3BwZWQnIGJ5IGF1dG90b29scy5iYmNsYXNzCiBkb19jb25maWd1cmUgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjcuMC8wMDAxLUZpeC1pc3N1ZS01OTkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wLzAwMDEtRml4LWlzc3VlLTU5OS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTllYTc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjcuMC8wMDAxLUZpeC1pc3N1ZS01OTkucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAxZGQwNzExM2YyYTc0ODk0NDRhODk5MGE5NWJlNDJlMDM1ZjhlOWRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS3VydCBSb2Vja3ggPGtyb2Vja3hAZGViaWFuLm9yZz4KK0RhdGU6IFR1ZSwgMSBOb3YgMjAxNiAxMjo1NzozNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggaXNzdWUgIzU5OQorRm9yd2FyZGVkOiBodHRwczovL2dpdGh1Yi5jb20vemFwaG95ZC93ZWJzb2NrZXRwcC9wdWxsLzYwMAorCistLS0KKyB3ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9zZWN1cml0eS90bHMuaHBwIHwgNCAtLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9zZWN1cml0eS90bHMuaHBwIGIvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vc2VjdXJpdHkvdGxzLmhwcAoraW5kZXggN2IzMmRiOC4uYThhYWZlYyAxMDA2NDQKKy0tLSBhL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL3NlY3VyaXR5L3Rscy5ocHAKKysrKyBiL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL3NlY3VyaXR5L3Rscy5ocHAKK0BAIC0zNTUsMTMgKzM1NSw5IEBAIHByb3RlY3RlZDoKKyAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEVycm9yQ29kZVR5cGU+CisgICAgIGxpYjo6ZXJyb3JfY29kZSB0cmFuc2xhdGVfZWMoRXJyb3JDb2RlVHlwZSBlYykgeworICAgICAgICAgaWYgKGVjLmNhdGVnb3J5KCkgPT0gbGliOjphc2lvOjplcnJvcjo6Z2V0X3NzbF9jYXRlZ29yeSgpKSB7CistICAgICAgICAgICAgaWYgKEVSUl9HRVRfUkVBU09OKGVjLnZhbHVlKCkpID09IFNTTF9SX1NIT1JUX1JFQUQpIHsKKy0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfZXJyb3JfY29kZSh0cmFuc3BvcnQ6OmVycm9yOjp0bHNfc2hvcnRfcmVhZCk7CistICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyBpdCBpcyBhIFRMUyByZWxhdGVkIGVycm9yLCBidXQgb3RoZXJ3aXNlIGRvbid0IGtub3cKKyAgICAgICAgICAgICAgICAgLy8gbW9yZS4gUGFzcyB0aHJvdWdoIGFzIFRMUyBnZW5lcmljLgorICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9lcnJvcl9jb2RlKHRyYW5zcG9ydDo6ZXJyb3I6OnRsc19lcnJvcik7CistICAgICAgICAgICAgfQorICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAvLyBXZSBkb24ndCBrbm93IGFueSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZXJyb3Igc28gcGFzcworICAgICAgICAgICAgIC8vIHRocm91Z2gKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjcuMC80Y2FiNWU1YzBjNWYxOWZjZWU3ZDM3YjRhMzhiMTU2ZDYzYTE1MGQ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjcuMC80Y2FiNWU1YzBjNWYxOWZjZWU3ZDM3YjRhMzhiMTU2ZDYzYTE1MGQ0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMGM5NjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wLzRjYWI1ZTVjMGM1ZjE5ZmNlZTdkMzdiNGEzOGIxNTZkNjNhMTUwZDQucGF0Y2gKQEAgLTAsMCArMSwxNTUgQEAKK0Zyb20gNGNhYjVlNWMwYzVmMTlmY2VlN2QzN2I0YTM4YjE1NmQ2M2ExNTBkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBldGVyIFRob3Jzb24gPGdpdEB6YXBob3lkLmNvbT4KK0RhdGU6IFN1biwgMTEgSnVuIDIwMTcgMTY6MTM6MjUgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWlub3IgYWRqdXN0bWVudHMgdG8gcmVjZW50IGV4dGVuc2lvbiBuZWdvdGlhdGlvbiByZWxhdGVkCisgZml4ZXMsIHJlZmFjdG9yIGEgYml0IG1vcmUgZXh0ZW5zaW9uIG5lZ290aWF0aW9uIGNvZGUgdG8gYmUgc2ltcGxlcgorCistLS0KKyB3ZWJzb2NrZXRwcC9pbXBsL2Nvbm5lY3Rpb25faW1wbC5ocHAgfCAgNiArLS0KKyB3ZWJzb2NrZXRwcC9wcm9jZXNzb3JzL2h5YmkxMy5ocHAgICAgfCA5MiArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQorCitJbmRleDogd2Vic29ja2V0cHAtMC43LjAvd2Vic29ja2V0cHAvaW1wbC9jb25uZWN0aW9uX2ltcGwuaHBwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2Vic29ja2V0cHAtMC43LjAub3JpZy93ZWJzb2NrZXRwcC9pbXBsL2Nvbm5lY3Rpb25faW1wbC5ocHAKKysrKyB3ZWJzb2NrZXRwcC0wLjcuMC93ZWJzb2NrZXRwcC9pbXBsL2Nvbm5lY3Rpb25faW1wbC5ocHAKK0BAIC0xMjIyLDE3ICsxMjIyLDE3IEBACisgICAgIHN0ZDo6cGFpcjxsaWI6OmVycm9yX2NvZGUsc3RkOjpzdHJpbmc+IG5lZ19yZXN1bHRzOworICAgICBuZWdfcmVzdWx0cyA9IG1fcHJvY2Vzc29yLT5uZWdvdGlhdGVfZXh0ZW5zaW9ucyhtX3JlcXVlc3QpOworIAorLSAgICBpZiAobmVnX3Jlc3VsdHMuZmlyc3QgPT0gZXJyb3I6Om1ha2VfZXJyb3JfY29kZShlcnJvcjo6ZXh0ZW5zaW9uX3BhcnNlX2Vycm9yKSkgeworKyAgICBpZiAobmVnX3Jlc3VsdHMuZmlyc3QgPT0gcHJvY2Vzc29yOjplcnJvcjo6bWFrZV9lcnJvcl9jb2RlKHByb2Nlc3Nvcjo6ZXJyb3I6OmV4dGVuc2lvbl9wYXJzZV9lcnJvcikpIHsKKyAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGZhdGFsIGVycm9yIGluIGV4dGVuc2lvbiBwYXJzaW5nIHRoYXQgc2hvdWxkIHJlc3VsdCBpbgorICAgICAgICAgLy8gYSBmYWlsZWQgY29ubmVjdGlvbiBhdHRlbXB0LgorLSAgICAgICAgbV9hbG9nLndyaXRlKGxvZzo6YWxldmVsOjppbmZvLCAiQmFkIHJlcXVlc3Q6ICIgKyBuZWdfcmVzdWx0cy5maXJzdC5tZXNzYWdlKCkpOworKyAgICAgICAgbV9lbG9nLndyaXRlKGxvZzo6ZWxldmVsOjppbmZvLCAiQmFkIHJlcXVlc3Q6ICIgKyBuZWdfcmVzdWx0cy5maXJzdC5tZXNzYWdlKCkpOworICAgICAgICAgbV9yZXNwb25zZS5zZXRfc3RhdHVzKGh0dHA6OnN0YXR1c19jb2RlOjpiYWRfcmVxdWVzdCk7CisgICAgICAgICByZXR1cm4gbmVnX3Jlc3VsdHMuZmlyc3Q7CisgICAgIH0gZWxzZSBpZiAobmVnX3Jlc3VsdHMuZmlyc3QpIHsKKyAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGZhdGFsIGVycm9yIGluIGV4dGVuc2lvbiBwcm9jZXNzaW5nIHRoYXQgaXMgcHJvYmFibHkgb3VyCisgICAgICAgICAvLyBmYXVsdC4gQ29uc2lkZXIgZXh0ZW5zaW9uIG5lZ290aWF0aW9uIHRvIGhhdmUgZmFpbGVkIGFuZCBjb250aW51ZSBhcworICAgICAgICAgLy8gaWYgZXh0ZW5zaW9ucyB3ZXJlIG5vdCBzdXBwb3J0ZWQKKy0gICAgICAgIG1fYWxvZy53cml0ZShsb2c6OmFsZXZlbDo6aW5mbywgCisrICAgICAgICBtX2Vsb2cud3JpdGUobG9nOjplbGV2ZWw6OmluZm8sIAorICAgICAgICAgICAgICJFeHRlbnNpb24gbmVnb3RpYXRpb24gZmFpbGVkOiAiICsgbmVnX3Jlc3VsdHMuZmlyc3QubWVzc2FnZSgpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8vIGV4dGVuc2lvbiBuZWdvdGlhdGlvbiBzdWNjZWVkZWQsIHNldCByZXNwb25zZSBoZWFkZXIgYWNjb3JkaW5nbHkKK0luZGV4OiB3ZWJzb2NrZXRwcC0wLjcuMC93ZWJzb2NrZXRwcC9wcm9jZXNzb3JzL2h5YmkxMy5ocHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZWJzb2NrZXRwcC0wLjcuMC5vcmlnL3dlYnNvY2tldHBwL3Byb2Nlc3NvcnMvaHliaTEzLmhwcAorKysrIHdlYnNvY2tldHBwLTAuNy4wL3dlYnNvY2tldHBwL3Byb2Nlc3NvcnMvaHliaTEzLmhwcAorQEAgLTk3LDExICs5Nyw2IEBACisgICAgIC8qKgorICAgICAgKiBUaGlzIGV4aXN0cyBtb3N0bHkgYmVjYXVzZSB0aGUgY29kZSBmb3IgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBpcworICAgICAgKiBpZGVudGljYWwgYW5kIEkgY2FuJ3QgaGF2ZSB2aXJ0dWFsIHRlbXBsYXRlIG1ldGhvZHMuCistICAgICAqCistICAgICAqIE5PVEU6IHRoaXMgbWV0aG9kIG1ha2VzIGFzc3VtcHRpb25zIHRoYXQgdGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZQorLSAgICAgKiBleHRlbnNpb24gaXMgdGhlIG9ubHkgb25lIHN1cHBvcnRlZC4gSWYgYWRkaXRpb25hbCBleHRlbnNpb25zIGFyZQorLSAgICAgKiBldmVyIHN1cHBvcnRlZCBpdCBzaG91bGQgYmUgcmV2aWV3ZWQgY2FyZWZ1bGx5LiBNb3N0IGNhc2VzIHdoZXJlCistICAgICAqIHRoYXQgYXNzdW1wdGlvbiBpcyBtYWRlIGFyZSBleHBsaWNpdGx5IG5vdGVkLgorICAgICAgKi8KKyAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGhlYWRlcl90eXBlPgorICAgICBlcnJfc3RyX3BhaXIgbmVnb3RpYXRlX2V4dGVuc2lvbnNfaGVscGVyKGhlYWRlcl90eXBlIGNvbnN0ICYgaGVhZGVyKSB7CitAQCAtMTMwLDU1ICsxMjUsNjAgQEAKKyAKKyAgICAgICAgIGh0dHA6OnBhcmFtZXRlcl9saXN0Ojpjb25zdF9pdGVyYXRvciBpdDsKKyAKKysgICAgICAgIC8vIGxvb2sgdGhyb3VnaCB0aGUgbGlzdCBvZiBleHRlbnNpb24gcmVxdWVzdHMgdG8gZmluZCB0aGUgZmlyc3QKKysgICAgICAgIC8vIG9uZSB0aGF0IHdlIGNhbiBhY2NlcHQuCisgICAgICAgICBpZiAobV9wZXJtZXNzYWdlX2RlZmxhdGUuaXNfaW1wbGVtZW50ZWQoKSkgeworICAgICAgICAgICAgIGVycl9zdHJfcGFpciBuZWdfcmV0OworICAgICAgICAgICAgIGZvciAoaXQgPSBwLmJlZ2luKCk7IGl0ICE9IHAuZW5kKCk7ICsraXQpIHsKKy0gICAgICAgICAgICAgICAgLy8gbG9vayB0aHJvdWdoIGVhY2ggZXh0ZW5zaW9uLCBpZiB0aGUga2V5IGlzIHBlcm1lc3NhZ2UtZGVmbGF0ZQorLSAgICAgICAgICAgICAgICBpZiAoaXQtPmZpcnN0ID09ICJwZXJtZXNzYWdlLWRlZmxhdGUiKSB7CistICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBoYXZlIGFscmVhZHkgc3VjY2Vzc2Z1bGx5IG5lZ290aWF0ZWQgdGhpcyBleHRlbnNpb24KKy0gICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gc2tpcCBhbnkgb3RoZXIgcmVxdWVzdHMgdG8gbmVnb3RpYXRlIHRoZSBzYW1lIG9uZQorLSAgICAgICAgICAgICAgICAgICAgLy8gd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycyAKKy0gICAgICAgICAgICAgICAgICAgIGlmIChtX3Blcm1lc3NhZ2VfZGVmbGF0ZS5pc19lbmFibGVkKCkpIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgIAorLSAgICAgICAgICAgICAgICAgICAgCistICAgICAgICAgICAgICAgICAgICBuZWdfcmV0ID0gbV9wZXJtZXNzYWdlX2RlZmxhdGUubmVnb3RpYXRlKGl0LT5zZWNvbmQpOworLQorLSAgICAgICAgICAgICAgICAgICAgaWYgKG5lZ19yZXQuZmlyc3QpIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAvLyBGaWd1cmUgb3V0IGlmIHRoaXMgaXMgYW4gZXJyb3IgdGhhdCBzaG91bGQgaGFsdCBhbGwKKy0gICAgICAgICAgICAgICAgICAgICAgICAvLyBleHRlbnNpb24gbmVnb3RpYXRpb25zIG9yIHNpbXBseSBjYXVzZSBuZWdvdGlhdGlvbiBvZgorLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgc3BlY2lmaWMgZXh0ZW5zaW9uIHRvIGZhaWwuCistICAgICAgICAgICAgICAgICAgICAgICAgLy9zdGQ6OmNvdXQgPDwgInBlcm1lc3NhZ2UtY29tcHJlc3MgbmVnb3RpYXRpb24gZmFpbGVkOiAiCistICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgPDwgbmVnX3JldC5maXJzdC5tZXNzYWdlKCkgPDwgc3RkOjplbmRsOworLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiB0aGlzIGxpc3Qgd2lsbCBuZWVkIGNvbW1hcyBpZiBXZWJTb2NrZXQrKyBldmVyCistICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VwcG9ydHMgbW9yZSB0aGFuIG9uZSBleHRlbnNpb24KKy0gICAgICAgICAgICAgICAgICAgICAgICAKKy0gICAgICAgICAgICAgICAgICAgICAgICAvLyBBY3R1YWxseSB0cnkgdG8gaW5pdGlhbGl6ZSB0aGUgZXh0ZW5zaW9uIGJlZm9yZSB3ZQorLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZW0gbmVnb3RpYXRpb24gY29tcGxldGUKKy0gICAgICAgICAgICAgICAgICAgICAgICByZXQuZmlyc3QgPSBtX3Blcm1lc3NhZ2VfZGVmbGF0ZS5pbml0KGJhc2U6Om1fc2VydmVyKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJldC5maXJzdCkgeworLQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBzdXBwb3J0IG11bHRpcGxlIGV4dGVuc2lvbnMuCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJpZ2h0IG5vdywgYmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9uZSBleHRlbnNpb24gCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1cHBvcnRlZCwgaXQgZmFpbGluZyB0byBuZWdvdGlhdGUgbWVhbnMgd2UgYXJlCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbmUgd2l0aCBhbGwgbmVnb3RpYXRpbmcuIEluIHRoZSBmdXR1cmUgaWYgbW9yZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleHRlbnNpb25zIGFyZSBzdXBwb3J0ZWQgYSBiZXR0ZXIgc29sdXRpb24gd2lsbAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZSBuZWVkZWQgaGVyZS4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnNlY29uZCArPSBuZWdfcmV0LnNlY29uZDsKKy0KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGludWUgbG9va2luZyBmb3IgbW9yZSBleHRlbnNpb25zCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgICAgICAKKy0gICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgLy8gbm90IGEgcGVybWVzc2FnZS1kZWZsYXRlIGV4dGVuc2lvbiByZXF1ZXN0LCBpZ25vcmUKKysgICAgICAgICAgICAgICAgaWYgKGl0LT5maXJzdCAhPSAicGVybWVzc2FnZS1kZWZsYXRlIikgeworKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbHJlYWR5IHN1Y2Nlc3NmdWxseSBuZWdvdGlhdGVkIHRoaXMgZXh0ZW5zaW9uCisrICAgICAgICAgICAgICAgIC8vIHRoZW4gc2tpcCBhbnkgb3RoZXIgcmVxdWVzdHMgdG8gbmVnb3RpYXRlIHRoZSBzYW1lIG9uZQorKyAgICAgICAgICAgICAgICAvLyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzIAorKyAgICAgICAgICAgICAgICBpZiAobV9wZXJtZXNzYWdlX2RlZmxhdGUuaXNfZW5hYmxlZCgpKSB7CisrICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAKKysgICAgICAgICAgICAgICAgLy8gYXR0ZW1wdCB0byBuZWdvdGlhdGUgdGhpcyBvZmZlcgorKyAgICAgICAgICAgICAgICBuZWdfcmV0ID0gbV9wZXJtZXNzYWdlX2RlZmxhdGUubmVnb3RpYXRlKGl0LT5zZWNvbmQpOworKworKyAgICAgICAgICAgICAgICBpZiAobmVnX3JldC5maXJzdCkgeworKyAgICAgICAgICAgICAgICAgICAgLy8gbmVnb3RpYXRpb24gb2ZmZXIgZmFpbGVkLiBEbyBub3RoaW5nLiBXZSB3aWxsIGNvbnRpbnVlCisrICAgICAgICAgICAgICAgICAgICAvLyBzZWFyY2hpbmcgZm9yIGEgcGVybWVzc2FnZS1kZWZsYXRlIGNvbmZpZyB0aGF0IHN1Y2NlZWRzCisrICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICAvLyBOZWdvdGlhdGlvbiB0ZW50YXRpdmVseSBzdWNjZWVkZWQKKysKKysgICAgICAgICAgICAgICAgLy8gQWN0dWFsbHkgdHJ5IHRvIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbiBiZWZvcmUgd2UKKysgICAgICAgICAgICAgICAgLy8gZGVlbSBuZWdvdGlhdGlvbiBjb21wbGV0ZQorKyAgICAgICAgICAgICAgICBsaWI6OmVycm9yX2NvZGUgZWMgPSBtX3Blcm1lc3NhZ2VfZGVmbGF0ZS5pbml0KGJhc2U6Om1fc2VydmVyKTsKKysKKysgICAgICAgICAgICAgICAgaWYgKGVjKSB7CisrICAgICAgICAgICAgICAgICAgICAvLyBOZWdvdGlhdGlvbiBzdWNjZWVkZWQgYnV0IGluaXRpYWxpemF0aW9uIGZhaWxlZCB0aGlzIGlzIAorKyAgICAgICAgICAgICAgICAgICAgLy8gYW4gZXJyb3IgdGhhdCBzaG91bGQgc3RvcCBuZWdvdGlhdGlvbiBvZiBwZXJtZXNzYWdlIAorKyAgICAgICAgICAgICAgICAgICAgLy8gZGVmbGF0ZS4gUmV0dXJuIHRoZSByZWFzb24gZm9yIHRoZSBpbml0IGZhaWx1cmUKKysKKysgICAgICAgICAgICAgICAgICAgIHJldC5maXJzdCA9IGVjOworKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICAvLyBTdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQsIHB1c2ggdGhlIG5lZ290aWF0ZWQgcmVzcG9uc2UgaW50bworKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlcGx5IGFuZCBzdG9wIGxvb2tpbmcgZm9yIGFkZGl0aW9uYWwgcGVybWVzc2FnZS1kZWZsYXRlCisrICAgICAgICAgICAgICAgICAgICAvLyBleHRlbnNpb25zCisrICAgICAgICAgICAgICAgICAgICByZXQuc2Vjb25kICs9IG5lZ19yZXQuc2Vjb25kOworKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCisrICAgICAgICAvLyBzdXBwb3J0IGZvciBmdXR1cmUgZXh0ZW5zaW9ucyB3b3VsZCBnbyBoZXJlLiBTaG91bGQgY2hlY2sgdGhlIHZhbHVlIG9mIAorKyAgICAgICAgLy8gcmV0LmZpcnN0IGJlZm9yZSBjb250aW51aW5nLiBNaWdodCBuZWVkIHRvIGNvbnNpZGVyIHdoZXRoZXIgZmFpbHVyZSBvZgorKyAgICAgICAgLy8gbmVnb3RpYXRpb24gb2YgYW4gZWFybGllciBleHRlbnNpb24gc2hvdWxkIHN0b3AgbmVnb3RpYXRpb24gb2Ygc3Vic2VxdWVudAorKyAgICAgICAgLy8gb25lcworKworICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgfQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjcuMC85ZGRiMzAwZDg3NGEzMGRiMzVlM2FkNThmMTg4OTQ0YmVmMGJmMzFiLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjcuMC85ZGRiMzAwZDg3NGEzMGRiMzVlM2FkNThmMTg4OTQ0YmVmMGJmMzFiLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YmZlYjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wLzlkZGIzMDBkODc0YTMwZGIzNWUzYWQ1OGYxODg5NDRiZWYwYmYzMWIucGF0Y2gKQEAgLTAsMCArMSw2MDAgQEAKKyMjIERlc2NyaXB0aW9uOiBhZGQgc29tZSBkZXNjcmlwdGlvbgorIyMgT3JpZ2luL0F1dGhvcjogYWRkIHNvbWUgb3JpZ2luIG9yIGF1dGhvcgorIyMgQnVnOiBidWcgVVJMCitGcm9tIDlkZGIzMDBkODc0YTMwZGIzNWUzYWQ1OGYxODg5NDRiZWYwYmYzMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRlciBUaG9yc29uIDxnaXRAemFwaG95ZC5jb20+CitEYXRlOiBTdW4sIDExIEp1biAyMDE3IDE1OjI0OjQzIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVwZGF0ZSBwZXJtZXNzYWdlLWRlZmxhdGUgc3VwcG9ydCB0byByZWZsZWN0IHRoYXQgemxpYgorIGRvZXNuJ3Qgc3VwcG9ydCBhIDI1NiBiaXQgd2luZG93LiBJbXByb3ZlIGV4dGVuc2lvbiBuZWdvdGlhdGlvbiBlcnJvcgorIGNoZWNraW5nIGFuZCBkb2N1bWVudGF0aW9uLiBmaXhlcyAjNTk2IGZpeGVzICM2NTMKKworLS0tCisgY2hhbmdlbG9nLm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKysKKyB0ZXN0L2V4dGVuc2lvbi9wZXJtZXNzYWdlX2RlZmxhdGUuY3BwICAgICAgICAgICAgICB8IDE1MyArKysrKysrKysrKysrKysrKy0tLS0KKyAuLi4vZXh0ZW5zaW9ucy9wZXJtZXNzYWdlX2RlZmxhdGUvZW5hYmxlZC5ocHAgICAgICB8ICA5NCArKysrKysrKysrLS0tCisgd2Vic29ja2V0cHAvaW1wbC9jb25uZWN0aW9uX2ltcGwuaHBwICAgICAgICAgICAgICAgfCAgMTAgKy0KKyB3ZWJzb2NrZXRwcC9wcm9jZXNzb3JzL2h5YmkxMy5ocHAgICAgICAgICAgICAgICAgICB8ICAyOCArKystCisgNSBmaWxlcyBjaGFuZ2VkLCAyNDcgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGFuZ2Vsb2cubWQgYi9jaGFuZ2Vsb2cubWQKK2luZGV4IGJiYTc1M2NiLi5kZTk4ZWRkMiAxMDA2NDQKKyMtLS0gYS9jaGFuZ2Vsb2cubWQKKyMrKysgYi9jaGFuZ2Vsb2cubWQKKyNAQCAtMTcsNiArMTcsMTQgQEAgSEVBRAorIyAtIENvbXBhdGliaWxpdHk6IFVwZGF0ZSBgdGVsZW1ldHJ5X2NsaWVudGAgdG8gdXNlIGEgc2xpZ2h0bHkgbW9yZSBjcm9zcyBwbGF0Zm9ybQorIyAgIG1ldGhvZCBvZiBzbGVlcGluZy4gU2hvdWxkIHdvcmsgb24gd2luZG93cyBub3cuIFRoYW5rIHlvdSBNZWlyIFlhbm92aWNoIGZvcgorIyAgIHJlcG9ydGluZy4KKyMrLSBDb21wYXRpYmlsaXR5OiBVcGRhdGVkIHBlcm1lc3NhZ2UtZGVmbGF0ZSBzdXBwb3J0IHRvIHJlZmxlY3QgdGhhdCB0aGUgemxpYgorIysgIGxpYnJhcnkgZG9lcyBub3QgYWN0dWFsbHkgc3VwcG9ydCBhIHNsaWRpbmcgd2luZG93IHNpemUgb2YgMjU2IGJpdHMuIAorIysgIFdlYlNvY2tldCsrIHdpbGwgbm8gbG9uZ2VyIG5lZ290aWF0ZSAyNTYgYml0IGRlZmxhdGUgd2luZG93cy4gSWYgdGhlIHVzZXIKKyMrICBvZiB0aGUgbGlicmFyeSB0cmllcyB0byByZXF1ZXN0IGEgMjU2IGJpdCB3aW5kb3cgYSA1MTIgYml0IHdpbmRvdyB3aWxsIGJlCisjKyAgc3BlY2lmaWVkIGluc3RlYWQgKFRoaXMgd2FzIHRoZSBwcmV2aW91cyBiZWhhdmlvcikuICM1OTYgIzY1MyBUaGFuayB5b3UgCisjKyAgVmlubmllIEZhbGNvIGFuZCBHaWFuZnJhbmNvIENvc3RhbWFnbmEgZm9yIHJlcG9ydGluZy4KKyMrLSBDb21wYXRpYmlsaXR5OiBCZXR0ZXIgZXJyb3IgaGFuZGxpbmcgYW5kIGxvZ2dpbmcgaW4gY2FzZXMgd2hlcmUgZXh0ZW5zaW9uCisjKyAgcmVxdWVzdHMgcGFyc2UgY29ycmVjdGx5IGJ1dCBuZWdvdGlhdGlvbiBmYWlscy4gCisjIC0gQnVnOiBTdG9yZSBsb2dnZXJzIGluIHNoYXJlZCBwb2ludGVycyB0byBhdm9pZCBjcmFzaGVzIHJlbGF0ZWQgdG8gY29ubmVjdGlvbnMKKyMgICB0cnlpbmcgdG8gd3JpdGUgbG9ncyBlbnRyaWVzIGFmdGVyIHRoZWlyIHJlc3BlY3RpdmUgZW5kcG9pbnQgaGFzIGJlZW4KKyMgICBkZWFsbG9jYXRlZC4gVGhhbmsgeW91IFRoYWxoYW1tZXIgZm9yIHJlcG9ydGluZyBhbmQgSnVwcCBNw7xsbGVyIGZvciB0aGUgCitkaWZmIC0tZ2l0IGEvdGVzdC9leHRlbnNpb24vcGVybWVzc2FnZV9kZWZsYXRlLmNwcCBiL3Rlc3QvZXh0ZW5zaW9uL3Blcm1lc3NhZ2VfZGVmbGF0ZS5jcHAKK2luZGV4IDRjZDNlN2I2Li44MDVhZmNjMyAxMDA2NDQKKy0tLSBhL3Rlc3QvZXh0ZW5zaW9uL3Blcm1lc3NhZ2VfZGVmbGF0ZS5jcHAKKysrKyBiL3Rlc3QvZXh0ZW5zaW9uL3Blcm1lc3NhZ2VfZGVmbGF0ZS5jcHAKK0BAIC0xODYsMTUgKzE4NiwyMiBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfaW52YWxpZCApIHsKKyAKKyBCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfdmFsaWQgKSB7CisgICAgIGV4dF92YXJzIHY7CisrICAgIAorKyAgICAvLyBjb25maXJtIHRoYXQgYSByZXF1ZXN0IGZvciBhIHZhbHVlIG9mIDggaXMgaW50ZXJwcmV0ZWQgYXMgOQorICAgICB2LmF0dHJbInNlcnZlcl9tYXhfd2luZG93X2JpdHMiXSA9ICI4IjsKKysgICAgdi5lc3AgPSB2LmV4dHMubmVnb3RpYXRlKHYuYXR0cik7CisrICAgIEJPT1NUX0NIRUNLKCB2LmV4dHMuaXNfZW5hYmxlZCgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9OSIpOworIAorKyAgICB2LmF0dHJbInNlcnZlcl9tYXhfd2luZG93X2JpdHMiXSA9ICI5IjsKKyAgICAgdi5lc3AgPSB2LmV4dHMubmVnb3RpYXRlKHYuYXR0cik7CisgICAgIEJPT1NUX0NIRUNLKCB2LmV4dHMuaXNfZW5hYmxlZCgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CistICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9OCIpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTkiKTsKKyAKKy0gICAgdi5hdHRyWyJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIl0gPSAiMTUiOworIAorKyAgICB2LmF0dHJbInNlcnZlcl9tYXhfd2luZG93X2JpdHMiXSA9ICIxNSI7CisgICAgIHYuZXNwID0gdi5leHRzLm5lZ290aWF0ZSh2LmF0dHIpOworICAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworICAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3AuZmlyc3QsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworQEAgLTIxMyw3ICsyMjAsNyBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggaW52YWxpZF9zZXRfc2VydmVyX21heF93aW5kb3dfYml0cyApIHsKKyAKKyBCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfZGVjbGluZSApIHsKKyAgICAgZXh0X3ZhcnMgdjsKKy0gICAgdi5hdHRyWyJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIl0gPSAiOCI7CisrICAgIHYuYXR0clsic2VydmVyX21heF93aW5kb3dfYml0cyJdID0gIjkiOworIAorICAgICB2LmVjID0gdi5leHRzLnNldF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKDE1LHBtZF9tb2RlOjpkZWNsaW5lKTsKKyAgICAgdi5lc3AgPSB2LmV4dHMubmVnb3RpYXRlKHYuYXR0cik7CitAQCAtMjIzLDcgKzIzMCw3IEBAIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfc2VydmVyX21heF93aW5kb3dfYml0c19kZWNsaW5lICkgeworICAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlIik7CisgfQorIAorLUJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfc2VydmVyX21heF93aW5kb3dfYml0c19hY2NlcHQgKSB7CisrQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzX2FjY2VwdF84ICkgeworICAgICBleHRfdmFycyB2OworICAgICB2LmF0dHJbInNlcnZlcl9tYXhfd2luZG93X2JpdHMiXSA9ICI4IjsKKyAKK0BAIC0yMzIsMTAgKzIzOSwyMiBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfYWNjZXB0ICkgeworICAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworICAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CistICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9OCIpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTkiKTsKKyB9CisgCistQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzX2xhcmdlc3QgKSB7CisrQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzX2FjY2VwdCApIHsKKysgICAgZXh0X3ZhcnMgdjsKKysgICAgdi5hdHRyWyJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIl0gPSAiOSI7CisrCisrICAgIHYuZWMgPSB2LmV4dHMuc2V0X3NlcnZlcl9tYXhfd2luZG93X2JpdHMoMTUscG1kX21vZGU6OmFjY2VwdCk7CisrICAgIHYuZXNwID0gdi5leHRzLm5lZ290aWF0ZSh2LmF0dHIpOworKyAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9OSIpOworK30KKysKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfbGFyZ2VzdF84ICkgeworICAgICBleHRfdmFycyB2OworICAgICB2LmF0dHJbInNlcnZlcl9tYXhfd2luZG93X2JpdHMiXSA9ICI4IjsKKyAKK0BAIC0yNDQsMTAgKzI2MywyMiBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfbGFyZ2VzdCApIHsKKyAgICAgQk9PU1RfQ0hFQ0soIHYuZXh0cy5pc19lbmFibGVkKCkgKTsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworICAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3AuZmlyc3QsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworLSAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTgiKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz05Iik7CisgfQorIAorLUJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfc2VydmVyX21heF93aW5kb3dfYml0c19zbWFsbGVzdCApIHsKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfbGFyZ2VzdCApIHsKKysgICAgZXh0X3ZhcnMgdjsKKysgICAgdi5hdHRyWyJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIl0gPSAiOSI7CisrCisrICAgIHYuZWMgPSB2LmV4dHMuc2V0X3NlcnZlcl9tYXhfd2luZG93X2JpdHMoMTUscG1kX21vZGU6Omxhcmdlc3QpOworKyAgICB2LmVzcCA9IHYuZXh0cy5uZWdvdGlhdGUodi5hdHRyKTsKKysgICAgQk9PU1RfQ0hFQ0soIHYuZXh0cy5pc19lbmFibGVkKCkgKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3AuZmlyc3QsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTkiKTsKKyt9CisrCisrQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzX3NtYWxsZXN0XzggKSB7CisgICAgIGV4dF92YXJzIHY7CisgICAgIHYuYXR0clsic2VydmVyX21heF93aW5kb3dfYml0cyJdID0gIjgiOworIAorQEAgLTI1Niw3ICsyODcsMTkgQEAgQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzX3NtYWxsZXN0ICkgeworICAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworICAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CistICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9OCIpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTkiKTsKKyt9CisrCisrQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzX3NtYWxsZXN0ICkgeworKyAgICBleHRfdmFycyB2OworKyAgICB2LmF0dHJbInNlcnZlcl9tYXhfd2luZG93X2JpdHMiXSA9ICI5IjsKKysKKysgICAgdi5lYyA9IHYuZXh0cy5zZXRfc2VydmVyX21heF93aW5kb3dfYml0cygxNSxwbWRfbW9kZTo6c21hbGxlc3QpOworKyAgICB2LmVzcCA9IHYuZXh0cy5uZWdvdGlhdGUodi5hdHRyKTsKKysgICAgQk9PU1RfQ0hFQ0soIHYuZXh0cy5pc19lbmFibGVkKCkgKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3AuZmlyc3QsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTkiKTsKKyB9CisgCisgLy8gTmVnb3RpYXRlIHNlcnZlcl9tYXhfd2luZG93X2JpdHMKK0BAIC0yOTIsNyArMzM1LDEzIEBAIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfY2xpZW50X21heF93aW5kb3dfYml0c192YWxpZCApIHsKKyAgICAgdi5lc3AgPSB2LmV4dHMubmVnb3RpYXRlKHYuYXR0cik7CisgICAgIEJPT1NUX0NIRUNLKCB2LmV4dHMuaXNfZW5hYmxlZCgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CistICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IGNsaWVudF9tYXhfd2luZG93X2JpdHM9OCIpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBjbGllbnRfbWF4X3dpbmRvd19iaXRzPTkiKTsKKysKKysgICAgdi5hdHRyWyJjbGllbnRfbWF4X3dpbmRvd19iaXRzIl0gPSAiOSI7CisrICAgIHYuZXNwID0gdi5leHRzLm5lZ290aWF0ZSh2LmF0dHIpOworKyAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3AuZmlyc3QsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBjbGllbnRfbWF4X3dpbmRvd19iaXRzPTkiKTsKKyAKKyAgICAgdi5hdHRyWyJjbGllbnRfbWF4X3dpbmRvd19iaXRzIl0gPSAiMTUiOworICAgICB2LmVzcCA9IHYuZXh0cy5uZWdvdGlhdGUodi5hdHRyKTsKK0BAIC0zMTEsNyArMzYwLDcgQEAgQk9PU1RfQVVUT19URVNUX0NBU0UoIGludmFsaWRfc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMgKSB7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKHYuZWMscG1kZTo6bWFrZV9lcnJvcl9jb2RlKHBtZGU6OmludmFsaWRfbWF4X3dpbmRvd19iaXRzKSk7CisgfQorIAorLUJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfY2xpZW50X21heF93aW5kb3dfYml0c19kZWNsaW5lICkgeworK0JPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfY2xpZW50X21heF93aW5kb3dfYml0c19kZWNsaW5lXzggKSB7CisgICAgIGV4dF92YXJzIHY7CisgICAgIHYuYXR0clsiY2xpZW50X21heF93aW5kb3dfYml0cyJdID0gIjgiOworIAorQEAgLTMyMyw3ICszNzIsMTkgQEAgQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9jbGllbnRfbWF4X3dpbmRvd19iaXRzX2RlY2xpbmUgKSB7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGUiKTsKKyB9CisgCistQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9jbGllbnRfbWF4X3dpbmRvd19iaXRzX2FjY2VwdCApIHsKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfZGVjbGluZSApIHsKKysgICAgZXh0X3ZhcnMgdjsKKysgICAgdi5hdHRyWyJjbGllbnRfbWF4X3dpbmRvd19iaXRzIl0gPSAiOSI7CisrCisrICAgIHYuZWMgPSB2LmV4dHMuc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMoOSxwbWRfbW9kZTo6ZGVjbGluZSk7CisrICAgIHYuZXNwID0gdi5leHRzLm5lZ290aWF0ZSh2LmF0dHIpOworKyAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGUiKTsKKyt9CisrCisrQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9jbGllbnRfbWF4X3dpbmRvd19iaXRzX2FjY2VwdF84ICkgeworICAgICBleHRfdmFycyB2OworICAgICB2LmF0dHJbImNsaWVudF9tYXhfd2luZG93X2JpdHMiXSA9ICI4IjsKKyAKK0BAIC0zMzIsMTAgKzM5MywyMiBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfYWNjZXB0ICkgeworICAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworICAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CistICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IGNsaWVudF9tYXhfd2luZG93X2JpdHM9OCIpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBjbGllbnRfbWF4X3dpbmRvd19iaXRzPTkiKTsKKyB9CisgCistQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9jbGllbnRfbWF4X3dpbmRvd19iaXRzX2xhcmdlc3QgKSB7CisrQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9jbGllbnRfbWF4X3dpbmRvd19iaXRzX2FjY2VwdCApIHsKKysgICAgZXh0X3ZhcnMgdjsKKysgICAgdi5hdHRyWyJjbGllbnRfbWF4X3dpbmRvd19iaXRzIl0gPSAiOSI7CisrCisrICAgIHYuZWMgPSB2LmV4dHMuc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMoMTUscG1kX21vZGU6OmFjY2VwdCk7CisrICAgIHYuZXNwID0gdi5leHRzLm5lZ290aWF0ZSh2LmF0dHIpOworKyAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IGNsaWVudF9tYXhfd2luZG93X2JpdHM9OSIpOworK30KKysKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfbGFyZ2VzdF84ICkgeworICAgICBleHRfdmFycyB2OworICAgICB2LmF0dHJbImNsaWVudF9tYXhfd2luZG93X2JpdHMiXSA9ICI4IjsKKyAKK0BAIC0zNDQsMTAgKzQxNywyMiBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfbGFyZ2VzdCApIHsKKyAgICAgQk9PU1RfQ0hFQ0soIHYuZXh0cy5pc19lbmFibGVkKCkgKTsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworICAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3AuZmlyc3QsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworLSAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBjbGllbnRfbWF4X3dpbmRvd19iaXRzPTgiKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZTsgY2xpZW50X21heF93aW5kb3dfYml0cz05Iik7CisgfQorIAorLUJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfY2xpZW50X21heF93aW5kb3dfYml0c19zbWFsbGVzdCApIHsKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfbGFyZ2VzdCApIHsKKysgICAgZXh0X3ZhcnMgdjsKKysgICAgdi5hdHRyWyJjbGllbnRfbWF4X3dpbmRvd19iaXRzIl0gPSAiOSI7CisrCisrICAgIHYuZWMgPSB2LmV4dHMuc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMoMTUscG1kX21vZGU6Omxhcmdlc3QpOworKyAgICB2LmVzcCA9IHYuZXh0cy5uZWdvdGlhdGUodi5hdHRyKTsKKysgICAgQk9PU1RfQ0hFQ0soIHYuZXh0cy5pc19lbmFibGVkKCkgKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3AuZmlyc3QsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBjbGllbnRfbWF4X3dpbmRvd19iaXRzPTkiKTsKKyt9CisrCisrQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9jbGllbnRfbWF4X3dpbmRvd19iaXRzX3NtYWxsZXN0XzggKSB7CisgICAgIGV4dF92YXJzIHY7CisgICAgIHYuYXR0clsiY2xpZW50X21heF93aW5kb3dfYml0cyJdID0gIjgiOworIAorQEAgLTM1Niw3ICs0NDEsMTkgQEAgQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9jbGllbnRfbWF4X3dpbmRvd19iaXRzX3NtYWxsZXN0ICkgeworICAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworICAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CistICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IGNsaWVudF9tYXhfd2luZG93X2JpdHM9OCIpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBjbGllbnRfbWF4X3dpbmRvd19iaXRzPTkiKTsKKyt9CisrCisrQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9jbGllbnRfbWF4X3dpbmRvd19iaXRzX3NtYWxsZXN0ICkgeworKyAgICBleHRfdmFycyB2OworKyAgICB2LmF0dHJbImNsaWVudF9tYXhfd2luZG93X2JpdHMiXSA9ICI5IjsKKysKKysgICAgdi5lYyA9IHYuZXh0cy5zZXRfY2xpZW50X21heF93aW5kb3dfYml0cygxNSxwbWRfbW9kZTo6c21hbGxlc3QpOworKyAgICB2LmVzcCA9IHYuZXh0cy5uZWdvdGlhdGUodi5hdHRyKTsKKysgICAgQk9PU1RfQ0hFQ0soIHYuZXh0cy5pc19lbmFibGVkKCkgKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3AuZmlyc3QsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBjbGllbnRfbWF4X3dpbmRvd19iaXRzPTkiKTsKKyB9CisgCisgCitAQCAtNTA3LDcgKzYwNCw4IEBAIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBjb21wcmVzc19kYXRhICkgeworICAgICBzdGQ6OnN0cmluZyBjb21wcmVzc19vdXQ7CisgICAgIHN0ZDo6c3RyaW5nIGRlY29tcHJlc3Nfb3V0OworIAorLSAgICB2LmV4dHMuaW5pdCh0cnVlKTsKKysgICAgdi5lYyA9IHYuZXh0cy5pbml0KHRydWUpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisgCisgICAgIHYuZWMgPSB2LmV4dHMuY29tcHJlc3MoY29tcHJlc3NfaW4sY29tcHJlc3Nfb3V0KTsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworQEAgLTUyMCw3ICs2MTgsOCBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggY29tcHJlc3NfZGF0YSApIHsKKyBCT09TVF9BVVRPX1RFU1RfQ0FTRSggY29tcHJlc3NfZGF0YV9tdWx0aXBsZSApIHsKKyAgICAgZXh0X3ZhcnMgdjsKKyAKKy0gICAgdi5leHRzLmluaXQodHJ1ZSk7CisrICAgIHYuZWMgPSB2LmV4dHMuaW5pdCh0cnVlKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworIAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeworICAgICAgICAgc3RkOjpzdHJpbmcgY29tcHJlc3NfaW4gPSAiSGVsbG8iOworQEAgLTU0NSwxMSArNjQ0LDEyIEBAIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBjb21wcmVzc19kYXRhX2xhcmdlICkgeworIAorICAgICB3ZWJzb2NrZXRwcDo6aHR0cDo6YXR0cmlidXRlX2xpc3QgYWxpc3Q7CisgCistICAgIGFsaXN0WyJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIl0gPSAiOCI7CistICAgIHYuZXh0cy5zZXRfc2VydmVyX21heF93aW5kb3dfYml0cyg4LHdlYnNvY2tldHBwOjpleHRlbnNpb25zOjpwZXJtZXNzYWdlX2RlZmxhdGU6Om1vZGU6OnNtYWxsZXN0KTsKKysgICAgYWxpc3RbInNlcnZlcl9tYXhfd2luZG93X2JpdHMiXSA9ICI5IjsKKysgICAgdi5leHRzLnNldF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKDksd2Vic29ja2V0cHA6OmV4dGVuc2lvbnM6OnBlcm1lc3NhZ2VfZGVmbGF0ZTo6bW9kZTo6c21hbGxlc3QpOworIAorICAgICB2LmV4dHMubmVnb3RpYXRlKGFsaXN0KTsKKy0gICAgdi5leHRzLmluaXQodHJ1ZSk7CisrICAgIHYuZWMgPSB2LmV4dHMuaW5pdCh0cnVlKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworIAorICAgICB2LmVjID0gdi5leHRzLmNvbXByZXNzKGNvbXByZXNzX2luLGNvbXByZXNzX291dCk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVjLCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKK0BAIC01NzMsNyArNjczLDggQEAgQk9PU1RfQVVUT19URVNUX0NBU0UoIGNvbXByZXNzX2RhdGFfbm9fY29udGV4dF90YWtlb3ZlciApIHsKKyAgICAgdi5leHRzLmVuYWJsZV9zZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcigpOworIAorICAgICB2LmV4dHMubmVnb3RpYXRlKGFsaXN0KTsKKy0gICAgdi5leHRzLmluaXQodHJ1ZSk7CisrICAgIHYuZWMgPSB2LmV4dHMuaW5pdCh0cnVlKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworIAorICAgICB2LmVjID0gdi5leHRzLmNvbXByZXNzKGNvbXByZXNzX2luLGNvbXByZXNzX291dDEpOworICAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CitAQCAtNjA5LDcgKzcxMCw4IEBAIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBjb21wcmVzc19lbXB0eSApIHsKKyAgICAgc3RkOjpzdHJpbmcgY29tcHJlc3Nfb3V0OworICAgICBzdGQ6OnN0cmluZyBkZWNvbXByZXNzX291dDsKKyAKKy0gICAgdi5leHRzLmluaXQodHJ1ZSk7CisrICAgIHYuZWMgPSB2LmV4dHMuaW5pdCh0cnVlKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworIAorICAgICB2LmVjID0gdi5leHRzLmNvbXByZXNzKGNvbXByZXNzX2luLGNvbXByZXNzX291dCk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVjLCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKK0BAIC02NDAsNyArNzQyLDggQEAgQk9PU1RfQVVUT19URVNUX0NBU0UoIGRlY29tcHJlc3NfZGF0YSApIHsKKyAgICAgc3RkOjpzdHJpbmcgb3V0OworICAgICBzdGQ6OnN0cmluZyByZWZlcmVuY2UgPSAiSGVsbG8iOworIAorLSAgICB2LmV4dHMuaW5pdCh0cnVlKTsKKysgICAgdi5lYyA9IHYuZXh0cy5pbml0KHRydWUpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisgCisgICAgIHYuZWMgPSB2LmV4dHMuZGVjb21wcmVzcyhpbiwxMSxvdXQpOworIAorZGlmZiAtLWdpdCBhL3dlYnNvY2tldHBwL2V4dGVuc2lvbnMvcGVybWVzc2FnZV9kZWZsYXRlL2VuYWJsZWQuaHBwIGIvd2Vic29ja2V0cHAvZXh0ZW5zaW9ucy9wZXJtZXNzYWdlX2RlZmxhdGUvZW5hYmxlZC5ocHAKK2luZGV4IDE1ODFmMTRjLi5mMjBhMWIxZCAxMDA2NDQKKy0tLSBhL3dlYnNvY2tldHBwL2V4dGVuc2lvbnMvcGVybWVzc2FnZV9kZWZsYXRlL2VuYWJsZWQuaHBwCisrKysgYi93ZWJzb2NrZXRwcC9leHRlbnNpb25zL3Blcm1lc3NhZ2VfZGVmbGF0ZS9lbmFibGVkLmhwcAorQEAgLTQ2LDcgKzQ2LDcgQEAKKyBuYW1lc3BhY2Ugd2Vic29ja2V0cHAgeworIG5hbWVzcGFjZSBleHRlbnNpb25zIHsKKyAKKy0vLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIGRyYWZ0IHBlcm1lc3NhZ2UtZGVmbGF0ZSBXZWJTb2NrZXQgZXh0ZW5zaW9uCisrLy8vIEltcGxlbWVudGF0aW9uIG9mIFJGQyA3NjkyLCB0aGUgcGVybWVzc2FnZS1kZWZsYXRlIFdlYlNvY2tldCBleHRlbnNpb24KKyAvKioKKyAgKiAjIyMgcGVybWVzc2FnZS1kZWZsYXRlIGludGVyZmFjZQorICAqCitAQCAtMTc0LDE4ICsxNzQsMzAgQEAgbmFtZXNwYWNlIHdlYnNvY2tldHBwIHsKKyBuYW1lc3BhY2UgZXh0ZW5zaW9ucyB7CisgbmFtZXNwYWNlIHBlcm1lc3NhZ2VfZGVmbGF0ZSB7CisgCistLy8vIERlZmF1bHQgdmFsdWUgZm9yIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgYXMgZGVmaW5lZCBieSBkcmFmdCAxNworKy8vLyBEZWZhdWx0IHZhbHVlIGZvciBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGFzIGRlZmluZWQgYnkgUkZDIDc2OTIKKyBzdGF0aWMgdWludDhfdCBjb25zdCBkZWZhdWx0X3NlcnZlcl9tYXhfd2luZG93X2JpdHMgPSAxNTsKKy0vLy8gTWluaW11bSB2YWx1ZSBmb3Igc2VydmVyX21heF93aW5kb3dfYml0cyBhcyBkZWZpbmVkIGJ5IGRyYWZ0IDE3CisrLy8vIE1pbmltdW0gdmFsdWUgZm9yIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgYXMgZGVmaW5lZCBieSBSRkMgNzY5MgorKy8qKgorKyAqIE5PVEU6IEEgdmFsdWUgb2YgOCBpcyBub3QgYWN0dWFsbHkgc3VwcG9ydGVkIGJ5IHpsaWIsIHRoZSBkZWZsYXRlCisrICogbGlicmFyeSB0aGF0IFdlYlNvY2tldCsrIHVzZXMuIFRvIHByZXNlcnZlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CisrICogd2l0aCBSRkMgNzY5MiBhbmQgcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkgYSB2YWx1ZSBvZiA4CisrICogaXMgYWNjZXB0ZWQgYnkgdGhlIGxpYnJhcnkgYnV0IHdpbGwgYWx3YXlzIGJlIG5lZ290aWF0ZWQgYXMgOS4KKysgKi8KKyBzdGF0aWMgdWludDhfdCBjb25zdCBtaW5fc2VydmVyX21heF93aW5kb3dfYml0cyA9IDg7CistLy8vIE1heGltdW0gdmFsdWUgZm9yIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgYXMgZGVmaW5lZCBieSBkcmFmdCAxNworKy8vLyBNYXhpbXVtIHZhbHVlIGZvciBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGFzIGRlZmluZWQgYnkgUkZDIDc2OTIKKyBzdGF0aWMgdWludDhfdCBjb25zdCBtYXhfc2VydmVyX21heF93aW5kb3dfYml0cyA9IDE1OworIAorLS8vLyBEZWZhdWx0IHZhbHVlIGZvciBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGFzIGRlZmluZWQgYnkgZHJhZnQgMTcKKysvLy8gRGVmYXVsdCB2YWx1ZSBmb3IgY2xpZW50X21heF93aW5kb3dfYml0cyBhcyBkZWZpbmVkIGJ5IFJGQyA3NjkyCisgc3RhdGljIHVpbnQ4X3QgY29uc3QgZGVmYXVsdF9jbGllbnRfbWF4X3dpbmRvd19iaXRzID0gMTU7CistLy8vIE1pbmltdW0gdmFsdWUgZm9yIGNsaWVudF9tYXhfd2luZG93X2JpdHMgYXMgZGVmaW5lZCBieSBkcmFmdCAxNworKy8vLyBNaW5pbXVtIHZhbHVlIGZvciBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGFzIGRlZmluZWQgYnkgUkZDIDc2OTIKKysvKioKKysgKiBOT1RFOiBBIHZhbHVlIG9mIDggaXMgbm90IGFjdHVhbGx5IHN1cHBvcnRlZCBieSB6bGliLCB0aGUgZGVmbGF0ZQorKyAqIGxpYnJhcnkgdGhhdCBXZWJTb2NrZXQrKyB1c2VzLiBUbyBwcmVzZXJ2ZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorKyAqIHdpdGggUkZDIDc2OTIgYW5kIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5IGEgdmFsdWUgb2YgOAorKyAqIGlzIGFjY2VwdGVkIGJ5IHRoZSBsaWJyYXJ5IGJ1dCB3aWxsIGFsd2F5cyBiZSBuZWdvdGlhdGVkIGFzIDkuCisrICovCisgc3RhdGljIHVpbnQ4X3QgY29uc3QgbWluX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSA4OworLS8vLyBNYXhpbXVtIHZhbHVlIGZvciBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGFzIGRlZmluZWQgYnkgZHJhZnQgMTcKKysvLy8gTWF4aW11bSB2YWx1ZSBmb3IgY2xpZW50X21heF93aW5kb3dfYml0cyBhcyBkZWZpbmVkIGJ5IFJGQyA3NjkyCisgc3RhdGljIHVpbnQ4X3QgY29uc3QgbWF4X2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSAxNTsKKyAKKyBuYW1lc3BhY2UgbW9kZSB7CitAQCAtMzcyLDcgKzM4NCw3IEBAIGNsYXNzIGVuYWJsZWQgeworICAgICAvKioKKyAgICAgICogVGhlIGJpdHMgc2V0dGluZyBpcyB0aGUgYmFzZSAyIGxvZ2FyaXRobSBvZiB0aGUgbWF4aW11bSB3aW5kb3cgc2l6ZSB0aGF0CisgICAgICAqIHRoZSBzZXJ2ZXIgbXVzdCB1c2UgdG8gY29tcHJlc3Mgb3V0Z29pbmcgbWVzc2FnZXMuIFRoZSBwZXJtaXR0ZWQgcmFuZ2UKKy0gICAgICogaXMgOCB0byAxNSBpbmNsdXNpdmUuIDggcmVwcmVzZW50cyBhIDI1NiBieXRlIHdpbmRvdyBhbmQgMTUgYSAzMktpQgorKyAgICAgKiBpcyA5IHRvIDE1IGluY2x1c2l2ZS4gOSByZXByZXNlbnRzIGEgNTEyIGJ5dGUgd2luZG93IGFuZCAxNSBhIDMyS2lCCisgICAgICAqIHdpbmRvdy4gVGhlIGRlZmF1bHQgc2V0dGluZyBpcyAxNS4KKyAgICAgICoKKyAgICAgICogTW9kZSBPcHRpb25zOgorQEAgLTM4Niw2ICszOTgsMTQgQEAgY2xhc3MgZW5hYmxlZCB7CisgICAgICAqIGFkanVzdGVkIGJ5IHRoZSBzZXJ2ZXIuIEEgc2VydmVyIG1heSB1bmlsYXRlcmFsbHkgc2V0IHRoaXMgdmFsdWUgd2l0aG91dAorICAgICAgKiBjbGllbnQgc3VwcG9ydC4KKyAgICAgICoKKysgICAgICogTk9URTogVGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBzcGVjIHNwZWNpZmllcyB0aGF0IGEgdmFsdWUgb2YgOCBpcyBhbGxvd2VkLgorKyAgICAgKiBQcmlvciB0byB2ZXJzaW9uIDAuOC4wIGEgdmFsdWUgb2YgOCB3YXMgYWxzbyBhbGxvd2VkIGJ5IHRoaXMgbGlicmFyeS4KKysgICAgICogemxpYiwgdGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbGlicmFyeSB0aGF0IFdlYlNvY2tldCsrIHVzZXMgaGFzIGFsd2F5cworKyAgICAgKiBzaWxlbnRseSBhZGp1c3RlZCBhIHZhbHVlIG9mIDggdG8gOS4gSW4gcmVjZW50IHZlcnNpb25zIG9mIHpsaWIgKDEuMi45IAorKyAgICAgKiBhbmQgZ3JlYXRlcikgYSB2YWx1ZSBvZiA4IGlzIG5vdyBleHBsaWNpdGx5IHJlamVjdGVkLiBXZWJTb2NrZXQrKyAwLjguMAorKyAgICAgKiBjb250aW51ZXMgdG8gcGVyZm9ybSB0aGUgOC0+OSBjb252ZXJzaW9uIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorKyAgICAgKiBwdXJwb3NlcyBidXQgdGhpcyBzaG91bGQgYmUgY29uc2lkZXJlZCBkZXByZWNhdGVkIGZ1bmN0aW9uYWxpdHkuCisrICAgICAqCisgICAgICAqIEBwYXJhbSBiaXRzIFRoZSBzaXplIHRvIHJlcXVlc3QgZm9yIHRoZSBvdXRnb2luZyB3aW5kb3cgc2l6ZQorICAgICAgKiBAcGFyYW0gbW9kZSBUaGUgbW9kZSB0byB1c2UgZm9yIG5lZ290aWF0aW5nIHRoaXMgcGFyYW1ldGVyCisgICAgICAqIEByZXR1cm4gQSBzdGF0dXMgY29kZQorQEAgLTM5NCw2ICs0MTQsMTIgQEAgY2xhc3MgZW5hYmxlZCB7CisgICAgICAgICBpZiAoYml0cyA8IG1pbl9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIHx8IGJpdHMgPiBtYXhfc2VydmVyX21heF93aW5kb3dfYml0cykgeworICAgICAgICAgICAgIHJldHVybiBlcnJvcjo6bWFrZV9lcnJvcl9jb2RlKGVycm9yOjppbnZhbGlkX21heF93aW5kb3dfYml0cyk7CisgICAgICAgICB9CisrCisrICAgICAgICAvLyBTZWUgbm90ZSBpbiBkb2MgY29tbWVudCBhYm92ZSBhYm91dCB3aGF0IGlzIGhhcHBlbmluZyBoZXJlCisrICAgICAgICBpZiAoYml0cyA9PSA4KSB7CisrICAgICAgICAgICAgYml0cyA9IDk7CisrICAgICAgICB9CisrCisgICAgICAgICBtX3NlcnZlcl9tYXhfd2luZG93X2JpdHMgPSBiaXRzOworICAgICAgICAgbV9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzX21vZGUgPSBtb2RlOworIAorQEAgLTQwMyw4ICs0MjksOCBAQCBjbGFzcyBlbmFibGVkIHsKKyAgICAgLy8vIExpbWl0IGNsaWVudCBMWjc3IHNsaWRpbmcgd2luZG93IHNpemUKKyAgICAgLyoqCisgICAgICAqIFRoZSBiaXRzIHNldHRpbmcgaXMgdGhlIGJhc2UgMiBsb2dhcml0aG0gb2YgdGhlIHdpbmRvdyBzaXplIHRoYXQgdGhlCistICAgICAqIGNsaWVudCBtdXN0IHVzZSB0byBjb21wcmVzcyBvdXRnb2luZyBtZXNzYWdlcy4gVGhlIHBlcm1pdHRlZCByYW5nZSBpcyA4CistICAgICAqIHRvIDE1IGluY2x1c2l2ZS4gOCByZXByZXNlbnRzIGEgMjU2IGJ5dGUgd2luZG93IGFuZCAxNSBhIDMyS2lCIHdpbmRvdy4KKysgICAgICogY2xpZW50IG11c3QgdXNlIHRvIGNvbXByZXNzIG91dGdvaW5nIG1lc3NhZ2VzLiBUaGUgcGVybWl0dGVkIHJhbmdlIGlzIDkKKysgICAgICogdG8gMTUgaW5jbHVzaXZlLiA5IHJlcHJlc2VudHMgYSA1MTIgYnl0ZSB3aW5kb3cgYW5kIDE1IGEgMzJLaUIgd2luZG93LgorICAgICAgKiBUaGUgZGVmYXVsdCBzZXR0aW5nIGlzIDE1LgorICAgICAgKgorICAgICAgKiBNb2RlIE9wdGlvbnM6CitAQCAtNDE3LDYgKzQ0MywxNCBAQCBjbGFzcyBlbmFibGVkIHsKKyAgICAgICogb3V0Z29pbmcgd2luZG93IHNpemUgdW5pbGF0ZXJhbGx5LiBBIHNlcnZlciBtYXkgb25seSBsaW1pdCB0aGUgY2xpZW50J3MKKyAgICAgICogd2luZG93IHNpemUgaWYgdGhlIHJlbW90ZSBjbGllbnQgc3VwcG9ydHMgdGhhdCBmZWF0dXJlLgorICAgICAgKgorKyAgICAgKiBOT1RFOiBUaGUgcGVybWVzc2FnZS1kZWZsYXRlIHNwZWMgc3BlY2lmaWVzIHRoYXQgYSB2YWx1ZSBvZiA4IGlzIGFsbG93ZWQuCisrICAgICAqIFByaW9yIHRvIHZlcnNpb24gMC44LjAgYSB2YWx1ZSBvZiA4IHdhcyBhbHNvIGFsbG93ZWQgYnkgdGhpcyBsaWJyYXJ5LgorKyAgICAgKiB6bGliLCB0aGUgZGVmbGF0ZSBjb21wcmVzc2lvbiBsaWJyYXJ5IHRoYXQgV2ViU29ja2V0KysgdXNlcyBoYXMgYWx3YXlzCisrICAgICAqIHNpbGVudGx5IGFkanVzdGVkIGEgdmFsdWUgb2YgOCB0byA5LiBJbiByZWNlbnQgdmVyc2lvbnMgb2YgemxpYiAoMS4yLjkgCisrICAgICAqIGFuZCBncmVhdGVyKSBhIHZhbHVlIG9mIDggaXMgbm93IGV4cGxpY2l0bHkgcmVqZWN0ZWQuIFdlYlNvY2tldCsrIDAuOC4wCisrICAgICAqIGNvbnRpbnVlcyB0byBwZXJmb3JtIHRoZSA4LT45IGNvbnZlcnNpb24gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CisrICAgICAqIHB1cnBvc2VzIGJ1dCB0aGlzIHNob3VsZCBiZSBjb25zaWRlcmVkIGRlcHJlY2F0ZWQgZnVuY3Rpb25hbGl0eS4KKysgICAgICoKKyAgICAgICogQHBhcmFtIGJpdHMgVGhlIHNpemUgdG8gcmVxdWVzdCBmb3IgdGhlIG91dGdvaW5nIHdpbmRvdyBzaXplCisgICAgICAqIEBwYXJhbSBtb2RlIFRoZSBtb2RlIHRvIHVzZSBmb3IgbmVnb3RpYXRpbmcgdGhpcyBwYXJhbWV0ZXIKKyAgICAgICogQHJldHVybiBBIHN0YXR1cyBjb2RlCitAQCAtNDI1LDYgKzQ1OSwxMiBAQCBjbGFzcyBlbmFibGVkIHsKKyAgICAgICAgIGlmIChiaXRzIDwgbWluX2NsaWVudF9tYXhfd2luZG93X2JpdHMgfHwgYml0cyA+IG1heF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKSB7CisgICAgICAgICAgICAgcmV0dXJuIGVycm9yOjptYWtlX2Vycm9yX2NvZGUoZXJyb3I6OmludmFsaWRfbWF4X3dpbmRvd19iaXRzKTsKKyAgICAgICAgIH0KKysKKysgICAgICAgIC8vIFNlZSBub3RlIGluIGRvYyBjb21tZW50IGFib3ZlIGFib3V0IHdoYXQgaXMgaGFwcGVuaW5nIGhlcmUKKysgICAgICAgIGlmIChiaXRzID09IDgpIHsKKysgICAgICAgICAgICBiaXRzID0gOTsKKysgICAgICAgIH0KKysKKyAgICAgICAgIG1fY2xpZW50X21heF93aW5kb3dfYml0cyA9IGJpdHM7CisgICAgICAgICBtX2NsaWVudF9tYXhfd2luZG93X2JpdHNfbW9kZSA9IG1vZGU7CisgCitAQCAtNjQyLDExICs2ODIsMTcgQEAgY2xhc3MgZW5hYmxlZCB7CisgICAgICAqIGNsaWVudCByZXF1ZXN0ZWQgdGhhdCB3ZSB1c2UuCisgICAgICAqCisgICAgICAqIG9wdGlvbnM6CistICAgICAqIC0gZGVjbGluZSAocmVmdXNlIHRvIHVzZSB0aGUgYXR0cmlidXRlKQorLSAgICAgKiAtIGFjY2VwdCAodXNlIHdoYXRldmVyIHRoZSBjbGllbnQgc2F5cykKKy0gICAgICogLSBsYXJnZXN0ICh1c2UgbGFyZ2VzdCBwb3NzaWJsZSB2YWx1ZSkKKysgICAgICogLSBkZWNsaW5lIChpZ25vcmUgdmFsdWUsIG9mZmVyIG91ciBkZWZhdWx0IGluc3RlYWQpCisrICAgICAqIC0gYWNjZXB0ICh1c2UgdGhlIHZhbHVlIHJlcXVlc3RlZCBieSB0aGUgY2xpZW50KQorKyAgICAgKiAtIGxhcmdlc3QgKHVzZSBsYXJnZXN0IHZhbHVlIGFjY2VwdGFibGUgdG8gYm90aCkKKyAgICAgICogLSBzbWFsbGVzdCAodXNlIHNtYWxsZXN0IHBvc3NpYmxlIHZhbHVlKQorICAgICAgKgorKyAgICAgKiBOT1RFOiBBcyBhIHZhbHVlIG9mIDggaXMgbm8gbG9uZ2VyIGV4cGxpY2l0bHkgc3VwcG9ydGVkIGJ5IHpsaWIgYnV0IG1pZ2h0CisrICAgICAqIGJlIHJlcXVlc3RlZCBmb3IgbmVnb3RpYXRpb24gYnkgYW4gb2xkZXIgY2xpZW50L3NlcnZlciwgaWYgdGhlIHJlc3VsdCBvZgorKyAgICAgKiB0aGUgbmVnb3RpYXRpb24gd291bGQgYmUgdG8gc2VuZCBhIHZhbHVlIG9mIDgsIGEgdmFsdWUgb2YgOSBpcyBvZmZlcmVkCisrICAgICAqIGluc3RlYWQuIFRoaXMgZW5zdXJlcyB0aGF0IFdlYlNvY2tldCsrIHdpbGwgb25seSBldmVyIG5lZ290aWF0ZSBjb25uZWN0aW9ucworKyAgICAgKiB3aXRoIGNvbXByZXNzaW9uIHNldHRpbmdzIGV4cGxpY2l0bHkgc3VwcG9ydGVkIGJ5IHpsaWIuCisrICAgICAqCisgICAgICAqIEBwYXJhbSBbaW5dIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIGZyb20gdGhlIG9mZmVyCisgICAgICAqIEBwYXJhbSBbb3V0XSBlYyBBIHJlZmVyZW5jZSB0byB0aGUgZXJyb3IgY29kZSB0byByZXR1cm4gZXJyb3JzIHZpYQorICAgICAgKi8KK0BAIC02NzgsNiArNzI0LDExIEBAIGNsYXNzIGVuYWJsZWQgeworICAgICAgICAgICAgICAgICBlYyA9IG1ha2VfZXJyb3JfY29kZShlcnJvcjo6aW52YWxpZF9tb2RlKTsKKyAgICAgICAgICAgICAgICAgbV9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID0gZGVmYXVsdF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzOworICAgICAgICAgfQorKworKyAgICAgICAgLy8gU2VlIG5vdGUgaW4gZG9jIGNvbW1lbnQKKysgICAgICAgIGlmIChtX3NlcnZlcl9tYXhfd2luZG93X2JpdHMgPT0gOCkgeworKyAgICAgICAgICAgIG1fc2VydmVyX21heF93aW5kb3dfYml0cyA9IDk7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgLy8vIE5lZ290aWF0ZSBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGF0dHJpYnV0ZQorQEAgLTY4NywxMSArNzM4LDE3IEBAIGNsYXNzIGVuYWJsZWQgeworICAgICAgKiBuZWdvdGlhdGlvbiBtb2RlLgorICAgICAgKgorICAgICAgKiBvcHRpb25zOgorLSAgICAgKiAtIGRlY2xpbmUgKHJlZnVzZSB0byB1c2UgdGhlIGF0dHJpYnV0ZSkKKy0gICAgICogLSBhY2NlcHQgKHVzZSB3aGF0ZXZlciB0aGUgY2xpZW50IHNheXMpCistICAgICAqIC0gbGFyZ2VzdCAodXNlIGxhcmdlc3QgcG9zc2libGUgdmFsdWUpCisrICAgICAqIC0gZGVjbGluZSAoaWdub3JlIHZhbHVlLCBvZmZlciBvdXIgZGVmYXVsdCBpbnN0ZWFkKQorKyAgICAgKiAtIGFjY2VwdCAodXNlIHRoZSB2YWx1ZSByZXF1ZXN0ZWQgYnkgdGhlIGNsaWVudCkKKysgICAgICogLSBsYXJnZXN0ICh1c2UgbGFyZ2VzdCB2YWx1ZSBhY2NlcHRhYmxlIHRvIGJvdGgpCisgICAgICAqIC0gc21hbGxlc3QgKHVzZSBzbWFsbGVzdCBwb3NzaWJsZSB2YWx1ZSkKKyAgICAgICoKKysgICAgICogTk9URTogQXMgYSB2YWx1ZSBvZiA4IGlzIG5vIGxvbmdlciBleHBsaWNpdGx5IHN1cHBvcnRlZCBieSB6bGliIGJ1dCBtaWdodAorKyAgICAgKiBiZSByZXF1ZXN0ZWQgZm9yIG5lZ290aWF0aW9uIGJ5IGFuIG9sZGVyIGNsaWVudC9zZXJ2ZXIsIGlmIHRoZSByZXN1bHQgb2YKKysgICAgICogdGhlIG5lZ290aWF0aW9uIHdvdWxkIGJlIHRvIHNlbmQgYSB2YWx1ZSBvZiA4LCBhIHZhbHVlIG9mIDkgaXMgb2ZmZXJlZAorKyAgICAgKiBpbnN0ZWFkLiBUaGlzIGVuc3VyZXMgdGhhdCBXZWJTb2NrZXQrKyB3aWxsIG9ubHkgZXZlciBuZWdvdGlhdGUgY29ubmVjdGlvbnMKKysgICAgICogd2l0aCBjb21wcmVzc2lvbiBzZXR0aW5ncyBleHBsaWNpdGx5IHN1cHBvcnRlZCBieSB6bGliLgorKyAgICAgKgorICAgICAgKiBAcGFyYW0gW2luXSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSBvZmZlcgorICAgICAgKiBAcGFyYW0gW291dF0gZWMgQSByZWZlcmVuY2UgdG8gdGhlIGVycm9yIGNvZGUgdG8gcmV0dXJuIGVycm9ycyB2aWEKKyAgICAgICovCitAQCAtNzI3LDYgKzc4NCwxMSBAQCBjbGFzcyBlbmFibGVkIHsKKyAgICAgICAgICAgICAgICAgZWMgPSBtYWtlX2Vycm9yX2NvZGUoZXJyb3I6OmludmFsaWRfbW9kZSk7CisgICAgICAgICAgICAgICAgIG1fY2xpZW50X21heF93aW5kb3dfYml0cyA9IGRlZmF1bHRfY2xpZW50X21heF93aW5kb3dfYml0czsKKyAgICAgICAgIH0KKysKKysgICAgICAgIC8vIFNlZSBub3RlIGluIGRvYyBjb21tZW50CisrICAgICAgICBpZiAobV9jbGllbnRfbWF4X3dpbmRvd19iaXRzID09IDgpIHsKKysgICAgICAgICAgICBtX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSA5OworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGJvb2wgbV9lbmFibGVkOworZGlmZiAtLWdpdCBhL3dlYnNvY2tldHBwL2ltcGwvY29ubmVjdGlvbl9pbXBsLmhwcCBiL3dlYnNvY2tldHBwL2ltcGwvY29ubmVjdGlvbl9pbXBsLmhwcAoraW5kZXggMTA1OTExZGIuLmFlNTVjMzM4IDEwMDY0NAorLS0tIGEvd2Vic29ja2V0cHAvaW1wbC9jb25uZWN0aW9uX2ltcGwuaHBwCisrKysgYi93ZWJzb2NrZXRwcC9pbXBsL2Nvbm5lY3Rpb25faW1wbC5ocHAKK0BAIC0xMjIyLDEyICsxMjIyLDE4IEBAIGxpYjo6ZXJyb3JfY29kZSBjb25uZWN0aW9uPGNvbmZpZz46OnByb2Nlc3NfaGFuZHNoYWtlX3JlcXVlc3QoKSB7CisgICAgIHN0ZDo6cGFpcjxsaWI6OmVycm9yX2NvZGUsc3RkOjpzdHJpbmc+IG5lZ19yZXN1bHRzOworICAgICBuZWdfcmVzdWx0cyA9IG1fcHJvY2Vzc29yLT5uZWdvdGlhdGVfZXh0ZW5zaW9ucyhtX3JlcXVlc3QpOworIAorLSAgICBpZiAobmVnX3Jlc3VsdHMuZmlyc3QpIHsKKysgICAgaWYgKG5lZ19yZXN1bHRzLmZpcnN0ID09IGVycm9yOjptYWtlX2Vycm9yX2NvZGUoZXJyb3I6OmV4dGVuc2lvbl9wYXJzZV9lcnJvcikpIHsKKyAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGZhdGFsIGVycm9yIGluIGV4dGVuc2lvbiBwYXJzaW5nIHRoYXQgc2hvdWxkIHJlc3VsdCBpbgorICAgICAgICAgLy8gYSBmYWlsZWQgY29ubmVjdGlvbiBhdHRlbXB0LgorLSAgICAgICAgbV9hbG9nLndyaXRlKGxvZzo6YWxldmVsOjpkZXZlbCwgIkJhZCByZXF1ZXN0OiAiICsgbmVnX3Jlc3VsdHMuZmlyc3QubWVzc2FnZSgpKTsKKysgICAgICAgIG1fYWxvZy53cml0ZShsb2c6OmFsZXZlbDo6aW5mbywgIkJhZCByZXF1ZXN0OiAiICsgbmVnX3Jlc3VsdHMuZmlyc3QubWVzc2FnZSgpKTsKKyAgICAgICAgIG1fcmVzcG9uc2Uuc2V0X3N0YXR1cyhodHRwOjpzdGF0dXNfY29kZTo6YmFkX3JlcXVlc3QpOworICAgICAgICAgcmV0dXJuIG5lZ19yZXN1bHRzLmZpcnN0OworKyAgICB9IGVsc2UgaWYgKG5lZ19yZXN1bHRzLmZpcnN0KSB7CisrICAgICAgICAvLyBUaGVyZSB3YXMgYSBmYXRhbCBlcnJvciBpbiBleHRlbnNpb24gcHJvY2Vzc2luZyB0aGF0IGlzIHByb2JhYmx5IG91cgorKyAgICAgICAgLy8gZmF1bHQuIENvbnNpZGVyIGV4dGVuc2lvbiBuZWdvdGlhdGlvbiB0byBoYXZlIGZhaWxlZCBhbmQgY29udGludWUgYXMKKysgICAgICAgIC8vIGlmIGV4dGVuc2lvbnMgd2VyZSBub3Qgc3VwcG9ydGVkCisrICAgICAgICBtX2Fsb2cud3JpdGUobG9nOjphbGV2ZWw6OmluZm8sIAorKyAgICAgICAgICAgICJFeHRlbnNpb24gbmVnb3RpYXRpb24gZmFpbGVkOiAiICsgbmVnX3Jlc3VsdHMuZmlyc3QubWVzc2FnZSgpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8vIGV4dGVuc2lvbiBuZWdvdGlhdGlvbiBzdWNjZWVkZWQsIHNldCByZXNwb25zZSBoZWFkZXIgYWNjb3JkaW5nbHkKKyAgICAgICAgIC8vIHdlIGRvbid0IHNlbmQgYW4gZW1wdHkgZXh0ZW5zaW9ucyBoZWFkZXIgYmVjYXVzZSBpdCBicmVha3MgbWFueQorZGlmZiAtLWdpdCBhL3dlYnNvY2tldHBwL3Byb2Nlc3NvcnMvaHliaTEzLmhwcCBiL3dlYnNvY2tldHBwL3Byb2Nlc3NvcnMvaHliaTEzLmhwcAoraW5kZXggNzk0ODY2NTQuLmE5NWJjNjQ5IDEwMDY0NAorLS0tIGEvd2Vic29ja2V0cHAvcHJvY2Vzc29ycy9oeWJpMTMuaHBwCisrKysgYi93ZWJzb2NrZXRwcC9wcm9jZXNzb3JzL2h5YmkxMy5ocHAKK0BAIC05Nyw2ICs5NywxMSBAQCBjbGFzcyBoeWJpMTMgOiBwdWJsaWMgcHJvY2Vzc29yPGNvbmZpZz4geworICAgICAvKioKKyAgICAgICogVGhpcyBleGlzdHMgbW9zdGx5IGJlY2F1c2UgdGhlIGNvZGUgZm9yIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgaXMKKyAgICAgICogaWRlbnRpY2FsIGFuZCBJIGNhbid0IGhhdmUgdmlydHVhbCB0ZW1wbGF0ZSBtZXRob2RzLgorKyAgICAgKgorKyAgICAgKiBOT1RFOiB0aGlzIG1ldGhvZCBtYWtlcyBhc3N1bXB0aW9ucyB0aGF0IHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUKKysgICAgICogZXh0ZW5zaW9uIGlzIHRoZSBvbmx5IG9uZSBzdXBwb3J0ZWQuIElmIGFkZGl0aW9uYWwgZXh0ZW5zaW9ucyBhcmUKKysgICAgICogZXZlciBzdXBwb3J0ZWQgaXQgc2hvdWxkIGJlIHJldmlld2VkIGNhcmVmdWxseS4gTW9zdCBjYXNlcyB3aGVyZQorKyAgICAgKiB0aGF0IGFzc3VtcHRpb24gaXMgbWFkZSBhcmUgZXhwbGljaXRseSBub3RlZC4KKyAgICAgICovCisgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBoZWFkZXJfdHlwZT4KKyAgICAgZXJyX3N0cl9wYWlyIG5lZ290aWF0ZV9leHRlbnNpb25zX2hlbHBlcihoZWFkZXJfdHlwZSBjb25zdCAmIGhlYWRlcikgeworQEAgLTE0OSw5ICsxNTQsMjYgQEAgY2xhc3MgaHliaTEzIDogcHVibGljIHByb2Nlc3Nvcjxjb25maWc+IHsKKyAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogdGhpcyBsaXN0IHdpbGwgbmVlZCBjb21tYXMgaWYgV2ViU29ja2V0KysgZXZlcgorICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1cHBvcnRzIG1vcmUgdGhhbiBvbmUgZXh0ZW5zaW9uCistICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnNlY29uZCArPSBuZWdfcmV0LnNlY29uZDsKKy0gICAgICAgICAgICAgICAgICAgICAgICBtX3Blcm1lc3NhZ2VfZGVmbGF0ZS5pbml0KGJhc2U6Om1fc2VydmVyKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgICAgICAgICAKKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBBY3R1YWxseSB0cnkgdG8gaW5pdGlhbGl6ZSB0aGUgZXh0ZW5zaW9uIGJlZm9yZSB3ZQorKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZW0gbmVnb3RpYXRpb24gY29tcGxldGUKKysgICAgICAgICAgICAgICAgICAgICAgICByZXQuZmlyc3QgPSBtX3Blcm1lc3NhZ2VfZGVmbGF0ZS5pbml0KGJhc2U6Om1fc2VydmVyKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJldC5maXJzdCkgeworKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBzdXBwb3J0IG11bHRpcGxlIGV4dGVuc2lvbnMuCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJpZ2h0IG5vdywgYmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9uZSBleHRlbnNpb24gCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1cHBvcnRlZCwgaXQgZmFpbGluZyB0byBuZWdvdGlhdGUgbWVhbnMgd2UgYXJlCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbmUgd2l0aCBhbGwgbmVnb3RpYXRpbmcuIEluIHRoZSBmdXR1cmUgaWYgbW9yZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleHRlbnNpb25zIGFyZSBzdXBwb3J0ZWQgYSBiZXR0ZXIgc29sdXRpb24gd2lsbAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZSBuZWVkZWQgaGVyZS4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnNlY29uZCArPSBuZWdfcmV0LnNlY29uZDsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGludWUgbG9va2luZyBmb3IgbW9yZSBleHRlbnNpb25zCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC43LjAvZGlzYWJsZS10ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC43LjAvZGlzYWJsZS10ZXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDI5ODFkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjcuMC9kaXNhYmxlLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Rlc2NyaXB0aW9uOiBEaXNhYmxlIGZhaWxpbmcgdGVzdF90cmFuc3BvcnRfYXNpb190aW1lcnMuCitCZWNhdXNlIG9mICJhZGRyZXNzIGFscmVhZHkgaW4gdXNlIiBlcnJvcgorL8KrUEtHQlVJTERESVLCuy90ZXN0L3RyYW5zcG9ydC9hc2lvL3RpbWVycy5jcHAoMTI5KTogZXJyb3IgaW4gInRsc19oYW5kc2hha2VfdGltZW91dCI6IGNoZWNrIGVjID09IG1ha2VfZXJyb3JfY29kZSh0bHNfaGFuZHNoYWtlX3RpbWVvdXQpIGZhaWxlZCBbd2Vic29ja2V0cHAudHJhbnNwb3J0LmFzaW8uc29ja2V0OjggIT0gd2Vic29ja2V0cHAudHJhbnNwb3J0LmFzaW8uc29ja2V0OjVdCitBdXRob3I6IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8bG9jdXR1c29mYm9yZ0BkZWJpYW4ub3JnPgorCistLS0gd2Vic29ja2V0cHAtMC43LjAub3JpZy90ZXN0L3RyYW5zcG9ydC9DTWFrZUxpc3RzLnR4dAorKysrIHdlYnNvY2tldHBwLTAuNy4wL3Rlc3QvdHJhbnNwb3J0L0NNYWtlTGlzdHMudHh0CitAQCAtMSwyNCArMSwyNCBAQAorIGlmIChPUEVOU1NMX0ZPVU5EKQorIAorLSMgVGVzdCB0cmFuc3BvcnQgaW50ZWdyYXRpb24KKy1maWxlIChHTE9CIFNPVVJDRSBpbnRlZ3JhdGlvbi5jcHApCistCistaW5pdF90YXJnZXQgKHRlc3RfdHJhbnNwb3J0KQorLWJ1aWxkX3Rlc3QgKCR7VEFSR0VUX05BTUV9ICR7U09VUkNFfSkKKy1saW5rX2Jvb3N0ICgpCistbGlua19vcGVuc3NsKCkKKy1maW5hbF90YXJnZXQgKCkKKy1zZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtUQVJHRVRfTkFNRX0gUFJPUEVSVElFUyBGT0xERVIgInRlc3QiKQorLQorLSMgVGVzdCB0cmFuc3BvcnQgYXNpbyB0aW1lcnMKKy1maWxlIChHTE9CIFNPVVJDRSBhc2lvL3RpbWVycy5jcHApCistCistaW5pdF90YXJnZXQgKHRlc3RfdHJhbnNwb3J0X2FzaW9fdGltZXJzKQorLWJ1aWxkX3Rlc3QgKCR7VEFSR0VUX05BTUV9ICR7U09VUkNFfSkKKy1saW5rX2Jvb3N0ICgpCistbGlua19vcGVuc3NsKCkKKy1maW5hbF90YXJnZXQgKCkKKy1zZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtUQVJHRVRfTkFNRX0gUFJPUEVSVElFUyBGT0xERVIgInRlc3QiKQorKyMjIFRlc3QgdHJhbnNwb3J0IGludGVncmF0aW9uCisrI2ZpbGUgKEdMT0IgU09VUkNFIGludGVncmF0aW9uLmNwcCkKKysjCisrI2luaXRfdGFyZ2V0ICh0ZXN0X3RyYW5zcG9ydCkKKysjYnVpbGRfdGVzdCAoJHtUQVJHRVRfTkFNRX0gJHtTT1VSQ0V9KQorKyNsaW5rX2Jvb3N0ICgpCisrI2xpbmtfb3BlbnNzbCgpCisrI2ZpbmFsX3RhcmdldCAoKQorKyNzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtUQVJHRVRfTkFNRX0gUFJPUEVSVElFUyBGT0xERVIgInRlc3QiKQorKyMKKysjIyBUZXN0IHRyYW5zcG9ydCBhc2lvIHRpbWVycworKyNmaWxlIChHTE9CIFNPVVJDRSBhc2lvL3RpbWVycy5jcHApCisrIworKyNpbml0X3RhcmdldCAodGVzdF90cmFuc3BvcnRfYXNpb190aW1lcnMpCisrI2J1aWxkX3Rlc3QgKCR7VEFSR0VUX05BTUV9ICR7U09VUkNFfSkKKysjbGlua19ib29zdCAoKQorKyNsaW5rX29wZW5zc2woKQorKyNmaW5hbF90YXJnZXQgKCkKKysjc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7VEFSR0VUX05BTUV9IFBST1BFUlRJRVMgRk9MREVSICJ0ZXN0IikKKyAKKyAjIFRlc3QgdHJhbnNwb3J0IGFzaW8gc2VjdXJpdHkKKyBmaWxlIChHTE9CIFNPVVJDRSBhc2lvL3NlY3VyaXR5LmNwcCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHBfMC43LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwXzAuNy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZmM5NzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwXzAuNy4wLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQysrL0Jvb3N0IEFzaW8gYmFzZWQgd2Vic29ja2V0IGNsaWVudC9zZXJ2ZXIgbGlicmFyeS4iCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS96YXBob3lkL3dlYnNvY2tldHBwIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9L0NPUFlJTkc7bWQ1PTRkMTY4ZDc2M2MxMTFmNGZmYzYyMjQ5ODcwZTRlMGVhIgorREVQRU5EUyA9ICJvcGVuc3NsIGJvb3N0IHpsaWIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS96YXBob3lkL3dlYnNvY2tldHBwLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIgorCisjIHRhZyAwLjcuMAorU1JDUkVWPSAiMzc4NDM3YWVjZGNiMWRmZTYyMDk2ZmZkNWQ5NDRiZjFmNjQwY2NjMyIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRml4LWlzc3VlLTU5OS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vOWRkYjMwMGQ4NzRhMzBkYjM1ZTNhZDU4ZjE4ODk0NGJlZjBiZjMxYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vNGNhYjVlNWMwYzVmMTlmY2VlN2QzN2I0YTM4YjE1NmQ2M2ExNTBkNC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS10ZXN0cy5wYXRjaCBcCisgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hkZy11c2VyLWRpcnMvZmlsZXMvMDAwMS1leHBsaWNpdGx5LWRpc2FibGUtbWFuLWdlbmVyYXRpb24tZGlzYWJsZS1kb2N1bWVudGF0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94ZGctdXNlci1kaXJzL2ZpbGVzLzAwMDEtZXhwbGljaXRseS1kaXNhYmxlLW1hbi1nZW5lcmF0aW9uLWRpc2FibGUtZG9jdW1lbnRhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJiMGU0OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hkZy11c2VyLWRpcnMvZmlsZXMvMDAwMS1leHBsaWNpdGx5LWRpc2FibGUtbWFuLWdlbmVyYXRpb24tZGlzYWJsZS1kb2N1bWVudGF0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSA0MTA5M2Q5NjM0YmZlZGRjYWVjODY2NzQ1ZDhkNDAyMmY0YzZmOGMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogU3VuLCAxOSBGZWIgMjAxNyAyMTowMTozOSArMDEwMAotU3ViamVjdDogW1BBVENIXSBleHBsaWNpdGx5IGRpc2FibGUgbWFuIGdlbmVyYXRpb24gLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gaXMKLSBub3QgZW5vdWdoCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGMwMWM1NGYuLmRjZGY3YTIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAotIE5VTEwgPQotIAotLVNVQkRJUlM9cG8gbWFuCi0rU1VCRElSUz1wbwotIAotIElOQ0xVREVTID0JCQkJCVwKLSAJLUkkKHRvcF9zcmNkaXIpCQkJCVwKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94ZGctdXNlci1kaXJzL2ZpbGVzL3hkZy11c2VyLWRpcnMuZGVza3RvcCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGRnLXVzZXItZGlycy9maWxlcy94ZGctdXNlci1kaXJzLmRlc2t0b3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5YTIyZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94ZGctdXNlci1kaXJzL2ZpbGVzL3hkZy11c2VyLWRpcnMuZGVza3RvcAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotW0Rlc2t0b3AgRW50cnldCi1UeXBlPUFwcGxpY2F0aW9uCi1OYW1lPVVzZXIgZm9sZGVycyB1cGRhdGUKLUV4ZWM9eGRnLXVzZXItZGlycy11cGRhdGUKLVN0YXJ0dXBOb3RpZnk9ZmFsc2UKLU5vRGlzcGxheT10cnVlCi1YLUdOT01FLUF1dG9zdGFydC1QaGFzZT1Jbml0aWFsaXphdGlvbgotWC1LREUtYXV0b3N0YXJ0LXBoYXNlPTEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94ZGctdXNlci1kaXJzL3hkZy11c2VyLWRpcnNfMC4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGRnLXVzZXItZGlycy94ZGctdXNlci1kaXJzXzAuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwNTY3NTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94ZGctdXNlci1kaXJzL3hkZy11c2VyLWRpcnNfMC4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gInhkZy11c2VyLWRpcnMgaXMgYSB0b29sIHRvIGhlbHAgbWFuYWdlIHVzZXIgZGlyZWN0b3JpZXMgbGlrZSB0aGUgZGVza3RvcCBmb2xkZXIgYW5kIHRoZSBtdXNpYyBmb2xkZXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vdXNlci1kaXJzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vMDAwMS1leHBsaWNpdGx5LWRpc2FibGUtbWFuLWdlbmVyYXRpb24tZGlzYWJsZS1kb2N1bWVudGF0LnBhdGNoIFwKLSAgICBmaWxlOi8veGRnLXVzZXItZGlycy5kZXNrdG9wIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmNWFhZjU2ODZhZDdkODgwOWE2NjRiZmI0NTY2YTU0ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGI0YTc1MWY0MWQwNTU0YmNlM2UwY2U1ZThkOTM0YmU5OGNjNjJkNDhmMGI5MGE4OTRjM2UxOTE2NTUyNzg2IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0Ci0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0veGRnL2F1dG9zdGFydAotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0veGRnLXVzZXItZGlycy5kZXNrdG9wICR7RH0ke3N5c2NvbmZkaXJ9L3hkZy9hdXRvc3RhcnQKLX0KLQotQ09ORkZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7c3lzY29uZmRpcn0veGRnL3VzZXItZGlycy5jb25mIFwKLSAgICAke3N5c2NvbmZkaXJ9L3hkZy91c2VyLWRpcnMuZGVmYXVsdHMgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94ZGctdXNlci1kaXJzL3hkZy11c2VyLWRpcnNfMC4xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGRnLXVzZXItZGlycy94ZGctdXNlci1kaXJzXzAuMTcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNjZTkyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGRnLXVzZXItZGlycy94ZGctdXNlci1kaXJzXzAuMTcuYmIKQEAgLTAsMCArMSwxNiBAQAorREVTQ1JJUFRJT04gPSAieGRnLXVzZXItZGlycyBpcyBhIHRvb2wgdG8gaGVscCBtYW5hZ2UgdXNlciBkaXJlY3RvcmllcyBsaWtlIHRoZSBkZXNrdG9wIGZvbGRlciBhbmQgdGhlIG11c2ljIGZvbGRlciIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKKworU1JDX1VSSSA9ICJodHRwOi8vdXNlci1kaXJzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImUwNTY0ZWM2ZDgzOGU2ZTQxODY0ZDg3MmEyOWIzNTc1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJhMDcwNTI4MjM3ODhlODYxNDkyNWM1YTE5ZWY1Yjk2OGQ4ZGI3MzRmZGVlNjU2Njk5ZWE0Zjk3ZDEzMjQxOGMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtzeXNjb25mZGlyfS94ZGcvdXNlci1kaXJzLmNvbmYgXAorICAgICR7c3lzY29uZmRpcn0veGRnL3VzZXItZGlycy5kZWZhdWx0cyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hvcmcteHJkcC94b3JneHJkcF8wLjIuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG9yZy14cmRwL3hvcmd4cmRwXzAuMi41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZGFmZGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hvcmcteHJkcC94b3JneHJkcF8wLjIuNS5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIlhvcmcgZHJpdmVycyBmb3IgeHJkcC4iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTI1MjM2NjAzMjlmZGNhM2Q5NTRjMGE4NzM5MGUwMDciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyAKKworREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSB4c2VydmVyLXhvcmcgeHJkcCBuYXNtLW5hdGl2ZSIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgcGFtIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbmV1dHJpbm9sYWJzL3hvcmd4cmRwLmdpdCIKKworU1JDUkVWID0gImMxMjI1NDRmMTg0ZDQwMzFiYmFlMWFkODBmYmFiNTU0YzM0YTk0MjciCisKK1BWID0gIjAuMi41IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3hvcmcvbW9kdWxlcy8qIgorCitJTlNBTkVfU0tJUF8ke1BOfSArPSAieG9yZy1kcml2ZXItYWJpIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94cmRwL3hyZHAvMDAwMS1BZGRlZC1yZXFfZGlzdGluZ3Vpc2hlZF9uYW1lLWluLWV0Yy14cmRwLW9wZW5zc2wuY29uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94cmRwL3hyZHAvMDAwMS1BZGRlZC1yZXFfZGlzdGluZ3Vpc2hlZF9uYW1lLWluLWV0Yy14cmRwLW9wZW5zc2wuY29uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlN2ZjYTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hyZHAveHJkcC8wMDAxLUFkZGVkLXJlcV9kaXN0aW5ndWlzaGVkX25hbWUtaW4tZXRjLXhyZHAtb3BlbnNzbC5jb24ucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBkNzA1YjFkNjY2Y2I4NzEzZDg2ZWE2ZmIyZmM0NWM0MjQxMjgyODVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgorRGF0ZTogRnJpLCAxIERlYyAyMDE3IDEwOjI0OjUwICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZGVkICByZXFfZGlzdGluZ3Vpc2hlZF9uYW1lIGluIC9ldGMveHJkcC9vcGVuc3NsLmNvbmYsCisgb3RoZXJ3aXNlLCBjZXJ0LnBlbSBjYW4ndCBiZSBjcmVhdGVkLgorCitTaWduZWQtb2ZmLWJ5OiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+CistLS0KKyBrZXlnZW4vb3BlbnNzbC5jb25mIHwgOCArKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2tleWdlbi9vcGVuc3NsLmNvbmYgYi9rZXlnZW4vb3BlbnNzbC5jb25mCitpbmRleCAwOWRiNmMyLi5mMDc3ZDcyIDEwMDY0NAorLS0tIGEva2V5Z2VuL29wZW5zc2wuY29uZgorKysrIGIva2V5Z2VuL29wZW5zc2wuY29uZgorQEAgLTQsNiArNCwxNCBAQCBkaXN0aW5ndWlzaGVkX25hbWUgPSByZXFfZGlzdGluZ3Vpc2hlZF9uYW1lCisgeDUwOV9leHRlbnNpb25zID0gdjNfY2EKKyAKKyBbcmVxX2Rpc3Rpbmd1aXNoZWRfbmFtZV0KKysjIENlcnRpZmljYXRlIHN1YmplY3QKKysjY291bnRyeU5hbWUgPSBVUworKyNzdGF0ZU9yUHJvdmluY2VOYW1lID0gQ0EKKysjbG9jYWxpdHlOYW1lID0gU3Vubnl2YWxlCisrI29yZ2FuaXphdGlvbk5hbWUgPSB4cmRwCisrI29yZ2FuaXphdGlvbmFsVW5pdE5hbWUgPQorK2NvbW1vbk5hbWUgPSBYUkRQCisrI2VtYWlsQWRkcmVzcyA9CisgCisgW3YzX2NhXQorICMgRXh0ZW5zaW9ucyBmb3IgYSB0eXBpY2FsIENBIC0gUEtJWCByZWNvbW1lbmRhdGlvbi4KKy0tIAorMS44LjQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hyZHAveHJkcC8wMDAxLUZpeC1vZi1DVkUtMjAxNy0xNjkyNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHJkcC94cmRwLzAwMDEtRml4LW9mLUNWRS0yMDE3LTE2OTI3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjOTM2NDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hyZHAveHJkcC8wMDAxLUZpeC1vZi1DVkUtMjAxNy0xNjkyNy5wYXRjaApAQCAtMCwwICsxLDE0OCBAQAorU3ViamVjdDogW1BBVENIXSBGaXggQ1ZFLTIwMTctMTY5MjcKKworc2VzbWFuOiBzY3B2MCwgYWNjZXB0IHZhcmlhYmxlIGxlbmd0aCBkYXRhIGZpZWxkcworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IAorCistLS0KKyBzZXNtYW4vbGlic2NwL2xpYnNjcF92MC5jIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Nlc21hbi9saWJzY3AvbGlic2NwX3YwLmMgYi9zZXNtYW4vbGlic2NwL2xpYnNjcF92MC5jCitpbmRleCA1YTBjOGJmLi41NjkzNDA3IDEwMDY0NAorLS0tIGEvc2VzbWFuL2xpYnNjcC9saWJzY3BfdjAuYworKysrIGIvc2VzbWFuL2xpYnNjcC9saWJzY3BfdjAuYworQEAgLTE2MSw3ICsxNjEsNyBAQCBzY3BfdjBzX2FjY2VwdChzdHJ1Y3QgU0NQX0NPTk5FQ1RJT04gKmMsIHN0cnVjdCBTQ1BfU0VTU0lPTiAqKnMsIGludCBza2lwVmNoaykKKyAgICAgc3RydWN0IFNDUF9TRVNTSU9OICpzZXNzaW9uID0gMDsKKyAgICAgdHVpMTYgc3o7CisgICAgIHR1aTMyIGNvZGUgPSAwOworLSAgICBjaGFyIGJ1ZlsyNTddOworKyAgICBjaGFyICpidWYgPSAwOworIAorICAgICBpZiAoIXNraXBWY2hrKQorICAgICB7CitAQCAtMjI2LDI3ICsyMjYsMzEgQEAgc2NwX3Ywc19hY2NlcHQoc3RydWN0IFNDUF9DT05ORUNUSU9OICpjLCBzdHJ1Y3QgU0NQX1NFU1NJT04gKipzLCBpbnQgc2tpcFZjaGspCisgCisgICAgICAgICAvKiByZWFkaW5nIHVzZXJuYW1lICovCisgICAgICAgICBpbl91aW50MTZfYmUoYy0+aW5fcywgc3opOworLSAgICAgICAgYnVmW3N6XSA9ICdcMCc7CisrICAgICAgICBidWYgPSBnX25ldzAoY2hhciwgc3opOworICAgICAgICAgaW5fdWludDhhKGMtPmluX3MsIGJ1Ziwgc3opOworLQorKyAgICAgICAgYnVmW3N6XSA9ICdcMCc7CisgICAgICAgICBpZiAoMCAhPSBzY3Bfc2Vzc2lvbl9zZXRfdXNlcm5hbWUoc2Vzc2lvbiwgYnVmKSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBzY3Bfc2Vzc2lvbl9kZXN0cm95KHNlc3Npb24pOworICAgICAgICAgICAgIGxvZ19tZXNzYWdlKExPR19MRVZFTF9XQVJOSU5HLCAiW3YwOiVkXSBjb25uZWN0aW9uIGFib3J0ZWQ6IGVycm9yIHNldHRpbmcgdXNlcm5hbWUiLCBfX0xJTkVfXyk7CisrICAgICAgICAgICAgZ19mcmVlKGJ1Zik7CisgICAgICAgICAgICAgcmV0dXJuIFNDUF9TRVJWRVJfU1RBVEVfSU5URVJOQUxfRVJSOworICAgICAgICAgfQorKyAgICAgICAgZ19mcmVlKGJ1Zik7CisgCisgICAgICAgICAvKiByZWFkaW5nIHBhc3N3b3JkICovCisgICAgICAgICBpbl91aW50MTZfYmUoYy0+aW5fcywgc3opOworLSAgICAgICAgYnVmW3N6XSA9ICdcMCc7CisrICAgICAgICBidWYgPSBnX25ldzAoY2hhciwgc3opOworICAgICAgICAgaW5fdWludDhhKGMtPmluX3MsIGJ1Ziwgc3opOworLQorKyAgICAgICAgYnVmW3N6XSA9ICdcMCc7CisgICAgICAgICBpZiAoMCAhPSBzY3Bfc2Vzc2lvbl9zZXRfcGFzc3dvcmQoc2Vzc2lvbiwgYnVmKSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBzY3Bfc2Vzc2lvbl9kZXN0cm95KHNlc3Npb24pOworICAgICAgICAgICAgIGxvZ19tZXNzYWdlKExPR19MRVZFTF9XQVJOSU5HLCAiW3YwOiVkXSBjb25uZWN0aW9uIGFib3J0ZWQ6IGVycm9yIHNldHRpbmcgcGFzc3dvcmQiLCBfX0xJTkVfXyk7CisrICAgICAgICAgICAgZ19mcmVlKGJ1Zik7CisgICAgICAgICAgICAgcmV0dXJuIFNDUF9TRVJWRVJfU1RBVEVfSU5URVJOQUxfRVJSOworICAgICAgICAgfQorKyAgICAgICAgZ19mcmVlKGJ1Zik7CisgCisgICAgICAgICAvKiB3aWR0aCAqLworICAgICAgICAgaW5fdWludDE2X2JlKGMtPmluX3MsIHN6KTsKK0BAIC0yNzIsOSArMjc2LDExIEBAIHNjcF92MHNfYWNjZXB0KHN0cnVjdCBTQ1BfQ09OTkVDVElPTiAqYywgc3RydWN0IFNDUF9TRVNTSU9OICoqcywgaW50IHNraXBWY2hrKQorIAorICAgICAgICAgICAgIGlmIChzeiA+IDApCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBidWYgPSBnX25ldzAoY2hhciwgc3opOworICAgICAgICAgICAgICAgICBpbl91aW50OGEoYy0+aW5fcywgYnVmLCBzeik7CisgICAgICAgICAgICAgICAgIGJ1Zltzel0gPSAnXDAnOworICAgICAgICAgICAgICAgICBzY3Bfc2Vzc2lvbl9zZXRfZG9tYWluKHNlc3Npb24sIGJ1Zik7CisrICAgICAgICAgICAgICAgIGdfZnJlZShidWYpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKK0BAIC0yODUsOSArMjkxLDExIEBAIHNjcF92MHNfYWNjZXB0KHN0cnVjdCBTQ1BfQ09OTkVDVElPTiAqYywgc3RydWN0IFNDUF9TRVNTSU9OICoqcywgaW50IHNraXBWY2hrKQorIAorICAgICAgICAgICAgIGlmIChzeiA+IDApCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBidWYgPSBnX25ldzAoY2hhciwgc3opOworICAgICAgICAgICAgICAgICBpbl91aW50OGEoYy0+aW5fcywgYnVmLCBzeik7CisgICAgICAgICAgICAgICAgIGJ1Zltzel0gPSAnXDAnOworICAgICAgICAgICAgICAgICBzY3Bfc2Vzc2lvbl9zZXRfcHJvZ3JhbShzZXNzaW9uLCBidWYpOworKyAgICAgICAgICAgICAgICBnX2ZyZWUoYnVmKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCitAQCAtMjk4LDkgKzMwNiwxMSBAQCBzY3BfdjBzX2FjY2VwdChzdHJ1Y3QgU0NQX0NPTk5FQ1RJT04gKmMsIHN0cnVjdCBTQ1BfU0VTU0lPTiAqKnMsIGludCBza2lwVmNoaykKKyAKKyAgICAgICAgICAgICBpZiAoc3ogPiAwKQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgYnVmID0gZ19uZXcwKGNoYXIsIHN6KTsKKyAgICAgICAgICAgICAgICAgaW5fdWludDhhKGMtPmluX3MsIGJ1Ziwgc3opOworICAgICAgICAgICAgICAgICBidWZbc3pdID0gJ1wwJzsKKyAgICAgICAgICAgICAgICAgc2NwX3Nlc3Npb25fc2V0X2RpcmVjdG9yeShzZXNzaW9uLCBidWYpOworKyAgICAgICAgICAgICAgICBnX2ZyZWUoYnVmKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCitAQCAtMzExLDkgKzMyMSwxMSBAQCBzY3BfdjBzX2FjY2VwdChzdHJ1Y3QgU0NQX0NPTk5FQ1RJT04gKmMsIHN0cnVjdCBTQ1BfU0VTU0lPTiAqKnMsIGludCBza2lwVmNoaykKKyAKKyAgICAgICAgICAgICBpZiAoc3ogPiAwKQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgYnVmID0gZ19uZXcwKGNoYXIsIHN6KTsKKyAgICAgICAgICAgICAgICAgaW5fdWludDhhKGMtPmluX3MsIGJ1Ziwgc3opOworICAgICAgICAgICAgICAgICBidWZbc3pdID0gJ1wwJzsKKyAgICAgICAgICAgICAgICAgc2NwX3Nlc3Npb25fc2V0X2NsaWVudF9pcChzZXNzaW9uLCBidWYpOworKyAgICAgICAgICAgICAgICBnX2ZyZWUoYnVmKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0KK0BAIC0zMzIsMjkgKzM0NCwzNSBAQCBzY3BfdjBzX2FjY2VwdChzdHJ1Y3QgU0NQX0NPTk5FQ1RJT04gKmMsIHN0cnVjdCBTQ1BfU0VTU0lPTiAqKnMsIGludCBza2lwVmNoaykKKyAgICAgICAgIHNjcF9zZXNzaW9uX3NldF90eXBlKHNlc3Npb24sIFNDUF9HV19BVVRIRU5USUNBVElPTik7CisgICAgICAgICAvKiByZWFkaW5nIHVzZXJuYW1lICovCisgICAgICAgICBpbl91aW50MTZfYmUoYy0+aW5fcywgc3opOworLSAgICAgICAgYnVmW3N6XSA9ICdcMCc7CisrICAgICAgICBidWYgPSBnX25ldzAoY2hhciwgc3opOworICAgICAgICAgaW5fdWludDhhKGMtPmluX3MsIGJ1Ziwgc3opOworKyAgICAgICAgYnVmW3N6XSA9ICdcMCc7CisgCisgICAgICAgICAvKiBnX3dyaXRlbG4oIlJlY2VpdmVkIHVzZXIgbmFtZTogJXMiLGJ1Zik7ICovCisgICAgICAgICBpZiAoMCAhPSBzY3Bfc2Vzc2lvbl9zZXRfdXNlcm5hbWUoc2Vzc2lvbiwgYnVmKSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBzY3Bfc2Vzc2lvbl9kZXN0cm95KHNlc3Npb24pOworICAgICAgICAgICAgIC8qIHVudGlsIHN5c2xvZyBtZXJnZSBsb2dfbWVzc2FnZShzX2xvZywgTE9HX0xFVkVMX1dBUk5JTkcsICJbdjA6JWRdIGNvbm5lY3Rpb24gYWJvcnRlZDogZXJyb3Igc2V0dGluZyAgICAgICAgdXNlcm5hbWUiLCBfX0xJTkVfXyk7Ki8KKysgICAgICAgICAgICBnX2ZyZWUoYnVmKTsKKyAgICAgICAgICAgICByZXR1cm4gU0NQX1NFUlZFUl9TVEFURV9JTlRFUk5BTF9FUlI7CisgICAgICAgICB9CisrICAgICAgICBnX2ZyZWUoYnVmKTsKKyAKKyAgICAgICAgIC8qIHJlYWRpbmcgcGFzc3dvcmQgKi8KKyAgICAgICAgIGluX3VpbnQxNl9iZShjLT5pbl9zLCBzeik7CistICAgICAgICBidWZbc3pdID0gJ1wwJzsKKysgICAgICAgIGJ1ZiA9IGdfbmV3MChjaGFyLCBzeik7CisgICAgICAgICBpbl91aW50OGEoYy0+aW5fcywgYnVmLCBzeik7CisrICAgICAgICBidWZbc3pdID0gJ1wwJzsKKyAKKyAgICAgICAgIC8qIGdfd3JpdGVsbigiUmVjZWl2ZWQgcGFzc3dvcmQ6ICVzIixidWYpOyAqLworICAgICAgICAgaWYgKDAgIT0gc2NwX3Nlc3Npb25fc2V0X3Bhc3N3b3JkKHNlc3Npb24sIGJ1ZikpCisgICAgICAgICB7CisgICAgICAgICAgICAgc2NwX3Nlc3Npb25fZGVzdHJveShzZXNzaW9uKTsKKyAgICAgICAgICAgICAvKiB1bnRpbCBzeXNsb2cgbWVyZ2UgbG9nX21lc3NhZ2Uoc19sb2csIExPR19MRVZFTF9XQVJOSU5HLCAiW3YwOiVkXSBjb25uZWN0aW9uIGFib3J0ZWQ6IGVycm9yIHNldHRpbmcgcGFzc3dvcmQiLCBfX0xJTkVfXyk7ICovCisrICAgICAgICAgICAgZ19mcmVlKGJ1Zik7CisgICAgICAgICAgICAgcmV0dXJuIFNDUF9TRVJWRVJfU1RBVEVfSU5URVJOQUxfRVJSOworICAgICAgICAgfQorKyAgICAgICAgZ19mcmVlKGJ1Zik7CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHJkcC94cmRwLzAwMDEtRml4LXNlc21hbi5pbmktYW5kLXhyZHAuaW5pLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94cmRwL3hyZHAvMDAwMS1GaXgtc2VzbWFuLmluaS1hbmQteHJkcC5pbmkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhYWRkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHJkcC94cmRwLzAwMDEtRml4LXNlc21hbi5pbmktYW5kLXhyZHAuaW5pLnBhdGNoCkBAIC0wLDAgKzEsNzUgQEAKK0Zyb20gYTljNDYwZjE1OGQ2OGMxYjNkZTZhMzFjZTg1M2RlNTM3OTk3NzY5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExlaSBNYW9odWkgPGxlaW1hb2h1aUBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IFRodSwgMzAgTm92IDIwMTcgMTE6MTA6MDQgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHNlc21hbi5pbmkgYW5kIHhyZHAuaW5pCisKK1NpZ25lZC1vZmYtYnk6IExlaSBNYW9odWkgPGxlaW1hb2h1aUBjbi5mdWppdHN1LmNvbT4KKy0tLQorIHNlc21hbi9zZXNtYW4uaW5pIHwgMjAgKysrKysrLS0tLS0tLS0tLS0tLS0KKyB4cmRwL3hyZHAuaW5pICAgICB8IDEwIC0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zZXNtYW4vc2VzbWFuLmluaSBiL3Nlc21hbi9zZXNtYW4uaW5pCitpbmRleCA4MjI1ZWU0Li5jMDkxODllIDEwMDY0NAorLS0tIGEvc2VzbWFuL3Nlc21hbi5pbmkKKysrKyBiL3Nlc21hbi9zZXNtYW4uaW5pCitAQCAtNTQsMTIgKzU0LDE0IEBAIExvZ0xldmVsPURFQlVHCisgRW5hYmxlU3lzbG9nPTEKKyBTeXNsb2dMZXZlbD1ERUJVRworIAorLVtYMTFyZHBdCistcGFyYW09WDExcmRwCistcGFyYW09LWJzCisrW1hvcmddCisrcGFyYW09WG9yZworK3BhcmFtPS1jb25maWcKKytwYXJhbT14cmRwL3hvcmcuY29uZgorK3BhcmFtPS1ub3Jlc2V0CisgcGFyYW09LW5vbGlzdGVuCisgcGFyYW09dGNwCistcGFyYW09LXVkcworKworIAorIFtYdm5jXQorIHBhcmFtPVh2bmMKK0BAIC03MCwxNiArNzIsNiBAQCBwYXJhbT0tbG9jYWxob3N0CisgcGFyYW09LWRwaQorIHBhcmFtPTk2CisgCistW1hvcmddCistcGFyYW09WG9yZworLXBhcmFtPS1jb25maWcKKy1wYXJhbT14cmRwL3hvcmcuY29uZgorLXBhcmFtPS1ub3Jlc2V0CistcGFyYW09LW5vbGlzdGVuCistcGFyYW09dGNwCistcGFyYW09LWxvZ2ZpbGUKKy1wYXJhbT0ueG9yZ3hyZHAuJXMubG9nCistCisgW0NoYW5zcnZdCisgOyBkcml2ZSByZWRpcmVjdGlvbiwgZGVmYXVsdHMgdG8geHJkcF9jbGllbnQgaWYgbm90IHNldAorIEZ1c2VNb3VudE5hbWU9dGhpbmNsaWVudF9kcml2ZXMKK2RpZmYgLS1naXQgYS94cmRwL3hyZHAuaW5pIGIveHJkcC94cmRwLmluaQoraW5kZXggY2I2ZDdjMy4uOWY2M2E2OSAxMDA2NDQKKy0tLSBhL3hyZHAveHJkcC5pbmkKKysrKyBiL3hyZHAveHJkcC5pbmkKK0BAIC0xNTcsMTYgKzE1Nyw2IEBAIGlwPTEyNy4wLjAuMQorIHBvcnQ9LTEKKyBjb2RlPTIwCisgCistW1gxMXJkcF0KKy1uYW1lPVgxMXJkcAorLWxpYj1saWJ4dXAuc28KKy11c2VybmFtZT1hc2sKKy1wYXNzd29yZD1hc2sKKy1pcD0xMjcuMC4wLjEKKy1wb3J0PS0xCisteHNlcnZlcmJwcD0yNAorLWNvZGU9MTAKKy0KKyBbWHZuY10KKyBuYW1lPVh2bmMKKyBsaWI9bGlidm5jLnNvCistLSAKKzEuOC40LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94cmRwL3hyZHAvMDAwMS1GaXgtdGhlLWNvbXBpbGUtZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hyZHAveHJkcC8wMDAxLUZpeC10aGUtY29tcGlsZS1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmIyNzkwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94cmRwL3hyZHAvMDAwMS1GaXgtdGhlLWNvbXBpbGUtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorU3ViamVjdDogW1BBVENIXSBGaXggdGhlIG1ha2UgZXJyb3IKKworRml4IHRoZSBjb21waWxlIGVycm9yOgorICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0ICcuLi9saWJyZnhjb2RlYy9zcmMvLmxpYnMvbGlicmZ4ZW5jb2RlLmEnLCBuZWVkZWQgYnkgJ3hyZHAnLiAgU3RvcC4uCisKK1NpZ25lZC1vZmYtYnk6IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgeHJkcC9NYWtlZmlsZS5hbSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS94cmRwL01ha2VmaWxlLmFtIGIveHJkcC9NYWtlZmlsZS5hbQoraW5kZXggYTI1OWVmMy4uZDU1MDViMiAxMDA2NDQKKy0tLSBhL3hyZHAvTWFrZWZpbGUuYW0KKysrKyBiL3hyZHAvTWFrZWZpbGUuYW0KK0BAIC0yMyw3ICsyMyw3IEBAIGVuZGlmCisgaWYgWFJEUF9SRlhDT0RFQworIEFNX0NQUEZMQUdTICs9IC1EWFJEUF9SRlhDT0RFQworIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJyZnhjb2RlYy9pbmNsdWRlCistWFJEUF9FWFRSQV9MSUJTICs9ICQodG9wX2J1aWxkZGlyKS9saWJyZnhjb2RlYy9zcmMvLmxpYnMvbGlicmZ4ZW5jb2RlLmEKKytYUkRQX0VYVFJBX0xJQlMgKz0gJCh0b3BfYnVpbGRkaXIpL2xpYnJmeGNvZGVjL3NyYy8ubGlicy9saWJyZnhlbmNvZGUubGEKKyBlbmRpZgorIAorIGlmIFhSRFBfUElYTUFOCitAQCAtMzUsNyArMzUsNyBAQCBlbmRpZgorIGlmIFhSRFBfUEFJTlRFUgorIEFNX0NQUEZMQUdTICs9IC1EWFJEUF9QQUlOVEVSCisgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2xpYnBhaW50ZXIvaW5jbHVkZQorLVhSRFBfRVhUUkFfTElCUyArPSAkKHRvcF9idWlsZGRpcikvbGlicGFpbnRlci9zcmMvLmxpYnMvbGlicGFpbnRlci5hCisrWFJEUF9FWFRSQV9MSUJTICs9ICQodG9wX2J1aWxkZGlyKS9saWJwYWludGVyL3NyYy8ubGlicy9saWJwYWludGVyLmxhCisgZW5kaWYKKyAKKyBzYmluX1BST0dSQU1TID0gXAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hyZHAveHJkcC94cmRwLnN5c2NvbmZpZyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHJkcC94cmRwL3hyZHAuc3lzY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZjUwMGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hyZHAveHJkcC94cmRwLnN5c2NvbmZpZwpAQCAtMCwwICsxLDQgQEAKKyMgcHV0IHNvbWUgb3B0aW9ucyBoZXJlCisKK1hSRFBfT1BUSU9OUz0iIgorU0VTTUFOX09QVElPTlM9IiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHJkcC94cmRwXzAuOS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94cmRwL3hyZHBfMC45LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VmN2M5OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHJkcC94cmRwXzAuOS40LmJiCkBAIC0wLDAgKzEsOTkgQEAKK1NVTU1BUlkgPSAiQW4gb3BlbiBzb3VyY2UgcmVtb3RlIGRlc2t0b3AgcHJvdG9jb2wocmRwKSBzZXJ2ZXIuIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03MmNmYmU0ZTdiZDMzYTBhMWRlOTYzMGM5MTE5NWMyMSBcCisiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgdXNlcmFkZCBzeXN0ZW1kCisKK0RFUEVORFMgPSAib3BlbnNzbCB2aXJ0dWFsL2xpYngxMSBsaWJ4Zml4ZXMgbGlieHJhbmRyIGxpYnBhbSBuYXNtLW5hdGl2ZSIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSBwYW0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9uZXV0cmlub2xhYnMveHJkcC5naXQgXAorICAgICAgICAgICBmaWxlOi8veHJkcC5zeXNjb25maWcgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtc2VzbWFuLmluaS1hbmQteHJkcC5pbmkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGRlZC1yZXFfZGlzdGluZ3Vpc2hlZF9uYW1lLWluLWV0Yy14cmRwLW9wZW5zc2wuY29uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXRoZS1jb21waWxlLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LW9mLUNWRS0yMDE3LTE2OTI3LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiYzI5NWRkNjFiODgyZThiNTY2NzdjZjEyNzkxZjQzNjM0ZjkxOTBiNSIKKworUFYgPSAiMC45LjQrZ2l0JHtTUkNQVn0iCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2Z1c2VdID0gIiAtLWVuYWJsZS1mdXNlLCAtLWRpc2FibGUtZnVzZSwgZnVzZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIHhyZHAiCitVU0VSQUREX1BBUkFNXyR7UE59ICA9ICItLXN5c3RlbSAtLWhvbWUgL3Zhci9ydW4veHJkcCAtZyB4cmRwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIHhyZHAiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL2FjY2Vzc2liaWxpdHktc2VydmljZXMvKi5zZXJ2aWNlICIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veHJkcC9saWJjb21tb24uc28gXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0veHJkcC9saWJ4cmRwLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3hyZHAvbGlic2NwLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3hyZHAvbGlieHJkcGFwaS5zbyAiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1wYW0tY29uZmlnPXN1c2UiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGNkICR7U30KKyAgICAuL2Jvb3RzdHJhcAorICAgIGNkIC0KK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAncy8oTUFLRSkgJChBTV9NQUtFRkxBR1MpIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWRhdGEtYW0vKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBpbnN0YWxsLWV4ZWMtYW0vZycgJHtTfS9rZXlnZW4vTWFrZWZpbGUuaW4KK30KKworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9IAorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0veHJkcAorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0veHJkcC9wYW0uZAorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL3hyZHAKKyAgIAorCSMgZGVhbCB3aXRoIHN5c3RlbWQgdW5pdCBmaWxlcworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9pbnN0ZmlsZXMveHJkcC5zZXJ2aWNlLmluICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3hyZHAuc2VydmljZQorCWluc3RhbGwgLW0gMDY0NCAke1N9L2luc3RmaWxlcy94cmRwLXNlc21hbi5zZXJ2aWNlLmluICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3hyZHAtc2VzbWFuLnNlcnZpY2UgCisJc2VkIC1pIC1lICdzLEBsb2NhbHN0YXRlZGlyQCwke2xvY2Fsc3RhdGVkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3hyZHAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS94cmRwLXNlc21hbi5zZXJ2aWNlCisJc2VkIC1pIC1lICdzLEBzeXNjb25mZGlyQCwke3N5c2NvbmZkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3hyZHAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS94cmRwLXNlc21hbi5zZXJ2aWNlCisJc2VkIC1pIC1lICdzLEBzYmluZGlyQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3hyZHAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS94cmRwLXNlc21hbi5zZXJ2aWNlCisKKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9pbnN0ZmlsZXMvKi5pbmkgJHtEfSR7c3lzY29uZmRpcn0veHJkcC8KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9zZXNtYW4vc2VzbWFuLmluaSAke0R9JHtzeXNjb25mZGlyfS94cmRwLworCWluc3RhbGwgLW0gMDY0NCAke1N9L3Nlc21hbi9zdGFydHdtLnNoICR7RH0ke3N5c2NvbmZkaXJ9L3hyZHAvCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30veHJkcC94cmRwLmluaSAke0R9JHtzeXNjb25mZGlyfS94cmRwLworCWluc3RhbGwgLW0gMDY0NCAke1N9L3hyZHAveHJkcF9rZXlib2FyZC5pbmkgJHtEfSR7c3lzY29uZmRpcn0veHJkcC8KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9pbnN0ZmlsZXMveHJkcC5zaCAke0R9JHtzeXNjb25mZGlyfS94cmRwLworCWluc3RhbGwgLW0gMDY0NCAke1N9L2tleWdlbi9vcGVuc3NsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0veHJkcC8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS94cmRwLnN5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcveHJkcC8KKwljaG93biB4cmRwOnhyZHAgJHtEfSR7c3lzY29uZmRpcn0veHJkcAorfQorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAieHJkcC5zZXJ2aWNlIHhyZHAtc2VzbWFuLnNlcnZpY2UiCisKK3BrZ19wb3N0aW5zdF8ke1BOfSgpIHsKKwlpZiB0ZXN0IC16ICIkRCIKKwl0aGVuCisJCWlmIHRlc3QgLXggJHtiaW5kaXJ9L3hyZHAta2V5Z2VuCisJCXRoZW4KKwkJCSR7YmluZGlyfS94cmRwLWtleWdlbiB4cmRwICR7c3lzY29uZmRpcn0veHJkcC9yc2FrZXlzLmluaSA+L2Rldi9udWxsCisgICAgICAgICAgICAgICAgZmkKKwkJaWYgdGVzdCAhIC1zICR7c3lzY29uZmRpcn0veHJkcC9jZXJ0LnBlbQorCQl0aGVuCisJCQlvcGVuc3NsIHJlcSAteDUwOSAtbmV3a2V5IHJzYToyMDQ4IC1zaGEyNTYgLW5vZGVzIC1kYXlzIDM2NTIgXAorCQkJLWtleW91dCAke3N5c2NvbmZkaXJ9L3hyZHAva2V5LnBlbSBcCisJCQktb3V0ICR7c3lzY29uZmRpcn0veHJkcC9jZXJ0LnBlbSBcCisJCQktY29uZmlnICR7c3lzY29uZmRpcn0veHJkcC9vcGVuc3NsLmNvbmYgPi9kZXYvbnVsbCAyPiYxCisJCQljaG1vZCA0MDAgJHtzeXNjb25mZGlyfS94cmRwL2tleS5wZW0KKwkJZmkJCQkKKyAgICAgICAgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemlsZS96aWxlXzIuNC4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemlsZS96aWxlXzIuNC4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY2M2Y0NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ppbGUvemlsZV8yLjQuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlppbGUgaXMgbG9zc3kgRW1hY3MiCi1IT01FUEFHRSA9ICJodHRwOi8vemlsZS5zb3VyY2Vmb3JnZS5uZXQvIgotREVQRU5EUyA9ICJuY3Vyc2VzIGJkd2djIgotCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS96aWxlLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtaGVscDJtYW4ucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2E0NjBjY2VjNjRlM2JlYzI4MzU2OTdiMmVhZTUzM2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZkMjdiYmRkYzYxNDkxYjFmYmIyOWEzNDVkMGQzNDQ3MzRhYTllODBjZmEwN2IwMjg5MmVlZGY4MzFmYTljYyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJkaXJ9IHx8IHRydWUKLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ppbGUvemlsZV8yLjQuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ppbGUvemlsZV8yLjQuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE1Y2Y0MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemlsZS96aWxlXzIuNC4xNC5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIlppbGUgaXMgbG9zc3kgRW1hY3MiCitIT01FUEFHRSA9ICJodHRwOi8vemlsZS5zb3VyY2Vmb3JnZS5uZXQvIgorREVQRU5EUyA9ICJuY3Vyc2VzIGJkd2djIgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWViYmQzZTM0MjM3YWYyNmRhNWRjMDhhNGU0NDA0NjQiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS96aWxlLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtaGVscDJtYW4ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzdkN2VlYzkzMjMxYzY4NzhmMjU1OTc4ZDk3NDdhNzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2E3ODc0Mjc5NWNhMzI0ODBmMmJhYjY5N2ZkNWUzMjg2MThkOTk5N2Q2ZjQxN2NmMWIxNGU5ZGE5YWYyNmI3NCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJkaXJ9IHx8IHRydWUKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSIKKworUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jcHB1bml0L2NwcHVuaXRfMS4xMy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jcHB1bml0L2NwcHVuaXRfMS4xMy4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jcHB1bml0L2NwcHVuaXRfMS4xMy4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2NwcHVuaXQvY3BwdW5pdF8xLjEzLjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwcHVuaXQvZmlsZXMvMDAwMS1kb2MtTWFrZWZpbGUuYW0tZG8tbm90LXByZXNlcnZlLWZpbGUtZmxhZ3Mtd2hlbi1jb3B5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jcHB1bml0L2ZpbGVzLzAwMDEtZG9jLU1ha2VmaWxlLmFtLWRvLW5vdC1wcmVzZXJ2ZS1maWxlLWZsYWdzLXdoZW4tY29weS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3BwdW5pdC9maWxlcy8wMDAxLWRvYy1NYWtlZmlsZS5hbS1kby1ub3QtcHJlc2VydmUtZmlsZS1mbGFncy13aGVuLWNvcHkucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3BwdW5pdC9maWxlcy8wMDAxLWRvYy1NYWtlZmlsZS5hbS1kby1ub3QtcHJlc2VydmUtZmlsZS1mbGFncy13aGVuLWNvcHkucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2N1bml0L2N1bml0XzIuMS0zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jdW5pdC9jdW5pdF8yLjEtMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3VuaXQvY3VuaXRfMi4xLTMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3VuaXQvY3VuaXRfMi4xLTMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2N1bml0L2ZpbGVzL2ZpeHVwLWluc3RhbGwtZG9jZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jdW5pdC9maWxlcy9maXh1cC1pbnN0YWxsLWRvY2Rpci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3VuaXQvZmlsZXMvZml4dXAtaW5zdGFsbC1kb2NkaXIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3VuaXQvZmlsZXMvZml4dXAtaW5zdGFsbC1kb2NkaXIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2N4eHRlc3QvY3h4dGVzdF80LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2N4eHRlc3QvY3h4dGVzdF80LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2N4eHRlc3QvY3h4dGVzdF80LjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3h4dGVzdC9jeHh0ZXN0XzQuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ldnRlc3QvZXZ0ZXN0X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZXZ0ZXN0L2V2dGVzdF9naXQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXZ0ZXN0L2V2dGVzdF9naXQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZXZ0ZXN0L2V2dGVzdF9naXQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmJ0ZXN0L2ZiLXRlc3RfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9mYnRlc3QvZmItdGVzdF9naXQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmJ0ZXN0L2ZiLXRlc3RfZ2l0LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2ZidGVzdC9mYi10ZXN0X2dpdC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9ndGVzdC9ndGVzdF8xLjguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZ3Rlc3QvZ3Rlc3RfMS44LjAuYmIKaW5kZXggNDgzZGMxZi4uNDhjZjRlMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9ndGVzdC9ndGVzdF8xLjguMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2d0ZXN0L2d0ZXN0XzEuOC4wLmJiCkBAIC03LDE2ICs3LDEzIEBACiAKIFBST1ZJREVTICs9ICJnbW9jayIKIAorUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICJlYzQ0YzZjMTY3NWMyNWI5ODI3YWFjZDA4YzAyNDMzY2NjZGU3NzgwIgogU1JDX1VSSSA9ICJcCi0gICAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2FyY2hpdmUvcmVsZWFzZS0ke1BWfS50YXIuZ3ogXAorICAgIGdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QuZ2l0O3Byb3RvY29sPWh0dHBzOyBcCiAgICAgZmlsZTovL0FkZC1wa2ctY29uZmlnLXN1cHBvcnQucGF0Y2ggXAogIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMTY4NzcwOTg4MjM0MDFkMWJmMmVkNzg5MWQ3ZGNlMzYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNThhNmY0Mjc3Y2EyYmM4NTY1MjIyYjNiYmQ1OGExNzc2MDllOWM0ODhlOGE3MjY0OTM1OWJhNTE0NTBkYjdkOCIKLQotUyA9ICIke1dPUktESVJ9L2dvb2dsZXRlc3QtcmVsZWFzZS0ke1BWfSIKLQogaW5oZXJpdCBjbWFrZQogCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcG0tcWEvcG0tcWFfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9wbS1xYS9wbS1xYV9naXQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BtLXFhL3BtLXFhX2dpdC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9wbS1xYS9wbS1xYV9naXQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3Qvc3RyZXNzLW5nL3N0cmVzcy1uZy8wMDAxLVNldmVyYWwtY2hhbmdlcy10by1maXgtbXVzbC1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3Qvc3RyZXNzLW5nL3N0cmVzcy1uZy8wMDAxLVNldmVyYWwtY2hhbmdlcy10by1maXgtbXVzbC1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjA0Zjg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nLzAwMDEtU2V2ZXJhbC1jaGFuZ2VzLXRvLWZpeC1tdXNsLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMTQxIEBACitGcm9tIDc4NGRjZDA5ZDNmMjY2ZTI3MWQwMDdmNGZkMjU3ZTg1MDM2ODcyY2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW49QzM9QURiYWw9MjBMaW09QzM9QjNuPz0gPGFuaWJhbC5saW1vbkBsaW5hcm8ub3JnPgorRGF0ZTogVHVlLCAxNyBPY3QgMjAxNyAxMDoxMzoyMCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBTZXZlcmFsIGNoYW5nZXMgdG8gZml4IG11c2wgYnVpbGQKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworc3RyZXNzLXtjb250ZXh0LCBzdGFja21tYXB9LmM6IFNldCB0ZXN0cyB0byBub24taW1wbGVtZW50ZWQgYmVjYXVzZSB1c2VzCitzd2FwY29udGV4dCwgbXVzbCBwcm92aWRlIHRoZSBkZWZpbml0aW9uIGJ1dCBub3QgdGhlIGltcGxlbWVudGF0aW9uIGR1ZQorICB0byB0aGF0IGZ1bmN0aW9ucyBhcmUgcHJlLVBPU0lYIGFuZCBzZXQgdG8gYmUgZGVwcmVjYXRlZC4KKyAgc3RyZXNzLXtyZXNvdXJjZXMsIHB0eX0uYzogRG9lc24ndCBpbmNsdWRlIHRlcm1pby5oIGFuZCByZW1vdmUgc3RyZXNzCisgIG9wZXJhdGlvbnMgdGhhdCB1c2VzIHN0cnVjdCB0ZXJtaW8sIG11c2wgZG9lc24ndCBwcm92aWRlIHRoYXQgc3RydWN0Lgorc3RyZXNzLW1hbGxvYy5jOiBDaGVjayBmb3IgZGVmaW5pdGlvbiBvZiBNX01NQVBfVEhSRVNIT0xEIG11c2wgZG9lc24ndAorICBwdG92aWRlIHRoYXQgY29uc3RhbnQuCitzdHJlc3MtbWFkdmlzZS5jOiBBZGQgc3RhdGljIHBvaXNpb25fY291bnQgaW50ZWdlciwgZGVmaW5pdGlvbiBvZgorICBNQURWX1NPRlRfT0ZGTElORSBkb2Vzbid0IGdyYXVudGVlIE1BRFZfSFdQT0lTT04gdG8gYmUgZGVmaW5lZC4KK2NhY2hlLmM6IERlZmluZSBHTE9CX09OTFlESVIgbm90IGF2YWlsYWJsZSBvbiBNVVNMLgorCitTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbmFyby5vcmc+CitTaWduZWQtb2ZmLWJ5OiBUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4KKworVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCisKKy0tLQorIGNhY2hlLmMgICAgICAgICAgICB8ICA0ICsrKysKKyBzdHJlc3MtbWFkdmlzZS5jICAgfCAgMSArCisgc3RyZXNzLW1hbGxvYy5jICAgIHwgIDIgKy0KKyBzdHJlc3MtcHR5LmMgICAgICAgfCAxOCAtLS0tLS0tLS0tLS0tLS0tLS0KKyBzdHJlc3MtcmVzb3VyY2VzLmMgfCAgMSAtCisgc3RyZXNzLXN0YWNrbW1hcC5jIHwgIDIgKy0KKyA2IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jYWNoZS5jIGIvY2FjaGUuYworaW5kZXggZmJmNzY3NC4uOTM2YzFmZiAxMDA2NDQKKy0tLSBhL2NhY2hlLmMKKysrKyBiL2NhY2hlLmMKK0BAIC0yOCw2ICsyOCwxMCBAQCB0eXBlZGVmIHN0cnVjdCB7CisgCisgI2luY2x1ZGUgPGdsb2IuaD4KKyAKKysjaWZuZGVmIEdMT0JfT05MWURJUgorKyNkZWZpbmUgR0xPQl9PTkxZRElSICAgIDB4MTAwCisrI2VuZGlmCisrCisgI2lmIGRlZmluZWQoX19saW51eF9fKQorICNkZWZpbmUgU1lTX0NQVV9QUkVGSVggICAgICAgICAgICAgICAiL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUiCisgI2RlZmluZSBHTE9CX1BBVFRFUk4gU1lTX0NQVV9QUkVGSVggICIvY3B1WzAtOV0qIgorZGlmZiAtLWdpdCBhL3N0cmVzcy1tYWR2aXNlLmMgYi9zdHJlc3MtbWFkdmlzZS5jCitpbmRleCA5ZTcxZTExLi5kZGY4ZDJkIDEwMDY0NAorLS0tIGEvc3RyZXNzLW1hZHZpc2UuYworKysrIGIvc3RyZXNzLW1hZHZpc2UuYworQEAgLTE0Nyw2ICsxNDcsNyBAQCBzdGF0aWMgaW50IHN0cmVzc19yYW5kb21fYWR2aXNlKGNvbnN0IGFyZ3NfdCAqYXJncykKKyAjaWYgZGVmaW5lZChNQURWX1NPRlRfT0ZGTElORSkKKyAJaWYgKGFkdmlzZSA9PSBNQURWX1NPRlRfT0ZGTElORSkgeworIAkJc3RhdGljIGludCBzb2Z0X29mZmxpbmVfY291bnQ7CisrCQlzdGF0aWMgaW50IHBvaXNvbl9jb3VudDsKKyAKKyAJCS8qIC4uYW5kIG1pbmltaXplIG51bWJlciBvZiBzb2Z0IG9mZmxpbmUgcGFnZXMgKi8KKyAJCWlmICgoc29mdF9vZmZsaW5lX2NvdW50ID49IE5VTV9TT0ZUX09GRkxJTkVfTUFYKSB8fAorZGlmZiAtLWdpdCBhL3N0cmVzcy1tYWxsb2MuYyBiL3N0cmVzcy1tYWxsb2MuYworaW5kZXggYTQ2YjhjNi4uNDI3ODI3YSAxMDA2NDQKKy0tLSBhL3N0cmVzcy1tYWxsb2MuYworKysrIGIvc3RyZXNzLW1hbGxvYy5jCitAQCAtOTksNyArOTksNyBAQCBpbnQgc3RyZXNzX21hbGxvYyhjb25zdCBhcmdzX3QgKmFyZ3MpCisgCQkJbWFsbG9jX21heCA9IE1JTl9NQUxMT0NfTUFYOworIAl9CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19saW51eF9fKQorKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fbGludXhfXykgJiYgZGVmaW5lZChNX01NQVBfVEhSRVNIT0xEKQorIAlpZiAoZ2V0X3NldHRpbmcoIm1hbGxvYy10aHJlc2hvbGQiLCAmbWFsbG9jX3RocmVzaG9sZCkpCisgCQkodm9pZCltYWxsb3B0KE1fTU1BUF9USFJFU0hPTEQsIChpbnQpbWFsbG9jX3RocmVzaG9sZCk7CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3RyZXNzLXB0eS5jIGIvc3RyZXNzLXB0eS5jCitpbmRleCAxYmQxZmJkLi5iMWZlNTczIDEwMDY0NAorLS0tIGEvc3RyZXNzLXB0eS5jCisrKysgYi9zdHJlc3MtcHR5LmMKK0BAIC0yNiw3ICsyNiw2IEBACisgCisgI2lmIGRlZmluZWQoX19saW51eF9fKQorIAorLSNpbmNsdWRlIDx0ZXJtaW8uaD4KKyAjaW5jbHVkZSA8dGVybWlvcy5oPgorIAorIHR5cGVkZWYgc3RydWN0IHsKK0BAIC0xMDgsNyArMTA3LDYgQEAgaW50IHN0cmVzc19wdHkoY29uc3QgYXJnc190ICphcmdzKQorIAkJICovCisgCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgCQkJc3RydWN0IHRlcm1pb3MgaW9zOworLQkJCXN0cnVjdCB0ZXJtaW8gaW87CisgCQkJc3RydWN0IHdpbnNpemUgd3M7CisgCQkJaW50IGFyZzsKKyAKK0BAIC0xMzAsMjIgKzEyOCw2IEBAIGludCBzdHJlc3NfcHR5KGNvbnN0IGFyZ3NfdCAqYXJncykKKyAJCQlpZiAoaW9jdGwocHR5c1tpXS5zbGF2ZSwgVENTRVRTRiwgJmlvcykgPCAwKQorIAkJCQlwcl9mYWlsX2VycigiaW9jdGwgVENTRVRTRiBvbiBzbGF2ZSBwdHkiKTsKKyAjZW5kaWYKKy0jaWYgZGVmaW5lZChUQ0dFVEEpCistCQkJaWYgKGlvY3RsKHB0eXNbaV0uc2xhdmUsIFRDR0VUQSwgJmlvKSA8IDApCistCQkJCXByX2ZhaWxfZXJyKCJpb2N0bCBUQ0dFVEEgb24gc2xhdmUgcHR5Iik7CistI2VuZGlmCistI2lmIGRlZmluZWQoVENTRVRBKQorLQkJCWlmIChpb2N0bChwdHlzW2ldLnNsYXZlLCBUQ1NFVEEsICZpbykgPCAwKQorLQkJCQlwcl9mYWlsX2VycigiaW9jdGwgVENTRVRBIG9uIHNsYXZlIHB0eSIpOworLSNlbmRpZgorLSNpZiBkZWZpbmVkKFRDU0VUQVcpCistCQkJaWYgKGlvY3RsKHB0eXNbaV0uc2xhdmUsIFRDU0VUQVcsICZpbykgPCAwKQorLQkJCQlwcl9mYWlsX2VycigiaW9jdGwgVENTRVRBVyBvbiBzbGF2ZSBwdHkiKTsKKy0jZW5kaWYKKy0jaWYgZGVmaW5lZChUQ1NFVEFGKQorLQkJCWlmIChpb2N0bChwdHlzW2ldLnNsYXZlLCBUQ1NFVEFGLCAmaW8pIDwgMCkKKy0JCQkJcHJfZmFpbF9lcnIoImlvY3RsIFRDU0VUQUYgb24gc2xhdmUgcHR5Iik7CistI2VuZGlmCisgI2lmIGRlZmluZWQoVElPQ0dMQ0tUUk1JT1MpCisgCQkJaWYgKGlvY3RsKHB0eXNbaV0uc2xhdmUsIFRJT0NHTENLVFJNSU9TLCAmaW9zKSA8IDApCisgCQkJCXByX2ZhaWxfZXJyKCJpb2N0bCBUSU9DR0xDS1RSTUlPUyBvbiBzbGF2ZSBwdHkiKTsKK2RpZmYgLS1naXQgYS9zdHJlc3MtcmVzb3VyY2VzLmMgYi9zdHJlc3MtcmVzb3VyY2VzLmMKK2luZGV4IDk1OGM5OWEuLmFmNzlhYmQgMTAwNjQ0CistLS0gYS9zdHJlc3MtcmVzb3VyY2VzLmMKKysrKyBiL3N0cmVzcy1yZXNvdXJjZXMuYworQEAgLTMxLDcgKzMxLDYgQEAKKyAjaW5jbHVkZSA8c3lzL2lub3RpZnkuaD4KKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2xpbnV4X18pCistI2luY2x1ZGUgPHRlcm1pby5oPgorICNpbmNsdWRlIDx0ZXJtaW9zLmg+CisgI2VuZGlmCisgI2lmIGRlZmluZWQoSEFWRV9MSUJfUFRIUkVBRCkgJiYgZGVmaW5lZChfX2xpbnV4X18pCitkaWZmIC0tZ2l0IGEvc3RyZXNzLXN0YWNrbW1hcC5jIGIvc3RyZXNzLXN0YWNrbW1hcC5jCitpbmRleCA5YzgzYTY5Li4yOTg0ZjA5IDEwMDY0NAorLS0tIGEvc3RyZXNzLXN0YWNrbW1hcC5jCisrKysgYi9zdHJlc3Mtc3RhY2ttbWFwLmMKK0BAIC0yNCw3ICsyNCw3IEBACisgICovCisgI2luY2x1ZGUgInN0cmVzcy1uZy5oIgorIAorLSNpZiBkZWZpbmVkKF9fbGludXhfXykKKysjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIEZhbHNlCisgCisgI2luY2x1ZGUgPHVjb250ZXh0Lmg+CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmcvMDAwMi1zdHJlc3MtZmNudGwtZml4LWJ1aWxkLWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nLzAwMDItc3RyZXNzLWZjbnRsLWZpeC1idWlsZC1mb3ItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDMyODdlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nLzAwMDItc3RyZXNzLWZjbnRsLWZpeC1idWlsZC1mb3ItbXVzbC5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIGZhYWRiYzE0NzM5NGNlYTkyNzhiYzI0OTRmMzNlMzUyMWQ4OGU3NDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFR1ZSwgOSBKYW4gMjAxOCAxODozODo0NSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBzdHJlc3MtZmNudGw6IGZpeCBidWlsZCBmb3IgbXVzbAorCitTaWduZWQtb2ZmLWJ5OiBUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4KKworVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCisKKy0tLQorIHN0cmVzcy1mY250bC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zdHJlc3MtZmNudGwuYyBiL3N0cmVzcy1mY250bC5jCitpbmRleCAyZWE4NjdiLi5lOTFiMzQ1IDEwMDY0NAorLS0tIGEvc3RyZXNzLWZjbnRsLmMKKysrKyBiL3N0cmVzcy1mY250bC5jCitAQCAtNDE1LDYgKzQxNSw3IEBAIG9mZF9sb2NrX2Fib3J0Ogl7IC8qIE5vd3QgKi8gfQorICNpZiAoZGVmaW5lZChGX0dFVF9GSUxFX1JXX0hJTlQpICYmIGRlZmluZWQoRl9TRVRfRklMRV9SV19ISU5UKSkgfCBcCisgICAgIChkZWZpbmVkKEZfR0VUX1JXX0hJTlQpICYmIGRlZmluZWQoRl9TRVRfUldfSElOVCkpCisgCXsKKysJCWludCByZXQ7CisgCQlzaXplX3QgaTsKKyAJCXVuc2lnbmVkIGxvbmcgaGludDsKKyAJCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGhpbnRzW10gPSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4wOS4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3Qvc3RyZXNzLW5nL3N0cmVzcy1uZ18wLjA5LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYWI0MzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4wOS4xNC5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIkEgdG9vbCB0byBsb2FkIGFuZCBzdHJlc3MgYSBjb21wdXRlciBzeXN0ZW0iCitIT01FUEFHRSA9ICJodHRwOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3N0cmVzcy1uZy8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0RFUEVORFMgPSAiemxpYiBsaWJhaW8iCisKK1NSQ19VUkkgPSAiaHR0cDovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy90YXJiYWxscy8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItc3RyZXNzLWZjbnRsLWZpeC1idWlsZC1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgZmlsZTovLzAwMDEtU2V2ZXJhbC1jaGFuZ2VzLXRvLWZpeC1tdXNsLWJ1aWxkLnBhdGNoIFwKKyAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMWY4YjZjMmMyODMwNzA0ZDJhMjgxNGMxNjA4MmQ0OGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDJjYWMzNGE1Y2IwNDExOTdhZjYwYzE4Njc4NDRjNmNiYjA4OWE2ZDEwYTM4Y2RjZjdiOGYyN2JmYWE2ZWY4ZiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID89ICJodHRwOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3RhcmJhbGxzLyR7QlBOfS8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA/PSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK0NGTEFHUyArPSAiLVdhbGwgLVdleHRyYSAtRFZFUlNJT049JyIkKFZFUlNJT04pIiciCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc3RyZXNzLW5nICR7RH0ke2JpbmRpcn0vc3RyZXNzLW5nCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90ZXN0ZmxvYXQvZmlsZXMvMDAwMS1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS1Tb2Z0RmxvYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3Rlc3RmbG9hdC9maWxlcy8wMDAxLU1ha2VmaWxlLWZvci1jcm9zcy1jb21waWxlLVNvZnRGbG9hdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGVzdGZsb2F0L2ZpbGVzLzAwMDEtTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUtU29mdEZsb2F0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3Rlc3RmbG9hdC9maWxlcy8wMDAxLU1ha2VmaWxlLWZvci1jcm9zcy1jb21waWxlLVNvZnRGbG9hdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGVzdGZsb2F0L2ZpbGVzLzAwMDItTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUtVGVzdEZsb2F0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC90ZXN0ZmxvYXQvZmlsZXMvMDAwMi1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS1UZXN0RmxvYXQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rlc3RmbG9hdC9maWxlcy8wMDAyLU1ha2VmaWxlLWZvci1jcm9zcy1jb21waWxlLVRlc3RGbG9hdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC90ZXN0ZmxvYXQvZmlsZXMvMDAwMi1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS1UZXN0RmxvYXQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rlc3RmbG9hdC90ZXN0ZmxvYXRfM2EuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3Rlc3RmbG9hdC90ZXN0ZmxvYXRfM2EuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rlc3RmbG9hdC90ZXN0ZmxvYXRfM2EuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvdGVzdGZsb2F0L3Rlc3RmbG9hdF8zYS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvUkVBRE1FCmluZGV4IGNjOTY1YWYuLjY3ZjI5MTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL1JFQURNRQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9SRUFETUUKQEAgLTUyLDcgKzUyLDcgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogICBVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlCi0gIGJyYW5jaDogcm9ja28gCisgIGJyYW5jaDogbWFzdGVyCiAgIHJldmlzaW9uOiBIRUFECiAgIHByaW86IGRlZmF1bHQKIApAQCAtNzUsMTMgKzc1LDE0IEBACiAtLS0tLS0tLS0tLQogCiBTZW5kIHBhdGNoZXMgLyBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGgKLSdbbWV0YS1wZXJsXVtyb2Nrb10nIGluIHRoZSBzdWJqZWN0LgorJ1ttZXRhLXBlcmxdJyBpbiB0aGUgc3ViamVjdC4KIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNpbmcgc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtcGVybF1bcm9ja29dW1BBVENIJworJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLXBlcmxdW1BBVENIJwogCi1yb2NrbyBCcmFuY2ggTWFpbnRhaW5lcjoKLUFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CitMYXllciBtYWludGFpbmVyczoKKyAgICBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisgICAgVGltICJtb3RvLXRpbW8iIE9ybGluZyA8dGljb3RpbW9AZ21haWwuY29tPgogCiBMaWNlbnNlCiAtLS0tLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9jb25mL2xheWVyLmNvbmYKaW5kZXggYTg2MWMzZS4uZWNlNmRkMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvY29uZi9sYXllci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTQsMyArMTQsNSBAQAogTEFZRVJWRVJTSU9OX3BlcmwtbGF5ZXIgPSAiMSIKIAogTEFZRVJERVBFTkRTX3BlcmwtbGF5ZXIgPSAiY29yZSBvcGVuZW1iZWRkZWQtbGF5ZXIiCisKK0xBWUVSU0VSSUVTX0NPTVBBVF9wZXJsLWxheWVyID0gInN1bW8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2dpL2xpYmNnaS1wZXJsXzQuMzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2dpL2xpYmNnaS1wZXJsXzQuMzYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMjZhYjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNnaS9saWJjZ2ktcGVybF80LjM2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQ0dJLnBtIGlzIGEgc3RhYmxlLCBjb21wbGV0ZSBhbmQgbWF0dXJlIHNvbHV0aW9uIGZvciBwcm9jZXNzaW5nIGFuZCBwcmVwYXJpbmcgXAotSFRUUCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLiBNYWpvciBmZWF0dXJlcyBpbmNsdWRpbmcgcHJvY2Vzc2luZyBmb3JtIFwKLXN1Ym1pc3Npb25zLCBmaWxlIHVwbG9hZHMsIHJlYWRpbmcgYW5kIHdyaXRpbmcgY29va2llcywgcXVlcnkgc3RyaW5nIGdlbmVyYXRpb24gXAotYW5kIG1hbmlwdWxhdGlvbiwgYW5kIHByb2Nlc3NpbmcgYW5kIHByZXBhcmluZyBIVFRQIGhlYWRlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bGVlam8vQ0dJLTQuMjgvbGliL0NHSS5wb2QiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTIuMCB8IEdQTC0yLjAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJlOTc2OWYwYTI2MTNhOThiYzdmY2UxNWRlZTBjNTMzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0wvTEUvTEVFSk8vQ0dJLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ4NTY2ZDgxZjQzMGE3Zjc1NWJiNGQ4ZjQyNmNlMzVkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlZmU4NGQ0ZjI0NjFlODY3ZjliZTgwZjNmOTg4ZTE3YmNiYmNiNGUzMDY5NTJjZjJmZDFkZWE3ZTQ1MTU0OTAiCi0KLVMgPSAiJHtXT1JLRElSfS9DR0ktJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1SUFJPVklERVNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWNnaSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjZ2kvbGliY2dpLXBlcmxfNC4zOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjZ2kvbGliY2dpLXBlcmxfNC4zOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjE2ZDgzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNnaS9saWJjZ2ktcGVybF80LjM4LmJiCkBAIC0wLDAgKzEsMjUgQEAKK0RFU0NSSVBUSU9OID0gIkNHSS5wbSBpcyBhIHN0YWJsZSwgY29tcGxldGUgYW5kIG1hdHVyZSBzb2x1dGlvbiBmb3IgcHJvY2Vzc2luZyBhbmQgcHJlcGFyaW5nIFwKK0hUVFAgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4gTWFqb3IgZmVhdHVyZXMgaW5jbHVkaW5nIHByb2Nlc3NpbmcgZm9ybSBcCitzdWJtaXNzaW9ucywgZmlsZSB1cGxvYWRzLCByZWFkaW5nIGFuZCB3cml0aW5nIGNvb2tpZXMsIHF1ZXJ5IHN0cmluZyBnZW5lcmF0aW9uIFwKK2FuZCBtYW5pcHVsYXRpb24sIGFuZCBwcm9jZXNzaW5nIGFuZCBwcmVwYXJpbmcgSFRUUCBoZWFkZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfmxlZWpvL0NHSS00LjI4L2xpYi9DR0kucG9kIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0yLjAgfCBHUEwtMi4wIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZTk3NjlmMGEyNjEzYTk4YmM3ZmNlMTVkZWUwYzUzMyIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9ML0xFL0xFRUpPL0NHSS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYWViODU2M2Q1MzNlN2Y4MzcyNGVkMDY4YjViZmMzNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YzU4ZjRhNTI5YmI5MmE5MTRiMjJiN2U2NGM1ZTMxMTg1Yzk4NTRhNDA3MGE2ZGZhZDQ0ZmU1Y2MyNDhlN2Q0IgorCitTID0gIiR7V09SS0RJUn0vQ0dJLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBwZXJsLW1vZHVsZS1kZXByZWNhdGUgXAorICAgIHBlcmwtbW9kdWxlLWlmIFwKKyIKKworUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1jZ2kiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZGIvbGliZGJkLXNxbGl0ZS1wZXJsXzEuNTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZGIvbGliZGJkLXNxbGl0ZS1wZXJsXzEuNTQuYmIKaW5kZXggMGIyN2I1Yy4uYzcyZTUzNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmRiL2xpYmRiZC1zcWxpdGUtcGVybF8xLjU0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJkYi9saWJkYmQtc3FsaXRlLXBlcmxfMS41NC5iYgpAQCAtMjUsNiArMjUsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjhmODM1ZGRhY2I5YTRhOTJhNTJiYmUyZDI0ZDE4YThlIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM5MjlhNmRiZDhkNzE2MzBmMGNiNTdmODVkY2VmOTU4OGNkN2FjNGM5ZmExMmRiNzlkZjc3YjlkM2E0ZDcyNjkiCiAKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIkRCRFwtU1FMaXRlXC0oP1A8cHZlcj4oXGQrXC5cZCspKSg/IV9cZCspLnRhciIKKwogUyA9ICIke1dPUktESVJ9L0RCRC1TUUxpdGUtJHtQVn0iCiAKIGluaGVyaXQgY3BhbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmVuY29kZS9saWJlbmNvZGUtcGVybF8yLjgzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmVuY29kZS9saWJlbmNvZGUtcGVybF8yLjgzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZThjNjdkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJlbmNvZGUvbGliZW5jb2RlLXBlcmxfMi44My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiRW5jb2RlIC0gY2hhcmFjdGVyIGVuY29kaW5ncyIKLURFU0NSSVBUSU9OID0gIlRoZSBcIkVuY29kZVwiIG1vZHVsZSBwcm92aWRlcyB0aGUgaW50ZXJmYWNlcyBiZXR3ZWVuIFwKLVBlcmwncyBzdHJpbmdzIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiAgUGVybCBzdHJpbmdzIGFyZSBzZXF1ZW5jZXMgXAotb2YgY2hhcmFjdGVycy4iCi0KLUFVVEhPUiA9ICJEYW4gS29nYWkgPGRhbmtvZ2FpK2NwYW5AZ21haWwuY29tPiIKLUhPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3JlbGVhc2UvRW5jb2RlIgotU0VDVElPTiA9ICJsaWIiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUVUQS5qc29uO21kNT1mZGJlYmM4MmU5MjVkOGFjYmNlNDJjZmFkMTMxYzRkMSIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0QvREEvREFOS09HQUkvRW5jb2RlLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwZDNmNTllOGVhNzA0NDk3NjQ3ZWRlZDY2NTkxOTA1MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDNhOTBlMzBhYWJlNzhkZmNmNWU4MTZmZmIxZGExZTMzNDc1ODkyZGJkMDA3NTMyMDMxNWNkY2U1NjgyOTg4IgotCi1TID0gIiR7V09SS0RJUn0vRW5jb2RlLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotUkRFUEVORFNfJHtQTn0gKz0gIiBwZXJsLW1vZHVsZS1ieXRlcyBcCi0gICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNvbnN0YW50IFwKLSAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUteHNsb2FkZXIgXAotIgotCi1SUFJPVklERVNfJHtQTn0gKz0gImxpYmVuY29kZS1hbGlhcy1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLWJ5dGUtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS1jamtjb25zdGFudHMtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS1jbi1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLWNuLWh6LXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtY29uZmlnLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtZWJjZGljLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtZW5jb2Rlci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLWVuY29kaW5nLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtZ3NtMDMzOC1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLWd1ZXNzLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtanAtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS1qcC1oMnotcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS1qcC1qaXM3LXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUta3ItcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS1rci0yMDIyX2tyLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtbWltZS1oZWFkZXItcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS1taW1lLW5hbWUtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS1zeW1ib2wtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS10dy1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLXVuaWNvZGUtLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtdW5pY29kZS11dGY3LXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGluZy1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLWludGVybmFsLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtbWltZS1oZWFkZXItaXNvXzIwMjJfanAtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS11dGY4LXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtdXRmX2ViY2RpYy1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJlbmNvZGUvbGliZW5jb2RlLXBlcmxfMi45NC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJlbmNvZGUvbGliZW5jb2RlLXBlcmxfMi45NC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODYxYzU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmVuY29kZS9saWJlbmNvZGUtcGVybF8yLjk0LmJiCkBAIC0wLDAgKzEsNjggQEAKKyMgTk9URToKKyMgICAgWW91IHNob3VsZCB1c2UgcGVybC1tb2R1bGUtZW5jb2RlIHJhdGhlciB0aGFuIHRoaXMgcGFja2FnZQorIyAgICB1bmxlc3MgeW91IHNwZWNpZmljYWxseSBuZWVkIGEgdmVyc2lvbiBuZXdlciB0aGFuIHdoYXQgaXMKKyMgICAgcHJvdmlkZWQgYnkgcGVybC4KKworU1VNTUFSWSA9ICJFbmNvZGUgLSBjaGFyYWN0ZXIgZW5jb2RpbmdzIgorREVTQ1JJUFRJT04gPSAiVGhlIFwiRW5jb2RlXCIgbW9kdWxlIHByb3ZpZGVzIHRoZSBpbnRlcmZhY2VzIGJldHdlZW4gXAorUGVybCdzIHN0cmluZ3MgYW5kIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uICBQZXJsIHN0cmluZ3MgYXJlIHNlcXVlbmNlcyBcCitvZiBjaGFyYWN0ZXJzLiIKKworQVVUSE9SID0gIkRhbiBLb2dhaSA8ZGFua29nYWkrY3BhbkBnbWFpbC5jb20+IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS9FbmNvZGUiCitTRUNUSU9OID0gImxpYiIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLmpzb247bWQ1PWQ4ZTkwOTQ0N2I5ODM1MzJiMmI0NjBjODMwZTdhN2U0IgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvRC9EQS9EQU5LT0dBSS9FbmNvZGUtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImY5OTVlMGViOWU1MmQwMWVkNTdhYmU4MzViZjNjY2I2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjYjNhNGFmNWUzZWUzOGY5NGRlOGJhYTc0NTRlMGI4MzZhMDY0OWU3YWM0MTgwZjI4ZGZjYTQzOWFkNjBjZmYiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIkVuY29kZVwtKD9QPHB2ZXI+KFxkK1wuXGQrKSkoPyFfXGQrKS50YXIiCisKK1MgPSAiJHtXT1JLRElSfS9FbmNvZGUtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCisjICBmaWxlIC91c3IvYmluL2VuYzJ4cyBmcm9tIGluc3RhbGwgb2YgcGVybC1taXNjLTUuMjQuMS1yMC5pNTg2IGNvbmZsaWN0cyB3aXRoIGZpbGUgZnJvbSBwYWNrYWdlIGxpYmVuY29kZS1wZXJsLTIuOTQtcjAuaTU4NgorIyAgZmlsZSAvdXNyL2Jpbi9lbmNndWVzcyBmcm9tIGluc3RhbGwgb2YgcGVybC1taXNjLTUuMjQuMS1yMC5pNTg2IGNvbmZsaWN0cyB3aXRoIGZpbGUgZnJvbSBwYWNrYWdlIGxpYmVuY29kZS1wZXJsLTIuOTQtcjAuaTU4NgorIyAgZmlsZSAvdXNyL2Jpbi9waWNvbnYgZnJvbSBpbnN0YWxsIG9mIHBlcmwtbWlzYy01LjI0LjEtcjAuaTU4NiBjb25mbGljdHMgd2l0aCBmaWxlIGZyb20gcGFja2FnZSBsaWJlbmNvZGUtcGVybC0yLjk0LXIwLmk1ODYKK1JDT05GTElDVFNfJHtQTn0gPSAicGVybC1taXNjIgorCitSREVQRU5EU18ke1BOfSArPSAiIHBlcmwtbW9kdWxlLWJ5dGVzIFwKKyAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAorICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1wYXJlbnQgXAorICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1zdG9yYWJsZSBcCisgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXhzbG9hZGVyIFwKKyIKKworUlBST1ZJREVTXyR7UE59ICs9ICJsaWJlbmNvZGUtYWxpYXMtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS1ieXRlLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtY2prY29uc3RhbnRzLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtY24tcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS1jbi1oei1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLWNvbmZpZy1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLWViY2RpYy1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLWVuY29kZXItcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS1lbmNvZGluZy1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLWdzbTAzMzgtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS1ndWVzcy1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLWpwLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtanAtaDJ6LXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtanAtamlzNy1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLWtyLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUta3ItMjAyMl9rci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLW1pbWUtaGVhZGVyLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtbWltZS1uYW1lLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtc3ltYm9sLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtdHctcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS11bmljb2RlLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtdW5pY29kZS11dGY3LXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGluZy1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGliZW5jb2RlLWludGVybmFsLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtbWltZS1oZWFkZXItaXNvXzIwMjJfanAtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYmVuY29kZS11dGY4LXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJlbmNvZGUtdXRmX2ViY2RpYy1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJleHR1dGlscy9saWJleHR1dGlscy1jcHBndWVzcy1wZXJsXzAuMDkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtY3BwZ3Vlc3MtcGVybF8wLjA5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTNjYjAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJleHR1dGlscy9saWJleHR1dGlscy1jcHBndWVzcy1wZXJsXzAuMDkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkV4dFV0aWxzOjpDcHBHdWVzcyAtIGd1ZXNzIEMrKyBjb21waWxlciBhbmQgZmxhZ3MiCi1ERVNDUklQVElPTiA9ICJFeHRVdGlsczo6Q3BwR3Vlc3MgYXR0ZW1wdHMgdG8gZ3Vlc3MgdGhlIHN5c3RlbSdzIEMrKyBcCi1jb21waWxlciB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgQyBjb21waWxlciB0aGF0IHlvdXIgcGVybCB3YXMgYnVpbHQgXAotd2l0aC4gXAotSXQgY2FuIGdlbmVyYXRlIHRoZSBuZWNlc3Nhcnkgb3B0aW9ucyB0byB0aGUgTW9kdWxlOjpCdWlsZCBjb25zdHJ1Y3RvciBvciBcCi10byBFeHRVdGlsczo6TWFrZU1ha2VyJ3MgV3JpdGVNYWtlZmlsZSBmdW5jdGlvbi4iCi1TRUNUSU9OID0gImxpYnMiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfnNtdWVsbGVyL0V4dFV0aWxzLUNwcEd1ZXNzLyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9ODE7ZW5kbGluZT04NDttZDU9ODRjMDM5MGI5MGVhOGM2NzAyY2U2NTliNjdiZWQ2OTkiCi0KLVNSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9FL0VUL0VUSi9FeHRVdGlscy1DcHBHdWVzcy0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjhhZGEzOGVlNGFkODZhNGYxZTIwZDg1MjVjZTBjOTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDg2MjUxOTVhODhjMGYyZGRjMzdiYmQ3YTA2MzQ2YWE2OGZmYjY5NDhiYTc4ZGEzYWVhNDdjMGRiMjU0MGY2NSIKLQotUyA9ICIke1dPUktESVJ9L0V4dFV0aWxzLUNwcEd1ZXNzLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgICAgIGNwYW5fZG9faW5zdGFsbAotfQotCi1SREVQRU5EU18ke1BOfSA9ICIgbGliY2FwdHVyZS10aW55LXBlcmwgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1pby1maWxlIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNhcnAgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbGliIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtY3BwZ3Vlc3MtcGVybF8wLjEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLWNwcGd1ZXNzLXBlcmxfMC4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWRmNmYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLWNwcGd1ZXNzLXBlcmxfMC4xMi5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIkV4dFV0aWxzOjpDcHBHdWVzcyAtIGd1ZXNzIEMrKyBjb21waWxlciBhbmQgZmxhZ3MiCitERVNDUklQVElPTiA9ICJFeHRVdGlsczo6Q3BwR3Vlc3MgYXR0ZW1wdHMgdG8gZ3Vlc3MgdGhlIHN5c3RlbSdzIEMrKyBcCitjb21waWxlciB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgQyBjb21waWxlciB0aGF0IHlvdXIgcGVybCB3YXMgYnVpbHQgXAord2l0aC4gXAorSXQgY2FuIGdlbmVyYXRlIHRoZSBuZWNlc3Nhcnkgb3B0aW9ucyB0byB0aGUgTW9kdWxlOjpCdWlsZCBjb25zdHJ1Y3RvciBvciBcCit0byBFeHRVdGlsczo6TWFrZU1ha2VyJ3MgV3JpdGVNYWtlZmlsZSBmdW5jdGlvbi4iCitTRUNUSU9OID0gImxpYnMiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfnNtdWVsbGVyL0V4dFV0aWxzLUNwcEd1ZXNzLyIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9ODE7ZW5kbGluZT04NDttZDU9ODRjMDM5MGI5MGVhOGM2NzAyY2U2NTliNjdiZWQ2OTkiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9FL0VUL0VUSi9FeHRVdGlscy1DcHBHdWVzcy0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMjhiZTQ5MDcyNTg1YjI1ZGY4N2U1NDE4MGY3NDFhNGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzFjNDdiNWIxNWUzZTlmZDVhZTdiMzU4ODFhMGZmZmQyNmEyOTgzYjI0MWU3ZTNhMWJjMzQwZDZkNDQ2MTg2YiIKKworUyA9ICIke1dPUktESVJ9L0V4dFV0aWxzLUNwcEd1ZXNzLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIGNwYW5fZG9faW5zdGFsbAorfQorCitSREVQRU5EU18ke1BOfSA9ICIgbGliY2FwdHVyZS10aW55LXBlcmwgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1pby1maWxlIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNhcnAgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbGliIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliaW8vbGliaW8tc29ja2V0LXNzbC1wZXJsXzEuOTk3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmlvL2xpYmlvLXNvY2tldC1zc2wtcGVybF8xLjk5Ny5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE1Nzg4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliaW8vbGliaW8tc29ja2V0LXNzbC1wZXJsXzEuOTk3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIGxpYnJhcnkgZm9yIHRyYW5zcGFyZW50IFNTTCIKLURFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIGlzIGEgdHJ1ZSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBJTzo6U29ja2V0OjpJTkVUIHRoYXQgXAotdXNlcyBTU0wgdG8gZW5jcnlwdCBkYXRhIGJlZm9yZSBpdCBpcyB0cmFuc2ZlcnJlZCB0byBhIHJlbW90ZSBzZXJ2ZXIgXAotb3IgY2xpZW50LiBJTzo6U29ja2V0OjpTU0wgc3VwcG9ydHMgYWxsIHRoZSBleHRyYSBmZWF0dXJlcyB0aGF0IG9uZSBcCi1uZWVkcyB0byB3cml0ZSBhIGZ1bGwtZmVhdHVyZWQgU1NMIGNsaWVudCBvciBzZXJ2ZXIgYXBwbGljYXRpb246IFwKLW11bHRpcGxlIFNTTCBjb250ZXh0cywgY2lwaGVyIHNlbGVjdGlvbiwgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uLCBhbmQgXAotU1NMIHZlcnNpb24gc2VsZWN0aW9uLiBBcyBhbiBleHRyYSBib251cywgaXQgd29ya3MgcGVyZmVjdGx5IHdpdGggXAotbW9kX3BlcmwuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L0lPLVNvY2tldC1TU0wvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMHxHUEx2MSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLnltbDtiZWdpbmxpbmU9MTE7ZW5kbGluZT0xMTttZDU9OTYzY2UyODIyODM0Nzg3NWFjZTY4MmRlNTZlZWY4ZTgiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBsaWJuZXQtc3NsZWF5LXBlcmwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvUy9TVS9TVUxMUi9JTy1Tb2NrZXQtU1NMLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyYTYyNjhiYjQyZGE4MWU2OWQxYzFmZWIyZmNiMGVlYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhY2RiNjdiNWI2M2FlYTViN2U3MGMzZTRjNzBhMTYxMjg4MTAzMjk1OTJiNjM3NTNhMzhjNzk0YWZmNzZhMWRkIgotCi1TID0gIiR7V09SS0RJUn0vSU8tU29ja2V0LVNTTC0ke1BWfSIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBta2RpciAtcCAke0R9JHtkb2NkaXJ9LyR7UE59LwotICAgIGNwICR7U30vQlVHUyAke0R9JHtkb2NkaXJ9LyR7UE59LwotICAgIGNwICR7U30vQ2hhbmdlcyAke0R9JHtkb2NkaXJ9LyR7UE59LwotICAgIGNwICR7U30vUkVBRE1FICR7RH0ke2RvY2Rpcn0vJHtQTn0vCi0gICAgY3AgLXBSUCAke1N9L2RvY3MgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KLSAgICBjcCAtcFJQICR7U30vY2VydHMgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KLSAgICBjcCAtcFJQICR7U30vZXhhbXBsZSAke0R9JHtkb2NkaXJ9LyR7UE59LwotICAgIGNwIC1wUlAgJHtTfS91dGlsICR7RH0ke2RvY2Rpcn0vJHtQTn0vCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgIGNwIC1yICR7Qn0vdCAke0R9JHtQVEVTVF9QQVRIfQotICAgIGNwIC1yICR7Qn0vY2VydHMgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliaW8vbGliaW8tc29ja2V0LXNzbC1wZXJsXzIuMDU0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmlvL2xpYmlvLXNvY2tldC1zc2wtcGVybF8yLjA1NC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTc4YmM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmlvL2xpYmlvLXNvY2tldC1zc2wtcGVybF8yLjA1NC5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIlBlcmwgbGlicmFyeSBmb3IgdHJhbnNwYXJlbnQgU1NMIgorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgaXMgYSB0cnVlIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIElPOjpTb2NrZXQ6OklORVQgdGhhdCBcCit1c2VzIFNTTCB0byBlbmNyeXB0IGRhdGEgYmVmb3JlIGl0IGlzIHRyYW5zZmVycmVkIHRvIGEgcmVtb3RlIHNlcnZlciBcCitvciBjbGllbnQuIElPOjpTb2NrZXQ6OlNTTCBzdXBwb3J0cyBhbGwgdGhlIGV4dHJhIGZlYXR1cmVzIHRoYXQgb25lIFwKK25lZWRzIHRvIHdyaXRlIGEgZnVsbC1mZWF0dXJlZCBTU0wgY2xpZW50IG9yIHNlcnZlciBhcHBsaWNhdGlvbjogXAorbXVsdGlwbGUgU1NMIGNvbnRleHRzLCBjaXBoZXIgc2VsZWN0aW9uLCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24sIGFuZCBcCitTU0wgdmVyc2lvbiBzZWxlY3Rpb24uIEFzIGFuIGV4dHJhIGJvbnVzLCBpdCB3b3JrcyBwZXJmZWN0bHkgd2l0aCBcCittb2RfcGVybC4iCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvSU8tU29ja2V0LVNTTC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wfEdQTHYxKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL01FVEEueW1sO2JlZ2lubGluZT0xMTtlbmRsaW5lPTExO21kNT05NjNjZTI4MjI4MzQ3ODc1YWNlNjgyZGU1NmVlZjhlOCIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBsaWJuZXQtc3NsZWF5LXBlcmwgXAorICAgIHBlcmwtbW9kdWxlLWF1dG9sb2FkZXIgXAorICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKKyAgICBwZXJsLW1vZHVsZS1pby1zb2NrZXQgXAorIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1MvU1UvU1VMTFIvSU8tU29ja2V0LVNTTC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZTFiNDEyZTI4ZDEwN2M3MTZlN2NhNjM3ZTJiN2Y4YmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDJlYTA0ZTlhMzM2YTdkM2NhOWFhNjA0YzBjNWI1YWFmM2VmYTUxM2NlZmVjZmM3M2NjNzljZWViNTEzMWU0YiIKKworUyA9ICIke1dPUktESVJ9L0lPLVNvY2tldC1TU0wtJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdAorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgbWtkaXIgLXAgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KKyAgICBjcCAke1N9L0JVR1MgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KKyAgICBjcCAke1N9L0NoYW5nZXMgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KKyAgICBjcCAke1N9L1JFQURNRSAke0R9JHtkb2NkaXJ9LyR7UE59LworICAgIGNwIC1wUlAgJHtTfS9kb2NzICR7RH0ke2RvY2Rpcn0vJHtQTn0vCisgICAgY3AgLXBSUCAke1N9L2NlcnRzICR7RH0ke2RvY2Rpcn0vJHtQTn0vCisgICAgY3AgLXBSUCAke1N9L2V4YW1wbGUgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgY3AgLXIgJHtCfS90ICR7RH0ke1BURVNUX1BBVEh9CisgICAgY3AgLXIgJHtCfS9jZXJ0cyAke0R9JHtQVEVTVF9QQVRIfQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtaW1lL2xpYm1pbWUtdHlwZXMtcGVybF8yLjEzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1pbWUvbGlibWltZS10eXBlcy1wZXJsXzIuMTMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkNTFjMTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1pbWUvbGlibWltZS10eXBlcy1wZXJsXzIuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIk1JTUU6OlR5cGVzIC0gRGVmaW5pdGlvbiBvZiBNSU1FIHR5cGVzIgotREVTQ1JJUFRJT04gPSAiTUlNRSB0eXBlcyBhcmUgdXNlZCBpbiBNSU1FIGNvbXBsaWFudCBsaW5lcywgZm9yIGluc3RhbmNlIFwKLWFzIHBhcnQgb2YgZS1tYWlsIGFuZCBIVFRQIHRyYWZmaWMsIHRvIGluZGljYXRlIHRoZSB0eXBlIG9mIGNvbnRlbnQgd2hpY2ggXAotaXMgdHJhbnNtaXR0ZWQuIFNvbWV0aW1lcyByZWFsIGtub3dsZWRnZSBhYm91dCBhIG1pbWUtdHlwZSBpcyBuZWVkLlwKLVxuXAotVGhpcyBtb2R1bGUgbWFpbnRhaW5zIGEgc2V0IG9mIE1JTUU6OlR5cGUgb2JqZWN0cywgd2hpY2ggZWFjaCBkZXNjcmliZSBcCi1vbmUga25vd24gbWltZSB0eXBlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfm1hcmtvdi9NSU1FLVR5cGVzLSR7UFZ9IgotU0VDVElPTiA9ICJsaWJyYXJpZXMiCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wfEdQTHYxKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL01FVEEueW1sO2JlZ2lubGluZT0xMTtlbmRsaW5lPTExO21kNT05NjNjZTI4MjI4MzQ3ODc1YWNlNjgyZGU1NmVlZjhlOCIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9NL01BL01BUktPVi9NSU1FLVR5cGVzLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmMjg5MmFlOWU2ZWE2NjBhNTg3NDY2OTljMzkyNDgxNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5OWMzMzc2MzU3YmJlMjJjYzhiNmM3OGY1NjBhYTE4ZDgxNjIxMjg3Njk1Y2Q2MjkwMDhhNmM0ZTY2Yjc3YmY4IgotCi1TID0gIiR7V09SS0RJUn0vTUlNRS1UeXBlcy0ke1BWfSIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgIGNwIC1yICR7Qn0vdCAke0R9JHtQVEVTVF9QQVRIfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1pbWUvbGlibWltZS10eXBlcy1wZXJsXzIuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibWltZS9saWJtaW1lLXR5cGVzLXBlcmxfMi4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTQ3NTMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1pbWUvbGlibWltZS10eXBlcy1wZXJsXzIuMTcuYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJNSU1FOjpUeXBlcyAtIERlZmluaXRpb24gb2YgTUlNRSB0eXBlcyIKK0RFU0NSSVBUSU9OID0gIk1JTUUgdHlwZXMgYXJlIHVzZWQgaW4gTUlNRSBjb21wbGlhbnQgbGluZXMsIGZvciBpbnN0YW5jZSBcCithcyBwYXJ0IG9mIGUtbWFpbCBhbmQgSFRUUCB0cmFmZmljLCB0byBpbmRpY2F0ZSB0aGUgdHlwZSBvZiBjb250ZW50IHdoaWNoIFwKK2lzIHRyYW5zbWl0dGVkLiBTb21ldGltZXMgcmVhbCBrbm93bGVkZ2UgYWJvdXQgYSBtaW1lLXR5cGUgaXMgbmVlZC5cCitcblwKK1RoaXMgbW9kdWxlIG1haW50YWlucyBhIHNldCBvZiBNSU1FOjpUeXBlIG9iamVjdHMsIHdoaWNoIGVhY2ggZGVzY3JpYmUgXAorb25lIGtub3duIG1pbWUgdHlwZS4iCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35tYXJrb3YvTUlNRS1UeXBlcy0ke1BWfSIKK1NFQ1RJT04gPSAibGlicmFyaWVzIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMHxHUEx2MSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLnltbDtiZWdpbmxpbmU9MTE7ZW5kbGluZT0xMTttZDU9OTYzY2UyODIyODM0Nzg3NWFjZTY4MmRlNTZlZWY4ZTgiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvTS9NQS9NQVJLT1YvTUlNRS1UeXBlcy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNmYxNDQxYWRkYWI5NDcxMzdiYWM5MmMzNzlhNDdiYTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTA0ZWQ3ZDQyZjFmZjMxNTBhMzAzODA1ZjI2ODljMjhmODBiOTJjNTExNzg0ZDQ2NDFjYjdmMDQwZDNlOGZmNiIKKworUyA9ICIke1dPUktESVJ9L01JTUUtVHlwZXMtJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdAorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgcGVybC1tb2R1bGUtYmFzZSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICBwZXJsLW1vZHVsZS1vdmVybG9hZCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gInBlcmwtbW9kdWxlLWxpYiBwZXJsLW1vZHVsZS10ZXN0LW1vcmUiCisjUlNVR0dFU1RTXyR7UE59LXB0ZXN0ID0gImxpYm1vam8tYmFzZS1wZXJsIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBjcGFuX2RvX2luc3RhbGwKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L2Jpbi9jb2xsZWN0LXR5cGVzICR7RH0ke2JpbmRpcn0vY29sbGVjdC10eXBlcworfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBjcCAtciAke0J9L3QgJHtEfSR7UFRFU1RfUEFUSH0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb2R1bGUvbGlibW9kdWxlLXBsdWdnYWJsZS1wZXJsXzUuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb2R1bGUvbGlibW9kdWxlLXBsdWdnYWJsZS1wZXJsXzUuMi5iYgppbmRleCBjNzNhMTVhLi5hZWQ2NWQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9kdWxlL2xpYm1vZHVsZS1wbHVnZ2FibGUtcGVybF81LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtcGx1Z2dhYmxlLXBlcmxfNS4yLmJiCkBAIC0xNyw5ICsxNywxNCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0zMjI7ZW5kbGluZT0zMjU7bWQ1PTA4NjQ1MGNlMDEwZjZmZGEyNWRiMGIzOGZjYzQxMDg2IgogCiBTUkNOQU1FID0gIk1vZHVsZS1QbHVnZ2FibGUiCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tb3RvLXRpbW8vJHtTUkNOQU1FfS9hcmNoaXZlLyR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlMzI0NzVkNmZmNTg0M2Y3MzhjZWRhY2QzYjdhMmNkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OGM2MjI5MmVlYTZkMDY5NTllYmExYjk3NTk4NjUwODEzMjExMjY1NDAzMjQyZDU3ZWZiMmY2MDVjOTYwNTlmIgorU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL1MvU0kvU0lNT05XLyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjg3Y2UyOTcxNjYyZWZkMGI2OWE4MWJiNGRjOWVhNzZjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzZjJhZDQ1ZTRmZDEwYjNmYjkwZDkxMmQ3OGQ4Yjc5NWFiMjk1NDgwZGI1NmRjNjRlODZiOWZhNzVjNWE2ZGYiCisKK1BSID0gInIxIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJNb2R1bGVcLVBsdWdnYWJsZVwtKD9QPHB2ZXI+KFxkK1wuXGQrKSkiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS8ke1NSQ05BTUV9IgogCiBTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtcnVudGltZS1wZXJsXzAuMDE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtcnVudGltZS1wZXJsXzAuMDE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTI4NDJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb2R1bGUvbGlibW9kdWxlLXJ1bnRpbWUtcGVybF8wLjAxNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiTW9kdWxlOjpSdW50aW1lIC0gcnVudGltZSBtb2R1bGUgaGFuZGxpbmciCi1ERVNDUklQVElPTiA9ICJUaGUgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlIGRlYWwgd2l0aCBydW50aW1lIFwKLWhhbmRsaW5nIG9mIFBlcmwgbW9kdWxlcywgd2hpY2ggYXJlIG5vcm1hbGx5IGhhbmRsZWQgYXQgY29tcGlsZSB0aW1lLiBUaGlzIFwKLW1vZHVsZSBhdm9pZHMgdXNpbmcgYW55IG90aGVyIG1vZHVsZXMsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gbG93LWxldmVsIFwKLWluZnJhc3RydWN0dXJlLiBcCi1UaGUgcGFydHMgb2YgdGhpcyBtb2R1bGUgdGhhdCB3b3JrIHdpdGggbW9kdWxlIG5hbWVzIGFwcGx5IHRoZSBzYW1lIHN5bnRheCBcCi10aGF0IGlzIHVzZWQgZm9yIGJhcmV3b3JkcyBpbiBQZXJsIHNvdXJjZS4gSW4gcHJpbmNpcGxlIHRoaXMgc3ludGF4IGNhbiB2YXJ5IFwKLWJldHdlZW4gdmVyc2lvbnMgb2YgUGVybCwgYW5kIHRoaXMgbW9kdWxlIGFwcGxpZXMgdGhlIHN5bnRheCBvZiB0aGUgUGVybCBvbiBcCi13aGljaCBpdCBpcyBydW5uaW5nLiBJbiBwcmFjdGljZSB0aGUgdXNhYmxlIHN5bnRheCBoYXNuJ3QgY2hhbmdlZCB5ZXQsIGJ1dCBcCi10aGVyZSdzIGEgZ29vZCBjaGFuY2Ugb2YgaXQgY2hhbmdpbmcgaW4gUGVybCA1LjE4LiBcCi1UaGUgZnVuY3Rpb25zIG9mIHRoaXMgbW9kdWxlIHdob3NlIHB1cnBvc2UgaXMgdG8gbG9hZCBtb2R1bGVzIGluY2x1ZGUgXAotd29ya2Fyb3VuZHMgZm9yIHRocmVlIG9sZCBQZXJsIGNvcmUgYnVncyByZWdhcmRpbmcgcmVxdWlyZS4gVGhlc2Ugd29ya2Fyb3VuZHMgXAotYXJlIGFwcGxpZWQgb24gYW55IFBlcmwgdmVyc2lvbiB3aGVyZSB0aGUgYnVncyBleGlzdCwgZXhjZXB0IGZvciBhIGNhc2Ugd2hlcmUgXAotb25lIG9mIHRoZSBidWdzIGNhbm5vdCBiZSBhZGVxdWF0ZWx5IHdvcmtlZCBhcm91bmQgaW4gcHVyZSBQZXJsLiIKLVNFQ1RJT04gPSAibGlicyIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+emVmcmFtL01vZHVsZS1SdW50aW1lLyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NDU7ZW5kbGluZT00NjttZDU9NjJlMjRhOTMzNDJmZWRlNzIyMWQ2NjMzNWM3MTZmMzQiCi0KLVNSQ05BTUUgPSAibW9kdWxlLXJ1bnRpbWUiCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tb3RvLXRpbW8vJHtTUkNOQU1FfS9hcmNoaXZlLyR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZDZjYTE3OWM5NzhhYTAyYWM4YWEyOTI0NGVmOWJlYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OWVmZmE4MmIzZjY5ODZkMjhkZTYxNTRhOGYyNDI4MTU3NjkxMDA0ZDk1MWY5MzZhODFlODUxZjRkYmNiMDQ1IgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLVJERVBFTkRTXyR7UE59ID0gIiBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXN0cmljdCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtcnVudGltZS1wZXJsXzAuMDE2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtcnVudGltZS1wZXJsXzAuMDE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZjBmNzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9kdWxlL2xpYm1vZHVsZS1ydW50aW1lLXBlcmxfMC4wMTYuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJNb2R1bGU6OlJ1bnRpbWUgLSBydW50aW1lIG1vZHVsZSBoYW5kbGluZyIKK0RFU0NSSVBUSU9OID0gIlRoZSBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUgZGVhbCB3aXRoIHJ1bnRpbWUgXAoraGFuZGxpbmcgb2YgUGVybCBtb2R1bGVzLCB3aGljaCBhcmUgbm9ybWFsbHkgaGFuZGxlZCBhdCBjb21waWxlIHRpbWUuIFRoaXMgXAorbW9kdWxlIGF2b2lkcyB1c2luZyBhbnkgb3RoZXIgbW9kdWxlcywgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBsb3ctbGV2ZWwgXAoraW5mcmFzdHJ1Y3R1cmUuIFwKK1RoZSBwYXJ0cyBvZiB0aGlzIG1vZHVsZSB0aGF0IHdvcmsgd2l0aCBtb2R1bGUgbmFtZXMgYXBwbHkgdGhlIHNhbWUgc3ludGF4IFwKK3RoYXQgaXMgdXNlZCBmb3IgYmFyZXdvcmRzIGluIFBlcmwgc291cmNlLiBJbiBwcmluY2lwbGUgdGhpcyBzeW50YXggY2FuIHZhcnkgXAorYmV0d2VlbiB2ZXJzaW9ucyBvZiBQZXJsLCBhbmQgdGhpcyBtb2R1bGUgYXBwbGllcyB0aGUgc3ludGF4IG9mIHRoZSBQZXJsIG9uIFwKK3doaWNoIGl0IGlzIHJ1bm5pbmcuIEluIHByYWN0aWNlIHRoZSB1c2FibGUgc3ludGF4IGhhc24ndCBjaGFuZ2VkIHlldCwgYnV0IFwKK3RoZXJlJ3MgYSBnb29kIGNoYW5jZSBvZiBpdCBjaGFuZ2luZyBpbiBQZXJsIDUuMTguIFwKK1RoZSBmdW5jdGlvbnMgb2YgdGhpcyBtb2R1bGUgd2hvc2UgcHVycG9zZSBpcyB0byBsb2FkIG1vZHVsZXMgaW5jbHVkZSBcCit3b3JrYXJvdW5kcyBmb3IgdGhyZWUgb2xkIFBlcmwgY29yZSBidWdzIHJlZ2FyZGluZyByZXF1aXJlLiBUaGVzZSB3b3JrYXJvdW5kcyBcCithcmUgYXBwbGllZCBvbiBhbnkgUGVybCB2ZXJzaW9uIHdoZXJlIHRoZSBidWdzIGV4aXN0LCBleGNlcHQgZm9yIGEgY2FzZSB3aGVyZSBcCitvbmUgb2YgdGhlIGJ1Z3MgY2Fubm90IGJlIGFkZXF1YXRlbHkgd29ya2VkIGFyb3VuZCBpbiBwdXJlIFBlcmwuIgorU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL356ZWZyYW0vTW9kdWxlLVJ1bnRpbWUvIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0zNjtlbmRsaW5lPTQ0O21kNT05NDE2NDM0NjcyYTU3ODUzZDYxODFmM2RhOTA5NDk2MyIKKworU1JDTkFNRSA9ICJNb2R1bGUtUnVudGltZSIKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9aL1pFL1pFRlJBTS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkM2Q0NzIyMmZhMmUzZGZjYjQ1MjZmNmNjODQzN2IyMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ODMwMmVjNjQ2ODMzNTQ3ZDQxMGJlMjhlMDk2NzZkYjc1MDA2ZjRhYTU4YTExZjNiZGI0NGZmZTk5ZjBmMDI0IgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJNb2R1bGVcLVJ1bnRpbWVcLSg/UDxwdmVyPihcZCtcLlxkKykpLnRhciIKKworUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitSREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb28vbGlibW9vLXBlcmxfMi4wMDMwMDIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9vL2xpYm1vby1wZXJsXzIuMDAzMDAyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGZlNDkyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb28vbGlibW9vLXBlcmxfMi4wMDMwMDIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIk1vbyAtIE1pbmltYWxpc3QgT2JqZWN0IE9yaWVudGF0aW9uICh3aXRoIE1vb3NlIGNvbXBhdGliaWxpdHkpIgotREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgdXMgYW4gZXh0cmVtZWx5IGxpZ2h0LXdlaWdodCBzdWJzZXQgb2YgXCJNb29zZVwiIFwKLW9wdGltaXNlZCBmb3IgcmFwaWQgc3RhcnR1cCBhbmQgXCJwYXkgb25seSBmb3Igd2hhdCB5b3UgdXNlXCIuIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9tZXRhcGFuLm9yZy9yZWxlYXNlL01vby8iCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTczMTtlbmRsaW5lPTc3NjttZDU9MjdlZmVkZDE3NWVlYWRkYmQxOGY0ZTM1NzJiZDcyYTgiCi0KLVNSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9IL0hBL0hBQVJHL01vby0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTlmMWYzMTU5NTU1ZWNlYmNkMDYyZTk5OGYyOTdhOTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjNlOTc0MWU3OWJhYTYzZTg5ZjVhMDg3MDZjZDgwZDE4YzBhNWEzN2UzZDg5ODg0N2UwMDIzMTBlMDY1ODJmMSIKLQotUyA9ICIke1dPUktESVJ9L01vby0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLVJERVBFTkRTXyR7UE59ID0gIiBsaWJjbGFzcy1tZXRob2QtbW9kaWZpZXJzLXBlcmwgXAotICAgICAgICAgICAgICAgICAgIGxpYmRldmVsLWdsb2JhbGRlc3RydWN0aW9uLXBlcmwgXAotICAgICAgICAgICAgICAgICAgIGxpYm1vZHVsZS1ydW50aW1lLXBlcmwgXAotICAgICAgICAgICAgICAgICAgIGxpYnJvbGUtdGlueS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jb25zdGFudCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLW1ybyBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAotIgotCi1SUFJPVklERVNfJHtQTn0gPSAiIGxpYm1ldGhvZC1pbmxpbmVyLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtYWNjZXNzb3ItcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1idWlsZGFsbC1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWNvbnN0cnVjdG9yLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtZGVtb2xpc2hhbGwtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1vby1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibW9vLWhhbmRsZW1vb3NlLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtb28taGFuZGxlbW9vc2UtZmFrZW1ldGFjbGFzcy1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibW9vLW9iamVjdC1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibW9vLXJvbGUtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnN1Yi1kZWZlci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlic3ViLXF1b3RlLXBlcmwgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb28vbGlibW9vLXBlcmxfMi4wMDMwMDQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9vL2xpYm1vby1wZXJsXzIuMDAzMDA0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNjBhYjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9vL2xpYm1vby1wZXJsXzIuMDAzMDA0LmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiTW9vIC0gTWluaW1hbGlzdCBPYmplY3QgT3JpZW50YXRpb24gKHdpdGggTW9vc2UgY29tcGF0aWJpbGl0eSkiCitERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSB1cyBhbiBleHRyZW1lbHkgbGlnaHQtd2VpZ2h0IHN1YnNldCBvZiBcIk1vb3NlXCIgXAorb3B0aW1pc2VkIGZvciByYXBpZCBzdGFydHVwIGFuZCBcInBheSBvbmx5IGZvciB3aGF0IHlvdSB1c2VcIi4iCisKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cDovL21ldGFwYW4ub3JnL3JlbGVhc2UvTW9vLyIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NzMxO2VuZGxpbmU9Nzc2O21kNT0yN2VmZWRkMTc1ZWVhZGRiZDE4ZjRlMzU3MmJkNzJhOCIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0gvSEEvSEFBUkcvTW9vLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNGZjZDBmMjQwMDMzMTk4NTcxZmNjODFjZTdjNWYxNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmOGJiYjYyNWY4ZTk2M2VhYmUwNWNmZjkwNDhmZGQ3MmJkZDI2Nzc3NDA0ZmYyYzQwYmM2OTBmNTU4YmU5MWUxIgorCitTID0gIiR7V09SS0RJUn0vTW9vLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworUkRFUEVORFNfJHtQTn0gPSAiIGxpYmNsYXNzLW1ldGhvZC1tb2RpZmllcnMtcGVybCBcCisgICAgICAgICAgICAgICAgICAgbGliZGV2ZWwtZ2xvYmFsZGVzdHJ1Y3Rpb24tcGVybCBcCisgICAgICAgICAgICAgICAgICAgbGlibW9kdWxlLXJ1bnRpbWUtcGVybCBcCisgICAgICAgICAgICAgICAgICAgbGlicm9sZS10aW55LXBlcmwgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNvbnN0YW50IFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbXJvIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCisiCisKK1JQUk9WSURFU18ke1BOfSA9ICIgbGlibWV0aG9kLWlubGluZXItcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1hY2Nlc3Nvci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWJ1aWxkYWxsLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtY29uc3RydWN0b3ItcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1kZW1vbGlzaGFsbC1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibW9vLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtb28taGFuZGxlbW9vc2UtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1vby1oYW5kbGVtb29zZS1mYWtlbWV0YWNsYXNzLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtb28tb2JqZWN0LXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtb28tcm9sZS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlic3ViLWRlZmVyLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJzdWItcXVvdGUtcGVybCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtZG5zLXBlcmxfMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkODk4NDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtZG5zLXBlcmxfMS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgRE5TLnBtIG1vZHVsZSB3aXRoIGZyaWVuZHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXQtZG5zLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTkyZDkzZDhjNWJmMjJkZTc3NTc4NTMxZTI4M2RkMjE5IgotCi1ERVBFTkRTICs9ICJwZXJsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL04vTkwvTkxORVRMQUJTL05ldC1ETlMtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGZhNDViMGRmZTc5NjY3NDUzYzE1NTNlMTZlNTJjMmEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWJlNTNlN2Y0MzMxMzhmYjlhNzg0NWI0ZWRhZTZiOGY0ZGMyMjdkYTk3ZWFmNmIzNDc1ODQ4MTZlYzYzYTUyNSIKLQotUyA9ICIke1dPUktESVJ9L05ldC1ETlMtJHtQVn0iCi0KLUVYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IgotCi1pbmhlcml0IGNwYW4KLQotZG9fY29tcGlsZSgpIHsKLSAgICBleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgotICAgIGNwYW5fZG9fY29tcGlsZQotfQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtZG5zLXBlcmxfMS4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmFhN2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtZG5zLXBlcmxfMS4xNC5iYgpAQCAtMCwwICsxLDI3IEBACitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIEROUy5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubmV0LWRucy5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT05MmQ5M2Q4YzViZjIyZGU3NzU3ODUzMWUyODNkZDIxOSIKKworREVQRU5EUyArPSAicGVybCIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9OL05ML05MTkVUTEFCUy9OZXQtRE5TLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjBkYTEwOTljMGEzNTQ4ZDM2ZWE5ZTMxZDViYjllMTIyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzYzM4YTU5NGVlYjJjODVkNjZlNjAwNDdhMGY1YjQwM2YzNGJkOTJhNWQxMzYwNmYwMmU4MjhkNDUwMjk5ZmMiCisKK1MgPSAiJHtXT1JLRElSfS9OZXQtRE5TLSR7UFZ9IgorCitFWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSIKKworaW5oZXJpdCBjcGFuCisKK1JERVBFTkRTXyR7UE59ID0gInBlcmwtbW9kdWxlLWludGVnZXIiCisKK2RvX2NvbXBpbGUoKSB7CisgICAgZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKKyAgICBjcGFuX2RvX2NvbXBpbGUKK30KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtc3NsZWF5LXBlcmxfMS44MS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LXNzbGVheS1wZXJsXzEuODEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NjFiNjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtc3NsZWF5LXBlcmxfMS44MS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0OjpTU0xlYXkgLSBQZXJsIGV4dGVuc2lvbiBmb3IgdXNpbmcgT3BlblNTTCIKLURFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIG9mZmVycyBzb21lIGhpZ2ggbGV2ZWwgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgXAotd2ViIHBhZ2VzIG9uIFNTTCBzZXJ2ZXJzIChmb3Igc3ltbWV0cnksIHNhbWUgQVBJIGlzIG9mZmVyZWQgZm9yIFwKLWFjY2Vzc2luZyBodHRwIHNlcnZlcnMsIHRvbyksIGEgc3NsY2F0KCkgZnVuY3Rpb24gZm9yIHdyaXRpbmcgeW91ciBvd24gXAotY2xpZW50cywgYW5kIGZpbmFsbHkgYWNjZXNzIHRvIHRoZSBTU0wgYXBpIG9mIFNTTGVheS9PcGVuU1NMIHBhY2thZ2UgXAotc28geW91IGNhbiB3cml0ZSBzZXJ2ZXJzIG9yIGNsaWVudHMgZm9yIG1vcmUgY29tcGxpY2F0ZWQgYXBwbGljYXRpb25zLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9OZXQtU1NMZWF5LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9Mjc0O2VuZGxpbmU9Mjk0O21kNT02N2Q2NzA5NWQ4M2UzMzlkYTUzOGEwODJmYWQ1ZjM4ZSIKLQotREVQRU5EUyA9ICJvcGVuc3NsIHpsaWIgb3BlbnNzbC1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSArPSAicGVybC1tb2R1bGUtY2FycCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXJybm8gXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbWltZS1iYXNlNjQgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvTS9NSS9NSUtFTS9OZXQtU1NMZWF5LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3MTkzMmNlMzRkNGRiNDRkZThkMDAzOTljMzQwNTc5MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMGNiYjYxNzRlNjI4YjQyMTc4ZTE0NDVjOWZkNWEzYzVhZTJjZmQ2YTVhNDNlMDM2MTBiYTE0Nzg2ZjIxYjdkIgotCi1TID0gIiR7V09SS0RJUn0vTmV0LVNTTGVheS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0Ci0KLUVYVFJBX0NQQU5GTEFHUyA9ICJMSUJTPSctTD0ke1NUQUdJTkdfTElCRElSfSAtTD0ke1NUQUdJTkdfQkFTRUxJQkRJUn0nIFwKLSAgICAgICAgICAgICAgICAgICBJTkM9LUk9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgICAgICctbHNzbCAtbGNyeXB0byAtbHonIFwKLSAgICAgICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICBjcCAtciAke0J9L3QgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUZJTEVTXyR7UE59LWRiZyA9KyAiJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL05ldC9TU0xlYXkvLmRlYnVnLyIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiIHBlcmwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1zc2xlYXktcGVybF8xLjg0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtc3NsZWF5LXBlcmxfMS44NC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmVjZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtc3NsZWF5LXBlcmxfMS44NC5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIk5ldDo6U1NMZWF5IC0gUGVybCBleHRlbnNpb24gZm9yIHVzaW5nIE9wZW5TU0wiCitERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBvZmZlcnMgc29tZSBoaWdoIGxldmVsIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIFwKK3dlYiBwYWdlcyBvbiBTU0wgc2VydmVycyAoZm9yIHN5bW1ldHJ5LCBzYW1lIEFQSSBpcyBvZmZlcmVkIGZvciBcCithY2Nlc3NpbmcgaHR0cCBzZXJ2ZXJzLCB0b28pLCBhIHNzbGNhdCgpIGZ1bmN0aW9uIGZvciB3cml0aW5nIHlvdXIgb3duIFwKK2NsaWVudHMsIGFuZCBmaW5hbGx5IGFjY2VzcyB0byB0aGUgU1NMIGFwaSBvZiBTU0xlYXkvT3BlblNTTCBwYWNrYWdlIFwKK3NvIHlvdSBjYW4gd3JpdGUgc2VydmVycyBvciBjbGllbnRzIGZvciBtb3JlIGNvbXBsaWNhdGVkIGFwcGxpY2F0aW9ucy4iCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvTmV0LVNTTGVheS8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTI3NDtlbmRsaW5lPTI5NDttZDU9NjdkNjcwOTVkODNlMzM5ZGE1MzhhMDgyZmFkNWYzOGUiCisKK0RFUEVORFMgPSAib3BlbnNzbCB6bGliIG9wZW5zc2wtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBsaWJzc2wgXAorICAgIGxpYmNyeXB0byBcCisgICAgcGVybC1tb2R1bGUtY2FycCBcCisgICAgcGVybC1tb2R1bGUtZXJybm8gXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciBcCisgICAgcGVybC1tb2R1bGUtbWltZS1iYXNlNjQgXAorICAgIHBlcmwtbW9kdWxlLXNvY2tldCBcCisgICAgemxpYiBcCisiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvTS9NSS9NSUtFTS9OZXQtU1NMZWF5LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZmJlOTY4NDg3MTQ5NjI2OTc4ZjQyN2NjOWZiOGM3NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MjNlYzNjYmI0MjgzMDlkNmE5ZTU2ZjM2MmE5MzAwNjkzY2UzMjE1YjdmZWRlMTA5YWRiN2JlMzYxZmZmMTc3IgorCitTID0gIiR7V09SS0RJUn0vTmV0LVNTTGVheS0ke1BWfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0CisKK2V4cG9ydCBPUEVOU1NMX1BSRUZJWD0iJHtTVEFHSU5HX0xJQkRJUn0iCisKK0VYVFJBX0NQQU5GTEFHUyA9ICJJTkM9LUkke1NUQUdJTkdfSU5DRElSfSBMSUJTPSctTCR7U1RBR0lOR19MSUJESVJ9IC1sY3J5cHRvIC1sc3NsIC1MJHtTVEFHSU5HX0JBU0VMSUJESVJ9IC1seiciCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgY3AgLXIgJHtCfS90ICR7RH0ke1BURVNUX1BBVEh9Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitGSUxFU18ke1BOfS1kYmcgPSsgIiR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9OZXQvU1NMZWF5Ly5kZWJ1Zy8iCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gIiBwZXJsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnJvbGUvbGlicm9sZS10aW55LXBlcmxfMi4wMDAwMDUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlicm9sZS9saWJyb2xlLXRpbnktcGVybF8yLjAwMDAwNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY4NGY2OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlicm9sZS9saWJyb2xlLXRpbnktcGVybF8yLjAwMDAwNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiUm9sZTo6VGlueSAtIFJvbGVzLiBMaWtlIGEgbm91dmVsbGUgY291c2luZSBwb3J0aW9uIHNpemUgb2YgTW9vc2UuIgotREVTQ1JJUFRJT04gPSAiXCJSb2xlOjpUaW55XCIgaXMgYSBtaW5pbWFsaXN0IHJvbGUgY29tcG9zaXRpb24gdG9vbC4iCi0KLVNFQ1RJT04gPSAibGlicyIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL1JvbGU6OlRpbnkiCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTE3NztlbmRsaW5lPTIxNDttZDU9MjZkZjdlN2MyMDU1MWZiMTkwNmUyMjg2NjI0ZjBiNzEiCi0KLVNSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9IL0hBL0hBQVJHL1JvbGUtVGlueS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzhjNWNmMWUwMmQyZTBhMWVkMjI1MzBiNTViNjdkNjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTkzYTI5YjYyMWUwMjliZjAyMThkMDE1NGQ1ZGZkZjZlYzUwMmFmYzQ5YWRlZWFkYWU2YWZkMGM3MDA2MzExNSIKLQotUyA9ICIke1dPUktESVJ9L1JvbGUtVGlueS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLVJERVBFTkRTXyR7UE59ID0gIiBwZXJsLW1vZHVsZS1leHBvcnRlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtc3RyaWN0IFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKLSIKLQotUlBST1ZJREVTXyR7UE59ID0gIiBsaWJyb2xlLXRpbnktcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnJvbGUtdGlueS13aXRoLXBlcmwgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJyb2xlL2xpYnJvbGUtdGlueS1wZXJsXzIuMDAwMDA2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnJvbGUvbGlicm9sZS10aW55LXBlcmxfMi4wMDAwMDYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI3NTVlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJyb2xlL2xpYnJvbGUtdGlueS1wZXJsXzIuMDAwMDA2LmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiUm9sZTo6VGlueSAtIFJvbGVzLiBMaWtlIGEgbm91dmVsbGUgY291c2luZSBwb3J0aW9uIHNpemUgb2YgTW9vc2UuIgorREVTQ1JJUFRJT04gPSAiXCJSb2xlOjpUaW55XCIgaXMgYSBtaW5pbWFsaXN0IHJvbGUgY29tcG9zaXRpb24gdG9vbC4iCisKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL1JvbGU6OlRpbnkiCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTE3NztlbmRsaW5lPTIxNDttZDU9MjZkZjdlN2MyMDU1MWZiMTkwNmUyMjg2NjI0ZjBiNzEiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9IL0hBL0hBQVJHL1JvbGUtVGlueS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiN2MyNzc3MjhhN2UwOTBmNjRiNDk1ODU3Y2FkZmVkMDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2M3MzQxOGM5MDRhMDI4NmVjZDg5MTVlYWMxMWY1YmUyYThkMWUxN2VhOWNiNTRjOTExNmIwMzQwY2QzZTM4MiIKKworUyA9ICIke1dPUktESVJ9L1JvbGUtVGlueS0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK1JERVBFTkRTXyR7UE59ID0gIiBwZXJsLW1vZHVsZS1leHBvcnRlciBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtc3RyaWN0IFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKKyIKKworUlBST1ZJREVTXyR7UE59ID0gIiBsaWJyb2xlLXRpbnktcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnJvbGUtdGlueS13aXRoLXBlcmwgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXN0L2xpYnRlc3QtaGFybmVzcy1wZXJsXzMuMzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidGVzdC9saWJ0ZXN0LWhhcm5lc3MtcGVybF8zLjM2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWVkNWUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXN0L2xpYnRlc3QtaGFybmVzcy1wZXJsXzMuMzYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi1TVU1NQVJZID0gIlRlc3Q6Okhhcm5lc3MgLSBSdW4gUGVybCBzdGFuZGFyZCB0ZXN0IHNjcmlwdHMgd2l0aCBzdGF0aXN0aWNzIgotREVTQ1JJUFRJT04gPSAiQWx0aG91Z2gsIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHRoZSBUZXN0OjpIYXJuZXNzIFwKLWRpc3RyaWJ1dGlvbiB0YWtlcyBpdHMgbmFtZSBmcm9tIHRoaXMgbW9kdWxlIGl0IG5vdyBleGlzdHMgb25seSB0byBwcm92aWRlIFwKLVRBUDo6SGFybmVzcyB3aXRoIGFuIGludGVyZmFjZSB0aGF0IGlzIHNvbWV3aGF0IGJhY2t3YXJkcyBjb21wYXRpYmxlIFwKLXdpdGggVGVzdDo6SGFybmVzcyAyLnh4LiBJZiB5b3UncmUgd3JpdGluZyBuZXcgY29kZSBjb25zaWRlciB1c2luZyBcCi1UQVA6Okhhcm5lc3MgZGlyZWN0bHkgaW5zdGVhZC4gXAotXAotRW11bGF0aW9uIGlzIHByb3ZpZGVkIGZvciBydW50ZXN0cyBhbmQgZXhlY3V0ZV90ZXN0cyBidXQgdGhlIFwKLXBsdWdnYWJsZSAnU3RyYXBzJyBpbnRlcmZhY2UgdGhhdCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBUZXN0OjpIYXJuZXNzIFwKLXN1cHBvcnRlZCBpcyBub3QgcmVwcm9kdWNlZCBoZXJlLiBTdHJhcHMgaXMgbm93IGF2YWlsYWJsZSBhcyBhIHN0YW5kIFwKLWFsb25lIG1vZHVsZTogVGVzdDo6SGFybmVzczo6U3RyYXBzLiBcCi1cCi1TZWUgVEFQOjpQYXJzZXIsIFRBUDo6SGFybmVzcyBmb3IgdGhlIG1haW4gZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBcCi1kaXN0cmlidXRpb24uIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly90ZXN0YW55dGhpbmcub3JnIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yOTtlbmRsaW5lPTMwO21kNT1iMDhkYjQzNjBlZWMxMTllODc1ZGRkZDdjYjhhNWRkZCIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0wvTEUvTEVPTlQvVGVzdC1IYXJuZXNzLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0YzhkOWM3N2U4ZTA2Y2E5NmM3MzgzYzA1YzhmMzYxNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNzU2NmYxM2IwNDFkMDI4YjU2ZjE4NGI3N2VjMjU0NWVjNmYwYmI1YTBmOGY1MzY4ZjdlNGEwOGI0OTZiNjNlIgotCi1TID0gIiR7V09SS0RJUn0vVGVzdC1IYXJuZXNzLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotUlBST1ZJREVTXyR7UE59ICs9ICJsaWJhcHAtcHJvdmUtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYmFwcC1wcm92ZS1zdGF0ZS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGliYXBwLXByb3ZlLXN0YXRlLXJlc3VsdC1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGliYXBwLXByb3ZlLXN0YXRlLXJlc3VsdC10ZXN0LXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtYmFzZS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlidGFwLWZvcm1hdHRlci1iYXNlLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtZm9ybWF0dGVyLWNvbG9yLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtZm9ybWF0dGVyLWNvbnNvbGUtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1mb3JtYXR0ZXItY29uc29sZS1wYXJhbGxlbHNlc3Npb24tcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1mb3JtYXR0ZXItY29uc29sZS1zZXNzaW9uLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtZm9ybWF0dGVyLWZpbGUtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1mb3JtYXR0ZXItZmlsZS1zZXNzaW9uLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtZm9ybWF0dGVyLXNlc3Npb24tcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1oYXJuZXNzLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtaGFybmVzcy1lbnYtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1vYmplY3QtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItYWdncmVnYXRvci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1ncmFtbWFyLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLWl0ZXJhdG9yLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLWl0ZXJhdG9yLWFycmF5LXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLWl0ZXJhdG9yLXByb2Nlc3MtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItaXRlcmF0b3Itc3RyZWFtLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLWl0ZXJhdG9yZmFjdG9yeS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1tdWx0aXBsZXhlci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1yZXN1bHQtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzc2VyLXJlc3VsdC1iYWlsb3V0LXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLXJlc3VsdC1jb21tZW50LXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLXJlc3VsdC1wbGFuLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLXJlc3VsdC1wcmFnbWEtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItcmVzdWx0LXRlc3QtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItcmVzdWx0LXVua25vd24tcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItcmVzdWx0LXZlcnNpb24tcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItcmVzdWx0LXlhbWwtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItcmVzdWx0ZmFjdG9yeS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1zY2hlZHVsZXItcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItc2NoZWR1bGVyLWpvYi1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1zY2hlZHVsZXItc3Bpbm5lci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1zb3VyY2UtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItc291cmNlaGFuZGxlci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1zb3VyY2VoYW5kbGVyLWV4ZWN1dGFibGUtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItc291cmNlaGFuZGxlci1maWxlLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLXNvdXJjZWhhbmRsZXItaGFuZGxlLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLXNvdXJjZWhhbmRsZXItcGVybC1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1zb3VyY2VoYW5kbGVyLXJhd3RhcC1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci15YW1saXNoLXJlYWRlci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci15YW1saXNoLXdyaXRlci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXN0L2xpYnRlc3QtaGFybmVzcy1wZXJsXzMuNDIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidGVzdC9saWJ0ZXN0LWhhcm5lc3MtcGVybF8zLjQyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5YmE1OTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidGVzdC9saWJ0ZXN0LWhhcm5lc3MtcGVybF8zLjQyLmJiCkBAIC0wLDAgKzEsMTIwIEBACisjIE5PVEU6CisjICAgICBZb3Ugc2hvdWxkIHVzZSBwZXJsLW1vZHVsZS10ZXN0LWhhcm5lc3MgaW5zdGVhZCBvZiB0aGlzIHBhY2thZ2UsCisjICAgICB1bmxlc3MgeW91IHNwZWNpZmljYWxseSBuZWVkIGEgbmV3ZXIgdmVyc2lvbiB0aGFuIHdoYXQgaXMgcHJvdmlkZWQKKyMgICAgIGJ5IHBlcmwgaW4gb2UtY29yZS4KKworU1VNTUFSWSA9ICJUZXN0OjpIYXJuZXNzIC0gUnVuIFBlcmwgc3RhbmRhcmQgdGVzdCBzY3JpcHRzIHdpdGggc3RhdGlzdGljcyIKK0RFU0NSSVBUSU9OID0gIkFsdGhvdWdoLCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCB0aGUgVGVzdDo6SGFybmVzcyBcCitkaXN0cmlidXRpb24gdGFrZXMgaXRzIG5hbWUgZnJvbSB0aGlzIG1vZHVsZSBpdCBub3cgZXhpc3RzIG9ubHkgdG8gcHJvdmlkZSBcCitUQVA6Okhhcm5lc3Mgd2l0aCBhbiBpbnRlcmZhY2UgdGhhdCBpcyBzb21ld2hhdCBiYWNrd2FyZHMgY29tcGF0aWJsZSBcCit3aXRoIFRlc3Q6Okhhcm5lc3MgMi54eC4gSWYgeW91J3JlIHdyaXRpbmcgbmV3IGNvZGUgY29uc2lkZXIgdXNpbmcgXAorVEFQOjpIYXJuZXNzIGRpcmVjdGx5IGluc3RlYWQuIFwKK1wKK0VtdWxhdGlvbiBpcyBwcm92aWRlZCBmb3IgcnVudGVzdHMgYW5kIGV4ZWN1dGVfdGVzdHMgYnV0IHRoZSBcCitwbHVnZ2FibGUgJ1N0cmFwcycgaW50ZXJmYWNlIHRoYXQgcHJldmlvdXMgdmVyc2lvbnMgb2YgVGVzdDo6SGFybmVzcyBcCitzdXBwb3J0ZWQgaXMgbm90IHJlcHJvZHVjZWQgaGVyZS4gU3RyYXBzIGlzIG5vdyBhdmFpbGFibGUgYXMgYSBzdGFuZCBcCithbG9uZSBtb2R1bGU6IFRlc3Q6Okhhcm5lc3M6OlN0cmFwcy4gXAorXAorU2VlIFRBUDo6UGFyc2VyLCBUQVA6Okhhcm5lc3MgZm9yIHRoZSBtYWluIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgXAorZGlzdHJpYnV0aW9uLiIKKworU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwOi8vdGVzdGFueXRoaW5nLm9yZyIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9Mjk7ZW5kbGluZT0zMDttZDU9YjA4ZGI0MzYwZWVjMTE5ZTg3NWRkZGQ3Y2I4YTVkZGQiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9ML0xFL0xFT05UL1Rlc3QtSGFybmVzcy0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiYzc5NDkwNjQ3M2Y4OGQ2Yjc0MTk0ZTJkNTZmMTZiZDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGZkOTBkNGVmZWE4MmQ2ZTI2MmU2OTMzNzU5ZTg1ZDI3Y2JjZmE0MDkxYjE0YmY0MDQyYWUyMGJhYjUyOGU1MyIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiVGVzdFwtSGFybmVzc1wtKD9QPHB2ZXI+KFxkK1wuXGQrKSkoPyFfXGQrKS50YXIiCisKK1MgPSAiJHtXT1JLRElSfS9UZXN0LUhhcm5lc3MtJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgcGVybC1tb2R1bGUtYmVuY2htYXJrIFwKKyIKKworUlBST1ZJREVTXyR7UE59ICs9ICJsaWJhcHAtcHJvdmUtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYmFwcC1wcm92ZS1zdGF0ZS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGliYXBwLXByb3ZlLXN0YXRlLXJlc3VsdC1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGliYXBwLXByb3ZlLXN0YXRlLXJlc3VsdC10ZXN0LXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtYmFzZS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlidGFwLWZvcm1hdHRlci1iYXNlLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtZm9ybWF0dGVyLWNvbG9yLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtZm9ybWF0dGVyLWNvbnNvbGUtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1mb3JtYXR0ZXItY29uc29sZS1wYXJhbGxlbHNlc3Npb24tcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1mb3JtYXR0ZXItY29uc29sZS1zZXNzaW9uLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtZm9ybWF0dGVyLWZpbGUtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1mb3JtYXR0ZXItZmlsZS1zZXNzaW9uLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtZm9ybWF0dGVyLXNlc3Npb24tcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1oYXJuZXNzLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtaGFybmVzcy1lbnYtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1vYmplY3QtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItYWdncmVnYXRvci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1ncmFtbWFyLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLWl0ZXJhdG9yLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLWl0ZXJhdG9yLWFycmF5LXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLWl0ZXJhdG9yLXByb2Nlc3MtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItaXRlcmF0b3Itc3RyZWFtLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLWl0ZXJhdG9yZmFjdG9yeS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1tdWx0aXBsZXhlci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1yZXN1bHQtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzc2VyLXJlc3VsdC1iYWlsb3V0LXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLXJlc3VsdC1jb21tZW50LXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLXJlc3VsdC1wbGFuLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLXJlc3VsdC1wcmFnbWEtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItcmVzdWx0LXRlc3QtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItcmVzdWx0LXVua25vd24tcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItcmVzdWx0LXZlcnNpb24tcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItcmVzdWx0LXlhbWwtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItcmVzdWx0ZmFjdG9yeS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1zY2hlZHVsZXItcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItc2NoZWR1bGVyLWpvYi1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1zY2hlZHVsZXItc3Bpbm5lci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1zb3VyY2UtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItc291cmNlaGFuZGxlci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1zb3VyY2VoYW5kbGVyLWV4ZWN1dGFibGUtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnRhcC1wYXJzZXItc291cmNlaGFuZGxlci1maWxlLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLXNvdXJjZWhhbmRsZXItaGFuZGxlLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJ0YXAtcGFyc2VyLXNvdXJjZWhhbmRsZXItcGVybC1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci1zb3VyY2VoYW5kbGVyLXJhd3RhcC1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci15YW1saXNoLXJlYWRlci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlidGFwLXBhcnNlci15YW1saXNoLXdyaXRlci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisJIyB0aGVzZSB0ZXN0cyBhcmUgaW5hcHByb3ByaWF0ZSBvbiB0YXJnZXQKKwlybSAtcmYgJHtCfS90LzAwMC1sb2FkLnQKKwlybSAtcmYgJHtCfS90L3N0YXRlLnQKKwkjIHRoZXNlIHRlc3RzIHJlcXVpcmUgIi1UIiAodGFpbnQpIG9wdGlvbiBvbiBjb21tYW5kIGxpbmUKKwlybSAtcmYgJHtCfS90L2FnZ3JlZ2F0b3IudAorCXJtIC1yZiAke0J9L3QvYmFpbG91dC50CisJcm0gLXJmICR7Qn0vdC9iYXNlLnQKKwlybSAtcmYgJHtCfS90L2NhbGxiYWNrcy50CisJcm0gLXJmICR7Qn0vdC9lcnJvcnMudAorCXJtIC1yZiAke0J9L3QvbmVzdGVkLnQKKwlybSAtcmYgJHtCfS90L29iamVjdC50CisJcm0gLXJmICR7Qn0vdC9wcmVtYXR1cmUtYmFpbG91dC50CisJcm0gLXJmICR7Qn0vdC9yZXN1bHRzLnQKKwlybSAtcmYgJHtCfS90L3N0cmVhbXMudAorCXJtIC1yZiAke0J9L3QveWFtbGlzaC1vdXRwdXQudAorCXJtIC1yZiAke0J9L3QvY29tcGF0L3ZlcnNpb24udAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0vdXNyL2xvY2FsL2JpbgorCSMgZG8gbm90IGNsb2JiZXIgcGVybC1taXNjIC91c3IvYmluL3Byb3ZlCisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vYmluL3Byb3ZlICR7RH0vdXNyL2xvY2FsL2Jpbi8KKwlybSAtcmYgJHtEfSR7YmluZGlyfS9wcm92ZQorCXJtIC1yZiAke0R9JHtiaW5kaXJ9Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIvdXNyL2xvY2FsL2Jpbi9wcm92ZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlieG1sL2xpYnhtbC1saWJ4bWwtcGVybF8yLjAxMjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlieG1sL2xpYnhtbC1saWJ4bWwtcGVybF8yLjAxMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4Y2MyNjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnhtbC9saWJ4bWwtbGlieG1sLXBlcmxfMi4wMTI5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIGludGVyZmFjZSB0byB0aGUgbGlieG1sMiBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgaXMgYW4gaW50ZXJmYWNlIHRvIGxpYnhtbDIsIHByb3ZpZGluZyBYTUwgYW5kIEhUTUwgcGFyc2VycyBcCi13aXRoIERPTSwgU0FYIGFuZCBYTUxSZWFkZXIgaW50ZXJmYWNlcywgYSBsYXJnZSBzdWJzZXQgb2YgRE9NIExheWVyIDMgXAotaW50ZXJmYWNlIGFuZCBhIFhNTDo6WFBhdGgtbGlrZSBpbnRlcmZhY2UgdG8gWFBhdGggQVBJIG9mIGxpYnhtbDIuIFwKLVRoZSBtb2R1bGUgaXMgc3BsaXQgaW50byBzZXZlcmFsIHBhY2thZ2VzIHdoaWNoIGFyZSBub3QgZGVzY3JpYmVkIGluIHRoaXMgXAotc2VjdGlvbjsgdW5sZXNzIHN0YXRlZCBvdGhlcndpc2UsIHlvdSBvbmx5IG5lZWQgdG8gdXNlIFhNTDo6TGliWE1MOyBpbiBcCi15b3VyIHByb2dyYW1zLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L1hNTC1MaWJYTUwtMS45OS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMHxHUEx2MSsiCi1ERVBFTkRTICs9ICJsaWJ4bWwyIFwKLSAgICAgICAgbGlieG1sLXNheC1wZXJsLW5hdGl2ZSBcCi0gICAgICAgIHpsaWIgXAotIgotUkRFUEVORFNfJHtQTn0gKz0gImxpYnhtbDIgXAotICAgICAgICBsaWJ4bWwtc2F4LXBlcmwgXAotICAgICAgICBsaWJ4bWwtc2F4LWJhc2UtcGVybCBcCi0gICAgICAgIHpsaWIgXAotIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1MvU0gvU0hMT01JRi9YTUwtTGliWE1MLSR7UFZ9LnRhci5nejtuYW1lPWxpYnhtbCBcCi0gICAgZmlsZTovL2Rpc2FibGUtbGlieG1sMi1jaGVjay5wYXRjaCBcCi0gICAgZmlsZTovL2ZpeC1DQVRBTE9HLWNvbmRpdGlvbmFsLWNvbXBpbGUucGF0Y2ggXAotICAgIGZpbGU6Ly91c2luZy1ET0NCLWNvbmRpdGlvbmFsLnBhdGNoIFwKLSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PTY0ZWRhMWJjMTM1ZjBlY2UxZDExODdmMmE4YWM4MmMxIFwKLSAgICBmaWxlOi8vTElDRU5TRTttZDU9OTc4NzFiZGUxNTBkYWViNWU2MWFkOTUxMzdmZjI0NDYgXAotIgotU1JDX1VSSVtsaWJ4bWwubWQ1c3VtXSA9ICI1ODA2YjY5ZDU0YTJkNzg4NGI4ZDIyYjM5NTg4ODQzNiIKLVNSQ19VUklbbGlieG1sLnNoYTI1NnN1bV0gPSAiNWNhMDI2OWJhMDY4MDBjODQwNjFhN2YzMzMzYzg1ZmFiNTU4NGQ2OWNkN2I0ZTA2NDE5NjNkYTdmZDM2YjM2NiIKLQotUyA9ICIke1dPUktESVJ9L1hNTC1MaWJYTUwtJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1FWFRSQV9DUEFORkxBR1MgPSAiSU5DPS1JJHtTVEFHSU5HX0lOQ0RJUn0vbGlieG1sMiBMSUJTPS1MJHtTVEFHSU5HX0xJQkRJUn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1DRkxBR1MgKz0gIiAtRF9HTlVfU09VUkNFICIKLUJVSUxEX0NGTEFHUyArPSAiIC1EX0dOVV9TT1VSQ0UgIgotCi1GSUxFU18ke1BOfS1kYmcgPSsgIiR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9YTUwvTGliWE1MLy5kZWJ1Zy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlieG1sL2xpYnhtbC1saWJ4bWwtcGVybF8yLjAxMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlieG1sL2xpYnhtbC1saWJ4bWwtcGVybF8yLjAxMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYxODQwMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ4bWwvbGlieG1sLWxpYnhtbC1wZXJsXzIuMDEzMi5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIlBlcmwgaW50ZXJmYWNlIHRvIHRoZSBsaWJ4bWwyIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBpcyBhbiBpbnRlcmZhY2UgdG8gbGlieG1sMiwgcHJvdmlkaW5nIFhNTCBhbmQgSFRNTCBwYXJzZXJzIFwKK3dpdGggRE9NLCBTQVggYW5kIFhNTFJlYWRlciBpbnRlcmZhY2VzLCBhIGxhcmdlIHN1YnNldCBvZiBET00gTGF5ZXIgMyBcCitpbnRlcmZhY2UgYW5kIGEgWE1MOjpYUGF0aC1saWtlIGludGVyZmFjZSB0byBYUGF0aCBBUEkgb2YgbGlieG1sMi4gXAorVGhlIG1vZHVsZSBpcyBzcGxpdCBpbnRvIHNldmVyYWwgcGFja2FnZXMgd2hpY2ggYXJlIG5vdCBkZXNjcmliZWQgaW4gdGhpcyBcCitzZWN0aW9uOyB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgeW91IG9ubHkgbmVlZCB0byB1c2UgWE1MOjpMaWJYTUw7IGluIFwKK3lvdXIgcHJvZ3JhbXMuIgorCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvWE1MLUxpYlhNTC0xLjk5LyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wfEdQTHYxKyIKK0RFUEVORFMgKz0gImxpYnhtbDIgXAorICAgICAgICBsaWJ4bWwtc2F4LXBlcmwtbmF0aXZlIFwKKyAgICAgICAgemxpYiBcCisiCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgIGxpYnhtbDIgXAorICAgIGxpYnhtbC1zYXgtcGVybCBcCisgICAgbGlieG1sLXNheC1iYXNlLXBlcmwgXAorICAgIHBlcmwtbW9kdWxlLWVuY29kZSBcCisgICAgcGVybC1tb2R1bGUtZGF0YS1kdW1wZXIgXAorICAgIHpsaWIgXAorIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1MvU0gvU0hMT01JRi9YTUwtTGliWE1MLSR7UFZ9LnRhci5nejtuYW1lPWxpYnhtbCBcCisgICAgZmlsZTovL2Rpc2FibGUtbGlieG1sMi1jaGVjay5wYXRjaCBcCisgICAgZmlsZTovL2ZpeC1DQVRBTE9HLWNvbmRpdGlvbmFsLWNvbXBpbGUucGF0Y2ggXAorICAgIGZpbGU6Ly91c2luZy1ET0NCLWNvbmRpdGlvbmFsLnBhdGNoIFwKKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PTY0ZWRhMWJjMTM1ZjBlY2UxZDExODdmMmE4YWM4MmMxIFwKKyAgICBmaWxlOi8vTElDRU5TRTttZDU9OTc4NzFiZGUxNTBkYWViNWU2MWFkOTUxMzdmZjI0NDYgXAorIgorU1JDX1VSSVtsaWJ4bWwubWQ1c3VtXSA9ICI0MzU0NmZkOWEzOTc0ZjE5MzIzZjlmYjA0ODYxZWNlOSIKK1NSQ19VUklbbGlieG1sLnNoYTI1NnN1bV0gPSAiNzIxNDUyZTMxMDNjYTE4OGY1OTY4YWIwNmQ1YmEyOWZlOGUwMGU0OWY0NzY3NzkwODgyMDk1MDUwMzEyZDQ3NiIKKworUyA9ICIke1dPUktESVJ9L1hNTC1MaWJYTUwtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitFWFRSQV9DUEFORkxBR1MgPSAiSU5DPS1JJHtTVEFHSU5HX0lOQ0RJUn0vbGlieG1sMiBMSUJTPS1MJHtTVEFHSU5HX0xJQkRJUn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitDRkxBR1MgKz0gIiAtRF9HTlVfU09VUkNFICIKK0JVSUxEX0NGTEFHUyArPSAiIC1EX0dOVV9TT1VSQ0UgIgorCitGSUxFU18ke1BOfS1kYmcgPSsgIiR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9YTUwvTGliWE1MLy5kZWJ1Zy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vUkVBRE1FCmluZGV4IDQzNzQwZjYuLjA1NjZlNDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vUkVBRE1FCkBAIC0xNywxMiArMTcsMTIgQEAKIAogCVVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUKIAlsYXllcnM6IG1ldGEKLQlicmFuY2g6IHJvY2tvIAorCWJyYW5jaDogbWFzdGVyCiAJcmV2aXNpb246IEhFQUQKIAogCVVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvbWV0YS1vcGVuZW1iZWRkZWQKIAlsYXllcnM6IG1ldGEtb2UKLQlicmFuY2g6ICByb2NrbworCWJyYW5jaDogbWFzdGVyCiAJcmV2aXNpb246IEhFQUQKIAogUGxlYXNlIGZvbGxvdyB0aGUgcmVjb21tZW5kZWQgc2V0dXAgcHJvY2VkdXJlcyBvZiB5b3VyIE9FIGRpc3RyaWJ1dGlvbi4KQEAgLTQ3LDggKzQ3LDcgQEAKIE1haW50ZW5hbmNlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1haW50YWluZXJzOgorTGF5ZXIgTWFpbnRhaW5lcnM6CiAgICAgICAgIFRpbSAibW90by10aW1vIiBPcmxpbmcgPFRpY29UaW1vQGdtYWlsLmNvbT4KLSAgICAgICAgUGF1bCAiYmx1ZWxpZ2h0bmluZyIgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgogICAgICAgICBEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL2NsYXNzZXMvcHlwaS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9jbGFzc2VzL3B5cGkuYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVkN2FiMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL2NsYXNzZXMvcHlwaS5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotZGVmIHB5cGlfcGFja2FnZShkKToKLSAgICBicG4gPSBkLmdldFZhcignQlBOJykKLSAgICBpZiBicG4uc3RhcnRzd2l0aCgncHl0aG9uLScpOgotICAgICAgICByZXR1cm4gYnBuWzc6XQotICAgIGVsaWYgYnBuLnN0YXJ0c3dpdGgoJ3B5dGhvbjMtJyk6Ci0gICAgICAgIHJldHVybiBicG5bODpdCi0gICAgcmV0dXJuIGJwbgotCi1QWVBJX1BBQ0tBR0UgPz0gIiR7QHB5cGlfcGFja2FnZShkKX0iCi1QWVBJX1BBQ0tBR0VfRVhUID89ICJ0YXIuZ3oiCi0KLWRlZiBweXBpX3NyY191cmkoZCk6Ci0gICAgcGFja2FnZSA9IGQuZ2V0VmFyKCdQWVBJX1BBQ0tBR0UnKQotICAgIHBhY2thZ2VfZXh0ID0gZC5nZXRWYXIoJ1BZUElfUEFDS0FHRV9FWFQnKQotICAgIHB2ID0gZC5nZXRWYXIoJ1BWJykKLSAgICByZXR1cm4gJ2h0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvJXMvJXMvJXMtJXMuJXMnICUgKHBhY2thZ2VbMF0sIHBhY2thZ2UsIHBhY2thZ2UsIHB2LCBwYWNrYWdlX2V4dCkKLQotUFlQSV9TUkNfVVJJID89ICIke0BweXBpX3NyY191cmkoZCl9IgotCi1IT01FUEFHRSA/PSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS8ke1BZUElfUEFDS0FHRX0vIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1TUkNfVVJJICs9ICIke1BZUElfU1JDX1VSSX0iCi1TID0gIiR7V09SS0RJUn0vJHtQWVBJX1BBQ0tBR0V9LSR7UFZ9IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPz0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvJHtQWVBJX1BBQ0tBR0V9LyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID89ICIvJHtQWVBJX1BBQ0tBR0V9Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9jb25mL2xheWVyLmNvbmYKaW5kZXggZDUzNjc3Zi4uNzA4OTA3MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9jb25mL2xheWVyLmNvbmYKQEAgLTE0LDQgKzE0LDYgQEAKIAogTEFZRVJERVBFTkRTX21ldGEtcHl0aG9uID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgogCitMQVlFUlNFUklFU19DT01QQVRfbWV0YS1weXRob24gPSAic3VtbyIKKwogTElDRU5TRV9QQVRIICs9ICIke0xBWUVSRElSfS9saWNlbnNlcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvZ2F0ZW9uZS9nYXRlb25lX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvZ2F0ZW9uZS9nYXRlb25lX2dpdC5iYgppbmRleCA4YjJhMTkyLi40NTc3ODczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dhdGVvbmUvZ2F0ZW9uZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nYXRlb25lL2dhdGVvbmVfZ2l0LmJiCkBAIC02OSw3ICs2OSw2IEBACiAgICAgICAgICAgICAgICAgICBweXRob24tcGtndXRpbCBcCiAgICAgICAgICAgICAgICAgICBweXRob24tcHlvcGVuc3NsIFwKICAgICAgICAgICAgICAgICAgIHB5dGhvbi1yZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcmVhZGxpbmUgXAogICAgICAgICAgICAgICAgICAgcHl0aG9uLXNldHVwdG9vbHMgXAogICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIFwKICAgICAgICAgICAgICAgICAgIHB5dGhvbi1zaW1wbGVqc29uIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbi1tcHJwYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9weXRob24tbXBycGMuaW5jCmluZGV4IGI5NTM1ZmMuLjA1ZmJhZTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbi1tcHJwYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uLW1wcnBjLmluYwpAQCAtNyw3ICs3LDcgQEAKIERFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1nZXZlbnQiCiBSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWdldmVudCAke1BZVEhPTl9QTn0tbXNncGFjayAke1BZVEhPTl9QTn0tZ3NvY2tldHBvb2wiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI2NmU2Y2YzNjdlYTcxY2ZlZDg5MzhhMjdlOWMxODNjMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1Y2NhZGE2NTI2ZDQ4YWM0ZDk1YTdiYmRjMDkzNTg2NjYzODQxNTYwMzM3MDMyYTUwM2Y1N2NjZmFlNjlkN2JmIgorU1JDX1VSSVttZDVzdW1dID0gImFjZGUxZjM0NjQxMTk5N2Q3NmFiODk3OTBhMzU2ODIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4ZGRkNDdlN2EyZmIyZDNiMjAzZmNjNTIyNDQzZWU1YmU1NmM4ZjdlMmM2ZDkxNWMwNDc0NDU5NTFjZWYxZmIiCiAKIGluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uLW1wcnBjXzAuMS4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbi1tcHJwY18wLjEuMTYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbi1tcHJwY18wLjEuMTQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbi1tcHJwY18wLjEuMTYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbjMtbXBycGNfMC4xLjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uMy1tcHJwY18wLjEuMTYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbjMtbXBycGNfMC4xLjE0LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9weXRob24zLW1wcnBjXzAuMS4xNi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uLXB5cm80XzQuNjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24tcHlybzRfNC42Mi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQxYzRmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24tcHlybzRfNC42Mi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIFJlbW90ZSBPYmplY3RzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNzhhY2VmMzc1ZTE3YTNiZmYwM2JkMGY3OGM1MzIyMCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZlMmZlZjNkYzhiMjk3NzNhODdhYmJhYThlOWFiZTE1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzMDFlZGZiMmJjNDc3NjhiNzIyMmE2OGNhZThkZThiZTc5NmQxZDlmNjFjZGJkMWFmOTAzOTk4NWVkNTAwOWMiCi0KLVBZUElfUEFDS0FHRSA9ICJQeXJvNCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICR7UFlUSE9OX1BOfS1zZWxlY3RvcnMzNCBcCi0gICAgJHtQWVRIT05fUE59LXNlcnBlbnQgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICR7UFlUSE9OX1BOfS16bGliIFwKLSAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24tcHlybzRfNC42My5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5cm80L3B5dGhvbi1weXJvNF80LjYzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNjgzZTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24tcHlybzRfNC42My5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIlB5dGhvbiBSZW1vdGUgT2JqZWN0cyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Mzc4YWNlZjM3NWUxN2EzYmZmMDNiZDBmNzhjNTMyMjAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMWQ3NzJiNjdiZjdjNmY3NWZhMzE3NGJjOTVjODgzOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2N2QyYjM0MTU2NjE5YmEzN2U5MjEwMGFmOTVhYWRlODEyOWRkMmI3MzI3ZWIwNTgyMWQ0Mzg4NzQ1MWY3ZDdiIgorCitQWVBJX1BBQ0tBR0UgPSAiUHlybzQiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tc2VsZWN0b3JzMzQgXAorICAgICR7UFlUSE9OX1BOfS1zZXJwZW50IFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAke1BZVEhPTl9QTn0temxpYiBcCisgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdGhyaWZ0L3B5dGhvbi10aHJpZnRfMC4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdGhyaWZ0L3B5dGhvbi10aHJpZnRfMC4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmY2MWJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXRocmlmdC9weXRob24tdGhyaWZ0XzAuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgQXBhY2hlIFRocmlmdCBSUEMgc3lzdGVtIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTI2YTIwMDlkZGNiN2M0MTYyZjhiYWZkNWVmNzNjNjcwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzZiYjc2OGEyMTAyNTdkZDIwMzkyMzExMDA0MmU1NjAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjdmNmMwOTE1NTMyMTE2OWFmMDNmOWZiMjBkYzE1YTRhMGM3NDgxZTdjMzM0YTViYThmN2YwZDg2NDYzMzIwOSIKLQotUFlQSV9QQUNLQUdFX0VYVCA9ICJ6aXAiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdGhyaWZ0L3B5dGhvbi10aHJpZnRfMC4xMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdGhyaWZ0L3B5dGhvbi10aHJpZnRfMC4xMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNDdlYzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi10aHJpZnQvcHl0aG9uLXRocmlmdF8wLjExLjAuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBBcGFjaGUgVGhyaWZ0IFJQQyBzeXN0ZW0iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9ZTM2NDFhZTFhMjZjZjVjMTJhM2E3MWJkMzAzMGFiMGUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNjE2NWQ1YzgwZTZiMTAxZGJlOWZjZjdlZjUyNGQ1MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZDU5YWM0ZmRjYjJjNTgwMzdlYmQ0YTlkYTVmOWE0OWUzZTAzNGJmNzViM2YyNmQ5ZmU0OGJhM2Q4ODA2ZTZiIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHlydG1fMC40LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5cnRtXzAuNC4yLmJiCmluZGV4IDcyZjA5MjEuLjlkODUxYWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHlydG1fMC40LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXJ0bV8wLjQuMi5iYgpAQCAtMTAsNyArMTAsMjcgQEAKIAogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKIAorUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzICR7UE59LXNhbXBsZXMiCisKK0ZJTEVTXyR7UE59LXNhbXBsZXMgKz0gIiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcnRtL3NhbXBsZXMgXAorIgorCitGSUxFU18ke1BOfS10ZXN0cyArPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ydG0vdGVzdHMgXAorIgorCiBSREVQRU5EU18ke1BOfSArPSAiXAogICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCiAgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgIgorIgorCitSREVQRU5EU18ke1BOfS1zYW1wbGVzICs9ICIgXAorICAgICR7UE59IFwKKyIKKworUkRFUEVORFNfJHtQTn0tdGVzdHMgKz0gIiBcCisgICAgJHtQTn0gXAorICAgICR7UFlUSE9OX1BOfS11bml0dGVzdCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbGVtYmljLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFsZW1iaWMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYTY0MTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbGVtYmljLmluYwpAQCAtMCwwICsxLDE1IEBACitERVNDUklQVElPTiA9ICJBIGRhdGFiYXNlIG1pZ3JhdGlvbiB0b29sIGZvciBTUUxBbGNoZW15IgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNWYxMzYxMjk2ODM1ZmY5NGJkYTczZGI3ZGQzMTJhNiIKKworU1JDX1VSSVttZDVzdW1dID0gIjVjZmVmNTg2NDFjOWE5NGQ0YTVkNTQ3ZTk1MWE3ZGRhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEzYjg2MTE3ODhhY2YwZDdiNjE3Nzc1ZGI1YzJhZTI2NTU0YTZkNDI2M2M1OTBlZjYyOGQ0NDhmZDA1YWVmNTYiCisKK1BZUElfUEFDS0FHRSA9ICJhbGVtYmljIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldXRpbCBcCisgICAgJHtQWVRIT05fUE59LWVkaXRvciBcCisgICAgJHtQWVRIT05fUE59LW1ha28gXAorICAgICR7UFlUSE9OX1BOfS1zcWxhbGNoZW15IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFsZW1iaWNfMC45LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbGVtYmljXzAuOS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmY2IyYjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbGVtYmljXzAuOS44LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWFsZW1iaWMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc24xY3J5cHRvLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG8uaW5jCmluZGV4IDQxYjczNDIuLjVjMzc5OTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG8uaW5jCkBAIC02LDggKzYsMTggQEAKIAogUFlQSV9QQUNLQUdFID0gImFzbjFjcnlwdG8iCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI5N2Q1NDY2NWMzOTdiNzJiMTY1NzY4Mzk4ZGZkZDg3NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwODc0OTgxMzI5Y2ZlYmIzNjZkNjU4NGMzZDE2ZTkxM2YyYTBlYjAyNmM5NDYzZWZjYzRhYWY0MmE5ZDk0ZDcwIgorU1JDX1VSSVttZDVzdW1dID0gImRlMzUyMDQyNmU4MWE2NTgxMzUyZDQzNjZmMzEwZWIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlkNWMyMDQ0MWJhZjBjYjYwYTRhYzM0Y2M0NDdjNmMxODkwMjRiNmI0YzZjZDc4NzcwMzRmNDk2NWM0NjRlNDkiCiAKIGluaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWNvZGVjcyBcCisgICAgJHtQWVRIT05fUE59LWNyeXB0IFwKKyAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisiCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0b18wLjIzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc24xY3J5cHRvXzAuMjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFmNjBjMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc24xY3J5cHRvXzAuMjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1hc24xY3J5cHRvLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0b18wLjI0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc24xY3J5cHRvXzAuMjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmFhY2UyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0b18wLjI0LjAuYmIKQEAgLTAsMCArMSw3IEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWFzbjFjcnlwdG8uaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyAgICAke1BZVEhPTl9QTn0tdGV4dHV0aWxzIFwgCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWQuaW5jCmluZGV4IDRjYjFhM2MuLmVhZDJiNmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWQuaW5jCkBAIC00LDE3ICs0LDI4IEBACiBMSUNFTlNFID0gIkxHUEwtMi4xIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZjY1ZTRlYTgyOTBlYzAzMjMyMDQ2MDkwNWFmYjgyOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0OTJjMmEyMDQ0YWRiZjZhODRhNjcxYjc1MjJlOTI5NWFkMmY2YTdjNzgxYjg5OTAxNDMwOGRiMjUzMTJkZDM1IgorU1JDX1VSSVttZDVzdW1dID0gIjdkN2RjMDAwYjI1ZjBjYmZjY2EyMGNiOWE4ZGMwMzEwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1Y2ZhZTQ3YWFjMTljN2I0MDdiNzA5NTQxMGU4OTVlODM2ZjIyODVjY2YxMjIwMzM2YWZiYTc0NGNjNGM1ZjIiCiAKIGluaGVyaXQgcHlwaQogCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCisKK0ZJTEVTXyR7UE59LXRlc3RzICs9ICIgXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2FzdHJvaWQvdGVzdCogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2FzdHJvaWQvX19weWNhY2hlX18vdGVzdCogXAorIgorCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKICAgICAke1BZVEhPTl9QTn0tZGlzdHV0aWxzIFwKICAgICAke1BZVEhPTl9QTn0tbGF6eS1vYmplY3QtcHJveHkgXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKICAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCiAgICAgJHtQWVRIT05fUE59LXdyYXB0IFwKLSAgICAke1BZVEhPTl9QTn0tcmUgXAogICAgICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzIFwKICIKKworUkRFUEVORFNfJHtQTn0tdGVzdHNfY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKKyAgICAke1BZVEhPTl9QTn0teG1sIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWRfMS41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkXzEuNS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2EwYTVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWRfMS41LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYXN0cm9pZC5pbmMKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIke1BZVEhPTl9QTn0tZW51bTM0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWltcG9ydGxpYiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zaW5nbGVkaXNwYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZF8xLjYuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWRfMS42LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg3Mzk0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWRfMS42LjMuYmIKQEAgLTAsMCArMSwxMCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1hc3Ryb2lkLmluYworCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWVudW0zNCBcCisgICAgJHtQWVRIT05fUE59LWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlIFwKKyAgICAke1BZVEhPTl9QTn0tcmUgXAorICAgICR7UFlUSE9OX1BOfS1zaW5nbGVkaXNwYXRjaCBcCisgICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0ci5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDkzZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0ci5pbmMKQEAgLTAsMCArMSw5IEBACitERVNDUklQVElPTiA9ICJTaW1wbGUgZGVjb3JhdG9yIHRvIHNldCBhdHRyaWJ1dGVzIG9mIHRhcmdldCBmdW5jdGlvbiBvciBjbGFzcyBpbiBhIERSWSB3YXkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZGVuaXMtcnl6aGtvdi9hdHRyIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9NTk4MDVhMDI4NWY0ZDJiNmFiZGVkYWU3M2RiNGY1YzEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2OGI5YTUwMzk5MTI0MWZiMmRmMjg0ODg2ODZiMGUxZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MDkxNTQ4MDU4ZDE3ZjEzMjU5NmU2MWZhNzUxOGU1MDRmNzZiOWE0YzYxY2E3ZDg2ZTFmOTZkYmY3ZDQ3NzVkIgorCitpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0dHJfMC4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyXzAuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OWQ2Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyXzAuMy4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1hdHRyLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0cnMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0cnMuaW5jCmluZGV4IGVkZGU3OWUuLmMyOWYwNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0dHJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRycy5pbmMKQEAgLTMsNyArMywxMiBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kNGFiMjU5NDlhNzNmZTdkNGZkZWU5M2JjYmRiZjhmZiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjQzMTRmNzg0Y2EzMTc0ZDkxOTU2ZGE5ODI4MjQ4OTYwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3OGY1M2UzMmQ3Y2YzNmQ4NTk3YzhhMmM3ZTNjMGFkMjEwZjk3Yjk1MDllMTUyZTRjMzdmYTgwODY5ZjgyM2MiCitTUkNfVVJJW21kNXN1bV0gPSAiZDdhODkwNjNiMmUwZmQzNmJkODIzODljNGQ4MjgyMWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWM3OTYwY2NmZDZhMDA1Y2Q5ZjdiYTg4NGU2MzE2YjVlNDMwYTNmMWE2YzM3YzVmODdkOGI0M2Y4M2I1NGVjOSIKIAogaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IFwKKyAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyIgICAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyc18xNy4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyc18xNy4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ZmRmMTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0cnNfMTcuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWF0dHJzLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0cnNfMTcuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0cnNfMTcuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYmVjMGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyc18xNy40LjAuYmIKQEAgLTAsMCArMSw2IEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWF0dHJzLmluYworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF1dG9tYXQvMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLWRlcGVuZGVuY3ktb24tbTJyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdC8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtZGVwZW5kZW5jeS1vbi1tMnIucGF0Y2gKaW5kZXggMGViYjIyMC4uZDZkZWY5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdC8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtZGVwZW5kZW5jeS1vbi1tMnIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdC8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtZGVwZW5kZW5jeS1vbi1tMnIucGF0Y2gKQEAgLTE1LDEwICsxNSwxMCBAQAogIHNldHVwLnB5IHwgMTAgLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGQzNjBjNjQuLjdiNDE4MGEgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKK0luZGV4OiBBdXRvbWF0LTAuNi4wL3NldHVwLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gQXV0b21hdC0wLjYuMC5vcmlnL3NldHVwLnB5CisrKysgQXV0b21hdC0wLjYuMC9zZXR1cC5weQogQEAgLTQsMTQgKzQsNiBAQCBTZXR1cCBmaWxlIGZvciBhdXRvbWF0CiAgCiAgZnJvbSBzZXR1cHRvb2xzIGltcG9ydCBzZXR1cCwgZmluZF9wYWNrYWdlcwpAQCAtNDYsNyArNDYsNCBAQAogLSAgICAgICAgJ20ycicsCiAgICAgIF0sCiAgICAgIGluc3RhbGxfcmVxdWlyZXM9WwotICAgICAgICAgImF0dHJzPj0xNi4xLjAiLAotLS0gCi0yLjcuNAotCisgICAgICAgICAiYXR0cnMiLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uLmluYwppbmRleCBlYWViMDIwLi5hMzI5OWU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uLmluYwpAQCAtMSwxOCArMSw0MSBAQAogREVTQ1JJUFRJT04gPSAiU0RLIGZvciBjb25uZWN0aW5nIHRvIEFXUyBJb1QgdXNpbmcgUHl0aG9uLiIKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT05YWM0OTkwMWI4MzNlNzY5YzdkNmYyMWU4ZGJkN2IzMCIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCAmIChFUEwtMS4wIHwgRURMLTEuMCkiCitMSUNFTlNFXyR7UE59LWV4YW1wbGVzID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICBmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTlhYzQ5OTAxYjgzM2U3NjljN2Q2ZjIxZThkYmQ3YjMwIFwKKyAgICBmaWxlOi8vQVdTSW9UUHl0aG9uU0RLL2NvcmUvcHJvdG9jb2wvcGFoby9jbGllbnQucHk7ZW5kbGluZT0xNDttZDU9NWEzYzhhMWE0YmI3MWJkOTM0ZjQ1MGVjZmY5NzJhZDkgXAorIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZTY3ODFmNmM0MmJiYzU0N2Q1MDhkNmZhNjcyMGFjOGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmIyODY1ZDRmNTE4Nzk0Yjk2YTgzNGZjODFiNTY4NDI4ZGFhMGVmOTIwMzdkYTJlOTI4OGI0YWY1ZDhkZDczNiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5N2U4Y2YwZDQwZWYzNzY1ZDk3OWMxOWI1MzRhNzE2ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNjhjYmZmMzk2MTQzZTgzN2I0YzIzYjY2MjFkM2I3YWUzNzQyODFhZmM3NWVlZDhlNTFhMjg2MjVkOTEyNWJhIgogCiBpbmhlcml0IHB5cGkKIAogUFlQSV9QQUNLQUdFID0gIkFXU0lvVFB5dGhvblNESyIKIAorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgIGluc3RhbGwgLWQgLW0wNzU1ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9leGFtcGxlcworICAgICAgICBjcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke1N9L3NhbXBsZXMvKiAke0R9JHtkYXRhZGlyfS8ke0JQTn0vZXhhbXBsZXMKKyAgICAgICAgIyB0aGlzIHJlcXVpcmVzIHRoZSBmdWxsIGJsb3duIEFXUyBQeXRob24gU0RLCisgICAgICAgIHJtIC1yICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9leGFtcGxlcy9iYXNpY1B1YlN1YgorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tZXhhbXBsZXMiCisKIFJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1weW9wZW5zc2wgXAorICAgICR7UFlUSE9OX1BOfS1jcnlwdCBcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAogICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LW1hdGggXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKICIKK1JERVBFTkRTXyR7UE59LWV4YW1wbGVzICs9ICIke1BOfSIKKworRklMRVNfJHtQTn0tZXhhbXBsZXMgPSAiJHtkYXRhZGlyfS8ke0JQTn0vZXhhbXBsZXMiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmFlOTc4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MGU5NzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuMy4xLmJiCkBAIC0wLDAgKzEsNCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uLmluYworCitSREVQRU5EU18ke1BOfS1leGFtcGxlcyArPSAiJHtQWVRIT05fUE59LWFyZ3BhcnNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWwuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWwuaW5jCmluZGV4IDVlNmNhM2QuLjRkY2IyNTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbC5pbmMKQEAgLTMsOCArMyw4IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU2ZWVhYWJjOTJjZmMyZDAzZjUzZTc4OTMyNGQ3MjkyIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNjAyMjhiM2NlOTNhMjAzMzU3MTU4YjkwOWFmZThhZTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjAwN2RhZjcxNGQwY2Q1NTI0YmJlNDM2ZTJkNDJiM2MyMGU2OGRhNjYyODk1NTkzNDFlNDhkMmNkNmQyNTgxMSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNTJhNmIxN2ZlNDExMGI5NTY3NWFjZWI5YWY5ZmFiMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4Y2U0Y2I2ZmRkNDM5M2VkZDMyMzIyN2NiYTNhMDc3YmNlYjJhNmNlNTIwMWM5MDJjNjVlNzMwMDQ2ZjQxZjE0IgogCiBQWVBJX1BBQ0tBR0UgPSAiQmFiZWwiCiAKQEAgLTEzLDggKzEzLDEzIEBACiBDTEVBTkJST0tFTiA9ICIxIgogCiBSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY29kZWNzIFwKKyAgICAke1BZVEhPTl9QTn0tZGlmZmxpYiBcCisgICAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCisgICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCiAgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAogICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAogICAgICR7UFlUSE9OX1BOfS1weXR6IFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAogICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWxfMi41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbF8yLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBlYWRjZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbF8yLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1iYWJlbC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsXzIuNS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWxfMi41LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdjMTY2ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsXzIuNS4zLmJiCkBAIC0wLDAgKzEsNiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1iYWJlbC5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJjcnlwdC5pbmMKaW5kZXggNjY3YTNmYi4uNDQ5MDk2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHQuaW5jCkBAIC00LDEyICs0LDE0IEBACiAKIERFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1jZmZpLW5hdGl2ZSIKIAotU1JDX1VSSVttZDVzdW1dID0gIjIwZGE4YjQwNzkwY2FhZDk5YzQwODZkYmE1MzMxNTRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2NDVjOGQwYWQ4NDUzMDhkZTNlYjliZTk4YjZmZDIyYTQ2ZWM1NDEyYmZjNjY0YTQyM2U0MTFjZGQ4ZjU0ODgiCitTUkNfVVJJW21kNXN1bV0gPSAiODQwOGFiYzk3NDQ0NmU2NDg2MmE5NzQyMTA0ZTk3YjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjdlZDFhMzc0YzkxNTVlYzA4NDAyMTRjZTgwNDYxNmRlNDljM2RmOWM1YmM2Njc0MDY4N2MxYzliMWNkOWU4ZCIKIAogaW5oZXJpdCBweXBpCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAogICAgICR7UFlUSE9OX1BOfS1jZmZpIFwKKyAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAogICAgICR7UFlUSE9OX1BOfS1zaXggXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0XzMuMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0XzMuMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDMzMzU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJjcnlwdF8zLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1iY3J5cHQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHRfMy4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHRfMy4xLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEzNmFhNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJjcnlwdF8zLjEuNC5iYgpAQCAtMCwwICsxLDYgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tYmNyeXB0LmluYworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlaGF2ZV8xLjIuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlaGF2ZV8xLjIuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQxYTc5ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWhhdmVfMS4yLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkEgYmVoYXZpb3ItZHJpdmVuIGRldmVsb3BtZW50IGZyYW1ld29yaywgUHl0aG9uIHN0eWxlIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kOTUwNDM5ZThlYTZlZDIzM2U0Mjg4ZjVlMWE0OWMwNiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNhZjRiYzI4ODZkMmJlOTgyZTQxYmZhYmE2MWRhM2JjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgxYjczMWFjNTE4N2UzMWU0YWFkMjU5NDk0NGZhOTE0OTQzNjgzYTk4MTgzMjA4NDZkMDM3YzVlYmQ2ZDVkMGIiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tZGlmZmxpYiBweXRob24tc2V0dXB0b29scyBweXRob24tcGtndXRpbCBweXRob24tbWlzYyBweXRob24tYXJncGFyc2UgcHl0aG9uLXhtbCBweXRob24taW1wb3J0bGliIHB5dGhvbi1lbnVtMzQgcHl0aG9uLXBhcnNlIHB5dGhvbi1wYXJzZS10eXBlIHB5dGhvbi1zaXgiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWhhdmVfMS4yLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWhhdmVfMS4yLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc5NzMwMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlaGF2ZV8xLjIuNi5iYgpAQCAtMCwwICsxLDEwIEBACitTVU1NQVJZID0gIkEgYmVoYXZpb3ItZHJpdmVuIGRldmVsb3BtZW50IGZyYW1ld29yaywgUHl0aG9uIHN0eWxlIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kOTUwNDM5ZThlYTZlZDIzM2U0Mjg4ZjVlMWE0OWMwNiIKKworU1JDX1VSSVttZDVzdW1dID0gIjNmMDVjODU5YTFjNDVmNWVkMzNlOTI1ODE3YWQ4ODdkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NjYyMzI3YWE1MzI5NGMxMzUxYjBhOWMzNjkwOTNjY2VjMWQyMTAyNmYwNTBjM2JkOWIzZTVjY2NmODFhODYiCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24tZGlmZmxpYiBweXRob24tc2V0dXB0b29scyBweXRob24tcGtndXRpbCBweXRob24tbWlzYyBweXRob24tYXJncGFyc2UgcHl0aG9uLXhtbCBweXRob24tZW51bTM0IHB5dGhvbi1wYXJzZSBweXRob24tcGFyc2UtdHlwZSBweXRob24tc2l4IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXkuaW5jCmluZGV4IDdiNmUwZDEuLjM4YTIyZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJpdGFycmF5LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iaXRhcnJheS5pbmMKQEAgLTgsNCArOCw0IEBACiAKIGluaGVyaXQgcHlwaQogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJsaW5rZXIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmxpbmtlci5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFmMzkwOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJsaW5rZXIuaW5jCkBAIC0wLDAgKzEsNyBAQAorREVTQ1JJUFRJT04gPSAiRmFzdCwgc2ltcGxlIG9iamVjdC10by1vYmplY3QgYW5kIGJyb2FkY2FzdCBzaWduYWxpbmcuIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9OTQ2ZDdlODlhZjZmNzczM2FlYWViZWQ1NjM1ZDI2ODIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YjM3MjIzODFmODNjMjgxM2M1MmRlMzAxNmI2OGQzMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NzFhZWUyNWYzOTkyYmQzMjVhZmEzNzcyZjEwNjNkYmRiYmNhOTQ3YTA0MWI4Yjg5NDY2ZGMwMGQ2MDZmOGI2IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ibGlua2VyXzEuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJsaW5rZXJfMS40LmJiCmluZGV4IDBjZTE0MWYuLmJjNDE2NGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJsaW5rZXJfMS40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJsaW5rZXJfMS40LmJiCkBAIC0xLDggKzEsMiBAQAotREVTQ1JJUFRJT04gPSAiRmFzdCwgc2ltcGxlIG9iamVjdC10by1vYmplY3QgYW5kIGJyb2FkY2FzdCBzaWduYWxpbmcuIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9OTQ2ZDdlODlhZjZmNzczM2FlYWViZWQ1NjM1ZDI2ODIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4YjM3MjIzODFmODNjMjgxM2M1MmRlMzAxNmI2OGQzMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NzFhZWUyNWYzOTkyYmQzMjVhZmEzNzcyZjEwNjNkYmRiYmNhOTQ3YTA0MWI4Yjg5NDY2ZGMwMGQ2MDZmOGI2IgotCiBpbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tYmxpbmtlci5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW4uaW5jCmluZGV4IDFkYmM4MDkuLmE3MWM0N2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FuLmluYwpAQCAtMyw3ICszLDE1IEBACiBMSUNFTlNFID0gIkxHUEx2MyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zODEzOGJhYTEwMGQ3MjU5OTM0NTkwODUwYmMwNDA2ZSIKIAotU1JDX1VSSVttZDVzdW1dID0gImIyYTE2NDg4N2MxYzZhMmEyNDkwYjVhZmIzNmUzNmRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NjFiNmNlNzVhN2YwOGI1ODZmNGQyY2FlOGNkYzQwOTg4MTczMWI4NTFmYzQwNWZhMjFjYjE2YmFkMDBkODciCitTUkNfVVJJW21kNXN1bV0gPSAiMzMxMGYwYWEyYTg0OTJkMGZmNjE0ZWNmNjM2ZWM4YTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGE1YzAxZGQ2N2ZlZWRhMzVmODhlNmMxMmVhMTRhYzhjYWJkNDI2YjliZTBjYzVmOWZkMDgzZmU5MGE5ZGJmYyIKIAogUFlQSV9QQUNLQUdFPSJweXRob24tY2FuIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LW1pc2MgXAorICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgICR7UFlUSE9OX1BOfS1zcWxpdGUzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbl8yLjAuMGIxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FuXzIuMC4wYjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjODFhOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FuXzIuMC4wYjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWNhbi5pbmMKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tc3FsaXRlMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbl8yLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbl8yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGVkYjY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FuXzIuMS4wLmJiCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZSBweXRob24tY2FuLmluYworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWFyZ3BhcnNlIFwKKyAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCisgICAgJHtQWVRIT05fUE59LXpsaWIgXAorIiAgICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhc3NhbmRyYS1kcml2ZXIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2Fzc2FuZHJhLWRyaXZlci5pbmMKaW5kZXggYTUyMmU2Ny4uMTY0OGQzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2Fzc2FuZHJhLWRyaXZlci5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2Fzc2FuZHJhLWRyaXZlci5pbmMKQEAgLTgsOCArOCw4IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZWU0MTExMmE0NGZlNzAxNGRjZTMzZTI2NDY4YmE5MyIKIFNSQ05BTUUgPSAiY2Fzc2FuZHJhLWRyaXZlciIKIAotU1JDX1VSSVttZDVzdW1dID0gIjE2NTliMDc0ZTEwYzYxM2U1YmExY2RmOTI5NzRhNTdhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY0M2JlZDBmYWMwOGVlOTE2MzBmMGYzNTU1NmJiNjJjM2I0YjAwN2MyMGQ0ZTZlOGQzNDlmNzY5ZWE2NDgxNTAiCitTUkNfVVJJW21kNXN1bV0gPSAiNWM4YjRhM2FkZmM0ODE4MGU4ZWMzOGI4YzRlOTk2ZmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjFiNjcwZmIyYmE5NWQ1MWQ5MWZhN2I1ODlhYWUzNjY2ZGY0OTQ3MTNmNWQxZWQ3OGJiNWM1MTA3NzhkNzdmMCIKIAogRElTVFVUSUxTX0JVSUxEX0FSR1MgKz0gIiBcCiAgICAgLS1uby1saWJldiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmkuaW5jCmluZGV4IGU1NTBmN2UuLjI2ZGY1YzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmkuaW5jCkBAIC03LDcgKzcsNyBAQAogTElDRU5TRSA9ICJJU0MiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mNzdmNjFkMTRlZTZmZWFjNDIyOGQzZWJkMjZjYzFmMSIKIAotU1JDX1VSSVttZDVzdW1dID0gIjQ4ZTgzNzBkYThiMzcwYTE2ZTIyM2VlOWM3YjZiMDYzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwNTIzZDJlZmI2MDUyM2UxMTNiNDQ2MDIyOThmMDk2MGU5MDAzODhjZjNiYjYwNDNmNjQ1Y2Y1N2VhOWUzZjUiCitTUkNfVVJJW21kNXN1bV0gPSAiMDY4ZmQ1YzNjNjkwYWU0NzUwNGIzZTBiZjRlNTZjNGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWRiYzNmMjAzNDI3ZWVmNTcxZjc5YTc2OTJiYjE2MGEyYjBmN2NjYWEzMTk1M2U5OWJkMTdlMzA3Y2Y2M2Y3ZCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2VydGlmaV8yMDE3LjcuMjcuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmlfMjAxOC4xLjE4LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpXzIwMTcuNy4yNy4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpXzIwMTguMS4xOC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2ZmaS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZmZpLmluYwppbmRleCA4ZGNkYjYzLi5lNjA3MWVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZmZpLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZmZpLmluYwpAQCAtNCwxMSArNCwxMyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTY3N2UyZmRiZjdjZGRhNjFkNmRkMmI1N2RmNTQ3YmYiCiBERVBFTkRTICs9ICJsaWJmZmkgJHtQWVRIT05fUE59LXB5Y3BhcnNlciIKIAotU1JDX1VSSVttZDVzdW1dID0gImE3MzE0ODczMjRiNTAxYzgyOTUyMjFiNjI5ZDNmNWYzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiODdkZDkxYzBjNDA3Mzc1OGQwNzMzNGMxZTVmNzEyY2U4ZmU0OGYwMDdiODZmODIzODc3Mzk2M2VlNzAwYTYiCitTUkNfVVJJW21kNXN1bV0gPSAiYWM4NDkyZjRhZDk1MjM2MDczNzQxM2U4MmQ2NjE5MDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTkwZjE3OTgwZTZhYjBmM2MyZjM3MzBlNTZkMWZlOWJjYmExODkxZWVlYTU4OTY2ZTg5ZDM1MjQ5MmNjNzRmNCIKIAogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCiAgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAogIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZmZpXzEuMTEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmlfMS4xMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2Q2MmQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmlfMS4xMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1jZmZpLmluYwotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmlfMS4xMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2ZmaV8xLjExLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM2NjdiOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmlfMS4xMS41LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBweXRob24tY2ZmaS5pbmMKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoYXJkZXQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldC5pbmMKaW5kZXggNjAzNTQ4OC4uNjMwNTI5OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldC5pbmMKQEAgLTExLDMgKzExLDEzIEBACiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODRhYjkyZWQxYzRkNGYxNjkxNmUwNTkwNmI2Yjc1YTZjMGZiNWRiODIxY2M2NWU3MGNiZDY0YTNlMmE1ZWFhZSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tY2xpIgorUkRFUEVORFNfJHtQTn0tY2xpID0gIiR7UE59ICIKK0ZJTEVTXyR7UE59LWNsaSArPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9jaGFyZGV0L2NsaSBcCisiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jaGFyZGV0XzMuMC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldF8zLjAuNC5iYgppbmRleCBiN2E0NmU5Li4zYjZmZWVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jaGFyZGV0XzMuMC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoYXJkZXRfMy4wLjQuYmIKQEAgLTEsMiArMSw0IEBACiBpbmhlcml0IHNldHVwdG9vbHMKIHJlcXVpcmUgcHl0aG9uLWNoYXJkZXQuaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tYXJncGFyc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbWQyXzAuNy43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMl8wLjcuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmExZWY1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbWQyXzAuNy43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJFeHRyYSBmZWF0dXJlcyBmb3Igc3RhbmRhcmQgbGlicmFyeSdzIGNtZCBtb2R1bGUiCi1IT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMucHl0aG9uLm9yZy9jbWQyLyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc2V0dXAucHk7YmVnaW5saW5lPTQ5O2VuZGxpbmU9NDk7bWQ1PTBmMTNjOWNmYzc1Mjg4MjIzY2Y3ZWRkMmYzYjk4NWEyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTc2Yjc4YWRkNmQ2NTJiNDhkY2Y5MzYyY2VjZTg4ZWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjRlMmZiOWZjNjU2YWRjY2M0ZDAxZGZkNTVhYjVhOWIwNTg5MGU5NjE5NTA1NDNmNjkyZTc4ODU3MjVjMmQ3MiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZG9jdGVzdCBcCi0gICAgJHtQWVRIT05fUE59LXB5cGFyc2luZyBcCi0gICAgJHtQWVRIT05fUE59LXNoZWxsIFwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICAgJHtQWVRIT05fUE59LXRleHR1dGlscyBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMl8wLjguMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNtZDJfMC44LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ1YWI5OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNtZDJfMC44LjEuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJFeHRyYSBmZWF0dXJlcyBmb3Igc3RhbmRhcmQgbGlicmFyeSdzIGNtZCBtb2R1bGUiCitIT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMucHl0aG9uLm9yZy9jbWQyLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc2V0dXAucHk7YmVnaW5saW5lPTUxO2VuZGxpbmU9NTE7bWQ1PTBmMTNjOWNmYzc1Mjg4MjIzY2Y3ZWRkMmYzYjk4NWEyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzAxYjkxNmZmYWM5OTEzN2JlYTQxMzIwNTEwNmY5OTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDA5OTc2ZjlhZDIzMjc4ODNjMmQwN2I1YWNiNDJlNjZhZDUyYjE3ZTM1Mjg3M2MyMjA0MWVkMTI0YmZlOGFiYSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZG9jdGVzdCBcCisgICAgJHtQWVRIT05fUE59LXB5cGFyc2luZyBcCisgICAgJHtQWVRIT05fUE59LXB5cGVyY2xpcCBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgJHtQWVRIT05fUE59LXRleHR1dGlscyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uZmlncGFyc2VyLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ3BhcnNlci5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFmYjg1OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ3BhcnNlci5pbmMKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgQ29uZmlnUGFyc2VyIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgYSBiYXNpYyBjb25maWd1cmF0aW9uIGxhbmd1YWdlIHdoaWNoIHByb3ZpZGVzIGEgc3RydWN0dXJlIHNpbWlsYXIgdG8gd2hhdOKAmXMgZm91bmQgaW4gTWljcm9zb2Z0IFdpbmRvd3MgSU5JIGZpbGVzLiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2NvbmZpZ3BhcnNlci5odG1sIgorTElDRU5TRSA9ICJNSVQiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODIyNzE4MDEyNjc5N2EwMTQ4Zjk0ZjQ4M2YzZTE0ODkiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZmRkOTE1YTViN2E2YzA5OTE3YTY0YTU3MzE0MDUzOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MzA4YjQ3MDIxYmMyMzQwOTY1YzM3MWYwZjA1OGNjNjk3MWEwNDUwMjYzOGQ0MjQ0MjI1YzQ5ZDgwZGIyNzNhIgorCitpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ3BhcnNlcl8zLjUuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ3BhcnNlcl8zLjUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWYwNDVkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uZmlncGFyc2VyXzMuNS4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1jb25maWdwYXJzZXIuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9ycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9ycy5pbmMKaW5kZXggZTllNDAxOS4uMDBiYjg3YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzLmluYwpAQCAtOCw4ICs4LDggQEAKICAgICAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gIjFkYjRjMDkwNjJhM2E4ZTFlMmQxZjVlM2U0ZDc1MmQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJlYjgzMWFhNzM2NjNhMjI0ZjRkNzUyMDQ4M2VkMDJkYTU0NDUzM2JiMDNiMjZlYzA3YTVmOWEwZGQwOTQxZTEiCitTUkNfVVJJW21kNXN1bV0gPSAiZWYxMTViODcwY2M4ZDhiOWYwZjQxODliNTEyYmMxNzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzhjNGI0ZjNmODQ4NTNlYTVkMDM4ZTJmNTNkMzU1MjI5ZGQ4MTE5ZmU5Y2Y5NDljM2U0OTdjODVjNzYwYTVjYSIKIAogUFlQSV9QQUNLQUdFID0gImNyeXB0b2dyYXBoeV92ZWN0b3JzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9yc18yLjAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuMS40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9yc18yLjAuMy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi4xLjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHkuaW5jCmluZGV4IDRiYTNlMzIuLjRiZTc5MDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LmluYwpAQCAtMTAsOCArMTAsOCBAQAogICAgICR7UFlUSE9OX1BOfS1zaXggXAogIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMjRjYmRhYjNmZGEyMmJlMzFkZDNhZWYyODA4ZjVkMmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDA0YmIyNDI1MDg2YzNmZTg2ZjdiYzQ4OTE1MjkwYjEzZTc5ODQ5NzgzOWZiYjE4YWI3ZjZkZmZjZjk4Y2MzYSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZjM5ZDRkOGYyYjA1ZjI5NWZhMGZmNTI0NzVlYzRmMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNGQ5NjczNzFjNWI2YjJlNjc4NTUwNjY0NzFkODQ0YzVkNTJkMjEwYzM2YzI4ZDQ5YTg1MDdiOTZlMmM1MjkxIgogCiBSREVQRU5EU18ke1BOfSArPSAiIFwKICAgICAke1BZVEhPTl9QTn0tY2ZmaSBcCkBAIC0yOCw3ICsyOCw2IEBACiAgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAogICAgICR7UFlUSE9OX1BOfS1hc24xY3J5cHRvIFwKICAgICAke1BZVEhPTl9QTn0tcHljcGFyc2VyIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCiAgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAogICAgICR7UFlUSE9OX1BOfS1zaXggXAogICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXApAQCAtNTUsNiArNTQsNCBAQAogICAgICR7bGliZGlyfS8ke1BZVEhPTl9QTn0yLjcvc2l0ZS1wYWNrYWdlcy8ke1NSQ05BTUV9L2hhem1hdC9iaW5kaW5ncy8uZGVidWcgXAogIgogCi1MREZMQUdTX2FwcGVuZCA9ICIgLXB0aHJlYWQiCi0KIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeV8yLjAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeV8yLjAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjViMWUwYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHlfMi4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tY3J5cHRvZ3JhcGh5LmluYwotCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotCi1ERVBFTkRTICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1lbnVtMzQgXAotIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZW51bTM0IFwKLSAgICAke1BZVEhPTl9QTn0taXBhZGRyZXNzIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1lbnVtMzQgXAotICAgICR7UFlUSE9OX1BOfS1pcGFkZHJlc3MgXAotICAgICR7UFlUSE9OX1BOfS1jb250ZXh0bGliIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeV8yLjEuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeV8yLjEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzJmODg0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5XzIuMS40LmJiCkBAIC0wLDAgKzEsMjIgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1jcnlwdG9ncmFwaHkuaW5jCisKK1NSQ19VUkkgKz0gIiBcCisgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK0RFUEVORFMgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWVudW0zNCBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1lbnVtMzQgXAorICAgICR7UFlUSE9OX1BOfS1pcGFkZHJlc3MgXAorIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWVudW0zNCBcCisgICAgJHtQWVRIT05fUE59LWlwYWRkcmVzcyBcCisgICAgJHtQWVRIT05fUE59LWNvbnRleHRsaWIgXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob24uaW5jCmluZGV4IDU3MmNiOTYuLjVkM2I5ZDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uLmluYwpAQCAtNSwxNyArNSwzMSBAQAogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWUyM2ZhZGQ2Y2VlZjhjNjE4ZmMxYzY1MTkxZDg0NmZhIgogUFlQSV9QQUNLQUdFID0gIkN5dGhvbiIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYjkzNzUwYjM0MzgyYjAyNWQ2NzhiZWE4MTliNzQ5MWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTY4NDBhMmJhMjcwNGY0ZmZiNDBlNDU0YzM2ZjczYWViNDQwYTQwMDU0NTNlZThkN2ZmNmEwMGQ4MTJiYTE3NiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZTA1NjhkNmJlZDRiMDlhZDAxYWZlMGEzODgwNTMwNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MzRlMmYxMGZjOGQwMjZjNjMzY2ZmYWNiNDVjZDhmNDU4MjE0OWZhNjhlMTQyODEyNGU3NjJkYmM1NjZlNjhhIgogCiBpbmhlcml0IHB5cGkKIAogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LW1pc2MgXAogICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyAgICAke1BZVEhPTl9QTn0tcGtndXRpbCBcCisgICAgJHtQWVRIT05fUE59LXB5cGFyc2luZyBcCisgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAogICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXhtbCBcCisiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayArPSAiXAorICAgIG5hdGl2ZXNkay0ke1BZVEhPTl9QTn0tbWlzYyBcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgIG5hdGl2ZXNkay0ke1BZVEhPTl9QTn0tcGtndXRpbCBcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS1weXBhcnNpbmcgXAorICAgIG5hdGl2ZXNkay0ke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS14bWwgXAogIgogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbl8wLjI3LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob25fMC4yNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGY5NDkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbl8wLjI3LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tY3l0aG9uLmluYwotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9DeXRob24vIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL0N5dGhvbi8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgcHl0aG9uLWRpc3RyaWJ1dGUgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uXzAuMjguMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbl8wLjI4LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgwM2E2ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbl8wLjI4LjIuYmIKQEAgLTAsMCArMSwxMCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1jeXRob24uaW5jCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL0N5dGhvbi8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvQ3l0aG9uLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZGlzdHJpYnV0ZSBcCisgICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWwuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWwuaW5jCmluZGV4IGNhNTEwNTkuLjMzM2I1ZTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbC5pbmMKQEAgLTEsMTEgKzEsMTEgQEAKIFNVTU1BUlkgPSAiRXh0ZW5zaW9ucyB0byB0aGUgc3RhbmRhcmQgUHl0aG9uIGRhdGV0aW1lIG1vZHVsZSIKIERFU0NSSVBUSU9OID0gIlRoZSBkYXRldXRpbCBtb2R1bGUgcHJvdmlkZXMgcG93ZXJmdWwgZXh0ZW5zaW9ucyB0byB0aGUgZGF0ZXRpbWUgbW9kdWxlIGF2YWlsYWJsZSBpbiB0aGUgUHl0aG9uIHN0YW5kYXJkIGxpYnJhcnkuIgogSE9NRVBBR0UgPSAiaHR0cHM6Ly9kYXRldXRpbC5yZWFkdGhlZG9jcy5vcmciCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTMxZjcyZDRjYWQzNjc1ZmIwOTE1MzdiOWIyZjMyZGUwIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UgJiBBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTMxNTVjN2JkYzcxZjY2ZTAyNjc4NDExZDJhYmY5OTYiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJkYjM4ZjZiNDUxMWNlZmQ3NjAxNDc0NWJiMGNjNDVhNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4OTFjMzhiMmEwMmY1YmIxYmUzZTQ3OTM4NjZjOGRmNDljN2QxOWJhYWJmOWMxYmFkNjI1NDdlMGI0ODY2YWNhIgorU1JDX1VSSVttZDVzdW1dID0gIjAzYTA4YzhiY2YwYTJiMjlmMWNkMjFiOWRlNGQxMmZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlkODA3NGJlNGM5OTNmYmU0OTQ3ODc4Y2U1OTMwNTJmNzFkYWM4MjkzMmE2NzdkNDkxOTRkOGNlOTc3ODAwMmUiCiAKIFBZUElfUEFDS0FHRSA9ICJweXRob24tZGF0ZXV0aWwiCiBpbmhlcml0IHB5cGkKQEAgLTE0LDcgKzE0LDggQEAKIEZJTEVTXyR7UE59LXpvbmVpbmZvID0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvZGF0ZXV0aWwvem9uZWluZm8iCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJcCi0gICAgJHtQWVRIT05fUE59LWNvcmUgXAogICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAogICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICIKKyAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsXzIuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWxfMi43LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsXzIuNi4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbF8yLjcuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c18xLjIuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRidXNfMS4yLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MWI1NTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c18xLjIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgREJ1cyBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24gc3lzdGVtIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYjgzMDQ3Y2U5ZTk0OGI2N2MwZmFjYzVmMjMzNDc2YSIKLURFUEVORFMgPSAiZXhwYXQgZGJ1cyBkYnVzLWdsaWIgdmlydHVhbC9saWJpbnRsIHB5dGhvbi1weXJleC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtcHl0aG9uL2RidXMtcHl0aG9uLSR7UFZ9LnRhci5neiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MzcyYTU4OGM4M2E3MjMyYjRlMDgxNTliZmQ0OGZlNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMmYxZDY4NzFmNzRmYmEyMzY1MmU1MWQxMDg3M2U1NGY3MWFkYWIwNTI1ODMzYzE5YmFkOWU5OWIxYjJmOWNjIgotUyA9ICIke1dPUktESVJ9L2RidXMtcHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlscy1iYXNlIGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR1tkb2NzXSA9ICItLWVuYWJsZS1odG1sLWRvY3MsLS1kaXNhYmxlLWh0bWwtZG9jcyxweXRob24zLWRvY3V0aWxzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbYXBpLWRvY3NdID0gIi0tZW5hYmxlLWFwaS1kb2NzLC0tZGlzYWJsZS1hcGktZG9jcyxweXRob24zLWRvY3V0aWxzLW5hdGl2ZSBweXRob24zLWVweWRvYy1uYXRpdmUiCi0KLWV4cG9ydCBTVEFHSU5HX0xJQkRJUgotZXhwb3J0IFNUQUdJTkdfSU5DRElSCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1pbyBweXRob24tbG9nZ2luZyBweXRob24tc3RyaW5nb2xkIHB5dGhvbi10aHJlYWRpbmcgcHl0aG9uLXhtbCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmlnIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIFJlbW92ZSBmaWxlcyB0aGF0IGNsYXNoIHdpdGggcHl0aG9uMy1kYnVzOyB0aGVpciBjb250ZW50IGlzIHNhbWUKLSAgICBybSAke0R9JHtpbmNsdWRlZGlyfS9kYnVzLTEuMC9kYnVzL2RidXMtcHl0aG9uLmggJHtEfSR7bGliZGlyfS9wa2djb25maWcvZGJ1cy1weXRob24ucGMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRidXNfMS4yLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYnVzXzEuMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMThjY2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYnVzXzEuMi42LmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgREJ1cyBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24gc3lzdGVtIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgorTElDRU5TRSA9ICJNSVQgJiBBRkwtMi4xIHwgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMDMyNDA1MTg5OTRkZjZkOGM5NzQ2NzU2NzVlNWNhNCBcCisJCSAgICBmaWxlOi8vZGJ1cy1nbWFpbi9DT1BZSU5HO21kNT0wNWMzZWFjZDUwZjY5YmIxZDU4YWZlYzQ2MGJhYWQ1NyAiCitERVBFTkRTID0gImV4cGF0IGRidXMgZGJ1cy1nbGliIHZpcnR1YWwvbGliaW50bCBweXRob24tcHlyZXgtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzLXB5dGhvbi9kYnVzLXB5dGhvbi0ke1BWfS50YXIuZ3ogXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWNlMWRkZjI1ODIwNjBmOGY5NzE2NTJlYTU0Y2MxN2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzJmMjljMTcxNzJjZGI5Y2I2MWM2OGIxZjFhNzFkZmU3MzUxNTA2ZmM4MzA4NjkwMjljNDc0NDliZDA0ZmFlYiIKK1MgPSAiJHtXT1JLRElSfS9kYnVzLXB5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBkaXN0dXRpbHMtYmFzZSBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbZG9jc10gPSAiLS1lbmFibGUtaHRtbC1kb2NzLC0tZGlzYWJsZS1odG1sLWRvY3MscHl0aG9uMy1kb2N1dGlscy1uYXRpdmUiCitQQUNLQUdFQ09ORklHW2FwaS1kb2NzXSA9ICItLWVuYWJsZS1hcGktZG9jcywtLWRpc2FibGUtYXBpLWRvY3MscHl0aG9uMy1kb2N1dGlscy1uYXRpdmUgcHl0aG9uMy1lcHlkb2MtbmF0aXZlIgorCitleHBvcnQgU1RBR0lOR19MSUJESVIKK2V4cG9ydCBTVEFHSU5HX0lOQ0RJUgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24taW8gcHl0aG9uLWxvZ2dpbmcgcHl0aG9uLXN0cmluZ29sZCBweXRob24tdGhyZWFkaW5nIHB5dGhvbi14bWwiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBSZW1vdmUgZmlsZXMgdGhhdCBjbGFzaCB3aXRoIHB5dGhvbjMtZGJ1czsgdGhlaXIgY29udGVudCBpcyBzYW1lCisgICAgcm0gJHtEfSR7aW5jbHVkZWRpcn0vZGJ1cy0xLjAvZGJ1cy9kYnVzLXB5dGhvbi5oICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2RidXMtcHl0aG9uLnBjCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYnVzbW9jay8wMDAxLUFkZC1mdW5jdGlvbmFsaXR5LXRvLWFkZC1vd24tb2JqZWN0cy10by1pbnRlcm5hbC1vYmoucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYnVzbW9jay8wMDAxLUFkZC1mdW5jdGlvbmFsaXR5LXRvLWFkZC1vd24tb2JqZWN0cy10by1pbnRlcm5hbC1vYmoucGF0Y2gKaW5kZXggZmRkMDBiNi4uYzRkODE3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c21vY2svMDAwMS1BZGQtZnVuY3Rpb25hbGl0eS10by1hZGQtb3duLW9iamVjdHMtdG8taW50ZXJuYWwtb2JqLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRidXNtb2NrLzAwMDEtQWRkLWZ1bmN0aW9uYWxpdHktdG8tYWRkLW93bi1vYmplY3RzLXRvLWludGVybmFsLW9iai5wYXRjaApAQCAtMSw3ICsxLDggQEAKLUZyb20gZWViZTBmNjY0MzVjNGQ4MjFiMGY1ZjkzZjY5ZWZlMTdiNGEzODRjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzQ0MzZmZDQyZjI5MzZlNWZiMGY5NTQzNGQwNmU0NWFhOTk1OWNhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFNpbW9uIEJ1c2NoIDxzaW1vbi5idXNjaEBsZ2UuY29tPgogRGF0ZTogV2VkLCA5IEFwciAyMDE0IDEzOjE4OjMzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBBZGQgZnVuY3Rpb25hbGl0eSB0byBhZGQgb3duIG9iamVjdHMgdG8gaW50ZXJuYWwgb2JqZWN0CitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBmdW5jdGlvbmFsaXR5IHRvIGFkZCBvd24gb2JqZWN0cyB0byBpbnRlcm5hbCBvYmplY3QKKwogIGxpc3QKIAogSW4gc29tZSBjYXNlIHRoZSB0ZXN0cyBtaWdodCB3YW50IHRvIGNyZWF0ZSBkeW5hbWljYWxseSBkYnVzIG9iamVjdHMgd2hpY2ggZXh0ZW5kZWQKQEAgLTksMTcgKzEwLDE4IEBACiByZWdpc3RlciB0aG9zZSBvYmplY3RzIHdpdGggdGhlIGludGVybmFsIG9iamVjdCBtYW5hZ2VyIG9mIGRidXNtb2NrLgogCiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBCdXNjaCA8c2ltb24uYnVzY2hAbGdlLmNvbT4KKwogLS0tCi0gZGJ1c21vY2svX19pbml0X18ucHkgICB8ICAgIDQgKystLQotIGRidXNtb2NrL21vY2tvYmplY3QucHkgfCAgICA4ICsrKysrKysrCisgZGJ1c21vY2svX19pbml0X18ucHkgICB8IDQgKystLQorIGRidXNtb2NrL21vY2tvYmplY3QucHkgfCA4ICsrKysrKysrCiAgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZGJ1c21vY2svX19pbml0X18ucHkgYi9kYnVzbW9jay9fX2luaXRfXy5weQotaW5kZXggZjc5OWNjNy4uNjcxOGMwNiAxMDA2NDQKK2luZGV4IDhhNDgyYWIuLjNkNWQ3MWEgMTAwNjQ0CiAtLS0gYS9kYnVzbW9jay9fX2luaXRfXy5weQogKysrIGIvZGJ1c21vY2svX19pbml0X18ucHkKIEBAIC0xNCw4ICsxNCw4IEBAIF9fbGljZW5zZV9fID0gJ0xHUEwgMysnCi0gX192ZXJzaW9uX18gPSAnMC4xMC4xJworIF9fdmVyc2lvbl9fID0gJzAuMTYuNycKICAKICBmcm9tIGRidXNtb2NrLm1vY2tvYmplY3QgaW1wb3J0IChEQnVzTW9ja09iamVjdCwgTU9DS19JRkFDRSwKIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQkpFQ1RfTUFOQUdFUl9JRkFDRSwgZ2V0X29iamVjdCwgZ2V0X29iamVjdHMpCkBAIC0zMCwxMCArMzIsMTAgQEAKIC0gICAgICAgICAgICdEQnVzVGVzdENhc2UnLCAnZ2V0X29iamVjdCcsICdnZXRfb2JqZWN0cyddCiArICAgICAgICAgICAnREJ1c1Rlc3RDYXNlJywgJ2dldF9vYmplY3QnLCAnZ2V0X29iamVjdHMnLCAnYWRkX29iamVjdCddCiBkaWZmIC0tZ2l0IGEvZGJ1c21vY2svbW9ja29iamVjdC5weSBiL2RidXNtb2NrL21vY2tvYmplY3QucHkKLWluZGV4IDk3Yjc5Y2UuLmE5OGUwM2QgMTAwNjQ0CitpbmRleCA1ODZkYmFkLi5lNGYxMzBmIDEwMDY0NAogLS0tIGEvZGJ1c21vY2svbW9ja29iamVjdC5weQogKysrIGIvZGJ1c21vY2svbW9ja29iamVjdC5weQotQEAgLTY4Miw2ICs2ODIsMTQgQEAgZGJ1cy5zZXJ2aWNlLl9tZXRob2RfbG9va3VwID0gX2RidXNtb2NrX21ldGhvZF9sb29rdXAKK0BAIC02ODgsNiArNjg4LDE0IEBAIGRidXMuc2VydmljZS5fbWV0aG9kX2xvb2t1cCA9IF9kYnVzbW9ja19tZXRob2RfbG9va3VwCiAgIyBIZWxwZXIgQVBJIGZvciB0ZW1wbGF0ZXMKICAjCiAgCkBAIC00OCw2ICs1MCwzIEBACiAgCiAgZGVmIGdldF9vYmplY3RzKCk6CiAgICAgICcnJ1JldHVybiBhbGwgZXhpc3Rpbmcgb2JqZWN0IHBhdGhzJycnCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c21vY2svMDAwMi1BZGQtcG9zc2liaWxpdHktdG8taW1wb3J0LXRlbXBsYXRlcy1mcm9tLXBhY2thZ2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c21vY2svMDAwMi1BZGQtcG9zc2liaWxpdHktdG8taW1wb3J0LXRlbXBsYXRlcy1mcm9tLXBhY2thZ2VzLnBhdGNoCmluZGV4IDk4MTY5NGYuLjA2YWIxZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRidXNtb2NrLzAwMDItQWRkLXBvc3NpYmlsaXR5LXRvLWltcG9ydC10ZW1wbGF0ZXMtZnJvbS1wYWNrYWdlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYnVzbW9jay8wMDAyLUFkZC1wb3NzaWJpbGl0eS10by1pbXBvcnQtdGVtcGxhdGVzLWZyb20tcGFja2FnZXMucGF0Y2gKQEAgLTEsMjIgKzEsMjMgQEAKLUZyb20gZmYxZGZmZDU2NzNiY2QyY2JkOTU1NGFkNjI0NzZkMTA4ZGJjMThhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDNiZDVjYjc3YzU0MDMzODU3ODEwYmIxNzU2Mjg1OWVlZmE0MTIyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFNpbW9uIEJ1c2NoIDxzaW1vbi5idXNjaEBsZ2UuY29tPgogRGF0ZTogV2VkLCA5IEFwciAyMDE0IDEzOjIwOjMzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBBZGQgcG9zc2liaWxpdHkgdG8gaW1wb3J0IHRlbXBsYXRlcyBmcm9tIHBhY2thZ2VzCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBwb3NzaWJpbGl0eSB0byBpbXBvcnQgdGVtcGxhdGVzIGZyb20gcGFja2FnZXMKIAogRG9lcyBub3QgaGF2ZSBhbnkgdW5pdCB0ZXN0cyB5ZXQuCiAKIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEJ1c2NoIDxzaW1vbi5idXNjaEBsZ2UuY29tPgorCiAtLS0KLSBkYnVzbW9jay9tb2Nrb2JqZWN0LnB5IHwgICAgMyArKysKKyBkYnVzbW9jay9tb2Nrb2JqZWN0LnB5IHwgMyArKysKICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9kYnVzbW9jay9tb2Nrb2JqZWN0LnB5IGIvZGJ1c21vY2svbW9ja29iamVjdC5weQotaW5kZXggYTk4ZTAzZC4uOTUzMGMyYSAxMDA2NDQKK2luZGV4IGU0ZjEzMGYuLjM4OWRmNzAgMTAwNjQ0CiAtLS0gYS9kYnVzbW9jay9tb2Nrb2JqZWN0LnB5CiArKysgYi9kYnVzbW9jay9tb2Nrb2JqZWN0LnB5Ci1AQCAtNDksNiArNDksOSBAQCBkZWYgbG9hZF9tb2R1bGUobmFtZSk6Ci0gCi0gICAgICAgICByZXR1cm4gbW9kdWxlCitAQCAtNDYsNiArNDYsOSBAQCBkZWYgbG9hZF9tb2R1bGUobmFtZSk6CisgICAgICAgICAgICAgZXhlYyhmLnJlYWQoKSwgbW9kLl9fZGljdF9fLCBtb2QuX19kaWN0X18pCisgICAgICAgICByZXR1cm4gbW9kCiAgCiArICAgIGlmICcuJyBpbiBuYW1lOgogKyAgICAgICAgcmV0dXJuIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCkBAIC0yNCw2ICsyNSwzIEBACiAgICAgIHJldHVybiBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnZGJ1c21vY2sudGVtcGxhdGVzLicgKyBuYW1lKQogIAogIAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRidXNtb2NrXzAuMTYuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRidXNtb2NrXzAuMTYuNy5iYgppbmRleCBmYjhjMGFhLi5lYzhjNTRhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYnVzbW9ja18wLjE2LjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c21vY2tfMC4xNi43LmJiCkBAIC0yMCw3ICsyMCw2IEBACiAKIFJERVBFTkRTXyR7UE59ICs9ICJcCiAgICAgJHtQWVRIT05fUE59LWRidXMgXAotICAgICR7UFlUSE9OX1BOfS1pbXBvcnRsaWIgXAogICAgICR7UFlUSE9OX1BOfS1weWdvYmplY3QgXAogICAgICR7UFlUSE9OX1BOfS14bWwgXAogICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvci5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kZWNvcmF0b3IuaW5jCmluZGV4IDg1OWY5NzIuLjQ0ZWRiOGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvci5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGVjb3JhdG9yLmluYwpAQCAtOSw4ICs5LDggQEAKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTg5M2Y4OTY0MTM4MjYwOTZjZTUyNzBjNzAwYTQ5OGZkIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYTBmN2Y0ZmUwMGFlMmRkZTkzNDk0ZDkwYzE5MmNmOGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2NiNjRkMzhjYjgwMDI5NzE3MTBjODg5OWZiZGZiODU5YTIzYTM2NGI3Yzk5ZGFiMTlkMWY3MTljMmJhMTZiNSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNDllNzI5OWI5YjRiY2VkMGMzODIzNDNmODRlYjFjMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMzllZmExM2ZiZGViNDUwNmM0NzZjOWIzYmFiZjZhNzE4ZGE5NDNkYWI3ODExYzIwNjAwNWE0YTk1NmMwODBjIgogCiBpbmhlcml0IHB5cGkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGVjb3JhdG9yXzQuMS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGVjb3JhdG9yXzQuMy4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kZWNvcmF0b3JfNC4xLjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvcl80LjMuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLXNvdXRoLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby1zb3V0aC5pbmMKaW5kZXggY2U5MDRiNi4uZTRmMDNiOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLXNvdXRoLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28tc291dGguaW5jCkBAIC0xMCw3ICsxMCw3IEBACiBQWVBJX1BBQ0tBR0UgPSAiU291dGgiCiBpbmhlcml0IHB5cGkKIAotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKIFJERVBFTkRTXyR7UE59ICs9ICJcCiAgICAgJHtQWVRIT05fUE59LWRqYW5nbyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLmluYwppbmRleCA1OGZkNzBhLi40ZWYyZDdmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby5pbmMKQEAgLTMsMjIgKzMsMzAgQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjA5ZWI0NzIwNjYxNGE0OTU0YzUxZGI4YTk0ODQwZmEiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI4Y2VmMGQ0MmFhYmFjYmM0MTRlYzRmYmJiNjA1NmYzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxODM2ODc4MTYyZGZkZjg2NTQ5MmJhY2ZkZmYwMzIxZTRlZThmMWU3ZDUxZDkzMTkyNTQ2MDAwYjU0OTgyYjI5IgorU1JDX1VSSVttZDVzdW1dID0gImYzMDYwMTVlMTZhOGQ1MDI0ZGJhYzkyM2FjMzRmZmZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIyMzgzNTY3Mzg1YTljNDA2ZDhhNWNlMDgwYTI2OTRjODJjNmI3MzNlMTU3OTIyMTk3ZThiMzkzYmIzYWFjZDkiCiAKIFBZUElfUEFDS0FHRSA9ICJEamFuZ28iCiBpbmhlcml0IHB5cGkKIAogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGphbmdvIgogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAogUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gXAorICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAogICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0gICAgJHtQWVRIT05fUE59LWltcG9ydGxpYiBcCisgICAgJHtQWVRIT05fUE59LWVtYWlsIFwKKyAgICAke1BZVEhPTl9QTn0taHRtbCBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tbXVsdGlwcm9jZXNzaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKICAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgJHtQWVRIT05fUE59LXBpcCBcCiAgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyAgICAke1BZVEhPTl9QTn0tcHl0eiBcCiAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICAgIgorICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAorICAgICR7UFlUSE9OX1BOfS14bWwgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvXzEuMTEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29fMS4xMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjM0N2NjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvXzEuMTEuMTAuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlIHB5dGhvbi1kamFuZ28uaW5jCitpbmhlcml0IHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWFyZ3BhcnNlIFwKKyAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCisgICAgJHtQWVRIT05fUE59LXpsaWIgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvXzEuMTEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nb18xLjExLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjZDc3MTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvXzEuMTEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tZGphbmdvLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb21pbmF0ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb21pbmF0ZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNmNzRhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRvbWluYXRlLmluYwpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gIkRvbWluYXRlIGlzIGEgUHl0aG9uIGxpYnJhcnkgZm9yIGNyZWF0aW5nIGFuZCBtYW5pcHVsYXRpbmcgSFRNTCBkb2N1bWVudHMgdXNpbmcgYW4gZWxlZ2FudCBET00gQVBJLiIKK0xJQ0VOU0UgPSAiTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWI1MmYyZDU3ZDEwYzRmN2VlNjdhN2ViOTYxNWQ1ZDI0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDViZDk3ZTZmNzg4OGFhYzI0YWU4NjAxM2M1NzYzOGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGI4Y2U2ZjMzNjMzYzlkZDkxNzViMjI4ZDIxYzAwYzgwMWI2YmQwMzI3NzQ3Y2Q1ZTE3ZmMyZGE5MzRjM2E2OSIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9taW5hdGVfMi4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb21pbmF0ZV8yLjMuMS5iYgppbmRleCAxM2ViZjkyLi5jMTk0NDVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb21pbmF0ZV8yLjMuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb21pbmF0ZV8yLjMuMS5iYgpAQCAtMSwxMyArMSwyIEBACi1TVU1NQVJZID0gIkRvbWluYXRlIGlzIGEgUHl0aG9uIGxpYnJhcnkgZm9yIGNyZWF0aW5nIGFuZCBtYW5pcHVsYXRpbmcgSFRNTCBkb2N1bWVudHMgdXNpbmcgYW4gZWxlZ2FudCBET00gQVBJLiIKLUxJQ0VOU0UgPSAiTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWI1MmYyZDU3ZDEwYzRmN2VlNjdhN2ViOTYxNWQ1ZDI0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDViZDk3ZTZmNzg4OGFhYzI0YWU4NjAxM2M1NzYzOGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGI4Y2U2ZjMzNjMzYzlkZDkxNzViMjI4ZDIxYzAwYzgwMWI2YmQwMzI3NzQ3Y2Q1ZTE3ZmMyZGE5MzRjM2E2OSIKLQogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICAgIgorcmVxdWlyZSBweXRob24tZG9taW5hdGUuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZGl0b3IuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZWRpdG9yLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDY1MGJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZWRpdG9yLmluYwpAQCAtMCwwICsxLDkgQEAKK0RFU0NSSVBUSU9OID0gIlByb2dyYW1tYXRpY2FsbHkgb3BlbiBhbmQgZWRpdG9yLCBjYXB0dXJlIHRoZSByZXN1bHQiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMjc5NGMwZGY1YjkwN2ZkYWNlMjM1YTYxOWQ4MDMxNCIKKworU1JDX1VSSVttZDVzdW1dID0gIjBhY2E1ZjJlZjE3NmNlNjhlOThhNWI3ZTMxMzcyODM1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzYzA2NmFjZWUyMmExYzk0ZjYzOTM4MzQxZDRmYjM3NGUzZmRkNjkzNjZlZDY2MDNkN2IyNGJlZDFlZmM1NjUiCisKK1BZUElfUEFDS0FHRSA9ICJweXRob24tZWRpdG9yIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZGl0b3JfMS4wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZGl0b3JfMS4wLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdhOWE4YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVkaXRvcl8xLjAuMy5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1lZGl0b3IuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEzODg0YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV2ZGV2LmluYwpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIlB5dGhvbiBldmRldiBsaWIiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ3ZhbGtvdi9weXRob24tZXZkZXYiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE4ZGViZGRiYjNmNTJjNjYxYTEyOTcyNGE4ODNhOGUyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzdlODU1YWU5Zjk3Zjg2OWE1OWU3NWIyOWYwNWNlNzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdlZGFmYzQ2OWE0MTRmNThiNTFhZjFiZmI5ZWUyYmFiYjlmNjI2ZGQyZGY1MzBkNzFjMTE3Njg3MTg1MGFhMSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIHJtIC1yZiAke1N9L2V2ZGV2L2Vjb2Rlcy5jCit9CisKK0RJU1RVVElMU19CVUlMRF9BUkdTID0gImJ1aWxkX2Vjb2RlcyAtLWV2ZGV2LWhlYWRlcnMgJHtTVEFHSU5HX0RJUl9UQVJHRVR9L3Vzci9pbmNsdWRlL2xpbnV4L2lucHV0Lmg6JHtTVEFHSU5HX0RJUl9UQVJHRVR9L3Vzci9pbmNsdWRlL2xpbnV4L2lucHV0LWV2ZW50LWNvZGVzLmgiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCisgICAgJHtQWVRIT05fUE59LWZjbnRsIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCisgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXZkZXZfMC43LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldl8wLjcuMC5iYgppbmRleCAwODc1ZGE0Li42MzU0MTM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldl8wLjcuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldl8wLjcuMC5iYgpAQCAtMSwxNyArMSwyIEBACi1TVU1NQVJZID0gIlB5dGhvbiBldmRldiBsaWIiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ3ZhbGtvdi9weXRob24tZXZkZXYiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE4ZGViZGRiYjNmNTJjNjYxYTEyOTcyNGE4ODNhOGUyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzdlODU1YWU5Zjk3Zjg2OWE1OWU3NWIyOWYwNWNlNzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdlZGFmYzQ2OWE0MTRmNThiNTFhZjFiZmI5ZWUyYmFiYjlmNjI2ZGQyZGY1MzBkNzFjMTE3Njg3MTg1MGFhMSIKLQogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKLSAgICAke1BZVEhPTl9QTn0tZmNudGwgXAotICAgICR7UFlUSE9OX1BOfS1pbyBcCi0gICAgJHtQWVRIT05fUE59LXNoZWxsIFwKLSAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKLSAgICAiCityZXF1aXJlIHB5dGhvbi1ldmRldi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJhYmVsLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJhYmVsLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjBlZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stYmFiZWwuaW5jCkBAIC0wLDAgKzEsMTYgQEAKK0RFU0NSSVBUSU9OID0gImkxOG4gYW5kIGwxMG4gc3VwcG9ydCBmb3IgRmxhc2sgYmFzZWQgb24gYmFiZWwgYW5kIHB5dHoiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTUxOTE3ZjNlOGU4NThmNWFlMjk1YTdkMGUyZWIzY2M5IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDc4MDM0NTM3NDNmMTM5MzA5MDIxNTcyYTc5OWM2YjMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzBkNzU3MTBiZDRiMGZlODY2ZjlmMjM0N2RlNmUxOTIwODcxMmY5Y2VjMDA2NDM2YjRjMWMxNWQ0Y2IwYzkzOSIKKworUFlQSV9QQUNLQUdFID0gIkZsYXNrLUJhYmVsIgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tc3BlYWtsYXRlciBcCisgICAgJHtQWVRIT05fUE59LWJhYmVsIFwKKyAgICAke1BZVEhPTl9QTn0tZmxhc2sgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJhYmVsXzAuMTEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJhYmVsXzAuMTEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGU3OGM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stYmFiZWxfMC4xMS4yLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWZsYXNrLWJhYmVsLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stYm9vdHN0cmFwLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJvb3RzdHJhcC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcyM2I5NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJvb3RzdHJhcC5pbmMKQEAgLTAsMCArMSwxNCBAQAorREVTQ1JJUFRJT04gPSAiQW4gZXh0ZW5zaW9uIHRoYXQgaW5jbHVkZXMgQm9vdHN0cmFwIGluIHlvdXIgcHJvamVjdCwgd2l0aG91dCBhbnkgYm9pbGVycGxhdGUgY29kZS4iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1hMDM3NDk3MDlmMDYxMThhMTczNDlkZWI1YTIxMDYxOSIKKworU1JDX1VSSVttZDVzdW1dID0gImU0MGQ1MGY1YzViNjQzOGMxYzYyMDBhNmYyODcxZjgxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiMDhlZDk0MDE4M2Y2MzQzYTY0ZTQ2NWU4M2IzYTNmMTNjNTNlMWJhYWJiOGQ3MmI1ZGE0NTQ1ZWYxMjNhYzgiCisKK1BZUElfUEFDS0FHRSA9ICJGbGFzay1Cb290c3RyYXAiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRvbWluYXRlIFwKKyAgICAke1BZVEhPTl9QTn0tZmxhc2sgXAorICAgICR7UFlUSE9OX1BOfS12aXNpdG9yIFwKKyAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1ib290c3RyYXBfMy4zLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJvb3RzdHJhcF8zLjMuNy4xLmJiCmluZGV4IDJiMmE2ZjkuLmVlYWFkZTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJvb3RzdHJhcF8zLjMuNy4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJvb3RzdHJhcF8zLjMuNy4xLmJiCkBAIC0xLDE2ICsxLDIgQEAKLURFU0NSSVBUSU9OID0gIkFuIGV4dGVuc2lvbiB0aGF0IGluY2x1ZGVzIEJvb3RzdHJhcCBpbiB5b3VyIHByb2plY3QsIHdpdGhvdXQgYW55IGJvaWxlcnBsYXRlIGNvZGUuIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9YTAzNzQ5NzA5ZjA2MTE4YTE3MzQ5ZGViNWEyMTA2MTkiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNDBkNTBmNWM1YjY0MzhjMWM2MjAwYTZmMjg3MWY4MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYjA4ZWQ5NDAxODNmNjM0M2E2NGU0NjVlODNiM2EzZjEzYzUzZTFiYWFiYjhkNzJiNWRhNDU0NWVmMTIzYWM4IgotCi1QWVBJX1BBQ0tBR0UgPSAiRmxhc2stQm9vdHN0cmFwIgotCiBpbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kb21pbmF0ZSBcCi0gICAgJHtQWVRIT05fUE59LWZsYXNrIFwKLSAgICAke1BZVEhPTl9QTn0tdmlzaXRvciBcCi0gICAgIgorcmVxdWlyZSBweXRob24tZmxhc2stYm9vdHN0cmFwLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbG9naW4uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbG9naW4uaW5jCmluZGV4IDdkZGRiYTAuLjU5ZWI2NGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWxvZ2luLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1sb2dpbi5pbmMKQEAgLTYsOCArNiw4IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThhYTg3YTFjZDlmYTQxZDk2OWFkMzJjZmRhYzJjNTk2IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZTA1MGVmYWEyYzRkYmMyZDk3ZjQ4MGE3MGY0ZDQ0YWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDI1ZTM1NmIxNGE1OWY1MmRhMGFiMzBjMzFjMmFkMjg1ZmEyM2E4NDBmMGY2OTcxZGY3ZWQyNDdjNzcwODJhNyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNWIzNGM3NGJkNTA5NzkyZjI5MWMxNmUxODQyMjVkZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjODE1YzFhYzdiM2UzNWUyMDgxNjg1ZTM4OWE2NjVmMmM3NGQ3ZTA3N2NiOTNjZWNhYmFlYTM1MmRhNDc1MmVjIgogCiBQWVBJX1BBQ0tBR0UgPSAiRmxhc2stTG9naW4iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWxvZ2luXzAuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbG9naW5fMC40LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWxvZ2luXzAuNC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1sb2dpbl8wLjQuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbWFpbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1tYWlsLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjA4NzAzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbWFpbC5pbmMKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJGbGFzayBleHRlbnNpb24gZm9yIHNlbmRpbmcgZW1haWwiCitERVNDUklQVElPTiA9ICJBIEZsYXNrIGV4dGVuc2lvbiBmb3Igc2VuZGluZyBlbWFpbCIKK0hPTUVQQUdFID0gIiBodHRwczovL2dpdGh1Yi5jb20vcmR1cGxhaW4vZmxhc2stZW1haWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTViMTZkZmE2ZDNmMjc1YWNlNTk4NWJiOTI5NDlmNzcwIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDRiMzVhNDJhNDRlYzdhYTcyNGVjOGNlNTVlMmUwOGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjJlNWViOWE5NDBiZjQwN2JjZjMwNDEwZWNjMzcwOGYzYzU2Y2M0NGIyOWMzNGUxNzI2ZmU4NTAwNjkzNWY0MSIKKworUFlQSV9QQUNLQUdFID0gIkZsYXNrLU1haWwiCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1mbGFzayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW1haWxfMC45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1tYWlsXzAuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMjRkYTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1tYWlsXzAuOS4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWZsYXNrLW1haWwuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1taWdyYXRlLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW1pZ3JhdGUuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZjRmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1taWdyYXRlLmluYwpAQCAtMCwwICsxLDE0IEBACitERVNDUklQVElPTiA9ICJTUUxBbGNoZW15IGRhdGFiYXNlIG1pZ3JhdGlvbnMgZm9yIEZsYXNrIGFwcGxpY2F0aW9ucyB1c2luZyBBbGVtYmljIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYjY5Mzc3Zjc5ZjNmNDhjNjYxNzAxMjM2ZDVhNmE4NSIKKworU1JDX1VSSVttZDVzdW1dID0gImRlZjQxMDZjODA4OTdiN2ZhZDJhZmIzYmMwNTM2MGU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI3MDljYTg2NDI1NTljM2M1YTgxYTMzYWIxMDgzOWZhMDUyMTc3YWNjZDViYTgyMTA0N2E5OWRiNjM1MjU1ZWQiCisKK1BZUElfUEFDS0FHRSA9ICJGbGFzay1NaWdyYXRlIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1mbGFzay1zcWxhbGNoZW15IFwKKyAgICAke1BZVEhPTl9QTn0tYWxlbWJpYyBcCisgICAgJHtQWVRIT05fUE59LWZsYXNrIFwKKyAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1taWdyYXRlXzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbWlncmF0ZV8yLjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2U1MTZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbWlncmF0ZV8yLjEuMS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1mbGFzay1taWdyYXRlLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbmF2LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW5hdi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMyY2NkZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW5hdi5pbmMKQEAgLTAsMCArMSwxMyBAQAorREVTQ1JJUFRJT04gPSAiRWFzaWx5IGNyZWF0ZSBuYXZpZ2F0aW9uIGZvciBGbGFzayBhcHBsaWNhdGlvbnMuIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9MjcyOWVlODIyNTlkNjAxZDkwZDI4YjA1NzRkMTI0MTYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZDUxY2ZkMDZkNThmOGQwZmU4NTc3NWE2Njk2YzBlNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NGU0MGI3NTUzODBhMWU2OGFiNTIxYTJmOTE3NGRlMjU5YTJjOTRkZGNkYWFiZjM2YjNhY2EyZTExMGEzM2Y0IgorCitQWVBJX1BBQ0tBR0UgPSAiZmxhc2stbmF2IgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1ibGlua2VyIFwKKyAgICAke1BZVEhPTl9QTn0tZmxhc2sgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW5hdl8wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1uYXZfMC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYjViM2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1uYXZfMC42LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWZsYXNrLW5hdi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXB5bW9uZ28uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcHltb25nby5pbmMKaW5kZXggZTExMjgzZS4uZmIyZDZlZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcHltb25nby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcHltb25nby5pbmMKQEAgLTMsNyArMyw3IEBACiBIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWl0c3VoaWtvL2ZsYXNrLyIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgogTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9mbGFza19weW1vbmdvL3dyYXBwZXJzLnB5O3N0YXJ0bGluZT0xO2VuZGxpbmU9MjQ7bWQ1PTQyNGM0ZTEwNDdkMjhlMDFiNGU0NjM0YTA2OWMwMTlkIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZmxhc2tfcHltb25nby93cmFwcGVycy5weTtiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT00MjRjNGUxMDQ3ZDI4ZTAxYjRlNDYzNGEwNjljMDE5ZCIKIAogU1JDX1VSSVttZDVzdW1dID0gImQ3YTFiNzE3ZjI3MTU0ZTFmM2EzNTVmOGVjMjQ2N2Q2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJiYWFhMmJhNTEwN2Q3MmIzYThiZDRiNWMwYzg4ODEzMTZlMzUzNDBhZDFhZTk3OWNjMTNmMWYzYzg4NDNiM2QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1yZXN0ZnVsLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXJlc3RmdWwuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0ODVmODUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1yZXN0ZnVsLmluYwpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gIlNpbXBsZSBmcmFtZXdvcmsgZm9yIGNyZWF0aW5nIFJFU1QgQVBJcyIKK0RFU0NSSVBUSU9OID0gIlwKK0ZsYXNrLVJFU1RmdWwgaXMgYW4gZXh0ZW5zaW9uIGZvciBGbGFzayB0aGF0IGFkZHMgc3VwcG9ydCBmb3IgcXVpY2tseSBidWlsZGluZyBcCitSRVNUIEFQSXMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZmxhc2stcmVzdGZ1bC9mbGFzay1yZXN0ZnVsIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ODViYjU1ZWQ5OWEzNjZiYjQzMTk5NWY1ZWVmMjc4MyIKKworU1JDX1VSSVttZDVzdW1dID0gIjgyNDNjYTEwMTE4NWIxMzBkOGZhNTI5Y2JkYmRiZGRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3OTU1MTk1MDEzNDdlMTA4YzQzNmI2OTNmZjlhNGQ3YjM3M2EzYWM5MDY5NjI3ZDY0ZTQwMDFjMDVkZDM0MDciCisKK2luaGVyaXQgcHlwaQorCitQWVBJX1BBQ0tBR0UgPSAiRmxhc2stUkVTVGZ1bCIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LWZsYXNrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcmVzdGZ1bF8wLjMuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXJlc3RmdWxfMC4zLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk2OGQxZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXJlc3RmdWxfMC4zLjYuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWZsYXNrLXJlc3RmdWwuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zY3JpcHQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc2NyaXB0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2E3NzdiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc2NyaXB0LmluYwpAQCAtMCwwICsxLDEyIEBACitERVNDUklQVElPTiA9ICJTY3JpcHRpbmcgc3VwcG9ydCBmb3IgZmxhc2siCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU2ODYwNDhhZGI2OTM0MWZjOGEwOGNhZWRhNTI4YjQxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2ZiZDkxZmUxM2NlYmVkZmIyNDMxMzMxZjZlYWJiNjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjQyNTk2M2Q5MTA1NGNmY2MxODU4MDcxNDFjNzMxNGE5YzVhZDQ2MzI1OTExYmQyNGRjYjQ4OWJkMDE2MWM2NSIKKworUFlQSV9QQUNLQUdFID0gIkZsYXNrLVNjcmlwdCIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZmxhc2sgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNjcmlwdF8yLjAuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNjcmlwdF8yLjAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2Q1NWFmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc2NyaXB0XzIuMC42LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWZsYXNrLXNjcmlwdC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc3FsYWxjaGVteS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBlZmJjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXkuaW5jCkBAIC0wLDAgKzEsMTAgQEAKK0RFU0NSSVBUSU9OID0gIkFkZHMgU1FMQWxjaGVteSBzdXBwb3J0IHRvIHlvdXIgRmxhc2sgYXBwbGljYXRpb24uIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZWQxYjhjYzc0MTUxNWE4MzVhN2Y2YmYyZjYyZWY0YSIKKworU1JDX1VSSVttZDVzdW1dID0gIjM3M2NlNjFkZmQwM2I1OTNhZDJlYWJhNjhjOWZlZTM1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5NzFiOTg1MmI1ODg4NjU1ZjExZGI2MzRlODc3MjVhOTAzMWUxNzBmMzdjMGNlNzg1MWNmODM0OTdmNTZlNTMiCisKK1BZUElfUEFDS0FHRSA9ICJGbGFzay1TUUxBbGNoZW15IgorCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tc3FsYWxjaGVteSAke1BZVEhPTl9QTn0tZmxhc2siCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zcWxhbGNoZW15XzIuMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc3FsYWxjaGVteV8yLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc5OTc2Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zcWxhbGNoZW15XzIuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQWRkcyBTUUxBbGNoZW15IHN1cHBvcnQgdG8geW91ciBGbGFzayBhcHBsaWNhdGlvbi4iCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTVlZDFiOGNjNzQxNTE1YTgzNWE3ZjZiZjJmNjJlZjRhIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzg2NDQ5ZjQ0ZTkwZTk5NjE0Mjg3MmFjNGI5N2Y3ZWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGExOWZmNjJlMzFmODI4MjViNTQ2NzgxMWM3NmUyYTFjNjBiYmE5MjdlMTc1ZmUwOTFhNmY3MzkwNjNkZDgyOSIKLQotUFlQSV9QQUNLQUdFID0gIkZsYXNrLVNRTEFsY2hlbXkiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1zcWxhbGNoZW15ICR7UFlUSE9OX1BOfS1mbGFzayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXlfMi4zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zcWxhbGNoZW15XzIuMy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYzM1NWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zcWxhbGNoZW15XzIuMy4yLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXkuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay11cGxvYWRzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXVwbG9hZHMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkN2FjMWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay11cGxvYWRzLmluYwpAQCAtMCwwICsxLDEyIEBACitERVNDUklQVElPTiA9ICJGbGV4aWJsZSBhbmQgZWZmaWNpZW50IHVwbG9hZCBoYW5kbGluZyBmb3IgRmxhc2siCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1iNzEyYWM2MzRiMzk0Njk2NjBjOWJkZmI4ZDAzNDIxYyIKKworU1JDX1VSSVttZDVzdW1dID0gImU1ZWVlMzRhYTkyYjY0YTRkMjI4NDc2NzJiMzg1OGExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzZWNiZDYwMzM2NjdkNTBhZTAyYjYzYWRlYmJhYTMzYzdmYzU2YzA5ZTUyOTMwMjU4MTBjZjlkODQxZWNiMDIiCisKK1BZUElfUEFDS0FHRSA9ICJGbGFzay1VcGxvYWRzIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1mbGFzayBcCisgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stdXBsb2Fkc18wLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXVwbG9hZHNfMC4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM5YjA3ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXVwbG9hZHNfMC4yLjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tZmxhc2stdXBsb2Fkcy5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXVzZXIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stdXNlci5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJiNzE4MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXVzZXIuaW5jCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiQ3VzdG9taXphYmxlIHVzZXIgYWNjb3VudCBtYW5hZ2VtZW50IGZvciBGbGFzayIKK0RFU0NSSVBUSU9OID0gIkN1c3RvbWl6YWJsZSBVc2VyIEFjY291bnQgTWFuYWdlbWVudCBmb3IgRmxhc2s7IFJlZ2lzdGVyIFwKK0NvbmZpcm0gZW1haWwsIExvZ2luLCBDaGFuZ2UgdXNlcm5hbWUsIENoYW5nZSBwYXNzd29yZCwgRm9yZ290IFBhc3N3b3JkIFwKK2FuZCBtb3JlLiIKK0hPTUVQQUdFID0gIiBodHRwczovL2dpdGh1Yi5jb20vbGluZ3RoaW8vRmxhc2stVXNlciIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTk3ZGU5N2NkOWQ2ZTIzYzg4MTI5ZDg4NDU4OGNlNzFhIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjc5NjVlNjZjYTEzOWM4NDM2ODk2ZGEwN2U2NmMyMWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjAxYWJjYzAzNDNkZmJhZTBjNTYyNzNkOTgzNjJkNWNkYzI2NmFjODRkMjBiM2Y2NWEyMTJlNGEyYzgzYjMwMiIKKworUFlQSV9QQUNLQUdFID0gIkZsYXNrLVVzZXIiCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1mbGFzayBcCisgICAgJHtQWVRIT05fUE59LWZsYXNrLWxvZ2luIFwKKyAgICAke1BZVEhPTl9QTn0tZmxhc2stbWFpbCBcCisgICAgJHtQWVRIT05fUE59LWJhYmVsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stdXNlcl8wLjYuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay11c2VyXzAuNi4xOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTRkMzc3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stdXNlcl8wLjYuMTkuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tZmxhc2stdXNlci5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXd0Zi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay13dGYuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjOTA2NTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay13dGYuaW5jCkBAIC0wLDAgKzEsMTUgQEAKK0RFU0NSSVBUSU9OID0gIlNpbXBsZSBpbnRlZ3JhdGlvbiBvZiBGbGFzayBhbmQgV1RGb3Jtcy4iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNjYTZiYjMxNjcwNDkyZjc5MWU2YTlmMmZiOWY4YTgwIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTg2ZjUwZjIzMzkyNmNhZGU0MmUzZDc0NGFjYTNlOGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQxNGQ1NWNmZDM1ZjYxM2Q5OWVlN2NiYTBmYzNmYmJlNjNiYTAyZjU0NGQzNDkxNThjMTRjYTE1NTYxY2MzNiIKKworUFlQSV9QQUNLQUdFID0gIkZsYXNrLVdURiIKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UFlUSE9OX1BOfS1mbGFzayBcCisgICAgJHtQWVRIT05fUE59LWl0c2Rhbmdlcm91cyBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS13dGZvcm1zIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXd0Zi9pbXBvcnQtc2ltcGxlanNvbi1hcy1qc29uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2std3RmL2ltcG9ydC1zaW1wbGVqc29uLWFzLWpzb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3OGY3MDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2std3RmL2ltcG9ydC1zaW1wbGVqc29uLWFzLWpzb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVN1YmplY3Q6IFtQQVRDSF0gaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgotCi1BdCBydW50aW1lIHB5dGhvbi1GbGFzay1XVEYgdHJpZXMgdG8gaW1wb3J0IGpzb24sIGJ1dCB0aGUgbW9kdWxlIGlzIG5vdCAKLWF2YWlsYWJsZSwgaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbiBzb2x2ZSB0aGUgaXNzdWUuCi0KLVNpZ25lZC1vZmYtYnk6IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+Ci0tLS0KLSBmbGFza193dGYvcmVjYXB0Y2hhL3ZhbGlkYXRvcnMucHkgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9mbGFza193dGYvcmVjYXB0Y2hhL3ZhbGlkYXRvcnMucHkgYi9mbGFza193dGYvcmVjYXB0Y2hhL3ZhbGlkYXRvcnMucHkKLWluZGV4IGJjZmYyM2QuLjRhMjQ0YmIgMTAwNjQ0Ci0tLS0gYS9mbGFza193dGYvcmVjYXB0Y2hhL3ZhbGlkYXRvcnMucHkKLSsrKyBiL2ZsYXNrX3d0Zi9yZWNhcHRjaGEvdmFsaWRhdG9ycy5weQotQEAgLTgsNyArOCw3IEBAIGZyb20gZmxhc2sgaW1wb3J0IHJlcXVlc3QsIGN1cnJlbnRfYXBwCi0gZnJvbSB3dGZvcm1zIGltcG9ydCBWYWxpZGF0aW9uRXJyb3IKLSBmcm9tIHdlcmt6ZXVnIGltcG9ydCB1cmxfZW5jb2RlCi0gZnJvbSAuLl9jb21wYXQgaW1wb3J0IHRvX2J5dGVzLCB0b191bmljb2RlCi0taW1wb3J0IGpzb24KLStpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCi0gCi0gUkVDQVBUQ0hBX1ZFUklGWV9TRVJWRVIgPSAnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvYXBpL3NpdGV2ZXJpZnknCi0gUkVDQVBUQ0hBX0VSUk9SX0NPREVTID0gewotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay13dGZfMC4xMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXd0Zl8wLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWFmYWY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXd0Zl8wLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiU2ltcGxlIGludGVncmF0aW9uIG9mIEZsYXNrIGFuZCBXVEZvcm1zLiIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTA3ZTg2MzVmMjVhMDZkYzRmMDQxYTNhMWIzMzU5YjMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNTNhNzRlOGJhNDgxYmY1MzQwNWZkNWVmZGYwMzM5ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZDk5MzE2Yzk3ZWQxZDFjYjkwYjhmMGMyNDJjODY0MjBhODkxYTZhMjA1OGYyMDcxN2U0MjRiZjViMGJiODBlIgotCi1TUkNfVVJJICs9ICIgZmlsZTovL2ltcG9ydC1zaW1wbGVqc29uLWFzLWpzb24ucGF0Y2giCi0KLVBZUElfUEFDS0FHRSA9ICJGbGFzay1XVEYiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICBweXRob24td3Rmb3JtcyBcCi0gICAgcHl0aG9uLXNpbXBsZWpzb24gXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2std3RmXzAuMTQuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXd0Zl8wLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmMDkxYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXd0Zl8wLjE0LjIuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tZmxhc2std3RmLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2steHN0YXRpYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay14c3RhdGljLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWZlMTRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2steHN0YXRpYy5pbmMKQEAgLTAsMCArMSwxNiBAQAorREVTQ1JJUFRJT04gPSAiWFN0YXRpYyBzdXBwb3J0IGZvciBmbGFzayIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjU5OTY4ZjZlYmQ0YjcwYjZjMzE5MGQyMGI0YTkyNGMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZjU2MDIzZTE0NDRjOGJkMWZlYzQxYWZlOTNkZTc0MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMjZlYThlOTcwNjVhOTQ4OGI1OWJmZTVjOTRhZjRjNmUyZWE3MGEyNTA1MmUzMDFmYjIzMWExMzgxNDkwMTMzIgorCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tZmxhc2steHN0YXRpYzoiCitTUkNfVVJJICs9ICJmaWxlOi8vcmVtb3ZlLXBpcC1yZXF1aXJlcy5wYXRjaCIKKworUFlQSV9QQUNLQUdFID0gIkZsYXNrLVhTdGF0aWMiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWZsYXNrIFwKKyAgICAke1BZVEhPTl9QTn0teHN0YXRpYyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2steHN0YXRpYy9yZW1vdmUtcGlwLXJlcXVpcmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2steHN0YXRpYy9yZW1vdmUtcGlwLXJlcXVpcmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyZDYyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay14c3RhdGljL3JlbW92ZS1waXAtcmVxdWlyZXMucGF0Y2gKQEAgLTAsMCArMSw3IEBACistLS0gRmxhc2stWFN0YXRpYy0wLjAuMS9zZXR1cC5weS5vcmlnCTIwMTUtMDEtMzAgMDg6MDE6NTYuMDAwMDAwMDAwIC0wODAwCisrKysgRmxhc2stWFN0YXRpYy0wLjAuMS9zZXR1cC5weQkyMDE3LTA0LTE3IDIxOjQwOjMyLjU3MDE4MTYyNiAtMDcwMAorQEAgLTEsNCArMSwzIEBACistZnJvbSBwaXAucmVxIGltcG9ydCBwYXJzZV9yZXF1aXJlbWVudHMKKyBpbXBvcnQgc2V0dXB0b29scworIAorIHdpdGggb3BlbignUkVBRE1FLnJzdCcpIGFzIGY6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay14c3RhdGljXzAuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2steHN0YXRpY18wLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmYxNGE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2steHN0YXRpY18wLjAuMS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1mbGFzay14c3RhdGljLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2suaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2suaW5jCmluZGV4IDc2YjVmYmEuLmVjZjU2MTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay5pbmMKQEAgLTEzLDQgKzEzLDQgQEAKIAogUFlQSV9QQUNLQUdFID0gIkZsYXNrIgogCi1SREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0td2Vya3pldWcgJHtQWVRIT05fUE59LWppbmphMiAke1BZVEhPTl9QTn0taXRzZGFuZ2Vyb3VzICR7UFlUSE9OX1BOfS1jbGljayIKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS13ZXJremV1ZyAke1BZVEhPTl9QTn0td2Vya3pldWctdGVzdHMgJHtQWVRIT05fUE59LWppbmphMiAke1BZVEhPTl9QTn0taXRzZGFuZ2Vyb3VzICR7UFlUSE9OX1BOfS1jbGljayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZV8wLjE2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdXR1cmVfMC4xNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZjdmZTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdXR1cmVfMC4xNi4wLmJiCkBAIC0wLDAgKzEsMTMgQEAKK0RFU0NSSVBUSU9OID0gIkNsZWFuIHNpbmdsZS1zb3VyY2Ugc3VwcG9ydCBmb3IgUHl0aG9uIDMgYW5kIDIiCitIT01FUEFHRSA9ICJodHRwczovL3B5dGhvbi1mdXR1cmUub3JnIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9M2Y0NTc1MzhiMjk3YmQwZWY4NjU2NGI4YWMyMTZhZDciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZThlODhhMmJkYTQ4ZDU0YjFkYTc2MzRkMDQ3NjBkNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMzljZWQxYWI3NjdiNTkzNjY0NmNlZGJhOGJjY2U1ODIzOTgyMzNkNmE2MjcwNjdkNGM2YTQ1NGM5MGNmZWRiIgorCitQWVBJX1BBQ0tBR0VfSEFTSCA9ICI5OWFiZGU4MTU4NDJiYzZlOTdkNWE3ODA2YWQ1MTIzNjYzMGRhMTRjYTJmM2IxZmNlOTRjMGJiOTRkM2QiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudC5pbmMKaW5kZXggODg4OWNmYi4uMTM1MTNmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1nZXZlbnQuaW5jCkBAIC0xMSw3ICsxMSw2IEBACiBSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tZ3JlZW5sZXQgXAogCQkgICR7UFlUSE9OX1BOfS1taW1lIFwKIAkJICAke1BZVEhPTl9QTn0tcHByaW50IFwKLQkJICAke1BZVEhPTl9QTn0tcmUgXAogCQkgIgogCiBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tZ2V2ZW50OiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjIuMi5iYgppbmRleCBmMzU3Yzk1Li5mMTNiZmQ3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1nZXZlbnRfMS4yLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50XzEuMi4yLmJiCkBAIC0xLDMgKzEsNCBAQAogcmVxdWlyZSBweXRob24tZ2V2ZW50LmluYwogaW5oZXJpdCBzZXR1cHRvb2xzCiAKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncmVlbmxldC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncmVlbmxldC5pbmMKaW5kZXggMzU4MjBkYi4uN2E0MjI0MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdyZWVubGV0LmluYwpAQCAtMyw3ICszLDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAzMTQzZDdhMWE5ZjVkOGEwZmVlODI1ZjI0Y2E5YzM2IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuUFNGO21kNT1jMTA2OTMxZDk0MjllZGEwNDkyNjE3ZjAzN2I4ZjY5YSIKIAotU1JDX1VSSVttZDVzdW1dID0gImU4NjM3NjQ3ZDU4YTI2YzRhMWY1MWNhMzkzZTUzYzAwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU0Yzk5YzYwMTBhNWQxNTNkNDgxZmRhZjYzYjhhMDc4MjgyNWMwNzIxNTA2ZDg4MDQwM2EzYjliODJhZTM0N2UiCitTUkNfVVJJW21kNXN1bV0gPSAiNmUwYjlkZDUzODVmODFkNDc4NDUxZWM4ZWQxZDYyYjMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGZlZjgzZDQzYmY4N2E1MTk2YzkxZTczY2I5NzcyZjk0NWE0Y2FhZmY5MTI0Mjc2NmM1OTE2ZDFkZDEzODFlNCIKIAogaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncmVlbmxldF8wLjQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncmVlbmxldF8wLjQuMTMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdyZWVubGV0XzAuNC4xMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXRfMC40LjEzLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8tdG9vbHNfMS42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8tdG9vbHNfMS42LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYjEzNmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLXRvb2xzXzEuNi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiR29vZ2xlIGdSUEMgdG9vbHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdycGMuaW8vIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi0KLURFUEVORFMgPSAicHl0aG9uLWdycGNpbyIKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1ncnBjaW8iCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L0JTRC0zLUNsYXVzZTttZDU9NTUwNzk0NDY1YmEwZWM1MzEyZDY5MTllMjAzYTU1ZjkiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4MzVmMTkxNDJlMjZjYjdhZDY4Y2VjM2EwODNlY2RhMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1N2IzMTEwY2VkNTBhMThmMWIyYmY3ZGE1OGVkMDExZjU3Mjc4YjQ4MDg0ZWQ4MDEzYzY3YTM0ZDQyYTVjYTM3IgotCi0jIEZvciB1c2FnZSBpbiBvdGhlciByZWNpcGllcyB3aGVuIGNvbXBpbGluZyBwcm90b2J1ZiBmaWxlcyAoZS5nLiBieSBncnBjaW8tdG9vbHMpCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby10b29sc18xLjguNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby10b29sc18xLjguNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWUwY2MxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLXRvb2xzXzEuOC40LmJiCkBAIC0wLDAgKzEsMTcgQEAKK0RFU0NSSVBUSU9OID0gIkdvb2dsZSBnUlBDIHRvb2xzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ncnBjLmlvLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitERVBFTkRTID0gInB5dGhvbi1ncnBjaW8iCitSREVQRU5EU18ke1BOfSA9ICJweXRob24tZ3JwY2lvIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9CU0QtMy1DbGF1c2U7bWQ1PTU1MDc5NDQ2NWJhMGVjNTMxMmQ2OTE5ZTIwM2E1NWY5IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitTUkNfVVJJW21kNXN1bV0gPSAiZTA0ZTY1YWZlNjA0MTBjZjE3OGZmMjY5OGYwNTJhN2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWRjODRjMDkwMzlkM2EwMTAxMmNjZDk3NDUwYWJkMDZlZTZiOTgwNzEwZjZkOWYxOTFiNTBkZWI2Nzc0YTc1YyIKKworIyBGb3IgdXNhZ2UgaW4gb3RoZXIgcmVjaXBpZXMgd2hlbiBjb21waWxpbmcgcHJvdG9idWYgZmlsZXMgKGUuZy4gYnkgZ3JwY2lvLXRvb2xzKQorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vMDAwMS1zZXR1cC5weS1Eby1ub3QtbWl4LUMtYW5kLUMtY29tcGlsZXItb3B0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoCmluZGV4IDNhYmJjNmQuLjBjMWQ5NjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoCkBAIC0xOCwxOSArMTgsMTYgQEAKICBzZXR1cC5weSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGNiODUyNzMuLmY3OTg3OGQgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC0xMTYsNyArMTE2LDcgQEAgaWYgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyBpcyBOb25lOgotICAgZWxpZiAnd2luMzInIGluIHN5cy5wbGF0Zm9ybToKLSAgICAgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyArPSAnIC1EX1BZVEhPTl9NU1ZDJworSW5kZXg6IGdycGNpby0xLjguNC9zZXR1cC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdycGNpby0xLjguNC5vcmlnL3NldHVwLnB5CisrKysgZ3JwY2lvLTEuOC40L3NldHVwLnB5CitAQCAtMTE1LDcgKzExNSw3IEBAIGlmIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgaXMgTm9uZToKKyAgICAgZWxzZToKKyAgICAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLURfZnRpbWU9X2Z0aW1lNjQgLURfdGltZWI9X190aW1lYjY0JwogICAgZWxpZiAibGludXgiIGluIHN5cy5wbGF0Zm9ybToKIC0gICAgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyArPSAnIC1zdGQ9YysrMTEgLXN0ZD1nbnU5OSAtZnZpc2liaWxpdHk9aGlkZGVuIC1mbm8td3JhcHYgLWZuby1leGNlcHRpb25zJwogKyAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtZm5vLXdyYXB2IC1mbm8tZXhjZXB0aW9ucycKICAgIGVsaWYgImRhcndpbiIgaW4gc3lzLnBsYXRmb3JtOgotICAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtZm5vLXdyYXB2JworICAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtZm5vLXdyYXB2IC1mbm8tZXhjZXB0aW9ucycKICAKLS0tIAotMi4xMy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpb18xLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpb18xLjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE1NWY0Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW9fMS42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJHb29nbGUgZ1JQQyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JwYy5pby8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLQotREVQRU5EUyA9ICJweXRob24tcHJvdG9idWYiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoIFwKLSAgICAgICAgICAgIgotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWVudW0zNCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZnV0dXJlcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcHJvdG9idWYgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXNldHVwdG9vbHMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXNpeCBcCi0iCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L0JTRC0zLUNsYXVzZTttZDU9NTUwNzk0NDY1YmEwZWM1MzEyZDY5MTllMjAzYTU1ZjkiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjOTFiOGMxMDVmZjQxNjNiNDE3OTBmM2I2M2RiOTJlMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2Y2Q3OTNkNTE1ZWM1MzU4N2E4OTY4ZjJhNTM2NDdmMTQ0OTc2M2FkMDZiZTBkMjg3ZTNjMWU0NzQxOGUxZTUwIgotCi0jIEZvciB1c2FnZSBpbiBvdGhlciByZWNpcGVzIHdoZW4gY29tcGlsaW5nIHByb3RvYnVmIGZpbGVzIChlLmcuIGJ5IGdycGNpby10b29scykKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvXzEuOC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvXzEuOC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYzlkODQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW9fMS44LjQuYmIKQEAgLTAsMCArMSwyNSBAQAorREVTQ1JJUFRJT04gPSAiR29vZ2xlIGdSUEMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdycGMuaW8vIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCisKK0RFUEVORFMgPSAicHl0aG9uLXByb3RvYnVmIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoICIKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWVudW0zNCBcCisgICAgICAgICAgICAgICAgICBweXRob24tZnV0dXJlcyBcCisgICAgICAgICAgICAgICAgICBweXRob24tcHJvdG9idWYgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXNldHVwdG9vbHMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXNpeCBcCisiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L0JTRC0zLUNsYXVzZTttZDU9NTUwNzk0NDY1YmEwZWM1MzEyZDY5MTllMjAzYTU1ZjkiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ODYwZjdjNjFkZTM4OTAzMjM2NzBiN2IxZmY2M2U1NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4OGQ4N2FhYjljNzg4OWIzYWIyOWRkNzRhYWMxYTU0OTNlZDc4YjliZjVhZmJhMWMwNjljOWRkNTUzMWY5NTFkIgorCisjIEZvciB1c2FnZSBpbiBvdGhlciByZWNpcGVzIHdoZW4gY29tcGlsaW5nIHByb3RvYnVmIGZpbGVzIChlLmcuIGJ5IGdycGNpby10b29scykKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHRtbDVsaWIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHRtbDVsaWIuaW5jCmluZGV4IDljNTllMGQuLjBlYjhiZjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh0bWw1bGliLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odG1sNWxpYi5pbmMKQEAgLTIsMTMgKzIsMTQgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWJhNWFkYTllNmZlYWQxZmRjMzJmNDNjOWYxMGJhN2MiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI4NTc4ZTRlM2EzNDE0MzZjYjk3NDNhOWU0YTI5OTIzOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZTc0N2MwZmZkMzAyOGQyNzIyMDYxOTM2YjVjNjVlZTRmZTEzYzhlNDYxMzUxOWI0NDQ3MTIzZmM0NTQ2Mjk4IgorU1JDX1VSSVttZDVzdW1dID0gIjk0MmEwNjg4ZDZiZGYyMGQwODdjOTgwNWM0MDE4MmFkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2Y2IwZGNmZGJiYzRmOWMzYmExYTYzZmRiNTExZmZkYmQ0ZjUxM2IyYjZkODFiODBjZDI2Y2U2YjNmYjM3MzYiCiAKIGluaGVyaXQgcHlwaQogCiBSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1seG1sIFwKICAgICAke1BZVEhPTl9QTn0tc2l4IFwKICAgICAke1BZVEhPTl9QTn0td2ViZW5jb2RpbmdzIFwKICAgICAke1BZVEhPTl9QTn0teG1sIFwKLSAgICAiCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odG1sNWxpYl8wLjk5OTk5OTk5OS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh0bWw1bGliXzEuMC4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odG1sNWxpYl8wLjk5OTk5OTk5OS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHRtbDVsaWJfMS4wLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh1bWFuaXplLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh1bWFuaXplLmluYwppbmRleCBkOWZhYzA5Li4xN2EzNDQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odW1hbml6ZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHVtYW5pemUuaW5jCkBAIC03LDQgKzcsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gImU4NDczZDlkYzFiMjIwOTExY2FjMmVkZDUzYjFkOTczIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImE0M2Y1NzExNTgzMWFjN2M3MGRlMDk4ZTZhYzQ2YWMxM2JlMDBkNjlhYmJmNjBiZGNhYzI1MTM0NDc4NWJiMTkiCiAKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyIKKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW5jcmVtZW50YWwuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW5jcmVtZW50YWwuaW5jCmluZGV4IDM2NzU0NTguLmI2M2ZhYzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWluY3JlbWVudGFsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbmNyZW1lbnRhbC5pbmMKQEAgLTEyLDMgKzEyLDkgQEAKICAgICAke1BZVEhPTl9QTn0tdHdpc3RlZCBcCiAgICAgJHtQWVRIT05fUE59LWNsaWNrIFwKICIKKworIyAtbmF0aXZlIGlzIG5lZWRlZCB0byBidWlsZCBweXRob25bM10tdHdpc3RlZCwgaG93ZXZlciwgd2UgbmVlZCB0byB0YWtlIHN0ZXBzIHRvCisjIHByZXZlbnQgYSBjaXJjdWxhciBkZXBlbmRlbmN5LiBUaGUgYnVpbGQgYXBwYXJlbnRseSBkb2VzIG5vdCB1c2UgdGhlIHBhcnQgb2YKKyMgcHl0aG9uLWluY3JlbWVudGFsIHdoaWNoIHVzZXMgcHl0aG9uLXR3aXN0ZWQsIHNvIHRoaXMgaGFjayBpcyBPSy4KK1JERVBFTkRTXyR7UFlUSE9OX1BOfS1pbmNyZW1lbnRhbC1uYXRpdmVfcmVtb3ZlID0gIiR7UFlUSE9OX1BOfS10d2lzdGVkLW5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlwYWRkcmVzc18xLjAuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pcGFkZHJlc3NfMS4wLjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzRmNTg5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlwYWRkcmVzc18xLjAuMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiAzLjMrJ3MgaXBhZGRyZXNzIGZvciBQeXRob24gMi42LCAyLjcsIDMuMi4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcGhpaGFnL2lwYWRkcmVzcyIKLUxJQ0VOU0UgPSAiUHl0aG9uLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTdmNTM4NTg0Y2MzNDA3YmY3NjA0MmRlZjcxNjg1NDhhIgotCi1ERVBFTkRTICs9ICJweXRob24tcGlwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzEwYzJkZmQ2NGViNmYwZGY0NGFhOGM1OWYyMzM0YTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQ4NTM0YzhlMTg1ZjJkOGExZmRhMWVmNzNmMmM4ZjRiMjMyNjRlOGUzMDA2M2ZlZWI5NTExZDQ5MmE0MTNlMSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXBhZGRyZXNzXzEuMC4xOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlwYWRkcmVzc18xLjAuMTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM1MGI0NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlwYWRkcmVzc18xLjAuMTkuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJQeXRob24gMy4zKydzIGlwYWRkcmVzcyBmb3IgUHl0aG9uIDIuNiwgMi43LCAzLjIuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3BoaWhhZy9pcGFkZHJlc3MiCitMSUNFTlNFID0gIlB5dGhvbi0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03ZjUzODU4NGNjMzQwN2JmNzYwNDJkZWY3MTY4NTQ4YSIKKworREVQRU5EUyArPSAicHl0aG9uLXBpcCIKKworU1JDX1VSSVttZDVzdW1dID0gImQwNjg3ZWZhZjkzYTMyNDc2ZDgxZTkwYmEwNjA5YzU3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwMGQ4Njg2MDExZDQ3MGI1ZTRkZTIwN2Q4MDM0NDVkZWVlNDI3NDU1Y2QwY2I3Yzk4MmI2OGNmODI1MjRmODEiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzbzg2MDEuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvODYwMS5pbmMKaW5kZXggNDVkYTc1Zi4uNjFlOWFiYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvODYwMS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvODYwMS5pbmMKQEAgLTYsNCArNiw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiNGRlOTQwZjY5MWM1ZWE3NTlmYjI1NDM4NGM4ZGRjZjYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDljNGIyMGUxZjM4YWE1Y2YxMDlkZGNkMzk2NDdhYzQxOWY5Mjg1MTJjODY5ZGMwMWQ1YzcwOThlZGRlZGU4MiIKIAorUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorIgorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29ydC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29ydC5pbmMKaW5kZXggOTg4NGM0NC4uNmQxM2U1ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvcnQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0LmluYwpAQCAtNCw3ICs0LDEyIEBACiBTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODIyNzE4MDEyNjc5N2EwMTQ4Zjk0ZjQ4M2YzZTE0ODkiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIzNDkxNWEyY2U2MGU2ZmUzZGJjYmY1OTgyZGVlZjliNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3OWY0NjE3MmQzYTRlMmU1M2U3MDE2ZTY2M2NjN2E4YjUzOGJlYzUyNWMzNjY3NWZjZmQyNzY3ZGYzMGIzOTgzIgorU1JDX1VSSVttZDVzdW1dID0gImZiNTU0ZTljOGY5YWE3NmUzMzNhMDNkNDcwYTVjZjUyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5YzQwZTk3NTBmM2Q3N2U2ZTRkNDQxZDhiMDI2NmNmNTU1ZTdjZGFiZGNmZjMzYzRmZDA2MzY2Y2E3NjFlZjgiCiAKIGluaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0XzQuMi4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0XzQuMy40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29ydF80LjIuMTUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0XzQuMy40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pdHNkYW5nZXJvdXMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXRzZGFuZ2Vyb3VzLmluYwppbmRleCA3Mzk1MWZhLi44NGY5ZTc3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pdHNkYW5nZXJvdXMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWl0c2Rhbmdlcm91cy5pbmMKQEAgLTcsMyArNyw4IEBACiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2JiM2ZjZjhkM2UzM2RmODYxNzA5ZWNhZjg5ZDllNjYyOWNmZjBhMjE3YmMyODQ4ZjFiNDFjZDMwZDM2MDUxOSIKIAogQ0xFQU5CUk9LRU4gPSAiMSIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXNpbXBsZWpzb24gXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXRzZGFuZ2Vyb3VzXzAuMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pdHNkYW5nZXJvdXNfMC4yNC5iYgppbmRleCAwZTE1NmJlLi44Yzk5Y2I0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pdHNkYW5nZXJvdXNfMC4yNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pdHNkYW5nZXJvdXNfMC4yNC5iYgpAQCAtMSwyICsxLDYgQEAKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCiByZXF1aXJlIHB5dGhvbi1pdHNkYW5nZXJvdXMuaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS16bGliIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWphdmFvYmotcHkzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWphdmFvYmotcHkzLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGU4MDJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamF2YW9iai1weTMuaW5jCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiTW9kdWxlIGZvciBzZXJpYWxpemluZyBhbmQgZGUtc2VyaWFsaXppbmcgSmF2YSBvYmplY3RzLiIKK0RFU0NSSVBUSU9OID0gInB5dGhvbi1qYXZhb2JqIGlzIGEgcHl0aG9uIGxpYnJhcnkgdGhhdCBwcm92aWRlcyBmdW5jdGlvbnNcCisgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgKHdyaXRpbmcgaXMgV0lQIGN1cnJlbnRseSkgSmF2YSBvYmplY3RzIHNlcmlhbGl6ZWRcCisgb3Igd2lsbCBiZSBkZXNlcmlhbGl6ZWQgYnkgT2JqZWN0T3V0cHV0U3RyZWFtLiBUaGlzIGZvcm0gb2Ygb2JqZWN0XAorIHJlcHJlc2VudGF0aW9uIGlzIGEgc3RhbmRhcmQgZGF0YSBpbnRlcmNoYW5nZSBmb3JtYXQgaW4gSmF2YSB3b3JsZC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGNhbG1hbnQvcHl0aG9uLWphdmFvYmoiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9qYXZhb2JqLnB5O2JlZ2lubGluZT0yMTtlbmRsaW5lPTMzO21kNT04YjUwNDQxOWNlNzhmODEzM2IyMWI0ZDRhODllZjdlOSIKKworU1JDX1VSSVttZDVzdW1dID0gImY2NjliYjgwOTkzODBlM2RkODRkYjNkNTQyYWE1YjY4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4YjBkMzEwZmQ5N2UxYzc5MTRkNzkxMWVlOWQzZjRiM2Q4NGQyYTY3NGFhOTVhNGIwZGEzZDhmMTU1ZmMxYmIiCisKK2luaGVyaXQgcHlwaQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qYXZhb2JqLXB5M18wLjIuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWphdmFvYmotcHkzXzAuMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMzQ3NDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qYXZhb2JqLXB5M18wLjIuNC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLWphdmFvYmotcHkzLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qaW5qYTIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyLmluYwppbmRleCAzNWNiYjBiLi4wYzBiZjBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qaW5qYTIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMi5pbmMKQEAgLTQsMTIgKzQsMTIgQEAKIAogUFlQSV9QQUNLQUdFID0gIkppbmphMiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjY0MTE1MzczMjRiNGRiYTA5NTZhYWE4MTA5ZjNjNzdiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRkYWEwMWEyMTJjZDZkNjQxNDAxY2IwMWI2MDVmNGE0ZDlmMzdiZmM5MzA0M2Q3Zjc2MGVjNzBmYjk5ZmY5ZmYiCitTUkNfVVJJW21kNXN1bV0gPSAiNjFlZjExMTdmOTQ1NDg2NDcyODUwODE5YjhkMWViM2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjg0YmUxYmIwMDQwY2FjYTRjZWE3MjFmY2JiYmJkNjFmOWJlOTQ2NGNhMjM2Mzg3MTU4YjBmZWVhMDE5MTRhNCIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcGlja2xlICR7UFlUSE9OX1BOfS1jcnlwdCBcCi0gICAgJHtQWVRIT05fUE59LW1hdGggJHtQWVRIT05fUE59LW5ldGNsaWVudCAke1BZVEhPTl9QTn0tcmUgJHtQWVRIT05fUE59LXRleHR1dGlscyBcCi0gICAgJHtQWVRIT05fUE59LWxhbmcgJHtQWVRIT05fUE59LXBwcmludCAke1BZVEhPTl9QTn0tc2hlbGwgJHtQWVRIT05fUE59LW1hcmt1cHNhZmUgXAorICAgICR7UFlUSE9OX1BOfS1tYXRoICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgJHtQWVRIT05fUE59LXNoZWxsICR7UFlUSE9OX1BOfS1tYXJrdXBzYWZlIFwKICAgICAke1BZVEhPTl9QTn0tanNvbiAke1BZVEhPTl9QTn0tdGhyZWFkaW5nICR7UFlUSE9OX1BOfS1udW1iZXJzIgogCiBDTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyXzIuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qaW5qYTJfMi4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjMzY2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyXzIuMTAuYmIKQEAgLTAsMCArMSw4IEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tamluamEyLmluYworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tbGFuZyBcCisgICAgJHtQWVRIT05fUE59LXJlIFwKKyAgICAke1BZVEhPTl9QTn0tdGV4dHV0aWxzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMl8yLjkuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMl8yLjkuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM4ZTdlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qaW5qYTJfMi45LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1qaW5qYTIuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucGF0Y2guaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDljMDlhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoLmluYwpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZICA9ICJBcHBsaW5nIEpTT04gcGF0Y2hlcyBpbiBQeXRob24gMi42KyBhbmQgMy54IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3N0ZWZhbmtvZWdsL3B5dGhvbi1qc29uLXBhdGNoIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMmIxNWM4NDNiN2EzMjkxMzBmNGUyNjZhMjgxZWJiMyIKKworaW5oZXJpdCBweXBpCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4M2M0YzlmYWNjYjRhMmZmOGMxZGI4MGNiZGRjNTkwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0OWYyOWNhYjcwZTkwNjhkYjNiMWRjNmI2NTZjYmUyZWU0ZWRmN2RmZTliZjVhMDA1NWYxN2E0YjY4MDRhNGI5IgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWpzb24gJHtQWVRIT05fUE59LWpzb25wb2ludGVyICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgJHtQWVRIT05fUE59LXN0cmluZ29sZCIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoXzEuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucGF0Y2hfMS4xNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJjNjFhNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucGF0Y2hfMS4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVNVTU1BUlkgID0gIkFwcGxpbmcgSlNPTiBwYXRjaGVzIGluIFB5dGhvbiAyLjYrIGFuZCAzLngiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc3RlZmFua29lZ2wvcHl0aG9uLWpzb24tcGF0Y2giCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMyYjE1Yzg0M2I3YTMyOTEzMGY0ZTI2NmEyODFlYmIzIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGVmMWNlYjAwZGNmOTkyYzllNDM2MTFmNjk4ZjkyNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjAyNWMyOGEwOGNlNzQ3NDI5ZWU3NDZiYjIxNzk2YzNiNjQxN2VjODIyODhmOGZlNjUxNGRiNzM5OGYyYWY4YSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1qc29uICR7UFlUSE9OX1BOfS1qc29ucG9pbnRlciAke1BZVEhPTl9QTn0tbmV0Y2xpZW50ICR7UFlUSE9OX1BOfS1yZSAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucGF0Y2hfMS4yMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wYXRjaF8xLjIzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwY2QzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucGF0Y2hfMS4yMy5iYgpAQCAtMCwwICsxLDQgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tanNvbnBhdGNoLmluYworCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXJlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBvaW50ZXIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBvaW50ZXIuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZDAxZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlci5pbmMKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJSZXNvbHZlIEpTT04gUG9pbnRlcnMgaW4gUHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3N0ZWZhbmtvZWdsL3B5dGhvbi1qc29uLXBvaW50ZXIiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zMmIxNWM4NDNiN2EzMjkxMzBmNGUyNjZhMjgxZWJiMyIKKworaW5oZXJpdCBweXBpCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NDFiOThkMGU2OTNiMDhiNWU0NGUwYTlkYTVhN2JiNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMTkyYmE4NjY0OGUwNWZkYWU0ZjA4YTE3ZWMyNTE4MGE5YWVmNTAwOGQ5NzM0MDdiNTgxNzk4YTgzOTc1MzYyIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlcl8xLjEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBvaW50ZXJfMS4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVjMWFhOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlcl8xLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJSZXNvbHZlIEpTT04gUG9pbnRlcnMgaW4gUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3N0ZWZhbmtvZWdsL3B5dGhvbi1qc29uLXBvaW50ZXIiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMyYjE1Yzg0M2I3YTMyOTEzMGY0ZTI2NmEyODFlYmIzIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWFhYWQ3OWU5ODNkNThlY2JlZTViNGEzMjY3MjM3NzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODE5YjZkZDRmZDBhMThhYzIxOWUwMmEwMTE3ZjI0YjJkMzEyOTZiMGM0NzVjMzM4NjJjZmE5YTE2MTZkNjJjMyIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1yZSBweXRob24tanNvbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wb2ludGVyXzIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wb2ludGVyXzIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTNhNzc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBvaW50ZXJfMi4wLmJiCkBAIC0wLDAgKzEsNCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1qc29ucG9pbnRlci5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1yZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25zY2hlbWEuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnNjaGVtYS5pbmMKaW5kZXggZGI1N2M2OS4uNmZkYzAyNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnNjaGVtYS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnNjaGVtYS5pbmMKQEAgLTExLDE3ICsxMSwxMyBAQAogICAgICR7UFlUSE9OX1BOfS1jb3JlIFwKICAgICAke1BZVEhPTl9QTn0taW8gXAogICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICAke1BZVEhPTl9QTn0tbGFuZyBcCiAgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCiAgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAogICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKICAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKLSAgICAke1BZVEhPTl9QTn0tcmUgXAogICAgICR7UFlUSE9OX1BOfS1yZmMzOTg3IFwKICAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAogICAgICR7UFlUSE9OX1BOfS1zdHJpY3QtcmZjMzMzOSBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotICAgICR7UFlUSE9OX1BOfS10ZXh0dXRpbHMgXAogICAgICR7UFlUSE9OX1BOfS11bml0dGVzdCBcCiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25zY2hlbWFfMi42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29uc2NoZW1hXzIuNi4wLmJiCmluZGV4IDNiYjUyMjAuLmI2NzdjNjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25zY2hlbWFfMi42LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnNjaGVtYV8yLjYuMC5iYgpAQCAtNSw0ICs1LDggQEAKICAgICAke1BZVEhPTl9QTn0tYXJncGFyc2UgXAogICAgICR7UFlUSE9OX1BOfS1jb250ZXh0bGliIFwKICAgICAke1BZVEhPTl9QTn0tZnVuY3Rvb2xzMzIgXAorICAgICR7UFlUSE9OX1BOfS1sYW5nIFwKKyAgICAke1BZVEhPTl9QTn0tcmUgXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyAgICAke1BZVEhPTl9QTn0tdGV4dHV0aWxzIFwgCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sb2NrZmlsZV8wLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sb2NrZmlsZV8wLjEyLjIuYmIKaW5kZXggY2QxNTc2MC4uOWFkODY1ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbG9ja2ZpbGVfMC4xMi4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxvY2tmaWxlXzAuMTIuMi5iYgpAQCAtMTEsMyArMTEsOSBAQAogCiBTUkNfVVJJW21kNXN1bV0gPSAiYTZhMWE4Mjk1N2EyM2FmZGY0NGNmZGQwMzliNjVmZjkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmFlZDAyZGUwM2NiYTI0ZWZhYmNkNjAwYjMwNTQwMTQwNjM0ZmMwNmNmYTYwMzgyMmQ1MDhkNTM2MWU5Zjc5OSIKKworIyBTYXRpc2Z5IHNldHVwLnB5ICdzZXR1cF9yZXF1aXJlcycKK0RFUEVORFMgKz0gIiBcCisgICAgICAgIHB5dGhvbi1wYnItbmF0aXZlIFwKKyAgICAgICAgIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwuaW5jCmluZGV4IDdjMGE3ZDcuLjNmM2ExZTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwuaW5jCkBAIC0xMSwxNSArMTEsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9saWNlbnNlcy9lbGVtZW50dHJlZS50eHQ7bWQ1PWViMzRkMDM2YTZlM2Q1NjMxNGVlNDlhNjg1MmFjODkxIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9saWNlbnNlcy9CU0QudHh0O21kNT03MDBhMWZjMTdmNDc5N2Q0ZjJkMzQ5NzBjOGVlNjk0YiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvbGljZW5zZXMvR1BMLnR4dDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMvcm5nL2lzby1zY2hlbWF0cm9uLnJuZztzdGFydGxpbmU9MjtlbmRsaW5lPTc7bWQ1PWEyOTE0ZDEyYWNjNzA2NmIzZjViNjBlOGY5NGEwMTJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9pc28tc2NoZW1hdHJvbi14c2x0MS9pc29fc2NoZW1hdHJvbl9tZXNzYWdlLnhzbDtzdGFydGxpbmU9MjtlbmRsaW5lPTI0O21kNT05Njk3NmRjYzY2MjQ5YzUxZTgwMjZiMTU5Y2E1ZTc1NSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy94c2wvUk5HMlNjaHRybi54c2w7c3RhcnRsaW5lPTI7ZW5kbGluZT03O21kNT01Y2FjNGFkNGI1ZTEzMWExMGU5YWY3NTViMTBmYmJiNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbHhtbC9pc29zY2hlbWF0cm9uL3Jlc291cmNlcy9ybmcvaXNvLXNjaGVtYXRyb24ucm5nO2JlZ2lubGluZT0yO2VuZGxpbmU9NzttZDU9OTM5ZTc0MzBjZTg1ZTEyNDJmZjUwYzRlZTk0MzA3NTIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2x4bWwvaXNvc2NoZW1hdHJvbi9yZXNvdXJjZXMveHNsL2lzby1zY2hlbWF0cm9uLXhzbHQxL2lzb19zY2hlbWF0cm9uX21lc3NhZ2UueHNsO2JlZ2lubGluZT0yO2VuZGxpbmU9MjQ7bWQ1PWNjODZiN2IyYmJjNjc4ZTEzZjU4ZWE0MDNlYjk5MjliIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9seG1sL2lzb3NjaGVtYXRyb24vcmVzb3VyY2VzL3hzbC9STkcyU2NodHJuLnhzbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTc7bWQ1PTViMDMyMzZkMjkzZGMzNzg0MjA1NTQyYjQwOWQyZjUzIFwKICAgICAgICAgICAgICAgICAgICAgIgogCiBERVBFTkRTICs9ICJsaWJ4bWwyIGxpYnhzbHQiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIyNDc1ODBiZDVkOTQyODcyYmQ5NzJhZDAwODZlNWNiZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZTNhYWViNWY0NjhhNDlmNTIzZjE2NzM2Y2NmZjdkODJhZjJiNGIzMDMyOTJiYTNkMDUyYjViMjhmM2ZiZTQ3IgorU1JDX1VSSVttZDVzdW1dID0gImMyNjZkOTA2MmUyM2IwOGY2NjQyNjk3OWEyYjM2ZjUxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyNjI5Y2RiY2FkODJiODM5MjJhMzQ4ODkzNzYzMmE0OTgzZWNjMGZlZDNlNWNmYmY0MzBkMDY5MzgyZWViOWIiCiAKIERJU1RVVElMU19CVUlMRF9BUkdTICs9ICIgXAogICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXhzbHQtY29uZmlnPSdwa2ctY29uZmlnIGxpYnhzbHQnIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWxfNC4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sXzQuMi4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sXzQuMS4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sXzQuMi4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0by8wMDAxLXNldHVwLnB5LWxpbmstaW4tc3lzcm9vdC1ub3QtaW4taG9zdC1kaXJlY3Rvcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvLzAwMDEtc2V0dXAucHktbGluay1pbi1zeXNyb290LW5vdC1pbi1ob3N0LWRpcmVjdG9yaWVzLnBhdGNoCmluZGV4IDgxOWM4ZTUuLmM3MWIxNmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvLzAwMDEtc2V0dXAucHktbGluay1pbi1zeXNyb290LW5vdC1pbi1ob3N0LWRpcmVjdG9yaWVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvLzAwMDEtc2V0dXAucHktbGluay1pbi1zeXNyb290LW5vdC1pbi1ob3N0LWRpcmVjdG9yaWVzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmMTFiOWM3MTA4MDUxM2Y5Yjg2N2JhOGY0MDYxM2JhMmViYzZlOTYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkZmI4M2E0MWFhZWFlMzI2ZTliNmYwMmIyMzNhZjM3NWJjN2I4ODE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KIERhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMTU6MTc6MTcgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gc2V0dXAucHk6IGxpbmsgaW4gc3lzcm9vdCwgbm90IGluIGhvc3QgZGlyZWN0b3JpZXMKQEAgLTEwLDEyICsxMCwxMiBAQAogIHNldHVwLnB5IHwgNiArKystLS0KICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCi1JbmRleDogTTJDcnlwdG8tMC4yMy4wL3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gTTJDcnlwdG8tMC4yMy4wLm9yaWcvc2V0dXAucHkKLSsrKyBNMkNyeXB0by0wLjIzLjAvc2V0dXAucHkKLUBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIF9NMkNyeXB0b0J1aWxkRXh0KGJ1aWxkX2V4dC5idWlsZF8KLSAgICAgICAgICAgICBzZWxmLm9wZW5zc2wgPSAnYzpcXHBrZycKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCAzNDA3YzgyLi4xNWVkN2NkIDEwMDY0NAorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtMTI3LDcgKzEyNyw3IEBAIGNsYXNzIF9NMkNyeXB0b0J1aWxkRXh0KGJ1aWxkX2V4dC5idWlsZF9leHQpOgorICAgICAgICAgICAgICAgICBzZWxmLm9wZW5zc2wgPSBvcy5wYXRoLmpvaW4oc2VsZi5vcGVuc3NsLCAnT3BlblNTTCcpCiAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgIHNlbGYubGlicmFyaWVzID0gWydzc2wnLCAnY3J5cHRvJ10KIC0gICAgICAgICAgICBzZWxmLm9wZW5zc2wgPSAnL3VzcicKQEAgLTIzLDcgKzIzLDcgQEAKICAKICAgICAgZGVmIGZpbmFsaXplX29wdGlvbnMoc2VsZik6CiAgICAgICAgICAnJydPdmVybG9hZGVkIGJ1aWxkX2V4dCBpbXBsZW1lbnRhdGlvbiB0byBhcHBlbmQgY3VzdG9tIG9wZW5zc2wKLUBAIC03NSw4ICs3NSw4IEBAIGNsYXNzIF9NMkNyeXB0b0J1aWxkRXh0KGJ1aWxkX2V4dC5idWlsZF8KK0BAIC0xNDMsOCArMTQzLDggQEAgY2xhc3MgX00yQ3J5cHRvQnVpbGRFeHQoYnVpbGRfZXh0LmJ1aWxkX2V4dCk6CiAgICAgICAgICBpZiBfb3BlbnNzbCBhbmQgb3MucGF0aC5pc2Rpcihfb3BlbnNzbCk6CiAgICAgICAgICAgICAgc2VsZi5vcGVuc3NsID0gX29wZW5zc2wKICAKQEAgLTM0LDMgKzM0LDYgQEAKICAKICAgICAgICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICJMaW51eCI6CiAgICAgICAgICAgICAgaWYgX211bHRpYXJjaDogICMgb24gRmVkb3JhL1JIRUwgaXQgaXMgYW4gZW1wdHkgc3RyaW5nCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha28uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrby5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlmYTU1NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha28uaW5jCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQSBzdXBlci1mYXN0IHRlbXBsYXRpbmcgbGFuZ3VhZ2UgdGhhdCBib3Jyb3dzIHRoZSBiZXN0IGlkZWFzIGZyb20gdGhlIGV4aXN0aW5nIHRlbXBsYXRpbmcgbGFuZ3VhZ2VzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tYWtvdGVtcGxhdGVzLm9yZy8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWJiMjFmYTJkMmY3YTUzNGM4ODRiOTkwNDMwYTY4NjMiCisKK1BZUElfUEFDS0FHRSA9ICJNYWtvIgorCitpbmhlcml0IHB5cGkKKworU1JDX1VSSVttZDVzdW1dID0gIjU4MzZjYzk5N2IxYjc3M2VmMzg5YmY2NjI5YzMwZTY1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRlMDJmZGU1N2JkNGFiYjVlYzQwMDE4MWU0YzMxNGY1NmFjM2U0OWJhNGZiOGIwZDUwYmJhMThjYjI3ZDI1YWUiCisKK1JERVBFTkRTXyR7UE59ID0gIiBcCisgICAgJHtQWVRIT05fUE59LWh0bWwgXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha29fMS4wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvXzEuMC43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNzJlZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvXzEuMC43LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1tYWtvLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlLmluYwppbmRleCBlNTBmOGNlLi45MjdmODQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlLmluYwpAQCAtOSw0ICs5LDQgQEAKIFBZUElfUEFDS0FHRSA9ICJNYXJrdXBTYWZlIgogaW5oZXJpdCBweXBpCiAKLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcmUgJHtQWVRIT05fUE59LXN0cmluZ29sZCIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tc3RyaW5nb2xkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlXzEuMC5iYgppbmRleCA1Yzk4ODRiLi4wNWJiZThhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlXzEuMC5iYgpAQCAtMSw0ICsxLDYgQEAKIGluaGVyaXQgc2V0dXB0b29scwogcmVxdWlyZSBweXRob24tbWFya3Vwc2FmZS5pbmMKIAorUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1yZSIKKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ub3RvbmljXzEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU5MWQxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aW1lLm1vbm90b25pYygpIGZvciBQeXRob24gMi4wIHRocm91Z2ggMy4yIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDI3OTRjMGRmNWI5MDdmZGFjZTIzNWE2MTlkODAzMTQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNDM1MTI1MWQxYTY3NjY3YTI1Y2Q3NjczZDJlNDRiZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYjQ2OWUyZDdkZDQwM2Y3ZjdmNzkyMjdmZTVhZDU1MWVlMWU3NmY4YmIzMDBhZTkzNTIwOTg4NGI5M2M3YzFiIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWN0eXBlcyAke1BZVEhPTl9QTn0taW8gJHtQWVRIT05fUE59LXJlICR7UFlUSE9OX1BOfS10aHJlYWRpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ub3RvbmljXzEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzVkOGFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ub3RvbmljXzEuNC5iYgpAQCAtMCwwICsxLDEwIEBACitTVU1NQVJZID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIHRpbWUubW9ub3RvbmljKCkgZm9yIFB5dGhvbiAyLjAgdGhyb3VnaCAzLjIiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMjc5NGMwZGY1YjkwN2ZkYWNlMjM1YTYxOWQ4MDMxNCIKKworU1JDX1VSSVttZDVzdW1dID0gIjI5MzAyY2Q2YjEwMTNiM2FiMGQxZWQ3OGUyMGQyMmYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwMjYxMWQ1YjUxOGNkNDA1MWJmMjJkMjFiZDBhZTU1YjNhMDNmMmQyOTkzYTE5YjZjOTBkOWQxNjg2OTFmODQiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY3R5cGVzICR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcmUgJHtQWVRIT05fUE59LXRocmVhZGluZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1zZ3BhY2suaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFjay5pbmMKaW5kZXggMjI4Y2U1OS4uZmRjODkyNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFjay5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFjay5pbmMKQEAgLTIsOCArMiwxMiBAQAogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2Q5NTIzMTgxZDlkNGZiZjdmZmNhNTJlYWEyYTU3NTEiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJkY2Q4NTRmYjQxZWU3NTg0ZWJiZjM1ZTA0OWU2YmU5OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYTJiMTlkZjBmMDM1MTllYzdmMTlmODI2YWZiOTM1YjIwMmQ4OTc5YjA4NTZjNmZiM2RjMjg5NTU3OTlmODg2IgorU1JDX1VSSVttZDVzdW1dID0gIjZkNjQ0YzA2YTg3YTVhMTExYmJiZjViMzRiNGJlNDQwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM3OGNjOGE2ZDM1NDViNTMyZGZkMTQ5ZGE3MTVhYmFlNGZkYTJhM2FkYjZkNzRlNTI1ZDBkNWU1MWY0NjkwOWIiCiAKIFBZUElfUEFDS0FHRSA9ICJtc2dwYWNrLXB5dGhvbiIKIGluaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFja18wLjQuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1zZ3BhY2tfMC41LjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1zZ3BhY2tfMC40LjguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1zZ3BhY2tfMC41LjYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZGctaHR0cHNjbGllbnQuaW5jCmluZGV4IDEzM2NhYjEuLmQ3NDMwMjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmRnLWh0dHBzY2xpZW50LmluYwpAQCAtMyw4ICszLDggQEAKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUFOSUZFU1QuaW47bWQ1PWNlMjJjMGNkOTg2ZDJkZTNmNzA3M2NkNmI1NTIzYWUwIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNTlhMmYwYTViM2I2MGU2YzUyMGE5Y2M3YmU5YWZmODciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2JmZDhjNWNmY2JjMjQxYTkzY2E2YTRlNDVmOTUyNjUwZjVjN2VjZjdjNDliMWRiY2Y1ZjRkMzkwMjQwYmUwYiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMGQzNDljZjk1MzBlMzMxNjk3YTZlNWFiMWY0MGRlNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmYmE0ZDQ3OThkY2FjMjk2NTg3NGYyNGFmYjY2MzFiNDMyNmJhYTRiZDAyNTA1NzQ0ZDM0ZjY5MGMzNTQ4NTZhIgogCiBQWVBJX1BBQ0tBR0UgPSAibmRnX2h0dHBzY2xpZW50IgogCkBAIC0xMyw2ICsxMywxMyBAQAogICAgICR7UFlUSE9OX1BOfS1weWFzbjEgXAogIgogCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tcHlvcGVuc3NsIFwKKyAgICAke1BZVEhPTl9QTn0tcHlhc24xIFwKKyIKKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZGctaHR0cHNjbGllbnRfMC40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZGctaHR0cHNjbGllbnRfMC40LjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudF8wLjQuMy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmRnLWh0dHBzY2xpZW50XzAuNC40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXRhZGRyLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldGFkZHIuaW5jCmluZGV4IDI2YjBmMWUuLjViNmQ0ZGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldGFkZHIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldGFkZHIuaW5jCkBAIC02LDMgKzYsOCBAQAogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM4YWVlYzdjZGQwMzUwODFkM2E0YzMwNjM5NGIxOWQ2Nzc2MjNiZjc2ZmEwOTEzZjY2OTUxMjdjNzc1M2FlZmQiCiAKIGluaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKKyAgICAke1BZVEhPTl9QTn0teG1sIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldGFkZHJfMC43LjE5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkcl8wLjcuMTkuYmIKaW5kZXggNWUwODlhOS4uY2E1YTc5YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkcl8wLjcuMTkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkcl8wLjcuMTkuYmIKQEAgLTEsMiArMSw2IEBACiByZXF1aXJlIHB5dGhvbi1uZXRhZGRyLmluYwogaW5oZXJpdCBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS10ZXh0dXRpbHMgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0d29ya3hfMS4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldHdvcmt4XzEuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYThhZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0d29ya3hfMS4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlB5dGhvbiBwYWNrYWdlIGZvciBjcmVhdGluZyBhbmQgbWFuaXB1bGF0aW5nIGdyYXBocyBhbmQgbmV0d29ya3MiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT05MjU1ODZlYTU4OGViOTkwZGU4NDBkYzcxZWEzNzUyZiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZlZjU4NGE4NzllOTE2MzAxM2U5YTc2MmUxY2Y3Y2QxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkMGU3MGUxMGRmYjQ3NjAxY2JiMzQyNWEwMGUwM2UyYTJlOTc0NzdiZTZmODA2MzhmZWY5MWQ1NGRkMWU0YjgiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tMnRvMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldHdvcmt4XzIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldHdvcmt4XzIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzBjNjg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0d29ya3hfMi4xLmJiCkBAIC0wLDAgKzEsMTIgQEAKK0RFU0NSSVBUSU9OID0gIlB5dGhvbiBwYWNrYWdlIGZvciBjcmVhdGluZyBhbmQgbWFuaXB1bGF0aW5nIGdyYXBocyBhbmQgbmV0d29ya3MiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zMzc2ZmY3YzljNTgwNDhjNjJkOTE0MzFmN2YwOGNkZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjRhMmMyYTYyZGZjNDZiYTdkNTk0ZGFjYTdjODM0OTk1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY0MjcyY2E0MTg5NzJiNzBhMTk2Y2IxNWQ5Yzg1YTVhNjA0MWYwOWEyZjMyZTBkMzBjMDI1NWYyNWQ0NThiYjEiCisKK1BZUElfUEFDS0FHRV9FWFQgPSAiemlwIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uLTJ0bzMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1vYXV0aGxpYi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1vYXV0aGxpYi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVkZThhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW9hdXRobGliLmluYwpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIkEgZ2VuZXJpYywgc3BlYy1jb21wbGlhbnQsIHRob3JvdWdoIGltcGxlbWVudGF0aW9uIG9mIHRoZSBPQXV0aCByZXF1ZXN0LXNpZ25pbmcgbG9naWMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaWRhbi9vYXV0aGxpYiIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01YmE5Y2U0MTQ2MzYxNWUwODI2MDk4MDYyNTViY2UxYiIKKworU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9hNS84YS8yMTJlOWI0N2ZiNTRiZTEwOWYzZmYwNjg0MTY1YmIzOGM1MTExN2YzNGUxNzVjMzc5ZmNlNWM3ZGY3NTQvb2F1dGhsaWItJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjI3N2E5YTk2NmNjOGM3MmU0OTJiNGVlYjQxMzMyNDQ1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNlNTdiNTAxZTkwNmZmNGY2MTRlNzFjMzZhM2FiOWVhY2JiOTZkMzVjMjRkMTk3MGQyNTM5YmJjM2VjNzBjZTEiCisKK1MgPSAiJHtXT1JLRElSfS9vYXV0aGxpYi0ke1BWfSIKKworIyBUaGUgZm9sbG93aW5nIGNvbmZpZ3MgJiBkZXBlbmRlbmNpZXMgYXJlIGZyb20gc2V0dXB0b29scyBleHRyYXNfcmVxdWlyZS4KKyMgVGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBvcHRpb25hbCwgaGVuY2UgY2FuIGJlIGNvbnRyb2xsZWQgdmlhIFBBQ0tBR0VDT05GSUcuCisjIFRoZSB1cHN0cmVhbSBuYW1lcyBtYXkgbm90IGNvcnJlc3BvbmQgZXhhY3RseSB0byBiaXRiYWtlIHBhY2thZ2UgbmFtZXMuCisjCisjIFVuY29tbWVudCB0aGlzIGxpbmUgdG8gZW5hYmxlIGFsbCB0aGUgb3B0aW9uYWwgZmVhdHVyZXMuCisjUEFDS0FHRUNPTkZJRyA/PSAidGVzdCBzaWduZWR0b2tlbiBzaWduYWxzIHJzYSIKK1BBQ0tBR0VDT05GSUdbdGVzdF0gPSAiLCwsJHtQWVRIT05fUE59LWJsaW5rZXIgJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSAke1BZVEhPTl9QTn0tbm9zZSAke1BZVEhPTl9QTn0tcHlqd3QiCitQQUNLQUdFQ09ORklHW3NpZ25lZHRva2VuXSA9ICIsLCwke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5ICR7UFlUSE9OX1BOfS1weWp3dCIKK1BBQ0tBR0VDT05GSUdbc2lnbmFsc10gPSAiLCwsJHtQWVRIT05fUE59LWJsaW5rZXIiCitQQUNLQUdFQ09ORklHW3JzYV0gPSAiLCwsJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb3JlICR7UFlUSE9OX1BOfS1jcnlwdCAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgJHtQWVRIT05fUE59LWpzb24gJHtQWVRIT05fUE59LWxvZ2dpbmcgJHtQWVRIT05fUE59LW1hdGggJHtQWVRIT05fUE59LW5ldGNsaWVudCAke1BZVEhPTl9QTn0tdW5pdHRlc3QiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW9hdXRobGliXzIuMC42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tb2F1dGhsaWJfMi4wLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMyOWQyMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW9hdXRobGliXzIuMC42LmJiCkBAIC0wLDAgKzEsNCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1vYXV0aGxpYi5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1yZSAke1BZVEhPTl9QTn0tbGFuZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhaG8tbXF0dC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWhvLW1xdHQuaW5jCmluZGV4IGFkMWNlNmEuLmY4MzRlNmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhaG8tbXF0dC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0LmluYwpAQCAtNywxMyArNywxNSBAQAogU1JDTkFNRSA9ICJwYWhvLW1xdHQiCiAKIGluaGVyaXQgcHlwaQotU1JDX1VSSVttZDVzdW1dID0gImI5MzM4MjM2ZTI4MzZlODU3OWVmMTQwOTU2MTg5Y2M0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjOWVmNTQ5NGNmYzFlNDFhOWZmZjY1NDRjNWEyY2Q1OWVhNWQ0MDFkOTExOWEwNmVjZjdmYWQ2YTJmZmViOTMiCitTUkNfVVJJW21kNXN1bV0gPSAiMmNjMjdkOGIzNjk3MDBiMWZjOTkzMjVhZGQwZGFkZDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzE5MTFmNjAzMWRlMzA2YzI3ZWQ3OWRjNzdiNjkwZDdjNTViMGRjYjBmMDQzNGNhMzRlYzYzNjFkMDM3MTEyMiIKIAogREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXB5dGVzdC1ydW5uZXItbmF0aXZlIgogCiBSREVQRU5EU18ke1BOfSA9ICJcCi0gICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbWF0aCBcCi0gICAgICAgICAgICAgICAke1BZVEhPTl9QTn0taW8gXAotICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LW1hdGggXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0XzEuMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0XzEuMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzY5YjJlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhaG8tbXF0dF8xLjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wYWhvLW1xdHQuaW5jCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhaG8tbXF0dF8xLjMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhaG8tbXF0dF8xLjMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTAzMTE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0XzEuMy4xLmJiCkBAIC0wLDAgKzEsNiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1wYWhvLW1xdHQuaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhbV8xLjguMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhbV8xLjguMi5iYgppbmRleCAwNWJkZGQ1Li42MGEzYjQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW1fMS44LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFtXzEuOC4yLmJiCkBAIC0xMCwzICsxMCw2IEBACiBpbmhlcml0IHB5cGkgc2V0dXB0b29scwogCiBSREVQRU5EU18ke1BOfSA9ICJsaWJwYW0iCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhbmRhcy5pbmMKaW5kZXggZDFmMzcwNy4uYjlmODRhNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXMuaW5jCkBAIC0zLDEzICszLDEyIEBACiBoaWdoLXBlcmZvcm1hbmNlLCBlYXN5LXRvLXVzZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGRhdGEgYW5hbHlzaXMgdG9vbHMgZm9yIFwKIHRoZSBQeXRob24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIgogSE9NRVBBR0UgPSAiaHR0cDovL3BhbmRhcy5weWRhdGEub3JnLyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjYwMTdkMzEzNDM0OTAxNzQwOTM4NmJlODUxNzYxNDUiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWVlMDQ3MGYyZGUzMzZjMzcwYTcxYzJmOGQ1ZTgxYzExIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNGRmODU4ZjI4YjRiZjRmYTA3ZDlmYmI3ZjI1NjgxNzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTc3N2UwNzYzM2Q4M2Q1NDZjNTU3MDY0MjAxNzk1NTFjOGUwMTA3NWI1M2M0OTdkY2Y4YWU0MDM2NzY2YmM2NiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjN2EyNzU3YjYwNzc0ODI1NWYzMjcwMjIxYWM2MWQ1OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NGE5NDA5MWRkNzFmMDU5MjJlZWM2NjE2MzhlYzFhMzVmMjZkNTczYzExOWFhMmZhZDk2NGYxMGEyODgwZTZjIgogCi1QWVBJX1BBQ0tBR0UgPSAicGFuZGFzIgogaW5oZXJpdCBweXBpCiAKIERFUEVORFMgKz0gIiBcCkBAIC0xNyw2ICsxNiw3IEBACiAiCiAKIFJERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKICAgICAke1BZVEhPTl9QTn0tbnVtcHkgXAogICAgICR7UFlUSE9OX1BOfS1kYXRldXRpbCBcCiAgICAgJHtQWVRIT05fUE59LXB5dHogXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzXzAuMjAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhbmRhc18wLjIwLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwOTczYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzXzAuMjAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wYW5kYXMuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICAke1BZVEhPTl9QTn0taW1wb3J0bGliIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhbmRhc18wLjIyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXNfMC4yMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYmZhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXNfMC4yMi4wLmJiCkBAIC0wLDAgKzEsNyBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1wYW5kYXMuaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1mdXR1cmUgXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlXzEuOC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2VfMS44LjIuYmIKaW5kZXggMDM3MjIxYS4uOGUxNjM3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2VfMS44LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2VfMS44LjIuYmIKQEAgLTEsNiArMSw2IEBACiBTVU1NQVJZID0gIlBhcnNlIHN0cmluZ3MgdXNpbmcgYSBzcGVjaWZpY2F0aW9uIGJhc2VkIG9uIHRoZSBQeXRob24gZm9ybWF0KCkgc3ludGF4IgogTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wYXJzZS5weTttZDU9YTg0YjQ5NDU2M2JiYTQ2NmEyZjAyYjA1ZjJlNmFkNGE7c3RhcnRsaW5lPTExOTE7ZW5kbGluZT0xMjEwIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGFyc2UucHk7YmVnaW5saW5lPTExOTE7ZW5kbGluZT0xMjA5O21kNT01MTQ3YWZkZDliMzYxNTI5MGFkODczM2YwMTM3YTFhMSIKIAogU1JDX1VSSVttZDVzdW1dID0gIjQyMDAyMzM4NTUxYmRmYTBmMDFiYmU0ZTY3OWExN2RkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwNDhkZGUzZjVjYTA3YWQ3YWM3MzUwNDYwOTUyZDgzYjYzZWFhY2VjZGFjMWIzN2Y0NWZkNzQ4NzBkODQ5ZDIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXNzbGliLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhc3NsaWIuaW5jCmluZGV4IGYyODljMGUuLjllNDc3ZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhc3NsaWIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhc3NsaWIuaW5jCkBAIC0xMSwzICsxMSw5IEBACiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIyNTQ4NjlkYWUzZmQ5ZjA5ZjA3NDZhM2NiMjlhMGIxNSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZDk0OGY2NDEzOGMyNTYzMzYxM2YzMDNiY2M0NzExMjZlYWU2N2MwNGQ1ZTNmNmI3YjhjZTYyNDJmODY1M2UwIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1jcnlwdCBcCisgICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGVwOF8xLjcuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBlcDhfMS43LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MmI4NjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGVwOF8xLjcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIHN0eWxlIGd1aWRlIGNoZWNrZXIiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZHJlYW1ob3N0L2NsaWZmIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLnJzdDttZDU9ZDhlYmJiZTgzMTI1OWNlMDEwMTc5ZDJmMzEwYjBmM2UiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYjAzMTA5YjA2MThhZmUzYjA0YjNlNjNiMzM0YWM5ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMTEzZDVmNWFkN2E3YWJhY2VmOWRmNWVjM2YyYWYyM2EyMGEyODAwNTkyMTU3N2IxNWRkNTg0ZDA5OWQ1OTAwIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBweXRob24tcHJldHR5dGFibGUgXAotICAgIHB5dGhvbi1jbWQyIFwKLSAgICBweXRob24tcHlwYXJzaW5nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGVwOF8xLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBlcDhfMS43LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyZDcyZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBlcDhfMS43LjEuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJQeXRob24gc3R5bGUgZ3VpZGUgY2hlY2tlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kcmVhbWhvc3QvY2xpZmYiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUucnN0O21kNT1kOGViYmJlODMxMjU5Y2UwMTAxNzlkMmYzMTBiMGYzZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjYwMzgyMWQwNmRiOTQ1YzcxZDgxMWI1YThkNzg0MjNjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlMjQ5YjUyZTIwNDk4ZTU5ZTBiNWM1MjU2YWE1MmVlOTlmYzI5NWIyNmVjOWVhYTg1Nzc2ZmZkYjlmZTYzNzQiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgIHB5dGhvbi1wcmV0dHl0YWJsZSBcCisgICAgcHl0aG9uLWNtZDIgXAorICAgIHB5dGhvbi1weXBhcnNpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3QuaW5jCmluZGV4IDQ3ZDA5NzkuLmZhOGFkMDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3QuaW5jCkBAIC00LDE1ICs0LDExIEBACiBMSUNFTlNFID0gIklTQyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFjN2E3MjUyNTE4ODBhZjhjNmExNDgxODE2NjUzODViIgogCi1TUkNOQU1FID0gInBleHBlY3QiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNjk0NDEwMDAxYTk5ZGZmODNmMGI1MDBhMWNhMWM5NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZDEzMjQ2NWE3NWI1N2FhODE4MzQxYzY1MjEzOTJhMDZjYzY2MGZlYjM5ODhkN2YxMDc0ZjM5YmQyM2M5YTkyIgorU1JDX1VSSVttZDVzdW1dID0gIjkxM2ZjMGE2OGE5MTVjZGY2YWQ0MjUwNDkzYzk0Y2Y3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmOGViMzI3NzcxNmEwMWZhYWZhYmE1NTNkNjI5ZDNkNjBhMWE2MjRjN2NmNDVkYWE2MDBkMjE0OGMzMDAyMGMiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BleHBlY3QiCiAKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCiBSREVQRU5EU18ke1BOfSA9ICJcCiAgICAgJHtQWVRIT05fUE59LWNvcmUgXAogICAgICR7UFlUSE9OX1BOfS1pbyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0XzQuMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdF80LjUuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdF80LjIuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdF80LjUuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlwXzkuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlwXzkuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGRkOGQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpcF85LjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiUElQIGlzIGEgdG9vbCBmb3IgaW5zdGFsbGluZyBhbmQgbWFuYWdpbmcgUHl0aG9uIHBhY2thZ2VzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9waXAucHlwYS5pby8iCi1MSUNFTlNFID0gIk1JVCAmIExHUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTI1ZmJhNDUxMDk1NjVmODdkZTIwYmFlODViYzM5NDUyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzVmMDFkYTMzMDA5NzE5NDk3ZjAxYTRiYTY5ZDYzYzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDlmMjQzZTFhN2I0NjFmNjU0YzI2YTcyNWZhMzczMjExYmI3ZmYxN2E5MzAwMDU4YjIwNWM2MTY1OGNhOTQwZCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotIyBTaW5jZSBQSVAgaXMgbGlrZSBDUEFOIGZvciBQRVJMIHdlIG5lZWQgdG8gZHJhZyBpbiBhbGwgcHl0aG9uIG1vZHVsZXMgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgd29ya3MKLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJweXRob24tbW9kdWxlcyBweXRob24tZGlzdHJpYnV0ZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlwXzkuMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlwXzkuMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZmM2YmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waXBfOS4wLjMuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJQSVAgaXMgYSB0b29sIGZvciBpbnN0YWxsaW5nIGFuZCBtYW5hZ2luZyBQeXRob24gcGFja2FnZXMiCitIT01FUEFHRSA9ICJodHRwczovL3BpcC5weXBhLmlvLyIKK0xJQ0VOU0UgPSAiTUlUICYgTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MjVmYmE0NTEwOTU2NWY4N2RlMjBiYWU4NWJjMzk0NTIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMTViMzNmOWFhZDYxZjg4ZDBmOGM4NjZkMTZjNTVkOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3YmY0OGY5YTY5M2JlMWQ1OGY0OWY3YWY3ZTBhZTlmZTI5ZmQ2NzFjZGU4YTU1ZTZlZGNhMzU4MWM0ZWY1Nzk2IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCisjIFNpbmNlIFBJUCBpcyBsaWtlIENQQU4gZm9yIFBFUkwgd2UgbmVlZCB0byBkcmFnIGluIGFsbCBweXRob24gbW9kdWxlcyB0byBlbnN1cmUgZXZlcnl0aGluZyB3b3JrcworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gInB5dGhvbi1tb2R1bGVzIHB5dGhvbi1kaXN0cmlidXRlIHB5dGhvbi1taXNjIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wbHVnZ3kuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx1Z2d5LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjAzNTlhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx1Z2d5LmluYwpAQCAtMCwwICsxLDkgQEAKK1NVTU1BUlkgPSAiUGx1Z2luIGFuZCBob29rIGNhbGxpbmcgbWVjaGFuaXNtcyBmb3IgcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcGx1Z2d5IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zMzhkYWQ4MDdlZDkzMzdiZmFlYjk5NzljM2JmZTIwZiIKKworU1JDX1VSSVttZDVzdW1dID0gImZmZGRlN2MzYTViYTlhNDQwNDA0NTcwMzY2ZmZiNmQ1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmOGFlN2Y1YmRmNzU2NzFhNzE4ZDJkYWYwYTY0Yjc4ODVmNzQ1MTBiY2Q5OGIxYTBiYjQyMGViOWE5ZDBjZmYiCisKK2luaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx1Z2d5XzAuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx1Z2d5XzAuNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkY2Q0ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wbHVnZ3lfMC42LjAuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXBsdWdneS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBseS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wbHkuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NDQ5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wbHkuaW5jCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiUHl0aG9uIExleCBhbmQgWWFjYyIKK0RFU0NSSVBUSU9OID0gIlB5dGhvbiBwbHk6IFBMWSBpcyB5ZXQgYW5vdGhlciBpbXBsZW1lbnRhdGlvbiBvZiBsZXggYW5kIHlhY2MgZm9yIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGx5IgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5tZDtiZWdpbmxpbmU9NTtlbmRsaW5lPTMyO21kNT1mNWVlNWMzNTVjMGU2NzE5Yzc4N2E3MWI4ZjBmYTk2YyIKKworU1JDX1VSSVttZDVzdW1dID0gIjY0NjVmNjAyZTY1NjQ1NWFmZmNkN2M1NzM0YzYzOGY4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwYzdjMWFhYTg4MzU4YjljNzY1YjZkMzAwMGM2ZWVjMGJhNDJhYmNhNTM1MWIwOTUzMjFhZWY0NDYwODFkYTMiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBseV8zLjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx5XzMuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNjFlZmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx5XzMuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBMZXggYW5kIFlhY2MiCi1ERVNDUklQVElPTiA9ICJQeXRob24gcGx5OiBQTFkgaXMgeWV0IGFub3RoZXIgaW1wbGVtZW50YXRpb24gb2YgbGV4IGFuZCB5YWNjIGZvciBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BseSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7YmVnaW5saW5lPTM7ZW5kbGluZT0zMDttZDU9ZmNiMDRiYzJmNzY1ZTQ2YWI3MDg0ZDZhYjZlNDUyYmIiCi0KLVNSQ05BTUUgPSAicGx5IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvcC8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWQ2M2MxNjZhYjI1MGJhYjg3ZDhkY2M0MmRjY2E3MGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTZlOTRhZjdkZDcwMzFkOGQ2ZGQ2ZTJhOGUwZGU1OTNiNTExYzIxMWE4NmUyOGE5Yzk2MjFjMjc1YWM4YmFjYiIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx5XzMuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wbHlfMy4xMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjYxNjVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx5XzMuMTEuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1wbHkuaW5jCitpbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByZXRlbmQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldGVuZC5pbmMKaW5kZXggNzhiNjcxNy4uYjM0MmFlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldGVuZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldGVuZC5pbmMKQEAgLTMsNyArMyw3IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UucnN0O21kNT00MTE3ODBjMGI3ZmE3NTY3NTNlOTRhZmZlZWU1YmM5OSIKIAotU1JDX1VSSVttZDVzdW1dID0gIjcxNDcwNTBhOTVjOWY0OTQyNDg1NTdiNDJiNThhZDc5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzMGYyYzFlMTg1MDNlOGY4YzQwM2FiZTJlMDIxNjZjNGE4ODE5NDE3NDUxNDdlNzEyY2RkNGY0OWYzZmI5NjQiCitTUkNfVVJJW21kNXN1bV0gPSAiYWQ1Mzg4M2VkZTQ4YWVhYzdhZTU4NGYwZGUwMjQwZTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzkwZWI4MTBjZGU4ZWJiMDZkYWZjYjg3OTZmOWE5NTIyOGNlNzk2NTMxYmM4MDZlNzk0YzJmNDY0OWFhMWIxMCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldGVuZF8xLjAuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByZXRlbmRfMS4wLjkuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByZXRlbmRfMS4wLjguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByZXRlbmRfMS4wLjkuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0LmluYwppbmRleCBmNWVkMzQ5Li5jYzQwOWE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvbXB0LXRvb2xraXQuaW5jCkBAIC0xMCw3ICsxMCw2IEBACiBSREVQRU5EU18ke1BOfSArPSAiIFwKICAgICAke1BZVEhPTl9QTn0tY29yZSBcCiAgICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAogICAgICR7UFlUSE9OX1BOfS10ZXJtaW5hbCBcCiAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCiAgICAgJHtQWVRIT05fUE59LXdjd2lkdGggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvbXB0LXRvb2xraXRfMS4wLjE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvbXB0LXRvb2xraXRfMS4wLjE1LmJiCmluZGV4IDc2ZTg0MTAuLjUyN2M5MDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0XzEuMC4xNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdF8xLjAuMTUuYmIKQEAgLTEsMiArMSw2IEBACiBpbmhlcml0IHB5cGkgc2V0dXB0b29scwogcmVxdWlyZSBweXRob24tcHJvbXB0LXRvb2xraXQuaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmLmluYwppbmRleCAyZjU5ZWY5Li5iODQ5ODNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm90b2J1Zi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWYuaW5jCkBAIC0yLDE1ICsyLDI0IEBACiBIT01FUEFHRSA9ICJodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9wcm90b2NvbC1idWZmZXJzLyIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgogCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24tc2l4IgotCiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9CU0QtMy1DbGF1c2U7bWQ1PTU1MDc5NDQ2NWJhMGVjNTMxMmQ2OTE5ZTIwM2E1NWY5IgogCiBpbmhlcml0IHB5cGkKIAotU1JDX1VSSVttZDVzdW1dID0gImJmYzBjNjFjMTU2YTk5NWU5MDk1MjE2OTdlNzU1NzgwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVmMDI2MDllZjQ0NTk4Nzk3NmEzYTI2YmZmNzcxMTljNTE4ZTA5MTVjOTY2NjFjM2EzYjE3ODU2ZDBlZjYzNzQiCitTUkNfVVJJW21kNXN1bV0gPSAiMzkzYTUzNDgzMjI0Y2IzMzhkZjVjNjQzNjQ2YzAzMDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk4NzlhMjk1ZmQ3MjM0ZTUyM2I2MjA2NjIyM2IxMjhjNWE4YTg4ZjY4MmUzYWZmNjJmYjExNWU0YTBkOGJlMCIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCisgICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAke1BZVEhPTl9QTn0tcGtndXRpbCBcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisgICAgJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKKyIKIAogIyBGb3IgdXNhZ2UgaW4gb3RoZXIgcmVjaXBpZXMgd2hlbiBjb21waWxpbmcgcHJvdG9idWYgZmlsZXMgKGUuZy4gYnkgZ3JwY2lvLXRvb2xzKQogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm90b2J1Zl8zLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmXzMuNS4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm90b2J1Zl8zLjQuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWZfMy41LjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWwuaW5jCmluZGV4IGM5YTdmNmQuLjVkOGU2MWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsLmluYwpAQCAtMiwxMSArMiwxOSBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wZjAyZTk5ZjdmM2M5YTdmZThlY2ZjNWQ0NGMyYmU2MiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjUyOTI0NGFlYTVkMzJmYjBjMmVhNDZkODBjZTU0YWJjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEyZGQ5YzhhYmJhZDE1ZjA1NWU5NTc5MTMwMDM1YjM4NjE3MDIwY2UxNzZmNGE0OThiNzg3MGU2MzIxZmZhNjciCitTUkNfVVJJW21kNXN1bV0gPSAiM2IyOTE4MzNkYmVhNjMxZGI5ZDI3MWFhNjAyYTE2OWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTI0NjdlOTMxMmMyZmExOTE2ODdiODlmZjRiYzJhZDg4NDNiZTRhZjZmYjRkYzk1YTdjYzVmN2Q3YTMyN2IxOCIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgorCitGSUxFU18ke1BOfS10ZXN0cyArPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9wc3V0aWwvdGVzdCogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3BzdXRpbC9fX3B5Y2FjaGVfXy90ZXN0KiBcCisiCisKIAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCiAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgJHtQWVRIT05fUE59LXhtbCBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWxfNS4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWxfNS4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNDAyYWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsXzUuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHN1dGlsLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsXzUuNC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsXzUuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYWJmYjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWxfNS40LjMuYmIKQEAgLTAsMCArMSw2IEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tcHN1dGlsLmluYworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weS5pbmMKaW5kZXggMWFlZjBlNy4uYzdkNjcyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5LmluYwpAQCAtMSw5ICsxLDkgQEAKIFNVTU1BUlkgPSAiTGlicmFyeSB3aXRoIGNyb3NzLXB5dGhvbiBwYXRoLCBpbmktcGFyc2luZywgaW8sIGNvZGUsIGxvZyBmYWNpbGl0aWVzIgogSE9NRVBBR0UgPSAiaHR0cDovL3B5LnJlYWR0aGVkb2NzLmlvLyIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjUwNmYzZGYyODc3MDhiMmY5OTU4OGI1Y2MzNTEwOTEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNmJiMDMyMGIwNGEwYTUwM2YxMmY2OWZlYTQ3OWRlOSIKIAotU1JDX1VSSVttZDVzdW1dID0gImQ5YzNkOGY3MzRiMDgxOWZmNDhlMzU1ZDc3YmYxNzMwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmMmQ1ODVkMjIwNTBlOTBjN2QyOTNiNjQ1MWM4M2RiMDk3ZGY3Nzg3MTk3NGQ5MGVmZDVhMzBkYzEyZmNkZTMiCitTUkNfVVJJW21kNXN1bV0gPSAiMjc5Y2E2OWM2MzIwNjllMWI3MWUxMWIxNDY0MWNhMjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2ExODk0M2UyODIzNTQxNzc1NjMxNmJmYWRhNmNkOTZiMjNjZTYwZGQ1MzI2NDI2OTBkY2ZkYWJhOTg4YTc2ZCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlfMS40LjM0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlfMS41LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5XzEuNC4zNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlfMS41LjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS1tb2R1bGVzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS1tb2R1bGVzLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmE1NGNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLW1vZHVsZXMuaW5jCkBAIC0wLDAgKzEsMTYgQEAKK1NVTU1BUlkgPSAiQSBjb2xsZWN0aW9uIG9mIEFTTi4xLWJhc2VkIHByb3RvY29scyBtb2R1bGVzLiIKK0RFU0NSSVBUSU9OID0gIkEgY29sbGVjdGlvbiBvZiBBU04uMSBtb2R1bGVzIGV4cHJlc3NlZCBpbiBmb3JtIG9mIHB5YXNuMVwKKyBjbGFzc2VzLiBJbmNsdWRlcyBwcm90b2NvbHMgUERVcyBkZWZpbml0aW9uIChTTk1QLCBMREFQIGV0Yy4pIGFuZCB2YXJpb3VzXAorIGRhdGEgc3RydWN0dXJlcyAoWC41MDksIFBLQ1MgZXRjLikuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2V0aW5nb2YvcHlhc24xLW1vZHVsZXMiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0yODA2MDZkOWMxOGYyMDBlMDNlMGMyNDdhYzYxNDc1YSIKKworU1JDX1VSSVttZDVzdW1dID0gImZmOTM4Njk4NTkwZjMxNGZmOWIzZDVjNDg3MzdkODk5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmMDBlYThmMjAyMmI2Mjg3ZGMzNzViMmM3MGYzMWFiNWFmODM5ODlmYzZmZTllYWNkNDk3NmNlMjZjZDdjY2MiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tcHlhc24xIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEtbW9kdWxlc18wLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS1tb2R1bGVzXzAuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNzg4ODQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEtbW9kdWxlc18wLjIuMS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXB5YXNuMS1tb2R1bGVzLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLmluYwppbmRleCBkZWRiMTkxLi5mM2MzMmUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS5pbmMKQEAgLTMsMTIgKzMsMTEgQEAKIExJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5yc3Q7bWQ1PTI4MDYwNmQ5YzE4ZjIwMGUwM2UwYzI0N2FjNjE0NzVhIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYTJkMDFjNTYxZDQ5OTYwNTU2NDFiYmJiNzRlZGE1OGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjAzODBlYTk3ZGIwZWRlMDk1YTBkZDg3Y2UzMDAzZDQ2YzE5NzE5MWY5MjQyMDZlNDNmNzc2ZmM3N2U1MWYwOSIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjYjU4ODNkZGM2YTlmNDA1NjAwNDI5ZjM3Y2YwNzU5YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjU4YjBhNzE5OTRmNzc3MDU5OTgzNTI0OWNlY2UxY2FlZjNjNzBkZWY4NjhjNDkxNWU2ZTVjYTQ5YjY3ZDE1IgogCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LWNvZGVjcyBcCi0gICAgJHtQWVRIT05fUE59LWxhbmcgXAogICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKICAgICAke1BZVEhPTl9QTn0tbWF0aCBcCiAgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMV8wLjMuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMV8wLjMuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ2MTkxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjFfMC4zLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weWFzbjEuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjFfMC40LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjFfMC40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEzYzc0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMV8wLjQuMi5iYgpAQCAtMCwwICsxLDYgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1weWFzbjEuaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWxhbmcgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHliaW5kMTEuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHliaW5kMTEuaW5jCmluZGV4IGUyNzNhOGQuLmU0NDFkYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YmluZDExLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMS5pbmMKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIlNlYW1sZXNzIG9wZXJhYmlsaXR5IGJldHdlZW4gQysrMTEgYW5kIFB5dGhvbiIKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS93amFrb2IvcHliaW5kMTEiCiBMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTliMjdmYWM3ZTkzNzMyM2UzZGU5Y2EzYTdkYjM4ZTM3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YmViODcxMTdhZjY5ZmQxMGZiZjlmYjE0YzIyYTJlNjIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJmNDU0ZDg5OTFmNDdiZWZlNTZkNDEyNmRmODYxZmM5NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhOTZhOTI0ZmFlNmUyNzIxZWZiZjI0ZjQ3NTYxMjg0ZmQxZWEwYjY1NTYxOWE4NjIxYzQ0MjMwMzYxODNiODI0IgorU1JDX1VSSVttZDVzdW1dID0gIjJjNjUxYTc1YTIwZGFiYmFhMThhOGIwMjNmZmQ1NGMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiYjAzNmE4YWFkNTlhMTk5YWQ2NzJmOTg4MTNmODVjNjcyNjQyYzZhNjdiNGZmMzg2OGIxZDZhYmM1ZmFlM2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMV8yLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YmluZDExXzIuMi4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMV8yLjIuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHliaW5kMTFfMi4yLjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Ymx1ZXouaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlibHVlei5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk5ZmU1NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Ymx1ZXouaW5jCkBAIC0wLDAgKzEsMjEgQEAKK0RFU0NSSVBUSU9OID0gIkJsdWV0b290aCBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9rYXJ1bGlzLmdpdGh1Yi5pby9weWJsdWV6LyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitERVBFTkRTID0gImJsdWV6NSIKKworTElDRU5TRSA9ICJHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGE3MWQwNDc1ZDA4ZWVlNzZkOGI2ZDBjNmRiZWM1NDMiCisKK2luaGVyaXQgcHlwaQorCitTUkNfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL2MxLzk4LzMxNDk0ODFkNTA4YmVlMTc0MzM1YmU2NzI1ODgwZjAwZDI5N2FmZWJlNzVjMTVlOTE3YWY4ZjZmZTE2OS9QeUJsdWV6LTAuMjIuemlwIgorU1JDX1VSSVttZDVzdW1dID0gIjQ5ZGFiOWQ1YThmMGI3OThjODEyNWM3ZjY0OWJlM2NkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjZTAwNjcxNmE1NGQ5ZDE4ZTgxODZhM2YxYzhiMTJhOGU2YmVmZWNmZmU4ZmQ1ODI4YTI5MWZiNjk0Y2U0OWQiCisKK1MgPSAiJHtXT1JLRElSfS9QeUJsdWV6LSR7UFZ9IgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgIGJsdWV6NSBcCisgICAgJHtQWVRIT05fUE59LWZjbnRsIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Ymx1ZXpfMC4yMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Ymx1ZXpfMC4yMi5iYgppbmRleCBlYWI5YzU0Li4zMTU4ZjRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJsdWV6XzAuMjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlibHVlel8wLjIyLmJiCkBAIC0xLDE3ICsxLDIgQEAKLURFU0NSSVBUSU9OID0gIkJsdWV0b290aCBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9rYXJ1bGlzLmdpdGh1Yi5pby9weWJsdWV6LyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1SREVQRU5EU18ke1BOfSA9ICJibHVlejUiCi1ERVBFTkRTID0gImJsdWV6NSIKLQotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGE3MWQwNDc1ZDA4ZWVlNzZkOGI2ZDBjNmRiZWM1NDMiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvYzEvOTgvMzE0OTQ4MWQ1MDhiZWUxNzQzMzViZTY3MjU4ODBmMDBkMjk3YWZlYmU3NWMxNWU5MTdhZjhmNmZlMTY5L1B5Qmx1ZXotMC4yMi56aXAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDlkYWI5ZDVhOGYwYjc5OGM4MTI1YzdmNjQ5YmUzY2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGNlMDA2NzE2YTU0ZDlkMThlODE4NmEzZjFjOGIxMmE4ZTZiZWZlY2ZmZThmZDU4MjhhMjkxZmI2OTRjZTQ5ZCIKLQotUyA9ICIke1dPUktESVJ9L1B5Qmx1ZXotJHtQVn0iCityZXF1aXJlIHB5dGhvbi1weWJsdWV6LmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcGFyc2VyLmluYwppbmRleCA2YjA1NDgyLi5kMTEyZDlmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlci5pbmMKQEAgLTksNyArOSw4IEBACiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyAgICAke1BZVEhPTl9QTn0tcGx5IFwKKyAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKICAgICBjcHAgXAogICAgIGNwcC1zeW1saW5rcyBcCiAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcGFyc2VyXzIuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXJfMi4xOC5iYgppbmRleCBhZGJjMWE4Li45ODc0MjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXJfMi4xOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXJfMi4xOC5iYgpAQCAtMSwyICsxLDYgQEAKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCiByZXF1aXJlIHB5dGhvbi1weWNwYXJzZXIuaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvLmluYwppbmRleCBmYjJjMTdkLi4yMzJjZGI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNyeXB0by5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcnlwdG8uaW5jCkBAIC0zLDEyICszLDE2IEBACiBMSUNFTlNFID0gIlBTRnYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zNWYzNTRkMTk5ZThjYjc2NjdiMDU5YTIzNTc4ZTYzZCIKIAotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgorRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLXB5Y3J5cHRvOiIKIAogREVQRU5EUyArPSAiIGdtcCIKIAogaW5oZXJpdCBweXBpIGF1dG90b29scy1icm9rZW5zZXAKIAorU1JDX1VSSSArPSAiZmlsZTovL2Nyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTMtNzQ1OS5wYXRjaCBcCisgICAgICAgICAgICIKKwogU1JDX1VSSVttZDVzdW1dID0gIjU1YTYxYTA1NGFhNjY4MTJkYWY1MTYxYTBkNWQ3ZWRhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImYyY2UxZTk4OWIyNzJjZmNiNjc3NjE2NzYzZTBhMmU3ZWM2NTllZmZhNjdhODhhYTkyYjNhNjU1MjhmNjBhM2MiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvXzIuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcnlwdG9fMi42LjEuYmIKaW5kZXggOTE5ZjkxZS4uZTEzZGIwMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcnlwdG9fMi42LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcnlwdG9fMi42LjEuYmIKQEAgLTEsMTAgKzEsNiBAQAogaW5oZXJpdCBkaXN0dXRpbHMKIHJlcXVpcmUgcHl0aG9uLXB5Y3J5cHRvLmluYwogCi1TUkNfVVJJICs9ICJmaWxlOi8vY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxMy03NDU5LnBhdGNoIFwKLSAgICAgICAgICAgIgotCiAjIFdlIGV4cGxpY2l0bHkgY2FsbCBkaXN0dXRpbHNfZG9faW5zdGFsbCwgc2luY2Ugd2Ugd2FudCBpdCB0byBydW4sIGJ1dAogIyAqZG9uJ3QqIHdhbnQgdGhlIGF1dG90b29scyBpbnN0YWxsIHRvIHJ1biwgc2luY2UgdGhpcyBwYWNrYWdlIGRvZXNuJ3QKICMgcHJvdmlkZSBhICJtYWtlIGluc3RhbGwiIHRhcmdldC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvZG9tZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNyeXB0b2RvbWUuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0OTY5ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNyeXB0b2RvbWUuaW5jCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiQ3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IGZvciBQeXRob24iCitERVNDUklQVElPTiA9ICJQeUNyeXB0b2RvbWUgaXMgYSBzZWxmLWNvbnRhaW5lZCBQeXRob24gcGFja2FnZSBvZiBsb3ctbGV2ZWxcCisgY3J5cHRvZ3JhcGhpYyBwcmltaXRpdmVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucHljcnlwdG9kb21lLm9yZyIKK0xJQ0VOU0UgPSAiUEQgJiBCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9Nzc1ZmU3NzgzMWMwM2JmODJmMzVhYmMwZTIzMGQ0YzEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMjU4N2I2MzgxYjBlZjRlYjk2MGNlYTFlNzUwN2QwNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNWRkMjllOWYxYjczM2U3NDMxMWJmOTVkMGU1NDRlOTFiZDFkMTRiYzAzNjZlOGY0NDM1NjJkOGQ5OTIwYjdkIgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tbWF0aCBcCisiCisKK1JERVBFTkRTXyR7UE59LXRlc3RzICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS11bml0dGVzdCBcCisiCisKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKKworRklMRVNfJHtQTn0tdGVzdHMgKz0gIiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vQ3J5cHRvL1NlbGZUZXN0LyBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vQ3J5cHRvL1NlbGZUZXN0L19fcHljYWNoZV9fLyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvZG9tZV8zLjQuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNyeXB0b2RvbWVfMy40LjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3NzAxZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNyeXB0b2RvbWVfMy40LjExLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tcHljcnlwdG9kb21lLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWRidXMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlkYnVzLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzczYjdmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlkYnVzLmluYwpAQCAtMCwwICsxLDExIEBACitERVNDUklQVElPTiA9ICJQeXRob25pYyBEQnVzIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5ZGJ1cy8iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjNmFiZDQ0ODYyMzIyNjc5YmQ0ZTkwN2JlYmMzZTBkMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MjA3MTYyZWZmNTQyMjM4MjJjMTg1ZGEwNmMxYmE4YTM0MTM3YTk2MDJmM2RhNWE1MjhlZWRmM2Y3OGQwZjJjIgorCitTID0gIiR7V09SS0RJUn0vcHlkYnVzLSR7UFZ9IgorCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tcHlnb2JqZWN0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlkYnVzXzAuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlkYnVzXzAuNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MjJhODAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWRidXNfMC42LjAuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1weWRidXMuaW5jCitpbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlleHBlY3QuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlleHBlY3QuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyZDQxZDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWV4cGVjdC5pbmMKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJQeXRob24gZXhwZWN0YXRvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiTWluaW1hbCBidXQgdmVyeSBmbGV4aWJsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZXhwZWN0IHBhdHRlcm4iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0hPTUVQQUdFID0gIiBodHRwczovL2JpdGJ1Y2tldC5vcmcvZHd0L3B5ZXhwZWN0IgorTElDRU5TRSA9ICJJU0MiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7bWQ1PTUwMGI4ODRlOWRjZDVmNjc3YTUzY2JiZWU4YWNlOTM5IgorCitpbmhlcml0IHB5cGkKKworU1JDX1VSSVttZDVzdW1dID0gImM3MTMwN2Q2YzcwOTZmZGJkZTA4MTMwMThkZmEwMDkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2NTZlZjdlMDdhOGFhNTM5Y2UwYTQ4ODNhNjgzMzQxMDM3YjZmYzFjMzI5YmY1NWI2M2JmZmJmMmNjZTk1ODIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWV4cGVjdF8xLjAuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWV4cGVjdF8xLjAuMTcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI2YmViNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZXhwZWN0XzEuMC4xNy5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tcHlleHBlY3QuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZsYWtlc18xLjIuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Zmxha2VzXzEuMi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWUzNDEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Zmxha2VzXzEuMi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJwYXNzaXZlIGNoZWNrZXIgb2YgUHl0aG9uIHByb2dyYW1zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2RyZWFtaG9zdC9jbGlmZiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5yc3Q7bWQ1PWViNDg5MTY4NzAzMDZlZjM0YTA2MWNlYzcyN2NjYWU1IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTk1NzQ3NTg5ZTk3Yzc1MDU1Y2Y1YjRlMWUwMzFlMGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmU0YTFiNjM2ZDg4MDlkOGYwYTY5ZjM0MWFjZjE1YjJlNDAxYTMyMjFlZGUxMWJlNDM5OTExZDIzY2UyMTM5ZSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcHl0aG9uLXByZXR0eXRhYmxlIFwKLSAgICBweXRob24tY21kMiBcCi0gICAgcHl0aG9uLXB5cGFyc2luZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Zmxha2VzXzEuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFrZXNfMS42LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ0NDg1OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Zmxha2VzXzEuNi4wLmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAicGFzc2l2ZSBjaGVja2VyIG9mIFB5dGhvbiBwcm9ncmFtcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kcmVhbWhvc3QvY2xpZmYiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUucnN0O21kNT0wMjljZTFiZWIwMjNmMmM0Y2E5ZjQxN2U0OTg0YTg2NSIKKworU1JDX1VSSVttZDVzdW1dID0gImIzODViMGU0Y2Q0MGE1MjI1NTNlOTdjZDJkODM1NzNlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkNjE2YTM4MmYyNDNkYmYxOWI1NDc0M2YyODBiODAxOThiZTBiY2EzYTUzOTZmMWQyZTFmY2E2MjIzZTg4MDUiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1wcmV0dHl0YWJsZSBcCisgICAgJHtQWVRIT05fUE59LWNtZDIgXAorICAgICR7UFlUSE9OX1BOfS1weXBhcnNpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdwZ21lLzAwMDEtcmVmbGVjdC0yLjEtcmVwb3J0aW5nLWZvci1rZXktaW1wb3J0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z3BnbWUvMDAwMS1yZWZsZWN0LTIuMS1yZXBvcnRpbmctZm9yLWtleS1pbXBvcnRzLnBhdGNoCmluZGV4IGY1ODcwMzcuLjFmMzFjYjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z3BnbWUvMDAwMS1yZWZsZWN0LTIuMS1yZXBvcnRpbmctZm9yLWtleS1pbXBvcnRzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z3BnbWUvMDAwMS1yZWZsZWN0LTIuMS1yZXBvcnRpbmctZm9yLWtleS1pbXBvcnRzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxYzE4MTJkZWY3MTE4MDMzODJjYzI4Y2FlYTFmMzVmYjdlZjc3NGIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlZDQ0NDc0YzExZjU3N2MxNjQ0OTEwOTY0YTkxN2E0Y2Y3MDFiYjBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRGFuaWVsIEthaG4gR2lsbG1vciA8ZGtnQGZpZnRoaG9yc2VtYW4ubmV0PgogRGF0ZTogVHVlLCAyNiBKYW4gMjAxNiAxNDoyNDoyNiAtMDUwMAotU3ViamVjdDogW1BBVENIIDEvNV0gcmVmbGVjdCAyLjEgcmVwb3J0aW5nIGZvciBrZXkgaW1wb3J0cworU3ViamVjdDogW1BBVENIXSByZWZsZWN0IDIuMSByZXBvcnRpbmcgZm9yIGtleSBpbXBvcnRzCiAKIEdudVBHIDIuMSBjaGFuZ2VzIGhvdyBpdCByZXBvcnRzIGtleSBpbXBvcnRzLiAgVGhlc2UgY2hhbmdlcyBzaG91bGQKIG1ha2UgdGhlIHB5Z3BnbWUgdGVzdCBzdWl0ZSBjb21wYXRpYmxlIHdpdGggR251UEcgMi4xLgpAQCAtMTIsNiArMTIsNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAogCiBTaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgdGVzdHMvdGVzdF9pbXBvcnQucHkgfCAyMiArKysrKysrKysrKy0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQpAQCAtODYsMyArODcsNCBAQAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgZ3BnbWUuSU1QT1JUX05FVyB8IGdwZ21lLklNUE9SVF9TRUNSRVQpKQogICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuaW1wb3J0c1szXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc5M0MyMjQwRDZCOEFBMTBBQjI4RjcwMUQyQ0Y0NkI3RkM5N0U2QjBGJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIGdwZ21lLklNUE9SVF9ORVcpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlncGdtZS8wMDAyLXBhc3NwaHJhc2VfY2ItaXMtZGVwcmVjYXRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z3BnbWUvMDAwMi1wYXNzcGhyYXNlX2NiLWlzLWRlcHJlY2F0ZWQucGF0Y2gKaW5kZXggY2NkOTQxZi4uYzE4Y2YzZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlncGdtZS8wMDAyLXBhc3NwaHJhc2VfY2ItaXMtZGVwcmVjYXRlZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdwZ21lLzAwMDItcGFzc3BocmFzZV9jYi1pcy1kZXByZWNhdGVkLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBkYzc1NDgyYWYwOTVkNjY3YTRhOTI2NTVjNGU3ZWIzMTJlODBjNDJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiYTBkYzgyNzNlNGY4M2JjZDJkNDNiYWE1OTEwYWFlMzRiOTMwNDhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRGFuaWVsIEthaG4gR2lsbG1vciA8ZGtnQGZpZnRoaG9yc2VtYW4ubmV0PgogRGF0ZTogTW9uLCAxIEZlYiAyMDE2IDE5OjI1OjEyIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBwYXNzcGhyYXNlX2NiIGlzIGRlcHJlY2F0ZWQKK1N1YmplY3Q6IFtQQVRDSF0gcGFzc3BocmFzZV9jYiBpcyBkZXByZWNhdGVkCiAKIGh0dHBzOi8vYnVncy5nbnVwZy5vcmcvZ251cGcvaXNzdWU3NjcgaW5kaWNhdGVzIHRoYXQKIGdwZ21lX3NldF9wYXNzcGhyYXNlX2NiIGlzIGEgZGVwcmVjYXRlZCBjb3JuZXIgb2YgdGhlIEFQSSBhbmQgdGhhdApAQCAtMTksNiArMTksNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAogCiBTaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgdGVzdHMvdXRpbC5weSB8IDggKysrKysrKy0KICAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCkBAIC00OCwzICs0OSw0IEBACiArCiAgICAgICAgICAjIGltcG9ydCByZXF1ZXN0ZWQga2V5cyBpbnRvIHRoZSBrZXlyaW5nCiAgICAgICAgICBjdHggPSBncGdtZS5Db250ZXh0KCkKKyAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5pbXBvcnRfa2V5czoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z3BnbWUvMDAwMy1oYW5kbGUtZ2VuZXJpYy1lcnJvci13aGVuLW5vLXBhc3NwaHJhc2UtY2FsbGJhY2stcHJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlncGdtZS8wMDAzLWhhbmRsZS1nZW5lcmljLWVycm9yLXdoZW4tbm8tcGFzc3BocmFzZS1jYWxsYmFjay1wcmUucGF0Y2gKaW5kZXggNDYyZjQ0Mi4uNmFjYjY4YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlncGdtZS8wMDAzLWhhbmRsZS1nZW5lcmljLWVycm9yLXdoZW4tbm8tcGFzc3BocmFzZS1jYWxsYmFjay1wcmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlncGdtZS8wMDAzLWhhbmRsZS1nZW5lcmljLWVycm9yLXdoZW4tbm8tcGFzc3BocmFzZS1jYWxsYmFjay1wcmUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDAyNGZlMjE5NTgyMTQzMDE3YjJmMDJiYzkyNGMwZWQxMDdiNjM2MTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU3OWI1OTMwZTE1ZGU4ODU1YmY2M2IzYzIwYjZjM2FhZjg5NGMzZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBEYW5pZWwgS2FobiBHaWxsbW9yIDxka2dAZmlmdGhob3JzZW1hbi5uZXQ+CiBEYXRlOiBNb24sIDEgRmViIDIwMTYgMTk6Mjc6NTkgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzVdIGhhbmRsZSBnZW5lcmljIGVycm9yIHdoZW4gbm8gcGFzc3BocmFzZSBjYWxsYmFjayBwcmVzZW50CitTdWJqZWN0OiBbUEFUQ0hdIGhhbmRsZSBnZW5lcmljIGVycm9yIHdoZW4gbm8gcGFzc3BocmFzZSBjYWxsYmFjayBwcmVzZW50CiAKIGFwcGFyZW50bHkgZ3BnIDIuMSByZXR1cm5zIEVSUl9HRU5FUkFMIHJpZ2h0IG5vdyBpZiB0aGUgcGluZW50cnkgd2FzCiBpbiBsb29wYmFjayBtb2RlIGFuZCBubyBwYXNzcGhyYXNlIGNhbGxiYWNrIHdhcyBzdXBwbGllZC4gIEVhcmxpZXIKQEAgLTEwLDYgKzEwLDcgQEAKIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKIAogU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHRlc3RzL3Rlc3RfcGFzc3BocmFzZS5weSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKQEAgLTI2LDMgKzI3LDQgQEAKICsgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5hcmdzWzFdLCBncGdtZS5FUlJfR0VORVJBTCkKICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgc2VsZi5mYWlsKCdncGdtZS5HcGdtZUVycm9yIG5vdCByYWlzZWQnKQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpZmFjZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlmYWNlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjBiMjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpZmFjZS5pbmMKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJQeWlmYWNlIGlzIGEgcGFja2FnZSB0aGF0IGV4cG9zZXMgdGhlIG5ldHdvcmsgaW50ZXJmYWNlcyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpbiBhIGVhc3kgdG8gdXNlIGFuZCB0cmFuc3BhcmVudCB3YXkiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHlpZmFjZS8iCitMSUNFTlNFID0gIkdQTHYzKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTRmZTg2OWVlOTg3YTM0MDE5OGZiMGQ1NGM1NWM0N2YxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDZjM2M3MWZlNTFkZjc0MGRhZTZhODhhMTNhZmI1ZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGJiNzkxMDBjYmNmNzM0NGExY2NhZGRjNTc4Y2Q2NDU1ZGE0N2Q4ZWFjNmViMWJmOTAzZWMzMmUwNDNhZjkyNCIKKworaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlmYWNlXzAuMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpZmFjZV8wLjAuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTRjYjMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpZmFjZV8wLjAuNS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tcHlpZmFjZS5pbmMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlub3RpZnkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpbm90aWZ5LmluYwppbmRleCAwMTY4ZjFhLi45NzVmMTFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlub3RpZnkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aW5vdGlmeS5pbmMKQEAgLTIsNyArMiwxMiBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hYjE3M2NhZGU3OTY1YjQxMTUyODQ2NDU4OWEwODM4MiIKIAotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi10aHJlYWRpbmcgcHl0aG9uLWlvIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1taXNjIHB5dGhvbi1zaGVsbCIKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tbWlzYyBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyIKIAogU1JDX1VSSVttZDVzdW1dID0gIjhlNTgwZmExZmYzOTcxZjk0YTZmODE2NzJiNzZjNDA2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljOTk4YTVkNzYwNmNhODM1MDY1Y2RhYmMwMTNhZTZjNjZlYjllYTc2YTAwYTFlM2JjNmUwY2ZlMmI0ZjcxZjQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlub3RpZnlfMC45LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlub3RpZnlfMC45LjYuYmIKaW5kZXggZDFmODRjMy4uMGM5YTJjNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpbm90aWZ5XzAuOS42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aW5vdGlmeV8wLjkuNi5iYgpAQCAtMSwyICsxLDYgQEAKIGluaGVyaXQgc2V0dXB0b29scwogcmVxdWlyZSBweXRob24tcHlpbm90aWZ5LmluYworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5amtzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5amtzLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODY2YzU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqa3MuaW5jCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiUHVyZS1QeXRob24gSmF2YSBLZXlzdG9yZSAoSktTKSBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiUHlKS1MgZW5hYmxlcyBQeXRob24gcHJvamVjdHMgdG8gbG9hZCBhbmQgbWFuaXB1bGF0ZVwKKyBKYXZhIEtleVN0b3JlIChKS1MpIGRhdGEgd2l0aG91dCBhIEpWTSBkZXBlbmRlbmN5LiBQeUpLUyBzdXBwb3J0cyBKS1MsXAorIEpDRUtTLCBCS1MgYW5kIFVCRVIgKEJvdW5jeUNhc3RsZSkga2V5c3RvcmVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2t1cnRicm9zZS9weWprcyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTY5NGQ2Y2M3MjRjYWY3ZjczODZiZTg4YTRhODE5NTgiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNTM1MDFlN2M4MGQ0NjU5Njk3NDJiYzZiZWU5MWQ0OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MDljNDRhMzAzZGQ2YjI0NjQwNzhlYmViNjc3NDE3ZTcxNzgxOGQ0YjNkYzM4NDRhNDYyYmVmOWQyMTVkY2M4IgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UFlUSE9OX1BOfS1qYXZhb2JqLXB5MyBcCisgICAgJHtQWVRIT05fUE59LXB5YXNuMSBcCisgICAgJHtQWVRIT05fUE59LXB5YXNuMS1tb2R1bGVzIFwKKyAgICAke1BZVEhPTl9QTn0tcHljcnlwdG9kb21lIFwKKyAgICAke1BZVEhPTl9QTn0tdHdvZmlzaFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqa3NfMTcuMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqa3NfMTcuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOTlmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWprc18xNy4xLjEuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1weWprcy5pbmMKK2luaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqd3QuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqd3QuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmOTI4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWp3dC5pbmMKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJKU09OIFdlYiBUb2tlbiBpbXBsZW1lbnRhdGlvbiBpbiBQeXRob24iCitTVU1NQVJZID0gIkpTT04gV2ViIFRva2VuIGltcGxlbWVudGF0aW9uIGluIFB5dGhvbiIKK0RFU0NSSVBUSU9OID0gIkEgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIEpTT04gV2ViIFRva2VuIGRyYWZ0IDMyLlwKKyBPcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiB3YXMgd3JpdHRlbiBieSBodHRwczovL2dpdGh1Yi5jb20vcHJvZ3JpdW0iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9qcGFkaWxsYS9weWp3dCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Njg2MjY3MDVhN2I1MTNjYThkNWY0NGEzZTIwMGVkMGMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmN2RiZTBkNjJmMjA4N2E3NjA1OTQ2YWVlY2EwMjU0MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYWNiYTU3ODZmZTNiZjFhMGFlODY3Mzg3NGUyOWY5YWM0OTc4NjA5NTVjNTAxMjg5YzYzYjE1ZDNkYWFlNjNhIgorCitQWVBJX1BBQ0tBR0UgPSAiUHlKV1QiCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqd3RfMS42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWp3dF8xLjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGE3N2I2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqd3RfMS42LjEuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1weWp3dC5pbmMKK2luaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bGludC5pbmMKaW5kZXggYzU1YmNlNi4uYmE4NWI5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWxpbnQuaW5jCkBAIC0zLDIzICszLDEzIEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI5OGExZWU5ODVhM2ViYzg3NmEyMGViNzU3N2RiYWI2OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZjY1YjM4MTVjM2JmNzUyNGI4NDU3MTFkNTRjNDI0MmU0MDU3ZGQ5MzgyNjU4NjYyMDIzOWVjZGZlNTkxZmIxIgorU1JDX1VSSVttZDVzdW1dID0gIjJlYjVmM2NiOGZlNTY3ZWFmNTQyMGRkNDE1MDEyMjAyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3NzMxMTg1OWUwYzJkNzkzMjA5NWYzMGQyYjFiZmRjNGI2ZmUxMTFmNTM0NDUwYmE3MjdhNTJlYWUzMzBlZjIiCiAKIGluaGVyaXQgcHlwaQogCiBERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0LXJ1bm5lci1uYXRpdmUiCiAKLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tYXN0cm9pZCBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWlzb3J0IFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tanNvbiBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKLSAgICAgICAgICAgICAgICAgICIKLQogZG9faW5zdGFsbF9hcHBlbmQoKXsKICAgICBybSAke0R9JHtiaW5kaXJ9L3B5bGludAogICAgIGNhdCA+PiAke0R9JHtiaW5kaXJ9L3B5bGludCA8PEVPRgpAQCAtMzAsMyArMjAsMTkgQEAKICAgICBjaG1vZCA3NTUgJHtEfSR7YmluZGlyfS9weWxpbnQKICAgICBzZWQgLWkgLWUgJ3M6XiMhL3Vzci9iaW4vcHl0aG9uOiMhL3Vzci9iaW4vZW52XCAke1BZVEhPTl9QTn06ZycgJHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9weWxpbnQvdGVzdC9kYXRhL2FzY3JpcHQKIH0KKworUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgorRklMRVNfJHtQTn0tdGVzdHMrPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9weWxpbnQvdGVzdC8gXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5bGludC90ZXN0dXRpbHMucHkgXAorIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWFzdHJvaWQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1pc29ydCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZGlmZmxpYiBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCisgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWxpbnRfMS43LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWxpbnRfMS44LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bGludF8xLjcuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50XzEuOC4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3AuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwLmluYwppbmRleCAyMWJhN2JiLi43NzY1Y2M1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3AuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcC5pbmMKQEAgLTMsNyArMywxMyBAQAogTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hMzYzOWNmNTc4MGY3MWIxMjVkM2U5ZDFkYzEyN2MyMCIKIAotU1JDX1VSSVttZDVzdW1dID0gIjIwMjRiYWJkOTdhYjU3Y2EwMzYwMzk0ZWRjMzdmMmI2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc0ODBhY2FkYThjYmE5NDcyYTg1MDcwYzU3YmFhZDg5YWU5ZGVlZDgyNmE3NTE1YTRjMTQ5YWM0ODkyMGMyNzMiCitTUkNfVVJJW21kNXN1bV0gPSAiZDRmZWUyYWJiMmQ3NDY4MDEwYjdmZTllYmM2OGIwY2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzA0ZmJkODg2MmRmZGUyN2Q3NjdjMDkzZGU4N2ZlYzQyZmM2M2M3MGQ4MzkzNjQzZDFhM2I0Zjc2NWFhZTc4ZiIKIAotUkRFUEVORFNfJHtQTn0gKz0gIiAke1BZVEhPTl9QTn0tcmVxdWVzdHMgJHtQWVRIT05fUE59LWpzb24gJHtQWVRIT05fUE59LWpzb25zY2hlbWEiCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXV0aWwgXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbnNjaGVtYSBcCisgICAgJHtQWVRIT05fUE59LXJlcXVlc3RzIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcF8yLjQuODAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3BfMi40Ljg5LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3BfMi40LjgwLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3BfMi40Ljg5LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1vbmdvLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ28uaW5jCmluZGV4IDdmMTk5YjQuLmJhZjNkZDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ28uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ28uaW5jCkBAIC02LDEwICs2LDEwIEBACiBNb25nb0RCLiBUaGUgZ3JpZGZzIHBhY2thZ2UgaXMgYSBncmlkZnMgaW1wbGVtZW50YXRpb24gb24gdG9wIG9mIHB5bW9uZ28uIgogSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vbW9uZ29kYi9tb25nby1weXRob24tZHJpdmVyIgogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmE5NDQ5NDJlMTQ5NmFmMTg4NjkwM2QyNzRkZWRiMTMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04NmQzZjNhOTVjMzI0Yzk0NzliZDg5ODY5NjhmNDMyNyIKIAotU1JDX1VSSVttZDVzdW1dID0gIjM1YWU1MzA3M2EyNTYwMzU5MWUwODViMThiYzVhMGVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4MjBkOTM0MTRmM2JlYzFmYTQ1NmM4NGFmYmQ0YWYxYjQzZmY0MTM2NjMyMTYxOWRiNzRlNmJjMDY1ZDY5MjQiCitTUkNfVVJJW21kNXN1bV0gPSAiMGQ3MmM4N2ZiOTNjZWEwNzU5NTI5YmVmYWZlZmNlNTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjdlYmNiODQ2OTYyZWU0MDM3NGRiMmQ5MDE0YTg5YmVhOWM5ODNhZTYzYzE4Nzc5NTdjM2EwYTc1Njk3NDc5NiIKIAogUEFDS0FHRVMgPSsgIiR7UFlUSE9OX1BOfS1ic29uIgogCkBAIC0xNyw2ICsxNyw3IEBACiAKIFJERVBFTkRTXyR7UFlUSE9OX1BOfS1ic29uICs9ICIgXAogICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICAke1BZVEhPTl9QTn0tanNvbiBcCiAgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAogICAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCiAgICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXApAQCAtMjQsNCArMjUsNSBAQAogCiBSREVQRU5EU18ke1BOfSArPSAiIFwKICAgICAke1BZVEhPTl9QTn0tYnNvbiBcCisgICAgJHtQWVRIT05fUE59LXBwcmludCBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1vbmdvXzMuNS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nb18zLjYuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nb18zLjUuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nb18zLjYuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHluZXRsaW51eC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW5ldGxpbnV4LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTM5ODk2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHluZXRsaW51eC5pbmMKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJMaW51eCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gbGlicmFyeSBmb3IgUHl0aG9uIgorREVTQ1JJUFRJT04gPSAiVGhpcyBsaWJyYXJ5IGNvbnRhaW5zIFB5dGhvbiBiaW5kaW5ncyB0byBpb2N0bCBjYWxscyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vcmxpc2Fnb3IvcHluZXRsaW51eCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTc0ZTE4NjE3MzZlZTk1OTgyNGZlNzU0MjMyM2MxMmU5IgorCitpbmhlcml0IHB5cGkKKworU1JDX1VSSVttZDVzdW1dID0gIjMzMzZlNWQ0YTQ3OGFjY2E0ZTM1YmYzMTI1YjRmODgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhZDA4Mjk4YzlmNWJhMTVhMTFjZGRjNjM5YmE4Nzc4Y2FiZGZjNDAyYjUxMDY2ZDllMGEzMjVlNWE1YjM5MWMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW5ldGxpbnV4XzEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bmV0bGludXhfMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NWFkNmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW5ldGxpbnV4XzEuMS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tcHluZXRsaW51eC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2wuaW5jCmluZGV4IDFiZjgzMjQuLjc3MjJlOGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsLmluYwpAQCAtNSw4ICs1LDggQEAKIAogREVQRU5EUyArPSAib3BlbnNzbCAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMDlkY2QzMDdiOGQyMDY4ZjlkZDVhYWEzYTNhODg5OTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjk2MzBiOTA2NGE4MmUwNGQ4MjQyZWEwMWQ3YzkzZDcwZWMzMjBmNWUzZWQ0OGU5NWZjYWJjNmIxZDBmNmM3NiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOWM1MTM0ZGI4YmYzMTgzNTczYjc4NDA5NTRjYWM5NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzEwY2ZiYTQ2YTUyYzBiMDk1MDExODk4MWQ2MWU3MmMxZTViMWFhYzQ1MWNhMWJjNzdkZTFhNjc5NDU2NzczIgogCiBQWVBJX1BBQ0tBR0UgPSAicHlPcGVuU1NMIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2xfMTcuMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsXzE3LjUuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsXzE3LjMuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsXzE3LjUuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGFyc2luZy5pbmMKaW5kZXggMTlmNmQ1NS4uZTMwODM5ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBhcnNpbmcuaW5jCkBAIC0xOCw0ICsxOCw0IEBACiAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCiAiCiAKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGVyY2xpcC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA1ZGU2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGVyY2xpcC5pbmMKQEAgLTAsMCArMSwxMiBAQAorREVTQ1JJUFRJT04gPSAiQSBjcm9zcy1wbGF0Zm9ybSBjbGlwYm9hcmQgbW9kdWxlIGZvciBQeXRob24uIChvbmx5IGhhbmRsZXMgcGxhaW4gdGV4dCBmb3Igbm93KSIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTFlZDkyMTE1YzhmOTZiMTllYzM0ZWQwOWRmNTg2ZTUxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDJmNmEzMTI5Y2Q2ZjI1MThiNTJiYjBiOGRlZWVkYTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2U4Mjk0MzNhOWFmNjQwZTA4ZWU4OWIyMGY3YzYyMTMyNzE0YmNjNWQ3N2RmMTE0MDQ0ZDBmY2NiOGMzYjNiOCIKKworaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwXzEuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwXzEuNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjOWZjYmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBlcmNsaXBfMS42LjAuYmIKQEAgLTAsMCArMSw3IEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXB5cGVyY2xpcC5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWNvbnRleHRsaWIgXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyLmluYwppbmRleCBkYTFkNGNkLi45ZWM5ODY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTIuaW5jCkBAIC0xLDI2ICsxLDI1IEBACiBTVU1NQVJZID0gIkEgcHVyZSBQeXRob24gbmV0bGluayBhbmQgTGludXggbmV0d29yayBjb25maWd1cmF0aW9uIGxpYnJhcnkiCiBMSUNFTlNFID0gIkdQTHYyICYgQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuR1BMLnYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkFwYWNoZS52MjttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkFwYWNoZS52MjttZDU9MzQyODFlMzEyMTY1Zjg0M2EyYjdkMWYxMTRmZTY1Y2UiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI3MzNhZGIzNjJiNjYwM2M3MjY5YzBiM2RmMzA0NWE1NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1Y2RmNDQ2NTZjZjYyMzM2OWYwY2JmMTgzZDlkMTRhMWE1MGViZGZmYmQ1MGQ0ZTMwZmZkYTYyYzBhMDVkN2IzIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vaW1wb3J0LXNpbXBsZWpzb24tYXMtanNvbi5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YzI1MTU0M2M0MjgyYTJmOGIxYThkNmFhOGFmYzY4OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3YWZhZDI4ZWUwYTBmM2U3YzM0YWRhYTlmOTUzZDAwNTYwZWQ5OTEwMjAzZTkzZjEwNzgzM2I2ZThkMTUxMTcxIgogCiBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcHlyb3V0ZTI6IgogCiBpbmhlcml0IHB5cGkKIAotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCi0gICR7UFlUSE9OX1BOfS1zaW1wbGVqc29uIFwKLSAgJHtQWVRIT05fUE59LW11bHRpcHJvY2Vzc2luZyBcCi0gICR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcHByaW50IFwKLSAgJHtQWVRIT05fUE59LXBpY2tsZSBcCi0gICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKLSAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICR7UFlUSE9OX1BOfS10ZXh0dXRpbHMgXAotICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0gICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCisgICAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCisgICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAorICAgICR7UFlUSE9OX1BOfS1tdWx0aXByb2Nlc3NpbmcgXAorICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAorICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKKyAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTIvaW1wb3J0LXNpbXBsZWpzb24tYXMtanNvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyL2ltcG9ydC1zaW1wbGVqc29uLWFzLWpzb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3M2RhMDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTIvaW1wb3J0LXNpbXBsZWpzb24tYXMtanNvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd3JvbmcgZGVwZW5kZW5jeV0KLQotU3ViamVjdDogW1BBVENIXSBpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCi0KLUF0IHJ1bnRpbWUgcHl0aG9uLXB5cm91dGUyIHRyaWVzIHRvIGltcG9ydCBqc29uLCBidXQgdGhlIG1vZHVsZSBpcyBub3QgCi1hdmFpbGFibGUsIGltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24gc29sdmUgdGhlIGlzc3VlLgotCi1TaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgotLS0tCi0gcHlyb3V0ZTIvbmV0bGluay9ydG5sL2lmaW5mbXNnLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHlyb3V0ZTIvbmV0bGluay9ydG5sL2lmaW5mbXNnLnB5IGIvcHlyb3V0ZTIvbmV0bGluay9ydG5sL2lmaW5mbXNnLnB5Ci1pbmRleCA0ZjE0ZjI1Li41NTY0M2ViIDEwMDY0NAotLS0tIGEvcHlyb3V0ZTIvbmV0bGluay9ydG5sL2lmaW5mbXNnLnB5Ci0rKysgYi9weXJvdXRlMi9uZXRsaW5rL3J0bmwvaWZpbmZtc2cucHkKLUBAIC0xLDUgKzEsNSBAQAotIGltcG9ydCBvcwotLWltcG9ydCBqc29uCi0raW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgotIGltcG9ydCBlcnJubwotIGltcG9ydCBzZWxlY3QKLSBpbXBvcnQgc3RydWN0Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyXzAuMy4yMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyXzAuMy4yMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I5YzhlMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMl8wLjMuMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5cm91dGUyLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMl8wLjQuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMl8wLjQuMjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI1ZjFiNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyXzAuNC4yMS5iYgpAQCAtMCwwICsxLDYgQEAKK3JlcXVpcmUgcHl0aG9uLXB5cm91dGUyLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzZXJpYWwuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzZXJpYWwuaW5jCmluZGV4IDk5YzZmYzQuLjUyYTdlMDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c2VyaWFsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNlcmlhbC5pbmMKQEAgLTIsMjYgKzIsNDEgQEAKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWQ0NzZkOTQ5MjZkYjZlMDAwOGE1YjM4NjBkMWY1YzBkIgogCi0jIEZJWE1FIG1pZ2h0IHN0b3AgcGFja2FnaW5nIHNlcmlhbHdpbjMyIGFuZCBzZXJpYWxqYXZhIGZpbGVzCitTUkNfVVJJW21kNXN1bV0gPSAiZWQ2MTgzYjE1NTE5YTBhZTk2Njc1ZTljMzMzMGM2OWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmUyZDQwMWZkZWUwZWFiOTk2Y2Y3MzRlNjc3NzNhMDE0M2I5MzI3NzJjYThiNDI0NTE0NDBjZmVkOTQyYzYyNyIKKworaW5oZXJpdCBweXBpCisKK1BBQ0tBR0VTID0rICIke1BOfS1qYXZhICR7UE59LW9zeCAke1BOfS13aW4zMiAke1BOfS10b29scyIKKworRklMRVNfJHtQTn0tamF2YSA9ICIgXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC8qamF2YSogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC9fX3B5Y2FjaGVfXy8qamF2YSogXAorIgorCitGSUxFU18ke1BOfS1vc3ggPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvdG9vbHMvKm9zeCogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC90b29scy9fX3B5Y2FjaGVfXy8qb3N4KiBcCisiCisKK0ZJTEVTXyR7UE59LXdpbjMyID0gIiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsLypzZXJpYWxjbGkqIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvX19weWNhY2hlX18vKnNlcmlhbGNsaSogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC8qd2luMzIqIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvX19weWNhY2hlX18vKndpbjMyKiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL3Rvb2xzL21pbml0ZXJtKiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL3Rvb2xzL19fcHljYWNoZV9fL21pbml0ZXJtKiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL3Rvb2xzLyp3aW5kb3dzKiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL3Rvb2xzL19fcHljYWNoZV9fLyp3aW5kb3dzKiBcCisiCiAKIFJERVBFTkRTXyR7UE59ID0gIlwKICAgICAke1BZVEhPTl9QTn0tZmNudGwgXAogICAgICR7UFlUSE9OX1BOfS1pbyBcCiAgICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAogICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAogICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAogICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAogIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWQ2MTgzYjE1NTE5YTBhZTk2Njc1ZTljMzMzMGM2OWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmUyZDQwMWZkZWUwZWFiOTk2Y2Y3MzRlNjc3NzNhMDE0M2I5MzI3NzJjYThiNDI0NTE0NDBjZmVkOTQyYzYyNyIKLQotaW5oZXJpdCBweXBpCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgV2UgZG9uJ3Qgc3VwcG9ydCBqcHl0aG9uIG5vdy4KLQlpZiBbIC1lICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvc2VyaWFsamF2YS5weSBdOyB0aGVuCi0JCXJtIC1mICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvc2VyaWFsamF2YS5weQotCQlybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL3NlcmlhbGphdmEucHljCi0JZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c2VyaWFsXzMuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c2VyaWFsXzMuNC5iYgppbmRleCA5MWEwZjI2Li5mZDg1MmEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNlcmlhbF8zLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzZXJpYWxfMy40LmJiCkBAIC0xLDQgKzEsNCBAQAogaW5oZXJpdCBzZXR1cHRvb2xzCiByZXF1aXJlIHB5dGhvbi1weXNlcmlhbC5pbmMKIAotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1pbXBvcnRsaWIiCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWFyZ3BhcnNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzbWlfMC4xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNtaV8wLjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyMzRkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNtaV8wLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiU05NUCBTTUkvTUlCIFBhcnNlciIKLURFU0NSSVBUSU9OID0gIkEgcHVyZS1QeXRob24gaW1wbGVtZW50YXRpb24gb2YgU05NUC9TTUkgTUlCIFwKLSAgcGFyc2luZyBhbmQgY29udmVyc2lvbiBsaWJyYXJ5LiBDYW4gcHJvZHVjZSBQeVNOTVAgTUlCIG1vZHVsZXMuIFwKLSIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHlzbWkiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9ZDhiMWJiYWRkNjM1ZjE4N2RlZTc0ZDk5OWE4YzY3YjgiCi0KLVNSQ05BTUUgPSAicHlzbWkiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9wLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmODc1NGU5ZWQ3NTY5OGNjMTZiNDBmMTI1ZGY4NWIxMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDkxMjE4MGZjNmZhYTljMjY0ZGY3OGY5N2U3YzQ1MWY3N2Y4NGY1YmQ4NDAwOThkMmNlN2IxYmY3MDA4MmJjIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1wbHkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNtaV8wLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c21pXzAuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NzU5YjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNtaV8wLjIuMi5iYgpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gIlNOTVAgU01JL01JQiBQYXJzZXIiCitERVNDUklQVElPTiA9ICJBIHB1cmUtUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIFNOTVAvU01JIE1JQiBcCisgIHBhcnNpbmcgYW5kIGNvbnZlcnNpb24gbGlicmFyeS4gQ2FuIHByb2R1Y2UgUHlTTk1QIE1JQiBtb2R1bGVzLiBcCisiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5c21pIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5yc3Q7bWQ1PWQ4YjFiYmFkZDYzNWYxODdkZWU3NGQ5OTlhOGM2N2I4IgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2IwZjcxZTRlOWY3MzBkMjExZjA5ZDhlZjUzNzExNDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmEzMTVjYzNlNTU2YjM0MjgzNzJiNjlkYTY2M2EyNGQyZjBkZjllOWFiMDc1YjAyMmNiMTMzODU1ZjI1YWVmNyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLXBseSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c29ja3MuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrcy5pbmMKaW5kZXggY2Y5NTA5YS4uNTNlYzFiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrcy5pbmMKQEAgLTMsMTMgKzMsMTYgQEAKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWQ0NTdiY2ZmYjk2NjFiNDVmNzk5ZDRlZmVlNzJmMTYiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIwNzAwN2VjN2VkNDYyOTJkYWIwNjAxM2YyZTNhZjM2NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMDAzMjlmMjdlZmExNTdkYjdlZmUzY2EyNmZjZDY5MDMzY2Q2MWY4MzgyMjQ2MWVlM2Y4YTM1M2I0OGUzM2NmIgorU1JDX1VSSVttZDVzdW1dID0gIjQ0MWM0ZTNiZjViMDQyZjdlNzA2MTNjZDg3MWRmMjZjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNmZTUyYzU1ODkwYTI0ODY3NmZkNjlkYzllM2M0ZTgxMTcxOGI3Nzc4MzRiY2FhYjdhODEyNWNmOWRlYWM2NzIiCiAKIFBZUElfUEFDS0FHRSA9ICJQeVNvY2tzIgogCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZW1haWwgXAogICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKICIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrc18xLjYuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c29ja3NfMS42LjguYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c29ja3NfMS42LjcuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c29ja3NfMS42LjguYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c3RhY2hlLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c3RhY2hlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGJjOTlmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzdGFjaGUuaW5jCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIE11c3RhY2hlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2RlZnVua3QvcHlzdGFjaGUiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWViNDQxNzgwMmM1NjM4NGFhYzcxYjM0NTA1NTI4YTYwIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDg1ODg1ZTY3YTBmNjQxMWQ1MjUyZTY5YjIwYTM1Y2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjdiYmMyNjVmYjk1N2I0ZDZjN2MwNDJiMzM2NTYzMTc5NDQ0YWIzMTNmYjkzYTcxOTc1OTExMWVhYmQzYjg1YSIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c3RhY2hlXzAuNS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzdGFjaGVfMC41LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ1NTAxMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c3RhY2hlXzAuNS40LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXB5c3RhY2hlLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lci5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyLmluYwppbmRleCBjMTczYTE4Li43NTQ2NzQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyLmluYwpAQCAtMSwxNiArMSwxNiBAQAogU1VNTUFSWSA9ICJJbnZva2UgcHkudGVzdCBhcyBkaXN0dXRpbHMgY29tbWFuZCB3aXRoIGRlcGVuZGVuY3kgcmVzb2x1dGlvbiIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTM4Yjk3MWMyYjRjMzNiOTc4ZDFiOWM5ZWNlOWFlNjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hMzNmMzhiYmY0N2Q0OGM3MGZlMGQ0MGU1Zjc3NDk4ZSIKIAotU1JDX1VSSVttZDVzdW1dID0gImE4ZGQ1N2M4MGNkZTM3YTU4N2RkOGMzNzc0MGMxYWIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjOTA5M2U3YTE4NzgwNDA5ZDlhMzg5ZjIwMzY2ZjJmZDM5YWNmYjFkYjYxNTQ1ZmRiMmU5MGNkYmQwYmNhZTQiCitTUkNfVVJJW21kNXN1bV0gPSAiOGY4MzYzYTUyYmJhYmM0Y2VkZDVlMjM5YmViMmJhMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGY3YzNhM2NmNWFlYWQxM2Y1NGJhYWEwMWNlYjQ5ZTVhZTkyYWJhNWQzZmYxOTI4ZTgxZTE4OWM0MGJjNjcwMyIKIAogaW5oZXJpdCBweXBpCiAKIERFUEVORFMgKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKIAotUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXB5ICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzICR7UFlUSE9OX1BOfS1hcmdwYXJzZSAke1BZVEhPTl9QTn0tZGVidWdnZXIgJHtQWVRIT05fUE59LWpzb24gXAorUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXB5ICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzICR7UFlUSE9OX1BOfS1kZWJ1Z2dlciAke1BZVEhPTl9QTn0tanNvbiBcCiAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0taW8iCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXJfMi4xMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lcl8yLjEyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhNTA1NWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lcl8yLjEyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHl0ZXN0LXJ1bm5lci5pbmMKLQotIyBEZXBlbmRlbmN5IG9ubHkgZXhpc3RzIGZvciBweXRob24yCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWNvbXBpbGVyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lcl8zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyXzMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzY1YTczCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lcl8zLjAuYmIKQEAgLTAsMCArMSw1IEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXB5dGVzdC1ydW5uZXIuaW5jCisKKyMgRGVwZW5kZW5jeSBvbmx5IGV4aXN0cyBmb3IgcHl0aG9uMgorUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1hcmdwYXJzZSBweXRob24tY29tcGlsZXIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LmluYwppbmRleCA2MTQwMjUwLi40ZmViOWEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC5pbmMKQEAgLTMsMTggKzMsMjEgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzM5YjI0OTY1ZjRhZWY2NDIyMmNiMzVkZTlkNDdjYzQiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI0MDFjMDA1YmQ1N2Y3MWU2M2JhMDE1YWIwODZmZTY3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNDZlNDllMDM0MGE1MzI3NjQ5OTFjNDk4MjQ0YTYwZTNhMzdkNzQyNGE1MzJiM2ZmMWE2YTc2NTNmMWE0MDNhIgorU1JDX1VSSVttZDVzdW1dID0gIjFiODNhMjVkNDVmYWQ4OTNmNDMwZmM1MDMxNjUzYzU2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExN2JhZDM2YzFhNzg3ZTFhOGE2NTlkZjM1ZGU1M2JhMDVmOWYzMzk4ZmI5ZTRhYzE3ZTgwYWQ1OTAzZWI4YzUiCiAKIFNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLXNldHVwX3JlcXVpcmVzLWZvci1zZXR1cHRvb2xzLXNjbS5wYXRjaCBcCiAgICAgICAgICAgICAgICAgICAgZmlsZTovL3B5dGVzdF92ZXJzaW9uX2ZpeC5wYXRjaCAiCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tYXJncGFyc2UgXAorICAgICR7UFlUSE9OX1BOfS1hdHRycyBcCiAgICAgJHtQWVRIT05fUE59LWRlYnVnZ2VyIFwKKyAgICAke1BZVEhPTl9QTn0tZG9jdGVzdCBcCiAgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS1wbHVnZ3kgXAogICAgICR7UFlUSE9OX1BOfS1weSBcCiAgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAogIgogCiBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcHl0ZXN0OiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtc2V0dXBfcmVxdWlyZXMtZm9yLXNldHVwdG9vbHMtc2NtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1zZXR1cF9yZXF1aXJlcy1mb3Itc2V0dXB0b29scy1zY20ucGF0Y2gKaW5kZXggZTI4M2IxNy4uMDZkZmNkZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1zZXR1cF9yZXF1aXJlcy1mb3Itc2V0dXB0b29scy1zY20ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1zZXR1cF9yZXF1aXJlcy1mb3Itc2V0dXB0b29scy1zY20ucGF0Y2gKQEAgLTEsMjkgKzEsMzIgQEAKLUZyb20gZTJkODEwMDljNzkwYjRlYmVjZWQ4NDA4YjZiYWU3ODA2MGNhYmNhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjRhOTAxZmQxNzkyNmU4ZTA1YmU0ZWQyZTAxYjAxMTNhMmUzYTg1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+Ci1EYXRlOiBXZWQsIDUgSnVsIDIwMTcgMDk6MzU6NTEgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzFdIHNldHVwLnB5OiByZW1vdmUgdGhlIHNldHVwX3JlcXVpcmVzIGZvciBzZXR1cHRvb2xzLXNjbQorRGF0ZTogVHVlLCAxOSBEZWMgMjAxNyAxMTozNjozOSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBbUEFUQ0ggMS8xXSBzZXR1cC5weTogcmVtb3ZlIHRoZSBzZXR1cF9yZXF1aXJlcyBmb3IKKyBzZXR1cHRvb2xzLXNjbQogCiBUaGUgc2V0dXBfcmVxdWlyZXMgYXJndW1lbnQgZm9yY2VzIHRoZSBkb3dubG9hZCBvZiB0aGUgZWdnIGZpbGUgZm9yIHNldHVwdG9vbHMtc2NtCiBkdXJpbmcgdGhlIGRvX2NvbXBpbGUgcGhhc2UuICBUaGlzIGRvd25sb2FkIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSB0eXBpY2FsIGZldGNoCiBhbmQgbWlycm9yIHN0cnVjdHVyZS4gIFRoZSBvbmx5IHVzYWdlIG9mIHNjbSBpcyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgX3ZlcnNpb24ucHkKIGZpbGUgYW5kIGluIHRoZSByZWxlYXNlIHRhcmJhbGwgaXQgaXMgYWxyZWFkeSBjb3JyZWN0bHkgY3JlYXRlZAogCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCiBTaWduZWQtb2ZmLWJ5OiBEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPgogLS0tCiAgc2V0dXAucHkgfCAxIC0KICAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggNzUxODY4Yy4uZWY2ZWJmMSAxMDA2NDQKK2luZGV4IDNlYjM4ZWYuLjExNjMyMDIgMTAwNjQ0CiAtLS0gYS9zZXR1cC5weQogKysrIGIvc2V0dXAucHkKLUBAIC03MSw3ICs3MSw2IEBAIGRlZiBtYWluKCk6CitAQCAtODIsNyArODIsNiBAQCBkZWYgbWFpbigpOgogICAgICAgICAga2V5d29yZHM9InRlc3QgdW5pdHRlc3QiLAogICAgICAgICAgY21kY2xhc3M9eyd0ZXN0JzogUHlUZXN0fSwKICAgICAgICAgICMgdGhlIGZvbGxvd2luZyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgcmVsZWFzZQogLSAgICAgICAgc2V0dXBfcmVxdWlyZXM9WydzZXR1cHRvb2xzLXNjbSddLAorICAgICAgICAgcHl0aG9uX3JlcXVpcmVzPSc+PTIuNywgIT0zLjAuKiwgIT0zLjEuKiwgIT0zLjIuKiwgIT0zLjMuKicsCiAgICAgICAgICBpbnN0YWxsX3JlcXVpcmVzPWluc3RhbGxfcmVxdWlyZXMsCiAgICAgICAgICBleHRyYXNfcmVxdWlyZT1leHRyYXNfcmVxdWlyZSwKLSAgICAgICAgIHBhY2thZ2VzPVsnX3B5dGVzdCcsICdfcHl0ZXN0LmFzc2VydGlvbicsICdfcHl0ZXN0Ll9jb2RlJywgJ19weXRlc3QudmVuZG9yZWRfcGFja2FnZXMnXSwKIC0tIAogMi43LjQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC9weXRlc3RfdmVyc2lvbl9maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QvcHl0ZXN0X3ZlcnNpb25fZml4LnBhdGNoCmluZGV4IDkwOGY4NjIuLmIzNzNkOTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC9weXRlc3RfdmVyc2lvbl9maXgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0L3B5dGVzdF92ZXJzaW9uX2ZpeC5wYXRjaApAQCAtMzYsNyArMzYsNyBAQAogKyAgICAgICAgcmV0dXJuIHZlcnNpb25fbWF0Y2guZ3JvdXAoMSkKICsgICAgcmFpc2UgUnVudGltZUVycm9yKCJVbmFibGUgdG8gZmluZCB2ZXJzaW9uIHN0cmluZy4iKQogIAotIGRlZiBoYXNfZW52aXJvbm1lbnRfbWFya2VyX3N1cHBvcnQoKToKKyBkZWYgZ2V0X2Vudmlyb25tZW50X21hcmtlcl9zdXBwb3J0X2xldmVsKCk6CiAgICAgICIiIgogQEAgLTU5LDkgKzcyLDcgQEAgZGVmIG1haW4oKToKICAgICAgICAgIG5hbWU9J3B5dGVzdCcsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3RfMy4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3RfMy4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMjJmMDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0XzMuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHl0ZXN0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0XzMuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0XzMuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMWFiMDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3RfMy40LjIuYmIKQEAgLTAsMCArMSw4IEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tcHl0ZXN0LmluYworCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWFyZ3BhcnNlIFwKKyAgICAke1BZVEhPTl9QTn0tY29tcGlsZXIgXAorICAgICR7UFlUSE9OX1BOfS1mdW5jc2lncyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXR6LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHouaW5jCmluZGV4IDFjNjU2NGIuLjUxOTQ4N2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHouaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHouaW5jCkBAIC0xLDE3ICsxLDE5IEBACiBTVU1NQVJZID0gIldvcmxkIHRpbWV6b25lIGRlZmluaXRpb25zLCBtb2Rlcm4gYW5kIGhpc3RvcmljYWwiCiBIT01FUEFHRSA9ICJodHRwOi8vcHl0aG9uaG9zdGVkLm9yZy9weXR6IgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MzllYTkyNzUyYTM1Y2Y2N2Q4YTg4NWQ4ZTNhZjNjNjkiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NDg3OGE5MTU3MDkyMjViY2VhYjczOWJkYzJhMThlOGQiCiAKIGluaGVyaXQgcHlwaQotUFlQSV9QQUNLQUdFX0VYVCA9ICJ6aXAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJmODliZGU4YTgxMWM4YTFhNWJhYzE3ZWFhYTk0MzgzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNWMwNTZlOGY2MmQ0NWJhODIxNWU1Y2I4ZjUwZGZjY2IxOThiNGI5ZmJlYTg1MDA2NzRmMzQ0M2U0Njg5NTg5IgorU1JDX1VSSVttZDVzdW1dID0gImYwNTQ0Mzc5MjBjODk1ZGQxNGE0NTA5ZmFiYWZlMDI5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMwNjQyNTMwMmYyY2Y2NjhmMWJiYTdhMGEwM2YzYzFkMzRkNGViZWVmMmM3MjAwM2RhMzA4YjM5NDdjN2Y3NDkiCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAogICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LWRvY3Rlc3QgXAogICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICAgJHtQWVRIT05fUE59LXBwcmludCBcCiAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHpfMjAxNy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0el8yMDE4LjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHpfMjAxNy4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXR6XzIwMTguNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dWRldi5pbmMKaW5kZXggYWI0YzVmZC4uY2I5MDZjOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVkZXYuaW5jCkBAIC0xNCw2ICsxNCw1IEBACiAgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCiAgICAgJHtQWVRIT05fUE59LW1pc2MgXAogICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKICAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dWRldl8wLjIxLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVkZXZfMC4yMS4wLmJiCmluZGV4IDMyNTczYjcuLmEzZTE1MDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dWRldl8wLjIxLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2XzAuMjEuMC5iYgpAQCAtMiw2ICsyLDcgQEAKIAogUkRFUEVORFNfJHtQTn0gPSAiXAogICAgICR7UFlUSE9OX1BOfS1jb250ZXh0bGliIFwKKyAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCiAiCiAKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVzYi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVzYi5pbmMKaW5kZXggYWYyMDEwOS4uMzBiYmU4NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2IuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dXNiLmluYwpAQCAtMSwxMCArMSwxMCBAQAogU1VNTUFSWSA9ICJQeVVTQiBwcm92aWRlcyBVU0IgYWNjZXNzIG9uIHRoZSBQeXRob24gbGFuZ3VhZ2UiCiBIT01FUEFHRSA9ICJodHRwOi8vcHl1c2Iuc291cmNlZm9yZ2UubmV0LyIKIExJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTBkNDZiZGE2MjQ4YTBiNGE0NmE2ZDU5YTY2ZWUwOGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MTY5MWVkMTFjYzJjN2FlOTNlMzgzZjYwZWQ0OWIwZiIKIERFUEVORFMgKz0gImxpYnVzYjEiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiYzEyZTgzZmYzZWYxMDQ1ZDQzMDZkMTNhOTk1NWZjMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNGVjNjYwNzdiZGNkNmYxYWE5ZTg5MmEwYTM1YTU0YmIzYzFlYzU2YWE3NDBlYWQ2NDM0OWMxOGYwMTg2ZDE5IgorU1JDX1VSSVttZDVzdW1dID0gIjg2MmI1NjQ1MmM2NDk0OGM3ODdhZDhlZjk0OTg1OTBiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRlOWI3MmNjNGE0MjA1Y2E2NGZiZjFmM2ZmZjM5YTMzNTUxMjE2NmMxNTFhZDEwM2U1NWM4MjIzYWMxNDczNjIiCiAKIGluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2JfMS4wLjBiMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dXNiXzEuMC4wYjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNzNkOWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2JfMS4wLjBiMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBkaXN0dXRpbHMKLXJlcXVpcmUgcHl0aG9uLXB5dXNiLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2JfMS4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVzYl8xLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWE3OTViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2JfMS4wLjIuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXB5dXNiLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbC5pbmMKaW5kZXggYTNjZjY3Ny4uM2ZlZjBjYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXlhbWwuaW5jCkBAIC0xMSw0ICsxMSw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiNGMxMjk3NjFiNjYxZDE4MWViZjdmZjRlYjJkNzk5NTAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTkyNzY2YzYzMDMyMDdhMjBlZmM0NDU1ODc3NzgzMjJkN2Y3M2IxNjFiZDk5NGYyMjdhZGFhMzQxYmEyMTJhYiIKIAorUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorIgorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpcy5pbmMKaW5kZXggNTcxYmIwOC4uMWE2NWQ3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVkaXMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlZGlzLmluYwpAQCAtNiwzICs2LDcgQEAKIAogU1JDX1VSSVttZDVzdW1dID0gIjA0ODM0OGQ4Y2ZlMGI1ZDBiYmEyZjRkODM1MDA1YzNiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyMmNhOTkzY2VhMjk2MmRiYjU4OGY5ZjMwZDAwMTVhYzRhZmNjNDViZWUyN2QzOTc4YzBkYmU5ZTk3YzZjMGYiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJvYm90ZnJhbWV3b3JrLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJvYm90ZnJhbWV3b3JrLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGJiYmM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmsuaW5jCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQSBQeXRob24gZ2VuZXJpYyB0ZXN0IGF1dG9tYXRpb24gZnJhbWV3b3JrIgorREVTQ1JJUFRJT04gPSAiR2VuZXJpYyBvcGVuIHNvdXJjZSB0ZXN0IGF0b21hdGlvbiBmcmFtZXdvcmsgZm9yIGFjY2VwdGFuY2VcCit0ZXN0aW5nIGFuZCBhY2NlcHRhbmNlIHRlc3QtZHJpdmVuIGRldmVsb3BtZW50IChBVEREKS4gSXQgaGFzIGVhc3ktdG8tdXNlXAordGFidWxhciB0ZXN0IGRhdGEgc3ludGF4IGFuZCBpdCB1dGlsaXplcyB0aGUga2V5d29yZC1kcml2ZW4gdGVzdGluZyBhcHByb2FjaC5cCitJdHMgdGVzdGluZyBjYXBhYmlsaXRpZXMgY2FuIGJlIGV4dGVuZGVkIGJ5IHRlc3QgbGlicmFyaWVzIGltcGxlbWVudGVkIGVpdGhlclwKK3dpdGggUHl0aG9uIG9yIEphdmEsIGFuZCB1c2VycyBjYW4gY3JlYXRlIG5ldyBoaWdoZXItbGV2ZWwga2V5d29yZHMgZnJvbVwKK2V4aXN0aW5nIG9uZXMgdXNpbmcgdGhlIHNhbWUgc3ludGF4IHRoYXQgaXMgdXNlZCBmb3IgY3JlYXRpbmcgdGVzdCBjYXNlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vcm9ib3RmcmFtZXdvcmsub3JnIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitpbmhlcml0IHB5cGkKKworU1JDX1VSSVttZDVzdW1dID0gImVhNDlhNTRiOWQ3ZTM4MzAyNzEyMTk0ZTg1YzM3ZWFhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwMThmMjMzNTY4MjI3ZjlhZjhjMzY2ZjkzZTI0M2ExNTdiNzQyZjNiYWY1YjY0OWVjYzk3NTBhYzBlZTFmZjciCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXBwcmludCBcCisgICAgJHtQWVRIT05fUE59LXhtbCBcCisgICAgJHtQWVRIT05fUE59LWRpZmZsaWIgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICR7UFlUSE9OX1BOfS1odG1sIFwKKyAgICAke1BZVEhPTl9QTn0tZG9jdXRpbHMgXAorICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmtfMy4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29ya18zLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjdkZWRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmtfMy4wLjIuYmIKQEAgLTAsMCArMSw2IEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXJvYm90ZnJhbWV3b3JrLmluYworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0temxpYiBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY3J5cHQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NyeXB0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODNkMDViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NyeXB0LmluYwpAQCAtMCwwICsxLDE2IEBACitERVNDUklQVElPTiA9ICJCaW5kaW5ncyBmb3IgdGhlIHNjcnlwdCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiBsaWJyYXJ5IgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vQlNELTItQ2xhdXNlO21kNT04YmVmOGU2NzEyYjFiZTVhYTc2YWYxZWJkZTlkNjM3OCIKK0hPTUVQQUdFPSJodHRwczovL2JpdGJ1Y2tldC5vcmcvbWhhbGxpbi9weS1zY3J5cHQvb3ZlcnZpZXciCisKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L3B5dGhvbi1zY3J5cHQ6IgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1weS1zY3J5cHQtcmVtb3ZlLXRoZS1oYXJkLWNvZGVkLWluY2x1ZGUtcGF0aHMucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZThlMzI2M2FhMzFiMDQwYzFmOWM3ZjFlMTg0M2E1NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmODIzOWIyZDQ3ZmExZDQwYmMyN2VmZDIzMWRjNzA4MzY5NWQxMGMxYzJhYzUxYTk5MzgwMzYwNzQxZTAzNjJkIgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY3J5cHQvMDAwMS1weS1zY3J5cHQtcmVtb3ZlLXRoZS1oYXJkLWNvZGVkLWluY2x1ZGUtcGF0aHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY3J5cHQvMDAwMS1weS1zY3J5cHQtcmVtb3ZlLXRoZS1oYXJkLWNvZGVkLWluY2x1ZGUtcGF0aHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUzNWU0MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjcnlwdC8wMDAxLXB5LXNjcnlwdC1yZW1vdmUtdGhlLWhhcmQtY29kZWQtaW5jbHVkZS1wYXRocy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIGQ4ZGI0NzNjZTkzNDZjZDYyNTRjOTBlMTNhYzQ1YjNiYmRlNDk0YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPgorRGF0ZTogU3VuLCAxMSBNYXIgMjAxOCAxOTo1NTozOCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBweS1zY3J5cHQ6IHJlbW92ZSB0aGUgaGFyZCBjb2RlZCBpbmNsdWRlIHBhdGhzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPgorLS0tCisgc2V0dXAucHkgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggZTM2YWRjNC4uMmViZmJmMSAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTI0LDcgKzI0LDYgQEAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CisgICAgICAgICAgICAgICAgICAgICAgKCdIQVZFX1NZU19TWVNJTkZPX0gnLCAnMScpLAorICAgICAgICAgICAgICAgICAgICAgICgnX0ZJTEVfT0ZGU0VUX0JJVFMnLCAnNjQnKV0KKyAgICAgbGlicmFyaWVzID0gWydjcnlwdG8nLCAncnQnXQorLSAgICBpbmNsdWRlcyA9IFsnL3Vzci9sb2NhbC9pbmNsdWRlJywgJy91c3IvaW5jbHVkZSddCisgICAgIENGTEFHUy5hcHBlbmQoJy1PMicpCisgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luMzInKToKKyAgICAgZGVmaW5lX21hY3JvcyA9IFsoJ2lubGluZScsICdfX2lubGluZScpXQorLS0gCisyLjcuNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NyeXB0XzAuOC42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NyeXB0XzAuOC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYmQwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY3J5cHRfMC44LjYuYmIKQEAgLTAsMCArMSwzIEBACitpbmhlcml0IHNldHVwdG9vbHMgcHl0aG9uLWRpcgorcmVxdWlyZSBweXRob24tc2NyeXB0LmluYworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnQuaW5jCmluZGV4IDY0NTRlZTAuLjNmNTFiYzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnQuaW5jCkBAIC0xLDkgKzEsOSBAQAogU1VNTUFSWSA9ICJTZXJpYWxpemF0aW9uIGJhc2VkIG9uIGFzdC5saXRlcmFsX2V2YWwiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT05ZjYxMWQ0YzllMjgxNmQzODdiYWI2NGM0MGQ5MzI5NCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1hY2RlYTY4ZjBlNWE4OWViNmNiZmRmNTRlMzhjMzU2ZSIKIAotU1JDX1VSSVttZDVzdW1dID0gImQ5ZDZhZmE1MWYyNTYwY2Y1OTMzZGNkZmQ5NDcwMTFkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0ODBjZTNkODg2NGI4OTc0ZDlmZTM5Njk5OGM2YTdkYWU5NmVkYjY4ZWRmOTA1YmZkMzJlYTlhMTE4NTNiYTUiCitTUkNfVVJJW21kNXN1bV0gPSAiZDBjNTBmMTk0M2ZmODZkODMwZWIzZmU0MGY2ZGMxZTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjY4NTU0ODNkOTVhMDNiNmFlZTM1ODM2MzY4NGNkMzhhM2E2NzAyNDBkYTViYzZkYTQyNTMwNzljYjA3YjhkZiIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnRfMS4yMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnRfMS4yNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudF8xLjIzLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50XzEuMjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtLmluYwppbmRleCA4MWJiZjMzLi5lYjY2NTgwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY20uaW5jCkBAIC0xLDE0ICsxLDE0IEBACiBTVU1NQVJZID0gInRoZSBibGVzc2VkIHBhY2thZ2UgdG8gbWFuYWdlIHlvdXIgdmVyc2lvbnMgYnkgc2NtIHRhZ3MiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTgzOGMzNjZmNjliNzJjNWRmMDVjOTZkZmY3OWIzNWYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT04MjI3MTgwMTI2Nzk3YTAxNDhmOTRmNDgzZjNlMTQ4OSIKIAotU1JDX1VSSVttZDVzdW1dID0gImYxNzQ5M2Q1M2YwZDg0MmJiMDE1MmYyMTQ3NzU2NDBiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5YWI0Njg1NTg5OTg2YTQyZGE4NTcwNmIzMzExYTJmNzRmMWFmNTY3ZDM5ZmVlNmNiMWUwODhkN2E3NWZiNWYiCitTUkNfVVJJW21kNXN1bV0gPSAiMWI1NWY5Y2VkZGU0YTMzYWI1ZDI4NmM1ZjMwZTg2ZGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTE2M2U4YTEyZDIxMjFmNzc1NzU3NzNjZmMyYjU5ODgyNzVkYzFmMWQyNTQxZmRmNzgwMTI3YzI5ZGJiZWE5YyIKIAogUFlQSV9QQUNLQUdFID0gInNldHVwdG9vbHNfc2NtIgogaW5oZXJpdCBweXBpCiAKLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIke1BZVEhPTl9QTn0tcHkgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgJHtQWVRIT05fUE59LWFyZ3BhcnNlICR7UFlUSE9OX1BOfS1kZWJ1Z2dlciAke1BZVEhPTl9QTn0tanNvbiIKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIke1BZVEhPTl9QTn0tcHkgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgJHtQWVRIT05fUE59LWRlYnVnZ2VyICR7UFlUSE9OX1BOfS1qc29uIgogUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLW5hdGl2ZSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbV8xLjE1LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbV8xLjE1LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmOWJiMGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY21fMS4xNS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMtc2NtLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY21fMS4xNS43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY21fMS4xNS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YjM2ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbV8xLjE1LjcuYmIKQEAgLTAsMCArMSw0IEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMtc2NtLmluYworCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWFyZ3BhcnNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2ltcGxlanNvbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uLmluYwppbmRleCAxM2MwNDU2Li5lMjhkNTE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uLmluYwpAQCAtNCwxNCArNCwyMCBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YzYzMzhkN2FiZDMyMWMwYjUwYTJhNTQ3ZTQ0MWM1MmUiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZTJmMWJkNWZiMGE5MjZmYWNmNWQ4OWQyMTdhNzE4MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMWEyMmQ0OWRkZDlhMTY4YjEzNmYyNmNhYzg3ZDlhMzM1NjYwY2UwN2FhNWM2MzBiOGUzNjA3ZDZmNDMyNWU3IgorU1JDX1VSSVttZDVzdW1dID0gIjg3MGJmNjI1NzQ2NWNlMmVlOGNhZDE0ZTIzOTRmN2ViIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjNGVjZjIwZTA1NDcxNmNjMWU1YTgxY2FkYzQ0ZDNmNDAyNzEwOGQ4ZGQwODYxZDhiMWUzYmQ3YTMyZDRmMGEiCiAKIGluaGVyaXQgcHlwaQogCiBSREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1yZSBcCiAgICAgJHtQWVRIT05fUE59LWlvIFwKICAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKICAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCiAiCisKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKK1JERVBFTkRTXyR7UE59LXRlc3RzID0gIiR7UE59ICR7UFlUSE9OX1BOfS11bml0dGVzdCIKK0ZJTEVTXyR7UE59LXRlc3RzKz0gIiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2ltcGxlanNvbi90ZXN0cyBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2ltcGxlanNvbi90b29sLnB5KiBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuMTEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb25fMy4xMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzNlZGZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb25fMy4xMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXNpbXBsZWpzb24uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuMTMuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb25fMy4xMy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YWQ5YTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuMTMuMi5iYgpAQCAtMCwwICsxLDQgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tc2ltcGxlanNvbi5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1yZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYnVzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYnVzLmluYwppbmRleCBkZWQzMGNlLi5mNDcyYTU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWJ1cy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21idXMuaW5jCkBAIC0xLDE4ICsxLDEyIEBACiBTVU1NQVJZID0gIlNldCBvZiBpMmMgdG9vbHMgZm9yIGxpbnV4IC0gUHl0aG9uIG1vZHVsZSIKIExJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zbWJ1c21vZHVsZS5jO3N0YXJ0bGluZT0xO2VuZGxpbmU9MTc7bWQ1PWZhMjRkZjMyMWE1MjBmZjhlMTBmMjAzNDI1YWI5ZmE4IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc21idXNtb2R1bGUuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT1mYTI0ZGYzMjFhNTIwZmY4ZTEwZjIwMzQyNWFiOWZhOCIKK1BSID0gInIxIgogCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9pMmMtdG9vbHMtJHtQVn0udGFyLmJ6MiBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNzEwNGExMDQzZDExYTVlMmM3YjEzMTYxNGViMWI5NjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGI1ZTY5ZjJlMmE2ZTNhYTJlY2RmZTZhNWY0OTBiMTQ5YzUwNDQ2ODc3MGY1ODkyMWM4YzViOGE3ODYwYTQ0MSIKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS91dGlscy9pMmMtdG9vbHMvaTJjLXRvb2xzLSR7UFZ9LnRhci5neiAiCitTUkNfVVJJW21kNXN1bV0gPSAiZDkyYTI4OGQ3MGYzMDZkMzg5NWUzYTdlOWMxNGM5YWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWI2MGRhZjZmMDExZGUwYWNiNjFkZTU3ZGJhNjJmMjA1NGJiMzlmMTk5NjFkNjdlMGM5MTYxMGYwNzFjYTQwMyIKIAogREVQRU5EUyArPSAiaTJjLXRvb2xzIgogCiBTID0gIiR7V09SS0RJUn0vaTJjLXRvb2xzLSR7UFZ9L3B5LXNtYnVzLyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBBZGp1c3QgZm9yIE9FIGhlYWRlciByZW5hbWUKLSAgICBzZWQgLWkgczpsaW51eC9pMmMtZGV2Lmg6bGludXgvaTJjLWRldi11c2VyLmg6IE1vZHVsZS5tawotICAgIHNlZCAtaSBzOmxpbnV4L2kyYy1kZXYuaDpsaW51eC9pMmMtZGV2LXVzZXIuaDogc21idXNtb2R1bGUuYwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21idXNfMy4xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWJ1c180LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYnVzXzMuMS4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWJ1c180LjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNuaW1weV8wLjguMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbmltcHlfMC44LjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmRjNmJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNuaW1weV8wLjguMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkludGVyYWN0aXZlIFNOTVAgdG9vbCIKLURFU0NSSVBUSU9OID0gIlNuaW1weSBpcyBhIFB5dGhvbi1iYXNlZCB0b29sIHByb3ZpZGluZyBhIHNpbXBsZSBpbnRlcmZhY2UgdG8gYnVpbGQgU05NUCBxdWVyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc25pbXB5IgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi0KLURFUEVORFMgPSAibGlic21pIHB5dGhvbi1jZmZpLW5hdGl2ZSBweXRob24tdmN2ZXJzaW9uZXItbmF0aXZlIgotCi1MSUNFTlNFID0gIklTQyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvbGljZW5zZS5yc3Q7bWQ1PTdjNTNhYjJkMTI0MDgyODYyNWMzZTA5M2QwNDlkNGY0IgotCi1TUkNOQU1FID0gInNuaW1weSIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3MvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdmNjI3MGNlMmU3MjA2ZGYxNjU2MDJlNjZkNWNlYjk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEwNDEwNjE0YzdiZmYxMDUzY2E2NWJkNzYwY2U5MTlmMWEwNzRmNDk4OGI4NTdkZjRjNTdjZjM1ODQ3OTIyYjAiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWNmZmkgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5Y3BhcnNlciBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcHlzbm1wIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1zZXR1cHRvb2xzIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNuaW1weV8wLjguMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbmltcHlfMC44LjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1YWY0OGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbmltcHlfMC44LjEyLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiSW50ZXJhY3RpdmUgU05NUCB0b29sIgorREVTQ1JJUFRJT04gPSAiU25pbXB5IGlzIGEgUHl0aG9uLWJhc2VkIHRvb2wgcHJvdmlkaW5nIGEgc2ltcGxlIGludGVyZmFjZSB0byBidWlsZCBTTk1QIHF1ZXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zbmltcHkiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworREVQRU5EUyArPSAibGlic21pIHB5dGhvbi1jZmZpLW5hdGl2ZSBweXRob24tdmN2ZXJzaW9uZXItbmF0aXZlIgorCitMSUNFTlNFID0gIklTQyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvbGljZW5zZS5yc3Q7bWQ1PTdjNTNhYjJkMTI0MDgyODYyNWMzZTA5M2QwNDlkNGY0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmQwMTZiNjM1NmRiNDMyZTZhODdhZDcwOGViOGZjYjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDRlZmNmYmE4NjdmZmIwZTEwY2M4ZDdmOTNhNTUzY2ViNmJkZjJlZTM0ZTQ5NzYyNzQ5MDI4YTJjNzYwOTZjMSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWNmZmkgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5Y3BhcnNlciBcCisgICAgICAgICAgICAgICAgICBweXRob24tcHlzbm1wIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1zZXR1cHRvb2xzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwZWFrbGF0ZXIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BlYWtsYXRlci5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRmYThhNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwZWFrbGF0ZXIuaW5jCkBAIC0wLDAgKzEsOSBAQAorREVTQ1JJUFRJT04gPSAiTWVkaWEgYXNzZXQgbWFuYWdlbWVudCBmb3IgUHl0aG9uLCB3aXRoIGdsdWUgY29kZSBmb3IgdmFyaW91cyBmcmFtZXdvcmtzIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iODEwNzcwMDc1YTI5YmY0NGI5NjYwNzQ0MGU3YzgwMSIKKworU1JDX1VSSVttZDVzdW1dID0gImU4ZDVkYmUzNmU1M2Q1YTM1Y2ZmMjI3ZTc5NWU4YmJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5ZmVhMzM2ZDBlZWQzOGMxZjBiZjMxODFlZTEyMjJkMGVmNDVmM2E5ZGQzNGViZTY1ZTZiZmZmZGQ2YTY1YTkiCisKK1BZUElfUEFDS0FHRSA9ICJzcGVha2xhdGVyIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcGVha2xhdGVyXzEuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwZWFrbGF0ZXJfMS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZmQ1NTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcGVha2xhdGVyXzEuMy5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1zcGVha2xhdGVyLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FsYWxjaGVteS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15LmluYwppbmRleCBjYzhlODJmLi4wYzE5MWFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15LmluYwpAQCAtMiwxMyArMiwxMyBAQAogYXBwbGljYXRpb24gZGV2ZWxvcGVycyB0aGUgZnVsbCBwb3dlciBhbmQgZmxleGliaWxpdHkgb2YgU1FMIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zcWxhbGNoZW15Lm9yZy8iCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQ1MmY0YjhhZGIwZmViYTQyZTViZTVmMWZiZmJmNTM4IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjFjNDEyYzlkOGQxY2UwMThmN2E5Mzc0NDA3YzIyYmIiCiAKIFBZUElfUEFDS0FHRSA9ICJTUUxBbGNoZW15IgogaW5oZXJpdCBweXBpCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiMzI2NjlkNTNlOTAzYjM1MTIwNjUwMjY1NTJmM2JmZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMTE5MWUyOWUzNWI2ZmUxYWVmNzE3NWEwOWIxNzA3ZWJiN2JkMDhkMGIxN2NiMGZlYWRhNzZjNDllNWEyZDFlIgorU1JDX1VSSVttZDVzdW1dID0gIjAzZGIxYzhmOGFlOTExOTc3YzBiZjM5NTBhNGM5YzIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZiNTVlYzM3OWMxMWFkNjk2ZjkzNzFjZThlMGRlOTNjN2YyMTEzNDMyM2Y1NmE1NmExYjBkOGZiZWYxNzAxM2MiCiAKIFJERVBFTkRTXyR7UE59ICs9ICIgXAogICAgICR7UFlUSE9OX1BOfS1qc29uIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXlfMS4xLjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FsYWxjaGVteV8xLjEuMTcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXlfMS4xLjE0LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15XzEuMS4xNy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3lzdGVtZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zeXN0ZW1kLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmU1ZGUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3lzdGVtZC5pbmMKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJQeXRob24gaW50ZXJmYWNlIGZvciBsaWJzeXN0ZW1kIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvcHl0aG9uLXN5c3RlbWQiCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworUFlQSV9QQUNLQUdFID0gInN5c3RlbWQtcHl0aG9uIgorREVQRU5EUyArPSAic3lzdGVtZCAoPD0yMzQpIgorUkRFUEVORFNfJHtQTn0gKz0gInN5c3RlbWQgJHtQWVRIT05fUE59LXN5c2xvZyAke1BZVEhPTl9QTn0tbG9nZ2luZyIKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgoraW5oZXJpdCBweXBpIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitTUkNfVVJJW21kNXN1bV0gPSAiNTA3MWVhNWJjYjk3NjE4NmU5MmEzZjVlNzVkZjIyMWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmQwZTQ0YmY3MGVhZGFlNDVhYWRjMjkyY2IwYTdlYjViMGI2MzcyY2QxYjM5MTIyODA0N2QzMzg5NWRiODNlNyIKKworIyBhbGxvdyBmb3IgY29tbW9uIHBhdGNoZXMgZm9yIHB5dGhvbi0gYW5kIHB5dGhvbjMtc3lzdGVtZAorRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLXN5c3RlbWQ6IgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAxLVByb3ZpZGUtaW1wbGVtZW50YXRpb24tb2Ytc3RybmR1cGEtZm9yLW11c2wucGF0Y2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zeXN0ZW1kLzAwMDEtUHJvdmlkZS1pbXBsZW1lbnRhdGlvbi1vZi1zdHJuZHVwYS1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN5c3RlbWQvMDAwMS1Qcm92aWRlLWltcGxlbWVudGF0aW9uLW9mLXN0cm5kdXBhLWZvci1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MDg1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zeXN0ZW1kLzAwMDEtUHJvdmlkZS1pbXBsZW1lbnRhdGlvbi1vZi1zdHJuZHVwYS1mb3ItbXVzbC5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDhiNjM5ZjlmYWY2MTk5ZTQ3YjllYWUwNjk4ZDAxYTIyOTE3YjZhYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMDk6MTc6MTcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gUHJvdmlkZSBpbXBsZW1lbnRhdGlvbiBvZiBzdHJuZHVwYSBmb3IgbXVzbAorCitSZXVzZSB0aGUgYXBwcm9hY2ggZnJvbSBvZS1jb3JlOgorL21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKKworT3JpZ2luYWwgcGF0Y2ggYXV0aG9yOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KKworU2lnbmVkLW9mZi1ieTogVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzeXN0ZW1kL3V0aWwuYyB8IDExICsrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3N5c3RlbWQvdXRpbC5jIGIvc3lzdGVtZC91dGlsLmMKK2luZGV4IGUwMmM4MjUuLjI3N2U2MTEgMTAwNjQ0CistLS0gYS9zeXN0ZW1kL3V0aWwuYworKysrIGIvc3lzdGVtZC91dGlsLmMKK0BAIC0zNCw2ICszNCwxNyBAQAorIAorICNpbmNsdWRlICJ1dGlsLmgiCisgCisrI2lmICFIQVZFX0RFQ0xfU1RSTkRVUEEKKysjZGVmaW5lIHN0cm5kdXBhKHMsIG4pIFwKKysgICh7IFwKKysgICAgY29uc3QgY2hhciAqX19vbGQgPSAocyk7IFwKKysgICAgc2l6ZV90IF9fbGVuID0gc3RybmxlbihfX29sZCwgKG4pKTsgXAorKyAgICBjaGFyICpfX25ldyA9IChjaGFyICopYWxsb2NhKF9fbGVuICsgMSk7IFwKKysgICAgX19uZXdbX19sZW5dID0gJ1wwJzsgXAorKyAgICAoY2hhciAqKW1lbWNweShfX25ldywgX19vbGQsIF9fbGVuKTsgXAorKyAgfSkKKysjZW5kaWYKKysKKyBpbnQgc2FmZV9hdG91KGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkICpyZXRfdSkgeworICAgICAgICAgY2hhciAqeCA9IE5VTEw7CisgICAgICAgICB1bnNpZ25lZCBsb25nIGw7CistLSAKKzIuMTMuNgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zeXN0ZW1kXzIzNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN5c3RlbWRfMjM0LmJiCmluZGV4IGVmMTE4MzEuLjgwZjI5MDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN5c3RlbWRfMjM0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN5c3RlbWRfMjM0LmJiCkBAIC0xLDEzICsxLDIgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGludGVyZmFjZSBmb3IgbGlic3lzdGVtZCIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3B5dGhvbi1zeXN0ZW1kIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVBZUElfUEFDS0FHRSA9ICJzeXN0ZW1kLXB5dGhvbiIKLURFUEVORFMgKz0gInN5c3RlbWQgKDw9MjM0KSIKLVJERVBFTkRTXyR7UE59ICs9ICJzeXN0ZW1kIgotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotU1JDX1VSSVttZDVzdW1dID0gIjUwNzFlYTViY2I5NzYxODZlOTJhM2Y1ZTc1ZGYyMjFkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZkMGU0NGJmNzBlYWRhZTQ1YWFkYzI5MmNiMGE3ZWI1YjBiNjM3MmNkMWIzOTEyMjgwNDdkMzM4OTVkYjgzZTciCityZXF1aXJlIHB5dGhvbi1zeXN0ZW1kLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b3JuYWRvLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG8uaW5jCmluZGV4IDJjNTg2NTUuLjI5ZDEwZGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG8uaW5jCkBAIC00LDEzICs0LDE0IEBACiBwb2xsaW5nLCBXZWJTb2NrZXRzLCBhbmQgb3RoZXIgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBhIGxvbmctbGl2ZWQgY29ubmVjdGlvbiB0byBlYWNoIHVzZXIuIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy50b3JuYWRvd2ViLm9yZy9lbi9zdGFibGUvIgogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc2V0dXAucHk7c3RhcnRsaW5lPTI7ZW5kbGluZT0xNTttZDU9NWFiNzU3MWE3OWFkNjJkMGNhN2FlYTMwOGJhYzc1NjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zZXR1cC5weTtiZWdpbmxpbmU9MztlbmRsaW5lPTE1O21kNT04ZDQ2M2ZjNjZmZjhmMjc1MzU0ZmZlODhkMTg5NmUxMiIKIAotU1JDX1VSSVttZDVzdW1dID0gImFiNDFmNjc2NWQ1ODA4OWYzMGJhNTFlOGVjMDg0YTdiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmYjhlNDk0Y2Q0NmM2NzRkODZmYWM1ODg1YTNmZjg3YjBlMjgzOTM3YTQ3ZDc0ZWIzYzAyYTQ4YzllODlhZDAiCitTUkNfVVJJW21kNXN1bV0gPSAiYTVmYzdmZDRhZWE5NDg2NzYwOWE0OTFjZTY1Nzg2ZjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmQxNGU0N2VhYjBlMTU3OTljZjNjZGNjODZiMGI5ODI3OWRhNjg1MjJjYWFjZTJiZDdjZTY0NDI4NzY4NWYwYSIKIAotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiAke1BZVEhPTl9QTn0tbnVtYmVycyAke1BZVEhPTl9QTn0tZW1haWwgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsICR7UFlUSE9OX1BOfS1odG1sICR7UFlUSE9OX1BOfS1qc29uICR7UFlUSE9OX1BOfS1jZXJ0aWZpICR7UFlUSE9OX1BOfS10aHJlYWRpbmciCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWNvbXByZXNzaW9uICR7UFlUSE9OX1BOfS1udW1iZXJzICR7UFlUSE9OX1BOfS1lbWFpbCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgJHtQWVRIT05fUE59LWh0bWwgJHtQWVRIT05fUE59LWpzb24gJHtQWVRIT05fUE59LWNlcnRpZmkgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWN0eXBlcyIKIAogUkRFUEVORFNfJHtQTn0tdGVzdCArPSAiJHtQTn0gJHtQWVRIT05fUE59LXVuaXR0ZXN0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b3JuYWRvXzQuNS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkb180LjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQxMTQ3NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b3JuYWRvXzQuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tdG9ybmFkby5pbmMKLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tYmFja3BvcnRzLXNzbCAke1BZVEhPTl9QTn0tYmFja3BvcnRzLWFiYyAke1BZVEhPTl9QTn0tc2luZ2xlZGlzcGF0Y2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b3JuYWRvXzQuNS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkb180LjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTNhNGRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkb180LjUuMy5iYgpAQCAtMCwwICsxLDggQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi10b3JuYWRvLmluYworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWJhY2twb3J0cy1hYmMgXAorICAgICR7UFlUSE9OX1BOfS1iYWNrcG9ydHMtc3NsIFwKKyAgICAke1BZVEhPTl9QTn0tc2luZ2xlZGlzcGF0Y2ggXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMKaW5kZXggMGRkNTg0Zi4uNjQ4MGFkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMKQEAgLTM5LDYgKzM5LDEwIEBACiAgICAgJHtQTn0tYmluIFwKICIKIAorREVQRU5EUyArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0taW5jcmVtZW50YWwtbmF0aXZlIFwKKyIKKwogUkRFUEVORFNfJHtQTn0gPSAiXAogICAgICR7UE59LWJpbiBcCiAgICAgJHtQTn0tY29yZSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkXzE3LjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWRfMTcuOS4wLmJiCmluZGV4IDdmYzhjNjUuLjJiZTE3MDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWRfMTcuOS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWRfMTcuOS4wLmJiCkBAIC0yLDkgKzIsMyBAQAogcmVxdWlyZSBweXRob24tdHdpc3RlZC5pbmMKIAogUkRFUEVORFNfJHtQTn0tY29yZSArPSAiJHtQWVRIT05fUE59LWNvbnRleHRsaWIiCi0KLSMgTm90IHlldCBwb3J0ZWQgdG8gcHkzIHlldCBhdmFpbGFibGUgaW4gcHkyCi0jIFNlZSBzcmMvdHdpc3RlZC9weXRob24vX3NldHVwLnB5IC0tIG5vdFBvcnRlZE1vZHVsZXMKLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQTn0tbmV3cyBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdvZmlzaC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d29maXNoLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWFiMjg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdvZmlzaC5pbmMKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJCaW5kaW5ncyBmb3IgdGhlIFR3b2Zpc2ggaW1wbGVtZW50YXRpb24gYnkgTmllbHMgRmVyZ3Vzb24iCitERVNDUklQVElPTiA9ICJCaW5kaW5ncyBmb3IgdGhlIFR3b2Zpc2ggaW1wbGVtZW50YXRpb24gYnkgTmllbHMgRmVyZ3Vzb25cCisgbGlidHdvZmlzaC1kZXYuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20va2V5YmFzZS9weXRob24tdHdvZmlzaCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzNhNjNhYmY2ZDc1NjdiMTY4OWQ4Y2U2OWYwMGU0M2IiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkN2QyMmYxNmRjNGZmYTBlM2FlMjIwMDY1NDAzM2FiZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMDlkOGJiNTBkMzNiMjNmZjM0Y2FmYjFmOTIwOWY4NThmNzUyOTM1YzZhNWM5MDFlZmI5MmE0MWFjYjgzMGZhIgorCitpbmhlcml0IHB5cGkKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdvZmlzaF8wLjMuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3b2Zpc2hfMC4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODViMDIxNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3b2Zpc2hfMC4zLjAuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi10d29maXNoLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmcuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHlwaW5nLmluYwppbmRleCA0NmJlNDdjLi5hMGVlNmIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmcuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR5cGluZy5pbmMKQEAgLTMsNyArMyw3IEBACiBMSUNFTlNFID0gIlBTRiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY0ZmMyYjMwYjY3ZDBhODQyM2MyNTBlMDM4NmVkNzJmIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMTQzYWYwYmYzYWZkMTg4NzYyMjc3MWYyZjFmZmU4ZTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDUxNGJkODRiMjg0ZGQzZTg0NGYwMzA1YWMwNzUxMWYwOTdlMzI1MTcxZjZjYzRhMjA4NzhkMTFhZDc3MTg0OSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YjJhZGUwOGQ4M2JlNDg4ZjE3YjVmZTU4N2MyN2M3NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNDAwYTkzNDQyNTQ4MDNhMjM2ODUzM2U0NTMzYTQyMDBkMjFlYjdiNmI3MjljMTczYmMzODIwMWE3NGRiM2YyIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmdfMy42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmdfMy42LjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR5cGluZ18zLjYuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHlwaW5nXzMuNi40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11anNvbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11anNvbi5pbmMKaW5kZXggOTY1NGQ1YS4uYzNkMGJmZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdWpzb24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVqc29uLmluYwpAQCAtMiw3ICsyLDcgQEAKIERFU0NSSVBUSU9OID0gIlVsdHJhSlNPTiBpcyBhbiB1bHRyYSBmYXN0IEpTT04gZW5jb2RlciBhbmQgZGVjb2RlciB3cml0dGVuIGluIHB1cmUgQyB3aXRoIGJpbmRpbmdzIGZvciBQeXRob24gMi41KyBhbmQgMy4iCiAKIExJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87c3RhcnRsaW5lPTg7ZW5kbGluZT05O21kNT00ZjM2OWIzYzNjMjkwYjRhZWRlODc5NmE0MDY1ZTVhYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODhkZjhlNzhiOWVkZmQ3NDQ5NTM4NjIxNzlmMmQxNGUiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI0MmY3N2IwY2NlNjg2ZGZhNGRhMmU2ODQ4MGIxZGQyNCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNjYwNzNlNTUwNmU5MWQyMDRhYjBjNjE0YTE0OGQ1YWE5MzhiZGJmMTA0NzUxYmU2NmY4YWQ3YTIyMmY1Zjg2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmLmluYwppbmRleCAwNDAyNTUwLi5mYzEyMDYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmLmluYwpAQCAtMyw3ICszLDEyIEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRjNDM0YjA4ZWY0MmZlYTIzNWJiMDE5YjVlNWE5N2IzIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYzgwOTllZGY4OWQyZTNiYWMxNjEyMzc2NjYyNWEzOGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTdiYWY3MTg0NmE2OGM1MzA1YTdkNjAwNWRmYjVlY2E4Nzk4ZjEzODYxMTc2MzU1YTI4NWNiZGEzMjA2ODI0ZCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0N2Y2NjlkNzI3MzU0MWZlYzQ1ZTRjYzBmYmE4ZDhlOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzlhYjVmYjk2YjY5ODhiNGNkNWRlZjZiMjc1NDkyNDQyYzA0YTU3MDkwMGQzM2FhNjM3MzEwNTc4MDAyNWJjIgogCiBpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWNvZGVjcyBcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVuaWRpZmZfMC41LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmXzAuNS41LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmXzAuNS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmXzAuNS41LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12aXNpdG9yLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZpc2l0b3IuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMjI4OGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12aXNpdG9yLmluYwpAQCAtMCwwICsxLDYgQEAKK1NVTU1BUlkgPSAiQSB0aW55IHB5dGhvbmljIHZpc2l0b3IgaW1wbGVtZW50YXRpb24uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PTgyMjcxODAxMjY3OTdhMDE0OGY5NGY0ODNmM2UxNDg5IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTRhMDI0ZWQwZWMxYjAyYjQ0OTdjMTUyNjdkMzE5Y2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmM3Mzc5MDNiMmI2ODY0ZWJjNjE2N2VlZjdjZjNiOTk3MTI2ZjFhYTk0YmRmNTkwZjkwZjE0MzZkMjNlNDgwYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZpc2l0b3JfMC4xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12aXNpdG9yXzAuMS4zLmJiCmluZGV4IDEyMzY1MDYuLmVlZTI1YTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZpc2l0b3JfMC4xLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdmlzaXRvcl8wLjEuMy5iYgpAQCAtMSw4ICsxLDIgQEAKLVNVTU1BUlkgPSAiQSB0aW55IHB5dGhvbmljIHZpc2l0b3IgaW1wbGVtZW50YXRpb24uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PTgyMjcxODAxMjY3OTdhMDE0OGY5NGY0ODNmM2UxNDg5IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTRhMDI0ZWQwZWMxYjAyYjQ0OTdjMTUyNjdkMzE5Y2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmM3Mzc5MDNiMmI2ODY0ZWJjNjE2N2VlZjdjZjNiOTk3MTI2ZjFhYTk0YmRmNTkwZjkwZjE0MzZkMjNlNDgwYSIKLQogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXZpc2l0b3IuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJjb2xvcnMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViY29sb3JzLmluYwppbmRleCBmZTFhYjk1Li5hMDJiYmJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJjb2xvcnMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmNvbG9ycy5pbmMKQEAgLTEsOSArMSw5IEBACiBTVU1NQVJZID0gIlNpbXBsZSBQeXRob24gbW9kdWxlIGZvciB3b3JraW5nIHdpdGggSFRNTC9DU1MgY29sb3IgZGVmaW5pdGlvbnMuIgogTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNThkZjdlOWViNjVlMTg0M2RiYjM2YWJkNDc2YzVjMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE5N2FkZDAxNjA4N2U2ODg0YTAxMmIwZjE4NWQ0NGFkIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNDczM2ZhMTA3N2Y2ODBiYmRkOTE4Y2RlZjFlMzJjMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTQ3ZTY4NjQ0ZDQxYzBiMWYxZTRkOTM5Y2ZlNDAzOWJkZjFhYjMxMjM0ZGY2M2M3YTRmNTlkNDc2NjQ4NzIwNiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MDg5MGRiMzhiMmE4NTZlNTI2YTU2ODg2NDAyNWZlNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMzA1NjJmNjI0NDY3YTk5MDFmMGI0NTVmZWYwNTQ4NmE4OGNmYjVkYWExZTM1NmJkNGFhY2VhMDQzODUwYjU5IgogCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiXAogICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViY29sb3JzXzEuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmNvbG9yc18xLjguMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViY29sb3JzXzEuNy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViY29sb3JzXzEuOC4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3MuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViZW5jb2RpbmdzLmluYwppbmRleCBlZDU3YzUyLi4zNGNhNzA2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmVuY29kaW5ncy5pbmMKQEAgLTEsMTAgKzEsMTMgQEAKIFNVTU1BUlkgPSAiQ2hhcmFjdGVyIGVuY29kaW5nIGFsaWFzZXMgZm9yIGxlZ2FjeSB3ZWIgY29udGVudCIKIExJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87c3RhcnRsaW5lPTg7ZW5kbGluZT05O21kNT1hZjVjODFiZmU5ODg1NWE1NmQzNmI2YmE1ZGUyOTA2ZiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ZTkxMGIzNWIwZWY0ZTFmNjY1YjlhNzVkNmFmYjc3MDkiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIzMmY2ZTI2MWQ1MmU1N2JmN2UxYzRkNDE1NDZkMTViOCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMzZhMWMyNDVmMmQzMDQ5NjVlYjRlMGE4Mjg0ODM3OTI0MWRjMDRiODY1YWZjYzRhYWIxNjc0ODU4N2UxOTIzIgogCiBpbmhlcml0IHB5cGkKIAotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb2RlY3MiCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY29kZWNzIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Zy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Zy5pbmMKaW5kZXggYjI5NDlhMy4uYzA0YTRlMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vya3pldWcuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnLmluYwpAQCAtOCwxNSArOCwyMyBAQAogb2YgY29tbXVuaXR5IGNvbnRyaWJ1dGVkIGFkZG9uIG1vZHVsZXMuIgogSE9NRVBBR0UgPSAiaHR0cDovL3dlcmt6ZXVnLnBvY29vLm9yZy8iCiBMSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE2OGY1MzYxYTJiMmNhOWZkZjI2YjM4YWFlY2I2ZmFhIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWQ5YTBiN2MwMjU0NjE2ZDcyZGFkYjk4YjI5M2VmMWIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJlMzg1YjJjNWE3MTkzY2ZmMjRjNjg5YjMxZTExMjRkYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MDNhN2I4N2I3NDYzNTI0NDU0OGIzMGQzMGRiNGM4OTQ3ZmU2NGM1MTk4ZjU4ODk5ZGRjZDNhMTNjMjNiYjI2IgorU1JDX1VSSVttZDVzdW1dID0gIjZkMjBiNWJlMmQyNDViZTRhYzc3MDZjYzM5MGQxMzBjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMzZmQ3YTdkNDE5NzZkOWY0NGRiMzI3MjYwZTI2MzEzMjQ2NjgzNmNlZjZmOTE1MTI4ODllZDYwYWQyNjU1N2MiCiAKIFBZUElfUEFDS0FHRSA9ICJXZXJremV1ZyIKIAogQ0xFQU5CUk9LRU4gPSAiMSIKIAorUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgorRklMRVNfJHtQTn0tdGVzdHMrPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS93ZXJremV1Zy90ZXN0KiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vd2Vya3pldWcvX19weWNhY2hlX18vdGVzdCogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3dlcmt6ZXVnL2NvbnRyaWIvdGVzdCogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3dlcmt6ZXVnL2NvbnRyaWIvX19weWNhY2hlX18vdGVzdCogXAorIgorCiBSREVQRU5EU18ke1BOfSArPSAiIFwKICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAogICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKQEAgLTI0LDExICszMiwxNiBAQAogICAgICR7UFlUSE9OX1BOfS1odG1sIFwKICAgICAke1BZVEhPTl9QTn0taW8gXAogICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKICAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKICAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCiAgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAogICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKICAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKICAgICAke1BZVEhPTl9QTn0tdW5peGFkbWluIFwKICIKKworUkRFUEVORFNfJHtQTn0tdGVzdHMgPSAiIFwKKyAgICAke1BOfSBcCisgICAgJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnXzAuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnXzAuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg5MmYxMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Z18wLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi13ZXJremV1Zy5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS16bGliIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vya3pldWdfMC4xNC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vya3pldWdfMC4xNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNDExNjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Z18wLjE0LjEuYmIKQEAgLTAsMCArMSw3IEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24td2Vya3pldWcuaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyAgICAke1BZVEhPTl9QTn0temxpYiBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13aG9vc2guaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2hvb3NoLmluYwppbmRleCAwYTJjZjNiLi5hNGNhNWRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13aG9vc2guaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdob29zaC5pbmMKQEAgLTEyLDMgKzEyLDEzIEBACiAKIFBZUElfUEFDS0FHRSA9ICJXaG9vc2giCiBQWVBJX1BBQ0tBR0VfRVhUID0gInppcCIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWVtYWlsIFwKKyAgICAke1BZVEhPTl9QTn0tbXVsdGlwcm9jZXNzaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdob29zaF8yLjcuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdob29zaF8yLjcuNC5iYgppbmRleCA0OGRmMzYwLi4zYjQyOTFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13aG9vc2hfMi43LjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2hvb3NoXzIuNy40LmJiCkBAIC0xLDIgKzEsNiBAQAogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKIHJlcXVpcmUgcHl0aG9uLXdob29zaC5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3Rmb3Jtcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13dGZvcm1zLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTY2OTdmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3Rmb3Jtcy5pbmMKQEAgLTAsMCArMSwxNiBAQAorREVTQ1JJUFRJT04gPSAiQSBmbGV4aWJsZSBmb3JtcyB2YWxpZGF0aW9uIGFuZCByZW5kZXJpbmcgbGlicmFyeSBmb3IgcHl0aG9uIHdlYiBkZXZlbG9wbWVudC4iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL1dURm9ybXMiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWM0NTlhY2NjOTBjNmVkNmE5NDg3OGM4ZmUwNTM1YmUyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjkzOGE1NDFmYWZkMWExYWUyZjZiOWI4ODU4OGVlZjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmZkZjEwYmQxZmE1NjViODIzMzM4MGNiNzdhMzA0Y2QzNmZkNTVjNzMwMjNlOTFkNGI4MDNjOTZiYzExZDQ2ZiIKKworUFlQSV9QQUNLQUdFID0gIldURm9ybXMiCitQWVBJX1BBQ0tBR0VfRVhUID0gInppcCIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3Rmb3Jtc18yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13dGZvcm1zXzIuMS5iYgppbmRleCA1ZGRjYjQ4Li5mZGIwMTVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13dGZvcm1zXzIuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13dGZvcm1zXzIuMS5iYgpAQCAtMSwxOCArMSwyIEBACi1ERVNDUklQVElPTiA9ICJBIGZsZXhpYmxlIGZvcm1zIHZhbGlkYXRpb24gYW5kIHJlbmRlcmluZyBsaWJyYXJ5IGZvciBweXRob24gd2ViIGRldmVsb3BtZW50LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvV1RGb3JtcyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9YzQ1OWFjY2M5MGM2ZWQ2YTk0ODc4YzhmZTA1MzViZTIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2OTM4YTU0MWZhZmQxYTFhZTJmNmI5Yjg4NTg4ZWVmMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZmRmMTBiZDFmYTU2NWI4MjMzMzgwY2I3N2EzMDRjZDM2ZmQ1NWM3MzAyM2U5MWQ0YjgwM2M5NmJjMTFkNDZmIgotCi1QWVBJX1BBQ0tBR0UgPSAiV1RGb3JtcyIKLVBZUElfUEFDS0FHRV9FWFQgPSAiemlwIgotCiBpbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAiCityZXF1aXJlIHB5dGhvbi13dGZvcm1zLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teHN0YXRpYy1mb250LWF3ZXNvbWUuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teHN0YXRpYy1mb250LWF3ZXNvbWUuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxM2NiODMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljLWZvbnQtYXdlc29tZS5pbmMKQEAgLTAsMCArMSwxNyBAQAorREVTQ1JJUFRJT04gPSAiRm9udCBBd2Vzb21lIGljb25zIHBhY2thZ2VkIGZvciBzZXR1cHRvb2xzIChlYXN5X2luc3RhbGwpIC8gcGlwLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvWFN0YXRpYy1Gb250LUF3ZXNvbWUiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9MzEzZDAyMTg5ODY5NGNkMmIwZWE2NTA4YmRmZTUxYTIiCisKK1BZUElfUEFDS0FHRSA9ICJYU3RhdGljLUZvbnQtQXdlc29tZSIKKworaW5oZXJpdCBweXBpCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNDFhMGU5YTdlMjFlODJmOTIyNTczYTAwYWUwYzE2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDFmYjQ4MGNhYWE3Yzc5NjNkY2IzMzI4YTQ3MDBlNjMxYmVmNjA3MGRiMGU4YjY4NTgxNmQyMjBlNjg1ZjZjIgorCitERVBFTkRTICs9ICIgXAorICAgICAgICAke1BZVEhPTl9QTn0teHN0YXRpYyBcCisgICAgICAgICR7UFlUSE9OX1BOfS1waXAgXAorICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljLWZvbnQtYXdlc29tZV80LjcuMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teHN0YXRpYy1mb250LWF3ZXNvbWVfNC43LjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWU4NWY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teHN0YXRpYy1mb250LWF3ZXNvbWVfNC43LjAuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi14c3RhdGljLWZvbnQtYXdlc29tZS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhzdGF0aWMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teHN0YXRpYy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdjN2RiOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhzdGF0aWMuaW5jCkBAIC0wLDAgKzEsMTQgQEAKK0RFU0NSSVBUSU9OID0gIlhTdGF0aWMgYmFzZSBwYWNrYWdlIHdpdGggbWluaW1hbCBzdXBwb3J0IGNvZGUiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL1hTdGF0aWMiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLnR4dDttZDU9MzZhMWU3ZWFhNzFlMWJkMDdiOGQyMjQ3ODM5ZjIyOGUiCisKK1BZUElfUEFDS0FHRSA9ICJYU3RhdGljIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzA2NGI1ZWE3ZmQxZWU5OTBlMGFlMDUzODMwMWQ5YmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGVjOTNkN2M2NmViYjllMGQzMWI2NjQ3NTM0MzdkYzg2MzRjYjY2ZTEzMzEwY2I0N2M5ZWIxZTBiYzY2ZDcyNiIKKworREVQRU5EUyArPSAiIFwKKyAgICAgICAgJHtQWVRIT05fUE59LXBpcCBcCisgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhzdGF0aWNfMS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljXzEuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNzMwMzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljXzEuMC4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXhzdGF0aWMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi15YXBwaS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi15YXBwaS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUxY2U3NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXlhcHBpLmluYwpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZICA9ICJZZXQgQW5vdGhlciBQeXRob24gUHJvZmlsZXIiCitIT01FUEFHRSA9ICJodHRwOi8veWFwcGkuZ29vZ2xlY29kZS5jb20vIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT02YjEzMWMzMDQxNjM3ZjZhNTE3NWE0MzExMmRkZTA1YyIKKworU1JDX1VSSVttZDVzdW1dID0gImRjNTYyNDA1NzVjOTk5MzhhOTI0ZWFlYjdjMGQ4YmViIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmNjU3MTI5ZTFiOWI5NTIzNzlmZmJjMDA5MzU3ZDBkY2RiNThjNTBmM2JmZTg4ZmZiYjk5MmU0YjI3YjI2M2MiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi15YXBwaV8wLjk4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teWFwcGlfMC45OC5iYgppbmRleCA1MTMwOGM4Li5hM2JkZGU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi15YXBwaV8wLjk4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXlhcHBpXzAuOTguYmIKQEAgLTEsMTUgKzEsMiBAQAotU1VNTUFSWSAgPSAiWWV0IEFub3RoZXIgUHl0aG9uIFByb2ZpbGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3lhcHBpLmdvb2dsZWNvZGUuY29tLyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9NmIxMzFjMzA0MTYzN2Y2YTUxNzVhNDMxMTJkZGUwNWMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkYzU2MjQwNTc1Yzk5OTM4YTkyNGVhZWI3YzBkOGJlYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZjY1NzEyOWUxYjliOTUyMzc5ZmZiYzAwOTM1N2QwZGNkYjU4YzUwZjNiZmU4OGZmYmI5OTJlNGIyN2IyNjNjIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICIKK3JlcXVpcmUgcHl0aG9uLXlhcHBpLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2UuaW5jCmluZGV4IDRiMzhhZWEuLjFmYWIyY2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2UuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2UuaW5jCkBAIC0xMSw2ICsxMSw4IEBACiAKIFJQUk9WSURFU18ke1BOfSArPSAiem9wZS1pbnRlcmZhY2VzIgogCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiR7UFlUSE9OX1BOfS1kYXRldGltZSIKKwogRklMRVNfJHtQTn0tZGJnICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmVnZy8qLyovLmRlYnVnIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS8qLmMiCiBGSUxFU18ke1BOfS1kb2MgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3pvcGUvaW50ZXJmYWNlLyoudHh0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFsZW1iaWNfMC45LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWxlbWJpY18wLjkuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjQ4ZmU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFsZW1iaWNfMC45LjguYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWFsZW1iaWMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXNuMWNyeXB0b18wLjI0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXNuMWNyeXB0b18wLjI0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZiZTU3NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc24xY3J5cHRvXzAuMjQuMC5iYgpAQCAtMCwwICsxLDYgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWFzbjFjcnlwdG8uaW5jCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzdHJvaWRfMS41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN0cm9pZF8xLjYuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzdHJvaWRfMS41LjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3Ryb2lkXzEuNi4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXR0cl8wLjMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdHRyXzAuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MDY0OGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXR0cl8wLjMuMS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWF0dHIuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXR0cnNfMTcuMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF0dHJzXzE3LjQuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF0dHJzXzE3LjMuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF0dHJzXzE3LjQuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF1dG9tYXRfMC42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXV0b21hdF8wLjYuMC5iYgppbmRleCAwNDY5ZTYxLi4yYzc0NzY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXV0b21hdF8wLjYuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXV0b21hdF8wLjYuMC5iYgpAQCAtMSw0ICsxLDIgQEAKIGluaGVyaXQgc2V0dXB0b29sczMKIHJlcXVpcmUgcHl0aG9uLWF1dG9tYXQuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tZW51bSAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuMy4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjIuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS4zLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWJlbF8yLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWJlbF8yLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDUwODRhYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFiZWxfMi41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWJhYmVsLmluYwotCi0jIFJlcXVpcmVzIF9weWRlY2ltYWwucHkgd2hpY2ggaXMgaW4gbWlzYwotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1taXNjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJhYmVsXzIuNS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJhYmVsXzIuNS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MTVkNTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFiZWxfMi41LjMuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1iYWJlbC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iY3J5cHRfMy4xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmNyeXB0XzMuMS40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmNyeXB0XzMuMS4zLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmNyeXB0XzMuMS40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmxpbmtlcl8xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmxpbmtlcl8xLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI0YjNjZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ibGlua2VyXzEuNC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tYmxpbmtlci5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYW5fMi4wLjBiMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYW5fMi4wLjBiMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFkNDViOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FuXzIuMC4wYjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWNhbi5pbmMKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1zcWxpdGUzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhbl8yLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYW5fMi4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFhOWU4MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYW5fMi4xLjAuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIHB5dGhvbi1jYW4uaW5jCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWNvZGVjcyBcCisgICAgJHtQWVRIT05fUE59LWNvbXByZXNzaW9uIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYXNzYW5kcmEtZHJpdmVyXzMuMTEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYXNzYW5kcmEtZHJpdmVyXzMuMTMuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhc3NhbmRyYS1kcml2ZXJfMy4xMS4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2Fzc2FuZHJhLWRyaXZlcl8zLjEzLjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZXJ0aWZpXzIwMTcuNy4yNy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNlcnRpZmlfMjAxOC4xLjE4LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2VydGlmaV8yMDE3LjcuMjcuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNlcnRpZmlfMjAxOC4xLjE4LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2ZmaV8xLjExLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2ZmaV8xLjExLjUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZmZpXzEuMTEuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNmZmlfMS4xMS41LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2xpY2tfNi43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNsaWNrXzYuNy5iYgppbmRleCBlY2QxNTE0Li4xOTIwNjQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2xpY2tfNi43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jbGlja182LjcuYmIKQEAgLTEsNCArMSwyIEBACiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKIHJlcXVpcmUgcHl0aG9uLWNsaWNrLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWVudW0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uZmlncGFyc2VyXzMuNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbmZpZ3BhcnNlcl8zLjUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzBjYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbmZpZ3BhcnNlcl8zLjUuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWNvbmZpZ3BhcnNlci5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb3ZlcmFnZV80LjQuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb3ZlcmFnZV80LjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFhNWM1OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY292ZXJhZ2VfNC40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkNvZGUgY292ZXJhZ2UgbWVhc3VyZW1lbnQgZm9yIFB5dGhvbiIKLUhPTUVQQUdFID0gImh0dHBzOi8vY292ZXJhZ2UucmVhZHRoZWRvY3MuaW8iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MmVlNDExMTJhNDRmZTcwMTRkY2UzM2UyNjQ2OGJhOTMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0YzRkOTk3Y2IzMmJlNDcwM2YxZmRlNTRlNmNkMWIxYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3YTljNDQ0MDBlZTBmM2I0NTQ2MDY2ZTA3MTBlMTI1MGZkNzU4MzFhZGMwMmFiOTlkZGExNzZhZDg3MjZmNDI0IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvdmVyYWdlXzQuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvdmVyYWdlXzQuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ODNlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY292ZXJhZ2VfNC40LjIuYmIKQEAgLTAsMCArMSwxMCBAQAorU1VNTUFSWSA9ICJDb2RlIGNvdmVyYWdlIG1lYXN1cmVtZW50IGZvciBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2NvdmVyYWdlLnJlYWR0aGVkb2NzLmlvIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTJlZTQxMTEyYTQ0ZmU3MDE0ZGNlMzNlMjY0NjhiYTkzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjlhOWZlODUzNzdlMGY3MzI3Y2Y1ZGIxZTMzNTQ4M2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzA5ZDkxYmQ3YTM1MDYzZWM3YTBlNGQ3NTY0NTQ4OGJmYWIzZjBiNjYzNzNlNzcyMmYyM2RhN2Y1YjBmMzRjYyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHktdmVjdG9yc18yLjAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHktdmVjdG9yc18yLjEuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuMC4zLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi4xLjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHlfMi4wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5XzIuMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODA3MDQyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHlfMi4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWNyeXB0b2dyYXBoeS5pbmMKLQotU1JDX1VSSSArPSAiIFwKLSAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWxhbmcgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeV8yLjEuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHlfMi4xLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk1OTIzMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHlfMi4xLjQuYmIKQEAgLTAsMCArMSw4IEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWNyeXB0b2dyYXBoeS5pbmMKKworTERTSEFSRUQgKz0gIi1wdGhyZWFkIgorCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWN5dGhvbl8wLjI3LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3l0aG9uXzAuMjguMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWN5dGhvbl8wLjI3LjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jeXRob25fMC4yOC4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGF0ZXV0aWxfMi42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGF0ZXV0aWxfMi43LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYXRldXRpbF8yLjYuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRhdGV1dGlsXzIuNy4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGVjb3JhdG9yXzQuMS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRlY29yYXRvcl80LjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg0MGIyMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGVjb3JhdG9yXzQuMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1kZWNvcmF0b3IuaW5jCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS1lbnVtIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kZWNvcmF0b3JfNC4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGVjb3JhdG9yXzQuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NGNiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGVjb3JhdG9yXzQuMy4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tZGVjb3JhdG9yLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRqYW5nb18xLjExLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGphbmdvXzEuMTEuMTAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kamFuZ29fMS4xMS41LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGphbmdvXzEuMTEuMTAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kbnNweXRob25fMS4xNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRuc3B5dGhvbl8xLjE1LjAuYmIKaW5kZXggMjYwMjRjNi4uY2U0ZGZkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRuc3B5dGhvbl8xLjE1LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRuc3B5dGhvbl8xLjE1LjAuYmIKQEAgLTEsOSArMSwyIEBACiBpbmhlcml0IHNldHVwdG9vbHMzCiByZXF1aXJlIHB5dGhvbi1kbnNweXRob24uaW5jCi0KLSMgUmVxdWlyZXMgX3B5ZGVjaW1hbC5weSB3aGljaCBpcyBpbiBtaXNjCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZW51bSBcCi0gICAgJHtQWVRIT05fUE59LW1pc2MgXAotICAgICR7UFlUSE9OX1BOfS1zZWxlY3RvcnMgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvbWluYXRlXzIuMy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvbWluYXRlXzIuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMDRjY2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9taW5hdGVfMi4zLjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWRvbWluYXRlLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWVkaXRvcl8xLjAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1lZGl0b3JfMS4wLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFkMmI4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1lZGl0b3JfMS4wLjMuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWVkaXRvci5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ldmRldl8wLjcuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ldmRldl8wLjcuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTkyYjZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWV2ZGV2XzAuNy4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1ldmRldi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1iYWJlbF8wLjExLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stYmFiZWxfMC4xMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNGU3YzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stYmFiZWxfMC4xMS4yLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1mbGFzay1iYWJlbC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1ib290c3RyYXBfMy4zLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1ib290c3RyYXBfMy4zLjcuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzdjNzU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLWJvb3RzdHJhcF8zLjMuNy4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1mbGFzay1ib290c3RyYXAuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stbG9naW5fMC40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stbG9naW5fMC40LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1sb2dpbl8wLjQuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLWxvZ2luXzAuNC4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stbWFpbF8wLjkuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1tYWlsXzAuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiOTYzYmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stbWFpbF8wLjkuMS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tZmxhc2stbWFpbC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1taWdyYXRlXzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLW1pZ3JhdGVfMi4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk4Y2JmZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1taWdyYXRlXzIuMS4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1mbGFzay1taWdyYXRlLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLW5hdl8wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stbmF2XzAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjUxMTUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLW5hdl8wLjYuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWZsYXNrLW5hdi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1yZXN0ZnVsXzAuMy42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLXJlc3RmdWxfMC4zLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJmZjU5YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1yZXN0ZnVsXzAuMy42LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tZmxhc2stcmVzdGZ1bC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1zY3JpcHRfMi4wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stc2NyaXB0XzIuMC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmODg1MTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stc2NyaXB0XzIuMC42LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1mbGFzay1zY3JpcHQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stc3FsYWxjaGVteV8yLjMuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1zcWxhbGNoZW15XzIuMy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZjQ1YmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stc3FsYWxjaGVteV8yLjMuMi5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tZmxhc2stc3FsYWxjaGVteS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay11cGxvYWRzXzAuMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLXVwbG9hZHNfMC4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU4YzJhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay11cGxvYWRzXzAuMi4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1mbGFzay11cGxvYWRzLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLXVzZXJfMC42LjE5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLXVzZXJfMC42LjE5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MTAxN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stdXNlcl8wLjYuMTkuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWZsYXNrLXVzZXIuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2std3RmXzAuMTQuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay13dGZfMC4xNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMzYyYTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2std3RmXzAuMTQuMi5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tZmxhc2std3RmLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLXhzdGF0aWNfMC4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2steHN0YXRpY18wLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDEyYmVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLXhzdGF0aWNfMC4wLjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWZsYXNrLXhzdGF0aWMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JlZW5sZXRfMC40LjEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdyZWVubGV0XzAuNC4xMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdyZWVubGV0XzAuNC4xMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdyZWVubGV0XzAuNC4xMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWh0bWw1bGliXzAuOTk5OTk5OTk5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWh0bWw1bGliXzEuMC4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaHRtbDVsaWJfMC45OTk5OTk5OTkuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1odG1sNWxpYl8xLjAuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWh5cGVybGlua18xNy4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaHlwZXJsaW5rXzE3LjMuMS5iYgppbmRleCAzZDMwYWYyLi43MDgxM2JmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaHlwZXJsaW5rXzE3LjMuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaHlwZXJsaW5rXzE3LjMuMS5iYgpAQCAtMSw0ICsxLDIgQEAKIGluaGVyaXQgc2V0dXB0b29sczMKIHJlcXVpcmUgcHl0aG9uLWh5cGVybGluay5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1zZWxlY3RvcnMgJHtQWVRIT05fUE59LWVudW0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXNvcnRfNC4yLjE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlzb3J0XzQuMy40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXNvcnRfNC4yLjE1LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXNvcnRfNC4zLjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pdHNkYW5nZXJvdXNfMC4yNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pdHNkYW5nZXJvdXNfMC4yNC5iYgppbmRleCBjZDMwODI1Li5hNzFjMjBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXRzZGFuZ2Vyb3VzXzAuMjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWl0c2Rhbmdlcm91c18wLjI0LmJiCkBAIC0xLDIgKzEsNiBAQAogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiByZXF1aXJlIHB5dGhvbi1pdHNkYW5nZXJvdXMuaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamF2YW9iai1weTNfMC4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamF2YW9iai1weTNfMC4yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVjMjNiYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qYXZhb2JqLXB5M18wLjIuNC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLWphdmFvYmotcHkzLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWppbmphMl8yLjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWppbmphMl8yLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMTU2YjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamluamEyXzIuMTAuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWppbmphMi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qaW5qYTJfMi45LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamluamEyXzIuOS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Mzc1ZjhjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qaW5qYTJfMi45LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tamluamEyLmluYwotCi0jIFJlcXVpcmVzIF9weWRlY2ltYWwgd2hpY2ggaXMgaW4gbWlzYwotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LW1pc2MgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25wYXRjaF8xLjIzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25wYXRjaF8xLjIzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZWZjZWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnBhdGNoXzEuMjMuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1qc29ucGF0Y2guaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnBvaW50ZXJfMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25wb2ludGVyXzIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDBhMDliCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25wb2ludGVyXzIuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWpzb25wb2ludGVyLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25zY2hlbWFfMi42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnNjaGVtYV8yLjYuMC5iYgppbmRleCA1YWFlZTY4Li45MjY5OTA3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnNjaGVtYV8yLjYuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnNjaGVtYV8yLjYuMC5iYgpAQCAtMSw2ICsxLDIgQEAKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwogcmVxdWlyZSBweXRob24tanNvbnNjaGVtYS5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LW1pc2MgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxhbmd0YWJsZV8wLjAuMzcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGFuZ3RhYmxlXzAuMC4zNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzYyY2ExYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGFuZ3RhYmxlXzAuMC4zNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLURFU0NSSVBUSU9OID0gImxhbmd0YWJsZSBpcyB1c2VkIHRvIGd1ZXNzIHJlYXNvbmFibGUgZGVmYXVsdHMgZm9yIGxvY2FsZSxcCi1rZXlib2FyZCwgdGVycml0b3J5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL21pa2UtZmFiaWFuL2xhbmd0YWJsZS8iCi1MSUNFTlNFID0gIkdQTHYzKyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtTfSIKLQotU1JDUkVWID0gIjNmMDAxZWVmMDI3YmE2OWVmMmZkYjM1YzY3MGI3ZGEyNmI3OWI1ZTIiCi1QViA9ICIwLjAuMzcrZ2l0JHtTUkNQVn0iCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWlrZS1mYWJpYW4vbGFuZ3RhYmxlLmdpdDticmFuY2g9bWFzdGVyIFwKLSIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMyBweXRob24zbmF0aXZlCi0KLURJU1RVVElMU19JTlNUQUxMX0FSR1MgPSAiLS1wcmVmaXg9JHtEfS8ke3ByZWZpeH0gXAotICAgIC0taW5zdGFsbC1kYXRhPSR7RH0vJHtkYXRhZGlyfS9sYW5ndGFibGUiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGFuZ3RhYmxlXzAuMC4zOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1sYW5ndGFibGVfMC4wLjM4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjYTU4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGFuZ3RhYmxlXzAuMC4zOC5iYgpAQCAtMCwwICsxLDI5IEBACitERVNDUklQVElPTiA9ICJsYW5ndGFibGUgaXMgdXNlZCB0byBndWVzcyByZWFzb25hYmxlIGRlZmF1bHRzIGZvciBsb2NhbGUsXAora2V5Ym9hcmQsIHRlcnJpdG9yeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9taWtlLWZhYmlhbi9sYW5ndGFibGUvIgorTElDRU5TRSA9ICJHUEx2MysiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitCID0gIiR7U30iCisKK1NSQ1JFViA9ICIzNTY4N2NhOTU3Yjc0NmYxNTNhNjg3MjEzOTQ2MmIxNDQzZjhjYWQxIgorUFYgPSAiMC4wLjM4K2dpdCR7U1JDUFZ9IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21pa2UtZmFiaWFuL2xhbmd0YWJsZS5naXQ7YnJhbmNoPW1hc3RlciBcCisiCisKK2luaGVyaXQgc2V0dXB0b29sczMgcHl0aG9uM25hdGl2ZQorCitESVNUVVRJTFNfSU5TVEFMTF9BUkdTID0gIi0tcHJlZml4PSR7RH0vJHtwcmVmaXh9IFwKKyAgICAtLWluc3RhbGwtZGF0YT0ke0R9LyR7ZGF0YWRpcn0vbGFuZ3RhYmxlIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8qIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gXAorICAgICR7UFlUSE9OX1BOfS1kb2N0ZXN0IFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LXhtbCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHhtbF80LjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sXzQuMi4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHhtbF80LjEuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx4bWxfNC4yLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tc2dwYWNrXzAuNC44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1zZ3BhY2tfMC41LjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tc2dwYWNrXzAuNC44LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXNncGFja18wLjUuNi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW11bHRpZGljdF8zLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3RfMy4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NTU2YjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW11bHRpZGljdF8zLjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotU1VNTUFSWSA9ICJNdWx0aWRpY3RzIGFyZSB1c2VmdWwgZm9yIHdvcmtpbmcgd2l0aCBIVFRQIGhlYWRlcnMsIFVSTCBxdWVyeSBhcmdzIGV0Yy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvLWxpYnMvbXVsdGlkaWN0LyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU3NGM5OGFiZTBkZThmNzk4Y2E2MDkxMzdmOWNlZjRhIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLQotU1JDX1VSSVttZDVzdW1dID0gImEwMWRhMzFjYTE4NTU1NTdhMWIyZTA1M2M5MzNhZjJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyN2E3YTk1MzE3MzcxYzE1ZWNkYTcyMDZmNmU4YzE0NGYxMGEzMzdiYjJjM2U2MWI1MTc2ZGVhZmJiODhjYjIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXVsdGlkaWN0XzMuMy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW11bHRpZGljdF8zLjMuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjljZDU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW11bHRpZGljdF8zLjMuMi5iYgpAQCAtMCwwICsxLDkgQEAKK1NVTU1BUlkgPSAiTXVsdGlkaWN0cyBhcmUgdXNlZnVsIGZvciB3b3JraW5nIHdpdGggSFRUUCBoZWFkZXJzLCBVUkwgcXVlcnkgYXJncyBldGMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Fpby1saWJzL211bHRpZGljdC8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNzRjOThhYmUwZGU4Zjc5OGNhNjA5MTM3ZjljZWY0YSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNmNhOTFkOTkzZGUyZDA0YzdlZTZkZjBjYmI0NGVhMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmODJlNjFjNzQwOGVkMGRjZTE4NjIxMDBkYjU1NTk1NDgxOTExZjE1OWQ2ZGRlYzBiMzc1ZDM1YjY0NDk1MDliIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5kZy1odHRwc2NsaWVudF8wLjQuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uZGctaHR0cHNjbGllbnRfMC40LjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uZGctaHR0cHNjbGllbnRfMC40LjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uZGctaHR0cHNjbGllbnRfMC40LjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1udHBsaWJfMC4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbnRwbGliXzAuMy4zLmJiCmluZGV4IDM1NDQwYmMuLjkzZGY4M2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1udHBsaWJfMC4zLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW50cGxpYl8wLjMuMy5iYgpAQCAtMTAsMyArMTAsNSBAQAogUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCiAKIGluaGVyaXQgc2V0dXB0b29sczMgcHl0aG9uM25hdGl2ZSBweXBpCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tZGF0ZXRpbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb2F1dGhsaWJfMi4wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb2F1dGhsaWJfMi4wLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGExM2I1NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1vYXV0aGxpYl8yLjAuNi5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLW9hdXRobGliLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhaG8tbXF0dF8xLjMuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYWhvLW1xdHRfMS4zLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYWhvLW1xdHRfMS4zLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYWhvLW1xdHRfMS4zLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYW5kYXNfMC4yMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhbmRhc18wLjIyLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYW5kYXNfMC4yMC4zLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFuZGFzXzAuMjIuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBleHBlY3RfNC4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGV4cGVjdF80LjUuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBleHBlY3RfNC4yLjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wZXhwZWN0XzQuNS4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlkXzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpZF8yLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg4ZDlhMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlkXzIuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJQaWRmaWxlIGZlYXR1cmluZyBzdGFsZSBkZXRlY3Rpb24gYW5kIGZpbGUtbG9ja2luZywgY2FuIGFsc28gXAotYmUgdXNlZCBhcyBjb250ZXh0LW1hbmFnZXIgb3IgZGVjb3JhdG9yIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3RyYnMvcGlkLyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTgzZDUzY2JkMzEwNTA2M2YyMDMwNWJjMzEzNDY0ZTI5IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTYzNGIxZTNkNTQ1NTQ0YTlkNDk2ZTI1ZTQ1MzBkMTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjQ0MzE2OWQzZGMyMTM5NzY5NWI0YTgyMDE2ZmFkYjRjZmRiMGVkOGIyZGRiNGFhYTQyOGUxNzAxYmIzNGUxZiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgZmlsZTovLzAwMDEtcmVtb3ZlLXJlcXVpcmVtZW50LW9mLW5vc2UucGF0Y2ggXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpZF8yLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waWRfMi4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQzODMxOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waWRfMi4yLjAuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJQaWRmaWxlIGZlYXR1cmluZyBzdGFsZSBkZXRlY3Rpb24gYW5kIGZpbGUtbG9ja2luZywgY2FuIGFsc28gXAorYmUgdXNlZCBhcyBjb250ZXh0LW1hbmFnZXIgb3IgZGVjb3JhdG9yIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3RyYnMvcGlkLyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTgzZDUzY2JkMzEwNTA2M2YyMDMwNWJjMzEzNDY0ZTI5IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDRkMzAzMDgwMTNkMTZhYTg4MmIzODA2ZmVkYThhYjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDhiYjJjZWVjMjFhNGFlODRiZTZlOWQzMjBkYjFmNTY5MzRiMzBlNjc2ZTMxYzZmMDk4Y2E3MjE4YjNkNjdkNCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUkkgKz0gIiBcCisgICAgZmlsZTovLzAwMDEtcmVtb3ZlLXJlcXVpcmVtZW50LW9mLW5vc2UucGF0Y2ggXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBsdWdneV8wLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wbHVnZ3lfMC42LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQxZThlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wbHVnZ3lfMC42LjAuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1wbHVnZ3kuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGx5XzMuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGx5XzMuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI0MTBiYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wbHlfMy4xMS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXBseS5pbmMKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmV0ZW5kXzEuMC44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByZXRlbmRfMS4wLjkuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmV0ZW5kXzEuMC44LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJldGVuZF8xLjAuOS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb21wdC10b29sa2l0XzEuMC4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm9tcHQtdG9vbGtpdF8xLjAuMTUuYmIKaW5kZXggZDhmNjM4OS4uMGU5OTkxNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb21wdC10b29sa2l0XzEuMC4xNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvbXB0LXRvb2xraXRfMS4wLjE1LmJiCkBAIC0zLDcgKzMsNSBAQAogCiBSREVQRU5EU18ke1BOfSArPSAiIFwKICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1lbnVtIFwKICAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotICAgICR7UFlUSE9OX1BOfS10ZXh0dXRpbHMgXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb3RvYnVmXzMuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb3RvYnVmXzMuNS4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvdG9idWZfMy40LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm90b2J1Zl8zLjUuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBzdXRpbF81LjMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wc3V0aWxfNS40LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wc3V0aWxfNS4zLjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wc3V0aWxfNS40LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weV8xLjQuMzQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlfMS41LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weV8xLjQuMzQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weV8xLjUuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMS1tb2R1bGVzXzAuMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMS1tb2R1bGVzXzAuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMTE4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xLW1vZHVsZXNfMC4yLjEuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1weWFzbjEtbW9kdWxlcy5pbmMKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWFzbjFfMC4zLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xXzAuNC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xXzAuMy42LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xXzAuNC4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHliaW5kMTFfMi4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHliaW5kMTFfMi4yLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWJpbmQxMV8yLjIuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YmluZDExXzIuMi4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlibHVlel8wLjIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Ymx1ZXpfMC4yMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzEyYTc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Ymx1ZXpfMC4yMi5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXB5Ymx1ZXouaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcnlwdG9fMi42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcnlwdG9fMi42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkNjM0YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNyeXB0b18yLjYuMS5iYgpAQCAtMCwwICsxLDkgQEAKK2luaGVyaXQgZGlzdHV0aWxzMworcmVxdWlyZSBweXRob24tcHljcnlwdG8uaW5jCisKKyMgV2UgZXhwbGljaXRseSBjYWxsIGRpc3R1dGlsc19kb19pbnN0YWxsLCBzaW5jZSB3ZSB3YW50IGl0IHRvIHJ1biwgYnV0CisjICpkb24ndCogd2FudCB0aGUgYXV0b3Rvb2xzIGluc3RhbGwgdG8gcnVuLCBzaW5jZSB0aGlzIHBhY2thZ2UgZG9lc24ndAorIyBwcm92aWRlIGEgIm1ha2UgaW5zdGFsbCIgdGFyZ2V0LgorZG9faW5zdGFsbCgpIHsKKyAgICAgICBkaXN0dXRpbHMzX2RvX2luc3RhbGwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNyeXB0b2RvbWVfMy40LjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3J5cHRvZG9tZV8zLjQuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMwNjJkZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNyeXB0b2RvbWVfMy40LjExLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tcHljcnlwdG9kb21lLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZGJ1c18wLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWRidXNfMC42LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VkMWM2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWRidXNfMC42LjAuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1weWRidXMuaW5jCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWV4cGVjdF8xLjAuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlleHBlY3RfMS4wLjE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZDU4NDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlleHBlY3RfMS4wLjE3LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tcHlleHBlY3QuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlpZmFjZV8wLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWlmYWNlXzAuMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMWU3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlpZmFjZV8wLjAuNS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXB5aWZhY2UuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlqa3NfMTcuMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5amtzXzE3LjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTgyZmNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5amtzXzE3LjEuMS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXB5amtzLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5and0XzEuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5and0XzEuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMTZkMjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlqd3RfMS42LjEuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1weWp3dC5pbmMKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWxpbnRfMS43LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlsaW50XzEuOC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlsaW50XzEuNy40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlsaW50XzEuOC4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltaXNwXzIuNC44MC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1pc3BfMi40Ljg5LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltaXNwXzIuNC44MC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bWlzcF8yLjQuODkuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1vbmdvXzMuNS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmMDJjYWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5bW9uZ28uaW5jCi0KLSMgUmVxdWlyZXMgX3B5ZGVjaW1hbCB3aGljaCBpcyBpbiBtaXNjCi1SREVQRU5EU18ke1BZVEhPTl9QTn0tYnNvbiArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZW51bSBcCi0gICAgJHtQWVRIT05fUE59LW1pc2MgXAotICAgICR7UFlUSE9OX1BOfS1zZWxlY3RvcnMgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1vbmdvXzMuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE2NGIxOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1vbmdvXzMuNi4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1weW1vbmdvLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bmV0bGludXhfMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bmV0bGludXhfMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZDllM2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHluZXRsaW51eF8xLjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1weW5ldGxpbnV4LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5b3BlbnNzbF8xNy4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlvcGVuc3NsXzE3LjUuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5b3BlbnNzbF8xNy4zLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW9wZW5zc2xfMTcuNS4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwZXJjbGlwXzEuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGVyY2xpcF8xLjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTZmODhiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGVyY2xpcF8xLjYuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXB5cGVyY2xpcC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXJvdXRlMl8wLjMuMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTJfMC40LjIxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTJfMC4zLjIyLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTJfMC40LjIxLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzZXJpYWxfMy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c2VyaWFsXzMuNC5iYgppbmRleCA0NGMxMzY4Li4xN2VkM2Y4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzZXJpYWxfMy40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNlcmlhbF8zLjQuYmIKQEAgLTUsNSArNSwzIEBACiAgICAgcm0gLWYgJHtEfSR7YmluZGlyfS9taW5pdGVybS5weQogICAgIHJtZGlyICR7RH0ke2JpbmRpcn0KIH0KLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1lbnVtICR7UFlUSE9OX1BOfS1zZWxlY3RvcnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzb2Nrc18xLjYuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNvY2tzXzEuNi43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGFhMDFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNvY2tzXzEuNi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5c29ja3MuaW5jCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS1lbnVtIFwKLSAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKLSAgICAke1BZVEhPTl9QTn0tc2VsZWN0b3JzIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNvY2tzXzEuNi44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c29ja3NfMS42LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJkYTA1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNvY2tzXzEuNi44LmJiCkBAIC0wLDAgKzEsNiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1weXNvY2tzLmluYworCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtcnVubmVyXzIuMTIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtcnVubmVyXzMuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1ydW5uZXJfMi4xMi4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXJ1bm5lcl8zLjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3RfMy4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0XzMuNC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0XzMuMi4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0XzMuNC4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0el8yMDE3LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0el8yMDE4LjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXR6XzIwMTcuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dHpfMjAxOC40LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl1ZGV2XzAuMjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVkZXZfMC4yMS4wLmJiCmluZGV4IDAyOTI1NTUuLmE2MmQ5NDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVkZXZfMC4yMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVkZXZfMC4yMS4wLmJiCkBAIC0xLDggKzEsMiBAQAogcmVxdWlyZSBweXRob24tcHl1ZGV2LmluYwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LWxhbmcgXAotIgotCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dXNiXzEuMC4wYjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl1c2JfMS4wLjBiMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODEzZTZmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl1c2JfMS4wLjBiMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBkaXN0dXRpbHMzCi1yZXF1aXJlIHB5dGhvbi1weXVzYi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVzYl8xLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVzYl8xLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWNlZGU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dXNiXzEuMC4yLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tcHl1c2IuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHNfMi4xOC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzXzIuMTguNC5iYgppbmRleCBkOTFkOTkzLi4wYTI0MTBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHNfMi4xOC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0c18yLjE4LjQuYmIKQEAgLTEsNSArMSwyIEBACiBpbmhlcml0IHNldHVwdG9vbHMzCiByZXF1aXJlIHB5dGhvbi1yZXF1ZXN0cy5pbmMKLQotIyBBZGQgdGhlIHJ1bnRpbWUgZGVwZW5kcyBmb3Igc2VsZWN0b3JzLnB5Ci1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LW1pc2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcm9ib3RmcmFtZXdvcmtfMy4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcm9ib3RmcmFtZXdvcmtfMy4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY2MTNjMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yb2JvdGZyYW1ld29ya18zLjAuMi5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXJvYm90ZnJhbWV3b3JrLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjYXB5XzAuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NhcHlfMC4yMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTdiYWY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjYXB5XzAuMjMuYmIKQEAgLTAsMCArMSwxMyBAQAorREVTQ1JJUFRJT04gPSAiUGFja2V0IGNyYWZ0aW5nL3NlbmRpbmcvc25pZmZpbmcsIFBDQVAgcHJvY2Vzc2luZyB0b29sLFwKK2Jhc2VkIG9uIHNjYXB5IHdpdGggcHl0aG9uMyBjb21wYXRpYmlsaXR5IgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcGhhZXRob24vc2NhcHkiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTk1ZWE2ZWNmYzM2MGViNDdmZTZmNDcwYWQ3MzZkN2NkIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUFlQSV9QQUNLQUdFID0gInNjYXB5LXB5dGhvbjMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4NjQyZDA5Y2E3MjdlN2UyYjQ1NTIyM2FlOTQwNTliNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NzYwOTkxYTY3MTYyZjQzYWY0ZDllNjQ4MjhiY2VmYzEwMGJhODg4NTliNzUxNzdhZTlmN2FjZTU2ZTU4MTg2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjcnlwdF8wLjguNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY3J5cHRfMC44LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ5NjY1MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY3J5cHRfMC44LjYuYmIKQEAgLTAsMCArMSwzIEBACitpbmhlcml0IHNldHVwdG9vbHMzIHB5dGhvbjMtZGlyCityZXF1aXJlIHB5dGhvbi1zY3J5cHQuaW5jCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXJwZW50XzEuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VycGVudF8xLjIzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTlkY2ZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXJwZW50XzEuMjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXNlcnBlbnQuaW5jCi0KLSMgUmVxdWlyZXMgX3B5ZGVjaW1hbCB3aGljaCBpcyBpbiBtaXNjCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZW51bSBcCi0gICAgJHtQWVRIT05fUE59LW1pc2MgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlcnBlbnRfMS4yNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXJwZW50XzEuMjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUwNGRlZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXJwZW50XzEuMjQuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1zZXJwZW50LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMtc2NtXzEuMTUuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLXNjbV8xLjE1LjcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLXNjbV8xLjE1LjYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLXNjbV8xLjE1LjcuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVqc29uXzMuMTEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVqc29uXzMuMTEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ0YmMxNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlanNvbl8zLjExLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXNpbXBsZWpzb24uaW5jCi0KLSMgUmVxdWlyZXMgX3B5ZGVjaW1hbCB3aGljaCBpcyBpbiBtaXNjCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tbWlzYyBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlanNvbl8zLjEzLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlanNvbl8zLjEzLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhmNDA2YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVqc29uXzMuMTMuMi5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXNpbXBsZWpzb24uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21idXNfMy4xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21idXNfNC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21idXNfMy4xLjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbWJ1c180LjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcGVha2xhdGVyXzEuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcGVha2xhdGVyXzEuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTRmNjk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNwZWFrbGF0ZXJfMS4zLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1zcGVha2xhdGVyLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbGFsY2hlbXlfMS4xLjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbGFsY2hlbXlfMS4xLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWYxZTk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxhbGNoZW15XzEuMS4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc3FsYWxjaGVteS5pbmMKLQotIyBSZXF1aXJlcyBfcHlkZWNpbWFsLnB5IHdoaWNoIGlzIGluIG1pc2MKLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tZW51bSAke1BZVEhPTl9QTn0tbWlzYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxhbGNoZW15XzEuMS4xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxhbGNoZW15XzEuMS4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmNmOWVkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbGFsY2hlbXlfMS4xLjE3LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tc3FsYWxjaGVteS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zeXN0ZW1kXzIzNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zeXN0ZW1kXzIzNC5iYgppbmRleCA4NDViN2Q5Li41ODBkOTkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3lzdGVtZF8yMzQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN5c3RlbWRfMjM0LmJiCkBAIC0xLDEzICsxLDIgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGludGVyZmFjZSBmb3IgbGlic3lzdGVtZCIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3B5dGhvbi1zeXN0ZW1kIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVBZUElfUEFDS0FHRSA9ICJzeXN0ZW1kLXB5dGhvbiIKLURFUEVORFMgKz0gInN5c3RlbWQgKDw9MjM0KSIKLVJERVBFTkRTXyR7UE59ICs9ICJzeXN0ZW1kIgotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1MDcxZWE1YmNiOTc2MTg2ZTkyYTNmNWU3NWRmMjIxZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZDBlNDRiZjcwZWFkYWU0NWFhZGMyOTJjYjBhN2ViNWIwYjYzNzJjZDFiMzkxMjI4MDQ3ZDMzODk1ZGI4M2U3IgorcmVxdWlyZSBweXRob24tc3lzdGVtZC5pbmMKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10b3JuYWRvXzQuNS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRvcm5hZG9fNC41LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10b3JuYWRvXzQuNS4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdG9ybmFkb180LjUuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXN0ZWRfMTcuOS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXN0ZWRfMTcuOS4wLmJiCmluZGV4IGQ3NTMzZDguLjZiZDhjNTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2lzdGVkXzE3LjkuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdpc3RlZF8xNy45LjAuYmIKQEAgLTEsNyArMSw3IEBACiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKIHJlcXVpcmUgcHl0aG9uLXR3aXN0ZWQuaW5jCiAKLVJERVBFTkRTXyR7UE59LWNvcmUgKz0gInB5dGhvbjMtbGFuZyIKK1BBQ0tBR0VTX3JlbW92ZSA9ICIke1BOfS1zcmMiCiAKIEZJTEVTXyR7UE59LWNvcmVfYXBwZW5kICs9ICIgXAogICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvX19weWNhY2hlX18gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3b2Zpc2hfMC4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdvZmlzaF8wLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTkzZjZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3b2Zpc2hfMC4zLjAuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi10d29maXNoLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVuaWRpZmZfMC41LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdW5pZGlmZl8wLjUuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVuaWRpZmZfMC41LjQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11bmlkaWZmXzAuNS41LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdmN2ZXJzaW9uZXJfMi4xNi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdmN2ZXJzaW9uZXJfMi4xNi4wLjAuYmIKaW5kZXggMTg5YTY1YS4uZjYzNzJjOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXZjdmVyc2lvbmVyXzIuMTYuMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy12Y3ZlcnNpb25lcl8yLjE2LjAuMC5iYgpAQCAtMTcsOCArMTcsNCBAQAogICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3ZjdmVyc2lvbmVyKi5lZ2cgJHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8KIH0KIAotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0gICAgIgotCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy12aXNpdG9yXzAuMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXZpc2l0b3JfMC4xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjliYzUxZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy12aXNpdG9yXzAuMS4zLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi12aXNpdG9yLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYmNvbG9yc18xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViY29sb3JzXzEuOC4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViY29sb3JzXzEuNy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYmNvbG9yc18xLjguMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYnNvY2tldHNfNC4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vic29ja2V0c180LjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTQxMjljCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYnNvY2tldHNfNC4wLjEuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV2ViU29ja2V0IFByb3RvY29sIChSRkMgNjQ1NSkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWF1Z3VzdGluL3dlYnNvY2tldHMiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTA3MDI1NjczOGMwNmQyZTU5YWRiZWMxZjQwNTdkYWMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiOWU4YzZiM2M3MGRlZjQxNDZkNzVmYmIwZjUyYmRmYzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGE0ZDRmYmUwNTliMDQ1M2U3MjZkNmQ5OTM3NjAwNjVkNjliODIzYTI3ZWZjMzA0MDQwMmE2ZmNmZTZhMWVkOSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LWFzeW5jaW8gXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlcmt6ZXVnXzAuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZXJremV1Z18wLjE0LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZXJremV1Z18wLjEyLjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZXJremV1Z18wLjE0LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13dGZvcm1zXzIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13dGZvcm1zXzIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGQ1OWNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXd0Zm9ybXNfMi4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi13dGZvcm1zLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhzdGF0aWMtZm9udC1hd2Vzb21lXzQuNy4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteHN0YXRpYy1mb250LWF3ZXNvbWVfNC43LjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzlmODBkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhzdGF0aWMtZm9udC1hd2Vzb21lXzQuNy4wLjAuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXhzdGF0aWMtZm9udC1hd2Vzb21lLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhzdGF0aWNfMS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteHN0YXRpY18xLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmNiNzAyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhzdGF0aWNfMS4wLjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXhzdGF0aWMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteWFwcGlfMC45OC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy15YXBwaV8wLjk4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZGE1YjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteWFwcGlfMC45OC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXlhcHBpLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxNC1pbnZva2luZy1kZC13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDE0LWludm9raW5nLWRkLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmE5ZTRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxNC1pbnZva2luZy1kZC13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA5MmZlN2RmZDAxMTMxYzkzYTliMjAxM2NhYmY3N2Q1ZjQ2OTAwZmFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCA2IE1hciAyMDE4IDE3OjI4OjU2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGludm9raW5nIGRkIHdpdGggaW5maW5pdGUgdGltZW91dAorCitUaGlzIGxhcmdlIHRpbWVvdXQgaXMgbmVlZGVkIHdoZW4gcnVubmluZyBvbiBtYWNoaW5lcyB3aXRoCitsb3RzIG9mIGRpc2tzLCBvciB3aXRoIHNsb3cgZGlza3MuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvZGV2aWNlcy9wYXJ0aXRpb24ucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvZGV2aWNlcy9wYXJ0aXRpb24ucHkgYi9ibGl2ZXQvZGV2aWNlcy9wYXJ0aXRpb24ucHkKK2luZGV4IGE3MzcyZmIuLjg5NDc0NzIgMTAwNjQ0CistLS0gYS9ibGl2ZXQvZGV2aWNlcy9wYXJ0aXRpb24ucHkKKysrKyBiL2JsaXZldC9kZXZpY2VzL3BhcnRpdGlvbi5weQorQEAgLTU5NCw3ICs1OTQsNyBAQCBjbGFzcyBQYXJ0aXRpb25EZXZpY2UoU3RvcmFnZURldmljZSk6CisgICAgICAgICBjbWQgPSBbImRkIiwgImlmPS9kZXYvemVybyIsICJvZj0lcyIgJSBkZXZpY2UsICJicz0lZCIgJSBicywKKyAgICAgICAgICAgICAgICAic2Vlaz0lZCIgJSBzdGFydCwgImNvdW50PSVkIiAlIGNvdW50XQorICAgICAgICAgdHJ5OgorLSAgICAgICAgICAgIHV0aWwucnVuX3Byb2dyYW0oY21kKQorKyAgICAgICAgICAgIHV0aWwucnVuX3Byb2dyYW0oY21kLCB0aW1lb3V0PS0xKQorICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICBsb2cuZXJyb3Ioc3RyKGUpKQorICAgICAgICAgZmluYWxseToKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldF8yLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0XzIuMi4wLmJiCmluZGV4IGNhY2NhNjcuLjQ2ZGMzMmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0XzIuMi4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0XzIuMi4wLmJiCkBAIC0yMyw2ICsyMyw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDExLWludm9raW5nLWZzY2std2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMTItaW52b2tpbmctbWtmcy13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAxMy1SZXZlcnQtQWRhcHQtdG8tbG9nZ2luZy1tb2R1bGUtbmFtZS1jaGFuZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNC1pbnZva2luZy1kZC13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2ggXAogIgogCiBpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXRndWlfMi4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldGd1aV8yLjEuNS5iYgppbmRleCBhYzUwN2NhLi4yOGMyNTY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldGd1aV8yLjEuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldGd1aV8yLjEuNS5iYgpAQCAtMTMsNyArMTMsNyBAQAogIgogCiBpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjawotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHN5c3RlbWQiCiAKIGluaGVyaXQgc2V0dXB0b29sczMgcHl0aG9uM25hdGl2ZQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLW1laC9weXRob24zLW1laF8wLjQ1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1tZWgvcHl0aG9uMy1tZWhfMC40NS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFjZTQ5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLW1laC9weXRob24zLW1laF8wLjQ1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHB5dGhvbiBsaWJyYXJ5IGZvciBoYW5kbGluZyBleGNlcHRpb25zIgotREVTQ1JJUFRJT04gPSAiVGhlIHB5dGhvbi1tZWggcGFja2FnZSBpcyBhIHB5dGhvbiBsaWJyYXJ5IGZvciBoYW5kbGluZywgc2F2aW5nLCBhbmQgcmVwb3J0aW5nIFwKLWV4Y2VwdGlvbnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdC5mZWRvcmFob3N0ZWQub3JnL2dpdC8/cD1weXRob24tbWVoLmdpdCIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotCi1pbmhlcml0IHNldHVwdG9vbHMzCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9weXRob24tbWVoLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIFwKLSIKLVNSQ1JFViA9ICIyYmZjNzUxZmQ2ODA1MTVkNDRmNzA5Njk0NWExZTI4MmExZjdkNmFhIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyoiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tbWVoL3B5dGhvbjMtbWVoXzAuNDYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLW1laC9weXRob24zLW1laF8wLjQ2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZTJjYmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLW1laC9weXRob24zLW1laF8wLjQ2LmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiQSBweXRob24gbGlicmFyeSBmb3IgaGFuZGxpbmcgZXhjZXB0aW9ucyIKK0RFU0NSSVBUSU9OID0gIlRoZSBweXRob24tbWVoIHBhY2thZ2UgaXMgYSBweXRob24gbGlicmFyeSBmb3IgaGFuZGxpbmcsIHNhdmluZywgYW5kIHJlcG9ydGluZyBcCitleGNlcHRpb25zLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQuZmVkb3JhaG9zdGVkLm9yZy9naXQvP3A9cHl0aG9uLW1laC5naXQiCitMSUNFTlNFID0gIkdQTHYyKyIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvcHl0aG9uLW1laC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPW1hc3RlciBcCisiCitTUkNSRVYgPSAiYmIxMTU2NzI4YTRmNzZlNWUzNjM4YWIyMGI5NDU0YTE1NjhhOTlkYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8qIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZC5pbmMKaW5kZXggNjVmOGNhMS4uYTBlYzAyOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24tcHlwYXJ0ZWQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uLXB5cGFydGVkLmluYwpAQCAtNiwxNiArNiwxNyBAQAogTElDRU5TRSA9ICJHUEwtMi4wKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiXAogICAgIGZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiBcCi0gICAgZmlsZTovL3NyYy9fcGVkbW9kdWxlLmM7c3RhcnRsaW5lPTEwO2VuZGxpbmU9MjI7bWQ1PWViY2IyNWRkZTFhYzljNDZlOTg2ZGVjNzliNDA0ZTdlIFwKKyAgICBmaWxlOi8vc3JjL19wZWRtb2R1bGUuYztiZWdpbmxpbmU9MTA7ZW5kbGluZT0yMjttZDU9OWU1MzMwNGRiODEyYjgwZDA5MzllMTFiYjY5ZGNhYjIgXAogIgogREVQRU5EUyArPSAicGFydGVkIgogCiAjIHVwc3RyZWFtIG9ubHkgcHVibGlzaGVzIHJlbGVhc2VzIGluIGdpdGh1YiBhcmNoaXZlcyB3aGljaCBhcmUgZGlzY291cmFnZWQKLVNSQ1JFViA9ICI2OWM0YTQ3OGU0M2QzZWZmNmFlM2EwMTE2ZmEzOGRhMDY3NzZkNWY1IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL3B5cGFydGVkLmdpdDtwcm90b2NvbD1odHRwcyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC12ZXJzaW9uLWZsb2F0LWNoZWNrLnBhdGNoIFwKLSIKK1NSQ1JFViA9ICIxZmRiMTUxMjBmMzVmNWRhMWRjN2VjMTE2NTIyZjBjNzk2YTgzNzZhIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL3B5cGFydGVkLmdpdDtwcm90b2NvbD1odHRwcyIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotUkRFUEVORFNfJHtQTn0gKz0gInBhcnRlZCAoPj0gMi4zKSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKKyAgICBwYXJ0ZWQgKD49IDIuMykgXAorIgogUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uLXB5cGFydGVkLzAwMDEtZml4LXZlcnNpb24tZmxvYXQtY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZC8wMDAxLWZpeC12ZXJzaW9uLWZsb2F0LWNoZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjNhYjlmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uLXB5cGFydGVkLzAwMDEtZml4LXZlcnNpb24tZmxvYXQtY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1jaGVja19tb2RfdmVyc2lvbiBicmVha3MgaWYgbW9kdWxlIHZlcnNpb24gaXMgb2YgeC55LnogZm9ybQotdXNlIGEgcmVnZXggdG8gaGVscCBjYXN0IHgueS56IHZlcnNpb24gdG8gYSBmbG9hdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGdpdC9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3NldHVwLnB5Ci0rKysgZ2l0L3NldHVwLnB5Ci1AQCAtMjUsNiArMjUsNyBAQCBpbXBvcnQgZ2xvYgotIGltcG9ydCBvcwotIGltcG9ydCBwbGF0Zm9ybQotIGltcG9ydCBzeXMKLStpbXBvcnQgcmUKLSBmcm9tIGRpc3R1dGlscy5jY29tcGlsZXIgaW1wb3J0IG5ld19jb21waWxlcgotIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgQ29tcGlsZUVycm9yCi0gZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBMaW5rRXJyb3IKLUBAIC01MSw2ICs1Miw4IEBAIGRlZiBwa2djb25maWcoKnBhY2thZ2VzLCAqKmt3YXJncyk6Ci0gCi0gZGVmIGNoZWNrX21vZF92ZXJzaW9uKG1vZHVsZSwgdmVyc2lvbik6Ci0gICAgIG1vZHZlcnNpb24gPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInBrZy1jb25maWciLCAiLS1tb2R2ZXJzaW9uIiwgbW9kdWxlXSkKLSsgICAgbWF0Y2ggPSByZS5zZWFyY2goJyhbMC05XStcLlswLTldKyknLCBtb2R2ZXJzaW9uKQotKyAgICBtb2R2ZXJzaW9uID0gbWF0Y2guZ3JvdXAoMCkKLSAgICAgaWYgbm90IGZsb2F0KG1vZHZlcnNpb24pID49IGZsb2F0KHZlcnNpb24pOgotICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiKioqIE1pbmltdW0gcmVxdWlyZWQgJXMgdmVyc2lvbjogJXMsIGZvdW5kOiAlc1xuIiAlIChtb2R1bGUsIHZlcnNpb24sIG1vZHZlcnNpb24sKSkKLSAgICAgICAgIHN5cy5leGl0KDEpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZF8zLjEwLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZF8zLjEwLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMTVhODkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24tcHlwYXJ0ZWRfMy4xMC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHlwYXJ0ZWQuaW5jCi0KLURFUEVORFMgKz0gInB5dGhvbi1yZSIKLQotUFYgPSAiMy4xMC43K2dpdCR7U1JDUFZ9IgotCi1pbmhlcml0IGRpc3R1dGlscwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXN0cmluZ29sZCBweXRob24tY29kZWNzIHB5dGhvbi1tYXRoIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZF8zLjExLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZF8zLjExLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwMGZkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uLXB5cGFydGVkXzMuMTEuMS5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIHB5dGhvbi1weXBhcnRlZC5pbmMKKworUFYgPSAiMy4xMC43K2dpdCR7U1JDUFZ9IgorCitpbmhlcml0IGRpc3R1dGlscworCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXN0cmluZ29sZCBweXRob24tY29kZWNzIHB5dGhvbi1tYXRoIHB5dGhvbi1zdWJwcm9jZXNzIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbjMtcHlwYXJ0ZWQvMDAwMS1maXgtdmVyc2lvbi1mbG9hdC1jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uMy1weXBhcnRlZC8wMDAxLWZpeC12ZXJzaW9uLWZsb2F0LWNoZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGZiMGJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uMy1weXBhcnRlZC8wMDAxLWZpeC12ZXJzaW9uLWZsb2F0LWNoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotY2hlY2tfbW9kX3ZlcnNpb24gYnJlYWtzIGlmIG1vZHVsZSB2ZXJzaW9uIGlzIG9mIHgueS56IGZvcm0KLXVzZSBhIHJlZ2V4IHRvIGhlbHAgY2FzdCB4LnkueiB2ZXJzaW9uIHRvIGEgZmxvYXQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBnaXQvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9zZXR1cC5weQotKysrIGdpdC9zZXR1cC5weQotQEAgLTI1LDYgKzI1LDcgQEAgaW1wb3J0IGdsb2IKLSBpbXBvcnQgb3MKLSBpbXBvcnQgcGxhdGZvcm0KLSBpbXBvcnQgc3lzCi0raW1wb3J0IHJlCi0gZnJvbSBkaXN0dXRpbHMuY2NvbXBpbGVyIGltcG9ydCBuZXdfY29tcGlsZXIKLSBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IENvbXBpbGVFcnJvcgotIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgTGlua0Vycm9yCi1AQCAtNTEsNiArNTIsOCBAQCBkZWYgcGtnY29uZmlnKCpwYWNrYWdlcywgKiprd2FyZ3MpOgotIAotIGRlZiBjaGVja19tb2RfdmVyc2lvbihtb2R1bGUsIHZlcnNpb24pOgotICAgICBtb2R2ZXJzaW9uID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJwa2ctY29uZmlnIiwgIi0tbW9kdmVyc2lvbiIsIG1vZHVsZV0pCi0rICAgIG1hdGNoID0gcmUuc2VhcmNoKGInKFswLTldK1wuWzAtOV0rKScsIG1vZHZlcnNpb24pCi0rICAgIG1vZHZlcnNpb24gPSBtYXRjaC5ncm91cCgwKQotICAgICBpZiBub3QgZmxvYXQobW9kdmVyc2lvbikgPj0gZmxvYXQodmVyc2lvbik6Ci0gICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIqKiogTWluaW11bSByZXF1aXJlZCAlcyB2ZXJzaW9uOiAlcywgZm91bmQ6ICVzXG4iICUgKG1vZHVsZSwgdmVyc2lvbiwgbW9kdmVyc2lvbiwpKQotICAgICAgICAgc3lzLmV4aXQoMSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uMy1weXBhcnRlZF8zLjEwLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbjMtcHlwYXJ0ZWRfMy4xMC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjcyYzJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uMy1weXBhcnRlZF8zLjEwLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weXBhcnRlZC5pbmMKLQotREVQRU5EUyArPSAicHl0aG9uMy1yZSIKLQotUFYgPSAiMy4xMC43K2dpdCR7U1JDUFZ9IgotCi1pbmhlcml0IGRpc3R1dGlsczMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtY29kZWNzIHB5dGhvbjMtbWF0aCIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24zLXB5cGFydGVkXzMuMTEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uMy1weXBhcnRlZF8zLjExLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ2Zjk3YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uMy1weXBhcnRlZF8zLjExLjEuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBweXRob24tcHlwYXJ0ZWQuaW5jCisKK1BWID0gIjMuMTAuNytnaXQke1NSQ1BWfSIKKworaW5oZXJpdCBkaXN0dXRpbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXN0cmluZ29sZCBweXRob24zLWNvZGVjcyBweXRob24zLW1hdGgiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9SRUFETUUKaW5kZXggZjI5MjhhYi4uN2I2MDYzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9SRUFETUUKQEAgLTEzLDE0ICsxMywxNCBAQAogCiBVUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL29lLWNvcmUuZ2l0CiBzdWJkaXJlY3Rvcnk6IG1ldGEKLWJyYW5jaDogcm9ja28gCiticmFuY2g6IG1hc3RlcgogcmV2aXNpb246IEhFQUQKIAogRm9yIHNvbWUgcmVjaXBlcywgdGhlIG1ldGEtb2UgbGF5ZXIgaXMgcmVxdWlyZWQ6CiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS5naXQKIHN1YmRpcmVjdG9yeTogbWV0YS1vZQotYnJhbmNoOiByb2NrbyAKK2JyYW5jaDogbWFzdGVyCiByZXZpc2lvbjogSEVBRAogCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9jb25mL2xheWVyLmNvbmYKaW5kZXggODRmZGQ4MS4uZjIwNWVmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9jb25mL2xheWVyLmNvbmYKQEAgLTE3LDYgKzE3LDggQEAKIAogTEFZRVJERVBFTkRTX3dlYnNlcnZlciA9ICJjb3JlIG9wZW5lbWJlZGRlZC1sYXllciIKIAorTEFZRVJTRVJJRVNfQ09NUEFUX3dlYnNlcnZlciA9ICJzdW1vIgorCiBMSUNFTlNFX1BBVEggKz0gIiR7TEFZRVJESVJ9L2xpY2Vuc2VzIgogCiBTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTICs9ICIgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi1uYXRpdmVfMi40LjI3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi1uYXRpdmVfMi40LjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTg5M2RiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTItbmF0aXZlXzIuNC4yNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgaXMgYSBwb3dlcmZ1bCwgZWZmaWNpZW50LCBhbmQgXAotZXh0ZW5zaWJsZSB3ZWIgc2VydmVyLiIKLVNVTU1BUlkgPSAiQXBhY2hlIEhUVFAgU2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIgotREVQRU5EUyA9ICJleHBhdC1uYXRpdmUgcGNyZS1uYXRpdmUgYXByLW5hdGl2ZSBhcHItdXRpbC1uYXRpdmUiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG5hdGl2ZQotCi1TUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vaHR0cGQvaHR0cGQtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2h0dHBkLSR7UFZ9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kYmZmNWEyYjU0MmZhNTg4NTQ0NTViZjFhMGI5NGI4MyIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5N2I2YmJmYTgzYzg2NmRiZTIwZWYzMTdlM2FmZDEwOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MWZjYzEyODIzOGE2OTA1MTViZDgxNzRkNTMzMGE1MzA5MTYxZWYzMTRhMzI2YWU0NWM3YzE1ZWQxMzljMTNhIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXAotICAgICAgICAgICAgICAgIC0td2l0aC1hcHItdXRpbD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHUtMS1jb25maWcgXAotICAgICAgICAgICAgICAgIC0tcHJlZml4PSR7cHJlZml4fSAtLWRhdGFkaXI9JHtkYXRhZGlyfS9hcGFjaGUyIFwKLSAgICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0KLSAgICBjcCBzZXJ2ZXIvZ2VuX3Rlc3RfY2hhciAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSA3NTUgc3VwcG9ydC9hcHhzICR7RH0ke2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSA3NTUgaHR0cGQgJHtEfSR7YmluZGlyfS8KLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQKLSAgICBjcCAke1N9L2J1aWxkLyoubWsgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAotICAgIGNwIGJ1aWxkLyoubWsgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAotICAgIGNwICR7U30vYnVpbGQvaW5zdGRzby5zaCAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKLSAgICBjcCAke1N9L2luY2x1ZGUvKiAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCi0gICAgY3AgaW5jbHVkZS8qICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKLSAgICBjcCAke1N9L29zL3VuaXgvb3MuaCAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCi0gICAgY3AgJHtTfS9vcy91bml4L3VuaXhkLmggJHtEfSR7aW5jbHVkZWRpcn0vYXBhY2hlMgotCi0gICAgY3Agc3VwcG9ydC9lbnZ2YXJzLXN0ZCAke0R9JHtiaW5kaXJ9L2VudnZhcnMKLSAgICBjaG1vZCA3NTUgJHtEfSR7YmluZGlyfS9lbnZ2YXJzCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTItbmF0aXZlXzIuNC4yOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTItbmF0aXZlXzIuNC4yOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmYwNzNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi1uYXRpdmVfMi40LjI5LmJiCkBAIC0wLDAgKzEsNDUgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgaXMgYSBwb3dlcmZ1bCwgZWZmaWNpZW50LCBhbmQgXAorZXh0ZW5zaWJsZSB3ZWIgc2VydmVyLiIKK1NVTU1BUlkgPSAiQXBhY2hlIEhUVFAgU2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIgorREVQRU5EUyA9ICJleHBhdC1uYXRpdmUgcGNyZS1uYXRpdmUgYXByLW5hdGl2ZSBhcHItdXRpbC1uYXRpdmUiCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG5hdGl2ZQorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vaHR0cGQvaHR0cGQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2h0dHBkLSR7UFZ9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNjJiMGM3NjIzODI2ZmY5OTc2NmZmMTNmYjkwMDdmOCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYzU5OTQwNGVmNmI2OWVlZTk1YmNkOWZjZDA5NDQwNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3Nzc3NTNhNWEyNTU2OGEyYTI3NDI4YjIyMTQ5ODA1NjRiYzFjMzhjMWFiZjljY2M3NjMwYjYzOTk5MWY3ZjAwIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXAorICAgICAgICAgICAgICAgIC0td2l0aC1hcHItdXRpbD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHUtMS1jb25maWcgXAorICAgICAgICAgICAgICAgIC0tcHJlZml4PSR7cHJlZml4fSAtLWRhdGFkaXI9JHtkYXRhZGlyfS9hcGFjaGUyIFwKKyAgICAgICAgICAgICAgICIKKworZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0KKyAgICBjcCBzZXJ2ZXIvZ2VuX3Rlc3RfY2hhciAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgc3VwcG9ydC9hcHhzICR7RH0ke2JpbmRpcn0vCisgICAgaW5zdGFsbCAtbSA3NTUgaHR0cGQgJHtEfSR7YmluZGlyfS8KKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQKKyAgICBjcCAke1N9L2J1aWxkLyoubWsgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAorICAgIGNwIGJ1aWxkLyoubWsgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAorICAgIGNwICR7U30vYnVpbGQvaW5zdGRzby5zaCAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKKyAgICBjcCAke1N9L2luY2x1ZGUvKiAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCisgICAgY3AgaW5jbHVkZS8qICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKKyAgICBjcCAke1N9L29zL3VuaXgvb3MuaCAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCisgICAgY3AgJHtTfS9vcy91bml4L3VuaXhkLmggJHtEfSR7aW5jbHVkZWRpcn0vYXBhY2hlMgorCisgICAgY3Agc3VwcG9ydC9lbnZ2YXJzLXN0ZCAke0R9JHtiaW5kaXJ9L2VudnZhcnMKKyAgICBjaG1vZCA3NTUgJHtEfSR7YmluZGlyfS9lbnZ2YXJzCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvYXBhY2hlLWNvbmZpZ3VyZV9wZXJsYmluLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9hcGFjaGUtY29uZmlndXJlX3BlcmxiaW4ucGF0Y2gKaW5kZXggYzkwMjc5ZC4uOTJjNTNmMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9hcGFjaGUtY29uZmlndXJlX3BlcmxiaW4ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9hcGFjaGUtY29uZmlndXJlX3BlcmxiaW4ucGF0Y2gKQEAgLTQsMTEgKzQsMTMgQEAKICMKICMgVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCi0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTYzOCwxMCArNjM4LDcgQEAKLSBBQ19ERUZJTkVfVU5RVU9URUQoQVBBQ0hFX01QTV9ESVIsICIkTVBNX0RJUiIsCi0gCVtMb2NhdGlvbiBvZiB0aGUgc291cmNlIGZvciB0aGUgY3VycmVudCBNUE1dKQorSW5kZXg6IGh0dHBkLTIuNC4yOS9jb25maWd1cmUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBodHRwZC0yLjQuMjkub3JpZy9jb25maWd1cmUuaW4KKysrKyBodHRwZC0yLjQuMjkvY29uZmlndXJlLmluCitAQCAtODU1LDEwICs4NTUsNyBAQCBBQ19ERUZJTkVfVU5RVU9URUQoU0VSVkVSX0NPTkZJR19GSUxFLCAiCisgQUNfREVGSU5FX1VOUVVPVEVEKEFQX1RZUEVTX0NPTkZJR19GSUxFLCAiJHtyZWxfc3lzY29uZmRpcn0vbWltZS50eXBlcyIsCisgCVtMb2NhdGlvbiBvZiB0aGUgTUlNRSB0eXBlcyBjb25maWcgZmlsZSwgcmVsYXRpdmUgdG8gdGhlIEFwYWNoZSByb290IGRpcmVjdG9yeV0pCiAgCiAtcGVybGJpbj1gJGFjX2F1eF9kaXIvUHJpbnRQYXRoIHBlcmxgCiAtaWYgdGVzdCAieCRwZXJsYmluIiA9ICJ4IjsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9hcGFjaGUtc3NsLWx0bWFpbi1ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvYXBhY2hlLXNzbC1sdG1haW4tcnBhdGgucGF0Y2gKaW5kZXggNDEzZGM1My4uZjEzZGE5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9hcGFjaGUtc3NsLWx0bWFpbi1ycGF0aC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyL2FwYWNoZS1zc2wtbHRtYWluLXJwYXRoLnBhdGNoCkBAIC0xLDExICsxLDExIEBACiAgYnVpbGQvbHRtYWluLnNoIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2J1aWxkL2x0bWFpbi5zaCBiL2J1aWxkL2x0bWFpbi5zaAotaW5kZXggNWVjYTRhZS4uODA1YjQ2MSAxMDA2NDQKLS0tLSBhL2J1aWxkL2x0bWFpbi5zaAotKysrIGIvYnVpbGQvbHRtYWluLnNoCi1AQCAtNjk0NCw3ICs2OTQ0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKK0luZGV4OiBodHRwZC0yLjQuMjkvYnVpbGQvbHRtYWluLnNoCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gaHR0cGQtMi40LjI5Lm9yaWcvYnVpbGQvbHRtYWluLnNoCisrKysgaHR0cGQtMi40LjI5L2J1aWxkL2x0bWFpbi5zaAorQEAgLTY5NjksNyArNjk2OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCiAgCWRpcj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CiAgCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogIAljYXNlICRkaXIgaW4KQEAgLTE0LDcgKzE0LDcgQEAKICAJKikKICAJICBhYnNkaXI9YGNkICIkZGlyIiAmJiBwd2RgCiAgCSAgdGVzdCAteiAiJGFic2RpciIgJiYgXAotQEAgLTgxMzcsNyArODEzNyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCitAQCAtODE2Nyw3ICs4MTY3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKICAJICAgICRFQ0hPICIqKiogJGxpbmtsaWIgaXMgbm90IHBvcnRhYmxlISIKICAJICBmaQogIAkgIGlmIHRlc3QgbGliID0gIiRsaW5rbW9kZSIgJiYKQEAgLTIzLDcgKzIzLDcgQEAKICAJICAgICMgSGFyZGNvZGUgdGhlIGxpYnJhcnkgcGF0aC4KICAJICAgICMgU2tpcCBkaXJlY3RvcmllcyB0aGF0IGFyZSBpbiB0aGUgc3lzdGVtIGRlZmF1bHQgcnVuLXRpbWUKICAJICAgICMgc2VhcmNoIHBhdGguCi1AQCAtODQwNCw3ICs4NDA0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKK0BAIC04NDM0LDcgKzg0MzQsNyBAQCBmdW5jX21vZGVfbGluayAoKQogIAogIAlpZiB0ZXN0IGxpYiA9ICIkbGlua21vZGUiOyB0aGVuCiAgCSAgaWYgdGVzdCAtbiAiJGRlcGVuZGVuY3lfbGlicyIgJiYKQEAgLTMyLDcgKzMyLDcgQEAKICAJICAgICAgIHRlc3QgeWVzID0gIiRidWlsZF9vbGRfbGlicyIgfHwKICAJICAgICAgIHRlc3QgeWVzID0gIiRsaW5rX3N0YXRpYyI7IH07IHRoZW4KICAJICAgICMgRXh0cmFjdCAtUiBmcm9tIGRlcGVuZGVuY3lfbGlicwotQEAgLTkwMjUsNyArOTAyNSw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCitAQCAtOTA4Niw3ICs5MDg2LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKICAJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAgCSAgZXNhYwogIAlkb25lCkBAIC00Miw3ICs0Miw3IEBACiAgCSAgZGVwZW5kZW5jeV9saWJzPSIkdGVtcF94cnBhdGggJGRlcGVuZGVuY3lfbGlicyIKICAJZmkKICAgICAgICBmaQotQEAgLTk0NzMsNyArOTQ3NCw3IEBAIEVPRgorQEAgLTk1MzQsNyArOTUzNSw3IEBAIEVPRgogIAljYXNlICRhcmNoaXZlX2NtZHMgaW4KICAJICAqXCRMRFwgKikgd2w9IDs7CiAgICAgICAgICBlc2FjCkBAIC01MSw3ICs1MSw3IEBACiAgCSAgIyBIYXJkY29kZSB0aGUgbGlicmFyeSBwYXRocwogIAkgIGhhcmRjb2RlX2xpYmRpcnM9CiAgCSAgZGVwX3JwYXRoPQotQEAgLTEwMjExLDYgKzEwMjEyLDI3IEBAIEVPRgorQEAgLTEwMjcyLDYgKzEwMjczLDI3IEBAIEVPRgogICAgICAgICMgTm93IGhhcmRjb2RlIHRoZSBsaWJyYXJ5IHBhdGhzCiAgICAgICAgcnBhdGg9CiAgICAgICAgaGFyZGNvZGVfbGliZGlycz0KQEAgLTc5LDYgKzc5LDMgQEAKICAgICAgICBmb3IgbGliZGlyIGluICRjb21waWxlX3JwYXRoICRmaW5hbGl6ZV9ycGF0aDsgZG8KICAJaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCiAgCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvcmVwbGFjZS1seW54LXRvLWN1cmwtaW4tYXBhY2hlY3RsLXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvcmVwbGFjZS1seW54LXRvLWN1cmwtaW4tYXBhY2hlY3RsLXNjcmlwdC5wYXRjaAppbmRleCA1ODRkZGM4Li5lNGUwMWIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyL3JlcGxhY2UtbHlueC10by1jdXJsLWluLWFwYWNoZWN0bC1zY3JpcHQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9yZXBsYWNlLWx5bngtdG8tY3VybC1pbi1hcGFjaGVjdGwtc2NyaXB0LnBhdGNoCkBAIC0xMCwxMSArMTAsMTEgQEAKICBzdXBwb3J0L2FwYWNoZWN0bC5pbiB8ICAgMTQgKysrKysrKysrKy0tLS0KICAxIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9zdXBwb3J0L2FwYWNoZWN0bC5pbiBiL3N1cHBvcnQvYXBhY2hlY3RsLmluCi1pbmRleCBkNGRmZjM4Li4xMDllYTEzIDEwMDY0NAotLS0tIGEvc3VwcG9ydC9hcGFjaGVjdGwuaW4KLSsrKyBiL3N1cHBvcnQvYXBhY2hlY3RsLmluCi1AQCAtNTEsMTEgKzUxLDExIEBAIGZpCitJbmRleDogaHR0cGQtMi40LjI5L3N1cHBvcnQvYXBhY2hlY3RsLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gaHR0cGQtMi40LjI5Lm9yaWcvc3VwcG9ydC9hcGFjaGVjdGwuaW4KKysrKyBodHRwZC0yLjQuMjkvc3VwcG9ydC9hcGFjaGVjdGwuaW4KK0BAIC01MiwxMSArNTIsMTEgQEAgZmkKICAjIGEgY29tbWFuZCB0aGF0IG91dHB1dHMgYSBmb3JtYXR0ZWQgdGV4dCB2ZXJzaW9uIG9mIHRoZSBIVE1MIGF0IHRoZQogICMgdXJsIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUuICBEZXNpZ25lZCBmb3IgbHlueCwgaG93ZXZlciBvdGhlcgogICMgcHJvZ3JhbXMgbWF5IHdvcmsuICAKQEAgLTI4LDcgKzI4LDcgQEAKICAjCiAgIyBTZXQgdGhpcyB2YXJpYWJsZSB0byBhIGNvbW1hbmQgdGhhdCBpbmNyZWFzZXMgdGhlIG1heGltdW0KICAjIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzIGFsbG93ZWQgcGVyIGNoaWxkIHByb2Nlc3MuIFRoaXMgaXMKLUBAIC05MSwxMCArOTEsMTYgQEAgY29uZmlndGVzdCkKK0BAIC05MiwxMCArOTIsMTYgQEAgY29uZmlndGVzdCkKICAgICAgRVJST1I9JD8KICAgICAgOzsKICBzdGF0dXMpCkBAIC00Niw3ICs0Niw0IEBACiArICAgIGZpCiAgICAgIDs7CiAgKikKLSAgICAgJEhUVFBEICRBUkdWCi0tLSAKLTEuNi40Ci0KKyAgICAgJEhUVFBEICIkQCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjI3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMl8yLjQuMjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4ODA4NjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMl8yLjQuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIEFwYWNoZSBIVFRQIFNlcnZlciBpcyBhIHBvd2VyZnVsLCBlZmZpY2llbnQsIGFuZCBcCi1leHRlbnNpYmxlIHdlYiBzZXJ2ZXIuIgotU1VNTUFSWSA9ICJBcGFjaGUgSFRUUCBTZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iCi1ERVBFTkRTID0gImxpYnRvb2wtbmF0aXZlIGFwYWNoZTItbmF0aXZlIG9wZW5zc2wgZXhwYXQgcGNyZSBhcHIgYXByLXV0aWwiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLQotU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9L2h0dHBkL2h0dHBkLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vc2VydmVyLW1ha2VmaWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2h0dHBkLTIuNC4xLWNvcmVsaW1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9odHRwZC0yLjQuNC1leHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaHR0cGQtMi40LjEtc2VsaW51eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcGFjaGUtY29uZmlndXJlX3BlcmxiaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVwbGFjZS1seW54LXRvLWN1cmwtaW4tYXBhY2hlY3RsLXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcGFjaGUtc3NsLWx0bWFpbi1ycGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9odHRwZC0yLjQuMy1maXgtcmFjZS1pc3N1ZS1vZi1kaXItaW5zdGFsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtc2VsaW51eC1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICBmaWxlOi8vYXBhY2hlMi12b2xhdGlsZS5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2FwYWNoZTIuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfYXBhY2hlMiBcCi0gICAgICAgICAgIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kYmZmNWEyYjU0MmZhNTg4NTQ0NTViZjFhMGI5NGI4MyIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5N2I2YmJmYTgzYzg2NmRiZTIwZWYzMTdlM2FmZDEwOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MWZjYzEyODIzOGE2OTA1MTViZDgxNzRkNTMzMGE1MzA5MTYxZWYzMTRhMzI2YWU0NWM3YzE1ZWQxMzljMTNhIgotCi1TID0gIiR7V09SS0RJUn0vaHR0cGQtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZyBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJhcGFjaGUyLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59ID0gImRpc2FibGUiCi0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJhcHhzIGNvbmZpZ192YXJzLm1rIGNvbmZpZy5uaWNlIgotCi1DRkxBR1NfYXBwZW5kID0gIiAtRFBBVEhfTUFYPTQwOTYiCi1DRkxBR1NfcHJlcGVuZCA9ICItSSR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2wgIgotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNzbCBcCi0gICAgLS13aXRoLXNzbD0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgLS13aXRoLWV4cGF0PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyBcCi0gICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FwdS0xLWNvbmZpZyBcCi0gICAgLS1lbmFibGUtaW5mbyBcCi0gICAgLS1lbmFibGUtcmV3cml0ZSBcCi0gICAgLS13aXRoLWRibT1zZGJtIFwKLSAgICAtLXdpdGgtYmVya2VsZXktZGI9bm8gXAotICAgIC0tbG9jYWxzdGF0ZWRpcj0vdmFyLyR7QlBOfSBcCi0gICAgLS13aXRoLWdkYm09bm8gXAotICAgIC0td2l0aC1uZGJtPW5vIFwKLSAgICAtLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS8ke0JQTn0gXAotICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9LyR7QlBOfSBcCi0gICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vJHtCUE59IFwKLSAgICAtLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9LyR7QlBOfS9tb2R1bGVzIFwKLSAgICBhcF9jdl92b2lkX3B0cl9sdF9sb25nPW5vIFwKLSAgICAtLWVuYWJsZS1tcG1zLXNoYXJlZCBcCi0gICAgYWNfY3ZfaGF2ZV90aHJlYWRzYWZlX3BvbGxzZXQ9bm8iCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXggLS1lbmFibGUtbGF5b3V0PURlYmlhbiAtLXByZWZpeD0ke2Jhc2VfcHJlZml4fS8sLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCxsaWJzZWxpbnV4IgotUEFDS0FHRUNPTkZJR1tvcGVubGRhcF0gPSAiLS1lbmFibGUtbGRhcCAtLWVuYWJsZS1hdXRobnotbGRhcCwtLWRpc2FibGUtbGRhcCAtLWRpc2FibGUtYXV0aG56LWxkYXAsb3BlbmxkYXAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgICBzZWQgLWkgLWUgJ3M6JCcne3ByZWZpeH0vdXNyL2xpYi9jZ2ktYmluOiQnJ3tsaWJkaXJ9L2NnaS1iaW46ZycgJHtTfS9jb25maWcubGF5b3V0Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGNhdCAke1dPUktESVJ9L2luaXQgfCBcCi0gICAgICAgIHNlZCAtZSAncywvdXNyL3NiaW4vLCR7c2JpbmRpcn0vLGcnIFwKLSAgICAgICAgICAgIC1lICdzLC91c3IvYmluLywke2JpbmRpcn0vLGcnIFwKLSAgICAgICAgICAgIC1lICdzLC91c3IvbGliLCR7bGliZGlyfS8sZycgXAotICAgICAgICAgICAgLWUgJ3MsL2V0Yy8sJHtzeXNjb25mZGlyfS8sZycgXAotICAgICAgICAgICAgLWUgJ3MsL3Vzci8sJHtwcmVmaXh9LyxnJyA+ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59Ci0gICAgY2htb2QgNzU1ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59Ci0gICAgIyByZW1vdmUgdGhlIGdvb2Z5IG9yaWdpbmFsIGZpbGVzLi4uCi0gICAgcm0gLXJmICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vb3JpZ2luYWwKLSAgICAjIEV4cGF0IHNob3VsZCBiZSBmb3VuZCBpbiB0aGUgc3RhZ2luZyBhcmVhIHZpYSBERVBFTkRTLi4uCi0gICAgcm0gLWYgJHtEfS8ke2xpYmRpcn0vbGliZXhwYXQuKgotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vY29uZi5kCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vbW9kdWxlcy5kCi0KLSAgICAjIEVuc3VyZSBjb25maWd1cmF0aW9uIGZpbGUgcHVsbHMgaW4gY29uZi5kIGFuZCBtb2R1bGVzLmQKLSAgICBwcmludGYgIlxuSW5jbHVkZU9wdGlvbmFsICR7c3lzY29uZmRpcn0vJHtCUE59L2NvbmYuZC8qLmNvbmYiID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgotICAgIHByaW50ZiAiXG5JbmNsdWRlT3B0aW9uYWwgJHtzeXNjb25mZGlyfS8ke0JQTn0vbW9kdWxlcy5kLyoubG9hZCIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0gICAgcHJpbnRmICJcbkluY2x1ZGVPcHRpb25hbCAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQvKi5jb25mXG5cbiIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0gICAgIyBtYXRjaCB3aXRoIHRoYXQgaXMgaW4gaW5pdCBzY3JpcHQKLSAgICBwcmludGYgIlxuUGlkRmlsZSAvcnVuL2h0dHBkLnBpZCIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0gICAgIyBTZXQgJ1NlcnZlck5hbWUnIHRvIGZpeCBlcnJvciBtZXNzYWdlcyB3aGVuIHJlc3RhcnQgYXBhY2hlIHNlcnZpY2UKLSAgICBzZWQgLWkgJ3MvXiNTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLmNvbS9TZXJ2ZXJOYW1lIGxvY2FsaG9zdC8nICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUyLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLSAgICBlbGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy4wNF9hcGFjaGUyICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzA0X2FwYWNoZTIKLSAgICBmaQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2FwYWNoZTIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9hcGFjaGUyLnNlcnZpY2UKLSAgICBzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9hcGFjaGUyLnNlcnZpY2UKLQotICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAotICAgICAgICAgICAtZSAncyxBUFVfSU5DTFVERURJUiA9IC4qLEFQVV9JTkNMVURFRElSID0gLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsQVBVX0NPTkZJRyA9IC4qLEFQVV9DT05GSUcgPSAsZycgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZC9jb25maWdfdmFycy5tawotCi0gICAgc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsIi4qL2NvbmZpZ3VyZSIsImNvbmZpZ3VyZSIsZycgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZC9jb25maWcubmljZQotICAgIHJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLX0KLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJhcGFjaGVfc3lzcm9vdF9wcmVwcm9jZXNzIgotCi1hcGFjaGVfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKLSAgICBpbnN0YWxsIC1kICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtEfSR7YmluZGlyfS9hcHhzICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vCi0gICAgaW5zdGFsbCAtZCAke1NZU1JPT1RfREVTVERJUn0ke3NiaW5kaXJ9LwotICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke3NiaW5kaXJ9L2FwYWNoZWN0bCAke1NZU1JPT1RfREVTVERJUn0ke3NiaW5kaXJ9LwotICAgIHNlZCAtaSAncyFteSAkaW5zdGFsbGJ1aWxkZGlyID0gLiohbXkgJGluc3RhbGxidWlsZGRpciA9ICIke1NUQUdJTkdfRElSX0hPU1R9LyR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkIjshJyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2FweHMKLSAgICBzZWQgLWkgJ3MhbXkgJGxpYnRvb2wgPSAuKiFteSAkbGlidG9vbCA9ICIke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIjshJyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2FweHMKLQotICAgIHNlZCAtaSAncyFeQVBSX0NPTkZJRyA9IC4qIUFQUl9DT05GSUcgPSAke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWchJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyFeQVBVX0NPTkZJRyA9IC4qIUFQVV9DT05GSUcgPSAke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHUtMS1jb25maWchJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyFeaW5jbHVkZWRpciA9IC4qIWluY2x1ZGVkaXIgPSAke1NUQUdJTkdfSU5DRElSfS9hcGFjaGUyIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKLSAgICBzZWQgLWkgJ3MhXkNGTEFHUyA9IC1JW14gXSohQ0ZMQUdTID0gLUkke1NUQUdJTkdfSU5DRElSfS9vcGVuc3NsIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKLSAgICBzZWQgLWkgJ3MhXkVYVFJBX0xERkxBR1MgPSAuKiFFWFRSQV9MREZMQUdTID0gLUwke1NUQUdJTkdfTElCRElSfSEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIV5FWFRSQV9JTkNMVURFUyA9IC4qIUVYVFJBX0lOQ0xVREVTID0gLUkkKGluY2x1ZGVkaXIpIC1JLiAtSSR7U1RBR0lOR19JTkNESVJ9IScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKLSAgICBzZWQgLWkgJ3MhLS1zeXNyb290PVteIF0qIS0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9IScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKLX0KLQotIwotIyBpbXBsaWNhdGlvbnMgLSB1c2VkIGJ5IHVwZGF0ZS1yYy5kIHNjcmlwdHMKLSMKLUlOSVRTQ1JJUFRfTkFNRSA9ICJhcGFjaGUyIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgOTEgMjAiCi1MRUFEX1NPTkFNRSA9ICJsaWJhcHItMS5zby4wIgotCi1QQUNLQUdFUyA9ICIke1BOfS1zY3JpcHRzICR7UE59LWRvYyAke1BOfS1kZXYgJHtQTn0tZGJnICR7UE59IgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS8ke0JQTn0vbWFnaWMgXAotICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vJHtCUE59L21pbWUudHlwZXMgXAotICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kLyR7QlBOfSAiCi0KLSMgd2Ugb3ZlcnJpZGUgaGVyZSByYXRoZXIgdGhhbiBhcHBlbmQgc28gdGhhdCAuc28gbGlua3MgYXJlCi0jIGluY2x1ZGVkIGluIHRoZSBydW50aW1lIHBhY2thZ2UgcmF0aGVyIHRoYW4gaGVyZSAoLWRldikKLSMgYW5kIHRvIGdldCBidWlsZCwgaWNvbnMsIGVycm9yIGludG8gdGhlIC1kZXYgcGFja2FnZQotRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkIFwKLSAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfS9pY29ucyBcCi0gICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0vZXJyb3IgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9hcHItY29uZmlnICR7YmluZGlyfS9hcHUtY29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vYXByKi5leHAgXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vJHtCUE59IFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyouYSBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2FweHMgXAotICAgICAgICAgICAgICAgICIKLQotCi0jIG1hbnVhbCB0byBtYW51YWwKLUZJTEVTXyR7UE59LWRvYyArPSAiICR7ZGF0YWRpcn0vJHtCUE59L21hbnVhbCIKLQotRklMRVNfJHtQTn0tc2NyaXB0cyArPSAiJHtiaW5kaXJ9L2RibW1hbmFnZSIKLQotIwotIyBvdmVycmlkZSB0aGlzIHRvbyAtIGhlcmUgaXMgdGhlIGRlZmF1bHQsIGxlc3MgZGF0YWRpcgotIwotRklMRVNfJHtQTn0gPSAgIiR7YmluZGlyfSAke3NiaW5kaXJ9ICR7bGliZXhlY2Rpcn0gJHtsaWJkaXJ9L2xpYiouc28uKiAke3N5c2NvbmZkaXJ9IFwKLSAgICAgICAgICAgICAgICAke3NoYXJlZHN0YXRlZGlyfSAke2xvY2Fsc3RhdGVkaXJ9IC9iaW4gL3NiaW4gL2xpYi8qLnNvKiBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7QlBOfSIKLQotIyB3ZSB3YW50IGh0ZG9jcyBhbmQgY2dpLWJpbiB0byBnbyB3aXRoIHRoZSBiaW5hcnkKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyR7QlBOfS9odGRvY3MgJHtkYXRhZGlyfS8ke0JQTn0vY2dpLWJpbiIKLQotI21ha2Ugc3VyZSB0aGUgbG9uZSAuc28gbGlua3MgYWxzbyBnZXQgd3JhcHBlZCBpbiB0aGUgYmFzZSBwYWNrYWdlCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2xpYiouc28gJHtsaWJkaXJ9L3BrZ2NvbmZpZy8qIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8ke0JQTn0vbW9kdWxlcy8uZGVidWciCi0KLVJERVBFTkRTXyR7UE59ICs9ICJvcGVuc3NsIGxpYmdjYyIKLVJERVBFTkRTXyR7UE59LXNjcmlwdHMgKz0gInBlcmwgJHtQTn0iCi1SREVQRU5EU18ke1BOfS1kZXYgPSAicGVybCIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9jZ2ktYmluIgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vJHtCUE59LyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjI5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMl8yLjQuMjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAyOThiOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjI5LmJiCkBAIC0wLDAgKzEsMTk0IEBACitERVNDUklQVElPTiA9ICJUaGUgQXBhY2hlIEhUVFAgU2VydmVyIGlzIGEgcG93ZXJmdWwsIGVmZmljaWVudCwgYW5kIFwKK2V4dGVuc2libGUgd2ViIHNlcnZlci4iCitTVU1NQVJZID0gIkFwYWNoZSBIVFRQIFNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyIKK0RFUEVORFMgPSAibGlidG9vbC1uYXRpdmUgYXBhY2hlMi1uYXRpdmUgb3BlbnNzbCBleHBhdCBwY3JlIGFwciBhcHItdXRpbCIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vaHR0cGQvaHR0cGQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9zZXJ2ZXItbWFrZWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaHR0cGQtMi40LjEtY29yZWxpbWl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2h0dHBkLTIuNC40LWV4cG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9odHRwZC0yLjQuMS1zZWxpbnV4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FwYWNoZS1jb25maWd1cmVfcGVybGJpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZXBsYWNlLWx5bngtdG8tY3VybC1pbi1hcGFjaGVjdGwtc2NyaXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FwYWNoZS1zc2wtbHRtYWluLXJwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2h0dHBkLTIuNC4zLWZpeC1yYWNlLWlzc3VlLW9mLWRpci1pbnN0YWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLXVzZS1wa2ctY29uZmlnLWZvci1QQ1JFLWRldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1zZWxpbnV4LXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9hcGFjaGUyLXZvbGF0aWxlLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vYXBhY2hlMi5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wNF9hcGFjaGUyIFwKKyAgICAgICAgICAiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE2MmIwYzc2MjM4MjZmZjk5NzY2ZmYxM2ZiOTAwN2Y4IgorU1JDX1VSSVttZDVzdW1dID0gIjBjNTk5NDA0ZWY2YjY5ZWVlOTViY2Q5ZmNkMDk0NDA3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc3Nzc1M2E1YTI1NTY4YTJhMjc0MjhiMjIxNDk4MDU2NGJjMWMzOGMxYWJmOWNjYzc2MzBiNjM5OTkxZjdmMDAiCisKK1MgPSAiJHtXT1JLRElSfS9odHRwZC0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcGtnY29uZmlnIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImFwYWNoZTIuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZGlzYWJsZSIKKworU1NUQVRFX1NDQU5fRklMRVMgKz0gImFweHMgY29uZmlnX3ZhcnMubWsgY29uZmlnLm5pY2UiCisKK0NGTEFHU19hcHBlbmQgPSAiIC1EUEFUSF9NQVg9NDA5NiIKK0NGTEFHU19wcmVwZW5kID0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vb3BlbnNzbCAiCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc3NsIFwKKyAgICAtLXdpdGgtc3NsPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKyAgICAtLXdpdGgtZXhwYXQ9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorICAgIC0td2l0aC1hcHI9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXByLTEtY29uZmlnIFwKKyAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXB1LTEtY29uZmlnIFwKKyAgICAtLWVuYWJsZS1pbmZvIFwKKyAgICAtLWVuYWJsZS1yZXdyaXRlIFwKKyAgICAtLXdpdGgtZGJtPXNkYm0gXAorICAgIC0td2l0aC1iZXJrZWxleS1kYj1ubyBcCisgICAgLS1sb2NhbHN0YXRlZGlyPS92YXIvJHtCUE59IFwKKyAgICAtLXdpdGgtZ2RibT1ubyBcCisgICAgLS13aXRoLW5kYm09bm8gXAorICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LyR7QlBOfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vJHtCUE59IFwKKyAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS8ke0JQTn0gXAorICAgIC0tbGliZXhlY2Rpcj0ke2xpYmRpcn0vJHtCUE59L21vZHVsZXMgXAorICAgIGFwX2N2X3ZvaWRfcHRyX2x0X2xvbmc9bm8gXAorICAgIC0tZW5hYmxlLW1wbXMtc2hhcmVkIFwKKyAgICBhY19jdl9oYXZlX3RocmVhZHNhZmVfcG9sbHNldD1ubyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCAtLWVuYWJsZS1sYXlvdXQ9RGViaWFuIC0tcHJlZml4PSR7YmFzZV9wcmVmaXh9LywtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4LGxpYnNlbGludXgiCitQQUNLQUdFQ09ORklHW29wZW5sZGFwXSA9ICItLWVuYWJsZS1sZGFwIC0tZW5hYmxlLWF1dGhuei1sZGFwLC0tZGlzYWJsZS1sZGFwIC0tZGlzYWJsZS1hdXRobnotbGRhcCxvcGVubGRhcCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgICAgIHNlZCAtaSAtZSAnczokJyd7cHJlZml4fS91c3IvbGliL2NnaS1iaW46JCcne2xpYmRpcn0vY2dpLWJpbjpnJyAke1N9L2NvbmZpZy5sYXlvdXQKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgY2F0ICR7V09SS0RJUn0vaW5pdCB8IFwKKyAgICAgICAgc2VkIC1lICdzLC91c3Ivc2Jpbi8sJHtzYmluZGlyfS8sZycgXAorICAgICAgICAgICAgLWUgJ3MsL3Vzci9iaW4vLCR7YmluZGlyfS8sZycgXAorICAgICAgICAgICAgLWUgJ3MsL3Vzci9saWIsJHtsaWJkaXJ9LyxnJyBcCisgICAgICAgICAgICAtZSAncywvZXRjLywke3N5c2NvbmZkaXJ9LyxnJyBcCisgICAgICAgICAgICAtZSAncywvdXNyLywke3ByZWZpeH0vLGcnID4gJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KKyAgICBjaG1vZCA3NTUgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KKyAgICAjIHJlbW92ZSB0aGUgZ29vZnkgb3JpZ2luYWwgZmlsZXMuLi4KKyAgICBybSAtcmYgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9vcmlnaW5hbAorICAgICMgRXhwYXQgc2hvdWxkIGJlIGZvdW5kIGluIHRoZSBzdGFnaW5nIGFyZWEgdmlhIERFUEVORFMuLi4KKyAgICBybSAtZiAke0R9LyR7bGliZGlyfS9saWJleHBhdC4qCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9jb25mLmQKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQKKworICAgICMgRW5zdXJlIGNvbmZpZ3VyYXRpb24gZmlsZSBwdWxscyBpbiBjb25mLmQgYW5kIG1vZHVsZXMuZAorICAgIHByaW50ZiAiXG5JbmNsdWRlT3B0aW9uYWwgJHtzeXNjb25mZGlyfS8ke0JQTn0vY29uZi5kLyouY29uZiIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCisgICAgcHJpbnRmICJcbkluY2x1ZGVPcHRpb25hbCAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQvKi5sb2FkIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKKyAgICBwcmludGYgIlxuSW5jbHVkZU9wdGlvbmFsICR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZC8qLmNvbmZcblxuIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKKyAgICAjIG1hdGNoIHdpdGggdGhhdCBpcyBpbiBpbml0IHNjcmlwdAorICAgIHByaW50ZiAiXG5QaWRGaWxlIC9ydW4vaHR0cGQucGlkIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKKyAgICAjIFNldCAnU2VydmVyTmFtZScgdG8gZml4IGVycm9yIG1lc3NhZ2VzIHdoZW4gcmVzdGFydCBhcGFjaGUgc2VydmljZQorICAgIHNlZCAtaSAncy9eI1NlcnZlck5hbWUgd3d3LmV4YW1wbGUuY29tL1NlcnZlck5hbWUgbG9jYWxob3N0LycgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2FwYWNoZTItdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLworICAgIGVsaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjA0X2FwYWNoZTIgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDRfYXBhY2hlMgorICAgIGZpCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlMi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2FwYWNoZTIuc2VydmljZQorICAgIHNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2FwYWNoZTIuc2VydmljZQorCisgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgIHNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyBcCisgICAgICAgICAgIC1lICdzLEFQVV9JTkNMVURFRElSID0gLiosQVBVX0lOQ0xVREVESVIgPSAsZycgXAorICAgICAgICAgICAtZSAncyxBUFVfQ09ORklHID0gLiosQVBVX0NPTkZJRyA9ICxnJyAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkL2NvbmZpZ192YXJzLm1rCisKKyAgICBzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAorICAgICAgICAgICAtZSAncywiLiovY29uZmlndXJlIiwiY29uZmlndXJlIixnJyAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkL2NvbmZpZy5uaWNlCisgICAgcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgorfQorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gImFwYWNoZV9zeXNyb290X3ByZXByb2Nlc3MiCisKK2FwYWNoZV9zeXNyb290X3ByZXByb2Nlc3MgKCkgeworICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KKyAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtiaW5kaXJ9L2FweHMgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KKyAgICBpbnN0YWxsIC1kICR7U1lTUk9PVF9ERVNURElSfSR7c2JpbmRpcn0vCisgICAgaW5zdGFsbCAtbSA3NTUgJHtEfSR7c2JpbmRpcn0vYXBhY2hlY3RsICR7U1lTUk9PVF9ERVNURElSfSR7c2JpbmRpcn0vCisgICAgc2VkIC1pICdzIW15ICRpbnN0YWxsYnVpbGRkaXIgPSAuKiFteSAkaW5zdGFsbGJ1aWxkZGlyID0gIiR7U1RBR0lOR19ESVJfSE9TVH0vJHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQiOyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vYXB4cworICAgIHNlZCAtaSAncyFteSAkbGlidG9vbCA9IC4qIW15ICRsaWJ0b29sID0gIiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wiOyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vYXB4cworCisgICAgc2VkIC1pICdzIV5BUFJfQ09ORklHID0gLiohQVBSX0NPTkZJRyA9ICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIV5BUFVfQ09ORklHID0gLiohQVBVX0NPTkZJRyA9ICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FwdS0xLWNvbmZpZyEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIV5pbmNsdWRlZGlyID0gLiohaW5jbHVkZWRpciA9ICR7U1RBR0lOR19JTkNESVJ9L2FwYWNoZTIhJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworICAgIHNlZCAtaSAncyFeQ0ZMQUdTID0gLUlbXiBdKiFDRkxBR1MgPSAtSSR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2whJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworICAgIHNlZCAtaSAncyFeRVhUUkFfTERGTEFHUyA9IC4qIUVYVFJBX0xERkxBR1MgPSAtTCR7U1RBR0lOR19MSUJESVJ9IScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKKyAgICBzZWQgLWkgJ3MhXkVYVFJBX0lOQ0xVREVTID0gLiohRVhUUkFfSU5DTFVERVMgPSAtSSQoaW5jbHVkZWRpcikgLUkuIC1JJHtTVEFHSU5HX0lOQ0RJUn0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworICAgIHNlZCAtaSAncyEtLXN5c3Jvb3Q9W14gXSohLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworfQorCisjCisjIGltcGxpY2F0aW9ucyAtIHVzZWQgYnkgdXBkYXRlLXJjLmQgc2NyaXB0cworIworSU5JVFNDUklQVF9OQU1FID0gImFwYWNoZTIiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA5MSAyMCIKK0xFQURfU09OQU1FID0gImxpYmFwci0xLnNvLjAiCisKK1BBQ0tBR0VTID0gIiR7UE59LXNjcmlwdHMgJHtQTn0tZG9jICR7UE59LWRldiAke1BOfS1kYmcgJHtQTn0iCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tYWdpYyBcCisgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS8ke0JQTn0vbWltZS50eXBlcyBcCisgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59ICIKKworIyB3ZSBvdmVycmlkZSBoZXJlIHJhdGhlciB0aGFuIGFwcGVuZCBzbyB0aGF0IC5zbyBsaW5rcyBhcmUKKyMgaW5jbHVkZWQgaW4gdGhlIHJ1bnRpbWUgcGFja2FnZSByYXRoZXIgdGhhbiBoZXJlICgtZGV2KQorIyBhbmQgdG8gZ2V0IGJ1aWxkLCBpY29ucywgZXJyb3IgaW50byB0aGUgLWRldiBwYWNrYWdlCitGSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQgXAorICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59L2ljb25zIFwKKyAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfS9lcnJvciBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2Fwci1jb25maWcgJHtiaW5kaXJ9L2FwdS1jb25maWcgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9hcHIqLmV4cCBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8ke0JQTn0gXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8qLmxhIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vKi5hIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXB4cyBcCisgICAgICAgICAgICAgICAgIgorCisKKyMgbWFudWFsIHRvIG1hbnVhbAorRklMRVNfJHtQTn0tZG9jICs9ICIgJHtkYXRhZGlyfS8ke0JQTn0vbWFudWFsIgorCitGSUxFU18ke1BOfS1zY3JpcHRzICs9ICIke2JpbmRpcn0vZGJtbWFuYWdlIgorCisjCisjIG92ZXJyaWRlIHRoaXMgdG9vIC0gaGVyZSBpcyB0aGUgZGVmYXVsdCwgbGVzcyBkYXRhZGlyCisjCitGSUxFU18ke1BOfSA9ICAiJHtiaW5kaXJ9ICR7c2JpbmRpcn0gJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vbGliKi5zby4qICR7c3lzY29uZmRpcn0gXAorICAgICAgICAgICAgICAgICR7c2hhcmVkc3RhdGVkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0gL2JpbiAvc2JpbiAvbGliLyouc28qIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vJHtCUE59IgorCisjIHdlIHdhbnQgaHRkb2NzIGFuZCBjZ2ktYmluIHRvIGdvIHdpdGggdGhlIGJpbmFyeQorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vJHtCUE59L2h0ZG9jcyAke2RhdGFkaXJ9LyR7QlBOfS9jZ2ktYmluIgorCisjbWFrZSBzdXJlIHRoZSBsb25lIC5zbyBsaW5rcyBhbHNvIGdldCB3cmFwcGVkIGluIHRoZSBiYXNlIHBhY2thZ2UKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGliKi5zbyAke2xpYmRpcn0vcGtnY29uZmlnLyoiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7QlBOfS9tb2R1bGVzLy5kZWJ1ZyIKKworUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2wgbGliZ2NjIgorUkRFUEVORFNfJHtQTn0tc2NyaXB0cyArPSAicGVybCAke1BOfSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICJwZXJsIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2NnaS1iaW4iCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8ke0JQTn0vIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2hpYXdhdGhhL2hpYXdhdGhhXzEwLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvaGlhd2F0aGEvaGlhd2F0aGFfMTAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I2YWIyNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvaGlhd2F0aGEvaGlhd2F0aGFfMTAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgc2VjdXJlIHdlYiBzZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmhpYXdhdGhhLXdlYnNlcnZlci5vcmciCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1ERVBFTkRTID0gImxpYnhtbDIgbGlieHNsdCIKLQotU0VDVElPTiA9ICJuZXQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2hpYXdhdGhhLXdlYnNlcnZlci5vcmcvZmlsZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2hpYXdhdGhhLWluaXQgXAotICAgICAgICAgICBmaWxlOi8vaGlhd2F0aGEuc2VydmljZSAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMTU2N2RmYzE4ZDQzNWJkNDE5YmUyNzlmNzk3MDAxOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5OWQxODVmYjE2YmIxYWI3MDY3MjQ0OTRkM2NhYzg2NDY0ZjE0ODVlZDRiMGZmZjA5YTE5MmVjYTZkYTVmZjhlIgotCi1JTklUU0NSSVBUX05BTUUgPSAiaGlhd2F0aGEiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImhpYXdhdGhhLnNlcnZpY2UiCi0KLWluaGVyaXQgY21ha2UgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1FWFRSQV9PRUNNQUtFID0gIiAtREVOQUJMRV9JUFY2PU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREVOQUJMRV9DQUNIRT1PRkYgXAotICAgICAgICAgICAgICAgICAgLURFTkFCTEVfREVCVUc9T0ZGIFwKLSAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX1NTTD1PRkYgXAotICAgICAgICAgICAgICAgICAgLURFTkFCTEVfVE9PTEtJVD1PRkYgXAotICAgICAgICAgICAgICAgICAgLURFTkFCTEVfQ0hST09UPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREVOQUJMRV9YU0xUPU9OIFwKLSAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX1RPTUFIQVdLPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfTUFORElSPSR7bWFuZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfQklORElSPSR7YmluZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfU0JJTkRJUj0ke3NiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9TWVNDT05GRElSPSR7c3lzY29uZmRpcn0gXAotICAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX0xJQkRJUj0ke2xpYmRpcn0gXAotICAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX0ZVTExfTE9DQUxTVEFURURJUj0ke2xvY2Fsc3RhdGVkaXJ9IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIENvcHkgb3ZlciBpbml0IHNjcmlwdCBhbmQgc2VkIGluIHRoZSBjb3JyZWN0IHNiaW4gcGF0aAotICAgIHNlZCAtaSAncyxzZWRfc2Jpbl9wYXRoLCR7c2JpbmRpcn0sJyAke1dPUktESVJ9L2hpYXdhdGhhLWluaXQKLSAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9oaWF3YXRoYS1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9oaWF3YXRoYQotCi0gICAgIyBjb25maWd1cmUgcGhwLWZjZ2kgdG8gaGF2ZSBhIHdvcmtpbmcgY29uZmlndXJhdGlvbgotICAgICMgYnkgZGVmYXVsdCBpZiBwaHAgaXMgaW5zdGFsbGVkCi0gICAgZWNobyAiU2VydmVyID0gJHtiaW5kaXJ9L3BocC1jZ2kgOyAyIDsgMTI3LjAuMC4xOjIwMDUgOyBub2JvZHk6bm9ib2R5IDsgJHtzeXNjb25mZGlyfS9waHAvaGlhd2F0aGEtcGhwNS9waHAuaW5pIiA+PiAke0R9JHtzeXNjb25mZGlyfS9oaWF3YXRoYS9waHAtZmNnaS5jb25mCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vaGlhd2F0aGEuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBmaQotCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IiAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiIFwKLSAgICAke3N5c2NvbmZkaXJ9L2hpYXdhdGhhL2NnaS13cmFwcGVyLmNvbmYgXAotICAgICR7c3lzY29uZmRpcn0vaGlhd2F0aGEvaGlhd2F0aGEuY29uZiBcCi0gICAgJHtzeXNjb25mZGlyfS9oaWF3YXRoYS9pbmRleC54c2x0IFwKLSAgICAke3N5c2NvbmZkaXJ9L2hpYXdhdGhhL21pbWV0eXBlLmNvbmYgXAotICAgICR7c3lzY29uZmRpcn0vaGlhd2F0aGEvcGhwLWZjZ2kuY29uZiBcCi0iCi0KLUZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vaGlhd2F0aGEvKiR7U09MSUJTREVWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9oaWF3YXRoYS9oaWF3YXRoYV8xMC43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2hpYXdhdGhhL2hpYXdhdGhhXzEwLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMzY2E1NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9oaWF3YXRoYS9oaWF3YXRoYV8xMC43LmJiCkBAIC0wLDAgKzEsNjQgQEAKK1NVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgc2VjdXJlIHdlYiBzZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmhpYXdhdGhhLXdlYnNlcnZlci5vcmciCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitERVBFTkRTID0gImxpYnhtbDIgbGlieHNsdCIKKworU0VDVElPTiA9ICJuZXQiCisKK1NSQ19VUkkgPSAiaHR0cDovL2hpYXdhdGhhLXdlYnNlcnZlci5vcmcvZmlsZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2hpYXdhdGhhLWluaXQgXAorICAgICAgICAgICBmaWxlOi8vaGlhd2F0aGEuc2VydmljZSAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ODFhYTcxYzgzMTE3MmJhMDY5MTBkZWRhNzE3MzAyZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNjNlOTlkODRhODVkYWZiYjc0YmNjMzBiM2UzMDI4NjA1M2VjMmFiYmM3YWZlMDhjZDg3MTkzNjExNzM1Zjc0IgorCitJTklUU0NSSVBUX05BTUUgPSAiaGlhd2F0aGEiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImhpYXdhdGhhLnNlcnZpY2UiCisKK2luaGVyaXQgY21ha2UgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitFWFRSQV9PRUNNQUtFID0gIiAtREVOQUJMRV9JUFY2PU9GRiBcCisgICAgICAgICAgICAgICAgICAtREVOQUJMRV9DQUNIRT1PRkYgXAorICAgICAgICAgICAgICAgICAgLURFTkFCTEVfREVCVUc9T0ZGIFwKKyAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX1NTTD1PRkYgXAorICAgICAgICAgICAgICAgICAgLURFTkFCTEVfVE9PTEtJVD1PRkYgXAorICAgICAgICAgICAgICAgICAgLURFTkFCTEVfQ0hST09UPU9GRiBcCisgICAgICAgICAgICAgICAgICAtREVOQUJMRV9YU0xUPU9OIFwKKyAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX1RPTUFIQVdLPU9GRiBcCisgICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfTUFORElSPSR7bWFuZGlyfSBcCisgICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfQklORElSPSR7YmluZGlyfSBcCisgICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfU0JJTkRJUj0ke3NiaW5kaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9TWVNDT05GRElSPSR7c3lzY29uZmRpcn0gXAorICAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX0xJQkRJUj0ke2xpYmRpcn0gXAorICAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX0ZVTExfTE9DQUxTVEFURURJUj0ke2xvY2Fsc3RhdGVkaXJ9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIENvcHkgb3ZlciBpbml0IHNjcmlwdCBhbmQgc2VkIGluIHRoZSBjb3JyZWN0IHNiaW4gcGF0aAorICAgIHNlZCAtaSAncyxzZWRfc2Jpbl9wYXRoLCR7c2JpbmRpcn0sJyAke1dPUktESVJ9L2hpYXdhdGhhLWluaXQKKyAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9oaWF3YXRoYS1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9oaWF3YXRoYQorCisgICAgIyBjb25maWd1cmUgcGhwLWZjZ2kgdG8gaGF2ZSBhIHdvcmtpbmcgY29uZmlndXJhdGlvbgorICAgICMgYnkgZGVmYXVsdCBpZiBwaHAgaXMgaW5zdGFsbGVkCisgICAgZWNobyAiU2VydmVyID0gJHtiaW5kaXJ9L3BocC1jZ2kgOyAyIDsgMTI3LjAuMC4xOjIwMDUgOyBub2JvZHk6bm9ib2R5IDsgJHtzeXNjb25mZGlyfS9waHAvaGlhd2F0aGEtcGhwNS9waHAuaW5pIiA+PiAke0R9JHtzeXNjb25mZGlyfS9oaWF3YXRoYS9waHAtZmNnaS5jb25mCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vaGlhd2F0aGEuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBmaQorCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IiAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorfQorCitDT05GRklMRVNfJHtQTn0gPSAiIFwKKyAgICAke3N5c2NvbmZkaXJ9L2hpYXdhdGhhL2NnaS13cmFwcGVyLmNvbmYgXAorICAgICR7c3lzY29uZmRpcn0vaGlhd2F0aGEvaGlhd2F0aGEuY29uZiBcCisgICAgJHtzeXNjb25mZGlyfS9oaWF3YXRoYS9pbmRleC54c2x0IFwKKyAgICAke3N5c2NvbmZkaXJ9L2hpYXdhdGhhL21pbWV0eXBlLmNvbmYgXAorICAgICR7c3lzY29uZmRpcn0vaGlhd2F0aGEvcGhwLWZjZ2kuY29uZiBcCisiCisKK0ZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vaGlhd2F0aGEvKiR7U09MSUJTREVWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9tb25rZXkvbW9ua2V5XzEuNS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL21vbmtleS9tb25rZXlfMS41LjYuYmIKaW5kZXggOTdkYzI3Ni4uNTU5ZDI1MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL21vbmtleS9tb25rZXlfMS41LjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL21vbmtleS9tb25rZXlfMS41LjYuYmIKQEAgLTE3LDYgKzE3LDkgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI5Njk5ZTRjOWVhNmNlNmI5ODk5MDdjMjUyYWU4MDI1NCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI3YzNkODQ1MzA2YWE3NGVlNmVmZmQ3YWI2MTY5ZDE2YWM0ZTY0NTBlNTY0OTU0ZDBkMGJhYTJkMWU5YmUxYTIyIgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL21vbmtleS9tb25rZXkvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhci5neiIKKwogRVhUUkFfT0VDT05GID0gIi0tcGx1Z2Rpcj0ke2xpYmRpcn0vbW9ua2V5LyBcCiAgICAgICAgICAgICAgICAgLS1sb2dkaXI9JHtsb2NhbHN0YXRlZGlyfS9sb2cvbW9ua2V5LyBcCiAgICAgICAgICAgICAgICAgLS1waWRmaWxlPSR7bG9jYWxzdGF0ZWRpcn0vcnVuL21vbmtleS5waWQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L2ZpbGVzLzAwMDEtQWxsb3ctdGhlLW92ZXJyaWRpbmctb2YtdGhlLWVuZGlhbm5lc3MtdmlhLXRoZS1jb25maS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9maWxlcy8wMDAxLUFsbG93LXRoZS1vdmVycmlkaW5nLW9mLXRoZS1lbmRpYW5uZXNzLXZpYS10aGUtY29uZmkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZkNWVlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9maWxlcy8wMDAxLUFsbG93LXRoZS1vdmVycmlkaW5nLW9mLXRoZS1lbmRpYW5uZXNzLXZpYS10aGUtY29uZmkucGF0Y2gKQEAgLTAsMCArMSw4MCBAQAorRnJvbSBiZTk5NzBhYTE2YzUxNDJlZjgxNDUzMWQ3NGEwNzk5MGE4ZTllYjE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4KK0RhdGU6IEZyaSwgMSBEZWMgMjAxNyAxMDozMjoyOSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBBbGxvdyB0aGUgb3ZlcnJpZGluZyBvZiB0aGUgZW5kaWFubmVzcyB2aWEgdGhlIGNvbmZpZ3VyZSBmbGFnCisgLS13aXRoLWVuZGlhbgorCitUaGUgZXhpc3RpbmcgY29uZmlndXJlIG9wdGlvbnMgY29udGFpbiB0aGUgLS13aXRoLWVuZGlhbjsgaG93ZXZlciwgdGhlIGNvbW1hbmQKK2xpbmUgZmxhZyBkb2VzIG5vdCBhY3R1YWxseSBmdW5jdGlvbi4gIEl0IGRvZXMgbm90IHNldCB0aGUgZW5kaWFubmVzcyBhbmQgaXQKK2FwcGVhcnMgdG8gZG8gbm90aGluZy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+CisKK2RpZmYgLS1naXQgYS9hdXRvL2VuZGlhbm5lc3MgYi9hdXRvL2VuZGlhbm5lc3MKK2luZGV4IDFiNTUyYjYuLmJlODQ0ODcgMTAwNjQ0CistLS0gYS9hdXRvL2VuZGlhbm5lc3MKKysrKyBiL2F1dG8vZW5kaWFubmVzcworQEAgLTEzLDcgKzEzLDEzIEBAIGNoZWNraW5nIGZvciBzeXN0ZW0gYnl0ZSBvcmRlcmluZworIEVORAorIAorIAorLWNhdCA8PCBFTkQgPiAkTkdYX0FVVE9URVNULmMKKytpZiBbICIuJE5HWF9XSVRIX0VORElBTiIgPSAiLmxpdHRsZSIgXTsgdGhlbgorKyAgICBlY2hvICIgbGl0dGxlIGVuZGlhbiIKKysgICAgaGF2ZT1OR1hfSEFWRV9MSVRUTEVfRU5ESUFOIC4gYXV0by9oYXZlCisrZWxpZiBbICIuJE5HWF9XSVRIX0VORElBTiIgPSAiLmJpZyIgXTsgdGhlbgorKyAgICBlY2hvICIgYmlnIGVuZGlhbiIKKytlbHNlCisrICAgIGNhdCA8PCBFTkQgPiAkTkdYX0FVVE9URVNULmMKKyAKKyBpbnQgbWFpbih2b2lkKSB7CisgICAgIGludCBpID0gMHgxMTIyMzM0NDsKK0BAIC0yNiwyNSArMzIsMjYgQEAgaW50IG1haW4odm9pZCkgeworIAorIEVORAorIAorLW5neF90ZXN0PSIkQ0MgJENDX1RFU1RfRkxBR1MgJENDX0FVWF9GTEFHUyBcCistICAgICAgICAgIC1vICROR1hfQVVUT1RFU1QgJE5HWF9BVVRPVEVTVC5jICROR1hfTERfT1BUICRuZ3hfZmVhdHVyZV9saWJzIgorKyAgICBuZ3hfdGVzdD0iJENDICRDQ19URVNUX0ZMQUdTICRDQ19BVVhfRkxBR1MgXAorKyAgICAgICAgICAgICAgLW8gJE5HWF9BVVRPVEVTVCAkTkdYX0FVVE9URVNULmMgJE5HWF9MRF9PUFQgJG5neF9mZWF0dXJlX2xpYnMiCisgCistZXZhbCAiJG5neF90ZXN0ID4+ICROR1hfQVVUT0NPTkZfRVJSIDI+JjEiCisrICAgIGV2YWwgIiRuZ3hfdGVzdCA+PiAkTkdYX0FVVE9DT05GX0VSUiAyPiYxIgorIAorLWlmIFsgLXggJE5HWF9BVVRPVEVTVCBdOyB0aGVuCistICAgIGlmICROR1hfQVVUT1RFU1QgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCistICAgICAgICBlY2hvICIgbGl0dGxlIGVuZGlhbiIKKy0gICAgICAgIGhhdmU9TkdYX0hBVkVfTElUVExFX0VORElBTiAuIGF1dG8vaGF2ZQorLSAgICBlbHNlCistICAgICAgICBlY2hvICIgYmlnIGVuZGlhbiIKKy0gICAgZmkKKysgICAgaWYgWyAteCAkTkdYX0FVVE9URVNUIF07IHRoZW4KKysgICAgICAgIGlmICROR1hfQVVUT1RFU1QgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgICAgICAgZWNobyAiIGxpdHRsZSBlbmRpYW4iCisrICAgICAgICAgICAgaGF2ZT1OR1hfSEFWRV9MSVRUTEVfRU5ESUFOIC4gYXV0by9oYXZlCisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgZWNobyAiIGJpZyBlbmRpYW4iCisrICAgICAgICBmaQorIAorLSAgICBybSAtcmYgJE5HWF9BVVRPVEVTVCoKKysgICAgICAgIHJtIC1yZiAkTkdYX0FVVE9URVNUKgorIAorLWVsc2UKKy0gICAgcm0gLXJmICROR1hfQVVUT1RFU1QqCisrICAgIGVsc2UKKysgICAgICAgIHJtIC1yZiAkTkdYX0FVVE9URVNUKgorIAorLSAgICBlY2hvCistICAgIGVjaG8gIiQwOiBlcnJvcjogY2Fubm90IGRldGVjdCBzeXN0ZW0gYnl0ZSBvcmRlcmluZyIKKy0gICAgZXhpdCAxCisrICAgICAgICBlY2hvCisrICAgICAgICBlY2hvICIkMDogZXJyb3I6IGNhbm5vdCBkZXRlY3Qgc3lzdGVtIGJ5dGUgb3JkZXJpbmciCisrICAgICAgICBleGl0IDEKKysgICAgZmkKKyBmaQorLS0gCisyLjcuNAorCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9maWxlcy9uZ2lueC1jcm9zcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9maWxlcy9uZ2lueC1jcm9zcy5wYXRjaAppbmRleCA1ZTk2NjQ0Li4wYTE4YmNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvZmlsZXMvbmdpbngtY3Jvc3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L2ZpbGVzL25naW54LWNyb3NzLnBhdGNoCkBAIC0zLDEwICszLDExIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogCi1kaWZmIC11cmFOIG5naW54LTEuMC4xMS5vcmlnL2F1dG8vZmVhdHVyZSBuZ2lueC0xLjAuMTEvYXV0by9mZWF0dXJlCi0tLS0gbmdpbngtMS4wLjExLm9yaWcvYXV0by9mZWF0dXJlCTIwMTEtMDUtMTEgMDY6NTA6MTkuMDAwMDAwMDAwIC0wNTAwCi0rKysgbmdpbngtMS4wLjExL2F1dG8vZmVhdHVyZQkyMDExLTEyLTI3IDEzOjU2OjQyLjMyMzM3MDA0MCAtMDYwMAotQEAgLTQ5LDEyICs0OSwyMCBAQAorSW5kZXg6IG5naW54LTEuMTIuMi9hdXRvL2ZlYXR1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZ2lueC0xLjEyLjIub3JpZy9hdXRvL2ZlYXR1cmUKKysrKyBuZ2lueC0xLjEyLjIvYXV0by9mZWF0dXJlCitAQCAtNDksMTIgKzQ5LDIwIEBAIGV2YWwgIi9iaW4vc2ggLWMgXCIkbmd4X3Rlc3RcIiA+PiAkTkdYX0EKICAKICBpZiBbIC14ICROR1hfQVVUT1RFU1QgXTsgdGhlbgogIApAQCAtMjksNyArMzAsNyBAQAogICAgICAgICAgICAgICAgICBuZ3hfZm91bmQ9eWVzCiAgCiAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRuZ3hfZmVhdHVyZV9uYW1lIjsgdGhlbgotQEAgLTY4LDE3ICs3NSwyNyBAQAorQEAgLTY4LDE3ICs3NiwyNyBAQCBpZiBbIC14ICROR1hfQVVUT1RFU1QgXTsgdGhlbgogIAogICAgICAgICAgdmFsdWUpCiAgICAgICAgICAgICAgIyAvYmluL3NoIGlzIHVzZWQgdG8gaW50ZXJjZXB0ICJLaWxsZWQiIG9yICJBYm9ydCB0cmFwIiBtZXNzYWdlcwpAQCAtNjEsNyArNjIsNyBAQAogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgZWNobyAiIGZvdW5kIGJ1dCBpcyBub3Qgd29ya2luZyIKICAgICAgICAgICAgICBmaQotQEAgLTg2LDcgKzEwNSw3IEBACitAQCAtODYsNyArMTA0LDcgQEAgRU5ECiAgCiAgICAgICAgICBidWcpCiAgICAgICAgICAgICAgIyAvYmluL3NoIGlzIHVzZWQgdG8gaW50ZXJjZXB0ICJLaWxsZWQiIG9yICJBYm9ydCB0cmFwIiBtZXNzYWdlcwpAQCAtNzAsMTAgKzcxLDExIEBACiAgICAgICAgICAgICAgICAgIGVjaG8gIiBub3QgZm91bmQiCiAgCiAgICAgICAgICAgICAgZWxzZQotZGlmZiAtdXJhTiBuZ2lueC0xLjAuMTEub3JpZy9hdXRvL29wdGlvbnMgbmdpbngtMS4wLjExL2F1dG8vb3B0aW9ucwotLS0tIG5naW54LTEuMC4xMS5vcmlnL2F1dG8vb3B0aW9ucwkyMDExLTEyLTE0IDA3OjM0OjE2LjAwMDAwMDAwMCAtMDYwMAotKysrIG5naW54LTEuMC4xMS9hdXRvL29wdGlvbnMJMjAxMS0xMi0yNyAxMzo1Njo0Mi4zMjMzNzAwNDAgLTA2MDAKLUBAIC0zNTMsNiArMzUzLDE4IEBACitJbmRleDogbmdpbngtMS4xMi4yL2F1dG8vb3B0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5naW54LTEuMTIuMi5vcmlnL2F1dG8vb3B0aW9ucworKysrIG5naW54LTEuMTIuMi9hdXRvL29wdGlvbnMKK0BAIC0zODYsNiArMzg2LDE4IEBAICQwOiB3YXJuaW5nOiB0aGUgXCItLXdpdGgtc2hhMS1hc21cIiBvcHQKICAgICAgICAgIC0tdGVzdC1idWlsZC1lcG9sbCkgICAgICAgICAgICAgIE5HWF9URVNUX0JVSUxEX0VQT0xMPVlFUyAgIDs7CiAgICAgICAgICAtLXRlc3QtYnVpbGQtc29sYXJpcy1zZW5kZmlsZXYpICBOR1hfVEVTVF9CVUlMRF9TT0xBUklTX1NFTkRGSUxFVj1ZRVMgOzsKICAKQEAgLTkyLDcgKzk0LDcgQEAKICAgICAgICAgICopCiAgICAgICAgICAgICAgZWNobyAiJDA6IGVycm9yOiBpbnZhbGlkIG9wdGlvbiBcIiRvcHRpb25cIiIKICAgICAgICAgICAgICBleGl0IDEKLUBAIC01MzMsNiArNDQ1LDE3IEBACitAQCAtNTY4LDYgKzU4MCwxNyBAQCBjYXQgPDwgRU5ECiAgCiAgICAtLXdpdGgtZGVidWcgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZSBkZWJ1ZyBsb2dnaW5nCiAgCkBAIC0xMTAsNyArMTEyLDcgQEAKICBFTkQKICAKICAgICAgZXhpdCAxCi1AQCAtNTU0LDYgKzU3Nyw4IEBACitAQCAtNTc2LDYgKzU5OSw4IEBAIGZpCiAgCiAgaWYgWyAiLiROR1hfUExBVEZPUk0iID0gIi53aW4zMiIgXTsgdGhlbgogICAgICBOR1hfV0lORT0kV0lORQpAQCAtMTE5LDEwICsxMjEsMTEgQEAKICBmaQogIAogIAotZGlmZiAtdXJhTiBuZ2lueC0xLjAuMTEub3JpZy9hdXRvL3R5cGVzL3NpemVvZiBuZ2lueC0xLjAuMTEvYXV0by90eXBlcy9zaXplb2YKLS0tLSBuZ2lueC0xLjAuMTEub3JpZy9hdXRvL3R5cGVzL3NpemVvZgkyMDA2LTA2LTI4IDExOjAwOjI2LjAwMDAwMDAwMCAtMDUwMAotKysrIG5naW54LTEuMC4xMS9hdXRvL3R5cGVzL3NpemVvZgkyMDExLTEyLTI3IDEzOjU2OjQyLjMyMzM3MDA0MCAtMDYwMAotQEAgLTEyLDkgKzEyLDEyIEBACitJbmRleDogbmdpbngtMS4xMi4yL2F1dG8vdHlwZXMvc2l6ZW9mCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmdpbngtMS4xMi4yLm9yaWcvYXV0by90eXBlcy9zaXplb2YKKysrKyBuZ2lueC0xLjEyLjIvYXV0by90eXBlcy9zaXplb2YKK0BAIC0xMiw5ICsxMiwxMiBAQCBjaGVja2luZyBmb3IgJG5neF90eXBlIHNpemUKICAKICBFTkQKICAKQEAgLTEzNyw3ICsxNDAsNyBAQAogIAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLUBAIC0zMywxNSArMzYsMTYgQEAKK0BAIC0zMywxNSArMzYsMTYgQEAgaW50IG1haW4odm9pZCkgewogIEVORAogIAogIApAQCAtMTYwLDEwICsxNjMsMTEgQEAKICBmaQogIAogIAotZGlmZiAtdXJhTiBuZ2lueC0xLjAuMTEub3JpZy9hdXRvL3VuaXggbmdpbngtMS4wLjExL2F1dG8vdW5peAotLS0tIG5naW54LTEuMC4xMS5vcmlnL2F1dG8vdW5peAkyMDExLTEyLTE0IDA3OjM0OjE2LjAwMDAwMDAwMCAtMDYwMAotKysrIG5naW54LTEuMC4xMS9hdXRvL3VuaXgJMjAxMS0xMi0yNyAxMzo1Njo0Mi4zMjczNzAwNjAgLTA2MDAKLUBAIC0zOTMsMTMgKzM5MywxMyBAQAorSW5kZXg6IG5naW54LTEuMTIuMi9hdXRvL3VuaXgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZ2lueC0xLjEyLjIub3JpZy9hdXRvL3VuaXgKKysrKyBuZ2lueC0xLjEyLjIvYXV0by91bml4CitAQCAtNTg3LDEzICs1ODcsMTMgQEAgbmd4X2ZlYXR1cmVfbGlicz0KICAKICAjIEMgdHlwZXMKICAKQEAgLTE4MSw4ICsxODUsOCBAQAogIG5neF9wYXJhbT1OR1hfUFRSX1NJWkU7IG5neF92YWx1ZT0kbmd4X3NpemU7IC4gYXV0by90eXBlcy92YWx1ZQogIAogIAotQEAgLTQxNiw3ICs0MTYsNyBAQAotIAorQEAgLTYwNCw3ICs2MDQsNyBAQCBOR1hfSU5DTFVERV9BVVRPX0NPTkZJR19IPSIjaW5jbHVkZSBcIm5nCisgbmd4X3R5cGU9InVpbnQzMl90Ijsgbmd4X3R5cGVzPSJ1X2ludDMyX3QiOyAuIGF1dG8vdHlwZXMvdHlwZWRlZgogIG5neF90eXBlPSJ1aW50NjRfdCI7IG5neF90eXBlcz0idV9pbnQ2NF90IjsgLiBhdXRvL3R5cGVzL3R5cGVkZWYKICAKIC1uZ3hfdHlwZT0ic2lnX2F0b21pY190Ijsgbmd4X3R5cGVzPSJpbnQiOyAuIGF1dG8vdHlwZXMvdHlwZWRlZgpAQCAtMTkwLDkgKzE5NCw5IEBACiAgLiBhdXRvL3R5cGVzL3NpemVvZgogIG5neF9wYXJhbT1OR1hfU0lHX0FUT01JQ19UX1NJWkU7IG5neF92YWx1ZT0kbmd4X3NpemU7IC4gYXV0by90eXBlcy92YWx1ZQogIAotQEAgLTQzMiwxNSArNDMyLDE1IEBACitAQCAtNjIwLDE1ICs2MjAsMTUgQEAgbmd4X3R5cGU9InJsaW1fdCI7IG5neF90eXBlcz0iaW50IjsgLiBhdQogIAotIC4gYXV0by9lbmRpYW5lc3MKKyAuIGF1dG8vZW5kaWFubmVzcwogIAogLW5neF90eXBlPSJzaXplX3QiOyAuIGF1dG8vdHlwZXMvc2l6ZW9mCiArbmd4X3R5cGU9InNpemVfdCI7IG5neF9wYXJhbT0iU0laRV9UIjsgLiBhdXRvL3R5cGVzL3NpemVvZgpAQCAtMjA4LDQgKzIxMiw0IEBACiArbmd4X3R5cGU9InRpbWVfdCI7IG5neF9wYXJhbT0iVElNRV9UIjsgLiBhdXRvL3R5cGVzL3NpemVvZgogIG5neF9wYXJhbT1OR1hfVElNRV9UX1NJWkU7IG5neF92YWx1ZT0kbmd4X3NpemU7IC4gYXV0by90eXBlcy92YWx1ZQogIG5neF9wYXJhbT1OR1hfVElNRV9UX0xFTjsgbmd4X3ZhbHVlPSRuZ3hfbWF4X2xlbjsgLiBhdXRvL3R5cGVzL3ZhbHVlCi0gCisgbmd4X3BhcmFtPU5HWF9NQVhfVElNRV9UX1ZBTFVFOyBuZ3hfdmFsdWU9JG5neF9tYXhfdmFsdWU7IC4gYXV0by90eXBlcy92YWx1ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueC5pbmMKaW5kZXggNGE5N2UyNi4uZTZhZTUyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnguaW5jCkBAIC0xNCwxMyArMTQsMTQgQEAKIFNSQ19VUkkgPSAiIFwKICAgICBodHRwOi8vbmdpbngub3JnL2Rvd25sb2FkL25naW54LSR7UFZ9LnRhci5neiBcCiAgICAgZmlsZTovL25naW54LWNyb3NzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1BbGxvdy10aGUtb3ZlcnJpZGluZy1vZi10aGUtZW5kaWFubmVzcy12aWEtdGhlLWNvbmZpLnBhdGNoIFwKICAgICBmaWxlOi8vbmdpbnguY29uZiBcCiAgICAgZmlsZTovL25naW54LmluaXQgXAogICAgIGZpbGU6Ly9uZ2lueC12b2xhdGlsZS5jb25mIFwKICAgICBmaWxlOi8vbmdpbnguc2VydmljZSBcCiAiCiAKLWluaGVyaXQgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kCitpbmhlcml0IHNpdGVpbmZvIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZAogCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmdpbnguc2VydmljZSIKIApAQCAtNTAsNyArNTEsNyBAQAogCiAgICAgLi9jb25maWd1cmUgXAogICAgIC0tY3Jvc3NidWlsZD1MaW51eDoke1RVTkVfQVJDSH0gXAotICAgIC0td2l0aC1lbmRpYW49JHtAYmFzZV9jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICdsaXR0bGUnLCAnYmlnJywgZCl9IFwKKyAgICAtLXdpdGgtZW5kaWFuPSR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJ2xpdHRsZScsICdiaWcnLCBkKX0gXAogICAgIC0td2l0aC1pbnQ9NCBcCiAgICAgLS13aXRoLWxvbmc9JHtQVFJTSVpFfSBcCiAgICAgLS13aXRoLWxvbmctbG9uZz04IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjBlM2FkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgbmdpbnguaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkwMzc1M2RlNWY4NmExZWUwMzQxZmQyZjk0OTFiMjgyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTMwN2U3NGFjYTk1NDAzZTVlZTAwZjE1MzgwN2NlNTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODc5M2JmNDI2NDg1YTMwZjkxMDIxYjZiOTQ1YTlmZDhhODRkODdkMTdiNTY2NTYyYzM3OTdhYmE4ZmFjNzZmYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1YWQyOWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMi4yLmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBuZ2lueC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTAzNzUzZGU1Zjg2YTFlZTAzNDFmZDJmOTQ5MWIyODIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZDJmYzc2MjExNDM1ZjAyOTI3MWYxY2Y2ZDdlZWFlMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMDVmMzc5ZGExZDVmYjVhZWZhNzllNDVjODI5ODUyY2E2OTgzYzdjZDJhNzkzMjhmOGUwODRhMzI0Y2YwNDE2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTMuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEzLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmMmMxMTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTMuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgbmdpbnguaW5jCi0KLSMgMS4xMi54IGJyYW5jaCBpcyB0aGUgY3VycmVudCBzdGFibGUgYnJhbmNoLCB0aGUgcmVjb21tZW5kZWQgZGVmYXVsdAotIyAxLjEzLnggaXMgdGhlIGN1cnJlbnQgbWFpbmxpbmUgYnJhbmNoZXMgY29udGFpbmluZyBhbGwgbmV3IGZlYXR1cmVzCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkwMzc1M2RlNWY4NmExZWUwMzQxZmQyZjk0OTFiMjgyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjE5MzcyMjE1OWFkZmIxZWI4MTE3YzA0OTFmZDE3ZWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGU3NWI5NDQyOWIzZjc0NTM3N2FlYmEzYWZmOTdkYTc3YmYyYjAzZmNiOWZmMTViM2JhZDliMDM4ZGIyOWYyZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEzLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMy45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMzQ3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMy45LmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgbmdpbnguaW5jCisKKyMgMS4xMi54IGJyYW5jaCBpcyB0aGUgY3VycmVudCBzdGFibGUgYnJhbmNoLCB0aGUgcmVjb21tZW5kZWQgZGVmYXVsdAorIyAxLjEzLnggaXMgdGhlIGN1cnJlbnQgbWFpbmxpbmUgYnJhbmNoZXMgY29udGFpbmluZyBhbGwgbmV3IGZlYXR1cmVzCitERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM2OTE0MDJjYzU0Y2UwOWY4MDBjYTM0ODYzNGEyZGZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGNkNDgyZGQ5OGQyMDIyNjU5MjEyZjE4M2U4ZmU4MWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWZhZWExODg1NzUxNmZlNjhkMzBiZTM5YzMwMzJiZDIyZWQ5Y2Y4NWUxYTZmZGYzMmUzNzIxZDk2ZmY3ZmE0MiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9zdGh0dHBkL3N0aHR0cGRfMi4yNy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL3N0aHR0cGQvc3RodHRwZF8yLjI3LjEuYmIKaW5kZXggYzlmZTU1Yi4uMzdiZDc1MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL3N0aHR0cGQvc3RodHRwZF8yLjI3LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL3N0aHR0cGQvc3RodHRwZF8yLjI3LjEuYmIKQEAgLTE0LDYgKzE0LDkgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICIzY2RhMWI2YzhjODU0MmIxNTEwZWFkYjhlNTQwZDhiNiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMWVlMjgwNjQzMmVhZjViNWRkMjY3YTA1MjM3MDFmOWYxZmEwMGZlZmQ0OTlkNWJlYzQyMTY1YTQxZTA1ODQ2IgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JsdWVuZXNzL3N0aHR0cGQvcmVsZWFzZXMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIuZ3oiCisKIFMgPSAiJHtXT1JLRElSfS9zdGh0dHBkLSR7UFZ9IgogCiBpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl80LjcuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAvcGhwbXlhZG1pbi9waHBteWFkbWluXzQuNy42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzJkYjU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAvcGhwbXlhZG1pbi9waHBteWFkbWluXzQuNy42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJXZWItYmFzZWQgTXlTUUwgYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5waHBteWFkbWluLm5ldCIKLSMgTWFpbiBjb2RlIGlzIEdQTHYyLCB2ZW5kb3IvdGVjbmlja2NvbS90Y3BkZiBpcyB1bmRlciBMR1BMdjMsIGpzL2pxdWVyeSBpcyB1bmRlciBNSVQKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjMgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly92ZW5kb3IvdGVjbmlja2NvbS90Y3BkZi9MSUNFTlNFLlRYVDttZDU9NWM4N2I2NmE1MzU4ZWJjYzQ5NWIwM2UwYWZjZDM0MmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanMvanF1ZXJ5L01JVC1MSUNFTlNFLnR4dDttZDU9ZTQzYWE0MzdhNmExYmE0MjE2NTNiZDUwMzQzMzNiZjkgXAotIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucGhwbXlhZG1pbi5uZXQvcGhwTXlBZG1pbi8ke1BWfS9waHBNeUFkbWluLSR7UFZ9LWFsbC1sYW5ndWFnZXMudGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2FwYWNoZS5jb25mIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImE5YWVjMDVkNDRjNjhiNGFjNWU0OTg3MTE4ZDcwY2Q3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmYWI2YjkyMzM2Mzg2NjQ2YmJiMTg5ZDU1ODE3Nzk5NDg3YjVjMjdiMDZjYWIwY2RmZGNhYjNjODhmNTk4OGYiCi0KLVMgPSAiJHtXT1JLRElSfS9waHBNeUFkbWluLSR7UFZ9LWFsbC1sYW5ndWFnZXMiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vJHtCUE59Ci0gICAgY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgKiAke0R9JHtkYXRhZGlyfS8ke0JQTn0KLSAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vJHtCUE59Ci0gICAgIyBEb24ndCBpbnN0YWxsIHBhdGNoZXMgdG8gdGFyZ2V0Ci0gICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9wYXRjaGVzCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQvcGhwbXlhZG1pbi5jb25mCi0KLSAgICAjIFJlbW92ZSBhIGZldyBzY3JpcHRzIHRoYXQgZXhwbGljaXRseSByZXF1aXJlIGJhc2ggKCEpCi0gICAgcm0gLWYgJHtEfSR7ZGF0YWRpcn0vcGhwbXlhZG1pbi9saWJyYXJpZXMvdHJhbnNmb3JtYXRpb25zLyouc2gKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS8ke0JQTn0gXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZCIKLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl80LjcuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAvcGhwbXlhZG1pbi9waHBteWFkbWluXzQuNy45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MTU3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl80LjcuOS5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIldlYi1iYXNlZCBNeVNRTCBhZG1pbmlzdHJhdGlvbiBpbnRlcmZhY2UiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBocG15YWRtaW4ubmV0IgorIyBNYWluIGNvZGUgaXMgR1BMdjIsIHZlbmRvci90ZWNuaWNrY29tL3RjcGRmIGlzIHVuZGVyIExHUEx2MywganMvanF1ZXJ5IGlzIHVuZGVyIE1JVAorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3ZlbmRvci90ZWNuaWNrY29tL3RjcGRmL0xJQ0VOU0UuVFhUO21kNT01Yzg3YjY2YTUzNThlYmNjNDk1YjAzZTBhZmNkMzQyYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcy9qcXVlcnkvTUlULUxJQ0VOU0UudHh0O21kNT1lNDNhYTQzN2E2YTFiYTQyMTY1M2JkNTAzNDMzM2JmOSBcCisiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5waHBteWFkbWluLm5ldC9waHBNeUFkbWluLyR7UFZ9L3BocE15QWRtaW4tJHtQVn0tYWxsLWxhbmd1YWdlcy50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vYXBhY2hlLmNvbmYgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGE4NjJlM2ZhNTJjOGI5MDc4ZTA0NDFlZTgyYmU4MzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjE5YjUwM2YwYWZiMGRkMzM4OWQ0YmIxMWRhYjNmNDM4ZDM2ZTg1ZWVmMTFhNWM0MDBjNTkyZmQ1ZjUzOTM5OCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3LnBocG15YWRtaW4ubmV0L2Rvd25sb2Fkcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJwaHBNeUFkbWluLSg/UDxwdmVyPlxkKyhcLlxkKykrKS1hbGwtbGFuZ3VhZ2VzLnRhci54eiIKKworUyA9ICIke1dPUktESVJ9L3BocE15QWRtaW4tJHtQVn0tYWxsLWxhbmd1YWdlcyIKKworaW5oZXJpdCBhbGxhcmNoCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS8ke0JQTn0KKyAgICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAqICR7RH0ke2RhdGFkaXJ9LyR7QlBOfQorICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtkYXRhZGlyfS8ke0JQTn0KKyAgICAjIERvbid0IGluc3RhbGwgcGF0Y2hlcyB0byB0YXJnZXQKKyAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0vJHtCUE59L3BhdGNoZXMKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZC9waHBteWFkbWluLmNvbmYKKworICAgICMgUmVtb3ZlIGEgZmV3IHNjcmlwdHMgdGhhdCBleHBsaWNpdGx5IHJlcXVpcmUgYmFzaCAoISkKKyAgICBybSAtZiAke0R9JHtkYXRhZGlyfS9waHBteWFkbWluL2xpYnJhcmllcy90cmFuc2Zvcm1hdGlvbnMvKi5zaAorfQorCitGSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9LyR7QlBOfSBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kIgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAveGRlYnVnL3hkZWJ1Z18yLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAveGRlYnVnL3hkZWJ1Z18yLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc0MTM3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3hkZWJ1Zy94ZGVidWdfMi41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkRlYnVnZ2luZyBhbmQgcHJvZmlsaW5nIGV4dGVuc2lvbiBmb3IgUEhQIgotTElDRU5TRSA9ICJYZGVidWciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNGRmM2EyNzRhYTEyYjc5NTQxN2M2NTYzNGMwN2YxNiIKLQotREVQRU5EUyA9ICJwaHAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3hkZWJ1Zy5vcmcvZmlsZXMveGRlYnVnLSR7UFZ9LnRneiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjYxNjdiMWUxMDRmMTEwOGQ3N2YwOGViNTYxYTEyYjIyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmZGE5MDIwZmQ1YTJjNTQ5YWU1YTY5MmZjYWJiYjAwZjc0ZTM5ZGRhODFkNTNkMjVlNjIyYmRhYjQ4ODBlYzIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUteGRlYnVnIC13aXRoLXBocC1jb25maWc9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vcGhwLWNvbmZpZyIKLQotZG9fY29uZmlndXJlKCkgewotICAgIGNkICR7U30KLSAgICAke1NUQUdJTkdfQklORElSX0NST1NTfS9waHBpemUKLSAgICBjZCAke0J9Ci0KLSAgICAjIFJ1bm5pbmcgYXV0b3JlY29uZiBhcyBhdXRvdG9vbHNfZG9fY29uZmlndXJlIHdvdWxkIGRvIGhlcmUKLSAgICAjIGJyZWFrcyB0aGUgbGlidG9vbCBjb25maWd1cmF0aW9uIHJlc3VsdGluZyBpbiBhIGZhaWx1cmUgbGF0ZXIKLSAgICAjIGluIGRvX2NvbXBpbGUuIEl0J3MgcG9zc2libGUgdGhpcyBtYXkgYmUgZml4YWJsZSwgaG93ZXZlciB0aGUKLSAgICAjIGVhc2llc3QgY291cnNlIG9mIGFjdGlvbiBmb3IgdGhlIG1vbWVudCBpcyB0byBhdm9pZCBkb2luZyB0aGF0LgotICAgIG9lX3J1bmNvbmYKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5TVEFMTF9ST09UPSR7RH0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9waHAqL2V4dGVuc2lvbnMvKi8qLnNvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vcGhwKi9leHRlbnNpb25zLyovLmRlYnVnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC94ZGVidWcveGRlYnVnXzIuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC94ZGVidWcveGRlYnVnXzIuNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1MTY5ODgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3hkZWJ1Zy94ZGVidWdfMi42LjAuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJEZWJ1Z2dpbmcgYW5kIHByb2ZpbGluZyBleHRlbnNpb24gZm9yIFBIUCIKK0xJQ0VOU0UgPSAiWGRlYnVnIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzRkZjNhMjc0YWExMmI3OTU0MTdjNjU2MzRjMDdmMTYiCisKK0RFUEVORFMgPSAicGhwIHJlMmMtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly94ZGVidWcub3JnL2ZpbGVzL3hkZWJ1Zy0ke1BWfS50Z3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZDM1NDU4NTJlNmY0YTAwZmI4NzMwMzYyZDA0MzFlZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNTI2NGNjMDNiZjY4ZmNiYjA0Yjk3MjI5Zjk2ZGNhNTA1ZDdiODdlYzJmYjNiZDQyNDk4OTY3ODNkMjljYmRjIgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXhkZWJ1ZyAtd2l0aC1waHAtY29uZmlnPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L3BocC1jb25maWciCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBjZCAke1N9CisgICAgJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vcGhwaXplCisgICAgY2QgJHtCfQorCisgICAgIyBSdW5uaW5nIGF1dG9yZWNvbmYgYXMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB3b3VsZCBkbyBoZXJlCisgICAgIyBicmVha3MgdGhlIGxpYnRvb2wgY29uZmlndXJhdGlvbiByZXN1bHRpbmcgaW4gYSBmYWlsdXJlIGxhdGVyCisgICAgIyBpbiBkb19jb21waWxlLiBJdCdzIHBvc3NpYmxlIHRoaXMgbWF5IGJlIGZpeGFibGUsIGhvd2V2ZXIgdGhlCisgICAgIyBlYXNpZXN0IGNvdXJzZSBvZiBhY3Rpb24gZm9yIHRoZSBtb21lbnQgaXMgdG8gYXZvaWQgZG9pbmcgdGhhdC4KKyAgICBvZV9ydW5jb25mCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIElOU1RBTExfUk9PVD0ke0R9Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcGhwKi9leHRlbnNpb25zLyovKi5zbyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3BocCovZXh0ZW5zaW9ucy8qLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi9uZXRkYXRhL25ldGRhdGEvMDAwMS1tYWtlZmlsZS1Eby1ub3QtYnVpbGQtY29udHJpYi1kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhLzAwMDEtbWFrZWZpbGUtRG8tbm90LWJ1aWxkLWNvbnRyaWItZGlyLnBhdGNoCmluZGV4IDlhM2E0YTUuLjZhMGQ3NWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi9uZXRkYXRhL25ldGRhdGEvMDAwMS1tYWtlZmlsZS1Eby1ub3QtYnVpbGQtY29udHJpYi1kaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YS8wMDAxLW1ha2VmaWxlLURvLW5vdC1idWlsZC1jb250cmliLWRpci5wYXRjaApAQCAtMTEsMTcgKzExLDE3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDNjY2Y4MmY4Li5hODUyZTUyOSAxMDA2NDQKK2luZGV4IDJlYTllNDAuLmFjYjFiZDggMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KLUBAIC01Miw3ICs1Miw2IEBAIFNVQkRJUlMgPSBcCitAQCAtNTYsNyArNTYsNiBAQCBTVUJESVJTID0gXAogIAlzcmMgXAogIAlzeXN0ZW0gXAogIAl3ZWIgXAogLQljb250cmliIFwKKyAJdGVzdHMgXAogIAkkKE5VTEwpCiAgCi0gZGlzdF9ub2luc3RfREFUQT0gXAogLS0gCiAyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhX2dpdC5iYgppbmRleCAxMDAzNjYyLi5iMGYxNjAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhX2dpdC5iYgpAQCAtMSwxNSArMSwxNSBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ZpcmVob2wvbmV0ZGF0YS8iCiBTVU1NQVJZID0gIlJlYWwtdGltZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIgogTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWE0YTNiNjUwZWEzZjc0MjY5Y2RmZDQ1YTM1NTBlMjE5IFwKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PTk1YjQ5ZTllYTk3OWEzMzc1NzhmMTNjMmEzYWI5NTM1IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKICAgICAgICAgICAgICAgICAgICAiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9maXJlaG9sL25ldGRhdGEuZ2l0O3Byb3RvY29sPWh0dHBzIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWZpbGUtRG8tbm90LWJ1aWxkLWNvbnRyaWItZGlyLnBhdGNoIFwKICIKLVNSQ1JFViA9ICJmNWZhMzQ2YTE4OGU5MDZhOGYyY2NlM2MyY2YzMmE4OGNlODFjNjY2IgotUFYgPSAiMS42LjArZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiODllZDMwOTI1Mjk4MWRkZDUwZjY5N2ZkZTRmZTkzMDE5Y2IzZTY1MiIKK1BWID0gIjEuOC4wK2dpdCR7U1JDUFZ9IgogCiAjIHBhdGNoIHRvIGRpc2FibGUgdGltZW91dCBiZWNhdXNlIHRpbWVvdXQgYXJlIG5vdCBhdmFpbGFibGUgd2l0aCBhY3R1YWwgdmVyc2lvbgogIyBvZiBjb3JlLXV0aWxzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vd2VibWluL2ZpbGVzL2Rpc2FibGUtdmVyc2lvbi1jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vZmlsZXMvZGlzYWJsZS12ZXJzaW9uLWNoZWNrLnBhdGNoCmluZGV4IDFjYTE0ODAuLjlhYWQ4OTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vZmlsZXMvZGlzYWJsZS12ZXJzaW9uLWNoZWNrLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vZmlsZXMvZGlzYWJsZS12ZXJzaW9uLWNoZWNrLnBhdGNoCkBAIC03LDExICs3LDExIEBACiAKIFNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgogCi1kaWZmIC0tZ2l0IGEvd2VibWluL3dlYm1pbi1saWIucGwgYi93ZWJtaW4vd2VibWluLWxpYi5wbAotaW5kZXggNTdhMzdmNy4uODM4Yjk0NCAxMDA3NTUKLS0tLSBhL3dlYm1pbi93ZWJtaW4tbGliLnBsCi0rKysgYi93ZWJtaW4vd2VibWluLWxpYi5wbAotQEAgLTEwODYsMjggKzEwODYsMjggQEAKK0luZGV4OiB3ZWJtaW4tMS44NTAvd2VibWluL3dlYm1pbi1saWIucGwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZWJtaW4tMS44NTAub3JpZy93ZWJtaW4vd2VibWluLWxpYi5wbAorKysrIHdlYm1pbi0xLjg1MC93ZWJtaW4vd2VibWluLWxpYi5wbAorQEAgLTExMTIsMjggKzExMTIsMjggQEAgbXkgJW1pbmlzZXJ2OwogICZsb2FkX3RoZW1lX2xpYnJhcnkoKTsJIyBTbyB0aGF0IFVJIGZ1bmN0aW9ucyB3b3JrCiAgCiAgIyBOZWVkIE9TIHVwZ3JhZGUKQEAgLTYyLDQgKzYyLDMgQEAKICAKICAjIFBhc3N3b3JkIGNsb3NlIHRvIGV4cGlyeQogIG15ICR3YXJuX2RheXMgPSAkY29uZmlneyd3YXJuX2RheXMnfTsKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi9maWxlcy9leHBvcnRzLWxpYi5wbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vZmlsZXMvZXhwb3J0cy1saWIucGwucGF0Y2gKaW5kZXggMTc3ZDhhMy4uZDVkZmVkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi9maWxlcy9leHBvcnRzLWxpYi5wbC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vd2VibWluL2ZpbGVzL2V4cG9ydHMtbGliLnBsLnBhdGNoCkBAIC0xNCwxMSArMTQsMTEgQEAKICBleHBvcnRzL2V4cG9ydHMtbGliLnBsIHwgICAgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvZXhwb3J0cy9leHBvcnRzLWxpYi5wbCBiL2V4cG9ydHMvZXhwb3J0cy1saWIucGwKLWluZGV4IDIyODkxYzAuLjFjNjc0OTQgMTAwNzU1Ci0tLS0gYS9leHBvcnRzL2V4cG9ydHMtbGliLnBsCi0rKysgYi9leHBvcnRzL2V4cG9ydHMtbGliLnBsCi1AQCAtMjczLDcgKzI3Myw3IEBAIHJldHVybiAhJmhhc19jb21tYW5kKCJycGMubmZzZCIpICYmICEmaGFzX2NvbW1hbmQoIm5mc2QiKSAmJgorSW5kZXg6IHdlYm1pbi0xLjg1MC9leHBvcnRzL2V4cG9ydHMtbGliLnBsCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2VibWluLTEuODUwLm9yaWcvZXhwb3J0cy9leHBvcnRzLWxpYi5wbAorKysrIHdlYm1pbi0xLjg1MC9leHBvcnRzL2V4cG9ydHMtbGliLnBsCitAQCAtMzAxLDcgKzMwMSw3IEBAIHJldHVybiAhJmhhc19jb21tYW5kKCJycGMubmZzZCIpICYmICEmaGEKICBzdWIgcmVzdGFydF9tb3VudGQKICB7CiAgIyBUcnkgZXhwb3J0ZnMgLXIgZmlyc3QKQEAgLTI3LDYgKzI3LDMgQEAKICAJbXkgJG91dCA9ICZiYWNrcXVvdGVfbG9nZ2VkKCIkY29uZmlneydhcHBseV9jbWQnfSAyPiYxIDwvZGV2L251bGwiKTsKICAJaWYgKCEkPyAmJiAkb3V0ICF+IC9pbnZhbGlkfGVycm9yfGZhaWxlZC9pKSB7CiAgCQkjIExvb2tzIGxpa2UgaXQgd29ya2VkIQotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vZmlsZXMvaW5pdC1leGNsdWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi9maWxlcy9pbml0LWV4Y2x1ZGUucGF0Y2gKaW5kZXggNTU2MzIyNy4uNDIxMjkxNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi9maWxlcy9pbml0LWV4Y2x1ZGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi9maWxlcy9pbml0LWV4Y2x1ZGUucGF0Y2gKQEAgLTExLDExICsxMSwxMSBAQAogIGluaXQvaW5pdC1saWIucGwgfCAgNSArKystLQogIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9pbml0L2luZGV4LmNnaSBiL2luaXQvaW5kZXguY2dpCi1pbmRleCBkNDhiNzkzLi4zMGRhZmQ0IDEwMDc1NQotLS0tIGEvaW5pdC9pbmRleC5jZ2kKLSsrKyBiL2luaXQvaW5kZXguY2dpCi1AQCAtNDUsMTkgKzQ1LDIwIEBAIGVsc2lmICgkaW5pdF9tb2RlIGVxICJpbml0IiAmJiAkYWNjZXNzeydib290dXAnfSkgeworSW5kZXg6IHdlYm1pbi0xLjg1MC9pbml0L2luZGV4LmNnaQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYm1pbi0xLjg1MC5vcmlnL2luaXQvaW5kZXguY2dpCisrKysgd2VibWluLTEuODUwL2luaXQvaW5kZXguY2dpCitAQCAtNDUsMTkgKzQ1LDIwIEBAIGVsc2lmICgkaW5pdF9tb2RlIGVxICJpbml0IiAmJiAkYWNjZXNzeycKICAJCQkJCSAgICAgOiAiJGNvbmZpZ3snaW5pdF9kaXInfS8kYWNbMF0iKTsKICAJCX0KICAJQHJ1bmxldmVscyA9ICZsaXN0X3J1bmxldmVscygpOwpAQCAtNDksMTEgKzQ5LDExIEBACiAgCiAgCSMgRm9yIGVhY2ggYWN0aW9uLCBsb29rIGF0IC9ldGMvcmMqLmQvKiBmaWxlcyB0byBzZWUgaWYgaXQgaXMgCiAgCSMgc3RhcnRlZCBhdCBib290Ci1kaWZmIC0tZ2l0IGEvaW5pdC9pbml0LWxpYi5wbCBiL2luaXQvaW5pdC1saWIucGwKLWluZGV4IGVhZDIxZWQuLmI0MTc5NGIgMTAwNzU1Ci0tLS0gYS9pbml0L2luaXQtbGliLnBsCi0rKysgYi9pbml0L2luaXQtbGliLnBsCi1AQCAtMTE5LDggKzExOSw5IEBAIExpc3QgYm9vdCB0aW1lIGFjdGlvbiBuYW1lcyBmcm9tIGluaXQuZCwgc3VjaCBhcyBodHRwZCBhbmQgY3Jvbi4KK0luZGV4OiB3ZWJtaW4tMS44NTAvaW5pdC9pbml0LWxpYi5wbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYm1pbi0xLjg1MC5vcmlnL2luaXQvaW5pdC1saWIucGwKKysrKyB3ZWJtaW4tMS44NTAvaW5pdC9pbml0LWxpYi5wbAorQEAgLTEyNCw4ICsxMjQsOSBAQCBMaXN0IGJvb3QgdGltZSBhY3Rpb24gbmFtZXMgZnJvbSBpbml0LmQsCiAgPWN1dAogIHN1YiBsaXN0X2FjdGlvbnMKICB7CkBAIC02NCw3ICs2NCw3IEBACiAgb3BlbmRpcihESVIsICRkaXIpOwogIGZvcmVhY2ggJGYgKHNvcnQgeyBsYygkYSkgY21wIGxjKCRiKSB9IHJlYWRkaXIoRElSKSkgewogIAlpZiAoJGYgZXEgIi4iIHx8ICRmIGVxICIuLiIgfHwgJGYgPX4gL1wuYmFrJC8gfHwgJGYgZXEgImZ1bmN0aW9ucyIgfHwKLUBAIC0xMjgsNyArMTI5LDcgQEAgZm9yZWFjaCAkZiAoc29ydCB7IGxjKCRhKSBjbXAgbGMoJGIpIH0gcmVhZGRpcihESVIpKSB7CitAQCAtMTMzLDcgKzEzNCw3IEBAIGZvcmVhY2ggJGYgKHNvcnQgeyBsYygkYSkgY21wIGxjKCRiKSB9IHIKICAJICAgIC1kICIkZGlyLyRmIiB8fCAkZiA9fiAvXC5zd3AkLyB8fCAkZiBlcSAic2tlbGV0b24iIHx8CiAgCSAgICAkZiA9fiAvXC5sb2NrJC8gfHwgJGYgPX4gL1wuZHBrZy0ob2xkfGRpc3QpJC8gfHwKICAJICAgICRmID1+IC9eXC5kZXBlbmRcLi8gfHwgJGYgZXEgJy5sZWdhY3ktYm9vdG9yZGVyaW5nJyB8fApAQCAtNzMsNiArNzMsMyBAQAogIAlpZiAoQHN0YnVmID0gc3RhdCgiJGRpci8kZiIpKSB7CiAgCQlwdXNoKEBydiwgIiRmICRzdGJ1ZlsxXSIpOwogIAkJfQotLS0KLTIuMC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vZmlsZXMvbmV0LWdlbmVyaWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vd2VibWluL2ZpbGVzL25ldC1nZW5lcmljLnBhdGNoCmluZGV4IDdkMjBhZmYuLjU1NDkzOTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vZmlsZXMvbmV0LWdlbmVyaWMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi9maWxlcy9uZXQtZ2VuZXJpYy5wYXRjaApAQCAtMyw5ICszLDExIEBACiAjIFVwc3RyZWFtLXN0YXR1czogTm90IGFwcHJvcHJpYXRlIFtjb25maWddCiAjCiAjIFNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotLS0tIHdlYm1pbi0xLjU3MC5vcmlnL25ldC9tb2R1bGUuaW5mbwotKysrIHdlYm1pbi0xLjU3MC9uZXQvbW9kdWxlLmluZm8KLUBAIC0xMSw3ICsxMSw3IEBAIGRlc2Nfa29fS1IuVVRGLTg964Sk7Yq47JuM7YGsIOq1rOyEsQorSW5kZXg6IHdlYm1pbi0xLjg1MC9uZXQvbW9kdWxlLmluZm8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZWJtaW4tMS44NTAub3JpZy9uZXQvbW9kdWxlLmluZm8KKysrKyB3ZWJtaW4tMS44NTAvbmV0L21vZHVsZS5pbmZvCitAQCAtMTQsNyArMTQsNyBAQCBkZXNjX2tvX0tSLlVURi04PeuEpO2KuOybjO2BrCDqtazshLEKICBuYW1lPU5ldHdvcmtpbmcKICBkZXNjX3RyPUHwIFlhcP1sYW5k/XJtYXP9CiAgZGVzY19kZT1OZXR6d2Vya2tvbmZpZ3VyYXRpb24KQEAgLTE0LDggKzE2LDEwIEBACiAgZGVzY19zaz1Lb25maWd1cuFjaWEgc2lldGUKICBkZXNjX3poX0NOPc34wufF5NbDCiAgcmlzaz1sb3cgbWVkaXVtIGhpZ2gKK0luZGV4OiB3ZWJtaW4tMS44NTAvbmV0L2dlbmVyaWMtbGludXgtbGliLnBsCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgd2VibWluLTEuNTcwL25ldC9nZW5lcmljLWxpbnV4LWxpYi5wbAorKysrIHdlYm1pbi0xLjg1MC9uZXQvZ2VuZXJpYy1saW51eC1saWIucGwKIEBAIC0wLDAgKzEsMiBAQAogK2RvICdsaW51eC1saWIucGwnOwogKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi9maWxlcy9uZnMtZXhwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi9maWxlcy9uZnMtZXhwb3J0LnBhdGNoCmluZGV4IGMxN2UzYjIuLjQyNmQ2MzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vZmlsZXMvbmZzLWV4cG9ydC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vd2VibWluL2ZpbGVzL25mcy1leHBvcnQucGF0Y2gKQEAgLTEyLDExICsxMiwxMSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBZdSBLZSA8a2UueXVAaW50ZWwuY29tPgogCi1kaWZmIC0tZ2l0IGEvZXhwb3J0cy9zYXZlX2V4cG9ydC5jZ2kgYi9leHBvcnRzL3NhdmVfZXhwb3J0LmNnaQotaW5kZXggM2JjMmY5Ny4uM2U2MDI5OCAxMDA3NTUKLS0tLSBhL2V4cG9ydHMvc2F2ZV9leHBvcnQuY2dpCi0rKysgYi9leHBvcnRzL3NhdmVfZXhwb3J0LmNnaQotQEAgLTQwLDcgKzQwLDcgQEAgZWxzZSB7CitJbmRleDogd2VibWluLTEuODUwL2V4cG9ydHMvc2F2ZV9leHBvcnQuY2dpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2VibWluLTEuODUwLm9yaWcvZXhwb3J0cy9zYXZlX2V4cG9ydC5jZ2kKKysrKyB3ZWJtaW4tMS44NTAvZXhwb3J0cy9zYXZlX2V4cG9ydC5jZ2kKK0BAIC01MCw3ICs1MCw3IEBAIGVsc2UgewogIAkJCSZlcnJvcigmdGV4dCgnc2F2ZV9lbmV0bWFzaycsICRpbnsnbmV0bWFzayd9KSk7CiAgCQkkZXhweydob3N0J30gPSAkaW57J25ldHdvcmsnfS4iLyIuJGlueyduZXRtYXNrJ307CiAgCQl9CkBAIC0yNSw5ICsyNSw5IEBACiAgCWVsc2UgewogIAkJJGlueydob3N0J30gPX4gL1wqLyB8fCAmdG9faXBhZGRyZXNzKCRpbnsnaG9zdCd9KSB8fAogIAkJCSZlcnJvcigmdGV4dCgnc2F2ZV9laG9zdCcsICRpbnsnaG9zdCd9KSk7Ci1AQCAtNzAsNiArNzAsMTEgQEAgZWxzZSB7Ci0gCi0gCWRlbGV0ZSgkb3B0c3snbm9fc3VidHJlZV9jaGVjayd9KTsgZGVsZXRlKCRvcHRzeydzdWJ0cmVlX2NoZWNrJ30pOworQEAgLTg3LDYgKzg3LDExIEBAIGVsc2UgeworIAlkZWxldGUoJG9wdHN7J25vX3N1YnRyZWVfY2hlY2snfSk7CisgCWRlbGV0ZSgkb3B0c3snc3VidHJlZV9jaGVjayd9KTsKICAJJG9wdHN7J25vX3N1YnRyZWVfY2hlY2snfSA9ICIiIGlmICgkaW57J25vX3N1YnRyZWVfY2hlY2snfSk7CiArCWlmICgkaW57J25vX3N1YnRyZWVfY2hlY2snfSkgewogKwkJJG9wdHN7J25vX3N1YnRyZWVfY2hlY2snfSA9ICIiOwpAQCAtMzUsNSArMzUsNSBAQAogKwkJJG9wdHN7J3N1YnRyZWVfY2hlY2snfSA9ICIiOwogKwl9CiAgCi0gCWRlbGV0ZSgkb3B0c3snbm9oaWRlJ30pOyBkZWxldGUoJG9wdHN7J2hpZGUnfSk7Ci0gCSRvcHRzeydub2hpZGUnfSA9ICIiIGlmICgkaW57J25vaGlkZSd9KTsKKyAJZGVsZXRlKCRvcHRzeydub2hpZGUnfSk7CisgCWRlbGV0ZSgkb3B0c3snaGlkZSd9KTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vd2VibWluXzEuODUwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi93ZWJtaW5fMS44NTAuYmIKaW5kZXggYWU4OGViNi4uY2U5YmM5MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi93ZWJtaW5fMS44NTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi93ZWJtaW5fMS44NTAuYmIKQEAgLTI0LDYgKzI0LDkgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJjZDZlZTk4ZjczZjk0MTg1NjIxOTc2NzViOTUyZDgxYiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNjZjYWE5ZTRjYjUwZDU0NDdiYzhhY2ViNzk4OWQyMjg0ZGRlMDYwMjc4ZjQwNGIxM2UxNzFjN2NlMTY5MGUxIgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy53ZWJtaW4uY29tL2Rvd25sb2FkLmh0bWwiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ3ZWJtaW4tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhci5neiIKKwogaW5oZXJpdCBwZXJsbmF0aXZlIHVwZGF0ZS1yYy5kIHN5c3RlbWQKIAogZG9fY29uZmlndXJlKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvUkVBRE1FCmluZGV4IDMzNjc3OTcuLjc0MzFlOGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL1JFQURNRQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9SRUFETUUKQEAgLTEsMTEgKzEsMTEgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vZS1jb3JlLmdpdAotYnJhbmNoOiByb2NrbworYnJhbmNoOiBtYXN0ZXIKIHJldmlzaW9uOiBIRUFECiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS5naXQKLWJyYW5jaDogcm9ja28KK2JyYW5jaDogbWFzdGVyCiByZXZpc2lvbjogSEVBRAogbWV0YS14ZmNlIGRlcGVuZHMgb24gbWV0YS1vZSwgbWV0YS1nbm9tZSBhbmQgbWV0YS1tdWx0aW1lZGlhIGluIHRoaXMgcmVwb3NpdG9yeS4KIApAQCAtMTQsMTAgKzE0LDkgQEAKIAogQkJNQVNLID0gIm1ldGEteGZjZS9yZWNpcGVzLW11bHRpbWVkaWEiCiAKLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS14ZmNlXVtyb2Nrb10nIGluIHRoZSBzdWJqZWN0JworU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLXhmY2VdJyBpbiB0aGUgc3ViamVjdCcKIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNpbmcgc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEteGZjZV1bcm9ja29dW1BBVENIJworJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLXhmY2VdW1BBVENIJwogCi1yb2NrbyBCcmFuY2ggTWFpbnRhaW5lcjoKLUFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CitMYXllciBtYWludGFpbmVyOiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jb25mL2xheWVyLmNvbmYKaW5kZXggYWQyNWRjYi4uYmVlOGU3MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvY29uZi9sYXllci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTgsNiArMTgsOCBAQAogTEFZRVJERVBFTkRTX3hmY2UtbGF5ZXIgKz0gIm11bHRpbWVkaWEtbGF5ZXIiCiBMQVlFUkRFUEVORFNfeGZjZS1sYXllciArPSAibWV0YS1weXRob24iCiAKK0xBWUVSU0VSSUVTX0NPTVBBVF94ZmNlLWxheWVyID0gInN1bW8iCisKIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIiBcCiAgIHhmY2U0LXNlc3Npb24tPm1hY2hpbmUtaG9zdCBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbWVudWxpYnJlL2ZpbGVzLzAwMDEtYWRkX2xhdW5jaGVyLUV4aXQtZWFybHktaWYtbm8tcm93LWlzLXNlbGVjdGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL21lbnVsaWJyZS9maWxlcy8wMDAxLWFkZF9sYXVuY2hlci1FeGl0LWVhcmx5LWlmLW5vLXJvdy1pcy1zZWxlY3RlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmIyZGZjOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbWVudWxpYnJlL2ZpbGVzLzAwMDEtYWRkX2xhdW5jaGVyLUV4aXQtZWFybHktaWYtbm8tcm93LWlzLXNlbGVjdGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSAxMDYwZTdhYzhhNjNiOTNkNTYwMDY3MThmMGU5YjFkOTM4MmIyMjI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogTW9uLCAzMSBPY3QgMjAxNiAwODozMzoxNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBhZGRfbGF1bmNoZXI6IEV4aXQgZWFybHkgaWYgbm8gcm93IGlzIHNlbGVjdGVkCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVN0b2xlbiBmcm9tIFsxXQotCi1bMV0gaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvY2dpdC9ycG1zL21lbnVsaWJyZS5naXQvdHJlZS9tZW51bGlicmUtYWRkLWxhdW5jaGVyLW5vbmUtY2hlY2sucGF0Y2gKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIG1lbnVsaWJyZS9NZW51bGlicmVBcHBsaWNhdGlvbi5weSB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL21lbnVsaWJyZS9NZW51bGlicmVBcHBsaWNhdGlvbi5weSBiL21lbnVsaWJyZS9NZW51bGlicmVBcHBsaWNhdGlvbi5weQotaW5kZXggZTIzNDgwMC4uYWM3M2IwMyAxMDA2NDQKLS0tLSBhL21lbnVsaWJyZS9NZW51bGlicmVBcHBsaWNhdGlvbi5weQotKysrIGIvbWVudWxpYnJlL01lbnVsaWJyZUFwcGxpY2F0aW9uLnB5Ci1AQCAtMTQxOCw2ICsxNDE4LDEwIEBAIGNsYXNzIE1lbnVsaWJyZVdpbmRvdyhHdGsuQXBwbGljYXRpb25XaW5kb3cpOgotICAgICAgICAgbW9kZWwsIHBhcmVudF9kYXRhID0gc2VsZi50cmVldmlldy5nZXRfcGFyZW50X3Jvd19kYXRhKCkKLSAgICAgICAgIG1vZGVsLCByb3dfZGF0YSA9IHNlbGYudHJlZXZpZXcuZ2V0X3NlbGVjdGVkX3Jvd19kYXRhKCkKLSAKLSsgICAgICAgICMgRXhpdCBlYXJseSBpZiBubyByb3cgaXMgc2VsZWN0ZWQKLSsgICAgICAgIGlmIG5vdCByb3dfZGF0YToKLSsgICAgICAgICAgICByZXR1cm4KLSsKLSAgICAgICAgICMgQ3VycmVudGx5IHNlbGVjdGVkIGl0ZW0gaXMgYSBkaXJlY3RvcnksIHRha2UgaXRzIGNhdGVnb3JpZXMuCi0gICAgICAgICBpZiByb3dfZGF0YVsyXSA9PSBNZW51SXRlbVR5cGVzLkRJUkVDVE9SWToKLSAgICAgICAgICAgICBzZWxmLnRyZWV2aWV3LmFkZF9jaGlsZChuZXdfcm93X2RhdGEpCi0tLSAKLTIuNS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9tZW51bGlicmUvZmlsZXMvMDAwMi1zZXR1cC5weS1hdm9pZC11c3Itc2hhcmUtc2hhcmUtcGF0aHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbWVudWxpYnJlL2ZpbGVzLzAwMDItc2V0dXAucHktYXZvaWQtdXNyLXNoYXJlLXNoYXJlLXBhdGhzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjNkNGRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9tZW51bGlicmUvZmlsZXMvMDAwMi1zZXR1cC5weS1hdm9pZC11c3Itc2hhcmUtc2hhcmUtcGF0aHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDk5Nzg4YjQ1NTc1NDNjNDkwNDkzY2UxYjgyNzUzOGM0OTE0MmMyNWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBNb24sIDMxIE9jdCAyMDE2IDA5OjA4OjUxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5OiBhdm9pZCAvdXNyL3NoYXJlL3NoYXJlIHBhdGhzCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gc2V0dXAucHkgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggNWZjMjM3ZC4uYzRmYmY3YyAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTE0Myw3ICsxNDMsNyBAQCBjbGFzcyBJbnN0YWxsQW5kVXBkYXRlRGF0YURpcmVjdG9yeShEaXN0VXRpbHNFeHRyYS5hdXRvLmluc3RhbGxfYXV0byk6Ci0gCi0gICAgICAgICBpZiBzZWxmLnJvb3Q6Ci0gICAgICAgICAgICAgdGFyZ2V0X2RhdGEgPSBvcy5wYXRoLnJlbHBhdGgoc2VsZi5pbnN0YWxsX2RhdGEsIHNlbGYucm9vdCkgKyBvcy5zZXAKLS0gICAgICAgICAgICB0YXJnZXRfcGtnZGF0YSA9IG9zLnBhdGguam9pbih0YXJnZXRfZGF0YSwgJ3NoYXJlJywgJ21lbnVsaWJyZScsICcnKQotKyAgICAgICAgICAgIHRhcmdldF9wa2dkYXRhID0gb3MucGF0aC5qb2luKHRhcmdldF9kYXRhLCAnbWVudWxpYnJlJywgJycpCi0gICAgICAgICAgICAgdGFyZ2V0X3NjcmlwdHMgPSBvcy5wYXRoLmpvaW4oc2VsZi5pbnN0YWxsX3NjcmlwdHMsICcnKQotIAotICAgICAgICAgICAgIGRhdGFfZGlyID0gb3MucGF0aC5qb2luKHNlbGYucHJlZml4LCAnc2hhcmUnLCAnbWVudWxpYnJlJywgJycpCi1AQCAtMTUyLDcgKzE1Miw3IEBAIGNsYXNzIEluc3RhbGxBbmRVcGRhdGVEYXRhRGlyZWN0b3J5KERpc3RVdGlsc0V4dHJhLmF1dG8uaW5zdGFsbF9hdXRvKToKLSAgICAgICAgICAgICAjIC0tdXNlciBpbnN0YWxsCi0gICAgICAgICAgICAgc2VsZi5yb290ID0gJycKLSAgICAgICAgICAgICB0YXJnZXRfZGF0YSA9IG9zLnBhdGgucmVscGF0aChzZWxmLmluc3RhbGxfZGF0YSkgKyBvcy5zZXAKLS0gICAgICAgICAgICB0YXJnZXRfcGtnZGF0YSA9IG9zLnBhdGguam9pbih0YXJnZXRfZGF0YSwgJ3NoYXJlJywgJ21lbnVsaWJyZScsICcnKQotKyAgICAgICAgICAgIHRhcmdldF9wa2dkYXRhID0gb3MucGF0aC5qb2luKHRhcmdldF9kYXRhLCAnbWVudWxpYnJlJywgJycpCi0gICAgICAgICAgICAgdGFyZ2V0X3NjcmlwdHMgPSBvcy5wYXRoLmpvaW4oc2VsZi5pbnN0YWxsX3NjcmlwdHMsICcnKQotIAotICAgICAgICAgICAgICMgVXNlIGFic29sdXRlIHBhdGhzCi0tLSAKLTIuNS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9tZW51bGlicmUvZmlsZXMvMDAwMy1NZW51bGlicmVYZGcucHktZml4LWxvYWRpbmctb2YtZGVza3RvcC1maWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9tZW51bGlicmUvZmlsZXMvMDAwMy1NZW51bGlicmVYZGcucHktZml4LWxvYWRpbmctb2YtZGVza3RvcC1maWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU5MjA4OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbWVudWxpYnJlL2ZpbGVzLzAwMDMtTWVudWxpYnJlWGRnLnB5LWZpeC1sb2FkaW5nLW9mLWRlc2t0b3AtZmlsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDkwMDk4ZDgzNWI2MmIzOGFjMzk2ZDU1YjgwYTY4NDc3MGRiYWFjZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBNb24sIDMxIE9jdCAyMDE2IDE1OjUwOjUyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1lbnVsaWJyZVhkZy5weTogZml4IGxvYWRpbmcgb2YgZGVza3RvcCBmaWxlcwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1maXhlczoKLXwgVW5pY29kZURlY29kZUVycm9yOiAnYXNjaWknIGNvZGVjIGNhbid0IGRlY29kZSBieWV0IDB4ZDkgaW4gcG9zaXRpb24gMjM1OiBvcmRpbmFsIG5vdCBpbiByYW5nZSgxMjgpCi0KLWFuZCBpbmZvcm1hdGlvbiBkaXNwbGF5IG5vdCBwcm9wZXJseSBmaWxsZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBtZW51bGlicmUvTWVudWxpYnJlWGRnLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWVudWxpYnJlL01lbnVsaWJyZVhkZy5weSBiL21lbnVsaWJyZS9NZW51bGlicmVYZGcucHkKLWluZGV4IGUwNGM1ZTYuLjE0YjI1OTMgMTAwNjQ0Ci0tLS0gYS9tZW51bGlicmUvTWVudWxpYnJlWGRnLnB5Ci0rKysgYi9tZW51bGlicmUvTWVudWxpYnJlWGRnLnB5Ci1AQCAtNzQsNyArNzQsNyBAQCBjbGFzcyBNZW51bGlicmVEZXNrdG9wRW50cnk6Ci0gCi0gICAgIGRlZiBsb2FkX3Byb3BlcnRpZXMoc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICAgIiIiTG9hZCB0aGUgcHJvcGVydGllcy4iIiIKLS0gICAgICAgIGlucHV0X2ZpbGUgPSBvcGVuKGZpbGVuYW1lKQotKyAgICAgICAgaW5wdXRfZmlsZSA9IG9wZW4oZmlsZW5hbWUsICdydCcsIGVuY29kaW5nPSd1dGYtOCcpCi0gICAgICAgICBzZWxmLmxvYWRfcHJvcGVydGllc19mcm9tX3RleHQoaW5wdXRfZmlsZS5yZWFkKCkpCi0gICAgICAgICBpbnB1dF9maWxlLmNsb3NlKCkKLSAKLS0tIAotMi41LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL21lbnVsaWJyZS9tZW51bGlicmVfMi4xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbWVudWxpYnJlL21lbnVsaWJyZV8yLjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjllNTJmZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbWVudWxpYnJlL21lbnVsaWJyZV8yLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkFuIGFkdmFuY2VkIG1lbnUgZWRpdG9yIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L21lbnVsaWJyZSIKLVNFQ1RJT04gPSAieDExL2dyYXBoaWNzIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1ERVBFTkRTID0gInB5dGhvbjMtZGlzdHV0aWxzLWV4dHJhLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUiCi0KLWluaGVyaXQgZGlzdHV0aWxzMyBndGstaWNvbi1jYWNoZQotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cHM6Ly9sYXVuY2hwYWQubmV0L21lbnVsaWJyZS8yLjEvJHtQVn0vK2Rvd25sb2FkLyR7UE59LSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovLzAwMDEtYWRkX2xhdW5jaGVyLUV4aXQtZWFybHktaWYtbm8tcm93LWlzLXNlbGVjdGVkLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1zZXR1cC5weS1hdm9pZC11c3Itc2hhcmUtc2hhcmUtcGF0aHMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLU1lbnVsaWJyZVhkZy5weS1maXgtbG9hZGluZy1vZi1kZXNrdG9wLWZpbGVzLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxOWQ5ZDMzMzczMjJlYjU1MTM0NTRiYjhjZGZiNzM5YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZGQ2OTc0MDExOTkwMmYxYjFmOGM3ODMxMTU1ZjQ0Mjg0MDM3OTJhMGE2YzQyODdiY2JiMzk1YzRlNzFmYjMxIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBzZWQgLWkgJ3M6JHtEfTo6ZycgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL21lbnVsaWJyZS5kZXNrdG9wCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zIFwKLSAgICAke2RhdGFkaXJ9L21lbnVsaWJyZSBcCi0gICAgJHtkYXRhZGlyfS9pY29ucyBcCi0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgIGd0ayszIFwKLSAgICBweXRob24zLXB5Z29iamVjdCBcCi0gICAgZ25vbWUtbWVudXMzIFwKLSAgICBweXRob24zLXVuaXhhZG1pbiBcCi0gICAgcHl0aG9uMy1wc3V0aWwgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL21lbnVsaWJyZS9tZW51bGlicmVfMi4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbWVudWxpYnJlL21lbnVsaWJyZV8yLjEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWYzNDcxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL21lbnVsaWJyZS9tZW51bGlicmVfMi4xLjUuYmIKQEAgLTAsMCArMSw0MSBAQAorREVTQ1JJUFRJT04gPSAiQW4gYWR2YW5jZWQgbWVudSBlZGl0b3IiCitIT01FUEFHRSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvbWVudWxpYnJlIgorU0VDVElPTiA9ICJ4MTEvZ3JhcGhpY3MiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK0RFUEVORFMgPSAiIFwKKyAgICBweXRob24zLWRpc3R1dGlscy1leHRyYS1uYXRpdmUgXAorICAgIGludGx0b29sLW5hdGl2ZSBcCisiCisKK2luaGVyaXQgZGlzdHV0aWxzMyBndGstaWNvbi1jYWNoZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvbWVudWxpYnJlLzIuMS8ke1BWfS8rZG93bmxvYWQvJHtQTn0tJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImVmYzdlZGI0OWJiMGU1ZmVhNDllMTU4YjQwNTczMzM0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVmMDViMjcyMmJhYjJhY2I3MDcwZDZjOGVkMGU3YmQ1OGJkNGE0NTQwYmY0OThhZjllODg5OTQ0ZjlkYTA4YjUiCisKK2RvX2NvbXBpbGUoKSB7Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHNlZCAtaSAnczoke0R9OjpnJyAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvbWVudWxpYnJlLmRlc2t0b3AKKyAgICBzZWQgLWkgJ3M6c2hhcmUvc2hhcmU6c2hhcmU6ZycgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L21lbnVsaWJyZV9saWIvbWVudWxpYnJlY29uZmlnLnB5Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zIFwKKyAgICAke2RhdGFkaXJ9L21lbnVsaWJyZSBcCisgICAgJHtkYXRhZGlyfS9pY29ucyBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgIGd0ayszIFwKKyAgICBndGtzb3VyY2V2aWV3MyBcCisgICAgcHl0aG9uMy1weWdvYmplY3QgXAorICAgIGdub21lLW1lbnVzMyBcCisgICAgcHl0aG9uMy11bml4YWRtaW4gXAorICAgIHB5dGhvbjMtcHN1dGlsIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94YXJjaGl2ZXIveGFyY2hpdmVyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94YXJjaGl2ZXIveGFyY2hpdmVyX2dpdC5iYgppbmRleCBlMjc1YWYwLi5hMjdjOGY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGFyY2hpdmVyL3hhcmNoaXZlcl9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hhcmNoaXZlci94YXJjaGl2ZXJfZ2l0LmJiCkBAIC0xMiw3ICsxMiw5IEBACiBQViA9ICIwLjUuMyIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgeGZjZS1naXQgZ2V0dGV4dCBwa2djb25maWcgYXV0b3Rvb2xzIGd0ay1pY29uLWNhY2hlCitpbmhlcml0IHhmY2UtZ2l0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scyBndGstaWNvbi1jYWNoZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogIyBpbnN0YWxsIHRhcCBmaWxlcyBmb3IgdGh1bmFyLWFyY2hpdmUtcGx1Z2luIGluICR7bGliZGlyfS90aHVuYXItYXJjaGl2ZS1wbHVnaW4KIEVYVFJBX09FQ09ORiArPSAiLS1saWJleGVjZGlyPSR7bGliZGlyfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlLXBvbGtpdC9maWxlcy8wMDAxLWZpeC1OYW1lLUNvbW1lbnQtZmllbGRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2UtcG9sa2l0L2ZpbGVzLzAwMDEtZml4LU5hbWUtQ29tbWVudC1maWVsZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3MjI0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlLXBvbGtpdC9maWxlcy8wMDAxLWZpeC1OYW1lLUNvbW1lbnQtZmllbGRzLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gZmIxZjgzYzA0ZGQ1MjYyODk3YjA5ZTYwZmE4YjM5MDkwZDBkNDYxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJleCBEaWV0ZXIgPHJkaWV0ZXJAbWF0aC51bmwuZWR1PgorRGF0ZTogVGh1LCAxMiBOb3YgMjAxNSAxMzo1MzowMyAtMDYwMAorU3ViamVjdDogW1BBVENIXSBmaXggTmFtZS9Db21tZW50IGZpZWxkcworCitWYWxpZGF0ZSBhcyBhIHZhbGlkIC5kZXNrdG9wIGZpbGUgcGVyCitodHRwOi8vc3RhbmRhcmRzLmZyZWVkZXNrdG9wLm9yZy9kZXNrdG9wLWVudHJ5LXNwZWMvbGF0ZXN0LworCitTZWUgYWxzbyBpc3N1ZSAjMgorCitVcHN0cmVhbS1TdGF0dXM6IEFwcGxpZWQgWzFdCisKK1sxXSBodHRwczovL2dpdGh1Yi5jb20vbmNvcGEveGZjZS1wb2xraXQvY29tbWl0L2ZiMWY4M2MwNGRkNTI2Mjg5N2IwOWU2MGZhOGIzOTA5MGQwZDQ2MTkKKy0tLQorIHhmY2UtcG9sa2l0LmRlc2t0b3AuaW4gfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEveGZjZS1wb2xraXQuZGVza3RvcC5pbiBiL3hmY2UtcG9sa2l0LmRlc2t0b3AuaW4KK2luZGV4IDg1NzU4OTYuLmRkOWYwOWMgMTAwNjQ0CistLS0gYS94ZmNlLXBvbGtpdC5kZXNrdG9wLmluCisrKysgYi94ZmNlLXBvbGtpdC5kZXNrdG9wLmluCitAQCAtMSw3ICsxLDcgQEAKKyBbRGVza3RvcCBFbnRyeV0KKyBUeXBlPUFwcGxpY2F0aW9uCistX05hbWU9WEZDRSBQb2xLaXQKKy1fQ29tbWVudD1Qb2xpY3lraXQgQXV0aGVudGljYXRpb24gQWdlbnQKKytOYW1lPVhGQ0UgUG9sS2l0CisrQ29tbWVudD1Qb2xpY3lraXQgQXV0aGVudGljYXRpb24gQWdlbnQKKyBFeGVjPUB4ZmNlX3BvbGtpdF9saWJleGVjZGlyQC94ZmNlLXBvbGtpdAorIEljb249Z3RrLWRpYWxvZy1hdXRoZW50aWNhdGlvbgorIE5vdFNob3dJbj1HTk9NRTtLREU7CistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZS1wb2xraXQveGZjZS1wb2xraXRfMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2UtcG9sa2l0L3hmY2UtcG9sa2l0XzAuMi5iYgppbmRleCAxZmI0YTViLi41NGJmN2M3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZS1wb2xraXQveGZjZS1wb2xraXRfMC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlLXBvbGtpdC94ZmNlLXBvbGtpdF8wLjIuYmIKQEAgLTYsNiArNiw5IEBACiAKIGluaGVyaXQgeGZjZS1hcHAKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL25jb3BhLyR7QlBOfS5naXQiCitTUkNfVVJJID0gIiBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9uY29wYS8ke0JQTn0uZ2l0IFwKKyAgICBmaWxlOi8vMDAwMS1maXgtTmFtZS1Db21tZW50LWZpZWxkcy5wYXRjaCBcCisiCiBTUkNSRVYgPSAiNmFkMWVlODMzYzllMjJlNGRkNzJhOGY3ZDU0NTYyZDA0Njk2NTI4MyIKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtbm90aWZ5ZC94ZmNlNC1ub3RpZnlkXzAuMy42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LW5vdGlmeWQveGZjZTQtbm90aWZ5ZF8wLjMuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWMyMzYwYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtbm90aWZ5ZC94ZmNlNC1ub3RpZnlkXzAuMy42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJFYXNpbHkgdGhlbWFibGUgbm90aWZpY2F0aW9uIGRhZW1vbiB3aXRoIHRyYW5zcGFyZW5jeSBlZmZlY3RzIgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvYXBwbGljYXRpb25zL3hmY2U0LW5vdGlmeWQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi1ERVBFTkRTID0gImxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIHhmY29uZiBndGsrIGRidXMgZGJ1cy1nbGliIGxpYm5vdGlmeSBcCi0gICAgZGJ1cy1nbGliLW5hdGl2ZSBcCi0iCi0KLWluaGVyaXQgeGZjZS1hcHAKLQotU1JDX1VSSVttZDVzdW1dID0gIjE5ZTYwMmZhNWUzM2FmYWY3NTYzZjA2OTI2MWFlMWRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY0Y2E3YzBkYWRkM2Q0Y2RmOGNkM2M4YWU2MGNjZWE3N2I4Y2Y0MDlmODUxNzE2MTc5NjM2NGViMWQ3NjZjZjkiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBta2RpciAtcCB4ZmNlNC1ub3RpZnlkCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSAgICAke2xpYmRpcn0veGZjZTQvbm90aWZ5ZCBcCi0gICAgJHtkYXRhZGlyfS90aGVtZXMgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1ub3RpZnlkL3hmY2U0LW5vdGlmeWRfMC40LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtbm90aWZ5ZC94ZmNlNC1ub3RpZnlkXzAuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZWM1MWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtbm90aWZ5ZC94ZmNlNC1ub3RpZnlkXzAuNC4yLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiRWFzaWx5IHRoZW1hYmxlIG5vdGlmaWNhdGlvbiBkYWVtb24gd2l0aCB0cmFuc3BhcmVuY3kgZWZmZWN0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL2FwcGxpY2F0aW9ucy94ZmNlNC1ub3RpZnlkIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorREVQRU5EUyA9ICIgXAorICAgIGRidXMgXAorICAgIGRidXMtZ2xpYiBcCisgICAgZGJ1cy1nbGliLW5hdGl2ZSBcCisgICAgbGlibm90aWZ5IFwKKyAgICBsaWJ4ZmNlNHV0aWwgXAorICAgIGxpYnhmY2U0dWkgXAorICAgIHhmY29uZiBcCisgICAgeGZjZTQtcGFuZWwgXAorIgorCitpbmhlcml0IHhmY2UtYXBwCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlY2I5MzBlZjZhZTZlMWYzMTBhNWFmZTVmNjM4ZWZmOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmYyOGFmNDdmZGZiNDFkYjg0YmQwMDNmMGQ3NmY1ZjRhYmYyMTM3ZDFlMjdlOWQzNzhmMDYzYmI4ZjgyMzU2IgorCisjIEF2b2lkIHRyb3VibGUgd2l0aCBvdGhlciBkZXNrdG9wcyBlLmcgS0RFIHdoaWNoIGFsc28gc2hpcHMgZGJ1cyBzZXJ2aWNlIG5hbWVkCisjIG9yZy5mcmVlZGVza3RvcC5Ob3RpZmljYXRpb25zCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRidXMtc3RhcnQtZGFlbW9uIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgbWtkaXIgLXAgeGZjZTQtbm90aWZ5ZCB4ZmNlNC1ub3RpZnlkLWNvbmZpZworfQorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCisgICAgJHtkYXRhZGlyfS94ZmNlNCBcCisgICAgJHtkYXRhZGlyfS90aGVtZXMgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2xpYmRpcn0veGZjZTQgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDJlZGI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVNVTU1BUlkgPSAiVGVybWluYWwgZW11bGF0b3IgZm9yIHRoZSBYZmNlIGRlc2t0b3AgZW52aXJvbm1lbnQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1ERVBFTkRTID0gImdsaWItMi4wIGd0ayszIHZ0ZSBsaWJ4ZmNlNHVpIgotCi1pbmhlcml0IHhmY2UtYXBwCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3hmY2U0IFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dub21lLWNvbnRyb2wtY2VudGVyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTJmNWEzMzY2ZTMwZjVmODIzOGQ4MjUwZjczMGI2YWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmMyYTU2MDQwOWEwZjBiNjY2ZDFjNTU3ZTk5MTc0OGI5ODZlYzI3NTcyYTQ1YWU4OGIwZWU1YTQ4MGQ4ODFkNyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguNy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC43LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYzMGFiYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguNy4zLmJiCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgPSAiVGVybWluYWwgZW11bGF0b3IgZm9yIHRoZSBYZmNlIGRlc2t0b3AgZW52aXJvbm1lbnQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCitERVBFTkRTID0gImdsaWItMi4wIGd0ayszIHZ0ZSBsaWJ4ZmNlNHVpIgorCitpbmhlcml0IHhmY2UtYXBwCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3hmY2U0IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dub21lLWNvbnRyb2wtY2VudGVyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjAxNGQ2MTM0Mzg4NDhiNDUyZjFmOWVlY2JmNzAyN2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGFmYTE1NTE3NzkzNGZjN2RjZTJkNGVmYjMzNDAyZjc0YjFhNTkzYTE3ZmYxN2QyMTg3YTY0MjlmNTk5ZGZkNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYmluZGluZ3MvdmFsYS94ZmNlNC12YWxhXzQuMTAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYmluZGluZ3MvdmFsYS94ZmNlNC12YWxhXzQuMTAuMy5iYgppbmRleCBkMGEwNTk4Li4yOGY5Y2RlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWJpbmRpbmdzL3ZhbGEveGZjZTQtdmFsYV80LjEwLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1iaW5kaW5ncy92YWxhL3hmY2U0LXZhbGFfNC4xMC4zLmJiCkBAIC0zLDEzICszLDE1IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNDNiNzI1ZDcxYmI1ZGY0YTFlNTkyMGIzNDRiODZhZCIKIERFUEVORFMgPSAibGlieGZjZTR1dGlsIGdhcmNvbiB4ZmNvbmYgbGlieGZjZTR1aSB4ZmNlNC1wYW5lbCBleG8gdmFsYSB4ZmNlNC1kZXYtdG9vbHMtbmF0aXZlIgogCi1pbmhlcml0IHhmY2UKK2luaGVyaXQgeGZjZSBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUueGZjZS5vcmcvc3JjL2JpbmRpbmdzLyR7QlBOfS8ke0B4ZmNlX3ZlcmRpcigiJHtQVn0iKX0vJHtCUE59LSR7UFZ9LnRhci5iejIiCiBTUkNfVVJJW21kNXN1bV0gPSAiMGJiYjFkNmU0NzNlMGZlOWIzMzViN2IxYjQ5ZDhhNzEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDdhOGYyYjdjMDlmY2RkM2Q4NmUwYzUyYWRlYTNjNThjYTAxMWQwMTQyYTkzOTk3YTAxYjRhZjc3MjYwYWU3YiIKIAotRVhUUkFfT0VDT05GID0gIi13aXRoLXZhbGEtYXBpPTAuMzYiCitFWFRSQV9PRUNPTkYgPSAiLXdpdGgtdmFsYS1hcGk9MC4zOCIKIAogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdmFsYS0qL3ZhcGkiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvaW1zZXR0aW5ncy9pbXNldHRpbmdzLzAwMDEtUmVuYW1lLXVzZS1vZi1zdGRvdXQtYW5kLXN0ZGVyci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvaW1zZXR0aW5ncy9pbXNldHRpbmdzLzAwMDEtUmVuYW1lLXVzZS1vZi1zdGRvdXQtYW5kLXN0ZGVyci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc3Y2U0ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWV4dGVuZGVkL2ltc2V0dGluZ3MvaW1zZXR0aW5ncy8wMDAxLVJlbmFtZS11c2Utb2Ytc3Rkb3V0LWFuZC1zdGRlcnIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi1Gcm9tIDdlZTYyZWYwMDgzODQ0YWIyZmZmY2QxMDZlM2VlMmU1ZjI5YjJhOTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxMiBKdWwgMjAxNyAxODo1Mzo1NiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBSZW5hbWUgdXNlIG9mIHN0ZG91dCBhbmQgc3RkZXJyCi0KLVNpbmNlIGl0IHNoYWRvdyB0aGUgc3RhbmRhcmQgZGVmaW5pdGlvbnMgZXNwZWNpYWxseQotc2VlbiBvbiBtdXNsIHdoZXJlIGxpYmMgZGVmaW5lcyB0aGVzZSBhcyBtYWNyb3MgdGhleQotY2F1c2UgYWxsIHNob3J0IG9mIGNvbXBpbGF0aW9uIGVycm9ycyBvbiBtdXNsLCB1c2luZwotYSBsZWFkaW5nIHVuZGVyc2NvcmUgbWFrZXMgaXQgdW5pcXVlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBpbXNldHRpbmdzLWRhZW1vbi9pbXNldHRpbmdzLXByb2MuYyB8IDI4ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbXNldHRpbmdzLWRhZW1vbi9pbXNldHRpbmdzLXByb2MuYyBiL2ltc2V0dGluZ3MtZGFlbW9uL2ltc2V0dGluZ3MtcHJvYy5jCi1pbmRleCA5MTVlNzhiLi5iNzhmY2ZmIDEwMDY0NAotLS0tIGEvaW1zZXR0aW5ncy1kYWVtb24vaW1zZXR0aW5ncy1wcm9jLmMKLSsrKyBiL2ltc2V0dGluZ3MtZGFlbW9uL2ltc2V0dGluZ3MtcHJvYy5jCi1AQCAtMzksOCArMzksOCBAQAotICNkZWZpbmUgTUFYUkVTVEFSVCAzCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgX0lNU2V0dGluZ3NQcm9jSW5mbyB7Ci0tCUdJT0NoYW5uZWwgICAgICpzdGRvdXQ7Ci0tCUdJT0NoYW5uZWwgICAgICpzdGRlcnI7Ci0rCUdJT0NoYW5uZWwgICAgICpfc3Rkb3V0OwotKwlHSU9DaGFubmVsICAgICAqX3N0ZGVycjsKLSAJR1BpZCAgICAgICAgICAgIHBpZDsKLSAJR1RpbWVWYWwgICAgICAgIHN0YXJ0ZWRfdGltZTsKLSAJZ3VpbnQgICAgICAgICAgIGlkOwotQEAgLTM2OCwxMiArMzY4LDEyIEBAIF9zdGFydF9wcm9jZXNzKElNU2V0dGluZ3NQcm9jICAgICAqcHJvYywKLSAJCQkJCSAgICAgJm9mZCwgJmVmZCwKLSAJCQkJCSAgICAgZXJyb3IpKSB7Ci0gCQkJcGluZm8tPnBpZCA9IHBpZDsKLS0JCQlwaW5mby0+c3Rkb3V0ID0gZ19pb19jaGFubmVsX3VuaXhfbmV3KG9mZCk7Ci0tCQkJcGluZm8tPnN0ZGVyciA9IGdfaW9fY2hhbm5lbF91bml4X25ldyhlZmQpOwotLQkJCWdfaW9fY2hhbm5lbF9zZXRfY2xvc2Vfb25fdW5yZWYocGluZm8tPnN0ZG91dCwgVFJVRSk7Ci0tCQkJZ19pb19jaGFubmVsX3NldF9jbG9zZV9vbl91bnJlZihwaW5mby0+c3RkZXJyLCBUUlVFKTsKLS0JCQlwaW5mby0+b2lkID0gZ19pb19hZGRfd2F0Y2gocGluZm8tPnN0ZG91dCwgR19JT19JTiwgX2xvZ193cml0ZV9jYiwgcHJvYyk7Ci0tCQkJcGluZm8tPmVpZCA9IGdfaW9fYWRkX3dhdGNoKHBpbmZvLT5zdGRlcnIsIEdfSU9fSU4sIF9sb2dfd3JpdGVfY2IsIHByb2MpOwotKwkJCXBpbmZvLT5fc3Rkb3V0ID0gZ19pb19jaGFubmVsX3VuaXhfbmV3KG9mZCk7Ci0rCQkJcGluZm8tPl9zdGRlcnIgPSBnX2lvX2NoYW5uZWxfdW5peF9uZXcoZWZkKTsKLSsJCQlnX2lvX2NoYW5uZWxfc2V0X2Nsb3NlX29uX3VucmVmKHBpbmZvLT5fc3Rkb3V0LCBUUlVFKTsKLSsJCQlnX2lvX2NoYW5uZWxfc2V0X2Nsb3NlX29uX3VucmVmKHBpbmZvLT5fc3RkZXJyLCBUUlVFKTsKLSsJCQlwaW5mby0+b2lkID0gZ19pb19hZGRfd2F0Y2gocGluZm8tPl9zdGRvdXQsIEdfSU9fSU4sIF9sb2dfd3JpdGVfY2IsIHByb2MpOwotKwkJCXBpbmZvLT5laWQgPSBnX2lvX2FkZF93YXRjaChwaW5mby0+X3N0ZGVyciwgR19JT19JTiwgX2xvZ193cml0ZV9jYiwgcHJvYyk7Ci0gCQkJZ19nZXRfY3VycmVudF90aW1lKCZwaW5mby0+c3RhcnRlZF90aW1lKTsKLSAJCQlwaW5mby0+aWQgPSBnX2NoaWxkX3dhdGNoX2FkZChwaWQsIF93YXRjaF9pbV9zdGF0dXNfY2IsIHByb2MpOwotIAotQEAgLTUyMSwxMyArNTIxLDEzIEBAIGltc2V0dGluZ3NfcHJvY19nZXRfcHJvcGVydHkoR09iamVjdCAgICAqb2JqZWN0LAotIHN0YXRpYyB2b2lkCi0gaW1zZXR0aW5nc19wcm9jX2luZm9fZmluYWxpemUoSU1TZXR0aW5nc1Byb2NJbmZvICpwaW5mbykKLSB7Ci0tCWlmIChwaW5mby0+c3Rkb3V0KSB7Ci0tCQlnX2lvX2NoYW5uZWxfdW5yZWYocGluZm8tPnN0ZG91dCk7Ci0tCQlwaW5mby0+c3Rkb3V0ID0gTlVMTDsKLSsJaWYgKHBpbmZvLT5fc3Rkb3V0KSB7Ci0rCQlnX2lvX2NoYW5uZWxfdW5yZWYocGluZm8tPl9zdGRvdXQpOwotKwkJcGluZm8tPl9zdGRvdXQgPSBOVUxMOwotIAl9Ci0tCWlmIChwaW5mby0+c3RkZXJyKSB7Ci0tCQlnX2lvX2NoYW5uZWxfdW5yZWYocGluZm8tPnN0ZGVycik7Ci0tCQlwaW5mby0+c3RkZXJyID0gTlVMTDsKLSsJaWYgKHBpbmZvLT5fc3RkZXJyKSB7Ci0rCQlnX2lvX2NoYW5uZWxfdW5yZWYocGluZm8tPl9zdGRlcnIpOwotKwkJcGluZm8tPl9zdGRlcnIgPSBOVUxMOwotIAl9Ci0gCWlmIChwaW5mby0+b2lkID4gMCkgewotIAkJZ19zb3VyY2VfcmVtb3ZlKHBpbmZvLT5vaWQpOwotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9pbXNldHRpbmdzL2ltc2V0dGluZ3MvZ3RrLWlzLXJlcXVpcmVkLWJ5LW5vdGlmeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvaW1zZXR0aW5ncy9pbXNldHRpbmdzL2d0ay1pcy1yZXF1aXJlZC1ieS1ub3RpZnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MjM1OGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9pbXNldHRpbmdzL2ltc2V0dGluZ3MvZ3RrLWlzLXJlcXVpcmVkLWJ5LW5vdGlmeS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLWd0aysgaXMgcmVxdWlyZWQgYnkgbGlubm90aWZ5LiBTbyBtYWtlIHN1cmUgZ3RrIGJlIGxpbmtlZCBiZWZvcmUgbGlibm90aWZ5Ci0KLVNpZ25lZC1vZmYtYnk6IEJpYW4gTmFpbWVuZyA8Ymlhbm5tQGNuLmZ1aml0c3UuY29tPgotCi1kaWZmIC1OdXJwIGltc2V0dGluZ3MtMS42Ljcub3JpZy9jb25maWd1cmUuYWMgaW1zZXR0aW5ncy0xLjYuNy9jb25maWd1cmUuYWMKLS0tLSBpbXNldHRpbmdzLTEuNi43Lm9yaWcvY29uZmlndXJlLmFjCTIwMTMtMTEtMjYgMTY6MDk6MDkuMDAwMDAwMDAwICswODAwCi0rKysgaW1zZXR0aW5ncy0xLjYuNy9jb25maWd1cmUuYWMJMjAxNC0xMi0zMCAxMToyNzo0NC4zNzAwMDMyMDkgKzA4MDAKLUBAIC05Myw4ICs5Myw4IEBAIFBLR19DSEVDS19NT0RVTEVTKExJQk5PVElGWSwgbGlibm90aWZ5LAotIAkJaGFzX29sZF9saWJub3RpZnk9eWVzCi0gCQlQS0dfQ0hFQ0tfTU9EVUxFUyhHVEssIGd0aystMi4wID49ICRHVEtfUkVRVUlSRUQpCi0gCQlBQ19ERUZJTkUoSEFTX09MRF9MSUJOT1RJRlksLCBbVXNpbmcgb2xkZXIgbGlibm90aWZ5XSkKLS0JCUlNREFFTU9OX0NGTEFHUz0iJEdUS19DRkxBR1MgJExJQk5PVElGWV9PTERfQ0ZMQUdTIgotLQkJSU1EQUVNT05fTElCUz0iJEdUS19MSUJTICRMSUJOT1RJRllfT0xEX0xJQlMiXSxbCi0rCQlJTURBRU1PTl9DRkxBR1M9IiRMSUJOT1RJRllfT0xEX0NGTEFHUyAkR1RLX0NGTEFHUyIKLSsJCUlNREFFTU9OX0xJQlM9IiRMSUJOT1RJRllfT0xEX0xJQlMgJEdUS19MSUJTIl0sWwotIAkJaGFzX29sZF9saWJub3RpZnk9bm8KLSAJCUlNREFFTU9OX0NGTEFHUz0iJExJQk5PVElGWV9DRkxBR1MiCi0gCQlJTURBRU1PTl9MSUJTPSIkTElCTk9USUZZX0xJQlMiXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvaW1zZXR0aW5ncy9pbXNldHRpbmdzL211bHRpLWxpbmUtQUNMT0NBTF9BTUZMQUdTLWlzbm90LXN1cHBvcnRlZC1ieS1hdXRvcmVjb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9pbXNldHRpbmdzL2ltc2V0dGluZ3MvbXVsdGktbGluZS1BQ0xPQ0FMX0FNRkxBR1MtaXNub3Qtc3VwcG9ydGVkLWJ5LWF1dG9yZWNvbmYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YWM4N2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9pbXNldHRpbmdzL2ltc2V0dGluZ3MvbXVsdGktbGluZS1BQ0xPQ0FMX0FNRkxBR1MtaXNub3Qtc3VwcG9ydGVkLWJ5LWF1dG9yZWNvbmYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1tdWx0aS1saW5lIEFDTE9DQUxfQU1GTEFHUyBpc24ndCBzdXBwb3J0ZWQgYnkgYXV0b3JlY29uZi4KLUl0IHdpbGwgY2F1c2UgY29uZmlndXJlIGVycm9yIGFzIGZvbGxvdy4KLQotICBhY2xvY2FsOiBlcnJvcjogbm9uLW9wdGlvbiBhcmd1bWVudHMgYXJlIG5vdCBhY2NlcHRlZDogJ1wnLgotCi1TaWduZWQtb2ZmLWJ5OiBCaWFuIE5haW1lbmcgPGJpYW5ubUBjbi5mdWppdHN1LmNvbT4KLQotZGlmZiAtTnVycCBpbXNldHRpbmdzLTEuNy4xLm9yaWcvTWFrZWZpbGUuYW0gaW1zZXR0aW5ncy0xLjcuMS9NYWtlZmlsZS5hbQotLS0tIGltc2V0dGluZ3MtMS43LjEub3JpZy9NYWtlZmlsZS5hbQkyMDEzLTAyLTA4IDExOjMzOjU5LjAwMDAwMDAwMCArMDkwMAotKysrIGltc2V0dGluZ3MtMS43LjEvTWFrZWZpbGUuYW0JMjAxNS0wNi0yNCAxNDoxNTozMi4wNzAwMDAwMDcgKzA5MDAKLUBAIC0xLDcgKzEsNyBAQAotIE5VTEwgPQotIFNVQkRJUlMgPSBkYXRhIGltc2V0dGluZ3MgaW1zZXR0aW5ncy1kYWVtb24gYmFja2VuZHMgdXRpbHMgcG8gdGVzdHMgZG9jcwotIAotLUFDTE9DQUxfQU1GTEFHUyA9IC1JbTRtYWNyb3MKLStBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNG1hY3JvcyAkKE5VTEwpCi0gCi0gQ09ORklHVVJFX0RFUEVOREVOQ0lFUyA9CQlcCi0gCXJlcXVpcmVzCQkJXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9pbXNldHRpbmdzL2ltc2V0dGluZ3NfMS43LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWV4dGVuZGVkL2ltc2V0dGluZ3MvaW1zZXR0aW5nc18xLjcuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E0Y2UwNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWV4dGVuZGVkL2ltc2V0dGluZ3MvaW1zZXR0aW5nc18xLjcuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiRGVsaXZlcnkgZnJhbWV3b3JrIGZvciBnZW5lcmFsIElucHV0IE1ldGhvZCBjb25maWd1cmF0aW9uIgotREVTQ1JJUFRJT04gPSAiSU1TZXR0aW5ncyBpcyBhIGZyYW1ld29yayB0aGF0IGRlbGl2ZXJzIElucHV0IE1ldGhvZCBcCi1zZXR0aW5ncyBhbmQgYXBwbGllcyB0aGUgY2hhbmdlcyBzbyB0aGV5IHRha2UgZWZmZWN0IFwKLWltbWVkaWF0ZWx5IHdpdGhvdXQgYW55IG5lZWQgdG8gcmVzdGFydCBhcHBsaWNhdGlvbnMgXAotb3IgdGhlIGRlc2t0b3AuIFwKLVRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgY29yZSBEQnVzIHNlcnZpY2VzIGFuZCBzb21lIHV0aWxpdGllcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvaW1zZXR0aW5ncy8iCi1TRUNUSU9OID0gIkFwcGxpY2F0aW9ucy9TeXN0ZW0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9iaXRidWNrZXQub3JnL3RhZ29oL2ltc2V0dGluZ3MvZG93bmxvYWRzLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2d0ay1pcy1yZXF1aXJlZC1ieS1ub3RpZnkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbXVsdGktbGluZS1BQ0xPQ0FMX0FNRkxBR1MtaXNub3Qtc3VwcG9ydGVkLWJ5LWF1dG9yZWNvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW5hbWUtdXNlLW9mLXN0ZG91dC1hbmQtc3RkZXJyLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODE1M2IwNTgzYTlmNDdkOGE2MmFmMWY5MmZiOWQzYmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDFhZGRmMDQ1OGY3NjAyMTJiNmI2MTAwODM1MDY2ZTE2ZGViM2E4YTUwZWIwMDVhMGZjMTdmYmFjMGEyYWU2NiIKLQotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgteGlucHV0c2g9NTAteGlucHV0LnNoIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RhdGljIFwKLSAgICAgICAgICAgICAgICIKLQotREVQRU5EUyA9ICJndGsrIGdjb25mIGxpYm5vdGlmeSBkYnVzLWdsaWIgbGliZ3hpbSB4ZmNvbmYgaW50bHRvb2wtbmF0aXZlIgotCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xLyogJHtkYXRhZGlyfS9naXItMS4wLyogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvaW1zZXR0aW5ncy9pbXNldHRpbmdzXzEuNy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9pbXNldHRpbmdzL2ltc2V0dGluZ3NfMS43LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY2MjJiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvaW1zZXR0aW5ncy9pbXNldHRpbmdzXzEuNy4zLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiRGVsaXZlcnkgZnJhbWV3b3JrIGZvciBnZW5lcmFsIElucHV0IE1ldGhvZCBjb25maWd1cmF0aW9uIgorREVTQ1JJUFRJT04gPSAiSU1TZXR0aW5ncyBpcyBhIGZyYW1ld29yayB0aGF0IGRlbGl2ZXJzIElucHV0IE1ldGhvZCBcCitzZXR0aW5ncyBhbmQgYXBwbGllcyB0aGUgY2hhbmdlcyBzbyB0aGV5IHRha2UgZWZmZWN0IFwKK2ltbWVkaWF0ZWx5IHdpdGhvdXQgYW55IG5lZWQgdG8gcmVzdGFydCBhcHBsaWNhdGlvbnMgXAorb3IgdGhlIGRlc2t0b3AuIFwKK1RoaXMgcGFja2FnZSBjb250YWlucyB0aGUgY29yZSBEQnVzIHNlcnZpY2VzIGFuZCBzb21lIHV0aWxpdGllcy4iCitIT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvaW1zZXR0aW5ncy8iCitTRUNUSU9OID0gIkFwcGxpY2F0aW9ucy9TeXN0ZW0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJID0gImh0dHBzOi8vYml0YnVja2V0Lm9yZy90YWdvaC9pbXNldHRpbmdzL2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImM2YzY1YTJiMjY1NGZlOWRmZTlhYjJlOGI4MGMwNzlhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE5NmQzYTc0Y2VmMjU0ZmY4MTJjMzI2ODJkMTgxOGQ3NDBlMzZhNjhiOTc2ZmVmOWU5OTc0OGQyM2E3MWE3MWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXhpbnB1dHNoPTUwLXhpbnB1dC5zaCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyBcCisgICAgICAgICAgICAgICAiCisKK0RFUEVORFMgPSAiZ3RrKyBnY29uZiBsaWJub3RpZnkgZGJ1cy1nbGliIGxpYmd4aW0geGZjb25mIGludGx0b29sLW5hdGl2ZSIKKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS8qICR7ZGF0YWRpcn0vZ2lyLTEuMC8qICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJ1bmlxdWUvbGlidW5pcXVlLzAwMDEtTWFrZWZpbGUuYW0tdXNlLUxJQlRPT0wtaW5zdGVhZC1vZi1oYXJkY29kZWQtbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvbGlidW5pcXVlL2xpYnVuaXF1ZS8wMDAxLU1ha2VmaWxlLmFtLXVzZS1MSUJUT09MLWluc3RlYWQtb2YtaGFyZGNvZGVkLWxpYnRvb2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWUvMDAwMS1NYWtlZmlsZS5hbS11c2UtTElCVE9PTC1pbnN0ZWFkLW9mLWhhcmRjb2RlZC1saWJ0b29sLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVuaXF1ZS9saWJ1bmlxdWUvMDAwMS1NYWtlZmlsZS5hbS11c2UtTElCVE9PTC1pbnN0ZWFkLW9mLWhhcmRjb2RlZC1saWJ0b29sLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJ1bmlxdWUvbGlidW5pcXVlLzAwMDEtdGVzdC11bmlxdWUtQWRkLWZvcm1hdC1xdWFsaWZpZXItcy1mb3Itc3RyaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9saWJ1bmlxdWUvbGlidW5pcXVlLzAwMDEtdGVzdC11bmlxdWUtQWRkLWZvcm1hdC1xdWFsaWZpZXItcy1mb3Itc3RyaW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJ1bmlxdWUvbGlidW5pcXVlLzAwMDEtdGVzdC11bmlxdWUtQWRkLWZvcm1hdC1xdWFsaWZpZXItcy1mb3Itc3RyaW5nLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVuaXF1ZS9saWJ1bmlxdWUvMDAwMS10ZXN0LXVuaXF1ZS1BZGQtZm9ybWF0LXF1YWxpZmllci1zLWZvci1zdHJpbmcucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWUvYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVuaXF1ZS9saWJ1bmlxdWUvYnVpbGQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWUvYnVpbGQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvbGlidW5pcXVlL2xpYnVuaXF1ZS9idWlsZC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGlidW5pcXVlL2xpYnVuaXF1ZS9maXhfZm9yX2NvbXBpbGVfd2l0aF9nY2MtNC42LjAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVuaXF1ZS9saWJ1bmlxdWUvZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJ1bmlxdWUvbGlidW5pcXVlL2ZpeF9mb3JfY29tcGlsZV93aXRoX2djYy00LjYuMC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9saWJ1bmlxdWUvbGlidW5pcXVlL2ZpeF9mb3JfY29tcGlsZV93aXRoX2djYy00LjYuMC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGlidW5pcXVlL2xpYnVuaXF1ZS9ub2NvbnN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9saWJ1bmlxdWUvbGlidW5pcXVlL25vY29uc3QucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWUvbm9jb25zdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9saWJ1bmlxdWUvbGlidW5pcXVlL25vY29uc3QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvbGlidW5pcXVlL2xpYnVuaXF1ZV8xLjEuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvbGlidW5pcXVlL2xpYnVuaXF1ZV8xLjEuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWVkMDdhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9saWJ1bmlxdWUvbGlidW5pcXVlXzEuMS42LmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3Igc3VwcG9ydGluZyBzaW5nbGUgaW5zdGFuY2UgR1RLKyBhcHBsaWNhdGlvbnMiCitERVNDUklQVElPTiA9ICJVbmlxdWUgaXMgYSBsaWJyYXJ5IGZvciB3cml0aW5nIHNpbmdsZSBpbnN0YW5jZSBHVEsrIGFwcGxpY2F0aW9ucy4gSWYgeW91IGxhdW5jaCBhIHNpbmdsZSBpbnN0YW5jZSBhcHBsaWNhdGlvbiB0d2ljZSwgdGhlIHNlY29uZCBpbnN0YW5jZSB3aWxsIGVpdGhlciBqdXN0IHF1aXQgb3Igd2lsbCBzZW5kIGEgbWVzc2FnZSB0byB0aGUgcnVubmluZyBpbnN0YW5jZS4iCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL0F0dGljL0xpYlVuaXF1ZSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PWxpYnVuaXF1ZSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vbGlidW5pcXVlLzEuMS9saWJ1bmlxdWUtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfZm9yX2NvbXBpbGVfd2l0aF9nY2MtNC42LjAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm9jb25zdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLXVzZS1MSUJUT09MLWluc3RlYWQtb2YtaGFyZGNvZGVkLWxpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0LXVuaXF1ZS1BZGQtZm9ybWF0LXF1YWxpZmllci1zLWZvci1zdHJpbmcucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3OTU1NzY5ZWYzMWYxYmM0ZjgzNDQ2ZGJiMzYyNWU2ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNWM4MDQxY2VmOGUzM2M1NTczMmYwNmEyOTIzODFjYjM0NWRiOTQ2Y2Y3OTJhNGFlMThhYTVjNjZjZGQ0ZmJiIgorCitQUiA9ICJyNyIKKworREVQRU5EUyA9ICJkYnVzLWdsaWItbmF0aXZlIGdsaWItMi4wIGd0aysiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJkYnVzIgorUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItLWVuYWJsZS1kYnVzLC0tZGlzYWJsZS1kYnVzLGRidXMgZGJ1cy1nbGliIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCisKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbiBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3RrLWRvYworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Bhcm9sZS9wYXJvbGVfMC44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLW11bHRpbWVkaWEvcGFyb2xlL3Bhcm9sZV8wLjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI0NjExYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLW11bHRpbWVkaWEvcGFyb2xlL3Bhcm9sZV8wLjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlBhcm9sZSBpcyBhIG1vZGVybiBzaW1wbGUgbWVkaWEgcGxheWVyIGJhc2VkIG9uIHRoZSBHU3RyZWFtZXIgZnJhbWV3b3JrIgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvYXBwbGljYXRpb25zL3Bhcm9sZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotaW5oZXJpdCB4ZmNlLWFwcCBndGstZG9jIG1pbWUKLQotREVQRU5EUyArPSAiIFwKLSAgICBnbGliLTIuMCBcCi0gICAgZGJ1cy1nbGliIFwKLSAgICBndGsrMyBcCi0gICAgXAotICAgIHhmY2U0LWRldi10b29scy1uYXRpdmUgXAotICAgIGxpYnhmY2U0dXRpbCBcCi0gICAgbGlieGZjZTR1aSBcCi0gICAgeGZjb25mIFwKLSAgICBcCi0gICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBcCi0gICAgdGFnbGliIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM2MWUzMDU5ZjEyNjNjNzZhMzcxMWRiMmM3YzFhOTdiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiMjE2ZjUyMDA0OTBmOGQyYTliZjFiM2ZjZDlhOGIyMDgzNGM5NTI0OWJmMTNiOTE3MGM4MmUxZmNiZDgwZjQiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWd0ay1kb2MiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJub3RpZnkiCi1QQUNLQUdFQ09ORklHW2NsdXR0ZXJdID0gIi0tZW5hYmxlLWNsdXR0ZXIsIC0tZGlzYWJsZS1jbHV0dGVyLCBjbHV0dGVyIgotUEFDS0FHRUNPTkZJR1tub3RpZnldID0gIi0tZW5hYmxlLW5vdGlmeS1wbHVnaW4sIC0tZGlzYWJsZS1ub3RpZnktcGx1Z2luLCBsaWJub3RpZnkiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vYXBwZGF0YSBcCi0gICAgJHtsaWJkaXJ9L3Bhcm9sZS0wLyouc28gXAotIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vcGFyb2xlLTAvLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGFyb2xlLTAvKi5sYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS9wYXJvbGUvcGFyb2xlXzEuMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Bhcm9sZS9wYXJvbGVfMS4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc5ZjFhNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS9wYXJvbGUvcGFyb2xlXzEuMC4wLmJiCkBAIC0wLDAgKzEsMzggQEAKK0RFU0NSSVBUSU9OID0gIlBhcm9sZSBpcyBhIG1vZGVybiBzaW1wbGUgbWVkaWEgcGxheWVyIGJhc2VkIG9uIHRoZSBHU3RyZWFtZXIgZnJhbWV3b3JrIgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvYXBwbGljYXRpb25zL3Bhcm9sZSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKKworaW5oZXJpdCB4ZmNlLWFwcCBndGstZG9jIG1pbWUKKworREVQRU5EUyArPSAiIFwKKyAgICBnbGliLTIuMCBcCisgICAgZGJ1cy1nbGliIFwKKyAgICBndGsrMyBcCisgICAgXAorICAgIHhmY2U0LWRldi10b29scy1uYXRpdmUgXAorICAgIGxpYnhmY2U0dXRpbCBcCisgICAgbGlieGZjZTR1aSBcCisgICAgeGZjb25mIFwKKyAgICBcCisgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBcCisgICAgdGFnbGliIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImQwMGQzY2E1NzE5MDA4MjZiZjVlMWY2OTg2ZTQyOTkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2NjZiMzM1YWViNjkwZmI1MjdmNzdiNjJjMzIyYmFmMzQ4MzRiNTkzNjU5ZmRjZDIxZDIxZWQzZjFlMTQwMTAiCisKK1JERVBFTkRTXyR7UE59ICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWd0ay1kb2MiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJub3RpZnkiCitQQUNLQUdFQ09ORklHW2NsdXR0ZXJdID0gIi0tZW5hYmxlLWNsdXR0ZXIsIC0tZGlzYWJsZS1jbHV0dGVyLCBjbHV0dGVyIgorUEFDS0FHRUNPTkZJR1tub3RpZnldID0gIi0tZW5hYmxlLW5vdGlmeS1wbHVnaW4sIC0tZGlzYWJsZS1ub3RpZnktcGx1Z2luLCBsaWJub3RpZnkiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vYXBwZGF0YSBcCisgICAgJHtsaWJkaXJ9L3Bhcm9sZS0wLyouc28gXAorIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vcGFyb2xlLTAvLmRlYnVnIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGFyb2xlLTAvKi5sYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9wdWxzZWF1ZGlvL3hmY2U0LXB1bHNlYXVkaW8tcGx1Z2luXzAuMi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3B1bHNlYXVkaW8veGZjZTQtcHVsc2VhdWRpby1wbHVnaW5fMC4yLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjN2NhNzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3B1bHNlYXVkaW8veGZjZTQtcHVsc2VhdWRpby1wbHVnaW5fMC4yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlB1bHNlYXVkaW8gbWl4ZXIgZm9yIHRoZSB4ZmNlIHBhbmVsIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY1ZWFjNmJiMGQ2ZWMwZGM2NTVlNDE3NzgxZDQwMTVmIgotCi1pbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicHVsc2VhdWRpbyB4MTEiCi0KLURFUEVORFMgKz0gInB1bHNlYXVkaW8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlMGZmZGU0MTlmYTAzMGYxZjliZDBiNTZlMzI2NGExYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZDkzMzBkZGYxZDQ0YTg2NGEzNmQ1NjZjY2U0Yjc2ZDRmODU5YzU5ODRiYmE3NjUzZDdkYzM5YWEyNGQ1YzNlIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tsaWJub3RpZnldID0gIi0tZW5hYmxlLWxpYm5vdGlmeSwtLWRpc2FibGUtbGlibm90aWZ5LGxpYm5vdGlmeSIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAicGF2dWNvbnRyb2wiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvcHVsc2VhdWRpby94ZmNlNC1wdWxzZWF1ZGlvLXBsdWdpbl8wLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9wdWxzZWF1ZGlvL3hmY2U0LXB1bHNlYXVkaW8tcGx1Z2luXzAuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NDE3YTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvcHVsc2VhdWRpby94ZmNlNC1wdWxzZWF1ZGlvLXBsdWdpbl8wLjQuMC5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlB1bHNlYXVkaW8gbWl4ZXIgZm9yIHRoZSB4ZmNlIHBhbmVsIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY1ZWFjNmJiMGQ2ZWMwZGM2NTVlNDE3NzgxZDQwMTVmIgorCitpbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicHVsc2VhdWRpbyB4MTEiCisKK0RFUEVORFMgKz0gInB1bHNlYXVkaW8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMmYzZGQ5N2UwMmM2MDRlMjAyM2I1YmFmMzBkNGE2YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZWY5YWQ2OGEwYjYwNGE2YWVjYTRjMDgxNDZmM2ViNDJiZWRiNGZlMWM4YjY1YjgyNjc5Y2VjMGUyZmMxY2IzIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJub3RpZnldID0gIi0tZW5hYmxlLWxpYm5vdGlmeSwtLWRpc2FibGUtbGlibm90aWZ5LGxpYm5vdGlmeSIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAicGF2dWNvbnRyb2wiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvdGltZXIveGZjZTQtdGltZXItcGx1Z2luLzAwMDEtU3BlY2lmeS1zdHJpbmctZm9ybWF0LWV4cGxpY2l0bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvdGltZXIveGZjZTQtdGltZXItcGx1Z2luLzAwMDEtU3BlY2lmeS1zdHJpbmctZm9ybWF0LWV4cGxpY2l0bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMGJiMDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3RpbWVyL3hmY2U0LXRpbWVyLXBsdWdpbi8wMDAxLVNwZWNpZnktc3RyaW5nLWZvcm1hdC1leHBsaWNpdGx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA2Yjc4NmUxYzE2MTAyNmFiNTQ4NmFjMjE4ODkxYTg1ZGI2NWJmM2JhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjIgTWFyIDIwMTcgMTU6Mjg6MjQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gU3BlY2lmeSBzdHJpbmcgZm9ybWF0IGV4cGxpY2l0bHkKLQotQXZvaWRzIGJlbG93IGVycm9ycyB3aGVuIGNvbXBpbGluZyB3aXRoIC1XZm9ybWF0LXNlY3VyaXR5Ci0KLWVycm9yOiBmb3JtYXQgc3RyaW5nIGlzIG5vdCBhIHN0cmluZyBsaXRlcmFsIChwb3RlbnRpYWxseSBpbnNlY3VyZSkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMveGZjZXRpbWVyLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMveGZjZXRpbWVyLmMgYi9zcmMveGZjZXRpbWVyLmMKLWluZGV4IDYwMTc3MmYuLjRiODk2ODIgMTAwNjQ0Ci0tLS0gYS9zcmMveGZjZXRpbWVyLmMKLSsrKyBiL3NyYy94ZmNldGltZXIuYwotQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gdXBkYXRlX2Z1bmN0aW9uIChncG9pbnRlciBkYXRhKXsKLSAKLSAgICAgZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyAoTlVMTCwgR1RLX0RJQUxPR19NT0RBTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfTUVTU0FHRV9XQVJOSU5HLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19CVVRUT05TX05PTkUsIGRpYWxvZ19tZXNzYWdlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19OT05FLCAiJXMiLCBkaWFsb2dfbWVzc2FnZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgIGd0a193aW5kb3dfc2V0X3RpdGxlICgoR3RrV2luZG93ICopIGRpYWxvZywgZGlhbG9nX3RpdGxlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvdGltZXIveGZjZTQtdGltZXItcGx1Z2luXzEuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3RpbWVyL3hmY2U0LXRpbWVyLXBsdWdpbl8xLjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYxNTE5Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvdGltZXIveGZjZTQtdGltZXItcGx1Z2luXzEuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJYRkNFIHBhbmVsIHBsdWdpbiB0byBnZW5lcmF0ZSBhbGFybSBtZXNzYWdlcyIKLURFU0NSSVBUSU9OID0gIlRoaXMgaXMgYSBzaW1wbGUgcGx1Z2luIHRoYXQgbGV0cyB0aGUgdXNlciBydW4gYW4gYWxhcm0gYXQgYSBzcGVjaWZpZWQgdGltZSBvciBhdCB0aGUgZW5kIG9mIGEgc3BlY2lmaWVkIGNvdW50ZG93biBwZXJpb2QiCi1IT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9wYW5lbC1wbHVnaW5zL3hmY2U0LXRpbWVyLXBsdWdpbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hZTM5MjcxMjY3ZmQ2M2ViNzYxOTQzMmZmMjRlN2ZmMSIKLQotaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1TcGVjaWZ5LXN0cmluZy1mb3JtYXQtZXhwbGljaXRseS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNiZTJhNGNjZmIyYWYyMDQ0MWIxZDI1YzJjZWE1ZjI4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM5ZDdkMjFmMDk5YmM0MjE5ZjZhNjE1NjE0MmYwYmJiODM3NDk4NmVlMTk3MGE5YzBjOGRjMTM4Yjg3Zjg2N2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvdGltZXIveGZjZTQtdGltZXItcGx1Z2luXzEuNy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3RpbWVyL3hmY2U0LXRpbWVyLXBsdWdpbl8xLjcuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGRjNmY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3RpbWVyL3hmY2U0LXRpbWVyLXBsdWdpbl8xLjcuMC5iYgpAQCAtMCwwICsxLDEwIEBACitTVU1NQVJZID0gIlhGQ0UgcGFuZWwgcGx1Z2luIHRvIGdlbmVyYXRlIGFsYXJtIG1lc3NhZ2VzIgorREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBhIHNpbXBsZSBwbHVnaW4gdGhhdCBsZXRzIHRoZSB1c2VyIHJ1biBhbiBhbGFybSBhdCBhIHNwZWNpZmllZCB0aW1lIG9yIGF0IHRoZSBlbmQgb2YgYSBzcGVjaWZpZWQgY291bnRkb3duIHBlcmlvZCIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtdGltZXItcGx1Z2luIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWFlMzkyNzEyNjdmZDYzZWI3NjE5NDMyZmYyNGU3ZmYxIgorCitpbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMmU2YTE0ZTgwYmY5YTkzZGIyZjJiM2JmZDdkZTkyMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZTRlNTM0M2UzOTkyNjIzMGNjOTgxZDVmZTU2Y2Q1OGEyZjM4MTdkMmU5YjYwODliNTY3M2EyZTM5YmY3ZTliIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3dlYXRoZXIveGZjZTQtd2VhdGhlci1wbHVnaW5fMC44LjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3dlYXRoZXIveGZjZTQtd2VhdGhlci1wbHVnaW5fMC44LjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0OWVhYWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2VhdGhlci94ZmNlNC13ZWF0aGVyLXBsdWdpbl8wLjguMTAuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJQYW5lbCBwbHVnaW4gdG8gZGlzcGxheSBjdXJyZW50IHRlbXBlcmF0dXJlIGFuZCB3ZWF0aGVyIGNvbmRpdGlvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtd2VhdGhlci1wbHVnaW4iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK2luaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KKworREVQRU5EUyArPSAibGlic291cC0yLjQgZGJ1cy1nbGliIHVwb3dlciIKKworU1JDX1VSSVttZDVzdW1dID0gImJiYTdmNzUwYjk3YzhmYzM2NTY3MTUyNjhlZGFkNzkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlNmQ0M2M0NDQ5MDQ2MzFjMjQwNDcwZTE1ZTk2MjE1YzJjZTQ1MTE1OGJmZGJmMjM0YmNlODkyYmY2MGVhYjgiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3hmY2U0L3dlYXRoZXIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2VhdGhlci94ZmNlNC13ZWF0aGVyLXBsdWdpbl8wLjguOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93ZWF0aGVyL3hmY2U0LXdlYXRoZXItcGx1Z2luXzAuOC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWVkMmNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93ZWF0aGVyL3hmY2U0LXdlYXRoZXItcGx1Z2luXzAuOC45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotU1VNTUFSWSA9ICJQYW5lbCBwbHVnaW4gdG8gZGlzcGxheSBjdXJyZW50IHRlbXBlcmF0dXJlIGFuZCB3ZWF0aGVyIGNvbmRpdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtd2VhdGhlci1wbHVnaW4iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLWluaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KLQotREVQRU5EUyArPSAibGlic291cC0yLjQgZGJ1cy1nbGliIHVwb3dlciIKLQotU1JDX1VSSVttZDVzdW1dID0gIjBjNTZjMDU3ZTFjMzU0YjMwNDA5Yjc4NzFhYjZmMzE0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlMTVkMTRiM2UxOGMzZGE0NmFkMjNlZTMxNThhMjUyMjBmMTQ3NGE0OGI2MTFkZTk2ZWRiNTYyMjFhZWNlZTUiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3hmY2U0L3dlYXRoZXIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2hpc2tlcm1lbnUveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luXzIuMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3doaXNrZXJtZW51L3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbl8yLjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M2N2EyZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2hpc2tlcm1lbnUveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luXzIuMS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBhbHRlcm5hdGUgbWVudSBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb3R0Y29kZS5vcmcveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbiBjbWFrZQotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDMyYTJiYjBhMGQ0YTJlM2M4YzEzNjkxMGM4YjU1MWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTg5MThjMTI1NWY3YWI4NmI5NTBlYmQxMzU1NWZlODcwNDZjMDFhMWE0Y2IwYjVkNDYwMDI0YjZlZmMwMTc2OSIKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gIm1lbnVsaWJyZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93aGlza2VybWVudS94ZmNlNC13aGlza2VybWVudS1wbHVnaW5fMi4xLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2hpc2tlcm1lbnUveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luXzIuMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MmNmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2hpc2tlcm1lbnUveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luXzIuMS42LmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiQW4gYWx0ZXJuYXRlIG1lbnUgZm9yIHRoZSBYZmNlIGRlc2t0b3AgZW52aXJvbm1lbnQiCitIT01FUEFHRSA9ICJodHRwOi8vZ290dGNvZGUub3JnL3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbi8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK2luaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4gY21ha2UKKworU1JDX1VSSVttZDVzdW1dID0gImIyYjJiYWNjOGQ1ZjNjMzExOWEwZjMxN2I2MDc0Mjc2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhiMmE4ZWUxNDQ1ZGYzOWEyY2RhMTM5ZTM1M2YyZTllYzM3MjBhNzgwMjk2ZGM0MWI3ZDRhZWJkZTU3MzcxZmMiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJtZW51bGlicmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMveGtiL3hmY2U0LXhrYi1wbHVnaW5fMC44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMveGtiL3hmY2U0LXhrYi1wbHVnaW5fMC44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlNjJjMDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3hrYi94ZmNlNC14a2ItcGx1Z2luXzAuOC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJYS0IgbGF5b3V0IHN3aXRjaGluZyBwYW5lbCBwbHVnLWluIGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC14a2ItcGx1Z2luIgotU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDk2ZjA5ZjA4NGIwZjdlNmYwMmY3NjlhODQ0OTBjNmIiCi0KLWluaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KLQotU1JDX1VSSVttZDVzdW1dID0gImU0ZTg5Nzc0MWViZTI4MjcxOTI5NzFjMmFhYWQ4MzVkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiMGQzYjlmNGI3YzNlM2U3YmU2NjhlMmY3Yzg0NWI4OWIxNmUwZWQzZGIyYmFjYjU0NGExNzI3MjY4MmNlZDAiCi0KLURFUEVORFMgKz0gImxpYnhrbGF2aWVyIGxpYnduY2szIGxpYnJzdmcgZ2FyY29uIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNC94a2IiCi0KLVJERVBFTkRTXyR7UE59ID0gInhmY2U0LXNldHRpbmdzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3hrYi94ZmNlNC14a2ItcGx1Z2luXzAuOC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3hrYi94ZmNlNC14a2ItcGx1Z2luXzAuOC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZTM3NDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMveGtiL3hmY2U0LXhrYi1wbHVnaW5fMC44LjEuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJYS0IgbGF5b3V0IHN3aXRjaGluZyBwYW5lbCBwbHVnLWluIGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC14a2ItcGx1Z2luIgorU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDk2ZjA5ZjA4NGIwZjdlNmYwMmY3NjlhODQ0OTBjNmIiCisKK2luaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KKworU1JDX1VSSVttZDVzdW1dID0gIjcyNTMwYmY1OWQ3Y2Q5MDIzMjY0NjllNWE3YTk4OTJiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMxOWVjZjEyNjIwMWRlYjYxNDg3NDFjNTIxMTI0NzcxYWQzOTZhZGM4NzQ0NzE1MTJhYjVmZmUxOTQ2NTY3YTEiCisKK0RFUEVORFMgKz0gImxpYnhrbGF2aWVyIGxpYnduY2szIGxpYnJzdmcgZ2FyY29uIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNC94a2IiCisKK1JERVBFTkRTXyR7UE59ID0gInhmY2U0LXNldHRpbmdzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXyUuYmJhcHBlbmQKaW5kZXggMjU0MDNlNi4uN2I0NDk2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fJS5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbV8lLmJiYXBwZW5kCkBAIC0xLDYgKzEgQEAKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgVGhlIG1vdXNlIGJlaW5nIGF1dG9lbmFibGVkIGlzIGp1c3QgYW5ub3lpbmcgaW4geGZjZTQtdGVybWluYWwgKG1vdXNlCi0JIyBkcmFnIG1ha2UgdmltIGdvIGludG8gdmlzdWFsIG1vZGUgYW5kIHRoZXJlIGlzIG5vIHJpZ2h0IGNsaWNrIG1lbnUpLAotCSMgZGVsZXRlIHRoZSBibG9jay4KLQlzZWQgLWkgJy90aGUgbW91c2Ugd29ya3MganVzdCBmaW5lLywrNGQnICR7RH0vJHtkYXRhZGlyfS8ke0JQTn0vdmltcmMKLX0KK3JlcXVpcmUgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJHtCUE59X3hmY2UuaW5jJywgJycsIGQpfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1feGZjZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbV94ZmNlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTQwM2U2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1feGZjZS5pbmMKQEAgLTAsMCArMSw2IEBACitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIFRoZSBtb3VzZSBiZWluZyBhdXRvZW5hYmxlZCBpcyBqdXN0IGFubm95aW5nIGluIHhmY2U0LXRlcm1pbmFsIChtb3VzZQorCSMgZHJhZyBtYWtlIHZpbSBnbyBpbnRvIHZpc3VhbCBtb2RlIGFuZCB0aGVyZSBpcyBubyByaWdodCBjbGljayBtZW51KSwKKwkjIGRlbGV0ZSB0aGUgYmxvY2suCisJc2VkIC1pICcvdGhlIG1vdXNlIHdvcmtzIGp1c3QgZmluZS8sKzRkJyAke0R9LyR7ZGF0YWRpcn0vJHtCUE59L3ZpbXJjCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4by9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4by9jb25maWd1cmUucGF0Y2gKaW5kZXggZWYyN2U0Mi4uODljYzFmMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG8vY29uZmlndXJlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvL2NvbmZpZ3VyZS5wYXRjaApAQCAtMSw2ICsxLDIwIEBACi0tLS0gYS9jb25maWd1cmUuYWMJMjAwNy0xMi0wMiAxMDozNzowNi4wMDAwMDAwMDAgLTAyMDAKLSsrKyBiL2NvbmZpZ3VyZS5hYwkyMDA4LTA2LTA1IDE3OjIxOjQyLjAwMDAwMDAwMCAtMDMwMAotQEAgLTEyNywyMiArMTI3LDI0IEBACitGcm9tIDEzYTc0NTgyZmZkN2Y4MWRiZDY2YTcyOTZmYzc2MDA3NzE4ZTlkNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWFzIE11ZWxsZXIgPHNjaG5pdHplbHRvbnlAZ214LmRlPgorRGF0ZTogTW9uLCAxIEF1ZyAyMDExIDE3OjE2OjI5ICswMjAwCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KKworLS0tCisgY29uZmlndXJlLmFjIHwgMzQgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMGRlNWNlYi4uM2Y5MmQxYiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTQzLDIyICsxNDMsMjQgQEAgQUNfRlVOQ19NTUFQKCkKICBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgZG5sICoqKiBDaGVjayBmb3Igc3RyZnRpbWUoKSBleHRlbnNpb25zICoqKgogIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvL2V4by1uby10ZXN0cy0wLjgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4by9leG8tbm8tdGVzdHMtMC44LnBhdGNoCmluZGV4IGFjOGJjYTUuLjM0OGUxNDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvL2V4by1uby10ZXN0cy0wLjgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG8vZXhvLW5vLXRlc3RzLTAuOC5wYXRjaApAQCAtMSwyMiArMSwyNCBAQAotRnJvbSA1ZjFlMTk4NjBkODk2NDc0ODhiZGQzMmEwMmZiMzMyZjY5NDM0NDA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5MjMxYTJkNWI5YzU0MDZmMzNhZWYzYWI0ZGUyZGJlYzliMDhlZDEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgogRGF0ZTogRnJpLCAxOCBNYXkgMjAxMiAyMToxMzowMCArMDIwMAogU3ViamVjdDogW1BBVENIXSBEbyBub3QgcnVuIHRlc3RzIGF0IGJ1aWxkIHRpbWUKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLVVwc3RyZWFtLVN0YXR1czogTm90LUFwcGxpY2FibGUKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgorCiAtLS0KLSBNYWtlZmlsZS5hbSB8ICAgIDMgKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgTWFrZWZpbGUuYW0gfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDBhYjM4NTMuLjNlNzIzOTEgMTAwNjQ0CitpbmRleCAyMjZlNzlkLi42MmFkMThkIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuYW0KICsrKyBiL01ha2VmaWxlLmFtCi1AQCAtOCw4ICs4LDcgQEAgU1VCRElSUyA9CQkJCQkJCQlcCitAQCAtOSw4ICs5LDcgQEAgU1VCRElSUyA9CQkJCQkJCQlcCiAgCWRvY3MJCQkJCQkJCVwKICAJaWNvbnMJCQkJCQkJCVwKICAJcGl4bWFwcwkJCQkJCQkJXApAQCAtMjQsOCArMjYsNSBAQAogLQl0ZXN0cwogKwlwbwogIAotIEFVVE9NQUtFX09QVElPTlMgPQkJCQkJCQlcCi0gCTEuOQkJCQkJCQkJXAotLS0gCi0xLjcuNC40Ci0KKyBkaXN0Y2xlYW4tbG9jYWw6CisgCXJtIC1yZiAqLmNhY2hlICp+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4by9yZWR1Y2UtYnVpbGQtdG8tZXhvLWNzb3VyY2Utb25seS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvL3JlZHVjZS1idWlsZC10by1leG8tY3NvdXJjZS1vbmx5LnBhdGNoCmluZGV4IDk5MzE4ZDUuLjA3NjQ3NzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvL3JlZHVjZS1idWlsZC10by1leG8tY3NvdXJjZS1vbmx5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvL3JlZHVjZS1idWlsZC10by1leG8tY3NvdXJjZS1vbmx5LnBhdGNoCkBAIC0xMCw5ICsxMCwxMCBAQAogYnVpbGRpbmcgeGZjZS1wYWNrYWdlcyBmcm9tIGdpdCBpbnN0ZWFkIG9mIHRhcmJhbGwgdGhpcyBleG8tY3NvdXJjZS1uYXRpdmUgaXMKIHJlcXVpcmVkLgogCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CisKIC0tLQogIE1ha2VmaWxlLmFtICB8IDEwICstLS0tLS0tLS0KICBjb25maWd1cmUuYWMgfCAyMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00MCw3ICs0MSw3IEBACiAgZGlzdGNsZWFuLWxvY2FsOgogIAlybSAtcmYgKi5jYWNoZSAqfgogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYmE1Mzk1ZC4uMjYwNTA2NyAxMDA2NDQKK2luZGV4IDNmOTJkMWIuLjBkNGNjMzggMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTExNiwxNSArMTE2LDYgQEAgQUNfUFJPR19DQygpCkBAIC02NSw5ICs2Niw5IEBACiAgWERUX0NIRUNLX1BBQ0tBR0UoW0dMSUJdLCBbZ2xpYi0yLjBdLCBbMi40Mi4wXSkKIC1YRFRfQ0hFQ0tfUEFDS0FHRShbR0lPXSwgW2dpby0yLjBdLCBbMi40Mi4wXSkKIC1YRFRfQ0hFQ0tfUEFDS0FHRShbR1RLXSwgW2d0aystMi4wXSwgWzIuMjQuMF0pCi0tWERUX0NIRUNLX1BBQ0tBR0UoW0dUSzNdLCBbZ3RrKy0zLjBdLCBbMy4yMC4wXSkKKy1YRFRfQ0hFQ0tfUEFDS0FHRShbR1RLM10sIFtndGsrLTMuMF0sIFszLjIyLjBdKQogLVhEVF9DSEVDS19QQUNLQUdFKFtHVEhSRUFEXSwgW2d0aHJlYWQtMi4wXSwgWzIuNDIuMF0pCi0tWERUX0NIRUNLX1BBQ0tBR0UoW0xJQlhGQ0U0VVRJTF0sIFtsaWJ4ZmNlNHV0aWwtMS4wXSwgWzQuMTAuMF0pCistWERUX0NIRUNLX1BBQ0tBR0UoW0xJQlhGQ0U0VVRJTF0sIFtsaWJ4ZmNlNHV0aWwtMS4wXSwgWzQuMTIuMF0pCiAtWERUX0NIRUNLX1BBQ0tBR0UoW0xJQlhGQ0U0VUldLCBbbGlieGZjZTR1aS0xXSwgWzQuMTIuMF0pCiAtWERUX0NIRUNLX1BBQ0tBR0UoW0xJQlhGQ0U0VUkyXSwgW2xpYnhmY2U0dWktMl0sIFs0LjEyLjBdKQogLVhEVF9DSEVDS19PUFRJT05BTF9QQUNLQUdFKFtHSU9fVU5JWF0sIFtnaW8tdW5peC0yLjBdLCBbMi40Mi4wXSwgW2dpby11bml4XSwgW0dJTy1Vbml4IGZlYXR1cmVzXSkKQEAgLTgwLDUgKzgxLDUgQEAKICBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKgogIGRubCAqKiogQ2hlY2sgZm9yIGd0ay1kb2MgKioqCiAtLSAKLTIuOS40CisyLjE0LjMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG9fMC4xMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG9fMC4xMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTUwOGMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvXzAuMTEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLURFU0NSSVBUSU9OPSJBcHBsaWNhdGlvbiBsaWJyYXJ5IGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1ERVBFTkRTID0gImd0aysgbGlieGZjZTR1dGlsIGxpYnhmY2U0dWkgdmlydHVhbC9saWJ4MTEgbGlidXJpLXBlcmwtbmF0aXZlIGNhaXJvIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZ2xpYi0yLjAtbmF0aXZlIHhmY2U0LWRldi10b29scy1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IHhmY2UgcHl0aG9ubmF0aXZlIHBlcmxuYXRpdmUgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmUgPSAiIgotCi0jIFNSQ19VUkkgbXVzdCBmb2xsb3cgaW5oZXJpdGVkIG9uZQotU1JDX1VSSSArPSAiIFwKLSAgICBmaWxlOi8vZXhvLW5vLXRlc3RzLTAuOC5wYXRjaCBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAotICAgIGZpbGU6Ly9yZWR1Y2UtYnVpbGQtdG8tZXhvLWNzb3VyY2Utb25seS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZTU2MGVkZmE4ZGRmNzdlMjFjNDc4N2E2ZjYwMDE3MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZTg2MjlmMzM3ODNlYmExY2U2ZDA5MmE0MmMyODIxNzQ1OGEwY2MzZDFhZDc0NzQwOTdiOTE4NzA1NDk1NWMxIgotCi1QQUNLQUdFUyA9KyAiZXhvLWNzb3VyY2UiCi0KLSMgTm90ZTogcHl0aG9uIGJpbmRpbmdzIGRpZCBub3Qgd29yayBpbiBvZS1kZXYgYW5kIGFyZSBhYm91dCB0byBiZSBtb3ZlZCB0bwotIyBweXhmY2Ugc2VlIGh0dHA6Ly9jb21tZW50cy5nbWFuZS5vcmcvZ21hbmUuY29tcC5kZXNrdG9wLnhmY2UuZGV2ZWwudmVyc2lvbjQvMTk1NjAKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3hmY2U0LyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3hmY2U0L2V4by0xIFwKLSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvLmRlYnVnIFwKLSIKLQotRklMRVNfZXhvLWNzb3VyY2UgKz0gIiR7YmluZGlyfS9leG8tY3NvdXJjZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjEyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI1NmI1NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvXzAuMTIuMC5iYgpAQCAtMCwwICsxLDM5IEBACitERVNDUklQVElPTj0iQXBwbGljYXRpb24gbGlicmFyeSBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorREVQRU5EUyA9ICJndGsrIGxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIHZpcnR1YWwvbGlieDExIGxpYnVyaS1wZXJsLW5hdGl2ZSBjYWlybyIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gImdsaWItMi4wLW5hdGl2ZSB4ZmNlNC1kZXYtdG9vbHMtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKKworaW5oZXJpdCB4ZmNlIHB5dGhvbm5hdGl2ZSBwZXJsbmF0aXZlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlID0gIiIKKworIyBTUkNfVVJJIG11c3QgZm9sbG93IGluaGVyaXRlZCBvbmUKK1NSQ19VUkkgKz0gIiBcCisgICAgZmlsZTovL2V4by1uby10ZXN0cy0wLjgucGF0Y2ggXAorICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2ggXAorIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKKyAgICBmaWxlOi8vcmVkdWNlLWJ1aWxkLXRvLWV4by1jc291cmNlLW9ubHkucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzI0YWZjY2EyMjRmNWZiMjJiNTEwOTI2ZDI3NDBlNTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjRiODgyNzFhMzdkMGVjN2RjYTA2MmM3YmM2MWNhMzIzMTE2Zjc4NTUwOTJhYzM5Njk4YzQyMWEyZjMwYTE4ZiIKKworUEFDS0FHRVMgPSsgImV4by1jc291cmNlIgorCisjIE5vdGU6IHB5dGhvbiBiaW5kaW5ncyBkaWQgbm90IHdvcmsgaW4gb2UtZGV2IGFuZCBhcmUgYWJvdXQgdG8gYmUgbW92ZWQgdG8KKyMgcHl4ZmNlIHNlZSBodHRwOi8vY29tbWVudHMuZ21hbmUub3JnL2dtYW5lLmNvbXAuZGVza3RvcC54ZmNlLmRldmVsLnZlcnNpb240LzE5NTYwCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNC8gXAorICAgICAgICAgICAgICAgICR7bGliZGlyfS94ZmNlNC9leG8tMSBcCisiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzLy5kZWJ1ZyBcCisiCisKK0ZJTEVTX2V4by1jc291cmNlICs9ICIke2JpbmRpcn0vZXhvLWNzb3VyY2UiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2d0ay14ZmNlLWVuZ2luZS9ndGsteGZjZS1lbmdpbmUvZ2xpYi0yLjU0LWZ0YmZzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2d0ay14ZmNlLWVuZ2luZS9ndGsteGZjZS1lbmdpbmUvZ2xpYi0yLjU0LWZ0YmZzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiODkxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZ3RrLXhmY2UtZW5naW5lL2d0ay14ZmNlLWVuZ2luZS9nbGliLTIuNTQtZnRiZnMucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorRGVzY3JpcHRpb246IEZpeCBGVEJGUyB3aXRoIGdsaWIgMi41NAorIGdsaWItbWtlbnVtcyBub3cgZXhwZWN0cyBpbnB1dCBmaWxlcyB0byBiZSBVVEYtOCwKKyBmaXggdGhlIGVuY29kaW5nIG9mIGxpYmdub21ldWkvZ25vbWUtc2NvcmVzLmgKK0F1dGhvcjogQWRyaWFuIEJ1bmsgPGJ1bmtAZGViaWFuLm9yZz4KKworcG9ydGVkIGZyb206IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9ODcwNzM4CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworSW5kZXg6IGd0ay14ZmNlLWVuZ2luZS0zLjIuMC9ndGstMy4wL3hmY2Vfc3R5bGVfdHlwZXMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGd0ay14ZmNlLWVuZ2luZS0zLjIuMC5vcmlnL2d0ay0zLjAveGZjZV9zdHlsZV90eXBlcy5oCisrKysgZ3RrLXhmY2UtZW5naW5lLTMuMi4wL2d0ay0zLjAveGZjZV9zdHlsZV90eXBlcy5oCitAQCAtMTksNyArMTksNyBAQAorICAqCisgICogIFBvcnRpb25zIGJhc2VkIFRoaW5pY2UgcG9ydCBieSAKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgVGltIEdlcmxhIDx0aW1nQHJydi5uZXQ+LAorLSAqICAgICAgICAgICAgICAgICAgICAgICBUb21hcyDWZ3JlbiA8c3RyaWNAaW5nLnVtdS5zZSwKKysgKiAgICAgICAgICAgICAgICAgICAgICAgVG9tYXMgw5ZncmVuIDxzdHJpY0BpbmcudW11LnNlPiwKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgUmljaGFyZCBIdWx0IDxyaHVsdEBjb2RlZmFjdG9yeS5zZT4KKyAgKiAgUG9ydGlvbnMgYmFzZWQgb24gU21vb3RoIHRoZW1lIGJ5CisgICogICAgICAgICAgICAgICAgICAgICAgIEFuZHJldyBKb2huc29uIDxhamdlbml1c0Bhamdlbml1cy51cz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9ndGsteGZjZS1lbmdpbmUvZ3RrLXhmY2UtZW5naW5lXzMuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2d0ay14ZmNlLWVuZ2luZS9ndGsteGZjZS1lbmdpbmVfMy4yLjAuYmIKaW5kZXggYWU3Zjk5Zi4uZWY0ZjRiZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2d0ay14ZmNlLWVuZ2luZS9ndGsteGZjZS1lbmdpbmVfMy4yLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2d0ay14ZmNlLWVuZ2luZS9ndGsteGZjZS1lbmdpbmVfMy4yLjAuYmIKQEAgLTgsNiArOCw4IEBACiAKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKK1NSQ19VUkkgKz0gImZpbGU6Ly9nbGliLTIuNTQtZnRiZnMucGF0Y2giCisKIFNSQ19VUklbbWQ1c3VtXSA9ICIzNjNkNmMxNmE0OGEwMGUyNmQ0NWM0NWMyZTFmZDczOSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NzVjOWMzYmRhOTZmYWYwNTBhMjIyNDY0OWNjNDIxMjlmZmI2NjJjNGRlMzNhZGQ4YzBmZDFmYjg2MGI0N2VkIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvbGlieGZjZTR1aS9maWxlcy8wMDAxLWxpYnhmY2U0a2JkLXByaXZhdGUteGZjZTQta2V5Ym9hcmQtc2hvcnRjdXRzLnhtbC1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvbGlieGZjZTR1aS9maWxlcy8wMDAxLWxpYnhmY2U0a2JkLXByaXZhdGUteGZjZTQta2V5Ym9hcmQtc2hvcnRjdXRzLnhtbC1maXgucGF0Y2gKaW5kZXggYjhjOTE3OC4uNmQxMDdiMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2xpYnhmY2U0dWkvZmlsZXMvMDAwMS1saWJ4ZmNlNGtiZC1wcml2YXRlLXhmY2U0LWtleWJvYXJkLXNob3J0Y3V0cy54bWwtZml4LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9saWJ4ZmNlNHVpL2ZpbGVzLzAwMDEtbGlieGZjZTRrYmQtcHJpdmF0ZS14ZmNlNC1rZXlib2FyZC1zaG9ydGN1dHMueG1sLWZpeC5wYXRjaApAQCAtOSw2ICs5LDcgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CisKIC0tLQogIGxpYnhmY2U0a2JkLXByaXZhdGUveGZjZTQta2V5Ym9hcmQtc2hvcnRjdXRzLnhtbCB8ICAgIDQgKysrKwogIDEgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQpAQCAtMTcsOCArMTgsOCBAQAogaW5kZXggNzIzYTEwZC4uZTY1MDJmMyAxMDA2NDQKIC0tLSBhL2xpYnhmY2U0a2JkLXByaXZhdGUveGZjZTQta2V5Ym9hcmQtc2hvcnRjdXRzLnhtbAogKysrIGIvbGlieGZjZTRrYmQtcHJpdmF0ZS94ZmNlNC1rZXlib2FyZC1zaG9ydGN1dHMueG1sCi1AQCAtNjYsNCArNjYsOCBAQAotICAgICAgIDxwcm9wZXJ0eSBuYW1lPSImbHQ7Q29udHJvbCZndDtGMTIiIHR5cGU9InN0cmluZyIgdmFsdWU9IndvcmtzcGFjZV8xMl9rZXkiLz4KK0BAIC03NSw0ICs3NSw4IEBACisgICAgICAgPHByb3BlcnR5IG5hbWU9IiZsdDtQcmltYXJ5Jmd0O0YxMiIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0id29ya3NwYWNlXzEyX2tleSIvPgogICAgICA8L3Byb3BlcnR5PgogICAgPC9wcm9wZXJ0eT4KICsgIDxwcm9wZXJ0eSBuYW1lPSJwcm92aWRlcnMiIHR5cGU9ImFycmF5Ij4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC14ZmNlLWV4dGVuZGVkLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtZXh0ZW5kZWQuYmIKaW5kZXggY2MyMzFiNC4uYjczYzllZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtZXh0ZW5kZWQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtZXh0ZW5kZWQuYmIKQEAgLTUsNyArNSw5IEBACiAKIFBSID0gInIxMCIKIAotaW5oZXJpdCBwYWNrYWdlZ3JvdXAKK2luaGVyaXQgcGFja2FnZWdyb3VwIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiAjIG1hbmRhdG9yeQogUkRFUEVORFNfJHtQTn0gPSAiIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXIvdGh1bmFyXzEuNi4xMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXIvdGh1bmFyXzEuNi4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYxYjIzZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyL3RodW5hcl8xLjYuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIkZpbGUgbWFuYWdlciBmb3IgdGhlIFhmY2UgRGVza3RvcCBFbnZpcm9ubWVudCIKLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotREVQRU5EUyA9ICJleG8gZ2xpYi0yLjAgZ3RrKyBnZGstcGl4YnVmIGxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIHhmY29uZiBsaWJzbSBkYnVzLWdsaWIgc3RhcnR1cC1ub3RpZmljYXRpb24gbGlibm90aWZ5IHhmY2U0LXBhbmVsIHVkZXYiCi0KLWluaGVyaXQgeGZjZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vYXJjaGl2ZS54ZmNlLm9yZy9zcmMveGZjZS8ke0JQTn0vJHtAJyR7UFZ9J1swOjNdfS9UaHVuYXItJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxYmRmM2M0YTU3ZmY4ODZjNTEyMzQxZjI0YjVlMGU4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYjIyMDkxZjA3ZWM2ZGUyYzlkOWQ4OWM2MTI4OWQyYmMzNDM2YjM2YzhjNTNjY2JjOWMzMmNhOGE5OWYyMDg2IgotCi1TID0gIiR7V09SS0RJUn0vVGh1bmFyLSR7UFZ9LyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGNyZSwtLWRpc2FibGUtcGNyZSxsaWJwY3JlIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2xpYmRpcn0vdGh1bmFyeC0yLyogXAotICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyogXAotICAgICR7bGliZGlyfS9UaHVuYXIvW1R0XWh1bmFyKiBcCi0gICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgJHtkYXRhZGlyfS9UaHVuYXIgXAotICAgICR7ZGF0YWRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8qIFwKLSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vdGh1bmFyeC0yLy5kZWJ1Zy8gXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8uZGVidWcvIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L1RodW5hci8uZGVidWcvIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJndmZzIGd2ZnNkLXRyYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci90aHVuYXJfMS42LjE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci90aHVuYXJfMS42LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MGUyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyL3RodW5hcl8xLjYuMTUuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJGaWxlIG1hbmFnZXIgZm9yIHRoZSBYZmNlIERlc2t0b3AgRW52aXJvbm1lbnQiCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKK0RFUEVORFMgPSAiZXhvIGdsaWItMi4wIGd0aysgZ2RrLXBpeGJ1ZiBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSB4ZmNvbmYgbGlic20gZGJ1cy1nbGliIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGxpYm5vdGlmeSB4ZmNlNC1wYW5lbCB1ZGV2IgorCitpbmhlcml0IHhmY2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUueGZjZS5vcmcvc3JjL3hmY2UvJHtCUE59LyR7QCcke1BWfSdbMDozXX0vVGh1bmFyLSR7UFZ9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiOGZlYTJhZjY5YzNhY2JiMjczZmQxYTE3N2QzZDhlNDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTgxMjkxYTg1MTlmNDk1ZTBhMDU5ZmYxZjJkMjk2MDhiYzZkMzdjMGJlODNiMWYzOGYzYzlhYTI1ZjhkMjUyZCIKKworUyA9ICIke1dPUktESVJ9L1RodW5hci0ke1BWfS8iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0tZW5hYmxlLXBjcmUsLS1kaXNhYmxlLXBjcmUsbGlicGNyZSIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtsaWJkaXJ9L3RodW5hcngtMi8qIFwKKyAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8qIFwKKyAgICAke2xpYmRpcn0vVGh1bmFyL1tUdF1odW5hciogXAorICAgICR7ZGF0YWRpcn0vYXBwZGF0YSBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICR7ZGF0YWRpcn0vVGh1bmFyIFwKKyAgICAke2RhdGFkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvKiBcCisiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3RodW5hcngtMi8uZGVidWcvIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvLmRlYnVnLyBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9UaHVuYXIvLmRlYnVnLyIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3ZmcyBndmZzZC10cmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90dW1ibGVyL3R1bWJsZXJfMC4xLjMxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3R1bWJsZXIvdHVtYmxlcl8wLjEuMzEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmNTQxOWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3R1bWJsZXIvdHVtYmxlcl8wLjEuMzEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1ERVNDUklQVElPTj0iVGh1bWJuYWlsIHNlcnZpY2UgaW1wbGVtZW50aW5nIHRoZSB0aHVtYm5haWwgbWFuYWdlbWVudCBELUJ1cyBzcGVjaWZpY2F0aW9uIgotU0VDVElPTiA9ICJ4MTEvbGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLURFUEVORFMgPSAiZGJ1cy1nbGliIGRidXMtZ2xpYi1uYXRpdmUgZnJlZXR5cGUgZ2RrLXBpeGJ1ZiBwb3BwbGVyIGN1cmwgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBsaWJ4bWwyIGxpYmdzZiIKLQotaW5oZXJpdCB4ZmNlIGd0ay1kb2MKLQotU1JDX1VSSVttZDVzdW1dID0gIjAwNjcwNTRlNmYxZjkwYTEzZjkwZmFhZGZjYTFlODllIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwZmQzMjkyNzNmZjZhYzk4ODg1ZWFkZTRjM2Q4Yzg3YTRkZDA4MTZmNzEzNjQ2MTMwODA4YmZhOTBiODcxNzMiCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jb25maWd1cmUtdXNlLXBrZy1jb25maWctZm9yLWZyZWV0eXBlMi5wYXRjaCIKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tnc3RyZWFtZXItdGh1bWJuYWlsZXJdID0gIi0tZW5hYmxlLWdzdHJlYW1lci10aHVtYm5haWxlciwtLWRpc2FibGUtZ3N0cmVhbWVyLXRodW1ibmFpbGVyLGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS90dW1ibGVyLTEvdHVtYmxlcmQgXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS90dW1ibGVyLTEvcGx1Z2lucy8qLnNvIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vdHVtYmxlci0xL3BsdWdpbnMvY2FjaGUvKi5zbyBcCi0iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3R1bWJsZXItMS9wbHVnaW5zLyoubGEgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vdHVtYmxlci0xL3BsdWdpbnMvY2FjaGUvKi5sYSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3R1bWJsZXItMS8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vdHVtYmxlci0xL3BsdWdpbnMvLmRlYnVnIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3R1bWJsZXItMS9wbHVnaW5zL2NhY2hlLy5kZWJ1ZyBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdHVtYmxlci90dW1ibGVyXzAuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3R1bWJsZXIvdHVtYmxlcl8wLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTBjNTU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3R1bWJsZXIvdHVtYmxlcl8wLjIuMC5iYgpAQCAtMCwwICsxLDM1IEBACitERVNDUklQVElPTj0iVGh1bWJuYWlsIHNlcnZpY2UgaW1wbGVtZW50aW5nIHRoZSB0aHVtYm5haWwgbWFuYWdlbWVudCBELUJ1cyBzcGVjaWZpY2F0aW9uIgorU0VDVElPTiA9ICJ4MTEvbGlicyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAiZGJ1cy1nbGliIGRidXMtZ2xpYi1uYXRpdmUgZnJlZXR5cGUgZ2RrLXBpeGJ1ZiBwb3BwbGVyIGN1cmwgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBsaWJ4bWwyIGxpYmdzZiIKKworaW5oZXJpdCB4ZmNlIGd0ay1kb2MKKworU1JDX1VSSVttZDVzdW1dID0gImRkNWY5YmFlNmEyNDcwZWI1ZmZmMGRjOWVkZDNlYTA5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRlMjdhNTk2OTRiMGE1Y2M2OWViY2NiZGIwMGM3MjRlNjcwYjViN2MzMGJjNGRjMGI0NjFhYWM5M2YyMzRmYWMiCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jb25maWd1cmUtdXNlLXBrZy1jb25maWctZm9yLWZyZWV0eXBlMi5wYXRjaCIKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tnc3RyZWFtZXItdGh1bWJuYWlsZXJdID0gIi0tZW5hYmxlLWdzdHJlYW1lci10aHVtYm5haWxlciwtLWRpc2FibGUtZ3N0cmVhbWVyLXRodW1ibmFpbGVyLGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIE1ha2VmaWxlIHNlZW1zIHRvIHJhY2Ugb24gY3JlYXRpb24gb2Ygc3ltbGluay4gU28gZW5zdXJlIGNyZWF0aW9uIGhlcmUKKyAgICAjIHVudGlsIGZpeGVkIHByb3Blcmx5CisgICAgbG4gLXNmIHR1bWJsZXIteGRnLWNhY2hlLnNvICR7RH0ke2xpYmRpcn0vdHVtYmxlci0xL3BsdWdpbnMvY2FjaGUvdHVtYmxlci1jYWNoZS1wbHVnaW4uc28KK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vdHVtYmxlci0xL3R1bWJsZXJkIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vdHVtYmxlci0xL3BsdWdpbnMvKi5zbyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3R1bWJsZXItMS9wbHVnaW5zL2NhY2hlLyouc28gXAorIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS90dW1ibGVyLTEvcGx1Z2lucy8qLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3R1bWJsZXItMS9wbHVnaW5zL2NhY2hlLyoubGEiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS90dW1ibGVyLTEvLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3R1bWJsZXItMS9wbHVnaW5zLy5kZWJ1ZyBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS90dW1ibGVyLTEvcGx1Z2lucy9jYWNoZS8uZGVidWcgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LWFwcGZpbmRlci94ZmNlNC1hcHBmaW5kZXJfNC4xMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LWFwcGZpbmRlci94ZmNlNC1hcHBmaW5kZXJfNC4xMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzVhODI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1hcHBmaW5kZXIveGZjZTQtYXBwZmluZGVyXzQuMTIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLURFU0NSSVBUSU9OPSJYZmNlNCBBcHBsaWNhdGlvbiBGaW5kZXIiCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLURFUEVORFM9ImdsaWItMi4wIGd0aysgbGlieGZjZTR1dGlsIGxpYnhmY2U0dWkgZ2FyY29uIGRidXMtZ2xpYiB4ZmNvbmYiCi0KLWluaGVyaXQgeGZjZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjBiMjM4YjMwNjg2Mzg4YzUwN2MxMTliMTI2NjRmMWExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJhZDRhNTgwMTlhNzZhNmI2NGE4MTYwNTBkYjI1Zjk2ODU0OTE3YzJmMmU4OWQ2YTlkZjZjMThlNmM4NGM1NjciCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FwcGRhdGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtYXBwZmluZGVyL3hmY2U0LWFwcGZpbmRlcl80LjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtYXBwZmluZGVyL3hmY2U0LWFwcGZpbmRlcl80LjEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U3MzkxMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1hcHBmaW5kZXIveGZjZTQtYXBwZmluZGVyXzQuMTMuMC5iYgpAQCAtMCwwICsxLDE0IEBACitERVNDUklQVElPTj0iWGZjZTQgQXBwbGljYXRpb24gRmluZGVyIgorU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCitERVBFTkRTPSJnbGliLTIuMCBndGsrMyBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSBnYXJjb24gZGJ1cy1nbGliIHhmY29uZiIKKworaW5oZXJpdCB4ZmNlIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmI2Y2YwODBjODkxZjc5NDU5NTNmODA4NGE5MDE1NTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzBlYjNiMjllYmEzY2ZhOTE3NWVkMzUxNzRlODNhMjFmYWEyYTI0MjNkZGI3OTUwMWZlODg0NmNjNDMwZTNhZSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYXBwZGF0YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wYW5lbC94ZmNlNC1wYW5lbF80LjEyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwveGZjZTQtcGFuZWxfNC4xMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDMzMmNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wYW5lbC94ZmNlNC1wYW5lbF80LjEyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1TVU1NQVJZID0gIlhmY2U0IFBhbmVsIgotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjZhOGJkNzVkOGY4NDk4YmRiYmU2NGEyNzc5MWQ0ZWUiCi1ERVBFTkRTID0gImxpYnhmY2U0dXRpbCBnYXJjb24gbGlieGZjZTR1aSB4ZmNvbmYgZXhvIGd0aysgZ3RrKzMgZGJ1cyBjYWlybyB2aXJ0dWFsL2xpYngxMSBsaWJ4bWwyIGxpYnduY2siCi0KLWluaGVyaXQgeGZjZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGI5NDNmMmU3MmEzNjkzZGRkYjFhZjU1OTgyNmNiNjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTNkNThiODBjY2E5YzllYjU4YWRiMjgxYmM3NTQwNGRmN2NmNmNhZTg5ZjdmOThiYjlmMzg2OTAwMDlhYTJlOCIKLVNSQ19VUkkgKz0gIiBcCi0gICAgZmlsZTovLzAwMDEtY2xvY2stdGltZS1tYWtlLWNoYW5nZS1vZi1zeXN0ZW0tcy10aW1lem9uZS1jaGFuZ2UtdC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItd2luZG93bWVudS1kby1ub3QtZGlzcGxheS1kZXNrdG9wLWljb24td2hlbi1uby13aW5kby5wYXRjaCBcCi0iCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtZ3RrMyIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7Ci0gICAgcGx1Z2luX2RpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8nKQotICAgIHBsdWdpbl9uYW1lID0gZC5leHBhbmQoJyR7UE59LXBsdWdpbi0lcycpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luX2RpciwgJ15saWIoLiopLnNvJCcsIHBsdWdpbl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICcke1BOfSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJywgcHJlcGVuZD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgIGF1eF9maWxlc19wYXR0ZXJuPVsnJHtkYXRhZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyVzLmRlc2t0b3AnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtzeXNjb25mZGlyfS94ZGcveGZjZS9wYW5lbC8lcy0qJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzLyotJXMucG5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7YmluZGlyfS8qJXMqJ10pCi19Ci0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1wbHVnaW4tLioiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1ndGszIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL21pZ3JhdGUgXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC93cmFwcGVyLTEuMCIKLQotRklMRVNfJHtQTn0tZ3RrMyA9ICIgXAotICAgICR7bGliZGlyfS9saWJ4ZmNlNHBhbmVsLTIuMCR7U09MSUJTfSBcCi0gICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3dyYXBwZXItMi4wIFwKLSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvLmRlYnVnIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wYW5lbC94ZmNlNC1wYW5lbF80LjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwveGZjZTQtcGFuZWxfNC4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYzlhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwveGZjZTQtcGFuZWxfNC4xMi4yLmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiWGZjZTQgUGFuZWwiCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNmE4YmQ3NWQ4Zjg0OThiZGJiZTY0YTI3NzkxZDRlZSIKK0RFUEVORFMgPSAibGlieGZjZTR1dGlsIGdhcmNvbiBsaWJ4ZmNlNHVpIHhmY29uZiBleG8gZ3RrKyBndGsrMyBkYnVzIGNhaXJvIHZpcnR1YWwvbGlieDExIGxpYnhtbDIgbGlid25jayIKKworaW5oZXJpdCB4ZmNlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGd0ay1pY29uLWNhY2hlCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MDNjOWFhYmMyOTI1ZGM5N2Y5NmRlMTI1YzUyYmEyZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MjA1OGFiYjgxYjhmODc2OTFkMzk5OTYyNzQ0N2RlNzFjMzI4NWJjZjA1NWYzMDhhYWI1Y2VmYWIyZGUwY2U5IgorU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1jbG9jay10aW1lLW1ha2UtY2hhbmdlLW9mLXN5c3RlbS1zLXRpbWV6b25lLWNoYW5nZS10LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi13aW5kb3dtZW51LWRvLW5vdC1kaXNwbGF5LWRlc2t0b3AtaWNvbi13aGVuLW5vLXdpbmRvLnBhdGNoIFwKKyIKKworRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1ndGszIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBwbHVnaW5fZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLycpCisgICAgcGx1Z2luX25hbWUgPSBkLmV4cGFuZCgnJHtQTn0tcGx1Z2luLSVzJykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5fZGlyLCAnXmxpYiguKikuc28kJywgcGx1Z2luX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgJyR7UE59IHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgYXV4X2ZpbGVzX3BhdHRlcm49Wycke2RhdGFkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvJXMuZGVza3RvcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke3N5c2NvbmZkaXJ9L3hkZy94ZmNlL3BhbmVsLyVzLSonLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMvKi0lcy5wbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtiaW5kaXJ9LyolcyonXSkKK30KKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LXBsdWdpbi0uKiIKKworUEFDS0FHRVMgPSsgIiR7UE59LWd0azMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0veGZjZTQvcGFuZWwvbWlncmF0ZSBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3dyYXBwZXItMS4wIgorCitGSUxFU18ke1BOfS1ndGszID0gIiBcCisgICAgJHtsaWJkaXJ9L2xpYnhmY2U0cGFuZWwtMi4wJHtTT0xJQlN9IFwKKyAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvd3JhcHBlci0yLjAgXAorIgorRklMRVNfJHtQTn0tZGJnICs9ICIgXAorICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLy5kZWJ1ZyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcG93ZXItbWFuYWdlci94ZmNlNC1wb3dlci1tYW5hZ2VyXzEuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXBvd2VyLW1hbmFnZXIveGZjZTQtcG93ZXItbWFuYWdlcl8xLjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhkMDBkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcG93ZXItbWFuYWdlci94ZmNlNC1wb3dlci1tYW5hZ2VyXzEuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJQb3dlciBtYW5hZ2VyIGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvYXBwbGljYXRpb25zL3hmY2U0LXBvd2VyLW1hbmFnZXIiCi1TRUNUSU9OID0gIngxMSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotaW5oZXJpdCB4ZmNlIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1ERVBFTkRTICs9ICJndGsrMyBnbGliLTIuMCBkYnVzLWdsaWIgeGZjb25mIGxpYnhmY2U0dWkgbGlieGZjZTR1dGlsIGxpYm5vdGlmeSBcCi0gICAgICAgICAgIGxpYnhyYW5kciB2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IHhmY2U0LXBhbmVsIHVwb3dlciBsaWJ4c2NybnNhdmVyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmUyZTI0YTFhMjI5MTJkNmE1NjFiYTYxNTU4ODc1MDMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmRlMzE1N2UwNmFiMzFmZjIzNjQ4ZDE2M2Q1M2VlNTA5NWY3ODE5NTQ0YTlmNDhkM2E5NmQ1NzgyOTg1N2YyYiIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtbmV0d29yay1tYW5hZ2VyIFwKLSAgICAtLWVuYWJsZS1wYW5lbC1wbHVnaW5zIFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXBvbGtpdCwgLS1kaXNhYmxlLXBvbGtpdCwgcG9sa2l0IgotCi1QQUNLQUdFUyArPSAieGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbiIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKLSIKLQotRklMRVNfeGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbiA9ICIgXAotICAgICR7bGliZGlyfS94ZmNlNCBcCi0gICAgJHtkYXRhZGlyfS94ZmNlNCBcCi0iCi0KLVJERVBFTkRTX3hmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4gPSAiJHtQTn0iCi1SREVQRU5EU18ke1BOfSA9ICJuZXR3b3JrbWFuYWdlciAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJycsJ2NvbnNvbGVraXQnLGQpfSIKLQotIyB4ZmNlNC1icmlnaHRuZXNzLXBsdWdpbiB3YXMgcmVwbGFjZWQgYnkgeGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbgotUlBST1ZJREVTX3hmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4gKz0gInhmY2U0LWJyaWdodG5lc3MtcGx1Z2luIgotUlJFUExBQ0VTX3hmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4gKz0gInhmY2U0LWJyaWdodG5lc3MtcGx1Z2luIgotUkNPTkZMSUNUU194ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luICs9ICJ4ZmNlNC1icmlnaHRuZXNzLXBsdWdpbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wb3dlci1tYW5hZ2VyL3hmY2U0LXBvd2VyLW1hbmFnZXJfMS42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcG93ZXItbWFuYWdlci94ZmNlNC1wb3dlci1tYW5hZ2VyXzEuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMTE3YjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcG93ZXItbWFuYWdlci94ZmNlNC1wb3dlci1tYW5hZ2VyXzEuNi4xLmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiUG93ZXIgbWFuYWdlciBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL2FwcGxpY2F0aW9ucy94ZmNlNC1wb3dlci1tYW5hZ2VyIgorU0VDVElPTiA9ICJ4MTEiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCisKK2luaGVyaXQgeGZjZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworREVQRU5EUyArPSAiZ3RrKzMgZ2xpYi0yLjAgZGJ1cy1nbGliIHhmY29uZiBsaWJ4ZmNlNHVpIGxpYnhmY2U0dXRpbCBsaWJub3RpZnkgXAorICAgICAgICAgICBsaWJ4cmFuZHIgdmlydHVhbC9saWJ4MTEgbGlieGV4dCB4ZmNlNC1wYW5lbCB1cG93ZXIgbGlieHNjcm5zYXZlciIKKworU1JDX1VSSVttZDVzdW1dID0gIjE3ZjBlNjQ2NGFkNmIzYmM2YTY1N2Y1OTViZjkxNDMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlYTgyNTQ1MjM0M2I4OTU1NjYwNjgwMThiNmQ1MDc4NjA4ZjhmNDZjZTgwNzViYTZiYmI0Yjg0OGY0ODY1NmIiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZW5hYmxlLW5ldHdvcmstbWFuYWdlciBcCisgICAgLS1lbmFibGUtcGFuZWwtcGx1Z2lucyBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1wb2xraXQsIC0tZGlzYWJsZS1wb2xraXQsIHBvbGtpdCIKKworUEFDS0FHRVMgKz0gInhmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4iCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICR7ZGF0YWRpcn0vYXBwZGF0YSBcCisiCisKK0ZJTEVTX3hmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4gPSAiIFwKKyAgICAke2xpYmRpcn0veGZjZTQgXAorICAgICR7ZGF0YWRpcn0veGZjZTQgXAorIgorCitSREVQRU5EU194ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0gPSAibmV0d29ya21hbmFnZXIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcnLCdjb25zb2xla2l0JyxkKX0iCisKKyMgeGZjZTQtYnJpZ2h0bmVzcy1wbHVnaW4gd2FzIHJlcGxhY2VkIGJ5IHhmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4KK1JQUk9WSURFU194ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luICs9ICJ4ZmNlNC1icmlnaHRuZXNzLXBsdWdpbiIKK1JSRVBMQUNFU194ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luICs9ICJ4ZmNlNC1icmlnaHRuZXNzLXBsdWdpbiIKK1JDT05GTElDVFNfeGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbiArPSAieGZjZTQtYnJpZ2h0bmVzcy1wbHVnaW4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2V0dGluZ3MveGZjZTQtc2V0dGluZ3NfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNldHRpbmdzL3hmY2U0LXNldHRpbmdzX2dpdC5iYgppbmRleCA3NzFkYTJjLi5iZjliZDMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2V0dGluZ3MveGZjZTQtc2V0dGluZ3NfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1zZXR0aW5ncy94ZmNlNC1zZXR0aW5nc19naXQuYmIKQEAgLTEzLDEyICsxMywxMiBAQAogIyArIG1pbm9yIGJ1Z2ZpeGVzIC0gc2VudCBtYWlubGluZSBidXQgbm8gcmVzcG9uc2UKICMgKyBvcHRpb24gdG8gaGlkZSBtb3VzZXBvaW50ZXIgZm9yIGEgc3BlY2lmaWMgKHRvdWNoKSBpbnB1dCBkZXZpY2UgLSBzZW50IG1haW5saW5lIGJ1dCBubyByZXNwb25zZQogU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2dpdGh1Yi5jb20vc2Nobml0emVsdG9ueS94ZmNlNC1zZXR0aW5ncy5naXQ7cHJvdG9jb2w9Z2l0O2JyYW5jaD1mb3Itb2UtNC4xMi4wLTEgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vc2Nobml0emVsdG9ueS94ZmNlNC1zZXR0aW5ncy5naXQ7cHJvdG9jb2w9Z2l0O2JyYW5jaD1mb3Itb2UtNC4xMi4zIFwKICAgICBmaWxlOi8vMDAwMS14c2V0dGluZ3MueG1sLVNldC1kZWZhdWx0LXRoZW1lcy5wYXRjaCBcCiAiCi1TUkNSRVYgPSAiYzY2ODNjYjJjZmY0ODljMTZjMmM3YjVlYWI0MDE3YmI0NjFmMDdmMSIKK1NSQ1JFViA9ICJiNzAxYWM4YjY2YjgzYzE3NDY5ZGQ1MDA5ZGE1MWVlYjU5ZWJhNDQyIgogUyA9ICIke1dPUktESVJ9L2dpdCIKLVBWID0gIjQuMTIuMCtnaXQke1NSQ1BWfSIKK1BWID0gIjQuMTIuMytnaXQke1NSQ1BWfSIKIAogRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgLS1kaXNhYmxlLWRlYnVnIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZkZXNrdG9wL3hmZGVza3RvcF80LjEyLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZkZXNrdG9wL3hmZGVza3RvcF80LjEyLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZWNmODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmZGVza3RvcC94ZmRlc2t0b3BfNC4xMi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJYZmNlNCBEZXNrdG9wIE1hbmFnZXIiCi1TRUNUSU9OID0gIngxMS9iYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotREVQRU5EUyA9ICJnbGliLTIuMCBndGsrIGxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIGxpYnduY2sgeGZjb25mIGRidXMtZ2xpYiBkYnVzLWdsaWItbmF0aXZlIHRodW5hciBnYXJjb24gZXhvIgotCi1pbmhlcml0IHhmY2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYjM0ZjRmMzMzZDdkMTIyZjE2ODhkMmYxNTUyMDJjOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhOGE4ZDkzNzQ0ZDg0MmNhNmFjMWY5YmQyYzg3ODllZTE3ODkzN2JjYTdlMTcwZTUyMzljYmRiZWYzMDUyMGFjIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tub3RpZnldID0gIi0tZW5hYmxlLW5vdGlmaWNhdGlvbnMsLS1kaXNhYmxlLW5vdGlmaWNhdGlvbnMsbGlibm90aWZ5IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9iYWNrZ3JvdW5kcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmRlc2t0b3AveGZkZXNrdG9wXzQuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmRlc2t0b3AveGZkZXNrdG9wXzQuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWNiZTcxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmZGVza3RvcC94ZmRlc2t0b3BfNC4xMi40LmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiWGZjZTQgRGVza3RvcCBNYW5hZ2VyIgorU0VDVElPTiA9ICJ4MTEvYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKyBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSBsaWJ3bmNrIHhmY29uZiBkYnVzLWdsaWIgZGJ1cy1nbGliLW5hdGl2ZSB0aHVuYXIgZ2FyY29uIGV4byIKKworaW5oZXJpdCB4ZmNlIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzU3MTg4OTM2OGJlNzJkZjE4NWNlMmQ0NzBmMzcxOTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk4YTM1NTEwNTYyOTA3ZTE0MzFkNWFkYmZhODMwNzQ4NGEyMzVjMWRlYzZhNDNlMmQ1OGQyYWM0MjQxZjFjYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbm90aWZ5XSA9ICItLWVuYWJsZS1ub3RpZmljYXRpb25zLC0tZGlzYWJsZS1ub3RpZmljYXRpb25zLGxpYm5vdGlmeSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYmFja2dyb3VuZHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvUkVBRE1FLm1kIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL1JFQURNRS5tZAppbmRleCBmZTFjMmYzLi5iNDk0MDViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvUkVBRE1FLm1kCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9SRUFETUUubWQKQEAgLTEwLDEwICsxMCwxMSBAQAogIyMgUXVpY2sgbGlua3MKIAogKiBHaXQgcmVwb3NpdG9yeSB3ZWIgZnJvbnRlbmQ6Ci0gIDxodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9tZXRhLXJhc3BiZXJyeXBpLz4KKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9hZ2hlcnphbi9tZXRhLXJhc3BiZXJyeXBpPgogKiBNYWlsaW5nIGxpc3QgKHlvY3RvIG1haWxpbmcgbGlzdCk6IDx5b2N0b0B5b2N0b3Byb2plY3Qub3JnPgogKiBJc3N1ZXMgbWFuYWdlbWVudCAoR2l0aHViIElzc3Vlcyk6CiAgIDxodHRwczovL2dpdGh1Yi5jb20vYWdoZXJ6YW4vbWV0YS1yYXNwYmVycnlwaS9pc3N1ZXM+CisqIERvY3VtZW50YXRpb246IDxodHRwOi8vbWV0YS1yYXNwYmVycnlwaS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvPgogCiAjIyBEZXNjcmlwdGlvbgogCkBAIC0zMywxMiArMzQsMTIgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogKiBVUkk6IGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKLSAgKiBicmFuY2g6IHJvY2tvCisgICogYnJhbmNoOiBtYXN0ZXIKICAgKiByZXZpc2lvbjogSEVBRAogCiAqIFVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvbWV0YS1vcGVuZW1iZWRkZWQKICAgKiBsYXllcnM6IG1ldGEtb2UsIG1ldGEtbXVsdGltZWRpYSwgbWV0YS1uZXR3b3JraW5nLCBtZXRhLXB5dGhvbgotICAqIGJyYW5jaDogcm9ja28KKyAgKiBicmFuY2g6IG1hc3RlcgogICAqIHJldmlzaW9uOiBIRUFECiAKICMjIFF1aWNrIFN0YXJ0CkBAIC00Niw3ICs0Nyw3IEBACiAxLiBzb3VyY2UgcG9reS9vZS1pbml0LWJ1aWxkLWVudiBycGktYnVpbGQKIDIuIEFkZCB0aGlzIGxheWVyIHRvIGJibGF5ZXJzLmNvbmYgYW5kIHRoZSBkZXBlbmRlbmNpZXMgYWJvdmUKIDMuIFNldCBNQUNISU5FIGluIGxvY2FsLmNvbmYgdG8gb25lIG9mIHRoZSBzdXBwb3J0ZWQgYm9hcmRzCi00LiBiaXRiYWtlIHJwaS1od3VwLWltYWdlCis0LiBiaXRiYWtlIGNvcmUtaW1hZ2UtYmFzZQogNS4gZGQgdG8gYSBTRCBjYXJkIHRoZSBnZW5lcmF0ZWQgc2RpbWcgZmlsZSAodXNlIHh6Y2F0IGlmIHJwaS1zZGltZy54eiBpcyB1c2VkKQogNi4gQm9vdCB5b3VyIFJQSS4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NsYXNzZXMvc2RjYXJkX2ltYWdlLXJwaS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NsYXNzZXMvc2RjYXJkX2ltYWdlLXJwaS5iYmNsYXNzCmluZGV4IDJkZDkzMjYuLmYwMzU5NWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jbGFzc2VzL3NkY2FyZF9pbWFnZS1ycGkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY2xhc3Nlcy9zZGNhcmRfaW1hZ2UtcnBpLmJiY2xhc3MKQEAgLTEsNyArMSw3IEBACiBpbmhlcml0IGltYWdlX3R5cGVzCiAKICMKLSMgQ3JlYXRlIGFuIGltYWdlIHRoYXQgY2FuIGJ5IHdyaXR0ZW4gb250byBhIFNEIGNhcmQgdXNpbmcgZGQuCisjIENyZWF0ZSBhbiBpbWFnZSB0aGF0IGNhbiBiZSB3cml0dGVuIG9udG8gYSBTRCBjYXJkIHVzaW5nIGRkLgogIwogIyBUaGUgZGlzayBsYXlvdXQgdXNlZCBpczoKICMKQEAgLTU4LDYgKzU4LDggQEAKIAkJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdSUElfVVNFX1VfQk9PVCcsICcxJywgJ3UtYm9vdDpkb19kZXBsb3knLCAnJyxkKX0gXAogCQkJIgogCitkb19pbWFnZV9ycGlfc2RpbWdbcmVjcmRlcHNdID0gImRvX2J1aWxkIgorCiAjIFNEIGNhcmQgaW1hZ2UgbmFtZQogU0RJTUcgPSAiJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ucm9vdGZzLnJwaS1zZGltZyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL2xheWVyLmNvbmYKaW5kZXggYmJkY2UxNC4uY2ZjMjIzNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9sYXllci5jb25mCkBAIC05LDYgKzksOCBAQAogQkJGSUxFX1BBVFRFUk5fcmFzcGJlcnJ5cGkgOj0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfcmFzcGJlcnJ5cGkgPSAiOSIKIAorTEFZRVJTRVJJRVNfQ09NUEFUX3Jhc3BiZXJyeXBpID0gInN1bW8iCisKICMgQWRkaXRpb25hbCBsaWNlbnNlIGRpcmVjdG9yaWVzLgogTElDRU5TRV9QQVRIICs9ICIke0xBWUVSRElSfS9maWxlcy9jdXN0b20tbGljZW5zZXMiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL2luY2x1ZGUvcnBpLWJhc2UuaW5jCmluZGV4IDY4ODIyN2MuLmQ3NjQ5NWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1iYXNlLmluYwpAQCAtNiw2ICs2LDcgQEAKIGluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvc29jLWZhbWlseS5pbmMKIAogSU1BR0VfRlNUWVBFUyA/PSAidGFyLmJ6MiBleHQzIHJwaS1zZGltZyIKK1dLU19GSUxFID89ICJzZGltYWdlLXJhc3BiZXJyeXBpLndrcyIKIAogWFNFUlZFUiA9ICIgXAogICAgIHhzZXJ2ZXIteG9yZyBcCkBAIC0xOSw5ICsyMCwxMSBAQAogICAgIGJjbTI3MDgtcnBpLWItcGx1cy5kdGIgXAogICAgIGJjbTI3MDktcnBpLTItYi5kdGIgXAogICAgIGJjbTI3MTAtcnBpLTMtYi5kdGIgXAorICAgIGJjbTI3MTAtcnBpLTMtYi1wbHVzLmR0YiBcCiAgICAgYmNtMjcwOC1ycGktY20uZHRiIFwKICAgICBiY20yNzEwLXJwaS1jbTMuZHRiIFwKICAgICBcCisgICAgb3ZlcmxheXMvZHdjMi5kdGJvIFwKICAgICBvdmVybGF5cy9oaWZpYmVycnktYW1wLmR0Ym8gXAogICAgIG92ZXJsYXlzL2hpZmliZXJyeS1kYWMuZHRibyBcCiAgICAgb3ZlcmxheXMvaGlmaWJlcnJ5LWRhY3BsdXMuZHRibyBcCkBAIC01MSwxNCArNTQsMTYgQEAKICMgICB3aXRoaW4gdS1ib290IHRvIGxvYWQgdGhlIGtlcm5lbC4KIEtFUk5FTF9CT09UQ01EID8/PSAiYm9vdG0iCiBLRVJORUxfSU1BR0VUWVBFX1VCT09UID8/PSAidUltYWdlIgotS0VSTkVMX0lNQUdFVFlQRSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1JQSV9VU0VfVV9CT09UJywgJzEnLCAnJHtLRVJORUxfSU1BR0VUWVBFX1VCT09UfScsICdJbWFnZScsIGQpfSIKK0tFUk5FTF9JTUFHRVRZUEVfRElSRUNUID8/PSAiekltYWdlIgorS0VSTkVMX0lNQUdFVFlQRSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1JQSV9VU0VfVV9CT09UJywgJzEnLCBcCisgICAgICAgICcke0tFUk5FTF9JTUFHRVRZUEVfVUJPT1R9JywgJyR7S0VSTkVMX0lNQUdFVFlQRV9ESVJFQ1R9JywgZCl9IgogCiBNQUNISU5FX0ZFQVRVUkVTICs9ICJhcG0gdXNiaG9zdCBrZXlib2FyZCB2ZmF0IGV4dDIgc2NyZWVuIHRvdWNoc2NyZWVuIGFsc2EgYmx1ZXRvb3RoIHdpZmkgc2RpbyIKIAogIyBSYXNwYmVycnkgUGkgaGFzIG5vIGhhcmR3YXJlIGNsb2NrCiBNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQgPSAicnRjIgogCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTICs9ICIga2VybmVsLW1vZHVsZXMiCitNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTICs9ICIga2VybmVsLW1vZHVsZXMgdWRldi1ydWxlcy1ycGkiCiAKICMgU2V0IFJhc3BiZXJyeXBpIHNwbGFzaCBpbWFnZQogU1BMQVNIID0gInBzcGxhc2gtcmFzcGJlcnJ5cGkiCkBAIC0xMDIsNiArMTA3LDggQEAKICAgICAke0BiYi51dGlscy5jb250YWlucygnUlBJX1VTRV9VX0JPT1QnLCAnMScsICd1LWJvb3Q6ZG9fZGVwbG95JywgJycsZCl9IFwKICAgICAiCiAKK2RvX2ltYWdlX3dpY1tyZWNyZGVwc10gPSAiZG9fYnVpbGQiCisKICMgVGhlIGtlcm5lbCBpbWFnZSBpcyBpbnN0YWxsZWQgaW50byB0aGUgRkFUMzIgYm9vdCBwYXJ0aXRpb24gYW5kIGRvZXMgbm90IG5lZWQKICMgdG8gYWxzbyBiZSBpbnN0YWxsZWQgaW50byB0aGUgcm9vdGZzLgotUkRFUEVORFNfa2VybmVsLWJhc2UgPSAiIgorUkRFUEVORFNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktZGVmYXVsdC12ZXJzaW9ucy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL2luY2x1ZGUvcnBpLWRlZmF1bHQtdmVyc2lvbnMuaW5jCmluZGV4IGZhYTZiNDEuLmE1ZmU2ZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktZGVmYXVsdC12ZXJzaW9ucy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1kZWZhdWx0LXZlcnNpb25zLmluYwpAQCAtMSwzICsxLDMgQEAKICMgUmFzcGJlcnJ5UGkgQlNQIGRlZmF1bHQgdmVyc2lvbnMKIAotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgtcmFzcGJlcnJ5cGkgPz89ICI0LjkuJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXJhc3BiZXJyeXBpID8/PSAiNC4xNC4lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTAtd2lmaS5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTAtd2lmaS5jb25mCmluZGV4IGFkYjIyMzguLmFjY2RmM2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkwLXdpZmkuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMC13aWZpLmNvbmYKQEAgLTYsMTAgKzYsMTIgQEAKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTc2anpmLXMuaW5jCiBpbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1iYXNlLmluYwogCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJsaW51eC1maXJtd2FyZS1iY200MzQzMCIKK01BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gIlwKKyAgICBsaW51eC1maXJtd2FyZS1iY200MzQzMCBcCisgICAgbGludXgtZmlybXdhcmUtYmNtNDM0MzBhMS1oY2QgXAorIgogCiBTRElNR19LRVJORUxJTUFHRSA/PSAia2VybmVsLmltZyIKLUtFUk5FTF9ERUZDT05GSUcgPz0gImJjbXJwaV9kZWZjb25maWciCi1VQk9PVF9NQUNISU5FID89ICJycGlfY29uZmlnIgorVUJPT1RfTUFDSElORSA/PSAicnBpXzBfd19kZWZjb25maWciCiBTRVJJQUxfQ09OU09MRSA/PSAiMTE1MjAwIHR0eVMwIgogVkM0X0NNQV9TSVpFID89ICJjbWEtMTI4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTMtNjQuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLTY0LmNvbmYKaW5kZXggZWJjOWYzOC4uNTE2MzMyMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTMtNjQuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMy02NC5jb25mCkBAIC00LDEzICs0LDE5IEBACiAKIE1BQ0hJTkVPVkVSUklERVMgPSAicmFzcGJlcnJ5cGkzOiR7TUFDSElORX0iCiAKLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gImxpbnV4LWZpcm13YXJlLWJjbTQzNDMwIgorTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyArPSAiXAorICAgIGxpbnV4LWZpcm13YXJlLWJjbTQzNDMwIFwKKyAgICBsaW51eC1maXJtd2FyZS1iY200MzQ1NSBcCisgICAgbGludXgtZmlybXdhcmUtYmNtNDM0MzBhMS1oY2QgXAorICAgIGxpbnV4LWZpcm13YXJlLWJjbTQzNDVjMC1oY2QgXAorIgogCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY4LmluYwogaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMKIAogS0VSTkVMX0RFVklDRVRSRUUgPSAiIFwKICAgICBicm9hZGNvbS9iY20yNzEwLXJwaS0zLWIuZHRiIFwKKyAgICBicm9hZGNvbS9iY20yNzEwLXJwaS0zLWItcGx1cy5kdGIgXAogICAgIGJyb2FkY29tL2JjbTI4MzctcnBpLTMtYi5kdGIgXAogICAgIFwKICAgICBvdmVybGF5cy9oaWZpYmVycnktYW1wLmR0Ym8gXApAQCAtNDMsNCArNDksNiBAQAogIyBXaGVuIHUtYm9vdCBpcyBlbmFibGVkIHdlIG5lZWQgdG8gdXNlIHRoZSAiSW1hZ2UiIGZvcm1hdCBhbmQgdGhlICJib290aSIKICMgY29tbWFuZCB0byBsb2FkIHRoZSBrZXJuZWwKIEtFUk5FTF9JTUFHRVRZUEVfVUJPT1QgPz0gIkltYWdlIgorIyAiekltYWdlIiBub3Qgc3VwcG9ydGVkIG9uIGFybTY0IGFuZCAiLmd6IiBpbWFnZXMgbm90IHN1cHBvcnRlZCBieSBib290bG9hZGVyIHlldAorS0VSTkVMX0lNQUdFVFlQRV9ESVJFQ1QgPz0gIkltYWdlIgogS0VSTkVMX0JPT1RDTUQgPz0gImJvb3RpIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTMuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLmNvbmYKaW5kZXggYjUxMWJlYy4uOGI1Y2NlNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTMuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMy5jb25mCkBAIC02LDEwICs2LDE0IEBACiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTcuaW5jCiBpbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1iYXNlLmluYwogCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJsaW51eC1maXJtd2FyZS1iY200MzQzMCIKK01BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gIlwKKyAgICBsaW51eC1maXJtd2FyZS1iY200MzQzMCBcCisgICAgbGludXgtZmlybXdhcmUtYmNtNDM0NTUgXAorICAgIGxpbnV4LWZpcm13YXJlLWJjbTQzNDMwYTEtaGNkIFwKKyAgICBsaW51eC1maXJtd2FyZS1iY200MzQ1YzAtaGNkIFwKKyIKIAogU0RJTUdfS0VSTkVMSU1BR0UgPz0gImtlcm5lbDcuaW1nIgotS0VSTkVMX0RFRkNPTkZJRyA/PSAiYmNtMjcwOV9kZWZjb25maWciCiBVQk9PVF9NQUNISU5FID0gInJwaV8zXzMyYl9jb25maWciCiBTRVJJQUxfQ09OU09MRSA/PSAiMTE1MjAwIHR0eVMwIgogVkM0X0NNQV9TSVpFID89ICJjbWEtMjU2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2RvY3MvY29uZi5weSBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9kb2NzL2NvbmYucHkKaW5kZXggZWI5OGM0OS4uZmNlYmJmMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2RvY3MvY29uZi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvZG9jcy9jb25mLnB5CkBAIC01OCw5ICs1OCw5IEBACiAjIGJ1aWx0IGRvY3VtZW50cy4KICMKICMgVGhlIHNob3J0IFguWSB2ZXJzaW9uLgotdmVyc2lvbiA9ICdyb2NrbycKK3ZlcnNpb24gPSAnbWFzdGVyJwogIyBUaGUgZnVsbCB2ZXJzaW9uLCBpbmNsdWRpbmcgYWxwaGEvYmV0YS9yYyB0YWdzLgotcmVsZWFzZSA9ICdyb2NrbycKK3JlbGVhc2UgPSAnbWFzdGVyJwogCiAjIFRoZSBsYW5ndWFnZSBmb3IgY29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4gUmVmZXIgdG8gZG9jdW1lbnRhdGlvbgogIyBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMuCkBAIC0xMjAsNyArMTIwLDcgQEAKICMgVGhlIHRoZW1lIHRvIHVzZSBmb3IgSFRNTCBhbmQgSFRNTCBIZWxwIHBhZ2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgogIyBhIGxpc3Qgb2YgYnVpbHRpbiB0aGVtZXMuCiAjCi1odG1sX3RoZW1lID0gJ2FsYWJhc3RlcicKKyMgaHRtbF90aGVtZSA9ICdhbGFiYXN0ZXInCiAKICMgVGhlbWUgb3B0aW9ucyBhcmUgdGhlbWUtc3BlY2lmaWMgYW5kIGN1c3RvbWl6ZSB0aGUgbG9vayBhbmQgZmVlbCBvZiBhIHRoZW1lCiAjIGZ1cnRoZXIuICBGb3IgYSBsaXN0IG9mIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBlYWNoIHRoZW1lLCBzZWUgdGhlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvZG9jcy9leHRyYS1idWlsZC1jb25maWcubWQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvZG9jcy9leHRyYS1idWlsZC1jb25maWcubWQKaW5kZXggMzgwZDk2OS4uODA2YzIzOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2RvY3MvZXh0cmEtYnVpbGQtY29uZmlnLm1kCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9kb2NzL2V4dHJhLWJ1aWxkLWNvbmZpZy5tZApAQCAtMzIsNiArMzIsOCBAQAogKiBgR1BVX01FTV8xMDI0YDogR1BVIG1lbW9yeSBpbiBtZWdhYnl0ZSBmb3IgdGhlIDEwMjRNQiBSYXNwYmVycnkgUGkuIElnbm9yZWQgYnkKICAgdGhlIDI1Nk1CLzUxMk1CIFJQLiBPdmVycmlkZXMgZ3B1X21lbS4gTWF4IDk0NC4gRGVmYXVsdCBub3Qgc2V0LgogCitTZWU6IDxodHRwczovL3d3dy5yYXNwYmVycnlwaS5vcmcvZG9jdW1lbnRhdGlvbi9jb25maWd1cmF0aW9uL2NvbmZpZy10eHQvbWVtb3J5Lm1kPgorCiAjIyBBZGQgcHVyY2hhc2VkIGxpY2Vuc2UgY29kZWNzCiAKIFRvIGFkZCB5b3Ugb3duIGxpY2Vuc2VzIHVzZSB2YXJpYWJsZXMgYEtFWV9ERUNPREVfTVBHMmAgYW5kIGBLRVlfREVDT0RFX1dWQzFgIGluCkBAIC00NCw2ICs0Niw3IEBACiAKICAgICBLRVlfREVDT0RFX1dWQzEgPSAiMHgxMjM0NTY3OCwweGFiY2RhYmNkLDB4ODc2NTQzMjEiCiAKK1NlZTogPGh0dHBzOi8vd3d3LnJhc3BiZXJyeXBpLm9yZy9kb2N1bWVudGF0aW9uL2NvbmZpZ3VyYXRpb24vY29uZmlnLXR4dC9jb2RlY2xpY2VuY2UubWQ+CiAKICMjIERpc2FibGUgb3ZlcnNjYW4KIApAQCAtNTMsMTggKzU2LDU3IEBACiAKICAgICBESVNBQkxFX09WRVJTQ0FOID0gIjEiCiAKKyMjIERpc2FibGUgc3BsYXNoIHNjcmVlbgorCitCeSBkZWZhdWx0IGEgcmFpbmJvdyBzcGxhc2ggc2NyZWVuIGlzIHNob3duIGFmdGVyIHRoZSBHUFUgZmlybXdhcmUgaXMgbG9hZGVkLgorVG8gZGlzYWJsZSB0aGlzIHNldCB0aGlzIHZhcmlhYmxlIGluIGxvY2FsLmNvbmY6CisKKyAgICBESVNBQkxFX1NQTEFTSCA9ICIxIgorCisjIyBCb290IGRlbGF5CisKK1RoZSBSYXNwYmVycnkgUGkgd2FpdHMgYSBudW1iZXIgb2Ygc2Vjb25kcyBhZnRlciBsb2FkaW5nIHRoZSBHUFUgZmlybXdhcmUgYW5kCitiZWZvcmUgbG9hZGluZyB0aGUga2VybmVsLiBCeSBkZWZhdWx0IGl0IGlzIG9uZSBzZWNvbmQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdXIKK1NEIGNhcmQgbmVlZHMgYSB3aGlsZSB0byBnZXQgcmVhZHkgYmVmb3JlIExpbnV4IGlzIGFibGUgdG8gYm9vdCBmcm9tIGl0LgorVG8gcmVtb3ZlIChvciBhZGp1c3QpIHRoaXMgZGVsYXkgc2V0IHRoZXNlIHZhcmlhYmxlcyBpbiBsb2NhbC5jb25mOgorCisgICAgQk9PVF9ERUxBWSA9ICIwIgorICAgIEJPT1RfREVMQVlfTVMgPSAiMCIKKwogIyMgU2V0IG92ZXJjbG9ja2luZyBvcHRpb25zCiAKLVRoZSBSYXNwYmVycnkgUEkgY2FuIGJlIG92ZXJjbG9ja2VkLiBBcyBvZiBub3cgb3ZlcmNsb2NraW5nIHVwIHRvIHRoZSAiVHVyYm8KK1RoZSBSYXNwYmVycnkgUGkgY2FuIGJlIG92ZXJjbG9ja2VkLiBBcyBvZiBub3cgb3ZlcmNsb2NraW5nIHVwIHRvIHRoZSAiVHVyYm8KIE1vZGUiIGlzIG9mZmljaWFsbHkgc3VwcG9ydGVkIGJ5IHRoZSByYXNwYmVyeSBhbmQgZG9lcyBub3Qgdm9pZCB3YXJyYW50eS4gQ2hlY2sKLXRoZSBjb25maWcudHh0IGZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIG9wdGlvbnMgYW5kIG1vZGVzLiBFeGFtcGxlIHR1cmJvCi1tb2RlOgordGhlIGNvbmZpZy50eHQgZm9yIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2Ygb3B0aW9ucyBhbmQgbW9kZXMuIFRoZSBmb2xsb3dpbmcKK3ZhcmlhYmxlcyBhcmUgc3VwcG9ydGVkIGluIGxvY2FsLmNvbmY6IGBBUk1fRlJFUWAsIGBHUFVfRlJFUWAsIGBDT1JFX0ZSRVFgLAorYFNEUkFNX0ZSRVFgIGFuZCBgT1ZFUl9WT0xUQUdFYC4KKworRXhhbXBsZSBvZmZpY2lhbCBzZXR0aW5ncyBmb3IgVHVyYm8gTW9kZSBpbiBSYXNwYmVycnkgUGkgMjoKIAogICAgIEFSTV9GUkVRID0gIjEwMDAiCiAgICAgQ09SRV9GUkVRID0gIjUwMCIKICAgICBTRFJBTV9GUkVRID0gIjUwMCIKICAgICBPVkVSX1ZPTFRBR0UgPSAiNiIKIAorU2VlOiA8aHR0cHM6Ly93d3cucmFzcGJlcnJ5cGkub3JnL2RvY3VtZW50YXRpb24vY29uZmlndXJhdGlvbi9jb25maWctdHh0L292ZXJjbG9ja2luZy5tZD4KKworIyMgSERNSSBhbmQgY29tcG9zaXRlIHZpZGVvIG9wdGlvbnMKKworVGhlIFJhc3BiZXJyeSBQaSBjYW4gb3V0cHV0IHZpZGVvIG92ZXIgSERNSSBvciBTRFRWIGNvbXBvc2l0ZSAodGhlIFJDQSBjb25uZWN0b3IpLgorQnkgZGVmYXVsdCB0aGUgdmlkZW8gbW9kZSBmb3IgdGhlc2UgaXMgYXV0b2RldGVjdGVkIG9uIGJvb3Q6IHRoZSBIRE1JIG1vZGUgaXMKK3NlbGVjdGVkIGFjY29yZGluZyB0byB0aGUgY29ubmVjdGVkIG1vbml0b3IncyBFRElEIGluZm9ybWF0aW9uIGFuZCB0aGUgY29tcG9zaXRlCittb2RlIGlzIGRlZmF1bHRlZCB0byBOVFNDIHVzaW5nIGEgNDozIGFzcGVjdCByYXRpby4gQ2hlY2sgdGhlIGNvbmZpZy50eHQgZm9yIGEKK2RldGFpbGVkIGRlc2NyaXB0aW9uIG9mIG9wdGlvbnMgYW5kIG1vZGVzLiBUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgc3VwcG9ydGVkIGluCitsb2NhbC5jb25mOiBgSERNSV9GT1JDRV9IT1RQTFVHYCwgYEhETUlfRFJJVkVgLCBgSERNSV9HUk9VUGAsIGBIRE1JX01PREVgLAorYENPTkZJR19IRE1JX0JPT1NUYCwgYFNEVFZfTU9ERWAsIGBTRFRWX0FTUEVDVGAgYW5kIGBESVNQTEFZX1JPVEFURWAuCisKK0V4YW1wbGUgdG8gZm9yY2UgSERNSSBvdXRwdXQgdG8gNzIwcCBpbiBDRUEgbW9kZToKKworICAgIEhETUlfR1JPVVAgPSAiMSIKKyAgICBIRE1JX01PREUgPSAiNCIKKworU2VlOiA8aHR0cHM6Ly93d3cucmFzcGJlcnJ5cGkub3JnL2RvY3VtZW50YXRpb24vY29uZmlndXJhdGlvbi9jb25maWctdHh0L3ZpZGVvLm1kPgorCiAjIyBWaWRlbyBjYW1lcmEgc3VwcG9ydCB3aXRoIFY0TDIgZHJpdmVycwogCiBTZXQgdGhpcyB2YXJpYWJsZSB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIHZpZGVvIGNhbWVyYSAoTGludXggMy4xMi40KwpAQCAtMTc5LDEwICsyMjEsMzQgQEAKIG9wZXJhdGlvbnMgLSA2MGZwcyBoMjY0IGRlY29kZSwgaGlnaCBxdWFsaXR5IGRlaW50ZXJsYWNlIC0gd2hpY2ggYXJlbid0CiBwZXJmb3JtZWQgb24gdGhlIEFSTSBtYXkgYmUgYWZmZWN0ZWQsIGFuZCB3ZSB3b3VsZG4ndCB3YW50IHRvIGRvIHRoYXQgdG8gdXNlcnMKIHdobyBkb24ndCB3YW50IHRvIHVzZSB0aGUgc2VyaWFsIHBvcnQuIFVzZXJzIHdobyB3YW50IHNlcmlhbCBjb25zb2xlIHN1cHBvcnQgb24KLVJhc3BiZXJyeVBpMyB3aWxsIGhhdmUgdG8gZXhwbGljaXRlbHkgc2V0IGluIGxvY2FsLmNvbmY6CitSYXNwYmVycnlQaTMgd2lsbCBoYXZlIHRvIGV4cGxpY2l0bHkgc2V0IGluIGxvY2FsLmNvbmY6CiAKICAgICBFTkFCTEVfVUFSVCA9ICIxIgogCiBSZWYuOgogKiA8aHR0cHM6Ly9naXRodWIuY29tL3Jhc3BiZXJyeXBpL2Zpcm13YXJlL2lzc3Vlcy81NTM+CiAqIDxodHRwczovL2dpdGh1Yi5jb20vUlBpLURpc3Ryby9yZXBvL2lzc3Vlcy8yMj4KKworIyMgRW5hYmxlIFVTQiBQZXJpcGhlcmFsIChHYWRnZXQpIHN1cHBvcnQKKworVGhlIHN0YW5kYXJkIFVTQiBkcml2ZXIgb25seSBzdXBwb3J0cyBob3N0IG1vZGUgb3BlcmF0aW9ucy4gIFVzZXJzIHdobword2FudCB0byB1c2UgZ2FkZ2V0IG1vZHVsZXMgbGlrZSBnX2V0aGVyIHNob3VsZCBzZXQgdGhlIGZvbGxvd2luZyBpbgorbG9jYWwuY29uZjoKKworICAgIEVOQUJMRV9EV0MyX1BFUklQSEVSQUwgPSAiMSIKKworIyMgTWFudWFsIGFkZGl0aW9ucyB0byBjb25maWcudHh0CisKK1RoZSBgUlBJX0VYVFJBX0NPTkZJR2AgdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gbWFudWFsbHkgYWRkIGFkZGl0aW9uYWwgbGluZXMgdG8KK3RoZSBgY29uZmlnLnR4dGAgZmlsZSBpZiB0aGVyZSBpcyBub3QgYSBzcGVjaWZpYyBvcHRpb24gYWJvdmUgZm9yIHRoZQorY29uZmlndXJhdGlvbiB5b3UgbmVlZC4gVG8gYWRkIG11bHRpcGxlIGxpbmVzIHlvdSBtdXN0IGluY2x1ZGUgYFxuYCBzZXBhcmF0b3JzLgorSWYgZG91YmxlLXF1b3RlcyBhcmUgbmVlZGVkIGluIHRoZSBsaW5lcyB5b3UgYXJlIGFkZGluZyB5b3UgY2FuIHVzZSBzaW5nbGUKK3F1b3RlcyBhcm91bmQgdGhlIHdob2xlIHN0cmluZy4KKworRm9yIGV4YW1wbGUsIHRvIGFkZCBhIGNvbW1lbnQgY29udGFpbmluZyBhIGRvdWJsZS1xdW90ZSBhbmQgYSBjb25maWd1cmF0aW9uCitvcHRpb246CisKKyAgICBSUElfRVhUUkFfQ09ORklHID0gJyBcbiBcCisgICAgICAgICMgUmFzcGJlcnJ5IFBpIDdcIiBkaXNwbGF5L3RvdWNoIHNjcmVlbiBcbiBcCisgICAgICAgIGxjZF9yb3RhdGU9MiBcbiBcCisgICAgICAgICcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9kb2NzL2xheWVyLWNvbnRlbnRzLm1kIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2RvY3MvbGF5ZXItY29udGVudHMubWQKaW5kZXggMjljZmEzNS4uZjcxZDM5NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2RvY3MvbGF5ZXItY29udGVudHMubWQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2RvY3MvbGF5ZXItY29udGVudHMubWQKQEAgLTExLDE0ICsxMSwyNCBAQAogKiByYXNwYmVycnlwaS1jbSAoZHVtbXkgYWxpYXMgZm9yIHJhc3BiZXJyeXBpKQogKiByYXNwYmVycnlwaS1jbTMgKGR1bW15IGFsaWFzIGZvciByYXNwYmVycnlwaTIpCiAKK05vdGU6IFRoZSByYXNwYmVycnlwaTMgbWFjaGluZXMgaW5jbHVkZSBzdXBwb3J0IGZvciBSYXNwYmVycnkgUGkgM0IrLgorCiAjIyBJbWFnZXMKIAotKiBycGktaHd1cC1pbWFnZQotICAqIEhhcmR3YXJlIHVwIGltYWdlCi0KLSogcnBpLWJhc2ljLWltYWdlCi0gICogQmFzZWQgb24gcnBpLWh3dXAtaW1hZ2Ugd2l0aCBzb21lIGFkZGVkIGZlYXR1cmVzIChleDogc3BsYXNoKQotCiAqIHJwaS10ZXN0LWltYWdlCi0gICogSW1hZ2UgYmFzZWQgb24gcnBpLWJhc2ljLWltYWdlIHdoaWNoIGluY2x1ZGVzIG1vc3Qgb2YgdGhlIHBhY2thZ2VzIGluIHRoaXMKKyAgKiBJbWFnZSBiYXNlZCBvbiBjb3JlLWltYWdlLWJhc2Ugd2hpY2ggaW5jbHVkZXMgbW9zdCBvZiB0aGUgcGFja2FnZXMgaW4gdGhpcwogICAgIGxheWVyIGFuZCBzb21lIG1lZGlhIHNhbXBsZXMuCisKK0ZvciBvdGhlciB1c2VzIGl0J3MgcmVjb21tZW5kZWQgdG8gYmFzZSBpbWFnZXMgb24gYGNvcmUtaW1hZ2UtbWluaW1hbGAgb3IKK2Bjb3JlLWltYWdlLWJhc2VgIGFzIGFwcHJvcHJpYXRlLiBUaGUgb2xkIGltYWdlIG5hbWVzIChgcnBpLWh3dXAtaW1hZ2VgIGFuZAorYHJwaS1iYXNpYy1pbWFnZWApIGFyZSBkZXByZWNhdGVkLgorCisjIyBXaUZpIGFuZCBCbHVldG9vdGggRmlybXdhcmUKKworQmUgYXdhcmUgdGhhdCB0aGUgV2lGaSBhbmQgQmx1ZXRvb3RoIGZpcm13YXJlIGZvciB0aGUgc3VwcG9ydGVkIGJvYXJkcworaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYmFzZSB2ZXJzaW9uIG9mIGBsaW51eC1maXJtd2FyZWAgZnJvbSBPRS1Db3JlCisocG9reSkuIFRoZSBmaWxlcyBhcmUgYWRkZWQgZnJvbSBSYXNwYmlhbiByZXBvc2l0b3JpZXMgaW4gdGhpcyBsYXllcidzCitiYmFwcGVuZHMgdG8gdGhhdCByZWNpcGUuIEFsbCBtYWNoaW5lcyBkZWZpbmUKK2BNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTYCB0byBpbmNsdWRlIHRoZSByZXF1aXJlZCB3aXJlbGVzcyBmaXJtd2FyZTsKK3Jhc3BiZXJyeXBpMyBzdXBwb3J0cyAzLCAzQiwgYW5kIDNCKyBhbmQgc28gaW5jbHVkZSBtdWx0aXBsZSBmaXJtd2FyZQorcGFja2FnZXMuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvYm9vdGZpbGVzL2JjbTI4MzUtYm9vdGZpbGVzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Jvb3RmaWxlcy9iY20yODM1LWJvb3RmaWxlcy5iYgppbmRleCBhMTE1MDM3Li40NjZmNDQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvYm9vdGZpbGVzL2JjbTI4MzUtYm9vdGZpbGVzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMvYmNtMjgzNS1ib290ZmlsZXMuYmIKQEAgLTMsMTEgKzMsMTMgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRS5icm9hZGNvbTttZDU9NGE0ZDE2OTczN2MwNzg2ZmI5NDgyYmI2ZDMwNDAxZDEiCiAKLWluaGVyaXQgZGVwbG95Citpbmhlcml0IGRlcGxveSBub3BhY2thZ2VzCiAKIGluY2x1ZGUgcmVjaXBlcy1ic3AvY29tbW9uL2Zpcm13YXJlLmluYwogCi1SREVQRU5EU18ke1BOfSA9ICJycGktY29uZmlnIgorSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKKworREVQRU5EUyA9ICJycGktY29uZmlnIgogCiBDT01QQVRJQkxFX01BQ0hJTkUgPSAiXnJwaSQiCiAKQEAgLTMyLDcgKzM0LDcgQEAKICAgICB0b3VjaCAke0RFUExPWURJUn0vJHtQTn0vJHtQTn0tJHtQVn0uc3RhbXAKIH0KIAotYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX3BhY2thZ2UgYWZ0ZXIgZG9faW5zdGFsbAorYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2luc3RhbGwKIGRvX2RlcGxveVtkaXJzXSArPSAiJHtERVBMT1lESVJ9LyR7UE59IgogCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Jvb3RmaWxlcy9ycGktY29uZmlnX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMvcnBpLWNvbmZpZ19naXQuYmIKaW5kZXggY2E0MTYwYi4uZTBiMmI1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Jvb3RmaWxlcy9ycGktY29uZmlnX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvYm9vdGZpbGVzL3JwaS1jb25maWdfZ2l0LmJiCkBAIC0xNSwxNSArMTUsMTggQEAKIAogUFIgPSAicjUiCiAKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKIFBJVEZUPSIke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJwaXRmdCIsICIxIiwgIjAiLCBkKX0iCiBQSVRGVDIyPSIke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJwaXRmdDIyIiwgIjEiLCAiMCIsIGQpfSIKIFBJVEZUMjhyPSIke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJwaXRmdDI4ciIsICIxIiwgIjAiLCBkKX0iCiBQSVRGVDM1cj0iJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAicGl0ZnQzNXIiLCAiMSIsICIwIiwgZCl9IgogCiBWQzRHUkFQSElDUz0iJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAidmM0Z3JhcGhpY3MiLCAiMSIsICIwIiwgZCl9IgotVkM0RFRCT19yYXNwYmVycnlwaTMtNjQgPSAidmM0LWZrbXMtdjNkIgorVkM0RFRCT19yYXNwYmVycnlwaTMtNjQgPz0gInZjNC1ma21zLXYzZCIKIFZDNERUQk8gPz0gInZjNC1rbXMtdjNkIgotaW5oZXJpdCBkZXBsb3kKKworaW5oZXJpdCBkZXBsb3kgbm9wYWNrYWdlcwogCiBkb19kZXBsb3koKSB7CiAgICAgaW5zdGFsbCAtZCAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMKQEAgLTMxLDI1ICszNCwzMyBAQAogICAgIGNwICR7U30vY29uZmlnLnR4dCAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvCiAKICAgICBpZiBbIC1uICIke0tFWV9ERUNPREVfTVBHMn0iIF07IHRoZW4KLSAgICAgICAgc2VkIC1pICcvI2RlY29kZV9NUEcyLyBjXGRlY29kZV9NUEcyPSR7S0VZX0RFQ09ERV9NUEcyfScgJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKKyAgICAgICAgc2VkIC1pICcvI2RlY29kZV9NUEcyPS8gY1xkZWNvZGVfTVBHMj0ke0tFWV9ERUNPREVfTVBHMn0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiAgICAgZmkKICAgICBpZiBbIC1uICIke0tFWV9ERUNPREVfV1ZDMX0iIF07IHRoZW4KLSAgICAgICAgc2VkIC1pICcvI2RlY29kZV9XVkMxLyBjXGRlY29kZV9XVkMxPSR7S0VZX0RFQ09ERV9XVkMxfScgJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKKyAgICAgICAgc2VkIC1pICcvI2RlY29kZV9XVkMxPS8gY1xkZWNvZGVfV1ZDMT0ke0tFWV9ERUNPREVfV1ZDMX0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiAgICAgZmkKICAgICBpZiBbIC1uICIke0RJU0FCTEVfT1ZFUlNDQU59IiBdOyB0aGVuCi0gICAgICAgIHNlZCAtaSAnLyNkaXNhYmxlX292ZXJzY2FuLyBjXGRpc2FibGVfb3ZlcnNjYW49JHtESVNBQkxFX09WRVJTQ0FOfScgJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKKyAgICAgICAgc2VkIC1pICcvI2Rpc2FibGVfb3ZlcnNjYW49LyBjXGRpc2FibGVfb3ZlcnNjYW49JHtESVNBQkxFX09WRVJTQ0FOfScgJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKICAgICBmaQorICAgIGlmIFsgLW4gIiR7RElTQUJMRV9TUExBU0h9IiBdOyB0aGVuCisgICAgICAgIHNlZCAtaSAnLyNkaXNhYmxlX3NwbGFzaD0vIGNcZGlzYWJsZV9zcGxhc2g9JHtESVNBQkxFX1NQTEFTSH0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisgICAgZmkKKworICAgICMgU2V0IG92ZXJjbG9ja2luZyBvcHRpb25zCiAgICAgaWYgWyAtbiAiJHtBUk1fRlJFUX0iIF07IHRoZW4KLSAgICAgICAgc2VkIC1pICcvI2FybV9mcmVxLyBjXGFybV9mcmVxPSR7QVJNX0ZSRVF9JyAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgICAgICBzZWQgLWkgJy8jYXJtX2ZyZXE9LyBjXGFybV9mcmVxPSR7QVJNX0ZSRVF9JyAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgIGZpCisgICAgaWYgWyAtbiAiJHtHUFVfRlJFUX0iIF07IHRoZW4KKyAgICAgICAgc2VkIC1pICcvI2dwdV9mcmVxPS8gY1xncHVfZnJlcT0ke0dQVV9GUkVRfScgJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKICAgICBmaQogICAgIGlmIFsgLW4gIiR7Q09SRV9GUkVRfSIgXTsgdGhlbgotICAgICAgICBzZWQgLWkgJy8jY29yZV9mcmVxLyBjXGNvcmVfZnJlcT0ke0NPUkVfRlJFUX0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisgICAgICAgIHNlZCAtaSAnLyNjb3JlX2ZyZXE9LyBjXGNvcmVfZnJlcT0ke0NPUkVfRlJFUX0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiAgICAgZmkKICAgICBpZiBbIC1uICIke1NEUkFNX0ZSRVF9IiBdOyB0aGVuCi0gICAgICAgIHNlZCAtaSAnLyNzZHJhbV9mcmVxLyBjXHNkcmFtX2ZyZXE9JHtTRFJBTV9GUkVRfScgJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKKyAgICAgICAgc2VkIC1pICcvI3NkcmFtX2ZyZXE9LyBjXHNkcmFtX2ZyZXE9JHtTRFJBTV9GUkVRfScgJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKICAgICBmaQogICAgIGlmIFsgLW4gIiR7T1ZFUl9WT0xUQUdFfSIgXTsgdGhlbgotICAgICAgICBzZWQgLWkgJy8jb3Zlcl92b2x0YWdlLyBjXG92ZXJfdm9sdGFnZT0ke09WRVJfVk9MVEFHRX0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisgICAgICAgIHNlZCAtaSAnLyNvdmVyX3ZvbHRhZ2U9LyBjXG92ZXJfdm9sdGFnZT0ke09WRVJfVk9MVEFHRX0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiAgICAgZmkKIAogICAgICMgR1BVIG1lbW9yeQpAQCAtNTcsMTMgKzY4LDQ3IEBACiAgICAgICAgIHNlZCAtaSAnLyNncHVfbWVtPS8gY1xncHVfbWVtPSR7R1BVX01FTX0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiAgICAgZmkKICAgICBpZiBbIC1uICIke0dQVV9NRU1fMjU2fSIgXTsgdGhlbgotICAgICAgICBzZWQgLWkgJy8jZ3B1X21lbV8yNTYvIGNcZ3B1X21lbV8yNTY9JHtHUFVfTUVNXzI1Nn0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisgICAgICAgIHNlZCAtaSAnLyNncHVfbWVtXzI1Nj0vIGNcZ3B1X21lbV8yNTY9JHtHUFVfTUVNXzI1Nn0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiAgICAgZmkKICAgICBpZiBbIC1uICIke0dQVV9NRU1fNTEyfSIgXTsgdGhlbgotICAgICAgICBzZWQgLWkgJy8jZ3B1X21lbV81MTIvIGNcZ3B1X21lbV81MTI9JHtHUFVfTUVNXzUxMn0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisgICAgICAgIHNlZCAtaSAnLyNncHVfbWVtXzUxMj0vIGNcZ3B1X21lbV81MTI9JHtHUFVfTUVNXzUxMn0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiAgICAgZmkKICAgICBpZiBbIC1uICIke0dQVV9NRU1fMTAyNH0iIF07IHRoZW4KLSAgICAgICAgc2VkIC1pICcvI2dwdV9tZW1fMTAyNC8gY1xncHVfbWVtXzEwMjQ9JHtHUFVfTUVNXzEwMjR9JyAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgICAgICBzZWQgLWkgJy8jZ3B1X21lbV8xMDI0PS8gY1xncHVfbWVtXzEwMjQ9JHtHUFVfTUVNXzEwMjR9JyAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgIGZpCisKKyAgICAjIFNldCBib290IGRlbGF5CisgICAgaWYgWyAtbiAiJHtCT09UX0RFTEFZfSIgXTsgdGhlbgorICAgICAgICBzZWQgLWkgJy8jYm9vdF9kZWxheT0vIGNcYm9vdF9kZWxheT0ke0JPT1RfREVMQVl9JyAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgIGZpCisgICAgaWYgWyAtbiAiJHtCT09UX0RFTEFZX01TfSIgXTsgdGhlbgorICAgICAgICBzZWQgLWkgJy8jYm9vdF9kZWxheV9tcz0vIGNcYm9vdF9kZWxheV9tcz0ke0JPT1RfREVMQVlfTVN9JyAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgIGZpCisKKyAgICAjIFNldCBIRE1JIGFuZCBjb21wb3NpdGUgdmlkZW8gb3B0aW9ucworICAgIGlmIFsgLW4gIiR7SERNSV9GT1JDRV9IT1RQTFVHfSIgXTsgdGhlbgorICAgICAgICBzZWQgLWkgJy8jaGRtaV9mb3JjZV9ob3RwbHVnPS8gY1xoZG1pX2ZvcmNlX2hvdHBsdWc9JHtIRE1JX0ZPUkNFX0hPVFBMVUd9JyAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgIGZpCisgICAgaWYgWyAtbiAiJHtIRE1JX0RSSVZFfSIgXTsgdGhlbgorICAgICAgICBzZWQgLWkgJy8jaGRtaV9kcml2ZT0vIGNcaGRtaV9kcml2ZT0ke0hETUlfRFJJVkV9JyAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgIGZpCisgICAgaWYgWyAtbiAiJHtIRE1JX0dST1VQfSIgXTsgdGhlbgorICAgICAgICBzZWQgLWkgJy8jaGRtaV9ncm91cD0vIGNcaGRtaV9ncm91cD0ke0hETUlfR1JPVVB9JyAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgIGZpCisgICAgaWYgWyAtbiAiJHtIRE1JX01PREV9IiBdOyB0aGVuCisgICAgICAgIHNlZCAtaSAnLyNoZG1pX21vZGU9LyBjXGhkbWlfbW9kZT0ke0hETUlfTU9ERX0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisgICAgZmkKKyAgICBpZiBbIC1uICIke0NPTkZJR19IRE1JX0JPT1NUfSIgXTsgdGhlbgorICAgICAgICBzZWQgLWkgJy8jY29uZmlnX2hkbWlfYm9vc3Q9LyBjXGNvbmZpZ19oZG1pX2Jvb3N0PSR7Q09ORklHX0hETUlfQk9PU1R9JyAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgIGZpCisgICAgaWYgWyAtbiAiJHtTRFRWX01PREV9IiBdOyB0aGVuCisgICAgICAgIHNlZCAtaSAnLyNzZHR2X21vZGU9LyBjXHNkdHZfbW9kZT0ke1NEVFZfTU9ERX0nICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisgICAgZmkKKyAgICBpZiBbIC1uICIke1NEVFZfQVNQRUNUfSIgXTsgdGhlbgorICAgICAgICBzZWQgLWkgJy8jc2R0dl9hc3BlY3Q9LyBjXHNkdHZfYXNwZWN0PSR7U0RUVl9BU1BFQ1R9JyAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgIGZpCisgICAgaWYgWyAtbiAiJHtESVNQTEFZX1JPVEFURX0iIF07IHRoZW4KKyAgICAgICAgc2VkIC1pICcvI2Rpc3BsYXlfcm90YXRlPS8gY1xkaXNwbGF5X3JvdGF0ZT0ke0RJU1BMQVlfUk9UQVRFfScgJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKICAgICBmaQogCiAgICAgIyBWaWRlbyBjYW1lcmEgc3VwcG9ydApAQCAtODQsNiArMTI5LDcgQEAKICAgICAgICAgZWNobyAiZHRwYXJhbT1zcGk9b24iID4+JHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKICAgICBmaQogCisgICAgIyBJMkMgc3VwcG9ydAogICAgIGlmIFsgLW4gIiR7RU5BQkxFX0kyQ30iIF0gfHwgWyAiJHtQSVRGVH0iID0gIjEiIF07IHRoZW4KICAgICAgICAgZWNobyAiIyBFbmFibGUgSTJDIiA+PiR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiAgICAgICAgIGVjaG8gImR0cGFyYW09aTJjMT1vbiIgPj4ke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dApAQCAtOTUsMTIgKzE0MSwxMCBAQAogICAgICAgICBlY2hvICIjIEVuYWJsZSBQSVRGVDIyIGRpc3BsYXkiID4+JHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKICAgICAgICAgZWNobyAiZHRvdmVybGF5PXBpdGZ0MjIscm90YXRlPTI3MCxzcGVlZD0zMjAwMDAwMCx0eGJ1Zmxlbj0zMjc2OCIgPj4ke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAogICAgIGZpCi0KICAgICBpZiBbICIke1BJVEZUMjhyfSIgPSAiMSIgXTsgdGhlbgogICAgICAgICBlY2hvICIjIEVuYWJsZSBQSVRGVDI4ciBkaXNwbGF5IiA+PiR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiAgICAgICAgIGVjaG8gImR0b3ZlcmxheT1waXRmdDI4LXJlc2lzdGl2ZSxyb3RhdGU9OTAsc3BlZWQ9MzIwMDAwMDAsdHhidWZsZW49MzI3NjgiID4+JHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKICAgICBmaQotCiAgICAgaWYgWyAiJHtQSVRGVDM1cn0iID0gIjEiIF07IHRoZW4KICAgICAgICAgZWNobyAiIyBFbmFibGUgUElURlQzNXIgZGlzcGxheSIgPj4ke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAogICAgICAgICBlY2hvICJkdG92ZXJsYXk9cGl0ZnQzNS1yZXNpc3RpdmUscm90YXRlPTkwLHNwZWVkPTQyMDAwMDAwLGZwcz0yMCIgPj4ke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dApAQCAtMTI3LDYgKzE3MSwxNSBAQAogICAgICAgICBlY2hvICJoZG1pX2N2dCAxMDI0IDYwMCA2MCA2IDAgMCAwIiA+PiAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAogICAgICAgICBlY2hvICJoZG1pX2RyaXZlPTEiID4+ICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiAgICAgZmkKKworICAgICMgRFdDMiBVU0IgcGVyaXBoZXJhbCBzdXBwb3J0CisgICAgaWYgWyAiJHtFTkFCTEVfRFdDMl9QRVJJUEhFUkFMfSIgPSAiMSIgXTsgdGhlbgorICAgICAgICBlY2hvICIjIEVuYWJsZSBVU0IgcGVyaXBoZXJhbCBtb2RlIiA+PiAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgICAgICBlY2hvICJkdG92ZXJsYXk9ZHdjMixkcl9tb2RlPXBlcmlwaGVyYWwiID4+ICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisgICAgZmkKKyAgICAKKyAgICAjIEFwcGVuZCBleHRyYSBjb25maWcgaWYgdGhlIHVzZXIgaGFzIHByb3ZpZGVkIGFueQorICAgIGVjaG8gIiR7UlBJX0VYVFJBX0NPTkZJR30iID4+ICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiB9CiAKIGRvX2RlcGxveV9hcHBlbmRfcmFzcGJlcnJ5cGkzLTY0KCkgewpAQCAtMTM1LDEzICsxODgsOSBAQAogCiAgICAgZWNobyAiIyBFbmFibGUgYXVkaW8gKGxvYWRzIHNuZF9iY20yODM1KSIgPj4gJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKICAgICBlY2hvICJkdHBhcmFtPWF1ZGlvPW9uIiA+PiAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAotCi0gICAgIyBEZXZpY2UgVHJlZSBzdXBwb3J0Ci0gICAgZWNobyAiIyBMb2FkIGNvcnJlY3QgRGV2aWNlIFRyZWUgZm9yIEFhcmNoNjQiID4+JHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKLSAgICBlY2hvICJkZXZpY2VfdHJlZT1iY20yNzEwLXJwaS0zLWIuZHRiIiA+PiR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiB9CiAKLWFkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19wYWNrYWdlIGFmdGVyIGRvX2luc3RhbGwKK2FkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19pbnN0YWxsCiBkb19kZXBsb3lbZGlyc10gKz0gIiR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcyIKIAogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9jb21tb24vZmlybXdhcmUuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2NvbW1vbi9maXJtd2FyZS5pbmMKaW5kZXggNjcwNzhjMS4uZDU2NGE0OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2NvbW1vbi9maXJtd2FyZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2NvbW1vbi9maXJtd2FyZS5pbmMKQEAgLTEsOSArMSwxMCBAQAotUlBJRldfREFURSA/PSAiMjAxNzEwMjkiCi1SUElGV19TUkNfVVJJID89ICJodHRwczovL2dpdGh1Yi5jb20vcmFzcGJlcnJ5cGkvZmlybXdhcmUvYXJjaGl2ZS8xLiR7UlBJRldfREFURX0udGFyLmd6IgotUlBJRldfUyA/PSAiJHtXT1JLRElSfS9maXJtd2FyZS0xLiR7UlBJRldfREFURX0iCitSUElGV19EQVRFID89ICIyMDE4MDQxNyIKK1NSQ1JFViA/PSAiNWRiOGU0ZTFjNjMxNzhlMjAwZDZmYmVhMjNlZDRhOWJmNDY1NjY1OCIKK1JQSUZXX1NSQ19VUkkgPz0gImh0dHBzOi8vZ2l0aHViLmNvbS9yYXNwYmVycnlwaS9maXJtd2FyZS9hcmNoaXZlLyR7U1JDUkVWfS50YXIuZ3oiCitSUElGV19TID89ICIke1dPUktESVJ9L2Zpcm13YXJlLSR7U1JDUkVWfSIKIAogU1JDX1VSSSA9ICIke1JQSUZXX1NSQ19VUkl9IgotU1JDX1VSSVttZDVzdW1dID0gIjRkMjdjMTg4OGE3YmFiMzA5NzQ3MTkwNmU3YjRhMzE5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2Y2UyOGM4ZDg3ZWYyMmJkY2M1N2FjMTgzNmNhM2YwNGQxZWM2ZjQ2NTgwZmY1YTMwYmY3NmIzYzA4MjIxMTciCi1QViA9ICIke1JQSUZXX0RBVEV9IgorU1JDX1VSSVttZDVzdW1dID0gIjZiY2U1MmYyMmE3YTAwNWE5YmNkYjk5MTJiMTMyNTkwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0NTY4YzRlN2Y1YjBkZWVlNGNkNzZlN2MwYjQ4MzE1ODg1Zjk4M2Q2MTMxZDgxNDhlZjhhZjg0MzgzMjhhMzYiCiAKK1BWID0gIiR7UlBJRldfREFURX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvcnBpLXUtYm9vdC1zY3IvcnBpLXUtYm9vdC1zY3IuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvcnBpLXUtYm9vdC1zY3IvcnBpLXUtYm9vdC1zY3IuYmIKaW5kZXggMzQ1NzMwMC4uMDEwNmFjMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS11LWJvb3Qtc2NyL3JwaS11LWJvb3Qtc2NyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNjci9ycGktdS1ib290LXNjci5iYgpAQCAtNSw2ICs1LDggQEAKIAogREVQRU5EUyA9ICJ1LWJvb3QtbWtpbWFnZS1uYXRpdmUiCiAKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKIFNSQ19VUkkgPSAiZmlsZTovL2Jvb3QuY21kLmluIgogCiBkb19jb21waWxlKCkgewpAQCAtMTQsNyArMTYsNyBAQAogICAgIG1raW1hZ2UgLUEgYXJtIC1UIHNjcmlwdCAtQyBub25lIC1uICJCb290IHNjcmlwdCIgLWQgIiR7V09SS0RJUn0vYm9vdC5jbWQiIGJvb3Quc2NyCiB9CiAKLWluaGVyaXQgZGVwbG95Citpbmhlcml0IGRlcGxveSBub3BhY2thZ2VzCiAKIGRvX2RlcGxveSgpIHsKICAgICBpbnN0YWxsIC1kICR7REVQTE9ZRElSfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QvMDAwMi1ycGlfMF93LUFkZC1jb25maWdzLWNvbnNpc3RlbnQtd2l0aC1ScEkzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QvMDAwMi1ycGlfMF93LUFkZC1jb25maWdzLWNvbnNpc3RlbnQtd2l0aC1ScEkzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5OGZkODUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC8wMDAyLXJwaV8wX3ctQWRkLWNvbmZpZ3MtY29uc2lzdGVudC13aXRoLVJwSTMucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSA1ZDExM2RjMDEzMGVhMmVhOWZhYWEwMDBmYmE5YzczNzI2NmI5NzQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRHJldyBNb3NlbGV5IDxkcmV3Lm1vc2VsZXlAbm9ydGhlcm4udGVjaD4KK0RhdGU6IEZyaSwgOSBGZWIgMjAxOCAxODoxMDowOSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBycGlfMF93OiBBZGQgY29uZmlncyBjb25zaXN0ZW50IHdpdGggUnBJMworCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3BhdGNoLzg1NjU3Mi9dCisKK1NpZ25lZC1vZmYtYnk6IERyZXcgTW9zZWxleSA8ZHJldy5tb3NlbGV5QG5vcnRoZXJuLnRlY2g+CistLS0KKyBjb25maWdzL3JwaV8wX3dfZGVmY29uZmlnIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlncy9ycGlfMF93X2RlZmNvbmZpZyBiL2NvbmZpZ3MvcnBpXzBfd19kZWZjb25maWcKK2luZGV4IDlhNmQyNGIuLjEyNDgyOTQgMTAwNjQ0CistLS0gYS9jb25maWdzL3JwaV8wX3dfZGVmY29uZmlnCisrKysgYi9jb25maWdzL3JwaV8wX3dfZGVmY29uZmlnCitAQCAtMTIsMTQgKzEyLDIxIEBAIENPTkZJR19TWVNfUFJPTVBUPSJVLUJvb3Q+ICIKKyBDT05GSUdfQ01EX0dQSU89eQorIENPTkZJR19DTURfTU1DPXkKKyBDT05GSUdfQ01EX1VTQj15CisrQ09ORklHX09GX0VNQkVEPXkKKytDT05GSUdfRU5WX0ZBVF9JTlRFUkZBQ0U9Im1tYyIKKytDT05GSUdfRU5WX0ZBVF9ERVZJQ0VfQU5EX1BBUlQ9IjA6MSIKKytDT05GSUdfRE1fS0VZQk9BUkQ9eQorIENPTkZJR19ETV9NTUM9eQorIENPTkZJR19NTUNfU0RIQ0k9eQorIENPTkZJR19NTUNfU0RIQ0lfQkNNMjgzNT15CisgQ09ORklHX0RNX0VUSD15CisgQ09ORklHX1VTQj15CisgQ09ORklHX0RNX1VTQj15CisrQ09ORklHX1VTQl9EV0MyPXkKKyBDT05GSUdfVVNCX1NUT1JBR0U9eQorIENPTkZJR19VU0JfS0VZQk9BUkQ9eQorK0NPTkZJR19VU0JfSE9TVF9FVEhFUj15CisrQ09ORklHX1VTQl9FVEhFUl9TTVNDOTVYWD15CisgQ09ORklHX0RNX1ZJREVPPXkKKyBDT05GSUdfU1lTX1dISVRFX09OX0JMQUNLPXkKKyBDT05GSUdfQ09OU09MRV9TQ1JPTExfTElORVM9MTAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XyUuYmJhcHBlbmQKaW5kZXggMzc4MTY2Ni4uN2Q0YTQ5ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfJS5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8lLmJiYXBwZW5kCkBAIC0xICsxLDcgQEAKLVJERVBFTkRTXyR7UE59X2FwcGVuZF9ycGkgPSAiIHJwaS11LWJvb3Qtc2NyIgorRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vdS1ib290OiIKKworU1JDX1VSSV9hcHBlbmRfcnBpID0gIiBcCisgICAgZmlsZTovLzAwMDItcnBpXzBfdy1BZGQtY29uZmlncy1jb25zaXN0ZW50LXdpdGgtUnBJMy5wYXRjaCBcCisiCisKK0RFUEVORFNfYXBwZW5kX3JwaSA9ICIgcnBpLXUtYm9vdC1zY3IiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9CQ000MzQzMEExLmhjZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L0JDTTQzNDMwQTEuaGNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjIyNzVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L0JDTTQzNDMwQTEuaGNkCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvYnJjbTQzNDM4LnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9icmNtNDM0Mzguc2VydmljZQppbmRleCBkNTcxMjVjLi5hNTFmNmJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9icmNtNDM0Mzguc2VydmljZQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9icmNtNDM0Mzguc2VydmljZQpAQCAtMiwxMSArMiwxMyBAQAogRGVzY3JpcHRpb249QnJvYWRjb20gQkNNNDM0MzggYmx1ZXRvb3RoIEhDSQogQ29uZGl0aW9uUGF0aElzRGlyZWN0b3J5PS9wcm9jL2RldmljZS10cmVlL3NvYy9ncGlvQDdlMjAwMDAwL2J0X3BpbnMKIEJlZm9yZT1ibHVldG9vdGguc2VydmljZQotQWZ0ZXI9ZGV2LXR0eUFNQTAuZGV2aWNlCitCaW5kc1RvPWRldi1zZXJpYWwxLmRldmljZQorQWZ0ZXI9ZGV2LXNlcmlhbDEuZGV2aWNlCiAKIFtTZXJ2aWNlXQotVHlwZT1zaW1wbGUKLUV4ZWNTdGFydD0vdXNyL2Jpbi9oY2lhdHRhY2ggLW4gL2Rldi90dHlBTUEwIGJjbTQzeHggOTIxNjAwIG5vZmxvdyAtCitUeXBlPW9uZXNob3QKK1JlbWFpbkFmdGVyRXhpdD15ZXMKK0V4ZWNTdGFydD0vdXNyL2Jpbi9idHVhcnQKIAogW0luc3RhbGxdCiBXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XyUuYmJhcHBlbmQKaW5kZXggMDNlZmQ1Yy4uZDFiODRkZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfJS5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV8lLmJiYXBwZW5kCkBAIC0xLDcgKzEsNiBAQAogRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgogCiBCQ01fQlRfU09VUkNFUyA9ICAiIFwKLSAgICBmaWxlOi8vQkNNNDM0MzBBMS5oY2QgXAogICAgIGZpbGU6Ly8wMDAxLWJjbTQzeHgtQWRkLWJjbTQzeHgtM3dpcmUtdmFyaWFudC5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDItYmNtNDN4eC1UaGUtVUFSVC1zcGVlZC1tdXN0LWJlLXJlc2V0LWFmdGVyLXRoZS1maXJtdy5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDMtSW5jcmVhc2UtZmlybXdhcmUtbG9hZC10aW1lb3V0LXRvLTMwcy5wYXRjaCBcCkBAIC05LDIxICs4LDE5IEBACiAgICAgZmlsZTovL2JyY200MzQzOC5zZXJ2aWNlIFwKICAgICAiCiAKLWVuYWJsZV9iY21fYmx1ZXRvb3RoKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS9saWIvZmlybXdhcmUvYnJjbS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9CQ000MzQzMEExLmhjZCAke0R9L2xpYi9maXJtd2FyZS9icmNtL0JDTTQzNDMwQTEuaGNkCitCQ01fQlRfU0VSVklDRSA9ICJicmNtNDM0Mzguc2VydmljZSIKIAorZW5hYmxlX2JjbV9ibHVldG9vdGgoKSB7CiAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9icmNtNDM0Mzguc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JDTV9CVF9TRVJWSUNFfSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQogICAgIGZpCiB9CiAKLUJDTV9CVF9GSVJNV0FSRSA9ICAiIFwKLSAgICAvbGliL2Zpcm13YXJlL2JyY20vQkNNNDM0MzBBMS5oY2QgXAotICAgICIKLQotQkNNX0JUX1NFUlZJQ0UgPSAgIiBicmNtNDM0Mzguc2VydmljZSIKK0JDTV9CVF9SREVQRU5EUyA9ICJcCisgICAgdWRldi1ydWxlcy1ycGkgXAorICAgIHBpLWJsdWV0b290aCBcCisiCiAKICMgZm9yIHJhc3BiZXJyeXBpMwogU1JDX1VSSV9hcHBlbmRfcmFzcGJlcnJ5cGkzID0gIiAke0JDTV9CVF9TT1VSQ0VTfSIKQEAgLTMyLDEwICsyOSwxMCBAQAogICAgIGVuYWJsZV9iY21fYmx1ZXRvb3RoCiB9CiAKLUZJTEVTXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTMgPSAiICR7QkNNX0JUX0ZJUk1XQVJFfSIKLQogU1lTVEVNRF9TRVJWSUNFXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTMgPSAiICR7QkNNX0JUX1NFUlZJQ0V9IgogCitSREVQRU5EU18ke1BOfV9hcHBlbmRfcmFzcGJlcnJ5cGkzID0gIiAke0JDTV9CVF9SREVQRU5EU30iCisKICMgZm9yIHJhc3BiZXJyeXBpMC13aWZpCiBTUkNfVVJJX2FwcGVuZF9yYXNwYmVycnlwaTAtd2lmaSA9ICIgJHtCQ01fQlRfU09VUkNFU30iCiAKQEAgLTQzLDYgKzQwLDYgQEAKICAgICBlbmFibGVfYmNtX2JsdWV0b290aAogfQogCi1GSUxFU18ke1BOfV9hcHBlbmRfcmFzcGJlcnJ5cGkwLXdpZmkgPSAiICR7QkNNX0JUX0ZJUk1XQVJFfSIKLQogU1lTVEVNRF9TRVJWSUNFXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTAtd2lmaSA9ICIgJHtCQ01fQlRfU0VSVklDRX0iCisKK1JERVBFTkRTXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTAtd2lmaSA9ICIgJHtCQ01fQlRfUkRFUEVORFN9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BpLWJsdWV0b290aC9waS1ibHVldG9vdGguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGktYmx1ZXRvb3RoL3BpLWJsdWV0b290aC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTg1ZjI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BpLWJsdWV0b290aC9waS1ibHVldG9vdGguYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJTY3JpcHQgdG8gcHJvcGVybHkgY29uZmlndXJlIEJULUhDSSBvbiBSYXNwYmVycnkgUGkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vUlBpLURpc3Ryby9waS1ibHVldG9vdGgiCitTRUNUSU9OID0gImtlcm5lbCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PTZhZjhkZTNjOGVlNzFmOGU5MWU5YjIyZjg0ZmYyMDIyIFwKKyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1JQaS1EaXN0cm8vcGktYmx1ZXRvb3RoIgorU1JDUkVWID0gIjJhNzQ3Nzk2NmJiM2M2OTgzOGIyMjRmM2VhOTJjYjQ5YTg4MTI0ZDUiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhbGxhcmNoCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdXNyL2Jpbi9idHVhcnQgJHtEfSR7YmluZGlyfQorfQorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcy9ycGktYmFzaWMtaW1hZ2UuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcy9ycGktYmFzaWMtaW1hZ2UuYmIKaW5kZXggNjIzYTVhNy4uNzdhM2Q3YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9pbWFnZXMvcnBpLWJhc2ljLWltYWdlLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvaW1hZ2VzL3JwaS1iYXNpYy1pbWFnZS5iYgpAQCAtMSw2ICsxLDE1IEBACi0jIEJhc2UgdGhpcyBpbWFnZSBvbiBycGktaHd1cC1pbWFnZQotaW5jbHVkZSBycGktaHd1cC1pbWFnZS5iYgorIyBCYXNlIHRoaXMgaW1hZ2Ugb24gY29yZS1pbWFnZS1taW5pbWFsCitpbmNsdWRlIHJlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLmJiCisKKyMgSW5jbHVkZSBtb2R1bGVzIGluIHJvb3RmcworSU1BR0VfSU5TVEFMTCArPSAiIFwKKwlrZXJuZWwtbW9kdWxlcyBcCisJIgogCiBTUExBU0ggPSAicHNwbGFzaC1yYXNwYmVycnlwaSIKIAogSU1BR0VfRkVBVFVSRVMgKz0gInNzaC1zZXJ2ZXItZHJvcGJlYXIgc3BsYXNoIgorCitkb19pbWFnZV9wcmVwZW5kKCkgeworICAgIGJiLndhcm4oIlRoZSBpbWFnZSAncnBpLWJhc2ljLWltYWdlJyBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlICdjb3JlLWltYWdlLWJhc2UnIGluc3RlYWQiKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9pbWFnZXMvcnBpLWh3dXAtaW1hZ2UuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcy9ycGktaHd1cC1pbWFnZS5iYgppbmRleCA0ODZlYTU5Li5kMjM3MWFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcy9ycGktaHd1cC1pbWFnZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcy9ycGktaHd1cC1pbWFnZS5iYgpAQCAtNSwzICs1LDcgQEAKIElNQUdFX0lOU1RBTEwgKz0gIiBcCiAJa2VybmVsLW1vZHVsZXMgXAogCSIKKworZG9faW1hZ2VfcHJlcGVuZCgpIHsKKyAgICBiYi53YXJuKCJUaGUgaW1hZ2UgJ3JwaS1od3VwLWltYWdlJyBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlICdjb3JlLWltYWdlLW1pbmltYWwnIGluc3RlYWQiKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9pbWFnZXMvcnBpLXRlc3QtaW1hZ2UuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcy9ycGktdGVzdC1pbWFnZS5iYgppbmRleCBjOGRjNDM2Li5jMmY1ZjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcy9ycGktdGVzdC1pbWFnZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcy9ycGktdGVzdC1pbWFnZS5iYgpAQCAtMSw1ICsxLDUgQEAKLSMgQmFzZSB0aGlzIGltYWdlIG9uIHJwaS1iYXNpYy1pbWFnZQotaW5jbHVkZSBycGktYmFzaWMtaW1hZ2UuYmIKKyMgQmFzZSB0aGlzIGltYWdlIG9uIGNvcmUtaW1hZ2UtYmFzZQoraW5jbHVkZSByZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtYmFzZS5iYgogCiBDT01QQVRJQkxFX01BQ0hJTkUgPSAiXnJwaSQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LXJ1bGVzLXJwaS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LXJ1bGVzLXJwaS5iYgppbmRleCAyMDQ0M2QzLi5iMjQ5ZDk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1ydWxlcy1ycGkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS91ZGV2L3VkZXYtcnVsZXMtcnBpLmJiCkBAIC02LDYgKzYsOCBAQAogCiBTID0gIiR7V09SS0RJUn0iCiAKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKIGRvX2luc3RhbGwgKCkgewogICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCiAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTktY29tLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LXJ1bGVzLXVkaXNrcy1ycGkvODAtdWRpc2tzLXJwaS5ydWxlcyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LXJ1bGVzLXVkaXNrcy1ycGkvODAtdWRpc2tzLXJwaS5ydWxlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWZmNjZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS91ZGV2L3VkZXYtcnVsZXMtdWRpc2tzLXJwaS84MC11ZGlza3MtcnBpLnJ1bGVzCkBAIC0wLDAgKzEsMTAgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgUGFydGl0aW9ucyB3aGljaCBkZXNrdG9wcyBzaG91bGQgbm90IGRpc3BsYXkKKyMKKworIyBib290IHBhcnRpdGlvbgorRU5We0lEX0ZTX1RZUEV9PT0idmZhdCIsIEVOVntJRF9GU19MQUJFTH09PSJyYXNwYmVycnlwaSIsIFwKKyAgRU5We1VESVNLU19QUkVTRU5UQVRJT05fSElERX09IjEiLCBFTlZ7VURJU0tTX0lHTk9SRX09IjEiCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1ydWxlcy11ZGlza3MtcnBpXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LXJ1bGVzLXVkaXNrcy1ycGlfMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMzU1MjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1ydWxlcy11ZGlza3MtcnBpXzEuMC5iYgpAQCAtMCwwICsxLDEzIEBACitERVNDUklQVElPTiA9ICJhZGQgdWRpc2svdWRldiBydWxlIHRvIGhpZGUgYm9vdCBwYXJ0aXRpb24gZnJvbSB1ZGV2IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKK1NSQ19VUkkgPSAiZmlsZTovLzgwLXVkaXNrcy1ycGkucnVsZXMiCisKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZAorCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vODAtdWRpc2tzLXJwaS5ydWxlcyAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7YmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlci5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL3BpLWJsYXN0ZXIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2I3OWNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGlzIHByb2plY3QgZW5hYmxlcyBQV00gb24gdGhlIEdQSU8gcGlucyB5b3UgcmVxdWVzdCBvZiBhIFJhc3BiZXJyeSBQaS4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2FyZmF0YS9waS1ibGFzdGVyLyIKLVNFQ1RJT04gPSAiZGV2ZWwvbGlicyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLm1kO2JlZ2lubGluZT0yMjU7ZW5kbGluZT0yNTI7bWQ1PWEwMTI4NjhlZjVmODNiOWYyNTdhZjI1M2Q3Y2IwN2EzIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc2FyZmF0YS9waS1ibGFzdGVyIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1pbml0c2NyaXB0LWxzYi1kZXBlbmRlbmN5LnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCB1cGRhdGUtcmMuZCBhdXRvdG9vbHMKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfSA9ICIke1BOfS5ib290LnNoIgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0gPSAiZGVmYXVsdHMgMTUgODUiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJecnBpJCIKLQotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL3BpLWJsYXN0ZXJfZ2l0LmJiCmluZGV4IDczMGY5ZDMuLjI3NDg0NTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlcl9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3Rlci9waS1ibGFzdGVyX2dpdC5iYgpAQCAtMSwzICsxLDIzIEBACi1yZXF1aXJlIHBpLWJsYXN0ZXIuaW5jCitERVNDUklQVElPTiA9ICJUaGlzIHByb2plY3QgZW5hYmxlcyBQV00gb24gdGhlIEdQSU8gcGlucyB5b3UgcmVxdWVzdCBvZiBhIFJhc3BiZXJyeSBQaS4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2FyZmF0YS9waS1ibGFzdGVyLyIKK1NFQ1RJT04gPSAiZGV2ZWwvbGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLm1kO2JlZ2lubGluZT0yMjU7ZW5kbGluZT0yNTI7bWQ1PWEwMTI4NjhlZjVmODNiOWYyNTdhZjI1M2Q3Y2IwN2EzIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc2FyZmF0YS9waS1ibGFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1pbml0c2NyaXB0LWxzYi1kZXBlbmRlbmN5LnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKIAogU1JDUkVWID0gIjEwMzVhZDdkZmZiMjcwYzQwZWVjMWJiM2E2NTQxNzFhNzU1ZmJhOTgiCisKK2luaGVyaXQgdXBkYXRlLXJjLmQgYXV0b3Rvb2xzCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0iCitJTklUU0NSSVBUX05BTUVfJHtQTn0gPSAiJHtQTn0uYm9vdC5zaCIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59ID0gImRlZmF1bHRzIDE1IDg1IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiXnJwaSQiCisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8lLmJiYXBwZW5kCmluZGV4IGU3ODkwMjIuLjUyZmU3NTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8lLmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8lLmJiYXBwZW5kCkBAIC0xLDMgKzEsNyBAQAotUEFDS0FHRUNPTkZJR19hcHBlbmRfcnBpID0gIiBnYWxsaXVtIgorIyBEUkkzIG5vdGU6CisjIFdpdGggb2UtY29yZSBjb21taXQgODUwOWUyZTFhODc1Nzg4ODJiNzE5NDhjY2VmM2I1MGNjZjEyMjhiMyBkcmkzIGlzIHNldAorIyBhcyBkZWZhdWx0LiBUbyBzdGF0ZSBvdXQgY2xlYXJseSB0aGF0IFJhc3BpIG5lZWRzIGRyaTMgYW5kIHRvIGF2b2lkIHN1cnByaXNlcworIyBpbiBjYXNlIG9lLWNvcmUgY2hhbmdlcyB0aGlzIGRlZmF1bHQsIHdlIHNldCBkcmkzIGV4cGxpY2l0bHkuCitQQUNLQUdFQ09ORklHX2FwcGVuZF9ycGkgPSAiIGdhbGxpdW0gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ3gxMSBkcmkzJywgJycsIGQpfSIKIEdBTExJVU1EUklWRVJTX3JwaSA9ICJ2YzQiCiBEUklEUklWRVJTX3JwaSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDAxLUFsbG93LWFwcGxpY2F0aW9ucy10by1zZXQtbmV4dC1yZXNvdXJjZS1oYW5kbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDAxLUFsbG93LWFwcGxpY2F0aW9ucy10by1zZXQtbmV4dC1yZXNvdXJjZS1oYW5kbGUucGF0Y2gKaW5kZXggNTg2MWM0ZS4uOTMzZjI3OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwMS1BbGxvdy1hcHBsaWNhdGlvbnMtdG8tc2V0LW5leHQtcmVzb3VyY2UtaGFuZGxlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDEtQWxsb3ctYXBwbGljYXRpb25zLXRvLXNldC1uZXh0LXJlc291cmNlLWhhbmRsZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZTQ1YmM2NzczNjhkMGY4ZDQyNzIwYWFkMjQyZjMzZjZlMjY4N2ZiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMGE2NGRjNjFkM2Q3ZGI2OTM4OTE1N2FlNzU3MjAzYjRiM2FmZGJmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERvbSBDb2JsZXkgPGRjNEBicm9hZGNvbS5jb20+CiBEYXRlOiBUdWUsIDkgSnVsIDIwMTMgMDk6MjY6MjYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8xNV0gQWxsb3cgYXBwbGljYXRpb25zIHRvIHNldCBuZXh0IHJlc291cmNlIGhhbmRsZQorU3ViamVjdDogW1BBVENIIDAxLzE2XSBBbGxvdyBhcHBsaWNhdGlvbnMgdG8gc2V0IG5leHQgcmVzb3VyY2UgaGFuZGxlCiAKIFRoaXMgcGF0Y2ggYWRkcyBwcm92aXNpb25zIGluIHVzZXJsYW5kIHRvCiBsZXQgYXBwcyBjYWxsZXJzIHNldCB0aGUgbmV4dCByZW5kZXJlaW5nIGRpc3BtYW54IHJlc291cmNlLgpAQCAtMjA0LDUgKzIwNCw1IEBACiAgCiAgRk4odm9pZCwgZWdsSW50R2V0Q29sb3JEYXRhX2ltcGwsIChFR0xfU1VSRkFDRV9JRF9UIHMsIEtIUk5fSU1BR0VfRk9STUFUX1QgZm9ybWF0LCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBpbnQzMl90IHN0cmlkZSwgdWludDMyX3QgeV9vZmZzZXQsIHZvaWQgKmRhdGEpKQogLS0gCi0yLjE1LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDAyLXdheWxhbmQtQWRkLXN1cHBvcnQtZm9yLXRoZS1XYXlsYW5kLXdpbnN5cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDItd2F5bGFuZC1BZGQtc3VwcG9ydC1mb3ItdGhlLVdheWxhbmQtd2luc3lzLnBhdGNoCmluZGV4IGQ2ZTY0NzYuLjQ2MTM1MDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDItd2F5bGFuZC1BZGQtc3VwcG9ydC1mb3ItdGhlLVdheWxhbmQtd2luc3lzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDItd2F5bGFuZC1BZGQtc3VwcG9ydC1mb3ItdGhlLVdheWxhbmQtd2luc3lzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxNWZiMjcwZjQzOGY0ZWYxNDEzMTkyYjVjZTFlMGRjNzg0YjQ1ZDllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1NjA4ZWM4MDAyYmU4MzcwZTc4YzlkYmIxZTA3Y2VlNGNmYjE4YjU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogVG9tZXUgVml6b3NvIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNvbT4KIERhdGU6IFR1ZSwgMSBPY3QgMjAxMyAxMzoxOToyMCArMDIwMAotU3ViamVjdDogW1BBVENIIDAyLzE1XSB3YXlsYW5kOiBBZGQgc3VwcG9ydCBmb3IgdGhlIFdheWxhbmQgd2luc3lzCitTdWJqZWN0OiBbUEFUQ0ggMDIvMTZdIHdheWxhbmQ6IEFkZCBzdXBwb3J0IGZvciB0aGUgV2F5bGFuZCB3aW5zeXMKIAogKiBBZGRzIEVHTF9XTF9iaW5kX3dheWxhbmRfZGlzcGxheSBleHRlbnNpb24KICogQWRkcyB3YXlsYW5kLWVnbCBsaWJyYXJ5CkBAIC01NywyMCArNTcsMjAgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgaW50ZXJmYWNlL3dheWxhbmQvZGlzcG1hbngueG1sCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IG1ha2VmaWxlcy9jbWFrZS9XYXlsYW5kLmNtYWtlCiAKLWRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQotaW5kZXggNjM1NzBmMS4uMTQ1OTQzNiAxMDA2NDQKLS0tLSBhLy5naXRpZ25vcmUKLSsrKyBiLy5naXRpZ25vcmUKK0luZGV4OiBnaXQvLmdpdGlnbm9yZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnLy5naXRpZ25vcmUKKysrKyBnaXQvLmdpdGlnbm9yZQogQEAgLTMwLDMgKzMwLDQgQEAgYnVpbGQvCiAgKi5wdHMKICAqLnBwbQogICoubWt2CiArKn4KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBjZmM4YWU1Li42NzNhNWFkIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjQsNiArMjQsMTcgQEAgaW5jbHVkZShtYWtlZmlsZXMvY21ha2UvZ2xvYmFsX3NldHRpbmdzLmNtYWtlKQorSW5kZXg6IGdpdC9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL0NNYWtlTGlzdHMudHh0CisrKysgZ2l0L0NNYWtlTGlzdHMudHh0CitAQCAtMjQsNiArMjQsMTcgQEAgaW5jbHVkZShtYWtlZmlsZXMvY21ha2UvZ2xvYmFsX3NldHRpbmdzLgogIGluY2x1ZGUobWFrZWZpbGVzL2NtYWtlL2FybS1saW51eC5jbWFrZSkKICBpbmNsdWRlKG1ha2VmaWxlcy9jbWFrZS92bWNzLmNtYWtlKQogIApAQCAtODgsMjIgKzg4LDIyIEBACiAgZW5hYmxlX2xhbmd1YWdlKEFTTSkKICAKICAjIEdsb2JhbCBpbmNsdWRlIHBhdGhzCi1kaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCi1pbmRleCAzNThkMmI0Li40ZGE0NDQ4IDEwMDY0NAotLS0tIGEvUkVBRE1FLm1kCi0rKysgYi9SRUFETUUubWQKLUBAIC00LDMgKzQsNyBAQCBFR0wsIG1tYWwsIEdMRVN2MiwgdmNvcywgb3Blbm1heGlsLCB2Y2hpcV9hcm0sIGJjbV9ob3N0LCBXRkMsIE9wZW5WRy4KLSAKLSBVc2UgYnVpbGRtZSB0byBidWlsZC4gSXQgcmVxdWlyZXMgY21ha2UgdG8gYmUgaW5zdGFsbGVkIGFuZCBhbiBhcm0gY3Jvc3MgY29tcGlsZXIuIEl0IGlzIHNldCB1cCB0byB1c2UgdGhpcyBvbmU6CitJbmRleDogZ2l0L1JFQURNRS5tZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL1JFQURNRS5tZAorKysrIGdpdC9SRUFETUUubWQKK0BAIC02LDMgKzYsNyBAQCBVc2UgYnVpbGRtZSB0byBidWlsZC4gSXQgcmVxdWlyZXMgY21ha2UKICBodHRwczovL2dpdGh1Yi5jb20vcmFzcGJlcnJ5cGkvdG9vbHMvdHJlZS9tYXN0ZXIvYXJtLWJjbTI3MDgvZ2NjLWxpbmFyby1hcm0tbGludXgtZ251ZWFiaWhmLXJhc3BiaWFuCisgCisgTm90ZSB0aGF0IHRoaXMgcmVwb3NpdG9yeSBkb2VzIG5vdCBjb250YWluIHRoZSBzb3VyY2UgZm9yIHRoZSBlZGlkX3BhcnNlciBhbmQgdmNkYmcgYmluYXJpZXMgZHVlIHRvIGxpY2Vuc2luZyByZXN0cmljdGlvbnMuCiArCiArVG8gYnVpbGQgc3VwcG9ydCBmb3IgdGhlIFdheWxhbmQgd2luc3lzIGluIEVHTCwgZXhlY3V0ZSB0aGUgYnVpbGRtZSBzY3JpcHQgbGlrZSB0aGlzOgogKwogKyQgQlVJTERfV0FZTEFORD0xIC4vYnVpbGRtZS4KLWRpZmYgLS1naXQgYS9idWlsZG1lIGIvYnVpbGRtZQotaW5kZXggYjhmZDQ0MC4uYTc4MGJiNiAxMDA3NTUKLS0tLSBhL2J1aWxkbWUKLSsrKyBiL2J1aWxkbWUKK0luZGV4OiBnaXQvYnVpbGRtZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2J1aWxkbWUKKysrKyBnaXQvYnVpbGRtZQogQEAgLTgsNiArOCwxMCBAQCBmaQogIAogIEJVSUxEU1VCRElSPWBlY2hvICRCVUlMRFRZUEUgfCB0ciAnW0EtWl0nICdbYS16XSdgOwpAQCAtMTMwLDExICsxMzAsMTEgQEAKICAJbWFrZSAtaiBgbnByb2NgCiAgCiAgCWlmIFsgIiQxIiAhPSAiIiBdOyB0aGVuCi1kaWZmIC0tZ2l0IGEvaG9zdF9hcHBsaWNhdGlvbnMvbGludXgvYXBwcy9yYXNwaWNhbS9DTWFrZUxpc3RzLnR4dCBiL2hvc3RfYXBwbGljYXRpb25zL2xpbnV4L2FwcHMvcmFzcGljYW0vQ01ha2VMaXN0cy50eHQKLWluZGV4IGU2YWE2YjguLjY5MDU5Y2IgMTAwNjQ0Ci0tLS0gYS9ob3N0X2FwcGxpY2F0aW9ucy9saW51eC9hcHBzL3Jhc3BpY2FtL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9ob3N0X2FwcGxpY2F0aW9ucy9saW51eC9hcHBzL3Jhc3BpY2FtL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjgsNyArMjgsNyBAQCBhZGRfZXhlY3V0YWJsZShyYXNwaXZpZHl1diAgJHtDT01NT05fU09VUkNFU30gUmFzcGlWaWRZVVYuYykKK0luZGV4OiBnaXQvaG9zdF9hcHBsaWNhdGlvbnMvbGludXgvYXBwcy9yYXNwaWNhbS9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2hvc3RfYXBwbGljYXRpb25zL2xpbnV4L2FwcHMvcmFzcGljYW0vQ01ha2VMaXN0cy50eHQKKysrKyBnaXQvaG9zdF9hcHBsaWNhdGlvbnMvbGludXgvYXBwcy9yYXNwaWNhbS9DTWFrZUxpc3RzLnR4dAorQEAgLTI4LDcgKzI4LDcgQEAgYWRkX2V4ZWN1dGFibGUocmFzcGl2aWR5dXYgICR7Q09NTU9OX1NPVQogIAogIHNldCAoTU1BTF9MSUJTIG1tYWxfY29yZSBtbWFsX3V0aWwgbW1hbF92Y19jbGllbnQpCiAgCkBAIC0xNDMsMTAgKzE0MywxMCBAQAogIHRhcmdldF9saW5rX2xpYnJhcmllcyhyYXNwaXl1diAgICR7TU1BTF9MSUJTfSB2Y29zIGJjbV9ob3N0KQogIHRhcmdldF9saW5rX2xpYnJhcmllcyhyYXNwaXZpZCAgICR7TU1BTF9MSUJTfSB2Y29zIGJjbV9ob3N0KQogIHRhcmdldF9saW5rX2xpYnJhcmllcyhyYXNwaXZpZHl1diAgICR7TU1BTF9MSUJTfSB2Y29zIGJjbV9ob3N0KQotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL0NNYWtlTGlzdHMudHh0IGIvaW50ZXJmYWNlL2tocm9ub3MvQ01ha2VMaXN0cy50eHQKLWluZGV4IDlhZDYxNWIuLjNkMzU3MWEgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9DTWFrZUxpc3RzLnR4dAotKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvQ01ha2VMaXN0cy50eHQKK0luZGV4OiBnaXQvaW50ZXJmYWNlL2tocm9ub3MvQ01ha2VMaXN0cy50eHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9pbnRlcmZhY2Uva2hyb25vcy9DTWFrZUxpc3RzLnR4dAorKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy9DTWFrZUxpc3RzLnR4dAogQEAgLTYsNiArNiwxMiBAQAogICMgaGF2ZSBxdWl0ZSBhIGZldyBjaXJjdWxhciBkZXBlbmRlbmNpZXMsIGFuZCBzbyB0aGUgb25seSB3YXkKICAjIHRvIG1ha2UgaXQgd29yayBzZWVtcyB0byBiZSB0byBoYXZlIGV2ZXJ5dGhpbmcgc3RhdGljLgpAQCAtMTYwLDcgKzE2MCw3IEBACiAgc2V0KEVHTF9TT1VSQ0UKICAgICBlZ2wvZWdsX2NsaWVudF9jb25maWcuYwogICAgIGVnbC9lZ2xfY2xpZW50X2NvbnRleHQuYwotQEAgLTU1LDEyICs2MSw1NiBAQCBzZXQoQ0xJRU5UX1NPVVJDRQorQEAgLTU1LDEyICs2MSw1NSBAQCBzZXQoQ0xJRU5UX1NPVVJDRQogICAgIGNvbW1vbi9raHJuX2ludF9oYXNoX2FzbS5zCiAgICAgY29tbW9uL2tocm5fY2xpZW50X2NhY2hlLmMpCiAgCkBAIC0xNjgsOCArMTY4LDcgQEAKICsgICBraHJuX2NsaWVudAogKyAgIHZjaGlxX2FybQogKyAgIHZjb3MKLSsgICBiY21faG9zdAotKyAgIC1sbSkKKysgICBiY21faG9zdCkKICsKICtpZiAoQlVJTERfV0FZTEFORCkKICsgICBzZXQoRUdMX1NPVVJDRQpAQCAtMjE3LDIxICsyMTYsMzAgQEAKICAjIFRPRE8gZG8gd2UgbmVlZCBFR0xfc3RhdGljIGFuZCBHTEVTdjJfc3RhdGljIG5vdyB0aGF0IGtocm5fc3RhdGljIGV4aXN0cz8KICBhZGRfbGlicmFyeShFR0xfc3RhdGljIFNUQVRJQyAke0VHTF9TT1VSQ0V9KQogIGFkZF9saWJyYXJ5KEdMRVN2Ml9zdGF0aWMgU1RBVElDICR7R0xFU19TT1VSQ0V9KQotQEAgLTcyLDggKzEyMiw3IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMgKC4uLy4uL2hvc3RfYXBwbGljYXRpb25zL2xpbnV4L2xpYnMvc20gKQorQEAgLTcyLDggKzEyMSw3IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMgKC4uLy4uL2hvc3RfYXBwbGljYXQKICBzZXQoVkNTTV9MSUJTIHZjc20pCiAgYWRkX2RlZmluaXRpb25zKC1ES0hST05PU19IQVZFX1ZDU00pCiAgZW5kaWYoKQogLQogLXRhcmdldF9saW5rX2xpYnJhcmllcyhFR0wga2hybl9jbGllbnQgdmNoaXFfYXJtIHZjb3MgYmNtX2hvc3QgJHtWQ1NNX0xJQlN9IC1sbSkKLSt0YXJnZXRfbGlua19saWJyYXJpZXMoRUdMICR7RUdMX0xJQlN9ICR7VkNTTV9MSUJTfSkKKyt0YXJnZXRfbGlua19saWJyYXJpZXMoRUdMICR7RUdMX0xJQlN9ICR7VkNTTV9MSUJTfSAtbG0pCiAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKEdMRVN2MiBFR0wga2hybl9jbGllbnQgdmNvcykKICB0YXJnZXRfbGlua19saWJyYXJpZXMoV0ZDIEVHTCkKICB0YXJnZXRfbGlua19saWJyYXJpZXMoT3BlblZHIEVHTCkKLWRpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuYyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jCi1pbmRleCBlZjRiYWJkLi5kN2U3OThlIDEwMDY0NAotLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmMKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jCi1AQCAtNTQsNiArNTQsMTAgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCitAQCAtODcsNyArMTM1LDcgQEAgYWRkX2xpYnJhcnkoYnJjbUdMRVN2MiAke1NIQVJFRH0gJHtHTEVTXworIGFkZF9saWJyYXJ5KGJyY21PcGVuVkcgJHtTSEFSRUR9ICR7VkdfU09VUkNFfSkKKyBhZGRfbGlicmFyeShicmNtV0ZDICR7U0hBUkVEfSAke1dGQ19TT1VSQ0V9KQorIAorLXRhcmdldF9saW5rX2xpYnJhcmllcyhicmNtRUdMIGtocm5fY2xpZW50IHZjaGlxX2FybSB2Y29zIGJjbV9ob3N0ICR7VkNTTV9MSUJTfSAtbG0pCisrdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGJyY21FR0wgJHtFR0xfTElCU30gJHtWQ1NNX0xJQlN9IC1sbSkKKyB0YXJnZXRfbGlua19saWJyYXJpZXMoYnJjbUdMRVN2MiBicmNtRUdMIGtocm5fY2xpZW50IHZjb3MpCisgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGJyY21XRkMgYnJjbUVHTCkKKyB0YXJnZXRfbGlua19saWJyYXJpZXMoYnJjbU9wZW5WRyBicmNtRUdMKQorSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jCisrKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jCitAQCAtNTQsNiArNTQsMTAgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSQogICNpbmNsdWRlICJhcHBsaWNhdGlvbnMvdm1jcy9raHJvbm9zL2tocm9ub3Nfc2VydmVyLmgiCiAgI2VuZGlmCiAgCkBAIC0yNDIsNyArMjUwLDcgQEAKICBWQ09TX0xPR19DQVRfVCBraHJuX2NsaWVudF9sb2cgPSBWQ09TX0xPR19JTklUKCJraHJuX2NsaWVudCIsIFZDT1NfTE9HX1dBUk4pOwogIAogIC8qCi1AQCAtMTQyLDYgKzE0NiwxMCBAQCB2b2lkIGNsaWVudF90cnlfdW5sb2FkX3NlcnZlcihDTElFTlRfUFJPQ0VTU19TVEFURV9UICpwcm9jZXNzKQorQEAgLTE0Miw2ICsxNDYsMTAgQEAgdm9pZCBjbGllbnRfdHJ5X3VubG9hZF9zZXJ2ZXIoQ0xJRU5UX1BSTwogIGJvb2wgY2xpZW50X3Byb2Nlc3Nfc3RhdGVfaW5pdChDTElFTlRfUFJPQ0VTU19TVEFURV9UICpwcm9jZXNzKQogIHsKICAgICBpZiAoIXByb2Nlc3MtPmluaXRlZCkgewpAQCAtMjUzLDcgKzI2MSw3IEBACiAgICAgICAgaWYgKCFraHJuX3BvaW50ZXJfbWFwX2luaXQoJnByb2Nlc3MtPmNvbnRleHRzLCA2NCkpCiAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogIAotQEAgLTE5NCw2ICsyMDIsMTMgQEAgYm9vbCBjbGllbnRfcHJvY2Vzc19zdGF0ZV9pbml0KENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3MpCitAQCAtMTk0LDYgKzIwMiwxMyBAQCBib29sIGNsaWVudF9wcm9jZXNzX3N0YXRlX2luaXQoQ0xJRU5UX1BSCiAgICAgICAgfQogICNlbmRpZgogIApAQCAtMjY3LDEwICsyNzUsMTAgQEAKICAgICAgICBwcm9jZXNzLT5pbml0ZWQgPSB0cnVlOwogICAgIH0KICAKLWRpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuaCBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5oCi1pbmRleCA4MDQwMzliLi42MTVmN2I0IDEwMDY0NAotLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmgKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5oCitJbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmgKKysrKyBnaXQvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmgKIEBAIC0zMTAsNiArMzEwLDE2IEBAIHN0cnVjdCBDTElFTlRfUFJPQ0VTU19TVEFURSB7CiAgI2lmZGVmIFJQQ19MSUJSQVJZCiAgICAgS0hST05PU19TRVJWRVJfQ09OTkVDVElPTl9UIGtocm5fY29ubmVjdGlvbjsKQEAgLTI4OCwxMSArMjk2LDExIEBACiAgfTsKICAKICBleHRlcm4gYm9vbCBjbGllbnRfcHJvY2Vzc19zdGF0ZV9pbml0KENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3MpOwotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9tYW5nbGUuaCBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9tYW5nbGUuaAotaW5kZXggYjNjMDRmNC4uYjdiMjFjNSAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9tYW5nbGUuaAotKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X21hbmdsZS5oCi1AQCAtODMsNiArODMsOSBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KK0luZGV4OiBnaXQvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X21hbmdsZS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X21hbmdsZS5oCisrKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9tYW5nbGUuaAorQEAgLTgzLDYgKzgzLDkgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSQogICNkZWZpbmUgZWdsUmVsZWFzZUdsb2JhbEltYWdlQlJDTSBtYW5nbGVkX2VnbFJlbGVhc2VHbG9iYWxJbWFnZUJSQ00KICAjZGVmaW5lIGVnbEluaXRHbG9iYWxJbWFnZUJSQ00gbWFuZ2xlZF9lZ2xJbml0R2xvYmFsSW1hZ2VCUkNNCiAgI2RlZmluZSBlZ2xUZXJtR2xvYmFsSW1hZ2VCUkNNIG1hbmdsZWRfZWdsVGVybUdsb2JhbEltYWdlQlJDTQpAQCAtMzAyLDExICszMTAsMTEgQEAKICAKICAvKiBPcGVuR0wgRVMgMS4xIGFuZCAyLjAgZnVuY3Rpb25zICovCiAgCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X3BsYXRmb3JtLmggYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcGxhdGZvcm0uaAotaW5kZXggMWM5ZGEzYS4uNzE1YzY3ZSAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9wbGF0Zm9ybS5oCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcGxhdGZvcm0uaAotQEAgLTQ4LDYgKzQ4LDEwIEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcGxhdGZvcm0uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9wbGF0Zm9ybS5oCisrKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9wbGF0Zm9ybS5oCitAQCAtNDgsNiArNDgsMTAgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSQogICNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy9jb21tb24vdmNvcy9raHJuX2NsaWVudF9wbGF0Zm9ybV9maWxsZXJfdmNvcy5oIgogICNlbmRpZgogIApAQCAtMzI2LDExICszMzQsMTEgQEAKICsjZW5kaWYKICsKICAjZW5kaWYgLy8gS0hSTl9DTElFTlRfUExBVEZPUk1fSAotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF91bm1hbmdsZS5oIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X3VubWFuZ2xlLmgKLWluZGV4IDRmM2NlNDkuLjg0ZjZlYzAgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfdW5tYW5nbGUuaAotKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X3VubWFuZ2xlLmgKLUBAIC04Myw2ICs4Myw5IEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfdW5tYW5nbGUuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF91bm1hbmdsZS5oCisrKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF91bm1hbmdsZS5oCitAQCAtODMsNiArODMsOSBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJCiAgI3VuZGVmIGVnbFJlbGVhc2VHbG9iYWxJbWFnZUJSQ00KICAjdW5kZWYgZWdsSW5pdEdsb2JhbEltYWdlQlJDTQogICN1bmRlZiBlZ2xUZXJtR2xvYmFsSW1hZ2VCUkNNCkBAIC0zNDAsMTEgKzM0OCwxMSBAQAogIAogIC8qIE9wZW5HTCBFUyAxLjEgYW5kIDIuMCBmdW5jdGlvbnMgKi8KICAKLWRpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24vbGludXgva2hybl9jbGllbnRfcGxhdGZvcm1fbGludXguYyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX2NsaWVudF9wbGF0Zm9ybV9saW51eC5jCi1pbmRleCA3MTBkMjBmLi41MGQ2MGE2IDEwMDY0NAotLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fY2xpZW50X3BsYXRmb3JtX2xpbnV4LmMKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX2NsaWVudF9wbGF0Zm9ybV9saW51eC5jCi1AQCAtMzcsNiArMzcsMTEgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCitJbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX2NsaWVudF9wbGF0Zm9ybV9saW51eC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fY2xpZW50X3BsYXRmb3JtX2xpbnV4LmMKKysrKyBnaXQvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fY2xpZW50X3BsYXRmb3JtX2xpbnV4LmMKK0BAIC0zNyw2ICszNywxMSBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJCiAgI2luY2x1ZGUgIlgxMS9YbGliLmgiCiAgI2VuZGlmCiAgCkBAIC0zNTYsNyArMzY0LDcgQEAKICBleHRlcm4gVkNPU19MT0dfQ0FUX1Qga2hybl9jbGllbnRfbG9nOwogIAogIGV4dGVybiB2b2lkIHZjX3ZjaGlfa2hyb25vc19pbml0KCk7Ci1AQCAtNDY0LDEzICs0NjksMzYgQEAgRUdMRGlzcGxheSBraHJuX3BsYXRmb3JtX3NldF9kaXNwbGF5X2lkKEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlfaWQpCitAQCAtNDY0LDE0ICs0NjksMzcgQEAgRUdMRGlzcGxheSBraHJuX3BsYXRmb3JtX3NldF9kaXNwbGF5X2lkKAogIAkgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgfQogICNlbHNlCkBAIC0zODQsMTggKzM5MiwxOSBAQAogKyNlbmRpZgogKyAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKICsgICB9Ci0gfQorK30KICsKICsjaWZkZWYgQlVJTERfV0FZTEFORAogK3N0cnVjdCB3bF9kaXNwbGF5ICpraHJuX3BsYXRmb3JtX2dldF93bF9kaXNwbGF5KCkKICt7CiArICAgcmV0dXJuIGhhY2t5X2Rpc3BsYXk7Ci0rfQotKyNlbmRpZgorIH0KICAjZW5kaWYKKysjZW5kaWYKICAKICAjaWZkZWYgV0FOVF9YCi1AQCAtODA1LDIyICs4MzMsODEgQEAgc3RhdGljIEVHTF9ESVNQTUFOWF9XSU5ET1dfVCAqY2hlY2tfZGVmYXVsdChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbikKKyBzdGF0aWMgdm9pZCBkdW1wX2hpZXJhcmNoeShXaW5kb3cgdywgV2luZG93IHRoaXN3LCBXaW5kb3cgbG9vaywgaW50IGxldmVsKQorQEAgLTgwNSwyMiArODMzLDgxIEBAIHN0YXRpYyBFR0xfRElTUE1BTlhfV0lORE9XX1QgKmNoZWNrX2RlZmEKICB2b2lkIHBsYXRmb3JtX2dldF9kaW1lbnNpb25zKEVHTERpc3BsYXkgZHB5LCBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbiwKICAgICAgICB1aW50MzJfdCAqd2lkdGgsIHVpbnQzMl90ICpoZWlnaHQsIHVpbnQzMl90ICpzd2FwY2hhaW5fY291bnQpCiAgewpAQCAtNDI2LDggKzQzNSw4IEBACiArI2lmZGVmIEJVSUxEX1dBWUxBTkQKICsgICB9CiArI2VuZGlmCi0gfQotIAorK30KKysKICsjaWZkZWYgQlVJTERfV0FZTEFORAogK3N0YXRpYyBESVNQTUFOWF9FTEVNRU5UX0hBTkRMRV9UIGNyZWF0ZV9kdW1teV9lbGVtZW50KCkKICt7CkBAIC00NTgsOSArNDY3LDkgQEAKICsgICB2Y19kaXNwbWFueF9kaXNwbGF5X2Nsb3NlKGRpc3BsYXkpOwogKwogKyAgIHJldHVybiBlbGVtZW50OwotK30KKyB9CiArI2VuZGlmCi0rCisgCiAgdWludDMyX3QgcGxhdGZvcm1fZ2V0X2hhbmRsZShFR0xEaXNwbGF5IGRweSwgRUdMTmF0aXZlV2luZG93VHlwZSB3aW4pCiAgewogLSAgIEVHTF9ESVNQTUFOWF9XSU5ET1dfVCAqZHdpbiA9IGNoZWNrX2RlZmF1bHQod2luKTsKQEAgLTQ4OSwxMSArNDk4LDEwIEBACiAgfQogIAogICNlbmRpZgotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuYyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjBlMWI5ZTcKK0luZGV4OiBnaXQvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fd2F5bGFuZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24vbGludXgva2hybl93YXlsYW5kLmMKKysrKyBnaXQvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fd2F5bGFuZC5jCiBAQCAtMCwwICsxLDIxNSBAQAogKy8qCiArQ29weXJpZ2h0IChjKSAyMDEzLCBSYXNwYmVycnkgUGkgRm91bmRhdGlvbgpAQCAtNzEwLDc0ICs3MTgsNzIgQEAKICsKICsgICByZXR1cm4gd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlcjsKICt9Ci1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmggYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24vbGludXgva2hybl93YXlsYW5kLmgKLXNpbWlsYXJpdHkgaW5kZXggNTYlCi1jb3B5IGZyb20gaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmgKLWNvcHkgdG8gaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fd2F5bGFuZC5oCi1pbmRleCBiNzIzYjc2Li5iOWJmMDhjIDEwMDY0NAotLS0tIGEvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmgKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuaAotQEAgLTEsNSArMSw1IEBACi0gLyoKLS1Db3B5cmlnaHQgKGMpIDIwMTIsIEJyb2FkY29tIEV1cm9wZSBMdGQKK0luZGV4OiBnaXQvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaAorKysrIGdpdC9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaAorQEAgLTY2LDQgKzY2LDE5IEBAIHR5cGVkZWYgc3RydWN0IHsKKyAjZGVmaW5lIEVMRU1FTlRfQ0hBTkdFX01BU0tfUkVTT1VSQ0UgICgxPDw0KQorICNkZWZpbmUgRUxFTUVOVF9DSEFOR0VfVFJBTlNGT1JNICAgICAgKDE8PDUpCisgCisrI2lmZGVmIEJVSUxEX1dBWUxBTkQKKysvKiBYWFg6IFRoaXMgc2hvdWxkIGJlIGluIGEgcHJpdmF0ZSBoZWFkZXIgdGhhdCBjYW4gYmUgaW5jbHVkZWQgZnJvbSBFR0wgYW5kIHZjXyogKi8KKysjaW5jbHVkZSA8d2F5bGFuZC1zZXJ2ZXIuaD4KKysjaW5jbHVkZSAiaW50ZXJmYWNlL3ZtY3NfaG9zdC93YXlsYW5kLWRpc3BtYW54LXNlcnZlci1wcm90b2NvbC5oIgorK3N0cnVjdCB3bF9kaXNwbWFueF9zZXJ2ZXJfYnVmZmVyIHsKKysJc3RydWN0IHdsX3Jlc291cmNlICpyZXNvdXJjZTsKKysJc3RydWN0IHdsX2Rpc3BtYW54ICpkaXNwbWFueDsKKysJZW51bSB3bF9kaXNwbWFueF9mb3JtYXQgZm9ybWF0OworKwlESVNQTUFOWF9SRVNPVVJDRV9IQU5ETEVfVCBoYW5kbGU7CisrCWludDMyX3Qgd2lkdGg7CisrCWludDMyX3QgaGVpZ2h0OworKwlpbnQgaW5fdXNlOworK307CisrI2VuZGlmCisrCisgI2VuZGlmCitJbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAorKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24vbGludXgva2hybl93YXlsYW5kLmgKK0BAIC0wLDAgKzEsMzMgQEAKKysvKgogK0NvcHlyaWdodCAoYykgMjAxMywgUmFzcGJlcnJ5IFBpIEZvdW5kYXRpb24KLSBBbGwgcmlnaHRzIHJlc2VydmVkLgotIAotIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotQEAgLTI1LDQ1ICsyNSw5IEBAIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSAKLS0jaWZuZGVmIFZDX1ZDSElfRElTUE1BTlhfSAotLSNkZWZpbmUgVkNfVkNISV9ESVNQTUFOWF9ICisrQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysKKytSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyttb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKysgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKysgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZQorKyAgICAgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisrICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisrCisrVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorK0FOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisrV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorK0RJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorK0RJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisrKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworK0xPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorK09OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisrKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKytTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysqLworKwogKyNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuaCIKLSAKLS0jaW5jbHVkZSAiaW50ZXJmYWNlL3BlZXIvdmNfdmNoaV9kaXNwbWFueF9jb21tb24uaCIKKysKICtpbnQgaW5pdF9wcm9jZXNzX3dheWxhbmQoQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2Vzcyk7CiAraW50IGRvX3dsX3JvdW5kdHJpcCgpOwotIAotLSNkZWZpbmUgVkNfTlVNX0hPU1RfUkVTT1VSQ0VTIDY0Ci0tI2RlZmluZSBESVNQTUFOWF9NU0dGSUZPX1NJWkUgMTAyNAotLSNkZWZpbmUgRElTUE1BTlhfQ0xJRU5UX05BTUUgTUFLRV9GT1VSQ0MoIkRJU1AiKQotLSNkZWZpbmUgRElTUE1BTlhfTk9USUZZX05BTUUgTUFLRV9GT1VSQ0MoIlVQREgiKQotLQotLS8vT3Igd2l0aCBjb21tYW5kIHRvIGluZGljYXRlIHdlIGRvbid0IG5lZWQgYSByZXNwb25zZQotLSNkZWZpbmUgRElTUE1BTlhfTk9fUkVQTFlfTUFTSyAoMTw8MzEpCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgewotLSAgIGNoYXIgICAgIGRlc2NyaXB0aW9uWzMyXTsKLS0gICB1aW50MzJfdCB3aWR0aDsKLS0gICB1aW50MzJfdCBoZWlnaHQ7Ci0tICAgdWludDMyX3QgYXNwZWN0X3BpeHdpZHRoOwotLSAgIHVpbnQzMl90IGFzcGVjdF9waXhoZWlnaHQ7Ci0tICAgdWludDMyX3QgZmllbGRyYXRlX251bTsKLS0gICB1aW50MzJfdCBmaWVsZHJhdGVfZGVub207Ci0tICAgdWludDMyX3QgZmllbGRzX3Blcl9mcmFtZTsKLS0gICB1aW50MzJfdCB0cmFuc2Zvcm07ICAgICAgICAKLS19IEdFVF9NT0RFU19EQVRBX1Q7Ci0tCi0tdHlwZWRlZiBzdHJ1Y3QgewotLSAgIGludDMyX3QgIHJlc3BvbnNlOwotLSAgIHVpbnQzMl90IHdpZHRoOwotLSAgIHVpbnQzMl90IGhlaWdodDsKLS0gICB1aW50MzJfdCB0cmFuc2Zvcm07Ci0tICAgdWludDMyX3QgaW5wdXRfZm9ybWF0OwotLX0gR0VUX0lORk9fREFUQV9UOwotLQotLS8vQXR0cmlidXRlcyBjaGFuZ2VzIGZsYWcgbWFzawotLSNkZWZpbmUgRUxFTUVOVF9DSEFOR0VfTEFZRVIgICAgICAgICAgKDE8PDApCi0tI2RlZmluZSBFTEVNRU5UX0NIQU5HRV9PUEFDSVRZICAgICAgICAoMTw8MSkKLS0jZGVmaW5lIEVMRU1FTlRfQ0hBTkdFX0RFU1RfUkVDVCAgICAgICgxPDwyKQotLSNkZWZpbmUgRUxFTUVOVF9DSEFOR0VfU1JDX1JFQ1QgICAgICAgKDE8PDMpCi0tI2RlZmluZSBFTEVNRU5UX0NIQU5HRV9NQVNLX1JFU09VUkNFICAoMTw8NCkKLS0jZGVmaW5lIEVMRU1FTlRfQ0hBTkdFX1RSQU5TRk9STSAgICAgICgxPDw1KQotLQotLSNlbmRpZgorKwogK3N0cnVjdCB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyICphbGxvY2F0ZV93bF9idWZmZXIoc3RydWN0IHdsX2VnbF93aW5kb3cgKndpbmRvdywgS0hSTl9JTUFHRV9GT1JNQVRfVCBjb2xvcik7Ci1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKLWluZGV4IGI4YmIzNzQuLjAzZmU2N2IgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jCitJbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jCisrKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKIEBAIC0xNTMsNiArMTUzLDEwIEBAIGJ5IGFuIGF0dHJpYnV0ZSB2YWx1ZSIKICAjaW5jbHVkZSA8c3RkbGliLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtNzg5LDcgKzc5NSw3IEBACiAgCiAgI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X2NyLmMiCiAgCi1AQCAtMTYyLDE3ICsxNjYsNiBAQCBzdGF0aWMgdm9pZCBlZ2xfY3VycmVudF9yZWxlYXNlKENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3MsIEVHTF9DVVJSRU5UX1QgKgorQEAgLTE2MiwxNyArMTY2LDYgQEAgc3RhdGljIHZvaWQgZWdsX2N1cnJlbnRfcmVsZWFzZShDTElFTlRfUAogIHZvaWQgZWdsX2dsX2ZsdXNoX2NhbGxiYWNrKGJvb2wgd2FpdCk7CiAgdm9pZCBlZ2xfdmdfZmx1c2hfY2FsbGJhY2soYm9vbCB3YWl0KTsKICAKQEAgLTgwNywxNyArODEzLDE3IEBACiAgLyoKICBUT0RPOiBkbyBhbiBSUEMgY2FsbCB0byBtYWtlIHN1cmUgdGhlIEtocm9ub3MgdmxsIGlzIGxvYWRlZCAoYW5kIHRoYXQgaXQgc3RheXMgbG9hZGVkIHVudGlsIGVnbFRlcm1pbmF0ZSkKICBBbHNvIGFmZmVjdHMgZ2xvYmFsIGltYWdlIChhbmQgcG9zc2libHkgb3RoZXJzPykKLUBAIC00NTAsNiArNDQzLDkgQEAgRUdMQVBJIGNvbnN0IGNoYXIgRUdMQVBJRU5UUlkgKiBlZ2xRdWVyeVN0cmluZyhFR0xEaXNwbGF5IGRweSwgRUdMaW50IG5hbWUpCi0gI2lmZGVmIEVHTF9LSFJfZmVuY2Vfc3luYworQEAgLTQ1MSw2ICs0NDQsOSBAQCBFR0xBUEkgY29uc3QgY2hhciBFR0xBUElFTlRSWSAqIGVnbFF1ZXJ5CiAgICAgICAgICAgICAgIkVHTF9LSFJfZmVuY2Vfc3luYyAiCiAgI2VuZGlmCi0rI2VuZGlmCisgI2VuZGlmCiArI2lmIEVHTF9XTF9iaW5kX3dheWxhbmRfZGlzcGxheQogKyAgICAgICAgICAgICJFR0xfV0xfYmluZF93YXlsYW5kX2Rpc3BsYXkgIgotICNlbmRpZgorKyNlbmRpZgogICAgICAgICAgICAgIDsKICAgICAgICAgICBicmVhazsKLUBAIC02NTUsOCArNjUxLDcgQEAgRUdMQVBJIEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgZWdsQ3JlYXRlV2luZG93U3VyZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGMKKyAgICAgICBjYXNlIEVHTF9WRU5ET1I6CitAQCAtNjU1LDggKzY1MSw3IEBAIEVHTEFQSSBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX05PX1RFWFRVUkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTk9fVEVYVFVSRSwKQEAgLTgyNyw3ICs4MzMsNyBAQAogIAogICAgICAgICAgICAgICAgIGlmIChzdXJmYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGtocm5fcG9pbnRlcl9tYXBfaW5zZXJ0KCZwcm9jZXNzLT5zdXJmYWNlcywgcHJvY2Vzcy0+bmV4dF9zdXJmYWNlLCBzdXJmYWNlKSkgewotQEAgLTkwMSw3ICs4OTYsNyBAQCBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnCitAQCAtOTAxLDcgKzg5Niw3IEBAIEVHTEFQSSBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pcG1hcF90ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZV9mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlX3RhcmdldCwKQEAgLTgzNiw3ICs4NDIsNyBAQAogIAogICAgICAgICAgICAgIGlmIChzdXJmYWNlKSB7CiAgICAgICAgICAgICAgICAgaWYgKGtocm5fcG9pbnRlcl9tYXBfaW5zZXJ0KCZwcm9jZXNzLT5zdXJmYWNlcywgcHJvY2Vzcy0+bmV4dF9zdXJmYWNlLCBzdXJmYWNlKSkgewotQEAgLTEwNDMsNyArMTAzOCw3IEBAIEVHTEFQSSBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjCitAQCAtMTA0Myw3ICsxMDM4LDcgQEAgRUdMQVBJIEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgZWdsQ3JlYXRlUAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTk9fVEVYVFVSRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT19URVhUVVJFLApAQCAtODQ1LDcgKzg1MSw3IEBACiAgCiAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cmZhY2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2hybl9wb2ludGVyX21hcF9pbnNlcnQoJnByb2Nlc3MtPnN1cmZhY2VzLCBwcm9jZXNzLT5uZXh0X3N1cmZhY2UsIHN1cmZhY2UpKSB7Ci1AQCAtMjI0NSw2ICsyMjQwLDkgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3dhcEJ1ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZikKK0BAIC0yMjQ1LDYgKzIyNDAsOSBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTd2FwQnVmCiAgICAgQ0xJRU5UX1RIUkVBRF9TVEFURV9UICp0aHJlYWQ7CiAgICAgQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2VzczsKICAgICBFR0xCb29sZWFuIHJlc3VsdDsKQEAgLTg1NSw3ICs4NjEsNyBAQAogIAogICAgIHZjb3NfbG9nX3RyYWNlKCJlZ2xTd2FwQnVmZmVycyBzdGFydC4gZHB5PSVkLiBzdXJmPSVkLiIsIChpbnQpZHB5LCAoaW50KXN1cmYpOwogIAotQEAgLTIzMTUsMTggKzIzMTMsNTggQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3dhcEJ1ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZikKK0BAIC0yMzE1LDE4ICsyMzEzLDU4IEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN3YXBCdWYKICAKICAgICAgICAgICAgICAgICB2Y29zX2xvZ190cmFjZSgiZWdsU3dhcEJ1ZmZlcnMgc2VydmVyIGNhbGwiKTsKICAKQEAgLTkyNiwxMSArOTMyLDExIEBACiAgICAgICAgICAgICAgICAgUlBDX0NBTEw2KGVnbEludFN3YXBCdWZmZXJzX2ltcGwsCiAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgIEVHTElOVFNXQVBCVUZGRVJTX0lELAotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X2dldF9wcm9jLmMgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9nZXRfcHJvYy5jCi1pbmRleCA0Y2ZhOWZmLi42YTcxNWFmIDEwMDY0NAotLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfZ2V0X3Byb2MuYwotKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfZ2V0X3Byb2MuYwotQEAgLTI1NCw2ICsyNTQsMTcgQEAgRUdMQVBJIHZvaWQgRUdMQVBJRU5UUlkgKCogZWdsR2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciAqcHJvY25hbWUpKSh2b2lkKQorSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9nZXRfcHJvYy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfZ2V0X3Byb2MuYworKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9nZXRfcHJvYy5jCitAQCAtMjU0LDYgKzI1NCwxNyBAQCBFR0xBUEkgdm9pZCBFR0xBUElFTlRSWSAoKiBlZ2xHZXRQcm9jQWRkCiAgICAgICAgcmV0dXJuICh2b2lkKCopKHZvaWQpKWVnbFF1ZXJ5R2xvYmFsSW1hZ2VCUkNNOwogICNlbmRpZgogIApAQCAtOTQ4LDExICs5NTQsMTEgQEAKICAgICByZXR1cm4gKHZvaWQoKikodm9pZCkpIE5VTEw7CiAgfQogIAotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYwotaW5kZXggMTI4MzI1ZS4uNDIzNTBiZiAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYwotKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jCi1AQCAtNDYsNiArNDYsMTEgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCitJbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYworKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMKK0BAIC00Niw2ICs0NiwxMSBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJCiAgI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfaW50X2ltcGwuaCIKICAjZW5kaWYKICAKQEAgLTEwMjYsNyArMTAzMiw3IEBACiAgICAgICAgICAgUlBDX0NBTEwxNV9PVVRfQ1RSTChlZ2xJbnRDcmVhdGVTdXJmYWNlX2ltcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xJTlRDUkVBVEVTVVJGQUNFX0lELAotQEAgLTY2Myw2ICs2ODUsMTggQEAgdm9pZCBlZ2xfc3VyZmFjZV9mcmVlKEVHTF9TVVJGQUNFX1QgKnN1cmZhY2UpCitAQCAtNjYzLDYgKzY4NSwxOCBAQCB2b2lkIGVnbF9zdXJmYWNlX2ZyZWUoRUdMX1NVUkZBQ0VfVCAqc3VyCiAgICAgaWYoIHN1cmZhY2UtPnR5cGUgPT0gV0lORE9XICkgewogICAgICAgIHZjb3NfbG9nX3RyYWNlKCJlZ2xfc3VyZmFjZV9mcmVlOiBjYWxsaW5nIHBsYXRmb3JtX2Rlc3Ryb3lfd2luaGFuZGxlLi4uIik7CiAgICAgICAgcGxhdGZvcm1fZGVzdHJveV93aW5oYW5kbGUoIHN1cmZhY2UtPndpbiwgc3VyZmFjZS0+aW50ZXJuYWxfaGFuZGxlICk7CkBAIC0xMDQ1LDEwICsxMDUxLDEwIEBACiAgICAgfQogICAgIC8qIHJldHVybiB2YWx1ZSBpZ25vcmVkIC0tIHJlYWQgcGVyZm9ybWVkIHRvIGVuc3VyZSBibG9ja2luZy4gd2Ugd2FudCB0aGlzIHRvCiAgICAgICogYmxvY2sgc28gY2xpZW50cyBjYW4gc2FmZWx5IGRlc3Ryb3kgdGhlIHN1cmZhY2UncyB3aW5kb3cgYXMgc29vbiBhcyB0aGUKLWRpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmggYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmgKLWluZGV4IGI1YmY3MGEuLmUzMjhiNzcgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmgKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaAorSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmgKKysrKyBnaXQvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5oCiBAQCAtMjg4LDYgKzI4OCw0MSBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdHlwZSA9PSBQSVhNQVAKICAgICAqLwpAQCAtMTA5MSw3ICsxMDk3LDcgQEAKICB9IEVHTF9TVVJGQUNFX1Q7CiAgCiAgZXh0ZXJuIGJvb2wgZWdsX3N1cmZhY2VfY2hlY2tfYXR0cmlicygKLUBAIC0zMjIsOCArMzU3LDcgQEAgZXh0ZXJuIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2NyZWF0ZSgKK0BAIC0zMjIsOCArMzU3LDcgQEAgZXh0ZXJuIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2NyZWF0ZQogICAgIEVHTGVudW0gdGV4dHVyZV9mb3JtYXQsCiAgICAgRUdMZW51bSB0ZXh0dXJlX3RhcmdldCwKICAgICBFR0xOYXRpdmVQaXhtYXBUeXBlIHBpeG1hcCwKQEAgLTExMDEsMTAgKzExMDcsMTAgQEAKICBleHRlcm4gRUdMX1NVUkZBQ0VfVCAqZWdsX3N1cmZhY2VfZnJvbV92Z19pbWFnZSgKICAgICBWR0ltYWdlIHZnX2hhbmRsZSwKICAgICBFR0xTdXJmYWNlIG5hbWUsCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oCi1pbmRleCA1MWIzNTgwLi42ODYzYTNiIDEwMDY0NAotLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2ludF9pbXBsLmgKK0luZGV4OiBnaXQvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oCisrKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfaW50X2ltcGwuaAogQEAgLTU3LDcgKzU3LDcgQEAgRk4oaW50LCBlZ2xJbnRDcmVhdGVTdXJmYWNlX2ltcGwsICgKICAgICB1aW50MzJfdCBzZW0sCiAgICAgdWludDMyX3QgdHlwZSwKQEAgLTExMTQsMTEgKzExMjAsMTAgQEAKICAKICBGTihpbnQsIGVnbEludENyZWF0ZVBidWZmZXJGcm9tVkdJbWFnZV9pbXBsLCAoCiAgICAgVkdJbWFnZSB2Z19oYW5kbGUsCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMgYi9pbnRlcmZhY2Uva2hyb25vcy9leHQvZWdsX3dheWxhbmQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjU3MzA3NDMKK0luZGV4OiBnaXQvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfd2F5bGFuZC5jCisrKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfd2F5bGFuZC5jCiBAQCAtMCwwICsxLDI0NiBAQAogKy8qCiArQ29weXJpZ2h0IChjKSAyMDEzLCBSYXNwYmVycnkgUGkgRm91bmRhdGlvbgpAQCAtMTM2NiwxMSArMTM3MSwxMSBAQAogKwogKyAgIHJldHVybiBFR0xfRkFMU0U7CiArfQotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvRUdML2VnbGV4dC5oIGIvaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdsZXh0LmgKLWluZGV4IDg5YTMzNjkuLmQ3ZTViYTcgMTAwNzU1Ci0tLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xleHQuaAotKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdsZXh0LmgKLUBAIC0xOTEsNiArMTkxLDI5IEBAIHR5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTEdFVFNZTkNBVFRSSUJLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHCitJbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvRUdML2VnbGV4dC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdsZXh0LmgKKysrKyBnaXQvaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdsZXh0LmgKK0BAIC0xOTEsNiArMTkxLDI5IEBAIHR5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTEcKICAjZW5kaWYKICAKICAKQEAgLTE0MDAsMTEgKzE0MDUsMTAgQEAKICAjaWZkZWYgX19jcGx1c3BsdXMKICB9CiAgI2VuZGlmCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wtcHJpdi5oIGIvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wtcHJpdi5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOGUzOGQzNgorSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC1wcml2LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLXByaXYuaAorKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC1wcml2LmgKIEBAIC0wLDAgKzEsNTMgQEAKICsvKiBDb3BpZWQgZnJvbSBNZXNhICovCiArCkBAIC0xNDU5LDExICsxNDYzLDEwIEBACiArI2VuZGlmCiArCiArI2VuZGlmCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wuYyBiL2ludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iOGYwNTBiCitJbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLmMKKysrKyBnaXQvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wuYwogQEAgLTAsMCArMSw1OSBAQAogKy8qIENvcGllZCBmcm9tIE1lc2EgKi8KICsKQEAgLTE1MjQsMTEgKzE1MjcsMTAgQEAKICsJaWYgKGhlaWdodCkKICsJCSpoZWlnaHQgPSBlZ2xfd2luZG93LT5hdHRhY2hlZF9oZWlnaHQ7CiArfQotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLnBjLmluIGIvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wucGMuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44YmFmYzE1CitJbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLnBjLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5wYy5pbgorKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5wYy5pbgogQEAgLTAsMCArMSwxMCBAQAogK3ByZWZpeD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhACiArZXhlY19wcmVmaXg9JHtwcmVmaXh9CkBAIC0xNTQwLDEwICsxNTQyLDEwIEBACiArVmVyc2lvbjogQFBST0pFQ1RfQVBJVkVSQAogK0xpYnM6IC1MJHtsaWJkaXJ9IC1sd2F5bGFuZC1lZ2wKICtDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS92bWNzX2hvc3QvQ01ha2VMaXN0cy50eHQgYi9pbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0Ci1pbmRleCBmZGUxOGRhLi42NzE4MjE1IDEwMDc1NQotLS0tIGEvaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dAotKysrIGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dAorSW5kZXg6IGdpdC9pbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dAorKysrIGdpdC9pbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0CiBAQCAtOSwxMyArOSwyNCBAQCBhZGRfZGVmaW5pdGlvbnMoLWZuby1zdHJpY3QtYWxpYXNpbmcpCiAgCiAgaW5jbHVkZV9kaXJlY3Rvcmllcygke1ZNQ1NfVEFSR0VUfS92Y2ZpbGVkKQpAQCAtMTU3NCwxMSArMTU3NiwxMSBAQAogICNhZGRfbGlicmFyeShidWZtYW4gICAgICAgICAgICB2Y192Y2hpX2J1Zm1hbi5jICAgICAgICAgICAgKQogIAogICMgT3Blbk1BWC9JTCBjb21wb25lbnQgc2VydmljZQotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfZGlzcG1hbnguaCBiL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfZGlzcG1hbnguaAotaW5kZXggMzdmZGFlMS4uZmUzNjE5YSAxMDA3NTUKLS0tLSBhL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfZGlzcG1hbnguaAotKysrIGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y19kaXNwbWFueC5oCi1AQCAtMzksNiArMzksMTEgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCitJbmRleDogZ2l0L2ludGVyZmFjZS92bWNzX2hvc3QvdmNfZGlzcG1hbnguaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfZGlzcG1hbnguaAorKysrIGdpdC9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX2Rpc3BtYW54LmgKK0BAIC0zOSw2ICszOSwxMSBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJCiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgZXh0ZXJuICJDIiB7CiAgI2VuZGlmCkBAIC0xNTkwLDcgKzE1OTIsNyBAQAogIC8vIFNhbWUgZnVuY3Rpb24gYXMgYWJvdmUsIHRvIGFpZCBtaWdyYXRpb24gb2YgY29kZS4KICBWQ0hQUkVfIGludCBWQ0hQT1NUXyB2Y19kaXNwbWFuX2luaXQoIHZvaWQgKTsKICAvLyBTdG9wIHRoZSBzZXJ2aWNlIGZyb20gYmVpbmcgdXNlZAotQEAgLTEzNSw2ICsxNDAsMTEgQEAgVkNIUFJFXyBpbnQgVkNIUE9TVF8gdmNfZGlzcG1hbnhfcmVzb3VyY2Vfc2V0X3BhbGV0dGUoIERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV8KK0BAIC0xMzUsNiArMTQwLDExIEBAIFZDSFBSRV8gaW50IFZDSFBPU1RfIHZjX2Rpc3BtYW54X3Jlc291cmMKICAvLyBTdGFydCB0cmlnZ2VyaW5nIGNhbGxiYWNrcyBzeW5jZWQgdG8gdnN5bmMKICBWQ0hQUkVfIGludCBWQ0hQT1NUXyB2Y19kaXNwbWFueF92c3luY19jYWxsYmFjayggRElTUE1BTlhfRElTUExBWV9IQU5ETEVfVCBkaXNwbGF5LCBESVNQTUFOWF9DQUxMQkFDS19GVU5DX1QgY2JfZnVuYywgdm9pZCAqY2JfYXJnICk7CiAgCkBAIC0xNjAyLDExICsxNjA0LDExIEBACiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgfQogICNlbmRpZgotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5jIGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmMKLWluZGV4IDdhNmNkY2QuLmVhYjE0NmUgMTAwNzU1Ci0tLS0gYS9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguYwotKysrIGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmMKLUBAIC0xMzE5LDMgKzEzMTksNDUgQEAgc3RhdGljIHZvaWQgKmRpc3BtYW54X25vdGlmeV9mdW5jKCB2b2lkICphcmcgKSB7CitJbmRleDogZ2l0L2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmMKKysrKyBnaXQvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmMKK0BAIC0xMzE5LDMgKzEzMTksNDUgQEAgc3RhdGljIHZvaWQgKmRpc3BtYW54X25vdGlmeV9mdW5jKCB2b2lkCiAgICAgfQogICAgIHJldHVybiAwOwogIH0KQEAgLTE2NTIsMzUgKzE2NTQsMTAgQEAKICsJYnVmZmVyLT5pbl91c2UgPSBpbl91c2U7CiArfQogKyNlbmRpZgotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5oIGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmgKLWluZGV4IGI3MjNiNzYuLmYwYmFlMzAgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaAotKysrIGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmgKLUBAIC02Niw0ICs2NiwxOSBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gI2RlZmluZSBFTEVNRU5UX0NIQU5HRV9NQVNLX1JFU09VUkNFICAoMTw8NCkKLSAjZGVmaW5lIEVMRU1FTlRfQ0hBTkdFX1RSQU5TRk9STSAgICAgICgxPDw1KQotIAotKyNpZmRlZiBCVUlMRF9XQVlMQU5ECi0rLyogWFhYOiBUaGlzIHNob3VsZCBiZSBpbiBhIHByaXZhdGUgaGVhZGVyIHRoYXQgY2FuIGJlIGluY2x1ZGVkIGZyb20gRUdMIGFuZCB2Y18qICovCi0rI2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLmg+Ci0rI2luY2x1ZGUgImludGVyZmFjZS92bWNzX2hvc3Qvd2F5bGFuZC1kaXNwbWFueC1zZXJ2ZXItcHJvdG9jb2wuaCIKLStzdHJ1Y3Qgd2xfZGlzcG1hbnhfc2VydmVyX2J1ZmZlciB7Ci0rCXN0cnVjdCB3bF9yZXNvdXJjZSAqcmVzb3VyY2U7Ci0rCXN0cnVjdCB3bF9kaXNwbWFueCAqZGlzcG1hbng7Ci0rCWVudW0gd2xfZGlzcG1hbnhfZm9ybWF0IGZvcm1hdDsKLSsJRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgaGFuZGxlOwotKwlpbnQzMl90IHdpZHRoOwotKwlpbnQzMl90IGhlaWdodDsKLSsJaW50IGluX3VzZTsKLSt9OwotKyNlbmRpZgotKwotICNlbmRpZgotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbCBiL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmMxODYyNmQKK0luZGV4OiBnaXQvaW50ZXJmYWNlL3dheWxhbmQvZGlzcG1hbngueG1sCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9pbnRlcmZhY2Uvd2F5bGFuZC9kaXNwbWFueC54bWwKKysrKyBnaXQvaW50ZXJmYWNlL3dheWxhbmQvZGlzcG1hbngueG1sCiBAQCAtMCwwICsxLDEyMyBAQAogKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CiArPHByb3RvY29sIG5hbWU9ImRpc3BtYW54Ij4KQEAgLTE4MDUsMTEgKzE3ODIsMTAgQEAKICsgIDwvaW50ZXJmYWNlPgogKwogKzwvcHJvdG9jb2w+Ci1kaWZmIC0tZ2l0IGEvbWFrZWZpbGVzL2NtYWtlL1dheWxhbmQuY21ha2UgYi9tYWtlZmlsZXMvY21ha2UvV2F5bGFuZC5jbWFrZQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmFkOTBkMzAKK0luZGV4OiBnaXQvbWFrZWZpbGVzL2NtYWtlL1dheWxhbmQuY21ha2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBiL21ha2VmaWxlcy9jbWFrZS9XYXlsYW5kLmNtYWtlCisrKysgZ2l0L21ha2VmaWxlcy9jbWFrZS9XYXlsYW5kLmNtYWtlCiBAQCAtMCwwICsxLDcyIEBACiArIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiArIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBQaWVyIEx1aWdpIEZpb3JpbmkgPHBpZXJsdWlnaS5maW9yaW5pQGdtYWlsLmNvbT4KQEAgLTE4ODMsNiArMTg1OSwzIEBACiArICAgIGxpc3QoQVBQRU5EICR7X3NvdXJjZXN9ICIke19zZXJ2ZXJfaGVhZGVyfSIpCiArICAgIHNldCgke19zb3VyY2VzfSAkeyR7X3NvdXJjZXN9fSBQQVJFTlRfU0NPUEUpCiArZW5kZnVuY3Rpb24oKQotLS0gCi0yLjE1LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwMy13YXlsYW5kLUFkZC1XYXlsYW5kLWV4YW1wbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDAzLXdheWxhbmQtQWRkLVdheWxhbmQtZXhhbXBsZS5wYXRjaAppbmRleCAxZDc4NzU1Li5lM2EwY2YyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDAzLXdheWxhbmQtQWRkLVdheWxhbmQtZXhhbXBsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDAzLXdheWxhbmQtQWRkLVdheWxhbmQtZXhhbXBsZS5wYXRjaApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA0LXdheWxhbmQtZWdsLUFkZC1iY21faG9zdC10by1kZXBlbmRlbmNpZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA0LXdheWxhbmQtZWdsLUFkZC1iY21faG9zdC10by1kZXBlbmRlbmNpZXMucGF0Y2gKaW5kZXggZDYwYzQzMi4uNzEzZmMzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwNC13YXlsYW5kLWVnbC1BZGQtYmNtX2hvc3QtdG8tZGVwZW5kZW5jaWVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDQtd2F5bGFuZC1lZ2wtQWRkLWJjbV9ob3N0LXRvLWRlcGVuZGVuY2llcy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gY2FlNGZmODM0ZWVmMjNjOGYyMzEyNmJhNGQ2MzBkYjM5NWYxM2FlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjE3ODc5YjY5MTk4NGI1YzQ5NTBlNGI5NGViZjEwMmM3ODc5N2VkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDEwIEF1ZyAyMDE1IDAyOjM4OjI3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMTVdIHdheWxhbmQtZWdsOiBBZGQgYmNtX2hvc3QgdG8gZGVwZW5kZW5jaWVzCitTdWJqZWN0OiBbUEFUQ0ggMDQvMTZdIHdheWxhbmQtZWdsOiBBZGQgYmNtX2hvc3QgdG8gZGVwZW5kZW5jaWVzCiAKIEl0IHVzZXMgaGVhZGVycyBsaWtlIHZjb3NfcGxhdGZvcm1fdHlwZXMuaCBidXQgZG9lcyBub3QKIGRlcGVuZCBvbiBtb2R1bGUgd2hpY2ggc2hvdWxkIGFkZCB0aGUgcmVxdWlyZWQgaW5jbHVkZSBwYXRocwpAQCAtMjQsNSArMjQsNSBAQAogIExpYnM6IC1MJHtsaWJkaXJ9IC1sd2F5bGFuZC1lZ2wKICBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQogLS0gCi0yLjE1LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA1LWludGVyZmFjZS1yZW1vdmUtZmF1bHR5LWFzc2VydC10by1tYWtlLXdlc3Rvbi1oYXBweS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA1LWludGVyZmFjZS1yZW1vdmUtZmF1bHR5LWFzc2VydC10by1tYWtlLXdlc3Rvbi1oYXBweS0ucGF0Y2gKaW5kZXggNjc2ZjM0Yy4uOGQ3ODMzMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwNS1pbnRlcmZhY2UtcmVtb3ZlLWZhdWx0eS1hc3NlcnQtdG8tbWFrZS13ZXN0b24taGFwcHktLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDUtaW50ZXJmYWNlLXJlbW92ZS1mYXVsdHktYXNzZXJ0LXRvLW1ha2Utd2VzdG9uLWhhcHB5LS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gOGVlNGY2ZWVkYjgxZTliZmUwZTYwM2EyMTYwNmM1MmY5NTAxZTYwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDI3M2I3YjlkN2EyN2Q4ZmU3ZDNhZDg2ODBiNzk5Zjk5N2U3NWRjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206ICJZYW5uIEUuIE1PUklOIiA8eWFubi5tb3Jpbi4xOTk4QGZyZWUuZnI+CiBEYXRlOiBTYXQsIDI0IEphbiAyMDE1IDIyOjA3OjE5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMTVdIGludGVyZmFjZTogcmVtb3ZlIGZhdWx0eSBhc3NlcnQoKSB0byBtYWtlIHdlc3RvbiBoYXBweQorU3ViamVjdDogW1BBVENIIDA1LzE2XSBpbnRlcmZhY2U6IHJlbW92ZSBmYXVsdHkgYXNzZXJ0KCkgdG8gbWFrZSB3ZXN0b24gaGFwcHkKICBhdCBydW50aW1lCiAKIFRoaXMgd2FzIHJlbW92ZWQgYWZ0ZXIgYSBkaXNjdXNzaW9uIG9uIElSQyB3aXRoIHRoZSB3ZXN0b24gZ3V5cwpAQCAtMjUsNSArMjUsNSBAQAogICAgICAgICAgICAgIH0KICAgICAgICAgICB9IGVsc2UgewogLS0gCi0yLjE1LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA2LXplcm8tb3V0LXdsLWJ1ZmZlcnMtaW4tZWdsX3N1cmZhY2VfZnJlZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDYtemVyby1vdXQtd2wtYnVmZmVycy1pbi1lZ2xfc3VyZmFjZV9mcmVlLnBhdGNoCmluZGV4IGE4ZjFmMjQuLjQzZWI3ZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDYtemVyby1vdXQtd2wtYnVmZmVycy1pbi1lZ2xfc3VyZmFjZV9mcmVlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDYtemVyby1vdXQtd2wtYnVmZmVycy1pbi1lZ2xfc3VyZmFjZV9mcmVlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA3ODliMGIwYzA0Yjc0MWMyMWRkNTczYjc4ZWRlZDk3MDcyMWQxNGMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwZDY3OGNkMjA0MjU1MWNjNGUyNmVjNDJmYTNhYmE3YzcyZDAzM2I0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgNiBGZWIgMjAxNiAxMToxMDo0NyAtMDgwMAotU3ViamVjdDogW1BBVENIIDA2LzE1XSB6ZXJvLW91dCB3bCBidWZmZXJzIGluIGVnbF9zdXJmYWNlX2ZyZWUKK1N1YmplY3Q6IFtQQVRDSCAwNi8xNl0gemVyby1vdXQgd2wgYnVmZmVycyBpbiBlZ2xfc3VyZmFjZV9mcmVlCiAKIG9yaWdpbnMgZnJvbSBidWlsZHJvb3QKIApAQCAtMjksNSArMjksNSBAQAogICNlbmRpZgogICAgIH0KIC0tIAotMi4xNS4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwNy1pbml0aWFsaXplLWZyb250LWJhY2std2F5bGFuZC1idWZmZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwNy1pbml0aWFsaXplLWZyb250LWJhY2std2F5bGFuZC1idWZmZXJzLnBhdGNoCmluZGV4IGFkMjYzNmEuLjk4Nzc0MGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDctaW5pdGlhbGl6ZS1mcm9udC1iYWNrLXdheWxhbmQtYnVmZmVycy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA3LWluaXRpYWxpemUtZnJvbnQtYmFjay13YXlsYW5kLWJ1ZmZlcnMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDc2MmRkMzE1Njc3NWYxNjdmZjBkZmQ0NDMyMmRiYjE5YTg1ODIyYTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVjMmUwMDk4OWJmNjE0YjI1OWJjOWE0N2I1MDM1Zjg1ODZlOGEyMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCA2IEZlYiAyMDE2IDExOjExOjQxIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTVdIGluaXRpYWxpemUgZnJvbnQgYmFjayB3YXlsYW5kIGJ1ZmZlcnMKK1N1YmplY3Q6IFtQQVRDSCAwNy8xNl0gaW5pdGlhbGl6ZSBmcm9udCBiYWNrIHdheWxhbmQgYnVmZmVycwogCiBvcmlnaW5zIGZyb20gbWV0cm9sb2dpY2FsIHdheWxhbmQgc3VwcG9ydAogCkBAIC0zMCw1ICszMCw1IEBACiAgICAgfQogICNlbmRpZgogLS0gCi0yLjE1LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA4LVJlbW92ZS1SUENfRkxVU0gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA4LVJlbW92ZS1SUENfRkxVU0gucGF0Y2gKaW5kZXggMWU2NjgxMy4uNGJmMDVjMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwOC1SZW1vdmUtUlBDX0ZMVVNILnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDgtUmVtb3ZlLVJQQ19GTFVTSC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZjg5MjlhZGJmOTVhZDNkNDQ0OTFjZjZmYzhhODRhNjg2YjcxMTkzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTliYTY2YzJlYTE3ZjdhNTcxMjRiOWZkNmM5YmRmZjQzMjVmZjVjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDYgRmViIDIwMTYgMTE6MDk6MTggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xNV0gUmVtb3ZlIFJQQ19GTFVTSAorU3ViamVjdDogW1BBVENIIDA4LzE2XSBSZW1vdmUgUlBDX0ZMVVNICiAKIE9yaWdpbnMgZnJvbSBidWlsZHJvb3QKIApAQCAtMjMsNSArMjMsNSBAQAogICAgICAgIH0KICAjZW5kaWYKIC0tIAotMi4xNS4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwOS1maXgtY21ha2UtZGVwZW5kZW5jeS1yYWNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwOS1maXgtY21ha2UtZGVwZW5kZW5jeS1yYWNlLnBhdGNoCmluZGV4IDIxNGQ1ZTIuLmEyYzFkZjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDktZml4LWNtYWtlLWRlcGVuZGVuY3ktcmFjZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA5LWZpeC1jbWFrZS1kZXBlbmRlbmN5LXJhY2UucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGY1M2UwMjhmMzNmMjYxZjg1ODgzYzkxNjg5NzdkZDU0ODZlOWI0N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDI2NGQ4MjM4N2VhMWU2MDdiMmU1Yzg5OWZmNmJkNDY4MDdjN2IxODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCA2IEZlYiAyMDE2IDEzOjEyOjQ3IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTVdIGZpeCBjbWFrZSBkZXBlbmRlbmN5IHJhY2UKK1N1YmplY3Q6IFtQQVRDSCAwOS8xNl0gZml4IGNtYWtlIGRlcGVuZGVuY3kgcmFjZQogCiBGaXhlcyBlcnJvcnMgbGlrZQogCkBAIC03NCw1ICs3NCw1IEBACiAgCXN0cnVjdCB3bF9yZXNvdXJjZSAqcmVzb3VyY2U7CiAgCXN0cnVjdCB3bF9kaXNwbWFueCAqZGlzcG1hbng7CiAtLSAKLTIuMTUuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMTAtRml4LWZvci1mcmFtZXJhdGUtd2l0aC1uZXN0ZWQtY29tcG9zaXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDEwLUZpeC1mb3ItZnJhbWVyYXRlLXdpdGgtbmVzdGVkLWNvbXBvc2l0aW9uLnBhdGNoCmluZGV4IDlmNzc5MjAuLmE2YzlhNTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMTAtRml4LWZvci1mcmFtZXJhdGUtd2l0aC1uZXN0ZWQtY29tcG9zaXRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxMC1GaXgtZm9yLWZyYW1lcmF0ZS13aXRoLW5lc3RlZC1jb21wb3NpdGlvbi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNjU1OWE1N2M2NmM1ZjU1NTcxYTFhYTI5Y2YxNGQ5MTMwYTllZjJjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2M1MWMyZDM3YmZhZGFhYmJiZjIwNTIzN2Q5MzJiNjg1YjA5ZDM0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDI5IE1hciAyMDE2IDIwOjM4OjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMTVdIEZpeCBmb3IgZnJhbWVyYXRlIHdpdGggbmVzdGVkIGNvbXBvc2l0aW9uCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTZdIEZpeCBmb3IgZnJhbWVyYXRlIHdpdGggbmVzdGVkIGNvbXBvc2l0aW9uCiAKIGZyYW1lIHJhdGUgYXBwZWFycyBpcnJlZ3VsYXIgYW5kIGxvd2VyIHRoYW4gZXhwZWN0ZWQgd2hlbiB1c2luZyBuZXN0ZWQgY29tcG9zaXRpb24uCiAKQEAgLTU2LDUgKzU2LDUgQEAKICAjaWZkZWYgQU5EUk9JRAogICAgICAgICAgICAgICAgIENMSUVOVF9VTkxPQ0soKTsKIC0tIAotMi4xNS4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxMS1idWlsZC1zaGFyZWQtbGlicmFyeS1mb3ItdmNob3N0aWYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDExLWJ1aWxkLXNoYXJlZC1saWJyYXJ5LWZvci12Y2hvc3RpZi5wYXRjaAppbmRleCA1ZWU1Y2JkLi41NWE1YmU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDExLWJ1aWxkLXNoYXJlZC1saWJyYXJ5LWZvci12Y2hvc3RpZi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDExLWJ1aWxkLXNoYXJlZC1saWJyYXJ5LWZvci12Y2hvc3RpZi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gM2UzOTZmMGI1MTRmM2FjZjkwYzAyZjVkNTViMzgxNjAyODM2N2E1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZmIzMDAyZjc3YTE3NTYzM2FmMzEwMTljNTEzNzU0ZDJlZjVmM2FjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDIgQXByIDIwMTYgMTA6Mzc6MjQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8xNV0gYnVpbGQgc2hhcmVkIGxpYnJhcnkgZm9yIHZjaG9zdGlmCitTdWJqZWN0OiBbUEFUQ0ggMTEvMTZdIGJ1aWxkIHNoYXJlZCBsaWJyYXJ5IGZvciB2Y2hvc3RpZgogCiBGaXhlcyAjMTQ5CiAKQEAgLTI0LDUgKzI0LDUgQEAKICAjYWRkX2xpYnJhcnkoYnVmbWFuICAgICAgICAgICAgdmNfdmNoaV9idWZtYW4uYyAgICAgICAgICAgICkKICAKIC0tIAotMi4xNS4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxMi1pbXBsZW1lbnQtYnVmZmVyLXdyYXBwaW5nLWludGVyZmFjZS1mb3ItZGlzcG1hbngucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDEyLWltcGxlbWVudC1idWZmZXItd3JhcHBpbmctaW50ZXJmYWNlLWZvci1kaXNwbWFueC5wYXRjaAppbmRleCA0OGFmNTg4Li4yOGE1ZmM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDEyLWltcGxlbWVudC1idWZmZXItd3JhcHBpbmctaW50ZXJmYWNlLWZvci1kaXNwbWFueC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDEyLWltcGxlbWVudC1idWZmZXItd3JhcHBpbmctaW50ZXJmYWNlLWZvci1kaXNwbWFueC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZjViMjI2M2M4ZDY1ZTMwN2NiMDg1NDE0ZTA4MTE4Y2JiZTAwYTk0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZGY4Yjk2MzNhNDUwNjliZGQxYmYyNTZkOTc0NjM2ZWYxMWFhMzljYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDIgQXByIDIwMTYgMTA6NTQ6NTkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8xNV0gaW1wbGVtZW50IGJ1ZmZlciB3cmFwcGluZyBpbnRlcmZhY2UgZm9yIGRpc3BtYW54CitTdWJqZWN0OiBbUEFUQ0ggMTIvMTZdIGltcGxlbWVudCBidWZmZXIgd3JhcHBpbmcgaW50ZXJmYWNlIGZvciBkaXNwbWFueAogCiBDb3VydGVzeTogWmFuIERvYmVyc2VrCiAKQEAgLTg4LDUgKzg4LDUgQEAKICAKICA8L3Byb3RvY29sPgogLS0gCi0yLjE1LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDEzLUltcGxlbWVudC10cmlwbGUtYnVmZmVyaW5nLWZvci13YXlsYW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxMy1JbXBsZW1lbnQtdHJpcGxlLWJ1ZmZlcmluZy1mb3Itd2F5bGFuZC5wYXRjaAppbmRleCBkM2E5ODQwLi5lYmZmMzE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDEzLUltcGxlbWVudC10cmlwbGUtYnVmZmVyaW5nLWZvci13YXlsYW5kLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMTMtSW1wbGVtZW50LXRyaXBsZS1idWZmZXJpbmctZm9yLXdheWxhbmQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDEwYmE1NTQ4OTAwMmMyY2NkZjk2ZDIyMTMwMWVjMDU5YzQ1NzQ4MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDJlMGUzMzFkYTg1NTZmZWNkODQxMzQ5Y2ZhZTI5NGJhZjBmMTQ0ODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKZWZmIFdhbm5hbWFrZXIgPGplZmZfd2FubmFtYWtlckBjYWJsZS5jb21jYXN0LmNvbT4KIERhdGU6IFRodSwgMTkgSmFuIDIwMTcgMTg6NTY6MDcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8xNV0gSW1wbGVtZW50IHRyaXBsZSBidWZmZXJpbmcgZm9yIHdheWxhbmQKK1N1YmplY3Q6IFtQQVRDSCAxMy8xNl0gSW1wbGVtZW50IHRyaXBsZSBidWZmZXJpbmcgZm9yIHdheWxhbmQKIAogQ2hhbmdlIGZyb20gZG91YmxlIHRvIHRyaXBsZSBidWZmZXJpbmcgZm9yIHdheWxhbmQuCiBUaGlzIGVuYWJsZXMgaGlnaGVyIGZyYW1lIHJhdGVzIHdpdGhvdXQgdGVhcmluZyBhcnRpZmFjdHMKQEAgLTg2LDUgKzg2LDUgQEAKICAgICAgICBiYWNrX3dsX2J1ZmZlcgogIAogLS0gCi0yLjE1LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDE0LUdMRVMyLWdsMmV4dC5oLURlZmluZS1HTF9SOF9FWFQtYW5kLUdMX1JHOF9FWFQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDE0LUdMRVMyLWdsMmV4dC5oLURlZmluZS1HTF9SOF9FWFQtYW5kLUdMX1JHOF9FWFQucGF0Y2gKaW5kZXggYjU5NjA1Ni4uMDI1YjZiYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxNC1HTEVTMi1nbDJleHQuaC1EZWZpbmUtR0xfUjhfRVhULWFuZC1HTF9SRzhfRVhULnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMTQtR0xFUzItZ2wyZXh0LmgtRGVmaW5lLUdMX1I4X0VYVC1hbmQtR0xfUkc4X0VYVC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZDc1MGM3MzhiNWMyM2JiYTI0NTMxY2I3MTMyOTJlNGFiM2YyZWM1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGQ5Mjk5ZDIxOWEyYTRmNzZmODI3ODk3MzU4NGUxYTlmNzExNmM3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDEwIE1heSAyMDE3IDA2OjM5OjM0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMTVdIEdMRVMyL2dsMmV4dC5oOiBEZWZpbmUgR0xfUjhfRVhUIGFuZCBHTF9SRzhfRVhUCitTdWJqZWN0OiBbUEFUQ0ggMTQvMTZdIEdMRVMyL2dsMmV4dC5oOiBEZWZpbmUgR0xfUjhfRVhUIGFuZCBHTF9SRzhfRVhUCiAKIHdlc3RvbiBjb2RlIHVzZXMgdGhlc2UgZGVmaW5lcwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCkBAIC0yNiw1ICsyNiw1IEBACiAgI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWCiAgI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4ODM2OAogLS0gCi0yLjE1LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDE1LUVHTC1nbHBsYXRmb3JtLmgtZGVmaW5lLUVHTF9DQVNULnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxNS1FR0wtZ2xwbGF0Zm9ybS5oLWRlZmluZS1FR0xfQ0FTVC5wYXRjaAppbmRleCBmMTA3NDBiLi42MDVkMGMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDE1LUVHTC1nbHBsYXRmb3JtLmgtZGVmaW5lLUVHTF9DQVNULnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMTUtRUdMLWdscGxhdGZvcm0uaC1kZWZpbmUtRUdMX0NBU1QucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDgyNzkwN2YyMjIzZGY5MzkxOGU2ODAxMDFhMWFjNjIyOGJhMGYwN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGEyMTgyZTU0MzdhNjY2NGNkYjBmMzMzMGY2Y2JlZTg3M2I2Zjk3NWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbmRyZWEgR2FsYnVzZXJhIDxnaXplcm9AZ21haWwuY29tPgogRGF0ZTogRnJpLCAxNCBKdWwgMjAxNyAwOTo1Mjo1NCArMDIwMAotU3ViamVjdDogW1BBVENIIDE1LzE1XSBFR0wvZ2xwbGF0Zm9ybS5oOiBkZWZpbmUgRUdMX0NBU1QKK1N1YmplY3Q6IFtQQVRDSCAxNS8xNl0gRUdML2dscGxhdGZvcm0uaDogZGVmaW5lIEVHTF9DQVNUCiAKIEMrKyAvIEMgdHlwZWNhc3QgbWFjcm9zIGZvciBzcGVjaWFsIEVHTCBoYW5kbGUgdmFsdWVzOiB1c2VkIGJ5IGxpYmVwb3h5IGNvZGUKIFRoZSBkZWZpbml0aW9uIGNvbWVzIGZyb20gdGhlIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGlzIGhlYWRlciBpbiBtZXNhLgpAQCAtMjgsNSArMjgsNSBAQAogKwogICNlbmRpZiAvKiBfX2VnbHBsYXRmb3JtX2ggKi8KIC0tIAotMi4xNS4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxNi1BbGxvdy1tdWx0aXBsZS13YXlsYW5kLWNvbXBvc2l0b3Itc3RhdGUtZGF0YS1wZXItcHJvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxNi1BbGxvdy1tdWx0aXBsZS13YXlsYW5kLWNvbXBvc2l0b3Itc3RhdGUtZGF0YS1wZXItcHJvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMGVjODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDE2LUFsbG93LW11bHRpcGxlLXdheWxhbmQtY29tcG9zaXRvci1zdGF0ZS1kYXRhLXBlci1wcm8ucGF0Y2gKQEAgLTAsMCArMSwxNDUgQEAKK0Zyb20gNmI0YzRkNDY5ZDQzNWJmY2ZiNDY0MzU2YjZjY2M5NDIxYzZiOGZkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplZmYgV2FubmFtYWtlciA8amVmZl93YW5uYW1ha2VyQGNhYmxlLmNvbWNhc3QuY29tPgorRGF0ZTogU2F0LCAyNyBKYW4gMjAxOCAxMjoyODozMSAtMDUwMAorU3ViamVjdDogW1BBVENIIDE2LzE2XSBBbGxvdyBtdWx0aXBsZSB3YXlsYW5kIGNvbXBvc2l0b3Igc3RhdGUgZGF0YSBwZXIKKyBwcm9jZXNzCisKK1doZW4gZWdsQmluZFdheWxhbmREaXNwbGF5V0wgaXMgY2FsbGVkIHN0b3JlIHRoZSB3bF9nbG9iYWwKK2NyZWF0ZWQgaW4gYSBsaXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgd2F5bGFuZCBkaXNwbGF5LgorVGhpcyBhbGxvd3MgbXVsdGlwbGUgd2F5bGFuZCBjb21wb3NpdG9yIGluc3RhbmNlcyB0byBiZQorY3JlYXRlZCBhbmQgdXNlZCBwZXIgcHJvY2Vzcy4gVGhpcyBzY2VuYXJpbyBpcyBjb21tb24gZm9yCithcHBsaWNhdGlvbnMgaW50ZWdyYXRpbmcgZXh0ZXJubCBwcm9jZXNzIFVJIGVsZW1lbnRzCit2aWEgZW1iZWRkZWQgY29tcG9zaXRpb24gZS5nLiB3ZXN0ZXJvcworCitTaWduZWQtb2ZmLWJ5OiBKZWZmIFdhbm5hbWFrZXIgPGplZmZfd2FubmFtYWtlckBjYWJsZS5jb21jYXN0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBpbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuYyB8ICAyICstCisgaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmggfCAxMSArKysrKysrLQorIGludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfd2F5bGFuZC5jICAgIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmMKK2luZGV4IGQ3ZTc5OGUuLjYwYmRiNjMgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuYworKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmMKK0BAIC0xNDcsNyArMTQ3LDcgQEAgYm9vbCBjbGllbnRfcHJvY2Vzc19zdGF0ZV9pbml0KENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3MpCisgeworICAgIGlmICghcHJvY2Vzcy0+aW5pdGVkKSB7CisgI2lmZGVmIEJVSUxEX1dBWUxBTkQKKy0gICAgICBwcm9jZXNzLT53bF9nbG9iYWwgPSBOVUxMOworKyAgICAgIHByb2Nlc3MtPndsU3RhdGVNYXAgPSBOVUxMOworICNlbmRpZgorIAorICAgICAgIGlmICgha2hybl9wb2ludGVyX21hcF9pbml0KCZwcm9jZXNzLT5jb250ZXh0cywgNjQpKQorZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5oIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmgKK2luZGV4IDYxNWY3YjQuLjRmYTg2ZjcgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuaAorKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmgKK0BAIC0xNzAsNiArMTcwLDE1IEBAIHN0YXRpYyBJTkxJTkUgQ0xJRU5UX1RIUkVBRF9TVEFURV9UICpDTElFTlRfR0VUX0NIRUNLX1RIUkVBRF9TVEFURSh2b2lkKQorICAgIHJldHVybiAoQ0xJRU5UX1RIUkVBRF9TVEFURV9UICopcGxhdGZvcm1fdGxzX2dldF9jaGVjayhjbGllbnRfdGxzKTsKKyB9CisgCisrI2lmZGVmIEJVSUxEX1dBWUxBTkQKKyt0eXBlZGVmIHN0cnVjdCBXQVlMQU5EX1NUQVRFCisreworKyAgIHN0cnVjdCBXQVlMQU5EX1NUQVRFICpuZXh0OworKyAgIHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5OworKyAgIHN0cnVjdCB3bF9nbG9iYWwgKndsX2dsb2JhbDsKKyt9IFdBWUxBTkRfU1RBVEVfVDsKKysjZW5kaWYKKysKKyAvKgorICAgIHBlci1wcm9jZXNzIHN0YXRlCisgCitAQCAtMzE4LDcgKzMyNyw3IEBAIHN0cnVjdCBDTElFTlRfUFJPQ0VTU19TVEFURSB7CisgICAgc3RydWN0IHdsX2V2ZW50X3F1ZXVlICp3bF9xdWV1ZTsKKyAKKyAgICAvKiBDb21wb3NpdG9yLXNpZGUgV2F5bGFuZCBzdGF0ZSAqLworLSAgIHN0cnVjdCB3bF9nbG9iYWwgKndsX2dsb2JhbDsKKysgICBXQVlMQU5EX1NUQVRFX1QgKndsU3RhdGVNYXA7CisgI2VuZGlmCisgfTsKKyAKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9leHQvZWdsX3dheWxhbmQuYyBiL2ludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfd2F5bGFuZC5jCitpbmRleCA5ZWY4OWNkLi5hYmQ1YWIzIDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfd2F5bGFuZC5jCitAQCAtMjA4LDE3ICsyMDgsMzggQEAgZWdsQmluZFdheWxhbmREaXNwbGF5V0woRUdMRGlzcGxheSBkcHksIHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5KQorIHsKKyAgICBDTElFTlRfVEhSRUFEX1NUQVRFX1QgKnRocmVhZDsKKyAgICBDTElFTlRfUFJPQ0VTU19TVEFURV9UICpwcm9jZXNzOworKyAgIFdBWUxBTkRfU1RBVEVfVCAqc3RhdGVJdGVyOworKyAgIFdBWUxBTkRfU1RBVEVfVCAqc3RhdGVOZXc7CisrICAgc3RydWN0IHdsX2dsb2JhbCAqd2xfZ2xvYmFsOworIAorICAgIGlmICghQ0xJRU5UX0xPQ0tfQU5EX0dFVF9TVEFURVMoZHB5LCAmdGhyZWFkLCAmcHJvY2VzcykpCisgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAKKy0gICBpZiAocHJvY2Vzcy0+d2xfZ2xvYmFsICE9IE5VTEwpCisrICAgc3RhdGVJdGVyPSBwcm9jZXNzLT53bFN0YXRlTWFwOworKyAgIHdoaWxlKCBzdGF0ZUl0ZXIgKQorKyAgIHsKKysgICAgICBpZiAoIHN0YXRlSXRlci0+ZGlzcGxheSA9PSBkaXNwbGF5ICkKKysgICAgICAgICBnb3RvIGVycm9yOworKyAgICAgIHN0YXRlSXRlcj0gc3RhdGVJdGVyLT5uZXh0OworKyAgIH0KKysKKysgICB3bF9nbG9iYWwgPSB3bF9nbG9iYWxfY3JlYXRlKGRpc3BsYXksICZ3bF9kaXNwbWFueF9pbnRlcmZhY2UsIDEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBiaW5kX2Rpc3BtYW54KTsKKysgICBpZiAod2xfZ2xvYmFsID09IE5VTEwpCisgICAgICAgZ290byBlcnJvcjsKKyAKKy0gICBwcm9jZXNzLT53bF9nbG9iYWwgPSB3bF9nbG9iYWxfY3JlYXRlKGRpc3BsYXksICZ3bF9kaXNwbWFueF9pbnRlcmZhY2UsIDEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBiaW5kX2Rpc3BtYW54KTsKKy0gICBpZiAocHJvY2Vzcy0+d2xfZ2xvYmFsID09IE5VTEwpCisrICAgc3RhdGVOZXc9IChXQVlMQU5EX1NUQVRFX1QqKWNhbGxvYyggMSwgc2l6ZW9mKFdBWUxBTkRfU1RBVEVfVCkpOworKyAgIGlmIChzdGF0ZU5ldyA9PSBOVUxMICkKKysgICB7CisrICAgICAgd2xfZ2xvYmFsX2Rlc3Ryb3kod2xfZ2xvYmFsKTsKKyAgICAgICBnb3RvIGVycm9yOworKyAgIH0KKysKKysgICBzdGF0ZU5ldy0+bmV4dD0gcHJvY2Vzcy0+d2xTdGF0ZU1hcDsKKysgICBzdGF0ZU5ldy0+ZGlzcGxheT0gZGlzcGxheTsKKysgICBzdGF0ZU5ldy0+d2xfZ2xvYmFsPSB3bF9nbG9iYWw7CisrICAgcHJvY2Vzcy0+d2xTdGF0ZU1hcD0gc3RhdGVOZXc7CisrICAgQ0xJRU5UX1VOTE9DSygpOworIAorICAgIHJldHVybiBFR0xfVFJVRTsKKyAKK0BAIC0yMzIsMTIgKzI1MywyOSBAQCBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMKEVHTERpc3BsYXkgZHB5LCBzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSkKKyB7CisgICAgQ0xJRU5UX1RIUkVBRF9TVEFURV9UICp0aHJlYWQ7CisgICAgQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2VzczsKKysgICBXQVlMQU5EX1NUQVRFX1QgKnN0YXRlSXRlcjsKKysgICBXQVlMQU5EX1NUQVRFX1QgKnN0YXRlUHJldjsKKyAKKyAgICBpZiAoIUNMSUVOVF9MT0NLX0FORF9HRVRfU1RBVEVTKGRweSwgJnRocmVhZCwgJnByb2Nlc3MpKQorICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgCistICAgd2xfZ2xvYmFsX2Rlc3Ryb3kocHJvY2Vzcy0+d2xfZ2xvYmFsKTsKKy0gICBwcm9jZXNzLT53bF9nbG9iYWwgPSBOVUxMOworKyAgIHN0YXRlUHJldj0gTlVMTDsKKysgICBzdGF0ZUl0ZXI9IHByb2Nlc3MtPndsU3RhdGVNYXA7CisrICAgd2hpbGUoIHN0YXRlSXRlciApCisrICAgeworKyAgICAgIGlmICggc3RhdGVJdGVyLT5kaXNwbGF5ID09IGRpc3BsYXkgKQorKyAgICAgIHsKKysgICAgICAgICB3bF9nbG9iYWxfZGVzdHJveShzdGF0ZUl0ZXItPndsX2dsb2JhbCk7CisrICAgICAgICAgaWYgKCBzdGF0ZVByZXYgKQorKyAgICAgICAgICAgIHN0YXRlUHJldi0+bmV4dD0gc3RhdGVJdGVyLT5uZXh0OworKyAgICAgICAgIGVsc2UKKysgICAgICAgICAgICBwcm9jZXNzLT53bFN0YXRlTWFwPSBzdGF0ZUl0ZXItPm5leHQ7CisrICAgICAgICAgZnJlZSggc3RhdGVJdGVyICk7CisrICAgICAgICAgYnJlYWs7CisrICAgICAgfQorKyAgICAgIHN0YXRlUHJldj0gc3RhdGVJdGVyOworKyAgICAgIHN0YXRlSXRlcj0gc3RhdGVJdGVyLT5uZXh0OworKyAgIH0KKyAKKyAgICBDTElFTlRfVU5MT0NLKCk7CisgCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZF9naXQuYmIKaW5kZXggZDM4YjAyZC4uN2YyZGNhNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kX2dpdC5iYgpAQCAtNSw4ICs1LDYgQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9MDQ0OGQ2NDg4ZWY4Y2MzODA2MzJiMTU2OWVlNmQxOTYiCiAKLVBSID0gInI1IgotCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsZXMyIFwKICAgICAgICAgICAgIHZpcnR1YWwvZWdsIgogCkBAIC0xNiw3ICsxNCwxMSBAQAogCiBTUkNCUkFOQ0ggPSAibWFzdGVyIgogU1JDRk9SSyA9ICJyYXNwYmVycnlwaSIKLVNSQ1JFViA9ICJiYzNjNTJhNTEzMTUzOTlhOWYzMWVkMjQwNDllYjRiYzgxZmQxYzYwIgorU1JDUkVWID0gIjExMzg5NzcyYzc5Njg1NDQyZTBhYjhhYTliZThhZDBlMzI3MDNmNjgiCisKKyMgVXNlIHRoZSBkYXRlIG9mIHRoZSBhYm92ZSBjb21taXQgYXMgdGhlIHBhY2thZ2UgdmVyc2lvbi4gVXBkYXRlIHRoaXMgd2hlbgorIyBTUkNSRVYgaXMgY2hhbmdlZC4KK1BWID0gIjIwMTgwMjE5IgogCiBTUkNfVVJJID0gIlwKICAgICBnaXQ6Ly9naXRodWIuY29tLyR7U1JDRk9SS30vdXNlcmxhbmQuZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IFwKQEAgLTM1LDYgKzM3LDcgQEAKICAgICBmaWxlOi8vMDAxMy1JbXBsZW1lbnQtdHJpcGxlLWJ1ZmZlcmluZy1mb3Itd2F5bGFuZC5wYXRjaCBcCiAgICAgZmlsZTovLzAwMTQtR0xFUzItZ2wyZXh0LmgtRGVmaW5lLUdMX1I4X0VYVC1hbmQtR0xfUkc4X0VYVC5wYXRjaCBcCiAgICAgZmlsZTovLzAwMTUtRUdMLWdscGxhdGZvcm0uaC1kZWZpbmUtRUdMX0NBU1QucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDE2LUFsbG93LW11bHRpcGxlLXdheWxhbmQtY29tcG9zaXRvci1zdGF0ZS1kYXRhLXBlci1wcm8ucGF0Y2ggXAogIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdmMtZ3JhcGhpY3MvdmMtZ3JhcGhpY3MuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdmMtZ3JhcGhpY3MvdmMtZ3JhcGhpY3MuaW5jCmluZGV4IDY2OGM1Y2UuLmNkMGQ1N2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3ZjLWdyYXBoaWNzL3ZjLWdyYXBoaWNzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy92Yy1ncmFwaGljcy92Yy1ncmFwaGljcy5pbmMKQEAgLTYsNiArNiw4IEBACiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvZWdsIgogQ09NUEFUSUJMRV9NQUNISU5FID0gIl5ycGkkIgogCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorCiBpbmNsdWRlIHJlY2lwZXMtYnNwL2NvbW1vbi9maXJtd2FyZS5pbmMKIAogU1JDX1VSSSArPSAiIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZAppbmRleCA3OTAyZjIwLi45MTllOTVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18wLjEuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kCkBAIC0zLDIwICszLDE5IEBACiBTUkNfVVJJX2FwcGVuZF9ycGkgPSAiIFwKICAgICBmaWxlOi8veG9yZy5jb25mLmQvOTgtcGl0ZnQuY29uZiBcCiAgICAgZmlsZTovL3hvcmcuY29uZi5kLzk5LWNhbGlicmF0aW9uLmNvbmYgXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsX3Jhc3BiZXJyeXBpMy02NCA9ICIgXAogICAgIGZpbGU6Ly94b3JnLmNvbmYuZC8xMC1ub2dsYW1vci5jb25mIFwKICIKIGRvX2luc3RhbGxfYXBwZW5kX3JwaSAoKSB7CiAgICAgUElURlQ9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInBpdGZ0IiwgIjEiLCAiMCIsIGQpfSIKKyAgICBWQzQ9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInZjNGdyYXBoaWNzIiwgIjEiLCAiMCIsIGQpfSIKICAgICBpZiBbICIke1BJVEZUfSIgPSAiMSIgXTsgdGhlbgogICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mLmQvCiAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3hvcmcuY29uZi5kLzk4LXBpdGZ0LmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L1gxMS94b3JnLmNvbmYuZC8KICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0veG9yZy5jb25mLmQvOTktY2FsaWJyYXRpb24uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vWDExL3hvcmcuY29uZi5kLwogICAgIGZpCisgICAgaWYgWyAiJHtWQzR9IiA9ICIxIiBdOyB0aGVuCisgICAgICAgIGluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS94b3JnLmNvbmYuZC8xMC1ub2dsYW1vci5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mLmQvMTAtbm9nbGFtb3IuY29uZgorICAgIGZpCiB9Ci1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2xfcmFzcGJlcnJ5cGkzLTY0ICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mLmQvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0veG9yZy5jb25mLmQvMTAtbm9nbGFtb3IuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vWDExL3hvcmcuY29uZi5kLwotfQorCiBGSUxFU18ke1BOfV9ycGkgKz0gIiR7c3lzY29uZmRpcn0vWDExL3hvcmcuY29uZiAke3N5c2NvbmZkaXJ9L1gxMS94b3JnLmNvbmYuZC8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2ZpbGVzL2JyY21mbWFjNDM0MzAtc2Rpby5iaW4gYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvZmlsZXMvYnJjbWZtYWM0MzQzMC1zZGlvLmJpbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI5NTVkYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvZmlsZXMvYnJjbWZtYWM0MzQzMC1zZGlvLmJpbgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9maWxlcy9icmNtZm1hYzQzNDMwLXNkaW8udHh0IGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2ZpbGVzL2JyY21mbWFjNDM0MzAtc2Rpby50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkOTE3YTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2ZpbGVzL2JyY21mbWFjNDM0MzAtc2Rpby50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0jIE5WUkFNIGZpbGUgZm9yIEJDTTk0MzQzMFdMU0VMRwotIyAyLjQgR0h6LCAyMCBNSHogQlcgbW9kZQotCi0jIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyIHZhbHVlcyBhcmUganVzdCBwbGFjZWhvbGRlcnMsIG5lZWQgdG8gYmUgdXBkYXRlZC4KLW1hbmZpZD0weDJkMAotcHJvZGlkPTB4MDcyNgotdmVuZGlkPTB4MTRlNAotZGV2aWQ9MHg0M2UyCi1ib2FyZHR5cGU9MHgwNzI2Ci1ib2FyZHJldj0weDEyMDIKLWJvYXJkbnVtPTIyCi1tYWNhZGRyPTAwOjkwOjRjOmM1OjEyOjM4Ci1zcm9tcmV2PTExCi1ib2FyZGZsYWdzPTB4MDA0MDQyMDEKLWJvYXJkZmxhZ3MzPTB4MDgwMDAwMDAKLXh0YWxmcmVxPTM3NDAwCi0jeHRhbGZyZXE9MTkyMDAKLW5vY3JjPTEKLWFnMD0yNTUKLWFhMmc9MQotY2NvZGU9QUxMCi0KLXBhMGl0c3NpdD0weDIwCi1leHRwYWdhaW4yZz0wCi0KLSNQQSBwYXJhbWV0ZXJzIGZvciAyLjRHSHosIG1lYXN1cmVkIGF0IENISVAgT1VUUFVUCi1wYTJnYTA9LTE2OCw3MTYxLC04MjAKLUF2Vm1pZF9jMD0weDAsMHhjOAotY2NrcHdyb2Zmc2V0MD01Ci0KLSMgUFBSIHBhcmFtcwotbWF4cDJnYTA9ODQKLXR4cHdyYmNrb2Y9NgotY2NrYncyMDJncG89MAotbGVnb2ZkbWJ3MjAyZ3BvPTB4NjYxMTExMTEKLW1jc2J3MjAyZ3BvPTB4Nzc3MTExMTEKLXByb3BidzIwMmdwbz0weGRkCi0KLSMgT0ZETSBJSVIgOgotb2ZkbWRpZ2ZpbHR0eXBlPTE4Ci1vZmRtZGlnZmlsdHR5cGViZT0xOAotIyBQQVBEIG1vZGU6Ci1wYXBkbW9kZT0xCi1wYXBkdmFsaWR0ZXN0PTEKLXBhY2FsaWR4Mmc9MzIKLXBhcGRlcHNvZmZzZXQ9LTM2Ci1wYXBkZW5kaWR4PTYxCi0KLWlsMG1hY2FkZHI9MDA6OTA6NGM6YzU6MTI6MzgKLXdsMGlkPTB4NDMxYgotCi1kZWFkbWFuX3RvPTB4ZmZmZmZmZmYKLSMgbXV4ZW5hYjogMHgxIGZvciBVQVJUIGVuYWJsZSwgMHgyIGZvciBHUElPcywgMHg4IGZvciBKVEFHCi1tdXhlbmFiPTB4MQotIyBDTERPIFBXTSB2b2x0YWdlIHNldHRpbmdzIC0gMHg0IC0gMS4xIHZvbHQKLSNjbGRvX3B3bT0weDQKLQotI1ZDTyBmcmVxIDMyNi40TUh6Ci1zcHVyY29uZmlnPTB4MyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV8lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXyUuYmJhcHBlbmQKaW5kZXggNTY1YjczNS4uMzRkMmI2NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXyUuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXyUuYmJhcHBlbmQKQEAgLTEsMjYgKzEsNzcgQEAKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKyMgQXVnbWVudHMgdXBzdHJlYW0gbGludXgtZmlybXdhcmUgd2l0aCBhZGRpdGlvbmFsIGFuZCB1cGRhdGVkIGltYWdlcworIyBmcm9tIFJhc3BiaWFuOgorIyBodHRwczovL2dpdGh1Yi5jb20vUlBpLURpc3Ryby9maXJtd2FyZS1ub25mcmVlCisjIGh0dHBzOi8vZ2l0aHViLmNvbS9SUGktRGlzdHJvL2JsdWV6LWZpcm13YXJlCiAKLVNSQ19VUkkgKz0gIiBcCi0JZmlsZTovL2JyY21mbWFjNDM0MzAtc2Rpby5iaW4gXAotCWZpbGU6Ly9icmNtZm1hYzQzNDMwLXNkaW8udHh0IFwKLQkiCitMSUNFTlNFX2FwcGVuZF9ycGkgPSAiXAorICAgICYgRmlybXdhcmUtY3lwcmVzcyBcCisiCiAKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgT3ZlcndyaXRlIHY3LjQ1LjQxLjI2IGJ5IHRoZSBvbmUgd2UgY3VycmVudGx5IHByb3ZpZGUgaW4gdGhpcyBsYXllcgotCSMgKHY3LjQ1LjQxLjQ2KQotCWxvY2FsIF9maXJtd2FyZT0iYnJjbWZtYWM0MzQzMC1zZGlvLmJpbiIKLQlsb2NhbCBfb2xkbWQ1PTkyNTg5ODY0ODhlY2E5ZmU1MzQzYjBkNmZlMDQwZjhlCi0JaWYgWyAiJChtZDVzdW0gJHtEfS9saWIvZmlybXdhcmUvYnJjbS8kX2Zpcm13YXJlIHwgYXdrICd7cHJpbnQgJDF9JykiICE9ICIkX29sZG1kNSIgXTsgdGhlbgotCQlfZmlybXdhcmU9IiIKLQkJYmJ3YXJuICJsaW51eC1maXJtd2FyZSBzdG9wcGVkIHByb3ZpZGluZyBicmNtZm1hYzQzNDMwIHY3LjQ1LjQxLjI2LiIKLQllbHNlCi0JCV9maXJtd2FyZT0iJHtXT1JLRElSfS8kX2Zpcm13YXJlIgotCWZpCitMSUNfRklMRVNfQ0hLU1VNX2FwcGVuZF9ycGkgPSAiXAorICAgIGZpbGU6Ly9MSUNFTkNFLmN5cHJlc3M7bWQ1PWNiYzVmNjY1ZDA0Zjc0MWYxZTAwNmQyMDk2MjM2YmE3IFwKKyIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jeXByZXNzXSA9ICJMSUNFTkNFLmN5cHJlc3MiCiAKLQlta2RpciAtcCAke0R9L2xpYi9maXJtd2FyZS9icmNtCi0JaW5zdGFsbCAtbSAwNjQ0ICRfZmlybXdhcmUgJHtXT1JLRElSfS9icmNtZm1hYzQzNDMwLXNkaW8udHh0ICR7RH0vbGliL2Zpcm13YXJlL2JyY20KK1NSQ19VUklfYXBwZW5kX3JwaSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vUlBpLURpc3Ryby9maXJtd2FyZS1ub25mcmVlO2Rlc3RzdWZmaXg9cmFzcGJpYW4tbmY7bmFtZT1yYXNwYmlhbi1uZiBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9SUGktRGlzdHJvL2JsdWV6LWZpcm13YXJlO2Rlc3RzdWZmaXg9cmFzcGJpYW4tYmx1ZXo7bmFtZT1yYXNwYmlhbi1ibHVleiBcCisiCisKK1NSQ1JFVl9yYXNwYmlhbi1uZiA9ICI4NmU4OGZiZjAzNDVkYTQ5NTU1ZDBlYzM0YzgwYjRmYmFlN2QwY2QzIgorU1JDUkVWX3Jhc3BiaWFuLWJsdWV6ID0gImUyOGNkN2VlODYxNWRlMzNhYTdlYzJiNDFkNTU2YWY2MWE0YTI3MDciCitTUkNSRVZfRk9STUFUX3JwaSA9ICJkZWZhdWx0K3Jhc3BiaWFuLW5mK3Jhc3BiaWFuLWJsdWV6IgorCitkb19pbnN0YWxsX2FwcGVuZF9ycGkoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtLworCisgICAgIyBSZXBsYWNlIG91dGRhdGVkIGxpbnV4LWZpcm13YXJlIGZpbGVzIHdpdGggdXBkYXRlZCBvbmVzIGZyb20KKyAgICAjIHJhc3BiaWFuIGZpcm13YXJlLW5vbmZyZWUuIFJhc3BiaWFuIGFkZHMgYmxvYnMgYW5kIG52cmFtCisgICAgIyBkZWZpbml0aW9ucyB0aGF0IGFyZSBhbHNvIG5lY2Vzc2FyeSBzbyBjb3B5IHRob3NlIHRvby4KKyAgICBmb3IgZncgaW4gYnJjbWZtYWM0MzQzMC1zZGlvIGJyY21mbWFjNDM0NTUtc2RpbyA7IGRvCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Jhc3BiaWFuLW5mL2JyY20vJHtmd30uKiAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtLworICAgIGRvbmUKKworICAgICMgQWRkIG1pc3NpbmcgQ3lwcmVzcyBCbHVldG9vdGggZmlsZXMgZnJvbSByYXNwYmlhbiBibHVlei1maXJtd2FyZQorICAgIGZvciBmdyBpbiBCQ000MzQzMEExLmhjZCBCQ000MzQ1QzAuaGNkIDsgZG8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmFzcGJpYW4tYmx1ZXovYnJvYWRjb20vJHtmd30gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS8KKyAgICBkb25lCiB9CiAKLUZJTEVTXyR7UE59LWJjbTQzNDMwICs9ICIgXAotCS9saWIvZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNDMwLXNkaW8udHh0IFwKKyMgTkI6IE11c3QgcHJlcGVuZCwgZWxzZSB0aGVzZSBiZWNvbWUgZW1wdHkgYW5kIHRoZWlyIGNvbnRlbnQgaXMgbGVmdCBpbgorIyB0aGUgcm9sbC11cCBwYWNrYWdlIHdoaWNoIHByZWNlZGVzIHRoZW0uCitQQUNLQUdFU19wcmVwZW5kX3JwaSA9ICJcCisgICAgJHtQTn0tYmNtNDM0NTUgXAorICAgICR7UE59LWN5cHJlc3MtbGljZW5zZSBcCisgICAgJHtQTn0tYmNtNDM0MzBhMS1oY2QgXAorICAgICR7UE59LWJjbTQzNDVjMC1oY2QgXAogIgorCisjIEZvciBhZGRpdGlvbmFsIEJyb2FkY29tCitMSUNFTlNFXyR7UE59LWJjbTQzNDU1ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCisKK0ZJTEVTXyR7UE59LWJjbTQzNDMwX2FwcGVuZF9ycGkgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0MzAtc2Rpby50eHQgXAorIgorRklMRVNfJHtQTn0tYmNtNDM0NTUgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0NTUtc2Rpby4qIFwKKyIKKworUkRFUEVORFNfJHtQTn0tYmNtNDM0NTUgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCisKKyMgRm9yIGFkZGl0aW9uYWwgQ3lwcmVzcworRklMRVNfJHtQTn0tY3lwcmVzcy1saWNlbnNlID0gIlwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmN5cHJlc3MgXAorIgorCitMSUNFTlNFXyR7UE59LWJjbTQzNDMwYTEtaGNkID0gIkZpcm13YXJlLWN5cHJlc3MiCitMSUNFTlNFXyR7UE59LWJjbTQzNDVjMC1oY2QgPSAiRmlybXdhcmUtY3lwcmVzcyIKKworRklMRVNfJHtQTn0tYmNtNDM0MzBhMS1oY2QgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL0JDTTQzNDMwQTEuaGNkIFwKKyIKK0ZJTEVTXyR7UE59LWJjbTQzNDVjMC1oY2QgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL0JDTTQzNDVDMC5oY2QgXAorIgorCitSREVQRU5EU18ke1BOfS1iY200MzQzMGExLWhjZCArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYmNtNDM0NWMwLWhjZCArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLzAwMDEtbWVudWNvbmZpZy1jaGVjay1seGRpYWdsb2cuc2gtQWxsb3ctc3BlY2lmaWNhdGlvbi1vZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy8wMDAxLW1lbnVjb25maWctY2hlY2stbHhkaWFnbG9nLnNoLUFsbG93LXNwZWNpZmljYXRpb24tb2YucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTllOTIxMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy8wMDAxLW1lbnVjb25maWctY2hlY2stbHhkaWFnbG9nLnNoLUFsbG93LXNwZWNpZmljYXRpb24tb2YucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSBlNmViYzhlNjU0YmJhNTNmMjhhZjUyMjlhMTA2OWZjNzRmYTU4YjdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjUgU2VwIDIwMTQgMTE6MjY6NDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVudWNvbmZpZyxjaGVjay1seGRpYWdsb2cuc2g6IEFsbG93IHNwZWNpZmljYXRpb24gb2YgbmN1cnNlcworIGxvY2F0aW9uCisKK0luIHNvbWUgY3Jvc3MgYnVpbGQgZW52aXJvbm1lbnRzIHN1Y2ggYXMgdGhlIFlvY3RvIFByb2plY3QgYnVpbGQKK2Vudmlyb25tZW50IGl0IHByb3ZpZGVzIGFuIG5jdXJzZXMgbGlicmFyeSB0aGF0IGlzIGNvbXBpbGVkCitkaWZmZXJlbnRseSB0aGFuIHRoZSBob3N0J3MgdmVyc2lvbi4gIFRoaXMgY2F1c2VzIGRpc3BsYXkgY29ycnVwdGlvbgorcHJvYmxlbXMgd2hlbiB0aGUgaG9zdCdzIGN1cnNlcyBpbmNsdWRlcyBhcmUgdXNlZCBpbnN0ZWFkIG9mIHRoZQoraW5jbHVkZXMgZnJvbSB0aGUgcHJvdmlkZWQgY29tcGlsZXIgYXJlIG92ZXJyaWRkZW4uICBUaGVyZSBpcyBhIHNlY29uZAorY2FzZSB3aGVyZSB0aGVyZSBpcyBubyBjdXJzZXMgbGlicmFyaWVzIGF0IGFsbCBvbiB0aGUgaG9zdCBzeXN0ZW0gYW5kCittZW51Y29uZmlnIHdpbGwganVzdCBmYWlsIGVudGlyZWx5LgorCitUaGUgc29sdXRpb24gaXMgc2ltcGx5IHRvIGFsbG93IGFuIG92ZXJyaWRlIHZhcmlhYmxlIGluCitjaGVjay1seGRpYWxvZy5zaCBmb3IgZW52aXJvbm1lbnRzIHN1Y2ggYXMgdGhlIFlvY3RvIFByb2plY3QuICBBZGRpbmcKK2EgQ1JPU1NfQ1VSU0VTX0xJQiBhbmQgQ1JPU1NfQ1VSU0VTX0lOQyBzb2x2ZXMgdGhlIGlzc3VlIGFuZCBhbGxvd2luZworY29tcGlsaW5nIGFuZCBsaW5raW5nIGFnYWluc3QgdGhlIHJpZ2h0IGhlYWRlcnMgYW5kIGxpYnJhcmllcy4KKworVXBzdHJlYW0tU3RhdHVzOiBzdWJtaXR0ZWQgW2h0dHBzOi8vbGttbC5vcmcvbGttbC8yMDEzLzMvMy8xMDNdCisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitjYzogTWljaGFsIE1hcmVrIDxtbWFyZWtAc3VzZS5jej4KK2NjOiBsaW51eC1rYnVpbGRAdmdlci5rZXJuZWwub3JnCitTaWduZWQtb2ZmLWJ5OiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENhbGlmb3JuaWEgU3VsbGl2YW4gPGNhbGlmb3JuaWEubC5zdWxsaXZhbkBpbnRlbC5jb20+CistLS0KKyBzY3JpcHRzL2tjb25maWcvbHhkaWFsb2cvY2hlY2stbHhkaWFsb2cuc2ggfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorIG1vZGUgY2hhbmdlIDEwMDc1NSA9PiAxMDA2NDQgc2NyaXB0cy9rY29uZmlnL2x4ZGlhbG9nL2NoZWNrLWx4ZGlhbG9nLnNoCisKK2RpZmYgLS1naXQgYS9zY3JpcHRzL2tjb25maWcvbHhkaWFsb2cvY2hlY2stbHhkaWFsb2cuc2ggYi9zY3JpcHRzL2tjb25maWcvbHhkaWFsb2cvY2hlY2stbHhkaWFsb2cuc2gKK29sZCBtb2RlIDEwMDc1NQorbmV3IG1vZGUgMTAwNjQ0CitpbmRleCA1MDc1ZWJmMmQzYjkuLmJhOTI0MjEwMTE5MAorLS0tIGEvc2NyaXB0cy9rY29uZmlnL2x4ZGlhbG9nL2NoZWNrLWx4ZGlhbG9nLnNoCisrKysgYi9zY3JpcHRzL2tjb25maWcvbHhkaWFsb2cvY2hlY2stbHhkaWFsb2cuc2gKK0BAIC00LDYgKzQsMTAgQEAKKyAjIFdoYXQgbGlicmFyeSB0byBsaW5rCisgbGRmbGFncygpCisgeworKwlpZiBbICIkQ1JPU1NfQ1VSU0VTX0xJQiIgIT0gIiIgXTsgdGhlbgorKwkJZWNobyAiJENST1NTX0NVUlNFU19MSUIiCisrCQlleGl0CisrCWZpCisgCXBrZy1jb25maWcgLS1saWJzIG5jdXJzZXN3IDI+L2Rldi9udWxsICYmIGV4aXQKKyAJcGtnLWNvbmZpZyAtLWxpYnMgbmN1cnNlcyAyPi9kZXYvbnVsbCAmJiBleGl0CisgCWZvciBleHQgaW4gc28gYSBkbGwuYSBkeWxpYiA7IGRvCitAQCAtMjEsNiArMjUsMTAgQEAgbGRmbGFncygpCisgIyBXaGVyZSBpcyBuY3Vyc2VzLmg/CisgY2NmbGFncygpCisgeworKwlpZiBbIHgiJENST1NTX0NVUlNFU19JTkMiICE9IHggXTsgdGhlbgorKwkJZWNobyAiJENST1NTX0NVUlNFU19JTkMiCisrCQlleGl0CisrCWZpCisgCWlmIHBrZy1jb25maWcgLS1jZmxhZ3MgbmN1cnNlc3cgMj4vZGV2L251bGw7IHRoZW4KKyAJCWVjaG8gJy1EQ1VSU0VTX0xPQz0iPG5jdXJzZXMuaD4iIC1ETkNVUlNFU19XSURFQ0hBUj0xJworIAllbGlmIHBrZy1jb25maWcgLS1jZmxhZ3MgbmN1cnNlcyAyPi9kZXYvbnVsbDsgdGhlbgorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLWRldi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS1kZXYuYmIKaW5kZXggYjk0NzY1OS4uNGE3ZGIxYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLWRldi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGktZGV2LmJiCkBAIC03LDEzICs3LDE0IEBACiAKIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2xpbnV4LXJhc3BiZXJyeXBpOiIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xMyIKLUxJTlVYX1JQSV9ERVZfQlJBTkNIID89ICJycGktNC4xMy55IgorTElOVVhfVkVSU0lPTiA/PSAiNC4xNiIKK0xJTlVYX1JQSV9ERVZfQlJBTkNIID89ICJycGktNC4xNi55IgogCiBTUkNSRVYgPSAiJHtBVVRPUkVWfSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yYXNwYmVycnlwaS9saW51eC5naXQ7cHJvdG9jb2w9Z2l0O2JyYW5jaD0ke0xJTlVYX1JQSV9ERVZfQlJBTkNIfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWFybTY0LUFkZC1ydWxlcy1mb3ItLmR0Ym8tZmlsZXMtZm9yLWR0cy1vdmVybGEucGF0Y2ggXAotIgorU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vcmFzcGJlcnJ5cGkvbGludXguZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9JHtMSU5VWF9SUElfREVWX0JSQU5DSH0gXAorICAgIGZpbGU6Ly8wMDAxLW1lbnVjb25maWctY2hlY2stbHhkaWFnbG9nLnNoLUFsbG93LXNwZWNpZmljYXRpb24tb2YucGF0Y2ggXAorICAgICIKIHJlcXVpcmUgbGludXgtcmFzcGJlcnJ5cGkuaW5jCiAKICMgRGlzYWJsZSB2ZXJzaW9uIGNoZWNrIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBlZGl0IHRoaXMgcmVjaXBlIGV2ZXJ5IHRpbWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS1kZXYvMDAwMS1idWlsZC1hcm02NC1BZGQtcnVsZXMtZm9yLS5kdGJvLWZpbGVzLWZvci1kdHMtb3ZlcmxhLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLWRldi8wMDAxLWJ1aWxkLWFybTY0LUFkZC1ydWxlcy1mb3ItLmR0Ym8tZmlsZXMtZm9yLWR0cy1vdmVybGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YmM1MmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLWRldi8wMDAxLWJ1aWxkLWFybTY0LUFkZC1ydWxlcy1mb3ItLmR0Ym8tZmlsZXMtZm9yLWR0cy1vdmVybGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDkyMmNlMWZkMGViODEwYjcxM2Y2ZmZhOWE3YWI5N2MxMWI2ZTM4Y2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxMCBGZWIgMjAxNyAxNzo1NzowOCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBidWlsZC9hcm02NDogQWRkIHJ1bGVzIGZvciAuZHRibyBmaWxlcyBmb3IgZHRzIG92ZXJsYXlzCi0KLVdlIG5vdyBjcmVhdGUgb3ZlcmxheXMgYXMgLmR0Ym8gZmlsZXMuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBhcmNoL2FybTY0L01ha2VmaWxlIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9hcmNoL2FybTY0L01ha2VmaWxlIGIvYXJjaC9hcm02NC9NYWtlZmlsZQotaW5kZXggMzYzNWI4NjYyNzI0Li44MjJmZWZlYjFjZDAgMTAwNjQ0Ci0tLS0gYS9hcmNoL2FybTY0L01ha2VmaWxlCi0rKysgYi9hcmNoL2FybTY0L01ha2VmaWxlCi1AQCAtMTEzLDYgKzExMyw5IEBAIHppbnN0YWxsIGluc3RhbGw6Ci0gJS5kdGI6IHNjcmlwdHMKLSAJJChRKSQoTUFLRSkgJChidWlsZCk9JChib290KS9kdHMgJChib290KS9kdHMvJEAKLSAKLSslLmR0Ym86IHwgc2NyaXB0cwotKwkkKFEpJChNQUtFKSAkKGJ1aWxkKT0kKGJvb3QpL2R0cyBNQUNISU5FPSQoTUFDSElORSkgJChib290KS9kdHMvJEAKLSsKLSBQSE9OWSArPSBkdGJzIGR0YnNfaW5zdGFsbAotIAotIGR0YnM6IHByZXBhcmUgc2NyaXB0cwotLS0gCi0yLjExLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS5pbmMKaW5kZXggZGEzNmNhNy4uNjVjMmFiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGkuaW5jCkBAIC0xOSwyNiArMTksMjEgQEAKIEtCVUlMRF9ERUZDT05GSUdfcmFzcGJlcnJ5cGkzLTY0ID89ICJiY21ycGkzX2RlZmNvbmZpZyIKIAogIyBDTURMSU5FIGZvciByYXNwYmVycnlwaQotQ01ETElORSA/PSAiZHdjX290Zy5scG1fZW5hYmxlPTAgY29uc29sZT1zZXJpYWwwLDExNTIwMCByb290PS9kZXYvbW1jYmxrMHAyIHJvb3Rmc3R5cGU9ZXh0NCByb290d2FpdCIKK1NFUklBTCA9ICIke0BvZS51dGlscy5jb25kaXRpb25hbCgiRU5BQkxFX1VBUlQiLCAiMSIsICJjb25zb2xlPXNlcmlhbDAsMTE1MjAwIiwgIiIsIGQpfSIKK0NNRExJTkUgPz0gImR3Y19vdGcubHBtX2VuYWJsZT0wICR7U0VSSUFMfSByb290PS9kZXYvbW1jYmxrMHAyIHJvb3Rmc3R5cGU9ZXh0NCByb290d2FpdCIKIAogIyBBZGQgdGhlIGtlcm5lbCBkZWJ1Z2dlciBvdmVyIGNvbnNvbGUga2VybmVsIGNvbW1hbmQgbGluZSBvcHRpb24gaWYgZW5hYmxlZAotQ01ETElORV9hcHBlbmQgPSAnICR7QGJhc2VfY29uZGl0aW9uYWwoIkVOQUJMRV9LR0RCIiwgIjEiLCAia2dkYm9jPXNlcmlhbDAsMTE1MjAwIiwgIiIsIGQpfScKK0NNRExJTkVfYXBwZW5kID0gJyAke0BvZS51dGlscy5jb25kaXRpb25hbCgiRU5BQkxFX0tHREIiLCAiMSIsICJrZ2Rib2M9c2VyaWFsMCwxMTUyMDAiLCAiIiwgZCl9JwogCiAjIERpc2FibGUgcnBpIGxvZ28gb24gYm9vdAotQ01ETElORV9hcHBlbmQgKz0gJyAke0BiYXNlX2NvbmRpdGlvbmFsKCJESVNBQkxFX1JQSV9CT09UX0xPR08iLCAiMSIsICJsb2dvLm5vbG9nbyIsICIiLCBkKX0nCitDTURMSU5FX2FwcGVuZCArPSAnICR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJESVNBQkxFX1JQSV9CT09UX0xPR08iLCAiMSIsICJsb2dvLm5vbG9nbyIsICIiLCBkKX0nCiAKICMgWW91IGNhbiBkZWZpbmUgQ01ETElORV9ERUJVRyBhcyAiZGVidWciIGluIHlvdXIgbG9jYWwuY29uZiBvciBkaXN0cm8uY29uZgogIyB0byBlbmFibGUga2VybmVsIGRlYnVnZ2luZy4KIENNRExJTkVfREVCVUcgPz0gIiIKIENNRExJTkVfYXBwZW5kID0gIiAke0NNRExJTkVfREVCVUd9IgogCi0jIFF1aXJrIGZvciB1ZGV2IGdyZWF0ZXIgb3IgZXF1YWwgMTQxCi1VREVWX0dFXzE0MSA/PSAiMSIKLQotIyBFbmFibGUgT0FCSSBjb21wYXQgZm9yIHBlb3BsZSBzdHVjayB3aXRoIG9ic29sZXRlIHVzZXJzcGFjZQotQVJNX0tFRVBfT0FCSSA/PSAiMSIKLQotS0VSTkVMX0lOSVRSQU1GUyA/PSAnJHtAYmFzZV9jb25kaXRpb25hbCgiSU5JVFJBTUZTX0lNQUdFX0JVTkRMRSIsICIxIiwgIjEiLCAiIiwgZCl9JworS0VSTkVMX0lOSVRSQU1GUyA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIklOSVRSQU1GU19JTUFHRV9CVU5ETEUiLCAiMSIsICIxIiwgIiIsIGQpfScKIAogS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAicGl0ZnQyOHIiLCAic3RtcGUtdHMiLCAiIiwgZCl9IgogCkBAIC02MSw4MyArNTYsNTQgQEAKICAgICBmaQogfQogCitjb25maWdfc2V0dXAoKSB7CisgICAgIyBGcm9tIGtlcm5lbC5iYmNsYXNzLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IGJ1aWxkcyB0aGF0CisgICAgIyB1c2UgZGV2dG9vbC4gVGhlIHJlYXNvbiBpcyBhcyBmb2xsb3dzOgorICAgICMKKyAgICAjIC0gSW4gZGV2dG9vbCBidWlsZHMsIGV4dGVybmFsc3JjLmJiY2xhc3MgZ2V0cyBpbmhlcml0ZWQgYW5kIHNldHMgYSBsaXN0IG9mCisgICAgIyBTUkNUUkVFQ09WRVJFRFRBU0tTLCB3aGljaCBkb24ndCBnZXQgcnVuIGJlY2F1c2UgdGhleSBhZmZlY3QgdGhlIHNvdXJjZQorICAgICMgdHJlZSBhbmQsIHdoZW4gdXNpbmcgZGV2dG9vbCwgd2Ugd2FudCB0aGUgZGV2ZWxvcGVyJ3MgY2hhbmdlcyB0byBiZSB0aGUKKyAgICAjIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGguIGtlcm5lbC15b2N0by5iYmNsYXNzIGFkZHMgZG9fa2VybmVsX2NvbmZpZ21lIHRvCisgICAgIyBTUkNUUkVFQ09WRVJFRFRBU0tTLCBzbyBpdCBkb2Vzbid0IHJ1biBpbiBhIGRldnRvb2wgYnVpbGQuLCBJbiBhIG5vcm1hbAorICAgICMgbm9uLWRldnRvb2wgYnVpbGQsIGRvX2tlcm5lbF9jb25maWdtZSBjcmVhdGVzICR7Qn0uY29uZmlnLgorICAgICMKKyAgICAjIC0gTm9ybWFsbHkgKGUuZy4gaW4gbGludXgteW9jdG8pLCBpdCB3b3VsZCBiZSBPSyB0aGF0IGRvX2tlcm5lbF9jb25maWdtZQorICAgICMgZG9lc24ndCBydW4sIGJlY2F1c2UgdGhlIGZpcnN0IGZldyBsaW5lcyBvZiBkb19jb25maWd1cmUgaW4ga2VybmVsLmJiY2xhc3MKKyAgICAjIHBvcHVsYXRlICR7Qn0uY29uZmlnIGZyb20gZWl0aGVyICR7U30uY29uZmlnIChpZiBpdCBleGlzdHMpIGZvciBjdXN0b20KKyAgICAjIGRldmVsb3BlciBjaGFuZ2VzLCBvciBvdGhlcndpc2UgZnJvbSAke1dPUkRJUn0vZGVmY29uZmlnLgorICAgICMKKyAgICAjIC0gSW4gbGludXgtcmFzcGJlcnJ5cGksIHdlIGFkZCBkb19jb25maWd1cmVfcHJlcGVuZCwgd2hpY2ggdHdlYWtzCisgICAgIyAke0J9LmNvbmZpZy4gU2luY2UgdGhpcyBydW5zICpiZWZvcmUqIHRoZSBrZXJuZWwuYmJjbGFzcyBkb19jb25maWd1cmUsCisgICAgIyAke0J9LmNvbmZpZyBkb2Vzbid0IHlldCBleGlzdCBhbmQgd2UgaGl0IGFuIGVycm9yLiBUaHVzIHdlIG5lZWQgdG8gbW92ZQorICAgICMgdGhlIGxvZ2ljIGZyb20gZG9fY29uZmlndXJlIHVwIHRvIGJlZm9yZSBvdXIgZG9fY29uZmlndXJlX3ByZXBlbmQuIEJlY2F1c2UKKyAgICAjIHdlIGFyZSBjb3B5aW5nIG9ubHkgYSBwb3J0aW9uIG9mIGRvX2NvbmZpZ3VyZSBhbmQgbm90IHRoZSB3aG9sZSB0aGluZywKKyAgICAjIHRoZXJlIGlzIG5vIGNsZWFuIHdheSB0byBkbyBpdCB1c2luZyBPRSBmdW5jdGlvbmFsaXR5LCBzbyB3ZSBqdXN0CisgICAgIyBjb3B5LWFuZC1wYXN0ZS4KKyAgICBpZiBbICIke1N9IiAhPSAiJHtCfSIgXSAmJiBbIC1mICIke1N9Ly5jb25maWciIF0gJiYgWyAhIC1mICIke0J9Ly5jb25maWciIF07IHRoZW4KKyAgICAgICAgbXYgIiR7U30vLmNvbmZpZyIgIiR7Qn0vLmNvbmZpZyIKKyAgICBmaQorCisgICAgIyBDb3B5IGRlZmNvbmZpZyB0byAuY29uZmlnIGlmIC5jb25maWcgZG9lcyBub3QgZXhpc3QuIFRoaXMgYWxsb3dzCisgICAgIyByZWNpcGVzIHRvIG1hbmFnZSB0aGUgLmNvbmZpZyB0aGVtc2VsdmVzIGluIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkuCisgICAgaWYgWyAtZiAiJHtXT1JLRElSfS9kZWZjb25maWciIF0gJiYgWyAhIC1mICIke0J9Ly5jb25maWciIF07IHRoZW4KKyAgICAgICAgY3AgIiR7V09SS0RJUn0vZGVmY29uZmlnIiAiJHtCfS8uY29uZmlnIgorICAgIGZpCit9CisKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGNvbmZpZ19zZXR1cAorCiAgICAgbXYgLWYgJHtCfS8uY29uZmlnICR7Qn0vLmNvbmZpZy5wYXRjaGVkCiAgICAgQ09ORl9TRURfU0NSSVBUPSIiCiAKLSAgICAjIG9hYmkgLyBlYWJpIHN1cHBvcnQKLSAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIEFFQUJJIHkKLSAgICBpZiBbICIke0FSTV9LRUVQX09BQkl9IiA9ICIxIiBdIDsgdGhlbgotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIE9BQklfQ09NUEFUIHkKLSAgICBlbHNlCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgT0FCSV9DT01QQVQgbgotICAgIGZpCi0KLSAgICAjIFNldCBjbWRsaW5lCi0gICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDTURMSU5FICJcIiR7Q01ETElORX1cIiIKLQogICAgICMgTG9jYWx2ZXJzaW9uCiAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBMT0NBTFZFUlNJT04gIlwiXCIiCi0gICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBMT0NBTFZFUlNJT05fQVVUTyBuCiAKLSAgICAjIFVkZXYgcXVpcmtzCi0gICAgIyBOZXdlciB2ZXJzaW9ucyBvZiB1ZGV2IG1hbmRhdGUgdGhhdCBzeXNmcyBkb2Vzbid0IGhhdmUgZGVwcmVjYXRlZCBlbnRyaWVzCi0gICAgaWYgWyAiJHtVREVWX0dFXzE0MX0iID0gIjEiIF0gOyB0aGVuCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgU1lTRlNfREVQUkVDQVRFRCBuCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgU1lTRlNfREVQUkVDQVRFRF9WMiBuCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgSE9UUExVRyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgVUVWRU5UX0hFTFBFUl9QQVRIICJcIlwiIgotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFVOSVggeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFNZU0ZTIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBQUk9DX0ZTIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBUTVBGUyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgSU5PVElGWV9VU0VSIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBTSUdOQUxGRCB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgVE1QRlNfUE9TSVhfQUNMIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBCTEtfREVWX0JTRyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgREVWVE1QRlMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIERFVlRNUEZTX01PVU5UIHkKLSAgICBmaQotCi0gICAgIyBOZXdlciBpbml0cyBsaWtlIHN5c3RlbWQgbmVlZCBjZ3JvdXAgc3VwcG9ydAotICAgIGlmIFsgIiR7S0VSTkVMX0VOQUJMRV9DR1JPVVBTfSIgPSAiMSIgXSA7IHRoZW4KLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDR1JPVVBfU0NIRUQgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENHUk9VUFMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENHUk9VUF9OUyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ0dST1VQX0ZSRUVaRVIgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENHUk9VUF9ERVZJQ0UgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENQVVNFVFMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFBST0NfUElEX0NQVVNFVCB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ0dST1VQX0NQVUFDQ1QgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFJFU09VUkNFX0NPVU5URVJTIHkKLSAgICBmaQotCi0gICAgIyByb290LW92ZXItbmZzLW92ZXItdXNiLWV0aCBzdXBwb3J0LiBMaW1pdGVkLCBidXQgc2hvdWxkIGNvdmVyIHNvbWUgY2FzZXMKLSAgICAjIEVuYWJsZSB0aGlzIGJ5IHNldHRpbmcgYSBwcm9wZXIgQ01ETElORV9ORlNST09UX1VTQi4KLSAgICBpZiBbICEgLXogIiR7Q01ETElORV9ORlNST09UX1VTQn0iIF07IHRoZW4KLSAgICAgICAgb2Vub3RlICJDb25maWd1cmluZyB0aGUga2VybmVsIGZvciByb290LW92ZXItbmZzLW92ZXItdXNiLWV0aCB3aXRoIENNRExJTkUgJHtDTURMSU5FX05GU1JPT1RfVVNCfSIKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBJTkVUIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBJUF9QTlAgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFVTQl9HQURHRVQgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFVTQl9HQURHRVRfU0VMRUNURUQgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFVTQl9FVEggeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIE5GU19GUyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgUk9PVF9ORlMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFJPT1RfTkZTIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDTURMSU5FICJcIiR7Q01ETElORV9ORlNST09UX1VTQn1cIiIKLSAgICBmaQogICAgIGlmIFsgISAteiAiJHtLRVJORUxfSU5JVFJBTUZTfSIgXTsgdGhlbgotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIEJMS19ERVZfSU5JVFJEIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBJTklUUkFNRlNfU09VUkNFICIiCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgUkRfR1pJUCB5CiAgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgT1ZFUkxBWV9GUyB5CiAgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgU1FVQVNIRlMgeQogICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFVCSUZTX0ZTIHkKICAgICBmaQotICAgICMgQWN0aXZhdGUgQ09ORklHX0xFR0FDWV9QVFlTCi0gICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBMRUdBQ1lfUFRZUyB5Ci0gICAgIyB0aGlzIG1vZHVsZSBpcyBidWlsdCBleHRlcm5hbGx5IHZpYSBkcmJkLXV0aWxzCi0gICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBCTEtfREVWX0RSQkQgbgogCiAgICAgIyBBY3RpdmF0ZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBWQzQKICAgICBWQzRHUkFQSElDUz0iJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAidmM0Z3JhcGhpY3MiLCAiMSIsICIwIiwgZCl9IgpAQCAtMTUyLDggKzExOCw2IEBACiAgICAgIyBSZW1vdmUgYWxsIG1vZGlmaWVkIGNvbmZpZ3MgYW5kIGFkZCB0aGUgcmVzdCB0byAuY29uZmlnCiAgICAgc2VkIC1lICIke0NPTkZfU0VEX1NDUklQVH0iIDwgJyR7Qn0vLmNvbmZpZy5wYXRjaGVkJyA+PiAnJHtCfS8uY29uZmlnJwogICAgIHJtIC1mICR7Qn0vLmNvbmZpZy5wYXRjaGVkCi0KLSAgICB5ZXMgJycgfCBvZV9ydW5tYWtlIG9sZGNvbmZpZwogfQogCiBkb19jb21waWxlX2FwcGVuZF9yYXNwYmVycnlwaTMtNjQoKSB7CkBAIC0xNjEsMTAgKzEyNSw2IEBACiAgICAgb2VfcnVubWFrZSBkdGJzIENDPSIke0tFUk5FTF9DQ30gJGNjX2V4dHJhICIgTEQ9IiR7S0VSTkVMX0xEfSIgJHtLRVJORUxfRVhUUkFfQVJHU30KIH0KIAotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS9saWIvZmlybXdhcmUKLX0KLQogZG9fZGVwbG95X2FwcGVuZCgpIHsKICAgICAjIERlcGxveSBjbWRsaW5lLnR4dAogICAgIGluc3RhbGwgLWQgJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGlfNC4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0Nzg1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGlfNC4xNC5iYgpAQCAtMCwwICsxLDkgQEAKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTQuMzkiCisKK1NSQ1JFViA9ICI4NjVkZGMxMzkzZjU1ODE5OGU3ZTdjZTcwOTI4ZmYyZTQ5YzRmN2Y2IgorU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vcmFzcGJlcnJ5cGkvbGludXguZ2l0O2JyYW5jaD1ycGktNC4xNC55IFwKKyAgICBmaWxlOi8vMDAwMS1tZW51Y29uZmlnLWNoZWNrLWx4ZGlhZ2xvZy5zaC1BbGxvdy1zcGVjaWZpY2F0aW9uLW9mLnBhdGNoIFwKKyAgICAiCisKK3JlcXVpcmUgbGludXgtcmFzcGJlcnJ5cGkuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGlfNC45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpXzQuOS5iYgppbmRleCAwNjFlODkzLi4yMWZjZmVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGlfNC45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjkuYmIKQEAgLTEsOCArMSwxMSBAQAogRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn0tJHtQVn06IgogCi1MSU5VWF9WRVJTSU9OID89ICI0LjkuNTkiCitMSU5VWF9WRVJTSU9OID89ICI0LjkuODAiCiAKLVNSQ1JFViA9ICJlNzk3NmIyYWZmYThjMDViZDI5OWVhZDBhZDljMzZkZGFmMTM1YjlkIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Jhc3BiZXJyeXBpL2xpbnV4LmdpdDticmFuY2g9cnBpLTQuOS55IgorU1JDUkVWID0gImZmZDdiZjQwODViMDk0NDdlNWRiOTZlZGQ3NGU1MjRmMTE4Y2EzZmUiCitTUkNfVVJJID0gIiBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9yYXNwYmVycnlwaS9saW51eC5naXQ7YnJhbmNoPXJwaS00LjkueSBcCisgICAgZmlsZTovLzAwMDEtbWVudWNvbmZpZy1jaGVjay1seGRpYWdsb2cuc2gtQWxsb3ctc3BlY2lmaWNhdGlvbi1vZi5wYXRjaCBcCisgICAgIgogCiByZXF1aXJlIGxpbnV4LXJhc3BiZXJyeXBpLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDEtRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDAxLURvbi10LXRyeS10by1hY3F1aXJlLWJ1ZmZlci13aGVuLXNyYy1wYWQtaXNuLXQtYWN0aXYucGF0Y2gKaW5kZXggODE1YTdjMi4uODVmZWE2NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDEtRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwMS1Eb24tdC10cnktdG8tYWNxdWlyZS1idWZmZXItd2hlbi1zcmMtcGFkLWlzbi10LWFjdGl2LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyZTExMWU1MmY5NmYwYjk0MmFiZGExMjBjMzBhODc2NjI5YmQ3M2ZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjZmI0MzJmY2Q4ODY4YzdhNGYzMjAxMGM2MWU0N2UyYmYwZmY4MGM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogPT9VVEYtOD9xP0VucmlxdWU9MjBPY2E9QzM9QjFhPTIwR29uej1DMz1BMWxlej89IDxlb2NhbmhhQGlnYWxpYS5jb20+CiBEYXRlOiBNb24sIDI1IE1heSAyMDE1IDE0OjUzOjM1ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIERvbid0IHRyeSB0byBhY3F1aXJlIGJ1ZmZlciB3aGVuIHNyYyBwYWQgaXNuJ3QgYWN0aXZlCkBAIC0yMywxNSArMjMsMTYgQEAKICAgZ3N0X29teF92aWRlb19kZWNfbG9vcCgpCiAgIGdzdF9vbXhfcG9ydF9hY3F1aXJlX2J1ZmZlcigpCiAgIGdzdF9vbXhfY29tcG9uZW50X3dhaXRfbWVzc2FnZSgpCisKIC0tLQogIG9teC9nc3RvbXh2aWRlb2RlYy5jIHwgNSArKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL29teC9nc3RvbXh2aWRlb2RlYy5jIGIvb214L2dzdG9teHZpZGVvZGVjLmMKLWluZGV4IGNkMjQ5NDQuLjU3YTYxZGQgMTAwNjQ0CitpbmRleCBkMTJlZThmLi5mYjAxMDBhIDEwMDY0NAogLS0tIGEvb214L2dzdG9teHZpZGVvZGVjLmMKICsrKyBiL29teC9nc3RvbXh2aWRlb2RlYy5jCi1AQCAtMTI0Nyw2ICsxMjQ3LDExIEBAIGdzdF9vbXhfdmlkZW9fZGVjX2xvb3AgKEdzdE9NWFZpZGVvRGVjICogc2VsZikKK0BAIC0xMjUwLDYgKzEyNTAsMTEgQEAgZ3N0X29teF92aWRlb19kZWNfbG9vcCAoR3N0T01YVmlkZW9EZWMgKiBzZWxmKQogICAgR3N0Q2xvY2tUaW1lRGlmZiBkZWFkbGluZTsKICAgIE9NWF9FUlJPUlRZUEUgZXJyOwogIApAQCAtNDMsNiArNDQsMyBAQAogICNpZiBkZWZpbmVkIChVU0VfT01YX1RBUkdFVF9SUEkpICYmIGRlZmluZWQgKEhBVkVfR1NUX0dMKQogICAgcG9ydCA9IHNlbGYtPmVnbGltYWdlID8gc2VsZi0+ZWdsX291dF9wb3J0IDogc2VsZi0+ZGVjX291dF9wb3J0OwogICNlbHNlCi0tLSAKLTEuOC4zLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDEtY29uZmlnLWZpbGVzLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwMS1jb25maWctZmlsZXMtcGF0aC5wYXRjaAppbmRleCBhN2RhOTIyLi42OTAzYzE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwMS1jb25maWctZmlsZXMtcGF0aC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwMS1jb25maWctZmlsZXMtcGF0aC5wYXRjaApAQCAtMSwzICsxLDE0IEBACitGcm9tIDBkYzg4ZWQ4ODFlYjg0MjBkYWQ0Y2YwOTM0YTkwMGQ4NWI2ZWYzMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMSBGZWIgMjAxNiAxMjo1MzoyMCAtMDgwMAorCistLS0KKyBjb25maWcvYmVsbGFnaW8vZ3N0b214LmNvbmYgfCAgOCArKysrLS0tLQorIGNvbmZpZy9ycGkvZ3N0b214LmNvbmYgICAgICB8IDIyICsrKysrKysrKysrLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlnL2JlbGxhZ2lvL2dzdG9teC5jb25mIGIvY29uZmlnL2JlbGxhZ2lvL2dzdG9teC5jb25mCitpbmRleCA1Y2E4YmE2Li44OTMxMjU1IDEwMDY0NAogLS0tIGEvY29uZmlnL2JlbGxhZ2lvL2dzdG9teC5jb25mCiArKysgYi9jb25maWcvYmVsbGFnaW8vZ3N0b214LmNvbmYKIEBAIC0xLDYgKzEsNiBAQApAQCAtNiwxOCArMTcsMTggQEAKIC1jb3JlLW5hbWU9L3Vzci9sb2NhbC9saWIvbGlib214aWwtYmVsbGFnaW8uc28uMAogK2NvcmUtbmFtZT0vdXNyL2xpYi9saWJvbXhpbC1iZWxsYWdpby5zby4wCiAgY29tcG9uZW50LW5hbWU9T01YLnN0LnZpZGVvX2RlY29kZXIubXBlZzQKLSByYW5rPTI1NgorIHJhbms9MjU3CiAgaW4tcG9ydC1pbmRleD0wCi1AQCAtOSw3ICs5LDcgQEAKK0BAIC05LDcgKzksNyBAQCBoYWNrcz1ldmVudC1wb3J0LXNldHRpbmdzLWNoYW5nZWQtbmRhdGEtcGFyYW1ldGVyLXN3YXA7ZXZlbnQtcG9ydC1zZXR0aW5ncy1jaGFuZwogIAogIFtvbXhoMjY0ZGVjXQogIHR5cGUtbmFtZT1Hc3RPTVhIMjY0RGVjCiAtY29yZS1uYW1lPS91c3IvbG9jYWwvbGliL2xpYm9teGlsLWJlbGxhZ2lvLnNvLjAKICtjb3JlLW5hbWU9L3Vzci9saWIvbGlib214aWwtYmVsbGFnaW8uc28uMAogIGNvbXBvbmVudC1uYW1lPU9NWC5zdC52aWRlb19kZWNvZGVyLmF2YwotIHJhbms9MjU2CisgcmFuaz0yNTcKICBpbi1wb3J0LWluZGV4PTAKLUBAIC0xOCw3ICsxOCw3IEBACitAQCAtMTgsNyArMTgsNyBAQCBoYWNrcz1ldmVudC1wb3J0LXNldHRpbmdzLWNoYW5nZWQtbmRhdGEtcGFyYW1ldGVyLXN3YXA7ZXZlbnQtcG9ydC1zZXR0aW5ncy1jaGFuZwogIAogIFtvbXhtcGVnNHZpZGVvZW5jXQogIHR5cGUtbmFtZT1Hc3RPTVhNUEVHNFZpZGVvRW5jCkBAIC0yNiw3ICszNyw3IEBACiAgY29tcG9uZW50LW5hbWU9T01YLnN0LnZpZGVvX2VuY29kZXIubXBlZzQKICByYW5rPTAKICBpbi1wb3J0LWluZGV4PTAKLUBAIC0yNyw3ICsyNyw3IEBACitAQCAtMjcsNyArMjcsNyBAQCBoYWNrcz1ldmVudC1wb3J0LXNldHRpbmdzLWNoYW5nZWQtbmRhdGEtcGFyYW1ldGVyLXN3YXA7dmlkZW8tZnJhbWVyYXRlLWludGVnZXI7cwogIAogIFtvbXhhYWNlbmNdCiAgdHlwZS1uYW1lPUdzdE9NWEFBQ0VuYwpAQCAtMzUsNiArNDYsOCBAQAogIGNvbXBvbmVudC1uYW1lPU9NWC5zdC5hdWRpb19lbmNvZGVyLmFhYwogIHJhbms9MAogIGluLXBvcnQtaW5kZXg9MAorZGlmZiAtLWdpdCBhL2NvbmZpZy9ycGkvZ3N0b214LmNvbmYgYi9jb25maWcvcnBpL2dzdG9teC5jb25mCitpbmRleCBkM2VhNTZhLi4yNTA4ZGFlIDEwMDY0NAogLS0tIGEvY29uZmlnL3JwaS9nc3RvbXguY29uZgogKysrIGIvY29uZmlnL3JwaS9nc3RvbXguY29uZgogQEAgLTEsNiArMSw2IEBACkBAIC00NSw3ICs1OCw3IEBACiAgY29tcG9uZW50LW5hbWU9T01YLmJyb2FkY29tLnZpZGVvX2RlY29kZQogIHJhbms9MjU3CiAgaW4tcG9ydC1pbmRleD0xMzAKLUBAIC05LDcgKzksNyBAQAorQEAgLTksNyArOSw3IEBAIGhhY2tzPW5vLWNvbXBvbmVudC1yb2xlCiAgCiAgW29teG1wZWc0dmlkZW9kZWNdCiAgdHlwZS1uYW1lPUdzdE9NWE1QRUc0VmlkZW9EZWMKQEAgLTU0LDcgKzY3LDcgQEAKICBjb21wb25lbnQtbmFtZT1PTVguYnJvYWRjb20udmlkZW9fZGVjb2RlCiAgcmFuaz0yNTcKICBpbi1wb3J0LWluZGV4PTEzMAotQEAgLTE4LDcgKzE4LDcgQEAKK0BAIC0xOCw3ICsxOCw3IEBAIGhhY2tzPW5vLWNvbXBvbmVudC1yb2xlCiAgCiAgW29teGgyNjNkZWNdCiAgdHlwZS1uYW1lPUdzdE9NWEgyNjNEZWMKQEAgLTYzLDcgKzc2LDcgQEAKICBjb21wb25lbnQtbmFtZT1PTVguYnJvYWRjb20udmlkZW9fZGVjb2RlCiAgcmFuaz0yNTcKICBpbi1wb3J0LWluZGV4PTEzMAotQEAgLTI3LDcgKzI3LDcgQEAKK0BAIC0yNyw3ICsyNyw3IEBAIGhhY2tzPW5vLWNvbXBvbmVudC1yb2xlCiAgCiAgW29teGgyNjRkZWNdCiAgdHlwZS1uYW1lPUdzdE9NWEgyNjREZWMKQEAgLTcyLDcgKzg1LDcgQEAKICBjb21wb25lbnQtbmFtZT1PTVguYnJvYWRjb20udmlkZW9fZGVjb2RlCiAgcmFuaz0yNTcKICBpbi1wb3J0LWluZGV4PTEzMAotQEAgLTM2LDcgKzM2LDcgQEAKK0BAIC0zNiw3ICszNiw3IEBAIGhhY2tzPW5vLWNvbXBvbmVudC1yb2xlO3NpZ25hbHMtcHJlbWF0dXJlLWVvcwogIAogIFtvbXh0aGVvcmFkZWNdCiAgdHlwZS1uYW1lPUdzdE9NWFRoZW9yYURlYwpAQCAtODEsNyArOTQsNyBAQAogIGNvbXBvbmVudC1uYW1lPU9NWC5icm9hZGNvbS52aWRlb19kZWNvZGUKICByYW5rPTI1NwogIGluLXBvcnQtaW5kZXg9MTMwCi1AQCAtNDUsNyArNDUsNyBAQAorQEAgLTQ1LDcgKzQ1LDcgQEAgaGFja3M9bm8tY29tcG9uZW50LXJvbGUKICAKICBbb214dnA4ZGVjXQogIHR5cGUtbmFtZT1Hc3RPTVhWUDhEZWMKQEAgLTkwLDcgKzEwMyw3IEBACiAgY29tcG9uZW50LW5hbWU9T01YLmJyb2FkY29tLnZpZGVvX2RlY29kZQogIHJhbms9MjU3CiAgaW4tcG9ydC1pbmRleD0xMzAKLUBAIC01NCw3ICs1NCw3IEBACitAQCAtNTQsNyArNTQsNyBAQCBoYWNrcz1uby1jb21wb25lbnQtcm9sZQogIAogIFtvbXhtanBlZ2RlY10KICB0eXBlLW5hbWU9R3N0T01YTUpQRUdEZWMKQEAgLTk5LDE2ICsxMTIsMTYgQEAKICBjb21wb25lbnQtbmFtZT1PTVguYnJvYWRjb20udmlkZW9fZGVjb2RlCiAgcmFuaz0yNTcKICBpbi1wb3J0LWluZGV4PTEzMAotQEAgLTYzLDcgKzYzLDcgQEAKK0BAIC02Myw3ICs2Myw3IEBAIGhhY2tzPW5vLWNvbXBvbmVudC1yb2xlCiAgCiAgW29teHZjMWRlY10KICB0eXBlLW5hbWU9R3N0T01YV01WRGVjCiAtY29yZS1uYW1lPS9vcHQvdmMvbGliL2xpYm9wZW5tYXhpbC5zbwogK2NvcmUtbmFtZT0vdXNyL2xpYi9saWJvcGVubWF4aWwuc28KICBjb21wb25lbnQtbmFtZT1PTVguYnJvYWRjb20udmlkZW9fZGVjb2RlCi0gcmFuaz0yNTYKKyByYW5rPTI1NwogIGluLXBvcnQtaW5kZXg9MTMwCi1AQCAtNzMsNyArNzMsNyBAQAorQEAgLTczLDcgKzczLDcgQEAgc2luay10ZW1wbGF0ZS1jYXBzPXZpZGVvL3gtd212LHdtdnZlcnNpb249KGludCkzLGZvcm1hdD0oc3RyaW5nKXtXTVYzLFdWQzF9LHdpZHQKICAKICBbb214aDI2NGVuY10KICB0eXBlLW5hbWU9R3N0T01YSDI2NEVuYwpAQCAtMTE3LDIxICsxMzAsMjEgQEAKICBjb21wb25lbnQtbmFtZT1PTVguYnJvYWRjb20udmlkZW9fZW5jb2RlCiAgcmFuaz0yNTcKICBpbi1wb3J0LWluZGV4PTIwMAotQEAgLTgyLDcgKzgyLDcgQEAKK0BAIC04Miw3ICs4Miw3IEBAIGhhY2tzPW5vLWNvbXBvbmVudC1yb2xlO25vLWNvbXBvbmVudC1yZWNvbmZpZ3VyZQogIAogIFtvbXhhbmFsb2dhdWRpb3NpbmtdCiAgdHlwZS1uYW1lPUdzdE9NWEFuYWxvZ0F1ZGlvU2luawogLWNvcmUtbmFtZT0vb3B0L3ZjL2xpYi9saWJvcGVubWF4aWwuc28KICtjb3JlLW5hbWU9L3Vzci9saWIvbGlib3Blbm1heGlsLnNvCiAgY29tcG9uZW50LW5hbWU9T01YLmJyb2FkY29tLmF1ZGlvX3JlbmRlcgotIHJhbms9MjU2CisgcmFuaz0yNTcKICBpbi1wb3J0LWluZGV4PTEwMAotQEAgLTkyLDcgKzkyLDcgQEAKK0BAIC05Miw3ICs5Miw3IEBAIHNpbmstdGVtcGxhdGUtY2Fwcz1hdWRpby94LXJhdyxmb3JtYXQ9KHN0cmluZyl7UzE2TEUsUzMyTEV9LGxheW91dD0oc3RyaW5nKWludGVyCiAgCiAgW29teGhkbWlhdWRpb3NpbmtdCiAgdHlwZS1uYW1lPUdzdE9NWEhkbWlBdWRpb1NpbmsKIC1jb3JlLW5hbWU9L29wdC92Yy9saWIvbGlib3Blbm1heGlsLnNvCiArY29yZS1uYW1lPS91c3IvbGliL2xpYm9wZW5tYXhpbC5zbwogIGNvbXBvbmVudC1uYW1lPU9NWC5icm9hZGNvbS5hdWRpb19yZW5kZXIKLSByYW5rPTI1NworIHJhbms9MjU4CiAgaW4tcG9ydC1pbmRleD0xMDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDAyLWZpeC1kZWNvZGVyLWZsdXNoaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDItZml4LWRlY29kZXItZmx1c2hpbmcucGF0Y2gKaW5kZXggZDRjN2M4MS4uMTIyZGRiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDItZml4LWRlY29kZXItZmx1c2hpbmcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDItZml4LWRlY29kZXItZmx1c2hpbmcucGF0Y2gKQEAgLTEsOCArMSwxNiBAQAorRnJvbSBmYzQ3NzNmMzZhYTMxYjRhZTBmYzk3ZDNhYTNmOTRkYjBjODhmMTk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTEgRmViIDIwMTYgMTI6NTM6MjAgLTA4MDAKKworLS0tCisgb214L2dzdG9teC5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKwogZGlmZiAtLWdpdCBhL29teC9nc3RvbXguYyBiL29teC9nc3RvbXguYwotaW5kZXggNjk2OTZjNC4uYzM4MjAxOSAxMDA2NDQKK2luZGV4IDAyMzdmM2MuLjQ1NzMyYzMgMTAwNjQ0CiAtLS0gYS9vbXgvZ3N0b214LmMKICsrKyBiL29teC9nc3RvbXguYwotQEAgLTE1MDgsOCArMTUwOCw4IEBAIGdzdF9vbXhfcG9ydF9zZXRfZmx1c2hpbmcgKEdzdE9NWFBvcnQgKiBwb3J0LCBHc3RDbG9ja1RpbWUgdGltZW91dCwKK0BAIC0xNTM4LDggKzE1MzgsOCBAQCBnc3Rfb214X3BvcnRfc2V0X2ZsdXNoaW5nIChHc3RPTVhQb3J0ICogcG9ydCwgR3N0Q2xvY2tUaW1lIHRpbWVvdXQsCiAgICAgIGxhc3RfZXJyb3IgPSBPTVhfRXJyb3JOb25lOwogICAgICBnc3Rfb214X2NvbXBvbmVudF9oYW5kbGVfbWVzc2FnZXMgKGNvbXApOwogICAgICB3aGlsZSAoc2lnbmFsbGVkICYmIGxhc3RfZXJyb3IgPT0gT01YX0Vycm9yTm9uZSAmJiAhcG9ydC0+Zmx1c2hlZApAQCAtMTMsNCArMjEsMyBAQAogICAgICAgIHNpZ25hbGxlZCA9IGdzdF9vbXhfY29tcG9uZW50X3dhaXRfbWVzc2FnZSAoY29tcCwgdGltZW91dCk7CiAgICAgICAgaWYgKHNpZ25hbGxlZCkKICAgICAgICAgIGdzdF9vbXhfY29tcG9uZW50X2hhbmRsZV9tZXNzYWdlcyAoY29tcCk7Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDAzLW5vLXRpbWVvdXQtb24tZ2V0LXN0YXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDMtbm8tdGltZW91dC1vbi1nZXQtc3RhdGUucGF0Y2gKaW5kZXggMGEwMDUwZC4uNDEyNGJjYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDMtbm8tdGltZW91dC1vbi1nZXQtc3RhdGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDMtbm8tdGltZW91dC1vbi1nZXQtc3RhdGUucGF0Y2gKQEAgLTEsOCArMSwxNiBAQAorRnJvbSAwMmU0OWNiYTQwMmE3ODNmYTFiMzBlNDQ1YjgzYTVjMjgwOTQ5YzFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTMgRmViIDIwMTYgMTE6NDI6MjkgLTA4MDAKKworLS0tCisgb214L2dzdG9teHZpZGVvZGVjLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCiBkaWZmIC0tZ2l0IGEvb214L2dzdG9teHZpZGVvZGVjLmMgYi9vbXgvZ3N0b214dmlkZW9kZWMuYwotaW5kZXggMGQ0ZTdhMS4uYTBkOWM3NCAxMDA2NDQKK2luZGV4IGZiMDEwMGEuLmJhZDYzMzUgMTAwNjQ0CiAtLS0gYS9vbXgvZ3N0b214dmlkZW9kZWMuYwogKysrIGIvb214L2dzdG9teHZpZGVvZGVjLmMKLUBAIC0xNjk3LDkgKzE2OTcsOSBAQCBnc3Rfb214X3ZpZGVvX2RlY19zdG9wIChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyKQorQEAgLTE3MTMsOSArMTcxMyw5IEBAIGdzdF9vbXhfdmlkZW9fZGVjX3N0b3AgKEdzdFZpZGVvRGVjb2RlciAqIGRlY29kZXIpCiAgICBnX2NvbmRfYnJvYWRjYXN0ICgmc2VsZi0+ZHJhaW5fY29uZCk7CiAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmRyYWluX2xvY2spOwogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDQtUHJvcGVybHktaGFuZGxlLWRyYWluLXJlcXVlc3RzLXdoaWxlLWZsdXNoaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDQtUHJvcGVybHktaGFuZGxlLWRyYWluLXJlcXVlc3RzLXdoaWxlLWZsdXNoaW5nLnBhdGNoCmluZGV4IDRkMTBmMjQuLmIwMjA3MmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDA0LVByb3Blcmx5LWhhbmRsZS1kcmFpbi1yZXF1ZXN0cy13aGlsZS1mbHVzaGluZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwNC1Qcm9wZXJseS1oYW5kbGUtZHJhaW4tcmVxdWVzdHMtd2hpbGUtZmx1c2hpbmcucGF0Y2gKQEAgLTEsMjAgKzEsMjAgQEAKLUZyb20gODBkZGRmZDEzYWFmMmZlNzI3Mjc2NWY4Y2YyOTEyMTVmZTM3NWUyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjAwOTEyZjA2MjhhZmYxNWU4ODJiZGMxNjE5ZjVkZTFkZGY1YzcyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206ID0/VVRGLTg/cT9FbnJpcXVlPTIwT2NhPUMzPUIxYT0yMEdvbno9QzM9QTFsZXo/PSA8ZW9jYW5oYUBpZ2FsaWEuY29tPgogRGF0ZTogVHVlLCAxNyBOb3YgMjAxNSAxNjo1MToyNyArMDAwMAogU3ViamVjdDogW1BBVENIXSBQcm9wZXJseSBoYW5kbGUgZHJhaW4gcmVxdWVzdHMgd2hpbGUgZmx1c2hpbmcKIAogV2l0aG91dCB0aGlzIGNvbW1pdCB0aGUgZGVjb2RlciBzdHJlYW1pbmcgdGhyZWFkIHN0b3BzIHdpdGhvdXQgZXZlciBhdHRlbmRpbmcKIHRoZSBkcmFpbiByZXF1ZXN0LCBsZWF2aW5nIHRoZSBkZWNvZGVyIGlucHV0IHRocmVhZCB3YWl0aW5nIGZvcmV2ZXIuCi0tLS0KLSBvbXgvZ3N0b214LmMgICAgICAgICB8ICA3ICsrKysrKysKLSBvbXgvZ3N0b214dmlkZW9kZWMuYyB8IDEzICsrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKykKIAotSW5kZXg6IGdzdC1vbXgtMS4xMC4yL29teC9nc3RvbXguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1vbXgtMS4xMC4yLm9yaWcvb214L2dzdG9teC5jCi0rKysgZ3N0LW9teC0xLjEwLjIvb214L2dzdG9teC5jCi1AQCAtNzM3LDYgKzczNywxMyBAQCBnc3Rfb214X2NvbXBvbmVudF9uZXcgKEdzdE9iamVjdCAqIHBhcmVuCistLS0KKyBvbXgvZ3N0b214LmMgfCA3ICsrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9vbXgvZ3N0b214LmMgYi9vbXgvZ3N0b214LmMKK2luZGV4IDQ1NzMyYzMuLjc4NGE1ZDcgMTAwNjQ0CistLS0gYS9vbXgvZ3N0b214LmMKKysrKyBiL29teC9nc3RvbXguYworQEAgLTczNyw2ICs3MzcsMTMgQEAgZ3N0X29teF9jb21wb25lbnRfbmV3IChHc3RPYmplY3QgKiBwYXJlbnQsIGNvbnN0IGdjaGFyICogY29yZV9uYW1lLAogIAogICAgZ19tdXRleF9sb2NrICgmY29tcC0+bG9jayk7CiAgICBnc3Rfb214X2NvbXBvbmVudF9oYW5kbGVfbWVzc2FnZXMgKGNvbXApOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDUtRG9uLXQtYWJvcnQtZ3N0X29teF92aWRlb19kZWNfc2V0X2Zvcm1hdC1pZi10aGVyZS1zLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDA1LURvbi10LWFib3J0LWdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQtaWYtdGhlcmUtcy0ucGF0Y2gKaW5kZXggYjdhODc1My4uZmRmZGQxYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDUtRG9uLXQtYWJvcnQtZ3N0X29teF92aWRlb19kZWNfc2V0X2Zvcm1hdC1pZi10aGVyZS1zLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwNS1Eb24tdC1hYm9ydC1nc3Rfb214X3ZpZGVvX2RlY19zZXRfZm9ybWF0LWlmLXRoZXJlLXMtLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxMjEwMzg0MmQ1ZjM0N2NmMjQ1ZTcxMDcxZDBjNDQyOTdiY2RiMWY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwZDJhZDYzOWU2MTU4YzgwMjNjMTU3ZTIwNmVmM2ZmN2FiZGMwODljIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogPT9VVEYtOD9xP0VucmlxdWU9MjBPY2E9QzM9QjFhPTIwR29uej1DMz1BMWxlej89IDxlb2NhbmhhQGlnYWxpYS5jb20+CiBEYXRlOiBGcmksIDQgRGVjIDIwMTUgMTg6Mzk6NTkgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgYWJvcnQgZ3N0X29teF92aWRlb19kZWNfc2V0X2Zvcm1hdCgpIGlmIHRoZXJlJ3MgYQpAQCAtOSwxMCArOSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL29teC9nc3RvbXh2aWRlb2RlYy5jIGIvb214L2dzdG9teHZpZGVvZGVjLmMKLWluZGV4IDIzNjhmMzQuLmRhMzVlMGQgMTAwNjQ0CitpbmRleCBiYWQ2MzM1Li5jNjNiOTcyIDEwMDY0NAogLS0tIGEvb214L2dzdG9teHZpZGVvZGVjLmMKICsrKyBiL29teC9nc3RvbXh2aWRlb2RlYy5jCi1AQCAtMTkwNSw4ICsxOTA1LDExIEBAIGdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQgKEdzdFZpZGVvRGVjb2RlciAqIGRlY29kZXIsCitAQCAtMTkxMSw4ICsxOTExLDExIEBAIGdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQgKEdzdFZpZGVvRGVjb2RlciAqIGRlY29kZXIsCiAgICAgICAgICAgICAgICA1ICogR1NUX1NFQ09ORCkgIT0gT01YX0Vycm9yTm9uZSkKICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICBpZiAoZ3N0X29teF9wb3J0X3dhaXRfYnVmZmVyc19yZWxlYXNlZCAob3V0X3BvcnQsCkBAIC0yNSw2ICsyNSwzIEBACiAgICAgICAgaWYgKGdzdF9vbXhfcG9ydF9kZWFsbG9jYXRlX2J1ZmZlcnMgKHNlbGYtPmRlY19pbl9wb3J0KSAhPSBPTVhfRXJyb3JOb25lKQogICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgIGlmIChnc3Rfb214X3ZpZGVvX2RlY19kZWFsbG9jYXRlX291dHB1dF9idWZmZXJzIChzZWxmKSAhPSBPTVhfRXJyb3JOb25lKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LzAwMDEtY29uZmlnLWZpbGVzLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LzAwMDEtY29uZmlnLWZpbGVzLXBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3ZGE5MjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC8wMDAxLWNvbmZpZy1maWxlcy1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS0tLSBhL2NvbmZpZy9iZWxsYWdpby9nc3RvbXguY29uZgotKysrIGIvY29uZmlnL2JlbGxhZ2lvL2dzdG9teC5jb25mCi1AQCAtMSw2ICsxLDYgQEAKLSBbb214bXBlZzR2aWRlb2RlY10KLSB0eXBlLW5hbWU9R3N0T01YTVBFRzRWaWRlb0RlYwotLWNvcmUtbmFtZT0vdXNyL2xvY2FsL2xpYi9saWJvbXhpbC1iZWxsYWdpby5zby4wCi0rY29yZS1uYW1lPS91c3IvbGliL2xpYm9teGlsLWJlbGxhZ2lvLnNvLjAKLSBjb21wb25lbnQtbmFtZT1PTVguc3QudmlkZW9fZGVjb2Rlci5tcGVnNAotIHJhbms9MjU2Ci0gaW4tcG9ydC1pbmRleD0wCi1AQCAtOSw3ICs5LDcgQEAKLSAKLSBbb214aDI2NGRlY10KLSB0eXBlLW5hbWU9R3N0T01YSDI2NERlYwotLWNvcmUtbmFtZT0vdXNyL2xvY2FsL2xpYi9saWJvbXhpbC1iZWxsYWdpby5zby4wCi0rY29yZS1uYW1lPS91c3IvbGliL2xpYm9teGlsLWJlbGxhZ2lvLnNvLjAKLSBjb21wb25lbnQtbmFtZT1PTVguc3QudmlkZW9fZGVjb2Rlci5hdmMKLSByYW5rPTI1NgotIGluLXBvcnQtaW5kZXg9MAotQEAgLTE4LDcgKzE4LDcgQEAKLSAKLSBbb214bXBlZzR2aWRlb2VuY10KLSB0eXBlLW5hbWU9R3N0T01YTVBFRzRWaWRlb0VuYwotLWNvcmUtbmFtZT0vdXNyL2xvY2FsL2xpYi9saWJvbXhpbC1iZWxsYWdpby5zby4wCi0rY29yZS1uYW1lPS91c3IvbGliL2xpYm9teGlsLWJlbGxhZ2lvLnNvLjAKLSBjb21wb25lbnQtbmFtZT1PTVguc3QudmlkZW9fZW5jb2Rlci5tcGVnNAotIHJhbms9MAotIGluLXBvcnQtaW5kZXg9MAotQEAgLTI3LDcgKzI3LDcgQEAKLSAKLSBbb214YWFjZW5jXQotIHR5cGUtbmFtZT1Hc3RPTVhBQUNFbmMKLS1jb3JlLW5hbWU9L3Vzci9sb2NhbC9saWIvbGlib214aWwtYmVsbGFnaW8uc28uMAotK2NvcmUtbmFtZT0vdXNyL2xpYi9saWJvbXhpbC1iZWxsYWdpby5zby4wCi0gY29tcG9uZW50LW5hbWU9T01YLnN0LmF1ZGlvX2VuY29kZXIuYWFjCi0gcmFuaz0wCi0gaW4tcG9ydC1pbmRleD0wCi0tLS0gYS9jb25maWcvcnBpL2dzdG9teC5jb25mCi0rKysgYi9jb25maWcvcnBpL2dzdG9teC5jb25mCi1AQCAtMSw2ICsxLDYgQEAKLSBbb214bXBlZzJ2aWRlb2RlY10KLSB0eXBlLW5hbWU9R3N0T01YTVBFRzJWaWRlb0RlYwotLWNvcmUtbmFtZT0vb3B0L3ZjL2xpYi9saWJvcGVubWF4aWwuc28KLStjb3JlLW5hbWU9L3Vzci9saWIvbGlib3Blbm1heGlsLnNvCi0gY29tcG9uZW50LW5hbWU9T01YLmJyb2FkY29tLnZpZGVvX2RlY29kZQotIHJhbms9MjU3Ci0gaW4tcG9ydC1pbmRleD0xMzAKLUBAIC05LDcgKzksNyBAQAotIAotIFtvbXhtcGVnNHZpZGVvZGVjXQotIHR5cGUtbmFtZT1Hc3RPTVhNUEVHNFZpZGVvRGVjCi0tY29yZS1uYW1lPS9vcHQvdmMvbGliL2xpYm9wZW5tYXhpbC5zbwotK2NvcmUtbmFtZT0vdXNyL2xpYi9saWJvcGVubWF4aWwuc28KLSBjb21wb25lbnQtbmFtZT1PTVguYnJvYWRjb20udmlkZW9fZGVjb2RlCi0gcmFuaz0yNTcKLSBpbi1wb3J0LWluZGV4PTEzMAotQEAgLTE4LDcgKzE4LDcgQEAKLSAKLSBbb214aDI2M2RlY10KLSB0eXBlLW5hbWU9R3N0T01YSDI2M0RlYwotLWNvcmUtbmFtZT0vb3B0L3ZjL2xpYi9saWJvcGVubWF4aWwuc28KLStjb3JlLW5hbWU9L3Vzci9saWIvbGlib3Blbm1heGlsLnNvCi0gY29tcG9uZW50LW5hbWU9T01YLmJyb2FkY29tLnZpZGVvX2RlY29kZQotIHJhbms9MjU3Ci0gaW4tcG9ydC1pbmRleD0xMzAKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gW29teGgyNjRkZWNdCi0gdHlwZS1uYW1lPUdzdE9NWEgyNjREZWMKLS1jb3JlLW5hbWU9L29wdC92Yy9saWIvbGlib3Blbm1heGlsLnNvCi0rY29yZS1uYW1lPS91c3IvbGliL2xpYm9wZW5tYXhpbC5zbwotIGNvbXBvbmVudC1uYW1lPU9NWC5icm9hZGNvbS52aWRlb19kZWNvZGUKLSByYW5rPTI1NwotIGluLXBvcnQtaW5kZXg9MTMwCi1AQCAtMzYsNyArMzYsNyBAQAotIAotIFtvbXh0aGVvcmFkZWNdCi0gdHlwZS1uYW1lPUdzdE9NWFRoZW9yYURlYwotLWNvcmUtbmFtZT0vb3B0L3ZjL2xpYi9saWJvcGVubWF4aWwuc28KLStjb3JlLW5hbWU9L3Vzci9saWIvbGlib3Blbm1heGlsLnNvCi0gY29tcG9uZW50LW5hbWU9T01YLmJyb2FkY29tLnZpZGVvX2RlY29kZQotIHJhbms9MjU3Ci0gaW4tcG9ydC1pbmRleD0xMzAKLUBAIC00NSw3ICs0NSw3IEBACi0gCi0gW29teHZwOGRlY10KLSB0eXBlLW5hbWU9R3N0T01YVlA4RGVjCi0tY29yZS1uYW1lPS9vcHQvdmMvbGliL2xpYm9wZW5tYXhpbC5zbwotK2NvcmUtbmFtZT0vdXNyL2xpYi9saWJvcGVubWF4aWwuc28KLSBjb21wb25lbnQtbmFtZT1PTVguYnJvYWRjb20udmlkZW9fZGVjb2RlCi0gcmFuaz0yNTcKLSBpbi1wb3J0LWluZGV4PTEzMAotQEAgLTU0LDcgKzU0LDcgQEAKLSAKLSBbb214bWpwZWdkZWNdCi0gdHlwZS1uYW1lPUdzdE9NWE1KUEVHRGVjCi0tY29yZS1uYW1lPS9vcHQvdmMvbGliL2xpYm9wZW5tYXhpbC5zbwotK2NvcmUtbmFtZT0vdXNyL2xpYi9saWJvcGVubWF4aWwuc28KLSBjb21wb25lbnQtbmFtZT1PTVguYnJvYWRjb20udmlkZW9fZGVjb2RlCi0gcmFuaz0yNTcKLSBpbi1wb3J0LWluZGV4PTEzMAotQEAgLTYzLDcgKzYzLDcgQEAKLSAKLSBbb214dmMxZGVjXQotIHR5cGUtbmFtZT1Hc3RPTVhXTVZEZWMKLS1jb3JlLW5hbWU9L29wdC92Yy9saWIvbGlib3Blbm1heGlsLnNvCi0rY29yZS1uYW1lPS91c3IvbGliL2xpYm9wZW5tYXhpbC5zbwotIGNvbXBvbmVudC1uYW1lPU9NWC5icm9hZGNvbS52aWRlb19kZWNvZGUKLSByYW5rPTI1NgotIGluLXBvcnQtaW5kZXg9MTMwCi1AQCAtNzMsNyArNzMsNyBAQAotIAotIFtvbXhoMjY0ZW5jXQotIHR5cGUtbmFtZT1Hc3RPTVhIMjY0RW5jCi0tY29yZS1uYW1lPS9vcHQvdmMvbGliL2xpYm9wZW5tYXhpbC5zbwotK2NvcmUtbmFtZT0vdXNyL2xpYi9saWJvcGVubWF4aWwuc28KLSBjb21wb25lbnQtbmFtZT1PTVguYnJvYWRjb20udmlkZW9fZW5jb2RlCi0gcmFuaz0yNTcKLSBpbi1wb3J0LWluZGV4PTIwMAotQEAgLTgyLDcgKzgyLDcgQEAKLSAKLSBbb214YW5hbG9nYXVkaW9zaW5rXQotIHR5cGUtbmFtZT1Hc3RPTVhBbmFsb2dBdWRpb1NpbmsKLS1jb3JlLW5hbWU9L29wdC92Yy9saWIvbGlib3Blbm1heGlsLnNvCi0rY29yZS1uYW1lPS91c3IvbGliL2xpYm9wZW5tYXhpbC5zbwotIGNvbXBvbmVudC1uYW1lPU9NWC5icm9hZGNvbS5hdWRpb19yZW5kZXIKLSByYW5rPTI1NgotIGluLXBvcnQtaW5kZXg9MTAwCi1AQCAtOTIsNyArOTIsNyBAQAotIAotIFtvbXhoZG1pYXVkaW9zaW5rXQotIHR5cGUtbmFtZT1Hc3RPTVhIZG1pQXVkaW9TaW5rCi0tY29yZS1uYW1lPS9vcHQvdmMvbGliL2xpYm9wZW5tYXhpbC5zbwotK2NvcmUtbmFtZT0vdXNyL2xpYi9saWJvcGVubWF4aWwuc28KLSBjb21wb25lbnQtbmFtZT1PTVguYnJvYWRjb20uYXVkaW9fcmVuZGVyCi0gcmFuaz0yNTcKLSBpbi1wb3J0LWluZGV4PTEwMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC8wMDAyLURvbi10LXRyeS10by1hY3F1aXJlLWJ1ZmZlci13aGVuLXNyYy1wYWQtaXNuLXQtYWN0aXYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LzAwMDItRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVmMjFhNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LzAwMDItRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gMmUxMTFlNTJmOTZmMGI5NDJhYmRhMTIwYzMwYTg3NjYyOWJkNzNmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9FbnJpcXVlPTIwT2NhPUMzPUIxYT0yMEdvbno9QzM9QTFsZXo/PSA8ZW9jYW5oYUBpZ2FsaWEuY29tPgotRGF0ZTogTW9uLCAyNSBNYXkgMjAxNSAxNDo1MzozNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBEb24ndCB0cnkgdG8gYWNxdWlyZSBidWZmZXIgd2hlbiBzcmMgcGFkIGlzbid0IGFjdGl2ZQotCi1UaGlzIHNvbHZlcyBhIHJhY2UgY29uZGl0aW9uIHdoZW4gc2V0dGluZyB0aGUgcGlwZWxpbmUgZnJvbSBQQVVTRSB0bwotTlVMTCB3aGlsZSB0aGUgZGVjb2RlciBsb29wIGlzIHN0aWxsIHJ1bm5pbmcuIFdpdGhvdXQgdGhpcyBwYXRjaCwgdGhlCi10aHJlYWQgd2hpY2ggaW50ZXJhY3RzIHdpdGggdGhlIGRlY29kZSBzaW5rIHBhZCBnZXRzIGJsb2NrZWQgaGVyZToKLQotICBnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGUoKQotICBnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGVfZnVuYygpCi0gIGdzdF9lbGVtZW50X3BhZHNfYWN0aXZhdGUoKSAtLT4gRGVhY3RpdmF0aW5nIHBhZHMKLSAgYWN0aXZhdGVfcGFkcygpCi0gIGdzdF9wYWRfc2V0X2FjdGl2ZSgpCi0gIGdzdF9wYWRfYWN0aXZhdGVfbW9kZSgpCi0gIHBvc3RfYWN0aXZhdGUoKQotICBHU1RfUEFEX1NUUkVBTV9MT0NLKCkKLQotd2hpbGUgZ3N0X29teF9wb3J0X2FjcXVpcmVfYnVmZmVyKCkgZ2V0cyBzdGFsbGVkIGZvcmV2ZXIgaW4KLWdzdF9vbXhfY29tcG9uZW50X3dhaXRfbWVzc2FnZSgpIHdhaXRpbmcgZm9yIGEgbWVzc2FnZSB0aGF0IHdpbGwgbmV2ZXIKLWFycml2ZToKLQotICBnc3Rfb214X3ZpZGVvX2RlY19sb29wKCkKLSAgZ3N0X29teF9wb3J0X2FjcXVpcmVfYnVmZmVyKCkKLSAgZ3N0X29teF9jb21wb25lbnRfd2FpdF9tZXNzYWdlKCkKLS0tLQotIG9teC9nc3RvbXh2aWRlb2RlYy5jIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL29teC9nc3RvbXh2aWRlb2RlYy5jIGIvb214L2dzdG9teHZpZGVvZGVjLmMKLWluZGV4IGNkMjQ5NDQuLjU3YTYxZGQgMTAwNjQ0Ci0tLS0gYS9vbXgvZ3N0b214dmlkZW9kZWMuYwotKysrIGIvb214L2dzdG9teHZpZGVvZGVjLmMKLUBAIC0xMjQ3LDYgKzEyNDcsMTEgQEAgZ3N0X29teF92aWRlb19kZWNfbG9vcCAoR3N0T01YVmlkZW9EZWMgKiBzZWxmKQotICAgR3N0Q2xvY2tUaW1lRGlmZiBkZWFkbGluZTsKLSAgIE9NWF9FUlJPUlRZUEUgZXJyOwotIAotKyAgaWYgKCFnc3RfcGFkX2lzX2FjdGl2ZShHU1RfVklERU9fREVDT0RFUl9TUkNfUEFEIChzZWxmKSkpIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlNyYyBwYWQgbm90IGFjdGl2ZSwgbm90IGFjcXVpcmluZyBidWZmZXIgYW5kIGZsdXNoaW5nIGluc3RlYWQiKTsKLSsgICAgICBnb3RvIGZsdXNoaW5nOwotKyAgfQotKwotICNpZiBkZWZpbmVkIChVU0VfT01YX1RBUkdFVF9SUEkpICYmIGRlZmluZWQgKEhBVkVfR1NUX0dMKQotICAgcG9ydCA9IHNlbGYtPmVnbGltYWdlID8gc2VsZi0+ZWdsX291dF9wb3J0IDogc2VsZi0+ZGVjX291dF9wb3J0OwotICNlbHNlCi0tLSAKLTEuOC4zLjIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgvMDAwMy1maXgtZGVjb2Rlci1mbHVzaGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgvMDAwMy1maXgtZGVjb2Rlci1mbHVzaGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI0NGIwOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LzAwMDMtZml4LWRlY29kZXItZmx1c2hpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1kaWZmIC0tZ2l0IGEvb214L2dzdG9teC5jIGIvb214L2dzdG9teC5jCi1pbmRleCA2OTY5NmM0Li5jMzgyMDE5IDEwMDY0NAotLS0tIGEvb214L2dzdG9teC5jCi0rKysgYi9vbXgvZ3N0b214LmMKLUBAIC0xNTA4LDggKzE1MDgsOCBAQCBnc3Rfb214X3BvcnRfc2V0X2ZsdXNoaW5nIChHc3RPTVhQb3J0ICogcG9ydCwgR3N0Q2xvY2tUaW1lIHRpbWVvdXQsCi0gICAgIGxhc3RfZXJyb3IgPSBPTVhfRXJyb3JOb25lOwotICAgICBnc3Rfb214X2NvbXBvbmVudF9oYW5kbGVfbWVzc2FnZXMgKGNvbXApOwotICAgICB3aGlsZSAoc2lnbmFsbGVkICYmIGxhc3RfZXJyb3IgPT0gT01YX0Vycm9yTm9uZSAmJiAhcG9ydC0+Zmx1c2hlZAotLSAgICAgICAgJiYgcG9ydC0+YnVmZmVycwotLSAgICAgICAgJiYgcG9ydC0+YnVmZmVycy0+bGVuID4gZ19xdWV1ZV9nZXRfbGVuZ3RoICgmcG9ydC0+cGVuZGluZ19idWZmZXJzKSkgewotKyAgICAgLyogJiYgcG9ydC0+YnVmZmVycwotKyAgICAgICAgJiYgcG9ydC0+YnVmZmVycy0+bGVuID4gZ19xdWV1ZV9nZXRfbGVuZ3RoICgmcG9ydC0+cGVuZGluZ19idWZmZXJzKSAqLykgewotICAgICAgIHNpZ25hbGxlZCA9IGdzdF9vbXhfY29tcG9uZW50X3dhaXRfbWVzc2FnZSAoY29tcCwgdGltZW91dCk7Ci0gICAgICAgaWYgKHNpZ25hbGxlZCkKLSAgICAgICAgIGdzdF9vbXhfY29tcG9uZW50X2hhbmRsZV9tZXNzYWdlcyAoY29tcCk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LzAwMDMtbm8tdGltZW91dC1vbi1nZXQtc3RhdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LzAwMDMtbm8tdGltZW91dC1vbi1nZXQtc3RhdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMDA1MGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC8wMDAzLW5vLXRpbWVvdXQtb24tZ2V0LXN0YXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotZGlmZiAtLWdpdCBhL29teC9nc3RvbXh2aWRlb2RlYy5jIGIvb214L2dzdG9teHZpZGVvZGVjLmMKLWluZGV4IDBkNGU3YTEuLmEwZDljNzQgMTAwNjQ0Ci0tLS0gYS9vbXgvZ3N0b214dmlkZW9kZWMuYwotKysrIGIvb214L2dzdG9teHZpZGVvZGVjLmMKLUBAIC0xNjk3LDkgKzE2OTcsOSBAQCBnc3Rfb214X3ZpZGVvX2RlY19zdG9wIChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyKQotICAgZ19jb25kX2Jyb2FkY2FzdCAoJnNlbGYtPmRyYWluX2NvbmQpOwotICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5kcmFpbl9sb2NrKTsKLSAKLS0gIGdzdF9vbXhfY29tcG9uZW50X2dldF9zdGF0ZSAoc2VsZi0+ZGVjLCA1ICogR1NUX1NFQ09ORCk7Ci0rICBnc3Rfb214X2NvbXBvbmVudF9nZXRfc3RhdGUgKHNlbGYtPmRlYywgMCk7Ci0gI2lmIGRlZmluZWQgKFVTRV9PTVhfVEFSR0VUX1JQSSkgJiYgZGVmaW5lZCAoSEFWRV9HU1RfR0wpCi0tICBnc3Rfb214X2NvbXBvbmVudF9nZXRfc3RhdGUgKHNlbGYtPmVnbF9yZW5kZXIsIDEgKiBHU1RfU0VDT05EKTsKLSsgIGdzdF9vbXhfY29tcG9uZW50X2dldF9zdGF0ZSAoc2VsZi0+ZWdsX3JlbmRlciwgMCk7Ci0gI2VuZGlmCi0gCi0gICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZzZWxmLT5jb2RlY19kYXRhLCBOVUxMKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgvMDAwNC1Qcm9wZXJseS1oYW5kbGUtZHJhaW4tcmVxdWVzdHMtd2hpbGUtZmx1c2hpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LzAwMDQtUHJvcGVybHktaGFuZGxlLWRyYWluLXJlcXVlc3RzLXdoaWxlLWZsdXNoaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODY4OWYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgvMDAwNC1Qcm9wZXJseS1oYW5kbGUtZHJhaW4tcmVxdWVzdHMtd2hpbGUtZmx1c2hpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1Gcm9tIDgwZGRkZmQxM2FhZjJmZTcyNzI3NjVmOGNmMjkxMjE1ZmUzNzVlMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/RW5yaXF1ZT0yME9jYT1DMz1CMWE9MjBHb256PUMzPUExbGV6Pz0gPGVvY2FuaGFAaWdhbGlhLmNvbT4KLURhdGU6IFR1ZSwgMTcgTm92IDIwMTUgMTY6NTE6MjcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gUHJvcGVybHkgaGFuZGxlIGRyYWluIHJlcXVlc3RzIHdoaWxlIGZsdXNoaW5nCi0KLVdpdGhvdXQgdGhpcyBjb21taXQgdGhlIGRlY29kZXIgc3RyZWFtaW5nIHRocmVhZCBzdG9wcyB3aXRob3V0IGV2ZXIgYXR0ZW5kaW5nCi10aGUgZHJhaW4gcmVxdWVzdCwgbGVhdmluZyB0aGUgZGVjb2RlciBpbnB1dCB0aHJlYWQgd2FpdGluZyBmb3JldmVyLgotLS0tCi0gb214L2dzdG9teC5jICAgICAgICAgfCAgNyArKysrKysrCi0gb214L2dzdG9teHZpZGVvZGVjLmMgfCAxMyArKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9vbXgvZ3N0b214LmMgYi9vbXgvZ3N0b214LmMKLWluZGV4IDY5Njk2YzQuLmYwY2Q4OTAgMTAwNjQ0Ci0tLS0gYS9vbXgvZ3N0b214LmMKLSsrKyBiL29teC9nc3RvbXguYwotQEAgLTgzMCw2ICs4MzAsMTMgQEAgZ3N0X29teF9jb21wb25lbnRfc2V0X3N0YXRlIChHc3RPTVhDb21wb25lbnQgKiBjb21wLCBPTVhfU1RBVEVUWVBFIHN0YXRlKQotIGRvbmU6Ci0gCi0gICBnc3Rfb214X2NvbXBvbmVudF9oYW5kbGVfbWVzc2FnZXMgKGNvbXApOwotKwotKyAgaWYgKGVyciAhPSBPTVhfRXJyb3JOb25lICYmIGNvbXAtPmxhc3RfZXJyb3IgPT0gT01YX0Vycm9yTm9uZSkgewotKyAgICBHU1RfRVJST1JfT0JKRUNUIChjb21wLT5wYXJlbnQsCi0rICAgICAgICAiTGFzdCBvcGVyYXRpb24gcmV0dXJuZWQgYW4gZXJyb3IuIFNldHRpbmcgbGFzdF9lcnJvciBtYW51YWxseS4iKTsKLSsgICAgY29tcC0+bGFzdF9lcnJvciA9IGVycjsKLSsgIH0KLSsKLSAgIGdfbXV0ZXhfdW5sb2NrICgmY29tcC0+bG9jayk7Ci0gCi0gICBpZiAoZXJyICE9IE9NWF9FcnJvck5vbmUpIHsKLWRpZmYgLS1naXQgYS9vbXgvZ3N0b214dmlkZW9kZWMuYyBiL29teC9nc3RvbXh2aWRlb2RlYy5jCi1pbmRleCBkNTMxZjc1Li5hMjZjNGE2IDEwMDY0NAotLS0tIGEvb214L2dzdG9teHZpZGVvZGVjLmMKLSsrKyBiL29teC9nc3RvbXh2aWRlb2RlYy5jCi1AQCAtMTUzOSw5ICsxNTM5LDE2IEBAIGNvbXBvbmVudF9lcnJvcjoKLSBmbHVzaGluZzoKLSAgIHsKLSAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkZsdXNoaW5nIC0tIHN0b3BwaW5nIHRhc2siKTsKLSsKLSsgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+ZHJhaW5fbG9jayk7Ci0rICAgIGlmIChzZWxmLT5kcmFpbmluZykgewotKyAgICAgIHNlbGYtPmRyYWluaW5nID0gRkFMU0U7Ci0rICAgICAgZ19jb25kX2Jyb2FkY2FzdCAoJnNlbGYtPmRyYWluX2NvbmQpOwotKyAgICB9Ci0gICAgIGdzdF9wYWRfcGF1c2VfdGFzayAoR1NUX1ZJREVPX0RFQ09ERVJfU1JDX1BBRCAoc2VsZikpOwotICAgICBzZWxmLT5kb3duc3RyZWFtX2Zsb3dfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7Ci0gICAgIHNlbGYtPnN0YXJ0ZWQgPSBGQUxTRTsKLSsgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5kcmFpbl9sb2NrKTsKLSAgICAgcmV0dXJuOwotICAgfQotIAotQEAgLTE1OTksOCArMTYwNiwxNCBAQCBmbG93X2Vycm9yOgotICAgICAgIHNlbGYtPnN0YXJ0ZWQgPSBGQUxTRTsKLSAgICAgfSBlbHNlIGlmIChmbG93X3JldCA9PSBHU1RfRkxPV19GTFVTSElORykgewotICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJGbHVzaGluZyAtLSBzdG9wcGluZyB0YXNrIik7Ci0rICAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+ZHJhaW5fbG9jayk7Ci0rICAgICAgaWYgKHNlbGYtPmRyYWluaW5nKSB7Ci0rICAgICAgICBzZWxmLT5kcmFpbmluZyA9IEZBTFNFOwotKyAgICAgICAgZ19jb25kX2Jyb2FkY2FzdCAoJnNlbGYtPmRyYWluX2NvbmQpOwotKyAgICAgIH0KLSAgICAgICBnc3RfcGFkX3BhdXNlX3Rhc2sgKEdTVF9WSURFT19ERUNPREVSX1NSQ19QQUQgKHNlbGYpKTsKLSAgICAgICBzZWxmLT5zdGFydGVkID0gRkFMU0U7Ci0rICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5kcmFpbl9sb2NrKTsKLSAgICAgfQotICAgICBHU1RfVklERU9fREVDT0RFUl9TVFJFQU1fVU5MT0NLIChzZWxmKTsKLSAgICAgcmV0dXJuOwotLS0gCi0xLjguMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgvMDAwNS1Eb24tdC1hYm9ydC1nc3Rfb214X3ZpZGVvX2RlY19zZXRfZm9ybWF0LWlmLXRoZXJlLXMtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC8wMDA1LURvbi10LWFib3J0LWdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQtaWYtdGhlcmUtcy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3YTg3NTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC8wMDA1LURvbi10LWFib3J0LWdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQtaWYtdGhlcmUtcy0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDEyMTAzODQyZDVmMzQ3Y2YyNDVlNzEwNzFkMGM0NDI5N2JjZGIxZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/RW5yaXF1ZT0yME9jYT1DMz1CMWE9MjBHb256PUMzPUExbGV6Pz0gPGVvY2FuaGFAaWdhbGlhLmNvbT4KLURhdGU6IEZyaSwgNCBEZWMgMjAxNSAxODozOTo1OSArMDEwMAotU3ViamVjdDogW1BBVENIXSBEb24ndCBhYm9ydCBnc3Rfb214X3ZpZGVvX2RlY19zZXRfZm9ybWF0KCkgaWYgdGhlcmUncyBhCi0gdGltZW91dCByZWxlYXNpbmcgdGhlIGJ1ZmZlcnMgdGFrZW4gYnkgdGhlIGVnbF9yZW5kZXIgb3V0IHBvcnQKLQotLS0tCi0gb214L2dzdG9teHZpZGVvZGVjLmMgfCA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvb214L2dzdG9teHZpZGVvZGVjLmMgYi9vbXgvZ3N0b214dmlkZW9kZWMuYwotaW5kZXggMjM2OGYzNC4uZGEzNWUwZCAxMDA2NDQKLS0tLSBhL29teC9nc3RvbXh2aWRlb2RlYy5jCi0rKysgYi9vbXgvZ3N0b214dmlkZW9kZWMuYwotQEAgLTE5MDUsOCArMTkwNSwxMSBAQCBnc3Rfb214X3ZpZGVvX2RlY19zZXRfZm9ybWF0IChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyLAotICAgICAgICAgICAgICAgNSAqIEdTVF9TRUNPTkQpICE9IE9NWF9FcnJvck5vbmUpCi0gICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgaWYgKGdzdF9vbXhfcG9ydF93YWl0X2J1ZmZlcnNfcmVsZWFzZWQgKG91dF9wb3J0LAotLSAgICAgICAgICAgICAgMSAqIEdTVF9TRUNPTkQpICE9IE9NWF9FcnJvck5vbmUpCi0rICAgICAgICAgICAgICAxICogR1NUX1NFQ09ORCkgIT0gT01YX0Vycm9yTm9uZSkgewotKyNpZiAhKGRlZmluZWQgKFVTRV9PTVhfVEFSR0VUX1JQSSkgJiYgZGVmaW5lZCAoSEFWRV9HU1RfR0wpKQotICAgICAgICAgcmV0dXJuIEZBTFNFOwotKyNlbmRpZgotKyAgICAgIH0KLSAgICAgICBpZiAoZ3N0X29teF9wb3J0X2RlYWxsb2NhdGVfYnVmZmVycyAoc2VsZi0+ZGVjX2luX3BvcnQpICE9IE9NWF9FcnJvck5vbmUpCi0gICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgaWYgKGdzdF9vbXhfdmlkZW9fZGVjX2RlYWxsb2NhdGVfb3V0cHV0X2J1ZmZlcnMgKHNlbGYpICE9IE9NWF9FcnJvck5vbmUpCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXglLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8lLmJiYXBwZW5kCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214JS5iYmFwcGVuZApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8lLmJiYXBwZW5kCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyX2dpdC5iYgppbmRleCBkYjAxZDc0Li4xZGY0MWE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllcl9naXQuYmIKQEAgLTcsNyArNyw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCiAKLURFUEVORFMgPSAibGlicGNyZSBsaWJhdiB2aXJ0dWFsL2VnbCBib29zdCBmcmVldHlwZSBkYnVzIG9wZW5zc2wgc2FtYmEgbGlic3NoIGxpYm9teGlsIGNvcmV1dGlscy1uYXRpdmUgY3VybC1uYXRpdmUiCitERVBFTkRTID0gImxpYnBjcmUgbGliYXYgdmlydHVhbC9lZ2wgYm9vc3QgZnJlZXR5cGUgZGJ1cyBvcGVuc3NsIGxpYnNzaCBsaWJvbXhpbCBjb3JldXRpbHMtbmF0aXZlIGN1cmwtbmF0aXZlIgogUFIgPSAicjQiCiAKIFNSQ1JFVl9kZWZhdWx0ID0gImI4ZmY1OWRjY2Q5MzA3ZjEwZGFkNzFiZWMyNTI1YTk1YmQ2YzYwM2IiCkBAIC00MCw2ICs0MCwxMSBAQAogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCiAKKyMgVGhpcyBpc24ndCB1c2VkIGRpcmVjdGx5IGJ5IG9teHBsYXllciwgYnV0IGFwcGxpZWQgdG8gTWFrZWZpbGUuZmZtcGVnIHdoaWNoCisjIHJ1bnMgdGhlIGZmbXBlZyBjb25maWd1cmF0aW9uCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tzYW1iYV0gPSAiLS1lbmFibGUtbGlic21iY2xpZW50LC0tZGlzYWJsZS1saWJzbWJjbGllbnQsc2FtYmEiCisKICMgTmVlZGVkIGluIGZmbXBlZyBjb25maWd1cmUKIGV4cG9ydCBURU1QRElSID0gIiR7U30vdG1wIgogCkBAIC02Niw2ICs3MSw4IEBACiAgICAgIyBOZWVkZWQgZm9yIGNvbXBpbGVyIHRlc3QgaW4gZmZtcGVnJ3MgY29uZmlndXJlCiAgICAgbWtkaXIgLXAgdG1wCiAKKyAgICBzZWQgLWkgJ3MvLS1lbmFibGUtbGlic21iY2xpZW50LyR7QGJiLnV0aWxzLmNvbnRhaW5zKCJQQUNLQUdFQ09ORklHIiwgInNhbWJhIiwgIi0tZW5hYmxlLWxpYnNtYmNsaWVudCIsICItLWRpc2FibGUtbGlic21iY2xpZW50IiwgZCl9L2cnIE1ha2VmaWxlLmZmbXBlZworCiAgICAgb2VfcnVubWFrZSAtZiBNYWtlZmlsZS5mZm1wZWcKICAgICBvZV9ydW5tYWtlIC1mIE1ha2VmaWxlLmZmbXBlZyBpbnN0YWxsCiAgICAgb2VfcnVubWFrZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtc2F0by93ZWJraXRndGsvd2Via2l0Z3RrXyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1zYXRvL3dlYmtpdGd0ay93ZWJraXRndGtfJS5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGNjOTZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtc2F0by93ZWJraXRndGsvd2Via2l0Z3RrXyUuYmJhcHBlbmQKQEAgLTAsMCArMSBAQAorRVhUUkFfT0VDTUFLRV9hcHBlbmRfcnBpID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJyAtRFVTRV9HU1RSRUFNRVJfR0w9T0ZGICcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvd2ljL3NkaW1hZ2UtcmFzcGJlcnJ5cGkud2tzIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3dpYy9zZGltYWdlLXJhc3BiZXJyeXBpLndrcwppbmRleCAzNTNkYWFjLi4wMWZiYWVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvd2ljL3NkaW1hZ2UtcmFzcGJlcnJ5cGkud2tzCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS93aWMvc2RpbWFnZS1yYXNwYmVycnlwaS53a3MKQEAgLTIsNSArMiw1IEBACiAjIGxvbmctZGVzY3JpcHRpb246IENyZWF0ZXMgYSBwYXJ0aXRpb25lZCBTRCBjYXJkIGltYWdlIGZvciB1c2Ugd2l0aAogIyBSYXNwYmVycnkgUGkuIEJvb3QgZmlsZXMgYXJlIGxvY2F0ZWQgaW4gdGhlIGZpcnN0IHZmYXQgcGFydGl0aW9uLgogCi1wYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctcGFydGl0aW9uIC0tb25kaXNrIG1tY2JsayAtLWZzdHlwZT12ZmF0IC0tbGFiZWwgYm9vdCAtLWFjdGl2ZSAtLWFsaWduIDQwOTYgLS1zaXplIDIwCi1wYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsayAtLWZzdHlwZT1leHQ0IC0tbGFiZWwgcm9vdCAtLWFsaWduIDQwOTYKK3BhcnQgL2Jvb3QgLS1zb3VyY2UgYm9vdGltZy1wYXJ0aXRpb24gLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT12ZmF0IC0tbGFiZWwgYm9vdCAtLWFjdGl2ZSAtLWFsaWduIDQwOTYgLS1zaXplIDIwCitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHJvb3QgLS1hbGlnbiA0MDk2CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL1JFQURNRQppbmRleCA3ZDg0MjMyLi5mMTNkZTA4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9SRUFETUUKQEAgLTQsNyArNCw3IEBACiBUaGlzIGxheWVyIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIFhlbiwgS1ZNLCBMaWJ2aXJ0LCBhbmQgYXNzb2NpYXRlZAogcGFja2FnZXMgbmVjZXNzYXJ5IGZvciBjb25zdHJ1Y3RpbmcgT0UtYmFzZWQgdmlydHVhbGl6ZWQgc29sdXRpb25zLgogCi1UaGUgYmJhcHBlbmQgZmlsZXMgZm9yIHNvbWUgcmVjaXBlIChlLmcuIGxpbnV4LXlvY3RvKSBpbiB0aGlzIGxheWVyIG5lZWRzIHRvCitUaGUgYmJhcHBlbmQgZmlsZXMgZm9yIHNvbWUgcmVjaXBlcyAoZS5nLiBsaW51eC15b2N0bykgaW4gdGhpcyBsYXllciBuZWVkIHRvCiBoYXZlICd2aXJ0dWFsaXphdGlvbicgaW4gRElTVFJPX0ZFQVRVUkVTIHRvIGhhdmUgZWZmZWN0LiBUbyBlbmFibGUgdGhlbSwgYWRkCiBpbiBjb25maWd1cmF0aW9uIGZpbGUgdGhlIGZvbGxvd2luZyBsaW5lLgogCkBAIC0yMyw4ICsyMywxNiBAQAogCiAgIFNLSVBfTUVUQV9WSVJUX1NBTklUWV9DSEVDSyA9IDEKIAotQWxzbyBub3RlIHRoYXQgdGhlcmUgYXJlIGt2bSBhbmQgeGVuIHNwZWNpZmljIGRpc3RybyBmbGFncy9mZWF0dXJlcyB0aGF0IGRlcGVuZGluZwotb24geW91ciB1c2UgY2FzZS4KK0RlcGVuZGluZyBvbiB5b3VyIHVzZSBjYXNlLCB0aGVyZSBhcmUgb3RoZXIgZGlzdHJvIGZlYXR1cmVzIGluIG1ldGEtdmlydHVhbGl6YXRpb24KK3RoYXQgbWF5IGFsc28gYmUgZW5hYmxlZDoKKworIC0geGVuOiBlbmFibGVzIHhlbiBmdW5jdGlvbmFsaXR5IGluIHZhcmlvdXMgcGFja2FnZXMgKGtlcm5lbCwgbGlidmlydCwgZXRjKQorIC0ga3ZtOiBlbmFibGVzIEtWTSBjb25maWd1cmF0aW9ucyBpbiB0aGUga2VybmVsIGFuZCBhdXRvbG9hZHMgbW9kdWxlcworIC0gYXVmczogZW5hYmxlcyBhdWZzIHN1cHBvcnQgaW4gZG9ja2VyIGFuZCBsaW51eC15b2N0bworIC0geDExOiBlbmFibGUgeGVuIGFuZCBsaWJ2aXJ0IGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byB4MTEKKyAtIHNlbGludXg6IGVuYWJsZXMgZnVuY3Rpb25hbGl0eSBpbiBsaWJ2aXJ0IGFuZCBseGMKKyAtIHN5c3RlbWQ6IGVuYWJsZSBzeXN0ZW1kIHNlcnZpY2VzIGFuZCB1bml0IGZpbGVzIChmb3IgcmVjaXBlcyBmb3Igc3VwcG9ydCkKKyAtIHN5c3Zpbml0OiBlbmFibGUgc3lzdmluaXQgc2NyaXB0cyAoZm9yIHJlY2lwZXMgd2l0aCBzdXBwb3J0KQogCiBEZXBlbmRlbmNpZXMKIC0tLS0tLS0tLS0tLQpAQCAtMzksMTQgKzQ3LDEwIEBACiBicmFuY2g6IG1hc3RlcgogcmV2aXNpb246IEhFQUQKIGxheWVyczogbWV0YS1vZQotCW1ldGEtbmV0d29ya2luZworICAgICAgICBtZXRhLW5ldHdvcmtpbmcKICAgICAgICAgbWV0YS1maWxlc3lzdGVtcwogICAgICAgICBtZXRhLXB5dGhvbgogCi1VUkk6IGdpdDovL2dpdGh1Yi5jb20vZXJyb3JkZXZlbG9wZXIvb2UtbWV0YS1nby5naXQKLWJyYW5jaDogbWFzdGVyCi1yZXZpc2lvbjogSEVBRAotCiBCQkZJTEVfUFJJT1JJVFlfb3BlbmVtYmVkZGVkLWxheWVyID0gIjQiCiAKIFJlcXVpcmVkIGZvciBYZW4gWFNNIHBvbGljeToKQEAgLTY0LDcgKzY4LDcgQEAKICAgICAgICAgICAgICBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAZ21haWwuY29tPgogCiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2luZyBzb21ldGhpbmcgbGlrZToKLSQgZ2l0IHNlbmQtZW1haWwgLTEgLS10byBtZXRhLXZpcnR1YWxpemF0aW9uQHlvY3RvcHJvamVjdC5vcmcgLS1zdWJqZWN0LXByZWZpeD0nbWV0YS12aXJ0dWFsaXphdGlvbl1bUEFUQ0gnCiskIGdpdCBzZW5kLWVtYWlsIC0xIC1NIC0tdG8gbWV0YS12aXJ0dWFsaXphdGlvbkB5b2N0b3Byb2plY3Qub3JnIC0tc3ViamVjdC1wcmVmaXg9J21ldGEtdmlydHVhbGl6YXRpb25dW1BBVENIJwogCiBMaWNlbnNlCiAtLS0tLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vY29uZi9kaXN0cm8vaW5jbHVkZS9tZXRhLXZpcnQtZGVmYXVsdC12ZXJzaW9ucy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vY29uZi9kaXN0cm8vaW5jbHVkZS9tZXRhLXZpcnQtZGVmYXVsdC12ZXJzaW9ucy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdlN2I5MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9jb25mL2Rpc3Ryby9pbmNsdWRlL21ldGEtdmlydC1kZWZhdWx0LXZlcnNpb25zLmluYwpAQCAtMCwwICsxLDkgQEAKKyMgTWV0YS12aXJ0dWFpbGl6YXRpb24gUFJFRkVSRURfVkVSU0lPTgorCitQUkVGRVJSRURfVkVSU0lPTl9weXRob24tYmxpbmtlciA9ICIxLjMiCitQUkVGRVJSRURfVkVSU0lPTl9weXRob24tZ2V2ZW50ID0gIjEuMC4xIgorUFJFRkVSUkVEX1ZFUlNJT05fcHl0aG9uLW0yY3J5cHRvID0gIjAuMjIuMyIKK1BSRUZFUlJFRF9WRVJTSU9OX3B5dGhvbi1weXlhbWwgPSAiMy4xMSIKK1BSRUZFUlJFRF9WRVJTSU9OX3B5dGhvbi1yZWRpcyA9ICIyLjEwLjMiCitQUkVGRVJSRURfVkVSU0lPTl9weXRob24tc3FsYWxjaGVteSA9ICIxLjEuNSIKK1BSRUZFUlJFRF9WRVJTSU9OX3B5dGhvbi13ZXJremV1ZyA9ICIwLjEwLjQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL2NvbmYvbGF5ZXIuY29uZgppbmRleCBmNzFjMTE3Li5mYTJlMDE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vY29uZi9sYXllci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9jb25mL2xheWVyLmNvbmYKQEAgLTE0LDE1ICsxNCwxNyBAQAogIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCiAjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCiBMQVlFUlZFUlNJT05fdmlydHVhbGl6YXRpb24tbGF5ZXIgPSAiMSIKLQorTEFZRVJTRVJJRVNfQ09NUEFUX3ZpcnR1YWxpemF0aW9uLWxheWVyID0gInN1bW8iCiBMQVlFUkRFUEVORFNfdmlydHVhbGl6YXRpb24tbGF5ZXIgPSAiY29yZSBuZXR3b3JraW5nLWxheWVyIgogCiAjIE92ZXJyaWRlIHNlY3VyaXR5IGZsYWdzCiByZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvdmlydF9zZWN1cml0eV9mbGFncy5pbmMKIAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvcnVuYyA/PSAicnVuYy1kb2NrZXIiCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9jb250YWluZXJkID89ICJjb250YWluZXJkLWRvY2tlciIKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2NvbnRhaW5lcmQgPz0gImNvbnRhaW5lcmQtb3BlbmNvbnRhaW5lcnMiCiAKICMgU2FuaXR5IGNoZWNrIGZvciBtZXRhLXZpcnR1YWxpemF0aW9uIGxheWVyLgogIyBTZXR0aW5nIFNLSVBfTUVUQV9WSVJUX1NBTklUWV9DSEVDSyB0byAiMSIgd291bGQgc2tpcCB0aGUgYmJhcHBlbmQgZmlsZXMgY2hlY2suCiBJTkhFUklUICs9ICJzYW5pdHktbWV0YS12aXJ0IgorCityZXF1aXJlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndmlydHVhbGl6YXRpb24nLCAnbWV0YS12aXJ0LWRlZmF1bHQtdmVyc2lvbnMuaW5jJywgJycsIGQpfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2NvbnRhaW5lcmQtb3BlbmNvbnRhaW5lcnNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2NvbnRhaW5lcmQtb3BlbmNvbnRhaW5lcnNfZ2l0LmJiCmluZGV4IDM3Zjg1NDcuLmM2YjRmNWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY29udGFpbmVyZC9jb250YWluZXJkLW9wZW5jb250YWluZXJzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NvbnRhaW5lcmQvY29udGFpbmVyZC1vcGVuY29udGFpbmVyc19naXQuYmIKQEAgLTEsOSArMSwxMSBAQAorU1JDUkVWID0gImNmZDA0Mzk2ZGM2ODIyMGQxY2VjYmU2ODZhNmNjM2FhNWNlMzY2N2MiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY29udGFpbmVyZC9jb250YWluZXJkO25vYnJhbmNoPTEgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC11c2Utb2UtcHJvdmlkZWQtR08tYW5kLWZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAiCisKIGluY2x1ZGUgY29udGFpbmVyZC5pbmMKIAotU1JDUkVWID0gIjBhYzNjZDFiZTE3MGQxODBiMmJhZWQ3NTVlOGYwZGE1NDdjZWIyNjciCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZG9ja2VyL2NvbnRhaW5lcmQuZ2l0O25vYnJhbmNoPTEgXAotICAgICAgICAgICIKLUNPTlRBSU5FUkRfVkVSU0lPTiA9ICIwLjIuMiIKK0NPTlRBSU5FUkRfVkVSU0lPTiA9ICJ2MS4wLjIiCiAKIFBST1ZJREVTICs9ICJ2aXJ0dWFsL2NvbnRhaW5lcmQiCiBSUFJPVklERVNfJHtQTn0gPSAidmlydHVhbC9jb250YWluZXJkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2NvbnRhaW5lcmQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2NvbnRhaW5lcmQuaW5jCmluZGV4IGU3YTM3MTkuLmViNDdjYzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY29udGFpbmVyZC9jb250YWluZXJkLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NvbnRhaW5lcmQvY29udGFpbmVyZC5pbmMKQEAgLTYsNyArNiw3IEBACiAKICMgQXBhY2hlLTIuMCBmb3IgY29udGFpbmVyZAogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5jb2RlO21kNT1hYWRjMzBmOWMxNGQ4NzZkZWQ3YmVkYzBhZmQyZDNkNyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9pbXBvcnQvTElDRU5TRS5jb2RlO21kNT1hYWRjMzBmOWMxNGQ4NzZkZWQ3YmVkYzBhZmQyZDNkNyIKIAogU1JDX1VSSSArPSAiZmlsZTovL2NvbnRhaW5lcmQuc2VydmljZSIKIApAQCAtMTcsNiArMTcsOCBAQAogaW5oZXJpdCBnbwogaW5oZXJpdCBnb2FyY2gKIAorR09fSU1QT1JUID0gImltcG9ydCIKKwogUlJFQ09NTUVORFNfJHtQTn0gPSAibHhjIGRvY2tlciIKIENPTlRBSU5FUkRfUEtHPSJnaXRodWIuY29tL2NvbnRhaW5lcmQvY29udGFpbmVyZCIKIApAQCAtMjUsMzAgKzI3LDM3IEBACiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCiBkb19jb21waWxlKCkgewotCSMgU2V0IEdPUEFUSC4gU2VlICdQQUNLQUdFUlMubWQnLiBEb24ndCByZWx5IG9uCi0JIyBkb2NrZXIgdG8gZG93bmxvYWQgaXRzIGRlcGVuZGVuY2llcyBidXQgcmF0aGVyCi0JIyB1c2UgZGVwZW5kZW5jaWVzIHBhY2thZ2VkIGluZGVwZW5kZW50bHkuCi0JY2QgJHtTfQotCXJtIC1yZiAuZ29wYXRoCi0JbWtkaXIgLXAgLmdvcGF0aC9zcmMvIiQoZGlybmFtZSAiJHtDT05UQUlORVJEX1BLR30iKSIKLQlsbiAtc2YgLi4vLi4vLi4vLi4gLmdvcGF0aC9zcmMvIiR7Q09OVEFJTkVSRF9QS0d9IgorICAgIGV4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCiAKLSAgICAgICAgZXhwb3J0IEdPUEFUSD0iJHtXT1JLRElSfS9naXQvIgotICAgICAgICBleHBvcnQgR09ST09UPSIke1NUQUdJTkdfTElCRElSX05BVElWRX0vJHtUQVJHRVRfU1lTfS9nbyIKKyAgICAjIGxpbmsgZml4dXBzIGZvciBjb21waWxhdGlvbgorICAgIHJtIC1mICR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjCisgICAgbG4gLXNmIC4vICR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjCiAKLQkjIFBhc3MgdGhlIG5lZWRlZCBjZmxhZ3MvbGRmbGFncyBzbyB0aGF0IGNnbwotCSMgY2FuIGZpbmQgdGhlIG5lZWRlZCBoZWFkZXJzIGZpbGVzIGFuZCBsaWJyYXJpZXMKLQlleHBvcnQgR09BUkNIPSIke1RBUkdFVF9HT0FSQ0h9IgotCWV4cG9ydCBDR09fRU5BQkxFRD0iMSIKLQlleHBvcnQgQ0ZMQUdTPSIiCi0JZXhwb3J0IExERkxBR1M9IiIKLQlleHBvcnQgQ0dPX0NGTEFHUz0iJHtCVUlMRFNES19DRkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCi0JZXhwb3J0IENHT19MREZMQUdTPSIke0JVSUxEU0RLX0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCi0gICAgICAgIGV4cG9ydCBHT19HQ0ZMQUdTPSIiCi0JZXhwb3J0IENDX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKLQlleHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKyAgICBta2RpciAtcCAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYy9naXRodWIuY29tL2NvbnRhaW5lcmQvY29udGFpbmVyZC8KKyAgICAjIHdpdGhvdXQgdGhpcywgdGhlIHN0cmVzcyB0ZXN0IHBhcnRzIG9mIHRoZSBidWlsZCBmYWlsCisgICAgY3AgJHtTfS9zcmMvaW1wb3J0LyouZ28gJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMvZ2l0aHViLmNvbS9jb250YWluZXJkL2NvbnRhaW5lcmQKIAotICAgICAgICBvZV9ydW5tYWtlIHN0YXRpYworICAgIGZvciBjIGluIGNvbnRlbnQgZXJyZGVmcyBmcyBpbWFnZXMgbW91bnQgc25hcHNob3RzIGxpbnV4IGFwaSBydW50aW1lcyBkZWZhdWx0cyBwcm9ncmVzcyBcCisJCSAgICAgcHJvdG9idWYgcmVmZXJlbmNlIGRpZmYgcGxhdGZvcm1zIHJ1bnRpbWUgcmVtb3RlcyB2ZXJzaW9uIGFyY2hpdmUgZGlhbGVyIGdjIG1ldGFkYXRhIFwKKwkJICAgICBtZXRyaWNzIGZpbHRlcnMgaWRlbnRpZmllcnMgbGFiZWxzIGxlYXNlcyBwbHVnaW4gc2VydmVyIHNlcnZpY2VzIFwKKwkJICAgICBjbWQgY2lvIGNvbnRhaW5lcnMgbmFtZXNwYWNlcyBvY2kgZXZlbnRzIGxvZyByZWFwZXIgc3lzIHJvb3RmczsgZG8KKwlsbiAtc2ZuICR7U30vc3JjL2ltcG9ydC8ke2N9ICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9jb250YWluZXJkL2NvbnRhaW5lcmQvJHtjfQorICAgIGRvbmUKKworICAgIGV4cG9ydCBHT1BBVEg9IiR7U30vc3JjL2ltcG9ydC8uZ29wYXRoOiR7U30vc3JjL2ltcG9ydC92ZW5kb3I6JHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7cHJlZml4fS9sb2NhbC9nbyIKKyAgICBleHBvcnQgR09ST09UPSIke1NUQUdJTkdfRElSX05BVElWRX0vJHtub25hcmNoX2xpYmRpcn0vJHtIT1NUX1NZU30vZ28iCisKKyAgICAjIFBhc3MgdGhlIG5lZWRlZCBjZmxhZ3MvbGRmbGFncyBzbyB0aGF0IGNnbworICAgICMgY2FuIGZpbmQgdGhlIG5lZWRlZCBoZWFkZXJzIGZpbGVzIGFuZCBsaWJyYXJpZXMKKyAgICBleHBvcnQgQ0dPX0VOQUJMRUQ9IjEiCisgICAgZXhwb3J0IENHT19DRkxBR1M9IiR7Q0ZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorICAgIGV4cG9ydCBDR09fTERGTEFHUz0iJHtMREZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorICAgIGV4cG9ydCBCVUlMRFRBR1M9Im5vX2J0cmZzIHN0YXRpY19idWlsZCBuZXRnbyIKKyAgICBleHBvcnQgQ0ZMQUdTPSIke0NGTEFHU30iCisgICAgZXhwb3J0IExERkxBR1M9IiR7TERGTEFHU30iCisKKyAgICBjZCAke1N9L3NyYy9pbXBvcnQKKyAgICBvZV9ydW5tYWtlIGJpbmFyaWVzCiB9CiAKICMgTm90ZTogZGlzYWJsZWQgZm9yIG5vdywgc2luY2UgZG9ja2VyIGlzIGxhdW5jaGluZyBjb250YWluZXJkCkBAIC01OSw5ICs2OCw5IEBACiBkb19pbnN0YWxsKCkgewogCW1rZGlyIC1wICR7RH0vJHtiaW5kaXJ9CiAKLQljcCAke1N9L2Jpbi9jb250YWluZXJkICR7RH0vJHtiaW5kaXJ9L2NvbnRhaW5lcmQKLQljcCAke1N9L2Jpbi9jb250YWluZXJkLXNoaW0gJHtEfS8ke2JpbmRpcn0vY29udGFpbmVyZC1zaGltCi0gICAgICAgIGNwICR7U30vYmluL2N0ciAke0R9LyR7YmluZGlyfS9jb250YWluZXJkLWN0cgorCWNwICR7U30vc3JjL2ltcG9ydC9iaW4vY29udGFpbmVyZCAke0R9LyR7YmluZGlyfS9jb250YWluZXJkCisJY3AgJHtTfS9zcmMvaW1wb3J0L2Jpbi9jb250YWluZXJkLXNoaW0gJHtEfS8ke2JpbmRpcn0vY29udGFpbmVyZC1zaGltCisJY3AgJHtTfS9zcmMvaW1wb3J0L2Jpbi9jdHIgJHtEfS8ke2JpbmRpcn0vY29udGFpbmVyZC1jdHIKIAkKIAlsbiAtc2YgY29udGFpbmVyZCAke0R9LyR7YmluZGlyfS9kb2NrZXItY29udGFpbmVyZAogCWxuIC1zZiBjb250YWluZXJkLXNoaW0gJHtEfS8ke2JpbmRpcn0vZG9ja2VyLWNvbnRhaW5lcmQtc2hpbQpAQCAtNzgsMyArODcsNCBAQAogRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vKiIKIAogSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCitJTlNBTkVfU0tJUF8ke1BOfSArPSAibGRmbGFncyBhbHJlYWR5LXN0cmlwcGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2ZpbGVzLzAwMDEtYnVpbGQtdXNlLW9lLXByb3ZpZGVkLUdPLWFuZC1mbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY29udGFpbmVyZC9maWxlcy8wMDAxLWJ1aWxkLXVzZS1vZS1wcm92aWRlZC1HTy1hbmQtZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVhOTg0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY29udGFpbmVyZC9maWxlcy8wMDAxLWJ1aWxkLXVzZS1vZS1wcm92aWRlZC1HTy1hbmQtZmxhZ3MucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBlMzFhY2VmMjkwMTgxNDM0ZWZhZjQ3ZTcwZGI3YWQwZDkyZGJlMzAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDE5IEFwciAyMDE4IDE3OjA5OjUxIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiB1c2Ugb2UgcHJvdmlkZWQgR08gYW5kIGZsYWdzCisKK1NpZ25lZC1vZmYtYnk6IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaW1wb3J0L01ha2VmaWxlIGIvc3JjL2ltcG9ydC9NYWtlZmlsZQoraW5kZXggOWQ4Y2Y4YTE4ZmJjLi40OTJkMDMzZmUyYTcgMTAwNjQ0CistLS0gYS9zcmMvaW1wb3J0L01ha2VmaWxlCisrKysgYi9zcmMvaW1wb3J0L01ha2VmaWxlCitAQCAtMTM0LDcgKzEzNCw3IEBAIGJpbi8lOiBjbWQvJSBGT1JDRQorIAorIGJpbi9jb250YWluZXJkLXNoaW06IGNtZC9jb250YWluZXJkLXNoaW0gRk9SQ0UgIyBzZXQgIWNnbyBhbmQgb21pdCBwaWUgZm9yIGEgc3RhdGljIHNoaW0gYnVpbGQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmcvZ28vaXNzdWVzLzE3Nzg5I2lzc3VlY29tbWVudC0yNTg1NDIyMjAKKyAJQGVjaG8gIiQoV0hBTEUpIGJpbi9jb250YWluZXJkLXNoaW0iCistCUBDR09fRU5BQkxFRD0wIGdvIGJ1aWxkIC1vIGJpbi9jb250YWluZXJkLXNoaW0gJHtTSElNX0dPX0xERkxBR1N9ICR7R09fVEFHU30gLi9jbWQvY29udGFpbmVyZC1zaGltCisrCUAkKEdPKSBidWlsZCAtbyBiaW4vY29udGFpbmVyZC1zaGltICR7U0hJTV9HT19MREZMQUdTfSAkKEdPQlVJTERGTEFHUykgJHtHT19UQUdTfSAuL2NtZC9jb250YWluZXJkLXNoaW0KKyAKKyBiaW5hcmllczogJChCSU5BUklFUykgIyMgYnVpbGQgYmluYXJpZXMKKyAJQGVjaG8gIiQoV0hBTEUpICRAIgorLS0gCisyLjQuMC41My5nODQ0MGY3NAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvY3JpdV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvY3JpdV9naXQuYmIKaW5kZXggM2EwMjEwMy4uN2Q2MmYzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2NyaXVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9jcml1X2dpdC5iYgpAQCAtMjEsNiArMjEsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMi1jcml1LVNraXAtZG9jdW1lbnRhdGlvbi1pbnN0YWxsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY3JpdS1DaGFuZ2UtbGlicmFyaWVzLWluc3RhbGwtZGlyZWN0b3J5LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2xpYi1NYWtlZmlsZS1vdmVyd3JpdGUtaW5zdGFsbC1saWItdG8tYWxsb3ctbXVsdGlhcmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWJ1aWxkaW5nLW9uLW5ld2VzdC1nbGliYy1hbmQta2VybmVsLnBhdGNoIFwKICAgICAgICAgICAiCiAKIENPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgpAQCAtNTcsNiArNTgsOCBAQAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLCxsaWJzZWxpbnV4IgogCitDTEVBTkJST0tFTiA9ICIxIgorCiBkb19jb21waWxlX3ByZXBlbmQoKSB7CiAgICAgcm0gLXJmICR7U30vaW1hZ2VzL2dvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvCiAgICAgbG4gLXMgICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0vdXNyL2luY2x1ZGUvZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8gJHtTfS9pbWFnZXMvZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy8wMDAxLWNyaXUtQ2hhbmdlLWxpYnJhcmllcy1pbnN0YWxsLWRpcmVjdG9yeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy8wMDAxLWNyaXUtQ2hhbmdlLWxpYnJhcmllcy1pbnN0YWxsLWRpcmVjdG9yeS5wYXRjaAppbmRleCA0OTA4ZTQ3Li5hZmIxMzMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvMDAwMS1jcml1LUNoYW5nZS1saWJyYXJpZXMtaW5zdGFsbC1kaXJlY3RvcnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzLzAwMDEtY3JpdS1DaGFuZ2UtbGlicmFyaWVzLWluc3RhbGwtZGlyZWN0b3J5LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3ODM5MDMwNTgyOTMxNjYzM2FjZWUyY2E1NjA3MzMxYjBlMzdhMTA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmNjRmYmNhNzBlNjA0OWRhZDNjNDA0ZDg3MWYyMzgzZDk3NzI1ZDJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KIERhdGU6IEZyaSwgOCBTZXAgMjAxNyAxNToxMTozMSAtMDQwMAogU3ViamVjdDogW1BBVENIXSBjcml1OiBDaGFuZ2UgbGlicmFyaWVzIGluc3RhbGwgZGlyZWN0b3J5CkBAIC03LDEyICs3LDEzIEBACiAKIFNpZ25lZC1vZmYtYnk6IEppYW5jaHVhbiBXYW5nIDxqaWFuY2h1YW4ud2FuZ0B3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUuaW5zdGFsbCB8IDEzIC0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMTMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbnN0YWxsIGIvTWFrZWZpbGUuaW5zdGFsbAotaW5kZXggMzk4N2JjYy4uNzNkOThhNCAxMDA2NDQKK2luZGV4IDFkZWYzY2YuLmQwMjBlZWYgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5pbnN0YWxsCiArKysgYi9NYWtlZmlsZS5pbnN0YWxsCiBAQCAtOSwxOSArOSw2IEBAIExJQkVYRUNESVIJPz0gJChQUkVGSVgpL2xpYmV4ZWMKQEAgLTM1LDYgKzM2LDMgQEAKICAjIExJQkRJUiBmYWxscyBiYWNrIHRvIHRoZSBzdGFuZGFyZCBwYXRoLgogIExJQkRJUiA/PSAkKFBSRUZJWCkvbGliCiAgCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy8wMDAxLWNyaXUtRml4LXRvb2xjaGFpbi1oYXJkY29kZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy8wMDAxLWNyaXUtRml4LXRvb2xjaGFpbi1oYXJkY29kZS5wYXRjaAppbmRleCBkYzViODk3Li5kMWYxMzZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvMDAwMS1jcml1LUZpeC10b29sY2hhaW4taGFyZGNvZGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzLzAwMDEtY3JpdS1GaXgtdG9vbGNoYWluLWhhcmRjb2RlLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhZjY3OTg1M2E0NWZlNjNmNjgwYzk5ZTcwNDE2YzhhYzYyMGQyM2I4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjMDA1YjdhNDg3NGY1NWRmNjg3ZmYyMmJjNDI1NTUxNzc1NTgxNDIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KIERhdGU6IEZyaSwgOCBTZXAgMjAxNyAxNTowMjoxNCAtMDQwMAogU3ViamVjdDogW1BBVENIXSBjcml1OiBGaXggdG9vbGNoYWluIGhhcmRjb2RlCkBAIC05LDYgKzksNyBAQAogU2lnbmVkLW9mZi1ieTogWWFuZyBTaGkgPHlhbmcuc2hpQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBKaWFuY2h1YW4gV2FuZyA8amlhbmNodWFuLndhbmdAd2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CisKIC0tLQogIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAgc2NyaXB0cy9ubWsvc2NyaXB0cy9pbmNsdWRlLm1rIHwgIDIgKy0KQEAgLTk2LDYgKzk3LDMgQEAKICAKICBleHBvcnQgUk0gSE9TVExEIExEIEhPU1RDQyBDQyBDUFAgQVMgQVIgU1RSSVAgT0JKQ09QWSBPQkpEVU1QCiAgZXhwb3J0IE5NIFNIIE1BS0UgTUtESVIgQVdLIFBFUkwgUFlUSE9OIFNIIENTQ09QRQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvMDAwMi1jcml1LVNraXAtZG9jdW1lbnRhdGlvbi1pbnN0YWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzLzAwMDItY3JpdS1Ta2lwLWRvY3VtZW50YXRpb24taW5zdGFsbC5wYXRjaAppbmRleCBiYTQxNGQ5Li5hZjQ1ZGI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvMDAwMi1jcml1LVNraXAtZG9jdW1lbnRhdGlvbi1pbnN0YWxsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy8wMDAyLWNyaXUtU2tpcC1kb2N1bWVudGF0aW9uLWluc3RhbGwucGF0Y2gKQEAgLTEsMjEgKzEsMjIgQEAKLUZyb20gMDdkOWIzZDBjMzcyZTQ1MTI3ZGQ1MTc4MWQ5NTY0ZThiZWU5MGRiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDVkNzRhZThhMzE0YzQ4MTM5OGJhOTFhMzY5N2ZmYmQwNzRjZDk4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEppYW5jaHVhbiBXYW5nIDxqaWFuY2h1YW4ud2FuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxNiBBdWcgMjAxNiAwOTo0MjoyNCArMDgwMAotU3ViamVjdDogW1BBVENIIDIvMl0gY3JpdTogU2tpcCBkb2N1bWVudGF0aW9uIGluc3RhbGwKK1N1YmplY3Q6IFtQQVRDSF0gY3JpdTogU2tpcCBkb2N1bWVudGF0aW9uIGluc3RhbGwKIAogYXNjaWlkb2MgaXMgbmVlZGVkIHRvIGdlbmVyYXRlIENSSVUgZG9jdW1lbnRhdGlvbiwgc28gc2tpcCBpdCBpbiBpbnN0YWxsLgogCiBTaWduZWQtb2ZmLWJ5OiBKaWFuY2h1YW4gV2FuZyA8amlhbmNodWFuLndhbmdAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUuaW5zdGFsbCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluc3RhbGwgYi9NYWtlZmlsZS5pbnN0YWxsCi1pbmRleCBhMzBkYzk2Li4zMzE0M2ZiIDEwMDY0NAoraW5kZXggMzk4N2JjYy4uMWRlZjNjZiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmluc3RhbGwKICsrKyBiL01ha2VmaWxlLmluc3RhbGwKLUBAIC0yMiw3ICsyMiw3IEBAIGluc3RhbGwtdHJlZToKLSAuUEhPTlk6IGluc3RhbGwtdHJlZQorQEAgLTI5LDcgKzI5LDcgQEAgZXhwb3J0IFBSRUZJWCBCSU5ESVIgU0JJTkRJUiBNQU5ESVIgUlVORElSCisgZXhwb3J0IExJQkRJUiBJTkNMVURFRElSIExJQkVYRUNESVIKICAKICBpbnN0YWxsLW1hbjoKIC0JJChRKSAkKE1BS0UpIC1DIERvY3VtZW50YXRpb24gaW5zdGFsbApAQCAtMjMsNiArMjQsMyBAQAogIC5QSE9OWTogaW5zdGFsbC1tYW4KICAKICBpbnN0YWxsLWxpYjogbGliCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy9maXgtYnVpbGRpbmctb24tbmV3ZXN0LWdsaWJjLWFuZC1rZXJuZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvZml4LWJ1aWxkaW5nLW9uLW5ld2VzdC1nbGliYy1hbmQta2VybmVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNjFhZGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvZml4LWJ1aWxkaW5nLW9uLW5ld2VzdC1nbGliYy1hbmQta2VybmVsLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gYjU5OTQ3MDA3MzYyYjUzZTlmNDFmMWU1YTMzMDcxZGVkZjFjNTlhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFkcmlhbiBSZWJlciA8YXJlYmVyQHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDI4IFNlcCAyMDE3IDA5OjEzOjMzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBidWlsZGluZyBvbiBuZXdlc3QgZ2xpYmMgYW5kIGtlcm5lbAorCitPbiBGZWRvcmEgcmF3aGlkZSB3aXRoIGtlcm5lbC1oZWFkZXJzLTQuMTQuMC0wLnJjMi5naXQwLjEuZmMyOC54ODZfNjQKK2dsaWJjLWRldmVsLTIuMjYuOTAtMTUuZmMyOC54ODZfNjQgY3JpdSBkb2VzIG5vdCBidWlsZCBhbnkgbW9yZToKKworSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9saW51eC9haW9fYWJpLmg6MzE6MCwKKyAgICAgICAgICAgICAgICAgZnJvbSBjcml1L2NyLWNoZWNrLmM6MjQ6CisvdXNyL2luY2x1ZGUvc3lzL21vdW50Lmg6MzU6MzogZXJyb3I6IGV4cGVjdGVkIGlkZW50aWZpZXIgYmVmb3JlIG51bWVyaWMgY29uc3RhbnQKKyAgIE1TX1JET05MWSA9IDEsICAvKiBNb3VudCByZWFkLW9ubHkuICAqLworICAgXgorbWFrZVsyXTogKioqIFsvYnVpbGRkaXIvYnVpbGQvQlVJTEQvY3JpdS0zLjUvc2NyaXB0cy9ubWsvc2NyaXB0cy9idWlsZC5tazoxMTE6IGNyaXUvY3ItY2hlY2sub10gRXJyb3IgMQorbWFrZVsxXTogKioqIFtjcml1L01ha2VmaWxlOjczOiBjcml1L2J1aWx0LWluLm9dIEVycm9yIDIKK21ha2U6ICoqKiBbTWFrZWZpbGU6MjMzOiBjcml1XSBFcnJvciAyCisKK1RoaXMgc2ltcGxlIHJlLW9yZGVyaW5nIG9mIGluY2x1ZGVzIGZpeGVzIGl0IGZvciBtZS4KKworU2lnbmVkLW9mZi1ieTogQWRyaWFuIFJlYmVyIDxhcmViZXJAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFuZHJlaSBWYWdpbiA8YXZhZ2luQHZpcnR1b3p6by5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vY2hlY2twb2ludC1yZXN0b3JlL2NyaXUvY29tbWl0L2Y0MWUzODZkNGQ0MGUzZTI2YjBjZmRjODVhODEyYjdlZGIzMzdmMWQjZGlmZi1jYzg0N2IxY2M5NzUzNThjNjU4MjU5NWJlOTJkNDhkYl0KKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorCistLS0KKyBjcml1L2NyLWNoZWNrLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jcml1L2NyLWNoZWNrLmMgYi9jcml1L2NyLWNoZWNrLmMKK2luZGV4IDFkZDg4N2EuLjkzZGYyYWIgMTAwNjQ0CistLS0gYS9jcml1L2NyLWNoZWNrLmMKKysrKyBiL2NyaXUvY3ItY2hlY2suYworQEAgLTIxLDggKzIxLDggQEAKKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KKyAjaW5jbHVkZSA8c2NoZWQuaD4KKy0jaW5jbHVkZSA8bGludXgvYWlvX2FiaS5oPgorICNpbmNsdWRlIDxzeXMvbW91bnQuaD4KKysjaW5jbHVkZSA8bGludXgvYWlvX2FiaS5oPgorIAorICNpbmNsdWRlICIuLi9zb2Njci9zb2Njci5oIgorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzL2xpYi1NYWtlZmlsZS1vdmVyd3JpdGUtaW5zdGFsbC1saWItdG8tYWxsb3ctbXVsdGlhcmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvbGliLU1ha2VmaWxlLW92ZXJ3cml0ZS1pbnN0YWxsLWxpYi10by1hbGxvdy1tdWx0aWFyYy5wYXRjaAppbmRleCBjMjUxMmEwLi41OWU3YmNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvbGliLU1ha2VmaWxlLW92ZXJ3cml0ZS1pbnN0YWxsLWxpYi10by1hbGxvdy1tdWx0aWFyYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvbGliLU1ha2VmaWxlLW92ZXJ3cml0ZS1pbnN0YWxsLWxpYi10by1hbGxvdy1tdWx0aWFyYy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gODlmOWI4NzkwNGJkMzEyYjgxN2ZmYWE3ZDgzYWJmZDVlODRkNzIzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNmNhZjkwNTkyZDYxYzhjNDViMzJjYjdmZjc2NzA5ZjkzMjYwMzBlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CiBEYXRlOiBGcmksIDggU2VwIDIwMTcgMTU6NDA6NDkgLTA0MDAKIFN1YmplY3Q6IFtQQVRDSF0gbGliL01ha2VmaWxlOiBvdmVyd3JpdGUgaW5zdGFsbC1saWIsIHRvIGFsbG93IG11bHRpYXJjaApAQCAtOCw2ICs4LDcgQEAKIElOU1RBTExfTElCLgogCiBTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBsaWIvTWFrZWZpbGUgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCkBAIC0yNSw2ICsyNiwzIEBACiAgLlBIT05ZOiBpbnN0YWxsCiAgCiAgdW5pbnN0YWxsOgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci1jb21wb3NlL3B5dGhvbjMtZG9ja2VyLWNvbXBvc2VfMS4xNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXItY29tcG9zZS9weXRob24zLWRvY2tlci1jb21wb3NlXzEuMTYuMS5iYgppbmRleCA0ZTc2MWQwLi44NTFjMjUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci1jb21wb3NlL3B5dGhvbjMtZG9ja2VyLWNvbXBvc2VfMS4xNi4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyLWNvbXBvc2UvcHl0aG9uMy1kb2NrZXItY29tcG9zZV8xLjE2LjEuYmIKQEAgLTE5LDcgKzE5LDYgQEAKICAgJHtQWVRIT05fUE59LWRvY2tlci1weWNyZWRzIFwKICAgJHtQWVRIT05fUE59LWRvY2tlcnB0eSBcCiAgICR7UFlUSE9OX1BOfS1kb2NvcHQgXAotICAke1BZVEhPTl9QTn0tZW51bSBcCiAgICR7UFlUSE9OX1BOfS1pZG5hIFwKICAgJHtQWVRIT05fUE59LWpzb25zY2hlbWEgXAogICAke1BZVEhPTl9QTn0tcHl5YW1sIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2RvY2tlci1jZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci9kb2NrZXItY2VfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZmRhNWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci9kb2NrZXItY2VfZ2l0LmJiCkBAIC0wLDAgKzEsMTcyIEBACitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRvY2tlci5jb20iCitTVU1NQVJZID0gIkxpbnV4IGNvbnRhaW5lciBydW50aW1lIgorREVTQ1JJUFRJT04gPSAiTGludXggY29udGFpbmVyIHJ1bnRpbWUgXAorIERvY2tlciBjb21wbGVtZW50cyBrZXJuZWwgbmFtZXNwYWNpbmcgd2l0aCBhIGhpZ2gtbGV2ZWwgQVBJIHdoaWNoIFwKKyBvcGVyYXRlcyBhdCB0aGUgcHJvY2VzcyBsZXZlbC4gSXQgcnVucyB1bml4IHByb2Nlc3NlcyB3aXRoIHN0cm9uZyBcCisgZ3VhcmFudGVlcyBvZiBpc29sYXRpb24gYW5kIHJlcGVhdGFiaWxpdHkgYWNyb3NzIHNlcnZlcnMuIFwKKyAuIFwKKyBEb2NrZXIgaXMgYSBncmVhdCBidWlsZGluZyBibG9jayBmb3IgYXV0b21hdGluZyBkaXN0cmlidXRlZCBzeXN0ZW1zOiBcCisgbGFyZ2Utc2NhbGUgd2ViIGRlcGxveW1lbnRzLCBkYXRhYmFzZSBjbHVzdGVycywgY29udGludW91cyBkZXBsb3ltZW50IFwKKyBzeXN0ZW1zLCBwcml2YXRlIFBhYVMsIHNlcnZpY2Utb3JpZW50ZWQgYXJjaGl0ZWN0dXJlcywgZXRjLiBcCisgLiBcCisgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBkYWVtb24gYW5kIGNsaWVudC4gVXNpbmcgZG9ja2VyLmlvIGlzIFwKKyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBvbiB4ODZfNjQgYW5kIGFybSAoMzItYml0KSBob3N0cy4gXAorIE90aGVyIGFyY2hpdGVjdHVyZXMgYXJlIGNvbnNpZGVyZWQgZXhwZXJpbWVudGFsLiBcCisgLiBcCisgQWxzbywgbm90ZSB0aGF0IGtlcm5lbCB2ZXJzaW9uIDMuMTAgb3IgYWJvdmUgaXMgcmVxdWlyZWQgZm9yIHByb3BlciBcCisgb3BlcmF0aW9uIG9mIHRoZSBkYWVtb24gcHJvY2VzcywgYW5kIHRoYXQgYW55IGxvd2VyIHZlcnNpb25zIG1heSBoYXZlIFwKKyBzdWJ0bGUgYW5kL29yIGdsYXJpbmcgaXNzdWVzLiBcCisgIgorCitTUkNSRVZfZG9ja2VyID0gIjA1MjBlMjQzMDI5ZDEzNjE2NDlhZmIwNzA2YTFjNWQ5YTFjMDEyYjgiCitTUkNSRVZfbGlibmV0d29yayA9ICI0Y2IzOGMyOTg3YzIzNmRjZTAzYzg2OGQ5OWI1N2IxZTI4YTRiODFjIgorU1JDUkVWX2NsaSA9ICIwZjFiYjM1MzQyM2U0NWUwMjMxNWU5ODViZDlkZGViZTZkYTE4NDU3IgorU1JDX1VSSSA9ICJcCisJZ2l0Oi8vZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyLWNlLmdpdDtub2JyYW5jaD0xO25hbWU9ZG9ja2VyIFwKKwlnaXQ6Ly9naXRodWIuY29tL2RvY2tlci9saWJuZXR3b3JrLmdpdDticmFuY2g9bWFzdGVyO25hbWU9bGlibmV0d29yaztkZXN0c3VmZml4PWxpYm5ldHdvcmsgXAorCWdpdDovL2dpdGh1Yi5jb20vZG9ja2VyL2NsaTticmFuY2g9bWFzdGVyO25hbWU9Y2xpO2Rlc3RzdWZmaXg9Y2xpIFwKKwlmaWxlOi8vZG9ja2VyLmluaXQgXAorCWZpbGU6Ly9oaS5Eb2NrZXJmaWxlIFwKKwkiCisKKyMgQXBhY2hlLTIuMCBmb3IgZG9ja2VyCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvaW1wb3J0L2NvbXBvbmVudHMvZW5naW5lL0xJQ0VOU0U7bWQ1PTk3NDBkMDkzYTA4MDUzMGI1YzVjNjU3M2RmOWFmNDVhIgorCitHT19JTVBPUlQgPSAiaW1wb3J0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitET0NLRVJfVkVSU0lPTiA9ICIxOC4wMy4wLWNlIgorUFYgPSAiJHtET0NLRVJfVkVSU0lPTn0rZ2l0JHtTUkNSRVZfZG9ja2VyfSIKKworREVQRU5EUyA9ICIgXAorICAgIGdvLWNsaSBcCisgICAgZ28tcHR5IFwKKyAgICBnby1jb250ZXh0IFwKKyAgICBnby1tdXggXAorICAgIGdvLXBhdHJpY2lhIFwKKyAgICBnby1sb2dydXMgXAorICAgIGdvLWZzbm90aWZ5IFwKKyAgICBnby1kYnVzIFwKKyAgICBnby1jYXBhYmlsaXR5IFwKKyAgICBnby1zeXN0ZW1kIFwKKyAgICBidHJmcy10b29scyBcCisgICAgc3FsaXRlMyBcCisgICAgZ28tZGlzdHJpYnV0aW9uIFwKKyAgICBjb21wb3NlLWZpbGUgXAorICAgIGdvLWNvbm5lY3Rpb25zIFwKKyAgICBub3RhcnkgXAorICAgIGdycGMtZ28gXAorICAgIGxpYnRvb2wtbmF0aXZlIFwKKyAgICBsaWJ0b29sIFwKKyAgICAiCisKK1BBQ0tBR0VTID0rICIke1BOfS1jb250cmliIgorCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGx2bTIiCitSREVQRU5EU18ke1BOfSA9ICJ1dGlsLWxpbnV4IGlwdGFibGVzIFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYXVmcycsICdhdWZzLXV0aWwnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcnLCAnY2dyb3VwLWxpdGUnLCBkKX0gXAorICAgICAgICAgICAgICAgICAiCitSREVQRU5EU18ke1BOfSArPSAidmlydHVhbC9jb250YWluZXJkIHZpcnR1YWwvcnVuYyIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1kbS10aGluLXBvb2wga2VybmVsLW1vZHVsZS1uZi1uYXQiCitSU1VHR0VTVFNfJHtQTn0gPSAibHhjIHJ0LXRlc3RzIgorRE9DS0VSX1BLRz0iZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyIgorCitpbmhlcml0IHN5c3RlbWQgdXBkYXRlLXJjLmQKK2luaGVyaXQgZ28KK2luaGVyaXQgZ29hcmNoCitpbmhlcml0IHBrZ2NvbmZpZworCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitkb19jb21waWxlKCkgeworCSMgU2V0IEdPUEFUSC4gU2VlICdQQUNLQUdFUlMubWQnLiBEb24ndCByZWx5IG9uCisJIyBkb2NrZXIgdG8gZG93bmxvYWQgaXRzIGRlcGVuZGVuY2llcyBidXQgcmF0aGVyCisJIyB1c2UgZGVwZW5kZW5jaWVzIHBhY2thZ2VkIGluZGVwZW5kZW50bHkuCisJY2QgJHtTfS9zcmMvaW1wb3J0CisJcm0gLXJmIC5nb3BhdGgKKwlta2RpciAtcCAuZ29wYXRoL3NyYy8iJChkaXJuYW1lICIke0RPQ0tFUl9QS0d9IikiCisJbG4gLXNmIC4uLy4uLy4uLy4uL2NvbXBvbmVudHMvZW5naW5lLyAuZ29wYXRoL3NyYy8iJHtET0NLRVJfUEtHfSIKKworCW1rZGlyIC1wIC5nb3BhdGgvc3JjL2dpdGh1Yi5jb20vZG9ja2VyCisJbG4gLXNmICR7V09SS0RJUn0vbGlibmV0d29yayAuZ29wYXRoL3NyYy9naXRodWIuY29tL2RvY2tlci9saWJuZXR3b3JrCisJbG4gLXNmICR7V09SS0RJUn0vY2xpIC5nb3BhdGgvc3JjL2dpdGh1Yi5jb20vZG9ja2VyL2NsaQorCisJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0Ly5nb3BhdGg6JHtTfS9zcmMvaW1wb3J0L3ZlbmRvcjoke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtwcmVmaXh9L2xvY2FsL2dvIgorCWV4cG9ydCBHT1JPT1Q9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS8ke25vbmFyY2hfbGliZGlyfS8ke0hPU1RfU1lTfS9nbyIKKworCSMgUGFzcyB0aGUgbmVlZGVkIGNmbGFncy9sZGZsYWdzIHNvIHRoYXQgY2dvCisJIyBjYW4gZmluZCB0aGUgbmVlZGVkIGhlYWRlcnMgZmlsZXMgYW5kIGxpYnJhcmllcworCWV4cG9ydCBHT0FSQ0g9JHtUQVJHRVRfR09BUkNIfQorCWV4cG9ydCBDR09fRU5BQkxFRD0iMSIKKwlleHBvcnQgQ0dPX0NGTEFHUz0iJHtDRkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJZXhwb3J0IENHT19MREZMQUdTPSIke0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJIyBpbiBvcmRlciB0byBleGNsdWRlIGRldmljZW1hcHBlciBhbmQgYnRyZnMgLSBodHRwczovL2dpdGh1Yi5jb20vZG9ja2VyL2RvY2tlci9pc3N1ZXMvMTQwNTYKKwlleHBvcnQgRE9DS0VSX0JVSUxEVEFHUz0nZXhjbHVkZV9ncmFwaGRyaXZlcl9idHJmcyBleGNsdWRlX2dyYXBoZHJpdmVyX2RldmljZW1hcHBlcicKKworCWV4cG9ydCBESVNBQkxFX1dBUk5fT1VUU0lERV9DT05UQUlORVI9MQorCisJY2QgJHtTfS9zcmMvaW1wb3J0L2NvbXBvbmVudHMvZW5naW5lCisKKwkjIHRoaXMgaXMgdGhlIHVuc3VwcG9ydGVkIGJ1aWx0IHN0cnVjdHVyZQorCSMgdGhhdCBkb2Vzbid0IHJlbHkgb24gYW4gZXhpc3RpbmcgZG9ja2VyCisJIyB0byBidWlsZCB0aGlzOgorCVZFUlNJT049IiR7RE9DS0VSX1ZFUlNJT059IiBET0NLRVJfR0lUQ09NTUlUPSIke1NSQ1JFVl9kb2NrZXJ9IiAuL2hhY2svbWFrZS5zaCBkeW5iaW5hcnkKKworCSMgYnVpbGQgdGhlIHByb3h5CisJZ28gYnVpbGQgLW8gJHtTfS9zcmMvaW1wb3J0L2RvY2tlci1wcm94eSBnaXRodWIuY29tL2RvY2tlci9saWJuZXR3b3JrL2NtZC9wcm94eQorCisgICAgICAgICMgYnVpbGQgdGhlIGNsaQorCSMjZ28gYnVpbGQgLW8gJHtTfS9zcmMvaW1wb3J0L2J1bmRsZXMvbGF0ZXN0L2R5bmJpbmFyeS1jbGllbnQvZG9ja2VyIGdpdGh1Yi5jb20vZG9ja2VyL2NsaS9jbWQvZG9ja2VyCisJY2QgJHtTfS9zcmMvaW1wb3J0Ly5nb3BhdGgvc3JjL2dpdGh1Yi5jb20vZG9ja2VyL2NsaQorCWV4cG9ydCBDRkxBR1M9IiIKKwlleHBvcnQgTERGTEFHUz0iIgorCWV4cG9ydCBET0NLRVJfVkVSU0lPTj0ke0RPQ0tFUl9WRVJTSU9OfQorCVZFUlNJT049IiR7RE9DS0VSX1ZFUlNJT059IiBET0NLRVJfR0lUQ09NTUlUPSIke1NSQ1JFVl9kb2NrZXJ9IiBtYWtlIGR5bmJpbmFyeQorfQorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtQTn0nLCcnLGQpfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ2RvY2tlci5zZXJ2aWNlJywnJyxkKX0iCisKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZW5hYmxlIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCcke1BOfScsJycsZCl9IgorSU5JVFNDUklQVF9OQU1FXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ2RvY2tlci5pbml0JywnJyxkKX0iCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfSA9ICJkZWZhdWx0cyIKKworZG9faW5zdGFsbCgpIHsKKwlta2RpciAtcCAke0R9LyR7YmluZGlyfQorCWNwICR7V09SS0RJUn0vY2xpL2J1aWxkL2RvY2tlciAke0R9LyR7YmluZGlyfS9kb2NrZXIKKwljcCAke1N9L3NyYy9pbXBvcnQvY29tcG9uZW50cy9lbmdpbmUvYnVuZGxlcy9sYXRlc3QvZHluYmluYXJ5LWRhZW1vbi9kb2NrZXJkICR7RH0vJHtiaW5kaXJ9L2RvY2tlcmQKKwljcCAke1N9L3NyYy9pbXBvcnQvZG9ja2VyLXByb3h5ICR7RH0vJHtiaW5kaXJ9L2RvY2tlci1wcm94eQorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJCWluc3RhbGwgLW0gNjQ0ICR7U30vc3JjL2ltcG9ydC9jb21wb25lbnRzL2VuZ2luZS9jb250cmliL2luaXQvc3lzdGVtZC9kb2NrZXIuKiAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwkJIyByZXBsYWNlcyBvbmUgY29waWVkIGZyb20gYWJvdmUgd2l0aCBvbmUgdGhhdCB1c2VzIHRoZSBsb2NhbCByZWdpc3RyeSBmb3IgYSBtaXJyb3IKKwkJaW5zdGFsbCAtbSA2NDQgJHtTfS9zcmMvaW1wb3J0L2NvbXBvbmVudHMvZW5naW5lL2NvbnRyaWIvaW5pdC9zeXN0ZW1kL2RvY2tlci5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWVsc2UKKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZG9ja2VyLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2RvY2tlci5pbml0CisJZmkKKworCW1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2RvY2tlci8KKwljcCAke1dPUktESVJ9L2hpLkRvY2tlcmZpbGUgJHtEfSR7ZGF0YWRpcn0vZG9ja2VyLworCWluc3RhbGwgLW0gMDc1NSAke1N9L3NyYy9pbXBvcnQvY29tcG9uZW50cy9lbmdpbmUvY29udHJpYi9jaGVjay1jb25maWcuc2ggJHtEfSR7ZGF0YWRpcn0vZG9ja2VyLworfQorCitpbmhlcml0IHVzZXJhZGQKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBkb2NrZXIiCisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoiCisKK0ZJTEVTXyR7UE59LWNvbnRyaWIgKz0gIiR7ZGF0YWRpcn0vZG9ja2VyL2NoZWNrLWNvbmZpZy5zaCIKK1JERVBFTkRTXyR7UE59LWNvbnRyaWIgKz0gImJhc2giCisKKyMgRE8gTk9UIFNUUklQIGRvY2tlcgorSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCitJTlNBTkVfU0tJUF8ke1BOfSArPSAibGRmbGFncyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2RvY2tlcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci9kb2NrZXJfZ2l0LmJiCmluZGV4IDRiYTVlODEuLmUwNTVhNGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2RvY2tlcl9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXIvZG9ja2VyX2dpdC5iYgpAQCAtMTgsMTYgKzE4LDE2IEBACiAgc3VidGxlIGFuZC9vciBnbGFyaW5nIGlzc3Vlcy4gXAogICIKIAotU1JDUkVWX2RvY2tlciA9ICJlNjM5YTcwZmJlOTk5ZDk2MzU0YTViY2Y1NjAyMzFiN2I4YWE5MzVjIgotU1JDUkVWX2xpYm5ldHdvcmsgPSAiMjZhZGRmNDNhNWQ5MjVmZjc5ZDI2MmRiYmRiNTM0NGJjMmI2ZTE5OCIKLVNSQ1JFVl9jbGkgPSAiYTc2NTIxOGYxOTg4ZTg1YjY4YWEzOTc3ZjM0ODkzZWM3YjA1OWE2MCIKK1NSQ1JFVl9kb2NrZXIgPSAiNzA4YjA2OGQzMDk1YzZhNmJlOTM5ZWIyZGE3OGM5MjFkMmU5NDVlMiIKK1NSQ1JFVl9saWJuZXR3b3JrID0gIjRjYjM4YzI5ODdjMjM2ZGNlMDNjODY4ZDk5YjU3YjFlMjhhNGI4MWMiCitTUkNSRVZfY2xpID0gIjBmMWJiMzUzNDIzZTQ1ZTAyMzE1ZTk4NWJkOWRkZWJlNmRhMTg0NTciCiBTUkNfVVJJID0gIlwKIAlnaXQ6Ly9naXRodWIuY29tL21vYnkvbW9ieS5naXQ7bm9icmFuY2g9MTtuYW1lPWRvY2tlciBcCi0JZ2l0Oi8vZ2l0aHViLmNvbS9kb2NrZXIvbGlibmV0d29yay5naXQ7YnJhbmNoPW1hc3RlcjtuYW1lPWxpYm5ldHdvcms7ZGVzdHN1ZmZpeD1saWJuZXR3b3JrIFwKLQlnaXQ6Ly9naXRodWIuY29tL2RvY2tlci9jbGk7YnJhbmNoPW1hc3RlcjtuYW1lPWNsaTtkZXN0c3VmZml4PWNsaSBcCisJZ2l0Oi8vZ2l0aHViLmNvbS9kb2NrZXIvbGlibmV0d29yay5naXQ7YnJhbmNoPW1hc3RlcjtuYW1lPWxpYm5ldHdvcms7ZGVzdHN1ZmZpeD1naXQvbGlibmV0d29yayBcCisJZ2l0Oi8vZ2l0aHViLmNvbS9kb2NrZXIvY2xpO2JyYW5jaD1tYXN0ZXI7bmFtZT1jbGk7ZGVzdHN1ZmZpeD1naXQvY2xpIFwKIAlmaWxlOi8vZG9ja2VyLmluaXQgXAogCWZpbGU6Ly9oaS5Eb2NrZXJmaWxlIFwKLQlmaWxlOi8vY29udGV4dC11c2UtZ29sYW5nLm9yZy14LW5ldC1wa2ctdW50aWwtd2UtbW92ZS10by1nby5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLWxpYm5ldHdvcmstdXNlLUdPLWluc3RlYWQtb2YtZ28ucGF0Y2ggXAogCSIKIAogIyBBcGFjaGUtMi4wIGZvciBkb2NrZXIKQEAgLTM4LDcgKzM4LDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotRE9DS0VSX1ZFUlNJT04gPSAiMTcuMDYuMCIKK0RPQ0tFUl9WRVJTSU9OID0gIjE4LjAzLjAiCiBQViA9ICIke0RPQ0tFUl9WRVJTSU9OfStnaXQke1NSQ1JFVl9kb2NrZXJ9IgogCiBERVBFTkRTID0gIiBcCkBAIC01OSwxMyArNTksMTUgQEAKICAgICBnby1jb25uZWN0aW9ucyBcCiAgICAgbm90YXJ5IFwKICAgICBncnBjLWdvIFwKKyAgICBsaWJ0b29sIFwKICAgICAiCiAKIFBBQ0tBR0VTID0rICIke1BOfS1jb250cmliIgogCiBERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGx2bTIiCi1SREVQRU5EU18ke1BOfSA9ICJjdXJsIGF1ZnMtdXRpbCBnaXQgdXRpbC1saW51eCBpcHRhYmxlcyBcCi0gICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJycsJ2Nncm91cC1saXRlJyxkKX0gXAorUkRFUEVORFNfJHtQTn0gPSAidXRpbC1saW51eCBpcHRhYmxlcyBcCisgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2F1ZnMnLCAnYXVmcy11dGlsJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnJywgJ2Nncm91cC1saXRlJywgZCl9IFwKICAgICAgICAgICAgICAgICAgIgogUkRFUEVORFNfJHtQTn0gKz0gInZpcnR1YWwvY29udGFpbmVyZCB2aXJ0dWFsL3J1bmMiCiAKQEAgLTc2LDYgKzc4LDcgQEAKIGluaGVyaXQgc3lzdGVtZCB1cGRhdGUtcmMuZAogaW5oZXJpdCBnbwogaW5oZXJpdCBnb2FyY2gKK2luaGVyaXQgcGtnY29uZmlnCiAKIGRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCiAKQEAgLTg5LDggKzkyLDggQEAKIAlsbiAtc2YgLi4vLi4vLi4vLi4gLmdvcGF0aC9zcmMvIiR7RE9DS0VSX1BLR30iCiAKIAlta2RpciAtcCAuZ29wYXRoL3NyYy9naXRodWIuY29tL2RvY2tlcgotCWxuIC1zZiAke1dPUktESVJ9L2xpYm5ldHdvcmsgLmdvcGF0aC9zcmMvZ2l0aHViLmNvbS9kb2NrZXIvbGlibmV0d29yawotCWxuIC1zZiAke1dPUktESVJ9L2NsaSAuZ29wYXRoL3NyYy9naXRodWIuY29tL2RvY2tlci9jbGkKKwlsbiAtc2YgJHtXT1JLRElSfS9naXQvbGlibmV0d29yayAuZ29wYXRoL3NyYy9naXRodWIuY29tL2RvY2tlci9saWJuZXR3b3JrCisJbG4gLXNmICR7V09SS0RJUn0vZ2l0L2NsaSAuZ29wYXRoL3NyYy9naXRodWIuY29tL2RvY2tlci9jbGkKIAogCWV4cG9ydCBHT1BBVEg9IiR7U30vc3JjL2ltcG9ydC8uZ29wYXRoOiR7U30vc3JjL2ltcG9ydC92ZW5kb3I6JHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7cHJlZml4fS9sb2NhbC9nbyIKIAlleHBvcnQgR09ST09UPSIke1NUQUdJTkdfRElSX05BVElWRX0vJHtub25hcmNoX2xpYmRpcn0vJHtIT1NUX1NZU30vZ28iCkBAIC0xMDQsMTcgKzEwNywyNSBAQAogCSMgaW4gb3JkZXIgdG8gZXhjbHVkZSBkZXZpY2VtYXBwZXIgYW5kIGJ0cmZzIC0gaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzE0MDU2CiAJZXhwb3J0IERPQ0tFUl9CVUlMRFRBR1M9J2V4Y2x1ZGVfZ3JhcGhkcml2ZXJfYnRyZnMgZXhjbHVkZV9ncmFwaGRyaXZlcl9kZXZpY2VtYXBwZXInCiAKKwlleHBvcnQgRElTQUJMRV9XQVJOX09VVFNJREVfQ09OVEFJTkVSPTEKKworCWNkICR7U30vc3JjL2ltcG9ydC8KKwogCSMgdGhpcyBpcyB0aGUgdW5zdXBwb3J0ZWQgYnVpbHQgc3RydWN0dXJlCiAJIyB0aGF0IGRvZXNuJ3QgcmVseSBvbiBhbiBleGlzdGluZyBkb2NrZXIKIAkjIHRvIGJ1aWxkIHRoaXM6Ci0JRE9DS0VSX0dJVENPTU1JVD0iJHtTUkNSRVZ9IiBcCi0JICAuL2hhY2svbWFrZS5zaCBkeW5iaW5hcnkKLQotCSMgYnVpbGQgdGhlIHByb3h5Ci0JZ28gYnVpbGQgLW8gJHtTfS9zcmMvaW1wb3J0L2RvY2tlci1wcm94eSBnaXRodWIuY29tL2RvY2tlci9saWJuZXR3b3JrL2NtZC9wcm94eQorCVZFUlNJT049IiR7RE9DS0VSX1ZFUlNJT059IiBET0NLRVJfR0lUQ09NTUlUPSIke1NSQ1JFVl9kb2NrZXJ9IiAuL2hhY2svbWFrZS5zaCBkeW5iaW5hcnkKIAogICAgICAgICAjIGJ1aWxkIHRoZSBjbGkKLQlnbyBidWlsZCAtbyAke1N9L3NyYy9pbXBvcnQvYnVuZGxlcy9sYXRlc3QvZHluYmluYXJ5LWNsaWVudC9kb2NrZXIgZ2l0aHViLmNvbS9kb2NrZXIvY2xpL2NtZC9kb2NrZXIKKwljZCAke1N9L3NyYy9pbXBvcnQvLmdvcGF0aC9zcmMvZ2l0aHViLmNvbS9kb2NrZXIvY2xpCisJZXhwb3J0IENGTEFHUz0iIgorCWV4cG9ydCBMREZMQUdTPSIiCisJZXhwb3J0IERPQ0tFUl9WRVJTSU9OPSR7RE9DS0VSX1ZFUlNJT059CisJVkVSU0lPTj0iJHtET0NLRVJfVkVSU0lPTn0iIERPQ0tFUl9HSVRDT01NSVQ9IiR7U1JDUkVWX2RvY2tlcn0iIG1ha2UgZHluYmluYXJ5CisKKwkjIGJ1aWxkIHRoZSBwcm94eQorCWNkICR7U30vc3JjL2ltcG9ydC8uZ29wYXRoL3NyYy9naXRodWIuY29tL2RvY2tlci9saWJuZXR3b3JrCisJb2VfcnVubWFrZSBjcm9zcy1sb2NhbAogfQogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtQTn0nLCcnLGQpfSIKQEAgLTEyOCw5ICsxMzksOSBAQAogCiBkb19pbnN0YWxsKCkgewogCW1rZGlyIC1wICR7RH0vJHtiaW5kaXJ9Ci0JY3AgJHtTfS9zcmMvaW1wb3J0L2J1bmRsZXMvbGF0ZXN0L2R5bmJpbmFyeS1jbGllbnQvZG9ja2VyICR7RH0vJHtiaW5kaXJ9L2RvY2tlcgorCWNwICR7V09SS0RJUn0vZ2l0L2NsaS9idWlsZC9kb2NrZXIgJHtEfS8ke2JpbmRpcn0vZG9ja2VyCiAJY3AgJHtTfS9zcmMvaW1wb3J0L2J1bmRsZXMvbGF0ZXN0L2R5bmJpbmFyeS1kYWVtb24vZG9ja2VyZCAke0R9LyR7YmluZGlyfS9kb2NrZXJkCi0JY3AgJHtTfS9zcmMvaW1wb3J0L2RvY2tlci1wcm94eSAke0R9LyR7YmluZGlyfS9kb2NrZXItcHJveHkKKwljcCAke1dPUktESVJ9L2dpdC9saWJuZXR3b3JrL2Jpbi9kb2NrZXItcHJveHkqICR7RH0vJHtiaW5kaXJ9L2RvY2tlci1wcm94eQogCiAJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgogCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci9maWxlcy8wMDAxLWxpYm5ldHdvcmstdXNlLUdPLWluc3RlYWQtb2YtZ28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci9maWxlcy8wMDAxLWxpYm5ldHdvcmstdXNlLUdPLWluc3RlYWQtb2YtZ28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFkZGQyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2ZpbGVzLzAwMDEtbGlibmV0d29yay11c2UtR08taW5zdGVhZC1vZi1nby5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIDA0YzA3ODA0OTMwZmFhZDcwODIxOGEzMTM0YzgxZGUwNmE5Yzc0MmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgNiBBcHIgMjAxOCAyMzo1ODoyMiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBsaWJuZXR3b3JrOiB1c2UgJChHTykgaW5zdGVhZCBvZiBnbworCitFbnN1cmUgdGhhdCB0aGUgbGlibmV0d29yayBtYWtlZmlsZSB1c2VzIHRoZSBnbyBjcm9zcyBmbGFncyBhbmQKK3V0aWxpdGllcy4KKworU2lnbmVkLW9mZi1ieTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZSB8IDE0ICsrKysrKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYm5ldHdvcmsvTWFrZWZpbGUgYi9saWJuZXR3b3JrL01ha2VmaWxlCitpbmRleCAxNzA2MGJjMjEyYzcuLjkwY2M3YTcyZWY0NSAxMDA2NDQKKy0tLSBhL2xpYm5ldHdvcmsvTWFrZWZpbGUKKysrKyBiL2xpYm5ldHdvcmsvTWFrZWZpbGUKK0BAIC0yNiw5ICsyNiw5IEBAIGJ1aWxkOiAke2J1aWxkX2ltYWdlfS5jcmVhdGVkCisgYnVpbGQtbG9jYWw6CisgCUBlY2hvICLwn5CzICRAIgorIAlAbWtkaXIgLXAgImJpbiIKKy0JZ28gYnVpbGQgLXRhZ3MgZXhwZXJpbWVudGFsIC1vICJiaW4vZG5ldCIgLi9jbWQvZG5ldAorLQlnbyBidWlsZCAtbyAiYmluL2RvY2tlci1wcm94eSIgLi9jbWQvcHJveHkKKy0JR09PUz1saW51eCBnbyBidWlsZCAtbyAiLi9jbWQvZGlhZ25vc3RpYy9kaWFnbm9zdGljQ2xpZW50IiAuL2NtZC9kaWFnbm9zdGljCisrCSQoR08pIGJ1aWxkIC10YWdzIGV4cGVyaW1lbnRhbCAtbyAiYmluL2RuZXQiIC4vY21kL2RuZXQKKysJJChHTykgYnVpbGQgLW8gImJpbi9wcm94eSIgLi9jbWQvcHJveHkKKysJR09PUz1saW51eCAkKEdPKSBidWlsZCAtbyAiLi9jbWQvZGlhZ25vc3RpYy9kaWFnbm9zdGljQ2xpZW50IiAuL2NtZC9kaWFnbm9zdGljCisgCisgY2xlYW46CisgCUBlY2hvICLwn5CzICRAIgorQEAgLTUxLDggKzUxLDggQEAgY3Jvc3M6ICR7YnVpbGRfaW1hZ2V9LmNyZWF0ZWQKKyAKKyBjcm9zcy1sb2NhbDoKKyAJQGVjaG8gIvCfkLMgJEAiCistCWdvIGJ1aWxkIC1vICJiaW4vZG5ldC0kJEdPT1MtJCRHT0FSQ0giIC4vY21kL2RuZXQKKy0JZ28gYnVpbGQgLW8gImJpbi9kb2NrZXItcHJveHktJCRHT09TLSQkR09BUkNIIiAuL2NtZC9wcm94eQorKwlAJChHTykgYnVpbGQgLWxpbmtzaGFyZWQgJChHT0JVSUxERkxBR1MpIC1vICJiaW4vZG9ja2VyLXByb3h5LSQkR09PUy0kJEdPQVJDSCIgLi9jbWQvcHJveHkKKysJQCQoR08pIGJ1aWxkIC1saW5rc2hhcmVkICQoR09CVUlMREZMQUdTKSAtbyAiYmluL2RuZXQtJCRHT09TLSQkR09BUkNIIiAuL2NtZC9kbmV0CisgCisgY2hlY2s6ICR7YnVpbGRfaW1hZ2V9LmNyZWF0ZWQKKyAJQCR7ZG9ja2VyfSAuL3dyYXBtYWtlLnNoIGNoZWNrLWxvY2FsCitAQCAtNjgsNyArNjgsNyBAQCBydW4tdGVzdHM6CisgCWlmIGxzICQkZGlyLyouZ28gJj4gL2Rldi9udWxsOyB0aGVuIFwKKyAJCXB1c2hkIC4gJj4gL2Rldi9udWxsIDsgXAorIAkJY2QgJCRkaXIgOyBcCistCQlnbyB0ZXN0ICR7SU5TSURFQ09OVEFJTkVSfSAtdGVzdC5wYXJhbGxlbCA1IC10ZXN0LnYgLWNvdmVybW9kZT1jb3VudCAtY292ZXJwcm9maWxlPS4vcHJvZmlsZS50bXAgOyBcCisrCQkkKEdPKSB0ZXN0ICR7SU5TSURFQ09OVEFJTkVSfSAtdGVzdC5wYXJhbGxlbCA1IC10ZXN0LnYgLWNvdmVybW9kZT1jb3VudCAtY292ZXJwcm9maWxlPS4vcHJvZmlsZS50bXAgOyBcCisgCQlyZXQ9JCQ/IDtcCisgCQlpZiBbICQkcmV0IC1uZSAwIF07IHRoZW4gZXhpdCAkJHJldDsgZmkgO1wKKyAJCXBvcGQgJj4gL2Rldi9udWxsOyBcCitAQCAtOTQsNyArOTQsNyBAQCBjb3ZlcmFsbHM6CisgIyBEZXBlbmRzIG9uIGJpbmFyaWVzIGJlY2F1c2UgdmV0IHdpbGwgc2lsZW50bHkgZmFpbCBpZiBpdCBjYW4gbm90IGxvYWQgY29tcGlsZWQgaW1wb3J0cworIHZldDogIyMgcnVuIGdvIHZldAorIAlAZWNobyAi8J+QsyAkQCIKKy0JQHRlc3QgLXogIiQkKGdvIHZldCAke1BBQ0tBR0VTfSAyPiYxIHwgZ3JlcCAtdiAnY29uc3RhbnQgWzAtOV0qIG5vdCBhIHN0cmluZyBpbiBjYWxsIHRvIEVycm9yZicgfCBlZ3JlcCAtdiAnKHRpbWVzdGFtcF90ZXN0LmdvfGR1cmF0aW9uX3Rlc3QuZ298ZXhpdCBzdGF0dXMgMSknIHwgdGVlIC9kZXYvc3RkZXJyKSIKKysJQHRlc3QgLXogIiQkKCQoR08pIHZldCAke1BBQ0tBR0VTfSAyPiYxIHwgZ3JlcCAtdiAnY29uc3RhbnQgWzAtOV0qIG5vdCBhIHN0cmluZyBpbiBjYWxsIHRvIEVycm9yZicgfCBlZ3JlcCAtdiAnKHRpbWVzdGFtcF90ZXN0LmdvfGR1cmF0aW9uX3Rlc3QuZ298ZXhpdCBzdGF0dXMgMSknIHwgdGVlIC9kZXYvc3RkZXJyKSIKKyAKKyBtaXNzcGVsbDoKKyAJQGVjaG8gIvCfkLMgJEAiCistLSAKKzIuNC4wLjUzLmc4NDQwZjc0CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2ZpbGVzL2NvbnRleHQtdXNlLWdvbGFuZy5vcmcteC1uZXQtcGtnLXVudGlsLXdlLW1vdmUtdG8tZ28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci9maWxlcy9jb250ZXh0LXVzZS1nb2xhbmcub3JnLXgtbmV0LXBrZy11bnRpbC13ZS1tb3ZlLXRvLWdvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWQ2MDZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2ZpbGVzL2NvbnRleHQtdXNlLWdvbGFuZy5vcmcteC1uZXQtcGtnLXVudGlsLXdlLW1vdmUtdG8tZ28ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1Gcm9tIGRlNjk1NTVhZmFmMDVlZmNkZWVhN2I3YzIwYzZmN2IxMmYzZTFiYWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyMCBKYW4gMjAxNyAxMTo1ODo0NCAtMDUwMAotU3ViamVjdDogW1BBVENIXSBjb250ZXh0OiB1c2UgZ29sYW5nLm9yZy94L25ldCBwa2cgdW50aWwgd2UgbW92ZSB0byBnbyAxLjcKLQotSW4gZ28gMS42IHRoZSBjb250ZXh0LmdvIGlzIG5vdCB5ZXQgaW50ZWdyYXRlZCBhbmQgYXMgc3VjaCB3ZSB3aWxsIGdldAotYnVpbGQgZXJyb3JzIGxpa2U6Ci0KLXdhbHdyYXAuZ286NDoyOiBjYW5ub3QgZmluZCBwYWNrYWdlICJjb250ZXh0IiBpbiBhbnkgb2Y6Ci0uLi4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNsaWVudC9SRUFETUUubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCi0gY2xpZW50L2NsaWVudC5nbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KLSBkYWVtb24vaW5mb191bml4LmdvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQotIGludGVncmF0aW9uLWNsaS9kb2NrZXJfYXBpX2F0dGFjaF90ZXN0LmdvICAgICAgICAgfCAgICAyICstCi0gaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9jbGlfc2F2ZV9sb2FkX3VuaXhfdGVzdC5nbyB8ICAgIDIgKy0KLSA1IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotLS0tIGEvc3JjL2ltcG9ydC9jbGllbnQvUkVBRE1FLm1kCi0rKysgYi9zcmMvaW1wb3J0L2NsaWVudC9SRUFETUUubWQKLUBAIC04LDcgKzgsNyBAQCBGb3IgZXhhbXBsZSwgdG8gbGlzdCBydW5uaW5nIGNvbnRhaW5lcnMKLSBwYWNrYWdlIG1haW4KLSAKLSBpbXBvcnQgKAotLQkiY29udGV4dCIKLSsJImdvbGFuZy5vcmcveC9uZXQvY29udGV4dCIKLSAJImZtdCIKLSAKLSAJImdpdGh1Yi5jb20vZG9ja2VyL2RvY2tlci9hcGkvdHlwZXMiCi0tLS0gYS9zcmMvaW1wb3J0L2NsaWVudC9jbGllbnQuZ28KLSsrKyBiL3NyYy9pbXBvcnQvY2xpZW50L2NsaWVudC5nbwotQEAgLTE5LDcgKzE5LDcgQEAgRm9yIGV4YW1wbGUsIHRvIGxpc3QgcnVubmluZyBjb250YWluZXJzCi0gCXBhY2thZ2UgbWFpbgotIAotIAlpbXBvcnQgKAotLQkJImNvbnRleHQiCi0rCQkiZ29sYW5nLm9yZy94L25ldC9jb250ZXh0IgotIAkJImZtdCIKLSAKLSAJCSJnaXRodWIuY29tL2RvY2tlci9kb2NrZXIvYXBpL3R5cGVzIgotLS0tIGEvc3JjL2ltcG9ydC9kYWVtb24vaW5mb191bml4LmdvCi0rKysgYi9zcmMvaW1wb3J0L2RhZW1vbi9pbmZvX3VuaXguZ28KLUBAIC0zLDcgKzMsNyBAQAotIHBhY2thZ2UgZGFlbW9uCi0gCi0gaW1wb3J0ICgKLS0JImNvbnRleHQiCi0rCSJnb2xhbmcub3JnL3gvbmV0L2NvbnRleHQiCi0gCSJvcy9leGVjIgotIAkic3RyaW5ncyIKLSAKLS0tLSBhL3NyYy9pbXBvcnQvaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9hcGlfYXR0YWNoX3Rlc3QuZ28KLSsrKyBiL3NyYy9pbXBvcnQvaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9hcGlfYXR0YWNoX3Rlc3QuZ28KLUBAIC0zLDcgKzMsNyBAQCBwYWNrYWdlIG1haW4KLSBpbXBvcnQgKAotIAkiYnVmaW8iCi0gCSJieXRlcyIKLS0JImNvbnRleHQiCi0rCSJnb2xhbmcub3JnL3gvbmV0L2NvbnRleHQiCi0gCSJpbyIKLSAJIm5ldCIKLSAJIm5ldC9odHRwIgotLS0tIGEvc3JjL2ltcG9ydC9pbnRlZ3JhdGlvbi1jbGkvZG9ja2VyX2NsaV9zYXZlX2xvYWRfdW5peF90ZXN0LmdvCi0rKysgYi9zcmMvaW1wb3J0L2ludGVncmF0aW9uLWNsaS9kb2NrZXJfY2xpX3NhdmVfbG9hZF91bml4X3Rlc3QuZ28KLUBAIC0zLDcgKzMsNyBAQAotIHBhY2thZ2UgbWFpbgotIAotIGltcG9ydCAoCi0tCSJjb250ZXh0IgotKwkiZ29sYW5nLm9yZy94L25ldC9jb250ZXh0IgotIAkiZm10IgotIAkiaW8vaW91dGlsIgotIAkib3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2t1YmVybmV0ZXMva3ViZXJuZXRlc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2t1YmVybmV0ZXMva3ViZXJuZXRlc19naXQuYmIKaW5kZXggMmM3MTYxZS4uMTY3N2ZmNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9rdWJlcm5ldGVzL2t1YmVybmV0ZXNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMva3ViZXJuZXRlcy9rdWJlcm5ldGVzX2dpdC5iYgpAQCAtNSw3ICs1LDcgQEAKIG1haW50ZW5hbmNlLCBhbmQgc2NhbGluZyBvZiBhcHBsaWNhdGlvbnMuIFwKICIKIAotU1JDUkVWX2t1YmVybmV0ZXMgPSAiNGI4Mzk0NjVmODRlN2ZhZjg3NmM1MTcwM2FhZjQ5YjM3ZmQxMGQ5YyIKK1NSQ1JFVl9rdWJlcm5ldGVzID0gImZjMzJkMmYzNjk4ZTM2YjkzMzIyYTM0NjVmNjNhMTRlOWYwZWFlYWQiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rdWJlcm5ldGVzLmdpdDtub2JyYW5jaD0xO25hbWU9a3ViZXJuZXRlcyBcCiAgICAgICAgICAgIgogCkBAIC0xNiw2ICsxNiw3IEBACiBQQUNLQUdFUyA9KyAia3ViZWFkbSIKIFBBQ0tBR0VTID0rICJrdWJlY3RsIgogUEFDS0FHRVMgPSsgImt1YmVsZXQiCitQQUNLQUdFUyA9KyAia3ViZS1wcm94eSIKIAogQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKIApAQCAtMjcsMTQgKzI4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgY25pIgogCiBSREVQRU5EU19rdWJlYWRtID0gImt1YmVsZXQga3ViZWN0bCIKLVJERVBFTkRTX2t1YmVsZXQgPSAiaXB0YWJsZXMgc29jYXQgdXRpbC1saW51eCBldGh0b29sIGlwcm91dGUyIGVidGFibGVzIgorUkRFUEVORFNfa3ViZWxldCA9ICJpcHRhYmxlcyBzb2NhdCB1dGlsLWxpbnV4IGV0aHRvb2wgaXByb3V0ZTIgZWJ0YWJsZXMgaXByb3V0ZTItdGMiCiAKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9pbXBvcnQvTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCiAKIEdPX0lNUE9SVCA9ICJpbXBvcnQiCiAKLVBWID0gIjEuOS4wLWFscGhhLjErZ2l0JHtTUkNSRVZfa3ViZXJuZXRlc30iCitQViA9ICIxLjEwLjArZ2l0JHtTUkNSRVZfa3ViZXJuZXRlc30iCiAKIGluaGVyaXQgc3lzdGVtZAogaW5oZXJpdCBnbwpAQCAtOTAsNiArOTEsNyBAQAogCiBGSUxFU19rdWJlYWRtID0gIiR7YmluZGlyfS9rdWJlYWRtICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va3ViZWxldC5zZXJ2aWNlLmQvKiIKIEZJTEVTX2t1YmVjdGwgPSAiJHtiaW5kaXJ9L2t1YmVjdGwiCitGSUxFU19rdWJlLXByb3h5ID0gIiR7YmluZGlyfS9rdWJlLXByb3h5IgogRklMRVNfa3ViZWxldCA9ICIke2JpbmRpcn0va3ViZWxldCAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2t1YmVsZXQuc2VydmljZSAke3N5c2NvbmZkaXJ9L2t1YmVybmV0ZXMvbWFuaWZlc3RzLyIKIAogSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9kbnNtYXNxLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9kbnNtYXNxLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI0ZjdlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2ZpbGVzL2Ruc21hc3EuY29uZgpAQCAtMCwwICsxLDIgQEAKK2JpbmQtaW50ZXJmYWNlcworZXhjZXB0LWludGVyZmFjZT1seGNicjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2x4Y18yLjAuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2x4Y18yLjAuOC5iYgppbmRleCA5M2Q1YTEwLi5jODdiODc1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9seGNfMi4wLjguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvbHhjXzIuMC44LmJiCkBAIC02LDYgKzYsOCBAQAogUkRFUEVORFNfJHtQTn0gPSAiIFwKIAkJcnN5bmMgXAogCQlnemlwIFwKKwkJeHogXAorCQl0YXIgXAogCQlsaWJjYXAtYmluIFwKIAkJYnJpZGdlLXV0aWxzIFwKIAkJZG5zbWFzcSBcCkBAIC0yMiw2ICsyNCw5IEBACiAJCWdudXRscyBcCiAJCW5ldHRsZSBcCiAiCisKK1JERVBFTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy11dGlscyIKKwogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImZpbGUgbWFrZSBnbXAgbmV0dGxlIGdudXRscyBiYXNoIgogCiBTUkNfVVJJID0gImh0dHA6Ly9saW51eGNvbnRhaW5lcnMub3JnL2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmd6IFwKQEAgLTMzLDYgKzM4LDcgQEAKIAlmaWxlOi8vbHhjLWRvYy11cGdyYWRlLXRvLXVzZS1kb2Nib29rLTMuMS1EVEQucGF0Y2ggXAogCWZpbGU6Ly9sb2dzLW9wdGlvbmFsbHktdXNlLWJhc2UtZmlsZW5hbWVzLXRvLXJlcG9ydC1zcmMtZmlsLnBhdGNoIFwKIAlmaWxlOi8vY2dyb3Vwcy13b3JrLWFyb3VuZC1pc3N1ZS1pbi1nY2MtNy5wYXRjaCBcCisJZmlsZTovL2Ruc21hc3EuY29uZiBcCiAJIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiN2JmZDk1MjgwNTIyZDc5MzZjMDk3OWRmZWE5MmNkYjUiCkBAIC01NCwxNCArNjAsMTYgQEAKIENGTEFHU19hcHBlbmQgPSAiIC1Xbm8tZXJyb3I9ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJ0ZW1wbGF0ZXMgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kJywgJycsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgJ3NlbGludXgnLCAnJywgZCl9IFwKICIKIFBBQ0tBR0VDT05GSUdbZG9jXSA9ICItLWVuYWJsZS1kb2MgLS1lbmFibGUtYXBpLWRvY3MsLS1kaXNhYmxlLWRvYyAtLWRpc2FibGUtYXBpLWRvY3MsLCIKIFBBQ0tBR0VDT05GSUdbcnBhdGhdID0gIi0tZW5hYmxlLXJwYXRoLC0tZGlzYWJsZS1ycGF0aCwsIgotUEFDS0FHRUNPTkZJR1thcHBhcm1vdXJdID0gIi0tZW5hYmxlLWFwcGFybW9yLC0tZGlzYWJsZS1hcHBhcm1vcixhcHBhcm1vcixhcHBhcm1vciIKK1BBQ0tBR0VDT05GSUdbYXBwYXJtb3JdID0gIi0tZW5hYmxlLWFwcGFybW9yLC0tZGlzYWJsZS1hcHBhcm1vcixhcHBhcm1vcixhcHBhcm1vciIKIFBBQ0tBR0VDT05GSUdbdGVtcGxhdGVzXSA9ICIsLCwgJHtQTn0tdGVtcGxhdGVzIgogUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLWVuYWJsZS1zZWxpbnV4LC0tZGlzYWJsZS1zZWxpbnV4LGxpYnNlbGludXgsbGlic2VsaW51eCIKIFBBQ0tBR0VDT05GSUdbc2VjY29tcF0gPSItLWVuYWJsZS1zZWNjb21wLC0tZGlzYWJsZS1zZWNjb21wLGxpYnNlY2NvbXAsbGlic2VjY29tcCIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kLCIKIFBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24sLS1kaXNhYmxlLXB5dGhvbixweXRob24zLHB5dGhvbjMtY29yZSIKIFBBQ0tBR0VDT05GSUdbbHVhXSA9ICItLWVuYWJsZS1sdWEsLS1kaXNhYmxlLWx1YSxsdWEsbHVhIgogCkBAIC0xMzEsNiArMTM5LDExIEBACiAJICAgIGlmIFsgLWQgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9weXRob24qIF07IHRoZW4gbXYgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9weXRob24qICR7RH0ke2xpYmRpcn0vOyBmaQogCSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtleGVjX3ByZWZpeH0vbGliCiAJZmkKKworCSMgRm9yY2UgdGhlIG1haW4gZG5zbWFzcSBpbnN0YW5jZSB0byBiaW5kIG9ubHkgdG8gc3BlY2lmaWVkIGludGVyZmFjZXMgYW5kCisJIyB0byBub3QgYmluZCB0byB2aXJicjAuIExpYnZpcnQgd2lsbCBydW4gaXRzIG93biBpbnN0YW5jZSBvbiB0aGlzIGludGVyZmFjZS4KKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kbnNtYXNxLmQKKwlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Ruc21hc3EuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vZG5zbWFzcS5kL2x4YwogfQogCiBFWFRSQV9PRU1BS0UgKz0gIlRFU1RfRElSPSR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLWltYWdlLXRvb2xzL2ZpbGVzLzAwMDEtY29uZmlnLW1ha2UtQ29uZmlnLlVzZXItbWFwcGluZy1lcnJvcnMtYS13YXJuaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktaW1hZ2UtdG9vbHMvZmlsZXMvMDAwMS1jb25maWctbWFrZS1Db25maWcuVXNlci1tYXBwaW5nLWVycm9ycy1hLXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhkMmI5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLWltYWdlLXRvb2xzL2ZpbGVzLzAwMDEtY29uZmlnLW1ha2UtQ29uZmlnLlVzZXItbWFwcGluZy1lcnJvcnMtYS13YXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gZmJkNjJlZmY5ZmYyZjQ0N2MyZWI0NjM0Mzk4MTEwNjA5ZmJmOWQ1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxNiBOb3YgMjAxNyAyMzo0MDoxNyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBjb25maWc6IG1ha2UgQ29uZmlnLlVzZXIgbWFwcGluZyBlcnJvcnMgYSB3YXJuaW5nCisKK1JhdGhlciB0aGFuIHRocm93aW5nIGFuIGVycm9yIGlmIHdlIGNhbid0IG1hcCBhIHVzZXIgdG8gYSB1aWQsCitvdXRwdXQgYSB3YXJuaW5nLiBXZSBhcmVuJ3QgYWN0dWFsbHkgcnVubmluZyB0aGUgY29kZSwgYnV0IGFyZQoranVzdCBleHRyYWN0aW5nIGl0IC4uIHNvIHRoZSB1c2VyIG5vdCBleGlzdGluZyBpc24ndCBhbiBpc3N1ZS4KKworU2lnbmVkLW9mZi1ieTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+CistLS0KKyBpbWFnZS9jb25maWcuZ28gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaW1wb3J0L2ltYWdlL2NvbmZpZy5nbyBiL3NyYy9pbXBvcnQvaW1hZ2UvY29uZmlnLmdvCitpbmRleCBkMjhiMWJjNGZlNWYuLjM3ZGZkMWYxNGVmNyAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvaW1hZ2UvY29uZmlnLmdvCisrKysgYi9zcmMvaW1wb3J0L2ltYWdlL2NvbmZpZy5nbworQEAgLTEwNiw3ICsxMDYsNyBAQCBmdW5jIChjICpjb25maWcpIHJ1bnRpbWVTcGVjKHJvb3RmcyBzdHJpbmcpICgqc3BlY3MuU3BlYywgZXJyb3IpIHsKKyAJCXMuUHJvY2Vzcy5Vc2VyLlVJRCA9IHVpbnQzMih1aWQpCisgCQlzLlByb2Nlc3MuVXNlci5HSUQgPSB1aW50MzIoZ2lkKQorIAl9IGVsc2UgaWYgYy5Db25maWcuVXNlciAhPSAiIiB7CistCQlyZXR1cm4gbmlsLCBlcnJvcnMuTmV3KCJjb25maWcuVXNlcjogdW5zdXBwb3J0ZWQgZm9ybWF0IikKKysJCWZtdC5QcmludGxuKCJXYXJuaW5nOiBjb3VsZCBub3QgbWFwIFVJRCBmb3IgdXNlcjoiLCBjLkNvbmZpZy5Vc2VyKQorIAl9CisgCisgCXMuTGludXggPSAmc3BlY3MuTGludXh7fQorLS0gCisyLjQuMC41My5nODQ0MGY3NAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1pbWFnZS10b29scy9vY2ktaW1hZ2UtdG9vbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktaW1hZ2UtdG9vbHMvb2NpLWltYWdlLXRvb2xzX2dpdC5iYgppbmRleCA2OGQ3M2MzLi44MDdlZTI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1pbWFnZS10b29scy9vY2ktaW1hZ2UtdG9vbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLWltYWdlLXRvb2xzL29jaS1pbWFnZS10b29sc19naXQuYmIKQEAgLTE0LDcgKzE0LDggQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5jb250YWluZXJzL2ltYWdlLXRvb2xzLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWltYWdlLW1hbmlmZXN0LVJlY3Vyc2l2ZWx5LXJlbW92ZS1wcmUtZXhpc3RpbmctZW50cmkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1pbWFnZS1tYW5pZmVzdC1TcGxpdC11bnBhY2tMYXllckVudHJ5LWludG8taXRzLW93bi1mLnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vMDAwMi1pbWFnZS1tYW5pZmVzdC1TcGxpdC11bnBhY2tMYXllckVudHJ5LWludG8taXRzLW93bi1mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlnLW1ha2UtQ29uZmlnLlVzZXItbWFwcGluZy1lcnJvcnMtYS13YXJuaW5nLnBhdGNoIgogCiBTUkNSRVYgPSAiNGFiZTFhMTY2ZjliZTk3ZThlNzFiMWJiNGQ3NTk5Y2MyOTMyMzAxMSIKIFBWID0gIjAuMi4wLWRlditnaXQke1NSQ1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXN5c3RlbWQtaG9vay9vY2ktc3lzdGVtZC1ob29rLzAwMDEtQWRkLWFkZGl0aW9uYWwtY2dyb3VwLW1vdW50cy1mcm9tLXJvb3QtTlMtYXV0b21hdGljYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXN5c3RlbWQtaG9vay9vY2ktc3lzdGVtZC1ob29rLzAwMDEtQWRkLWFkZGl0aW9uYWwtY2dyb3VwLW1vdW50cy1mcm9tLXJvb3QtTlMtYXV0b21hdGljYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTNhNzdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktc3lzdGVtZC1ob29rL29jaS1zeXN0ZW1kLWhvb2svMDAwMS1BZGQtYWRkaXRpb25hbC1jZ3JvdXAtbW91bnRzLWZyb20tcm9vdC1OUy1hdXRvbWF0aWNhLnBhdGNoCkBAIC0wLDAgKzEsNzYgQEAKK0Zyb20gZjU5Y2RkY2VkZDY1MzVlMGI4MDllYzliNGU5NTY3MmQzNGI0MWExNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE0IE5vdiAyMDE3IDA3OjQxOjQxIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBhZGRpdGlvbmFsIGNncm91cCBtb3VudHMgZnJvbSByb290IE5TIGF1dG9tYXRpY2FsbHkKKworU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9zeXN0ZW1kaG9vay5jIHwgNDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1kaG9vay5jIGIvc3JjL3N5c3RlbWRob29rLmMKK2luZGV4IDc4NTc1ZWYuLmY3MzU0ODQgMTAwNjQ0CistLS0gYS9zcmMvc3lzdGVtZGhvb2suYworKysrIGIvc3JjL3N5c3RlbWRob29rLmMKK0BAIC0yMzgsNiArMjM4LDExIEBAIHN0YXRpYyBjaGFyICpnZXRfcHJvY2Vzc19jZ3JvdXBfc3Vic3lzdGVtX3BhdGgoaW50IHBpZCwgY29uc3QgY2hhciAqc3Vic3lzdGVtKSB7Cisgc3RhdGljIGludCBtb3VudF9jZ3JvdXAoY29uc3QgY2hhciAqcm9vdGZzLCBjb25zdCBjaGFyICpvcHRpb25zLCBjaGFyICpzeXN0ZW1kX3BhdGgpCisgeworIAlfY2xlYW51cF9mcmVlXyBjaGFyICpjZ3JvdXBfcGF0aCA9IE5VTEw7CisrCWNoYXIgKnNwYXRoLCAqZHBhdGg7CisrCURJUiAqZGlyOworKwlzdHJ1Y3QgZGlyZW50ICpkOworKwljaGFyIGxpbmtbODBdOworKwlpbnQgZ290OworIAorIAlpZiAoYXNwcmludGYoJmNncm91cF9wYXRoLCAiJXMvJXMiLCByb290ZnMsIENHUk9VUF9ST09UKSA8IDApIHsKKyAJCXByX3BlcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBwYXRoIGZvciAlcyIsIENHUk9VUF9ST09UKTsKK0BAIC0yNTYsNiArMjYxLDQ2IEBAIHN0YXRpYyBpbnQgbW91bnRfY2dyb3VwKGNvbnN0IGNoYXIgKnJvb3RmcywgY29uc3QgY2hhciAqb3B0aW9ucywgY2hhciAqc3lzdGVtZF9wCisgCQlwcl9wZXJyb3IoIkZhaWxlZCB0byBta2RpciBuZXcgZGVzdDogJXMiLCBzeXN0ZW1kX3BhdGgpOworIAkJcmV0dXJuIC0xOworIAl9CisrCS8qIENyZWF0ZSBhbGwgYWRkaXRpb25hbCBjZ3JvdXAgbW91bnRzIHdoaWNoIGFyZSBpbiB0aGUgcm9vdCBuYW1lc3BhY2UgKi8KKysJZGlyID0gb3BlbmRpcihDR1JPVVBfUk9PVCk7CisrCWlmICghZGlyKSB7CisrCQlwcl9wZXJyb3IoIkZhaWxlZCB0byBvcGVuICVzIiwgQ0dST1VQX1JPT1QpOworKwkJcmV0dXJuIC0xOworKwl9CisrCS8qIFNraXAgIi4iIGFuZCAiLi4iICovCisrCXJlYWRkaXIoZGlyKTsKKysJcmVhZGRpcihkaXIpOworKwl3aGlsZSAoKGQgPSByZWFkZGlyKGRpcikpKSB7CisrCQkvKiBTeXN0ZW1kIGlzIGFscmVhZHkgaGFuZGxlZCBhYm92ZSAqLworKwkJaWYgKHN0cmNtcChkLT5kX25hbWUsICJzeXN0ZW1kIikgPT0gMCkgeworKwkJCWNvbnRpbnVlOworKwkJfQorKwkJaWYgKGFzcHJpbnRmKCZzcGF0aCwgIiVzLyVzIiwgQ0dST1VQX1JPT1QsIGQtPmRfbmFtZSkgPCAwKSB7CisrCQkJcHJfcGVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIHBhdGggZm9yICVzIiwgZC0+ZF9uYW1lKTsKKysJCQlyZXR1cm4gLTE7CisrCQl9CisrCQlpZiAoYXNwcmludGYoJmRwYXRoLCAiJXMlcy8lcyIsIHJvb3RmcywgQ0dST1VQX1JPT1QsIGQtPmRfbmFtZSkgPCAwKSB7CisrCQkJcHJfcGVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIHBhdGggZm9yICVzIiwgZC0+ZF9uYW1lKTsKKysJCQlyZXR1cm4gLTE7CisrCQl9CisrCQlnb3QgPSByZWFkbGluayhzcGF0aCwgbGluaywgc2l6ZW9mKGxpbmspIC0gMSk7CisrCQlpZiAoZ290ID4gMCkgeworKwkJCWxpbmtbZ290XSA9ICdcMCc7CisrCQkJc3ltbGluayhsaW5rLCBkcGF0aCk7CisrCQl9IGVsc2UgeworKwkJCWlmICgobWFrZXBhdGgoZHBhdGgsIDA3NTUpID09IC0xKSAmJiAoZXJybm8gIT0gRUVYSVNUKSkgeworKwkJCQlwcl9wZXJyb3IoIkZhaWxlZCB0byBta2RpciBuZXcgZGVzdDogJXMiLCBkcGF0aCk7CisrCQkJCXJldHVybiAtMTsKKysJCQl9CisrCQkJaWYgKGJpbmRfbW91bnQoc3BhdGgsIGRwYXRoLCBmYWxzZSkpIHsKKysJCQkJcHJfcGVycm9yKCJGYWlsZWQgdG8gYmluZCBtb3VudCAlcyBvbiAlcyIsIHNwYXRoLCBkcGF0aCk7CisrCQkJCXJldHVybiAtMTsKKysJCQl9CisrCQl9CisrCQlmcmVlKHNwYXRoKTsKKysJCWZyZWUoZHBhdGgpOworKwl9CisrCWNsb3NlZGlyKGRpcik7CisgCWlmIChtb3VudChjZ3JvdXBfcGF0aCwgY2dyb3VwX3BhdGgsICJiaW5kIiwgTVNfUkVNT1VOVHxNU19CSU5EfE1TX1JET05MWSwgIiIpID09IC0xKSB7CisgCQlwcl9wZXJyb3IoIkZhaWxlZCB0byByZW1vdW50ICVzIHJlYWRvbmx5IiwgY2dyb3VwX3BhdGgpOworIAkJcmV0dXJuIC0xOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktc3lzdGVtZC1ob29rL29jaS1zeXN0ZW1kLWhvb2tfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktc3lzdGVtZC1ob29rL29jaS1zeXN0ZW1kLWhvb2tfZ2l0LmJiCmluZGV4IGZjODg5MDUuLmUwN2I3NDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXN5c3RlbWQtaG9vay9vY2ktc3lzdGVtZC1ob29rX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1zeXN0ZW1kLWhvb2svb2NpLXN5c3RlbWQtaG9va19naXQuYmIKQEAgLTEwLDYgKzEwLDcgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9wcm9qZWN0YXRvbWljL29jaS1zeXN0ZW1kLWhvb2sgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1zZWxpbnV4LWRyb3Atc2VsaW51eC1zdXBwb3J0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWRyb3Atc2VsaW51eC1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWFkZGl0aW9uYWwtY2dyb3VwLW1vdW50cy1mcm9tLXJvb3QtTlMtYXV0b21hdGljYS5wYXRjaCBcCiAiCiAKIFBWID0gIjAuMC4xK2dpdCR7U1JDUFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtRGlzYWJsZS1idWlsZGluZy1yZWN2dHR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtRGlzYWJsZS1idWlsZGluZy1yZWN2dHR5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTFmNjk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLURpc2FibGUtYnVpbGRpbmctcmVjdnR0eS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gYWEyZmM3YjBlYWNiYTYxMTc1ZjA4M2NjOGQ4YWRjMjMzYmNkMDU3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgQmFya2VyIDxwYmFya2VyQHRvZ2FubGFicy5jb20+Ci1EYXRlOiBUaHUsIDEyIE9jdCAyMDE3IDExOjM0OjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgYnVpbGRpbmcgcmVjdnR0eQotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgotVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0tLS0KLSBNYWtlZmlsZSB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAwZmNmNTA4Li4yNGY0N2RjIDEwMDY0NAotLS0tIGEvc3JjL2ltcG9ydC9NYWtlZmlsZQotKysrIGIvc3JjL2ltcG9ydC9NYWtlZmlsZQotQEAgLTM4LDcgKzM4LDYgQEAgY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5OiAkKFNPVVJDRVMpCi0gCi0gc3RhdGljOiAkKFNPVVJDRVMpCi0gCUNHT19FTkFCTEVEPTEgJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28gc3RhdGljX2J1aWxkIiAtbGRmbGFncyAiLXcgLWV4dGxkZmxhZ3MgLXN0YXRpYyAtWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLW8gcnVuYyAuCi0tCUNHT19FTkFCTEVEPTEgJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28gc3RhdGljX2J1aWxkIiAtbGRmbGFncyAiLXcgLWV4dGxkZmxhZ3MgLXN0YXRpYyAtWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLW8gY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5IC4vY29udHJpYi9jbWQvcmVjdnR0eQotIAotIHJlbGVhc2U6Ci0gCUBmbGFnX2xpc3Q9KHNlY2NvbXAgc2VsaW51eCBhcHBhcm1vciBzdGF0aWMpOyBcCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLVVwZGF0ZS10by1ydW50aW1lLXNwZWMtMTk4ZjIzZjgyN2VlYTM5N2Q0MzMxZDdlYjA0OGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMS1VcGRhdGUtdG8tcnVudGltZS1zcGVjLTE5OGYyM2Y4MjdlZWEzOTdkNDMzMWQ3ZWIwNDhkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2M3NmZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLVVwZGF0ZS10by1ydW50aW1lLXNwZWMtMTk4ZjIzZjgyN2VlYTM5N2Q0MzMxZDdlYjA0OGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi1Gcm9tIGU4ZWY2MDI1YTRmNDg2MjBiYWY5MTczN2NkMzdlYjVlNmE0MGY0OGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXN0aW4gQ29ybWFjayA8anVzdGluLmNvcm1hY2tAZG9ja2VyLmNvbT4KLURhdGU6IEZyaSwgMjMgSnVuIDIwMTcgMTc6MTQ6NTkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIFVwZGF0ZSB0byBydW50aW1lIHNwZWMKLSAxOThmMjNmODI3ZWVhMzk3ZDQzMzFkN2ViMDQ4ZDlkNGM3ZmY3YmVlCi0KLVVwZGF0ZXMgbWVtb3J5IGxpbWl0cyB0byBiZSBpbnQ2NCwgYW5kIHJlbW92ZXMgUGxhdGZvcm0gZnJvbSBzcGVjLgotCi1TaWduZWQtb2ZmLWJ5OiBKdXN0aW4gQ29ybWFjayA8anVzdGluLmNvcm1hY2tAZG9ja2VyLmNvbT4KLS0tLQotIHZlbmRvci5jb25mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSAuLi4vb3BlbmNvbnRhaW5lcnMvcnVudGltZS1zcGVjL3NwZWNzLWdvL2NvbmZpZy5nbyB8IDIzICsrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS92ZW5kb3IuY29uZiBiL3ZlbmRvci5jb25mCi1pbmRleCBlMjNlN2VhNy4uMDlhOGE5MjQgMTAwNjQ0Ci0tLS0gYS9zcmMvaW1wb3J0L3ZlbmRvci5jb25mCi0rKysgYi9zcmMvaW1wb3J0L3ZlbmRvci5jb25mCi1AQCAtMSw3ICsxLDcgQEAKLSAjIE9DSSBydW50aW1lLXNwZWMuIFdoZW4gdXBkYXRpbmcgdGhpcywgbWFrZSBzdXJlIHlvdSB1c2UgYSB2ZXJzaW9uIHRhZyByYXRoZXIKLSAjIHRoYW4gYSBjb21taXQgSUQgc28gaXQncyBtdWNoIG1vcmUgb2J2aW91cyB3aGF0IHZlcnNpb24gb2YgdGhlIHNwZWMgd2UgYXJlCi0gIyB1c2luZy4KLS1naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtc3BlYyAyMzljNGU0NGYyYTYxMmVkODVmNmRiOWM2NjI0N2FhMzNmNDM3ZTkxCi0rZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXNwZWMgMTk4ZjIzZjgyN2VlYTM5N2Q0MzMxZDdlYjA0OGQ5ZDRjN2ZmN2JlZQotICMgQ29yZSBsaWJjb250YWluZXIgZnVuY3Rpb25hbGl0eS4KLSBnaXRodWIuY29tL21ydW5hbHAvZmlsZXV0aWxzIGVkODY5YjAyOTY3NGMwZTljZTRjMGRmYTc4MTQwNWMyZDk5NDZkMDgKLSBnaXRodWIuY29tL29wZW5jb250YWluZXJzL3NlbGludXggdjEuMC4wLXJjMQotZGlmZiAtLWdpdCBhL3ZlbmRvci9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtc3BlYy9zcGVjcy1nby9jb25maWcuZ28gYi92ZW5kb3IvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXNwZWMvc3BlY3MtZ28vY29uZmlnLmdvCi1pbmRleCA4YmY4ZDkyNC4uNjhhYjExMmUgMTAwNjQ0Ci0tLS0gYS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtc3BlYy9zcGVjcy1nby9jb25maWcuZ28KLSsrKyBiL3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS1zcGVjL3NwZWNzLWdvL2NvbmZpZy5nbwotQEAgLTYsOCArNiw2IEBAIGltcG9ydCAib3MiCi0gdHlwZSBTcGVjIHN0cnVjdCB7Ci0gCS8vIFZlcnNpb24gb2YgdGhlIE9wZW4gQ29udGFpbmVyIFJ1bnRpbWUgU3BlY2lmaWNhdGlvbiB3aXRoIHdoaWNoIHRoZSBidW5kbGUgY29tcGxpZXMuCi0gCVZlcnNpb24gc3RyaW5nIGBqc29uOiJvY2lWZXJzaW9uImAKLS0JLy8gUGxhdGZvcm0gc3BlY2lmaWVzIHRoZSBjb25maWd1cmF0aW9uJ3MgdGFyZ2V0IHBsYXRmb3JtLgotLQlQbGF0Zm9ybSBQbGF0Zm9ybSBganNvbjoicGxhdGZvcm0iYAotIAkvLyBQcm9jZXNzIGNvbmZpZ3VyZXMgdGhlIGNvbnRhaW5lciBwcm9jZXNzLgotIAlQcm9jZXNzICpQcm9jZXNzIGBqc29uOiJwcm9jZXNzLG9taXRlbXB0eSJgCi0gCS8vIFJvb3QgY29uZmlndXJlcyB0aGUgY29udGFpbmVyJ3Mgcm9vdCBmaWxlc3lzdGVtLgotQEAgLTEwMSwxNSArOTksNiBAQCB0eXBlIFJvb3Qgc3RydWN0IHsKLSAJUmVhZG9ubHkgYm9vbCBganNvbjoicmVhZG9ubHksb21pdGVtcHR5ImAKLSB9Ci0gCi0tLy8gUGxhdGZvcm0gc3BlY2lmaWVzIE9TIGFuZCBhcmNoIGluZm9ybWF0aW9uIGZvciB0aGUgaG9zdCBzeXN0ZW0gdGhhdCB0aGUgY29udGFpbmVyCi0tLy8gaXMgY3JlYXRlZCBmb3IuCi0tdHlwZSBQbGF0Zm9ybSBzdHJ1Y3QgewotLQkvLyBPUyBpcyB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KLS0JT1Mgc3RyaW5nIGBqc29uOiJvcyJgCi0tCS8vIEFyY2ggaXMgdGhlIGFyY2hpdGVjdHVyZQotLQlBcmNoIHN0cmluZyBganNvbjoiYXJjaCJgCi0tfQotLQotIC8vIE1vdW50IHNwZWNpZmllcyBhIG1vdW50IGZvciBhIGNvbnRhaW5lci4KLSB0eXBlIE1vdW50IHN0cnVjdCB7Ci0gCS8vIERlc3RpbmF0aW9uIGlzIHRoZSBhYnNvbHV0ZSBwYXRoIHdoZXJlIHRoZSBtb3VudCB3aWxsIGJlIHBsYWNlZCBpbiB0aGUgY29udGFpbmVyLgotQEAgLTI4NCwxNSArMjczLDE1IEBAIHR5cGUgTGludXhCbG9ja0lPIHN0cnVjdCB7Ci0gLy8gTGludXhNZW1vcnkgZm9yIExpbnV4IGNncm91cCAnbWVtb3J5JyByZXNvdXJjZSBtYW5hZ2VtZW50Ci0gdHlwZSBMaW51eE1lbW9yeSBzdHJ1Y3QgewotIAkvLyBNZW1vcnkgbGltaXQgKGluIGJ5dGVzKS4KLS0JTGltaXQgKnVpbnQ2NCBganNvbjoibGltaXQsb21pdGVtcHR5ImAKLSsJTGltaXQgKmludDY0IGBqc29uOiJsaW1pdCxvbWl0ZW1wdHkiYAotIAkvLyBNZW1vcnkgcmVzZXJ2YXRpb24gb3Igc29mdF9saW1pdCAoaW4gYnl0ZXMpLgotLQlSZXNlcnZhdGlvbiAqdWludDY0IGBqc29uOiJyZXNlcnZhdGlvbixvbWl0ZW1wdHkiYAotKwlSZXNlcnZhdGlvbiAqaW50NjQgYGpzb246InJlc2VydmF0aW9uLG9taXRlbXB0eSJgCi0gCS8vIFRvdGFsIG1lbW9yeSBsaW1pdCAobWVtb3J5ICsgc3dhcCkuCi0tCVN3YXAgKnVpbnQ2NCBganNvbjoic3dhcCxvbWl0ZW1wdHkiYAotKwlTd2FwICppbnQ2NCBganNvbjoic3dhcCxvbWl0ZW1wdHkiYAotIAkvLyBLZXJuZWwgbWVtb3J5IGxpbWl0IChpbiBieXRlcykuCi0tCUtlcm5lbCAqdWludDY0IGBqc29uOiJrZXJuZWwsb21pdGVtcHR5ImAKLSsJS2VybmVsICppbnQ2NCBganNvbjoia2VybmVsLG9taXRlbXB0eSJgCi0gCS8vIEtlcm5lbCBtZW1vcnkgbGltaXQgZm9yIHRjcCAoaW4gYnl0ZXMpCi0tCUtlcm5lbFRDUCAqdWludDY0IGBqc29uOiJrZXJuZWxUQ1Asb21pdGVtcHR5ImAKLSsJS2VybmVsVENQICppbnQ2NCBganNvbjoia2VybmVsVENQLG9taXRlbXB0eSJgCi0gCS8vIEhvdyBhZ2dyZXNzaXZlIHRoZSBrZXJuZWwgd2lsbCBzd2FwIG1lbW9yeSBwYWdlcy4KLSAJU3dhcHBpbmVzcyAqdWludDY0IGBqc29uOiJzd2FwcGluZXNzLG9taXRlbXB0eSJgCi0gfQotQEAgLTQ4Niw3ICs0NzUsNyBAQCB0eXBlIFdpbmRvd3NOZXR3b3JrIHN0cnVjdCB7Ci0gCUVuZHBvaW50TGlzdCBbXXN0cmluZyBganNvbjoiZW5kcG9pbnRMaXN0LG9taXRlbXB0eSJgCi0gCS8vIFNwZWNpZmllcyBpZiB1bnF1YWxpZmllZCBETlMgbmFtZSByZXNvbHV0aW9uIGlzIGFsbG93ZWQuCi0gCUFsbG93VW5xdWFsaWZpZWRETlNRdWVyeSBib29sIGBqc29uOiJhbGxvd1VucXVhbGlmaWVkRE5TUXVlcnksb21pdGVtcHR5ImAKLS0JLy8gQ29tbWEgc2VwZXJhdGVkIGxpc3Qgb2YgRE5TIHN1ZmZpeGVzIHRvIHVzZSBmb3IgbmFtZSByZXNvbHV0aW9uLgotKwkvLyBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBETlMgc3VmZml4ZXMgdG8gdXNlIGZvciBuYW1lIHJlc29sdXRpb24uCi0gCUROU1NlYXJjaExpc3QgW11zdHJpbmcgYGpzb246IkROU1NlYXJjaExpc3Qsb21pdGVtcHR5ImAKLSAJLy8gTmFtZSAoSUQpIG9mIHRoZSBjb250YWluZXIgdGhhdCB3ZSB3aWxsIHNoYXJlIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suCi0gCU5ldHdvcmtTaGFyZWRDb250YWluZXJOYW1lIHN0cmluZyBganNvbjoibmV0d29ya1NoYXJlZENvbnRhaW5lck5hbWUsb21pdGVtcHR5ImAKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtVXNlLWNvcnJlY3QtZ28tY3Jvc3MtY29tcGlsZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNTE3MWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtVXNlLWNvcnJlY3QtZ28tY3Jvc3MtY29tcGlsZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1Gcm9tIDAzN2MyMGIzYjNlZjVlOWVhZDAyODJhYTY0ZjliODhjMGMxODkzNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgotRGF0ZTogVGh1LCA1IE9jdCAyMDE3IDEzOjE0OjQwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBjb3JyZWN0IGdvIGNyb3NzLWNvbXBpbGVyCi0KLVdlIG5lZWQgdG8gdXNlICcke0dPfScgYXMgc2V0IGJ5IE9wZW5FbWJlZGRlZCBpbnN0ZWFkIG9mIGp1c3QgJ2dvJy4gSnVzdCB1c2luZwotJ2dvJyB3aWxsIGludm9rZSBnby1uYXRpdmUuCi0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgQmFya2VyIDxwYmFya2VyQHRvZ2FubGFicy5jb20+Ci1VcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUKLS0tLQotIE1ha2VmaWxlIHwgMjAgKysrKysrKysrKy0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA4MTE3ODkyLi4wZmNmNTA4IDEwMDY0NAotLS0tIGEvc3JjL2ltcG9ydC9NYWtlZmlsZQotKysrIGIvc3JjL2ltcG9ydC9NYWtlZmlsZQotQEAgLTI3LDE4ICsyNywxOCBAQCBTSEVMTCA6PSAkKHNoZWxsIGNvbW1hbmQgLXYgYmFzaCAyPi9kZXYvbnVsbCkKLSAuREVGQVVMVDogcnVuYwotIAotIHJ1bmM6ICQoU09VUkNFUykKLS0JZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIi1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJChCVUlMRFRBR1MpIiAtbyBydW5jIC4KLSsJJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIi1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJChCVUlMRFRBR1MpIiAtbyBydW5jIC4KLSAKLSBhbGw6IHJ1bmMgcmVjdnR0eQotIAotIHJlY3Z0dHk6IGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eQotIAotIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eTogJChTT1VSQ0VTKQotLQlnbyBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtbGRmbGFncyAiLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC10YWdzICIkKEJVSUxEVEFHUykiIC1vIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eSAuL2NvbnRyaWIvY21kL3JlY3Z0dHkKLSsJJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIi1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJChCVUlMRFRBR1MpIiAtbyBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHkgLi9jb250cmliL2NtZC9yZWN2dHR5Ci0gCi0gc3RhdGljOiAkKFNPVVJDRVMpCi0tCUNHT19FTkFCTEVEPTEgZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28gc3RhdGljX2J1aWxkIiAtbGRmbGFncyAiLXcgLWV4dGxkZmxhZ3MgLXN0YXRpYyAtWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLW8gcnVuYyAuCi0tCUNHT19FTkFCTEVEPTEgZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28gc3RhdGljX2J1aWxkIiAtbGRmbGFncyAiLXcgLWV4dGxkZmxhZ3MgLXN0YXRpYyAtWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLW8gY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5IC4vY29udHJpYi9jbWQvcmVjdnR0eQotKwlDR09fRU5BQkxFRD0xICQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgY2dvIHN0YXRpY19idWlsZCIgLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIHJ1bmMgLgotKwlDR09fRU5BQkxFRD0xICQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgY2dvIHN0YXRpY19idWlsZCIgLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eSAuL2NvbnRyaWIvY21kL3JlY3Z0dHkKLSAKLSByZWxlYXNlOgotIAlAZmxhZ19saXN0PShzZWNjb21wIHNlbGludXggYXBwYXJtb3Igc3RhdGljKTsgXAotQEAgLTYyLDE1ICs2MiwxNSBAQCByZWxlYXNlOgotIAkJCUNHT19FTkFCTEVEPTE7IFwKLSAJCX07IFwKLSAJCWVjaG8gIkJ1aWxkaW5nIHRhcmdldDogJCRvdXRwdXQiOyBcCi0tCQlnbyBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtbGRmbGFncyAiJCRsZGZsYWdzICQoRVhUUkFfTERGTEFHUykiIC10YWdzICIkJHRhZ3MiIC1vICIkJG91dHB1dCIgLjsgXAotKwkJJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIiQkbGRmbGFncyAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJCR0YWdzIiAtbyAiJCRvdXRwdXQiIC47IFwKLSAJZG9uZQotIAotIGRidWlsZDogcnVuY2ltYWdlCi0gCWRvY2tlciBydW4gLS1ybSAtdiAkKENVUkRJUik6L2dvL3NyYy8kKFBST0pFQ1QpIC0tcHJpdmlsZWdlZCAkKFJVTkNfSU1BR0UpIG1ha2UgY2xlYW4gYWxsCi0gCi0gbGludDoKLS0JZ28gdmV0ICQoYWxscGFja2FnZXMpCi0tCWdvIGZtdCAkKGFsbHBhY2thZ2VzKQotKwkkKEdPKSB2ZXQgJChhbGxwYWNrYWdlcykKLSsJJChHTykgZm10ICQoYWxscGFja2FnZXMpCi0gCi0gbWFuOgotIAltYW4vbWQybWFuLWFsbC5zaAotQEAgLTg4LDcgKzg4LDcgQEAgdW5pdHRlc3Q6IHJ1bmNpbWFnZQotIAlkb2NrZXIgcnVuIC1lIFRFU1RGTEFHUyAtdCAtLXByaXZpbGVnZWQgLS1ybSAtdiAkKENVUkRJUik6L2dvL3NyYy8kKFBST0pFQ1QpICQoUlVOQ19JTUFHRSkgbWFrZSBsb2NhbHVuaXR0ZXN0Ci0gCi0gbG9jYWx1bml0dGVzdDogYWxsCi0tCWdvIHRlc3QgLXRpbWVvdXQgM20gLXRhZ3MgIiQoQlVJTERUQUdTKSIgJHtURVNURkxBR1N9IC12ICQoYWxscGFja2FnZXMpCi0rCSQoR08pIHRlc3QgLXRpbWVvdXQgM20gLXRhZ3MgIiQoQlVJTERUQUdTKSIgJHtURVNURkxBR1N9IC12ICQoYWxscGFja2FnZXMpCi0gCi0gaW50ZWdyYXRpb246IHJ1bmNpbWFnZQotIAlkb2NrZXIgcnVuIC1lIFRFU1RGTEFHUyAtdCAtLXByaXZpbGVnZWQgLS1ybSAtdiAkKENVUkRJUik6L2dvL3NyYy8kKFBST0pFQ1QpICQoUlVOQ19JTUFHRSkgbWFrZSBsb2NhbGludGVncmF0aW9uCi1AQCAtMTM0LDEwICsxMzQsMTAgQEAgY2xlYW46Ci0gdmFsaWRhdGU6Ci0gCXNjcmlwdC92YWxpZGF0ZS1nb2ZtdAotIAlzY3JpcHQvdmFsaWRhdGUtc2hmbXQKLS0JZ28gdmV0ICQoYWxscGFja2FnZXMpCi0rCSQoR08pIHZldCAkKGFsbHBhY2thZ2VzKQotIAotIGNpOiB2YWxpZGF0ZSBsb2NhbHRlc3QKLSAKLSAjIG1lbW9pemUgYWxscGFja2FnZXMsIHNvIHRoYXQgaXQncyBleGVjdXRlZCBvbmx5IG9uY2UgYW5kIG9ubHkgaWYgdXNlZAotLV9hbGxwYWNrYWdlcyA9ICQoc2hlbGwgZ28gbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKQotK19hbGxwYWNrYWdlcyA9ICQoc2hlbGwgJChHTykgbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKQotIGFsbHBhY2thZ2VzID0gJChpZiAkKF9fYWxscGFja2FnZXMpLCwkKGV2YWwgX19hbGxwYWNrYWdlcyA6PSAkJChfYWxscGFja2FnZXMpKSkkKF9fYWxscGFja2FnZXMpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLWJ1aWxkLWRyb3AtcmVjdnR0eS1hbmQtdXNlLUdPQlVJTERGTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLWJ1aWxkLWRyb3AtcmVjdnR0eS1hbmQtdXNlLUdPQlVJTERGTEFHUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODg1YWFmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtYnVpbGQtZHJvcC1yZWN2dHR5LWFuZC11c2UtR09CVUlMREZMQUdTLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gYTlhMmI5ZTcyMDI3ZDBiMjM1N2Y2ZGZlOGIxNTQ3NjJhYWE4ZGQwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxOSBBcHIgMjAxOCAxNjozOTo0MSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogZHJvcCByZWN2dHR5IGFuZCB1c2UgR09CVUlMREZMQUdTCisKK1NpZ25lZC1vZmYtYnk6IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUgfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9pbXBvcnQvTWFrZWZpbGUgYi9zcmMvaW1wb3J0L01ha2VmaWxlCitpbmRleCBjNmRlMTFkLi4wZTliZGRiIDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC9NYWtlZmlsZQorKysrIGIvc3JjL2ltcG9ydC9NYWtlZmlsZQorQEAgLTM5LDggKzM5LDcgQEAgY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5OiAkKFNPVVJDRVMpCisgCSQoR08pIGJ1aWxkIC1idWlsZG1vZGU9cGllICQoRVhUUkFfRkxBR1MpIC1sZGZsYWdzICItWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLXRhZ3MgIiQoQlVJTERUQUdTKSIgLW8gY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5IC4vY29udHJpYi9jbWQvcmVjdnR0eQorIAorIHN0YXRpYzogJChTT1VSQ0VTKQorLQlDR09fRU5BQkxFRD0xICQoR08pIGJ1aWxkICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgbmV0Z28gY2dvIHN0YXRpY19idWlsZCIgLWluc3RhbGxzdWZmaXggbmV0Z28gLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIHJ1bmMgLgorLQlDR09fRU5BQkxFRD0xICQoR08pIGJ1aWxkICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgbmV0Z28gY2dvIHN0YXRpY19idWlsZCIgLWluc3RhbGxzdWZmaXggbmV0Z28gLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eSAuL2NvbnRyaWIvY21kL3JlY3Z0dHkKKysJQ0dPX0VOQUJMRUQ9MSAkKEdPKSBidWlsZCAtdGFncyAiJChCVUlMRFRBR1MpIG5ldGdvIGNnbyBzdGF0aWNfYnVpbGQiIC1pbnN0YWxsc3VmZml4IG5ldGdvIC1sZGZsYWdzICItdyAtZXh0bGRmbGFncyAtc3RhdGljIC1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAkKEdPQlVJTERGTEFHUykgLW8gcnVuYyAuCisgCisgcmVsZWFzZToKKyAJc2NyaXB0L3JlbGVhc2Uuc2ggLXIgcmVsZWFzZS8kKFZFUlNJT04pIC12ICQoVkVSU0lPTikKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtcnVuYy1kb2NrZXItU0lHVVNSMS1kYWVtb25pemUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMS1ydW5jLWRvY2tlci1TSUdVU1IxLWRhZW1vbml6ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2NiY2NiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtcnVuYy1kb2NrZXItU0lHVVNSMS1kYWVtb25pemUucGF0Y2gKQEAgLTAsMCArMSwxMjkgQEAKK0Zyb20gY2Q3ZDc2YTZkMWVjYjE4NTZmNmVkNjY2ZmI1YzMwZGMxMDVhYTk0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDUgRGVjIDIwMTcgMTg6Mjg6MjggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcnVuYy1kb2NrZXI6IEFsbG93ICJydW4gc3RhcnQgLi4uIiB0byBkYWVtb25pemUgd2l0aCAkU0lHVVNSMV9QQVJFTlRfUElECisKK1RoZSBydW5jLWRvY2tlciBoYXMgYWxsIHRoZSBjb2RlIGluIGl0IHRvIHByb3Blcmx5IHJ1biBhIHN0b3AgaG9vayBpZgoreW91IHVzZSBpdCBpbiB0aGUgZm9yZWdyb3VuZC4gIEl0IGRvZXNuJ3Qgd29yayBpbiB0aGUgYmFjayBncm91bmQKK2JlY2F1c2UgdGhlcmUgaXMgbm8gd2F5IGZvciBhIGdvbGFuZyBhcHBsaWNhdGlvbiB0byBmb3JrIGEgY2hpbGQgZXhpdAorb3V0IG9mIHRoZSBwYXJlbnQgcHJvY2VzcyBiZWNhdXNlIGFsbCB0aGUgZ29sYW5nIHRocmVhZHMgc3RheSB3aXRoIHRoZQorcGFyZW50LgorCitUaGlzIHBhdGNoIGhhcyB0aHJlZSBwYXJ0cyB0aGF0IGhhcHBlbiBPTkxZIHdoZW4gJFNJR1VTUjFfUEFSRU5UX1BJRAoraXMgc2V0LgorCisxKSBUaGUgY29kZSB3YXMgY29waWVkIHdoaWNoIHBlcmZvcm1zIHRoZSBub3JtYWwgdGhlIHNpZ25hbCBoYW5kbGluZworICAgYmxvY2sgd2hpY2ggaXMgdXNlZCBmb3IgdGhlIGZvcmVncm91bmQgb3BlcmF0aW9uIG9mIHJ1bmMuCisKKzIpIEF0IHRoZSBwb2ludCB3aGVyZSBydW5jIHN0YXJ0IHdvdWxkIG5vcm1hbGx5IGV4aXQsIGl0IGNsb3NlcworICAgc3RkaW4vc3Rkb3V0L3N0ZGVyciBzbyBpdCB3b3VsZCBiZSBwb3NzaWJsZSB0byBkYWVtb25pemUgInJ1bmMgc3RhcnQgLi4uIi4KKworMykgVGhlIGNvZGUgdG8gc2VuZCBhIFNJR1VTUjEgdG8gdGhlIHBhcmVudCBwcm9jZXNzIHdhcyBhZGRlZC4gIFRoZQorICAgaWRlYSBiZWluZyB0aGF0IGEgcGFyZW50IHByb2Nlc3Mgd291bGQgc2ltcGx5IGV4aXQgYXQgdGhhdCBwb2ludAorICAgYmVjYXVzZSBpdCB3YXMgYmxvY2tpbmcgdW50aWwgcnVuYyBwZXJmb3JtZWQgZXZlcnl0aGluZyBpdCB3YXMKKyAgIHJlcXVpcmVkIHRvIHBlcmZvcm0uCisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CistLS0KKyBzaWduYWxzLmdvICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQorIHV0aWxzX2xpbnV4LmdvIHwgIDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvc3JjL2ltcG9ydC9zaWduYWxzLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2ltcG9ydC9zaWduYWxzLmdvCisrKysgZ2l0L3NyYy9pbXBvcnQvc2lnbmFscy5nbworQEAgLTYsNiArNiw3IEBACisgCSJvcyIKKyAJIm9zL3NpZ25hbCIKKyAJInN5c2NhbGwiIC8vIG9ubHkgZm9yIFNpZ25hbAorKwkic3RyY29udiIKKyAKKyAJImdpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVuYy9saWJjb250YWluZXIiCisgCSJnaXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bmMvbGliY29udGFpbmVyL3N5c3RlbSIKK0BAIC01Niw5ICs1Nyw2IEBACisgZnVuYyAoaCAqc2lnbmFsSGFuZGxlcikgZm9yd2FyZChwcm9jZXNzICpsaWJjb250YWluZXIuUHJvY2VzcywgdHR5ICp0dHksIGRldGFjaCBib29sKSAoaW50LCBlcnJvcikgeworIAkvLyBtYWtlIHN1cmUgd2Uga25vdyB0aGUgcGlkIG9mIG91ciBtYWluIHByb2Nlc3Mgc28gdGhhdCB3ZSBjYW4gcmV0dXJuCisgCS8vIGFmdGVyIGl0IGRpZXMuCistCWlmIGRldGFjaCAmJiBoLm5vdGlmeVNvY2tldCA9PSBuaWwgeworLQkJcmV0dXJuIDAsIG5pbAorLQl9CisgCisgCXBpZDEsIGVyciA6PSBwcm9jZXNzLlBpZCgpCisgCWlmIGVyciAhPSBuaWwgeworQEAgLTY4LDEyICs2Niw2MSBAQAorIAlpZiBoLm5vdGlmeVNvY2tldCAhPSBuaWwgeworIAkJaWYgZGV0YWNoIHsKKyAJCQloLm5vdGlmeVNvY2tldC5ydW4ocGlkMSkKKy0JCQlyZXR1cm4gMCwgbmlsCisgCQl9IGVsc2UgeworIAkJCWdvIGgubm90aWZ5U29ja2V0LnJ1bigwKQorIAkJfQorIAl9CisgCisrCWlmIChkZXRhY2gpIHsKKysJCS8vIFRoaXMgYWxsb3dzIHRoZSBwYXJlbnQgcHJvY2VzcyB0byBkYWVtb25pemUgdGhpcyBwcm9jZXNzCisrCQkvLyBzbyBsb25nIGFzIHN0ZGluL3N0ZGVyci9zdGRvdXQgYXJlIGNsb3NlZAorKwkJaWYgZW52VmFsIDo9IG9zLkdldGVudigiU0lHVVNSMV9QQVJFTlRfUElEIik7IGVudlZhbCAhPSAiIiB7CisrCQkJLy8gQ2xvc2Ugc3RkaW4vc3Rkb3V0L3N0ZGVycgorKwkJCW9zLlN0ZGluLkNsb3NlKCkKKysJCQlvcy5TdGRvdXQuQ2xvc2UoKQorKwkJCW9zLlN0ZGVyci5DbG9zZSgpCisrCQkJLy8gTm90aWZ5IHBhcmVudCB0byBkZXRhY2gKKysJCQlpLCBlcnIgOj0gc3RyY29udi5BdG9pKGVudlZhbCkKKysJCQlpZiAoZXJyICE9IG5pbCkgeworKwkJCQlyZXR1cm4gMCwgbmlsCisrCQkJfQorKwkJCXVuaXguS2lsbChpLCB1bml4LlNJR1VTUjEpCisrCQkJLy8gTG9vcCB3YWl0aW5nIG9uIHRoZSBjaGlsZCB0byBzaWduYWwgb3IgZXhpdCwKKysJCQkvLyBhZnRlciB3aGljaCBhbGwgc3RvcCBob29rcyB3aWxsIGJlIHJ1bgorKwkJCWZvciBzIDo9IHJhbmdlIGguc2lnbmFscyB7CisrCQkJCXN3aXRjaCBzIHsKKysJCQkJY2FzZSB1bml4LlNJR0NITEQ6CisrCQkJCQlleGl0cywgZXJyIDo9IGgucmVhcCgpCisrCQkJCQlpZiBlcnIgIT0gbmlsIHsKKysJCQkJCQlsb2dydXMuRXJyb3IoZXJyKQorKwkJCQkJfQorKwkJCQkJZm9yIF8sIGUgOj0gcmFuZ2UgZXhpdHMgeworKwkJCQkJCWxvZ3J1cy5XaXRoRmllbGRzKGxvZ3J1cy5GaWVsZHN7CisrCQkJCQkJCSJwaWQiOiAgICBlLnBpZCwKKysJCQkJCQkJInN0YXR1cyI6IGUuc3RhdHVzLAorKwkJCQkJCX0pLkRlYnVnKCJwcm9jZXNzIGV4aXRlZCIpCisrCQkJCQkJaWYgZS5waWQgPT0gcGlkMSB7CisrCQkJCQkJCS8vIGNhbGwgV2FpdCgpIG9uIHRoZSBwcm9jZXNzIGV2ZW4gdGhvdWdoIHdlIGFscmVhZHkgaGF2ZSB0aGUgZXhpdAorKwkJCQkJCQkvLyBzdGF0dXMgYmVjYXVzZSB3ZSBtdXN0IGVuc3VyZSB0aGF0IGFueSBvZiB0aGUgZ28gc3BlY2lmaWMgcHJvY2VzcworKwkJCQkJCQkvLyBmdW4gc3VjaCBhcyBmbHVzaGluZyBwaXBlcyBhcmUgY29tcGxldGUgYmVmb3JlIHdlIHJldHVybi4KKysJCQkJCQkJcHJvY2Vzcy5XYWl0KCkKKysJCQkJCQkJaWYgaC5ub3RpZnlTb2NrZXQgIT0gbmlsIHsKKysJCQkJCQkJCWgubm90aWZ5U29ja2V0LkNsb3NlKCkKKysJCQkJCQkJfQorKwkJCQkJCQlyZXR1cm4gZS5zdGF0dXMsIG5pbAorKwkJCQkJCX0KKysJCQkJCX0KKysJCQkJZGVmYXVsdDoKKysJCQkJCWxvZ3J1cy5EZWJ1Z2YoInNlbmRpbmcgc2lnbmFsIHRvIHByb2Nlc3MgJXMiLCBzKQorKwkJCQkJaWYgZXJyIDo9IHVuaXguS2lsbChwaWQxLCBzLihzeXNjYWxsLlNpZ25hbCkpOyBlcnIgIT0gbmlsIHsKKysJCQkJCQlsb2dydXMuRXJyb3IoZXJyKQorKwkJCQkJfQorKwkJCQl9CisrCQkJfQorKwkJfQorKwkJcmV0dXJuIDAsIG5pbAorKwl9CisrCisgCS8vIFBlcmZvcm0gdGhlIGluaXRpYWwgdHR5IHJlc2l6ZS4gQWx3YXlzIGlnbm9yZSBlcnJvcnMgcmVzaXppbmcgYmVjYXVzZQorIAkvLyBzdGRvdXQgbWlnaHQgaGF2ZSBkaXNhcHBlYXJlZCAoZHVlIHRvIHJhY2VzIHdpdGggd2hlbiBTSUdIVVAgaXMgc2VudCkuCisgCV8gPSB0dHkucmVzaXplKCkKK0luZGV4OiBnaXQvc3JjL2ltcG9ydC91dGlsc19saW51eC5nbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9pbXBvcnQvdXRpbHNfbGludXguZ28KKysrKyBnaXQvc3JjL2ltcG9ydC91dGlsc19saW51eC5nbworQEAgLTMzOCw3ICszMzgsNyBAQAorIAlpZiBlcnIgIT0gbmlsIHsKKyAJCXIudGVybWluYXRlKHByb2Nlc3MpCisgCX0KKy0JaWYgZGV0YWNoIHsKKysJaWYgKGRldGFjaCAmJiBvcy5HZXRlbnYoIlNJR1VTUjFfUEFSRU5UX1BJRCIpID09ICIiKSB7CisgCQlyZXR1cm4gMCwgbmlsCisgCX0KKyAJci5kZXN0cm95KCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAyLVJlbW92ZS1QbGF0Zm9ybS1hcy1uby1sb25nZXItaW4tT0NJLXNwZWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMi1SZW1vdmUtUGxhdGZvcm0tYXMtbm8tbG9uZ2VyLWluLU9DSS1zcGVjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTcwZGVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAyLVJlbW92ZS1QbGF0Zm9ybS1hcy1uby1sb25nZXItaW4tT0NJLXNwZWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1Gcm9tIGUxMTQ2MTgyYThjZWJiNWE2MTMzYTllMjk4YTVlNGFjZjk5NjUyZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXN0aW4gQ29ybWFjayA8anVzdGluLmNvcm1hY2tAZG9ja2VyLmNvbT4KLURhdGU6IEZyaSwgMjMgSnVuIDIwMTcgMTc6MTY6MDggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzNdIFJlbW92ZSBQbGF0Zm9ybSBhcyBubyBsb25nZXIgaW4gT0NJIHNwZWMKLQotVGhpcyB3YXMgbmV2ZXIgdXNlZCwganVzdCB2YWxpZGF0ZWQsIHNvIHdhcyByZW1vdmVkIGZyb20gc3BlYy4KLQotU2lnbmVkLW9mZi1ieTogSnVzdGluIENvcm1hY2sgPGp1c3Rpbi5jb3JtYWNrQGRvY2tlci5jb20+Ci0tLS0KLSBsaWJjb250YWluZXIvc3BlY2NvbnYvZXhhbXBsZS5nbyB8ICA1IC0tLS0tCi0gc3BlYy5nbyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCAtLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJjb250YWluZXIvc3BlY2NvbnYvZXhhbXBsZS5nbyBiL2xpYmNvbnRhaW5lci9zcGVjY29udi9leGFtcGxlLmdvCi1pbmRleCAzMzEzNDExNi4uZDY2MjExOTQgMTAwNjQ0Ci0tLS0gYS9zcmMvaW1wb3J0L2xpYmNvbnRhaW5lci9zcGVjY29udi9leGFtcGxlLmdvCi0rKysgYi9zcmMvaW1wb3J0L2xpYmNvbnRhaW5lci9zcGVjY29udi9leGFtcGxlLmdvCi1AQCAtMiw3ICsyLDYgQEAgcGFja2FnZSBzcGVjY29udgotIAotIGltcG9ydCAoCi0gCSJvcyIKLS0JInJ1bnRpbWUiCi0gCSJzdHJpbmdzIgotIAotIAkiZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXNwZWMvc3BlY3MtZ28iCi1AQCAtMTUsMTAgKzE0LDYgQEAgZnVuYyBzUHRyKHMgc3RyaW5nKSAqc3RyaW5nIHsgcmV0dXJuICZzIH0KLSBmdW5jIEV4YW1wbGUoKSAqc3BlY3MuU3BlYyB7Ci0gCXJldHVybiAmc3BlY3MuU3BlY3sKLSAJCVZlcnNpb246IHNwZWNzLlZlcnNpb24sCi0tCQlQbGF0Zm9ybTogc3BlY3MuUGxhdGZvcm17Ci0tCQkJT1M6ICAgcnVudGltZS5HT09TLAotLQkJCUFyY2g6IHJ1bnRpbWUuR09BUkNILAotLQkJfSwKLSAJCVJvb3Q6IHNwZWNzLlJvb3R7Ci0gCQkJUGF0aDogICAgICJyb290ZnMiLAotIAkJCVJlYWRvbmx5OiB0cnVlLAotZGlmZiAtLWdpdCBhL3NwZWMuZ28gYi9zcGVjLmdvCi1pbmRleCA5MmQzOGY1Ny4uODc2OTM3ZDIgMTAwNjQ0Ci0tLS0gYS9zcmMvaW1wb3J0L3NwZWMuZ28KLSsrKyBiL3NyYy9pbXBvcnQvc3BlYy5nbwotQEAgLTcsNyArNyw2IEBAIGltcG9ydCAoCi0gCSJmbXQiCi0gCSJpby9pb3V0aWwiCi0gCSJvcyIKLS0JInJ1bnRpbWUiCi0gCi0gCSJnaXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bmMvbGliY29udGFpbmVyL2NvbmZpZ3MiCi0gCSJnaXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bmMvbGliY29udGFpbmVyL3NwZWNjb252IgotQEAgLTEzMSw5ICsxMzAsNiBAQCBmdW5jIGxvYWRTcGVjKGNQYXRoIHN0cmluZykgKHNwZWMgKnNwZWNzLlNwZWMsIGVyciBlcnJvcikgewotIAlpZiBlcnIgPSBqc29uLk5ld0RlY29kZXIoY2YpLkRlY29kZSgmc3BlYyk7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuIG5pbCwgZXJyCi0gCX0KLS0JaWYgZXJyID0gdmFsaWRhdGVQbGF0Zm9ybSgmc3BlYy5QbGF0Zm9ybSk7IGVyciAhPSBuaWwgewotLQkJcmV0dXJuIG5pbCwgZXJyCi0tCX0KLSAJcmV0dXJuIHNwZWMsIHZhbGlkYXRlUHJvY2Vzc1NwZWMoc3BlYy5Qcm9jZXNzKQotIH0KLSAKLUBAIC0xNDgsMTMgKzE0NCwzIEBAIGZ1bmMgY3JlYXRlTGliQ29udGFpbmVyUmxpbWl0KHJsaW1pdCBzcGVjcy5MaW51eFJsaW1pdCkgKGNvbmZpZ3MuUmxpbWl0LCBlcnJvcikKLSAJCVNvZnQ6IHJsaW1pdC5Tb2Z0LAotIAl9LCBuaWwKLSB9Ci0tCi0tZnVuYyB2YWxpZGF0ZVBsYXRmb3JtKHBsYXRmb3JtICpzcGVjcy5QbGF0Zm9ybSkgZXJyb3IgewotLQlpZiBwbGF0Zm9ybS5PUyAhPSBydW50aW1lLkdPT1MgewotLQkJcmV0dXJuIGZtdC5FcnJvcmYoInRhcmdldCBvcyAlcyBtaXNtYXRjaCB3aXRoIGN1cnJlbnQgb3MgJXMiLCBwbGF0Zm9ybS5PUywgcnVudGltZS5HT09TKQotLQl9Ci0tCWlmIHBsYXRmb3JtLkFyY2ggIT0gcnVudGltZS5HT0FSQ0ggewotLQkJcmV0dXJuIGZtdC5FcnJvcmYoInRhcmdldCBhcmNoICVzIG1pc21hdGNoIHdpdGggY3VycmVudCBhcmNoICVzIiwgcGxhdGZvcm0uQXJjaCwgcnVudGltZS5HT0FSQ0gpCi0tCX0KLS0JcmV0dXJuIG5pbAotLX0KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAzLVVwZGF0ZS1tZW1vcnktc3BlY3MtdG8tdXNlLWludDY0LW5vdC11aW50NjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMy1VcGRhdGUtbWVtb3J5LXNwZWNzLXRvLXVzZS1pbnQ2NC1ub3QtdWludDY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGE5YjdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAzLVVwZGF0ZS1tZW1vcnktc3BlY3MtdG8tdXNlLWludDY0LW5vdC11aW50NjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotRnJvbSAzZDkwNzRlYWQzM2E1YzI3ZGMyMGJiNDk0NTdjNjljNmQyYWU2YjU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzdGluIENvcm1hY2sgPGp1c3Rpbi5jb3JtYWNrQGRvY2tlci5jb20+Ci1EYXRlOiBGcmksIDIzIEp1biAyMDE3IDE3OjE3OjAwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBVcGRhdGUgbWVtb3J5IHNwZWNzIHRvIHVzZSBpbnQ2NCBub3QgdWludDY0Ci0KLXJlcGxhY2UgIzE0OTIgIzE0OTQKLWZpeCAjMTQyMgotCi1TaW5jZSBodHRwczovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS1zcGVjL3B1bGwvODc2IHRoZSBtZW1vcnkKLXNwZWNpZmljYXRpb25zIGFyZSBub3cgYGludDY0YCwgYXMgdGhhdCBiZXR0ZXIgbWF0Y2hlcyB0aGUgdmlzaWJsZSBpbnRlcmZhY2Ugd2hlcmUKLWAtMWAgaXMgYSB2YWxpZCB2YWx1ZS4gT3RoZXJ3aXNlIGZpbmRpbmcgdGhlIGNvcnJlY3QgdmFsdWUgd2FzIGRpZmZpY3VsdCBhcyBpdAotd2FzIGtlcm5lbCBkZXBlbmRlbnQuCi0KLVNpZ25lZC1vZmYtYnk6IEp1c3RpbiBDb3JtYWNrIDxqdXN0aW4uY29ybWFja0Bkb2NrZXIuY29tPgotLS0tCi0gbGliY29udGFpbmVyL2Nncm91cHMvZnMvbWVtb3J5LmdvICAgIHwgMzYgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCi0gbGliY29udGFpbmVyL2NvbmZpZ3MvY2dyb3VwX2xpbnV4LmdvIHwgMTAgKysrKystLS0tLQotIHVwZGF0ZS5nbyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmNvbnRhaW5lci9jZ3JvdXBzL2ZzL21lbW9yeS5nbyBiL2xpYmNvbnRhaW5lci9jZ3JvdXBzL2ZzL21lbW9yeS5nbwotaW5kZXggZGEyY2M5ZjguLmI3MzljNjMxIDEwMDY0NAotLS0tIGEvc3JjL2ltcG9ydC9saWJjb250YWluZXIvY2dyb3Vwcy9mcy9tZW1vcnkuZ28KLSsrKyBiL3NyYy9pbXBvcnQvbGliY29udGFpbmVyL2Nncm91cHMvZnMvbWVtb3J5LmdvCi1AQCAtNzMsMTQgKzczLDE0IEBAIGZ1bmMgRW5hYmxlS2VybmVsTWVtb3J5QWNjb3VudGluZyhwYXRoIHN0cmluZykgZXJyb3IgewotIAkvLyB1bnRpbCBhIGxpbWl0IGlzIHNldCBvbiB0aGUgY2dyb3VwIGFuZCBsaW1pdCBjYW5ub3QgYmUgc2V0IG9uY2UgdGhlCi0gCS8vIGNncm91cCBoYXMgY2hpbGRyZW4sIG9yIGlmIHRoZXJlIGFyZSBhbHJlYWR5IHRhc2tzIGluIHRoZSBjZ3JvdXAuCi0gCWZvciBfLCBpIDo9IHJhbmdlIFtdaW50NjR7MSwgLTF9IHsKLS0JCWlmIGVyciA6PSBzZXRLZXJuZWxNZW1vcnkocGF0aCwgdWludDY0KGkpKTsgZXJyICE9IG5pbCB7Ci0rCQlpZiBlcnIgOj0gc2V0S2VybmVsTWVtb3J5KHBhdGgsIGkpOyBlcnIgIT0gbmlsIHsKLSAJCQlyZXR1cm4gZXJyCi0gCQl9Ci0gCX0KLSAJcmV0dXJuIG5pbAotIH0KLSAKLS1mdW5jIHNldEtlcm5lbE1lbW9yeShwYXRoIHN0cmluZywga2VybmVsTWVtb3J5TGltaXQgdWludDY0KSBlcnJvciB7Ci0rZnVuYyBzZXRLZXJuZWxNZW1vcnkocGF0aCBzdHJpbmcsIGtlcm5lbE1lbW9yeUxpbWl0IGludDY0KSBlcnJvciB7Ci0gCWlmIHBhdGggPT0gIiIgewotIAkJcmV0dXJuIGZtdC5FcnJvcmYoIm5vIHN1Y2ggZGlyZWN0b3J5IGZvciAlcyIsIGNncm91cEtlcm5lbE1lbW9yeUxpbWl0KQotIAl9Ci1AQCAtODgsNyArODgsNyBAQCBmdW5jIHNldEtlcm5lbE1lbW9yeShwYXRoIHN0cmluZywga2VybmVsTWVtb3J5TGltaXQgdWludDY0KSBlcnJvciB7Ci0gCQkvLyBrZXJuZWwgbWVtb3J5IGlzIG5vdCBlbmFibGVkIG9uIHRoZSBzeXN0ZW0gc28gd2Ugc2hvdWxkIGRvIG5vdGhpbmcKLSAJCXJldHVybiBuaWwKLSAJfQotLQlpZiBlcnIgOj0gaW91dGlsLldyaXRlRmlsZShmaWxlcGF0aC5Kb2luKHBhdGgsIGNncm91cEtlcm5lbE1lbW9yeUxpbWl0KSwgW11ieXRlKHN0cmNvbnYuRm9ybWF0VWludChrZXJuZWxNZW1vcnlMaW1pdCwgMTApKSwgMDcwMCk7IGVyciAhPSBuaWwgewotKwlpZiBlcnIgOj0gaW91dGlsLldyaXRlRmlsZShmaWxlcGF0aC5Kb2luKHBhdGgsIGNncm91cEtlcm5lbE1lbW9yeUxpbWl0KSwgW11ieXRlKHN0cmNvbnYuRm9ybWF0SW50KGtlcm5lbE1lbW9yeUxpbWl0LCAxMCkpLCAwNzAwKTsgZXJyICE9IG5pbCB7Ci0gCQkvLyBDaGVjayBpZiB0aGUgZXJyb3IgbnVtYmVyIHJldHVybmVkIGJ5IHRoZSBzeXNjYWxsIGlzICJFQlVTWSIKLSAJCS8vIFRoZSBFQlVTWSBzaWduYWwgaXMgcmV0dXJuZWQgb24gYXR0ZW1wdHMgdG8gd3JpdGUgdG8gdGhlCi0gCQkvLyBtZW1vcnkua21lbS5saW1pdF9pbl9ieXRlcyBmaWxlIGlmIHRoZSBjZ3JvdXAgaGFzIGNoaWxkcmVuIG9yCi1AQCAtMTA2LDE0ICsxMDYsMTIgQEAgZnVuYyBzZXRLZXJuZWxNZW1vcnkocGF0aCBzdHJpbmcsIGtlcm5lbE1lbW9yeUxpbWl0IHVpbnQ2NCkgZXJyb3IgewotIH0KLSAKLSBmdW5jIHNldE1lbW9yeUFuZFN3YXAocGF0aCBzdHJpbmcsIGNncm91cCAqY29uZmlncy5DZ3JvdXApIGVycm9yIHsKLS0JdWxpbWl0ZWQgOj0gLTEKLS0KLS0JLy8gSWYgdGhlIG1lbW9yeSB1cGRhdGUgaXMgc2V0IHRvIHVpbnQ2NCgtMSkgd2Ugc2hvdWxkIGFsc28KLS0JLy8gc2V0IHN3YXAgdG8gdWludDY0KC0xKSwgaXQgbWVhbnMgdW5saW1pdGVkIG1lbW9yeS4KLS0JaWYgY2dyb3VwLlJlc291cmNlcy5NZW1vcnkgPT0gdWludDY0KHVsaW1pdGVkKSB7Ci0tCQkvLyBPbmx5IHNldCBzd2FwIGlmIGl0J3MgZW5ibGVkIGluIGtlcm5lbAotKwkvLyBJZiB0aGUgbWVtb3J5IHVwZGF0ZSBpcyBzZXQgdG8gLTEgd2Ugc2hvdWxkIGFsc28KLSsJLy8gc2V0IHN3YXAgdG8gLTEsIGl0IG1lYW5zIHVubGltaXRlZCBtZW1vcnkuCi0rCWlmIGNncm91cC5SZXNvdXJjZXMuTWVtb3J5ID09IC0xIHsKLSsJCS8vIE9ubHkgc2V0IHN3YXAgaWYgaXQncyBlbmFibGVkIGluIGtlcm5lbAotIAkJaWYgY2dyb3Vwcy5QYXRoRXhpc3RzKGZpbGVwYXRoLkpvaW4ocGF0aCwgY2dyb3VwTWVtb3J5U3dhcExpbWl0KSkgewotLQkJCWNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCA9IHVpbnQ2NCh1bGltaXRlZCkKLSsJCQljZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAgPSAtMQotIAkJfQotIAl9Ci0gCi1AQCAtMTI4LDI5ICsxMjYsMjkgQEAgZnVuYyBzZXRNZW1vcnlBbmRTd2FwKHBhdGggc3RyaW5nLCBjZ3JvdXAgKmNvbmZpZ3MuQ2dyb3VwKSBlcnJvciB7Ci0gCQkvLyBXaGVuIHVwZGF0ZSBtZW1vcnkgbGltaXQsIHdlIHNob3VsZCBhZGFwdCB0aGUgd3JpdGUgc2VxdWVuY2UKLSAJCS8vIGZvciBtZW1vcnkgYW5kIHN3YXAgbWVtb3J5LCBzbyBpdCB3b24ndCBmYWlsIGJlY2F1c2UgdGhlIG5ldwotIAkJLy8gdmFsdWUgYW5kIHRoZSBvbGQgdmFsdWUgZG9uJ3QgZml0IGtlcm5lbCdzIHZhbGlkYXRpb24uCi0tCQlpZiBjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAgPT0gdWludDY0KHVsaW1pdGVkKSB8fCBtZW1vcnlVc2FnZS5MaW1pdCA8IGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCB7Ci0tCQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCBjZ3JvdXBNZW1vcnlTd2FwTGltaXQsIHN0cmNvbnYuRm9ybWF0VWludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAsIDEwKSk7IGVyciAhPSBuaWwgewotKwkJaWYgY2dyb3VwLlJlc291cmNlcy5NZW1vcnlTd2FwID09IC0xIHx8IG1lbW9yeVVzYWdlLkxpbWl0IDwgdWludDY0KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCkgewotKwkJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgY2dyb3VwTWVtb3J5U3dhcExpbWl0LCBzdHJjb252LkZvcm1hdEludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAsIDEwKSk7IGVyciAhPSBuaWwgewotIAkJCQlyZXR1cm4gZXJyCi0gCQkJfQotLQkJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgY2dyb3VwTWVtb3J5TGltaXQsIHN0cmNvbnYuRm9ybWF0VWludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeSwgMTApKTsgZXJyICE9IG5pbCB7Ci0rCQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCBjZ3JvdXBNZW1vcnlMaW1pdCwgc3RyY29udi5Gb3JtYXRJbnQoY2dyb3VwLlJlc291cmNlcy5NZW1vcnksIDEwKSk7IGVyciAhPSBuaWwgewotIAkJCQlyZXR1cm4gZXJyCi0gCQkJfQotIAkJfSBlbHNlIHsKLS0JCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsIGNncm91cE1lbW9yeUxpbWl0LCBzdHJjb252LkZvcm1hdFVpbnQoY2dyb3VwLlJlc291cmNlcy5NZW1vcnksIDEwKSk7IGVyciAhPSBuaWwgewotKwkJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgY2dyb3VwTWVtb3J5TGltaXQsIHN0cmNvbnYuRm9ybWF0SW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5LCAxMCkpOyBlcnIgIT0gbmlsIHsKLSAJCQkJcmV0dXJuIGVycgotIAkJCX0KLS0JCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsIGNncm91cE1lbW9yeVN3YXBMaW1pdCwgc3RyY29udi5Gb3JtYXRVaW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCwgMTApKTsgZXJyICE9IG5pbCB7Ci0rCQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCBjZ3JvdXBNZW1vcnlTd2FwTGltaXQsIHN0cmNvbnYuRm9ybWF0SW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCwgMTApKTsgZXJyICE9IG5pbCB7Ci0gCQkJCXJldHVybiBlcnIKLSAJCQl9Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiBjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeSAhPSAwIHsKLS0JCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsIGNncm91cE1lbW9yeUxpbWl0LCBzdHJjb252LkZvcm1hdFVpbnQoY2dyb3VwLlJlc291cmNlcy5NZW1vcnksIDEwKSk7IGVyciAhPSBuaWwgewotKwkJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgY2dyb3VwTWVtb3J5TGltaXQsIHN0cmNvbnYuRm9ybWF0SW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5LCAxMCkpOyBlcnIgIT0gbmlsIHsKLSAJCQkJcmV0dXJuIGVycgotIAkJCX0KLSAJCX0KLSAJCWlmIGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCAhPSAwIHsKLS0JCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsIGNncm91cE1lbW9yeVN3YXBMaW1pdCwgc3RyY29udi5Gb3JtYXRVaW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCwgMTApKTsgZXJyICE9IG5pbCB7Ci0rCQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCBjZ3JvdXBNZW1vcnlTd2FwTGltaXQsIHN0cmNvbnYuRm9ybWF0SW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCwgMTApKTsgZXJyICE9IG5pbCB7Ci0gCQkJCXJldHVybiBlcnIKLSAJCQl9Ci0gCQl9Ci1AQCAtMTcxLDEzICsxNjksMTMgQEAgZnVuYyAocyAqTWVtb3J5R3JvdXApIFNldChwYXRoIHN0cmluZywgY2dyb3VwICpjb25maWdzLkNncm91cCkgZXJyb3IgewotIAl9Ci0gCi0gCWlmIGNncm91cC5SZXNvdXJjZXMuTWVtb3J5UmVzZXJ2YXRpb24gIT0gMCB7Ci0tCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsICJtZW1vcnkuc29mdF9saW1pdF9pbl9ieXRlcyIsIHN0cmNvbnYuRm9ybWF0VWludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVJlc2VydmF0aW9uLCAxMCkpOyBlcnIgIT0gbmlsIHsKLSsJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgIm1lbW9yeS5zb2Z0X2xpbWl0X2luX2J5dGVzIiwgc3RyY29udi5Gb3JtYXRJbnQoY2dyb3VwLlJlc291cmNlcy5NZW1vcnlSZXNlcnZhdGlvbiwgMTApKTsgZXJyICE9IG5pbCB7Ci0gCQkJcmV0dXJuIGVycgotIAkJfQotIAl9Ci0gCi0gCWlmIGNncm91cC5SZXNvdXJjZXMuS2VybmVsTWVtb3J5VENQICE9IDAgewotLQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCAibWVtb3J5LmttZW0udGNwLmxpbWl0X2luX2J5dGVzIiwgc3RyY29udi5Gb3JtYXRVaW50KGNncm91cC5SZXNvdXJjZXMuS2VybmVsTWVtb3J5VENQLCAxMCkpOyBlcnIgIT0gbmlsIHsKLSsJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgIm1lbW9yeS5rbWVtLnRjcC5saW1pdF9pbl9ieXRlcyIsIHN0cmNvbnYuRm9ybWF0SW50KGNncm91cC5SZXNvdXJjZXMuS2VybmVsTWVtb3J5VENQLCAxMCkpOyBlcnIgIT0gbmlsIHsKLSAJCQlyZXR1cm4gZXJyCi0gCQl9Ci0gCX0KLWRpZmYgLS1naXQgYS9saWJjb250YWluZXIvY29uZmlncy9jZ3JvdXBfbGludXguZ28gYi9saWJjb250YWluZXIvY29uZmlncy9jZ3JvdXBfbGludXguZ28KLWluZGV4IDNlMDUwOWRlLi5lMTVhNjYyZiAxMDA2NDQKLS0tLSBhL3NyYy9pbXBvcnQvbGliY29udGFpbmVyL2NvbmZpZ3MvY2dyb3VwX2xpbnV4LmdvCi0rKysgYi9zcmMvaW1wb3J0L2xpYmNvbnRhaW5lci9jb25maWdzL2Nncm91cF9saW51eC5nbwotQEAgLTQzLDE5ICs0MywxOSBAQCB0eXBlIFJlc291cmNlcyBzdHJ1Y3QgewotIAlEZXZpY2VzIFtdKkRldmljZSBganNvbjoiZGV2aWNlcyJgCi0gCi0gCS8vIE1lbW9yeSBsaW1pdCAoaW4gYnl0ZXMpCi0tCU1lbW9yeSB1aW50NjQgYGpzb246Im1lbW9yeSJgCi0rCU1lbW9yeSBpbnQ2NCBganNvbjoibWVtb3J5ImAKLSAKLSAJLy8gTWVtb3J5IHJlc2VydmF0aW9uIG9yIHNvZnRfbGltaXQgKGluIGJ5dGVzKQotLQlNZW1vcnlSZXNlcnZhdGlvbiB1aW50NjQgYGpzb246Im1lbW9yeV9yZXNlcnZhdGlvbiJgCi0rCU1lbW9yeVJlc2VydmF0aW9uIGludDY0IGBqc29uOiJtZW1vcnlfcmVzZXJ2YXRpb24iYAotIAotIAkvLyBUb3RhbCBtZW1vcnkgdXNhZ2UgKG1lbW9yeSArIHN3YXApOyBzZXQgYC0xYCB0byBlbmFibGUgdW5saW1pdGVkIHN3YXAKLS0JTWVtb3J5U3dhcCB1aW50NjQgYGpzb246Im1lbW9yeV9zd2FwImAKLSsJTWVtb3J5U3dhcCBpbnQ2NCBganNvbjoibWVtb3J5X3N3YXAiYAotIAotIAkvLyBLZXJuZWwgbWVtb3J5IGxpbWl0IChpbiBieXRlcykKLS0JS2VybmVsTWVtb3J5IHVpbnQ2NCBganNvbjoia2VybmVsX21lbW9yeSJgCi0rCUtlcm5lbE1lbW9yeSBpbnQ2NCBganNvbjoia2VybmVsX21lbW9yeSJgCi0gCi0gCS8vIEtlcm5lbCBtZW1vcnkgbGltaXQgZm9yIFRDUCB1c2UgKGluIGJ5dGVzKQotLQlLZXJuZWxNZW1vcnlUQ1AgdWludDY0IGBqc29uOiJrZXJuZWxfbWVtb3J5X3RjcCJgCi0rCUtlcm5lbE1lbW9yeVRDUCBpbnQ2NCBganNvbjoia2VybmVsX21lbW9yeV90Y3AiYAotIAotIAkvLyBDUFUgc2hhcmVzIChyZWxhdGl2ZSB3ZWlnaHQgdnMuIG90aGVyIGNvbnRhaW5lcnMpCi0gCUNwdVNoYXJlcyB1aW50NjQgYGpzb246ImNwdV9zaGFyZXMiYAotZGlmZiAtLWdpdCBhL3VwZGF0ZS5nbyBiL3VwZGF0ZS5nbwotaW5kZXggMGVhOTBkNjAuLjEzM2JlOTk5IDEwMDY0NAotLS0tIGEvc3JjL2ltcG9ydC91cGRhdGUuZ28KLSsrKyBiL3NyYy9pbXBvcnQvdXBkYXRlLmdvCi1AQCAtMTI0LDExICsxMjQsMTEgQEAgb3RoZXIgb3B0aW9ucyBhcmUgaWdub3JlZC4KLSAKLSAJCXIgOj0gc3BlY3MuTGludXhSZXNvdXJjZXN7Ci0gCQkJTWVtb3J5OiAmc3BlY3MuTGludXhNZW1vcnl7Ci0tCQkJCUxpbWl0OiAgICAgICB1NjRQdHIoMCksCi0tCQkJCVJlc2VydmF0aW9uOiB1NjRQdHIoMCksCi0tCQkJCVN3YXA6ICAgICAgICB1NjRQdHIoMCksCi0tCQkJCUtlcm5lbDogICAgICB1NjRQdHIoMCksCi0tCQkJCUtlcm5lbFRDUDogICB1NjRQdHIoMCksCi0rCQkJCUxpbWl0OiAgICAgICBpNjRQdHIoMCksCi0rCQkJCVJlc2VydmF0aW9uOiBpNjRQdHIoMCksCi0rCQkJCVN3YXA6ICAgICAgICBpNjRQdHIoMCksCi0rCQkJCUtlcm5lbDogICAgICBpNjRQdHIoMCksCi0rCQkJCUtlcm5lbFRDUDogICBpNjRQdHIoMCksCi0gCQkJfSwKLSAJCQlDUFU6ICZzcGVjcy5MaW51eENQVXsKLSAJCQkJU2hhcmVzOiAgICAgICAgICB1NjRQdHIoMCksCi1AQCAtMjEzLDcgKzIxMyw3IEBAIG90aGVyIG9wdGlvbnMgYXJlIGlnbm9yZWQuCi0gCQkJfQotIAkJCWZvciBfLCBwYWlyIDo9IHJhbmdlIFtdc3RydWN0IHsKLSAJCQkJb3B0ICBzdHJpbmcKLS0JCQkJZGVzdCAqdWludDY0Ci0rCQkJCWRlc3QgKmludDY0Ci0gCQkJfXsKLSAJCQkJeyJtZW1vcnkiLCByLk1lbW9yeS5MaW1pdH0sCi0gCQkJCXsibWVtb3J5LXN3YXAiLCByLk1lbW9yeS5Td2FwfSwKLUBAIC0yMzIsNyArMjMyLDcgQEAgb3RoZXIgb3B0aW9ucyBhcmUgaWdub3JlZC4KLSAJCQkJCX0gZWxzZSB7Ci0gCQkJCQkJdiA9IC0xCi0gCQkJCQl9Ci0tCQkJCQkqcGFpci5kZXN0ID0gdWludDY0KHYpCi0rCQkJCQkqcGFpci5kZXN0ID0gdgotIAkJCQl9Ci0gCQkJfQotIAkJCXIuUGlkcy5MaW1pdCA9IGludDY0KGNvbnRleHQuSW50KCJwaWRzLWxpbWl0IikpCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyX2dpdC5iYgppbmRleCA5ZGI0OGVlLi44MWU1YTVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlcl9naXQuYmIKQEAgLTIsMTQgKzIsMTEgQEAKIAogIyBOb3RlOiB0aGlzIHJldiBpcyBiZWZvcmUgdGhlIHJlcXVpcmVkIHByb3RvY29sIGZpZWxkLCB1cGRhdGUgd2hlbiBhbGwgY29tcG9uZW50cwogIyAgICAgICBoYXZlIGJlZW4gdXBkYXRlZCB0byBtYXRjaC4KLVNSQ1JFVl9ydW5jLWRvY2tlciA9ICI5ZDY4MjFkMWI1MzkwOGUyNDk0ODc3NDFlY2NkNTY3MjQ5Y2ExZDk5IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2RvY2tlci9ydW5jLmdpdDtub2JyYW5jaD0xO25hbWU9cnVuYy1kb2NrZXIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VcGRhdGUtdG8tcnVudGltZS1zcGVjLTE5OGYyM2Y4MjdlZWEzOTdkNDMzMWQ3ZWIwNDhkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItUmVtb3ZlLVBsYXRmb3JtLWFzLW5vLWxvbmdlci1pbi1PQ0ktc3BlYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLVVwZGF0ZS1tZW1vcnktc3BlY3MtdG8tdXNlLWludDY0LW5vdC11aW50NjQucGF0Y2ggXAorU1JDUkVWX3J1bmMtZG9ja2VyID0gIjRmYzUzYTgxZmI3Yzk5NDY0MDcyMmFjNTg1ZmE5Y2E1NDg5NzE4NzEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVuYztub2JyYW5jaD0xO25hbWU9cnVuYy1kb2NrZXIgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ydW5jLUFkZC1jb25zb2xlLXNvY2tldC1kZXYtbnVsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1idWlsZGluZy1yZWN2dHR5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtZHJvcC1yZWN2dHR5LWFuZC11c2UtR09CVUlMREZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcnVuYy1kb2NrZXItU0lHVVNSMS1kYWVtb25pemUucGF0Y2ggXAogICAgICAgICAgICIKIAotUlVOQ19WRVJTSU9OID0gIjEuMC4wLXJjMyIKK1JVTkNfVkVSU0lPTiA9ICIxLjAuMC1yYzUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1vcGVuY29udGFpbmVycy8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtb3BlbmNvbnRhaW5lcnMvMDAwMS1Vc2UtY29ycmVjdC1nby1jcm9zcy1jb21waWxlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdkNzAxNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1vcGVuY29udGFpbmVycy8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotRnJvbSA2MjFlNWU5YTE5NmRhYWFmNWViNDMwYTQxM2ZlNTEyMThjZjQyYzg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KLURhdGU6IFdlZCwgNCBPY3QgMjAxNyAxNTo0NToyNyArMDAwMAotU3ViamVjdDogW1BBVENIXSBVc2UgY29ycmVjdCBnbyBjcm9zcy1jb21waWxlcgotCi1XZSBuZWVkIHRvIHVzZSAnJHtHT30nIGFzIHNldCBieSBPcGVuRW1iZWRkZWQgaW5zdGVhZCBvZiBqdXN0ICdnbycuIEp1c3QgdXNpbmcKLSdnbycgd2lsbCBpbnZva2UgZ28tbmF0aXZlLgotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgotVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0tLS0KLSBNYWtlZmlsZSB8IDIwICsrKysrKysrKystLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNjc4MWFjNy4uNzRlNTUxZCAxMDA2NDQKLS0tLSBhL3NyYy9pbXBvcnQvTWFrZWZpbGUKLSsrKyBiL3NyYy9pbXBvcnQvTWFrZWZpbGUKLUBAIC0yNywxOCArMjcsMTggQEAgU0hFTEwgOj0gJChzaGVsbCBjb21tYW5kIC12IGJhc2ggMj4vZGV2L251bGwpCi0gLkRFRkFVTFQ6IHJ1bmMKLSAKLSBydW5jOiAkKFNPVVJDRVMpCi0tCWdvIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC1sZGZsYWdzICItWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLXRhZ3MgIiQoQlVJTERUQUdTKSIgLW8gcnVuYyAuCi0rCSQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC1sZGZsYWdzICItWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLXRhZ3MgIiQoQlVJTERUQUdTKSIgLW8gcnVuYyAuCi0gCi0gYWxsOiBydW5jIHJlY3Z0dHkKLSAKLSByZWN2dHR5OiBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHkKLSAKLSBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHk6ICQoU09VUkNFUykKLS0JZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIi1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJChCVUlMRFRBR1MpIiAtbyBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHkgLi9jb250cmliL2NtZC9yZWN2dHR5Ci0rCSQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC1sZGZsYWdzICItWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLXRhZ3MgIiQoQlVJTERUQUdTKSIgLW8gY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5IC4vY29udHJpYi9jbWQvcmVjdnR0eQotIAotIHN0YXRpYzogJChTT1VSQ0VTKQotLQlDR09fRU5BQkxFRD0xIGdvIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgY2dvIHN0YXRpY19idWlsZCIgLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIHJ1bmMgLgotLQlDR09fRU5BQkxFRD0xIGdvIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgY2dvIHN0YXRpY19idWlsZCIgLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eSAuL2NvbnRyaWIvY21kL3JlY3Z0dHkKLSsJQ0dPX0VOQUJMRUQ9MSAkKEdPKSBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtdGFncyAiJChCVUlMRFRBR1MpIGNnbyBzdGF0aWNfYnVpbGQiIC1sZGZsYWdzICItdyAtZXh0bGRmbGFncyAtc3RhdGljIC1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtbyBydW5jIC4KLSsJQ0dPX0VOQUJMRUQ9MSAkKEdPKSBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtdGFncyAiJChCVUlMRFRBR1MpIGNnbyBzdGF0aWNfYnVpbGQiIC1sZGZsYWdzICItdyAtZXh0bGRmbGFncyAtc3RhdGljIC1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtbyBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHkgLi9jb250cmliL2NtZC9yZWN2dHR5Ci0gCi0gcmVsZWFzZToKLSAJQGZsYWdfbGlzdD0oc2VjY29tcCBzZWxpbnV4IGFwcGFybW9yIHN0YXRpYyk7IFwKLUBAIC02MiwxNSArNjIsMTUgQEAgcmVsZWFzZToKLSAJCQlDR09fRU5BQkxFRD0xOyBcCi0gCQl9OyBcCi0gCQllY2hvICJCdWlsZGluZyB0YXJnZXQ6ICQkb3V0cHV0IjsgXAotLQkJZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIiQkbGRmbGFncyAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJCR0YWdzIiAtbyAiJCRvdXRwdXQiIC47IFwKLSsJCSQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC1sZGZsYWdzICIkJGxkZmxhZ3MgJChFWFRSQV9MREZMQUdTKSIgLXRhZ3MgIiQkdGFncyIgLW8gIiQkb3V0cHV0IiAuOyBcCi0gCWRvbmUKLSAKLSBkYnVpbGQ6IHJ1bmNpbWFnZQotIAlkb2NrZXIgcnVuIC0tcm0gLXYgJChDVVJESVIpOi9nby9zcmMvJChQUk9KRUNUKSAtLXByaXZpbGVnZWQgJChSVU5DX0lNQUdFKSBtYWtlIGNsZWFuIGFsbAotIAotIGxpbnQ6Ci0tCWdvIHZldCAkKGFsbHBhY2thZ2VzKQotLQlnbyBmbXQgJChhbGxwYWNrYWdlcykKLSsJJChHTykgdmV0ICQoYWxscGFja2FnZXMpCi0rCSQoR08pIGZtdCAkKGFsbHBhY2thZ2VzKQotIAotIG1hbjoKLSAJbWFuL21kMm1hbi1hbGwuc2gKLUBAIC04OCw3ICs4OCw3IEBAIHVuaXR0ZXN0OiBydW5jaW1hZ2UKLSAJZG9ja2VyIHJ1biAtZSBURVNURkxBR1MgLXQgLS1wcml2aWxlZ2VkIC0tcm0gLXYgJChDVVJESVIpOi9nby9zcmMvJChQUk9KRUNUKSAkKFJVTkNfSU1BR0UpIG1ha2UgbG9jYWx1bml0dGVzdAotIAotIGxvY2FsdW5pdHRlc3Q6IGFsbAotLQlnbyB0ZXN0IC10aW1lb3V0IDNtIC10YWdzICIkKEJVSUxEVEFHUykiICR7VEVTVEZMQUdTfSAtdiAkKGFsbHBhY2thZ2VzKQotKwkkKEdPKSB0ZXN0IC10aW1lb3V0IDNtIC10YWdzICIkKEJVSUxEVEFHUykiICR7VEVTVEZMQUdTfSAtdiAkKGFsbHBhY2thZ2VzKQotIAotIGludGVncmF0aW9uOiBydW5jaW1hZ2UKLSAJZG9ja2VyIHJ1biAtZSBURVNURkxBR1MgLXQgLS1wcml2aWxlZ2VkIC0tcm0gLXYgJChDVVJESVIpOi9nby9zcmMvJChQUk9KRUNUKSAkKFJVTkNfSU1BR0UpIG1ha2UgbG9jYWxpbnRlZ3JhdGlvbgotQEAgLTEzMywxMCArMTMzLDEwIEBAIGNsZWFuOgotIAotIHZhbGlkYXRlOgotIAlzY3JpcHQvdmFsaWRhdGUtZ29mbXQKLS0JZ28gdmV0ICQoYWxscGFja2FnZXMpCi0rCSQoR08pIHZldCAkKGFsbHBhY2thZ2VzKQotIAotIGNpOiB2YWxpZGF0ZSBsb2NhbHRlc3QKLSAKLSAjIG1lbW9pemUgYWxscGFja2FnZXMsIHNvIHRoYXQgaXQncyBleGVjdXRlZCBvbmx5IG9uY2UgYW5kIG9ubHkgaWYgdXNlZAotLV9hbGxwYWNrYWdlcyA9ICQoc2hlbGwgZ28gbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKQotK19hbGxwYWNrYWdlcyA9ICQoc2hlbGwgJChHTykgbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKQotIGFsbHBhY2thZ2VzID0gJChpZiAkKF9fYWxscGFja2FnZXMpLCwkKGV2YWwgX19hbGxwYWNrYWdlcyA6PSAkJChfYWxscGFja2FnZXMpKSkkKF9fYWxscGFja2FnZXMpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLW9wZW5jb250YWluZXJzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLW9wZW5jb250YWluZXJzX2dpdC5iYgppbmRleCBhOTc2NzZiLi5lZDQ4YWJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1vcGVuY29udGFpbmVyc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtb3BlbmNvbnRhaW5lcnNfZ2l0LmJiCkBAIC0xLDggKzEsNyBAQAogaW5jbHVkZSBydW5jLmluYwogCi1TUkNSRVYgPSAiMmU3Y2ZlMDM2ZTJjNmRjNTFjY2NhNmViN2ZhM2VlNmI2Mzk3NmRjZCIKK1NSQ1JFViA9ICI1ODQxNWI0YjEyNjUwMjkxZjQzNWRiODc3MGNlYTQ4MjA3Yjc4YWZlIgogU1JDX1VSSSA9ICIgXAogICAgIGdpdDovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVuYzticmFuY2g9bWFzdGVyIFwKLSAgICBmaWxlOi8vMDAwMS1Vc2UtY29ycmVjdC1nby1jcm9zcy1jb21waWxlci5wYXRjaCBcCiAgICAgIgotUlVOQ19WRVJTSU9OID0gIjEuMC4wLXJjNCIKK1JVTkNfVkVSU0lPTiA9ICIxLjAuMC1yYzUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy5pbmMKaW5kZXggMDE3OTEwMy4uOTE5OWNlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLmluYwpAQCAtMTEsNiArMTEsOCBAQAogUFYgPSAiJHtSVU5DX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCiBpbmhlcml0IGdvCitpbmhlcml0IGdvYXJjaAorCiBSUkVDT01NRU5EU18ke1BOfSA9ICJseGMgZG9ja2VyIgogUFJPVklERVMgKz0gInZpcnR1YWwvcnVuYyIKIFJQUk9WSURFU18ke1BOfSA9ICJ2aXJ0dWFsL3J1bmMiCkBAIC0yMCw3ICsyMiw3IEBACiBMSUJDT05UQUlORVJfUEFDS0FHRT0iZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW5jL2xpYmNvbnRhaW5lciIKIAogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLUVYVFJBX09FTUFLRT0iQlVJTERUQUdTPScnIgorRVhUUkFfT0VNQUtFPSJCVUlMRFRBR1M9JycgR089JHtHT30iCiAKIGRvX2NvbXBpbGUoKSB7CiAJIyBTZXQgR09QQVRILiBTZWUgJ1BBQ0tBR0VSUy5tZCcuIERvbid0IHJlbHkgb24KQEAgLTQ0LDEwICs0NiwxMiBAQAogCWV4cG9ydCBDR09fRU5BQkxFRD0iMSIKIAlleHBvcnQgQ0dPX0NGTEFHUz0iJHtDRkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAJZXhwb3J0IENHT19MREZMQUdTPSIke0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJZXhwb3J0IEdPPSR7R099CisKIAlleHBvcnQgQ0ZMQUdTPSIiCiAJZXhwb3J0IExERkxBR1M9IiIKIAotICAgICAgICBvZV9ydW5tYWtlIHN0YXRpYworCW9lX3J1bm1ha2Ugc3RhdGljCiB9CiAKIGRvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfJS5iYmFwcGVuZAppbmRleCA4MzY5YTAzLi42MTdjYWNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8lLmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XyUuYmJhcHBlbmQKQEAgLTEsMTAgKzEgQEAKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKLQotU1JDX1VSSSArPSAiIFwKLQkgICAgZmlsZTovL2xzcGNpLmNmZyBcCi0JICAgIGZpbGU6Ly9sc3VzYi5jZmcgXAotCSAgICBmaWxlOi8vbWRldi5jZmcgXAotCSAgICBmaWxlOi8vbW91bnQtY2lmcy5jZmcgXAotCSAgICBmaWxlOi8vcHMtZXh0cmFzLmNmZyBcCi0JICAgIGZpbGU6Ly9nZXRvcHQuY2ZnIFwKLSAgICAgICAgICAgIgorcmVxdWlyZSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3ZpcnR1YWxpemF0aW9uJywgJyR7QlBOfV92aXJ0dWFsaXphdGlvbi5pbmMnLCAnJywgZCl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF92aXJ0dWFsaXphdGlvbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF92aXJ0dWFsaXphdGlvbi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDljNGU2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94X3ZpcnR1YWxpemF0aW9uLmluYwpAQCAtMCwwICsxLDEwIEBACitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9idXN5Ym94OiIKKworU1JDX1VSSSArPSAiIFwKKwkgICAgZmlsZTovL2xzcGNpLmNmZyBcCisJICAgIGZpbGU6Ly9sc3VzYi5jZmcgXAorCSAgICBmaWxlOi8vbWRldi5jZmcgXAorCSAgICBmaWxlOi8vbW91bnQtY2lmcy5jZmcgXAorCSAgICBmaWxlOi8vcHMtZXh0cmFzLmNmZyBcCisJICAgIGZpbGU6Ly9nZXRvcHQuY2ZnIFwKKyAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29yZS9ydW52L3J1bnZfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29yZS9ydW52L3J1bnZfZ2l0LmJiCmluZGV4IDUxMjVkOTAuLjAzMDFkZDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvcmUvcnVudi9ydW52X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb3JlL3J1bnYvcnVudl9naXQuYmIKQEAgLTIyLDcgKzIyLDcgQEAKIFBBQ0tBR0VDT05GSUdbeGVuXSA9ICItLXdpdGgteGVuLC0td2l0aG91dC14ZW4sIgogQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vc3JjL2ltcG9ydC8iCiAKLVJERVBFTkRTXyR7UE59ICs9ICIgcWVtdSIKK1JERVBFTkRTXyR7UE59ICs9ICIgcWVtdSBoeXBlcnN0YXJ0IgogCiBkb19jb21waWxlKCkgewogCWV4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWJfMi4lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC1pbml0dGFiXzIuJS5iYmFwcGVuZAppbmRleCAxYjg5YWVjLi44YzA4ODMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWJfMi4lLmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtaW5pdHRhYl8yLiUuYmJhcHBlbmQKQEAgLTEsNiArMSBAQAotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaWYgZWNobyAiJHtESVNUUk9fRkVBVFVSRVN9IiB8IGdyZXAgLXEgJ3hlbic7IHRoZW4KLQkJZWNobyAiIiA+PiAke0R9JHtzeXNjb25mZGlyfS9pbml0dGFiCi0JCWVjaG8gIlgwOjEyMzQ1OnJlc3Bhd246L3NiaW4vZ2V0dHkgMTE1MjAwIGh2YzAiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXR0YWIKLQlmaQotfQorcmVxdWlyZSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hlbicsICdzeXN2aW5pdC1pbml0dGFiX3hlbi5pbmMnLCAnJywgZCl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWJfeGVuLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtaW5pdHRhYl94ZW4uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMDU4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWJfeGVuLmluYwpAQCAtMCwwICsxLDQgQEAKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICAgICAgICAgIGVjaG8gIiIgPj4gJHtEfSR7c3lzY29uZmRpcn0vaW5pdHRhYgorICAgICAgICAgICAgICAgIGVjaG8gIlgwOjEyMzQ1OnJlc3Bhd246L3NiaW4vZ2V0dHkgMTE1MjAwIGh2YzAiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXR0YWIKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmxpbmtlcl8xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJsaW5rZXJfMS4zLmJiCmluZGV4IDI0ZTE5YjUuLjhhYmI5YzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmxpbmtlcl8xLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ibGlua2VyXzEuMy5iYgpAQCAtMTgsNSArMTgsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKIAorREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgorCiBpbmhlcml0IHNldHVwdG9vbHMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1nZXZlbnRfMS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjAuMS5iYgppbmRleCA1YTk3YzhjLi44Y2QxMzg4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjAuMS5iYgpAQCAtMjYsMyArMjYsNSBAQAogZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKIAlzZWQgLWkgLWUgJ3MvXmNyb3NzX2NvbXBpbGluZz1uby9jcm9zc19jb21waWxpbmc9eWVzLycgJHtTfS9saWJldi9jb25maWd1cmUKIH0KKworREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjIyLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvXzAuMjIuMy5iYgppbmRleCAyYzI2MjVkLi5lMTUxZGNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvXzAuMjIuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvXzAuMjIuMy5iYgpAQCAtMjIsNiArMjIsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjU3M2YyMWFhYWM3ZDVjOTU0OTc5OGU3MmZmY2VmZWRkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwNzFiZmM4MTdkOTQ3MjNlOWI0NThhMDEwZDU2NTM2NTEwNGY4NGFhNzNmN2ZlMTE5MTk4NzFmNzU2MmZmNzIiCiAKK0RFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKKwogaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKIAogREVQRU5EUyArPSAib3BlbnNzbCBzd2lnLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sXzMuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbF8zLjExLmJiCmluZGV4IGNiMWRiOGMuLmVjYjE3MTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sXzMuMTEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXlhbWxfMy4xMS5iYgpAQCAtMjUsNiArMjUsOCBAQAogCiBTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKIAorREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgorCiBpbmhlcml0IHNldHVwdG9vbHMKIAogREVQRU5EUyArPSAibGlieWFtbCBweXRob24tY3l0aG9uLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVkaXNfMi4xMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpc18yLjEwLjMuYmIKaW5kZXggOWVkYThhNS4uMmVmMmI2YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpc18yLjEwLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpc18yLjEwLjMuYmIKQEAgLTE1LDYgKzE1LDggQEAKIAogUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCiAKK0RFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKKwogaW5oZXJpdCBzZXR1cHRvb2xzCiAKIFJERVBFTkRTXyR7UE59ID0gInJlZGlzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15XzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15XzEuMS41LmJiCmluZGV4IDYzY2FlYjQuLmYyMmQyNzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FsYWxjaGVteV8xLjEuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXlfMS4xLjUuYmIKQEAgLTEzLDQgKzEzLDYgQEAKIAogUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCiAKK0RFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKKwogaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDczNGUwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjQ0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlR3aXN0ZWQgaXMgYW4gZXZlbnQtZHJpdmVuIG5ldHdvcmtpbmcgZnJhbWV3b3JrIHdyaXR0ZW4gaW4gUHl0aG9uIGFuZCBsaWNlbnNlZCB1bmRlciB0aGUgTEdQTC4gXAotVHdpc3RlZCBzdXBwb3J0cyBUQ1AsIFVEUCwgU1NML1RMUywgbXVsdGljYXN0LCBVbml4IHNvY2tldHMsIGEgbGFyZ2UgbnVtYmVyIG9mIHByb3RvY29scyAgICAgICAgICAgICAgICAgICBcCi0oaW5jbHVkaW5nIEhUVFAsIE5OVFAsIElNQVAsIFNTSCwgSVJDLCBGVFAsIGFuZCBvdGhlcnMpLCBhbmQgbXVjaCBtb3JlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cudHdpc3RlZG1hdHJpeC5jb20iCi0KLSN0d2lzdGVkL3RvcGZpbGVzL05FV1M6NjU1OiAtIFJlbGljZW5zZWQ6IE5vdyB1bmRlciB0aGUgTUlUIGxpY2Vuc2UsIHJhdGhlciB0aGFuIExHUEwuCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU2MDJkNzIyOGRhZjU5YTE2ZjBmMWIyNjQwYzQ2YmNhIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODNmZTZjMGM5MTFjYzE2MDJkYmZmYjAzNmJlMGJhNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk1MTc1NjM4YzAxOWFjN2MwNjA0ZjRjMjkxNzI0YTE2ZmYxYWNkMDYyZTE4MWIwMTI5M2JmNGRjYmM2MmNmMyIKLQotUFlQSV9QQUNLQUdFID0gIlR3aXN0ZWQiCi1QWVBJX1BBQ0tBR0VfRVhUID0gInRhci5iejIiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgcmVtb3ZlIHNvbWUgdXNlbGVzcyBmaWxlcyBiZWZvcmUgcGFja2FnaW5nCi0gICAgZmluZCAke0R9IFwoIC1uYW1lICIqLmJhdCIgLW8gLW5hbWUgIiouYyIgLW8gLW5hbWUgIiouaCIgXCkgLWV4ZWMgcm0gLWYge30gXDsKLX0KLQotUEFDS0FHRVMgKz0gIlwKLSAgICAke1BOfS16c2ggXAotICAgICR7UE59LXRlc3QgXAotICAgICR7UE59LXByb3RvY29scyBcCi0gICAgJHtQTn0tY29uY2ggXAotICAgICR7UE59LWxvcmUgXAotICAgICR7UE59LW1haWwgXAotICAgICR7UE59LW5hbWVzIFwKLSAgICAke1BOfS1uZXdzIFwKLSAgICAke1BOfS1ydW5uZXIgXAotICAgICR7UE59LXdlYiBcCi0gICAgJHtQTn0td29yZHMgXAotICAgICR7UE59LWZsb3cgXAotICAgICR7UE59LXBhaXIgXAotICAgICR7UE59LWNvcmUgXAotIgotCi1QQUNLQUdFUyA9KyAiXAotICAgICR7UE59LXNyYyBcCi0gICAgJHtQTn0tYmluIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgICR7UE59LWJpbiBcCi0gICAgJHtQTn0tY29uY2ggXAotICAgICR7UE59LWxvcmUgXAotICAgICR7UE59LW1haWwgXAotICAgICR7UE59LW5hbWVzIFwKLSAgICAke1BOfS1uZXdzIFwKLSAgICAke1BOfS1ydW5uZXIgXAotICAgICR7UE59LXdlYiBcCi0gICAgJHtQTn0td29yZHMgXAotIgotCi1SREVQRU5EU18ke1BOfS1jb3JlID0gInB5dGhvbi1jb3JlIHB5dGhvbi16b3BlaW50ZXJmYWNlIHB5dGhvbi1jb250ZXh0bGliIgotUkRFUEVORFNfJHtQTn0tdGVzdCA9ICIke1BOfSIKLVJERVBFTkRTXyR7UE59LWNvbmNoID0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzIgotUkRFUEVORFNfJHtQTn0tbG9yZSA9ICIke1BOfS1jb3JlIgotUkRFUEVORFNfJHtQTn0tbWFpbCA9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKLVJERVBFTkRTXyR7UE59LW5hbWVzID0gIiR7UE59LWNvcmUiCi1SREVQRU5EU18ke1BOfS1uZXdzID0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzIgotUkRFUEVORFNfJHtQTn0tcnVubmVyID0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzIgotUkRFUEVORFNfJHtQTn0td2ViICs9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKLVJERVBFTkRTXyR7UE59LXdvcmRzICs9ICIke1BOfS1jb3JlIgotUkRFUEVORFNfJHtQTn0tZmxvdyArPSAiJHtQTn0tY29yZSIKLVJERVBFTkRTXyR7UE59LXBhaXIgKz0gIiR7UE59LWNvcmUiCi1SREVQRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0iCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1GSUxFU18ke1BOfSA9ICIiCi0KLUZJTEVTXyR7UE59LXRlc3QgPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdGVzdCBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyovdGVzdCBcCi0iCi0KLUZJTEVTXyR7UE59LXByb3RvY29scyA9ICIgXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHMvKi5weSogXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHMvZ3BzLyBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29scy9taWNlLyBcCi0iCi0KLUZJTEVTXyR7UE59LXpzaCA9ICIgXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24venNoIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3pzaGNvbXAuKiBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi90d2lzdGVkLWNvbXBsZXRpb24uenNoIFwKLSIKLQotRklMRVNfJHtQTn0tY29uY2ggPSAiIFwKLSAgICAke2JpbmRpcn0vY2tleWdlbiBcCi0gICAgJHtiaW5kaXJ9L3RrY29uY2ggXAotICAgICR7YmluZGlyfS9jb25jaCBcCi0gICAgJHtiaW5kaXJ9L2NvbmNoZnRwIFwKLSAgICAke2JpbmRpcn0vY2Z0cCBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9jb25jaC5weSogXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9jb25jaCAgXAotIgotCi1GSUxFU18ke1BOfS1jb3JlID0gIiBcCi0ke2JpbmRpcn0vbWFuaG9sZSBcCi0ke2JpbmRpcn0vbWt0YXAgXAotJHtiaW5kaXJ9L3R3aXN0ZCBcCi0ke2JpbmRpcn0vdGFwMmRlYiBcCi0ke2JpbmRpcn0vdGFwMnJwbSBcCi0ke2JpbmRpcn0vdGFwY29udmVydCBcCi0ke2JpbmRpcn0vdGtta3RhcCBcCi0ke2JpbmRpcn0vdHJpYWwgXAotJHtiaW5kaXJ9L2Vhc3lfaW5zdGFsbCogXAotJHtiaW5kaXJ9L3B5aHRtbGl6ZXIgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi8qLnNvIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX2luaXRfXy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvbm90ZXN0cGx1Z2luLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90ZXN0cGx1Z2luLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX2Z0cC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9pbmV0LnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX21hbmhvbGUucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfcG9ydGZvcndhcmQucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfc29ja3MucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfdGVsbmV0LnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3RyaWFsLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9kcm9waW4uY2FjaGUgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9jcmVkIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9lbnRlcnByaXNlIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldCBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvbWFuaG9sZSBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvbWFuaG9sZSBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGVyc2lzdGVkIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHNcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi90aW1lb3V0cXVldWUucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZmlsZXBhdGgucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZHhwcm9maWxlLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3BsdWdpbi5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9odG1saXplci5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9fX2luaXRfXy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9kaXNwYXRjaC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9ob29rLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3RocmVhZHBvb2wucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vb3RwLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3VzYWdlLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3Jvb3RzLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3ZlcnNpb25zLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3VybHBhdGgucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdXRpbC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wb25lbnRzLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2xvZ2ZpbGUucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcnVudGltZS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9yZWZsZWN0LnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbnRleHQucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdGhyZWFkYWJsZS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9yZWJ1aWxkLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2ZhaWx1cmUucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vbG9ja2ZpbGUucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZm9ybW1ldGhvZC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9maW5hbGl6ZS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi93aW4zMi5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9kaXN0LnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3Nob3J0Y3V0LnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3ppcHN0cmVhbS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9yZWxlYXNlLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3N5c2xvZy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9sb2cucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3pzaGNvbXAucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcHJvY3V0aWxzLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3RleHQucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vX3R3aXN0ZWRfenNoX3N0dWIgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3NjcmlwdHMvIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9zcHJlYWQvIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90YXAvIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90cmlhbC8gXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL19faW5pdF9fLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvX3ZlcnNpb24ucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9jb3B5cmlnaHQucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyoucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vKi5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvKi5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3RvcGZpbGVzIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvVHdpc3RlZCplZ2ctaW5mbyBcCi0iCi0KLUZJTEVTXyR7UE59LWxvcmUgPSAiIFwKLSR7YmluZGlyfS9ib29raWZ5IFwKLSR7YmluZGlyfS9sb3JlIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfbG9yZS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2xvcmUgXAotIgotCi1GSUxFU18ke1BOfS1tYWlsID0gIiBcCi0ke2JpbmRpcn0vbWFpbG1haWwgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9tYWlsLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvbWFpbCBcCi0iCi0KLUZJTEVTXyR7UE59LW5hbWVzID0gIiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX25hbWVzLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvbmFtZXMgXAotIgotCi1GSUxFU18ke1BOfS1uZXdzID0gIiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX25ld3MucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9uZXdzIFwKLSIKLQotRklMRVNfJHtQTn0tcnVubmVyID0gIiBcCi0ke2xpYmRpcn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3J1bm5lci9wb3J0bWFwLnNvIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9ydW5uZXJcCi0iCi0KLUZJTEVTXyR7UE59LXdlYiA9ICIgXAotJHtiaW5kaXJ9L3dlYnNldHJvb3QgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF93ZWIucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC93ZWJcCi0iCi0KLUZJTEVTXyR7UE59LXdvcmRzID0gIiBcCi0ke2JpbmRpcn0vaW0gXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF93b3Jkcy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3dvcmRzXAotIgotCi1GSUxFU18ke1BOfS1mbG93ID0gIiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX2Zsb3cucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9mbG93IFwiCi0KLUZJTEVTXyR7UE59LXBhaXIgPSAiIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfcGFpci5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BhaXIgXAotIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi8uZGVidWcgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyovKi8uZGVidWcgXAotIgotCi1SREVQRU5EU197UE59LXNyYyA9ICIke1BOfSIKLUZJTEVTXyR7UE59LXNyYyA9ICIgXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLnB5IFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi8qLnB5IFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi8qLyoucHkgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJvYl8xLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vib2JfMS42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxYzc0ZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJvYl8xLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLURFU0NSSVBUSU9OID0gIldTR0kgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0IgotSE9NRVBBR0UgPSAiaHR0cDovL3dlYm9iLm9yZy8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9saWNlbnNlLnR4dDttZDU9OGVkMzU4NGJjYzc4YzE2ZGEzNjM3NDdjY2FiYzVhZjUiCi0KLVBSID0gInIwIgotU1JDTkFNRSA9ICJXZWJPYiIKLQotU1JDX1VSSSA9ICJodHRwOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9XLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwODlkN2ZjNjc0NWYxNzU3Mzc4MDAyMzdjNzI4NzgwMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2M2QyNjJkOGY2MWI1MTYzMjFmNzg2ODc5YzkyNzdmYTIyMDlmN2Y1N2ViNDdiNTM3ZWVlY2ZlYTM4M2Q1NWI3IgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotCXB5dGhvbi1zcGhpbnggXAotCXB5dGhvbi1ub3NlIFwKLQkiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vib2JfMS43LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYm9iXzEuNy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNDQ4YmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYm9iXzEuNy4zLmJiCkBAIC0wLDAgKzEsMTggQEAKK0RFU0NSSVBUSU9OID0gIldTR0kgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0IgorSE9NRVBBR0UgPSAiaHR0cDovL3dlYm9iLm9yZy8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9saWNlbnNlLnR4dDttZDU9OGVkMzU4NGJjYzc4YzE2ZGEzNjM3NDdjY2FiYzVhZjUiCisKK1BZUElfUEFDS0FHRSA9ICJXZWJPYiIKKworU1JDX1VSSVttZDVzdW1dID0gIjM1MDAyOGJhZmZjNTA4ZTNkMjNjMDc4MTE4ZTM1MzE2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU2NWNhMTRiOWY1YWU1YjAzMTk4OGZmYzkzZjhiN2YzMDVkZGZjZjE3YTRjNzc0YWUwZGI0N2JjYjNiODcyODMiCisKK2luaGVyaXQgc2V0dXB0b29scyBweXBpCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorCXB5dGhvbi1zcGhpbnggXAorCXB5dGhvbi1ub3NlIFwKKwkiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vic29ja2V0LWNsaWVudC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYnNvY2tldC1jbGllbnQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxNzc4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYnNvY2tldC1jbGllbnQuaW5jCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiV2ViU29ja2V0IGNsaWVudCBmb3IgcHl0aG9uLiBoeWJpMTMgaXMgc3VwcG9ydGVkLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXQtY2xpZW50L3dlYnNvY2tldC1jbGllbnQuZ2l0IgorTElDRU5TRSA9ICJMR1BMLTMuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE4YjA5YTIwZGQxODZhZjRmZDYwZjFhMDgzMTE2MjhjIgorCitpbmhlcml0IHB5cGkKKworUFlQSV9QQUNLQUdFID0gIndlYnNvY2tldF9jbGllbnQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3M2Q4N2FhMTZhMjIxMmRhNDQ4YjMwYWNhOWM1YmYzYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNWY1ODU1NjZlMmVhNzQ1OTEzNmE2MzJiOTc4NWFhMDgxMDkzMDY0MzkxODc4YTQ0OGMzODI0MTVlOTQ4ZDcyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJzb2NrZXQtY2xpZW50XzAuNDQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vic29ja2V0LWNsaWVudF8wLjQ0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFlZWIwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vic29ja2V0LWNsaWVudF8wLjQ0LjAuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi13ZWJzb2NrZXQtY2xpZW50LmluYworaW5oZXJpdCBzZXR1cHRvb2xzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Z18wLjEwLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnXzAuMTAuNC5iYgppbmRleCA3NjNlNWI5Li41ZjNlMDFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnXzAuMTAuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnXzAuMTAuNC5iYgpAQCAtMTQsNiArMTQsOCBAQAogCiBTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKIAorREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgorCiBpbmhlcml0IHNldHVwdG9vbHMKIAogUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1pbyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2NrZXJwdHlfMC40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2NrZXJwdHlfMC40LjEuYmIKaW5kZXggYTQwZjJhMy4uMzFhODY0YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9ja2VycHR5XzAuNC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY2tlcnB0eV8wLjQuMS5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiUHl0aG9uIGxpYnJhcnkgdG8gdXNlIHRoZSBwc2V1ZG8tdHR5IG9mIGEgZG9ja2VyIGNvbnRhaW5lciIKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kMTF3dHEvZG9ja2VycHR5IgogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWZhZjc2N2JhYTIwYWM1MjRkYzEyZjEwNzFjYTQ5M2EiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCiAKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2lzdGVkXzEzLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXN0ZWRfMTMuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODAxNmNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXN0ZWRfMTMuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi10d2lzdGVkLmluYwotCi1SREVQRU5EU18ke1BOfS1jb3JlID0gInB5dGhvbjMtY29yZSBweXRob24zLXpvcGVpbnRlcmZhY2UgcHl0aG9uMy1sYW5nIgotCi1GSUxFU18ke1BOfS1jb3JlX2FwcGVuZCArPSAiIFwKLSAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL19fcHljYWNoZV9fIFwKLSAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9fX3B5Y2FjaGVfXy8qcHljIFwKLSAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vX19pbml0X18qLnB5YyBcCi0gICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL25vdGVzdHBsdWdpbioucHljIFwKLSAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdGVzdHBsdWdpbioucHljIFwKLSAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9mdHAqLnB5YyBcCi0gICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfaW5ldCoucHljIFwKLSAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9tYW5ob2xlKi5weWMgXAotICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3BvcnRmb3J3YXJkKi5weWMgXAotICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3NvY2tzKi5weWMgXAotICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3RlbG5ldCoucHljIFwKLSAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF90cmlhbCoucHljIFwKLSAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9jb3JlKi5weWMgXAotICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3F0c3R1YioucHljIFwKLSAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9yZWFjdG9ycyoucHljIFwKLSAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vY3JlZCoucHljIFwKLSAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vZHJvcGluKi5jYWNoZSBcCi0iCi0KLUZJTEVTXyR7UE59LW5hbWVzX2FwcGVuZCA9ICIgXAotICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX25hbWVzKi5weWMgXAotIgotCi1GSUxFU18ke1BOfS1uZXdzX2FwcGVuZCA9ICIgXAotICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX25ld3MqLnB5YyBcCi0iCi0KLUZJTEVTXyR7UE59LXByb3RvY29sc19hcHBlbmQgKz0gIiBcCi0gICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHMvX19weWNhY2hlX18vKnB5YyBcCi0iCi0KLUZJTEVTXyR7UE59LWNvbmNoX2FwcGVuZCA9ICIgXAotICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX2NvbmNoKi5weWMgXAotIgotCi1GSUxFU18ke1BOfS1sb3JlX2FwcGVuZCA9ICIgXAotICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX2xvcmUqLnB5YyBcCi0iCi1GSUxFU18ke1BOfS1tYWlsX2FwcGVuZCA9ICIgXAotICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX21haWwqLnB5YyBcCi0iCi0KLUZJTEVTXyR7UE59LXdlYl9hcHBlbmQgPSAiIFwKLSAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF93ZWIqLnB5YyBcCi0iCi0KLUZJTEVTXyR7UE59LXdvcmRzX2FwcGVuZCA9ICIgXAotICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3dvcmRzKi5weWMgXAotIgotCi1GSUxFU18ke1BOfS1mbG93X2FwcGVuZCA9ICIgXAotICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX2Zsb3cqLnB5YyBcCi0iCi0KLUZJTEVTXyR7UE59LXBhaXJfYXBwZW5kID0gIiBcCi0gICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfcGFpcioucHljIFwKLSIKLQotRklMRVNfJHtQTn0tcnVubmVyX2FwcGVuZCA9ICIgXAotICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3J1bm5lcioucHljIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYnNvY2tldC1jbGllbnRfMC40NC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vic29ja2V0LWNsaWVudF8wLjQ0LjAuYmIKaW5kZXggOGRmYzk1Zi4uNDczZTMxZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vic29ja2V0LWNsaWVudF8wLjQ0LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vic29ja2V0LWNsaWVudF8wLjQ0LjAuYmIKQEAgLTEsMTEgKzEsMiBAQAotU1VNTUFSWSA9ICJXZWJTb2NrZXQgY2xpZW50IGZvciBweXRob24uIGh5YmkxMyBpcyBzdXBwb3J0ZWQuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldC1jbGllbnQvd2Vic29ja2V0LWNsaWVudC5naXQiCi1MSUNFTlNFID0gIkxHUEwtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MThiMDlhMjBkZDE4NmFmNGZkNjBmMWEwODMxMTYyOGMiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotCi1QWVBJX1BBQ0tBR0UgPSAid2Vic29ja2V0X2NsaWVudCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjczZDg3YWExNmEyMjEyZGE0NDhiMzBhY2E5YzViZjNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE1ZjU4NTU2NmUyZWE3NDU5MTM2YTYzMmI5Nzg1YWEwODEwOTMwNjQzOTE4NzhhNDQ4YzM4MjQxNWU5NDhkNzIiCityZXF1aXJlIHB5dGhvbi13ZWJzb2NrZXQtY2xpZW50LmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2h5cGVyc3RhcnQvaHlwZXJzdGFydF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9oeXBlcnN0YXJ0L2h5cGVyc3RhcnRfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyOTc0NzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9oeXBlcnN0YXJ0L2h5cGVyc3RhcnRfZ2l0LmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiVGhlIHRpbnkgSW5pdCBzZXJ2aWNlIGZvciBIeXBlckNvbnRhaW5lciIKK0RFU0NSSVBUSU9OID0gIlRoZSBpbml0IFRhc2sgZm9yIEh5cGVyQ29udGFpbmVyIgorCitMSUNFTlNFID0gIkFwYWNoZS0yIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZmE4MThhMjU5Y2JlZDdjZThiYzJhMjJkMzVhNDY0ZmMiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCAKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2h5cGVyaHEvaHlwZXJzdGFydC5naXQiCisKK1NSQ1JFViA9ICJhZDQ4YTMyMzA4MzZmNTlhZGExNjM2NTljZGUxNTFhMzc1MjIwNjhiIgorUFYgPSAidjAuMitnaXQke1NSQ1JFVn0iCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X2ZpbGVfX3Vzcl9pbmNsdWRlX2xpbnV4X3ZtX3NvY2tldHNfaD10cnVlIgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfS92YXIvbGliL2h5cGVyLworCisgICAgICAgIGluc3RhbGwgLW02NDQgJHtTfS9idWlsZC9oeXBlci1pbml0cmQuaW1nICR7RH0vdmFyL2xpYi9oeXBlci8KKyAgICAgICAgaW5zdGFsbCAtbTY0NCAke1N9L2J1aWxkL2FyY2gveDg2XzY0L2tlcm5lbCAke0R9L3Zhci9saWIvaHlwZXIvCit9CisKK0ZJTEVTXyR7UE59ICs9ICIvdmFyL2xpYi9oeXBlciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9rdm0taW1hZ2UtbWluaW1hbC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9rdm0taW1hZ2UtbWluaW1hbC5iYgppbmRleCBjOTZlZGNhLi5iMjhjYzMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMva3ZtLWltYWdlLW1pbmltYWwuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2t2bS1pbWFnZS1taW5pbWFsLmJiCkBAIC0yLDcgKzIsNiBAQAogCiBJTUFHRV9JTlNUQUxMID0gIiBcCiAgICAgcGFja2FnZWdyb3VwLWNvcmUtYm9vdCBcCi0gICAgJHtST09URlNfUEtHTUFOQUdFX0JPT1RTVFJBUH0gXAogICAgIHFlbXUgXAogICAgIGxpYnZpcnQgXAogICAgIGxpYnZpcnQtbGlidmlydGQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMtbWV0YS12aXJ0dWFsaXphdGlvbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy1tZXRhLXZpcnR1YWxpemF0aW9uLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmQ1MjFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMtbWV0YS12aXJ0dWFsaXphdGlvbi5pbmMKQEAgLTAsMCArMSwxOSBAQAorUlJFQ09NTUVORFNfJHtQTn0gKz0gImtlcm5lbC1tb2R1bGUtaXA2LXRhYmxlcyBcCisgICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcC10YWJsZXMgXAorICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXA2dGFibGUtZmlsdGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtZmlsdGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwNnRhYmxlLXJhdyBcCisgICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcHRhYmxlLXJhdyBcCisgICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcDZ0YWJsZS1uYXQgXAorICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1uYXQgXAorICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXA2dGFibGUtbWFuZ2xlIFwKKyAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtbWFnbGUgXAorICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXA2dGFibGUtc2VjdXJpdHkgXAorICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1zZWN1cml0eSBcCisgICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcHQtcmVqZWN0IFwKKyAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtbWFuZ2xlIFwKKyAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLXh0LWNoZWNrc3VtIFwKKyAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLXh0LWNvbm50cmFjayBcCisgICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS14dC1zdGF0ZSBcCisgICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS14dC10Y3B1ZHAgXAorICAgICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuJS5iYmFwcGVuZAppbmRleCA1MmE0YzRmLi45YTE1ZTYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLiUuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS4lLmJiYXBwZW5kCkBAIC0xLDggKzEgQEAKLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLWlwNi10YWJsZXMgXAotICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXA2dGFibGUtZmlsdGVyIFwKLSAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLXh0LXRjcHVkcCBcCi0gICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcHQtcmVqZWN0IFwKLSAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtbWFuZ2xlIFwKLSAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLXh0LWNoZWNrc3VtIFwKLSAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLXh0LXN0YXRlIFwKLSAgICAgICAgICAgICAgICAgICAgICAiCityZXF1aXJlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndmlydHVhbGl6YXRpb24nLCAnJHtCUE59LW1ldGEtdmlydHVhbGl6YXRpb24uaW5jJywgJycsIGQpfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXJxYmFsYW5jZS9pcnFiYWxhbmNlL2FkZC1pbml0c2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXJxYmFsYW5jZS9pcnFiYWxhbmNlL2FkZC1pbml0c2NyaXB0LnBhdGNoCmluZGV4IDQ2YTc1YTguLmIwZTYwOGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2lycWJhbGFuY2UvaXJxYmFsYW5jZS9hZGQtaW5pdHNjcmlwdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pcnFiYWxhbmNlL2lycWJhbGFuY2UvYWRkLWluaXRzY3JpcHQucGF0Y2gKQEAgLTEsMTQgKzEsMjMgQEAKLWlycWJhbGFuY2U6IGFkZCBiYXNpYyBpbml0IHNjcmlwdAorRnJvbSA4MGM0NWVlY2MxOTNjNmMxMzQzMGRkZWI0MGI5YjBmZDE4NDFjZWVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTQgTWFyIDIwMTMgMjM6MzE6MzggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaXJxYmFsYW5jZTogYWRkIGJhc2ljIGluaXQgc2NyaXB0CiAKIFRoZSB1cHN0cmVhbSBpcnFiYWxhbmNlIHJlbGVhc2UgcGFja2FnZSBkb2VzIG5vdCBjb250YWluIGFuCiBpbml0IHNjcmlwdCBzbyB3ZSBjcmVhdGUgYSBiYXNpYyBvbmUgaGVyZS4KIAogU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KKwogLS0tCi1JbmRleDogaXJxYmFsYW5jZS0wLjU2L2lycWJhbGFuY2UuaW5pdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIGlycWJhbGFuY2UuaW5pdCB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaXJxYmFsYW5jZS5pbml0CisKK2RpZmYgLS1naXQgYS9pcnFiYWxhbmNlLmluaXQgYi9pcnFiYWxhbmNlLmluaXQKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kMTJkNjJjCiAtLS0gL2Rldi9udWxsCi0rKysgaXJxYmFsYW5jZS0wLjU2L2lycWJhbGFuY2UuaW5pdAorKysrIGIvaXJxYmFsYW5jZS5pbml0CiBAQCAtMCwwICsxLDM1IEBACiArIyEvYmluL3NoCiArIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXJxYmFsYW5jZS9pcnFiYWxhbmNlL2ZpeC1jb25maWd1cmUtbGliY2FwLW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXJxYmFsYW5jZS9pcnFiYWxhbmNlL2ZpeC1jb25maWd1cmUtbGliY2FwLW5nLnBhdGNoCmluZGV4IDViZTUyNDMuLmZiMjJkN2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2lycWJhbGFuY2UvaXJxYmFsYW5jZS9maXgtY29uZmlndXJlLWxpYmNhcC1uZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pcnFiYWxhbmNlL2lycWJhbGFuY2UvZml4LWNvbmZpZ3VyZS1saWJjYXAtbmcucGF0Y2gKQEAgLTEsMTcgKzEsMjIgQEAKK0Zyb20gMjBhMWIyZmYyZTZkODA5MjQ4MjQ5ODNjMzYzYzgwZjY2ZTA1YzBkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogU3VuLCA2IFNlcCAyMDE1IDE0OjQzOjI0ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGdyYXNwIHdpdGh2YWwgZm9yIGxpYmNhcC1uZwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPG1pbmcubGl1QHdpbmRyaXZlci5jb20+CisKIC0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgIDUgKysrKy0KKyBjb25maWd1cmUuYWMgfCA1ICsrKystCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC11cnBOIGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAzOGExYmVlLi45NWYxNDg4IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC02MSw3ICs2MSwxMCBAQCBBU19JRigKLSBBTV9DT05ESVRJT05BTChbTE9DQUxfR0xJQl0sIFt0ZXN0ICJ4JGxvY2FsX2dsaWIyIiA9ICJ4eWVzIl0pCitAQCAtNjIsNyArNjIsMTAgQEAgQVNfSUYoCisgXSkKICAKICBBQ19BUkdfV0lUSChbbGliY2FwLW5nXSwKIC0gIEFTX0hFTFBfU1RSSU5HKFtsaWJjYXAtbmddLCBbQWRkIGxpYmNhcC1uZy1zdXBwb3J0IEA8OkBkZWZhdWx0PWF1dG9AOj5AXSkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pcnFiYWxhbmNlL2lycWJhbGFuY2UvaXJxYmFsYW5jZS1BZGQtc3RhdHVzLWFuZC1yZWxvYWQtY29tbWFuZHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pcnFiYWxhbmNlL2lycWJhbGFuY2UvaXJxYmFsYW5jZS1BZGQtc3RhdHVzLWFuZC1yZWxvYWQtY29tbWFuZHMucGF0Y2gKaW5kZXggZDg1M2QwYi4uZWMwMTQ0OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXJxYmFsYW5jZS9pcnFiYWxhbmNlL2lycWJhbGFuY2UtQWRkLXN0YXR1cy1hbmQtcmVsb2FkLWNvbW1hbmRzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2lycWJhbGFuY2UvaXJxYmFsYW5jZS9pcnFiYWxhbmNlLUFkZC1zdGF0dXMtYW5kLXJlbG9hZC1jb21tYW5kcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZGM3MzY2ODk2ZGQ1YTViYWU4MmJlNGIxMTUzMGJjOWZkYjdjYmNkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOWExNmRhMjYyOGNjNGZkZGYzN2ZlMDM2OGI0ZjY0MjQyNzBmMGIyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFlhbmcgU2hpIDx5YW5nLnNoaUB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNiBBdWcgMjAxMyAxMDo1ODowMiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBpcnFiYWxhbmNlOiBBZGQgc3RhdHVzIGFuZCByZWxvYWQgY29tbWFuZHMKQEAgLTYsOSArNiwxMCBAQAogQWRkIHN0YXR1cyBhbmQgcmVsb2FkIGNvbW1hbmRzIGZvciBpcnFiYWxhbmNlZCBpbml0IHNjcmlwdAogCiBTaWduZWQtb2ZmLWJ5OiBZYW5nIFNoaSA8eWFuZy5zaGlAd2luZHJpdmVyLmNvbT4KKwogLS0tCi0gaXJxYmFsYW5jZS5pbml0IHwgICAxMiArKysrKysrKystLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKyBpcnFiYWxhbmNlLmluaXQgfCAxMiArKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvaXJxYmFsYW5jZS5pbml0IGIvaXJxYmFsYW5jZS5pbml0CiBpbmRleCBkMTJkNjJjLi5mNThiZjU1IDEwMDY0NApAQCAtNTAsNiArNTEsMyBAQAogIAlleGl0IDEKICAJOzsKICBlc2FjCi0tLSAKLTEuNy41LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXJxYmFsYW5jZS9pcnFiYWxhbmNlXzEuMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXJxYmFsYW5jZS9pcnFiYWxhbmNlXzEuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmVmYTk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2lycWJhbGFuY2UvaXJxYmFsYW5jZV8xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE1IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgotIwotCi1yZXF1aXJlIGlycWJhbGFuY2UuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMTVkOTc1MzM2MDgwYmNhYzRiZTBjMTc1MmQ0M2NmMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MTUwNmU2MzhiMDNiZjI3Y2Y1ZGE3ZGMyNTBkNThhNzUzY2U4YTAyODhhMjAyNjVmYzdmZjAyNjYwNDA3MDZiIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9JcnFiYWxhbmNlL2lycWJhbGFuY2UvYXJjaGl2ZS92JHtQVn0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9aXJxYmFsYW5jZS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vYWRkLWluaXRzY3JpcHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaXJxYmFsYW5jZS1BZGQtc3RhdHVzLWFuZC1yZWxvYWQtY29tbWFuZHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWNvbmZpZ3VyZS1saWJjYXAtbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaXJxYmFsYW5jZWQuc2VydmljZSBcCi0gICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXJxYmFsYW5jZS9pcnFiYWxhbmNlXzEuMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXJxYmFsYW5jZS9pcnFiYWxhbmNlXzEuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ODFhOGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pcnFiYWxhbmNlL2lycWJhbGFuY2VfMS4zLjAuYmIKQEAgLTAsMCArMSwxNSBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTUgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCisKK3JlcXVpcmUgaXJxYmFsYW5jZS5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjUzZWUzOTNhZGNmYmM4ZTVhYjIzY2JiZDkyMGRmNjg3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQxYzJjMDg0MmQ4ZmIyNDI0MGQ4MDY5YjM4OWNkOGQxNjY5NjI1YTQwMDA5YTE3YWQ4ODY5Njc4NDVkYzZlNDMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0lycWJhbGFuY2UvaXJxYmFsYW5jZS9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT1pcnFiYWxhbmNlLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtaW5pdHNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pcnFiYWxhbmNlLUFkZC1zdGF0dXMtYW5kLXJlbG9hZC1jb21tYW5kcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtY29uZmlndXJlLWxpYmNhcC1uZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pcnFiYWxhbmNlZC5zZXJ2aWNlIFwKKyAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9saWJ2aXJ0L2xpYnZpcnQtMS4zLjUvTWFrZWZpbGVzLUFkZC1tb3JlLVhEUl9DRkxBR1MtYXMtbmVlZGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvbGlidmlydC9saWJ2aXJ0LTEuMy41L01ha2VmaWxlcy1BZGQtbW9yZS1YRFJfQ0ZMQUdTLWFzLW5lZWRlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjZjZGQwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvbGlidmlydC9saWJ2aXJ0LTEuMy41L01ha2VmaWxlcy1BZGQtbW9yZS1YRFJfQ0ZMQUdTLWFzLW5lZWRlZC5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIGRjZmMyNjNkYjllNjllNTM4MWNiNTExYzUxODM2MjcxZGVjNTc3YTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxMCBNYXkgMjAxOCAxMzoyNzo0NyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZXM6IEFkZCBtb3JlICRYRFJfQ0ZMQUdTIGFzIG5lZWRlZAorCitXaGVuIGJ1aWxkaW5nIHdpdGggbGlidGlycGMgaW5zdGVhZCBvZiBsaWJjLXhkciB0aGUgaW5jbHVkZSBzZWFyY2gKK3BhdGggbmVlZHMgdG8gYmUgdXNlZC4gSW4gc2V2ZXJhbCBwbGFjZXMgdGhpcyB3YXMgbWlzc2luZyBhbmQgaXQgd2FzCitvbmx5IGxvb2tpbmcgaW4gL3Vzci9pbmNsdWRlIGFuZCBmYWlsaW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29sZCByZWxlYXNlXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL01ha2VmaWxlLmFtICAgfCA1ICsrKy0tCisgdGVzdHMvTWFrZWZpbGUuYW0gfCAxICsKKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggZTljZTk0MS4uMzgxMTRiNyAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgbGlidmlydF9sYV9CVUlMVF9MSUJBREQgKz0gbGlidmlydF9kcml2ZXIubGEKKyBsaWJ2aXJ0X2RyaXZlcl9sYV9TT1VSQ0VTID0gJChEUklWRVJfU09VUkNFUykKKyAKKyBsaWJ2aXJ0X2RyaXZlcl9sYV9DRkxBR1MgPSBcCistCQkkKEdOVVRMU19DRkxBR1MpICQoQ1VSTF9DRkxBR1MpIFwKKysJCSQoR05VVExTX0NGTEFHUykgJChDVVJMX0NGTEFHUykgJChYRFJfQ0ZMQUdTKSBcCisgCQktSSQoc3JjZGlyKS9jb25mICQoQU1fQ0ZMQUdTKQorIGxpYnZpcnRfZHJpdmVyX2xhX0xJQkFERCA9IFwKKyAJCSQoR05VVExTX0xJQlMpICQoQ1VSTF9MSUJTKSAkKERMT1BFTl9MSUJTKQorQEAgLTEzNDgsNiArMTM0OCw3IEBAIGVuZGlmICEgV0lUSF9EUklWRVJfTU9EVUxFUworIAorIGxpYnZpcnRfZHJpdmVyX3FlbXVfaW1wbF9sYV9DRkxBR1MgPSBcCisgCQkkKEdOVVRMU19DRkxBR1MpIFwKKysJCSQoWERSX0NGTEFHUykgXAorIAkJJChMSUJOTF9DRkxBR1MpIFwKKyAJCS1JJChzcmNkaXIpL2FjY2VzcyBcCisgCQktSSQoc3JjZGlyKS9jb25mIFwKK0BAIC0yMzA2LDcgKzIzMDcsNyBAQCBsaWJ2aXJ0X2x4Y19sYV9MREZMQUdTID0gXAorIAkJJChDWUdXSU5fRVhUUkFfTERGTEFHUykgXAorIAkJJChNSU5HV19FWFRSQV9MREZMQUdTKSBcCisgCQkkKE5VTEwpCistbGlidmlydF9seGNfbGFfQ0ZMQUdTID0gJChBTV9DRkxBR1MpCisrbGlidmlydF9seGNfbGFfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoWERSX0NGTEFHUykKKyBsaWJ2aXJ0X2x4Y19sYV9MSUJBREQgPSBsaWJ2aXJ0LmxhICQoQ1lHV0lOX0VYVFJBX0xJQkFERCkKKyAKKyAjIFNpbmNlIHZpcnQtbG9naW4tc2hlbGwgd2lsbCBiZSBzZXR1aWQsIHdlIG11c3QgZG8gZXZlcnl0aGluZworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDJmOGI5ZWIuLmFlYzlhM2UgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC00OCw2ICs0OCw3IEBAIEFNX0NGTEFHUyA9IFwKKyAJJChBUFBBUk1PUl9DRkxBR1MpIFwKKyAJJChZQUpMX0NGTEFHUykgXAorIAkkKENPVkVSQUdFX0NGTEFHUykgXAorKwkkKFhEUl9DRkxBR1MpIFwKKyAJJChXQVJOX0NGTEFHUykKKyAKKyBBTV9MREZMQUdTID0gXAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9saWJ2aXJ0L2xpYnZpcnQtMS4zLjUvY29uZmlndXJlLmFjLXNlYXJjaC1mb3ItcnBjLXJwYy5oLWluLXRoZS1zeXNyb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvbGlidmlydC9saWJ2aXJ0LTEuMy41L2NvbmZpZ3VyZS5hYy1zZWFyY2gtZm9yLXJwYy1ycGMuaC1pbi10aGUtc3lzcm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGJhZGI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvbGlidmlydC9saWJ2aXJ0LTEuMy41L2NvbmZpZ3VyZS5hYy1zZWFyY2gtZm9yLXJwYy1ycGMuaC1pbi10aGUtc3lzcm9vdC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGYxMDQ3N2YwZmU1ZTRiNzQ4N2E0YTQxZmFhMjE2ZDEwY2QyYmM3YzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxMCBNYXkgMjAxOCAxMjowNTowNCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IHNlYXJjaCBmb3IgcnBjL3JwYy5oIGluIHRoZSBzeXNyb290CisKK1dlIHdhbnQgdG8gYXZvaWQgaG9zdCBjb250YW1pbmF0aW9uIGFuZCB1c2UgdGhlIHN5c3Jvb3QgYXMgdGhlIGJhc2UKK2RpcmVjdG9yeSBmb3Igb3VyIHNlYXJjaCBzbyBhZGQgdGhlICc9JyB0aGUgdGhlICctSScgd2hlbiBzZWFyY2hpbmcKK2ZvciBsaWJ0aXJwYydzIHJwYy5oIGhlYWRlci4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvbGQgcmVsZWFzZV0KKworU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDVhNjQwOGMuLjZjMTlmNmQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTcwNSwxMCArNzA1LDEwIEBAIGlmIHRlc3QgeCIkd2l0aF9yZW1vdGUiID0geCJ5ZXMiIHx8IHRlc3QgeCIkd2l0aF9saWJ2aXJ0ZCIgPSB4InllcyI7IHRoZW4KKyAgICAgZG5sIGNoZWNrIGZvciBjeWd3aW4ncyB2YXJpYXRpb24gaW4geGRyIGZ1bmN0aW9uIG5hbWVzCisgICAgIEFDX0NIRUNLX0ZVTkNTKFt4ZHJfdV9pbnQ2NF90XSxbXSxbXSxbI2luY2x1ZGUgPHJwYy94ZHIuaD5dKQorIAorLSAgICBkbmwgQ3lnd2luL3JlY2VudCBnbGliYyByZXF1aXJlcyAtSS91c3IvaW5jbHVkZS90aXJwYyBmb3IgPHJwYy9ycGMuaD4KKysgICAgZG5sIEN5Z3dpbi9yZWNlbnQgZ2xpYmMgcmVxdWlyZXMgLUk9L3Vzci9pbmNsdWRlL3RpcnBjIGZvciA8cnBjL3JwYy5oPgorICAgICBvbGRfQ0ZMQUdTPSRDRkxBR1MKKyAgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXJlIHRvIGZpbmQgPHJwYy9ycGMuaD5dLCBbbHZfY3ZfeGRyX2NmbGFnc10sIFsKKy0gICAgICBmb3IgYWRkX0NGTEFHUyBpbiAnJyAnLUkvdXNyL2luY2x1ZGUvdGlycGMnICdtaXNzaW5nJzsgZG8KKysgICAgICBmb3IgYWRkX0NGTEFHUyBpbiAnJyAnLUk9L3Vzci9pbmNsdWRlL3RpcnBjJyAnbWlzc2luZyc7IGRvCisgICAgICAgICBpZiB0ZXN0IHgiJGFkZF9DRkxBR1MiID0geG1pc3Npbmc7IHRoZW4KKyAgICAgICAgICAgbHZfY3ZfeGRyX2NmbGFncz1taXNzaW5nOyBicmVhaworICAgICAgICAgZmkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvbGlidmlydC9saWJ2aXJ0L2Ruc21hc3EuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2xpYnZpcnQvbGlidmlydC9kbnNtYXNxLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdjMzA1OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2xpYnZpcnQvbGlidmlydC9kbnNtYXNxLmNvbmYKQEAgLTAsMCArMSwyIEBACitiaW5kLWludGVyZmFjZXMKK2V4Y2VwdC1pbnRlcmZhY2U9dmlyYnIwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9saWJ2aXJ0L2xpYnZpcnRfMS4zLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9saWJ2aXJ0L2xpYnZpcnRfMS4zLjUuYmIKaW5kZXggOGVkMjUwNS4uMzVmZDU3NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvbGlidmlydC9saWJ2aXJ0XzEuMy41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2xpYnZpcnQvbGlidmlydF8xLjMuNS5iYgpAQCAtNyw3ICs3LDcgQEAKIFNFQ1RJT04gPSAiY29uc29sZS90b29scyIKIAogREVQRU5EUyA9ICJicmlkZ2UtdXRpbHMgZ251dGxzIGxpYnhtbDIgbHZtMiBhdmFoaSBwYXJ0ZWQgY3VybCBsaWJwY2FwIHV0aWwtbGludXggZTJmc3Byb2dzIHBtLXV0aWxzIFwKLQkgICBpcHRhYmxlcyBkbnNtYXNxIHJlYWRsaW5lIGxpYnRhc24xIGxpYnhzbHQtbmF0aXZlIGFjbCBsaWJkZXZtYXBwZXIgXAorCSAgIGlwdGFibGVzIGRuc21hc3EgcmVhZGxpbmUgbGlidGFzbjEgbGlieHNsdC1uYXRpdmUgYWNsIGxpYmRldm1hcHBlciBsaWJ0aXJwYyBcCiAJICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3NoYWRvdy1uYXRpdmUnLCAnJywgZCl9IgogCiAjIGxpYnZpcnQtZ3Vlc3RzLnNoIG5lZWRzIGdldHRleHQuc2gKQEAgLTI3LDYgKzI3LDcgQEAKICAgICAgICAgICAgZmlsZTovL3Rvb2xzLWFkZC1saWJ2aXJ0LW5ldC1ycGMtdG8tdmlydC1ob3N0LXZhbGlkYXRlLXdoZW4ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbGlidmlydGQuc2ggXAogICAgICAgICAgICBmaWxlOi8vbGlidmlydGQuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9kbnNtYXNxLmNvbmYgXAogICAgICAgICAgICBmaWxlOi8vcnVucHRlc3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgZmlsZTovL3Rlc3RzLWFsbG93LXNlcGFyYXRlZC1zcmMtYW5kLWJ1aWxkLWRpcnMucGF0Y2ggXApAQCAtMzksNiArNDAsOCBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wdGVzdC1hZGQtbWlzc2luZy10ZXN0X2hlbHBlci1maWxlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXB0ZXN0LVJlbW92ZS1XaW5kb3dzLTEyNTItY2hlY2stZnJvbS1lc3h1dGlsc3Rlc3QucGF0Y2ggXAogCSAgIGZpbGU6Ly8wMDAxLUFkZGVkLWNvbmZpZ3VyZS12YXJpYWJsZS1mb3ItcGxhY2luZy1zeXN0ZW1kLXVudGlzLWwucGF0Y2ggXAorCSAgIGZpbGU6Ly9jb25maWd1cmUuYWMtc2VhcmNoLWZvci1ycGMtcnBjLmgtaW4tdGhlLXN5c3Jvb3QucGF0Y2ggXAorCSAgIGZpbGU6Ly9NYWtlZmlsZXMtQWRkLW1vcmUtWERSX0NGTEFHUy1hcy1uZWVkZWQucGF0Y2ggXAogICAgICAgICAgICIKIAogU1JDX1VSSVtsaWJ2aXJ0Lm1kNXN1bV0gPSAiZjlkYzFlNjNkNTU5ZWNhNTBhZTBlZTc5OGE0YzZjNmQiCkBAIC0yMTksNiArMjIyLDcgQEAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogCWluc3RhbGwgLWQgJHtEfS9ldGMvaW5pdC5kCiAJaW5zdGFsbCAtZCAke0R9L2V0Yy9saWJ2aXJ0CisJaW5zdGFsbCAtZCAke0R9L2V0Yy9kbnNtYXNxLmQKIAogCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpYnZpcnRkLnNoICR7RH0vZXRjL2luaXQuZC9saWJ2aXJ0ZAogCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpYnZpcnRkLmNvbmYgJHtEfS9ldGMvbGlidmlydC9saWJ2aXJ0ZC5jb25mCkBAIC0yNjYsNiArMjcwLDEwIEBACiAJIyBBZGQgaG9vayBzdXBwb3J0IGZvciBsaWJ2aXJ0CiAJbWtkaXIgLXAgJHtEfS9ldGMvbGlidmlydC9ob29rcwogCisJIyBGb3JjZSB0aGUgbWFpbiBkbnNtYXNxIGluc3RhbmNlIHRvIGJpbmQgb25seSB0byBzcGVjaWZpZWQgaW50ZXJmYWNlcyBhbmQKKwkjIHRvIG5vdCBiaW5kIHRvIHZpcmJyMC4gTGlidmlydCB3aWxsIHJ1biBpdHMgb3duIGluc3RhbmNlIG9uIHRoaXMgaW50ZXJmYWNlLgorCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZG5zbWFzcS5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9kbnNtYXNxLmQvbGlidmlydC1kYWVtb24KKwogCSMgcmVtb3ZlIC5sYSByZWZlcmVuY2VzIHRvIG91ciB3b3JraW5nIGRpcmV0b3J5CiAJZm9yIGkgaW4gYGZpbmQgJHtEfSR7bGliZGlyfSAtdHlwZSBmIC1uYW1lICoubGFgOyBkbwogCSAgICBzZWQgLWkgLWUgJ3MjLUwke0J9L3NyYy8ubGlicyMjZycgJGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy8wMDAxLXAybS1BbHdheXMtY2hlY2stdG8tc2VlLWlmLXJlbW92aW5nLWEtcDJtLWVudHJ5LWFjdHUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvMDAwMS1wMm0tQWx3YXlzLWNoZWNrLXRvLXNlZS1pZi1yZW1vdmluZy1hLXAybS1lbnRyeS1hY3R1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkOTUyNGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvMDAwMS1wMm0tQWx3YXlzLWNoZWNrLXRvLXNlZS1pZi1yZW1vdmluZy1hLXAybS1lbnRyeS1hY3R1LnBhdGNoCkBAIC0wLDAgKzEsMTc2IEBACitGcm9tIGFkMjA4YjhiN2U0NWZiMmI3YzU3MmI4NmM2MWMyNjQxMjYwOWU4MmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+CitEYXRlOiBGcmksIDEwIE5vdiAyMDE3IDE2OjUzOjU0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBwMm06IEFsd2F5cyBjaGVjayB0byBzZWUgaWYgcmVtb3ZpbmcgYSBwMm0gZW50cnkgYWN0dWFsbHkKKyB3b3JrZWQKKworVGhlIFBvRCB6ZXJvLWNoZWNrIGZ1bmN0aW9ucyBzcGVjdWxhdGl2ZWx5IHJlbW92ZSBtZW1vcnkgZnJvbSB0aGUgcDJtLAordGhlbiBjaGVjayB0byBzZWUgaWYgaXQncyBjb21wbGV0ZWx5IHplcm9lZCwgYmVmb3JlIHB1dHRpbmcgaXQgaW4gdGhlCitjYWNoZS4KKworVW5mb3J0dW5hdGVseSwgdGhlIHAybV9zZXRfZW50cnkoKSBjYWxscyBtYXkgZmFpbCBpZiB0aGUgdW5kZXJseWluZworcGFnZXRhYmxlIHN0cnVjdHVyZSBuZWVkcyB0byBjaGFuZ2UgYW5kIHRoZSBkb21haW4gaGFzIGV4aGF1c3RlZCBpdHMKK3AybSBtZW1vcnkgcG9vbDogZm9yIGluc3RhbmNlLCBpZiB3ZSdyZSByZW1vdmluZyBhIDJNaUIgcmVnaW9uIG91dCBvZgorYSAxR2lCIGVudHJ5IChpbiB0aGUgcDJtX3BvZF96ZXJvX2NoZWNrX3N1cGVycGFnZSgpIGNhc2UpLCBvciBhIDRrCityZWdpb24gb3V0IG9mIGEgMk1pQiBvciBsYXJnZXIgZW50cnkgKGluIHRoZSBwMm1fcG9kX3plcm9fY2hlY2soKQorY2FzZSk7IGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBjaGVja2VkLgorCitUaGUgdW5kZXJseWluZyBtZm4gd2lsbCB0aGVuIGJlIGFkZGVkIGludG8gdGhlIFBvRCBjYWNoZSwgYW5kIGF0IHNvbWUKK3BvaW50IG1hcHBlZCBpbnRvIGFub3RoZXIgbG9jYXRpb24gaW4gdGhlIHAybS4gIElmIHRoZSBndWVzdAorYWZ0ZXJ3YXJkcyBiYWxsb25zIG91dCB0aGlzIG1lbW9yeSwgaXQgd2lsbCBiZSBmcmVlZCB0byB0aGUgaHlwZXJ2aXNvcgorYW5kIHBvdGVudGlhbGx5IHJldXNlZCBieSBhbm90aGVyIGRvbWFpbiwgaW4gc3BpdGUgb2YgdGhlIGZhY3QgdGhhdAordGhlIG9yaWdpbmFsIGRvbWFpbiBzdGlsbCBoYXMgd3JpdGFibGUgbWFwcGluZ3MgdG8gaXQuCisKK1RoZXJlIGFyZSBzZXZlcmFsIHBsYWNlcyB3aGVyZSBwMm1fc2V0X2VudHJ5KCkgc2hvdWxkbid0IGJlIGFibGUgdG8KK2ZhaWwsIGFzIGl0IGlzIGd1YXJhbnRlZWQgdG8gd3JpdGUgYW4gZW50cnkgb2YgdGhlIHNhbWUgb3JkZXIgdGhhdAorc3VjY2VlZGVkIGJlZm9yZS4gIEFkZCBhIGJhY2tzdG9wIG9mIGNyYXNoaW5nIHRoZSBkb21haW4ganVzdCBpbiBjYXNlLAorYW5kIGFuIEFTU0VSVF9VTlJFQUNIQUJMRSgpIHRvIGZsYWcgdXAgdGhlIGJyb2tlbiBhc3N1bXB0aW9uIG9uIGRlYnVnCitidWlsZHMuCisKK1doaWxlIHdlJ3JlIGhlcmUsIHVzZSBQQUdFX09SREVSXzJNIHJhdGhlciB0aGFuIGEgbWFnaWMgY29uc3RhbnQuCisKK1RoaXMgaXMgcGFydCBvZiBYU0EtMjQ3LgorCitSZXBvcnRlZC1ieTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcC5jb20+CitTaWduZWQtb2ZmLWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+CitSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgorLS0tCit2NDoKKy0gUmVtb3ZlZCBzb21lIHRyYWluaW5nIHdoaXRlc3BhY2UKK3YzOgorLSBSZWZvcm1hdCByZXNldCBjbGF1c2UgdG8gYmUgbW9yZSBjb21wYWN0CistIE1ha2Ugc3VyZSB0byBzZXQgbWFwW2ldID0gTlVMTCB3aGVuIHVubWFwcGluZyBpbiBjYXNlIHdlIG5lZWQgdG8gYmFpbAordjI6CistIENyYXNoIGEgZG9tYWluIGlmIGEgcDJtX3NldF9lbnRyeSB3ZSB0aGluayBjYW5ub3QgZmFpbCBmYWlscyBhbnl3YXkuCistLS0KKyB4ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jIHwgNzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYworaW5kZXggNzMwYTQ4ZjkyOC4uZjJlZDc1MTg5MiAxMDA2NDQKKy0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKKysrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKK0BAIC03NTIsOCArNzUyLDEwIEBAIHAybV9wb2RfemVyb19jaGVja19zdXBlcnBhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4pCisgICAgIH0KKyAKKyAgICAgLyogVHJ5IHRvIHJlbW92ZSB0aGUgcGFnZSwgcmVzdG9yaW5nIG9sZCBtYXBwaW5nIGlmIGl0IGZhaWxzLiAqLworLSAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBJTlZBTElEX01GTiwgUEFHRV9PUkRFUl8yTSwKKy0gICAgICAgICAgICAgICAgICBwMm1fcG9wdWxhdGVfb25fZGVtYW5kLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKKysgICAgaWYgKCBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBJTlZBTElEX01GTiwgUEFHRV9PUkRFUl8yTSwKKysgICAgICAgICAgICAgICAgICAgICAgIHAybV9wb3B1bGF0ZV9vbl9kZW1hbmQsIHAybS0+ZGVmYXVsdF9hY2Nlc3MpICkKKysgICAgICAgIGdvdG8gb3V0OworKworICAgICBwMm1fdGxiX2ZsdXNoX3N5bmMocDJtKTsKKyAKKyAgICAgLyogTWFrZSBub25lIG9mIHRoZSBNRk5zIGFyZSB1c2VkIGVsc2V3aGVyZS4uLiBmb3IgZXhhbXBsZSwgbWFwcGVkCitAQCAtODEwLDkgKzgxMiwxOCBAQCBwMm1fcG9kX3plcm9fY2hlY2tfc3VwZXJwYWdlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuKQorICAgICByZXQgPSBTVVBFUlBBR0VfUEFHRVM7CisgCisgb3V0X3Jlc2V0OgorLSAgICBpZiAoIHJlc2V0ICkKKy0gICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm4sIG1mbjAsIDksIHR5cGUwLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKKy0gICAgCisrICAgIC8qCisrICAgICAqIFRoaXMgcDJtX3NldF9lbnRyeSgpIGNhbGwgc2hvdWxkbid0IGJlIGFibGUgdG8gZmFpbCwgc2luY2UgdGhlIHNhbWUgb3JkZXIKKysgICAgICogb24gdGhlIHNhbWUgZ2ZuIHN1Y2NlZWRlZCBhYm92ZS4gIElmIHRoYXQgdHVybnMgb3V0IHRvIGJlIGZhbHNlLCBjcmFzaGluZworKyAgICAgKiB0aGUgZG9tYWluIHNob3VsZCBiZSB0aGUgc2FmZXN0IHdheSBvZiBtYWtpbmcgc3VyZSB3ZSBkb24ndCBsZWFrIG1lbW9yeS4KKysgICAgICovCisrICAgIGlmICggcmVzZXQgJiYgcDJtX3NldF9lbnRyeShwMm0sIGdmbiwgbWZuMCwgUEFHRV9PUkRFUl8yTSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUwLCBwMm0tPmRlZmF1bHRfYWNjZXNzKSApCisrICAgIHsKKysgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOworKyAgICAgICAgZG9tYWluX2NyYXNoKGQpOworKyAgICB9CisrCisgb3V0OgorICAgICBnZm5fdW5sb2NrKHAybSwgZ2ZuLCBTVVBFUlBBR0VfT1JERVIpOworICAgICByZXR1cm4gcmV0OworQEAgLTg2OSwxOSArODgwLDMwIEBAIHAybV9wb2RfemVyb19jaGVjayhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nICpnZm5zLCBpbnQgY291bnQpCisgICAgICAgICB9CisgCisgICAgICAgICAvKiBUcnkgdG8gcmVtb3ZlIHRoZSBwYWdlLCByZXN0b3Jpbmcgb2xkIG1hcHBpbmcgaWYgaXQgZmFpbHMuICovCistICAgICAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ2Zuc1tpXSwgSU5WQUxJRF9NRk4sIFBBR0VfT1JERVJfNEssCistICAgICAgICAgICAgICAgICAgICAgIHAybV9wb3B1bGF0ZV9vbl9kZW1hbmQsIHAybS0+ZGVmYXVsdF9hY2Nlc3MpOworKyAgICAgICAgaWYgKCBwMm1fc2V0X2VudHJ5KHAybSwgZ2Zuc1tpXSwgSU5WQUxJRF9NRk4sIFBBR0VfT1JERVJfNEssCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3BvcHVsYXRlX29uX2RlbWFuZCwgcDJtLT5kZWZhdWx0X2FjY2VzcykgKQorKyAgICAgICAgICAgIGdvdG8gc2tpcDsKKyAKKyAgICAgICAgIC8qIFNlZSBpZiB0aGUgcGFnZSB3YXMgc3VjY2Vzc2Z1bGx5IHVubWFwcGVkLiAgKEFsbG93IG9uZSByZWZjb3VudAorICAgICAgICAgICogZm9yIGJlaW5nIGFsbG9jYXRlZCB0byBhIGRvbWFpbi4pICovCisgICAgICAgICBpZiAoIChtZm5fdG9fcGFnZShtZm5zW2ldKS0+Y291bnRfaW5mbyAmIFBHQ19jb3VudF9tYXNrKSA+IDEgKQorICAgICAgICAgeworKyAgICAgICAgICAgIC8qCisrICAgICAgICAgICAgICogSWYgdGhlIHByZXZpb3VzIHAybV9zZXRfZW50cnkgY2FsbCBzdWNjZWVkZWQsIHRoaXMgb25lIHNob3VsZG4ndAorKyAgICAgICAgICAgICAqIGJlIGFibGUgdG8gZmFpbC4gIElmIGl0IGRvZXMsIGNyYXNoaW5nIHRoZSBkb21haW4gc2hvdWxkIGJlIHNhZmUuCisrICAgICAgICAgICAgICovCisrICAgICAgICAgICAgaWYgKCBwMm1fc2V0X2VudHJ5KHAybSwgZ2Zuc1tpXSwgbWZuc1tpXSwgUEFHRV9PUkRFUl80SywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbaV0sIHAybS0+ZGVmYXVsdF9hY2Nlc3MpICkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOworKyAgICAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CisrICAgICAgICAgICAgICAgIGdvdG8gb3V0X3VubWFwOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgIHNraXA6CisgICAgICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobWFwW2ldKTsKKyAgICAgICAgICAgICBtYXBbaV0gPSBOVUxMOworIAorLSAgICAgICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm5zW2ldLCBtZm5zW2ldLCBQQUdFX09SREVSXzRLLAorLSAgICAgICAgICAgICAgICB0eXBlc1tpXSwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7CistCisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CisgICAgIH0KK0BAIC05MDAsMTIgKzkyMiwyNSBAQCBwMm1fcG9kX3plcm9fY2hlY2soc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyAqZ2ZucywgaW50IGNvdW50KQorIAorICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobWFwW2ldKTsKKyAKKy0gICAgICAgIC8qIFNlZSBjb21tZW50IGluIHAybV9wb2RfemVyb19jaGVja19zdXBlcnBhZ2UoKSByZSBnbnR0YWIKKy0gICAgICAgICAqIGNoZWNrIHRpbWluZy4gICovCistICAgICAgICBpZiAoIGogPCBQQUdFX1NJWkUvc2l6ZW9mKCptYXBbaV0pICkKKysgICAgICAgIG1hcFtpXSA9IE5VTEw7CisrCisrICAgICAgICAvKgorKyAgICAgICAgICogU2VlIGNvbW1lbnQgaW4gcDJtX3BvZF96ZXJvX2NoZWNrX3N1cGVycGFnZSgpIHJlIGdudHRhYgorKyAgICAgICAgICogY2hlY2sgdGltaW5nLgorKyAgICAgICAgICovCisrICAgICAgICBpZiAoIGogPCAoUEFHRV9TSVpFIC8gc2l6ZW9mKCptYXBbaV0pKSApCisgICAgICAgICB7CistICAgICAgICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdmbnNbaV0sIG1mbnNbaV0sIFBBR0VfT1JERVJfNEssCistICAgICAgICAgICAgICAgIHR5cGVzW2ldLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKKysgICAgICAgICAgICAvKgorKyAgICAgICAgICAgICAqIElmIHRoZSBwcmV2aW91cyBwMm1fc2V0X2VudHJ5IGNhbGwgc3VjY2VlZGVkLCB0aGlzIG9uZSBzaG91bGRuJ3QKKysgICAgICAgICAgICAgKiBiZSBhYmxlIHRvIGZhaWwuICBJZiBpdCBkb2VzLCBjcmFzaGluZyB0aGUgZG9tYWluIHNob3VsZCBiZSBzYWZlLgorKyAgICAgICAgICAgICAqLworKyAgICAgICAgICAgIGlmICggcDJtX3NldF9lbnRyeShwMm0sIGdmbnNbaV0sIG1mbnNbaV0sIFBBR0VfT1JERVJfNEssCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW2ldLCBwMm0tPmRlZmF1bHRfYWNjZXNzKSApCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKKysgICAgICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOworKyAgICAgICAgICAgICAgICBnb3RvIG91dF91bm1hcDsKKysgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBlbHNlCisgICAgICAgICB7CitAQCAtOTI5LDcgKzk2NCwxNyBAQCBwMm1fcG9kX3plcm9fY2hlY2soc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyAqZ2ZucywgaW50IGNvdW50KQorICAgICAgICAgICAgIHAybS0+cG9kLmVudHJ5X2NvdW50Kys7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisrICAgIHJldHVybjsKKysKKytvdXRfdW5tYXA6CisrICAgIC8qCisrICAgICAqIFNvbWV0aGluZyB3ZW50IHdyb25nLCBwcm9iYWJseSBjcmFzaGluZyB0aGUgZG9tYWluLiAgVW5tYXAKKysgICAgICogZXZlcnl0aGluZyBhbmQgcmV0dXJuLgorKyAgICAgKi8KKysgICAgZm9yICggaSA9IDA7IGkgPCBjb3VudDsgaSsrICkKKysgICAgICAgIGlmICggbWFwW2ldICkKKysgICAgICAgICAgICB1bm1hcF9kb21haW5fcGFnZShtYXBbaV0pOworIH0KKyAKKyAjZGVmaW5lIFBPRF9TV0VFUF9MSU1JVCAxMDI0CistLSAKKzIuMTUuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvMDAwMi1wMm0tQ2hlY2stcmV0dXJuLXZhbHVlLW9mLXAybV9zZXRfZW50cnktd2hlbi1kZWNyZWFzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzLzAwMDItcDJtLUNoZWNrLXJldHVybi12YWx1ZS1vZi1wMm1fc2V0X2VudHJ5LXdoZW4tZGVjcmVhcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzg1MGJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzLzAwMDItcDJtLUNoZWNrLXJldHVybi12YWx1ZS1vZi1wMm1fc2V0X2VudHJ5LXdoZW4tZGVjcmVhcy5wYXRjaApAQCAtMCwwICsxLDEwOSBAQAorRnJvbSBkNGJjNzgzMzcwNzM1MWE1MzQxYTZiZGYwNGM3NTJhMDI4ZDk1NjBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgorRGF0ZTogRnJpLCAxMCBOb3YgMjAxNyAxNjo1Mzo1NSArMDAwMAorU3ViamVjdDogW1BBVENIIDIvMl0gcDJtOiBDaGVjayByZXR1cm4gdmFsdWUgb2YgcDJtX3NldF9lbnRyeSgpIHdoZW4KKyBkZWNyZWFzaW5nIHJlc2VydmF0aW9uCisKK0lmIHRoZSBlbnRpcmUgcmFuZ2Ugc3BlY2lmaWVkIHRvIHAybV9wb2RfZGVjcmVhc2VfcmVzZXJ2YXRpb24oKSBpcyBtYXJrZWQKK3BvcHVsYXRlLW9uLWRlbWFuZCwgdGhlbiBpdCB3aWxsIG1ha2UgYSBzaW5nbGUgcDJtX3NldF9lbnRyeSgpIGNhbGwsCityZWR1Y2luZyBpdHMgUG9EIGVudHJ5IGNvdW50LgorCitVbmZvcnR1bmF0ZWx5LCBpbiB0aGUgcmlnaHQgY2lyY3Vtc3RhbmNlcywgdGhpcyBwMm1fc2V0X2VudHJ5KCkgY2FsbAorbWF5IGZhaWwuICBJdCB0aGF0IGNhc2UsIHJlcGVhdGVkIGNhbGxzIHRvIGRlY3JlYXNlX3Jlc2VydmF0aW9uKCkgbWF5CitjYXVzZSBwMm0tPnBvZC5lbnRyeV9jb3VudCB0byBmYWxsIGJlbG93IHplcm8sIHBvdGVudGlhbGx5IHRyaXBwaW5nCitvdmVyIEJVR19PTigpcyB0byB0aGUgY29udHJhcnkuCisKK0luc3RlYWQsIGNoZWNrIHRvIHNlZSBpZiB0aGUgZW50cnkgc3VjY2VlZGVkLCBhbmQgcmV0dXJuIGZhbHNlIGlmIG5vdC4KK1RoZSBjYWxsZXIgd2lsbCB0aGVuIGNhbGwgZ3Vlc3RfcmVtb3ZlX3BhZ2UoKSBvbiB0aGUgZ2Zucywgd2hpY2ggd2lsbAorcmV0dXJuIC1FSU5WQUwgdXBvbiBmaW5kaW5nIG5vIHZhbGlkIG1lbW9yeSB0aGVyZSB0byByZXR1cm4uCisKK1VuZm9ydHVuYXRlbHkgaWYgdGhlIG9yZGVyID4gMCwgdGhlIGVudHJ5IG1heSBoYXZlIHBhcnRpYWxseSBjaGFuZ2VkLgorQSBkb21haW5fY3Jhc2goKSBpcyBwcm9iYWJseSB0aGUgc2FmZXN0IHRoaW5nIGluIHRoYXQgY2FzZS4KKworT3RoZXIgcDJtX3NldF9lbnRyeSgpIGNhbGxzIGluIHRoZSBzYW1lIGZ1bmN0aW9uIHNob3VsZCBiZSBmaW5lLAorYmVjYXVzZSB0aGV5IGFyZSB3cml0aW5nIHRoZSBlbnRyeSBhdCBpdHMgY3VycmVudCBvcmRlci4gIE5vbmV0aGVsZXNzLAorY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBhbmQgY3Jhc2ggaWYgb3VyIGFzc3VtcHRpb24gdHVybnMgb3R1IHRvIGJlCit3cm9uZy4KKworVGhpcyBpcyBwYXJ0IG9mIFhTQS0yNDcuCisKK1JlcG9ydGVkLWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAY2l0cml4LmNvbT4KK1Jldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CistLS0KK3YyOiBDcmFzaCB0aGUgZG9tYWluIGlmIHdlJ3JlIG5vdCBzdXJlIGl0J3Mgc2FmZSAob3IgaWYgd2UgdGhpbmsgaXQKK2Nhbid0IGhhcHBlbikKKy0tLQorIHhlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMgfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCitpbmRleCBmMmVkNzUxODkyLi40NzNkNmE2ZGJmIDEwMDY0NAorLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYworKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYworQEAgLTU1NSwxMSArNTU1LDIzIEBAIHAybV9wb2RfZGVjcmVhc2VfcmVzZXJ2YXRpb24oc3RydWN0IGRvbWFpbiAqZCwKKyAKKyAgICAgaWYgKCAhbm9ucG9kICkKKyAgICAgeworLSAgICAgICAgLyogQWxsIFBvRDogTWFyayB0aGUgd2hvbGUgcmVnaW9uIGludmFsaWQgYW5kIHRlbGwgY2FsbGVyCistICAgICAgICAgKiB3ZSdyZSBkb25lLiAqLworLSAgICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdwZm4sIElOVkFMSURfTUZOLCBvcmRlciwgcDJtX2ludmFsaWQsCistICAgICAgICAgICAgICAgICAgICAgIHAybS0+ZGVmYXVsdF9hY2Nlc3MpOworLSAgICAgICAgcDJtLT5wb2QuZW50cnlfY291bnQtPSgxPDxvcmRlcik7CisrICAgICAgICAvKgorKyAgICAgICAgICogQWxsIFBvRDogTWFyayB0aGUgd2hvbGUgcmVnaW9uIGludmFsaWQgYW5kIHRlbGwgY2FsbGVyCisrICAgICAgICAgKiB3ZSdyZSBkb25lLgorKyAgICAgICAgICovCisrICAgICAgICBpZiAoIHAybV9zZXRfZW50cnkocDJtLCBncGZuLCBJTlZBTElEX01GTiwgb3JkZXIsIHAybV9pbnZhbGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybS0+ZGVmYXVsdF9hY2Nlc3MpICkKKysgICAgICAgIHsKKysgICAgICAgICAgICAvKgorKyAgICAgICAgICAgICAqIElmIHRoaXMgZmFpbHMsIHdlIGNhbid0IHRlbGwgaG93IG11Y2ggb2YgdGhlIHJhbmdlIHdhcyBjaGFuZ2VkLgorKyAgICAgICAgICAgICAqIEJlc3QgdG8gY3Jhc2ggdGhlIGRvbWFpbiB1bmxlc3Mgd2UncmUgc3VyZSBhIHBhcnRpYWwgY2hhbmdlIGlzCisrICAgICAgICAgICAgICogaW1wb3NzaWJsZS4KKysgICAgICAgICAgICAgKi8KKysgICAgICAgICAgICBpZiAoIG9yZGVyICE9IDAgKQorKyAgICAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CisrICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOworKyAgICAgICAgfQorKyAgICAgICAgcDJtLT5wb2QuZW50cnlfY291bnQgLT0gMVVMIDw8IG9yZGVyOworICAgICAgICAgQlVHX09OKHAybS0+cG9kLmVudHJ5X2NvdW50IDwgMCk7CisgICAgICAgICByZXQgPSAxOworICAgICAgICAgZ290byBvdXRfZW50cnlfY2hlY2s7CitAQCAtNjAwLDggKzYxMiwxNCBAQCBwMm1fcG9kX2RlY3JlYXNlX3Jlc2VydmF0aW9uKHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICBuID0gMVVMIDw8IGN1cl9vcmRlcjsKKyAgICAgICAgIGlmICggdCA9PSBwMm1fcG9wdWxhdGVfb25fZGVtYW5kICkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ3BmbiArIGksIElOVkFMSURfTUZOLCBjdXJfb3JkZXIsCistICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1faW52YWxpZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7CisrICAgICAgICAgICAgLyogVGhpcyBzaG91bGRuJ3QgYmUgYWJsZSB0byBmYWlsICovCisrICAgICAgICAgICAgaWYgKCBwMm1fc2V0X2VudHJ5KHAybSwgZ3BmbiArIGksIElOVkFMSURfTUZOLCBjdXJfb3JkZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV9pbnZhbGlkLCBwMm0tPmRlZmF1bHRfYWNjZXNzKSApCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKKysgICAgICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOworKyAgICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7CisrICAgICAgICAgICAgfQorICAgICAgICAgICAgIHAybS0+cG9kLmVudHJ5X2NvdW50IC09IG47CisgICAgICAgICAgICAgQlVHX09OKHAybS0+cG9kLmVudHJ5X2NvdW50IDwgMCk7CisgICAgICAgICAgICAgcG9kIC09IG47CitAQCAtNjIyLDggKzY0MCwxNCBAQCBwMm1fcG9kX2RlY3JlYXNlX3Jlc2VydmF0aW9uKHN0cnVjdCBkb21haW4gKmQsCisgCisgICAgICAgICAgICAgcGFnZSA9IG1mbl90b19wYWdlKG1mbik7CisgCistICAgICAgICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdwZm4gKyBpLCBJTlZBTElEX01GTiwgY3VyX29yZGVyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX2ludmFsaWQsIHAybS0+ZGVmYXVsdF9hY2Nlc3MpOworKyAgICAgICAgICAgIC8qIFRoaXMgc2hvdWxkbid0IGJlIGFibGUgdG8gZmFpbCAqLworKyAgICAgICAgICAgIGlmICggcDJtX3NldF9lbnRyeShwMm0sIGdwZm4gKyBpLCBJTlZBTElEX01GTiwgY3VyX29yZGVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1faW52YWxpZCwgcDJtLT5kZWZhdWx0X2FjY2VzcykgKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisrICAgICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKKysgICAgICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOworKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBwMm1fdGxiX2ZsdXNoX3N5bmMocDJtKTsKKyAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IG47ICsraiApCisgICAgICAgICAgICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG1mbiksIElOVkFMSURfTTJQX0VOVFJZKTsKKy0tIAorMi4xNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy9maXgtbGlieGMteGNfZG9tX2FybS1taXNzaW5nLWluaXRpYWxpemF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL2ZpeC1saWJ4Yy14Y19kb21fYXJtLW1pc3NpbmctaW5pdGlhbGl6YXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1MDE2YTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL2ZpeC1saWJ4Yy14Y19kb21fYXJtLW1pc3NpbmctaW5pdGlhbGl6YXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1jb21taXQgODhiZmJmOTBlMzVmMTIxM2Y5OTY3YTk3ZGVlMGIyMDM5Zjk5OThhNAotQXV0aG9yOiBCZXJuZCBLdWhscyA8YmVybmQua3VobHNAdC1vbmxpbmUuZGU+Ci1EYXRlOiAgIFNhdCBBdWcgMTkgMTY6MjE6NDIgMjAxNyArMDIwMAotCi0gICAgdG9vbHMvbGlieGMveGNfZG9tX2FybTogYWRkIG1pc3NpbmcgdmFyaWFibGUgaW5pdGlhbGl6YXRpb24KLSAgICAKLSAgICBUaGUgdmFyaWFibGUgZG9tY3RsLnUuYWRkcmVzc19zaXplLnNpemUgbWF5IHJlbWFpbiB1bmluaXRpYWxpemVkIGlmCi0gICAgZ3Vlc3RfdHlwZSBpcyBub3Qgb25lIG9mIHhlbi0zLjAtYWFyY2g2NCBvciB4ZW4tMy4wLWFybXY3bC4gQW5kIHRoZQotICAgIGNvZGUgcHJlY2lzZWx5IGNoZWNrcyBpZiB0aGlzIHZhcmlhYmxlIGlzIHN0aWxsIDAgdG8gZGVjaWRlIGlmIHRoZQotICAgIGd1ZXN0IHR5cGUgaXMgc3VwcG9ydGVkIG9yIG5vdC4KLSAgICAKLSAgICBUaGlzIGZpeGVzIHRoZSBmb2xsb3dpbmcgYnVpbGQgZmFpbHVyZSB3aXRoIGdjYyA3Lng6Ci0gICAgCi0gICAgeGNfZG9tX2FybS5jOjIyOTozMTogZXJyb3I6ICdkb21jdGwudS5hZGRyZXNzX3NpemUuc2l6ZScgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCi0gICAgICAgICBpZiAoIGRvbWN0bC51LmFkZHJlc3Nfc2l6ZS5zaXplID09IDAgKQotICAgIAotICAgIFBhdGNoIG9yaWdpbmFsbHkgdGFrZW4gZnJvbQotICAgIGh0dHBzOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20veGVuLWRldmVsQGxpc3RzLnhlbi5vcmcvbXNnMTA5MzEzLmh0bWwuCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogQmVybmQgS3VobHMgPGJlcm5kLmt1aGxzQHQtb25saW5lLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgotICAgIEFja2VkLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZG9tX2FybS5jIGIvdG9vbHMvbGlieGMveGNfZG9tX2FybS5jCi1pbmRleCBlN2Q0YmQwLi5lNjY5ZmIwIDEwMDY0NAotLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tX2FybS5jCi0rKysgYi90b29scy9saWJ4Yy94Y19kb21fYXJtLmMKLUBAIC0yMjMsNiArMjIzLDggQEAgc3RhdGljIGludCBzZXRfbW9kZSh4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21pZCwgY2hhciAqZ3Vlc3RfdHlwZSkKLSAKLSAgICAgZG9tY3RsLmRvbWFpbiA9IGRvbWlkOwotICAgICBkb21jdGwuY21kICAgID0gWEVOX0RPTUNUTF9zZXRfYWRkcmVzc19zaXplOwotKyAgICBkb21jdGwudS5hZGRyZXNzX3NpemUuc2l6ZSA9IDA7Ci0rCi0gICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0eXBlcyk7IGkrKyApCi0gICAgICAgICBpZiAoICFzdHJjbXAodHlwZXNbaV0uZ3Vlc3QsIGd1ZXN0X3R5cGUpICkKLSAgICAgICAgICAgICBkb21jdGwudS5hZGRyZXNzX3NpemUuc2l6ZSA9IHR5cGVzW2ldLnNpemU7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvbHdpcC5kaGNwX2NyZWF0ZV9yZXF1ZXN0LWh3YWRkcl9sZW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvbHdpcC5kaGNwX2NyZWF0ZV9yZXF1ZXN0LWh3YWRkcl9sZW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJiZjIxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy9sd2lwLmRoY3BfY3JlYXRlX3JlcXVlc3QtaHdhZGRyX2xlbi5wYXRjaApAQCAtMCwwICsxLDEzIEBACitJbmRleDogc3JjL2NvcmUvZGhjcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYS9zcmMvY29yZS9kaGNwLmMKKysrKyBiL3NyYy9jb3JlL2RoY3AuYworQEAgLTEzNTYsNyArMTM1OCw3IEBAIGRoY3BfY3JlYXRlX3JlcXVlc3Qoc3RydWN0IG5ldGlmICpuZXRpZikKKyAgIGRoY3AtPm1zZ19vdXQtPmdpYWRkci5hZGRyID0gMDsKKyAgIGZvciAoaSA9IDA7IGkgPCBESENQX0NIQUREUl9MRU47IGkrKykgeworICAgICAvKiBjb3B5IG5ldGlmIGhhcmR3YXJlIGFkZHJlc3MsIHBhZCB3aXRoIHplcm9lcyAqLworLSAgICBkaGNwLT5tc2dfb3V0LT5jaGFkZHJbaV0gPSAoaSA8IG5ldGlmLT5od2FkZHJfbGVuKSA/IG5ldGlmLT5od2FkZHJbaV0gOiAwLyogcGFkIGJ5dGUqLzsKKysgICAgZGhjcC0+bXNnX291dC0+Y2hhZGRyW2ldID0gKGkgPCAobmV0aWYtPmh3YWRkcl9sZW4gPiBORVRJRl9NQVhfSFdBRERSX0xFTiA/IE5FVElGX01BWF9IV0FERFJfTEVOIDogbmV0aWYtPmh3YWRkcl9sZW4pKSA/IG5ldGlmLT5od2FkZHJbaV0gOiAwLyogcGFkIGJ5dGUqLzsKKyAgIH0KKyAgIGZvciAoaSA9IDA7IGkgPCBESENQX1NOQU1FX0xFTjsgaSsrKSB7CisgICAgIGRoY3AtPm1zZ19vdXQtPnNuYW1lW2ldID0gMDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy9sd2lwLnBhdGNoLWN2cyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy9sd2lwLnBhdGNoLWN2cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjcxODc3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL2x3aXAucGF0Y2gtY3ZzCkBAIC0wLDAgKzEsMjM5OCBAQAorPyAuQ2hhbmdlTG9nLnN3cAorPyBDaGFuZ2VMb2cKK0luZGV4OiBDSEFOR0VMT0cKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1JDUyBmaWxlOiAvc291cmNlcy9sd2lwL2x3aXAvQ0hBTkdFTE9HLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4zMDAKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4zMTgKK2RpZmYgLXUgLXAgLXIxLjMwMCAtcjEuMzE4CistLS0gYS9DSEFOR0VMT0cJMjMgTWFyIDIwMDggMTM6NDk6MzkgLTAwMDAJMS4zMDAKKysrKyBiL0NIQU5HRUxPRwkxNCBKdWwgMjAwOCAyMDoxMjozNiAtMDAwMAkxLjMxOAorQEAgLTE5LDkgKzE5LDc3IEBAIEhJU1RPUlkKKworICAgKysgTmV3IGZlYXR1cmVzOgorCisrICAyMDA4LTA2LTMwIFNpbW9uIEdvbGRzY2htaWR0CisrICAqIG1lbS5jLCBvcHQuaCwgc3RhdHMuaDogZml4ZWQgYnVnICMyMTQzMzogQ2FsbGluZyBtZW1fZnJlZS9wYnVmX2ZyZWUgZnJvbQorKyAgICBpbnRlcnJ1cHQgY29udGV4dCBpc24ndCBzYWZlOiBMV0lQX0FMTE9XX01FTV9GUkVFX0ZST01fT1RIRVJfQ09OVEVYVCBhbGxvd3MKKysgICAgbWVtX2ZyZWUgdG8gcnVuIGJldHdlZW4gbWVtX21hbGxvYyBpdGVyYXRpb25zLiBBZGRlZCBpbGxlZ2FsIGNvdW50ZXIgZm9yCisrICAgIG1lbSBzdGF0cy4KKysKKysgIDIwMDgtMDYtMjcgU2ltb24gR29sZHNjaG1pZHQKKysgICogc3RhdHMuaC8uYywgc29tZSBvdGhlciBmaWxlczogcGF0Y2ggIzY0ODM6IHN0YXRzIG1vZHVsZSBpbXByb3ZlbWVudDoKKysgICAgQWRkZWQgZGVmaW5lcyB0byBkaXNwbGF5IGVhY2ggbW9kdWxlJ3Mgc3RhdGlzdGljIGluZGl2aWR1YWxseSwgYWRkZWQgc3RhdHMKKysgICAgZGVmaW5lcyBmb3IgTUVNLCBNRU1QIGFuZCBTWVMgbW9kdWxlcywgcmVtb3ZlZCAodW51c2VkKSByZXhtaXQgY291bnRlci4KKysKKysgIDIwMDgtMDYtMTcgU2ltb24gR29sZHNjaG1pZHQKKysgICogZXJyLmg6IHBhdGNoICM2NDU5OiBNYWRlIGVycl90IG92ZXJyaWRhYmxlIHRvIHVzZSBhIG1vcmUgZWZmaWNpZW50IHR5cGUKKysgICAgKGRlZmluZSBMV0lQX0VSUl9UIGluIGNjLmgpCisrCisrICAyMDA4LTA2LTE3IFNpbW9uIEdvbGRzY2htaWR0CisrICAqIHNsaXBpZi5jOiBwYXRjaCAjNjQ4MDogQWRkZWQgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3Igc2xpcGlmIGZvciBzeW1tZXRyeQorKyAgICB0byBsb29waWYKKysKKysgIDIwMDgtMDYtMTcgU2ltb24gR29sZHNjaG1pZHQgKHBhdGNoIGJ5IEx1Y2EgQ2VyZXNvbGkpCisrICAqIG5ldGlmLmMsIGxvb3BpZi5jLCBpcC5jLCBuZXRpZi5oLCBsb29waWYuaCwgb3B0Lmg6IENoZWNrZWQgaW4gc2xpZ2h0bHkKKysgICAgbW9kaWZpZWQgdmVyc2lvbiBvZiBwYXRjaCAjIDYzNzA6IE1vdmVkIGxvb3BpZiBjb2RlIHRvIG5ldGlmLmMgc28gdGhhdAorKyAgICBsb29wYmFjayB0cmFmZmljIGlzIHN1cHBvcnRlZCBvbiBhbGwgbmV0aWZzIChhbGwgbG9jYWwgSVBzKS4KKysgICAgQWRkZWQgb3B0aW9uIHRvIGxpbWl0IGxvb3BiYWNrIHBhY2tldHMgZm9yIGVhY2ggbmV0aWZzLgorKworCisgICArKyBCdWdmaXhlczoKKworKyAgMjAwOC0wOC0xNCBTaW1vbiBHb2xkc2NobWlkdAorKyAgKiBhcGlfbXNnLmM6IGZpeGVkIGJ1ZyAjMjM4NDc6IGRvX2Nsb3NlX2ludGVybmFsIHJlZmVyZW5jZXMgZnJlZWQgbWVtb3J5ICh3aGVuCisrICAgIHRjcF9jbG9zZSByZXR1cm5zICE9IEVSUl9PSykKKysKKysgIDIwMDgtMDctMDggRnLDqWTDqXJpYyBCZXJub24KKysgICogc3RhdHMuaDogRml4IHNvbWUgYnVpbGQgYnVncyBpbnRyb2R1Y2VkIHdpdGggcGF0Y2ggIzY0ODMgKG1pc3Npbmcgc29tZSBwYXJhbWV0ZXJzCisrICAgIGluIG1hY3JvcywgbWFpbmx5IGlmIE1FTV9TVEFUUz0wIGFuZCBNRU1QX1NUQVRTPTApLgorKworKyAgMjAwOC0wNi0yNCBKb25hdGhhbiBMYXJtb3VyCisrICAqIHRjcF9pbi5jOiBGaXggZm9yIGJ1ZyAjMjM2OTMgYXMgc3VnZ2VzdGVkIGJ5IEFydCBSLiBFbnN1cmUgY3NlZyBpcyB1bnVzZWQKKysgICAgaWYgdGNwX3NlZ19jb3B5IGZhaWxzLgorKworKyAgMjAwOC0wNi0xNyBTaW1vbiBHb2xkc2NobWlkdAorKyAgKiBpbmV0X2Noa3N1bS5jOiBDaGVja2VkIGluIHNvbWUgaWRlYXMgb2YgcGF0Y2ggIzY0NjAgKGxvb3Agb3B0aW1pemF0aW9ucykKKysgICAgYW5kIGNyZWF0ZWQgZGVmaW5lcyBmb3Igc3dhcHBpbmcgYnl0ZXMgYW5kIGZvbGRpbmcgdTMyIHRvIHUxNi4KKysKKysgIDIwMDgtMDUtMzAgS2llcmFuIE1hbnNsZXkKKysgICogdGNwX2luLmMgUmVtb3ZlIHJlZHVuZGFudCAiaWYiIHN0YXRlbWVudCwgYW5kIHVzZSByZWFsIHJjdl93bmQKKysgICAgcmF0aGVyIHRoYW4gcmN2X2Fubl93bmQgd2hlbiBkZWNpZGluZyBpZiBwYWNrZXRzIGFyZSBpbi13aW5kb3cuCisrICAgIENvbnRyaWJ1dGVkIGJ5IDxhcmFzbXVzc2VuQGNvbnN1bHRhbnQuZGF0YXN5cy5zd3JpLmVkdT4KKysKKysgIDIwMDgtMDUtMzAgS2llcmFuIE1hbnNsZXkKKysgICogbWVtLmg6IEZpeCBCVUcjMjMyNTQuICBDaGFuZ2UgbWFjcm8gZGVmaW5pdGlvbiBvZiBtZW1fKiB0byBhbGxvdworKyAgICBwYXNzaW5nIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHdoZW4gTUVNX0xJQkNfTUFMTE9DIGlzIGRlZmluZWQuCisrCisrICAyMDA4LTA1LTA5IEpvbmF0aGFuIExhcm1vdXIKKysgICogZXJyLmgsIGVyci5jLCBzb2NrZXRzLmM6IEZpeCBidWcgIzIzMTE5OiBSZW9yZGVyIHRpbWVvdXQgZXJyb3IgY29kZSB0bworKyAgICBzdG9wIGl0IGJlaW5nIHRyZWF0ZWQgYXMgYSBmYXRhbCBlcnJvci4KKysKKysgIDIwMDgtMDQtMTUgU2ltb24gR29sZHNjaG1pZHQKKysgICogZGhjcC5jOiBmaXhlZCBidWcgIzIyODA0OiBkaGNwX3N0b3AgZG9lc24ndCBjbGVhciBORVRJRl9GTEFHX0RIQ1AKKysgICAgKGZsYWcgbm93IGNsZWFyZWQpCisrCisrICAyMDA4LTAzLTI3IFNpbW9uIEdvbGRzY2htaWR0CisrICAqIG1lbS5jLCB0Y3BpcC5jLCB0Y3BpcC5oLCBvcHQuaDogZml4ZWQgYnVnICMyMTQzMyAoQ2FsbGluZyBtZW1fZnJlZS9wYnVmX2ZyZWUKKysgICAgZnJvbSBpbnRlcnJ1cHQgY29udGV4dCBpc24ndCBzYWZlKTogc2V0IExXSVBfVVNFX0hFQVBfRlJPTV9JTlRFUlJVUFQgdG8gMQorKyAgICBpbiBsd2lwb3B0cy5oIG9yIHVzZSBwYnVmX2ZyZWVfY2FsbGJhY2socCkvbWVtX2ZyZWVfY2FsbGJhY2sobSkgdG8gZnJlZSBwYnVmcworKyAgICBvciBoZWFwIG1lbW9yeSBmcm9tIGludGVycnVwdCBjb250ZXh0CisrCisrICAyMDA4LTAzLTI2IFNpbW9uIEdvbGRzY2htaWR0CisrICAqIHRjcF9pbi5jLCB0Y3AuYzogZml4ZWQgYnVnICMyMjI0OTogZGl2aXNpb24gYnkgemVybyBjb3VsZCBvY2N1ciBpZiBhIHJlbW90ZQorKyAgICBob3N0IHNlbnQgYSB6ZXJvIG1zcyBhcyBUQ1Agb3B0aW9uLgorKworCisgKFNUQUJMRS0xLjMuMCkKKworSW5kZXg6IHNyYy9hcGkvYXBpX21zZy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSQ1MgZmlsZTogL3NvdXJjZXMvbHdpcC9sd2lwL3NyYy9hcGkvYXBpX21zZy5jLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4xMDIKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4xMDQKK2RpZmYgLXUgLXAgLXIxLjEwMiAtcjEuMTA0CistLS0gYS9zcmMvYXBpL2FwaV9tc2cuYwkyMSBNYXIgMjAwOCAxNjoyMzoxNCAtMDAwMAkxLjEwMgorKysrIGIvc3JjL2FwaS9hcGlfbXNnLmMJMTUgSnVsIDIwMDggMTE6MTg6NTggLTAwMDAJMS4xMDQKK0BAIC01OTgsMTEgKzU5OCwxNiBAQCBkb19jbG9zZV9pbnRlcm5hbChzdHJ1Y3QgbmV0Y29ubiAqY29ubikKKyAgIExXSVBfQVNTRVJUKCJwY2IgYWxyZWFkeSBjbG9zZWQiLCAoY29ubi0+cGNiLnRjcCAhPSBOVUxMKSk7CisKKyAgIC8qIFNldCBiYWNrIHNvbWUgY2FsbGJhY2sgcG9pbnRlcnMgKi8KKysgIHRjcF9hcmcoY29ubi0+cGNiLnRjcCwgTlVMTCk7CisgICBpZiAoY29ubi0+cGNiLnRjcC0+c3RhdGUgPT0gTElTVEVOKSB7CistICAgIHRjcF9hcmcoY29ubi0+cGNiLnRjcCwgTlVMTCk7CisgICAgIHRjcF9hY2NlcHQoY29ubi0+cGNiLnRjcCwgTlVMTCk7CisgICB9IGVsc2UgeworICAgICB0Y3BfcmVjdihjb25uLT5wY2IudGNwLCBOVUxMKTsKKysgICAgdGNwX2FjY2VwdChjb25uLT5wY2IudGNwLCBOVUxMKTsKKysgICAgLyogc29tZSBjYWxsYmFja3MgaGF2ZSB0byBiZSByZXNldCBpZiB0Y3BfY2xvc2UgaXMgbm90IHN1Y2Nlc3NmdWwgKi8KKysgICAgdGNwX3NlbnQoY29ubi0+cGNiLnRjcCwgTlVMTCk7CisrICAgIHRjcF9wb2xsKGNvbm4tPnBjYi50Y3AsIE5VTEwsIDQpOworKyAgICB0Y3BfZXJyKGNvbm4tPnBjYi50Y3AsIE5VTEwpOworICAgfQorICAgLyogVHJ5IHRvIGNsb3NlIHRoZSBjb25uZWN0aW9uICovCisgICBlcnIgPSB0Y3BfY2xvc2UoY29ubi0+cGNiLnRjcCk7CitAQCAtNjEwLDExICs2MTUsNiBAQCBkb19jbG9zZV9pbnRlcm5hbChzdHJ1Y3QgbmV0Y29ubiAqY29ubikKKyAgICAgLyogQ2xvc2luZyBzdWNjZWVkZWQgKi8KKyAgICAgY29ubi0+c3RhdGUgPSBORVRDT05OX05PTkU7CisgICAgIC8qIFNldCBiYWNrIHNvbWUgY2FsbGJhY2sgcG9pbnRlcnMgYXMgY29ubiBpcyBnb2luZyBhd2F5ICovCistICAgIHRjcF9lcnIoY29ubi0+cGNiLnRjcCwgTlVMTCk7CistICAgIHRjcF9wb2xsKGNvbm4tPnBjYi50Y3AsIE5VTEwsIDQpOworLSAgICB0Y3Bfc2VudChjb25uLT5wY2IudGNwLCBOVUxMKTsKKy0gICAgdGNwX3JlY3YoY29ubi0+cGNiLnRjcCwgTlVMTCk7CistICAgIHRjcF9hcmcoY29ubi0+cGNiLnRjcCwgTlVMTCk7CisgICAgIGNvbm4tPnBjYi50Y3AgPSBOVUxMOworICAgICBjb25uLT5lcnIgPSBFUlJfT0s7CisgICAgIC8qIFRyaWdnZXIgc2VsZWN0KCkgaW4gc29ja2V0IGxheWVyLiBUaGlzIHNlbmQgc2hvdWxkIHNvbWV0aGluZyBlbHNlIHNvIHRoZQorQEAgLTYyMyw2ICs2MjMsMTQgQEAgZG9fY2xvc2VfaW50ZXJuYWwoc3RydWN0IG5ldGNvbm4gKmNvbm4pCisgICAgIEFQSV9FVkVOVChjb25uLCBORVRDT05OX0VWVF9TRU5EUExVUywgMCk7CisgICAgIC8qIHdha2UgdXAgdGhlIGFwcGxpY2F0aW9uIHRhc2sgKi8KKyAgICAgc3lzX3NlbV9zaWduYWwoY29ubi0+b3BfY29tcGxldGVkKTsKKysgIH0gZWxzZSB7CisrICAgIC8qIENsb3NpbmcgZmFpbGVkLCByZXN0b3JlIHNvbWUgb2YgdGhlIGNhbGxiYWNrcyAqLworKyAgICAvKiBDbG9zaW5nIG9mIGxpc3RlbiBwY2Igd2lsbCBuZXZlciBmYWlsISAqLworKyAgICBMV0lQX0FTU0VSVCgiQ2xvc2luZyBhIGxpc3RlbiBwY2IgbWF5IG5vdCBmYWlsISIsIChjb25uLT5wY2IudGNwLT5zdGF0ZSAhPSBMSVNURU4pKTsKKysgICAgdGNwX3NlbnQoY29ubi0+cGNiLnRjcCwgc2VudF90Y3ApOworKyAgICB0Y3BfcG9sbChjb25uLT5wY2IudGNwLCBwb2xsX3RjcCwgNCk7CisrICAgIHRjcF9lcnIoY29ubi0+cGNiLnRjcCwgZXJyX3RjcCk7CisrICAgIHRjcF9hcmcoY29ubi0+cGNiLnRjcCwgY29ubik7CisgICB9CisgICAvKiBJZiBjbG9zaW5nIGRpZG4ndCBzdWNjZWVkLCB3ZSBnZXQgY2FsbGVkIGFnYWluIGVpdGhlcgorICAgICAgZnJvbSBwb2xsX3RjcCBvciBmcm9tIHNlbnRfdGNwICovCitJbmRleDogc3JjL2FwaS9lcnIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvYXBpL2Vyci5jLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4xMQorcmV0cmlldmluZyByZXZpc2lvbiAxLjEyCitkaWZmIC11IC1wIC1yMS4xMSAtcjEuMTIKKy0tLSBhL3NyYy9hcGkvZXJyLmMJMTMgRGVjIDIwMDcgMjM6MDY6NTAgLTAwMDAJMS4xMQorKysrIGIvc3JjL2FwaS9lcnIuYwk5IE1heSAyMDA4IDEyOjE0OjIzIC0wMDAwCTEuMTIKK0BAIC00NCwxNyArNDQsMTcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmVycl9zdHJlcnJbXSA9IHsKKyAgICAgICAgICAgICJPay4iLCAgICAgICAgICAgICAgICAgICAgLyogRVJSX09LICAgICAgICAgIDAgICovCisgICAgICAgICAgICAiT3V0IG9mIG1lbW9yeSBlcnJvci4iLCAgIC8qIEVSUl9NRU0gICAgICAgIC0xICAqLworICAgICAgICAgICAgIkJ1ZmZlciBlcnJvci4iLCAgICAgICAgICAvKiBFUlJfQlVGICAgICAgICAtMiAgKi8KKy0gICAgICAgICAgICJSb3V0aW5nIHByb2JsZW0uIiwgICAgICAgLyogRVJSX1JURSAgICAgICAgLTMgICovCistICAgICAgICAgICAiQ29ubmVjdGlvbiBhYm9ydGVkLiIsICAgIC8qIEVSUl9BQlJUICAgICAgIC00ICAqLworLSAgICAgICAgICAgIkNvbm5lY3Rpb24gcmVzZXQuIiwgICAgICAvKiBFUlJfUlNUICAgICAgICAtNSAgKi8KKy0gICAgICAgICAgICJDb25uZWN0aW9uIGNsb3NlZC4iLCAgICAgLyogRVJSX0NMU0QgICAgICAgLTYgICovCistICAgICAgICAgICAiTm90IGNvbm5lY3RlZC4iLCAgICAgICAgIC8qIEVSUl9DT05OICAgICAgIC03ICAqLworLSAgICAgICAgICAgIklsbGVnYWwgdmFsdWUuIiwgICAgICAgICAvKiBFUlJfVkFMICAgICAgICAtOCAgKi8KKy0gICAgICAgICAgICJJbGxlZ2FsIGFyZ3VtZW50LiIsICAgICAgLyogRVJSX0FSRyAgICAgICAgLTkgICovCistICAgICAgICAgICAiQWRkcmVzcyBpbiB1c2UuIiwgICAgICAgIC8qIEVSUl9VU0UgICAgICAgIC0xMCAqLworLSAgICAgICAgICAgIkxvdy1sZXZlbCBuZXRpZiBlcnJvci4iLCAvKiBFUlJfSUYgICAgICAgICAtMTEgKi8KKy0gICAgICAgICAgICJBbHJlYWR5IGNvbm5lY3RlZC4iLCAgICAgLyogRVJSX0lTQ09OTiAgICAgLTEyICovCistICAgICAgICAgICAiVGltZW91dC4iLCAgICAgICAgICAgICAgIC8qIEVSUl9USU1FT1VUICAgIC0xMyAqLworKyAgICAgICAgICAgIlRpbWVvdXQuIiwgICAgICAgICAgICAgICAvKiBFUlJfVElNRU9VVCAgICAtMyAqLworKyAgICAgICAgICAgIlJvdXRpbmcgcHJvYmxlbS4iLCAgICAgICAvKiBFUlJfUlRFICAgICAgICAtNCAgKi8KKysgICAgICAgICAgICJDb25uZWN0aW9uIGFib3J0ZWQuIiwgICAgLyogRVJSX0FCUlQgICAgICAgLTUgICovCisrICAgICAgICAgICAiQ29ubmVjdGlvbiByZXNldC4iLCAgICAgIC8qIEVSUl9SU1QgICAgICAgIC02ICAqLworKyAgICAgICAgICAgIkNvbm5lY3Rpb24gY2xvc2VkLiIsICAgICAvKiBFUlJfQ0xTRCAgICAgICAtNyAgKi8KKysgICAgICAgICAgICJOb3QgY29ubmVjdGVkLiIsICAgICAgICAgLyogRVJSX0NPTk4gICAgICAgLTggICovCisrICAgICAgICAgICAiSWxsZWdhbCB2YWx1ZS4iLCAgICAgICAgIC8qIEVSUl9WQUwgICAgICAgIC05ICAqLworKyAgICAgICAgICAgIklsbGVnYWwgYXJndW1lbnQuIiwgICAgICAvKiBFUlJfQVJHICAgICAgICAtMTAgKi8KKysgICAgICAgICAgICJBZGRyZXNzIGluIHVzZS4iLCAgICAgICAgLyogRVJSX1VTRSAgICAgICAgLTExICovCisrICAgICAgICAgICAiTG93LWxldmVsIG5ldGlmIGVycm9yLiIsIC8qIEVSUl9JRiAgICAgICAgIC0xMiAqLworKyAgICAgICAgICAgIkFscmVhZHkgY29ubmVjdGVkLiIsICAgICAvKiBFUlJfSVNDT05OICAgICAtMTMgKi8KKyAgICAgICAgICAgICJPcGVyYXRpb24gaW4gcHJvZ3Jlc3MuIiAgLyogRVJSX0lOUFJPR1JFU1MgLTE0ICovCisgfTsKKworSW5kZXg6IHNyYy9hcGkvbmV0ZGIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvYXBpL25ldGRiLmMsdgorcmV0cmlldmluZyByZXZpc2lvbiAxLjQKK3JldHJpZXZpbmcgcmV2aXNpb24gMS41CitkaWZmIC11IC1wIC1yMS40IC1yMS41CistLS0gYS9zcmMvYXBpL25ldGRiLmMJMjYgSmFuIDIwMDggMTY6MTE6MzkgLTAwMDAJMS40CisrKysgYi9zcmMvYXBpL25ldGRiLmMJMTYgSnVsIDIwMDggMjA6MzY6MTIgLTAwMDAJMS41CitAQCAtMzI2LDcgKzMyNiw4IEBAIGx3aXBfZ2V0YWRkcmluZm8oY29uc3QgY2hhciAqbm9kZW5hbWUsIGMKKyAgIGlmIChub2RlbmFtZSAhPSBOVUxMKSB7CisgICAgIC8qIGNvcHkgbm9kZW5hbWUgdG8gY2Fub25uYW1lIGlmIHNwZWNpZmllZCAqLworICAgICBzaXplX3QgbmFtZWxlbiA9IHN0cmxlbihub2RlbmFtZSk7CistICAgIGFpLT5haV9jYW5vbm5hbWUgPSBtZW1fbWFsbG9jKG5hbWVsZW4gKyAxKTsKKysgICAgTFdJUF9BU1NFUlQoIm5hbWVsZW4gaXMgdG9vIGxvbmciLCAobmFtZWxlbiArIDEpIDw9IChtZW1fc2l6ZV90KS0xKTsKKysgICAgYWktPmFpX2Nhbm9ubmFtZSA9IG1lbV9tYWxsb2MoKG1lbV9zaXplX3QpKG5hbWVsZW4gKyAxKSk7CisgICAgIGlmIChhaS0+YWlfY2Fub25uYW1lID09IE5VTEwpIHsKKyAgICAgICBnb3RvIG1lbWVycjsKKyAgICAgfQorSW5kZXg6IHNyYy9hcGkvc29ja2V0cy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSQ1MgZmlsZTogL3NvdXJjZXMvbHdpcC9sd2lwL3NyYy9hcGkvc29ja2V0cy5jLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4xMTYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4xMTcKK2RpZmYgLXUgLXAgLXIxLjExNiAtcjEuMTE3CistLS0gYS9zcmMvYXBpL3NvY2tldHMuYwkxMyBNYXIgMjAwOCAyMDowMzo1NyAtMDAwMAkxLjExNgorKysrIGIvc3JjL2FwaS9zb2NrZXRzLmMJOSBNYXkgMjAwOCAxMjoxNDoyNCAtMDAwMAkxLjExNworQEAgLTEyOCwxNyArMTI4LDE3IEBAIHN0YXRpYyBjb25zdCBpbnQgZXJyX3RvX2Vycm5vX3RhYmxlW10gPQorICAgMCwgICAgICAgICAgICAgLyogRVJSX09LICAgICAgICAgIDAgICAgICBObyBlcnJvciwgZXZlcnl0aGluZyBPSy4gKi8KKyAgIEVOT01FTSwgICAgICAgIC8qIEVSUl9NRU0gICAgICAgIC0xICAgICAgT3V0IG9mIG1lbW9yeSBlcnJvci4gICAgICovCisgICBFTk9CVUZTLCAgICAgICAvKiBFUlJfQlVGICAgICAgICAtMiAgICAgIEJ1ZmZlciBlcnJvci4gICAgICAgICAgICAqLworLSAgRUhPU1RVTlJFQUNILCAgLyogRVJSX1JURSAgICAgICAgLTMgICAgICBSb3V0aW5nIHByb2JsZW0uICAgICAgICAgKi8KKy0gIEVDT05OQUJPUlRFRCwgIC8qIEVSUl9BQlJUICAgICAgIC00ICAgICAgQ29ubmVjdGlvbiBhYm9ydGVkLiAgICAgICovCistICBFQ09OTlJFU0VULCAgICAvKiBFUlJfUlNUICAgICAgICAtNSAgICAgIENvbm5lY3Rpb24gcmVzZXQuICAgICAgICAqLworLSAgRVNIVVRET1dOLCAgICAgLyogRVJSX0NMU0QgICAgICAgLTYgICAgICBDb25uZWN0aW9uIGNsb3NlZC4gICAgICAgKi8KKy0gIEVOT1RDT05OLCAgICAgIC8qIEVSUl9DT05OICAgICAgIC03ICAgICAgTm90IGNvbm5lY3RlZC4gICAgICAgICAgICovCistICBFSU5WQUwsICAgICAgICAvKiBFUlJfVkFMICAgICAgICAtOCAgICAgIElsbGVnYWwgdmFsdWUuICAgICAgICAgICAqLworLSAgRUlPLCAgICAgICAgICAgLyogRVJSX0FSRyAgICAgICAgLTkgICAgICBJbGxlZ2FsIGFyZ3VtZW50LiAgICAgICAgKi8KKy0gIEVBRERSSU5VU0UsICAgIC8qIEVSUl9VU0UgICAgICAgIC0xMCAgICAgQWRkcmVzcyBpbiB1c2UuICAgICAgICAgICovCistICAtMSwgICAgICAgICAgICAvKiBFUlJfSUYgICAgICAgICAtMTEgICAgIExvdy1sZXZlbCBuZXRpZiBlcnJvciAgICAqLworLSAgLTEsICAgICAgICAgICAgLyogRVJSX0lTQ09OTiAgICAgLTEyICAgICBBbHJlYWR5IGNvbm5lY3RlZC4gICAgICAgKi8KKy0gIEVUSU1FRE9VVCwgICAgIC8qIEVSUl9USU1FT1VUICAgIC0xMyAgICAgVGltZW91dCAgICAgICAgICAgICAgICAgICovCisrICBFVElNRURPVVQsICAgICAvKiBFUlJfVElNRU9VVCAgICAtMyAgICAgIFRpbWVvdXQgICAgICAgICAgICAgICAgICAqLworKyAgRUhPU1RVTlJFQUNILCAgLyogRVJSX1JURSAgICAgICAgLTQgICAgICBSb3V0aW5nIHByb2JsZW0uICAgICAgICAgKi8KKysgIEVDT05OQUJPUlRFRCwgIC8qIEVSUl9BQlJUICAgICAgIC01ICAgICAgQ29ubmVjdGlvbiBhYm9ydGVkLiAgICAgICovCisrICBFQ09OTlJFU0VULCAgICAvKiBFUlJfUlNUICAgICAgICAtNiAgICAgIENvbm5lY3Rpb24gcmVzZXQuICAgICAgICAqLworKyAgRVNIVVRET1dOLCAgICAgLyogRVJSX0NMU0QgICAgICAgLTcgICAgICBDb25uZWN0aW9uIGNsb3NlZC4gICAgICAgKi8KKysgIEVOT1RDT05OLCAgICAgIC8qIEVSUl9DT05OICAgICAgIC04ICAgICAgTm90IGNvbm5lY3RlZC4gICAgICAgICAgICovCisrICBFSU5WQUwsICAgICAgICAvKiBFUlJfVkFMICAgICAgICAtOSAgICAgIElsbGVnYWwgdmFsdWUuICAgICAgICAgICAqLworKyAgRUlPLCAgICAgICAgICAgLyogRVJSX0FSRyAgICAgICAgLTEwICAgICBJbGxlZ2FsIGFyZ3VtZW50LiAgICAgICAgKi8KKysgIEVBRERSSU5VU0UsICAgIC8qIEVSUl9VU0UgICAgICAgIC0xMSAgICAgQWRkcmVzcyBpbiB1c2UuICAgICAgICAgICovCisrICAtMSwgICAgICAgICAgICAvKiBFUlJfSUYgICAgICAgICAtMTIgICAgIExvdy1sZXZlbCBuZXRpZiBlcnJvciAgICAqLworKyAgLTEsICAgICAgICAgICAgLyogRVJSX0lTQ09OTiAgICAgLTEzICAgICBBbHJlYWR5IGNvbm5lY3RlZC4gICAgICAgKi8KKyAgIEVJTlBST0dSRVNTICAgIC8qIEVSUl9JTlBST0dSRVNTIC0xNCAgICAgT3BlcmF0aW9uIGluIHByb2dyZXNzICAgICovCisgfTsKKworSW5kZXg6IHNyYy9hcGkvdGNwaXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvYXBpL3RjcGlwLmMsdgorcmV0cmlldmluZyByZXZpc2lvbiAxLjcwCityZXRyaWV2aW5nIHJldmlzaW9uIDEuNzMKK2RpZmYgLXUgLXAgLXIxLjcwIC1yMS43MworLS0tIGEvc3JjL2FwaS90Y3BpcC5jCTEyIEphbiAyMDA4IDExOjUyOjIyIC0wMDAwCTEuNzAKKysrKyBiL3NyYy9hcGkvdGNwaXAuYwkyNyBKdW4gMjAwOCAyMDozNDo1MSAtMDAwMAkxLjczCitAQCAtNTE4LDQgKzUxOCw0MiBAQCB0Y3BpcF9pbml0KHZvaWQgKCogaW5pdGZ1bmMpKHZvaWQgKiksIHZvCisgICBzeXNfdGhyZWFkX25ldyhUQ1BJUF9USFJFQURfTkFNRSwgdGNwaXBfdGhyZWFkLCBOVUxMLCBUQ1BJUF9USFJFQURfU1RBQ0tTSVpFLCBUQ1BJUF9USFJFQURfUFJJTyk7CisgfQorCisrLyoqCisrICogU2ltcGxlIGNhbGxiYWNrIGZ1bmN0aW9uIHVzZWQgd2l0aCB0Y3BpcF9jYWxsYmFjayB0byBmcmVlIGEgcGJ1ZgorKyAqIChwYnVmX2ZyZWUgaGFzIGEgd3Jvbmcgc2lnbmF0dXJlIGZvciB0Y3BpcF9jYWxsYmFjaykKKysgKgorKyAqIEBwYXJhbSBwIFRoZSBwYnVmIChjaGFpbikgdG8gYmUgZGVyZWZlcmVuY2VkLgorKyAqLworK3N0YXRpYyB2b2lkCisrcGJ1Zl9mcmVlX2ludCh2b2lkICpwKQorK3sKKysgIHN0cnVjdCBwYnVmICpxID0gcDsKKysgIHBidWZfZnJlZShxKTsKKyt9CisrCisrLyoqCisrICogQSBzaW1wbGUgd3JhcHBlciBmdW5jdGlvbiB0aGF0IGFsbG93cyB5b3UgdG8gZnJlZSBhIHBidWYgZnJvbSBpbnRlcnJ1cHQgY29udGV4dC4KKysgKgorKyAqIEBwYXJhbSBwIFRoZSBwYnVmIChjaGFpbikgdG8gYmUgZGVyZWZlcmVuY2VkLgorKyAqIEByZXR1cm4gRVJSX09LIGlmIGNhbGxiYWNrIGNvdWxkIGJlIGVucXVldWVkLCBhbiBlcnJfdCBpZiBub3QKKysgKi8KKytlcnJfdAorK3BidWZfZnJlZV9jYWxsYmFjayhzdHJ1Y3QgcGJ1ZiAqcCkKKyt7CisrICByZXR1cm4gdGNwaXBfY2FsbGJhY2tfd2l0aF9ibG9jayhwYnVmX2ZyZWVfaW50LCBwLCAwKTsKKyt9CisrCisrLyoqCisrICogQSBzaW1wbGUgd3JhcHBlciBmdW5jdGlvbiB0aGF0IGFsbG93cyB5b3UgdG8gZnJlZSBoZWFwIG1lbW9yeSBmcm9tCisrICogaW50ZXJydXB0IGNvbnRleHQuCisrICoKKysgKiBAcGFyYW0gbSB0aGUgaGVhcCBtZW1vcnkgdG8gZnJlZQorKyAqIEByZXR1cm4gRVJSX09LIGlmIGNhbGxiYWNrIGNvdWxkIGJlIGVucXVldWVkLCBhbiBlcnJfdCBpZiBub3QKKysgKi8KKytlcnJfdAorK21lbV9mcmVlX2NhbGxiYWNrKHZvaWQgKm0pCisreworKyAgcmV0dXJuIHRjcGlwX2NhbGxiYWNrX3dpdGhfYmxvY2sobWVtX2ZyZWUsIG0sIDApOworK30KKysKKyAjZW5kaWYgLyogIU5PX1NZUyAqLworSW5kZXg6IHNyYy9jb3JlL2RoY3AuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvY29yZS9kaGNwLmMsdgorcmV0cmlldmluZyByZXZpc2lvbiAxLjg2CityZXRyaWV2aW5nIHJldmlzaW9uIDEuODcKK2RpZmYgLXUgLXAgLXIxLjg2IC1yMS44NworLS0tIGEvc3JjL2NvcmUvZGhjcC5jCTQgTWFyIDIwMDggMTQ6MjU6NTggLTAwMDAJMS44NgorKysrIGIvc3JjL2NvcmUvZGhjcC5jCTE1IEFwciAyMDA4IDE3OjI0OjU1IC0wMDAwCTEuODcKK0BAIC01NjgsNiArNTY4LDggQEAgZGhjcF9zdGFydChzdHJ1Y3QgbmV0aWYgKm5ldGlmKQorICAgTFdJUF9FUlJPUigibmV0aWYgIT0gTlVMTCIsIChuZXRpZiAhPSBOVUxMKSwgcmV0dXJuIEVSUl9BUkc7KTsKKyAgIGRoY3AgPSBuZXRpZi0+ZGhjcDsKKyAgIExXSVBfREVCVUdGKERIQ1BfREVCVUcgfCBMV0lQX0RCR19UUkFDRSB8IExXSVBfREJHX1NUQVRFLCAoImRoY3Bfc3RhcnQobmV0aWY9JXApICVjJWMlIlUxNl9GIlxuIiwgKHZvaWQqKW5ldGlmLCBuZXRpZi0+bmFtZVswXSwgbmV0aWYtPm5hbWVbMV0sICh1MTZfdCluZXRpZi0+bnVtKSk7CisrICAvKiBSZW1vdmUgdGhlIGZsYWcgdGhhdCBzYXlzIHRoaXMgbmV0aWYgaXMgaGFuZGxlZCBieSBESENQLAorKyAgICAgaXQgaXMgc2V0IHdoZW4gd2Ugc3VjY2VlZGVkIHN0YXJ0aW5nLiAqLworICAgbmV0aWYtPmZsYWdzICY9IH5ORVRJRl9GTEFHX0RIQ1A7CisKKyAgIC8qIG5vIERIQ1AgY2xpZW50IGF0dGFjaGVkIHlldD8gKi8KK0BAIC02MDksNiArNjExLDcgQEAgZGhjcF9zdGFydChzdHJ1Y3QgbmV0aWYgKm5ldGlmKQorICAgICBkaGNwX3N0b3AobmV0aWYpOworICAgICByZXR1cm4gRVJSX01FTTsKKyAgIH0KKysgIC8qIFNldCB0aGUgZmxhZyB0aGF0IHNheXMgdGhpcyBuZXRpZiBpcyBoYW5kbGVkIGJ5IERIQ1AuICovCisgICBuZXRpZi0+ZmxhZ3MgfD0gTkVUSUZfRkxBR19ESENQOworICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtMTA2Myw2ICsxMDY2LDggQEAgZGhjcF9zdG9wKHN0cnVjdCBuZXRpZiAqbmV0aWYpCisgeworICAgc3RydWN0IGRoY3AgKmRoY3AgPSBuZXRpZi0+ZGhjcDsKKyAgIExXSVBfRVJST1IoImRoY3Bfc3RvcDogbmV0aWYgIT0gTlVMTCIsIChuZXRpZiAhPSBOVUxMKSwgcmV0dXJuOyk7CisrICAvKiBSZW1vdmUgdGhlIGZsYWcgdGhhdCBzYXlzIHRoaXMgbmV0aWYgaXMgaGFuZGxlZCBieSBESENQLiAqLworKyAgbmV0aWYtPmZsYWdzICY9IH5ORVRJRl9GTEFHX0RIQ1A7CisKKyAgIExXSVBfREVCVUdGKERIQ1BfREVCVUcgfCBMV0lQX0RCR19UUkFDRSB8IDMsICgiZGhjcF9zdG9wKClcbiIpKTsKKyAgIC8qIG5ldGlmIGlzIERIQ1AgY29uZmlndXJlZD8gKi8KK0luZGV4OiBzcmMvY29yZS9tZW0uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvY29yZS9tZW0uYyx2CityZXRyaWV2aW5nIHJldmlzaW9uIDEuNTkKK3JldHJpZXZpbmcgcmV2aXNpb24gMS42MgorZGlmZiAtdSAtcCAtcjEuNTkgLXIxLjYyCistLS0gYS9zcmMvY29yZS9tZW0uYwk0IE1hciAyMDA4IDE2OjMxOjMyIC0wMDAwCTEuNTkKKysrKyBiL3NyYy9jb3JlL21lbS5jCTMwIEp1biAyMDA4IDE4OjE2OjUxIC0wMDAwCTEuNjIKK0BAIC0xNzcsOSArMTc3LDM2IEBAIHN0YXRpYyB1OF90ICpyYW07Cisgc3RhdGljIHN0cnVjdCBtZW0gKnJhbV9lbmQ7CisgLyoqIHBvaW50ZXIgdG8gdGhlIGxvd2VzdCBmcmVlIGJsb2NrLCB0aGlzIGlzIHVzZWQgZm9yIGZhc3RlciBzZWFyY2ggKi8KKyBzdGF0aWMgc3RydWN0IG1lbSAqbGZyZWU7CisrCisgLyoqIGNvbmN1cnJlbnQgYWNjZXNzIHByb3RlY3Rpb24gKi8KKyBzdGF0aWMgc3lzX3NlbV90IG1lbV9zZW07CisKKysjaWYgTFdJUF9BTExPV19NRU1fRlJFRV9GUk9NX09USEVSX0NPTlRFWFQKKysKKytzdGF0aWMgdm9sYXRpbGUgdThfdCBtZW1fZnJlZV9jb3VudDsKKysKKysvKiBBbGxvdyBtZW1fZnJlZSBmcm9tIG90aGVyIChlLmcuIGludGVycnVwdCkgY29udGV4dCAqLworKyNkZWZpbmUgTFdJUF9NRU1fRlJFRV9ERUNMX1BST1RFQ1QoKSAgU1lTX0FSQ0hfREVDTF9QUk9URUNUKGxldl9mcmVlKQorKyNkZWZpbmUgTFdJUF9NRU1fRlJFRV9QUk9URUNUKCkgICAgICAgU1lTX0FSQ0hfUFJPVEVDVChsZXZfZnJlZSkKKysjZGVmaW5lIExXSVBfTUVNX0ZSRUVfVU5QUk9URUNUKCkgICAgIFNZU19BUkNIX1VOUFJPVEVDVChsZXZfZnJlZSkKKysjZGVmaW5lIExXSVBfTUVNX0FMTE9DX0RFQ0xfUFJPVEVDVCgpIFNZU19BUkNIX0RFQ0xfUFJPVEVDVChsZXZfYWxsb2MpCisrI2RlZmluZSBMV0lQX01FTV9BTExPQ19QUk9URUNUKCkgICAgICBTWVNfQVJDSF9QUk9URUNUKGxldl9hbGxvYykKKysjZGVmaW5lIExXSVBfTUVNX0FMTE9DX1VOUFJPVEVDVCgpICAgIFNZU19BUkNIX1VOUFJPVEVDVChsZXZfYWxsb2MpCisrCisrI2Vsc2UgLyogTFdJUF9BTExPV19NRU1fRlJFRV9GUk9NX09USEVSX0NPTlRFWFQgKi8KKysKKysvKiBQcm90ZWN0IHRoZSBoZWFwIG9ubHkgYnkgdXNpbmcgYSBzZW1hcGhvcmUgKi8KKysjZGVmaW5lIExXSVBfTUVNX0ZSRUVfREVDTF9QUk9URUNUKCkKKysjZGVmaW5lIExXSVBfTUVNX0ZSRUVfUFJPVEVDVCgpICAgIHN5c19hcmNoX3NlbV93YWl0KG1lbV9zZW0sIDApCisrI2RlZmluZSBMV0lQX01FTV9GUkVFX1VOUFJPVEVDVCgpICBzeXNfc2VtX3NpZ25hbChtZW1fc2VtKQorKy8qIG1lbV9tYWxsb2MgaXMgcHJvdGVjdGVkIHVzaW5nIHNlbWFwaG9yZSBBTkQgTFdJUF9NRU1fQUxMT0NfUFJPVEVDVCAqLworKyNkZWZpbmUgTFdJUF9NRU1fQUxMT0NfREVDTF9QUk9URUNUKCkKKysjZGVmaW5lIExXSVBfTUVNX0FMTE9DX1BST1RFQ1QoKQorKyNkZWZpbmUgTFdJUF9NRU1fQUxMT0NfVU5QUk9URUNUKCkKKysKKysjZW5kaWYgLyogTFdJUF9BTExPV19NRU1fRlJFRV9GUk9NX09USEVSX0NPTlRFWFQgKi8KKysKKysKKyAvKioKKyAgKiAiUGx1ZyBob2xlcyIgYnkgY29tYmluaW5nIGFkamFjZW50IGVtcHR5IHN0cnVjdCBtZW1zLgorICAqIEFmdGVyIHRoaXMgZnVuY3Rpb24gaXMgdGhyb3VnaCwgdGhlcmUgc2hvdWxkIG5vdCBleGlzdAorQEAgLTI1NSw5ICsyODIsNyBAQCBtZW1faW5pdCh2b2lkKQorICAgLyogaW5pdGlhbGl6ZSB0aGUgbG93ZXN0LWZyZWUgcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGhlYXAgKi8KKyAgIGxmcmVlID0gKHN0cnVjdCBtZW0gKilyYW07CisKKy0jaWYgTUVNX1NUQVRTCistICBsd2lwX3N0YXRzLm1lbS5hdmFpbCA9IE1FTV9TSVpFX0FMSUdORUQ7CistI2VuZGlmIC8qIE1FTV9TVEFUUyAqLworKyAgTUVNX1NUQVRTX0FWQUlMKGF2YWlsLCBNRU1fU0laRV9BTElHTkVEKTsKKyB9CisKKyAvKioKK0BAIC0yNzAsNiArMjk1LDcgQEAgdm9pZAorIG1lbV9mcmVlKHZvaWQgKnJtZW0pCisgeworICAgc3RydWN0IG1lbSAqbWVtOworKyAgTFdJUF9NRU1fRlJFRV9ERUNMX1BST1RFQ1QoKTsKKworICAgaWYgKHJtZW0gPT0gTlVMTCkgeworICAgICBMV0lQX0RFQlVHRihNRU1fREVCVUcgfCBMV0lQX0RCR19UUkFDRSB8IDIsICgibWVtX2ZyZWUocCA9PSBOVUxMKSB3YXMgY2FsbGVkLlxuIikpOworQEAgLTI3NywyMCArMzAzLDIwIEBAIG1lbV9mcmVlKHZvaWQgKnJtZW0pCisgICB9CisgICBMV0lQX0FTU0VSVCgibWVtX2ZyZWU6IHNhbml0eSBjaGVjayBhbGlnbm1lbnQiLCAoKChtZW1fcHRyX3Qpcm1lbSkgJiAoTUVNX0FMSUdOTUVOVC0xKSkgPT0gMCk7CisKKy0gIC8qIHByb3RlY3QgdGhlIGhlYXAgZnJvbSBjb25jdXJyZW50IGFjY2VzcyAqLworLSAgc3lzX2FyY2hfc2VtX3dhaXQobWVtX3NlbSwgMCk7CistCisgICBMV0lQX0FTU0VSVCgibWVtX2ZyZWU6IGxlZ2FsIG1lbW9yeSIsICh1OF90ICopcm1lbSA+PSAodThfdCAqKXJhbSAmJgorICAgICAodThfdCAqKXJtZW0gPCAodThfdCAqKXJhbV9lbmQpOworCisgICBpZiAoKHU4X3QgKilybWVtIDwgKHU4X3QgKilyYW0gfHwgKHU4X3QgKilybWVtID49ICh1OF90ICopcmFtX2VuZCkgeworKyAgICBTWVNfQVJDSF9ERUNMX1BST1RFQ1QobGV2KTsKKyAgICAgTFdJUF9ERUJVR0YoTUVNX0RFQlVHIHwgMywgKCJtZW1fZnJlZTogaWxsZWdhbCBtZW1vcnlcbiIpKTsKKy0jaWYgTUVNX1NUQVRTCistICAgICsrbHdpcF9zdGF0cy5tZW0uZXJyOworLSNlbmRpZiAvKiBNRU1fU1RBVFMgKi8KKy0gICAgc3lzX3NlbV9zaWduYWwobWVtX3NlbSk7CisrICAgIC8qIHByb3RlY3QgbWVtIHN0YXRzIGZyb20gY29uY3VycmVudCBhY2Nlc3MgKi8KKysgICAgU1lTX0FSQ0hfUFJPVEVDVChsZXYpOworKyAgICBNRU1fU1RBVFNfSU5DKGlsbGVnYWwpOworKyAgICBTWVNfQVJDSF9VTlBST1RFQ1QobGV2KTsKKyAgICAgcmV0dXJuOworICAgfQorKyAgLyogcHJvdGVjdCB0aGUgaGVhcCBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovCisrICBMV0lQX01FTV9GUkVFX1BST1RFQ1QoKTsKKyAgIC8qIEdldCB0aGUgY29ycmVzcG9uZGluZyBzdHJ1Y3QgbWVtIC4uLiAqLworICAgbWVtID0gKHN0cnVjdCBtZW0gKikoKHU4X3QgKilybWVtIC0gU0laRU9GX1NUUlVDVF9NRU0pOworICAgLyogLi4uIHdoaWNoIGhhcyB0byBiZSBpbiBhIHVzZWQgc3RhdGUgLi4uICovCitAQCAtMzAzLDEzICszMjksMTQgQEAgbWVtX2ZyZWUodm9pZCAqcm1lbSkKKyAgICAgbGZyZWUgPSBtZW07CisgICB9CisKKy0jaWYgTUVNX1NUQVRTCistICBsd2lwX3N0YXRzLm1lbS51c2VkIC09IG1lbS0+bmV4dCAtICgodThfdCAqKW1lbSAtIHJhbSk7CistI2VuZGlmIC8qIE1FTV9TVEFUUyAqLworKyAgTUVNX1NUQVRTX0RFQ19VU0VEKHVzZWQsIG1lbS0+bmV4dCAtICgodThfdCAqKW1lbSAtIHJhbSkpOworCisgICAvKiBmaW5hbGx5LCBzZWUgaWYgcHJldiBvciBuZXh0IGFyZSBmcmVlIGFsc28gKi8KKyAgIHBsdWdfaG9sZXMobWVtKTsKKy0gIHN5c19zZW1fc2lnbmFsKG1lbV9zZW0pOworKyNpZiBMV0lQX0FMTE9XX01FTV9GUkVFX0ZST01fT1RIRVJfQ09OVEVYVAorKyAgbWVtX2ZyZWVfY291bnQgPSAxOworKyNlbmRpZiAvKiBMV0lQX0FMTE9XX01FTV9GUkVFX0ZST01fT1RIRVJfQ09OVEVYVCAqLworKyAgTFdJUF9NRU1fRlJFRV9VTlBST1RFQ1QoKTsKKyB9CisKKyAvKioKK0BAIC0zMjEsNiArMzQ4LDggQEAgbWVtX2ZyZWUodm9pZCAqcm1lbSkKKyAgKiBAcGFyYW0gbmV3c2l6ZSByZXF1aXJlZCBzaXplIGFmdGVyIHNocmlua2luZyAobmVlZHMgdG8gYmUgc21hbGxlciB0aGFuIG9yCisgICogICAgICAgICAgICAgICAgZXF1YWwgdG8gdGhlIHByZXZpb3VzIHNpemUpCisgICogQHJldHVybiBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zOiBpcyBhbHdheXMgPT0gcm1lbSwgYXQgdGhlIG1vbWVudAorKyAqICAgICAgICAgb3IgTlVMTCBpZiBuZXdzaXplIGlzID4gb2xkIHNpemUsIGluIHdoaWNoIGNhc2Ugcm1lbSBpcyBOT1QgdG91Y2hlZAorKyAqICAgICAgICAgb3IgZnJlZWQhCisgICovCisgdm9pZCAqCisgbWVtX3JlYWxsb2Modm9pZCAqcm1lbSwgbWVtX3NpemVfdCBuZXdzaXplKQorQEAgLTMyOCw2ICszNTcsOCBAQCBtZW1fcmVhbGxvYyh2b2lkICpybWVtLCBtZW1fc2l6ZV90IG5ld3NpCisgICBtZW1fc2l6ZV90IHNpemU7CisgICBtZW1fc2l6ZV90IHB0ciwgcHRyMjsKKyAgIHN0cnVjdCBtZW0gKm1lbSwgKm1lbTI7CisrICAvKiB1c2UgdGhlIEZSRUVfUFJPVEVDVCBoZXJlOiBpdCBwcm90ZWN0cyB3aXRoIHNlbSBPUiBTWVNfQVJDSF9QUk9URUNUICovCisrICBMV0lQX01FTV9GUkVFX0RFQ0xfUFJPVEVDVCgpOworCisgICAvKiBFeHBhbmQgdGhlIHNpemUgb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnkgcmVnaW9uIHNvIHRoYXQgd2UgY2FuCisgICAgICBhZGp1c3QgZm9yIGFsaWdubWVudC4gKi8KK0BAIC0zNDYsNyArMzc3LDEyIEBAIG1lbV9yZWFsbG9jKHZvaWQgKnJtZW0sIG1lbV9zaXplX3QgbmV3c2kKKyAgICAodThfdCAqKXJtZW0gPCAodThfdCAqKXJhbV9lbmQpOworCisgICBpZiAoKHU4X3QgKilybWVtIDwgKHU4X3QgKilyYW0gfHwgKHU4X3QgKilybWVtID49ICh1OF90ICopcmFtX2VuZCkgeworKyAgICBTWVNfQVJDSF9ERUNMX1BST1RFQ1QobGV2KTsKKyAgICAgTFdJUF9ERUJVR0YoTUVNX0RFQlVHIHwgMywgKCJtZW1fcmVhbGxvYzogaWxsZWdhbCBtZW1vcnlcbiIpKTsKKysgICAgLyogcHJvdGVjdCBtZW0gc3RhdHMgZnJvbSBjb25jdXJyZW50IGFjY2VzcyAqLworKyAgICBTWVNfQVJDSF9QUk9URUNUKGxldik7CisrICAgIE1FTV9TVEFUU19JTkMoaWxsZWdhbCk7CisrICAgIFNZU19BUkNIX1VOUFJPVEVDVChsZXYpOworICAgICByZXR1cm4gcm1lbTsKKyAgIH0KKyAgIC8qIEdldCB0aGUgY29ycmVzcG9uZGluZyBzdHJ1Y3QgbWVtIC4uLiAqLworQEAgLTM2NiwxMSArNDAyLDkgQEAgbWVtX3JlYWxsb2Modm9pZCAqcm1lbSwgbWVtX3NpemVfdCBuZXdzaQorICAgfQorCisgICAvKiBwcm90ZWN0IHRoZSBoZWFwIGZyb20gY29uY3VycmVudCBhY2Nlc3MgKi8KKy0gIHN5c19hcmNoX3NlbV93YWl0KG1lbV9zZW0sIDApOworKyAgTFdJUF9NRU1fRlJFRV9QUk9URUNUKCk7CisKKy0jaWYgTUVNX1NUQVRTCistICBsd2lwX3N0YXRzLm1lbS51c2VkIC09IChzaXplIC0gbmV3c2l6ZSk7CistI2VuZGlmIC8qIE1FTV9TVEFUUyAqLworKyAgTUVNX1NUQVRTX0RFQ19VU0VEKHVzZWQsIChzaXplIC0gbmV3c2l6ZSkpOworCisgICBtZW0yID0gKHN0cnVjdCBtZW0gKikmcmFtW21lbS0+bmV4dF07CisgICBpZihtZW0yLT51c2VkID09IDApIHsKK0BAIC00MjYsNyArNDYwLDEwIEBAIG1lbV9yZWFsbG9jKHZvaWQgKnJtZW0sIG1lbV9zaXplX3QgbmV3c2kKKyAgICAgLT4gZG9uJ3QgZG8gYW55aHRpbmcuCisgICAgIC0+IHRoZSByZW1haW5pbmcgc3BhY2Ugc3RheXMgdW51c2VkIHNpbmNlIGl0IGlzIHRvbyBzbWFsbAorICAgfSAqLworLSAgc3lzX3NlbV9zaWduYWwobWVtX3NlbSk7CisrI2lmIExXSVBfQUxMT1dfTUVNX0ZSRUVfRlJPTV9PVEhFUl9DT05URVhUCisrICBtZW1fZnJlZV9jb3VudCA9IDE7CisrI2VuZGlmIC8qIExXSVBfQUxMT1dfTUVNX0ZSRUVfRlJPTV9PVEhFUl9DT05URVhUICovCisrICBMV0lQX01FTV9GUkVFX1VOUFJPVEVDVCgpOworICAgcmV0dXJuIHJtZW07CisgfQorCitAQCAtNDQ0LDYgKzQ4MSwxMCBAQCBtZW1fbWFsbG9jKG1lbV9zaXplX3Qgc2l6ZSkKKyB7CisgICBtZW1fc2l6ZV90IHB0ciwgcHRyMjsKKyAgIHN0cnVjdCBtZW0gKm1lbSwgKm1lbTI7CisrI2lmIExXSVBfQUxMT1dfTUVNX0ZSRUVfRlJPTV9PVEhFUl9DT05URVhUCisrICB1OF90IGxvY2FsX21lbV9mcmVlX2NvdW50ID0gMDsKKysjZW5kaWYgLyogTFdJUF9BTExPV19NRU1fRlJFRV9GUk9NX09USEVSX0NPTlRFWFQgKi8KKysgIExXSVBfTUVNX0FMTE9DX0RFQ0xfUFJPVEVDVCgpOworCisgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgIHJldHVybiBOVUxMOworQEAgLTQ2NCw4OCArNTA1LDEwMSBAQCBtZW1fbWFsbG9jKG1lbV9zaXplX3Qgc2l6ZSkKKworICAgLyogcHJvdGVjdCB0aGUgaGVhcCBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovCisgICBzeXNfYXJjaF9zZW1fd2FpdChtZW1fc2VtLCAwKTsKKysgIExXSVBfTUVNX0FMTE9DX1BST1RFQ1QoKTsKKysjaWYgTFdJUF9BTExPV19NRU1fRlJFRV9GUk9NX09USEVSX0NPTlRFWFQKKysgIC8qIHJ1biBhcyBsb25nIGFzIGEgbWVtX2ZyZWUgZGlzdHVyYmVkIG1lbV9tYWxsb2MgKi8KKysgIGRvIHsKKysgICAgbG9jYWxfbWVtX2ZyZWVfY291bnQgPSAwOworKyNlbmRpZiAvKiBMV0lQX0FMTE9XX01FTV9GUkVFX0ZST01fT1RIRVJfQ09OVEVYVCAqLworKworKyAgICAvKiBTY2FuIHRocm91Z2ggdGhlIGhlYXAgc2VhcmNoaW5nIGZvciBhIGZyZWUgYmxvY2sgdGhhdCBpcyBiaWcgZW5vdWdoLAorKyAgICAgKiBiZWdpbm5pbmcgd2l0aCB0aGUgbG93ZXN0IGZyZWUgYmxvY2suCisrICAgICAqLworKyAgICBmb3IgKHB0ciA9ICh1OF90ICopbGZyZWUgLSByYW07IHB0ciA8IE1FTV9TSVpFX0FMSUdORUQgLSBzaXplOworKyAgICAgICAgIHB0ciA9ICgoc3RydWN0IG1lbSAqKSZyYW1bcHRyXSktPm5leHQpIHsKKysgICAgICBtZW0gPSAoc3RydWN0IG1lbSAqKSZyYW1bcHRyXTsKKysjaWYgTFdJUF9BTExPV19NRU1fRlJFRV9GUk9NX09USEVSX0NPTlRFWFQKKysgICAgICBtZW1fZnJlZV9jb3VudCA9IDA7CisrICAgICAgTFdJUF9NRU1fQUxMT0NfVU5QUk9URUNUKCk7CisrICAgICAgLyogYWxsb3cgbWVtX2ZyZWUgdG8gcnVuICovCisrICAgICAgTFdJUF9NRU1fQUxMT0NfUFJPVEVDVCgpOworKyAgICAgIGlmIChtZW1fZnJlZV9jb3VudCAhPSAwKSB7CisrICAgICAgICBsb2NhbF9tZW1fZnJlZV9jb3VudCA9IG1lbV9mcmVlX2NvdW50OworKyAgICAgIH0KKysgICAgICBtZW1fZnJlZV9jb3VudCA9IDA7CisrI2VuZGlmIC8qIExXSVBfQUxMT1dfTUVNX0ZSRUVfRlJPTV9PVEhFUl9DT05URVhUICovCisKKy0gIC8qIFNjYW4gdGhyb3VnaCB0aGUgaGVhcCBzZWFyY2hpbmcgZm9yIGEgZnJlZSBibG9jayB0aGF0IGlzIGJpZyBlbm91Z2gsCistICAgKiBiZWdpbm5pbmcgd2l0aCB0aGUgbG93ZXN0IGZyZWUgYmxvY2suCistICAgKi8KKy0gIGZvciAocHRyID0gKHU4X3QgKilsZnJlZSAtIHJhbTsgcHRyIDwgTUVNX1NJWkVfQUxJR05FRCAtIHNpemU7CistICAgICAgIHB0ciA9ICgoc3RydWN0IG1lbSAqKSZyYW1bcHRyXSktPm5leHQpIHsKKy0gICAgbWVtID0gKHN0cnVjdCBtZW0gKikmcmFtW3B0cl07CistCistICAgIGlmICgoIW1lbS0+dXNlZCkgJiYKKy0gICAgICAgIChtZW0tPm5leHQgLSAocHRyICsgU0laRU9GX1NUUlVDVF9NRU0pKSA+PSBzaXplKSB7CistICAgICAgLyogbWVtIGlzIG5vdCB1c2VkIGFuZCBhdCBsZWFzdCBwZXJmZWN0IGZpdCBpcyBwb3NzaWJsZToKKy0gICAgICAgKiBtZW0tPm5leHQgLSAocHRyICsgU0laRU9GX1NUUlVDVF9NRU0pIGdpdmVzIHVzIHRoZSAndXNlciBkYXRhIHNpemUnIG9mIG1lbSAqLworLQorLSAgICAgIGlmIChtZW0tPm5leHQgLSAocHRyICsgU0laRU9GX1NUUlVDVF9NRU0pID49IChzaXplICsgU0laRU9GX1NUUlVDVF9NRU0gKyBNSU5fU0laRV9BTElHTkVEKSkgeworLSAgICAgICAgLyogKGluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSwgd2UgdGVzdCBpZiBhbm90aGVyIHN0cnVjdCBtZW0gKFNJWkVPRl9TVFJVQ1RfTUVNKSBjb250YWluaW5nCistICAgICAgICAgKiBhdCBsZWFzdCBNSU5fU0laRV9BTElHTkVEIG9mIGRhdGEgYWxzbyBmaXRzIGluIHRoZSAndXNlciBkYXRhIHNwYWNlJyBvZiAnbWVtJykKKy0gICAgICAgICAqIC0+IHNwbGl0IGxhcmdlIGJsb2NrLCBjcmVhdGUgZW1wdHkgcmVtYWluZGVyLAorLSAgICAgICAgICogcmVtYWluZGVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gTUlOX1NJWkVfQUxJR05FRCBkYXRhOiBpZgorLSAgICAgICAgICogbWVtLT5uZXh0IC0gKHB0ciArICgyKlNJWkVPRl9TVFJVQ1RfTUVNKSkgPT0gc2l6ZSwKKy0gICAgICAgICAqIHN0cnVjdCBtZW0gd291bGQgZml0IGluIGJ1dCBubyBkYXRhIGJldHdlZW4gbWVtMiBhbmQgbWVtMi0+bmV4dAorLSAgICAgICAgICogQHRvZG8gd2UgY291bGQgbGVhdmUgb3V0IE1JTl9TSVpFX0FMSUdORUQuIFdlIHdvdWxkIGNyZWF0ZSBhbiBlbXB0eQorLSAgICAgICAgICogICAgICAgcmVnaW9uIHRoYXQgY291bGRuJ3QgaG9sZCBkYXRhLCBidXQgd2hlbiBtZW0tPm5leHQgZ2V0cyBmcmVlZCwKKy0gICAgICAgICAqICAgICAgIHRoZSAyIHJlZ2lvbnMgd291bGQgYmUgY29tYmluZWQsIHJlc3VsdGluZyBpbiBtb3JlIGZyZWUgbWVtb3J5CistICAgICAgICAgKi8KKy0gICAgICAgIHB0cjIgPSBwdHIgKyBTSVpFT0ZfU1RSVUNUX01FTSArIHNpemU7CistICAgICAgICAvKiBjcmVhdGUgbWVtMiBzdHJ1Y3QgKi8KKy0gICAgICAgIG1lbTIgPSAoc3RydWN0IG1lbSAqKSZyYW1bcHRyMl07CistICAgICAgICBtZW0yLT51c2VkID0gMDsKKy0gICAgICAgIG1lbTItPm5leHQgPSBtZW0tPm5leHQ7CistICAgICAgICBtZW0yLT5wcmV2ID0gcHRyOworLSAgICAgICAgLyogYW5kIGluc2VydCBpdCBiZXR3ZWVuIG1lbSBhbmQgbWVtLT5uZXh0ICovCistICAgICAgICBtZW0tPm5leHQgPSBwdHIyOworLSAgICAgICAgbWVtLT51c2VkID0gMTsKKy0KKy0gICAgICAgIGlmIChtZW0yLT5uZXh0ICE9IE1FTV9TSVpFX0FMSUdORUQpIHsKKy0gICAgICAgICAgKChzdHJ1Y3QgbWVtICopJnJhbVttZW0yLT5uZXh0XSktPnByZXYgPSBwdHIyOworLSAgICAgICAgfQorLSNpZiBNRU1fU1RBVFMKKy0gICAgICAgIGx3aXBfc3RhdHMubWVtLnVzZWQgKz0gKHNpemUgKyBTSVpFT0ZfU1RSVUNUX01FTSk7CistICAgICAgICBpZiAobHdpcF9zdGF0cy5tZW0ubWF4IDwgbHdpcF9zdGF0cy5tZW0udXNlZCkgeworLSAgICAgICAgICBsd2lwX3N0YXRzLm1lbS5tYXggPSBsd2lwX3N0YXRzLm1lbS51c2VkOworKyAgICAgIGlmICgoIW1lbS0+dXNlZCkgJiYKKysgICAgICAgICAgKG1lbS0+bmV4dCAtIChwdHIgKyBTSVpFT0ZfU1RSVUNUX01FTSkpID49IHNpemUpIHsKKysgICAgICAgIC8qIG1lbSBpcyBub3QgdXNlZCBhbmQgYXQgbGVhc3QgcGVyZmVjdCBmaXQgaXMgcG9zc2libGU6CisrICAgICAgICAgKiBtZW0tPm5leHQgLSAocHRyICsgU0laRU9GX1NUUlVDVF9NRU0pIGdpdmVzIHVzIHRoZSAndXNlciBkYXRhIHNpemUnIG9mIG1lbSAqLworKworKyAgICAgICAgaWYgKG1lbS0+bmV4dCAtIChwdHIgKyBTSVpFT0ZfU1RSVUNUX01FTSkgPj0gKHNpemUgKyBTSVpFT0ZfU1RSVUNUX01FTSArIE1JTl9TSVpFX0FMSUdORUQpKSB7CisrICAgICAgICAgIC8qIChpbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUsIHdlIHRlc3QgaWYgYW5vdGhlciBzdHJ1Y3QgbWVtIChTSVpFT0ZfU1RSVUNUX01FTSkgY29udGFpbmluZworKyAgICAgICAgICAgKiBhdCBsZWFzdCBNSU5fU0laRV9BTElHTkVEIG9mIGRhdGEgYWxzbyBmaXRzIGluIHRoZSAndXNlciBkYXRhIHNwYWNlJyBvZiAnbWVtJykKKysgICAgICAgICAgICogLT4gc3BsaXQgbGFyZ2UgYmxvY2ssIGNyZWF0ZSBlbXB0eSByZW1haW5kZXIsCisrICAgICAgICAgICAqIHJlbWFpbmRlciBtdXN0IGJlIGxhcmdlIGVub3VnaCB0byBjb250YWluIE1JTl9TSVpFX0FMSUdORUQgZGF0YTogaWYKKysgICAgICAgICAgICogbWVtLT5uZXh0IC0gKHB0ciArICgyKlNJWkVPRl9TVFJVQ1RfTUVNKSkgPT0gc2l6ZSwKKysgICAgICAgICAgICogc3RydWN0IG1lbSB3b3VsZCBmaXQgaW4gYnV0IG5vIGRhdGEgYmV0d2VlbiBtZW0yIGFuZCBtZW0yLT5uZXh0CisrICAgICAgICAgICAqIEB0b2RvIHdlIGNvdWxkIGxlYXZlIG91dCBNSU5fU0laRV9BTElHTkVELiBXZSB3b3VsZCBjcmVhdGUgYW4gZW1wdHkKKysgICAgICAgICAgICogICAgICAgcmVnaW9uIHRoYXQgY291bGRuJ3QgaG9sZCBkYXRhLCBidXQgd2hlbiBtZW0tPm5leHQgZ2V0cyBmcmVlZCwKKysgICAgICAgICAgICogICAgICAgdGhlIDIgcmVnaW9ucyB3b3VsZCBiZSBjb21iaW5lZCwgcmVzdWx0aW5nIGluIG1vcmUgZnJlZSBtZW1vcnkKKysgICAgICAgICAgICovCisrICAgICAgICAgIHB0cjIgPSBwdHIgKyBTSVpFT0ZfU1RSVUNUX01FTSArIHNpemU7CisrICAgICAgICAgIC8qIGNyZWF0ZSBtZW0yIHN0cnVjdCAqLworKyAgICAgICAgICBtZW0yID0gKHN0cnVjdCBtZW0gKikmcmFtW3B0cjJdOworKyAgICAgICAgICBtZW0yLT51c2VkID0gMDsKKysgICAgICAgICAgbWVtMi0+bmV4dCA9IG1lbS0+bmV4dDsKKysgICAgICAgICAgbWVtMi0+cHJldiA9IHB0cjsKKysgICAgICAgICAgLyogYW5kIGluc2VydCBpdCBiZXR3ZWVuIG1lbSBhbmQgbWVtLT5uZXh0ICovCisrICAgICAgICAgIG1lbS0+bmV4dCA9IHB0cjI7CisrICAgICAgICAgIG1lbS0+dXNlZCA9IDE7CisrCisrICAgICAgICAgIGlmIChtZW0yLT5uZXh0ICE9IE1FTV9TSVpFX0FMSUdORUQpIHsKKysgICAgICAgICAgICAoKHN0cnVjdCBtZW0gKikmcmFtW21lbTItPm5leHRdKS0+cHJldiA9IHB0cjI7CisrICAgICAgICAgIH0KKysgICAgICAgICAgTUVNX1NUQVRTX0lOQ19VU0VEKHVzZWQsIChzaXplICsgU0laRU9GX1NUUlVDVF9NRU0pKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgIC8qIChhIG1lbTIgc3RydWN0IGRvZXMgbm8gZml0IGludG8gdGhlIHVzZXIgZGF0YSBzcGFjZSBvZiBtZW0gYW5kIG1lbS0+bmV4dCB3aWxsIGFsd2F5cworKyAgICAgICAgICAgKiBiZSB1c2VkIGF0IHRoaXMgcG9pbnQ6IGlmIG5vdCB3ZSBoYXZlIDIgdW51c2VkIHN0cnVjdHMgaW4gYSByb3csIHBsdWdfaG9sZXMgc2hvdWxkIGhhdmUKKysgICAgICAgICAgICogdGFrZSBjYXJlIG9mIHRoaXMpLgorKyAgICAgICAgICAgKiAtPiBuZWFyIGZpdCBvciBleGNhY3QgZml0OiBkbyBub3Qgc3BsaXQsIG5vIG1lbTIgY3JlYXRpb24KKysgICAgICAgICAgICogYWxzbyBjYW4ndCBtb3ZlIG1lbS0+bmV4dCBkaXJlY3RseSBiZWhpbmQgbWVtLCBzaW5jZSBtZW0tPm5leHQKKysgICAgICAgICAgICogd2lsbCBhbHdheXMgYmUgdXNlZCBhdCB0aGlzIHBvaW50IQorKyAgICAgICAgICAgKi8KKysgICAgICAgICAgbWVtLT51c2VkID0gMTsKKysgICAgICAgICAgTUVNX1NUQVRTX0lOQ19VU0VEKHVzZWQsIG1lbS0+bmV4dCAtICgodThfdCAqKW1lbSAtIHJhbSkpOworICAgICAgICAgfQorLSNlbmRpZiAvKiBNRU1fU1RBVFMgKi8KKy0gICAgICB9IGVsc2UgeworLSAgICAgICAgLyogKGEgbWVtMiBzdHJ1Y3QgZG9lcyBubyBmaXQgaW50byB0aGUgdXNlciBkYXRhIHNwYWNlIG9mIG1lbSBhbmQgbWVtLT5uZXh0IHdpbGwgYWx3YXlzCistICAgICAgICAgKiBiZSB1c2VkIGF0IHRoaXMgcG9pbnQ6IGlmIG5vdCB3ZSBoYXZlIDIgdW51c2VkIHN0cnVjdHMgaW4gYSByb3csIHBsdWdfaG9sZXMgc2hvdWxkIGhhdmUKKy0gICAgICAgICAqIHRha2UgY2FyZSBvZiB0aGlzKS4KKy0gICAgICAgICAqIC0+IG5lYXIgZml0IG9yIGV4Y2FjdCBmaXQ6IGRvIG5vdCBzcGxpdCwgbm8gbWVtMiBjcmVhdGlvbgorLSAgICAgICAgICogYWxzbyBjYW4ndCBtb3ZlIG1lbS0+bmV4dCBkaXJlY3RseSBiZWhpbmQgbWVtLCBzaW5jZSBtZW0tPm5leHQKKy0gICAgICAgICAqIHdpbGwgYWx3YXlzIGJlIHVzZWQgYXQgdGhpcyBwb2ludCEKKy0gICAgICAgICAqLworLSAgICAgICAgbWVtLT51c2VkID0gMTsKKy0jaWYgTUVNX1NUQVRTCistICAgICAgICBsd2lwX3N0YXRzLm1lbS51c2VkICs9IG1lbS0+bmV4dCAtICgodThfdCAqKW1lbSAtIHJhbSk7CistICAgICAgICBpZiAobHdpcF9zdGF0cy5tZW0ubWF4IDwgbHdpcF9zdGF0cy5tZW0udXNlZCkgeworLSAgICAgICAgICBsd2lwX3N0YXRzLm1lbS5tYXggPSBsd2lwX3N0YXRzLm1lbS51c2VkOworLSAgICAgICAgfQorLSNlbmRpZiAvKiBNRU1fU1RBVFMgKi8KKy0gICAgICB9CisKKy0gICAgICBpZiAobWVtID09IGxmcmVlKSB7CistICAgICAgICAvKiBGaW5kIG5leHQgZnJlZSBibG9jayBhZnRlciBtZW0gYW5kIHVwZGF0ZSBsb3dlc3QgZnJlZSBwb2ludGVyICovCistICAgICAgICB3aGlsZSAobGZyZWUtPnVzZWQgJiYgbGZyZWUgIT0gcmFtX2VuZCkgeworLSAgICAgICAgICBsZnJlZSA9IChzdHJ1Y3QgbWVtICopJnJhbVtsZnJlZS0+bmV4dF07CisrICAgICAgICBpZiAobWVtID09IGxmcmVlKSB7CisrICAgICAgICAgIC8qIEZpbmQgbmV4dCBmcmVlIGJsb2NrIGFmdGVyIG1lbSBhbmQgdXBkYXRlIGxvd2VzdCBmcmVlIHBvaW50ZXIgKi8KKysgICAgICAgICAgd2hpbGUgKGxmcmVlLT51c2VkICYmIGxmcmVlICE9IHJhbV9lbmQpIHsKKysgICAgICAgICAgICBMV0lQX01FTV9BTExPQ19VTlBST1RFQ1QoKTsKKysgICAgICAgICAgICAvKiBwcmV2ZW50IGhpZ2ggaW50ZXJydXB0IGxhdGVuY3kuLi4gKi8KKysgICAgICAgICAgICBMV0lQX01FTV9BTExPQ19QUk9URUNUKCk7CisrICAgICAgICAgICAgbGZyZWUgPSAoc3RydWN0IG1lbSAqKSZyYW1bbGZyZWUtPm5leHRdOworKyAgICAgICAgICB9CisrICAgICAgICAgIExXSVBfQVNTRVJUKCJtZW1fbWFsbG9jOiAhbGZyZWUtPnVzZWQiLCAoKGxmcmVlID09IHJhbV9lbmQpIHx8ICghbGZyZWUtPnVzZWQpKSk7CisgICAgICAgICB9CistICAgICAgICBMV0lQX0FTU0VSVCgibWVtX21hbGxvYzogIWxmcmVlLT51c2VkIiwgKChsZnJlZSA9PSByYW1fZW5kKSB8fCAoIWxmcmVlLT51c2VkKSkpOworLSAgICAgIH0KKy0gICAgICBzeXNfc2VtX3NpZ25hbChtZW1fc2VtKTsKKy0gICAgICBMV0lQX0FTU0VSVCgibWVtX21hbGxvYzogYWxsb2NhdGVkIG1lbW9yeSBub3QgYWJvdmUgcmFtX2VuZC4iLAorLSAgICAgICAobWVtX3B0cl90KW1lbSArIFNJWkVPRl9TVFJVQ1RfTUVNICsgc2l6ZSA8PSAobWVtX3B0cl90KXJhbV9lbmQpOworLSAgICAgIExXSVBfQVNTRVJUKCJtZW1fbWFsbG9jOiBhbGxvY2F0ZWQgbWVtb3J5IHByb3Blcmx5IGFsaWduZWQuIiwKKy0gICAgICAgKHVuc2lnbmVkIGxvbmcpKCh1OF90ICopbWVtICsgU0laRU9GX1NUUlVDVF9NRU0pICUgTUVNX0FMSUdOTUVOVCA9PSAwKTsKKy0gICAgICBMV0lQX0FTU0VSVCgibWVtX21hbGxvYzogc2FuaXR5IGNoZWNrIGFsaWdubWVudCIsCistICAgICAgICAoKChtZW1fcHRyX3QpbWVtKSAmIChNRU1fQUxJR05NRU5ULTEpKSA9PSAwKTsKKysgICAgICAgIExXSVBfTUVNX0FMTE9DX1VOUFJPVEVDVCgpOworKyAgICAgICAgc3lzX3NlbV9zaWduYWwobWVtX3NlbSk7CisrICAgICAgICBMV0lQX0FTU0VSVCgibWVtX21hbGxvYzogYWxsb2NhdGVkIG1lbW9yeSBub3QgYWJvdmUgcmFtX2VuZC4iLAorKyAgICAgICAgIChtZW1fcHRyX3QpbWVtICsgU0laRU9GX1NUUlVDVF9NRU0gKyBzaXplIDw9IChtZW1fcHRyX3QpcmFtX2VuZCk7CisrICAgICAgICBMV0lQX0FTU0VSVCgibWVtX21hbGxvYzogYWxsb2NhdGVkIG1lbW9yeSBwcm9wZXJseSBhbGlnbmVkLiIsCisrICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKCh1OF90ICopbWVtICsgU0laRU9GX1NUUlVDVF9NRU0pICUgTUVNX0FMSUdOTUVOVCA9PSAwKTsKKysgICAgICAgIExXSVBfQVNTRVJUKCJtZW1fbWFsbG9jOiBzYW5pdHkgY2hlY2sgYWxpZ25tZW50IiwKKysgICAgICAgICAgKCgobWVtX3B0cl90KW1lbSkgJiAoTUVNX0FMSUdOTUVOVC0xKSkgPT0gMCk7CisKKy0gICAgICByZXR1cm4gKHU4X3QgKiltZW0gKyBTSVpFT0ZfU1RSVUNUX01FTTsKKysgICAgICAgIHJldHVybiAodThfdCAqKW1lbSArIFNJWkVPRl9TVFJVQ1RfTUVNOworKyAgICAgIH0KKyAgICAgfQorLSAgfQorKyNpZiBMV0lQX0FMTE9XX01FTV9GUkVFX0ZST01fT1RIRVJfQ09OVEVYVAorKyAgICAvKiBpZiB3ZSBnb3QgaW50ZXJydXB0ZWQgYnkgYSBtZW1fZnJlZSwgdHJ5IGFnYWluICovCisrICB9IHdoaWxlKGxvY2FsX21lbV9mcmVlX2NvdW50ICE9IDApOworKyNlbmRpZiAvKiBMV0lQX0FMTE9XX01FTV9GUkVFX0ZST01fT1RIRVJfQ09OVEVYVCAqLworICAgTFdJUF9ERUJVR0YoTUVNX0RFQlVHIHwgMiwgKCJtZW1fbWFsbG9jOiBjb3VsZCBub3QgYWxsb2NhdGUgJSJTMTZfRiIgYnl0ZXNcbiIsIChzMTZfdClzaXplKSk7CistI2lmIE1FTV9TVEFUUworLSAgKytsd2lwX3N0YXRzLm1lbS5lcnI7CistI2VuZGlmIC8qIE1FTV9TVEFUUyAqLworKyAgTUVNX1NUQVRTX0lOQyhlcnIpOworKyAgTFdJUF9NRU1fQUxMT0NfVU5QUk9URUNUKCk7CisgICBzeXNfc2VtX3NpZ25hbChtZW1fc2VtKTsKKyAgIHJldHVybiBOVUxMOworIH0KK0luZGV4OiBzcmMvY29yZS9tZW1wLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1JDUyBmaWxlOiAvc291cmNlcy9sd2lwL2x3aXAvc3JjL2NvcmUvbWVtcC5jLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS41NQorcmV0cmlldmluZyByZXZpc2lvbiAxLjU2CitkaWZmIC11IC1wIC1yMS41NSAtcjEuNTYKKy0tLSBhL3NyYy9jb3JlL21lbXAuYwkyNSBOb3YgMjAwNyAxMDo0MzoyOCAtMDAwMAkxLjU1CisrKysgYi9zcmMvY29yZS9tZW1wLmMJMjcgSnVuIDIwMDggMTg6Mzc6NTQgLTAwMDAJMS41NgorQEAgLTI1MiwxMyArMjUyLDEyIEBAIG1lbXBfaW5pdCh2b2lkKQorICAgc3RydWN0IG1lbXAgKm1lbXA7CisgICB1MTZfdCBpLCBqOworCistI2lmIE1FTVBfU1RBVFMKKyAgIGZvciAoaSA9IDA7IGkgPCBNRU1QX01BWDsgKytpKSB7CistICAgIGx3aXBfc3RhdHMubWVtcFtpXS51c2VkID0gbHdpcF9zdGF0cy5tZW1wW2ldLm1heCA9CistICAgICAgbHdpcF9zdGF0cy5tZW1wW2ldLmVyciA9IDA7CistICAgIGx3aXBfc3RhdHMubWVtcFtpXS5hdmFpbCA9IG1lbXBfbnVtW2ldOworKyAgICBNRU1QX1NUQVRTX0FWQUlMKHVzZWQsIGksIDApOworKyAgICBNRU1QX1NUQVRTX0FWQUlMKG1heCwgaSwgMCk7CisrICAgIE1FTVBfU1RBVFNfQVZBSUwoZXJyLCBpLCAwKTsKKysgICAgTUVNUF9TVEFUU19BVkFJTChhdmFpbCwgaSwgbWVtcF9udW1baV0pOworICAgfQorLSNlbmRpZiAvKiBNRU1QX1NUQVRTICovCisKKyAgIG1lbXAgPSBMV0lQX01FTV9BTElHTihtZW1wX21lbW9yeSk7CisgICAvKiBmb3IgZXZlcnkgcG9vbDogKi8KK0BAIC0zMTUsMjAgKzMxNCwxMyBAQCBtZW1wX21hbGxvY19mbihtZW1wX3QgdHlwZSwgY29uc3QgY2hhcioKKyAgICAgbWVtcC0+ZmlsZSA9IGZpbGU7CisgICAgIG1lbXAtPmxpbmUgPSBsaW5lOworICNlbmRpZiAvKiBNRU1QX09WRVJGTE9XX0NIRUNLICovCistI2lmIE1FTVBfU1RBVFMKKy0gICAgKytsd2lwX3N0YXRzLm1lbXBbdHlwZV0udXNlZDsKKy0gICAgaWYgKGx3aXBfc3RhdHMubWVtcFt0eXBlXS51c2VkID4gbHdpcF9zdGF0cy5tZW1wW3R5cGVdLm1heCkgeworLSAgICAgIGx3aXBfc3RhdHMubWVtcFt0eXBlXS5tYXggPSBsd2lwX3N0YXRzLm1lbXBbdHlwZV0udXNlZDsKKy0gICAgfQorLSNlbmRpZiAvKiBNRU1QX1NUQVRTICovCisrICAgIE1FTVBfU1RBVFNfSU5DX1VTRUQodXNlZCwgdHlwZSk7CisgICAgIExXSVBfQVNTRVJUKCJtZW1wX21hbGxvYzogbWVtcCBwcm9wZXJseSBhbGlnbmVkIiwKKyAgICAgICAgICAgICAgICAgKChtZW1fcHRyX3QpbWVtcCAlIE1FTV9BTElHTk1FTlQpID09IDApOworICAgICBtZW1wID0gKHN0cnVjdCBtZW1wKikoKHU4X3QqKW1lbXAgKyBNRU1QX1NJWkUpOworICAgfSBlbHNlIHsKKyAgICAgTFdJUF9ERUJVR0YoTUVNUF9ERUJVRyB8IDIsICgibWVtcF9tYWxsb2M6IG91dCBvZiBtZW1vcnkgaW4gcG9vbCAlc1xuIiwgbWVtcF9kZXNjW3R5cGVdKSk7CistI2lmIE1FTVBfU1RBVFMKKy0gICAgKytsd2lwX3N0YXRzLm1lbXBbdHlwZV0uZXJyOworLSNlbmRpZiAvKiBNRU1QX1NUQVRTICovCisrICAgIE1FTVBfU1RBVFNfSU5DKGVyciwgdHlwZSk7CisgICB9CisKKyAgIFNZU19BUkNIX1VOUFJPVEVDVChvbGRfbGV2ZWwpOworQEAgLTM2NSw5ICszNTcsNyBAQCBtZW1wX2ZyZWUobWVtcF90IHR5cGUsIHZvaWQgKm1lbSkKKyAjZW5kaWYgLyogTUVNUF9PVkVSRkxPV19DSEVDSyA+PSAyICovCisgI2VuZGlmIC8qIE1FTVBfT1ZFUkZMT1dfQ0hFQ0sgKi8KKworLSNpZiBNRU1QX1NUQVRTCistICBsd2lwX3N0YXRzLm1lbXBbdHlwZV0udXNlZC0tOworLSNlbmRpZiAvKiBNRU1QX1NUQVRTICovCisrICBNRU1QX1NUQVRTX0RFQyh1c2VkLCB0eXBlKTsKKworICAgbWVtcC0+bmV4dCA9IG1lbXBfdGFiW3R5cGVdOworICAgbWVtcF90YWJbdHlwZV0gPSBtZW1wOworSW5kZXg6IHNyYy9jb3JlL25ldGlmLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1JDUyBmaWxlOiAvc291cmNlcy9sd2lwL2x3aXAvc3JjL2NvcmUvbmV0aWYuYyx2CityZXRyaWV2aW5nIHJldmlzaW9uIDEuNjUKK3JldHJpZXZpbmcgcmV2aXNpb24gMS42OAorZGlmZiAtdSAtcCAtcjEuNjUgLXIxLjY4CistLS0gYS9zcmMvY29yZS9uZXRpZi5jCTkgT2N0IDIwMDcgMjA6MDA6NTUgLTAwMDAJMS42NQorKysrIGIvc3JjL2NvcmUvbmV0aWYuYwkxOSBKdW4gMjAwOCAxNjoyNzoxOCAtMDAwMAkxLjY4CitAQCAtNDUsNiArNDUsMTIgQEAKKyAjaW5jbHVkZSAibHdpcC9zbm1wLmgiCisgI2luY2x1ZGUgImx3aXAvaWdtcC5oIgorICNpbmNsdWRlICJuZXRpZi9ldGhhcnAuaCIKKysjaWYgRU5BQkxFX0xPT1BCQUNLCisrI2luY2x1ZGUgImx3aXAvc3lzLmgiCisrI2lmIExXSVBfTkVUSUZfTE9PUEJBQ0tfTVVMVElUSFJFQURJTkcKKysjaW5jbHVkZSAibHdpcC90Y3BpcC5oIgorKyNlbmRpZiAvKiBMV0lQX05FVElGX0xPT1BCQUNLX01VTFRJVEhSRUFESU5HICovCisrI2VuZGlmIC8qIEVOQUJMRV9MT09QQkFDSyAqLworCisgI2lmIExXSVBfTkVUSUZfU1RBVFVTX0NBTExCQUNLCisgI2RlZmluZSBORVRJRl9TVEFUVVNfQ0FMTEJBQ0sobikgeyBpZiAobi0+c3RhdHVzX2NhbGxiYWNrKSAobi0+c3RhdHVzX2NhbGxiYWNrKShuKTsgfQorQEAgLTEwNiw2ICsxMTIsMTAgQEAgbmV0aWZfYWRkKHN0cnVjdCBuZXRpZiAqbmV0aWYsIHN0cnVjdCBpcAorICNpZiBMV0lQX0lHTVAKKyAgIG5ldGlmLT5pZ21wX21hY19maWx0ZXIgPSBOVUxMOworICNlbmRpZiAvKiBMV0lQX0lHTVAgKi8KKysjaWYgRU5BQkxFX0xPT1BCQUNLCisrICBuZXRpZi0+bG9vcF9maXJzdCA9IE5VTEw7CisrICBuZXRpZi0+bG9vcF9sYXN0ID0gTlVMTDsKKysjZW5kaWYgLyogRU5BQkxFX0xPT1BCQUNLICovCisKKyAgIC8qIHJlbWVtYmVyIG5ldGlmIHNwZWNpZmljIHN0YXRlIGluZm9ybWF0aW9uIGRhdGEgKi8KKyAgIG5ldGlmLT5zdGF0ZSA9IHN0YXRlOworQEAgLTExNCw2ICsxMjQsOSBAQCBuZXRpZl9hZGQoc3RydWN0IG5ldGlmICpuZXRpZiwgc3RydWN0IGlwCisgI2lmIExXSVBfTkVUSUZfSFdBRERSSElOVAorICAgbmV0aWYtPmFkZHJfaGludCA9IE5VTEw7CisgI2VuZGlmIC8qIExXSVBfTkVUSUZfSFdBRERSSElOVCovCisrI2lmIEVOQUJMRV9MT09QQkFDSyAmJiBMV0lQX0xPT1BCQUNLX01BWF9QQlVGUworKyAgbmV0aWYtPmxvb3BfY250X2N1cnJlbnQgPSAwOworKyNlbmRpZiAvKiBFTkFCTEVfTE9PUEJBQ0sgJiYgTFdJUF9MT09QQkFDS19NQVhfUEJVRlMgKi8KKworICAgbmV0aWZfc2V0X2FkZHIobmV0aWYsIGlwYWRkciwgbmV0bWFzaywgZ3cpOworCitAQCAtNDkzLDcgKzUwNiwxNTggQEAgdThfdCBuZXRpZl9pc19saW5rX3VwKHN0cnVjdCBuZXRpZiAqbmV0aQorICAqLworIHZvaWQgbmV0aWZfc2V0X2xpbmtfY2FsbGJhY2soc3RydWN0IG5ldGlmICpuZXRpZiwgdm9pZCAoKiBsaW5rX2NhbGxiYWNrKShzdHJ1Y3QgbmV0aWYgKm5ldGlmICkpCisgeworLSAgICBpZiAoIG5ldGlmICkKKy0gICAgICAgIG5ldGlmLT5saW5rX2NhbGxiYWNrID0gbGlua19jYWxsYmFjazsKKysgIGlmIChuZXRpZikgeworKyAgICBuZXRpZi0+bGlua19jYWxsYmFjayA9IGxpbmtfY2FsbGJhY2s7CisrICB9CisgfQorICNlbmRpZiAvKiBMV0lQX05FVElGX0xJTktfQ0FMTEJBQ0sgKi8KKysKKysjaWYgRU5BQkxFX0xPT1BCQUNLCisrLyoqCisrICogU2VuZCBhbiBJUCBwYWNrZXQgdG8gYmUgcmVjZWl2ZWQgb24gdGhlIHNhbWUgbmV0aWYgKGxvb3BpZi1saWtlKS4KKysgKiBUaGUgcGJ1ZiBpcyBzaW1wbHkgY29waWVkIGFuZCBoYW5kZWQgYmFjayB0byBuZXRpZi0+aW5wdXQuCisrICogSW4gbXVsdGl0aHJlYWRlZCBtb2RlLCB0aGlzIGlzIGRvbmUgZGlyZWN0bHkgc2luY2UgbmV0aWYtPmlucHV0IG11c3QgcHV0CisrICogdGhlIHBhY2tldCBvbiBhIHF1ZXVlLgorKyAqIEluIGNhbGxiYWNrIG1vZGUsIHRoZSBwYWNrZXQgaXMgcHV0IG9uIGFuIGludGVybmFsIHF1ZXVlIGFuZCBpcyBmZWQgdG8KKysgKiBuZXRpZi0+aW5wdXQgYnkgbmV0aWZfcG9sbCgpLgorKyAqCisrICogQHBhcmFtIG5ldGlmIHRoZSBsd2lwIG5ldHdvcmsgaW50ZXJmYWNlIHN0cnVjdHVyZQorKyAqIEBwYXJhbSBwIHRoZSAoSVApIHBhY2tldCB0byAnc2VuZCcKKysgKiBAcGFyYW0gaXBhZGRyIHRoZSBpcCBhZGRyZXNzIHRvIHNlbmQgdGhlIHBhY2tldCB0byAobm90IHVzZWQpCisrICogQHJldHVybiBFUlJfT0sgaWYgdGhlIHBhY2tldCBoYXMgYmVlbiBzZW50CisrICogICAgICAgICBFUlJfTUVNIGlmIHRoZSBwYnVmIHVzZWQgdG8gY29weSB0aGUgcGFja2V0IGNvdWxkbid0IGJlIGFsbG9jYXRlZAorKyAqLworK2Vycl90CisrbmV0aWZfbG9vcF9vdXRwdXQoc3RydWN0IG5ldGlmICpuZXRpZiwgc3RydWN0IHBidWYgKnAsCisrICAgICAgIHN0cnVjdCBpcF9hZGRyICppcGFkZHIpCisreworKyAgc3RydWN0IHBidWYgKnI7CisrICBlcnJfdCBlcnI7CisrICBzdHJ1Y3QgcGJ1ZiAqbGFzdDsKKysjaWYgTFdJUF9MT09QQkFDS19NQVhfUEJVRlMKKysgIHU4X3QgY2xlbiA9IDA7CisrI2VuZGlmIC8qIExXSVBfTE9PUEJBQ0tfTUFYX1BCVUZTICovCisrICBTWVNfQVJDSF9ERUNMX1BST1RFQ1QobGV2KTsKKysgIExXSVBfVU5VU0VEX0FSRyhpcGFkZHIpOworKworKyAgLyogQWxsb2NhdGUgYSBuZXcgcGJ1ZiAqLworKyAgciA9IHBidWZfYWxsb2MoUEJVRl9MSU5LLCBwLT50b3RfbGVuLCBQQlVGX1JBTSk7CisrICBpZiAociA9PSBOVUxMKSB7CisrICAgIHJldHVybiBFUlJfTUVNOworKyAgfQorKyNpZiBMV0lQX0xPT1BCQUNLX01BWF9QQlVGUworKyAgY2xlbiA9IHBidWZfY2xlbihyKTsKKysgIC8qIGNoZWNrIGZvciBvdmVyZmxvdyBvciB0b28gbWFueSBwYnVmIG9uIHF1ZXVlICovCisrICBpZigoKG5ldGlmLT5sb29wX2NudF9jdXJyZW50ICsgY2xlbikgPCBuZXRpZi0+bG9vcF9jbnRfY3VycmVudCkgfHwKKysgICAgKChuZXRpZi0+bG9vcF9jbnRfY3VycmVudCArIGNsZW4pID4gTFdJUF9MT09QQkFDS19NQVhfUEJVRlMpKSB7CisrICAgICAgcGJ1Zl9mcmVlKHIpOworKyAgICAgIHIgPSBOVUxMOworKyAgICAgIHJldHVybiBFUlJfTUVNOworKyAgfQorKyAgbmV0aWYtPmxvb3BfY250X2N1cnJlbnQgKz0gY2xlbjsKKysjZW5kaWYgLyogTFdJUF9MT09QQkFDS19NQVhfUEJVRlMgKi8KKysKKysgIC8qIENvcHkgdGhlIHdob2xlIHBidWYgcXVldWUgcCBpbnRvIHRoZSBzaW5nbGUgcGJ1ZiByICovCisrICBpZiAoKGVyciA9IHBidWZfY29weShyLCBwKSkgIT0gRVJSX09LKSB7CisrICAgIHBidWZfZnJlZShyKTsKKysgICAgciA9IE5VTEw7CisrICAgIHJldHVybiBlcnI7CisrICB9CisrCisrICAvKiBQdXQgdGhlIHBhY2tldCBvbiBhIGxpbmtlZCBsaXN0IHdoaWNoIGdldHMgZW1wdGllZCB0aHJvdWdoIGNhbGxpbmcKKysgICAgIG5ldGlmX3BvbGwoKS4gKi8KKysKKysgIC8qIGxldCBsYXN0IHBvaW50IHRvIHRoZSBsYXN0IHBidWYgaW4gY2hhaW4gciAqLworKyAgZm9yIChsYXN0ID0gcjsgbGFzdC0+bmV4dCAhPSBOVUxMOyBsYXN0ID0gbGFzdC0+bmV4dCk7CisrCisrICBTWVNfQVJDSF9QUk9URUNUKGxldik7CisrICBpZihuZXRpZi0+bG9vcF9maXJzdCAhPSBOVUxMKSB7CisrICAgIExXSVBfQVNTRVJUKCJpZiBmaXJzdCAhPSBOVUxMLCBsYXN0IG11c3QgYWxzbyBiZSAhPSBOVUxMIiwgbmV0aWYtPmxvb3BfbGFzdCAhPSBOVUxMKTsKKysgICAgbmV0aWYtPmxvb3BfbGFzdC0+bmV4dCA9IHI7CisrICAgIG5ldGlmLT5sb29wX2xhc3QgPSBsYXN0OworKyAgfSBlbHNlIHsKKysgICAgbmV0aWYtPmxvb3BfZmlyc3QgPSByOworKyAgICBuZXRpZi0+bG9vcF9sYXN0ID0gbGFzdDsKKysgIH0KKysgIFNZU19BUkNIX1VOUFJPVEVDVChsZXYpOworKworKyNpZiBMV0lQX05FVElGX0xPT1BCQUNLX01VTFRJVEhSRUFESU5HCisrICAvKiBGb3IgbXVsdGl0aHJlYWRpbmcgZW52aXJvbm1lbnQsIHNjaGVkdWxlIGEgY2FsbCB0byBuZXRpZl9wb2xsICovCisrICB0Y3BpcF9jYWxsYmFjayhuZXRpZl9wb2xsLCBuZXRpZik7CisrI2VuZGlmIC8qIExXSVBfTkVUSUZfTE9PUEJBQ0tfTVVMVElUSFJFQURJTkcgKi8KKysKKysgIHJldHVybiBFUlJfT0s7CisrfQorKworKy8qKgorKyAqIENhbGwgbmV0aWZfcG9sbCgpIGluIHRoZSBtYWluIGxvb3Agb2YgeW91ciBhcHBsaWNhdGlvbi4gVGhpcyBpcyB0byBwcmV2ZW50CisrICogcmVlbnRlcmluZyBub24tcmVlbnRyYW50IGZ1bmN0aW9ucyBsaWtlIHRjcF9pbnB1dCgpLiBQYWNrZXRzIHBhc3NlZCB0bworKyAqIG5ldGlmX2xvb3Bfb3V0cHV0KCkgYXJlIHB1dCBvbiBhIGxpc3QgdGhhdCBpcyBwYXNzZWQgdG8gbmV0aWYtPmlucHV0KCkgYnkKKysgKiBuZXRpZl9wb2xsKCkuCisrICovCisrdm9pZAorK25ldGlmX3BvbGwoc3RydWN0IG5ldGlmICpuZXRpZikKKyt7CisrICBzdHJ1Y3QgcGJ1ZiAqaW47CisrICBTWVNfQVJDSF9ERUNMX1BST1RFQ1QobGV2KTsKKysKKysgIGRvIHsKKysgICAgLyogR2V0IGEgcGFja2V0IGZyb20gdGhlIGxpc3QuIFdpdGggU1lTX0xJR0hUV0VJR0hUX1BST1Q9MSwgdGhpcyBpcyBwcm90ZWN0ZWQgKi8KKysgICAgU1lTX0FSQ0hfUFJPVEVDVChsZXYpOworKyAgICBpbiA9IG5ldGlmLT5sb29wX2ZpcnN0OworKyAgICBpZihpbiAhPSBOVUxMKSB7CisrICAgICAgc3RydWN0IHBidWYgKmluX2VuZCA9IGluOworKyNpZiBMV0lQX0xPT1BCQUNLX01BWF9QQlVGUworKyAgICAgIHU4X3QgY2xlbiA9IHBidWZfY2xlbihpbik7CisrICAgICAgLyogYWRqdXN0IHRoZSBudW1iZXIgb2YgcGJ1ZnMgb24gcXVldWUgKi8KKysgICAgICBMV0lQX0FTU0VSVCgibmV0aWYtPmxvb3BfY250X2N1cnJlbnQgdW5kZXJmbG93IiwKKysgICAgICAgICgobmV0aWYtPmxvb3BfY250X2N1cnJlbnQgLSBjbGVuKSA8IG5ldGlmLT5sb29wX2NudF9jdXJyZW50KSk7CisrICAgICAgbmV0aWYtPmxvb3BfY250X2N1cnJlbnQgLT0gY2xlbjsKKysjZW5kaWYgLyogTFdJUF9MT09QQkFDS19NQVhfUEJVRlMgKi8KKysgICAgICB3aGlsZShpbl9lbmQtPmxlbiAhPSBpbl9lbmQtPnRvdF9sZW4pIHsKKysgICAgICAgIExXSVBfQVNTRVJUKCJib2d1cyBwYnVmOiBsZW4gIT0gdG90X2xlbiBidXQgbmV4dCA9PSBOVUxMISIsIGluX2VuZC0+bmV4dCAhPSBOVUxMKTsKKysgICAgICAgIGluX2VuZCA9IGluX2VuZC0+bmV4dDsKKysgICAgICB9CisrICAgICAgLyogJ2luX2VuZCcgbm93IHBvaW50cyB0byB0aGUgbGFzdCBwYnVmIGZyb20gJ2luJyAqLworKyAgICAgIGlmKGluX2VuZCA9PSBuZXRpZi0+bG9vcF9sYXN0KSB7CisrICAgICAgICAvKiB0aGlzIHdhcyB0aGUgbGFzdCBwYnVmIGluIHRoZSBsaXN0ICovCisrICAgICAgICBuZXRpZi0+bG9vcF9maXJzdCA9IG5ldGlmLT5sb29wX2xhc3QgPSBOVUxMOworKyAgICAgIH0gZWxzZSB7CisrICAgICAgICAvKiBwb3AgdGhlIHBidWYgb2ZmIHRoZSBsaXN0ICovCisrICAgICAgICBuZXRpZi0+bG9vcF9maXJzdCA9IGluX2VuZC0+bmV4dDsKKysgICAgICAgIExXSVBfQVNTRVJUKCJzaG91bGQgbm90IGJlIG51bGwgc2luY2UgZmlyc3QgIT0gbGFzdCEiLCBuZXRpZi0+bG9vcF9maXJzdCAhPSBOVUxMKTsKKysgICAgICB9CisrICAgICAgLyogRGUtcXVldWUgdGhlIHBidWYgZnJvbSBpdHMgc3VjY2Vzc29ycyBvbiB0aGUgJ2xvb3BfJyBsaXN0LiAqLworKyAgICAgIGluX2VuZC0+bmV4dCA9IE5VTEw7CisrICAgIH0KKysgICAgU1lTX0FSQ0hfVU5QUk9URUNUKGxldik7CisrCisrICAgIGlmKGluICE9IE5VTEwpIHsKKysgICAgICAvKiBsb29wYmFjayBwYWNrZXRzIGFyZSBhbHdheXMgSVAgcGFja2V0cyEgKi8KKysgICAgICBpZihpcF9pbnB1dChpbiwgbmV0aWYpICE9IEVSUl9PSykgeworKyAgICAgICAgcGJ1Zl9mcmVlKGluKTsKKysgICAgICB9CisrICAgICAgLyogRG9uJ3QgcmVmZXJlbmNlIHRoZSBwYWNrZXQgYW55IG1vcmUhICovCisrICAgICAgaW4gPSBOVUxMOworKyAgICB9CisrICAvKiBnbyBvbiB3aGlsZSB0aGVyZSBpcyBhIHBhY2tldCBvbiB0aGUgbGlzdCAqLworKyAgfSB3aGlsZShuZXRpZi0+bG9vcF9maXJzdCAhPSBOVUxMKTsKKyt9CisrCisrI2lmICFMV0lQX05FVElGX0xPT1BCQUNLX01VTFRJVEhSRUFESU5HCisrLyoqCisrICogQ2FsbHMgbmV0aWZfcG9sbCgpIGZvciBldmVyeSBuZXRpZiBvbiB0aGUgbmV0aWZfbGlzdC4KKysgKi8KKyt2b2lkCisrbmV0aWZfcG9sbF9hbGwodm9pZCkKKyt7CisrICBzdHJ1Y3QgbmV0aWYgKm5ldGlmID0gbmV0aWZfbGlzdDsKKysgIC8qIGxvb3AgdGhyb3VnaCBuZXRpZnMgKi8KKysgIHdoaWxlIChuZXRpZiAhPSBOVUxMKSB7CisrICAgIG5ldGlmX3BvbGwobmV0aWYpOworKyAgICAvKiBwcm9jZWVkIHRvIG5leHQgbmV0d29yayBpbnRlcmZhY2UgKi8KKysgICAgbmV0aWYgPSBuZXRpZi0+bmV4dDsKKysgIH0KKyt9CisrI2VuZGlmIC8qICFMV0lQX05FVElGX0xPT1BCQUNLX01VTFRJVEhSRUFESU5HICovCisrI2VuZGlmIC8qIEVOQUJMRV9MT09QQkFDSyAqLworSW5kZXg6IHNyYy9jb3JlL3BidWYuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvY29yZS9wYnVmLmMsdgorcmV0cmlldmluZyByZXZpc2lvbiAxLjEyNworcmV0cmlldmluZyByZXZpc2lvbiAxLjEyOAorZGlmZiAtdSAtcCAtcjEuMTI3IC1yMS4xMjgKKy0tLSBhL3NyYy9jb3JlL3BidWYuYwk0IE1hciAyMDA4IDE2OjM3OjQ2IC0wMDAwCTEuMTI3CisrKysgYi9zcmMvY29yZS9wYnVmLmMJMSBBcHIgMjAwOCAxOTowNTo0MCAtMDAwMAkxLjEyOAorQEAgLTY2Nyw4ICs2NjcsOCBAQCBwYnVmX2RlY2hhaW4oc3RydWN0IHBidWYgKnApCisgICoKKyAgKiBAbm90ZSBPbmx5IG9uZSBwYWNrZXQgaXMgY29waWVkLCBubyBwYWNrZXQgcXVldWUhCisgICoKKy0gKiBAcGFyYW0gcF90byBwYnVmIHNvdXJjZSBvZiB0aGUgY29weQorLSAqIEBwYXJhbSBwX2Zyb20gcGJ1ZiBkZXN0aW5hdGlvbiBvZiB0aGUgY29weQorKyAqIEBwYXJhbSBwX3RvIHBidWYgZGVzdGluYXRpb24gb2YgdGhlIGNvcHkKKysgKiBAcGFyYW0gcF9mcm9tIHBidWYgc291cmNlIG9mIHRoZSBjb3B5CisgICoKKyAgKiBAcmV0dXJuIEVSUl9PSyBpZiBwYnVmIHdhcyBjb3BpZWQKKyAgKiAgICAgICAgIEVSUl9BUkcgaWYgb25lIG9mIHRoZSBwYnVmcyBpcyBOVUxMIG9yIHBfdG8gaXMgbm90IGJpZworSW5kZXg6IHNyYy9jb3JlL3N0YXRzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1JDUyBmaWxlOiAvc291cmNlcy9sd2lwL2x3aXAvc3JjL2NvcmUvc3RhdHMuYyx2CityZXRyaWV2aW5nIHJldmlzaW9uIDEuMjcKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4yOAorZGlmZiAtdSAtcCAtcjEuMjcgLXIxLjI4CistLS0gYS9zcmMvY29yZS9zdGF0cy5jCTQgTWFyIDIwMDggMTY6MzE6MzIgLTAwMDAJMS4yNworKysrIGIvc3JjL2NvcmUvc3RhdHMuYwkyNyBKdW4gMjAwOCAxODozNzo1NCAtMDAwMAkxLjI4CitAQCAtNTQsNyArNTQsNiBAQCBzdGF0c19kaXNwbGF5X3Byb3RvKHN0cnVjdCBzdGF0c19wcm90byAqCisgeworICAgTFdJUF9QTEFURk9STV9ESUFHKCgiXG4lc1xuXHQiLCBuYW1lKSk7CisgICBMV0lQX1BMQVRGT1JNX0RJQUcoKCJ4bWl0OiAlIlNUQVRfQ09VTlRFUl9GIlxuXHQiLCBwcm90by0+eG1pdCkpOworLSAgTFdJUF9QTEFURk9STV9ESUFHKCgicmV4bWl0OiAlIlNUQVRfQ09VTlRFUl9GIlxuXHQiLCBwcm90by0+cmV4bWl0KSk7CisgICBMV0lQX1BMQVRGT1JNX0RJQUcoKCJyZWN2OiAlIlNUQVRfQ09VTlRFUl9GIlxuXHQiLCBwcm90by0+cmVjdikpOworICAgTFdJUF9QTEFURk9STV9ESUFHKCgiZnc6ICUiU1RBVF9DT1VOVEVSX0YiXG5cdCIsIHByb3RvLT5mdykpOworICAgTFdJUF9QTEFURk9STV9ESUFHKCgiZHJvcDogJSJTVEFUX0NPVU5URVJfRiJcblx0IiwgcHJvdG8tPmRyb3ApKTsKK0BAIC02OCw2ICs2Nyw3IEBAIHN0YXRzX2Rpc3BsYXlfcHJvdG8oc3RydWN0IHN0YXRzX3Byb3RvICoKKyAgIExXSVBfUExBVEZPUk1fRElBRygoImNhY2hlaGl0OiAlIlNUQVRfQ09VTlRFUl9GIlxuIiwgcHJvdG8tPmNhY2hlaGl0KSk7CisgfQorCisrI2lmIElHTVBfU1RBVFMKKyB2b2lkCisgc3RhdHNfZGlzcGxheV9pZ21wKHN0cnVjdCBzdGF0c19pZ21wICppZ21wKQorIHsKK0BAIC04Miw3ICs4Miw5IEBAIHN0YXRzX2Rpc3BsYXlfaWdtcChzdHJ1Y3Qgc3RhdHNfaWdtcCAqaWcKKyAgIExXSVBfUExBVEZPUk1fRElBRygoInJlcG9ydF9yeGVkOiAlIlNUQVRfQ09VTlRFUl9GIlxuXHQiLCBpZ21wLT5yZXBvcnRfcnhlZCkpOworICAgTFdJUF9QTEFURk9STV9ESUFHKCgiZ3JvdXBfcXVlcnlfcnhlZDogJSJTVEFUX0NPVU5URVJfRiJcbiIsIGlnbXAtPmdyb3VwX3F1ZXJ5X3J4ZWQpKTsKKyB9CisrI2VuZGlmIC8qIElHTVBfU1RBVFMgKi8KKworKyNpZiBNRU1fU1RBVFMgfHwgTUVNUF9TVEFUUworIHZvaWQKKyBzdGF0c19kaXNwbGF5X21lbShzdHJ1Y3Qgc3RhdHNfbWVtICptZW0sIGNoYXIgKm5hbWUpCisgeworQEAgLTkzLDQ4ICs5NSw1MyBAQCBzdGF0c19kaXNwbGF5X21lbShzdHJ1Y3Qgc3RhdHNfbWVtICptZW0sCisgICBMV0lQX1BMQVRGT1JNX0RJQUcoKCJlcnI6ICUiVTMyX0YiXG4iLCAodTMyX3QpbWVtLT5lcnIpKTsKKyB9CisKKysjaWYgTUVNUF9TVEFUUworIHZvaWQKKy1zdGF0c19kaXNwbGF5KHZvaWQpCisrc3RhdHNfZGlzcGxheV9tZW1wKHN0cnVjdCBzdGF0c19tZW0gKm1lbSwgaW50IGluZGV4KQorIHsKKy0jaWYgTUVNUF9TVEFUUworLSAgczE2X3QgaTsKKyAgIGNoYXIgKiBtZW1wX25hbWVzW10gPSB7CisgI2RlZmluZSBMV0lQX01FTVBPT0wobmFtZSxudW0sc2l6ZSxkZXNjKSBkZXNjLAorICNpbmNsdWRlICJsd2lwL21lbXBfc3RkLmgiCisgICB9OworLSNlbmRpZgorLSNpZiBMSU5LX1NUQVRTCistICBzdGF0c19kaXNwbGF5X3Byb3RvKCZsd2lwX3N0YXRzLmxpbmssICJMSU5LIik7CistI2VuZGlmCistI2lmIEVUSEFSUF9TVEFUUworLSAgc3RhdHNfZGlzcGxheV9wcm90bygmbHdpcF9zdGF0cy5ldGhhcnAsICJFVEhBUlAiKTsKKy0jZW5kaWYKKy0jaWYgSVBGUkFHX1NUQVRTCistICBzdGF0c19kaXNwbGF5X3Byb3RvKCZsd2lwX3N0YXRzLmlwX2ZyYWcsICJJUF9GUkFHIik7CistI2VuZGlmCistI2lmIElQX1NUQVRTCistICBzdGF0c19kaXNwbGF5X3Byb3RvKCZsd2lwX3N0YXRzLmlwLCAiSVAiKTsKKy0jZW5kaWYKKy0jaWYgSUNNUF9TVEFUUworLSAgc3RhdHNfZGlzcGxheV9wcm90bygmbHdpcF9zdGF0cy5pY21wLCAiSUNNUCIpOworLSNlbmRpZgorLSNpZiBJR01QX1NUQVRTCistICBzdGF0c19kaXNwbGF5X2lnbXAoJmx3aXBfc3RhdHMuaWdtcCk7CistI2VuZGlmCistI2lmIFVEUF9TVEFUUworLSAgc3RhdHNfZGlzcGxheV9wcm90bygmbHdpcF9zdGF0cy51ZHAsICJVRFAiKTsKKy0jZW5kaWYKKy0jaWYgVENQX1NUQVRTCistICBzdGF0c19kaXNwbGF5X3Byb3RvKCZsd2lwX3N0YXRzLnRjcCwgIlRDUCIpOworLSNlbmRpZgorLSNpZiBNRU1fU1RBVFMKKy0gIHN0YXRzX2Rpc3BsYXlfbWVtKCZsd2lwX3N0YXRzLm1lbSwgIkhFQVAiKTsKKy0jZW5kaWYKKy0jaWYgTUVNUF9TVEFUUworKyAgaWYoaW5kZXggPCBNRU1QX01BWCkgeworKyAgICBzdGF0c19kaXNwbGF5X21lbShtZW0sIG1lbXBfbmFtZXNbaW5kZXhdKTsKKysgIH0KKyt9CisrI2VuZGlmIC8qIE1FTVBfU1RBVFMgKi8KKysjZW5kaWYgLyogTUVNX1NUQVRTIHx8IE1FTVBfU1RBVFMgKi8KKysKKysjaWYgU1lTX1NUQVRTCisrdm9pZAorK3N0YXRzX2Rpc3BsYXlfc3lzKHN0cnVjdCBzdGF0c19zeXMgKnN5cykKKyt7CisrICBMV0lQX1BMQVRGT1JNX0RJQUcoKCJcblNZU1xuXHQiKSk7CisrICBMV0lQX1BMQVRGT1JNX0RJQUcoKCJzZW0udXNlZDogJSJVMzJfRiJcblx0IiwgKHUzMl90KXN5cy0+c2VtLnVzZWQpKTsKKysgIExXSVBfUExBVEZPUk1fRElBRygoInNlbS5tYXg6ICAlIlUzMl9GIlxuXHQiLCAodTMyX3Qpc3lzLT5zZW0ubWF4KSk7CisrICBMV0lQX1BMQVRGT1JNX0RJQUcoKCJzZW0uZXJyOiAgJSJVMzJfRiJcblx0IiwgKHUzMl90KXN5cy0+c2VtLmVycikpOworKyAgTFdJUF9QTEFURk9STV9ESUFHKCgibWJveC51c2VkOiAlIlUzMl9GIlxuXHQiLCAodTMyX3Qpc3lzLT5tYm94LnVzZWQpKTsKKysgIExXSVBfUExBVEZPUk1fRElBRygoIm1ib3gubWF4OiAgJSJVMzJfRiJcblx0IiwgKHUzMl90KXN5cy0+bWJveC5tYXgpKTsKKysgIExXSVBfUExBVEZPUk1fRElBRygoIm1ib3guZXJyOiAgJSJVMzJfRiJcblx0IiwgKHUzMl90KXN5cy0+bWJveC5lcnIpKTsKKyt9CisrI2VuZGlmIC8qIFNZU19TVEFUUyAqLworKworK3ZvaWQKKytzdGF0c19kaXNwbGF5KHZvaWQpCisreworKyAgczE2X3QgaTsKKysKKysgIExJTktfU1RBVFNfRElTUExBWSgpOworKyAgRVRIQVJQX1NUQVRTX0RJU1BMQVkoKTsKKysgIElQRlJBR19TVEFUU19ESVNQTEFZKCk7CisrICBJUF9TVEFUU19ESVNQTEFZKCk7CisrICBJR01QX1NUQVRTX0RJU1BMQVkoKTsKKysgIElDTVBfU1RBVFNfRElTUExBWSgpOworKyAgVURQX1NUQVRTX0RJU1BMQVkoKTsKKysgIFRDUF9TVEFUU19ESVNQTEFZKCk7CisrICBNRU1fU1RBVFNfRElTUExBWSgpOworICAgZm9yIChpID0gMDsgaSA8IE1FTVBfTUFYOyBpKyspIHsKKy0gICAgc3RhdHNfZGlzcGxheV9tZW0oJmx3aXBfc3RhdHMubWVtcFtpXSwgbWVtcF9uYW1lc1tpXSk7CisrICAgIE1FTVBfU1RBVFNfRElTUExBWShpKTsKKyAgIH0KKy0jZW5kaWYKKysgIFNZU19TVEFUU19ESVNQTEFZKCk7CisgfQorICNlbmRpZiAvKiBMV0lQX1NUQVRTX0RJU1BMQVkgKi8KKworSW5kZXg6IHNyYy9jb3JlL3N5cy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSQ1MgZmlsZTogL3NvdXJjZXMvbHdpcC9sd2lwL3NyYy9jb3JlL3N5cy5jLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4zMgorcmV0cmlldmluZyByZXZpc2lvbiAxLjMzCitkaWZmIC11IC1wIC1yMS4zMiAtcjEuMzMKKy0tLSBhL3NyYy9jb3JlL3N5cy5jCTI1IE5vdiAyMDA3IDEzOjU3OjA1IC0wMDAwCTEuMzIKKysrKyBiL3NyYy9jb3JlL3N5cy5jCTE2IEp1bCAyMDA4IDIwOjM2OjEyIC0wMDAwCTEuMzMKK0BAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBzc3d0X2NiCisgdm9pZAorIHN5c19tYm94X2ZldGNoKHN5c19tYm94X3QgbWJveCwgdm9pZCAqKm1zZykKKyB7CistICB1MzJfdCB0aW1lOworKyAgdTMyX3QgdGltZV9uZWVkZWQ7CisgICBzdHJ1Y3Qgc3lzX3RpbWVvdXRzICp0aW1lb3V0czsKKyAgIHN0cnVjdCBzeXNfdGltZW8gKnRtcHRpbWVvdXQ7CisgICBzeXNfdGltZW91dF9oYW5kbGVyIGg7CitAQCAtNzYsMTggKzc2LDE4IEBAIHN5c19tYm94X2ZldGNoKHN5c19tYm94X3QgbWJveCwgdm9pZCAqKm0KKworICAgaWYgKCF0aW1lb3V0cyB8fCAhdGltZW91dHMtPm5leHQpIHsKKyAgICAgVU5MT0NLX1RDUElQX0NPUkUoKTsKKy0gICAgdGltZSA9IHN5c19hcmNoX21ib3hfZmV0Y2gobWJveCwgbXNnLCAwKTsKKysgICAgdGltZV9uZWVkZWQgPSBzeXNfYXJjaF9tYm94X2ZldGNoKG1ib3gsIG1zZywgMCk7CisgICAgIExPQ0tfVENQSVBfQ09SRSgpOworICAgfSBlbHNlIHsKKyAgICAgaWYgKHRpbWVvdXRzLT5uZXh0LT50aW1lID4gMCkgeworICAgICAgIFVOTE9DS19UQ1BJUF9DT1JFKCk7CistICAgICAgdGltZSA9IHN5c19hcmNoX21ib3hfZmV0Y2gobWJveCwgbXNnLCB0aW1lb3V0cy0+bmV4dC0+dGltZSk7CisrICAgICAgdGltZV9uZWVkZWQgPSBzeXNfYXJjaF9tYm94X2ZldGNoKG1ib3gsIG1zZywgdGltZW91dHMtPm5leHQtPnRpbWUpOworICAgICAgIExPQ0tfVENQSVBfQ09SRSgpOworICAgICB9IGVsc2UgeworLSAgICAgIHRpbWUgPSBTWVNfQVJDSF9USU1FT1VUOworKyAgICAgIHRpbWVfbmVlZGVkID0gU1lTX0FSQ0hfVElNRU9VVDsKKyAgICAgfQorCistICAgIGlmICh0aW1lID09IFNZU19BUkNIX1RJTUVPVVQpIHsKKysgICAgaWYgKHRpbWVfbmVlZGVkID09IFNZU19BUkNIX1RJTUVPVVQpIHsKKyAgICAgICAvKiBJZiB0aW1lID09IFNZU19BUkNIX1RJTUVPVVQsIGEgdGltZW91dCBvY2N1cmVkIGJlZm9yZSBhIG1lc3NhZ2UKKyAgICAgICAgICBjb3VsZCBiZSBmZXRjaGVkLiBXZSBzaG91bGQgbm93IGNhbGwgdGhlIHRpbWVvdXQgaGFuZGxlciBhbmQKKyAgICAgICAgICBkZWFsbG9jYXRlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUgdGltZW91dC4gKi8KK0BAIC0xMDcsOCArMTA3LDggQEAgc3lzX21ib3hfZmV0Y2goc3lzX21ib3hfdCBtYm94LCB2b2lkICoqbQorICAgICAgIC8qIElmIHRpbWUgIT0gU1lTX0FSQ0hfVElNRU9VVCwgYSBtZXNzYWdlIHdhcyByZWNlaXZlZCBiZWZvcmUgdGhlIHRpbWVvdXQKKyAgICAgICAgICBvY2N1cmVkLiBUaGUgdGltZSB2YXJpYWJsZSBpcyBzZXQgdG8gdGhlIG51bWJlciBvZgorICAgICAgICAgIG1pbGxpc2Vjb25kcyB3ZSB3YWl0ZWQgZm9yIHRoZSBtZXNzYWdlLiAqLworLSAgICAgIGlmICh0aW1lIDwgdGltZW91dHMtPm5leHQtPnRpbWUpIHsKKy0gICAgICAgIHRpbWVvdXRzLT5uZXh0LT50aW1lIC09IHRpbWU7CisrICAgICAgaWYgKHRpbWVfbmVlZGVkIDwgdGltZW91dHMtPm5leHQtPnRpbWUpIHsKKysgICAgICAgIHRpbWVvdXRzLT5uZXh0LT50aW1lIC09IHRpbWVfbmVlZGVkOworICAgICAgIH0gZWxzZSB7CisgICAgICAgICB0aW1lb3V0cy0+bmV4dC0+dGltZSA9IDA7CisgICAgICAgfQorQEAgLTEyNSw3ICsxMjUsNyBAQCBzeXNfbWJveF9mZXRjaChzeXNfbWJveF90IG1ib3gsIHZvaWQgKiptCisgdm9pZAorIHN5c19zZW1fd2FpdChzeXNfc2VtX3Qgc2VtKQorIHsKKy0gIHUzMl90IHRpbWU7CisrICB1MzJfdCB0aW1lX25lZWRlZDsKKyAgIHN0cnVjdCBzeXNfdGltZW91dHMgKnRpbWVvdXRzOworICAgc3RydWN0IHN5c190aW1lbyAqdG1wdGltZW91dDsKKyAgIHN5c190aW1lb3V0X2hhbmRsZXIgaDsKK0BAIC0xMzksMTIgKzEzOSwxMiBAQCBzeXNfc2VtX3dhaXQoc3lzX3NlbV90IHNlbSkKKyAgICAgc3lzX2FyY2hfc2VtX3dhaXQoc2VtLCAwKTsKKyAgIH0gZWxzZSB7CisgICAgIGlmICh0aW1lb3V0cy0+bmV4dC0+dGltZSA+IDApIHsKKy0gICAgICB0aW1lID0gc3lzX2FyY2hfc2VtX3dhaXQoc2VtLCB0aW1lb3V0cy0+bmV4dC0+dGltZSk7CisrICAgICAgdGltZV9uZWVkZWQgPSBzeXNfYXJjaF9zZW1fd2FpdChzZW0sIHRpbWVvdXRzLT5uZXh0LT50aW1lKTsKKyAgICAgfSBlbHNlIHsKKy0gICAgICB0aW1lID0gU1lTX0FSQ0hfVElNRU9VVDsKKysgICAgICB0aW1lX25lZWRlZCA9IFNZU19BUkNIX1RJTUVPVVQ7CisgICAgIH0KKworLSAgICBpZiAodGltZSA9PSBTWVNfQVJDSF9USU1FT1VUKSB7CisrICAgIGlmICh0aW1lX25lZWRlZCA9PSBTWVNfQVJDSF9USU1FT1VUKSB7CisgICAgICAgLyogSWYgdGltZSA9PSBTWVNfQVJDSF9USU1FT1VULCBhIHRpbWVvdXQgb2NjdXJlZCBiZWZvcmUgYSBtZXNzYWdlCisgICAgICAgICBjb3VsZCBiZSBmZXRjaGVkLiBXZSBzaG91bGQgbm93IGNhbGwgdGhlIHRpbWVvdXQgaGFuZGxlciBhbmQKKyAgICAgICAgIGRlYWxsb2NhdGUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHRoZSB0aW1lb3V0LiAqLworQEAgLTE2NCw4ICsxNjQsOCBAQCBzeXNfc2VtX3dhaXQoc3lzX3NlbV90IHNlbSkKKyAgICAgICAvKiBJZiB0aW1lICE9IFNZU19BUkNIX1RJTUVPVVQsIGEgbWVzc2FnZSB3YXMgcmVjZWl2ZWQgYmVmb3JlIHRoZSB0aW1lb3V0CisgICAgICAgICAgb2NjdXJlZC4gVGhlIHRpbWUgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSBudW1iZXIgb2YKKyAgICAgICAgICBtaWxsaXNlY29uZHMgd2Ugd2FpdGVkIGZvciB0aGUgbWVzc2FnZS4gKi8KKy0gICAgICBpZiAodGltZSA8IHRpbWVvdXRzLT5uZXh0LT50aW1lKSB7CistICAgICAgICB0aW1lb3V0cy0+bmV4dC0+dGltZSAtPSB0aW1lOworKyAgICAgIGlmICh0aW1lX25lZWRlZCA8IHRpbWVvdXRzLT5uZXh0LT50aW1lKSB7CisrICAgICAgICB0aW1lb3V0cy0+bmV4dC0+dGltZSAtPSB0aW1lX25lZWRlZDsKKyAgICAgICB9IGVsc2UgeworICAgICAgICAgdGltZW91dHMtPm5leHQtPnRpbWUgPSAwOworICAgICAgIH0KK0luZGV4OiBzcmMvY29yZS90Y3AuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvY29yZS90Y3AuYyx2CityZXRyaWV2aW5nIHJldmlzaW9uIDEuODUKK3JldHJpZXZpbmcgcmV2aXNpb24gMS44NgorZGlmZiAtdSAtcCAtcjEuODUgLXIxLjg2CistLS0gYS9zcmMvY29yZS90Y3AuYwkyMiBKYW4gMjAwOCAyMToxNToxNSAtMDAwMAkxLjg1CisrKysgYi9zcmMvY29yZS90Y3AuYwkyNiBNYXIgMjAwOCAxMTo1NzoxMyAtMDAwMAkxLjg2CitAQCAtNTA5LDcgKzUwOSw4IEBAIHRjcF9jb25uZWN0KHN0cnVjdCB0Y3BfcGNiICpwY2IsIHN0cnVjdAorICAgcGNiLT5yY3Zfd25kID0gVENQX1dORDsKKyAgIHBjYi0+cmN2X2Fubl93bmQgPSBUQ1BfV05EOworICAgcGNiLT5zbmRfd25kID0gVENQX1dORDsKKy0gIC8qIFRoZSBzZW5kIE1TUyBpcyB1cGRhdGVkIHdoZW4gYW4gTVNTIG9wdGlvbiBpcyByZWNlaXZlZC4gKi8KKysgIC8qIEFzIGluaXRpYWwgc2VuZCBNU1MsIHdlIHVzZSBUQ1BfTVNTIGJ1dCBsaW1pdCBpdCB0byA1MzYuCisrICAgICBUaGUgc2VuZCBNU1MgaXMgdXBkYXRlZCB3aGVuIGFuIE1TUyBvcHRpb24gaXMgcmVjZWl2ZWQuICovCisgICBwY2ItPm1zcyA9IChUQ1BfTVNTID4gNTM2KSA/IDUzNiA6IFRDUF9NU1M7CisgI2lmIFRDUF9DQUxDVUxBVEVfRUZGX1NFTkRfTVNTCisgICBwY2ItPm1zcyA9IHRjcF9lZmZfc2VuZF9tc3MocGNiLT5tc3MsIGlwYWRkcik7CitAQCAtOTkxLDcgKzk5Miw4IEBAIHRjcF9hbGxvYyh1OF90IHByaW8pCisgICAgIHBjYi0+cmN2X2Fubl93bmQgPSBUQ1BfV05EOworICAgICBwY2ItPnRvcyA9IDA7CisgICAgIHBjYi0+dHRsID0gVENQX1RUTDsKKy0gICAgLyogVGhlIHNlbmQgTVNTIGlzIHVwZGF0ZWQgd2hlbiBhbiBNU1Mgb3B0aW9uIGlzIHJlY2VpdmVkLiAqLworKyAgICAvKiBBcyBpbml0aWFsIHNlbmQgTVNTLCB3ZSB1c2UgVENQX01TUyBidXQgbGltaXQgaXQgdG8gNTM2LgorKyAgICAgICBUaGUgc2VuZCBNU1MgaXMgdXBkYXRlZCB3aGVuIGFuIE1TUyBvcHRpb24gaXMgcmVjZWl2ZWQuICovCisgICAgIHBjYi0+bXNzID0gKFRDUF9NU1MgPiA1MzYpID8gNTM2IDogVENQX01TUzsKKyAgICAgcGNiLT5ydG8gPSAzMDAwIC8gVENQX1NMT1dfSU5URVJWQUw7CisgICAgIHBjYi0+c2EgPSAwOworSW5kZXg6IHNyYy9jb3JlL3RjcF9pbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSQ1MgZmlsZTogL3NvdXJjZXMvbHdpcC9sd2lwL3NyYy9jb3JlL3RjcF9pbi5jLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS45NworcmV0cmlldmluZyByZXZpc2lvbiAxLjEwMAorZGlmZiAtdSAtcCAtcjEuOTcgLXIxLjEwMAorLS0tIGEvc3JjL2NvcmUvdGNwX2luLmMJMjIgSmFuIDIwMDggMjE6MTU6MTUgLTAwMDAJMS45NworKysrIGIvc3JjL2NvcmUvdGNwX2luLmMJMjQgSnVuIDIwMDggMTU6NDY6MzkgLTAwMDAJMS4xMDAKK0BAIC01MTEsNyArNTExLDcgQEAgdGNwX3Byb2Nlc3Moc3RydWN0IHRjcF9wY2IgKnBjYikKKyAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgaWYgKFRDUF9TRVFfQkVUV0VFTihzZXFubywgcGNiLT5yY3Zfbnh0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGNiLT5yY3Zfbnh0K3BjYi0+cmN2X2Fubl93bmQpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICBwY2ItPnJjdl9ueHQrcGNiLT5yY3Zfd25kKSkgeworICAgICAgICAgYWNjZXB0YWJsZSA9IDE7CisgICAgICAgfQorICAgICB9CitAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdGNwX3JlY2VpdmUoc3RydWN0IHRjcF9wY2IgKnBjYikKKyAgICAgICAgYW5kIGJlbG93IHJjdl9ueHQgKyByY3Zfd25kKSBpbiBvcmRlciB0byBiZSBmdXJ0aGVyCisgICAgICAgIHByb2Nlc3NlZC4gKi8KKyAgICAgaWYgKFRDUF9TRVFfQkVUV0VFTihzZXFubywgcGNiLT5yY3Zfbnh0LAorLSAgICAgICAgICAgICAgICAgICAgICAgIHBjYi0+cmN2X254dCArIHBjYi0+cmN2X2Fubl93bmQgLSAxKSl7CisrICAgICAgICAgICAgICAgICAgICAgICAgcGNiLT5yY3Zfbnh0ICsgcGNiLT5yY3Zfd25kIC0gMSkpeworICAgICAgIGlmIChwY2ItPnJjdl9ueHQgPT0gc2Vxbm8pIHsKKyAgICAgICAgIGFjY2VwdGVkX2luc2VxID0gMTsKKyAgICAgICAgIC8qIFRoZSBpbmNvbWluZyBzZWdtZW50IGlzIHRoZSBuZXh0IGluIHNlcXVlbmNlLiBXZSBjaGVjayBpZgorQEAgLTExOTUsMTQgKzExOTUsMTQgQEAgdGNwX3JlY2VpdmUoc3RydWN0IHRjcF9wY2IgKnBjYikKKyAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgcGNiLT5vb3NlcSA9IGNzZWc7CisgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIHRjcF9zZWdfZnJlZShuZXh0KTsKKy0gICAgICAgICAgICAgICAgaWYgKGNzZWctPm5leHQgIT0gTlVMTCkgeworLSAgICAgICAgICAgICAgICAgIG5leHQgPSBjc2VnLT5uZXh0OworLSAgICAgICAgICAgICAgICAgIGlmIChUQ1BfU0VRX0dUKHNlcW5vICsgY3NlZy0+bGVuLCBuZXh0LT50Y3BoZHItPnNlcW5vKSkgeworLSAgICAgICAgICAgICAgICAgICAgLyogV2UgbmVlZCB0byB0cmltIHRoZSBpbmNvbWluZyBzZWdtZW50LiAqLworLSAgICAgICAgICAgICAgICAgICAgY3NlZy0+bGVuID0gKHUxNl90KShuZXh0LT50Y3BoZHItPnNlcW5vIC0gc2Vxbm8pOworLSAgICAgICAgICAgICAgICAgICAgcGJ1Zl9yZWFsbG9jKGNzZWctPnAsIGNzZWctPmxlbik7CisrICAgICAgICAgICAgICAgICAgdGNwX3NlZ19mcmVlKG5leHQpOworKyAgICAgICAgICAgICAgICAgIGlmIChjc2VnLT5uZXh0ICE9IE5VTEwpIHsKKysgICAgICAgICAgICAgICAgICAgIG5leHQgPSBjc2VnLT5uZXh0OworKyAgICAgICAgICAgICAgICAgICAgaWYgKFRDUF9TRVFfR1Qoc2Vxbm8gKyBjc2VnLT5sZW4sIG5leHQtPnRjcGhkci0+c2Vxbm8pKSB7CisrICAgICAgICAgICAgICAgICAgICAgIC8qIFdlIG5lZWQgdG8gdHJpbSB0aGUgaW5jb21pbmcgc2VnbWVudC4gKi8KKysgICAgICAgICAgICAgICAgICAgICAgY3NlZy0+bGVuID0gKHUxNl90KShuZXh0LT50Y3BoZHItPnNlcW5vIC0gc2Vxbm8pOworKyAgICAgICAgICAgICAgICAgICAgICBwYnVmX3JlYWxsb2MoY3NlZy0+cCwgY3NlZy0+bGVuKTsKKysgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgYnJlYWs7CitAQCAtMTI4MiwxMCArMTI4Miw3IEBAIHRjcF9yZWNlaXZlKHN0cnVjdCB0Y3BfcGNiICpwY2IpCisKKyAgICAgICB9CisgICAgIH0gZWxzZSB7CistICAgICAgaWYoIVRDUF9TRVFfQkVUV0VFTihzZXFubywgcGNiLT5yY3Zfbnh0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGNiLT5yY3Zfbnh0ICsgcGNiLT5yY3ZfYW5uX3duZC0xKSl7CistICAgICAgICB0Y3BfYWNrX25vdyhwY2IpOworLSAgICAgIH0KKysgICAgICB0Y3BfYWNrX25vdyhwY2IpOworICAgICB9CisgICB9IGVsc2UgeworICAgICAvKiBTZWdtZW50cyB3aXRoIGxlbmd0aCAwIGlzIHRha2VuIGNhcmUgb2YgaGVyZS4gU2VnbWVudHMgdGhhdAorQEAgLTEzMzEsNyArMTMyOCw4IEBAIHRjcF9wYXJzZW9wdChzdHJ1Y3QgdGNwX3BjYiAqcGNiKQorICAgICAgICAgb3B0c1tjICsgMV0gPT0gMHgwNCkgeworICAgICAgICAgLyogQW4gTVNTIG9wdGlvbiB3aXRoIHRoZSByaWdodCBvcHRpb24gbGVuZ3RoLiAqLworICAgICAgICAgbXNzID0gKG9wdHNbYyArIDJdIDw8IDgpIHwgb3B0c1tjICsgM107CistICAgICAgICBwY2ItPm1zcyA9IG1zcyA+IFRDUF9NU1M/IFRDUF9NU1M6IG1zczsKKysgICAgICAgIC8qIExpbWl0IHRoZSBtc3MgdG8gdGhlIGNvbmZpZ3VyZWQgVENQX01TUyBhbmQgcHJldmVudCBkaXZpc2lvbiBieSB6ZXJvICovCisrICAgICAgICBwY2ItPm1zcyA9ICgobXNzID4gVENQX01TUykgfHwgKG1zcyA9PSAwKSkgPyBUQ1BfTVNTIDogbXNzOworCisgICAgICAgICAvKiBBbmQgd2UgYXJlIGRvbmUgcHJvY2Vzc2luZyBvcHRpb25zLiAqLworICAgICAgICAgYnJlYWs7CitJbmRleDogc3JjL2NvcmUvaXB2NC9hdXRvaXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvY29yZS9pcHY0L2F1dG9pcC5jLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4xNgorcmV0cmlldmluZyByZXZpc2lvbiAxLjE3CitkaWZmIC11IC1wIC1yMS4xNiAtcjEuMTcKKy0tLSBhL3NyYy9jb3JlL2lwdjQvYXV0b2lwLmMJMjYgSmFuIDIwMDggMTY6MTE6NDAgLTAwMDAJMS4xNgorKysrIGIvc3JjL2NvcmUvaXB2NC9hdXRvaXAuYwkxNyBKdW4gMjAwOCAyMDoxNjoyMyAtMDAwMAkxLjE3CitAQCAtMzk1LDggKzM5NSw4IEBAIGF1dG9pcF9hcnBfcmVwbHkoc3RydWN0IG5ldGlmICpuZXRpZiwgc3QKKyAgICAgLyogQ29weSBzdHJ1Y3QgaXBfYWRkcjIgdG8gYWxpZ25lZCBpcF9hZGRyLCB0byBzdXBwb3J0IGNvbXBpbGVycyB3aXRob3V0CisgICAgICAqIHN0cnVjdHVyZSBwYWNraW5nIChub3QgdXNpbmcgc3RydWN0dXJlIGNvcHkgd2hpY2ggYnJlYWtzIHN0cmljdC1hbGlhc2luZyBydWxlcykuCisgICAgICAqLworLSAgICBNRU1DUFkoJnNpcGFkZHIsICZoZHItPnNpcGFkZHIsIHNpemVvZihzaXBhZGRyKSk7CistICAgIE1FTUNQWSgmZGlwYWRkciwgJmhkci0+ZGlwYWRkciwgc2l6ZW9mKGRpcGFkZHIpKTsKKysgICAgU01FTUNQWSgmc2lwYWRkciwgJmhkci0+c2lwYWRkciwgc2l6ZW9mKHNpcGFkZHIpKTsKKysgICAgU01FTUNQWSgmZGlwYWRkciwgJmhkci0+ZGlwYWRkciwgc2l6ZW9mKGRpcGFkZHIpKTsKKworICAgICBpZiAoKG5ldGlmLT5hdXRvaXAtPnN0YXRlID09IEFVVE9JUF9TVEFURV9QUk9CSU5HKSB8fAorICAgICAgICAgKChuZXRpZi0+YXV0b2lwLT5zdGF0ZSA9PSBBVVRPSVBfU1RBVEVfQU5OT1VOQ0lORykgJiYKK0luZGV4OiBzcmMvY29yZS9pcHY0L2luZXRfY2hrc3VtLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1JDUyBmaWxlOiAvc291cmNlcy9sd2lwL2x3aXAvc3JjL2NvcmUvaXB2NC9pbmV0X2Noa3N1bS5jLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS40CityZXRyaWV2aW5nIHJldmlzaW9uIDEuNQorZGlmZiAtdSAtcCAtcjEuNCAtcjEuNQorLS0tIGEvc3JjL2NvcmUvaXB2NC9pbmV0X2Noa3N1bS5jCTEwIE1hciAyMDA4IDE2OjEyOjMxIC0wMDAwCTEuNAorKysrIGIvc3JjL2NvcmUvaXB2NC9pbmV0X2Noa3N1bS5jCTE3IEp1biAyMDA4IDIwOjA2OjI1IC0wMDAwCTEuNQorQEAgLTQxLDggKzQxLDYgQEAKKyAjaW5jbHVkZSAibHdpcC9pbmV0X2Noa3N1bS5oIgorICNpbmNsdWRlICJsd2lwL2luZXQuaCIKKworLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0KKyAvKiBUaGVzZSBhcmUgc29tZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBjaGVja3N1bSBhbGdvcml0aG0sIHdpdGggdGhlCisgICogYWltIG9mIGJlaW5nIHNpbXBsZSwgY29ycmVjdCBhbmQgZnVsbHkgcG9ydGFibGUuIENoZWNrc3VtbWluZyBpcyB0aGUKKyAgKiBmaXJzdCB0aGluZyB5b3Ugd291bGQgd2FudCB0byBvcHRpbWl6ZSBmb3IgeW91ciBwbGF0Zm9ybS4gSWYgeW91IGNyZWF0ZQorQEAgLTY1LDYgKzYzLDExIEBACisgIyBkZWZpbmUgTFdJUF9DSEtTVU1fQUxHT1JJVEhNIDAKKyAjZW5kaWYKKworKy8qKiBMaWtlIHRoZSBuYW1lIHNheXMuLi4gKi8KKysjZGVmaW5lIFNXQVBfQllURVNfSU5fV09SRCh3KSAoKHcgJiAweGZmKSA8PCA4KSB8ICgodyAmIDB4ZmYwMCkgPj4gOCkKKysvKiogU3BsaXQgYW4gdTMyX3QgaW4gdHdvIHUxNl90cyBhbmQgYWRkIHRoZW0gdXAgKi8KKysjZGVmaW5lIEZPTERfVTMyVCh1KSAgICAgICAgICAoKHUgPj4gMTYpICsgKHUgJiAweDAwMDBmZmZmVUwpKQorKworICNpZiAoTFdJUF9DSEtTVU1fQUxHT1JJVEhNID09IDEpIC8qIFZlcnNpb24gIzEgKi8KKyAvKioKKyAgKiBsd2lwIGNoZWNrc3VtCitAQCAtODYsOCArODksNyBAQCBsd2lwX3N0YW5kYXJkX2Noa3N1bSh2b2lkICpkYXRhcHRyLCB1MTZfCisgICBhY2MgPSAwOworICAgLyogZGF0YXB0ciBtYXkgYmUgYXQgb2RkIG9yIGV2ZW4gYWRkcmVzc2VzICovCisgICBvY3RldHB0ciA9ICh1OF90KilkYXRhcHRyOworLSAgd2hpbGUgKGxlbiA+IDEpCistICB7CisrICB3aGlsZSAobGVuID4gMSkgeworICAgICAvKiBkZWNsYXJlIGZpcnN0IG9jdGV0IGFzIG1vc3Qgc2lnbmlmaWNhbnQKKyAgICAgICAgdGh1cyBhc3N1bWUgbmV0d29yayBvcmRlciwgaWdub3JpbmcgaG9zdCBvcmRlciAqLworICAgICBzcmMgPSAoKm9jdGV0cHRyKSA8PCA4OworQEAgLTk4LDggKzEwMCw3IEBAIGx3aXBfc3RhbmRhcmRfY2hrc3VtKHZvaWQgKmRhdGFwdHIsIHUxNl8KKyAgICAgYWNjICs9IHNyYzsKKyAgICAgbGVuIC09IDI7CisgICB9CistICBpZiAobGVuID4gMCkKKy0gIHsKKysgIGlmIChsZW4gPiAwKSB7CisgICAgIC8qIGFjY3VtdWxhdGUgcmVtYWluaW5nIG9jdGV0ICovCisgICAgIHNyYyA9ICgqb2N0ZXRwdHIpIDw8IDg7CisgICAgIGFjYyArPSBzcmM7CitAQCAtMTU0LDE5ICsxNTUsMjIgQEAgbHdpcF9zdGFuZGFyZF9jaGtzdW0odm9pZCAqZGF0YXB0ciwgaW50CisgICB9CisKKyAgIC8qIENvbnN1bWUgbGVmdC1vdmVyIGJ5dGUsIGlmIGFueSAqLworLSAgaWYgKGxlbiA+IDApCisrICBpZiAobGVuID4gMCkgeworICAgICAoKHU4X3QgKikmdClbMF0gPSAqKHU4X3QgKilwczs7CisrICB9CisKKyAgIC8qIEFkZCBlbmQgYnl0ZXMgKi8KKyAgIHN1bSArPSB0OworCistICAvKiAgRm9sZCAzMi1iaXQgc3VtIHRvIDE2IGJpdHMgKi8KKy0gIHdoaWxlICgoc3VtID4+IDE2KSAhPSAwKQorLSAgICBzdW0gPSAoc3VtICYgMHhmZmZmKSArIChzdW0gPj4gMTYpOworKyAgLyogRm9sZCAzMi1iaXQgc3VtIHRvIDE2IGJpdHMKKysgICAgIGNhbGxpbmcgdGhpcyB0d2ljZSBpcyBwcm9wYWJseSBmYXN0ZXIgdGhhbiBpZiBzdGF0ZW1lbnRzLi4uICovCisrICBzdW0gPSBGT0xEX1UzMlQoc3VtKTsKKysgIHN1bSA9IEZPTERfVTMyVChzdW0pOworCisgICAvKiBTd2FwIGlmIGFsaWdubWVudCB3YXMgb2RkICovCistICBpZiAob2RkKQorLSAgICBzdW0gPSAoKHN1bSAmIDB4ZmYpIDw8IDgpIHwgKChzdW0gJiAweGZmMDApID4+IDgpOworKyAgaWYgKG9kZCkgeworKyAgICBzdW0gPSBTV0FQX0JZVEVTX0lOX1dPUkQoc3VtKTsKKysgIH0KKworICAgcmV0dXJuIHN1bTsKKyB9CitAQCAtMjExLDE4ICsyMTUsMjAgQEAgbHdpcF9zdGFuZGFyZF9jaGtzdW0odm9pZCAqZGF0YXB0ciwgaW50CisKKyAgIHdoaWxlIChsZW4gPiA3KSAgeworICAgICB0bXAgPSBzdW0gKyAqcGwrKzsgICAgICAgICAgLyogcGluZyAqLworLSAgICBpZiAodG1wIDwgc3VtKQorKyAgICBpZiAodG1wIDwgc3VtKSB7CisgICAgICAgdG1wKys7ICAgICAgICAgICAgICAgICAgICAvKiBhZGQgYmFjayBjYXJyeSAqLworKyAgICB9CisKKyAgICAgc3VtID0gdG1wICsgKnBsKys7ICAgICAgICAgIC8qIHBvbmcgKi8KKy0gICAgaWYgKHN1bSA8IHRtcCkKKysgICAgaWYgKHN1bSA8IHRtcCkgeworICAgICAgIHN1bSsrOyAgICAgICAgICAgICAgICAgICAgLyogYWRkIGJhY2sgY2FycnkgKi8KKysgICAgfQorCisgICAgIGxlbiAtPSA4OworICAgfQorCisgICAvKiBtYWtlIHJvb20gaW4gdXBwZXIgYml0cyAqLworLSAgc3VtID0gKHN1bSA+PiAxNikgKyAoc3VtICYgMHhmZmZmKTsKKysgIHN1bSA9IEZPTERfVTMyVChzdW0pOworCisgICBwcyA9ICh1MTZfdCAqKXBsOworCitAQCAtMjMzLDE2ICsyMzksMjAgQEAgbHdpcF9zdGFuZGFyZF9jaGtzdW0odm9pZCAqZGF0YXB0ciwgaW50CisgICB9CisKKyAgIC8qIGRhbmdsaW5nIHRhaWwgYnl0ZSByZW1haW5pbmc/ICovCistICBpZiAobGVuID4gMCkgICAgICAgICAgICAgICAgICAvKiBpbmNsdWRlIG9kZCBieXRlICovCisrICBpZiAobGVuID4gMCkgeyAgICAgICAgICAgICAgICAvKiBpbmNsdWRlIG9kZCBieXRlICovCisgICAgICgodThfdCAqKSZ0KVswXSA9ICoodThfdCAqKXBzOworKyAgfQorCisgICBzdW0gKz0gdDsgICAgICAgICAgICAgICAgICAgICAvKiBhZGQgZW5kIGJ5dGVzICovCisKKy0gIHdoaWxlICgoc3VtID4+IDE2KSAhPSAwKSAgICAgIC8qIGNvbWJpbmUgaGFsdmVzICovCistICAgIHN1bSA9IChzdW0gPj4gMTYpICsgKHN1bSAmIDB4ZmZmZik7CisrICAvKiBGb2xkIDMyLWJpdCBzdW0gdG8gMTYgYml0cworKyAgICAgY2FsbGluZyB0aGlzIHR3aWNlIGlzIHByb3BhYmx5IGZhc3RlciB0aGFuIGlmIHN0YXRlbWVudHMuLi4gKi8KKysgIHN1bSA9IEZPTERfVTMyVChzdW0pOworKyAgc3VtID0gRk9MRF9VMzJUKHN1bSk7CisKKy0gIGlmIChvZGQpCistICAgIHN1bSA9ICgoc3VtICYgMHhmZikgPDwgOCkgfCAoKHN1bSAmIDB4ZmYwMCkgPj4gOCk7CisrICBpZiAob2RkKSB7CisrICAgIHN1bSA9IFNXQVBfQllURVNfSU5fV09SRChzdW0pOworKyAgfQorCisgICByZXR1cm4gc3VtOworIH0KK0BAIC0yNzcsMTggKzI4NywxOCBAQCBpbmV0X2Noa3N1bV9wc2V1ZG8oc3RydWN0IHBidWYgKnAsCisgICAgICAgKHZvaWQgKilxLCAodm9pZCAqKXEtPm5leHQpKTsKKyAgICAgYWNjICs9IExXSVBfQ0hLU1VNKHEtPnBheWxvYWQsIHEtPmxlbik7CisgICAgIC8qTFdJUF9ERUJVR0YoSU5FVF9ERUJVRywgKCJpbmV0X2Noa3N1bV9wc2V1ZG8oKTogdW53cmFwcGVkIGx3aXBfY2hrc3VtKCk9JSJYMzJfRiIgXG4iLCBhY2MpKTsqLworLSAgICB3aGlsZSAoKGFjYyA+PiAxNikgIT0gMCkgeworLSAgICAgIGFjYyA9IChhY2MgJiAweGZmZmZVTCkgKyAoYWNjID4+IDE2KTsKKy0gICAgfQorKyAgICAvKiBqdXN0IGV4ZWN1dGluZyB0aGlzIG5leHQgbGluZSBpcyBwcm9iYWJseSBmYXN0ZXIgdGhhdCB0aGUgaWYgc3RhdGVtZW50IG5lZWRlZAorKyAgICAgICB0byBjaGVjayB3aGV0aGVyIHdlIHJlYWxseSBuZWVkIHRvIGV4ZWN1dGUgaXQsIGFuZCBkb2VzIG5vIGhhcm0gKi8KKysgICAgYWNjID0gRk9MRF9VMzJUKGFjYyk7CisgICAgIGlmIChxLT5sZW4gJSAyICE9IDApIHsKKyAgICAgICBzd2FwcGVkID0gMSAtIHN3YXBwZWQ7CistICAgICAgYWNjID0gKChhY2MgJiAweGZmKSA8PCA4KSB8ICgoYWNjICYgMHhmZjAwVUwpID4+IDgpOworKyAgICAgIGFjYyA9IFNXQVBfQllURVNfSU5fV09SRChhY2MpOworICAgICB9CisgICAgIC8qTFdJUF9ERUJVR0YoSU5FVF9ERUJVRywgKCJpbmV0X2Noa3N1bV9wc2V1ZG8oKTogd3JhcHBlZCBsd2lwX2Noa3N1bSgpPSUiWDMyX0YiIFxuIiwgYWNjKSk7Ki8KKyAgIH0KKworICAgaWYgKHN3YXBwZWQpIHsKKy0gICAgYWNjID0gKChhY2MgJiAweGZmKSA8PCA4KSB8ICgoYWNjICYgMHhmZjAwVUwpID4+IDgpOworKyAgICBhY2MgPSBTV0FQX0JZVEVTX0lOX1dPUkQoYWNjKTsKKyAgIH0KKyAgIGFjYyArPSAoc3JjLT5hZGRyICYgMHhmZmZmVUwpOworICAgYWNjICs9ICgoc3JjLT5hZGRyID4+IDE2KSAmIDB4ZmZmZlVMKTsKK0BAIC0yOTcsOSArMzA3LDEwIEBAIGluZXRfY2hrc3VtX3BzZXVkbyhzdHJ1Y3QgcGJ1ZiAqcCwKKyAgIGFjYyArPSAodTMyX3QpaHRvbnMoKHUxNl90KXByb3RvKTsKKyAgIGFjYyArPSAodTMyX3QpaHRvbnMocHJvdG9fbGVuKTsKKworLSAgd2hpbGUgKChhY2MgPj4gMTYpICE9IDApIHsKKy0gICAgYWNjID0gKGFjYyAmIDB4ZmZmZlVMKSArIChhY2MgPj4gMTYpOworLSAgfQorKyAgLyogRm9sZCAzMi1iaXQgc3VtIHRvIDE2IGJpdHMKKysgICAgIGNhbGxpbmcgdGhpcyB0d2ljZSBpcyBwcm9wYWJseSBmYXN0ZXIgdGhhbiBpZiBzdGF0ZW1lbnRzLi4uICovCisrICBhY2MgPSBGT0xEX1UzMlQoYWNjKTsKKysgIGFjYyA9IEZPTERfVTMyVChhY2MpOworICAgTFdJUF9ERUJVR0YoSU5FVF9ERUJVRywgKCJpbmV0X2Noa3N1bV9wc2V1ZG8oKTogcGJ1ZiBjaGFpbiBsd2lwX2Noa3N1bSgpPSUiWDMyX0YiXG4iLCBhY2MpKTsKKyAgIHJldHVybiAodTE2X3QpfihhY2MgJiAweGZmZmZVTCk7CisgfQorQEAgLTM0MCwxOCArMzUxLDE3IEBAIGluZXRfY2hrc3VtX3BzZXVkb19wYXJ0aWFsKHN0cnVjdCBwYnVmICoKKyAgICAgY2hrc3VtX2xlbiAtPSBjaGtsZW47CisgICAgIExXSVBfQVNTRVJUKCJkZWxldGUgbWUiLCBjaGtzdW1fbGVuIDwgMHg3ZmZmKTsKKyAgICAgLypMV0lQX0RFQlVHRihJTkVUX0RFQlVHLCAoImluZXRfY2hrc3VtX3BzZXVkbygpOiB1bndyYXBwZWQgbHdpcF9jaGtzdW0oKT0lIlgzMl9GIiBcbiIsIGFjYykpOyovCistICAgIHdoaWxlICgoYWNjID4+IDE2KSAhPSAwKSB7CistICAgICAgYWNjID0gKGFjYyAmIDB4ZmZmZlVMKSArIChhY2MgPj4gMTYpOworLSAgICB9CisrICAgIC8qIGZvbGQgdGhlIHVwcGVyIGJpdCBkb3duICovCisrICAgIGFjYyA9IEZPTERfVTMyVChhY2MpOworICAgICBpZiAocS0+bGVuICUgMiAhPSAwKSB7CisgICAgICAgc3dhcHBlZCA9IDEgLSBzd2FwcGVkOworLSAgICAgIGFjYyA9ICgoYWNjICYgMHhmZikgPDwgOCkgfCAoKGFjYyAmIDB4ZmYwMFVMKSA+PiA4KTsKKysgICAgICBhY2MgPSBTV0FQX0JZVEVTX0lOX1dPUkQoYWNjKTsKKyAgICAgfQorICAgICAvKkxXSVBfREVCVUdGKElORVRfREVCVUcsICgiaW5ldF9jaGtzdW1fcHNldWRvKCk6IHdyYXBwZWQgbHdpcF9jaGtzdW0oKT0lIlgzMl9GIiBcbiIsIGFjYykpOyovCisgICB9CisKKyAgIGlmIChzd2FwcGVkKSB7CistICAgIGFjYyA9ICgoYWNjICYgMHhmZikgPDwgOCkgfCAoKGFjYyAmIDB4ZmYwMFVMKSA+PiA4KTsKKysgICAgYWNjID0gU1dBUF9CWVRFU19JTl9XT1JEKGFjYyk7CisgICB9CisgICBhY2MgKz0gKHNyYy0+YWRkciAmIDB4ZmZmZlVMKTsKKyAgIGFjYyArPSAoKHNyYy0+YWRkciA+PiAxNikgJiAweGZmZmZVTCk7CitAQCAtMzYwLDkgKzM3MCwxMCBAQCBpbmV0X2Noa3N1bV9wc2V1ZG9fcGFydGlhbChzdHJ1Y3QgcGJ1ZiAqCisgICBhY2MgKz0gKHUzMl90KWh0b25zKCh1MTZfdClwcm90byk7CisgICBhY2MgKz0gKHUzMl90KWh0b25zKHByb3RvX2xlbik7CisKKy0gIHdoaWxlICgoYWNjID4+IDE2KSAhPSAwKSB7CistICAgIGFjYyA9IChhY2MgJiAweGZmZmZVTCkgKyAoYWNjID4+IDE2KTsKKy0gIH0KKysgIC8qIEZvbGQgMzItYml0IHN1bSB0byAxNiBiaXRzCisrICAgICBjYWxsaW5nIHRoaXMgdHdpY2UgaXMgcHJvcGFibHkgZmFzdGVyIHRoYW4gaWYgc3RhdGVtZW50cy4uLiAqLworKyAgYWNjID0gRk9MRF9VMzJUKGFjYyk7CisrICBhY2MgPSBGT0xEX1UzMlQoYWNjKTsKKyAgIExXSVBfREVCVUdGKElORVRfREVCVUcsICgiaW5ldF9jaGtzdW1fcHNldWRvKCk6IHBidWYgY2hhaW4gbHdpcF9jaGtzdW0oKT0lIlgzMl9GIlxuIiwgYWNjKSk7CisgICByZXR1cm4gKHUxNl90KX4oYWNjICYgMHhmZmZmVUwpOworIH0KK0BAIC0zODAsMTMgKzM5MSw3IEBAIGluZXRfY2hrc3VtX3BzZXVkb19wYXJ0aWFsKHN0cnVjdCBwYnVmICoKKyB1MTZfdAorIGluZXRfY2hrc3VtKHZvaWQgKmRhdGFwdHIsIHUxNl90IGxlbikKKyB7CistICB1MzJfdCBhY2M7CistCistICBhY2MgPSBMV0lQX0NIS1NVTShkYXRhcHRyLCBsZW4pOworLSAgd2hpbGUgKChhY2MgPj4gMTYpICE9IDApIHsKKy0gICAgYWNjID0gKGFjYyAmIDB4ZmZmZikgKyAoYWNjID4+IDE2KTsKKy0gIH0KKy0gIHJldHVybiAodTE2X3QpfihhY2MgJiAweGZmZmYpOworKyAgcmV0dXJuIH5MV0lQX0NIS1NVTShkYXRhcHRyLCBsZW4pOworIH0KKworIC8qKgorQEAgLTQwNywxNyArNDEyLDE1IEBAIGluZXRfY2hrc3VtX3BidWYoc3RydWN0IHBidWYgKnApCisgICBzd2FwcGVkID0gMDsKKyAgIGZvcihxID0gcDsgcSAhPSBOVUxMOyBxID0gcS0+bmV4dCkgeworICAgICBhY2MgKz0gTFdJUF9DSEtTVU0ocS0+cGF5bG9hZCwgcS0+bGVuKTsKKy0gICAgd2hpbGUgKChhY2MgPj4gMTYpICE9IDApIHsKKy0gICAgICBhY2MgPSAoYWNjICYgMHhmZmZmVUwpICsgKGFjYyA+PiAxNik7CistICAgIH0KKysgICAgYWNjID0gRk9MRF9VMzJUKGFjYyk7CisgICAgIGlmIChxLT5sZW4gJSAyICE9IDApIHsKKyAgICAgICBzd2FwcGVkID0gMSAtIHN3YXBwZWQ7CistICAgICAgYWNjID0gKGFjYyAmIDB4MDBmZlVMIDw8IDgpIHwgKGFjYyAmIDB4ZmYwMFVMID4+IDgpOworKyAgICAgIGFjYyA9IFNXQVBfQllURVNfSU5fV09SRChhY2MpOworICAgICB9CisgICB9CisKKyAgIGlmIChzd2FwcGVkKSB7CistICAgIGFjYyA9ICgoYWNjICYgMHgwMGZmVUwpIDw8IDgpIHwgKChhY2MgJiAweGZmMDBVTCkgPj4gOCk7CisrICAgIGFjYyA9IFNXQVBfQllURVNfSU5fV09SRChhY2MpOworICAgfQorICAgcmV0dXJuICh1MTZfdCl+KGFjYyAmIDB4ZmZmZlVMKTsKKyB9CitJbmRleDogc3JjL2NvcmUvaXB2NC9pcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSQ1MgZmlsZTogL3NvdXJjZXMvbHdpcC9sd2lwL3NyYy9jb3JlL2lwdjQvaXAuYyx2CityZXRyaWV2aW5nIHJldmlzaW9uIDEuNjYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS42OAorZGlmZiAtdSAtcCAtcjEuNjYgLXIxLjY4CistLS0gYS9zcmMvY29yZS9pcHY0L2lwLmMJMTQgSmFuIDIwMDggMjA6NTM6MjMgLTAwMDAJMS42NgorKysrIGIvc3JjL2NvcmUvaXB2NC9pcC5jCTE3IEp1biAyMDA4IDE5OjM5OjIyIC0wMDAwCTEuNjgKK0BAIC01MzEsOSArNTMxLDE5IEBAIGlwX291dHB1dF9pZihzdHJ1Y3QgcGJ1ZiAqcCwgc3RydWN0IGlwX2EKKyAgIExXSVBfREVCVUdGKElQX0RFQlVHLCAoImlwX291dHB1dF9pZjogJWMlYyUiVTE2X0YiXG4iLCBuZXRpZi0+bmFtZVswXSwgbmV0aWYtPm5hbWVbMV0sIG5ldGlmLT5udW0pKTsKKyAgIGlwX2RlYnVnX3ByaW50KHApOworCistICBMV0lQX0RFQlVHRihJUF9ERUJVRywgKCJuZXRpZi0+b3V0cHV0KCkiKSk7CisrI2lmIChMV0lQX05FVElGX0xPT1BCQUNLIHx8IExXSVBfSEFWRV9MT09QSUYpCisrICBpZiAoaXBfYWRkcl9jbXAoZGVzdCwgJm5ldGlmLT5pcF9hZGRyKSkgeworKyAgICAvKiBQYWNrZXQgdG8gc2VsZiwgZW5xdWV1ZSBpdCBmb3IgbG9vcGJhY2sgKi8KKysgICAgTFdJUF9ERUJVR0YoSVBfREVCVUcsICgibmV0aWZfbG9vcF9vdXRwdXQoKSIpKTsKKysKKysgICAgcmV0dXJuIG5ldGlmX2xvb3Bfb3V0cHV0KG5ldGlmLCBwLCBkZXN0KTsKKysgIH0gZWxzZQorKyNlbmRpZiAvKiAoTFdJUF9ORVRJRl9MT09QQkFDSyB8fCBMV0lQX0hBVkVfTE9PUElGKSAqLworKyAgeworKyAgICBMV0lQX0RFQlVHRihJUF9ERUJVRywgKCJuZXRpZi0+b3V0cHV0KCkiKSk7CisKKy0gIHJldHVybiBuZXRpZi0+b3V0cHV0KG5ldGlmLCBwLCBkZXN0KTsKKysgICAgcmV0dXJuIG5ldGlmLT5vdXRwdXQobmV0aWYsIHAsIGRlc3QpOworKyAgfQorIH0KKworIC8qKgorSW5kZXg6IHNyYy9pbmNsdWRlL2x3aXAvZGVidWcuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvaW5jbHVkZS9sd2lwL2RlYnVnLmgsdgorcmV0cmlldmluZyByZXZpc2lvbiAxLjM3CityZXRyaWV2aW5nIHJldmlzaW9uIDEuMzkKK2RpZmYgLXUgLXAgLXIxLjM3IC1yMS4zOQorLS0tIGEvc3JjL2luY2x1ZGUvbHdpcC9kZWJ1Zy5oCTIyIFNlcCAyMDA3IDExOjE2OjA3IC0wMDAwCTEuMzcKKysrKyBiL3NyYy9pbmNsdWRlL2x3aXAvZGVidWcuaAkxNiBKdWwgMjAwOCAyMDozNjoyMiAtMDAwMAkxLjM5CitAQCAtNjEsMjYgKzYxLDI4IEBACisgI2RlZmluZSBMV0lQX0RCR19IQUxUICAgICAgICAgIDB4MDhVCisKKyAjaWZuZGVmIExXSVBfTk9BU1NFUlQKKy0jZGVmaW5lIExXSVBfQVNTRVJUKHgseSkgZG8geyBpZighKHkpKSBMV0lQX1BMQVRGT1JNX0FTU0VSVCh4KTsgfSB3aGlsZSgwKQorKyNkZWZpbmUgTFdJUF9BU1NFUlQobWVzc2FnZSwgYXNzZXJ0aW9uKSBkbyB7IGlmKCEoYXNzZXJ0aW9uKSkgXAorKyAgTFdJUF9QTEFURk9STV9BU1NFUlQobWVzc2FnZSk7IH0gd2hpbGUoMCkKKyAjZWxzZSAgLyogTFdJUF9OT0FTU0VSVCAqLworLSNkZWZpbmUgTFdJUF9BU1NFUlQoeCx5KQorKyNkZWZpbmUgTFdJUF9BU1NFUlQobWVzc2FnZSwgYXNzZXJ0aW9uKQorICNlbmRpZiAvKiBMV0lQX05PQVNTRVJUICovCisKKy0vKiogcHJpbnQgIm0iIG1lc3NhZ2Ugb25seSBpZiAiZSIgaXMgdHJ1ZSwgYW5kIGV4ZWN1dGUgImgiIGV4cHJlc3Npb24gKi8KKysvKiogaWYgImV4cHJlc3Npb24iIGlzbid0IHRydWUsIHRoZW4gcHJpbnQgIm1lc3NhZ2UiIGFuZCBleGVjdXRlICJoYW5kbGVyIiBleHByZXNzaW9uICovCisgI2lmbmRlZiBMV0lQX0VSUk9SCistI2RlZmluZSBMV0lQX0VSUk9SKG0sZSxoKSBkbyB7IGlmICghKGUpKSB7IExXSVBfUExBVEZPUk1fQVNTRVJUKG0pOyBoO319IHdoaWxlKDApCisrI2RlZmluZSBMV0lQX0VSUk9SKG1lc3NhZ2UsIGV4cHJlc3Npb24sIGhhbmRsZXIpIGRvIHsgaWYgKCEoZXhwcmVzc2lvbikpIHsgXAorKyAgTFdJUF9QTEFURk9STV9BU1NFUlQobWVzc2FnZSk7IGhhbmRsZXI7fX0gd2hpbGUoMCkKKyAjZW5kaWYgLyogTFdJUF9FUlJPUiAqLworCisgI2lmZGVmIExXSVBfREVCVUcKKyAvKiogcHJpbnQgZGVidWcgbWVzc2FnZSBvbmx5IGlmIGRlYnVnIG1lc3NhZ2UgdHlwZSBpcyBlbmFibGVkLi4uCisgICogIEFORCBpcyBvZiBjb3JyZWN0IHR5cGUgQU5EIGlzIGF0IGxlYXN0IExXSVBfREJHX0xFVkVMCisgICovCistI2RlZmluZSBMV0lQX0RFQlVHRihkZWJ1Zyx4KSBkbyB7IFwKKysjZGVmaW5lIExXSVBfREVCVUdGKGRlYnVnLCBtZXNzYWdlKSBkbyB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlYnVnKSAmIExXSVBfREJHX09OKSAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRlYnVnKSAmIExXSVBfREJHX1RZUEVTX09OKSAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHMxNl90KSgoZGVidWcpICYgTFdJUF9EQkdfTUFTS19MRVZFTCkgPj0gTFdJUF9EQkdfTUlOX0xFVkVMKSkgeyBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFdJUF9QTEFURk9STV9ESUFHKHgpOyBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFdJUF9QTEFURk9STV9ESUFHKG1lc3NhZ2UpOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChkZWJ1ZykgJiBMV0lQX0RCR19IQUxUKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKDEpOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBcCitAQCAtODgsNyArOTAsNyBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSgwKQorCisgI2Vsc2UgIC8qIExXSVBfREVCVUcgKi8KKy0jZGVmaW5lIExXSVBfREVCVUdGKGRlYnVnLHgpCisrI2RlZmluZSBMV0lQX0RFQlVHRihkZWJ1ZywgbWVzc2FnZSkKKyAjZW5kaWYgLyogTFdJUF9ERUJVRyAqLworCisgI2VuZGlmIC8qIF9fTFdJUF9ERUJVR19IX18gKi8KK0luZGV4OiBzcmMvaW5jbHVkZS9sd2lwL2Vyci5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSQ1MgZmlsZTogL3NvdXJjZXMvbHdpcC9sd2lwL3NyYy9pbmNsdWRlL2x3aXAvZXJyLmgsdgorcmV0cmlldmluZyByZXZpc2lvbiAxLjEzCityZXRyaWV2aW5nIHJldmlzaW9uIDEuMTUKK2RpZmYgLXUgLXAgLXIxLjEzIC1yMS4xNQorLS0tIGEvc3JjL2luY2x1ZGUvbHdpcC9lcnIuaAkxMyBEZWMgMjAwNyAyMzowNjo1MCAtMDAwMAkxLjEzCisrKysgYi9zcmMvaW5jbHVkZS9sd2lwL2Vyci5oCTE3IEp1biAyMDA4IDIwOjI3OjMyIC0wMDAwCTEuMTUKK0BAIC0zMywzNyArMzMsNDMgQEAKKyAjZGVmaW5lIF9fTFdJUF9FUlJfSF9fCisKKyAjaW5jbHVkZSAibHdpcC9vcHQuaCIKKysjaW5jbHVkZSAibHdpcC9hcmNoLmgiCisKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKKworLXR5cGVkZWYgczhfdCBlcnJfdDsKKysvKiogRGVmaW5lIExXSVBfRVJSX1QgaW4gY2MuaCBpZiB5b3Ugd2FudCB0byB1c2UKKysgKiAgYSBkaWZmZXJlbnQgdHlwZSBmb3IgeW91ciBwbGF0Zm9ybSAobXVzdCBiZSBzaWduZWQpLiAqLworKyNpZmRlZiBMV0lQX0VSUl9UCisrdHlwZWRlZiBMV0lQX0VSUl9UIGVycl90OworKyNlbHNlIC8qIExXSVBfRVJSX1QgKi8KKysgdHlwZWRlZiBzOF90IGVycl90OworKyNlbmRpZiAvKiBMV0lQX0VSUl9UKi8KKworIC8qIERlZmluaXRpb25zIGZvciBlcnJvciBjb25zdGFudHMuICovCisKKyAjZGVmaW5lIEVSUl9PSyAgICAgICAgICAwICAgIC8qIE5vIGVycm9yLCBldmVyeXRoaW5nIE9LLiAqLworICNkZWZpbmUgRVJSX01FTSAgICAgICAgLTEgICAgLyogT3V0IG9mIG1lbW9yeSBlcnJvci4gICAgICovCisgI2RlZmluZSBFUlJfQlVGICAgICAgICAtMiAgICAvKiBCdWZmZXIgZXJyb3IuICAgICAgICAgICAgKi8KKy0jZGVmaW5lIEVSUl9SVEUgICAgICAgIC0zICAgIC8qIFJvdXRpbmcgcHJvYmxlbS4gICAgICAgICAqLworKyNkZWZpbmUgRVJSX1RJTUVPVVQgICAgLTMgICAgLyogVGltZW91dC4gICAgICAgICAgICAgICAgICovCisrI2RlZmluZSBFUlJfUlRFICAgICAgICAtNCAgICAvKiBSb3V0aW5nIHByb2JsZW0uICAgICAgICAgKi8KKworICNkZWZpbmUgRVJSX0lTX0ZBVEFMKGUpICgoZSkgPCBFUlJfUlRFKQorCistI2RlZmluZSBFUlJfQUJSVCAgICAgICAtNCAgICAvKiBDb25uZWN0aW9uIGFib3J0ZWQuICAgICAgKi8KKy0jZGVmaW5lIEVSUl9SU1QgICAgICAgIC01ICAgIC8qIENvbm5lY3Rpb24gcmVzZXQuICAgICAgICAqLworLSNkZWZpbmUgRVJSX0NMU0QgICAgICAgLTYgICAgLyogQ29ubmVjdGlvbiBjbG9zZWQuICAgICAgICovCistI2RlZmluZSBFUlJfQ09OTiAgICAgICAtNyAgICAvKiBOb3QgY29ubmVjdGVkLiAgICAgICAgICAgKi8KKysjZGVmaW5lIEVSUl9BQlJUICAgICAgIC01ICAgIC8qIENvbm5lY3Rpb24gYWJvcnRlZC4gICAgICAqLworKyNkZWZpbmUgRVJSX1JTVCAgICAgICAgLTYgICAgLyogQ29ubmVjdGlvbiByZXNldC4gICAgICAgICovCisrI2RlZmluZSBFUlJfQ0xTRCAgICAgICAtNyAgICAvKiBDb25uZWN0aW9uIGNsb3NlZC4gICAgICAgKi8KKysjZGVmaW5lIEVSUl9DT05OICAgICAgIC04ICAgIC8qIE5vdCBjb25uZWN0ZWQuICAgICAgICAgICAqLworCistI2RlZmluZSBFUlJfVkFMICAgICAgICAtOCAgICAvKiBJbGxlZ2FsIHZhbHVlLiAgICAgICAgICAgKi8KKysjZGVmaW5lIEVSUl9WQUwgICAgICAgIC05ICAgIC8qIElsbGVnYWwgdmFsdWUuICAgICAgICAgICAqLworCistI2RlZmluZSBFUlJfQVJHICAgICAgICAtOSAgICAvKiBJbGxlZ2FsIGFyZ3VtZW50LiAgICAgICAgKi8KKysjZGVmaW5lIEVSUl9BUkcgICAgICAgIC0xMCAgIC8qIElsbGVnYWwgYXJndW1lbnQuICAgICAgICAqLworCistI2RlZmluZSBFUlJfVVNFICAgICAgICAtMTAgICAvKiBBZGRyZXNzIGluIHVzZS4gICAgICAgICAgKi8KKysjZGVmaW5lIEVSUl9VU0UgICAgICAgIC0xMSAgIC8qIEFkZHJlc3MgaW4gdXNlLiAgICAgICAgICAqLworCistI2RlZmluZSBFUlJfSUYgICAgICAgICAtMTEgICAvKiBMb3ctbGV2ZWwgbmV0aWYgZXJyb3IgICAgKi8KKy0jZGVmaW5lIEVSUl9JU0NPTk4gICAgIC0xMiAgIC8qIEFscmVhZHkgY29ubmVjdGVkLiAgICAgICAqLworLQorLSNkZWZpbmUgRVJSX1RJTUVPVVQgICAgLTEzICAgLyogVGltZW91dC4gICAgICAgICAgICAgICAgICovCisrI2RlZmluZSBFUlJfSUYgICAgICAgICAtMTIgICAvKiBMb3ctbGV2ZWwgbmV0aWYgZXJyb3IgICAgKi8KKysjZGVmaW5lIEVSUl9JU0NPTk4gICAgIC0xMyAgIC8qIEFscmVhZHkgY29ubmVjdGVkLiAgICAgICAqLworCisgI2RlZmluZSBFUlJfSU5QUk9HUkVTUyAtMTQgICAvKiBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MgICAgKi8KKworSW5kZXg6IHNyYy9pbmNsdWRlL2x3aXAvbWVtLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1JDUyBmaWxlOiAvc291cmNlcy9sd2lwL2x3aXAvc3JjL2luY2x1ZGUvbHdpcC9tZW0uaCx2CityZXRyaWV2aW5nIHJldmlzaW9uIDEuMjEKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4yMgorZGlmZiAtdSAtcCAtcjEuMjEgLXIxLjIyCistLS0gYS9zcmMvaW5jbHVkZS9sd2lwL21lbS5oCTQgTWFyIDIwMDggMTY6MzE6MzIgLTAwMDAJMS4yMQorKysrIGIvc3JjL2luY2x1ZGUvbHdpcC9tZW0uaAkzMCBNYXkgMjAwOCAxMTozNzoxNSAtMDAwMAkxLjIyCitAQCAtNTAsMTYgKzUwLDE2IEBAIHR5cGVkZWYgc2l6ZV90IG1lbV9zaXplX3Q7CisgICogYWxsb3cgdGhlc2UgZGVmaW5lcyB0byBiZSBvdmVycmlkZGVuLgorICAqLworICNpZm5kZWYgbWVtX2ZyZWUKKy0jZGVmaW5lIG1lbV9mcmVlKHgpIGZyZWUoeCkKKysjZGVmaW5lIG1lbV9mcmVlIGZyZWUKKyAjZW5kaWYKKyAjaWZuZGVmIG1lbV9tYWxsb2MKKy0jZGVmaW5lIG1lbV9tYWxsb2MoeCkgbWFsbG9jKHgpCisrI2RlZmluZSBtZW1fbWFsbG9jIG1hbGxvYworICNlbmRpZgorICNpZm5kZWYgbWVtX2NhbGxvYworLSNkZWZpbmUgbWVtX2NhbGxvYyh4LCB5KSBjYWxsb2MoeCwgeSkKKysjZGVmaW5lIG1lbV9jYWxsb2MgY2FsbG9jCisgI2VuZGlmCisgI2lmbmRlZiBtZW1fcmVhbGxvYworLSNkZWZpbmUgbWVtX3JlYWxsb2MoeCwgc2l6ZSkgKHgpCisrI2RlZmluZSBtZW1fcmVhbGxvYyByZWFsbG9jCisgI2VuZGlmCisgI2Vsc2UgLyogTUVNX0xJQkNfTUFMTE9DICovCisKK0luZGV4OiBzcmMvaW5jbHVkZS9sd2lwL25ldGlmLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1JDUyBmaWxlOiAvc291cmNlcy9sd2lwL2x3aXAvc3JjL2luY2x1ZGUvbHdpcC9uZXRpZi5oLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS40MworcmV0cmlldmluZyByZXZpc2lvbiAxLjQ2CitkaWZmIC11IC1wIC1yMS40MyAtcjEuNDYKKy0tLSBhL3NyYy9pbmNsdWRlL2x3aXAvbmV0aWYuaAk5IE9jdCAyMDA3IDE5OjU5OjU5IC0wMDAwCTEuNDMKKysrKyBiL3NyYy9pbmNsdWRlL2x3aXAvbmV0aWYuaAkxOSBKdW4gMjAwOCAxNjoyNzoyMyAtMDAwMAkxLjQ2CitAQCAtMzQsNiArMzQsOCBAQAorCisgI2luY2x1ZGUgImx3aXAvb3B0LmgiCisKKysjZGVmaW5lIEVOQUJMRV9MT09QQkFDSyAoTFdJUF9ORVRJRl9MT09QQkFDSyB8fCBMV0lQX0hBVkVfTE9PUElGKQorKworICNpbmNsdWRlICJsd2lwL2Vyci5oIgorCisgI2luY2x1ZGUgImx3aXAvaXBfYWRkci5oIgorQEAgLTE2NSw2ICsxNjcsMTQgQEAgc3RydWN0IG5ldGlmIHsKKyAjaWYgTFdJUF9ORVRJRl9IV0FERFJISU5UCisgICB1OF90ICphZGRyX2hpbnQ7CisgI2VuZGlmIC8qIExXSVBfTkVUSUZfSFdBRERSSElOVCAqLworKyNpZiBFTkFCTEVfTE9PUEJBQ0sKKysgIC8qIExpc3Qgb2YgcGFja2V0cyB0byBiZSBxdWV1ZWQgZm9yIG91cnNlbHZlcy4gKi8KKysgIHN0cnVjdCBwYnVmICpsb29wX2ZpcnN0OworKyAgc3RydWN0IHBidWYgKmxvb3BfbGFzdDsKKysjaWYgTFdJUF9MT09QQkFDS19NQVhfUEJVRlMKKysgIHUxNl90IGxvb3BfY250X2N1cnJlbnQ7CisrI2VuZGlmIC8qIExXSVBfTE9PUEJBQ0tfTUFYX1BCVUZTICovCisrI2VuZGlmIC8qIEVOQUJMRV9MT09QQkFDSyAqLworIH07CisKKyAjaWYgTFdJUF9TTk1QCitAQCAtMjQyLDQgKzI1MiwxMiBAQCB2b2lkIG5ldGlmX3NldF9saW5rX2NhbGxiYWNrKHN0cnVjdCBuZXRpCisgfQorICNlbmRpZgorCisrI2lmIEVOQUJMRV9MT09QQkFDSworK2Vycl90IG5ldGlmX2xvb3Bfb3V0cHV0KHN0cnVjdCBuZXRpZiAqbmV0aWYsIHN0cnVjdCBwYnVmICpwLCBzdHJ1Y3QgaXBfYWRkciAqZGVzdF9pcCk7Cisrdm9pZCBuZXRpZl9wb2xsKHN0cnVjdCBuZXRpZiAqbmV0aWYpOworKyNpZiAhTFdJUF9ORVRJRl9MT09QQkFDS19NVUxUSVRIUkVBRElORworK3ZvaWQgbmV0aWZfcG9sbF9hbGwodm9pZCk7CisrI2VuZGlmIC8qICFMV0lQX05FVElGX0xPT1BCQUNLX01VTFRJVEhSRUFESU5HICovCisrI2VuZGlmIC8qIEVOQUJMRV9MT09QQkFDSyAqLworKworICNlbmRpZiAvKiBfX0xXSVBfTkVUSUZfSF9fICovCitJbmRleDogc3JjL2luY2x1ZGUvbHdpcC9vcHQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvaW5jbHVkZS9sd2lwL29wdC5oLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4xMTYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4xMjIKK2RpZmYgLXUgLXAgLXIxLjExNiAtcjEuMTIyCistLS0gYS9zcmMvaW5jbHVkZS9sd2lwL29wdC5oCTMxIEphbiAyMDA4IDE4OjE5OjI5IC0wMDAwCTEuMTE2CisrKysgYi9zcmMvaW5jbHVkZS9sd2lwL29wdC5oCTMwIEp1biAyMDA4IDE4OjE2OjUyIC0wMDAwCTEuMTIyCitAQCAtMTU1LDYgKzE1NSwyNyBAQAorICNkZWZpbmUgTUVNUF9VU0VfQ1VTVE9NX1BPT0xTICAgICAgICAgICAwCisgI2VuZGlmCisKKysvKioKKysgKiBTZXQgdGhpcyB0byAxIGlmIHlvdSB3YW50IHRvIGZyZWUgUEJVRl9SQU0gcGJ1ZnMgKG9yIGNhbGwgbWVtX2ZyZWUoKSkgZnJvbQorKyAqIGludGVycnVwdCBjb250ZXh0IChvciBhbm90aGVyIGNvbnRleHQgdGhhdCBkb2Vzbid0IGFsbG93IHdhaXRpbmcgZm9yIGEKKysgKiBzZW1hcGhvcmUpLgorKyAqIElmIHNldCB0byAxLCBtZW1fbWFsbG9jIHdpbGwgYmUgcHJvdGVjdGVkIGJ5IGEgc2VtYXBob3JlIGFuZCBTWVNfQVJDSF9QUk9URUNULAorKyAqIHdoaWxlIG1lbV9mcmVlIHdpbGwgb25seSB1c2UgU1lTX0FSQ0hfUFJPVEVDVC4gbWVtX21hbGxvYyBTWVNfQVJDSF9VTlBST1RFQ1RzCisrICogd2l0aCBlYWNoIGxvb3Agc28gdGhhdCBtZW1fZnJlZSBjYW4gcnVuLgorKyAqCisrICogQVRURU5USU9OOiBBcyB5b3UgY2FuIHNlZSBmcm9tIHRoZSBhYm92ZSBkZXNjcmlwdGlvbiwgdGhpcyBsZWFkcyB0byBkaXMtLworKyAqIGVuYWJsaW5nIGludGVycnVwdHMgb2Z0ZW4sIHdoaWNoIGNhbiBiZSBzbG93ISBBbHNvLCBvbiBsb3cgbWVtb3J5LCBtZW1fbWFsbG9jCisrICogY2FuIG5lZWQgbG9uZ2VyLgorKyAqCisrICogSWYgeW91IGRvbid0IHdhbnQgdGhhdCwgYXQgbGVhc3QgZm9yIE5PX1NZUz0wLCB5b3UgY2FuIHN0aWxsIHVzZSB0aGUgZm9sbG93aW5nCisrICogZnVuY3Rpb25zIHRvIGVucXVldWUgYSBkZWFsbG9jYXRpb24gY2FsbCB3aGljaCB0aGVuIHJ1bnMgaW4gdGhlIHRjcGlwX3RocmVhZAorKyAqIGNvbnRleHQ6CisrICogLSBwYnVmX2ZyZWVfY2FsbGJhY2socCk7CisrICogLSBtZW1fZnJlZV9jYWxsYmFjayhtKTsKKysgKi8KKysjaWZuZGVmIExXSVBfQUxMT1dfTUVNX0ZSRUVfRlJPTV9PVEhFUl9DT05URVhUCisrI2RlZmluZSBMV0lQX0FMTE9XX01FTV9GUkVFX0ZST01fT1RIRVJfQ09OVEVYVCAwCisrI2VuZGlmCisKKyAvKgorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQEAgLTgxNSw2ICs4MzYsMzkgQEAKKyAjZGVmaW5lIExXSVBfTkVUSUZfSFdBRERSSElOVCAgICAgICAgICAgMAorICNlbmRpZgorCisrLyoqCisrICogTFdJUF9ORVRJRl9MT09QQkFDSz09MTogU3VwcG9ydCBzZW5kaW5nIHBhY2tldHMgd2l0aCBhIGRlc3RpbmF0aW9uIElQCisrICogYWRkcmVzcyBlcXVhbCB0byB0aGUgbmV0aWYgSVAgYWRkcmVzcywgbG9vcGluZyB0aGVtIGJhY2sgdXAgdGhlIHN0YWNrLgorKyAqLworKyNpZm5kZWYgTFdJUF9ORVRJRl9MT09QQkFDSworKyNkZWZpbmUgTFdJUF9ORVRJRl9MT09QQkFDSyAgICAgICAgICAgICAwCisrI2VuZGlmCisrCisrLyoqCisrICogTFdJUF9MT09QQkFDS19NQVhfUEJVRlM6IE1heGltdW0gbnVtYmVyIG9mIHBidWZzIG9uIHF1ZXVlIGZvciBsb29wYmFjaworKyAqIHNlbmRpbmcgZm9yIGVhY2ggbmV0aWYgKDAgPSBkaXNhYmxlZCkKKysgKi8KKysjaWZuZGVmIExXSVBfTE9PUEJBQ0tfTUFYX1BCVUZTCisrI2RlZmluZSBMV0lQX0xPT1BCQUNLX01BWF9QQlVGUyAgICAgICAgIDAKKysjZW5kaWYKKysKKysvKioKKysgKiBMV0lQX05FVElGX0xPT1BCQUNLX01VTFRJVEhSRUFESU5HOiBJbmRpY2F0ZXMgd2hldGhlciB0aHJlYWRpbmcgaXMgZW5hYmxlZCBpbgorKyAqIHRoZSBzeXN0ZW0sIGFzIG5ldGlmcyBtdXN0IGNoYW5nZSBob3cgdGhleSBiZWhhdmUgZGVwZW5kaW5nIG9uIHRoaXMgc2V0dGluZworKyAqIGZvciB0aGUgTFdJUF9ORVRJRl9MT09QQkFDSyBvcHRpb24gdG8gd29yay4KKysgKiBTZXR0aW5nIHRoaXMgaXMgbmVlZGVkIHRvIGF2b2lkIHJlZW50ZXJpbmcgbm9uLXJlZW50cmFudCBmdW5jdGlvbnMgbGlrZQorKyAqIHRjcF9pbnB1dCgpLgorKyAqICAgIExXSVBfTkVUSUZfTE9PUEJBQ0tfTVVMVElUSFJFQURJTkc9PTE6IEluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGlzIHVzaW5nIGEKKysgKiAgICAgICBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50IGxpa2UgdGNwaXAuYy4gSW4gdGhpcyBjYXNlLCBuZXRpZi0+aW5wdXQoKQorKyAqICAgICAgIGlzIGNhbGxlZCBkaXJlY3RseS4KKysgKiAgICBMV0lQX05FVElGX0xPT1BCQUNLX01VTFRJVEhSRUFESU5HPT0wOiBJbmRpY2F0ZXMgYSBwb2xsaW5nIChvciBOT19TWVMpIHNldHVwLgorKyAqICAgICAgIFRoZSBwYWNrZXRzIGFyZSBwdXQgb24gYSBsaXN0IGFuZCBuZXRpZl9wb2xsKCkgbXVzdCBiZSBjYWxsZWQgaW4KKysgKiAgICAgICB0aGUgbWFpbiBhcHBsaWNhdGlvbiBsb29wLgorKyAqLworKyNpZm5kZWYgTFdJUF9ORVRJRl9MT09QQkFDS19NVUxUSVRIUkVBRElORworKyNkZWZpbmUgTFdJUF9ORVRJRl9MT09QQkFDS19NVUxUSVRIUkVBRElORyAgICAoIU5PX1NZUykKKysjZW5kaWYKKysKKyAvKgorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC0tLS0tLS0tLS0gTE9PUElGIG9wdGlvbnMgLS0tLS0tLS0tLQorQEAgLTgyNywyMCArODgxLDE2IEBACisgI2RlZmluZSBMV0lQX0hBVkVfTE9PUElGICAgICAgICAgICAgICAgIDAKKyAjZW5kaWYKKworKy8qCisrICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrICAgLS0tLS0tLS0tLSBTTElQSUYgb3B0aW9ucyAtLS0tLS0tLS0tCisrICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrKi8KKyAvKioKKy0gKiBMV0lQX0xPT1BJRl9NVUxUSVRIUkVBRElORzogSW5kaWNhdGVzIHdoZXRoZXIgdGhyZWFkaW5nIGlzIGVuYWJsZWQgaW4KKy0gKiB0aGUgc3lzdGVtLCBhcyBMT09QSUYgbXVzdCBjaGFuZ2UgaG93IGl0IGJlaGF2ZXMgZGVwZW5kaW5nIG9uIHRoaXMgc2V0dGluZy4KKy0gKiBTZXR0aW5nIHRoaXMgaXMgbmVlZGVkIHRvIGF2b2lkIHJlZW50ZXJpbmcgbm9uLXJlZW50cmFudCBmdW5jdGlvbnMgbGlrZQorLSAqIHRjcF9pbnB1dCgpLgorLSAqICAgIExXSVBfTE9PUElGX01VTFRJVEhSRUFESU5HPT0xOiBJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBpcyB1c2luZyBhCistICogICAgICAgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudCBsaWtlIHRjcGlwLmMuIEluIHRoaXMgY2FzZSwgbmV0aWYtPmlucHV0KCkKKy0gKiAgICAgICBpcyBjYWxsZWQgZGlyZWN0bHkuCistICogICAgTFdJUF9MT09QSUZfTVVMVElUSFJFQURJTkc9PTA6IEluZGljYXRlcyBhIHBvbGxpbmcgKG9yIE5PX1NZUykgc2V0dXAuCistICogICAgICAgVGhlIHBhY2tldHMgYXJlIHB1dCBvbiBhIGxpc3QgYW5kIGxvb3BpZl9wb2xsKCkgbXVzdCBiZSBjYWxsZWQgaW4KKy0gKiAgICAgICB0aGUgbWFpbiBhcHBsaWNhdGlvbiBsb29wLgorKyAqIExXSVBfSEFWRV9TTElQSUY9PTE6IFN1cHBvcnQgc2xpcCBpbnRlcmZhY2UgYW5kIHNsaXBpZi5jCisgICovCistI2lmbmRlZiBMV0lQX0xPT1BJRl9NVUxUSVRIUkVBRElORworLSNkZWZpbmUgTFdJUF9MT09QSUZfTVVMVElUSFJFQURJTkcgICAgICAxCisrI2lmbmRlZiBMV0lQX0hBVkVfU0xJUElGCisrI2RlZmluZSBMV0lQX0hBVkVfU0xJUElGICAgICAgICAgICAgICAgIDAKKyAjZW5kaWYKKworIC8qCitJbmRleDogc3JjL2luY2x1ZGUvbHdpcC9zaW8uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvaW5jbHVkZS9sd2lwL3Npby5oLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS43CityZXRyaWV2aW5nIHJldmlzaW9uIDEuOAorZGlmZiAtdSAtcCAtcjEuNyAtcjEuOAorLS0tIGEvc3JjL2luY2x1ZGUvbHdpcC9zaW8uaAk2IFNlcCAyMDA3IDE2OjQzOjQ0IC0wMDAwCTEuNworKysrIGIvc3JjL2luY2x1ZGUvbHdpcC9zaW8uaAkyNyBNYXIgMjAwOCAxODowNjowMiAtMDAwMAkxLjgKK0BAIC0zMiwxNiArMzIsMjQgQEAKKyAgKiBJdCBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBieSB0aG9zZSBwbGF0Zm9ybXMgd2hpY2ggbmVlZCBTTElQIG9yIFBQUAorICAqLworCisrI2lmbmRlZiBfX1NJT19IX18KKysjZGVmaW5lIF9fU0lPX0hfXworKworICNpbmNsdWRlICJsd2lwL2FyY2guaCIKKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorCisrLyogSWYgeW91IHdhbnQgdG8gZGVmaW5lIHNpb19mZF90IGVsc2V3aGVyZSBvciBkaWZmZXJlbnRseSwKKysgICBkZWZpbmUgdGhpcyBpbiB5b3VyIGNjLmggZmlsZS4gKi8KKyAjaWZuZGVmIF9fc2lvX2ZkX3RfZGVmaW5lZAorIHR5cGVkZWYgdm9pZCAqIHNpb19mZF90OworICNlbmRpZgorCisrLyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgY2FuIGJlIGRlZmluZWQgdG8gc29tZXRoaW5nIGVsc2UgaW4geW91ciBjYy5oIGZpbGUKKysgICBvciBiZSBpbXBsZW1lbnRlZCBpbiB5b3VyIGN1c3RvbSBzaW8uYyBmaWxlLiAqLworKworICNpZm5kZWYgc2lvX29wZW4KKyBzaW9fZmRfdCBzaW9fb3Blbih1OF90KTsKKyAjZW5kaWYKK0BAIC02OSwzICs3Nyw1IEBAIHZvaWQgc2lvX3JlYWRfYWJvcnQoc2lvX2ZkX3QpOworICNpZmRlZiBfX2NwbHVzcGx1cworIH0KKyAjZW5kaWYKKysKKysjZW5kaWYgLyogX19TSU9fSF9fICovCitJbmRleDogc3JjL2luY2x1ZGUvbHdpcC9zb2NrZXRzLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1JDUyBmaWxlOiAvc291cmNlcy9sd2lwL2x3aXAvc3JjL2luY2x1ZGUvbHdpcC9zb2NrZXRzLmgsdgorcmV0cmlldmluZyByZXZpc2lvbiAxLjM4CityZXRyaWV2aW5nIHJldmlzaW9uIDEuMzkKK2RpZmYgLXUgLXAgLXIxLjM4IC1yMS4zOQorLS0tIGEvc3JjL2luY2x1ZGUvbHdpcC9zb2NrZXRzLmgJMiBEZWMgMjAwNyAxNToyNDowMiAtMDAwMAkxLjM4CisrKysgYi9zcmMvaW5jbHVkZS9sd2lwL3NvY2tldHMuaAkyNiBBcHIgMjAwOCAxMDo0NjoyMyAtMDAwMAkxLjM5CitAQCAtMTc3LDcgKzE3NywyMiBAQCB0eXBlZGVmIHN0cnVjdCBpcF9tcmVxIHsKKyB9IGlwX21yZXE7CisgI2VuZGlmIC8qIExXSVBfSUdNUCAqLworCistLyogVW5pbXBsZW1lbnRlZCBmb3Igbm93Li4uICovCisrLyoKKysgKiBUaGUgVHlwZSBvZiBTZXJ2aWNlIHByb3ZpZGVzIGFuIGluZGljYXRpb24gb2YgdGhlIGFic3RyYWN0CisrICogcGFyYW1ldGVycyBvZiB0aGUgcXVhbGl0eSBvZiBzZXJ2aWNlIGRlc2lyZWQuICBUaGVzZSBwYXJhbWV0ZXJzIGFyZQorKyAqIHRvIGJlIHVzZWQgdG8gZ3VpZGUgdGhlIHNlbGVjdGlvbiBvZiB0aGUgYWN0dWFsIHNlcnZpY2UgcGFyYW1ldGVycworKyAqIHdoZW4gdHJhbnNtaXR0aW5nIGEgZGF0YWdyYW0gdGhyb3VnaCBhIHBhcnRpY3VsYXIgbmV0d29yay4gIFNldmVyYWwKKysgKiBuZXR3b3JrcyBvZmZlciBzZXJ2aWNlIHByZWNlZGVuY2UsIHdoaWNoIHNvbWVob3cgdHJlYXRzIGhpZ2gKKysgKiBwcmVjZWRlbmNlIHRyYWZmaWMgYXMgbW9yZSBpbXBvcnRhbnQgdGhhbiBvdGhlciB0cmFmZmljIChnZW5lcmFsbHkKKysgKiBieSBhY2NlcHRpbmcgb25seSB0cmFmZmljIGFib3ZlIGEgY2VydGFpbiBwcmVjZWRlbmNlIGF0IHRpbWUgb2YgaGlnaAorKyAqIGxvYWQpLiAgVGhlIG1ham9yIGNob2ljZSBpcyBhIHRocmVlIHdheSB0cmFkZW9mZiBiZXR3ZWVuIGxvdy1kZWxheSwKKysgKiBoaWdoLXJlbGlhYmlsaXR5LCBhbmQgaGlnaC10aHJvdWdocHV0LgorKyAqIFRoZSB1c2Ugb2YgdGhlIERlbGF5LCBUaHJvdWdocHV0LCBhbmQgUmVsaWFiaWxpdHkgaW5kaWNhdGlvbnMgbWF5CisrICogaW5jcmVhc2UgdGhlIGNvc3QgKGluIHNvbWUgc2Vuc2UpIG9mIHRoZSBzZXJ2aWNlLiAgSW4gbWFueSBuZXR3b3JrcworKyAqIGJldHRlciBwZXJmb3JtYW5jZSBmb3Igb25lIG9mIHRoZXNlIHBhcmFtZXRlcnMgaXMgY291cGxlZCB3aXRoIHdvcnNlCisrICogcGVyZm9ybWFuY2Ugb24gYW5vdGhlci4gIEV4Y2VwdCBmb3IgdmVyeSB1bnVzdWFsIGNhc2VzIGF0IG1vc3QgdHdvCisrICogb2YgdGhlc2UgdGhyZWUgaW5kaWNhdGlvbnMgc2hvdWxkIGJlIHNldC4KKysgKi8KKyAjZGVmaW5lIElQVE9TX1RPU19NQVNLICAgICAgICAgIDB4MUUKKyAjZGVmaW5lIElQVE9TX1RPUyh0b3MpICAgICAgICAgICgodG9zKSAmIElQVE9TX1RPU19NQVNLKQorICNkZWZpbmUgSVBUT1NfTE9XREVMQVkgICAgICAgICAgMHgxMAorQEAgLTE4Nyw3ICsyMDIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgaXBfbXJlcSB7CisgI2RlZmluZSBJUFRPU19NSU5DT1NUICAgICAgICAgICBJUFRPU19MT1dDT1NUCisKKyAvKgorLSAqIERlZmluaXRpb25zIGZvciBJUCBwcmVjZWRlbmNlIChhbHNvIGluIGlwX3RvcykgKFVuaW1wbGVtZW50ZWQpCisrICogVGhlIE5ldHdvcmsgQ29udHJvbCBwcmVjZWRlbmNlIGRlc2lnbmF0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQKKysgKiB3aXRoaW4gYSBuZXR3b3JrIG9ubHkuICBUaGUgYWN0dWFsIHVzZSBhbmQgY29udHJvbCBvZiB0aGF0CisrICogZGVzaWduYXRpb24gaXMgdXAgdG8gZWFjaCBuZXR3b3JrLiBUaGUgSW50ZXJuZXR3b3JrIENvbnRyb2wKKysgKiBkZXNpZ25hdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IGdhdGV3YXkgY29udHJvbCBvcmlnaW5hdG9ycyBvbmx5LgorKyAqIElmIHRoZSBhY3R1YWwgdXNlIG9mIHRoZXNlIHByZWNlZGVuY2UgZGVzaWduYXRpb25zIGlzIG9mIGNvbmNlcm4gdG8KKysgKiBhIHBhcnRpY3VsYXIgbmV0d29yaywgaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoYXQgbmV0d29yayB0bworKyAqIGNvbnRyb2wgdGhlIGFjY2VzcyB0bywgYW5kIHVzZSBvZiwgdGhvc2UgcHJlY2VkZW5jZSBkZXNpZ25hdGlvbnMuCisgICovCisgI2RlZmluZSBJUFRPU19QUkVDX01BU0sgICAgICAgICAgICAgICAgIDB4ZTAKKyAjZGVmaW5lIElQVE9TX1BSRUModG9zKSAgICAgICAgICAgICAgICAoKHRvcykgJiBJUFRPU19QUkVDX01BU0spCitJbmRleDogc3JjL2luY2x1ZGUvbHdpcC9zdGF0cy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSQ1MgZmlsZTogL3NvdXJjZXMvbHdpcC9sd2lwL3NyYy9pbmNsdWRlL2x3aXAvc3RhdHMuaCx2CityZXRyaWV2aW5nIHJldmlzaW9uIDEuMTkKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4yMworZGlmZiAtdSAtcCAtcjEuMTkgLXIxLjIzCistLS0gYS9zcmMvaW5jbHVkZS9sd2lwL3N0YXRzLmgJMjggTm92IDIwMDcgMjE6MjU6MDcgLTAwMDAJMS4xOQorKysrIGIvc3JjL2luY2x1ZGUvbHdpcC9zdGF0cy5oCTggSnVsIDIwMDggMDk6MTU6NTcgLTAwMDAJMS4yMworQEAgLTU3LDcgKzU3LDYgQEAgZXh0ZXJuICJDIiB7CisKKyBzdHJ1Y3Qgc3RhdHNfcHJvdG8geworICAgU1RBVF9DT1VOVEVSIHhtaXQ7ICAgICAgICAgICAgIC8qIFRyYW5zbWl0dGVkIHBhY2tldHMuICovCistICBTVEFUX0NPVU5URVIgcmV4bWl0OyAgICAgICAgICAgLyogUmV0cmFuc21pdHRlZCBwYWNrZXRzLiAqLworICAgU1RBVF9DT1VOVEVSIHJlY3Y7ICAgICAgICAgICAgIC8qIFJlY2VpdmVkIHBhY2tldHMuICovCisgICBTVEFUX0NPVU5URVIgZnc7ICAgICAgICAgICAgICAgLyogRm9yd2FyZGVkIHBhY2tldHMuICovCisgICBTVEFUX0NPVU5URVIgZHJvcDsgICAgICAgICAgICAgLyogRHJvcHBlZCBwYWNrZXRzLiAqLworQEAgLTg3LDcgKzg2LDggQEAgc3RydWN0IHN0YXRzX21lbSB7CisgICBtZW1fc2l6ZV90IGF2YWlsOworICAgbWVtX3NpemVfdCB1c2VkOworICAgbWVtX3NpemVfdCBtYXg7CistICBtZW1fc2l6ZV90IGVycjsKKysgIFNUQVRfQ09VTlRFUiBlcnI7CisrICBTVEFUX0NPVU5URVIgaWxsZWdhbDsKKyB9OworCisgc3RydWN0IHN0YXRzX3N5c2VsZW0geworQEAgLTE0Miw2NCArMTQyLDEzOCBAQCBleHRlcm4gc3RydWN0IHN0YXRzXyBsd2lwX3N0YXRzOworICNkZWZpbmUgc3RhdHNfaW5pdCgpIC8qIENvbXBhdGliaWxpdHkgZGVmaW5lLCBub3QgaW5pdCBuZWVkZWQuICovCisKKyAjZGVmaW5lIFNUQVRTX0lOQyh4KSArK2x3aXBfc3RhdHMueAorKyNkZWZpbmUgU1RBVFNfREVDKHgpIC0tbHdpcF9zdGF0cy54CisgI2Vsc2UKKyAjZGVmaW5lIHN0YXRzX2luaXQoKQorICNkZWZpbmUgU1RBVFNfSU5DKHgpCisrI2RlZmluZSBTVEFUU19ERUMoeCkKKyAjZW5kaWYgLyogTFdJUF9TVEFUUyAqLworCisgI2lmIFRDUF9TVEFUUworICNkZWZpbmUgVENQX1NUQVRTX0lOQyh4KSBTVEFUU19JTkMoeCkKKysjZGVmaW5lIFRDUF9TVEFUU19ESVNQTEFZKCkgc3RhdHNfZGlzcGxheV9wcm90bygmbHdpcF9zdGF0cy50Y3AsICJUQ1AiKQorICNlbHNlCisgI2RlZmluZSBUQ1BfU1RBVFNfSU5DKHgpCisrI2RlZmluZSBUQ1BfU1RBVFNfRElTUExBWSgpCisgI2VuZGlmCisKKyAjaWYgVURQX1NUQVRTCisgI2RlZmluZSBVRFBfU1RBVFNfSU5DKHgpIFNUQVRTX0lOQyh4KQorKyNkZWZpbmUgVURQX1NUQVRTX0RJU1BMQVkoKSBzdGF0c19kaXNwbGF5X3Byb3RvKCZsd2lwX3N0YXRzLnVkcCwgIlVEUCIpCisgI2Vsc2UKKyAjZGVmaW5lIFVEUF9TVEFUU19JTkMoeCkKKysjZGVmaW5lIFVEUF9TVEFUU19ESVNQTEFZKCkKKyAjZW5kaWYKKworICNpZiBJQ01QX1NUQVRTCisgI2RlZmluZSBJQ01QX1NUQVRTX0lOQyh4KSBTVEFUU19JTkMoeCkKKysjZGVmaW5lIElDTVBfU1RBVFNfRElTUExBWSgpIHN0YXRzX2Rpc3BsYXlfcHJvdG8oJmx3aXBfc3RhdHMuaWNtcCwgIklDTVAiKQorICNlbHNlCisgI2RlZmluZSBJQ01QX1NUQVRTX0lOQyh4KQorKyNkZWZpbmUgSUNNUF9TVEFUU19ESVNQTEFZKCkKKyAjZW5kaWYKKworICNpZiBJR01QX1NUQVRTCisgI2RlZmluZSBJR01QX1NUQVRTX0lOQyh4KSBTVEFUU19JTkMoeCkKKysjZGVmaW5lIElHTVBfU1RBVFNfRElTUExBWSgpIHN0YXRzX2Rpc3BsYXlfaWdtcCgmbHdpcF9zdGF0cy5pZ21wKQorICNlbHNlCisgI2RlZmluZSBJR01QX1NUQVRTX0lOQyh4KQorKyNkZWZpbmUgSUdNUF9TVEFUU19ESVNQTEFZKCkKKyAjZW5kaWYKKworICNpZiBJUF9TVEFUUworICNkZWZpbmUgSVBfU1RBVFNfSU5DKHgpIFNUQVRTX0lOQyh4KQorKyNkZWZpbmUgSVBfU1RBVFNfRElTUExBWSgpIHN0YXRzX2Rpc3BsYXlfcHJvdG8oJmx3aXBfc3RhdHMuaXAsICJJUCIpCisgI2Vsc2UKKyAjZGVmaW5lIElQX1NUQVRTX0lOQyh4KQorKyNkZWZpbmUgSVBfU1RBVFNfRElTUExBWSgpCisgI2VuZGlmCisKKyAjaWYgSVBGUkFHX1NUQVRTCisgI2RlZmluZSBJUEZSQUdfU1RBVFNfSU5DKHgpIFNUQVRTX0lOQyh4KQorKyNkZWZpbmUgSVBGUkFHX1NUQVRTX0RJU1BMQVkoKSBzdGF0c19kaXNwbGF5X3Byb3RvKCZsd2lwX3N0YXRzLmlwX2ZyYWcsICJJUF9GUkFHIikKKyAjZWxzZQorICNkZWZpbmUgSVBGUkFHX1NUQVRTX0lOQyh4KQorKyNkZWZpbmUgSVBGUkFHX1NUQVRTX0RJU1BMQVkoKQorICNlbmRpZgorCisgI2lmIEVUSEFSUF9TVEFUUworICNkZWZpbmUgRVRIQVJQX1NUQVRTX0lOQyh4KSBTVEFUU19JTkMoeCkKKysjZGVmaW5lIEVUSEFSUF9TVEFUU19ESVNQTEFZKCkgc3RhdHNfZGlzcGxheV9wcm90bygmbHdpcF9zdGF0cy5ldGhhcnAsICJFVEhBUlAiKQorICNlbHNlCisgI2RlZmluZSBFVEhBUlBfU1RBVFNfSU5DKHgpCisrI2RlZmluZSBFVEhBUlBfU1RBVFNfRElTUExBWSgpCisgI2VuZGlmCisKKyAjaWYgTElOS19TVEFUUworICNkZWZpbmUgTElOS19TVEFUU19JTkMoeCkgU1RBVFNfSU5DKHgpCisrI2RlZmluZSBMSU5LX1NUQVRTX0RJU1BMQVkoKSBzdGF0c19kaXNwbGF5X3Byb3RvKCZsd2lwX3N0YXRzLmxpbmssICJMSU5LIikKKyAjZWxzZQorICNkZWZpbmUgTElOS19TVEFUU19JTkMoeCkKKysjZGVmaW5lIExJTktfU1RBVFNfRElTUExBWSgpCisrI2VuZGlmCisrCisrI2lmIE1FTV9TVEFUUworKyNkZWZpbmUgTUVNX1NUQVRTX0FWQUlMKHgsIHkpIGx3aXBfc3RhdHMubWVtLnggPSB5CisrI2RlZmluZSBNRU1fU1RBVFNfSU5DKHgpIFNUQVRTX0lOQyhtZW0ueCkKKysjZGVmaW5lIE1FTV9TVEFUU19JTkNfVVNFRCh4LCB5KSBkbyB7IGx3aXBfc3RhdHMubWVtLnVzZWQgKz0geTsgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsd2lwX3N0YXRzLm1lbS5tYXggPCBsd2lwX3N0YXRzLm1lbS51c2VkKSB7IFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHdpcF9zdGF0cy5tZW0ubWF4ID0gbHdpcF9zdGF0cy5tZW0udXNlZDsgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUoMCkKKysjZGVmaW5lIE1FTV9TVEFUU19ERUNfVVNFRCh4LCB5KSBsd2lwX3N0YXRzLm1lbS54IC09IHkKKysjZGVmaW5lIE1FTV9TVEFUU19ESVNQTEFZKCkgc3RhdHNfZGlzcGxheV9tZW0oJmx3aXBfc3RhdHMubWVtLCAiSEVBUCIpCisrI2Vsc2UKKysjZGVmaW5lIE1FTV9TVEFUU19BVkFJTCh4LCB5KQorKyNkZWZpbmUgTUVNX1NUQVRTX0lOQyh4KQorKyNkZWZpbmUgTUVNX1NUQVRTX0lOQ19VU0VEKHgsIHkpCisrI2RlZmluZSBNRU1fU1RBVFNfREVDX1VTRUQoeCwgeSkKKysjZGVmaW5lIE1FTV9TVEFUU19ESVNQTEFZKCkKKysjZW5kaWYKKysKKysjaWYgTUVNUF9TVEFUUworKyNkZWZpbmUgTUVNUF9TVEFUU19BVkFJTCh4LCBpLCB5KSBsd2lwX3N0YXRzLm1lbXBbaV0ueCA9IHkKKysjZGVmaW5lIE1FTVBfU1RBVFNfSU5DKHgsIGkpIFNUQVRTX0lOQyhtZW1wW2ldLngpCisrI2RlZmluZSBNRU1QX1NUQVRTX0RFQyh4LCBpKSBTVEFUU19ERUMobWVtcFtpXS54KQorKyNkZWZpbmUgTUVNUF9TVEFUU19JTkNfVVNFRCh4LCBpKSBkbyB7ICsrbHdpcF9zdGF0cy5tZW1wW2ldLnVzZWQ7IFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobHdpcF9zdGF0cy5tZW1wW2ldLm1heCA8IGx3aXBfc3RhdHMubWVtcFtpXS51c2VkKSB7IFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHdpcF9zdGF0cy5tZW1wW2ldLm1heCA9IGx3aXBfc3RhdHMubWVtcFtpXS51c2VkOyBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSgwKQorKyNkZWZpbmUgTUVNUF9TVEFUU19ESVNQTEFZKGkpIHN0YXRzX2Rpc3BsYXlfbWVtcCgmbHdpcF9zdGF0cy5tZW1wW2ldLCBpKQorKyNlbHNlCisrI2RlZmluZSBNRU1QX1NUQVRTX0FWQUlMKHgsIGksIHkpCisrI2RlZmluZSBNRU1QX1NUQVRTX0lOQyh4LCBpKQorKyNkZWZpbmUgTUVNUF9TVEFUU19ERUMoeCwgaSkKKysjZGVmaW5lIE1FTVBfU1RBVFNfSU5DX1VTRUQoeCwgaSkKKysjZGVmaW5lIE1FTVBfU1RBVFNfRElTUExBWShpKQorKyNlbmRpZgorKworKyNpZiBTWVNfU1RBVFMKKysjZGVmaW5lIFNZU19TVEFUU19JTkMoeCkgU1RBVFNfSU5DKHN5cy54KQorKyNkZWZpbmUgU1lTX1NUQVRTX0RFQyh4KSBTVEFUU19ERUMoc3lzLngpCisrI2RlZmluZSBTWVNfU1RBVFNfRElTUExBWSgpIHN0YXRzX2Rpc3BsYXlfc3lzKCZsd2lwX3N0YXRzLnN5cykKKysjZWxzZQorKyNkZWZpbmUgU1lTX1NUQVRTX0lOQyh4KQorKyNkZWZpbmUgU1lTX1NUQVRTX0RFQyh4KQorKyNkZWZpbmUgU1lTX1NUQVRTX0RJU1BMQVkoKQorICNlbmRpZgorCisgLyogRGlzcGxheSBvZiBzdGF0aXN0aWNzICovCisgI2lmIExXSVBfU1RBVFNfRElTUExBWQorIHZvaWQgc3RhdHNfZGlzcGxheSh2b2lkKTsKKyt2b2lkIHN0YXRzX2Rpc3BsYXlfcHJvdG8oc3RydWN0IHN0YXRzX3Byb3RvICpwcm90bywgY2hhciAqbmFtZSk7Cisrdm9pZCBzdGF0c19kaXNwbGF5X2lnbXAoc3RydWN0IHN0YXRzX2lnbXAgKmlnbXApOworK3ZvaWQgc3RhdHNfZGlzcGxheV9tZW0oc3RydWN0IHN0YXRzX21lbSAqbWVtLCBjaGFyICpuYW1lKTsKKyt2b2lkIHN0YXRzX2Rpc3BsYXlfbWVtcChzdHJ1Y3Qgc3RhdHNfbWVtICptZW0sIGludCBpbmRleCk7Cisrdm9pZCBzdGF0c19kaXNwbGF5X3N5cyhzdHJ1Y3Qgc3RhdHNfc3lzICpzeXMpOworICNlbHNlCisgI2RlZmluZSBzdGF0c19kaXNwbGF5KCkKKysjZGVmaW5lIHN0YXRzX2Rpc3BsYXlfcHJvdG8ocHJvdG8sIG5hbWUpCisrI2RlZmluZSBzdGF0c19kaXNwbGF5X2lnbXAoaWdtcCkKKysjZGVmaW5lIHN0YXRzX2Rpc3BsYXlfbWVtKG1lbSwgbmFtZSkKKysjZGVmaW5lIHN0YXRzX2Rpc3BsYXlfbWVtcChtZW0sIGluZGV4KQorKyNkZWZpbmUgc3RhdHNfZGlzcGxheV9zeXMoc3lzKQorICNlbmRpZiAvKiBMV0lQX1NUQVRTX0RJU1BMQVkgKi8KKworICNpZmRlZiBfX2NwbHVzcGx1cworSW5kZXg6IHNyYy9pbmNsdWRlL2x3aXAvdGNwaXAuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvaW5jbHVkZS9sd2lwL3RjcGlwLmgsdgorcmV0cmlldmluZyByZXZpc2lvbiAxLjI0CityZXRyaWV2aW5nIHJldmlzaW9uIDEuMjcKK2RpZmYgLXUgLXAgLXIxLjI0IC1yMS4yNworLS0tIGEvc3JjL2luY2x1ZGUvbHdpcC90Y3BpcC5oCTEyIEphbiAyMDA4IDExOjUyOjIyIC0wMDAwCTEuMjQKKysrKyBiL3NyYy9pbmNsdWRlL2x3aXAvdGNwaXAuaAkyNyBKdW4gMjAwOCAyMDozNDo1NSAtMDAwMAkxLjI3CitAQCAtODMsNyArODMsMTEgQEAgZXJyX3QgdGNwaXBfbmV0aWZhcGlfbG9jayhzdHJ1Y3QgbmV0aWZhcAorICNlbmRpZiAvKiBMV0lQX05FVElGX0FQSSAqLworCisgZXJyX3QgdGNwaXBfY2FsbGJhY2tfd2l0aF9ibG9jayh2b2lkICgqZikodm9pZCAqY3R4KSwgdm9pZCAqY3R4LCB1OF90IGJsb2NrKTsKKy0jZGVmaW5lIHRjcGlwX2NhbGxiYWNrKGYsY3R4KSB0Y3BpcF9jYWxsYmFja193aXRoX2Jsb2NrKGYsY3R4LDEpCisrI2RlZmluZSB0Y3BpcF9jYWxsYmFjayhmLCBjdHgpICAgICAgICAgICAgICB0Y3BpcF9jYWxsYmFja193aXRoX2Jsb2NrKGYsIGN0eCwgMSkKKysKKysvKiBmcmVlIHBidWZzIG9yIGhlYXAgbWVtb3J5IGZyb20gYW5vdGhlciBjb250ZXh0IHdpdGhvdXQgYmxvY2tpbmcgKi8KKytlcnJfdCBwYnVmX2ZyZWVfY2FsbGJhY2soc3RydWN0IHBidWYgKnApOworK2Vycl90IG1lbV9mcmVlX2NhbGxiYWNrKHZvaWQgKm0pOworCisgZXJyX3QgdGNwaXBfdGltZW91dCh1MzJfdCBtc2Vjcywgc3lzX3RpbWVvdXRfaGFuZGxlciBoLCB2b2lkICphcmcpOworICNkZWZpbmUgdGNwaXBfdW50aW1lb3V0KGgsIGFyZykgdGNwaXBfdGltZW91dCgweGZmZmZmZmZmLCBoLCBhcmcpCitJbmRleDogc3JjL2luY2x1ZGUvbmV0aWYvbG9vcGlmLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1JDUyBmaWxlOiAvc291cmNlcy9sd2lwL2x3aXAvc3JjL2luY2x1ZGUvbmV0aWYvbG9vcGlmLmgsdgorcmV0cmlldmluZyByZXZpc2lvbiAxLjcKK3JldHJpZXZpbmcgcmV2aXNpb24gMS45CitkaWZmIC11IC1wIC1yMS43IC1yMS45CistLS0gYS9zcmMvaW5jbHVkZS9uZXRpZi9sb29waWYuaAkxMCBNYXkgMjAwNyAxMDo1OToyMCAtMDAwMAkxLjcKKysrKyBiL3NyYy9pbmNsdWRlL25ldGlmL2xvb3BpZi5oCTE3IEp1biAyMDA4IDIwOjEyOjIyIC0wMDAwCTEuOQorQEAgLTMyLDYgKzMyLDcgQEAKKyAjaWZuZGVmIF9fTkVUSUZfTE9PUElGX0hfXworICNkZWZpbmUgX19ORVRJRl9MT09QSUZfSF9fCisKKysjaW5jbHVkZSAibHdpcC9vcHQuaCIKKyAjaW5jbHVkZSAibHdpcC9uZXRpZi5oIgorICNpbmNsdWRlICJsd2lwL2Vyci5oIgorCitAQCAtMzksOSArNDAsOSBAQAorIGV4dGVybiAiQyIgeworICNlbmRpZgorCistI2lmICFMV0lQX0xPT1BJRl9NVUxUSVRIUkVBRElORworLXZvaWQgbG9vcGlmX3BvbGwoc3RydWN0IG5ldGlmICpuZXRpZik7CistI2VuZGlmCisrI2lmICFMV0lQX05FVElGX0xPT1BCQUNLX01VTFRJVEhSRUFESU5HCisrI2RlZmluZSBsb29waWZfcG9sbCBuZXRpZl9wb2xsCisrI2VuZGlmIC8qICFMV0lQX05FVElGX0xPT1BCQUNLX01VTFRJVEhSRUFESU5HICovCisKKyBlcnJfdCBsb29waWZfaW5pdChzdHJ1Y3QgbmV0aWYgKm5ldGlmKTsKKworSW5kZXg6IHNyYy9uZXRpZi9ldGhhcnAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9zb3VyY2VzL2x3aXAvbHdpcC9zcmMvbmV0aWYvZXRoYXJwLmMsdgorcmV0cmlldmluZyByZXZpc2lvbiAxLjE0NQorcmV0cmlldmluZyByZXZpc2lvbiAxLjE0OAorZGlmZiAtdSAtcCAtcjEuMTQ1IC1yMS4xNDgKKy0tLSBhL3NyYy9uZXRpZi9ldGhhcnAuYwk0IE1hciAyMDA4IDEzOjQxOjI0IC0wMDAwCTEuMTQ1CisrKysgYi9zcmMvbmV0aWYvZXRoYXJwLmMJMTkgSnVuIDIwMDggMTY6NDA6NTkgLTAwMDAJMS4xNDgKK0BAIC0zNTMsNyArMzUzLDcgQEAgZmluZF9lbnRyeShzdHJ1Y3QgaXBfYWRkciAqaXBhZGRyLCB1OF90CisgICAgKiAxKSBlbXB0eSBlbnRyeQorICAgICogMikgb2xkZXN0IHN0YWJsZSBlbnRyeQorICAgICogMykgb2xkZXN0IHBlbmRpbmcgZW50cnkgd2l0aG91dCBxdWV1ZWQgcGFja2V0cworLSAgICogNCkgb2xkZXN0IHBlbmRpbmcgZW50cnkgd2l0aG91dCBxdWV1ZWQgcGFja2V0cworKyAgICogNCkgb2xkZXN0IHBlbmRpbmcgZW50cnkgd2l0aCBxdWV1ZWQgcGFja2V0cworICAgICoKKyAgICAqIHsgRVRIQVJQX1RSWV9IQVJEIGlzIHNldCBhdCB0aGlzIHBvaW50IH0KKyAgICAqLworQEAgLTExMzAsNyArMTEzMCwxNCBAQCBldGhlcm5ldF9pbnB1dChzdHJ1Y3QgcGJ1ZiAqcCwgc3RydWN0IG5lCisKKyAgIC8qIHBvaW50cyB0byBwYWNrZXQgcGF5bG9hZCwgd2hpY2ggc3RhcnRzIHdpdGggYW4gRXRoZXJuZXQgaGVhZGVyICovCisgICBldGhoZHIgPSBwLT5wYXlsb2FkOworLQorKyAgTFdJUF9ERUJVR0YoRVRIQVJQX0RFQlVHIHwgTFdJUF9EQkdfVFJBQ0UsCisrICAgICgiZXRoZXJuZXRfaW5wdXQ6IGRlc3Q6JTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4OiUwMngsIHNyYzolMDJ4OiUwMng6JTAyeDolMDJ4OiUwMng6JTAyeCwgdHlwZTolMmh4XG4iLAorKyAgICAgKHVuc2lnbmVkKWV0aGhkci0+ZGVzdC5hZGRyWzBdLCAodW5zaWduZWQpZXRoaGRyLT5kZXN0LmFkZHJbMV0sICh1bnNpZ25lZClldGhoZHItPmRlc3QuYWRkclsyXSwKKysgICAgICh1bnNpZ25lZClldGhoZHItPmRlc3QuYWRkclszXSwgKHVuc2lnbmVkKWV0aGhkci0+ZGVzdC5hZGRyWzRdLCAodW5zaWduZWQpZXRoaGRyLT5kZXN0LmFkZHJbNV0sCisrICAgICAodW5zaWduZWQpZXRoaGRyLT5zcmMuYWRkclswXSwgKHVuc2lnbmVkKWV0aGhkci0+c3JjLmFkZHJbMV0sICh1bnNpZ25lZClldGhoZHItPnNyYy5hZGRyWzJdLAorKyAgICAgKHVuc2lnbmVkKWV0aGhkci0+c3JjLmFkZHJbM10sICh1bnNpZ25lZClldGhoZHItPnNyYy5hZGRyWzRdLCAodW5zaWduZWQpZXRoaGRyLT5zcmMuYWRkcls1XSwKKysgICAgICh1bnNpZ25lZClodG9ucyhldGhoZHItPnR5cGUpKSk7CisrCisgICBzd2l0Y2ggKGh0b25zKGV0aGhkci0+dHlwZSkpIHsKKyAgICAgLyogSVAgcGFja2V0PyAqLworICAgICBjYXNlIEVUSFRZUEVfSVA6CitAQCAtMTE2NSw2ICsxMTcyLDggQEAgZXRoZXJuZXRfaW5wdXQoc3RydWN0IHBidWYgKnAsIHN0cnVjdCBuZQorICNlbmRpZiAvKiBQUFBPRV9TVVBQT1JUICovCisKKyAgICAgZGVmYXVsdDoKKysgICAgICBFVEhBUlBfU1RBVFNfSU5DKGV0aGFycC5wcm90ZXJyKTsKKysgICAgICBFVEhBUlBfU1RBVFNfSU5DKGV0aGFycC5kcm9wKTsKKyAgICAgICBwYnVmX2ZyZWUocCk7CisgICAgICAgcCA9IE5VTEw7CisgICAgICAgYnJlYWs7CitJbmRleDogc3JjL25ldGlmL2xvb3BpZi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSQ1MgZmlsZTogL3NvdXJjZXMvbHdpcC9sd2lwL3NyYy9uZXRpZi9sb29waWYuYyx2CityZXRyaWV2aW5nIHJldmlzaW9uIDEuMjYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4yNworZGlmZiAtdSAtcCAtcjEuMjYgLXIxLjI3CistLS0gYS9zcmMvbmV0aWYvbG9vcGlmLmMJMzEgQXVnIDIwMDcgMTA6MTQ6MDkgLTAwMDAJMS4yNgorKysrIGIvc3JjL25ldGlmL2xvb3BpZi5jCTEyIEp1biAyMDA4IDIwOjEwOjEwIC0wMDAwCTEuMjcKK0BAIC00MCwxNDkgKzQwLDggQEAKKyAjaWYgTFdJUF9IQVZFX0xPT1BJRgorCisgI2luY2x1ZGUgIm5ldGlmL2xvb3BpZi5oIgorLSNpbmNsdWRlICJsd2lwL3BidWYuaCIKKyAjaW5jbHVkZSAibHdpcC9zbm1wLmgiCisKKy0jaW5jbHVkZSA8c3RyaW5nLmg+CistCistI2lmICFMV0lQX0xPT1BJRl9NVUxUSVRIUkVBRElORworLQorLSNpbmNsdWRlICJsd2lwL3N5cy5oIgorLSNpbmNsdWRlICJsd2lwL21lbS5oIgorLQorLS8qIGhlbHBlciBzdHJ1Y3QgZm9yIHRoZSBsaW5rZWQgbGlzdCBvZiBwYnVmcyAqLworLXN0cnVjdCBsb29waWZfcHJpdmF0ZSB7CistICBzdHJ1Y3QgcGJ1ZiAqZmlyc3Q7CistICBzdHJ1Y3QgcGJ1ZiAqbGFzdDsKKy19OworLQorLS8qKgorLSAqIENhbGwgbG9vcGlmX3BvbGwoKSBpbiB0aGUgbWFpbiBsb29wIG9mIHlvdXIgYXBwbGljYXRpb24uIFRoaXMgaXMgdG8gcHJldmVudAorLSAqIHJlZW50ZXJpbmcgbm9uLXJlZW50cmFudCBmdW5jdGlvbnMgbGlrZSB0Y3BfaW5wdXQoKS4gUGFja2V0cyBwYXNzZWQgdG8KKy0gKiBsb29waWZfb3V0cHV0KCkgYXJlIHB1dCBvbiBhIGxpc3QgdGhhdCBpcyBwYXNzZWQgdG8gbmV0aWYtPmlucHV0KCkgYnkKKy0gKiBsb29waWZfcG9sbCgpLgorLSAqCistICogQHBhcmFtIG5ldGlmIHRoZSBsd2lwIG5ldHdvcmsgaW50ZXJmYWNlIHN0cnVjdHVyZSBmb3IgdGhpcyBsb29waWYKKy0gKi8KKy12b2lkCistbG9vcGlmX3BvbGwoc3RydWN0IG5ldGlmICpuZXRpZikKKy17CistICBTWVNfQVJDSF9ERUNMX1BST1RFQ1QobGV2KTsKKy0gIHN0cnVjdCBwYnVmICppbiwgKmluX2VuZDsKKy0gIHN0cnVjdCBsb29waWZfcHJpdmF0ZSAqcHJpdiA9IChzdHJ1Y3QgbG9vcGlmX3ByaXZhdGUqKW5ldGlmLT5zdGF0ZTsKKy0KKy0gIExXSVBfRVJST1IoInByaXYgIT0gTlVMTCIsIChwcml2ICE9IE5VTEwpLCByZXR1cm47KTsKKy0KKy0gIGRvIHsKKy0gICAgLyogR2V0IGEgcGFja2V0IGZyb20gdGhlIGxpc3QuIFdpdGggU1lTX0xJR0hUV0VJR0hUX1BST1Q9MSwgdGhpcyBpcyBwcm90ZWN0ZWQgKi8KKy0gICAgU1lTX0FSQ0hfUFJPVEVDVChsZXYpOworLSAgICBpbiA9IHByaXYtPmZpcnN0OworLSAgICBpZihpbikgeworLSAgICAgIGluX2VuZCA9IGluOworLSAgICAgIHdoaWxlKGluX2VuZC0+bGVuICE9IGluX2VuZC0+dG90X2xlbikgeworLSAgICAgICAgTFdJUF9BU1NFUlQoImJvZ3VzIHBidWY6IGxlbiAhPSB0b3RfbGVuIGJ1dCBuZXh0ID09IE5VTEwhIiwgaW5fZW5kLT5uZXh0ICE9IE5VTEwpOworLSAgICAgICAgaW5fZW5kID0gaW5fZW5kLT5uZXh0OworLSAgICAgIH0KKy0gICAgICAvKiAnaW5fZW5kJyBub3cgcG9pbnRzIHRvIHRoZSBsYXN0IHBidWYgZnJvbSAnaW4nICovCistICAgICAgaWYoaW5fZW5kID09IHByaXYtPmxhc3QpIHsKKy0gICAgICAgIC8qIHRoaXMgd2FzIHRoZSBsYXN0IHBidWYgaW4gdGhlIGxpc3QgKi8KKy0gICAgICAgIHByaXYtPmZpcnN0ID0gcHJpdi0+bGFzdCA9IE5VTEw7CistICAgICAgfSBlbHNlIHsKKy0gICAgICAgIC8qIHBvcCB0aGUgcGJ1ZiBvZmYgdGhlIGxpc3QgKi8KKy0gICAgICAgIHByaXYtPmZpcnN0ID0gaW5fZW5kLT5uZXh0OworLSAgICAgICAgTFdJUF9BU1NFUlQoInNob3VsZCBub3QgYmUgbnVsbCBzaW5jZSBmaXJzdCAhPSBsYXN0ISIsIHByaXYtPmZpcnN0ICE9IE5VTEwpOworLSAgICAgIH0KKy0gICAgfQorLSAgICBTWVNfQVJDSF9VTlBST1RFQ1QobGV2KTsKKy0KKy0gICAgaWYoaW4gIT0gTlVMTCkgeworLSAgICAgIGlmKGluX2VuZC0+bmV4dCAhPSBOVUxMKSB7CistICAgICAgICAvKiBEZS1xdWV1ZSB0aGUgcGJ1ZiBmcm9tIGl0cyBzdWNjZXNzb3JzIG9uIHRoZSAncHJpdicgbGlzdC4gKi8KKy0gICAgICAgIGluX2VuZC0+bmV4dCA9IE5VTEw7CistICAgICAgfQorLSAgICAgIGlmKG5ldGlmLT5pbnB1dChpbiwgbmV0aWYpICE9IEVSUl9PSykgeworLSAgICAgICAgcGJ1Zl9mcmVlKGluKTsKKy0gICAgICB9CistICAgICAgLyogRG9uJ3QgcmVmZXJlbmNlIHRoZSBwYWNrZXQgYW55IG1vcmUhICovCistICAgICAgaW4gPSBOVUxMOworLSAgICAgIGluX2VuZCA9IE5VTEw7CistICAgIH0KKy0gIC8qIGdvIG9uIHdoaWxlIHRoZXJlIGlzIGEgcGFja2V0IG9uIHRoZSBsaXN0ICovCistICB9IHdoaWxlKHByaXYtPmZpcnN0ICE9IE5VTEwpOworLX0KKy0jZW5kaWYgLyogTFdJUF9MT09QSUZfTVVMVElUSFJFQURJTkcgKi8KKy0KKy0vKioKKy0gKiBTZW5kIGFuIElQIHBhY2tldCBvdmVyIHRoZSBsb29wYmFjayBpbnRlcmZhY2UuCistICogVGhlIHBidWYgaXMgc2ltcGx5IGNvcGllZCBhbmQgaGFuZGVkIGJhY2sgdG8gbmV0aWYtPmlucHV0LgorLSAqIEluIG11bHRpdGhyZWFkZWQgbW9kZSwgdGhpcyBpcyBkb25lIGRpcmVjdGx5IHNpbmNlIG5ldGlmLT5pbnB1dCBtdXN0IHB1dAorLSAqIHRoZSBwYWNrZXQgb24gYSBxdWV1ZS4KKy0gKiBJbiBjYWxsYmFjayBtb2RlLCB0aGUgcGFja2V0IGlzIHB1dCBvbiBhbiBpbnRlcm5hbCBxdWV1ZSBhbmQgaXMgZmVkIHRvCistICogbmV0aWYtPmlucHV0IGJ5IGxvb3BpZl9wb2xsKCkuCistICoKKy0gKiBAcGFyYW0gbmV0aWYgdGhlIGx3aXAgbmV0d29yayBpbnRlcmZhY2Ugc3RydWN0dXJlIGZvciB0aGlzIGxvb3BpZgorLSAqIEBwYXJhbSBwIHRoZSAoSVApIHBhY2tldCB0byAnc2VuZCcKKy0gKiBAcGFyYW0gaXBhZGRyIHRoZSBpcCBhZGRyZXNzIHRvIHNlbmQgdGhlIHBhY2tldCB0byAobm90IHVzZWQgZm9yIGxvb3BpZikKKy0gKiBAcmV0dXJuIEVSUl9PSyBpZiB0aGUgcGFja2V0IGhhcyBiZWVuIHNlbnQKKy0gKiAgICAgICAgIEVSUl9NRU0gaWYgdGhlIHBidWYgdXNlZCB0byBjb3B5IHRoZSBwYWNrZXQgY291bGRuJ3QgYmUgYWxsb2NhdGVkCistICovCistc3RhdGljIGVycl90CistbG9vcGlmX291dHB1dChzdHJ1Y3QgbmV0aWYgKm5ldGlmLCBzdHJ1Y3QgcGJ1ZiAqcCwKKy0gICAgICAgc3RydWN0IGlwX2FkZHIgKmlwYWRkcikKKy17CistI2lmICFMV0lQX0xPT1BJRl9NVUxUSVRIUkVBRElORworLSAgU1lTX0FSQ0hfREVDTF9QUk9URUNUKGxldik7CistICBzdHJ1Y3QgbG9vcGlmX3ByaXZhdGUgKnByaXY7CistICBzdHJ1Y3QgcGJ1ZiAqbGFzdDsKKy0jZW5kaWYgLyogTFdJUF9MT09QSUZfTVVMVElUSFJFQURJTkcgKi8KKy0gIHN0cnVjdCBwYnVmICpyOworLSAgZXJyX3QgZXJyOworLQorLSAgTFdJUF9VTlVTRURfQVJHKGlwYWRkcik7CistCistICAvKiBBbGxvY2F0ZSBhIG5ldyBwYnVmICovCistICByID0gcGJ1Zl9hbGxvYyhQQlVGX1JBVywgcC0+dG90X2xlbiwgUEJVRl9SQU0pOworLSAgaWYgKHIgPT0gTlVMTCkgeworLSAgICByZXR1cm4gRVJSX01FTTsKKy0gIH0KKy0KKy0gIC8qIENvcHkgdGhlIHdob2xlIHBidWYgcXVldWUgcCBpbnRvIHRoZSBzaW5nbGUgcGJ1ZiByICovCistICBpZiAoKGVyciA9IHBidWZfY29weShyLCBwKSkgIT0gRVJSX09LKSB7CistICAgIHBidWZfZnJlZShyKTsKKy0gICAgciA9IE5VTEw7CistICAgIHJldHVybiBlcnI7CistICB9CistCistI2lmIExXSVBfTE9PUElGX01VTFRJVEhSRUFESU5HCistICAvKiBNdWx0aXRocmVhZGluZyBlbnZpcm9ubWVudCwgbmV0aWYtPmlucHV0KCkgaXMgc3VwcG9zZWQgdG8gcHV0IHRoZSBwYWNrZXQKKy0gICAgIGludG8gYSBtYWlsYm94LCBzbyB3ZSBjYW4gc2FmZWx5IGNhbGwgaXQgaGVyZSB3aXRob3V0IHJpc2tpbmcgdG8gcmUtZW50ZXIKKy0gICAgIGZ1bmN0aW9ucyB0aGF0IGFyZSBub3QgcmVlbnRyYW50IChUQ1AhISEpICovCistICBpZihuZXRpZi0+aW5wdXQociwgbmV0aWYpICE9IEVSUl9PSykgeworLSAgICBwYnVmX2ZyZWUocik7CistICAgIHIgPSBOVUxMOworLSAgfQorLSNlbHNlIC8qIExXSVBfTE9PUElGX01VTFRJVEhSRUFESU5HICovCistICAvKiBSYXcgQVBJIHdpdGhvdXQgdGhyZWFkczogcHV0IHRoZSBwYWNrZXQgb24gYSBsaW5rZWQgbGlzdCB3aGljaCBnZXRzIGVtcHRpZWQKKy0gICAgIHRocm91Z2ggY2FsbGluZyBsb29waWZfcG9sbCgpLiAqLworLSAgcHJpdiA9IChzdHJ1Y3QgbG9vcGlmX3ByaXZhdGUqKW5ldGlmLT5zdGF0ZTsKKy0KKy0gIC8qIGxldCBsYXN0IHBvaW50IHRvIHRoZSBsYXN0IHBidWYgaW4gY2hhaW4gciAqLworLSAgZm9yIChsYXN0ID0gcjsgbGFzdC0+bmV4dCAhPSBOVUxMOyBsYXN0ID0gbGFzdC0+bmV4dCk7CistICBTWVNfQVJDSF9QUk9URUNUKGxldik7CistICBpZihwcml2LT5maXJzdCAhPSBOVUxMKSB7CistICAgIExXSVBfQVNTRVJUKCJpZiBmaXJzdCAhPSBOVUxMLCBsYXN0IG11c3QgYWxzbyBiZSAhPSBOVUxMIiwgcHJpdi0+bGFzdCAhPSBOVUxMKTsKKy0gICAgcHJpdi0+bGFzdC0+bmV4dCA9IHI7CistICAgIHByaXYtPmxhc3QgPSBsYXN0OworLSAgfSBlbHNlIHsKKy0gICAgcHJpdi0+Zmlyc3QgPSByOworLSAgICBwcml2LT5sYXN0ID0gbGFzdDsKKy0gIH0KKy0gIFNZU19BUkNIX1VOUFJPVEVDVChsZXYpOworLSNlbmRpZiAvKiBMV0lQX0xPT1BJRl9NVUxUSVRIUkVBRElORyAqLworLQorLSAgcmV0dXJuIEVSUl9PSzsKKy19CistCisgLyoqCisgICogSW5pdGlhbGl6ZSBhIGx3aXAgbmV0d29yayBpbnRlcmZhY2Ugc3RydWN0dXJlIGZvciBhIGxvb3BiYWNrIGludGVyZmFjZQorICAqCitAQCAtMTkzLDE2ICs1Miw2IEBAIGxvb3BpZl9vdXRwdXQoc3RydWN0IG5ldGlmICpuZXRpZiwgc3RydWMKKyBlcnJfdAorIGxvb3BpZl9pbml0KHN0cnVjdCBuZXRpZiAqbmV0aWYpCisgeworLSNpZiAhTFdJUF9MT09QSUZfTVVMVElUSFJFQURJTkcKKy0gIHN0cnVjdCBsb29waWZfcHJpdmF0ZSAqcHJpdjsKKy0KKy0gIHByaXYgPSAoc3RydWN0IGxvb3BpZl9wcml2YXRlKiltZW1fbWFsbG9jKHNpemVvZihzdHJ1Y3QgbG9vcGlmX3ByaXZhdGUpKTsKKy0gIGlmKHByaXYgPT0gTlVMTCkKKy0gICAgcmV0dXJuIEVSUl9NRU07CistICBwcml2LT5maXJzdCA9IHByaXYtPmxhc3QgPSBOVUxMOworLSAgbmV0aWYtPnN0YXRlID0gcHJpdjsKKy0jZW5kaWYgLyogTFdJUF9MT09QSUZfTVVMVElUSFJFQURJTkcgKi8KKy0KKyAgIC8qIGluaXRpYWxpemUgdGhlIHNubXAgdmFyaWFibGVzIGFuZCBjb3VudGVycyBpbnNpZGUgdGhlIHN0cnVjdCBuZXRpZgorICAgICogaWZTcGVlZDogbm8gYXNzdW1wdGlvbiBjYW4gYmUgbWFkZSEKKyAgICAqLworQEAgLTIxMCw3ICs1OSw3IEBAIGxvb3BpZl9pbml0KHN0cnVjdCBuZXRpZiAqbmV0aWYpCisKKyAgIG5ldGlmLT5uYW1lWzBdID0gJ2wnOworICAgbmV0aWYtPm5hbWVbMV0gPSAnbyc7CistICBuZXRpZi0+b3V0cHV0ID0gbG9vcGlmX291dHB1dDsKKysgIG5ldGlmLT5vdXRwdXQgPSBuZXRpZl9sb29wX291dHB1dDsKKyAgIHJldHVybiBFUlJfT0s7CisgfQorCitJbmRleDogc3JjL25ldGlmL3NsaXBpZi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSQ1MgZmlsZTogL3NvdXJjZXMvbHdpcC9sd2lwL3NyYy9uZXRpZi9zbGlwaWYuYyx2CityZXRyaWV2aW5nIHJldmlzaW9uIDEuMjkKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4zMAorZGlmZiAtdSAtcCAtcjEuMjkgLXIxLjMwCistLS0gYS9zcmMvbmV0aWYvc2xpcGlmLmMJMzAgTm92IDIwMDcgMTc6MjI6MjEgLTAwMDAJMS4yOQorKysrIGIvc3JjL25ldGlmL3NsaXBpZi5jCTE3IEp1biAyMDA4IDIwOjE0OjA1IC0wMDAwCTEuMzAKK0BAIC00NCw2ICs0NCw5IEBACisKKyAjaW5jbHVkZSAibmV0aWYvc2xpcGlmLmgiCisgI2luY2x1ZGUgImx3aXAvb3B0LmgiCisrCisrI2lmIExXSVBfSEFWRV9TTElQSUYKKysKKyAjaW5jbHVkZSAibHdpcC9kZWYuaCIKKyAjaW5jbHVkZSAibHdpcC9wYnVmLmgiCisgI2luY2x1ZGUgImx3aXAvc3lzLmgiCitAQCAtMjczLDMgKzI3Niw0IEBAIHNsaXBpZl9pbml0KHN0cnVjdCBuZXRpZiAqbmV0aWYpCisgICBzeXNfdGhyZWFkX25ldyhTTElQSUZfVEhSRUFEX05BTUUsIHNsaXBpZl9sb29wLCBuZXRpZiwgU0xJUElGX1RIUkVBRF9TVEFDS1NJWkUsIFNMSVBJRl9USFJFQURfUFJJTyk7CisgICByZXR1cm4gRVJSX09LOworIH0KKysjZW5kaWYgLyogTFdJUF9IQVZFX1NMSVBJRiAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL21pbmktb3NfdWRpdm1vZGRpNC1nY2M3LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL21pbmktb3NfdWRpdm1vZGRpNC1nY2M3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzNzQ1YmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvbWluaS1vc191ZGl2bW9kZGk0LWdjYzcucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBkOTkxYmRiYzA2MjI0ODIyMTUxMWVjYjc5NTYxN2MzNmIzN2UxZDJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KK0RhdGU6IFdlZCwgOSBBdWcgMjAxNyAxMzoxNTo0OCArMDEwMAorU3ViamVjdDogW1BBVENIXSBsaWIvbWF0aC5jOiBpbXBsZW1lbnQgX191ZGl2bW9kZGk0CisKK1NvbWUgY29kZSBjb21waWxlZCBieSBnY2MgNyByZXF1aXJlcyB0aGlzLgorCitTaWduZWQtb2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgorUmV2aWV3ZWQtYnk6IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KKy0tLQorIGxpYi9tYXRoLmMgfCAxMCArKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYi9tYXRoLmMgYi9saWIvbWF0aC5jCitpbmRleCA1NjEzOTNlLi5iOThjYzFkIDEwMDY0NAorLS0tIGEvbGliL21hdGguYworKysrIGIvbGliL21hdGguYworQEAgLTYsNiArNiw3IEBACisgICogICAgICAgIEZpbGU6IG1hdGguYworICAqICAgICAgQXV0aG9yOiBSb2xmIE5ldWdlYmF1ZXIgKG5ldWdlYmFyQGRjcy5nbGEuYWMudWspCisgICogICAgIENoYW5nZXM6IAorKyAqICAgICAgICBJbXBsZW1lbnQgX191ZGl2bW9kZGk0IChXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPikKKyAgKiAgICAgICAgICAgICAgCisgICogICAgICAgIERhdGU6IEF1ZyAyMDAzCisgICogCitAQCAtMzk3LDYgKzM5OCwxNSBAQCBfX3Vtb2RkaTModV9xdWFkX3QgYSwgdV9xdWFkX3QgYikKKyB9CisgCisgLyoKKysgKiBSZXR1cm5zIHRoZSBxdW90aWVudCBhbmQgcGxhY2VzIHJlbWFpbmRlciBpbiByCisrICovCisrdV9xdWFkX3QKKytfX3VkaXZtb2RkaTQodV9xdWFkX3QgYSwgdV9xdWFkX3QgYiwgdV9xdWFkX3QgKnIpCisreworKwlyZXR1cm4gX19xZGl2cmVtKGEsIGIsIHIpOworK30KKysKKysvKgorICAqIEZyb20KKyAgKiBtb2RkaTMuYworICAqLworLS0KKzIuMTEuMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL25ld2xpYi1jaGsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvbmV3bGliLWNoay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWQwMTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL25ld2xpYi1jaGsucGF0Y2gKQEAgLTAsMCArMSwxNTUgQEAKKy0tLSBhL25ld2xpYi9saWJjL3N0ZGlvL2ZwcmludGZfY2hrLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL25ld2xpYi9saWJjL3N0ZGlvL2ZwcmludGZfY2hrLmMJMjAwOS0wMi0yNiAxOTowMjo1My4wMDAwMDAwMDAgLTA1MDAKK0BAIC0wLDAgKzEsMjEgQEAKKysjaW5jbHVkZSA8c3RkYXJnLmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrCisrLyoKKysgKiBTdHViIGltcGxlbWVudGF0aW9uIG9mIF9fZnByaW50Zl9jaGsgYWRhcHRlZCBmcm9tIGdsaWJjIDIuNy4gIFRoaXMgCisrICogZG9lc24ndCBhY3R1YWxseSBpbXBsZW1lbnQgYW55IGJ1ZmZlciBvdmVyZmxvdyBwcm90ZWN0aW9uLiAgSXQganVzdCBtYWtlcworKyAqIHRoZSBsaW5rZXIgaGFwcHkgOikKKysqLworK2ludAorK19fZnByaW50Zl9jaGsgKEZJTEUgKmZwLCBpbnQgZmxhZywgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCisreworKyAgdmFfbGlzdCBhcDsKKysgIGludCBkb25lOworKworKyAgdmFfc3RhcnQgKGFwLCBmb3JtYXQpOworKyAgZG9uZSA9IHZmcHJpbnRmIChmcCwgZm9ybWF0LCBhcCk7CisrICB2YV9lbmQgKGFwKTsKKysKKysgIHJldHVybiBkb25lOworK30KKysKKy0tLSBhL25ld2xpYi9saWJjL3N0ZGlvL01ha2VmaWxlLmFtCTIwMDctMDgtMDIgMTY6MjM6MDYuMDAwMDAwMDAwIC0wNDAwCisrKysgYi9uZXdsaWIvbGliYy9zdGRpby9NYWtlZmlsZS5hbQkyMDA5LTAyLTI2IDE4OjE0OjUzLjAwMDAwMDAwMCAtMDUwMAorQEAgLTIwLDYgKzIwLDcgQEAKKyAJZmxhZ3MuYwkJCVwKKyAJZm9wZW4uYwkJCVwKKyAJZnByaW50Zi5jCQkJXAorKwlmcHJpbnRmX2Noay5jCQlcCisgCWZwdXRjLmMJCQlcCisgCWZwdXRzLmMJCQlcCisgCWZyZWFkLmMJCQlcCitAQCAtNjUsNiArNjYsNyBAQAorIAlzbmlwcmludGYuYwkJCVwKKyAJc25wcmludGYuYwkJCVwKKyAJc3ByaW50Zi5jCQkJXAorKwlzcHJpbnRmX2Noay5jCQkJXAorIAlzc2NhbmYuYwkJCVwKKyAJc3RkaW8uYwkJCVwKKyAJdG1wZmlsZS5jCQkJXAorLS0tIGEvbmV3bGliL2xpYmMvc3RkaW8vTWFrZWZpbGUuaW4JMjAwNy0xMi0xOSAxNzozNjozOC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL25ld2xpYi9saWJjL3N0ZGlvL01ha2VmaWxlLmluCTIwMDktMDItMjYgMTg6NDM6NTIuMDAwMDAwMDAwIC0wNTAwCitAQCAtNjMsNyArNjMsOCBAQAorIAlsaWJfYS1mZ2V0cy4kKE9CSkVYVCkgbGliX2EtZmlsZW5vLiQoT0JKRVhUKSBcCisgCWxpYl9hLWZpbmRmcC4kKE9CSkVYVCkgbGliX2EtZmlwcmludGYuJChPQkpFWFQpIFwKKyAJbGliX2EtZmxhZ3MuJChPQkpFWFQpIGxpYl9hLWZvcGVuLiQoT0JKRVhUKSBcCistCWxpYl9hLWZwcmludGYuJChPQkpFWFQpIGxpYl9hLWZwdXRjLiQoT0JKRVhUKSBcCisrCWxpYl9hLWZwcmludGYuJChPQkpFWFQpIGxpYl9hLWZwcmludGZfY2hrLiQoT0JKRVhUKSBcCisrCWxpYl9hLWZwdXRjLiQoT0JKRVhUKSBcCisgCWxpYl9hLWZwdXRzLiQoT0JKRVhUKSBsaWJfYS1mcmVhZC4kKE9CSkVYVCkgXAorIAlsaWJfYS1mcmVvcGVuLiQoT0JKRVhUKSBsaWJfYS1mc2NhbmYuJChPQkpFWFQpIFwKKyAJbGliX2EtZmlzY2FuZi4kKE9CSkVYVCkgbGliX2EtZnNlZWsuJChPQkpFWFQpIFwKK0BAIC04Niw2ICs4Nyw3IEBACisgCWxpYl9hLXNldHZidWYuJChPQkpFWFQpIGxpYl9hLXNpcHJpbnRmLiQoT0JKRVhUKSBcCisgCWxpYl9hLXNpc2NhbmYuJChPQkpFWFQpIGxpYl9hLXNuaXByaW50Zi4kKE9CSkVYVCkgXAorIAlsaWJfYS1zbnByaW50Zi4kKE9CSkVYVCkgbGliX2Etc3ByaW50Zi4kKE9CSkVYVCkgXAorKwlsaWJfYS1zcHJpbnRmX2Noay4kKE9CSkVYVCkgXAorIAlsaWJfYS1zc2NhbmYuJChPQkpFWFQpIGxpYl9hLXN0ZGlvLiQoT0JKRVhUKSBcCisgCWxpYl9hLXRtcGZpbGUuJChPQkpFWFQpIGxpYl9hLXRtcG5hbS4kKE9CSkVYVCkgXAorIAlsaWJfYS11bmdldGMuJChPQkpFWFQpIGxpYl9hLXZkaXByaW50Zi4kKE9CSkVYVCkgXAorQEAgLTEyMiwxNSArMTI0LDE1IEBACisgTFRMSUJSQVJJRVMgPSAkKG5vaW5zdF9MVExJQlJBUklFUykKKyBhbV9fb2JqZWN0c180ID0gY2xlYXJlcnIubG8gZmNsb3NlLmxvIGZkb3Blbi5sbyBmZW9mLmxvIGZlcnJvci5sbyBcCisgCWZmbHVzaC5sbyBmZ2V0Yy5sbyBmZ2V0cG9zLmxvIGZnZXRzLmxvIGZpbGVuby5sbyBmaW5kZnAubG8gXAorLQlmaXByaW50Zi5sbyBmbGFncy5sbyBmb3Blbi5sbyBmcHJpbnRmLmxvIGZwdXRjLmxvIGZwdXRzLmxvIFwKKy0JZnJlYWQubG8gZnJlb3Blbi5sbyBmc2NhbmYubG8gZmlzY2FuZi5sbyBmc2Vlay5sbyBmc2V0cG9zLmxvIFwKKysJZmlwcmludGYubG8gZmxhZ3MubG8gZm9wZW4ubG8gZnByaW50Zi5sbyBmcHJpbnRmX2Noay5sbyBmcHV0Yy5sbyBcCisrCWZwdXRzLmxvIGZyZWFkLmxvIGZyZW9wZW4ubG8gZnNjYW5mLmxvIGZpc2NhbmYubG8gZnNlZWsubG8gZnNldHBvcy5sbyBcCisgCWZ0ZWxsLmxvIGZ2d3JpdGUubG8gZndhbGsubG8gZndyaXRlLmxvIGdldGMubG8gZ2V0Y2hhci5sbyBcCisgCWdldGNfdS5sbyBnZXRjaGFyX3UubG8gZ2V0ZGVsaW0ubG8gZ2V0bGluZS5sbyBnZXRzLmxvIFwKKyAJaXByaW50Zi5sbyBpc2NhbmYubG8gbWFrZWJ1Zi5sbyBwZXJyb3IubG8gcHJpbnRmLmxvIHB1dGMubG8gXAorIAlwdXRjaGFyLmxvIHB1dGNfdS5sbyBwdXRjaGFyX3UubG8gcHV0cy5sbyByZWZpbGwubG8gcmVtb3ZlLmxvIFwKKyAJcmVuYW1lLmxvIHJld2luZC5sbyByZ2V0LmxvIHNjYW5mLmxvIHNjY2wubG8gc2V0YnVmLmxvIFwKKyAJc2V0YnVmZmVyLmxvIHNldGxpbmVidWYubG8gc2V0dmJ1Zi5sbyBzaXByaW50Zi5sbyBzaXNjYW5mLmxvIFwKKy0Jc25pcHJpbnRmLmxvIHNucHJpbnRmLmxvIHNwcmludGYubG8gc3NjYW5mLmxvIHN0ZGlvLmxvIFwKKysJc25pcHJpbnRmLmxvIHNucHJpbnRmLmxvIHNwcmludGYubG8gc3ByaW50Zl9jaGsubG8gc3NjYW5mLmxvIHN0ZGlvLmxvIFwKKyAJdG1wZmlsZS5sbyB0bXBuYW0ubG8gdW5nZXRjLmxvIHZkaXByaW50Zi5sbyB2ZHByaW50Zi5sbyBcCisgCXZpcHJpbnRmLmxvIHZpc2NhbmYubG8gdnByaW50Zi5sbyB2c2NhbmYubG8gdnNpcHJpbnRmLmxvIFwKKyAJdnNpc2NhbmYubG8gdnNucHJpbnRmLmxvIHZzbmlwcmludGYubG8gdnNwcmludGYubG8gdnNzY2FuZi5sbyBcCitAQCAtMzQ0LDYgKzM0Niw3IEBACisgCWZsYWdzLmMJCQlcCisgCWZvcGVuLmMJCQlcCisgCWZwcmludGYuYwkJCVwKKysJZnByaW50Zl9jaGsuYwkJCVwKKyAJZnB1dGMuYwkJCVwKKyAJZnB1dHMuYwkJCVwKKyAJZnJlYWQuYwkJCVwKK0BAIC0zODksNiArMzkyLDcgQEAKKyAJc25pcHJpbnRmLmMJCQlcCisgCXNucHJpbnRmLmMJCQlcCisgCXNwcmludGYuYwkJCVwKKysJc3ByaW50Zl9jaGsuYwkJCVwKKyAJc3NjYW5mLmMJCQlcCisgCXN0ZGlvLmMJCQlcCisgCXRtcGZpbGUuYwkJCVwKK0BAIC01MDgsNiArNTEyLDcgQEAKKyAJc2lwcmludGYuZGVmCQlcCisgCXNpc2NhbmYuZGVmCQlcCisgCXNwcmludGYuZGVmCQlcCisrCXNwcmludGZfY2hrLmRlZgkJXAorIAlzc2NhbmYuZGVmCQlcCisgCXRtcGZpbGUuZGVmCQlcCisgCXRtcG5hbS5kZWYJCVwKK0BAIC02NzgsNiArNjgzLDEyIEBACisgbGliX2EtZnByaW50Zi5vYmo6IGZwcmludGYuYworIAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJfYS1mcHJpbnRmLm9iaiBgaWYgdGVzdCAtZiAnZnByaW50Zi5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2ZwcmludGYuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZnByaW50Zi5jJzsgZmlgCisgCisrbGliX2EtZnByaW50Zl9jaGsubzogZnByaW50Zl9jaGsuYworKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJfYS1mcHJpbnRmX2Noay5vIGB0ZXN0IC1mICdmcHJpbnRmX2Noay5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BmcHJpbnRmX2Noay5jCisrCisrbGliX2EtZnByaW50Zl9jaGsub2JqOiBmcHJpbnRmX2Noay5jCisrCSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYl9hX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYl9hLWZwcmludGZfY2hrLm9iaiBgaWYgdGVzdCAtZiAnZnByaW50Zl9jaGsuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdmcHJpbnRmX2Noay5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9mcHJpbnRmX2Noay5jJzsgZmlgCisrCisgbGliX2EtZnB1dGMubzogZnB1dGMuYworIAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJfYS1mcHV0Yy5vIGB0ZXN0IC1mICdmcHV0Yy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BmcHV0Yy5jCisgCitAQCAtOTQ4LDYgKzk1OSwxMiBAQAorIGxpYl9hLXNwcmludGYub2JqOiBzcHJpbnRmLmMKKyAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliX2Etc3ByaW50Zi5vYmogYGlmIHRlc3QgLWYgJ3NwcmludGYuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdzcHJpbnRmLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL3NwcmludGYuYyc7IGZpYAorIAorK2xpYl9hLXNwcmludGZfY2hrLm86IHNwcmludGZfY2hrLmMKKysJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliX2Etc3ByaW50Zl9jaGsubyBgdGVzdCAtZiAnc3ByaW50Zl9jaGsuYycgfHwgZWNobyAnJChzcmNkaXIpLydgc3ByaW50Zl9jaGsuYworKworK2xpYl9hLXNwcmludGZfY2hrLm9iajogc3ByaW50Zl9jaGsuYworKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJfYS1zcHJpbnRmX2Noay5vYmogYGlmIHRlc3QgLWYgJ3NwcmludGZfY2hrLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnc3ByaW50Zl9jaGsuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2Rpcikvc3ByaW50Zl9jaGsuYyc7IGZpYAorKworIGxpYl9hLXNzY2FuZi5vOiBzc2NhbmYuYworIAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJfYS1zc2NhbmYubyBgdGVzdCAtZiAnc3NjYW5mLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHNzY2FuZi5jCisgCistLS0gYS9uZXdsaWIvbGliYy9zdGRpby9zcHJpbnRmX2Noay5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9uZXdsaWIvbGliYy9zdGRpby9zcHJpbnRmX2Noay5jCTIwMDktMDItMjYgMTk6MDI6MjYuMDAwMDAwMDAwIC0wNTAwCitAQCAtMCwwICsxLDIxIEBACisrI2luY2x1ZGUgPHN0ZGFyZy5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKworKy8qCisrICogU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBfX3NwcmludGZfY2hrIGFkYXB0ZWQgZnJvbSBnbGliYyAyLjcuICBUaGlzIAorKyAqIGRvZXNuJ3QgYWN0dWFsbHkgaW1wbGVtZW50IGFueSBidWZmZXIgb3ZlcmZsb3cgcHJvdGVjdGlvbi4gIEl0IGp1c3QgbWFrZXMKKysgKiB0aGUgbGlua2VyIGhhcHB5IDopCisrKi8KKytpbnQKKytfX3NwcmludGZfY2hrIChjaGFyICpzLCBpbnQgZmxhZ3MsIHNpemVfdCBzbGVuLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKKyt7CisrICB2YV9saXN0IGFyZzsKKysgIGludCBkb25lOworKworKyAgdmFfc3RhcnQgKGFyZywgZm9ybWF0KTsKKysgIGRvbmUgPSB2c3ByaW50ZiAocywgZm9ybWF0LCBhcmcpOworKyAgdmFfZW5kIChhcmcpOworKworKyAgcmV0dXJuIGRvbmU7CisrfQorKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL25ld2xpYi1zdGRpbnQtc2l6ZV9tYXgtZml4LWZyb20tMS4xNy4wLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL25ld2xpYi1zdGRpbnQtc2l6ZV9tYXgtZml4LWZyb20tMS4xNy4wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MTBkNjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvbmV3bGliLXN0ZGludC1zaXplX21heC1maXgtZnJvbS0xLjE3LjAucGF0Y2gKQEAgLTAsMCArMSwxNiBAQAorLS0tIGEvbmV3bGliL2xpYmMvaW5jbHVkZS9zdGRpbnQuaC5vcmlnCTIwMDYtMDgtMTcgMDA6Mzk6NDMuMDAwMDAwMDAwICswMzAwCisrKysgYi9uZXdsaWIvbGliYy9pbmNsdWRlL3N0ZGludC5oCTIwMDktMDgtMjUgMTc6MzM6MjMuMDAwMDAwMDAwICswMzAwCitAQCAtMzQ4LDggKzM0OCwxMSBAQAorICNlbmRpZgorIAorIC8qIFRoaXMgbXVzdCBtYXRjaCBzaXplX3QgaW4gc3RkZGVmLmgsIGN1cnJlbnRseSBsb25nIHVuc2lnbmVkIGludCAqLworLSNkZWZpbmUgU0laRV9NSU4gKC1fX1NURElOVF9FWFAoTE9OR19NQVgpIC0gMUwpCistI2RlZmluZSBTSVpFX01BWCBfX1NURElOVF9FWFAoTE9OR19NQVgpCisrI2lmZGVmIF9fU0laRV9NQVhfXworKyNkZWZpbmUgU0laRV9NQVggX19TSVpFX01BWF9fCisrI2Vsc2UKKysjZGVmaW5lIFNJWkVfTUFYIChfX1NURElOVF9FWFAoTE9OR19NQVgpICogMlVMICsgMSkKKysjZW5kaWYKKyAKKyAvKiBUaGlzIG11c3QgbWF0Y2ggc2lnX2F0b21pY190IGluIDxzaWduYWwuaD4gKGN1cnJlbnRseSBpbnQpICovCisgI2RlZmluZSBTSUdfQVRPTUlDX01JTiAoLV9fU1RESU5UX0VYUChJTlRfTUFYKSAtIDEpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvbmV3bGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL25ld2xpYi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmY0MDlhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL25ld2xpYi5wYXRjaApAQCAtMCwwICsxLDcyNyBAQAorVGhlcmUgaXMgYSBtaXggYmV0d2VlbiBsb25ncyBhbmQgbG9uZyBsb25ncy4KKworSW5kZXg6IG5ld2xpYi9saWJjL2luY2x1ZGUvaW50dHlwZXMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9uZXdsaWIvbGliYy9pbmNsdWRlL2ludHR5cGVzLmgsdgorcmV0cmlldmluZyByZXZpc2lvbiAxLjMKK2RpZmYgLXUgLXAgLXIxLjMgaW50dHlwZXMuaAorLS0tIGEvbmV3bGliL2xpYmMvaW5jbHVkZS9pbnR0eXBlcy5oCTE2IERlYyAyMDA1IDE5OjAzOjEyIC0wMDAwCTEuMworKysrIGIvbmV3bGliL2xpYmMvaW5jbHVkZS9pbnR0eXBlcy5oCTggTm92IDIwMDcgMTY6MzI6NDQgLTAwMDAKK0BAIC0xNjMsMTIgKzE2MywxMiBAQAorIAorIAorIC8qIDY0LWJpdCB0eXBlcyAqLworLSNpZiBfX2hhdmVfbG9uZ2xvbmc2NAorLSNkZWZpbmUgX19QUkk2NCh4KSBfX1NUUklOR0lGWShsbCMjeCkKKy0jZGVmaW5lIF9fU0NONjQoeCkgX19TVFJJTkdJRlkobGwjI3gpCistI2VsaWYgX19oYXZlX2xvbmc2NAorKyNpZiBfX2hhdmVfbG9uZzY0CisgI2RlZmluZSBfX1BSSTY0KHgpIF9fU1RSSU5HSUZZKGwjI3gpCisgI2RlZmluZSBfX1NDTjY0KHgpIF9fU1RSSU5HSUZZKGwjI3gpCisrI2VsaWYgX19oYXZlX2xvbmdsb25nNjQKKysjZGVmaW5lIF9fUFJJNjQoeCkgX19TVFJJTkdJRlkobGwjI3gpCisrI2RlZmluZSBfX1NDTjY0KHgpIF9fU1RSSU5HSUZZKGxsIyN4KQorICNlbHNlCisgI2RlZmluZSBfX1BSSTY0KHgpIF9fU1RSSU5HSUZZKHgpCisgI2RlZmluZSBfX1NDTjY0KHgpIF9fU1RSSU5HSUZZKHgpCitAQCAtMjE3LDEyICsyMTcsMTIgQEAKKyAjZW5kaWYKKyAKKyAvKiBtYXgtYml0IHR5cGVzICovCistI2lmIF9faGF2ZV9sb25nbG9uZzY0CistI2RlZmluZSBfX1BSSU1BWCh4KSBfX1NUUklOR0lGWShsbCMjeCkKKy0jZGVmaW5lIF9fU0NOTUFYKHgpIF9fU1RSSU5HSUZZKGxsIyN4KQorLSNlbGlmIF9faGF2ZV9sb25nNjQKKysjaWYgX19oYXZlX2xvbmc2NAorICNkZWZpbmUgX19QUklNQVgoeCkgX19TVFJJTkdJRlkobCMjeCkKKyAjZGVmaW5lIF9fU0NOTUFYKHgpIF9fU1RSSU5HSUZZKGwjI3gpCisrI2VsaWYgX19oYXZlX2xvbmdsb25nNjQKKysjZGVmaW5lIF9fUFJJTUFYKHgpIF9fU1RSSU5HSUZZKGxsIyN4KQorKyNkZWZpbmUgX19TQ05NQVgoeCkgX19TVFJJTkdJRlkobGwjI3gpCisgI2Vsc2UKKyAjZGVmaW5lIF9fUFJJTUFYKHgpIF9fU1RSSU5HSUZZKHgpCisgI2RlZmluZSBfX1NDTk1BWCh4KSBfX1NUUklOR0lGWSh4KQorQEAgLTI0MiwxMiArMjQyLDEyIEBACisgI2RlZmluZSBTQ054TUFYCQlfX1NDTk1BWCh4KQorIAorIC8qIHB0ciB0eXBlcyAqLworLSNpZiBfX2hhdmVfbG9uZ2xvbmc2NAorLSNkZWZpbmUgX19QUklQVFIoeCkgX19TVFJJTkdJRlkobGwjI3gpCistI2RlZmluZSBfX1NDTlBUUih4KSBfX1NUUklOR0lGWShsbCMjeCkKKy0jZWxpZiBfX2hhdmVfbG9uZzY0CisrI2lmIF9faGF2ZV9sb25nNjQKKyAjZGVmaW5lIF9fUFJJUFRSKHgpIF9fU1RSSU5HSUZZKGwjI3gpCisgI2RlZmluZSBfX1NDTlBUUih4KSBfX1NUUklOR0lGWShsIyN4KQorKyNlbGlmIF9faGF2ZV9sb25nbG9uZzY0CisrI2RlZmluZSBfX1BSSVBUUih4KSBfX1NUUklOR0lGWShsbCMjeCkKKysjZGVmaW5lIF9fU0NOUFRSKHgpIF9fU1RSSU5HSUZZKGxsIyN4KQorICNlbHNlCisgI2RlZmluZSBfX1BSSVBUUih4KSBfX1NUUklOR0lGWSh4KQorICNkZWZpbmUgX19TQ05QVFIoeCkgX19TVFJJTkdJRlkoeCkKKworV2UgZG9uJ3Qgd2FudCB1P2ludDMyX3QgdG8gYmUgbG9uZyBhcyBvdXIgY29kZSBhc3N1bWUgaW4gYSBsb3Qgb2YgcGxhY2VzIHRvIGJlCitpbnQuCisKK0luZGV4OiBuZXdsaWIvbGliYy9pbmNsdWRlL3N0ZGludC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL25ld2xpYi9saWJjL2luY2x1ZGUvc3RkaW50LmgsdgorcmV0cmlldmluZyByZXZpc2lvbiAxLjEwCitkaWZmIC11IC1wIC1yMS4xMCBzdGRpbnQuaAorLS0tIGEvbmV3bGliL2xpYmMvaW5jbHVkZS9zdGRpbnQuaAkxNiBBdWcgMjAwNiAyMTozOTo0MyAtMDAwMAkxLjEwCisrKysgYi9uZXdsaWIvbGliYy9pbmNsdWRlL3N0ZGludC5oCTEyIEZlYiAyMDA4IDEzOjA3OjUyIC0wMDAwCitAQCAtMzgsNyArMzgsNyBAQCBleHRlcm4gIkMiIHsKKyAjaWYgX19TVERJTlRfRVhQKExPTkdfTUFYKSA+IDB4N2ZmZmZmZmYKKyAjZGVmaW5lIF9faGF2ZV9sb25nNjQgMQorICNlbGlmIF9fU1RESU5UX0VYUChMT05HX01BWCkgPT0gMHg3ZmZmZmZmZiAmJiAhZGVmaW5lZChfX1NQVV9fKQorLSNkZWZpbmUgX19oYXZlX2xvbmczMiAxCisrLyogI2RlZmluZSBfX2hhdmVfbG9uZzMyIDEgKi8KKyAjZW5kaWYKKyAKKyAjaWYgX19TVERJTlRfRVhQKFNDSEFSX01BWCkgPT0gMHg3ZgorCitEZWZpbmUgdGhlIGJhc2ljIGlhNjQganVtcCBidWZmZXIKKworSW5kZXg6IG5ld2xpYi9saWJjL2luY2x1ZGUvc3lzL2NvbmZpZy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL2NvbmZpZy5oLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS40NworZGlmZiAtdSAtcCAtcjEuNDcgY29uZmlnLmgKKy0tLSBhL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL2NvbmZpZy5oCTE1IE1hciAyMDA3IDIxOjMyOjEyIC0wMDAwCTEuNDcKKysrKyBiL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL2NvbmZpZy5oCTggTm92IDIwMDcgMTY6MzI6NDQgLTAwMDAKK0BAIC03MSw2ICs3MSwxMCBAQAorICNlbmRpZgorICNlbmRpZgorIAorKyNpZm5kZWYgX19EWU5BTUlDX1JFRU5UX18KKysjZGVmaW5lIF9fRFlOQU1JQ19SRUVOVF9fCisrI2VuZGlmCisrCisgI2lmZGVmIF9fbW4xMDIwMF9fCisgI2RlZmluZSBfX1NNQUxMX0JJVEZJRUxEUworICNlbmRpZgorCitEeW5hbWljIHBvaW50ZXIgdG8gb3VyIHJlZW50cmFuY3kgem9uZQorCitJbmRleDogbmV3bGliL2xpYmMvcmVlbnQvZ2V0cmVlbnQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9uZXdsaWIvbGliYy9yZWVudC9nZXRyZWVudC5jLHYKK3JldHJpZXZpbmcgcmV2aXNpb24gMS4yCitkaWZmIC11IC1wIC1yMS4yIGdldHJlZW50LmMKKy0tLSBhL25ld2xpYi9saWJjL3JlZW50L2dldHJlZW50LmMJNyBTZXAgMjAwNyAwMDo0NTo1NSAtMDAwMAkxLjIKKysrKyBiL25ld2xpYi9saWJjL3JlZW50L2dldHJlZW50LmMJOCBOb3YgMjAwNyAxNjozMjo0NCAtMDAwMAorQEAgLTMsMTIgKzMsMjAgQEAKKyAjaW5jbHVkZSA8X2Fuc2kuaD4KKyAjaW5jbHVkZSA8cmVlbnQuaD4KKyAKKysjZGVmaW5lIHdlYWtfYWxpYXMobmFtZSwgYWxpYXNuYW1lKSBcCisrICBleHRlcm4gX190eXBlb2YgKG5hbWUpIGFsaWFzbmFtZSBfX2F0dHJpYnV0ZV9fICgod2VhaywgYWxpYXMgKCNuYW1lKSkpOworKworICNpZmRlZiBfX2dldHJlZW50CisgI3VuZGVmIF9fZ2V0cmVlbnQKKyAjZW5kaWYKKysjaWZkZWYgX19saWJjX2dldHJlZW50CisrI3VuZGVmIF9fbGliY19nZXRyZWVudAorKyNlbmRpZgorIAorIHN0cnVjdCBfcmVlbnQgKgorLV9ERUZVTl9WT0lEKF9fZ2V0cmVlbnQpCisrX19saWJjX2dldHJlZW50ICh2b2lkKQorIHsKKyAgIHJldHVybiBfaW1wdXJlX3B0cjsKKyB9Cisrd2Vha19hbGlhcyhfX2xpYmNfZ2V0cmVlbnQsX19nZXRyZWVudCkKKysKKworV2UgY2FuJ3QgcHJvdmlkZSBhIHJlZCB6b25lIGluIG1pbmktb3MuCisKK0luZGV4OiBuZXdsaWIvbGliYy9tYWNoaW5lL3g4Nl82NC9tZW1jcHkuUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9uZXdsaWIvbGliYy9tYWNoaW5lL3g4Nl82NC9tZW1jcHkuUyx2CityZXRyaWV2aW5nIHJldmlzaW9uIDEuMQorZGlmZiAtdSAtcCAtcjEuMSBtZW1jcHkuUworLS0tIGEvbmV3bGliL2xpYmMvbWFjaGluZS94ODZfNjQvbWVtY3B5LlMJMjggQXVnIDIwMDcgMjE6NTY6NDkgLTAwMDAJMS4xCisrKysgYi9uZXdsaWIvbGliYy9tYWNoaW5lL3g4Nl82NC9tZW1jcHkuUwk4IE5vdiAyMDA3IDE2OjMyOjQ0IC0wMDAwCitAQCAtMzAsMTAgKzMwLDE4IEBAIHF1YWR3b3JkX2FsaWduZWQ6CisgICBjbXBxICAgICQyNTYsIHJkeAorICAgamIgICAgICBxdWFkd29yZF9jb3B5CisgCisrI2lmIDEKKysgIHN1YnEgICAgJDMyLCByc3AKKysgIG1vdnEgICAgcmF4LCAyNCAocnNwKQorKyAgbW92cSAgICByMTIsIDE2IChyc3ApCisrICBtb3ZxICAgIHIxMywgOCAgKHJzcCkKKysgIG1vdnEgICAgcjE0LCAwICAocnNwKQorKyNlbHNlCisgICBtb3ZxICAgIHJheCwgLTggIChyc3ApCisgICBtb3ZxICAgIHIxMiwgLTE2IChyc3ApCisgICBtb3ZxICAgIHIxMywgLTI0IChyc3ApCisgICBtb3ZxICAgIHIxNCwgLTMyIChyc3ApCisrI2VuZGlmCisgCisgICBtb3ZxICAgIHJkeCwgcmN4ICAgICAgICAgICAgICAgIC8qIENvcHkgMTI4IGJ5dGVzIGF0IGEgdGltZSB3aXRoIG1pbmltdW0gY2FjaGUgcG9sdXRpb24gKi8KKyAgIHNocnEgICAgJDcsIHJjeAorQEAgLTg5LDEwICs5NywxOCBAQCBsb29wOgorICAgbW92cSAgICByZHgsIHJjeAorICAgYW5kcSAgICAkMTI3LCByY3gKKyAgIHJlcCAgICAgbW92c2IKKysjaWYgMQorKyAgbW92cSAgICAyNCAocnNwKSwgcmF4CisrICBtb3ZxICAgIDE2IChyc3ApLCByMTIKKysgIG1vdnEgICAgOCAgKHJzcCksIHIxMworKyAgbW92cSAgICAwICAocnNwKSwgcjE0CisrICBhZGRxICAgICQzMiwgcnNwCisrI2Vsc2UKKyAgIG1vdnEgICAgLTggIChyc3ApLCByYXgKKyAgIG1vdnEgICAgLTE2IChyc3ApLCByMTIKKyAgIG1vdnEgICAgLTI0IChyc3ApLCByMTMKKyAgIG1vdnEgICAgLTMyIChyc3ApLCByMTQKKysjZW5kaWYKKyAgIHJldAorIAorIAorLS0tIGEvbmV3bGliL2xpYmMvbWFjaGluZS94ODZfNjQveDg2XzY0bWFjaC5oLm9yaWcJMjAwOC0wNy0xMSAxNDo1NzoyMy4wNjIyNjkwMDAgKzAxMDAKKysrKyBiL25ld2xpYi9saWJjL21hY2hpbmUveDg2XzY0L3g4Nl82NG1hY2guaAkyMDA4LTA3LTExIDE0OjU4OjAxLjI2MjUwMzAwMCArMDEwMAorQEAgLTIyLDgxICsyMiw4MSBAQAorIAorICNkZWZpbmUgUkVHKHgpIENPTkNBVDEoX19SRUdfUFJFRklYX18sIHgpCisgCistI2RlZmluZSByYXggUkVHKHJheCkKKy0jZGVmaW5lIHJieCBSRUcocmJ4KQorLSNkZWZpbmUgcmN4IFJFRyhyY3gpCistI2RlZmluZSByZHggUkVHKHJkeCkKKy0jZGVmaW5lIHJzaSBSRUcocnNpKQorLSNkZWZpbmUgcmRpIFJFRyhyZGkpCistI2RlZmluZSByYnAgUkVHKHJicCkKKy0jZGVmaW5lIHJzcCBSRUcocnNwKQorLQorLSNkZWZpbmUgcjggIFJFRyhyOCkKKy0jZGVmaW5lIHI5ICBSRUcocjkpCistI2RlZmluZSByMTAgUkVHKHIxMCkKKy0jZGVmaW5lIHIxMSBSRUcocjExKQorLSNkZWZpbmUgcjEyIFJFRyhyMTIpCistI2RlZmluZSByMTMgUkVHKHIxMykKKy0jZGVmaW5lIHIxNCBSRUcocjE0KQorLSNkZWZpbmUgcjE1IFJFRyhyMTUpCistCistI2RlZmluZSBlYXggUkVHKGVheCkKKy0jZGVmaW5lIGVieCBSRUcoZWJ4KQorLSNkZWZpbmUgZWN4IFJFRyhlY3gpCistI2RlZmluZSBlZHggUkVHKGVkeCkKKy0jZGVmaW5lIGVzaSBSRUcoZXNpKQorLSNkZWZpbmUgZWRpIFJFRyhlZGkpCistI2RlZmluZSBlYnAgUkVHKGVicCkKKy0jZGVmaW5lIGVzcCBSRUcoZXNwKQorLQorLSNkZWZpbmUgc3QwIFJFRyhzdCkKKy0jZGVmaW5lIHN0MSBSRUcoc3QoMSkpCistI2RlZmluZSBzdDIgUkVHKHN0KDIpKQorLSNkZWZpbmUgc3QzIFJFRyhzdCgzKSkKKy0jZGVmaW5lIHN0NCBSRUcoc3QoNCkpCistI2RlZmluZSBzdDUgUkVHKHN0KDUpKQorLSNkZWZpbmUgc3Q2IFJFRyhzdCg2KSkKKy0jZGVmaW5lIHN0NyBSRUcoc3QoNykpCistCistI2RlZmluZSBheCBSRUcoYXgpCistI2RlZmluZSBieCBSRUcoYngpCistI2RlZmluZSBjeCBSRUcoY3gpCistI2RlZmluZSBkeCBSRUcoZHgpCistCistI2RlZmluZSBhaCBSRUcoYWgpCistI2RlZmluZSBiaCBSRUcoYmgpCistI2RlZmluZSBjaCBSRUcoY2gpCistI2RlZmluZSBkaCBSRUcoZGgpCistCistI2RlZmluZSBhbCBSRUcoYWwpCistI2RlZmluZSBibCBSRUcoYmwpCistI2RlZmluZSBjbCBSRUcoY2wpCistI2RlZmluZSBkbCBSRUcoZGwpCistCistI2RlZmluZSBzaWwgUkVHKHNpbCkKKy0KKy0jZGVmaW5lIG1tMSBSRUcobW0xKQorLSNkZWZpbmUgbW0yIFJFRyhtbTIpCistI2RlZmluZSBtbTMgUkVHKG1tMykKKy0jZGVmaW5lIG1tNCBSRUcobW00KQorLSNkZWZpbmUgbW01IFJFRyhtbTUpCistI2RlZmluZSBtbTYgUkVHKG1tNikKKy0jZGVmaW5lIG1tNyBSRUcobW03KQorLQorLSNkZWZpbmUgeG1tMCBSRUcoeG1tMCkKKy0jZGVmaW5lIHhtbTEgUkVHKHhtbTEpCistI2RlZmluZSB4bW0yIFJFRyh4bW0yKQorLSNkZWZpbmUgeG1tMyBSRUcoeG1tMykKKy0jZGVmaW5lIHhtbTQgUkVHKHhtbTQpCistI2RlZmluZSB4bW01IFJFRyh4bW01KQorLSNkZWZpbmUgeG1tNiBSRUcoeG1tNikKKy0jZGVmaW5lIHhtbTcgUkVHKHhtbTcpCistCistI2RlZmluZSBjcjAgUkVHKGNyMCkKKy0jZGVmaW5lIGNyMSBSRUcoY3IxKQorLSNkZWZpbmUgY3IyIFJFRyhjcjIpCistI2RlZmluZSBjcjMgUkVHKGNyMykKKy0jZGVmaW5lIGNyNCBSRUcoY3I0KQorKyNkZWZpbmUgcmF4ICVyYXgKKysjZGVmaW5lIHJieCAlcmJ4CisrI2RlZmluZSByY3ggJXJjeAorKyNkZWZpbmUgcmR4ICVyZHgKKysjZGVmaW5lIHJzaSAlcnNpCisrI2RlZmluZSByZGkgJXJkaQorKyNkZWZpbmUgcmJwICVyYnAKKysjZGVmaW5lIHJzcCAlcnNwCisrCisrI2RlZmluZSByOCAgJXI4CisrI2RlZmluZSByOSAgJXI5CisrI2RlZmluZSByMTAgJXIxMAorKyNkZWZpbmUgcjExICVyMTEKKysjZGVmaW5lIHIxMiAlcjEyCisrI2RlZmluZSByMTMgJXIxMworKyNkZWZpbmUgcjE0ICVyMTQKKysjZGVmaW5lIHIxNSAlcjE1CisrCisrI2RlZmluZSBlYXggJWVheAorKyNkZWZpbmUgZWJ4ICVlYngKKysjZGVmaW5lIGVjeCAlZWN4CisrI2RlZmluZSBlZHggJWVkeAorKyNkZWZpbmUgZXNpICVlc2kKKysjZGVmaW5lIGVkaSAlZWRpCisrI2RlZmluZSBlYnAgJWVicAorKyNkZWZpbmUgZXNwICVlc3AKKysKKysjZGVmaW5lIHN0MCAlc3QKKysjZGVmaW5lIHN0MSAlc3QoMSkKKysjZGVmaW5lIHN0MiAlc3QoMikKKysjZGVmaW5lIHN0MyAlc3QoMykKKysjZGVmaW5lIHN0NCAlc3QoNCkKKysjZGVmaW5lIHN0NSAlc3QoNSkKKysjZGVmaW5lIHN0NiAlc3QoNikKKysjZGVmaW5lIHN0NyAlc3QoNykKKysKKysjZGVmaW5lIGF4ICVheAorKyNkZWZpbmUgYnggJWJ4CisrI2RlZmluZSBjeCAlY3gKKysjZGVmaW5lIGR4ICVkeAorKworKyNkZWZpbmUgYWggJWFoCisrI2RlZmluZSBiaCAlYmgKKysjZGVmaW5lIGNoICVjaAorKyNkZWZpbmUgZGggJWRoCisrCisrI2RlZmluZSBhbCAlYWwKKysjZGVmaW5lIGJsICVibAorKyNkZWZpbmUgY2wgJWNsCisrI2RlZmluZSBkbCAlZGwKKysKKysjZGVmaW5lIHNpbCAlc2lsCisrCisrI2RlZmluZSBtbTEgJW1tMQorKyNkZWZpbmUgbW0yICVtbTIKKysjZGVmaW5lIG1tMyAlbW0zCisrI2RlZmluZSBtbTQgJW1tNAorKyNkZWZpbmUgbW01ICVtbTUKKysjZGVmaW5lIG1tNiAlbW02CisrI2RlZmluZSBtbTcgJW1tNworKworKyNkZWZpbmUgeG1tMCAleG1tMAorKyNkZWZpbmUgeG1tMSAleG1tMQorKyNkZWZpbmUgeG1tMiAleG1tMgorKyNkZWZpbmUgeG1tMyAleG1tMworKyNkZWZpbmUgeG1tNCAleG1tNAorKyNkZWZpbmUgeG1tNSAleG1tNQorKyNkZWZpbmUgeG1tNiAleG1tNgorKyNkZWZpbmUgeG1tNyAleG1tNworKworKyNkZWZpbmUgY3IwICVjcjAKKysjZGVmaW5lIGNyMSAlY3IxCisrI2RlZmluZSBjcjIgJWNyMgorKyNkZWZpbmUgY3IzICVjcjMKKysjZGVmaW5lIGNyNCAlY3I0CisgCisgI2lmZGVmIF9JMzg2TUFDSF9ORUVEX1NPVFlQRV9GVU5DVElPTgorICNkZWZpbmUgU09UWVBFX0ZVTkNUSU9OKHN5bSkgLnR5cGUgU1lNKHN5bSksQGZ1bmN0aW9uCistLS0gYS9uZXdsaWIvbGliYy9tYWNoaW5lL3g4Nl82NC9tZW1jcHkuUy5vcmlnCTIwMDgtMDctMTEgMTU6MTI6MjcuNDk0NjkzMDAwICswMTAwCisrKysgYi9uZXdsaWIvbGliYy9tYWNoaW5lL3g4Nl82NC9tZW1jcHkuUwkyMDA4LTA3LTExIDE1OjEyOjI5LjQ0ODcwNjAwMCArMDEwMAorQEAgLTYwLDE0ICs2MCwxNCBAQAorICAgbW92cSAgICA0OCAocnNpKSwgcjEzCisgICBtb3ZxICAgIDU2IChyc2kpLCByMTQKKyAKKy0gIG1vdm50aXEgcmF4LCAgICAocmRpKQorLSAgbW92bnRpcSByOCAsICA4IChyZGkpCistICBtb3ZudGlxIHI5ICwgMTYgKHJkaSkKKy0gIG1vdm50aXEgcjEwLCAyNCAocmRpKQorLSAgbW92bnRpcSByMTEsIDMyIChyZGkpCistICBtb3ZudGlxIHIxMiwgNDAgKHJkaSkKKy0gIG1vdm50aXEgcjEzLCA0OCAocmRpKQorLSAgbW92bnRpcSByMTQsIDU2IChyZGkpCisrICBtb3ZudGkgcmF4LCAgICAocmRpKQorKyAgbW92bnRpIHI4ICwgIDggKHJkaSkKKysgIG1vdm50aSByOSAsIDE2IChyZGkpCisrICBtb3ZudGkgcjEwLCAyNCAocmRpKQorKyAgbW92bnRpIHIxMSwgMzIgKHJkaSkKKysgIG1vdm50aSByMTIsIDQwIChyZGkpCisrICBtb3ZudGkgcjEzLCA0OCAocmRpKQorKyAgbW92bnRpIHIxNCwgNTYgKHJkaSkKKyAKKyAgIG1vdnEgICAgIDY0IChyc2kpLCByYXgKKyAgIG1vdnEgICAgIDcyIChyc2kpLCByOAorQEAgLTc4LDE0ICs3OCwxNCBAQAorICAgbW92cSAgICAxMTIgKHJzaSksIHIxMworICAgbW92cSAgICAxMjAgKHJzaSksIHIxNAorIAorLSAgbW92bnRpcSByYXgsICA2NCAocmRpKQorLSAgbW92bnRpcSByOCAsICA3MiAocmRpKQorLSAgbW92bnRpcSByOSAsICA4MCAocmRpKQorLSAgbW92bnRpcSByMTAsICA4OCAocmRpKQorLSAgbW92bnRpcSByMTEsICA5NiAocmRpKQorLSAgbW92bnRpcSByMTIsIDEwNCAocmRpKQorLSAgbW92bnRpcSByMTMsIDExMiAocmRpKQorLSAgbW92bnRpcSByMTQsIDEyMCAocmRpKQorKyAgbW92bnRpIHJheCwgIDY0IChyZGkpCisrICBtb3ZudGkgcjggLCAgNzIgKHJkaSkKKysgIG1vdm50aSByOSAsICA4MCAocmRpKQorKyAgbW92bnRpIHIxMCwgIDg4IChyZGkpCisrICBtb3ZudGkgcjExLCAgOTYgKHJkaSkKKysgIG1vdm50aSByMTIsIDEwNCAocmRpKQorKyAgbW92bnRpIHIxMywgMTEyIChyZGkpCisrICBtb3ZudGkgcjE0LCAxMjAgKHJkaSkKKyAKKyAgIGxlYXEgICAgMTI4IChyc2kpLCByc2kKKyAgIGxlYXEgICAgMTI4IChyZGkpLCByZGkKKy0tLSBhL25ld2xpYi9saWJjL21hY2hpbmUvaTM4Ni9pMzg2bWFjaC5oCTIwMDAtMDgtMjggMTg6NTA6MDYuMDAwMDAwMDAwICswMTAwCisrKysgYi9uZXdsaWIvbGliYy9tYWNoaW5lL2kzODYvaTM4Nm1hY2guaAkyMDA4LTA3LTExIDE1OjE3OjEzLjg3NDQwOTAwMCArMDEwMAorQEAgLTI3LDQ2ICsyNyw0NiBAQAorICAKKyAjZGVmaW5lIFJFRyh4KSBDT05DQVQxKF9fUkVHX1BSRUZJWF9fLCB4KQorICAKKy0jZGVmaW5lIGVheCBSRUcoZWF4KQorLSNkZWZpbmUgZWJ4IFJFRyhlYngpCistI2RlZmluZSBlY3ggUkVHKGVjeCkKKy0jZGVmaW5lIGVkeCBSRUcoZWR4KQorLSNkZWZpbmUgZXNpIFJFRyhlc2kpCistI2RlZmluZSBlZGkgUkVHKGVkaSkKKy0jZGVmaW5lIGVicCBSRUcoZWJwKQorLSNkZWZpbmUgZXNwIFJFRyhlc3ApCistCistI2RlZmluZSBzdDAgUkVHKHN0KQorLSNkZWZpbmUgc3QxIFJFRyhzdCgxKSkKKy0jZGVmaW5lIHN0MiBSRUcoc3QoMikpCistI2RlZmluZSBzdDMgUkVHKHN0KDMpKQorLSNkZWZpbmUgc3Q0IFJFRyhzdCg0KSkKKy0jZGVmaW5lIHN0NSBSRUcoc3QoNSkpCistI2RlZmluZSBzdDYgUkVHKHN0KDYpKQorLSNkZWZpbmUgc3Q3IFJFRyhzdCg3KSkKKy0KKy0jZGVmaW5lIGF4IFJFRyhheCkKKy0jZGVmaW5lIGJ4IFJFRyhieCkKKy0jZGVmaW5lIGN4IFJFRyhjeCkKKy0jZGVmaW5lIGR4IFJFRyhkeCkKKy0KKy0jZGVmaW5lIGFoIFJFRyhhaCkKKy0jZGVmaW5lIGJoIFJFRyhiaCkKKy0jZGVmaW5lIGNoIFJFRyhjaCkKKy0jZGVmaW5lIGRoIFJFRyhkaCkKKy0KKy0jZGVmaW5lIGFsIFJFRyhhbCkKKy0jZGVmaW5lIGJsIFJFRyhibCkKKy0jZGVmaW5lIGNsIFJFRyhjbCkKKy0jZGVmaW5lIGRsIFJFRyhkbCkKKy0KKy0jZGVmaW5lIG1tMSBSRUcobW0xKQorLSNkZWZpbmUgbW0yIFJFRyhtbTIpCistI2RlZmluZSBtbTMgUkVHKG1tMykKKy0jZGVmaW5lIG1tNCBSRUcobW00KQorLSNkZWZpbmUgbW01IFJFRyhtbTUpCistI2RlZmluZSBtbTYgUkVHKG1tNikKKy0jZGVmaW5lIG1tNyBSRUcobW03KQorKyNkZWZpbmUgZWF4ICVlYXgKKysjZGVmaW5lIGVieCAlZWJ4CisrI2RlZmluZSBlY3ggJWVjeAorKyNkZWZpbmUgZWR4ICVlZHgKKysjZGVmaW5lIGVzaSAlZXNpCisrI2RlZmluZSBlZGkgJWVkaQorKyNkZWZpbmUgZWJwICVlYnAKKysjZGVmaW5lIGVzcCAlZXNwCisrCisrI2RlZmluZSBzdDAgJXN0CisrI2RlZmluZSBzdDEgJXN0KDEpCisrI2RlZmluZSBzdDIgJXN0KDIpCisrI2RlZmluZSBzdDMgJXN0KDMpCisrI2RlZmluZSBzdDQgJXN0KDQpCisrI2RlZmluZSBzdDUgJXN0KDUpCisrI2RlZmluZSBzdDYgJXN0KDYpCisrI2RlZmluZSBzdDcgJXN0KDcpCisrCisrI2RlZmluZSBheCAlYXgKKysjZGVmaW5lIGJ4ICVieAorKyNkZWZpbmUgY3ggJWN4CisrI2RlZmluZSBkeCAlZHgKKysKKysjZGVmaW5lIGFoICVhaAorKyNkZWZpbmUgYmggJWJoCisrI2RlZmluZSBjaCAlY2gKKysjZGVmaW5lIGRoICVkaAorKworKyNkZWZpbmUgYWwgJWFsCisrI2RlZmluZSBibCAlYmwKKysjZGVmaW5lIGNsICVjbAorKyNkZWZpbmUgZGwgJWRsCisrCisrI2RlZmluZSBtbTEgJW1tMQorKyNkZWZpbmUgbW0yICVtbTIKKysjZGVmaW5lIG1tMyAlbW0zCisrI2RlZmluZSBtbTQgJW1tNAorKyNkZWZpbmUgbW01ICVtbTUKKysjZGVmaW5lIG1tNiAlbW02CisrI2RlZmluZSBtbTcgJW1tNworIAorICNpZmRlZiBfSTM4Nk1BQ0hfTkVFRF9TT1RZUEVfRlVOQ1RJT04KKyAjZGVmaW5lIFNPVFlQRV9GVU5DVElPTihzeW0pIC50eXBlIFNZTShzeW0pLEBmdW5jdGlvbgorLS0tIGEvbmV3bGliL2xpYmMvbWFjaGluZS94ODZfNjQvbWVtc2V0LlMJMjAwNy0wOC0yOCAyMjo1Njo0OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBiL25ld2xpYi9saWJjL21hY2hpbmUveDg2XzY0L21lbXNldC5TCTIwMDgtMDctMTEgMTU6MTY6NTkuMDk4MzIwMDAwICswMTAwCitAQCAtNDAsMjIgKzQwLDIyIEBACisgCisgICAucDJhbGlnbiA0CisgbG9vcDoKKy0gIG1vdm50aXEgcmF4LCAgICAgKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAgIDggKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAgMTYgKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAgMjQgKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAgMzIgKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAgNDAgKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAgNDggKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAgNTYgKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAgNjQgKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAgNzIgKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAgODAgKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAgODggKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAgOTYgKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAxMDQgKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAxMTIgKHJkaSkKKy0gIG1vdm50aXEgcmF4LCAxMjAgKHJkaSkKKysgIG1vdm50aSByYXgsICAgICAocmRpKQorKyAgbW92bnRpIHJheCwgICA4IChyZGkpCisrICBtb3ZudGkgcmF4LCAgMTYgKHJkaSkKKysgIG1vdm50aSByYXgsICAyNCAocmRpKQorKyAgbW92bnRpIHJheCwgIDMyIChyZGkpCisrICBtb3ZudGkgcmF4LCAgNDAgKHJkaSkKKysgIG1vdm50aSByYXgsICA0OCAocmRpKQorKyAgbW92bnRpIHJheCwgIDU2IChyZGkpCisrICBtb3ZudGkgcmF4LCAgNjQgKHJkaSkKKysgIG1vdm50aSByYXgsICA3MiAocmRpKQorKyAgbW92bnRpIHJheCwgIDgwIChyZGkpCisrICBtb3ZudGkgcmF4LCAgODggKHJkaSkKKysgIG1vdm50aSByYXgsICA5NiAocmRpKQorKyAgbW92bnRpIHJheCwgMTA0IChyZGkpCisrICBtb3ZudGkgcmF4LCAxMTIgKHJkaSkKKysgIG1vdm50aSByYXgsIDEyMCAocmRpKQorIAorICAgbGVhcSAgICAxMjggKHJkaSksIHJkaQorIAorLS0tIGEvbmV3bGliL2xpYm0vbWFjaGluZS9pMzg2L2kzODZtYWNoLmgub3JpZwkyMDA4LTA3LTExIDE1OjMwOjM3LjM2NzIyNzAwMCArMDEwMAorKysrIGIvbmV3bGliL2xpYm0vbWFjaGluZS9pMzg2L2kzODZtYWNoLmgJMjAwOC0wNy0xMSAxNTozMDo1NS4yMzIzMzcwMDAgKzAxMDAKK0BAIC0yNyw0NiArMjcsNDYgQEAKKyAgCisgI2RlZmluZSBSRUcoeCkgQ09OQ0FUMShfX1JFR19QUkVGSVhfXywgeCkKKyAgCistI2RlZmluZSBlYXggUkVHKGVheCkKKy0jZGVmaW5lIGVieCBSRUcoZWJ4KQorLSNkZWZpbmUgZWN4IFJFRyhlY3gpCistI2RlZmluZSBlZHggUkVHKGVkeCkKKy0jZGVmaW5lIGVzaSBSRUcoZXNpKQorLSNkZWZpbmUgZWRpIFJFRyhlZGkpCistI2RlZmluZSBlYnAgUkVHKGVicCkKKy0jZGVmaW5lIGVzcCBSRUcoZXNwKQorLQorLSNkZWZpbmUgc3QwIFJFRyhzdCkKKy0jZGVmaW5lIHN0MSBSRUcoc3QoMSkpCistI2RlZmluZSBzdDIgUkVHKHN0KDIpKQorLSNkZWZpbmUgc3QzIFJFRyhzdCgzKSkKKy0jZGVmaW5lIHN0NCBSRUcoc3QoNCkpCistI2RlZmluZSBzdDUgUkVHKHN0KDUpKQorLSNkZWZpbmUgc3Q2IFJFRyhzdCg2KSkKKy0jZGVmaW5lIHN0NyBSRUcoc3QoNykpCistCistI2RlZmluZSBheCBSRUcoYXgpCistI2RlZmluZSBieCBSRUcoYngpCistI2RlZmluZSBjeCBSRUcoY3gpCistI2RlZmluZSBkeCBSRUcoZHgpCistCistI2RlZmluZSBhaCBSRUcoYWgpCistI2RlZmluZSBiaCBSRUcoYmgpCistI2RlZmluZSBjaCBSRUcoY2gpCistI2RlZmluZSBkaCBSRUcoZGgpCistCistI2RlZmluZSBhbCBSRUcoYWwpCistI2RlZmluZSBibCBSRUcoYmwpCistI2RlZmluZSBjbCBSRUcoY2wpCistI2RlZmluZSBkbCBSRUcoZGwpCistCistI2RlZmluZSBtbTEgUkVHKG1tMSkKKy0jZGVmaW5lIG1tMiBSRUcobW0yKQorLSNkZWZpbmUgbW0zIFJFRyhtbTMpCistI2RlZmluZSBtbTQgUkVHKG1tNCkKKy0jZGVmaW5lIG1tNSBSRUcobW01KQorLSNkZWZpbmUgbW02IFJFRyhtbTYpCistI2RlZmluZSBtbTcgUkVHKG1tNykKKysjZGVmaW5lIGVheCAlZWF4CisrI2RlZmluZSBlYnggJWVieAorKyNkZWZpbmUgZWN4ICVlY3gKKysjZGVmaW5lIGVkeCAlZWR4CisrI2RlZmluZSBlc2kgJWVzaQorKyNkZWZpbmUgZWRpICVlZGkKKysjZGVmaW5lIGVicCAlZWJwCisrI2RlZmluZSBlc3AgJWVzcAorKworKyNkZWZpbmUgc3QwICVzdAorKyNkZWZpbmUgc3QxICVzdCgxKQorKyNkZWZpbmUgc3QyICVzdCgyKQorKyNkZWZpbmUgc3QzICVzdCgzKQorKyNkZWZpbmUgc3Q0ICVzdCg0KQorKyNkZWZpbmUgc3Q1ICVzdCg1KQorKyNkZWZpbmUgc3Q2ICVzdCg2KQorKyNkZWZpbmUgc3Q3ICVzdCg3KQorKworKyNkZWZpbmUgYXggJWF4CisrI2RlZmluZSBieCAlYngKKysjZGVmaW5lIGN4ICVjeAorKyNkZWZpbmUgZHggJWR4CisrCisrI2RlZmluZSBhaCAlYWgKKysjZGVmaW5lIGJoICViaAorKyNkZWZpbmUgY2ggJWNoCisrI2RlZmluZSBkaCAlZGgKKysKKysjZGVmaW5lIGFsICVhbAorKyNkZWZpbmUgYmwgJWJsCisrI2RlZmluZSBjbCAlY2wKKysjZGVmaW5lIGRsICVkbAorKworKyNkZWZpbmUgbW0xICVtbTEKKysjZGVmaW5lIG1tMiAlbW0yCisrI2RlZmluZSBtbTMgJW1tMworKyNkZWZpbmUgbW00ICVtbTQKKysjZGVmaW5lIG1tNSAlbW01CisrI2RlZmluZSBtbTYgJW1tNgorKyNkZWZpbmUgbW03ICVtbTcKKyAKKyAjaWZkZWYgX0kzODZNQUNIX05FRURfU09UWVBFX0ZVTkNUSU9OCisgI2RlZmluZSBTT1RZUEVfRlVOQ1RJT04oc3ltKSAudHlwZSBTWU0oc3ltKSxAZnVuY3Rpb24KKworCitXZSB3YW50IHRvIGhhdmUgYSA2NGJpdCBvZmZzZXRzIGxpYmMgZXZlbiBvbiAzMmJpdCBwbGF0Zm9ybXMuCisKKy0tLSAuL25ld2xpYi9jb25maWd1cmUuaG9zdC5vcmlnCTIwMDgtMDgtMDcgMTY6MDE6MTcuODAxOTQ2MDAwICswMTAwCisrKysgLi9uZXdsaWIvY29uZmlndXJlLmhvc3QJMjAwOC0wOC0wNyAxNjowMTozNC4xODEwNjQwMDAgKzAxMDAKK0BAIC0zMTcsNiArMzE3LDggQEAKKyAgICAgb2V4dD1sbworICAgICBscGZ4PQorICAgICBhZXh0PWxhIDs7CisrICBpWzM0NTY3XTg2LXhlbi1lbGYpCisrICAgIHN0ZGlvNjRfZGlyPXN0ZGlvNjQgOzsKKyAgICopIDs7ICNzaGFyZWQgbGlicmFyeSBub3Qgc3VwcG9ydGVkIGZvciAke2hvc3R9CisgZXNhYworIAorLS0tIGEvbmV3bGliL2xpYmMvaW5jbHVkZS9zeXMvX3R5cGVzLmgub3JpZwkyMDA4LTA4LTA3IDE1OjIyOjQ0LjkyNTAwODAwMCArMDEwMAorKysrIGIvbmV3bGliL2xpYmMvaW5jbHVkZS9zeXMvX3R5cGVzLmgJMjAwOC0wOC0wNyAxNToyMjo1MC44MjQwNDQwMDAgKzAxMDAKK0BAIC0xMyw4ICsxMywxMiBAQAorICNpbmNsdWRlIDxzeXMvbG9jay5oPgorIAorICNpZm5kZWYgX19vZmZfdF9kZWZpbmVkCisrI2lmZGVmIF9fTUlOSU9TX18KKyt0eXBlZGVmIGxvbmcgbG9uZyBfb2ZmX3Q7CisrI2Vsc2UKKyB0eXBlZGVmIGxvbmcgX29mZl90OworICNlbmRpZgorKyNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9fcnRlbXNfXykKKyAvKiBkZXZpY2UgbnVtYmVycyBhcmUgMzItYml0IG1ham9yIGFuZCBhbmQgMzItYml0IG1pbm9yICovCistLS0gLi9uZXdsaWIvbGliYy9pbmNsdWRlL3N5cy9jb25maWcuaC5vcmlnCTIwMDgtMDgtMDcgMTQ6NDM6MjUuOTE1ODY2MDAwICswMTAwCisrKysgLi9uZXdsaWIvbGliYy9pbmNsdWRlL3N5cy9jb25maWcuaAkyMDA4LTA4LTA3IDE0OjQ0OjEzLjUwODE1NDAwMCArMDEwMAorQEAgLTY5LDYgKzY5LDEwIEBACisgLyogd2UgdXNlIHNvbWUgZ2xpYmMgaGVhZGVyIGZpbGVzIHNvIHR1cm4gb24gZ2xpYmMgbGFyZ2UgZmlsZSBmZWF0dXJlICovCisgI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFIDEKKyAjZW5kaWYKKysjaWZkZWYgX19NSU5JT1NfXworKyNkZWZpbmUgX19MQVJHRTY0X0ZJTEVTIDEKKysjZGVmaW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UgMQorKyNlbmRpZgorICNlbmRpZgorIAorICNpZm5kZWYgX19EWU5BTUlDX1JFRU5UX18KKy0tLSAuL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL19kZWZhdWx0X2ZjbnRsLmgub3JpZwkyMDA4LTA4LTA3IDE1OjA4OjIyLjM3NzgzNjAwMCArMDEwMAorKysrIC4vbmV3bGliL2xpYmMvaW5jbHVkZS9zeXMvX2RlZmF1bHRfZmNudGwuaAkyMDA4LTA4LTA3IDE1OjA4OjMxLjY1MTg5MDAwMCArMDEwMAorQEAgLTE3MCw3ICsxNzAsMTEgQEAKKyAvKiBQcm92aWRlIF88c3lzdGVtY2FsbD4gcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHNvbWUgdmVyc2lvbnMKKyAgICBvZiBuZXdsaWIuICAqLworICNpZmRlZiBfQ09NUElMSU5HX05FV0xJQgorLWV4dGVybiBpbnQgX29wZW4gX1BBUkFNUyAoKGNvbnN0IGNoYXIgKiwgaW50LCAuLi4pKTsKKytleHRlcm4gaW50IF9vcGVuIF9QQVJBTVMgKChjb25zdCBjaGFyICosIGludCwgLi4uKSkKKysjaWZkZWYgX19NSU5JT1NfXworKyAgICBhc20oIm9wZW42NCIpCisrI2VuZGlmCisrICAgIDsKKyBleHRlcm4gaW50IF9mY250bCBfUEFSQU1TICgoaW50LCBpbnQsIC4uLikpOworICNpZmRlZiBfX0xBUkdFNjRfRklMRVMKKyBleHRlcm4gaW50IF9vcGVuNjQgX1BBUkFNUyAoKGNvbnN0IGNoYXIgKiwgaW50LCAuLi4pKTsKKy0tLSAuL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL3VuaXN0ZC5oLm9yaWcJMjAwOC0wOC0wNyAxNTowOTozNi40NDkyODAwMDAgKzAxMDAKKysrKyAuL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL3VuaXN0ZC5oCTIwMDgtMDgtMDcgMTU6MDk6NTEuMjEwMzcwMDAwICswMTAwCitAQCAtMTAxLDcgKzEwMSwxMSBAQAorIGludCAgICAgX0VYRlVOKGxpbmssIChjb25zdCBjaGFyICpfX3BhdGgxLCBjb25zdCBjaGFyICpfX3BhdGgyICkpOworIGludAlfRVhGVU4obmljZSwgKGludCBfX25pY2VfdmFsdWUgKSk7CisgI2lmICFkZWZpbmVkKF9fSU5TSURFX0NZR1dJTl9fKQorLW9mZl90ICAgX0VYRlVOKGxzZWVrLCAoaW50IF9fZmlsZGVzLCBvZmZfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlICkpOworK29mZl90ICAgX0VYRlVOKGxzZWVrLCAoaW50IF9fZmlsZGVzLCBvZmZfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlICkpCisrI2lmZGVmIF9fTUlOSU9TX18KKysgICAgYXNtKCJsc2VlazY0IikKKysjZW5kaWYKKysgICAgOworICNlbmRpZgorICNpZiBkZWZpbmVkKF9fU1BVX18pCisgI2RlZmluZSBGX1VMT0NLCTAKKy0tLSAuL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL3N0YXQuaC5vcmlnCTIwMDgtMDgtMDcgMTY6MDg6NTAuNDk1MTE2MDAwICswMTAwCisrKysgLi9uZXdsaWIvbGliYy9pbmNsdWRlL3N5cy9zdGF0LmgJMjAwOC0wOC0wNyAxNjoxMDoyMS43OTk3NTMwMDAgKzAxMDAKK0BAIC00OSw2ICs0OSw5IEBACisgICBsb25nCXN0X3NwYXJlNFsyXTsKKyAjZW5kaWYKKyB9OworKyNpZmRlZiBfX01JTklPU19fCisrI2RlZmluZSBzdGF0NjQgc3RhdAorKyNlbmRpZgorICNlbmRpZgorIAorICNkZWZpbmUJX0lGTVQJCTAxNzAwMDAJLyogdHlwZSBvZiBmaWxlICovCitAQCAtMTMyLDcgKzEzNSwxMSBAQAorIC8qIFByb3ZpZGUgcHJvdG90eXBlcyBmb3IgbW9zdCBvZiB0aGUgXzxzeXN0ZW1jYWxsPiBuYW1lcyB0aGF0IGFyZQorICAgIHByb3ZpZGVkIGluIG5ld2xpYiBmb3Igc29tZSBjb21waWxlcnMuICAqLworICNpZmRlZiBfQ09NUElMSU5HX05FV0xJQgorLWludAlfRVhGVU4oX2ZzdGF0LCggaW50IF9fZmQsIHN0cnVjdCBzdGF0ICpfX3NidWYgKSk7CisraW50CV9FWEZVTihfZnN0YXQsKCBpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fc2J1ZiApKQorKyNpZmRlZiBfX01JTklPU19fCisrICAgIGFzbSgiZnN0YXQ2NCIpCisrI2VuZGlmCisrICAgIDsKKyBpbnQJX0VYRlVOKF9zdGF0LCggY29uc3QgY2hhciAqX19wYXRoLCBzdHJ1Y3Qgc3RhdCAqX19zYnVmICkpOworICNpZmRlZiBfX0xBUkdFNjRfRklMRVMKKyBzdHJ1Y3Qgc3RhdDY0OworLS0tIC4vbmV3bGliL2xpYmMvaW5jbHVkZS9fc3lzbGlzdC5oLm9yaWcJMjAwOC0wOC0wNyAxNjoyNDoxOS4xMjI2MDUwMDAgKzAxMDAKKysrKyAuL25ld2xpYi9saWJjL2luY2x1ZGUvX3N5c2xpc3QuaAkyMDA4LTA4LTA3IDE2OjI0OjIxLjU0ODYyODAwMCArMDEwMAorQEAgLTE0LDYgKzE0LDcgQEAKKyAjZGVmaW5lIF9raWxsIGtpbGwKKyAjZGVmaW5lIF9saW5rIGxpbmsKKyAjZGVmaW5lIF9sc2VlayBsc2VlaworKyNkZWZpbmUgX2xzZWVrNjQgbHNlZWs2NAorICNkZWZpbmUgX29wZW4gb3BlbgorICNkZWZpbmUgX3JlYWQgcmVhZAorICNkZWZpbmUgX3Nicmsgc2JyaworLS0tIGEvbmV3bGliL2xpYmMvaW5jbHVkZS9yZWVudC5oLm9yaWcJMjAwOC0wOC0wNyAxNjoyODo0OS44NDY1MDIwMDAgKzAxMDAKKysrKyBiL25ld2xpYi9saWJjL2luY2x1ZGUvcmVlbnQuaAkyMDA4LTA4LTA3IDE2OjI5OjAyLjA5NjU4NjAwMCArMDEwMAorQEAgLTg3LDYgKzg3LDkgQEAKKyAjaWYgZGVmaW5lZChfX0NZR1dJTl9fKSAmJiBkZWZpbmVkKF9DT01QSUxJTkdfTkVXTElCKQorICNkZWZpbmUgc3RhdDY0IF9fc3RhdDY0CisgI2VuZGlmCisrI2lmIGRlZmluZWQoX19NSU5JT1NfXykKKysjZGVmaW5lIHN0YXQ2NCBzdGF0CisrI2VuZGlmCisgCisgc3RydWN0IHN0YXQ2NDsKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy9wb2xhcnNzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy9wb2xhcnNzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTQ4NzMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3BvbGFyc3NsLnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK2RpZmYgLU5hdXIgcG9sYXJzc2wtMS4xLjQvaW5jbHVkZS9wb2xhcnNzbC9jb25maWcuaCBwb2xhcnNzbC14ODZfNjQvaW5jbHVkZS9wb2xhcnNzbC9jb25maWcuaAorLS0tIGEvaW5jbHVkZS9wb2xhcnNzbC9jb25maWcuaAkyMDExLTEyLTIyIDA1OjA2OjI3LjAwMDAwMDAwMCAtMDUwMAorKysrIGIvaW5jbHVkZS9wb2xhcnNzbC9jb25maWcuaAkyMDEyLTEwLTMwIDE3OjE4OjA3LjU2NzAwMTAwMCAtMDQwMAorQEAgLTE2NCw4ICsxNjQsOCBAQAorICAqIGFwcGxpY2F0aW9uLgorICAqCisgICogVW5jb21tZW50IHRoaXMgbWFjcm8gdG8gcHJldmVudCBsb2FkaW5nIG9mIGRlZmF1bHQgZW50cm9weSBmdW5jdGlvbnMuCistI2RlZmluZSBQT0xBUlNTTF9OT19ERUZBVUxUX0VOVFJPUFlfU09VUkNFUworICAqLworKyNkZWZpbmUgUE9MQVJTU0xfTk9fREVGQVVMVF9FTlRST1BZX1NPVVJDRVMKKworIC8qKgorICAqIFxkZWYgUE9MQVJTU0xfTk9fUExBVEZPUk1fRU5UUk9QWQorQEAgLTE3NSw4ICsxNzUsOCBAQAorICAqIHN0YW5kYXJkcyBsaWtlIHRoZSAvZGV2L3VyYW5kb20gb3IgV2luZG93cyBDcnlwdG9BUEkuCisgICoKKyAgKiBVbmNvbW1lbnQgdGhpcyBtYWNybyB0byBkaXNhYmxlIHRoZSBidWlsdC1pbiBwbGF0Zm9ybSBlbnRyb3B5IGZ1bmN0aW9ucy4KKy0jZGVmaW5lIFBPTEFSU1NMX05PX1BMQVRGT1JNX0VOVFJPUFkKKyAgKi8KKysjZGVmaW5lIFBPTEFSU1NMX05PX1BMQVRGT1JNX0VOVFJPUFkKKworIC8qKgorICAqIFxkZWYgUE9MQVJTU0xfUEtDUzFfVjIxCitAQCAtNDI2LDggKzQyNiw4IEBACisgICogUmVxdWlyZXM6IFBPTEFSU1NMX1RJTUlOR19DCisgICoKKyAgKiBUaGlzIG1vZHVsZSBlbmFibGVzIHRoZSBIQVZFR0UgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCistICovCisgI2RlZmluZSBQT0xBUlNTTF9IQVZFR0VfQworKyAqLworCisgLyoqCisgICogXGRlZiBQT0xBUlNTTF9NRF9DCitAQCAtNDkwLDcgKzQ5MCw3IEBACisgICoKKyAgKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBUQ1AvSVAgbmV0d29ya2luZyByb3V0aW5lcy4KKyAgKi8KKy0jZGVmaW5lIFBPTEFSU1NMX05FVF9DCisrLy8jZGVmaW5lIFBPTEFSU1NMX05FVF9DCisKKyAvKioKKyAgKiBcZGVmIFBPTEFSU1NMX1BBRExPQ0tfQworQEAgLTY0NCw4ICs2NDQsOCBAQAorICAqIENhbGxlcjogIGxpYnJhcnkvaGF2ZWdlLmMKKyAgKgorICAqIFRoaXMgbW9kdWxlIGlzIHVzZWQgYnkgdGhlIEhBVkVHRSByYW5kb20gbnVtYmVyIGdlbmVyYXRvci4KKy0gKi8KKyAjZGVmaW5lIFBPTEFSU1NMX1RJTUlOR19DCisrICovCisKKyAvKioKKyAgKiBcZGVmIFBPTEFSU1NMX1ZFUlNJT05fQworZGlmZiAtTmF1ciBwb2xhcnNzbC0xLjEuNC9saWJyYXJ5L2JpZ251bS5jIHBvbGFyc3NsLXg4Nl82NC9saWJyYXJ5L2JpZ251bS5jCistLS0gYS9saWJyYXJ5L2JpZ251bS5jCTIwMTItMDQtMjkgMTY6MTU6NTUuMDAwMDAwMDAwIC0wNDAwCisrKysgYi9saWJyYXJ5L2JpZ251bS5jCTIwMTItMTAtMzAgMTc6MjE6NTIuMTM1MDAwOTk5IC0wNDAwCitAQCAtMTEwMSw3ICsxMTAxLDcgQEAKKyAgICAgICAgICAgICBaLnBbaSAtIHQgLSAxXSA9IH4wOworICAgICAgICAgZWxzZQorICAgICAgICAgeworLSNpZiBkZWZpbmVkKFBPTEFSU1NMX0hBVkVfTE9OR0xPTkcpCisrI2lmIDAgLy9kZWZpbmVkKFBPTEFSU1NMX0hBVkVfTE9OR0xPTkcpCisgICAgICAgICAgICAgdF91ZGJsIHI7CisKKyAgICAgICAgICAgICByICA9ICh0X3VkYmwpIFgucFtpXSA8PCBiaUw7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvdHBtZW11LTAuNy40LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3RwbWVtdS0wLjcuNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjJiMzRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3RwbWVtdS0wLjcuNC5wYXRjaApAQCAtMCwwICsxLDEyIEBACitkaWZmIC1OYXVyIHRwbV9lbXVsYXRvci14ODZfNjQtYmFjay90cG0vdHBtX2VtdWxhdG9yX2V4dGVybi5jIHRwbV9lbXVsYXRvci14ODZfNjQvdHBtL3RwbV9lbXVsYXRvcl9leHRlcm4uYworLS0tIGEvdHBtL3RwbV9lbXVsYXRvcl9leHRlcm4uYwkyMDEyLTA0LTI3IDEwOjU1OjQ2LjU4MTk2MzM5OCAtMDQwMAorKysrIGIvdHBtL3RwbV9lbXVsYXRvcl9leHRlcm4uYwkyMDEyLTA0LTI3IDEwOjU2OjAyLjE5MzAzNDE1MiAtMDQwMAorQEAgLTI0OSw3ICsyNDksNyBAQAorICNlbHNlIC8qIFRQTV9OT19FWFRFUk4gKi8KKworIGludCAoKnRwbV9leHRlcm5faW5pdCkodm9pZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gTlVMTDsKKy1pbnQgKCp0cG1fZXh0ZXJuX3JlbGVhc2UpKHZvaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IE5VTEw7Cisrdm9pZCAoKnRwbV9leHRlcm5fcmVsZWFzZSkodm9pZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gTlVMTDsKKyB2b2lkKiAoKnRwbV9tYWxsb2MpKHNpemVfdCBzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IE5VTEw7Cisgdm9pZCAoKnRwbV9mcmVlKSgvKmNvbnN0Ki8gdm9pZCAqcHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBOVUxMOworIHZvaWQgKCp0cG1fbG9nKShpbnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKmZtdCwgLi4uKSAgICAgICAgICAgICAgID0gTlVMTDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy92dHBtLWJ1ZnNpemUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvdnRwbS1idWZzaXplLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOTMwNGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvdnRwbS1idWZzaXplLnBhdGNoCkBAIC0wLDAgKzEsMTMgQEAKK2RpZmYgLS1naXQgYS9jb25maWcuaC5pbiBiL2NvbmZpZy5oLmluCitpbmRleCBkMTZhOTk3Li44MDg4YTJhIDEwMDY0NAorLS0tIGEvY29uZmlnLmguaW4KKysrKyBiL2NvbmZpZy5oLmluCitAQCAtMjcsNyArMjcsNyBAQAorICNkZWZpbmUgVFBNX1NUT1JBR0VfTkFNRSAiJHtUUE1fU1RPUkFHRV9OQU1FfSIKKyAjZGVmaW5lIFRQTV9ERVZJQ0VfTkFNRSAgIiR7VFBNX0RFVklDRV9OQU1FfSIKKyAjZGVmaW5lIFRQTV9MT0dfRklMRSAgICAgIiR7VFBNX0xPR19GSUxFfSIKKy0jZGVmaW5lIFRQTV9DTURfQlVGX1NJWkUgNDA5NgorKyNkZWZpbmUgVFBNX0NNRF9CVUZfU0laRSA0MDg4CisgCisgI2VuZGlmIC8qIF9DT05GSUdfSF8gKi8KKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy92dHBtLWNtYWtlLVdleHRyYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy92dHBtLWNtYWtlLVdleHRyYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmVlNGU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3Z0cG0tY21ha2UtV2V4dHJhLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKKy0tLQorIENNYWtlTGlzdHMudHh0IHwgICAgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiB0cG1fZW11bGF0b3IteDg2XzY0L0NNYWtlTGlzdHMudHh0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC00MCwxMCArNDAsMTEgQEAgc2V0KFRQTV9TVE9SQUdFX05BTUUgIi92YXIvbGliL3RwbS90cG1fZQorIHNldChUUE1fREVWSUNFX05BTUUgIi9kZXYvdHBtIikKKyBlbmRpZigpCisgY29uZmlndXJlX2ZpbGUoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NvbmZpZy5oLmluICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9jb25maWcuaCkKKy1hZGRfZGVmaW5pdGlvbnMoLVdhbGwgLVdlcnJvciAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVdwb2ludGVyLWFyaXRoIC1XY2FzdC1hbGlnbiAtV3dyaXRlLXN0cmluZ3MpCisrYWRkX2RlZmluaXRpb25zKC1XYWxsIC1XZXJyb3IpCisgaWYoIiR7Q01BS0VfU1lTVEVNfSIgTUFUQ0hFUyAiTGludXgiKQorICAgICBhZGRfZGVmaW5pdGlvbnMoLVdleHRyYSkKKyBlbmRpZigpCisrYWRkX2RlZmluaXRpb25zKC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV3BvaW50ZXItYXJpdGggLVdjYXN0LWFsaWduIC1Xd3JpdGUtc3RyaW5ncykKKyBpZihVU0VfT1BFTlNTTCkKKyAgICAgYWRkX2RlZmluaXRpb25zKC1EVVNFX09QRU5TU0wpCisgZW5kaWYoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3Z0cG0tZGVlcHF1b3RlLWFueWxvYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy92dHBtLWRlZXBxdW90ZS1hbnlsb2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IzN2Q1MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy92dHBtLWRlZXBxdW90ZS1hbnlsb2MucGF0Y2gKQEAgLTAsMCArMSwxMjcgQEAKK2RpZmYgLS1naXQgYS90cG0vdHBtX2NtZF9oYW5kbGVyLmMgYi90cG0vdHBtX2NtZF9oYW5kbGVyLmMKK2luZGV4IDY5NTExZDEuLjc1NDVkNTEgMTAwNjQ0CistLS0gYS90cG0vdHBtX2NtZF9oYW5kbGVyLmMKKysrKyBiL3RwbS90cG1fY21kX2hhbmRsZXIuYworQEAgLTMzNDcsMTIgKzMzNDcsMTMgQEAgc3RhdGljIFRQTV9SRVNVTFQgZXhlY3V0ZV9UUE1fRGVlcFF1b3RlKFRQTV9SRVFVRVNUICpyZXEsIFRQTV9SRVNQT05TRSAqcnNwKQorIHsKKyAJVFBNX05PTkNFIG5vbmNlOworIAlUUE1fUkVTVUxUIHJlczsKKy0JVUlOVDMyIHNpZ1NpemU7CistCUJZVEUgKnNpZzsKKysJVUlOVDMyIHF1b3RlX2Jsb2Jfc2l6ZTsKKysJQllURSAqcXVvdGVfYmxvYjsKKyAJQllURSAqcHRyOworIAlVSU5UMzIgbGVuOworIAlUUE1fUENSX1NFTEVDVElPTiBteVBDUjsKKyAJVFBNX1BDUl9TRUxFQ1RJT04gcHRQQ1I7CisrCVVJTlQzMiBleHRyYUluZm9GbGFncyA9IDA7CisgCisgCXRwbV9jb21wdXRlX2luX3BhcmFtX2RpZ2VzdChyZXEpOworIAorQEAgLTMzNjEsMTcgKzMzNjIsMTkgQEAgc3RhdGljIFRQTV9SRVNVTFQgZXhlY3V0ZV9UUE1fRGVlcFF1b3RlKFRQTV9SRVFVRVNUICpyZXEsIFRQTV9SRVNQT05TRSAqcnNwKQorIAlpZiAodHBtX3VubWFyc2hhbF9UUE1fTk9OQ0UoJnB0ciwgJmxlbiwgJm5vbmNlKQorIAkJfHwgdHBtX3VubWFyc2hhbF9UUE1fUENSX1NFTEVDVElPTigmcHRyLCAmbGVuLCAmbXlQQ1IpCisgCQl8fCB0cG1fdW5tYXJzaGFsX1RQTV9QQ1JfU0VMRUNUSU9OKCZwdHIsICZsZW4sICZwdFBDUikKKysJCXx8IHRwbV91bm1hcnNoYWxfVFBNX0RFRVBfUVVPVEVfSU5GTygmcHRyLCAmbGVuLCAmZXh0cmFJbmZvRmxhZ3MpCisgCQl8fCBsZW4gIT0gMCkgcmV0dXJuIFRQTV9CQURfUEFSQU1FVEVSOworIAorLQlyZXMgPSBUUE1fRGVlcFF1b3RlKCZub25jZSwgJm15UENSLCAmcHRQQ1IsICZyZXEtPmF1dGgxLCAmc2lnU2l6ZSwgJnNpZyk7CisrCXJlcyA9IFRQTV9EZWVwUXVvdGUoJm5vbmNlLCAmbXlQQ1IsICZwdFBDUiwgJnJlcS0+YXV0aDEsIGV4dHJhSW5mb0ZsYWdzLAorKwkJJnF1b3RlX2Jsb2Jfc2l6ZSwgJnF1b3RlX2Jsb2IpOworIAlpZiAocmVzICE9IFRQTV9TVUNDRVNTKSByZXR1cm4gcmVzOworLQlyc3AtPnBhcmFtU2l6ZSA9IGxlbiA9IHNpZ1NpemU7CisrCXJzcC0+cGFyYW1TaXplID0gbGVuID0gcXVvdGVfYmxvYl9zaXplOworIAlyc3AtPnBhcmFtID0gcHRyID0gdHBtX21hbGxvYyhsZW4pOworLQlpZiAocHRyID09IE5VTEwgfHwgdHBtX21hcnNoYWxfQkxPQigmcHRyLCAmbGVuLCBzaWcsIHNpZ1NpemUpKSB7CisrCWlmIChwdHIgPT0gTlVMTCB8fCB0cG1fbWFyc2hhbF9CTE9CKCZwdHIsICZsZW4sIHF1b3RlX2Jsb2IsIHF1b3RlX2Jsb2Jfc2l6ZSkpIHsKKyAJCXRwbV9mcmVlKHJzcC0+cGFyYW0pOworIAkJcmVzID0gVFBNX0ZBSUw7CisgCX0KKy0JdHBtX2ZyZWUoc2lnKTsKKysJdHBtX2ZyZWUocXVvdGVfYmxvYik7CisgCisgCXJldHVybiByZXM7CisgfQorZGlmZiAtLWdpdCBhL3RwbS90cG1fY29tbWFuZHMuaCBiL3RwbS90cG1fY29tbWFuZHMuaAoraW5kZXggMzI4ZDFiZS4uYTU2ZGQ1ZiAxMDA2NDQKKy0tLSBhL3RwbS90cG1fY29tbWFuZHMuaAorKysrIGIvdHBtL3RwbV9jb21tYW5kcy5oCitAQCAtMzA3Nyw2ICszMDc3LDcgQEAgVFBNX1JFU1VMVCBUUE1fUGFyZW50U2lnbkVLKAorICAqIEBteVBDUjogW2luXSBQQ1Igc2VsZWN0aW9uIGZvciB0aGUgdmlydHVhbCBUUE0KKyAgKiBAcHRQQ1I6IFtpbl0gUENSIHNlbGVjdGlvbiBmb3IgdGhlIGhhcmR3YXJlIFRQTQorICAqIEBhdXRoMTogW2luLCBvdXRdIEF1dGhvcml6YXRpb24gcHJvdG9jb2wgcGFyYW1ldGVycworKyAqIEBleHRyYUluZm9GbGFncyBbaW5dIEZsYWdzIGZvciBpbmNsdWRpbmcsIGtlcm5lbCBoYXNoLCBncm91cCBpbmZvLCBldGMKKyAgKiBAc2lnU2l6ZTogW291dF0gVGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgZGlnaXRhbCBzaWduYXR1cmUKKyAgKiBAc2lnOiBbb3V0XSBUaGUgcmVzdWx0aW5nIGRpZ2l0YWwgc2lnbmF0dXJlIGFuZCBQQ1IgdmFsdWVzCisgICogUmV0dXJuczogVFBNX1NVQ0NFU1Mgb24gc3VjY2VzcywgYSBUUE0gZXJyb3IgY29kZSBvdGhlcndpc2UuCitAQCAtMzA4Niw2ICszMDg3LDcgQEAgVFBNX1JFU1VMVCBUUE1fRGVlcFF1b3RlKAorICAgVFBNX1BDUl9TRUxFQ1RJT04gKm15UENSLAorICAgVFBNX1BDUl9TRUxFQ1RJT04gKnB0UENSLAorICAgVFBNX0FVVEggKmF1dGgxLAorKyAgVUlOVDMyIGV4dHJhSW5mb0ZsYWdzLAorICAgVUlOVDMyICpzaWdTaXplLAorICAgQllURSAqKnNpZworICk7CitkaWZmIC0tZ2l0IGEvdHBtL3RwbV9jcmVkZW50aWFscy5jIGIvdHBtL3RwbV9jcmVkZW50aWFscy5jCitpbmRleCBjMGQ2MmU3Li42NTg2YzIyIDEwMDY0NAorLS0tIGEvdHBtL3RwbV9jcmVkZW50aWFscy5jCisrKysgYi90cG0vdHBtX2NyZWRlbnRpYWxzLmMKK0BAIC0xODMsNyArMTgzLDggQEAgVFBNX1JFU1VMVCBUUE1fT3duZXJSZWFkSW50ZXJuYWxQdWIoVFBNX0tFWV9IQU5ETEUga2V5SGFuZGxlLCBUUE1fQVVUSCAqYXV0aDEsCisgCisgaW50IGVuZG9yc2VtZW50S2V5RnJlc2ggPSAwOworIAorLVRQTV9SRVNVTFQgVlRQTV9HZXRQYXJlbnRRdW90ZShUUE1fRElHRVNUKiBkYXRhLCBUUE1fUENSX1NFTEVDVElPTiAqc2VsLCBVSU5UMzIgKnNpZ1NpemUsIEJZVEUgKipzaWcpOworK1RQTV9SRVNVTFQgVlRQTV9HZXRQYXJlbnRRdW90ZShUUE1fTk9OQ0UgKmRhdGEsIFRQTV9QQ1JfU0VMRUNUSU9OICpzZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQzMiBleHRyYUluZm9GbGFncywgVUlOVDMyICpzaWdTaXplLCBCWVRFICoqc2lnKTsKKyAKKyBUUE1fUkVTVUxUIFRQTV9QYXJlbnRTaWduRUsoVFBNX05PTkNFICpleHRlcm5hbERhdGEsIFRQTV9QQ1JfU0VMRUNUSU9OICpzZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTV9BVVRIICphdXRoMSwgVUlOVDMyICpzaWdTaXplLCBCWVRFICoqc2lnKQorQEAgLTE5MSw3ICsxOTIsNyBAQCBUUE1fUkVTVUxUIFRQTV9QYXJlbnRTaWduRUsoVFBNX05PTkNFICpleHRlcm5hbERhdGEsIFRQTV9QQ1JfU0VMRUNUSU9OICpzZWwsCisgCVRQTV9QVUJLRVkgcHViS2V5OworIAlUUE1fUkVTVUxUIHJlczsKKyAJVFBNX0RJR0VTVCBocmVzOworLQorKwlVSU5UMzIgZXh0cmFJbmZvRmxhZ3MgPSAwOworIAlpbmZvKCJUUE1fUGFyZW50U2lnbkVLKCkiKTsKKyAKKyAJcmVzID0gdHBtX3ZlcmlmeV9hdXRoKGF1dGgxLCB0cG1EYXRhLnBlcm1hbmVudC5kYXRhLm93bmVyQXV0aCwgVFBNX0tIX09XTkVSKTsKK0BAIC0yMDYsNyArMjA3LDcgQEAgVFBNX1JFU1VMVCBUUE1fUGFyZW50U2lnbkVLKFRQTV9OT05DRSAqZXh0ZXJuYWxEYXRhLCBUUE1fUENSX1NFTEVDVElPTiAqc2VsLAorIAkJcmVzID0gVFBNX0ZBSUw7CisgCisgCWlmIChyZXMgPT0gVFBNX1NVQ0NFU1MpCistCQlyZXMgPSBWVFBNX0dldFBhcmVudFF1b3RlKCZocmVzLCBzZWwsIHNpZ1NpemUsIHNpZyk7CisrCQlyZXMgPSBWVFBNX0dldFBhcmVudFF1b3RlKChUUE1fTk9OQ0UqKSZocmVzLCBzZWwsIGV4dHJhSW5mb0ZsYWdzLCBzaWdTaXplLCBzaWcpOworIAorIAlmcmVlX1RQTV9QVUJLRVkocHViS2V5KTsKKyAJcmV0dXJuIHJlczsKK0BAIC0yMTgsNyArMjE5LDcgQEAgc3RhdGljIGNvbnN0IEJZVEUgZHF1b3RfaGRyW10gPSB7CisgCisgVFBNX1JFU1VMVCBUUE1fRGVlcFF1b3RlKFRQTV9OT05DRSAqZXh0ZXJuYWxEYXRhLCBUUE1fUENSX1NFTEVDVElPTiAqbXlQQ1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTV9QQ1JfU0VMRUNUSU9OICpwdFBDUiwgVFBNX0FVVEggKmF1dGgxLAorLSAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgKnNpZ1NpemUsIEJZVEUgKipzaWcpCisrICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQzMiBleHRyYUluZm9GbGFncywgVUlOVDMyICpxdW90ZV9ibG9iX3NpemUsIEJZVEUgKipxdW90ZV9ibG9iKQorIHsKKyAgIFRQTV9SRVNVTFQgcmVzOworICAgVFBNX0RJR0VTVCBocmVzOworQEAgLTI1Myw3ICsyNTQsNyBAQCBUUE1fUkVTVUxUIFRQTV9EZWVwUXVvdGUoVFBNX05PTkNFICpleHRlcm5hbERhdGEsIFRQTV9QQ1JfU0VMRUNUSU9OICpteVBDUiwKKyAKKyAgIHRwbV9mcmVlKGJ1Zik7CisgCistCXJlcyA9IFZUUE1fR2V0UGFyZW50UXVvdGUoJmhyZXMsIHB0UENSLCBzaWdTaXplLCBzaWcpOworKyAgcmVzID0gVlRQTV9HZXRQYXJlbnRRdW90ZSgoVFBNX05PTkNFKikmaHJlcywgcHRQQ1IsIGV4dHJhSW5mb0ZsYWdzLCBxdW90ZV9ibG9iX3NpemUsIHF1b3RlX2Jsb2IpOworIAorICAgcmV0dXJuIHJlczsKKyB9CitkaWZmIC0tZ2l0IGEvdHBtL3RwbV9tYXJzaGFsbGluZy5oIGIvdHBtL3RwbV9tYXJzaGFsbGluZy5oCitpbmRleCBkNTEwZWJlLi4yZTBjMDA4IDEwMDY0NAorLS0tIGEvdHBtL3RwbV9tYXJzaGFsbGluZy5oCisrKysgYi90cG0vdHBtX21hcnNoYWxsaW5nLmgKK0BAIC0yNjgsNiArMjY4LDggQEAgc3RhdGljIGlubGluZSBpbnQgdHBtX3VubWFyc2hhbF9CT09MKEJZVEUgKipwdHIsIFVJTlQzMiAqbGVuZ3RoLCBCT09MICp2KQorICNkZWZpbmUgdHBtX3VubWFyc2hhbF9UUE1fUkVESVJfQ09NTUFORCAgICAgICAgdHBtX3VubWFyc2hhbF9VSU5UMzIKKyAjZGVmaW5lIHRwbV9tYXJzaGFsX0RBQUhBTkRMRSAgICAgICAgICAgICAgICAgIHRwbV9tYXJzaGFsX1VJTlQzMgorICNkZWZpbmUgdHBtX3VubWFyc2hhbF9EQUFIQU5ETEUgICAgICAgICAgICAgICAgdHBtX3VubWFyc2hhbF9VSU5UMzIKKysjZGVmaW5lIHRwbV9tYXJzaGFsX1RQTV9ERUVQX1FVT1RFX0lORk8gICAgICAgIHRwbV9tYXJzaGFsX1VJTlQzMgorKyNkZWZpbmUgdHBtX3VubWFyc2hhbF9UUE1fREVFUF9RVU9URV9JTkZPICAgICAgdHBtX3VubWFyc2hhbF9VSU5UMzIKKyAKKyBpbnQgdHBtX21hcnNoYWxfVUlOVDMyX0FSUkFZKEJZVEUgKipwdHIsIFVJTlQzMiAqbGVuZ3RoLCBVSU5UMzIgKnYsIFVJTlQzMiBuKTsKKyBpbnQgdHBtX3VubWFyc2hhbF9VSU5UMzJfQVJSQVkoQllURSAqKnB0ciwgVUlOVDMyICpsZW5ndGgsIFVJTlQzMiAqdiwgVUlOVDMyIG4pOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3Z0cG0tZGVlcHF1b3RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3Z0cG0tZGVlcHF1b3RlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNDRmMzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvdnRwbS1kZWVwcXVvdGUucGF0Y2gKQEAgLTAsMCArMSwxODcgQEAKK2RpZmYgLS1naXQgYS90cG0vdHBtX2NtZF9oYW5kbGVyLmMgYi90cG0vdHBtX2NtZF9oYW5kbGVyLmMKK2luZGV4IDBmYWJmOTguLjY5NTExZDEgMTAwNjQ0CistLS0gYS90cG0vdHBtX2NtZF9oYW5kbGVyLmMKKysrKyBiL3RwbS90cG1fY21kX2hhbmRsZXIuYworQEAgLTMzNDMsNiArMzM0MywzOSBAQCBzdGF0aWMgVFBNX1JFU1VMVCBleGVjdXRlX1RQTV9QYXJlbnRTaWduRUsoVFBNX1JFUVVFU1QgKnJlcSwgVFBNX1JFU1BPTlNFICpyc3ApCisgCXJldHVybiByZXM7CisgfQorIAorK3N0YXRpYyBUUE1fUkVTVUxUIGV4ZWN1dGVfVFBNX0RlZXBRdW90ZShUUE1fUkVRVUVTVCAqcmVxLCBUUE1fUkVTUE9OU0UgKnJzcCkKKyt7CisrCVRQTV9OT05DRSBub25jZTsKKysJVFBNX1JFU1VMVCByZXM7CisrCVVJTlQzMiBzaWdTaXplOworKwlCWVRFICpzaWc7CisrCUJZVEUgKnB0cjsKKysJVUlOVDMyIGxlbjsKKysJVFBNX1BDUl9TRUxFQ1RJT04gbXlQQ1I7CisrCVRQTV9QQ1JfU0VMRUNUSU9OIHB0UENSOworKworKwl0cG1fY29tcHV0ZV9pbl9wYXJhbV9kaWdlc3QocmVxKTsKKysKKysJcHRyID0gcmVxLT5wYXJhbTsKKysJbGVuID0gcmVxLT5wYXJhbVNpemU7CisrCWlmICh0cG1fdW5tYXJzaGFsX1RQTV9OT05DRSgmcHRyLCAmbGVuLCAmbm9uY2UpCisrCQl8fCB0cG1fdW5tYXJzaGFsX1RQTV9QQ1JfU0VMRUNUSU9OKCZwdHIsICZsZW4sICZteVBDUikKKysJCXx8IHRwbV91bm1hcnNoYWxfVFBNX1BDUl9TRUxFQ1RJT04oJnB0ciwgJmxlbiwgJnB0UENSKQorKwkJfHwgbGVuICE9IDApIHJldHVybiBUUE1fQkFEX1BBUkFNRVRFUjsKKysKKysJcmVzID0gVFBNX0RlZXBRdW90ZSgmbm9uY2UsICZteVBDUiwgJnB0UENSLCAmcmVxLT5hdXRoMSwgJnNpZ1NpemUsICZzaWcpOworKwlpZiAocmVzICE9IFRQTV9TVUNDRVNTKSByZXR1cm4gcmVzOworKwlyc3AtPnBhcmFtU2l6ZSA9IGxlbiA9IHNpZ1NpemU7CisrCXJzcC0+cGFyYW0gPSBwdHIgPSB0cG1fbWFsbG9jKGxlbik7CisrCWlmIChwdHIgPT0gTlVMTCB8fCB0cG1fbWFyc2hhbF9CTE9CKCZwdHIsICZsZW4sIHNpZywgc2lnU2l6ZSkpIHsKKysJCXRwbV9mcmVlKHJzcC0+cGFyYW0pOworKwkJcmVzID0gVFBNX0ZBSUw7CisrCX0KKysJdHBtX2ZyZWUoc2lnKTsKKysKKysJcmV0dXJuIHJlczsKKyt9CisrCisgc3RhdGljIHZvaWQgdHBtX3NldHVwX3JzcF9hdXRoKFRQTV9DT01NQU5EX0NPREUgb3JkaW5hbCwgVFBNX1JFU1BPTlNFICpyc3ApIAorIHsKKyAgIHRwbV9obWFjX2N0eF90IGhtYWM7CitAQCAtNDA5OCw2ICs0MTMxLDExIEBAIHZvaWQgdHBtX2V4ZWN1dGVfY29tbWFuZChUUE1fUkVRVUVTVCAqcmVxLCBUUE1fUkVTUE9OU0UgKnJzcCkKKyAgICAgICByZXMgPSBleGVjdXRlX1RQTV9QYXJlbnRTaWduRUsocmVxLCByc3ApOworICAgICBicmVhazsKKyAKKysgICAgY2FzZSBUUE1fT1JEX0RlZXBRdW90ZToKKysgICAgICBkZWJ1ZygiW1RQTV9PUkRfRGVlcFF1b3RlXSIpOworKyAgICAgIHJlcyA9IGV4ZWN1dGVfVFBNX0RlZXBRdW90ZShyZXEsIHJzcCk7CisrICAgIGJyZWFrOworKworICAgICBkZWZhdWx0OgorICNpZmRlZiBNVE1fRU1VTEFUT1IKKyAgICAgICByZXMgPSBtdG1fZXhlY3V0ZV9jb21tYW5kKHJlcSwgcnNwKTsKK2RpZmYgLS1naXQgYS90cG0vdHBtX2NvbW1hbmRzLmggYi90cG0vdHBtX2NvbW1hbmRzLmgKK2luZGV4IDdmZWY5MzQuLjMyOGQxYmUgMTAwNjQ0CistLS0gYS90cG0vdHBtX2NvbW1hbmRzLmgKKysrKyBiL3RwbS90cG1fY29tbWFuZHMuaAorQEAgLTMwNzEsNiArMzA3MSwyNSBAQCBUUE1fUkVTVUxUIFRQTV9QYXJlbnRTaWduRUsoCisgICBCWVRFICoqc2lnCisgKTsKKyAKKysvKioKKysgKiBUUE1fRGVlcFF1b3RlIC0gZ2V0cyBhIGhhcmR3YXJlIFRQTSBxdW90ZSBvZiBhIHZUUE0ncyBQQ1JzCisrICogQGV4dGVybmFsRGF0YTogW2luXSBBbnRpUmVwbGF5IG5vbmNlIHRvIHByZXZlbnQgcmVwbGF5IG9mIG1lc3NhZ2VzCisrICogQG15UENSOiBbaW5dIFBDUiBzZWxlY3Rpb24gZm9yIHRoZSB2aXJ0dWFsIFRQTQorKyAqIEBwdFBDUjogW2luXSBQQ1Igc2VsZWN0aW9uIGZvciB0aGUgaGFyZHdhcmUgVFBNCisrICogQGF1dGgxOiBbaW4sIG91dF0gQXV0aG9yaXphdGlvbiBwcm90b2NvbCBwYXJhbWV0ZXJzCisrICogQHNpZ1NpemU6IFtvdXRdIFRoZSBsZW5ndGggb2YgdGhlIHJldHVybmVkIGRpZ2l0YWwgc2lnbmF0dXJlCisrICogQHNpZzogW291dF0gVGhlIHJlc3VsdGluZyBkaWdpdGFsIHNpZ25hdHVyZSBhbmQgUENSIHZhbHVlcworKyAqIFJldHVybnM6IFRQTV9TVUNDRVNTIG9uIHN1Y2Nlc3MsIGEgVFBNIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgorKyAqLworK1RQTV9SRVNVTFQgVFBNX0RlZXBRdW90ZSgKKysgIFRQTV9OT05DRSAqZXh0ZXJuYWxEYXRhLAorKyAgVFBNX1BDUl9TRUxFQ1RJT04gKm15UENSLAorKyAgVFBNX1BDUl9TRUxFQ1RJT04gKnB0UENSLAorKyAgVFBNX0FVVEggKmF1dGgxLAorKyAgVUlOVDMyICpzaWdTaXplLAorKyAgQllURSAqKnNpZworKyk7CisrCisgLyoKKyAgKiBFcnJvciBoYW5kbGluZworICAqIFt0cG1fZXJyb3IuY10KK2RpZmYgLS1naXQgYS90cG0vdHBtX2NyZWRlbnRpYWxzLmMgYi90cG0vdHBtX2NyZWRlbnRpYWxzLmMKK2luZGV4IDAxZjI5ZTYuLmMwZDYyZTcgMTAwNjQ0CistLS0gYS90cG0vdHBtX2NyZWRlbnRpYWxzLmMKKysrKyBiL3RwbS90cG1fY3JlZGVudGlhbHMuYworQEAgLTIxMSwzICsyMTEsNDkgQEAgVFBNX1JFU1VMVCBUUE1fUGFyZW50U2lnbkVLKFRQTV9OT05DRSAqZXh0ZXJuYWxEYXRhLCBUUE1fUENSX1NFTEVDVElPTiAqc2VsLAorIAlmcmVlX1RQTV9QVUJLRVkocHViS2V5KTsKKyAJcmV0dXJuIHJlczsKKyB9CisrCisrc3RhdGljIGNvbnN0IEJZVEUgZHF1b3RfaGRyW10gPSB7CisrCTAsIDAsIDAsIDAsICdEJywgJ1EnLCAnVScsICdUJworK307CisrCisrVFBNX1JFU1VMVCBUUE1fRGVlcFF1b3RlKFRQTV9OT05DRSAqZXh0ZXJuYWxEYXRhLCBUUE1fUENSX1NFTEVDVElPTiAqbXlQQ1IsCisrICAgICAgICAgICAgICAgICAgICAgICAgIFRQTV9QQ1JfU0VMRUNUSU9OICpwdFBDUiwgVFBNX0FVVEggKmF1dGgxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgKnNpZ1NpemUsIEJZVEUgKipzaWcpCisreworKwlUUE1fUkVTVUxUIHJlczsKKysJVFBNX0RJR0VTVCBocmVzOworKwlUUE1fUENSX0lORk9fU0hPUlQgcGNyRGF0YTsKKysJdHBtX3NoYTFfY3R4X3QgY3R4OworKwlCWVRFICpidWYsICpwdHI7CisrCVVJTlQzMiBzaXplLCBsZW47CisrCisrCWluZm8oIlRQTV9EZWVwUXVvdGUoKSIpOworKworKwlyZXMgPSB0cG1fdmVyaWZ5X2F1dGgoYXV0aDEsIHRwbURhdGEucGVybWFuZW50LmRhdGEub3duZXJBdXRoLCBUUE1fS0hfT1dORVIpOworKwlpZiAocmVzICE9IFRQTV9TVUNDRVNTKSByZXR1cm4gcmVzOworKworKwlyZXMgPSB0cG1fY29tcHV0ZV9wY3JfZGlnZXN0KG15UENSLCAmcGNyRGF0YS5kaWdlc3RBdFJlbGVhc2UsIE5VTEwpOworKwlpZiAocmVzICE9IFRQTV9TVUNDRVNTKSByZXR1cm4gcmVzOworKworKwlwY3JEYXRhLnBjclNlbGVjdGlvbi5zaXplT2ZTZWxlY3QgPSBteVBDUi0+c2l6ZU9mU2VsZWN0OworKwltZW1jcHkocGNyRGF0YS5wY3JTZWxlY3Rpb24ucGNyU2VsZWN0LCBteVBDUi0+cGNyU2VsZWN0LCBteVBDUi0+c2l6ZU9mU2VsZWN0KTsKKysJcGNyRGF0YS5sb2NhbGl0eUF0UmVsZWFzZSA9IDEgPDwgdHBtRGF0YS5zdGFueS5mbGFncy5sb2NhbGl0eU1vZGlmaWVyOworKworKwlzaXplID0gbGVuID0gc2l6ZW9mX1RQTV9QQ1JfSU5GT19TSE9SVChwY3JEYXRhKTsKKysJYnVmID0gcHRyID0gdHBtX21hbGxvYyhzaXplKTsKKysJaWYgKGJ1ZiA9PSBOVUxMKSByZXR1cm4gVFBNX05PU1BBQ0U7CisrCWlmICh0cG1fbWFyc2hhbF9UUE1fUENSX0lORk9fU0hPUlQoJnB0ciwgJmxlbiwgJnBjckRhdGEpKQorKwkJcmV0dXJuIFRQTV9GQUlMOworKworKwl0cG1fc2hhMV9pbml0KCZjdHgpOworKwl0cG1fc2hhMV91cGRhdGUoJmN0eCwgZHF1b3RfaGRyLCA4KTsKKysJdHBtX3NoYTFfdXBkYXRlKCZjdHgsIGV4dGVybmFsRGF0YS0+bm9uY2UsIDIwKTsKKysJdHBtX3NoYTFfdXBkYXRlKCZjdHgsIGJ1Ziwgc2l6ZSk7CisrCXRwbV9zaGExX2ZpbmFsKCZjdHgsIGhyZXMuZGlnZXN0KTsKKysKKysJdHBtX2ZyZWUoYnVmKTsKKysKKysJcmVzID0gVlRQTV9HZXRQYXJlbnRRdW90ZSgmaHJlcywgcHRQQ1IsIHNpZ1NpemUsIHNpZyk7CisrCisrCXJldHVybiByZXM7CisrfQorZGlmZiAtLWdpdCBhL3RwbS90cG1fc3RydWN0dXJlcy5oIGIvdHBtL3RwbV9zdHJ1Y3R1cmVzLmgKK2luZGV4IGIwZjQ2MjUuLmRmYjE4OTQgMTAwNjQ0CistLS0gYS90cG0vdHBtX3N0cnVjdHVyZXMuaAorKysrIGIvdHBtL3RwbV9zdHJ1Y3R1cmVzLmgKK0BAIC02NjAsNiArNjYwLDQyIEBAIHR5cGVkZWYgc3RydWN0IHRkVFBNX0NNS19NQV9BUFBST1ZBTCB7CisgCisgLyogVlRQTS1vbmx5IGNvbW1hbmRzOiAqLworIC8qCisrICogRGVlcCBRdW90ZSAtIENyZWF0ZSBxdW90ZSBvZiBQQ1JzCisrICogSW5wdXQ6CisrICogICBUUE1fVEFHICAgICAgICAgICAgIHRhZyAgICAgICAgICAgVFBNX1RBR19SUVVfQVVUSDFfQ09NTUFORAorKyAqICAgVUlOVDMyICAgICAgICAgICAgICBwYXJhbVNpemUgICAgIFRvdGFsIHNpemUgb2YgcmVxdWVzdAorKyAqICAgVFBNX0NPTU1BTkRfQ09ERSAgICBvcmRpbmFsICAgICAgIFRQTV9PUkRfRGVlcFF1b3RlCisrICogICBUUE1fTk9OQ0UgICAgICAgICAgIGV4dGVybkRhdGEgICAgMjAgYnl0ZXMgb2YgZXh0ZXJuYWwgZGF0YQorKyAqICAgVFBNX1BDUl9TRUxFQ1RJT04gICB2dFNlbCAgICAgICAgIFBDUiBzZWxlY3Rpb24gZm9yIHZpcnR1YWwgVFBNCisrICogICBUUE1fUENSX1NFTEVDVElPTiAgIHB0U2VsICAgICAgICAgUENSIHNlbGVjdGlvbiBmb3IgcGh5c2ljYWwgVFBNCisrICogICAtLS0KKysgKiAgIFVJTlQzMiAgICAgICAgICAgICAgYXV0aEhhbmRsZSAgICBPd25lciBhdXRob3JpemF0aW9uIHNlc3Npb24gKE9JQVApCisrICogICBUUE1fTk9OQ0UgICAgICAgICAgIG5vbmNlT2RkICAgICAgTm9uY2UgZm9yIGF1dGhIYW5kbGUKKysgKiAgIEJPT0wgICAgICAgICAgICAgICAgY29udGludWVBdXRoICBDb250aW51ZSBmbGFnIGZvciBhdXRoSGFuZGxlCisrICogICBUUE1fQVVUSERBVEEgICAgICAgIHByaXZBdXRoICAgICAgQXV0aG9yaXphdGlvbiBkaWdlc3QgZm9yIGNvbW1hbmQKKysgKgorKyAqIE91dHB1dDoKKysgKiAgIFRQTV9UQUcgICAgICAgICAgICAgdGFnICAgICAgICAgICBUUE1fVEFHX1JTUF9BVVRIMV9DT01NQU5ECisrICogICBVSU5UMzIgICAgICAgICAgICAgIHBhcmFtU2l6ZSAgICAgVG90YWwgc2l6ZSBvZiByZXNwb25zZQorKyAqICAgVFBNX1JFU1VMVCAgICAgICAgICByZXR1cm5Db2RlICAgIFJldHVybiBjb2RlIG9mIHRoZSBvcGVyYXRpb24KKysgKiAgIEJZVEVbXSAgICAgICAgICAgICAgc2lnICAgICAgICAgICBTaWduYXR1cmUgcHJvdmlkZWQgYnkgcGh5c2ljYWwgVFBNCisrICogICBUUE1fUENSVkFMVUVbXSAgICAgIHBjclZhbHVlICAgICAgVmFsdWVzIG9mIGhhcmR3YXJlIFBDUnMgdXNlZCBpbiB0aGUgcXVvdGUKKysgKiAgIC0tLQorKyAqICAgVFBNX05PTkNFICAgICAgICAgICBub25jZUV2ZW4gICAgIE5vbmNlIGZvciBhdXRoSGFuZGxlCisrICogICBCT09MICAgICAgICAgICAgICAgIGNvbnRpbnVlQXV0aCAgQ29udGludWUgZmxhZyBmb3IgYXV0aEhhbmRsZQorKyAqICAgVFBNX0FVVEhEQVRBICAgICAgICByZXNBdXRoICAgICAgIEF1dGhvcml6YXRpb24gZGlnZXN0IGZvciByZXNwb25zZQorKyAqCisrICogVGhlIHZhbHVlcyBvZiB0aGUgdmlydXRhbCBUUE0ncyBQQ1JzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLgorKyAqIFRoZSBzaWduYXR1cmUgaXMgYSBzdGFuZGFyZCBUUE1fUXVvdGUgcmVzcG9uc2UgZnJvbSB0aGUgcGh5c2ljYWwgVFBNOyBpdHMKKysgKiBleHRlcm5hbERhdGEgaXMgdGhlIFNIQTEgaGFzaCBvZiB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKysgKiAgIFRQTV9TVFJVQ1RfVkVSICAgICAgdmVyc2lvbiAgICAgICBNVVNUIGJlIDAuMC4wLjAKKysgKiAgIEJZVEVbNF0gICAgICAgICAgICAgZml4ZWQgICAgICAgICBNVVNUIGJlIHRoZSBzdHJpbmcgIkRRVVQiCisrICogICBUUE1fTk9OQ0UgICAgICAgICAgIGV4dGVybkRhdGEgICAgRnJvbSBpbnB1dCB0byB0aGUgZGVlcCBxdW90ZQorKyAqICAgVFBNX1BDUl9JTkZPX1NIT1JUICBwY3JEYXRhICAgICAgIFZpcnR1YWwgVFBNJ3MgUENScworKyAqLworKyNkZWZpbmUgVFBNX09SRF9EZWVwUXVvdGUgICAgICAgICAgICAgICAgICAgICAgIChUUE1fVkVORE9SX0NPTU1BTkQgfCBUUE1fT1JEX1F1b3RlKQorKworKy8qCisgICogUGFyZW50U2lnbkVLIC0gUHJvb2Ygb2YgZnJlc2ggcHJvdmlzaW9uaW5nIGFuZCBFSyB2YWx1ZQorICAqCisgICogSW5wdXQ6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvdnRwbS1pbXBsaWNpdC1mYWxsdGhyb3VnaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy92dHBtLWltcGxpY2l0LWZhbGx0aHJvdWdoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NWQ0MWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvdnRwbS1pbXBsaWNpdC1mYWxsdGhyb3VnaC5wYXRjaApAQCAtMCwwICsxLDEwIEBACistLS0gYS90cG0vdHBtX2NtZF9oYW5kbGVyLmMub3JpZwkyMDE3LTA0LTI3IDEzOjM3OjE0LjQwODAwMDAwMCArMDIwMAorKysrIGIvdHBtL3RwbV9jbWRfaGFuZGxlci5jCTIwMTctMDQtMjcgMTM6Mzk6NTMuNTg1MDAwMDAwICswMjAwCitAQCAtMzM5Nyw2ICszMzk3LDcgQEAKKyAgICAgICAgICAgICAgICAgICBzaXplb2YocnNwLT5hdXRoMi0+bm9uY2VPZGQubm9uY2UpKTsKKyAgICAgICB0cG1faG1hY191cGRhdGUoJmhtYWMsIChCWVRFKikmcnNwLT5hdXRoMi0+Y29udGludWVBdXRoU2Vzc2lvbiwgMSk7CisgICAgICAgdHBtX2htYWNfZmluYWwoJmhtYWMsIHJzcC0+YXV0aDItPmF1dGgpOworKyAgICAgIC8qIGZhbGwtdGhydSAqLworICAgICBjYXNlIFRQTV9UQUdfUlNQX0FVVEgxX0NPTU1BTkQ6CisgICAgICAgdHBtX2htYWNfaW5pdCgmaG1hYywgcnNwLT5hdXRoMS0+c2VjcmV0LCBzaXplb2YocnNwLT5hdXRoMS0+c2VjcmV0KSk7CisgICAgICAgdHBtX2htYWNfdXBkYXRlKCZobWFjLCByc3AtPmF1dGgxLT5kaWdlc3QsIHNpemVvZihyc3AtPmF1dGgxLT5kaWdlc3QpKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy92dHBtLWxvY2FsaXR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3Z0cG0tbG9jYWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFiN2RlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy92dHBtLWxvY2FsaXR5LnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK2RpZmYgLS1naXQgYS90cG0vdHBtX2NhcGFiaWxpdHkuYyBiL3RwbS90cG1fY2FwYWJpbGl0eS5jCitpbmRleCA2MGJiYjkwLi5mOGY3ZjBmIDEwMDY0NAorLS0tIGEvdHBtL3RwbV9jYXBhYmlsaXR5LmMKKysrKyBiL3RwbS90cG1fY2FwYWJpbGl0eS5jCitAQCAtOTQ5LDYgKzk0OSw4IEBAIHN0YXRpYyBUUE1fUkVTVUxUIHNldF92ZW5kb3IoVUlOVDMyIHN1YkNhcCwgQllURSAqc2V0VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgc2V0VmFsdWVTaXplLCBCT09MIG93bmVyQXV0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJPT0wgZGVhY3RpdmF0ZWQsIEJPT0wgZGlzYWJsZWQpCisgeworKyAgaWYgKHRwbURhdGEuc3RhbnkuZmxhZ3MubG9jYWxpdHlNb2RpZmllciAhPSA4KQorKyAgICByZXR1cm4gVFBNX0JBRF9QQVJBTUVURVI7CisgICAvKiBzZXQgdGhlIGNhcGFiaWxpdHkgYXJlYSB3aXRoIHRoZSBzcGVjaWZpZWQgZGF0YSwgb24gZmFpbHVyZQorICAgICAgZGVhY3RpdmF0ZSB0aGUgVFBNICovCisgICBzd2l0Y2ggKHN1YkNhcCkgeworZGlmZiAtLWdpdCBhL3RwbS90cG1fY21kX2hhbmRsZXIuYyBiL3RwbS90cG1fY21kX2hhbmRsZXIuYworaW5kZXggMjg4ZDFjZS4uOWUxY2ZiNCAxMDA2NDQKKy0tLSBhL3RwbS90cG1fY21kX2hhbmRsZXIuYworKysrIGIvdHBtL3RwbV9jbWRfaGFuZGxlci5jCitAQCAtNDEzMiw3ICs0MTMyLDcgQEAgdm9pZCB0cG1fZW11bGF0b3Jfc2h1dGRvd24oKQorICAgdHBtX2V4dGVybl9yZWxlYXNlKCk7CisgfQorIAorLWludCB0cG1faGFuZGxlX2NvbW1hbmQoY29uc3QgdWludDhfdCAqaW4sIHVpbnQzMl90IGluX3NpemUsIHVpbnQ4X3QgKipvdXQsIHVpbnQzMl90ICpvdXRfc2l6ZSkKKytpbnQgdHBtX2hhbmRsZV9jb21tYW5kKGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50MzJfdCBpbl9zaXplLCB1aW50OF90ICoqb3V0LCB1aW50MzJfdCAqb3V0X3NpemUsIGludCBsb2NhbGl0eSkKKyB7CisgICBUUE1fUkVRVUVTVCByZXE7CisgICBUUE1fUkVTUE9OU0UgcnNwOworQEAgLTQxNDAsNyArNDE0MCw5IEBAIGludCB0cG1faGFuZGxlX2NvbW1hbmQoY29uc3QgdWludDhfdCAqaW4sIHVpbnQzMl90IGluX3NpemUsIHVpbnQ4X3QgKipvdXQsIHVpbnQzCisgICBVSU5UMzIgbGVuOworICAgQk9PTCBmcmVlX291dDsKKyAKKy0gIGRlYnVnKCJ0cG1faGFuZGxlX2NvbW1hbmQoKSIpOworKyAgZGVidWcoInRwbV9oYW5kbGVfY29tbWFuZCglZCkiLCBsb2NhbGl0eSk7CisrICBpZiAobG9jYWxpdHkgIT0gLTEpCisrICAgIHRwbURhdGEuc3RhbnkuZmxhZ3MubG9jYWxpdHlNb2RpZmllciA9IGxvY2FsaXR5OworIAorICAgLyogd2UgbmVlZCB0aGUgd2hvbGUgcGFja2V0IGF0IG9uY2UsIG90aGVyd2lzZSB1bm1hcnNoYWxsaW5nIHdpbGwgZmFpbCAqLworICAgaWYgKHRwbV91bm1hcnNoYWxfVFBNX1JFUVVFU1QoKHVpbnQ4X3QqKikmaW4sICZpbl9zaXplLCAmcmVxKSAhPSAwKSB7CitkaWZmIC0tZ2l0IGEvdHBtL3RwbV9lbXVsYXRvci5oIGIvdHBtL3RwbV9lbXVsYXRvci5oCitpbmRleCBlZWQ3NDllLi40YzIyOGJkIDEwMDY0NAorLS0tIGEvdHBtL3RwbV9lbXVsYXRvci5oCisrKysgYi90cG0vdHBtX2VtdWxhdG9yLmgKK0BAIC01OSw3ICs1OSw3IEBAIHZvaWQgdHBtX2VtdWxhdG9yX3NodXRkb3duKHZvaWQpOworICAqIGl0cyB1c2FnZS4gSW4gY2FzZSBvZiBhbiBlcnJvciwgYWxsIGludGVybmFsbHkgYWxsb2NhdGVkIG1lbW9yeQorICAqIGlzIHJlbGVhc2VkIGFuZCB0aGUgdGhlIHN0YXRlIG9mIG91dCBhbmQgb3V0X3NpemUgaXMgdW5zcGVjaWZpZWQuCisgICovIAorLWludCB0cG1faGFuZGxlX2NvbW1hbmQoY29uc3QgdWludDhfdCAqaW4sIHVpbnQzMl90IGluX3NpemUsIHVpbnQ4X3QgKipvdXQsIHVpbnQzMl90ICpvdXRfc2l6ZSk7CisraW50IHRwbV9oYW5kbGVfY29tbWFuZChjb25zdCB1aW50OF90ICppbiwgdWludDMyX3QgaW5fc2l6ZSwgdWludDhfdCAqKm91dCwgdWludDMyX3QgKm91dF9zaXplLCBpbnQgbG9jYWxpdHkpOworIAorICNlbmRpZiAvKiBfVFBNX0VNVUxBVE9SX0hfICovCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvdnRwbS1wYXJlbnQtc2lnbi1lay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy92dHBtLXBhcmVudC1zaWduLWVrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ZTY2ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMvdnRwbS1wYXJlbnQtc2lnbi1lay5wYXRjaApAQCAtMCwwICsxLDE5NiBAQAorZGlmZiAtLWdpdCBhL3RwbS90cG1fY21kX2hhbmRsZXIuYyBiL3RwbS90cG1fY21kX2hhbmRsZXIuYworaW5kZXggOWUxY2ZiNC4uMGZhYmY5OCAxMDA2NDQKKy0tLSBhL3RwbS90cG1fY21kX2hhbmRsZXIuYworKysrIGIvdHBtL3RwbV9jbWRfaGFuZGxlci5jCitAQCAtMzMxMiw2ICszMzEyLDM3IEBAIHN0YXRpYyBUUE1fUkVTVUxUIGV4ZWN1dGVfVFBNX093bmVyUmVhZFB1YmVrKFRQTV9SRVFVRVNUICpyZXEsIFRQTV9SRVNQT05TRSAqcnNwCisgICByZXR1cm4gcmVzOworIH0KKyAKKytzdGF0aWMgVFBNX1JFU1VMVCBleGVjdXRlX1RQTV9QYXJlbnRTaWduRUsoVFBNX1JFUVVFU1QgKnJlcSwgVFBNX1JFU1BPTlNFICpyc3ApCisreworKwlUUE1fTk9OQ0Ugbm9uY2U7CisrCVRQTV9SRVNVTFQgcmVzOworKwlVSU5UMzIgc2lnU2l6ZTsKKysJQllURSAqc2lnOworKwlCWVRFICpwdHI7CisrCVVJTlQzMiBsZW47CisrCVRQTV9QQ1JfU0VMRUNUSU9OIHRhcmdldFBDUjsKKysKKysJdHBtX2NvbXB1dGVfaW5fcGFyYW1fZGlnZXN0KHJlcSk7CisrCisrCXB0ciA9IHJlcS0+cGFyYW07CisrCWxlbiA9IHJlcS0+cGFyYW1TaXplOworKwlpZiAodHBtX3VubWFyc2hhbF9UUE1fTk9OQ0UoJnB0ciwgJmxlbiwgJm5vbmNlKQorKwkJfHwgdHBtX3VubWFyc2hhbF9UUE1fUENSX1NFTEVDVElPTigmcHRyLCAmbGVuLCAmdGFyZ2V0UENSKQorKwkJfHwgbGVuICE9IDApIHJldHVybiBUUE1fQkFEX1BBUkFNRVRFUjsKKysKKysJcmVzID0gVFBNX1BhcmVudFNpZ25FSygmbm9uY2UsICZ0YXJnZXRQQ1IsICZyZXEtPmF1dGgxLCAmc2lnU2l6ZSwgJnNpZyk7CisrCWlmIChyZXMgIT0gVFBNX1NVQ0NFU1MpIHJldHVybiByZXM7CisrCXJzcC0+cGFyYW1TaXplID0gbGVuID0gc2lnU2l6ZTsKKysJcnNwLT5wYXJhbSA9IHB0ciA9IHRwbV9tYWxsb2MobGVuKTsKKysJaWYgKHB0ciA9PSBOVUxMIHx8IHRwbV9tYXJzaGFsX0JMT0IoJnB0ciwgJmxlbiwgc2lnLCBzaWdTaXplKSkgeworKwkJdHBtX2ZyZWUocnNwLT5wYXJhbSk7CisrCQlyZXMgPSBUUE1fRkFJTDsKKysJfQorKwl0cG1fZnJlZShzaWcpOworKworKwlyZXR1cm4gcmVzOworK30KKysKKyBzdGF0aWMgdm9pZCB0cG1fc2V0dXBfcnNwX2F1dGgoVFBNX0NPTU1BTkRfQ09ERSBvcmRpbmFsLCBUUE1fUkVTUE9OU0UgKnJzcCkgCisgeworICAgdHBtX2htYWNfY3R4X3QgaG1hYzsKK0BAIC00MDYyLDYgKzQwOTMsMTEgQEAgdm9pZCB0cG1fZXhlY3V0ZV9jb21tYW5kKFRQTV9SRVFVRVNUICpyZXEsIFRQTV9SRVNQT05TRSAqcnNwKQorICAgICAgIHJlcyA9IGV4ZWN1dGVfVFBNX093bmVyUmVhZFB1YmVrKHJlcSwgcnNwKTsKKyAgICAgYnJlYWs7CisgCisrICAgIGNhc2UgVFBNX09SRF9QYXJlbnRTaWduRUs6CisrICAgICAgZGVidWcoIltUUE1fT1JEX1BhcmVudFNpZ25FS10iKTsKKysgICAgICByZXMgPSBleGVjdXRlX1RQTV9QYXJlbnRTaWduRUsocmVxLCByc3ApOworKyAgICBicmVhazsKKysKKyAgICAgZGVmYXVsdDoKKyAjaWZkZWYgTVRNX0VNVUxBVE9SCisgICAgICAgcmVzID0gbXRtX2V4ZWN1dGVfY29tbWFuZChyZXEsIHJzcCk7CitkaWZmIC0tZ2l0IGEvdHBtL3RwbV9jb21tYW5kcy5oIGIvdHBtL3RwbV9jb21tYW5kcy5oCitpbmRleCBhNzY2NmY2Li43ZmVmOTM0IDEwMDY0NAorLS0tIGEvdHBtL3RwbV9jb21tYW5kcy5oCisrKysgYi90cG0vdHBtX2NvbW1hbmRzLmgKK0BAIC0zMDU0LDYgKzMwNTQsMjMgQEAgVFBNX1JFU1VMVCBUUE1fT3duZXJSZWFkUHViZWsoCisgICBUUE1fUFVCS0VZICpwdWJFbmRvcnNlbWVudEtleSAKKyApOworIAorKy8qKgorKyAqIFRQTV9QYXJlbnRTaWduRUsgLSBnZXRzIGEgaGFyZHdhcmUgVFBNIHF1b3RlIG9mIGEgdlRQTSdzIEVLCisrICogQGV4dGVybmFsRGF0YTogW2luXSBBbnRpUmVwbGF5IG5vbmNlIHRvIHByZXZlbnQgcmVwbGF5IG9mIG1lc3NhZ2VzCisrICogQHNlbDogW2luXSBQQ1Igc2VsZWN0aW9uIGZvciB0aGUgaGFyZHdhcmUgVFBNJ3MgcXVvdGUKKysgKiBAYXV0aDE6IFtpbiwgb3V0XSBBdXRob3JpemF0aW9uIHByb3RvY29sIHBhcmFtZXRlcnMKKysgKiBAc2lnU2l6ZTogW291dF0gVGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgZGlnaXRhbCBzaWduYXR1cmUKKysgKiBAc2lnOiBbb3V0XSBUaGUgcmVzdWx0aW5nIGRpZ2l0YWwgc2lnbmF0dXJlIGFuZCBQQ1IgdmFsdWVzCisrICogUmV0dXJuczogVFBNX1NVQ0NFU1Mgb24gc3VjY2VzcywgYSBUUE0gZXJyb3IgY29kZSBvdGhlcndpc2UuCisrICovCisrVFBNX1JFU1VMVCBUUE1fUGFyZW50U2lnbkVLKAorKyAgVFBNX05PTkNFICpleHRlcm5hbERhdGEsCisrICBUUE1fUENSX1NFTEVDVElPTiAqc2VsLAorKyAgVFBNX0FVVEggKmF1dGgxLAorKyAgVUlOVDMyICpzaWdTaXplLAorKyAgQllURSAqKnNpZworKyk7CisrCisgLyoKKyAgKiBFcnJvciBoYW5kbGluZworICAqIFt0cG1fZXJyb3IuY10KK2RpZmYgLS1naXQgYS90cG0vdHBtX2NyZWRlbnRpYWxzLmMgYi90cG0vdHBtX2NyZWRlbnRpYWxzLmMKK2luZGV4IDljZDY0YWYuLjAxZjI5ZTYgMTAwNjQ0CistLS0gYS90cG0vdHBtX2NyZWRlbnRpYWxzLmMKKysrKyBiL3RwbS90cG1fY3JlZGVudGlhbHMuYworQEAgLTE4MCwzICsxODAsMzQgQEAgVFBNX1JFU1VMVCBUUE1fT3duZXJSZWFkSW50ZXJuYWxQdWIoVFBNX0tFWV9IQU5ETEUga2V5SGFuZGxlLCBUUE1fQVVUSCAqYXV0aDEsCisgICAgIHJldHVybiBUUE1fQkFEX1BBUkFNRVRFUjsKKyAgIH0KKyB9CisrCisraW50IGVuZG9yc2VtZW50S2V5RnJlc2ggPSAwOworKworK1RQTV9SRVNVTFQgVlRQTV9HZXRQYXJlbnRRdW90ZShUUE1fRElHRVNUKiBkYXRhLCBUUE1fUENSX1NFTEVDVElPTiAqc2VsLCBVSU5UMzIgKnNpZ1NpemUsIEJZVEUgKipzaWcpOworKworK1RQTV9SRVNVTFQgVFBNX1BhcmVudFNpZ25FSyhUUE1fTk9OQ0UgKmV4dGVybmFsRGF0YSwgVFBNX1BDUl9TRUxFQ1RJT04gKnNlbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNX0FVVEggKmF1dGgxLCBVSU5UMzIgKnNpZ1NpemUsIEJZVEUgKipzaWcpCisreworKwlUUE1fUFVCS0VZIHB1YktleTsKKysJVFBNX1JFU1VMVCByZXM7CisrCVRQTV9ESUdFU1QgaHJlczsKKysKKysJaW5mbygiVFBNX1BhcmVudFNpZ25FSygpIik7CisrCisrCXJlcyA9IHRwbV92ZXJpZnlfYXV0aChhdXRoMSwgdHBtRGF0YS5wZXJtYW5lbnQuZGF0YS5vd25lckF1dGgsIFRQTV9LSF9PV05FUik7CisrCWlmIChyZXMgIT0gVFBNX1NVQ0NFU1MpIHJldHVybiByZXM7CisrCisrCWlmICghZW5kb3JzZW1lbnRLZXlGcmVzaCkgcmV0dXJuIFRQTV9ESVNBQkxFRF9DTUQ7CisrCisrCXJlcyA9IHRwbV9nZXRfcHViZWsoJnB1YktleSk7CisrCWlmIChyZXMgIT0gVFBNX1NVQ0NFU1MpIHJldHVybiByZXM7CisrCisrCWlmICh0cG1fY29tcHV0ZV9wdWJrZXlfY2hlY2tzdW0oZXh0ZXJuYWxEYXRhLCAmcHViS2V5LCAmaHJlcykpCisrCQlyZXMgPSBUUE1fRkFJTDsKKysKKysJaWYgKHJlcyA9PSBUUE1fU1VDQ0VTUykKKysJCXJlcyA9IFZUUE1fR2V0UGFyZW50UXVvdGUoJmhyZXMsIHNlbCwgc2lnU2l6ZSwgc2lnKTsKKysKKysJZnJlZV9UUE1fUFVCS0VZKHB1YktleSk7CisrCXJldHVybiByZXM7CisrfQorZGlmZiAtLWdpdCBhL3RwbS90cG1fZGF0YS5jIGIvdHBtL3RwbV9kYXRhLmMKK2luZGV4IDUwYzk2OTcuLjZhMGM0OTkgMTAwNjQ0CistLS0gYS90cG0vdHBtX2RhdGEuYworKysrIGIvdHBtL3RwbV9kYXRhLmMKK0BAIC03Niw2ICs3Niw4IEBAIHN0YXRpYyB2b2lkIGluaXRfdGltZW91dHModm9pZCkKKyAgIHRwbURhdGEucGVybWFuZW50LmRhdGEuY21kX2R1cmF0aW9uc1syXSA9IDEwMDA7CisgfQorIAorK2V4dGVybiBpbnQgZW5kb3JzZW1lbnRLZXlGcmVzaDsKKysKKyB2b2lkIHRwbV9pbml0X2RhdGEodm9pZCkKKyB7CisgICAvKiBlbmRvcnNlbWVudCBrZXkgKi8KK0BAIC0xNTcsNiArMTU5LDcgQEAgdm9pZCB0cG1faW5pdF9kYXRhKHZvaWQpCisgICBpZiAodHBtQ29uZiAmIFRQTV9DT05GX0dFTkVSQVRFX0VLKSB7CisgICAgIC8qIGdlbmVyYXRlIGEgbmV3IGVuZG9yc2VtZW50IGtleSAqLworICAgICB0cG1fcnNhX2dlbmVyYXRlX2tleSgmdHBtRGF0YS5wZXJtYW5lbnQuZGF0YS5lbmRvcnNlbWVudEtleSwgMjA0OCk7CisrICAgIGVuZG9yc2VtZW50S2V5RnJlc2ggPSAxOworICAgfSBlbHNlIHsKKyAgICAgLyogc2V0dXAgZW5kb3JzZW1lbnQga2V5ICovCisgICAgIHRwbV9yc2FfaW1wb3J0X2tleSgmdHBtRGF0YS5wZXJtYW5lbnQuZGF0YS5lbmRvcnNlbWVudEtleSwgCitkaWZmIC0tZ2l0IGEvdHBtL3RwbV9zdHJ1Y3R1cmVzLmggYi90cG0vdHBtX3N0cnVjdHVyZXMuaAoraW5kZXggZjc0NmMwNS4uYjBmNDYyNSAxMDA2NDQKKy0tLSBhL3RwbS90cG1fc3RydWN0dXJlcy5oCisrKysgYi90cG0vdHBtX3N0cnVjdHVyZXMuaAorQEAgLTY1OCw2ICs2NTgsNDkgQEAgdHlwZWRlZiBzdHJ1Y3QgdGRUUE1fQ01LX01BX0FQUFJPVkFMIHsKKyAjZGVmaW5lIFRQTV9PUkRfVGlja1N0YW1wQmxvYiAgICAgICAgICAgICAgICAgICAyNDIKKyAjZGVmaW5lIFRQTV9PUkRfTUFYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTYKKyAKKysvKiBWVFBNLW9ubHkgY29tbWFuZHM6ICovCisrLyoKKysgKiBQYXJlbnRTaWduRUsgLSBQcm9vZiBvZiBmcmVzaCBwcm92aXNpb25pbmcgYW5kIEVLIHZhbHVlCisrICoKKysgKiBJbnB1dDoKKysgKiAgIFRQTV9UQUcgICAgICAgICAgICAgdGFnICAgICAgICAgICBUUE1fVEFHX1JRVV9BVVRIMV9DT01NQU5ECisrICogICBVSU5UMzIgICAgICAgICAgICAgIHBhcmFtU2l6ZSAgICAgVG90YWwgc2l6ZSBvZiByZXF1ZXN0CisrICogICBUUE1fQ09NTUFORF9DT0RFICAgIG9yZGluYWwgICAgICAgVFBNX09SRF9QYXJlbnRTaWduRUsKKysgKiAgIFRQTV9OT05DRSAgICAgICAgICAgZXh0ZXJuRGF0YSAgICAyMCBieXRlcyBvZiBleHRlcm5hbCBkYXRhCisrICogICBUUE1fUENSX1NFTEVDVElPTiAgIHB0U2VsICAgICAgICAgUENSIHNlbGVjdGlvbiBmb3IgcGh5c2ljYWwgVFBNCisrICogICAtLS0KKysgKiAgIFVJTlQzMiAgICAgICAgICAgICAgYXV0aEhhbmRsZSAgICBPd25lciBhdXRob3JpemF0aW9uIHNlc3Npb24gKE9JQVApCisrICogICBUUE1fTk9OQ0UgICAgICAgICAgIG5vbmNlT2RkICAgICAgTm9uY2UgZm9yIGF1dGhIYW5kbGUKKysgKiAgIEJPT0wgICAgICAgICAgICAgICAgY29udGludWVBdXRoICBDb250aW51ZSBmbGFnIGZvciBhdXRoSGFuZGxlCisrICogICBUUE1fQVVUSERBVEEgICAgICAgIHByaXZBdXRoICAgICAgQXV0aG9yaXphdGlvbiBkaWdlc3QgZm9yIGNvbW1hbmQKKysgKgorKyAqIE91dHB1dDoKKysgKiAgIFRQTV9UQUcgICAgICAgICAgICAgdGFnICAgICAgICAgICBUUE1fVEFHX1JTUF9BVVRIMV9DT01NQU5ECisrICogICBVSU5UMzIgICAgICAgICAgICAgIHBhcmFtU2l6ZSAgICAgVG90YWwgc2l6ZSBvZiByZXNwb25zZQorKyAqICAgVFBNX1JFU1VMVCAgICAgICAgICByZXR1cm5Db2RlICAgIFJldHVybiBjb2RlIG9mIHRoZSBvcGVyYXRpb24KKysgKiAgIEJZVEVbXSAgICAgICAgICAgICAgc2lnICAgICAgICAgICBTaWduYXR1cmUgcHJvdmlkZWQgYnkgcGh5c2ljYWwgVFBNCisrICogICBUUE1fUENSVkFMVUVbXSAgICAgIHBjclZhbHVlICAgICAgVmFsdWVzIG9mIGhhcmR3YXJlIFBDUnMgdXNlZCBpbiB0aGUgcXVvdGUKKysgKiAgIC0tLQorKyAqICAgVFBNX05PTkNFICAgICAgICAgICBub25jZUV2ZW4gICAgIE5vbmNlIGZvciBhdXRoSGFuZGxlCisrICogICBCT09MICAgICAgICAgICAgICAgIGNvbnRpbnVlQXV0aCAgQ29udGludWUgZmxhZyBmb3IgYXV0aEhhbmRsZQorKyAqICAgVFBNX0FVVEhEQVRBICAgICAgICByZXNBdXRoICAgICAgIEF1dGhvcml6YXRpb24gZGlnZXN0IGZvciByZXNwb25zZQorKyAqCisrICogVGhpcyBjb21tYW5kIGlzIG9ubHkgdmFsaWQgb24gdGhlIGZpcnN0IGJvb3Qgb2YgYSB2VFBNOyBvbiBhbnkgc3Vic2VxdWVudAorKyAqIGJvb3QsIHRoZSBjb21tYW5kIHJldHVybnMgVFBNX0RJU0FCTEVEX0NNRC4gSXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB0bworKyAqIHByb3ZpZGUgZXZpZGVuY2Ugb2YgcHJvcGVyIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gdG8gdGhlIHZlcmlmaWVyL0NBIHdoaWNoIGlzCisrICogcmVzcG9uc2libGUgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgdlRQTSdzIGVuZG9yc2VtZW50IGNyZWRlbnRpYWwsIHdoaWNoIHdpbGwKKysgKiBiZSB1c2VkIG9uIHN1YnNlcXVlbnQgYm9vdHMgdG8gY2VydGlmeSBBSUtzIHZpYSB0aGUgdXN1YWwgUHJpdmFjeSBDQSBwcm90b2NvbC4KKysgKgorKyAqIFRoZSB2YWx1ZXMgb2YgdGhlIHZpcnR1YWwgVFBNJ3MgUENScyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXNwb25zZS4KKysgKiBUaGUgc2lnbmF0dXJlIGlzIGEgc3RhbmRhcmQgVFBNX1F1b3RlIHJlc3BvbnNlIGZyb20gdGhlIHBoeXNpY2FsIFRQTTsgaXRzCisrICogZXh0ZXJuYWxEYXRhIGlzIHRoZSBTSEExIGhhc2ggb2YgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6CisrICogICBUUE1fUFVCS0VZICAgICAgICAgIHB1YkVLICAgICAgICAgVGhlIHZUUE0ncyBwdWJsaWMgRUsKKysgKiAgIFRQTV9OT05DRSAgICAgICAgICAgZXh0ZXJuRGF0YSAgICBGcm9tIGlucHV0IHRvIHRoZSBkZWVwIHF1b3RlCisrICoKKysgKiBUaGlzIHN0cnVjdHVyZSB3YXMgY2hvc2VuIHRvIG1hdGNoIHRoZSByZXR1cm4gb2YgVFBNX1JlYWRQdWJlaworKyAqLworKyNkZWZpbmUgVFBNX09SRF9QYXJlbnRTaWduRUsgICAgICAgICAgICAgICAgICAgIChUUE1fVkVORE9SX0NPTU1BTkQgfCBUUE1fT1JEX1JlYWRQdWJlaykKKysKKyAvKgorICAqIFRDUyBPcmRpbmFscyAoW1RQTV9QYXJ0Ml0sIFNlY3Rpb24gMTcuMSkKKyAgKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3hzYTI0Ni00LjkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMveHNhMjQ2LTQuOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzcwYTEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3hzYTI0Ni00LjkucGF0Y2gKQEAgLTAsMCArMSw3NCBAQAorRnJvbTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAbGluYXJvLm9yZz4KK1N1YmplY3Q6IHg4Ni9wb2Q6IHByZXZlbnQgaW5maW5pdGUgbG9vcCB3aGVuIHNoYXR0ZXJpbmcgbGFyZ2UgcGFnZXMKKworV2hlbiBwb3B1bGF0aW5nIHBhZ2VzLCB0aGUgUG9EIG1heSBuZWVkIHRvIHNwbGl0IGxhcmdlIG9uZXMgdXNpbmcKK3AybV9zZXRfZW50cnkgYW5kIHJlcXVlc3QgdGhlIGNhbGxlciB0byByZXRyeSAoc2VlIGVwdF9nZXRfZW50cnkgZm9yCitpbnN0YW5jZSkuCisKK3AybV9zZXRfZW50cnkgbWF5IGZhaWwgdG8gc2hhdHRlciBpZiBpdCBpcyBub3QgcG9zc2libGUgdG8gYWxsb2NhdGUKK21lbW9yeSBmb3IgdGhlIG5ldyBwYWdlIHRhYmxlLiBIb3dldmVyLCB0aGUgZXJyb3IgaXMgbm90IHByb3BhZ2F0ZWQKK3Jlc3VsdGluZyB0byB0aGUgY2FsbGVycyB0byByZXRyeSBpbmZpbml0ZWx5IHRoZSBQb0QuCisKK1ByZXZlbnQgdGhlIGluZmluaXRlIGxvb3AgYnkgcmV0dXJuIGZhbHNlIHdoZW4gaXQgaXMgbm90IHBvc3NpYmxlIHRvCitzaGF0dGVyIHRoZSBsYXJnZSBtYXBwaW5nLgorCitUaGlzIGlzIFhTQS0yNDYuCisKK1NpZ25lZC1vZmYtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGxpbmFyby5vcmc+CitTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CitSZXZpZXdlZC1ieTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgorCistLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCisrKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCitAQCAtMTA3MSw5ICsxMDcxLDggQEAgcDJtX3BvZF9kZW1hbmRfcG9wdWxhdGUoc3RydWN0IHAybV9kb21haQorICAgICAgICAgICogTk9URTogSW4gYSBmaW5lLWdyYWluZWQgcDJtIGxvY2tpbmcgc2NlbmFyaW8gdGhpcyBvcGVyYXRpb24KKyAgICAgICAgICAqIG1heSBuZWVkIHRvIHByb21vdGUgaXRzIGxvY2tpbmcgZnJvbSBnZm4tPjFnIHN1cGVycGFnZQorICAgICAgICAgICovCistICAgICAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuX2FsaWduZWQsIElOVkFMSURfTUZOLCBQQUdFX09SREVSXzJNLAorLSAgICAgICAgICAgICAgICAgICAgICBwMm1fcG9wdWxhdGVfb25fZGVtYW5kLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKKy0gICAgICAgIHJldHVybiAwOworKyAgICAgICAgcmV0dXJuIHAybV9zZXRfZW50cnkocDJtLCBnZm5fYWxpZ25lZCwgSU5WQUxJRF9NRk4sIFBBR0VfT1JERVJfMk0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fcG9wdWxhdGVfb25fZGVtYW5kLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKKyAgICAgfQorIAorICAgICAvKiBPbmx5IHJlY2xhaW0gaWYgd2UncmUgaW4gYWN0dWFsIG5lZWQgb2YgbW9yZSBjYWNoZS4gKi8KK0BAIC0xMTA0LDggKzExMDMsMTIgQEAgcDJtX3BvZF9kZW1hbmRfcG9wdWxhdGUoc3RydWN0IHAybV9kb21haQorIAorICAgICBnZm5fYWxpZ25lZCA9IChnZm4gPj4gb3JkZXIpIDw8IG9yZGVyOworIAorLSAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuX2FsaWduZWQsIG1mbiwgb3JkZXIsIHAybV9yYW1fcncsCistICAgICAgICAgICAgICAgICAgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7CisrICAgIGlmICggcDJtX3NldF9lbnRyeShwMm0sIGdmbl9hbGlnbmVkLCBtZm4sIG9yZGVyLCBwMm1fcmFtX3J3LAorKyAgICAgICAgICAgICAgICAgICAgICAgcDJtLT5kZWZhdWx0X2FjY2VzcykgKQorKyAgICB7CisrICAgICAgICBwMm1fcG9kX2NhY2hlX2FkZChwMm0sIHAsIG9yZGVyKTsKKysgICAgICAgIGdvdG8gb3V0X2ZhaWw7CisrICAgIH0KKyAKKyAgICAgZm9yKCBpID0gMDsgaSA8ICgxVUwgPDwgb3JkZXIpOyBpKysgKQorICAgICB7CitAQCAtMTE1MCwxMyArMTE1MywxOCBAQCByZW1hcF9hbmRfcmV0cnk6CisgICAgIEJVR19PTihvcmRlciAhPSBQQUdFX09SREVSXzJNKTsKKyAgICAgcG9kX3VubG9jayhwMm0pOworIAorLSAgICAvKiBSZW1hcCB0aGlzIDItbWVnIHJlZ2lvbiBpbiBzaW5nbGV0b24gY2h1bmtzICovCistICAgIC8qIE5PVEU6IEluIGEgcDJtIGZpbmUtZ3JhaW5lZCBsb2NrIHNjZW5hcmlvIHRoaXMgbWlnaHQKKy0gICAgICogbmVlZCBwcm9tb3RpbmcgdGhlIGdmbiBsb2NrIGZyb20gZ2ZuLT4yTSBzdXBlcnBhZ2UgKi8KKysgICAgLyoKKysgICAgICogUmVtYXAgdGhpcyAyLW1lZyByZWdpb24gaW4gc2luZ2xldG9uIGNodW5rcy4gU2VlIHRoZSBjb21tZW50IG9uIHRoZQorKyAgICAgKiAxRyBwYWdlIHNwbGl0dGluZyBwYXRoIGFib3ZlIGZvciB3aHkgYSBzaW5nbGUgY2FsbCBzdWZmaWNlcy4KKysgICAgICoKKysgICAgICogTk9URTogSW4gYSBwMm0gZmluZS1ncmFpbmVkIGxvY2sgc2NlbmFyaW8gdGhpcyBtaWdodAorKyAgICAgKiBuZWVkIHByb21vdGluZyB0aGUgZ2ZuIGxvY2sgZnJvbSBnZm4tPjJNIHN1cGVycGFnZS4KKysgICAgICovCisgICAgIGdmbl9hbGlnbmVkID0gKGdmbj4+b3JkZXIpPDxvcmRlcjsKKy0gICAgZm9yKGk9MDsgaTwoMTw8b3JkZXIpOyBpKyspCistICAgICAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuX2FsaWduZWQgKyBpLCBJTlZBTElEX01GTiwgUEFHRV9PUkRFUl80SywKKy0gICAgICAgICAgICAgICAgICAgICAgcDJtX3BvcHVsYXRlX29uX2RlbWFuZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7CisrICAgIGlmICggcDJtX3NldF9lbnRyeShwMm0sIGdmbl9hbGlnbmVkLCBJTlZBTElEX01GTiwgUEFHRV9PUkRFUl80SywKKysgICAgICAgICAgICAgICAgICAgICAgIHAybV9wb3B1bGF0ZV9vbl9kZW1hbmQsIHAybS0+ZGVmYXVsdF9hY2Nlc3MpICkKKysgICAgICAgIHJldHVybiAtMTsKKysKKyAgICAgaWYgKCB0Yl9pbml0X2RvbmUgKQorICAgICB7CisgICAgICAgICBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3hzYTI0OC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy94c2EyNDgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY2YzE2ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy94c2EyNDgucGF0Y2gKQEAgLTAsMCArMSwxNjQgQEAKK0Zyb206IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KK1N1YmplY3Q6IHg4Ni9tbTogZG9uJ3Qgd3JvbmdseSBzZXQgcGFnZSBvd25lcnNoaXAKKworUFYgZG9tYWlucyBjYW4gb2J0YWluIG1hcHBpbmdzIG9mIGFueSBwYWdlcyBvd25lZCBieSB0aGUgY29ycmVjdCBkb21haW4sCitpbmNsdWRpbmcgb25lcyB0aGF0IGFyZW4ndCBhY3R1YWxseSBhc3NpZ25lZCBhcyAibm9ybWFsIiBSQU0sIGJ1dCB1c2VkCitieSBYZW4gaW50ZXJuYWxseS4gIEF0IHRoZSBtb21lbnQgc3VjaCAiaW50ZXJuYWwiIHBhZ2VzIG1hcmtlZCBhcyBvd25lZAorYnkgYSBndWVzdCBpbmNsdWRlIHBhZ2VzIHVzZWQgdG8gdHJhY2sgbG9nZGlydHkgYml0cywgYXMgd2VsbCBhcyBwMm0KK3BhZ2VzIGFuZCB0aGUgInVucGFnZWQgcGFnZXRhYmxlIiBmb3IgSFZNIGd1ZXN0cy4gU2luY2UgdGhlIFBWIG1lbW9yeQorbWFuYWdlbWVudCBhbmQgc2hhZG93IGNvZGUgY29uZmxpY3QgaW4gdGhlaXIgdXNlIG9mIHN0cnVjdCBwYWdlX2luZm8KK2ZpZWxkcywgYW5kIHNpbmNlIHNoYWRvdyBjb2RlIGlzIGJlaW5nIHVzZWQgZm9yIGxvZy1kaXJ0eSBoYW5kbGluZyBmb3IKK1BWIGRvbWFpbnMsIHBhZ2VzIGNvbWluZyBmcm9tIHRoZSBzaGFkb3cgcG9vbCBtdXN0LCBmb3IgUFYgZG9tYWlucywgbm90CitoYXZlIHRoZSBkb21haW4gc2V0IGFzIHRoZWlyIG93bmVyLgorCitXaGlsZSB0aGUgY2hhbmdlIGNvdWxkIGJlIGRvbmUgY29uZGl0aW9uYWxseSBmb3IganVzdCB0aGUgUFYgY2FzZSBpbgorc2hhZG93IGNvZGUsIGRvIGl0IHVuY29uZGl0aW9uYWxseSAoYW5kIGZvciBjb25zaXN0ZW5jeSBhbHNvIGZvciBIQVApLAoranVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLgorCitUaGVyZSdzIG9uZSBzcGVjaWFsIGNhc2UgdGhvdWdoIGZvciBzaGFkb3cgY29kZTogVGhlIHBhZ2UgdGFibGUgdXNlZCBmb3IKK3J1bm5pbmcgYSBIVk0gZ3Vlc3QgaW4gdW5wYWdlZCBtb2RlIGlzIHN1YmplY3QgdG8gZ2V0X3BhZ2UoKSAoaW4KK3NldF9zaGFkb3dfc3RhdHVzKCkpIGFuZCBoZW5jZSBtdXN0IGhhdmUgaXRzIG93bmVyIHNldC4KKworVGhpcyBpcyBYU0EtMjQ4LgorCitTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CitSZXZpZXdlZC1ieTogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+CitSZXZpZXdlZC1ieTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgorLS0tCit2MjogRHJvcCBQR0NfcGFnZV90YWJsZSByZWxhdGVkIHBpZWNlcy4KKworLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYworKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYworQEAgLTI4Niw4ICsyODYsNyBAQCBzdGF0aWMgc3RydWN0IHBhZ2VfaW5mbyAqaGFwX2FsbG9jX3AybV9wCisgICAgIHsKKyAgICAgICAgIGQtPmFyY2gucGFnaW5nLmhhcC50b3RhbF9wYWdlcy0tOworICAgICAgICAgZC0+YXJjaC5wYWdpbmcuaGFwLnAybV9wYWdlcysrOworLSAgICAgICAgcGFnZV9zZXRfb3duZXIocGcsIGQpOworLSAgICAgICAgcGctPmNvdW50X2luZm8gfD0gMTsKKysgICAgICAgIEFTU0VSVCghcGFnZV9nZXRfb3duZXIocGcpICYmICEocGctPmNvdW50X2luZm8gJiBQR0NfY291bnRfbWFzaykpOworICAgICB9CisgICAgIGVsc2UgaWYgKCAhZC0+YXJjaC5wYWdpbmcucDJtX2FsbG9jX2ZhaWxlZCApCisgICAgIHsKK0BAIC0zMDIsMjEgKzMwMSwyMyBAQCBzdGF0aWMgc3RydWN0IHBhZ2VfaW5mbyAqaGFwX2FsbG9jX3AybV9wCisgCisgc3RhdGljIHZvaWQgaGFwX2ZyZWVfcDJtX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHBhZ2VfaW5mbyAqcGcpCisgeworKyAgICBzdHJ1Y3QgZG9tYWluICpvd25lciA9IHBhZ2VfZ2V0X293bmVyKHBnKTsKKysKKyAgICAgLyogVGhpcyBpcyBjYWxsZWQgYm90aCBmcm9tIHRoZSBwMm0gY29kZSAod2hpY2ggbmV2ZXIgaG9sZHMgdGhlIAorICAgICAgKiBwYWdpbmcgbG9jaykgYW5kIHRoZSBsb2ctZGlydHkgY29kZSAod2hpY2ggYWx3YXlzIGRvZXMpLiAqLworICAgICBwYWdpbmdfbG9ja19yZWN1cnNpdmUoZCk7CisgCistICAgIEFTU0VSVChwYWdlX2dldF9vd25lcihwZykgPT0gZCk7CistICAgIC8qIFNob3VsZCBoYXZlIGp1c3QgdGhlIG9uZSByZWYgd2UgZ2F2ZSBpdCBpbiBhbGxvY19wMm1fcGFnZSgpICovCistICAgIGlmICggKHBnLT5jb3VudF9pbmZvICYgUEdDX2NvdW50X21hc2spICE9IDEgKSB7CistICAgICAgICBIQVBfRVJST1IoIk9kZCBwMm0gcGFnZSAlcCBjb3VudCBjPSUjbHggdD0lIlBSdHlwZV9pbmZvIlxuIiwKKy0gICAgICAgICAgICAgICAgICAgICBwZywgcGctPmNvdW50X2luZm8sIHBnLT51LmludXNlLnR5cGVfaW5mbyk7CisrICAgIC8qIFNob3VsZCBzdGlsbCBoYXZlIG5vIG93bmVyIGFuZCBjb3VudCB6ZXJvLiAqLworKyAgICBpZiAoIG93bmVyIHx8IChwZy0+Y291bnRfaW5mbyAmIFBHQ19jb3VudF9tYXNrKSApCisrICAgIHsKKysgICAgICAgIEhBUF9FUlJPUigiZCVkOiBPZGQgcDJtIHBhZ2UgJSJQUklfbWZuIiBkPSVkIGM9JWx4IHQ9JSJQUnR5cGVfaW5mbyJcbiIsCisrICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBtZm5feChwYWdlX3RvX21mbihwZykpLAorKyAgICAgICAgICAgICAgICAgIG93bmVyID8gb3duZXItPmRvbWFpbl9pZCA6IERPTUlEX0lOVkFMSUQsCisrICAgICAgICAgICAgICAgICAgcGctPmNvdW50X2luZm8sIHBnLT51LmludXNlLnR5cGVfaW5mbyk7CisgICAgICAgICBXQVJOKCk7CisrICAgICAgICBwZy0+Y291bnRfaW5mbyAmPSB+UEdDX2NvdW50X21hc2s7CisrICAgICAgICBwYWdlX3NldF9vd25lcihwZywgTlVMTCk7CisgICAgIH0KKy0gICAgcGctPmNvdW50X2luZm8gJj0gflBHQ19jb3VudF9tYXNrOworLSAgICAvKiBGcmVlIHNob3VsZCBub3QgZGVjcmVtZW50IGRvbWFpbidzIHRvdGFsIGFsbG9jYXRpb24sIHNpbmNlCistICAgICAqIHRoZXNlIHBhZ2VzIHdlcmUgYWxsb2NhdGVkIHdpdGhvdXQgYW4gb3duZXIuICovCistICAgIHBhZ2Vfc2V0X293bmVyKHBnLCBOVUxMKTsKKyAgICAgZC0+YXJjaC5wYWdpbmcuaGFwLnAybV9wYWdlcy0tOworICAgICBkLT5hcmNoLnBhZ2luZy5oYXAudG90YWxfcGFnZXMrKzsKKyAgICAgaGFwX2ZyZWUoZCwgcGFnZV90b19tZm4ocGcpKTsKKy0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKKysrKyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKK0BAIC0xNTAzLDMyICsxNTAzLDI5IEBAIHNoYWRvd19hbGxvY19wMm1fcGFnZShzdHJ1Y3QgZG9tYWluICpkKQorICAgICBwZyA9IG1mbl90b19wYWdlKHNoYWRvd19hbGxvYyhkLCBTSF90eXBlX3AybV90YWJsZSwgMCkpOworICAgICBkLT5hcmNoLnBhZ2luZy5zaGFkb3cucDJtX3BhZ2VzKys7CisgICAgIGQtPmFyY2gucGFnaW5nLnNoYWRvdy50b3RhbF9wYWdlcy0tOworKyAgICBBU1NFUlQoIXBhZ2VfZ2V0X293bmVyKHBnKSAmJiAhKHBnLT5jb3VudF9pbmZvICYgUEdDX2NvdW50X21hc2spKTsKKyAKKyAgICAgcGFnaW5nX3VubG9jayhkKTsKKyAKKy0gICAgLyogVW5saWtlIHNoYWRvdyBwYWdlcywgbWFyayBwMm0gcGFnZXMgYXMgb3duZWQgYnkgdGhlIGRvbWFpbi4KKy0gICAgICogTWFya2luZyB0aGUgZG9tYWluIGFzIHRoZSBvd25lciB3b3VsZCBub3JtYWxseSBhbGxvdyB0aGUgZ3Vlc3QgdG8KKy0gICAgICogY3JlYXRlIG1hcHBpbmdzIG9mIHRoZXNlIHBhZ2VzLCBidXQgdGhlc2UgcDJtIHBhZ2VzIHdpbGwgbmV2ZXIgYmUKKy0gICAgICogaW4gdGhlIGRvbWFpbidzIGd1ZXN0LXBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UsIGFuZCBzbyB0aGF0IGlzIG5vdAorLSAgICAgKiBiZWxpZXZlZCB0byBiZSBhIGNvbmNlcm4uICovCistICAgIHBhZ2Vfc2V0X293bmVyKHBnLCBkKTsKKy0gICAgcGctPmNvdW50X2luZm8gfD0gMTsKKyAgICAgcmV0dXJuIHBnOworIH0KKyAKKyBzdGF0aWMgdm9pZAorIHNoYWRvd19mcmVlX3AybV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwYWdlX2luZm8gKnBnKQorIHsKKy0gICAgQVNTRVJUKHBhZ2VfZ2V0X293bmVyKHBnKSA9PSBkKTsKKy0gICAgLyogU2hvdWxkIGhhdmUganVzdCB0aGUgb25lIHJlZiB3ZSBnYXZlIGl0IGluIGFsbG9jX3AybV9wYWdlKCkgKi8KKy0gICAgaWYgKCAocGctPmNvdW50X2luZm8gJiBQR0NfY291bnRfbWFzaykgIT0gMSApCisrICAgIHN0cnVjdCBkb21haW4gKm93bmVyID0gcGFnZV9nZXRfb3duZXIocGcpOworKworKyAgICAvKiBTaG91bGQgc3RpbGwgaGF2ZSBubyBvd25lciBhbmQgY291bnQgemVyby4gKi8KKysgICAgaWYgKCBvd25lciB8fCAocGctPmNvdW50X2luZm8gJiBQR0NfY291bnRfbWFzaykgKQorICAgICB7CistICAgICAgICBTSEFET1dfRVJST1IoIk9kZCBwMm0gcGFnZSBjb3VudCBjPSUjbHggdD0lIlBSdHlwZV9pbmZvIlxuIiwKKysgICAgICAgIFNIQURPV19FUlJPUigiZCVkOiBPZGQgcDJtIHBhZ2UgJSJQUklfbWZuIiBkPSVkIGM9JWx4IHQ9JSJQUnR5cGVfaW5mbyJcbiIsCisrICAgICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBtZm5feChwYWdlX3RvX21mbihwZykpLAorKyAgICAgICAgICAgICAgICAgICAgIG93bmVyID8gb3duZXItPmRvbWFpbl9pZCA6IERPTUlEX0lOVkFMSUQsCisgICAgICAgICAgICAgICAgICAgICAgcGctPmNvdW50X2luZm8sIHBnLT51LmludXNlLnR5cGVfaW5mbyk7CisrICAgICAgICBwZy0+Y291bnRfaW5mbyAmPSB+UEdDX2NvdW50X21hc2s7CisrICAgICAgICBwYWdlX3NldF9vd25lcihwZywgTlVMTCk7CisgICAgIH0KKy0gICAgcGctPmNvdW50X2luZm8gJj0gflBHQ19jb3VudF9tYXNrOworICAgICBwZy0+dS5zaC50eXBlID0gU0hfdHlwZV9wMm1fdGFibGU7IC8qIHAybSBjb2RlIHJldXNlcyB0eXBlLWluZm8gKi8KKy0gICAgcGFnZV9zZXRfb3duZXIocGcsIE5VTEwpOworIAorICAgICAvKiBUaGlzIGlzIGNhbGxlZCBib3RoIGZyb20gdGhlIHAybSBjb2RlICh3aGljaCBuZXZlciBob2xkcyB0aGUKKyAgICAgICogcGFnaW5nIGxvY2spIGFuZCB0aGUgbG9nLWRpcnR5IGNvZGUgKHdoaWNoIGFsd2F5cyBkb2VzKS4gKi8KK0BAIC0zMTMyLDcgKzMxMjksOSBAQCBpbnQgc2hhZG93X2VuYWJsZShzdHJ1Y3QgZG9tYWluICpkLCB1MzIKKyAgICAgICAgIGUgPSBfX21hcF9kb21haW5fcGFnZShwZyk7CisgICAgICAgICB3cml0ZV8zMmJpdF9wc2VfaWRlbnRtYXAoZSk7CisgICAgICAgICB1bm1hcF9kb21haW5fcGFnZShlKTsKKysgICAgICAgIHBnLT5jb3VudF9pbmZvID0gMTsKKyAgICAgICAgIHBnLT51LmludXNlLnR5cGVfaW5mbyA9IFBHVF9sMl9wYWdlX3RhYmxlIHwgMSB8IFBHVF92YWxpZGF0ZWQ7CisrICAgICAgICBwYWdlX3NldF9vd25lcihwZywgZCk7CisgICAgIH0KKyAKKyAgICAgcGFnaW5nX2xvY2soZCk7CitAQCAtMzE3MCw3ICszMTY5LDExIEBAIGludCBzaGFkb3dfZW5hYmxlKHN0cnVjdCBkb21haW4gKmQsIHUzMgorICAgICBpZiAoIHJ2ICE9IDAgJiYgIXBhZ2V0YWJsZV9pc19udWxsKHAybV9nZXRfcGFnZXRhYmxlKHAybSkpICkKKyAgICAgICAgIHAybV90ZWFyZG93bihwMm0pOworICAgICBpZiAoIHJ2ICE9IDAgJiYgcGcgIT0gTlVMTCApCisrICAgIHsKKysgICAgICAgIHBnLT5jb3VudF9pbmZvICY9IH5QR0NfY291bnRfbWFzazsKKysgICAgICAgIHBhZ2Vfc2V0X293bmVyKHBnLCBOVUxMKTsKKyAgICAgICAgIHNoYWRvd19mcmVlX3AybV9wYWdlKGQsIHBnKTsKKysgICAgfQorICAgICBkb21haW5fdW5wYXVzZShkKTsKKyAgICAgcmV0dXJuIHJ2OworIH0KK0BAIC0zMjc5LDcgKzMyODIsMjIgQEAgb3V0OgorIAorICAgICAvKiBNdXN0IGJlIGNhbGxlZCBvdXRzaWRlIHRoZSBsb2NrICovCisgICAgIGlmICggdW5wYWdlZF9wYWdldGFibGUgKQorKyAgICB7CisrICAgICAgICBpZiAoIHBhZ2VfZ2V0X293bmVyKHVucGFnZWRfcGFnZXRhYmxlKSA9PSBkICYmCisrICAgICAgICAgICAgICh1bnBhZ2VkX3BhZ2V0YWJsZS0+Y291bnRfaW5mbyAmIFBHQ19jb3VudF9tYXNrKSA9PSAxICkKKysgICAgICAgIHsKKysgICAgICAgICAgICB1bnBhZ2VkX3BhZ2V0YWJsZS0+Y291bnRfaW5mbyAmPSB+UEdDX2NvdW50X21hc2s7CisrICAgICAgICAgICAgcGFnZV9zZXRfb3duZXIodW5wYWdlZF9wYWdldGFibGUsIE5VTEwpOworKyAgICAgICAgfQorKyAgICAgICAgLyogQ29tcGxhaW4gaGVyZSBpbiBjYXNlcyB3aGVyZSBzaGFkb3dfZnJlZV9wMm1fcGFnZSgpIHdvbid0LiAqLworKyAgICAgICAgZWxzZSBpZiAoICFwYWdlX2dldF9vd25lcih1bnBhZ2VkX3BhZ2V0YWJsZSkgJiYKKysgICAgICAgICAgICAgICAgICAhKHVucGFnZWRfcGFnZXRhYmxlLT5jb3VudF9pbmZvICYgUEdDX2NvdW50X21hc2spICkKKysgICAgICAgICAgICBTSEFET1dfRVJST1IoImQlZDogT2RkIHVucGFnZWQgcHQgJSJQUklfbWZuIiBjPSVseCB0PSUiUFJ0eXBlX2luZm8iXG4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIG1mbl94KHBhZ2VfdG9fbWZuKHVucGFnZWRfcGFnZXRhYmxlKSksCisrICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFnZWRfcGFnZXRhYmxlLT5jb3VudF9pbmZvLAorKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhZ2VkX3BhZ2V0YWJsZS0+dS5pbnVzZS50eXBlX2luZm8pOworICAgICAgICAgc2hhZG93X2ZyZWVfcDJtX3BhZ2UoZCwgdW5wYWdlZF9wYWdldGFibGUpOworKyAgICB9CisgfQorIAorIHZvaWQgc2hhZG93X2ZpbmFsX3RlYXJkb3duKHN0cnVjdCBkb21haW4gKmQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMveHNhMjQ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3hzYTI0OS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2ZhNDMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3hzYTI0OS5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CitTdWJqZWN0OiB4ODYvc2hhZG93OiBmaXggcmVmY291bnQgb3ZlcmZsb3cgY2hlY2sKKworQ29tbWl0IGMzODVkMjcwNzkgKCJ4ODYgc2hhZG93OiBmb3IgbXVsdGktcGFnZSBzaGFkb3dzLCBleHBsaWNpdGx5IHRyYWNrCit0aGUgZmlyc3QgcGFnZSIpIHJlZHVjZWQgdGhlIHJlZmNvdW50IHdpZHRoIHRvIDI1LCB3aXRob3V0IGFkanVzdGluZyB0aGUKK292ZXJmbG93IGNoZWNrLiBFbGltaW5hdGUgdGhlIGRpc2Nvbm5lY3QgYnkgdXNpbmcgYSBtYW5pZmVzdCBjb25zdGFudC4KKworSW50ZXJlc3RpbmdseSwgdXAgdG8gY29tbWl0IDA0Nzc4MmZhMDEgKCJPdXQtb2Ytc3luYyBMMSBzaGFkb3dzOiBPT1MKK3NuYXBzaG90IikgdGhlIHJlZmNvdW50IHdhcyAyNyBiaXRzIHdpZGUsIHlldCB0aGUgY2hlY2sgd2FzIGFscmVhZHkKK3VzaW5nIDI2LgorCitUaGlzIGlzIFhTQS0yNDkuCisKK1NpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KK1Jldmlld2VkLWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+CitSZXZpZXdlZC1ieTogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+CistLS0KK3YyOiBTaW1wbGlmeSBleHByZXNzaW9uIGJhY2sgdG8gdGhlIHN0eWxlIGl0IHdhcy4KKworLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKKysrKyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvcHJpdmF0ZS5oCitAQCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNoX2dldF9yZWYoc3RydWN0IGRvbWEKKyAgICAgeCA9IHNwLT51LnNoLmNvdW50OworICAgICBueCA9IHggKyAxOworIAorLSAgICBpZiAoIHVubGlrZWx5KG54ID49IDFVPDwyNikgKQorKyAgICBpZiAoIHVubGlrZWx5KG54ID49ICgxVSA8PCBQQUdFX1NIX1JFRkNPVU5UX1dJRFRIKSkgKQorICAgICB7CisgICAgICAgICBTSEFET1dfUFJJTlRLKCJzaGFkb3cgcmVmIG92ZXJmbG93LCBnbWZuPSVseCBzbWZuPSVseFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fYmFja3BvaW50ZXIoc3ApLCBtZm5feChzbWZuKSk7CistLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKKysrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAorQEAgLTgyLDcgKzgyLDggQEAgc3RydWN0IHBhZ2VfaW5mbworICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdHlwZTo1OyAgIC8qIFdoYXQga2luZCBvZiBzaGFkb3cgaXMgdGhpcz8gKi8KKyAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBpbm5lZDoxOyAvKiBJcyB0aGUgc2hhZG93IHBpbm5lZD8gKi8KKyAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGhlYWQ6MTsgICAvKiBJcyB0aGlzIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBzaGFkb3c/ICovCistICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudDoyNTsgLyogUmVmZXJlbmNlIGNvdW50ICovCisrI2RlZmluZSBQQUdFX1NIX1JFRkNPVU5UX1dJRFRIIDI1CisrICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudDpQQUdFX1NIX1JFRkNPVU5UX1dJRFRIOyAvKiBSZWZlcmVuY2UgY291bnQgKi8KKyAgICAgICAgIH0gc2g7CisgCisgICAgICAgICAvKiBQYWdlIGlzIG9uIGEgZnJlZSBsaXN0OiAoKGNvdW50X2luZm8gJiBQR0NfY291bnRfbWFzaykgPT0gMCkuICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMveHNhMjUwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3hzYTI1MC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmFlYjMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3hzYTI1MC5wYXRjaApAQCAtMCwwICsxLDY3IEBACitGcm9tOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CitTdWJqZWN0OiB4ODYvc2hhZG93OiBmaXggcmVmLWNvdW50aW5nIGVycm9yIGhhbmRsaW5nCisKK1RoZSBvbGQtTGludXggaGFuZGxpbmcgaW4gc2hhZG93X3NldF9sNGUoKSBtaXN0YWtlbmx5IE9SZWQgdG9nZXRoZXIgdGhlCityZXN1bHRzIG9mIHNoX2dldF9yZWYoKSBhbmQgc2hfcGluKCkuIEFzIHRoZSBsYXR0ZXIgZmFpbGluZyBpcyBub3QgYQorY29ycmVjdG5lc3MgcHJvYmxlbSwgc2ltcGx5IGlnbm9yZSBpdHMgcmV0dXJuIHZhbHVlLgorCitJbiBzaF9zZXRfdG9wbGV2ZWxfc2hhZG93KCkgYSBmYWlsaW5nIHNoX2dldF9yZWYoKSBtdXN0IG5vdCBiZQorYWNjb21wYW5pZWQgYnkgaW5zdGFsbGluZyB0aGUgZW50cnksIGRlc3BpdGUgdGhlIGRvbWFpbiBiZWluZyBjcmFzaGVkLgorCitUaGlzIGlzIFhTQS0yNTAuCisKK1NpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KK1Jldmlld2VkLWJ5OiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KKworLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCisrKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKK0BAIC05MjMsNyArOTIzLDcgQEAgc3RhdGljIGludCBzaGFkb3dfc2V0X2w0ZShzdHJ1Y3QgZG9tYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dfbDRlX3QgbmV3X3NsNGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCBzbDRtZm4pCisgeworLSAgICBpbnQgZmxhZ3MgPSAwLCBvazsKKysgICAgaW50IGZsYWdzID0gMDsKKyAgICAgc2hhZG93X2w0ZV90IG9sZF9zbDRlOworICAgICBwYWRkcl90IHBhZGRyOworICAgICBBU1NFUlQoc2w0ZSAhPSBOVUxMKTsKK0BAIC05MzgsMTUgKzkzOCwxNiBAQCBzdGF0aWMgaW50IHNoYWRvd19zZXRfbDRlKHN0cnVjdCBkb21haW4KKyAgICAgeworICAgICAgICAgLyogQWJvdXQgdG8gaW5zdGFsbCBhIG5ldyByZWZlcmVuY2UgKi8KKyAgICAgICAgIG1mbl90IHNsM21mbiA9IHNoYWRvd19sNGVfZ2V0X21mbihuZXdfc2w0ZSk7CistICAgICAgICBvayA9IHNoX2dldF9yZWYoZCwgc2wzbWZuLCBwYWRkcik7CistICAgICAgICAvKiBBcmUgd2UgcGlubmluZyBsMyBzaGFkb3dzIHRvIGhhbmRsZSB3aWVyZCBsaW51eCBiZWhhdmlvdXI/ICovCistICAgICAgICBpZiAoIHNoX3R5cGVfaXNfcGlubmFibGUoZCwgU0hfdHlwZV9sM182NF9zaGFkb3cpICkKKy0gICAgICAgICAgICBvayB8PSBzaF9waW4oZCwgc2wzbWZuKTsKKy0gICAgICAgIGlmICggIW9rICkKKysKKysgICAgICAgIGlmICggIXNoX2dldF9yZWYoZCwgc2wzbWZuLCBwYWRkcikgKQorICAgICAgICAgeworICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKKyAgICAgICAgICAgICByZXR1cm4gU0hBRE9XX1NFVF9FUlJPUjsKKyAgICAgICAgIH0KKysKKysgICAgICAgIC8qIEFyZSB3ZSBwaW5uaW5nIGwzIHNoYWRvd3MgdG8gaGFuZGxlIHdlaXJkIExpbnV4IGJlaGF2aW91cj8gKi8KKysgICAgICAgIGlmICggc2hfdHlwZV9pc19waW5uYWJsZShkLCBTSF90eXBlX2wzXzY0X3NoYWRvdykgKQorKyAgICAgICAgICAgIHNoX3BpbihkLCBzbDNtZm4pOworICAgICB9CisgCisgICAgIC8qIFdyaXRlIHRoZSBuZXcgZW50cnkgKi8KK0BAIC0zOTY1LDE0ICszOTY2LDE1IEBAIHNoX3NldF90b3BsZXZlbF9zaGFkb3coc3RydWN0IHZjcHUgKnYsCisgCisgICAgIC8qIFRha2UgYSByZWYgdG8gdGhpcyBwYWdlOiBpdCB3aWxsIGJlIHJlbGVhc2VkIGluIHNoX2RldGFjaF9vbGRfdGFibGVzKCkKKyAgICAgICogb3IgdGhlIG5leHQgY2FsbCB0byBzZXRfdG9wbGV2ZWxfc2hhZG93KCkgKi8KKy0gICAgaWYgKCAhc2hfZ2V0X3JlZihkLCBzbWZuLCAwKSApCisrICAgIGlmICggc2hfZ2V0X3JlZihkLCBzbWZuLCAwKSApCisrICAgICAgICBuZXdfZW50cnkgPSBwYWdldGFibGVfZnJvbV9tZm4oc21mbik7CisrICAgIGVsc2UKKyAgICAgeworICAgICAgICAgU0hBRE9XX0VSUk9SKCJjYW4ndCBpbnN0YWxsICUjbHggYXMgdG9wbGV2ZWwgc2hhZG93XG4iLCBtZm5feChzbWZuKSk7CisgICAgICAgICBkb21haW5fY3Jhc2goZCk7CisrICAgICAgICBuZXdfZW50cnkgPSBwYWdldGFibGVfbnVsbCgpOworICAgICB9CisgCistICAgIG5ld19lbnRyeSA9IHBhZ2V0YWJsZV9mcm9tX21mbihzbWZuKTsKKy0KKyAgaW5zdGFsbF9uZXdfZW50cnk6CisgICAgIC8qIERvbmUuICBJbnN0YWxsIGl0ICovCisgICAgIFNIQURPV19QUklOVEsoIiV1LyV1IFsldV0gZ21mbiAlIyJQUklfbWZuIiBzbWZuICUjIlBSSV9tZm4iXG4iLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3hzYTI1MS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy94c2EyNTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgyZWY2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy94c2EyNTEucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorRnJvbTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgorU3ViamVjdDogeDg2L3BhZ2luZzogZG9uJ3QgdW5jb25kaXRpb25hbGx5IEJVRygpIG9uIGZpbmRpbmcgU0hBUkVEX00yUF9FTlRSWQorCitQViBndWVzdHMgY2FuIGZ1bGx5IGNvbnRyb2wgdGhlIHZhbHVlcyB3cml0dGVuIGludG8gdGhlIFAyTS4KKworVGhpcyBpcyBYU0EtMjUxLgorCitTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CitSZXZpZXdlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KKworLS0tIGEveGVuL2FyY2gveDg2L21tL3BhZ2luZy5jCisrKysgYi94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMKK0BAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBwYWdpbmdfbWFya19wZm5fZGlydHkoc3RydWN0IGRvbWFpbgorICAgICAgICAgcmV0dXJuOworIAorICAgICAvKiBTaGFyZWQgTUZOcyBzaG91bGQgTkVWRVIgYmUgbWFya2VkIGRpcnR5ICovCistICAgIEJVR19PTihTSEFSRURfTTJQKHBmbl94KHBmbikpKTsKKysgICAgQlVHX09OKHBhZ2luZ19tb2RlX3RyYW5zbGF0ZShkKSAmJiBTSEFSRURfTTJQKHBmbl94KHBmbikpKTsKKyAKKyAgICAgLyoKKyAgICAgICogVmFsdWVzIHdpdGggdGhlIE1TQiBzZXQgZGVub3RlIE1GTnMgdGhhdCBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vZmlsZXMveHNhMjUzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3hzYTI1My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWU0MjY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL3hzYTI1My5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgorU3ViamVjdDogeDg2L21zcjogRnJlZSBtc3JfdmNwdV9wb2xpY3kgZHVyaW5nIHZjcHUgZGVzdHJ1Y3Rpb24KKworYy9zIDQxODdmNzlkYzcgIng4Ni9tc3I6IGludHJvZHVjZSBzdHJ1Y3QgbXNyX3ZjcHVfcG9saWN5IiBpbnRyb2R1Y2VkIGEKK3Blci12Y3B1IG1lbW9yeSBhbGxvY2F0aW9uLCBidXQgZmFpbGVkIHRvIGZyZWUgaXQgaW4gdGhlIGNsZWFuIHZjcHUKK2Rlc3RydWN0aW9uIGNhc2UuCisKK1RoaXMgaXMgWFNBLTI1MworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgorUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KKworZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYworaW5kZXggYjE3NDY4Yy4uMGFlNzE1ZCAxMDA2NDQKKy0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYworKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCitAQCAtMzgyLDYgKzM4Miw5IEBAIHZvaWQgdmNwdV9kZXN0cm95KHN0cnVjdCB2Y3B1ICp2KQorIAorICAgICB2Y3B1X2Rlc3Ryb3lfZnB1KHYpOworIAorKyAgICB4ZnJlZSh2LT5hcmNoLm1zcik7CisrICAgIHYtPmFyY2gubXNyID0gTlVMTDsKKysKKyAgICAgaWYgKCAhaXNfaWRsZV9kb21haW4odi0+ZG9tYWluKSApCisgICAgICAgICB2cG11X2Rlc3Ryb3kodik7CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vbHdpcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vbHdpcC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA4MzYzMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9sd2lwLmluYwpAQCAtMCwwICsxLDI0IEBACisjIENvcHlyaWdodCAoQykgMjAxOCBrZWJvZGlrZXIgPGt1cnQuYm9kaWtlckBicmFpbnRydXN0LXVzLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworcmVxdWlyZSBzdHViZG9tLmluYworCisjIGNsZWFyIHRoaXMgb3V0IHRvIGJyZWFrIGRlcGVuZGVuY3kgY2lyY2xlCitERVBFTkRTID0gIiIKKworIyBOb3RoaW5nIHRvIGNvbmZpZ3VyZSBvciBjb21waWxlCisjIEZvciBzdHViZG9tcywgbHdpcCBpcyBiYXNpY2FsbHkgYSBzb3VyY2UgcGFja2FnZSB3aXRoIGEgY291cGxlIG9mIHBhdGNoZXMgYXBwbGllZC4KK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCitkb19jb21waWxlW25vZXhlY10gPSAiMSIKKworIyBuZWVkZWQgYmVjYXVzZSB0aGlzIGRpcmVjdG9yeSBpc24ndCB0eXBpY2FsbHkgcGFydCBvZiBhIHN5c3Jvb3QKK1NZU1JPT1RfRElSUyArPSAiJHtwcmVmaXh9L2x3aXAiCisKK0ZJTEVTXyR7UE59ID0gIlwKKyAgICAke3ByZWZpeH0gXAorIgorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7cHJlZml4fS9sd2lwCisgICAgY3AgLXIgLXQgJHtEfSR7cHJlZml4fS9sd2lwICR7U30vc3JjLyoKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9sd2lwXzEuMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2x3aXBfMS4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdkOGU5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9sd2lwXzEuMy4wLmJiCkBAIC0wLDAgKzEsMTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE4IGtlYm9kaWtlciA8a3VydC5ib2Rpa2VyQGJyYWludHJ1c3QtdXMuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitERVNDUklQVElPTiA9ICJMV0lQIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL2x3aXAiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5YTM4M2IwNTAxMzM1NmUwYzk4OTliMDZkYzVkYTNmIgorCitTUkNSRVZfbHdpcCA9ICJiY2I0YWZhODg2NDA4YmYwYTFkZGU5YzJhNGEwMDMyM2M4YjA3ZWIxIgorU1JDX1VSSSA9ICJcCisgICAgZ2l0Oi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvbHdpcC5naXQ7cHJvdG9jb2w9Z2l0O25vYnJhbmNoPTE7ZGVzdHN1ZmZpeD1sd2lwO25hbWU9bHdpcCBcCisgICAgZmlsZTovL2x3aXAucGF0Y2gtY3ZzIFwKKyAgICBmaWxlOi8vbHdpcC5kaGNwX2NyZWF0ZV9yZXF1ZXN0LWh3YWRkcl9sZW4ucGF0Y2ggXAorIgorCitTPSIke1dPUktESVJ9LyR7UE59IgorQj0iJHtTfSIKKworcmVxdWlyZSBsd2lwLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL21pbmktb3MuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL21pbmktb3MuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxYzI3MDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vbWluaS1vcy5pbmMKQEAgLTAsMCArMSwyOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTgga2Vib2Rpa2VyIDxrdXJ0LmJvZGlrZXJAYnJhaW50cnVzdC11cy5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK3JlcXVpcmUgc3R1YmRvbS5pbmMKKworIyBjbGVhciB0aGlzIG91dCB0byBicmVhayBkZXBlbmRlbmN5IGNpcmNsZQorREVQRU5EUyA9ICIiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAke01BS0V9IC1DICR7V09SS0RJUn0vbWluaS1vcyBsaW5rcworfQorCisjIE5vdGhpbmcgdG8gY29uZmlndXJlIG9yIGNvbXBpbGUKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgorCisjIG5lZWRlZCBiZWNhdXNlIHRoaXMgZGlyZWN0b3J5IGlzbid0IHR5cGljYWxseSBwYXJ0IG9mIGEgc3lzcm9vdAorU1lTUk9PVF9ESVJTICs9ICIke3ByZWZpeH0vbWluaS1vcyIKK1JERVBFTkRTXyR7UE59LWRldiA9ICJwZXJsIgorCitGSUxFU18ke1BOfS1kZXYgPSAiXAorICAgICR7cHJlZml4fSBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtwcmVmaXh9L21pbmktb3MKKyAgICBjcCAtciAtdCAke0R9JHtwcmVmaXh9L21pbmktb3MgJHtTfS8qCisgICAgcm0gLXJmICR7RH0ke3ByZWZpeH0vbWluaS1vcy9zY3JpcHRzCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vbWluaS1vc180LjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9taW5pLW9zXzQuOS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5OGJjOGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vbWluaS1vc180LjkuMC5iYgpAQCAtMCwwICsxLDE4IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBLdXJ0IEJvZGlrZXIgPGt1cnQuYm9kaWtlckBicmFpbnRydXN0LXVzLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworREVTQ1JJUFRJT04gPSAiTWluaS1PUyBpcyBhIHRpbnkgT1Mga2VybmVsIGRpc3RyaWJ1dGVkIHdpdGggdGhlIFhlbiBQcm9qZWN0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLnhlbnByb2plY3Qub3JnL3dpa2kvTWluaS1PUyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04YTQzNzIzMTg5NDQ0MGE4Zjc2MjljYWEzNzIyNDNkMCIKKworIyBnaXQgY29tbWl0IGhhc2ggZm9yIHRhZ3M6IHhlbi1SRUxFQVNFLTQuOS4wLCB4ZW4tUkVMRUFTRS00LjkuMSwgeGVuLVJFTEVBU0UtNC45LjIKK1NSQ1JFVl9taW5pb3MgPSAiY2EwMTNmYTliYWY5MmY0NzQ2OWJhMWYyZTFhYWEzMWM0MWQ4YTBiYiIKK1NSQ19VUkkgPSAiXAorICAgIGdpdDovL3hlbmJpdHMueGVuLm9yZy9taW5pLW9zLmdpdDtwcm90b2NvbD1naXQ7bm9icmFuY2g9MTtkZXN0c3VmZml4PW1pbmktb3M7bmFtZT1taW5pb3MgXAorICAgIGZpbGU6Ly9taW5pLW9zX3VkaXZtb2RkaTQtZ2NjNy5wYXRjaCBcCisiCitTPSIke1dPUktESVJ9L21pbmktb3MiCitCPSIke1N9IgorCityZXF1aXJlIG1pbmktb3MuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vbmV3bGliLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9uZXdsaWIuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmZGJkMGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vbmV3bGliLmluYwpAQCAtMCwwICsxLDY0IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBLdXJ0IEJvZGlrZXIgPGt1cnQuYm9kaWtlckBicmFpbnRydXN0LXVzLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworcmVxdWlyZSBzdHViZG9tLmluYworCitDUFBGTEFHU19JTkNMVURFX0RJUiA9ICItaXN5c3RlbSBgJHtIT1NUX1BSRUZJWH1nY2MgLXByaW50LWZpbGUtbmFtZT1pbmNsdWRlYCIKK1NUVUJET01fQ0ZMQUdTICs9ICItRF9JMzg2TUFDSF9BTExPV19IV19JTlRFUlJVUFRTIgorCitleHBvcnQgYWNfY3ZfcGF0aF9DQ19GT1JfVEFSR0VUPSIke0hPU1RfUFJFRklYfWdjYyAtLXN5c3Jvb3Q9JHtSRUNJUEVfU1lTUk9PVH0gJHtTVFVCRE9NX0NQUEZMQUdTfSAke1NUVUJET01fQ0ZMQUdTfSIKK2V4cG9ydCBDQ19GT1JfVEFSR0VUPSIke0hPU1RfUFJFRklYfWdjYyAtLXN5c3Jvb3Q9JHtSRUNJUEVfU1lTUk9PVH0gJHtTVFVCRE9NX0NQUEZMQUdTfSAke1NUVUJET01fQ0ZMQUdTfSIKKworZXhwb3J0IGFjX2N2X3BhdGhfQ1hYX0ZPUl9UQVJHRVQ9IiR7SE9TVF9QUkVGSVh9ZysrIC0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfSIKK2V4cG9ydCBDWFhfRk9SX1RBUkdFVD0iJHtIT1NUX1BSRUZJWH1nKysgLS1zeXNyb290PSR7UkVDSVBFX1NZU1JPT1R9IgorCitleHBvcnQgYWNfY3ZfcGF0aF9DUFBfRk9SX1RBUkdFVD0iJHtIT1NUX1BSRUZJWH1nY2MgLUUgLS1zeXNyb290PSR7UkVDSVBFX1NZU1JPT1R9IgorZXhwb3J0IENQUF9GT1JfVEFSR0VUPSIke0hPU1RfUFJFRklYfWdjYyAtRSAtLXN5c3Jvb3Q9JHtSRUNJUEVfU1lTUk9PVH0iCisKK2V4cG9ydCBhY19jdl9wYXRoX0xEX0ZPUl9UQVJHRVQ9IiR7SE9TVF9QUkVGSVh9bGQgLS1zeXNyb290PSR7UkVDSVBFX1NZU1JPT1R9IgorZXhwb3J0IExEX0ZPUl9UQVJHRVQ9IiR7SE9TVF9QUkVGSVh9bGQgLS1zeXNyb290PSR7UkVDSVBFX1NZU1JPT1R9IgorCitleHBvcnQgYWNfY3ZfcGF0aF9BU19GT1JfVEFSR0VUPSIke0hPU1RfUFJFRklYfWFzIgorZXhwb3J0IEFTX0ZPUl9UQVJHRVQ9IiR7SE9TVF9QUkVGSVh9YXMiCisKK2V4cG9ydCBhY19jdl9wYXRoX0FSX0ZPUl9UQVJHRVQ9IiR7SE9TVF9QUkVGSVh9YXIiCitleHBvcnQgQVJfRk9SX1RBUkdFVD0iJHtIT1NUX1BSRUZJWH1hciIKKworZXhwb3J0IGFjX2N2X3BhdGhfTk1fRk9SX1RBUkdFVD0iJHtIT1NUX1BSRUZJWH1ubSIKK2V4cG9ydCBOTV9GT1JfVEFSR0VUPSIke0hPU1RfUFJFRklYfW5tIgorCitleHBvcnQgYWNfY3ZfcGF0aF9SQU5MSUJfRk9SX1RBUkdFVD0iJHtIT1NUX1BSRUZJWH1yYW5saWIiCitleHBvcnQgUkFOTElCX0ZPUl9UQVJHRVQ9IiR7SE9TVF9QUkVGSVh9cmFubGliIgorCitleHBvcnQgYWNfY3ZfcGF0aF9PQkpEVU1QX0ZPUl9UQVJHRVQ9IiR7SE9TVF9QUkVGSVh9b2JqZHVtcCIKK2V4cG9ydCBPQkpEVU1QX0ZPUl9UQVJHRVQ9IiR7SE9TVF9QUkVGSVh9b2JqZHVtcCIKKworZXhwb3J0IGFjX2N2X3BhdGhfT0JKQ09QWV9GT1JfVEFSR0VUPSIke0hPU1RfUFJFRklYfW9iamNvcHkiCitleHBvcnQgT0JKQ09QWV9GT1JfVEFSR0VUPSIke0hPU1RfUFJFRklYfW9iamNvcHkiCisKK2V4cG9ydCBhY19jdl9wYXRoX1NUUklQX0ZPUl9UQVJHRVQ9IiR7SE9TVF9QUkVGSVh9c3RyaXAiCitleHBvcnQgU1RSSVBfRk9SX1RBUkdFVD0iJHtIT1NUX1BSRUZJWH1zdHJpcCIKKworZXhwb3J0IGFjX2N2X3BhdGhfU1RSSU5HU19GT1JfVEFSR0VUPSIke0hPU1RfUFJFRklYfXN0cmluZ3MiCitleHBvcnQgU1RSSU5HU19GT1JfVEFSR0VUPSIke0hPU1RfUFJFRklYfXN0cmluZ3MiCisKK2V4cG9ydCBhY19jdl9wYXRoX1JFQURFTEZfRk9SX1RBUkdFVD0iJHtIT1NUX1BSRUZJWH1yZWFkZWxmIgorZXhwb3J0IFJFQURFTEZfRk9SX1RBUkdFVD0iJHtIT1NUX1BSRUZJWH1yZWFkZWxmIgorCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9jb25maWd1cmUgLS12ZXJib3NlIC0tcHJlZml4PSR7cHJlZml4fSAtLXRhcmdldD0ke0dOVV9UQVJHRVRfQVJDSH0teGVuLWVsZiAtLWVuYWJsZS1uZXdsaWItaW8tbG9uZy1sb25nIC0tZGlzYWJsZS1tdWx0aWxpYgorICAgIGZpbmQgJHtTfSAtdHlwZSBmIHwgeGFyZ3MgcGVybCAtaS5iYWsgLXBlICdzL1xiXyh0em5hbWV8ZGF5bGlnaHR8dGltZXpvbmUpXGIvJDEvZycKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICAke01BS0V9Cit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgJHtNQUtFfSBERVNURElSPSR7RH0gaW5zdGFsbAorICAgIHJtIC1yZiAke0R9L2Nyb3NzLXJvb3QtJHtHTlVfVEFSR0VUX0FSQ0h9L3NoYXJlCisgICAgcm0gLXJmICR7RH0vY3Jvc3Mtcm9vdC0ke0dOVV9UQVJHRVRfQVJDSH0vaW5mbworICAgIGluc3RhbGwgLW0gNjQ0IGAke0hPU1RfUFJFRklYfWdjYyAtcHJpbnQtZmlsZS1uYW1lPWluY2x1ZGVgL3N0ZGFyZy5oIC10ICR7RH0vJHtpbmNsdWRlZGlyfQorICAgIGluc3RhbGwgLW0gNjQ0IGAke0hPU1RfUFJFRklYfWdjYyAtcHJpbnQtZmlsZS1uYW1lPWluY2x1ZGVgL3N0ZGRlZi5oIC10ICR7RH0vJHtpbmNsdWRlZGlyfQorICAgIGluc3RhbGwgLW0gNjQ0IGAke0hPU1RfUFJFRklYfWdjYyAtcHJpbnQtZmlsZS1uYW1lPWluY2x1ZGVgL3N0ZGJvb2wuaCAtdCAke0R9LyR7aW5jbHVkZWRpcn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9uZXdsaWJfMS4xNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL25ld2xpYl8xLjE2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2NzJiZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9uZXdsaWJfMS4xNi4wLmJiCkBAIC0wLDAgKzEsMjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEt1cnQgQm9kaWtlciA8a3VydC5ib2Rpa2VyQGJyYWludHJ1c3QtdXMuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitERVNDUklQVElPTiA9ICJOZXdsaWIgaXMgYSBDIGxpYnJhcnkgaW50ZW5kZWQgZm9yIHVzZSBvbiBlbWJlZGRlZCBzeXN0ZW1zLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9uZXdsaWIiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYzICYgR1BMdjMgJiBMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLk5FV0xJQjttZDU9OTUwZjUwYjI5MGU4ZmNmN2EyZDNmZmY2MTc3NWRlOWIiCisKKyMgdGhpcyBpcyB0aGUgaGFzaCBvZiB2ZXJzaW9uIHRhZyAxXzE2XzAKK1NSQ1JFVl9uZXdsaWIgPSAiMDdiNGI2N2E4OGYzODZjZTQ3MTZhMTRlMGZmMmMyYmNlOTkyYjk4NSIKK1NSQ19VUkkgPSAiXAorICAgIGdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9uZXdsaWItY3lnd2luLmdpdDtwcm90b2NvbD1naXQ7bm9icmFuY2g9MTtkZXN0c3VmZml4PW5ld2xpYjtuYW1lPW5ld2xpYiBcCisgICAgZmlsZTovL25ld2xpYi5wYXRjaCBcCisgICAgZmlsZTovL25ld2xpYi1jaGsucGF0Y2ggXAorICAgIGZpbGU6Ly9uZXdsaWItc3RkaW50LXNpemVfbWF4LWZpeC1mcm9tLTEuMTcuMC5wYXRjaCBcCisiCisKK1M9IiR7V09SS0RJUn0vbmV3bGliIgorQj0iJHtXT1JLRElSfS9idWlsZCIKKworcmVxdWlyZSBuZXdsaWIuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vcG9sYXJzc2wuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3BvbGFyc3NsLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWU5NWY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3BvbGFyc3NsLmluYwpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBLdXJ0IEJvZGlrZXIgPGt1cnQuYm9kaWtlckBicmFpbnRydXN0LXVzLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworcmVxdWlyZSBzdHViZG9tLmluYworCitERVBFTkRTICs9ICJcCisgICAgbmV3bGliIFwKKyIKK1NUVUJET01fQ0ZMQUdTICs9ICJcCisgICAgLVduby1tZW1zZXQtZWx0LXNpemUgXAorICAgIC1Xbm8taW1wbGljaXQtZmFsbHRocm91Z2ggXAorIgorCisjIG5vdGhpbmcgdG8gY29uZmlndXJlCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitkb19jb21waWxlKCkgeworICAgICR7TUFLRX0gQ0M9IiR7SE9TVF9QUkVGSVh9Z2NjIC0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfSAke1NUVUJET01fQ1BQRkxBR1N9ICR7U1RVQkRPTV9DRkxBR1N9IgorfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKyAgICBjcCAtciAtdCAke0R9JHtpbmNsdWRlZGlyfSAke1N9L2luY2x1ZGUvcG9sYXJzc2wKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0KKyAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7bGliZGlyfSAke1N9L2xpYnJhcnkvbGlicG9sYXJzc2wuYQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3BvbGFyc3NsXzEuMS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3BvbGFyc3NsXzEuMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZWE0NWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vcG9sYXJzc2xfMS4xLjQuYmIKQEAgLTAsMCArMSwxOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgS3VydCBCb2Rpa2VyIDxrdXJ0LmJvZGlrZXJAYnJhaW50cnVzdC11cy5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK0RFU0NSSVBUSU9OID0gIlBvbGFyU1NMIChub3cgJ21iZWQgVExTJykgaXMgYW4gb3BlbiBzb3VyY2UsIHBvcnRhYmxlLCBlYXN5IHRvIHVzZSwgcmVhZGFibGUgYW5kIGZsZXhpYmxlIFNTTCBsaWJyYXJ5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vdGxzLm1iZWQub3JnIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCisjIGdpdCBoYXNoIGZvciByZWxlYXNlIHRhZyBwb2xhcnNzbC0xLjEuNAorU1JDUkVWX3BvbGFyc3NsID0gImQzNmRhMTExMjVhOWM4NWM1NzJhNGZkZjYzZTBhMjVlNzZkN2JiMTgiCitTUkNfVVJJID0gIlwKKyAgICBnaXQ6Ly9naXRodWIuY29tL0FSTW1iZWQvbWJlZHRscy5naXQ7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PXBvbGFyc3NsO25hbWU9cG9sYXJzc2wgXAorICAgIGZpbGU6Ly9wb2xhcnNzbC5wYXRjaDsgXAorIgorCitTPSIke1dPUktESVJ9LyR7UE59IgorQj0iJHtTfS9saWJyYXJ5IgorCityZXF1aXJlIHBvbGFyc3NsLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3N0dWJkb20tZ21wLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9zdHViZG9tLWdtcC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY2NDczZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9zdHViZG9tLWdtcC5pbmMKQEAgLTAsMCArMSwzNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgS3VydCBCb2Rpa2VyIDxrdXJ0LmJvZGlrZXJAYnJhaW50cnVzdC11cy5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK3JlcXVpcmUgc3R1YmRvbS5pbmMKKworREVQRU5EUyArPSAiXAorICAgIG5ld2xpYiBcCisiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAjIG5lZWQgdG8gbW9kaWZ5IHByZWZpeCBoZXJlIGR1cmluZyBjb25maWd1cmUgb3RoZXJ3aXNlIE9FLWxldmVsIHZhcmlhYmxlcworICAgICMgKHByZWZpeCwgbGliZGlyLCBpbmNsdWRlZGlyLCBldGMuLi4pIGRlZmluZWQgaW4gc3R1YmRvbS5pbmMgZ2V0IG1lc3NlZCB1cAorICAgIENQUEZMQUdTPSItaXN5c3RlbSAke1JFQ0lQRV9TWVNST09UfS9jcm9zcy1yb290LSR7R05VX1RBUkdFVF9BUkNIfS8ke0dOVV9UQVJHRVRfQVJDSH0teGVuLWVsZi9pbmNsdWRlICR7U1RVQkRPTV9DUFBGTEFHU30iIFwKKyAgICBDRkxBR1M9IiR7U1RVQkRPTV9DRkxBR1N9IiBcCisgICAgQ0M9IiR7SE9TVF9QUkVGSVh9Z2NjIC0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfSIgXAorICAgICR7U30vY29uZmlndXJlIFwKKyAgICAgICAgLS1kaXNhYmxlLXNoYXJlZCBcCisgICAgICAgIC0tZW5hYmxlLXN0YXRpYyBcCisgICAgICAgIC0tZGlzYWJsZS1mZnQgXAorICAgICAgICAtLXdpdGhvdXQtcmVhZGxpbmUgXAorICAgICAgICAtLXdpdGgtZ251LWxkIFwKKyAgICAgICAgLS1wcmVmaXg9JHtwcmVmaXh9LyR7R05VX1RBUkdFVF9BUkNIfS14ZW4tZWxmIFwKKyAgICAgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAgICAgLS1idWlsZD1gJHtIT1NUX1BSRUZJWH1nY2MgLWR1bXBtYWNoaW5lYCBcCisgICAgICAgIC0taG9zdD0ke0dOVV9UQVJHRVRfQVJDSH0teGVuLWVsZgorCisgICAgc2VkIC1pICdzLyNkZWZpbmUgSEFWRV9PQlNUQUNLX1ZQUklOVEYgMS9cL1wvI2RlZmluZSBIQVZFX09CU1RBQ0tfVlBSSU5URiAxLycgJHtTfS9jb25maWcuaAorfQorCitkb19jb21waWxlKCkgeworICAgICR7TUFLRX0KK30KKworZG9faW5zdGFsbCgpIHsKKyAgICAke01BS0V9IERFU1RESVI9JHtEfSBpbnN0YWxsCisgICAgcm0gLXJmICR7RH0ke3ByZWZpeH0vJHtHTlVfVEFSR0VUX0FSQ0h9LXhlbi1lbGYvc2hhcmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9zdHViZG9tLWdtcF80LjMuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9zdHViZG9tLWdtcF80LjMuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWEyYWRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3N0dWJkb20tZ21wXzQuMy4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEt1cnQgQm9kaWtlciA8a3VydC5ib2Rpa2VyQGJyYWludHJ1c3QtdXMuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitERVNDUklQVElPTiA9ICJHTVAgbGlicmFyeSBmb3IgWGVuIHZUUE0ncy4iCitIT01FUEFHRSA9ICJodHRwOi8vZ21wIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCisiCisKK1NSQ19VUkkgPSAiXAorICAgIGh0dHBzOi8vZ21wbGliLm9yZy9kb3dubG9hZC9nbXAvYXJjaGl2ZS9nbXAtJHtQVn0udGFyLmJ6MiBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZGQ2MDY4M2Q3MDU3OTE3ZTM0NjMwYjRhNzg3OTMyZTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTM2MTYyYzAzMTI4ODZjMjE1ODEwMDJiNzk5MzI4MjlhYTA0OGNmYWY5OTM3YzYyNjVhZWFhMTRmMWNkMTc3NSIKKworUz0iJHtXT1JLRElSfS9nbXAtJHtQVn0iCitCPSIke1N9IgorCityZXF1aXJlIHN0dWJkb20tZ21wLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3N0dWJkb20uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3N0dWJkb20uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYzY3NTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vc3R1YmRvbS5pbmMKQEAgLTAsMCArMSwxNTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEt1cnQgQm9kaWtlciA8a3VydC5ib2Rpa2VyQGJyYWludHJ1c3QtdXMuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qKS4qLWxpbnV4JworCityZXF1aXJlIHhlbi1hcmNoLmluYworCisjIG1hbnkgb2YgdGhlIHhlbiBzdHViZG9tIHJlbGF0ZWQgcmVjaXBlcyBidWlsZCBhbmQgcGFja2FnZSBzdGF0aWMgaW5zdGVhZCBvZiBzaGFyZWQgbGlicmFyaWVzCitFWENMVURFX0ZST01fU0hMSUJTID0gIjEiCisKKyMgYmFzZSBzZXQgb2YgZGVwZW5kZW5jaWVzIHRvIGJlIHVzZWQgZm9yIHhlbiBzdHViZG9tIHJlY2lwZXMKK0RFUEVORFMgKz0gIlwKKyAgICBsd2lwIFwKKyAgICBtaW5pLW9zIFwKKyIKKworIyB1bnNldCBFVkVSWVRISU5HIGZyb20gdGhlIE9FIGVudmlyb25tZW50LgorIyBXZWlyZCB0aGluZ3MgaGFwcGVuIHdoZW4gdGhlc2UgYXJlIGV4cG9ydGVkIGludG8gdGhlIGVudmlyb25tZW50LgordW5zZXQgQ0ZMQUdTCit1bnNldCBCVUlMRF9DRkxBR1MKK3Vuc2V0IFRBUkdFVF9DRkxBR1MKK3Vuc2V0IENGTEFHU19GT1JfQlVJTEQKKwordW5zZXQgQ1BQRkxBR1MKK3Vuc2V0IEJVSUxEX0NQUEZMQUdTCit1bnNldCBUQVJHRVRfQ1BQRkxBR1MKK3Vuc2V0IENQUEZMQUdTX0ZPUl9CVUlMRAorCit1bnNldCBMREZMQUdTCit1bnNldCBCVUlMRF9MREZMQUdTCit1bnNldCBUQVJHRVRfTERGTEFHUwordW5zZXQgTERGTEFHU19GT1JfQlVJTEQKKwordW5zZXQgQ1hYRkxBR1MKK3Vuc2V0IFRBUkdFVF9DWFhGTEFHUwordW5zZXQgQlVJTERfQ1hYRkxBR1MKK3Vuc2V0IENYWEZMQUdTX0ZPUl9CVUlMRAorCit1bnNldCBCVUlMRF9DQwordW5zZXQgQlVJTERfQ1BQCit1bnNldCBCVUlMRF9DWFgKK3Vuc2V0IEJVSUxEX0xECit1bnNldCBCVUlMRF9BUgordW5zZXQgQlVJTERfQVMKK3Vuc2V0IEJVSUxEX0NDTEQKK3Vuc2V0IEJVSUxEX0ZDCit1bnNldCBCVUlMRF9SQU5MSUIKK3Vuc2V0IEJVSUxEX05NCit1bnNldCBCVUlMRF9TVFJJUAordW5zZXQgQlVJTERfUkVBREVMRgordW5zZXQgQlVJTERfT0JKQ09QWQordW5zZXQgQlVJTERfT0JKRFVNUAordW5zZXQgQ0MKK3Vuc2V0IENQUAordW5zZXQgQ1hYCit1bnNldCBMRAordW5zZXQgQVIKK3Vuc2V0IEFTCit1bnNldCBOTQordW5zZXQgUkFOTElCCit1bnNldCBTVFJJUAordW5zZXQgU1RSSU5HUwordW5zZXQgUkVBREVMRgordW5zZXQgT0JKQ09QWQordW5zZXQgT0JKRFVNUAordW5zZXQgUkVBREVMRgordW5zZXQgQ0NMRAordW5zZXQgRkMKKworIyBQcm92aWRlIHN1cHBvcnQgdG8gYnVpbGQgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBzdHViZG9tcworcHl0aG9uICgpIHsKKyAgICBnbnVfZGljdCA9IHsKKyAgICAgICAgICAgICd4ODZfMzInOiAnaTY4NicsCisgICAgICAgICAgICAneDg2XzY0JzogJ3g4Nl82NCcsCisgICAgICAgIH0KKworICAgIGlmIGQuZXhwYW5kKCcke1hFTl9UQVJHRVRfQVJDSH0nKSA9PSAneDg2XzMyJzoKKyAgICAgICAgZC5zZXRWYXIoIkdOVV9UQVJHRVRfQVJDSCIsZ251X2RpY3RbZC5leHBhbmQoJyR7WEVOX1RBUkdFVF9BUkNIfScpXSkKKyAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VfQVJDSCIsImNvcmUyLTMyIikKKyAgICBlbGlmIGQuZXhwYW5kKCcke1hFTl9UQVJHRVRfQVJDSH0nKSA9PSAneDg2XzY0JzoKKyAgICAgICAgZC5zZXRWYXIoIkdOVV9UQVJHRVRfQVJDSCIsZ251X2RpY3RbZC5leHBhbmQoJyR7WEVOX1RBUkdFVF9BUkNIfScpXSkKK30KKworZXhwb3J0IEdOVV9UQVJHRVRfQVJDSAorZXhwb3J0IFhFTl9UQVJHRVRfQVJDSD0iJHtAbWFwX3hlbl9hcmNoKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkKX0iCitleHBvcnQgWEVOX0NPTVBJTEVfQVJDSD0iJHtAbWFwX3hlbl9hcmNoKGQuZ2V0VmFyKCdCVUlMRF9BUkNIJyksIGQpfSIKKworTFdJUF9TUkNESVIgPSAiJHtSRUNJUEVfU1lTUk9PVH0vY3Jvc3Mtcm9vdC0ke0dOVV9UQVJHRVRfQVJDSH0vbHdpcCIKK01JTklPU19TUkNESVIgPSAiJHtSRUNJUEVfU1lTUk9PVH0vY3Jvc3Mtcm9vdC0ke0dOVV9UQVJHRVRfQVJDSH0vbWluaS1vcyIKKworIyBCYXNlIHNldCBvZiBDUFBGTEFHUywgQ0ZMQUdTIG5lZWRlZCBmb3IgZWFjaCBjb21wb25lbnQgdXNlZCB0byBidWlsZCBNaW5pT1MtYmFzZWQgc3R1YmRvbXMKKyMgTERGTEFHUyBhcmUgb25seSB1c2VkIHdoZW4gYnVpbGRpbmcgc3R1YmRvbXMsIHNvIG9ubHkgdXNlZCBpbiBzdHViZG9tIHJlY2lwZXMKKyMgR2VuZXJpYyBuYW1lIGdpdmVuIGJlY2F1c2UgZWFjaCBsaWJyYXJ5IHVzZXMgREVGXywgQlVJTERfLCBUQVJHRVRfLCBhbmQgeHh4RkxBR1MgZGlmZmVyZW50bHkKK0NQUEZMQUdTX0lOQ0xVREVfRElSID0gIi1pc3lzdGVtICR7UkVDSVBFX1NZU1JPT1R9L2Nyb3NzLXJvb3QtJHtHTlVfVEFSR0VUX0FSQ0h9LyR7R05VX1RBUkdFVF9BUkNIfS14ZW4tZWxmL2luY2x1ZGUiCisKK1NUVUJET01fQ1BQRkxBR1MgKz0gIlwKKyAgICAtaXN5c3RlbSAke01JTklPU19TUkNESVJ9L2luY2x1ZGUgXAorICAgIC1EX19NSU5JT1NfXyBcCisgICAgLURIQVZFX0xJQkMgXAorICAgIC1pc3lzdGVtICR7TUlOSU9TX1NSQ0RJUn0vaW5jbHVkZS9wb3NpeCBcCisgICAgLWlzeXN0ZW0gJHtNSU5JT1NfU1JDRElSfS9pbmNsdWRlL3hlbiBcCisgICAgLWlzeXN0ZW0gJHtNSU5JT1NfU1JDRElSfS9pbmNsdWRlL3g4NiBcCisgICAgLWlzeXN0ZW0gJHtNSU5JT1NfU1JDRElSfS9pbmNsdWRlL3g4Ni8ke1hFTl9UQVJHRVRfQVJDSH0gXAorICAgIC1VIF9fbGludXhfXyBcCisgICAgLVUgX19GcmVlQlNEX18gXAorICAgIC1VIF9fc3VuX18gXAorICAgIC1ub3N0ZGluYyBcCisgICAgJHtDUFBGTEFHU19JTkNMVURFX0RJUn0gXAorICAgIC1pc3lzdGVtICR7TFdJUF9TUkNESVJ9L2luY2x1ZGUgXAorICAgIC1pc3lzdGVtICR7TFdJUF9TUkNESVJ9L2luY2x1ZGUvaXB2NCBcCisiCisKK1NUVUJET01fQ0ZMQUdTICs9ICJcCisgICAgLW1uby1yZWQtem9uZSBcCisgICAgLU8xIFwKKyAgICAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciBcCisgICAgLW02NCBcCisgICAgLWZuby1yZW9yZGVyLWJsb2NrcyBcCisgICAgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyBcCisgICAgLURCVUlMRF9JRCBcCisgICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgXAorICAgIC1zdGQ9Z251OTkgXAorICAgIC1XYWxsIFwKKyAgICAtV3N0cmljdC1wcm90b3R5cGVzIFwKKyAgICAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCBcCisgICAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSBcCisgICAgLVduby11bnVzZWQtbG9jYWwtdHlwZWRlZnMgXAorICAgIC1mbm8tc3RhY2stcHJvdGVjdG9yIFwKKyAgICAtZm5vLWV4Y2VwdGlvbnMgXAorIgorCitTVFVCRE9NX0xERkxBR1MgPSAiXAorICAgIC1ub3N0ZGxpYiBcCisgICAgLUwke1JFQ0lQRV9TWVNST09UfS9jcm9zcy1yb290LSR7R05VX1RBUkdFVF9BUkNIfS8ke0dOVV9UQVJHRVRfQVJDSH0teGVuLWVsZi9saWIgXAorIgorCisjIE5lZWQgdG8gcmVkZWZpbmUgdGhlc2UgZm9yIHN0dWJkb20tcmVsYXRlZCBidWlsZHMuIEl0IGFsbCBzdGFydHMgYmVjYXVzZSBvZgorIyB0aGUgcHJlZml4IHVzZWQgaW4gbmV3bGliIGFuZCB0aGVuIGNvbnRpbnVlcyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8KKyMgY3Jvc3MtY29udGFtaW5hdGUgc3R1YmRvbS1yZWxhdGVkIHJlY2lwZXMgd2l0aCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgZm91bmQgaW4KKyMgdGhlIE9FLWRlZmluZWQgbG9jYXRpb25zCitleHBvcnQgcHJlZml4PSIvY3Jvc3Mtcm9vdC0ke0dOVV9UQVJHRVRfQVJDSH0iCitleHBvcnQgaW5jbHVkZWRpcj0iJHtwcmVmaXh9LyR7R05VX1RBUkdFVF9BUkNIfS14ZW4tZWxmL2luY2x1ZGUiCitleHBvcnQgbGliZGlyPSIke3ByZWZpeH0vJHtHTlVfVEFSR0VUX0FSQ0h9LXhlbi1lbGYvbGliIgorZXhwb3J0IGxpYmV4ZWNkaXI9IiR7bGliZGlyfSIKK2V4cG9ydCBTVEFHSU5HX0lOQ0RJUgorZXhwb3J0IFNUQUdJTkdfTElCRElSCisKKyMgVHlwaWNhbGx5IGRlZmluZWQgaW4gWGVuIGFuZCBNaW5pb3MgLm1rIGZpbGVzIHRoYXQgYXJlbid0IHNvdXJjZWQvcmVhZCwKKyMgZGVmaW5lZCB0byB0cmlnZ2VyIHNvbWUgdmFsdWVzIGFuZCBwYXRocyBpbiBNYWtlZmlsZXMKK2V4cG9ydCBkZWJ1Zz0ieSIKK2V4cG9ydCBzdHViZG9tPSJ5IgorZXhwb3J0IFhFTl9PUz0iTWluaU9TIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3RwbS1lbXVsYXRvci5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4vdHBtLWVtdWxhdG9yLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNThhMjc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3RwbS1lbXVsYXRvci5pbmMKQEAgLTAsMCArMSwzNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgS3VydCBCb2Rpa2VyIDxrdXJ0LmJvZGlrZXJAYnJhaW50cnVzdC11cy5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK3JlcXVpcmUgc3R1YmRvbS5pbmMKKworREVQRU5EUyArPSAiXAorICAgIGNtYWtlLW5hdGl2ZSBcCisgICAgbmV3bGliIFwKKyAgICBzdHViZG9tLWdtcCBcCisiCisKKyMgbm90aGluZyB0byBjb25maWd1cmUKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCisKK2V4cG9ydCBDTUFLRV9DX0ZMQUdTID0gIlwKKyAgICAtc3RkPWM5OSBcCisgICAgLURUUE1fTk9fRVhURVJOIFwKKyAgICAke1NUVUJET01fQ1BQRkxBR1N9IFwKKyAgICAke1NUVUJET01fQ0ZMQUdTfSBcCisgICAgLVduby1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgXAorICAgIC1Xbm8taW1wbGljaXQtZmFsbHRocm91Z2ggXAorIgorCitkb19jb21waWxlKCkgeworICAgIENDPSIke0hPU1RfUFJFRklYfWdjYyAtLXN5c3Jvb3Q9JHtSRUNJUEVfU1lTUk9PVH0iIGNtYWtlIC4uIC1EQ01BS0VfQ19GTEFHUzpTVFJJTkc9IiR7Q01BS0VfQ19GTEFHU30iCisgICAgJHtNQUtFfSBWRVJCT1NFPTEgdHBtX2NyeXB0byB0cG0KK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9CisgICAgaW5zdGFsbCAtbSA2NDQgLXQgJHtEfS8ke2xpYmRpcn0gJHtCfS9jcnlwdG8vbGlidHBtX2NyeXB0by5hCisgICAgaW5zdGFsbCAtbSA2NDQgLXQgJHtEfS8ke2xpYmRpcn0gJHtCfS90cG0vbGlidHBtLmEKKworICAgIGluc3RhbGwgLUQgLW0gNjQ0IC10ICR7RH0vJHtpbmNsdWRlZGlyfS90cG0tZW11bGF0b3IvYnVpbGQgJHtTfS9idWlsZC9jb25maWcuaAorICAgIGluc3RhbGwgLUQgLW0gNjQ0IC10ICR7RH0vJHtpbmNsdWRlZGlyfS90cG0tZW11bGF0b3IvY3J5cHRvICR7U30vY3J5cHRvLyouaAorICAgIGluc3RhbGwgLUQgLW0gNjQ0IC10ICR7RH0vJHtpbmNsdWRlZGlyfS90cG0tZW11bGF0b3IvdHBtICR7U30vdHBtLyouaAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3RwbS1lbXVsYXRvcl8wLjcuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi90cG0tZW11bGF0b3JfMC43LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYyNjkyOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi90cG0tZW11bGF0b3JfMC43LjQuYmIKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgS3VydCBCb2Rpa2VyIDxrdXJ0LmJvZGlrZXJAYnJhaW50cnVzdC11cy5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK0RFU0NSSVBUSU9OID0gIlRQTSBFbXVsYXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly94ZW5iaXRzLnhlbi5vcmcveGVuLWV4dGZpbGVzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9ZWVhYmQ3N2NmOGZkOGE4YmM0Mjk4Mzg4NGNiMDk4NjMiCisKK1NSQ19VUkkgPSAiXAorICAgIGh0dHA6Ly94ZW5iaXRzLnhlbi5vcmcveGVuLWV4dGZpbGVzL3RwbV9lbXVsYXRvci0ke1BWfS50YXIuZ3o7bmFtZT10cG0tZW11bGF0b3IgXAorICAgIGZpbGU6Ly90cG1lbXUtMC43LjQucGF0Y2ggXAorICAgIGZpbGU6Ly92dHBtLWJ1ZnNpemUucGF0Y2ggXAorICAgIGZpbGU6Ly92dHBtLWxvY2FsaXR5LnBhdGNoIFwKKyAgICBmaWxlOi8vdnRwbS1wYXJlbnQtc2lnbi1lay5wYXRjaCBcCisgICAgZmlsZTovL3Z0cG0tZGVlcHF1b3RlLnBhdGNoIFwKKyAgICBmaWxlOi8vdnRwbS1kZWVwcXVvdGUtYW55bG9jLnBhdGNoIFwKKyAgICBmaWxlOi8vdnRwbS1jbWFrZS1XZXh0cmEucGF0Y2ggXAorICAgIGZpbGU6Ly92dHBtLWltcGxpY2l0LWZhbGx0aHJvdWdoLnBhdGNoIFwKKyIKK1NSQ19VUklbdHBtLWVtdWxhdG9yLm1kNXN1bV0gPSAiZTI2YmVjYjhhNmEyYjY2OTVmNmIzZTgwOTc1OTNkYjgiCitTUkNfVVJJW3RwbS1lbXVsYXRvci5zaGEyNTZzdW1dID0gIjRlNDhlYTBkODNkZDk0NDFjYzFhZjA0YWIxOGNkNmM5NjFiOWZhNTRkNWNiZjJjMmZlZWUwMzg5ODhkZWE0NTkiCisKK1M9IiR7V09SS0RJUn0vdHBtX2VtdWxhdG9yLSR7UFZ9IgorQj0iJHtTfS9idWlsZCIKKworcmVxdWlyZSB0cG0tZW11bGF0b3IuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4veGVuLXZ0cG0uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbi12dHBtLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTRjNzUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbi12dHBtLmluYwpAQCAtMCwwICsxLDExMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgS3VydCBCb2Rpa2VyIDxrdXJ0LmJvZGlrZXJAYnJhaW50cnVzdC11cy5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK3JlcXVpcmUgc3R1YmRvbS5pbmMKKworREVQRU5EUyA9ICJcCisgICAgbmV3bGliIFwKKyAgICBsd2lwIFwKKyAgICBtaW5pLW9zIFwKKyAgICBwb2xhcnNzbCBcCisgICAgc3R1YmRvbS1nbXAgXAorICAgIHRwbS1lbXVsYXRvciBcCisiCisjIFRoZXNlIHdlcmUgdW5zZXQgYnkgc3R1YmRvbS5pbmMgdG8gYWxsb3cgdXMgdG8gc2NvcGUgdGhlbSBwZXIgcmVjaXBlCitleHBvcnQgQ0M9IiR7SE9TVF9QUkVGSVh9Z2NjIC0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfSIKK2V4cG9ydCBDQ0xEPSIke0hPU1RfUFJFRklYfWdjYyAtLXN5c3Jvb3Q9JHtSRUNJUEVfU1lTUk9PVH0iCitleHBvcnQgQ1hYPSIke0hPU1RfUFJFRklYfWcrKyAtLXN5c3Jvb3Q9JHtSRUNJUEVfU1lTUk9PVH0iCitleHBvcnQgQ1BQPSIke0hPU1RfUFJFRklYfWdjYyAtRSAtLXN5c3Jvb3Q9JHtSRUNJUEVfU1lTUk9PVH0iCitleHBvcnQgTEQ9IiR7SE9TVF9QUkVGSVh9bGQgLS1zeXNyb290PSR7UkVDSVBFX1NZU1JPT1R9IgorZXhwb3J0IExEX0xUTz0iJHtIT1NUX1BSRUZJWH1sZCAtLXN5c3Jvb3Q9JHtSRUNJUEVfU1lTUk9PVH0iCitleHBvcnQgQVM9IiR7SE9TVF9QUkVGSVh9YXMiCitleHBvcnQgQVI9IiR7SE9TVF9QUkVGSVh9YXIiCitleHBvcnQgTk09IiR7SE9TVF9QUkVGSVh9bm0iCitleHBvcnQgUkFOTElCPSIke0hPU1RfUFJFRklYfXJhbmxpYiIKK2V4cG9ydCBPQkpEVU1QPSIke0hPU1RfUFJFRklYfW9iamR1bXAiCitleHBvcnQgT0JKQ09QWT0iJHtIT1NUX1BSRUZJWH1vYmpjb3B5IgorZXhwb3J0IFNUUklQPSIke0hPU1RfUFJFRklYfXN0cmlwIgorZXhwb3J0IFNUUklOR1M9IiR7SE9TVF9QUkVGSVh9c3RyaW5ncyIKK2V4cG9ydCBSRUFERUxGPSIke0hPU1RfUFJFRklYfXJlYWRlbGYiCisKKworIyBSZXF1aXJlZCBmb3Igc29tZSBvZiB0aGUgY29uZmlnIHN0dWZmCitleHBvcnQgU1RVQkRPTV9UQVJHRVRTPSJ2dHBtIHZ0cG1tZ3IiCisKK1ZUUE1fQ1BQRkxBR1MgPSAiXAorICAgIC1JJHtSRUNJUEVfU1lTUk9PVH0vY3Jvc3Mtcm9vdC0ke0dOVV9UQVJHRVRfQVJDSH0vJHtHTlVfVEFSR0VUX0FSQ0h9LXhlbi1lbGYvaW5jbHVkZS90cG0tZW11bGF0b3IvYnVpbGQgXAorICAgIC1JJHtSRUNJUEVfU1lTUk9PVH0vY3Jvc3Mtcm9vdC0ke0dOVV9UQVJHRVRfQVJDSH0vJHtHTlVfVEFSR0VUX0FSQ0h9LXhlbi1lbGYvaW5jbHVkZS90cG0tZW11bGF0b3IvY3J5cHRvIFwKKyAgICAtSSR7UkVDSVBFX1NZU1JPT1R9L2Nyb3NzLXJvb3QtJHtHTlVfVEFSR0VUX0FSQ0h9LyR7R05VX1RBUkdFVF9BUkNIfS14ZW4tZWxmL2luY2x1ZGUvdHBtLWVtdWxhdG9yL3RwbSBcCisgICAgLUkke1JFQ0lQRV9TWVNST09UfS9jcm9zcy1yb290LSR7R05VX1RBUkdFVF9BUkNIfS8ke0dOVV9UQVJHRVRfQVJDSH0teGVuLWVsZi9pbmNsdWRlL3RwbS1lbXVsYXRvciBcCisiCisKKyMgVGhlIGluY2x1ZGVzIGZyb20gdGhpcyBYZW4gZGlyZWN0b3J5IGFyZSBub3QgaW4gdGhlIE1pbmlPUyByZXBvLCBhbHRob3VnaCB0aGV5IHByb2JhYmx5IHNob3VsZCBiZS4KK1NUVUJET01fQ1BQRkxBR1MgKz0gIi1pc3lzdGVtICR7Qn0vaW5jbHVkZS8iCisKK2RvX2NvbmZpZ3VyZSgpIHsKKworICAgICMgR0NDIDcgZmFpbHMgbGlua2luZyBoZWFkZXIgZGVmaW5lZCBpbmxpbmVzIGlmIG5vdCBkZWNsYXJlZCAnc3RhdGljJyBvciAnZXh0ZXJuJworICAgICMgVGhpcyBhcHBlYXJzIHRvIGJlIGZpeGVkIGluIFhlbiA0LjEwLjArLCBzbyBsZXQncyBsb29rIGF0IHZlcnNpb24gb2YgWGVuIHNvdXJjZQorICAgICMgdG8gZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gbW9kaWZ5IGlubGluZSBkZWNsYXJhdGlvbnMuCisgICAgIworICAgICMgJ2VjaG8gLWUnIHRvIGVuYWJsZSBpbnRlcnByZXRhdGlvbiBvZiBiYWNrc2xhc2hlcworICAgICMgJ3NvcnQgLVYnIHRvIG5hdHVyYWwgc29ydCB2ZXJzaW9uIG51bWJlcnMKKyAgICAjICdoZWFkIC1uMScgdG8gY2FwdHVyZSB0aGUgZmlyc3QgbGluZSBvZiBvdXRwdXQgZnJvbSBzb3J0IGNvbW1hbmQKKworICAgIGlmIFsgIiR7UFZ9IiA9ICIkKGVjaG8gIiR7UFZ9OzQuOS45OTkiIHwgc2VkICdzLzsvXG4vJyB8IHNvcnQgLVYgfCBoZWFkIC1uMSkiIF07IHRoZW4KKyAgICAgICAgc2VkIC1pICJzL15pbmxpbmUvc3RhdGljIGlubGluZS9nIiAke0J9L3Z0cG1tZ3IvKi5oCisgICAgZmkKKworICAgIGZvciBpIGluIEFSIEFTIE5NIFJBTkxJQiBPQkpEVU1QIE9CSkNPUFkgU1RSSVAgU1RSSU5HUyBSRUFERUxGIENYWCBMRCBMRF9MVE8gQ0MgQ1BQOyBkbworICAgICAgICBzZWQgLWkgInMvXlwoJGlcc1xzKlwpLio9L1wxPz0vIiAke01JTklPU19TUkNESVJ9L0NvbmZpZy5taworICAgIGRvbmUKKworICAgICMgcmVwbGljYXRlIHRoZSBUQVJHRVRTX01JTklPUyB0YXJnZXQgaW4geGVuL3N0dWJkb20vTWFrZWZpbGUKKyAgICBmb3IgaSBpbiAke1NUVUJET01fVEFSR0VUU307IGRvCisgICAgICAgIFsgLWQgJHtCfS9taW5pLW9zLSR7WEVOX1RBUkdFVF9BUkNIfS0kaSBdIHx8CisgICAgICAgIGZvciBqIGluICQoY2QgJHtNSU5JT1NfU1JDRElSfSA7IGZpbmQgLiAtdHlwZSBkKSA7IGRvIFwKKyAgICAgICAgICAgICAgICBta2RpciAtcCAke0J9L21pbmktb3MtJHtYRU5fVEFSR0VUX0FSQ0h9LSRpLyRqOyBcCisgICAgICAgIGRvbmUKKyAgICBkb25lCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgJHtNQUtFfSBNSU5JT1NfQ09ORklHPSIke0J9L3Z0cG0vbWluaW9zLmNmZyIgQ09ORklHX0ZJTEU9IiR7Qn0vdnRwbS1taW5pb3MtY29uZmlnLm1rIiBERVNURElSPSAtQyAke01JTklPU19TUkNESVJ9IGNvbmZpZworICAgIENQUEZMQUdTPSJgY2F0ICR7Qn0vdnRwbS1taW5pb3MtY29uZmlnLm1rYCAke1NUVUJET01fQ1BQRkxBR1N9ICR7VlRQTV9DUFBGTEFHU30iIENGTEFHUz0iJHtTVFVCRE9NX0NGTEFHU30iICR7TUFLRX0gLUMgJHtCfS92dHBtCisgICAgREVGX0NQUEZMQUdTPSIke1NUVUJET01fQ1BQRkxBR1N9IiBcCisgICAgICAgIERFRl9DRkxBR1M9IiR7U1RVQkRPTV9DRkxBR1N9IiBcCisgICAgICAgIERFRl9MREZMQUdTPSIke1NUVUJET01fTERGTEFHU30iIFwKKyAgICAgICAgTUlOSU9TX0NPTkZJRz0iJHtCfS92dHBtL21pbmlvcy5jZmciIFwKKyAgICAgICAgJHtNQUtFfSAtQyAke01JTklPU19TUkNESVJ9IFwKKyAgICAgICAgT0JKX0RJUj0ke0J9L21pbmktb3MtJHtYRU5fVEFSR0VUX0FSQ0h9LXZ0cG0gXAorICAgICAgICBBUFBfT0JKUz0iJHtCfS92dHBtL3Z0cG0uYSIgXAorICAgICAgICBBUFBfTERMSUJTPSItbHRwbSAtbHRwbV9jcnlwdG8gLWxnbXAgLWxwb2xhcnNzbCIKKworICAgICR7TUFLRX0gTUlOSU9TX0NPTkZJRz0iJHtCfS92dHBtbWdyL21pbmlvcy5jZmciIENPTkZJR19GSUxFPSIke0J9L3Z0cG1tZ3ItbWluaW9zLWNvbmZpZy5tayIgREVTVERJUj0gLUMgJHtNSU5JT1NfU1JDRElSfSBjb25maWcKKyAgICBDUFBGTEFHUz0iYGNhdCAke0J9L3Z0cG1tZ3ItbWluaW9zLWNvbmZpZy5ta2AgJHtTVFVCRE9NX0NQUEZMQUdTfSIgQ0ZMQUdTPSIke1NUVUJET01fQ0ZMQUdTfSIgJHtNQUtFfSAtQyAke0J9L3Z0cG1tZ3IKKyAgICBERUZfQ1BQRkxBR1M9IiR7U1RVQkRPTV9DUFBGTEFHU30iIFwKKyAgICAgICAgREVGX0NGTEFHUz0iJHtTVFVCRE9NX0NGTEFHU30iIFwKKyAgICAgICAgREVGX0xERkxBR1M9IiR7U1RVQkRPTV9MREZMQUdTfSIgXAorICAgICAgICBNSU5JT1NfQ09ORklHPSIke0J9L3Z0cG1tZ3IvbWluaW9zLmNmZyIgXAorICAgICAgICAke01BS0V9IC1DICR7TUlOSU9TX1NSQ0RJUn0gXAorICAgICAgICBPQkpfRElSPSR7Qn0vbWluaS1vcy0ke1hFTl9UQVJHRVRfQVJDSH0tdnRwbW1nciBcCisgICAgICAgIEFQUF9PQkpTPSIke0J9L3Z0cG1tZ3IvdnRwbW1nci5hIiBcCisgICAgICAgIEFQUF9MRExJQlM9Ii1sbSAtbHBvbGFyc3NsIgorfQorCitQQUNLQUdFUyA9ICJcCisgICAgJHtQTn0tdnRwbS1zdHViZG9tIFwKKyAgICAke1BOfS12dHBtbWdyLXN0dWJkb20gXAorIgorRklMRVNfJHtQTn0tdnRwbS1zdHViZG9tPSJcCisgICAgJHtsaWJkaXJ9L3hlbi9ib290L3Z0cG0tc3R1YmRvbS5neiBcCisiCisKK0ZJTEVTXyR7UE59LXZ0cG1tZ3Itc3R1YmRvbT0iXAorICAgICR7bGliZGlyfS94ZW4vYm9vdC92dHBtbWdyLXN0dWJkb20uZ3ogXAorIgorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLW0gNjQ0IC1EICR7Qn0vbWluaS1vcy0ke1hFTl9UQVJHRVRfQVJDSH0tdnRwbS9taW5pLW9zLmd6ICR7RH0ke2xpYmRpcn0veGVuL2Jvb3QvdnRwbS1zdHViZG9tLmd6CisgICAgaW5zdGFsbCAtbSA2NDQgLUQgJHtCfS9taW5pLW9zLSR7WEVOX1RBUkdFVF9BUkNIfS12dHBtbWdyL21pbmktb3MuZ3ogJHtEfSR7bGliZGlyfS94ZW4vYm9vdC92dHBtbWdyLXN0dWJkb20uZ3oKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi94ZW4tdnRwbV80LjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi94ZW4tdnRwbV80LjkuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNThhMDJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbi12dHBtXzQuOS4wLmJiCkBAIC0wLDAgKzEsMjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEt1cnQgQm9kaWtlciA8a3VydC5ib2Rpa2VyQGJyYWludHJ1c3QtdXMuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitERVNDUklQVElPTiA9ICJNaW5pT1MtYmFzZWQgdlRQTXMgZm9yIFhlbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LnhlbnByb2plY3Qub3JnIgorTElDRU5TRSA9ICJHUEx2MiAmIEJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIxY2ViMWIwM2E0OWIyMDJlZTZmNDFmZmQxZWQwMTU1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Z0cG0vQ09QWUlORzttZDU9NzVhOTgwNjJhYjAzMjJkZWQwNjBkOTAyNmExYmRhNjEgXAorIgorCisjIGdpdCBjb21taXQgaGFzaCBmb3IgWGVuJ3MgUkVMRUFTRS00LjkuMCB0YWcKK1NSQ1JFVl94ZW4gPSAiYzMwYmY1NTU5NGE1M2ZhZThhYWUwOGFhYmYxNmZjMTkyZmFhZDdkYSIKK1NSQ19VUkkgPSAiXAorICAgIGdpdDovL3hlbmJpdHMueGVuLm9yZy94ZW4uZ2l0O3Byb3RvY29sPWdpdDtub2JyYW5jaD0xO25hbWU9eGVuO3N1YnBhdGg9c3R1YmRvbSBcCisgICAgZ2l0Oi8veGVuYml0cy54ZW4ub3JnL3hlbi5naXQ7cHJvdG9jb2w9Z2l0O25vYnJhbmNoPTE7bmFtZT14ZW47ZGVzdHN1ZmZpeD1zdHViZG9tL2luY2x1ZGU7c3VicGF0aD10b29scy94ZW5zdG9yZS9pbmNsdWRlIFwKKyIKKworUz0iJHtXT1JLRElSfS9zdHViZG9tIgorQj0iJHtTfSIKKworcmVxdWlyZSB4ZW4tdnRwbS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi94ZW4uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbi5pbmMKaW5kZXggY2IzMTRmOC4uOGRmZTU4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbi5pbmMKQEAgLTYyLDE1ICs2MiwxMiBAQAogCiBSREVQRU5EU18ke1BOfS1iYXNlID0gIlwKICAgICBiYXNoIHBlcmwgeHogXAotICAgICR7UE59LWJsa3RhcCBcCiAgICAgJHtQTn0tY29uc29sZSBcCi0gICAgJHtQTn0tbGliYmxrdGFwY3RsIFwKICAgICAke1BOfS1saWJ4ZW5ndWVzdCBcCiAgICAgJHtQTn0tbGlieGVubGlnaHQgXAogICAgICR7UE59LWxpYnhlbnZjaGFuIFwKICAgICAke1BOfS1saWJ4ZW5jdHJsIFwKICAgICAke1BOfS1saWJ4bHV0aWwgXAotICAgICR7UE59LWxpYnZoZCBcCiAgICAgJHtQTn0tbGlieGVuc3RhdCBcCiAgICAgJHtQTn0tbGlieGVuc3RvcmUgXAogICAgICR7UE59LWxpYmZzaW1hZ2UgXApAQCAtODgsNyArODUsMTAgQEAKIFJERVBFTkRTXyR7UE59LWRldiA9ICIiCiAKIFJSRUNPTU1FTkRTXyR7UE59LWJhc2UgPSAiIFwKKyAgICAke1BOfS1ibGt0YXAgXAogICAgICR7UE59LWxpYmJsa3RhcCBcCisgICAgJHtQTn0tbGliYmxrdGFwY3RsIFwKKyAgICAke1BOfS1saWJ2aGQgXAogICAgICR7UE59LWZsYXNrIFwKICAgICAke1BOfS1odm1sb2FkZXIgXAogICAgICR7UE59LXhlbnBhZ2luZyBcCkBAIC0xOTYsNiArMTk2LDggQEAKICAgICAke1BOfS1saWJ4ZW5zdGF0LWRldiBcCiAgICAgJHtQTn0tbGlieGVuc3RvcmUgXAogICAgICR7UE59LWxpYnhlbnN0b3JlLWRldiBcCisgICAgJHtQTn0tbGlieGVudG9vbGNvcmUgXAorICAgICR7UE59LWxpYnhlbnRvb2xjb3JlLWRldiBcCiAgICAgJHtQTn0tbGlieGVudG9vbGxvZyBcCiAgICAgJHtQTn0tbGlieGVudG9vbGxvZy1kZXYgXAogICAgICR7UE59LWxpYnhlbnZjaGFuIFwKQEAgLTM0NCw2ICszNDYsMTIgQEAKICAgICAke2RhdGFkaXJ9L3BrZ2NvbmZpZy94ZW5zdG9yZS5wYyBcCiAgICAgIgogCitGSUxFU18ke1BOfS1saWJ4ZW50b29sY29yZSA9ICIke2xpYmRpcn0vbGlieGVudG9vbGNvcmUuc28uKiIKK0ZJTEVTXyR7UE59LWxpYnhlbnRvb2xjb3JlLWRldiA9ICIgXAorICAgICR7bGliZGlyfS9saWJ4ZW50b29sY29yZS5zbyBcCisgICAgJHtkYXRhZGlyfS9wa2djb25maWcveGVudG9vbGNvcmUucGMgXAorICAgICIKKwogRklMRVNfJHtQTn0tbGlieGVudG9vbGxvZyA9ICIke2xpYmRpcn0vbGlieGVudG9vbGxvZy5zby4qIgogRklMRVNfJHtQTn0tbGlieGVudG9vbGxvZy1kZXYgPSAiIFwKICAgICAke2xpYmRpcn0vbGlieGVudG9vbGxvZy5zbyBcCkBAIC00NzQsNiArNDgyLDcgQEAKICAgICAke3NiaW5kaXJ9L3hlbnBlcmYgXAogICAgICR7c2JpbmRpcn0veGVucG0gXAogICAgICR7c2JpbmRpcn0veHN2aWV3IFwKKyAgICAke3NiaW5kaXJ9L3hlbi1kaWFnIFwKICAgICAke3NiaW5kaXJ9L3hlbi10bWVtLWxpc3QtcGFyc2UgXAogICAgICR7c2JpbmRpcn0veGVuLXB5dGhvbi1wYXRoIFwKICAgICAke3NiaW5kaXJ9L3hlbi1yaW5nd2F0Y2ggXApAQCAtNzM5LDggKzc0OCw2IEBACiAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS94ZW5jb25zb2xlZC5zZXJ2aWNlIFwKICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3hlbi1pbml0LWRvbTAuc2VydmljZSBcCiAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS94ZW5zdG9yZWQuc2VydmljZSBcCi0gICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS94ZW5zdG9yZWQuc29ja2V0IFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3hlbnN0b3JlZF9yby5zb2NrZXQgXAogICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vdmFyLWxpYi14ZW5zdG9yZWQubW91bnQgXAogICAgICIKIApAQCAtNzgwLDggKzc4Nyw2IEBACiAgICAgeGVuY29uc29sZWQuc2VydmljZSBcCiAgICAgeGVuLWluaXQtZG9tMC5zZXJ2aWNlIFwKICAgICB4ZW5zdG9yZWQuc2VydmljZSBcCi0gICAgeGVuc3RvcmVkLnNvY2tldCBcCi0gICAgeGVuc3RvcmVkX3JvLnNvY2tldCBcCiAgICAgIgogU1lTVEVNRF9TRVJWSUNFXyR7UE59LXhlbmRvbWFpbnMgPSAieGVuZG9tYWlucy5zZXJ2aWNlIgogCkBAIC04MjUsNyArODMwLDcgQEAKICMgWW9jdG8gaW5qZWN0cyAtbWZwbWF0aD1zc2UgZm9yIHNvbWUgbWFjaGluZSB0eXBlcyBpbnRvIHRoZSBDRkxBR1Mgd2hpY2gKICMgY29uZmxpY3RzIHdpdGggLW1uby1zc2Ugc28gaW5zdGVhZCB3ZSBzdHJpcCAtbWZwbWF0aD1zc2UgaW5zdGVhZCBvZgogIyBwYXRjaGluZyB0aGUgYnVpbGQgdG8gYmUgb2sgd2l0aCB0aGlzCi1UVU5FX0NDQVJHUyA6PSAiJHtAb2VfZmlsdGVyX291dCgnLW1mcG1hdGg9c3NlJywgJyR7VFVORV9DQ0FSR1N9JywgZCl9IgorVFVORV9DQ0FSR1MgOj0gIiR7QG9lLnV0aWxzLnN0cl9maWx0ZXJfb3V0KCctbWZwbWF0aD1zc2UnLCAnJHtUVU5FX0NDQVJHU30nLCBkKX0iCiAKIEVYVFJBX09FQ09ORiArPSAiIFwKICAgICAtLWV4ZWMtcHJlZml4PS91c3IgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbl80LjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4veGVuXzQuMTAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzE0YjliCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbl80LjEwLjAuYmIKQEAgLTAsMCArMSwxMiBAQAorRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorcmVxdWlyZSB4ZW4uaW5jCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwczovL2Rvd25sb2Fkcy54ZW5wcm9qZWN0Lm9yZy9yZWxlYXNlL3hlbi8ke1BWfS94ZW4tJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8veHNhMjUzLnBhdGNoIFwKKyAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYjlkMzIwZDAyY2I0MGY2YjQwNTA2YWVkMWEzOGQ1OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMjYyYTcwMjNmOGIxMmJjYWNmYjBiMjVlNjliMmE2MzI5MWY5NDRmNzY4M2Q1NGQ4ZjMzZDRiMmNhNTU2ODQ0IgorCitTID0gIiR7V09SS0RJUn0veGVuLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbl80LjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi94ZW5fNC45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlOWM4MDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbl80LjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLXJlcXVpcmUgeGVuLmluYwotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cHM6Ly9kb3dubG9hZHMueGVucHJvamVjdC5vcmcvcmVsZWFzZS94ZW4vJHtQVn0veGVuLSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL2ZpeC1saWJ4Yy14Y19kb21fYXJtLW1pc3NpbmctaW5pdGlhbGl6YXRpb24ucGF0Y2ggXAotICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImYwYTc1MzYzNzYzMGY5ODJkZmJkYjY0MTIxZmQ3MWUxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNhZGU2NDNmZTMzMTBkNGQ2Zjk3ZDBjMjE1YzZmYTMyM2JjMTEzMGQ3ZTY0ZDdlMjA0M2ZmYWE3M2E5NmYzM2IiCi0KLVMgPSAiJHtXT1JLRElSfS94ZW4tJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4veGVuXzQuOS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbl80LjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzE4YmIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbl80LjkuMS5iYgpAQCAtMCwwICsxLDE4IEBACitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCityZXF1aXJlIHhlbi5pbmMKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vZG93bmxvYWRzLnhlbnByb2plY3Qub3JnL3JlbGVhc2UveGVuLyR7UFZ9L3hlbi0ke1BWfS50YXIuZ3ogXAorICAgIGZpbGU6Ly94c2EyNDYtNC45LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1wMm0tQWx3YXlzLWNoZWNrLXRvLXNlZS1pZi1yZW1vdmluZy1hLXAybS1lbnRyeS1hY3R1LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1wMm0tQ2hlY2stcmV0dXJuLXZhbHVlLW9mLXAybV9zZXRfZW50cnktd2hlbi1kZWNyZWFzLnBhdGNoIFwKKyAgICBmaWxlOi8veHNhMjQ4LnBhdGNoIFwKKyAgICBmaWxlOi8veHNhMjQ5LnBhdGNoIFwKKyAgICBmaWxlOi8veHNhMjUwLnBhdGNoIFwKKyAgICBmaWxlOi8veHNhMjUxLnBhdGNoIFwKKyAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YjlkNjEwNDY5NGIxNjRkNTQzMzQxOTQxMzVmNzIxNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlY2Y4OGIwMWY0NGNkOGY0ZWYyMDhhZjNmOTk5ZGNlYjY5YmRkMmEzMTZkODhkZDlhOTUzNWVhN2I0OWVkMzU2IgorCitTID0gIiR7V09SS0RJUn0veGVuLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvL3Zzd2l0Y2guY2ZnIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvL3Zzd2l0Y2guY2ZnCmluZGV4IDAwNjc1MDQuLmIxZmVmYzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by92c3dpdGNoLmNmZworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8vdnN3aXRjaC5jZmcKQEAgLTEsMiArMSwzIEBACiBDT05GSUdfT1BFTlZTV0lUQ0g9bQogQ09ORklHX05FVF9TQ0hfSU5HUkVTUz1tCitDT05GSUdfTkVUX0FDVF9QT0xJQ0U9bQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE0LmJiYXBwZW5kCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNC5iYmFwcGVuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNS5iYmFwcGVuZApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE1LmJiYXBwZW5kCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE3Y2FjYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotcmVxdWlyZSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3ZpcnR1YWxpemF0aW9uJywgJyR7QlBOfV92aXJ0dWFsaXphdGlvbi5pbmMnLCAnJywgZCl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL25ldG5zL2ZpbGVzLzAwMDEtQWxsb3ctc2VsZWN0aW9uLW9mLWdvLWNvbXBpbGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9uZXRucy9maWxlcy8wMDAxLUFsbG93LXNlbGVjdGlvbi1vZi1nby1jb21waWxlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGZiOWE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9uZXRucy9maWxlcy8wMDAxLUFsbG93LXNlbGVjdGlvbi1vZi1nby1jb21waWxlci5wYXRjaApAQCAtMCwwICsxLDEwNyBAQAorRnJvbSA2NTc2ZjIyODMzOWI3OTMxZTA1YThlODYxZjA4NWY0ODM4MTc4MDZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KK0RhdGU6IFR1ZSwgOCBNYXkgMjAxOCAxMTowMToxNCArMDAwMAorU3ViamVjdDogW1BBVENIXSBBbGxvdyBzZWxlY3Rpb24gb2YgZ28gY29tcGlsZXIKKworQnkgcnVubmluZyBgbWFrZSBHTz0vcGF0aC90by9nb2Agd2UgY2FuIG5vdyBzZWxlY3QgdGhlIGFwcHJvcHJpYXRlIGdvIGNvbXBpbGVyCit0byB1c2UuIFRoaXMgYWxzbyBtYWtlcyBpdCBwb3NzaWJsZSB0byBjcm9zcyBjb21waWxlIG5ldG5zIG1vcmUgZWFzaWx5LgorCitTaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgorVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCistLS0KKyBNYWtlZmlsZSB8IDI1ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAzYTIyZjNlLi40NzZjYjliIDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC9NYWtlZmlsZQorKysrIGIvc3JjL2ltcG9ydC9NYWtlZmlsZQorQEAgLTIzLDYgKzIzLDkgQEAgQ1RJTUVWQVI9LVggJChQS0cpL3ZlcnNpb24uR0lUQ09NTUlUPSQoR0lUQ09NTUlUKSAtWCAkKFBLRykvdmVyc2lvbi5WRVJTSU9OPSQoVkUKKyBHT19MREZMQUdTPS1sZGZsYWdzICItdyAkKENUSU1FVkFSKSIKKyBHT19MREZMQUdTX1NUQVRJQz0tbGRmbGFncyAiLXcgJChDVElNRVZBUikgLWV4dGxkZmxhZ3MgLXN0YXRpYyIKKyAKKysjIFNldCBvdXIgZGVmYXVsdCBnbyBjb21waWxlcgorK0dPIDo9IGdvCisrCisgIyBMaXN0IHRoZSBHT09TIGFuZCBHT0FSQ0ggdG8gYnVpbGQKKyBHT09TQVJDSEVTID0gbGludXgvYXJtIGxpbnV4L2FybTY0IGxpbnV4L2FtZDY0IGxpbnV4LzM4NgorIAorQEAgLTMzLDEyICszNiwxMiBAQCBidWlsZDogJChOQU1FKSAjIyBCdWlsZHMgYSBkeW5hbWljIGV4ZWN1dGFibGUgb3IgcGFja2FnZQorIAorICQoTkFNRSk6ICouZ28gVkVSU0lPTi50eHQKKyAJQGVjaG8gIisgJEAiCistCWdvIGJ1aWxkIC10YWdzICIkKEJVSUxEVEFHUykiICR7R09fTERGTEFHU30gLW8gJChOQU1FKSAuCisrCSQoR08pIGJ1aWxkIC10YWdzICIkKEJVSUxEVEFHUykiICR7R09fTERGTEFHU30gLW8gJChOQU1FKSAuCisgCisgLlBIT05ZOiBzdGF0aWMKKyBzdGF0aWM6ICMjIEJ1aWxkcyBhIHN0YXRpYyBleGVjdXRhYmxlCisgCUBlY2hvICIrICRAIgorLQlDR09fRU5BQkxFRD0wIGdvIGJ1aWxkIFwKKysJQ0dPX0VOQUJMRUQ9MCAkKEdPKSBidWlsZCBcCisgCQkJCS10YWdzICIkKEJVSUxEVEFHUykgc3RhdGljX2J1aWxkIiBcCisgCQkJCSR7R09fTERGTEFHU19TVEFUSUN9IC1vICQoTkFNRSkgLgorIAorQEAgLTU1LDIzICs1OCwyMyBAQCBsaW50OiAjIyBWZXJpZmllcyBgZ29saW50YCBwYXNzZXMKKyAuUEhPTlk6IHRlc3QKKyB0ZXN0OiAjIyBSdW5zIHRoZSBnbyB0ZXN0cworIAlAZWNobyAiKyAkQCIKKy0JQGdvIHRlc3QgLXYgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28iICQoc2hlbGwgZ28gbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKQorKwlAJChHTykgdGVzdCAtdiAtdGFncyAiJChCVUlMRFRBR1MpIGNnbyIgJChzaGVsbCAkKEdPKSBsaXN0IC4vLi4uIHwgZ3JlcCAtdiB2ZW5kb3IpCisgCisgLlBIT05ZOiB2ZXQKKyB2ZXQ6ICMjIFZlcmlmaWVzIGBnbyB2ZXRgIHBhc3NlcworIAlAZWNobyAiKyAkQCIKKy0JQGdvIHZldCAkKHNoZWxsIGdvIGxpc3QgLi8uLi4gfCBncmVwIC12IHZlbmRvcikgfCBncmVwIC12ICcucGIuZ286JyB8IHRlZSAvZGV2L3N0ZGVycgorKwlAJChHTykgdmV0ICQoc2hlbGwgJChHTykgbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKSB8IGdyZXAgLXYgJy5wYi5nbzonIHwgdGVlIC9kZXYvc3RkZXJyCisgCisgLlBIT05ZOiBzdGF0aWNjaGVjaworIHN0YXRpY2NoZWNrOiAjIyBWZXJpZmllcyBgc3RhdGljY2hlY2tgIHBhc3NlcworIAlAZWNobyAiKyAkQCIKKy0JQHN0YXRpY2NoZWNrICQoc2hlbGwgZ28gbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKSB8IGdyZXAgLXYgJy5wYi5nbzonIHwgdGVlIC9kZXYvc3RkZXJyCisrCUBzdGF0aWNjaGVjayAkKHNoZWxsICQoR08pIGxpc3QgLi8uLi4gfCBncmVwIC12IHZlbmRvcikgfCBncmVwIC12ICcucGIuZ286JyB8IHRlZSAvZGV2L3N0ZGVycgorIAorIC5QSE9OWTogY292ZXIKKyBjb3ZlcjogIyMgUnVucyBnbyB0ZXN0IHdpdGggY292ZXJhZ2UKKyAJQGVjaG8gIiIgPiBjb3ZlcmFnZS50eHQKKy0JQGZvciBkIGluICQoc2hlbGwgZ28gbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKTsgZG8gXAorLQkJZ28gdGVzdCAtcmFjZSAtY292ZXJwcm9maWxlPXByb2ZpbGUub3V0IC1jb3Zlcm1vZGU9YXRvbWljICIkJGQiOyBcCisrCUBmb3IgZCBpbiAkKHNoZWxsICQoR08pIGxpc3QgLi8uLi4gfCBncmVwIC12IHZlbmRvcik7IGRvIFwKKysJCSQoR08pIHRlc3QgLXJhY2UgLWNvdmVycHJvZmlsZT1wcm9maWxlLm91dCAtY292ZXJtb2RlPWF0b21pYyAiJCRkIjsgXAorIAkJaWYgWyAtZiBwcm9maWxlLm91dCBdOyB0aGVuIFwKKyAJCQljYXQgcHJvZmlsZS5vdXQgPj4gY292ZXJhZ2UudHh0OyBcCisgCQkJcm0gcHJvZmlsZS5vdXQ7IFwKK0BAIC04MSwxMSArODQsMTEgQEAgY292ZXI6ICMjIFJ1bnMgZ28gdGVzdCB3aXRoIGNvdmVyYWdlCisgLlBIT05ZOiBpbnN0YWxsCisgaW5zdGFsbDogIyMgSW5zdGFsbHMgdGhlIGV4ZWN1dGFibGUgb3IgcGFja2FnZQorIAlAZWNobyAiKyAkQCIKKy0JZ28gaW5zdGFsbCAtYSAtdGFncyAiJChCVUlMRFRBR1MpIiAke0dPX0xERkxBR1N9IC4KKysJJChHTykgaW5zdGFsbCAtYSAtdGFncyAiJChCVUlMRFRBR1MpIiAke0dPX0xERkxBR1N9IC4KKyAKKyBkZWZpbmUgYnVpbGRwcmV0dHkKKyBta2RpciAtcCAkKEJVSUxERElSKS8kKDEpLyQoMik7CistR09PUz0kKDEpIEdPQVJDSD0kKDIpIENHT19FTkFCTEVEPTAgZ28gYnVpbGQgXAorK0dPT1M9JCgxKSBHT0FSQ0g9JCgyKSBDR09fRU5BQkxFRD0wICQoR08pIGJ1aWxkIFwKKyAJIC1vICQoQlVJTERESVIpLyQoMSkvJCgyKS8kKE5BTUUpIFwKKyAJIC1hIC10YWdzICIkKEJVSUxEVEFHUykgc3RhdGljX2J1aWxkIG5ldGdvIiBcCisgCSAtaW5zdGFsbHN1ZmZpeCBuZXRnbyAke0dPX0xERkxBR1NfU1RBVElDfSAuOworQEAgLTk5LDcgKzEwMiw3IEBAIGNyb3NzOiAqLmdvIFZFUlNJT04udHh0ICMjIEJ1aWxkcyB0aGUgY3Jvc3MtY29tcGlsZWQgYmluYXJpZXMsIGNyZWF0aW5nIGEgY2xlYW4KKyAJJChmb3JlYWNoIEdPT1NBUkNILCQoR09PU0FSQ0hFUyksICQoY2FsbCBidWlsZHByZXR0eSwkKHN1YnN0IC8sLCQoZGlyICQoR09PU0FSQ0gpKSksJChub3RkaXIgJChHT09TQVJDSCkpKSkKKyAKKyBkZWZpbmUgYnVpbGRyZWxlYXNlCistR09PUz0kKDEpIEdPQVJDSD0kKDIpIENHT19FTkFCTEVEPTAgZ28gYnVpbGQgXAorK0dPT1M9JCgxKSBHT0FSQ0g9JCgyKSBDR09fRU5BQkxFRD0wICQoR08pIGJ1aWxkIFwKKyAJIC1vICQoQlVJTERESVIpLyQoTkFNRSktJCgxKS0kKDIpIFwKKyAJIC1hIC10YWdzICIkKEJVSUxEVEFHUykgc3RhdGljX2J1aWxkIG5ldGdvIiBcCisgCSAtaW5zdGFsbHN1ZmZpeCBuZXRnbyAke0dPX0xERkxBR1NfU1RBVElDfSAuOworQEAgLTExNSw3ICsxMTgsNyBAQCByZWxlYXNlOiAqLmdvIFZFUlNJT04udHh0ICMjIEJ1aWxkcyB0aGUgY3Jvc3MtY29tcGlsZWQgYmluYXJpZXMsIG5hbWluZyB0aGVtIGluCisgLlBIT05ZOiBidW1wLXZlcnNpb24KKyBCVU1QIDo9IHBhdGNoCisgYnVtcC12ZXJzaW9uOiAjIyBCdW1wIHRoZSB2ZXJzaW9uIGluIHRoZSB2ZXJzaW9uIGZpbGUuIFNldCBCVU1QIHRvIFsgcGF0Y2ggfCBtYWpvciB8IG1pbm9yIF0KKy0JQGdvIGdldCAtdSBnaXRodWIuY29tL2plc3NmcmF6L2p1bmsvc2VtYnVtcCAjIHVwZGF0ZSBzZW1idW1wIHRvb2wKKysJQCQoR08pIGdldCAtdSBnaXRodWIuY29tL2plc3NmcmF6L2p1bmsvc2VtYnVtcCAjIHVwZGF0ZSBzZW1idW1wIHRvb2wKKyAJJChldmFsIE5FV19WRVJTSU9OID0gJChzaGVsbCBzZW1idW1wIC0ta2luZCAkKEJVTVApICQoVkVSU0lPTikpKQorIAlAZWNobyAiQnVtcGluZyBWRVJTSU9OLnR4dCBmcm9tICQoVkVSU0lPTikgdG8gJChORVdfVkVSU0lPTikiCisgCWVjaG8gJChORVdfVkVSU0lPTikgPiBWRVJTSU9OLnR4dAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL25ldG5zL25ldG5zX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvbmV0bnMvbmV0bnNfZ2l0LmJiCmluZGV4IGQzNTgzNmUuLjgyYTk2MWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvbmV0bnMvbmV0bnNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvbmV0bnMvbmV0bnNfZ2l0LmJiCkBAIC0xLDEzICsxLDEzIEBACiBIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vamZyYXplbGxlL25ldG5zIgogU1VNTUFSWSA9ICJSdW5jIGhvb2sgZm9yIHNldHRpbmcgdXAgZGVmYXVsdCBicmlkZ2UgbmV0d29ya2luZy4iCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9pbXBvcnQvTElDRU5TRTttZDU9MjBjZTRjNmE0ZjMyZDZlZTRhNjhlM2E3NTA2ZGIzZjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvaW1wb3J0L0xJQ0VOU0U7bWQ1PTQ4ZWYwOTc5YTJiY2MzZmFlMTRmZjMwYjhhN2Y1ZGJmIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vamVzc2ZyYXovbmV0bnM7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoIFwKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nZW51aW5ldG9vbHMvbmV0bnM7YnJhbmNoPW1hc3RlciBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFsbG93LXNlbGVjdGlvbi1vZi1nby1jb21waWxlci5wYXRjaCBcCiAgICAgICAgICAgIgotU1JDUkVWID0gIjc0ZTIzYTBlNWM0ZTdhYzAxMWFhZmNjNDYyMzU4NmMxOTZmMWIzZWYiCi1QViA9ICIwLjIuMSIKK1NSQ1JFViA9ICIwZGE2YWIwOTk3NzA3MDI0ZGViZTY4YzkxZTk0MGM5MTY4MDQxYmY4IgorUFYgPSAiMC40LjAiCiBHT19JTVBPUlQgPSAiaW1wb3J0IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtMjYsOSArMjYsOSBAQAogCSMgV2UgYWxzbyBuZWVkIHRvIGxpbmsgaW4gdGhlIGlwYWxsb2NhdG9yIGFuZCB2ZXJzaW9uIGRpcmVjdG9yaWVzIGFzCiAJIyB0aGV5IGFyZSBub3QgdW5kZXIgdGhlIHNyYyBkaXJlY3RvcnkuCiAJbG4gLXNmbiAuICIke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYyIKLQlta2RpciAtcCAiJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMvZ2l0aHViLmNvbS9qZXNzZnJhei9uZXRucyIKLQlsbiAtc2ZuICIke1N9L3NyYy9pbXBvcnQvaXBhbGxvY2F0b3IiICIke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYy9naXRodWIuY29tL2plc3NmcmF6L25ldG5zL2lwYWxsb2NhdG9yIgotCWxuIC1zZm4gIiR7U30vc3JjL2ltcG9ydC92ZXJzaW9uIiAiJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMvZ2l0aHViLmNvbS9qZXNzZnJhei9uZXRucy92ZXJzaW9uIgorCW1rZGlyIC1wICIke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYy9naXRodWIuY29tL2dlbnVpbmV0b29scy9uZXRucyIKKwlsbiAtc2ZuICIke1N9L3NyYy9pbXBvcnQvaXBhbGxvY2F0b3IiICIke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYy9naXRodWIuY29tL2dlbnVpbmV0b29scy9uZXRucy9pcGFsbG9jYXRvciIKKwlsbiAtc2ZuICIke1N9L3NyYy9pbXBvcnQvdmVyc2lvbiIgIiR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjL2dpdGh1Yi5jb20vZ2VudWluZXRvb2xzL25ldG5zL3ZlcnNpb24iCiAJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0L3ZlbmRvciIKIAogCSMgUGFzcyB0aGUgbmVlZGVkIGNmbGFncy9sZGZsYWdzIHNvIHRoYXQgY2dvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL2ZpbGVzL3B5dGhvbi1tYWtlLXJlbWFpbmluZy1zY3JpcHRzLXVzZS11c3ItYmluLWVudi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvZmlsZXMvcHl0aG9uLW1ha2UtcmVtYWluaW5nLXNjcmlwdHMtdXNlLXVzci1iaW4tZW52LnBhdGNoCmluZGV4IDQ0NDFjMWUuLmRlZmYxMGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvZmlsZXMvcHl0aG9uLW1ha2UtcmVtYWluaW5nLXNjcmlwdHMtdXNlLXVzci1iaW4tZW52LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvZmlsZXMvcHl0aG9uLW1ha2UtcmVtYWluaW5nLXNjcmlwdHMtdXNlLXVzci1iaW4tZW52LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwNGFkMWMzZDlmNDdjZmRmNGFkOWI1ZDY4NWU5NTNlYzA5NDMyNmZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmMjFhMDQ5MDU1NWQ1ZmU4ZjVhOWNlOTgyZGVmYTY2NmE2NDE1MWMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KIERhdGU6IEZyaSwgMTMgSmFuIDIwMTcgMTY6MTI6NTUgLTA1MDAKIFN1YmplY3Q6IFtQQVRDSF0gcHl0aG9uOiBtYWtlIHJlbWFpbmluZyBzY3JpcHRzIHVzZSAvdXNyL2Jpbi9lbnYKQEAgLTEyLDYgKzEyLDcgQEAKIG1ha2UgdXNlIG9mIC91c3IvYmluL2VudiB0byBpbmNyZWFzZSB0aGUgY2hhbmNlcyBvZiBmaW5kaW5nIHB5dGhvbi4KIAogU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgYnVpbGQtYXV4L2NoZWNrLXN0cnVjdHMgICAgICAgICAgICAgICAgICB8IDIgKy0KICBidWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucyAgICAgICAgICAgIHwgMiArLQpAQCAtMjgsNyArMjksNyBAQAogIDEyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2NoZWNrLXN0cnVjdHMgYi9idWlsZC1hdXgvY2hlY2stc3RydWN0cwotaW5kZXggZjc5ZjIzNS4uYzdiODczMCAxMDA3NTUKK2luZGV4IGY3OWYyMzUuLjUxMjliNzIgMTAwNzU1CiAtLS0gYS9idWlsZC1hdXgvY2hlY2stc3RydWN0cwogKysrIGIvYnVpbGQtYXV4L2NoZWNrLXN0cnVjdHMKIEBAIC0xLDQgKzEsNCBAQApAQCAtMzgsNyArMzksNyBAQAogIGltcG9ydCBvcy5wYXRoCiAgaW1wb3J0IHN5cwogZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKLWluZGV4IDE4NDQ0N2IuLjkyZWExOGQgMTAwNzU1CitpbmRleCAwMDYyYWI4Li5lZThjNGZmIDEwMDc1NQogLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKICsrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTQ4LDcgKzQ5LDcgQEAKICBpbXBvcnQgc3lzCiAgaW1wb3J0IG9zLnBhdGgKIGRpZmYgLS1naXQgYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZXJyb3JzIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWVycm9ycwotaW5kZXggOTY0MjU5My4uMTFlNmRlNyAxMDA3NTUKK2luZGV4IDIzMTJiNzYuLmUzNjQ0NGUgMTAwNzU1CiAtLS0gYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZXJyb3JzCiArKysgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZXJyb3JzCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTU4LDcgKzU5LDcgQEAKICBpbXBvcnQgc3lzCiAgaW1wb3J0IG9zLnBhdGgKIGRpZmYgLS1naXQgYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZmllbGRzIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcwotaW5kZXggNDk4Yjg4Ny4uNWQ2YmNlYyAxMDA3NTUKK2luZGV4IDQ5OGI4ODcuLmMyNDhlNzYgMTAwNzU1CiAtLS0gYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZmllbGRzCiArKysgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZmllbGRzCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTY4LDcgKzY5LDcgQEAKICBpbXBvcnQgZ2V0b3B0CiAgaW1wb3J0IHN5cwogZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1tc2dzIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLW1zZ3MKLWluZGV4IDE4MTM2MzguLmU5ZTNjMjUgMTAwNzU1CitpbmRleCAxODEzNjM4Li5jMmE5MWY5IDEwMDc1NQogLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLW1zZ3MKICsrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1tc2dzCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTc4LDcgKzc5LDcgQEAKICBpbXBvcnQgc3lzCiAgaW1wb3J0IG9zLnBhdGgKIGRpZmYgLS1naXQgYS9idWlsZC1hdXgveG1sMm5yb2ZmIGIvYnVpbGQtYXV4L3htbDJucm9mZgotaW5kZXggYmQ0ZTg3OS4uOWQ4MTUwMyAxMDA3NTUKK2luZGV4IGJkNGU4NzkuLmRiNDVjNTYgMTAwNzU1CiAtLS0gYS9idWlsZC1hdXgveG1sMm5yb2ZmCiArKysgYi9idWlsZC1hdXgveG1sMm5yb2ZmCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTg4LDcgKzg5LDcgQEAKICAjIENvcHlyaWdodCAoYykgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMywgMjAxNCwgMjAxNSwgMjAxNiBOaWNpcmEsIEluYy4KICAjCiBkaWZmIC0tZ2l0IGEvb3ZuL3V0aWxpdGllcy9vdm4tZG9ja2VyLW92ZXJsYXktZHJpdmVyIGIvb3ZuL3V0aWxpdGllcy9vdm4tZG9ja2VyLW92ZXJsYXktZHJpdmVyCi1pbmRleCA1MmRlM2RiLi5jOTBmMDJiIDEwMDc1NQoraW5kZXggNTJkZTNkYi4uM2IxZmE0NSAxMDA3NTUKIC0tLSBhL292bi91dGlsaXRpZXMvb3ZuLWRvY2tlci1vdmVybGF5LWRyaXZlcgogKysrIGIvb3ZuL3V0aWxpdGllcy9vdm4tZG9ja2VyLW92ZXJsYXktZHJpdmVyCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTk4LDcgKzk5LDcgQEAKICAjCiAgIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIGRpZmYgLS1naXQgYS9vdm4vdXRpbGl0aWVzL292bi1kb2NrZXItdW5kZXJsYXktZHJpdmVyIGIvb3ZuL3V0aWxpdGllcy9vdm4tZG9ja2VyLXVuZGVybGF5LWRyaXZlcgotaW5kZXggMmM5YzRiNi4uODliODA0YyAxMDA3NTUKK2luZGV4IDJjOWM0YjYuLjU1MWU3YTEgMTAwNzU1CiAtLS0gYS9vdm4vdXRpbGl0aWVzL292bi1kb2NrZXItdW5kZXJsYXktZHJpdmVyCiArKysgYi9vdm4vdXRpbGl0aWVzL292bi1kb2NrZXItdW5kZXJsYXktZHJpdmVyCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTEwOCw3ICsxMDksNyBAQAogICMKICAjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogZGlmZiAtLWdpdCBhL292c2RiL292c2RiLWRvYyBiL292c2RiL292c2RiLWRvYwotaW5kZXggNWNmMjZlZS4uZjc2ZjRiZCAxMDA3NTUKK2luZGV4IDVjZjI2ZWUuLmJkZjJkY2MgMTAwNzU1CiAtLS0gYS9vdnNkYi9vdnNkYi1kb2MKICsrKyBiL292c2RiL292c2RiLWRvYwogQEAgLTEsNCArMSw0IEBACkBAIC0xNDcsNiArMTQ4LDMgQEAKICAKICAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdmVyc2lvbiAyLjEgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9maWxlcy9weXRob24tc3dpdGNoLXJlbWFpbmluZy1zY3JpcHRzLXRvLXVzZS1weXRob24zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9maWxlcy9weXRob24tc3dpdGNoLXJlbWFpbmluZy1zY3JpcHRzLXRvLXVzZS1weXRob24zLnBhdGNoCmluZGV4IGEwMmIyYTQuLjZhMWI4MzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvZmlsZXMvcHl0aG9uLXN3aXRjaC1yZW1haW5pbmctc2NyaXB0cy10by11c2UtcHl0aG9uMy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL2ZpbGVzL3B5dGhvbi1zd2l0Y2gtcmVtYWluaW5nLXNjcmlwdHMtdG8tdXNlLXB5dGhvbjMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDE3NjUyOGNhM2E4Yjc2YzlkMGJiNzFiMWU1NmVlZWJjY2M2NTVjNzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDM5ZDFhZjgzNmQ4NDRjODllNjI1Y2ZjOTA4NTQ1ZTkzOTc3YWY4YmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAzIE1heSAyMDE3IDEwOjM5OjEyIC0wNDAwCiBTdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbjogc3dpdGNoIHJlbWFpbmluZyBzY3JpcHRzIHRvIHVzZSBweXRob24zCkBAIC02LDYgKzYsNyBAQAogV29yayB0byByZW1vdmUgdGhlIG1haW4gb3BlbnZzd2l0Y2ggcGFja2FnZSdzIGRlcGVuZGVuY3kgb24gcHl0aG9uIDIuCiAKIFNpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CisKIC0tLQogIG9mcHJvdG8vaXBmaXgtZ2VuLWVudGl0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQogIHRlc3RzL3Rlc3QtbDcucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQpAQCAtMTA4LDYgKzEwOSwzIEBACiAgIyBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgTmljaXJhLCBJbmMuCiAgIwogICMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDEtUHl0aG9uMy1jb21wYXRpYmlsaXR5LUNvbnZlcnQtcHJpbnQtc3RhdGVtZW50cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDEtUHl0aG9uMy1jb21wYXRpYmlsaXR5LUNvbnZlcnQtcHJpbnQtc3RhdGVtZW50cy5wYXRjaAppbmRleCBkNjE5NzU4Li43YmRjYzAwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAxLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1Db252ZXJ0LXByaW50LXN0YXRlbWVudHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwMS1QeXRob24zLWNvbXBhdGliaWxpdHktQ29udmVydC1wcmludC1zdGF0ZW1lbnRzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBjNWMxOGY5YzVmMWI3MjE3ZDQzYWY0M2JlOTczNmMxNzYyYzdlYmJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzNjU4ZDg2MWMzYzgzY2FhYjkwNDBiZWMwNGIxOTViZTNmODZkNGNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgMjkgSnVuIDIwMTcgMjA6MzM6MjMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzhdIFB5dGhvbjMgY29tcGF0aWJpbGl0eTogQ29udmVydCBwcmludCBzdGF0ZW1lbnRzCitTdWJqZWN0OiBbUEFUQ0hdIFB5dGhvbjMgY29tcGF0aWJpbGl0eTogQ29udmVydCBwcmludCBzdGF0ZW1lbnRzCiAKIENvbW1pdCBkMzRhMWNjMDI1MzZmOWE4MTI1MTdhNzFhY2NlYzNmYmQzYzZjOThiIGZyb20KIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVudnN3aXRjaC9vdnMuZ2l0CkBAIC0xMSw2ICsxMSw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBCZW4gUGZhZmYgPGJscEBvdm4ub3JnPgorCiAtLS0KICBidWlsZC1hdXgvY2hlY2stc3RydWN0cyAgICAgICB8ICAgNCArLQogIGJ1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zIHwgIDY4ICsrKy0tLQpAQCAtMjIsNyArMjMsNyBAQAogIDcgZmlsZXMgY2hhbmdlZCwgMzA2IGluc2VydGlvbnMoKyksIDMwNSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9jaGVjay1zdHJ1Y3RzIGIvYnVpbGQtYXV4L2NoZWNrLXN0cnVjdHMKLWluZGV4IGY3OWYyMzUuLmJhZTUxMWYgMTAwNzU1CitpbmRleCA1MTI5YjcyLi5jYmIxOWI2IDEwMDc1NQogLS0tIGEvYnVpbGQtYXV4L2NoZWNrLXN0cnVjdHMKICsrKyBiL2J1aWxkLWF1eC9jaGVjay1zdHJ1Y3RzCiBAQCAtMjExLDcgKzIxMSw3IEBAIGRlZiBjaGVja1N0cnVjdHMoKToKQEAgLTQ0LDcgKzQ1LDcgQEAKICAKICAgICAgZ2xvYmFsIGZpbGVOYW1lCiBkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucwotaW5kZXggMDA2MmFiOC4uODc0ZTZiNCAxMDA3NTUKK2luZGV4IGVlOGM0ZmYuLjY3ZTM4NDggMTAwNzU1CiAtLS0gYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucwogKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKIEBAIC02Nyw3ICs2Nyw3IEBAIGRlZiBmYXRhbChtc2cpOgpAQCAtMTg3LDcgKzE4OCw3IEBACiAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgaWYgJy0taGVscCcgaW4gc3lzLmFyZ3Y6CiBkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWVycm9ycyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1lcnJvcnMKLWluZGV4IDIzMTJiNzYuLjMzNmEyNDAgMTAwNzU1CitpbmRleCBlMzY0NDRlLi45N2Q2MmQyIDEwMDc1NQogLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWVycm9ycwogKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWVycm9ycwogQEAgLTQyNiw3ICs0MjYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mcGVycl9kb21haW4gJXMgPSB7CkBAIC0yMDAsNyArMjAxLDcgQEAKICAgICAgICAgICAgICAgICAgcHJpbnQgKCIgICAgICAgIHsgICAgICAgLTEsIC0xLCAgLTEgfSwgLyogJXMgKi8iICUgZW51bSkKICAgICAgICAgIHByaW50ICgiIiJcCiBkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMKLWluZGV4IDQ5OGI4ODcuLjQyNWE4NWYgMTAwNzU1CitpbmRleCBjMjQ4ZTc2Li44MGM3ZDM1IDEwMDc1NQogLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcwogKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcwogQEAgLTcyOCw3ICs3MjgsNyBAQCBkZWYgbWFrZV9vdnNfZmllbGRzKG1ldGFfZmxvd19oLCBtZXRhX2Zsb3dfeG1sKToKQEAgLTIxMyw3ICsyMTQsNyBAQAogICAgICByZWN1cnNpdmVseV9yZXBsYWNlKGRvYywgJ294bV9jbGFzc2VzJywgbWFrZV9veG1fY2xhc3Nlc194bWwoZG9jdW1lbnQpKQogIAogZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1tc2dzIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLW1zZ3MKLWluZGV4IDE4MTM2MzguLmE2N2U4NzAgMTAwNzU1CitpbmRleCBjMmE5MWY5Li45MmM0YmRhIDEwMDc1NQogLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLW1zZ3MKICsrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1tc2dzCiBAQCAtNTYsMTQgKzU2LDE0IEBAIGRlZiBmYXRhbChtc2cpOgpAQCAtMjQxLDcgKzI0Miw3IEBACiArICAgICAgICAgICAgcHJpbnQobGluZSkKICAgICAgICAgIAogZGlmZiAtLWdpdCBhL292c2RiL292c2RiLWRvYyBiL292c2RiL292c2RiLWRvYwotaW5kZXggNWNmMjZlZS4uYjM0ZmIxMSAxMDA3NTUKK2luZGV4IGJkZjJkY2MuLmU4MmFkNTkgMTAwNzU1CiAtLS0gYS9vdnNkYi9vdnNkYi1kb2MKICsrKyBiL292c2RiL292c2RiLWRvYwogQEAgLTI1OCw3ICsyNTgsNyBAQCByZXByZXNlbnQgc3Ryb25nIHJlZmVyZW5jZXM7IHRoaW4gbGluZXMgcmVwcmVzZW50IHdlYWsgcmVmZXJlbmNlcy4KQEAgLTI3MiwxMSArMjczLDExIEBACiAgICAgIGV4Y2VwdCBlcnJvci5FcnJvciwgZToKICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzOiAlc1xuIiAlIChhcmd2MCwgZS5tc2cpKQogZGlmZiAtLWdpdCBhL292c2RiL292c2RiLWlkbGMuaW4gYi9vdnNkYi9vdnNkYi1pZGxjLmluCi1pbmRleCA3MjFhYjUwLi4xMDY0NDQ4IDEwMDc1NQoraW5kZXggYmZiY2YyMy4uNjI0NDJlZSAxMDA3NTUKIC0tLSBhL292c2RiL292c2RiLWlkbGMuaW4KICsrKyBiL292c2RiL292c2RiLWlkbGMuaW4KIEBAIC0xLDUgKzEsNiBAQAotICMhIEBQWVRIT05ACisgIyEgL3Vzci9iaW4vZW52IEBQWVRIT05ACiAgCiArZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogIGltcG9ydCBnZXRvcHQKQEAgLTEyNTksNiArMTI2MCwzIEBACiAgICAgICAgICAgICAgZWxpZiBrZXkgaW4gWyctQycsICctLWRpcmVjdG9yeSddOgogICAgICAgICAgICAgICAgICBvcy5jaGRpcih2YWx1ZSkKICAgICAgICAgICAgICBlbHNlOgotLS0gCi0yLjUuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAxLXVzZS10aGUtbGludXgtaWZfcGFja2V0LmgtSW50ZXJmYWNlLWRpcmVjdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwMS11c2UtdGhlLWxpbnV4LWlmX3BhY2tldC5oLUludGVyZmFjZS1kaXJlY3RseS5wYXRjaAppbmRleCAzNTcxMjQ1Li5mMWY5YmVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAxLXVzZS10aGUtbGludXgtaWZfcGFja2V0LmgtSW50ZXJmYWNlLWRpcmVjdGx5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDEtdXNlLXRoZS1saW51eC1pZl9wYWNrZXQuaC1JbnRlcmZhY2UtZGlyZWN0bHkucGF0Y2gKQEAgLTEsMTcgKzEsMTggQEAKLUZyb20gMWNlYzY1ZTQ1ZjAxMWMzZjUyZWVkNWUyN2QzZDgxNjUwMmUzNjYxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjhiMmQxN2RlOTQxNDE2MWQ1ZWRkNjc3NjZiZDRiNDUyY2Q4MDllZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIwIE1hciAyMDE3IDEyOjEyOjUxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSB1c2UgdGhlIGxpbnV4IGlmX3BhY2tldC5oIEludGVyZmFjZSBkaXJlY3RseQorU3ViamVjdDogW1BBVENIXSB1c2UgdGhlIGxpbnV4IGlmX3BhY2tldC5oIEludGVyZmFjZSBkaXJlY3RseQogCiBIZWxwcyBjb21waWxpbmcgd2l0aCBtdXNsCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIGxpYi9uZXRkZXYtbGludXguYyB8IDMgKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGliL25ldGRldi1saW51eC5jIGIvbGliL25ldGRldi1saW51eC5jCi1pbmRleCBhNWE5ZWMxYWIuLjlkZDQwYWNkZCAxMDA2NDQKK2luZGV4IGZjY2Y4OGYuLmI3MDMxNTYgMTAwNjQ0CiAtLS0gYS9saWIvbmV0ZGV2LWxpbnV4LmMKICsrKyBiL2xpYi9uZXRkZXYtbGludXguYwogQEAgLTMzLDE0ICszMywxMyBAQApAQCAtMzAsNiArMzEsMyBAQAogICNpbmNsdWRlIDxuZXQvcm91dGUuaD4KICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogICNpbmNsdWRlIDxwb2xsLmg+Ci0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAyLURlZmluZS1XQUlUX0FOWS1pZi1ub3QtcHJvdmlkZWQtYnktc3lzdGVtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwMi1EZWZpbmUtV0FJVF9BTlktaWYtbm90LXByb3ZpZGVkLWJ5LXN5c3RlbS5wYXRjaAppbmRleCBlNDRmZmRhLi5mOTk3YmJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAyLURlZmluZS1XQUlUX0FOWS1pZi1ub3QtcHJvdmlkZWQtYnktc3lzdGVtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDItRGVmaW5lLVdBSVRfQU5ZLWlmLW5vdC1wcm92aWRlZC1ieS1zeXN0ZW0ucGF0Y2gKQEAgLTEsMjEgKzEsMjIgQEAKLUZyb20gODAzYmRlMTJkMzJkMTZlZWZlYWUwMzQyMmEwYWM2ODJlMDYwMWM0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODAxMDIzZTcyYjMxZTdjNDljYmNjZWRkNzZhZGUzM2ExN2ZjYmU0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIwIE1hciAyMDE3IDEyOjEzOjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBEZWZpbmUgV0FJVF9BTlkgaWYgbm90IHByb3ZpZGVkIGJ5IHN5c3RlbQorU3ViamVjdDogW1BBVENIXSBEZWZpbmUgV0FJVF9BTlkgaWYgbm90IHByb3ZpZGVkIGJ5IHN5c3RlbQogCiBQT1NJWCBkb2VzIG5vdCBkZWZpbmUgaXQgYW5kIHVzZXMgLTEgZGlyZWN0bHkKIHNvbWUgbGliYyBkbyBub3QgaGF2ZSB0aGlzIGRlZmluaXRpb25zCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHRlc3RzL3Rlc3Qtb3ZuLmMgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS90ZXN0cy90ZXN0LW92bi5jIGIvdGVzdHMvdGVzdC1vdm4uYwotaW5kZXggMmU4MmE2ZjBkLi43NmU3ZGI5ZmIgMTAwNjQ0CitpbmRleCA4NGFkZjgxLi4yYmM2YmRmIDEwMDY0NAogLS0tIGEvdGVzdHMvdGVzdC1vdm4uYwogKysrIGIvdGVzdHMvdGVzdC1vdm4uYwotQEAgLTM3LDYgKzM3LDEwIEBACitAQCAtMzgsNiArMzgsMTAgQEAKICAjaW5jbHVkZSAic2ltYXAuaCIKICAjaW5jbHVkZSAidXRpbC5oIgogIApAQCAtMjYsNiArMjcsMyBAQAogIC8qIC0tcmVsb3BzOiBCaXRtYXAgb2YgdGhlIHJlbGF0aW9uYWwgb3BlcmF0b3JzIHRvIHRlc3QsIGluIGV4aGF1c3RpdmUgdGVzdC4gKi8KICBzdGF0aWMgdW5zaWduZWQgaW50IHRlc3RfcmVsb3BzOwogIAotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwMi1QeXRob24zLWNvbXBhdGliaWxpdHktZXhjZXB0aW9uLWNsZWFudXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAyLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1leGNlcHRpb24tY2xlYW51cC5wYXRjaAppbmRleCA1OWMwZjNlLi43MGFiZDI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAyLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1leGNlcHRpb24tY2xlYW51cC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAyLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1leGNlcHRpb24tY2xlYW51cC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYzk4ZmVlNDFkMTMwY2I5NDZhYTRlNjBmZWZhYTZjYmYyMDNmNjc5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzBiYTExNmVhYjQwMTQzMWI0ZjExYjY2YmQ3ZDFiNDI3NDFiMDNjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDI5IEp1biAyMDE3IDIwOjMzOjIzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi84XSBQeXRob24zIGNvbXBhdGliaWxpdHk6IGV4Y2VwdGlvbiBjbGVhbnVwCitTdWJqZWN0OiBbUEFUQ0hdIFB5dGhvbjMgY29tcGF0aWJpbGl0eTogZXhjZXB0aW9uIGNsZWFudXAKIAogQ29tbWl0IDUyZTRhNDc3ZjBiM2MwYTBlY2U3YWRlZWRlNmUwNmUwNzgxNGY4YjkgZnJvbQogaHR0cHM6Ly9naXRodWIuY29tL29wZW52c3dpdGNoL292cy5naXQKQEAgLTExLDYgKzExLDcgQEAKIAogU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEJlbiBQZmFmZiA8YmxwQG92bi5vcmc+CisKIC0tLQogIGJ1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMgfCAyICstCiAgb3ZzZGIvb3ZzZGItZG9jICAgICAgICAgICAgICB8IDQgKystLQpAQCAtMTgsNyArMTksNyBAQAogIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMKLWluZGV4IDQyNWE4NWYuLjYxZTc1MmIgMTAwNzU1CitpbmRleCA4MGM3ZDM1Li42Mjg2YzljIDEwMDc1NQogLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcwogKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcwogQEAgLTc4NCw3ICs3ODQsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpAQCAtMzEsNyArMzIsNyBAQAogICAgICAgICAgc3lzLmV4aXQoMSkKICAKIGRpZmYgLS1naXQgYS9vdnNkYi9vdnNkYi1kb2MgYi9vdnNkYi9vdnNkYi1kb2MKLWluZGV4IGIzNGZiMTEuLjkxOGU4OGEgMTAwNzU1CitpbmRleCBlODJhZDU5Li45NDQ4NzEzIDEwMDc1NQogLS0tIGEvb3ZzZGIvb3ZzZGItZG9jCiArKysgYi9vdnNkYi9vdnNkYi1kb2MKIEBAIC0yNzgsNyArMjc4LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKQEAgLTUzLDcgKzU0LDcgQEAKICAgICAgICAgIHN5cy5leGl0KDEpCiAgCiBkaWZmIC0tZ2l0IGEvb3ZzZGIvb3ZzZGItaWRsYy5pbiBiL292c2RiL292c2RiLWlkbGMuaW4KLWluZGV4IDEwNjQ0NDguLjhiODVmMGQgMTAwNzU1CitpbmRleCA2MjQ0MmVlLi5lN2UxYzZiIDEwMDc1NQogLS0tIGEvb3ZzZGIvb3ZzZGItaWRsYy5pbgogKysrIGIvb3ZzZGIvb3ZzZGItaWRsYy5pbgogQEAgLTEwOTgsNyArMTA5OCw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CkBAIC03NCw2ICs3NSwzIEBACiAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlczogJXNcbiIgJSAoYXJndjAsIGUpKQogICAgICAgICAgc3lzLmV4aXQoMSkKICAKLS0tIAotMi41LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwMy1QeXRob24zLWNvbXBhdGliaWxpdHktZXhlY2ZpbGUtdG8tZXhlYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDMtUHl0aG9uMy1jb21wYXRpYmlsaXR5LWV4ZWNmaWxlLXRvLWV4ZWMucGF0Y2gKaW5kZXggYTg1OTgwZS4uOThkNzdjOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwMy1QeXRob24zLWNvbXBhdGliaWxpdHktZXhlY2ZpbGUtdG8tZXhlYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAzLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1leGVjZmlsZS10by1leGVjLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5Y2JhZTg2YmUwMzc1NmRmNzY1NjBjMTU3MjA3NTZmOWFjMDg4MTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4NTU3ZDUxZThjNzMyNWExNzIxOTkxMWU5YTY1ZWViMzk0NmU4NjlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgMjkgSnVuIDIwMTcgMjA6MzM6MjMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzhdIFB5dGhvbjMgY29tcGF0aWJpbGl0eTogZXhlY2ZpbGUgdG8gZXhlYworU3ViamVjdDogW1BBVENIXSBQeXRob24zIGNvbXBhdGliaWxpdHk6IGV4ZWNmaWxlIHRvIGV4ZWMKIAogQ29tbWl0IGE0ZDEwYTdjYTkzN2Q3Mzg3M2Y2Zjk4NjE5ZDg4NjgyZTY5ZjVkYmUgZnJvbQogaHR0cHM6Ly9naXRodWIuY29tL29wZW52c3dpdGNoL292cy5naXQKQEAgLTExLDEyICsxMSwxMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogQmVuIFBmYWZmIDxibHBAb3ZuLm9yZz4KKwogLS0tCiAgb3ZzZGIvb3ZzZGItaWRsYy5pbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL292c2RiL292c2RiLWlkbGMuaW4gYi9vdnNkYi9vdnNkYi1pZGxjLmluCi1pbmRleCA4Yjg1ZjBkLi4zZmExYTBmIDEwMDc1NQoraW5kZXggZTdlMWM2Yi4uZTE1NTFmOSAxMDA3NTUKIC0tLSBhL292c2RiL292c2RiLWlkbGMuaW4KICsrKyBiL292c2RiL292c2RiLWlkbGMuaW4KIEBAIC0xNyw3ICsxNyw3IEBAIGRlZiBwYXJzZVNjaGVtYShmaWxlbmFtZSk6CkBAIC0yOCw2ICsyOSwzIEBACiAgICAgIG92cy5qc29uLnRvX3N0cmVhbShzY2hlbWFKc29uLCBzeXMuc3Rkb3V0KQogICAgICBzeXMuc3Rkb3V0LndyaXRlKCdcbicpCiAgCi0tLSAKLTIuNS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDQtUHl0aG9uMy1jb21wYXRpYmlsaXR5LWl0ZXJpdGVtcy10by1pdGVtcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDQtUHl0aG9uMy1jb21wYXRpYmlsaXR5LWl0ZXJpdGVtcy10by1pdGVtcy5wYXRjaAppbmRleCBkZGM4NmRiLi4wOTJjNDJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA0LVB5dGhvbjMtY29tcGF0aWJpbGl0eS1pdGVyaXRlbXMtdG8taXRlbXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNC1QeXRob24zLWNvbXBhdGliaWxpdHktaXRlcml0ZW1zLXRvLWl0ZW1zLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAwZjMxOGU0NzJkOTg5N2Q5OTM5NWFkY2ZiMTdjYmVhZmYwNTY3N2JhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3ZTRiZDVjMmFmODViMTI5M2JlMGE5MmIxOGY3OTMwYmRhMmFiNDFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgMjkgSnVuIDIwMTcgMjA6MzM6MjMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzhdIFB5dGhvbjMgY29tcGF0aWJpbGl0eTogaXRlcml0ZW1zIHRvIGl0ZW1zCitTdWJqZWN0OiBbUEFUQ0hdIFB5dGhvbjMgY29tcGF0aWJpbGl0eTogaXRlcml0ZW1zIHRvIGl0ZW1zCiAKIENvbW1pdCA0YWI2NjU2MjNjYmI0YzY1MDZlNDhiODJlMGM5ZmU4NTg1ZjQyZTEzIGZyb20KIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVudnN3aXRjaC9vdnMuZ2l0CkBAIC0xMSw2ICsxMSw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBCZW4gUGZhZmYgPGJscEBvdm4ub3JnPgorCiAtLS0KICBidWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucyB8IDIgKy0KICBidWlsZC1hdXgvZXh0cmFjdC1vZnAtZXJyb3JzICB8IDIgKy0KQEAgLTE5LDcgKzIwLDcgQEAKICA0IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKLWluZGV4IDg3NGU2YjQuLmMxMTI5N2MgMTAwNzU1CitpbmRleCA2N2UzODQ4Li5jNzg1OGJkIDEwMDc1NQogLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKICsrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zCiBAQCAtMTMsNyArMTMsNyBAQCB2ZXJzaW9uX21hcCA9IHsiMS4wIjogMHgwMSwKQEAgLTMyLDcgKzMzLDcgQEAKICAjIE1hcCBmcm9tIHZlbmRvciBuYW1lIHRvIHRoZSBsZW5ndGggb2YgdGhlIGFjdGlvbiBoZWFkZXIuCiAgdmVuZG9yX21hcCA9IHsiT0YiOiAoMHgwMDAwMDAwMCwgIDQpLAogZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1lcnJvcnMgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZXJyb3JzCi1pbmRleCAzMzZhMjQwLi43MWFlMGJkIDEwMDc1NQoraW5kZXggOTdkNjJkMi4uNThiYTAwNiAxMDA3NTUKIC0tLSBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1lcnJvcnMKICsrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1lcnJvcnMKIEBAIC0xNCw3ICsxNCw3IEBAIHZlcnNpb25fbWFwID0geyIxLjAiOiAweDAxLApAQCAtNDUsNyArNDYsNyBAQAogIHRva2VuID0gTm9uZQogIGxpbmUgPSAiIgogZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZmllbGRzCi1pbmRleCA2MWU3NTJiLi5lZjk5N2RkIDEwMDc1NQoraW5kZXggNjI4NmM5Yy4uZjYyNDcyOCAxMDA3NTUKIC0tLSBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMKICsrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMKIEBAIC0xNiw3ICsxNiw3IEBAIFZFUlNJT04gPSB7IjEuMCI6IDB4MDEsCkBAIC01OCw3ICs1OSw3IEBACiAgVFlQRVMgPSB7InU4IjogICAgICAgKDEsICAgRmFsc2UpLAogICAgICAgICAgICJiZTE2IjogICAgICgyLCAgIEZhbHNlKSwKIGRpZmYgLS1naXQgYS9vdnNkYi9vdnNkYi1pZGxjLmluIGIvb3ZzZGIvb3ZzZGItaWRsYy5pbgotaW5kZXggM2ZhMWEwZi4uNjE1NTQ4ZiAxMDA3NTUKK2luZGV4IGUxNTUxZjkuLmI3MGE1OTkgMTAwNzU1CiAtLS0gYS9vdnNkYi9vdnNkYi1pZGxjLmluCiArKysgYi9vdnNkYi9vdnNkYi1pZGxjLmluCiBAQCAtMTM4LDcgKzEzOCw3IEBAIGRlZiBwcmludENJRExIZWFkZXIoc2NoZW1hRmlsZSk6CkBAIC05Nyw2ICs5OCwzIEBACiAgICAgICAgICBzdHJ1Y3ROYW1lID0gIiVzJXMiICUgKHByZWZpeCwgdGFibGVOYW1lLmxvd2VyKCkpCiAgICAgICAgICBpZiB0YWJsZS5pc19yb290OgogICAgICAgICAgICAgIGlzX3Jvb3QgPSAidHJ1ZSIKLS0tIAotMi41LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNS1QeXRob24zLWNvbXBhdGliaWxpdHktZml4LWludGVnZXItcHJvYmxlbXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA1LVB5dGhvbjMtY29tcGF0aWJpbGl0eS1maXgtaW50ZWdlci1wcm9ibGVtcy5wYXRjaAppbmRleCA3MTdhOTdkLi5kNmY5MzY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA1LVB5dGhvbjMtY29tcGF0aWJpbGl0eS1maXgtaW50ZWdlci1wcm9ibGVtcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA1LVB5dGhvbjMtY29tcGF0aWJpbGl0eS1maXgtaW50ZWdlci1wcm9ibGVtcy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYmMyOWY5OGYwMTM3ZmExMDgzYTRjYWNmODMyZDUyZjc0MGQxNTBhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDIyYzdmMWM2YWRlODJhMGNkNjQ2Y2ZjZDhkZjlhZGRhNmNkMWFkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDI5IEp1biAyMDE3IDIwOjMzOjIzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNS84XSBQeXRob24zIGNvbXBhdGliaWxpdHk6IGZpeCBpbnRlZ2VyIHByb2JsZW1zCitTdWJqZWN0OiBbUEFUQ0hdIFB5dGhvbjMgY29tcGF0aWJpbGl0eTogZml4IGludGVnZXIgcHJvYmxlbXMKIAogQ29tbWl0IGZhMTQ1ZjFhNTM5NDMyNDNmOTRhMzJjZTk4NTI1ZGI4NDk0YjAwNTIgZnJvbQogaHR0cHM6Ly9naXRodWIuY29tL29wZW52c3dpdGNoL292cy5naXQKQEAgLTE1LDEzICsxNSwxNCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogQmVuIFBmYWZmIDxibHBAb3ZuLm9yZz4KKwogLS0tCiAgb3ZzZGIvb3ZzZGItaWRsYy5pbiAgIHwgMiArLQogIHB5dGhvbi9idWlsZC9ucm9mZi5weSB8IDIgKysKICAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvb3ZzZGIvb3ZzZGItaWRsYy5pbiBiL292c2RiL292c2RiLWlkbGMuaW4KLWluZGV4IDYxNTU0OGYuLjdjYmNiZjUgMTAwNzU1CitpbmRleCBiNzBhNTk5Li4zNjQ1Mjc1IDEwMDc1NQogLS0tIGEvb3ZzZGIvb3ZzZGItaWRsYy5pbgogKysrIGIvb3ZzZGIvb3ZzZGItaWRsYy5pbgogQEAgLTM1OCw3ICszNTgsNyBAQCBzdGF0aWMgdm9pZApAQCAtNDYsNiArNDcsMyBAQAogICAgICBleHRlbmQgPSB4ICsgbGVuKHMpIC0gbGVuKHRleHRbeV0pCiAgICAgIGlmIGV4dGVuZCA+IDA6CiAgICAgICAgICB0ZXh0W3ldICs9ICcgJyAqIGV4dGVuZAotLS0gCi0yLjUuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA2LVB5dGhvbjMtY29tcGF0aWJpbGl0eS1tYXRoLWVycm9yLWNvbXBhdGliaWxpdHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA2LVB5dGhvbjMtY29tcGF0aWJpbGl0eS1tYXRoLWVycm9yLWNvbXBhdGliaWxpdHkucGF0Y2gKaW5kZXggNTQ5MDVjZC4uYzUzNTAyYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNi1QeXRob24zLWNvbXBhdGliaWxpdHktbWF0aC1lcnJvci1jb21wYXRpYmlsaXR5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDYtUHl0aG9uMy1jb21wYXRpYmlsaXR5LW1hdGgtZXJyb3ItY29tcGF0aWJpbGl0eS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gM2E5ZmNmMWM4ZjYwYzE2MGMyODJjOTc1NWVlMWM3ZjlmN2UxMTNjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2Y1NDIxMjJkNjJiMjBkMTExOThiZmRiMGYyYzZhNDYwMjYxYjVlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDI5IEp1biAyMDE3IDIwOjMzOjIzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNi84XSBQeXRob24zIGNvbXBhdGliaWxpdHk6IG1hdGggZXJyb3IgY29tcGF0aWJpbGl0eQorU3ViamVjdDogW1BBVENIXSBQeXRob24zIGNvbXBhdGliaWxpdHk6IG1hdGggZXJyb3IgY29tcGF0aWJpbGl0eQogCiBDb21taXQgM2ZhNWFhNDI5NDM3N2UwZjM1MjY3OTM2ZDBjNWNhZWEzZTYxZGI0OCBmcm9tCiBodHRwczovL2dpdGh1Yi5jb20vb3BlbnZzd2l0Y2gvb3ZzLmdpdApAQCAtMzQsMTIgKzM0LDEzIEBACiAKIFNpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBCZW4gUGZhZmYgPGJscEBvdm4ub3JnPgorCiAtLS0KICBidWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKLWluZGV4IGMxMTI5N2MuLmJkNzEzMWYgMTAwNzU1CitpbmRleCBjNzg1OGJkLi40ZDA1ZWY5IDEwMDc1NQogLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKICsrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zCiBAQCAtMzUsNyArMzUsNyBAQCBsaW5lID0gIiIKQEAgLTUxLDYgKzUyLDMgQEAKICAKICBkZWYgb3Blbl9maWxlKGZuKToKICAgICAgZ2xvYmFsIGZpbGVfbmFtZQotLS0gCi0yLjUuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA3LVB5dGhvbjMtY29tcGF0aWJpbGl0eS11bmljb2RlLXRvLXN0ci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDctUHl0aG9uMy1jb21wYXRpYmlsaXR5LXVuaWNvZGUtdG8tc3RyLnBhdGNoCmluZGV4IGZhYTMyYjcuLjc1MzQ5MGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDctUHl0aG9uMy1jb21wYXRpYmlsaXR5LXVuaWNvZGUtdG8tc3RyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDctUHl0aG9uMy1jb21wYXRpYmlsaXR5LXVuaWNvZGUtdG8tc3RyLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAyZmU1OGY4N2IwMGQwZWMyNGQ2OTk3OTMwZDBiY2RiMTMwYzg0Mzk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjNzhiMzlhZTliYTYzMzcyMTBkNmE5ZTRjY2M0NzUzY2IxYzNiNDhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgMjkgSnVuIDIwMTcgMjA6MzM6MjMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA3LzhdIFB5dGhvbjMgY29tcGF0aWJpbGl0eTogdW5pY29kZSB0byBzdHIKK1N1YmplY3Q6IFtQQVRDSF0gUHl0aG9uMyBjb21wYXRpYmlsaXR5OiB1bmljb2RlIHRvIHN0cgogCiBDb21taXQgNzQzMDk1OWQ0YWQxN2RiODliODM4N2MzYWVmNThjOGIyMzBjYWQxMCBmcm9tCiBodHRwczovL2dpdGh1Yi5jb20vb3BlbnZzd2l0Y2gvb3ZzLmdpdApAQCAtMTksMTIgKzE5LDEzIEBACiAKIFNpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBCZW4gUGZhZmYgPGJscEBvdm4ub3JnPgorCiAtLS0KICBvdnNkYi9vdnNkYi1kb2MgfCAxMiArKysrKysrKystLS0KICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvb3ZzZGIvb3ZzZGItZG9jIGIvb3ZzZGIvb3ZzZGItZG9jCi1pbmRleCA5MThlODhhLi40MDZjMjkzIDEwMDc1NQoraW5kZXggOTQ0ODcxMy4uZDU1YzZlNiAxMDA3NTUKIC0tLSBhL292c2RiL292c2RiLWRvYwogKysrIGIvb3ZzZGIvb3ZzZGItZG9jCiBAQCAtNjUsOSArNjUsMTUgQEAgZGVmIGNvbHVtbkdyb3VwVG9Ocm9mZih0YWJsZSwgZ3JvdXBYbWwsIGRvY3VtZW50ZWRfY29sdW1ucyk6CkBAIC00Niw2ICs0NywzIEBACiAgICAgICAgICAgICAgICAgICAgICB0eXBlXyA9IG92cy5kYi50eXBlcy5CYXNlVHlwZS5mcm9tX2pzb24odHlwZV9qc29uKQogICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgdHlwZV8gPSBjb2x1bW4udHlwZS52YWx1ZQotLS0gCi0yLjUuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDA4LUFVVEhPUlMtQWRkLUphc29uLVdlc3NlbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDgtQVVUSE9SUy1BZGQtSmFzb24tV2Vzc2VsLnBhdGNoCmluZGV4IGQyYzJiZTcuLmY1NWE1Y2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDgtQVVUSE9SUy1BZGQtSmFzb24tV2Vzc2VsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDgtQVVUSE9SUy1BZGQtSmFzb24tV2Vzc2VsLnBhdGNoCkBAIC0xLDEyICsxLDEzIEBACi1Gcm9tIGEzMjg5YWRkODM2OGUwYzk3MGFlMWMxYzg0ZjVkZjFmODE3ZWQ0M2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY4NDkxNjQ1NDE2OTUyYjMxMDAwZjQyNzc3ZmY3OTQ4NmE3YjA1MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBCZW4gUGZhZmYgPGJscEBvdm4ub3JnPgogRGF0ZTogVGh1LCA2IEp1bCAyMDE3IDE0OjAxOjI3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggOC84XSBBVVRIT1JTOiBBZGQgSmFzb24gV2Vzc2VsLgorU3ViamVjdDogW1BBVENIXSBBVVRIT1JTOiBBZGQgSmFzb24gV2Vzc2VsLgogCiBDb21taXQgYTkxYzRjZmFmODYzNzE4YmM5NGZiOWM4ODkzOWJkMGIwMzg1YTZmZSBmcm9tCiBodHRwczovL2dpdGh1Yi5jb20vb3BlbnZzd2l0Y2gvb3ZzLmdpdAogCiBTaWduZWQtb2ZmLWJ5OiBCZW4gUGZhZmYgPGJscEBvdm4ub3JnPgorCiAtLS0KICBBVVRIT1JTLnJzdCB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQpAQCAtMjMsNiArMjQsMyBAQAogIEphc3BlciBDYXBlbCAgICAgICAgICAgICAgICAgICAgamFzcGVyQGNhcGVsLnR2CiAgSmVhbiBUb3VycmlsaGVzICAgICAgICAgICAgICAgICBqdEBocGwuaHAuY29tCiAgSmVyZW15IFN0cmlibGluZyAgICAgICAgICAgICAgICBzdHJpYkBuaWNpcmEuY29tCi0tLSAKLTIuNS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0L0NWRS0yMDE3LTkyNjMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC9DVkUtMjAxNy05MjYzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmMzYWExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0L0NWRS0yMDE3LTkyNjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1BIGJ1Z2d5IG9yIG1hbGljaW91cyBzd2l0Y2ggY291bGQgc2VuZCBhIHJvbGUgc3RhdHVzIG1lc3NhZ2Ugd2l0aCBhIGJhZAotcmVhc29uIGNvZGUsIHdoaWNoIGlmIHByaW50ZWQgYnkgT1ZTIHdvdWxkIGNhdXNlIGl0IHRvIGFib3J0LiAgVGhpcyBmaXhlcwotdGhlIHByb2JsZW0uCi0KLUNWRTogQ1ZFLTIwMTctOTI2MwotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotUmVwb3J0ZWQtYnk6IEJoYXJnYXZhIFNoYXN0cnkgPGJzaGFzdHJ5IGF0IHNlYy50LWxhYnMudHUtYmVybGluLmRlPgotU2lnbmVkLW9mZi1ieTogQmVuIFBmYWZmIDxibHAgYXQgb3ZuLm9yZz4KLS0tLQotIGxpYi9vZnAtcHJpbnQuYyB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL29mcC1wcmludC5jIGIvbGliL29mcC1wcmludC5jCi1pbmRleCA3Y2E5NTMxMDA1MzkuLjE5MzJiYWY0ODcxZiAxMDA2NDQKLS0tLSBhL2xpYi9vZnAtcHJpbnQuYwotKysrIGIvbGliL29mcC1wcmludC5jCi1AQCAtMjE0Nyw3ICsyMTQ3LDggQEAgb2ZwX3ByaW50X3JvbGVfc3RhdHVzX21lc3NhZ2Uoc3RydWN0IGRzICpzdHJpbmcsIGNvbnN0IHN0cnVjdCBvZnBfaGVhZGVyICpvaCkKLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIE9GUENSUl9OX1JFQVNPTlM6Ci0gICAgIGRlZmF1bHQ6Ci0tICAgICAgICBPVlNfTk9UX1JFQUNIRUQoKTsKLSsgICAgICAgIGRzX3B1dF9jc3RyKHN0cmluZywgIih1bmtub3duKSIpOwotKyAgICAgICAgYnJlYWs7Ci0gICAgIH0KLSB9Ci0gCi0tLSAKLTIuMTAuMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvZGlzYWJsZV9tNF9jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0L2Rpc2FibGVfbTRfY2hlY2sucGF0Y2gKaW5kZXggMWFkNWQ2Zi4uNWM4NmFhYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvZGlzYWJsZV9tNF9jaGVjay5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC9kaXNhYmxlX200X2NoZWNrLnBhdGNoCkBAIC0xLDEzICsxLDE5IEBACi1EaXNhYmxlIG00IGZpbGUgdGVzdCB3aGVyZSBzb3VyY2VzIGFyZSBidWlsdCBmcm9tIGdpdC4KK0Zyb20gZjY3NWQ3MjA5Zjk5OWNlODBjYjQyNDljNGViYjIxNjY5NzM4N2I3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFteSBGb25nIDxhbXkuZm9uZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyOSBKYW4gMjAxNSAwOTo1NjowMyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIG00IGZpbGUgdGVzdCB3aGVyZSBzb3VyY2VzIGFyZSBidWlsdCBmcm9tIGdpdC4KIAogU2lnbmVkLW9mZi1ieTogQW15IEZvbmcgPGFteS5mb25nQHdpbmRyaXZlci5jb20+CisKIC0tLQotIE1ha2VmaWxlLmFtIHwgICAgMiArLQorIE1ha2VmaWxlLmFtIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggZmY3ZDcwYS4uMmZjMWYxMyAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmFtCiArKysgYi9NYWtlZmlsZS5hbQotQEAgLTE4NSw3ICsxODUsNyBAQAorQEAgLTE4OSw3ICsxODksNyBAQCBDTEVBTl9MT0NBTCArPSBjbGVhbi1weWNvdgogICMgTWFrZWZpbGUgaW4gZGF0YXBhdGgvbGludXgsIG5lZWRlZCB0byBnZXQgdGhlIGxpc3Qgb2YgZmlsZXMgdG8KICAjIGRpc3RyaWJ1dGUsIHJlcXVpcmVzIEdOVSBtYWtlIGV4dGVuc2lvbnMuCiAgaWYgR05VX01BS0UKQEAgLTE1LDQgKzIxLDQgQEAKICsjIEFMTF9MT0NBTCArPSBkaXN0LWhvb2stZ2l0CiAgZGlzdC1ob29rLWdpdDogZGlzdGZpbGVzCiAgCUBpZiB0ZXN0IC1lICQoc3JjZGlyKS8uZ2l0ICYmIChnaXQgLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAotIAkgIChjZCBkYXRhcGF0aCAmJiAkKE1BS0UpIGRpc3RmaWxlcyk7CQkJCSAgICBcCisgCSAgKGNkIGRhdGFwYXRoICYmICQoTUFLRSkgZGlzdGZpbGVzKTsgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQva2VybmVsX21vZHVsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0L2tlcm5lbF9tb2R1bGUucGF0Y2gKaW5kZXggMDMzY2ZiOC4uYzE3NzIwMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQva2VybmVsX21vZHVsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC9rZXJuZWxfbW9kdWxlLnBhdGNoCkBAIC0xLDEzICsxLDE5IEBACi1TcGVjaWZ5IGluc3RhbGwgcGF0aCBmb3Iga2VybmVsIG1vZHVsZQorRnJvbSBhZGZkMjM4MGQ3MWRmZjFhMzFlZmFmNjNjZjdhYzk3NDcwNDY2ZWM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW15IEZvbmcgPGFteS5mb25nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IEphbiAyMDE1IDA5OjU2OjAzIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIFNwZWNpZnkgaW5zdGFsbCBwYXRoIGZvciBrZXJuZWwgbW9kdWxlCiAKIFNpZ25lZC1vZmYtYnk6IEFteSBGb25nIDxhbXkuZm9uZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZGF0YXBhdGgvbGludXgvTWFrZWZpbGUubWFpbi5pbiB8ICAgIDQgKystLQotIDEgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCistLS0KKyBkYXRhcGF0aC9saW51eC9NYWtlZmlsZS5tYWluLmluIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RhdGFwYXRoL2xpbnV4L01ha2VmaWxlLm1haW4uaW4gYi9kYXRhcGF0aC9saW51eC9NYWtlZmlsZS5tYWluLmluCitpbmRleCA3ZDE4MjUzLi42M2M1MjBmIDEwMDY0NAogLS0tIGEvZGF0YXBhdGgvbGludXgvTWFrZWZpbGUubWFpbi5pbgogKysrIGIvZGF0YXBhdGgvbGludXgvTWFrZWZpbGUubWFpbi5pbgotQEAgLTcxLDggKzcxLDggQEAKK0BAIC03MSw4ICs3MSw4IEBAIGRlZmF1bHQ6CiAgCSQoTUFLRSkgLUMgJChLU1JDKSBNPSQoYnVpbGRkaXIpIG1vZHVsZXMKICAKICBtb2R1bGVzX2luc3RhbGw6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC9vcGVudnN3aXRjaC1hZGQtcHRlc3QtYjI5Y2I4OWU5ZTlmZTMxMTliMmU1ZGQ1ZDRmYjc5MTQxNjM1YjdjYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0L29wZW52c3dpdGNoLWFkZC1wdGVzdC1iMjljYjg5ZTllOWZlMzExOWIyZTVkZDVkNGZiNzkxNDE2MzViN2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2M4MWRkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0L29wZW52c3dpdGNoLWFkZC1wdGVzdC1iMjljYjg5ZTllOWZlMzExOWIyZTVkZDVkNGZiNzkxNDE2MzViN2NjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLUZyb20gYTJhNjU2ZTY5NzZhNjBlNWRmM2FkZTBkMTdhNDBiNGViZGMyYjQxYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDMwIE1hciAyMDE2IDA2OjIzOjQ1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIG9wZW52c3dpdGNoOiBBZGQgdGVzdC1pbnN0YWxsIHJ1bGUgdG8gc3VwcG9ydCBwdGVzdCBleGVjdXRpb24KLQotU2lnbmVkLW9mZi1ieTogUmFkdSBQYXRyaXUgPHJhZHUucGF0cml1QGVuZWEuY29tPgotCi1GaXggcHRlc3QgZm9yIHYyLjUKLSAtIENvcHkgY2VydGFpbiBmaWxlcyBmcm9tIHNyY2RpciBzaW5jZSBpdCBoYXMgYmVlbiBkaWZmZXJlbnQgZnJvbQotICAgYnVpbGQgZGlyZWN0b3J5LgotIC0gQ29weSBtb3JlIG5lY2Vzc2FyeSBmaWxlcyBmb3IgbmV3IGFkZGVkIHRlc3QgY2FzZXMuCi0gLSBNb2RpZnkgY29uZmlnIGZpbGVzIGZvciBydW5uaW5nIG9uIHRhcmdldC4KLQotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtIHwgIDEgKwotIHRlc3QubWsgICAgIHwgNzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNzMgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0Lm1rCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBhNGRkN2I4Li4wYmQzMmM3IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNDI5LDMgKzQyOSw0IEBAIGluY2x1ZGUgd2luZG93cy9hdXRvbWFrZS5tawotIGluY2x1ZGUgb3ZuL2F1dG9tYWtlLm1rCi0gaW5jbHVkZSBzZWxpbnV4L2F1dG9tYWtlLm1rCi0gaW5jbHVkZSBidWlsZC1hdXgvYXV0b21ha2UubWsKLStpbmNsdWRlIHRlc3QubWsKLWRpZmYgLS1naXQgYS90ZXN0Lm1rIGIvdGVzdC5tawotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmIxMGE1ODEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3QubWsKLUBAIC0wLDAgKzEsNzIgQEAKLStURVNUX0RFU1QgPz0gJHtwcmVmaXh9L2xpYi9vcGVudnN3aXRjaAotK1RFU1RfUk9PVCA/PSAke3ByZWZpeH0vbGliL29wZW52c3dpdGNoCi0rVEVTVF9ERVBFTkQgPQotKwotK2lmIEhBVkVfT1BFTlNTTAotK1RFU1RfREVQRU5EICs9ICQoVEVTVFBLSV9GSUxFUykKLStlbmRpZgotKwotK3Rlc3QtaW5zdGFsbDogJChURVNUX0RFUEVORCkKLSsJQGxpc3Q9JyQobm9pbnN0X1BST0dSQU1TKSAkKEVYVFJBX0RJU1QpICQoZGlzdF9jaGVja19TQ1JJUFRTKSAkKFRFU1RfREVQRU5EKSB0ZXN0cy9hdGxvY2FsIHRlc3RzL2F0Y29uZmlnJyA7XAotKwlpbnN0YWxsIC1kICQoVEVTVF9ERVNUKS90ZXN0cyA7XAotKwlpbnN0YWxsICQoc3JjZGlyKS92dGVwL292cy12dGVwICQoVEVTVF9ERVNUKS90ZXN0cyA7XAotKwlpbnN0YWxsIC1kICQoVEVTVF9ERVNUKS9weXRob24gO1wKLSsJaW5zdGFsbCAtZCAkKFRFU1RfREVTVCkvcHl0aG9uL292cyA7XAotKwlpbnN0YWxsIC1kICQoVEVTVF9ERVNUKS9weXRob24vb3ZzL2RiIDtcCi0rCWluc3RhbGwgLWQgJChURVNUX0RFU1QpL3B5dGhvbi9vdnMvdW5peGN0bCA7XAotKwlpbnN0YWxsIC1kICQoVEVTVF9ERVNUKS92c3dpdGNoZCA7XAotKwlpbnN0YWxsICQoc3JjZGlyKS92c3dpdGNoZC92c3dpdGNoLm92c3NjaGVtYSAkKFRFU1RfREVTVCkvdnN3aXRjaGQgO1wKLSsJaW5zdGFsbCB2c3dpdGNoZC9vdnMtdnN3aXRjaGQgJChURVNUX0RFU1QpL3Zzd2l0Y2hkIDtcCi0rCWluc3RhbGwgLWQgJChURVNUX0RFU1QpL2RlYmlhbiA7XAotKwlpbnN0YWxsICQoc3JjZGlyKS9kZWJpYW4vb3ZzLW1vbml0b3ItaXBzZWMgJChURVNUX0RFU1QpL2RlYmlhbiA7XAotKwlpbnN0YWxsIC1kICQoVEVTVF9ERVNUKS9idWlsZC1hdXggO1wKLSsJaW5zdGFsbCAkKHNyY2RpcikvYnVpbGQtYXV4L2NoZWNrLXN0cnVjdHMgJChURVNUX0RFU1QpL2J1aWxkLWF1eCA7XAotKwlpbnN0YWxsIC1kICQoVEVTVF9ERVNUKS94ZW5zZXJ2ZXIgO1wKLSsJaW5zdGFsbCAkKHNyY2RpcikveGVuc2VydmVyL3Vzcl9zaGFyZV9vcGVudnN3aXRjaF9zY3JpcHRzX292cy14YXBpLXN5bmMgJChURVNUX0RFU1QpL3hlbnNlcnZlciA7XAotKwlpbnN0YWxsICQoc3JjZGlyKS94ZW5zZXJ2ZXIvb3B0X3hlbnNvdXJjZV9saWJleGVjX2ludGVyZmFjZS1yZWNvbmZpZ3VyZSAkKFRFU1RfREVTVCkveGVuc2VydmVyIDtcCi0rCWluc3RhbGwgJChzcmNkaXIpL3hlbnNlcnZlci9vcHRfeGVuc291cmNlX2xpYmV4ZWNfSW50ZXJmYWNlUmVjb25maWd1cmUucHkgJChURVNUX0RFU1QpL3hlbnNlcnZlciA7XAotKwlpbnN0YWxsICQoc3JjZGlyKS94ZW5zZXJ2ZXIvb3B0X3hlbnNvdXJjZV9saWJleGVjX0ludGVyZmFjZVJlY29uZmlndXJlQnJpZGdlLnB5ICQoVEVTVF9ERVNUKS94ZW5zZXJ2ZXIgO1wKLSsJaW5zdGFsbCAkKHNyY2RpcikveGVuc2VydmVyL29wdF94ZW5zb3VyY2VfbGliZXhlY19JbnRlcmZhY2VSZWNvbmZpZ3VyZVZzd2l0Y2gucHkgJChURVNUX0RFU1QpL3hlbnNlcnZlciA7XAotKwlpbnN0YWxsIC1kICQoVEVTVF9ERVNUKS92dGVwIDtcCi0rCWluc3RhbGwgJChzcmNkaXIpL3Z0ZXAvdnRlcC5vdnNzY2hlbWEgJChURVNUX0RFU1QpL3Z0ZXAgO1wKLSsJaW5zdGFsbCAtZCAkKFRFU1RfREVTVCkvb3ZuIDtcCi0rCWluc3RhbGwgJChzcmNkaXIpL292bi9vdm4tbmIub3Zzc2NoZW1hICQoVEVTVF9ERVNUKS9vdm4gO1wKLSsJaW5zdGFsbCAkKHNyY2Rpcikvb3ZuL292bi1zYi5vdnNzY2hlbWEgJChURVNUX0RFU1QpL292biA7XAotKwlpbnN0YWxsIC1kICQoVEVTVF9ERVNUKS91dGlsaXRpZXMgO1wKLSsJaW5zdGFsbCAkKHNyY2RpcikvdXRpbGl0aWVzL292cy1wY2FwLmluICQoVEVTVF9ERVNUKS91dGlsaXRpZXMgO1wKLSsJaW5zdGFsbCAkKHNyY2RpcikvdXRpbGl0aWVzL292cy1wa2kuaW4gJChURVNUX0RFU1QpL3V0aWxpdGllcyA7XAotKwlmb3IgcCBpbiAkJGxpc3QgOyBkbyBcCi0rCSAgZWNobyAkJHAgO1wKLSsJICBwPSQke3AjLi4vZ2l0L30gO1wKLSsJICBwcmU9JCR7cCN0ZXN0c1wvfSA7XAotKwkgIGlmIHRlc3QgJCRwcmUgIT0gJCRwIDsgdGhlbiBcCi0rCSAgICBlY2hvIGluc3RhbGxpbmcgJCRwIHRvICQoVEVTVF9ERVNUKS90ZXN0cy8kJHByZSA7XAotKwkgICAgaWYgdGVzdCAtZiAkJHAgOyB0aGVuIFwKLSsJICAgICAgaW5zdGFsbCAkJHAgJChURVNUX0RFU1QpL3Rlc3RzLyQkcHJlIDtcCi0rCSAgICBlbHNlIFwKLSsJICAgICAgaW5zdGFsbCAkKHNyY2RpcikvJCRwICQoVEVTVF9ERVNUKS90ZXN0cy8kJHByZSA7XAotKwkgICAgZmkgO1wKLSsJICAgIGNvbnRpbnVlIDtcCi0rCSAgZmkgO1wKLSsJICBwcmU9JCR7cCNweXRob25cL292c1wvfSA7XAotKwkgIGlmIHRlc3QgJCRwcmUgIT0gJCRwIDsgdGhlbiBcCi0rCSAgICBlY2hvIGluc3RhbGxpbmcgJCRwIHRvICQoVEVTVF9ERVNUKS9weXRob24vb3ZzLyQkcHJlIDtcCi0rCSAgICBpZiB0ZXN0IC1mICQkcCA7IHRoZW4gXAotKwkgICAgICBpbnN0YWxsICQkcCAkKFRFU1RfREVTVCkvcHl0aG9uL292cy8kJHByZSA7XAotKwkgICAgZWxzZSBcCi0rCSAgICAgIGluc3RhbGwgJChzcmNkaXIpLyQkcCAkKFRFU1RfREVTVCkvcHl0aG9uL292cy8kJHByZSA7XAotKwkgICAgZmkgO1wKLSsJICAgIGNvbnRpbnVlIDtcCi0rCSAgZmk7IFwKLSsJZG9uZSA7XAotKwlzZWQgLWkgJ3N8YWJzX2J1aWxkZGlyPS4qfGFic19idWlsZGRpcj0nIiciJyQoVEVTVF9ST09UKS90ZXN0cyciJyInfGcnICQoVEVTVF9ERVNUKS90ZXN0cy9hdGNvbmZpZwotKwlzZWQgLWkgJ3N8YWJzX3NyY2Rpcj0uKnxhYnNfc3JjZGlyPSciJyInJChURVNUX1JPT1QpL3Rlc3RzJyInIid8ZycgJChURVNUX0RFU1QpL3Rlc3RzL2F0Y29uZmlnCi0rCXNlZCAtaSAnc3xhYnNfdG9wX3NyY2Rpcj0uKnxhYnNfdG9wX3NyY2Rpcj0nIiciJyQoVEVTVF9ST09UKSciJyInfGcnICQoVEVTVF9ERVNUKS90ZXN0cy9hdGNvbmZpZwotKwlzZWQgLWkgJ3N8YWJzX3RvcF9idWlsZGRpcj0uKnxhYnNfdG9wX2J1aWxkZGlyPSciJyInJChURVNUX1JPT1QpJyInIid8ZycgJChURVNUX0RFU1QpL3Rlc3RzL2F0Y29uZmlnCi0rCXNlZCAtaSAnc3xhdF9zcmNkaXI9Lip8YXRfc3JjZGlyPSciJyInLiciJyInfGcnICQoVEVTVF9ERVNUKS90ZXN0cy9hdGNvbmZpZwotKwlzZWQgLWkgJ3N8YXRfdG9wX3NyY2Rpcj0uKnxhdF90b3Bfc3JjZGlyPSciJyInLi4nIiciJ3xnJyAkKFRFU1RfREVTVCkvdGVzdHMvYXRjb25maWcKLSsJc2VkIC1pICdzfGF0X3RvcF9idWlsZF9wcmVmaXg9Lip8YXRfdG9wX2J1aWxkX3ByZWZpeD0nIiciJy4uLyciJyInfGcnICQoVEVTVF9ERVNUKS90ZXN0cy9hdGNvbmZpZwotKwlzZWQgLWkgJ3N8XlwoLipjb25maWdcLmxvZy4qXCl8I1wxfGcnICQoVEVTVF9ERVNUKS90ZXN0cy90ZXN0c3VpdGUKLSsJc2VkIC1pICdzfCQkc3JjZGlyfCQkYWJzX3NyY2RpcnxnJyAkKFRFU1RfREVTVCkvdGVzdHMvdGVzdHN1aXRlCi0rCXNlZCAtaSAnc3xvdnMtYXBwY3RsLWJhc2hjb21wXC5iYXNofC9ldGMvYmFzaF9jb21wbGV0aW9uLmQvb3ZzLWFwcGN0bC1iYXNoY29tcFwuYmFzaHxnJyAkKFRFU1RfREVTVCkvdGVzdHMvdGVzdHN1aXRlCi0rCXNlZCAtaSAnc3xvdnMtdnNjdGwtYmFzaGNvbXBcLmJhc2h8L2V0Yy9iYXNoX2NvbXBsZXRpb24uZC9vdnMtdnNjdGwtYmFzaGNvbXBcLmJhc2h8ZycgJChURVNUX0RFU1QpL3Rlc3RzL3Rlc3RzdWl0ZQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC9vcGVudnN3aXRjaC1hZGQtcHRlc3QtYjhkY2ZiZWJlZTllN2RiYzc0ZWM1ZWVjYzliNDVkMzM1ZDYxNTBjMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0L29wZW52c3dpdGNoLWFkZC1wdGVzdC1iOGRjZmJlYmVlOWU3ZGJjNzRlYzVlZWNjOWI0NWQzMzVkNjE1MGMxLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZTg2YzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC9vcGVudnN3aXRjaC1hZGQtcHRlc3QtYjhkY2ZiZWJlZTllN2RiYzc0ZWM1ZWVjYzliNDVkMzM1ZDYxNTBjMS5wYXRjaApAQCAtMCwwICsxLDEwOCBAQAorRnJvbSBmYjY4MTIwZWY4YWVkNjI1YjA0YjJmYmQyY2I3OGZjNTlhN2I3NDMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMzAgTWFyIDIwMTYgMDY6MjM6NDUgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gb3BlbnZzd2l0Y2g6IEFkZCB0ZXN0LWluc3RhbGwgcnVsZSB0byBzdXBwb3J0IHB0ZXN0IGV4ZWN1dGlvbgorCitTaWduZWQtb2ZmLWJ5OiBSYWR1IFBhdHJpdSA8cmFkdS5wYXRyaXVAZW5lYS5jb20+CisKK0ZpeCBwdGVzdCBmb3IgdjIuNQorIC0gQ29weSBjZXJ0YWluIGZpbGVzIGZyb20gc3JjZGlyIHNpbmNlIGl0IGhhcyBiZWVuIGRpZmZlcmVudCBmcm9tCisgICBidWlsZCBkaXJlY3RvcnkuCisgLSBDb3B5IG1vcmUgbmVjZXNzYXJ5IGZpbGVzIGZvciBuZXcgYWRkZWQgdGVzdCBjYXNlcy4KKyAtIE1vZGlmeSBjb25maWcgZmlsZXMgZm9yIHJ1bm5pbmcgb24gdGFyZ2V0LgorCitTaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBNYWtlZmlsZS5hbSB8ICAxICsKKyB0ZXN0Lm1rICAgICB8IDcyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC5taworCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggZWE2M2FjYi4uZmY3ZDcwYSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTQyOSwzICs0MjksNCBAQCBpbmNsdWRlIHdpbmRvd3MvYXV0b21ha2UubWsKKyBpbmNsdWRlIG92bi9hdXRvbWFrZS5taworIGluY2x1ZGUgc2VsaW51eC9hdXRvbWFrZS5taworIGluY2x1ZGUgYnVpbGQtYXV4L2F1dG9tYWtlLm1rCisraW5jbHVkZSB0ZXN0Lm1rCitkaWZmIC0tZ2l0IGEvdGVzdC5tayBiL3Rlc3QubWsKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5iMTBhNTgxCistLS0gL2Rldi9udWxsCisrKysgYi90ZXN0Lm1rCitAQCAtMCwwICsxLDcyIEBACisrVEVTVF9ERVNUID89ICR7cHJlZml4fS9saWIvb3BlbnZzd2l0Y2gKKytURVNUX1JPT1QgPz0gJHtwcmVmaXh9L2xpYi9vcGVudnN3aXRjaAorK1RFU1RfREVQRU5EID0KKysKKytpZiBIQVZFX09QRU5TU0wKKytURVNUX0RFUEVORCArPSAkKFRFU1RQS0lfRklMRVMpCisrZW5kaWYKKysKKyt0ZXN0LWluc3RhbGw6ICQoVEVTVF9ERVBFTkQpCisrCUBsaXN0PSckKG5vaW5zdF9QUk9HUkFNUykgJChFWFRSQV9ESVNUKSAkKGRpc3RfY2hlY2tfU0NSSVBUUykgJChURVNUX0RFUEVORCkgdGVzdHMvYXRsb2NhbCB0ZXN0cy9hdGNvbmZpZycgO1wKKysJaW5zdGFsbCAtZCAkKFRFU1RfREVTVCkvdGVzdHMgO1wKKysJaW5zdGFsbCAkKHNyY2RpcikvdnRlcC9vdnMtdnRlcCAkKFRFU1RfREVTVCkvdGVzdHMgO1wKKysJaW5zdGFsbCAtZCAkKFRFU1RfREVTVCkvcHl0aG9uIDtcCisrCWluc3RhbGwgLWQgJChURVNUX0RFU1QpL3B5dGhvbi9vdnMgO1wKKysJaW5zdGFsbCAtZCAkKFRFU1RfREVTVCkvcHl0aG9uL292cy9kYiA7XAorKwlpbnN0YWxsIC1kICQoVEVTVF9ERVNUKS9weXRob24vb3ZzL3VuaXhjdGwgO1wKKysJaW5zdGFsbCAtZCAkKFRFU1RfREVTVCkvdnN3aXRjaGQgO1wKKysJaW5zdGFsbCAkKHNyY2RpcikvdnN3aXRjaGQvdnN3aXRjaC5vdnNzY2hlbWEgJChURVNUX0RFU1QpL3Zzd2l0Y2hkIDtcCisrCWluc3RhbGwgdnN3aXRjaGQvb3ZzLXZzd2l0Y2hkICQoVEVTVF9ERVNUKS92c3dpdGNoZCA7XAorKwlpbnN0YWxsIC1kICQoVEVTVF9ERVNUKS9kZWJpYW4gO1wKKysJaW5zdGFsbCAkKHNyY2RpcikvZGViaWFuL292cy1tb25pdG9yLWlwc2VjICQoVEVTVF9ERVNUKS9kZWJpYW4gO1wKKysJaW5zdGFsbCAtZCAkKFRFU1RfREVTVCkvYnVpbGQtYXV4IDtcCisrCWluc3RhbGwgJChzcmNkaXIpL2J1aWxkLWF1eC9jaGVjay1zdHJ1Y3RzICQoVEVTVF9ERVNUKS9idWlsZC1hdXggO1wKKysJaW5zdGFsbCAtZCAkKFRFU1RfREVTVCkveGVuc2VydmVyIDtcCisrCWluc3RhbGwgJChzcmNkaXIpL3hlbnNlcnZlci91c3Jfc2hhcmVfb3BlbnZzd2l0Y2hfc2NyaXB0c19vdnMteGFwaS1zeW5jICQoVEVTVF9ERVNUKS94ZW5zZXJ2ZXIgO1wKKysJaW5zdGFsbCAkKHNyY2RpcikveGVuc2VydmVyL29wdF94ZW5zb3VyY2VfbGliZXhlY19pbnRlcmZhY2UtcmVjb25maWd1cmUgJChURVNUX0RFU1QpL3hlbnNlcnZlciA7XAorKwlpbnN0YWxsICQoc3JjZGlyKS94ZW5zZXJ2ZXIvb3B0X3hlbnNvdXJjZV9saWJleGVjX0ludGVyZmFjZVJlY29uZmlndXJlLnB5ICQoVEVTVF9ERVNUKS94ZW5zZXJ2ZXIgO1wKKysJaW5zdGFsbCAkKHNyY2RpcikveGVuc2VydmVyL29wdF94ZW5zb3VyY2VfbGliZXhlY19JbnRlcmZhY2VSZWNvbmZpZ3VyZUJyaWRnZS5weSAkKFRFU1RfREVTVCkveGVuc2VydmVyIDtcCisrCWluc3RhbGwgJChzcmNkaXIpL3hlbnNlcnZlci9vcHRfeGVuc291cmNlX2xpYmV4ZWNfSW50ZXJmYWNlUmVjb25maWd1cmVWc3dpdGNoLnB5ICQoVEVTVF9ERVNUKS94ZW5zZXJ2ZXIgO1wKKysJaW5zdGFsbCAtZCAkKFRFU1RfREVTVCkvdnRlcCA7XAorKwlpbnN0YWxsICQoc3JjZGlyKS92dGVwL3Z0ZXAub3Zzc2NoZW1hICQoVEVTVF9ERVNUKS92dGVwIDtcCisrCWluc3RhbGwgLWQgJChURVNUX0RFU1QpL292biA7XAorKwlpbnN0YWxsICQoc3JjZGlyKS9vdm4vb3ZuLW5iLm92c3NjaGVtYSAkKFRFU1RfREVTVCkvb3ZuIDtcCisrCWluc3RhbGwgJChzcmNkaXIpL292bi9vdm4tc2Iub3Zzc2NoZW1hICQoVEVTVF9ERVNUKS9vdm4gO1wKKysJaW5zdGFsbCAtZCAkKFRFU1RfREVTVCkvdXRpbGl0aWVzIDtcCisrCWluc3RhbGwgJChzcmNkaXIpL3V0aWxpdGllcy9vdnMtcGNhcC5pbiAkKFRFU1RfREVTVCkvdXRpbGl0aWVzIDtcCisrCWluc3RhbGwgJChzcmNkaXIpL3V0aWxpdGllcy9vdnMtcGtpLmluICQoVEVTVF9ERVNUKS91dGlsaXRpZXMgO1wKKysJZm9yIHAgaW4gJCRsaXN0IDsgZG8gXAorKwkgIGVjaG8gJCRwIDtcCisrCSAgcD0kJHtwIy4uL2dpdC99IDtcCisrCSAgcHJlPSQke3AjdGVzdHNcL30gO1wKKysJICBpZiB0ZXN0ICQkcHJlICE9ICQkcCA7IHRoZW4gXAorKwkgICAgZWNobyBpbnN0YWxsaW5nICQkcCB0byAkKFRFU1RfREVTVCkvdGVzdHMvJCRwcmUgO1wKKysJICAgIGlmIHRlc3QgLWYgJCRwIDsgdGhlbiBcCisrCSAgICAgIGluc3RhbGwgJCRwICQoVEVTVF9ERVNUKS90ZXN0cy8kJHByZSA7XAorKwkgICAgZWxzZSBcCisrCSAgICAgIGluc3RhbGwgJChzcmNkaXIpLyQkcCAkKFRFU1RfREVTVCkvdGVzdHMvJCRwcmUgO1wKKysJICAgIGZpIDtcCisrCSAgICBjb250aW51ZSA7XAorKwkgIGZpIDtcCisrCSAgcHJlPSQke3AjcHl0aG9uXC9vdnNcL30gO1wKKysJICBpZiB0ZXN0ICQkcHJlICE9ICQkcCA7IHRoZW4gXAorKwkgICAgZWNobyBpbnN0YWxsaW5nICQkcCB0byAkKFRFU1RfREVTVCkvcHl0aG9uL292cy8kJHByZSA7XAorKwkgICAgaWYgdGVzdCAtZiAkJHAgOyB0aGVuIFwKKysJICAgICAgaW5zdGFsbCAkJHAgJChURVNUX0RFU1QpL3B5dGhvbi9vdnMvJCRwcmUgO1wKKysJICAgIGVsc2UgXAorKwkgICAgICBpbnN0YWxsICQoc3JjZGlyKS8kJHAgJChURVNUX0RFU1QpL3B5dGhvbi9vdnMvJCRwcmUgO1wKKysJICAgIGZpIDtcCisrCSAgICBjb250aW51ZSA7XAorKwkgIGZpOyBcCisrCWRvbmUgO1wKKysJc2VkIC1pICdzfGFic19idWlsZGRpcj0uKnxhYnNfYnVpbGRkaXI9JyInIickKFRFU1RfUk9PVCkvdGVzdHMnIiciJ3xnJyAkKFRFU1RfREVTVCkvdGVzdHMvYXRjb25maWcKKysJc2VkIC1pICdzfGFic19zcmNkaXI9Lip8YWJzX3NyY2Rpcj0nIiciJyQoVEVTVF9ST09UKS90ZXN0cyciJyInfGcnICQoVEVTVF9ERVNUKS90ZXN0cy9hdGNvbmZpZworKwlzZWQgLWkgJ3N8YWJzX3RvcF9zcmNkaXI9Lip8YWJzX3RvcF9zcmNkaXI9JyInIickKFRFU1RfUk9PVCknIiciJ3xnJyAkKFRFU1RfREVTVCkvdGVzdHMvYXRjb25maWcKKysJc2VkIC1pICdzfGFic190b3BfYnVpbGRkaXI9Lip8YWJzX3RvcF9idWlsZGRpcj0nIiciJyQoVEVTVF9ST09UKSciJyInfGcnICQoVEVTVF9ERVNUKS90ZXN0cy9hdGNvbmZpZworKwlzZWQgLWkgJ3N8YXRfc3JjZGlyPS4qfGF0X3NyY2Rpcj0nIiciJy4nIiciJ3xnJyAkKFRFU1RfREVTVCkvdGVzdHMvYXRjb25maWcKKysJc2VkIC1pICdzfGF0X3RvcF9zcmNkaXI9Lip8YXRfdG9wX3NyY2Rpcj0nIiciJy4uJyInIid8ZycgJChURVNUX0RFU1QpL3Rlc3RzL2F0Y29uZmlnCisrCXNlZCAtaSAnc3xhdF90b3BfYnVpbGRfcHJlZml4PS4qfGF0X3RvcF9idWlsZF9wcmVmaXg9JyInIicuLi8nIiciJ3xnJyAkKFRFU1RfREVTVCkvdGVzdHMvYXRjb25maWcKKysJc2VkIC1pICdzfF5cKC4qY29uZmlnXC5sb2cuKlwpfCNcMXxnJyAkKFRFU1RfREVTVCkvdGVzdHMvdGVzdHN1aXRlCisrCXNlZCAtaSAnc3wkJHNyY2RpcnwkJGFic19zcmNkaXJ8ZycgJChURVNUX0RFU1QpL3Rlc3RzL3Rlc3RzdWl0ZQorKwlzZWQgLWkgJ3N8b3ZzLWFwcGN0bC1iYXNoY29tcFwuYmFzaHwvZXRjL2Jhc2hfY29tcGxldGlvbi5kL292cy1hcHBjdGwtYmFzaGNvbXBcLmJhc2h8ZycgJChURVNUX0RFU1QpL3Rlc3RzL3Rlc3RzdWl0ZQorKwlzZWQgLWkgJ3N8b3ZzLXZzY3RsLWJhc2hjb21wXC5iYXNofC9ldGMvYmFzaF9jb21wbGV0aW9uLmQvb3ZzLXZzY3RsLWJhc2hjb21wXC5iYXNofGcnICQoVEVTVF9ERVNUKS90ZXN0cy90ZXN0c3VpdGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2hfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaF9naXQuYmIKaW5kZXggYjRhYWIzNS4uYzNhODMwMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaF9naXQuYmIKQEAgLTMsMjAgKzMsMjAgQEAKIERFUEVORFMgKz0gInZpcnR1YWwva2VybmVsIgogCiBSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiXAotCXB5dGhvbjMtbG9nZ2luZyBweXRob24zLXN5c2xvZyBweXRob24zLWFyZ3BhcnNlIHB5dGhvbjMtaW8gXAotCXB5dGhvbjMtZmNudGwgcHl0aG9uMy1zaGVsbCBweXRob24zLWxhbmcgcHl0aG9uMy14bWwgcHl0aG9uMy1tYXRoIFwKKwlweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zeXNsb2cgcHl0aG9uMy1pbyBcCisJcHl0aG9uMy1mY250bCBweXRob24zLXNoZWxsIHB5dGhvbjMteG1sIHB5dGhvbjMtbWF0aCBcCiAJcHl0aG9uMy1kYXRldGltZSBweXRob24zLW5ldGNsaWVudCBweXRob24zIHNlZCBcCiAJbGRkIHBlcmwtbW9kdWxlLXNvY2tldCBwZXJsLW1vZHVsZS1jYXJwIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKIAlwZXJsLW1vZHVsZS14c2xvYWRlciBweXRob24zLW5ldHNlcnZlciBweXRob24zLXRocmVhZGluZyBcCi0JcHl0aG9uMy1yZXNvdXJjZSBweXRob24zLXN1YnByb2Nlc3MgZmluZHV0aWxzIHdoaWNoIFwKKwlweXRob24zLXJlc291cmNlIGZpbmR1dGlscyB3aGljaCBcCiAJIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgotUFYgPSAiMi43LjErJHtTUkNSRVZ9IgorUFYgPSAiMi43LjMrJHtTUkNSRVZ9IgogCiBGSUxFU0VYVFJBUEFUSFNfYXBwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59LWdpdDoiCiAKLVNSQ1JFViA9ICJiMjljYjg5ZTllOWZlMzExOWIyZTVkZDVkNGZiNzkxNDE2MzViN2NjIgorU1JDUkVWID0gImI4ZGNmYmViZWU5ZTdkYmM3NGVjNWVlY2M5YjQ1ZDMzNWQ2MTUwYzEiCiBTUkNfVVJJID0gImZpbGU6Ly9vcGVudnN3aXRjaC1zd2l0Y2ggXAogICAgICAgICAgICBmaWxlOi8vb3BlbnZzd2l0Y2gtc3dpdGNoLXNldHVwIFwKICAgICAgICAgICAgZmlsZTovL29wZW52c3dpdGNoLXRlc3Rjb250cm9sbGVyIFwKQEAgLTI5LDcgKzI5LDYgQEAKICAgICAgICAgICAgZmlsZTovL3B5dGhvbi1tYWtlLXJlbWFpbmluZy1zY3JpcHRzLXVzZS11c3ItYmluLWVudi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzZS10aGUtbGludXgtaWZfcGFja2V0LmgtSW50ZXJmYWNlLWRpcmVjdGx5LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItRGVmaW5lLVdBSVRfQU5ZLWlmLW5vdC1wcm92aWRlZC1ieS1zeXN0ZW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTI2My5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9weXRob24tc3dpdGNoLXJlbWFpbmluZy1zY3JpcHRzLXRvLXVzZS1weXRob24zLnBhdGNoIFwKICAgICAgICAgICAgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcV8yLiUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcV8yLiUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkNjZjYTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtc3VwcG9ydC9kbnNtYXNxL2Ruc21hc3FfMi4lLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jIGRuc21hc3EgaXMgZ3JlZWR5IHdpdGggaW50ZXJmYWNlcyBieSBkZWZhdWx0IHVzaW5nIGJpbmQtZHluYW1pYyB3aWxsCi0jIG1ha2UgaXQgbGVzcyBncmVlZHkgYnV0IHN0aWxsIGZ1bmN0aW9uIGFzIGl0IGRpZCBieSBkZWZhdWx0LgotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgc2VkIC1pICcvI2JpbmQtaW50ZXJmYWNlcy9hICMgUGxheSBuaWNlIHdpdGggbGlidmlydFxuYmluZC1keW5hbWljJyAke0R9JHtzeXNjb25mZGlyfS9kbnNtYXNxLmNvbmYKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS8uZ2l0aWdub3JlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5Ly5naXRpZ25vcmUKaW5kZXggOTQ4OTRkNC4uZDNlZjQ3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5Ly5naXRpZ25vcmUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5Ly5naXRpZ25vcmUKQEAgLTE4LDkgKzE4LDEzIEBACiAhbWV0YS15b2N0bwogIW1ldGEteW9jdG8tYnNwCiAhbWV0YS15b2N0by1pbXBvcnRlZAotZG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC91c2VyLW1hbnVhbC5odG1sCi1kb2N1bWVudGF0aW9uL3VzZXItbWFudWFsL3VzZXItbWFudWFsLnBkZgotZG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC91c2VyLW1hbnVhbC50Z3oKKy9kb2N1bWVudGF0aW9uLyovZWNsaXBzZS8KKy9kb2N1bWVudGF0aW9uLyovKi5odG1sCisvZG9jdW1lbnRhdGlvbi8qLyoucGRmCisvZG9jdW1lbnRhdGlvbi8qLyoudGd6CisvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwKKy9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwucGRmCisvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLnRnegogcHVsbC0qLwogYml0YmFrZS9saWIvdG9hc3Rlci9jb250cmliL3R0cy9iYWNrbG9nLnR4dAogYml0YmFrZS9saWIvdG9hc3Rlci9jb250cmliL3R0cy9sb2cvKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5MU0IgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLkxTQgppbmRleCBjOWRjYTNmLi5mNjhkMDdjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLkxTQgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLkxTQgpAQCAtMjMsMyArMjMsNCBAQAogKiBsaWJwbmcgMS4yIGlzbid0IHByb3ZpZGVkOyBvZS1jb3JlIGluY2x1ZGVzIHRoZSBsYXRlc3QgcmVsZWFzZSBvZiBsaWJwbmcKICAgaW5zdGVhZC4KIAorKiBwYXggKFBPU0lYIHN0YW5kYXJkIGFyY2hpdmUpIHRvb2wgaXMgbm90IHByb3ZpZGVkLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2JpdGJha2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZQppbmRleCAzYWNjMjNhLi4zNDJjZWY5IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZQpAQCAtMzgsNyArMzgsNyBAQAogaWYgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpICE9ICJ1dGYtOCI6CiAgICAgc3lzLmV4aXQoIlBsZWFzZSB1c2UgYSBsb2NhbGUgc2V0dGluZyB3aGljaCBzdXBwb3J0cyBVVEYtOCAoc3VjaCBhcyBMQU5HPWVuX1VTLlVURi04KS5cblB5dGhvbiBjYW4ndCBjaGFuZ2UgdGhlIGZpbGVzeXN0ZW0gbG9jYWxlIGFmdGVyIGxvYWRpbmcgc28gd2UgbmVlZCBhIFVURi04IHdoZW4gUHl0aG9uIHN0YXJ0cyBvciB0aGluZ3Mgd29uJ3Qgd29yay4iKQogCi1fX3ZlcnNpb25fXyA9ICIxLjM2LjAiCitfX3ZlcnNpb25fXyA9ICIxLjM4LjAiCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaWYgX192ZXJzaW9uX18gIT0gYmIuX192ZXJzaW9uX186CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vdG9hc3RlciBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCmluZGV4IDQwMzZmMGEuLmVkMzY1ZWUgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCkBAIC02OCw3ICs2OCw3IEBACiAgICAgICAgIGlmIFsgLWYgJHtwaWRmaWxlfSBdOyB0aGVuCiAgICAgICAgICAgICBwaWQ9YGNhdCAke3BpZGZpbGV9YAogICAgICAgICAgICAgd2hpbGUga2lsbCAtMCAkcGlkIDI+L2Rldi9udWxsOyBkbwotICAgICAgICAgICAgICAgIGtpbGwgLVNJR1RFUk0gLSRwaWQgMj4vZGV2L251bGwKKyAgICAgICAgICAgICAgICBraWxsIC1TSUdURVJNICRwaWQgMj4vZGV2L251bGwKICAgICAgICAgICAgICAgICBzbGVlcCAxCiAgICAgICAgICAgICBkb25lCiAgICAgICAgICAgICBybSAgJHtwaWRmaWxlfQpAQCAtOTEsNyArOTEsNyBAQAogCiAgICAgZWNobyAiU3RhcnRpbmcgd2Vic2VydmVyLi4uIgogCi0gICAgJE1BTkFHRSBydW5zZXJ2ZXIgIiRBRERSX1BPUlQiIFwKKyAgICAkTUFOQUdFIHJ1bnNlcnZlciAtLW5vcmVsb2FkICIkQUREUl9QT1JUIiBcCiAgICAgICAgICAgIDwvZGV2L251bGwgPj4ke0JVSUxERElSfS90b2FzdGVyX3dlYi5sb2cgMj4mMSBcCiAgICAgICAgICAgICYgZWNobyAkISA+JHtCVUlMRERJUn0vLnRvYXN0ZXJtYWluLnBpZAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9jb250cmliL2R1bXBfY2FjaGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9jb250cmliL2R1bXBfY2FjaGUucHkKaW5kZXggZjRkNGMxYi4uODk2M2NhNCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvY29udHJpYi9kdW1wX2NhY2hlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2NvbnRyaWIvZHVtcF9jYWNoZS5weQpAQCAtMiw3ICsyLDcgQEAKICMgZXg6dHM9NDpzdz00OnN0cz00OmV0CiAjIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCiAjCi0jIENvcHlyaWdodCAoQykgMjAxMiBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE4IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwpAQCAtMTgsNTEgKzE4LDY4IEBACiAjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCiAKICMKLSMgVGhpcyBpcyB1c2VkIGZvciBkdW1waW5nIHRoZSBiYl9jYWNoZS5kYXQsIHRoZSBvdXRwdXQgZm9ybWF0IGlzOgotIyByZWNpcGVfcGF0aCBQTiBQViBQQUNLQUdFUworIyBVc2VkIGZvciBkdW1waW5nIHRoZSBiYl9jYWNoZS5kYXQKICMKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgYXJncGFyc2UKIAogIyBGb3IgaW1wb3J0aW5nIGJiLmNhY2hlCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pKSwgJy4uL2xpYicpKQogZnJvbSBiYi5jYWNoZSBpbXBvcnQgQ29yZVJlY2lwZUluZm8KIAotaW1wb3J0IHBpY2tsZSBhcyBwaWNrbGUKK2ltcG9ydCBwaWNrbGUKIAotZGVmIG1haW4oYXJndj1Ob25lKToKLSAgICAiIiIKLSAgICBHZXQgdGhlIG1hcHBpbmcgZm9yIHRoZSB0YXJnZXQgcmVjaXBlLgotICAgICIiIgotICAgIGlmIGxlbihhcmd2KSAhPSAxOgotICAgICAgICBwcmludCgiRXJyb3IsIG5lZWQgb25lIGFyZ3VtZW50ISIsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgcmV0dXJuIDIKK2NsYXNzIER1bXBDYWNoZShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCisgICAgICAgICAgICBkZXNjcmlwdGlvbj0iYmJfY2FjaGUuZGF0J3MgZHVtcGVyIiwKKyAgICAgICAgICAgIGVwaWxvZz0iVXNlICUocHJvZylzIC0taGVscCB0byBnZXQgaGVscCIpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1yIiwgIi0tcmVjaXBlIiwKKyAgICAgICAgICAgIGhlbHA9InNwZWNpZnkgdGhlIHJlY2lwZSwgZGVmYXVsdDogYWxsIHJlY2lwZXMiLCBhY3Rpb249InN0b3JlIikKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLW0iLCAiLS1tZW1iZXJzIiwKKyAgICAgICAgICAgIGhlbHAgPSAic3BlY2lmeSB0aGUgbWVtYmVyLCB1c2UgY29tbWEgYXMgc2VwYXJhdG9yIGZvciBtdWx0aXBsZSBvbmVzLCBkZWZhdWx0OiBhbGwgbWVtYmVycyIsIGFjdGlvbj0ic3RvcmUiLCBkZWZhdWx0PSIiKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItcyIsICItLXNraXAiLAorICAgICAgICAgICAgaGVscCA9ICJza2lwIHNraXBwZWQgcmVjaXBlcyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoImNhY2hlZmlsZSIsCisgICAgICAgICAgICBoZWxwID0gInNwZWNpZnkgYmJfY2FjaGUuZGF0IiwgbmFyZ3MgPSAxLCBhY3Rpb249InN0b3JlIiwgZGVmYXVsdD0iIikKIAotICAgIGNhY2hlZmlsZSA9IGFyZ3ZbMF0KKyAgICAgICAgc2VsZi5hcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCi0gICAgd2l0aCBvcGVuKGNhY2hlZmlsZSwgInJiIikgYXMgY2FjaGVmaWxlOgotICAgICAgICBwaWNrbGVkID0gcGlja2xlLlVucGlja2xlcihjYWNoZWZpbGUpCi0gICAgICAgIHdoaWxlIGNhY2hlZmlsZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBrZXkgPSBwaWNrbGVkLmxvYWQoKQotICAgICAgICAgICAgICAgIHZhbCA9IHBpY2tsZWQubG9hZCgpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgQ29yZVJlY2lwZUluZm8pIGFuZCAobm90IHZhbC5za2lwcGVkKToKLSAgICAgICAgICAgICAgICBwbiA9IHZhbC5wbgotICAgICAgICAgICAgICAgICMgRmlsdGVyIG91dCB0aGUgbmF0aXZlIHJlY2lwZXMuCi0gICAgICAgICAgICAgICAgaWYga2V5LnN0YXJ0c3dpdGgoJ3ZpcnR1YWw6bmF0aXZlOicpIG9yIHBuLmVuZHN3aXRoKCItbmF0aXZlIik6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgZGVmIG1haW4oc2VsZik6CisgICAgICAgIHdpdGggb3BlbihzZWxmLmFyZ3MuY2FjaGVmaWxlWzBdLCAicmIiKSBhcyBjYWNoZWZpbGU6CisgICAgICAgICAgICBwaWNrbGVkID0gcGlja2xlLlVucGlja2xlcihjYWNoZWZpbGUpCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAga2V5ID0gcGlja2xlZC5sb2FkKCkKKyAgICAgICAgICAgICAgICAgICAgdmFsID0gcGlja2xlZC5sb2FkKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsLCBDb3JlUmVjaXBlSW5mbyk6CisgICAgICAgICAgICAgICAgICAgIHBuID0gdmFsLnBuCiAKLSAgICAgICAgICAgICAgICAjIDEuMCBpcyB0aGUgZGVmYXVsdCB2ZXJzaW9uIGZvciBhIG5vIFBWIHJlY2lwZS4KLSAgICAgICAgICAgICAgICBpZiAicHYiIGluIHZhbC5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgcHYgPSB2YWwucHYKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwdiA9ICIxLjAiCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuYXJncy5yZWNpcGUgYW5kIHNlbGYuYXJncy5yZWNpcGUgIT0gcG46CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICAgICAgcHJpbnQoIiVzICVzICVzICVzIiAlIChrZXksIHBuLCBwdiwgJyAnLmpvaW4odmFsLnBhY2thZ2VzKSkpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuYXJncy5za2lwIGFuZCB2YWwuc2tpcHBlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5hcmdzLm1lbWJlcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBtZW1iZXIgaW4gc2VsZi5hcmdzLm1lbWJlcnMuc3BsaXQoJywnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gIjogJXMiICUgdmFsLl9fZGljdF9fLmdldChtZW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiJXMiICUgb3V0KQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiVzOiAlcyIgJSAoa2V5LCB2YWwuX19kaWN0X18pKQorICAgICAgICAgICAgICAgIGVsaWYgbm90IHNlbGYuYXJncy5yZWNpcGU6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCIlcyAlcyIgJSAoa2V5LCB2YWwpKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3ZbMTpdKSkKLQorICAgIHRyeToKKyAgICAgICAgZHVtcCA9IER1bXBDYWNoZSgpCisgICAgICAgIHJldCA9IGR1bXAubWFpbigpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlc2M6CisgICAgICAgIHJldCA9IDEKKyAgICAgICAgaW1wb3J0IHRyYWNlYmFjaworICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICBzeXMuZXhpdChyZXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi54bWwKaW5kZXggZTRjYzQyMi4uZjFjYWFlYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1leGVjdXRpb24ueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZXhlY3V0aW9uLnhtbApAQCAtNzgxLDcgKzc4MSw3IEBACiAgICAgICAgICAgICBUaGUgY29kZSBpbiA8ZmlsZW5hbWU+bWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5PC9maWxlbmFtZT4gc2hvd3MgdHdvIGV4YW1wbGVzCiAgICAgICAgICAgICBvZiB0aGlzIGFuZCBhbHNvIGlsbHVzdHJhdGVzIGhvdyB5b3UgY2FuIGluc2VydCB5b3VyIG93biBwb2xpY3kgaW50byB0aGUgc3lzdGVtCiAgICAgICAgICAgICBpZiBzbyBkZXNpcmVkLgotICAgICAgICAgICAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIHR3byBiYXNpYyBzaWduYXR1cmUgZ2VuZXJhdG9ycyBPcGVuRW1iZWRkZWQgQ29yZQorICAgICAgICAgICAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIHR3byBiYXNpYyBzaWduYXR1cmUgZ2VuZXJhdG9ycyBPcGVuRW1iZWRkZWQtQ29yZQogICAgICAgICAgICAgdXNlczogICJPRUJhc2ljIiBhbmQgIk9FQmFzaWNIYXNoIi4KICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZXJlIGlzIGEgZHVtbXkgIm5vb3AiIHNpZ25hdHVyZSBoYW5kbGVyIGVuYWJsZWQgaW4gQml0QmFrZS4KICAgICAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBiZWhhdmlvciBpcyB1bmNoYW5nZWQgZnJvbSBwcmV2aW91cyB2ZXJzaW9ucy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZmV0Y2hpbmcueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKaW5kZXggYzcyMWU4Ni4uMjlhZTQ4NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKQEAgLTc3Nyw2ICs3NzcsNDMgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCisgICAgICAgIDxzZWN0aW9uIGlkPSdyZXBvLWZldGNoZXInPgorICAgICAgICAgICAgPHRpdGxlPlJlcG8gRmV0Y2hlciAoPGZpbGVuYW1lPnJlcG86Ly88L2ZpbGVuYW1lPik8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIGZldGNoZXIgc3VibW9kdWxlIGZldGNoZXMgY29kZSBmcm9tCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdvb2dsZS1yZXBvPC9maWxlbmFtZT4gc291cmNlIGNvbnRyb2wgc3lzdGVtLgorICAgICAgICAgICAgICAgIFRoZSBmZXRjaGVyIHdvcmtzIGJ5IGluaXRpYXRpbmcgYW5kIHN5bmNpbmcgc291cmNlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGludG8KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkVQT0RJUic+PGZpbGVuYW1lPlJFUE9ESVI8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgdXN1YWxseQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+L3JlcG88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBmZXRjaGVyIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+InByb3RvY29sIjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2wgdG8gZmV0Y2ggdGhlIHJlcG9zaXRvcnkgbWFuaWZlc3QgKGRlZmF1bHQ6IGdpdCkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJicmFuY2giOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCcmFuY2ggb3IgdGFnIG9mIHJlcG9zaXRvcnkgdG8gZ2V0IChkZWZhdWx0OiBtYXN0ZXIpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4ibWFuaWZlc3QiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIG9mIHRoZSBtYW5pZmVzdCBmaWxlIChkZWZhdWx0OiA8ZmlsZW5hbWU+ZGVmYXVsdC54bWw8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICBIZXJlIGFyZSBzb21lIGV4YW1wbGUgVVJMczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgU1JDX1VSSSA9ICJyZXBvOi8vUkVQT1JPT1Q7cHJvdG9jb2w9Z2l0O2JyYW5jaD1zb21lX2JyYW5jaDttYW5pZmVzdD1teV9tYW5pZmVzdC54bWwiCisgICAgU1JDX1VSSSA9ICJyZXBvOi8vUkVQT1JPT1Q7cHJvdG9jb2w9ZmlsZTticmFuY2g9c29tZV9icmFuY2g7bWFuaWZlc3Q9bXlfbWFuaWZlc3QueG1sIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCiAgICAgICAgIDxzZWN0aW9uIGlkPSdvdGhlci1mZXRjaGVycyc+CiAgICAgICAgICAgICA8dGl0bGU+T3RoZXIgRmV0Y2hlcnM8L3RpdGxlPgogCkBAIC03OTYsOSArODMzLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3VyZSBTaGVsbCAoPGZpbGVuYW1lPnNzaDovLzwvZmlsZW5hbWU+KQogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJlcG8gKDxmaWxlbmFtZT5yZXBvOi8vPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgT1NDICg8ZmlsZW5hbWU+b3NjOi8vPC9maWxlbmFtZT4pCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1oZWxsby54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbAppbmRleCA5MjUzZWFmLi45MDc2ZjBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbApAQCAtMjYwLDcgKzI2MCw3IEBACiAgICAgICAgICAgICAgICAgZmlsZXMuCiAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgeW91IG5lZWQgdG8gY3JlYXRlIHRoZSBmaWxlIGluIHlvdXIgcHJvamVjdCBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICBhbmQgZGVmaW5lIHNvbWUga2V5IEJpdEJha2UgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLAogICAgICAgICAgICAgICAgIHNlZQogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlL3RyZWUvY29uZi9iaXRiYWtlLmNvbmYnPjwvdWxpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTI3MywxNCArMjczLDMyIEBACiAgICAgICAgICAgICAgICAgc29tZSBlZGl0b3IgdG8gY3JlYXRlIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBzbyB0aGF0IGl0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItUE4nPlBOPC9saW5rPiAgPSAiJHtAYmIucGFyc2UuQkJIYW5kbGVyLnZhcnNfZnJvbV9maWxlKGQuZ2V0VmFyKCdGSUxFJywgRmFsc2UpLGQpWzBdIG9yICdkZWZhdWx0cGtnbmFtZSd9IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFRNUERJUiAgPSAiJHs8bGluayBsaW5rZW5kPSd2YXItVE9QRElSJz5UT1BESVI8L2xpbms+fS90bXAiCiAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DQUNIRSc+Q0FDSEU8L2xpbms+ICAgPSAiJHtUTVBESVJ9L2NhY2hlIgotICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBTVAnPlNUQU1QPC9saW5rPiAgID0gIiR7VE1QRElSfS9zdGFtcHMiCi0gICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UJz5UPC9saW5rPiAgICAgICA9ICIke1RNUERJUn0vd29yayIKLSAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUInPkI8L2xpbms+ICAgICAgID0gIiR7VE1QRElSfSIKKyAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNUQU1QJz5TVEFNUDwvbGluaz4gICA9ICIke1RNUERJUn0vJHtQTn0vc3RhbXBzIgorICAgICA8bGluayBsaW5rZW5kPSd2YXItVCc+VDwvbGluaz4gICAgICAgPSAiJHtUTVBESVJ9LyR7UE59L3dvcmsiCisgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CJz5CPC9saW5rPiAgICAgICA9ICIke1RNUERJUn0vJHtQTn0iCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBXaXRob3V0IGEgdmFsdWUgZm9yIDxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIDxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VDwvZmlsZW5hbWU+LCBhbmQgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgcHJldmVudCBtb3JlIHRoYW4gb25lIHJlY2lwZSBmcm9tIHdvcmtpbmcuIFlvdSBjYW4gZml4CisgICAgICAgICAgICAgICAgICAgIHRoaXMgYnkgZWl0aGVyIHNldHRpbmcgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4gdG8gaGF2ZQorICAgICAgICAgICAgICAgICAgICBhIHZhbHVlIHNpbWlsYXIgdG8gd2hhdCBPcGVuRW1iZWRkZWQgYW5kIEJpdEJha2UgdXNlCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBkZWZhdWx0IDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIChzZWUgcHJldmlvdXMgZXhhbXBsZSkuIE9yLCBieSBtYW51YWxseSB1cGRhdGluZyBlYWNoCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSB0byBzZXQgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4uIFlvdSB3aWxsIGFsc28KKyAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBpbmNsdWRlIDxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+IGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+VDwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBkZWZpbml0aW9ucyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IHZhcmlhYmxlIGVzdGFibGlzaGVzIGEgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgdGhhdCBCaXRCYWtlIHVzZXMgZm9yIGJ1aWxkIG91dHB1dCBhbmQgaW50ZXJtZWRpYXRlIGZpbGVzIChvdGhlcgorICAgICAgICAgICAgICAgIHRoYXQgQml0QmFrZSB1c2VzIGZvciBidWlsZCBvdXRwdXQgYW5kIGludGVybWVkaWF0ZSBmaWxlcyBvdGhlcgogICAgICAgICAgICAgICAgIHRoYW4gdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiB1c2VkIGJ5IHRoZQogICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NldHNjZW5lJz5TZXRzY2VuZTwvbGluaz4gcHJvY2Vzcy4KICAgICAgICAgICAgICAgICBIZXJlLCB0aGUgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcyBzZXQgdG8KQEAgLTMwMCwxOSArMzE4LDE5IEBACiAgICAgICAgICAgICAgICAgZmlsZSBleGlzdHMsIHlvdSBjYW4gcnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgY29tbWFuZCBhZ2FpbjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0kIGJpdGJha2UKLUVSUk9SOiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIEZpbGUgIi9ob21lL3Njb3R0LWxlbm92by9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5IiwgbGluZSAxNjMsIGluIHdyYXBwZWQKLSAgICByZXR1cm4gZnVuYyhmbiwgKmFyZ3MpCi0gIEZpbGUgIi9ob21lL3Njb3R0LWxlbm92by9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5IiwgbGluZSAxNzcsIGluIF9pbmhlcml0Ci0gICAgYmIucGFyc2UuQkJIYW5kbGVyLmluaGVyaXQoYmJjbGFzcywgImNvbmZpZ3VyYXRpb24gSU5IRVJJVHMiLCAwLCBkYXRhKQotICBGaWxlICIvaG9tZS9zY290dC1sZW5vdm8vYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5IiwgbGluZSA5MiwgaW4gaW5oZXJpdAotICAgIGluY2x1ZGUoZm4sIGZpbGUsIGxpbmVubywgZCwgImluaGVyaXQiKQotICBGaWxlICIvaG9tZS9zY290dC1sZW5vdm8vYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQ29uZkhhbmRsZXIucHkiLCBsaW5lIDEwMCwgaW4gaW5jbHVkZQotICAgIHJhaXNlIFBhcnNlRXJyb3IoIkNvdWxkIG5vdCAlKGVycm9yX291dClzIGZpbGUgJShmbilzIiAlIHZhcnMoKSwgb2xkZm4sIGxpbmVubykKLVBhcnNlRXJyb3I6IFBhcnNlRXJyb3IgaW4gY29uZmlndXJhdGlvbiBJTkhFUklUczogQ291bGQgbm90IGluaGVyaXQgZmlsZSBjbGFzc2VzL2Jhc2UuYmJjbGFzcworICAgICAkIGJpdGJha2UKKyAgICAgRVJST1I6IFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICBGaWxlICIvaG9tZS9zY290dC1sZW5vdm8vYml0YmFrZS9saWIvYmIvY29va2VyZGF0YS5weSIsIGxpbmUgMTYzLCBpbiB3cmFwcGVkCisgICAgICAgICByZXR1cm4gZnVuYyhmbiwgKmFyZ3MpCisgICAgICAgRmlsZSAiL2hvbWUvc2NvdHQtbGVub3ZvL2JpdGJha2UvbGliL2JiL2Nvb2tlcmRhdGEucHkiLCBsaW5lIDE3NywgaW4gX2luaGVyaXQKKyAgICAgICAgIGJiLnBhcnNlLkJCSGFuZGxlci5pbmhlcml0KGJiY2xhc3MsICJjb25maWd1cmF0aW9uIElOSEVSSVRzIiwgMCwgZGF0YSkKKyAgICAgICBGaWxlICIvaG9tZS9zY290dC1sZW5vdm8vYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5IiwgbGluZSA5MiwgaW4gaW5oZXJpdAorICAgICAgICAgaW5jbHVkZShmbiwgZmlsZSwgbGluZW5vLCBkLCAiaW5oZXJpdCIpCisgICAgICAgRmlsZSAiL2hvbWUvc2NvdHQtbGVub3ZvL2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0NvbmZIYW5kbGVyLnB5IiwgbGluZSAxMDAsIGluIGluY2x1ZGUKKyAgICAgICAgIHJhaXNlIFBhcnNlRXJyb3IoIkNvdWxkIG5vdCAlKGVycm9yX291dClzIGZpbGUgJShmbilzIiAlIHZhcnMoKSwgb2xkZm4sIGxpbmVubykKKyAgICAgUGFyc2VFcnJvcjogUGFyc2VFcnJvciBpbiBjb25maWd1cmF0aW9uIElOSEVSSVRzOiBDb3VsZCBub3QgaW5oZXJpdCBmaWxlIGNsYXNzZXMvYmFzZS5iYmNsYXNzCiAKLUVSUk9SOiBVbmFibGUgdG8gcGFyc2UgYmFzZTogUGFyc2VFcnJvciBpbiBjb25maWd1cmF0aW9uIElOSEVSSVRzOiBDb3VsZCBub3QgaW5oZXJpdCBmaWxlIGNsYXNzZXMvYmFzZS5iYmNsYXNzCisgICAgIEVSUk9SOiBVbmFibGUgdG8gcGFyc2UgYmFzZTogUGFyc2VFcnJvciBpbiBjb25maWd1cmF0aW9uIElOSEVSSVRzOiBDb3VsZCBub3QgaW5oZXJpdCBmaWxlIGNsYXNzZXMvYmFzZS5iYmNsYXNzCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIEluIHRoZSBzYW1wbGUgb3V0cHV0LCBCaXRCYWtlIGNvdWxkIG5vdCBmaW5kIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jbGFzc2VzL2Jhc2UuYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUuCkBAIC0zNjUsMTAgKzM4MywxMCBAQAogICAgICAgICAgICAgICAgIGNvZGUgc2VwYXJhdGUgZnJvbSB0aGUgZ2VuZXJhbCBtZXRhZGF0YSB1c2VkIGJ5IEJpdEJha2UuCiAgICAgICAgICAgICAgICAgVGh1cywgdGhpcyBleGFtcGxlIGNyZWF0ZXMgYW5kIHVzZXMgYSBsYXllciBjYWxsZWQgIm15bGF5ZXIiLgogICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBsYXllcnMgYXQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi4zL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC5odG1sI2xheWVycyc+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gbGF5ZXJzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbGF5ZXJzJz5MYXllcnM8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKICAgICAgICAgICAgICAgICA8cGFyYT5NaW5pbWFsbHksIHlvdSBuZWVkIGEgcmVjaXBlIGZpbGUgYW5kIGEgbGF5ZXIgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgIGZpbGUgaW4geW91ciBsYXllci4KICAgICAgICAgICAgICAgICBUaGUgY29uZmlndXJhdGlvbiBmaWxlIG5lZWRzIHRvIGJlIGluIHRoZSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCmluZGV4IDA4ZDlhZmQuLjRjZjBlZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCkBAIC00ODgsOCArNDg4LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHRoYXQgZmFpbGVkIGFuZCBhbnl0aGluZyBkZXBlbmRpbmcgb24gaXQgY2Fubm90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGJ1aWx0LCBhcyBtdWNoIGFzIHBvc3NpYmxlIHdpbGwgYmUgYnVpbHQgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BwaW5nLgotICAgICAgIC1hLCAtLXRyeWFsdGNvbmZpZ3MgICBDb250aW51ZSB3aXRoIGJ1aWxkcyBieSB0cnlpbmcgdG8gdXNlIGFsdGVybmF0aXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVycyB3aGVyZSBwb3NzaWJsZS4KICAgICAgICAtZiwgLS1mb3JjZSAgICAgICAgICAgRm9yY2UgdGhlIHNwZWNpZmllZCB0YXJnZXRzL3Rhc2sgdG8gcnVuIChpbnZhbGlkYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IGV4aXN0aW5nIHN0YW1wIGZpbGUpLgogICAgICAgIC1jIENNRCwgLS1jbWQ9Q01EICAgICBTcGVjaWZ5IHRoZSB0YXNrIHRvIGV4ZWN1dGUuIFRoZSBleGFjdCBvcHRpb25zCkBAIC01MDQsMTkgKzUwMiwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkIHRoZSBzcGVjaWZpZWQgZmlsZSBiZWZvcmUgYml0YmFrZS5jb25mLgogICAgICAgIC1SIFBPU1RGSUxFLCAtLXBvc3RyZWFkPVBPU1RGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWQgdGhlIHNwZWNpZmllZCBmaWxlIGFmdGVyIGJpdGJha2UuY29uZi4KLSAgICAgICAtdiwgLS12ZXJib3NlICAgICAgICAgRW5hYmxlIHRyYWNpbmcgb2Ygc2hlbGwgdGFza3MgKHdpdGggJ3NldCAteCcpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvIHByaW50IGJiLm5vdGUoLi4uKSBtZXNzYWdlcyB0byBzdGRvdXQgKGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uIHRvIHdyaXRpbmcgdGhlbSB0byAke1R9L2xvZy5kb18mbHQ7dGFzayZndDspLgotICAgICAgIC1ELCAtLWRlYnVnICAgICAgICAgICBJbmNyZWFzZSB0aGUgZGVidWcgbGV2ZWwuIFlvdSBjYW4gc3BlY2lmeSB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmUgdGhhbiBvbmNlLiAtRCBzZXRzIHRoZSBkZWJ1ZyBsZXZlbCB0byAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBvbmx5IGJiLmRlYnVnKDEsIC4uLikgbWVzc2FnZXMgYXJlIHByaW50ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gc3Rkb3V0OyAtREQgc2V0cyB0aGUgZGVidWcgbGV2ZWwgdG8gMiwgd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aCBiYi5kZWJ1ZygxLCAuLi4pIGFuZCBiYi5kZWJ1ZygyLCAuLi4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzIGFyZSBwcmludGVkOyBldGMuIFdpdGhvdXQgLUQsIG5vIGRlYnVnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzIGFyZSBwcmludGVkLiBOb3RlIHRoYXQgLUQgb25seSBhZmZlY3RzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCB0byBzdGRvdXQuIEFsbCBkZWJ1ZyBtZXNzYWdlcyBhcmUgd3JpdHRlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byAke1R9L2xvZy5kb190YXNrbmFtZSwgcmVnYXJkbGVzcyBvZiB0aGUgZGVidWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwuCisgICAgICAgLXYsIC0tdmVyYm9zZSAgICAgICAgIEVuYWJsZSB0cmFjaW5nIG9mIHNoZWxsIHRhc2tzICh3aXRoICdzZXQgLXgnKS4gQWxzbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCBiYi5ub3RlKC4uLikgbWVzc2FnZXMgdG8gc3Rkb3V0IChpbiBhZGRpdGlvbiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0aW5nIHRoZW0gdG8gJHtUfS9sb2cuZG9fJmx0O3Rhc2smZ3Q7KS4KKyAgICAgICAtRCwgLS1kZWJ1ZyAgICAgICAgICAgSW5jcmVhc2UgdGhlIGRlYnVnIGxldmVsLiBZb3UgY2FuIHNwZWNpZnkgdGhpcyBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gb25jZS4gLUQgc2V0cyB0aGUgZGVidWcgbGV2ZWwgdG8gMSwgd2hlcmUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAuLi4pIG1lc3NhZ2VzIGFyZSBwcmludGVkIHRvIHN0ZG91dDsgLURECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHMgdGhlIGRlYnVnIGxldmVsIHRvIDIsIHdoZXJlIGJvdGggYmIuZGVidWcoMSwgLi4uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYmIuZGVidWcoMiwgLi4uKSBtZXNzYWdlcyBhcmUgcHJpbnRlZDsgZXRjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaXRob3V0IC1ELCBubyBkZWJ1ZyBtZXNzYWdlcyBhcmUgcHJpbnRlZC4gTm90ZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EIG9ubHkgYWZmZWN0cyBvdXRwdXQgdG8gc3Rkb3V0LiBBbGwgZGVidWcgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdyaXR0ZW4gdG8gJHtUfS9sb2cuZG9fdGFza25hbWUsIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnIGxldmVsLgorICAgICAgIC1xLCAtLXF1aWV0ICAgICAgICAgICBPdXRwdXQgbGVzcyBsb2cgbWVzc2FnZSBkYXRhIHRvIHRoZSB0ZXJtaW5hbC4gWW91IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoaXMgbW9yZSB0aGFuIG9uY2UuCiAgICAgICAgLW4sIC0tZHJ5LXJ1biAgICAgICAgIERvbid0IGV4ZWN1dGUsIGp1c3QgZ28gdGhyb3VnaCB0aGUgbW90aW9ucy4KICAgICAgICAtUyBTSUdOQVRVUkVfSEFORExFUiwgLS1kdW1wLXNpZ25hdHVyZXM9U0lHTkFUVVJFX0hBTkRMRVIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVtcCBvdXQgdGhlIHNpZ25hdHVyZSBjb25zdHJ1Y3Rpb24gaW5mb3JtYXRpb24sIHdpdGgKQEAgLTUzOSwzMCArNTM4LDM4IEBACiAgICAgICAgLWwgREVCVUdfRE9NQUlOUywgLS1sb2ctZG9tYWlucz1ERUJVR19ET01BSU5TCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNob3cgZGVidWcgbG9nZ2luZyBmb3IgdGhlIHNwZWNpZmllZCBsb2dnaW5nIGRvbWFpbnMKICAgICAgICAtUCwgLS1wcm9maWxlICAgICAgICAgUHJvZmlsZSB0aGUgY29tbWFuZCBhbmQgc2F2ZSByZXBvcnRzLgotICAgICAgIC11IFVJLCAtLXVpPVVJICAgICAgICBUaGUgdXNlciBpbnRlcmZhY2UgdG8gdXNlICh0YXNrZXhwLCBrbm90dHkgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmN1cnNlcyAtIGRlZmF1bHQga25vdHR5KS4KLSAgICAgICAtdCBTRVJWRVJUWVBFLCAtLXNlcnZlcnR5cGU9U0VSVkVSVFlQRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2Ugd2hpY2ggc2VydmVyIHR5cGUgdG8gdXNlIChwcm9jZXNzIG9yIHhtbHJwYyAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgcHJvY2VzcykuCisgICAgICAgLXUgVUksIC0tdWk9VUkgICAgICAgIFRoZSB1c2VyIGludGVyZmFjZSB0byB1c2UgKGtub3R0eSwgbmN1cnNlcyBvciB0YXNrZXhwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gZGVmYXVsdCBrbm90dHkpLgogICAgICAgIC0tdG9rZW49WE1MUlBDVE9LRU4gICBTcGVjaWZ5IHRoZSBjb25uZWN0aW9uIHRva2VuIHRvIGJlIHVzZWQgd2hlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW5nIHRvIGEgcmVtb3RlIHNlcnZlci4KICAgICAgICAtLXJldmlzaW9ucy1jaGFuZ2VkICAgU2V0IHRoZSBleGl0IGNvZGUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdXBzdHJlYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmcgcmV2aXNpb25zIGhhdmUgY2hhbmdlZCBvciBub3QuCiAgICAgICAgLS1zZXJ2ZXItb25seSAgICAgICAgIFJ1biBiaXRiYWtlIHdpdGhvdXQgYSBVSSwgb25seSBzdGFydGluZyBhIHNlcnZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29va2VyKSBwcm9jZXNzLgotICAgICAgIC1CIEJJTkQsIC0tYmluZD1CSU5EICBUaGUgbmFtZS9hZGRyZXNzIGZvciB0aGUgYml0YmFrZSBzZXJ2ZXIgdG8gYmluZCB0by4KKyAgICAgICAtQiBCSU5ELCAtLWJpbmQ9QklORCAgVGhlIG5hbWUvYWRkcmVzcyBmb3IgdGhlIGJpdGJha2UgeG1scnBjIHNlcnZlciB0byBiaW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvLgorICAgICAgIC1UIFNFUlZFUl9USU1FT1VULCAtLWlkbGUtdGltZW91dD1TRVJWRVJfVElNRU9VVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdGltZW91dCB0byB1bmxvYWQgYml0YmFrZSBzZXJ2ZXIgZHVlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluYWN0aXZpdHksIHNldCB0byAtMSBtZWFucyBubyB1bmxvYWQsIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50IHZhcmlhYmxlIEJCX1NFUlZFUl9USU1FT1VULgogICAgICAgIC0tbm8tc2V0c2NlbmUgICAgICAgICBEbyBub3QgcnVuIGFueSBzZXRzY2VuZSB0YXNrcy4gc3N0YXRlIHdpbGwgYmUgaWdub3JlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZXZlcnl0aGluZyBuZWVkZWQsIGJ1aWx0LgogICAgICAgIC0tc2V0c2NlbmUtb25seSAgICAgICBPbmx5IHJ1biBzZXRzY2VuZSB0YXNrcywgZG9uJ3QgcnVuIGFueSByZWFsIHRhc2tzLgogICAgICAgIC0tcmVtb3RlLXNlcnZlcj1SRU1PVEVfU0VSVkVSCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3QgdG8gdGhlIHNwZWNpZmllZCBzZXJ2ZXIuCi0gICAgICAgLW0sIC0ta2lsbC1zZXJ2ZXIgICAgIFRlcm1pbmF0ZSB0aGUgcmVtb3RlIHNlcnZlci4KKyAgICAgICAtbSwgLS1raWxsLXNlcnZlciAgICAgVGVybWluYXRlIGFueSBydW5uaW5nIGJpdGJha2Ugc2VydmVyLgogICAgICAgIC0tb2JzZXJ2ZS1vbmx5ICAgICAgICBDb25uZWN0IHRvIGEgc2VydmVyIGFzIGFuIG9ic2VydmluZy1vbmx5IGNsaWVudC4KICAgICAgICAtLXN0YXR1cy1vbmx5ICAgICAgICAgQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgcmVtb3RlIGJpdGJha2Ugc2VydmVyLgogICAgICAgIC13IFdSSVRFRVZFTlRMT0csIC0td3JpdGUtbG9nPVdSSVRFRVZFTlRMT0cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVzIHRoZSBldmVudCBsb2cgb2YgdGhlIGJ1aWxkIHRvIGEgYml0YmFrZSBldmVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uIGZpbGUuIFVzZSAnJyAoZW1wdHkgc3RyaW5nKSB0byBhc3NpZ24gdGhlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseS4KKyAgICAgICAtLXJ1bmFsbD1SVU5BTEwgICAgICAgUnVuIHRoZSBzcGVjaWZpZWQgdGFzayBmb3IgYW55IHJlY2lwZSBpbiB0aGUgdGFza2dyYXBoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IChldmVuIGlmIGl0IHdvdWxkbid0IG90aGVyd2lzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIHJ1bikuCisgICAgICAgLS1ydW5vbmx5PVJVTk9OTFkgICAgIFJ1biBvbmx5IHRoZSBzcGVjaWZpZWQgdGFzayB3aXRoaW4gdGhlIHRhc2tncmFwaCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3BlY2lmaWVkIHRhcmdldHMgKGFuZCBhbnkgdGFzayBkZXBlbmRlbmNpZXMgdGhvc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza3MgbWF5IGhhdmUpLgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbAppbmRleCAwY2ZhNTNkLi5iNGZjNjRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbApAQCAtMjEzMiw2ICsyMTMyLDggQEAKICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5ldmVudC5CdWlsZFN0YXJ0ZWQoKTwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICBGaXJlZCB3aGVuIGEgbmV3IGJ1aWxkIHN0YXJ0cy4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBmaXJlcyBtdWx0aXBsZSAiQnVpbGRTdGFydGVkIiBldmVudHMgKG9uZSBwZXIgY29uZmlndXJhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBtdWx0aXBsZSBjb25maWd1cmF0aW9uIChtdWx0aWNvbmZpZykgaXMgZW5hYmxlZC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuYnVpbGQuVGFza1N0YXJ0ZWQoKTwvZmlsZW5hbWU+OgpAQCAtMjY1MCw0NyArMjY1Miw3MCBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIGxpc3QgaXMgYSBwbGFjZSBob2xkZXIgb2YgY29udGVudCBleGlzdGVkIGZyb20gcHJldmlvdXMgd29yawotICAgICAgICAgICAgb24gdGhlIG1hbnVhbC4KLSAgICAgICAgICAgIFNvbWUgb3IgYWxsIG9mIGl0IHByb2JhYmx5IG5lZWRzIGludGVncmF0ZWQgaW50byB0aGUgc3Vic2VjdGlvbnMKLSAgICAgICAgICAgIHRoYXQgbWFrZSB1cCB0aGlzIHNlY3Rpb24uCi0gICAgICAgICAgICBGb3Igbm93LCBJIGhhdmUganVzdCBwcm92aWRlZCBhIHNob3J0IGdsb3NzYXJ5LWxpa2UgZGVzY3JpcHRpb24KLSAgICAgICAgICAgIGZvciBlYWNoIHZhcmlhYmxlLgotICAgICAgICAgICAgVWx0aW1hdGVseSwgdGhpcyBsaXN0IGdvZXMgYXdheS4KKyAgICAgICAgICAgIFRoZXNlIGNoZWNrc3VtcyBhcmUgc3RvcmVkIGluCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBTVAnPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgIFlvdSBjYW4gZXhhbWluZSB0aGUgY2hlY2tzdW1zIHVzaW5nIHRoZSBmb2xsb3dpbmcgQml0QmFrZSBjb21tYW5kOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UtZHVtcHNpZ3MKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoaXMgY29tbWFuZCByZXR1cm5zIHRoZSBzaWduYXR1cmUgZGF0YSBpbiBhIHJlYWRhYmxlIGZvcm1hdAorICAgICAgICAgICAgdGhhdCBhbGxvd3MgeW91IHRvIGV4YW1pbmUgdGhlIGlucHV0cyB1c2VkIHdoZW4gdGhlCisgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGdlbmVyYXRlcyBzaWduYXR1cmVzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHVzaW5nIDxmaWxlbmFtZT5iaXRiYWtlLWR1bXBzaWdzPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gZXhhbWluZSB0aGUgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgdGFzaydzIOKAnHNpZ2RhdGHigJ0gZm9yIGEgQyBhcHBsaWNhdGlvbiAoZS5nLgorICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2g8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBSdW5uaW5nIHRoZSBjb21tYW5kIGFsc28gcmV2ZWFscyB0aGF0IHRoZSDigJxDQ+KAnSB2YXJpYWJsZSBpcyBwYXJ0IG9mCisgICAgICAgICAgICB0aGUgaW5wdXRzIHRoYXQgYXJlIGhhc2hlZC4KKyAgICAgICAgICAgIEFueSBjaGFuZ2VzIHRvIHRoaXMgdmFyaWFibGUgd291bGQgaW52YWxpZGF0ZSB0aGUgc3RhbXAgYW5kCisgICAgICAgICAgICBjYXVzZSB0aGUgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPiB0YXNrIHRvIHJ1bi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyByZWxhdGVkIHZhcmlhYmxlczoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBwYXRoIHRvIGNyZWF0ZSBzdGFtcCBmaWxlcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPlNUQU1QQ0xFQU48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBBZ2FpbiwgdGhlIGJhc2UgcGF0aCB0byBjcmVhdGUgc3RhbXAgZmlsZXMgYnV0IGNhbiB1c2Ugd2lsZGNhcmRzCi0gICAgICAgICAgICAgICAgICAgIGZvciBtYXRjaGluZyBhIHJhbmdlIG9mIGZpbGVzIGZvciBjbGVhbiBvcGVyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPkJCX1NUQU1QX1dISVRFTElTVDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIHN0YW1wIGZpbGVzIHRoYXQgYXJlIGxvb2tlZCBhdCB3aGVuIHRoZSBzdGFtcCBwb2xpY3kKLSAgICAgICAgICAgICAgICAgICAgaXMgIndoaXRlbGlzdCIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+QkJfU1RBTVBfUE9MSUNZPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgbW9kZSBmb3IgY29tcGFyaW5nIHRpbWVzdGFtcHMgb2Ygc3RhbXAgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+QkJfSEFTSENIRUNLX0ZVTkNUSU9OPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQl9IQVNIQ0hFQ0tfRlVOQ1RJT04nPjxmaWxlbmFtZT5CQl9IQVNIQ0hFQ0tfRlVOQ1RJT048L2ZpbGVuYW1lPjwvbGluaz46CiAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gdG8gY2FsbCBkdXJpbmcKICAgICAgICAgICAgICAgICAgICAgdGhlICJzZXRzY2VuZSIgcGFydCBvZiB0aGUgdGFzaydzIGV4ZWN1dGlvbiBpbiBvcmRlcgogICAgICAgICAgICAgICAgICAgICB0byB2YWxpZGF0ZSB0aGUgbGlzdCBvZiB0YXNrIGhhc2hlcy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5CQl9TRVRTQ0VORV9WRVJJRllfRlVOQ1RJT04yPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgZnVuY3Rpb24gdG8gY2FsbCB0aGF0IHZlcmlmaWVzIHRoZSBsaXN0IG9mCi0gICAgICAgICAgICAgICAgICAgIHBsYW5uZWQgdGFzayBleGVjdXRpb24gYmVmb3JlIHRoZSBtYWluIHRhc2sgZXhlY3V0aW9uCi0gICAgICAgICAgICAgICAgICAgIGhhcHBlbnMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+QkJfU0VUU0NFTkVfREVQVkFMSUQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX1NFVFNDRU5FX0RFUFZBTElEJz48ZmlsZW5hbWU+QkJfU0VUU0NFTkVfREVQVkFMSUQ8L2ZpbGVuYW1lPjwvbGluaz46CiAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGZ1bmN0aW9uIEJpdEJha2UgY2FsbHMgdGhhdCBkZXRlcm1pbmVzCiAgICAgICAgICAgICAgICAgICAgIHdoZXRoZXIgQml0QmFrZSByZXF1aXJlcyBhIHNldHNjZW5lIGRlcGVuZGVuY3kgdG8KICAgICAgICAgICAgICAgICAgICAgYmUgbWV0LgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPkJCX1RBU0tIQVNIPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQl9TRVRTQ0VORV9WRVJJRllfRlVOQ1RJT04yJz48ZmlsZW5hbWU+QkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OMjwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgZnVuY3Rpb24gdG8gY2FsbCB0aGF0IHZlcmlmaWVzIHRoZSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIHBsYW5uZWQgdGFzayBleGVjdXRpb24gYmVmb3JlIHRoZSBtYWluIHRhc2sgZXhlY3V0aW9uCisgICAgICAgICAgICAgICAgICAgIGhhcHBlbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX1NUQU1QX1BPTElDWSc+PGZpbGVuYW1lPkJCX1NUQU1QX1BPTElDWTwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgbW9kZSBmb3IgY29tcGFyaW5nIHRpbWVzdGFtcHMgb2Ygc3RhbXAgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX1NUQU1QX1dISVRFTElTVCc+PGZpbGVuYW1lPkJCX1NUQU1QX1dISVRFTElTVDwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgTGlzdHMgc3RhbXAgZmlsZXMgdGhhdCBhcmUgbG9va2VkIGF0IHdoZW4gdGhlIHN0YW1wIHBvbGljeQorICAgICAgICAgICAgICAgICAgICBpcyAid2hpdGVsaXN0Ii4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfVEFTS0hBU0gnPjxmaWxlbmFtZT5CQl9UQVNLSEFTSDwvZmlsZW5hbWU+PC9saW5rPjoKICAgICAgICAgICAgICAgICAgICAgV2l0aGluIGFuIGV4ZWN1dGluZyB0YXNrLCB0aGlzIHZhcmlhYmxlIGhvbGRzIHRoZSBoYXNoCiAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0YXNrIGFzIHJldHVybmVkIGJ5IHRoZSBjdXJyZW50bHkgZW5hYmxlZAogICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUgZ2VuZXJhdG9yLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFNUCc+PGZpbGVuYW1lPlNUQU1QPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBwYXRoIHRvIGNyZWF0ZSBzdGFtcCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBTVBDTEVBTic+PGZpbGVuYW1lPlNUQU1QQ0xFQU48L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIEFnYWluLCB0aGUgYmFzZSBwYXRoIHRvIGNyZWF0ZSBzdGFtcCBmaWxlcyBidXQgY2FuIHVzZSB3aWxkY2FyZHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIG1hdGNoaW5nIGEgcmFuZ2Ugb2YgZmlsZXMgZm9yIGNsZWFuIG9wZXJhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1yZWYtdmFyaWFibGVzLnhtbAppbmRleCBkODllMTIzLi4wMzEzMzU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKQEAgLTc4LDcgKzc4LDcgQEAKICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgSW4gT3BlbkVtYmVkZGVkIENvcmUsIDxmaWxlbmFtZT5BU1NVTUVfUFJPVklERUQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBJbiBPcGVuRW1iZWRkZWQtQ29yZSwgPGZpbGVuYW1lPkFTU1VNRV9QUk9WSURFRDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIG1vc3RseSBzcGVjaWZpZXMgbmF0aXZlIHRvb2xzIHRoYXQgc2hvdWxkIG5vdCBiZSBidWlsdC4KICAgICAgICAgICAgICAgICAgICAgQW4gZXhhbXBsZSBpcyA8ZmlsZW5hbWU+Z2l0LW5hdGl2ZTwvZmlsZW5hbWU+LCB3aGljaAogICAgICAgICAgICAgICAgICAgICB3aGVuIHNwZWNpZmllZCBhbGxvd3MgZm9yIHRoZSBHaXQgYmluYXJ5IGZyb20gdGhlIGhvc3QgdG8KQEAgLTk2NCw3ICs5NjQsNyBAQAogICAgICAgICAgICAgICAgICAgICBBbGxvd3MgeW91IHRvIGV4dGVuZCBhIHJlY2lwZSBzbyB0aGF0IGl0IGJ1aWxkcyB2YXJpYW50cwogICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc29mdHdhcmUuCiAgICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXMgb2YgdGhlc2UgdmFyaWFudHMgZm9yIHJlY2lwZXMgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIENvcmUgbWV0YWRhdGEgYXJlICJuYXRpdmVzIiBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZC1Db3JlIG1ldGFkYXRhIGFyZSAibmF0aXZlcyIgc3VjaCBhcwogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cXVpbHQtbmF0aXZlPC9maWxlbmFtZT4sIHdoaWNoIGlzIGEgY29weSBvZgogICAgICAgICAgICAgICAgICAgICBRdWlsdCBidWlsdCB0byBydW4gb24gdGhlIGJ1aWxkIHN5c3RlbTsgImNyb3NzZXMiIHN1Y2gKICAgICAgICAgICAgICAgICAgICAgYXMgPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+LCB3aGljaCBpcyBhIGNvbXBpbGVyCkBAIC05ODAsNyArOTgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgYW1vdW50IG9mIGNvZGUsIGl0IHVzdWFsbHkgaXMgYXMgc2ltcGxlIGFzIGFkZGluZyB0aGUKICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8geW91ciByZWNpcGUuCiAgICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHR3byBleGFtcGxlcy4KLSAgICAgICAgICAgICAgICAgICAgVGhlICJuYXRpdmUiIHZhcmlhbnRzIGFyZSBmcm9tIHRoZSBPcGVuRW1iZWRkZWQgQ29yZQorICAgICAgICAgICAgICAgICAgICBUaGUgIm5hdGl2ZSIgdmFyaWFudHMgYXJlIGZyb20gdGhlIE9wZW5FbWJlZGRlZC1Db3JlCiAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJCQ0xBU1NFWFRFTkQgPSsgIm5hdGl2ZSBuYXRpdmVzZGsiCkBAIC0yMDg5LDYgKzIwODksMTYgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVJFUE9ESVInPjxnbG9zc3Rlcm0+UkVQT0RJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIGEgbG9jYWwgY29weSBvZiBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nb29nbGUtcmVwbzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcyBzdG9yZWQKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBpdCBpcyBzeW5jZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUlBST1ZJREVTJz48Z2xvc3N0ZXJtPlJQUk9WSURFUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLnhtbAppbmRleCA0YWVmNGU3Li5kNzkzMjY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLnhtbApAQCAtNTYsNyArNTYsNyBAQAogLS0+CiAKICAgICAgICAgPGNvcHlyaWdodD4KLSAgICAgICAgICAgIDx5ZWFyPjIwMDQtMjAxNjwveWVhcj4KKyAgICAgICAgICAgIDx5ZWFyPjIwMDQtMjAxODwveWVhcj4KICAgICAgICAgICAgIDxob2xkZXI+UmljaGFyZCBQdXJkaWU8L2hvbGRlcj4KICAgICAgICAgICAgIDxob2xkZXI+Q2hyaXMgTGFyc29uPC9ob2xkZXI+CiAgICAgICAgICAgICA8aG9sZGVyPmFuZCBQaGlsIEJsdW5kZWxsPC9ob2xkZXI+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvX19pbml0X18ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvX19pbml0X18ucHkKaW5kZXggNTI2ODgzMS4uZDI0YWRiOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9fX2luaXRfXy5weQpAQCAtMjEsNyArMjEsNyBAQAogIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogCi1fX3ZlcnNpb25fXyA9ICIxLjM2LjAiCitfX3ZlcnNpb25fXyA9ICIxLjM4LjAiCiAKIGltcG9ydCBzeXMKIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNCwgMCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkKaW5kZXggMGQwMTAwYS4uNDYzMWFiZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2J1aWxkLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9idWlsZC5weQpAQCAtODcyLDYgKzg3MiwxMiBAQAogICAgIHRoYXQgdGhpcyBtYXkgbGVhZCB0byB0aGUgdGFzayBpdHNlbGYgYmVpbmcgbGlzdGVkLgogICAgICIiIgogICAgIHByZWNlZWQgPSBzZXQoKQorCisgICAgIyBJZ25vcmUgdGFza3Mgd2hpY2ggZG9uJ3QgZXhpc3QKKyAgICB0YXNrcyA9IGQuZ2V0VmFyKCdfX0JCVEFTS1MnLCBGYWxzZSkKKyAgICBpZiB0YXNrIG5vdCBpbiB0YXNrczoKKyAgICAgICAgcmV0dXJuIHByZWNlZWQKKwogICAgIHByZWNlZWQudXBkYXRlKGQuZ2V0VmFyRmxhZyh0YXNrLCAnZGVwcycpIG9yIFtdKQogICAgIGlmIHdpdGhfcmVjcmRlcHRhc2tzOgogICAgICAgICByZWNyZGVwdGFzayA9IGQuZ2V0VmFyRmxhZyh0YXNrLCAncmVjcmRlcHRhc2snKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5CmluZGV4IDg2Y2UwZTcuLjE2OGE3N2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jYWNoZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY2FjaGUucHkKQEAgLTM5NSw3ICszOTUsNyBAQAogICAgICAgICBzZWxmLmhhc19jYWNoZSA9IFRydWUKICAgICAgICAgc2VsZi5jYWNoZWZpbGUgPSBnZXRDYWNoZUZpbGUoc2VsZi5jYWNoZWRpciwgImJiX2NhY2hlLmRhdCIsIHNlbGYuZGF0YV9oYXNoKQogCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiVXNpbmcgY2FjaGUgaW4gJyVzJyIsIHNlbGYuY2FjaGVkaXIpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiQ2FjaGUgZGlyOiAlcyIsIHNlbGYuY2FjaGVkaXIpCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLmNhY2hlZGlyKQogCiAgICAgICAgIGNhY2hlX29rID0gVHJ1ZQpAQCAtNDA4LDYgKzQwOCw4IEBACiAgICAgICAgICAgICBzZWxmLmxvYWRfY2FjaGVmaWxlKCkKICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmNhY2hlZmlsZSk6CiAgICAgICAgICAgICBsb2dnZXIuaW5mbygiT3V0IG9mIGRhdGUgY2FjaGUgZm91bmQsIHJlYnVpbGRpbmcuLi4iKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJDYWNoZSBmaWxlICVzIG5vdCBmb3VuZCwgYnVpbGRpbmcuLi4iICUgc2VsZi5jYWNoZWZpbGUpCiAKICAgICBkZWYgbG9hZF9jYWNoZWZpbGUoc2VsZik6CiAgICAgICAgIGNhY2hlc2l6ZSA9IDAKQEAgLTQyNCw2ICs0MjYsNyBAQAogCiAgICAgICAgIGZvciBjYWNoZV9jbGFzcyBpbiBzZWxmLmNhY2hlc19hcnJheToKICAgICAgICAgICAgIGNhY2hlZmlsZSA9IGdldENhY2hlRmlsZShzZWxmLmNhY2hlZGlyLCBjYWNoZV9jbGFzcy5jYWNoZWZpbGUsIHNlbGYuZGF0YV9oYXNoKQorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICdMb2FkaW5nIGNhY2hlIGZpbGU6ICVzJyAlIGNhY2hlZmlsZSkKICAgICAgICAgICAgIHdpdGggb3BlbihjYWNoZWZpbGUsICJyYiIpIGFzIGNhY2hlZmlsZToKICAgICAgICAgICAgICAgICBwaWNrbGVkID0gcGlja2xlLlVucGlja2xlcihjYWNoZWZpbGUpCiAgICAgICAgICAgICAgICAgIyBDaGVjayBjYWNoZSB2ZXJzaW9uIGluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlci5weQppbmRleCBjN2ZkZDcyLi4xZmRhNDBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKQEAgLTUxNiw2ICs1MTYsOCBAQAogICAgICAgICAgICAgZm4gPSBydW5saXN0WzBdWzNdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbnZkYXRhID0gc2VsZi5kYXRhCisgICAgICAgICAgICBkYXRhLmV4cGFuZEtleXMoZW52ZGF0YSkKKyAgICAgICAgICAgIHBhcnNlLmFzdC5ydW5Bbm9uRnVuY3MoZW52ZGF0YSkKIAogICAgICAgICBpZiBmbjoKICAgICAgICAgICAgIHRyeToKQEAgLTUzNiw3ICs1MzgsNiBAQAogICAgICAgICAgICAgbG9nZ2VyLnBsYWluKGVudi5nZXR2YWx1ZSgpKQogCiAgICAgICAgICMgZW1pdCB0aGUgbWV0YWRhdGEgd2hpY2ggaXNudCB2YWxpZCBzaGVsbAotICAgICAgICBkYXRhLmV4cGFuZEtleXMoZW52ZGF0YSkKICAgICAgICAgZm9yIGUgaW4gc29ydGVkKGVudmRhdGEua2V5cygpKToKICAgICAgICAgICAgIGlmIGVudmRhdGEuZ2V0VmFyRmxhZyhlLCAnZnVuYycsIEZhbHNlKSBhbmQgZW52ZGF0YS5nZXRWYXJGbGFnKGUsICdweXRob24nLCBGYWxzZSk6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluKCJcbnB5dGhvbiAlcyAoKSB7XG4lc31cbiIsIGUsIGVudmRhdGEuZ2V0VmFyKGUsIEZhbHNlKSkKQEAgLTg1NiwxMiArODU3LDEyIEBACiAKICAgICAgICAgd2l0aCBvcGVuKCd0YXNrLWRlcGVuZHMuZG90JywgJ3cnKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgiZGlncmFwaCBkZXBlbmRzIHtcbiIpCi0gICAgICAgICAgICBmb3IgdGFzayBpbiBkZXBncmFwaFsidGRlcGVuZHMiXToKKyAgICAgICAgICAgIGZvciB0YXNrIGluIHNvcnRlZChkZXBncmFwaFsidGRlcGVuZHMiXSk6CiAgICAgICAgICAgICAgICAgKHBuLCB0YXNrbmFtZSkgPSB0YXNrLnJzcGxpdCgiLiIsIDEpCiAgICAgICAgICAgICAgICAgZm4gPSBkZXBncmFwaFsicG4iXVtwbl1bImZpbGVuYW1lIl0KICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZGVwZ3JhcGhbInBuIl1bcG5dWyJ2ZXJzaW9uIl0KICAgICAgICAgICAgICAgICBmLndyaXRlKCciJXMuJXMiIFtsYWJlbD0iJXMgJXNcXG4lc1xcbiVzIl1cbicgJSAocG4sIHRhc2tuYW1lLCBwbiwgdGFza25hbWUsIHZlcnNpb24sIGZuKSkKLSAgICAgICAgICAgICAgICBmb3IgZGVwIGluIGRlcGdyYXBoWyJ0ZGVwZW5kcyJdW3Rhc2tdOgorICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gc29ydGVkKGRlcGdyYXBoWyJ0ZGVwZW5kcyJdW3Rhc2tdKToKICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnIiVzIiAtPiAiJXMiXG4nICUgKHRhc2ssIGRlcCkpCiAgICAgICAgICAgICBmLndyaXRlKCJ9XG4iKQogICAgICAgICBsb2dnZXIuaW5mbygiVGFzayBkZXBlbmRlbmNpZXMgc2F2ZWQgdG8gJ3Rhc2stZGVwZW5kcy5kb3QnIikKQEAgLTg2OSwyMyArODcwLDIzIEBACiAgICAgICAgIHdpdGggb3BlbigncmVjaXBlLWRlcGVuZHMuZG90JywgJ3cnKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgiZGlncmFwaCBkZXBlbmRzIHtcbiIpCiAgICAgICAgICAgICBwbmRlcHMgPSB7fQotICAgICAgICAgICAgZm9yIHRhc2sgaW4gZGVwZ3JhcGhbInRkZXBlbmRzIl06CisgICAgICAgICAgICBmb3IgdGFzayBpbiBzb3J0ZWQoZGVwZ3JhcGhbInRkZXBlbmRzIl0pOgogICAgICAgICAgICAgICAgIChwbiwgdGFza25hbWUpID0gdGFzay5yc3BsaXQoIi4iLCAxKQogICAgICAgICAgICAgICAgIGlmIHBuIG5vdCBpbiBwbmRlcHM6CiAgICAgICAgICAgICAgICAgICAgIHBuZGVwc1twbl0gPSBzZXQoKQotICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gZGVwZ3JhcGhbInRkZXBlbmRzIl1bdGFza106CisgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBzb3J0ZWQoZGVwZ3JhcGhbInRkZXBlbmRzIl1bdGFza10pOgogICAgICAgICAgICAgICAgICAgICAoZGVwcG4sIGRlcHRhc2tuYW1lKSA9IGRlcC5yc3BsaXQoIi4iLCAxKQogICAgICAgICAgICAgICAgICAgICBwbmRlcHNbcG5dLmFkZChkZXBwbikKLSAgICAgICAgICAgIGZvciBwbiBpbiBwbmRlcHM6CisgICAgICAgICAgICBmb3IgcG4gaW4gc29ydGVkKHBuZGVwcyk6CiAgICAgICAgICAgICAgICAgZm4gPSBkZXBncmFwaFsicG4iXVtwbl1bImZpbGVuYW1lIl0KICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZGVwZ3JhcGhbInBuIl1bcG5dWyJ2ZXJzaW9uIl0KICAgICAgICAgICAgICAgICBmLndyaXRlKCciJXMiIFtsYWJlbD0iJXNcXG4lc1xcbiVzIl1cbicgJSAocG4sIHBuLCB2ZXJzaW9uLCBmbikpCi0gICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBwbmRlcHNbcG5dOgorICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gc29ydGVkKHBuZGVwc1twbl0pOgogICAgICAgICAgICAgICAgICAgICBpZiBkZXAgPT0gcG46CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCciJXMiIC0+ICIlcyJcbicgJSAocG4sIGRlcCkpCiAgICAgICAgICAgICBmLndyaXRlKCJ9XG4iKQotICAgICAgICBsb2dnZXIuaW5mbygiRmxhdGVuZWQgcmVjaXBlIGRlcGVuZGVuY2llcyBzYXZlZCB0byAncmVjaXBlLWRlcGVuZHMuZG90JyIpCisgICAgICAgIGxvZ2dlci5pbmZvKCJGbGF0dGVuZWQgcmVjaXBlIGRlcGVuZGVuY2llcyBzYXZlZCB0byAncmVjaXBlLWRlcGVuZHMuZG90JyIpCiAKICAgICBkZWYgc2hvd19hcHBlbmRzX3dpdGhfbm9fcmVjaXBlcyhzZWxmKToKICAgICAgICAgIyBEZXRlcm1pbmUgd2hpY2ggYmJhcHBlbmRzIGhhdmVuJ3QgYmVlbiBhcHBsaWVkCkBAIC0xMTcwLDYgKzExNzEsNyBAQAogICAgICAgICAgICAgICAgIGVsaWYgcmVnZXggPT0gIiI6CiAgICAgICAgICAgICAgICAgICAgIHBhcnNlbG9nLmRlYnVnKDEsICJCQkZJTEVfUEFUVEVSTl8lcyBpcyBlbXB0eSIgJSBjKQogICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIGNyZSA9IHJlLmNvbXBpbGUocmVnZXgpCkBAIC0xNjAzLDggKzE2MDUsNiBAQAogCiAgICAgICAgIGlmIHNlbGYucGFyc2VyOgogICAgICAgICAgICAgc2VsZi5wYXJzZXIuc2h1dGRvd24oY2xlYW49bm90IGZvcmNlLCBmb3JjZT1mb3JjZSkKLSAgICAgICAgc2VsZi5ub3RpZmllci5zdG9wKCkKLSAgICAgICAgc2VsZi5jb25maWdub3RpZmllci5zdG9wKCkKIAogICAgIGRlZiBmaW5pc2hjb21tYW5kKHNlbGYpOgogICAgICAgICBzZWxmLnN0YXRlID0gc3RhdGUuaW5pdGlhbApAQCAtMTgwNywyMSArMTgwNywyNSBAQAogICAgICAgICAgICAgcmVhbGZuLCBjbHMsIG1jID0gYmIuY2FjaGUudmlydHVhbGZuMnJlYWxmbihwKQogICAgICAgICAgICAgcHJpb3JpdGllc1twXSA9IHNlbGYuY2FsY19iYmZpbGVfcHJpb3JpdHkocmVhbGZuLCBtYXRjaGVkKQogCi0gICAgICAgICMgRG9uJ3Qgc2hvdyB0aGUgd2FybmluZyBpZiB0aGUgQkJGSUxFX1BBVFRFUk4gZGlkIG1hdGNoIC5iYmFwcGVuZCBmaWxlcwogICAgICAgICB1bm1hdGNoZWQgPSBzZXQoKQogICAgICAgICBmb3IgXywgXywgcmVnZXgsIHByaSBpbiBzZWxmLmJiZmlsZV9jb25maWdfcHJpb3JpdGllczoKICAgICAgICAgICAgIGlmIG5vdCByZWdleCBpbiBtYXRjaGVkOgogICAgICAgICAgICAgICAgIHVubWF0Y2hlZC5hZGQocmVnZXgpCiAKLSAgICAgICAgZGVmIGZpbmRtYXRjaChyZWdleCk6CisgICAgICAgICMgRG9uJ3Qgc2hvdyB0aGUgd2FybmluZyBpZiB0aGUgQkJGSUxFX1BBVFRFUk4gZGlkIG1hdGNoIC5iYmFwcGVuZCBmaWxlcworICAgICAgICBkZWYgZmluZF9iYmFwcGVuZF9tYXRjaChyZWdleCk6CiAgICAgICAgICAgICBmb3IgYiBpbiBzZWxmLmJiYXBwZW5kczoKICAgICAgICAgICAgICAgICAoYmJmaWxlLCBhcHBlbmQpID0gYgogICAgICAgICAgICAgICAgIGlmIHJlZ2V4Lm1hdGNoKGFwcGVuZCk6CisgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlIGJiYXBwZW5kIGlzIG1hdGNoZWQgYnkgYWxyZWFkeSAibWF0Y2hlZCBzZXQiLCByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgZm9yIG1hdGNoZWRfcmVnZXggaW4gbWF0Y2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoZWRfcmVnZXgubWF0Y2goYXBwZW5kKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIGZvciB1bm1hdGNoIGluIHVubWF0Y2hlZC5jb3B5KCk6Ci0gICAgICAgICAgICBpZiBmaW5kbWF0Y2godW5tYXRjaCk6CisgICAgICAgICAgICBpZiBmaW5kX2JiYXBwZW5kX21hdGNoKHVubWF0Y2gpOgogICAgICAgICAgICAgICAgIHVubWF0Y2hlZC5yZW1vdmUodW5tYXRjaCkKIAogICAgICAgICBmb3IgY29sbGVjdGlvbiwgcGF0dGVybiwgcmVnZXgsIF8gaW4gc2VsZi5iYmZpbGVfY29uZmlnX3ByaW9yaXRpZXM6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29va2VyZGF0YS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5CmluZGV4IGZhYjQ3YzcuLjVkZjY2ZTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5CkBAIC0xNDMsNyArMTQzLDggQEAKICAgICAgICAgc2VsZi53cml0ZWV2ZW50bG9nID0gRmFsc2UKICAgICAgICAgc2VsZi5zZXJ2ZXJfb25seSA9IEZhbHNlCiAgICAgICAgIHNlbGYubGltaXRlZF9kZXBzID0gRmFsc2UKLSAgICAgICAgc2VsZi5ydW5hbGwgPSBOb25lCisgICAgICAgIHNlbGYucnVuYWxsID0gW10KKyAgICAgICAgc2VsZi5ydW5vbmx5ID0gW10KIAogICAgICAgICBzZWxmLmVudiA9IHt9CiAKQEAgLTM5NSw2ICszOTYsOCBAQAogICAgICAgICAgICAgICAgIGlmIGNvbXBhdCBhbmQgbm90IChjb21wYXQgJiBsYXllcnNlcmllcyk6CiAgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJMYXllciAlcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBjb3JlIGxheWVyIHdoaWNoIG9ubHkgc3VwcG9ydHMgdGhlc2Ugc2VyaWVzOiAlcyAobGF5ZXIgaXMgY29tcGF0aWJsZSB3aXRoICVzKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGMsICIgIi5qb2luKGxheWVyc2VyaWVzKSwgIiAiLmpvaW4oY29tcGF0KSkpCisgICAgICAgICAgICAgICAgZWxpZiBub3QgY29tcGF0IGFuZCBub3QgZGF0YS5nZXRWYXIoIkJCX1dPUktFUkNPTlRFWFQiKToKKyAgICAgICAgICAgICAgICAgICAgYmIud2FybigiTGF5ZXIgJXMgc2hvdWxkIHNldCBMQVlFUlNFUklFU19DT01QQVRfJXMgaW4gaXRzIGNvbmYvbGF5ZXIuY29uZiBmaWxlIHRvIGxpc3QgdGhlIGNvcmUgbGF5ZXIgbmFtZXMgaXQgaXMgY29tcGF0aWJsZSB3aXRoLiIgJSAoYywgYykpCiAKICAgICAgICAgaWYgbm90IGRhdGEuZ2V0VmFyKCJCQlBBVEgiKToKICAgICAgICAgICAgIG1zZyA9ICJUaGUgQkJQQVRIIHZhcmlhYmxlIGlzIG5vdCBzZXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkKaW5kZXggNTIwNzJiNS4uNWQwMDQ5NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weQpAQCAtNDQ5LDEyICs0NDksNiBAQAogICAgIGRlZiBzZXROYW1lKHNlbGYsIG5hbWUpOgogICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQogCi0gICAgZGVmIGdldENmZyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YQotCi0gICAgZGVmIHNldENmZyhzZWxmLCBjZmcpOgotICAgICAgICBzZWxmLmRhdGEgPSBjZmcKLQogICAgIGRlZiBnZXRGYWlsdXJlcyhzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGZhaWxlZCBwYWNrYWdlcwpAQCAtNDYzLDkgKzQ1Nyw2IEBACiAKICAgICBwa2dzID0gcHJvcGVydHkoZ2V0UGtncywgc2V0UGtncywgTm9uZSwgInBrZ3MgcHJvcGVydHkiKQogICAgIG5hbWUgPSBwcm9wZXJ0eShnZXROYW1lLCBzZXROYW1lLCBOb25lLCAibmFtZSBwcm9wZXJ0eSIpCi0gICAgY2ZnID0gcHJvcGVydHkoZ2V0Q2ZnLCBzZXRDZmcsIE5vbmUsICJjZmcgcHJvcGVydHkiKQotCi0KIAogY2xhc3MgQnVpbGRJbml0KEJ1aWxkQmFzZSk6CiAgICAgIiIiYnVpbGRGaWxlIG9yIGJ1aWxkVGFyZ2V0cyB3YXMgaW52b2tlZCIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvX19pbml0X18ucHkKaW5kZXggZjcwZjFiNS4uNzJkNjA5MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CkBAIC02NDMsMjYgKzY0MywyNSBAQAogICAgIGlmIG5vdCB1ZC5uZWVkZG9uZXN0YW1wIG9yIChvcmlndWQgYW5kIG5vdCBvcmlndWQubmVlZGRvbmVzdGFtcCk6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQuZG9uZXN0YW1wKToKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKToKKyAgICAgICAgIyBsb2NhbCBwYXRoIGRvZXMgbm90IGV4aXN0CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHVkLmRvbmVzdGFtcCk6CisgICAgICAgICAgICAjIGRvbmUgc3RhbXAgZXhpc3RzLCBidXQgdGhlIGRvd25sb2FkZWQgZmlsZSBkb2VzIG5vdDsgdGhlIGRvbmUgc3RhbXAKKyAgICAgICAgICAgICMgbXVzdCBiZSBpbmNvcnJlY3QsIHJlLXRyaWdnZXIgdGhlIGRvd25sb2FkCisgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUodWQuZG9uZXN0YW1wKQogICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGlmIChub3QgdWQubWV0aG9kLnN1cHBvcnRzX2NoZWNrc3VtKHVkKSBvcgogICAgICAgICAob3JpZ3VkIGFuZCBub3Qgb3JpZ3VkLm1ldGhvZC5zdXBwb3J0c19jaGVja3N1bShvcmlndWQpKSk6Ci0gICAgICAgICMgZG9uZSBzdGFtcCBleGlzdHMsIGNoZWNrc3VtcyBub3Qgc3VwcG9ydGVkOyBhc3N1bWUgdGhlIGxvY2FsIGZpbGUgaXMKLSAgICAgICAgIyBjdXJyZW50Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKToKLSAgICAgICAgIyBkb25lIHN0YW1wIGV4aXN0cywgYnV0IHRoZSBkb3dubG9hZGVkIGZpbGUgZG9lcyBub3Q7IHRoZSBkb25lIHN0YW1wCi0gICAgICAgICMgbXVzdCBiZSBpbmNvcnJlY3QsIHJlLXRyaWdnZXIgdGhlIGRvd25sb2FkCi0gICAgICAgIGJiLnV0aWxzLnJlbW92ZSh1ZC5kb25lc3RhbXApCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAjIGlmIGRvbmUgc3RhbXAgZXhpc3RzIGFuZCBjaGVja3N1bXMgbm90IHN1cHBvcnRlZDsgYXNzdW1lIHRoZSBsb2NhbAorICAgICAgICAjIGZpbGUgaXMgY3VycmVudAorICAgICAgICByZXR1cm4gb3MucGF0aC5leGlzdHModWQuZG9uZXN0YW1wKQogCiAgICAgcHJlY29tcHV0ZWRfY2hlY2tzdW1zID0ge30KICAgICAjIE9ubHkgcmUtdXNlIHRoZSBwcmVjb21wdXRlZCBjaGVja3N1bXMgaWYgdGhlIGRvbmVzdGFtcCBpcyBuZXdlciB0aGFuIHRoZQogICAgICMgZmlsZS4gRG8gbm90IHJlbHkgb24gdGhlIG10aW1lIG9mIGRpcmVjdG9yaWVzLCB0aG91Z2guIElmIHVkLmxvY2FscGF0aCBpcwogICAgICMgYSBkaXJlY3RvcnksIHRoZXJlIHdpbGwgcHJvYmFibHkgbm90IGJlIGFueSBjaGVja3N1bXMgYW55d2F5LgotICAgIGlmIChvcy5wYXRoLmlzZGlyKHVkLmxvY2FscGF0aCkgb3IKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyh1ZC5kb25lc3RhbXApIGFuZCAob3MucGF0aC5pc2Rpcih1ZC5sb2NhbHBhdGgpIG9yCiAgICAgICAgICAgICBvcy5wYXRoLmdldG10aW1lKHVkLmxvY2FscGF0aCkgPCBvcy5wYXRoLmdldG10aW1lKHVkLmRvbmVzdGFtcCkpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aXRoIG9wZW4odWQuZG9uZXN0YW1wLCAicmIiKSBhcyBjYWNoZWZpbGU6CkBAIC04NTMsNiArODUyLDkgQEAKICAgICAgICAgaWYgdmFsOgogICAgICAgICAgICAgY21kID0gJ2V4cG9ydCAnICsgdmFyICsgJz1cIiVzXCI7ICVzJyAlICh2YWwsIGNtZCkKIAorICAgICMgRGlzYWJsZSBwc2V1ZG8gYXMgaXQgbWF5IGFmZmVjdCBzc2gsIHBvdGVudGlhbGx5IGNhdXNpbmcgaXQgdG8gaGFuZy4KKyAgICBjbWQgPSAnZXhwb3J0IFBTRVVET19ESVNBQkxFRD0xOyAnICsgY21kCisKICAgICBsb2dnZXIuZGVidWcoMSwgIlJ1bm5pbmcgJXMiLCBjbWQpCiAKICAgICBzdWNjZXNzID0gRmFsc2UKQEAgLTE0MjQsNyArMTQyNiw3IEBACiAgICAgICAgICAgICAgICAgY21kID0gJ2d6aXAgLWRjICVzID4gJXMnICUgKGZpbGUsIGVmaWxlKQogICAgICAgICAgICAgZWxpZiBmaWxlLmVuZHN3aXRoKCcuYnoyJyk6CiAgICAgICAgICAgICAgICAgY21kID0gJ2J6aXAyIC1kYyAlcyA+ICVzJyAlIChmaWxlLCBlZmlsZSkKLSAgICAgICAgICAgIGVsaWYgZmlsZS5lbmRzd2l0aCgnLnRhci54eicpOgorICAgICAgICAgICAgZWxpZiBmaWxlLmVuZHN3aXRoKCcudHh6Jykgb3IgZmlsZS5lbmRzd2l0aCgnLnRhci54eicpOgogICAgICAgICAgICAgICAgIGNtZCA9ICd4eiAtZGMgJXMgfCB0YXIgeCAtLW5vLXNhbWUtb3duZXIgLWYgLScgJSBmaWxlCiAgICAgICAgICAgICBlbGlmIGZpbGUuZW5kc3dpdGgoJy54eicpOgogICAgICAgICAgICAgICAgIGNtZCA9ICd4eiAtZGMgJXMgPiAlcycgJSAoZmlsZSwgZWZpbGUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5CmluZGV4IDVlZjhjZDYuLjNkZTgzYmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5CkBAIC0xMjUsNiArMTI1LDkgQEAKIAogCiBjbGFzcyBHaXQoRmV0Y2hNZXRob2QpOgorICAgIGJpdGJha2VfZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKSwgJy4uJywgJy4uJywgJy4uJykpCisgICAgbWFrZV9zaGFsbG93X3BhdGggPSBvcy5wYXRoLmpvaW4oYml0YmFrZV9kaXIsICdiaW4nLCAnZ2l0LW1ha2Utc2hhbGxvdycpCisKICAgICAiIiJDbGFzcyB0byBmZXRjaCBhIG1vZHVsZSBvciBtb2R1bGVzIGZyb20gZ2l0IHJlcG9zaXRvcmllcyIiIgogICAgIGRlZiBpbml0KHNlbGYsIGQpOgogICAgICAgICBwYXNzCkBAIC0zNjMsNiArMzY2LDcgQEAKICAgICAgICAgICAgIHByb2dyZXNzaGFuZGxlciA9IEdpdFByb2dyZXNzSGFuZGxlcihkKQogICAgICAgICAgICAgcnVuZmV0Y2hjbWQoZmV0Y2hfY21kLCBkLCBsb2c9cHJvZ3Jlc3NoYW5kbGVyLCB3b3JrZGlyPXVkLmNsb25lZGlyKQogICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIHBydW5lLXBhY2tlZCIgJSB1ZC5iYXNlY21kLCBkLCB3b3JrZGlyPXVkLmNsb25lZGlyKQorICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIHBhY2stcmVmcyAtLWFsbCIgJSB1ZC5iYXNlY21kLCBkLCB3b3JrZGlyPXVkLmNsb25lZGlyKQogICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIHBhY2stcmVkdW5kYW50IC0tYWxsIHwgeGFyZ3MgLXIgcm0iICUgdWQuYmFzZWNtZCwgZCwgd29ya2Rpcj11ZC5jbG9uZWRpcikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy51bmxpbmsodWQuZnVsbG1pcnJvcikKQEAgLTQ0NSw3ICs0NDksNyBAQAogICAgICAgICAgICAgICAgIHNoYWxsb3dfYnJhbmNoZXMuYXBwZW5kKHIpCiAKICAgICAgICAgIyBNYWtlIHRoZSByZXBvc2l0b3J5IHNoYWxsb3cKLSAgICAgICAgc2hhbGxvd19jbWQgPSBbJ2dpdCcsICdtYWtlLXNoYWxsb3cnLCAnLXMnXQorICAgICAgICBzaGFsbG93X2NtZCA9IFtzZWxmLm1ha2Vfc2hhbGxvd19wYXRoLCAnLXMnXQogICAgICAgICBmb3IgYiBpbiBzaGFsbG93X2JyYW5jaGVzOgogICAgICAgICAgICAgc2hhbGxvd19jbWQuYXBwZW5kKCctcicpCiAgICAgICAgICAgICBzaGFsbG93X2NtZC5hcHBlbmQoYikKQEAgLTU5MSw3ICs1OTUsOCBAQAogICAgICAgICB0YWdyZWdleCA9IHJlLmNvbXBpbGUoZC5nZXRWYXIoJ1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYJykgb3IgIig/UDxwdmVyPihbMC05XVtcLnxfXT8pKykiKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLl9sc3JlbW90ZSh1ZCwgZCwgInJlZnMvdGFncy8qIikKLSAgICAgICAgZXhjZXB0IGJiLmZldGNoMi5GZXRjaEVycm9yIG9yIGJiLmZldGNoMi5OZXR3b3JrQWNjZXNzOgorICAgICAgICBleGNlcHQgKGJiLmZldGNoMi5GZXRjaEVycm9yLCBiYi5mZXRjaDIuTmV0d29ya0FjY2VzcykgYXMgZToKKyAgICAgICAgICAgIGJiLm5vdGUoIkNvdWxkIG5vdCBsaXN0IHJlbW90ZTogJXMiICUgc3RyKGUpKQogICAgICAgICAgICAgcmV0dXJuIHB1cHZlcgogCiAgICAgICAgIHZlcnN0cmluZyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtLnB5CmluZGV4IGI1ZjE0OGMuLjczMGMzNDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtLnB5CkBAIC0xOTUsOSArMTk1LDExIEBACiAgICAgICAgIG91dHB1dHVybCA9IHBkYXRhWydkaXN0J11bJ3RhcmJhbGwnXQogICAgICAgICBkYXRhW3BrZ10gPSB7fQogICAgICAgICBkYXRhW3BrZ11bJ3RneiddID0gb3MucGF0aC5iYXNlbmFtZShvdXRwdXR1cmwpCi0gICAgICAgIGlmIG5vdCBvdXRwdXR1cmwgaW4gZmV0Y2hlZGxpc3Q6Ci0gICAgICAgICAgICBzZWxmLl9ydW53Z2V0KHVkLCBkLCAiJXMgLS1kaXJlY3RvcnktcHJlZml4PSVzICVzIiAlIChzZWxmLmJhc2VjbWQsIHVkLnByZWZpeGRpciwgb3V0cHV0dXJsKSwgRmFsc2UpCi0gICAgICAgICAgICBmZXRjaGVkbGlzdC5hcHBlbmQob3V0cHV0dXJsKQorICAgICAgICBpZiBvdXRwdXR1cmwgaW4gZmV0Y2hlZGxpc3Q6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLl9ydW53Z2V0KHVkLCBkLCAiJXMgLS1kaXJlY3RvcnktcHJlZml4PSVzICVzIiAlIChzZWxmLmJhc2VjbWQsIHVkLnByZWZpeGRpciwgb3V0cHV0dXJsKSwgRmFsc2UpCisgICAgICAgIGZldGNoZWRsaXN0LmFwcGVuZChvdXRwdXR1cmwpCiAKICAgICAgICAgZGVwZW5kZW5jaWVzID0gcGRhdGEuZ2V0KCdkZXBlbmRlbmNpZXMnLCB7fSkKICAgICAgICAgb3B0aW9uYWxEZXBlbmRlbmNpZXMgPSBwZGF0YS5nZXQoJ29wdGlvbmFsRGVwZW5kZW5jaWVzJywge30pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkKaW5kZXggN2M0OWMyYi4uOGY1MDViNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi93Z2V0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvd2dldC5weQpAQCAtMjUwLDYgKzI1MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICBjbG9zZWQgPSBGYWxzZQogCiAgICAgICAgICAgICAgICAgcmVzcCA9IGFkZGluZm91cmwoZnBfZHVtbXkoKSwgci5tc2csIHJlcS5nZXRfZnVsbF91cmwoKSkKICAgICAgICAgICAgICAgICByZXNwLmNvZGUgPSByLnN0YXR1cwpAQCAtMzMyLDcgKzMzMyw4IEBACiAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgSW1wb3J0RXJyb3IsIElPRXJyb3IsIG5ldHJjLk5ldHJjUGFyc2VFcnJvcik6CiAgICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICAgICAgb3BlbmVyLm9wZW4ocikKKyAgICAgICAgICAgIHdpdGggb3BlbmVyLm9wZW4ocikgYXMgcmVzcG9uc2U6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBleGNlcHQgdXJsbGliLmVycm9yLlVSTEVycm9yIGFzIGU6CiAgICAgICAgICAgICBpZiB0cnlfYWdhaW46CiAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJjaGVja3N0YXR1czogdHJ5aW5nIGFnYWluIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9tYWluLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL21haW4ucHkKaW5kZXggNzcxMWIyOS4uZjQ0NzRlNCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL21haW4ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL21haW4ucHkKQEAgLTI5Miw4ICsyOTIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iV3JpdGVzIHRoZSBldmVudCBsb2cgb2YgdGhlIGJ1aWxkIHRvIGEgYml0YmFrZSBldmVudCBqc29uIGZpbGUuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXNlICcnIChlbXB0eSBzdHJpbmcpIHRvIGFzc2lnbiB0aGUgbmFtZSBhdXRvbWF0aWNhbGx5LiIpCiAKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXJ1bmFsbCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJydW5hbGwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSdW4gdGhlIHNwZWNpZmllZCB0YXNrIGZvciBhbGwgYnVpbGQgdGFyZ2V0cyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiIpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1ydW5hbGwiLCBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InJ1bmFsbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlJ1biB0aGUgc3BlY2lmaWVkIHRhc2sgZm9yIGFueSByZWNpcGUgaW4gdGhlIHRhc2tncmFwaCBvZiB0aGUgc3BlY2lmaWVkIHRhcmdldCAoZXZlbiBpZiBpdCB3b3VsZG4ndCBvdGhlcndpc2UgaGF2ZSBydW4pLiIpCisKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXJ1bm9ubHkiLCBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InJ1bm9ubHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSdW4gb25seSB0aGUgc3BlY2lmaWVkIHRhc2sgd2l0aGluIHRoZSB0YXNrZ3JhcGggb2YgdGhlIHNwZWNpZmllZCB0YXJnZXRzIChhbmQgYW55IHRhc2sgZGVwZW5kZW5jaWVzIHRob3NlIHRhc2tzIG1heSBoYXZlKS4iKQorCiAKICAgICAgICAgb3B0aW9ucywgdGFyZ2V0cyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9fX2luaXRfXy5weQppbmRleCAyZmM0MDAyLi41Mzk3ZDU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvX19pbml0X18ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL19faW5pdF9fLnB5CkBAIC0xMzQsOCArMTM0LDkgQEAKICAgICAgICAgaWYgbm90IG5ld2ZuOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcihlcnJuby5FTk9FTlQsICJmaWxlICVzIG5vdCBmb3VuZCBpbiAlcyIgJSAoZm4sIGJicGF0aCkpCiAgICAgICAgIGZuID0gbmV3Zm4KKyAgICBlbHNlOgorICAgICAgICBtYXJrX2RlcGVuZGVuY3koZCwgZm4pCiAKLSAgICBtYXJrX2RlcGVuZGVuY3koZCwgZm4pCiAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGZuKToKICAgICAgICAgcmFpc2UgSU9FcnJvcihlcnJuby5FTk9FTlQsICJmaWxlICVzIG5vdCBmb3VuZCIgJSBmbikKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9hc3QucHkKaW5kZXggZGJhNDU0MC4uNjY5MGRjNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5CkBAIC0zMzUsNiArMzM1LDEyIEBACiAgICAgY2xhc3NlcyA9IG0uZ3JvdXAoMSkKICAgICBzdGF0ZW1lbnRzLmFwcGVuZChJbmhlcml0Tm9kZShmaWxlbmFtZSwgbGluZW5vLCBjbGFzc2VzKSkKIAorZGVmIHJ1bkFub25GdW5jcyhkKToKKyAgICBjb2RlID0gW10KKyAgICBmb3IgZnVuY25hbWUgaW4gZC5nZXRWYXIoIl9fQkJBTk9ORlVOQ1MiLCBGYWxzZSkgb3IgW106CisgICAgICAgIGNvZGUuYXBwZW5kKCIlcyhkKSIgJSBmdW5jbmFtZSkKKyAgICBiYi51dGlscy5iZXR0ZXJfZXhlYygiXG4iLmpvaW4oY29kZSksIHsiZCI6IGR9KQorCiBkZWYgZmluYWxpemUoZm4sIGQsIHZhcmlhbnQgPSBOb25lKToKICAgICBzYXZlZF9oYW5kbGVycyA9IGJiLmV2ZW50LmdldF9oYW5kbGVycygpLmNvcHkoKQogCkBAIC0zNDksMTAgKzM1NSw3IEBACiAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5SZWNpcGVQcmVGaW5hbGlzZShmbiksIGQpCiAKICAgICBiYi5kYXRhLmV4cGFuZEtleXMoZCkKLSAgICBjb2RlID0gW10KLSAgICBmb3IgZnVuY25hbWUgaW4gZC5nZXRWYXIoIl9fQkJBTk9ORlVOQ1MiLCBGYWxzZSkgb3IgW106Ci0gICAgICAgIGNvZGUuYXBwZW5kKCIlcyhkKSIgJSBmdW5jbmFtZSkKLSAgICBiYi51dGlscy5iZXR0ZXJfZXhlYygiXG4iLmpvaW4oY29kZSksIHsiZCI6IGR9KQorICAgIHJ1bkFub25GdW5jcyhkKQogCiAgICAgdGFza2xpc3QgPSBkLmdldFZhcignX19CQlRBU0tTJywgRmFsc2UpIG9yIFtdCiAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5SZWNpcGVUYXNrUHJlUHJvY2VzcyhmbiwgbGlzdCh0YXNrbGlzdCkpLCBkKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9CQkhhbmRsZXIucHkKaW5kZXggZjg5YWQyNC4uZTUwMzllMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5CkBAIC0xMzEsOSArMTMxLDYgQEAKIAogICAgIGFic19mbiA9IHJlc29sdmVfZmlsZShmbiwgZCkKIAotICAgIGlmIGluY2x1ZGU6Ci0gICAgICAgIGJiLnBhcnNlLm1hcmtfZGVwZW5kZW5jeShkLCBhYnNfZm4pCi0KICAgICAjIGFjdHVhbCBsb2FkaW5nCiAgICAgc3RhdGVtZW50cyA9IGdldF9zdGF0ZW1lbnRzKGZuLCBhYnNfZm4sIGJhc2VfbmFtZSkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0NvbmZIYW5kbGVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0NvbmZIYW5kbGVyLnB5CmluZGV4IDk3YWExMzAuLjlkM2ViZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9Db25mSGFuZGxlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQ29uZkhhbmRsZXIucHkKQEAgLTEzNCw5ICsxMzQsNiBAQAogICAgIGFic19mbiA9IHJlc29sdmVfZmlsZShmbiwgZGF0YSkKICAgICBmID0gb3BlbihhYnNfZm4sICdyJykKIAotICAgIGlmIGluY2x1ZGU6Ci0gICAgICAgIGJiLnBhcnNlLm1hcmtfZGVwZW5kZW5jeShkYXRhLCBhYnNfZm4pCi0KICAgICBzdGF0ZW1lbnRzID0gYXN0LlN0YXRlbWVudEdyb3VwKCkKICAgICBsaW5lbm8gPSAwCiAgICAgd2hpbGUgVHJ1ZToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQppbmRleCBhZTEyYzI1Li5mMmU1MmNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5CkBAIC0xODEsNyArMTgxLDcgQEAKICAgICAgICAgaWYgc2VsZi5ycS5zdGF0cy5hY3RpdmUgPCBzZWxmLnJxLm51bWJlcl90YXNrczoKICAgICAgICAgICAgIHJldHVybiBzZWxmLm5leHRfYnVpbGRhYmxlX3Rhc2soKQogCi0gICAgZGVmIG5ld2J1aWxhYmxlKHNlbGYsIHRhc2spOgorICAgIGRlZiBuZXdidWlsZGFibGUoc2VsZiwgdGFzayk6CiAgICAgICAgIHNlbGYuYnVpbGRhYmxlLmFwcGVuZCh0YXNrKQogCiAgICAgZGVmIGRlc2NyaWJlX3Rhc2soc2VsZiwgdGFza2lkKToKQEAgLTU4MSwxMiArNTgxLDYgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgdCBpbiB0YXNrRGF0YVttY10udGFza2VudHJpZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzLmFkZCh0KQogCi0gICAgICAgIGRlZiBhZGRfcmVzb2x2ZWRfZGVwZW5kZW5jaWVzKG1jLCBmbiwgdGFza25hbWVzLCBkZXBlbmRzKToKLSAgICAgICAgICAgIGZvciB0YXNrbmFtZSBpbiB0YXNrbmFtZXM6Ci0gICAgICAgICAgICAgICAgdGlkID0gYnVpbGRfdGlkKG1jLCBmbiwgdGFza25hbWUpCi0gICAgICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYucnVudGFza2VudHJpZXM6Ci0gICAgICAgICAgICAgICAgICAgIGRlcGVuZHMuYWRkKHRpZCkKLQogICAgICAgICBmb3IgbWMgaW4gdGFza0RhdGE6CiAgICAgICAgICAgICBmb3IgdGlkIGluIHRhc2tEYXRhW21jXS50YXNrZW50cmllczoKIApAQCAtNjczLDU3ICs2NjcsMTA2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlaXRhc2tzW3RpZF0uYXBwZW5kKG5ld2RlcCkKIAogICAgICAgICAgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzID0gZGVwZW5kcworICAgICAgICAgICAgICAgICMgUmVtb3ZlIGFsbCBzZWxmIHJlZmVyZW5jZXMKKyAgICAgICAgICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5kaXNjYXJkKHRpZCkKIAogICAgICAgICAjc2VsZi5kdW1wX2RhdGEoKQogCisgICAgICAgIHNlbGYuaW5pdF9wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKwogICAgICAgICAjIFJlc29sdmUgcmVjdXJzaXZlICdyZWNyZGVwdGFzaycgZGVwZW5kZW5jaWVzIChQYXJ0IEIpCiAgICAgICAgICMKICAgICAgICAgIyBlLmcuIGRvX3NvbWV0YXNrW3JlY3JkZXB0YXNrXSA9ICJkb19zb21lb3RoZXJ0YXNrIgogICAgICAgICAjIChtYWtlcyBzdXJlIHNvbWV0YXNrIHJ1bnMgYWZ0ZXIgc29tZW90aGVydGFzayBvZiBhbGwgREVQRU5EUywgUkRFUEVORFMgYW5kIGludGVydGFzayBkZXBlbmRlbmNpZXMsIHJlY3Vyc2l2ZWx5KQogICAgICAgICAjIFdlIG5lZWQgdG8gZG8gdGhpcyBzZXBhcmF0ZWx5IHNpbmNlIHdlIG5lZWQgYWxsIG9mIHJ1bnRhc2tlbnRyaWVzWypdLmRlcGVuZHMgdG8gYmUgY29tcGxldGUgYmVmb3JlIHRoaXMgaXMgcHJvY2Vzc2VkCi0gICAgICAgIHNlbGYuaW5pdF9wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKGxlbihyZWN1cnNpdmV0YXNrcykpCi0gICAgICAgIGV4dHJhZGVwcyA9IHt9Ci0gICAgICAgIGZvciB0YXNrY291bnRlciwgdGlkIGluIGVudW1lcmF0ZShyZWN1cnNpdmV0YXNrcyk6Ci0gICAgICAgICAgICBleHRyYWRlcHNbdGlkXSA9IHNldChzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcykKIAotICAgICAgICAgICAgdGFza25hbWVzID0gcmVjdXJzaXZldGFza3NbdGlkXQotICAgICAgICAgICAgc2VlbmRlcHMgPSBzZXQoKQorICAgICAgICAjIEdlbmVyYXRpbmcvaW50ZXJhdGluZyByZWN1cnNpdmUgbGlzdHMgb2YgZGVwZW5kZW5jaWVzIGlzIHBhaW5mdWwgYW5kIHBvdGVudGlhbGx5IHNsb3cKKyAgICAgICAgIyBQcmVjb21wdXRlIHJlY3Vyc2l2ZSB0YXNrIGRlcGVuZGVuY2llcyBoZXJlIGJ5OgorICAgICAgICAjICAgICBhKSBjcmVhdGUgYSB0ZW1wIGxpc3Qgb2YgcmV2ZXJzZSBkZXBlbmRlbmNpZXMgKHJldmRlcHMpCisgICAgICAgICMgICAgIGIpIHdhbGsgdXAgdGhlIGVuZHMgb2YgdGhlIGNoYWlucyAod2hlbiBhIGdpdmVuIHRhc2sgbm8gbG9uZ2VyIGhhcyBkZXBlbmRlbmNpZXMgaS5lLiBsZW4oZGVwcykgPT0gMCkKKyAgICAgICAgIyAgICAgYykgY29tYmluZSB0aGUgdG90YWwgbGlzdCBvZiBkZXBlbmRlbmNpZXMgaW4gY3VtdWxhdGl2ZWRlcHMKKyAgICAgICAgIyAgICAgZCkgb3B0aW1pc2UgYnkgcHJlLXRydW5jYXRpbmcgJ3Rhc2snIG9mZiB0aGUgaXRlbXMgaW4gY3VtdWxhdGl2ZWRlcHMgKGtlZXBzIGl0ZW1zIGluIHNldHMgbG93ZXIpCiAKLSAgICAgICAgICAgIGRlZiBnZW5lcmF0ZV9yZWNkZXBzKHQpOgotICAgICAgICAgICAgICAgIG5ld2RlcHMgPSBzZXQoKQotICAgICAgICAgICAgICAgIChtYywgZm4sIHRhc2tuYW1lLCBfKSA9IHNwbGl0X3RpZF9tY2ZuKHQpCi0gICAgICAgICAgICAgICAgYWRkX3Jlc29sdmVkX2RlcGVuZGVuY2llcyhtYywgZm4sIHRhc2tuYW1lcywgbmV3ZGVwcykKLSAgICAgICAgICAgICAgICBleHRyYWRlcHNbdGlkXS51cGRhdGUobmV3ZGVwcykKLSAgICAgICAgICAgICAgICBzZWVuZGVwcy5hZGQodCkKLSAgICAgICAgICAgICAgICBuZXdkZXBzLmFkZCh0KQotICAgICAgICAgICAgICAgIGZvciBpIGluIG5ld2RlcHM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGkgbm90IGluIHNlbGYucnVudGFza2VudHJpZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhbGwgcmVjaXBlcyBtaWdodCBoYXZlIHRoZSByZWNyZGVwdGFzayB0YXNrIGFzIGEgdGFzawotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgdGFzayA9IHNlbGYucnVudGFza2VudHJpZXNbaV0udGFzawotICAgICAgICAgICAgICAgICAgICBmb3IgbiBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzW2ldLmRlcGVuZHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuIG5vdCBpbiBzZWVuZGVwczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfcmVjZGVwcyhuKQotICAgICAgICAgICAgZ2VuZXJhdGVfcmVjZGVwcyh0aWQpCiAKLSAgICAgICAgICAgIGlmIHRpZCBpbiByZWN1cnNpdmVpdGFza3M6Ci0gICAgICAgICAgICAgICAgZm9yIGRlcCBpbiByZWN1cnNpdmVpdGFza3NbdGlkXToKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfcmVjZGVwcyhkZXApCi0gICAgICAgICAgICBzZWxmLmluaXRfcHJvZ3Jlc3NfcmVwb3J0ZXIudXBkYXRlKHRhc2tjb3VudGVyKQotCi0gICAgICAgICMgUmVtb3ZlIGNpcmN1bGFyIHJlZmVyZW5jZXMgc28gdGhhdCBkb19hW3JlY3JkZXB0YXNrXSA9ICJkb19hIGRvX2IiIGNhbiB3b3JrCi0gICAgICAgIGZvciB0aWQgaW4gcmVjdXJzaXZldGFza3M6Ci0gICAgICAgICAgICBleHRyYWRlcHNbdGlkXS5kaWZmZXJlbmNlX3VwZGF0ZShyZWN1cnNpdmV0YXNrc3NlbGZyZWYpCi0KKyAgICAgICAgcmV2ZGVwcyA9IHt9CisgICAgICAgIGRlcHMgPSB7fQorICAgICAgICBjdW11bGF0aXZlZGVwcyA9IHt9CiAgICAgICAgIGZvciB0aWQgaW4gc2VsZi5ydW50YXNrZW50cmllczoKLSAgICAgICAgICAgIHRhc2sgPSBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0udGFzawotICAgICAgICAgICAgIyBBZGQgaW4gZXh0cmEgZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICBpZiB0aWQgaW4gZXh0cmFkZXBzOgotICAgICAgICAgICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcyA9IGV4dHJhZGVwc1t0aWRdCi0gICAgICAgICAgICAjIFJlbW92ZSBhbGwgc2VsZiByZWZlcmVuY2VzCi0gICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5ydW50YXNrZW50cmllc1t0aWRdLmRlcGVuZHM6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJUYXNrICVzIGNvbnRhaW5zIHNlbGYgcmVmZXJlbmNlISIsIHRpZCkKLSAgICAgICAgICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5yZW1vdmUodGlkKQorICAgICAgICAgICAgZGVwc1t0aWRdID0gc2V0KHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzKQorICAgICAgICAgICAgcmV2ZGVwc1t0aWRdID0gc2V0KCkKKyAgICAgICAgICAgIGN1bXVsYXRpdmVkZXBzW3RpZF0gPSBzZXQoKQorICAgICAgICAjIEdlbmVyYXRlIGEgdGVtcCBsaXN0IG9mIHJldmVyc2UgZGVwZW5kZW5jaWVzCisgICAgICAgIGZvciB0aWQgaW4gc2VsZi5ydW50YXNrZW50cmllczoKKyAgICAgICAgICAgIGZvciBkZXAgaW4gc2VsZi5ydW50YXNrZW50cmllc1t0aWRdLmRlcGVuZHM6CisgICAgICAgICAgICAgICAgcmV2ZGVwc1tkZXBdLmFkZCh0aWQpCisgICAgICAgICMgRmluZCB0aGUgZGVwZW5kZW5jeSBjaGFpbiBlbmRwb2ludHMKKyAgICAgICAgZW5kcG9pbnRzID0gc2V0KCkKKyAgICAgICAgZm9yIHRpZCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzOgorICAgICAgICAgICAgaWYgbGVuKGRlcHNbdGlkXSkgPT0gMDoKKyAgICAgICAgICAgICAgICBlbmRwb2ludHMuYWRkKHRpZCkKKyAgICAgICAgIyBJdGVyYXRlIHRoZSBjaGFpbnMgY29sbGF0aW5nIGRlcGVuZGVuY2llcworICAgICAgICB3aGlsZSBlbmRwb2ludHM6CisgICAgICAgICAgICBuZXh0ID0gc2V0KCkKKyAgICAgICAgICAgIGZvciB0aWQgaW4gZW5kcG9pbnRzOgorICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gcmV2ZGVwc1t0aWRdOgorICAgICAgICAgICAgICAgICAgICBjdW11bGF0aXZlZGVwc1tkZXBdLmFkZChmbl9mcm9tX3RpZCh0aWQpKQorICAgICAgICAgICAgICAgICAgICBjdW11bGF0aXZlZGVwc1tkZXBdLnVwZGF0ZShjdW11bGF0aXZlZGVwc1t0aWRdKQorICAgICAgICAgICAgICAgICAgICBpZiB0aWQgaW4gZGVwc1tkZXBdOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVwc1tkZXBdLnJlbW92ZSh0aWQpCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihkZXBzW2RlcF0pID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmFkZChkZXApCisgICAgICAgICAgICBlbmRwb2ludHMgPSBuZXh0CisgICAgICAgICNmb3IgdGlkIGluIGRlcHM6CisgICAgICAgICMgICAgaWYgbGVuKGRlcHNbdGlkXSkgIT0gMDoKKyAgICAgICAgIyAgICAgICAgYmIud2FybigiU2FuaXR5IHRlc3QgZmFpbHVyZSwgZGVwZW5kZW5jaWVzIGxlZnQgZm9yICVzICglcykiICUgKHRpZCwgZGVwc1t0aWRdKSkKKworICAgICAgICAjIExvb3AgaGVyZSBzaW5jZSByZWNyZGVwdGFza3MgY2FuIGRlcGVuZCB1cG9uIG90aGVyIHJlY3JkZXB0YXNrcyBhbmQgd2UgaGF2ZSB0bworICAgICAgICAjIHJlc29sdmUgdGhlc2UgcmVjdXJzaXZlbHkgdW50aWwgd2UgYXJlbid0IGFkZGluZyBhbnkgZnVydGhlciBleHRyYSBkZXBlbmRlbmNpZXMKKyAgICAgICAgZXh0cmFkZXBzID0gVHJ1ZQorICAgICAgICB3aGlsZSBleHRyYWRlcHM6CisgICAgICAgICAgICBleHRyYWRlcHMgPSAwCisgICAgICAgICAgICBmb3IgdGlkIGluIHJlY3Vyc2l2ZXRhc2tzOgorICAgICAgICAgICAgICAgIHRhc2tuYW1lcyA9IHJlY3Vyc2l2ZXRhc2tzW3RpZF0KKworICAgICAgICAgICAgICAgIHRvdGFsZGVwcyA9IHNldChzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcykKKyAgICAgICAgICAgICAgICBpZiB0aWQgaW4gcmVjdXJzaXZlaXRhc2tzOgorICAgICAgICAgICAgICAgICAgICB0b3RhbGRlcHMudXBkYXRlKHJlY3Vyc2l2ZWl0YXNrc1t0aWRdKQorICAgICAgICAgICAgICAgICAgICBmb3IgZGVwIGluIHJlY3Vyc2l2ZWl0YXNrc1t0aWRdOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVwIG5vdCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbGRlcHMudXBkYXRlKHNlbGYucnVudGFza2VudHJpZXNbZGVwXS5kZXBlbmRzKQorCisgICAgICAgICAgICAgICAgZGVwcyA9IHNldCgpCisgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiB0b3RhbGRlcHM6CisgICAgICAgICAgICAgICAgICAgIGlmIGRlcCBpbiBjdW11bGF0aXZlZGVwczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMudXBkYXRlKGN1bXVsYXRpdmVkZXBzW2RlcF0pCisKKyAgICAgICAgICAgICAgICBmb3IgdCBpbiBkZXBzOgorICAgICAgICAgICAgICAgICAgICBmb3IgdGFza25hbWUgaW4gdGFza25hbWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgbmV3dGlkID0gdCArICI6IiArIHRhc2tuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXd0aWQgPT0gdGlkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXd0aWQgaW4gc2VsZi5ydW50YXNrZW50cmllcyBhbmQgbmV3dGlkIG5vdCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWRlcHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzLmFkZChuZXd0aWQpCisKKyAgICAgICAgICAgICAgICAjIEhhbmRsZSByZWN1cnNpdmUgdGFza3Mgd2hpY2ggZGVwZW5kIHVwb24gb3RoZXIgcmVjdXJzaXZlIHRhc2tzCisgICAgICAgICAgICAgICAgZGVwcyA9IHNldCgpCisgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5pbnRlcnNlY3Rpb24ocmVjdXJzaXZldGFza3MpOgorICAgICAgICAgICAgICAgICAgICBkZXBzLnVwZGF0ZShzZWxmLnJ1bnRhc2tlbnRyaWVzW2RlcF0uZGVwZW5kcy5kaWZmZXJlbmNlKHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzKSkKKyAgICAgICAgICAgICAgICBmb3IgbmV3dGlkIGluIGRlcHM6CisgICAgICAgICAgICAgICAgICAgIGZvciB0YXNrbmFtZSBpbiB0YXNrbmFtZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmV3dGlkLmVuZHN3aXRoKCI6IiArIHRhc2tuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV3dGlkIGluIHNlbGYucnVudGFza2VudHJpZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFkZXBzICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5hZGQobmV3dGlkKQorCisgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiQWRkZWQgJXMgcmVjdXJzaXZlIGRlcGVuZGVuY2llcyBpbiB0aGlzIGxvb3AiICUgZXh0cmFkZXBzKQorCisgICAgICAgICMgUmVtb3ZlIHJlY3JkZXB0YXNrIGNpcmN1bGFyIHJlZmVyZW5jZXMgc28gdGhhdCBkb19hW3JlY3JkZXB0YXNrXSA9ICJkb19hIGRvX2IiIGNhbiB3b3JrCisgICAgICAgIGZvciB0aWQgaW4gcmVjdXJzaXZldGFza3NzZWxmcmVmOgorICAgICAgICAgICAgc2VsZi5ydW50YXNrZW50cmllc1t0aWRdLmRlcGVuZHMuZGlmZmVyZW5jZV91cGRhdGUocmVjdXJzaXZldGFza3NzZWxmcmVmKQogCiAgICAgICAgIHNlbGYuaW5pdF9wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKIApAQCAtNzk4LDMwICs4NDEsNTcgQEAKICAgICAgICAgIwogICAgICAgICAjIE9uY2UgYWxsIGFjdGl2ZSB0YXNrcyBhcmUgbWFya2VkLCBwcnVuZSB0aGUgb25lcyB3ZSBkb24ndCBuZWVkLgogCi0gICAgICAgIGRlbGNvdW50ID0gMAorICAgICAgICBkZWxjb3VudCA9IHt9CiAgICAgICAgIGZvciB0aWQgaW4gbGlzdChzZWxmLnJ1bnRhc2tlbnRyaWVzLmtleXMoKSk6CiAgICAgICAgICAgICBpZiB0aWQgbm90IGluIHJ1bnFfYnVpbGQ6CisgICAgICAgICAgICAgICAgZGVsY291bnRbdGlkXSA9IHNlbGYucnVudGFza2VudHJpZXNbdGlkXQogICAgICAgICAgICAgICAgIGRlbCBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0KLSAgICAgICAgICAgICAgICBkZWxjb3VudCArPSAxCiAKLSAgICAgICAgc2VsZi5pbml0X3Byb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQotCi0gICAgICAgIGlmIHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVuYWxsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcnVuYWxsID0gImRvXyVzIiAlIHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVuYWxsCi0gICAgICAgICAgICBydW5hbGxfdGlkcyA9IHsgazogdiBmb3IgaywgdiBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzLml0ZW1zKCkgaWYgdGFza25hbWVfZnJvbV90aWQoaykgPT0gcnVuYWxsIH0KLQorICAgICAgICAjIEhhbmRsZSAtLXJ1bmFsbAorICAgICAgICBpZiBzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLnJ1bmFsbDoKICAgICAgICAgICAgICMgcmUtcnVuIHRoZSBtYXJrX2FjdGl2ZSBhbmQgdGhlbiBkcm9wIHVudXNlZCB0YXNrcyBmcm9tIG5ldyBsaXN0CiAgICAgICAgICAgICBydW5xX2J1aWxkID0ge30KLSAgICAgICAgICAgIGZvciB0aWQgaW4gbGlzdChydW5hbGxfdGlkcyk6Ci0gICAgICAgICAgICAgICAgbWFya19hY3RpdmUodGlkLDEpCisKKyAgICAgICAgICAgIGZvciB0YXNrIGluIHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVuYWxsOgorICAgICAgICAgICAgICAgIHJ1bmFsbF90aWRzID0gc2V0KCkKKyAgICAgICAgICAgICAgICBmb3IgdGlkIGluIGxpc3Qoc2VsZi5ydW50YXNrZW50cmllcyk6CisgICAgICAgICAgICAgICAgICAgIHdhbnR0aWQgPSBmbl9mcm9tX3RpZCh0aWQpICsgIjpkb18lcyIgJSB0YXNrCisgICAgICAgICAgICAgICAgICAgIGlmIHdhbnR0aWQgaW4gZGVsY291bnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3dhbnR0aWRdID0gZGVsY291bnRbd2FudHRpZF0KKyAgICAgICAgICAgICAgICAgICAgaWYgd2FudHRpZCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgcnVuYWxsX3RpZHMuYWRkKHdhbnR0aWQpCisKKyAgICAgICAgICAgICAgICBmb3IgdGlkIGluIGxpc3QocnVuYWxsX3RpZHMpOgorICAgICAgICAgICAgICAgICAgICBtYXJrX2FjdGl2ZSh0aWQsMSkKIAogICAgICAgICAgICAgZm9yIHRpZCBpbiBsaXN0KHNlbGYucnVudGFza2VudHJpZXMua2V5cygpKToKICAgICAgICAgICAgICAgICBpZiB0aWQgbm90IGluIHJ1bnFfYnVpbGQ6CisgICAgICAgICAgICAgICAgICAgIGRlbGNvdW50W3RpZF0gPSBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0KICAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYucnVudGFza2VudHJpZXNbdGlkXQotICAgICAgICAgICAgICAgICAgICBkZWxjb3VudCArPSAxCiAKICAgICAgICAgICAgIGlmIGxlbihzZWxmLnJ1bnRhc2tlbnRyaWVzKSA9PSAwOgotICAgICAgICAgICAgICAgIGJiLm1zZy5mYXRhbCgiUnVuUXVldWUiLCAiTm8gcmVtYWluaW5nIHRhc2tzIHRvIHJ1biBmb3IgYnVpbGQgdGFyZ2V0ICVzIHdpdGggcnVuYWxsICVzIiAlICh0YXJnZXQsIHJ1bmFsbCkpCisgICAgICAgICAgICAgICAgYmIubXNnLmZhdGFsKCJSdW5RdWV1ZSIsICJDb3VsZCBub3QgZmluZCBhbnkgdGFza3Mgd2l0aCB0aGUgdGFza25hbWVzICVzIHRvIHJ1biB3aXRoaW4gdGhlIHJlY2lwZXMgb2YgdGhlIHRhc2tncmFwaHMgb2YgdGhlIHRhcmdldHMgJXMiICUgKHN0cihzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLnJ1bmFsbCksIHN0cihzZWxmLnRhcmdldHMpKSkKKworICAgICAgICBzZWxmLmluaXRfcHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCisKKyAgICAgICAgIyBIYW5kbGUgcnVub25seQorICAgICAgICBpZiBzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLnJ1bm9ubHk6CisgICAgICAgICAgICAjIHJlLXJ1biB0aGUgbWFya19hY3RpdmUgYW5kIHRoZW4gZHJvcCB1bnVzZWQgdGFza3MgZnJvbSBuZXcgbGlzdAorICAgICAgICAgICAgcnVucV9idWlsZCA9IHt9CisKKyAgICAgICAgICAgIGZvciB0YXNrIGluIHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVub25seToKKyAgICAgICAgICAgICAgICBydW5vbmx5X3RpZHMgPSB7IGs6IHYgZm9yIGssIHYgaW4gc2VsZi5ydW50YXNrZW50cmllcy5pdGVtcygpIGlmIHRhc2tuYW1lX2Zyb21fdGlkKGspID09ICJkb18lcyIgJSB0YXNrIH0KKworICAgICAgICAgICAgICAgIGZvciB0aWQgaW4gbGlzdChydW5vbmx5X3RpZHMpOgorICAgICAgICAgICAgICAgICAgICBtYXJrX2FjdGl2ZSh0aWQsMSkKKworICAgICAgICAgICAgZm9yIHRpZCBpbiBsaXN0KHNlbGYucnVudGFza2VudHJpZXMua2V5cygpKToKKyAgICAgICAgICAgICAgICBpZiB0aWQgbm90IGluIHJ1bnFfYnVpbGQ6CisgICAgICAgICAgICAgICAgICAgIGRlbGNvdW50W3RpZF0gPSBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0KKyAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYucnVudGFza2VudHJpZXNbdGlkXQorCisgICAgICAgICAgICBpZiBsZW4oc2VsZi5ydW50YXNrZW50cmllcykgPT0gMDoKKyAgICAgICAgICAgICAgICBiYi5tc2cuZmF0YWwoIlJ1blF1ZXVlIiwgIkNvdWxkIG5vdCBmaW5kIGFueSB0YXNrcyB3aXRoIHRoZSB0YXNrbmFtZXMgJXMgdG8gcnVuIHdpdGhpbiB0aGUgdGFza2dyYXBocyBvZiB0aGUgdGFyZ2V0cyAlcyIgJSAoc3RyKHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVub25seSksIHN0cihzZWxmLnRhcmdldHMpKSkKIAogICAgICAgICAjCiAgICAgICAgICMgU3RlcCBEIC0gU2FuaXR5IGNoZWNrcyBhbmQgY29tcHV0YXRpb24KQEAgLTgzNCw3ICs5MDQsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBiYi5tc2cuZmF0YWwoIlJ1blF1ZXVlIiwgIk5vIGFjdGl2ZSB0YXNrcyBhbmQgbm90IGluIC0tY29udGludWUgbW9kZT8hIFBsZWFzZSByZXBvcnQgdGhpcyBidWcuIikKIAotICAgICAgICBsb2dnZXIudmVyYm9zZSgiUHJ1bmVkICVzIGluYWN0aXZlIHRhc2tzLCAlcyBsZWZ0IiwgZGVsY291bnQsIGxlbihzZWxmLnJ1bnRhc2tlbnRyaWVzKSkKKyAgICAgICAgbG9nZ2VyLnZlcmJvc2UoIlBydW5lZCAlcyBpbmFjdGl2ZSB0YXNrcywgJXMgbGVmdCIsIGxlbihkZWxjb3VudCksIGxlbihzZWxmLnJ1bnRhc2tlbnRyaWVzKSkKIAogICAgICAgICBsb2dnZXIudmVyYm9zZSgiQXNzaWduIFdlaWdodGluZ3MiKQogCkBAIC0xNzgxLDcgKzE4NTEsNyBAQAogCiAgICAgZGVmIHNldGJ1aWxkYWJsZShzZWxmLCB0YXNrKToKICAgICAgICAgc2VsZi5ydW5xX2J1aWxkYWJsZS5hZGQodGFzaykKLSAgICAgICAgc2VsZi5zY2hlZC5uZXdidWlsYWJsZSh0YXNrKQorICAgICAgICBzZWxmLnNjaGVkLm5ld2J1aWxkYWJsZSh0YXNrKQogCiAgICAgZGVmIHRhc2tfY29tcGxldGVvdXRyaWdodChzZWxmLCB0YXNrKToKICAgICAgICAgIiIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3Byb2Nlc3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3Byb2Nlc3MucHkKaW5kZXggM2QzMTM1NS4uODI4MTU5ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci9wcm9jZXNzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIvcHJvY2Vzcy5weQpAQCAtMjIzLDYgKzIyMyw4IEBACiAKICAgICAgICAgdHJ5OiAKICAgICAgICAgICAgIHNlbGYuY29va2VyLnNodXRkb3duKFRydWUpCisgICAgICAgICAgICBzZWxmLmNvb2tlci5ub3RpZmllci5zdG9wKCkKKyAgICAgICAgICAgIHNlbGYuY29va2VyLmNvbmZpZ25vdGlmaWVyLnN0b3AoKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBwYXNzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zaGVsbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zaGVsbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRkOGQ1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2hlbGwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4MjAgKzAsMCBAQAotIyBleDp0cz00OnN3PTQ6c3RzPTQ6ZXQKLSMgLSotIHRhYi13aWR0aDogNDsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIENvcHlyaWdodCAoQykgMjAwNS0yMDA2IE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1pY2tleUBWYW5pbGxlLmRlPgotIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNiBWYW5pbGxlIE1lZGlhCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgVGhhbmtzIHRvOgotIyAqIEhvbGdlciBGcmV5dGhlciA8emVja2VAaGFuZGhlbGRzLm9yZz4KLSMgKiBKdXN0aW4gUGF0cmluIDxwYXBlcmNyYW5lQHJldmVyc2Vmb2xkLmNvbT4KLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSIiIgotQml0QmFrZSBTaGVsbAotCi1JREVBUzoKLSAgICAqIGxpc3QgZGVmaW5lZCB0YXNrcyBwZXIgcGFja2FnZQotICAgICogbGlzdCBjbGFzc2VzCi0gICAgKiB0b2dnbGUgZm9yY2UKLSAgICAqIGNvbW1hbmQgdG8gcmVwYXJzZSBqdXN0IG9uZSAob3IgbW9yZSkgYmJmaWxlKHMpCi0gICAgKiBhdXRvbWF0aWMgY2hlY2sgaWYgcmVwYXJzaW5nIGlzIG5lY2Vzc2FyeSAoaW5vdGlmeT8pCi0gICAgKiBmcm9udGVuZCBmb3IgYmIgZmlsZSBtYW5pcHVsYXRpb24KLSAgICAqIG1vcmUgc2hlbGwtbGlrZSBmZWF0dXJlczoKLSAgICAgICAgLSBvdXRwdXQgY29udHJvbCwgaS5lLiBwaXBlIG91dHB1dCBpbnRvIGdyZXAsIHNvcnQsIGV0Yy4KLSAgICAgICAgLSBqb2IgY29udHJvbCwgaS5lLiBicmluZyBydW5uaW5nIGNvbW1hbmRzIGludG8gYmFja2dyb3VuZCBhbmQgZm9yZWdyb3VuZAotICAgICogc3RhcnQgcGFyc2luZyBpbiBiYWNrZ3JvdW5kIHJpZ2h0IGFmdGVyIHN0YXJ0dXAKLSAgICAqIG5jdXJzZXMgaW50ZXJmYWNlCi0KLVBST0JMRU1TOgotICAgICogZm9yY2UgZG9lc24ndCBhbHdheXMgd29yawotICAgICogcmVhZGxpbmUgY29tcGxldGlvbiBmb3IgY29tbWFuZHMgd2l0aCBtb3JlIHRoYW4gb25lIHBhcmFtZXRlcnMKLQotIiIiCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEltcG9ydCBhbmQgc2V0dXAgZ2xvYmFsIHZhcmlhYmxlcwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQotdHJ5OgotICAgIHNldAotZXhjZXB0IE5hbWVFcnJvcjoKLSAgICBmcm9tIHNldHMgaW1wb3J0IFNldCBhcyBzZXQKLWltcG9ydCBzeXMsIG9zLCByZWFkbGluZSwgc29ja2V0LCBodHRwbGliLCB1cmxsaWIsIGNvbW1hbmRzLCBwb3BlbjIsIHNobGV4LCBRdWV1ZSwgZm5tYXRjaAotZnJvbSBiYiBpbXBvcnQgZGF0YSwgcGFyc2UsIGJ1aWxkLCBjYWNoZSwgdGFza2RhdGEsIHJ1bnF1ZXVlLCBwcm92aWRlcnMgYXMgUHJvdmlkZXJzCi0KLV9fdmVyc2lvbl9fID0gIjAuNS4zLjEiCi1fX2NyZWRpdHNfXyA9ICIiIkJpdEJha2UgU2hlbGwgVmVyc2lvbiAlcyAoQykgMjAwNSBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtaWNrZXlAVmFuaWxsZS5kZT4KLVR5cGUgJ2hlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLCBwcmVzcyBDVFJMLUQgdG8gZXhpdC4iIiIgJSBfX3ZlcnNpb25fXwotCi1jbWRzID0ge30KLWxlYXZlX21haW5sb29wID0gRmFsc2UKLWxhc3RfZXhjZXB0aW9uID0gTm9uZQotY29va2VyID0gTm9uZQotcGFyc2VkID0gRmFsc2UKLWRlYnVnID0gb3MuZW52aXJvbi5nZXQoICJCQlNIRUxMX0RFQlVHIiwgIiIgKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDbGFzcyBCaXRCYWtlU2hlbGxDb21tYW5kcwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotY2xhc3MgQml0QmFrZVNoZWxsQ29tbWFuZHM6Ci0gICAgIiIiVGhpcyBjbGFzcyBjb250YWlucyB0aGUgdmFsaWQgY29tbWFuZHMgZm9yIHRoZSBzaGVsbCIiIgotCi0gICAgZGVmIF9faW5pdF9fKCBzZWxmLCBzaGVsbCApOgotICAgICAgICAiIiJSZWdpc3RlciBhbGwgdGhlIGNvbW1hbmRzIiIiCi0gICAgICAgIHNlbGYuX3NoZWxsID0gc2hlbGwKLSAgICAgICAgZm9yIGF0dHIgaW4gQml0QmFrZVNoZWxsQ29tbWFuZHMuX19kaWN0X186Ci0gICAgICAgICAgICBpZiBub3QgYXR0ci5zdGFydHN3aXRoKCAiXyIgKToKLSAgICAgICAgICAgICAgICBpZiBhdHRyLmVuZHN3aXRoKCAiXyIgKToKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA9IGF0dHJbOi0xXS5sb3dlcigpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA9IGF0dHJbOl0ubG93ZXIoKQotICAgICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoIEJpdEJha2VTaGVsbENvbW1hbmRzLCBhdHRyICkKLSAgICAgICAgICAgICAgICBkZWJ1Z091dCggInJlZ2lzdGVyaW5nIGNvbW1hbmQgJyVzJyIgJSBjb21tYW5kICkKLSAgICAgICAgICAgICAgICAjIHNjYW4gbnVtYmVyIG9mIGFyZ3VtZW50cwotICAgICAgICAgICAgICAgIHVzYWdlID0gZ2V0YXR0ciggbWV0aG9kLCAidXNhZ2UiLCAiIiApCi0gICAgICAgICAgICAgICAgaWYgdXNhZ2UgIT0gIjwuLi4+IjoKLSAgICAgICAgICAgICAgICAgICAgbnVtQXJncyA9IGxlbiggdXNhZ2Uuc3BsaXQoKSApCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbnVtQXJncyA9IC0xCi0gICAgICAgICAgICAgICAgc2hlbGwucmVnaXN0ZXJDb21tYW5kKCBjb21tYW5kLCBtZXRob2QsIG51bUFyZ3MsICIlcyAlcyIgJSAoIGNvbW1hbmQsIHVzYWdlICksIG1ldGhvZC5fX2RvY19fICkKLQotICAgIGRlZiBfY2hlY2tQYXJzZWQoIHNlbGYgKToKLSAgICAgICAgaWYgbm90IHBhcnNlZDoKLSAgICAgICAgICAgIHByaW50KCJTSEVMTDogVGhpcyBjb21tYW5kIG5lZWRzIHRvIHBhcnNlIGJiZmlsZXMuLi4iKQotICAgICAgICAgICAgc2VsZi5wYXJzZSggTm9uZSApCi0KLSAgICBkZWYgX2ZpbmRQcm92aWRlciggc2VsZiwgaXRlbSApOgotICAgICAgICBzZWxmLl9jaGVja1BhcnNlZCgpCi0gICAgICAgICMgTmVlZCB0byB1c2UgdGFza0RhdGEgZm9yIHRoaXMgaW5mb3JtYXRpb24KLSAgICAgICAgcHJlZmVycmVkID0gZGF0YS5nZXRWYXIoICJQUkVGRVJSRURfUFJPVklERVJfJXMiICUgaXRlbSwgY29va2VyLmNvbmZpZ3VyYXRpb24uZGF0YSwgMSApCi0gICAgICAgIGlmIG5vdCBwcmVmZXJyZWQ6IHByZWZlcnJlZCA9IGl0ZW0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbHYsIGxmLCBwdiwgcGYgPSBQcm92aWRlcnMuZmluZEJlc3RQcm92aWRlcihwcmVmZXJyZWQsIGNvb2tlci5jb25maWd1cmF0aW9uLmRhdGEsIGNvb2tlci5zdGF0dXMpCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGlmIGl0ZW0gaW4gY29va2VyLnN0YXR1cy5wcm92aWRlcnM6Ci0gICAgICAgICAgICAgICAgcGYgPSBjb29rZXIuc3RhdHVzLnByb3ZpZGVyc1tpdGVtXVswXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwZiA9IE5vbmUKLSAgICAgICAgcmV0dXJuIHBmCi0KLSAgICBkZWYgYWxpYXMoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJSZWdpc3RlciBhIG5ldyBuYW1lIGZvciBhIGNvbW1hbmQiIiIKLSAgICAgICAgbmV3LCBvbGQgPSBwYXJhbXMKLSAgICAgICAgaWYgbm90IG9sZCBpbiBjbWRzOgotICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiBDb21tYW5kICclcycgbm90IGtub3duIiAlIG9sZCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNtZHNbbmV3XSA9IGNtZHNbb2xkXQotICAgICAgICAgICAgcHJpbnQoIk9LIikKLSAgICBhbGlhcy51c2FnZSA9ICI8YWxpYXM+IDxjb21tYW5kPiIKLQotICAgIGRlZiBidWZmZXIoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJEdW1wIHNwZWNpZmllZCBvdXRwdXQgYnVmZmVyIiIiCi0gICAgICAgIGluZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIHByaW50KHNlbGYuX3NoZWxsLm15b3V0LmJ1ZmZlciggaW50KCBpbmRleCApICkpCi0gICAgYnVmZmVyLnVzYWdlID0gIjxpbmRleD4iCi0KLSAgICBkZWYgYnVmZmVycyggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIlNob3cgdGhlIGF2YWlsYWJsZSBvdXRwdXQgYnVmZmVycyIiIgotICAgICAgICBjb21tYW5kcyA9IHNlbGYuX3NoZWxsLm15b3V0LmJ1ZmZlcmVkQ29tbWFuZHMoKQotICAgICAgICBpZiBub3QgY29tbWFuZHM6Ci0gICAgICAgICAgICBwcmludCgiU0hFTEw6IE5vIGJ1ZmZlcmVkIGNvbW1hbmRzIGF2YWlsYWJsZSB5ZXQuIFN0YXJ0IGRvaW5nIHNvbWV0aGluZy4iKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIj0iKjM1LCAiQXZhaWxhYmxlIE91dHB1dCBCdWZmZXJzIiwgIj0iKjI3KQotICAgICAgICAgICAgZm9yIGluZGV4LCBjbWQgaW4gZW51bWVyYXRlKCBjb21tYW5kcyApOgotICAgICAgICAgICAgICAgIHByaW50KCJ8ICVzICVzIiAlICggc3RyKCBpbmRleCApLmxqdXN0KCAzICksIGNtZCApKQotICAgICAgICAgICAgcHJpbnQoIj0iKjg4KQotCi0gICAgZGVmIGJ1aWxkKCBzZWxmLCBwYXJhbXMsIGNtZCA9ICJidWlsZCIgKToKLSAgICAgICAgIiIiQnVpbGQgYSBwcm92aWRlZSIiIgotICAgICAgICBnbG9iYWwgbGFzdF9leGNlcHRpb24KLSAgICAgICAgZ2xvYmV4cHIgPSBwYXJhbXNbMF0KLSAgICAgICAgc2VsZi5fY2hlY2tQYXJzZWQoKQotICAgICAgICBuYW1lcyA9IGdsb2JmaWx0ZXIoIGNvb2tlci5zdGF0dXMucGtnX3BuLCBnbG9iZXhwciApCi0gICAgICAgIGlmIGxlbiggbmFtZXMgKSA9PSAwOiBuYW1lcyA9IFsgZ2xvYmV4cHIgXQotICAgICAgICBwcmludCgiU0hFTEw6IEJ1aWxkaW5nICVzIiAlICcgJy5qb2luKCBuYW1lcyApKQotCi0gICAgICAgIHRkID0gdGFza2RhdGEuVGFza0RhdGEoY29va2VyLmNvbmZpZ3VyYXRpb24uYWJvcnQpCi0gICAgICAgIGxvY2FsZGF0YSA9IGRhdGEuY3JlYXRlQ29weShjb29rZXIuY29uZmlndXJhdGlvbi5kYXRhKQotICAgICAgICBkYXRhLnVwZGF0ZV9kYXRhKGxvY2FsZGF0YSkKLSAgICAgICAgZGF0YS5leHBhbmRLZXlzKGxvY2FsZGF0YSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0YXNrcyA9IFtdCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKLSAgICAgICAgICAgICAgICB0ZC5hZGRfcHJvdmlkZXIobG9jYWxkYXRhLCBjb29rZXIuc3RhdHVzLCBuYW1lKQotICAgICAgICAgICAgICAgIHByb3ZpZGVycyA9IHRkLmdldF9wcm92aWRlcihuYW1lKQotCi0gICAgICAgICAgICAgICAgaWYgbGVuKHByb3ZpZGVycykgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUHJvdmlkZXJzLk5vUHJvdmlkZXIKLQotICAgICAgICAgICAgICAgIHRhc2tzLmFwcGVuZChbbmFtZSwgImRvXyVzIiAlIGNtZF0pCi0KLSAgICAgICAgICAgIHRkLmFkZF91bnJlc29sdmVkKGxvY2FsZGF0YSwgY29va2VyLnN0YXR1cykKLQotICAgICAgICAgICAgcnEgPSBydW5xdWV1ZS5SdW5RdWV1ZShjb29rZXIsIGxvY2FsZGF0YSwgY29va2VyLnN0YXR1cywgdGQsIHRhc2tzKQotICAgICAgICAgICAgcnEucHJlcGFyZV9ydW5xdWV1ZSgpCi0gICAgICAgICAgICBycS5leGVjdXRlX3J1bnF1ZXVlKCkKLQotICAgICAgICBleGNlcHQgUHJvdmlkZXJzLk5vUHJvdmlkZXI6Ci0gICAgICAgICAgICBwcmludCgiRVJST1I6IE5vIFByb3ZpZGVyIikKLSAgICAgICAgICAgIGxhc3RfZXhjZXB0aW9uID0gUHJvdmlkZXJzLk5vUHJvdmlkZXIKLQotICAgICAgICBleGNlcHQgcnVucXVldWUuVGFza0ZhaWx1cmUgYXMgZm5pZHM6Ci0gICAgICAgICAgICBsYXN0X2V4Y2VwdGlvbiA9IHJ1bnF1ZXVlLlRhc2tGYWlsdXJlCi0KLSAgICAgICAgZXhjZXB0IGJ1aWxkLkZ1bmNGYWlsZWQgYXMgZToKLSAgICAgICAgICAgIHByaW50KCJFUlJPUjogQ291bGRuJ3QgYnVpbGQgJyVzJyIgJSBuYW1lcykKLSAgICAgICAgICAgIGxhc3RfZXhjZXB0aW9uID0gZQotCi0KLSAgICBidWlsZC51c2FnZSA9ICI8cHJvdmlkZWU+IgotCi0gICAgZGVmIGNsZWFuKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiQ2xlYW4gYSBwcm92aWRlZSIiIgotICAgICAgICBzZWxmLmJ1aWxkKCBwYXJhbXMsICJjbGVhbiIgKQotICAgIGNsZWFuLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgY29tcGlsZSggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkV4ZWN1dGUgJ2NvbXBpbGUnIG9uIGEgcHJvdmlkZWUiIiIKLSAgICAgICAgc2VsZi5idWlsZCggcGFyYW1zLCAiY29tcGlsZSIgKQotICAgIGNvbXBpbGUudXNhZ2UgPSAiPHByb3ZpZGVlPiIKLQotICAgIGRlZiBjb25maWd1cmUoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJFeGVjdXRlICdjb25maWd1cmUnIG9uIGEgcHJvdmlkZWUiIiIKLSAgICAgICAgc2VsZi5idWlsZCggcGFyYW1zLCAiY29uZmlndXJlIiApCi0gICAgY29uZmlndXJlLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgaW5zdGFsbCggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkV4ZWN1dGUgJ2luc3RhbGwnIG9uIGEgcHJvdmlkZWUiIiIKLSAgICAgICAgc2VsZi5idWlsZCggcGFyYW1zLCAiaW5zdGFsbCIgKQotICAgIGluc3RhbGwudXNhZ2UgPSAiPHByb3ZpZGVlPiIKLQotICAgIGRlZiBlZGl0KCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiQ2FsbCAkRURJVE9SIG9uIGEgcHJvdmlkZWUiIiIKLSAgICAgICAgbmFtZSA9IHBhcmFtc1swXQotICAgICAgICBiYmZpbGUgPSBzZWxmLl9maW5kUHJvdmlkZXIoIG5hbWUgKQotICAgICAgICBpZiBiYmZpbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBvcy5zeXN0ZW0oICIlcyAlcyIgJSAoIG9zLmVudmlyb24uZ2V0KCAiRURJVE9SIiwgInZpIiApLCBiYmZpbGUgKSApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiRVJST1I6IE5vdGhpbmcgcHJvdmlkZXMgJyVzJyIgJSBuYW1lKQotICAgIGVkaXQudXNhZ2UgPSAiPHByb3ZpZGVlPiIKLQotICAgIGRlZiBlbnZpcm9ubWVudCggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkR1bXAgb3V0IHRoZSBvdXRlciBCaXRCYWtlIGVudmlyb25tZW50IiIiCi0gICAgICAgIGNvb2tlci5zaG93RW52aXJvbm1lbnQoKQotCi0gICAgZGVmIGV4aXRfKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiTGVhdmUgdGhlIEJpdEJha2UgU2hlbGwiIiIKLSAgICAgICAgZGVidWdPdXQoICJzZXR0aW5nIGxlYXZlX21haW5sb29wIHRvIHRydWUiICkKLSAgICAgICAgZ2xvYmFsIGxlYXZlX21haW5sb29wCi0gICAgICAgIGxlYXZlX21haW5sb29wID0gVHJ1ZQotCi0gICAgZGVmIGZldGNoKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiRmV0Y2ggYSBwcm92aWRlZSIiIgotICAgICAgICBzZWxmLmJ1aWxkKCBwYXJhbXMsICJmZXRjaCIgKQotICAgIGZldGNoLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgZmlsZUJ1aWxkKCBzZWxmLCBwYXJhbXMsIGNtZCA9ICJidWlsZCIgKToKLSAgICAgICAgIiIiUGFyc2UgYW5kIGJ1aWxkIGEgLmJiIGZpbGUiIiIKLSAgICAgICAgZ2xvYmFsIGxhc3RfZXhjZXB0aW9uCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMF0KLSAgICAgICAgYmYgPSBjb21wbGV0ZUZpbGVQYXRoKCBuYW1lICkKLSAgICAgICAgcHJpbnQoIlNIRUxMOiBDYWxsaW5nICclcycgb24gJyVzJyIgJSAoIGNtZCwgYmYgKSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb29rZXIuYnVpbGRGaWxlKGJmLCBjbWQpCi0gICAgICAgIGV4Y2VwdCBwYXJzZS5QYXJzZUVycm9yOgotICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiBVbmFibGUgdG8gb3BlbiBvciBwYXJzZSAnJXMnIiAlIGJmKQotICAgICAgICBleGNlcHQgYnVpbGQuRnVuY0ZhaWxlZCBhcyBlOgotICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiBDb3VsZG4ndCBidWlsZCAnJXMnIiAlIG5hbWUpCi0gICAgICAgICAgICBsYXN0X2V4Y2VwdGlvbiA9IGUKLQotICAgIGZpbGVCdWlsZC51c2FnZSA9ICI8YmJmaWxlPiIKLQotICAgIGRlZiBmaWxlQ2xlYW4oIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJDbGVhbiBhIC5iYiBmaWxlIiIiCi0gICAgICAgIHNlbGYuZmlsZUJ1aWxkKCBwYXJhbXMsICJjbGVhbiIgKQotICAgIGZpbGVDbGVhbi51c2FnZSA9ICI8YmJmaWxlPiIKLQotICAgIGRlZiBmaWxlRWRpdCggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkNhbGwgJEVESVRPUiBvbiBhIC5iYiBmaWxlIiIiCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMF0KLSAgICAgICAgb3Muc3lzdGVtKCAiJXMgJXMiICUgKCBvcy5lbnZpcm9uLmdldCggIkVESVRPUiIsICJ2aSIgKSwgY29tcGxldGVGaWxlUGF0aCggbmFtZSApICkgKQotICAgIGZpbGVFZGl0LnVzYWdlID0gIjxiYmZpbGU+IgotCi0gICAgZGVmIGZpbGVSZWJ1aWxkKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiUmVidWlsZCAoY2xlYW4gJiBidWlsZCkgYSAuYmIgZmlsZSIiIgotICAgICAgICBzZWxmLmZpbGVCdWlsZCggcGFyYW1zLCAicmVidWlsZCIgKQotICAgIGZpbGVSZWJ1aWxkLnVzYWdlID0gIjxiYmZpbGU+IgotCi0gICAgZGVmIGZpbGVSZXBhcnNlKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiKHJlKVBhcnNlIGEgYmIgZmlsZSIiIgotICAgICAgICBiYmZpbGUgPSBwYXJhbXNbMF0KLSAgICAgICAgcHJpbnQoIlNIRUxMOiBQYXJzaW5nICclcyciICUgYmJmaWxlKQotICAgICAgICBwYXJzZS51cGRhdGVfbXRpbWUoIGJiZmlsZSApCi0gICAgICAgIGNvb2tlci5wYXJzZXIucmVwYXJzZShiYmZpbGUpCi0gICAgICAgIGlmIEZhbHNlOiAjZnJvbUNhY2hlOgotICAgICAgICAgICAgcHJpbnQoIlNIRUxMOiBGaWxlIGhhcyBub3QgYmVlbiB1cGRhdGVkLCBub3QgcmVwYXJzaW5nIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJTSEVMTDogUGFyc2VkIikKLSAgICBmaWxlUmVwYXJzZS51c2FnZSA9ICI8YmJmaWxlPiIKLQotICAgIGRlZiBhYm9ydCggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIlRvZ2dsZSBhYm9ydCB0YXNrIGV4ZWN1dGlvbiBmbGFnIChzZWUgYml0YmFrZSAtaykiIiIKLSAgICAgICAgY29va2VyLmNvbmZpZ3VyYXRpb24uYWJvcnQgPSBub3QgY29va2VyLmNvbmZpZ3VyYXRpb24uYWJvcnQKLSAgICAgICAgcHJpbnQoIlNIRUxMOiBBYm9ydCBGbGFnIGlzIG5vdyAnJXMnIiAlIHJlcHIoIGNvb2tlci5jb25maWd1cmF0aW9uLmFib3J0ICkpCi0KLSAgICBkZWYgZm9yY2UoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJUb2dnbGUgZm9yY2UgdGFzayBleGVjdXRpb24gZmxhZyAoc2VlIGJpdGJha2UgLWYpIiIiCi0gICAgICAgIGNvb2tlci5jb25maWd1cmF0aW9uLmZvcmNlID0gbm90IGNvb2tlci5jb25maWd1cmF0aW9uLmZvcmNlCi0gICAgICAgIHByaW50KCJTSEVMTDogRm9yY2UgRmxhZyBpcyBub3cgJyVzJyIgJSByZXByKCBjb29rZXIuY29uZmlndXJhdGlvbi5mb3JjZSApKQotCi0gICAgZGVmIGhlbHAoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJTaG93IGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIGNvbW1hbmRzIGFuZCB0aGVpciBwdXJwb3NlIiIiCi0gICAgICAgIHByaW50KCI9IiozMCwgIkF2YWlsYWJsZSBDb21tYW5kcyIsICI9IiozMCkKLSAgICAgICAgZm9yIGNtZCBpbiBzb3J0ZWQoY21kcyk6Ci0gICAgICAgICAgICBmdW5jdGlvbiwgbnVtcGFyYW1zLCB1c2FnZSwgaGVscHRleHQgPSBjbWRzW2NtZF0KLSAgICAgICAgICAgIHByaW50KCJ8ICVzIHwgJXMiICUgKHVzYWdlLmxqdXN0KDMwKSwgaGVscHRleHQpKQotICAgICAgICBwcmludCgiPSIqNzgpCi0KLSAgICBkZWYgbGFzdEVycm9yKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiU2hvdyB0aGUgcmVhc29uIG9yIGxvZyB0aGF0IHdhcyBwcm9kdWNlZCBieSB0aGUgbGFzdCBCaXRCYWtlIGV2ZW50IGV4Y2VwdGlvbiIiIgotICAgICAgICBpZiBsYXN0X2V4Y2VwdGlvbiBpcyBOb25lOgotICAgICAgICAgICAgcHJpbnQoIlNIRUxMOiBObyBFcnJvcnMgeWV0IChQaGV3KS4uLiIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZWFzb24sIGV2ZW50ID0gbGFzdF9leGNlcHRpb24uYXJncwotICAgICAgICAgICAgcHJpbnQoIlNIRUxMOiBSZWFzb24gZm9yIHRoZSBsYXN0IGVycm9yOiAnJXMnIiAlIHJlYXNvbikKLSAgICAgICAgICAgIGlmICc6JyBpbiByZWFzb246Ci0gICAgICAgICAgICAgICAgbXNnLCBmaWxlbmFtZSA9IHJlYXNvbi5zcGxpdCggJzonICkKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBwcmludCgiU0hFTEw6IER1bXBpbmcgbG9nIGZpbGUgZm9yIGxhc3QgZXJyb3I6IikKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KG9wZW4oIGZpbGVuYW1lICkucmVhZCgpKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiRVJST1I6IENvdWxkbid0IG9wZW4gJyVzJyIgJSBmaWxlbmFtZSkKLQotICAgIGRlZiBtYXRjaCggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkR1bXAgYWxsIGZpbGVzIG9yIHByb3ZpZGVycyBtYXRjaGluZyBhIGdsb2IgZXhwcmVzc2lvbiIiIgotICAgICAgICB3aGF0LCBnbG9iZXhwciA9IHBhcmFtcwotICAgICAgICBpZiB3aGF0ID09ICJmaWxlcyI6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja1BhcnNlZCgpCi0gICAgICAgICAgICBmb3Iga2V5IGluIGdsb2JmaWx0ZXIoIGNvb2tlci5zdGF0dXMucGtnX2ZuLCBnbG9iZXhwciApOiBwcmludChrZXkpCi0gICAgICAgIGVsaWYgd2hhdCA9PSAicHJvdmlkZXJzIjoKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrUGFyc2VkKCkKLSAgICAgICAgICAgIGZvciBrZXkgaW4gZ2xvYmZpbHRlciggY29va2VyLnN0YXR1cy5wa2dfcG4sIGdsb2JleHByICk6IHByaW50KGtleSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJVc2FnZTogbWF0Y2ggJXMiICUgc2VsZi5wcmludF8udXNhZ2UpCi0gICAgbWF0Y2gudXNhZ2UgPSAiPGZpbGVzfHByb3ZpZGVycz4gPGdsb2I+IgotCi0gICAgZGVmIG5ldyggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIG5ldyAuYmIgZmlsZSBhbmQgb3BlbiB0aGUgZWRpdG9yIiIiCi0gICAgICAgIGRpcm5hbWUsIGZpbGVuYW1lID0gcGFyYW1zCi0gICAgICAgIHBhY2thZ2VzID0gJy8nLmpvaW4oIGRhdGEuZ2V0VmFyKCAiQkJGSUxFUyIsIGNvb2tlci5jb25maWd1cmF0aW9uLmRhdGEsIDEgKS5zcGxpdCgnLycpWzotMl0gKQotICAgICAgICBmdWxsZGlybmFtZSA9ICIlcy8lcyIgJSAoIHBhY2thZ2VzLCBkaXJuYW1lICkKLQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoIGZ1bGxkaXJuYW1lICk6Ci0gICAgICAgICAgICBwcmludCgiU0hFTEw6IENyZWF0aW5nICclcyciICUgZnVsbGRpcm5hbWUpCi0gICAgICAgICAgICBvcy5ta2RpciggZnVsbGRpcm5hbWUgKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyggZnVsbGRpcm5hbWUgKSBhbmQgb3MucGF0aC5pc2RpciggZnVsbGRpcm5hbWUgKToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCAiJXMvJXMiICUgKCBmdWxsZGlybmFtZSwgZmlsZW5hbWUgKSApOgotICAgICAgICAgICAgICAgIHByaW50KCJTSEVMTDogRVJST1I6ICVzLyVzIGFscmVhZHkgZXhpc3RzIiAlICggZnVsbGRpcm5hbWUsIGZpbGVuYW1lICkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBwcmludCgiU0hFTEw6IENyZWF0aW5nICclcy8lcyciICUgKCBmdWxsZGlybmFtZSwgZmlsZW5hbWUgKSkKLSAgICAgICAgICAgIG5ld3BhY2thZ2UgPSBvcGVuKCAiJXMvJXMiICUgKCBmdWxsZGlybmFtZSwgZmlsZW5hbWUgKSwgInciICkKLSAgICAgICAgICAgIHByaW50KCIiIkRFU0NSSVBUSU9OID0gIiIKLVNFQ1RJT04gPSAiIgotQVVUSE9SID0gIiIKLUhPTUVQQUdFID0gIiIKLU1BSU5UQUlORVIgPSAiIgotTElDRU5TRSA9ICJHUEwiCi1QUiA9ICJyMCIKLQotU1JDX1VSSSA9ICIiCi0KLSNpbmhlcml0IGJhc2UKLQotI2RvX2NvbmZpZ3VyZSgpIHsKLSMKLSN9Ci0KLSNkb19jb21waWxlKCkgewotIwotI30KLQotI2RvX3N0YWdlKCkgewotIwotI30KLQotI2RvX2luc3RhbGwoKSB7Ci0jCi0jfQotIiIiLCBmaWxlPW5ld3BhY2thZ2UpCi0gICAgICAgICAgICBuZXdwYWNrYWdlLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnN5c3RlbSggIiVzICVzLyVzIiAlICggb3MuZW52aXJvbi5nZXQoICJFRElUT1IiICksIGZ1bGxkaXJuYW1lLCBmaWxlbmFtZSApICkKLSAgICBuZXcudXNhZ2UgPSAiPGRpcmVjdG9yeT4gPGZpbGVuYW1lPiIKLQotICAgIGRlZiBwYWNrYWdlKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiRXhlY3V0ZSAncGFja2FnZScgb24gYSBwcm92aWRlZSIiIgotICAgICAgICBzZWxmLmJ1aWxkKCBwYXJhbXMsICJwYWNrYWdlIiApCi0gICAgcGFja2FnZS51c2FnZSA9ICI8cHJvdmlkZWU+IgotCi0gICAgZGVmIHBhc3RlQmluKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiU2VuZCBhIGNvbW1hbmQgKyBvdXRwdXQgYnVmZmVyIHRvIHRoZSBwYXN0ZWJpbiBhdCBodHRwOi8vcmFmYi5uZXQvcGFzdGUiIiIKLSAgICAgICAgaW5kZXggPSBwYXJhbXNbMF0KLSAgICAgICAgY29udGVudHMgPSBzZWxmLl9zaGVsbC5teW91dC5idWZmZXIoIGludCggaW5kZXggKSApCi0gICAgICAgIHNlbmRUb1Bhc3RlYmluKCAib3V0cHV0IG9mICIgKyBwYXJhbXNbMF0sIGNvbnRlbnRzICkKLSAgICBwYXN0ZUJpbi51c2FnZSA9ICI8aW5kZXg+IgotCi0gICAgZGVmIHBhc3RlTG9nKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiU2VuZCB0aGUgbGFzdCBldmVudCBleGNlcHRpb24gZXJyb3IgbG9nIChpZiB0aGVyZSBpcyBvbmUpIHRvIGh0dHA6Ly9yYWZiLm5ldC9wYXN0ZSIiIgotICAgICAgICBpZiBsYXN0X2V4Y2VwdGlvbiBpcyBOb25lOgotICAgICAgICAgICAgcHJpbnQoIlNIRUxMOiBObyBFcnJvcnMgeWV0IChQaGV3KS4uLiIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZWFzb24sIGV2ZW50ID0gbGFzdF9leGNlcHRpb24uYXJncwotICAgICAgICAgICAgcHJpbnQoIlNIRUxMOiBSZWFzb24gZm9yIHRoZSBsYXN0IGVycm9yOiAnJXMnIiAlIHJlYXNvbikKLSAgICAgICAgICAgIGlmICc6JyBpbiByZWFzb246Ci0gICAgICAgICAgICAgICAgbXNnLCBmaWxlbmFtZSA9IHJlYXNvbi5zcGxpdCggJzonICkKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBwcmludCgiU0hFTEw6IFBhc3RpbmcgbG9nIGZpbGUgdG8gcGFzdGViaW4uLi4iKQotCi0gICAgICAgICAgICAgICAgZmlsZSA9IG9wZW4oIGZpbGVuYW1lICkucmVhZCgpCi0gICAgICAgICAgICAgICAgc2VuZFRvUGFzdGViaW4oICJjb250ZW50cyBvZiAiICsgZmlsZW5hbWUsIGZpbGUgKQotCi0gICAgZGVmIHBhdGNoKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiRXhlY3V0ZSAncGF0Y2gnIGNvbW1hbmQgb24gYSBwcm92aWRlZSIiIgotICAgICAgICBzZWxmLmJ1aWxkKCBwYXJhbXMsICJwYXRjaCIgKQotICAgIHBhdGNoLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgcGFyc2UoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiIoUmUtKXBhcnNlIC5iYiBmaWxlcyBhbmQgY2FsY3VsYXRlIHRoZSBkZXBlbmRlbmN5IGdyYXBoIiIiCi0gICAgICAgIGNvb2tlci5zdGF0dXMgPSBjYWNoZS5DYWNoZURhdGEoY29va2VyLmNhY2hlc19hcnJheSkKLSAgICAgICAgaWdub3JlID0gZGF0YS5nZXRWYXIoIkFTU1VNRV9QUk9WSURFRCIsIGNvb2tlci5jb25maWd1cmF0aW9uLmRhdGEsIDEpIG9yICIiCi0gICAgICAgIGNvb2tlci5zdGF0dXMuaWdub3JlZF9kZXBlbmRlbmNpZXMgPSBzZXQoIGlnbm9yZS5zcGxpdCgpICkKLSAgICAgICAgY29va2VyLmhhbmRsZUNvbGxlY3Rpb25zKCBkYXRhLmdldFZhcigiQkJGSUxFX0NPTExFQ1RJT05TIiwgY29va2VyLmNvbmZpZ3VyYXRpb24uZGF0YSwgMSkgKQotCi0gICAgICAgIChmaWxlbGlzdCwgbWFza2VkKSA9IGNvb2tlci5jb2xsZWN0X2JiZmlsZXMoKQotICAgICAgICBjb29rZXIucGFyc2VfYmJmaWxlcyhmaWxlbGlzdCwgbWFza2VkLCBjb29rZXIubXlQcm9ncmVzc0NhbGxiYWNrKQotICAgICAgICBjb29rZXIuYnVpbGREZXBncmFwaCgpCi0gICAgICAgIGdsb2JhbCBwYXJzZWQKLSAgICAgICAgcGFyc2VkID0gVHJ1ZQotICAgICAgICBwcmludCgpCi0KLSAgICBkZWYgcmVwYXJzZSggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIihyZSlQYXJzZSBhIHByb3ZpZGVlJ3MgYmIgZmlsZSIiIgotICAgICAgICBiYmZpbGUgPSBzZWxmLl9maW5kUHJvdmlkZXIoIHBhcmFtc1swXSApCi0gICAgICAgIGlmIGJiZmlsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHByaW50KCJTSEVMTDogRm91bmQgYmJmaWxlICclcycgZm9yICclcyciICUgKCBiYmZpbGUsIHBhcmFtc1swXSApKQotICAgICAgICAgICAgc2VsZi5maWxlUmVwYXJzZSggWyBiYmZpbGUgXSApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiRVJST1I6IE5vdGhpbmcgcHJvdmlkZXMgJyVzJyIgJSBwYXJhbXNbMF0pCi0gICAgcmVwYXJzZS51c2FnZSA9ICI8cHJvdmlkZWU+IgotCi0gICAgZGVmIGdldHZhciggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkR1bXAgdGhlIGNvbnRlbnRzIG9mIGFuIG91dGVyIEJpdEJha2UgZW52aXJvbm1lbnQgdmFyaWFibGUiIiIKLSAgICAgICAgdmFyID0gcGFyYW1zWzBdCi0gICAgICAgIHZhbHVlID0gZGF0YS5nZXRWYXIoIHZhciwgY29va2VyLmNvbmZpZ3VyYXRpb24uZGF0YSwgMSApCi0gICAgICAgIHByaW50KHZhbHVlKQotICAgIGdldHZhci51c2FnZSA9ICI8dmFyaWFibGU+IgotCi0gICAgZGVmIHBlZWsoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJEdW1wIGNvbnRlbnRzIG9mIHZhcmlhYmxlIGRlZmluZWQgaW4gcHJvdmlkZWUncyBtZXRhZGF0YSIiIgotICAgICAgICBuYW1lLCB2YXIgPSBwYXJhbXMKLSAgICAgICAgYmJmaWxlID0gc2VsZi5fZmluZFByb3ZpZGVyKCBuYW1lICkKLSAgICAgICAgaWYgYmJmaWxlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdGhlX2RhdGEgPSBjYWNoZS5DYWNoZS5sb2FkRGF0YUZ1bGwoYmJmaWxlLCBjb29rZXIuY29uZmlndXJhdGlvbi5kYXRhKQotICAgICAgICAgICAgdmFsdWUgPSB0aGVfZGF0YS5nZXRWYXIoIHZhciwgMSApCi0gICAgICAgICAgICBwcmludCh2YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJFUlJPUjogTm90aGluZyBwcm92aWRlcyAnJXMnIiAlIG5hbWUpCi0gICAgcGVlay51c2FnZSA9ICI8cHJvdmlkZWU+IDx2YXJpYWJsZT4iCi0KLSAgICBkZWYgcG9rZSggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIlNldCBjb250ZW50cyBvZiB2YXJpYWJsZSBkZWZpbmVkIGluIHByb3ZpZGVlJ3MgbWV0YWRhdGEiIiIKLSAgICAgICAgbmFtZSwgdmFyLCB2YWx1ZSA9IHBhcmFtcwotICAgICAgICBiYmZpbGUgPSBzZWxmLl9maW5kUHJvdmlkZXIoIG5hbWUgKQotICAgICAgICBpZiBiYmZpbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBwcmludCgiRVJST1I6IFNvcnJ5LCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgY3VycmVudGx5IGJyb2tlbiIpCi0gICAgICAgICAgICAjZCA9IGNvb2tlci5wa2dkYXRhW2JiZmlsZV0KLSAgICAgICAgICAgICNkYXRhLnNldFZhciggdmFyLCB2YWx1ZSwgZCApCi0KLSAgICAgICAgICAgICMgbWFyayB0aGUgY2hhbmdlIHNlbWkgcGVyc2lzdGFudAotICAgICAgICAgICAgI2Nvb2tlci5wa2dkYXRhLnNldERpcnR5KGJiZmlsZSwgZCkKLSAgICAgICAgICAgICNwcmludCAiT0siCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiRVJST1I6IE5vdGhpbmcgcHJvdmlkZXMgJyVzJyIgJSBuYW1lKQotICAgIHBva2UudXNhZ2UgPSAiPHByb3ZpZGVlPiA8dmFyaWFibGU+IDx2YWx1ZT4iCi0KLSAgICBkZWYgcHJpbnRfKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiRHVtcCBhbGwgZmlsZXMgb3IgcHJvdmlkZXJzIiIiCi0gICAgICAgIHdoYXQgPSBwYXJhbXNbMF0KLSAgICAgICAgaWYgd2hhdCA9PSAiZmlsZXMiOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tQYXJzZWQoKQotICAgICAgICAgICAgZm9yIGtleSBpbiBjb29rZXIuc3RhdHVzLnBrZ19mbjogcHJpbnQoa2V5KQotICAgICAgICBlbGlmIHdoYXQgPT0gInByb3ZpZGVycyI6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja1BhcnNlZCgpCi0gICAgICAgICAgICBmb3Iga2V5IGluIGNvb2tlci5zdGF0dXMucHJvdmlkZXJzOiBwcmludChrZXkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiVXNhZ2U6IHByaW50ICVzIiAlIHNlbGYucHJpbnRfLnVzYWdlKQotICAgIHByaW50Xy51c2FnZSA9ICI8ZmlsZXN8cHJvdmlkZXJzPiIKLQotICAgIGRlZiBweXRob24oIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJFbnRlciB0aGUgZXhwZXJ0IG1vZGUgLSBhbiBpbnRlcmFjdGl2ZSBCaXRCYWtlIFB5dGhvbiBJbnRlcnByZXRlciIiIgotICAgICAgICBzeXMucHMxID0gIkVYUEVSVCBCQj4+PiAiCi0gICAgICAgIHN5cy5wczIgPSAiRVhQRVJUIEJCLi4uICIKLSAgICAgICAgaW1wb3J0IGNvZGUKLSAgICAgICAgaW50ZXJwcmV0ZXIgPSBjb2RlLkludGVyYWN0aXZlQ29uc29sZSggZGljdCggZ2xvYmFscygpICkgKQotICAgICAgICBpbnRlcnByZXRlci5pbnRlcmFjdCggIlNIRUxMOiBFeHBlcnQgTW9kZSAtIEJpdEJha2UgUHl0aG9uICVzXG5UeXBlICdoZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiwgcHJlc3MgQ1RSTC1EIHRvIHN3aXRjaCBiYWNrIHRvIEJCU0hFTEwuIiAlIHN5cy52ZXJzaW9uICkKLQotICAgIGRlZiBzaG93ZGF0YSggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkV4ZWN1dGUgJ3Nob3dkYXRhJyBvbiBhIHByb3ZpZGVlIiIiCi0gICAgICAgIGNvb2tlci5zaG93RW52aXJvbm1lbnQoTm9uZSwgcGFyYW1zKQotICAgIHNob3dkYXRhLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgc2V0VmFyKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiU2V0IGFuIG91dGVyIEJpdEJha2UgZW52aXJvbm1lbnQgdmFyaWFibGUiIiIKLSAgICAgICAgdmFyLCB2YWx1ZSA9IHBhcmFtcwotICAgICAgICBkYXRhLnNldFZhciggdmFyLCB2YWx1ZSwgY29va2VyLmNvbmZpZ3VyYXRpb24uZGF0YSApCi0gICAgICAgIHByaW50KCJPSyIpCi0gICAgc2V0VmFyLnVzYWdlID0gIjx2YXJpYWJsZT4gPHZhbHVlPiIKLQotICAgIGRlZiByZWJ1aWxkKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiQ2xlYW4gYW5kIHJlYnVpbGQgYSAuYmIgZmlsZSBvciBhIHByb3ZpZGVlIiIiCi0gICAgICAgIHNlbGYuYnVpbGQoIHBhcmFtcywgImNsZWFuIiApCi0gICAgICAgIHNlbGYuYnVpbGQoIHBhcmFtcywgImJ1aWxkIiApCi0gICAgcmVidWlsZC51c2FnZSA9ICI8cHJvdmlkZWU+IgotCi0gICAgZGVmIHNoZWxsKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiRXhlY3V0ZSBhIHNoZWxsIGNvbW1hbmQgYW5kIGR1bXAgdGhlIG91dHB1dCIiIgotICAgICAgICBpZiBwYXJhbXMgIT0gIiI6Ci0gICAgICAgICAgICBwcmludChjb21tYW5kcy5nZXRvdXRwdXQoICIgIi5qb2luKCBwYXJhbXMgKSApKQotICAgIHNoZWxsLnVzYWdlID0gIjwuLi4+IgotCi0gICAgZGVmIHN0YWdlKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiRXhlY3V0ZSAnc3RhZ2UnIG9uIGEgcHJvdmlkZWUiIiIKLSAgICAgICAgc2VsZi5idWlsZCggcGFyYW1zLCAicG9wdWxhdGVfc3RhZ2luZyIgKQotICAgIHN0YWdlLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgc3RhdHVzKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiPGp1c3QgZm9yIHRlc3Rpbmc+IiIiCi0gICAgICAgIHByaW50KCItIiAqIDc4KQotICAgICAgICBwcmludCgiYnVpbGRpbmcgbGlzdCA9ICclcyciICUgY29va2VyLmJ1aWxkaW5nX2xpc3QpCi0gICAgICAgIHByaW50KCJidWlsZCBwYXRoID0gJyVzJyIgJSBjb29rZXIuYnVpbGRfcGF0aCkKLSAgICAgICAgcHJpbnQoImNvbnNpZGVyX21zZ3NfY2FjaGUgPSAnJXMnIiAlIGNvb2tlci5jb25zaWRlcl9tc2dzX2NhY2hlKQotICAgICAgICBwcmludCgiYnVpbGQgc3RhdHMgPSAnJXMnIiAlIGNvb2tlci5zdGF0cykKLSAgICAgICAgaWYgbGFzdF9leGNlcHRpb24gaXMgbm90IE5vbmU6IHByaW50KCJsYXN0X2V4Y2VwdGlvbiA9ICclcyciICUgcmVwciggbGFzdF9leGNlcHRpb24uYXJncyApKQotICAgICAgICBwcmludCgibWVtb3J5IG91dHB1dCBjb250ZW50cyA9ICclcyciICUgc2VsZi5fc2hlbGwubXlvdXQuX2J1ZmZlcikKLQotICAgIGRlZiB0ZXN0KCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiPGp1c3QgZm9yIHRlc3Rpbmc+IiIiCi0gICAgICAgIHByaW50KCJ0ZXN0Q29tbWFuZCBjYWxsZWQgd2l0aCAnJXMnIiAlIHBhcmFtcykKLQotICAgIGRlZiB1bnBhY2soIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJFeGVjdXRlICd1bnBhY2snIG9uIGEgcHJvdmlkZWUiIiIKLSAgICAgICAgc2VsZi5idWlsZCggcGFyYW1zLCAidW5wYWNrIiApCi0gICAgdW5wYWNrLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgd2hpY2goIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJDb21wdXRlcyB0aGUgcHJvdmlkZXJzIGZvciBhIGdpdmVuIHByb3ZpZGVlIiIiCi0gICAgICAgICMgTmVlZCB0byB1c2UgdGFza0RhdGEgZm9yIHRoaXMgaW5mb3JtYXRpb24KLSAgICAgICAgaXRlbSA9IHBhcmFtc1swXQotCi0gICAgICAgIHNlbGYuX2NoZWNrUGFyc2VkKCkKLQotICAgICAgICBwcmVmZXJyZWQgPSBkYXRhLmdldFZhciggIlBSRUZFUlJFRF9QUk9WSURFUl8lcyIgJSBpdGVtLCBjb29rZXIuY29uZmlndXJhdGlvbi5kYXRhLCAxICkKLSAgICAgICAgaWYgbm90IHByZWZlcnJlZDogcHJlZmVycmVkID0gaXRlbQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGx2LCBsZiwgcHYsIHBmID0gUHJvdmlkZXJzLmZpbmRCZXN0UHJvdmlkZXIocHJlZmVycmVkLCBjb29rZXIuY29uZmlndXJhdGlvbi5kYXRhLCBjb29rZXIuc3RhdHVzKQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBsdiwgbGYsIHB2LCBwZiA9IChOb25lLCkqNAotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHByb3ZpZGVycyA9IGNvb2tlci5zdGF0dXMucHJvdmlkZXJzW2l0ZW1dCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJTSEVMTDogRVJST1I6IE5vdGhpbmcgcHJvdmlkZXMiLCBwcmVmZXJyZWQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3IgcHJvdmlkZXIgaW4gcHJvdmlkZXJzOgotICAgICAgICAgICAgICAgIGlmIHByb3ZpZGVyID09IHBmOiBwcm92aWRlciA9ICIgKCoqKikgJXMiICUgcHJvdmlkZXIKLSAgICAgICAgICAgICAgICBlbHNlOiAgICAgICAgICAgICAgcHJvdmlkZXIgPSAiICAgICAgICVzIiAlIHByb3ZpZGVyCi0gICAgICAgICAgICAgICAgcHJpbnQocHJvdmlkZXIpCi0gICAgd2hpY2gudXNhZ2UgPSAiPHByb3ZpZGVlPiIKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29tbW9uIGhlbHBlciBmdW5jdGlvbnMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWRlZiBjb21wbGV0ZUZpbGVQYXRoKCBiYmZpbGUgKToKLSAgICAiIiJHZXQgdGhlIGNvbXBsZXRlIGJiZmlsZSBwYXRoIiIiCi0gICAgaWYgbm90IGNvb2tlci5zdGF0dXM6IHJldHVybiBiYmZpbGUKLSAgICBpZiBub3QgY29va2VyLnN0YXR1cy5wa2dfZm46IHJldHVybiBiYmZpbGUKLSAgICBmb3Iga2V5IGluIGNvb2tlci5zdGF0dXMucGtnX2ZuOgotICAgICAgICBpZiBrZXkuZW5kc3dpdGgoIGJiZmlsZSApOgotICAgICAgICAgICAgcmV0dXJuIGtleQotICAgIHJldHVybiBiYmZpbGUKLQotZGVmIHNlbmRUb1Bhc3RlYmluKCBkZXNjLCBjb250ZW50ICk6Ci0gICAgIiIiU2VuZCBjb250ZW50IHRvIGh0dHA6Ly9vZS5wYXN0ZWJpbi5jb20iIiIKLSAgICBteWRhdGEgPSB7fQotICAgIG15ZGF0YVsibGFuZyJdID0gIlBsYWluIFRleHQiCi0gICAgbXlkYXRhWyJkZXNjIl0gPSBkZXNjCi0gICAgbXlkYXRhWyJjdnRfdGFicyJdID0gIk5vIgotICAgIG15ZGF0YVsibmljayJdID0gIiVzQCVzIiAlICggb3MuZW52aXJvbi5nZXQoICJVU0VSIiwgInVua25vd24iICksIHNvY2tldC5nZXRob3N0bmFtZSgpIG9yICJ1bmtub3duIiApCi0gICAgbXlkYXRhWyJ0ZXh0Il0gPSBjb250ZW50Ci0gICAgcGFyYW1zID0gdXJsbGliLnVybGVuY29kZSggbXlkYXRhICkKLSAgICBoZWFkZXJzID0geyJDb250ZW50LXR5cGUiOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwgIkFjY2VwdCI6ICJ0ZXh0L3BsYWluIn0KLQotICAgIGhvc3QgPSAicmFmYi5uZXQiCi0gICAgY29ubiA9IGh0dHBsaWIuSFRUUENvbm5lY3Rpb24oICIlczo4MCIgJSBob3N0ICkKLSAgICBjb25uLnJlcXVlc3QoIlBPU1QiLCAiL3Bhc3RlL3Bhc3RlLnBocCIsIHBhcmFtcywgaGVhZGVycyApCi0KLSAgICByZXNwb25zZSA9IGNvbm4uZ2V0cmVzcG9uc2UoKQotICAgIGNvbm4uY2xvc2UoKQotCi0gICAgaWYgcmVzcG9uc2Uuc3RhdHVzID09IDMwMjoKLSAgICAgICAgbG9jYXRpb24gPSByZXNwb25zZS5nZXRoZWFkZXIoICJsb2NhdGlvbiIgKSBvciAidW5rbm93biIKLSAgICAgICAgcHJpbnQoIlNIRUxMOiBQYXN0ZWQgdG8gaHR0cDovLyVzJXMiICUgKCBob3N0LCBsb2NhdGlvbiApKQotICAgIGVsc2U6Ci0gICAgICAgIHByaW50KCJFUlJPUjogJXMgJXMiICUgKCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnJlYXNvbiApKQotCi1kZWYgY29tcGxldGVyKCB0ZXh0LCBzdGF0ZSApOgotICAgICIiIlJldHVybiBhIHBvc3NpYmxlIHJlYWRsaW5lIGNvbXBsZXRpb24iIiIKLSAgICBkZWJ1Z091dCggImNvbXBsZXRlciBjYWxsZWQgd2l0aCB0ZXh0PSclcycsIHN0YXRlPSclZCciICUgKCB0ZXh0LCBzdGF0ZSApICkKLQotICAgIGlmIHN0YXRlID09IDA6Ci0gICAgICAgIGxpbmUgPSByZWFkbGluZS5nZXRfbGluZV9idWZmZXIoKQotICAgICAgICBpZiAiICIgaW4gbGluZToKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCkKLSAgICAgICAgICAgICMgd2UgYXJlIGluIHNlY29uZCAob3IgbW9yZSkgYXJndW1lbnQKLSAgICAgICAgICAgIGlmIGxpbmVbMF0gaW4gY21kcyBhbmQgaGFzYXR0ciggY21kc1tsaW5lWzBdXVswXSwgInVzYWdlIiApOiAjIGtub3duIGNvbW1hbmQgYW5kIHVzYWdlCi0gICAgICAgICAgICAgICAgdSA9IGdldGF0dHIoIGNtZHNbbGluZVswXV1bMF0sICJ1c2FnZSIgKS5zcGxpdCgpWzBdCi0gICAgICAgICAgICAgICAgaWYgdSA9PSAiPHZhcmlhYmxlPiI6Ci0gICAgICAgICAgICAgICAgICAgIGFsbG1hdGNoZXMgPSBjb29rZXIuY29uZmlndXJhdGlvbi5kYXRhLmtleXMoKQotICAgICAgICAgICAgICAgIGVsaWYgdSA9PSAiPGJiZmlsZT4iOgotICAgICAgICAgICAgICAgICAgICBpZiBjb29rZXIuc3RhdHVzLnBrZ19mbiBpcyBOb25lOiBhbGxtYXRjaGVzID0gWyAiKE5vIE1hdGNoZXMgQXZhaWxhYmxlLiBQYXJzZWQgeWV0PykiIF0KLSAgICAgICAgICAgICAgICAgICAgZWxzZTogYWxsbWF0Y2hlcyA9IFsgeC5zcGxpdCgiLyIpWy0xXSBmb3IgeCBpbiBjb29rZXIuc3RhdHVzLnBrZ19mbiBdCi0gICAgICAgICAgICAgICAgZWxpZiB1ID09ICI8cHJvdmlkZWU+IjoKLSAgICAgICAgICAgICAgICAgICAgaWYgY29va2VyLnN0YXR1cy5wa2dfZm4gaXMgTm9uZTogYWxsbWF0Y2hlcyA9IFsgIihObyBNYXRjaGVzIEF2YWlsYWJsZS4gUGFyc2VkIHlldD8pIiBdCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6IGFsbG1hdGNoZXMgPSBjb29rZXIuc3RhdHVzLnByb3ZpZGVycy5pdGVya2V5cygpCi0gICAgICAgICAgICAgICAgZWxzZTogYWxsbWF0Y2hlcyA9IFsgIihObyB0YWIgY29tcGxldGlvbiBhdmFpbGFibGUgZm9yIHRoaXMgY29tbWFuZCkiIF0KLSAgICAgICAgICAgIGVsc2U6IGFsbG1hdGNoZXMgPSBbICIoTm8gdGFiIGNvbXBsZXRpb24gYXZhaWxhYmxlIGZvciB0aGlzIGNvbW1hbmQpIiBdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIHdlIGFyZSBpbiBmaXJzdCBhcmd1bWVudAotICAgICAgICAgICAgYWxsbWF0Y2hlcyA9IGNtZHMuaXRlcmtleXMoKQotCi0gICAgICAgIGNvbXBsZXRlci5tYXRjaGVzID0gWyB4IGZvciB4IGluIGFsbG1hdGNoZXMgaWYgeFs6bGVuKHRleHQpXSA9PSB0ZXh0IF0KLSAgICAgICAgI3ByaW50ICJjb21wbGV0ZXIubWF0Y2hlcyA9ICclcyciICUgY29tcGxldGVyLm1hdGNoZXMKLSAgICBpZiBsZW4oIGNvbXBsZXRlci5tYXRjaGVzICkgPiBzdGF0ZToKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRlci5tYXRjaGVzW3N0YXRlXQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLWRlZiBkZWJ1Z091dCggdGV4dCApOgotICAgIGlmIGRlYnVnOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCAiKCAlcyApXG4iICUgdGV4dCApCi0KLWRlZiBjb2x1bW5pemUoIGFsaXN0LCB3aWR0aCA9IDgwICk6Ci0gICAgIiIiCi0gICAgQSB3b3JkLXdyYXAgZnVuY3Rpb24gdGhhdCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MKLSAgICBhbmQgbW9zdCBzcGFjZXMgaW4gdGhlIHRleHQuIEV4cGVjdHMgdGhhdCBleGlzdGluZyBsaW5lCi0gICAgYnJlYWtzIGFyZSBwb3NpeCBuZXdsaW5lcyAoXG4pLgotICAgICIiIgotICAgIHJldHVybiByZWR1Y2UobGFtYmRhIGxpbmUsIHdvcmQsIHdpZHRoPXdpZHRoOiAnJXMlcyVzJyAlCi0gICAgICAgICAgICAgICAgICAobGluZSwKLSAgICAgICAgICAgICAgICAgICAnIFxuJ1sobGVuKGxpbmVbbGluZS5yZmluZCgnXG4nKSsxOl0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyBsZW4od29yZC5zcGxpdCgnXG4nLCAxKVswXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA+PSB3aWR0aCldLAotICAgICAgICAgICAgICAgICAgIHdvcmQpLAotICAgICAgICAgICAgICAgICAgYWxpc3QKLSAgICAgICAgICAgICAgICAgKQotCi1kZWYgZ2xvYmZpbHRlciggbmFtZXMsIHBhdHRlcm4gKToKLSAgICByZXR1cm4gZm5tYXRjaC5maWx0ZXIoIG5hbWVzLCBwYXR0ZXJuICkKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ2xhc3MgTWVtb3J5T3V0cHV0Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1jbGFzcyBNZW1vcnlPdXRwdXQ6Ci0gICAgIiIiRmlsZS1saWtlIG91dHB1dCBjbGFzcyBidWZmZXJpbmcgdGhlIG91dHB1dCBvZiB0aGUgbGFzdCAxMCBjb21tYW5kcyIiIgotICAgIGRlZiBfX2luaXRfXyggc2VsZiwgZGVsZWdhdGUgKToKLSAgICAgICAgc2VsZi5kZWxlZ2F0ZSA9IGRlbGVnYXRlCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IFtdCi0gICAgICAgIHNlbGYudGV4dCA9IFtdCi0gICAgICAgIHNlbGYuX2NvbW1hbmQgPSBOb25lCi0KLSAgICBkZWYgc3RhcnRDb21tYW5kKCBzZWxmLCBjb21tYW5kICk6Ci0gICAgICAgIHNlbGYuX2NvbW1hbmQgPSBjb21tYW5kCi0gICAgICAgIHNlbGYudGV4dCA9IFtdCi0gICAgZGVmIGVuZENvbW1hbmQoIHNlbGYgKToKLSAgICAgICAgaWYgc2VsZi5fY29tbWFuZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIGxlbiggc2VsZi5fYnVmZmVyICkgPT0gMTA6IGRlbCBzZWxmLl9idWZmZXJbMF0KLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5hcHBlbmQoICggc2VsZi5fY29tbWFuZCwgc2VsZi50ZXh0ICkgKQotICAgIGRlZiByZW1vdmVMYXN0KCBzZWxmICk6Ci0gICAgICAgIGlmIHNlbGYuX2J1ZmZlcjoKLSAgICAgICAgICAgIGRlbCBzZWxmLl9idWZmZXJbIGxlbiggc2VsZi5fYnVmZmVyICkgLSAxIF0KLSAgICAgICAgc2VsZi50ZXh0ID0gW10KLSAgICAgICAgc2VsZi5fY29tbWFuZCA9IE5vbmUKLSAgICBkZWYgbGFzdEJ1ZmZlciggc2VsZiApOgotICAgICAgICBpZiBzZWxmLl9idWZmZXI6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyWyBsZW4oIHNlbGYuX2J1ZmZlciApIC0xIF1bMV0KLSAgICBkZWYgYnVmZmVyZWRDb21tYW5kcyggc2VsZiApOgotICAgICAgICByZXR1cm4gWyBjbWQgZm9yIGNtZCwgb3V0cHV0IGluIHNlbGYuX2J1ZmZlciBdCi0gICAgZGVmIGJ1ZmZlciggc2VsZiwgaSApOgotICAgICAgICBpZiBpIDwgbGVuKCBzZWxmLl9idWZmZXIgKToKLSAgICAgICAgICAgIHJldHVybiAiQkI+PiAlc1xuJXMiICUgKCBzZWxmLl9idWZmZXJbaV1bMF0sICIiLmpvaW4oIHNlbGYuX2J1ZmZlcltpXVsxXSApICkKLSAgICAgICAgZWxzZTogcmV0dXJuICJFUlJPUjogSW52YWxpZCBidWZmZXIgbnVtYmVyLiBCdWZmZXIgbmVlZHMgdG8gYmUgaW4gKDAsICVkKSIgJSAoIGxlbiggc2VsZi5fYnVmZmVyICkgLSAxICkKLSAgICBkZWYgd3JpdGUoIHNlbGYsIHRleHQgKToKLSAgICAgICAgaWYgc2VsZi5fY29tbWFuZCBpcyBub3QgTm9uZSBhbmQgdGV4dCAhPSAiQkI+PiAiOiBzZWxmLnRleHQuYXBwZW5kKCB0ZXh0ICkKLSAgICAgICAgaWYgc2VsZi5kZWxlZ2F0ZSBpcyBub3QgTm9uZTogc2VsZi5kZWxlZ2F0ZS53cml0ZSggdGV4dCApCi0gICAgZGVmIGZsdXNoKCBzZWxmICk6Ci0gICAgICAgIHJldHVybiBzZWxmLmRlbGVnYXRlLmZsdXNoKCkKLSAgICBkZWYgZmlsZW5vKCBzZWxmICk6Ci0gICAgICAgIHJldHVybiBzZWxmLmRlbGVnYXRlLmZpbGVubygpCi0gICAgZGVmIGlzYXR0eSggc2VsZiApOgotICAgICAgICByZXR1cm4gc2VsZi5kZWxlZ2F0ZS5pc2F0dHkoKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDbGFzcyBCaXRCYWtlU2hlbGwKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWNsYXNzIEJpdEJha2VTaGVsbDoKLQotICAgIGRlZiBfX2luaXRfXyggc2VsZiApOgotICAgICAgICAiIiJSZWdpc3RlciBjb21tYW5kcyBhbmQgc2V0IHVwIHJlYWRsaW5lIiIiCi0gICAgICAgIHNlbGYuY29tbWFuZFEgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHNlbGYuY29tbWFuZHMgPSBCaXRCYWtlU2hlbGxDb21tYW5kcyggc2VsZiApCi0gICAgICAgIHNlbGYubXlvdXQgPSBNZW1vcnlPdXRwdXQoIHN5cy5zdGRvdXQgKQotICAgICAgICBzZWxmLmhpc3RvcnlmaWxlbmFtZSA9IG9zLnBhdGguZXhwYW5kdXNlciggIn4vLmJic2hfaGlzdG9yeSIgKQotICAgICAgICBzZWxmLnN0YXJ0dXBmaWxlbmFtZSA9IG9zLnBhdGguZXhwYW5kdXNlciggIn4vLmJic2hfc3RhcnR1cCIgKQotCi0gICAgICAgIHJlYWRsaW5lLnNldF9jb21wbGV0ZXIoIGNvbXBsZXRlciApCi0gICAgICAgIHJlYWRsaW5lLnNldF9jb21wbGV0ZXJfZGVsaW1zKCAiICIgKQotICAgICAgICByZWFkbGluZS5wYXJzZV9hbmRfYmluZCgidGFiOiBjb21wbGV0ZSIpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoIHNlbGYuaGlzdG9yeWZpbGVuYW1lICkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICBwYXNzICAjIEl0IGRvZXNuJ3QgZXhpc3QgeWV0LgotCi0gICAgICAgIHByaW50KF9fY3JlZGl0c19fKQotCi0gICAgZGVmIGNsZWFudXAoIHNlbGYgKToKLSAgICAgICAgIiIiV3JpdGUgcmVhZGxpbmUgaGlzdG9yeSBhbmQgY2xlYW4gdXAgcmVzb3VyY2VzIiIiCi0gICAgICAgIGRlYnVnT3V0KCAid3JpdGluZyBjb21tYW5kIGhpc3RvcnkiICkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVhZGxpbmUud3JpdGVfaGlzdG9yeV9maWxlKCBzZWxmLmhpc3RvcnlmaWxlbmFtZSApCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHByaW50KCJTSEVMTDogVW5hYmxlIHRvIHNhdmUgY29tbWFuZCBoaXN0b3J5IikKLQotICAgIGRlZiByZWdpc3RlckNvbW1hbmQoIHNlbGYsIGNvbW1hbmQsIGZ1bmN0aW9uLCBudW1wYXJhbXMgPSAwLCB1c2FnZSA9ICIiLCBoZWxwdGV4dCA9ICIiICk6Ci0gICAgICAgICIiIlJlZ2lzdGVyIGEgY29tbWFuZCIiIgotICAgICAgICBpZiB1c2FnZSA9PSAiIjogdXNhZ2UgPSBjb21tYW5kCi0gICAgICAgIGlmIGhlbHB0ZXh0ID09ICIiOiBoZWxwdGV4dCA9IGZ1bmN0aW9uLl9fZG9jX18gb3IgIjxub3QgeWV0IGRvY3VtZW50ZWQ+IgotICAgICAgICBjbWRzW2NvbW1hbmRdID0gKCBmdW5jdGlvbiwgbnVtcGFyYW1zLCB1c2FnZSwgaGVscHRleHQgKQotCi0gICAgZGVmIHByb2Nlc3NDb21tYW5kKCBzZWxmLCBjb21tYW5kLCBwYXJhbXMgKToKLSAgICAgICAgIiIiUHJvY2VzcyBhIGNvbW1hbmQuIENoZWNrIG51bWJlciBvZiBwYXJhbXMgYW5kIHByaW50IGEgdXNhZ2Ugc3RyaW5nLCBpZiBhcHByb3ByaWF0ZSIiIgotICAgICAgICBkZWJ1Z091dCggInByb2Nlc3NpbmcgY29tbWFuZCAnJXMnLi4uIiAlIGNvbW1hbmQgKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmdW5jdGlvbiwgbnVtcGFyYW1zLCB1c2FnZSwgaGVscHRleHQgPSBjbWRzW2NvbW1hbmRdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJTSEVMTDogRVJST1I6ICclcycgY29tbWFuZCBpcyBub3QgYSB2YWxpZCBjb21tYW5kLiIgJSBjb21tYW5kKQotICAgICAgICAgICAgc2VsZi5teW91dC5yZW1vdmVMYXN0KCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIChudW1wYXJhbXMgIT0gLTEpIGFuZCAobm90IGxlbiggcGFyYW1zICkgPT0gbnVtcGFyYW1zKToKLSAgICAgICAgICAgICAgICBwcmludCgiVXNhZ2U6ICclcyciICUgdXNhZ2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uKCBzZWxmLmNvbW1hbmRzLCBwYXJhbXMgKQotICAgICAgICAgICAgZGVidWdPdXQoICJyZXN1bHQgd2FzICclcyciICUgcmVzdWx0ICkKLQotICAgIGRlZiBwcm9jZXNzU3RhcnR1cEZpbGUoIHNlbGYgKToKLSAgICAgICAgIiIiUmVhZCBhbmQgZXhlY3V0ZSBhbGwgY29tbWFuZHMgZm91bmQgaW4gJEhPTUUvLmJic2hfc3RhcnR1cCIiIgotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyggc2VsZi5zdGFydHVwZmlsZW5hbWUgKToKLSAgICAgICAgICAgIHN0YXJ0dXBmaWxlID0gb3Blbiggc2VsZi5zdGFydHVwZmlsZW5hbWUsICJyIiApCi0gICAgICAgICAgICBmb3IgY21kbGluZSBpbiBzdGFydHVwZmlsZToKLSAgICAgICAgICAgICAgICBkZWJ1Z091dCggInByb2Nlc3Npbmcgc3RhcnR1cCBsaW5lICclcyciICUgY21kbGluZSApCi0gICAgICAgICAgICAgICAgaWYgbm90IGNtZGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgInwiIGluIGNtZGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCJFUlJPUjogJ3wnIGluIHN0YXJ0dXAgZmlsZSBpcyBub3QgYWxsb3dlZC4gSWdub3JpbmcgbGluZSIpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kUS5wdXQoIGNtZGxpbmUuc3RyaXAoKSApCi0KLSAgICBkZWYgbWFpbiggc2VsZiApOgotICAgICAgICAiIiJUaGUgbWFpbiBjb21tYW5kIGxvb3AiIiIKLSAgICAgICAgd2hpbGUgbm90IGxlYXZlX21haW5sb29wOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIHNlbGYuY29tbWFuZFEuZW1wdHkoKToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYubXlvdXQuZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgY21kbGluZSA9IHJhd19pbnB1dCggIkJCPj4gIiApCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzZWxmLm15b3V0Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY21kbGluZSA9IHNlbGYuY29tbWFuZFEuZ2V0KCkKLSAgICAgICAgICAgICAgICBpZiBjbWRsaW5lOgotICAgICAgICAgICAgICAgICAgICBhbGxDb21tYW5kcyA9IGNtZGxpbmUuc3BsaXQoICc7JyApCi0gICAgICAgICAgICAgICAgICAgIGZvciBjb21tYW5kIGluIGFsbENvbW1hbmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWNtZCA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCBjYXNlIGZvciBleHBlcnQgbW9kZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29tbWFuZCA9PSAncHl0aG9uJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2VsZi5teW91dC5kZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc0NvbW1hbmQoIGNvbW1hbmQsICIiICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2VsZi5teW91dAotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm15b3V0LnN0YXJ0Q29tbWFuZCggY29tbWFuZCApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ3wnIGluIGNvbW1hbmQ6ICMgZGlzYWJsZSBvdXRwdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgcGlwZWNtZCA9IGNvbW1hbmQuc3BsaXQoICd8JyApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlID0gc2VsZi5teW91dC5kZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm15b3V0LmRlbGVnYXRlID0gTm9uZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VucyA9IHNobGV4LnNwbGl0KCBjb21tYW5kLCBUcnVlICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NDb21tYW5kKCB0b2tlbnNbMF0sIHRva2Vuc1sxOl0gb3IgIiIgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubXlvdXQuZW5kQ29tbWFuZCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGlwZWNtZCBpcyBub3QgTm9uZTogIyByZXN0b3JlIG91dHB1dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm15b3V0LmRlbGVnYXRlID0gZGVsZWdhdGUKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlID0gcG9wZW4yLlBvcGVuNCggcGlwZWNtZCApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGUudG9jaGlsZC53cml0ZSggIlxuIi5qb2luKCBzZWxmLm15b3V0Lmxhc3RCdWZmZXIoKSApICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZS50b2NoaWxkLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSggcGlwZS5mcm9tY2hpbGQucmVhZCgpICkKLSAgICAgICAgICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKLSAgICAgICAgICAgICAgICBwcmludCgpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgcHJpbnQoKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBTdGFydCBmdW5jdGlvbiAtIGNhbGxlZCBmcm9tIHRoZSBCaXRCYWtlIGNvbW1hbmQgbGluZSB1dGlsaXR5Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1kZWYgc3RhcnQoIGFDb29rZXIgKToKLSAgICBnbG9iYWwgY29va2VyCi0gICAgY29va2VyID0gYUNvb2tlcgotICAgIGJic2hlbGwgPSBCaXRCYWtlU2hlbGwoKQotICAgIGJic2hlbGwucHJvY2Vzc1N0YXJ0dXBGaWxlKCkKLSAgICBiYnNoZWxsLm1haW4oKQotICAgIGJic2hlbGwuY2xlYW51cCgpCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgcHJpbnQoIlNIRUxMOiBTb3JyeSwgdGhpcyBwcm9ncmFtIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSBCaXRCYWtlLiIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZXZlbnQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZXZlbnQucHkKaW5kZXggYzdlYjFmZS4uZDNhNWY2MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2V2ZW50LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9ldmVudC5weQpAQCAtMzAsMjggKzMwLDQ1IEBACiBpbXBvcnQgcGlja2xlCiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgY2FsbAorZnJvbSBiYi5tc2cgaW1wb3J0IEJCTG9nRm9ybWF0dGVyCiAKIAotY2xhc3MgRXZlbnRRdWV1ZVN0dWIoKToKK2NsYXNzIEV2ZW50UXVldWVTdHViQmFzZShvYmplY3QpOgorICAgICIiIiBCYXNlIGNsYXNzIGZvciBFdmVudFF1ZXVlU3R1YiBjbGFzc2VzICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5ldmVudF9jYWxscyA9IFtdCisgICAgICAgIHJldHVybgorCisgICAgZGVmIF9zdG9yZV9ldmVudF9kYXRhX3N0cmluZyhzZWxmLCBldmVudCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKKyAgICAgICAgICAgIGZvcm1hdHRlciA9IEJCTG9nRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpCisgICAgICAgICAgICBzZWxmLmV2ZW50X2NhbGxzLmFwcGVuZChmb3JtYXR0ZXIuZm9ybWF0KGV2ZW50KSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZXZlbnRfY2FsbHMuYXBwZW5kKGJiLmV2ZW50LmdldE5hbWUoZXZlbnQpKQorICAgICAgICByZXR1cm4KKworCitjbGFzcyBFdmVudFF1ZXVlU3R1YihFdmVudFF1ZXVlU3R1YkJhc2UpOgogICAgICIiIiBDbGFzcyB1c2VkIGFzIHNwZWNpZmljYXRpb24gZm9yIFVJIGV2ZW50IGhhbmRsZXIgcXVldWUgc3R1YiBvYmplY3RzICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuCisgICAgICAgIHN1cGVyKEV2ZW50UXVldWVTdHViLCBzZWxmKS5fX2luaXRfXygpCiAKICAgICBkZWYgc2VuZChzZWxmLCBldmVudCk6Ci0gICAgICAgIHJldHVybgorICAgICAgICBzdXBlcihFdmVudFF1ZXVlU3R1Yiwgc2VsZikuX3N0b3JlX2V2ZW50X2RhdGFfc3RyaW5nKGV2ZW50KQogCiAKLWNsYXNzIFBpY2tsZUV2ZW50UXVldWVTdHViKCk6CitjbGFzcyBQaWNrbGVFdmVudFF1ZXVlU3R1YihFdmVudFF1ZXVlU3R1YkJhc2UpOgogICAgICIiIiBDbGFzcyB1c2VkIGFzIHNwZWNpZmljYXRpb24gZm9yIFVJIGV2ZW50IGhhbmRsZXIgcXVldWUgc3R1YiBvYmplY3RzCiAgICAgICAgIHdpdGggc2VuZHBpY2tsZSBtZXRob2QgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICByZXR1cm4KKyAgICAgICAgc3VwZXIoUGlja2xlRXZlbnRRdWV1ZVN0dWIsIHNlbGYpLl9faW5pdF9fKCkKIAogICAgIGRlZiBzZW5kcGlja2xlKHNlbGYsIHBpY2tsZWRfZXZlbnQpOgotICAgICAgICByZXR1cm4KKyAgICAgICAgZXZlbnQgPSBwaWNrbGUubG9hZHMocGlja2xlZF9ldmVudCkKKyAgICAgICAgc3VwZXIoUGlja2xlRXZlbnRRdWV1ZVN0dWIsIHNlbGYpLl9zdG9yZV9ldmVudF9kYXRhX3N0cmluZyhldmVudCkKIAogCi1jbGFzcyBVSUNsaWVudFN0dWIoKToKK2NsYXNzIFVJQ2xpZW50U3R1YihvYmplY3QpOgogICAgICIiIiBDbGFzcyB1c2VkIGFzIHNwZWNpZmljYXRpb24gZm9yIFVJIGV2ZW50IGhhbmRsZXIgc3R1YiBvYmplY3RzICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5ldmVudCA9IE5vbmUKQEAgLTU5LDcgKzc2LDcgQEAKIAogY2xhc3MgRXZlbnRIYW5kbGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIiBFdmVudCBoYW5kbGluZyB0ZXN0IGNsYXNzICIiIgotICAgIF90aHJlYWRsb2NrX3Rlc3RfY2FsbHMgPSBbXQorCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2VzcyA9IE1vY2soKQpAQCAtMTc5LDYgKzE5NiwzMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMi5jYWxsX2FyZ3NfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9ldmVudF9oYW5kbGVyMikKIAorICAgIGRlZiB0ZXN0X2NsYXNzX2hhbmRsZXJfZmlsdGVycyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgZmlsdGVycyBmb3IgY2xhc3MgaGFuZGxlcnMgIiIiCisgICAgICAgIG1hc2sgPSBbImJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQiXQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiZXZlbnRfaGFuZGxlcjEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBiYi5ldmVudC5SZWdpc3RlcmVkKQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiZXZlbnRfaGFuZGxlcjIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIqIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGJiLmV2ZW50LlJlZ2lzdGVyZWQpCisgICAgICAgIGJiLmV2ZW50LnNldF9ldmVudGZpbHRlcigKKyAgICAgICAgICAgIGxhbWJkYSBuYW1lLCBoYW5kbGVyLCBldmVudCwgZCA6CisgICAgICAgICAgICBuYW1lID09ICdldmVudF9oYW5kbGVyMicgYW5kCisgICAgICAgICAgICBiYi5ldmVudC5nZXROYW1lKGV2ZW50KSA9PSAiT3BlcmF0aW9uU3RhcnRlZCIpCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQoKQorICAgICAgICBldmVudDIgPSBiYi5ldmVudC5PcGVyYXRpb25Db21wbGV0ZWQodG90YWw9MTIzKQorICAgICAgICBiYi5ldmVudC5maXJlX2NsYXNzX2hhbmRsZXJzKGV2ZW50MSwgTm9uZSkKKyAgICAgICAgYmIuZXZlbnQuZmlyZV9jbGFzc19oYW5kbGVycyhldmVudDIsIE5vbmUpCisgICAgICAgIGJiLmV2ZW50LmZpcmVfY2xhc3NfaGFuZGxlcnMoZXZlbnQyLCBOb25lKQorICAgICAgICBleHBlY3RlZF9ldmVudF9oYW5kbGVyMSA9IFtdCisgICAgICAgIGV4cGVjdGVkX2V2ZW50X2hhbmRsZXIyID0gW2NhbGwoZXZlbnQxKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEuY2FsbF9hcmdzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXZlbnRfaGFuZGxlcjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIyLmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V2ZW50X2hhbmRsZXIyKQorCiAgICAgZGVmIHRlc3RfY2hhbmdlX2hhbmRsZXJfZXZlbnRfbWFwcGluZyhzZWxmKToKICAgICAgICAgIiIiIFRlc3QgY2hhbmdpbmcgdGhlIGV2ZW50IG1hcHBpbmcgZm9yIGNsYXNzIGhhbmRsZXJzICIiIgogICAgICAgICBldmVudDEgPSBiYi5ldmVudC5PcGVyYXRpb25TdGFydGVkKCkKQEAgLTE5Niw4ICsyNDAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQogCiAgICAgICAgICMgdW5yZWdpc3RlciBoYW5kbGVyIGFuZCByZWdpc3RlciBpdCBvbmx5IGZvciBPcGVyYXRpb25TdGFydGVkCi0gICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlbW92ZSgiZXZlbnRfaGFuZGxlcjEiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIxKQorICAgICAgICBiYi5ldmVudC5yZW1vdmUoImV2ZW50X2hhbmRsZXIxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMSkKICAgICAgICAgbWFzayA9IFsiYmIuZXZlbnQuT3BlcmF0aW9uU3RhcnRlZCJdCiAgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyKCJldmVudF9oYW5kbGVyMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMSwKQEAgLTIxMCw4ICsyNTQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQogCiAgICAgICAgICMgdW5yZWdpc3RlciBoYW5kbGVyIGFuZCByZWdpc3RlciBpdCBvbmx5IGZvciBPcGVyYXRpb25Db21wbGV0ZWQKLSAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVtb3ZlKCJldmVudF9oYW5kbGVyMSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEpCisgICAgICAgIGJiLmV2ZW50LnJlbW92ZSgiZXZlbnRfaGFuZGxlcjEiLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIxKQogICAgICAgICBtYXNrID0gWyJiYi5ldmVudC5PcGVyYXRpb25Db21wbGV0ZWQiXQogICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiZXZlbnRfaGFuZGxlcjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEsCkBAIC0yNTksNiArMzAzLDYxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF91aTIuZXZlbnQuc2VuZHBpY2tsZS5jYWxsX2FyZ3NfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKIAorICAgIGRlZiB0ZXN0X3VpX2hhbmRsZXJfbWFza19maWx0ZXIoc2VsZik6CisgICAgICAgICIiIiBUZXN0IGZpbHRlcnMgZm9yIFVJIGhhbmRsZXJzICIiIgorICAgICAgICBtYXNrID0gWyJiYi5ldmVudC5PcGVyYXRpb25TdGFydGVkIl0KKyAgICAgICAgZGVidWdfZG9tYWlucyA9IHt9CisgICAgICAgIHNlbGYuX3Rlc3RfdWkxLmV2ZW50ID0gTW9jayhzcGVjX3NldD1FdmVudFF1ZXVlU3R1YikKKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVnaXN0ZXJfVUlIaGFuZGxlcihzZWxmLl90ZXN0X3VpMSwgbWFpbnVpPVRydWUpCisgICAgICAgIGJiLmV2ZW50LnNldF9VSUhtYXNrKHJlc3VsdCwgbG9nZ2luZy5JTkZPLCBkZWJ1Z19kb21haW5zLCBtYXNrKQorICAgICAgICBzZWxmLl90ZXN0X3VpMi5ldmVudCA9IE1vY2soc3BlY19zZXQ9UGlja2xlRXZlbnRRdWV1ZVN0dWIpCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIoc2VsZi5fdGVzdF91aTIsIG1haW51aT1UcnVlKQorICAgICAgICBiYi5ldmVudC5zZXRfVUlIbWFzayhyZXN1bHQsIGxvZ2dpbmcuSU5GTywgZGVidWdfZG9tYWlucywgbWFzaykKKworICAgICAgICBldmVudDEgPSBiYi5ldmVudC5PcGVyYXRpb25TdGFydGVkKCkKKyAgICAgICAgZXZlbnQyID0gYmIuZXZlbnQuT3BlcmF0aW9uQ29tcGxldGVkKHRvdGFsPTEpCisKKyAgICAgICAgYmIuZXZlbnQuZmlyZV91aV9oYW5kbGVycyhldmVudDEsIE5vbmUpCisgICAgICAgIGJiLmV2ZW50LmZpcmVfdWlfaGFuZGxlcnMoZXZlbnQyLCBOb25lKQorICAgICAgICBleHBlY3RlZCA9IFtjYWxsKGV2ZW50MSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF91aTEuZXZlbnQuc2VuZC5jYWxsX2FyZ3NfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKyAgICAgICAgZXhwZWN0ZWQgPSBbY2FsbChwaWNrbGUuZHVtcHMoZXZlbnQxKSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF91aTIuZXZlbnQuc2VuZHBpY2tsZS5jYWxsX2FyZ3NfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3VpX2hhbmRsZXJfbG9nX2ZpbHRlcihzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgbG9nIGZpbHRlcnMgZm9yIFVJIGhhbmRsZXJzICIiIgorICAgICAgICBtYXNrID0gWyIqIl0KKyAgICAgICAgZGVidWdfZG9tYWlucyA9IHsnQml0QmFrZS5Gb28nOiBsb2dnaW5nLldBUk5JTkd9CisKKyAgICAgICAgc2VsZi5fdGVzdF91aTEuZXZlbnQgPSBFdmVudFF1ZXVlU3R1YigpCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIoc2VsZi5fdGVzdF91aTEsIG1haW51aT1UcnVlKQorICAgICAgICBiYi5ldmVudC5zZXRfVUlIbWFzayhyZXN1bHQsIGxvZ2dpbmcuRVJST1IsIGRlYnVnX2RvbWFpbnMsIG1hc2spCisgICAgICAgIHNlbGYuX3Rlc3RfdWkyLmV2ZW50ID0gUGlja2xlRXZlbnRRdWV1ZVN0dWIoKQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuX3Rlc3RfdWkyLCBtYWludWk9VHJ1ZSkKKyAgICAgICAgYmIuZXZlbnQuc2V0X1VJSG1hc2socmVzdWx0LCBsb2dnaW5nLkVSUk9SLCBkZWJ1Z19kb21haW5zLCBtYXNrKQorCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQoKQorICAgICAgICBiYi5ldmVudC5maXJlX3VpX2hhbmRsZXJzKGV2ZW50MSwgTm9uZSkgICAjIEFsbCBldmVudHMgbWF0Y2gKKworICAgICAgICBldmVudF9sb2dfaGFuZGxlciA9IGJiLmV2ZW50LkxvZ0hhbmRsZXIoKQorICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZSIpCisgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGV2ZW50X2xvZ19oYW5kbGVyKQorICAgICAgICBsb2dnZXIxID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuRm9vIikKKyAgICAgICAgbG9nZ2VyMS53YXJuaW5nKCJUZXN0IHdhcm5pbmcgTG9nUmVjb3JkMSIpICMgTWF0Y2hlcyBkZWJ1Z19kb21haW5zIGxldmVsCisgICAgICAgIGxvZ2dlcjEuaW5mbygiVGVzdCBpbmZvIExvZ1JlY29yZCIpICAgICAgICAjIEZpbHRlcmVkIG91dAorICAgICAgICBsb2dnZXIyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuQmFyIikKKyAgICAgICAgbG9nZ2VyMi5lcnJvcigiVGVzdCBlcnJvciBMb2dSZWNvcmQiKSAgICAgICMgTWF0Y2hlcyBmaWx0ZXIgYmFzZSBsZXZlbAorICAgICAgICBsb2dnZXIyLndhcm5pbmcoIlRlc3Qgd2FybmluZyBMb2dSZWNvcmQyIikgIyBGaWx0ZXJlZCBvdXQKKyAgICAgICAgbG9nZ2VyLnJlbW92ZUhhbmRsZXIoZXZlbnRfbG9nX2hhbmRsZXIpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbJ09wZXJhdGlvblN0YXJ0ZWQnLAorICAgICAgICAgICAgICAgICAgICAnV0FSTklORzogVGVzdCB3YXJuaW5nIExvZ1JlY29yZDEnLAorICAgICAgICAgICAgICAgICAgICAnRVJST1I6IFRlc3QgZXJyb3IgTG9nUmVjb3JkJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90ZXN0X3VpMS5ldmVudC5ldmVudF9jYWxscywgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF91aTIuZXZlbnQuZXZlbnRfY2FsbHMsIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfZmlyZShzZWxmKToKICAgICAgICAgIiIiIFRlc3QgZmlyZSBtZXRob2QgdXNlZCB0byB0cmlnZ2VyIGNsYXNzIGFuZCB1aSBldmVudCBoYW5kbGVycyAiIiIKICAgICAgICAgbWFzayA9IFsiYmIuZXZlbnQuQ29uZmlnUGFyc2VkIl0KQEAgLTI4OSwxOCArMzg4LDI4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF91aTEuZXZlbnQuc2VuZC5jYWxsX2FyZ3NfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKIAorICAgIGRlZiB0ZXN0X3dvcmtlcl9maXJlKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCB0aGUgdHJpZ2dlcmluZyBvZiBiYi5ldmVudC53b3JrZXJfZmlyZSBjYWxsYmFjayAiIiIKKyAgICAgICAgYmIuZXZlbnQud29ya2VyX2ZpcmUgPSBNb2NrKCkKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5FdmVudCgpCisgICAgICAgIGJiLmV2ZW50LmZpcmUoZXZlbnQsIE5vbmUpCisgICAgICAgIGV4cGVjdGVkID0gW2NhbGwoZXZlbnQsIE5vbmUpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJiLmV2ZW50Lndvcmtlcl9maXJlLmNhbGxfYXJnc19saXN0LCBleHBlY3RlZCkKKwogICAgIGRlZiB0ZXN0X3ByaW50X3VpX3F1ZXVlKHNlbGYpOgogICAgICAgICAiIiIgVGVzdCBwcmludF91aV9xdWV1ZSBtZXRob2QgIiIiCiAgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQoKQogICAgICAgICBldmVudDIgPSBiYi5ldmVudC5PcGVyYXRpb25Db21wbGV0ZWQodG90YWw9MTIzKQogICAgICAgICBiYi5ldmVudC5maXJlKGV2ZW50MSwgTm9uZSkKICAgICAgICAgYmIuZXZlbnQuZmlyZShldmVudDIsIE5vbmUpCisgICAgICAgIGV2ZW50X2xvZ19oYW5kbGVyID0gYmIuZXZlbnQuTG9nSGFuZGxlcigpCiAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikKLSAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoYmIuZXZlbnQuTG9nSGFuZGxlcigpKQorICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihldmVudF9sb2dfaGFuZGxlcikKICAgICAgICAgbG9nZ2VyLmluZm8oIlRlc3QgaW5mbyBMb2dSZWNvcmQiKQogICAgICAgICBsb2dnZXIud2FybmluZygiVGVzdCB3YXJuaW5nIExvZ1JlY29yZCIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRMb2dzKCJCaXRCYWtlIiwgbGV2ZWw9IklORk8iKSBhcyBjbToKICAgICAgICAgICAgIGJiLmV2ZW50LnByaW50X3VpX3F1ZXVlKCkKKyAgICAgICAgbG9nZ2VyLnJlbW92ZUhhbmRsZXIoZXZlbnRfbG9nX2hhbmRsZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20ub3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgIFsiSU5GTzpCaXRCYWtlOlRlc3QgaW5mbyBMb2dSZWNvcmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiV0FSTklORzpCaXRCYWtlOlRlc3Qgd2FybmluZyBMb2dSZWNvcmQiXSkKQEAgLTM2NCw2ICs0NzMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RocmVhZGxvY2tfdGVzdF9jYWxscywKICAgICAgICAgICAgICAgICAgICAgICAgICBbIncxX3VpMSIsICJ3MV91aTIiLCAidzJfdWkxIiwgIncyX3VpMiJdKQogCisKICAgICBkZWYgdGVzdF9kaXNhYmxlX3RocmVhZGxvY2soc2VsZik6CiAgICAgICAgICIiIiBUZXN0IGRpc2FibGVfdGhyZWFkbG9jayBtZXRob2QgIiIiCiAgICAgICAgIHNlbGYuX3NldF90aHJlYWRsb2NrX3Rlc3RfbW9ja3VwcygpCkBAIC0zNzUsMyArNDg1LDUwMiBAQAogICAgICAgICAjIHByb2Nlc3NlZCBiZWZvcmUgZmluaXNoaW5nIGhhbmRsaW5nIHRoZSBmaXJzdCB3b3JrZXIgZXZlbnQuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGhyZWFkbG9ja190ZXN0X2NhbGxzLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsidzFfdWkxIiwgIncyX3VpMSIsICJ3MV91aTIiLCAidzJfdWkyIl0pCisKKworY2xhc3MgRXZlbnRDbGFzc2VzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiIEV2ZW50IGNsYXNzZXMgdGVzdCBjbGFzcyAiIiIKKworICAgIF93b3JrZXJfcGlkID0gNTQzMjEKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgYmIuZXZlbnQud29ya2VyX3BpZCA9IEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQKKworICAgIGRlZiB0ZXN0X0V2ZW50KHNlbGYpOgorICAgICAgICAiIiIgVGVzdCB0aGUgRXZlbnQgYmFzZSBjbGFzcyAiIiIKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5FdmVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfSGVhcnRiZWF0RXZlbnQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IHRoZSBIZWFydGJlYXRFdmVudCBjbGFzcyAiIiIKKyAgICAgICAgdGltZSA9IDEwCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuSGVhcnRiZWF0RXZlbnQodGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC50aW1lLCB0aW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X09wZXJhdGlvblN0YXJ0ZWQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IE9wZXJhdGlvblN0YXJ0ZWQgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIG1zZyA9ICJGb28gQmFyIgorICAgICAgICBldmVudCA9IGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQobXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X09wZXJhdGlvbkNvbXBsZXRlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgT3BlcmF0aW9uQ29tcGxldGVkIGV2ZW50IGNsYXNzICIiIgorICAgICAgICBtc2cgPSAiRm9vIEJhciIKKyAgICAgICAgdG90YWwgPSAxMjMKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5PcGVyYXRpb25Db21wbGV0ZWQodG90YWwsIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5tc2csIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC50b3RhbCwgdG90YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfT3BlcmF0aW9uUHJvZ3Jlc3Moc2VsZik6CisgICAgICAgICIiIiBUZXN0IE9wZXJhdGlvblByb2dyZXNzIGV2ZW50IGNsYXNzICIiIgorICAgICAgICBtc2cgPSAiRm9vIEJhciIKKyAgICAgICAgdG90YWwgPSAxMjMKKyAgICAgICAgY3VycmVudCA9IDExMQorICAgICAgICBldmVudCA9IGJiLmV2ZW50Lk9wZXJhdGlvblByb2dyZXNzKGN1cnJlbnQsIHRvdGFsLCBtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubXNnLCBtc2cgKyAiOiAlcy8lcyIgJSAoY3VycmVudCwgdG90YWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X0NvbmZpZ1BhcnNlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgdGhlIENvbmZpZ1BhcnNlZCBjbGFzcyAiIiIKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Db25maWdQYXJzZWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X011bHRpQ29uZmlnUGFyc2VkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBNdWx0aUNvbmZpZ1BhcnNlZCBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgbWNkYXRhID0geyJmb29iYXIiOiAiRm9vIEJhciJ9CisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuTXVsdGlDb25maWdQYXJzZWQobWNkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1jZGF0YSwgbWNkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1JlY2lwZUV2ZW50KHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBSZWNpcGVFdmVudCBldmVudCBiYXNlIGNsYXNzICIiIgorICAgICAgICBjYWxsYmFjayA9IGxhbWJkYSBhOiAyICogYQorICAgICAgICBldmVudCA9IGJiLmV2ZW50LlJlY2lwZUV2ZW50KGNhbGxiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmZuKDEpLCBjYWxsYmFjaygxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9SZWNpcGVQcmVGaW5hbGlzZShzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgUmVjaXBlUHJlRmluYWxpc2UgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIGNhbGxiYWNrID0gbGFtYmRhIGE6IDIgKiBhCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuUmVjaXBlUHJlRmluYWxpc2UoY2FsbGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZm4oMSksIGNhbGxiYWNrKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1JlY2lwZVRhc2tQcmVQcm9jZXNzKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBSZWNpcGVUYXNrUHJlUHJvY2VzcyBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgY2FsbGJhY2sgPSBsYW1iZGEgYTogMiAqIGEKKyAgICAgICAgdGFza2xpc3QgPSBbKCJmb29iYXIiLCBjYWxsYmFjayldCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuUmVjaXBlVGFza1ByZVByb2Nlc3MoY2FsbGJhY2ssIHRhc2tsaXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmZuKDEpLCBjYWxsYmFjaygxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC50YXNrbGlzdCwgdGFza2xpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfUmVjaXBlUGFyc2VkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBSZWNpcGVQYXJzZWQgZXZlbnQgYmFzZSBjbGFzcyAiIiIKKyAgICAgICAgY2FsbGJhY2sgPSBsYW1iZGEgYTogMiAqIGEKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5SZWNpcGVQYXJzZWQoY2FsbGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZm4oMSksIGNhbGxiYWNrKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1N0YW1wVXBkYXRlKHNlbGYpOgorICAgICAgICB0YXJnZXRzID0gWyJmb28iLCAiYmFyIl0KKyAgICAgICAgc3RhbXBmbnMgPSBbbGFtYmRhOiJmb29iYXIiXQorICAgICAgICBldmVudCA9IGJiLmV2ZW50LlN0YW1wVXBkYXRlKHRhcmdldHMsIHN0YW1wZm5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnRhcmdldHMsIHRhcmdldHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuc3RhbXBQcmVmaXgsIHN0YW1wZm5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X0J1aWxkQmFzZShzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgYmFzZSBjbGFzcyBmb3IgYml0YmFrZSBidWlsZCBldmVudHMgIiIiCisgICAgICAgIG5hbWUgPSAiZm9vIgorICAgICAgICBwa2dzID0gWyJiYXIiXQorICAgICAgICBmYWlsdXJlcyA9IDEyMworICAgICAgICBldmVudCA9IGJiLmV2ZW50LkJ1aWxkQmFzZShuYW1lLCBwa2dzLCBmYWlsdXJlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5uYW1lLCBuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBrZ3MsIHBrZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZ2V0RmFpbHVyZXMoKSwgZmFpbHVyZXMpCisgICAgICAgIG5hbWUgPSBldmVudC5uYW1lID0gImJhciIKKyAgICAgICAgcGtncyA9IGV2ZW50LnBrZ3MgPSBbImZvbyJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubmFtZSwgbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5wa2dzLCBwa2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmdldEZhaWx1cmVzKCksIGZhaWx1cmVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X0J1aWxkSW5pdChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgY2xhc3MgZm9yIGJpdGJha2UgYnVpbGQgaW52b2NhdGlvbiBldmVudHMgIiIiCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuQnVpbGRJbml0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5uYW1lLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBrZ3MsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmdldEZhaWx1cmVzKCksIDApCisgICAgICAgIG5hbWUgPSBldmVudC5uYW1lID0gImJhciIKKyAgICAgICAgcGtncyA9IGV2ZW50LnBrZ3MgPSBbImZvbyJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubmFtZSwgbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5wa2dzLCBwa2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmdldEZhaWx1cmVzKCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfQnVpbGRTdGFydGVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBjbGFzcyBmb3IgYnVpbGQgc3RhcnRlZCBldmVudHMgIiIiCisgICAgICAgIG5hbWUgPSAiZm9vIgorICAgICAgICBwa2dzID0gWyJiYXIiXQorICAgICAgICBmYWlsdXJlcyA9IDEyMworICAgICAgICBldmVudCA9IGJiLmV2ZW50LkJ1aWxkU3RhcnRlZChuYW1lLCBwa2dzLCBmYWlsdXJlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5uYW1lLCBuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBrZ3MsIHBrZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZ2V0RmFpbHVyZXMoKSwgZmFpbHVyZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubXNnLCAiQnVpbGRpbmcgU3RhcnRlZCIpCisgICAgICAgIG5hbWUgPSBldmVudC5uYW1lID0gImJhciIKKyAgICAgICAgcGtncyA9IGV2ZW50LnBrZ3MgPSBbImZvbyJdCisgICAgICAgIG1zZyA9IGV2ZW50Lm1zZyA9ICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubmFtZSwgbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5wa2dzLCBwa2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmdldEZhaWx1cmVzKCksIGZhaWx1cmVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X0J1aWxkQ29tcGxldGVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBjbGFzcyBmb3IgYnVpbGQgY29tcGxldGVkIGV2ZW50cyAiIiIKKyAgICAgICAgdG90YWwgPSAxMDAwCisgICAgICAgIG5hbWUgPSAiZm9vIgorICAgICAgICBwa2dzID0gWyJiYXIiXQorICAgICAgICBmYWlsdXJlcyA9IDEyMworICAgICAgICBpbnRlcnJ1cHRlZCA9IDEKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5CdWlsZENvbXBsZXRlZCh0b3RhbCwgbmFtZSwgcGtncywgZmFpbHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubmFtZSwgbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5wa2dzLCBwa2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmdldEZhaWx1cmVzKCksIGZhaWx1cmVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgIkJ1aWxkaW5nIEZhaWxlZCIpCisgICAgICAgIGV2ZW50MiA9IGJiLmV2ZW50LkJ1aWxkQ29tcGxldGVkKHRvdGFsLCBuYW1lLCBwa2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5uYW1lLCBuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5wa2dzLCBwa2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5nZXRGYWlsdXJlcygpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5tc2csICJCdWlsZGluZyBTdWNjZWVkZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9EaXNrRnVsbChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgRGlza0Z1bGwgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIGRldiA9ICIvZGV2L2ZvbyIKKyAgICAgICAgdHlwZSA9ICJleHQ0IgorICAgICAgICBmcmVlc3BhY2UgPSAiMTA0TSIKKyAgICAgICAgbW91bnRwb2ludCA9ICIvIgorICAgICAgICBldmVudCA9IGJiLmV2ZW50LkRpc2tGdWxsKGRldiwgdHlwZSwgZnJlZXNwYWNlLCBtb3VudHBvaW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X01vbml0b3JEaXNrRXZlbnQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IE1vbml0b3JEaXNrRXZlbnQgY2xhc3MgIiIiCisgICAgICAgIGF2YWlsYWJsZV9ieXRlcyA9IDEwMDAwMDAwCisgICAgICAgIGZyZWVfYnl0ZXMgPSA5MDAwMDAwMAorICAgICAgICB0b3RhbF9ieXRlcyA9IDEwMDAwMDAwMDAKKyAgICAgICAgZHUgPSBiYi5ldmVudC5EaXNrVXNhZ2VTYW1wbGUoYXZhaWxhYmxlX2J5dGVzLCBmcmVlX2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF9ieXRlcykKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Nb25pdG9yRGlza0V2ZW50KGR1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmRpc2tfdXNhZ2UuYXZhaWxhYmxlX2J5dGVzLCBhdmFpbGFibGVfYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZGlza191c2FnZS5mcmVlX2J5dGVzLCBmcmVlX2J5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmRpc2tfdXNhZ2UudG90YWxfYnl0ZXMsIHRvdGFsX2J5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X05vUHJvdmlkZXIoc2VsZik6CisgICAgICAgICIiIiBUZXN0IE5vUHJvdmlkZXIgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIGl0ZW0gPSAiZm9vYmFyIgorICAgICAgICBldmVudDEgPSBiYi5ldmVudC5Ob1Byb3ZpZGVyKGl0ZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQxLmdldEl0ZW0oKSwgaXRlbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDEuaXNSdW50aW1lKCksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihldmVudDEpLCAiTm90aGluZyBQUk9WSURFUyAnZm9vYmFyJyIpCisgICAgICAgIHJ1bnRpbWUgPSBUcnVlCisgICAgICAgIGRlcGVuZGVlcyA9IFsiZm9vIiwgImJhciJdCisgICAgICAgIHJlYXNvbnMgPSBOb25lCisgICAgICAgIGNsb3NlX21hdGNoZXMgPSBbImZvaWJhciIsICJmb290YmFyIl0KKyAgICAgICAgZXZlbnQyID0gYmIuZXZlbnQuTm9Qcm92aWRlcihpdGVtLCBydW50aW1lLCBkZXBlbmRlZXMsIHJlYXNvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfbWF0Y2hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDIuaXNSdW50aW1lKCksIFRydWUpCisgICAgICAgIGV4cGVjdGVkID0gKCJOb3RoaW5nIFJQUk9WSURFUyAnZm9vYmFyJyAoYnV0IGZvbywgYmFyIFJERVBFTkRTIgorICAgICAgICAgICAgICAgICAgICAiIG9uIG9yIG90aGVyd2lzZSByZXF1aXJlcyBpdCkuIENsb3NlIG1hdGNoZXM6XG4iCisgICAgICAgICAgICAgICAgICAgICIgIGZvaWJhclxuIgorICAgICAgICAgICAgICAgICAgICAiICBmb290YmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXZlbnQyKSwgZXhwZWN0ZWQpCisgICAgICAgIHJlYXNvbnMgPSBbIkl0ZW0gZG9lcyBub3QgZXhpc3Qgb24gZGF0YWJhc2UiXQorICAgICAgICBjbG9zZV9tYXRjaGVzID0gWyJmb2liYXIiLCAiZm9vdGJhciJdCisgICAgICAgIGV2ZW50MyA9IGJiLmV2ZW50Lk5vUHJvdmlkZXIoaXRlbSwgcnVudGltZSwgZGVwZW5kZWVzLCByZWFzb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX21hdGNoZXMpCisgICAgICAgIGV4cGVjdGVkID0gKCJOb3RoaW5nIFJQUk9WSURFUyAnZm9vYmFyJyAoYnV0IGZvbywgYmFyIFJERVBFTkRTIgorICAgICAgICAgICAgICAgICAgICAiIG9uIG9yIG90aGVyd2lzZSByZXF1aXJlcyBpdClcbiIKKyAgICAgICAgICAgICAgICAgICAgIkl0ZW0gZG9lcyBub3QgZXhpc3Qgb24gZGF0YWJhc2UiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihldmVudDMpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDMucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfTXVsdGlwbGVQcm92aWRlcnMoc2VsZik6CisgICAgICAgICIiIiBUZXN0IE11bHRpcGxlUHJvdmlkZXJzIGV2ZW50IGNsYXNzICIiIgorICAgICAgICBpdGVtID0gImZvb2JhciIKKyAgICAgICAgY2FuZGlkYXRlcyA9IFsiZm9vYmFydjEiLCAiZm9vYmFycyJdCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50Lk11bHRpcGxlUHJvdmlkZXJzKGl0ZW0sIGNhbmRpZGF0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQxLmlzUnVudGltZSgpLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDEuZ2V0SXRlbSgpLCBpdGVtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50MS5nZXRDYW5kaWRhdGVzKCksIGNhbmRpZGF0ZXMpCisgICAgICAgIGV4cGVjdGVkID0gKCJNdWx0aXBsZSBwcm92aWRlcnMgYXJlIGF2YWlsYWJsZSBmb3IgZm9vYmFyIChmb29iYXJ2MSwiCisgICAgICAgICAgICAgICAgICAgICIgZm9vYmFycylcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnNpZGVyIGRlZmluaW5nIGEgUFJFRkVSUkVEX1BST1ZJREVSIGVudHJ5IHRvIG1hdGNoICIKKyAgICAgICAgICAgICAgICAgICAgImZvb2JhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV2ZW50MSksIGV4cGVjdGVkKQorICAgICAgICBydW50aW1lID0gVHJ1ZQorICAgICAgICBldmVudDIgPSBiYi5ldmVudC5NdWx0aXBsZVByb3ZpZGVycyhpdGVtLCBjYW5kaWRhdGVzLCBydW50aW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5pc1J1bnRpbWUoKSwgcnVudGltZSkKKyAgICAgICAgZXhwZWN0ZWQgPSAoIk11bHRpcGxlIHByb3ZpZGVycyBhcmUgYXZhaWxhYmxlIGZvciBydW50aW1lIGZvb2JhciAiCisgICAgICAgICAgICAgICAgICAgICIoZm9vYmFydjEsIGZvb2JhcnMpXG4iCisgICAgICAgICAgICAgICAgICAgICJDb25zaWRlciBkZWZpbmluZyBhIFBSRUZFUlJFRF9SUFJPVklERVIgZW50cnkgdG8gbWF0Y2ggIgorICAgICAgICAgICAgICAgICAgICAiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXZlbnQyKSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQyLnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1BhcnNlU3RhcnRlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgUGFyc2VTdGFydGVkIGV2ZW50IGNsYXNzICIiIgorICAgICAgICB0b3RhbCA9IDEyMworICAgICAgICBldmVudCA9IGJiLmV2ZW50LlBhcnNlU3RhcnRlZCh0b3RhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5tc2csICJSZWNpcGUgcGFyc2luZyBTdGFydGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC50b3RhbCwgdG90YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfUGFyc2VDb21wbGV0ZWQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IFBhcnNlQ29tcGxldGVkIGV2ZW50IGNsYXNzICIiIgorICAgICAgICBjYWNoZWQgPSAxMAorICAgICAgICBwYXJzZWQgPSAxMworICAgICAgICBza2lwcGVkID0gNworICAgICAgICB2aXJ0dWFscyA9IDIKKyAgICAgICAgbWFza2VkID0gMQorICAgICAgICBlcnJvcnMgPSAwCisgICAgICAgIHRvdGFsID0gMjMKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5QYXJzZUNvbXBsZXRlZChjYWNoZWQsIHBhcnNlZCwgc2tpcHBlZCwgbWFza2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxzLCBlcnJvcnMsIHRvdGFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgIlJlY2lwZSBwYXJzaW5nIENvbXBsZXRlZCIpCisgICAgICAgIGV4cGVjdGVkID0gW2NhY2hlZCwgcGFyc2VkLCBza2lwcGVkLCB2aXJ0dWFscywgbWFza2VkLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgIGNhY2hlZCArIHBhcnNlZCwgdG90YWxdCisgICAgICAgIGFjdHVhbCA9IFtldmVudC5jYWNoZWQsIGV2ZW50LnBhcnNlZCwgZXZlbnQuc2tpcHBlZCwgZXZlbnQudmlydHVhbHMsCisgICAgICAgICAgICAgICAgICBldmVudC5tYXNrZWQsIGV2ZW50LmVycm9ycywgZXZlbnQuc29mYXIsIGV2ZW50LnRvdGFsXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhY3R1YWwpLCBzdHIoZXhwZWN0ZWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1BhcnNlUHJvZ3Jlc3Moc2VsZik6CisgICAgICAgICIiIiBUZXN0IFBhcnNlUHJvZ3Jlc3MgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIGN1cnJlbnQgPSAxMAorICAgICAgICB0b3RhbCA9IDEwMAorICAgICAgICBldmVudCA9IGJiLmV2ZW50LlBhcnNlUHJvZ3Jlc3MoY3VycmVudCwgdG90YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICJSZWNpcGUgcGFyc2luZyIgKyAiOiAlcy8lcyIgJSAoY3VycmVudCwgdG90YWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X0NhY2hlTG9hZFN0YXJ0ZWQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IENhY2hlTG9hZFN0YXJ0ZWQgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIHRvdGFsID0gMTIzCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuQ2FjaGVMb2FkU3RhcnRlZCh0b3RhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5tc2csICJMb2FkaW5nIGNhY2hlIFN0YXJ0ZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnRvdGFsLCB0b3RhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9DYWNoZUxvYWRQcm9ncmVzcyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgQ2FjaGVMb2FkUHJvZ3Jlc3MgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIGN1cnJlbnQgPSAxMAorICAgICAgICB0b3RhbCA9IDEwMAorICAgICAgICBldmVudCA9IGJiLmV2ZW50LkNhY2hlTG9hZFByb2dyZXNzKGN1cnJlbnQsIHRvdGFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiTG9hZGluZyBjYWNoZSIgKyAiOiAlcy8lcyIgJSAoY3VycmVudCwgdG90YWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X0NhY2hlTG9hZENvbXBsZXRlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgQ2FjaGVMb2FkQ29tcGxldGVkIGV2ZW50IGNsYXNzICIiIgorICAgICAgICB0b3RhbCA9IDIzCisgICAgICAgIG51bV9lbnRyaWVzID0gMTIKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5DYWNoZUxvYWRDb21wbGV0ZWQodG90YWwsIG51bV9lbnRyaWVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgIkxvYWRpbmcgY2FjaGUgQ29tcGxldGVkIikKKyAgICAgICAgZXhwZWN0ZWQgPSBbdG90YWwsIG51bV9lbnRyaWVzXQorICAgICAgICBhY3R1YWwgPSBbZXZlbnQudG90YWwsIGV2ZW50Lm51bV9lbnRyaWVzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhY3R1YWwpLCBzdHIoZXhwZWN0ZWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1RyZWVEYXRhUHJlcGFyYXRpb25TdGFydGVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBUcmVlRGF0YVByZXBhcmF0aW9uU3RhcnRlZCBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5UcmVlRGF0YVByZXBhcmF0aW9uU3RhcnRlZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubXNnLCAiUHJlcGFyaW5nIHRyZWUgZGF0YSBTdGFydGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9UcmVlRGF0YVByZXBhcmF0aW9uUHJvZ3Jlc3Moc2VsZik6CisgICAgICAgICIiIiBUZXN0IFRyZWVEYXRhUHJlcGFyYXRpb25Qcm9ncmVzcyBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgY3VycmVudCA9IDEwCisgICAgICAgIHRvdGFsID0gMTAwCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuVHJlZURhdGFQcmVwYXJhdGlvblByb2dyZXNzKGN1cnJlbnQsIHRvdGFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUHJlcGFyaW5nIHRyZWUgZGF0YSIgKyAiOiAlcy8lcyIgJSAoY3VycmVudCwgdG90YWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1RyZWVEYXRhUHJlcGFyYXRpb25Db21wbGV0ZWQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IFRyZWVEYXRhUHJlcGFyYXRpb25Db21wbGV0ZWQgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIHRvdGFsID0gMjMKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5UcmVlRGF0YVByZXBhcmF0aW9uQ29tcGxldGVkKHRvdGFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgIlByZXBhcmluZyB0cmVlIGRhdGEgQ29tcGxldGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC50b3RhbCwgdG90YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfRGVwVHJlZUdlbmVyYXRlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgRGVwVHJlZUdlbmVyYXRlZCBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgZGVwZ3JhcGggPSBNb2NrKCkKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5EZXBUcmVlR2VuZXJhdGVkKGRlcGdyYXBoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1RhcmdldHNUcmVlR2VuZXJhdGVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBUYXJnZXRzVHJlZUdlbmVyYXRlZCBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgbW9kZWwgPSBNb2NrKCkKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5UYXJnZXRzVHJlZUdlbmVyYXRlZChtb2RlbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9SZWFjaGFibGVTdGFtcHMoc2VsZik6CisgICAgICAgICIiIiBUZXN0IFJlYWNoYWJsZVN0YW1wcyBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgc3RhbXBzID0gW01vY2soKSwgTW9jaygpXQorICAgICAgICBldmVudCA9IGJiLmV2ZW50LlJlYWNoYWJsZVN0YW1wcyhzdGFtcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuc3RhbXBzLCBzdGFtcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfRmlsZXNNYXRjaGluZ0ZvdW5kKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBGaWxlc01hdGNoaW5nRm91bmQgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIHBhdHRlcm4gPSAiZm9vLipiYXIiCisgICAgICAgIG1hdGNoZXMgPSBbImZvb2JhciJdCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuRmlsZXNNYXRjaGluZ0ZvdW5kKHBhdHRlcm4sIG1hdGNoZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfQ29uZmlnRmlsZXNGb3VuZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgQ29uZmlnRmlsZXNGb3VuZCBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgdmFyaWFibGUgPSAiRk9PX0JBUiIKKyAgICAgICAgdmFsdWVzID0gWyJmb28iLCAiYmFyIl0KKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Db25maWdGaWxlc0ZvdW5kKHZhcmlhYmxlLCB2YWx1ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfQ29uZmlnRmlsZVBhdGhGb3VuZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgQ29uZmlnRmlsZVBhdGhGb3VuZCBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgcGF0aCA9ICIvZm9vL2JhciIKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Db25maWdGaWxlUGF0aEZvdW5kKHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfbWVzc2FnZV9jbGFzc2VzKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBtZXNzYWdlIGV2ZW50IGNsYXNzZXMgIiIiCisgICAgICAgIG1zZyA9ICJmb29iYXIgZm9vIGJhciIKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Nc2dCYXNlKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuTXNnRGVidWcobXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Nc2dOb3RlKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuTXNnV2Fybihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorICAgICAgICBldmVudCA9IGJiLmV2ZW50Lk1zZ0Vycm9yKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuTXNnRmF0YWwobXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Nc2dQbGFpbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfTG9nRXhlY1RUWShzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgTG9nRXhlY1RUWSBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgbXNnID0gImZvbyBiYXIiCisgICAgICAgIHByb2cgPSAiZm9vLnNoIgorICAgICAgICBzbGVlcF9kZWxheSA9IDEwCisgICAgICAgIHJldHJpZXMgPSAzCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuTG9nRXhlY1RUWShtc2csIHByb2csIHNsZWVwX2RlbGF5LCByZXRyaWVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnByb2csIHByb2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuc2xlZXBfZGVsYXksIHNsZWVwX2RlbGF5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnJldHJpZXMsIHJldHJpZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIF90aHJvd196ZXJvX2RpdmlzaW9uX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgYSA9IDEgLyAwCisgICAgICAgIHJldHVybgorCisgICAgZGVmIF93b3JrZXJfaGFuZGxlcihzZWxmLCBldmVudCwgZCk6CisgICAgICAgIHNlbGYuX3JldHVybmVkX2V2ZW50ID0gZXZlbnQKKyAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgdGVzdF9Mb2dIYW5kbGVyKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBMb2dIYW5kbGVyIGNsYXNzICIiIgorICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiVGVzdEV2ZW50Q2xhc3NlcyIpCisgICAgICAgIGxvZ2dlci5wcm9wYWdhdGUgPSBGYWxzZQorICAgICAgICBoYW5kbGVyID0gYmIuZXZlbnQuTG9nSGFuZGxlcihsb2dnaW5nLklORk8pCisgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCisgICAgICAgIGJiLmV2ZW50Lndvcmtlcl9maXJlID0gc2VsZi5fd29ya2VyX2hhbmRsZXIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fdGhyb3dfemVyb19kaXZpc2lvbl9leGNlcHRpb24oKQorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZXg6CisgICAgICAgICAgICBsb2dnZXIuZXhjZXB0aW9uKGV4KQorICAgICAgICBldmVudCA9IHNlbGYuX3JldHVybmVkX2V2ZW50CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBlID0gcGlja2xlLmR1bXBzKGV2ZW50KQorICAgICAgICAgICAgbmV3ZXZlbnQgPSBwaWNrbGUubG9hZHMocGUpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnTG9nZ2VkIGV2ZW50IGlzIG5vdCBzZXJpYWxpemFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnRhc2twaWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9NZXRhZGF0YUV2ZW50KHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBNZXRhZGF0YUV2ZW50IGNsYXNzICIiIgorICAgICAgICBldmVudHR5cGUgPSAiZm9vdHlwZSIKKyAgICAgICAgZXZlbnRkYXRhID0geyJmb28iOiAiYmFyIn0KKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5NZXRhZGF0YUV2ZW50KGV2ZW50dHlwZSwgZXZlbnRkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnR5cGUsIGV2ZW50dHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9Qcm9jZXNzU3RhcnRlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgUHJvY2Vzc1N0YXJ0ZWQgY2xhc3MgIiIiCisgICAgICAgIHByb2Nlc3NuYW1lID0gImZvbyIKKyAgICAgICAgdG90YWwgPSA5NzgzMTI4OTc0CisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQocHJvY2Vzc25hbWUsIHRvdGFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnByb2Nlc3NuYW1lLCBwcm9jZXNzbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC50b3RhbCwgdG90YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfUHJvY2Vzc1Byb2dyZXNzKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBQcm9jZXNzUHJvZ3Jlc3MgY2xhc3MgIiIiCisgICAgICAgIHByb2Nlc3NuYW1lID0gImZvbyIKKyAgICAgICAgcHJvZ3Jlc3MgPSAyNDMyMjQKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Qcm9jZXNzUHJvZ3Jlc3MocHJvY2Vzc25hbWUsIHByb2dyZXNzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnByb2Nlc3NuYW1lLCBwcm9jZXNzbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5wcm9ncmVzcywgcHJvZ3Jlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfUHJvY2Vzc0ZpbmlzaGVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBQcm9jZXNzRmluaXNoZWQgY2xhc3MgIiIiCisgICAgICAgIHByb2Nlc3NuYW1lID0gImZvbyIKKyAgICAgICAgdG90YWwgPSAxMjQyMzQyMzQ0CisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKHByb2Nlc3NuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnByb2Nlc3NuYW1lLCBwcm9jZXNzbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9TYW5pdHlDaGVjayhzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgU2FuaXR5Q2hlY2sgY2xhc3MgIiIiCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50LlNhbml0eUNoZWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDEuZ2VuZXJhdGVldmVudHMsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQxLnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKyAgICAgICAgZ2VuZXJhdGVldmVudHMgPSBGYWxzZQorICAgICAgICBldmVudDIgPSBiYi5ldmVudC5TYW5pdHlDaGVjayhnZW5lcmF0ZWV2ZW50cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDIuZ2VuZXJhdGVldmVudHMsIGdlbmVyYXRlZXZlbnRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9TYW5pdHlDaGVja1Bhc3NlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgU2FuaXR5Q2hlY2tQYXNzZWQgY2xhc3MgIiIiCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuU2FuaXR5Q2hlY2tQYXNzZWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1Nhbml0eUNoZWNrRmFpbGVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBTYW5pdHlDaGVja0ZhaWxlZCBjbGFzcyAiIiIKKyAgICAgICAgbXNnID0gIlRoZSBzYW5pdHkgdGVzdCBmYWlsZWQuIgorICAgICAgICBldmVudDEgPSBiYi5ldmVudC5TYW5pdHlDaGVja0ZhaWxlZChtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQxLnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKyAgICAgICAgbmV0d29ya19lcnJvciA9IFRydWUKKyAgICAgICAgZXZlbnQyID0gYmIuZXZlbnQuU2FuaXR5Q2hlY2tGYWlsZWQobXNnLCBuZXR3b3JrX2Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9uZXR3b3JrX2V2ZW50X2NsYXNzZXMoc2VsZik6CisgICAgICAgICIiIiBUZXN0IG5ldHdvcmsgZXZlbnQgY2xhc3NlcyAiIiIKKyAgICAgICAgZXZlbnQxID0gYmIuZXZlbnQuTmV0d29ya1Rlc3QoKQorICAgICAgICBnZW5lcmF0ZWV2ZW50cyA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQxLnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKyAgICAgICAgZXZlbnQyID0gYmIuZXZlbnQuTmV0d29ya1Rlc3QoZ2VuZXJhdGVldmVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQyLnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKyAgICAgICAgZXZlbnQzID0gYmIuZXZlbnQuTmV0d29ya1Rlc3RQYXNzZWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50My5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisgICAgICAgIGV2ZW50NCA9IGJiLmV2ZW50Lk5ldHdvcmtUZXN0RmFpbGVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfRmluZFNpZ0luZm9SZXN1bHQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IEZpbmRTaWdJbmZvUmVzdWx0IGV2ZW50IGNsYXNzICIiIgorICAgICAgICByZXN1bHQgPSBbTW9jaygpXQorICAgICAgICBldmVudCA9IGJiLmV2ZW50LkZpbmRTaWdJbmZvUmVzdWx0KHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5yZXN1bHQsIHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkKaW5kZXggN2Q3YzVkNy4uNzQ4NTlmOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weQpAQCAtMjAsNiArMjAsNyBAQAogIwogCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBoYXNobGliCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgY29sbGVjdGlvbnMKQEAgLTUyMiw2ICs1MjMsMTA5IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLlVucGFja0Vycm9yKToKICAgICAgICAgICAgIHNlbGYuZmV0Y2hVbnBhY2soWydmaWxlOi8vYTtzdWJkaXI9L2Jpbi9zaCddKQogCitjbGFzcyBGZXRjaGVyTm9OZXR3b3JrVGVzdChGZXRjaGVyVGVzdCk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgIyBhbGwgdGVzdCBjYXNlcyBhcmUgYmFzZWQgb24gbm90IGhhdmluZyBuZXR3b3JrCisgICAgICAgIHNlbGYuZC5zZXRWYXIoIkJCX05PX05FVFdPUksiLCAiMSIpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nKHNlbGYpOgorICAgICAgICBzdHJpbmcgPSAidGhpcyBpcyBhIHRlc3QgZmlsZVxuIi5lbmNvZGUoInV0Zi04IikKKyAgICAgICAgc2VsZi5kLnNldFZhckZsYWcoIlNSQ19VUkkiLCAibWQ1c3VtIiwgaGFzaGxpYi5tZDUoc3RyaW5nKS5oZXhkaWdlc3QoKSkKKyAgICAgICAgc2VsZi5kLnNldFZhckZsYWcoIlNSQ19VUkkiLCAic2hhMjU2c3VtIiwgaGFzaGxpYi5zaGEyNTYoc3RyaW5nKS5oZXhkaWdlc3QoKSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5neiIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3ouZG9uZSIpKSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiaHR0cDovL2ludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy90ZXN0LWZpbGUudGFyLmd6Il0sIHNlbGYuZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgIGRlZiB0ZXN0X3ZhbGlkX21pc3NpbmdfZG9uZXN0YW1wKHNlbGYpOgorICAgICAgICAjIGNyZWF0ZSB0aGUgZmlsZSBpbiB0aGUgZG93bmxvYWQgZGlyZWN0b3J5IHdpdGggY29ycmVjdCBoYXNoCisgICAgICAgIHN0cmluZyA9ICJ0aGlzIGlzIGEgdGVzdCBmaWxlXG4iLmVuY29kZSgidXRmLTgiKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6IiksICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHN0cmluZykKKworICAgICAgICBzZWxmLmQuc2V0VmFyRmxhZygiU1JDX1VSSSIsICJtZDVzdW0iLCBoYXNobGliLm1kNShzdHJpbmcpLmhleGRpZ2VzdCgpKQorICAgICAgICBzZWxmLmQuc2V0VmFyRmxhZygiU1JDX1VSSSIsICJzaGEyNTZzdW0iLCBoYXNobGliLnNoYTI1NihzdHJpbmcpLmhleGRpZ2VzdCgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3oiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6LmRvbmUiKSkpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbImh0dHA6Ly9pbnZhbGlkLnlvY3RvcHJvamVjdC5vcmcvdGVzdC1maWxlLnRhci5neiJdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6LmRvbmUiKSkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX21pc3NpbmdfZG9uZXN0YW1wKHNlbGYpOgorICAgICAgICAjIGNyZWF0ZSBhbiBpbnZhbGlkIGZpbGUgaW4gdGhlIGRvd25sb2FkIGRpcmVjdG9yeSB3aXRoIGluY29ycmVjdCBoYXNoCisgICAgICAgIHN0cmluZyA9ICJ0aGlzIGlzIGEgdGVzdCBmaWxlXG4iLmVuY29kZSgidXRmLTgiKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6IiksICJ3YiIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuZC5zZXRWYXJGbGFnKCJTUkNfVVJJIiwgIm1kNXN1bSIsIGhhc2hsaWIubWQ1KHN0cmluZykuaGV4ZGlnZXN0KCkpCisgICAgICAgIHNlbGYuZC5zZXRWYXJGbGFnKCJTUkNfVVJJIiwgInNoYTI1NnN1bSIsIGhhc2hsaWIuc2hhMjU2KHN0cmluZykuaGV4ZGlnZXN0KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5neiIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3ouZG9uZSIpKSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiaHR0cDovL2ludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy90ZXN0LWZpbGUudGFyLmd6Il0sIHNlbGYuZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgIyB0aGUgZXhpc3RpbmcgZmlsZSBzaG91bGQgbm90IGV4aXN0IG9yIHNob3VsZCBoYXZlIGJlIG1vdmVkIHRvICJiYWQtY2hlY2tzdW0iCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6IikpKQorCisgICAgZGVmIHRlc3Rfbm9jaGVja3N1bXNfbWlzc2luZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3oiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6LmRvbmUiKSkpCisgICAgICAgICMgc3NoIGZldGNoIGRvZXMgbm90IHN1cHBvcnQgY2hlY2tzdW1zCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbInNzaDovL2ludmFsaWRAaW52YWxpZC55b2N0b3Byb2plY3Qub3JnL3Rlc3QtZmlsZS50YXIuZ3oiXSwgc2VsZi5kKQorICAgICAgICAjIGF0dGVtcHRzIHRvIGRvd25sb2FkIHdpdGggbWlzc2luZyBkb25lc3RhbXAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgIGRlZiB0ZXN0X25vY2hlY2tzdW1zX21pc3NpbmdfZG9uZXN0YW1wKHNlbGYpOgorICAgICAgICAjIGNyZWF0ZSBhIGZpbGUgaW4gdGhlIGRvd25sb2FkIGRpcmVjdG9yeQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6IiksICJ3YiIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3oiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6LmRvbmUiKSkpCisgICAgICAgICMgc3NoIGZldGNoIGRvZXMgbm90IHN1cHBvcnQgY2hlY2tzdW1zCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbInNzaDovL2ludmFsaWRAaW52YWxpZC55b2N0b3Byb2plY3Qub3JnL3Rlc3QtZmlsZS50YXIuZ3oiXSwgc2VsZi5kKQorICAgICAgICAjIGF0dGVtcHRzIHRvIGRvd25sb2FkIHdpdGggbWlzc2luZyBkb25lc3RhbXAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgIGRlZiB0ZXN0X25vY2hlY2tzdW1zX2hhc19kb25lc3RhbXAoc2VsZik6CisgICAgICAgICMgY3JlYXRlIGEgZmlsZSBpbiB0aGUgZG93bmxvYWQgZGlyZWN0b3J5IHdpdGggdGhlIGRvbmVzdGFtcAorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6IiksICJ3YiIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6LmRvbmUiKSwgIndiIik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5neiIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5nei5kb25lIikpKQorICAgICAgICAjIHNzaCBmZXRjaCBkb2VzIG5vdCBzdXBwb3J0IGNoZWNrc3VtcworICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJzc2g6Ly9pbnZhbGlkQGludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy90ZXN0LWZpbGUudGFyLmd6Il0sIHNlbGYuZCkKKyAgICAgICAgIyBzaG91bGQgbm90IGZldGNoCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICAjIGJvdGggZmlsZXMgc2hvdWxkIHN0aWxsIGV4aXN0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3oiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3ouZG9uZSIpKSkKKworICAgIGRlZiB0ZXN0X25vY2hlY2tzdW1zX21pc3NpbmdfaGFzX2RvbmVzdGFtcChzZWxmKToKKyAgICAgICAgIyBjcmVhdGUgYSBmaWxlIGluIHRoZSBkb3dubG9hZCBkaXJlY3Rvcnkgd2l0aCB0aGUgZG9uZXN0YW1wCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3ouZG9uZSIpLCAid2IiKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5neiIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5nei5kb25lIikpKQorICAgICAgICAjIHNzaCBmZXRjaCBkb2VzIG5vdCBzdXBwb3J0IGNoZWNrc3VtcworICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJzc2g6Ly9pbnZhbGlkQGludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy90ZXN0LWZpbGUudGFyLmd6Il0sIHNlbGYuZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgIyBib3RoIGZpbGVzIHNob3VsZCBzdGlsbCBleGlzdAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5neiIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3ouZG9uZSIpKSkKKwogY2xhc3MgRmV0Y2hlck5ldHdvcmtUZXN0KEZldGNoZXJUZXN0KToKICAgICBAc2tpcElmTm9OZXR3b3JrKCkKICAgICBkZWYgdGVzdF9mZXRjaChzZWxmKToKQEAgLTgwOSw3ICs5MTMsNyBAQAogICAgICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKGtbMV0sIHNlbGYuZCkKICAgICAgICAgICAgIHB1cHZlcj0gdWQubWV0aG9kLmxhdGVzdF92ZXJzaW9uc3RyaW5nKHVkLCBzZWxmLmQpCiAgICAgICAgICAgICB2ZXJzdHJpbmcgPSBwdXB2ZXJbMF0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJzdHJpbmcsIG1zZz0iQ291bGQgbm90IGZpbmQgdXBzdHJlYW0gdmVyc2lvbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyc3RyaW5nLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHVwc3RyZWFtIHZlcnNpb24gZm9yICVzIiAlIGtbMF0pCiAgICAgICAgICAgICByID0gYmIudXRpbHMudmVyY21wX3N0cmluZyh2LCB2ZXJzdHJpbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUociA9PSAtMSBvciByID09IDAsIG1zZz0iUGFja2FnZSAlcywgdmVyc2lvbjogJXMgPD0gJXMiICUgKGtbMF0sIHYsIHZlcnN0cmluZykpCiAKQEAgLTgyMiw3ICs5MjYsNyBAQAogICAgICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKGtbMV0sIHNlbGYuZCkKICAgICAgICAgICAgIHB1cHZlciA9IHVkLm1ldGhvZC5sYXRlc3RfdmVyc2lvbnN0cmluZyh1ZCwgc2VsZi5kKQogICAgICAgICAgICAgdmVyc3RyaW5nID0gcHVwdmVyWzBdCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyc3RyaW5nLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHVwc3RyZWFtIHZlcnNpb24iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcnN0cmluZywgbXNnPSJDb3VsZCBub3QgZmluZCB1cHN0cmVhbSB2ZXJzaW9uIGZvciAlcyIgJSBrWzBdKQogICAgICAgICAgICAgciA9IGJiLnV0aWxzLnZlcmNtcF9zdHJpbmcodiwgdmVyc3RyaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIgPT0gLTEgb3IgciA9PSAwLCBtc2c9IlBhY2thZ2UgJXMsIHZlcnNpb246ICVzIDw9ICVzIiAlIChrWzBdLCB2LCB2ZXJzdHJpbmcpKQogCkBAIC04NzQsOSArOTc4LDYgQEAKIAogCiBjbGFzcyBHaXRNYWtlU2hhbGxvd1Rlc3QoRmV0Y2hlclRlc3QpOgotICAgIGJpdGJha2VfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmpvaW4oX19maWxlX18pKSwgJy4uJywgJy4uJywgJy4uJykKLSAgICBtYWtlX3NoYWxsb3dfcGF0aCA9IG9zLnBhdGguam9pbihiaXRiYWtlX2RpciwgJ2JpbicsICdnaXQtbWFrZS1zaGFsbG93JykKLQogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgRmV0Y2hlclRlc3Quc2V0VXAoc2VsZikKICAgICAgICAgc2VsZi5naXRkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnZ2l0c2hhbGxvdycpCkBAIC05MDUsNyArMTAwNiw3IEBACiAgICAgZGVmIG1ha2Vfc2hhbGxvdyhzZWxmLCBhcmdzPU5vbmUpOgogICAgICAgICBpZiBhcmdzIGlzIE5vbmU6CiAgICAgICAgICAgICBhcmdzID0gWydIRUFEJ10KLSAgICAgICAgcmV0dXJuIGJiLnByb2Nlc3MucnVuKFtzZWxmLm1ha2Vfc2hhbGxvd19wYXRoXSArIGFyZ3MsIGN3ZD1zZWxmLmdpdGRpcikKKyAgICAgICAgcmV0dXJuIGJiLnByb2Nlc3MucnVuKFtiYi5mZXRjaDIuZ2l0LkdpdC5tYWtlX3NoYWxsb3dfcGF0aF0gKyBhcmdzLCBjd2Q9c2VsZi5naXRkaXIpCiAKICAgICBkZWYgYWRkX2VtcHR5X2ZpbGUoc2VsZiwgcGF0aCwgbXNnPU5vbmUpOgogICAgICAgICBpZiBtc2cgaXMgTm9uZToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90aW5mb2lsLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKaW5kZXggZmE5NWY2My4uMzY4MjY0ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKQEAgLTYwNCwxMyArNjA0LDE2IEBACiAgICAgICAgIHJlY2lwZWNhY2hlID0gc2VsZi5jb29rZXIucmVjaXBlY2FjaGVzW21jXQogICAgICAgICBwcm92ID0gc2VsZi5maW5kX2Jlc3RfcHJvdmlkZXIocG4pCiAgICAgICAgIGZuID0gcHJvdlszXQotICAgICAgICBhY3R1YWxfcG4gPSByZWNpcGVjYWNoZS5wa2dfZm5bZm5dCi0gICAgICAgIHJlY2lwZSA9IFRpbmZvaWxSZWNpcGVJbmZvKHJlY2lwZWNhY2hlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuPWFjdHVhbF9wbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuPWZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm5zPXJlY2lwZWNhY2hlLnBrZ19wblthY3R1YWxfcG5dKQotICAgICAgICByZXR1cm4gcmVjaXBlCisgICAgICAgIGlmIGZuOgorICAgICAgICAgICAgYWN0dWFsX3BuID0gcmVjaXBlY2FjaGUucGtnX2ZuW2ZuXQorICAgICAgICAgICAgcmVjaXBlID0gVGluZm9pbFJlY2lwZUluZm8ocmVjaXBlY2FjaGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbj1hY3R1YWxfcG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm49Zm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm5zPXJlY2lwZWNhY2hlLnBrZ19wblthY3R1YWxfcG5dKQorICAgICAgICAgICAgcmV0dXJuIHJlY2lwZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBwYXJzZV9yZWNpcGUoc2VsZiwgcG4pOgogICAgICAgICAiIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weQppbmRleCBjNTQwYjQ5Li4zNzhlNjk5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5CkBAIC0xODcsNyArMTg3LDcgQEAKICAgICAgICAgICAgICNyWy0xXSArPSAnICcgKyAnICcuam9pbihqKQogICAgIHJldHVybiByCiAKLWRlZiBleHBsb2RlX2RlcF92ZXJzaW9uczIocyk6CitkZWYgZXhwbG9kZV9kZXBfdmVyc2lvbnMyKHMsICosIHNvcnQ9VHJ1ZSk6CiAgICAgIiIiCiAgICAgVGFrZSBhbiBSREVQRU5EUyBzdHlsZSBzdHJpbmcgb2YgZm9ybWF0OgogICAgICJERVBFTkQxIChvcHRpb25hbCB2ZXJzaW9uKSBERVBFTkQyIChvcHRpb25hbCB2ZXJzaW9uKSAuLi4iCkBAIC0yNTAsNyArMjUwLDggQEAKICAgICAgICAgaWYgbm90IChpIGluIHIgYW5kIHJbaV0pOgogICAgICAgICAgICAgcltsYXN0ZGVwXSA9IFtdCiAKLSAgICByID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3Qoc29ydGVkKHIuaXRlbXMoKSwga2V5PWxhbWJkYSB4OiB4WzBdKSkKKyAgICBpZiBzb3J0OgorICAgICAgICByID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3Qoc29ydGVkKHIuaXRlbXMoKSwga2V5PWxhbWJkYSB4OiB4WzBdKSkKICAgICByZXR1cm4gcgogCiBkZWYgZXhwbG9kZV9kZXBfdmVyc2lvbnMocyk6CkBAIC04MDYsOCArODA3LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSAjIGZhaWx1cmUKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgZGlkY29weToKLSAgICAgICAgICAgICAgICBvcy5sY2hvd24oZGVzdCwgc3N0YXRbc3RhdC5TVF9VSURdLCBzc3RhdFtzdGF0LlNUX0dJRF0pCi0gICAgICAgICAgICAgICAgb3MuY2htb2QoZGVzdCwgc3RhdC5TX0lNT0RFKHNzdGF0W3N0YXQuU1RfTU9ERV0pKSAjIFN0aWNreSBpcyByZXNldCBvbiBjaG93bgorICAgICAgICAgICAgICAgIG9zLmxjaG93bihkZXN0cGF0aCwgc3N0YXRbc3RhdC5TVF9VSURdLCBzc3RhdFtzdGF0LlNUX0dJRF0pCisgICAgICAgICAgICAgICAgb3MuY2htb2QoZGVzdHBhdGgsIHN0YXQuU19JTU9ERShzc3RhdFtzdGF0LlNUX01PREVdKSkgIyBTdGlja3kgaXMgcmVzZXQgb24gY2hvd24KICAgICAgICAgICAgICAgICBvcy51bmxpbmsoc3JjKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBwcmludCgibW92ZWZpbGU6IEZhaWxlZCB0byBjaG93bi9jaG1vZC91bmxpbmsiLCBkZXN0LCBlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2FjdGlvbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9hY3Rpb24ucHkKaW5kZXggYjEzMjZlNS4uYWE1NzVkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2FjdGlvbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmJsYXllcnMvYWN0aW9uLnB5CkBAIC0xOCwxNiArMTgsMTggQEAKIAogY2xhc3MgQWN0aW9uUGx1Z2luKExheWVyUGx1Z2luKToKICAgICBkZWYgZG9fYWRkX2xheWVyKHNlbGYsIGFyZ3MpOgotICAgICAgICAiIiJBZGQgYSBsYXllciB0byBiYmxheWVycy5jb25mLiIiIgotICAgICAgICBsYXllcmRpciA9IG9zLnBhdGguYWJzcGF0aChhcmdzLmxheWVyZGlyKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobGF5ZXJkaXIpOgotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiU3BlY2lmaWVkIGxheWVyIGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0XG4iKQotICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgIiIiQWRkIG9uZSBvciBtb3JlIGxheWVycyB0byBiYmxheWVycy5jb25mLiIiIgorICAgICAgICBsYXllcmRpcnMgPSBbb3MucGF0aC5hYnNwYXRoKGxkaXIpIGZvciBsZGlyIGluIGFyZ3MubGF5ZXJkaXJdCiAKLSAgICAgICAgbGF5ZXJfY29uZiA9IG9zLnBhdGguam9pbihsYXllcmRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsYXllcl9jb25mKToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlNwZWNpZmllZCBsYXllciBkaXJlY3RvcnkgZG9lc24ndCBjb250YWluIGEgY29uZi9sYXllci5jb25mIGZpbGVcbiIpCi0gICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBmb3IgbGF5ZXJkaXIgaW4gbGF5ZXJkaXJzOgorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGxheWVyZGlyKToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJTcGVjaWZpZWQgbGF5ZXIgZGlyZWN0b3J5ICVzIGRvZXNuJ3QgZXhpc3RcbiIgJSBsYXllcmRpcikKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgICAgICBsYXllcl9jb25mID0gb3MucGF0aC5qb2luKGxheWVyZGlyLCAnY29uZicsICdsYXllci5jb25mJykKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsYXllcl9jb25mKToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJTcGVjaWZpZWQgbGF5ZXIgZGlyZWN0b3J5ICVzIGRvZXNuJ3QgY29udGFpbiBhIGNvbmYvbGF5ZXIuY29uZiBmaWxlXG4iICUgbGF5ZXJkaXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIDEKIAogICAgICAgICBiYmxheWVyc19jb25mID0gb3MucGF0aC5qb2luKCdjb25mJywgJ2JibGF5ZXJzLmNvbmYnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYmJsYXllcnNfY29uZik6CkBAIC00MCw3ICs0Miw3IEBACiAgICAgICAgIHNodXRpbC5jb3B5MihiYmxheWVyc19jb25mLCBiYWNrdXApCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgbm90YWRkZWQsIF8gPSBiYi51dGlscy5lZGl0X2JibGF5ZXJzX2NvbmYoYmJsYXllcnNfY29uZiwgbGF5ZXJkaXIsIE5vbmUpCisgICAgICAgICAgICBub3RhZGRlZCwgXyA9IGJiLnV0aWxzLmVkaXRfYmJsYXllcnNfY29uZihiYmxheWVyc19jb25mLCBsYXllcmRpcnMsIE5vbmUpCiAgICAgICAgICAgICBpZiBub3QgKGFyZ3MuZm9yY2Ugb3Igbm90YWRkZWQpOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi50aW5mb2lsLnBhcnNlUmVjaXBlcygpCkBAIC01NiwxOSArNTgsMjIgQEAKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodGVtcGRpcikKIAogICAgIGRlZiBkb19yZW1vdmVfbGF5ZXIoc2VsZiwgYXJncyk6Ci0gICAgICAgICIiIlJlbW92ZSBhIGxheWVyIGZyb20gYmJsYXllcnMuY29uZi4iIiIKKyAgICAgICAgIiIiUmVtb3ZlIG9uZSBvciBtb3JlIGxheWVycyBmcm9tIGJibGF5ZXJzLmNvbmYuIiIiCiAgICAgICAgIGJibGF5ZXJzX2NvbmYgPSBvcy5wYXRoLmpvaW4oJ2NvbmYnLCAnYmJsYXllcnMuY29uZicpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhiYmxheWVyc19jb25mKToKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlVuYWJsZSB0byBmaW5kIGJibGF5ZXJzLmNvbmZcbiIpCiAgICAgICAgICAgICByZXR1cm4gMQogCi0gICAgICAgIGlmIGFyZ3MubGF5ZXJkaXIuc3RhcnRzd2l0aCgnKicpOgotICAgICAgICAgICAgbGF5ZXJkaXIgPSBhcmdzLmxheWVyZGlyCi0gICAgICAgIGVsaWYgbm90ICcvJyBpbiBhcmdzLmxheWVyZGlyOgotICAgICAgICAgICAgbGF5ZXJkaXIgPSAnKi8lcycgJSBhcmdzLmxheWVyZGlyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsYXllcmRpciA9IG9zLnBhdGguYWJzcGF0aChhcmdzLmxheWVyZGlyKQotICAgICAgICAoXywgbm90cmVtb3ZlZCkgPSBiYi51dGlscy5lZGl0X2JibGF5ZXJzX2NvbmYoYmJsYXllcnNfY29uZiwgTm9uZSwgbGF5ZXJkaXIpCisgICAgICAgIGxheWVyZGlycyA9IFtdCisgICAgICAgIGZvciBpdGVtIGluIGFyZ3MubGF5ZXJkaXI6CisgICAgICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoJyonKToKKyAgICAgICAgICAgICAgICBsYXllcmRpciA9IGl0ZW0KKyAgICAgICAgICAgIGVsaWYgbm90ICcvJyBpbiBpdGVtOgorICAgICAgICAgICAgICAgIGxheWVyZGlyID0gJyovJXMnICUgaXRlbQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsYXllcmRpciA9IG9zLnBhdGguYWJzcGF0aChpdGVtKQorICAgICAgICAgICAgbGF5ZXJkaXJzLmFwcGVuZChsYXllcmRpcikKKyAgICAgICAgKF8sIG5vdHJlbW92ZWQpID0gYmIudXRpbHMuZWRpdF9iYmxheWVyc19jb25mKGJibGF5ZXJzX2NvbmYsIE5vbmUsIGxheWVyZGlycykKICAgICAgICAgaWYgbm90cmVtb3ZlZDoKICAgICAgICAgICAgIGZvciBpdGVtIGluIG5vdHJlbW92ZWQ6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiTm8gbGF5ZXJzIG1hdGNoaW5nICVzIGZvdW5kIGluIEJCTEFZRVJTXG4iICUgaXRlbSkKQEAgLTI0MCwxMCArMjQ1LDEwIEBACiAKICAgICBkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc2VsZiwgc3ApOgogICAgICAgICBwYXJzZXJfYWRkX2xheWVyID0gc2VsZi5hZGRfY29tbWFuZChzcCwgJ2FkZC1sYXllcicsIHNlbGYuZG9fYWRkX2xheWVyLCBwYXJzZXJlY2lwZXM9RmFsc2UpCi0gICAgICAgIHBhcnNlcl9hZGRfbGF5ZXIuYWRkX2FyZ3VtZW50KCdsYXllcmRpcicsIGhlbHA9J0xheWVyIGRpcmVjdG9yeSB0byBhZGQnKQorICAgICAgICBwYXJzZXJfYWRkX2xheWVyLmFkZF9hcmd1bWVudCgnbGF5ZXJkaXInLCBuYXJncz0nKycsIGhlbHA9J0xheWVyIGRpcmVjdG9yeS9kaXJlY3RvcmllcyB0byBhZGQnKQogCiAgICAgICAgIHBhcnNlcl9yZW1vdmVfbGF5ZXIgPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAncmVtb3ZlLWxheWVyJywgc2VsZi5kb19yZW1vdmVfbGF5ZXIsIHBhcnNlcmVjaXBlcz1GYWxzZSkKLSAgICAgICAgcGFyc2VyX3JlbW92ZV9sYXllci5hZGRfYXJndW1lbnQoJ2xheWVyZGlyJywgaGVscD0nTGF5ZXIgZGlyZWN0b3J5IHRvIHJlbW92ZSAod2lsZGNhcmRzIGFsbG93ZWQsIGVuY2xvc2UgaW4gcXVvdGVzIHRvIGF2b2lkIHNoZWxsIGV4cGFuc2lvbiknKQorICAgICAgICBwYXJzZXJfcmVtb3ZlX2xheWVyLmFkZF9hcmd1bWVudCgnbGF5ZXJkaXInLCBuYXJncz0nKycsIGhlbHA9J0xheWVyIGRpcmVjdG9yeS9kaXJlY3RvcmllcyB0byByZW1vdmUgKHdpbGRjYXJkcyBhbGxvd2VkLCBlbmNsb3NlIGluIHF1b3RlcyB0byBhdm9pZCBzaGVsbCBleHBhbnNpb24pJykKICAgICAgICAgcGFyc2VyX3JlbW92ZV9sYXllci5zZXRfZGVmYXVsdHMoZnVuYz1zZWxmLmRvX3JlbW92ZV9sYXllcikKIAogICAgICAgICBwYXJzZXJfZmxhdHRlbiA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdmbGF0dGVuJywgc2VsZi5kb19mbGF0dGVuKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL3F1ZXJ5LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL3F1ZXJ5LnB5CmluZGV4IGJlZjNhZjMuLjkyOTRkZmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9xdWVyeS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmJsYXllcnMvcXVlcnkucHkKQEAgLTE2MSw3ICsxNjEsMTIgQEAKICAgICAgICAgaXRlbXNfbGlzdGVkID0gRmFsc2UKICAgICAgICAgZm9yIHAgaW4gc29ydGVkKHBrZ19wbik6CiAgICAgICAgICAgICBpZiBwbnNwZWM6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGZubWF0Y2guZm5tYXRjaChwLCBwbnNwZWMpOgorICAgICAgICAgICAgICAgIGZvdW5kPUZhbHNlCisgICAgICAgICAgICAgICAgZm9yIHBubSBpbiBwbnNwZWM6CisgICAgICAgICAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaChwLCBwbm0pOgorICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQ9VHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBub3QgZm91bmQ6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGlmIGxlbihhbGxwcm92aWRlcnNbcF0pID4gMSBvciBub3Qgc2hvd19tdWx0aV9wcm92aWRlcl9vbmx5OgpAQCAtMjUxLDggKzI1NiwxNCBAQAogICAgICAgICBwbmxpc3Quc29ydCgpCiAgICAgICAgIGFwcGVuZHMgPSBGYWxzZQogICAgICAgICBmb3IgcG4gaW4gcG5saXN0OgotICAgICAgICAgICAgaWYgYXJncy5wbnNwZWMgYW5kIHBuICE9IGFyZ3MucG5zcGVjOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBhcmdzLnBuc3BlYzoKKyAgICAgICAgICAgICAgICBmb3VuZD1GYWxzZQorICAgICAgICAgICAgICAgIGZvciBwbm0gaW4gYXJncy5wbnNwZWM6CisgICAgICAgICAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaChwbiwgcG5tKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kPVRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBpZiBzZWxmLnNob3dfYXBwZW5kc19mb3JfcG4ocG4pOgogICAgICAgICAgICAgICAgIGFwcGVuZHMgPSBUcnVlCkBAIC00NzksMTEgKzQ5MCwxMSBAQAogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzID0gc2VsZi5hZGRfY29tbWFuZChzcCwgJ3Nob3ctcmVjaXBlcycsIHNlbGYuZG9fc2hvd19yZWNpcGVzKQogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1maWxlbmFtZXMnLCBoZWxwPSdpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGZvcm1hdHRpbmcsIGxpc3QgZmlsZW5hbWVzIG9mIGhpZ2hlciBwcmlvcml0eSByZWNpcGVzIHdpdGggdGhlIG9uZXMgdGhleSBvdmVybGF5IGluZGVudGVkIHVuZGVybmVhdGgnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLW0nLCAnLS1tdWx0aXBsZScsIGhlbHA9J29ubHkgbGlzdCB3aGVyZSBtdWx0aXBsZSByZWNpcGVzIChpbiB0aGUgc2FtZSBsYXllciBvciBkaWZmZXJlbnQgbGF5ZXJzKSBleGlzdCBmb3IgdGhlIHNhbWUgcmVjaXBlIG5hbWUnLCBhY3Rpb249J3N0b3JlX3RydWUnKQotICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLWknLCAnLS1pbmhlcml0cycsIGhlbHA9J29ubHkgbGlzdCByZWNpcGVzIHRoYXQgaW5oZXJpdCB0aGUgbmFtZWQgY2xhc3MnLCBtZXRhdmFyPSdDTEFTUycsIGRlZmF1bHQ9JycpCi0gICAgICAgIHBhcnNlcl9zaG93X3JlY2lwZXMuYWRkX2FyZ3VtZW50KCdwbnNwZWMnLCBuYXJncz0nPycsIGhlbHA9J29wdGlvbmFsIHJlY2lwZSBuYW1lIHNwZWNpZmljYXRpb24gKHdpbGRjYXJkcyBhbGxvd2VkLCBlbmNsb3NlIGluIHF1b3RlcyB0byBhdm9pZCBzaGVsbCBleHBhbnNpb24pJykKKyAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJy1pJywgJy0taW5oZXJpdHMnLCBoZWxwPSdvbmx5IGxpc3QgcmVjaXBlcyB0aGF0IGluaGVyaXQgdGhlIG5hbWVkIGNsYXNzKGVzKSAtIHNlcGFyYXRlIG11bHRpcGxlIGNsYXNzZXMgdXNpbmcgLCAod2l0aG91dCBzcGFjZXMpJywgbWV0YXZhcj0nQ0xBU1MnLCBkZWZhdWx0PScnKQorICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgncG5zcGVjJywgbmFyZ3M9JyonLCBoZWxwPSdvcHRpb25hbCByZWNpcGUgbmFtZSBzcGVjaWZpY2F0aW9uICh3aWxkY2FyZHMgYWxsb3dlZCwgZW5jbG9zZSBpbiBxdW90ZXMgdG8gYXZvaWQgc2hlbGwgZXhwYW5zaW9uKScpCiAKICAgICAgICAgcGFyc2VyX3Nob3dfYXBwZW5kcyA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdzaG93LWFwcGVuZHMnLCBzZWxmLmRvX3Nob3dfYXBwZW5kcykKLSAgICAgICAgcGFyc2VyX3Nob3dfYXBwZW5kcy5hZGRfYXJndW1lbnQoJ3Buc3BlYycsIG5hcmdzPSc/JywgaGVscD0nb3B0aW9uYWwgcmVjaXBlIG5hbWUgc3BlY2lmaWNhdGlvbiAod2lsZGNhcmRzIGFsbG93ZWQsIGVuY2xvc2UgaW4gcXVvdGVzIHRvIGF2b2lkIHNoZWxsIGV4cGFuc2lvbiknKQorICAgICAgICBwYXJzZXJfc2hvd19hcHBlbmRzLmFkZF9hcmd1bWVudCgncG5zcGVjJywgbmFyZ3M9JyonLCBoZWxwPSdvcHRpb25hbCByZWNpcGUgbmFtZSBzcGVjaWZpY2F0aW9uICh3aWxkY2FyZHMgYWxsb3dlZCwgZW5jbG9zZSBpbiBxdW90ZXMgdG8gYXZvaWQgc2hlbGwgZXhwYW5zaW9uKScpCiAKICAgICAgICAgcGFyc2VyX3Nob3dfY3Jvc3NfZGVwZW5kcyA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdzaG93LWNyb3NzLWRlcGVuZHMnLCBzZWxmLmRvX3Nob3dfY3Jvc3NfZGVwZW5kcykKICAgICAgICAgcGFyc2VyX3Nob3dfY3Jvc3NfZGVwZW5kcy5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZW5hbWVzJywgaGVscD0nc2hvdyBmdWxsIGZpbGUgcGF0aCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2xvY2FsaG9zdGJlY29udHJvbGxlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CmluZGV4IDRjMTc1NjIuLjE2YzdjODAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CkBAIC0xOTIsNyArMTkyLDcgQEAKICAgICAgICAgICAgIGlmIGNvbW1pdCAhPSAiSEVBRCI6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IGNoZWNraW5nIG91dCBjb21taXQgJXMgdG8gJXMgIiAlIChjb21taXQsIGxvY2FsZGlybmFtZSkpCiAgICAgICAgICAgICAgICAgcmVmID0gY29tbWl0IGlmIHJlLm1hdGNoKCdeW2EtZkEtRjAtOV0rJCcsIGNvbW1pdCkgZWxzZSAnb3JpZ2luLyVzJyAlIGNvbW1pdAotICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCdnaXQgZmV0Y2ggLS1hbGwgJiYgZ2l0IHJlc2V0IC0taGFyZCAiJXMiJyAlIHJlZiwgbG9jYWxkaXJuYW1lLGVudj1naXRfZW52KQorICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCdnaXQgZmV0Y2ggJiYgZ2l0IHJlc2V0IC0taGFyZCAiJXMiJyAlIHJlZiwgbG9jYWxkaXJuYW1lLGVudj1naXRfZW52KQogCiAgICAgICAgICAgICAjIHRha2UgdGhlIGxvY2FsZGlybmFtZSBhcyBwb2t5IGRpciBpZiB3ZSBjYW4gZmluZCB0aGUgb2UtaW5pdC1idWlsZC1lbnYKICAgICAgICAgICAgIGlmIHNlbGYucG9reWRpcm5hbWUgaXMgTm9uZSBhbmQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGxvY2FsZGlybmFtZSwgIm9lLWluaXQtYnVpbGQtZW52IikpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL2NoZWNrc2V0dGluZ3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQppbmRleCA1ODIxMTRhLi44MjNjNmYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQpAQCAtMTA3LDcgKzEwNywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249Imlnbm9yZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Il4uKk5vIGZpeHR1cmUgbmFtZWQuKiQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJJbXBvcnRpbmcgY3VzdG9tIHNldHRpbmdzIGlmIHByZXNlbnQiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfY29tbWFuZCgibG9hZGRhdGEiLCAiY3VzdG9tIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfY29tbWFuZCgibG9hZGRhdGEiLCAiY3VzdG9tIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJOT1RFOiBvcHRpb25hbCBmaXh0dXJlICdjdXN0b20nIG5vdCBmb3VuZCIpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICMgd2UgcnVuIGxzdXBkYXRlcyBhZnRlciBjb25maWcgdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiXG5GZXRjaGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBsYXllciBpbmRleCwgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sCmluZGV4IDAwNzIwYzMuLmQ3ZWE3OGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvb2UtY29yZS54bWwKQEAgLTgsOSArOCw5IEBACiAKICAgPCEtLSBCaXRiYWtlIHZlcnNpb25zIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlIG1ldGFkYXRhIHJlbGVhc2UgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjEiPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5zdW1vPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJnaXR1cmwiPmdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2U8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+MS4zNjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj4xLjM4PC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjIiPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPkhFQUQ8L2ZpZWxkPgpAQCAtMjIsMTQgKzIyLDE5IEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZ2l0dXJsIj5naXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPm1hc3RlcjwvZmllbGQ+CiAgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSI0Ij4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZ2l0dXJsIj5naXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPjEuMzY8L2ZpZWxkPgorICA8L29iamVjdD4KIAogICA8IS0tIFJlbGVhc2VzIGF2YWlsYWJsZSAtLT4KICAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2UiIHBrPSIxIj4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5yb2NrbzwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPk9wZW5lbWJlZGRlZCBSb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPk9wZW5lbWJlZGRlZCBTdW1vPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPnJvY2tvPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvP2g9cm9ja29cIiZndDtPcGVuRW1iZWRkZWQgUm9ja28mbHQ7L2EmZ3Q7IGJyYW5jaC48L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj5zdW1vPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvP2g9c3Vtb1wiJmd0O09wZW5FbWJlZGRlZCBTdW1vJmx0Oy9hJmd0OyBicmFuY2guPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMiI+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+bG9jYWw8L2ZpZWxkPgpAQCAtNDUsNiArNTAsMTMgQEAKICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2hfbmFtZSI+bWFzdGVyPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvXCImZ3Q7T3BlbkVtYmVkZGVkIG1hc3RlciZsdDsvYSZndDsgYnJhbmNoLjwvZmllbGQ+CiAgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjQiPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+T3BlbmVtYmVkZGVkIFJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiI+MTwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvP2g9cm9ja29cIiZndDtPcGVuRW1iZWRkZWQgUm9ja28mbHQ7L2EmZ3Q7IGJyYW5jaC48L2ZpZWxkPgorICA8L29iamVjdD4KIAogICA8IS0tIERlZmF1bHQgbGF5ZXJzIGZvciBlYWNoIHJlbGVhc2UgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlZGVmYXVsdGxheWVyIiBwaz0iMSI+CkBAIC01OSw2ICs3MSwxMCBAQAogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4zPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJsYXllcl9uYW1lIj5vcGVuZW1iZWRkZWQtY29yZTwvZmllbGQ+CiAgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZWRlZmF1bHRsYXllciIgcGs9IjQiPgorICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj40PC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJsYXllcl9uYW1lIj5vcGVuZW1iZWRkZWQtY29yZTwvZmllbGQ+CisgIDwvb2JqZWN0PgogCiAKICAgPCEtLSBMYXllciBmb3IgdGhlIExvY2FsIHJlbGVhc2UgLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvcG9reS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvcG9reS54bWwKaW5kZXggMmYzOWQ3Ny4uNmM5NjZkYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL3Bva3kueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbApAQCAtOCw5ICs4LDkgQEAKIAogICA8IS0tIEJpdGJha2UgdmVyc2lvbnMgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgbWV0YWRhdGEgcmVsZWFzZSAtLT4KICAgPG9iamVjdCBtb2RlbD0ib3JtLmJpdGJha2V2ZXJzaW9uIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+cm9ja288L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnN1bW88L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImdpdHVybCI+Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5zdW1vPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5iaXRiYWtlPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjIiPgpAQCAtMjUsMTUgKzI1LDIxIEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5tYXN0ZXI8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPmJpdGJha2U8L2ZpZWxkPgogICA8L29iamVjdD4KKyAgPG9iamVjdCBtb2RlbD0ib3JtLmJpdGJha2V2ZXJzaW9uIiBwaz0iNCI+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+cm9ja288L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImdpdHVybCI+Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+Yml0YmFrZTwvZmllbGQ+CisgIDwvb2JqZWN0PgogCiAKICAgPCEtLSBSZWxlYXNlcyBhdmFpbGFibGUgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+cm9ja288L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRlc2NyaXB0aW9uIj5Zb2N0byBQcm9qZWN0IDIuNCAiUm9ja28iPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5zdW1vPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+WW9jdG8gUHJvamVjdCAyLjUgIlN1bW8iPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPnJvY2tvPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD1yb2NrbyImZ3Q7WW9jdG8gUHJvamVjdCBSb2NrbyBicmFuY2gmbHQ7L2EmZ3Q7LjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPnN1bW88L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9Imh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nLz9oPXN1bW8iJmd0O1lvY3RvIFByb2plY3QgU3VtbyBicmFuY2gmbHQ7L2EmZ3Q7LjwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjIiPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPmxvY2FsPC9maWVsZD4KQEAgLTQ5LDYgKzU1LDEzIEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPm1hc3RlcjwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IlRleHRGaWVsZCIgbmFtZT0iaGVscHRleHQiPlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvIiZndDtZb2N0byBQcm9qZWN0IE1hc3RlciBicmFuY2gmbHQ7L2EmZ3Q7LjwvZmllbGQ+CiAgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjQiPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+WW9jdG8gUHJvamVjdCAyLjQgIlJvY2tvIjwvZmllbGQ+CisgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmJpdGJha2V2ZXJzaW9uIiBuYW1lPSJiaXRiYWtlX3ZlcnNpb24iPjE8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IlRleHRGaWVsZCIgbmFtZT0iaGVscHRleHQiPlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvP2g9cm9ja28iJmd0O1lvY3RvIFByb2plY3QgUm9ja28gYnJhbmNoJmx0Oy9hJmd0Oy48L2ZpZWxkPgorICA8L29iamVjdD4KIAogICA8IS0tIERlZmF1bHQgcHJvamVjdCBsYXllcnMgZm9yIGVhY2ggcmVsZWFzZSAtLT4KICAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2VkZWZhdWx0bGF5ZXIiIHBrPSIxIj4KQEAgLTg3LDYgKzEwMCwxOCBAQAogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4zPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJsYXllcl9uYW1lIj5tZXRhLXlvY3RvLWJzcDwvZmllbGQ+CiAgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZWRlZmF1bHRsYXllciIgcGs9IjEwIj4KKyAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+NDwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibGF5ZXJfbmFtZSI+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpZWxkPgorICA8L29iamVjdD4KKyAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2VkZWZhdWx0bGF5ZXIiIHBrPSIxMSI+CisgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLnJlbGVhc2UiIG5hbWU9InJlbGVhc2UiPjQ8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImxheWVyX25hbWUiPm1ldGEtcG9reTwvZmllbGQ+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZWRlZmF1bHRsYXllciIgcGs9IjEyIj4KKyAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+NDwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibGF5ZXJfbmFtZSI+bWV0YS15b2N0by1ic3A8L2ZpZWxkPgorICA8L29iamVjdD4KIAogICA8IS0tIERlZmF1bHQgbGF5ZXJzIHByb3ZpZGVkIGJ5IHBva3kKICAgICAgICBvcGVuZW1iZWRkZWQtY29yZQpAQCAtMTA1LDcgKzEzMCw3IEBACiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MTwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5zdW1vPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMiI+CkBAIC0xMjMsNiArMTQ4LDEzIEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5tYXN0ZXI8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPm1ldGE8L2ZpZWxkPgogICA8L29iamVjdD4KKyAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI0Ij4KKyAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4xPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgorICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj40PC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhPC9maWVsZD4KKyAgPC9vYmplY3Q+CiAKICAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyIiBwaz0iMiI+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+bWV0YS1wb2t5PC9maWVsZD4KQEAgLTEzMiwxNCArMTY0LDE0IEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0idmNzX3dlYl90cmVlX2Jhc2VfdXJsIj5odHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvJXBhdGglP2g9JWJyYW5jaCU8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9InZjc193ZWJfZmlsZV9iYXNlX3VybCI+aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlLyVwYXRoJT9oPSVicmFuY2glPC9maWVsZD4KICAgPC9vYmplY3Q+Ci0gIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iNCI+CisgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iNSI+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MjwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5zdW1vPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhLXBva3k8L2ZpZWxkPgogICA8L29iamVjdD4KLSAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI1Ij4KKyAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI2Ij4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4yPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4yPC9maWVsZD4KQEAgLTE0NywxMyArMTc5LDIwIEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iY29tbWl0Ij5IRUFEPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhLXBva3k8L2ZpZWxkPgogICA8L29iamVjdD4KLSAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI2Ij4KKyAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI3Ij4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4yPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4zPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPm1hc3RlcjwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+bWV0YS1wb2t5PC9maWVsZD4KICAgPC9vYmplY3Q+CisgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iOCI+CisgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KKyAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+NDwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+bWV0YS1wb2t5PC9maWVsZD4KKyAgPC9vYmplY3Q+CiAKICAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyIiBwaz0iMyI+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+bWV0YS15b2N0by1ic3A8L2ZpZWxkPgpAQCAtMTYzLDE0ICsyMDIsMTQgQEAKICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJ2Y3Nfd2ViX3RyZWVfYmFzZV91cmwiPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS8lcGF0aCU/aD0lYnJhbmNoJTwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0idmNzX3dlYl9maWxlX2Jhc2VfdXJsIj5odHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvJXBhdGglP2g9JWJyYW5jaCU8L2ZpZWxkPgogICA8L29iamVjdD4KLSAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI3Ij4KKyAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI5Ij4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4zPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnN1bW88L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPm1ldGEteW9jdG8tYnNwPC9maWVsZD4KICAgPC9vYmplY3Q+Ci0gIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iOCI+CisgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMTAiPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5sYXllciIgbmFtZT0ibGF5ZXIiPjM8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJJbnRlZ2VyRmllbGQiIG5hbWU9ImxheWVyX3NvdXJjZSI+MDwvZmllbGQ+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLnJlbGVhc2UiIG5hbWU9InJlbGVhc2UiPjI8L2ZpZWxkPgpAQCAtMTc4LDExICsyMTcsMTggQEAKICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJjb21taXQiPkhFQUQ8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPm1ldGEteW9jdG8tYnNwPC9maWVsZD4KICAgPC9vYmplY3Q+Ci0gIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iOSI+CisgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMTEiPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5sYXllciIgbmFtZT0ibGF5ZXIiPjM8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJJbnRlZ2VyRmllbGQiIG5hbWU9ImxheWVyX3NvdXJjZSI+MDwvZmllbGQ+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLnJlbGVhc2UiIG5hbWU9InJlbGVhc2UiPjM8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+bWFzdGVyPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhLXlvY3RvLWJzcDwvZmllbGQ+CiAgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0ubGF5ZXJfdmVyc2lvbiIgcGs9IjEyIj4KKyAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4zPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgorICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj40PC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhLXlvY3RvLWJzcDwvZmllbGQ+CisgIDwvb2JqZWN0PgogPC9kamFuZ28tb2JqZWN0cz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL01ha2VmaWxlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKaW5kZXggOTg5MTA5NS4uZTQxZDVhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKQEAgLTQ4LDcgKzQ4LDcgQEAKICMgRXhhbXBsZXM6CiAjCiAjICAgICBtYWtlIERPQz1ic3AtZ3VpZGUKLSMgICAgIG1ha2UgaHRtbCBET0M9eW9jdG8tcHJvamVjdC1xcworIyAgICAgbWFrZSBodG1sIERPQz1icmllZi15b2N0b3Byb2plY3RxcwogIyAgICAgbWFrZSBwZGYgRE9DPXJlZi1tYW51YWwKICMgICAgIG1ha2UgRE9DPWRldi1tYW51YWwgQlJBTkNIPWVkaXNvbgogIyAgICAgbWFrZSBET0M9bWVnYS1tYW51YWwgQlJBTkNIPWRlbnppbApAQCAtNTYsNyArNTYsNyBAQAogIyBUaGUgZmlyc3QgZXhhbXBsZSBnZW5lcmF0ZXMgdGhlIEhUTUwgYW5kIEVjbGlwc2UgaGVscCB2ZXJzaW9ucyBvZiB0aGUgQlNQIEd1aWRlLgogIyBUaGUgc2Vjb25kIGV4YW1wbGUgZ2VuZXJhdGVzIHRoZSBIVE1MIHZlcnNpb24gb25seSBvZiB0aGUgUXVpY2sgU3RhcnQuICBOb3RlCiAjIHRoYXQgdGhlIFF1aWNrIFN0YXJ0IG9ubHkgaGFzIGFuIEhUTUwgdmVyc2lvbiBhdmFpbGFibGUuICBTbywgdGhlCi0jICdtYWtlIERPQz15b2N0by1wcm9qZWN0LXFzJyBjb21tYW5kIHdvdWxkIGJlIGVxdWl2YWxlbnQuIFRoZSB0aGlyZCBleGFtcGxlCisjICdtYWtlIERPQz1icmllZi15b2N0b3Byb2plY3RxcycgY29tbWFuZCB3b3VsZCBiZSBlcXVpdmFsZW50LiBUaGUgdGhpcmQgZXhhbXBsZQogIyBnZW5lcmF0ZXMganVzdCB0aGUgUERGIHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KICMgVGhlIGZvdXJ0aCBleGFtcGxlIGdlbmVyYXRlcyB0aGUgSFRNTCAnZWRpc29uJyB2ZXJzaW9uIGFuZCAoaWYgYXZhaWxhYmxlKQogIyB0aGUgRWNsaXBzZSBoZWxwIHZlcnNpb24gb2YgdGhlIFlQIERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4gIFRoZSBsYXN0IGV4YW1wbGUKQEAgLTg0LDYgKzg0LDQwIEBACiAjIGZvciB0aGUgJ2RlbnppbCcgYnJhbmNoLgogIwogCitpZmVxICgkKERPQyksYnJpZWYteW9jdG9wcm9qZWN0cXMpCitYU0xUT1BUUyA9IC0tc3RyaW5ncGFyYW0gaHRtbC5zdHlsZXNoZWV0IGJyaWVmLXlvY3RvcHJvamVjdHFzLXN0eWxlLmNzcyBcCisgICAgICAgICAgIC0tc3RyaW5ncGFyYW0gIGNoYXB0ZXIuYXV0b2xhYmVsIDAgXAorICAgICAgICAgICAtLXN0cmluZ3BhcmFtICBzZWN0aW9uLmF1dG9sYWJlbCAwIFwKKyAgICAgICAgICAgLS1zdHJpbmdwYXJhbSAgc2VjdGlvbi5sYWJlbC5pbmNsdWRlcy5jb21wb25lbnQubGFiZWwgMCBcCisgICAgICAgICAgIC0teGluY2x1ZGUKK0FMTFBSRVEgPSBodG1sIGVjbGlwc2UgdGFyYmFsbAorVEFSRklMRVMgPSBicmllZi15b2N0b3Byb2plY3Rxcy1zdHlsZS5jc3MgYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCBmaWd1cmVzL2J5cHFzLXRpdGxlLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMveW9jdG8tcHJvamVjdC10cmFuc3AucG5nCitNQU5VQUxTID0gJChET0MpLyQoRE9DKS5odG1sICQoRE9DKS9lY2xpcHNlCitGSUdVUkVTID0gZmlndXJlcworU1RZTEVTSEVFVCA9ICQoRE9DKS8qLmNzcworCitlbmRpZgorCitpZmVxICgkKERPQyksb3ZlcnZpZXctbWFudWFsKQorWFNMVE9QVFMgPSAtLXhpbmNsdWRlCitBTExQUkVRID0gaHRtbCBlY2xpcHNlIHRhcmJhbGwKK1RBUkZJTEVTID0gb3ZlcnZpZXctbWFudWFsLXN0eWxlLmNzcyBvdmVydmlldy1tYW51YWwuaHRtbCBmaWd1cmVzL292ZXJ2aWV3LW1hbnVhbC10aXRsZS5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2dpdC13b3JrZmxvdy5wbmcgZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIGZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMveXAtZG93bmxvYWQucG5nIGZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZyBmaWd1cmVzL2tleS1kZXYtZWxlbWVudHMucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9wb2t5LXJlZmVyZW5jZS1kaXN0cmlidXRpb24ucG5nIGZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmcgZmlndXJlcy9sYXllci1pbnB1dC5wbmcgZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZyBmaWd1cmVzL3BhdGNoaW5nLnBuZyBmaWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZyBmaWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nIGZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nIGZpZ3VyZXMvaW1hZ2VzLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvc2RrLnBuZyBcCisgICAgICAgICAgIGVjbGlwc2UKK01BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwgJChET0MpL2VjbGlwc2UKK0ZJR1VSRVMgPSBmaWd1cmVzCitTVFlMRVNIRUVUID0gJChET0MpLyouY3NzCisKK2VuZGlmCisKIGlmZXEgKCQoRE9DKSxic3AtZ3VpZGUpCiBYU0xUT1BUUyA9IC0teGluY2x1ZGUKIEFMTFBSRVEgPSBodG1sIGVjbGlwc2UgdGFyYmFsbApAQCAtMTI4LDggKzE2Miw4IEBACiAgICAgICAgICAgIGZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyBmaWd1cmVzL3lwLWRvd25sb2FkLnBuZyBcCiAgICAgICAgICAgIGZpZ3VyZXMvd2lwLnBuZwogICAgICAgICBlbHNlCi1UQVJGSUxFUyA9IGRldi1zdHlsZS5jc3MgZGV2LW1hbnVhbC5odG1sIFwKLSAgICAgICAgICAgZmlndXJlcy9kZXYtdGl0bGUucG5nIFwKK1RBUkZJTEVTID0gZGV2LXN0eWxlLmNzcyBkZXYtbWFudWFsLmh0bWwgZmlndXJlcy9idWlsZGhpc3Rvcnktd2ViLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvZGV2LXRpdGxlLnBuZyBmaWd1cmVzL2J1aWxkaGlzdG9yeS5wbmcgXAogICAgICAgICAgICBmaWd1cmVzL3JlY2lwZS13b3JrZmxvdy5wbmcgZmlndXJlcy9iaXRiYWtlLWJ1aWxkLWZsb3cucG5nIFwKICAgICAgICAgICAgZWNsaXBzZQogCWVuZGlmCkBAIC0xNDAsMTcgKzE3NCw2IEBACiAKIGVuZGlmCiAKLWlmZXEgKCQoRE9DKSx5b2N0by1wcm9qZWN0LXFzKQotWFNMVE9QVFMgPSAtLXhpbmNsdWRlCi1BTExQUkVRID0gaHRtbCBlY2xpcHNlIHRhcmJhbGwKLVRBUkZJTEVTID0geW9jdG8tcHJvamVjdC1xcy5odG1sIHFzLXN0eWxlLmNzcyBcCi0gICAgICAgICAgIGZpZ3VyZXMveW9jdG8tcHJvamVjdC10cmFuc3AucG5nIFwKLSAgICAgICAgICAgZWNsaXBzZQotTUFOVUFMUyA9ICQoRE9DKS8kKERPQykuaHRtbCAkKERPQykvZWNsaXBzZQotRklHVVJFUyA9IGZpZ3VyZXMKLVNUWUxFU0hFRVQgPSAkKERPQykvKi5jc3MKLWVuZGlmCi0KIGlmZXEgKCQoRE9DKSxtZWdhLW1hbnVhbCkKIFhTTFRPUFRTID0gLS1zdHJpbmdwYXJhbSBodG1sLnN0eWxlc2hlZXQgbWVnYS1zdHlsZS5jc3MgXAogICAgICAgICAgICAtLXN0cmluZ3BhcmFtICBjaGFwdGVyLmF1dG9sYWJlbCAxIFwKQEAgLTE5MSw3ICsyMTQsNyBAQAogCWZpZ3VyZXMvd2lwLnBuZwogICAgICAgICBlbHNlCiBUQVJGSUxFUyA9IG1lZ2EtbWFudWFsLmh0bWwgbWVnYS1zdHlsZS5jc3MgXAotICAgICAgICBmaWd1cmVzL2J1aWxkaW5nLWFuLWltYWdlLnBuZyBmaWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcgXAorICAgICAgICBmaWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcgXAogCWZpZ3VyZXMvdXNpbmctYS1wcmUtYnVpbHQtaW1hZ2UucG5nIFwKIAlmaWd1cmVzL3Bva3ktdGl0bGUucG5nIGZpZ3VyZXMvYnVpbGRoaXN0b3J5LnBuZyBcCiAgICAgICAgIGZpZ3VyZXMvYnVpbGRoaXN0b3J5LXdlYi5wbmcgXApAQCAtMjI5LDIyICsyNTIsMjMgQEAKICAgICAgICAgZmlndXJlcy9zY2hlZC13YWtldXAtcHJvZmlsZS5wbmcgZmlndXJlcy9zeXNwcm9mLWNhbGxlcnMucG5nIFwKICAgICAgICAgZmlndXJlcy9zeXNwcm9mLWNvcHktZnJvbS11c2VyLnBuZyBmaWd1cmVzL3N5c3Byb2YtY29weS10by11c2VyLnBuZyBcCiAgICAgICAgIGZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmcgXAotCWZpZ3VyZXMveW9jdG8tZW52aXJvbm1lbnQtcmVmLnBuZyBmaWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmcgXAorCWZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZyBcCiAgICAgICAgIGZpZ3VyZXMvc291cmNlLWlucHV0LnBuZyBmaWd1cmVzL3BhY2thZ2UtZmVlZHMucG5nIFwKICAgICAgICAgZmlndXJlcy9sYXllci1pbnB1dC5wbmcgZmlndXJlcy9pbWFnZXMucG5nIGZpZ3VyZXMvc2RrLnBuZyBcCiAJZmlndXJlcy9zb3VyY2UtZmV0Y2hpbmcucG5nIGZpZ3VyZXMvcGF0Y2hpbmcucG5nIFwKICAgICAgICAgZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcgXAogCWZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZyBcCi0gICAgICAgIGZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcgXAorICAgICAgICBmaWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nIGZpZ3VyZXMva2V5LWRldi1lbGVtZW50cy5wbmdcCiAJZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcgZmlndXJlcy9yZWNpcGUtd29ya2Zsb3cucG5nIFwKIAlmaWd1cmVzL2J1aWxkLXdvcmtzcGFjZS1kaXJlY3RvcnkucG5nIGZpZ3VyZXMvbWVnYS10aXRsZS5wbmcgXAogCWZpZ3VyZXMvdG9hc3Rlci10aXRsZS5wbmcgZmlndXJlcy9ob3N0ZWQtc2VydmljZS5wbmcgXAotCWZpZ3VyZXMvc2ltcGxlLWNvbmZpZ3VyYXRpb24ucG5nIFwKKwlmaWd1cmVzL3NpbXBsZS1jb25maWd1cmF0aW9uLnBuZyBmaWd1cmVzL3Bva3ktcmVmZXJlbmNlLWRpc3RyaWJ1dGlvbi5wbmcgXAogCWZpZ3VyZXMvY29tcGF0aWJsZS1sYXllcnMucG5nIGZpZ3VyZXMvaW1wb3J0LWxheWVyLnBuZyBmaWd1cmVzL25ldy1wcm9qZWN0LnBuZyBcCiAJZmlndXJlcy9zZGstZW52aXJvbm1lbnQucG5nIGZpZ3VyZXMvc2RrLWluc3RhbGxlZC1zdGFuZGFyZC1zZGstZGlyZWN0b3J5LnBuZyBcCiAJZmlndXJlcy9zZGstZGV2dG9vbC1hZGQtZmxvdy5wbmcgZmlndXJlcy9zZGstaW5zdGFsbGVkLWV4dGVuc2libGUtc2RrLWRpcmVjdG9yeS5wbmcgXAogCWZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nIGZpZ3VyZXMvc2RrLWVjbGlwc2UtZGV2LWZsb3cucG5nIFwKLQlmaWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcgZmlndXJlcy9iaXRiYWtlLWJ1aWxkLWZsb3cucG5nCisJZmlndXJlcy9zZGstZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nIGZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZyBmaWd1cmVzL2J5cHFzLXRpdGxlLnBuZyBcCisJZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nIGZpZ3VyZXMvc2RrLWF1dG90b29scy1mbG93LnBuZyBmaWd1cmVzL3Nkay1tYWtlZmlsZS1mbG93LnBuZwogCWVuZGlmCiAKIE1BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwKQEAgLTI1NiwxNyArMjgwLDkgQEAKIGlmZXEgKCQoRE9DKSxyZWYtbWFudWFsKQogWFNMVE9QVFMgPSAtLXhpbmNsdWRlCiBBTExQUkVRID0gaHRtbCBlY2xpcHNlIHRhcmJhbGwKLVRBUkZJTEVTID0gcmVmLW1hbnVhbC5odG1sIHJlZi1zdHlsZS5jc3MgZmlndXJlcy9wb2t5LXRpdGxlLnBuZyBmaWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcgXAotCWZpZ3VyZXMvYnVpbGRoaXN0b3J5LnBuZyBmaWd1cmVzL2J1aWxkaGlzdG9yeS13ZWIucG5nIGVjbGlwc2UgXAotICAgICAgICBmaWd1cmVzL2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbnMucG5nIGZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nIFwKLQlmaWd1cmVzL3BhY2thZ2UtZmVlZHMucG5nIGZpZ3VyZXMvc291cmNlLWlucHV0LnBuZyBcCi0JZmlndXJlcy91c2VyLWNvbmZpZ3VyYXRpb24ucG5nIGZpZ3VyZXMveW9jdG8tZW52aXJvbm1lbnQtcmVmLnBuZyBcCi0JZmlndXJlcy9pbWFnZXMucG5nIGZpZ3VyZXMvc2RrLnBuZyBmaWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcgXAotCWZpZ3VyZXMvcGF0Y2hpbmcucG5nIGZpZ3VyZXMvY29uZmlndXJhdGlvbi1jb21waWxlLWF1dG9yZWNvbmYucG5nIFwKLQlmaWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcgZmlndXJlcy9pbWFnZS1nZW5lcmF0aW9uLnBuZyBcCi0JZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcgZmlndXJlcy9idWlsZGluZy1hbi1pbWFnZS5wbmcgXAotCWZpZ3VyZXMvYnVpbGQtd29ya3NwYWNlLWRpcmVjdG9yeS5wbmcgZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIFwKLQlmaWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcgZmlndXJlcy95cC1kb3dubG9hZC5wbmcgZmlndXJlcy9naXQtd29ya2Zsb3cucG5nCitUQVJGSUxFUyA9IHJlZi1tYW51YWwuaHRtbCByZWYtc3R5bGUuY3NzIGZpZ3VyZXMvcG9reS10aXRsZS5wbmcgXAorCWZpZ3VyZXMvYnVpbGQtd29ya3NwYWNlLWRpcmVjdG9yeS5wbmcgXAorCWVjbGlwc2UKIE1BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwgJChET0MpL2VjbGlwc2UKIEZJR1VSRVMgPSBmaWd1cmVzCiBTVFlMRVNIRUVUID0gJChET0MpLyouY3NzCkBAIC0yNzksNyArMjk1LDcgQEAKICAgICAgICAgICAgZmlndXJlcy9zZGstZW52aXJvbm1lbnQucG5nIGZpZ3VyZXMvc2RrLWluc3RhbGxlZC1zdGFuZGFyZC1zZGstZGlyZWN0b3J5LnBuZyBcCiAJICAgZmlndXJlcy9zZGstaW5zdGFsbGVkLWV4dGVuc2libGUtc2RrLWRpcmVjdG9yeS5wbmcgZmlndXJlcy9zZGstZGV2dG9vbC1hZGQtZmxvdy5wbmcgXAogCSAgIGZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nIGZpZ3VyZXMvc2RrLWVjbGlwc2UtZGV2LWZsb3cucG5nIFwKLQkgICBmaWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcgXAorCSAgIGZpZ3VyZXMvc2RrLWRldnRvb2wtdXBncmFkZS1mbG93LnBuZyBmaWd1cmVzL3Nkay1hdXRvdG9vbHMtZmxvdy5wbmcgZmlndXJlcy9zZGstbWFrZWZpbGUtZmxvdy5wbmcgXAogICAgICAgICAgICBlY2xpcHNlCiBNQU5VQUxTID0gJChET0MpLyQoRE9DKS5odG1sICQoRE9DKS9lY2xpcHNlCiBGSUdVUkVTID0gZmlndXJlcwpAQCAtMzU1LDkgKzM3MSw5IEBACiBhbGw6ICQoQUxMUFJFUSkKIAogcGRmOgotaWZlcSAoJChET0MpLHlvY3RvLXByb2plY3QtcXMpCitpZmVxICgkKERPQyksYnJpZWYteW9jdG9wcm9qZWN0cXMpCiAJQGVjaG8gIiAiCi0JQGVjaG8gIkVSUk9SOiBZb3UgY2Fubm90IGdlbmVyYXRlIGEgeW9jdG8tcHJvamVjdC1xcyBQREYgZmlsZS4iCisJQGVjaG8gIkVSUk9SOiBZb3UgY2Fubm90IGdlbmVyYXRlIGEgUERGIGZpbGUgZm9yIGJyaWVmLXlvY3RvcHJvamVjdHFzLiIKIAlAZWNobyAiICIKIAogZWxzZSBpZmVxICgkKERPQyksbWVnYS1tYW51YWwpCkBAIC00MDEsMTcgKzQxNywxOCBAQAogLlBIT05ZIDogZWNsaXBzZS1nZW5lcmF0ZSBlY2xpcHNlLXJlc29sdmUtbGlua3MKIAogZWNsaXBzZS1nZW5lcmF0ZToKLWlmZXEgKCQoZmlsdGVyICQoRE9DKSwgc2RrLW1hbnVhbCBic3AtZ3VpZGUgZGV2LW1hbnVhbCBrZXJuZWwtZGV2IHByb2ZpbGUtbWFudWFsIHJlZi1tYW51YWwgeW9jdG8tcHJvamVjdC1xcyksKQoraWZlcSAoJChmaWx0ZXIgJChET0MpLCBvdmVydmlldy1tYW51YWwgc2RrLW1hbnVhbCBic3AtZ3VpZGUgZGV2LW1hbnVhbCBrZXJuZWwtZGV2IHByb2ZpbGUtbWFudWFsIHJlZi1tYW51YWwgYnJpZWYteW9jdG9wcm9qZWN0cXMpLCkKIAlAZWNobyAiICIKIAlAZWNobyAiRVJST1I6IFlvdSBjYW4gb25seSBjcmVhdGUgZWNsaXBzZSBkb2N1bWVudGF0aW9uIgogCUBlY2hvICIgICAgICAgb2YgdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uIHBhcnRzOiIKKwlAZWNobyAiICAgICAgIC0gb3ZlcnZpZXctbWFudWFsIgogCUBlY2hvICIgICAgICAgLSBzZGstbWFudWFsIgogCUBlY2hvICIgICAgICAgLSBic3AtZ3VpZGUiCiAJQGVjaG8gIiAgICAgICAtIGRldi1tYW51YWwiCiAJQGVjaG8gIiAgICAgICAtIGtlcm5lbC1kZXYiCiAJQGVjaG8gIiAgICAgICAtIHByb2ZpbGUtbWFudWFsIgogCUBlY2hvICIgICAgICAgLSByZWYtbWFudWFsIgotCUBlY2hvICIgICAgICAgLSB5b2N0by1wcm9qZWN0LXFzIgorCUBlY2hvICIgICAgICAgLSBicmllZi15b2N0b3Byb2plY3RxcyIKIAlAZWNobyAiICIKIGVsc2UKIAlAZWNobyAiICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLWN1c3RvbWl6YXRpb24ueHNsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtY3VzdG9taXphdGlvbi54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ1NzQyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLWN1c3RvbWl6YXRpb24ueHNsCkBAIC0wLDAgKzEsMjQgQEAKKzw/eG1sIHZlcnNpb249JzEuMCc/PgorPHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6Zm89Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML0Zvcm1hdCIgdmVyc2lvbj0iMS4wIj4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL2RvY2Jvb2stbWlycm9yL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworPCEtLQorCisgIDx4c2w6aW1wb3J0IGhyZWY9Ii4uL3RlbXBsYXRlLzEuNzYuMS9kb2Nib29rLXhzbC0xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+CisKKyAgPHhzbDppbXBvcnQgaHJlZj0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsLzEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworLS0+CisKKyAgPHhzbDppbXBvcnQgaHJlZj0iYnJpZWYteW9jdG9wcm9qZWN0cXMtdGl0bGVwYWdlLnhzbCIvPgorCisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9wZXJtYWxpbmtzLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvc2VjdGlvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2NvbXBvbmVudC50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2RpdmlzaW9uLnRpdGxlLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvZm9ybWFsLm9iamVjdC5oZWFkaW5nLnhzbCIvPgorCisgIDx4c2w6cGFyYW0gbmFtZT0iZ2VuZXJhdGUudG9jIiBzZWxlY3Q9IidhcnRpY2xlIG5vcCciPjwveHNsOnBhcmFtPgorICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSInYnJpZWYteW9jdG9wcm9qZWN0cXMtc3R5bGUuY3NzJyIgLz4KKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy1lY2xpcHNlLWN1c3RvbWl6YXRpb24ueHNsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtZWNsaXBzZS1jdXN0b21pemF0aW9uLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmIzYjU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtZWNsaXBzZS1jdXN0b21pemF0aW9uLnhzbApAQCAtMCwwICsxLDM1IEBACis8P3htbCB2ZXJzaW9uPScxLjAnPz4KKzx4c2w6c3R5bGVzaGVldAorCXhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIgorCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIgorCXhtbG5zOmZvPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9Gb3JtYXQiCisJdmVyc2lvbj0iMS4wIj4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL2RvY2Jvb2stbWlycm9yL2RvY2Jvb2steHNsLTEuNzYuMS9lY2xpcHNlL2VjbGlwc2UzLnhzbCIgLz4KKworPCEtLQorCisgIDx4c2w6aW1wb3J0IGhyZWY9Ii4uL3RlbXBsYXRlLzEuNzYuMS9kb2Nib29rLXhzbC0xLjc2LjEvZWNsaXBzZS9lY2xpcHNlMy54c2wiIC8+CisKKyAgPHhzbDppbXBvcnQKKwkgIGhyZWY9Imh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC8xLjc2LjEvZWNsaXBzZS9lY2xpcHNlMy54c2wiIC8+CisKKy0tPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9ImJyaWVmLXlvY3RvcHJvamVjdHFzLXRpdGxlcGFnZS54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9ImNodW5rZXIub3V0cHV0LmluZGVudCIgc2VsZWN0PSIneWVzJyIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNodW5rLnF1aWV0bHkiIHNlbGVjdD0iMSIvPgorICA8eHNsOnBhcmFtIG5hbWU9InVzZS5pZC5hcy5maWxlbmFtZSIgc2VsZWN0PSIxIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0idWxpbmsudGFyZ2V0IiBzZWxlY3Q9Iidfc2VsZiciIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iYmFzZS5kaXIiIHNlbGVjdD0iJ2h0bWwvYnJpZWYteW9jdG9wcm9qZWN0cXMvJyIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNodW5rLnNlY3Rpb24uZGVwdGgiIHNlbGVjdD0iMCIvPgorICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSInLi4vYm9vay5jc3MnIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0iZWNsaXBzZS5tYW5pZmVzdCIgc2VsZWN0PSIwIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0iY3JlYXRlLnBsdWdpbi54bWwiIHNlbGVjdD0iMCIvPgorICA8eHNsOnBhcmFtIG5hbWU9InN1cHByZXNzLm5hdmlnYXRpb24iIHNlbGVjdD0iMSIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImdlbmVyYXRlLmluZGV4IiBzZWxlY3Q9IjAiLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS50b2MiIHNlbGVjdD0iJ2FydGljbGUgbm9wJyI+PC94c2w6cGFyYW0+CisgIDx4c2w6cGFyYW0gbmFtZT0iaHRtbC5zdHlsZXNoZWV0IiBzZWxlY3Q9IidzdHlsZS5jc3MnIiAvPgorPC94c2w6c3R5bGVzaGVldD4KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtc3R5bGUuY3NzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtc3R5bGUuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4Njg0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy1zdHlsZS5jc3MKQEAgLTAsMCArMSw5ODkgQEAKKy8qCisgICBHZW5lcmljIFhIVE1MIC8gRG9jQm9vayBYSFRNTCBDU1MgU3R5bGVzaGVldC4KKworICAgQnJvd3NlciB3cmFuZ2xpbmcgYW5kIHR5cG9ncmFwaGljIGRlc2lnbiBieQorICAgICAgT3l2aW5kIEtvbGFzIC8gcGlwcGluQGdpbXAub3JnCisKKyAgIEN1c3RvbWlzZWQgZm9yIFBva3kgYnkKKyAgICAgIE1hdHRoZXcgQWxsdW0gLyBtYWxsdW1Aby1oYW5kLmNvbQorCisgICBUaGFua3MgdG86CisgICAgIExpYW0gUi4gRS4gUXVpbgorICAgICBXaWxsaWFtIFNrYWdncworICAgICBKYWt1YiBTdGVpbmVyCisKKyAgIFN0cnVjdHVyZQorICAgLS0tLS0tLS0tCisKKyAgIFRoZSBzdHlsZXNoZWV0IGlzIGRpdmlkZWQgaW50byB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOgorCisgICAgICAgUG9zaXRpb25pbmcKKyAgICAgICAgICBNYXJnaW5zLCBwYWRkaW5ncywgd2lkdGgsIGZvbnQtc2l6ZSwgY2xlYXJpbmcuCisgICAgICAgRGVjb3JhdGlvbnMKKyAgICAgICAgICBCb3JkZXJzLCBzdHlsZQorICAgICAgIENvbG9ycworICAgICAgICAgIENvbG9ycworICAgICAgIEdyYXBoaWNzCisgICAgICAgICAgR3JhcGhpY2FsIGJhY2tncm91bmRzCisgICAgICAgTmFzdHkgSUUgdHdlYWtzCisgICAgICAgICAgV29ya2Fyb3VuZHMgbmVlZGVkIHRvIG1ha2UgaXQgd29yayBpbiBpbnRlcm5ldCBleHBsb3JlciwKKyAgICAgICAgICBjdXJyZW50bHkgbWFrZXMgdGhlIHN0eWxlc2hlZXQgbm9uIHZhbGlkYXRpbmcsIGJ1dCB1cCB1bnRpbAorICAgICAgICAgIHRoaXMgcG9pbnQgaXQgaXMgdmFsaWRhdGluZy4KKyAgICAgICBNb3ppbGxhIGV4dGVuc2lvbnMKKyAgICAgICAgICBUcmFuc3BhcmVuY3kgZm9yIGZvb3RlcgorCSAgUm91bmRlZCBjb3JuZXJzIG9uIGJveGVzCisKKyovCisKKworICAvKioqKioqKioqKioqKioqIC8KKyAvICBQb3NpdGlvbmluZyAgIC8KKy8gKioqKioqKioqKioqKioqLworCitib2R5IHsKKyAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIFNhbnMsIHNhbnMtc2VyaWY7CisKKyAgbWluLXdpZHRoOiA2NDBweDsKKyAgd2lkdGg6IDgwJTsKKyAgbWFyZ2luOiAgMGVtIGF1dG87CisgIHBhZGRpbmc6IDJlbSA1ZW0gNWVtIDVlbTsKKyAgY29sb3I6ICMzMzM7Cit9CisKK2gxLGgyLGgzLGg0LGg1LGg2LGg3IHsKKyAgZm9udC1mYW1pbHk6IEFyaWFsLCBTYW5zOworICBjb2xvcjogIzAwNTU3RDsKKyAgY2xlYXI6IGJvdGg7Cit9CisKK2gxIHsKKyAgZm9udC1zaXplOiAyZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAyZW0gMGVtIDBlbSAwZW07Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwLjEwZW0gMGVtIDMuMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEuOGVtOworICBwYWRkaW5nLWxlZnQ6IDIwJTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCitoMiB7CisgIG1hcmdpbjogMmVtIDBlbSAwLjY2ZW0gMGVtOworICBwYWRkaW5nOiAwLjVlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjVlbTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2gzLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxNDIuMTQlOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworaDMgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g0IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEyMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNSB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDYgeworICBtYXJnaW46IDFlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDExMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisuYXV0aG9yZ3JvdXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgcGFkZGluZy10b3A6IDI1NnB4OworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMvYnlwcXMtdGl0bGUucG5nIik7CisgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wOworICBtYXJnaW4tdG9wOiAtMjU2cHg7CisgIHBhZGRpbmctcmlnaHQ6IDUwcHg7CisgIG1hcmdpbi1sZWZ0OiAwcHg7CisgIHRleHQtYWxpZ246IHJpZ2h0OworICB3aWR0aDogNzQwcHg7Cit9CisKK2gzLmF1dGhvciB7CisgIG1hcmdpbjogMGVtIDBtZSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIGZvbnQtc2l6ZTogMTAwJTsKKyAgY29sb3I6ICMzMzM7CisgIGNsZWFyOiBib3RoOworfQorCisuYXV0aG9yIHR0LmVtYWlsIHsKKyAgZm9udC1zaXplOiA2NiU7Cit9CisKKy50aXRsZXBhZ2UgaHIgeworICB3aWR0aDogMGVtOworICBjbGVhcjogYm90aDsKK30KKworLnJldmhpc3RvcnkgeworICBwYWRkaW5nLXRvcDogMmVtOworICBjbGVhcjogYm90aDsKK30KKworLnRvYywKKy5saXN0LW9mLXRhYmxlcywKKy5saXN0LW9mLWV4YW1wbGVzLAorLmxpc3Qtb2YtZmlndXJlcyB7CisgIHBhZGRpbmc6IDEuMzNlbSAwZW0gMi41ZW0gMGVtOworICBjb2xvcjogIzAwNTU3RDsKK30KKworLnRvYyBwLAorLmxpc3Qtb2YtdGFibGVzIHAsCisubGlzdC1vZi1maWd1cmVzIHAsCisubGlzdC1vZi1leGFtcGxlcyBwIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDAuM2VtOworICBtYXJnaW46IDEuNWVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIHAgYiwKKy5saXN0LW9mLXRhYmxlcyBwIGIsCisubGlzdC1vZi1maWd1cmVzIHAgYiwKKy5saXN0LW9mLWV4YW1wbGVzIHAgYnsKKyAgZm9udC1zaXplOiAxMDAuMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisudG9jIGRsLAorLmxpc3Qtb2YtdGFibGVzIGRsLAorLmxpc3Qtb2YtZmlndXJlcyBkbCwKKy5saXN0LW9mLWV4YW1wbGVzIGRsIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIGR0IHsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkZCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMi42ZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworZGl2Lmdsb3NzYXJ5IGRsLAorZGl2LnZhcmlhYmxlbGlzdCBkbCB7Cit9CisKKy5nbG9zc2FyeSBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIHdpZHRoOiAyMGVtOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworLnZhcmlhYmxlbGlzdCBkbCBkdCB7CisgIG1hcmdpbi10b3A6IDAuNWVtOworfQorCisuZ2xvc3NhcnkgZGwgZGQsCisudmFyaWFibGVsaXN0IGRsIGRkIHsKKyAgbWFyZ2luLXRvcDogLTFlbTsKKyAgbWFyZ2luLWxlZnQ6IDI1LjVlbTsKK30KKworLmdsb3NzYXJ5IGRkIHAsCisudmFyaWFibGVsaXN0IGRkIHAgeworICBtYXJnaW4tdG9wOiAwZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworCitkaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworfQorCitkaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgcCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCitkaXYgcC5jb3B5cmlnaHQgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCitkaXYubGVnYWxub3RpY2UgcC5sZWdhbG5vdGljZS10aXRsZSB7CisgIG1hcmdpbi1ib3R0b206IDBlbTsKK30KKworcCB7CisgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKKyAgbWFyZ2luLXRvcDogMGVtOworCit9CisKK2RsIHsKKyAgcGFkZGluZy10b3A6IDBlbTsKK30KKworaHIgeworICBib3JkZXI6IHNvbGlkIDFweDsKK30KKworCisubWVkaWFvYmplY3QsCisubWVkaWFvYmplY3RjbyB7CisgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworaW1nIHsKKyAgYm9yZGVyOiBub25lOworfQorCit1bCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDEuNWVtOworfQorCit1bCBsaSB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKwordWwgbGkgcCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKK3RhYmxlIHsKKyAgd2lkdGggOjEwMCU7Cit9CisKK3RoIHsKKyAgcGFkZGluZzogMC4yNWVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBmb250LXdlaWdodDogbm9ybWFsOworICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCit0ZCB7CisgIHBhZGRpbmc6IDAuMjVlbTsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKworcCBhW2lkXSB7CisgIG1hcmdpbjogMHB4OworICBwYWRkaW5nOiAwcHg7CisgIGRpc3BsYXk6IGlubGluZTsKKyAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKK30KKworYSB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICBjb2xvcjogIzQ0NDsKK30KKworcHJlIHsKKyAgICBvdmVyZmxvdzogYXV0bzsKK30KKworYTpob3ZlciB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICAvKmZvbnQtd2VpZ2h0OiBib2xkOyovCit9CisKKy8qIFRoaXMgc3R5bGUgZGVmaW5lcyBob3cgdGhlIHBlcm1hbGluayBjaGFyYWN0ZXIKKyAgIGFwcGVhcnMgYnkgaXRzZWxmIGFuZCB3aGVuIGhvdmVyZWQgb3ZlciB3aXRoCisgICB0aGUgbW91c2UuICovCisKK1thbHQ9J1Blcm1hbGluayddIHsgY29sb3I6ICNlZWU7IH0KK1thbHQ9J1Blcm1hbGluayddOmhvdmVyIHsgY29sb3I6IGJsYWNrOyB9CisKKworZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlIHsKKyAgbWFyZ2luOiAxZW0gMGVtOworICBwYWRkaW5nOiAxZW07CisgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKK30KKworCitkaXYuaW5mb3JtYWxmaWd1cmUgcC50aXRsZSBiLAorZGl2LmluZm9ybWFsZXhhbXBsZSBwLnRpdGxlIGIsCitkaXYuaW5mb3JtYWx0YWJsZSBwLnRpdGxlIGIsCitkaXYuZmlndXJlIHAudGl0bGUgYiwKK2Rpdi5leGFtcGxlIHAudGl0bGUgYiwKK2Rpdi50YWJsZSBwLnRpdGxlIGJ7CisgICAgcGFkZGluZy10b3A6IDBlbTsKKyAgICBtYXJnaW4tdG9wOiAwZW07CisgICAgZm9udC1zaXplOiAxMDAlOworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cit9CisKKy5tZWRpYW9iamVjdCAuY2FwdGlvbiwKKy5tZWRpYW9iamVjdCAuY2FwdGlvbiBwICB7CisgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmctdG9wOiAwLjVlbTsKKyAgcGFkZGluZy1ib3R0b206IDAuNWVtOworfQorCisuZXBpZ3JhcGggeworICBwYWRkaW5nLWxlZnQ6IDU1JTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisuZXBpZ3JhcGggcCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy5lcGlncmFwaCAucXVvdGUgeworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisuZXBpZ3JhcGggLmF0dHJpYnV0aW9uIHsKKyAgZm9udC1zdHlsZTogbm9ybWFsOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworc3Bhbi5hcHBsaWNhdGlvbiB7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLnByb2dyYW1saXN0aW5nIHsKKyAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgZm9udC1zaXplOiA4MCU7CisgIHdoaXRlLXNwYWNlOiBwcmU7CisgIG1hcmdpbjogMS4zM2VtIDBlbTsKKyAgcGFkZGluZzogMS4zM2VtOworfQorCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgbWFyZ2luLXRvcDogMWVtOworICBtYXJnaW4tYm90dG9tOiAxZW07CisKK30KKworLyogZm9yY2UgZnVsbCB3aWR0aCBvZiB0YWJsZSB3aXRoaW4gZGl2ICovCisudGlwIHRhYmxlLAorLndhcm5pbmcgdGFibGUsCisuY2F1dGlvbiB0YWJsZSwKKy5ub3RlIHRhYmxlIHsKKyAgYm9yZGVyOiBub25lOworICB3aWR0aDogMTAwJTsKK30KKworCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgcGFkZGluZzogMC44ZW0gMC4wZW0gMC4wZW0gMC4wZW07CisgIG1hcmdpbiA6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRpcCBwLAorLndhcm5pbmcgcCwKKy5jYXV0aW9uIHAsCisubm90ZSBwIHsKKyAgbWFyZ2luLXRvcDogMC41ZW07CisgIG1hcmdpbi1ib3R0b206IDAuNWVtOworICBwYWRkaW5nLXJpZ2h0OiAxZW07CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy5hY3JvbnltIHsKKyAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKK30KKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgcGFkZGluZzogMC4wOWVtIDAuM2VtOworICBtYXJnaW46IDBlbTsKK30KKworLml0ZW1pemVkbGlzdCBsaSB7CisgIGNsZWFyOiBub25lOworfQorCisuZmlsZW5hbWUgeworICBmb250LXNpemU6IG1lZGl1bTsKKyAgZm9udC1mYW1pbHk6IENvdXJpZXIsIG1vbm9zcGFjZTsKK30KKworCitkaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKKyAgcG9zaXRpb246IGFic29sdXRlOworICBsZWZ0OiAwZW07CisgIHRvcDogMGVtOworICB3aWR0aDogMTAwJTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2NkZjsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICBwb3NpdGlvbjogZml4ZWQ7CisgIGxlZnQ6IDBlbTsKKyAgYm90dG9tOiAwZW07CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CisgIHdpZHRoOiAxMDAlOworfQorCisKK2Rpdi5uYXZoZWFkZXIgdGQsCitkaXYubmF2Zm9vdGVyIHRkIHsKKyAgZm9udC1zaXplOiA2NiU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGggeworICAvKmZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBUaW1lcywgc2VyaWY7Ki8KKyAgLypmb250LXNpemU6IHgtbGFyZ2U7Ki8KKyAgZm9udC1zaXplOiA4MCU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgeworICBib3JkZXItbGVmdDogMGVtOworICBib3JkZXItcmlnaHQ6IDBlbTsKKyAgYm9yZGVyLXRvcDogMGVtOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmZvb3RlciB0YWJsZSB7CisgIGJvcmRlci1sZWZ0OiAwZW07CisgIGJvcmRlci1yaWdodDogMGVtOworICBib3JkZXItYm90dG9tOiAwZW07CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGEsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGEgeworICBjb2xvcjogIzc3NzsKKyAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorCisvKiBub3JtYWwgdGV4dCBpbiB0aGUgZm9vdGVyICovCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIHsKKyAgY29sb3I6IGJsYWNrOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6dmlzaXRlZCwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYTp2aXNpdGVkIHsKKyAgY29sb3I6ICM0NDQ7Cit9CisKKworLyogbGlua3MgaW4gaGVhZGVyIGFuZCBmb290ZXIgKi8KK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTpob3ZlciwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYTpob3ZlciB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgY29sb3I6ICMzM2E7Cit9CisKK2Rpdi5uYXZoZWFkZXIgaHIsCitkaXYubmF2Zm9vdGVyIGhyIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKworCisucWFuZGFzZXQgdHIucXVlc3Rpb24gdGQgcCB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy5xYW5kYXNldCB0ci5hbnN3ZXIgdGQgcCB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisuYW5zd2VyIHRkIHsKKyAgcGFkZGluZy1ib3R0b206IDEuNWVtOworfQorCisuZW1waGFzaXMgeworICBmb250LXdlaWdodDogYm9sZDsKK30KKworCisgIC8qKioqKioqKioqKioqIC8KKyAvIGRlY29yYXRpb25zICAvCisvICoqKioqKioqKioqKiovCisKKy50aXRsZXBhZ2UgeworfQorCisucGFydCAudGl0bGUgeworfQorCisuc3VidGl0bGUgeworICAgIGJvcmRlcjogbm9uZTsKK30KKworLyoKK2gxIHsKKyAgYm9yZGVyOiBub25lOworfQorCitoMiB7CisgIGJvcmRlci10b3A6IHNvbGlkIDAuMmVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2gzIHsKKyAgYm9yZGVyLXRvcDogMGVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2g0IHsKKyAgYm9yZGVyOiAwZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDUgeworICBib3JkZXI6IDBlbTsKK30KKyovCisKKy5wcm9ncmFtbGlzdGluZyB7CisgIGJvcmRlcjogc29saWQgMXB4OworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmV4YW1wbGUgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworCisKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKK30KKworLnF1ZXN0aW9uIHRkIHsKKyAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOworfQorCisuYW5zd2VyIHsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworCitkaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKKyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOworfQorCisKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICBib3JkZXItdG9wOiAxcHggc29saWQ7Cit9CisKKyAgLyoqKioqKioqKiAvCisgLyAgY29sb3JzICAvCisvICoqKioqKioqKi8KKworYm9keSB7CisgIGNvbG9yOiAjMzMzOworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKworYSB7CisgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OworfQorCithOmhvdmVyIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2RlZGVkZTsKK30KKworCitoMSwKK2gyLAoraDMsCitoNCwKK2g1LAoraDYsCitoNywKK2g4IHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cit9CisKK2hyIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCisKKy50aXAsIC53YXJuaW5nLCAuY2F1dGlvbiwgLm5vdGUgeworICBib3JkZXItY29sb3I6ICNmZmY7Cit9CisKKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7Cit9CisKKworLndhcm5pbmcgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisuY2F1dGlvbiB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy50aXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisubm90ZSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5nbG9zc2FyeSBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7CisgIGNvbG9yOiAjMDQ0OworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmV4YW1wbGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUgeworICBib3JkZXItY29sb3I6ICNhYWE7Cit9CisKK3ByZS5wcm9ncmFtbGlzdGluZyB7CisgIGNvbG9yOiBibGFjazsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworICBib3JkZXItd2lkdGg6IDJweDsKK30KKworLmd1aW1lbnUsCisuZ3VpbGFiZWwsCisuZ3VpbWVudWl0ZW0geworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworfQorCisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CisgIGJvcmRlci1jb2xvcjogIzk5OTsKK30KKworCitkaXYubmF2aGVhZGVyIHsKKyAgYm9yZGVyLWNvbG9yOiBibGFjazsKK30KKworCitkaXYubmF2Zm9vdGVyIHsKKyAgYm9yZGVyLWNvbG9yOiBibGFjazsKK30KKworCisud3JpdGVybm90ZXMgeworICBjb2xvcjogcmVkOworfQorCisKKyAgLyoqKioqKioqKioqIC8KKyAvICBncmFwaGljcyAgLworLyAqKioqKioqKioqKi8KKworLyoKK2JvZHkgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ib2R5X2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisubmF2aGVhZGVyLAorLm5vdGUsCisudGlwIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvbm90ZV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLndhcm5pbmcsCisuY2F1dGlvbiB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL3dhcm5pbmdfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5maWd1cmUsCisuaW5mb3JtYWxmaWd1cmUsCisuZXhhbXBsZSwKKy5pbmZvcm1hbGV4YW1wbGUsCisudGFibGUsCisuaW5mb3JtYWx0YWJsZSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2ZpZ3VyZV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworKi8KK2gxLAoraDIsCitoMywKK2g0LAoraDUsCitoNiwKK2g3eworfQorCisvKgorRXhhbXBsZSBvZiBob3cgdG8gc3RpY2sgYW4gaW1hZ2UgYXMgcGFydCBvZiB0aGUgdGl0bGUuCisKK2Rpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCit7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZmlndXJlcy93aGl0ZS1vbi1ibGFjay5wbmciKTsKKyAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOworICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7Cit9CisqLworCitkaXYucHJlZmFjZSAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5jb2xvcGhvbiAudGl0bGUsCitkaXYuY2hhcHRlciAudGl0bGVwYWdlIC50aXRsZSB7CisgIGJhY2tncm91bmQtcG9zaXRpb246IGJvdHRvbTsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworfQorCitkaXYuc2VjdGlvbiBkaXYuc2VjdGlvbiAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5zZWN0MiAudGl0bGVwYWdlIC50aXRsZSB7CisgICAgYmFja2dyb3VuZDogbm9uZTsKK30KKworCitoMS50aXRsZSB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBoZWlnaHQ6IDI1NnB4OworICB0ZXh0LWluZGVudDogLTkwMDBweDsKKyAgb3ZlcmZsb3c6aGlkZGVuOworfQorCitoMi5zdWJ0aXRsZSB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICB0ZXh0LWluZGVudDogLTkwMDBweDsKKyAgb3ZlcmZsb3c6aGlkZGVuOworICB3aWR0aDogMHB4OworICBkaXNwbGF5OiBub25lOworfQorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gIHBpcHBpbi5naW1wLm9yZyBzcGVjaWZpYyBhbHRlcmF0aW9ucyAgLworLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIGNvbG9yOiAjNzc3OworICBmb250LXNpemU6IDgwJTsKKyAgcGFkZGluZzogMDsKKyAgbWFyZ2luOiAwOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIHRvcDogMHB4OworICBsZWZ0OiAwcHg7CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDUwcHg7CisgIGJhY2tncm91bmQ6IHVybCgnL2dmeC9oZWFkaW5nX2JnLnBuZycpIHRyYW5zcGFyZW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7CisgIGJvcmRlcjogbm9uZTsKK30KKworZGl2LmhlYWRpbmcgYSB7CisgIGNvbG9yOiAjNDQ0OworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIGJvcmRlcjogbm9uZTsKKyAgY29sb3I6ICNkZGQ7CisgIGZvbnQtc2l6ZTogODAlOworICB0ZXh0LWFsaWduOnJpZ2h0OworCisgIHdpZHRoOiAxMDAlOworICBwYWRkaW5nLXRvcDogMTBweDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICBib3R0b206IDBweDsKKyAgbGVmdDogMHB4OworCisgIGJhY2tncm91bmQ6IHVybCgnL2dmeC9mb290aW5nX2JnLnBuZycpIHRyYW5zcGFyZW50OworfQorKi8KKworCisKKyAgLyoqKioqKioqKioqKioqKioqKiAvCisgLyAgbmFzdHkgaWUgdHdlYWtzICAvCisvICoqKioqKioqKioqKioqKioqKi8KKworLyoKK2Rpdi5oZWFkaW5nLCBkaXYubmF2aGVhZGVyIHsKKyAgd2lkdGg6ZXhwcmVzc2lvbihkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoICsgInB4Iik7Cit9CisKK2Rpdi5mb290aW5nLCBkaXYubmF2Zm9vdGVyIHsKKyAgd2lkdGg6ZXhwcmVzc2lvbihkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoICsgInB4Iik7CisgIG1hcmdpbi1sZWZ0OmV4cHJlc3Npb24oIi01ZW0iKTsKK30KK2JvZHkgeworICBwYWRkaW5nOmV4cHJlc3Npb24oIjRlbSA1ZW0gMGVtIDVlbSIpOworfQorKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvCisgLyBtb3ppbGxhIHZlbmRvciBzcGVjaWZpYyBjc3MgZXh0ZW5zaW9ucyAgLworLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICAtbW96LW9wYWNpdHk6IDAuOGVtOworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmV4YW1wbGUsCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjVlbTsKK30KKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjNlbTsKK30KKyovCisKK3RhYmxlIHRyIHRkIHRhYmxlIHRyIHRkIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKworCitociB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3RhYmxlIHsKKyAgYm9yZGVyOiAwZW07Cit9CisKKyAucGhvdG8geworICBmbG9hdDogcmlnaHQ7CisgIG1hcmdpbi1sZWZ0OiAgIDEuNWVtOworICBtYXJnaW4tYm90dG9tOiAxLjVlbTsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXgtd2lkdGg6ICAgICAgMTdlbTsKKyAgYm9yZGVyOiAgICAgMXB4IHNvbGlkIGdyYXk7CisgIHBhZGRpbmc6ICAgIDNweDsKKyAgYmFja2dyb3VuZDogd2hpdGU7Cit9CisgLnNlcGVyYXRvciB7CisgICBwYWRkaW5nLXRvcDogMmVtOworICAgY2xlYXI6IGJvdGg7CisgIH0KKworICAjdmFsaWRhdG9ycyB7CisgICAgICBtYXJnaW4tdG9wOiA1ZW07CisgICAgICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICAgIGNvbG9yOiAjNzc3OworICB9CisgIEBtZWRpYSBwcmludCB7CisgICAgICBib2R5IHsKKyAgICAgICAgICBmb250LXNpemU6IDhwdDsKKyAgICAgIH0KKyAgICAgIC5ub3ByaW50IHsKKyAgICAgICAgICBkaXNwbGF5OiBub25lOworICAgICAgfQorICB9CisKKworLnRpcCwKKy5ub3RlIHsKKyAgIGJhY2tncm91bmQ6ICNmMGYwZjI7CisgICBjb2xvcjogIzMzMzsKKyAgIHBhZGRpbmc6IDIwcHg7CisgICBtYXJnaW46IDIwcHg7Cit9CisKKy50aXAgaDMsCisubm90ZSBoMyB7CisgICBwYWRkaW5nOiAwZW07CisgICBtYXJnaW46IDBlbTsKKyAgIGZvbnQtc2l6ZTogMmVtOworICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICBjb2xvcjogIzMzMzsKK30KKworLnRpcCBhLAorLm5vdGUgYSB7CisgICBjb2xvcjogIzMzMzsKKyAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworfQorCisuZm9vdG5vdGUgeworICAgZm9udC1zaXplOiBzbWFsbDsKKyAgIGNvbG9yOiAjMzMzOworfQorCisvKiBDaGFuZ2VzIHRoZSBhbm5vdW5jZW1lbnQgdGV4dCAqLworLnRpcCBoMywKKy53YXJuaW5nIGgzLAorLmNhdXRpb24gaDMsCisubm90ZSBoMyB7CisgICBmb250LXNpemU6bGFyZ2U7CisgICBjb2xvcjogIzAwNTU3RDsKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy10aXRsZXBhZ2UueHNsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtdGl0bGVwYWdlLnhzbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLXRpdGxlcGFnZS54c2wKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLXRpdGxlcGFnZS54c2wKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmM0OTY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMueG1sCkBAIC0wLDAgKzEsNDkxIEBACis8IURPQ1RZUEUgYXJ0aWNsZSBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorCis8YXJ0aWNsZSBpZD0nYnJpZWYteW9jdG8tcHJvamVjdC1xcy1pbnRybyc+CisgICAgPGFydGljbGVpbmZvPgorICAgICAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvdGl0bGU+CisKKyAgICAgICAgPGNvcHlyaWdodD4KKyAgICAgICAgICAgIDx5ZWFyPiZDT1BZUklHSFRfWUVBUjs8L3llYXI+CisgICAgICAgICAgICA8aG9sZGVyPkxpbnV4IEZvdW5kYXRpb248L2hvbGRlcj4KKyAgICAgICAgPC9jb3B5cmlnaHQ+CisKKyAgICAgICAgPGxlZ2Fsbm90aWNlPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCisgICAgICAgICAgICAgICAgdGhlIHRlcm1zIG9mIHRoZSA8dWxpbmsgdHlwZT0iaHR0cCIgdXJsPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvdWsvIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDIuMCBVSzogRW5nbGFuZCAmYW1wOyBXYWxlczwvdWxpbms+IGFzIHB1Ymxpc2hlZCBieSBDcmVhdGl2ZSBDb21tb25zLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xlZ2Fsbm90aWNlPgorCisKKyAgICAgICAgPGFic3RyYWN0PgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3lvY3RvLXByb2plY3QtdHJhbnNwLnBuZyIKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSI2aW4iIGRlcHRoPSIxaW4iCisgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbj0icmlnaHQiIHNjYWxlPSIyNSIgLz4KKyAgICAgICAgPC9hYnN0cmFjdD4KKyAgICA8L2FydGljbGVpbmZvPgorCisgICAgPHNlY3Rpb24gaWQ9J2JyaWVmLXdlbGNvbWUnPgorICAgICAgICA8dGl0bGU+V2VsY29tZSE8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2VsY29tZSEKKyAgICAgICAgICAgIFRoaXMgc2hvcnQgZG9jdW1lbnQgc3RlcHMgeW91IHRocm91Z2ggdGhlIHByb2Nlc3MgZm9yIGEgdHlwaWNhbAorICAgICAgICAgICAgaW1hZ2UgYnVpbGQgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICBUaGUgZG9jdW1lbnQgYWxzbyBpbnRyb2R1Y2VzIGhvdyB0byBjb25maWd1cmUgYSBidWlsZCBmb3Igc3BlY2lmaWMKKyAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgWW91IHdpbGwgdXNlIFlvY3RvIFByb2plY3QgdG8gYnVpbGQgYSByZWZlcmVuY2UgZW1iZWRkZWQgT1MKKyAgICAgICAgICAgIGNhbGxlZCBQb2t5LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGVzIGluIHRoaXMgcGFwZXIgYXNzdW1lIHlvdSBhcmUgdXNpbmcgYSBuYXRpdmUgTGludXgKKyAgICAgICAgICAgICAgICBzeXN0ZW0gcnVubmluZyBhIHJlY2VudCBVYnVudHUgTGludXggZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgIElmIHRoZSBtYWNoaW5lIHlvdSB3YW50IHRvIHVzZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Qgb24gdG8gYnVpbGQgYW4gaW1hZ2UgaXMgbm90IGEgbmF0aXZlIExpbnV4CisgICAgICAgICAgICAgICAgc3lzdGVtLCB5b3UgY2FuIHN0aWxsIHBlcmZvcm0gdGhlc2Ugc3RlcHMgYnkgdXNpbmcgQ1JPc3MKKyAgICAgICAgICAgICAgICBQbGF0Zm9ybVMgKENST1BTKSBhbmQgc2V0dGluZyB1cCBhIFBva3kgY29udGFpbmVyLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRvLXVzZS1jcm9wcyc+U2V0dGluZyBVcCB0byBVc2UgQ1JPc3MgUGxhdGZvcm1TIChDUk9QUyk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3Ugd2FudCBtb3JlIGNvbmNlcHR1YWwgb3IgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiB0aGUKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsnPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvdWxpbms+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JyaWVmLWNvbXBhdGlibGUtZGlzdHJvJz4KKyAgICAgICAgPHRpdGxlPkNvbXBhdGlibGUgTGludXggRGlzdHJpYnV0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE1ha2Ugc3VyZSB5b3VyCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+CisgICAgICAgICAgICBtZWV0cyB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50czoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA1MCBHYnl0ZXMgb2YgZnJlZSBkaXNrIHNwYWNlCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUnVucyBhIHN1cHBvcnRlZCBMaW51eCBkaXN0cmlidXRpb24gKGkuZS4gcmVjZW50IHJlbGVhc2VzIG9mCisgICAgICAgICAgICAgICAgICAgIEZlZG9yYSwgb3BlblNVU0UsIENlbnRPUywgRGViaWFuLCBvciBVYnVudHUpLiBGb3IgYSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIExpbnV4IGRpc3RyaWJ1dGlvbnMgdGhhdCBzdXBwb3J0IHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IDEuOC4zLjEgb3IgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhciAxLjI3IG9yIGdyZWF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gMy40LjAgb3IgZ3JlYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgYnVpbGQgaG9zdCBkb2VzIG5vdCBtZWV0IGFueSBvZiB0aGVzZSB0aHJlZSBsaXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiByZXF1aXJlbWVudHMsIHlvdSBjYW4gdGFrZSBzdGVwcyB0byBwcmVwYXJlIHRoZQorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gc28gdGhhdCB5b3UgY2FuIHN0aWxsIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JyaWVmLWJ1aWxkLXN5c3RlbS1wYWNrYWdlcyc+CisgICAgICAgIDx0aXRsZT5CdWlsZCBIb3N0IFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBtdXN0IGluc3RhbGwgZXNzZW50aWFsIGhvc3QgcGFja2FnZXMgb24geW91cgorICAgICAgICAgICAgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBpbnN0YWxscyB0aGUgaG9zdCBwYWNrYWdlcyBiYXNlZCBvbiBhbgorICAgICAgICAgICAgVWJ1bnR1IGRpc3RyaWJ1dGlvbjoKKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEZvciBob3N0IHBhY2thZ2UgcmVxdWlyZW1lbnRzIG9uIGFsbCBzdXBwb3J0ZWQgTGludXgKKyAgICAgICAgICAgICAgICBkaXN0cmlidXRpb25zLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtaG9zdC1kZXZlbG9wbWVudC1zeXN0ZW0nPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW08L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgJlVCVU5UVV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsgbGlic2RsMS4yLWRldiB4dGVybQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JyaWVmLXVzZS1naXQtdG8tY2xvbmUtcG9reSc+CisgICAgICAgIDx0aXRsZT5Vc2UgR2l0IHRvIENsb25lIFBva3k8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25jZSB5b3UgY29tcGxldGUgdGhlIHNldHVwIGluc3RydWN0aW9ucyBmb3IgeW91ciBtYWNoaW5lLAorICAgICAgICAgICAgeW91IG5lZWQgdG8gZ2V0IGEgY29weSBvZiB0aGUgUG9reSByZXBvc2l0b3J5IG9uIHlvdXIgYnVpbGQKKyAgICAgICAgICAgIGhvc3QuCisgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBjbG9uZSB0aGUgUG9reQorICAgICAgICAgICAgcmVwb3NpdG9yeSBhbmQgdGhlbiBjaGVja291dCB0aGUgJkRJU1RST19SRUxfVEFHOyByZWxlYXNlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5CisgICAgIENsb25pbmcgaW50byAncG9reScuLi4KKyAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiAzNjE3ODIsIGRvbmUuCisgICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoODcxMDAvODcxMDApLCBkb25lLgorICAgICByZW1vdGU6IFRvdGFsIDM2MTc4MiAoZGVsdGEgMjY4NjE5KSwgcmV1c2VkIDM2MTQzOSAoZGVsdGEgMjY4Mjc3KQorICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoMzYxNzgyLzM2MTc4MiksIDEzMS45NCBNaUIgfCA2Ljg4IE1pQi9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICgyNjg2MTkvMjY4NjE5KSwgZG9uZS4KKyAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCisgICAgICQgZ2l0IGNoZWNrb3V0IHRhZ3MveW9jdG8tMi41IC1iIG15LXlvY3RvLTIuNQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIHByZXZpb3VzIEdpdCBjaGVja291dCBjb21tYW5kIGNyZWF0ZXMgYSBsb2NhbCBicmFuY2gKKyAgICAgICAgICAgIG5hbWVkIG15LSZESVNUUk9fUkVMX1RBRzsuIFRoZSBmaWxlcyBhdmFpbGFibGUgdG8geW91IGluIHRoYXQKKyAgICAgICAgICAgIGJyYW5jaCBleGFjdGx5IG1hdGNoIHRoZSByZXBvc2l0b3J5J3MgZmlsZXMgaW4gdGhlCisgICAgICAgICAgICAiJkRJU1RST19OQU1FX05PX0NBUDsiIGRldmVsb3BtZW50IGJyYW5jaCBhdCB0aGUgdGltZSBvZiB0aGUKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgJkRJU1RSTzsgcmVsZWFzZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIG1vcmUgb3B0aW9ucyBhbmQgaW5mb3JtYXRpb24gYWJvdXQgYWNjZXNzaW5nIFlvY3RvCisgICAgICAgICAgICBQcm9qZWN0IHJlbGF0ZWQgcmVwb3NpdG9yaWVzLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbG9jYXRpbmcteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPkxvY2F0aW5nIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdicmllZi1idWlsZGluZy15b3VyLWltYWdlJz4KKyAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIFlvdXIgSW1hZ2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgc3RlcHMgdG8gYnVpbGQgeW91ciBpbWFnZS4KKyAgICAgICAgICAgIFRoZSBidWlsZCBwcm9jZXNzIGNyZWF0ZXMgYW4gZW50aXJlIExpbnV4IGRpc3RyaWJ1dGlvbiwgaW5jbHVkaW5nCisgICAgICAgICAgICB0aGUgdG9vbGNoYWluLCBmcm9tIHNvdXJjZS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgd29ya2luZyBiZWhpbmQgYSBmaXJld2FsbCBhbmQgeW91ciBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCBpcyBub3Qgc2V0IHVwIGZvciBwcm94aWVzLCB5b3UgY291bGQgZW5jb3VudGVyCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9ibGVtcyB3aXRoIHRoZSBidWlsZCBwcm9jZXNzIHdoZW4gZmV0Y2hpbmcgc291cmNlCisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlIChlLmcuIGZldGNoZXIgZmFpbHVyZXMgb3IgR2l0IGZhaWx1cmVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGtub3cgeW91ciBwcm94eSBzZXR0aW5ncywgY29uc3VsdCB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIHJlc291cmNlcyBhbmQgZ2V0IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBnb29kIHN0YXJ0aW5nIHBvaW50IGNvdWxkIGFsc28gYmUgdG8gY2hlY2sgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgd2ViIGJyb3dzZXIgc2V0dGluZ3MuCisgICAgICAgICAgICAgICAgICAgICAgICBGaW5hbGx5LCB5b3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1dvcmtpbmdfQmVoaW5kX2FfTmV0d29ya19Qcm94eSc+V29ya2luZyBCZWhpbmQgYSBOZXR3b3JrIFByb3h5PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlIG9mIHRoZSBZb2N0byBQcm9qZWN0IFdpa2kuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYWxpemUgdGhlIEJ1aWxkIEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCB0byBkZWZpbmUgWW9jdG8gUHJvamVjdCdzCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGVudmlyb25tZW50IG9uIHlvdXIgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBpbiB0aGlzIGNhc2UKKyAgICAgICAgICAgICAgICAgICAgYW5kIGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHNjcmlwdCBydW5zLCB5b3VyIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIExhdGVyLCB3aGVuIHRoZSBidWlsZCBjb21wbGV0ZXMsIHRoZSBCdWlsZCBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYWxsIHRoZSBmaWxlcyBjcmVhdGVkIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nY29uZi1maWxlLXN0ZXAnPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhhbWluZSBZb3VyIExvY2FsIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBzZXQgdXAgdGhlIGJ1aWxkIGVudmlyb25tZW50LCBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBuYW1lZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGJlY29tZXMgYXZhaWxhYmxlIGluCisgICAgICAgICAgICAgICAgICAgIGEgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBzdWJkaXJlY3Rvcnkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgdGhlIGRlZmF1bHRzIGFyZSBzZXQgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgZm9yIGEgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiB0YXJnZXQsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIHN1aXRhYmxlIGZvciBlbXVsYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBwYWNrYWdlIG1hbmFnZXIgdXNlZCBpcyBzZXQgdG8gdGhlIFJQTSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIuCisgICAgICAgICAgICAgICAgICAgIDx0aXA+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNpZ25pZmljYW50bHkgc3BlZWQgdXAgeW91ciBidWlsZCBhbmQgZ3VhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFnYWluc3QgZmV0Y2hlciBmYWlsdXJlcyBieSB1c2luZyBtaXJyb3JzLgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gdXNlIG1pcnJvcnMsIGFkZCB0aGVzZSBsaW5lcyB0byB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlIEJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNTVEFURV9NSVJST1JTID0gIlwKKyAgICAgZmlsZTovLy4qIGh0dHA6Ly9zc3RhdGUueW9jdG9wcm9qZWN0Lm9yZy9kZXYvUEFUSDtkb3dubG9hZGZpbGVuYW1lPVBBVEggXG4gXAorICAgICBmaWxlOi8vLiogaHR0cDovL3NzdGF0ZS55b2N0b3Byb2plY3Qub3JnLyZZT0NUT19ET0NfVkVSU0lPTl9NSU5VU19PTkU7L1BBVEg7ZG93bmxvYWRmaWxlbmFtZT1QQVRIIFxuIFwKKyAgICAgZmlsZTovLy4qIGh0dHA6Ly9zc3RhdGUueW9jdG9wcm9qZWN0Lm9yZy8mWU9DVE9fRE9DX1ZFUlNJT047L1BBVEg7ZG93bmxvYWRmaWxlbmFtZT1QQVRIIFxuIFwKKyAgICAgIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGVzIHNob3dlZCBob3cgdG8gYWRkIHNzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMgZm9yIFlvY3RvIFByb2plY3QgJllPQ1RPX0RPQ19WRVJTSU9OX01JTlVTX09ORTssCisgICAgICAgICAgICAgICAgICAgICAgICAmWU9DVE9fRE9DX1ZFUlNJT047LCBhbmQgYSBkZXZlbG9wbWVudCBhcmVhLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgY29tcGxldGUgaW5kZXggb2Ygc3N0YXRlIGxvY2F0aW9ucywgc2VlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vc3N0YXRlLnlvY3RvcHJvamVjdC5vcmcvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC90aXA+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0YXJ0IHRoZSBCdWlsZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb250aW51ZSB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBidWlsZCBhbiBPUyBpbWFnZQorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldCwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGluIHRoaXMgZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjdXNpbmdwb2t5LWNvbXBvbmVudHMtYml0YmFrZSc+Qml0QmFrZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwsCisgICAgICAgICAgICAgICAgICAgIG9yIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYml0YmFrZS11c2VyLW1hbnVhbC1jb21tYW5kJz5CaXRCYWtlIENvbW1hbmQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2ltdWxhdGUgWW91ciBJbWFnZSBVc2luZyBRRU1VOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhpcyBwYXJ0aWN1bGFyIGltYWdlIGlzIGJ1aWx0LCB5b3UgY2FuIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgIFFFTVUsIHdoaWNoIGlzIGEgUXVpY2sgRU1VbGF0b3IgdGhhdCBzaGlwcyB3aXRoCisgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgcnVucWVtdSBxZW11eDg2CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gbGVhcm4gbW9yZSBhYm91dCBydW5uaW5nIFFFTVUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9IiZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSI+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhpdCBRRU1VOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEV4aXQgUUVNVSBieSBlaXRoZXIgY2xpY2tpbmcgb24gdGhlIHNodXRkb3duIGljb24gb3IgYnkKKyAgICAgICAgICAgICAgICAgICAgdHlwaW5nIDxmaWxlbmFtZT5DdHJsLUM8L2ZpbGVuYW1lPiBpbiB0aGUgUUVNVQorICAgICAgICAgICAgICAgICAgICB0cmFuc2NyaXB0IHdpbmRvdyBmcm9tIHdoaWNoIHlvdSBldm9rZWQgUUVNVS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2N1c3RvbWl6aW5nLXlvdXItYnVpbGQtZm9yLXNwZWNpZmljLWhhcmR3YXJlJz4KKyAgICAgICAgPHRpdGxlPkN1c3RvbWl6aW5nIFlvdXIgQnVpbGQgZm9yIFNwZWNpZmljIEhhcmR3YXJlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNvIGZhciwgYWxsIHlvdSBoYXZlIGRvbmUgaXMgcXVpY2tseSBidWlsdCBhbiBpbWFnZSBzdWl0YWJsZQorICAgICAgICAgICAgZm9yIGVtdWxhdGlvbiBvbmx5LgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHNob3dzIHlvdSBob3cgdG8gY3VzdG9taXplIHlvdXIgYnVpbGQgZm9yIHNwZWNpZmljCisgICAgICAgICAgICBoYXJkd2FyZSBieSBhZGRpbmcgYSBoYXJkd2FyZSBsYXllciBpbnRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gZ2VuZXJhbCwgbGF5ZXJzIGFyZSByZXBvc2l0b3JpZXMgdGhhdCBjb250YWluIHJlbGF0ZWQgc2V0cyBvZgorICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zIGFuZCBjb25maWd1cmF0aW9ucyB0aGF0IHRlbGwgdGhlIFlvY3RvIFByb2plY3Qgd2hhdAorICAgICAgICAgICAgdG8gZG8uCisgICAgICAgICAgICBJc29sYXRpbmcgcmVsYXRlZCBtZXRhZGF0YSBpbnRvIGZ1bmN0aW9uYWxseSBzcGVjaWZpYyBsYXllcnMKKyAgICAgICAgICAgIGZhY2lsaXRhdGVzIG1vZHVsYXIgZGV2ZWxvcG1lbnQgYW5kIG1ha2VzIGl0IGVhc2llciB0byByZXVzZSB0aGUKKyAgICAgICAgICAgIGxheWVyIG1ldGFkYXRhLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgQnkgY29udmVudGlvbiwgbGF5ZXIgbmFtZXMgc3RhcnQgd2l0aCB0aGUgc3RyaW5nICJtZXRhLSIuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBhZGQgYSBoYXJkd2FyZSBsYXllcjoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIGEgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTG90cyBvZiBoYXJkd2FyZSBsYXllcnMgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGhhcyBtYW55IGhhcmR3YXJlIGxheWVycy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIGFkZHMgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9rcmFqL21ldGEtYWx0ZXJhJz5tZXRhLWFsdGVyYTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbG9uZSB0aGUgTGF5ZXI8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBVc2UgR2l0IHRvIG1ha2UgYSBsb2NhbCBjb3B5IG9mIHRoZSBsYXllciBvbiB5b3VyIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcHV0IHRoZSBjb3B5IGluIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIGNvcHkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIFBva3kgcmVwb3NpdG9yeSBjcmVhdGVkIGVhcmxpZXI6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kKKyAgICAgJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2tyYWovbWV0YS1hbHRlcmEuZ2l0CisgICAgIENsb25pbmcgaW50byAnbWV0YS1hbHRlcmEnLi4uCisgICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogMjUxNzAsIGRvbmUuCisgICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoMzUwLzM1MCksIGRvbmUuCisgICAgIHJlbW90ZTogVG90YWwgMjUxNzAgKGRlbHRhIDY0NSksIHJldXNlZCA3MTkgKGRlbHRhIDUzOCksIHBhY2stcmV1c2VkIDI0MjE5CisgICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgyNTE3MC8yNTE3MCksIDQxLjAyIE1pQiB8IDEuNjQgTWlCL3MsIGRvbmUuCisgICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDEzMzg1LzEzMzg1KSwgZG9uZS4KKyAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGhhcmR3YXJlIGxheWVyIG5vdyBleGlzdHMgd2l0aCBvdGhlciBsYXllcnMgaW5zaWRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBQb2t5IHJlZmVyZW5jZSByZXBvc2l0b3J5IG9uIHlvdXIgYnVpbGQgaG9zdCBhcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1hbHRlcmE8L2ZpbGVuYW1lPiBhbmQgY29udGFpbnMgYWxsIHRoZQorICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YSBuZWVkZWQgdG8gc3VwcG9ydCBoYXJkd2FyZSBmcm9tIEFsdGVyYSwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgb3duZWQgYnkgSW50ZWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoYW5nZSB0aGUgQ29uZmlndXJhdGlvbiB0byBCdWlsZCBmb3IgYSBTcGVjaWZpYyBNYWNoaW5lOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBtYWNoaW5lIGZvciB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsIHNldCB0aGUgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiY3ljbG9uZTUiLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBjb25maWd1cmF0aW9ucyBhcmUgdXNlZDoKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2tyYWovbWV0YS1hbHRlcmEvYmxvYi9tYXN0ZXIvY29uZi9tYWNoaW5lL2N5Y2xvbmU1LmNvbmYnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjb25mLWZpbGUtc3RlcCc+RXhhbWluZSBZb3VyIExvY2FsIENvbmZpZ3VyYXRpb24gRmlsZTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzdGVwIGVhcmxpZXIgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BZGQgWW91ciBMYXllciB0byB0aGUgTGF5ZXIgQ29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEJlZm9yZSB5b3UgY2FuIHVzZSBhIGxheWVyIGR1cmluZyBhIGJ1aWxkLCB5b3UgbXVzdCBhZGQgaXQKKyAgICAgICAgICAgICAgICAgICAgdG8geW91ciA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeSdzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzZSB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGFkZC1sYXllcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gYWRkIHRoZSBsYXllciB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIC4uL21ldGEtYWx0ZXJhCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjMyCisgICAgIFBhcnNpbmcgb2YgOTE4IC5iYiBmaWxlcyBjb21wbGV0ZSAoMCBjYWNoZWQsIDkxOCBwYXJzZWQpLiAxNDAxIHRhcmdldHMsIDEyMyBza2lwcGVkLCAwIG1hc2tlZCwgMCBlcnJvcnMuCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gYWRkaW5nIGxheWVycyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2FkZGluZy1hLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkFkZGluZyBhIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgQ29tcGxldGluZyB0aGVzZSBzdGVwcyBoYXMgYWRkZWQgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1hbHRlcmE8L2ZpbGVuYW1lPiBsYXllciB0byB5b3VyIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIGRldmVsb3BtZW50IGVudmlyb25tZW50IGFuZCBjb25maWd1cmVkIGl0IHRvIGJ1aWxkIGZvciB0aGUKKyAgICAgICAgICAgICJjeWNsb25lNSIgbWFjaGluZS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBzdGVwcyBhcmUgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMgb25seS4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2VyZSB0byBhdHRlbXB0IHRvIGJ1aWxkIGFuIGltYWdlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAiY3ljbG9uZTUiIGJ1aWxkLCB5b3Ugc2hvdWxkIHJlYWQgdGhlIEFsdGVyYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdjcmVhdGluZy15b3VyLW93bi1nZW5lcmFsLWxheWVyJz4KKyAgICAgICAgPHRpdGxlPkNyZWF0aW5nIFlvdXIgT3duIEdlbmVyYWwgTGF5ZXI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTWF5YmUgeW91IGhhdmUgYW4gYXBwbGljYXRpb24gb3Igc3BlY2lmaWMgc2V0IG9mIGJlaGF2aW9ycyB5b3UKKyAgICAgICAgICAgIG5lZWQgdG8gaXNvbGF0ZS4KKyAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIGdlbmVyYWwgbGF5ZXIgdXNpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgIFRoZSB0b29sIGF1dG9tYXRlcyBsYXllciBjcmVhdGlvbiBieSBzZXR0aW5nIHVwIGEKKyAgICAgICAgICAgIHN1YmRpcmVjdG9yeSB3aXRoIGEgPGZpbGVuYW1lPmxheWVyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLCBhIDxmaWxlbmFtZT5yZWNpcGVzLWV4YW1wbGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgc3ViZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgYW4gPGZpbGVuYW1lPmV4YW1wbGUuYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgcmVjaXBlLCBhIGxpY2Vuc2luZyBmaWxlLCBhbmQgYSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgcnVuIHRoZSB0b29sIHRvIGNyZWF0ZSBhIGxheWVyIG5hbWVkCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1teWxheWVyPC9maWxlbmFtZT4gaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGRpcmVjdG9yeToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kKKyAgICAgJCBiaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXIgbWV0YS1teWxheWVyCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIEFkZCB5b3VyIG5ldyBsYXllciB3aXRoICdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgbWV0YS1teWxheWVyJworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbGF5ZXJzIGFuZCBob3cgdG8gY3JlYXRlIHRoZW0sIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JyaWVmLXdoZXJlLXRvLWdvLW5leHQnPgorICAgICAgICA8dGl0bGU+V2hlcmUgVG8gR28gTmV4dDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBOb3cgdGhhdCB5b3UgaGF2ZSBleHBlcmllbmNlZCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCwgeW91IG1pZ2h0CisgICAgICAgICAgICBiZSBhc2tpbmcgeW91cnNlbGYgIldoYXQgbm93PyIKKyAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGhhcyBtYW55IHNvdXJjZXMgb2YgaW5mb3JtYXRpb24gaW5jbHVkaW5nCisgICAgICAgICAgICB0aGUgd2Vic2l0ZSwgd2lraSBwYWdlcywgYW5kIHVzZXIgbWFudWFsczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+V2Vic2l0ZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiwgdGhlIGxhdGVzdCBidWlsZHMsCisgICAgICAgICAgICAgICAgICAgIGJyZWFraW5nIG5ld3MsIGZ1bGwgZGV2ZWxvcG1lbnQgZG9jdW1lbnRhdGlvbiwgYW5kCisgICAgICAgICAgICAgICAgICAgIGFjY2VzcyB0byBhIHJpY2ggWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBDb21tdW5pdHkKKyAgICAgICAgICAgICAgICAgICAgaW50byB3aGljaCB5b3UgY2FuIHRhcC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGV2ZWxvcGVyIFNjcmVlbmNhc3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly92aW1lby5jb20vMzY0NTAzMjEnPkdldHRpbmcgU3RhcnRlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IC0gTmV3IERldmVsb3BlciBTY3JlZW5jYXN0IFR1dG9yaWFsPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgYSAzMC1taW51dGUgdmlkZW8gY3JlYXRlZCBmb3IgdXNlcnMgdW5mYW1pbGlhcgorICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGJ1dCBmYW1pbGlhciB3aXRoIExpbnV4IGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGhvc3RzLgorICAgICAgICAgICAgICAgICAgICBXaGlsZSB0aGlzIHNjcmVlbmNhc3QgaXMgc29tZXdoYXQgZGF0ZWQsIHRoZQorICAgICAgICAgICAgICAgICAgICBpbnRyb2R1Y3RvcnkgYW5kIGZ1bmRhbWVudGFsIGNvbmNlcHRzIGFyZSB1c2VmdWwgZm9yCisgICAgICAgICAgICAgICAgICAgIHRoZSBiZWdpbm5lci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7Jz5Zb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWw8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBhIGdyZWF0IHBsYWNlIHRvIHN0YXJ0IHRvIGxlYXJuIGFib3V0IHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBUaGlzIG1hbnVhbCBpbnRyb2R1Y2VzIHlvdSB0byB0aGUgWW9jdG8gUHJvamVjdCBhbmQgaXRzCisgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICBUaGUgbWFudWFsIGFsc28gcHJvdmlkZXMgY29uY2VwdHVhbCBpbmZvcm1hdGlvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgdmFyaW91cyBhc3BlY3RzIG9mIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IFdpa2k6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsnPllvY3RvIFByb2plY3QgV2lraTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gd2hlcmUgdG8gZ28gbmV4dAorICAgICAgICAgICAgICAgICAgICB3aGVuIHJhbXBpbmcgdXAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiwgcHJvamVjdCBwbGFubmluZywgYW5kIFFBIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IE1haWxpbmcgTGlzdHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVsYXRlZCBtYWlsaW5nIGxpc3RzIHByb3ZpZGUgYSBmb3J1bSBmb3IgZGlzY3Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2ggc3VibWlzc2lvbiBhbmQgYW5ub3VuY2VtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgU2V2ZXJhbCBtYWlsaW5nIGxpc3RzIGV4aXN0IGFuZCBhcmUgZ3JvdXBlZCBhY2NvcmRpbmcKKyAgICAgICAgICAgICAgICAgICAgdG8gYXJlYXMgb2YgY29uY2Vybi4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLW1haWxpbmdsaXN0Jz5NYWlsaW5nIGxpc3RzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgYQorICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSBsaXN0IG9mIFlvY3RvIFByb2plY3QgbWFpbGluZyBsaXN0cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tcHJlaGVuc2l2ZSBMaXN0IG9mIExpbmtzIGFuZCBPdGhlciBEb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLWxpbmtzLWFuZC1yZWxhdGVkLWRvY3VtZW50YXRpb24nPkxpbmtzIGFuZCBSZWxhdGVkIERvY3VtZW50YXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIHByb3ZpZGVzIGEKKyAgICAgICAgICAgICAgICAgICAgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIGFsbCByZWxhdGVkIGxpbmtzIGFuZCBvdGhlcgorICAgICAgICAgICAgICAgICAgICB1c2VyIGRvY3VtZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L2FydGljbGU+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2ZpZ3VyZXMvYnlwcXMtdGl0bGUucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvZmlndXJlcy9ieXBxcy10aXRsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUwYTVjZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2ZpZ3VyZXMvYnlwcXMtdGl0bGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMvZmlndXJlcy95b2N0by1wcm9qZWN0LXRyYW5zcC5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9maWd1cmVzL3lvY3RvLXByb2plY3QtdHJhbnNwLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy9maWd1cmVzL3lvY3RvLXByb2plY3QtdHJhbnNwLnBuZwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvZmlndXJlcy95b2N0by1wcm9qZWN0LXRyYW5zcC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLWd1aWRlLnhtbAppbmRleCA1NzZlZDE4Li43Y2E0YzVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLWd1aWRlLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLWd1aWRlLnhtbApAQCAtMTE3LDE0ICsxMTcsOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMjwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPk1hcmNoIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTE0MiwyOCArMTM3LDQwIEBACiAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgRGV2ZWxvcGVyJ3MgR3VpZGU8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICBpcyBmb3IgdGhlICZZT0NUT19ET0NfVkVSU0lPTjsgcmVsZWFzZSBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAotICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCB1c2UgdGhlIG1hbnVhbCBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1hbnVhbHMgYXNzb2NpYXRlZCB3aXRoIG90aGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LCBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBkcm9wLWRvd24gIkFjdGl2ZSBSZWxlYXNlcyIgYnV0dG9uCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIG1hbnVhbCBhc3NvY2lhdGVkIHdpdGggdGhlIGRlc2lyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgorICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbG9jYXRlZCB0aGlzIG1hbnVhbCB0aHJvdWdoIGEgd2ViIHNlYXJjaCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBtaWdodCBub3QgYmUgdGhlIG9uZSB5b3Ugd2FudAorICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgc2VhcmNoIG1pZ2h0IGhhdmUgcmV0dXJuZWQgYSBtYW51YWwgbXVjaAorICAgICAgICAgICAgICAgICAgICAgICBvbGRlciB0aGFuIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gd2l0aCB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdvcmtpbmcpLgorICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBhbGwgWW9jdG8gUHJvamVjdCBtYWpvciByZWxlYXNlcyBieQorICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgorICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3Atc3R5bGUuY3NzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1zdHlsZS5jc3MKaW5kZXggZTQwN2NhNC4uMGM4Njg5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1zdHlsZS5jc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1zdHlsZS5jc3MKQEAgLTczMCw2ICs3MzAsOSBAQAogICBib3JkZXItY29sb3I6IGJsYWNrOwogfQogCisud3JpdGVybm90ZXMgeworICBjb2xvcjogcmVkOworfQogCiAgIC8qKioqKioqKioqKiAvCiAgLyAgZ3JhcGhpY3MgIC8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKaW5kZXggZDdiNmYxNS4uMDBhMjhiMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKQEAgLTQsMzcxICs0LDQyOCBAQAogCiA8Y2hhcHRlciBpZD0nYnNwJz4KIAotICAgICAgICA8dGl0bGU+Qm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKSAtIERldmVsb3BlcidzIEd1aWRlPC90aXRsZT4KKzx0aXRsZT5Cb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1ApIC0gRGV2ZWxvcGVyJ3MgR3VpZGU8L3RpdGxlPgogCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgaXMgYSBjb2xsZWN0aW9uIG9mIGluZm9ybWF0aW9uIHRoYXQKLSAgICAgICAgICAgIGRlZmluZXMgaG93IHRvIHN1cHBvcnQgYSBwYXJ0aWN1bGFyIGhhcmR3YXJlIGRldmljZSwgc2V0IG9mIGRldmljZXMsIG9yCi0gICAgICAgICAgICBoYXJkd2FyZSBwbGF0Zm9ybS4KLSAgICAgICAgICAgIFRoZSBCU1AgaW5jbHVkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhhcmR3YXJlIGZlYXR1cmVzCi0gICAgICAgICAgICBwcmVzZW50IG9uIHRoZSBkZXZpY2UgYW5kIGtlcm5lbCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFsb25nIHdpdGggYW55Ci0gICAgICAgICAgICBhZGRpdGlvbmFsIGhhcmR3YXJlIGRyaXZlcnMgcmVxdWlyZWQuCi0gICAgICAgICAgICBUaGUgQlNQIGFsc28gbGlzdHMgYW55IGFkZGl0aW9uYWwgc29mdHdhcmUKLSAgICAgICAgICAgIGNvbXBvbmVudHMgcmVxdWlyZWQgaW4gYWRkaXRpb24gdG8gYSBnZW5lcmljIExpbnV4IHNvZnR3YXJlIHN0YWNrIGZvciBib3RoCi0gICAgICAgICAgICBlc3NlbnRpYWwgYW5kIG9wdGlvbmFsIHBsYXRmb3JtIGZlYXR1cmVzLgotICAgICAgICA8L3BhcmE+Cis8cGFyYT4KKyAgICBBIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBpcyBhIGNvbGxlY3Rpb24gb2YgaW5mb3JtYXRpb24gdGhhdAorICAgIGRlZmluZXMgaG93IHRvIHN1cHBvcnQgYSBwYXJ0aWN1bGFyIGhhcmR3YXJlIGRldmljZSwgc2V0IG9mIGRldmljZXMsIG9yCisgICAgaGFyZHdhcmUgcGxhdGZvcm0uCisgICAgVGhlIEJTUCBpbmNsdWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaGFyZHdhcmUgZmVhdHVyZXMKKyAgICBwcmVzZW50IG9uIHRoZSBkZXZpY2UgYW5kIGtlcm5lbCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFsb25nIHdpdGggYW55CisgICAgYWRkaXRpb25hbCBoYXJkd2FyZSBkcml2ZXJzIHJlcXVpcmVkLgorICAgIFRoZSBCU1AgYWxzbyBsaXN0cyBhbnkgYWRkaXRpb25hbCBzb2Z0d2FyZQorICAgIGNvbXBvbmVudHMgcmVxdWlyZWQgaW4gYWRkaXRpb24gdG8gYSBnZW5lcmljIExpbnV4IHNvZnR3YXJlIHN0YWNrIGZvciBib3RoCisgICAgZXNzZW50aWFsIGFuZCBvcHRpb25hbCBwbGF0Zm9ybSBmZWF0dXJlcy4KKzwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgZ3VpZGUgcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgQlNQIExheWVycywgZGVmaW5lcyBhIHN0cnVjdHVyZSBmb3IgY29tcG9uZW50cwotICAgICAgICAgICAgc28gdGhhdCBCU1BzIGZvbGxvdyBhIGNvbW1vbmx5IHVuZGVyc3Rvb2QgbGF5b3V0LCBkaXNjdXNzZXMgaG93IHRvIGN1c3RvbWl6ZQotICAgICAgICAgICAgYSByZWNpcGUgZm9yIGEgQlNQLCBhZGRyZXNzZXMgQlNQIGxpY2Vuc2luZywgYW5kIHByb3ZpZGVzIGluZm9ybWF0aW9uIHRoYXQKLSAgICAgICAgICAgIHNob3dzIHlvdSBob3cgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgYQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnNwLWxheWVycyc+QlNQIExheWVyPC9saW5rPiB1c2luZyB0d28gWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndXNpbmctdGhlLXlvY3RvLXByb2plY3RzLWJzcC10b29scyc+QlNQIFRvb2xzPC9saW5rPi4KLSAgICAgICAgPC9wYXJhPgorPHBhcmE+CisgICAgVGhpcyBndWlkZSBwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBCU1AgTGF5ZXJzLCBkZWZpbmVzIGEgc3RydWN0dXJlIGZvciBjb21wb25lbnRzCisgICAgc28gdGhhdCBCU1BzIGZvbGxvdyBhIGNvbW1vbmx5IHVuZGVyc3Rvb2QgbGF5b3V0LCBkaXNjdXNzZXMgaG93IHRvIGN1c3RvbWl6ZQorICAgIGEgcmVjaXBlIGZvciBhIEJTUCwgYWRkcmVzc2VzIEJTUCBsaWNlbnNpbmcsIGFuZCBwcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0CisgICAgc2hvd3MgeW91IGhvdyB0byBjcmVhdGUgYQorICAgIDxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBMYXllcjwvbGluaz4gdXNpbmcgdGhlCisgICAgPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPjxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+PC9saW5rPgorICAgIHRvb2wuCis8L3BhcmE+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J2JzcC1sYXllcnMnPgotICAgICAgICAgICAgPHRpdGxlPkJTUCBMYXllcnM8L3RpdGxlPgorPHNlY3Rpb24gaWQ9J2JzcC1sYXllcnMnPgorICAgIDx0aXRsZT5CU1AgTGF5ZXJzPC90aXRsZT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQSBCU1AgY29uc2lzdHMgb2YgYSBmaWxlIHN0cnVjdHVyZSBpbnNpZGUgYSBiYXNlIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICBDb2xsZWN0aXZlbHksIHlvdSBjYW4gdGhpbmsgb2YgdGhlIGJhc2UgZGlyZWN0b3J5LCBpdHMgZmlsZSBzdHJ1Y3R1cmUsCi0gICAgICAgICAgICAgICAgYW5kIHRoZSBjb250ZW50cyBhcyBhIEJTUCBMYXllci4KLSAgICAgICAgICAgICAgICBBbHRob3VnaCBub3QgYSBzdHJpY3QgcmVxdWlyZW1lbnQsIGxheWVycyBpbiB0aGUgWW9jdG8gUHJvamVjdCB1c2UgdGhlCi0gICAgICAgICAgICAgICAgZm9sbG93aW5nIHdlbGwtZXN0YWJsaXNoZWQgbmFtaW5nIGNvbnZlbnRpb246Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFRoZSBzdHJpbmcgIm1ldGEtIiBpcyBwcmVwZW5kZWQgdG8gdGhlIG1hY2hpbmUgb3IgcGxhdGZvcm0gbmFtZSwgd2hpY2ggaXMKLSAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPiBpbiB0aGUgYWJvdmUgZm9ybS4KLSAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgQlNQIGxheWVyIG5hbWluZyBjb252ZW50aW9uIGlzIHdlbGwtZXN0YWJsaXNoZWQsCi0gICAgICAgICAgICAgICAgICAgIGl0IGlzIGFkdmlzYWJsZSB0byBmb2xsb3cgaXQgd2hlbiBjcmVhdGluZyBsYXllcnMuCi0gICAgICAgICAgICAgICAgICAgIFRlY2huaWNhbGx5IHNwZWFraW5nLCBhIEJTUCBsYXllciBuYW1lIGRvZXMgbm90IG5lZWQgdG8KLSAgICAgICAgICAgICAgICAgICAgc3RhcnQgd2l0aCA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IG1pZ2h0IHJ1biBpbnRvIHNpdHVhdGlvbnMgd2hlcmUgb2JzY3VyZQotICAgICAgICAgICAgICAgICAgICBzY3JpcHRzIGFzc3VtZSB0aGlzIGNvbnZlbnRpb24uCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgICBBIEJTUCBjb25zaXN0cyBvZiBhIGZpbGUgc3RydWN0dXJlIGluc2lkZSBhIGJhc2UgZGlyZWN0b3J5LgorICAgICAgICBDb2xsZWN0aXZlbHksIHlvdSBjYW4gdGhpbmsgb2YgdGhlIGJhc2UgZGlyZWN0b3J5LCBpdHMgZmlsZSBzdHJ1Y3R1cmUsCisgICAgICAgIGFuZCB0aGUgY29udGVudHMgYXMgYSBCU1AgTGF5ZXIuCisgICAgICAgIEFsdGhvdWdoIG5vdCBhIHN0cmljdCByZXF1aXJlbWVudCwgQlNQIGxheWVycyBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICB1c2UgdGhlIGZvbGxvd2luZyB3ZWxsLWVzdGFibGlzaGVkIG5hbWluZyBjb252ZW50aW9uOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIFRoZSBzdHJpbmcgIm1ldGEtIiBpcyBwcmVwZW5kZWQgdG8gdGhlIG1hY2hpbmUgb3IgcGxhdGZvcm0gbmFtZSwgd2hpY2ggaXMKKyAgICAgICAgPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPiBpbiB0aGUgYWJvdmUgZm9ybS4KKyAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICBCZWNhdXNlIHRoZSBCU1AgbGF5ZXIgbmFtaW5nIGNvbnZlbnRpb24gaXMgd2VsbC1lc3RhYmxpc2hlZCwKKyAgICAgICAgICAgIGl0IGlzIGFkdmlzYWJsZSB0byBmb2xsb3cgaXQgd2hlbiBjcmVhdGluZyBsYXllcnMuCisgICAgICAgICAgICBUZWNobmljYWxseSBzcGVha2luZywgYSBCU1AgbGF5ZXIgbmFtZSBkb2VzIG5vdCBuZWVkIHRvCisgICAgICAgICAgICBzdGFydCB3aXRoIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgSG93ZXZlciwgdmFyaW91cyBzY3JpcHRzIGFuZCB0b29scyBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYXNzdW1lIHRoaXMgY29udmVudGlvbi4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gaGVscCB1bmRlcnN0YW5kIHRoZSBCU1AgbGF5ZXIgY29uY2VwdCwgY29uc2lkZXIgdGhlIEJTUHMgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIGFuZCBwcm92aWRlcyB3aXRoIGVhY2ggcmVsZWFzZS4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgbGF5ZXJzIGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgotICAgICAgICAgICAgICAgIHRocm91Z2ggYSB3ZWIgaW50ZXJmYWNlIGF0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2knPjwvdWxpbms+LgotICAgICAgICAgICAgICAgIElmIHlvdSBnbyB0byB0aGF0IGludGVyZmFjZSwgeW91IHdpbGwgZmluZCBuZWFyIHRoZSBib3R0b20gb2YgdGhlIGxpc3QKLSAgICAgICAgICAgICAgICB1bmRlciAiWW9jdG8gTWV0YWRhdGEgTGF5ZXJzIiBzZXZlcmFsIEJTUCBsYXllcnMgYWxsIG9mIHdoaWNoIGFyZQotICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCAoZS5nLiA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgIEVhY2ggb2YgdGhlc2UgbGF5ZXJzIGlzIGEgcmVwb3NpdG9yeSB1bnRvIGl0c2VsZiBhbmQgY2xpY2tpbmcgb24gYQotICAgICAgICAgICAgICAgIGxheWVyIHJldmVhbHMgaW5mb3JtYXRpb24gdGhhdCBpbmNsdWRlcyB0d28gbGlua3MgZnJvbSB3aGljaCB5b3UgY2FuIGNob29zZQotICAgICAgICAgICAgICAgIHRvIHNldCB1cCBhIGNsb25lIG9mIHRoZSBsYXllcidzIHJlcG9zaXRvcnkgb24geW91ciBsb2NhbCBob3N0IHN5c3RlbS4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBjbG9uZXMgdGhlIFJhc3BiZXJyeSBQaSBCU1AgbGF5ZXI6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIDxwYXJhPgorICAgICAgICBUbyBoZWxwIHVuZGVyc3RhbmQgdGhlIEJTUCBsYXllciBjb25jZXB0LCBjb25zaWRlciB0aGUgQlNQcyB0aGF0IHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIGFuZCBwcm92aWRlcyB3aXRoIGVhY2ggcmVsZWFzZS4KKyAgICAgICAgWW91IGNhbiBzZWUgdGhlIGxheWVycyBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyN5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgdGhyb3VnaCBhIHdlYiBpbnRlcmZhY2UgYXQKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz48L3VsaW5rPi4KKyAgICAgICAgSWYgeW91IGdvIHRvIHRoYXQgaW50ZXJmYWNlLCB5b3Ugd2lsbCBmaW5kIGEgbGlzdCBvZiByZXBvc2l0b3JpZXMKKyAgICAgICAgdW5kZXIgIllvY3RvIE1ldGFkYXRhIExheWVycyIuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgTGF5ZXJzIHRoYXQgYXJlIG5vIGxvbmdlciBhY3RpdmVseSBzdXBwb3J0ZWQgYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgYXBwZWFyIHVuZGVyIHRoZSBoZWFkaW5nICJZb2N0byBNZXRhZGF0YSBMYXllcgorICAgICAgICAgICAgQXJjaGl2ZS4iCisgICAgICAgIDwvbm90ZT4KKyAgICAgICAgRWFjaCByZXBvc2l0b3J5IGlzIGEgQlNQIGxheWVyIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IGFuZAorICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+KS4KKyAgICAgICAgRWFjaCBvZiB0aGVzZSBsYXllcnMgaXMgYSByZXBvc2l0b3J5IHVudG8gaXRzZWxmIGFuZCBjbGlja2luZyBvbiBhCisgICAgICAgIGxheWVyIHJldmVhbHMgaW5mb3JtYXRpb24gdGhhdCBpbmNsdWRlcyB0d28gbGlua3MgZnJvbSB3aGljaCB5b3UgY2FuIGNob29zZQorICAgICAgICB0byBzZXQgdXAgYSBjbG9uZSBvZiB0aGUgbGF5ZXIncyByZXBvc2l0b3J5IG9uIHlvdXIgbG9jYWwgaG9zdCBzeXN0ZW0uCisgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGNsb25lcyB0aGUgUmFzcGJlcnJ5IFBpIEJTUCBsYXllcjoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9tZXRhLXJhc3BiZXJyeXBpCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJbiBhZGRpdGlvbiB0byBCU1AgbGF5ZXJzIG5lYXIgdGhlIGJvdHRvbSBvZiB0aGF0IHJlZmVyZW5jZWQKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3J5LCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllciBpcyBwYXJ0IG9mIHRoZQotICAgICAgICAgICAgICAgIHNoaXBwZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllciBtYWludGFpbnMgc2V2ZXJhbAotICAgICAgICAgICAgICAgIEJTUHMgc3VjaCBhcyB0aGUgQmVhZ2xlYm9uZSwgRWRnZVJvdXRlciwgYW5kIGdlbmVyaWMgdmVyc2lvbnMgb2YKLSAgICAgICAgICAgICAgICBib3RoIDMyIGFuZCA2NC1iaXQgSUEgbWFjaGluZXMuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIEluIGFkZGl0aW9uIHRvIEJTUCBsYXllcnMsIHRoZQorICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllciBpcyBwYXJ0IG9mIHRoZQorICAgICAgICBzaGlwcGVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IGxheWVyIG1haW50YWlucyBzZXZlcmFsCisgICAgICAgIEJTUHMgc3VjaCBhcyB0aGUgQmVhZ2xlYm9uZSwgRWRnZVJvdXRlciwgYW5kIGdlbmVyaWMgdmVyc2lvbnMgb2YKKyAgICAgICAgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBJQSBtYWNoaW5lcy4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgQlNQIGRldmVsb3BtZW50IHdvcmtmbG93LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RldmVsb3BpbmctYS1ib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwJz5EZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYSBsb2NhbCBjb3B5IG9mIHNvdXJjZSBmaWxlcwotICAgICAgICAgICAgICAgIGZyb20gYSBHaXQgcmVwb3NpdG9yeSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gYWxzbyBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgQlNQIGRldmVsb3BtZW50IHdvcmtmbG93LCBzZWUgdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXZlbG9waW5nLWEtYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcCc+RGV2ZWxvcGluZyBhIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKTwvbGluaz4iCisgICAgICAgIHNlY3Rpb24uCisgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYSBsb2NhbCBjb3B5IG9mIHNvdXJjZSBmaWxlcworICAgICAgICBmcm9tIGEgR2l0IHJlcG9zaXRvcnksIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2xvY2F0aW5nLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz5Mb2NhdGluZyBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBsYXllcidzIGJhc2UgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgaXMgdGhlIHJvb3Qgb2YgdGhlIEJTUCBMYXllci4KLSAgICAgICAgICAgICAgICBUaGlzIHJvb3QgaXMgd2hhdCB5b3UgYWRkIHRvIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkxBWUVSUyc+PGZpbGVuYW1lPkJCTEFZRVJTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAotICAgICAgICAgICAgICAgIHdoaWNoIGlzIGVzdGFibGlzaGVkIGFmdGVyIHlvdSBydW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgIHNldHVwIHNjcmlwdCAoaS5lLgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPikuCi0gICAgICAgICAgICAgICAgQWRkaW5nIHRoZSByb290IGFsbG93cyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byByZWNvZ25pemUgdGhlIEJTUAotICAgICAgICAgICAgICAgIGRlZmluaXRpb24gYW5kIGZyb20gaXQgYnVpbGQgYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGxheWVyJ3MgYmFzZSBkaXJlY3RvcnkKKyAgICAgICAgKDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPikKKyAgICAgICAgaXMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBCU1AgTGF5ZXIuCisgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIHdoYXQgeW91IGFkZCB0byB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCTEFZRVJTJz48ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgd2hpY2ggaXMgZXN0YWJsaXNoZWQgYWZ0ZXIgeW91IHJ1biB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50CisgICAgICAgIHNldHVwIHNjcmlwdCAoaS5lLgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4pLgorICAgICAgICBBZGRpbmcgdGhlIHJvb3QgZGlyZWN0b3J5IGFsbG93cyB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPgorICAgICAgICB0byByZWNvZ25pemUgdGhlIEJTUCBsYXllciBhbmQgZnJvbSBpdCBidWlsZCBhbiBpbWFnZS4KKyAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJCTEFZRVJTID89ICIgXAogICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEgXAogICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEtcG9reSBcCiAgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS15b2N0by1ic3AgXAogICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEtbXlsYXllciBcCiAgICAgICAgIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgIE9yZGVyaW5nIGFuZAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QUklPUklUWSc+PGZpbGVuYW1lPkJCRklMRV9QUklPUklUWTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIGZvciB0aGUgbGF5ZXJzIGxpc3RlZCBpbiA8ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgbWF0dGVyLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIG11bHRpcGxlIGxheWVycyBkZWZpbmUgYSBtYWNoaW5lCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICB0aGUgbGFzdCBsYXllciBzZWFyY2hlZCBnaXZlbiBzaW1pbGFyIGxheWVyCisgICAgICAgICAgICBwcmlvcml0aWVzLgorICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB3b3JrcyBmcm9tIHRoZSB0b3AtZG93biB0aHJvdWdoCisgICAgICAgICAgICB0aGUgbGF5ZXJzIGxpc3RlZCBpbiA8ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgU29tZSBCU1BzIHJlcXVpcmUgYWRkaXRpb25hbCBsYXllcnMgb24KLSAgICAgICAgICAgICAgICB0b3Agb2YgdGhlIEJTUCdzIHJvb3QgbGF5ZXIgaW4gb3JkZXIgdG8gYmUgZnVuY3Rpb25hbC4KLSAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdSBhbHNvIG5lZWQgdG8gYWRkIHRob3NlIGxheWVycyB0byB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiBvcmRlciB0byBidWlsZCB0aGUgQlNQLgotICAgICAgICAgICAgICAgIFlvdSBtdXN0IGFsc28gc3BlY2lmeSBpbiB0aGUgIkRlcGVuZGVuY2llcyIgc2VjdGlvbiBvZiB0aGUgQlNQJ3MKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZSBhbnkgcmVxdWlyZW1lbnRzIGZvciBhZGRpdGlvbmFsCi0gICAgICAgICAgICAgICAgbGF5ZXJzIGFuZCwgcHJlZmVyYWJseSwgYW55Ci0gICAgICAgICAgICAgICAgYnVpbGQgaW5zdHJ1Y3Rpb25zIHRoYXQgbWlnaHQgYmUgY29udGFpbmVkIGVsc2V3aGVyZQotICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgICAgU29tZSBCU1BzIHJlcXVpcmUgb3IgZGVwZW5kIG9uIGFkZGl0aW9uYWwgbGF5ZXJzCisgICAgICAgIGJleW9uZCB0aGUgQlNQJ3Mgcm9vdCBsYXllciBpbiBvcmRlciB0byBiZSBmdW5jdGlvbmFsLgorICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlc2UgbGF5ZXJzIGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gIkRlcGVuZGVuY2llcyIgc2VjdGlvbiBvZiB0aGUKKyAgICAgICAgQlNQJ3Mgcm9vdCBsYXllci4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBpZiBhbnkgYnVpbGQgaW5zdHJ1Y3Rpb25zIGV4aXN0IGZvciB0aGUKKyAgICAgICAgQlNQLCB5b3UgbXVzdCBhZGQgdGhlbSB0byB0aGUgIkRlcGVuZGVuY2llcyIgc2VjdGlvbi4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFNvbWUgbGF5ZXJzIGZ1bmN0aW9uIGFzIGEgbGF5ZXIgdG8gaG9sZCBvdGhlciBCU1AgbGF5ZXJzLgotICAgICAgICAgICAgICAgIEFuIGV4YW1wbGUgb2YgdGhpcyB0eXBlIG9mIGxheWVyIGlzIHRoZSA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyLAotICAgICAgICAgICAgICAgIHdoaWNoIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGluZGl2aWR1YWwgQlNQIHN1Yi1sYXllcnMsIGFzIHdlbGwgYXMgYSBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+Y29tbW9uLzwvZmlsZW5hbWU+IGZ1bGwgb2YgY29tbW9uIGNvbnRlbnQgYWNyb3NzIHRob3NlIGxheWVycy4KLSAgICAgICAgICAgICAgICBBbm90aGVyIGV4YW1wbGUgaXMgdGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IGxheWVyIG1lbnRpb25lZAotICAgICAgICAgICAgICAgIGVhcmxpZXIuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIFNvbWUgbGF5ZXJzIGZ1bmN0aW9uIGFzIGEgbGF5ZXIgdG8gaG9sZCBvdGhlciBCU1AgbGF5ZXJzLgorICAgICAgICBUaGVzZSBsYXllcnMgYXJlIGtub3dzIGFzCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN0ZXJtLWNvbnRhaW5lci1sYXllcic+Y29udGFpbmVyIGxheWVyczwvdWxpbms+Ii4KKyAgICAgICAgQW4gZXhhbXBsZSBvZiB0aGlzIHR5cGUgb2YgbGF5ZXIgaXMgdGhlCisgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbGF5ZXIuCisgICAgICAgIFRoaXMgbGF5ZXIgY29udGFpbnMgQlNQIGxheWVycyBmb3IgdGhlIEludGVsLWNvcmUyLTMyCisgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IENvbW1vbiBDb3JlCisgICAgICAgIChJbnRlbC1jb3JlMi0zMikgYW5kIHRoZSBJbnRlbC1jb3JlaTctNjQKKyAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+SW50ZWw8L3RyYWRlbWFyaz4gQ29tbW9uIENvcmUKKyAgICAgICAgKEludGVsLWNvcmVpNy02NCkuCisgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyIGFsc28gY29udGFpbnMKKyAgICAgICAgdGhlIDxmaWxlbmFtZT5jb21tb24vPC9maWxlbmFtZT4gZGlyZWN0b3J5LCB3aGljaCBjb250YWlucworICAgICAgICBjb21tb24gY29udGVudCBhY3Jvc3MgdGhvc2UgbGF5ZXJzLgorICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gbGF5ZXJzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KKyAgICA8cGFyYT4KKyAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J3ByZXBhcmluZy15b3VyLWJ1aWxkLWhvc3QtdG8td29yay13aXRoLWJzcC1sYXllcnMnPgotICAgICAgICAgICAgPHRpdGxlPlByZXBhcmluZyBZb3VyIEJ1aWxkIEhvc3QgdG8gV29yayBXaXRoIEJTUCBMYXllcnM8L3RpdGxlPgorPHNlY3Rpb24gaWQ9J3ByZXBhcmluZy15b3VyLWJ1aWxkLWhvc3QtdG8td29yay13aXRoLWJzcC1sYXllcnMnPgorICAgIDx0aXRsZT5QcmVwYXJpbmcgWW91ciBCdWlsZCBIb3N0IHRvIFdvcmsgV2l0aCBCU1AgTGF5ZXJzPC90aXRsZT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gZ2V0IHlvdXIgYnVpbGQgaG9zdCByZWFkeQotICAgICAgICAgICAgICAgIHRvIHdvcmsgd2l0aCBCU1AgbGF5ZXJzLgotICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdGhlIGhvc3Qgc2V0IHVwLCB5b3UgY2FuIGNyZWF0ZSB0aGUgbGF5ZXIKLSAgICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUteW9jdG8tYnNwLXNjcmlwdCc+Q3JlYXRpbmcgYSBuZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBGb3Igc3RydWN0dXJhbCBpbmZvcm1hdGlvbiBvbiBCU1BzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JzcC1maWxlbGF5b3V0Jz5FeGFtcGxlIEZpbGVzeXN0ZW0gTGF5b3V0PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gZ2V0IHlvdXIgYnVpbGQgaG9zdCByZWFkeQorICAgICAgICB0byB3b3JrIHdpdGggQlNQIGxheWVycy4KKyAgICAgICAgT25jZSB5b3UgaGF2ZSB0aGUgaG9zdCBzZXQgdXAsIHlvdSBjYW4gY3JlYXRlIHRoZSBsYXllcgorICAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBuZXcgQlNQIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L2xpbms+IgorICAgICAgICBzZWN0aW9uLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIEZvciBzdHJ1Y3R1cmFsIGluZm9ybWF0aW9uIG9uIEJTUHMsIHNlZSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JzcC1maWxlbGF5b3V0Jz5FeGFtcGxlIEZpbGVzeXN0ZW0gTGF5b3V0PC9saW5rPgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9ub3RlPgorICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBhcmUgc2V0IHVwIHRvIHVzZSBCaXRCYWtlIGluIGEgc2hlbGwuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgb24gaG93IHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdGhhdCBpcyBlaXRoZXIgYSBuYXRpdmUKKyAgICAgICAgICAgICAgICBMaW51eCBtYWNoaW5lIG9yIGEgbWFjaGluZSB0aGF0IHVzZXMgQ1JPUFMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsb25lIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBoYXZlIGEgbG9jYWwgY29weSBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIChpLmUuIGEgbG9jYWwgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5KS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+Q2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5PC91bGluaz4iCisgICAgICAgICAgICAgICAgYW5kIHBvc3NpYmx5IHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjaGVja2luZy1vdXQtYnktYnJhbmNoLWluLXBva3knPkNoZWNraW5nIE91dCBieSBCcmFuY2ggaW4gUG9reTwvdWxpbms+IgorICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+Q2hlY2tpbmcgT3V0IGJ5IFRhZyBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbnMgYWxsIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBjaGVjayBvdXQgdGhlIGFwcHJvcHJpYXRlIGJyYW5jaCBmb3IgeW91ciB3b3JrLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgdGhlIEJTUCBMYXllciBZb3UgV2FudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIG1hbnkgQlNQcywgd2hpY2ggYXJlIG1haW50YWluZWQgaW4KKyAgICAgICAgICAgICAgICB0aGVpciBvd24gbGF5ZXJzIG9yIGluIGxheWVycyBkZXNpZ25lZCB0byBjb250YWluIHNldmVyYWwKKyAgICAgICAgICAgICAgICBCU1BzLgorICAgICAgICAgICAgICAgIFRvIGdldCBhbiBpZGVhIG9mIG1hY2hpbmUgc3VwcG9ydCB0aHJvdWdoIEJTUCBsYXllcnMsIHlvdSBjYW4KKyAgICAgICAgICAgICAgICBsb29rIGF0IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX0RMX1VSTDsvbWFjaGluZXMnPmluZGV4IG9mIG1hY2hpbmVzPC91bGluaz4KKyAgICAgICAgICAgICAgICBmb3IgdGhlIHJlbGVhc2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgQ2xvbmUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBCU1AgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIGhhcmR3YXJlIGlzIGJhc2VkIG9uIGN1cnJlbnQgSW50ZWwgQ1BVcyBhbmQgZGV2aWNlcywKKyAgICAgICAgICAgICAgICB5b3UgY2FuIGxldmVyYWdlIHRoaXMgQlNQIGxheWVyLgorICAgICAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIHRoZSA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IEJTUCBsYXllciwKKyAgICAgICAgICAgICAgICBzZWUgdGhlIGxheWVyJ3MKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9tZXRhLWludGVsL3RyZWUvUkVBRE1FJz48ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGZpbGUuCiAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB5b3UgYXJlIHNldCB1cCB0byB1c2UgQml0QmFrZSBpbiBhIHNoZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdGhlLWRldmVsb3BtZW50LWhvc3QtdG8tdXNlLXRoZS15b2N0by1wcm9qZWN0Jz5TZXR0aW5nIFVwIHRoZSBEZXZlbG9wbWVudCBIb3N0IHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIGluZm9ybWF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBvbiBob3cgdG8gZ2V0IGEgYnVpbGQgaG9zdCByZWFkeSB0aGF0IGlzIGVpdGhlciBhIG5hdGl2ZQotICAgICAgICAgICAgICAgICAgICAgICAgTGludXggbWFjaGluZSBvciBhIG1hY2hpbmUgdGhhdCB1c2VzIENST1BTLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbG9uZSB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBoYXZlIGEgbG9jYWwgY29weSBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk5hdmlnYXRlIHRvIFlvdXIgU291cmNlIERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3Ugc2V0IHVwIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiBhIGxvY2FsIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSkuCi0gICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2xvbmluZy10aGUtcG9reS1yZXBvc2l0b3J5Jz5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwb3NzaWJseSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjaGVja2luZy1vdXQtYnktYnJhbmNoLWluLXBva3knPkNoZWNraW5nIE91dCBieSBCcmFuY2ggaW4gUG9reTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2hlY2tvdXQtb3V0LWJ5LXRhZy1pbi1wb2t5Jz5DaGVja2luZyBPdXQgYnkgVGFnIGluIFBva3k8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zIGFsbCBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYW5kIGNoZWNrIG91dCB0aGUgYXBwcm9wcmlhdGUgYnJhbmNoIGZvciB5b3VyIHdvcmsuCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCAvaG9tZS88cmVwbGFjZWFibGU+eW91PC9yZXBsYWNlYWJsZT4vcG9reQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgdGhlIEJTUCBMYXllciBZb3UgV2FudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgbWFueSBCU1BzLCB3aGljaCBhcmUgbWFpbnRhaW5lZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgdGhlaXIgb3duIGxheWVycyBvciBpbiBsYXllcnMgZGVzaWduZWQgdG8gY29udGFpbiBzZXZlcmFsCi0gICAgICAgICAgICAgICAgICAgICAgICBCU1BzLgotICAgICAgICAgICAgICAgICAgICAgICAgVG8gZ2V0IGFuIGlkZWEgb2YgbWFjaGluZSBzdXBwb3J0IHRocm91Z2ggQlNQIGxheWVycywgeW91IGNhbgotICAgICAgICAgICAgICAgICAgICAgICAgbG9vayBhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX0RMX1VSTDsvbWFjaGluZXMnPmluZGV4IG9mIG1hY2hpbmVzPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBDbG9uZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gQlNQIExheWVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGhhcmR3YXJlIGlzIGJhc2VkIG9uIGN1cnJlbnQgSW50ZWwgQ1BVcyBhbmQgZGV2aWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gbGV2ZXJhZ2UgdGhpcyBCU1AgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBCU1AgbGF5ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIGxheWVyJ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL21ldGEtaW50ZWwvdHJlZS9SRUFETUUnPjxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk5hdmlnYXRlIHRvIFlvdXIgU291cmNlIERpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHlvdSBzZXQgdXAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsb25lIHRoZSBMYXllcjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgdGhlIExheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL21ldGEtaW50ZWwuZ2l0CiAgICAgIENsb25pbmcgaW50byAnbWV0YS1pbnRlbCcuLi4KLSAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiAxNDIyNCwgZG9uZS4KLSAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg0NTkxLzQ1OTEpLCBkb25lLgotICAgICByZW1vdGU6IFRvdGFsIDE0MjI0IChkZWx0YSA4MjQ1KSwgcmV1c2VkIDEzOTg1IChkZWx0YSA4MDA2KQotICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoMTQyMjQvMTQyMjQpLCA0LjI5IE1pQiB8IDIuOTAgTWlCL3MsIGRvbmUuCi0gICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDgyNDUvODI0NSksIGRvbmUuCi0gICAgIENoZWNraW5nIGNvbm5lY3Rpdml0eS4uLiBkb25lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrIE91dCB0aGUgUHJvcGVyIEJyYW5jaDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnJhbmNoIHlvdSBjaGVjayBvdXQgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbXVzdCBtYXRjaCB0aGUgc2FtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2ggeW91IGFyZSB1c2luZyBmb3IgdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAmRElTVFJPX05BTUVfTk9fQ0FQOyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgY2hlY2tvdXQgPHJlcGxhY2VhYmxlPmJyYW5jaF9uYW1lPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvbiBob3cgdG8gZGlzY292ZXIgYnJhbmNoIG5hbWVzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja291dCBvbiBhIGJyYW5jaCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2hlY2tpbmctb3V0LWJ5LWJyYW5jaC1pbi1wb2t5Jz5DaGVja2luZyBPdXQgQnkgQnJhbmNoIGluIFBva3k8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBTZXQgVXAgYW4gQWx0ZXJuYXRpdmUgQlNQIExheWVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGhhcmR3YXJlIGNhbiBiZSBtb3JlIGNsb3NlbHkgbGV2ZXJhZ2VkIHRvIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZyBCU1Agbm90IHdpdGhpbiB0aGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgQlNQIGxheWVyLCB5b3UgY2FuIGNsb25lIHRoYXQgQlNQIGxheWVyLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHByb2Nlc3MgaXMgaWRlbnRpY2FsIHRvIHRoZSBwcm9jZXNzIHVzZWQgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllciBleGNlcHQgZm9yIHRoZSBsYXllcidzCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkZXRlcm1pbmUgdGhhdCB5b3VyIGhhcmR3YXJlIG1vc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlbHkgbWF0Y2hlcyB0aGUgPGZpbGVuYW1lPm1ldGEtbWlubm93PC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZSB0aGF0IGxheWVyOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9tZXRhLW1pbm5vdwotICAgICBDbG9uaW5nIGludG8gJ21ldGEtbWlubm93Jy4uLgotICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDQ1NiwgZG9uZS4KLSAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICgyODMvMjgzKSwgZG9uZS4KLSAgICAgcmVtb3RlOiBUb3RhbCA0NTYgKGRlbHRhIDE2MyksIHJldXNlZCAzODQgKGRlbHRhIDkxKQotICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoNDU2LzQ1NiksIDk2Ljc0IEtpQiB8IDAgYnl0ZXMvcywgZG9uZS4KLSAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoMTYzLzE2MyksIGRvbmUuCisgICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogMTU1ODUsIGRvbmUuCisgICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoNTA1Ni81MDU2KSwgZG9uZS4KKyAgICAgcmVtb3RlOiBUb3RhbCAxNTU4NSAoZGVsdGEgOTEyMyksIHJldXNlZCAxNTMyOSAoZGVsdGEgODg2NykKKyAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDE1NTg1LzE1NTg1KSwgNC41MSBNaUIgfCAzLjE5IE1pQi9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICg5MTIzLzkxMjMpLCBkb25lLgogICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5pdGlhbGl6ZSB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgU291cmNlIERpcmVjdG9yeSAoaS5lLgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiksIHJ1biB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IHRvIGRlZmluZSB0aGUgT3BlbkVtYmVkZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBlbnZpcm9ubWVudCBvbiB5b3VyIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgT3V0IHRoZSBQcm9wZXIgQnJhbmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnJhbmNoIHlvdSBjaGVjayBvdXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IG11c3QgbWF0Y2ggdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCB5b3UgYXJlIHVzaW5nIGZvciB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAmRElTVFJPX05BTUVfTk9fQ0FQOyk6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc291cmNlICZPRV9JTklUX0ZJTEU7CisgICAgICQgY2QgbWV0YS1pbnRlbAorICAgICAkIGdpdCBjaGVja291dCAtYiAmRElTVFJPX05BTUVfTk9fQ0FQOyByZW1vdGVzL29yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOworICAgICBCcmFuY2ggJkRJU1RST19OQU1FX05PX0NBUDsgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJkRJU1RST19OQU1FX05PX0NBUDsgZnJvbSBvcmlnaW4uCisgICAgIFN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnJkRJU1RST19OQU1FX05PX0NBUDsnCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoZSBzY3JpcHQgY3JlYXRlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBpbiB0aGlzIGNhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpcyBsb2NhdGVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHNjcmlwdCBydW5zLCB5b3VyIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byB0aGUgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG8gc2VlIHRoZSBhdmFpbGFibGUgYnJhbmNoIG5hbWVzIGluIGEgY2xvbmVkIHJlcG9zaXRvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlIHRoZSA8ZmlsZW5hbWU+Z2l0IGJyYW5jaCAtYWw8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2hlY2tpbmctb3V0LWJ5LWJyYW5jaC1pbi1wb2t5Jz5DaGVja2luZyBPdXQgQnkgQnJhbmNoIGluIFBva3k8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IFNldCBVcCBhbiBBbHRlcm5hdGl2ZSBCU1AgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIGhhcmR3YXJlIGNhbiBiZSBtb3JlIGNsb3NlbHkgbGV2ZXJhZ2VkIHRvIGFuCisgICAgICAgICAgICAgICAgZXhpc3RpbmcgQlNQIG5vdCB3aXRoaW4gdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBCU1AgbGF5ZXIsIHlvdSBjYW4gY2xvbmUgdGhhdCBCU1AgbGF5ZXIuPC9wYXJhPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSJic3AtZmlsZWxheW91dCI+Ci0gICAgICAgICAgICA8dGl0bGU+RXhhbXBsZSBGaWxlc3lzdGVtIExheW91dDwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIERlZmluaW5nIGEgY29tbW9uIEJTUCBkaXJlY3Rvcnkgc3RydWN0dXJlIGFsbG93cyBlbmQtdXNlcnMgdG8gdW5kZXJzdGFuZCBhbmQKLSAgICAgICAgICAgICAgICBiZWNvbWUgZmFtaWxpYXIgd2l0aCB0aGF0IHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICBBIGNvbW1vbiBmb3JtYXQgYWxzbyBlbmNvdXJhZ2VzIHN0YW5kYXJkaXphdGlvbiBvZiBzb2Z0d2FyZSBzdXBwb3J0IG9mIGhhcmR3YXJlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgcHJvcG9zZWQgZm9ybSBkb2VzIGhhdmUgZWxlbWVudHMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlCi0gICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgICAgICBJdCBpcyBpbnRlbmRlZCB0aGF0IHRoaXMgaW5mb3JtYXRpb24gY2FuIGJlCi0gICAgICAgICAgICAgICAgdXNlZCBieSBvdGhlciBidWlsZCBzeXN0ZW1zIGJlc2lkZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICBhbmQgdGhhdCBpdCB3aWxsIGJlIHNpbXBsZQotICAgICAgICAgICAgICAgIHRvIGV4dHJhY3QgaW5mb3JtYXRpb24gYW5kIGNvbnZlcnQgaXQgdG8gb3RoZXIgZm9ybWF0cyBpZiByZXF1aXJlZC4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwgdGhyb3VnaCBpdHMgc3RhbmRhcmQgbGF5ZXJzIG1lY2hhbmlzbSwgY2FuIGRpcmVjdGx5Ci0gICAgICAgICAgICAgICAgYWNjZXB0IHRoZSBmb3JtYXQgZGVzY3JpYmVkIGFzIGEgbGF5ZXIuCi0gICAgICAgICAgICAgICAgVGhlIEJTUCBjYXB0dXJlcyBhbGwKLSAgICAgICAgICAgICAgICB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgZGV0YWlscyBpbiBvbmUgcGxhY2UgaW4gYSBzdGFuZGFyZCBmb3JtYXQsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgdXNlZnVsIGZvciBhbnkgcGVyc29uIHdpc2hpbmcgdG8gdXNlIHRoZSBoYXJkd2FyZSBwbGF0Zm9ybSByZWdhcmRsZXNzIG9mCi0gICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHN5c3RlbSB0aGV5IGFyZSB1c2luZy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIEJTUCBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGluY2x1ZGUgYSBidWlsZCBzeXN0ZW0gb3Igb3RoZXIgdG9vbHMgLQotICAgICAgICAgICAgICAgIGl0IGlzIGNvbmNlcm5lZCB3aXRoIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyBjb21wb25lbnRzIG9ubHkuCi0gICAgICAgICAgICAgICAgQXQgdGhlIGVuZC1kaXN0cmlidXRpb24gcG9pbnQsIHlvdSBjYW4gc2hpcCB0aGUgQlNQIGNvbWJpbmVkIHdpdGggYSBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICBhbmQgb3RoZXIgdG9vbHMuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgaW1wb3J0YW50IHRvIG1haW50YWluIHRoZSBkaXN0aW5jdGlvbiB0aGF0IHRoZXNlCi0gICAgICAgICAgICAgICAgYXJlIHNlcGFyYXRlIGNvbXBvbmVudHMgdGhhdCBoYXBwZW4gdG8gYmUgY29tYmluZWQgaW4gY2VydGFpbiBlbmQgcHJvZHVjdHMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEJlZm9yZSBsb29raW5nIGF0IHRoZSBjb21tb24gZm9ybSBmb3IgdGhlIGZpbGUgc3RydWN0dXJlIGluc2lkZSBhIEJTUCBMYXllciwKLSAgICAgICAgICAgICAgICB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgc29tZSByZXF1aXJlbWVudHMgZG8gZXhpc3QgaW4gb3JkZXIgZm9yIGEgQlNQIHRvCi0gICAgICAgICAgICAgICAgYmUgY29uc2lkZXJlZCBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICBGb3IgdGhhdCBsaXN0IG9mIHJlcXVpcmVtZW50cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWxlYXNlZC1ic3AtcmVxdWlyZW1lbnRzJz5SZWxlYXNlZCBCU1AgUmVxdWlyZW1lbnRzPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCZWxvdyBpcyB0aGUgY29tbW9uIGZvcm0gZm9yIHRoZSBmaWxlIHN0cnVjdHVyZSBpbnNpZGUgYSBCU1AgTGF5ZXIuCi0gICAgICAgICAgICAgICAgV2hpbGUgeW91IGNhbiB1c2UgdGhpcyBiYXNpYyBmb3JtIGZvciB0aGUgc3RhbmRhcmQsIHJlYWxpemUgdGhhdCB0aGUgYWN0dWFsIHN0cnVjdHVyZXMKLSAgICAgICAgICAgICAgICBmb3Igc3BlY2lmaWMgQlNQcyBjb3VsZCBkaWZmZXIuCi0KKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgcHJvY2VzcyBpcyBpZGVudGljYWwgdG8gdGhlIHByb2Nlc3MgdXNlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllciBleGNlcHQgZm9yIHRoZSBsYXllcidzCisgICAgICAgICAgICAgICAgbmFtZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGRldGVybWluZSB0aGF0IHlvdXIgaGFyZHdhcmUgbW9zdAorICAgICAgICAgICAgICAgIGNsb3NlbHkgbWF0Y2hlcyB0aGUgPGZpbGVuYW1lPm1ldGEtcmFzcGJlcnJ5cGk8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICBjbG9uZSB0aGF0IGxheWVyOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi8KLSAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+YnNwX2xpY2Vuc2VfZmlsZTwvcmVwbGFjZWFibGU+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vUkVBRE1FCi0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vUkVBRE1FLnNvdXJjZXMKLSAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi9iaW5hcnkvPHJlcGxhY2VhYmxlPmJvb3RhYmxlX2ltYWdlczwvcmVwbGFjZWFibGU+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vY29uZi9sYXllci5jb25mCi0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vY29uZi9tYWNoaW5lLyouY29uZgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMtYnNwLyoKLSAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWNvcmUvKgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMtZ3JhcGhpY3MvKgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzxyZXBsYWNlYWJsZT5rZXJuZWxfcmV2PC9yZXBsYWNlYWJsZT4uYmJhcHBlbmQKKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbWV0YS1yYXNwYmVycnlwaQorICAgICBDbG9uaW5nIGludG8gJ21ldGEtcmFzcGJlcnJ5cGknLi4uCisgICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogNDc0MywgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICgyMTg1LzIxODUpLCBkb25lLgorICAgICByZW1vdGU6IFRvdGFsIDQ3NDMgKGRlbHRhIDI0NDcpLCByZXVzZWQgNDQ5NiAoZGVsdGEgMjI1OCkKKyAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDQ3NDMvNDc0MyksIDEuMTggTWlCIHwgMCBieXRlcy9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICgyNDQ3LzI0NDcpLCBkb25lLgorICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEJlbG93IGlzIGFuIGV4YW1wbGUgb2YgdGhlIFJhc3BiZXJyeSBQaSBCU1A6Ci0KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5pdGlhbGl6ZSB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBXaGlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIFNvdXJjZSBEaXJlY3RvcnkgKGkuZS4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSwgcnVuIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCB0byBkZWZpbmUgdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgIGJ1aWxkIGVudmlyb25tZW50IG9uIHlvdXIgYnVpbGQgaG9zdC4KICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlICZPRV9JTklUX0ZJTEU7CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gaW4gdGhpcyBjYXNlCisgICAgICAgICAgICAgICAgYW5kIGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgIEFmdGVyIHRoZSBzY3JpcHQgcnVucywgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgaXMgc2V0IHRvIHRoZSA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQiPgorICAgIDx0aXRsZT5FeGFtcGxlIEZpbGVzeXN0ZW0gTGF5b3V0PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBEZWZpbmluZyBhIGNvbW1vbiBCU1AgZGlyZWN0b3J5IHN0cnVjdHVyZSBhbGxvd3MKKyAgICAgICAgZW5kLXVzZXJzIHRvIHVuZGVyc3RhbmQgYW5kIGJlY29tZSBmYW1pbGlhciB3aXRoCisgICAgICAgIHRoYXQgc3RhbmRhcmQuCisgICAgICAgIEEgY29tbW9uIGZvcm1hdCBhbHNvIGVuY291cmFnZXMgc3RhbmRhcmRpemF0aW9uCisgICAgICAgIG9mIHNvZnR3YXJlIHN1cHBvcnQgZm9yIGhhcmR3YXJlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgcHJvcG9zZWQgZm9ybSBkZXNjcmliZWQgaW4gdGhpcyBzZWN0aW9uIGRvZXMKKyAgICAgICAgaGF2ZSBlbGVtZW50cyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgSXQgaXMgaW50ZW5kZWQgdGhhdCBkZXZlbG9wZXJzIGNhbiB1c2UgdGhpcyBzdHJ1Y3R1cmUKKyAgICAgICAgd2l0aCBvdGhlciBidWlsZCBzeXN0ZW1zIGJlc2lkZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICBzeXN0ZW0uCisgICAgICAgIEl0IGlzIGFsc28gaW50ZW5kZWQgdGhhdCBpdCB3aWxsIGJlIGJlIHNpbXBsZSB0byBleHRyYWN0CisgICAgICAgIGluZm9ybWF0aW9uIGFuZCBjb252ZXJ0IGl0IHRvIG90aGVyIGZvcm1hdHMgaWYgcmVxdWlyZWQuCisgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCB0aHJvdWdoIGl0cyBzdGFuZGFyZAorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3RoZS15b2N0by1wcm9qZWN0LWxheWVyLW1vZGVsJz5sYXllcnMgbWVjaGFuaXNtPC91bGluaz4sCisgICAgICAgIGNhbiBkaXJlY3RseSBhY2NlcHQgdGhlIGZvcm1hdCBkZXNjcmliZWQgYXMgYSBsYXllci4KKyAgICAgICAgVGhlIEJTUCBsYXllciBjYXB0dXJlcyBhbGwgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGRldGFpbHMKKyAgICAgICAgaW4gb25lIHBsYWNlIHVzaW5nIGEgc3RhbmRhcmQgZm9ybWF0LCB3aGljaCBpcyB1c2VmdWwKKyAgICAgICAgZm9yIGFueSBwZXJzb24gd2lzaGluZyB0byB1c2UgdGhlIGhhcmR3YXJlIHBsYXRmb3JtCisgICAgICAgIHJlZ2FyZGxlc3Mgb2YgdGhlIGJ1aWxkIHN5c3RlbSB0aGV5IGFyZSB1c2luZy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIEJTUCBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGluY2x1ZGUgYSBidWlsZCBzeXN0ZW0KKyAgICAgICAgb3Igb3RoZXIgdG9vbHMgLSB0aGUgc3BlY2lmaWNhdGlvbiBpcyBjb25jZXJuZWQgd2l0aAorICAgICAgICB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgY29tcG9uZW50cyBvbmx5LgorICAgICAgICBBdCB0aGUgZW5kLWRpc3RyaWJ1dGlvbiBwb2ludCwgeW91IGNhbiBzaGlwIHRoZSBCU1AKKyAgICAgICAgbGF5ZXIgY29tYmluZWQgd2l0aCBhIGJ1aWxkIHN5c3RlbSBhbmQgb3RoZXIgdG9vbHMuCisgICAgICAgIFJlYWxpemUgdGhhdCBpdCBpcyBpbXBvcnRhbnQgdG8gbWFpbnRhaW4gdGhlIGRpc3RpbmN0aW9uCisgICAgICAgIHRoYXQgdGhlIEJTUCBsYXllciwgYSBidWlsZCBzeXN0ZW0sIGFuZCB0b29scyBhcmUKKyAgICAgICAgc2VwYXJhdGUgY29tcG9uZW50cyB0aGF0IGNvdWxkIHRvIGJlIGNvbWJpbmVkIGluCisgICAgICAgIGNlcnRhaW4gZW5kIHByb2R1Y3RzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBCZWZvcmUgbG9va2luZyBhdCB0aGUgY29tbW9uIGZvcm0gZm9yIHRoZSBmaWxlIHN0cnVjdHVyZQorICAgICAgICBpbnNpZGUgYSBCU1AgTGF5ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBzb21lCisgICAgICAgIHJlcXVpcmVtZW50cyBkbyBleGlzdCBpbiBvcmRlciBmb3IgYSBCU1AgbGF5ZXIgdG8KKyAgICAgICAgYmUgY29uc2lkZXJlZCBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgRm9yIHRoYXQgbGlzdCBvZiByZXF1aXJlbWVudHMsIHNlZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlbGVhc2VkLWJzcC1yZXF1aXJlbWVudHMnPlJlbGVhc2VkIEJTUCBSZXF1aXJlbWVudHM8L2xpbms+IgorICAgICAgICBzZWN0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBCZWxvdyBpcyB0aGUgY29tbW9uIGZvcm0gZm9yIHRoZSBmaWxlIHN0cnVjdHVyZQorICAgICAgICBpbnNpZGUgYSBCU1AgTGF5ZXIuCisgICAgICAgIFdoaWxlIHRoaXMgYmFzaWMgZm9ybSByZXByZXNlbnRzIHRoZSBzdGFuZGFyZCwKKyAgICAgICAgcmVhbGl6ZSB0aGF0IHRoZSBhY3R1YWwgZmlsZSBzdHJ1Y3R1cmVzIGZvciBzcGVjaWZpYworICAgICAgICBCU1BzIGNvdWxkIGRpZmZlci4KKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vCisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+YnNwX2xpY2Vuc2VfZmlsZTwvcmVwbGFjZWFibGU+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9SRUFETUUKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L1JFQURNRS5zb3VyY2VzCisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9iaW5hcnkvPHJlcGxhY2VhYmxlPmJvb3RhYmxlX2ltYWdlczwvcmVwbGFjZWFibGU+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9jb25mL2xheWVyLmNvbmYKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L2NvbmYvbWFjaGluZS8qLmNvbmYKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMtYnNwLyoKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMtY29yZS8qCisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWdyYXBoaWNzLyoKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzxyZXBsYWNlYWJsZT5rZXJuZWxfcmV2PC9yZXBsYWNlYWJsZT4uYmJhcHBlbmQKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBCZWxvdyBpcyBhbiBleGFtcGxlIG9mIHRoZSBSYXNwYmVycnkgUGkgQlNQCisgICAgICAgIGxheWVyIHRoYXQgaXMgYXZhaWxhYmxlIGZyb20gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlc3Bvc2l0b3JpZXM8L3VsaW5rPjoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBtZXRhLXJhc3BiZXJyeXBpL0NPUFlJTkcuTUlUCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvUkVBRE1FCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvUkVBRE1FLm1kCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvY2xhc3NlcwotICAgICBtZXRhLXJhc3BiZXJyeXBpL2NsYXNzZXMvbGludXgtcmFzcGJlcnJ5cGktYmFzZS5iYmNsYXNzCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvY2xhc3Nlcy9zZGNhcmRfaW1hZ2UtcnBpLmJiY2xhc3MKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mLwogICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbGF5ZXIuY29uZgogICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS8KKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGktY20uY29uZgorICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaS1jbTMuY29uZgogICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaS5jb25mCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMC13aWZpLmNvbmYKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkwLmNvbmYKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkyLmNvbmYKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLTY0LmNvbmYKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLmNvbmYKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZQogICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1iYXNlLmluYwogICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1kZWZhdWx0LXByb3ZpZGVycy5pbmMKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktZGVmYXVsdC1zZXR0aW5ncy5pbmMKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktZGVmYXVsdC12ZXJzaW9ucy5pbmMKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktdHVuZS1hcm0xMTc2anpmLXMuaW5jCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTc2anpmLXMuaW5jCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvZG9jcworICAgICBtZXRhLXJhc3BiZXJyeXBpL2RvY3MvTWFrZWZpbGUKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9kb2NzL2NvbmYucHkKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9kb2NzL2NvbnRyaWJ1dGluZy5tZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL2RvY3MvZXh0cmEtYXBwcy5tZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL2RvY3MvZXh0cmEtYnVpbGQtY29uZmlnLm1kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvZG9jcy9pbmRleC5yc3QKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9kb2NzL2xheWVyLWNvbnRlbnRzLm1kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvZG9jcy9yZWFkbWUubWQKICAgICAgbWV0YS1yYXNwYmVycnlwaS9maWxlcwogICAgICBtZXRhLXJhc3BiZXJyeXBpL2ZpbGVzL2N1c3RvbS1saWNlbnNlcwogICAgICBtZXRhLXJhc3BiZXJyeXBpL2ZpbGVzL2N1c3RvbS1saWNlbnNlcy9Ccm9hZGNvbQpAQCAtMzc4LDEyICs0MzUsMjYgQEAKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMvcnBpLWNvbmZpZ19naXQuYmIKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9jb21tb24KICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9jb21tb24vZmlybXdhcmUuaW5jCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvZm9ybWZhY3Rvcl8wMC5iYmFwcGVuZAotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvcmFzcGJlcnJ5cGkvbWFjaGNvbmZpZwotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS1ta2ltYWdlX2dpdC5iYgotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS1ta2ltYWdlL0xpY2Vuc2UKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktbWtpbWFnZS9vcGVuLWZpbGVzLXJlbGF0aXZlLXRvLXNjcmlwdC5wYXRjaAotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtcnBpX2dpdC5iYgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IvcmFzcGJlcnJ5cGkKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IvcmFzcGJlcnJ5cGkvbWFjaGNvbmZpZworICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvcl8wLjAuYmJhcHBlbmQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNyYworICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS11LWJvb3Qtc3JjL2ZpbGVzCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvcnBpLXUtYm9vdC1zcmMvZmlsZXMvYm9vdC5jbWQuaW4KKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNyYy9ycGktdS1ib290LXNjci5iYgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3UtYm9vdAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LyoucGF0Y2gKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XyUuYmJhcHBlbmQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eQorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NQorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LyoucGF0Y2gKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L0JDTTQzNDMwQTEuaGNkCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NWJyY200MzQzOC5zZXJ2aWNlCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV8lLmJiYXBwZW5kCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcwogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9pbWFnZXMvcnBpLWJhc2ljLWltYWdlLmJiCkBAIC0zOTMsMzcgKzQ2NCw0MSBAQAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1ycGktdGVzdC5iYgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wc3BsYXNoCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYmFwcGVuZAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtcmFzcGJlcnJ5cGktaW1nLmgKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS91ZGV2CisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1ydWxlcy1ycGkKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LXJ1bGVzLXJwaS85OS1jb20ucnVsZXMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LXJ1bGVzLXJwaS5iYgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL2JjbTI4MzUKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL2JjbTI4MzUvYmNtMjgzNV8xLjQ2LmJiCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9iY20yODM1L2JjbTI4MzVfMS41Mi5iYgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3RlcgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3Rlci9maWxlcwotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3Rlci8qLnBhdGNoCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL3BpLWJsYXN0ZXIuaW5jCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL2ZpbGVzLyoucGF0Y2gKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlcl9naXQuYmIKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ydGltdQogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ydGltdS8qLnBhdGNoCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJ0aW11X2dpdC5iYgotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW5zZS1oYXRfMi4xLjAuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Vuc2UtaGF0XzIuMi4wLmJiCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcnBpLWdwaW8KICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGktZ3Bpby8qLnBhdGNoCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcnBpLWdwaW9fMC42LjEuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGktZ3Bpb18wLjYuMy5iYgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3JwaW8KICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGlvLyoucGF0Y2gKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGlvXzAuMTAuMC5iYgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvd2lyaW5nUGkKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3dpcmluZ1BpL2ZpbGVzCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy93aXJpbmdQaS9maWxlcy8qLnBhdGNoCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy93aXJpbmdQaS93aXJpbmdwaQotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvd2lyaW5nUGkvd2lyaW5ncGkvKi5wYXRjaAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvd2lyaW5nUGkvd2lyaW5ncGlfZ2l0LmJiCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcwogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mbwogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLWZiXyUuYmJhcHBlbmQKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZWdsaW5mby14MTFfJS5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYQorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXyUuYmJhcHBlbmQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8lLmJiYXBwZW5kCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLyoucGF0Y2gKQEAgLTQzNywxOTQgKzUxMiwyMDQgQEAKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3ZjLWdyYXBoaWNzL3ZjLWdyYXBoaWNzLmluYwogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fJS5iYmFwcGVuZAotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3Mvd2VzdG9uCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy93ZXN0b24vd2VzdG9uXyUuYmJhcHBlbmQKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlcgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3JwaQogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcnBpL3hvcmcuY29uZgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcnBpL3hvcmcuY29uZi5kCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9ycGkveG9yZy5jb25mLmQvMTAtZXZkZXYuY29uZgotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcnBpL3hvcmcuY29uZi5kLzk5LXBpdGZ0LmNvbmYKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3JwaS94b3JnLmNvbmYuZC85OC1waXRmdC5jb25mCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9ycGkveG9yZy5jb25mLmQvOTktY2FsaWJyYXRpb24uY29uZgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXyUuYmJhcHBlbmQKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmUKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZS9MSUNFTlNFLmJyb2FkY29tX2JyY204MDIxMQotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlL2JyY21mbWFjNDM0MzAtc2Rpby5iaW4KLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZS9icmNtZm1hYzQzNDMwLXNkaW8udHh0Ci0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiYXBwZW5kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvZmlsZXMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9maWxlcy9icmNtZm1hYzQzNDMwLXNkaW8uYmluCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvZmlsZXMvYnJjZm1hYzQzNDMwLXNkaW8udHh0CisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfJS5iYmFwcGVuZAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4Ci0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGktMy4xNAotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLTMuMTQvKi5wYXRjaAotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLTMuMTgKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS0zLjE4LyoucGF0Y2gKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS00LjEKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS00LjEvKi5wYXRjaAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLWRldi5iYgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLmluYwotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGkvZGVmY29uZmlnCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGlfMy4xNC5iYgotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpXzMuMTguYmIKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjEuYmIKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjQuYmIKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC5pbmMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjE0LmJiCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGlfNC45LmJiCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lcgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC8qLnBhdGNoCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XyUuYmJhcHBlbmQKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8lLmJiYXBwZW5kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8qLnBhdGNoCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllcgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvKi5wYXRjaAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyX2dpdC5iYgotICAgICBtZXRhLXJhc3BiZXJyeXBpL3NjcmlwdHMKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9zY3JpcHRzL2xpYgotICAgICBtZXRhLXJhc3BiZXJyeXBpL3NjcmlwdHMvbGliL2ltYWdlCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvc2NyaXB0cy9saWIvaW1hZ2UvY2FubmVkLXdrcwotICAgICBtZXRhLXJhc3BiZXJyeXBpL3NjcmlwdHMvbGliL2ltYWdlL2Nhbm5lZC13a3Mvc2RpbWFnZS1yYXNwYmVycnlwaS53a3MKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+CisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3dpYworICAgICBtZXRhLXJhc3BiZXJyeXBpL3dpYy9zZGltYWdlLXJhc3BiZXJyeXBpLndrcworICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIGVhY2ggcGFydCBvZiB0aGUgcHJvcG9zZWQgQlNQIGZvcm1hdC4KLSAgICAgICAgICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBkZXNjcmliZSBlYWNoIHBhcnQgb2YgdGhlIHByb3Bvc2VkCisgICAgICAgIEJTUCBmb3JtYXQuCisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtbGljZW5zZSI+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkxpY2Vuc2UgRmlsZXM8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSJic3AtZmlsZWxheW91dC1saWNlbnNlIj4KKyAgICAgICAgPHRpdGxlPkxpY2Vuc2UgRmlsZXM8L3RpdGxlPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBmaWxlcyBpbiB0aGUgQlNQIExheWVyIGF0OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPmJzcF9saWNlbnNlX2ZpbGU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBmaWxlcyBpbiB0aGUgQlNQIExheWVyIGF0OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPmJzcF9saWNlbnNlX2ZpbGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2Ugb3B0aW9uYWwgZmlsZXMgc2F0aXNmeSBsaWNlbnNpbmcgcmVxdWlyZW1lbnRzIGZvciB0aGUgQlNQLgotICAgICAgICAgICAgICAgICAgICBUaGUgdHlwZSBvciB0eXBlcyBvZiBmaWxlcyBoZXJlIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgbGljZW5zaW5nIHJlcXVpcmVtZW50cy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSBSYXNwYmVycnkgUGkgQlNQIGFsbCBsaWNlbnNpbmcgcmVxdWlyZW1lbnRzIGFyZSBoYW5kbGVkIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT1BZSU5HLk1JVDwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZXNlIG9wdGlvbmFsIGZpbGVzIHNhdGlzZnkgbGljZW5zaW5nIHJlcXVpcmVtZW50cworICAgICAgICAgICAgZm9yIHRoZSBCU1AuCisgICAgICAgICAgICBUaGUgdHlwZSBvciB0eXBlcyBvZiBmaWxlcyBoZXJlIGNhbiB2YXJ5IGRlcGVuZGluZworICAgICAgICAgICAgb24gdGhlIGxpY2Vuc2luZyByZXF1aXJlbWVudHMuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AgYWxsIGxpY2Vuc2luZworICAgICAgICAgICAgcmVxdWlyZW1lbnRzIGFyZSBoYW5kbGVkIHdpdGggdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Q09QWUlORy5NSVQ8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgTGljZW5zaW5nIGZpbGVzIGNhbiBiZSBNSVQsIEJTRCwgR1BMdiosIGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgYXJlIHJlY29tbWVuZGVkIGZvciB0aGUgQlNQIGJ1dCBhcmUgb3B0aW9uYWwgYW5kIHRvdGFsbHkgdXAgdG8gdGhlIEJTUCBkZXZlbG9wZXIuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIExpY2Vuc2luZyBmaWxlcyBjYW4gYmUgTUlULCBCU0QsIEdQTHYqLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICBUaGVzZSBmaWxlcyBhcmUgcmVjb21tZW5kZWQgZm9yIHRoZSBCU1AgYnV0IGFyZQorICAgICAgICAgICAgb3B0aW9uYWwgYW5kIHRvdGFsbHkgdXAgdG8gdGhlIEJTUCBkZXZlbG9wZXIuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIG1haW50YWluIGxpY2Vuc2UKKyAgICAgICAgICAgIGNvbXBsaWFuY2UsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5NYWludGFpbmluZyBPcGVuIFNvdXJjZSBMaWNlbnNlIENvbXBsaWFuY2UgRHVyaW5nIFlvdXIgUHJvZHVjdCdzIExpZmVjeWNsZTwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtcmVhZG1lIj4KLSAgICAgICAgICAgICAgICA8dGl0bGU+UkVBRE1FIEZpbGU8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSJic3AtZmlsZWxheW91dC1yZWFkbWUiPgorICAgICAgICA8dGl0bGU+UkVBRE1FIEZpbGU8L3RpdGxlPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIGZpbGUgaW4gdGhlIEJTUCBMYXllciBhdDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L1JFQURNRQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIGZpbGUgaW4gdGhlIEJTUCBMYXllciBhdDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L1JFQURNRQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGhvdyB0byBib290IHRoZSBsaXZlIGltYWdlcyB0aGF0IGFyZSBvcHRpb25hbGx5Ci0gICAgICAgICAgICAgICAgICAgIGluY2x1ZGVkIGluIHRoZSA8ZmlsZW5hbWU+YmluYXJ5LzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGFsc28gcHJvdmlkZXMgc3BlY2lhbCBpbmZvcm1hdGlvbiBuZWVkZWQgZm9yCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGhvdyB0byBib290IHRoZSBsaXZlCisgICAgICAgICAgICBpbWFnZXMgdGhhdCBhcmUgb3B0aW9uYWxseSBpbmNsdWRlZCBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5hcnkvPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGFsc28gcHJvdmlkZXMKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIG5lZWRlZCBmb3IgYnVpbGRpbmcgdGhlIGltYWdlLgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQXQgYSBtaW5pbXVtLCB0aGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgbXVzdAotICAgICAgICAgICAgICAgICAgICBjb250YWluIGEgbGlzdCBvZiBkZXBlbmRlbmNpZXMsIHN1Y2ggYXMgdGhlIG5hbWVzIG9mCi0gICAgICAgICAgICAgICAgICAgIGFueSBvdGhlciBsYXllcnMgb24gd2hpY2ggdGhlIEJTUCBkZXBlbmRzIGFuZCB0aGUgbmFtZSBvZgotICAgICAgICAgICAgICAgICAgICB0aGUgQlNQIG1haW50YWluZXIgd2l0aCBoaXMgb3IgaGVyIGNvbnRhY3QgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEF0IGEgbWluaW11bSwgdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIG11c3QKKyAgICAgICAgICAgIGNvbnRhaW4gYSBsaXN0IG9mIGRlcGVuZGVuY2llcywgc3VjaCBhcyB0aGUgbmFtZXMgb2YKKyAgICAgICAgICAgIGFueSBvdGhlciBsYXllcnMgb24gd2hpY2ggdGhlIEJTUCBkZXBlbmRzIGFuZCB0aGUgbmFtZSBvZgorICAgICAgICAgICAgdGhlIEJTUCBtYWludGFpbmVyIHdpdGggaGlzIG9yIGhlciBjb250YWN0IGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtcmVhZG1lLXNvdXJjZXMiPgotICAgICAgICAgICAgICAgIDx0aXRsZT5SRUFETUUuc291cmNlcyBGaWxlPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtcmVhZG1lLXNvdXJjZXMiPgorICAgICAgICA8dGl0bGU+UkVBRE1FLnNvdXJjZXMgRmlsZTwvdGl0bGU+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgZmlsZSBpbiB0aGUgQlNQIExheWVyIGF0OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vUkVBRE1FLnNvdXJjZXMKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhpcyBmaWxlIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9SRUFETUUuc291cmNlcworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIHdoZXJlIHRvIGxvY2F0ZSB0aGUgQlNQCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZXMgKGlmIGFueSkgdGhhdCByZXNpZGUgaW4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vYmluYXJ5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIEltYWdlcyBpbiB0aGUgPGZpbGVuYW1lPmJpbmFyeTwvZmlsZW5hbWU+IHdvdWxkIGJlIGltYWdlcwotICAgICAgICAgICAgICAgICAgICByZWxlYXNlZCB3aXRoIHRoZSBCU1AuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgPGZpbGVuYW1lPlJFQURNRS5zb3VyY2VzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmlsZSBhbHNvIGhlbHBzIHlvdSBmaW5kIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIGdlbmVyYXRlIHRoZSBpbWFnZXMgdGhhdCBzaGlwIHdpdGggdGhlIEJTUC4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgQlNQJ3MgPGZpbGVuYW1lPmJpbmFyeTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcwotICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZyBvciB0aGUgZGlyZWN0b3J5IGhhcyBubyBpbWFnZXMsIGFuIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FLnNvdXJjZXM8L2ZpbGVuYW1lPiBmaWxlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBtZWFuaW5nbGVzcy4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGZpbGUgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gd2hlcmUgdG8gbG9jYXRlIHRoZSBCU1AKKyAgICAgICAgICAgIHNvdXJjZSBmaWxlcyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZXMgKGlmIGFueSkgdGhhdAorICAgICAgICAgICAgcmVzaWRlIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L2JpbmFyeTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgSW1hZ2VzIGluIHRoZSA8ZmlsZW5hbWU+YmluYXJ5PC9maWxlbmFtZT4gd291bGQgYmUgaW1hZ2VzCisgICAgICAgICAgICByZWxlYXNlZCB3aXRoIHRoZSBCU1AuCisgICAgICAgICAgICBUaGUgaW5mb3JtYXRpb24gaW4gdGhlIDxmaWxlbmFtZT5SRUFETUUuc291cmNlczwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlIGFsc28gaGVscHMgeW91IGZpbmQgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgorICAgICAgICAgICAgdXNlZCB0byBnZW5lcmF0ZSB0aGUgaW1hZ2VzIHRoYXQgc2hpcCB3aXRoIHRoZSBCU1AuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBJZiB0aGUgQlNQJ3MgPGZpbGVuYW1lPmJpbmFyeTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcworICAgICAgICAgICAgICAgIG1pc3Npbmcgb3IgdGhlIGRpcmVjdG9yeSBoYXMgbm8gaW1hZ2VzLCBhbiBleGlzdGluZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SRUFETUUuc291cmNlczwvZmlsZW5hbWU+IGZpbGUgaXMKKyAgICAgICAgICAgICAgICBtZWFuaW5nbGVzcyBhbmQgdXN1YWxseSBkb2VzIG5vdCBleGlzdC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KIAotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9ImJzcC1maWxlbGF5b3V0LWJpbmFyeSI+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPlByZS1idWlsdCBVc2VyIEJpbmFyaWVzPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtYmluYXJ5Ij4KKyAgICAgICAgPHRpdGxlPlByZS1idWlsdCBVc2VyIEJpbmFyaWVzPC90aXRsZT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIEJTUCBMYXllciBhdDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L2JpbmFyeS88cmVwbGFjZWFibGU+Ym9vdGFibGVfaW1hZ2VzPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIEJTUCBMYXllciBhdDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L2JpbmFyeS88cmVwbGFjZWFibGU+Ym9vdGFibGVfaW1hZ2VzPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgYXJlYSBjb250YWlucyB1c2VmdWwgcHJlLWJ1aWx0IGtlcm5lbHMgYW5kCi0gICAgICAgICAgICAgICAgICAgIHVzZXItc3BhY2UgZmlsZXN5c3RlbSBpbWFnZXMgcmVsZWFzZWQgd2l0aCB0aGUgQlNQIHRoYXQgYXJlCi0gICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlIHRvIHRoZSB0YXJnZXQgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSB0eXBpY2FsbHkgY29udGFpbnMgZ3JhcGhpY2FsIChlLmcuIFNhdG8pIGFuZAotICAgICAgICAgICAgICAgICAgICBtaW5pbWFsIGxpdmUgaW1hZ2VzIHdoZW4gdGhlIEJTUCB0YXJiYWxsIGhhcyBiZWVuIGNyZWF0ZWQgYW5kCi0gICAgICAgICAgICAgICAgICAgIG1hZGUgYXZhaWxhYmxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0PC91bGluaz4gd2Vic2l0ZS4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlc2Uga2VybmVscyBhbmQgaW1hZ2VzIHRvIGdldCBhIHN5c3RlbSBydW5uaW5nCi0gICAgICAgICAgICAgICAgICAgIGFuZCBxdWlja2x5IGdldCBzdGFydGVkIG9uIGRldmVsb3BtZW50IHRhc2tzLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIGFyZWEgY29udGFpbnMgdXNlZnVsIHByZS1idWlsdCBrZXJuZWxzCisgICAgICAgICAgICBhbmQgdXNlci1zcGFjZSBmaWxlc3lzdGVtIGltYWdlcyByZWxlYXNlZCB3aXRoIHRoZQorICAgICAgICAgICAgQlNQIHRoYXQgYXJlIGFwcHJvcHJpYXRlIHRvIHRoZSB0YXJnZXQgc3lzdGVtLgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgdHlwaWNhbGx5IGNvbnRhaW5zIGdyYXBoaWNhbCAoZS5nLiBTYXRvKQorICAgICAgICAgICAgYW5kIG1pbmltYWwgbGl2ZSBpbWFnZXMgd2hlbiB0aGUgQlNQIHRhcmJhbGwgaGFzIGJlZW4KKyAgICAgICAgICAgIGNyZWF0ZWQgYW5kIG1hZGUgYXZhaWxhYmxlIGluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdDwvdWxpbms+CisgICAgICAgICAgICB3ZWJzaXRlLgorICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlc2Uga2VybmVscyBhbmQgaW1hZ2VzIHRvIGdldCBhIHN5c3RlbQorICAgICAgICAgICAgcnVubmluZyBhbmQgcXVpY2tseSBnZXQgc3RhcnRlZCBvbiBkZXZlbG9wbWVudCB0YXNrcy4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBleGFjdCB0eXBlcyBvZiBiaW5hcmllcyBwcmVzZW50IGFyZSBoaWdobHkKLSAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUtZGVwZW5kZW50LgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgc2hvdWxkIGJlIHByZXNlbnQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIEJTUCBMYXllciBhbmQgaXQgd2lsbCBleHBsYWluIGhvdyB0byB1c2UgdGhlIGltYWdlcyB3aXRoIHRoZQotICAgICAgICAgICAgICAgICAgICB0YXJnZXQgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIDxmaWxlbmFtZT5SRUFETUUuc291cmNlczwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHByZXNlbnQgdG8gbG9jYXRlIHRoZSBzb3VyY2VzIHVzZWQgdG8gYnVpbGQgdGhlCi0gICAgICAgICAgICAgICAgICAgIGltYWdlcyBhbmQgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiB0aGUgTWV0YWRhdGEuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBleGFjdCB0eXBlcyBvZiBiaW5hcmllcyBwcmVzZW50IGFyZSBoaWdobHkKKyAgICAgICAgICAgIGhhcmR3YXJlLWRlcGVuZGVudC4KKyAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnNwLWZpbGVsYXlvdXQtcmVhZG1lJz48ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBmaWxlIHNob3VsZCBiZSBwcmVzZW50IGluIHRoZSBCU1AgTGF5ZXIgYW5kIGl0CisgICAgICAgICAgICBleHBsYWlucyBob3cgdG8gdXNlIHRoZSBpbWFnZXMgd2l0aCB0aGUgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JzcC1maWxlbGF5b3V0LXJlYWRtZS1zb3VyY2VzJz48ZmlsZW5hbWU+UkVBRE1FLnNvdXJjZXM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGZpbGUgc2hvdWxkIGJlIHByZXNlbnQgdG8gbG9jYXRlIHRoZSBzb3VyY2VzIHVzZWQgdG8KKyAgICAgICAgICAgIGJ1aWxkIHRoZSBpbWFnZXMgYW5kIHByb3ZpZGUgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICBNZXRhZGF0YS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KIAotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2JzcC1maWxlbGF5b3V0LWxheWVyJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+TGF5ZXIgQ29uZmlndXJhdGlvbiBGaWxlPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nYnNwLWZpbGVsYXlvdXQtbGF5ZXInPgorICAgICAgICA8dGl0bGU+TGF5ZXIgQ29uZmlndXJhdGlvbiBGaWxlPC90aXRsZT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhpcyBmaWxlIGluIHRoZSBCU1AgTGF5ZXIgYXQ6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi9jb25mL2xheWVyLmNvbmYKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhpcyBmaWxlIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9jb25mL2xheWVyLmNvbmYKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZSBpZGVudGlmaWVzIHRoZSBmaWxlIHN0cnVjdHVyZSBhcyBhCi0gICAgICAgICAgICAgICAgICAgIGxheWVyLCBpZGVudGlmaWVzIHRoZQotICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBvZiB0aGUgbGF5ZXIsIGFuZCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBob3cgdGhlIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIHN5c3RlbSBzaG91bGQgdXNlIGl0LgotICAgICAgICAgICAgICAgICAgICBHZW5lcmFsbHksIGEgc3RhbmRhcmQgYm9pbGVycGxhdGUgZmlsZSBzdWNoIGFzIHRoZSBmb2xsb3dpbmcgd29ya3MuCi0gICAgICAgICAgICAgICAgICAgIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgeW91IHdvdWxkIHJlcGxhY2UgIjxyZXBsYWNlYWJsZT5ic3A8L3JlcGxhY2VhYmxlPiIgYW5kCi0gICAgICAgICAgICAgICAgICAgICI8cmVwbGFjZWFibGU+X2JzcDwvcmVwbGFjZWFibGU+IiB3aXRoIHRoZSBhY3R1YWwgbmFtZQotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgQlNQIChpLmUuIDxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+IGZyb20gdGhlIGV4YW1wbGUgdGVtcGxhdGUpLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgIGlkZW50aWZpZXMgdGhlIGZpbGUgc3RydWN0dXJlIGFzIGEgbGF5ZXIsCisgICAgICAgICAgICBpZGVudGlmaWVzIHRoZSBjb250ZW50cyBvZiB0aGUgbGF5ZXIsIGFuZAorICAgICAgICAgICAgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRoZSBidWlsZCBzeXN0ZW0gc2hvdWxkCisgICAgICAgICAgICB1c2UgaXQuCisgICAgICAgICAgICBHZW5lcmFsbHksIGEgc3RhbmRhcmQgYm9pbGVycGxhdGUgZmlsZSBzdWNoIGFzIHRoZQorICAgICAgICAgICAgZm9sbG93aW5nIHdvcmtzLgorICAgICAgICAgICAgSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCB5b3Ugd291bGQgcmVwbGFjZQorICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJzcDwvcmVwbGFjZWFibGU+IHdpdGggdGhlIGFjdHVhbAorICAgICAgICAgICAgbmFtZSBvZiB0aGUgQlNQIChpLmUuCisgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+IGZyb20gdGhlIGV4YW1wbGUKKyAgICAgICAgICAgIHRlbXBsYXRlKS4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKICAgICAgQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCiAKQEAgLTYzNywxMyArNzIyLDE0IEBACiAgICAgIEJCRklMRV9QUklPUklUWV88cmVwbGFjZWFibGU+YnNwPC9yZXBsYWNlYWJsZT4gPSAiNiIKIAogICAgICBMQVlFUkRFUEVORFNfPHJlcGxhY2VhYmxlPmJzcDwvcmVwbGFjZWFibGU+ID0gImludGVsIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVG8gaWxsdXN0cmF0ZSB0aGUgc3RyaW5nIHN1YnN0aXR1dGlvbnMsIGhlcmUgYXJlIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRlbWVudHMKLSAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgUmFzcGJlcnJ5IFBpIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgotICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBpbGx1c3RyYXRlIHRoZSBzdHJpbmcgc3Vic3RpdHV0aW9ucywgaGVyZSBhcmUKKyAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRlbWVudHMgZnJvbSB0aGUgUmFzcGJlcnJ5CisgICAgICAgICAgICBQaSA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFwcGVuZCB0byBCQlBBVEgKICAgICAgQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCiAKQEAgLTY1NywxMjY1ICs3NDMsMTUyNyBAQAogCiAgICAgICMgQWRkaXRpb25hbCBsaWNlbnNlIGRpcmVjdG9yaWVzLgogICAgICBMSUNFTlNFX1BBVEggKz0gIiR7TEFZRVJESVJ9L2ZpbGVzL2N1c3RvbS1saWNlbnNlcyIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAuCisgICAgICAgICAgLgorICAgICAgICAgIC4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBzaW1wbHkgbWFrZXMKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXdhcmUgb2YgdGhlIHJlY2lwZXMgYW5kIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIG11c3QgZXhpc3Qgc28gdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjYW4gcmVjb2duaXplIHRoZSBCU1AuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZmlsZSBzaW1wbHkgbWFrZXMKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICBhd2FyZSBvZiB0aGUgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbiBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgIFRoZSBmaWxlIG11c3QgZXhpc3Qgc28gdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgY2FuIHJlY29nbml6ZSB0aGUgQlNQLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtbWFjaGluZSI+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkhhcmR3YXJlIENvbmZpZ3VyYXRpb24gT3B0aW9uczwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9ImJzcC1maWxlbGF5b3V0LW1hY2hpbmUiPgorICAgICAgICA8dGl0bGU+SGFyZHdhcmUgQ29uZmlndXJhdGlvbiBPcHRpb25zPC90aXRsZT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIEJTUCBMYXllciBhdDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L2NvbmYvbWFjaGluZS8qLmNvbmYKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIEJTUCBMYXllciBhdDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L2NvbmYvbWFjaGluZS8qLmNvbmYKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBtYWNoaW5lIGZpbGVzIGJpbmQgdG9nZXRoZXIgYWxsIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgZWxzZXdoZXJlCi0gICAgICAgICAgICAgICAgICAgIGluIHRoZSBCU1AgaW50byBhIGZvcm1hdCB0aGF0IHRoZSBidWlsZCBzeXN0ZW0gY2FuIHVuZGVyc3RhbmQuCi0gICAgICAgICAgICAgICAgICAgIElmIHRoZSBCU1Agc3VwcG9ydHMgbXVsdGlwbGUgbWFjaGluZXMsIG11bHRpcGxlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcwotICAgICAgICAgICAgICAgICAgICBjYW4gYmUgcHJlc2VudC4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZW5hbWVzIGNvcnJlc3BvbmQgdG8gdGhlIHZhbHVlcyB0byB3aGljaCB1c2VycyBoYXZlIHNldCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIG1hY2hpbmUgZmlsZXMgYmluZCB0b2dldGhlciBhbGwgdGhlIGluZm9ybWF0aW9uCisgICAgICAgICAgICBjb250YWluZWQgZWxzZXdoZXJlIGluIHRoZSBCU1AgaW50byBhIGZvcm1hdCB0aGF0CisgICAgICAgICAgICB0aGUgYnVpbGQgc3lzdGVtIGNhbiB1bmRlcnN0YW5kLgorICAgICAgICAgICAgRWFjaCBCU1AgTGF5ZXIgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIG1hY2hpbmUgZmlsZS4KKyAgICAgICAgICAgIElmIHRoZSBCU1Agc3VwcG9ydHMgbXVsdGlwbGUgbWFjaGluZXMsIG11bHRpcGxlCisgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZXMgY2FuIGV4aXN0LgorICAgICAgICAgICAgVGhlc2UgZmlsZW5hbWVzIGNvcnJlc3BvbmQgdG8gdGhlIHZhbHVlcyB0byB3aGljaAorICAgICAgICAgICAgdXNlcnMgaGF2ZSBzZXQgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+IHZhcmlhYmxlLgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgZGVmaW5lIHRoaW5ncyBzdWNoIGFzIHRoZSBrZXJuZWwgcGFja2FnZSB0byB1c2UKLSAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVGRVJSRURfUFJPVklERVInPjxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIG9mIHZpcnR1YWwva2VybmVsKSwgdGhlIGhhcmR3YXJlIGRyaXZlcnMgdG8KLSAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBpbiBkaWZmZXJlbnQgdHlwZXMgb2YgaW1hZ2VzLCBhbnkgc3BlY2lhbCBzb2Z0d2FyZSBjb21wb25lbnRzCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIG5lZWRlZCwgYW55IGJvb3Rsb2FkZXIgaW5mb3JtYXRpb24sIGFuZCBhbHNvIGFueSBzcGVjaWFsIGltYWdlCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCByZXF1aXJlbWVudHMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZXNlIGZpbGVzIGRlZmluZSB0aGluZ3Mgc3VjaCBhcyB0aGUga2VybmVsIHBhY2thZ2UKKyAgICAgICAgICAgIHRvIHVzZQorICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVGRVJSRURfUFJPVklERVInPjxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBvZgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEtdmlydHVhbC1wcm92aWRlcnMnPnZpcnR1YWwva2VybmVsPC91bGluaz4pLAorICAgICAgICAgICAgdGhlIGhhcmR3YXJlIGRyaXZlcnMgdG8gaW5jbHVkZSBpbiBkaWZmZXJlbnQgdHlwZXMKKyAgICAgICAgICAgIG9mIGltYWdlcywgYW55IHNwZWNpYWwgc29mdHdhcmUgY29tcG9uZW50cyB0aGF0IGFyZQorICAgICAgICAgICAgbmVlZGVkLCBhbnkgYm9vdGxvYWRlciBpbmZvcm1hdGlvbiwgYW5kIGFsc28gYW55CisgICAgICAgICAgICBzcGVjaWFsIGltYWdlIGZvcm1hdCByZXF1aXJlbWVudHMuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBFYWNoIEJTUCBMYXllciByZXF1aXJlcyBhdCBsZWFzdCBvbmUgbWFjaGluZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3UgY2FuIHN1cHBseSBtb3JlIHRoYW4gb25lIGZpbGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGNvdWxkIGFsc28gaW5jbHVkZSBhIGhhcmR3YXJlCisgICAgICAgICAgICAidHVuaW5nIiBmaWxlIHRoYXQgaXMgY29tbW9ubHkgdXNlZCB0byBkZWZpbmUgdGhlCisgICAgICAgICAgICBwYWNrYWdlIGFyY2hpdGVjdHVyZSBhbmQgc3BlY2lmeSBvcHRpbWl6YXRpb24gZmxhZ3MsCisgICAgICAgICAgICB3aGljaCBhcmUgY2FyZWZ1bGx5IGNob3NlbiB0byBnaXZlIGJlc3QgcGVyZm9ybWFuY2UKKyAgICAgICAgICAgIG9uIGEgZ2l2ZW4gcHJvY2Vzc29yLgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBjb25maWd1cmF0aW9uIGZpbGUgY291bGQgYWxzbyBpbmNsdWRlIGEgaGFyZHdhcmUgInR1bmluZyIKLSAgICAgICAgICAgICAgICAgICAgZmlsZSB0aGF0IGlzIGNvbW1vbmx5IHVzZWQgdG8gZGVmaW5lIHRoZSBwYWNrYWdlIGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgICAgICBhbmQgc3BlY2lmeSBvcHRpbWl6YXRpb24gZmxhZ3MsIHdoaWNoIGFyZSBjYXJlZnVsbHkgY2hvc2VuCi0gICAgICAgICAgICAgICAgICAgIHRvIGdpdmUgYmVzdCBwZXJmb3JtYW5jZSBvbiBhIGdpdmVuIHByb2Nlc3Nvci4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVHVuaW5nIGZpbGVzIGFyZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgbWFueSA8ZmlsZW5hbWU+dHVuZS0qPC9maWxlbmFtZT4gZmlsZXMKKyAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT50dW5lLWFybTExMzZqZi1zLmluYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPnR1bi0xNTg2LW5scC5pbmM8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKQorICAgICAgICAgICAgcmVzaWRlIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUdW5pbmcgZmlsZXMgYXJlIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+aWEzMi1iYXNlLmluYzwvZmlsZW5hbWU+IGZpbGUgcmVzaWRlcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGU8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIHVzZSBhbiBpbmNsdWRlIGZpbGUsIHlvdSBzaW1wbHkgaW5jbHVkZSB0aGVtIGluIHRoZQorICAgICAgICAgICAgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIFJhc3BiZXJyeSBQaSBCU1AKKyAgICAgICAgICAgIDxmaWxlbmFtZT5yYXNwYmVycnlwaTMuY29uZjwvZmlsZW5hbWU+IGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgZm9sbG93aW5nIHN0YXRlbWVudDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUbyB1c2UgYW4gaW5jbHVkZSBmaWxlLCB5b3Ugc2ltcGx5IGluY2x1ZGUgdGhlbSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgUmFzcGJlcnJ5IFBpIEJTUAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmFzcGJlcnJ5cGkzLmNvbmY8L2ZpbGVuYW1lPiBjb250YWlucyB0aGUKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHN0YXRlbWVudDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBpbmNsdWRlIGNvbmYvbWFjaGluZS9yYXNwYmVycnlwaTIuY29uZgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uIGlkPSdic3AtZmlsZWxheW91dC1taXNjLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+TWlzY2VsbGFuZW91cyBCU1AtU3BlY2lmaWMgUmVjaXBlIEZpbGVzPC90aXRsZT4KIAotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2JzcC1maWxlbGF5b3V0LW1pc2MtcmVjaXBlcyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXMgQlNQLVNwZWNpZmljIFJlY2lwZSBGaWxlczwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIGZpbGVzIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWJzcC8qCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIEJTUCBMYXllciBhdDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMtYnNwLyoKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIGRpcmVjdG9yeSBjb250YWlucyBtaXNjZWxsYW5lb3VzIHJlY2lwZSBmaWxlcyBmb3IKLSAgICAgICAgICAgICAgICAgICAgdGhlIEJTUC4KLSAgICAgICAgICAgICAgICAgICAgTW9zdCBub3RhYmx5IHdvdWxkIGJlIHRoZSBmb3JtZmFjdG9yIGZpbGVzLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AgdGhlcmUgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtZmFjdG9yXzAuMC5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGFuCi0gICAgICAgICAgICAgICAgICAgIGFwcGVuZCBmaWxlIHVzZWQgdG8gYXVnbWVudCB0aGUgcmVjaXBlIHRoYXQgc3RhcnRzIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZXJlIGFyZSBtYWNoaW5lLXNwZWNpZmljIHNldHRpbmdzIHVzZWQgZHVyaW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCB0aGF0IGFyZSBkZWZpbmVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFjaGNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgZnVydGhlciBkb3duIGluIHRoZQotICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIDxmaWxlbmFtZT5tYWNoY29uZmlnPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmlsZSBmb3IgdGhlIFJhc3BiZXJyeSBQaSBCU1A6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIGRpcmVjdG9yeSBjb250YWlucyBtaXNjZWxsYW5lb3VzIHJlY2lwZQorICAgICAgICAgICAgZmlsZXMgZm9yIHRoZSBCU1AuCisgICAgICAgICAgICBNb3N0IG5vdGFibHkgd291bGQgYmUgdGhlIGZvcm1mYWN0b3IgZmlsZXMuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AgdGhlcmUgaXMgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9ybWZhY3Rvcl8wLjAuYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlLAorICAgICAgICAgICAgd2hpY2ggaXMgYW4gYXBwZW5kIGZpbGUgdXNlZCB0byBhdWdtZW50IHRoZSByZWNpcGUKKyAgICAgICAgICAgIHRoYXQgc3RhcnRzIHRoZSBidWlsZC4KKyAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGVyZSBhcmUgbWFjaGluZS1zcGVjaWZpYyBzZXR0aW5ncyB1c2VkCisgICAgICAgICAgICBkdXJpbmcgdGhlIGJ1aWxkIHRoYXQgYXJlIGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWFjaGNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgZnVydGhlciBkb3duIGluCisgICAgICAgICAgICB0aGUgZGlyZWN0b3J5LgorICAgICAgICAgICAgSGVyZSBpcyB0aGUgPGZpbGVuYW1lPm1hY2hjb25maWc8L2ZpbGVuYW1lPiBmaWxlIGZvcgorICAgICAgICAgICAgdGhlIFJhc3BiZXJyeSBQaSBCU1A6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEhBVkVfVE9VQ0hTQ1JFRU49MAogICAgICBIQVZFX0tFWUJPQVJEPTEKIAogICAgICBESVNQTEFZX0NBTl9ST1RBVEU9MAogICAgICBESVNQTEFZX09SSUVOVEFUSU9OPTAKICAgICAgRElTUExBWV9EUEk9MTMzCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxub3RlPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJZiBhIEJTUCBkb2VzIG5vdCBoYXZlIGEgZm9ybWZhY3RvciBlbnRyeSwgZGVmYXVsdHMgYXJlIGVzdGFibGlzaGVkIGFjY29yZGluZyB0bwotICAgICAgICAgICAgICAgICAgICB0aGUgZm9ybWZhY3RvciBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCBpcyBpbnN0YWxsZWQgYnkgdGhlIG1haW4KLSAgICAgICAgICAgICAgICAgICAgZm9ybWZhY3RvciByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1ic3AvZm9ybWZhY3Rvci9mb3JtZmFjdG9yXzAuMC5iYjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L25vdGU+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxub3RlPjxwYXJhPgorICAgICAgICAgICAgSWYgYSBCU1AgZG9lcyBub3QgaGF2ZSBhIGZvcm1mYWN0b3IgZW50cnksIGRlZmF1bHRzCisgICAgICAgICAgICBhcmUgZXN0YWJsaXNoZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtZmFjdG9yCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCBpcyBpbnN0YWxsZWQgYnkgdGhlIG1haW4KKyAgICAgICAgICAgIGZvcm1mYWN0b3IgcmVjaXBlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3JfMC4wLmJiPC9maWxlbmFtZT4sCisgICAgICAgICAgICB3aGljaCBpcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPjwvbm90ZT4KKyAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdic3AtZmlsZWxheW91dC1yZWNpcGVzLWdyYXBoaWNzJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+RGlzcGxheSBTdXBwb3J0IEZpbGVzPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nYnNwLWZpbGVsYXlvdXQtcmVjaXBlcy1ncmFwaGljcyc+CisgICAgICAgIDx0aXRsZT5EaXNwbGF5IFN1cHBvcnQgRmlsZXM8L3RpdGxlPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBmaWxlcyBpbiB0aGUgQlNQIExheWVyIGF0OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1ncmFwaGljcy8qCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIGZpbGVzIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWdyYXBoaWNzLyoKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgZGlyZWN0b3J5IGNvbnRhaW5zIHJlY2lwZXMgZm9yIHRoZSBCU1AgaWYgaXQgaGFzCi0gICAgICAgICAgICAgICAgICAgIHNwZWNpYWwgcmVxdWlyZW1lbnRzIGZvciBncmFwaGljcyBzdXBwb3J0LgotICAgICAgICAgICAgICAgICAgICBBbGwgZmlsZXMgdGhhdCBhcmUgbmVlZGVkIGZvciB0aGUgQlNQIHRvIHN1cHBvcnQgYSBkaXNwbGF5IGFyZQotICAgICAgICAgICAgICAgICAgICBrZXB0IGhlcmUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgZGlyZWN0b3J5IGNvbnRhaW5zIHJlY2lwZXMgZm9yIHRoZQorICAgICAgICAgICAgQlNQIGlmIGl0IGhhcyBzcGVjaWFsIHJlcXVpcmVtZW50cyBmb3IgZ3JhcGhpY3MKKyAgICAgICAgICAgIHN1cHBvcnQuCisgICAgICAgICAgICBBbGwgZmlsZXMgdGhhdCBhcmUgbmVlZGVkIGZvciB0aGUgQlNQIHRvIHN1cHBvcnQKKyAgICAgICAgICAgIGEgZGlzcGxheSBhcmUga2VwdCBoZXJlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nYnNwLWZpbGVsYXlvdXQta2VybmVsJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+TGludXggS2VybmVsIENvbmZpZ3VyYXRpb248L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdic3AtZmlsZWxheW91dC1rZXJuZWwnPgorICAgICAgICA8dGl0bGU+TGludXggS2VybmVsIENvbmZpZ3VyYXRpb248L3RpdGxlPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBmaWxlcyBpbiB0aGUgQlNQIExheWVyIGF0OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8qLmJiYXBwZW5kCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIGZpbGVzIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eCouYmJhcHBlbmQKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMta2VybmVsL2xpbnV4LyouYmIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGFwcGVuZCBtYWNoaW5lLXNwZWNpZmljIGNoYW5nZXMgdG8gdGhlIG1haW4KLSAgICAgICAgICAgICAgICAgICAga2VybmVsIHJlY2lwZSB5b3UgYXJlIHVzaW5nLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcHBlbmQgZmlsZXMgKDxmaWxlbmFtZT4qLmJiYXBwZW5kPC9maWxlbmFtZT4pIG1vZGlmeQorICAgICAgICAgICAgdGhlIG1haW4ga2VybmVsIHJlY2lwZSBiZWluZyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Ki5iYjwvZmlsZW5hbWU+IGZpbGVzIHdvdWxkIGJlIGEKKyAgICAgICAgICAgIGRldmVsb3Blci1zdXBwbGllZCBrZXJuZWwgcmVjaXBlLgorICAgICAgICAgICAgVGhpcyBhcmVhIG9mIHRoZSBCU1AgaGllcmFyY2h5IGNhbiBjb250YWluIGJvdGggdGhlc2UKKyAgICAgICAgICAgIHR5cGVzIG9mIGZpbGVzLCBhbHRob3VnaCBpbiBwcmFjdGljZSwgaXQgaXMgbGlrZWx5IHRoYXQKKyAgICAgICAgICAgIHlvdSB3b3VsZCBoYXZlIG9uZSBvciB0aGUgb3RoZXIuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgeW91ciBCU1AsIHlvdSB0eXBpY2FsbHkgd2FudCB0byB1c2UgYW4gZXhpc3RpbmcgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBrZXJuZWwgcmVjaXBlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhcHBlbmQgbWFjaGluZS1zcGVjaWZpYyBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgcmVjaXBlCi0gICAgICAgICAgICAgICAgICAgIGJ5IHVzaW5nIGEgc2ltaWxhcmx5IG5hbWVkIGFwcGVuZCBmaWxlLCB3aGljaCBpcyBsb2NhdGVkIGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSBCU1AgTGF5ZXIgZm9yIHlvdXIgdGFyZ2V0IGRldmljZSAoZS5nLiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPiBkaXJlY3RvcnkpLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgeW91ciBCU1AsIHlvdSB0eXBpY2FsbHkgd2FudCB0byB1c2UgYW4gZXhpc3RpbmcgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3Qga2VybmVsIHJlY2lwZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFlvdSBjYW4gYXBwZW5kIG1hY2hpbmUtc3BlY2lmaWMgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgICAgIGtlcm5lbCByZWNpcGUgYnkgdXNpbmcgYSBzaW1pbGFybHkgbmFtZWQgYXBwZW5kCisgICAgICAgICAgICBmaWxlLCB3aGljaCBpcyBsb2NhdGVkIGluIHRoZSBCU1AgTGF5ZXIgZm9yIHlvdXIKKyAgICAgICAgICAgIHRhcmdldCBkZXZpY2UgKGUuZy4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4gZGlyZWN0b3J5KS4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFN1cHBvc2UgeW91IGFyZSB1c2luZyB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvXzQuNC5iYjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHJlY2lwZSB0byBidWlsZCB0aGUga2VybmVsLgotICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgeW91IGhhdmUgc2VsZWN0ZWQgdGhlIGtlcm5lbCBpbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmlsZSBieSBhZGRpbmcKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9QUk9WSURFUic+PGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVGRVJSRURfVkVSU0lPTic+PGZpbGVuYW1lPlBSRUZFUlJFRF9WRVJTSU9OPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTdXBwb3NlIHlvdSBhcmUgdXNpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC40LmJiPC9maWxlbmFtZT4gcmVjaXBlIHRvCisgICAgICAgICAgICBidWlsZCB0aGUga2VybmVsLgorICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHlvdSBoYXZlIHNlbGVjdGVkIHRoZSBrZXJuZWwgaW4geW91cgorICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlIGJ5IGFkZGluZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9QUk9WSURFUic+PGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9WRVJTSU9OJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1ZFUlNJT048L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBzdGF0ZW1lbnRzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCiAgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjQlIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGUgcHJlZmVycmVkIHByb3ZpZGVyIGlzIGFzc3VtZWQgYnkgZGVmYXVsdCwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgWW91IHdvdWxkIHVzZSB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGZpbGUgdG8gYXBwZW5kIHNwZWNpZmljIEJTUCBzZXR0aW5ncyB0byB0aGUga2VybmVsLCB0aHVzCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwgZm9yIHlvdXIgcGFydGljdWxhciBCU1AuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgV2hlbiB0aGUgcHJlZmVycmVkIHByb3ZpZGVyIGlzIGFzc3VtZWQgYnkKKyAgICAgICAgICAgICAgICBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgZG9lcyBub3QgYXBwZWFyIGluIHRoZQorICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgWW91IHdvdWxkIHVzZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0b180LjQuYmJhcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZSB0byBhcHBlbmQgc3BlY2lmaWMgQlNQIHNldHRpbmdzIHRvIHRoZSBrZXJuZWwsCisgICAgICAgICAgICB0aHVzIGNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwgZm9yIHlvdXIgcGFydGljdWxhciBCU1AuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IHlvdXIgYXBwZW5kIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGNvbnRhaW4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfVVJMOyNjcmVhdGluZy10aGUtYXBwZW5kLWZpbGUnPkNyZWF0aW5nIHRoZSBBcHBlbmQgRmlsZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAotICAgICAgICAgICAgICAgICAgICBNYW51YWwuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCB5b3VyIGFwcGVuZCBmaWxlCisgICAgICAgICAgICBzaG91bGQgY29udGFpbiBpbiB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjY3JlYXRpbmctdGhlLWFwcGVuZC1maWxlJz5DcmVhdGluZyB0aGUgQXBwZW5kIEZpbGU8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50CisgICAgICAgICAgICBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nZGV2ZWxvcGluZy1hLWJvYXJkLXN1cHBvcnQtcGFja2FnZS1ic3AnPgotICAgICAgICAgICAgPHRpdGxlPkRldmVsb3BpbmcgYSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFuIGFsdGVybmF0ZSBzY2VuYXJpbyBpcyB3aGVuIHlvdSBjcmVhdGUgeW91ciBvd24KKyAgICAgICAgICAgIGtlcm5lbCByZWNpcGUgZm9yIHRoZSBCU1AuCisgICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBSYXNwYmVycnkgUGkgQlNQLgorICAgICAgICAgICAgSWYgeW91IGV4YW1pbmUgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKKyAgICAgICAgICAgIHlvdSBzZWUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbGludXgtcmFzcGJlcnJ5cGktZGV2LmJiCisgICAgIGxpbnV4LXJhc3BiZXJyeXBpLmluYworICAgICBsaW51eC1yYXNwYmVycnlwaV80LjE0LmJiCisgICAgIGxpbnV4LXJhc3BiZXJyeXBpXzQuOS5iYgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBjb250YWlucyB0aHJlZSBrZXJuZWwgcmVjaXBlcyBhbmQgYQorICAgICAgICAgICAgY29tbW9uIGluY2x1ZGUgZmlsZS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBoaWdoLWxldmVsIHByb2NlZHVyZSB5b3UgY2FuIGZvbGxvdwotICAgICAgICAgICAgICAgIHRvIGNyZWF0ZSBhIEJTUCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCdzCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndXNpbmctdGhlLXlvY3RvLXByb2plY3RzLWJzcC10b29scyc+QlNQIFRvb2xzPC9saW5rPi4KLSAgICAgICAgICAgICAgICBBbHRob3VnaCBub3QgcmVxdWlyZWQgZm9yIEJTUCBjcmVhdGlvbiwgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LCB3aGljaCBjb250YWlucwotICAgICAgICAgICAgICAgIG1hbnkgQlNQcyBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QsIGlzIHBhcnQgb2YgdGhlCi0gICAgICAgICAgICAgICAgZXhhbXBsZS4KLSAgICAgICAgICAgIDwvcGFyYT4KKzxzZWN0aW9uIGlkPSdkZXZlbG9waW5nLWEtYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcCc+CisgICAgPHRpdGxlPkRldmVsb3BpbmcgYSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk8L3RpdGxlPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSB0aGF0IHNob3dzIGhvdyB0byBjcmVhdGUgYSBuZXcgbGF5ZXIgdXNpbmcKLSAgICAgICAgICAgICAgICB0aGUgdG9vbHMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWJzcCBTY3JpcHQ8L2xpbms+IgotICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGhpZ2gtbGV2ZWwgcHJvY2VkdXJlIHlvdSBjYW4KKyAgICAgICAgZm9sbG93IHRvIGNyZWF0ZSBhIEJTUC4KKyAgICAgICAgQWx0aG91Z2ggbm90IHJlcXVpcmVkIGZvciBCU1AgY3JlYXRpb24sIHRoZQorICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IHJlcG9zaXRvcnksIHdoaWNoCisgICAgICAgIGNvbnRhaW5zIG1hbnkgQlNQcyBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QsCisgICAgICAgIGlzIHBhcnQgb2YgdGhlIGV4YW1wbGUuCisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlsbHVzdHJhdGlvbiBhbmQgbGlzdCBzdW1tYXJpemUgdGhlIEJTUAotICAgICAgICAgICAgICAgIGNyZWF0aW9uIGdlbmVyYWwgd29ya2Zsb3cuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIEZvciBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIGNyZWF0ZSBhIG5ldworICAgICAgICBsYXllciB1c2luZyB0aGUgdG9vbHMsIHNlZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvbGluaz4iCisgICAgICAgIHNlY3Rpb24uCisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZyIgd2lkdGg9IjdpbiIgZGVwdGg9IjVpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+Ci0gICAgICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIFRoZSBmb2xsb3dpbmcgaWxsdXN0cmF0aW9uIGFuZCBsaXN0IHN1bW1hcml6ZSB0aGUgQlNQCisgICAgICAgIGNyZWF0aW9uIGdlbmVyYWwgd29ya2Zsb3cuCisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgWW91ciBIb3N0IERldmVsb3BtZW50IFN5c3RlbSB0byBTdXBwb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBVc2luZyB0aGUgWW9jdG8gUHJvamVjdDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjeXAtcmVzb3VyY2VzJz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBmb3Igb3B0aW9ucyBvbiBob3cKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Fc3RhYmxpc2ggdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9zaXRvcnkgb24gWW91ciBTeXN0ZW06PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhhdmluZyBsb2NhbCBjb3BpZXMgb2YgdGhlc2Ugc3VwcG9ydGVkIEJTUCBsYXllcnMgb24KLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgc3lzdGVtIGdpdmVzIHlvdSBhY2Nlc3MgdG8gbGF5ZXJzIHlvdSBtaWdodCBiZSBhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBidWlsZCBvbiBvciBtb2RpZnkgdG8gY3JlYXRlIHlvdXIgQlNQLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZXQgdGhlc2UgZmlsZXMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwcmVwYXJpbmcteW91ci1idWlsZC1ob3N0LXRvLXdvcmstd2l0aC1ic3AtbGF5ZXJzJz5QcmVwYXJpbmcgWW91ciBCdWlsZCBIb3N0IHRvIFdvcmsgd2l0aCBCU1AgTGF5ZXJzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBZb3VyIE93biBCU1AgTGF5ZXIgVXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWJzcC1zY3JpcHQnPjxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXJzIGFyZSBpZGVhbCBmb3IgaXNvbGF0aW5nIGFuZCBzdG9yaW5nIHdvcmsgZm9yIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIHBpZWNlIG9mIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgQSBsYXllciBpcyByZWFsbHkganVzdCBhIGxvY2F0aW9uIG9yIGFyZWEgaW4gd2hpY2ggeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZSB0aGUgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbnMgZm9yIHlvdXIgQlNQLgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gZmFjdCwgYSBCU1AgaXMsIGluIGl0c2VsZiwgYSBzcGVjaWFsIHR5cGUgb2YgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2ltcGxlc3Qgd2F5IHRvIGNyZWF0ZSBhIG5ldyBCU1AgbGF5ZXIgdGhhdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxpYW50IHdpdGggdGhlIFlvY3RvIFByb2plY3QgaXMgdG8gdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWJzcDwvZmlsZW5hbWU+IHNjcmlwdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGF0IHNjcmlwdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUteW9jdG8tYnNwLXNjcmlwdCc+Q3JlYXRpbmcgYSBOZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZyIgd2lkdGg9IjdpbiIgZGVwdGg9IjVpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+CisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Bbm90aGVyIGV4YW1wbGUgdGhhdCBpbGx1c3RyYXRlcyBhIGxheWVyCi0gICAgICAgICAgICAgICAgICAgICAgICBpcyBhbiBhcHBsaWNhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBvc2UgeW91IGFyZSBjcmVhdGluZyBhbiBhcHBsaWNhdGlvbiB0aGF0IGhhcwotICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSBvciBvdGhlciBkZXBlbmRlbmNpZXMgaW4gb3JkZXIgZm9yIGl0IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlIGFuZCBydW4uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGF5ZXIsIGluIHRoaXMgY2FzZSwgd291bGQgYmUgd2hlcmUgYWxsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyB0aGF0IGRlZmluZSB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGtlcHQuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUga2V5IHBvaW50IGZvciBhIGxheWVyIGlzIHRoYXQgaXQgaXMgYW4gaXNvbGF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEgdGhhdCBjb250YWlucyBhbGwgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHByb2plY3QgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBrbm93cwotICAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXJzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYnNwLWxheWVycyc+QlNQIExheWVyczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5GaXZlIEJTUHMgZXhpc3QgdGhhdCBhcmUgcGFydCBvZiB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IHJlbGVhc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJlYWdsZWJvbmU8L2ZpbGVuYW1lPiAoQVJNKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXBjODMxNWU8L2ZpbGVuYW1lPiAoUG93ZXJQQyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5lZGdlcm91dGVyPC9maWxlbmFtZT4gKE1JUFMpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGVzIGFuZCBjb25maWd1cmF0aW9ucyBmb3IgdGhlc2UgZml2ZSBCU1BzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGxvY2F0ZWQgYW5kIGRpc3BlcnNlZCB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgWW91ciBIb3N0IERldmVsb3BtZW50IFN5c3RlbQorICAgICAgICAgICAgICAgIHRvIFN1cHBvcnQgRGV2ZWxvcG1lbnQgVXNpbmcgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgUHJvamVjdDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICBNYW51YWwgZm9yIG9wdGlvbnMgb24gaG93IHRvIGdldCBhIHN5c3RlbSByZWFkeQorICAgICAgICAgICAgICAgIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXN0YWJsaXNoIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBSZXBvc2l0b3J5IG9uIFlvdXIgU3lzdGVtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSGF2aW5nIGxvY2FsIGNvcGllcyBvZiB0aGVzZSBzdXBwb3J0ZWQgQlNQIGxheWVycworICAgICAgICAgICAgICAgIG9uIHlvdXIgc3lzdGVtIGdpdmVzIHlvdSBhY2Nlc3MgdG8gbGF5ZXJzIHlvdQorICAgICAgICAgICAgICAgIG1pZ2h0IGJlIGFibGUgdG8gbGV2ZXJhZ2Ugd2hlbiBjcmVhdGluZyB5b3VyIEJTUC4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdldCB0aGVzZSBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwcmVwYXJpbmcteW91ci1idWlsZC1ob3N0LXRvLXdvcmstd2l0aC1ic3AtbGF5ZXJzJz5QcmVwYXJpbmcgWW91ciBCdWlsZCBIb3N0IHRvIFdvcmsgd2l0aCBCU1AgTGF5ZXJzPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgWW91ciBPd24gQlNQIExheWVyIFVzaW5nIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgU2NyaXB0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgTGF5ZXJzIGFyZSBpZGVhbCBmb3IgaXNvbGF0aW5nIGFuZCBzdG9yaW5nIHdvcmsKKyAgICAgICAgICAgICAgICBmb3IgYSBnaXZlbiBwaWVjZSBvZiBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICBBIGxheWVyIGlzIHJlYWxseSBqdXN0IGEgbG9jYXRpb24gb3IgYXJlYSBpbiB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICBwbGFjZSB0aGUgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbnMgZm9yIHlvdXIgQlNQLgorICAgICAgICAgICAgICAgIEluIGZhY3QsIGEgQlNQIGlzLCBpbiBpdHNlbGYsIGEgc3BlY2lhbCB0eXBlIG9mIGxheWVyLgorICAgICAgICAgICAgICAgIFRoZSBzaW1wbGVzdCB3YXkgdG8gY3JlYXRlIGEgbmV3IEJTUCBsYXllciB0aGF0IGlzCisgICAgICAgICAgICAgICAgY29tcGxpYW50IHdpdGggdGhlIFlvY3RvIFByb2plY3QgaXMgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IHNjcmlwdC4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhhdCBzY3JpcHQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgTmV3IEJTUCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRocmVlIGNvcmUgSW50ZWwgQlNQcyBleGlzdCBhcyBwYXJ0IG9mIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QgcmVsZWFzZSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8cGFyYT5Bbm90aGVyIGV4YW1wbGUgdGhhdCBpbGx1c3RyYXRlcyBhIGxheWVyCisgICAgICAgICAgICAgICAgaXMgYW4gYXBwbGljYXRpb24uCisgICAgICAgICAgICAgICAgU3VwcG9zZSB5b3UgYXJlIGNyZWF0aW5nIGFuIGFwcGxpY2F0aW9uIHRoYXQgaGFzCisgICAgICAgICAgICAgICAgbGlicmFyeSBvciBvdGhlciBkZXBlbmRlbmNpZXMgaW4gb3JkZXIgZm9yIGl0IHRvCisgICAgICAgICAgICAgICAgY29tcGlsZSBhbmQgcnVuLgorICAgICAgICAgICAgICAgIFRoZSBsYXllciwgaW4gdGhpcyBjYXNlLCB3b3VsZCBiZSB3aGVyZSBhbGwgdGhlCisgICAgICAgICAgICAgICAgcmVjaXBlcyB0aGF0IGRlZmluZSB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGtlcHQuCisgICAgICAgICAgICAgICAgVGhlIGtleSBwb2ludCBmb3IgYSBsYXllciBpcyB0aGF0IGl0IGlzIGFuCisgICAgICAgICAgICAgICAgaXNvbGF0ZWQgYXJlYSB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgcmVsZXZhbnQKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBmb3IgdGhlIHByb2plY3QgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGtub3dzIGFib3V0LgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3RoZS15b2N0by1wcm9qZWN0LWxheWVyLW1vZGVsJz5UaGUgWW9jdG8gUHJvamVjdCBMYXllciBNb2RlbDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzCisgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyByZWZlcmVuY2UgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXZlIGhhcmR3YXJlIHJlZmVyZW5jZSBCU1BzIGV4aXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgcGFydCBvZiB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFyZSBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L21ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4gQlNQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4YXMgSW5zdHJ1bWVudHMgQmVhZ2xlYm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5iZWFnbGVib25lLXlvY3RvPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZXNjYWxlIE1QQzgzMTVFLVJEQgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5tcGM4MzE1ZS1yZGI8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVYmlxdWl0aSBOZXR3b3JrcyBFZGdlUm91dGVyIExpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5lZGdlcm91dGVyPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUd28gZ2VuZXJhbCBJQSBwbGF0Zm9ybXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Z2VuZXJpY3g4NjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdlbmVyaWN4ODYtNjQ8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVlIGNvcmUgSW50ZWwgQlNQcyBleGlzdCBhcyBwYXJ0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZSBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnRlbC1jb3JlMi0zMjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSBCU1Agb3B0aW1pemVkIGZvciB0aGUgQ29yZTIgZmFtaWx5IG9mIENQVXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgYWxsIENQVXMgcHJpb3IgdG8gdGhlIFNpbHZlcm1vbnQgY29yZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgQlNQIG9wdGltaXplZCBmb3IgdGhlIENvcmUyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgb2YgQ1BVcyBhcyB3ZWxsIGFzIGFsbCBDUFVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvciB0byB0aGUgU2lsdmVybW9udCBjb3JlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnRlbC1jb3JlaTctNjQ8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgQlNQIG9wdGltaXplZCBmb3IgTmVoYWxlbSBhbmQgbGF0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUgYW5kIFhlb24gQ1BVcyBhcyB3ZWxsIGFzIFNpbHZlcm1vbnQgYW5kIGxhdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9tIENQVXMsIHN1Y2ggYXMgdGhlIEJheXRyYWlsIFNvQ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIEJTUCBvcHRpbWl6ZWQgZm9yIE5laGFsZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsYXRlciBDb3JlIGFuZCBYZW9uIENQVXMgYXMgd2VsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgU2lsdmVybW9udCBhbmQgbGF0ZXIgQXRvbSBDUFVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyB0aGUgQmF5dHJhaWwgU29Dcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW50ZWwtcXVhcms8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgQlNQIG9wdGltaXplZCBmb3IgdGhlIEludGVsIEdhbGlsZW8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbjEgJmFtcDsgZ2VuMiBkZXZlbG9wbWVudCBib2FyZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIEJTUCBvcHRpbWl6ZWQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWwgR2FsaWxlbyBnZW4xICZhbXA7IGdlbjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGJvYXJkcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldoZW4geW91IHNldCB1cCBhIGxheWVyIGZvciBhIG5ldyBCU1AsIHlvdSBzaG91bGQKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvdyBhIHN0YW5kYXJkIGxheW91dC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbGF5b3V0IGlzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdic3AtZmlsZWxheW91dCc+RXhhbXBsZSBGaWxlc3lzdGVtIExheW91dDwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHN0YW5kYXJkIGxheW91dCwgeW91IHdpbGwgbm90aWNlIGEgc3VnZ2VzdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgZm9yIHJlY2lwZXMgYW5kIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgc3RhbmRhcmQgbGF5b3V0IGZvciBhIEJTUCBieSBleGFtaW5pbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIGFueSBzdXBwb3J0ZWQgQlNQIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllciBpbnNpZGUgdGhlIFNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyB0byBZb3VyIE5ldyBCU1AKLSAgICAgICAgICAgICAgICAgICAgICAgIExheWVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3RhbmRhcmQgQlNQIGxheWVyIHN0cnVjdHVyZSBvcmdhbml6ZXMgdGhlIGZpbGVzCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBlZGl0IGluIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXZlcmFsIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgd2l0aGluIHRoZSBCU1AgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGNoYW5nZXMgaWRlbnRpZnkgd2hlcmUgeW91ciBuZXcgbGF5ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzIG9uIHRoZSBsb2NhbCBzeXN0ZW0gYW5kIGlkZW50aWZ5IHdoaWNoIGtlcm5lbCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBnb2luZyB0byB1c2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBydW4gdGhlIDxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPiBzY3JpcHQsCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIGFibGUgdG8gaW50ZXJhY3RpdmVseSBjb25maWd1cmUgbWFueSB0aGluZ3MgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgQlNQIChlLmcuIGtleWJvYXJkLCB0b3VjaHNjcmVlbiwgYW5kIHNvIGZvcnRoKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBSZWNpcGUgQ2hhbmdlcyB0byBZb3VyIE5ldyBCU1AKLSAgICAgICAgICAgICAgICAgICAgICAgIExheWVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGUgY2hhbmdlcyBpbmNsdWRlIGFsdGVyaW5nIHJlY2lwZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZXMpLCByZW1vdmluZyByZWNpcGVzIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgZG8gbm90IHVzZSwgYW5kIGFkZGluZyBuZXcgcmVjaXBlcyBvciBhcHBlbmQgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pIHRoYXQgeW91IG5lZWQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgeW91ciBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJlcGFyZSBmb3IgdGhlIEJ1aWxkOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIG1hZGUgYWxsIHRoZSBjaGFuZ2VzIHRvIHlvdXIgQlNQIGxheWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlcmUgcmVtYWlucyBhIGZldyB0aGluZ3MgeW91IG5lZWQgdG8gZG8gZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpbiBvcmRlciBmb3IgaXQgdG8gY3JlYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZ2V0IHRoZSBidWlsZCBlbnZpcm9ubWVudCByZWFkeSBieQotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNpbmcgYW4gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3UgbmVlZCB0byBiZSBzdXJlIHR3byBrZXkgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgYXJlIGNvbmZpZ3VyZWQgYXBwcm9wcmlhdGVseTogdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBtYWtlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF3YXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBvZiB5b3VyIG5ldyBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNlbmFibGluZy15b3VyLWxheWVyJz5FbmFibGluZyBZb3VyIExheWVyPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBsZXQgdGhlIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAga25vdyBhYm91dCB5b3VyIG5ldyBsYXllci48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBlbnRpcmUgcHJvY2VzcyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ2aWV3ZWQgaW4gdGhlIHNlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iIHNlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0LgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IG1pZ2h0IHdhbnQgdG8gcmVmZXJlbmNlIHRoaXMgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBJbWFnZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgQml0QmFrZSB0b29sCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBidWlsZCBpbWFnZXMgYmFzZWQgb24gdGhlIHR5cGUgb2YgaW1hZ2UgeW91IHdhbnQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEJpdEJha2UgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBidWlsZCBwcm9jZXNzIHN1cHBvcnRzIHNldmVyYWwgdHlwZXMgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcyB0byBzYXRpc2Z5IGRpZmZlcmVudCBuZWVkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIHN1cHBvcnRlZCBpbWFnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVtZW50cy1hbmQtcmVjb21tZW5kYXRpb25zLWZvci1yZWxlYXNlZC1ic3BzJz4KLSAgICAgICAgICAgIDx0aXRsZT5SZXF1aXJlbWVudHMgYW5kIFJlY29tbWVuZGF0aW9ucyBmb3IgUmVsZWFzZWQgQlNQczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIENlcnRhaW4gcmVxdWlyZW1lbnRzIGV4aXN0IGZvciBhIHJlbGVhc2VkIEJTUCB0byBiZSBjb25zaWRlcmVkCi0gICAgICAgICAgICAgICAgY29tcGxpYW50IHdpdGggdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCByZWNvbW1lbmRhdGlvbnMgYWxzbyBleGlzdC4KLSAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSByZXF1aXJlbWVudHMgYW5kIHJlY29tbWVuZGF0aW9ucyBmb3IKLSAgICAgICAgICAgICAgICByZWxlYXNlZCBCU1BzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0ncmVsZWFzZWQtYnNwLXJlcXVpcmVtZW50cyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPlJlbGVhc2VkIEJTUCBSZXF1aXJlbWVudHM8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEJlZm9yZSBsb29raW5nIGF0IEJTUCByZXF1aXJlbWVudHMsIHlvdSBzaG91bGQgY29uc2lkZXIgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgcmVxdWlyZW1lbnRzIGhlcmUgYXNzdW1lIHRoZSBCU1AgbGF5ZXIgaXMgYSB3ZWxsLWZvcm1lZCwgImxlZ2FsIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyIHRoYXQgY2FuIGJlIGFkZGVkIHRvIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBndWlkZWxpbmVzIG9uIGNyZWF0aW5nIGEgbGF5ZXIgdGhhdCBtZWV0cyB0aGVzZSBiYXNlIHJlcXVpcmVtZW50cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC9saW5rPiIgYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgQ3JlYXRpbmcgTGF5ZXJzIjwvdWxpbms+IGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgcmVxdWlyZW1lbnRzIGluIHRoaXMgc2VjdGlvbiBhcHBseSByZWdhcmRsZXNzIG9mIGhvdyB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGEgQlNQLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgY29uc3VsdCB0aGUgcGFja2FnaW5nIGFuZCBkaXN0cmlidXRpb24gZ3VpZGVsaW5lcyBmb3IgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHJlbGVhc2UgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBwYWNrYWdpbmcgYW5kIGRpc3RyaWJ1dGlvbiByZXF1aXJlbWVudHMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaGlyZF9QYXJ0eV9CU1BfUmVsZWFzZV9Qcm9jZXNzJz5UaGlyZCBQYXJ0eSBCU1AgUmVsZWFzZSBQcm9jZXNzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSByZXF1aXJlbWVudHMgZm9yIHRoZSBCU1AgYXMgaXQgaXMgbWFkZSBhdmFpbGFibGUgdG8gYSBkZXZlbG9wZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiB0aGUgcmVsZWFzZWQgZm9ybSBvZiB0aGUgQlNQLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgQlNQIE1ldGFkYXRhIGNhbiBiZSBjb250YWluZWQgd2l0aGluIGEgR2l0IHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgY291bGQgaGF2ZSBhIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgY29tcGxldGVseSBkaWZmZXJlbnQgZnJvbSB3aGF0IGFwcGVhcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb2ZmaWNpYWxseSByZWxlYXNlZCBCU1AgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SXQgaXMgbm90IHJlcXVpcmVkIHRoYXQgc3BlY2lmaWMgcGFja2FnZXMgb3IgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWNhdGlvbnMgZXhpc3QgaW4gdGhlIEJTUCBsYXllciwgYmV5b25kIHRoZSByZXF1aXJlbWVudHMgZm9yIGdlbmVyYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGlhbmNlIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIG5vIHJlcXVpcmVtZW50IGV4aXN0cyBkaWN0YXRpbmcgdGhhdCBhIHNwZWNpZmljIGtlcm5lbCBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCB2ZXJzaW9uIGJlIHVzZWQgaW4gYSBnaXZlbiBCU1AuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBzZXQgdXAgYSBsYXllciBmb3IgYSBuZXcgQlNQLAorICAgICAgICAgICAgICAgIHlvdSBzaG91bGQgZm9sbG93IGEgc3RhbmRhcmQgbGF5b3V0LgorICAgICAgICAgICAgICAgIFRoaXMgbGF5b3V0IGlzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYnNwLWZpbGVsYXlvdXQnPkV4YW1wbGUgRmlsZXN5c3RlbSBMYXlvdXQ8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgSW4gdGhlIHN0YW5kYXJkIGxheW91dCwgbm90aWNlIHRoZSBzdWdnZXN0ZWQKKyAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgZm9yIHJlY2lwZXMgYW5kIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgc3RhbmRhcmQgbGF5b3V0IGZvciBhIEJTUAorICAgICAgICAgICAgICAgIGJ5IGV4YW1pbmluZyBhbnkgc3VwcG9ydGVkIEJTUCBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyIGluc2lkZQorICAgICAgICAgICAgICAgIHRoZSBTb3VyY2UgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyB0byBZb3VyIE5ldworICAgICAgICAgICAgICAgIEJTUCBMYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBzdGFuZGFyZCBCU1AgbGF5ZXIgc3RydWN0dXJlIG9yZ2FuaXplcyB0aGUKKyAgICAgICAgICAgICAgICBmaWxlcyB5b3UgbmVlZCB0byBlZGl0IGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBhbmQgc2V2ZXJhbAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgQlNQIGxheWVyLgorICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY2hhbmdlcyBpZGVudGlmeSB3aGVyZSB5b3VyIG5ldworICAgICAgICAgICAgICAgIGxheWVyIGlzIG9uIHRoZSBsb2NhbCBzeXN0ZW0gYW5kIGlkZW50aWZpZXMgdGhlCisgICAgICAgICAgICAgICAga2VybmVsIHlvdSBhcmUgZ29pbmcgdG8gdXNlLgorICAgICAgICAgICAgICAgIFdoZW4geW91IHJ1biB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBzY3JpcHQsCisgICAgICAgICAgICAgICAgeW91IGFyZSBhYmxlIHRvIGludGVyYWN0aXZlbHkgY29uZmlndXJlIG1hbnkKKyAgICAgICAgICAgICAgICB0aGluZ3MgZm9yIHRoZSBCU1AgKGUuZy4ga2V5Ym9hcmQsIHRvdWNoc2NyZWVuLAorICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgUmVjaXBlIENoYW5nZXMgdG8gWW91ciBOZXcgQlNQCisgICAgICAgICAgICAgICAgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBSZWNpcGUgY2hhbmdlcyBpbmNsdWRlIGFsdGVyaW5nIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPiouYmI8L2ZpbGVuYW1lPiBmaWxlcyksIHJlbW92aW5nCisgICAgICAgICAgICAgICAgcmVjaXBlcyB5b3UgZG8gbm90IHVzZSwgYW5kIGFkZGluZyBuZXcgcmVjaXBlcworICAgICAgICAgICAgICAgIG9yIGFwcGVuZCBmaWxlcyAoPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgIHRoYXQgc3VwcG9ydCB5b3VyIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIGZvciB0aGUgQnVpbGQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIG1hZGUgYWxsIHRoZSBjaGFuZ2VzIHRvIHlvdXIgQlNQCisgICAgICAgICAgICAgICAgbGF5ZXIsIHRoZXJlIHJlbWFpbnMgYSBmZXcgdGhpbmdzIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgZG8gZm9yIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluIG9yZGVyCisgICAgICAgICAgICAgICAgZm9yIGl0IHRvIGNyZWF0ZSB5b3VyIGltYWdlLgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGdldCB0aGUgYnVpbGQgZW52aXJvbm1lbnQgcmVhZHkgYnkKKyAgICAgICAgICAgICAgICBzb3VyY2luZyBhbiBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKKyAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICBhbmQgeW91IG5lZWQgdG8gYmUgc3VyZSB0d28ga2V5IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBmaWxlcyBhcmUgY29uZmlndXJlZCBhcHByb3ByaWF0ZWx5OiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gYW5kIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIFlvdSBtdXN0IG1ha2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXdhcmUKKyAgICAgICAgICAgICAgICBvZiB5b3VyIG5ldyBsYXllci4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2VuYWJsaW5nLXlvdXItbGF5ZXInPkVuYWJsaW5nIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gbGV0IHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICBrbm93IGFib3V0IHlvdXIgbmV3IGxheWVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgSW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZSBCaXRCYWtlIHRvb2wKKyAgICAgICAgICAgICAgICB0byBidWlsZCBpbWFnZXMgYmFzZWQgb24gdGhlIHR5cGUgb2YgaW1hZ2UgeW91IHdhbnQgdG8KKyAgICAgICAgICAgICAgICBjcmVhdGUuCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQml0QmFrZSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgdGhlIHJlcXVpcmVtZW50cyBmb3IgYSByZWxlYXNlZCBCU1AgdGhhdCBjb25mb3JtIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0OgorICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBidWlsZCBwcm9jZXNzIHN1cHBvcnRzIHNldmVyYWwgdHlwZXMgb2YKKyAgICAgICAgICAgICAgICBpbWFnZXMgdG8gc2F0aXNmeSBkaWZmZXJlbnQgbmVlZHMuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gc3VwcG9ydGVkIGltYWdlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZXF1aXJlbWVudHMtYW5kLXJlY29tbWVuZGF0aW9ucy1mb3ItcmVsZWFzZWQtYnNwcyc+CisgICAgPHRpdGxlPlJlcXVpcmVtZW50cyBhbmQgUmVjb21tZW5kYXRpb25zIGZvciBSZWxlYXNlZCBCU1BzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBDZXJ0YWluIHJlcXVpcmVtZW50cyBleGlzdCBmb3IgYSByZWxlYXNlZCBCU1AgdG8gYmUKKyAgICAgICAgY29uc2lkZXJlZCBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgQWRkaXRpb25hbGx5LCByZWNvbW1lbmRhdGlvbnMgYWxzbyBleGlzdC4KKyAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgcmVxdWlyZW1lbnRzIGFuZAorICAgICAgICByZWNvbW1lbmRhdGlvbnMgZm9yIHJlbGVhc2VkIEJTUHMuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlbGVhc2VkLWJzcC1yZXF1aXJlbWVudHMnPgorICAgICAgICA8dGl0bGU+UmVsZWFzZWQgQlNQIFJlcXVpcmVtZW50czwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCZWZvcmUgbG9va2luZyBhdCBCU1AgcmVxdWlyZW1lbnRzLCB5b3Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgICAgICB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSByZXF1aXJlbWVudHMgaGVyZSBhc3N1bWUgdGhlIEJTUCBsYXllcgorICAgICAgICAgICAgICAgICAgICBpcyBhIHdlbGwtZm9ybWVkLCAibGVnYWwiIGxheWVyIHRoYXQgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZ3VpZGVsaW5lcyBvbiBjcmVhdGluZyBhIGxheWVyIHRoYXQgbWVldHMKKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgYmFzZSByZXF1aXJlbWVudHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoaXMgbWFudWFsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzIjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVxdWlyZW1lbnRzIGluIHRoaXMgc2VjdGlvbiBhcHBseQorICAgICAgICAgICAgICAgICAgICByZWdhcmRsZXNzIG9mIGhvdyB5b3UgcGFja2FnZSBhIEJTUC4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBjb25zdWx0IHRoZSBwYWNrYWdpbmcgYW5kIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgICAgICBndWlkZWxpbmVzIGZvciB5b3VyIHNwZWNpZmljIHJlbGVhc2UgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgb2YgcGFja2FnaW5nIGFuZCBkaXN0cmlidXRpb24KKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RoaXJkX1BhcnR5X0JTUF9SZWxlYXNlX1Byb2Nlc3MnPlRoaXJkIFBhcnR5IEJTUCBSZWxlYXNlIFByb2Nlc3M8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSByZXF1aXJlbWVudHMgZm9yIHRoZSBCU1AgYXMgaXQgaXMgbWFkZQorICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgdG8gYSBkZXZlbG9wZXIgYXJlIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgICAgICAgaW5kZXBlbmRlbnQgb2YgdGhlIHJlbGVhc2VkIGZvcm0gb2YgdGhlIEJTUC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBCU1AgTWV0YWRhdGEgY2FuIGJlIGNvbnRhaW5lZAorICAgICAgICAgICAgICAgICAgICB3aXRoaW4gYSBHaXQgcmVwb3NpdG9yeSBhbmQgY291bGQgaGF2ZSBhIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgY29tcGxldGVseSBkaWZmZXJlbnQgZnJvbSB3aGF0IGFwcGVhcnMKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG9mZmljaWFsbHkgcmVsZWFzZWQgQlNQIGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEl0IGlzIG5vdCByZXF1aXJlZCB0aGF0IHNwZWNpZmljIHBhY2thZ2VzIG9yCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbW9kaWZpY2F0aW9ucyBleGlzdCBpbiB0aGUgQlNQIGxheWVyLAorICAgICAgICAgICAgICAgICAgICBiZXlvbmQgdGhlIHJlcXVpcmVtZW50cyBmb3IgZ2VuZXJhbAorICAgICAgICAgICAgICAgICAgICBjb21wbGlhbmNlIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBubyByZXF1aXJlbWVudCBleGlzdHMgZGljdGF0aW5nCisgICAgICAgICAgICAgICAgICAgIHRoYXQgYSBzcGVjaWZpYyBrZXJuZWwgb3Iga2VybmVsIHZlcnNpb24gYmUKKyAgICAgICAgICAgICAgICAgICAgdXNlZCBpbiBhIGdpdmVuIEJTUC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGFyZSB0aGUgcmVxdWlyZW1lbnRzIGZvciBhIHJlbGVhc2VkIEJTUAorICAgICAgICAgICAgdGhhdCBjb25mb3JtIHRvIHRoZSBZb2N0byBQcm9qZWN0OgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXllciBOYW1lOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBCU1AgbXVzdCBoYXZlIGEgbGF5ZXIgbmFtZSB0aGF0IGZvbGxvd3MKKyAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3Qgc3RhbmRhcmRzLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gQlNQIGxheWVyIG5hbWVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC9saW5rPiIgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RmlsZSBTeXN0ZW0gTGF5b3V0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gcG9zc2libGUsIHVzZSB0aGUgc2FtZSBkaXJlY3RvcnkgbmFtZXMKKyAgICAgICAgICAgICAgICAgICAgaW4geW91ciBCU1AgbGF5ZXIgYXMgbGlzdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy50eHQ8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaAorICAgICAgICAgICAgICAgICAgICBpcyBmb3VuZCBpbiA8ZmlsZW5hbWU+cG9reS9tZXRhPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb3IgaW4gdGhlIE9wZW5FbWJlZGRlZC1Db3JlIExheWVyCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpbGVuYW1lPikgYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL3RyZWUvbWV0YSc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3Ugc2hvdWxkIHBsYWNlIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJiPC9maWxlbmFtZT4gZmlsZXMpIGFuZCByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgbW9kaWZpY2F0aW9ucyAoPGZpbGVuYW1lPiouYmJhcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlcykgaW50byA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3JpZXMgYnkgZnVuY3Rpb25hbCBhcmVhIGFzIG91dGxpbmVkCisgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5yZWNpcGVzLnR4dDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgY2Fubm90IGZpbmQgYSBjYXRlZ29yeSBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy50eHQ8L2ZpbGVuYW1lPiB0byBmaXQgYQorICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHJlY2lwZSwgeW91IGNhbiBtYWtlIHVwIHlvdXIgb3duCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPiBzdWJkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaXRoaW4gYW55IHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtKjwvZmlsZW5hbWU+IGNhdGVnb3J5LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0IHNob3VsZCBtYXRjaCB3aGF0IGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQtQ29yZSBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPm9wZW5lbWJlZGRlZC1jb3JlPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgIG9yIHRoZSBTb3VyY2UgRGlyZWN0b3J5ICg8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIG1ha2Ugc3VyZSB5b3UgcGxhY2UgcmVsYXRlZAorICAgICAgICAgICAgICAgICAgICBmaWxlcyBpbiBhcHByb3ByaWF0ZWx5IHJlbGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtKjwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yaWVzCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHRvIHRoZSByZWNpcGUncyBmdW5jdGlvbiwgb3Igd2l0aGluCisgICAgICAgICAgICAgICAgICAgIGEgc3ViZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBzZXQgb2YgY2xvc2VseS1yZWxhdGVkCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGVzIHRoZW1zZWx2ZXMgc2hvdWxkIGZvbGxvdyB0aGUgZ2VuZXJhbAorICAgICAgICAgICAgICAgICAgICBndWlkZWxpbmVzIGZvciByZWNpcGVzIHVzZWQgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwOi8vb3BlbmVtYmVkZGVkLm9yZy93aWtpL1N0eWxlZ3VpZGUnPk9wZW5FbWJlZGRlZCBTdHlsZSBHdWlkZTwvdWxpbms+Ii4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGljZW5zZSBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGluY2x1ZGUgYSBsaWNlbnNlIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgbGljZW5zZSBjb3ZlcnMgdGhlIEJTUCBNZXRhZGF0YSBhcyBhIHdob2xlLgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBzcGVjaWZ5IHdoaWNoIGxpY2Vuc2UgdG8gdXNlIHNpbmNlIG5vCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgbGljZW5zZSBleGlzdHMgd2hlbiBvbmUgbm90IHNwZWNpZmllZC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvbWV0YS1yYXNwYmVycnlwaS90cmVlL0NPUFlJTkcuTUlUJz48ZmlsZW5hbWU+Q09QWUlORy5NSVQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIHRoZSBSYXNwYmVycnkgUGkgQlNQIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IEJTUCBsYXllcgorICAgICAgICAgICAgICAgICAgICBhcyBhbiBleGFtcGxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SRUFETUUgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBpbmNsdWRlIGEgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL21ldGEtcmFzcGJlcnJ5cGkvdHJlZS9SRUFETUUubWQnPjxmaWxlbmFtZT5SRUFETUUubWQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIHRoZSBSYXNwYmVycnkgUGkgQlNQIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IEJTUCBsYXllcgorICAgICAgICAgICAgICAgICAgICBhcyBhbiBleGFtcGxlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5BdCBhIG1pbmltdW0sIHRoZSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5MYXllciBOYW1lOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIEJTUCBtdXN0IGhhdmUgYSBsYXllciBuYW1lIHRoYXQgZm9sbG93cyB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IHN0YW5kYXJkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gQlNQIGxheWVyIG5hbWVzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgYnJpZWYgZGVzY3JpcHRpb24gYWJvdXQgdGhlIGhhcmR3YXJlIHRoZSBCU1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5GaWxlIFN5c3RlbSBMYXlvdXQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHBvc3NpYmxlLCB1c2UgdGhlIHNhbWUgZGlyZWN0b3J5IG5hbWVzIGluIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1AgbGF5ZXIgYXMgbGlzdGVkIGluIHRoZSA8ZmlsZW5hbWU+cmVjaXBlcy50eHQ8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHlvdSBzaG91bGQgcGxhY2UgcmVjaXBlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZXMpIGFuZCByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmljYXRpb25zICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZXMpIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4gc3ViZGlyZWN0b3JpZXMgYnkgZnVuY3Rpb25hbCBhcmVhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgb3V0bGluZWQgaW4gPGZpbGVuYW1lPnJlY2lwZXMudHh0PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNhbm5vdCBmaW5kIGEgY2F0ZWdvcnkgaW4gPGZpbGVuYW1lPnJlY2lwZXMudHh0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaXQgYSBwYXJ0aWN1bGFyIHJlY2lwZSwgeW91IGNhbiBtYWtlIHVwIHlvdXIgb3duCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtKjwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgPGZpbGVuYW1lPnJlY2lwZXMudHh0PC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGluIHRoZSBPcGVuRW1iZWRkZWQgQ29yZSBMYXllcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpbGVuYW1lPikgZm91bmQgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvdHJlZS9tZXRhJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2l0aGluIGFueSBwYXJ0aWN1bGFyIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPiBjYXRlZ29yeSwgdGhlIGxheW91dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBtYXRjaCB3aGF0IGlzIGZvdW5kIGluIHRoZSBPcGVuRW1iZWRkZWQgQ29yZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5ICg8ZmlsZW5hbWU+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUgU291cmNlIERpcmVjdG9yeSAoPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIG1ha2Ugc3VyZSB5b3UgcGxhY2UgcmVsYXRlZCBmaWxlcyBpbiBhcHByb3ByaWF0ZWx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZCA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4gc3ViZGlyZWN0b3JpZXMgc3BlY2lmaWMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlJ3MgZnVuY3Rpb24sIG9yIHdpdGhpbiBhIHN1YmRpcmVjdG9yeSBjb250YWluaW5nIGEgc2V0IG9mIGNsb3NlbHktcmVsYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZXMgdGhlbXNlbHZlcyBzaG91bGQgZm9sbG93IHRoZSBnZW5lcmFsIGd1aWRlbGluZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcmVjaXBlcyB1c2VkIGluIHRoZSBZb2N0byBQcm9qZWN0IGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwOi8vb3BlbmVtYmVkZGVkLm9yZy93aWtpL1N0eWxlZ3VpZGUnPk9wZW5FbWJlZGRlZCBTdHlsZSBHdWlkZTwvdWxpbms+Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgYWxsIHRoZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB3aGljaCBhIEJTUCBsYXllciBkZXBlbmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgdHlwaWNhbGx5IGEgbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHJlcXVpcmVkIGxheWVycyBuZWVkZWQgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNQLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBkZXBlbmRlbmNpZXMgc2hvdWxkIGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBhbnkgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgdGhlIEJTUCBtaWdodCBoYXZlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5MaWNlbnNlIEZpbGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBpbmNsdWRlIGEgbGljZW5zZSBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbGljZW5zZSBjb3ZlcnMgdGhlIEJTUCBNZXRhZGF0YSBhcyBhIHdob2xlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNwZWNpZnkgd2hpY2ggbGljZW5zZSB0byB1c2Ugc2luY2UgdGhlcmUgaXMgbm8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGxpY2Vuc2UgaWYgb25lIGlzIG5vdCBzcGVjaWZpZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9tZXRhLXJhc3BiZXJyeXBpL3RyZWUvQ09QWUlORy5NSVQnPjxmaWxlbmFtZT5DT1BZSU5HLk1JVDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGZvciB0aGUgUmFzcGJlcnJ5IFBpIEJTUCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IEJTUCBsYXllciBhcyBhbiBleGFtcGxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueSByZXF1aXJlZCBzcGVjaWFsIGxpY2Vuc2luZyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIHNwZWNpYWwgdmFyaWFibGVzIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNhdGlzZnkgYSBFVUxBLCBvciBpbnN0cnVjdGlvbnMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gYnVpbGQgb3IgZGlzdHJpYnV0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyaWVzIGJ1aWx0IGZyb20gdGhlIEJTUCBNZXRhZGF0YS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UkVBRE1FIEZpbGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBpbmNsdWRlIGEgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9tZXRhLXJhc3BiZXJyeXBpL3RyZWUvUkVBRE1FJz48ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIHRoZSBSYXNwYmVycnkgUGkgQlNQIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IEJTUCBsYXllcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGFuIGV4YW1wbGUuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkF0IGEgbWluaW11bSwgdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIHNob3VsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW4gdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSBicmllZiBkZXNjcmlwdGlvbiBhYm91dCB0aGUgaGFyZHdhcmUgdGhlIEJTUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgbGlzdCBvZiBhbGwgdGhlIGRlcGVuZGVuY2llcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gd2hpY2ggYSBCU1AgbGF5ZXIgZGVwZW5kcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgdHlwaWNhbGx5IGEgbGlzdCBvZiByZXF1aXJlZCBsYXllcnMgbmVlZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBidWlsZCB0aGUgQlNQLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIGRlcGVuZGVuY2llcyBzaG91bGQgYWxzbyBjb250YWluIGluZm9ybWF0aW9uIHJlZ2FyZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IG90aGVyIGRlcGVuZGVuY2llcyB0aGUgQlNQIG1pZ2h0IGhhdmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BbnkgcmVxdWlyZWQgc3BlY2lhbCBsaWNlbnNpbmcgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlcyBpbmZvcm1hdGlvbiBvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbCB2YXJpYWJsZXMgbmVlZGVkIHRvIHNhdGlzZnkgYSBFVUxBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgaW5zdHJ1Y3Rpb25zIG9uIGluZm9ybWF0aW9uIG5lZWRlZCB0byBidWlsZCBvciBkaXN0cmlidXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcmllcyBidWlsdCBmcm9tIHRoZSBCU1AgTWV0YWRhdGEuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgbmFtZSBhbmQgY29udGFjdCBpbmZvcm1hdGlvbiBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1AgbGF5ZXIgbWFpbnRhaW5lci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIHBlcnNvbiB0byB3aG9tIHBhdGNoZXMgYW5kIHF1ZXN0aW9ucyBzaG91bGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHNlbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGZpbmQgdGhlIHJpZ2h0IHBlcnNvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbnN0cnVjdGlvbnMgb24gaG93IHRvIGJ1aWxkIHRoZSBCU1AgdXNpbmcgdGhlIEJTUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbnN0cnVjdGlvbnMgb24gaG93IHRvIGJvb3QgdGhlIEJTUCBidWlsZCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgQlNQIGxheWVyLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBib290IHRoZSBiaW5hcnkgaW1hZ2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZWQgaW4gdGhlIDxmaWxlbmFtZT5iaW5hcnk8L2ZpbGVuYW1lPiBkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwcmVzZW50LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW5mb3JtYXRpb24gb24gYW55IGtub3duIGJ1Z3Mgb3IgaXNzdWVzIHRoYXQgdXNlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBrbm93IGFib3V0IHdoZW4gZWl0aGVyIGJ1aWxkaW5nIG9yIGJvb3RpbmcgdGhlIEJTUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJpZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJFQURNRS5zb3VyY2VzIEZpbGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBpbmNsdWRlIGEgPGZpbGVuYW1lPlJFQURNRS5zb3VyY2VzPC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIHNwZWNpZmllcyBleGFjdGx5IHdoZXJlIHlvdSBjYW4gZmluZCB0aGUgc291cmNlcyB1c2VkIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgdGhlIGJpbmFyeSBpbWFnZXMgY29udGFpbmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5hcnk8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIGlmIHByZXNlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgYW5kIGNvbnRhY3QgaW5mb3JtYXRpb24gZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTUCBsYXllciBtYWludGFpbmVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIHBlcnNvbiB0byB3aG9tIHBhdGNoZXMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25zIHNob3VsZCBiZSBzZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZmluZCB0aGUgcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkxheWVyIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGluY2x1ZGUgYSA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGlkZW50aWZpZXMgdGhlIDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1AgbGF5ZXIgYXMgYSBsYXllciB0byB0aGUgYnVpbGQgc3lzdGVtLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NYWNoaW5lIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGluY2x1ZGUgb25lIG9yIG1vcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lLzxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+LmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIGRlZmluZSBtYWNoaW5lIHRhcmdldHMgdGhhdCBjYW4gYmUgYnVpbHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgQlNQIGxheWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpcGxlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcyBkZWZpbmUgdmFyaWF0aW9ucyBvZiBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBCU1AuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgYSBCU1Agc3VwcG9ydHMgbXVsdGlwbGUgbWFjaGluZSB2YXJpYXRpb25zLCB5b3UgbmVlZCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZXF1YXRlbHkgZGVzY3JpYmUgZWFjaCB2YXJpYXRpb24gaW4gdGhlIEJTUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvIG5vdCB1c2UgbXVsdGlwbGUgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGRlc2NyaWJlIGRpc3BhcmF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBoYXZlIHZlcnkgZGlmZmVyZW50IHRhcmdldHMsIHlvdSBzaG91bGQgY3JlYXRlIHNlcGFyYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNQIGxheWVycyBmb3IgZWFjaCB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+SXQgaXMgY29tcGxldGVseSBwb3NzaWJsZSBmb3IgYSBkZXZlbG9wZXIgdG8gc3RydWN0dXJlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgcmVwb3NpdG9yeSBhcyBhIGNvbmdsb21lcmF0aW9uIG9mIHVucmVsYXRlZCBCU1AKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcywgYW5kIHRvIHBvc3NpYmx5IGdlbmVyYXRlIEJTUHMgdGFyZ2V0ZWQgZm9yIHJlbGVhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoYXQgZGlyZWN0b3J5IHVzaW5nIHNjcmlwdHMgb3Igc29tZSBvdGhlciBtZWNoYW5pc20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllcikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VjaCBjb25zaWRlcmF0aW9ucyBhcmUgb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBkb2N1bWVudC48L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBidWlsZCB0aGUgQlNQIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEJTUCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbnMgb24gaG93IHRvIGJvb3QgdGhlIEJTUCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIEJTUCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbnMgb24gaG93IHRvIGJvb3QgdGhlIGJpbmFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcyBjb250YWluZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpbmFyeTwvZmlsZW5hbWU+IGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwcmVzZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIG9uIGFueSBrbm93biBidWdzIG9yIGlzc3VlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgdXNlcnMgc2hvdWxkIGtub3cgYWJvdXQgd2hlbiBlaXRoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBvciBib290aW5nIHRoZSBCU1AgYmluYXJpZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UkVBRE1FLnNvdXJjZXMgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgQlNQIGNvbnRhaW5zIGJpbmFyeSBpbWFnZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5hcnk8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHlvdSBtdXN0CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgYSA8ZmlsZW5hbWU+UkVBRE1FLnNvdXJjZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGUgc3BlY2lmaWVzIGV4YWN0bHkgd2hlcmUgeW91IGNhbiBmaW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2VzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGJpbmFyeSBpbWFnZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxheWVyIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBpbmNsdWRlIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBpZGVudGlmaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgQlNQIGxheWVyIGFzIGEgbGF5ZXIgdG8gdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFjaGluZSBDb25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgaW5jbHVkZSBvbmUgb3IgbW9yZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIGRlZmluZSBtYWNoaW5lIHRhcmdldHMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBjYW4gYmUgYnVpbHQgdXNpbmcgdGhlIEJTUCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgTXVsdGlwbGUgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIGRlZmluZQorICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb25zIG9mIG1hY2hpbmUgY29uZmlndXJhdGlvbnMgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgQlNQIHN1cHBvcnRzLgorICAgICAgICAgICAgICAgICAgICBJZiBhIEJTUCBzdXBwb3J0cyBtdWx0aXBsZSBtYWNoaW5lIHZhcmlhdGlvbnMsCisgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIGFkZXF1YXRlbHkgZGVzY3JpYmUgZWFjaCB2YXJpYXRpb24KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIEJTUCA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgRG8gbm90IHVzZSBtdWx0aXBsZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gZGVzY3JpYmUgZGlzcGFyYXRlIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gaGF2ZSB2ZXJ5IGRpZmZlcmVudCB0YXJnZXRzLCB5b3Ugc2hvdWxkCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBzZXBhcmF0ZSBCU1AgbGF5ZXJzIGZvciBlYWNoIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBjb21wbGV0ZWx5IHBvc3NpYmxlIGZvciBhIGRldmVsb3BlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlIHRoZSB3b3JraW5nIHJlcG9zaXRvcnkgYXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgY29uZ2xvbWVyYXRpb24gb2YgdW5yZWxhdGVkIEJTUCBmaWxlcywgYW5kIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJseSBnZW5lcmF0ZSBCU1BzIHRhcmdldGVkIGZvciByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoYXQgZGlyZWN0b3J5IHVzaW5nIHNjcmlwdHMgb3Igc29tZQorICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgbWVjaGFuaXNtCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllcikuCisgICAgICAgICAgICAgICAgICAgICAgICBTdWNoIGNvbnNpZGVyYXRpb25zIGFyZSBvdXRzaWRlIHRoZSBzY29wZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBkb2N1bWVudC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0ncmVsZWFzZWQtYnNwLXJlY29tbWVuZGF0aW9ucyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPlJlbGVhc2VkIEJTUCBSZWNvbW1lbmRhdGlvbnM8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdyZWxlYXNlZC1ic3AtcmVjb21tZW5kYXRpb25zJz4KKyAgICAgICAgPHRpdGxlPlJlbGVhc2VkIEJTUCBSZWNvbW1lbmRhdGlvbnM8L3RpdGxlPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgcmVjb21tZW5kYXRpb25zIGZvciBhIHJlbGVhc2VkIEJTUCB0aGF0IGNvbmZvcm1zIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0OgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Cb290YWJsZSBJbWFnZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1AgcmVsZWFzZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gY29udGFpbiBvbmUgb3IgbW9yZSBib290YWJsZSBpbWFnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkaW5nIGJvb3RhYmxlIGltYWdlcyBhbGxvd3MgdXNlcnMgdG8gZWFzaWx5IHRyeSBvdXQgdGhlIEJTUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZWlyIG93biBoYXJkd2FyZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gc29tZSBjYXNlcywgaXQgbWlnaHQgbm90IGJlIGNvbnZlbmllbnQgdG8gaW5jbHVkZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdGFibGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB5b3UgbWlnaHQgd2FudCB0byBtYWtlIHR3byB2ZXJzaW9ucyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1AgYXZhaWxhYmxlOiBvbmUgdGhhdCBjb250YWlucyBiaW5hcnkgaW1hZ2VzLCBhbmQgb25lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBkb2VzIG5vdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdmVyc2lvbiB0aGF0IGRvZXMgbm90IGNvbnRhaW4gYm9vdGFibGUgaW1hZ2VzIGF2b2lkcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubmVjZXNzYXJ5IGRvd25sb2FkIHRpbWVzIGZvciB1c2VycyBub3QgaW50ZXJlc3RlZCBpbiB0aGUgaW1hZ2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgbmVlZCB0byBkaXN0cmlidXRlIGEgQlNQIGFuZCBpbmNsdWRlIGJvb3RhYmxlIGltYWdlcyBvciBidWlsZCBrZXJuZWwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbXMgbWVhbnQgdG8gYWxsb3cgdXNlcnMgdG8gYm9vdCB0aGUgQlNQIGZvciBldmFsdWF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVycG9zZXMsIHlvdSBzaG91bGQgcHV0IHRoZSBpbWFnZXMgYW5kIGFydGlmYWN0cyB3aXRoaW4gYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5hcnkvPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5IGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+SWYgeW91IGRvIGluY2x1ZGUgYSBib290YWJsZSBpbWFnZSBhcyBwYXJ0IG9mIHRoZSBCU1AgYW5kIHRoZSBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBidWlsdCBieSBzb2Z0d2FyZSBjb3ZlcmVkIGJ5IHRoZSBHUEwgb3Igb3RoZXIgb3BlbiBzb3VyY2UgbGljZW5zZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgeW91ciByZXNwb25zaWJpbGl0eSB0byB1bmRlcnN0YW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1lZXQgYWxsIGxpY2Vuc2luZyByZXF1aXJlbWVudHMsIHdoaWNoIGNvdWxkIGluY2x1ZGUgZGlzdHJpYnV0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Ygc291cmNlIGZpbGVzLjwvbm90ZT48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNlIGEgWW9jdG8gTGludXggS2VybmVsOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsIHJlY2lwZXMgaW4gdGhlIEJTUCBzaG91bGQgYmUgYmFzZWQgb24gYSBZb2N0byBMaW51eCBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaW5nIHlvdXIgcmVjaXBlcyBvbiB0aGVzZSBrZXJuZWxzIHJlZHVjZXMgdGhlIGNvc3RzIGZvciBtYWludGFpbmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBCU1AgYW5kIGluY3JlYXNlcyBpdHMgc2NhbGFiaWxpdHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8ZmlsZW5hbWU+WW9jdG8gTGludXggS2VybmVsPC9maWxlbmFtZT4gY2F0ZWdvcnkgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlc2Uga2VybmVscy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGFyZSByZWNvbW1lbmRhdGlvbnMgZm9yIHJlbGVhc2VkIEJTUHMgdGhhdAorICAgICAgICAgICAgY29uZm9ybSB0byB0aGUgWW9jdG8gUHJvamVjdDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qm9vdGFibGUgSW1hZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VkIEJTUHMgY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUgYm9vdGFibGUKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICBJbmNsdWRpbmcgYm9vdGFibGUgaW1hZ2VzIGFsbG93cyB1c2VycyB0byBlYXNpbHkKKyAgICAgICAgICAgICAgICAgICAgdHJ5IG91dCB0aGUgQlNQIHVzaW5nIHRoZWlyIG93biBoYXJkd2FyZS48L3BhcmE+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J2N1c3RvbWl6aW5nLWEtcmVjaXBlLWZvci1hLWJzcCc+Ci0gICAgICAgICAgICA8dGl0bGU+Q3VzdG9taXppbmcgYSBSZWNpcGUgZm9yIGEgQlNQPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gc29tZSBjYXNlcywgaXQgbWlnaHQgbm90IGJlIGNvbnZlbmllbnQKKyAgICAgICAgICAgICAgICAgICAgdG8gaW5jbHVkZSBhIGJvb3RhYmxlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBJZiBzbywgeW91IG1pZ2h0IHdhbnQgdG8gbWFrZSB0d28gdmVyc2lvbnMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIEJTUCBhdmFpbGFibGU6IG9uZSB0aGF0IGNvbnRhaW5zIGJpbmFyeSBpbWFnZXMsIGFuZAorICAgICAgICAgICAgICAgICAgICBvbmUgdGhhdCBkb2VzIG5vdC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZlcnNpb24gdGhhdCBkb2VzIG5vdCBjb250YWluIGJvb3RhYmxlIGltYWdlcworICAgICAgICAgICAgICAgICAgICBhdm9pZHMgdW5uZWNlc3NhcnkgZG93bmxvYWQgdGltZXMgZm9yIHVzZXJzIG5vdAorICAgICAgICAgICAgICAgICAgICBpbnRlcmVzdGVkIGluIHRoZSBpbWFnZXMuPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgIElmIHlvdSBwbGFuIG9uIGN1c3RvbWl6aW5nIGEgcmVjaXBlIGZvciBhIHBhcnRpY3VsYXIgQlNQLCB5b3UgbmVlZCB0byBkbyB0aGUKLSAgICAgICAgICAgICAgIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNyZWF0ZSBhIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGZvciB0aGUgbW9kaWZpZWQgcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgYXBwZW5kIGZpbGVzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgRW5zdXJlIHlvdXIgZGlyZWN0b3J5IHN0cnVjdHVyZSBpbiB0aGUgQlNQIGxheWVyCi0gICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc3VwcG9ydHMgeW91ciBtYWNoaW5lIGlzIHN1Y2ggdGhhdCBpdCBjYW4gYmUgZm91bmQKLSAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBleGFtcGxlIGxhdGVyIGluIHRoaXMgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBQdXQgdGhlIGFwcGVuZCBmaWxlIGluIGEgZGlyZWN0b3J5IHdob3NlIG5hbWUgbWF0Y2hlcwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFjaGluZSdzIG5hbWUgYW5kIGlzIGxvY2F0ZWQgaW4gYW4gYXBwcm9wcmlhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgc3ViLWRpcmVjdG9yeSBpbnNpZGUgdGhlIEJTUCBsYXllciAoaS5lLgotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1ic3A8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnJlY2lwZXMtZ3JhcGhpY3M8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtY29yZTwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UGxhY2UgdGhlIEJTUC1zcGVjaWZpYyBmaWxlcyBpbiB0aGUgcHJvcGVyIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGUgdGhlIEJTUCBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgICAgSG93IGV4cGFuc2l2ZSB0aGUgbGF5ZXIgaXMgYWZmZWN0cyB3aGVyZSB5b3UgbXVzdCBwbGFjZSB0aGVzZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgbGF5ZXIgc3VwcG9ydHMgc2V2ZXJhbCBkaWZmZXJlbnQgbWFjaGluZSB0eXBlcywKLSAgICAgICAgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gYmUgc3VyZSB5b3VyIGxheWVyJ3MgZGlyZWN0b3J5IHN0cnVjdHVyZSBpbmNsdWRlcyBoaWVyYXJjaHkKLSAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzZXBhcmF0ZXMgdGhlIGZpbGVzIG91dCBhY2NvcmRpbmcgdG8gbWFjaGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBsYXllciBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIG1hY2hpbmVzLCB0aGUgbGF5ZXIgd291bGQgbm90Ci0gICAgICAgICAgICAgICAgICAgICAgIGhhdmUgdGhhdCBhZGRpdGlvbmFsIGhpZXJhcmNoeSBhbmQgdGhlIGZpbGVzIHdvdWxkIG9idmlvdXNseSBub3QgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgYWJsZSB0byByZXNpZGUgaW4gYSBtYWNoaW5lLXNwZWNpZmljIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgbmVlZCB0byBkaXN0cmlidXRlIGEgQlNQIGFuZCBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgIGJvb3RhYmxlIGltYWdlcyBvciBidWlsZCBrZXJuZWwgYW5kIGZpbGVzeXN0ZW1zCisgICAgICAgICAgICAgICAgICAgIG1lYW50IHRvIGFsbG93IHVzZXJzIHRvIGJvb3QgdGhlIEJTUCBmb3IgZXZhbHVhdGlvbgorICAgICAgICAgICAgICAgICAgICBwdXJwb3NlcywgeW91IHNob3VsZCBwdXQgdGhlIGltYWdlcyBhbmQgYXJ0aWZhY3RzCisgICAgICAgICAgICAgICAgICAgIHdpdGhpbiBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5hcnkvPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5IGxvY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIGluY2x1ZGUgYSBib290YWJsZSBpbWFnZSBhcyBwYXJ0CisgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgQlNQIGFuZCB0aGUgaW1hZ2Ugd2FzIGJ1aWx0IGJ5IHNvZnR3YXJlCisgICAgICAgICAgICAgICAgICAgICAgICBjb3ZlcmVkIGJ5IHRoZSBHUEwgb3Igb3RoZXIgb3BlbiBzb3VyY2UgbGljZW5zZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIHVuZGVyc3RhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtZWV0IGFsbCBsaWNlbnNpbmcgcmVxdWlyZW1lbnRzLCB3aGljaCBjb3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBkaXN0cmlidXRpb24gb2Ygc291cmNlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSBhIFlvY3RvIExpbnV4IEtlcm5lbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBLZXJuZWwgcmVjaXBlcyBpbiB0aGUgQlNQIHNob3VsZCBiZSBiYXNlZCBvbiBhCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIExpbnV4IGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgQmFzaW5nIHlvdXIgcmVjaXBlcyBvbiB0aGVzZSBrZXJuZWxzIHJlZHVjZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNvc3RzIGZvciBtYWludGFpbmluZyB0aGUgQlNQIGFuZCBpbmNyZWFzZXMKKyAgICAgICAgICAgICAgICAgICAgaXRzIHNjYWxhYmlsaXR5LgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIDxmaWxlbmFtZT5Zb2N0byBMaW51eCBLZXJuZWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZXNlIGtlcm5lbHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYSBzcGVjaWZpYyBleGFtcGxlIHRvIGhlbHAgeW91IGJldHRlciB1bmRlcnN0YW5kIHRoZSBwcm9jZXNzLgotICAgICAgICAgICAgICAgQ29uc2lkZXIgYW4gZXhhbXBsZSB0aGF0IGN1c3RvbWl6ZXMgYSByZWNpcGUgYnkgYWRkaW5nCi0gICAgICAgICAgICAgICBhIEJTUC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUgbmFtZWQgPGZpbGVuYW1lPmludGVyZmFjZXM8L2ZpbGVuYW1lPiB0byB0aGUKLSAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbml0LWlmdXBkb3duXzEuMC5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmb3IgbWFjaGluZSAieHl6IiB3aGVyZSB0aGUKLSAgICAgICAgICAgICAgIEJTUCBsYXllciBhbHNvIHN1cHBvcnRzIHNldmVyYWwgb3RoZXIgbWFjaGluZXMuCi0gICAgICAgICAgICAgICBEbyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FZGl0IHRoZSA8ZmlsZW5hbWU+aW5pdC1pZnVwZG93bl8xLjAuYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIHNvIHRoYXQgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorPHNlY3Rpb24gaWQ9J2N1c3RvbWl6aW5nLWEtcmVjaXBlLWZvci1hLWJzcCc+CisgICAgPHRpdGxlPkN1c3RvbWl6aW5nIGEgUmVjaXBlIGZvciBhIEJTUDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91IHBsYW4gb24gY3VzdG9taXppbmcgYSByZWNpcGUgZm9yIGEgcGFydGljdWxhciBCU1AsCisgICAgICAgIHlvdSBuZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ3JlYXRlIGEgPGZpbGVuYW1lPiouYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGZvcgorICAgICAgICAgICAgICAgIHRoZSBtb2RpZmllZCByZWNpcGUuCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIGFwcGVuZCBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIEVuc3VyZSB5b3VyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaW4gdGhlIEJTUCBsYXllcgorICAgICAgICAgICAgICAgIHRoYXQgc3VwcG9ydHMgeW91ciBtYWNoaW5lIGlzIHN1Y2ggdGhhdCB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNhbiBmaW5kIGl0LgorICAgICAgICAgICAgICAgIFNlZSB0aGUgZXhhbXBsZSBsYXRlciBpbiB0aGlzIHNlY3Rpb24gZm9yIG1vcmUKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBQdXQgdGhlIGFwcGVuZCBmaWxlIGluIGEgZGlyZWN0b3J5IHdob3NlIG5hbWUgbWF0Y2hlcworICAgICAgICAgICAgICAgIHRoZSBtYWNoaW5lJ3MgbmFtZSBhbmQgaXMgbG9jYXRlZCBpbiBhbiBhcHByb3ByaWF0ZQorICAgICAgICAgICAgICAgIHN1Yi1kaXJlY3RvcnkgaW5zaWRlIHRoZSBCU1AgbGF5ZXIgKGkuZS4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1ic3A8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1ncmFwaGljczwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWNvcmU8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBQbGFjZSB0aGUgQlNQLXNwZWNpZmljIGZpbGVzIGluIHRoZSBwcm9wZXIKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaW5zaWRlIHRoZSBCU1AgbGF5ZXIuCisgICAgICAgICAgICAgICAgSG93IGV4cGFuc2l2ZSB0aGUgbGF5ZXIgaXMgYWZmZWN0cyB3aGVyZSB5b3UgbXVzdAorICAgICAgICAgICAgICAgIHBsYWNlIHRoZXNlIGZpbGVzLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3VyIGxheWVyIHN1cHBvcnRzIHNldmVyYWwKKyAgICAgICAgICAgICAgICBkaWZmZXJlbnQgbWFjaGluZSB0eXBlcywgeW91IG5lZWQgdG8gYmUgc3VyZSB5b3VyCisgICAgICAgICAgICAgICAgbGF5ZXIncyBkaXJlY3Rvcnkgc3RydWN0dXJlIGluY2x1ZGVzIGhpZXJhcmNoeQorICAgICAgICAgICAgICAgIHRoYXQgc2VwYXJhdGVzIHRoZSBmaWxlcyBhY2NvcmRpbmcgdG8gbWFjaGluZS4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIGxheWVyIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgbWFjaGluZXMsCisgICAgICAgICAgICAgICAgdGhlIGxheWVyIHdvdWxkIG5vdCBoYXZlIHRoYXQgYWRkaXRpb25hbCBoaWVyYXJjaHkKKyAgICAgICAgICAgICAgICBhbmQgdGhlIGZpbGVzIHdvdWxkIG9idmlvdXNseSBub3QgYmUgYWJsZSB0byByZXNpZGUKKyAgICAgICAgICAgICAgICBpbiBhIG1hY2hpbmUtc3BlY2lmaWMgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9sbG93aW5nIGlzIGEgc3BlY2lmaWMgZXhhbXBsZSB0byBoZWxwIHlvdSBiZXR0ZXIgdW5kZXJzdGFuZAorICAgICAgICB0aGUgcHJvY2Vzcy4KKyAgICAgICAgVGhpcyBleGFtcGxlIGN1c3RvbWl6ZXMgY3VzdG9taXplcyBhIHJlY2lwZSBieSBhZGRpbmcgYQorICAgICAgICBCU1Atc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlIG5hbWVkCisgICAgICAgIDxmaWxlbmFtZT5pbnRlcmZhY2VzPC9maWxlbmFtZT4gdG8gdGhlCisgICAgICAgIDxmaWxlbmFtZT5pbml0LWlmdXBkb3duXzEuMC5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmb3IgbWFjaGluZQorICAgICAgICAieHl6IiB3aGVyZSB0aGUgQlNQIGxheWVyIGFsc28gc3VwcG9ydHMgc2V2ZXJhbCBvdGhlcgorICAgICAgICBtYWNoaW5lczoKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIEVkaXQgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluaXQtaWZ1cGRvd25fMS4wLmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgIHNvIHRoYXQgaXQgY29udGFpbnMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLSAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICBUaGUgYXBwZW5kIGZpbGUgbmVlZHMgdG8gYmUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXh5ei9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bjwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNyZWF0ZSBhbmQgcGxhY2UgdGhlIG5ldyA8ZmlsZW5hbWU+aW50ZXJmYWNlczwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUgQlNQJ3MgbGF5ZXIgaGVyZToKLSAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgYXBwZW5kIGZpbGUgbmVlZHMgdG8gYmUgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteHl6L3JlY2lwZXMtY29yZS9pbml0LWlmdXBkb3duPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ3JlYXRlIGFuZCBwbGFjZSB0aGUgbmV3CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmludGVyZmFjZXM8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgaW4KKyAgICAgICAgICAgICAgICB0aGUgQlNQJ3MgbGF5ZXIgaGVyZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIG1ldGEteHl6L3JlY2lwZXMtY29yZS9pbml0LWlmdXBkb3duL2ZpbGVzL3h5ei1tYWNoaW5lLW9uZS9pbnRlcmZhY2VzCi0gICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPm1ldGEteHl6PC9maWxlbmFtZT4gbGF5ZXIgZGlkIG5vdCBzdXBwb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBtYWNoaW5lcywgeW91IHdvdWxkIHBsYWNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmludGVyZmFjZXM8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllciBoZXJlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5tZXRhLXh5ejwvZmlsZW5hbWU+IGxheWVyIGRpZAorICAgICAgICAgICAgICAgICAgICBub3Qgc3VwcG9ydCBtdWx0aXBsZSBtYWNoaW5lcywgeW91IHdvdWxkIHBsYWNlCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+aW50ZXJmYWNlczwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUgbGF5ZXIgaGVyZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBtZXRhLXh5ei9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bi9maWxlcy9pbnRlcmZhY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSBhcHBlbmQgZmlsZXMgZXh0ZW5kcyB0aGUgc2VhcmNoIHBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIGZpbmQgZmlsZXMgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBmb3IgdGhpcyBleGFtcGxlIHlvdSBuZWVkIHRvIGhhdmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5maWxlczwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpbiB0aGUgc2FtZSBsb2NhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICBhcyB5b3VyIGFwcGVuZCBmaWxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdic3AtbGljZW5zaW5nLWNvbnNpZGVyYXRpb25zJz4KLSAgICAgICAgICAgIDx0aXRsZT5CU1AgTGljZW5zaW5nIENvbnNpZGVyYXRpb25zPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSW4gc29tZSBjYXNlcywgYSBCU1AgY29udGFpbnMgc2VwYXJhdGVseSBsaWNlbnNlZCBJbnRlbGxlY3R1YWwgUHJvcGVydHkgKElQKQotICAgICAgICAgICAgICAgIGZvciBhIGNvbXBvbmVudCBvciBjb21wb25lbnRzLgotICAgICAgICAgICAgICAgIEZvciB0aGVzZSBjYXNlcywgeW91IGFyZSByZXF1aXJlZCB0byBhY2NlcHQgdGhlIHRlcm1zIG9mIGEgY29tbWVyY2lhbCBvciBvdGhlcgotICAgICAgICAgICAgICAgIHR5cGUgb2YgbGljZW5zZSB0aGF0IHJlcXVpcmVzIHNvbWUga2luZCBvZiBleHBsaWNpdCBFbmQgVXNlciBMaWNlbnNlIEFncmVlbWVudCAoRVVMQSkuCi0gICAgICAgICAgICAgICAgT25jZSB0aGUgbGljZW5zZSBpcyBhY2NlcHRlZCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuIHRoZW4gYnVpbGQgYW5kCi0gICAgICAgICAgICAgICAgaW5jbHVkZSB0aGUgY29ycmVzcG9uZGluZyBjb21wb25lbnQgaW4gdGhlIGZpbmFsIEJTUCBpbWFnZS4KLSAgICAgICAgICAgICAgICBJZiB0aGUgQlNQIGlzIGF2YWlsYWJsZSBhcyBhIHByZS1idWlsdCBpbWFnZSwgeW91IGNhbiBkb3dubG9hZCB0aGUgaW1hZ2UgYWZ0ZXIKLSAgICAgICAgICAgICAgICBhZ3JlZWluZyB0byB0aGUgbGljZW5zZSBvciBFVUxBLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBZb3UgY291bGQgZmluZCB0aGF0IHNvbWUgc2VwYXJhdGVseSBsaWNlbnNlZCBjb21wb25lbnRzIHRoYXQgYXJlIGVzc2VudGlhbAotICAgICAgICAgICAgICAgIGZvciBub3JtYWwgb3BlcmF0aW9uIG9mIHRoZSBzeXN0ZW0gbWlnaHQgbm90IGhhdmUgYW4gdW5lbmN1bWJlcmVkIChvciBmcmVlKQotICAgICAgICAgICAgICAgIHN1YnN0aXR1dGUuCi0gICAgICAgICAgICAgICAgV2l0aG91dCB0aGVzZSBlc3NlbnRpYWwgY29tcG9uZW50cywgdGhlIHN5c3RlbSB3b3VsZCBiZSBub24tZnVuY3Rpb25hbC4KLSAgICAgICAgICAgICAgICBUaGVuIGFnYWluLCB5b3UgbWlnaHQgZmluZCB0aGF0IG90aGVyIGxpY2Vuc2VkIGNvbXBvbmVudHMgdGhhdCBhcmUgc2ltcGx5Ci0gICAgICAgICAgICAgICAgJ2dvb2QtdG8taGF2ZScgb3IgcHVyZWx5IGVsZWN0aXZlIGRvIGhhdmUgYW4gdW5lbmN1bWJlcmVkLCBmcmVlIHJlcGxhY2VtZW50Ci0gICAgICAgICAgICAgICAgY29tcG9uZW50IHRoYXQgeW91IGNhbiB1c2UgcmF0aGVyIHRoYW4gYWdyZWVpbmcgdG8gdGhlIHNlcGFyYXRlbHkgbGljZW5zZWQgY29tcG9uZW50LgotICAgICAgICAgICAgICAgIEV2ZW4gZm9yIGNvbXBvbmVudHMgZXNzZW50aWFsIHRvIHRoZSBzeXN0ZW0sIHlvdSBtaWdodCBmaW5kIGFuIHVuZW5jdW1iZXJlZCBjb21wb25lbnQKLSAgICAgICAgICAgICAgICB0aGF0IGlzIG5vdCBpZGVudGljYWwgYnV0IHdpbGwgd29yayBhcyBhIGxlc3MtY2FwYWJsZSB2ZXJzaW9uIG9mIHRoZQotICAgICAgICAgICAgICAgIGxpY2Vuc2VkIHZlcnNpb24gaW4gdGhlIEJTUCByZWNpcGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBjYXNlcyB3aGVyZSB5b3UgY2FuIHN1YnN0aXR1dGUgYSBmcmVlIGNvbXBvbmVudCBhbmQgc3RpbGwKLSAgICAgICAgICAgICAgICBtYWludGFpbiB0aGUgc3lzdGVtJ3MgZnVuY3Rpb25hbGl0eSwgdGhlICJEb3dubG9hZHMiIHBhZ2UgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IHdlYnNpdGUnczwvdWxpbms+Ci0gICAgICAgICAgICAgICAgbWFrZXMgYXZhaWxhYmxlIGRlLWZlYXR1cmVkIEJTUHMKLSAgICAgICAgICAgICAgICB0aGF0IGFyZSBjb21wbGV0ZWx5IGZyZWUgb2YgYW55IElQIGVuY3VtYnJhbmNlcy4KLSAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdSBjYW4gdXNlIHRoZSBzdWJzdGl0dXRpb24gZGlyZWN0bHkgYW5kCi0gICAgICAgICAgICAgICAgd2l0aG91dCBhbnkgZnVydGhlciBsaWNlbnNpbmcgcmVxdWlyZW1lbnRzLgotICAgICAgICAgICAgICAgIElmIHByZXNlbnQsIHRoZXNlIGZ1bGx5IGRlLWZlYXR1cmVkIEJTUHMgYXJlIG5hbWVkIGFwcHJvcHJpYXRlbHkKLSAgICAgICAgICAgICAgICBkaWZmZXJlbnQgYXMgY29tcGFyZWQgdG8gdGhlIG5hbWVzIG9mIHRoZSByZXNwZWN0aXZlCi0gICAgICAgICAgICAgICAgZW5jdW1iZXJlZCBCU1BzLgotICAgICAgICAgICAgICAgIElmIGF2YWlsYWJsZSwgdGhlc2Ugc3Vic3RpdHV0aW9ucyBhcmUgeW91cgotICAgICAgICAgICAgICAgIHNpbXBsZXN0IGFuZCBtb3N0IHByZWZlcnJlZCBvcHRpb25zLgotICAgICAgICAgICAgICAgIFVzZSBvZiB0aGVzZSBzdWJzdGl0dXRpb25zIG9mIGNvdXJzZSBhc3N1bWVzIHRoZSByZXN1bHRpbmcgZnVuY3Rpb25hbGl0eSBtZWV0cwotICAgICAgICAgICAgICAgIHN5c3RlbSByZXF1aXJlbWVudHMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIElmIGhvd2V2ZXIsIGEgbm9uLWVuY3VtYmVyZWQgdmVyc2lvbiBpcyB1bmF2YWlsYWJsZSBvcgotICAgICAgICAgICAgICAgIGl0IHByb3ZpZGVzIHVuc3VpdGFibGUgZnVuY3Rpb25hbGl0eSBvciBxdWFsaXR5LCB5b3UgY2FuIHVzZSBhbiBlbmN1bWJlcmVkCi0gICAgICAgICAgICAgICAgdmVyc2lvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQSBjb3VwbGUgZGlmZmVyZW50IG1ldGhvZHMgZXhpc3Qgd2l0aGluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvCi0gICAgICAgICAgICAgICAgc2F0aXNmeSB0aGUgbGljZW5zaW5nIHJlcXVpcmVtZW50cyBmb3IgYW4gZW5jdW1iZXJlZCBCU1AuCi0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGVtIGluIG9yZGVyIG9mIHByZWZlcmVuY2U6Ci0JICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ0VOU0VfRkxBR1MnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gZGVmaW5lIHRoZSByZWNpcGVzIHRoYXQgaGF2ZSBjb21tZXJjaWFsIG9yIG90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlcyBvZiBzcGVjaWFsbHktbGljZW5zZWQgcGFja2FnZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBlYWNoIG9mIHRob3NlIHJlY2lwZXMsIHlvdSBjYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgYSBtYXRjaGluZyBsaWNlbnNlIHN0cmluZyBpbiBhCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IHZhcmlhYmxlIG5hbWVkCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRV9GTEFHU19XSElURUxJU1QnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5aW5nIHRoZSBtYXRjaGluZyBsaWNlbnNlIHN0cmluZyBzaWduaWZpZXMgdGhhdCB5b3UgYWdyZWUgdG8gdGhlIGxpY2Vuc2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCB0aGUgYnVpbGQgc3lzdGVtIGNhbiBidWlsZCB0aGUgY29ycmVzcG9uZGluZyByZWNpcGUgYW5kIGluY2x1ZGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21wb25lbnQgaW4gdGhlIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2VuYWJsaW5nLWNvbW1lcmNpYWxseS1saWNlbnNlZC1yZWNpcGVzJz5FbmFibGluZwotICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWVyY2lhbGx5IExpY2Vuc2VkIFJlY2lwZXM8L3VsaW5rPiIgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBmb3IgZGV0YWlscyBvbiBob3cgdG8gdXNlIHRoZXNlIHZhcmlhYmxlcy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYnVpbGQgYXMgeW91IG5vcm1hbGx5IHdvdWxkLCB3aXRob3V0Ci0JCSAgICAgICAgc3BlY2lmeWluZyBhbnkgcmVjaXBlcyBpbiB0aGUKLQkJICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPiwgdGhlIGJ1aWxkIHN0b3BzIGFuZAotCQkgICAgICAgIHByb3ZpZGVzIHlvdSB3aXRoIHRoZSBsaXN0IG9mIHJlY2lwZXMgdGhhdCB5b3UgaGF2ZQotCQkgICAgICAgIHRyaWVkIHRvIGluY2x1ZGUgaW4gdGhlIGltYWdlIHRoYXQgbmVlZCBlbnRyaWVzIGluCi0JCSAgICAgICAgdGhlIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+LgotCQkgICAgICAgIE9uY2UgeW91IGVudGVyIHRoZSBhcHByb3ByaWF0ZSBsaWNlbnNlIGZsYWdzIGludG8gdGhlIHdoaXRlbGlzdCwKLQkJICAgICAgICByZXN0YXJ0IHRoZSBidWlsZCB0byBjb250aW51ZSB3aGVyZSBpdCBsZWZ0IG9mZi4KLQkJICAgICAgICBEdXJpbmcgdGhlIGJ1aWxkLCB0aGUgcHJvbXB0IHdpbGwgbm90IGFwcGVhciBhZ2FpbgotCQkgICAgICAgIHNpbmNlIHlvdSBoYXZlIHNhdGlzZmllZCB0aGUgcmVxdWlyZW1lbnQuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSB0aGUgYXBwcm9wcmlhdGUgbGljZW5zZSBmbGFncyBhcmUgb24gdGhlIHdoaXRlIGxpc3QKLQkJICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUPC9maWxlbmFtZT4gdmFyaWFibGUsIHlvdQotCQkgICAgICAgIGNhbiBidWlsZCB0aGUgZW5jdW1iZXJlZCBpbWFnZSB3aXRoIG5vIGNoYW5nZSBhdCBhbGwKLQkJICAgICAgICB0byB0aGUgbm9ybWFsIGJ1aWxkIHByb2Nlc3MuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R2V0IGEgcHJlLWJ1aWx0IHZlcnNpb24gb2YgdGhlIEJTUDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgdGhpcyB0eXBlIG9mIEJTUCBieSB2aXNpdGluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICJEb3dubG9hZHMiIHBhZ2Ugb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IHdlYnNpdGU8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZG93bmxvYWQgQlNQIHRhcmJhbGxzIHRoYXQgY29udGFpbiBwcm9wcmlldGFyeSBjb21wb25lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBhZnRlciBhZ3JlZWluZyB0byB0aGUgbGljZW5zaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMgb2YgZWFjaCBvZiB0aGUgaW5kaXZpZHVhbGx5IGVuY3VtYmVyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGFzIHBhcnQgb2YgdGhlIGRvd25sb2FkIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgICAgICAgICBPYnRhaW5pbmcgdGhlIEJTUCB0aGlzIHdheSBhbGxvd3MgeW91IHRvIGFjY2VzcyBhbiBlbmN1bWJlcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSBpbW1lZGlhdGVseSBhZnRlciBhZ3JlZWluZyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrLXRocm91Z2ggbGljZW5zZSBhZ3JlZW1lbnRzIHByZXNlbnRlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHdlYnNpdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIGltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3Vyc2VsZiB1c2luZyB0aGUgcmVjaXBlcyBjb250YWluZWQgd2l0aGluIHRoZSBCU1AKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhcmJhbGwsIHlvdSB3aWxsIHN0aWxsIG5lZWQgdG8gY3JlYXRlIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPiB0byBtYXRjaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuY3VtYmVyZWQgcmVjaXBlcyBpbiB0aGUgQlNQLjwvcGFyYT48L2xpc3RpdGVtPgotCSAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgUHJlLWNvbXBpbGVkIGltYWdlcyBhcmUgYnVuZGxlZCB3aXRoCi0gICAgICAgICAgICAgICAgYSB0aW1lLWxpbWl0ZWQga2VybmVsIHRoYXQgcnVucyBmb3IgYQotICAgICAgICAgICAgICAgIHByZWRldGVybWluZWQgYW1vdW50IG9mIHRpbWUgKDEwIGRheXMpIGJlZm9yZSBpdCBmb3JjZXMKLSAgICAgICAgICAgICAgICB0aGUgc3lzdGVtIHRvIHJlYm9vdC4KLSAgICAgICAgICAgICAgICBUaGlzIGxpbWl0YXRpb24gaXMgbWVhbnQgdG8gZGlzY291cmFnZSBkaXJlY3QgcmVkaXN0cmlidXRpb24KLSAgICAgICAgICAgICAgICBvZiB0aGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgWW91IG11c3QgZXZlbnR1YWxseSByZWJ1aWxkIHRoZSBpbWFnZSBpZiB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyByZXN0cmljdGlvbi4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZy10aGUteW9jdG8tcHJvamVjdHMtYnNwLXRvb2xzJz4KLSAgICAgICAgICAgIDx0aXRsZT5Vc2luZyB0aGUgWW9jdG8gUHJvamVjdCdzIEJTUCBUb29sczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGluY2x1ZGVzIGEgY291cGxlIG9mIHRvb2xzIHRoYXQgZW5hYmxlCi0gICAgICAgICAgICAgICAgeW91IHRvIGNyZWF0ZSBhIDxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBsYXllcjwvbGluaz4KLSAgICAgICAgICAgICAgICBmcm9tIHNjcmF0Y2ggYW5kIGRvIGJhc2ljIGNvbmZpZ3VyYXRpb24gYW5kIG1haW50ZW5hbmNlCi0gICAgICAgICAgICAgICAgb2YgdGhlIGtlcm5lbCB3aXRob3V0IGV2ZXIgbG9va2luZyBhdCBhIE1ldGFkYXRhIGZpbGUuCi0gICAgICAgICAgICAgICAgVGhlc2UgdG9vbHMgYXJlIDxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIHJlc3BlY3RpdmVseS4KLQkgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIHRoZSBjb21tb24gbG9jYXRpb24gYW5kIGhlbHAgZmVhdHVyZXMgYXMgd2VsbAotICAgICAgICAgICAgICAgIGFzIHByb3ZpZGUgZGV0YWlscyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWJzcDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gdG9vbHMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdjb21tb24tZmVhdHVyZXMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5Db21tb24gRmVhdHVyZXM8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIERlc2lnbmVkIHRvIGhhdmUgYSAgY29tbWFuZCBpbnRlcmZhY2Ugc29tZXdoYXQgbGlrZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQnPkdpdDwvdWxpbms+LCBlYWNoCi0gICAgICAgICAgICAgICAgICAgIHRvb2wgaXMgc3RydWN0dXJlZCBhcyBhIHNldCBvZiBzdWItY29tbWFuZHMgdW5kZXIgYQotICAgICAgICAgICAgICAgICAgICB0b3AtbGV2ZWwgY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHRvcC1sZXZlbCBjb21tYW5kICg8ZmlsZW5hbWU+eW9jdG8tYnNwPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbDwvZmlsZW5hbWU+KSBpdHNlbGYgZG9lcwotICAgICAgICAgICAgICAgICAgICBub3RoaW5nIGJ1dCBpbnZva2Ugb3IgcHJvdmlkZSBoZWxwIG9uIHRoZSBzdWItY29tbWFuZHMKLSAgICAgICAgICAgICAgICAgICAgaXQgc3VwcG9ydHMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEJvdGggdG9vbHMgcmVzaWRlIGluIHRoZSA8ZmlsZW5hbWU+c2NyaXB0cy88L2ZpbGVuYW1lPiBzdWJkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0byB1c2UgdGhlIHNjcmlwdHMsIHlvdSBtdXN0IDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPiB0aGUKLSAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQganVzdCBhcyB5b3Ugd291bGQgd2hlbiBpbnZva2luZyBhIGJ1aWxkOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52IDxyZXBsYWNlYWJsZT5idWlsZF9kaXI8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIGFwcGVuZCBmaWxlcyBleHRlbmRzIHRoZSBzZWFyY2ggcGF0aAorICAgICAgICAgICAgICAgIHRoZSBidWlsZCBzeXN0ZW0gdXNlcyB0byBmaW5kIGZpbGVzIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBmb3IgdGhpcyBleGFtcGxlIHlvdSBuZWVkIHRvIGhhdmUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGVzPC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHRoZSBzYW1lCisgICAgICAgICAgICAgICAgbG9jYXRpb24gYXMgeW91ciBhcHBlbmQgZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2JzcC1saWNlbnNpbmctY29uc2lkZXJhdGlvbnMnPgorICAgIDx0aXRsZT5CU1AgTGljZW5zaW5nIENvbnNpZGVyYXRpb25zPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBJbiBzb21lIGNhc2VzLCBhIEJTUCBjb250YWlucyBzZXBhcmF0ZWx5IGxpY2Vuc2VkCisgICAgICAgIEludGVsbGVjdHVhbCBQcm9wZXJ0eSAoSVApIGZvciBhIGNvbXBvbmVudCBvciBjb21wb25lbnRzLgorICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdSBhcmUgcmVxdWlyZWQgdG8gYWNjZXB0IHRoZSB0ZXJtcworICAgICAgICBvZiBhIGNvbW1lcmNpYWwgb3Igb3RoZXIgdHlwZSBvZiBsaWNlbnNlIHRoYXQgcmVxdWlyZXMKKyAgICAgICAgc29tZSBraW5kIG9mIGV4cGxpY2l0IEVuZCBVc2VyIExpY2Vuc2UgQWdyZWVtZW50IChFVUxBKS4KKyAgICAgICAgT25jZSB5b3UgYWNjZXB0IHRoZSBsaWNlbnNlLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICBjYW4gdGhlbiBidWlsZCBhbmQgaW5jbHVkZSB0aGUgY29ycmVzcG9uZGluZyBjb21wb25lbnQKKyAgICAgICAgaW4gdGhlIGZpbmFsIEJTUCBpbWFnZS4KKyAgICAgICAgSWYgdGhlIEJTUCBpcyBhdmFpbGFibGUgYXMgYSBwcmUtYnVpbHQgaW1hZ2UsIHlvdSBjYW4KKyAgICAgICAgZG93bmxvYWQgdGhlIGltYWdlIGFmdGVyIGFncmVlaW5nIHRvIHRoZSBsaWNlbnNlIG9yIEVVTEEuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBjb3VsZCBmaW5kIHRoYXQgc29tZSBzZXBhcmF0ZWx5IGxpY2Vuc2VkIGNvbXBvbmVudHMKKyAgICAgICAgdGhhdCBhcmUgZXNzZW50aWFsIGZvciBub3JtYWwgb3BlcmF0aW9uIG9mIHRoZSBzeXN0ZW0gbWlnaHQKKyAgICAgICAgbm90IGhhdmUgYW4gdW5lbmN1bWJlcmVkIChvciBmcmVlKSBzdWJzdGl0dXRlLgorICAgICAgICBXaXRob3V0IHRoZXNlIGVzc2VudGlhbCBjb21wb25lbnRzLCB0aGUgc3lzdGVtIHdvdWxkIGJlCisgICAgICAgIG5vbi1mdW5jdGlvbmFsLgorICAgICAgICBUaGVuIGFnYWluLCB5b3UgbWlnaHQgZmluZCB0aGF0IG90aGVyIGxpY2Vuc2VkIGNvbXBvbmVudHMKKyAgICAgICAgdGhhdCBhcmUgc2ltcGx5ICdnb29kLXRvLWhhdmUnIG9yIHB1cmVseSBlbGVjdGl2ZSBkbyBoYXZlCisgICAgICAgIGFuIHVuZW5jdW1iZXJlZCwgZnJlZSByZXBsYWNlbWVudCBjb21wb25lbnQgdGhhdCB5b3UgY2FuCisgICAgICAgIHVzZSByYXRoZXIgdGhhbiBhZ3JlZWluZyB0byB0aGUgc2VwYXJhdGVseSBsaWNlbnNlZAorICAgICAgICBjb21wb25lbnQuCisgICAgICAgIEV2ZW4gZm9yIGNvbXBvbmVudHMgZXNzZW50aWFsIHRvIHRoZSBzeXN0ZW0sIHlvdSBtaWdodAorICAgICAgICBmaW5kIGFuIHVuZW5jdW1iZXJlZCBjb21wb25lbnQgdGhhdCBpcyBub3QgaWRlbnRpY2FsIGJ1dAorICAgICAgICB3aWxsIHdvcmsgYXMgYSBsZXNzLWNhcGFibGUgdmVyc2lvbiBvZiB0aGUgbGljZW5zZWQgdmVyc2lvbgorICAgICAgICBpbiB0aGUgQlNQIHJlY2lwZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9yIGNhc2VzIHdoZXJlIHlvdSBjYW4gc3Vic3RpdHV0ZSBhIGZyZWUgY29tcG9uZW50IGFuZAorICAgICAgICBzdGlsbCBtYWludGFpbiB0aGUgc3lzdGVtJ3MgZnVuY3Rpb25hbGl0eSwgdGhlICJET1dOTE9BRFMiCisgICAgICAgIHNlbGVjdGlvbiBmcm9tIHRoZSAiU09GVFdBUkUiIHRhYiBvbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCB3ZWJzaXRlPC91bGluaz4KKyAgICAgICAgbWFrZXMgYXZhaWxhYmxlIGRlLWZlYXR1cmVkIEJTUHMgdGhhdCBhcmUgY29tcGxldGVseSBmcmVlCisgICAgICAgIG9mIGFueSBJUCBlbmN1bWJyYW5jZXMuCisgICAgICAgIEZvciB0aGVzZSBjYXNlcywgeW91IGNhbiB1c2UgdGhlIHN1YnN0aXR1dGlvbiBkaXJlY3RseSBhbmQKKyAgICAgICAgd2l0aG91dCBhbnkgZnVydGhlciBsaWNlbnNpbmcgcmVxdWlyZW1lbnRzLgorICAgICAgICBJZiBwcmVzZW50LCB0aGVzZSBmdWxseSBkZS1mZWF0dXJlZCBCU1BzIGFyZSBuYW1lZAorICAgICAgICBhcHByb3ByaWF0ZWx5IGRpZmZlcmVudCBhcyBjb21wYXJlZCB0byB0aGUgbmFtZXMgb2YgdGhlaXIKKyAgICAgICAgcmVzcGVjdGl2ZSBlbmN1bWJlcmVkIEJTUHMuCisgICAgICAgIElmIGF2YWlsYWJsZSwgdGhlc2Ugc3Vic3RpdHV0aW9ucyBhcmUgeW91ciBzaW1wbGVzdCBhbmQKKyAgICAgICAgbW9zdCBwcmVmZXJyZWQgb3B0aW9ucy4KKyAgICAgICAgT2J2aW91c2x5LCB1c2Ugb2YgdGhlc2Ugc3Vic3RpdHV0aW9ucyBhc3N1bWVzIHRoZSByZXN1bHRpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBtZWV0cyBzeXN0ZW0gcmVxdWlyZW1lbnRzLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIElmIGhvd2V2ZXIsIGEgbm9uLWVuY3VtYmVyZWQgdmVyc2lvbiBpcyB1bmF2YWlsYWJsZSBvcgorICAgICAgICAgICAgaXQgcHJvdmlkZXMgdW5zdWl0YWJsZSBmdW5jdGlvbmFsaXR5IG9yIHF1YWxpdHksIHlvdSBjYW4KKyAgICAgICAgICAgIHVzZSBhbiBlbmN1bWJlcmVkIHZlcnNpb24uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQSBjb3VwbGUgZGlmZmVyZW50IG1ldGhvZHMgZXhpc3Qgd2l0aGluIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgYnVpbGQgc3lzdGVtIHRvIHNhdGlzZnkgdGhlIGxpY2Vuc2luZyByZXF1aXJlbWVudHMgZm9yIGFuCisgICAgICAgIGVuY3VtYmVyZWQgQlNQLgorICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoZW0gaW4gb3JkZXIgb2YgcHJlZmVyZW5jZToKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ0VOU0VfRkxBR1MnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIFZhcmlhYmxlIHRvIERlZmluZSB0aGUgUmVjaXBlcyB0aGF0IEhhdmUgQ29tbWVyY2lhbAorICAgICAgICAgICAgICAgIG9yIE90aGVyIFR5cGVzIG9mIFNwZWNpYWxseS1MaWNlbnNlZCBQYWNrYWdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEZvciBlYWNoIG9mIHRob3NlIHJlY2lwZXMsIHlvdSBjYW4gc3BlY2lmeSBhCisgICAgICAgICAgICAgICAgbWF0Y2hpbmcgbGljZW5zZSBzdHJpbmcgaW4gYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gdmFyaWFibGUgbmFtZWQKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRV9GTEFHU19XSElURUxJU1QnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgU3BlY2lmeWluZyB0aGUgbWF0Y2hpbmcgbGljZW5zZSBzdHJpbmcgc2lnbmlmaWVzCisgICAgICAgICAgICAgICAgdGhhdCB5b3UgYWdyZWUgdG8gdGhlIGxpY2Vuc2UuCisgICAgICAgICAgICAgICAgVGh1cywgdGhlIGJ1aWxkIHN5c3RlbSBjYW4gYnVpbGQgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICByZWNpcGUgYW5kIGluY2x1ZGUgdGhlIGNvbXBvbmVudCBpbiB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNlbmFibGluZy1jb21tZXJjaWFsbHktbGljZW5zZWQtcmVjaXBlcyc+RW5hYmxpbmcgQ29tbWVyY2lhbGx5IExpY2Vuc2VkIFJlY2lwZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgTWFudWFsIGZvciBkZXRhaWxzIG9uIGhvdyB0byB1c2UgdGhlc2UgdmFyaWFibGVzLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCBpbW1lZGlhdGVseSB1c2VmdWwgZnVuY3Rpb24gaXMgdG8gZ2V0IGhlbHAgb24gYm90aCB0b29scy4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWx0LWluIGhlbHAgc3lzdGVtIG1ha2VzIGl0IGVhc3kgdG8gZHJpbGwgZG93biBhdAotICAgICAgICAgICAgICAgICAgICBhbnkgdGltZSBhbmQgdmlldyB0aGUgc3ludGF4IHJlcXVpcmVkIGZvciBhbnkgc3BlY2lmaWMgY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgU2ltcGx5IGVudGVyIHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kIHdpdGggdGhlIDxmaWxlbmFtZT5oZWxwPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgeW9jdG8tYnNwIGhlbHAKLSAgICAgVXNhZ2U6CisgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGJ1aWxkIGFzIHlvdSBub3JtYWxseSB3b3VsZCwgd2l0aG91dAorCSAgICAgICAgc3BlY2lmeWluZyBhbnkgcmVjaXBlcyBpbiB0aGUKKwkgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICBidWlsZCBzdG9wcyBhbmQgcHJvdmlkZXMgeW91IHdpdGggdGhlIGxpc3Qgb2YgcmVjaXBlcworICAgICAgICAgICAgICAgIHRoYXQgeW91IGhhdmUgdHJpZWQgdG8gaW5jbHVkZSBpbiB0aGUgaW1hZ2UgdGhhdAorICAgICAgICAgICAgICAgIG5lZWQgZW50cmllcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBlbnRlciB0aGUgYXBwcm9wcmlhdGUgbGljZW5zZSBmbGFncyBpbnRvCisgICAgICAgICAgICAgICAgdGhlIHdoaXRlbGlzdCwgcmVzdGFydCB0aGUgYnVpbGQgdG8gY29udGludWUgd2hlcmUKKyAgICAgICAgICAgICAgICBpdCBsZWZ0IG9mZi4KKwkgICAgICAgIER1cmluZyB0aGUgYnVpbGQsIHRoZSBwcm9tcHQgd2lsbCBub3QgYXBwZWFyIGFnYWluCisJICAgICAgICBzaW5jZSB5b3UgaGF2ZSBzYXRpc2ZpZWQgdGhlIHJlcXVpcmVtZW50LjwvcGFyYT4KIAotICAgICAgQ3JlYXRlIGEgY3VzdG9taXplZCBZb2N0byBCU1AgbGF5ZXIuCisgICAgICAgICAgICAgICAgPHBhcmE+T25jZSB0aGUgYXBwcm9wcmlhdGUgbGljZW5zZSBmbGFncyBhcmUgb24gdGhlCisgICAgICAgICAgICAgICAgd2hpdGUgbGlzdCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPiB2YXJpYWJsZSwKKyAgICAgICAgICAgICAgICB5b3UgY2FuIGJ1aWxkIHRoZSBlbmN1bWJlcmVkIGltYWdlIHdpdGggbm8gY2hhbmdlCisgICAgICAgICAgICAgICAgYXQgYWxsIHRvIHRoZSBub3JtYWwgYnVpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2V0IGEgUHJlLUJ1aWx0IFZlcnNpb24gb2YgdGhlIEJTUDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IHRoaXMgdHlwZSBvZiBCU1AgYnkgc2VsZWN0aW5nIHRoZQorICAgICAgICAgICAgICAgICJET1dOTE9BRFMiIGl0ZW0gZnJvbSB0aGUgIlNPRlRXQVJFIiB0YWIgb24gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCB3ZWJzaXRlPC91bGluaz4uCisgICAgICAgICAgICAgICAgWW91IGNhbiBkb3dubG9hZCBCU1AgdGFyYmFsbHMgdGhhdCBjb250YWluCisgICAgICAgICAgICAgICAgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBhZnRlciBhZ3JlZWluZyB0byB0aGUKKyAgICAgICAgICAgICAgICBsaWNlbnNpbmcgcmVxdWlyZW1lbnRzIG9mIGVhY2ggb2YgdGhlIGluZGl2aWR1YWxseQorICAgICAgICAgICAgICAgIGVuY3VtYmVyZWQgcGFja2FnZXMgYXMgcGFydCBvZiB0aGUgZG93bmxvYWQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICBPYnRhaW5pbmcgdGhlIEJTUCB0aGlzIHdheSBhbGxvd3MgeW91IHRvIGFjY2VzcyBhbgorICAgICAgICAgICAgICAgIGVuY3VtYmVyZWQgaW1hZ2UgaW1tZWRpYXRlbHkgYWZ0ZXIgYWdyZWVpbmcgdG8gdGhlCisgICAgICAgICAgICAgICAgY2xpY2stdGhyb3VnaCBsaWNlbnNlIGFncmVlbWVudHMgcHJlc2VudGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIHdlYnNpdGUuCisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIGltYWdlIHlvdXJzZWxmIHVzaW5nCisgICAgICAgICAgICAgICAgdGhlIHJlY2lwZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgQlNQIHRhcmJhbGwsCisgICAgICAgICAgICAgICAgeW91IHdpbGwgc3RpbGwgbmVlZCB0byBjcmVhdGUgYW4gYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHRvIG1hdGNoIHRoZSBlbmN1bWJlcmVkIHJlY2lwZXMgaW4gdGhlIEJTUC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBQcmUtY29tcGlsZWQgaW1hZ2VzIGFyZSBidW5kbGVkIHdpdGggYSB0aW1lLWxpbWl0ZWQKKyAgICAgICAgICAgIGtlcm5lbCB0aGF0IHJ1bnMgZm9yIGEgcHJlZGV0ZXJtaW5lZCBhbW91bnQgb2YgdGltZQorICAgICAgICAgICAgKDEwIGRheXMpIGJlZm9yZSBpdCBmb3JjZXMgdGhlIHN5c3RlbSB0byByZWJvb3QuCisgICAgICAgICAgICBUaGlzIGxpbWl0YXRpb24gaXMgbWVhbnQgdG8gZGlzY291cmFnZSBkaXJlY3QKKyAgICAgICAgICAgIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIFlvdSBtdXN0IGV2ZW50dWFsbHkgcmVidWlsZCB0aGUgaW1hZ2UgaWYgeW91IHdhbnQKKyAgICAgICAgICAgIHRvIHJlbW92ZSB0aGlzIHJlc3RyaWN0aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgogCi0gICAgICB1c2FnZTogeW9jdG8tYnNwIFstLXZlcnNpb25dIFstLWhlbHBdIENPTU1BTkQgW0FSR1NdCis8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPgorICAgIDx0aXRsZT5DcmVhdGluZyBhIG5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdGl0bGU+CiAKLSAgICAgIEN1cnJlbnQgJ3lvY3RvLWJzcCcgY29tbWFuZHMgYXJlOgotICAgICAgICAgY3JlYXRlICAgICAgICAgICAgQ3JlYXRlIGEgbmV3IFlvY3RvIEJTUAotICAgICAgICAgbGlzdCAgICAgICAgICAgICAgTGlzdCBhdmFpbGFibGUgdmFsdWVzIGZvciBvcHRpb25zIGFuZCBCU1AgcHJvcGVydGllcworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+IHNjcmlwdAorICAgICAgICBhdXRvbWF0ZXMgY3JlYXRpbmcgYSBCU1AgbGF5ZXIuCisgICAgICAgIFdoYXQgbWFrZXMgYSBsYXllciBhICJCU1AgbGF5ZXIiLCBpcyB0aGUgcHJlc2VuY2Ugb2YgYSBtYWNoaW5lCisgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBhIEJTUCBsYXllciB1c3VhbGx5IGhhcyBhIGtlcm5lbCByZWNpcGUKKyAgICAgICAgb3IgYW4gYXBwZW5kIGZpbGUgdGhhdCBsZXZlcmFnZXMgb2ZmIGFuIGV4aXN0aW5nIGtlcm5lbCByZWNpcGUuCisgICAgICAgIFRoZSBwcmltYXJ5IHJlcXVpcmVtZW50LCBob3dldmVyLCBpcyB0aGUgbWFjaGluZSBjb25maWd1cmF0aW9uLgorICAgIDwvcGFyYT4KIAotICAgICAgU2VlICd5b2N0by1ic3AgaGVscCBDT01NQU5EJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuCisgICAgPHBhcmE+CisgICAgICAgIFVzZSB0aGVzZSBzdGVwcyB0byBjcmVhdGUgYSBCU1AgbGF5ZXI6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIEdlbmVyYWwgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IHNjcmlwdCB3aXRoIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcmVhdGUtbGF5ZXI8L2ZpbGVuYW1lPiBzdWJjb21tYW5kIHRvIGNyZWF0ZSBhCisgICAgICAgICAgICAgICAgbmV3IGdlbmVyYWwgbGF5ZXIuCisgICAgICAgICAgICAgICAgRm9yIGluc3RydWN0aW9ucyBvbiBob3cgdG8gY3JlYXRlIGEgZ2VuZXJhbCBsYXllciB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBzY3JpcHQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIExheWVyIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEV2ZXJ5IGxheWVyIG5lZWRzIGEgbGF5ZXIgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGVzdGFibGlzaGVzIGxvY2F0aW9ucyBmb3IgdGhlCisgICAgICAgICAgICAgICAgbGF5ZXIncyByZWNpcGVzLCBwcmlvcml0aWVzIGZvciB0aGUgbGF5ZXIsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgZXhhbXBsZXMgb2YgPGZpbGVuYW1lPmxheWVyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGVzIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICAgICAgVG8gZ2V0IGV4YW1wbGVzIG9mIHdoYXQgeW91IG5lZWQgaW4geW91ciBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgZmlsZSwgbG9jYXRlIGEgbGF5ZXIgKGUuZy4gIm1ldGEtdGkiKSBhbmQgZXhhbWluZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9tZXRhLXRpL3RyZWUvY29uZi9sYXllci5jb25mJz48L3VsaW5rPgorICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIE1hY2hpbmUgQ29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ3JlYXRlIGEgPGZpbGVuYW1lPmNvbmYvbWFjaGluZS88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZSc+PGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBmb3Igc2FtcGxlCisgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZXMuCisgICAgICAgICAgICAgICAgT3RoZXIgc2FtcGxlcyBzdWNoIGFzCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvbWV0YS10aS90cmVlL2NvbmYvbWFjaGluZSc+PGZpbGVuYW1lPm1ldGEtdGk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvbWV0YS1mcmVlc2NhbGUvdHJlZS9jb25mL21hY2hpbmUnPjxmaWxlbmFtZT5tZXRhLWZyZWVzY2FsZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBleGlzdCBmcm9tIG90aGVyIHZlbmRvcnMgdGhhdCBoYXZlIG1vcmUgc3BlY2lmaWMgbWFjaGluZQorICAgICAgICAgICAgICAgIGFuZCB0dW5pbmcgZXhhbXBsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIEtlcm5lbCBSZWNpcGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDcmVhdGUgYSBrZXJuZWwgcmVjaXBlIGluIDxmaWxlbmFtZT5yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgYnkgZWl0aGVyIHVzaW5nIGEga2VybmVsIGFwcGVuZCBmaWxlIG9yIGEgbmV3IGN1c3RvbSBrZXJuZWwKKyAgICAgICAgICAgICAgICByZWNpcGUgZmlsZSAoZS5nLiA8ZmlsZW5hbWU+eW9jdG8tbGludXhfNC4xMi5iYjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICBUaGUgQlNQIGxheWVycyBtZW50aW9uZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAgYWxzbyBjb250YWluIGRpZmZlcmVudAorICAgICAgICAgICAgICAgIGtlcm5lbCBleGFtcGxlcy4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNtb2RpZnlpbmctYW4tZXhpc3RpbmctcmVjaXBlJz5Nb2RpZnlpbmcgYW4gRXhpc3RpbmcgUmVjaXBlPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsCisgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjcmVhdGUgYSBjdXN0b20ga2VybmVsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBkZXNjcmlwdGlvbiBvZgorICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCByZWZlcmVuY2UgQlNQIGZvciBCZWFnbGVib25lLCB3aGljaAorICAgICAgICByZXNpZGVzIGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN0ZXJtLWNvbnRhaW5lci1sYXllcic+Q29udGFpbmVyIExheWVyPC91bGluaz4KKyAgICAgICAgKGkuZS4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEteW9jdG8tYnNwJz48ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICA8L3BhcmE+CiAKLSAgICAgT3B0aW9uczoKLSAgICAgICAtLXZlcnNpb24gICAgc2hvdyBwcm9ncmFtJ3MgdmVyc2lvbiBudW1iZXIgYW5kIGV4aXQKLSAgICAgICAtaCwgLS1oZWxwICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAotICAgICAgIC1ELCAtLWRlYnVnICBvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICA8c2VjdGlvbiBpZD0nYnNwLWxheWVyLWNvbmZpZ3VyYXRpb24tZXhhbXBsZSc+CisgICAgICAgIDx0aXRsZT5CU1AgTGF5ZXIgQ29uZmlndXJhdGlvbiBFeGFtcGxlPC90aXRsZT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBTaW1pbGFybHksIGVudGVyaW5nIGp1c3QgdGhlIG5hbWUgb2YgYSBzdWItY29tbWFuZCBzaG93cyB0aGUgZGV0YWlsZWQgdXNhZ2UKLSAgICAgICAgICAgICAgICAgICAgZm9yIHRoYXQgc3ViLWNvbW1hbmQ6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB5b2N0by1ic3AgY3JlYXRlCi0gICAgIEVSUk9SOnJvb3Q6V3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBsYXllcidzIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICBjb250YWlucyB0aGUgPGZpbGVuYW1lPmxheWVyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBpcyB0aGUKKyAgICAgICAgICAgIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKKyAgICAgQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCiAKLSAgICAgVXNhZ2U6CisgICAgICMgV2UgaGF2ZSByZWNpcGVzLSogZGlyZWN0b3JpZXMsIGFkZCB0byBCQkZJTEVTCisgICAgIEJCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgXAorICAgICAgICAgICAgICAgICAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgogCi0gICAgICBDcmVhdGUgYSBuZXcgWW9jdG8gQlNQCisgICAgIEJCRklMRV9DT0xMRUNUSU9OUyArPSAieW9jdG9ic3AiCisgICAgIEJCRklMRV9QQVRURVJOX3lvY3RvYnNwID0gIl4ke0xBWUVSRElSfS8iCisgICAgIEJCRklMRV9QUklPUklUWV95b2N0b2JzcCA9ICI1IgorICAgICBMQVlFUlZFUlNJT05feW9jdG9ic3AgPSAiNCIKKyAgICAgTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvYnNwID0gIiZESVNUUk9fTkFNRV9OT19DQVA7IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIHZhcmlhYmxlcyB1c2VkIGluIHRoaXMgZmlsZSBjb25maWd1cmUgdGhlCisgICAgICAgICAgICBsYXllci4KKyAgICAgICAgICAgIEEgZ29vZCB3YXkgdG8gbGVhcm4gYWJvdXQgbGF5ZXIgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgZmlsZXMgaXMgdG8gZXhhbWluZSB2YXJpb3VzIGZpbGVzIGZvciBCU1AgZnJvbQorICAgICAgICAgICAgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICB1c2FnZTogeW9jdG8tYnNwIGNyZWF0ZSAmbHQ7YnNwLW5hbWUmZ3Q7ICZsdDtrYXJjaCZndDsgWy1vICZsdDtESVJOQU1FJmd0OyB8IC0tb3V0ZGlyICZsdDtESVJOQU1FJmd0O10KLSAgICAgICAgICAgIFstaSAmbHQ7SlNPTiBQUk9QRVJUWSBGSUxFJmd0OyB8IC0taW5maWxlICZsdDtKU09OIFBST1BFUlRZX0ZJTEUmZ3Q7XQorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoaXMgcGFydGljdWxhcgorICAgICAgICAgICAgbGF5ZXIgY29uZmlndXJhdGlvbiBmaWxlLCBzZWUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbGF5ZXItY29uZmlnLWZpbGUtZGVzY3JpcHRpb24nPnN0ZXAgMzwvdWxpbms+CisgICAgICAgICAgICBpbiB0aGUgZGlzY3Vzc2lvbiB0aGF0IGRlc2NyaWJlcyBob3cgdG8gY3JlYXRlCisgICAgICAgICAgICBsYXllcnMgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICBUaGlzIGNvbW1hbmQgY3JlYXRlcyBhIFlvY3RvIEJTUCBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuCi0gICAgICBUaGUgbmV3IEJTUCB3aWxsIGJlIGEgbmV3IFlvY3RvIEJTUCBsYXllciBjb250YWluZWQgYnkgZGVmYXVsdCB3aXRoaW4KLSAgICAgIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IHNwZWNpZmllZCBhcyAnbWV0YS1ic3AtbmFtZScuICBUaGUgLW8gb3B0aW9uCi0gICAgICBjYW4gYmUgdXNlZCB0byBwbGFjZSB0aGUgQlNQIGxheWVyIGluIGEgZGlyZWN0b3J5IHdpdGggYSBkaWZmZXJlbnQKLSAgICAgIG5hbWUgYW5kIGxvY2F0aW9uLgorICAgIDxzZWN0aW9uIGlkPSdic3AtbWFjaGluZS1jb25maWd1cmF0aW9uLWV4YW1wbGUnPgorICAgICAgICA8dGl0bGU+QlNQIE1hY2hpbmUgQ29uZmlndXJhdGlvbiBFeGFtcGxlPC90aXRsZT4KIAotICAgICAgVGhlIHZhbHVlIG9mIHRoZSAna2FyY2gnIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBzZXQgb2YgZmlsZXMgdGhhdAotICAgICAgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIHRoZSBCU1AsIGFsb25nIHdpdGggdGhlIHNwZWNpZmljIHNldCBvZgotICAgICAgJ3Byb3BlcnRpZXMnIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGZpbGwgb3V0IHRoZSBCU1Atc3BlY2lmaWMgcG9ydGlvbnMKLSAgICAgIG9mIHRoZSBCU1AuICBUaGUgcG9zc2libGUgdmFsdWVzIGZvciB0aGUgJ2thcmNoJyBwYXJhbWV0ZXIgY2FuIGJlCi0gICAgICBsaXN0ZWQgdmlhICd5b2N0by1ic3AgbGlzdCBrYXJjaCcuCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIgaW4gdGhpcyBzZWN0aW9uLCB0aGUgZXhpc3RlbmNlCisgICAgICAgICAgICBvZiBhIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlIGlzIHdoYXQgbWFrZXMgYQorICAgICAgICAgICAgbGF5ZXIgYSBCU1AgbGF5ZXIgYXMgY29tcGFyZWQgdG8gYSBnZW5lcmFsIG9yCisgICAgICAgICAgICBrZXJuZWwgbGF5ZXIuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgLi4uCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIGV4aXN0IGluIHRoZQorICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJzcF9sYXllcjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL21hY2hpbmUvPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgbGF5ZXI6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxyZXBsYWNlYWJsZT5ic3BfbGF5ZXI8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vY29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9iZWFnbGVib2FyZC5vcmcvYm9uZSc+QmVhZ2xlQm9uZSBhbmQgQmVhZ2xlQm9uZSBCbGFjayBkZXZlbG9wbWVudCBib2FyZHM8L3VsaW5rPgorICAgICAgICAgICAgaXMgbG9jYXRlZCBpbiB0aGUgY29udGFpbmVyIGxheWVyCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgYW5kIGlzIG5hbWVkIDxmaWxlbmFtZT5iZWFnbGVib25lLXlvY3RvLmNvbmY8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgI0BUWVBFOiBNYWNoaW5lCisgICAgICNATkFNRTogQmVhZ2xlYm9uZS15b2N0byBtYWNoaW5lCisgICAgICNAREVTQ1JJUFRJT046IFJlZmVyZW5jZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIGh0dHA6Ly9iZWFnbGVib2FyZC5vcmcvYm9uZSBhbmQgaHR0cDovL2JlYWdsZWJvYXJkLm9yZy9ibGFjayBib2FyZHMKIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgYW55IHN1Yi1jb21tYW5kLCB5b3UgY2FuIHVzZSB0aGUgd29yZCAiaGVscCIgb3B0aW9uIGp1c3QgYmVmb3JlIHRoZQotICAgICAgICAgICAgICAgICAgICBzdWItY29tbWFuZCB0byBnZXQgbW9yZSBleHRlbnNpdmUgZG9jdW1lbnRhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHlvY3RvLWJzcCBoZWxwIGNyZWF0ZQorICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyID89ICJ4c2VydmVyLXhvcmciCisgICAgIFhTRVJWRVIgPz0gInhzZXJ2ZXIteG9yZyBcCisgICAgICAgICAgICAgICAgeGY4Ni12aWRlby1tb2Rlc2V0dGluZyBcCisgICAgICAgICAgICAgICAgIgogCi0gICAgIE5BTUUKLSAgICAgICAgIHlvY3RvLWJzcCBjcmVhdGUgLSBDcmVhdGUgYSBuZXcgWW9jdG8gQlNQCisgICAgIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAia2VybmVsLW1vZHVsZXMga2VybmVsLWRldmljZXRyZWUiCiAKLSAgICAgU1lOT1BTSVMKLSAgICAgICAgIHlvY3RvLWJzcCBjcmVhdGUgJmx0O2JzcC1uYW1lPiAmbHQ7a2FyY2gmZ3Q7IFstbyAmbHQ7RElSTkFNRSZndDsgfCAtLW91dGRpciAmbHQ7RElSTkFNRSZndDtdCi0gICAgICAgICAgICAgWy1pICZsdDtKU09OIFBST1BFUlRZIEZJTEUmZ3Q7IHwgLS1pbmZpbGUgJmx0O0pTT04gUFJPUEVSVFlfRklMRSZndDtdCisgICAgIEVYVFJBX0lNQUdFREVQRU5EUyArPSAidS1ib290IgogCi0gICAgIERFU0NSSVBUSU9OCi0gICAgICAgICBUaGlzIGNvbW1hbmQgY3JlYXRlcyBhIFlvY3RvIEJTUCBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkCi0gICAgICAgICBwYXJhbWV0ZXJzLiAgVGhlIG5ldyBCU1Agd2lsbCBiZSBhIG5ldyBZb2N0byBCU1AgbGF5ZXIgY29udGFpbmVkCi0gICAgICAgICBieSBkZWZhdWx0IHdpdGhpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBzcGVjaWZpZWQgYXMKLSAgICAgICAgICdtZXRhLWJzcC1uYW1lJy4gIFRoZSAtbyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gcGxhY2UgdGhlIEJTUCBsYXllcgotICAgICAgICAgaW4gYSBkaXJlY3Rvcnkgd2l0aCBhIGRpZmZlcmVudCBuYW1lIGFuZCBsb2NhdGlvbi4KKyAgICAgREVGQVVMVFRVTkUgPz0gImNvcnRleGE4aGYtbmVvbiIKKyAgICAgaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE4LmluYwogCi0gICAgICAgICAuLi4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgSU1BR0VfRlNUWVBFUyArPSAidGFyLmJ6MiBqZmZzMiB3aWMgd2ljLmJtYXAiCisgICAgIEVYVFJBX0lNQUdFQ01EX2pmZnMyID0gIi1sbnAgIgorICAgICBXS1NfRklMRSA/PSAiYmVhZ2xlYm9uZS15b2N0by53a3MiCisgICAgIElNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBrZXJuZWwtZGV2aWNldHJlZSBrZXJuZWwtaW1hZ2UtemltYWdlIgorICAgICBkb19pbWFnZV93aWNbZGVwZW5kc10gKz0gIm10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBkb3Nmc3Rvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIE5vdyB0aGF0IHlvdSBrbm93IHdoZXJlIHRoZXNlIHR3byBjb21tYW5kcyByZXNpZGUgYW5kIGhvdyB0byBhY2Nlc3MgaW5mb3JtYXRpb24KLSAgICAgICAgICAgICAgICAgICAgb24gdGhlbSwgeW91IHNob3VsZCBmaW5kIGl0IHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIHRvIGRpc2NvdmVyIHRoZSBjb21tYW5kcwotICAgICAgICAgICAgICAgICAgICBuZWNlc3NhcnkgdG8gY3JlYXRlIGEgQlNQIGFuZCBwZXJmb3JtIGJhc2ljIGtlcm5lbCBtYWludGVuYW5jZSBvbiB0aGF0IEJTUCB1c2luZwotICAgICAgICAgICAgICAgICAgICB0aGUgdG9vbHMuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gc2NyaXB0IHRvIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgYSAiZ2VuZXJpYyIgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhpcyBzY3JpcHQgdG8gY3JlYXRlIGEgbGF5ZXIsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICBTRVJJQUxfQ09OU09MRVMgPSAiMTE1MjAwO3R0eU8wIgorCisgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjEyJSIKKworICAgICBLRVJORUxfSU1BR0VUWVBFID0gInpJbWFnZSIKKyAgICAgS0VSTkVMX0RFVklDRVRSRUUgPSAiYW0zMzV4LWJvbmUuZHRiIGFtMzM1eC1ib25lYmxhY2suZHRiIGFtMzM1eC1ib25lZ3JlZW4uZHRiIgorICAgICBLRVJORUxfRVhUUkFfQVJHUyArPSAiTE9BREFERFI9JHtVQk9PVF9FTlRSWVBPSU5UfSIKKworICAgICBTUExfQklOQVJZID0gIk1MTyIKKyAgICAgVUJPT1RfU1VGRklYID0gImltZyIKKyAgICAgVUJPT1RfTUFDSElORSA9ICJhbTMzNXhfYm9uZWJsYWNrX2NvbmZpZyIKKyAgICAgVUJPT1RfRU5UUllQT0lOVCA9ICIweDgwMDA4MDAwIgorICAgICBVQk9PVF9MT0FEQUREUkVTUyA9ICIweDgwMDA4MDAwIgorCisgICAgIE1BQ0hJTkVfRkVBVFVSRVMgPSAidXNiZ2FkZ2V0IHVzYmhvc3QgdmZhdCBhbHNhIgorCisgICAgIElNQUdFX0JPT1RfRklMRVMgPz0gInUtYm9vdC4ke1VCT09UX1NVRkZJWH0gTUxPIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIHZhcmlhYmxlcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgbWFjaGluZSBkZWZpbmUKKyAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgcHJvcGVydGllcy4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBtYWNoaW5lLWRlcGVuZGVudCBwYWNrYWdlcywgbWFjaGluZQorICAgICAgICAgICAgdHVuaW5ncywgdGhlIHR5cGUgb2Yga2VybmVsIHRvIGJ1aWxkLCBhbmQKKyAgICAgICAgICAgIFUtQm9vdCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHByb3ZpZGVzIHNvbWUgZXhwbGFuYXRpb24KKyAgICAgICAgICAgIGZvciB0aGUgc3RhdGVtZW50cyBmb3VuZCBpbiB0aGUgZXhhbXBsZSByZWZlcmVuY2UKKyAgICAgICAgICAgIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgQmVhZ2xlQm9uZQorICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYm9hcmRzLgorICAgICAgICAgICAgUmVhbGl6ZSB0aGF0IG11Y2ggbW9yZSBjYW4gYmUgZGVmaW5lZCBhcyBwYXJ0IG9mCisgICAgICAgICAgICBhIG1hY2hpbmVzIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgIEluIGdlbmVyYWwsIHlvdSBjYW4gbGVhcm4gYWJvdXQgcmVsYXRlZCB2YXJpYWJsZXMKKyAgICAgICAgICAgIHRoYXQgdGhpcyBleGFtcGxlIGRvZXMgbm90IGhhdmUgYnkgbG9jYXRpbmcgdGhlCisgICAgICAgICAgICB2YXJpYWJsZXMgaW4gdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXZhcmlhYmxlcy1nbG9zJz5Zb2N0byBQcm9qZWN0IFZhcmlhYmxlcyBHbG9zc2FyeTwvdWxpbms+IgorICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFJFRkVSUkVEX1BST1ZJREVSJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlcjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgdGhhdCBwcm92aWRlcyAidmlydHVhbC94c2VydmVyIiB3aGVuCisgICAgICAgICAgICAgICAgICAgIG1vcmUgdGhhbiBvbmUgcHJvdmlkZXIgaXMgZm91bmQuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHJlY2lwZSB0aGF0IHByb3ZpZGVzCisgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFsL3hzZXJ2ZXIiIGlzICJ4c2VydmVyLXhvcmciLCB3aGljaAorICAgICAgICAgICAgICAgICAgICBleGlzdHMgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXIteG9yZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1YU0VSVkVSJz48ZmlsZW5hbWU+WFNFUlZFUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSBwYWNrYWdlcyB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQgdG8gcHJvdmlkZQorICAgICAgICAgICAgICAgICAgICBhbiBYIHNlcnZlciBhbmQgZHJpdmVycyBmb3IgdGhlIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlICJ4c2VydmVyLXhvcmciIGFuZAorICAgICAgICAgICAgICAgICAgICAieGY4Ni12aWRlby1tb2Rlc2V0dGluZyIgYXJlIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgbWFjaGluZS1kZXBlbmRlbnQgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgbm90IGVzc2VudGlhbCBmb3IgYm9vdGluZyB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHRoZSBidWlsZCBkb2VzIG5vdCBmYWlsIGlmIHRoZSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICBkbyBub3QgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBwYWNrYWdlcyBhcmUgcmVxdWlyZWQgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgZnVsbHktZmVhdHVyZWQgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgTWFueSA8ZmlsZW5hbWU+TUFDSElORSo8L2ZpbGVuYW1lPiB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0IHRoYXQgaGVscCB5b3UgY29uZmlndXJlIGEgcGFydGljdWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgcGllY2Ugb2YgaGFyZHdhcmUuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVFJBX0lNQUdFREVQRU5EUyc+PGZpbGVuYW1lPkVYVFJBX0lNQUdFREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgdG8gYnVpbGQgdGhhdCBkbyBub3QgcHJvdmlkZSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICBmb3IgaW5zdGFsbGluZyBpbnRvIHRoZSByb290IGZpbGVzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgYnV0IGJ1aWxkaW5nIHRoZSBpbWFnZSBkZXBlbmRzIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMgYSByZWNpcGUgaXMgcmVxdWlyZWQgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgdGhlIGZpbmFsIGltYWdlIGJ1dCBpcyBub3QgbmVlZGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIFUtQm9vdCByZWNpcGUgbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICBidWlsdCBmb3IgdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERUZBVUxUVFVORSc+PGZpbGVuYW1lPkRFRkFVTFRUVU5FPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgTWFjaGluZXMgdXNlIHR1bmluZ3MgdG8gb3B0aW1pemUgbWFjaGluZSwKKyAgICAgICAgICAgICAgICAgICAgQ1BVLCBhbmQgYXBwbGljYXRpb24gcGVyZm9ybWFuY2UuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGZlYXR1cmVzLCB3aGljaCBhcmUgY29sbGVjdGl2ZWx5IGtub3duCisgICAgICAgICAgICAgICAgICAgIGFzICJ0dW5pbmcgZmVhdHVyZXMiLCBleGlzdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjb2UtY29yZSc+T3BlbkVtYmVkZGVkLUNvcmUgKE9FLUNvcmUpPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgZGVmYXVsdCB0dW5uaW5nIGZpbGUgaXMKKyAgICAgICAgICAgICAgICAgICAgImNvcnRleGE4aGYtbmVvbiIuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gc3RhdGVtZW50CisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHB1bGxzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTguaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgcHJvdmlkZXMgbWFueSB0dW5pbmcgcG9zc2liaWxpdGllcy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb3JtYXRzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIHVzZXMgZHVyaW5nIHRoZSBidWlsZCB3aGVuIGNyZWF0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgZm91ciB0eXBlcyBvZiBpbWFnZXMgYXJlCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhUUkFfSU1BR0VDTUQnPjxmaWxlbmFtZT5FWFRSQV9JTUFHRUNNRDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGltYWdlCisgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIGNvbW1hbmRzLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSAiLWxucCAiIG9wdGlvbiBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgIHdoZW4gY3JlYXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pGRlMyJz5KRkZTMjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGltYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XS1NfRklMRSc+PGZpbGVuYW1lPldLU19GSUxFPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYta2lja3N0YXJ0Jz5XaWMga2lja3N0YXJ0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhIHBhcnRpdGlvbmVkIGltYWdlIChpbWFnZS53aWMpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBwYWNrYWdlcyB0byBpbnN0YWxsIGludG8gYW4gaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgdXNlIHRoZSA8ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbWFnZV93aWNbZGVwZW5kc108L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgQSB0YXNrIHRoYXQgaXMgY29uc3RydWN0ZWQgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgdGFzayBkZXBlbmRzIG9uIHNwZWNpZmljIHRvb2xzCisgICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGNyZWF0ZSB0aGUgc3lzcm9vdCB3aGVuIGJ1aWRpbmcgYSBXaWMKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNFUklBTF9DT05TT0xFUyc+PGZpbGVuYW1lPlNFUklBTF9DT05TT0xFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgYSBzZXJpYWwgY29uc29sZSAoVFRZKSB0byBlbmFibGUgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgZ2V0dHkuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGJhdWQgcmF0ZSBpcyAiMTE1MjAwIiBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIGRldmljZSBuYW1lIGlzICJ0dHlPMCIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9QUk9WSURFUic+PGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcmVjaXBlIHRoYXQgcHJvdmlkZXMKKyAgICAgICAgICAgICAgICAgICAgInZpcnR1YWwva2VybmVsIiB3aGVuIG1vcmUgdGhhbiBvbmUgcHJvdmlkZXIKKyAgICAgICAgICAgICAgICAgICAgaXMgZm91bmQuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHJlY2lwZSB0aGF0IHByb3ZpZGVzCisgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFsL2tlcm5lbCIgaXMgImxpbnV4LXlvY3RvIiwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgZXhpc3RzIGluIHRoZSBsYXllcidzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFJFRkVSUkVEX1ZFUlNJT04nPjxmaWxlbmFtZT5QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0bzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIHZlcnNpb24gb2YgdGhlIHJlY2lwZSB1c2VkCisgICAgICAgICAgICAgICAgICAgIHRvIGJ1aWxkIHRoZSBrZXJuZWwsIHdoaWNoIGlzICI0LjEyIiBpbiB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNhc2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtFUk5FTF9JTUFHRVRZUEUnPjxmaWxlbmFtZT5LRVJORUxfSU1BR0VUWVBFPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIHR5cGUgb2Yga2VybmVsIHRvIGJ1aWxkIGZvciB0aGUgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSAiekltYWdlIiBpbWFnZSB0eXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LRVJORUxfREVWSUNFVFJFRSc+PGZpbGVuYW1lPktFUk5FTF9ERVZJQ0VUUkVFPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBMaW51eCBrZXJuZWwgZGV2aWNlCisgICAgICAgICAgICAgICAgICAgIHRyZWUgKGkuZS4gdGhlIDxmaWxlbmFtZT4uZHRiPC9maWxlbmFtZT4pIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIEFsbCB0aGUgZGV2aWNlIHRyZWVzIGZvciB0aGUgdmFyaW91cyBCZWFnbGVCb25lCisgICAgICAgICAgICAgICAgICAgIGRldmljZXMgYXJlIGluY2x1ZGVkLgorPCEtLQorICAgICAgICAgICAgICAgICAgICBZb3UgaGF2ZSB0byBpbmNsdWRlIHNvbWUgKi5pbmMgZmlsZXMgYWNjb3JkaW5nIHRvIHRoZSBkZWZpbml0aW9uIG9mIEtFUk5FTF9ERVZJQ0VUUkVFLgorICAgICAgICAgICAgICAgICAgICBJIGRvbid0IHNlZSB3aGVyZSB0aGVzZSBhcmUgYmVpbmcgcHJvdmlkZWQuCistLT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0VSTkVMX0VYVFJBX0FSR1MnPjxmaWxlbmFtZT5LRVJORUxfRVhUUkFfQVJHUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHBhc3NlcyBvbiB3aGVuIGNvbXBpbGluZyB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsICJMT0FEQUREUj0ke1VCT09UX0VOVFJZUE9JTlR9IgorICAgICAgICAgICAgICAgICAgICBpcyBwYXNzZWQgYXMgYSBjb21tYW5kLWxpbmUgYXJndW1lbnQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNQTF9CSU5BUlknPjxmaWxlbmFtZT5TUExfQklOQVJZPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgU2Vjb25kYXJ5IFByb2dyYW0gTG9hZGVyIChTUEwpIGJpbmFyeQorICAgICAgICAgICAgICAgICAgICB0eXBlLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBTUEwgYmluYXJ5IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAiTUxPIiwgd2hpY2ggc3RhbmRzIGZvciBNdWx0aW1lZGlhIGNhcmQgTE9hZGVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG5leHQgc2VjdGlvbnMgcHJvdmlkZSBhIGNvbmNyZXRlIHN0YXJ0aW5nIHBvaW50IHRvIGV4cGFuZCBvbiBhIGZldyBwb2ludHMgdGhhdAotICAgICAgICAgICAgICAgICAgICBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgb2J2aW91cyBvciB0aGF0IGNvdWxkIHVzZSBmdXJ0aGVyIGV4cGxhbmF0aW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgYSBuZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnlvY3RvLWJzcDwvZmlsZW5hbWU+IHNjcmlwdCBjcmVhdGVzIGEgbmV3Ci0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBsYXllcjwvbGluaz4gZm9yIGFueSBhcmNoaXRlY3R1cmUgc3VwcG9ydGVkCi0gICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBZb2N0byBQcm9qZWN0LCBhcyB3ZWxsIGFzIFFFTVUgdmVyc2lvbnMgb2YgdGhlIHNhbWUuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IG1vZGUgb2YgdGhlIHNjcmlwdCdzIG9wZXJhdGlvbiBpcyB0byBwcm9tcHQgeW91IGZvciBpbmZvcm1hdGlvbiBuZWVkZWQKLSAgICAgICAgICAgICAgICAgICAgdG8gZ2VuZXJhdGUgdGhlIEJTUCBsYXllci4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBjdXJyZW50IHNldCBvZiBCU1BzLCB0aGUgc2NyaXB0IHByb21wdHMgeW91IGZvciB2YXJpb3VzIGltcG9ydGFudAotICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzIHN1Y2ggYXM6CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBCZWFnbGVCb25lIGRldmVsb3BtZW50IGJvYXJkIHJlcXVpcmVzIGFuCisgICAgICAgICAgICAgICAgICAgIFNQTCB0byBib290IGFuZCB0aGF0IFNQTCBmaWxlIHR5cGUgbXVzdCBiZSBNTE8uCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBuZWVkcyB0bworICAgICAgICAgICAgICAgICAgICBkZWZpbmUgPGZpbGVuYW1lPlNQTF9CSU5BUlk8L2ZpbGVuYW1lPiBhcyAiTUxPIi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIFNQTCB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSB1c2VkLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYyc+PGZpbGVuYW1lPnUtYm9vdC5pbmM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVUJPT1RfRU5UUllQT0lOVCc+PGZpbGVuYW1lPlVCT09UXyo8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIHZhcmlvdXMgVS1Cb290IGNvbmZpZ3VyYXRpb25zIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICB0byBidWlsZCBhIFUtQm9vdCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCBhIFUtQm9vdCBpbWFnZSBpcyByZXF1aXJlZAorICAgICAgICAgICAgICAgICAgICB0byBib290IHRoZSBCZWFnbGVCb25lIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGZvciBtb3JlIGluZm9ybWF0aW9uOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBrZXJuZWwgdG8gdXNlPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGJyYW5jaCBvZiB0aGF0IGtlcm5lbCB0byB1c2UgKG9yIHJlLXVzZSk8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XaGV0aGVyIG9yIG5vdCB0byB1c2UgWCwgYW5kIGlmIHNvLCB3aGljaCBkcml2ZXJzIHRvIHVzZTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldoZXRoZXIgdG8gdHVybiBvbiBTTVA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XaGV0aGVyIHRoZSBCU1AgaGFzIGEga2V5Ym9hcmQ8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XaGV0aGVyIHRoZSBCU1AgaGFzIGEgdG91Y2hzY3JlZW48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SZW1haW5pbmcgY29uZmlndXJhYmxlIGl0ZW1zIGFzc29jaWF0ZWQgd2l0aCB0aGUgQlNQPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVVCT09UX1NVRkZJWCc+PGZpbGVuYW1lPlVCT09UX1NVRkZJWDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBnZW5lcmF0ZWQgVS1Cb290IGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVUJPT1RfTUFDSElORSc+PGZpbGVuYW1lPlVCT09UX01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgdmFsdWUgcGFzc2VkIG9uIHRoZSBtYWtlIGNvbW1hbmQgbGluZSB3aGVuIGJ1aWxkaW5nIGEgVS1Cb290IGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1VQk9PVF9FTlRSWVBPSU5UJz48ZmlsZW5hbWU+VUJPT1RfRU5UUllQT0lOVDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIFUtQm9vdCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVUJPT1RfTE9BREFERFJFU1MnPjxmaWxlbmFtZT5VQk9PVF9MT0FEQUREUkVTUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsb2FkIGFkZHJlc3MgZm9yIHRoZSBVLUJvb3QgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9GRUFUVVJFUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgaGFyZHdhcmUgZmVhdHVyZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIEJlYWdsZUJvbmUgZGV2aWNlIGlzIGNhcGFibGUgb2Ygc3VwcG9ydGluZy4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgZGV2aWNlIHN1cHBvcnRzCisgICAgICAgICAgICAgICAgICAgICJ1c2JnYWRnZXQgdXNiaG9zdCB2ZmF0IGFsc2EiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9CT09UX0ZJTEVTJz48ZmlsZW5hbWU+SU1BR0VfQk9PVF9GSUxFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIEZpbGVzIGluc3RhbGxlZCBpbnRvIHRoZSBkZXZpY2UncyBib290IHBhcnRpdGlvbgorICAgICAgICAgICAgICAgICAgICB3aGVuIHByZXBhcmluZyB0aGUgaW1hZ2UgdXNpbmcgdGhlIFdpYyB0b29sCisgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT5ib290aW1nLXBhcnRpdGlvbjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBwbHVnaW4uCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlICJ1LWJvb3QuJHtVQk9PVF9TVUZGSVh9IiBhbmQKKyAgICAgICAgICAgICAgICAgICAgIk1MTyIgZmlsZXMgYXJlIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgdXNlIHRoZSA8ZmlsZW5hbWU+eW9jdG8tYnNwIGNyZWF0ZTwvZmlsZW5hbWU+IHN1Yi1jb21tYW5kIHRvIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICBhIG5ldyBCU1AgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCByZXF1aXJlcyB5b3UgdG8gc3BlY2lmeSBhIHBhcnRpY3VsYXIga2VybmVsIGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmthcmNoPC9maWxlbmFtZT4pIG9uIHdoaWNoIHRvIGJhc2UgdGhlIEJTUC4KLSAgICAgICAgICAgICAgICAgICAgQXNzdW1pbmcgeW91IGhhdmUgc291cmNlZCB0aGUgZW52aXJvbm1lbnQsIHlvdSBjYW4gdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tYnNwIGxpc3Qga2FyY2g8L2ZpbGVuYW1lPiBzdWItY29tbWFuZCB0byBsaXN0IHRoZQotICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzIGF2YWlsYWJsZSBmb3IgQlNQIGNyZWF0aW9uIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB5b2N0by1ic3AgbGlzdCBrYXJjaAotICAgICBBcmNoaXRlY3R1cmVzIGF2YWlsYWJsZToKLSAgICAgICAgIHBvd2VycGMKLSAgICAgICAgIHg4Nl82NAotICAgICAgICAgaTM4NgotICAgICAgICAgYXJtCi0gICAgICAgICBxZW11Ci0gICAgICAgICBtaXBzCi0gICAgICAgICBtaXBzNjQKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICA8c2VjdGlvbiBpZD0nYnNwLWtlcm5lbC1yZWNpcGUtZXhhbXBsZSc+CisgICAgICAgIDx0aXRsZT5CU1AgS2VybmVsIFJlY2lwZSBFeGFtcGxlPC90aXRsZT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBhbiBleGFtcGxlIHRoYXQgdXNlcwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXlhcm08L2ZpbGVuYW1lPiBhcyB0aGUgbWFjaGluZSBuYW1lIGFuZCA8ZmlsZW5hbWU+cWVtdTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGFzIHRoZSBtYWNoaW5lIGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgT2YgdGhlIGF2YWlsYWJsZSBhcmNoaXRlY3R1cmVzLCA8ZmlsZW5hbWU+cWVtdTwvZmlsZW5hbWU+IGlzIHRoZSBvbmx5IGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgICAgICB0aGF0IGNhdXNlcyB0aGUgc2NyaXB0IHRvIHByb21wdCB5b3UgZnVydGhlciBmb3IgYW4gYWN0dWFsIGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgSW4gZXZlcnkgb3RoZXIgd2F5LCB0aGlzIGFyY2hpdGVjdHVyZSBpcyByZXByZXNlbnRhdGl2ZSBvZiBob3cgY3JlYXRpbmcgYSBCU1AgZm9yCi0gICAgICAgICAgICAgICAgICAgIGFuIGFjdHVhbCBtYWNoaW5lIHdvdWxkIHdvcmsuCi0gICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gdGhlIGV4YW1wbGUgdXNlcyB0aGlzIGFyY2hpdGVjdHVyZSBpcyBiZWNhdXNlIGl0IGlzIGFuIGVtdWxhdGVkIGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgICAgICBhbmQgY2FuIGVhc2lseSBiZSBmb2xsb3dlZCB3aXRob3V0IHJlcXVpcmluZyBhY3R1YWwgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBrZXJuZWwgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlIGtlcm5lbCBpbWFnZQorICAgICAgICAgICAgZm9yIHRoZSBCZWFnbGVCb25lIGRldmljZSB3YXMgZXN0YWJsaXNoZWQgaW4gdGhlCisgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb246CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjEyJSIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZGlyZWN0b3J5IGluIHRoZSBsYXllciBjb250YWlucyBtZXRhZGF0YSB1c2VkCisgICAgICAgICAgICB0byBidWlsZCB0aGUga2VybmVsLgorICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBhIGtlcm5lbCBhcHBlbmQgZmlsZSBpcyB1c2VkIHRvCisgICAgICAgICAgICBvdmVycmlkZSBhbiBlc3RhYmxpc2hlZCBrZXJuZWwgcmVjaXBlLCB3aGljaCBpcworICAgICAgICAgICAgbG9jYXRlZCBpbgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgnPjwvdWxpbms+CisgICAgICAgICAgICBhbmQgbmFtZWQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0b180LjEyLmJiPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBcyB0aGUgPGZpbGVuYW1lPnlvY3RvLWJzcCBjcmVhdGU8L2ZpbGVuYW1lPiBjb21tYW5kIHJ1bnMsIGRlZmF1bHQgdmFsdWVzIGZvcgotICAgICAgICAgICAgICAgICAgICB0aGUgcHJvbXB0cyBhcHBlYXIgaW4gYnJhY2tldHMuCi0gICAgICAgICAgICAgICAgICAgIFByZXNzaW5nIGVudGVyIHdpdGhvdXQgc3VwcGx5aW5nIGFueXRoaW5nIG9uIHRoZSBjb21tYW5kIGxpbmUgb3IgcHJlc3NpbmcgZW50ZXIKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBhbiBpbnZhbGlkIHJlc3BvbnNlIGNhdXNlcyB0aGUgc2NyaXB0IHRvIGFjY2VwdCB0aGUgZGVmYXVsdCB2YWx1ZS4KLSAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgc2NyaXB0IGNvbXBsZXRlcywgdGhlIG5ldyA8ZmlsZW5hbWU+bWV0YS1teWFybTwvZmlsZW5hbWU+IEJTUCBsYXllcgotICAgICAgICAgICAgICAgICAgICBpcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgYXNzdW1lcyB5b3UgaGF2ZSBzb3VyY2VkIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3dpbmcgaXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBhcHBlbmQgZmlsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJzdGFuZGFyZC9iYXNlIgorICAgICBLQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInN0YW5kYXJkL2Jhc2UiCiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIHRoZSBjb21wbGV0ZSBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgeW9jdG8tYnNwIGNyZWF0ZSBteWFybSBxZW11Ci0gICAgIENoZWNraW5nIGJhc2ljIGdpdCBjb25uZWN0aXZpdHkuLi4KLSAgICAgRG9uZS4KKyAgICAgS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgorICAgICBLTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCisgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgorICAgICBLQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKKyAgICAgS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lIgorICAgICBLQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJzdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgogCi0gICAgIFdoaWNoIHFlbXUgYXJjaGl0ZWN0dXJlIHdvdWxkIHlvdSBsaWtlIHRvIHVzZT8gW2RlZmF1bHQ6IGkzODZdCi0JICAgICAxKSBpMzg2ICAgICgzMi1iaXQpCi0JICAgICAyKSB4ODZfNjQgICg2NC1iaXQpCi0JICAgICAzKSBBUk0gICAgICgzMi1iaXQpCi0JICAgICA0KSBQb3dlclBDICgzMi1iaXQpCi0JICAgICA1KSBNSVBTICAgICgzMi1iaXQpCi0JICAgICA2KSBNSVBTNjQgICg2NC1iaXQpCi0gICAgIDMKLSAgICAgV291bGQgeW91IGxpa2UgdG8gdXNlIHRoZSBkZWZhdWx0ICg0LjgpIGtlcm5lbD8gKHkvbikgW2RlZmF1bHQ6IHldCi0gICAgIERvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSBbZGVmYXVsdDogeV0KLSAgICAgR2V0dGluZyBicmFuY2hlcyBmcm9tIHJlbW90ZSByZXBvIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuOC5naXQuLi4KLSAgICAgUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IFtkZWZhdWx0OiBzdGFuZGFyZC9iYXNlXQotCSAgICAgMSkgc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMKLQkgICAgIDIpIHN0YW5kYXJkL2Jhc2UKLQkgICAgIDMpIHN0YW5kYXJkL2JlYWdsZWJvbmUKLQkgICAgIDQpIHN0YW5kYXJkL2VkZ2Vyb3V0ZXIKLQkgICAgIDUpIHN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIKLQkgICAgIDYpIHN0YW5kYXJkL210aS1tYWx0YTMyCi0JICAgICA3KSBzdGFuZGFyZC9tdGktbWFsdGE2NAotCSAgICAgOCkgc3RhbmRhcmQvcWVtdWFybTY0Ci0JICAgICA5KSBzdGFuZGFyZC9xZW11cHBjCi0gICAgIDEKLSAgICAgV291bGQgeW91IGxpa2UgU01QIHN1cHBvcnQ/ICh5L24pIFtkZWZhdWx0OiB5XQotICAgICBEb2VzIHlvdXIgQlNQIGhhdmUgYSB0b3VjaHNjcmVlbj8gKHkvbikgW2RlZmF1bHQ6IG5dCi0gICAgIERvZXMgeW91ciBCU1AgaGF2ZSBhIGtleWJvYXJkPyAoeS9uKSBbZGVmYXVsdDogeV0KLQotICAgICBOZXcgcWVtdSBCU1AgY3JlYXRlZCBpbiBtZXRhLW15YXJtCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgVGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBleGFtcGxlIG5vdzoKLSAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZvciB0aGUgUUVNVSBhcmNoaXRlY3R1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNjcmlwdCBmaXJzdCBwcm9tcHRzIHlvdSBmb3Igd2hpY2ggZW11bGF0ZWQgYXJjaGl0ZWN0dXJlIHRvIHVzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgZXhhbXBsZSwgd2UgdXNlIHRoZSBBUk0gYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBzY3JpcHQgdGhlbiBwcm9tcHRzIHlvdSBmb3IgdGhlIGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCA0Ljgga2VybmVsIGlzIGFjY2VwdGFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU28sIHRoZSBleGFtcGxlIGFjY2VwdHMgdGhlIGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGVudGVyICduJywgdGhlIHNjcmlwdCBwcm9tcHRzIHlvdSB0byBmdXJ0aGVyIGVudGVyIHRoZSBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgZG8gd2FudCB0byB1c2UuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+TmV4dCwgdGhlIHNjcmlwdCBhc2tzIHdoZXRoZXIgeW91IHdvdWxkIGxpa2UgdG8gaGF2ZSBhIG5ldwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCBjcmVhdGVkIGVzcGVjaWFsbHkgZm9yIHlvdXIgQlNQIGluIHRoZSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IFlvY3RvIEtlcm5lbCBHaXQgcmVwb3NpdG9yeSAuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm90LCB0aGVuIHRoZSBzY3JpcHQgcmUtdXNlcyBhbiBleGlzdGluZyBicmFuY2guPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIHRoaXMgZXhhbXBsZSwgdGhlIGRlZmF1bHQgKG9yICJ5ZXMiKSBpcyBhY2NlcHRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBhIG5ldyBicmFuY2ggaXMgY3JlYXRlZCBmb3IgdGhlIEJTUCByYXRoZXIgdGhhbiB1c2luZyBhIGNvbW1vbiwgc2hhcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXcgYnJhbmNoIGlzIHRoZSBicmFuY2ggY29tbWl0dGVkIHRvIGZvciBhbnkgcGF0Y2hlcyB5b3UgbWlnaHQgbGF0ZXIgYWRkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gYSBuZXcgYnJhbmNoIGlzIHRoZSBkZWZhdWx0IGlzIHRoYXQgdHlwaWNhbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJTUHMgZG8gcmVxdWlyZSBCU1Atc3BlY2lmaWMgcGF0Y2hlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdG9vbCB0aHVzIGFzc3VtZXMgdGhhdCBtb3N0IG9mIHRpbWUgYSBuZXcgYnJhbmNoIGlzIHJlcXVpcmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJlZ2FyZGxlc3Mgb2Ygd2hpY2ggY2hvaWNlIHlvdSBtYWtlIGluIHRoZSBwcmV2aW91cyBzdGVwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBhcmUgbm93IGdpdmVuIHRoZSBvcHBvcnR1bml0eSB0byBzZWxlY3QgYSBwYXJ0aWN1bGFyIG1hY2hpbmUgYnJhbmNoIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggdG8gYmFzZSB5b3VyIG5ldyBCU1Atc3BlY2lmaWMgbWFjaGluZSBicmFuY2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgdG8gcmUtdXNlIGlmIHlvdSBoYWQgZWxlY3RlZCB0byBub3QgY3JlYXRlIGEgbmV3IGJyYW5jaCkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGlzIGV4YW1wbGUgaXMgZ2VuZXJhdGluZyBhbiBBUk0tYmFzZWQgQlNQLCB0aGUgZXhhbXBsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXMgPGZpbGVuYW1lPiMxPC9maWxlbmFtZT4gYXQgdGhlIHByb21wdCwgd2hpY2ggc2VsZWN0cyB0aGUgQVJNLXZlcnNhdGlsZSBicmFuY2guCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHJlbWFpbmRlciBvZiB0aGUgcHJvbXB0cyBhcmUgcm91dGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0cyBhcmUgYWNjZXB0ZWQgZm9yIGVhY2guPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QnkgZGVmYXVsdCwgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZSBuZXcgQlNQIExheWVyIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5wb2t5L2J1aWxkPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBCU1AgTGF5ZXIgaXMgY3JlYXRlZCwgeW91IG11c3QgYWRkIGl0IHRvIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQkJMQVlFUlMgPSA/ICIgXAotICAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhIFwKLSAgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS1wb2t5IFwKLSAgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS15b2N0by1ic3AgXAotICAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLW15YXJtIFwKLSAgICAgICAgIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIEFkZGluZyB0aGUgbGF5ZXIgdG8gdGhpcyBmaWxlIGFsbG93cyB0aGUgYnVpbGQgc3lzdGVtIHRvIGJ1aWxkIHRoZSBCU1AgYW5kCi0gICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gdG9vbCB0byBiZSBhYmxlIHRvIGZpbmQgdGhlIGxheWVyIGFuZAotICAgICAgICAgICAgICAgICAgICBvdGhlciBNZXRhZGF0YSBpdCBuZWVkcyBvbiB3aGljaCB0byBvcGVyYXRlLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J21hbmFnaW5nLWtlcm5lbC1wYXRjaGVzLWFuZC1jb25maWctaXRlbXMtd2l0aC15b2N0by1rZXJuZWwnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5NYW5hZ2luZyBLZXJuZWwgUGF0Y2hlcyBhbmQgQ29uZmlnIEl0ZW1zIHdpdGggeW9jdG8ta2VybmVsPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBc3N1bWluZyB5b3UgaGF2ZSBjcmVhdGVkIGEgPGxpbmsgbGlua2VuZD0nYnNwLWxheWVycyc+QlNQIExheWVyPC9saW5rPiB1c2luZwotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWJzcC1zY3JpcHQnPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tYnNwPC9maWxlbmFtZT48L2xpbms+IGFuZCB5b3UgYWRkZWQgaXQgdG8geW91cgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJMQVlFUlMnPjxmaWxlbmFtZT5CQkxBWUVSUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSwgeW91IGNhbiBub3cgdXNlCi0gICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gc2NyaXB0IHRvIGFkZCBwYXRjaGVzIGFuZCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgIGl0ZW1zIHRvIHRoZSBCU1AncyBrZXJuZWwuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gc2NyaXB0IGFsbG93cyB5b3UgdG8gYWRkLCByZW1vdmUsIGFuZCBsaXN0IHBhdGNoZXMKLSAgICAgICAgICAgICAgICAgICAgYW5kIGtlcm5lbCBjb25maWcgc2V0dGluZ3MgdG8gYSBCU1AncyBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIEFsbCB5b3UgbmVlZCB0byBkbyBpcyB1c2UgdGhlIGFwcHJvcHJpYXRlIHN1Yi1jb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBSZWNhbGwgdGhhdCB0aGUgZWFzaWVzdCB3YXkgdG8gc2VlIGV4YWN0bHkgd2hhdCBzdWItY29tbWFuZHMgYXJlIGF2YWlsYWJsZQotICAgICAgICAgICAgICAgICAgICBpcyB0byB1c2UgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPiBidWlsdC1pbiBoZWxwIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB5b2N0by1rZXJuZWwgLS1oZWxwCi0gICAgIFVzYWdlOgotCi0gICAgICBNb2RpZnkgYW5kIGxpc3QgWW9jdG8gQlNQIGtlcm5lbCBjb25maWcgaXRlbXMgYW5kIHBhdGNoZXMuCi0KLSAgICAgIHVzYWdlOiB5b2N0by1rZXJuZWwgWy0tdmVyc2lvbl0gWy0taGVscF0gQ09NTUFORCBbQVJHU10KLQotICAgICAgQ3VycmVudCAneW9jdG8ta2VybmVsJyBjb21tYW5kcyBhcmU6Ci0gICAgICAgIGNvbmZpZyBsaXN0ICAgICAgIExpc3QgdGhlIG1vZGlmaWFibGUgc2V0IG9mIGJhcmUga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciBhIEJTUAotICAgICAgICBjb25maWcgYWRkICAgICAgICBBZGQgb3IgbW9kaWZ5IGJhcmUga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciBhIEJTUAotICAgICAgICBjb25maWcgcm0gICAgICAgICBSZW1vdmUgYmFyZSBrZXJuZWwgY29uZmlnIG9wdGlvbnMgZnJvbSBhIEJTUAotICAgICAgICBwYXRjaCBsaXN0ICAgICAgICBMaXN0IHRoZSBwYXRjaGVzIGFzc29jaWF0ZWQgd2l0aCBhIEJTUAotICAgICAgICBwYXRjaCBhZGQgICAgICAgICBQYXRjaCB0aGUgWW9jdG8ga2VybmVsIGZvciBhIEJTUAotICAgICAgICBwYXRjaCBybSAgICAgICAgICBSZW1vdmUgcGF0Y2hlcyBmcm9tIGEgQlNQCi0gICAgICAgIGZlYXR1cmUgbGlzdCAgICAgIExpc3QgdGhlIGZlYXR1cmVzIHVzZWQgYnkgYSBCU1AKLSAgICAgICAgZmVhdHVyZSBhZGQgICAgICAgSGF2ZSBhIEJTUCB1c2UgYSBmZWF0dXJlCi0gICAgICAgIGZlYXR1cmUgcm0gICAgICAgIEhhdmUgYSBCU1Agc3RvcCB1c2luZyBhIGZlYXR1cmUKLSAgICAgICAgZmVhdHVyZXMgbGlzdCAgICAgTGlzdCB0aGUgZmVhdHVyZXMgYXZhaWxhYmxlIHRvIEJTUHMKLSAgICAgICAgZmVhdHVyZSBkZXNjcmliZSAgRGVzY3JpYmUgYSBwYXJ0aWN1bGFyIGZlYXR1cmUKLSAgICAgICAgZmVhdHVyZSBjcmVhdGUgICAgQ3JlYXRlIGEgbmV3IEJTUC1sb2NhbCBmZWF0dXJlCi0gICAgICAgIGZlYXR1cmUgZGVzdHJveSAgIFJlbW92ZSBhIEJTUC1sb2NhbCBmZWF0dXJlCi0KLSAgICAgIFNlZSAneW9jdG8ta2VybmVsIGhlbHAgQ09NTUFORCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYSBzcGVjaWZpYyBjb21tYW5kLgorICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICIxYzRhZDU2OWFmM2UyM2E3Nzk5NDIzNTQzNTA0MGUzMjI5MDg2ODdmIgorICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICIxYzRhZDU2OWFmM2UyM2E3Nzk5NDIzNTQzNTA0MGUzMjI5MDg2ODdmIgorICAgICBTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICIyNTdmODQzZWEzNjc3NDQ2MjBmMWQ5MjkxMGFmZDJmNDU0ZTMxNDgzIgorICAgICBTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICIyNTdmODQzZWEzNjc3NDQ2MjBmMWQ5MjkxMGFmZDJmNDU0ZTMxNDgzIgorICAgICBTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjAxNDU2MDg3NGY5ZWIyYTg2MTM4YzljYzM1MDQ2ZmYxNzIwNDg1ZTEiCiAKIAorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lLXlvY3RvIgorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKIAotICAgICBPcHRpb25zOgotICAgICAgIC0tdmVyc2lvbiAgICBzaG93IHByb2dyYW0ncyB2ZXJzaW9uIG51bWJlciBhbmQgZXhpdAotICAgICAgIC1oLCAtLWhlbHAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0Ci0gICAgICAgLUQsIC0tZGVidWcgIG91dHB1dCBkZWJ1ZyBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC4xMi4yMCIKKyAgICAgTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjQuMTIuMjAiCisgICAgIExJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEyLjE5IgorICAgICBMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNC4xMi4xOSIKKyAgICAgTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC4xMi4xOSIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoaXMgcGFydGljdWxhciBhcHBlbmQgZmlsZSB3b3JrcyBmb3IgYWxsIHRoZQorICAgICAgICAgICAgbWFjaGluZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IGNvbnRhaW5lcgorICAgICAgICAgICAgbGF5ZXIuCisgICAgICAgICAgICBUaGUgcmVsZXZhbnQgc3RhdGVtZW50cyBhcmUgYXBwZW5kZWQgd2l0aAorICAgICAgICAgICAgdGhlICJiZWFnbGVib25lLXlvY3RvIiBzdHJpbmcuCisgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZXNlCisgICAgICAgICAgICBzdGF0ZW1lbnRzIHRvIG92ZXJyaWRlIHNpbWlsYXIgc3RhdGVtZW50cworICAgICAgICAgICAgaW4gdGhlIGtlcm5lbCByZWNpcGU6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtCUkFOQ0gnPjxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllcyB0aGUga2VybmVsIGJyYW5jaCB0aGF0IGlzIHZhbGlkYXRlZCwKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hlZCwgYW5kIGNvbmZpZ3VyZWQgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS01BQ0hJTkUnPjxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXMgdGhlIG1hY2hpbmUgbmFtZSBhcyBrbm93biBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsLCB3aGljaCBpcyBzb21ldGltZXMgYSBkaWZmZXJlbnQgbmFtZQorICAgICAgICAgICAgICAgICAgICB0aGFuIHdoYXQgaXMga25vd24gYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXMgdGhlIHJldmlzaW9uIG9mIHRoZSBzb3VyY2UgY29kZSB1c2VkCisgICAgICAgICAgICAgICAgICAgIHRvIGJ1aWxkIHRoZSBpbWFnZS4KKzwhLS0KKyAgICAgICAgICAgICAgICAgICAgWW91IGZpbmQgb3V0IGFib3V0IHRoYXQgcG9pbnQgaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBieQorICAgICAgICAgICAgICAgICAgICBkb2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwgcGF0Y2ggYWRkPC9maWxlbmFtZT4gc3ViLWNvbW1hbmQgYWxsb3dzIHlvdSB0byBhZGQgYQotICAgICAgICAgICAgICAgICAgICBwYXRjaCB0byBhIEJTUC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGFkZHMgdHdvIHBhdGNoZXMgdG8gdGhlIDxmaWxlbmFtZT5teWFybTwvZmlsZW5hbWU+IEJTUDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHlvY3RvLWtlcm5lbCBwYXRjaCBhZGQgbXlhcm0gfi90ZXN0LnBhdGNoCi0gICAgIEFkZGVkIHBhdGNoZXM6Ci0gICAgICAgdGVzdC5wYXRjaAorICAgICAgICAgICAgICAgICAgICBnaXQgbG9nICZkYXNoOyZkYXNoO2RlY29yYXRlIDI1N2Y4NDNlYTM2Nzc0NDYyMGYxZDkyOTEwYWZkMmY0NTRlMzE0ODMKIAotICAgICAkIHlvY3RvLWtlcm5lbCBwYXRjaCBhZGQgbXlhcm0gfi95b2N0by10ZXN0bW9kLnBhdGNoCi0gICAgIEFkZGVkIHBhdGNoZXM6Ci0gICAgICAgeW9jdG8tdGVzdG1vZC5wYXRjaAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPkFsdGhvdWdoIHRoZSBwcmV2aW91cyBleGFtcGxlIGFkZHMgcGF0Y2hlcyBvbmUgYXQgYSB0aW1lLCBpdCBpcyBwb3NzaWJsZQotICAgICAgICAgICAgICAgICAgICB0byBhZGQgbXVsdGlwbGUgcGF0Y2hlcyBhdCB0aGUgc2FtZSB0aW1lLjwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB2ZXJpZnkgcGF0Y2hlcyBoYXZlIGJlZW4gYWRkZWQgYnkgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwgcGF0Y2ggbGlzdDwvZmlsZW5hbWU+IHN1Yi1jb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB5b2N0by1rZXJuZWwgcGF0Y2ggbGlzdCBteWFybQotICAgICBUaGUgY3VycmVudCBzZXQgb2YgbWFjaGluZS1zcGVjaWZpYyBwYXRjaGVzIGZvciBteWFybSBpczoKLSAgICAgICAxKSB0ZXN0LnBhdGNoCi0gICAgICAgMikgeW9jdG8tdGVzdG1vZC5wYXRjaAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPiBzY3JpcHQgdG8KLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlIGEgcGF0Y2ggdXNpbmcgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwgcGF0Y2ggcm08L2ZpbGVuYW1lPiBzdWItY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgeW9jdG8ta2VybmVsIHBhdGNoIHJtIG15YXJtCi0gICAgIFNwZWNpZnkgdGhlIHBhdGNoZXMgdG8gcmVtb3ZlOgotICAgICAgIDEpIHRlc3QucGF0Y2gKLSAgICAgICAyKSB5b2N0by10ZXN0bW9kLnBhdGNoCi0gICAgIDEKLSAgICAgUmVtb3ZlZCBwYXRjaGVzOgotICAgICAgIHRlc3QucGF0Y2gKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBZ2FpbiwgdXNpbmcgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwgcGF0Y2ggbGlzdDwvZmlsZW5hbWU+IHN1Yi1jb21tYW5kLAotICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHZlcmlmeSB0aGF0IHRoZSBwYXRjaCB3YXMgaW4gZmFjdCByZW1vdmVkOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgeW9jdG8ta2VybmVsIHBhdGNoIGxpc3QgbXlhcm0KLSAgICAgVGhlIGN1cnJlbnQgc2V0IG9mIG1hY2hpbmUtc3BlY2lmaWMgcGF0Y2hlcyBmb3IgbXlhcm0gaXM6Ci0gICAgICAgMSkgeW9jdG8tdGVzdG1vZC5wYXRjaAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEluIGEgY29tcGxldGVseSBzaW1pbGFyIHdheSwgeW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwgY29uZmlnIGFkZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHN1Yi1jb21tYW5kIHRvIGFkZCBvbmUgb3IgbW9yZSBrZXJuZWwgY29uZmlnIGl0ZW0gc2V0dGluZ3MgdG8gYSBCU1AuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYWRkIGEgY291cGxlIG9mIGNvbmZpZyBpdGVtcyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm15YXJtPC9maWxlbmFtZT4gQlNQOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgeW9jdG8ta2VybmVsIGNvbmZpZyBhZGQgbXlhcm0gQ09ORklHX01JU0NfREVWSUNFUz15Ci0gICAgIEFkZGVkIGl0ZW06Ci0gICAgICAgQ09ORklHX01JU0NfREVWSUNFUz15Ci0KLSAgICAgJCB5b2N0by1rZXJuZWwgY29uZmlnIGFkZCBteWFybSBDT05GSUdfWU9DVE9fVEVTVE1PRD15Ci0gICAgIEFkZGVkIGl0ZW06Ci0gICAgICAgQ09ORklHX1lPQ1RPX1RFU1RNT0Q9eQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggdGhlIHByZXZpb3VzIGV4YW1wbGUgYWRkcyBjb25maWcgaXRlbXMgb25lIGF0IGEgdGltZSwgaXQgaXMgcG9zc2libGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFkZCBtdWx0aXBsZSBjb25maWcgaXRlbXMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGxpc3QgdGhlIGNvbmZpZyBpdGVtcyBub3cgYXNzb2NpYXRlZCB3aXRoIHRoZSBCU1AuCi0gICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIHNob3dzIHlvdSB0aGUgY29uZmlnIGl0ZW1zIHlvdSBhZGRlZCBhcyB3ZWxsIGFzIG90aGVycyBhc3NvY2lhdGVkCi0gICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIEJTUDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHlvY3RvLWtlcm5lbCBjb25maWcgbGlzdCBteWFybQotICAgICBUaGUgY3VycmVudCBzZXQgb2YgbWFjaGluZS1zcGVjaWZpYyBrZXJuZWwgY29uZmlnIGl0ZW1zIGZvciBteWFybSBpczoKLSAgICAgICAgICAgICAxKSBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKLSAgICAgICAgICAgICAyKSBDT05GSUdfWU9DVE9fVEVTVE1PRD15Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgeW91IGNhbiByZW1vdmUgb25lIG9yIG1vcmUgY29uZmlnIGl0ZW1zIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsIGNvbmZpZyBybTwvZmlsZW5hbWU+IHN1Yi1jb21tYW5kIGluIGEgbWFubmVyCi0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlbHkgYW5hbG9nb3VzIHRvIDxmaWxlbmFtZT55b2N0by1rZXJuZWwgcGF0Y2ggcm08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tbWl0LCB3aGljaCBpcyB1c3VhbGx5CisgICAgICAgICAgICAgICAgICAgIHRoYXQgaXQgaXMgYSBtZXJnZSBwb2ludCBmb3IgYSBzdGFibGUga2VybmVsIHJlbGVhc2UuCistLT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09NUEFUSUJMRV9NQUNISU5FJz48ZmlsZW5hbWU+Q09NUEFUSUJMRV9NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCByZXNvbHZlcyB0byBvbmUgb3IKKyAgICAgICAgICAgICAgICAgICAgbW9yZSB0YXJnZXQgbWFjaGluZXMgd2l0aCB3aGljaCB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIGlzIGNvbXBhdGlibGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJTlVYX1ZFUlNJT04nPjxmaWxlbmFtZT5MSU5VWF9WRVJTSU9OPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIExpbnV4IHZlcnNpb24gZnJvbSBrZXJuZWwub3JnIHVzZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KIDwvY2hhcHRlcj4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nCmluZGV4IDBmODJhMWYuLjJjYTFmZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCmluZGV4IDAwODE3MzguLmZlMWJmYmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCkBAIC0yMiw5MCArMjIsMjQgQEAKICAgICAgICAgICAgIG11bHRpcGxlIGxheWVycy4KICAgICAgICAgICAgIExheWVycyBhbGxvdyB5b3UgdG8gaXNvbGF0ZSBkaWZmZXJlbnQgdHlwZXMgb2YgY3VzdG9taXphdGlvbnMgZnJvbQogICAgICAgICAgICAgZWFjaCBvdGhlci4KLSAgICAgICAgICAgIFlvdSBtaWdodCBmaW5kIGl0IHRlbXB0aW5nIHRvIGtlZXAgZXZlcnl0aGluZyBpbiBvbmUgbGF5ZXIgd2hlbgotICAgICAgICAgICAgd29ya2luZyBvbiBhIHNpbmdsZSBwcm9qZWN0LgotICAgICAgICAgICAgSG93ZXZlciwgdGhlIG1vcmUgbW9kdWxhciB5b3VyIE1ldGFkYXRhLCB0aGUgZWFzaWVyCi0gICAgICAgICAgICBpdCBpcyB0byBjb3BlIHdpdGggZnV0dXJlIGNoYW5nZXMuCisgICAgICAgICAgICBGb3IgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0IExheWVyIE1vZGVsLAorICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjdGhlLXlvY3RvLXByb2plY3QtbGF5ZXItbW9kZWwnPlRoZSBZb2N0byBQcm9qZWN0IExheWVyIE1vZGVsPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIGlsbHVzdHJhdGUgaG93IGxheWVycyBhcmUgdXNlZCB0byBrZWVwIHRoaW5ncyBtb2R1bGFyLCBjb25zaWRlcgotICAgICAgICAgICAgbWFjaGluZSBjdXN0b21pemF0aW9ucy4KLSAgICAgICAgICAgIFRoZXNlIHR5cGVzIG9mIGN1c3RvbWl6YXRpb25zIHR5cGljYWxseSByZXNpZGUgaW4gYSBzcGVjaWFsIGxheWVyLAotICAgICAgICAgICAgcmF0aGVyIHRoYW4gYSBnZW5lcmFsIGxheWVyLCBjYWxsZWQgYSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKLSAgICAgICAgICAgIExheWVyLgotICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBtYWNoaW5lIGN1c3RvbWl6YXRpb25zIHNob3VsZCBiZSBpc29sYXRlZCBmcm9tCi0gICAgICAgICAgICByZWNpcGVzIGFuZCBNZXRhZGF0YSB0aGF0IHN1cHBvcnQgYSBuZXcgR1VJIGVudmlyb25tZW50LAotICAgICAgICAgICAgZm9yIGV4YW1wbGUuCi0gICAgICAgICAgICBUaGlzIHNpdHVhdGlvbiBnaXZlcyB5b3UgYSBjb3VwbGUgb2YgbGF5ZXJzOiBvbmUgZm9yIHRoZSBtYWNoaW5lCi0gICAgICAgICAgICBjb25maWd1cmF0aW9ucywgYW5kIG9uZSBmb3IgdGhlIEdVSSBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kLCBob3dldmVyLCB0aGF0IHRoZSBCU1AgbGF5ZXIgY2FuCi0gICAgICAgICAgICBzdGlsbCBtYWtlIG1hY2hpbmUtc3BlY2lmaWMgYWRkaXRpb25zIHRvIHJlY2lwZXMgd2l0aGluIHRoZSBHVUkKLSAgICAgICAgICAgIGVudmlyb25tZW50IGxheWVyIHdpdGhvdXQgcG9sbHV0aW5nIHRoZSBHVUkgbGF5ZXIgaXRzZWxmCi0gICAgICAgICAgICB3aXRoIHRob3NlIG1hY2hpbmUtc3BlY2lmaWMgY2hhbmdlcy4KLSAgICAgICAgICAgIFlvdSBjYW4gYWNjb21wbGlzaCB0aGlzIHRocm91Z2ggYSByZWNpcGUgdGhhdCBpcyBhIEJpdEJha2UgYXBwZW5kCi0gICAgICAgICAgICAoPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+KSBmaWxlLCB3aGljaCBpcyBkZXNjcmliZWQgbGF0ZXIKLSAgICAgICAgICAgIGluIHRoaXMgc2VjdGlvbi4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIEJTUCBsYXllciBzdHJ1Y3R1cmUsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AnPkJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUCkgLSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1sYXllcnMnPgotICAgICAgICAgICAgPHRpdGxlPkxheWVyczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICBjb250YWlucyBib3RoIGdlbmVyYWwgbGF5ZXJzIGFuZCBCU1AKLSAgICAgICAgICAgICAgICBsYXllcnMgcmlnaHQgb3V0IG9mIHRoZSBib3guCi0gICAgICAgICAgICAgICAgWW91IGNhbiBlYXNpbHkgaWRlbnRpZnkgbGF5ZXJzIHRoYXQgc2hpcCB3aXRoIGEKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYnkgdGhlaXIKLSAgICAgICAgICAgICAgICBmb2xkZXIgbmFtZXMuCi0gICAgICAgICAgICAgICAgRm9sZGVycyB0aGF0IHJlcHJlc2VudCBsYXllcnMgdHlwaWNhbGx5IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoCi0gICAgICAgICAgICAgICAgdGhlIHN0cmluZyA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgSXQgaXMgbm90IGEgcmVxdWlyZW1lbnQgdGhhdCBhIGxheWVyIG5hbWUgYmVnaW4gd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4IDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+LCBidXQgaXQgaXMgYSBjb21tb25seQotICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZCBzdGFuZGFyZCBpbiB0aGUgWW9jdG8gUHJvamVjdCBjb21tdW5pdHkuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIHlvdSBzZXQgdXAgdGhlIFNvdXJjZSBEaXJlY3Rvcnkgc3RydWN0dXJlLAotICAgICAgICAgICAgICAgIHlvdSB3aWxsIHNlZSBzZXZlcmFsIGxheWVyczoKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXNrZWxldG9uPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2VsZnRlc3Q8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIEVhY2ggb2YgdGhlc2UgZm9sZGVycyByZXByZXNlbnRzIGEgZGlzdGluY3QgbGF5ZXIuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIGFub3RoZXIgZXhhbXBsZSwgaWYgeW91IHNldCB1cCBhIGxvY2FsIGNvcHkgb2YgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeQotICAgICAgICAgICAgICAgIGFuZCB0aGVuIGV4cGxvcmUgdGhlIGZvbGRlciBvZiB0aGF0IGdlbmVyYWwgbGF5ZXIsCi0gICAgICAgICAgICAgICAgeW91IHdpbGwgZGlzY292ZXIgbWFueSBJbnRlbC1zcGVjaWZpYyBCU1AgbGF5ZXJzIGluc2lkZS4KLSAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXJzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKQotICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KICAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLXlvdXItb3duLWxheWVyJz4KICAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBZb3VyIE93biBMYXllcjwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEl0IGlzIHZlcnkgZWFzeSB0byBjcmVhdGUgeW91ciBvd24gbGF5ZXJzIHRvIHVzZSB3aXRoIHRoZQogICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3Qgc2hpcHMgd2l0aCBzY3JpcHRzIHRoYXQgc3BlZWQgdXAgY3JlYXRpbmcKLSAgICAgICAgICAgICAgICBnZW5lcmFsIGxheWVycyBhbmQgQlNQIGxheWVycy4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzaGlwcyB3aXRoIHRvb2xzIHRoYXQgc3BlZWQgdXAgY3JlYXRpbmcKKyAgICAgICAgICAgICAgICBsYXllcnMuCiAgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgc3RlcHMgeW91IHBlcmZvcm0gYnkgaGFuZCB0byBjcmVhdGUKLSAgICAgICAgICAgICAgICBhIGxheWVyIHNvIHRoYXQgeW91IGNhbiBiZXR0ZXIgdW5kZXJzdGFuZCB0aGVtLgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGF5ZXItY3JlYXRpb24gc2NyaXB0cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWJzcC1zY3JpcHQnPkNyZWF0aW5nIGEgTmV3IEJTUCBMYXllciBVc2luZyB0aGUgeW9jdG8tYnNwIFNjcmlwdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIGxheWVycyBzbyB0aGF0IHlvdSBjYW4gYmV0dGVyIHVuZGVyc3RhbmQgdGhlbS4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxheWVyLWNyZWF0aW9uIHRvb2xzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApCiAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUgYW5kIHRoZQogICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L2xpbms+IgpAQCAtMTEzLDQwICs0Nyw3MCBAQAogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2UgZ2VuZXJhbCBzdGVwcyB0byBjcmVhdGUgeW91ciBsYXllciB3aXRob3V0IHRoZSBhaWQgb2YgYSBzY3JpcHQ6CisgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIGdlbmVyYWwgc3RlcHMgdG8gY3JlYXRlIHlvdXIgbGF5ZXIgd2l0aG91dCB1c2luZworICAgICAgICAgICAgICAgIHRvb2xzOgogICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DaGVjayBFeGlzdGluZyBMYXllcnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrIEV4aXN0aW5nIExheWVyczo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgQmVmb3JlIGNyZWF0aW5nIGEgbmV3IGxheWVyLCB5b3Ugc2hvdWxkIGJlIHN1cmUgc29tZW9uZQogICAgICAgICAgICAgICAgICAgICAgICAgaGFzIG5vdCBhbHJlYWR5IGNyZWF0ZWQgYSBsYXllciBjb250YWluaW5nIHRoZSBNZXRhZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgeW91IG5lZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2xheWVycy8nPjxmaWxlbmFtZT5PcGVuRW1iZWRkZWQgTWV0YWRhdGEgSW5kZXg8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvbGF5ZXJpbmRleC9sYXllcnMvJz5PcGVuRW1iZWRkZWQgTWV0YWRhdGEgSW5kZXg8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGEgbGlzdCBvZiBsYXllcnMgZnJvbSB0aGUgT3BlbkVtYmVkZGVkIGNvbW11bml0eQogICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjYW4gYmUgdXNlZCBpbiB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjb3VsZCBmaW5kIGEgbGF5ZXIgdGhhdCBpcyBpZGVudGljYWwgb3IgY2xvc2UgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHdoYXQgeW91IG5lZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGUgYSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIERpcmVjdG9yeTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIHRoZSBkaXJlY3RvcnkgZm9yIHlvdXIgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSBub3Qgc3RyaWN0bHkgcmVxdWlyZWQsIHByZXBlbmQgdGhlIG5hbWUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXIgd2l0aCB0aGUgc3RyaW5nIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIHRoZSBsYXllciwgYmUgc3VyZSB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaW4gYW4gYXJlYSBub3QgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgY2xvbmVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldoaWxlIG5vdCBzdHJpY3RseSByZXF1aXJlZCwgcHJlcGVuZCB0aGUgbmFtZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRpcmVjdG9yeSB3aXRoIHRoZSBzdHJpbmcgIm1ldGEtIi4KICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBtZXRhLW15bGF5ZXIKICAgICAgbWV0YS1HVUlfeHl6CiAgICAgIG1ldGEtbXltYWNoaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBXaXRoIHJhcmUgZXhjZXB0aW9ucywgYSBsYXllcidzIG5hbWUgZm9sbG93cyB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5yb290X25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIHRoaXMgbGF5ZXIgbmFtaW5nIGNvbnZlbnRpb24gY2FuCisgICAgICAgICAgICAgICAgICAgICAgICBzYXZlIHlvdSB0cm91YmxlIGxhdGVyIHdoZW4gdG9vbHMsIGNvbXBvbmVudHMsIG9yCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgImFzc3VtZSIgeW91ciBsYXllciBuYW1lIGJlZ2lucyB3aXRoICJtZXRhLSIuCisgICAgICAgICAgICAgICAgICAgICAgICBBIG5vdGFibGUgZXhhbXBsZSBpcyBpbiBjb25maWd1cmF0aW9uIGZpbGVzIGFzCisgICAgICAgICAgICAgICAgICAgICAgICBzaG93biBpbiB0aGUgZm9sbG93aW5nIHN0ZXAgd2hlcmUgbGF5ZXIgbmFtZXMgd2l0aG91dAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlICJtZXRhLSIgc3RyaW5nIGFyZSBhcHBlbmRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gc2V2ZXJhbCB2YXJpYWJsZXMgdXNlZCBpbiB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNyZWF0ZSBhIExheWVyIENvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICBJbnNpZGUgeW91ciBuZXcgbGF5ZXIgZm9sZGVyLCB5b3UgbmVlZCB0byBjcmVhdGUgYQotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgZWFzaWVzdCB0byB0YWtlIGFuIGV4aXN0aW5nIGxheWVyIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBhbmQgY29weSB0aGF0IHRvIHlvdXIgbGF5ZXIncwotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQgdGhlbiBtb2RpZnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgbmVlZGVkLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcC9jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgIGRlbW9uc3RyYXRlcyB0aGUgcmVxdWlyZWQgc3ludGF4OgotICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZGV2LWxheWVyLWNvbmZpZy1maWxlLWRlc2NyaXB0aW9uJz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBMYXllciBDb25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluc2lkZSB5b3VyIG5ldyBsYXllciBmb2xkZXIsIHlvdSBuZWVkIHRvIGNyZWF0ZSBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGVhc2llc3QgdG8gdGFrZSBhbiBleGlzdGluZyBsYXllciBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGFuZCBjb3B5IHRoYXQgdG8geW91ciBsYXllcidzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQgdGhlbiBtb2RpZnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIG5lZWRlZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS15b2N0by1ic3AvY29uZic+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBkZW1vbnN0cmF0ZXMgdGhlIHJlcXVpcmVkIHN5bnRheC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciB5b3VyIGxheWVyLCB5b3UgbmVlZCB0byByZXBsYWNlICJ5b2N0b2JzcCIgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgeW91ciBsYXllciAoZS5nLiAibWFjaGluZXh5eiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhIGxheWVyIG5hbWVkICJtZXRhLW1hY2hpbmV4eXoiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKICAgICAgQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCiAKQEAgLTE1Nyw3NSArMTIxLDgyIEBACiAgICAgIEJCRklMRV9DT0xMRUNUSU9OUyArPSAieW9jdG9ic3AiCiAgICAgIEJCRklMRV9QQVRURVJOX3lvY3RvYnNwID0gIl4ke0xBWUVSRElSfS8iCiAgICAgIEJCRklMRV9QUklPUklUWV95b2N0b2JzcCA9ICI1IgotICAgICBMQVlFUlZFUlNJT05feW9jdG9ic3AgPSAiMyIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBleGFtcGxlOgorICAgICBMQVlFUlZFUlNJT05feW9jdG9ic3AgPSAiNCIKKyAgICAgTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvYnNwID0gIiZESVNUUk9fTkFNRV9OT19DQVA7IgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBsYXllciBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOgogICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGNvbmZpZ3VyYXRpb24gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMgZGlyZWN0b3J5IGlzIGFwcGVuZGVkIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbCBub24tZGlzdHJvIGxheWVycywgd2hpY2ggaW5jbHVkZSBhbGwgQlNQCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnMsIGFyZSBleHBlY3RlZCB0byBhcHBlbmQgdGhlIGxheWVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgZGlzdHJvIGxheWVycywgc3VjaCBhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+LCBjYW4gY2hvb3NlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBlbmZvcmNlIHRoZWlyIG93biBwcmVjZWRlbmNlIG92ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9mIHRoYXQgc3ludGF4LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGxheWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSByZWNpcGVzIGZvciB0aGUgbGF5ZXJzIGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRlZCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRVMnPkJCRklMRVM8L3VsaW5rPjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCUEFUSCc+PGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHMgdGhlIGxheWVyJ3Mgcm9vdCBkaXJlY3RvcnkgdG8gQml0QmFrZSdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaCBwYXRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJvdWdoIHRoZSB1c2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZSwgQml0QmFrZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVzIGNsYXNzIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBmaWxlcyB0aGF0IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlZCB3aXRoIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZXF1aXJlPC9maWxlbmFtZT4gc3RhdGVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZXNlIGNhc2VzLCBCaXRCYWtlIHVzZXMgdGhlIGZpcnN0IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBtYXRjaGVzIHRoZSBuYW1lIGZvdW5kIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSB3YXkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgdXNlZCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkLCB0aGVyZWZvcmUsIHRoYXQgeW91IHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUgY2xhc3MgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZW5hbWVzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgY3VzdG9tIGxheWVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJGSUxFX0NPTExFQ1RJT05TJz5CQkZJTEVfQ09MTEVDVElPTlM8L3VsaW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHRoZW4gYXBwZW5kZWQgd2l0aCB0aGUgbGF5ZXIgbmFtZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QQVRURVJOJz5CQkZJTEVfUEFUVEVSTjwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgc2V0IHRvIGEgcmVndWxhciBleHByZXNzaW9uIGFuZCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIG1hdGNoIGZpbGVzIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCRklMRVM8L2ZpbGVuYW1lPiBpbnRvIGEgcGFydGljdWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRVMnPjxmaWxlbmFtZT5CQkZJTEVTPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgbG9jYXRpb24gZm9yIGFsbCByZWNpcGVzIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxBWUVSRElSJz5MQVlFUkRJUjwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdXNlZCB0byBtYWtlIDxmaWxlbmFtZT5CQkZJTEVfUEFUVEVSTjwvZmlsZW5hbWU+IG1hdGNoIHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIncyBwYXRoLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkZJTEVfUFJJT1JJVFknPkJCRklMRV9QUklPUklUWTwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdGhlbiBhc3NpZ25zIGEgcHJpb3JpdHkgdG8gdGhlIGxheWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBseWluZyBwcmlvcml0aWVzIGlzIHVzZWZ1bCBpbiBzaXR1YXRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRoZSBzYW1lIHJlY2lwZSBtaWdodCBhcHBlYXIgaW4gbXVsdGlwbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzIGFuZCBhbGxvd3MgeW91IHRvIGNob29zZSB0aGUgbGF5ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB0YWtlcyBwcmVjZWRlbmNlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MQVlFUlZFUlNJT04nPkxBWUVSVkVSU0lPTjwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgb3B0aW9uYWxseSBzcGVjaWZpZXMgdGhlIHZlcnNpb24gb2YgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllciBhcyBhIHNpbmdsZSBudW1iZXIuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Ob3RlIHRoZSB1c2Ugb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxBWUVSRElSJz5MQVlFUkRJUjwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBleHBhbmRzIHRvIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRocm91Z2ggdGhlIHVzZSBvZiB0aGUgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgQml0QmFrZSBsb2NhdGVzIGNsYXNzIGZpbGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4pLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kIGZpbGVzIHRoYXQgYXJlIGluY2x1ZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVxdWlyZTwvZmlsZW5hbWU+IHN0YXRlbWVudHMuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIEJpdEJha2UgdXNlcyB0aGUgZmlyc3QgZmlsZSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzIHRoZSBuYW1lIGZvdW5kIGluIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgd2F5IHRoZSA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyB1c2VkIGZvciBiaW5hcmllcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkLCB0aGVyZWZvcmUsIHRoYXQgeW91IHVzZSB1bmlxdWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZXMgaW4geW91ciBjdXN0b20gbGF5ZXIuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QWRkIENvbnRlbnQ6PC9lbXBoYXNpcz4gRGVwZW5kaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgdHlwZSBvZiBsYXllciwgYWRkIHRoZSBjb250ZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkZJTEVfQ09MTEVDVElPTlMnPjxmaWxlbmFtZT5CQkZJTEVfQ09MTEVDVElPTlM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFc3RhYmxpc2hlcyB0aGUgY3VycmVudCBsYXllciB0aHJvdWdoIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlIGlkZW50aWZpZXIgdGhhdCBpcyB1c2VkIHRocm91Z2hvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcmVmZXIgdG8gdGhlIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBpZGVudGlmaWVyICJ5b2N0b2JzcCIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY29udGFpbmVyIGxheWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVkICJtZXRhLXlvY3RvLWJzcCIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QQVRURVJOJz48ZmlsZW5hbWU+QkJGSUxFX1BBVFRFUk48L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBhbmRzIGltbWVkaWF0ZWx5IGR1cmluZyBwYXJzaW5nIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGUgdGhlIGRpcmVjdG9yeSBvZiB0aGUgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QUklPUklUWSc+PGZpbGVuYW1lPkJCRklMRV9QUklPUklUWTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIGEgcHJpb3JpdHkgdG8gdXNlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVzIGluIHRoZSBsYXllciB3aGVuIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZHMgcmVjaXBlcyBvZiB0aGUgc2FtZSBuYW1lIGluIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxBWUVSVkVSU0lPTic+PGZpbGVuYW1lPkxBWUVSVkVSU0lPTjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIGEgdmVyc2lvbiBudW1iZXIgZm9yIHRoZSBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhpcyB2ZXJzaW9uIG51bWJlciB0byBzcGVjaWZ5IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3QgdmVyc2lvbiBvZiB0aGUgbGF5ZXIgYXMgYSBkZXBlbmRlbmN5IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MQVlFUkRFUEVORFMnPjxmaWxlbmFtZT5MQVlFUkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MQVlFUlNFUklFU19DT01QQVQnPjxmaWxlbmFtZT5MQVlFUlNFUklFU19DT01QQVQ8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5Zb2N0byBQcm9qZWN0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZXMgZm9yIHdoaWNoIHRoZSBjdXJyZW50IHZlcnNpb24gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBhIGdvb2Qgd2F5IHRvIGluZGljYXRlIGhvdworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cC10by1kYXRlIHlvdXIgcGFydGljdWxhciBsYXllciBpcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QWRkIENvbnRlbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBsYXllciwgYWRkIHRoZSBjb250ZW50LgogICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGxheWVyIGFkZHMgc3VwcG9ydCBmb3IgYSBtYWNoaW5lLCBhZGQgdGhlIG1hY2hpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaW4gYSA8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHdpdGhpbiB0aGUgbGF5ZXIuCkBAIC0yMzUsOSArMjA2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgbGF5ZXIgaW50cm9kdWNlcyBuZXcgcmVjaXBlcywgcHV0IHRoZSByZWNpcGVzCiAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCBpbiA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yaWVzIHdpdGhpbiB0aGUgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT5JbiBvcmRlciB0byBiZSBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGxheWVyIG11c3QgY29udGFpbiBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjYnNwLWZpbGVsYXlvdXQtcmVhZG1lJz5SRUFETUUgZmlsZS48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGV4cGxhbmF0aW9uIG9mIGxheWVyIGhpZXJhcmNoeSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgY29tcGxpYW50IHdpdGggdGhlIFlvY3RvIFByb2plY3QsIHNlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtZmlsZWxheW91dCc+RXhhbXBsZSBGaWxlc3lzdGVtIExheW91dDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtNDkyLDcgKzQ2Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRhYmxlIGV4cGxhbmF0aW9uIGZvciBhbnkgcXVlc3Rpb25zIGFuc3dlcmVkICJObyIuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgYSBZb2N0byBQcm9qZWN0IE1lbWJlciBPcmdhbml6YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBCZSBhIFlvY3RvIFByb2plY3QgTWVtYmVyIE9yZ2FuaXphdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtNTYyLDcgKzUzNyw3IEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgZGl2aWRlcyB0ZXN0cyBpbnRvIHRocmVlIGFyZWFzOiBDT01NT04sIEJTRCwKKyAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBkaXZpZGVzIHRlc3RzIGludG8gdGhyZWUgYXJlYXM6IENPTU1PTiwgQlNQLAogICAgICAgICAgICAgICAgICAgICBhbmQgRElTVFJPLgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZ2l2ZW4gYSBkaXN0cmlidXRpb24gbGF5ZXIgKERJU1RSTyksIHRoZQogICAgICAgICAgICAgICAgICAgICBsYXllciBtdXN0IHBhc3MgYm90aCB0aGUgQ09NTU9OIGFuZCBESVNUUk8gcmVsYXRlZCB0ZXN0cy4KQEAgLTY0NiwyMyArNjIxLDI2IEBACiAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyB0byBlbmFibGUgYSBsYXllciBuYW1lZAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXI8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIExDT05GX1ZFUlNJT04gPSAiNiIKKyAgICAgIyBQT0tZX0JCTEFZRVJTX0NPTkZfVkVSU0lPTiBpcyBpbmNyZWFzZWQgZWFjaCB0aW1lIGJ1aWxkL2NvbmYvYmJsYXllcnMuY29uZgorICAgICAjIGNoYW5nZXMgaW5jb21wYXRpYmx5CisgICAgIFBPS1lfQkJMQVlFUlNfQ09ORl9WRVJTSU9OID0gIjIiCiAKICAgICAgQkJQQVRIID0gIiR7VE9QRElSfSIKICAgICAgQkJGSUxFUyA/PSAiIgogCiAgICAgIEJCTEFZRVJTID89ICIgXAotICAgICAgICRIT01FL3Bva3kvbWV0YSBcCi0gICAgICAgJEhPTUUvcG9reS9tZXRhLXBva3kgXAotICAgICAgICRIT01FL3Bva3kvbWV0YS15b2N0by1ic3AgXAotICAgICAgICRIT01FL3Bva3kvbWV0YS1teWxheWVyIFwKKyAgICAgICAvaG9tZS88cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibGU+L3Bva3kvbWV0YSBcCisgICAgICAgL2hvbWUvPHJlcGxhY2VhYmxlPnVzZXI8L3JlcGxhY2VhYmxlPi9wb2t5L21ldGEtcG9reSBcCisgICAgICAgL2hvbWUvPHJlcGxhY2VhYmxlPnVzZXI8L3JlcGxhY2VhYmxlPi9wb2t5L21ldGEteW9jdG8tYnNwIFwKKyAgICAgICAvaG9tZS88cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibGU+L3Bva3kvbWV0YS1teWxheWVyIFwKICAgICAgICAiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBCaXRCYWtlIHBhcnNlcyBlYWNoIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgYXMgc3BlY2lmaWVkIGluIHRoZSA8ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgIGZyb20gdGhlIHRvcCBkb3duIGFzIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPiB2YXJpYWJsZQogICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUuCiAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSBwcm9jZXNzaW5nIG9mIGVhY2gKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZSwgQml0QmFrZSBhZGRzIHRoZQpAQCAtODQwLDggKzgxOCw3IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBUbyBzcGVjaWZ5IHRoZSBsYXllcidzIHByaW9yaXR5IG1hbnVhbGx5LCB1c2UgdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QUklPUklUWSc+PGZpbGVuYW1lPkJCRklMRV9QUklPUklUWTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgYXBwZW5kIHRoZSBsYXllcidzIHJvb3QgbmFtZToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJCRklMRV9QUklPUklUWV9teWxheWVyID0gIjEiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtODYyLDcgKzgzOSw4IEBACiAgICAgICAgICAgICA8dGl0bGU+TWFuYWdpbmcgTGF5ZXJzPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIEJpdEJha2UgbGF5ZXIgbWFuYWdlbWVudCB0b29sIHRvIHByb3ZpZGUgYSB2aWV3CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIEJpdEJha2UgbGF5ZXIgbWFuYWdlbWVudCB0b29sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gdG8gcHJvdmlkZSBhIHZpZXcKICAgICAgICAgICAgICAgICBpbnRvIHRoZSBzdHJ1Y3R1cmUgb2YgcmVjaXBlcyBhY3Jvc3MgYSBtdWx0aS1sYXllciBwcm9qZWN0LgogICAgICAgICAgICAgICAgIEJlaW5nIGFibGUgdG8gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgcmVwb3J0cyBvbiBjb25maWd1cmVkIGxheWVycwogICAgICAgICAgICAgICAgIHdpdGggdGhlaXIgcGF0aHMgYW5kIHByaW9yaXRpZXMgYW5kIG9uCkBAIC04NzEsNDIgKzg0OSw4OCBAQAogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBmb3JtIHdoZW4gcnVubmluZyB0aGUgbGF5ZXIgbWFuYWdlbWVudCB0b29sLgorICAgICAgICAgICAgICAgIEZvciBoZWxwIG9uIHRoZSBCaXRCYWtlIGxheWVyIG1hbmFnZW1lbnQgdG9vbCwgdXNlIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZyBjb21tYW5kOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlLWxheWVycyA8cmVwbGFjZWFibGU+Y29tbWFuZDwvcmVwbGFjZWFibGU+IFs8cmVwbGFjZWFibGU+YXJndW1lbnRzPC9yZXBsYWNlYWJsZT5dCisgICAgICQgYml0YmFrZS1sYXllcnMgLS1oZWxwCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIHVzYWdlOiBiaXRiYWtlLWxheWVycyBbLWRdIFstcV0gWy1GXSBbLS1jb2xvciBDT0xPUl0gWy1oXSAmbHQ7c3ViY29tbWFuZCZndDsgLi4uCisKKyAgICAgQml0QmFrZSBsYXllcnMgdXRpbGl0eQorCisgICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgICAtZCwgLS1kZWJ1ZyAgICAgICAgICAgRW5hYmxlIGRlYnVnIG91dHB1dAorICAgICAgIC1xLCAtLXF1aWV0ICAgICAgICAgICBQcmludCBvbmx5IGVycm9ycworICAgICAgIC1GLCAtLWZvcmNlICAgICAgICAgICBGb3JjZSBhZGQgd2l0aG91dCByZWNpcGUgcGFyc2UgdmVyaWZpY2F0aW9uCisgICAgICAgLS1jb2xvciBDT0xPUiAgICAgICAgIENvbG9yaXplIG91dHB1dCAod2hlcmUgQ09MT1IgaXMgYXV0bywgYWx3YXlzLCBuZXZlcikKKyAgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorCisgICAgIHN1YmNvbW1hbmRzOgorICAgICAgICZsdDtzdWJjb21tYW5kJmd0OworICAgICAgICAgc2hvdy1sYXllcnMgICAgICAgICBzaG93IGN1cnJlbnQgY29uZmlndXJlZCBsYXllcnMuCisgICAgICAgICBzaG93LW92ZXJsYXllZCAgICAgIGxpc3Qgb3ZlcmxheWVkIHJlY2lwZXMgKHdoZXJlIHRoZSBzYW1lIHJlY2lwZSBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYW5vdGhlciBsYXllcikKKyAgICAgICAgIHNob3ctcmVjaXBlcyAgICAgICAgbGlzdCBhdmFpbGFibGUgcmVjaXBlcywgc2hvd2luZyB0aGUgbGF5ZXIgdGhleSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkKKyAgICAgICAgIHNob3ctYXBwZW5kcyAgICAgICAgbGlzdCBiYmFwcGVuZCBmaWxlcyBhbmQgcmVjaXBlIGZpbGVzIHRoZXkgYXBwbHkgdG8KKyAgICAgICAgIHNob3ctY3Jvc3MtZGVwZW5kcyAgU2hvdyBkZXBlbmRlbmNpZXMgYmV0d2VlbiByZWNpcGVzIHRoYXQgY3Jvc3MgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcmllcy4KKyAgICAgICAgIGFkZC1sYXllciAgICAgICAgICAgQWRkIG9uZSBvciBtb3JlIGxheWVycyB0byBiYmxheWVycy5jb25mLgorICAgICAgICAgcmVtb3ZlLWxheWVyICAgICAgICBSZW1vdmUgb25lIG9yIG1vcmUgbGF5ZXJzIGZyb20gYmJsYXllcnMuY29uZi4KKyAgICAgICAgIGZsYXR0ZW4gICAgICAgICAgICAgZmxhdHRlbiBsYXllciBjb25maWd1cmF0aW9uIGludG8gYSBzZXBhcmF0ZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgbGF5ZXJpbmRleC1mZXRjaCAgICBGZXRjaGVzIGEgbGF5ZXIgZnJvbSBhIGxheWVyIGluZGV4IGFsb25nIHdpdGggaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVudCBsYXllcnMsIGFuZCBhZGRzIHRoZW0gdG8gY29uZi9iYmxheWVycy5jb25mLgorICAgICAgICAgbGF5ZXJpbmRleC1zaG93LWRlcGVuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmluZCBsYXllciBkZXBlbmRlbmNpZXMgZnJvbSBsYXllciBpbmRleC4KKyAgICAgICAgIGNyZWF0ZS1sYXllciAgICAgICAgQ3JlYXRlIGEgYmFzaWMgbGF5ZXIKKworICAgICBVc2UgYml0YmFrZS1sYXllcnMgJmx0O3N1YmNvbW1hbmQmZ3Q7IC0taGVscCB0byBnZXQgaGVscCBvbiBhIHNwZWNpZmljIGNvbW1hbmQKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgdGhlIGF2YWlsYWJsZSBjb21tYW5kczoKICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxlbXBoYXNpcz5oZWxwOjwvZW1waGFzaXM+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5oZWxwOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlzIGdlbmVyYWwgaGVscCBvciBoZWxwIG9uIGEgc3BlY2lmaWVkIGNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48ZW1waGFzaXM+c2hvdy1sYXllcnM6PC9lbXBoYXNpcz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnNob3ctbGF5ZXJzOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFNob3dzIHRoZSBjdXJyZW50IGNvbmZpZ3VyZWQgbGF5ZXJzLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGVtcGhhc2lzPnNob3ctcmVjaXBlczo8L2VtcGhhc2lzPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyBhdmFpbGFibGUgcmVjaXBlcyBhbmQgdGhlIGxheWVycyB0aGF0IHByb3ZpZGUgdGhlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxlbXBoYXNpcz5zaG93LW92ZXJsYXllZDo8L2VtcGhhc2lzPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+c2hvdy1vdmVybGF5ZWQ6PC9maWxlbmFtZT48L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgb3ZlcmxheWVkIHJlY2lwZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICBBIHJlY2lwZSBpcyBvdmVybGF5ZWQgd2hlbiBhIHJlY2lwZSB3aXRoIHRoZSBzYW1lIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBpbiBhbm90aGVyIGxheWVyIHRoYXQgaGFzIGEgaGlnaGVyIGxheWVyCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxlbXBoYXNpcz5zaG93LWFwcGVuZHM6PC9lbXBoYXNpcz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnNob3ctcmVjaXBlczo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyBhdmFpbGFibGUgcmVjaXBlcyBhbmQgdGhlIGxheWVycyB0aGF0IHByb3ZpZGUgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnNob3ctYXBwZW5kczo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZXMgYW5kIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGZpbGVzIHRvIHdoaWNoIHRoZXkgYXBwbHkuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48ZW1waGFzaXM+c2hvdy1jcm9zcy1kZXBlbmRzOjwvZW1waGFzaXM+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5zaG93LWNyb3NzLWRlcGVuZHM6PC9maWxlbmFtZT48L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzIGJldHdlZW4gcmVjaXBlcyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcyBsYXllciBib3VuZGFyaWVzLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGVtcGhhc2lzPmFkZC1sYXllcjo8L2VtcGhhc2lzPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YWRkLWxheWVyOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHMgYSBsYXllciB0byA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGVtcGhhc2lzPnJlbW92ZS1sYXllcjo8L2VtcGhhc2lzPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cmVtb3ZlLWxheWVyOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZXMgYSBsYXllciBmcm9tIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxlbXBoYXNpcz5mbGF0dGVuOjwvZW1waGFzaXM+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5mbGF0dGVuOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIEZsYXR0ZW5zIHRoZSBsYXllciBjb25maWd1cmF0aW9uIGludG8gYSBzZXBhcmF0ZSBvdXRwdXQKICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgICAgIEZsYXR0ZW5pbmcgeW91ciBsYXllciBjb25maWd1cmF0aW9uIGJ1aWxkcyBhICJmbGF0dGVuZWQiCkBAIC05MTcsMTggKzk0MSwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgWW91IG1pZ2h0IGhhdmUgdG8gcGVyZm9ybSBzb21lIG1hbnVhbCBjbGVhbnVwIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgZmxhdHRlbmVkIGxheWVyIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Ob24tcmVjaXBlIGZpbGVzIChzdWNoIGFzIHBhdGNoZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb24tcmVjaXBlIGZpbGVzIChzdWNoIGFzIHBhdGNoZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvdmVyd3JpdHRlbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZsYXR0ZW4gY29tbWFuZCBzaG93cyBhIHdhcm5pbmcgZm9yIHRoZXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QW55dGhpbmcgYmV5b25kIHRoZSBub3JtYWwgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueXRoaW5nIGJleW9uZCB0aGUgbm9ybWFsIGxheWVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwIGhhcyBiZWVuIGFkZGVkIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ubHkgdGhlIGxvd2VzdCBwcmlvcml0eSBsYXllcidzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sYXllci5jb25mPC9maWxlbmFtZT4gaXMgdXNlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk92ZXJyaWRkZW4gYW5kIGFwcGVuZGVkIGl0ZW1zIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRkZW4gYW5kIGFwcGVuZGVkIGl0ZW1zIGZyb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGVzIG5lZWQgdG8gYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5lZCB1cC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbnRlbnRzIG9mIGVhY2gKQEAgLTEwMDAsMTMgKzEwMjcsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZXMgdGhlIDxmaWxlbmFtZT55b2N0by1sYXllcjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LCB3aGljaCBpcyBkZXByZWNhdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMi40IHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT55b2N0by1sYXllcjwvZmlsZW5hbWU+IHNjcmlwdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlcyB0byBmdW5jdGlvbiBhcyBwYXJ0IG9mIHRoZSAyLjQgcmVsZWFzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCB3aWxsIGJlIHJlbW92ZWQgcG9zdCAyLjQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIGEgbGF5ZXIgd2l0aCB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtLCB5b3UgbmVlZCB0byBhZGQgdGhlIGxheWVyIHRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYWRkaW5nLWEtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+QWRkaW5nIGEgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPC9ub3RlPgpAQCAtMTA0Nyw2ICsxMDc0LDE0IEBACiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllciA8cmVwbGFjZWFibGU+eW91cl9sYXllcl9uYW1lPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIGNyZWF0ZXMgYSBsYXllciBuYW1lZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXNjb3R0cmlmPC9maWxlbmFtZT4gaW4geW91ciBob21lIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgL3Vzci9ob21lCisgICAgICQgYml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyIG1ldGEtc2NvdHRyaWYKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgQWRkIHlvdXIgbmV3IGxheWVyIHdpdGggJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciBtZXRhLXNjb3R0cmlmJworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC0xMDg5LDI2ICsxMTI0LDM2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lIG9mIHRoZSBleGFtcGxlIHJlY2lwZQogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdhZGRpbmctYS1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz4KKyAgICAgICAgICAgIDx0aXRsZT5BZGRpbmcgYSBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgT25jZSB5b3UgY3JlYXRlIHlvdXIgZ2VuZXJhbCBsYXllciwgeW91IG11c3QgYWRkIGl0IHRvIHlvdXIKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBhZGQgeW91ciBsYXllciBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICBBZGRpbmcgdGhlIGxheWVyIHRvIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIG1ha2VzIHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXdhcmUgb2YgeW91ciBsYXllciBzbyB0aGF0IGl0IGNhbgorICAgICAgICAgICAgICAgIHNlYXJjaCBpdCBmb3IgbWV0YWRhdGEuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFkZCB5b3VyIGxheWVyIGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBhZGQtbGF5ZXI8L2ZpbGVuYW1lPiBjb21tYW5kOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgPHJlcGxhY2VhYmxlPnlvdXJfbGF5ZXJfbmFtZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB3aGVyZSBhIGxheWVyIG5hbWVkCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2NvdHRyaWY8L2ZpbGVuYW1lPiBpcyBhZGRlZCBhbmQgdGhlbiB0aGUKLSAgICAgICAgICAgICAgICBsYXllcnMgYXJlIHNob3duIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBzaG93LWxheWVyczwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgYWRkcyBhIGxheWVyIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2NvdHRyaWY8L2ZpbGVuYW1lPiB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyB0aGUgY29tbWFuZCB0aGF0IGFkZHMgdGhlIGxheWVyIGlzIGFub3RoZXIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBjb21tYW5kIHRoYXQgc2hvd3MgdGhlCisgICAgICAgICAgICAgICAgbGF5ZXJzIHRoYXQgYXJlIGluIHlvdXIgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGU6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciBtZXRhLXNjb3R0cmlmCiAgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCi0gICAgIExvYWRpbmcgY2FjaGU6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCi0gICAgIExvYWRlZCAxMjc1IGVudHJpZXMgZnJvbSBkZXBlbmRlbmN5IGNhY2hlLgotICAgICBQYXJzaW5nIHJlY2lwZXM6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAotICAgICBQYXJzaW5nIG9mIDgxOSAuYmIgZmlsZXMgY29tcGxldGUgKDgxNyBjYWNoZWQsIDIgcGFyc2VkKS4gMTI3NiB0YXJnZXRzLCA0NCBza2lwcGVkLCAwIG1hc2tlZCwgMCBlcnJvcnMuCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDo0OQorICAgICBQYXJzaW5nIG9mIDE0NDEgLmJiIGZpbGVzIGNvbXBsZXRlICgwIGNhY2hlZCwgMTQ0MSBwYXJzZWQpLiAyMDU1IHRhcmdldHMsIDU2IHNraXBwZWQsIDAgbWFza2VkLCAwIGVycm9ycy4KICAgICAgJCBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycwogICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgogICAgICBsYXllciAgICAgICAgICAgICAgICAgcGF0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHkKQEAgLTExMTYsMTIgKzExNjEsMTYgQEAKICAgICAgbWV0YSAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvbWV0YSAgICAgICAgICAgICAgICAgIDUKICAgICAgbWV0YS1wb2t5ICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvbWV0YS1wb2t5ICAgICAgICAgICAgIDUKICAgICAgbWV0YS15b2N0by1ic3AgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvbWV0YS15b2N0by1ic3AgICAgICAgIDUKLSAgICAgbWV0YS1teWxheWVyICAgICAgICAgIC9ob21lL3Njb3R0cmlmL21ldGEtbXlsYXllciAgICAgICAgICAgICAgIDYKICAgICAgd29ya3NwYWNlICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlICAgICAgIDk5CiAgICAgIG1ldGEtc2NvdHRyaWYgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL21ldGEtc2NvdHRyaWYgICA2CiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIEFkZGluZyB0aGUgbGF5ZXIgdG8gdGhpcyBmaWxlIGVuYWJsZXMgdGhlIGJ1aWxkIHN5c3RlbSB0bwogICAgICAgICAgICAgICAgIGxvY2F0ZSB0aGUgbGF5ZXIgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGEgYnVpbGQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGxvb2tzIGluCisgICAgICAgICAgICAgICAgICAgIHRoZSBsYXllcnMgZnJvbSB0aGUgdG9wIG9mIHRoZSBsaXN0IGRvd24gdG8gdGhlIGJvdHRvbQorICAgICAgICAgICAgICAgICAgICBpbiB0aGF0IG9yZGVyLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CkBAIC0xMjIyLDggKzEyNzEsOCBAQAogICAgICAgICAgICAgICAgIFRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZlYXR1cmVzIHdvcmssIHRoZSBiZXN0IHJlZmVyZW5jZSBpcwogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvY29yZS1pbWFnZS5iYmNsYXNzPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgVGhpcyBjbGFzcyBsaXN0cyBvdXQgdGhlIGF2YWlsYWJsZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIG9mIHdoaWNoIG1vc3QgbWFwIHRvIHBhY2thZ2UgZ3JvdXBzIHdoaWxlIHNvbWUsIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiBvZiB3aGljaCBtb3N0IG1hcCB0bworICAgICAgICAgICAgICAgIHBhY2thZ2UgZ3JvdXBzIHdoaWxlIHNvbWUsIHN1Y2ggYXMKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVidWctdHdlYWtzPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlYWQtb25seS1yb290ZnM8L2ZpbGVuYW1lPiwgcmVzb2x2ZSBhcyBnZW5lcmFsCiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4KQEAgLTE1MjAsOCArMTU2OSw4IEBACiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiByZWNpcGUgc3ludGF4LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWNpcGUtc3ludGF4Jz5SZWNpcGUgU3ludGF4PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlY2lwZS1zeW50YXgnPlJlY2lwZSBTeW50YXg8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTU3Miw0NyArMTYyMSw0MyBAQAogICAgICAgICAgICAgICAgICAgICBhbmQgaGF2ZSBzb3VyY2VkIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKICAgICAgICAgICAgICAgICAgICAgKGkuZS4KICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPjwvdWxpbms+KS4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgYmFzaWMgPGZpbGVuYW1lPnJlY2lwZXRvb2w8L2ZpbGVuYW1lPiBzeW50YXg6Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgUnVubmluZyA8ZmlsZW5hbWU+cmVjaXBldG9vbCAtaDwvZmlsZW5hbWU+IG9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBldG9vbCBjcmVhdGUgLWg8L2ZpbGVuYW1lPiBwcm9kdWNlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbi1nZW5lcmF0ZWQgaGVscCwgd2hpY2ggcHJlc2VudGVkIGRpZmZlcmVudGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGFuIHdoYXQgZm9sbG93cyBoZXJlLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFRvIGdldCBoZWxwIG9uIHRoZSB0b29sLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHJlY2lwZXRvb2wgLWgKLSAgICAgcmVjaXBldG9vbCBjcmVhdGUgWy1oXQotICAgICByZWNpcGV0b29sIFstZF0gWy1xXSBbLS1jb2xvciBhdXRvIHwgYWx3YXlzIHwgbmV2ZXIgXSBjcmVhdGUgLW8gPHJlcGxhY2VhYmxlPk9VVEZJTEU8L3JlcGxhY2VhYmxlPiBbLW1dIFsteCA8cmVwbGFjZWFibGU+RVhURVJOQUxTUkM8L3JlcGxhY2VhYmxlPl0gPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+CisgICAgICQgcmVjaXBldG9vbCAtaAorICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICB1c2FnZTogcmVjaXBldG9vbCBbLWRdIFstcV0gWy0tY29sb3IgQ09MT1JdIFstaF0gJmx0O3N1YmNvbW1hbmQmZ3Q7IC4uLgogCi0gICAgICAgICAgLWQgICAgICAgRW5hYmxlcyBkZWJ1ZyBvdXRwdXQuCi0gICAgICAgICAgLXEgICAgICAgT3V0cHV0cyBvbmx5IGVycm9ycyAocXVpZXQgbW9kZSkuCi0gICAgICAgICAgLS1jb2xvciAgQ29sb3JpemVzIHRoZSBvdXRwdXQgYXV0b21hdGljYWxseSwgYWx3YXlzLCBvciBuZXZlci4KLSAgICAgICAgICAtaCAgICAgICBEaXNwbGF5cyBQeXRob24gZ2VuZXJhdGVkIHN5bnRheCBmb3IgcmVjaXBldG9vbC4KLSAgICAgICAgICBjcmVhdGUgICBDYXVzZXMgcmVjaXBldG9vbCB0byBjcmVhdGUgYSBiYXNlIHJlY2lwZS4gIFRoZSBjcmVhdGUKLSAgICAgICAgICAgICAgICAgICBjb21tYW5kIGlzIGZ1cnRoZXIgZGVmaW5lZCB3aXRoIHRoZXNlIG9wdGlvbnM6CisgICAgIE9wZW5FbWJlZGRlZCByZWNpcGUgdG9vbAogCi0gICAgICAgICAgICAgICAgICAgLW8gPHJlcGxhY2VhYmxlPk9VVEZJTEU8L3JlcGxhY2VhYmxlPiAgICAgIFNwZWNpZmllcyB0aGUgZnVsbCBwYXRoIGFuZCBmaWxlbmFtZSBmb3IgdGhlIGdlbmVyYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgLW0gICAgICAgICAgICAgIENhdXNlcyB0aGUgcmVjaXBlIHRvIGJlIG1hY2hpbmUtc3BlY2lmaWMgcmF0aGVyIHRoYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIChkZWZhdWx0KS4KLSAgICAgICAgICAgICAgICAgICAteCA8cmVwbGFjZWFibGU+RVhURVJOQUxTUkM8L3JlcGxhY2VhYmxlPiAgRmV0Y2hlcyBhbmQgZXh0cmFjdHMgc291cmNlIGZpbGVzIGZyb20gPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwbGFjZXMgdGhlbSBpbiA8cmVwbGFjZWFibGU+RVhURVJOQUxTUkM8L3JlcGxhY2VhYmxlPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+IG11c3QgYmUgYSBVUkwuCi0gICAgICAgICAgICAgICAgICAgLWggICAgICAgICAgICAgIERpc3BsYXlzIFB5dGhvbi1nZW5lcmF0ZWQgc3ludGF4IGZvciBjcmVhdGUuCi0gICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+ICAgICAgICAgIFNwZWNpZmllcyB0aGUgc291cmNlIGNvZGUgb24gd2hpY2ggdG8gYmFzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLgorICAgICBvcHRpb25zOgorICAgICAgIC1kLCAtLWRlYnVnICAgICBFbmFibGUgZGVidWcgb3V0cHV0CisgICAgICAgLXEsIC0tcXVpZXQgICAgIFByaW50IG9ubHkgZXJyb3JzCisgICAgICAgLS1jb2xvciBDT0xPUiAgIENvbG9yaXplIG91dHB1dCAod2hlcmUgQ09MT1IgaXMgYXV0bywgYWx3YXlzLCBuZXZlcikKKyAgICAgICAtaCwgLS1oZWxwICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorCisgICAgIHN1YmNvbW1hbmRzOgorICAgICAgIGNyZWF0ZSAgICAgICAgICBDcmVhdGUgYSBuZXcgcmVjaXBlCisgICAgICAgbmV3YXBwZW5kICAgICAgIENyZWF0ZSBhIGJiYXBwZW5kIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCBpbiB0aGUgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgICAgIGxheWVyCisgICAgICAgc2V0dmFyICAgICAgICAgIFNldCBhIHZhcmlhYmxlIHdpdGhpbiBhIHJlY2lwZQorICAgICAgIGFwcGVuZGZpbGUgICAgICBDcmVhdGUvdXBkYXRlIGEgYmJhcHBlbmQgdG8gcmVwbGFjZSBhIHRhcmdldCBmaWxlCisgICAgICAgYXBwZW5kc3JjZmlsZXMgIENyZWF0ZS91cGRhdGUgYSBiYmFwcGVuZCB0byBhZGQgb3IgcmVwbGFjZSBzb3VyY2UgZmlsZXMKKyAgICAgICBhcHBlbmRzcmNmaWxlICAgQ3JlYXRlL3VwZGF0ZSBhIGJiYXBwZW5kIHRvIGFkZCBvciByZXBsYWNlIGEgc291cmNlIGZpbGUKKyAgICAgVXNlIHJlY2lwZXRvb2wgJmx0O3N1YmNvbW1hbmQmZ3Q7IC0taGVscCB0byBnZXQgaGVscCBvbiBhIHNwZWNpZmljIGNvbW1hbmQKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIDxmaWxlbmFtZT5yZWNpcGV0b29sIGNyZWF0ZSAtbzwvZmlsZW5hbWU+Jm5ic3A7PHJlcGxhY2VhYmxlPk9VVEZJTEU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICBSdW5uaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGV0b29sIGNyZWF0ZSAtbzwvZmlsZW5hbWU+Jm5ic3A7PHJlcGxhY2VhYmxlPk9VVEZJTEU8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIHRoZSBiYXNlIHJlY2lwZSBhbmQgbG9jYXRlcyBpdCBwcm9wZXJseSBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgdGhhdCBjb250YWlucyB5b3VyIHNvdXJjZSBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIHN5bnRheCBleGFtcGxlczoKICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgc3ludGF4IHRvIGdlbmVyYXRlIGEgcmVjaXBlIGJhc2VkIG9uIDxyZXBsYWNlYWJsZT5zb3VyY2U8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgc3ludGF4IHRvIGdlbmVyYXRlIGEgcmVjaXBlIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zb3VyY2U8L3JlcGxhY2VhYmxlPi4KICAgICAgICAgICAgICAgICAgICAgT25jZSBnZW5lcmF0ZWQsIHRoZSByZWNpcGUgcmVzaWRlcyBpbiB0aGUgZXhpc3Rpbmcgc291cmNlCiAgICAgICAgICAgICAgICAgICAgIGNvZGUgbGF5ZXI6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTE2MjUsNyArMTY3MCw4IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgcmVjaXBldG9vbCBjcmVhdGUgLW8gPHJlcGxhY2VhYmxlPk9VVEZJTEU8L3JlcGxhY2VhYmxlPiAteCA8cmVwbGFjZWFibGU+RVhURVJOQUxTUkM8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+c291cmNlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyBzeW50YXggdG8gZ2VuZXJhdGUgYSByZWNpcGUgYmFzZWQgb24gPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyBzeW50YXggdG8gZ2VuZXJhdGUgYSByZWNpcGUgYmFzZWQgb24KKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+LgogICAgICAgICAgICAgICAgICAgICBUaGUgb3B0aW9ucyBkaXJlY3QgPGZpbGVuYW1lPnJlY2lwZXRvb2w8L2ZpbGVuYW1lPiB0bwogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIE9uY2UgZ2VuZXJhdGVkLCB0aGUgcmVjaXBlIHJlc2lkZXMgaW4gdGhlIGV4aXN0aW5nIHNvdXJjZQpAQCAtMTY0Niw3ICsxNjkyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgYW5kIE9wZW5FbWJlZGRlZCBjb21tdW5pdGllcyBtYWludGFpbiBtYW55CiAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgdGhhdCBtaWdodCBiZSBjYW5kaWRhdGVzIGZvciB3aGF0IHlvdSBhcmUgZG9pbmcuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhIGdvb2QgY2VudHJhbCBpbmRleCBvZiB0aGVzZSByZWNpcGVzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcnPk9wZW5FbWJlZGRlZCBtZXRhZGF0YSBpbmRleDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcnPk9wZW5FbWJlZGRlZCBMYXllciBJbmRleDwvdWxpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTgxMSw4ICsxODU3LDggQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgaW4KLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWRldmVsb3BtZW50LWVudmlyb25tZW50Jz5UaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdWxpbms+IgotICAgICAgICAgICAgICAgIGNoYXB0ZXIgb2YgdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNvdmVydmlldy1kZXZlbG9wbWVudC1lbnZpcm9ubWVudCc+VGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBjaGFwdGVyIG9mIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIApAQCAtMTgyOCw4ICsxODc0LDggQEAKICAgICAgICAgICAgICAgICBZb3VyIHJlY2lwZSBtdXN0IGhhdmUgYSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHZhcmlhYmxlCiAgICAgICAgICAgICAgICAgdGhhdCBwb2ludHMgdG8gd2hlcmUgdGhlIHNvdXJjZSBpcyBsb2NhdGVkLgogICAgICAgICAgICAgICAgIEZvciBhIGdyYXBoaWNhbCByZXByZXNlbnRhdGlvbiBvZiBzb3VyY2UgbG9jYXRpb25zLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZXMtZGV2LWVudmlyb25tZW50Jz5Tb3VyY2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZXMtZGV2LWVudmlyb25tZW50Jz5Tb3VyY2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTIxNDEsOCArMjE4Nyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluaW5nIHRoZSBjdXJyZW50IGNoZWNrc3VtLgogICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgZXhwbGFuYXRpb24gYW5kIGV4YW1wbGVzIG9mIGhvdyB0byBzZXQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+IHZhcmlhYmxlLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdXNpbmdwb2t5LWNvbmZpZ3VyaW5nLUxJQ19GSUxFU19DSEtTVU0nPlRyYWNraW5nIExpY2Vuc2UgQ2hhbmdlczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rPSd1c2luZ3Bva3ktY29uZmlndXJpbmctTElDX0ZJTEVTX0NIS1NVTSc+VHJhY2tpbmcgTGljZW5zZSBDaGFuZ2VzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorCiAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UbyBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgY2hlY2tzdW0gc3RyaW5nLCB5b3UKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBsaXN0IHRoZSBhcHByb3ByaWF0ZSBmaWxlcyBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT4gdmFyaWFibGUgd2l0aApAQCAtMjI4OCw4ICsyMzM1LDkgQEAKICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGFkZCBhIHJ1bnRpbWUgZGVwZW5kZW5jeSB0byAibXlwYWNrYWdlIiBvbgogICAgICAgICAgICAgICAgICJleGFtcGxlIikuCiAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNhdXRvbWF0aWNhbGx5LWFkZGVkLXJ1bnRpbWUtZGVwZW5kZW5jaWVzJz5BdXRvbWF0aWNhbGx5IEFkZGVkIFJ1bnRpbWUgRGVwZW5kZW5jaWVzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgZnVydGhlciBkZXRhaWxzLgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2F1dG9tYXRpY2FsbHktYWRkZWQtcnVudGltZS1kZXBlbmRlbmNpZXMnPkF1dG9tYXRpY2FsbHkgQWRkZWQgUnVudGltZSBEZXBlbmRlbmNpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgZnVydGhlciBkZXRhaWxzLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKQEAgLTI5NzcsNiArMzAyNSwxMzMgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCisgICAgICAgIDxzZWN0aW9uIGlkPSdtZXRhZGF0YS12aXJ0dWFsLXByb3ZpZGVycyc+CisgICAgICAgICAgICA8dGl0bGU+VXNpbmcgVmlydHVhbCBQcm92aWRlcnM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBQcmlvciB0byBhIGJ1aWxkLCBpZiB5b3Uga25vdyB0aGF0IHNldmVyYWwgZGlmZmVyZW50IHJlY2lwZXMKKyAgICAgICAgICAgICAgICBwcm92aWRlIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHksIHlvdSBjYW4gdXNlIGEgdmlydHVhbCBwcm92aWRlcgorICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT52aXJ0dWFsLyo8L2ZpbGVuYW1lPikgYXMgYSBwbGFjZWhvbGRlciBmb3IgdGhlCisgICAgICAgICAgICAgICAgYWN0dWFsIHByb3ZpZGVyLgorICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgcHJvdmlkZXIgaXMgZGV0ZXJtaW5lZCBhdCBidWlsZC10aW1lLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIGNvbW1vbiBzY2VuYXJpbyB3aGVyZSBhIHZpcnR1YWwgcHJvdmlkZXIgaXMgdXNlZCB3b3VsZCBiZQorICAgICAgICAgICAgICAgIGZvciB0aGUga2VybmVsIHJlY2lwZS4KKyAgICAgICAgICAgICAgICBTdXBwb3NlIHlvdSBoYXZlIHRocmVlIGtlcm5lbCByZWNpcGVzIHdob3NlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFsdWVzIG1hcCB0byA8ZmlsZW5hbWU+a2VybmVsLWJpZzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtbWlkPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtc21hbGw8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgZWFjaCBvZiB0aGVzZSByZWNpcGVzIGluIHNvbWUgd2F5IHVzZXMgYQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUk9WSURFUyc+PGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHN0YXRlbWVudCB0aGF0IGVzc2VudGlhbGx5IGlkZW50aWZpZXMgaXRzZWxmIGFzIGJlaW5nIGFibGUKKyAgICAgICAgICAgICAgICB0byBwcm92aWRlIDxmaWxlbmFtZT52aXJ0dWFsL2tlcm5lbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEhlcmUgaXMgb25lIHdheSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWtlcm5lbCc+PGZpbGVuYW1lPmtlcm5lbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBjbGFzczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBST1ZJREVTICs9ICIke0AgInZpcnR1YWwva2VybmVsIiBpZiAoZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSA9PSAia2VybmVsIikgZWxzZSAiIiB9IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBBbnkgcmVjaXBlIHRoYXQgaW5oZXJpdHMgdGhlIDxmaWxlbmFtZT5rZXJuZWw8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICAgICAgICAgIGlzIGdvaW5nIHRvIHV0aWxpemUgYSA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQKKyAgICAgICAgICAgICAgICB0aGF0IGlkZW50aWZpZXMgdGhhdCByZWNpcGUgYXMgYmVpbmcgYWJsZSB0byBwcm92aWRlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2tlcm5lbDwvZmlsZW5hbWU+IGl0ZW0uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE5vdyBjb21lcyB0aGUgdGltZSB0byBhY3R1YWxseSBidWlsZCBhbiBpbWFnZSBhbmQgeW91IG5lZWQgYQorICAgICAgICAgICAgICAgIGtlcm5lbCByZWNpcGUsIGJ1dCB3aGljaCBvbmU/CisgICAgICAgICAgICAgICAgWW91IGNhbiBjb25maWd1cmUgeW91ciBidWlsZCB0byBjYWxsIG91dCB0aGUga2VybmVsIHJlY2lwZQorICAgICAgICAgICAgICAgIHlvdSB3YW50IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVGRVJSRURfUFJPVklERVInPjxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYyc+PGZpbGVuYW1lPng4Ni1iYXNlLmluYzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBpbmNsdWRlIGZpbGUsIHdoaWNoIGlzIGEgbWFjaGluZQorICAgICAgICAgICAgICAgIChpLmUuIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4pCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIFRoaXMgaW5jbHVkZSBmaWxlIGlzIHRoZSByZWFzb24gYWxsIHg4Ni1iYXNlZCBtYWNoaW5lcyB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT4ga2VybmVsLgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHRoZSByZWxldmFudCBsaW5lcyBmcm9tIHRoZSBpbmNsdWRlIGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz89ICJsaW51eC15b2N0byIKKyAgICAgUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjE1JSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSBhIHZpcnR1YWwgcHJvdmlkZXIsIHlvdSBkbyBub3QgaGF2ZSB0bworICAgICAgICAgICAgICAgICJoYXJkIGNvZGUiIGEgcmVjaXBlIG5hbWUgYXMgYSBidWlsZCBkZXBlbmRlbmN5LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBzdGF0ZSB0aGUgYnVpbGQgaXMgZGVwZW5kZW50IG9uCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwva2VybmVsPC9maWxlbmFtZT4gZm9yIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBERVBFTkRTID0gInZpcnR1YWwva2VybmVsIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGJ1aWxkLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwaWNrcworICAgICAgICAgICAgICAgIHRoZSBjb3JyZWN0IHJlY2lwZSBuZWVkZWQgZm9yIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2tlcm5lbDwvZmlsZW5hbWU+IGRlcGVuZGVuY3kgYmFzZWQgb24gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgc21hbGwga2VybmVsIG1lbnRpb25lZCBhdCB0aGUgYmVnaW5uaW5nCisgICAgICAgICAgICAgICAgb2YgdGhpcyBzZWN0aW9uLCBjb25maWd1cmUgeW91ciBidWlsZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID8/PSAia2VybmVsLXNtYWxsIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQW55IHJlY2lwZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUk9WSURFUyc+PGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhIDxmaWxlbmFtZT52aXJ0dWFsLyo8L2ZpbGVuYW1lPiBpdGVtIHRoYXQgaXMgdWx0aW1hdGVseQorICAgICAgICAgICAgICAgICAgICBub3Qgc2VsZWN0ZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT4gZG9lcyBub3QgZ2V0IGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICBQcmV2ZW50aW5nIHRoZXNlIHJlY2lwZXMgZnJvbSBidWlsZGluZyBpcyB1c3VhbGx5IHRoZQorICAgICAgICAgICAgICAgICAgICBkZXNpcmVkIGJlaGF2aW9yIHNpbmNlIHRoaXMgbWVjaGFuaXNtJ3MgcHVycG9zZSBpcyB0bworICAgICAgICAgICAgICAgICAgICBzZWxlY3QgYmV0d2VlbiBtdXR1YWxseSBleGNsdXNpdmUgYWx0ZXJuYXRpdmUgcHJvdmlkZXJzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0cyBzcGVjaWZpYyBleGFtcGxlcyBvZiB2aXJ0dWFsIHByb3ZpZGVyczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9rZXJuZWw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIHRoZSBuYW1lIG9mIHRoZSBrZXJuZWwgcmVjaXBlIHRvIHVzZSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBhIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9ib290bG9hZGVyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyB0aGUgbmFtZSBvZiB0aGUgYm9vdGxvYWRlciB0byB1c2Ugd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvbWVzYTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgPGZpbGVuYW1lPmdibS5wYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2VnbDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgPGZpbGVuYW1lPmVnbC5wYzwvZmlsZW5hbWU+IGFuZCBwb3NzaWJseQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndheWxhbmQtZWdsLnBjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvbGliZ2w8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5nbC5wYzwvZmlsZW5hbWU+IChpLmUuIGxpYkdMKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9saWJnbGVzMTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgPGZpbGVuYW1lPmdsZXN2MV9jbS5wYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiBsaWJHTEVTdjFfQ00pLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2xpYmdsZXMyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyA8ZmlsZW5hbWU+Z2xlc3YyLnBjPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIGxpYkdMRVN2MikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCiAgICAgICAgIDxzZWN0aW9uIGlkPSdwcm9wZXJseS12ZXJzaW9uaW5nLXByZS1yZWxlYXNlLXJlY2lwZXMnPgogICAgICAgICAgICAgPHRpdGxlPlByb3Blcmx5IFZlcnNpb25pbmcgUHJlLVJlbGVhc2UgUmVjaXBlczwvdGl0bGU+CiAKQEAgLTMyMjQsOCArMzM5OSwxMCBAQAogICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNfRklMRVNfQ0hLU1VNJz5MSUNfRklMRVNfQ0hLU1VNPC91bGluaz48L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBpcyB1c2VkIHRvIHRyYWNrIHNvdXJjZSBsaWNlbnNlIGNoYW5nZXMgYXMgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdXNpbmdwb2t5LWNvbmZpZ3VyaW5nLUxJQ19GSUxFU19DSEtTVU0nPlRyYWNraW5nIExpY2Vuc2UgQ2hhbmdlczwvdWxpbms+IiBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHF1aWNrbHkgY3JlYXRlIEF1dG90b29sLWJhc2VkIHJlY2lwZXMgaW4gYSBtYW5uZXIgc2ltaWxhciB0byB0aGUgcHJldmlvdXMgZXhhbXBsZS4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5ncG9reS1jb25maWd1cmluZy1MSUNfRklMRVNfQ0hLU1VNJz5UcmFja2luZyBMaWNlbnNlIENoYW5nZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcXVpY2tseSBjcmVhdGUgQXV0b3Rvb2wtYmFzZWQgcmVjaXBlcyBpbiBhIG1hbm5lcgorICAgICAgICAgICAgICAgICAgICBzaW1pbGFyIHRvIHRoZSBwcmV2aW91cyBleGFtcGxlLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvc2VjdGlvbj4KIApAQCAtMzQzMCw5ICszNjA3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIGJldHdlZW4gcGFja2FnZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgYWRkZWQgYXV0b21hdGljYWxseS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2F1dG9tYXRpY2FsbHktYWRkZWQtcnVudGltZS1kZXBlbmRlbmNpZXMnPkF1dG9tYXRpY2FsbHkgQWRkZWQgUnVudGltZSBEZXBlbmRlbmNpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uY2VwdHMgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CkBAIC0zNTE3LDYgKzM2OTQsMzMwIEBACiAgICAgICAgICAgICAgICAgc3R5bGUuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ncmVjaXBlLXN5bnRheCc+CisgICAgICAgICAgICA8dGl0bGU+UmVjaXBlIFN5bnRheDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFVuZGVyc3RhbmRpbmcgcmVjaXBlIGZpbGUgc3ludGF4IGlzIGltcG9ydGFudCBmb3Igd3JpdGluZworICAgICAgICAgICAgICAgIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IG92ZXJ2aWV3cyB0aGUgYmFzaWMgaXRlbXMgdGhhdCBtYWtlIHVwIGEKKyAgICAgICAgICAgICAgICBCaXRCYWtlIHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGNvbXBsZXRlIEJpdEJha2Ugc3ludGF4IGRlc2NyaXB0aW9ucywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEnPlN5bnRheCBhbmQgT3BlcmF0b3JzPC91bGluaz4iCisgICAgICAgICAgICAgICAgY2hhcHRlciBvZiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VmFyaWFibGUgQXNzaWdubWVudHMgYW5kIE1hbmlwdWxhdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlIGFzc2lnbm1lbnRzIGFsbG93IGEgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYXNzaWdubWVudCBjYW4gYmUgc3RhdGljIHRleHQgb3IgbWlnaHQgaW5jbHVkZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbnRlbnRzIG9mIG90aGVyIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBhc3NpZ25tZW50LCBhcHBlbmRpbmcgYW5kIHByZXBlbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMgYXJlIGFsc28gc3VwcG9ydGVkLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHNvbWUgb2YgdGhlIHdheXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHZhcmlhYmxlcyBpbiByZWNpcGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTID0gIiR7V09SS0RJUn0vcG9zdGZpeC0ke1BWfSIKKyAgICAgQ0ZMQUdTICs9ICItRE5PX0FTTSIKKyAgICAgU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9maXh1cC5wYXRjaCIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RnVuY3Rpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbnMgcHJvdmlkZSBhIHNlcmllcyBvZiBhY3Rpb25zIHRvIGJlIHBlcmZvcm1lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSB1c3VhbGx5IHVzZSBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIGEgdGFzayBmdW5jdGlvbiBvciB0byBjb21wbGVtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBhIGRlZmF1bHQgZnVuY3Rpb24gKGkuZS4gYXBwZW5kIG9yIHByZXBlbmQgdG8gYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIGZ1bmN0aW9uKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkIGZ1bmN0aW9ucyB1c2UgPGZpbGVuYW1lPnNoPC9maWxlbmFtZT4gc2hlbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheCwgYWx0aG91Z2ggYWNjZXNzIHRvIE9wZW5FbWJlZGRlZCB2YXJpYWJsZXMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbCBtZXRob2RzIGFyZSBhbHNvIGF2YWlsYWJsZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBmdW5jdGlvbiBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlZDwvZmlsZW5hbWU+IHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9faW5zdGFsbCAoKSB7CisgICAgICAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAorICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKyAgICAgICAgIG12ICR7RH0ke2JpbmRpcn0vc2VkICR7RH0ke2Jhc2VfYmluZGlyfS9zZWQKKyAgICAgICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCisgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gaW1wbGVtZW50IG5ldyBmdW5jdGlvbnMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGNhbGxlZCBiZXR3ZWVuIGV4aXN0aW5nIHRhc2tzIGFzIGxvbmcgYXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgZnVuY3Rpb25zIGFyZSBub3QgcmVwbGFjaW5nIG9yIGNvbXBsZW1lbnRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gaW1wbGVtZW50IGZ1bmN0aW9ucyBpbiBQeXRob24KKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2Ygc2hlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICBCb3RoIG9mIHRoZXNlIG9wdGlvbnMgYXJlIG5vdCBzZWVuIGluIHRoZSBtYWpvcml0eSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPktleXdvcmRzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHJlY2lwZXMgdXNlIG9ubHkgYSBmZXcga2V5d29yZHMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgdXNlIGtleXdvcmRzIHRvIGluY2x1ZGUgY29tbW9uCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMgKDxmaWxlbmFtZT5pbmhlcml0PC9maWxlbmFtZT4pLCBsb2FkIHBhcnRzCisgICAgICAgICAgICAgICAgICAgICAgICBvZiBhIHJlY2lwZSBmcm9tIG90aGVyIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZXF1aXJlPC9maWxlbmFtZT4pIGFuZCBleHBvcnQgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZW52aXJvbm1lbnQgKDxmaWxlbmFtZT5leHBvcnQ8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyB0aGUgdXNlIG9mIHNvbWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZXNlIGtleXdvcmRzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBleHBvcnQgUE9TVENPTkYgPSAiJHtTVEFHSU5HX0JJTkRJUn0vcG9zdGNvbmYiCisgICAgIGluaGVyaXQgYXV0b2NvbmYKKyAgICAgcmVxdWlyZSBvdGhlcmZpbGUuaW5jCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbW1lbnRzICgjKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQW55IGxpbmVzIHRoYXQgYmVnaW4gd2l0aCB0aGUgaGFzaCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+IzwvZmlsZW5hbWU+KSBhcmUgdHJlYXRlZCBhcyBjb21tZW50IGxpbmVzCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYXJlIGlnbm9yZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgVGhpcyBpcyBhIGNvbW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIG5leHQgbGlzdCBzdW1tYXJpemVzIHRoZSBtb3N0IGltcG9ydGFudCBhbmQgbW9zdCBjb21tb25seQorICAgICAgICAgICAgICAgIHVzZWQgcGFydHMgb2YgdGhlIHJlY2lwZSBzeW50YXguCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlc2UgcGFydHMgb2YgdGhlIHN5bnRheCwgeW91IGNhbgorICAgICAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEnPlN5bnRheCBhbmQgT3BlcmF0b3JzPC91bGluaz4KKyAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MaW5lIENvbnRpbnVhdGlvbiAoXCk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgYmFja3dhcmQgc2xhc2ggKDxmaWxlbmFtZT5cPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgdG8gc3BsaXQgYSBzdGF0ZW1lbnQgb3ZlciBtdWx0aXBsZSBsaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBsYWNlIHRoZSBzbGFzaCBjaGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBpcyB0byBiZSBjb250aW51ZWQgb24gdGhlIG5leHQgbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVkFSID0gIkEgcmVhbGx5IGxvbmcgXAorICAgICAgICAgICAgbGluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgaGF2ZSBhbnkgY2hhcmFjdGVycyBpbmNsdWRpbmcgc3BhY2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgdGFicyBhZnRlciB0aGUgc2xhc2ggY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2luZyBWYXJpYWJsZXMgKCR7PHJlcGxhY2VhYmxlPlZBUk5BTUU8L3JlcGxhY2VhYmxlPn0pOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT4kezxyZXBsYWNlYWJsZT5WQVJOQU1FPC9yZXBsYWNlYWJsZT59PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheCB0byBhY2Nlc3MgdGhlIGNvbnRlbnRzIG9mIGEgdmFyaWFibGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnBuZy96bGliLSR7UFZ9LnRhci5neiIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgdGhlIHZhbHVlIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBleHByZXNzZWQgaW4gdGhpcyBmb3JtIGRvZXMgbm90IGdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVkIGF1dG9tYXRpY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGV4cGFuc2lvbiBvZiB0aGVzZSBleHByZXNzaW9ucyBoYXBwZW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24tZGVtYW5kIGxhdGVyIChlLmcuIHVzdWFsbHkgd2hlbiBhIGZ1bmN0aW9uIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlcyByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIGV4ZWN1dGVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGVuc3VyZXMgdGhhdCB0aGUgdmFsdWVzIGFyZSBtb3N0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm9wcmlhdGUgZm9yIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZXkgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB1c2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIHRoZSByYXJlIG9jY2FzaW9uIHRoYXQgeW91IGRvIG5lZWQgdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiB0byBiZSBleHBhbmRlZCBpbW1lZGlhdGVseSwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPjo9PC9maWxlbmFtZT4gb3BlcmF0b3IgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT49PC9maWxlbmFtZT4gd2hlbiB5b3UgbWFrZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50LCBidXQgdGhpcyBpcyBub3QgZ2VuZXJhbGx5IG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UXVvdGUgQWxsIEFzc2lnbm1lbnRzICgiPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4iKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGRvdWJsZSBxdW90ZXMgYXJvdW5kIHZhbHVlcyBpbiBhbGwgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRzIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+IjxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWQVIxID0gIiR7T1RIRVJWQVJ9IgorICAgICBWQVIyID0gIlRoZSB2ZXJzaW9uIGlzICR7UFZ9IgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db25kaXRpb25hbCBBc3NpZ25tZW50ICg/PSk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbmFsIGFzc2lnbm1lbnQgaXMgdXNlZCB0byBhc3NpZ24gYQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgdG8gYSB2YXJpYWJsZSwgYnV0IG9ubHkgd2hlbiB0aGUgdmFyaWFibGUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRseSB1bnNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgcXVlc3Rpb24gbWFyayBmb2xsb3dlZCBieSB0aGUgZXF1YWwgc2lnbgorICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+KSB0byBtYWtlIGEgInNvZnQiIGFzc2lnbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGFzc2lnbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksICJzb2Z0IiBhc3NpZ25tZW50cyBhcmUgdXNlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3IgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFyZSBhbGxvd2VkIHRvIGNvbWUgdGhyb3VnaCBmcm9tIHRoZSBleHRlcm5hbAorICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhlcmUgaXMgYW4gZXhhbXBsZSB3aGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlZBUjE8L2ZpbGVuYW1lPiBpcyBzZXQgdG8gIk5ldyB2YWx1ZSIgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0IGlzIGN1cnJlbnRseSBlbXB0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIDxmaWxlbmFtZT5WQVIxPC9maWxlbmFtZT4gaGFzIGFscmVhZHkgYmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgc2V0LCBpdCByZW1haW5zIHVuY2hhbmdlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVkFSMSA/PSAiTmV3IHZhbHVlIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBuZXh0IGV4YW1wbGUsIDxmaWxlbmFtZT5WQVIxPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIGxlZnQgd2l0aCB0aGUgdmFsdWUgIk9yaWdpbmFsIHZhbHVlIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVkFSMSA9ICJPcmlnaW5hbCB2YWx1ZSIKKyAgICAgVkFSMSA/PSAiTmV3IHZhbHVlIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BcHBlbmRpbmcgKCs9KTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBwbHVzIGNoYXJhY3RlciBmb2xsb3dlZCBieSB0aGUgZXF1YWxzIHNpZ24KKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPikgdG8gYXBwZW5kIHZhbHVlcyB0byBleGlzdGluZworICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBhZGRzIGEgc3BhY2UgYmV0d2VlbiB0aGUgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50IG9mIHRoZSB2YXJpYWJsZSBhbmQgdGhlIG5ldyBjb250ZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJICs9ICJmaWxlOi8vZml4LW1ha2VmaWxlLnBhdGNoIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwZW5kaW5nICg9Kyk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZXF1YWxzIHNpZ24gZm9sbG93ZWQgYnkgdGhlIHBsdXMgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPj0rPC9maWxlbmFtZT4pIHRvIHByZXBlbmQgdmFsdWVzIHRvIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGFkZHMgYSBzcGFjZSBiZXR3ZWVuIHRoZSBuZXcgY29udGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgZXhpc3RpbmcgY29udGVudCBvZiB0aGUgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFZBUiA9KyAiU3RhcnRzIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BcHBlbmRpbmcgKF9hcHBlbmQpOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4gb3BlcmF0b3IgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBkb2VzIG5vdCBhZGQgYW55IGFkZGl0aW9uYWwgc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCB0aGUgb3BlcmF0b3IgaXMgYXBwbGllZCBhZnRlciBhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PSs8L2ZpbGVuYW1lPiBvcGVyYXRvcnMgaGF2ZSBiZWVuIGFwcGxpZWQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciBhbGwgPGZpbGVuYW1lPj08L2ZpbGVuYW1lPiBhc3NpZ25tZW50cyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICBvY2N1cnJlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBzcGFjZSBiZWluZworICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgc3RhcnQgdG8gZW5zdXJlIHRoZSBhcHBlbmRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgaXMgbm90IG1lcmdlZCB3aXRoIHRoZSBleGlzdGluZyB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIHRoZSA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciB3aXRoIG92ZXJyaWRlcywgd2hpY2ggcmVzdWx0cyBpbiB0aGUgYWN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgb25seSBiZWluZyBwZXJmb3JtZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IG9yCisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJX2FwcGVuZF9zaDQgPSAiIGZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlByZXBlbmRpbmcgKF9wcmVwZW5kKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPiBvcGVyYXRvciB0bworICAgICAgICAgICAgICAgICAgICAgICAgcHJlcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBkb2VzIG5vdCBhZGQgYW55IGFkZGl0aW9uYWwgc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCB0aGUgb3BlcmF0b3IgaXMgYXBwbGllZCBhZnRlciBhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PSs8L2ZpbGVuYW1lPiBvcGVyYXRvcnMgaGF2ZSBiZWVuIGFwcGxpZWQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciBhbGwgPGZpbGVuYW1lPj08L2ZpbGVuYW1lPiBhc3NpZ25tZW50cyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICBvY2N1cnJlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBzcGFjZSBiZWluZworICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgZW5kIHRvIGVuc3VyZSB0aGUgcHJlcGVuZGVkCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyBub3QgbWVyZ2VkIHdpdGggdGhlIGV4aXN0aW5nIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDRkxBR1NfcHJlcGVuZCA9ICItSSR7U30vbXlpbmNsdWRlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIHRoZSA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3Igd2l0aCBvdmVycmlkZXMsIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGFjdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgYmVpbmcgcGVyZm9ybWVkIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQ0ZMQUdTX3ByZXBlbmRfc2g0ID0gIi1JJHtTfS9teWluY2x1ZGVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3ZlcnJpZGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBvdmVycmlkZXMgdG8gc2V0IGEgdmFsdWUgY29uZGl0aW9uYWxseSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGljYWxseSBiYXNlZCBvbiBob3cgdGhlIHJlY2lwZSBpcyBiZWluZyBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0JSQU5DSCc+PGZpbGVuYW1lPktCUkFOQ0g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSdzIHZhbHVlIHRvICJzdGFuZGFyZC9iYXNlIiBmb3IgYW55IHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBmb3IgcWVtdWFybSB3aGVyZSBpdCBzaG91bGQgYmUgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiLCB5b3Ugd291bGQgZG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtCUkFOQ0ggPSAic3RhbmRhcmQvYmFzZSIKKyAgICAgS0JSQU5DSF9xZW11YXJtICA9ICJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRlcyBhcmUgYWxzbyB1c2VkIHRvIHNlcGFyYXRlIGFsdGVybmF0ZSB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIGEgdmFyaWFibGUgaW4gb3RoZXIgc2l0dWF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIHNldHRpbmcgdmFyaWFibGVzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFUyc+PGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIHNwZWNpZmljIHRvIGluZGl2aWR1YWwgcGFja2FnZXMgcHJvZHVjZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVjaXBlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2UgYW4gb3ZlcnJpZGUgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbmRlbnRhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHNwYWNlcyBmb3IgaW5kZW50YXRpb24gcmF0aGVyIHRoYW4gdGhhbiB0YWJzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHNoZWxsIGZ1bmN0aW9ucywgYm90aCBjdXJyZW50bHkgd29yay4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIGEgcG9saWN5IGRlY2lzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICB0byB1c2UgdGFicyBpbiBzaGVsbCBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgc29tZSBsYXllcnMgaGF2ZSBhIHBvbGljeSB0byB1c2Ugc3BhY2VzCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWxsIGluZGVudGF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2luZyBQeXRob24gZm9yIENvbXBsZXggT3BlcmF0aW9uczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgYWR2YW5jZWQgcHJvY2Vzc2luZywgaXQgaXMgcG9zc2libGUgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gY29kZSBkdXJpbmcgdmFyaWFibGUgYXNzaWdubWVudHMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaCBhbmQgcmVwbGFjZW1lbnQgb24gYSB2YXJpYWJsZSkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgaW5kaWNhdGUgUHl0aG9uIGNvZGUgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtAPHJlcGxhY2VhYmxlPnB5dGhvbl9jb2RlPC9yZXBsYWNlYWJsZT59PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheCBmb3IgdGhlIHZhcmlhYmxlIGFzc2lnbm1lbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgPSAiZnRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvemlwJHtAZC5nZXRWYXIoJ1BWJywxKS5yZXBsYWNlKCcuJywgJycpfS50Z3oKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2hlbGwgRnVuY3Rpb24gU3ludGF4OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBzaGVsbCBmdW5jdGlvbnMgYXMgaWYgeW91IHdlcmUgd3JpdGluZyBhIHNoZWxsCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQgd2hlbiB5b3UgZGVzY3JpYmUgYSBsaXN0IG9mIGFjdGlvbnMgdG8gdGFrZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgZW5zdXJlIHRoYXQgeW91ciBzY3JpcHQgd29ya3Mgd2l0aCBhIGdlbmVyaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaDwvZmlsZW5hbWU+IGFuZCB0aGF0IGl0IGRvZXMgbm90IHJlcXVpcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFueSA8ZmlsZW5hbWU+YmFzaDwvZmlsZW5hbWU+IG9yIG90aGVyIHNoZWxsLXNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNhbWUgY29uc2lkZXJhdGlvbnMgYXBwbHkgdG8gdmFyaW91cyBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxpdGllcyAoZS5nLiA8ZmlsZW5hbWU+c2VkPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3JlcDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YXdrPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGgpIHRoYXQgeW91IG1pZ2h0IHdpc2ggdG8gdXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgaW4gZG91YnQsIHlvdSBzaG91bGQgY2hlY2sgd2l0aCBtdWx0aXBsZQorICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIC0gaW5jbHVkaW5nIHRob3NlIGZyb20gQnVzeUJveC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9InBsYXRkZXYtbmV3bWFjaGluZSI+CkBAIC0zNTM4LDggKzQwMzksOSBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEZvciBhIGNvbXBsZXRlIGV4YW1wbGUgdGhhdCBzaG93cyBob3cgdG8gYWRkIGEgbmV3IG1hY2hpbmUsCiAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWJzcCBTY3JpcHQ8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKKyAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHNlY3Rpb24gaWQ9InBsYXRkZXYtbmV3bWFjaGluZS1jb25mZmlsZSI+CkBAIC0zNjk0LDYgKzQxOTYsNTYyIEBACiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKKyAgICA8c2VjdGlvbiBpZD0nZ3MtdXBncmFkaW5nLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+VXBncmFkaW5nIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT3ZlciB0aW1lLCB1cHN0cmVhbSBkZXZlbG9wZXJzIHB1Ymxpc2ggbmV3IHZlcnNpb25zIGZvciBzb2Z0d2FyZQorICAgICAgICAgICAgYnVpbHQgYnkgbGF5ZXIgcmVjaXBlcy4KKyAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRvIGtlZXAgcmVjaXBlcyB1cC10by1kYXRlIHdpdGggdXBzdHJlYW0KKyAgICAgICAgICAgIHZlcnNpb24gcmVsZWFzZXMuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgQXV0b21hdGVkIFVwZ3JhZGUgSGVscGVyIChBVUgpIHRvIHNldCB1cAorICAgICAgICAgICAgYXV0b21hdGljIHZlcnNpb24gdXBncmFkZXMuCisgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHRvIHNldCB1cCBzZW1pLWF1dG9tYXRpYyB2ZXJzaW9uIHVwZ3JhZGVzLgorICAgICAgICAgICAgRmluYWxseSwgeW91IGNhbiBldmVuIG1hbnVhbGx5IHVwZ3JhZGUgYSByZWNpcGUgYnkgZWRpdGluZyB0aGUKKyAgICAgICAgICAgIHJlY2lwZSBpdHNlbGYuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ3MtdXNpbmctdGhlLWF1dG8tdXBncmFkZS1oZWxwZXInPgorICAgICAgICAgICAgPHRpdGxlPlVzaW5nIHRoZSBBdXRvIFVwZ3JhZGUgSGVscGVyIChBVUgpPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIEFVSCB1dGlsaXR5IHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCisgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpbiBvcmRlciB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlCisgICAgICAgICAgICAgICAgdXBncmFkZXMgZm9yIHJlY2lwZXMgYmFzZWQgb24gbmV3IHZlcnNpb25zIGJlaW5nCisgICAgICAgICAgICAgICAgcHVibGlzaGVkIHVwc3RyZWFtLgorICAgICAgICAgICAgICAgIFVzZSBBVUggd2hlbiB5b3Ugd2FudCB0byBjcmVhdGUgYSBzZXJ2aWNlIHRoYXQgcGVyZm9ybXMgdGhlCisgICAgICAgICAgICAgICAgdXBncmFkZXMgYXV0b21hdGljYWxseSBhbmQgb3B0aW9uYWxseSBzZW5kcyB5b3UgYW4gZW1haWwgd2l0aAorICAgICAgICAgICAgICAgIHRoZSByZXN1bHRzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBVUggYWxsb3dzIHlvdSB0byB1cGRhdGUgc2V2ZXJhbCByZWNpcGVzIHdpdGggYSBzaW5nbGUgdXNlLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBvcHRpb25hbGx5IHBlcmZvcm0gYnVpbGQgYW5kIGludGVncmF0aW9uIHRlc3RzCisgICAgICAgICAgICAgICAgdXNpbmcgaW1hZ2VzIHdpdGggdGhlIHJlc3VsdHMgc2F2ZWQgdG8geW91ciBoYXJkIGRyaXZlIGFuZAorICAgICAgICAgICAgICAgIGVtYWlscyBvZiByZXN1bHRzIG9wdGlvbmFsbHkgc2VudCB0byByZWNpcGUgbWFpbnRhaW5lcnMuCisgICAgICAgICAgICAgICAgRmluYWxseSwgQVVIIGNyZWF0ZXMgR2l0IGNvbW1pdHMgd2l0aCBhcHByb3ByaWF0ZSBjb21taXQKKyAgICAgICAgICAgICAgICBtZXNzYWdlcyBpbiB0aGUgbGF5ZXIncyB0cmVlIGZvciB0aGUgY2hhbmdlcyBtYWRlIHRvIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbnMgZG8gZXhpc3Qgd2hlbiB5b3Ugc2hvdWxkIG5vdCB1c2UgQVVIIHRvIHVwZ3JhZGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBhbmQgeW91IHNob3VsZCBpbnN0ZWFkIHVzZSBlaXRoZXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IG9yIHVwZ3JhZGUgeW91cgorICAgICAgICAgICAgICAgICAgICByZWNpcGVzIG1hbnVhbGx5OgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gQVVIIGNhbm5vdCBjb21wbGV0ZSB0aGUgdXBncmFkZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNpdHVhdGlvbiB1c3VhbGx5IHJlc3VsdHMgYmVjYXVzZSBjdXN0b20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzIGNhcnJpZWQgYnkgdGhlIHJlY2lwZSBjYW5ub3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHJlYmFzZWQgdG8gdGhlIG5ldyB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHlvdSB0byBtYW51YWxseSByZXNvbHZlIGNvbmZsaWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIGZvciBhbnkgcmVhc29uIHlvdSB3YW50IGZ1bGxlciBjb250cm9sIG92ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXBncmFkZSBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIHlvdSB3YW50IHNwZWNpYWwgYXJyYW5nZW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRlc3RpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGVwcyBkZXNjcmliZSBob3cgdG8gc2V0IHVwIHRoZSBBVUggdXRpbGl0eToKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CZSBTdXJlIHRoZSBEZXZlbG9wbWVudCBIb3N0IGlzIFNldCBVcDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgc3VyZSB0aGF0IHlvdXIgZGV2ZWxvcG1lbnQgaG9zdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHVwIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIHlvdXIgaG9zdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3NldHRpbmctdXAtdGhlLWRldmVsb3BtZW50LWhvc3QtdG8tdXNlLXRoZS15b2N0by1wcm9qZWN0Jz5QcmVwYXJpbmcgdGhlIEJ1aWxkIEhvc3Q8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBTdXJlIEdpdCBpcyBDb25maWd1cmVkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgQVVIIHV0aWxpdHkgcmVxdWlyZXMgR2l0IHRvIGJlIGNvbmZpZ3VyZWQgYmVjYXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgQVVIIHVzZXMgR2l0IHRvIHNhdmUgdXBncmFkZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCB5b3UgbXVzdCBoYXZlIEdpdCB1c2VyIGFuZCBlbWFpbCBjb25maWd1cmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIHNob3dzIHlvdXIgY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNvbmZpZyAtLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSB0aGUgdXNlciBhbmQgZW1haWwgY29uZmlndXJlZCwgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gZG8gc286CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgPHJlcGxhY2VhYmxlPnNvbWVfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICQgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsIDxyZXBsYWNlYWJsZT51c2VybmFtZTwvcmVwbGFjZWFibGU+QDxyZXBsYWNlYWJsZT5kb21haW48L3JlcGxhY2VhYmxlPi5jb20KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgdGhlIEFVSCBSZXBvc2l0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyB1c2UgQVVILCB5b3UgbXVzdCBjbG9uZSB0aGUgcmVwb3NpdG9yeSBvbnRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGhvc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgdXNlcyBHaXQgdG8gY3JlYXRlIGEgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkgb2YgdGhlIHJlcG9zaXRvcnkgb24geW91ciBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2F1dG8tdXBncmFkZS1oZWxwZXIKKyAgICAgQ2xvbmluZyBpbnRvICdhdXRvLXVwZ3JhZGUtaGVscGVyJy4uLgorICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDc2OCwgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICgzMDAvMzAwKSwgZG9uZS4KKyAgICAgcmVtb3RlOiBUb3RhbCA3NjggKGRlbHRhIDQ5OSksIHJldXNlZCA3MDMgKGRlbHRhIDQzNCkKKyAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDc2OC83NjgpLCAxOTEuNDcgS2lCIHwgOTguMDAgS2lCL3MsIGRvbmUuCisgICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDQ5OS80OTkpLCBkb25lLgorICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFVSCBpcyBub3QgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I29lLWNvcmUnPk9wZW5FbWJlZGRlZC1Db3JlIChPRS1Db3JlKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcG9reSc+UG9reTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIERlZGljYXRlZCBCdWlsZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IHRvIGNyZWF0ZSBhIGZyZXNoIGJ1aWxkIGRpcmVjdG9yeSB0aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgdXNlIGV4Y2x1c2l2ZWx5IGZvciBydW5uaW5nIHRoZSBBVUggdXRpbGl0eToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kKKyAgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYgPHJlcGxhY2VhYmxlPnlvdXJfQVVIX2J1aWxkX2RpcmVjdG9yeTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBSZS11c2luZyBhbiBleGlzdGluZyBidWlsZCBkaXJlY3RvcnkgYW5kIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgaXMgbm90IHJlY29tbWVuZGVkIGFzIGV4aXN0aW5nIHNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBjYXVzZSBBVUggdG8gZmFpbCBvciBiZWhhdmUgdW5kZXNpcmFibHkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgQ29uZmlndXJhdGlvbnMgaW4gWW91ciBMb2NhbCBDb25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNldmVyYWwgc2V0dGluZ3MgbmVlZCB0byBleGlzdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB5b3UganVzdCBjcmVhdGVkIGZvciBBVUguCisgICAgICAgICAgICAgICAgICAgICAgICBNYWtlIHRoZXNlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGUgImRpc3Ryb2RhdGEiIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCA9KyAiZGlzdHJvZGF0YSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1idWlsZC1vdXRwdXQtcXVhbGl0eSc+QnVpbGQgSGlzdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBvcHRpb25hbCwgeW91IG5lZWQgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCA9KyAiYnVpbGRoaXN0b3J5IgorICAgICBCVUlMREhJU1RPUllfQ09NTUlUID0gIjEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGlzIGNvbmZpZ3VyYXRpb24gYW5kIGEgc3VjY2Vzc2Z1bAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRlLCBhIGJ1aWxkIGhpc3RvcnkgImRpZmYiIGZpbGUgYXBwZWFycyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVwZ3JhZGUtaGVscGVyL3dvcmsvcmVjaXBlL2J1aWxkaGlzdG9yeS1kaWZmLnR4dDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgZm91bmQgaW4geW91ciBidWlsZCBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZW5hYmxlIHRlc3RpbmcgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtdGVzdGltYWdlKic+PGZpbGVuYW1lPnRlc3RpbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHdoaWNoIGlzIG9wdGlvbmFsLCB5b3UgbmVlZCB0byBoYXZlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgc2V0IGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCArPSAidGVzdGltYWdlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBkaXN0cm8gZG9lcyBub3QgZW5hYmxlIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0ZXN0LCB3aGljaCBQb2t5IGRvZXMsIHlvdSBuZWVkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgcHRlc3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBTdGFydCBhIHZuY3NlcnZlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBydW5uaW5nIGluIGEgc2VydmVyIHdpdGhvdXQgYW4gWDExIHNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBzdGFydCBhIHZuY3NlcnZlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB2bmNzZXJ2ZXIgOjEKKyAgICAgJCBleHBvcnQgRElTUExBWT06MQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYW5kIEVkaXQgYW4gQVVIIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaGF2ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51cGdyYWRlLWhlbHBlci91cGdyYWRlLWhlbHBlci5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB5b3VyIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhIHNhbXBsZSBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9hdXRvLXVwZ3JhZGUtaGVscGVyL3RyZWUvJz5BVUggc291cmNlIHJlcG9zaXRvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+UmVhZCB0aHJvdWdoIHRoZSBzYW1wbGUgZmlsZSBhbmQgbWFrZQorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgYXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBlbmFibGVkIGJ1aWxkIGhpc3RvcnkgaW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBhcyBkZXNjcmliZWQgZWFybGllciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBtdXN0IGVuYWJsZSBpdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVwZ3JhZGUtaGVscGVyLmNvbmY8L2ZpbGVuYW1lPi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFsc28sIGlmIHlvdSBhcmUgdXNpbmcgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWludGFpbmVycy5pbmM8L2ZpbGVuYW1lPiBmaWxlIHN1cHBsaWVkCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIFBva3kgYW5kIGxvY2F0ZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvPC9maWxlbmFtZT4gYW5kIHlvdSBkbyBub3Qgc2V0IGEKKyAgICAgICAgICAgICAgICAgICAgICAgICJtYWludGFpbmVyc193aGl0ZWxpc3QiIG9yICJnbG9iYWxfbWFpbnRhaW5lcl9vdmVycmlkZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+dXBncmFkZS1oZWxwZXIuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLCBhbmQgeW91IHNwZWNpZnkgIi1lIGFsbCIgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBBVUggY29tbWFuZC1saW5lLCB0aGUgdXRpbGl0eSBhdXRvbWF0aWNhbGx5IHNlbmRzIG91dAorICAgICAgICAgICAgICAgICAgICAgICAgZW1haWxzIHRvIGFsbCB0aGUgZGVmYXVsdCBtYWludGFpbmVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBhdm9pZCB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBuZXh0IHNldCBvZiBleGFtcGxlcyBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgQVVIOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcGdyYWRpbmcgYSBTcGVjaWZpYyBSZWNpcGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHVwZ3JhZGUgYSBzcGVjaWZpYyByZWNpcGUsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHVwZ3JhZGUtaGVscGVyLnB5IDxyZXBsYWNlYWJsZT5yZWNpcGVfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBjb21tYW5kIHVwZ3JhZGVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnhtb2RtYXA8L2ZpbGVuYW1lPiByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgdXBncmFkZS1oZWxwZXIucHkgeG1vZG1hcAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcGdyYWRpbmcgYSBTcGVjaWZpYyBSZWNpcGUgdG8gYSBQYXJ0aWN1bGFyIFZlcnNpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHVwZ3JhZGUgYSBzcGVjaWZpYyByZWNpcGUgdG8gYSBwYXJ0aWN1bGFyIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHVwZ3JhZGUtaGVscGVyLnB5IDxyZXBsYWNlYWJsZT5yZWNpcGVfbmFtZTwvcmVwbGFjZWFibGU+IC10IDxyZXBsYWNlYWJsZT52ZXJzaW9uPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGlzIGNvbW1hbmQgdXBncmFkZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eG1vZG1hcDwvZmlsZW5hbWU+IHJlY2lwZSB0byB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAxLjIuMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB1cGdyYWRlLWhlbHBlci5weSB4bW9kbWFwIC10IDEuMi4zCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVwZ3JhZGluZyBhbGwgUmVjaXBlcyB0byB0aGUgTGF0ZXN0IFZlcnNpb25zIGFuZCBTdXBwcmVzc2luZyBFbWFpbCBOb3RpZmljYXRpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyB1cGdyYWRlIGFsbCByZWNpcGVzIHRvIHRoZWlyIG1vc3QgcmVjZW50IHZlcnNpb25zCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3VwcHJlc3MgdGhlIGVtYWlsIG5vdGlmaWNhdGlvbnMsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHVwZ3JhZGUtaGVscGVyLnB5IGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcGdyYWRpbmcgYWxsIFJlY2lwZXMgdG8gdGhlIExhdGVzdCBWZXJzaW9ucyBhbmQgU2VuZCBFbWFpbCBOb3RpZmljYXRpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyB1cGdyYWRlIGFsbCByZWNpcGVzIHRvIHRoZWlyIG1vc3QgcmVjZW50IHZlcnNpb25zCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VuZCBlbWFpbCBtZXNzYWdlcyB0byBtYWludGFpbmVycyBmb3IgZWFjaAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdGVkIHJlY2lwZSBhcyB3ZWxsIGFzIGEgc3RhdHVzIGVtYWlsLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB1cGdyYWRlLWhlbHBlci5weSAtZSBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHJ1biB0aGUgQVVIIHV0aWxpdHksIHlvdSBjYW4gZmluZCB0aGUgcmVzdWx0cworICAgICAgICAgICAgICAgIGluIHRoZSBBVUggYnVpbGQgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJHtCVUlMRERJUn0vdXBncmFkZS1oZWxwZXIvPHJlcGxhY2VhYmxlPnRpbWVzdGFtcDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBBVUggdXRpbGl0eSBhbHNvIGNyZWF0ZXMgcmVjaXBlIHVwZGF0ZSBjb21taXRzIGZyb20KKyAgICAgICAgICAgICAgICBzdWNjZXNzZnVsIHVwZ3JhZGUgYXR0ZW1wdHMgaW4gdGhlIGxheWVyIHRyZWUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZWFzaWx5IHNldCB1cCB0byBydW4gdGhlIEFVSCB1dGlsaXR5IG9uIGEgcmVndWxhcgorICAgICAgICAgICAgICAgIGJhc2lzIGJ5IHVzaW5nIGEgY3JvbiBqb2IuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2F1dG8tdXBncmFkZS1oZWxwZXIvdHJlZS93ZWVrbHlqb2Iuc2gnPjxmaWxlbmFtZT53ZWVrbHlqb2Iuc2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZmlsZSBkaXN0cmlidXRlZCB3aXRoIHRoZSB1dGlsaXR5IGZvciBhbiBleGFtcGxlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLXVzaW5nLWRldnRvb2wtdXBncmFkZSc+CisgICAgICAgICAgICA8dGl0bGU+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIGFuIGFsdGVybmF0aXZlIG1ldGhvZCBmb3IgdXBncmFkaW5nCisgICAgICAgICAgICAgICAgcmVjaXBlcyB0byBuZXdlciB2ZXJzaW9ucyBpcyB0byB1c2UKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtZGV2dG9vbC1yZWZlcmVuY2UnPjxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBhYm91dCA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gaW4KKyAgICAgICAgICAgICAgICBnZW5lcmFsIGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZGV2dG9vbC11c2UtZGV2dG9vbC11cGdyYWRlLXRvLWNyZWF0ZS1hLXZlcnNpb24tb2YtdGhlLXJlY2lwZS10aGF0LXN1cHBvcnRzLWEtbmV3ZXItdmVyc2lvbi1vZi10aGUtc29mdHdhcmUnPlVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gdG8gQ3JlYXRlIGEgVmVyc2lvbiBvZiB0aGUgUmVjaXBlIHRoYXQgU3VwcG9ydHMgYSBOZXdlciBWZXJzaW9uIG9mIHRoZSBTb2Z0d2FyZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBNYW51YWwuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHNlZSBhbGwgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIGF2YWlsYWJsZSB3aXRoCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+LCB1c2UgdGhlIGZvbGxvd2luZyBoZWxwCisgICAgICAgICAgICAgICAgY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCB1cGdyYWRlIC1oCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBmaW5kIG91dCB3aGF0IHZlcnNpb24gYSByZWNpcGUgaXMgY3VycmVudGx5IGF0CisgICAgICAgICAgICAgICAgdXBzdHJlYW0gd2l0aG91dCBhbnkgYXR0ZW1wdCB0byB1cGdyYWRlIHlvdXIgbG9jYWwgdmVyc2lvbiBvZgorICAgICAgICAgICAgICAgIHRoZSByZWNpcGUsIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBsYXRlc3QtdmVyc2lvbiA8cmVwbGFjZWFibGU+cmVjaXBlX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIGRlc2NyaWJpbmcgQVVILAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiB3b3JrcyBpbiBhCisgICAgICAgICAgICAgICAgbGVzcy1hdXRvbWF0ZWQgbWFubmVyIHRoYW4gQVVILgorICAgICAgICAgICAgICAgIFNwZWNpZmljYWxseSwgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IG9ubHkKKyAgICAgICAgICAgICAgICB3b3JrcyBvbiBhIHNpbmdsZSByZWNpcGUgdGhhdCB5b3UgbmFtZSBvbiB0aGUgY29tbWFuZCBsaW5lLAorICAgICAgICAgICAgICAgIGNhbm5vdCBwZXJmb3JtIGJ1aWxkIGFuZCBpbnRlZ3JhdGlvbiB0ZXN0aW5nIHVzaW5nIGltYWdlcywKKyAgICAgICAgICAgICAgICBhbmQgZG9lcyBub3QgYXV0b21hdGljYWxseSBnZW5lcmF0ZSBjb21taXRzIGZvciBjaGFuZ2VzIGluCisgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSB0cmVlLgorICAgICAgICAgICAgICAgIERlc3BpdGUgYWxsIHRoZXNlICJsaW1pdGF0aW9ucyIsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IHVwZGF0ZXMgdGhlIHJlY2lwZSBmaWxlCisgICAgICAgICAgICAgICAgdG8gdGhlIG5ldyB1cHN0cmVhbSB2ZXJzaW9uIGFuZCBhdHRlbXB0cyB0byByZWJhc2UgY3VzdG9tCisgICAgICAgICAgICAgICAgcGF0Y2hlcyBjb250YWluZWQgYnkgdGhlIHJlY2lwZSBhcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEFVSCB1c2VzIG11Y2ggb2YgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGJlaGluZCB0aGUgc2NlbmVzIG1ha2luZyBBVUggc29tZXdoYXQgb2YgYSAid3JhcHBlciIKKyAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gZm9yIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEEgdHlwaWNhbCBzY2VuYXJpbyBpbnZvbHZlcyBoYXZpbmcgdXNlZCBHaXQgdG8gY2xvbmUgYW4KKyAgICAgICAgICAgICAgICB1cHN0cmVhbSByZXBvc2l0b3J5IHRoYXQgeW91IHVzZSBkdXJpbmcgYnVpbGQgb3BlcmF0aW9ucy4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIHlvdSBhcmUgKG9yIGhhdmUpIGJ1aWx0IHRoZSByZWNpcGUgaW4gdGhlIHBhc3QsIHRoZQorICAgICAgICAgICAgICAgIGxheWVyIGlzIGxpa2VseSBhZGRlZCB0byB5b3VyIGNvbmZpZ3VyYXRpb24gYWxyZWFkeS4KKyAgICAgICAgICAgICAgICBJZiBmb3Igc29tZSByZWFzb24sIHRoZSBsYXllciBpcyBub3QgYWRkZWQsIHlvdSBjb3VsZCBhZGQKKyAgICAgICAgICAgICAgICBpdCBlYXNpbHkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPjxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBzY3JpcHQuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IHVzZSB0aGUgPGZpbGVuYW1lPm5hbm8uYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHJlY2lwZSBmcm9tIHRoZSA8ZmlsZW5hbWU+bWV0YS1vZTwvZmlsZW5hbWU+IGxheWVyIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9wZW5lbWJlZGRlZDwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgYXNzdW1lIHRoYXQgdGhlIGxheWVyIGhhcyBiZWVuIGNsb25lZCBpbnRvCisgICAgICAgICAgICAgICAgZm9sbG93aW5nIGFyZWE6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAvaG9tZS9zY290dHJpZi9tZXRhLW9wZW5lbWJlZGRlZAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSB5b3VyCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIGFkZHMgdGhlIGxheWVyIHRvIHlvdXIgYnVpbGQgY29uZmlndXJhdGlvbiAoaS5lLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0JVSUxERElSfS9jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPik6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAvaG9tZS9zY290dHJpZi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjU1CisgICAgIFBhcnNpbmcgb2YgMTQzMSAuYmIgZmlsZXMgY29tcGxldGUgKDAgY2FjaGVkLCAxNDMxIHBhcnNlZCkuIDIwNDAgdGFyZ2V0cywgNTYgc2tpcHBlZCwgMCBtYXNrZWQsIDAgZXJyb3JzLgorICAgICBSZW1vdmluZyAxMiByZWNpcGVzIGZyb20gdGhlIHg4Nl82NCBzeXNyb290OiAxMDAlIHwjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBSZW1vdmluZyAxIHJlY2lwZXMgZnJvbSB0aGUgeDg2XzY0X2k1ODYgc3lzcm9vdDogMTAwJSB8IyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBSZW1vdmluZyA1IHJlY2lwZXMgZnJvbSB0aGUgaTU4NiBzeXNyb290OiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBSZW1vdmluZyA1IHJlY2lwZXMgZnJvbSB0aGUgcWVtdXg4NiBzeXNyb290OiAxMDAlIHwjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCBhc3N1bWUgdGhhdCB0aGUgPGZpbGVuYW1lPm5hbm8uYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHJlY2lwZSB0aGF0IGlzIHVwc3RyZWFtIGhhcyBhIDIuOS4zIHZlcnNpb24gbnVtYmVyLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSB2ZXJzaW9uIGluIHRoZSBsb2NhbCByZXBvc2l0b3J5IGlzIDIuNy40LgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIHlvdXIgYnVpbGQgZGlyZWN0b3J5IGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgICAgICB1cGdyYWRlcyB0aGUgcmVjaXBlIGZvciB5b3U6CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSA8ZmlsZW5hbWU+LVY8L2ZpbGVuYW1lPiBvcHRpb24gaXMgbm90IG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgT21pdHRpbmcgdGhlIHZlcnNpb24gbnVtYmVyIGNhdXNlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gdG8gdXBncmFkZSB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCB1cGdyYWRlIG5hbm8gLVYgMi45LjMKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgTk9URTogQ3JlYXRpbmcgd29ya3NwYWNlIGxheWVyIGluIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjQ2CisgICAgIFBhcnNpbmcgb2YgMTQzMSAuYmIgZmlsZXMgY29tcGxldGUgKDAgY2FjaGVkLCAxNDMxIHBhcnNlZCkuIDIwNDAgdGFyZ2V0cywgNTYgc2tpcHBlZCwgMCBtYXNrZWQsIDAgZXJyb3JzLgorICAgICBOT1RFOiBFeHRyYWN0aW5nIGN1cnJlbnQgdmVyc2lvbiBzb3VyY2UuLi4KKyAgICAgTk9URTogUmVzb2x2aW5nIGFueSBtaXNzaW5nIHRhc2sgcXVldWUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAuCisgICAgICAgICAgICAuCisgICAgICAgICAgICAuCisgICAgIE5PVEU6IEV4ZWN1dGluZyBTZXRTY2VuZSBUYXNrcworICAgICBOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MKKyAgICAgTk9URTogVGFza3MgU3VtbWFyeTogQXR0ZW1wdGVkIDc0IHRhc2tzIG9mIHdoaWNoIDcyIGRpZG4ndCBuZWVkIHRvIGJlIHJlcnVuIGFuZCBhbGwgc3VjY2VlZGVkLgorICAgICBBZGRpbmcgY2hhbmdlZCBmaWxlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBOT1RFOiBVcGdyYWRlZCBzb3VyY2UgZXh0cmFjdGVkIHRvIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlL3NvdXJjZXMvbmFubworICAgICBOT1RFOiBOZXcgcmVjaXBlIGlzIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlL3JlY2lwZXMvbmFuby9uYW5vXzIuOS4zLmJiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIENvbnRpbnVpbmcgd2l0aCB0aGlzIGV4YW1wbGUsIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPiB0byBidWlsZCB0aGUgbmV3bHkgdXBncmFkZWQKKyAgICAgICAgICAgICAgICByZWNpcGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYnVpbGQgbmFubworICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICBMb2FkaW5nIGNhY2hlOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MDEKKyAgICAgTG9hZGVkIDIwNDAgZW50cmllcyBmcm9tIGRlcGVuZGVuY3kgY2FjaGUuCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBQYXJzaW5nIG9mIDE0MzIgLmJiIGZpbGVzIGNvbXBsZXRlICgxNDMxIGNhY2hlZCwgMSBwYXJzZWQpLiAyMDQxIHRhcmdldHMsIDU2IHNraXBwZWQsIDAgbWFza2VkLCAwIGVycm9ycy4KKyAgICAgTk9URTogUmVzb2x2aW5nIGFueSBtaXNzaW5nIHRhc2sgcXVldWUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAuCisgICAgICAgICAgICAuCisgICAgICAgICAgICAuCisgICAgIE5PVEU6IEV4ZWN1dGluZyBTZXRTY2VuZSBUYXNrcworICAgICBOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MKKyAgICAgTk9URTogbmFubzogY29tcGlsaW5nIGZyb20gZXh0ZXJuYWwgc291cmNlIHRyZWUgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC93b3Jrc3BhY2Uvc291cmNlcy9uYW5vCisgICAgIE5PVEU6IFRhc2tzIFN1bW1hcnk6IEF0dGVtcHRlZCA1MjAgdGFza3Mgb2Ygd2hpY2ggMzA0IGRpZG4ndCBuZWVkIHRvIGJlIHJlcnVuIGFuZCBhbGwgc3VjY2VlZGVkLgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiB3b3JrZmxvdywKKyAgICAgICAgICAgICAgICBvcHBvcnR1bml0eSBleGlzdHMgdG8gZGVwbG95IGFuZCB0ZXN0IHlvdXIgcmVidWlsdCBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCBob3dldmVyLCBydW5uaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY2xlYW5zIHVwIHRoZSB3b3Jrc3BhY2UKKyAgICAgICAgICAgICAgICBvbmNlIHRoZSBzb3VyY2UgaW4geW91ciB3b3Jrc3BhY2UgaXMgY2xlYW4uCisgICAgICAgICAgICAgICAgVGhpcyB1c3VhbGx5IG1lYW5zIHVzaW5nIEdpdCB0byBzdGFnZSBhbmQgc3VibWl0IGNvbW1pdHMKKyAgICAgICAgICAgICAgICBmb3IgdGhlIGNoYW5nZXMgZ2VuZXJhdGVkIGJ5IHRoZSB1cGdyYWRlIHByb2Nlc3MuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uY2UgdGhlIHRyZWUgaXMgY2xlYW4sIHlvdSBjYW4gY2xlYW4gdGhpbmdzIHVwIGluIHRoaXMKKyAgICAgICAgICAgICAgICBleGFtcGxlIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7QlVJTERESVJ9L3dvcmtzcGFjZS9zb3VyY2VzL25hbm88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBmaW5pc2ggbmFubyBtZXRhLW9lCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIExvYWRpbmcgY2FjaGU6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBMb2FkZWQgMjA0MCBlbnRyaWVzIGZyb20gZGVwZW5kZW5jeSBjYWNoZS4KKyAgICAgUGFyc2luZyByZWNpcGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAxCisgICAgIFBhcnNpbmcgb2YgMTQzMiAuYmIgZmlsZXMgY29tcGxldGUgKDE0MzEgY2FjaGVkLCAxIHBhcnNlZCkuIDIwNDEgdGFyZ2V0cywgNTYgc2tpcHBlZCwgMCBtYXNrZWQsIDAgZXJyb3JzLgorICAgICBOT1RFOiBBZGRpbmcgbmV3IHBhdGNoIDAwMDEtbmFuby5iYi1TdHVmZi1JLWNoYW5nZWQtd2hlbi11cGdyYWRpbmctbmFuby5iYi5wYXRjaAorICAgICBOT1RFOiBVcGRhdGluZyByZWNpcGUgbmFub18yLjkuMy5iYgorICAgICBOT1RFOiBSZW1vdmluZyBmaWxlIC9ob21lL3Njb3R0cmlmL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25hbm8vbmFub18yLjcuNC5iYgorICAgICBOT1RFOiBNb3ZpbmcgcmVjaXBlIGZpbGUgdG8gL2hvbWUvc2NvdHRyaWYvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFubworICAgICBOT1RFOiBMZWF2aW5nIHNvdXJjZSB0cmVlIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlL3NvdXJjZXMvbmFubyBhcy1pczsgaWYgeW91IG5vIGxvbmdlciBuZWVkIGl0IHRoZW4gcGxlYXNlIGRlbGV0ZSBpdCBtYW51YWxseQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBVc2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZCBjbGVhbnMKKyAgICAgICAgICAgICAgICB1cCB0aGUgd29ya3NwYWNlIGFuZCBjcmVhdGVzIGEgcGF0Y2ggZmlsZSBiYXNlZCBvbiB5b3VyCisgICAgICAgICAgICAgICAgY29tbWl0cy4KKyAgICAgICAgICAgICAgICBUaGUgdG9vbCBwdXRzIGFsbCBwYXRjaCBmaWxlcyBiYWNrIGludG8gdGhlIHNvdXJjZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBpbiBhIHN1Yi1kaXJlY3RvcnkgbmFtZWQgPGZpbGVuYW1lPm5hbm88L2ZpbGVuYW1lPiBpbiB0aGlzCisgICAgICAgICAgICAgICAgY2FzZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtbWFudWFsbHktdXBncmFkaW5nLWEtcmVjaXBlJz4KKyAgICAgICAgICAgIDx0aXRsZT5NYW51YWxseSBVcGdyYWRpbmcgYSBSZWNpcGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiBmb3Igc29tZSByZWFzb24geW91IGNob29zZSBub3QgdG8gdXBncmFkZSByZWNpcGVzIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dzLXVzaW5nLXRoZS1hdXRvLXVwZ3JhZGUtaGVscGVyJz5BdXRvIFVwZ3JhZGUgSGVscGVyIChBVUgpPC9saW5rPgorICAgICAgICAgICAgICAgIG9yIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ3MtdXNpbmctZGV2dG9vbC11cGdyYWRlJz48ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIHlvdSBjYW4gbWFudWFsbHkgZWRpdCB0aGUgcmVjaXBlIGZpbGVzIHRvIHVwZ3JhZGUgdGhlIHZlcnNpb25zLgorICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5DYXV0aW9uPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgTWFudWFsbHkgdXBkYXRpbmcgbXVsdGlwbGUgcmVjaXBlcyBzY2FsZXMgcG9vcmx5IGFuZAorICAgICAgICAgICAgICAgICAgICBpbnZvbHZlcyBtYW55IHN0ZXBzLgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVjb21tZW5kYXRpb24gdG8gdXBncmFkZSByZWNpcGUgdmVyc2lvbnMgaXMgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICBBVUggb3IgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+LCBib3RoIG9mIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRlIHNvbWUgc3RlcHMgYW5kIHByb3ZpZGUgZ3VpZGFuY2UgZm9yIG90aGVycyBuZWVkZWQKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBtYW51YWwgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIG1hbnVhbGx5IHVwZ3JhZGUgcmVjaXBlIHZlcnNpb25zLCBmb2xsb3cgdGhlc2UgZ2VuZXJhbCBzdGVwczoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGFuZ2UgdGhlIFZlcnNpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbmFtZSB0aGUgcmVjaXBlIHN1Y2ggdGhhdCB0aGUgdmVyc2lvbiAoaS5lLiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgcmVjaXBlIG5hbWUpIGNoYW5nZXMgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSB2ZXJzaW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSByZWNpcGUgbmFtZSwgY2hhbmdlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdmFsdWUgYXMgaXQgaXMgc2V0IGZvciA8ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSByZWNpcGUgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcGRhdGUgPGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+IGlmIE5lZWRlZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHNvdXJjZSBjb2RlIHlvdXIgcmVjaXBlIGJ1aWxkcyBpcyBmZXRjaGVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdCBvciBzb21lIG90aGVyIHZlcnNpb24gY29udHJvbCBzeXN0ZW0sIHVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHBvaW50IHRvIHRoZSBjb21taXQgaGFzaCB0aGF0IG1hdGNoZXMgdGhlIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgdGhlIFNvZnR3YXJlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUcnkgdG8gYnVpbGQgdGhlIHJlY2lwZSB1c2luZyBCaXRCYWtlLgorICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNhbCBidWlsZCBmYWlsdXJlcyBpbmNsdWRlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGljZW5zZSBzdGF0ZW1lbnRzIHdlcmUgdXBkYXRlZCBmb3IgdGhlIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBjYXNlLCB5b3UgbmVlZCB0byByZXZpZXcgYW55IGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGxpY2Vuc2UgYW5kIHVwZGF0ZSB0aGUgdmFsdWVzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNFTlNFJz48ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNfRklMRVNfQ0hLU1VNJz48ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpY2Vuc2UgY2hhbmdlcyBhcmUgb2Z0ZW4gaW5jb25zZXF1ZW50aWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBsaWNlbnNlIHRleHQncyBjb3B5cmlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllYXIgbWlnaHQgaGF2ZSBjaGFuZ2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tIHBhdGNoZXMgY2FycmllZCBieSB0aGUgb2xkZXIgdmVyc2lvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIG1pZ2h0IGZhaWwgdG8gYXBwbHkgdG8gdGhlIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdSBuZWVkIHRvIHJldmlldyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGNoZXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeSBmb3IgdGhlIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBzb2Z0d2FyZSBpZiB0aGUgdXBncmFkZWQgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgZml4ZWQgdGhvc2UgaXNzdWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBhIHBhdGNoIGlzIG5lY2Vzc2FyeSBhbmQgZmFpbGluZywgeW91IG5lZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gcmViYXNlIGl0IGludG8gdGhlIG5ldyB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IEF0dGVtcHQgdG8gQnVpbGQgZm9yIFNldmVyYWwgQXJjaGl0ZWN0dXJlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3Ugc3VjY2Vzc2Z1bGx5IGJ1aWxkIHRoZSBuZXcgc29mdHdhcmUgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIGFyY2hpdGVjdHVyZSwgeW91IGNvdWxkIHRlc3QgdGhlIGJ1aWxkIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgYXJjaGl0ZWN0dXJlcyBieSBjaGFuZ2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZCByZWJ1aWxkaW5nIHRoZSBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgc3RlcCBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBpZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBpcyB0byBiZSByZWxlYXNlZCBwdWJsaWNseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgdGhlIFVwc3RyZWFtIENoYW5nZSBMb2cgb3IgUmVsZWFzZSBOb3Rlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tpbmcgYm90aCB0aGVzZSByZXZlYWxzIGlmIG5ldyBmZWF0dXJlcyBleGlzdCB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBicmVhayBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHNvLCB5b3UgbmVlZCB0byB0YWtlIHN0ZXBzIHRvIG1pdGlnYXRlIG9yIGVsaW1pbmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzaXR1YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgQ3JlYXRlIGEgQm9vdGFibGUgSW1hZ2UgYW5kIFRlc3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50LCB5b3UgY2FuIHRlc3QgdGhlIG5ldyBzb2Z0d2FyZSBieSBib290aW5nCisgICAgICAgICAgICAgICAgICAgICAgICBpdCBvbnRvIGFjdHVhbCBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgQ29tbWl0IHdpdGggdGhlIENoYW5nZSBpbiB0aGUgTGF5ZXIgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgYWxsIGJ1aWxkcyB3b3JrIGFuZCBhbnkgdGVzdGluZyBpcyBzdWNjZXNzZnVsLAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBjcmVhdGUgY29tbWl0cyBmb3IgYW55IGNoYW5nZXMgaW4gdGhlIGxheWVyCisgICAgICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHlvdXIgdXBncmFkZWQgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKwogICAgIDxzZWN0aW9uIGlkPSdmaW5kaW5nLXRoZS10ZW1wb3Jhcnktc291cmNlLWNvZGUnPgogICAgICAgICA8dGl0bGU+RmluZGluZyBUZW1wb3JhcnkgU291cmNlIENvZGU8L3RpdGxlPgogCkBAIC0zODg4LDggKzQ5NDYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgTW9kaWZpY2F0aW9ucyB3aWxsIGFsc28gZGlzYXBwZWFyIGlmIHlvdSB1c2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cm1fd29yazwvZmlsZW5hbWU+IGZlYXR1cmUgYXMgZGVzY3JpYmVkCiAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0LgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1zYXZpbmctbWVtb3J5LWR1cmluZy1hLWJ1aWxkJz5Db25zZXJ2aW5nIERpc2sgU3BhY2UgRHVyaW5nIEJ1aWxkczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC00MTA1LDEwMiArNTE2MywxMjI0IEBACiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0ncGxhdGRldi1idWlsZGluZy10YXJnZXRzLXdpdGgtbXVsdGlwbGUtY29uZmlndXJhdGlvbnMnPgotICAgICAgICA8dGl0bGU+QnVpbGRpbmcgVGFyZ2V0cyB3aXRoIE11bHRpcGxlIENvbmZpZ3VyYXRpb25zPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nZGV2LWJ1aWxkaW5nJz4KKyAgICAgICAgPHRpdGxlPkJ1aWxkaW5nPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJpdGJha2UgYWxzbyBoYXMgZnVuY3Rpb25hbGl0eSB0aGF0IGFsbG93cyB5b3UgdG8gYnVpbGQKLSAgICAgICAgICAgIG11bHRpcGxlIHRhcmdldHMgYXQgdGhlIHNhbWUgdGltZSwgd2hlcmUgZWFjaCB0YXJnZXQgdXNlcwotICAgICAgICAgICAgYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdmFyaW91cyBidWlsZCBwcm9jZWR1cmVzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBzdGVwcyBuZWVkZWQgZm9yIGEgc2ltcGxlIGJ1aWxkLCBhIHRhcmdldCB0aGF0CisgICAgICAgICAgICB1c2VzIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zLCBidWlsZGluZyBhbiBpbWFnZSBmb3IgbW9yZSB0aGFuCisgICAgICAgICAgICBvbmUgbWFjaGluZSwgYW5kIHNvIGZvcnRoLgogICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbiBvcmRlciB0byBhY2NvbXBsaXNoIHRoaXMsIHlvdSBzZXR1cCBlYWNoIG9mIHRoZSBjb25maWd1cmF0aW9ucwotICAgICAgICAgICAgeW91IG5lZWQgdG8gdXNlIGluIHBhcmFsbGVsIGJ5IHBsYWNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4KLSAgICAgICAgICAgIHlvdXIgY3VycmVudCBidWlsZCBkaXJlY3RvcnkgYWxvbmdzaWRlIHRoZSB1c3VhbAotICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtYnVpbGRpbmctYS1zaW1wbGUtaW1hZ2UnPgorICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIGEgU2ltcGxlIEltYWdlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50LCB5b3UgbmVlZCB0byBidWlsZCBhbiBpbWFnZQorICAgICAgICAgICAgICAgIHdoZW5ldmVyIHlvdSBjaGFuZ2UgaGFyZHdhcmUgc3VwcG9ydCwgYWRkIG9yIGNoYW5nZSBzeXN0ZW0KKyAgICAgICAgICAgICAgICBsaWJyYXJpZXMsIG9yIGFkZCBvciBjaGFuZ2Ugc2VydmljZXMgdGhhdCBoYXZlIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICBTZXZlcmFsIG1ldGhvZHMgZXhpc3QgdGhhdCBhbGxvdyB5b3UgdG8gYnVpbGQgYW4gaW1hZ2Ugd2l0aGluCisgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByZXNlbnRzIHRoZSBiYXNpYyBzdGVwcyB5b3UgbmVlZCB0byBidWlsZCBhCisgICAgICAgICAgICAgICAgc2ltcGxlIGltYWdlIHVzaW5nIEJpdEJha2UgZnJvbSBhIGJ1aWxkIGhvc3QgcnVubmluZyBMaW51eC4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYnVpbGQgYW4gaW1hZ2UgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN0b2FzdGVyLXRlcm0nPlRvYXN0ZXI8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+VG9hc3RlciBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0byBidWlsZCBpbWFnZXMsIHNlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyN1c2luZy1kZXZ0b29sLWluLXlvdXItc2RrLXdvcmtmbG93Jz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGluIFlvdXIgU0RLIFdvcmtmbG93PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtpdCAoZVNESykgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIHF1aWNrIGV4YW1wbGUgb24gaG93IHRvIGJ1aWxkIGFuIGltYWdlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CUklFRl9VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBjcmVhdGVzIGFuIGVudGlyZSBMaW51eCBkaXN0cmlidXRpb24gZnJvbQorICAgICAgICAgICAgICAgIHNvdXJjZSBhbmQgcGxhY2VzIGl0IGluIHlvdXIKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgdW5kZXIgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgRm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBidWlsZCBwcm9jZXNzIHVzaW5nIEJpdEJha2UsCisgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2ltYWdlcy1kZXYtZW52aXJvbm1lbnQnPkltYWdlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgYW5kIGxpc3Qgb3ZlcnZpZXdzIHRoZSBidWlsZCBwcm9jZXNzOgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9iaXRiYWtlLWJ1aWxkLWZsb3cucG5nIiB3aWR0aD0iN2luIiBkZXB0aD0iNGluIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgWW91ciBIb3N0IERldmVsb3BtZW50IFN5c3RlbSB0byBTdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBVc2luZyB0aGUgWW9jdG8gUHJvamVjdDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Rldi1tYW51YWwtc3RhcnQnPlNldHRpbmcgVXAgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG9wdGlvbnMgb24gaG93IHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5pdGlhbGl6ZSB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemUgdGhlIGJ1aWxkIGVudmlyb25tZW50IGJ5IHNvdXJjaW5nIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2NyaXB0IChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4pOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOyBbPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcjwvcmVwbGFjZWFibGU+XQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2hlbiB5b3UgdXNlIHRoZSBpbml0aWFsaXphdGlvbiBzY3JpcHQsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBhcyB0aGUgZGVmYXVsdCBCdWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5IGluIHlvdXIgY3VycmVudCB3b3JrIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIGEgPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCB3aXRoIHRoZSBzY3JpcHQgdG8gc3BlY2lmeSBhIGRpZmZlcmVudCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBjb21tb24gcHJhY3RpY2UgaXMgdG8gdXNlIGEgZGlmZmVyZW50IEJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5IGZvciBkaWZmZXJlbnQgdGFyZ2V0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPn4vYnVpbGQveDg2PC9maWxlbmFtZT4gZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IHRhcmdldCwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPn4vYnVpbGQvYXJtPC9maWxlbmFtZT4gZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdWFybTwvZmlsZW5hbWU+IHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBTdXJlIFlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgRmlsZSBpcyBDb3JyZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBFbnN1cmUgdGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeSwgaXMgc2V0IHVwIGhvdyB5b3Ugd2FudCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBkZWZpbmVzIG1hbnkgYXNwZWN0cyBvZiB0aGUgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyB0aGUgdGFyZ2V0IG1hY2hpbmUgYXJjaGl0ZWN0dXJlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPk1BQ0hJTkU8L3VsaW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBhY2thZ2luZyBmb3JtYXQgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC91bGluaz4pLAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGEgY2VudHJhbGl6ZWQgdGFyYmFsbCBkb3dubG9hZCBkaXJlY3RvcnkgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgSW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIHRoZSBpbWFnZSB1c2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIEJpdEJha2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IGlzIHRoZSBuYW1lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHlvdSB3YW50IHRvIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uIHRhcmdldHMgYXJlIHRoZSBpbWFnZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXM8L2ZpbGVuYW1lPiwgYW5kIHNvCisgICAgICAgICAgICAgICAgICAgICAgICBmb3J0aCBhbGwgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBPciwgdGhlIHRhcmdldCBjYW4gYmUgdGhlIG5hbWUgb2YgYSByZWNpcGUgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHBpZWNlIG9mIHNvZnR3YXJlIHN1Y2ggYXMgQnVzeUJveC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGltYWdlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gc3VwcG9ydHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFzIGFuIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBidWlsZHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgYW4gaW1hZ2UgaGFzIGJlZW4gYnVpbHQsIGl0IG9mdGVuIG5lZWRzIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW1hZ2VzIGFuZCBrZXJuZWxzIGJ1aWx0IGJ5IHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBhcmUgcGxhY2VkIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZSBjbGFzcz0iZGlyZWN0b3J5Ij50bXAvZGVwbG95L2ltYWdlczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBydW4gcHJlLWJ1aWx0IGltYWdlcyBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+cWVtdWFybTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBpbnN0YWxsIHRoZXNlIGltYWdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBwYXJ0aWN1bGFyIGJvYXJkIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdwbGF0ZGV2LWJ1aWxkaW5nLXRhcmdldHMtd2l0aC1tdWx0aXBsZS1jb25maWd1cmF0aW9ucyc+CisgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgVGFyZ2V0cyB3aXRoIE11bHRpcGxlIENvbmZpZ3VyYXRpb25zPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0YmFrZSBhbHNvIGhhcyBmdW5jdGlvbmFsaXR5IHRoYXQgYWxsb3dzIHlvdSB0byBidWlsZAorICAgICAgICAgICAgICAgIG11bHRpcGxlIHRhcmdldHMgYXQgdGhlIHNhbWUgdGltZSwgd2hlcmUgZWFjaCB0YXJnZXQgdXNlcworICAgICAgICAgICAgICAgIGEgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIGFjY29tcGxpc2ggdGhpcywgeW91IHNldHVwIGVhY2ggb2YgdGhlIGNvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gdXNlIGluIHBhcmFsbGVsIGJ5IHBsYWNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4KKyAgICAgICAgICAgICAgICB5b3VyIGN1cnJlbnQgYnVpbGQgZGlyZWN0b3J5IGFsb25nc2lkZSB0aGUgdXN1YWwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBndWlkZWxpbmVzIHRvIGNyZWF0ZSBhbiBlbnZpcm9ubWVudCB0aGF0IHN1cHBvcnRzCisgICAgICAgICAgICAgICAgbXVsdGlwbGUgY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBDb25maWd1cmF0aW9uIEZpbGVzPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBjcmVhdGUgYSBzaW5nbGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZvciB3aGljaCB5b3Ugd2FudCB0byBhZGQgc3VwcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIHdvdWxkIGNvbnRhaW4gbGluZXMgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNQUNISU5FID0gIkEiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZXMgd291bGQgY29udGFpbiBhbnkgb3RoZXIgdmFyaWFibGVzIHRoYXQgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICBiZSBzZXQgYW5kIGJ1aWx0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2hhbmdlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbm90IGNvbmZsaWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBtdXN0IGJlIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IGJ1aWxkIGRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm11bHRpY29uZmlnPC9maWxlbmFtZT4gdW5kZXIgdGhlIGJ1aWxkJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IHJlc2lkZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVhc29uIGZvciB0aGlzIHJlc3RyaWN0aW9uIGlzIGJlY2F1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgbm90IGNvbnN0cnVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICB1bnRpbCB0aGUgbGF5ZXJzIGFyZSBwYXJzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHVzaW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgYXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgcHJlLWNvbmZpZ3VyYXRpb24gZmlsZSBpcyBub3QgcG9zc2libGUgdW5sZXNzIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BZGQgdGhlIEJpdEJha2UgTXVsdGktQ29uZmlnIFZhcmlhYmxlIHRvIHlvdSBMb2NhbCBDb25maWd1cmF0aW9uIEZpbGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQk1VTFRJQ09ORklHPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgdG8gc3BlY2lmeSBlYWNoIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBsaW5lIHRlbGxzIEJpdEJha2UgaXQgc2hvdWxkIGxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL211bHRpY29uZmlnL2NvbmZpZ0EuY29uZjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbXVsdGljb25maWcvY29uZmlnQi5jb25mPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbXVsdGljb25maWcvY29uZmlnQy5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCTVVMVElDT05GSUcgPSAiY29uZmlnQSBjb25maWdCIGNvbmZpZ0MiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxhdW5jaCBCaXRCYWtlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBCaXRCYWtlIGNvbW1hbmQgZm9ybSB0byBsYXVuY2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIFttdWx0aWNvbmZpZzo8cmVwbGFjZWFibGU+bXVsdGljb25maWduYW1lPC9yZXBsYWNlYWJsZT46XTxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBbW1ttdWx0aWNvbmZpZzo8cmVwbGFjZWFibGU+bXVsdGljb25maWduYW1lPC9yZXBsYWNlYWJsZT46XTxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPl0gLi4uIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgc3VwcG9ydHMgYnVpbGRpbmcgYSBtaW5pbWFsCisgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSBmb3IgY29uZmlndXJhdGlvbiBBIGFsb25nc2lkZSBhIHN0YW5kYXJkCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4sIHdoaWNoIHRha2VzIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcm9tIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtdWx0aWNvbmZpZzpjb25maWdBOmNvcmUtaW1hZ2UtbWluaW1hbCBjb3JlLWltYWdlLXNhdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb25maWd1cmF0aW9ucyBpbiB0aGlzIGN1cnJlbnQgcmVsZWFzZSBvZgorICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0ICgmRElTVFJPX05BTUU7ICZESVNUUk87KSBoYXMgc29tZSBrbm93biBpc3N1ZXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgTm8gaW50ZXItbXVsdGktY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2hhcmVkIFN0YXRlIChzc3RhdGUpIG9wdGltaXphdGlvbnMgZG8gbm90IGV4aXN0LgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBpZiB0aGUgYnVpbGQgdXNlcyB0aGUgc2FtZSBvYmplY3QgdHdpY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGluLCBmb3IgZXhhbXBsZSwgdHdvIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLCB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgZWl0aGVyIGxvYWQgZnJvbSBhbiBleGlzdGluZyBzc3RhdGUgY2FjaGUgYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCBvciBidWlsZCB0aGUgb2JqZWN0IHR3aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlJz4KKyAgICAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW4gaW5pdGlhbCBSQU0gZmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBpbWFnZSBwcm92aWRlcyBhIHRlbXBvcmFyeQorICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB1c2VkIGZvciBlYXJseSBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gKGUuZy4KKyAgICAgICAgICAgICAgICBsb2FkaW5nIG9mIG1vZHVsZXMgbmVlZGVkIHRvIGxvY2F0ZSBhbmQgbW91bnQgdGhlICJyZWFsIiByb290CisgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSkuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBpbml0cmFtZnMgaW1hZ2UgaXMgdGhlIHN1Y2Nlc3NvciBvZiBpbml0aWFsIFJBTSBkaXNrCisgICAgICAgICAgICAgICAgICAgIChpbml0cmQpLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBhICJjb3B5IGluIGFuZCBvdXQiIChjcGlvKSBhcmNoaXZlIG9mIHRoZSBpbml0aWFsCisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gdGhhdCBnZXRzIGxvYWRlZCBpbnRvIG1lbW9yeSBkdXJpbmcgdGhlIExpbnV4CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXAgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSBMaW51eCB1c2VzIHRoZSBjb250ZW50cyBvZiB0aGUgYXJjaGl2ZSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24sIHRoZSBpbml0cmFtZnMgaW1hZ2UgbmVlZHMgdG8gY29udGFpbiBhbGwgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGRldmljZSBkcml2ZXJzIGFuZCB0b29scyBuZWVkZWQgdG8gbW91bnQgdGhlIGZpbmFsIHJvb3QKKyAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBjcmVhdGUgYW4gaW5pdHJhbWZzIGltYWdlOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSB0aGUgaW5pdHJhbWZzIEltYWdlIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZWZlcmVuY2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29yZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIGFuIGV4YW1wbGUgZnJvbSB3aGljaCB0byB3b3JrLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZWNpZGUgaWYgWW91IE5lZWQgdG8gQnVuZGxlIHRoZSBpbml0cmFtZnMgSW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEludG8gdGhlIEtlcm5lbCBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGluaXRyYW1mcyBpbWFnZSB0aGF0IGlzIGJ1aWx0IHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVkIGluIHdpdGggdGhlIGtlcm5lbCBpbWFnZSwgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRV9CVU5ETEUnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJBTUZTX0lNQUdFJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIHJlY2lwZSB0aGF0IGJ1aWxkcyB0aGUga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZG8gYnVuZGxlIHRoZSBpbml0cmFtZnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB3aXRoIHRoZSBrZXJuZWwgaW1hZ2UgdG8gYXZvaWQgY2lyY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUga2VybmVsIHJlY2lwZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzIHJlY2lwZSBzaG91bGQgdGhlIGluaXRyYW1mcyBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoZSA8ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFX0JVTkRMRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFnIGNhdXNlcyB0aGUgaW5pdHJhbWZzIGltYWdlIHRvIGJlIHVucGFja2VkCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSA8ZmlsZW5hbWU+JHtCfS91c3IvPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHVucGFja2VkIGluaXRyYW1mcyBpbWFnZSBpcyB0aGVuIHBhc3NlZCB0byB0aGUga2VybmVsJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPTkZJR19JTklUUkFNRlNfU09VUkNFJz48ZmlsZW5hbWU+Q09ORklHX0lOSVRSQU1GU19TT1VSQ0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgYWxsb3dpbmcgdGhlIGluaXRyYW1mcyBpbWFnZSB0byBiZSBidWlsdCBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsIG5vcm1hbGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNob29zZSB0byBub3QgYnVuZGxlIHRoZSBpbml0cmFtZnMgaW1hZ2Ugd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgaW1hZ2UsIHlvdSBhcmUgZXNzZW50aWFsbHkgdXNpbmcgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Jbml0cmQnPkluaXRpYWwgUkFNIERpc2sgKGluaXRyZCk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyBhbiBpbml0cmQgaXMgaGFuZGxlZCBwcmltYXJpbHkgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJEX0lNQUdFJz48ZmlsZW5hbWU+SU5JVFJEX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU5JVFJEX0xJVkU8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklOSVRSRF9JTUFHRV9MSVZFPC9maWxlbmFtZT4gdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MnPjxmaWxlbmFtZT5pbWFnZS1saXZlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBBZGQgSXRlbXMgdG8gdGhlIGluaXRyYW1mcyBJbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgVGhyb3VnaCB0aGUgaW5pdHJhbWZzIEltYWdlIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFkZCBpdGVtcyB0byB0aGUgaW5pdHJhbWZzIGltYWdlIGJ5IHdheSBvZiBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSwgeW91IHNob3VsZCB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiBnaXZlcyBtb3JlIGRpcmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbCBvZiB3aGF0IGlzIGFkZGVkIHRvIHRoZSBpbWFnZSBhcyBjb21wYXJlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHRzIHlvdSBtaWdodCBub3QgbmVjZXNzYXJpbHkgd2FudCB0aGF0IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1jb3JlLWltYWdlJz48ZmlsZW5hbWU+Y29yZS1pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBLZXJuZWwgSW1hZ2UgYW5kIHRoZSBpbml0cmFtZnMKKyAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB5b3VyIGtlcm5lbCBpbWFnZSB1c2luZyBCaXRCYWtlLgorICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgaW5pdHJhbWZzIGltYWdlIHJlY2lwZSBpcyBhIGRlcGVuZGVuY3kgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgaW1hZ2UsIHRoZSBpbml0cmFtZnMgaW1hZ2UgaXMgYnVpbHQgYXMgd2VsbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgd2l0aCB0aGUga2VybmVsIGltYWdlIGlmIHlvdSB1c2VkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRV9CVU5ETEUnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGVzY3JpYmVkIGVhcmxpZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkaW5nLWEtdGlueS1zeXN0ZW0nPgorICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIGEgVGlueSBTeXN0ZW08L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBWZXJ5IHNtYWxsIGRpc3RyaWJ1dGlvbnMgaGF2ZSBzb21lIHNpZ25pZmljYW50IGFkdmFudGFnZXMgc3VjaAorICAgICAgICAgICAgICAgIGFzIHJlcXVpcmluZyBsZXNzIG9uLWRpZSBvciBpbi1wYWNrYWdlIG1lbW9yeSAoY2hlYXBlciksIGJldHRlcgorICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlIHRocm91Z2ggZWZmaWNpZW50IGNhY2hlIHVzYWdlLCBsb3dlciBwb3dlciByZXF1aXJlbWVudHMKKyAgICAgICAgICAgICAgICBkdWUgdG8gbGVzcyBtZW1vcnksIGZhc3RlciBib290IHRpbWVzLCBhbmQgcmVkdWNlZCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIG92ZXJoZWFkLgorICAgICAgICAgICAgICAgIFNvbWUgcmVhbC13b3JsZCBleGFtcGxlcyB3aGVyZSBhIHZlcnkgc21hbGwgZGlzdHJpYnV0aW9uIGdpdmVzCisgICAgICAgICAgICAgICAgeW91IGRpc3RpbmN0IGFkdmFudGFnZXMgYXJlIGRpZ2l0YWwgY2FtZXJhcywgbWVkaWNhbCBkZXZpY2VzLAorICAgICAgICAgICAgICAgIGFuZCBzbWFsbCBoZWFkbGVzcyBzeXN0ZW1zLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJlc2VudHMgaW5mb3JtYXRpb24gdGhhdCBzaG93cyB5b3UgaG93IHlvdSBjYW4KKyAgICAgICAgICAgICAgICB0cmltIHlvdXIgZGlzdHJpYnV0aW9uIHRvIGV2ZW4gc21hbGxlciBzaXplcyB0aGFuIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPiBkaXN0cmlidXRpb24sIHdoaWNoIGlzIGFyb3VuZAorICAgICAgICAgICAgICAgIDUgTWJ5dGVzLCB0aGF0IGNhbiBiZSBidWlsdCBvdXQtb2YtdGhlLWJveCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3Rpbnktc3lzdGVtLW92ZXJ2aWV3Jz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+T3ZlcnZpZXc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcmVzZW50cyB0aGUgb3ZlcmFsbCBzdGVwcyB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICBjb25zaWRlciBhbmQgcGVyZm9ybSB0byBjcmVhdGUgZGlzdHJpYnV0aW9ucyB3aXRoIHNtYWxsZXIKKyAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtcywgYWNoaWV2ZSBmYXN0ZXIgYm9vdCB0aW1lcywgbWFpbnRhaW4geW91ciBjcml0aWNhbAorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5LCBhbmQgYXZvaWQgaW5pdGlhbCBSQU0gZGlza3M6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ29hbHMtYW5kLWd1aWRpbmctcHJpbmNpcGxlcyc+RGV0ZXJtaW5lIHlvdXIgZ29hbHMgYW5kIGd1aWRpbmcgcHJpbmNpcGxlcy48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZC13aGF0LWdpdmVzLXlvdXItaW1hZ2Utc2l6ZSc+VW5kZXJzdGFuZCB3aGF0IGNvbnRyaWJ1dGVzIHRvIHlvdXIgaW1hZ2Ugc2l6ZS48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndHJpbS10aGUtcm9vdC1maWxlc3lzdGVtJz5SZWR1Y2UgdGhlIHNpemUgb2YgdGhlIHJvb3QgZmlsZXN5c3RlbS48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndHJpbS10aGUta2VybmVsJz5SZWR1Y2UgdGhlIHNpemUgb2YgdGhlIGtlcm5lbC48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVtb3ZlLXBhY2thZ2UtbWFuYWdlbWVudC1yZXF1aXJlbWVudHMnPkVsaW1pbmF0ZSBwYWNrYWdpbmcgcmVxdWlyZW1lbnRzLjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdsb29rLWZvci1vdGhlci13YXlzLXRvLW1pbmltaXplLXNpemUnPkxvb2sgZm9yIG90aGVyIHdheXMgdG8gbWluaW1pemUgc2l6ZS48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0naXRlcmF0ZS1vbi10aGUtcHJvY2Vzcyc+SXRlcmF0ZSBvbiB0aGUgcHJvY2Vzcy48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2dvYWxzLWFuZC1ndWlkaW5nLXByaW5jaXBsZXMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Hb2FscyBhbmQgR3VpZGluZyBQcmluY2lwbGVzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiByZWFjaCB5b3VyIGRlc3RpbmF0aW9uLCB5b3UgbmVlZCB0byBrbm93CisgICAgICAgICAgICAgICAgICAgIHdoZXJlIHlvdSBhcmUgZ29pbmcuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBsaXN0IHRoYXQgeW91IGNhbiB1c2UgYXMgYSBndWlkZSB3aGVuCisgICAgICAgICAgICAgICAgICAgIGNyZWF0aW5nIHZlcnkgc21hbGwgZGlzdHJpYnV0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZXRlcm1pbmUgaG93IG11Y2ggc3BhY2UgeW91IG5lZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBhIGtlcm5lbCB0aGF0IGlzIDEgTWJ5dGUgb3IgbGVzcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHJvb3QgZmlsZXN5c3RlbSB0aGF0IGlzIDMgTWJ5dGVzIG9yIGxlc3MpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZpbmQgdGhlIGFyZWFzIHRoYXQgYXJlIGN1cnJlbnRseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2luZyA5MCUgb2YgdGhlIHNwYWNlIGFuZCBjb25jZW50cmF0ZSBvbiByZWR1Y2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRob3NlIGFyZWFzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRvIG5vdCBjcmVhdGUgYW55IGRpZmZpY3VsdCAiaGFja3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWNoaWV2ZSB5b3VyIGdvYWxzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkxldmVyYWdlIHRoZSBkZXZpY2Utc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldvcmsgaW4gYSBzZXBhcmF0ZSBsYXllciBzbyB0aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXAgY2hhbmdlcyBpc29sYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBsYXllcnMsIHNlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd1bmRlcnN0YW5kLXdoYXQtZ2l2ZXMteW91ci1pbWFnZS1zaXplJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VW5kZXJzdGFuZCBXaGF0IENvbnRyaWJ1dGVzIHRvIFlvdXIgSW1hZ2UgU2l6ZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgZWFzaWVzdCB0byBoYXZlIHNvbWV0aGluZyB0byBzdGFydCB3aXRoIHdoZW4gY3JlYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgeW91ciBvd24gZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBvdXQtb2YtdGhlLWJveCB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPiBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgIFVsdGltYXRlbHksIHlvdSB3aWxsIHdhbnQgdG8gbWFrZSBjaGFuZ2VzIGluIHlvdXIgb3duCisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiB0aGF0IGFyZSBsaWtlbHkgbW9kZWxlZCBhZnRlcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS10aW55PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gdXNlIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPiBpbiB5b3VyIGJ1aWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSB0byAicG9reS10aW55IgorICAgICAgICAgICAgICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLXlvdXItb3duLWRpc3RyaWJ1dGlvbic+Q3JlYXRpbmcgWW91ciBPd24gRGlzdHJpYnV0aW9uPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVW5kZXJzdGFuZGluZyBzb21lIG1lbW9yeSBjb25jZXB0cyB3aWxsIGhlbHAgeW91IHJlZHVjZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHNpemUuCisgICAgICAgICAgICAgICAgICAgIE1lbW9yeSBjb25zaXN0cyBvZiBzdGF0aWMsIGR5bmFtaWMsIGFuZCB0ZW1wb3JhcnkgbWVtb3J5LgorICAgICAgICAgICAgICAgICAgICBTdGF0aWMgbWVtb3J5IGlzIHRoZSBURVhUIChjb2RlKSwgREFUQSAoaW5pdGlhbGl6ZWQgZGF0YQorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgY29kZSksIGFuZCBCU1MgKHVuaW5pdGlhbGl6ZWQgZGF0YSkgc2VjdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIER5bmFtaWMgbWVtb3J5IHJlcHJlc2VudHMgbWVtb3J5IHRoYXQgaXMgYWxsb2NhdGVkIGF0IHJ1bnRpbWU6CisgICAgICAgICAgICAgICAgICAgIHN0YWNrcywgaGFzaCB0YWJsZXMsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgVGVtcG9yYXJ5IG1lbW9yeSBpcyByZWNvdmVyZWQgYWZ0ZXIgdGhlIGJvb3QgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtZW1vcnkgY29uc2lzdHMgb2YgbWVtb3J5IHVzZWQgZm9yIGRlY29tcHJlc3NpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCBhbmQgZm9yIHRoZSA8ZmlsZW5hbWU+X19pbml0X188L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGhlbHAgeW91IHNlZSB3aGVyZSB5b3UgY3VycmVudGx5IGFyZSB3aXRoIGtlcm5lbCBhbmQgcm9vdAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIHNpemVzLCB5b3UgY2FuIHVzZSB0d28gdG9vbHMgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPiBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnNjcmlwdHMvdGlueS88L2ZpbGVuYW1lPiBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmtzaXplLnB5PC9maWxlbmFtZT46IFJlcG9ydHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgc2l6ZXMgZm9yIHRoZSBrZXJuZWwgYnVpbGQgb2JqZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZGlyc2l6ZS5weTwvZmlsZW5hbWU+OiBSZXBvcnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50IHNpemVzIGZvciB0aGUgcm9vdCBmaWxlc3lzdGVtLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IHRvb2wgYW5kIGNvbW1hbmQgaGVscCB5b3Ugb3JnYW5pemUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgYW5kIHZpZXcgZmlsZSBkZXBlbmRlbmNpZXMgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5tZXJnZV9jb25maWcuc2g8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWxwcyB5b3UgbWFuYWdlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGZyYWdtZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpdGggdGhpcyB0b29sLCB5b3UgY2FuIG1lcmdlIGluZGl2aWR1YWwgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cyB0b2dldGhlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdG9vbCBhbGxvd3MgeW91IHRvIG1ha2Ugb3ZlcnJpZGVzIGFuZCB3YXJucyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBhbnkgbWlzc2luZyBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvb2wgaXMgaWRlYWwgZm9yIGFsbG93aW5nIHlvdSB0byBpdGVyYXRlIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMsIGNyZWF0ZSBtaW5pbWFsIGNvbmZpZ3VyYXRpb25zLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGUgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgZGlmZmVyZW50IG1hY2hpbmVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gZHVwbGljYXRlIHlvdXIgcHJvY2Vzcy48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5tZXJnZV9jb25maWcuc2g8L2ZpbGVuYW1lPiBzY3JpcHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSBMaW51eCBZb2N0byBrZXJuZWwgR2l0IHJlcG9zaXRvcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE0PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTA8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy44PC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9rY29uZmlnPC9maWxlbmFtZT4gZGlyZWN0b3J5LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmF0aW9uIGZyYWdtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNjcmVhdGluZy1jb25maWctZnJhZ21lbnRzJz5DcmVhdGluZyBDb25maWd1cmF0aW9uIEZyYWdtZW50czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5iaXRiYWtlIC11IHRhc2tleHAgLWcgPHJlcGxhY2VhYmxlPmJpdGJha2VfdGFyZ2V0PC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgQml0QmFrZSBjb21tYW5kIHdpdGggdGhlc2Ugb3B0aW9ucyBicmluZ3MgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIERlcGVuZGVuY3kgRXhwbG9yZXIgZnJvbSB3aGljaCB5b3UgY2FuIHZpZXcgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBhbGxvd3MgeW91IHRvIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1lZCBkZWNpc2lvbnMgd2hlbiBjdXR0aW5nIG91dCB2YXJpb3VzIHBpZWNlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgYW5kIHJvb3QgZmlsZXN5c3RlbS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndHJpbS10aGUtcm9vdC1maWxlc3lzdGVtJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VHJpbSB0aGUgUm9vdCBGaWxlc3lzdGVtPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcm9vdCBmaWxlc3lzdGVtIGlzIG1hZGUgdXAgb2YgcGFja2FnZXMgZm9yIGJvb3RpbmcsCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcywgYW5kIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgVG8gY2hhbmdlIHRoaW5ncywgeW91IGNhbiBjb25maWd1cmUgaG93IHRoZSBwYWNrYWdpbmcgaGFwcGVucywKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggY2hhbmdlcyB0aGUgd2F5IHlvdSBidWlsZCB0aGVtLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gbW9kaWZ5IHRoZSBmaWxlc3lzdGVtIGl0c2VsZiBvciBzZWxlY3QgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRmlyc3QsIGZpbmQgb3V0IHdoYXQgaXMgaG9nZ2luZyB5b3VyIHJvb3QgZmlsZXN5c3RlbSBieSBydW5uaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyc2l6ZS5weTwvZmlsZW5hbWU+IHNjcmlwdCBmcm9tIHlvdXIgcm9vdCBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCA8cmVwbGFjZWFibGU+cm9vdC1kaXJlY3Rvcnktb2YtaW1hZ2U8L3JlcGxhY2VhYmxlPgorICAgICAkIGRpcnNpemUucHkgMTAwMDAwID4gZGlyc2l6ZS0xMDBrLmxvZworICAgICAkIGNhdCBkaXJzaXplLTEwMGsubG9nCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhcHBseSBhIGZpbHRlciB0byB0aGUgc2NyaXB0IHRvIGlnbm9yZSBmaWxlcyB1bmRlcgorICAgICAgICAgICAgICAgICAgICBhIGNlcnRhaW4gc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgZmlsdGVycyBvdXQgYW55IGZpbGVzIGJlbG93IDEwMCBLYnl0ZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzaXplcyByZXBvcnRlZCBieSB0aGUgdG9vbCBhcmUgdW5jb21wcmVzc2VkLCBhbmQgdGh1cworICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHNtYWxsZXIgYnkgYSByZWxhdGl2ZWx5IGNvbnN0YW50IGZhY3RvciBpbiBhCisgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWQgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBleGFtaW5lIHlvdXIgbG9nIGZpbGUsIHlvdSBjYW4gZm9jdXMgb24gYXJlYXMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB0aGF0IHRha2UgdXAgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB3aGF0IHlvdSBlbGltaW5hdGUgZG9lcyBub3QgY3JpcHBsZQorICAgICAgICAgICAgICAgICAgICB0aGUgZnVuY3Rpb25hbGl0eSB5b3UgbmVlZC4KKyAgICAgICAgICAgICAgICAgICAgT25lIHdheSB0byBzZWUgaG93IHBhY2thZ2VzIHJlbGF0ZSB0byBlYWNoIG90aGVyIGlzIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBEZXBlbmRlbmN5IEV4cGxvcmVyIFVJIHdpdGggdGhlIEJpdEJha2UgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIDxyZXBsYWNlYWJsZT5pbWFnZS1kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPgorICAgICAkIGJpdGJha2UgLXUgdGFza2V4cCAtZyA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgaW50ZXJmYWNlIHRvIHNlbGVjdCBwb3RlbnRpYWwgcGFja2FnZXMgeW91IHdpc2ggdG8KKyAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlIGFuZCBzZWUgdGhlaXIgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGRlY2lkaW5nIGhvdyB0byByZWR1Y2UgdGhlIHNpemUsIGdldCByaWQgb2YgcGFja2FnZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICByZXN1bHQgaW4gbWluaW1hbCBpbXBhY3Qgb24gdGhlIGZlYXR1cmUgc2V0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IG5vdCBuZWVkIGEgVkdBIGRpc3BsYXkuCisgICAgICAgICAgICAgICAgICAgIE9yLCB5b3UgbWlnaHQgYmUgYWJsZSB0byBnZXQgYnkgd2l0aCA8ZmlsZW5hbWU+ZGV2dG1wZnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPm1kZXY8L2ZpbGVuYW1lPiBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51ZGV2PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZSB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSB0byBtYWtlIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBlbGltaW5hdGUgPGZpbGVuYW1lPnVkZXY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWI8L2ZpbGVuYW1lPiwgc2V0IHRoZSBmb2xsb3dpbmcgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIGNvbmZpZ3VyYXRpb24gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWSVJUVUFMLVJVTlRJTUVfZGV2X21hbmFnZXIgPSAiIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZpbmFsbHksIHlvdSBzaG91bGQgY29uc2lkZXIgZXhhY3RseSB0aGUgdHlwZSBvZiByb290CisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0geW91IG5lZWQgdG8gbWVldCB5b3VyIG5lZWRzIHdoaWxlIGFsc28gcmVkdWNpbmcKKyAgICAgICAgICAgICAgICAgICAgaXRzIHNpemUuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciA8ZmlsZW5hbWU+Y3JhbWZzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zcXVhc2hmczwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+dWJpZnM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dDI8L2ZpbGVuYW1lPiwgb3IgYW4gPGZpbGVuYW1lPmluaXRyYW1mczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHVzaW5nIDxmaWxlbmFtZT5pbml0cmFtZnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQmUgYXdhcmUgdGhhdCA8ZmlsZW5hbWU+ZXh0MzwvZmlsZW5hbWU+IHJlcXVpcmVzIGEgMSBNYnl0ZQorICAgICAgICAgICAgICAgICAgICBqb3VybmFsLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIG9rYXkgd2l0aCBydW5uaW5nIHJlYWQtb25seSwgeW91IGRvIG5vdCBuZWVkIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgam91cm5hbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgZWFjaCByb3VuZCBvZiBlbGltaW5hdGlvbiwgeW91IG5lZWQgdG8gcmVidWlsZCB5b3VyCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBhbmQgdGhlbiB1c2UgdGhlIHRvb2xzIHRvIHNlZSB0aGUgZWZmZWN0cyBvZiB5b3VyCisgICAgICAgICAgICAgICAgICAgIHJlZHVjdGlvbnMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndHJpbS10aGUta2VybmVsJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VHJpbSB0aGUgS2VybmVsPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUga2VybmVsIGlzIGJ1aWx0IGJ5IGluY2x1ZGluZyBwb2xpY2llcyBmb3IgaGFyZHdhcmUtaW5kZXBlbmRlbnQKKyAgICAgICAgICAgICAgICAgICAgYXNwZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgV2hhdCBzdWJzeXN0ZW1zIGRvIHlvdSBlbmFibGU/CisgICAgICAgICAgICAgICAgICAgIEZvciB3aGF0IGFyY2hpdGVjdHVyZSBhcmUgeW91IGJ1aWxkaW5nPworICAgICAgICAgICAgICAgICAgICBXaGljaCBkcml2ZXJzIGRvIHlvdSBidWlsZCBieSBkZWZhdWx0PworICAgICAgICAgICAgICAgICAgICA8bm90ZT5Zb3UgY2FuIG1vZGlmeSB0aGUga2VybmVsIHNvdXJjZSBpZiB5b3Ugd2FudCB0byBoZWxwCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGJvb3QgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSdW4gdGhlIDxmaWxlbmFtZT5rc2l6ZS5weTwvZmlsZW5hbWU+IHNjcmlwdCBmcm9tIHRoZSB0b3AtbGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgTGludXggYnVpbGQgZGlyZWN0b3J5IHRvIGdldCBhbiBpZGVhIG9mIHdoYXQgaXMgbWFraW5nIHVwCisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWw6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCA8cmVwbGFjZWFibGU+dG9wLWxldmVsLWxpbnV4LWJ1aWxkLWRpcmVjdG9yeTwvcmVwbGFjZWFibGU+CisgICAgICQga3NpemUucHkgPiBrc2l6ZS5sb2cKKyAgICAgJCBjYXQga3NpemUubG9nCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgZXhhbWluZSB0aGUgbG9nLCB5b3Ugd2lsbCBzZWUgaG93IG11Y2ggc3BhY2UgaXMKKyAgICAgICAgICAgICAgICAgICAgdGFrZW4gdXAgd2l0aCB0aGUgYnVpbHQtaW4gPGZpbGVuYW1lPi5vPC9maWxlbmFtZT4gZmlsZXMgZm9yCisgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMsIG5ldHdvcmtpbmcsIGNvcmUga2VybmVsIGZpbGVzLCBmaWxlc3lzdGVtLCBzb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICBUaGUgc2l6ZXMgcmVwb3J0ZWQgYnkgdGhlIHRvb2wgYXJlIHVuY29tcHJlc3NlZCwgYW5kIHRodXMKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBzbWFsbGVyIGJ5IGEgcmVsYXRpdmVseSBjb25zdGFudCBmYWN0b3IgaW4gYSBjb21wcmVzc2VkCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgTG9vayB0byByZWR1Y2UgdGhlIGFyZWFzIHRoYXQgYXJlIGxhcmdlIGFuZCB0YWtpbmcgdXAgYXJvdW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSAiOTAlIHJ1bGUuIgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBleGFtaW5lLCBvciBkcmlsbCBkb3duLCBpbnRvIGFueSBwYXJ0aWN1bGFyIGFyZWEsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kPC9maWxlbmFtZT4gb3B0aW9uIHdpdGggdGhlIHNjcmlwdDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGtzaXplLnB5IC1kID4ga3NpemUubG9nCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBvcHRpb24gYnJlYWtzIG91dCB0aGUgaW5kaXZpZHVhbCBmaWxlIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIGFyZWEgb2YgdGhlIGtlcm5lbCAoZS5nLiBkcml2ZXJzLCBuZXR3b3JraW5nLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBVc2UgeW91ciBsb2cgZmlsZSB0byBzZWUgd2hhdCB5b3UgY2FuIGVsaW1pbmF0ZSBmcm9tIHRoZSBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgYmFzZWQgb24gZmVhdHVyZXMgeW91IGNhbiBsZXQgZ28uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIG5vdCBnb2luZyB0byBuZWVkIHNvdW5kLCB5b3UgZG8gbm90CisgICAgICAgICAgICAgICAgICAgIG5lZWQgYW55IGRyaXZlcnMgdGhhdCBzdXBwb3J0IHNvdW5kLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciBmaWd1cmluZyBvdXQgd2hhdCB0byBlbGltaW5hdGUsIHlvdSBuZWVkIHRvIHJlY29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgdG8gcmVmbGVjdCB0aG9zZSBjaGFuZ2VzIGR1cmluZyB0aGUgbmV4dCBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNvdWxkIHJ1biA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IGFuZCBtYWtlIGFsbCB5b3VyCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgYXQgb25jZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhhdCBtYWtlcyBpdCBkaWZmaWN1bHQgdG8gc2VlIHRoZSBlZmZlY3RzIG9mIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbCBlbGltaW5hdGlvbnMgYW5kIGFsc28gbWFrZXMgaXQgZGlmZmljdWx0IHRvIHJlcGxpY2F0ZQorICAgICAgICAgICAgICAgICAgICB0aGUgY2hhbmdlcyBmb3IgcGVyaGFwcyBhbm90aGVyIHRhcmdldCBkZXZpY2UuCisgICAgICAgICAgICAgICAgICAgIEEgYmV0dGVyIG1ldGhvZCBpcyB0byBzdGFydCB3aXRoIG5vIGNvbmZpZ3VyYXRpb25zIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hbGxub2NvbmZpZzwvZmlsZW5hbWU+LCBjcmVhdGUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgZm9yIGluZGl2aWR1YWwgY2hhbmdlcywgYW5kIHRoZW4gbWFuYWdlIHRoZQorICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgaW50byBhIHNpbmdsZSBjb25maWd1cmF0aW9uIGZpbGUgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lcmdlX2NvbmZpZy5zaDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgdG9vbCBtYWtlcyBpdCBlYXN5IGZvciB5b3UgdG8gaXRlcmF0ZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBjaGFuZ2UgYW5kIGJ1aWxkIGN5Y2xlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBFYWNoIHRpbWUgeW91IG1ha2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCB5b3UgbmVlZCB0byByZWJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgYW5kIGNoZWNrIHRvIHNlZSB3aGF0IGltcGFjdCB5b3VyIGNoYW5nZXMgaGFkIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBvdmVyYWxsIHNpemUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncmVtb3ZlLXBhY2thZ2UtbWFuYWdlbWVudC1yZXF1aXJlbWVudHMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5SZW1vdmUgUGFja2FnZSBNYW5hZ2VtZW50IFJlcXVpcmVtZW50czwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUGFja2FnaW5nIHJlcXVpcmVtZW50cyBhZGQgc2l6ZSB0byB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIE9uZSB3YXkgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBpbWFnZSBpcyB0byByZW1vdmUgYWxsIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdpbmcgcmVxdWlyZW1lbnRzIGZyb20gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlZHVjdGlvbiBpbmNsdWRlcyBib3RoIHJlbW92aW5nIHRoZSBwYWNrYWdlIG1hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgYW5kIGl0cyB1bmlxdWUgZGVwZW5kZW5jaWVzIGFzIHdlbGwgYXMgcmVtb3ZpbmcgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudCBkYXRhIGl0c2VsZi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gZWxpbWluYXRlIGFsbCB0aGUgcGFja2FnaW5nIHJlcXVpcmVtZW50cyBmb3IgYW4gaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgIGJlIHN1cmUgdGhhdCAicGFja2FnZS1tYW5hZ2VtZW50IiBpcyBub3QgcGFydCBvZiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgZm9yIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgcmVtb3ZlIHRoaXMgZmVhdHVyZSwgeW91IGFyZSByZW1vdmluZyB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyIGFzIHdlbGwgYXMgaXRzIGRlcGVuZGVuY2llcyBmcm9tIHRoZSByb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbG9vay1mb3Itb3RoZXItd2F5cy10by1taW5pbWl6ZS1zaXplJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+TG9vayBmb3IgT3RoZXIgV2F5cyB0byBNaW5pbWl6ZSBTaXplPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZXMsIG90aGVyIGFyZWFzIHRoYXQgeW91CisgICAgICAgICAgICAgICAgICAgIGNhbiB0cmltIGxpa2VseSBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGtleSB0byBmaW5kaW5nIHRoZXNlIGFyZWFzIGlzIHRocm91Z2ggdG9vbHMgYW5kIG1ldGhvZHMKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVkIGhlcmUgY29tYmluZWQgd2l0aCBleHBlcmltZW50YXRpb24gYW5kIGl0ZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgYSBjb3VwbGUgb2YgYXJlYXMgdG8gZXhwZXJpbWVudCB3aXRoOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIGZvbGxvdyB0aGlzIHByb2Nlc3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UmVtb3ZlIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgdGhpbmsgeW91IGRvIG5vdCBuZWVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QnVpbGQgeW91ciBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPklmIHRoZSBidWlsZCBmYWlscyBkdWUgdG8gbWlzc2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9scyBpbiBhIHBhY2thZ2UsIGRldGVybWluZSBpZiB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvbmZpZ3VyZSB0aGUgcGFja2FnZSB0byBub3QgbmVlZCB0aG9zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgY2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIHRvIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCB3aWRlIGNoYXJhY3RlciBzdXBwb3J0IGFzIGlzIGRvbmUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmN1cnNlczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3IsIGlmIHN1cHBvcnQgZm9yIHRob3NlIGNoYXJhY3RlcnMgaXMgbmVlZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIHdoYXQgPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzIHByb3ZpZGUgdGhlIHN1cHBvcnQgYW5kIHJlc3RvcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SZWJ1aWxkIGFuZCByZXBlYXQgdGhlIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5idXN5Ym94PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEJ1c3lCb3gsIHVzZSBhIHByb2Nlc3Mgc2ltaWxhciBhcyBkZXNjcmliZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBkaWZmZXJlbmNlIGlzIHlvdSB3aWxsIG5lZWQgdG8gYm9vdCB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHRvIHNlZSBpZiB5b3UgYXJlIGFibGUgdG8gZG8gZXZlcnl0aGluZyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QgZnJvbSB0aGUgcnVubmluZyBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgc3VyZSB0byBpbnRlZ3JhdGUgY29uZmlndXJhdGlvbiBmcmFnbWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIEJ1c3lib3ggYmVjYXVzZSBCdXN5Qm94IGhhbmRsZXMgaXRzIG93biBjb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgYW5kIHRoZW4gYWxsb3dzIHlvdSB0byBhZGQgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cyBvbiB0b3AuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2l0ZXJhdGUtb24tdGhlLXByb2Nlc3MnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5JdGVyYXRlIG9uIHRoZSBQcm9jZXNzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBub3QgcmVhY2hlZCB5b3VyIGdvYWxzIG9uIHN5c3RlbSBzaXplLCB5b3UgbmVlZAorICAgICAgICAgICAgICAgICAgICB0byBpdGVyYXRlIG9uIHRoZSBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyBpcyB0aGUgc2FtZS4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSB0b29scyBhbmQgc2VlIGp1c3Qgd2hhdCBpcyB0YWtpbmcgdXAgOTAlIG9mIHRoZSByb290CisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gYW5kIHRoZSBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIERlY2lkZSB3aGF0IHlvdSBjYW4gZWxpbWluYXRlIHdpdGhvdXQgbGltaXRpbmcgeW91ciBkZXZpY2UKKyAgICAgICAgICAgICAgICAgICAgYmV5b25kIHdoYXQgeW91IG5lZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIHN5c3RlbSwgYSBnb29kIHBsYWNlIHRvIGxvb2sgbWlnaHQgYmUKKyAgICAgICAgICAgICAgICAgICAgQnVzeWJveCwgd2hpY2ggcHJvdmlkZXMgYSBzdHJpcHBlZCBkb3duCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgVW5peCB0b29scyBpbiBhIHNpbmdsZSwgZXhlY3V0YWJsZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBZb3UgbWlnaHQgYmUgYWJsZSB0byBkcm9wIHZpcnR1YWwgdGVybWluYWwgc2VydmljZXMgb3IgcGVyaGFwcworICAgICAgICAgICAgICAgICAgICBpcHY2LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdidWlsZGluZy1pbWFnZXMtZm9yLW1vcmUtdGhhbi1vbmUtbWFjaGluZSc+CisgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgSW1hZ2VzIGZvciBNb3JlIHRoYW4gT25lIE1hY2hpbmU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIGNvbW1vbiBzY2VuYXJpbyBkZXZlbG9wZXJzIGZhY2UgaXMgY3JlYXRpbmcgaW1hZ2VzIGZvciBzZXZlcmFsCisgICAgICAgICAgICAgICAgZGlmZmVyZW50IG1hY2hpbmVzIHRoYXQgdXNlIHRoZSBzYW1lIHNvZnR3YXJlIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCBpdCBpcyB0ZW1wdGluZyB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgdHVuaW5ncyBhbmQgb3B0aW1pemF0aW9uIGZsYWdzIGZvciBlYWNoIGJ1aWxkIHNwZWNpZmljYWxseSBmb3IKKyAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0ZWQgaGFyZHdhcmUgKGkuZS4gIm1heGluZyBvdXQiIHRoZSB0dW5pbmdzKS4KKyAgICAgICAgICAgICAgICBEb2luZyBzbyBjYW4gY29uc2lkZXJhYmx5IGFkZCB0byBidWlsZCB0aW1lcyBhbmQgcGFja2FnZSBmZWVkCisgICAgICAgICAgICAgICAgbWFpbnRlbmFuY2UgY29sbGVjdGl2ZWx5IGZvciB0aGUgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHNlbGVjdGluZyB0dW5lcyB0aGF0IGFyZSBleHRyZW1lbHkgc3BlY2lmaWMgdG8gYQorICAgICAgICAgICAgICAgIENQVSBjb3JlIHVzZWQgaW4gYSBzeXN0ZW0gbWlnaHQgZW5hYmxlIHNvbWUgbWljcm8gb3B0aW1pemF0aW9ucworICAgICAgICAgICAgICAgIGluIEdDQyBmb3IgdGhhdCBwYXJ0aWN1bGFyIHN5c3RlbSBidXQgd291bGQgb3RoZXJ3aXNlIG5vdCBnYWluCisgICAgICAgICAgICAgICAgeW91IG11Y2ggb2YgYSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGFjcm9zcyB0aGUgb3RoZXIgc3lzdGVtcworICAgICAgICAgICAgICAgIGFzIGNvbXBhcmVkIHRvIHVzaW5nIGEgbW9yZSBnZW5lcmFsIHR1bmluZyBhY3Jvc3MgYWxsIHRoZSBidWlsZHMKKyAgICAgICAgICAgICAgICAoZS5nLiBzZXR0aW5nCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFRkFVTFRUVU5FJz48ZmlsZW5hbWU+REVGQVVMVFRVTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgc3BlY2lmaWNhbGx5IGZvciBlYWNoIG1hY2hpbmUncyBidWlsZCkuCisgICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gIm1heCBvdXQiIGVhY2ggYnVpbGQncyB0dW5pbmdzLCB5b3UgY2FuIHRha2Ugc3RlcHMgdGhhdAorICAgICAgICAgICAgICAgIGNhdXNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHJldXNlIHNvZnR3YXJlIGFjcm9zcyB0aGUKKyAgICAgICAgICAgICAgICB2YXJpb3VzIG1hY2hpbmVzIHdoZXJlIGl0IG1ha2VzIHNlbnNlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiBidWlsZCBzcGVlZCBhbmQgcGFja2FnZSBmZWVkIG1haW50ZW5hbmNlIGFyZSBjb25zaWRlcmF0aW9ucywKKyAgICAgICAgICAgICAgICB5b3Ugc2hvdWxkIGNvbnNpZGVyIHRoZSBwb2ludHMgaW4gdGhpcyBzZWN0aW9uIHRoYXQgY2FuIGhlbHAgeW91CisgICAgICAgICAgICAgICAgb3B0aW1pemUgeW91ciB0dW5pbmdzIHRvIGJlc3QgY29uc2lkZXIgYnVpbGQgdGltZXMgYW5kIHBhY2thZ2UKKyAgICAgICAgICAgICAgICBmZWVkIG1haW50ZW5hbmNlLgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TaGFyZSB0aGUgQnVpbGQgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiBhdCBhbGwgcG9zc2libGUsIHNoYXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFjcm9zcyBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBzd2l0Y2hpbmcgYmV0d2VlbiBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyBpbiB0aGUgc2FtZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIGlzIHdlbGwgc3VwcG9ydGVkIGFuZCByZWd1bGFybHkgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVycyB3aGVuIGJ1aWxkaW5nIGZvciBtdWx0aXBsZSBtYWNoaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgc2FtZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBtYWNoaW5lIGJ1aWxkcywgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuCisgICAgICAgICAgICAgICAgICAgICAgICByZXVzZSB0aGUgZXhpc3RpbmcgbmF0aXZlIGFuZCBvZnRlbiBjcm9zcy1yZWNpcGVzIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBidWlsZCB0aW1lIGRlY3JlYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBjaGFuZ2Ugb3IgZnVuZGFtZW50YWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgdGhlIGZpbGVzeXN0ZW0gbGF5b3V0LCB5b3UgbmVlZCB0byB3b3JrIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGNsZWFuIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFyaW5nIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiB1bmRlciB0aGVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpcmN1bXN0YW5jZXMgbWlnaHQgd29yayBidXQgc2luY2UgaXQgaXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VhcmFudGVlZCwgeW91IHNob3VsZCB1c2UgYSBjbGVhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RW5hYmxlIHRoZSBBcHByb3ByaWF0ZSBQYWNrYWdlIEFyY2hpdGVjdHVyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZW5hYmxlcyB0aHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzIG9mIHBhY2thZ2UgYXJjaGl0ZWN0dXJlczogImFsbCIsICJ0dW5lIiBvciAicGFja2FnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgIm1hY2hpbmUiLgorICAgICAgICAgICAgICAgICAgICAgICAgQW55IGdpdmVuIHJlY2lwZSB1c3VhbGx5IHNlbGVjdHMgb25lIG9mIHRoZXNlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMgKHR5cGVzKSBmb3IgaXRzIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBmb3Igd2hhdCBhIGdpdmVuIHJlY2lwZSBjcmVhdGVzIHBhY2thZ2VzLCBtYWtpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cmUgeW91IGVuYWJsZSB0aGUgYXBwcm9wcmlhdGUgcGFja2FnZSBhcmNoaXRlY3R1cmUgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RseSBpbXBhY3QgdGhlIGJ1aWxkIHRpbWUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BIHJlY2lwZSB0aGF0IGp1c3QgZ2VuZXJhdGVzIHNjcmlwdHMgY2FuIGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgImFsbCIgYXJjaGl0ZWN0dXJlIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGJpbmFyaWVzIHRvIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gc3BlY2lmaWNhbGx5IGVuYWJsZSAiYWxsIiBhcmNoaXRlY3R1cmUsIGJlIHN1cmUgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGluaGVyaXRzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYWxsYXJjaCc+PGZpbGVuYW1lPmFsbGFyY2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY2xhc3MgaXMgdXNlZnVsIGZvciAiYWxsIiBhcmNoaXRlY3R1cmVzIGJlY2F1c2UgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZXMgbWFueSB2YXJpYWJsZXMgc28gcGFja2FnZXMgY2FuIGJlIHVzZWQgYWNyb3NzCisgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91ciByZWNpcGUgbmVlZHMgdG8gZ2VuZXJhdGUgcGFja2FnZXMgdGhhdCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgb3Igd2hlbiBvbmUgb2YgdGhlIGJ1aWxkIG9yIHJ1bnRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBpcyBhbHJlYWR5IG1hY2hpbmUtYXJjaGl0ZWN0dXJlIGRlcGVuZGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIG1ha2VzIHlvdXIgcmVjaXBlIGFsc28gbWFjaGluZS1hcmNoaXRlY3R1cmUgZGVwZW5kZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgbWFrZSBzdXJlIHlvdXIgcmVjaXBlIGVuYWJsZXMgdGhlICJtYWNoaW5lIiBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0FSQ0gnPjxmaWxlbmFtZT5NQUNISU5FX0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGRvIG5vdCBzcGVjaWZpY2FsbHkgZW5hYmxlIGEgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9BUkNIJz48ZmlsZW5hbWU+UEFDS0FHRV9BUkNIPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRlZmF1bHRzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRVTkVfUEtHQVJDSCc+PGZpbGVuYW1lPlRVTkVfUEtHQVJDSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBQ0tBR0VfQVJDSCA9ICIke1RVTkVfUEtHQVJDSH0iCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNob29zZSBhIEdlbmVyaWMgVHVuaW5nIEZpbGUgaWYgUG9zc2libGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgdHVuZXMgYXJlIG1vcmUgZ2VuZXJpYyBhbmQgY2FuIHJ1biBvbiBtdWx0aXBsZSB0YXJnZXRzCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBhbiA8ZmlsZW5hbWU+YXJtdjU8L2ZpbGVuYW1lPiBzZXQgb2YgcGFja2FnZXMgY291bGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1biBvbiA8ZmlsZW5hbWU+YXJtdjY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcm12NzwvZmlsZW5hbWU+IHByb2Nlc3NvcnMgaW4gbW9zdCBjYXNlcykuCisgICAgICAgICAgICAgICAgICAgICAgICBTaW1pbGFybHksIDxmaWxlbmFtZT5pNDg2PC9maWxlbmFtZT4gYmluYXJpZXMgY291bGQgd29yaworICAgICAgICAgICAgICAgICAgICAgICAgb24gPGZpbGVuYW1lPmk1ODY8L2ZpbGVuYW1lPiBhbmQgaGlnaGVyIHByb2Nlc3NvcnMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHJlYWxpemUsIGhvd2V2ZXIsIHRoYXQgYWR2YW5jZXMgb24gbmV3ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciB2ZXJzaW9ucyB3b3VsZCBub3QgYmUgdXNlZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBzZWxlY3QgdGhlIHNhbWUgdHVuZSBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSByZXVzZXMgc29mdHdhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHkgYnVpbHQsIHRodXMgc3BlZWRpbmcgdXAgdGhlIG92ZXJhbGwgYnVpbGQgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBldmVuIHRob3VnaCBhIG5ldyBzeXNyb290IGZvciBlYWNoIG1hY2hpbmUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCwgdGhlIHNvZnR3YXJlIGlzIG5vdCByZWNvbXBpbGVkIGFuZCBvbmx5IG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBmZWVkIGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFuYWdlIEdyYW51bGFyIExldmVsIFBhY2thZ2luZzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzIGNhc2VzIGV4aXN0IHdoZXJlIGluamVjdGluZyBhbm90aGVyIGxldmVsIG9mCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGFyY2hpdGVjdHVyZSBiZXlvbmQgdGhlIHRocmVlIGhpZ2hlciBsZXZlbHMgbm90ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGVhcmxpZXIgY2FuIGJlIHVzZWZ1bC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciBob3cgTlhQIChmb3JtZXJseSBGcmVlc2NhbGUpIGFsbG93cworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBlYXN5IHJldXNlIG9mIGJpbmFyeSBwYWNrYWdlcyBpbiB0aGVpciBsYXllcgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvbWV0YS1mcmVlc2NhbGUvJz48ZmlsZW5hbWU+bWV0YS1mcmVlc2NhbGU8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL21ldGEtZnJlZXNjYWxlL3RyZWUvY2xhc3Nlcy9mc2wtZHluYW1pYy1wYWNrYWdlYXJjaC5iYmNsYXNzJz48ZmlsZW5hbWU+ZnNsLWR5bmFtaWMtcGFja2FnZWFyY2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBzaGFyZXMgR1BVIHBhY2thZ2VzIGZvciBpLk1YNTMgYm9hcmRzIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBib2FyZHMgc2hhcmUgdGhlIEFNRCBHUFUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaS5NWDYtYmFzZWQgYm9hcmRzIGNhbiBkbyB0aGUgc2FtZSBiZWNhdXNlIGFsbCBib2FyZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlIHRoZSBWaXZhbnRlIEdQVS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY2xhc3MgaW5zcGVjdHMgdGhlIEJpdEJha2UgZGF0YXN0b3JlIHRvIGlkZW50aWZ5IGlmCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcGFja2FnZSBwcm92aWRlcyBvciBkZXBlbmRzIG9uIG9uZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi1hcmNoaXRlY3R1cmUgdmFsdWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgc28sIHRoZSBjbGFzcyBzZXRzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGJhc2VkIG9uIHRoZSA8ZmlsZW5hbWU+TUFDSElORV9TVUJBUkNIPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHBhY2thZ2UgZG9lcyBub3QgcHJvdmlkZSBvciBkZXBlbmQgb24gb25lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3ViLWFyY2hpdGVjdHVyZSB2YWx1ZXMgYnV0IGl0IG1hdGNoZXMgYSB2YWx1ZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgZmlsdGVyLCBpdCBzZXRzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9BUkNIJz48ZmlsZW5hbWU+TUFDSElORV9BUkNIPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHBhY2thZ2VzIGJ1aWx0IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZXMgYnVpbGQgdGltZSBieSByZXVzaW5nIGJpbmFyaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgVG9vbHMgdG8gRGVidWcgSXNzdWVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMgeW91IGNhbiBydW4gaW50byBzaXR1YXRpb25zIHdoZXJlIHNvZnR3YXJlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyByZWJ1aWx0IHdoZW4geW91IHRoaW5rIGl0IHNob3VsZCBub3QgYmUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gbWlnaHQgbm90IGJlCisgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBzaGFyZWQgc3RhdGUgYmV0d2VlbiBtYWNoaW5lcyB3aGVuIHlvdSB0aGluayBpdAorICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHlwZXMgb2Ygc2l0dWF0aW9ucyBhcmUgdXN1YWxseSBkdWUgdG8gcmVmZXJlbmNlcworICAgICAgICAgICAgICAgICAgICAgICAgdG8gbWFjaGluZS1zcGVjaWZpYyB2YXJpYWJsZXMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TRVJJQUxfQ09OU09MRVMnPjxmaWxlbmFtZT5TRVJJQUxfQ09OU09MRVM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVhTRVJWRVInPjxmaWxlbmFtZT5YU0VSVkVSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0ZFQVRVUkVTJz48ZmlsZW5hbWU+TUFDSElORV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGggaW4gY29kZSB0aGF0IGlzIHN1cHBvc2VkIHRvIG9ubHkgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHR1bmUtc3BlY2lmaWMgb3Igd2hlbiB0aGUgcmVjaXBlIGRlcGVuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJTVUdHRVNUUyc+PGZpbGVuYW1lPlJTVUdHRVNUUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGgpIG9uIHNvbWUgb3RoZXIgcmVjaXBlIHRoYXQgYWxyZWFkeSBoYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkIGFzICIke01BQ0hJTkVfQVJDSH0iLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlcyB0byBmaXggYW55IGlzc3VlcyBpZGVudGlmaWVkIGFyZSBtb3N0IHdlbGNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGVzZSBpc3N1ZXMgb2NjYXNpb25hbGx5IGRvIG9jY3VyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIHN1Y2ggY2FzZXMsIHlvdSBjYW4gdXNlIHNvbWUgdG9vbHMgdG8gaGVscCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgb3V0IHRoZSBzaXR1YXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5zc3RhdGUtZGlmZi1tYWNoaW5lcy5zaDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIHRvb2wgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgUmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIGNvbW1lbnRzIGluIHRoZSBzY3JpcHQgZm9yIGluZm9ybWF0aW9uIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdyB0byB1c2UgdGhlIHRvb2wuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJpdEJha2UncyAiLVMgcHJpbnRkaWZmIiBPcHRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBvcHRpb24gY2F1c2VzIEJpdEJha2UgdG8gdHJ5IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzdGFibGlzaCB0aGUgY2xvc2VzdCBzaWduYXR1cmUgbWF0Y2ggaXQgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIGluIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUpIGFuZCB0aGVuIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1kaWZmc2lnczwvZmlsZW5hbWU+IG92ZXIgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgdG8gZGV0ZXJtaW5lIHRoZSBzdGFtcHMgYW5kIGRlbHRhIHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXNlIHR3byBzdGFtcCB0cmVlcyBkaXZlcmdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0iYnVpbGRpbmctc29mdHdhcmUtZnJvbS1hbi1leHRlcm5hbC1zb3VyY2UiPgorICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIFNvZnR3YXJlIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBpbnZvbHZlcyBmZXRjaGluZyB0aGUgc291cmNlIGZpbGVzLCB1bnBhY2tpbmcKKyAgICAgICAgICAgICAgICB0aGVtLCBhbmQgdGhlbiBwYXRjaGluZyB0aGVtIGlmIG5lY2Vzc2FyeSBiZWZvcmUgdGhlIGJ1aWxkIHRha2VzCisgICAgICAgICAgICAgICAgcGxhY2UuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNpdHVhdGlvbnMgZXhpc3Qgd2hlcmUgeW91IG1pZ2h0IHdhbnQgdG8gYnVpbGQgc29mdHdhcmUgZnJvbSBzb3VyY2UKKyAgICAgICAgICAgICAgICBmaWxlcyB0aGF0IGFyZSBleHRlcm5hbCB0byBhbmQgdGh1cyBvdXRzaWRlIG9mIHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUgYSBwcm9qZWN0IHRoYXQgaW5jbHVkZXMgYSBuZXcgQlNQIHdpdGgKKyAgICAgICAgICAgICAgICBhIGhlYXZpbHkgY3VzdG9taXplZCBrZXJuZWwuCisgICAgICAgICAgICAgICAgQW5kLCB5b3Ugd2FudCB0byBtaW5pbWl6ZSBleHBvc2luZyB0aGUgYnVpbGQgc3lzdGVtIHRvIHRoZQorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IHRlYW0gc28gdGhhdCB0aGV5IGNhbiBmb2N1cyBvbiB0aGVpciBwcm9qZWN0IGFuZAorICAgICAgICAgICAgICAgIG1haW50YWluIGV2ZXJ5b25lJ3Mgd29ya2Zsb3cgYXMgbXVjaCBhcyBwb3NzaWJsZS4KKyAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSB3YW50IGEga2VybmVsIHNvdXJjZSBkaXJlY3Rvcnkgb24gdGhlIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgbWFjaGluZSB3aGVyZSB0aGUgZGV2ZWxvcG1lbnQgb2NjdXJzLgorICAgICAgICAgICAgICAgIFlvdSB3YW50IHRoZSByZWNpcGUncworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byB0aGUgZXh0ZXJuYWwgZGlyZWN0b3J5IGFuZCB1c2UgaXQgYXMgaXMsIG5vdAorICAgICAgICAgICAgICAgIGNvcHkgaXQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGJ1aWxkIGZyb20gc29mdHdhcmUgdGhhdCBjb21lcyBmcm9tIGFuIGV4dGVybmFsIHNvdXJjZSwgYWxsIHlvdQorICAgICAgICAgICAgICAgIG5lZWQgdG8gZG8gaXMgaW5oZXJpdCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGNsYXNzIGFuZCB0aGVuIHNldCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhURVJOQUxTUkMnPjxmaWxlbmFtZT5FWFRFUk5BTFNSQzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byB5b3VyIGV4dGVybmFsIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHRoZSBzdGF0ZW1lbnRzIHRvIHB1dCBpbiB5b3VyCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCArPSAiZXh0ZXJuYWxzcmMiCisgICAgIEVYVEVSTkFMU1JDX3BuLTxyZXBsYWNlYWJsZT5teXJlY2lwZTwvcmVwbGFjZWFibGU+ID0gIjxyZXBsYWNlYWJsZT5wYXRoLXRvLXlvdXItc291cmNlLXRyZWU8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIHNob3dzIGhvdyB0byBhY2NvbXBsaXNoIHRoZSBzYW1lIHRoaW5nIGJ5IHNldHRpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RVhURVJOQUxTUkM8L2ZpbGVuYW1lPiBpbiB0aGUgcmVjaXBlIGl0c2VsZiBvciBpbiB0aGUKKyAgICAgICAgICAgICAgICByZWNpcGUncyBhcHBlbmQgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEVYVEVSTkFMU1JDID0gIjxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4iCisgICAgIEVYVEVSTkFMU1JDX0JVSUxEID0gIjxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciBmb3IgdGhlc2Ugc2V0dGluZ3MgdG8gdGFrZSBlZmZlY3QsIHlvdSBtdXN0IGdsb2JhbGx5CisgICAgICAgICAgICAgICAgICAgIG9yIGxvY2FsbHkgaW5oZXJpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtZXh0ZXJuYWxzcmMnPjxmaWxlbmFtZT5leHRlcm5hbHNyYzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+ZXh0ZXJuYWxzcmMuYmJjbGFzczwvZmlsZW5hbWU+IGJ1aWxkcworICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgY29kZSBpbiBhIGRpcmVjdG9yeSBzZXBhcmF0ZSBmcm9tIHRoZSBleHRlcm5hbCBzb3VyY2UKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVEVSTkFMU1JDJz48ZmlsZW5hbWU+RVhURVJOQUxTUkM8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIGhhdmUgdGhlIHNvdXJjZSBidWlsdCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgaW4KKyAgICAgICAgICAgICAgICB3aGljaCBpdCByZXNpZGVzLCBvciBzb21lIG90aGVyIG5vbWluYXRlZCBkaXJlY3RvcnksIHlvdSBjYW4gc2V0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVEVSTkFMU1JDX0JVSUxEJz48ZmlsZW5hbWU+RVhURVJOQUxTUkNfQlVJTEQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdG8gcG9pbnQgdG8gdGhhdCBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFWFRFUk5BTFNSQ19CVUlMRF9wbi08cmVwbGFjZWFibGU+bXlyZWNpcGU8L3JlcGxhY2VhYmxlPiA9ICI8cmVwbGFjZWFibGU+cGF0aC10by15b3VyLXNvdXJjZS10cmVlPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisKKworICAgIDxzZWN0aW9uIGlkPSdzcGVlZGluZy11cC1hLWJ1aWxkJz4KKyAgICAgICAgPHRpdGxlPlNwZWVkaW5nIFVwIGEgQnVpbGQ8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9sbG93IHRoZXNlIGd1aWRlbGluZXMgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IHRoYXQgc3VwcG9ydHMKLSAgICAgICAgICAgIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zOgorICAgICAgICAgICAgQnVpbGQgdGltZSBjYW4gYmUgYW4gaXNzdWUuCisgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgc2ltcGxlIGNvbnRyb2xzIHRvIHRyeSBhbmQgbWF4aW1pemUKKyAgICAgICAgICAgIGJ1aWxkIGVmZmljaWVuY3kuCisgICAgICAgICAgICBJbiBnZW5lcmFsLCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgYWxsIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzCisgICAgICAgICAgICByZXN1bHQgaW4gdGhlIG1vc3QgZWZmaWNpZW50IGJ1aWxkIHRpbWVzIHdoZW4gZGVhbGluZyB3aXRoIHNpbmdsZQorICAgICAgICAgICAgc29ja2V0IHN5c3RlbXMgKGkuZS4gYSBzaW5nbGUgQ1BVKS4KKyAgICAgICAgICAgIElmIHlvdSBoYXZlIG11bHRpcGxlIENQVXMsIHlvdSBtaWdodCB0cnkgaW5jcmVhc2luZyB0aGUgZGVmYXVsdAorICAgICAgICAgICAgdmFsdWVzIHRvIGdhaW4gbW9yZSBzcGVlZC4KKyAgICAgICAgICAgIFNlZSB0aGUgZGVzY3JpcHRpb25zIGluIHRoZSBnbG9zc2FyeSBmb3IgZWFjaCB2YXJpYWJsZSBmb3IgbW9yZQorICAgICAgICAgICAgaW5mb3JtYXRpb246CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBDb25maWd1cmF0aW9uIEZpbGVzPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGNyZWF0ZSBhIHNpbmdsZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIGVhY2gKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmb3Igd2hpY2ggeW91IHdhbnQgdG8gYWRkIHN1cHBvcnQuCi0gICAgICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIHdvdWxkIGNvbnRhaW4gbGluZXMgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIE1BQ0hJTkUgPSAiQSIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZXMgd291bGQgY29udGFpbiBhbnkgb3RoZXIgdmFyaWFibGVzIHRoYXQgY2FuCi0gICAgICAgICAgICAgICAgICAgIGJlIHNldCBhbmQgYnVpbHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2hhbmdlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIG5vdCBjb25mbGljdC4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgbXVzdCBiZSBsb2NhdGVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50IGJ1aWxkIGRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXVsdGljb25maWc8L2ZpbGVuYW1lPiB1bmRlciB0aGUgYnVpbGQncwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aGVyZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IHJlc2lkZXMuCi0gICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgcmVzdHJpY3Rpb24gaXMgYmVjYXVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIG5vdCBjb25zdHJ1Y3RlZAotICAgICAgICAgICAgICAgICAgICB1bnRpbCB0aGUgbGF5ZXJzIGFyZSBwYXJzZWQuCi0gICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdXNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBhcyBhCi0gICAgICAgICAgICAgICAgICAgIHByZS1jb25maWd1cmF0aW9uIGZpbGUgaXMgbm90IHBvc3NpYmxlIHVubGVzcyBpdCBpcwotICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJfTlVNQkVSX1RIUkVBRFMnPjxmaWxlbmFtZT5CQl9OVU1CRVJfVEhSRUFEUzwvZmlsZW5hbWU+OjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIEJpdEJha2Ugc2ltdWx0YW5lb3VzbHkgZXhlY3V0ZXMuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFkZCB0aGUgQml0QmFrZSBNdWx0aS1Db25maWcgVmFyaWFibGUgdG8geW91IExvY2FsIENvbmZpZ3VyYXRpb24gRmlsZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQk1VTFRJQ09ORklHPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4geW91ciA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIHRvIHNwZWNpZnkgZWFjaCBzZXBhcmF0ZSBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBsaW5lIHRlbGxzIEJpdEJha2UgaXQgc2hvdWxkIGxvYWQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbXVsdGljb25maWcvY29uZmlnQS5jb25mPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL211bHRpY29uZmlnL2NvbmZpZ0IuY29uZjwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbXVsdGljb25maWcvY29uZmlnQy5jb25mPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQkJNVUxUSUNPTkZJRyA9ICJjb25maWdBIGNvbmZpZ0IgY29uZmlnQyIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1CQl9OVU1CRVJfUEFSU0VfVEhSRUFEUyc+PGZpbGVuYW1lPkJCX05VTUJFUl9QQVJTRV9USFJFQURTPC9maWxlbmFtZT46PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG51bWJlciBvZiB0aHJlYWRzIEJpdEJha2UgdXNlcyBkdXJpbmcgcGFyc2luZy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGF1bmNoIEJpdEJha2U8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgQml0QmFrZSBjb21tYW5kIGZvcm0gdG8gbGF1bmNoIHRoZQotICAgICAgICAgICAgICAgICAgICBidWlsZDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgW211bHRpY29uZmlnOjxyZXBsYWNlYWJsZT5tdWx0aWNvbmZpZ25hbWU8L3JlcGxhY2VhYmxlPjpdPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IFtbW211bHRpY29uZmlnOjxyZXBsYWNlYWJsZT5tdWx0aWNvbmZpZ25hbWU8L3JlcGxhY2VhYmxlPjpdPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+XSAuLi4gXQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgc3VwcG9ydHMgYnVpbGRpbmcgYSBtaW5pbWFsCi0gICAgICAgICAgICAgICAgICAgIGltYWdlIGZvciBjb25maWd1cmF0aW9uIEEgYWxvbmdzaWRlIGEgc3RhbmRhcmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+LCB3aGljaCB0YWtlcyBpdHMKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcm9tIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIG11bHRpY29uZmlnOmNvbmZpZ0E6Y29yZS1pbWFnZS1taW5pbWFsIGNvcmUtaW1hZ2Utc2F0bwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQVJBTExFTF9NQUtFJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+OjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIEV4dHJhIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaW4gb3JkZXIgdG8gc3BlY2lmeSBwYXJhbGxlbCBjb21waWxhdGlvbiBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFSQUxMRUxfTUFLRUlOU1QnPjxmaWxlbmFtZT5QQVJBTExFTF9NQUtFSU5TVDwvZmlsZW5hbWU+OjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIEV4dHJhIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaW4gb3JkZXIgdG8gc3BlY2lmeSBwYXJhbGxlbCBpbnN0YWxsYXRpb24gb24gdGhlCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIGJ1aWxkIGhvc3QuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBBcyBtZW50aW9uZWQsIHRoZXNlIHZhcmlhYmxlcyBhbGwgc2NhbGUgdG8gdGhlIG51bWJlciBvZiBwcm9jZXNzb3IKKyAgICAgICAgICAgIGNvcmVzIGF2YWlsYWJsZSBvbiB0aGUgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgRm9yIHNpbmdsZSBzb2NrZXQgc3lzdGVtcywgdGhpcyBhdXRvLXNjYWxpbmcgZW5zdXJlcyB0aGF0IHRoZSBidWlsZAorICAgICAgICAgICAgc3lzdGVtIGZ1bmRhbWVudGFsbHkgdGFrZXMgYWR2YW50YWdlIG9mIHBvdGVudGlhbCBwYXJhbGxlbCBvcGVyYXRpb25zCisgICAgICAgICAgICBkdXJpbmcgdGhlIGJ1aWxkIGJhc2VkIG9uIHRoZSBidWlsZCBtYWNoaW5lJ3MgY2FwYWJpbGl0aWVzLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb25maWd1cmF0aW9ucyBpbiB0aGlzIGN1cnJlbnQgcmVsZWFzZSBvZgotICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgKCZESVNUUk9fTkFNRTsgJkRJU1RSTzspIGhhcyBzb21lIGtub3duIGlzc3VlczoKKyAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgYWRkaXRpb25hbCBmYWN0b3JzIHRoYXQgY2FuIGFmZmVjdCBidWlsZCBzcGVlZDoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBObyBpbnRlci1tdWx0aS1jb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgRmlsZSBzeXN0ZW0gdHlwZToKKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgc3lzdGVtIHR5cGUgdGhhdCB0aGUgYnVpbGQgaXMgYmVpbmcgcGVyZm9ybWVkIG9uIGNhbgorICAgICAgICAgICAgICAgICAgICBhbHNvIGluZmx1ZW5jZSBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPmV4dDQ8L2ZpbGVuYW1lPiBpcyByZWNvbW1lbmRlZCBhcyBjb21wYXJlZAorICAgICAgICAgICAgICAgICAgICB0byA8ZmlsZW5hbWU+ZXh0MjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+ZXh0MzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGR1ZSB0byA8ZmlsZW5hbWU+ZXh0NDwvZmlsZW5hbWU+IGltcHJvdmVkIGZlYXR1cmVzCisgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgZXh0ZW50cy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBTaGFyZWQgU3RhdGUgKHNzdGF0ZSkgb3B0aW1pemF0aW9ucyBkbyBub3QgZXhpc3QuCi0gICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgdGhlIGJ1aWxkIHVzZXMgdGhlIHNhbWUgb2JqZWN0IHR3aWNlCi0gICAgICAgICAgICAgICAgICAgIGluLCBmb3IgZXhhbXBsZSwgdHdvIGRpZmZlcmVudAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMsIHRoZSBidWlsZAotICAgICAgICAgICAgICAgICAgICB3aWxsIGVpdGhlciBsb2FkIGZyb20gYW4gZXhpc3Rpbmcgc3N0YXRlIGNhY2hlIGF0IHRoZQotICAgICAgICAgICAgICAgICAgICBzdGFydCBvciBidWlsZCB0aGUgb2JqZWN0IHR3aWNlLgorICAgICAgICAgICAgICAgICAgICBEaXNhYmxpbmcgdGhlIHVwZGF0aW5nIG9mIGFjY2VzcyB0aW1lIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub2F0aW1lPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bm9hdGltZTwvZmlsZW5hbWU+IG1vdW50IG9wdGlvbiBwcmV2ZW50cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGZyb20gdXBkYXRpbmcgZmlsZSBhbmQgZGlyZWN0b3J5IGFjY2VzcyB0aW1lcy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIGEgbG9uZ2VyIGNvbW1pdDoKKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlICJjb21taXQ9IiBtb3VudCBvcHRpb24gaW5jcmVhc2VzIHRoZSBpbnRlcnZhbAorICAgICAgICAgICAgICAgICAgICBpbiBzZWNvbmRzIGJldHdlZW4gZGlzayBjYWNoZSB3cml0ZXMuCisgICAgICAgICAgICAgICAgICAgIENoYW5naW5nIHRoaXMgaW50ZXJ2YWwgZnJvbSB0aGUgZml2ZSBzZWNvbmQgZGVmYXVsdCB0bworICAgICAgICAgICAgICAgICAgICBzb21ldGhpbmcgbG9uZ2VyIGluY3JlYXNlcyB0aGUgcmlzayBvZiBkYXRhIGxvc3MgYnV0IGRlY3JlYXNlcworICAgICAgICAgICAgICAgICAgICB0aGUgbmVlZCB0byB3cml0ZSB0byB0aGUgZGlzaywgdGh1cyBpbmNyZWFzaW5nIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDaG9vc2luZyB0aGUgcGFja2FnaW5nIGJhY2tlbmQ6CisgICAgICAgICAgICAgICAgICAgIE9mIHRoZSBhdmFpbGFibGUgcGFja2FnaW5nIGJhY2tlbmRzLCBJUEsgaXMgdGhlIGZhc3Rlc3QuCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgc2VsZWN0aW5nIGEgc2luZ3VsYXIgcGFja2FnaW5nIGJhY2tlbmQgYWxzbworICAgICAgICAgICAgICAgICAgICBoZWxwcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+dG1wZnM8L2ZpbGVuYW1lPiBmb3IKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYXMgYSB0ZW1wb3JhcnkgZmlsZSBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoaXMgY2FuIGhlbHAgc3BlZWQgdXAgdGhlIGJ1aWxkLCB0aGUgYmVuZWZpdHMgYXJlCisgICAgICAgICAgICAgICAgICAgIGxpbWl0ZWQgZHVlIHRvIHRoZSBjb21waWxlciB1c2luZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LXBpcGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBnb2VzIHRvIHNvbWUgbGVuZ3RocyB0byBhdm9pZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3luYygpPC9maWxlbmFtZT4gY2FsbHMgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgZmlsZSBzeXN0ZW0gb24gdGhlIHByaW5jaXBsZSB0aGF0IGlmIHRoZXJlIHdhcyBhIHNpZ25pZmljYW50CisgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUsIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIGNvdWxkIGVhc2lseSBiZSByZWJ1aWx0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLXJtLXdvcmsnPjxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzczoKKyAgICAgICAgICAgICAgICAgICAgSW5oZXJpdGluZyB0aGlzIGNsYXNzIGhhcyBzaG93biB0byBzcGVlZCB1cCBidWlsZHMgZHVlIHRvCisgICAgICAgICAgICAgICAgICAgIHNpZ25pZmljYW50bHkgbG93ZXIgYW1vdW50cyBvZiBkYXRhIHN0b3JlZCBpbiB0aGUgZGF0YQorICAgICAgICAgICAgICAgICAgICBjYWNoZSBhcyB3ZWxsIGFzIG9uIGRpc2suCisgICAgICAgICAgICAgICAgICAgIEluaGVyaXRpbmcgdGhpcyBjbGFzcyBhbHNvIG1ha2VzIGNsZWFudXAgb2YKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZmFzdGVyLCBhdCB0aGUgZXhwZW5zZSBvZiBiZWluZyBlYXNpbHkgYWJsZSB0byBkaXZlIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgICAgICBGaWxlIHN5c3RlbSBtYWludGFpbmVycyBoYXZlIHJlY29tbWVuZGVkIHRoYXQgdGhlIGZhc3Rlc3Qgd2F5CisgICAgICAgICAgICAgICAgICAgIHRvIGNsZWFuIHVwIGxhcmdlIG51bWJlcnMgb2YgZmlsZXMgaXMgdG8gcmVmb3JtYXQgcGFydGl0aW9ucworICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBkZWxldGUgZmlsZXMgZHVlIHRvIHRoZSBsaW5lYXIgbmF0dXJlIG9mCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMsIG9mIGNvdXJzZSwgYXNzdW1lcyB5b3Ugc3RydWN0dXJlIHRoZSBkaXNrIHBhcnRpdGlvbnMgYW5kCisgICAgICAgICAgICAgICAgICAgIGZpbGUgc3lzdGVtcyBpbiBhIHdheSB0aGF0IHRoaXMgaXMgcHJhY3RpY2FsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgQXNpZGUgZnJvbSB0aGUgcHJldmlvdXMgbGlzdCwgeW91IHNob3VsZCBrZWVwIHNvbWUgdHJhZGUgb2ZmcyBpbgorICAgICAgICAgICAgbWluZCB0aGF0IGNhbiBoZWxwIHlvdSBzcGVlZCB1cCB0aGUgYnVpbGQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlIGl0ZW1zIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgbWlnaHQgbm90IG5lZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRXhjbHVkZSBkZWJ1ZyBzeW1ib2xzIGFuZCBvdGhlciBkZWJ1ZyBpbmZvcm1hdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBuZWVkIHRoZXNlIHN5bWJvbHMgYW5kIG90aGVyIGRlYnVnIGluZm9ybWF0aW9uLAorICAgICAgICAgICAgICAgICAgICBkaXNhYmxpbmcgdGhlIDxmaWxlbmFtZT4qLWRiZzwvZmlsZW5hbWU+IHBhY2thZ2UgZ2VuZXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBjYW4gc3BlZWQgdXAgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRpc2FibGUgdGhpcyBnZW5lcmF0aW9uIGJ5IHNldHRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQnPjxmaWxlbmFtZT5JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICIxIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEaXNhYmxlIHN0YXRpYyBsaWJyYXJ5IGdlbmVyYXRpb24gZm9yIHJlY2lwZXMgZGVyaXZlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT5saWJ0b29sPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHNob3dpbmcgaG93IHRvIGRpc2FibGUgc3RhdGljCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyBhbmQgc3RpbGwgcHJvdmlkZSBhbiBvdmVycmlkZSB0byBoYW5kbGUgZXhjZXB0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTVEFUSUNMSUJDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMiCisgICAgIFNUQVRJQ0xJQkNPTkZfc3FsaXRlMy1uYXRpdmUgPSAiIgorICAgICBFWFRSQV9PRUNPTkYgKz0gIiR7U1RBVElDTElCQ09ORn0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIHJlY2lwZXMgbmVlZCBzdGF0aWMgbGlicmFyaWVzIGluIG9yZGVyIHRvIHdvcmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdGx5IChlLmcuIDxmaWxlbmFtZT5wc2V1ZG8tbmF0aXZlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHMgPGZpbGVuYW1lPnNxbGl0ZTMtbmF0aXZlPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVycmlkZXMsIGFzIGluIHRoZSBwcmV2aW91cyBleGFtcGxlLCBhY2NvdW50IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSBraW5kcyBvZiBleGNlcHRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcGFja2FnZXMgaGF2ZSBwYWNrYWdpbmcgY29kZSB0aGF0IGFzc3VtZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbmNlIG9mIHRoZSBzdGF0aWMgbGlicmFyaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBzbywgeW91IG1pZ2h0IG5lZWQgdG8gZXhjbHVkZSB0aGVtIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtNDU0Myw2ICs2NzIzLDg0IEBACiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKKyAgICA8c2VjdGlvbiBpZD0ndXNpbmcteDMyLXBzYWJpJz4KKyAgICAgICAgPHRpdGxlPlVzaW5nIHgzMiBwc0FCSTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICB4MzIgcHJvY2Vzc29yLXNwZWNpZmljIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UKKyAgICAgICAgICAgICg8dWxpbmsgdXJsPSdodHRwczovL3NvZnR3YXJlLmludGVsLmNvbS9lbi11cy9ub2RlLzYyODk0OCc+eDMyIHBzQUJJPC91bGluaz4pCisgICAgICAgICAgICBpcyBhIG5hdGl2ZSAzMi1iaXQgcHJvY2Vzc29yLXNwZWNpZmljIEFCSSBmb3IKKyAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IDY0ICh4ODYtNjQpCisgICAgICAgICAgICBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgQW4gQUJJIGRlZmluZXMgdGhlIGNhbGxpbmcgY29udmVudGlvbnMgYmV0d2VlbiBmdW5jdGlvbnMgaW4gYQorICAgICAgICAgICAgcHJvY2Vzc2luZyBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIFRoZSBpbnRlcmZhY2UgZGV0ZXJtaW5lcyB3aGF0IHJlZ2lzdGVycyBhcmUgdXNlZCBhbmQgd2hhdCB0aGUKKyAgICAgICAgICAgIHNpemVzIGFyZSBmb3IgdmFyaW91cyBDIGRhdGEgdHlwZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNvbWUgcHJvY2Vzc2luZyBlbnZpcm9ubWVudHMgcHJlZmVyIHVzaW5nIDMyLWJpdCBhcHBsaWNhdGlvbnMgZXZlbgorICAgICAgICAgICAgd2hlbiBydW5uaW5nIG9uIEludGVsIDY0LWJpdCBwbGF0Zm9ybXMuCisgICAgICAgICAgICBDb25zaWRlciB0aGUgaTM4NiBwc0FCSSwgd2hpY2ggaXMgYSB2ZXJ5IG9sZCAzMi1iaXQgQUJJIGZvciBJbnRlbAorICAgICAgICAgICAgNjQtYml0IHBsYXRmb3Jtcy4KKyAgICAgICAgICAgIFRoZSBpMzg2IHBzQUJJIGRvZXMgbm90IHByb3ZpZGUgZWZmaWNpZW50IHVzZSBhbmQgYWNjZXNzIG9mIHRoZQorICAgICAgICAgICAgSW50ZWwgNjQtYml0IHByb2Nlc3NvciByZXNvdXJjZXMsIGxlYXZpbmcgdGhlIHN5c3RlbSB1bmRlcnV0aWxpemVkLgorICAgICAgICAgICAgTm93IGNvbnNpZGVyIHRoZSB4ODZfNjQgcHNBQkkuCisgICAgICAgICAgICBUaGlzIEFCSSBpcyBuZXdlciBhbmQgdXNlcyA2NC1iaXRzIGZvciBkYXRhIHNpemVzIGFuZCBwcm9ncmFtCisgICAgICAgICAgICBwb2ludGVycy4KKyAgICAgICAgICAgIFRoZSBleHRyYSBiaXRzIGluY3JlYXNlIHRoZSBmb290cHJpbnQgc2l6ZSBvZiB0aGUgcHJvZ3JhbXMsCisgICAgICAgICAgICBsaWJyYXJpZXMsIGFuZCBhbHNvIGluY3JlYXNlcyB0aGUgbWVtb3J5IGFuZCBmaWxlIHN5c3RlbSBzaXplCisgICAgICAgICAgICByZXF1aXJlbWVudHMuCisgICAgICAgICAgICBFeGVjdXRpbmcgdW5kZXIgdGhlIHgzMiBwc0FCSSBlbmFibGVzIHVzZXIgcHJvZ3JhbXMgdG8gdXRpbGl6ZSBDUFUKKyAgICAgICAgICAgIGFuZCBzeXN0ZW0gcmVzb3VyY2VzIG1vcmUgZWZmaWNpZW50bHkgd2hpbGUga2VlcGluZyB0aGUgbWVtb3J5CisgICAgICAgICAgICBmb290cHJpbnQgb2YgdGhlIGFwcGxpY2F0aW9ucyBsb3cuCisgICAgICAgICAgICBFeHRyYSBiaXRzIGFyZSB1c2VkIGZvciByZWdpc3RlcnMgYnV0IG5vdCBmb3IgYWRkcmVzc2luZyBtZWNoYW5pc21zLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyB0aGUgZmluYWwgc3BlY2lmaWNhdGlvbnMgb2YgeDMyIHBzQUJJCisgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIHBhY2thZ2VzIGFuZCBpbWFnZXMgaW4geDMyIHBzQUJJIGZvcm1hdCBvbgorICAgICAgICAgICAgICAgICAgICB4ODZfNjQgYXJjaGl0ZWN0dXJlIHRhcmdldHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzdWNjZXNzZnVsbHkgYnVpbGQgcmVjaXBlcyB3aXRoIHRoZSB4MzIgdG9vbGNoYWluLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIGFuZCBib290CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGltYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSUE0gUGFja2FnZSBNYW5hZ2VyIChSUE0pIHN1cHBvcnQgZXhpc3RzIGZvciB4MzIgYmluYXJpZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgbGFyZ2UgaW1hZ2VzIGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gdXNlIHRoZSB4MzIgcHNBQkksIHlvdSBuZWVkIHRvIGVkaXQgeW91cgorICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZSBhcworICAgICAgICAgICAgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTUFDSElORSA9ICJxZW11eDg2LTY0IgorICAgICBERUZBVUxUVFVORSA9ICJ4ODYtNjQteDMyIgorICAgICBiYXNlbGliID0gIiR7QGQuZ2V0VmFyKCdCQVNFX0xJQl90dW5lLScgKyAoZC5nZXRWYXIoJ0RFRkFVTFRUVU5FJywgVHJ1ZSkgXAorICAgICAgICBvciAnSU5WQUxJRCcpLCBUcnVlKSBvciAnbGliJ30iCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHNldCB1cCB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZSwgdXNlIEJpdEJha2UgdG8KKyAgICAgICAgICAgIGJ1aWxkIGFuIGltYWdlIHRoYXQgc3VwcG9ydHMgdGhlIHgzMiBwc0FCSS4KKyAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2Utc2F0bworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCiAgICAgPHNlY3Rpb24gaWQ9J2VuYWJsaW5nLWdvYmplY3QtaW50cm9zcGVjdGlvbi1zdXBwb3J0Jz4KICAgICAgICAgPHRpdGxlPkVuYWJsaW5nIEdPYmplY3QgSW50cm9zcGVjdGlvbiBTdXBwb3J0PC90aXRsZT4KIApAQCAtNDc5NSw4ICs3MDUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgU2V0IHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhURVJOQUxfVE9PTENIQUlOJz48ZmlsZW5hbWU+RVhURVJOQUxfVE9PTENIQUlOPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBTZXQgdGhlIDxmaWxlbmFtZT5FWFRFUk5BTF9UT09MQ0hBSU48L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgICAgICAgICAgICB0byB0aGUgbG9jYXRpb24gaW4gd2hpY2ggeW91IGluc3RhbGxlZCB0aGUgdG9vbGNoYWluLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTQ4NDYsNyArNzEwMyw3IEBACiAgICAgICAgICAgICBzeXN0ZW0uCiAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICBGb3IgYSBraWNrc3RhcnQgZmlsZSByZWZlcmVuY2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjb3BlbmVtYmVkZGVkLWtpY2tzdGFydC13a3MtcmVmZXJlbmNlJz5PcGVuRW1iZWRkZWQgS2lja3N0YXJ0ICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBSZWZlcmVuY2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWtpY2tzdGFydCc+T3BlbkVtYmVkZGVkIEtpY2tzdGFydCAoPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPikgUmVmZXJlbmNlPC91bGluaz4iCiAgICAgICAgICAgICAgICAgQ2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CkBAIC00ODU4LDE2ICs3MTE1LDE3IEBACiAgICAgICAgICAgICBjdXN0b21pemVkIGltYWdlcywgYW5kIGFzIHN1Y2gsIHdhcyBkZXNpZ25lZCB0byBiZQogICAgICAgICAgICAgY29tcGxldGVseSBleHRlbnNpYmxlIHRocm91Z2ggYSBwbHVnLWluIGludGVyZmFjZS4KICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN3aWMtcGx1Zy1pbnMtaW50ZXJmYWNlJz5XaWMgUGx1Zy1JbnMgSW50ZXJmYWNlPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGluZm9ybWF0aW9uCi0gICAgICAgICAgICBvbiB0aGVzZSBwbHVnLWlucy4KKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd3aWMtdXNpbmctdGhlLXdpYy1wbHVnLWlucy1pbnRlcmZhY2UnPlVzaW5nIHRoZSBXaWMgUGx1Zy1JbnMgSW50ZXJmYWNlPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIHRoZXNlIHBsdWctaW5zLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIFdpYywKICAgICAgICAgICAgIGRlc2NyaWJlcyB3aGF0IHlvdSBuZWVkIHRvIGhhdmUgaW4KICAgICAgICAgICAgIHBsYWNlIHRvIHJ1biB0aGUgdG9vbCwgcHJvdmlkZXMgaW5zdHJ1Y3Rpb24gb24gaG93IHRvIHVzZQotICAgICAgICAgICAgdGhlIFdpYyB1dGlsaXR5LCBhbmQgcHJvdmlkZXMgc2V2ZXJhbCBleGFtcGxlcy4KKyAgICAgICAgICAgIHRoZSBXaWMgdXRpbGl0eSwgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIFdpYyBwbHVnLWlucworICAgICAgICAgICAgaW50ZXJmYWNlLCBhbmQgcHJvdmlkZXMgc2V2ZXJhbCBleGFtcGxlcyB0aGF0IHNob3cgaG93IHRvIHVzZQorICAgICAgICAgICAgV2ljLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy1iYWNrZ3JvdW5kJz4KQEAgLTQ4OTksNyArNzE1Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBXaWMgaXMgYSBjb21wbGV0ZWx5IGluZGVwZW5kZW50CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFsb25lIHV0aWxpdHkgdGhhdCBpbml0aWFsbHkgcHJvdmlkZXMKICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2llci10by11c2UgYW5kIG1vcmUgZmxleGlibGUgcmVwbGFjZW1lbnRzIGZvciBhbgotICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBpbiBPRSBDb3JlJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgaW4gT0UtQ29yZSdzCiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1pbWFnZS1saXZlJz48ZmlsZW5hbWU+aW1hZ2UtbGl2ZTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCA8ZmlsZW5hbWU+bWtlZmlkaXNrLnNoPC9maWxlbmFtZT4gc2NyaXB0LgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbgpAQCAtNDk4OCw2ICs3MjQ2LDcgQEAKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgd2ljIC1oCiAgICAgICQgd2ljIC0taGVscAorICAgICAkIHdpYyBoZWxwCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgogCkBAIC00OTk3LDUxICs3MjU2LDY2IEBACiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhlbHA8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmxpc3Q8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bHM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnJtPC9maWxlbmFtZT4sIGFuZAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53cml0ZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IGhlbHAgZm9yIHRoZXNlIGNvbW1hbmRzIGFzIGZvbGxvd3Mgd2l0aAotICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5jb21tYW5kPC9yZXBsYWNlYWJsZT4gYmVpbmcgb25lIG9mIHRoZQotICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBjb21tYW5kczoKKyAgICAgICAgICAgICAgICBZb3UgY2FuIGdldCBoZWxwIGZvciBhbGwgdGhlc2UgY29tbWFuZHMgZXhjZXB0ICJoZWxwIiBieQorICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgd2ljIGhlbHAgPHJlcGxhY2VhYmxlPmNvbW1hbmQ8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGdldCBkZXRhaWxlZCBoZWxwIG9uIGEgbnVtYmVyIG9mIHRvcGljcwotICAgICAgICAgICAgICAgIGZyb20gdGhlIGhlbHAgc3lzdGVtLgotICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgb2YgPGZpbGVuYW1lPndpYyAtLWhlbHA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGRpc3BsYXlzIGEgbGlzdCBvZiBhdmFpbGFibGUgaGVscAotICAgICAgICAgICAgICAgIHRvcGljcyB1bmRlciBhICJIZWxwIHRvcGljcyIgaGVhZGluZy4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGhhdmUgdGhlIGhlbHAgc3lzdGVtIGRpc3BsYXkgdGhlIGhlbHAgdGV4dCBmb3IKLSAgICAgICAgICAgICAgICBhIGdpdmVuIHRvcGljIGJ5IHByZWZhY2luZyB0aGUgdG9waWMgd2l0aAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWMgaGVscDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgcmV0dXJucyBoZWxwIGZvciB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d3JpdGU8L2ZpbGVuYW1lPiBjb21tYW5kOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB3aWMgaGVscCA8cmVwbGFjZWFibGU+aGVscF90b3BpYzwvcmVwbGFjZWFibGU+CisgICAgICQgd2ljIGhlbHAgd3JpdGUKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCB0aGUgaW1hZ2VzIFdpYyBjcmVhdGVzIHVzaW5nCi0gICAgICAgICAgICAgICAgdGhlIGV4aXN0aW5nIGtpY2tzdGFydCBmaWxlcyB3aXRoIHRoZSBmb2xsb3dpbmcgZm9ybSBvZgotICAgICAgICAgICAgICAgIHRoZSBjb21tYW5kOgorICAgICAgICAgICAgICAgIFdpYyBzdXBwb3J0cyBoZWxwIGZvciB0aHJlZSB0b3BpY3M6CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm92ZXJ2aWV3PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBsdWdpbnM8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmtpY2tzdGFydDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IGhlbHAgZm9yIGFueSB0b3BpYyB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm06CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHdpYyBsaXN0IDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+IGhlbHAKKyAgICAgJCB3aWMgaGVscCA8cmVwbGFjZWFibGU+dG9waWM8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBGb3IgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4sIHlvdSBjYW4gcHJvdmlkZQotICAgICAgICAgICAgICAgIGFueSBvZiB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHJldHVybnMgb3ZlcnZpZXcgaGVscCBmb3IgV2ljOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgICBiZWFnbGVib25lCi0gICAgICAgbXBjODMxNWUtcmRiCi0gICAgICAgZ2VuZXJpY3g4NgotICAgICAgIGVkZ2Vyb3V0ZXIKLSAgICAgICBxZW11eDg2LWRpcmVjdGRpc2sKLSAgICAgICBkaXJlY3RkaXNrLWdwdAotICAgICAgIG1rZWZpZGlzawotICAgICAgIGRpcmVjdGRpc2sKLSAgICAgICBzeXN0ZW1kLWJvb3RkaXNrCi0gICAgICAgbWtoeWJyaWRpc28KLSAgICAgICBzZGltYWdlLWJvb3RwYXJ0Ci0gICAgICAgZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMKLSAgICAgICBkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnCisgICAgICQgd2ljIGhlbHAgb3ZlcnZpZXcKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uZSBhZGRpdGlvbmFsIGxldmVsIG9mIGhlbHAgZXhpc3RzIGZvciBXaWMuCisgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgaGVscCBvbiBpbmRpdmlkdWFsIGltYWdlcyB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saXN0PC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPmxpc3Q8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIHJldHVybiB0aGUKKyAgICAgICAgICAgICAgICBhdmFpbGFibGUgV2ljIGltYWdlcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgbGlzdCBpbWFnZXMKKyAgICAgICBtcGM4MzE1ZS1yZGIgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBNUEM4MzE1RS1SREIKKyAgICAgICBnZW5lcmljeDg2ICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBhbiBFRkkgZGlzayBpbWFnZSBmb3IgZ2VuZXJpY3g4NioKKyAgICAgICBiZWFnbGVib25lLXlvY3RvICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBCZWFnbGVib25lCisgICAgICAgZWRnZXJvdXRlciAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgRWRnZXJvdXRlcgorICAgICAgIHFlbXV4ODYtZGlyZWN0ZGlzayAgICAgICAgICAgIAkJQ3JlYXRlIGEgcWVtdSBtYWNoaW5lICdwY2Jpb3MnIGRpcmVjdCBkaXNrIGltYWdlCisgICAgICAgZGlyZWN0ZGlzay1ncHQgICAgICAgICAgICAgICAgCQlDcmVhdGUgYSAncGNiaW9zJyBkaXJlY3QgZGlzayBpbWFnZQorICAgICAgIG1rZWZpZGlzayAgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlCisgICAgICAgZGlyZWN0ZGlzayAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYSAncGNiaW9zJyBkaXJlY3QgZGlzayBpbWFnZQorICAgICAgIHN5c3RlbWQtYm9vdGRpc2sgICAgICAgICAgICAgIAkJQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIHdpdGggc3lzdGVtZC1ib290CisgICAgICAgbWtoeWJyaWRpc28gICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYSBoeWJyaWQgSVNPIGltYWdlCisgICAgICAgc2RpbWFnZS1ib290cGFydCAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSB3aXRoIGEgYm9vdCBwYXJ0aXRpb24KKyAgICAgICBkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyAgICAgICAJCUNyZWF0ZSBtdWx0aSByb290ZnMgaW1hZ2UgdXNpbmcgcm9vdGZzIHBsdWdpbgorICAgICAgIGRpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWcgIAkJQ3JlYXRlIGEgJ3BjYmlvcycgZGlyZWN0IGRpc2sgaW1hZ2Ugd2l0aCBjdXN0b20gYm9vdGxvYWRlciBjb25maWcKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgT25jZSB5b3Uga25vdyB0aGUgbGlzdCBvZiBhdmFpbGFibGUgV2ljIGltYWdlcywgeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGVscDwvZmlsZW5hbWU+IHdpdGggdGhlIGNvbW1hbmQgdG8gZ2V0IGhlbHAgb24gYQorICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgaW1hZ2UuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCByZXR1cm5zIGhlbHAgb24gdGhlCisgICAgICAgICAgICAgICAgImJlYWdsZWJvbmUteW9jdG8iIGltYWdlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgbGlzdCBiZWFnbGVib25lLXlvY3RvIGhlbHAKKworCisgICAgIENyZWF0ZXMgYSBwYXJ0aXRpb25lZCBTRCBjYXJkIGltYWdlIGZvciBCZWFnbGVib25lLgorICAgICBCb290IGZpbGVzIGFyZSBsb2NhdGVkIGluIHRoZSBmaXJzdCB2ZmF0IHBhcnRpdGlvbi4KICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTUwNTgsNyArNzMzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SYXcgTW9kZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgWW91IGV4cGxpY2l0bHkgc3BlY2lmeSBidWlsZCBhcnRpZmFjdHMgdGhyb3VnaAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICBXaWMgY29tbWFuZC1saW5lIGFyZ3VtZW50cy4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29va2VkIE1vZGU6PC9lbXBoYXNpcz4KQEAgLTUxNTMsNyArNzQyNyw3IEBACiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgUnVubmluZyBXaWMgaW4gY29va2VkIG1vZGUgbGV2ZXJhZ2VzIG9mZiBhcnRpZmFjdHMgaW4KLSAgICAgICAgICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICB0aGUgQnVpbGQgRGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkga2VybmVsIG9yCiAgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSBsb2NhdGlvbnMgYXMgcGFydCBvZiB0aGUgY29tbWFuZC4KICAgICAgICAgICAgICAgICAgICAgQWxsIHlvdSBuZWVkIHRvIHByb3ZpZGUgaXMgYSBraWNrc3RhcnQgZmlsZSBhbmQgdGhlCkBAIC01MTk1LDcgKzc0NjksNyBAQAogICAgICAgICAgICAgICAgIGNhbiB1c2UgYW4gZXhpc3RpbmcgZmlsZSBwcm92aWRlZCBieSB0aGUgV2ljIGluc3RhbGxhdGlvbi4KICAgICAgICAgICAgICAgICBBcyBzaGlwcGVkLCBraWNrc3RhcnQgZmlsZXMgY2FuIGJlIGZvdW5kIGluIHRoZQogICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgogICAgICAgICAgICAgICAgIGluIHRoZSBmb2xsb3dpbmcgdHdvIGxvY2F0aW9uczoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIHBva3kvbWV0YS15b2N0by1ic3Avd2ljCkBAIC01MjA1LDkgKzc0NzksOSBAQAogICAgICAgICAgICAgICAgIGZpbGVzOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCB3aWMgbGlzdCBpbWFnZXMKLSAgICAgICBiZWFnbGVib25lICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBCZWFnbGVib25lCiAgICAgICAgbXBjODMxNWUtcmRiICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgTVBDODMxNUUtUkRCCiAgICAgICAgZ2VuZXJpY3g4NiAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2UgZm9yIGdlbmVyaWN4ODYqCisgICAgICAgYmVhZ2xlYm9uZS15b2N0byAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgQmVhZ2xlYm9uZQogICAgICAgIGVkZ2Vyb3V0ZXIgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIEVkZ2Vyb3V0ZXIKICAgICAgICBxZW11eDg2LWRpcmVjdGRpc2sgICAgICAgICAgICAJCUNyZWF0ZSBhIHFlbXUgbWFjaGluZSAncGNiaW9zJyBkaXJlY3QgZGlzayBpbWFnZQogICAgICAgIGRpcmVjdGRpc2stZ3B0ICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGEgJ3BjYmlvcycgZGlyZWN0IGRpc2sgaW1hZ2UKQEAgLTUyNDUsNiArNzUxOSwyMDkgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCisgICAgICAgIDxzZWN0aW9uIGlkPSd3aWMtdXNpbmctdGhlLXdpYy1wbHVnLWlucy1pbnRlcmZhY2UnPgorICAgICAgICAgICAgPHRpdGxlPlVzaW5nIHRoZSBXaWMgUGx1Zy1JbnMgSW50ZXJmYWNlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBleHRlbmQgYW5kIHNwZWNpYWxpemUgV2ljIGZ1bmN0aW9uYWxpdHkgYnkgdXNpbmcKKyAgICAgICAgICAgICAgICBXaWMgcGx1Zy1pbnMuCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGV4cGxhaW5zIHRoZSBXaWMgcGx1Zy1pbiBpbnRlcmZhY2UuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFdpYyBwbHVnLWlucyBjb25zaXN0IG9mICJzb3VyY2UiIGFuZCAiaW1hZ2VyIiBwbHVnLWlucy4KKyAgICAgICAgICAgICAgICAgICAgSW1hZ2VyIHBsdWctaW5zIGFyZSBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNvdXJjZSBwbHVnLWlucyBwcm92aWRlIGEgbWVjaGFuaXNtIHRvIGN1c3RvbWl6ZSBwYXJ0aXRpb24KKyAgICAgICAgICAgICAgICBjb250ZW50IGR1cmluZyB0aGUgV2ljIGltYWdlIGdlbmVyYXRpb24gcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBzb3VyY2UgcGx1Zy1pbnMgdG8gbWFwIHZhbHVlcyB0aGF0IHlvdSBzcGVjaWZ5CisgICAgICAgICAgICAgICAgdXNpbmcgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4gY29tbWFuZHMgaW4ga2lja3N0YXJ0CisgICAgICAgICAgICAgICAgZmlsZXMgKGkuZS4gPGZpbGVuYW1lPioud2tzPC9maWxlbmFtZT4pIHRvIGEgcGx1Zy1pbgorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIHVzZWQgdG8gcG9wdWxhdGUgYSBnaXZlbiBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2UgcGx1Zy1pbnMgdGhhdCBoYXZlIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgIChlLmcuIG5hdGl2ZSB0b29scywgYm9vdGxvYWRlcnMsIGFuZCBzbyBmb3J0aCkKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBhIFdpYyBpbWFnZSwgeW91IG5lZWQgdG8gc3BlY2lmeSB0aG9zZQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XS1NfRklMRV9ERVBFTkRTJz48ZmlsZW5hbWU+V0tTX0ZJTEVfREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb3VyY2UgcGx1Zy1pbnMgYXJlIHN1YmNsYXNzZXMgZGVmaW5lZCBpbiBwbHVnLWluIGZpbGVzLgorICAgICAgICAgICAgICAgIEFzIHNoaXBwZWQsIHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHNldmVyYWwgcGx1Zy1pbgorICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBzb3VyY2UgcGx1Zy1pbiBmaWxlcyB0aGF0IHNoaXAgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZSc+aGVyZTwvdWxpbms+LgorICAgICAgICAgICAgICAgIEVhY2ggb2YgdGhlc2UgcGx1Zy1pbiBmaWxlcyBjb250YWlucyBzb3VyY2UgcGx1Zy1pbnMgdGhhdAorICAgICAgICAgICAgICAgIGFyZSBkZXNpZ25lZCB0byBwb3B1bGF0ZSBhIHNwZWNpZmljIFdpYyBpbWFnZSBwYXJ0aXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNvdXJjZSBwbHVnLWlucyBhcmUgc3ViY2xhc3NlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgZGVmaW5lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5Cb290aW1nRUZJUGx1Z2luPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzb3VyY2UgcGx1Zy1pbiBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym9vdGltZy1lZmkucHk8L2ZpbGVuYW1lPiBmaWxlIGlzIGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGNsYXNzLCB3aGljaCBpcyBmb3VuZAorICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+cGx1Z2luYmFzZS5weTwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBpbXBsZW1lbnQgc291cmNlIHBsdWctaW5zIGluIGEgbGF5ZXIgb3V0c2lkZQorICAgICAgICAgICAgICAgIG9mIHRoZSBTb3VyY2UgUmVwb3NpdG9yaWVzIChleHRlcm5hbCBsYXllcikuCisgICAgICAgICAgICAgICAgVG8gZG8gc28sIGJlIHN1cmUgdGhhdCB5b3VyIHBsdWctaW4gZmlsZXMgYXJlIGxvY2F0ZWQgaW4KKyAgICAgICAgICAgICAgICBhIGRpcmVjdG9yeSB3aG9zZSBwYXRoIGlzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHdpdGhpbiB5b3VyIGV4dGVybmFsIGxheWVyLgorICAgICAgICAgICAgICAgIFdoZW4gdGhlIHBsdWctaW4gZmlsZXMgYXJlIGxvY2F0ZWQgdGhlcmUsIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICBwbHVnLWlucyB0aGV5IGNvbnRhaW4gYXJlIG1hZGUgYXZhaWxhYmxlIHRvIFdpYy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB0aGUgV2ljIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGludm9rZSBhCisgICAgICAgICAgICAgICAgcGFydGl0aW9uLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBpdCBsb29rcyBmb3IgdGhlIHBsdWctaW4KKyAgICAgICAgICAgICAgICB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIDxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcGFyYW1ldGVyIHVzZWQgaW4gdGhlIGtpY2tzdGFydCBmaWxlIGdpdmVuIHRvIHRoYXQKKyAgICAgICAgICAgICAgICBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHRoZSBwYXJ0aXRpb24gaXMgc2V0IHVwIHVzaW5nIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICBjb21tYW5kIGluIGEga2lja3N0YXJ0IGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBwYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctcGNiaW9zIC0tb25kaXNrIHNkYSAtLWxhYmVsIGJvb3QgLS1hY3RpdmUgLS1hbGlnbiAxMDI0CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBtZXRob2RzIGRlZmluZWQgYXMgY2xhc3MgbWVtYmVycyBvZiB0aGUgbWF0Y2hpbmcKKyAgICAgICAgICAgICAgICBzb3VyY2UgcGx1Zy1pbiAoaS5lLiA8ZmlsZW5hbWU+Ym9vdGltZy1wY2Jpb3M8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPmJvb3RpbWctcGNiaW9zLnB5PC9maWxlbmFtZT4gcGx1Zy1pbiBmaWxlCisgICAgICAgICAgICAgICAgYXJlIHVzZWQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGJlIG1vcmUgY29uY3JldGUsIGhlcmUgaXMgdGhlIGNvcnJlc3BvbmRpbmcgcGx1Zy1pbgorICAgICAgICAgICAgICAgIGRlZmluaXRpb24gZnJvbSB0aGUgPGZpbGVuYW1lPmJvb3RpbWctcGNiaW9zLnB5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlIGZvciB0aGUgcHJldmlvdXMgY29tbWFuZCBhbG9uZyB3aXRoIGFuIGV4YW1wbGUKKyAgICAgICAgICAgICAgICBtZXRob2QgY2FsbGVkIGJ5IHRoZSBXaWMgaW1wbGVtZW50YXRpb24gd2hlbiBpdCBuZWVkcyB0bworICAgICAgICAgICAgICAgIHByZXBhcmUgYSBwYXJ0aXRpb24gdXNpbmcgYW4gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMKKyAgICAgICAgICAgICAgICBmdW5jdGlvbjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAuCisgICAgIGNsYXNzIEJvb3RpbWdQY2Jpb3NQbHVnaW4oU291cmNlUGx1Z2luKToKKyAgICAgICAgICIiIgorICAgICAgICAgQ3JlYXRlIE1CUiBib290IHBhcnRpdGlvbiBhbmQgaW5zdGFsbCBzeXNsaW51eCBvbiBpdC4KKyAgICAgICAgICIiIgorCisgICAgICAgICBuYW1lID0gJ2Jvb3RpbWctcGNiaW9zJworICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICBkZWYgZG9fcHJlcGFyZV9wYXJ0aXRpb24oY2xzLCBwYXJ0LCBzb3VyY2VfcGFyYW1zLCBjcmVhdG9yLCBjcl93b3JrZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lX2J1aWxkZGlyLCBib290aW1nX2Rpciwga2VybmVsX2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290ZnNfZGlyLCBuYXRpdmVfc3lzcm9vdCk6CisgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgQ2FsbGVkIHRvIGRvIHRoZSBhY3R1YWwgY29udGVudCBwb3B1bGF0aW9uIGZvciBhIHBhcnRpdGlvbiBpLmUuIGl0CisgICAgICAgICAgICAgJ3ByZXBhcmVzJyB0aGUgcGFydGl0aW9uIHRvIGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHByZXBhcmUgY29udGVudCBmb3IgbGVnYWN5IGJpb3MgYm9vdCBwYXJ0aXRpb24uCisgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIElmIGEgc3ViY2xhc3MgKHBsdWctaW4pIGl0c2VsZiBkb2VzIG5vdCBpbXBsZW1lbnQgYQorICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgZnVuY3Rpb24sIFdpYyBsb2NhdGVzIGFuZCB1c2VzIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgdmVyc2lvbiBpbiB0aGUgc3VwZXJjbGFzcy4KKyAgICAgICAgICAgICAgICBJdCBpcyBmb3IgdGhpcyByZWFzb24gdGhhdCBhbGwgc291cmNlIHBsdWctaW5zIGFyZSBkZXJpdmVkCisgICAgICAgICAgICAgICAgZnJvbSB0aGUgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGNsYXNzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGNsYXNzIGRlZmluZWQgaW4KKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnBsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPiBmaWxlIGRlZmluZXMKKyAgICAgICAgICAgICAgICBhIHNldCBvZiBtZXRob2RzIHRoYXQgc291cmNlIHBsdWctaW5zIGNhbiBpbXBsZW1lbnQgb3IKKyAgICAgICAgICAgICAgICBvdmVycmlkZS4KKyAgICAgICAgICAgICAgICBBbnkgcGx1Zy1pbnMgKHN1YmNsYXNzIG9mCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+KSB0aGF0IGRvIG5vdCBpbXBsZW1lbnQKKyAgICAgICAgICAgICAgICBhIHBhcnRpY3VsYXIgbWV0aG9kIGluaGVyaXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgIG1ldGhvZCBmcm9tIHRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPiBmaWxlIGZvciBkZXRhaWxzOgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoZSBtZXRob2RzIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRvX3ByZXBhcmVfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGVkIHRvIHBvcHVsYXRlIGEgcGFydGl0aW9uIHdpdGggYWN0dWFsIGNvbnRlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIG1ldGhvZCBwcmVwYXJlcyB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBpbWFnZSB0aGF0IGlzIGluY29ycG9yYXRlZCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZGlzayBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDYWxsZWQgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcHJlcGFyZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGUgY3VzdG9tIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIGEgcGFydGl0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBzeXNsaW51eCBvciBncnViIGNvbmZpZ3VyYXRpb24gZmlsZXMpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9faW5zdGFsbF9kaXNrKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGVkIGFmdGVyIGFsbCBwYXJ0aXRpb25zIGhhdmUgYmVlbiBwcmVwYXJlZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VtYmxlZCBpbnRvIGEgZGlzayBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHByb3ZpZGVzIGEgaG9vayB0byBhbGxvdyBmaW5hbGl6YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIGEgZGlzayBpbWFnZSAoZS5nLiB3cml0aW5nIGFuIE1CUikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19zdGFnZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWFsIGNvbnRlbnQtc3RhZ2luZyBob29rIGNhbGxlZCBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wcmVwYXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBub3JtYWxseSBlbXB0eS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlR5cGljYWxseSwgYSBwYXJ0aXRpb24ganVzdCB1c2VzIHRoZSBwYXNzZWQtaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgKGUuZy4gdGhlIHVubW9kaWZpZWQgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ib290aW1nX2RpcjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMsIHRoaW5ncyBtaWdodCBuZWVkIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBtb3JlIHRhaWxvcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY2VydGFpbiBmaWxlcyBtaWdodCBhZGRpdGlvbmFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gYmUgdGFrZW4gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJvb3RpbWdfZGlyICsgL2Jvb3Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaG9vayBhbGxvd3MgdGhvc2UgZmlsZXMgdG8gYmUgc3RhZ2VkIGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZWQgZmFzaGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nZXRfYml0YmFrZV92YXIoKTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHlvdSB0byBhY2Nlc3Mgbm9uLXN0YW5kYXJkIHZhcmlhYmxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IG1pZ2h0IHdhbnQgdG8gdXNlIGZvciB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3IuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBleHRlbmQgdGhlIHNvdXJjZSBwbHVnLWluIG1lY2hhbmlzbS4KKyAgICAgICAgICAgICAgICBUbyBhZGQgbW9yZSBob29rcywgY3JlYXRlIG1vcmUgc291cmNlIHBsdWctaW4gbWV0aG9kcworICAgICAgICAgICAgICAgIHdpdGhpbiA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gYW5kIHRoZQorICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgZGVyaXZlZCBzdWJjbGFzc2VzLgorICAgICAgICAgICAgICAgIFRoZSBjb2RlIHRoYXQgY2FsbHMgdGhlIHBsdWctaW4gbWV0aG9kcyB1c2VzIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wbHVnaW4uZ2V0X3NvdXJjZV9wbHVnaW5fbWV0aG9kcygpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byBmaW5kIHRoZSBtZXRob2Qgb3IgbWV0aG9kcyBuZWVkZWQgYnkgdGhlIGNhbGwuCisgICAgICAgICAgICAgICAgUmV0cmlldmFsIG9mIHRob3NlIG1ldGhvZHMgaXMgYWNjb21wbGlzaGVkIGJ5IGZpbGxpbmcgdXAKKyAgICAgICAgICAgICAgICBhIGRpY3Qgd2l0aCBrZXlzIHRoYXQgY29udGFpbiB0aGUgbWV0aG9kIG5hbWVzIG9mIGludGVyZXN0LgorICAgICAgICAgICAgICAgIE9uIHN1Y2Nlc3MsIHRoZXNlIHdpbGwgYmUgZmlsbGVkIGluIHdpdGggdGhlIGFjdHVhbAorICAgICAgICAgICAgICAgIG1ldGhvZHMuCisgICAgICAgICAgICAgICAgU2VlIHRoZSBXaWMgaW1wbGVtZW50YXRpb24gZm9yIGV4YW1wbGVzIGFuZCBkZXRhaWxzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKICAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy11c2FnZS1leGFtcGxlcyc+CiAgICAgICAgICAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgogCkBAIC01MjcxLDE2ICs3NzQ4LDE2IEBACiAgICAgICAgICAgICAgICAuCiAgICAgICAgICAgICAgICAuCiAgICAgIElORk86IFRoZSBuZXcgaW1hZ2UocykgY2FuIGJlIGZvdW5kIGhlcmU6Ci0gICAgICAgLi9ta2VmaWRpc2stMjAxNzEwMDYxNDA5LXNkYS5kaXJlY3QKKyAgICAgICAuL21rZWZpZGlzay0yMDE4MDQxOTEwMTctc2RhLmRpcmVjdAogCiAgICAgIFRoZSBmb2xsb3dpbmcgYnVpbGQgYXJ0aWZhY3RzIHdlcmUgdXNlZCB0byBjcmVhdGUgdGhlIGltYWdlKHMpOgotICAgICAgIFJPT1RGU19ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wLndpYy5yNGhrZHMwYi9yb290ZnNfY29weQotICAgICAgIEJPT1RJTUdfRElSOiAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL3NoYXJlCi0gICAgICAgS0VSTkVMX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2Ci0gICAgICAgTkFUSVZFX1NZU1JPT1Q6ICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvd2ljLXRvb2xzLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC1uYXRpdmUKKyAgICAgICBST09URlNfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wLWdsaWJjL3dvcmsvcWVtdXg4Ni1vZS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3Jvb3RmcworICAgICAgIEJPT1RJTUdfRElSOiAgICAgICAgICAgICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAtZ2xpYmMvd29yay9xZW11eDg2LW9lLWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL3NoYXJlCisgICAgICAgS0VSTkVMX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC1nbGliYy9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYKKyAgICAgICBOQVRJVkVfU1lTUk9PVDogICAgICAgICAgICAgICAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wLWdsaWJjL3dvcmsvaTU4Ni1vZS1saW51eC93aWMtdG9vbHMvMS4wLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZQogCiAgICAgIElORk86IFRoZSBpbWFnZShzKSB3ZXJlIGNyZWF0ZWQgdXNpbmcgT0Uga2lja3N0YXJ0IGZpbGU6Ci0gICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9ta2VmaWRpc2sud2tzCisgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL29wZW5lbWJlZGRlZC1jb3JlL3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL21rZWZpZGlzay53a3MKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBzaG93cyB0aGUgZWFzaWVzdCB3YXkgdG8gY3JlYXRlCiAgICAgICAgICAgICAgICAgICAgIGFuIGltYWdlIGJ5IHJ1bm5pbmcgaW4gY29va2VkIG1vZGUgYW5kIHN1cHBseWluZwpAQCAtNTMwNSwxNyArNzc4MiwxOCBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIENvbnRpbnVpbmcgd2l0aCB0aGUgZXhhbXBsZSwgeW91IGNhbiBub3cgd3JpdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIGltYWdlIHRvIGEgVVNCIHN0aWNrLCBvciB3aGF0ZXZlciBtZWRpYSBmb3Igd2hpY2ggeW91Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWx0IHlvdXIgaW1hZ2UsIGFuZCBib290IGZyb20gdGhlIG1lZGlhLgorICAgICAgICAgICAgICAgICAgICBpbWFnZSBmcm9tIHRoZSBCdWlsZCBEaXJlY3Rvcnkgb250byBhIFVTQiBzdGljaywgb3IKKyAgICAgICAgICAgICAgICAgICAgd2hhdGV2ZXIgbWVkaWEgZm9yIHdoaWNoIHlvdSBidWlsdCB5b3VyIGltYWdlLCBhbmQgYm9vdAorICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBtZWRpYS4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB3cml0ZSB0aGUgaW1hZ2UgYnkgdXNpbmcKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gb3IKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRkPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBvZS1ydW4tbmF0aXZlIGJtYXB0b29sIGNvcHkgYnVpbGQvbWtlZmlkaXNrLTIwMTcxMDA2MTQwOS1zZGEuZGlyZWN0IC9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+CisgICAgICQgb2UtcnVuLW5hdGl2ZSBibWFwdG9vbCBjb3B5IG1rZWZpZGlzay0yMDE4MDQxOTEwMTctc2RhLmRpcmVjdCAvZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIG9yCiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGRkIGlmPWJ1aWxkL21rZWZpZGlzay0yMDE3MTAwNjE0MDktc2RhLmRpcmVjdCBvZj0vZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgorICAgICAkIHN1ZG8gZGQgaWY9bWtlZmlkaXNrLTIwMTgwNDE5MTAxNy1zZGEuZGlyZWN0IG9mPS9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQpAQCAtNTM3NSw4ICs3ODUzLDggQEAKICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCB0aGVuIGJ5IGNoYW5naW5nIHRoZSBsaW5lcyB0aGF0IHNwZWNpZnkKICAgICAgICAgICAgICAgICAgICAgdGhlIHRhcmdldCBkaXNrIGZyb20gd2hpY2ggdG8gYm9vdC4KICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNwIC9ob21lL3Njb3R0cmlmL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvZGlyZWN0ZGlzay1ncHQud2tzIFwKLSAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2RpcmVjdGRpc2tzZGItZ3B0LndrcworICAgICAkIGNwIC9ob21lL3N0ZXBoYW5vL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvZGlyZWN0ZGlzay1ncHQud2tzIFwKKyAgICAgICAgICAvaG9tZS9zdGVwaGFuby9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2RpcmVjdGRpc2tzZGItZ3B0LndrcwogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIE5leHQsIHRoZSBleGFtcGxlIG1vZGlmaWVzIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlza3NkYi1ncHQud2tzPC9maWxlbmFtZT4gZmlsZSBhbmQKQEAgLTU0MTIsMTMgKzc4OTAsMTMgQEAKICAgICAgICAuL2RpcmVjdGRpc2tzZGItZ3B0LTIwMTcxMDA5MDkzOC1zZGIuZGlyZWN0CiAKICAgICAgVGhlIGZvbGxvd2luZyBidWlsZCBhcnRpZmFjdHMgd2VyZSB1c2VkIHRvIGNyZWF0ZSB0aGUgaW1hZ2Uocyk6Ci0gICAgICAgUk9PVEZTX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAud2ljLmhrM3dsNnpuL3Jvb3Rmc19jb3B5Ci0gICAgICAgQk9PVElNR19ESVI6ICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3Ivc2hhcmUKLSAgICAgICBLRVJORUxfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYKLSAgICAgICBOQVRJVkVfU1lTUk9PVDogICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93aWMtdG9vbHMvMS4wLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZQorICAgICAgIFJPT1RGU19ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAtZ2xpYmMvd29yay9xZW11eDg2LW9lLWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcm9vdGZzCisgICAgICAgQk9PVElNR19ESVI6ICAgICAgICAgICAgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC1nbGliYy93b3JrL3FlbXV4ODYtb2UtbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3Ivc2hhcmUKKyAgICAgICBLRVJORUxfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wLWdsaWJjL2RlcGxveS9pbWFnZXMvcWVtdXg4NgorICAgICAgIE5BVElWRV9TWVNST09UOiAgICAgICAgICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAtZ2xpYmMvd29yay9pNTg2LW9lLWxpbnV4L3dpYy10b29scy8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlCiAKICAgICAgSU5GTzogVGhlIGltYWdlKHMpIHdlcmUgY3JlYXRlZCB1c2luZyBPRSBraWNrc3RhcnQgZmlsZToKLSAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2RpcmVjdGRpc2tzZGItZ3B0LndrcworICAgICAgIC9ob21lL3N0ZXBoYW5vL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvZGlyZWN0ZGlza3NkYi1ncHQud2tzCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgQ29udGludWluZyB3aXRoIHRoZSBleGFtcGxlLCB5b3UgY2FuIG5vdyBkaXJlY3RseQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGQ8L2ZpbGVuYW1lPiB0aGUgaW1hZ2UgdG8gYSBVU0Igc3RpY2ssIG9yCkBAIC01NDQ1LDI1ICs3OTIzLDI1IEBACiAgICAgICAgICAgICAgICAgICAgIHNvbWV3aGVyZSBvdGhlciB0aGFuIHRoZSBkZWZhdWx0IG91dHB1dCBkaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHRoZSBjdXJyZW50IGRpcmVjdG9yeToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHdpYyBjcmVhdGUgL2hvbWUvc2NvdHRyaWYvbXlfeW9jdG8vdGVzdC53a3MgLW8gL2hvbWUvc2NvdHRyaWYvdGVzdHdpYyBcCi0gICAgICAgICAgLS1yb290ZnMtZGlyIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcm9vdGZzIFwKLSAgICAgICAgICAtLWJvb3RpbWctZGlyIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL3NoYXJlIFwKLSAgICAgICAgICAtLWtlcm5lbC1kaXIgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2IFwKLSAgICAgICAgICAtLW5hdGl2ZS1zeXNyb290IC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dpYy10b29scy8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlCisgICAgICQgd2ljIGNyZWF0ZSAvaG9tZS9zdGVwaGFuby9teV95b2N0by90ZXN0LndrcyAtbyAvaG9tZS9zdGVwaGFuby90ZXN0d2ljIFwKKyAgICAgICAgICAtLXJvb3Rmcy1kaXIgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3Jvb3RmcyBcCisgICAgICAgICAgLS1ib290aW1nLWRpciAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL3NoYXJlIFwKKyAgICAgICAgICAtLWtlcm5lbC1kaXIgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYgXAorICAgICAgICAgIC0tbmF0aXZlLXN5c3Jvb3QgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93aWMtdG9vbHMvMS4wLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZQogCiAgICAgIElORk86IENyZWF0aW5nIGltYWdlKHMpLi4uCiAKICAgICAgSU5GTzogVGhlIG5ldyBpbWFnZShzKSBjYW4gYmUgZm91bmQgaGVyZToKLSAgICAgICAvaG9tZS9zY290dHJpZi90ZXN0d2ljL3Rlc3QtMjAxNzEwMDkxNDQ1LXNkYi5kaXJlY3QKKyAgICAgICAvaG9tZS9zdGVwaGFuby90ZXN0d2ljL3Rlc3QtMjAxNzEwMDkxNDQ1LXNkYi5kaXJlY3QKIAogICAgICBUaGUgZm9sbG93aW5nIGJ1aWxkIGFydGlmYWN0cyB3ZXJlIHVzZWQgdG8gY3JlYXRlIHRoZSBpbWFnZShzKToKLSAgICAgICBST09URlNfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi90ZXN0d2ljL3RtcC53aWMueDR3aXBibWIvcm9vdGZzX2NvcHkKLSAgICAgICBCT09USU1HX0RJUjogICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9zaGFyZQotICAgICAgIEtFUk5FTF9ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4NgotICAgICAgIE5BVElWRV9TWVNST09UOiAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dpYy10b29scy8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlCisgICAgICAgUk9PVEZTX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC1nbGliYy93b3JrL3FlbXV4ODYtb2UtbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yb290ZnMKKyAgICAgICBCT09USU1HX0RJUjogICAgICAgICAgICAgICAgICAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wLWdsaWJjL3dvcmsvcWVtdXg4Ni1vZS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9zaGFyZQorICAgICAgIEtFUk5FTF9ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAtZ2xpYmMvZGVwbG95L2ltYWdlcy9xZW11eDg2CisgICAgICAgTkFUSVZFX1NZU1JPT1Q6ICAgICAgICAgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC1nbGliYy93b3JrL2k1ODYtb2UtbGludXgvd2ljLXRvb2xzLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC1uYXRpdmUKIAogICAgICBJTkZPOiBUaGUgaW1hZ2Uocykgd2VyZSBjcmVhdGVkIHVzaW5nIE9FIGtpY2tzdGFydCBmaWxlOgotICAgICAgIC9ob21lL3Njb3R0cmlmL215X3lvY3RvL3Rlc3Qud2tzCisgICAgICAgL2hvbWUvc3RlcGhhbm8vbXlfeW9jdG8vdGVzdC53a3MKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLAogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CkBAIC01NjA4LDIyMiArODA4Niw5MSBAQAogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCi0gICAgPHNlY3Rpb24gaWQ9J2J1aWxkaW5nLWFuLWluaXRyYW1mcy1pbWFnZSc+Ci0gICAgICAgIDx0aXRsZT5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFuIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0gKGluaXRyYW1mcykgaW1hZ2UgcHJvdmlkZXMgYSB0ZW1wb3JhcnkKLSAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB1c2VkIGZvciBlYXJseSBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gKGUuZy4KLSAgICAgICAgICAgIGxvYWRpbmcgb2YgbW9kdWxlcyBuZWVkZWQgdG8gbG9jYXRlIGFuZCBtb3VudCB0aGUgInJlYWwiIHJvb3QKLSAgICAgICAgICAgIGZpbGVzeXN0ZW0pLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVGhlIGluaXRyYW1mcyBpbWFnZSBpcyB0aGUgc3VjY2Vzc29yIG9mIGluaXRpYWwgUkFNIGRpc2sKLSAgICAgICAgICAgICAgICAoaW5pdHJkKS4KLSAgICAgICAgICAgICAgICBJdCBpcyBhICJjb3B5IGluIGFuZCBvdXQiIChjcGlvKSBhcmNoaXZlIG9mIHRoZSBpbml0aWFsCi0gICAgICAgICAgICAgICAgZmlsZXN5c3RlbSB0aGF0IGdldHMgbG9hZGVkIGludG8gbWVtb3J5IGR1cmluZyB0aGUgTGludXgKLSAgICAgICAgICAgICAgICBzdGFydHVwIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgQmVjYXVzZSBMaW51eCB1c2VzIHRoZSBjb250ZW50cyBvZiB0aGUgYXJjaGl2ZSBkdXJpbmcKLSAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiwgdGhlIGluaXRyYW1mcyBpbWFnZSBuZWVkcyB0byBjb250YWluIGFsbCBvZiB0aGUKLSAgICAgICAgICAgICAgICBkZXZpY2UgZHJpdmVycyBhbmQgdG9vbHMgbmVlZGVkIHRvIG1vdW50IHRoZSBmaW5hbCByb290Ci0gICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNyZWF0ZSBhbiBpbml0cmFtZnMgaW1hZ2U6Ci0gICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSBpbml0cmFtZnMgSW1hZ2UgUmVjaXBlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVmZXJlbmNlIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHJlY2lwZSBmb3VuZCBpbiB0aGUgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1jb3JlPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXMgYW4gZXhhbXBsZSBmcm9tIHdoaWNoIHRvIHdvcmsuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRlY2lkZSBpZiBZb3UgTmVlZCB0byBCdW5kbGUgdGhlIGluaXRyYW1mcyBJbWFnZQotICAgICAgICAgICAgICAgICAgICBJbnRvIHRoZSBLZXJuZWwgSW1hZ2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGluaXRyYW1mcyBpbWFnZSB0aGF0IGlzIGJ1aWx0IHRvIGJlCi0gICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgaW4gd2l0aCB0aGUga2VybmVsIGltYWdlLCBzZXQgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTklUUkFNRlNfSU1BR0VfQlVORExFJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFX0JVTkRMRTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHNldCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRSc+PGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIHJlY2lwZSB0aGF0IGJ1aWxkcyB0aGUga2VybmVsIGltYWdlLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvIGJ1bmRsZSB0aGUgaW5pdHJhbWZzCi0gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB3aXRoIHRoZSBrZXJuZWwgaW1hZ2UgdG8gYXZvaWQgY2lyY3VsYXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZSBrZXJuZWwgcmVjaXBlIGFuZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGluaXRyYW1mcyByZWNpcGUgc2hvdWxkIHRoZSBpbml0cmFtZnMgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgU2V0dGluZyB0aGUgPGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRV9CVU5ETEU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBmbGFnIGNhdXNlcyB0aGUgaW5pdHJhbWZzIGltYWdlIHRvIGJlIHVucGFja2VkCi0gICAgICAgICAgICAgICAgICAgIGludG8gdGhlIDxmaWxlbmFtZT4ke0J9L3Vzci88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIFRoZSB1bnBhY2tlZCBpbml0cmFtZnMgaW1hZ2UgaXMgdGhlbiBwYXNzZWQgdG8gdGhlIGtlcm5lbCdzCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09ORklHX0lOSVRSQU1GU19TT1VSQ0UnPjxmaWxlbmFtZT5DT05GSUdfSU5JVFJBTUZTX1NPVVJDRTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIGFsbG93aW5nIHRoZSBpbml0cmFtZnMgaW1hZ2UgdG8gYmUgYnVpbHQgaW50bwotICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsIG5vcm1hbGx5LgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBjaG9vc2UgdG8gbm90IGJ1bmRsZSB0aGUgaW5pdHJhbWZzIGltYWdlIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgaW1hZ2UsIHlvdSBhcmUgZXNzZW50aWFsbHkgdXNpbmcgYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luaXRyZCc+SW5pdGlhbCBSQU0gRGlzayAoaW5pdHJkKTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRpbmcgYW4gaW5pdHJkIGlzIGhhbmRsZWQgcHJpbWFyaWx5IHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJEX0lNQUdFJz48ZmlsZW5hbWU+SU5JVFJEX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTklUUkRfTElWRTwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTklUUkRfSU1BR0VfTElWRTwvZmlsZW5hbWU+IHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcyc+PGZpbGVuYW1lPmltYWdlLWxpdmUuYmJjbGFzczwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci08IS0tCi1Tb21lIG5vdGVzIGZyb20gQ2FsOgotCi0gICAgQSBub24tYnVuZGxlZCBpbml0cmFtZnMgaXMgZXNzZW50aWFsbHkgYW4gaW5pdHJkLCB3aGljaCBJIGFtIGRpc2NvdmVyaW5nCi0gICAgdG8gYmUgcmF0aGVyIGNvbmZ1c2luZ2x5IHN1cHBvcnRlZCBpbiBPRSBhdCB0aGUgbW9tZW50LgotCi0gICAgSXRzIHByaW1hcmlseSBoYW5kbGVkIHRocm91Z2ggSU5JVFJEX0lNQUdFKF9MSVZFL19WTSkgYW5kIElOSVRSRChfTElWRS9fVk0pCi0gICAgdmFyaWFibGVzLiBJTklUUkRfSU1BR0UqIGlzIHRoZSBwcmltYXJ5IGltYWdlIHRhcmdldCwgd2hpY2ggZ2V0cyBhZGRlZCB0bwotICAgIElOSVRSRCosIHdoaWNoIGlzIGEgbGlzdCBvZiBjcGlvIGZpbGVzeXN0ZW1zLiBZb3UgY2FuIGFkZCBtb3JlIGNwaW8KLSAgICBmaWxlc3lzdGVtcyB0byB0aGUgSU5JVFJEIHZhcmlhYmxlIHRvIGFkZCBtb3JlIHRvIHRoZSBpbml0cmQuIEZvcgotICAgIGluc3RhbmNlLCBtZXRhLWludGVsIGFkZHMgaW50ZWwtbWljcm9jb2RlIHZpYSB0aGUgZm9sbG93aW5nOgotCi0gICAgICAgIElOSVRSRF9MSVZFX3ByZXBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAnaW50ZWwtdWNvZGUnLCAnJHtERVBMT1lfRElSX0lNQUdFfS9taWNyb2NvZGUuY3BpbyAnLCAnJywgZCl9IgotCi0gICAgSWYgJ2ludGVsLXVjb2RlJyBpcyBpbiBNQUNISU5FX0ZFQVRVUkVTLCB0aGlzIHJlc29sdmVzIHRvOgotCi0gICAgICAgIElOSVRSRF9MSVZFX3ByZXBlbmQgPSAiJHtERVBMT1lfRElSX0lNQUdFfS9taWNyb2NvZGUuY3BpbyAiCi0KLSAgICBVbmZvcnR1bmF0ZWx5IHlvdSBuZWVkIHRoZSBmdWxsIHBhdGgsIGFuZCBpdHMgdXAgdG8geW91IHRvIHNvcnQgb3V0Ci0gICAgZGVwZW5kZW5jaWVzIGFzIHdlbGwuIEZvciBpbnN0YW5jZSwgd2UgaGF2ZSB0aGUgZm9sbG93aW5nOgotCi0gICAgICAgIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdpbnRlbC11Y29kZScsICcgaW50ZWwtbWljcm9jb2RlJywgJycsIGQpfSIKLQotICAgIHdoaWNoIHJlc29sdmVzIHRvOgotCi0gICAgICAgIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTX2FwcGVuZCA9ICJpbnRlbC1taWNyb2NvZGUiCi0KLSAgICBIb3dldmVyLCB0aGUgYWJvdmUgaXMgb25seSB0cnVlIHdpdGggdGhlICJsaXZlIiBJTUFHRV9GU1RZUEUuIFdpYyBpcwotICAgIGFub3RoZXIgYmVhc3QgZW50aXJlbHksIHdpdGggY3VycmVudCB3aWMga2lja3N0YXJ0IGZpbGVzIG5vdCBzdXBwb3J0aW5nCi0gICAgaW5pdHJkcywgYW5kIG9ubHkgcGFydGlhbCBzdXBwb3J0IGluIHRoZSBzb3VyY2UgcGx1Z2lucy4gVGhhdCBiZWluZyBzYWlkLAotICAgIEkga25vdyB0aGUgZ2VuZXJpYyBib290ZnMgd29yayBFZCBpcyB3b3JraW5nIG9uIHdpbGwgaGVscCBpbW1lbnNlbHkgaW4gdGhpcwotICAgIGFzcGVjdC4gSGUgb3IgU2F1bCBjYW4gcHJvdmlkZSBtb3JlIGRldGFpbHMgaGVyZS4KLQotICAgIEFueWhvdywgaXRzIHJhdGhlciBmcmFjdHVyZWQgYW5kIGNvbmZ1c2luZyBhbmQgY291bGQgcHJvYmFibHkgdXNlIGEKLSAgICByZXdvcmsgaG9uZXN0bHkuIEkgZG9uJ3Qga25vdyBob3cgZmVhc2libGUgaXQgaXMgdG8gZG9jdW1lbnQgYWxsIHRoZQotICAgIGRldGFpbHMgYW5kIGNvcm5lciBjYXNlcyBvZiB0aGlzIGFyZWEuCi0tLT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IEFkZCBJdGVtcyB0byB0aGUgaW5pdHJhbWZzIEltYWdlCi0gICAgICAgICAgICAgICAgICAgIFRocm91Z2ggdGhlIGluaXRyYW1mcyBJbWFnZSBSZWNpcGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFkZCBpdGVtcyB0byB0aGUgaW5pdHJhbWZzIGltYWdlIGJ5IHdheSBvZiBpdHMKLSAgICAgICAgICAgICAgICAgICAgcmVjaXBlLCB5b3Ugc2hvdWxkIHVzZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9JTlNUQUxMJz48ZmlsZW5hbWU+UEFDS0FHRV9JTlNUQUxMPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9JTlNUQUxMPC9maWxlbmFtZT4gZ2l2ZXMgbW9yZSBkaXJlY3QKLSAgICAgICAgICAgICAgICAgICAgY29udHJvbCBvZiB3aGF0IGlzIGFkZGVkIHRvIHRoZSBpbWFnZSBhcyBjb21wYXJlZCB0bwotICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdHMgeW91IG1pZ2h0IG5vdCBuZWNlc3NhcmlseSB3YW50IHRoYXQgYXJlCi0gICAgICAgICAgICAgICAgICAgIHNldCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtY29yZS1pbWFnZSc+PGZpbGVuYW1lPmNvcmUtaW1hZ2U8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGNsYXNzZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBLZXJuZWwgSW1hZ2UgYW5kIHRoZSBpbml0cmFtZnMKLSAgICAgICAgICAgICAgICAgICAgSW1hZ2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQnVpbGQgeW91ciBrZXJuZWwgaW1hZ2UgdXNpbmcgQml0QmFrZS4KLSAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgaW5pdHJhbWZzIGltYWdlIHJlY2lwZSBpcyBhIGRlcGVuZGVuY3kgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSwgdGhlIGluaXRyYW1mcyBpbWFnZSBpcyBidWlsdCBhcyB3ZWxsIGFuZAotICAgICAgICAgICAgICAgICAgICBidW5kbGVkIHdpdGggdGhlIGtlcm5lbCBpbWFnZSBpZiB5b3UgdXNlZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRV9CVU5ETEUnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBkZXNjcmliZWQgZWFybGllci4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCiAgICAgPHNlY3Rpb24gaWQ9J2ZsYXNoaW5nLWltYWdlcy11c2luZy1ibWFwdG9vbCc+CiAgICAgICAgIDx0aXRsZT5GbGFzaGluZyBJbWFnZXMgVXNpbmcgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQW4gZWFzeSB3YXkgdG8gZmxhc2ggYW4gaW1hZ2UgdG8gYSBib290YWJsZSBkZXZpY2UgaXMgdG8gdXNlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgaW50ZWdyYXRlZCBpbnRvIHRoZQotICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgIEEgZmFzdCBhbmQgZWFzeSB3YXkgdG8gZmxhc2ggYW4gaW1hZ2UgdG8gYSBib290YWJsZSBkZXZpY2UKKyAgICAgICAgICAgIGlzIHRvIHVzZSBCbWFwdG9vbCwgd2hpY2ggaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgIEJtYXB0b29sIGlzIGEgZ2VuZXJpYyB0b29sIHRoYXQgY3JlYXRlcyBhIGZpbGUncyBibG9jayBtYXAgKGJtYXApCisgICAgICAgICAgICBhbmQgdGhlbiB1c2VzIHRoYXQgbWFwIHRvIGNvcHkgdGhlIGZpbGUuCisgICAgICAgICAgICBBcyBjb21wYXJlZCB0byB0cmFkaXRpb25hbCB0b29scyBzdWNoIGFzIGRkIG9yIGNwLCBCbWFwdG9vbAorICAgICAgICAgICAgY2FuIGNvcHkgKG9yIGZsYXNoKSBsYXJnZSBmaWxlcyBsaWtlIHJhdyBzeXN0ZW0gaW1hZ2UgZmlsZXMKKyAgICAgICAgICAgIG11Y2ggZmFzdGVyLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIFVidW50dSBvciBEZWJpYW4gZGlzdHJpYnV0aW9ucywgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gaW5zdGFsbCB0aGUgPGZpbGVuYW1lPmJtYXAtdG9vbHM8L2ZpbGVuYW1lPiBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQgYW5kIHRoZW4gdXNlIHRoZSB0b29sCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IHNwZWNpZnlpbmcgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBldmVuIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByb290IGFjY291bnQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgYm1hcC10b29scworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdW5hYmxlIHRvIGluc3RhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcC10b29sczwvZmlsZW5hbWU+IHBhY2thZ2UsIHlvdSB3aWxsCisgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGJ1aWxkIEJtYXB0b29sIGJlZm9yZSB1c2luZyBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBibWFwLXRvb2xzLW5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEZvbGxvd2luZywgaXMgYW4gZXhhbXBsZSB0aGF0IHNob3dzIGhvdyB0byBmbGFzaCBhIFdpYyBpbWFnZS4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+IHRvIGZsYXNoIGFueQotICAgICAgICAgICAgICAgIHR5cGUgb2YgaW1hZ2UuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICBVc2UgdGhlc2Ugc3RlcHMgdG8gZmxhc2ggYW4gaW1hZ2UgdXNpbmcKLSAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVW5sZXNzIHlvdSBhcmUgYWJsZSB0byBpbnN0YWxsIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwLXRvb2xzPC9maWxlbmFtZT4gcGFja2FnZSBhcyBtZW50aW9uZWQgaW4gdGhlIG5vdGUKLSAgICAgICAgICAgICAgICBpbiB0aGUgc2Vjb25kIGJ1bGxldCBvZiBzdGVwIDMgZnVydGhlciBkb3duLCB5b3Ugd2lsbCBuZWVkIHRvIGJ1aWxkCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gYmVmb3JlIHVzaW5nIGl0LgotICAgICAgICAgICAgICAgIEJ1aWxkIHRoZSB0b29sIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBibWFwLXRvb2xzLW5hdGl2ZQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIFJlYWxpemUgdGhhdCB3aGlsZSB0aGlzIGV4YW1wbGUgdXNlcyBhIFdpYyBpbWFnZSwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgIEJtYXB0b29sIHRvIGZsYXNoIGFueSB0eXBlIG9mIGltYWdlLgorICAgICAgICAgICAgVXNlIHRoZXNlIHN0ZXBzIHRvIGZsYXNoIGFuIGltYWdlIHVzaW5nIEJtYXB0b29sOgogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVwZGF0ZSB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBGaWxlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXBkYXRlIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGhhdmUgdGhlIGZvbGxvd2luZyBzZXQgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgYmVmb3JlIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIHlvdXIgaW1hZ2U6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgSU1BR0VfRlNUWVBFUyArPSAid2ljIHdpYy5ibWFwIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdldCBZb3VyIEltYWdlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEVpdGhlciBoYXZlIHlvdXIgaW1hZ2UgcmVhZHkgKHByZS1idWlsdCkgb3IgdGFrZSB0aGUgc3RlcAotICAgICAgICAgICAgICAgICAgICBidWlsZCB0aGUgaW1hZ2U6CisgICAgICAgICAgICAgICAgICAgIEVpdGhlciBoYXZlIHlvdXIgaW1hZ2UgcmVhZHkgKHByZS1idWlsdCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHNldHRpbmcgcHJldmlvdXNseSBtZW50aW9uZWQpIG9yIHRha2UgdGhlIHN0ZXAgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZsYXNoIHRoZSBEZXZpY2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRmxhc2ggdGhlIGRldmljZSB3aXRoIHRoZSBpbWFnZSBieSB1c2luZwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiBkZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1bGFyCi0gICAgICAgICAgICAgICAgICAgIHNldHVwOgorICAgICAgICAgICAgICAgICAgICBGbGFzaCB0aGUgZGV2aWNlIHdpdGggdGhlIGltYWdlIGJ5IHVzaW5nIEJtYXB0b29sCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB5b3VyIHBhcnRpY3VsYXIgc2V0dXAuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYXNzdW1lIHRoZSBpbWFnZSByZXNpZGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkncyA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhcmVhOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGUgbWVkaWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlIHRoaXMgY29tbWFuZCBmb3JtOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGUgbWVkaWEsIHVzZSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBvZS1ydW4tbmF0aXZlIGJtYXAtdG9vbHMtbmF0aXZlIGJtYXB0b29sIGNvcHkgLi90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0LWNvcmUtaW1hZ2UtbWluaW1hbC08cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LndpYyAvZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgorICAgICAkIG9lLXJ1bi1uYXRpdmUgYm1hcC10b29scy1uYXRpdmUgYm1hcHRvb2wgY29weSA8cmVwbGFjZWFibGU+YnVpbGQtZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT4vdG1wL2RlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPi53aWMgL2Rldi9zZDxyZXBsYWNlYWJsZT5YPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBoYXZlIHdyaXRlIGFjY2VzcyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtZWRpYSwgdXNlIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoZSBtZWRpYSwgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBwZXJtaXNzaW9ucyBmaXJzdCBhbmQgdGhlbiB1c2UgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGZvcm06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHN1ZG8gY2htb2QgNjY2IC9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+Ci0gICAgICQgb2UtcnVuLW5hdGl2ZSBibWFwLXRvb2xzLW5hdGl2ZSBibWFwdG9vbCBjb3B5IC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC1jb3JlLWltYWdlLW1pbmltYWwtPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi53aWMgL2Rldi9zZDxyZXBsYWNlYWJsZT5YPC9yZXBsYWNlYWJsZT4KKyAgICAgJCBvZS1ydW4tbmF0aXZlIGJtYXAtdG9vbHMtbmF0aXZlIGJtYXB0b29sIGNvcHkgPHJlcGxhY2VhYmxlPmJ1aWxkLWRpcmVjdG9yeTwvcmVwbGFjZWFibGU+L3RtcC9kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4ud2ljIC9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIFVidW50dSBvciBEZWJpYW4gZGlzdHJpYnV0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBpbnN0YWxsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcC10b29sczwvZmlsZW5hbWU+IHBhY2thZ2UgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kIGFuZCB0aGVuIHVzZSB0aGUgdG9vbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IHNwZWNpZnlpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBldmVuIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QgYWNjb3VudDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIGJtYXAtdG9vbHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtNTg1Miw3ICs4MTk5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnkgQnJ1Y2UgU2NobmVpZXIKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9J2h0dHA6Ly9pbnRlcm5ldGNlbnN1czIwMTIuYml0YnVja2V0Lm9yZy9wYXBlci5odG1sJz5JbnRlcm5ldCBDZW5zdXMgMjAxMjwvdWxpbms+IjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwOi8vY2Vuc3VzMjAxMi5zb3VyY2Vmb3JnZS5uZXQvcGFwZXIuaHRtbCc+SW50ZXJuZXQgQ2Vuc3VzIDIwMTI8L3VsaW5rPiI8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBieSBDYXJuYSBCb3RuZXQ8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cDovL2VsaW51eC5vcmcvaW1hZ2VzLzYvNmYvU2VjdXJpdHktaXNzdWVzLnBkZic+U2VjdXJpdHkgSXNzdWVzIGZvciBFbWJlZGRlZCBEZXZpY2VzPC91bGluaz4iPC9lbXBoYXNpcz4KQEAgLTYwNjAsNyArODQwNyw3IEBACiAgICAgICAgICAgICAgICAgbW9yZSBzZWN1cmUuCiAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIHRvb2xzIGluIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXNlY3VyaXR5PC9maWxlbmFtZT4gbGF5ZXIgb2YgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2knPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CkBAIC02MzA4LDYxNiArODY1NSwyMiBAQAogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCi0gICAgPHNlY3Rpb24gaWQ9J2J1aWxkaW5nLWEtdGlueS1zeXN0ZW0nPgotICAgICAgICA8dGl0bGU+QnVpbGRpbmcgYSBUaW55IFN5c3RlbTwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9J2Rldi1zYXZpbmctbWVtb3J5LWR1cmluZy1hLWJ1aWxkJz4KKyAgICAgICAgPHRpdGxlPkNvbnNlcnZpbmcgRGlzayBTcGFjZSBEdXJpbmcgQnVpbGRzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFZlcnkgc21hbGwgZGlzdHJpYnV0aW9ucyBoYXZlIHNvbWUgc2lnbmlmaWNhbnQgYWR2YW50YWdlcyBzdWNoCi0gICAgICAgICAgICBhcyByZXF1aXJpbmcgbGVzcyBvbi1kaWUgb3IgaW4tcGFja2FnZSBtZW1vcnkgKGNoZWFwZXIpLCBiZXR0ZXIKLSAgICAgICAgICAgIHBlcmZvcm1hbmNlIHRocm91Z2ggZWZmaWNpZW50IGNhY2hlIHVzYWdlLCBsb3dlciBwb3dlciByZXF1aXJlbWVudHMKLSAgICAgICAgICAgIGR1ZSB0byBsZXNzIG1lbW9yeSwgZmFzdGVyIGJvb3QgdGltZXMsIGFuZCByZWR1Y2VkIGRldmVsb3BtZW50Ci0gICAgICAgICAgICBvdmVyaGVhZC4KLSAgICAgICAgICAgIFNvbWUgcmVhbC13b3JsZCBleGFtcGxlcyB3aGVyZSBhIHZlcnkgc21hbGwgZGlzdHJpYnV0aW9uIGdpdmVzCi0gICAgICAgICAgICB5b3UgZGlzdGluY3QgYWR2YW50YWdlcyBhcmUgZGlnaXRhbCBjYW1lcmFzLCBtZWRpY2FsIGRldmljZXMsCi0gICAgICAgICAgICBhbmQgc21hbGwgaGVhZGxlc3Mgc3lzdGVtcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByZXNlbnRzIGluZm9ybWF0aW9uIHRoYXQgc2hvd3MgeW91IGhvdyB5b3UgY2FuCi0gICAgICAgICAgICB0cmltIHlvdXIgZGlzdHJpYnV0aW9uIHRvIGV2ZW4gc21hbGxlciBzaXplcyB0aGFuIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPnBva3ktdGlueTwvZmlsZW5hbWU+IGRpc3RyaWJ1dGlvbiwgd2hpY2ggaXMgYXJvdW5kCi0gICAgICAgICAgICA1IE1ieXRlcywgdGhhdCBjYW4gYmUgYnVpbHQgb3V0LW9mLXRoZS1ib3ggdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ndGlueS1zeXN0ZW0tb3ZlcnZpZXcnPgotICAgICAgICAgICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHByZXNlbnRzIHRoZSBvdmVyYWxsIHN0ZXBzIHlvdSBuZWVkIHRvCi0gICAgICAgICAgICAgICAgY29uc2lkZXIgYW5kIHBlcmZvcm0gdG8gY3JlYXRlIGRpc3RyaWJ1dGlvbnMgd2l0aCBzbWFsbGVyCi0gICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtcywgYWNoaWV2ZSBmYXN0ZXIgYm9vdCB0aW1lcywgbWFpbnRhaW4geW91ciBjcml0aWNhbAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHksIGFuZCBhdm9pZCBpbml0aWFsIFJBTSBkaXNrczoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnb2Fscy1hbmQtZ3VpZGluZy1wcmluY2lwbGVzJz5EZXRlcm1pbmUgeW91ciBnb2FscyBhbmQgZ3VpZGluZyBwcmluY2lwbGVzLjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd1bmRlcnN0YW5kLXdoYXQtZ2l2ZXMteW91ci1pbWFnZS1zaXplJz5VbmRlcnN0YW5kIHdoYXQgY29udHJpYnV0ZXMgdG8geW91ciBpbWFnZSBzaXplLjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd0cmltLXRoZS1yb290LWZpbGVzeXN0ZW0nPlJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgcm9vdCBmaWxlc3lzdGVtLjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd0cmltLXRoZS1rZXJuZWwnPlJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUga2VybmVsLjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZW1vdmUtcGFja2FnZS1tYW5hZ2VtZW50LXJlcXVpcmVtZW50cyc+RWxpbWluYXRlIHBhY2thZ2luZyByZXF1aXJlbWVudHMuPC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2xvb2stZm9yLW90aGVyLXdheXMtdG8tbWluaW1pemUtc2l6ZSc+TG9vayBmb3Igb3RoZXIgd2F5cyB0byBtaW5pbWl6ZSBzaXplLjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdpdGVyYXRlLW9uLXRoZS1wcm9jZXNzJz5JdGVyYXRlIG9uIHRoZSBwcm9jZXNzLjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2dvYWxzLWFuZC1ndWlkaW5nLXByaW5jaXBsZXMnPgotICAgICAgICAgICAgPHRpdGxlPkdvYWxzIGFuZCBHdWlkaW5nIFByaW5jaXBsZXM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiByZWFjaCB5b3VyIGRlc3RpbmF0aW9uLCB5b3UgbmVlZCB0byBrbm93Ci0gICAgICAgICAgICAgICAgd2hlcmUgeW91IGFyZSBnb2luZy4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgbGlzdCB0aGF0IHlvdSBjYW4gdXNlIGFzIGEgZ3VpZGUgd2hlbgotICAgICAgICAgICAgICAgIGNyZWF0aW5nIHZlcnkgc21hbGwgZGlzdHJpYnV0aW9uczoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGV0ZXJtaW5lIGhvdyBtdWNoIHNwYWNlIHlvdSBuZWVkCi0gICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBhIGtlcm5lbCB0aGF0IGlzIDEgTWJ5dGUgb3IgbGVzcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgcm9vdCBmaWxlc3lzdGVtIHRoYXQgaXMgMyBNYnl0ZXMgb3IgbGVzcykuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZpbmQgdGhlIGFyZWFzIHRoYXQgYXJlIGN1cnJlbnRseQotICAgICAgICAgICAgICAgICAgICAgICAgdGFraW5nIDkwJSBvZiB0aGUgc3BhY2UgYW5kIGNvbmNlbnRyYXRlIG9uIHJlZHVjaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICB0aG9zZSBhcmVhcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RG8gbm90IGNyZWF0ZSBhbnkgZGlmZmljdWx0ICJoYWNrcyIKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFjaGlldmUgeW91ciBnb2Fscy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkxldmVyYWdlIHRoZSBkZXZpY2Utc3BlY2lmaWMKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Xb3JrIGluIGEgc2VwYXJhdGUgbGF5ZXIgc28gdGhhdCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIGtlZXAgY2hhbmdlcyBpc29sYXRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIGxheWVycywgc2VlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgIjxsaW5rIGxpbmtlbmQ9J3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC9saW5rPiIgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3VuZGVyc3RhbmQtd2hhdC1naXZlcy15b3VyLWltYWdlLXNpemUnPgotICAgICAgICAgICAgPHRpdGxlPlVuZGVyc3RhbmQgV2hhdCBDb250cmlidXRlcyB0byBZb3VyIEltYWdlIFNpemU8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJdCBpcyBlYXNpZXN0IHRvIGhhdmUgc29tZXRoaW5nIHRvIHN0YXJ0IHdpdGggd2hlbiBjcmVhdGluZwotICAgICAgICAgICAgICAgIHlvdXIgb3duIGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBvdXQtb2YtdGhlLWJveCB0byBjcmVhdGUgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3ktdGlueTwvZmlsZW5hbWU+IGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgICAgICBVbHRpbWF0ZWx5LCB5b3Ugd2lsbCB3YW50IHRvIG1ha2UgY2hhbmdlcyBpbiB5b3VyIG93bgotICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiB0aGF0IGFyZSBsaWtlbHkgbW9kZWxlZCBhZnRlcgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVG8gdXNlIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPiBpbiB5b3VyIGJ1aWxkLAotICAgICAgICAgICAgICAgICAgICBzZXQgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRvICJwb2t5LXRpbnkiCi0gICAgICAgICAgICAgICAgICAgIGFzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLXlvdXItb3duLWRpc3RyaWJ1dGlvbic+Q3JlYXRpbmcgWW91ciBPd24gRGlzdHJpYnV0aW9uPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVuZGVyc3RhbmRpbmcgc29tZSBtZW1vcnkgY29uY2VwdHMgd2lsbCBoZWxwIHlvdSByZWR1Y2UgdGhlCi0gICAgICAgICAgICAgICAgc3lzdGVtIHNpemUuCi0gICAgICAgICAgICAgICAgTWVtb3J5IGNvbnNpc3RzIG9mIHN0YXRpYywgZHluYW1pYywgYW5kIHRlbXBvcmFyeSBtZW1vcnkuCi0gICAgICAgICAgICAgICAgU3RhdGljIG1lbW9yeSBpcyB0aGUgVEVYVCAoY29kZSksIERBVEEgKGluaXRpYWxpemVkIGRhdGEKLSAgICAgICAgICAgICAgICBpbiB0aGUgY29kZSksIGFuZCBCU1MgKHVuaW5pdGlhbGl6ZWQgZGF0YSkgc2VjdGlvbnMuCi0gICAgICAgICAgICAgICAgRHluYW1pYyBtZW1vcnkgcmVwcmVzZW50cyBtZW1vcnkgdGhhdCBpcyBhbGxvY2F0ZWQgYXQgcnVudGltZToKLSAgICAgICAgICAgICAgICBzdGFja3MsIGhhc2ggdGFibGVzLCBhbmQgc28gZm9ydGguCi0gICAgICAgICAgICAgICAgVGVtcG9yYXJ5IG1lbW9yeSBpcyByZWNvdmVyZWQgYWZ0ZXIgdGhlIGJvb3QgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICBUaGlzIG1lbW9yeSBjb25zaXN0cyBvZiBtZW1vcnkgdXNlZCBmb3IgZGVjb21wcmVzc2luZwotICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgYW5kIGZvciB0aGUgPGZpbGVuYW1lPl9faW5pdF9fPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBmdW5jdGlvbnMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIGhlbHAgeW91IHNlZSB3aGVyZSB5b3UgY3VycmVudGx5IGFyZSB3aXRoIGtlcm5lbCBhbmQgcm9vdAotICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gc2l6ZXMsIHlvdSBjYW4gdXNlIHR3byB0b29scyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4gaW4KLSAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnNjcmlwdHMvdGlueS88L2ZpbGVuYW1lPiBkaXJlY3Rvcnk6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5rc2l6ZS5weTwvZmlsZW5hbWU+OiBSZXBvcnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgc2l6ZXMgZm9yIHRoZSBrZXJuZWwgYnVpbGQgb2JqZWN0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmRpcnNpemUucHk8L2ZpbGVuYW1lPjogUmVwb3J0cwotICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50IHNpemVzIGZvciB0aGUgcm9vdCBmaWxlc3lzdGVtLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIFRoaXMgbmV4dCB0b29sIGFuZCBjb21tYW5kIGhlbHAgeW91IG9yZ2FuaXplIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICBmcmFnbWVudHMgYW5kIHZpZXcgZmlsZSBkZXBlbmRlbmNpZXMgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bWVyZ2VfY29uZmlnLnNoPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICBIZWxwcyB5b3UgbWFuYWdlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGZyYWdtZW50cwotICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICBXaXRoIHRoaXMgdG9vbCwgeW91IGNhbiBtZXJnZSBpbmRpdmlkdWFsIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cyB0b2dldGhlci4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0b29sIGFsbG93cyB5b3UgdG8gbWFrZSBvdmVycmlkZXMgYW5kIHdhcm5zIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgb2YgYW55IG1pc3NpbmcgY29uZmlndXJhdGlvbiBvcHRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvb2wgaXMgaWRlYWwgZm9yIGFsbG93aW5nIHlvdSB0byBpdGVyYXRlIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucywgY3JlYXRlIG1pbmltYWwgY29uZmlndXJhdGlvbnMsIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIGRpZmZlcmVudCBtYWNoaW5lcwotICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gZHVwbGljYXRlIHlvdXIgcHJvY2Vzcy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPm1lcmdlX2NvbmZpZy5zaDwvZmlsZW5hbWU+IHNjcmlwdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgTGludXggWW9jdG8ga2VybmVsIEdpdCByZXBvc2l0b3JpZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE0PC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xMDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuODwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL2tjb25maWc8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uZmlndXJhdGlvbiBmcmFnbWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2NyZWF0aW5nLWNvbmZpZy1mcmFnbWVudHMnPkNyZWF0aW5nIENvbmZpZ3VyYXRpb24gRnJhZ21lbnRzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAotICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Yml0YmFrZSAtdSB0YXNrZXhwIC1nIDxyZXBsYWNlYWJsZT5iaXRiYWtlX3RhcmdldDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgQml0QmFrZSBjb21tYW5kIHdpdGggdGhlc2Ugb3B0aW9ucyBicmluZ3MgdXAKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgRGVwZW5kZW5jeSBFeHBsb3JlciBmcm9tIHdoaWNoIHlvdSBjYW4gdmlldyBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBhbGxvd3MgeW91IHRvIG1ha2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWVkIGRlY2lzaW9ucyB3aGVuIGN1dHRpbmcgb3V0IHZhcmlvdXMgcGllY2VzIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGFuZCByb290IGZpbGVzeXN0ZW0uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ndHJpbS10aGUtcm9vdC1maWxlc3lzdGVtJz4KLSAgICAgICAgICAgIDx0aXRsZT5UcmltIHRoZSBSb290IEZpbGVzeXN0ZW08L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgcm9vdCBmaWxlc3lzdGVtIGlzIG1hZGUgdXAgb2YgcGFja2FnZXMgZm9yIGJvb3RpbmcsCi0gICAgICAgICAgICAgICAgbGlicmFyaWVzLCBhbmQgYXBwbGljYXRpb25zLgotICAgICAgICAgICAgICAgIFRvIGNoYW5nZSB0aGluZ3MsIHlvdSBjYW4gY29uZmlndXJlIGhvdyB0aGUgcGFja2FnaW5nIGhhcHBlbnMsCi0gICAgICAgICAgICAgICAgd2hpY2ggY2hhbmdlcyB0aGUgd2F5IHlvdSBidWlsZCB0aGVtLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBtb2RpZnkgdGhlIGZpbGVzeXN0ZW0gaXRzZWxmIG9yIHNlbGVjdCBhIGRpZmZlcmVudAotICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZpcnN0LCBmaW5kIG91dCB3aGF0IGlzIGhvZ2dpbmcgeW91ciByb290IGZpbGVzeXN0ZW0gYnkgcnVubmluZyB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyc2l6ZS5weTwvZmlsZW5hbWU+IHNjcmlwdCBmcm9tIHlvdXIgcm9vdCBkaXJlY3Rvcnk6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIDxyZXBsYWNlYWJsZT5yb290LWRpcmVjdG9yeS1vZi1pbWFnZTwvcmVwbGFjZWFibGU+Ci0gICAgICQgZGlyc2l6ZS5weSAxMDAwMDAgPiBkaXJzaXplLTEwMGsubG9nCi0gICAgICQgY2F0IGRpcnNpemUtMTAway5sb2cKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiBhcHBseSBhIGZpbHRlciB0byB0aGUgc2NyaXB0IHRvIGlnbm9yZSBmaWxlcyB1bmRlcgotICAgICAgICAgICAgICAgIGEgY2VydGFpbiBzaXplLgotICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIGZpbHRlcnMgb3V0IGFueSBmaWxlcyBiZWxvdyAxMDAgS2J5dGVzLgotICAgICAgICAgICAgICAgIFRoZSBzaXplcyByZXBvcnRlZCBieSB0aGUgdG9vbCBhcmUgdW5jb21wcmVzc2VkLCBhbmQgdGh1cwotICAgICAgICAgICAgICAgIHdpbGwgYmUgc21hbGxlciBieSBhIHJlbGF0aXZlbHkgY29uc3RhbnQgZmFjdG9yIGluIGEKLSAgICAgICAgICAgICAgICBjb21wcmVzc2VkIHJvb3QgZmlsZXN5c3RlbS4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSBleGFtaW5lIHlvdXIgbG9nIGZpbGUsIHlvdSBjYW4gZm9jdXMgb24gYXJlYXMgb2YgdGhlCi0gICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIHRoYXQgdGFrZSB1cCBsYXJnZSBhbW91bnRzIG9mIG1lbW9yeS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgc3VyZSB0aGF0IHdoYXQgeW91IGVsaW1pbmF0ZSBkb2VzIG5vdCBjcmlwcGxlCi0gICAgICAgICAgICAgICAgdGhlIGZ1bmN0aW9uYWxpdHkgeW91IG5lZWQuCi0gICAgICAgICAgICAgICAgT25lIHdheSB0byBzZWUgaG93IHBhY2thZ2VzIHJlbGF0ZSB0byBlYWNoIG90aGVyIGlzIGJ5IHVzaW5nCi0gICAgICAgICAgICAgICAgdGhlIERlcGVuZGVuY3kgRXhwbG9yZXIgVUkgd2l0aCB0aGUgQml0QmFrZSBjb21tYW5kOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCA8cmVwbGFjZWFibGU+aW1hZ2UtZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT4KLSAgICAgJCBiaXRiYWtlIC11IHRhc2tleHAgLWcgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVXNlIHRoZSBpbnRlcmZhY2UgdG8gc2VsZWN0IHBvdGVudGlhbCBwYWNrYWdlcyB5b3Ugd2lzaCB0bwotICAgICAgICAgICAgICAgIGVsaW1pbmF0ZSBhbmQgc2VlIHRoZWlyIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgV2hlbiBkZWNpZGluZyBob3cgdG8gcmVkdWNlIHRoZSBzaXplLCBnZXQgcmlkIG9mIHBhY2thZ2VzIHRoYXQKLSAgICAgICAgICAgICAgICByZXN1bHQgaW4gbWluaW1hbCBpbXBhY3Qgb24gdGhlIGZlYXR1cmUgc2V0LgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgbWlnaHQgbm90IG5lZWQgYSBWR0EgZGlzcGxheS4KLSAgICAgICAgICAgICAgICBPciwgeW91IG1pZ2h0IGJlIGFibGUgdG8gZ2V0IGJ5IHdpdGggPGZpbGVuYW1lPmRldnRtcGZzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPm1kZXY8L2ZpbGVuYW1lPiBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVkZXY8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVXNlIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRvIG1ha2UgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gZWxpbWluYXRlIDxmaWxlbmFtZT51ZGV2PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWI8L2ZpbGVuYW1lPiwgc2V0IHRoZSBmb2xsb3dpbmcgaW4gdGhlCi0gICAgICAgICAgICAgICAgbG9jYWwgY29uZmlndXJhdGlvbiBmaWxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyID0gIiIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZpbmFsbHksIHlvdSBzaG91bGQgY29uc2lkZXIgZXhhY3RseSB0aGUgdHlwZSBvZiByb290Ci0gICAgICAgICAgICAgICAgZmlsZXN5c3RlbSB5b3UgbmVlZCB0byBtZWV0IHlvdXIgbmVlZHMgd2hpbGUgYWxzbyByZWR1Y2luZwotICAgICAgICAgICAgICAgIGl0cyBzaXplLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciA8ZmlsZW5hbWU+Y3JhbWZzPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNxdWFzaGZzPC9maWxlbmFtZT4sIDxmaWxlbmFtZT51YmlmczwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHQyPC9maWxlbmFtZT4sIG9yIGFuIDxmaWxlbmFtZT5pbml0cmFtZnM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIHVzaW5nIDxmaWxlbmFtZT5pbml0cmFtZnM8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBCZSBhd2FyZSB0aGF0IDxmaWxlbmFtZT5leHQzPC9maWxlbmFtZT4gcmVxdWlyZXMgYSAxIE1ieXRlCi0gICAgICAgICAgICAgICAgam91cm5hbC4KLSAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIG9rYXkgd2l0aCBydW5uaW5nIHJlYWQtb25seSwgeW91IGRvIG5vdCBuZWVkIHRoaXMKLSAgICAgICAgICAgICAgICBqb3VybmFsLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBBZnRlciBlYWNoIHJvdW5kIG9mIGVsaW1pbmF0aW9uLCB5b3UgbmVlZCB0byByZWJ1aWxkIHlvdXIKLSAgICAgICAgICAgICAgICBzeXN0ZW0gYW5kIHRoZW4gdXNlIHRoZSB0b29scyB0byBzZWUgdGhlIGVmZmVjdHMgb2YgeW91cgotICAgICAgICAgICAgICAgIHJlZHVjdGlvbnMuCi0gICAgICAgICAgICA8L25vdGU+Ci0KLQotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3RyaW0tdGhlLWtlcm5lbCc+Ci0gICAgICAgICAgICA8dGl0bGU+VHJpbSB0aGUgS2VybmVsPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGtlcm5lbCBpcyBidWlsdCBieSBpbmNsdWRpbmcgcG9saWNpZXMgZm9yIGhhcmR3YXJlLWluZGVwZW5kZW50Ci0gICAgICAgICAgICAgICAgYXNwZWN0cy4KLSAgICAgICAgICAgICAgICBXaGF0IHN1YnN5c3RlbXMgZG8geW91IGVuYWJsZT8KLSAgICAgICAgICAgICAgICBGb3Igd2hhdCBhcmNoaXRlY3R1cmUgYXJlIHlvdSBidWlsZGluZz8KLSAgICAgICAgICAgICAgICBXaGljaCBkcml2ZXJzIGRvIHlvdSBidWlsZCBieSBkZWZhdWx0PwotICAgICAgICAgICAgICAgIDxub3RlPllvdSBjYW4gbW9kaWZ5IHRoZSBrZXJuZWwgc291cmNlIGlmIHlvdSB3YW50IHRvIGhlbHAKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBib290IHRpbWUuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBSdW4gdGhlIDxmaWxlbmFtZT5rc2l6ZS5weTwvZmlsZW5hbWU+IHNjcmlwdCBmcm9tIHRoZSB0b3AtbGV2ZWwKLSAgICAgICAgICAgICAgICBMaW51eCBidWlsZCBkaXJlY3RvcnkgdG8gZ2V0IGFuIGlkZWEgb2Ygd2hhdCBpcyBtYWtpbmcgdXAKLSAgICAgICAgICAgICAgICB0aGUga2VybmVsOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCA8cmVwbGFjZWFibGU+dG9wLWxldmVsLWxpbnV4LWJ1aWxkLWRpcmVjdG9yeTwvcmVwbGFjZWFibGU+Ci0gICAgICQga3NpemUucHkgPiBrc2l6ZS5sb2cKLSAgICAgJCBjYXQga3NpemUubG9nCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFdoZW4geW91IGV4YW1pbmUgdGhlIGxvZywgeW91IHdpbGwgc2VlIGhvdyBtdWNoIHNwYWNlIGlzCi0gICAgICAgICAgICAgICAgdGFrZW4gdXAgd2l0aCB0aGUgYnVpbHQtaW4gPGZpbGVuYW1lPi5vPC9maWxlbmFtZT4gZmlsZXMgZm9yCi0gICAgICAgICAgICAgICAgZHJpdmVycywgbmV0d29ya2luZywgY29yZSBrZXJuZWwgZmlsZXMsIGZpbGVzeXN0ZW0sIHNvdW5kLAotICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgICAgICBUaGUgc2l6ZXMgcmVwb3J0ZWQgYnkgdGhlIHRvb2wgYXJlIHVuY29tcHJlc3NlZCwgYW5kIHRodXMKLSAgICAgICAgICAgICAgICB3aWxsIGJlIHNtYWxsZXIgYnkgYSByZWxhdGl2ZWx5IGNvbnN0YW50IGZhY3RvciBpbiBhIGNvbXByZXNzZWQKLSAgICAgICAgICAgICAgICBrZXJuZWwgaW1hZ2UuCi0gICAgICAgICAgICAgICAgTG9vayB0byByZWR1Y2UgdGhlIGFyZWFzIHRoYXQgYXJlIGxhcmdlIGFuZCB0YWtpbmcgdXAgYXJvdW5kCi0gICAgICAgICAgICAgICAgdGhlICI5MCUgcnVsZS4iCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIGV4YW1pbmUsIG9yIGRyaWxsIGRvd24sIGludG8gYW55IHBhcnRpY3VsYXIgYXJlYSwgdXNlIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZDwvZmlsZW5hbWU+IG9wdGlvbiB3aXRoIHRoZSBzY3JpcHQ6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGtzaXplLnB5IC1kID4ga3NpemUubG9nCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFVzaW5nIHRoaXMgb3B0aW9uIGJyZWFrcyBvdXQgdGhlIGluZGl2aWR1YWwgZmlsZSBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgIGZvciBlYWNoIGFyZWEgb2YgdGhlIGtlcm5lbCAoZS5nLiBkcml2ZXJzLCBuZXR3b3JraW5nLCBhbmQKLSAgICAgICAgICAgICAgICBzbyBmb3J0aCkuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVzZSB5b3VyIGxvZyBmaWxlIHRvIHNlZSB3aGF0IHlvdSBjYW4gZWxpbWluYXRlIGZyb20gdGhlIGtlcm5lbAotICAgICAgICAgICAgICAgIGJhc2VkIG9uIGZlYXR1cmVzIHlvdSBjYW4gbGV0IGdvLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIG5vdCBnb2luZyB0byBuZWVkIHNvdW5kLCB5b3UgZG8gbm90Ci0gICAgICAgICAgICAgICAgbmVlZCBhbnkgZHJpdmVycyB0aGF0IHN1cHBvcnQgc291bmQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFmdGVyIGZpZ3VyaW5nIG91dCB3aGF0IHRvIGVsaW1pbmF0ZSwgeW91IG5lZWQgdG8gcmVjb25maWd1cmUKLSAgICAgICAgICAgICAgICB0aGUga2VybmVsIHRvIHJlZmxlY3QgdGhvc2UgY2hhbmdlcyBkdXJpbmcgdGhlIG5leHQgYnVpbGQuCi0gICAgICAgICAgICAgICAgWW91IGNvdWxkIHJ1biA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IGFuZCBtYWtlIGFsbCB5b3VyCi0gICAgICAgICAgICAgICAgY2hhbmdlcyBhdCBvbmNlLgotICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoYXQgbWFrZXMgaXQgZGlmZmljdWx0IHRvIHNlZSB0aGUgZWZmZWN0cyBvZiB5b3VyCi0gICAgICAgICAgICAgICAgaW5kaXZpZHVhbCBlbGltaW5hdGlvbnMgYW5kIGFsc28gbWFrZXMgaXQgZGlmZmljdWx0IHRvIHJlcGxpY2F0ZQotICAgICAgICAgICAgICAgIHRoZSBjaGFuZ2VzIGZvciBwZXJoYXBzIGFub3RoZXIgdGFyZ2V0IGRldmljZS4KLSAgICAgICAgICAgICAgICBBIGJldHRlciBtZXRob2QgaXMgdG8gc3RhcnQgd2l0aCBubyBjb25maWd1cmF0aW9ucyB1c2luZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hbGxub2NvbmZpZzwvZmlsZW5hbWU+LCBjcmVhdGUgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgIGZyYWdtZW50cyBmb3IgaW5kaXZpZHVhbCBjaGFuZ2VzLCBhbmQgdGhlbiBtYW5hZ2UgdGhlCi0gICAgICAgICAgICAgICAgZnJhZ21lbnRzIGludG8gYSBzaW5nbGUgY29uZmlndXJhdGlvbiBmaWxlIHVzaW5nCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lcmdlX2NvbmZpZy5zaDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRoZSB0b29sIG1ha2VzIGl0IGVhc3kgZm9yIHlvdSB0byBpdGVyYXRlIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gY2hhbmdlIGFuZCBidWlsZCBjeWNsZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRWFjaCB0aW1lIHlvdSBtYWtlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgeW91IG5lZWQgdG8gcmVidWlsZAotICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgYW5kIGNoZWNrIHRvIHNlZSB3aGF0IGltcGFjdCB5b3VyIGNoYW5nZXMgaGFkIG9uCi0gICAgICAgICAgICAgICAgdGhlIG92ZXJhbGwgc2l6ZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdyZW1vdmUtcGFja2FnZS1tYW5hZ2VtZW50LXJlcXVpcmVtZW50cyc+Ci0gICAgICAgICAgICA8dGl0bGU+UmVtb3ZlIFBhY2thZ2UgTWFuYWdlbWVudCBSZXF1aXJlbWVudHM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBQYWNrYWdpbmcgcmVxdWlyZW1lbnRzIGFkZCBzaXplIHRvIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICBPbmUgd2F5IHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgaXMgdG8gcmVtb3ZlIGFsbCB0aGUKLSAgICAgICAgICAgICAgICBwYWNrYWdpbmcgcmVxdWlyZW1lbnRzIGZyb20gdGhlIGltYWdlLgotICAgICAgICAgICAgICAgIFRoaXMgcmVkdWN0aW9uIGluY2x1ZGVzIGJvdGggcmVtb3ZpbmcgdGhlIHBhY2thZ2UgbWFuYWdlcgotICAgICAgICAgICAgICAgIGFuZCBpdHMgdW5pcXVlIGRlcGVuZGVuY2llcyBhcyB3ZWxsIGFzIHJlbW92aW5nIHRoZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgbWFuYWdlbWVudCBkYXRhIGl0c2VsZi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gZWxpbWluYXRlIGFsbCB0aGUgcGFja2FnaW5nIHJlcXVpcmVtZW50cyBmb3IgYW4gaW1hZ2UsCi0gICAgICAgICAgICAgICAgYmUgc3VyZSB0aGF0ICJwYWNrYWdlLW1hbmFnZW1lbnQiIGlzIG5vdCBwYXJ0IG9mIHlvdXIKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgZm9yIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSByZW1vdmUgdGhpcyBmZWF0dXJlLCB5b3UgYXJlIHJlbW92aW5nIHRoZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgbWFuYWdlciBhcyB3ZWxsIGFzIGl0cyBkZXBlbmRlbmNpZXMgZnJvbSB0aGUgcm9vdCBmaWxlc3lzdGVtLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2xvb2stZm9yLW90aGVyLXdheXMtdG8tbWluaW1pemUtc2l6ZSc+Ci0gICAgICAgICAgICA8dGl0bGU+TG9vayBmb3IgT3RoZXIgV2F5cyB0byBNaW5pbWl6ZSBTaXplPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHlvdXIgcGFydGljdWxhciBjaXJjdW1zdGFuY2VzLCBvdGhlciBhcmVhcyB0aGF0IHlvdQotICAgICAgICAgICAgICAgIGNhbiB0cmltIGxpa2VseSBleGlzdC4KLSAgICAgICAgICAgICAgICBUaGUga2V5IHRvIGZpbmRpbmcgdGhlc2UgYXJlYXMgaXMgdGhyb3VnaCB0b29scyBhbmQgbWV0aG9kcwotICAgICAgICAgICAgICAgIGRlc2NyaWJlZCBoZXJlIGNvbWJpbmVkIHdpdGggZXhwZXJpbWVudGF0aW9uIGFuZCBpdGVyYXRpb24uCi0gICAgICAgICAgICAgICAgSGVyZSBhcmUgYSBjb3VwbGUgb2YgYXJlYXMgdG8gZXhwZXJpbWVudCB3aXRoOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIGZvbGxvdyB0aGlzIHByb2Nlc3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJlbW92ZSA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IHRoaW5rIHlvdSBkbyBub3QgbmVlZC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QnVpbGQgeW91ciBkaXN0cmlidXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiB0aGUgYnVpbGQgZmFpbHMgZHVlIHRvIG1pc3NpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9scyBpbiBhIHBhY2thZ2UsIGRldGVybWluZSBpZiB5b3UgY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29uZmlndXJlIHRoZSBwYWNrYWdlIHRvIG5vdCBuZWVkIHRob3NlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgY2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIHRvIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IHdpZGUgY2hhcmFjdGVyIHN1cHBvcnQgYXMgaXMgZG9uZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5jdXJzZXM8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3IsIGlmIHN1cHBvcnQgZm9yIHRob3NlIGNoYXJhY3RlcnMgaXMgbmVlZGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmUgd2hhdCA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBwcm92aWRlIHRoZSBzdXBwb3J0IGFuZCByZXN0b3JlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UmVidWlsZCBhbmQgcmVwZWF0IHRoZSBwcm9jZXNzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+YnVzeWJveDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEJ1c3lCb3gsIHVzZSBhIHByb2Nlc3Mgc2ltaWxhciBhcyBkZXNjcmliZWQgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgZGlmZmVyZW5jZSBpcyB5b3Ugd2lsbCBuZWVkIHRvIGJvb3QgdGhlIHJlc3VsdGluZwotICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHRvIHNlZSBpZiB5b3UgYXJlIGFibGUgdG8gZG8gZXZlcnl0aGluZyB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCBmcm9tIHRoZSBydW5uaW5nIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIHN1cmUgdG8gaW50ZWdyYXRlIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnRvIEJ1c3lib3ggYmVjYXVzZSBCdXN5Qm94IGhhbmRsZXMgaXRzIG93biBjb3JlCi0gICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBhbmQgdGhlbiBhbGxvd3MgeW91IHRvIGFkZCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgb24gdG9wLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0naXRlcmF0ZS1vbi10aGUtcHJvY2Vzcyc+Ci0gICAgICAgICAgICA8dGl0bGU+SXRlcmF0ZSBvbiB0aGUgUHJvY2VzczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIG5vdCByZWFjaGVkIHlvdXIgZ29hbHMgb24gc3lzdGVtIHNpemUsIHlvdSBuZWVkCi0gICAgICAgICAgICAgICAgdG8gaXRlcmF0ZSBvbiB0aGUgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyBpcyB0aGUgc2FtZS4KLSAgICAgICAgICAgICAgICBVc2UgdGhlIHRvb2xzIGFuZCBzZWUganVzdCB3aGF0IGlzIHRha2luZyB1cCA5MCUgb2YgdGhlIHJvb3QKLSAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGFuZCB0aGUga2VybmVsLgotICAgICAgICAgICAgICAgIERlY2lkZSB3aGF0IHlvdSBjYW4gZWxpbWluYXRlIHdpdGhvdXQgbGltaXRpbmcgeW91ciBkZXZpY2UKLSAgICAgICAgICAgICAgICBiZXlvbmQgd2hhdCB5b3UgbmVlZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHlvdXIgc3lzdGVtLCBhIGdvb2QgcGxhY2UgdG8gbG9vayBtaWdodCBiZQotICAgICAgICAgICAgICAgIEJ1c3lib3gsIHdoaWNoIHByb3ZpZGVzIGEgc3RyaXBwZWQgZG93bgotICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgVW5peCB0b29scyBpbiBhIHNpbmdsZSwgZXhlY3V0YWJsZSBmaWxlLgotICAgICAgICAgICAgICAgIFlvdSBtaWdodCBiZSBhYmxlIHRvIGRyb3AgdmlydHVhbCB0ZXJtaW5hbCBzZXJ2aWNlcyBvciBwZXJoYXBzCi0gICAgICAgICAgICAgICAgaXB2Ni4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdidWlsZGluZy1pbWFnZXMtZm9yLW1vcmUtdGhhbi1vbmUtbWFjaGluZSc+Ci0gICAgICAgIDx0aXRsZT5CdWlsZGluZyBJbWFnZXMgZm9yIE1vcmUgdGhhbiBPbmUgTWFjaGluZTwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBIGNvbW1vbiBzY2VuYXJpbyBkZXZlbG9wZXJzIGZhY2UgaXMgY3JlYXRpbmcgaW1hZ2VzIGZvciBzZXZlcmFsCi0gICAgICAgICAgICBkaWZmZXJlbnQgbWFjaGluZXMgdGhhdCB1c2UgdGhlIHNhbWUgc29mdHdhcmUgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICBJbiB0aGlzIHNpdHVhdGlvbiwgaXQgaXMgdGVtcHRpbmcgdG8gc2V0IHRoZQotICAgICAgICAgICAgdHVuaW5ncyBhbmQgb3B0aW1pemF0aW9uIGZsYWdzIGZvciBlYWNoIGJ1aWxkIHNwZWNpZmljYWxseSBmb3IKLSAgICAgICAgICAgIHRoZSB0YXJnZXRlZCBoYXJkd2FyZSAoaS5lLiAibWF4aW5nIG91dCIgdGhlIHR1bmluZ3MpLgotICAgICAgICAgICAgRG9pbmcgc28gY2FuIGNvbnNpZGVyYWJseSBhZGQgdG8gYnVpbGQgdGltZXMgYW5kIHBhY2thZ2UgZmVlZAotICAgICAgICAgICAgbWFpbnRlbmFuY2UgY29sbGVjdGl2ZWx5IGZvciB0aGUgbWFjaGluZXMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgc2VsZWN0aW5nIHR1bmVzIHRoYXQgYXJlIGV4dHJlbWVseSBzcGVjaWZpYyB0byBhCi0gICAgICAgICAgICBDUFUgY29yZSB1c2VkIGluIGEgc3lzdGVtIG1pZ2h0IGVuYWJsZSBzb21lIG1pY3JvIG9wdGltaXphdGlvbnMKLSAgICAgICAgICAgIGluIEdDQyBmb3IgdGhhdCBwYXJ0aWN1bGFyIHN5c3RlbSBidXQgd291bGQgb3RoZXJ3aXNlIG5vdCBnYWluCi0gICAgICAgICAgICB5b3UgbXVjaCBvZiBhIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgYWNyb3NzIHRoZSBvdGhlciBzeXN0ZW1zCi0gICAgICAgICAgICBhcyBjb21wYXJlZCB0byB1c2luZyBhIG1vcmUgZ2VuZXJhbCB0dW5pbmcgYWNyb3NzIGFsbCB0aGUgYnVpbGRzCi0gICAgICAgICAgICAoZS5nLiBzZXR0aW5nCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVGQVVMVFRVTkUnPjxmaWxlbmFtZT5ERUZBVUxUVFVORTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIHNwZWNpZmljYWxseSBmb3IgZWFjaCBtYWNoaW5lJ3MgYnVpbGQpLgotICAgICAgICAgICAgUmF0aGVyIHRoYW4gIm1heCBvdXQiIGVhY2ggYnVpbGQncyB0dW5pbmdzLCB5b3UgY2FuIHRha2Ugc3RlcHMgdGhhdAotICAgICAgICAgICAgY2F1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcmV1c2Ugc29mdHdhcmUgYWNyb3NzIHRoZQotICAgICAgICAgICAgdmFyaW91cyBtYWNoaW5lcyB3aGVyZSBpdCBtYWtlcyBzZW5zZS4KLSAgICAgICAgPC9wYXJhPgotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIGJ1aWxkIHNwZWVkIGFuZCBwYWNrYWdlIGZlZWQgbWFpbnRlbmFuY2UgYXJlIGNvbnNpZGVyYXRpb25zLAotICAgICAgICAgICAgeW91IHNob3VsZCBjb25zaWRlciB0aGUgcG9pbnRzIGluIHRoaXMgc2VjdGlvbiB0aGF0IGNhbiBoZWxwIHlvdQotICAgICAgICAgICAgb3B0aW1pemUgeW91ciB0dW5pbmdzIHRvIGJlc3QgY29uc2lkZXIgYnVpbGQgdGltZXMgYW5kIHBhY2thZ2UKLSAgICAgICAgICAgIGZlZWQgbWFpbnRlbmFuY2UuCi0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2hhcmUgdGhlIEJ1aWxkIERpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBJZiBhdCBhbGwgcG9zc2libGUsIHNoYXJlIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBhY3Jvc3MgYnVpbGRzLgotICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBzd2l0Y2hpbmcgYmV0d2VlbiBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgaW4gdGhlIHNhbWUgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIGlzIHdlbGwgc3VwcG9ydGVkIGFuZCByZWd1bGFybHkgdXNlZCBieQotICAgICAgICAgICAgICAgICAgICBkZXZlbG9wZXJzIHdoZW4gYnVpbGRpbmcgZm9yIG11bHRpcGxlIG1hY2hpbmVzLgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhlIHNhbWUgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGZvcgotICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBtYWNoaW5lIGJ1aWxkcywgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuCi0gICAgICAgICAgICAgICAgICAgIHJldXNlIHRoZSBleGlzdGluZyBuYXRpdmUgYW5kIG9mdGVuIGNyb3NzLXJlY2lwZXMgZm9yCi0gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIG1hY2hpbmVzLgotICAgICAgICAgICAgICAgICAgICBUaHVzLCBidWlsZCB0aW1lIGRlY3JlYXNlcy4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZgotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzIGNoYW5nZSBvciBmdW5kYW1lbnRhbCBjb25maWd1cmF0aW9uIHNldHRpbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIHRoZSBmaWxlc3lzdGVtIGxheW91dCwgeW91IG5lZWQgdG8gd29yayB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICBhIGNsZWFuIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJpbmcgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IHVuZGVyIHRoZXNlCi0gICAgICAgICAgICAgICAgICAgICAgICBjaXJjdW1zdGFuY2VzIG1pZ2h0IHdvcmsgYnV0IHNpbmNlIGl0IGlzIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgZ3VhcmFudGVlZCwgeW91IHNob3VsZCB1c2UgYSBjbGVhbgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RW5hYmxlIHRoZSBBcHByb3ByaWF0ZSBQYWNrYWdlIEFyY2hpdGVjdHVyZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBlbmFibGVzIHRocmVlCi0gICAgICAgICAgICAgICAgICAgIGxldmVscyBvZiBwYWNrYWdlIGFyY2hpdGVjdHVyZXM6ICJhbGwiLCAidHVuZSIgb3IgInBhY2thZ2UiLAotICAgICAgICAgICAgICAgICAgICBhbmQgIm1hY2hpbmUiLgotICAgICAgICAgICAgICAgICAgICBBbnkgZ2l2ZW4gcmVjaXBlIHVzdWFsbHkgc2VsZWN0cyBvbmUgb2YgdGhlc2UgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzICh0eXBlcykgZm9yIGl0cyBvdXRwdXQuCi0gICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBmb3Igd2hhdCBhIGdpdmVuIHJlY2lwZSBjcmVhdGVzIHBhY2thZ2VzLCBtYWtpbmcKLSAgICAgICAgICAgICAgICAgICAgc3VyZSB5b3UgZW5hYmxlIHRoZSBhcHByb3ByaWF0ZSBwYWNrYWdlIGFyY2hpdGVjdHVyZSBjYW4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0bHkgaW1wYWN0IHRoZSBidWlsZCB0aW1lLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+QSByZWNpcGUgdGhhdCBqdXN0IGdlbmVyYXRlcyBzY3JpcHRzIGNhbiBlbmFibGUKLSAgICAgICAgICAgICAgICAgICAgImFsbCIgYXJjaGl0ZWN0dXJlIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGJpbmFyaWVzIHRvIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICBUbyBzcGVjaWZpY2FsbHkgZW5hYmxlICJhbGwiIGFyY2hpdGVjdHVyZSwgYmUgc3VyZSB5b3VyCi0gICAgICAgICAgICAgICAgICAgIHJlY2lwZSBpbmhlcml0cyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYWxsYXJjaCc+PGZpbGVuYW1lPmFsbGFyY2g8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGNsYXNzLgotICAgICAgICAgICAgICAgICAgICBUaGlzIGNsYXNzIGlzIHVzZWZ1bCBmb3IgImFsbCIgYXJjaGl0ZWN0dXJlcyBiZWNhdXNlIGl0Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZXMgbWFueSB2YXJpYWJsZXMgc28gcGFja2FnZXMgY2FuIGJlIHVzZWQgYWNyb3NzCi0gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3VyIHJlY2lwZSBuZWVkcyB0byBnZW5lcmF0ZSBwYWNrYWdlcyB0aGF0IGFyZQotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIG9yIHdoZW4gb25lIG9mIHRoZSBidWlsZCBvciBydW50aW1lCi0gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBpcyBhbHJlYWR5IG1hY2hpbmUtYXJjaGl0ZWN0dXJlIGRlcGVuZGVudCwKLSAgICAgICAgICAgICAgICAgICAgd2hpY2ggbWFrZXMgeW91ciByZWNpcGUgYWxzbyBtYWNoaW5lLWFyY2hpdGVjdHVyZSBkZXBlbmRlbnQsCi0gICAgICAgICAgICAgICAgICAgIG1ha2Ugc3VyZSB5b3VyIHJlY2lwZSBlbmFibGVzIHRoZSAibWFjaGluZSIgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkVfQVJDSCc+PGZpbGVuYW1lPk1BQ0hJTkVfQVJDSDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBkbyBub3Qgc3BlY2lmaWNhbGx5IGVuYWJsZSBhIHBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlIHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkZWZhdWx0cyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRVTkVfUEtHQVJDSCc+PGZpbGVuYW1lPlRVTkVfUEtHQVJDSDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgc2V0dGluZzoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBQQUNLQUdFX0FSQ0ggPSAiJHtUVU5FX1BLR0FSQ0h9IgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2hvb3NlIGEgR2VuZXJpYyBUdW5pbmcgRmlsZSBpZiBQb3NzaWJsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTb21lIHR1bmVzIGFyZSBtb3JlIGdlbmVyaWMgYW5kIGNhbiBydW4gb24gbXVsdGlwbGUgdGFyZ2V0cwotICAgICAgICAgICAgICAgICAgICAoZS5nLiBhbiA8ZmlsZW5hbWU+YXJtdjU8L2ZpbGVuYW1lPiBzZXQgb2YgcGFja2FnZXMgY291bGQKLSAgICAgICAgICAgICAgICAgICAgcnVuIG9uIDxmaWxlbmFtZT5hcm12NjwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXJtdjc8L2ZpbGVuYW1lPiBwcm9jZXNzb3JzIGluIG1vc3QgY2FzZXMpLgotICAgICAgICAgICAgICAgICAgICBTaW1pbGFybHksIDxmaWxlbmFtZT5pNDg2PC9maWxlbmFtZT4gYmluYXJpZXMgY291bGQgd29yawotICAgICAgICAgICAgICAgICAgICBvbiA8ZmlsZW5hbWU+aTU4NjwvZmlsZW5hbWU+IGFuZCBoaWdoZXIgcHJvY2Vzc29ycy4KLSAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCByZWFsaXplLCBob3dldmVyLCB0aGF0IGFkdmFuY2VzIG9uIG5ld2VyCi0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciB2ZXJzaW9ucyB3b3VsZCBub3QgYmUgdXNlZC48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBzZWxlY3QgdGhlIHNhbWUgdHVuZSBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZXMsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHJldXNlcyBzb2Z0d2FyZQotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IGJ1aWx0LCB0aHVzIHNwZWVkaW5nIHVwIHRoZSBvdmVyYWxsIGJ1aWxkIHRpbWUuCi0gICAgICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBldmVuIHRob3VnaCBhIG5ldyBzeXNyb290IGZvciBlYWNoIG1hY2hpbmUgaXMKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkLCB0aGUgc29mdHdhcmUgaXMgbm90IHJlY29tcGlsZWQgYW5kIG9ubHkgb25lCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgZmVlZCBleGlzdHMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFuYWdlIEdyYW51bGFyIExldmVsIFBhY2thZ2luZzo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMgY2FzZXMgZXhpc3Qgd2hlcmUgaW5qZWN0aW5nIGFub3RoZXIgbGV2ZWwKLSAgICAgICAgICAgICAgICAgICAgb2YgcGFja2FnZSBhcmNoaXRlY3R1cmUgYmV5b25kIHRoZSB0aHJlZSBoaWdoZXIgbGV2ZWxzCi0gICAgICAgICAgICAgICAgICAgIG5vdGVkIGVhcmxpZXIgY2FuIGJlIHVzZWZ1bC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSA8ZmlsZW5hbWU+ZW1nZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzIHN0YWNrIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyLgotICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGxheWVyLCBhIHN1YnNldCBvZiBzb2Z0d2FyZSBleGlzdHMgdGhhdCBpcwotICAgICAgICAgICAgICAgICAgICBjb21waWxlZCBhZ2FpbnN0IHNvbWV0aGluZyBkaWZmZXJlbnQgZnJvbSB0aGUgcmVzdCBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJpYyBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBleGFtaW5lIHRoZSBrZXkgY29kZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2knPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAiZGFpc3kiIGJyYW5jaCBpbgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2xhc3Nlcy9lbWdkLWdsLmJiY2xhc3M8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGEgc3BlY2lmaWMgc2V0IG9mIHBhY2thZ2VzLCB0aGUgY29kZSByZWRlZmluZXMKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0VYVFJBX0FSQ0hTJz48ZmlsZW5hbWU+UEFDS0FHRV9FWFRSQV9BUkNIUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgaXMgdGhlbiBhcHBlbmRlZCB3aXRoIHRoaXMgZXh0cmEgdHVuZSBuYW1lIGluCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsLWVtZ2QuaW5jPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgdGhhdCB3aGVuIHNlYXJjaGluZyBmb3IgcGFja2FnZXMsIHRoZQotICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gdXNlcyBhIGZvdXItbGV2ZWwgc2VhcmNoIGFuZCB0aGUgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhpcyBuZXcgbGV2ZWwgYXJlIHByZWZlcnJlZCBhcyBjb21wYXJlZCB0byB0aGUgc3RhbmRhcmQKLSAgICAgICAgICAgICAgICAgICAgdHVuZS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG92ZXJhbGwgcmVzdWx0IGlzIHRoYXQgdGhlIGJ1aWxkIHN5c3RlbSByZXVzZXMgbW9zdAotICAgICAgICAgICAgICAgICAgICBzb2Z0d2FyZSBmcm9tIHRoZSBjb21tb24gdHVuZSBleGNlcHQgZm9yIHNwZWNpZmljIGNhc2VzCi0gICAgICAgICAgICAgICAgICAgIGFzIG5lZWRlZC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2UgVG9vbHMgdG8gRGVidWcgSXNzdWVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFNvbWV0aW1lcyB5b3UgY2FuIHJ1biBpbnRvIHNpdHVhdGlvbnMgd2hlcmUgc29mdHdhcmUgaXMKLSAgICAgICAgICAgICAgICAgICAgYmVpbmcgcmVidWlsdCB3aGVuIHlvdSB0aGluayBpdCBzaG91bGQgbm90IGJlLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gbWlnaHQgbm90IGJlCi0gICAgICAgICAgICAgICAgICAgIHVzaW5nIHNoYXJlZCBzdGF0ZSBiZXR3ZWVuIG1hY2hpbmVzIHdoZW4geW91IHRoaW5rIGl0Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZS4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHlwZXMgb2Ygc2l0dWF0aW9ucyBhcmUgdXN1YWxseSBkdWUgdG8gcmVmZXJlbmNlcwotICAgICAgICAgICAgICAgICAgICB0byBtYWNoaW5lLXNwZWNpZmljIHZhcmlhYmxlcyBzdWNoIGFzCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TRVJJQUxfQ09OU09MRSc+PGZpbGVuYW1lPlNFUklBTF9DT05TT0xFPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVhTRVJWRVInPjxmaWxlbmFtZT5YU0VSVkVSPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkVfRkVBVFVSRVMnPjxmaWxlbmFtZT5NQUNISU5FX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoIGluIGNvZGUgdGhhdCBpcyBzdXBwb3NlZCB0byBvbmx5IGJlCi0gICAgICAgICAgICAgICAgICAgIHR1bmUtc3BlY2lmaWMgb3Igd2hlbiB0aGUgcmVjaXBlIGRlcGVuZHMKLSAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUlNVR0dFU1RTJz48ZmlsZW5hbWU+UlNVR0dFU1RTPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoKSBvbiBzb21lIG90aGVyIHJlY2lwZSB0aGF0IGFscmVhZHkgaGFzCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYXMgIiR7TUFDSElORV9BUkNIfSIuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlcyB0byBmaXggYW55IGlzc3VlcyBpZGVudGlmaWVkIGFyZSBtb3N0IHdlbGNvbWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZXNlIGlzc3VlcyBvY2Nhc2lvbmFsbHkgZG8gb2NjdXIuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBzdWNoIGNhc2VzLCB5b3UgY2FuIHVzZSBzb21lIHRvb2xzIHRvIGhlbHAgeW91Ci0gICAgICAgICAgICAgICAgICAgIHNvcnQgb3V0IHRoZSBzaXR1YXRpb246Ci0gICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5zc3RhdGUtZGlmZi1tYWNoaW5lcy5zaDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgdG9vbCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgUmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgY29tbWVudHMgaW4gdGhlIHNjcmlwdCBmb3IgaW5mb3JtYXRpb24gb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3cgdG8gdXNlIHRoZSB0b29sLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CaXRCYWtlJ3MgIi1TIHByaW50ZGlmZiIgT3B0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBvcHRpb24gY2F1c2VzIEJpdEJha2UgdG8gdHJ5IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXN0YWJsaXNoIHRoZSBjbG9zZXN0IHNpZ25hdHVyZSBtYXRjaCBpdCBjYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBpbiB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlKSBhbmQgdGhlbiBydW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1kaWZmc2lnczwvZmlsZW5hbWU+IG92ZXIgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyB0byBkZXRlcm1pbmUgdGhlIHN0YW1wcyBhbmQgZGVsdGEgd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSB0d28gc3RhbXAgdHJlZXMgZGl2ZXJnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBUbyBoZWxwIGNvbnNlcnZlIGRpc2sgc3BhY2UgZHVyaW5nIGJ1aWxkcywgeW91IGNhbiBhZGQgdGhlCisgICAgICAgICAgICBmb2xsb3dpbmcgc3RhdGVtZW50IHRvIHlvdXIgcHJvamVjdCdzCisgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElOSEVSSVQgKz0gInJtX3dvcmsiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBBZGRpbmcgdGhpcyBzdGF0ZW1lbnQgZGVsZXRlcyB0aGUgd29yayBkaXJlY3RvcnkgdXNlZCBmb3IgYnVpbGRpbmcKKyAgICAgICAgICAgIGEgcmVjaXBlIG9uY2UgdGhlIHJlY2lwZSBpcyBidWlsdC4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uICJybV93b3JrIiwgc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtcm0td29yayc+PGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBjbGFzcyBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC03MTIxLDcgKzg4NzQsNyBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcwotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjY2hlY2tzdW1zJz5zaWduYXR1cmVzPC91bGluaz4iLAorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNvdmVydmlldy1jaGVja3N1bXMnPnNpZ25hdHVyZXM8L3VsaW5rPiIsCiAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSB1bmlxdWUgdG8gYSBnaXZlbiBidWlsZCwgdGhlIGJ1aWxkIHN5c3RlbQogICAgICAgICAgICAgICAgICAgICBrbm93cyB3aGVuIHRvIHJlYnVpbGQgcGFja2FnZXMuCiAgICAgICAgICAgICAgICAgICAgIEFsbCB0aGUgaW5wdXRzIGludG8gYSBnaXZlbiB0YXNrIGFyZSByZXByZXNlbnRlZCBieSBhCkBAIC03MjA2LDggKzg5NTksOCBAQAogICAgICBCVUlMREhJU1RPUllfQ09NTUlUID0gIjEiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGJ1aWxkIGhpc3RvcnksIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtYWludGFpbmluZy1idWlsZC1vdXRwdXQtcXVhbGl0eSc+TWFpbnRhaW5pbmcgQnVpbGQgT3V0cHV0IFF1YWxpdHk8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxub3RlPgpAQCAtNzIyNSw4ICs4OTc4LDkgQEAKIAogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNoYXJlZCBzdGF0ZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+U2hhcmVkIFN0YXRlIENhY2hlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzaGFyZWQtc3RhdGUtY2FjaGUnPlNoYXJlZCBTdGF0ZSBDYWNoZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTc0NzAsNyArOTIyNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25ubWFuLmluYzwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5zb3VyY2UgcmVwb3NpdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5zb3VyY2UgcmVwb3NpdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gZmluZCBleGFtcGxlcyBpbgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTc1OTksMTEgKzkzNTMsMTMgQEAKICAgICAgICAgICAgICAgICBEdXJpbmcgYSBidWlsZCwgQml0QmFrZSBhbHdheXMgdHJhbnNmb3JtcyBhIHJlY2lwZSBpbnRvIG9uZSBvcgogICAgICAgICAgICAgICAgIG1vcmUgcGFja2FnZXMuCiAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIEJpdEJha2UgdGFrZXMgdGhlIDxmaWxlbmFtZT5iYXNoPC9maWxlbmFtZT4gcmVjaXBlCi0gICAgICAgICAgICAgICAgYW5kIGN1cnJlbnRseSBwcm9kdWNlcyB0aGUgPGZpbGVuYW1lPmJhc2gtZGJnPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2gtc3RhdGljZGV2PC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2gtZGV2PC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iYXNoLWRvYzwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoLWxvY2FsZTwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzaDwvZmlsZW5hbWU+IHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIGFuZCBwcm9kdWNlcyBhIG51bWJlciBvZiBwYWNrYWdlcyAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iYXNoLWJhc2hidWc8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzaC1jb21wbGV0aW9uPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2gtY29tcGxldGlvbi1kYmc8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzaC1jb21wbGV0aW9uLWRldjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoLWNvbXBsZXRpb24tZXh0cmE8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzaC1kYmc8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKS4KICAgICAgICAgICAgICAgICBOb3QgYWxsIGdlbmVyYXRlZCBwYWNrYWdlcyBhcmUgaW5jbHVkZWQgaW4gYW4gaW1hZ2UuCiAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTc2NDcsNyArOTQwMyw3IEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHVzZSBydW50aW1lIHBhY2thZ2UgbWFuYWdlbWVudCwgeW91Ci0gICAgICAgICAgICAgICAgbmVlZCBhIGhvc3Qvc2VydmVyIG1hY2hpbmUgdGhhdCBzZXJ2ZXMgdXAgdGhlIHByZS1jb21waWxlZAorICAgICAgICAgICAgICAgIG5lZWQgYSBob3N0IG9yIHNlcnZlciBtYWNoaW5lIHRoYXQgc2VydmVzIHVwIHRoZSBwcmUtY29tcGlsZWQKICAgICAgICAgICAgICAgICBwYWNrYWdlcyBwbHVzIHRoZSByZXF1aXJlZCBtZXRhZGF0YS4KICAgICAgICAgICAgICAgICBZb3UgYWxzbyBuZWVkIHBhY2thZ2UgbWFuaXB1bGF0aW9uIHRvb2xzIG9uIHRoZSB0YXJnZXQuCiAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIG1hY2hpbmUgaXMgYSBsaWtlbHkgY2FuZGlkYXRlIHRvIGFjdCBhcyB0aGUgc2VydmVyLgpAQCAtNzY1NSw2ICs5NDExLDEwIEBACiAgICAgICAgICAgICAgICAgcGFja2FnZSBzZXJ2ZXIuCiAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIG1hY2hpbmUgY291bGQgcHVzaCBpdHMgYXJ0aWZhY3RzIHRvIGFub3RoZXIgbWFjaGluZQogICAgICAgICAgICAgICAgIHRoYXQgYWN0cyBhcyB0aGUgc2VydmVyIChlLmcuIEludGVybmV0LWZhY2luZykuCisgICAgICAgICAgICAgICAgSW4gZmFjdCwgZG9pbmcgc28gaXMgYWR2YW50YWdlb3VzIGZvciBhIHByb2R1Y3Rpb24KKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBhcyBnZXR0aW5nIHRoZSBwYWNrYWdlcyBhd2F5IGZyb20gdGhlCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgc3lzdGVtJ3MgYnVpbGQgZGlyZWN0b3J5IHByZXZlbnRzIGFjY2lkZW50YWwKKyAgICAgICAgICAgICAgICBvdmVyd3JpdGVzLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTc2NjQsMTEgKzk0MjQsMTEgQEAKICAgICAgICAgICAgICAgICBvdXQgaW50byBhIGNvdXBsZSBvZiBkaWZmZXJlbnQgcGFja2FnZSBncm91cGluZ3MgYmFzZWQgb24KICAgICAgICAgICAgICAgICBjcml0ZXJpYSBzdWNoIGFzIHRoZSB0YXJnZXQncyBDUFUgYXJjaGl0ZWN0dXJlLCB0aGUgdGFyZ2V0CiAgICAgICAgICAgICAgICAgYm9hcmQsIG9yIHRoZSBDIGxpYnJhcnkgdXNlZCBvbiB0aGUgdGFyZ2V0LgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhIGJ1aWxkIHRhcmdldGluZyB0aGUgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhIGJ1aWxkIHRhcmdldGluZyB0aGUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGRldmljZSBwcm9kdWNlcyB0aGUgZm9sbG93aW5nIHRocmVlIHBhY2thZ2UgZGF0YWJhc2VzOgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hbGw8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmFybXY1dGU8L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudGVkIHlvdXIgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiBkZXZpY2UgdG8gYmUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9hcmNoPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5pNTg2PC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnRlZCB5b3VyIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4gZGV2aWNlIHRvIGJlCiAgICAgICAgICAgICAgICAgYXdhcmUgb2YgYWxsIHRoZSBwYWNrYWdlcyB0aGF0IHdlcmUgYXZhaWxhYmxlIHRvIGl0LAogICAgICAgICAgICAgICAgIHlvdSB3b3VsZCBuZWVkIHRvIHBvaW50IGl0IHRvIGVhY2ggb2YgdGhlc2UgZGF0YWJhc2VzCiAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbGx5LgpAQCAtNzcxNCwxMCArOTQ3NCwxMCBAQAogICAgICBQQUNLQUdFX0NMQVNTRVMgPz0g4oCccGFja2FnZV88cmVwbGFjZWFibGU+cGFja2FnZWZvcm1hdDwvcmVwbGFjZWFibGU+4oCdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIDxyZXBsYWNlYWJsZT5wYWNrYWdlZm9ybWF0PC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgImlwayIsICJycG0iLCBhbmQgImRlYiIsIHdoaWNoIGFyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgImlwayIsICJycG0iLCAiZGViIiwgb3IgInRhciIgd2hpY2ggYXJlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBwYWNrYWdlIGZvcm1hdHMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgdGhyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBmb3VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBwYWNrYWdlIGZvcm1hdHMsIHlvdSBjYW4gc2V0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB3aXRoIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIG9ubHkKQEAgLTc3MzYsMTIgKzk0OTYsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgInBhY2thZ2UtbWFuYWdlbWVudCIgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgSW5jbHVkaW5nICJwYWNrYWdlLW1hbmFnZW1lbnQiIGluIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBlbnN1cmVzIHRoYXQgd2hlbiB0aGUgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgaXMgYXNzZW1ibGVkIGZvciB5b3VyIHRhcmdldCwgdGhlIGltYWdlIGluY2x1ZGVzCi0gICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50bHkta25vd24gcGFja2FnZSBkYXRhYmFzZXMgYXMgd2VsbCBhcwotICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0LXNwZWNpZmljIHRvb2xzIHJlcXVpcmVkIGZvciBydW50aW1lCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbWFuYWdlbWVudCB0byBiZSBwZXJmb3JtZWQgb24gdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgSW5jbHVkaW5nICJwYWNrYWdlLW1hbmFnZW1lbnQiIGluIHRoaXMgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBlbnN1cmVzIHRoYXQgd2hlbiB0aGUgaW1hZ2UgaXMgYXNzZW1ibGVkIGZvciB5b3VyCisgICAgICAgICAgICAgICAgICAgIHRhcmdldCwgdGhlIGltYWdlIGluY2x1ZGVzIHRoZSBjdXJyZW50bHkta25vd24gcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZXMgYXMgd2VsbCBhcyB0aGUgdGFyZ2V0LXNwZWNpZmljIHRvb2xzIHJlcXVpcmVkCisgICAgICAgICAgICAgICAgICAgIGZvciBydW50aW1lIHBhY2thZ2UgbWFuYWdlbWVudCB0byBiZSBwZXJmb3JtZWQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIHRhcmdldC4KICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LgogICAgICAgICAgICAgICAgICAgICBZb3UgY291bGQgc3RhcnQgeW91ciBpbWFnZSBvZmYgd2l0aG91dCBhbnkgZGF0YWJhc2VzCiAgICAgICAgICAgICAgICAgICAgIGJ1dCBvbmx5IGluY2x1ZGUgdGhlIHJlcXVpcmVkIG9uLXRhcmdldCBwYWNrYWdlCkBAIC03NzU1LDIxICs5NTE1LDI2IEBACiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgV2hlbmV2ZXIgeW91IHBlcmZvcm0gYW55IHNvcnQgb2YgYnVpbGQgc3RlcCB0aGF0IGNhbgotICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxseSBnZW5lcmF0ZSBhIHBhY2thZ2Ugb3IgbW9kaWZ5IGFuIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbGx5IGdlbmVyYXRlIGEgcGFja2FnZSBvciBtb2RpZnkgICBleGlzdGluZwogICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLCBpdCBpcyBhbHdheXMgYSBnb29kIGlkZWEgdG8gcmUtZ2VuZXJhdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgaW5kZXggd2l0aDoKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBpbmRleCBhZnRlciB0aGUgYnVpbGQgYnkgdXNpbmcgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgJCBiaXRiYWtlIHBhY2thZ2UtaW5kZXgKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgaXQgaXMgbm90IHN1ZmZpY2llbnQgdG8gc2ltcGx5IGRvIHRoZQotICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIEl0IG1pZ2h0IGJlIHRlbXB0aW5nIHRvIGJ1aWxkIHRoZSBwYWNrYWdlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBpbmRleCBhdCB0aGUgc2FtZSB0aW1lIHdpdGggYSBjb21tYW5kIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+c29tZS1wYWNrYWdlPC9yZXBsYWNlYWJsZT4gcGFja2FnZS1pbmRleAogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgcmVzdHJpY3Rpb24gaXMgYmVjYXVzZSBCaXRCYWtlIGRvZXMgbm90Ci0gICAgICAgICAgICAgICAgICAgIHByb3Blcmx5IHNjaGVkdWxlIHRoZSA8ZmlsZW5hbWU+cGFja2FnZS1pbmRleDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHRhcmdldCBmdWxseSBhZnRlciBhbnkgb3RoZXIgdGFyZ2V0IGhhcyBjb21wbGV0ZWQuCi0gICAgICAgICAgICAgICAgICAgIFRodXMsIGJlIHN1cmUgdG8gcnVuIHRoZSBwYWNrYWdlIHVwZGF0ZSBzdGVwIHNlcGFyYXRlbHkuCisgICAgICAgICAgICAgICAgICAgIERvIG5vdCBkbyB0aGlzIGFzIEJpdEJha2UgZG9lcyBub3Qgc2NoZWR1bGUgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggZm9yIGFmdGVyIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBwYWNrYWdlIHlvdSBhcmUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IGNhbm5vdCBiZSBzdXJlIG9mIHRoZSBwYWNrYWdlIGluZGV4CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIHBhY2thZ2UgeW91IGp1c3QgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIGJlIHN1cmUgdG8gcnVuIHRoZSBwYWNrYWdlIHVwZGF0ZSBzdGVwIHNlcGFyYXRlbHkKKyAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgYnVpbGRpbmcgYW55IHBhY2thZ2VzLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtNzc5NCw4ICs5NTU5LDggQEAKICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGlzIDxmaWxlbmFtZT50bXA8L2ZpbGVuYW1lPiBhbmQgeW91ciBzZWxlY3RlZCBwYWNrYWdlIHR5cGUKLSAgICAgICAgICAgICAgICAgICAgaXMgSVBLLCB0aGVuIHlvdXIgSVBLIHBhY2thZ2VzIGFyZSBhdmFpbGFibGUgaW4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaXBrPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIGlzIFJQTSwgdGhlbiB5b3VyIFJQTSBwYWNrYWdlcyBhcmUgYXZhaWxhYmxlIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L3JwbTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvc2VjdGlvbj4KIApAQCAtNzg1MCwxNyArOTYxNSwzOSBAQAogICAgICAgICAgICAgICAgICAgICA8dGl0bGU+VXNpbmcgUlBNPC90aXRsZT4KIAogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG5mPC9maWxlbmFtZT4gYXBwbGljYXRpb24gcGVyZm9ybXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWUgcGFja2FnZSBtYW5hZ2VtZW50IG9mIFJQTSBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHBlcmZvcm0gYW4gaW5pdGlhbCBzZXR1cCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kbmY8L2ZpbGVuYW1lPiBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRkVFRF9BUkNIUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9BUkNIUzwvZmlsZW5hbWU+PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9GRUVEX0JBU0VfUEFUSFMnPjxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfQkFTRV9QQVRIUzwvZmlsZW5hbWU+PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0ZFRURfVVJJUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9VUklTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGhhdmUgbm90IGJlZW4gc2V0IG9yIHRoZSB0YXJnZXQgaW1hZ2Ugd2FzCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBiZWZvcmUgdGhlIHZhcmlhYmxlcyB3ZXJlIHNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRE5GXyhzb2Z0d2FyZSknPkRhbmRpZmllZCBQYWNrYWdpbmcgVG9vbDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoRE5GKSBwZXJmb3JtcyBydW50aW1lIHBhY2thZ2UgbWFuYWdlbWVudCBvZiBSUE0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIERORiBmb3IgcnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbXVzdCBwZXJmb3JtIGFuIGluaXRpYWwgc2V0dXAgb24gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBmb3IgY2FzZXMgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9GRUVEXyo8L2ZpbGVuYW1lPiB2YXJpYWJsZXMgd2VyZSBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldCBhcyBwYXJ0IG9mIHRoZSBpbWFnZSB0aGF0IGlzIHJ1bm5pbmcgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1lYW5zIGlmIHlvdSBidWlsdCB5b3VyIGltYWdlIGFuZCBkaWQgbm90IG5vdCB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZXNlIHZhcmlhYmxlcyBhcyBwYXJ0IG9mIHRoZSBidWlsZCBhbmQgeW91ciBpbWFnZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgbm93IHJ1bm5pbmcgb24gdGhlIHRhcmdldCwgeW91IG5lZWQgdG8gcGVyZm9ybSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzIGluIHRoaXMgc2VjdGlvbiBpZiB5b3Ugd2FudCB0byB1c2UgcnVudGltZQorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBtYW5hZ2VtZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfKjwvZmlsZW5hbWU+IHZhcmlhYmxlcywgc2VlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRkVFRF9BUkNIUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9BUkNIUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRkVFRF9CQVNFX1BBVEhTJz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0JBU0VfUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0ZFRURfVVJJUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9VUklTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvc3NhcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uIHRoZSB0YXJnZXQsIHlvdSBtdXN0IGluZm9ybSBETkYgdGhhdCBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZXMgYXJlIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBkbyB0aGlzIGJ5IGNyZWF0aW5nIGEgZmlsZSBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMveXVtLnJlcG9zLmQvb2UtcGFja2FnZXMucmVwbzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZGVmaW5pbmcgdGhlIDxmaWxlbmFtZT5vZS1wYWNrYWdlczwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC03ODY5LDIxICs5NjU2LDY1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YWxsPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5pNTg2PC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiBmcm9tIGEgc2VydmVyIG5hbWVkCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXkuc2VydmVyPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBpbmZvcm0gPGZpbGVuYW1lPmRuZjwvZmlsZW5hbWU+IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5IG9mIHRoZXNlIGRhdGFiYXNlcyBieSBjcmVhdGluZyBhCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0Yy95dW0ucmVwb3MuZC9vZS1wYWNrYWdlcy5yZXBvPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgd2l0aCB0aGUgZm9sbG93aW5nIGNvbnRlbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3BlY2lmaWNzIGZvciBzZXR0aW5nIHVwIHRoZSB3ZWIgc2VydmVyIGFyZSB1cCB0bworICAgICAgICAgICAgICAgICAgICAgICAgeW91LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNyaXRpY2FsIHJlcXVpcmVtZW50IGlzIHRoYXQgdGhlIFVSSXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIHBvaW50IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdCByZW1vdGUgbG9jYXRpb24gZm9yIHRoZSBmZWVkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBkZXZlbG9wbWVudCBwdXJwb3NlcywgeW91IGNhbiBwb2ludCB0aGUgd2ViCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyIHRvIHRoZSBidWlsZCBzeXN0ZW0ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgZm9yIHByb2R1Y3Rpb24gdXNlLCBpdCBpcyBiZXR0ZXIgdG8gY29weQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwYWNrYWdlIGRpcmVjdG9yaWVzIHRvIGEgbG9jYXRpb24gb3V0c2lkZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBhcmVhIGFuZCB1c2UgdGhhdCBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBhdm9pZHMgc2l0dWF0aW9ucyB3aGVyZSB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlcyBvciBjaGFuZ2VzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gdGVsbGluZyBETkYgd2hlcmUgdG8gbG9vayBmb3IgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlcywgeW91IG11c3QgZGVjbGFyZSBpbmRpdmlkdWFsIGxvY2F0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgcGVyIGFyY2hpdGVjdHVyZSBvciBhIHNpbmdsZSBsb2NhdGlvbiB1c2VkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IGRvIGJvdGg6CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhbiBFeHBsaWNpdCBMaXN0IG9mIEFyY2hpdGVjdHVyZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lIGluZGl2aWR1YWwgYmFzZSBVUkxzIHRvIGlkZW50aWZ5IHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2ggcGFja2FnZSBkYXRhYmFzZSBpcyBsb2NhdGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFtvZS1wYWNrYWdlc10KICAgICAgYmFzZXVybD1odHRwOi8vbXkuc2VydmVyL3JwbS9pNTg2IGh0dHA6Ly9teS5zZXJ2ZXIvcnBtL3FlbXV4ODYgaHR0cDovL215LnNlcnZlci9ycG0vYWxsCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSB0YXJnZXQgbWFjaGluZSwgZmV0Y2ggdGhlIHJlcG9zaXRvcnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIGluZm9ybXMgRE5GIGFib3V0IGluZGl2aWR1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBkYXRhYmFzZXMgZm9yIGFsbCB0aHJlZSBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBTaW5nbGUgKEZ1bGwpIFBhY2thZ2UgSW5kZXg6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lIGEgc2luZ2xlIGJhc2UgVVJMIHRoYXQgaWRlbnRpZmllcyB3aGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGZ1bGwgcGFja2FnZSBkYXRhYmFzZSBpcyBsb2NhdGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFtvZS1wYWNrYWdlc10KKyAgICAgYmFzZXVybD1odHRwOi8vbXkuc2VydmVyL3JwbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBpbmZvcm1zIERORiBhYm91dCBhIHNpbmdsZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlIHRoYXQgY29udGFpbnMgYWxsIHRoZSBwYWNrYWdlIGluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGZvciBhbGwgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgaW5mb3JtZWQgRE5GIHdoZXJlIHRvIGZpbmQgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlcywgeW91IG5lZWQgdG8gZmV0Y2ggdGhlbToKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgIyBkbmYgbWFrZWNhY2hlCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBldmVyeXRoaW5nIGlzIHNldCB1cCwgPGZpbGVuYW1lPmRuZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBpcyBhYmxlIHRvIGZpbmQsIGluc3RhbGwsIGFuZCB1cGdyYWRlIHBhY2thZ2VzIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzcGVjaWZpZWQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIERORiBpcyBub3cgYWJsZSB0byBmaW5kLCBpbnN0YWxsLCBhbmQgdXBncmFkZSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3BlY2lmaWVkIHJlcG9zaXRvcnkgb3IgcmVwb3NpdG9yaWVzLgogICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9kbmYucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0Lyc+RE5GIGRvY3VtZW50YXRpb248L3VsaW5rPgpAQCAtODI5NCw4ICsxMDEyNSw4IEBACiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0nd29ya2luZy13aXRoLXNvdXJjZS1maWxlcyc+Ci0gICAgICAgIDx0aXRsZT5Xb3JraW5nIHdpdGggU291cmNlIEZpbGVzPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nZWZmaWNpZW50bHktZmV0Y2hpbmctc291cmNlLWZpbGVzLWR1cmluZy1hLWJ1aWxkJz4KKyAgICAgICAgPHRpdGxlPkVmZmljaWVudGx5IEZldGNoaW5nIFNvdXJjZSBGaWxlcyBEdXJpbmcgYSBCdWlsZDwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3b3JrcyB3aXRoIHNvdXJjZSBmaWxlcyBsb2NhdGVkCkBAIC04MzA5LDE2ICsxMDE0MCwxNiBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJlc2VudHMgaW5mb3JtYXRpb24gZm9yIHdvcmtpbmcgd2l0aCBzb3VyY2UKLSAgICAgICAgICAgIGZpbGVzIHRoYXQgY2FuIGxlYWQgdG8gbW9yZSBlZmZpY2llbnQgdXNlIG9mIHJlc291cmNlcyBhbmQKLSAgICAgICAgICAgIHRpbWUuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gc2hvd3MgeW91IGhvdyB5b3UgY2FuIHVzZSBtaXJyb3JzIHRvIHNwZWVkIHVwCisgICAgICAgICAgICBmZXRjaGluZyBzb3VyY2UgZmlsZXMgYW5kIGhvdyB5b3UgY2FuIHByZS1mZXRjaCBmaWxlcyBhbGwgb2Ygd2hpY2gKKyAgICAgICAgICAgIGxlYWRzIHRvIG1vcmUgZWZmaWNpZW50IHVzZSBvZiByZXNvdXJjZXMgYW5kIHRpbWUuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC1lZmZlY3RpdmUtbWlycm9ycyc+CiAgICAgICAgICAgICA8dGl0bGU+U2V0dGluZyB1cCBFZmZlY3RpdmUgTWlycm9yczwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCwgYSBnb29kIGRlYWwgdGhhdCBnb2VzIGludG8gYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgQSBnb29kIGRlYWwgdGhhdCBnb2VzIGludG8gYSBZb2N0byBQcm9qZWN0CiAgICAgICAgICAgICAgICAgYnVpbGQgaXMgc2ltcGx5IGRvd25sb2FkaW5nIGFsbCBvZiB0aGUgc291cmNlIHRhcmJhbGxzLgogICAgICAgICAgICAgICAgIE1heWJlIHlvdSBoYXZlIGJlZW4gd29ya2luZyB3aXRoIGFub3RoZXIgYnVpbGQgc3lzdGVtCiAgICAgICAgICAgICAgICAgKE9wZW5FbWJlZGRlZCBvciBBbmdzdHJvbSkgZm9yIHdoaWNoIHlvdSBoYXZlIGJ1aWx0IHVwIGEKQEAgLTgzODEsNyArMTAyMTIsNyBAQAogICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIEJpdEJha2UgY29tbWFuZCBmb3JtIHRvIGZldGNoIGFsbCB0aGUKICAgICAgICAgICAgICAgICBuZWNlc3Nhcnkgc291cmNlcyB3aXRob3V0IHN0YXJ0aW5nIHRoZSBidWlsZDoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSAtYyBmZXRjaGFsbCA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4KKyAgICAgJCBiaXRiYWtlIC1jIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBydW5hbGw9ImZldGNoIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhdGlvbiBvZiB0aGUgQml0QmFrZSBjb21tYW5kIGd1YXJhbnRlZXMgdGhhdCB5b3UKICAgICAgICAgICAgICAgICBoYXZlIGFsbCB0aGUgc291cmNlcyBmb3IgdGhhdCBCaXRCYWtlIHRhcmdldCBzaG91bGQgeW91CkBAIC04MzkxLDgxICsxMDIyMiw2IEBACiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0iYnVpbGRpbmctc29mdHdhcmUtZnJvbS1hbi1leHRlcm5hbC1zb3VyY2UiPgotICAgICAgICA8dGl0bGU+QnVpbGRpbmcgU29mdHdhcmUgZnJvbSBhbiBFeHRlcm5hbCBTb3VyY2U8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgc291cmNlIGNvZGUuCi0gICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBpbnZvbHZlcyBmZXRjaGluZyB0aGUgc291cmNlIGZpbGVzLCB1bnBhY2tpbmcKLSAgICAgICAgICAgIHRoZW0sIGFuZCB0aGVuIHBhdGNoaW5nIHRoZW0gaWYgbmVjZXNzYXJ5IGJlZm9yZSB0aGUgYnVpbGQgdGFrZXMKLSAgICAgICAgICAgIHBsYWNlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTaXR1YXRpb25zIGV4aXN0IHdoZXJlIHlvdSBtaWdodCB3YW50IHRvIGJ1aWxkIHNvZnR3YXJlIGZyb20gc291cmNlCi0gICAgICAgICAgICBmaWxlcyB0aGF0IGFyZSBleHRlcm5hbCB0byBhbmQgdGh1cyBvdXRzaWRlIG9mIHRoZQotICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlIGEgcHJvamVjdCB0aGF0IGluY2x1ZGVzIGEgbmV3IEJTUCB3aXRoCi0gICAgICAgICAgICBhIGhlYXZpbHkgY3VzdG9taXplZCBrZXJuZWwuCi0gICAgICAgICAgICBBbmQsIHlvdSB3YW50IHRvIG1pbmltaXplIGV4cG9zaW5nIHRoZSBidWlsZCBzeXN0ZW0gdG8gdGhlCi0gICAgICAgICAgICBkZXZlbG9wbWVudCB0ZWFtIHNvIHRoYXQgdGhleSBjYW4gZm9jdXMgb24gdGhlaXIgcHJvamVjdCBhbmQKLSAgICAgICAgICAgIG1haW50YWluIGV2ZXJ5b25lJ3Mgd29ya2Zsb3cgYXMgbXVjaCBhcyBwb3NzaWJsZS4KLSAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgeW91IHdhbnQgYSBrZXJuZWwgc291cmNlIGRpcmVjdG9yeSBvbiB0aGUgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgIG1hY2hpbmUgd2hlcmUgdGhlIGRldmVsb3BtZW50IG9jY3Vycy4KLSAgICAgICAgICAgIFlvdSB3YW50IHRoZSByZWNpcGUncwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgdmFyaWFibGUgdG8gcG9pbnQgdG8gdGhlIGV4dGVybmFsIGRpcmVjdG9yeSBhbmQgdXNlIGl0IGFzIGlzLCBub3QKLSAgICAgICAgICAgIGNvcHkgaXQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIGJ1aWxkIGZyb20gc29mdHdhcmUgdGhhdCBjb21lcyBmcm9tIGFuIGV4dGVybmFsIHNvdXJjZSwgYWxsIHlvdQotICAgICAgICAgICAgbmVlZCB0byBkbyBpcyBpbmhlcml0IHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtZXh0ZXJuYWxzcmMnPjxmaWxlbmFtZT5leHRlcm5hbHNyYzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIGNsYXNzIGFuZCB0aGVuIHNldCB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRFUk5BTFNSQyc+PGZpbGVuYW1lPkVYVEVSTkFMU1JDPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgdmFyaWFibGUgdG8gcG9pbnQgdG8geW91ciBleHRlcm5hbCBzb3VyY2UgY29kZS4KLSAgICAgICAgICAgIEhlcmUgYXJlIHRoZSBzdGF0ZW1lbnRzIHRvIHB1dCBpbiB5b3VyCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElOSEVSSVQgKz0gImV4dGVybmFsc3JjIgotICAgICBFWFRFUk5BTFNSQ19wbi08cmVwbGFjZWFibGU+bXlyZWNpcGU8L3JlcGxhY2VhYmxlPiA9ICI8cmVwbGFjZWFibGU+cGF0aC10by15b3VyLXNvdXJjZS10cmVlPC9yZXBsYWNlYWJsZT4iCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIHNob3dzIGhvdyB0byBhY2NvbXBsaXNoIHRoZSBzYW1lIHRoaW5nIGJ5IHNldHRpbmcKLSAgICAgICAgICAgIDxmaWxlbmFtZT5FWFRFUk5BTFNSQzwvZmlsZW5hbWU+IGluIHRoZSByZWNpcGUgaXRzZWxmIG9yIGluIHRoZQotICAgICAgICAgICAgcmVjaXBlJ3MgYXBwZW5kIGZpbGU6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEVYVEVSTkFMU1JDID0gIjxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4iCi0gICAgIEVYVEVSTkFMU1JDX0JVSUxEID0gIjxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4iCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBJbiBvcmRlciBmb3IgdGhlc2Ugc2V0dGluZ3MgdG8gdGFrZSBlZmZlY3QsIHlvdSBtdXN0IGdsb2JhbGx5Ci0gICAgICAgICAgICAgICAgb3IgbG9jYWxseSBpbmhlcml0IHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWV4dGVybmFsc3JjJz48ZmlsZW5hbWU+ZXh0ZXJuYWxzcmM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgY2xhc3MuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5leHRlcm5hbHNyYy5iYmNsYXNzPC9maWxlbmFtZT4gYnVpbGRzCi0gICAgICAgICAgICB0aGUgc291cmNlIGNvZGUgaW4gYSBkaXJlY3Rvcnkgc2VwYXJhdGUgZnJvbSB0aGUgZXh0ZXJuYWwgc291cmNlCi0gICAgICAgICAgICBkaXJlY3RvcnkgYXMgc3BlY2lmaWVkIGJ5Ci0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhURVJOQUxTUkMnPjxmaWxlbmFtZT5FWFRFUk5BTFNSQzwvZmlsZW5hbWU+PC91bGluaz4uCi0gICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBoYXZlIHRoZSBzb3VyY2UgYnVpbHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGluCi0gICAgICAgICAgICB3aGljaCBpdCByZXNpZGVzLCBvciBzb21lIG90aGVyIG5vbWluYXRlZCBkaXJlY3RvcnksIHlvdSBjYW4gc2V0Ci0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhURVJOQUxTUkNfQlVJTEQnPjxmaWxlbmFtZT5FWFRFUk5BTFNSQ19CVUlMRDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIHRvIHBvaW50IHRvIHRoYXQgZGlyZWN0b3J5OgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBFWFRFUk5BTFNSQ19CVUlMRF9wbi08cmVwbGFjZWFibGU+bXlyZWNpcGU8L3JlcGxhY2VhYmxlPiA9ICI8cmVwbGFjZWFibGU+cGF0aC10by15b3VyLXNvdXJjZS10cmVlPC9yZXBsYWNlYWJsZT4iCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KICAgICA8c2VjdGlvbiBpZD0ic2VsZWN0aW5nLWFuLWluaXRpYWxpemF0aW9uLW1hbmFnZXIiPgogICAgICAgICA8dGl0bGU+U2VsZWN0aW5nIGFuIEluaXRpYWxpemF0aW9uIE1hbmFnZXI8L3RpdGxlPgogCkBAIC04ODYzLDYgKzEwNjE5LDU2NiBAQAogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCisKKworCisgICAgPHNlY3Rpb24gaWQ9J21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz4KKyAgICAgICAgPHRpdGxlPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE1hbnkgZmFjdG9ycyBjYW4gaW5mbHVlbmNlIHRoZSBxdWFsaXR5IG9mIGEgYnVpbGQuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IHVwZ3JhZGUgYSByZWNpcGUgdG8gdXNlIGEgbmV3IHZlcnNpb24gb2YgYW4KKyAgICAgICAgICAgIHVwc3RyZWFtIHNvZnR3YXJlIHBhY2thZ2Ugb3IgeW91IGV4cGVyaW1lbnQgd2l0aCBzb21lIG5ldworICAgICAgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzdWJ0bGUgY2hhbmdlcyBjYW4gb2NjdXIgdGhhdCB5b3UgbWlnaHQKKyAgICAgICAgICAgIG5vdCBkZXRlY3QgdW50aWwgbGF0ZXIuCisgICAgICAgICAgICBDb25zaWRlciB0aGUgY2FzZSB3aGVyZSB5b3VyIHJlY2lwZSBpcyB1c2luZyBhIG5ld2VyIHZlcnNpb24gb2YKKyAgICAgICAgICAgIGFuIHVwc3RyZWFtIHBhY2thZ2UuCisgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGEgbmV3IHZlcnNpb24gb2YgYSBwaWVjZSBvZiBzb2Z0d2FyZSBtaWdodAorICAgICAgICAgICAgaW50cm9kdWNlIGFuIG9wdGlvbmFsIGRlcGVuZGVuY3kgb24gYW5vdGhlciBsaWJyYXJ5LCB3aGljaCBpcworICAgICAgICAgICAgYXV0by1kZXRlY3RlZC4KKyAgICAgICAgICAgIElmIHRoYXQgbGlicmFyeSBoYXMgYWxyZWFkeSBiZWVuIGJ1aWx0IHdoZW4gdGhlIHNvZnR3YXJlIGlzCisgICAgICAgICAgICBidWlsZGluZywgdGhlIHNvZnR3YXJlIHdpbGwgbGluayB0byB0aGUgYnVpbHQgbGlicmFyeSBhbmQgdGhhdAorICAgICAgICAgICAgbGlicmFyeSB3aWxsIGJlIHB1bGxlZCBpbnRvIHlvdXIgaW1hZ2UgYWxvbmcgd2l0aCB0aGUgbmV3CisgICAgICAgICAgICBzb2Z0d2FyZSBldmVuIGlmIHlvdSBkaWQgbm90IHdhbnQgdGhlIGxpYnJhcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYnVpbGRoaXN0b3J5Jz48ZmlsZW5hbWU+YnVpbGRoaXN0b3J5PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgY2xhc3MgZXhpc3RzIHRvIGhlbHAgeW91IG1haW50YWluIHRoZSBxdWFsaXR5IG9mIHlvdXIgYnVpbGQKKyAgICAgICAgICAgIG91dHB1dC4KKyAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBjbGFzcyB0byBoaWdobGlnaHQgdW5leHBlY3RlZCBhbmQgcG9zc2libHkKKyAgICAgICAgICAgIHVud2FudGVkIGNoYW5nZXMgaW4gdGhlIGJ1aWxkIG91dHB1dC4KKyAgICAgICAgICAgIFdoZW4geW91IGVuYWJsZSBidWlsZCBoaXN0b3J5LCBpdCByZWNvcmRzIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgICAgICAgY29udGVudHMgb2YgZWFjaCBwYWNrYWdlIGFuZCBpbWFnZSBhbmQgdGhlbiBjb21taXRzIHRoYXQKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgd2hlcmUgeW91IGNhbiBleGFtaW5lCisgICAgICAgICAgICB0aGUgaW5mb3JtYXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICBIb3cgeW91IGNhbiBlbmFibGUgYW5kIGRpc2FibGUgYnVpbGQgaGlzdG9yeQorICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIEhvdyB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGJ1aWxkIGhpc3RvcnkgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICBIb3cgdG8gbGltaXQgdGhlIGluZm9ybWF0aW9uIHVzZWQgZm9yIGJ1aWxkIGhpc3RvcnkKKyAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICBIb3cgdG8gZXhhbWluZSB0aGUgYnVpbGQgaGlzdG9yeSBmcm9tIGJvdGggYQorICAgICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSBhbmQgd2ViIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdlbmFibGluZy1hbmQtZGlzYWJsaW5nLWJ1aWxkLWhpc3RvcnknPgorICAgICAgICAgICAgPHRpdGxlPkVuYWJsaW5nIGFuZCBEaXNhYmxpbmcgQnVpbGQgSGlzdG9yeTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJ1aWxkIGhpc3RvcnkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBUbyBlbmFibGUgaXQsIGFkZCB0aGUgZm9sbG93aW5nIDxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgYW5kIHNldCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlVJTERISVNUT1JZX0NPTU1JVCc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGF0IHRoZSBlbmQgb2YgeW91cgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkhFUklUICs9ICJidWlsZGhpc3RvcnkiCisgICAgIEJVSUxESElTVE9SWV9DT01NSVQgPSAiMSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRW5hYmxpbmcgYnVpbGQgaGlzdG9yeSBhcyBwcmV2aW91c2x5IGRlc2NyaWJlZCBjYXVzZXMgdGhlCisgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjb2xsZWN0IGJ1aWxkIG91dHB1dCBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIGFuZCBjb21taXQgaXQgYXMgYSBzaW5nbGUgY29tbWl0IHRvIGEgbG9jYWwKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2dpdCc+R2l0PC91bGluaz4KKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBFbmFibGluZyBidWlsZCBoaXN0b3J5IGluY3JlYXNlcyB5b3VyIGJ1aWxkIHRpbWVzIHNsaWdodGx5LAorICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFybHkgZm9yIGltYWdlcywgYW5kIGluY3JlYXNlcyB0aGUgYW1vdW50IG9mIGRpc2sKKyAgICAgICAgICAgICAgICAgICAgc3BhY2UgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBkaXNhYmxlIGJ1aWxkIGhpc3RvcnkgYnkgcmVtb3ZpbmcgdGhlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgc3RhdGVtZW50cyBmcm9tIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1bmRlcnN0YW5kaW5nLXdoYXQtdGhlLWJ1aWxkLWhpc3RvcnktY29udGFpbnMnPgorICAgICAgICAgICAgPHRpdGxlPlVuZGVyc3RhbmRpbmcgV2hhdCB0aGUgQnVpbGQgSGlzdG9yeSBDb250YWluczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJ1aWxkIGhpc3RvcnkgaW5mb3JtYXRpb24gaXMga2VwdCBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRPUERJUic+PGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fS9idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgYXMgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlVJTERISVNUT1JZX0RJUic+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGFiYnJldmlhdGVkIGxpc3Rpbmc6CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2J1aWxkaGlzdG9yeS5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSI0aW4iIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEF0IHRoZSB0b3AgbGV2ZWwsIGEgPGZpbGVuYW1lPm1ldGFkYXRhLXJldnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUgZXhpc3RzIHRoYXQgbGlzdHMgdGhlIHJldmlzaW9ucyBvZiB0aGUgcmVwb3NpdG9yaWVzIGZvcgorICAgICAgICAgICAgICAgIHRoZSBlbmFibGVkIGxheWVycyB3aGVuIHRoZSBidWlsZCB3YXMgcHJvZHVjZWQuCisgICAgICAgICAgICAgICAgVGhlIHJlc3Qgb2YgdGhlIGRhdGEgc3BsaXRzIGludG8gc2VwYXJhdGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZXM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmltYWdlczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5zZGs8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcywgdGhlIGNvbnRlbnRzIG9mCisgICAgICAgICAgICAgICAgd2hpY2ggYXJlIGRlc2NyaWJlZCBhcyBmb2xsb3dzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGQtaGlzdG9yeS1wYWNrYWdlLWluZm9ybWF0aW9uJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+QnVpbGQgSGlzdG9yeSBQYWNrYWdlIEluZm9ybWF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgaGlzdG9yeSBmb3IgZWFjaCBwYWNrYWdlIGNvbnRhaW5zIGEgdGV4dCBmaWxlIHRoYXQgaGFzCisgICAgICAgICAgICAgICAgICAgIG5hbWUtdmFsdWUgcGFpcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnkvcGFja2FnZXMvaTU4Ni1wb2t5LWxpbnV4L2J1c3lib3gvYnVzeWJveC9sYXRlc3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb250YWlucyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBWID0gMS4yMi4xCisgICAgIFBSID0gcjMyCisgICAgIFJQUk9WSURFUyA9CisgICAgIFJERVBFTkRTID0gZ2xpYmMgKD49IDIuMjApIHVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZworICAgICBSUkVDT01NRU5EUyA9IGJ1c3lib3gtc3lzbG9nIGJ1c3lib3gtdWRoY3BjIHVwZGF0ZS1yYy5kCisgICAgIFBLR1NJWkUgPSA1NDAxNjgKKyAgICAgRklMRVMgPSAvdXNyL2Jpbi8qIC91c3Ivc2Jpbi8qIC91c3IvbGliL2J1c3lib3gvKiAvdXNyL2xpYi9saWIqLnNvLiogXAorICAgICAgICAvZXRjIC9jb20gL3ZhciAvYmluLyogL3NiaW4vKiAvbGliLyouc28uKiAvbGliL3VkZXYvcnVsZXMuZCBcCisgICAgICAgIC91c3IvbGliL3VkZXYvcnVsZXMuZCAvdXNyL3NoYXJlL2J1c3lib3ggL3Vzci9saWIvYnVzeWJveC8qIFwKKyAgICAgICAgL3Vzci9zaGFyZS9waXhtYXBzIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zIC91c3Ivc2hhcmUvaWRsIFwKKyAgICAgICAgL3Vzci9zaGFyZS9vbWYgL3Vzci9zaGFyZS9zb3VuZHMgL3Vzci9saWIvYm9ub2JvL3NlcnZlcnMKKyAgICAgRklMRUxJU1QgPSAvYmluL2J1c3lib3ggL2Jpbi9idXN5Ym94Lm5vc3VpZCAvYmluL2J1c3lib3guc3VpZCAvYmluL3NoIFwKKyAgICAgICAgL2V0Yy9idXN5Ym94LmxpbmtzLm5vc3VpZCAvZXRjL2J1c3lib3gubGlua3Muc3VpZAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE1vc3Qgb2YgdGhlc2UgbmFtZS12YWx1ZSBwYWlycyBjb3JyZXNwb25kIHRvIHZhcmlhYmxlcworICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIHByb2R1Y2UgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBleGNlcHRpb25zIGFyZSA8ZmlsZW5hbWU+RklMRUxJU1Q8L2ZpbGVuYW1lPiwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGFjdHVhbCBsaXN0IG9mIGZpbGVzIGluIHRoZSBwYWNrYWdlLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBLR1NJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlIHRvdGFsIHNpemUgb2YKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMgaW4gdGhlIHBhY2thZ2UgaW4gYnl0ZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgZmlsZSBhbHNvIGV4aXN0cyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSByZWNpcGUgZnJvbQorICAgICAgICAgICAgICAgICAgICB3aGljaCB0aGUgcGFja2FnZSBjYW1lIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnkvcGFja2FnZXMvaTU4Ni1wb2t5LWxpbnV4L2J1c3lib3gvbGF0ZXN0PC9maWxlbmFtZT4pOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBWID0gMS4yMi4xCisgICAgIFBSID0gcjMyCisgICAgIERFUEVORFMgPSBpbml0c2NyaXB0cyBrZXJuLXRvb2xzLW5hdGl2ZSB1cGRhdGUtcmMuZC1uYXRpdmUgXAorICAgICAgICB2aXJ0dWFsL2k1ODYtcG9reS1saW51eC1jb21waWxlcmxpYnMgdmlydHVhbC9pNTg2LXBva3ktbGludXgtZ2NjIFwKKyAgICAgICAgdmlydHVhbC9saWJjIHZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcworICAgICBQQUNLQUdFUyA9IGJ1c3lib3gtcHRlc3QgYnVzeWJveC1odHRwZCBidXN5Ym94LXVkaGNwZCBidXN5Ym94LXVkaGNwYyBcCisgICAgICAgIGJ1c3lib3gtc3lzbG9nIGJ1c3lib3gtbWRldiBidXN5Ym94LWh3Y2xvY2sgYnVzeWJveC1kYmcgXAorICAgICAgICBidXN5Ym94LXN0YXRpY2RldiBidXN5Ym94LWRldiBidXN5Ym94LWRvYyBidXN5Ym94LWxvY2FsZSBidXN5Ym94CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgZm9yIHRob3NlIHJlY2lwZXMgZmV0Y2hlZCBmcm9tIGEgdmVyc2lvbiBjb250cm9sCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSAoZS5nLiwgR2l0KSwgYSBmaWxlIGV4aXN0cyB0aGF0IGxpc3RzIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSByZWNpcGUgYW5kIGxpc3RzCisgICAgICAgICAgICAgICAgICAgIHRoZSBhY3R1YWwgcmV2aXNpb25zIHVzZWQgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgTGlzdGVkIGFuZCBhY3R1YWwgcmV2aXNpb25zIG1pZ2h0IGRpZmZlciB3aGVuCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAkezx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1BVVRPUkVWJz48ZmlsZW5hbWU+QVVUT1JFVjwvZmlsZW5hbWU+PC91bGluaz59LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgYXNzdW1pbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS9wYWNrYWdlcy9xZW11eDg2LXBva3ktbGludXgvbGludXgteW9jdG8vbGF0ZXN0X3NyY3JldjwvZmlsZW5hbWU+KToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIFNSQ1JFVl9tYWNoaW5lID0gIjM4Y2Q1NjBkNTAyMmVkMmRiZDFhYjBkY2E5NjQyZTQ3Yzk4YTBhYTEiCisgICAgIFNSQ1JFVl9tYWNoaW5lID0gIjM4Y2Q1NjBkNTAyMmVkMmRiZDFhYjBkY2E5NjQyZTQ3Yzk4YTBhYTEiCisgICAgICMgU1JDUkVWX21ldGEgPSAiYTIyN2YyMGVmZjA1NmU1MTFkNTA0YjJlNDkwZjM3NzRhYjI2MGQ2ZiIKKyAgICAgU1JDUkVWX21ldGEgPSAiYTIyN2YyMGVmZjA1NmU1MTFkNTA0YjJlNDkwZjM3NzRhYjI2MGQ2ZiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS1jb2xsZWN0LXNyY3JldnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHdpdGggdGhlIDxmaWxlbmFtZT4tYTwvZmlsZW5hbWU+IG9wdGlvbiB0bworICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IHRoZSBzdG9yZWQgPGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+IHZhbHVlcworICAgICAgICAgICAgICAgICAgICBmcm9tIGJ1aWxkIGhpc3RvcnkgYW5kIHJlcG9ydCB0aGVtIGluIGEgZm9ybWF0IHN1aXRhYmxlIGZvcgorICAgICAgICAgICAgICAgICAgICB1c2UgaW4gZ2xvYmFsIGNvbmZpZ3VyYXRpb24gKGUuZy4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgYSBkaXN0cm8gaW5jbHVkZSBmaWxlKQorICAgICAgICAgICAgICAgICAgICB0byBvdmVycmlkZSBmbG9hdGluZyA8ZmlsZW5hbWU+QVVUT1JFVjwvZmlsZW5hbWU+IHZhbHVlcworICAgICAgICAgICAgICAgICAgICB0byBhIGZpeGVkIHNldCBvZiByZXZpc2lvbnMuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgc29tZSBleGFtcGxlIG91dHB1dCBmcm9tIHRoaXMgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJ1aWxkaGlzdG9yeS1jb2xsZWN0LXNyY3JldnMgLWEKKyAgICAgIyBpNTg2LXBva3ktbGludXgKKyAgICAgU1JDUkVWX3BuLWdsaWJjID0gImI4MDc5ZGQwZDM2MDY0OGU0ZThkZTQ4NjU2YzVjMzg5NzI2MjEwNzIiCisgICAgIFNSQ1JFVl9wbi1nbGliYy1pbml0aWFsID0gImI4MDc5ZGQwZDM2MDY0OGU0ZThkZTQ4NjU2YzVjMzg5NzI2MjEwNzIiCisgICAgIFNSQ1JFVl9wbi1vcGtnLXV0aWxzID0gIjUzMjc0ZjA4NzU2NWZkNDVkODQ1MmM1MzY3OTk3YmE2YTY4MmEzN2EiCisgICAgIFNSQ1JFVl9wbi1rbW9kID0gImZkNTY2MzhhZWQzZmUxNDcwMTViZmExMGVkNGE1Zjc0OTEzMDNjYjQiCisgICAgICMgeDg2XzY0LWxpbnV4CisgICAgIFNSQ1JFVl9wbi1ndGstZG9jLXN0dWItbmF0aXZlID0gIjFkZWEyNjY1OTNlZGI3NjZkNmQ4OThjNzk0NTFlZjE5M2ViMTdjZmEiCisgICAgIFNSQ1JFVl9wbi1kdGMtbmF0aXZlID0gIjY1Y2M0ZDI3NDhhMmMyZTZmMjdmMWNmMzllMDdhNWRiYWJkODBlYmYiCisgICAgIFNSQ1JFVl9wbi11cGRhdGUtcmMuZC1uYXRpdmUgPSAiZWNhNjgwZGRmMjhkMDI0OTU0ODk1ZjU5YTI0MWE2MjJkZDU3NWMxMSIKKyAgICAgU1JDUkVWX2dsaWJjX3BuLWNyb3NzLWxvY2FsZWRlZi1uYXRpdmUgPSAiYjgwNzlkZDBkMzYwNjQ4ZTRlOGRlNDg2NTZjNWMzODk3MjYyMTA3MiIKKyAgICAgU1JDUkVWX2xvY2FsZWRlZl9wbi1jcm9zcy1sb2NhbGVkZWYtbmF0aXZlID0gImM4MzMzNjczNDhkMzlkYWQ3YmEwMTg5OTBiZmRhZmZhZWM4ZTllZDMiCisgICAgIFNSQ1JFVl9wbi1wcmVsaW5rLW5hdGl2ZSA9ICJmYWEwNjlkZWVjOTliZjYxNDE4ZDBiYWI4MzFjODNkN2MxYjc5N2NhIgorICAgICBTUkNSRVZfcG4tb3BrZy11dGlscy1uYXRpdmUgPSAiNTMyNzRmMDg3NTY1ZmQ0NWQ4NDUyYzUzNjc5OTdiYTZhNjgyYTM3YSIKKyAgICAgU1JDUkVWX3BuLWtlcm4tdG9vbHMtbmF0aXZlID0gIjIzMzQ1Yjg4NDZmZTRiZDE2N2VmZGYxYmQ4YTEyMjRiMmJhOWE1ZmYiCisgICAgIFNSQ1JFVl9wbi1rbW9kLW5hdGl2ZSA9ICJmZDU2NjM4YWVkM2ZlMTQ3MDE1YmZhMTBlZDRhNWY3NDkxMzAzY2I0IgorICAgICAjIHFlbXV4ODYtcG9reS1saW51eAorICAgICBTUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0byA9ICIzOGNkNTYwZDUwMjJlZDJkYmQxYWIwZGNhOTY0MmU0N2M5OGEwYWExIgorICAgICBTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0byA9ICJhMjI3ZjIwZWZmMDU2ZTUxMWQ1MDRiMmU0OTBmMzc3NGFiMjYwZDZmIgorICAgICAjIGFsbC1wb2t5LWxpbnV4CisgICAgIFNSQ1JFVl9wbi11cGRhdGUtcmMuZCA9ICJlY2E2ODBkZGYyOGQwMjQ5NTQ4OTVmNTlhMjQxYTYyMmRkNTc1YzExIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBub3RlcyBvbiB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnktY29sbGVjdC1zcmNyZXZzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgb25seSB2YWx1ZXMgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPiB3YXMgbm90IGhhcmRjb2RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXN1YWxseSB3aGVuIDxmaWxlbmFtZT5BVVRPUkVWPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdXNlZCkgYXJlIHJlcG9ydGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT4tYTwvZmlsZW5hbWU+IG9wdGlvbiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgYWxsIDxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPiB2YWx1ZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBzdGF0ZW1lbnRzIG1pZ2h0IG5vdCBoYXZlIGFueSBlZmZlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3ZlcnJpZGVzIGFyZSBhcHBsaWVkIGVsc2V3aGVyZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4gb3B0aW9uIHRvIGFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmZvcmNldmFyaWFibGU8L2ZpbGVuYW1lPiBvdmVycmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBlYWNoIG91dHB1dCBsaW5lIGlmIHlvdSBuZWVkIHRvIHdvcmsgYXJvdW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcmVzdHJpY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBkb2VzIGFwcGx5IHNwZWNpYWwgaGFuZGxpbmcgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBmb3IgbXVsdGlwbGUgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBzY3JpcHQgZG9lcyBwbGFjZSBhIGNvbW1lbnQgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2ggc2V0IG9mIHZhbHVlcyB0aGF0IHNwZWNpZmllcyB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlwbGV0IHRvIHdoaWNoIHRoZXkgYmVsb25nIGFzIHByZXZpb3VzbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd24gKGUuZy4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pNTg2LXBva3ktbGludXg8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdidWlsZC1oaXN0b3J5LWltYWdlLWluZm9ybWF0aW9uJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+QnVpbGQgSGlzdG9yeSBJbWFnZSBJbmZvcm1hdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGVzIHByb2R1Y2VkIGZvciBlYWNoIGltYWdlIGFyZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbWFnZS1maWxlczo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgc2VsZWN0ZWQgZmlsZXMgZnJvbSB0aGUgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGVzIGFyZSBkZWZpbmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJVSUxESElTVE9SWV9JTUFHRV9GSUxFUyc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9JTUFHRV9GSUxFUzwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkLWlkLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh1bWFuLXJlYWRhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYW5kIG1ldGFkYXRhIHNvdXJjZSByZXZpc2lvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBmdWxsIGJ1aWxkIGhlYWRlciBhcyBwcmludGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgQml0QmFrZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5kb3Q6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRlbmN5IGdyYXBocyBmb3IgdGhlIGltYWdlIHRoYXQgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIDxmaWxlbmFtZT5ncmFwaHZpejwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5maWxlcy1pbi1pbWFnZS50eHQ6PC9maWxlbmFtZT4KKyAJICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGZpbGVzIGluIHRoZSBpbWFnZSB3aXRoIHBlcm1pc3Npb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyLCBncm91cCwgc2l6ZSwgYW5kIHN5bWxpbmsgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmltYWdlLWluZm8udHh0OjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSB0ZXh0IGZpbGUgY29udGFpbmluZyBuYW1lLXZhbHVlIHBhaXJzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgbGlzdGluZyBleGFtcGxlIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluc3RhbGxlZC1wYWNrYWdlLW5hbWVzLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBpbnN0YWxsZWQgcGFja2FnZXMgYnkgbmFtZSBvbmx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnN0YWxsZWQtcGFja2FnZS1zaXplcy50eHQ6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIG9yZGVyZWQgYnkgc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2VzLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBpbnN0YWxsZWQgcGFja2FnZXMgd2l0aCBmdWxsIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxlZCBwYWNrYWdlIGluZm9ybWF0aW9uIGlzIGFibGUgdG8gYmUgZ2F0aGVyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwcm9kdWNlZCBldmVuIGlmIHBhY2thZ2UgbWFuYWdlbWVudCBpcyBkaXNhYmxlZAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBmaW5hbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgPGZpbGVuYW1lPmltYWdlLWluZm8udHh0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRElTVFJPID0gcG9reQorICAgICBESVNUUk9fVkVSU0lPTiA9IDEuNworICAgICBVU0VSX0NMQVNTRVMgPSBidWlsZHN0YXRzIGltYWdlLW1rbGlicyBpbWFnZS1wcmVsaW5rCisgICAgIElNQUdFX0NMQVNTRVMgPSBpbWFnZV90eXBlcworICAgICBJTUFHRV9GRUFUVVJFUyA9IGRlYnVnLXR3ZWFrcworICAgICBJTUFHRV9MSU5HVUFTID0KKyAgICAgSU1BR0VfSU5TVEFMTCA9IHBhY2thZ2Vncm91cC1jb3JlLWJvb3QgcnVuLXBvc3RpbnN0cworICAgICBCQURfUkVDT01NRU5EQVRJT05TID0KKyAgICAgTk9fUkVDT01NRU5EQVRJT05TID0KKyAgICAgUEFDS0FHRV9FWENMVURFID0KKyAgICAgUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQgPSB3cml0ZV9wYWNrYWdlX21hbmlmZXN0OyBsaWNlbnNlX2NyZWF0ZV9tYW5pZmVzdDsgXAorICAgICAgICB3cml0ZV9pbWFnZV9tYW5pZmVzdCA7IGJ1aWxkaGlzdG9yeV9saXN0X2luc3RhbGxlZF9pbWFnZSA7IFwKKyAgICAgICAgYnVpbGRoaXN0b3J5X2dldF9pbWFnZV9pbnN0YWxsZWQgOyBzc2hfYWxsb3dfZW1wdHlfcGFzc3dvcmQ7ICBcCisgICAgICAgIHBvc3RpbnN0X2VuYWJsZV9sb2dnaW5nOyByb290ZnNfdXBkYXRlX3RpbWVzdGFtcCA7IHNzaF9kaXNhYmxlX2Ruc19sb29rdXAgOworICAgICBJTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EID0gICBidWlsZGhpc3RvcnlfZ2V0X2ltYWdlaW5mbyA7CisgICAgIElNQUdFU0laRSA9IDY5MDAKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPdGhlciB0aGFuIDxmaWxlbmFtZT5JTUFHRVNJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHRvdGFsIHNpemUgb2YgdGhlIGZpbGVzIGluIHRoZSBpbWFnZSBpbiBLYnl0ZXMsIHRoZQorICAgICAgICAgICAgICAgICAgICBuYW1lLXZhbHVlIHBhaXJzIGFyZSB2YXJpYWJsZXMgdGhhdCBtYXkgaGF2ZSBpbmZsdWVuY2VkIHRoZQorICAgICAgICAgICAgICAgICAgICBjb250ZW50IG9mIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiBpcyBvZnRlbiB1c2VmdWwgd2hlbiB5b3UgYXJlIHRyeWluZyB0bworICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmUgd2h5IGEgY2hhbmdlIGluIHRoZSBwYWNrYWdlIG9yIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgbGlzdGluZ3MgaGFzIG9jY3VycmVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLWJ1aWxkLWhpc3RvcnktdG8tZ2F0aGVyLWltYWdlLWluZm9ybWF0aW9uLW9ubHknPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBCdWlsZCBIaXN0b3J5IHRvIEdhdGhlciBJbWFnZSBJbmZvcm1hdGlvbiBPbmx5PC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyB5b3UgY2FuIHNlZSwgYnVpbGQgaGlzdG9yeSBwcm9kdWNlcyBpbWFnZSBpbmZvcm1hdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGRlcGVuZGVuY3kgZ3JhcGhzLCBzbyB5b3UgY2FuIHNlZSB3aHkgc29tZXRoaW5nCisgICAgICAgICAgICAgICAgICAgIHdhcyBwdWxsZWQgaW50byB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUganVzdCBpbnRlcmVzdGVkIGluIHRoaXMgaW5mb3JtYXRpb24gYW5kIG5vdAorICAgICAgICAgICAgICAgICAgICBpbnRlcmVzdGVkIGluIGNvbGxlY3Rpbmcgc3BlY2lmaWMgcGFja2FnZSBvciBTREsKKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24sIHlvdSBjYW4gZW5hYmxlIHdyaXRpbmcgb25seSBpbWFnZSBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgICAgICB3aXRob3V0IGFueSBoaXN0b3J5IGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCArPSAiYnVpbGRoaXN0b3J5IgorICAgICBCVUlMREhJU1RPUllfQ09NTUlUID0gIjAiCisgICAgIEJVSUxESElTVE9SWV9GRUFUVVJFUyA9ICJpbWFnZSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBIZXJlLCB5b3Ugc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlVJTERISVNUT1JZX0ZFQVRVUkVTJz48ZmlsZW5hbWU+QlVJTERISVNUT1JZX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byB1c2UgdGhlIGltYWdlIGZlYXR1cmUgb25seS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdidWlsZC1oaXN0b3J5LXNkay1pbmZvcm1hdGlvbic+CisgICAgICAgICAgICAgICAgPHRpdGxlPkJ1aWxkIEhpc3RvcnkgU0RLIEluZm9ybWF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCdWlsZCBoaXN0b3J5IGNvbGxlY3RzIHNpbWlsYXIgaW5mb3JtYXRpb24gb24gdGhlIGNvbnRlbnRzCisgICAgICAgICAgICAgICAgICAgIG9mIFNES3MKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmJpdGJha2UgLWMgcG9wdWxhdGVfc2RrIGltYWdlbmFtZTwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBhcyBjb21wYXJlZCB0byBpbmZvcm1hdGlvbiBpdCBjb2xsZWN0cyBmb3IgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhpcyBpbmZvcm1hdGlvbiBkaWZmZXJzIGRlcGVuZGluZyBvbiB3aGV0aGVyCisgICAgICAgICAgICAgICAgICAgIGFuIGV4dGVuc2libGUgb3Igc3RhbmRhcmQgU0RLIGlzIGJlaW5nIHByb2R1Y2VkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIGZpbGVzIHByb2R1Y2VkIGZvciBTREtzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5maWxlcy1pbi1zZGsudHh0OjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGZpbGVzIGluIHRoZSBTREsgd2l0aCBwZXJtaXNzaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lciwgZ3JvdXAsIHNpemUsIGFuZCBzeW1saW5rIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbGlzdCBpbmNsdWRlcyBib3RoIHRoZSBob3N0IGFuZCB0YXJnZXQgcGFydHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZGstaW5mby50eHQ6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIHRleHQgZmlsZSBjb250YWluaW5nIG5hbWUtdmFsdWUgcGFpcnMgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgbGlzdGluZyBleGFtcGxlIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZS10YXNrLXNpemVzLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgdGV4dCBmaWxlIGNvbnRhaW5pbmcgbmFtZS12YWx1ZSBwYWlycyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdGFzayBncm91cCBzaXplcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrcyBoYXZlIGEgdG90YWwgc2l6ZSkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zc3RhdGUtdGFzay1zaXplcy50eHQ8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RzIG9ubHkgd2hlbiBhbiBleHRlbnNpYmxlIFNESyBpcyBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc3RhdGUtcGFja2FnZS1zaXplcy50eHQ6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIHRleHQgZmlsZSBjb250YWluaW5nIG5hbWUtdmFsdWUgcGFpcnMgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGZvciB0aGUgc2hhcmVkLXN0YXRlIHBhY2thZ2VzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzIGluIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zc3RhdGUtcGFja2FnZS1zaXplcy50eHQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgZXhpc3RzIG9ubHkgd2hlbiBhbiBleHRlbnNpYmxlIFNESyBpcyBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZGstZmlsZXM6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGZvbGRlciB0aGF0IGNvbnRhaW5zIGNvcGllcyBvZiB0aGUgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW50aW9uZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERISVNUT1JZX1NES19GSUxFUzwvZmlsZW5hbWU+IGlmIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGFyZSBwcmVzZW50IGluIHRoZSBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgZGVmYXVsdCB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMREhJU1RPUllfU0RLX0ZJTEVTPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyB0byB0aGUgZXh0ZW5zaWJsZSBTREsgYWx0aG91Z2ggeW91IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCBpdCBkaWZmZXJlbnRseSBpZiB5b3Ugd291bGQgbGlrZSB0byBwdWxsIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgZmlsZXMgZnJvbSB0aGUgc3RhbmRhcmQgU0RLLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBkZWZhdWx0IGZpbGVzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvYXV0by5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9ja2VkLXNpZ3MuaW5jPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2RldnRvb2wuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIGZvciBhbiBleHRlbnNpYmxlIFNESywgdGhlc2UgZmlsZXMgZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkIGludG8gdGhlIDxmaWxlbmFtZT5zZGstZmlsZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFwcGVhcnMgdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoIG9mIHRoZSA8ZmlsZW5hbWU+aG9zdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT50YXJnZXQ8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcG9ydGlvbnMgb2YgdGhlIFNESyB0aGF0IHJ1biBvbiB0aGUgaG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvbiB0aGUgdGFyZ2V0LCByZXNwZWN0aXZlbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlsZXMgZm9yIHRoZSBtb3N0IHBhcnQgYXJlIGVtcHR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gcHJvZHVjaW5nIGFuIGV4dGVuc2libGUgU0RLIGJlY2F1c2UgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIG9mIFNESyBpcyBub3QgY29uc3RydWN0ZWQgZnJvbSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBpcyB0aGUgc3RhbmRhcmQgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwZW5kcy5kb3Q6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGVuY3kgZ3JhcGggZm9yIHRoZSBTREsgdGhhdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3JhcGh2aXo8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2UtbmFtZXMudHh0OjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIGJ5IG5hbWUgb25seS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2Utc2l6ZXMudHh0OjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIG9yZGVyZWQgYnkgc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2VzLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGluc3RhbGxlZCBwYWNrYWdlcyB3aXRoIGZ1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgZmlsZW5hbWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIDxmaWxlbmFtZT5zZGstaW5mby50eHQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBESVNUUk8gPSBwb2t5CisgICAgIERJU1RST19WRVJTSU9OID0gMS4zK3NuYXBzaG90LTIwMTMwMzI3CisgICAgIFNES19OQU1FID0gcG9reS1nbGliYy1pNjg2LWFybQorICAgICBTREtfVkVSU0lPTiA9IDEuMytzbmFwc2hvdAorICAgICBTREtNQUNISU5FID0KKyAgICAgU0RLSU1BR0VfRkVBVFVSRVMgPSBkZXYtcGtncyBkYmctcGtncworICAgICBCQURfUkVDT01NRU5EQVRJT05TID0KKyAgICAgU0RLU0laRSA9IDM1MjcxMgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE90aGVyIHRoYW4gPGZpbGVuYW1lPlNES1NJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHRvdGFsIHNpemUgb2YgdGhlIGZpbGVzIGluIHRoZSBTREsgaW4gS2J5dGVzLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbmFtZS12YWx1ZSBwYWlycyBhcmUgdmFyaWFibGVzIHRoYXQgbWlnaHQgaGF2ZSBpbmZsdWVuY2VkCisgICAgICAgICAgICAgICAgICAgIHRoZSBjb250ZW50IG9mIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gaXMgb2Z0ZW4gdXNlZnVsIHdoZW4geW91IGFyZSB0cnlpbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIHdoeSBhIGNoYW5nZSBpbiB0aGUgcGFja2FnZSBvciBmaWxlIGxpc3RpbmdzCisgICAgICAgICAgICAgICAgICAgIGhhcyBvY2N1cnJlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdleGFtaW5pbmctYnVpbGQtaGlzdG9yeS1pbmZvcm1hdGlvbic+CisgICAgICAgICAgICAgICAgPHRpdGxlPkV4YW1pbmluZyBCdWlsZCBIaXN0b3J5IEluZm9ybWF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGV4YW1pbmUgYnVpbGQgaGlzdG9yeSBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICBsaW5lIG9yIGZyb20gYSB3ZWIgaW50ZXJmYWNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBzZWUgYW55IGNoYW5nZXMgdGhhdCBoYXZlIG9jY3VycmVkIChhc3N1bWluZyB5b3UgaGF2ZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlVJTERISVNUT1JZX0NPTU1JVCc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVQ8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPiZuYnNwOz0gIjEiPC9maWxlbmFtZT4pLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHNpbXBseSB1c2UgYW55IEdpdCBjb21tYW5kIHRoYXQgYWxsb3dzIHlvdSB0bworICAgICAgICAgICAgICAgICAgICB2aWV3IHRoZSBoaXN0b3J5IG9mIGEgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBvbmUgbWV0aG9kOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAkIGdpdCBsb2cgLXAKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byByZWFsaXplLCBob3dldmVyLCB0aGF0IHRoaXMgbWV0aG9kIGRvZXMgc2hvdworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIHRoYXQgYXJlIG5vdCBzaWduaWZpY2FudCAoZS5nLiBhIHBhY2thZ2UncyBzaXplCisgICAgICAgICAgICAgICAgICAgIGNoYW5naW5nIGJ5IGEgZmV3IGJ5dGVzKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSBjb21tYW5kLWxpbmUgdG9vbCBjYWxsZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS1kaWZmPC9maWxlbmFtZT4gZG9lcyBleGlzdCwgdGhvdWdoLAorICAgICAgICAgICAgICAgICAgICB0aGF0IHF1ZXJpZXMgdGhlIEdpdCByZXBvc2l0b3J5IGFuZCBwcmludHMganVzdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZXMgdGhhdCBtaWdodCBiZSBzaWduaWZpY2FudCBpbiBodW1hbi1yZWFkYWJsZQorICAgICAgICAgICAgICAgICAgICBmb3JtLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB+L3Bva3kvcG9reS9zY3JpcHRzL2J1aWxkaGlzdG9yeS1kaWZmIC4gSEVBRF4KKyAgICAgQ2hhbmdlcyB0byBpbWFnZXMvcWVtdXg4Nl82NC9nbGliYy9jb3JlLWltYWdlLW1pbmltYWwgKGZpbGVzLWluLWltYWdlLnR4dCk6CisgICAgICAgIC9ldGMvYW5vdGhlcnBrZy5jb25mIHdhcyBhZGRlZAorICAgICAgICAvc2Jpbi9hbm90aGVycGtnIHdhcyBhZGRlZAorICAgICAgICAqIChpbnN0YWxsZWQtcGFja2FnZS1uYW1lcy50eHQpOgorICAgICAgICAqICAgYW5vdGhlcnBrZyB3YXMgYWRkZWQKKyAgICAgQ2hhbmdlcyB0byBpbWFnZXMvcWVtdXg4Nl82NC9nbGliYy9jb3JlLWltYWdlLW1pbmltYWwgKGluc3RhbGxlZC1wYWNrYWdlLW5hbWVzLnR4dCk6CisgICAgICAgIGFub3RoZXJwa2cgd2FzIGFkZGVkCisgICAgIHBhY2thZ2VzL3FlbXV4ODZfNjQtcG9reS1saW51eC92ODZkOiBQQUNLQUdFUzogYWRkZWQgInY4NmQtZXh0cmFzIgorICAgICAgICAqIFBSIGNoYW5nZWQgZnJvbSAicjAiIHRvICJyMSIKKyAgICAgICAgKiBQViBjaGFuZ2VkIGZyb20gIjAuMS4xMCIgdG8gIjAuMS4xMiIKKyAgICAgcGFja2FnZXMvcWVtdXg4Nl82NC1wb2t5LWxpbnV4L3Y4NmQvdjg2ZDogUEtHU0laRSBjaGFuZ2VkIGZyb20gMTEwNTc5IHRvIDE0NDM4MSAoKzMwJSkKKyAgICAgICAgKiBQUiBjaGFuZ2VkIGZyb20gInIwIiB0byAicjEiCisgICAgICAgICogUFYgY2hhbmdlZCBmcm9tICIwLjEuMTAiIHRvICIwLjEuMTIiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS1kaWZmPC9maWxlbmFtZT4gdG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXMgdGhlIDxmaWxlbmFtZT5HaXRQeXRob248L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBpbnN0YWxsIGl0IHVzaW5nIFBpcDMgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICQgcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiAtLXVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gaW5zdGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbjMtZ2l0PC9maWxlbmFtZT4gdXNpbmcgdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gcGFja2FnZSBtYW5hZ2VyIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXB0LWdldDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+ZG5mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+emlwcGVyPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIHNlZSBjaGFuZ2VzIHRvIHRoZSBidWlsZCBoaXN0b3J5IHVzaW5nIGEgd2ViIGludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93IHRoZSBpbnN0cnVjdGlvbiBpbiB0aGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvYnVpbGRoaXN0b3J5LXdlYi8nPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGEgc2FtcGxlIHNjcmVlbnNob3Qgb2YgdGhlIGludGVyZmFjZToKKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2J1aWxkaGlzdG9yeS13ZWIucG5nIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgd2lkdGg9IjEzMCUiIGNvbnRlbnRkZXB0aD0iMTMwJSIgLz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKICAgICA8c2VjdGlvbiBpZD0icGVyZm9ybWluZy1hdXRvbWF0ZWQtcnVudGltZS10ZXN0aW5nIj4KICAgICAgICAgPHRpdGxlPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdGl0bGU+CiAKQEAgLTg5MjYsNiArMTEyNDIsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHNob3VsZCBnZW5lcmF0ZSBhIGxpc3Qgb2YgdGFwIGRldmljZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBvcHRpb24gdHlwaWNhbGx5IGNob3NlbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9idWlsZGVyLXR5cGUgZW52aXJvbm1lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHVzZSBhbiBhYnNvbHV0ZSBwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGNhbGxpbmcgdGhpcyBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggc3Vkby4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGFja2FnZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11LWhlbHBlci1uYXRpdmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVxdWlyZWQgdG8gcnVuIHRoaXMgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIHBhY2thZ2UgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIHFlbXUtaGVscGVyLW5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2V0IHRoZQpAQCAtOTc2OCwzNjggKzEyMTAzLDEwMDkgQEAKICAgICAgICAgPC9zZWN0aW9uPgogICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1ZyI+Ci0gICAgICAgIDx0aXRsZT5EZWJ1Z2dpbmcgV2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgUmVtb3RlbHk8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZGVidWdnaW5nLXRvb2xzLWFuZC10ZWNobmlxdWVzJz4KKyAgICAgICAgPHRpdGxlPkRlYnVnZ2luZyBUb29scyBhbmQgVGVjaG5pcXVlczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBHREIgYWxsb3dzIHlvdSB0byBleGFtaW5lIHJ1bm5pbmcgcHJvZ3JhbXMsIHdoaWNoIGluIHR1cm4gaGVscHMgeW91IHRvIHVuZGVyc3RhbmQgYW5kIGZpeCBwcm9ibGVtcy4KLSAgICAgICAgICAgIEl0IGFsc28gYWxsb3dzIHlvdSB0byBwZXJmb3JtIHBvc3QtbW9ydGVtIHN0eWxlIGFuYWx5c2lzIG9mIHByb2dyYW0gY3Jhc2hlcy4KLSAgICAgICAgICAgIEdEQiBpcyBhdmFpbGFibGUgYXMgYSBwYWNrYWdlIHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCBhbmQgaXMKLSAgICAgICAgICAgIGluc3RhbGxlZCBpbiBTREsgaW1hZ2VzIGJ5IGRlZmF1bHQuCi0gICAgICAgICAgICBTZWUgdGhlICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIgY2hhcHRlcgotICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVzZSBpbWFnZXMuCi0gICAgICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gR0RCIGF0IDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvIi8+LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHRpcD4KLSAgICAgICAgICAgIEZvciBiZXN0IHJlc3VsdHMsIGluc3RhbGwgZGVidWcgKDxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4pIHBhY2thZ2VzCi0gICAgICAgICAgICBmb3IgdGhlIGFwcGxpY2F0aW9ucyB5b3UgYXJlIGdvaW5nIHRvIGRlYnVnLgotICAgICAgICAgICAgRG9pbmcgc28gbWFrZXMgZXh0cmEgZGVidWcgc3ltYm9scyBhdmFpbGFibGUgdGhhdCBnaXZlIHlvdSBtb3JlCi0gICAgICAgICAgICBtZWFuaW5nZnVsIG91dHB1dC4KLSAgICAgICAgPC90aXA+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTb21ldGltZXMsIGR1ZSB0byBtZW1vcnkgb3IgZGlzayBzcGFjZSBjb25zdHJhaW50cywgaXQgaXMgbm90IHBvc3NpYmxlCi0gICAgICAgICAgICB0byB1c2UgR0RCIGRpcmVjdGx5IG9uIHRoZSByZW1vdGUgdGFyZ2V0IHRvIGRlYnVnIGFwcGxpY2F0aW9ucy4KLSAgICAgICAgICAgIFRoZXNlIGNvbnN0cmFpbnRzIGFyaXNlIGJlY2F1c2UgR0RCIG5lZWRzIHRvIGxvYWQgdGhlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBhbmQgdGhlCi0gICAgICAgICAgICBiaW5hcmllcyBvZiB0aGUgcHJvY2VzcyBiZWluZyBkZWJ1Z2dlZC4KLSAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgR0RCIG5lZWRzIHRvIHBlcmZvcm0gbWFueSBjb21wdXRhdGlvbnMgdG8gbG9jYXRlIGluZm9ybWF0aW9uIHN1Y2ggYXMgZnVuY3Rpb24KLSAgICAgICAgICAgIG5hbWVzLCB2YXJpYWJsZSBuYW1lcyBhbmQgdmFsdWVzLCBzdGFjayB0cmFjZXMgYW5kIHNvIGZvcnRoIC0gZXZlbiBiZWZvcmUgc3RhcnRpbmcgdGhlCi0gICAgICAgICAgICBkZWJ1Z2dpbmcgcHJvY2Vzcy4KLSAgICAgICAgICAgIFRoZXNlIGV4dHJhIGNvbXB1dGF0aW9ucyBwbGFjZSBtb3JlIGxvYWQgb24gdGhlIHRhcmdldCBzeXN0ZW0gYW5kIGNhbiBhbHRlciB0aGUKLSAgICAgICAgICAgIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4KKyAgICAgICAgICAgIFRoZSBleGFjdCBtZXRob2QgZm9yIGRlYnVnZ2luZyBidWlsZCBmYWlsdXJlcyBkZXBlbmRzIG9uIHRoZSBuYXR1cmUKKyAgICAgICAgICAgIG9mIHRoZSBwcm9ibGVtIGFuZCBvbiB0aGUgc3lzdGVtJ3MgYXJlYSBmcm9tIHdoaWNoIHRoZSBidWcKKyAgICAgICAgICAgIG9yaWdpbmF0ZXMuCisgICAgICAgICAgICBTdGFuZGFyZCBkZWJ1Z2dpbmcgcHJhY3RpY2VzIHN1Y2ggYXMgY29tcGFyaXNvbiBhZ2FpbnN0IHRoZSBsYXN0CisgICAgICAgICAgICBrbm93biB3b3JraW5nIHZlcnNpb24gd2l0aCBleGFtaW5hdGlvbiBvZiB0aGUgY2hhbmdlcyBhbmQgdGhlCisgICAgICAgICAgICByZS1hcHBsaWNhdGlvbiBvZiBzdGVwcyB0byBpZGVudGlmeSB0aGUgb25lIGNhdXNpbmcgdGhlIHByb2JsZW0gYXJlCisgICAgICAgICAgICB2YWxpZCBmb3IgdGhlIFlvY3RvIFByb2plY3QganVzdCBhcyB0aGV5IGFyZSBmb3IgYW55IG90aGVyIHN5c3RlbS4KKyAgICAgICAgICAgIEV2ZW4gdGhvdWdoIGl0IGlzIGltcG9zc2libGUgdG8gZGV0YWlsIGV2ZXJ5IHBvc3NpYmxlIHBvdGVudGlhbAorICAgICAgICAgICAgZmFpbHVyZSwgdGhpcyBzZWN0aW9uIHByb3ZpZGVzIHNvbWUgZ2VuZXJhbCB0aXBzIHRvIGFpZCBpbgorICAgICAgICAgICAgZGVidWdnaW5nIGdpdmVuIGEgdmFyaWV0eSBvZiBzaXR1YXRpb25zLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgQSB1c2VmdWwgZmVhdHVyZSBmb3IgZGVidWdnaW5nIGlzIHRoZSBlcnJvciByZXBvcnRpbmcgdG9vbC4KKyAgICAgICAgICAgICAgICBDb25maWd1cmluZyB0aGUgWW9jdG8gUHJvamVjdCB0byB1c2UgdGhpcyB0b29sIGNhdXNlcyB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHByb2R1Y2UgZXJyb3IgcmVwb3J0aW5nIGNvbW1hbmRzIGFzCisgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgY29uc29sZSBvdXRwdXQuCisgICAgICAgICAgICAgICAgWW91IGNhbiBlbnRlciB0aGUgY29tbWFuZHMgYWZ0ZXIgdGhlIGJ1aWxkIGNvbXBsZXRlcyB0byBsb2cKKyAgICAgICAgICAgICAgICBlcnJvciBpbmZvcm1hdGlvbiBpbnRvIGEgY29tbW9uIGRhdGFiYXNlLCB0aGF0IGNhbiBoZWxwIHlvdQorICAgICAgICAgICAgICAgIGZpZ3VyZSBvdXQgd2hhdCBtaWdodCBiZSBnb2luZyB3cm9uZy4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGVuYWJsZSBhbmQgdXNlIHRoaXMgZmVhdHVyZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy10aGUtZXJyb3ItcmVwb3J0aW5nLXRvb2wnPlVzaW5nIHRoZSBFcnJvciBSZXBvcnRpbmcgVG9vbDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gaGVscCBnZXQgcGFzdCB0aGUgcHJldmlvdXNseSBtZW50aW9uZWQgY29uc3RyYWludHMsIHlvdSBjYW4gdXNlCi0gICAgICAgICAgICBnZGJzZXJ2ZXIsIHdoaWNoIHJ1bnMgb24gdGhlIHJlbW90ZSB0YXJnZXQgYW5kIGRvZXMgbm90IGxvYWQgYW55Ci0gICAgICAgICAgICBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGVidWdnZWQgcHJvY2Vzcy4KLSAgICAgICAgICAgIEluc3RlYWQsIGEgR0RCIGluc3RhbmNlIHByb2Nlc3NlcyB0aGUgZGVidWdnaW5nIGluZm9ybWF0aW9uIHRoYXQgaXMgcnVuIG9uIGEKLSAgICAgICAgICAgIHJlbW90ZSBjb21wdXRlciAtIHRoZSBob3N0IEdEQi4KLSAgICAgICAgICAgIFRoZSBob3N0IEdEQiB0aGVuIHNlbmRzIGNvbnRyb2wgY29tbWFuZHMgdG8gZ2Ric2VydmVyIHRvIG1ha2UgaXQgc3RvcCBvciBzdGFydCB0aGUgZGVidWdnZWQKLSAgICAgICAgICAgIHByb2dyYW0sIGFzIHdlbGwgYXMgcmVhZCBvciB3cml0ZSBtZW1vcnkgcmVnaW9ucyBvZiB0aGF0IGRlYnVnZ2VkIHByb2dyYW0uCi0gICAgICAgICAgICBBbGwgdGhlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBsb2FkZWQgYW5kIHByb2Nlc3NlZCBhcyB3ZWxsCi0gICAgICAgICAgICBhcyBhbGwgdGhlIGhlYXZ5IGRlYnVnZ2luZyBpcyBkb25lIGJ5IHRoZSBob3N0IEdEQi4KLSAgICAgICAgICAgIE9mZmxvYWRpbmcgdGhlc2UgcHJvY2Vzc2VzIGdpdmVzIHRoZSBnZGJzZXJ2ZXIgcnVubmluZyBvbiB0aGUgdGFyZ2V0IGEgY2hhbmNlIHRvIHJlbWFpbgotICAgICAgICAgICAgc21hbGwgYW5kIGZhc3QuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJlY2F1c2UgdGhlIGhvc3QgR0RCIGlzIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIHRoZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gYW5kCi0gICAgICAgICAgICBmb3IgZG9pbmcgdGhlIG5lY2Vzc2FyeSBwcm9jZXNzaW5nIHRvIG1ha2UgYWN0dWFsIGRlYnVnZ2luZyBoYXBwZW4sCi0gICAgICAgICAgICB5b3UgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGhvc3QgY2FuIGFjY2VzcyB0aGUgdW5zdHJpcHBlZCBiaW5hcmllcyBjb21wbGV0ZQotICAgICAgICAgICAgd2l0aCB0aGVpciBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gYW5kIGFsc28gYmUgc3VyZSB0aGUgdGFyZ2V0IGlzIGNvbXBpbGVkIHdpdGggbm8gb3B0aW1pemF0aW9ucy4KLSAgICAgICAgICAgIFRoZSBob3N0IEdEQiBtdXN0IGFsc28gaGF2ZSBsb2NhbCBhY2Nlc3MgdG8gYWxsIHRoZSBsaWJyYXJpZXMgdXNlZCBieSB0aGUKLSAgICAgICAgICAgIGRlYnVnZ2VkIHByb2dyYW0uCi0gICAgICAgICAgICBCZWNhdXNlIGdkYnNlcnZlciBkb2VzIG5vdCBuZWVkIGFueSBsb2NhbCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24sIHRoZSBiaW5hcmllcyBvbgotICAgICAgICAgICAgdGhlIHJlbW90ZSB0YXJnZXQgY2FuIHJlbWFpbiBzdHJpcHBlZC4KLSAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBiaW5hcmllcyBtdXN0IGFsc28gYmUgY29tcGlsZWQgd2l0aG91dCBvcHRpbWl6YXRpb24KLSAgICAgICAgICAgIHNvIHRoZXkgbWF0Y2ggdGhlIGhvc3QncyBiaW5hcmllcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gcmVtYWluIGNvbnNpc3RlbnQgd2l0aCBHREIgZG9jdW1lbnRhdGlvbiBhbmQgdGVybWlub2xvZ3ksIHRoZSBiaW5hcnkgYmVpbmcgZGVidWdnZWQKLSAgICAgICAgICAgIG9uIHRoZSByZW1vdGUgdGFyZ2V0IG1hY2hpbmUgaXMgcmVmZXJyZWQgdG8gYXMgdGhlICJpbmZlcmlvciIgYmluYXJ5LgotICAgICAgICAgICAgRm9yIGRvY3VtZW50YXRpb24gb24gR0RCIHNlZSB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvZG9jdW1lbnRhdGlvbi8iPkdEQiBzaXRlPC91bGluaz4uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3RlcHMgc2hvdyB5b3UgaG93IHRvIGRlYnVnIHVzaW5nIHRoZSBHTlUgcHJvamVjdAotICAgICAgICAgICAgZGVidWdnZXIuCi0gICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29uZmlndXJlIHlvdXIgYnVpbGQgc3lzdGVtIHRvIGNvbnN0cnVjdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgY29tcGFuaW9uIGRlYnVnIGZpbGVzeXN0ZW06PC9lbXBoYXNpcz48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHNldAotICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElNQUdFX0dFTl9ERUJVR0ZTID0gIjEiCi0gICAgIElNQUdFX0ZTVFlQRVNfREVCVUdGUyA9ICJ0YXIuYnoyIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFRoZXNlIG9wdGlvbnMgY2F1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgdG8gZ2VuZXJhdGUgYSBzcGVjaWFsIGNvbXBhbmlvbiBmaWxlc3lzdGVtIGZyYWdtZW50LAotICAgICAgICAgICAgICAgICAgICB3aGljaCBjb250YWlucyB0aGUgbWF0Y2hpbmcgc291cmNlIGFuZCBkZWJ1ZyBzeW1ib2xzIHRvCi0gICAgICAgICAgICAgICAgICAgIHlvdXIgZGVwbG95YWJsZSBmaWxlc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGRvZXMgdGhpcyBieSBsb29raW5nIGF0IHdoYXQgaXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIGRlcGxveWVkIGZpbGVzeXN0ZW0sIGFuZCBwdWxsaW5nIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4gcGFja2FnZXMuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBjb21wYW5pb24gZGVidWcgZmlsZXN5c3RlbSBpcyBub3QgYSBjb21wbGV0ZQotICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLCBidXQgb25seSBjb250YWlucyB0aGUgZGVidWcgZnJhZ21lbnRzLgotICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGVzeXN0ZW0gbXVzdCBiZSBjb21iaW5lZCB3aXRoIHRoZSBmdWxsIGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgZm9yIGRlYnVnZ2luZy4KLSAgICAgICAgICAgICAgICAgICAgU3Vic2VxdWVudCBzdGVwcyBpbiB0aGlzIHByb2NlZHVyZSBzaG93IGhvdyB0byBjb21iaW5lCi0gICAgICAgICAgICAgICAgICAgIHRoZSBwYXJ0aWFsIGZpbGVzeXN0ZW0gd2l0aCB0aGUgZnVsbCBmaWxlc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db25maWd1cmUgdGhlIHN5c3RlbSB0byBpbmNsdWRlIGdkYnNlcnZlciBpbgotICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGZpbGVzeXN0ZW06PC9lbXBoYXNpcz48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+TWFrZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uIGluIGVpdGhlciB5b3VyCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciBpbiBhbiBpbWFnZQotICAgICAgICAgICAgICAgICAgICByZWNpcGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSDigJwgZ2Ric2VydmVyIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBjaGFuZ2UgbWFrZXMgc3VyZSB0aGUgPGZpbGVuYW1lPmdkYnNlcnZlcjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgaXMgaW5jbHVkZWQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBlbnZpcm9ubWVudDo8L2VtcGhhc2lzPjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5Vc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGNvbnN0cnVjdCB0aGUgaW1hZ2UgYW5kCi0gICAgICAgICAgICAgICAgICAgIHRoZSBjb21wYW5pb24gRGVidWcgRmlsZXN5c3RlbToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgY3Jvc3MgR0RCIGNvbXBvbmVudCBhbmQgbWFrZSBpdCBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICAgICAgZm9yIGRlYnVnZ2luZy4KLSAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIFNESyB0aGF0IG1hdGNoZXMgdGhlIGltYWdlLgotICAgICAgICAgICAgICAgICAgICBCdWlsZGluZyB0aGUgU0RLIGlzIGJlc3QgZm9yIGEgcHJvZHVjdGlvbiBidWlsZAotICAgICAgICAgICAgICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIGxhdGVyIGZvciBkZWJ1Z2dpbmcsIGVzcGVjaWFsbHkKLSAgICAgICAgICAgICAgICAgICAgZHVyaW5nIGxvbmcgdGVybSBtYWludGVuYW5jZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWMgcG9wdWxhdGVfc2RrIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWx0ZXJuYXRpdmVseSwgeW91IGNhbiBidWlsZCB0aGUgbWluaW1hbAotICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gY29tcG9uZW50cyB0aGF0IG1hdGNoIHRoZSB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIGNyZWF0ZXMgYSBzbWFsbGVyIHRoYW4gdHlwaWNhbCBTREsgYW5kIG9ubHkKLSAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYSBtaW5pbWFsIHNldCBvZiBjb21wb25lbnRzIHdpdGggd2hpY2ggdG8KLSAgICAgICAgICAgICAgICAgICAgYnVpbGQgc2ltcGxlIHRlc3QgYXBwbGljYXRpb25zLCBhcyB3ZWxsIGFzIHJ1biB0aGUKLSAgICAgICAgICAgICAgICAgICAgZGVidWdnZXI6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIG1ldGEtdG9vbGNoYWluCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+QSBmaW5hbCBtZXRob2QgaXMgdG8gYnVpbGQgR2RiIGl0c2VsZiB3aXRoaW4KLSAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHN5c3RlbToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgZ2RiLWNyb3NzLTxyZXBsYWNlYWJsZT5hcmNoaXRlY3R1cmU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIHByb2R1Y2VzIGEgdGVtcG9yYXJ5IGNvcHkgb2YKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyb3NzLWdkYjwvZmlsZW5hbWU+IHlvdSBjYW4gdXNlIGZvcgotICAgICAgICAgICAgICAgICAgICBkZWJ1Z2dpbmcgZHVyaW5nIGRldmVsb3BtZW50LgotICAgICAgICAgICAgICAgICAgICBXaGlsZSB0aGlzIGlzIHRoZSBxdWlja2VzdCBhcHByb2FjaCwgdGhlIHR3byBwcmV2aW91cwotICAgICAgICAgICAgICAgICAgICBtZXRob2RzIGluIHRoaXMgc3RlcCBhcmUgYmV0dGVyIHdoZW4gY29uc2lkZXJpbmcKLSAgICAgICAgICAgICAgICAgICAgbG9uZy10ZXJtIG1haW50ZW5hbmNlIHN0cmF0ZWdpZXMuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHJ1bgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgZ2RiLWNyb3NzPC9maWxlbmFtZT4sIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzdWdnZXN0cyB0aGUgYWN0dWFsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSAoZS5nLiA8ZmlsZW5hbWU+Z2RiLWNyb3NzLWk1ODY8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3VnZ2VzdGlvbiBpcyB1c3VhbGx5IHRoZSBhY3R1YWwgbmFtZSB5b3Ugd2FudAotICAgICAgICAgICAgICAgICAgICAgICAgdG8gdXNlLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCB0aGU8L2VtcGhhc2lzPiZuYnNwOzxmaWxlbmFtZT5kZWJ1Z2ZzPC9maWxlbmFtZT48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+UnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gc2V0IHVwIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVidWdmczwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgbWtkaXIgZGVidWdmcwotICAgICAkIGNkIGRlYnVnZnMKLSAgICAgJCB0YXIgeHZmaiA8cmVwbGFjZWFibGU+YnVpbGQtZGlyPC9yZXBsYWNlYWJsZT4vdG1wLWdsaWJjL2RlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPi5yb290ZnMudGFyLmJ6MgotICAgICAkIHRhciB4dmZqIDxyZXBsYWNlYWJsZT5idWlsZC1kaXI8L3JlcGxhY2VhYmxlPi90bXAtZ2xpYmMvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+LWRiZy5yb290ZnMudGFyLmJ6MgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCBHREI8L2VtcGhhc2lzPjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5JbnN0YWxsIHRoZSBTREsgKGlmIHlvdSBidWlsdCBvbmUpIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSB0aGUgY29ycmVjdCBlbnZpcm9ubWVudCBmaWxlLgotICAgICAgICAgICAgICAgICAgICBTb3VyY2luZyB0aGUgZW52aXJvbm1lbnQgZmlsZSBwdXRzIHRoZSBTREsgaW4geW91cgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGVudmlyb25tZW50IHZhcmlhYmxlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIHVzaW5nIHRoZSBidWlsZCBzeXN0ZW0sIEdkYiBpcwotICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluCi0gICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5idWlsZC1kaXI8L3JlcGxhY2VhYmxlPi90bXAvc3lzcm9vdHMvPHJlcGxhY2VhYmxlPmhvc3Q8L3JlcGxhY2VhYmxlPi91c3IvYmluLzxyZXBsYWNlYWJsZT5hcmNoaXRlY3R1cmU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+YXJjaGl0ZWN0dXJlPC9yZXBsYWNlYWJsZT4tZ2RiCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJvb3QgdGhlIHRhcmdldDo8L2VtcGhhc2lzPjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHJ1biBRRU1VLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93aWtpLnFlbXUub3JnL0RvY3VtZW50YXRpb24vR2V0dGluZ1N0YXJ0ZWREZXZlbG9wZXJzJz5RRU1VIERvY3VtZW50YXRpb248L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHZlcmlmeSB0aGF0IHlvdXIgaG9zdCBjYW4gYWNjZXNzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHZpYSBUQ1AuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGVidWcgYSBwcm9ncmFtOjwvZW1waGFzaXM+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkRlYnVnZ2luZyBhIHByb2dyYW0gaW52b2x2ZXMgcnVubmluZyBnZGJzZXJ2ZXIKLSAgICAgICAgICAgICAgICAgICAgb24gdGhlIHRhcmdldCBhbmQgdGhlbiBydW5uaW5nIEdkYiBvbiB0aGUgaG9zdC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGUgaW4gdGhpcyBzdGVwIGRlYnVncwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3ppcDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHJvb3RAcWVtdXg4Njp+IyBnZGJzZXJ2ZXIgbG9jYWxob3N0OjEyMzQgL2Jpbi9nemlwIOKAlGhlbHAKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBnZGJzZXJ2ZXIgb3B0aW9ucywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYi9kb2N1bWVudGF0aW9uLyc+R0RCIFNlcnZlciBEb2N1bWVudGF0aW9uPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5BZnRlciBydW5uaW5nIGdkYnNlcnZlciBvbiB0aGUgdGFyZ2V0LCB5b3UgbmVlZAotICAgICAgICAgICAgICAgICAgICB0byBydW4gR2RiIG9uIHRoZSBob3N0IGFuZCBjb25maWd1cmUgaXQgYW5kIGNvbm5lY3QgdG8KLSAgICAgICAgICAgICAgICAgICAgdGhlIHRhcmdldC4KLSAgICAgICAgICAgICAgICAgICAgVXNlIHRoZXNlIGNvbW1hbmRzOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgPHJlcGxhY2VhYmxlPmRpcmVjdG9yeS1ob2xkaW5nLXRoZS1kZWJ1Z2ZzLWRpcmVjdG9yeTwvcmVwbGFjZWFibGU+Ci0gICAgICQgPHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPi1nZGIKLQotICAgICAoZ2RiKSBzZXQgc3lzcm9vdCBkZWJ1Z2ZzCi0gICAgIChnZGIpIHNldCBzdWJzdGl0dXRlLXBhdGggL3Vzci9zcmMvZGVidWcgZGVidWdmcy91c3Ivc3JjL2RlYnVnCi0gICAgIChnZGIpIHRhcmdldCByZW1vdGUgPHJlcGxhY2VhYmxlPklQLW9mLXRhcmdldDwvcmVwbGFjZWFibGU+OjEyMzQKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCBldmVyeXRoaW5nIHNob3VsZCBhdXRvbWF0aWNhbGx5IGxvYWQKLSAgICAgICAgICAgICAgICAgICAgKGkuZS4gbWF0Y2hpbmcgYmluYXJpZXMsIHN5bWJvbHMgYW5kIGhlYWRlcnMpLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBHZGIgPGZpbGVuYW1lPnNldDwvZmlsZW5hbWU+IGNvbW1hbmRzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgZXhhbXBsZSBjYW4gYmUgcGxhY2VkIGludG8gdGhlIHVzZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi8uZ2RiaW5pdDwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBVcG9uIHN0YXJ0aW5nLCBHZGIgYXV0b21hdGljYWxseSBydW5zIHdoYXRldmVyCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcyBhcmUgaW4gdGhhdCBmaWxlLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRlcGxveWluZyB3aXRob3V0IGEgZnVsbCBpbWFnZQotICAgICAgICAgICAgICAgICAgICByZWJ1aWxkOjwvZW1waGFzaXM+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIG1hbnkgY2FzZXMsIGR1cmluZyBkZXZlbG9wbWVudCB5b3Ugd2FudCBhCi0gICAgICAgICAgICAgICAgICAgIHF1aWNrIG1ldGhvZCB0byBkZXBsb3kgYSBuZXcgYmluYXJ5IHRvIHRoZSB0YXJnZXQgYW5kCi0gICAgICAgICAgICAgICAgICAgIGRlYnVnIGl0LCB3aXRob3V0IHdhaXRpbmcgZm9yIGEgZnVsbCBpbWFnZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uZSBhcHByb2FjaCB0byBzb2x2aW5nIHRoaXMgc2l0dWF0aW9uIGlzIHRvCi0gICAgICAgICAgICAgICAgICAgIGp1c3QgYnVpbGQgdGhlIGNvbXBvbmVudCB5b3Ugd2FudCB0byBkZWJ1Zy4KLSAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBidWlsdCB0aGUgY29tcG9uZW50LCBjb3B5IHRoZQotICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlIGRpcmVjdGx5IHRvIGJvdGggdGhlIHRhcmdldCBhbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgIGhvc3QgPGZpbGVuYW1lPmRlYnVnZnM8L2ZpbGVuYW1lPi48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgdGhlIGJpbmFyeSBpcyBwcm9jZXNzZWQgdGhyb3VnaCB0aGUgZGVidWcKLSAgICAgICAgICAgICAgICAgICAgc3BsaXR0aW5nIGluIE9wZW5FbWJlZGRlZCwgeW91IHNob3VsZCBhbHNvCi0gICAgICAgICAgICAgICAgICAgIGNvcHkgdGhlIGRlYnVnIGl0ZW1zIChpLmUuIDxmaWxlbmFtZT4uZGVidWc8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBhbmQgY29ycmVzcG9uZGluZwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9zcmMvZGVidWc8L2ZpbGVuYW1lPiBmaWxlcykKLSAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgd29yayBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgYmFzaAotICAgICAkIGJpdGJha2UgLWMgZGV2c2hlbGwgYmFzaAotICAgICAkIGNkIC4uCi0gICAgICQgc2NwIHBhY2thZ2VzLXNwbGl0L2Jhc2gvYmluL2Jhc2ggPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+Oi9iaW4vYmFzaAotICAgICAkIGNwIC1hIHBhY2thZ2VzLXNwbGl0L2Jhc2gtZGJnLyogPHJlcGxhY2VhYmxlPnBhdGg8L3JlcGxhY2VhYmxlPi9kZWJ1Z2ZzCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J2RlYnVnZ2luZy13aXRoLXRoZS1nbnUtcHJvamVjdC1kZWJ1Z2dlci1nZGItb24tdGhlLXRhcmdldCc+Ci0gICAgICAgIDx0aXRsZT5EZWJ1Z2dpbmcgd2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgb24gdGhlIFRhcmdldDwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgcHJldmlvdXMgc2VjdGlvbiBhZGRyZXNzZWQgdXNpbmcgR0RCIHJlbW90ZWx5IGZvciBkZWJ1Z2dpbmcKLSAgICAgICAgICAgIHB1cnBvc2VzLCB3aGljaCBpcyB0aGUgbW9zdCB1c3VhbCBjYXNlIGR1ZSB0byB0aGUgaW5oZXJlbnQKLSAgICAgICAgICAgIGhhcmR3YXJlIGxpbWl0YXRpb25zIG9uIG1hbnkgZW1iZWRkZWQgZGV2aWNlcy4KLSAgICAgICAgICAgIEhvd2V2ZXIsIGRlYnVnZ2luZyBpbiB0aGUgdGFyZ2V0IGhhcmR3YXJlIGl0c2VsZiBpcyBhbHNvIHBvc3NpYmxlCi0gICAgICAgICAgICB3aXRoIG1vcmUgcG93ZXJmdWwgZGV2aWNlcy4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCB5b3UgbmVlZCB0byBkbyBpbiBvcmRlciB0byBzdXBwb3J0Ci0gICAgICAgICAgICB1c2luZyBHREIgdG8gZGVidWcgb24gdGhlIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gc3VwcG9ydCB0aGlzIGtpbmQgb2YgZGVidWdnaW5nLCB5b3UgbmVlZCBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSBkZWJ1Z2dpbmcgdG9waWNzIGluIHRoZSByZW1haW5kZXIgb2YKKyAgICAgICAgICAgIHRoaXMgc2VjdGlvbjoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBFbnN1cmUgdGhhdCBHREIgaXMgb24gdGhlIHRhcmdldC4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkbyB0aGlzIGJ5IGFkZGluZyAiZ2RiIiB0bwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBnZGIiCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBhZGQgInRvb2xzLWRlYnVnIiB0bwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz46Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgSU1BR0VfRkVBVFVSRVNfYXBwZW5kID0gIiB0b29scy1kZWJ1ZyIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGV2LWRlYnVnZ2luZy12aWV3aW5nLWxvZ3MtZnJvbS1mYWlsZWQtdGFza3MnPlZpZXdpbmcgTG9ncyBmcm9tIEZhaWxlZCBUYXNrczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gZmluZCBhbmQgdmlldyBsb2dzIGZyb20gdGFza3MgdGhhdAorICAgICAgICAgICAgICAgICAgICBmYWlsZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEVuc3VyZSB0aGF0IGRlYnVnIHN5bWJvbHMgYXJlIHByZXNlbnQuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbWFrZSBzdXJlIHRoZXNlIHN5bWJvbHMgYXJlIHByZXNlbnQgYnkgaW5zdGFsbGluZwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWRiZzwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElNQUdFX0lOU1RBTExfYXBwZW5kID0gIiA8cmVwbGFjZWFibGU+cGFja2FnZW5hbWU8L3JlcGxhY2VhYmxlPi1kYmciCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBkbyB0aGUgZm9sbG93aW5nIHRvIGluY2x1ZGUgYWxsIHRoZQotICAgICAgICAgICAgICAgICAgICBkZWJ1ZyBzeW1ib2xzOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElNQUdFX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZGJnLXBrZ3MiCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Rldi1kZWJ1Z2dpbmctdmlld2luZy12YXJpYWJsZS12YWx1ZXMnPlZpZXdpbmcgVmFyaWFibGUgVmFsdWVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEJpdEJha2UgPGZpbGVuYW1lPi1lPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIHRvIGV4YW1pbmUgdmFyaWFibGUgdmFsdWVzIGFmdGVyIGEgcmVjaXBlIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHBhcnNlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndmlld2luZy1wYWNrYWdlLWluZm9ybWF0aW9uLXdpdGgtb2UtcGtnZGF0YS11dGlsJz5WaWV3aW5nIFBhY2thZ2UgSW5mb3JtYXRpb24gd2l0aCA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbDwvZmlsZW5hbWU+IHV0aWxpdHkgdG8gcXVlcnkKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBLR0RBVEFfRElSJz48ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCBkaXNwbGF5IHBhY2thZ2UtcmVsYXRlZCBpbmZvcm1hdGlvbiBmb3IgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Rldi12aWV3aW5nLWRlcGVuZGVuY2llcy1iZXR3ZWVuLXJlY2lwZXMtYW5kLXRhc2tzJz5WaWV3aW5nIERlcGVuZGVuY2llcyBCZXR3ZWVuIFJlY2lwZXMgYW5kIFRhc2tzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEJpdEJha2UgPGZpbGVuYW1lPi1nPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIHRvIGRpc3BsYXkgcmVjaXBlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gdXNlZAorICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtdmlld2luZy10YXNrLXZhcmlhYmxlLWRlcGVuZGVuY2llcyc+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1kdW1wc2lnPC9maWxlbmFtZT4gY29tbWFuZCBpbgorICAgICAgICAgICAgICAgICAgICBjb25qdW5jdGlvbiB3aXRoIGtleSBzdWJkaXJlY3RvcmllcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0byBkZXRlcm1pbmUgdmFyaWFibGUgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtZGVidWdnaW5nLXRhc2tydW5uaW5nJz5SdW5uaW5nIFNwZWNpZmljIFRhc2tzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byB1c2Ugc2V2ZXJhbCBCaXRCYWtlIG9wdGlvbnMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1jPC9maWxlbmFtZT4sIDxmaWxlbmFtZT4tQzwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4pIHRvIHJ1biBzcGVjaWZpYyB0YXNrcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgY2hhaW4uCisgICAgICAgICAgICAgICAgICAgIEl0IGNhbiBiZSB1c2VmdWwgdG8gcnVuIHRhc2tzICJvdXQtb2Ytb3JkZXIiIHdoZW4gdHJ5aW5nCisgICAgICAgICAgICAgICAgICAgIGlzb2xhdGUgYnVpbGQgaXNzdWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtZGVidWdnaW5nLWJpdGJha2UnPkdlbmVyYWwgQml0QmFrZSBQcm9ibGVtczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gdXNlIEJpdEJha2UncyA8ZmlsZW5hbWU+LUQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkZWJ1ZyBvdXRwdXQgb3B0aW9uIHRvIHJldmVhbCBtb3JlIGFib3V0IHdoYXQgQml0QmFrZSBpcworICAgICAgICAgICAgICAgICAgICBkb2luZyBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtZGVidWdnaW5nLWJ1aWxkZmlsZSc+QnVpbGRpbmcgd2l0aCBObyBEZXBlbmRlbmNpZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgQml0QmFrZSA8ZmlsZW5hbWU+LWI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvcHRpb24gdG8gYnVpbGQgYSByZWNpcGUgd2hpbGUgaWdub3JpbmcgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWNpcGUtbG9nZ2luZy1tZWNoYW5pc21zJz5SZWNpcGUgTG9nZ2luZyBNZWNoYW5pc21zPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIG1hbnkgcmVjaXBlIGxvZ2dpbmcgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAgIHRvIHByb2R1Y2UgZGVidWdnaW5nIG91dHB1dCBhbmQgcmVwb3J0IGVycm9ycyBhbmQgd2FybmluZ3MuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RlYnVnZ2luZy1wYXJhbGxlbC1tYWtlLXJhY2VzJz5EZWJ1Z2dpbmcgUGFyYWxsZWwgTWFrZSBSYWNlczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gZGVidWcgc2l0dWF0aW9ucyB3aGVyZSB0aGUgYnVpbGQgY29uc2lzdHMKKyAgICAgICAgICAgICAgICAgICAgb2Ygc2V2ZXJhbCBwYXJ0cyB0aGF0IGFyZSBydW4gc2ltdWx0YW5lb3VzbHkgYW5kIHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIG91dHB1dCBvciByZXN1bHQgb2Ygb25lIHBhcnQgaXMgbm90IHJlYWR5IGZvciB1c2Ugd2l0aCBhCisgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBwYXJ0IG9mIHRoZSBidWlsZCB0aGF0IGRlcGVuZHMgb24gdGhhdCBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BsYXRkZXYtZ2RiLXJlbW90ZWRlYnVnJz5EZWJ1Z2dpbmcgV2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgUmVtb3RlbHk8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgaG93IHRvIHVzZSBHREIgdG8gYWxsb3cgeW91IHRvIGV4YW1pbmUgcnVubmluZworICAgICAgICAgICAgICAgICAgICBwcm9ncmFtcywgd2hpY2ggY2FuIGhlbHAgeW91IGZpeCBwcm9ibGVtcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGVidWdnaW5nLXdpdGgtdGhlLWdudS1wcm9qZWN0LWRlYnVnZ2VyLWdkYi1vbi10aGUtdGFyZ2V0Jz5EZWJ1Z2dpbmcgd2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgb24gdGhlIFRhcmdldDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gdXNlIEdEQiBkaXJlY3RseSBvbiB0YXJnZXQgaGFyZHdhcmUgZm9yCisgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2luZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGV2LW90aGVyLWRlYnVnZ2luZy1vdGhlcnMnPk90aGVyIERlYnVnZ2luZyBUaXBzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIG1pc2NlbGxhbmVvdXMgZGVidWdnaW5nIHRpcHMgdGhhdCBjYW4gYmUgdXNlZnVsLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVG8gaW1wcm92ZSB0aGUgZGVidWcgaW5mb3JtYXRpb24gYWNjdXJhY3ksIHlvdSBjYW4gcmVkdWNlIHRoZQotICAgICAgICAgICAgICAgIGxldmVsIG9mIG9wdGltaXphdGlvbiB1c2VkIGJ5IHRoZSBjb21waWxlci4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgd2hlbiBhZGRpbmcgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHlvdXIKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHlvdSB3aWxsIHJlZHVjZQotICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbiBmcm9tCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZVTExfT1BUSU1JWkFUSU9OJz48ZmlsZW5hbWU+RlVMTF9PUFRJTUlaQVRJT048L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgb2YgIi1PMiIgdG8KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVCVUdfT1BUSU1JWkFUSU9OJz48ZmlsZW5hbWU+REVCVUdfT1BUSU1JWkFUSU9OPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIG9mICItTyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciI6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBERUJVR19CVUlMRCA9ICIxIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBDb25zaWRlciB0aGF0IHRoaXMgd2lsbCByZWR1Y2UgdGhlIGFwcGxpY2F0aW9uJ3MgcGVyZm9ybWFuY2UKLSAgICAgICAgICAgICAgICBhbmQgaXMgcmVjb21tZW5kZWQgb25seSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgotICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J2RlYnVnZ2luZy1wYXJhbGxlbC1tYWtlLXJhY2VzJz4KLSAgICAgICAgPHRpdGxlPkRlYnVnZ2luZyBQYXJhbGxlbCBNYWtlIFJhY2VzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEEgcGFyYWxsZWwgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiByYWNlIG9jY3VycyB3aGVuIHRoZSBidWlsZAotICAgICAgICAgICAgY29uc2lzdHMgb2Ygc2V2ZXJhbCBwYXJ0cyB0aGF0IGFyZSBydW4gc2ltdWx0YW5lb3VzbHkgYW5kCi0gICAgICAgICAgICBhIHNpdHVhdGlvbiBvY2N1cnMgd2hlbiB0aGUgb3V0cHV0IG9yIHJlc3VsdCBvZiBvbmUKLSAgICAgICAgICAgIHBhcnQgaXMgbm90IHJlYWR5IGZvciB1c2Ugd2l0aCBhIGRpZmZlcmVudCBwYXJ0IG9mIHRoZSBidWlsZCB0aGF0Ci0gICAgICAgICAgICBkZXBlbmRzIG9uIHRoYXQgb3V0cHV0LgotICAgICAgICAgICAgUGFyYWxsZWwgbWFrZSByYWNlcyBhcmUgYW5ub3lpbmcgYW5kIGNhbiBzb21ldGltZXMgYmUgZGlmZmljdWx0Ci0gICAgICAgICAgICB0byByZXByb2R1Y2UgYW5kIGZpeC4KLSAgICAgICAgICAgIEhvd2V2ZXIsIHNvbWUgc2ltcGxlIHRpcHMgYW5kIHRyaWNrcyBleGlzdCB0aGF0IGNhbiBoZWxwCi0gICAgICAgICAgICB5b3UgZGVidWcgYW5kIGZpeCB0aGVtLgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByZXNlbnRzIGEgcmVhbC13b3JsZCBleGFtcGxlIG9mIGFuIGVycm9yIGVuY291bnRlcmVkCi0gICAgICAgICAgICBvbiB0aGUgWW9jdG8gUHJvamVjdCBhdXRvYnVpbGRlciBhbmQgdGhlIHByb2Nlc3MgdXNlZCB0byBmaXggaXQuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBJZiB5b3UgY2Fubm90IHByb3Blcmx5IGZpeCBhIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gcmFjZQotICAgICAgICAgICAgICAgIGNvbmRpdGlvbiwgeW91IGNhbiB3b3JrIGFyb3VuZCBpdCBieSBjbGVhcmluZyBlaXRoZXIgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBUkFMTEVMX01BS0UnPjxmaWxlbmFtZT5QQVJBTExFTF9NQUtFPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBUkFMTEVMX01BS0VJTlNUJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRUlOU1Q8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGVzLgotICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgRm9yIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiB3aXRoaW4gdGhlIHBvcHVsYXIKKyAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IElERSwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I2FkdC1lY2xpcHNlJz5Xb3JraW5nIHdpdGhpbiBFY2xpcHNlPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCiAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0ndGhlLWZhaWx1cmUnPgotICAgICAgICAgICAgPHRpdGxlPlRoZSBGYWlsdXJlPC90aXRsZT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi1kZWJ1Z2dpbmctdmlld2luZy1sb2dzLWZyb20tZmFpbGVkLXRhc2tzJz4KKyAgICAgICAgICAgIDx0aXRsZT5WaWV3aW5nIExvZ3MgZnJvbSBGYWlsZWQgVGFza3M8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCBhc3N1bWUgdGhhdCB5b3UgYXJlIGJ1aWxkaW5nIGFuIGltYWdlIHRoYXQKLSAgICAgICAgICAgICAgICBkZXBlbmRzIG9uIHRoZSAibmVhcmQiIHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgQW5kLCBkdXJpbmcgdGhlIGJ1aWxkLCBCaXRCYWtlIHJ1bnMgaW50byBwcm9ibGVtcyBhbmQKLSAgICAgICAgICAgICAgICBjcmVhdGVzIHRoZSBmb2xsb3dpbmcgb3V0cHV0LgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgbG9nIGZpbGUgaGFzIGxvbmdlciBsaW5lcyBhcnRpZmljaWFsbHkKLSAgICAgICAgICAgICAgICAgICAgYnJva2VuIHRvIG1ha2UgdGhlIGxpc3RpbmcgZWFzaWVyIHRvIHJlYWQuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIElmIHlvdSBleGFtaW5lIHRoZSBvdXRwdXQgb3IgdGhlIGxvZyBmaWxlLCB5b3Ugc2VlIHRoZQotICAgICAgICAgICAgICAgIGZhaWx1cmUgZHVyaW5nIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBsb2cgZm9yIGEgdGFzayBpbiB0aGUgZmlsZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59L3RlbXAvbG9nLmRvXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBsb2cgZm9yIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIG9mIHRoZSBRRU1VIG1pbmltYWwgaW1hZ2UgZm9yIHRoZSB4ODYgbWFjaGluZQorICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+KSBtaWdodCBiZSBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC90ZW1wL2xvZy5kb19jb21waWxlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVG8gc2VlIHRoZSBjb21tYW5kcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICAgICAgcmFuIHRvIGdlbmVyYXRlIGEgbG9nLCBsb29rIGF0IHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bi5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2cuZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW4uZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIGFyZSBhY3R1YWxseSBzeW1ib2xpYyBsaW5rcyB0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2cuZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGlkPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9nLnJ1bl88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi48L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5waWQ8L3JlcGxhY2VhYmxlPiwKKyAgICAgICAgICAgICAgICB3aGVyZSA8cmVwbGFjZWFibGU+cGlkPC9yZXBsYWNlYWJsZT4gaXMgdGhlIFBJRCB0aGUgdGFzayBoYWQKKyAgICAgICAgICAgICAgICB3aGVuIGl0IHJhbi4KKyAgICAgICAgICAgICAgICBUaGUgc3ltbGlua3MgYWx3YXlzIHBvaW50IHRvIHRoZSBmaWxlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtb3N0CisgICAgICAgICAgICAgICAgcmVjZW50IHJ1bi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtZGVidWdnaW5nLXZpZXdpbmctdmFyaWFibGUtdmFsdWVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5WaWV3aW5nIFZhcmlhYmxlIFZhbHVlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UncyA8ZmlsZW5hbWU+LWU8L2ZpbGVuYW1lPiBvcHRpb24gaXMgdXNlZCB0byBkaXNwbGF5CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdmFsdWVzIGFmdGVyIHBhcnNpbmcuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIGRpc3BsYXlzIHRoZSB2YXJpYWJsZSB2YWx1ZXMgYWZ0ZXIgdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyAoaS5lLiA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGFuZCBzbyBmb3J0aCkgaGF2ZSBiZWVuCisgICAgICAgICAgICAgICAgcGFyc2VkOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1lCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBkaXNwbGF5cyB2YXJpYWJsZSB2YWx1ZXMgYWZ0ZXIgYSBzcGVjaWZpYworICAgICAgICAgICAgICAgIHJlY2lwZSBoYXMgYmVlbiBwYXJzZWQuCisgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlcyBpbmNsdWRlIHRob3NlIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24gYXMgd2VsbDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtZSByZWNpcGVuYW1lCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBFYWNoIHJlY2lwZSBoYXMgaXRzIG93biBwcml2YXRlIHNldCBvZiB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgKGRhdGFzdG9yZSkuCisgICAgICAgICAgICAgICAgICAgIEludGVybmFsbHksIGFmdGVyIHBhcnNpbmcgdGhlIGNvbmZpZ3VyYXRpb24sIGEgY29weSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0aW5nIGRhdGFzdG9yZSBpcyBtYWRlIHByaW9yIHRvIHBhcnNpbmcgZWFjaCByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY29weWluZyBpbXBsaWVzIHRoYXQgdmFyaWFibGVzIHNldCBpbiBvbmUgcmVjaXBlIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgbm90IGJlIHZpc2libGUgdG8gb3RoZXIgcmVjaXBlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+TGlrZXdpc2UsIGVhY2ggdGFzayB3aXRoaW4gYSByZWNpcGUgZ2V0cyBhIHByaXZhdGUKKyAgICAgICAgICAgICAgICAgICAgZGF0YXN0b3JlIGJhc2VkIG9uIHRoZSByZWNpcGUgZGF0YXN0b3JlLCB3aGljaCBtZWFucyB0aGF0CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBzZXQgd2l0aGluIG9uZSB0YXNrIHdpbGwgbm90IGJlIHZpc2libGUgdG8KKyAgICAgICAgICAgICAgICAgICAgb3RoZXIgdGFza3MuPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gdGhlIG91dHB1dCBvZiA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+LCBlYWNoCisgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgcHJlY2VkZWQgYnkgYSBkZXNjcmlwdGlvbiBvZiBob3cgdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgZ290IGl0cyB2YWx1ZSwgaW5jbHVkaW5nIHRlbXBvcmFyeSB2YWx1ZXMgdGhhdCB3ZXJlIGxhdGVyCisgICAgICAgICAgICAgICAgb3ZlcnJpZGVuLgorICAgICAgICAgICAgICAgIFRoaXMgZGVzY3JpcHRpb24gYWxzbyBpbmNsdWRlcyB2YXJpYWJsZSBmbGFncyAodmFyZmxhZ3MpIHNldCBvbgorICAgICAgICAgICAgICAgIHRoZSB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IGNhbiBiZSB2ZXJ5IGhlbHBmdWwgZHVyaW5nIGRlYnVnZ2luZy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVmFyaWFibGVzIHRoYXQgYXJlIGV4cG9ydGVkIHRvIHRoZSBlbnZpcm9ubWVudCBhcmUgcHJlY2VkZWQgYnkKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXhwb3J0PC9maWxlbmFtZT4gaW4gdGhlIG91dHB1dCBvZgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1lPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGV4cG9ydCBDQz0iaTU4Ni1wb2t5LWxpbnV4LWdjYyAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vaG9tZS91bGYvcG9reS9idWlsZC90bXAvc3lzcm9vdHMvcWVtdXg4NiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHZhcmlhYmxlIHZhbHVlcywgdGhlIG91dHB1dCBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1lPC9maWxlbmFtZT4mbmJzcDs8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kcyBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgc3RhcnRzIHdpdGggYSB0cmVlIGxpc3RpbmcgYWxsIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGFuZCBjbGFzc2VzIGluY2x1ZGVkIGdsb2JhbGx5LCByZWN1cnNpdmVseSBsaXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZXMgdGhleSBpbmNsdWRlIG9yIGluaGVyaXQgaW4gdHVybi4KKyAgICAgICAgICAgICAgICAgICAgICAgIE11Y2ggb2YgdGhlIGJlaGF2aW9yIG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAoaW5jbHVkaW5nIHRoZSBiZWhhdmlvciBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I25vcm1hbC1yZWNpcGUtYnVpbGQtdGFza3MnPm5vcm1hbCByZWNpcGUgYnVpbGQgdGFza3M8L3VsaW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYmFzZSc+PGZpbGVuYW1lPmJhc2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBhbmQgdGhlIGNsYXNzZXMgaXQgaW5oZXJpdHMsIHJhdGhlciB0aGFuIGJlaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBpbnRvIEJpdEJha2UgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHRoZSB2YXJpYWJsZSB2YWx1ZXMsIGFsbCBmdW5jdGlvbnMgYXBwZWFyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHNoZWxsIGZ1bmN0aW9ucywgdmFyaWFibGVzIHJlZmVyZW5jZWQgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYm9keSBhcmUgZXhwYW5kZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiBhIGZ1bmN0aW9uIGhhcyBiZWVuIG1vZGlmaWVkIHVzaW5nIG92ZXJyaWRlcyBvcgorICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgb3ZlcnJpZGUtc3R5bGUgb3BlcmF0b3JzIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPiwgdGhlbiB0aGUgZmluYWwgYXNzZW1ibGVkCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBib2R5IGFwcGVhcnMgaW4gdGhlIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3ZpZXdpbmctcGFja2FnZS1pbmZvcm1hdGlvbi13aXRoLW9lLXBrZ2RhdGEtdXRpbCc+CisgICAgICAgICAgICA8dGl0bGU+Vmlld2luZyBQYWNrYWdlIEluZm9ybWF0aW9uIHdpdGggPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbDwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSB1dGlsaXR5IHRvIHF1ZXJ5CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBLR0RBVEFfRElSJz48ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kIGRpc3BsYXkgdmFyaW91cyBwYWNrYWdlLXJlbGF0ZWQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoZSB1dGlsaXR5LCB5b3UgbXVzdCB1c2UgaXQgdG8gdmlldyBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIG9uIHBhY2thZ2VzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gYnVpbHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgYSBmZXcgb2YgdGhlIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWw8L2ZpbGVuYW1lPiBzdWJjb21tYW5kcy4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIHN0YW5kYXJkICogYW5kID8gZ2xvYmJpbmcgd2lsZGNhcmRzIGFzIHBhcnQKKyAgICAgICAgICAgICAgICAgICAgb2YgcGFja2FnZSBuYW1lcyBhbmQgcGF0aHMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIFs8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5wYXR0ZXJuPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+XTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgYWxsIHBhY2thZ2VzIHRoYXQgaGF2ZSBiZWVuIGJ1aWx0LCBvcHRpb25hbGx5CisgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdGluZyB0aGUgbWF0Y2ggdG8gcGFja2FnZXMgdGhhdCBtYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnBhdHRlcm48L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzJm5ic3A7PC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPiZuYnNwOy4uLjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBjb250YWluZWQgaW4gdGhlIGdpdmVuCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgZGlmZmVyZW50IHdheSB0byB2aWV3IHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBsb29rIGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59L3BhY2thZ2VzLXNwbGl0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIHJlY2lwZSB0aGF0IGdlbmVyYXRlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgYW5kIGhhcyBvbmUgc3ViZGlyZWN0b3J5IGZvciBlYWNoIHBhY2thZ2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGdlbmVyYXRlcywgd2hpY2ggY29udGFpbnMgdGhlIGZpbGVzIHN0b3JlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgcGFja2FnZS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gaW5zcGVjdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtXT1JLRElSfS9wYWNrYWdlcy1zcGxpdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBtYWtlIHN1cmUgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLXJtLXdvcmsnPjxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBlbmFibGVkIHdoZW4geW91IGJ1aWxkIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsIGZpbmQtcGF0aCZuYnNwOzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBhdGg8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4mbmJzcDsuLi48L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBuYW1lcyBvZiB0aGUgcGFja2FnZXMgdGhhdCBjb250YWluIHRoZSBnaXZlbgorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZWxscyB1cyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9zaGFyZS9tYW4vbWFuMS9tYWtlLjE8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgY29udGFpbmVkIGluIHRoZSA8ZmlsZW5hbWU+bWFrZS1kb2M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBvZS1wa2dkYXRhLXV0aWwgZmluZC1wYXRoIC91c3Ivc2hhcmUvbWFuL21hbjEvbWFrZS4xCisgICAgIG1ha2UtZG9jOiAvdXNyL3NoYXJlL21hbi9tYW4xL21ha2UuMQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWwgbG9va3VwLXJlY2lwZSZuYnNwOzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4mbmJzcDsuLi48L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBuYW1lIG9mIHRoZSByZWNpcGVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2UgdGhlIGdpdmVuIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kLCB1c2UgdGhlIGhlbHAgZmFjaWxpdHk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG9lLXBrZ2RhdGEtdXRpbCAmZGFzaDsmZGFzaDtoZWxwCisgICAgICQgb2UtcGtnZGF0YS11dGlsIDxyZXBsYWNlYWJsZT5zdWJjb21tYW5kPC9yZXBsYWNlYWJsZT4gLS1oZWxwCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi12aWV3aW5nLWRlcGVuZGVuY2llcy1iZXR3ZWVuLXJlY2lwZXMtYW5kLXRhc2tzJz4KKyAgICAgICAgICAgIDx0aXRsZT5WaWV3aW5nIERlcGVuZGVuY2llcyBCZXR3ZWVuIFJlY2lwZXMgYW5kIFRhc2tzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU29tZXRpbWVzIGl0IGNhbiBiZSBoYXJkIHRvIHNlZSB3aHkgQml0QmFrZSB3YW50cyB0byBidWlsZCBvdGhlcgorICAgICAgICAgICAgICAgIHJlY2lwZXMgYmVmb3JlIHRoZSBvbmUgeW91IGhhdmUgc3BlY2lmaWVkLgorICAgICAgICAgICAgICAgIERlcGVuZGVuY3kgaW5mb3JtYXRpb24gY2FuIGhlbHAgeW91IHVuZGVyc3RhbmQgd2h5IGEgcmVjaXBlIGlzCisgICAgICAgICAgICAgICAgYnVpbHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGdlbmVyYXRlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gZm9yIGEgcmVjaXBlLCBydW4gdGhlCisgICAgICAgICAgICAgICAgZm9sbG93aW5nIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWcgPHJlcGxhY2VhYmxlPnJlY2lwZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgd3JpdGVzIHRoZSBmb2xsb3dpbmcgZmlsZXMgaW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBuLWJ1aWxkbGlzdDwvZmlsZW5hbWU+OiBBIGxpc3Qgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMvdGFyZ2V0cyBpbnZvbHZlZCBpbiBidWlsZGluZworICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnJlY2lwZW5hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZvbHZlZCIgaGVyZSBtZWFucyB0aGF0IGF0IGxlYXN0IG9uZSB0YXNrIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIG5lZWRzIHRvIHJ1biB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+IGZyb20gc2NyYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldHMgdGhhdCBhcmUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1BU1NVTUVfUFJPVklERUQnPjxmaWxlbmFtZT5BU1NVTUVfUFJPVklERUQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm90IGxpc3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGFzay1kZXBlbmRzLmRvdDwvZmlsZW5hbWU+OiBBIGdyYXBoIHNob3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRhc2tzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBncmFwaHMgYXJlIGluCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRE9UXyUyOGdyYXBoX2Rlc2NyaXB0aW9uX2xhbmd1YWdlJTI5Jz5ET1Q8L3VsaW5rPgorICAgICAgICAgICAgICAgIGZvcm1hdCBhbmQgY2FuIGJlIGNvbnZlcnRlZCB0byBpbWFnZXMgKGUuZy4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvdDwvZmlsZW5hbWU+IHRvb2wgZnJvbQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZ3JhcGh2aXoub3JnLyc+R3JhcGh2aXo8L3VsaW5rPikuCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBET1QgZmlsZXMgdXNlIGEgcGxhaW4gdGV4dCBmb3JtYXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGdyYXBocyBnZW5lcmF0ZWQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWc8L2ZpbGVuYW1lPiBjb21tYW5kIGFyZSBvZnRlbiBzbworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhcmdlIGFzIHRvIGJlIGRpZmZpY3VsdCB0byByZWFkIHdpdGhvdXQgc3BlY2lhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydW5pbmcgKGUuZy4gd2l0aCBCaXRiYWtlJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LUk8L2ZpbGVuYW1lPiBvcHRpb24pIGFuZCBwcm9jZXNzaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc3BpdGUgdGhlIGZvcm0gYW5kIHNpemUgb2YgdGhlIGdyYXBocywgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyA8ZmlsZW5hbWU+LmRvdDwvZmlsZW5hbWU+IGZpbGVzIGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWxsIGJlIHBvc3NpYmxlIHRvIHJlYWQgYW5kIHByb3ZpZGUgdXNlZnVsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgYW4gZXhhbXBsZSwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRhc2stZGVwZW5kcy5kb3Q8L2ZpbGVuYW1lPiBmaWxlIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgImxpYnhzbHQuZG9fY29uZmlndXJlIiAtPiAibGlieG1sMi5kb19wb3B1bGF0ZV9zeXNyb290IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYWJvdmUgZXhhbXBsZSBsaW5lIHJldmVhbHMgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgaW4gPGZpbGVuYW1lPmxpYnhzbHQ8L2ZpbGVuYW1lPiBkZXBlbmRzIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wb3B1bGF0ZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrIGluIDxmaWxlbmFtZT5saWJ4bWwyPC9maWxlbmFtZT4sIHdoaWNoIGlzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSB0d28gcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBob3cgPGZpbGVuYW1lPi5kb3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGNhbiBiZSBwcm9jZXNzZWQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9jb250cmliL2dyYXBoLXRvb2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBzY3JpcHQsIHdoaWNoIGZpbmRzIGFuZCBkaXNwbGF5cyBwYXRocworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJldHdlZW4gZ3JhcGggbm9kZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYSBkaWZmZXJlbnQgbWV0aG9kIHRvIHZpZXcgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIGJ5IHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtZyAtdSB0YXNrZXhwIDxyZXBsYWNlYWJsZT5yZWNpcGVuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGRpc3BsYXlzIGEgR1VJIHdpbmRvdyBmcm9tIHdoaWNoIHlvdSBjYW4gdmlldworICAgICAgICAgICAgICAgIGJ1aWxkLXRpbWUgYW5kIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIGZvciB0aGUgcmVjaXBlcyBpbnZvbHZlZCBpbgorICAgICAgICAgICAgICAgIGJ1aWxkaW5nIDxyZXBsYWNlYWJsZT5yZWNpcGVuYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZGV2LXZpZXdpbmctdGFzay12YXJpYWJsZS1kZXBlbmRlbmNpZXMnPgorICAgICAgICAgICAgPHRpdGxlPlZpZXdpbmcgVGFzayBWYXJpYWJsZSBEZXBlbmRlbmNpZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjY2hlY2tzdW1zJz5DaGVja3N1bXMgKFNpZ25hdHVyZXMpPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbCwgQml0QmFrZSB0cmllcyB0bworICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHdoYXQgdmFyaWFibGVzIGEgdGFzayBkZXBlbmRzIG9uIHNvCisgICAgICAgICAgICAgICAgdGhhdCBpdCBjYW4gcmVydW4gdGhlIHRhc2sgaWYgYW55IHZhbHVlcyBvZiB0aGUgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgY2hhbmdlLgorICAgICAgICAgICAgICAgIFRoaXMgZGV0ZXJtaW5hdGlvbiBpcyB1c3VhbGx5IHJlbGlhYmxlLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBkbyB0aGluZ3MgbGlrZSBjb25zdHJ1Y3QgdmFyaWFibGUgbmFtZXMgYXQKKyAgICAgICAgICAgICAgICBydW50aW1lLCB0aGVuIHlvdSBtaWdodCBoYXZlIHRvIG1hbnVhbGx5IGRlY2xhcmUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgb24gdGhvc2UgdmFyaWFibGVzIHVzaW5nIDxmaWxlbmFtZT52YXJkZXBzPC9maWxlbmFtZT4gYXMKKyAgICAgICAgICAgICAgICBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPlZhcmlhYmxlIEZsYWdzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1bnN1cmUgd2hldGhlciBhIHZhcmlhYmxlIGRlcGVuZGVuY3kgaXMgYmVpbmcKKyAgICAgICAgICAgICAgICBwaWNrZWQgdXAgYXV0b21hdGljYWxseSBmb3IgYSBnaXZlbiB0YXNrLCB5b3UgY2FuIGxpc3QgdGhlCisgICAgICAgICAgICAgICAgdmFyaWFibGUgZGVwZW5kZW5jaWVzIEJpdEJha2UgaGFzIGRldGVybWluZWQgYnkgZG9pbmcgdGhlCisgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIHJlY2lwZSBjb250YWluaW5nIHRoZSB0YXNrOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgPHJlcGxhY2VhYmxlPnJlY2lwZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluc2lkZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TVEFNUFNfRElSJz48ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgZmluZCB0aGUgc2lnbmF0dXJlIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+KSBmaWxlIHRoYXQgY29ycmVzcG9uZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSB0YXNrLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zaWdkYXRhPC9maWxlbmFtZT4gZmlsZXMgY29udGFpbiBhIHBpY2tsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBkYXRhYmFzZSBvZiBhbGwgdGhlIG1ldGFkYXRhIHRoYXQgd2VudCBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGluZyB0aGUgaW5wdXQgY2hlY2tzdW0gZm9yIHRoZSB0YXNrLgorICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrIG9mIHRoZSA8ZmlsZW5hbWU+ZGI8L2ZpbGVuYW1lPiByZWNpcGUsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpZ2RhdGE8L2ZpbGVuYW1lPiBmaWxlIG1pZ2h0IGJlIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGxvY2F0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAke0JVSUxERElSfS90bXAvc3RhbXBzL2k1ODYtcG9reS1saW51eC9kYi82LjAuMzAtcjEuZG9fZmV0Y2guc2lnZGF0YS43YzA0OGMxODIyMmIxNmZmMGJjZWUyMDAwZWY2NDhiMQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRhc2tzIHRoYXQgYXJlIGFjY2VsZXJhdGVkIHRocm91Z2ggdGhlIHNoYXJlZCBzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlLWNhY2hlJz5zc3RhdGU8L3VsaW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLCBhbiBhZGRpdGlvbmFsIDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgd3JpdHRlbiBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbG9uZyB3aXRoIHRoZSBjYWNoZWQgdGFzayBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnNpZ2luZm88L2ZpbGVuYW1lPiBmaWxlcyBjb250YWluIGV4YWN0bHkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIGluZm9ybWF0aW9uIGFzIDxmaWxlbmFtZT5zaWdkYXRhPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1biA8ZmlsZW5hbWU+Yml0YmFrZS1kdW1wc2lnPC9maWxlbmFtZT4gb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2lnaW5mbzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZS1kdW1wc2lnICR7QlVJTERESVJ9L3RtcC9zdGFtcHMvaTU4Ni1wb2t5LWxpbnV4L2RiLzYuMC4zMC1yMS5kb19mZXRjaC5zaWdkYXRhLjdjMDQ4YzE4MjIyYjE2ZmYwYmNlZTIwMDBlZjY0OGIxCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgb3V0cHV0IG9mIHRoZSBhYm92ZSBjb21tYW5kLCB5b3Ugd2lsbCBmaW5kIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgbGlrZSB0aGUgZm9sbG93aW5nLCB3aGljaCBsaXN0cyBhbGwgdGhlIChpbmZlcnJlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRlcGVuZGVuY2llcyBmb3IgdGhlIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxpc3QgYWxzbyBpbmNsdWRlcyBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGRlcGVuZGluZyBvbiBvdGhlciB2YXJpYWJsZXMsIHJlY3Vyc2l2ZWx5LgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBUYXNrIGRlcGVuZGVuY2llczogWydQVicsICdTUkNSRVYnLCAnU1JDX1VSSScsICdTUkNfVVJJW21kNXN1bV0nLCAnU1JDX1VSSVtzaGEyNTZzdW1dJywgJ2Jhc2VfZG9fZmV0Y2gnXQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zIChlLmcuIDxmaWxlbmFtZT5iYXNlX2RvX2ZldGNoPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzbyBjb3VudCBhcyB2YXJpYWJsZSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgZnVuY3Rpb25zIGluIHR1cm4gZGVwZW5kIG9uIHRoZSB2YXJpYWJsZXMgdGhleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgb2YgPGZpbGVuYW1lPmJpdGJha2UtZHVtcHNpZzwvZmlsZW5hbWU+IGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzIHRoZSB2YWx1ZSBlYWNoIHZhcmlhYmxlIGhhZCwgYSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggdmFyaWFibGUsIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfSEFTSEJBU0VfV0hJVEVMSVNUJz48ZmlsZW5hbWU+QkJfSEFTSEJBU0VfV0hJVEVMSVNUPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGVyZSBpcyBhbHNvIGEgPGZpbGVuYW1lPmJpdGJha2UtZGlmZnNpZ3M8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgZm9yIGNvbXBhcmluZyB0d28gPGZpbGVuYW1lPnNpZ2luZm88L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaWdkYXRhPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGNhbiBiZSBoZWxwZnVsIHdoZW4gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hhdAorICAgICAgICAgICAgICAgIGNoYW5nZWQgYmV0d2VlbiB0d28gdmVyc2lvbnMgb2YgYSB0YXNrLgorICAgICAgICAgICAgICAgIElmIHlvdSBjYWxsIDxmaWxlbmFtZT5iaXRiYWtlLWRpZmZzaWdzPC9maWxlbmFtZT4gd2l0aCBqdXN0IG9uZQorICAgICAgICAgICAgICAgIGZpbGUsIHRoZSBjb21tYW5kIGJlaGF2ZXMgbGlrZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWR1bXBzaWc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSBCaXRCYWtlIHRvIGR1bXAgb3V0IHRoZSBzaWduYXR1cmUgY29uc3RydWN0aW9uCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gd2l0aG91dCBleGVjdXRpbmcgdGFza3MgYnkgdXNpbmcgZWl0aGVyIG9mIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZyBCaXRCYWtlIGNvbW1hbmQtbGluZSBvcHRpb25zOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJmRhc2g7JmRhc2g7ZHVtcC1zaWduYXR1cmVzPTxyZXBsYWNlYWJsZT5TSUdOQVRVUkVfSEFORExFUjwvcmVwbGFjZWFibGU+CisgICAgIC1TIDxyZXBsYWNlYWJsZT5TSUdOQVRVUkVfSEFORExFUjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUd28gY29tbW9uIHZhbHVlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPlNJR05BVFVSRV9IQU5ETEVSPC9yZXBsYWNlYWJsZT4gYXJlICJub25lIiBhbmQKKyAgICAgICAgICAgICAgICAgICAgInByaW50ZGlmZiIsIHdoaWNoIGR1bXAgb25seSB0aGUgc2lnbmF0dXJlIG9yIGNvbXBhcmUgdGhlCisgICAgICAgICAgICAgICAgICAgIGR1bXBlZCBzaWduYXR1cmUgd2l0aCB0aGUgY2FjaGVkIG9uZSwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBVc2luZyBCaXRCYWtlIHdpdGggZWl0aGVyIG9mIHRoZXNlIG9wdGlvbnMgY2F1c2VzIEJpdEJha2UgdG8KKyAgICAgICAgICAgICAgICBkdW1wIG91dCA8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+IGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdGFtcHM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgZm9yIGV2ZXJ5IHRhc2sgaXQgd291bGQKKyAgICAgICAgICAgICAgICBoYXZlIGV4ZWN1dGVkIGluc3RlYWQgb2YgYnVpbGRpbmcgdGhlIHNwZWNpZmllZCB0YXJnZXQgcGFja2FnZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtdmlld2luZy1tZXRhZGF0YS11c2VkLXRvLWNyZWF0ZS10aGUtaW5wdXQtc2lnbmF0dXJlLW9mLWEtc2hhcmVkLXN0YXRlLXRhc2snPgorICAgICAgICAgICAgPHRpdGxlPlZpZXdpbmcgTWV0YWRhdGEgVXNlZCB0byBDcmVhdGUgdGhlIElucHV0IFNpZ25hdHVyZSBvZiBhIFNoYXJlZCBTdGF0ZSBUYXNrPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU2VlaW5nIHdoYXQgbWV0YWRhdGEgd2VudCBpbnRvIGNyZWF0aW5nIHRoZSBpbnB1dCBzaWduYXR1cmUKKyAgICAgICAgICAgICAgICBvZiBhIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSB0YXNrIGNhbiBiZSBhIHVzZWZ1bCBkZWJ1Z2dpbmcKKyAgICAgICAgICAgICAgICBhaWQuCisgICAgICAgICAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4gc2lnbmF0dXJlIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4pIGZpbGVzIGluCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHZpZXcgYW5kIGludGVycHJldCBpbmZvcm1hdGlvbiBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4gZmlsZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGV2LXZpZXdpbmctdGFzay12YXJpYWJsZS1kZXBlbmRlbmNpZXMnPlZpZXdpbmcgVGFzayBWYXJpYWJsZSBEZXBlbmRlbmNpZXM8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBjb25jZXB0dWFsIGluZm9ybWF0aW9uIG9uIHNoYXJlZCBzdGF0ZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZSc+U2hhcmVkIFN0YXRlPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi1pbnZhbGlkYXRpbmctc2hhcmVkLXN0YXRlLXRvLWZvcmNlLWEtdGFzay10by1ydW4nPgorICAgICAgICAgICAgPHRpdGxlPkludmFsaWRhdGluZyBTaGFyZWQgU3RhdGUgdG8gRm9yY2UgYSBUYXNrIHRvIFJ1bjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I292ZXJ2aWV3LWNoZWNrc3Vtcyc+Y2hlY2tzdW1zPC91bGluaz4KKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZSc+c2hhcmVkIHN0YXRlPC91bGluaz4KKyAgICAgICAgICAgICAgICBjYWNoZSB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IHJlYnVpbGRpbmcgdGFza3MuCisgICAgICAgICAgICAgICAgQ29sbGVjdGl2ZWx5LCB0aGlzIHNjaGVtZSBpcyBrbm93biBhcyAic2hhcmVkIHN0YXRlIGNvZGUuIgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyB3aXRoIGFsbCBzY2hlbWVzLCB0aGlzIG9uZSBoYXMgc29tZSBkcmF3YmFja3MuCisgICAgICAgICAgICAgICAgSXQgaXMgcG9zc2libGUgdGhhdCB5b3UgY291bGQgbWFrZSBpbXBsaWNpdCBjaGFuZ2VzIHRvIHlvdXIKKyAgICAgICAgICAgICAgICBjb2RlIHRoYXQgdGhlIGNoZWNrc3VtIGNhbGN1bGF0aW9ucyBkbyBub3QgdGFrZSBpbnRvCisgICAgICAgICAgICAgICAgYWNjb3VudC4KKyAgICAgICAgICAgICAgICBUaGVzZSBpbXBsaWNpdCBjaGFuZ2VzIGFmZmVjdCBhIHRhc2sncyBvdXRwdXQgYnV0IGRvIG5vdAorICAgICAgICAgICAgICAgIHRyaWdnZXIgdGhlIHNoYXJlZCBzdGF0ZSBjb2RlIGludG8gcmVidWlsZGluZyBhIHJlY2lwZS4KKyAgICAgICAgICAgICAgICBDb25zaWRlciBhbiBleGFtcGxlIGR1cmluZyB3aGljaCBhIHRvb2wgY2hhbmdlcyBpdHMgb3V0cHV0LgorICAgICAgICAgICAgICAgIEFzc3VtZSB0aGF0IHRoZSBvdXRwdXQgb2YgPGZpbGVuYW1lPnJwbWRlcHM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBvZiB0aGUgY2hhbmdlIHNob3VsZCBiZSB0aGF0IGFsbCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlX3dyaXRlX3JwbTwvZmlsZW5hbWU+IHNoYXJlZCBzdGF0ZSBjYWNoZQorICAgICAgICAgICAgICAgIGl0ZW1zIGJlY29tZSBpbnZhbGlkLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGJlY2F1c2UgdGhlIGNoYW5nZSB0byB0aGUgb3V0cHV0IGlzCisgICAgICAgICAgICAgICAgZXh0ZXJuYWwgdG8gdGhlIGNvZGUgYW5kIHRoZXJlZm9yZSBpbXBsaWNpdCwKKyAgICAgICAgICAgICAgICB0aGUgYXNzb2NpYXRlZCBzaGFyZWQgc3RhdGUgY2FjaGUgaXRlbXMgZG8gbm90IGJlY29tZQorICAgICAgICAgICAgICAgIGludmFsaWRhdGVkLgorICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGJ1aWxkIHByb2Nlc3MgdXNlcyB0aGUgY2FjaGVkIGl0ZW1zCisgICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gcnVubmluZyB0aGUgdGFzayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBPYnZpb3VzbHksIHRoZXNlIHR5cGVzIG9mIGltcGxpY2l0IGNoYW5nZXMgY2FuIGNhdXNlCisgICAgICAgICAgICAgICAgcHJvYmxlbXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGF2b2lkIHRoZXNlIHByb2JsZW1zIGR1cmluZyB0aGUgYnVpbGQsIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgdW5kZXJzdGFuZCB0aGUgZWZmZWN0cyBvZiBhbnkgY2hhbmdlcyB5b3UgbWFrZS4KKyAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgY2hhbmdlcyB5b3UgbWFrZSBkaXJlY3RseSB0byBhIGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgYXJlIGF1dG9tYXRpY2FsbHkgZmFjdG9yZWQgaW50byB0aGUgY2hlY2tzdW0gY2FsY3VsYXRpb24uCisgICAgICAgICAgICAgICAgVGh1cywgdGhlc2UgZXhwbGljaXQgY2hhbmdlcyBpbnZhbGlkYXRlIHRoZSBhc3NvY2lhdGVkCisgICAgICAgICAgICAgICAgYXJlYSBvZiBzaGFyZWQgc3RhdGUgY2FjaGUuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IG5lZWQgdG8gYmUgYXdhcmUgb2YgYW55IGltcGxpY2l0IGNoYW5nZXMgdGhhdAorICAgICAgICAgICAgICAgIGFyZSBub3Qgb2J2aW91cyBjaGFuZ2VzIHRvIHRoZSBjb2RlIGFuZCBjb3VsZCBhZmZlY3QKKyAgICAgICAgICAgICAgICB0aGUgb3V0cHV0IG9mIGEgZ2l2ZW4gdGFzay4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB5b3UgaWRlbnRpZnkgYW4gaW1wbGljaXQgY2hhbmdlLCB5b3UgY2FuIGVhc2lseQorICAgICAgICAgICAgICAgIHRha2Ugc3RlcHMgdG8gaW52YWxpZGF0ZSB0aGUgY2FjaGUgYW5kIGZvcmNlIHRoZSB0YXNrcworICAgICAgICAgICAgICAgIHRvIHJ1bi4KKyAgICAgICAgICAgICAgICBUaGUgc3RlcHMgeW91IGNhbiB0YWtlIGFyZSBhcyBzaW1wbGUgYXMgY2hhbmdpbmcgYQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uJ3MgY29tbWVudHMgaW4gdGhlIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBpbnZhbGlkYXRlIHBhY2thZ2Ugc2hhcmVkIHN0YXRlIGZpbGVzLAorICAgICAgICAgICAgICAgIGNoYW5nZSB0aGUgY29tbWVudCBzdGF0ZW1lbnRzIG9mCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIG9yIHRoZSBjb21tZW50cyBvZiBvbmUgb2YgdGhlIGZ1bmN0aW9ucyBpdCBjYWxscy4KKyAgICAgICAgICAgICAgICBFdmVuIHRob3VnaCB0aGUgY2hhbmdlIGlzIHB1cmVseSBjb3NtZXRpYywgaXQgY2F1c2VzIHRoZQorICAgICAgICAgICAgICAgIGNoZWNrc3VtIHRvIGJlIHJlY2FsY3VsYXRlZCBhbmQgZm9yY2VzIHRoZSBidWlsZCBzeXN0ZW0gdG8KKyAgICAgICAgICAgICAgICBydW4gdGhlIHRhc2sgYWdhaW4uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9mIGEgY29tbWl0IHRoYXQgbWFrZXMgYSBjb3NtZXRpYworICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgdG8gaW52YWxpZGF0ZSBzaGFyZWQgc3RhdGUsIHNlZSB0aGlzCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L2NvbW1pdC9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzP2lkPTczN2Y4YmJiNGYyN2I0ODM3MDQ3Y2I5YjRmYmZlMDFkZmRlMzZkNTQnPmNvbW1pdDwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtZGVidWdnaW5nLXRhc2tydW5uaW5nJz4KKyAgICAgICAgICAgIDx0aXRsZT5SdW5uaW5nIFNwZWNpZmljIFRhc2tzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW55IGdpdmVuIHJlY2lwZSBjb25zaXN0cyBvZiBhIHNldCBvZiB0YXNrcy4KKyAgICAgICAgICAgICAgICBUaGUgc3RhbmRhcmQgQml0QmFrZSBiZWhhdmlvciBpbiBtb3N0IGNhc2VzIGlzOgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fYnVpbGQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB0YXNrIGlzIDxmaWxlbmFtZT5kb19idWlsZDwvZmlsZW5hbWU+IGFuZCBhbnkgdGFza3MKKyAgICAgICAgICAgICAgICBvbiB3aGljaCBpdCBkZXBlbmRzIGJ1aWxkIGZpcnN0LgorICAgICAgICAgICAgICAgIFNvbWUgdGFza3MsIHN1Y2ggYXMgPGZpbGVuYW1lPmRvX2RldnNoZWxsPC9maWxlbmFtZT4sIGFyZSBub3QKKyAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSBkZWZhdWx0IGJ1aWxkIGNoYWluLgorICAgICAgICAgICAgICAgIElmIHlvdSB3aXNoIHRvIHJ1biBhIHRhc2sgdGhhdCBpcyBub3QgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZAorICAgICAgICAgICAgICAgIGNoYWluLCB5b3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPi1jPC9maWxlbmFtZT4gb3B0aW9uIGluCisgICAgICAgICAgICAgICAgQml0QmFrZS4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBkZXZzaGVsbAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4tYzwvZmlsZW5hbWU+IG9wdGlvbiByZXNwZWN0cyB0YXNrIGRlcGVuZGVuY2llcywKKyAgICAgICAgICAgICAgICB3aGljaCBtZWFucyB0aGF0IGFsbCBvdGhlciB0YXNrcyAoaW5jbHVkaW5nIHRhc2tzIGZyb20gb3RoZXIKKyAgICAgICAgICAgICAgICByZWNpcGVzKSB0aGF0IHRoZSBzcGVjaWZpZWQgdGFzayBkZXBlbmRzIG9uIHdpbGwgYmUgcnVuIGJlZm9yZQorICAgICAgICAgICAgICAgIHRoZSB0YXNrLgorICAgICAgICAgICAgICAgIEV2ZW4gd2hlbiB5b3UgbWFudWFsbHkgc3BlY2lmeSBhIHRhc2sgdG8gcnVuIHdpdGgKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWM8L2ZpbGVuYW1lPiwgQml0QmFrZSB3aWxsIG9ubHkgcnVuIHRoZSB0YXNrIGlmIGl0CisgICAgICAgICAgICAgICAgY29uc2lkZXJzIGl0ICJvdXQgb2YgZGF0ZSIuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz5TdGFtcCBGaWxlcyBhbmQgdGhlIFJlcnVubmluZyBvZiBUYXNrczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICBob3cgQml0QmFrZSBkZXRlcm1pbmVzIHdoZXRoZXIgYSB0YXNrIGlzICJvdXQgb2YgZGF0ZSIuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGZvcmNlIGFuIHVwLXRvLWRhdGUgdGFzayB0byBiZSByZXJ1biAoZS5nLgorICAgICAgICAgICAgICAgIGJlY2F1c2UgeW91IG1hZGUgbWFudWFsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRoYXQgeW91IHdhbnQgdG8gdHJ5IG91dCksIHRoZW4geW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4gb3B0aW9uLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVhc29uIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IGlzIG5ldmVyIHJlcXVpcmVkIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgcnVubmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWRldnNoZWxsJz48ZmlsZW5hbWU+ZG9fZGV2c2hlbGw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaXMgYmVjYXVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPls8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPjxmaWxlbmFtZT5ub3N0YW1wPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT5dPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZmxhZyBpcyBhbHJlYWR5IHNldCBmb3IgdGhlIHRhc2suCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBvbmUgd2F5IHlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IG9wdGlvbjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wCisgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAuCisgICAgIG1ha2Ugc29tZSBjaGFuZ2VzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGUgd29yayBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgIC4KKyAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AgLWMgY29tcGlsZSAtZgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBzZXF1ZW5jZSBmaXJzdCBidWlsZHMgYW5kIHRoZW4gcmVjb21waWxlcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhlIGxhc3QgY29tbWFuZCByZXJ1bnMgYWxsIHRhc2tzIChiYXNpY2FsbHkgdGhlIHBhY2thZ2luZworICAgICAgICAgICAgICAgIHRhc2tzKSBhZnRlciB0aGUgY29tcGlsZS4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIHJlY29nbml6ZXMgdGhhdCB0aGUgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHRhc2sgd2FzIHJlcnVuIGFuZCB0aGVyZWZvcmUgdW5kZXJzdGFuZHMgdGhhdCB0aGUgb3RoZXIgdGFza3MKKyAgICAgICAgICAgICAgICBhbHNvIG5lZWQgdG8gYmUgcnVuIGFnYWluLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbm90aGVyLCBzaG9ydGVyIHdheSB0byByZXJ1biBhIHRhc2sgYW5kIGFsbAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I25vcm1hbC1yZWNpcGUtYnVpbGQtdGFza3MnPm5vcm1hbCByZWNpcGUgYnVpbGQgdGFza3M8L3VsaW5rPgorICAgICAgICAgICAgICAgIHRoYXQgZGVwZW5kIG9uIGl0IGlzIHRvIHVzZSB0aGUgPGZpbGVuYW1lPi1DPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBvcHRpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIHVwcGVyLWNhc2VkIGFuZCBpcyBzZXBhcmF0ZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWM8L2ZpbGVuYW1lPiBvcHRpb24sIHdoaWNoIGlzIGxvd2VyLWNhc2VkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBVc2luZyB0aGlzIG9wdGlvbiBpbnZhbGlkYXRlcyB0aGUgZ2l2ZW4gdGFzayBhbmQgdGhlbiBydW5zIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1idWlsZCc+PGZpbGVuYW1lPmRvX2J1aWxkPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRhc2ssIHdoaWNoIGlzIHRoZSBkZWZhdWx0IHRhc2sgaWYgbm8gdGFzayBpcyBnaXZlbiwgYW5kIHRoZQorICAgICAgICAgICAgICAgIHRhc2tzIG9uIHdoaWNoIGl0IGRlcGVuZHMuCisgICAgICAgICAgICAgICAgWW91IGNvdWxkIHJlcGxhY2UgdGhlIGZpbmFsIHR3byBjb21tYW5kcyBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZQorICAgICAgICAgICAgICAgIHdpdGggdGhlIGZvbGxvd2luZyBzaW5nbGUgY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wIC1DIGNvbXBpbGUKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSW50ZXJuYWxseSwgdGhlIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tQzwvZmlsZW5hbWU+IG9wdGlvbnMgd29yayBieSB0YWludGluZyAobW9kaWZ5aW5nKSB0aGUKKyAgICAgICAgICAgICAgICBpbnB1dCBjaGVja3N1bSBvZiB0aGUgc3BlY2lmaWVkIHRhc2suCisgICAgICAgICAgICAgICAgVGhpcyB0YWludGluZyBpbmRpcmVjdGx5IGNhdXNlcyB0aGUgdGFzayBhbmQgaXRzCisgICAgICAgICAgICAgICAgZGVwZW5kZW50IHRhc2tzIHRvIGJlIHJlcnVuIHRocm91Z2ggdGhlIG5vcm1hbCB0YXNrIGRlcGVuZGVuY3kKKyAgICAgICAgICAgICAgICBtZWNoYW5pc21zLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGV4cGxpY2l0bHkga2VlcHMgdHJhY2sgb2Ygd2hpY2ggdGFza3MgaGF2ZSBiZWVuCisgICAgICAgICAgICAgICAgICAgIHRhaW50ZWQgaW4gdGhpcyBmYXNoaW9uLCBhbmQgd2lsbCBwcmludCB3YXJuaW5ncyBzdWNoIGFzIHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZm9yIGJ1aWxkcyBpbnZvbHZpbmcgc3VjaCB0YXNrczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBXQVJOSU5HOiAvaG9tZS91bGYvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4xLmJiLmRvX2NvbXBpbGUgaXMgdGFpbnRlZCBmcm9tIGEgZm9yY2VkIHJ1bgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoZSB3YXJuaW5nIGlzIHRvIGxldCB5b3Uga25vdyB0aGF0IHRoZSB3b3JrCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgYnVpbGQgb3V0cHV0IG1pZ2h0IG5vdCBiZSBpbiB0aGUgY2xlYW4gc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgdGhleSB3b3VsZCBiZSBpbiBmb3IgYSAibm9ybWFsIiBidWlsZCwgZGVwZW5kaW5nIG9uIHdoYXQKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9ucyB5b3UgdG9vay4KKyAgICAgICAgICAgICAgICAgICAgVG8gZ2V0IHJpZCBvZiBzdWNoIHdhcm5pbmdzLCB5b3UgY2FuIHJlbW92ZSB0aGUgd29yaworICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYW5kIHJlYnVpbGQgdGhlIHJlY2lwZSwgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBjbGVhbgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHZpZXcgYSBsaXN0IG9mIHRhc2tzIGluIGEgZ2l2ZW4gcGFja2FnZSBieSBydW5uaW5nIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19saXN0dGFza3M8L2ZpbGVuYW1lPiB0YXNrIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBsaXN0dGFza3MKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIHJlc3VsdHMgYXBwZWFyIGFzIG91dHB1dCB0byB0aGUgY29uc29sZSBhbmQgYXJlIGFsc28gaW4gdGhlCisgICAgICAgICAgICAgICAgZmlsZSA8ZmlsZW5hbWU+JHtXT1JLRElSfS90ZW1wL2xvZy5kb19saXN0dGFza3M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtZGVidWdnaW5nLWJpdGJha2UnPgorICAgICAgICAgICAgPHRpdGxlPkdlbmVyYWwgQml0QmFrZSBQcm9ibGVtczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGRlYnVnIG91dHB1dCBmcm9tIEJpdEJha2UgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1EPC9maWxlbmFtZT4gb3B0aW9uLgorICAgICAgICAgICAgICAgIFRoZSBkZWJ1ZyBvdXRwdXQgZ2l2ZXMgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IEJpdEJha2UKKyAgICAgICAgICAgICAgICBpcyBkb2luZyBhbmQgdGhlIHJlYXNvbiBiZWhpbmQgaXQuCisgICAgICAgICAgICAgICAgRWFjaCA8ZmlsZW5hbWU+LUQ8L2ZpbGVuYW1lPiBvcHRpb24geW91IHVzZSBpbmNyZWFzZXMgdGhlCisgICAgICAgICAgICAgICAgbG9nZ2luZyBsZXZlbC4KKyAgICAgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdXNhZ2UgaXMgPGZpbGVuYW1lPi1EREQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBmcm9tCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLURERCAtdjwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT50YXJnZXRuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICBjYW4gcmV2ZWFsIHdoeSBCaXRCYWtlIGNob3NlIGEgY2VydGFpbiB2ZXJzaW9uIG9mIGEgcGFja2FnZSBvcgorICAgICAgICAgICAgICAgIHdoeSBCaXRCYWtlIHBpY2tlZCBhIGNlcnRhaW4gcHJvdmlkZXIuCisgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGNvdWxkIGFsc28gaGVscCB5b3UgaW4gYSBzaXR1YXRpb24gd2hlcmUgeW91IHRoaW5rCisgICAgICAgICAgICAgICAgQml0QmFrZSBkaWQgc29tZXRoaW5nIHVuZXhwZWN0ZWQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZGV2LWRlYnVnZ2luZy1idWlsZGZpbGUnPgorICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIHdpdGggTm8gRGVwZW5kZW5jaWVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gYnVpbGQgYSBzcGVjaWZpYyByZWNpcGUgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlKSwKKyAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZm9ybToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtYiA8cmVwbGFjZWFibGU+c29tZXBhdGg8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+c29tZXJlY2lwZTwvcmVwbGFjZWFibGU+LmJiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBmb3JtIGRvZXMgbm90IGNoZWNrIGZvciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3Ugc2hvdWxkIHVzZSBpdCBvbmx5IHdoZW4geW91IGtub3cgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIG1ldC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHNwZWNpZnkgZnJhZ21lbnRzIG9mIHRoZSBmaWxlbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBCaXRCYWtlIGNoZWNrcyBmb3IgYSB1bmlxdWUgbWF0Y2guCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3JlY2lwZS1sb2dnaW5nLW1lY2hhbmlzbXMnPgorICAgICAgICAgICAgPHRpdGxlPlJlY2lwZSBMb2dnaW5nIE1lY2hhbmlzbXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBzZXZlcmFsIGxvZ2dpbmcgZnVuY3Rpb25zIGZvcgorICAgICAgICAgICAgICAgIHByb2R1Y2luZyBkZWJ1Z2dpbmcgb3V0cHV0IGFuZCByZXBvcnRpbmcgZXJyb3JzIGFuZCB3YXJuaW5ncy4KKyAgICAgICAgICAgICAgICBGb3IgUHl0aG9uIGZ1bmN0aW9ucywgdGhlIGZvbGxvd2luZyBsb2dnaW5nIGZ1bmN0aW9ucyBleGlzdC4KKyAgICAgICAgICAgICAgICBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGxvZyB0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1R9L2xvZy5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrPC9yZXBsYWNlYWJsZT4sCisgICAgICAgICAgICAgICAgYW5kIGNhbiBhbHNvIGxvZyB0byBzdGFuZGFyZCBvdXRwdXQgKHN0ZG91dCkgd2l0aCB0aGUgcmlnaHQKKyAgICAgICAgICAgICAgICBzZXR0aW5nczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIucGxhaW4oPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+KTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVzIDxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPiBhcyBpcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZyB3aGlsZSBhbHNvIGxvZ2dpbmcgdG8gc3Rkb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5ub3RlKDwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPik8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlcyAiTk9URTogPHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+IiB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsc28gbG9ncyB0byBzdGRvdXQgaWYgQml0QmFrZSBpcyBjYWxsZWQgd2l0aCAiLXYiLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5kZWJ1Zyg8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5sZXZlbDwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPiwmbmJzcDs8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZXMgIkRFQlVHOiA8cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT4iIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nLgorICAgICAgICAgICAgICAgICAgICAgICAgQWxzbyBsb2dzIHRvIHN0ZG91dCBpZiB0aGUgbG9nIGxldmVsIGlzIGdyZWF0ZXIgdGhhbiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgZXF1YWwgdG8gPHJlcGxhY2VhYmxlPmxldmVsPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN1c2FnZS1hbmQtc3ludGF4Jz4tRDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi53YXJuKDwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPik8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlcyAiV0FSTklORzogPHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+IiB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZyB3aGlsZSBhbHNvIGxvZ2dpbmcgdG8gc3Rkb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5lcnJvcig8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZXMgIkVSUk9SOiA8cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT4iIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nIHdoaWxlIGFsc28gbG9nZ2luZyB0byBzdGFuZGFyZCBvdXQgKHN0ZG91dCkuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2F1c2UgdGhlIHRhc2sgdG8gZmFpbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZmF0YWwoPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+KTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBsb2dnaW5nIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5lcnJvcig8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBhbHNvIGNhdXNlcyB0aGUgY2FsbGluZyB0YXNrIHRvIGZhaWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZmF0YWwoKTwvZmlsZW5hbWU+IHJhaXNlcyBhbiBleGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggbWVhbnMgeW91IGRvIG5vdCBuZWVkIHRvIHB1dCBhICJyZXR1cm4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50IGFmdGVyIHRoZSBmdW5jdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgc2FtZSBsb2dnaW5nIGZ1bmN0aW9ucyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gc2hlbGwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbnMsIHVuZGVyIHRoZSBuYW1lcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYnBsYWluPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iYm5vdGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJkZWJ1ZzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YmJ3YXJuPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiZXJyb3I8L2ZpbGVuYW1lPiwgYW5kIDxmaWxlbmFtZT5iYmZhdGFsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtbG9nZ2luZyc+PGZpbGVuYW1lPmxvZ2dpbmc8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgY2xhc3MgaW1wbGVtZW50cyB0aGVzZSBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgU2VlIHRoYXQgY2xhc3MgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3NlczwvZmlsZW5hbWU+IGZvbGRlciBvZiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdsb2dnaW5nLXdpdGgtcHl0aG9uJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+TG9nZ2luZyBXaXRoIFB5dGhvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBjcmVhdGluZyByZWNpcGVzIHVzaW5nIFB5dGhvbiBhbmQgaW5zZXJ0aW5nIGNvZGUgdGhhdAorICAgICAgICAgICAgICAgICAgICBoYW5kbGVzIGJ1aWxkIGxvZ3MsIGtlZXAgaW4gbWluZCB0aGUgZ29hbCBpcyB0byBoYXZlCisgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aXZlIGxvZ3Mgd2hpbGUga2VlcGluZyB0aGUgY29uc29sZSBhcyAic2lsZW50IiBhcworICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZS4KKyAgICAgICAgICAgICAgICAgICAgQWxzbywgaWYgeW91IHdhbnQgc3RhdHVzIG1lc3NhZ2VzIGluIHRoZSBsb2csIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgImRlYnVnIiBsb2dsZXZlbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgd3JpdHRlbiBpbiBQeXRob24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb2RlIGhhbmRsZXMgbG9nZ2luZyBmb3IgYSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiB0YXNrcyBuZWVkZWQgdG8gYmUgcnVuLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtbGlzdHRhc2tzJz48ZmlsZW5hbWU+ZG9fbGlzdHRhc2tzPC9maWxlbmFtZT48L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBweXRob24gZG9fbGlzdHRhc2tzKCkgeworICAgICAgICAgYmIuZGVidWcoMiwgIlN0YXJ0aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIHRhc2sgbGlzdCIpCisgICAgICAgICBpZiBub3Rld29ydGh5X2NvbmRpdGlvbjoKKyAgICAgICAgICAgICBiYi5ub3RlKCJUaGVyZSBhcmUgNDcgdGFza3MgdG8gcnVuIikKKyAgICAgICAgIGJiLmRlYnVnKDIsICJHb3QgdG8gcG9pbnQgeHl6IikKKyAgICAgICAgIGlmIHdhcm5pbmdfdHJpZ2dlcjoKKyAgICAgICAgICAgICBiYi53YXJuKCJEZXRlY3RlZCB3YXJuaW5nX3RyaWdnZXIsIHRoaXMgbWlnaHQgYmUgYSBwcm9ibGVtIGxhdGVyLiIpCisgICAgICAgICBpZiByZWNvdmVyYWJsZV9lcnJvcjoKKyAgICAgICAgICAgICBiYi5lcnJvcigiSGl0IHJlY292ZXJhYmxlX2Vycm9yLCB5b3UgcmVhbGx5IG5lZWQgdG8gZml4IHRoaXMhIikKKyAgICAgICAgIGlmIGZhdGFsX2Vycm9yOgorICAgICAgICAgICAgIGJiLmZhdGFsKCJmYXRhbF9lcnJvciBkZXRlY3RlZCwgdW5hYmxlIHRvIHByaW50IHRoZSB0YXNrIGxpc3QiKQorICAgICAgICAgYmIucGxhaW4oIlRoZSB0YXNrcyBwcmVzZW50IGFyZSBhYmMiKQorICAgICAgICAgYmIuZGVidWcoMiwgIkZpbmlzaGVkIGZpZ3VyaW5nIG91dCB0aGUgdGFza2xpc3QiKQorICAgICB9CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdsb2dnaW5nLXdpdGgtYmFzaCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkxvZ2dpbmcgV2l0aCBCYXNoPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGNyZWF0aW5nIHJlY2lwZXMgdXNpbmcgQmFzaCBhbmQgaW5zZXJ0aW5nIGNvZGUgdGhhdAorICAgICAgICAgICAgICAgICAgICBoYW5kbGVzIGJ1aWxkIGxvZ3MsIHlvdSBoYXZlIHRoZSBzYW1lIGdvYWxzIC0gaW5mb3JtYXRpdmUKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBtaW5pbWFsIGNvbnNvbGUgb3V0cHV0LgorICAgICAgICAgICAgICAgICAgICBUaGUgc3ludGF4IHlvdSB1c2UgZm9yIHJlY2lwZXMgd3JpdHRlbiBpbiBCYXNoIGlzIHNpbWlsYXIKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhhdCBvZiByZWNpcGVzIHdyaXR0ZW4gaW4gUHl0aG9uIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgd3JpdHRlbiBpbiBCYXNoLgorICAgICAgICAgICAgICAgICAgICBUaGUgY29kZSBsb2dzIHRoZSBwcm9ncmVzcyBvZiB0aGUgPGZpbGVuYW1lPmRvX215X2Z1bmN0aW9uPC9maWxlbmFtZT4gZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9fbXlfZnVuY3Rpb24oKSB7CisgICAgICAgICBiYmRlYnVnIDIgIlJ1bm5pbmcgZG9fbXlfZnVuY3Rpb24iCisgICAgICAgICBpZiBbIGV4Y2VwdGlvbmFsX2NvbmRpdGlvbiBdOyB0aGVuCisgICAgICAgICAgICAgYmJub3RlICJIaXQgZXhjZXB0aW9uYWxfY29uZGl0aW9uIgorICAgICAgICAgZmkKKyAgICAgICAgIGJiZGVidWcgMiAgIkdvdCB0byBwb2ludCB4eXoiCisgICAgICAgICBpZiBbIHdhcm5pbmdfdHJpZ2dlciBdOyB0aGVuCisgICAgICAgICAgICAgYmJ3YXJuICJEZXRlY3RlZCB3YXJuaW5nX3RyaWdnZXIsIHRoaXMgbWlnaHQgY2F1c2UgYSBwcm9ibGVtIGxhdGVyLiIKKyAgICAgICAgIGZpCisgICAgICAgICBpZiBbIHJlY292ZXJhYmxlX2Vycm9yIF07IHRoZW4KKyAgICAgICAgICAgICBiYmVycm9yICJIaXQgcmVjb3ZlcmFibGVfZXJyb3IsIGNvcnJlY3RpbmciCisgICAgICAgICBmaQorICAgICAgICAgaWYgWyBmYXRhbF9lcnJvciBdOyB0aGVuCisgICAgICAgICAgICAgYmJmYXRhbCAiZmF0YWxfZXJyb3IgZGV0ZWN0ZWQiCisgICAgICAgICBmaQorICAgICAgICAgYmJkZWJ1ZyAyICJDb21wbGV0ZWQgZG9fbXlfZnVuY3Rpb24iCisgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZWJ1Z2dpbmctcGFyYWxsZWwtbWFrZS1yYWNlcyc+CisgICAgICAgICAgICA8dGl0bGU+RGVidWdnaW5nIFBhcmFsbGVsIE1ha2UgUmFjZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIHBhcmFsbGVsIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gcmFjZSBvY2N1cnMgd2hlbiB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICBjb25zaXN0cyBvZiBzZXZlcmFsIHBhcnRzIHRoYXQgYXJlIHJ1biBzaW11bHRhbmVvdXNseSBhbmQKKyAgICAgICAgICAgICAgICBhIHNpdHVhdGlvbiBvY2N1cnMgd2hlbiB0aGUgb3V0cHV0IG9yIHJlc3VsdCBvZiBvbmUKKyAgICAgICAgICAgICAgICBwYXJ0IGlzIG5vdCByZWFkeSBmb3IgdXNlIHdpdGggYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICB0aGF0IGRlcGVuZHMgb24gdGhhdCBvdXRwdXQuCisgICAgICAgICAgICAgICAgUGFyYWxsZWwgbWFrZSByYWNlcyBhcmUgYW5ub3lpbmcgYW5kIGNhbiBzb21ldGltZXMgYmUgZGlmZmljdWx0CisgICAgICAgICAgICAgICAgdG8gcmVwcm9kdWNlIGFuZCBmaXguCisgICAgICAgICAgICAgICAgSG93ZXZlciwgc29tZSBzaW1wbGUgdGlwcyBhbmQgdHJpY2tzIGV4aXN0IHRoYXQgY2FuIGhlbHAKKyAgICAgICAgICAgICAgICB5b3UgZGVidWcgYW5kIGZpeCB0aGVtLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHJlYWwtd29ybGQgZXhhbXBsZSBvZiBhbiBlcnJvcgorICAgICAgICAgICAgICAgIGVuY291bnRlcmVkIG9uIHRoZSBZb2N0byBQcm9qZWN0IGF1dG9idWlsZGVyIGFuZCB0aGUgcHJvY2VzcworICAgICAgICAgICAgICAgIHVzZWQgdG8gZml4IGl0LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgY2Fubm90IHByb3Blcmx5IGZpeCBhIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gcmFjZQorICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24sIHlvdSBjYW4gd29yayBhcm91bmQgaXQgYnkgY2xlYXJpbmcgZWl0aGVyIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFSQUxMRUxfTUFLRSc+PGZpbGVuYW1lPlBBUkFMTEVMX01BS0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQVJBTExFTF9NQUtFSU5TVCc+PGZpbGVuYW1lPlBBUkFMTEVMX01BS0VJTlNUPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndGhlLWZhaWx1cmUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5UaGUgRmFpbHVyZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgYXNzdW1lIHRoYXQgeW91IGFyZSBidWlsZGluZyBhbiBpbWFnZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIGRlcGVuZHMgb24gdGhlICJuZWFyZCIgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgQW5kLCBkdXJpbmcgdGhlIGJ1aWxkLCBCaXRCYWtlIHJ1bnMgaW50byBwcm9ibGVtcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyB0aGUgZm9sbG93aW5nIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgbG9nIGZpbGUgaGFzIGxvbmdlciBsaW5lcyBhcnRpZmljaWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyb2tlbiB0byBtYWtlIHRoZSBsaXN0aW5nIGVhc2llciB0byByZWFkLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBleGFtaW5lIHRoZSBvdXRwdXQgb3IgdGhlIGxvZyBmaWxlLCB5b3Ugc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICBmYWlsdXJlIGR1cmluZyA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIHwgREVCVUc6IFNJVEUgZmlsZXMgWydlbmRpYW4tbGl0dGxlJywgJ2JpdC0zMicsICdpeDg2LWNvbW1vbicsICdjb21tb24tbGludXgnLCAnY29tbW9uLWdsaWJjJywgJ2k1ODYtbGludXgnLCAnY29tbW9uJ10KICAgICAgfCBERUJVRzogRXhlY3V0aW5nIHNoZWxsIGZ1bmN0aW9uIGRvX2NvbXBpbGUKICAgICAgfCBOT1RFOiBtYWtlIC1qIDE2CkBAIC0xMDE5NCw2MSArMTMxNzAsNjIgQEAKICAgICAgfCBtYWtlWzFdOiAqKiogV2FpdGluZyBmb3IgdW5maW5pc2hlZCBqb2JzLi4uLgogICAgICB8IG1ha2U6ICoqKiBbYWxsXSBFcnJvciAyCiAgICAgIHwgRVJST1I6IG9lX3J1bm1ha2UgZmFpbGVkCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J3JlcHJvZHVjaW5nLXRoZS1lcnJvcic+Ci0gICAgICAgICAgICA8dGl0bGU+UmVwcm9kdWNpbmcgdGhlIEVycm9yPC90aXRsZT4KKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdyZXByb2R1Y2luZy10aGUtZXJyb3InPgorICAgICAgICAgICAgICAgIDx0aXRsZT5SZXByb2R1Y2luZyB0aGUgRXJyb3I8L3RpdGxlPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCZWNhdXNlIHJhY2UgY29uZGl0aW9ucyBhcmUgaW50ZXJtaXR0ZW50LCB0aGV5IGRvIG5vdAotICAgICAgICAgICAgICAgIG1hbmlmZXN0IHRoZW1zZWx2ZXMgZXZlcnkgdGltZSB5b3UgZG8gdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgIEluIGZhY3QsIG1vc3QgdGltZXMgdGhlIGJ1aWxkIHdpbGwgY29tcGxldGUgd2l0aG91dCBwcm9ibGVtcwotICAgICAgICAgICAgICAgIGV2ZW4gdGhvdWdoIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gZXhpc3RzLgotICAgICAgICAgICAgICAgIFRodXMsIG9uY2UgdGhlIGVycm9yIHN1cmZhY2VzLCB5b3UgbmVlZCBhIHdheSB0byByZXByb2R1Y2UgaXQuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgcmFjZSBjb25kaXRpb25zIGFyZSBpbnRlcm1pdHRlbnQsIHRoZXkgZG8gbm90CisgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0IHRoZW1zZWx2ZXMgZXZlcnkgdGltZSB5b3UgZG8gdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBJbiBmYWN0LCBtb3N0IHRpbWVzIHRoZSBidWlsZCB3aWxsIGNvbXBsZXRlIHdpdGhvdXQgcHJvYmxlbXMKKyAgICAgICAgICAgICAgICAgICAgZXZlbiB0aG91Z2ggdGhlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIG9uY2UgdGhlIGVycm9yIHN1cmZhY2VzLCB5b3UgbmVlZCBhIHdheSB0byByZXByb2R1Y2UKKyAgICAgICAgICAgICAgICAgICAgaXQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIGNvbXBpbGluZyB0aGUgIm5lYXJkIiBwYWNrYWdlIGlzIGNhdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgcHJvYmxlbS4KLSAgICAgICAgICAgICAgICBTbyB0aGUgZmlyc3QgdGhpbmcgdG8gZG8gaXMgYnVpbGQgIm5lYXJkIiBsb2NhbGx5LgotICAgICAgICAgICAgICAgIEJlZm9yZSB5b3Ugc3RhcnQgdGhlIGJ1aWxkLCBzZXQgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBUkFMTEVMX01BS0UnPjxmaWxlbmFtZT5QQVJBTExFTF9NQUtFPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRvCi0gICAgICAgICAgICAgICAgYSBoaWdoIG51bWJlciAoZS5nLiAiLWogMjAiKS4KLSAgICAgICAgICAgICAgICBVc2luZyBhIGhpZ2ggdmFsdWUgZm9yIDxmaWxlbmFtZT5QQVJBTExFTF9NQUtFPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBpbmNyZWFzZXMgdGhlIGNoYW5jZXMgb2YgdGhlIHJhY2UgY29uZGl0aW9uIHNob3dpbmcgdXA6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIGNvbXBpbGluZyB0aGUgIm5lYXJkIiBwYWNrYWdlIGlzIGNhdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIHByb2JsZW0uCisgICAgICAgICAgICAgICAgICAgIFNvIHRoZSBmaXJzdCB0aGluZyB0byBkbyBpcyBidWlsZCAibmVhcmQiIGxvY2FsbHkuCisgICAgICAgICAgICAgICAgICAgIEJlZm9yZSB5b3Ugc3RhcnQgdGhlIGJ1aWxkLCBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQVJBTExFTF9NQUtFJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgdG8KKyAgICAgICAgICAgICAgICAgICAgYSBoaWdoIG51bWJlciAoZS5nLiAiLWogMjAiKS4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgYSBoaWdoIHZhbHVlIGZvciA8ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluY3JlYXNlcyB0aGUgY2hhbmNlcyBvZiB0aGUgcmFjZSBjb25kaXRpb24gc2hvd2luZyB1cDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UgbmVhcmQKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE9uY2UgdGhlIGxvY2FsIGJ1aWxkIGZvciAibmVhcmQiIGNvbXBsZXRlcywgc3RhcnQgYQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+IGJ1aWxkOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgbG9jYWwgYnVpbGQgZm9yICJuZWFyZCIgY29tcGxldGVzLCBzdGFydCBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+IGJ1aWxkOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSBuZWFyZCAtYyBkZXZzaGVsbAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBhCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGxhdGRldi1hcHBkZXYtZGV2c2hlbGwnPlVzaW5nIGEgRGV2ZWxvcG1lbnQgU2hlbGw8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGxhdGRldi1hcHBkZXYtZGV2c2hlbGwnPlVzaW5nIGEgRGV2ZWxvcG1lbnQgU2hlbGw8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSW4gdGhlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LCBkbyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LCBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgbWFrZSBjbGVhbgogICAgICAkIG1ha2UgdG9vbHMvc25lcC1zZW5kLm8KLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+IGNvbW1hbmRzIGNhdXNlIHRoZSBmYWlsdXJlCi0gICAgICAgICAgICAgICAgdG8gY2xlYXJseSBiZSB2aXNpYmxlLgotICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgYSBtaXNzaW5nIGRlcGVuZGVuY3kgZXhpc3RzIGZvciB0aGUgIm5lYXJkIgotICAgICAgICAgICAgICAgIE1ha2VmaWxlIHRhcmdldC4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIHNvbWUgYWJicmV2aWF0ZWQsIHNhbXBsZSBvdXRwdXQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICBtaXNzaW5nIGRlcGVuZGVuY3kgY2xlYXJseSB2aXNpYmxlIGF0IHRoZSBlbmQ6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBjb21tYW5kcyBjYXVzZSB0aGUgZmFpbHVyZQorICAgICAgICAgICAgICAgICAgICB0byBjbGVhcmx5IGJlIHZpc2libGUuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgYSBtaXNzaW5nIGRlcGVuZGVuY3kgZXhpc3RzIGZvciB0aGUgIm5lYXJkIgorICAgICAgICAgICAgICAgICAgICBNYWtlZmlsZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgc29tZSBhYmJyZXZpYXRlZCwgc2FtcGxlIG91dHB1dCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICBtaXNzaW5nIGRlcGVuZGVuY3kgY2xlYXJseSB2aXNpYmxlIGF0IHRoZSBlbmQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgaTU4Ni1wb2t5LWxpbnV4LWdjYyAgLW0zMiAtbWFyY2g9aTU4NiAtLXN5c3Jvb3Q9L2hvbWUvc2NvdHQtbGVub3ZvLy4uLi4uLgogICAgICAgICAuCiAgICAgICAgIC4KQEAgLTEwMjYxLDIzOCArMTMyMzgsMTY4NyBAQAogICAgICBjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgogICAgICBtYWtlOiAqKiogW3Rvb2xzL3NuZXAtc2VuZC5vXSBFcnJvciAxCiAgICAgICQKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1wYXRjaC1mb3ItdGhlLWZpeCc+Ci0gICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgYSBQYXRjaCBmb3IgdGhlIEZpeDwvdGl0bGU+CisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1wYXRjaC1mb3ItdGhlLWZpeCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIGEgUGF0Y2ggZm9yIHRoZSBGaXg8L3RpdGxlPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZXJlIGlzIGEgbWlzc2luZyBkZXBlbmRlbmN5IGZvciB0aGUgTWFrZWZpbGUKLSAgICAgICAgICAgICAgICB0YXJnZXQsIHlvdSBuZWVkIHRvIHBhdGNoIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZS5hbTwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGdlbmVyYXRlZAotICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPk1ha2VmaWxlLmluPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgUXVpbHQgdG8gY3JlYXRlIHRoZSBwYXRjaDoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlcmUgaXMgYSBtaXNzaW5nIGRlcGVuZGVuY3kgZm9yIHRoZSBNYWtlZmlsZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQsIHlvdSBuZWVkIHRvIHBhdGNoIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGUuYW08L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBnZW5lcmF0ZWQKKyAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+TWFrZWZpbGUuaW48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgUXVpbHQgdG8gY3JlYXRlIHRoZSBwYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHF1aWx0IG5ldyBwYXJhbGxlbG1ha2UucGF0Y2gKICAgICAgUGF0Y2ggcGF0Y2hlcy9wYXJhbGxlbG1ha2UucGF0Y2ggaXMgbm93IG9uIHRvcAogICAgICAkIHF1aWx0IGFkZCBNYWtlZmlsZS5hbQogICAgICBGaWxlIE1ha2VmaWxlLmFtIGFkZGVkIHRvIHBhdGNoIHBhdGNoZXMvcGFyYWxsZWxtYWtlLnBhdGNoCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIFF1aWx0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWEtcXVpbHQtd29ya2Zsb3cnPlVzaW5nIFF1aWx0IGluIFlvdXIgV29ya2Zsb3c8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgUXVpbHQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWEtcXVpbHQtd29ya2Zsb3cnPlVzaW5nIFF1aWx0IGluIFlvdXIgV29ya2Zsb3c8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCB5b3UgbmVlZCB0byBtYWtlIHRoZSBlZGl0cyB0bwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZS5hbTwvZmlsZW5hbWU+IHRvIGFkZCB0aGUgbWlzc2luZwotICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kuCi0gICAgICAgICAgICAgICAgRm9yIG91ciBleGFtcGxlLCB5b3UgaGF2ZSB0byBhZGQgdGhlIGZvbGxvd2luZyBsaW5lCi0gICAgICAgICAgICAgICAgdG8gdGhlIGZpbGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50IHlvdSBuZWVkIHRvIG1ha2UgdGhlIGVkaXRzIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZS5hbTwvZmlsZW5hbWU+IHRvIGFkZCB0aGUgbWlzc2luZworICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5LgorICAgICAgICAgICAgICAgICAgICBGb3Igb3VyIGV4YW1wbGUsIHlvdSBoYXZlIHRvIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgdG9vbHMvc25lcC1zZW5kLiQoT0JKRVhUKTogaW5jbHVkZS9uZWFyL2RidXMuaAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBlZGl0ZWQgdGhlIGZpbGUsIHVzZSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVmcmVzaDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBwYXRjaDoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgZWRpdGVkIHRoZSBmaWxlLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWZyZXNoPC9maWxlbmFtZT4gY29tbWFuZCB0byBjcmVhdGUgdGhlIHBhdGNoOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgcXVpbHQgcmVmcmVzaAogICAgICBSZWZyZXNoZWQgcGF0Y2ggcGF0Y2hlcy9wYXJhbGxlbG1ha2UucGF0Y2gKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgT25jZSB0aGUgcGF0Y2ggZmlsZSBleGlzdHMsIHlvdSBuZWVkIHRvIGFkZCBpdCBiYWNrIHRvIHRoZQotICAgICAgICAgICAgICAgIG9yaWdpbmF0aW5nIHJlY2lwZSBmb2xkZXIuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGFzc3VtaW5nIGEgdG9wLWxldmVsCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgcGF0Y2ggZmlsZSBleGlzdHMsIHlvdSBuZWVkIHRvIGFkZCBpdCBiYWNrIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBvcmlnaW5hdGluZyByZWNpcGUgZm9sZGVyLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgYXNzdW1pbmcgYSB0b3AtbGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG5hbWVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBjcCBwYXRjaGVzL3BhcmFsbGVsbWFrZS5wYXRjaCBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmVhcmQvbmVhcmQKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVGhlIGZpbmFsIHRoaW5nIHlvdSBuZWVkIHRvIGRvIHRvIGltcGxlbWVudCB0aGUgZml4IGluIHRoZQotICAgICAgICAgICAgICAgIGJ1aWxkIGlzIHRvIHVwZGF0ZSB0aGUgIm5lYXJkIiByZWNpcGUgKGkuZS4KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmVhcmQtMC4xNC5iYjwvZmlsZW5hbWU+KSBzbyB0aGF0IHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgaW5jbHVkZXMgdGhlIHBhdGNoIGZpbGUuCi0gICAgICAgICAgICAgICAgVGhlIHJlY2lwZSBmaWxlIGlzIGluIHRoZSBmb2xkZXIgYWJvdmUgdGhlIHBhdGNoLgotICAgICAgICAgICAgICAgIEhlcmUgaXMgd2hhdCB0aGUgZWRpdGVkIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgd291bGQgbG9vayBsaWtlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgdGhpbmcgeW91IG5lZWQgdG8gZG8gdG8gaW1wbGVtZW50IHRoZSBmaXggaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGlzIHRvIHVwZGF0ZSB0aGUgIm5lYXJkIiByZWNpcGUgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5lYXJkLTAuMTQuYmI8L2ZpbGVuYW1lPikgc28gdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgaW5jbHVkZXMgdGhlIHBhdGNoIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgZmlsZSBpcyBpbiB0aGUgZm9sZGVyIGFib3ZlIHRoZSBwYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB3aGF0IHRoZSBlZGl0ZWQgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgd291bGQgbG9vayBsaWtlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9uZXR3b3JrL25mYy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgICAgICBmaWxlOi8vbmVhcmQuaW4gXAogICAgICAgICAgICAgICAgIGZpbGU6Ly9uZWFyZC5zZXJ2aWNlLmluIFwKICAgICAgICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWxtYWtlLnBhdGNoIFwKICAgICAgICAgICAgICAgICIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFdpdGggdGhlIHBhdGNoIGNvbXBsZXRlIGFuZCBtb3ZlZCB0byB0aGUgY29ycmVjdCBmb2xkZXIgYW5kCi0gICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50IHVwZGF0ZWQsIHlvdSBjYW4KLSAgICAgICAgICAgICAgICBleGl0IHRoZSA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdpdGggdGhlIHBhdGNoIGNvbXBsZXRlIGFuZCBtb3ZlZCB0byB0aGUgY29ycmVjdCBmb2xkZXIgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCB1cGRhdGVkLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIGV4aXQgdGhlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZXhpdAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSd0ZXN0aW5nLXRoZS1idWlsZCc+Ci0gICAgICAgICAgICA8dGl0bGU+VGVzdGluZyB0aGUgQnVpbGQ8L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3Rlc3RpbmctdGhlLWJ1aWxkJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VGVzdGluZyB0aGUgQnVpbGQ8L3RpdGxlPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaXRoIGV2ZXJ5dGhpbmcgaW4gcGxhY2UsIHlvdSBjYW4gZ2V0IGJhY2sgdG8gdHJ5aW5nIHRoZQotICAgICAgICAgICAgICAgIGJ1aWxkIGFnYWluIGxvY2FsbHk6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaXRoIGV2ZXJ5dGhpbmcgaW4gcGxhY2UsIHlvdSBjYW4gZ2V0IGJhY2sgdG8gdHJ5aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBhZ2FpbiBsb2NhbGx5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSBuZWFyZAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBUaGlzIGJ1aWxkIHNob3VsZCBzdWNjZWVkLgotICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgYnVpbGQgc2hvdWxkIHN1Y2NlZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBOb3cgeW91IGNhbiBvcGVuIHVwIGEgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4gYWdhaW4KLSAgICAgICAgICAgICAgICBhbmQgcmVwZWF0IHRoZSBjbGVhbiBhbmQgbWFrZSBvcGVyYXRpb25zIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBOb3cgeW91IGNhbiBvcGVuIHVwIGEgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4gYWdhaW4KKyAgICAgICAgICAgICAgICAgICAgYW5kIHJlcGVhdCB0aGUgY2xlYW4gYW5kIG1ha2Ugb3BlcmF0aW9ucyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSBuZWFyZCAtYyBkZXZzaGVsbAogICAgICAkIG1ha2UgY2xlYW4KICAgICAgJCBtYWtlIHRvb2xzL3NuZXAtc2VuZC5vCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzaG91bGQgd29yayB3aXRob3V0IGlzc3VlLgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzaG91bGQgd29yayB3aXRob3V0IGlzc3VlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyB3aXRoIGFsbCBzb2x2ZWQgcHJvYmxlbXMsIGlmIHRoZXkgb3JpZ2luYXRlZCB1cHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gc3VibWl0IHRoZSBmaXggZm9yIHRoZSByZWNpcGUgaW4gT0UtQ29yZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW0gc28gdGhhdCB0aGUgcHJvYmxlbSBpcyB0YWtlbiBjYXJlIG9mIGF0IGl0cworICAgICAgICAgICAgICAgICAgICBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1ZyI+CisgICAgICAgICAgICA8dGl0bGU+RGVidWdnaW5nIFdpdGggdGhlIEdOVSBQcm9qZWN0IERlYnVnZ2VyIChHREIpIFJlbW90ZWx5PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgR0RCIGFsbG93cyB5b3UgdG8gZXhhbWluZSBydW5uaW5nIHByb2dyYW1zLCB3aGljaCBpbiB0dXJuIGhlbHBzCisgICAgICAgICAgICAgICAgeW91IHRvIHVuZGVyc3RhbmQgYW5kIGZpeCBwcm9ibGVtcy4KKyAgICAgICAgICAgICAgICBJdCBhbHNvIGFsbG93cyB5b3UgdG8gcGVyZm9ybSBwb3N0LW1vcnRlbSBzdHlsZSBhbmFseXNpcyBvZgorICAgICAgICAgICAgICAgIHByb2dyYW0gY3Jhc2hlcy4KKyAgICAgICAgICAgICAgICBHREIgaXMgYXZhaWxhYmxlIGFzIGEgcGFja2FnZSB3aXRoaW4gdGhlIFlvY3RvIFByb2plY3QgYW5kIGlzCisgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIFNESyBpbWFnZXMgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1pbWFnZXMnPkltYWdlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgYSBkZXNjcmlwdGlvbiBvZgorICAgICAgICAgICAgICAgIHRoZXNlIGltYWdlcy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gR0RCIGF0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi8iLz4uCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBiZXN0IHJlc3VsdHMsIGluc3RhbGwgZGVidWcgKDxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGZvciB0aGUgYXBwbGljYXRpb25zIHlvdSBhcmUgZ29pbmcgdG8gZGVidWcuCisgICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIG1ha2VzIGV4dHJhIGRlYnVnIHN5bWJvbHMgYXZhaWxhYmxlIHRoYXQgZ2l2ZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgbW9yZSBtZWFuaW5nZnVsIG91dHB1dC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIHdpdGggYWxsIHNvbHZlZCBwcm9ibGVtcywgaWYgdGhleSBvcmlnaW5hdGVkIHVwc3RyZWFtLCB5b3UKLSAgICAgICAgICAgICAgICBuZWVkIHRvIHN1Ym1pdCB0aGUgZml4IGZvciB0aGUgcmVjaXBlIGluIE9FLUNvcmUgYW5kIHVwc3RyZWFtCi0gICAgICAgICAgICAgICAgc28gdGhhdCB0aGUgcHJvYmxlbSBpcyB0YWtlbiBjYXJlIG9mIGF0IGl0cyBzb3VyY2UuCi0gICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIFNvbWV0aW1lcywgZHVlIHRvIG1lbW9yeSBvciBkaXNrIHNwYWNlIGNvbnN0cmFpbnRzLCBpdCBpcyBub3QKKyAgICAgICAgICAgICAgICBwb3NzaWJsZSB0byB1c2UgR0RCIGRpcmVjdGx5IG9uIHRoZSByZW1vdGUgdGFyZ2V0IHRvIGRlYnVnCisgICAgICAgICAgICAgICAgYXBwbGljYXRpb25zLgorICAgICAgICAgICAgICAgIFRoZXNlIGNvbnN0cmFpbnRzIGFyaXNlIGJlY2F1c2UgR0RCIG5lZWRzIHRvIGxvYWQgdGhlIGRlYnVnZ2luZworICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGFuZCB0aGUgYmluYXJpZXMgb2YgdGhlIHByb2Nlc3MgYmVpbmcgZGVidWdnZWQuCisgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBHREIgbmVlZHMgdG8gcGVyZm9ybSBtYW55IGNvbXB1dGF0aW9ucyB0byBsb2NhdGUKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBzdWNoIGFzIGZ1bmN0aW9uIG5hbWVzLCB2YXJpYWJsZSBuYW1lcyBhbmQgdmFsdWVzLAorICAgICAgICAgICAgICAgIHN0YWNrIHRyYWNlcyBhbmQgc28gZm9ydGggLSBldmVuIGJlZm9yZSBzdGFydGluZyB0aGUgZGVidWdnaW5nCisgICAgICAgICAgICAgICAgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICBUaGVzZSBleHRyYSBjb21wdXRhdGlvbnMgcGxhY2UgbW9yZSBsb2FkIG9uIHRoZSB0YXJnZXQgc3lzdGVtCisgICAgICAgICAgICAgICAgYW5kIGNhbiBhbHRlciB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBoZWxwIGdldCBwYXN0IHRoZSBwcmV2aW91c2x5IG1lbnRpb25lZCBjb25zdHJhaW50cywgeW91IGNhbgorICAgICAgICAgICAgICAgIHVzZSBnZGJzZXJ2ZXIsIHdoaWNoIHJ1bnMgb24gdGhlIHJlbW90ZSB0YXJnZXQgYW5kIGRvZXMgbm90CisgICAgICAgICAgICAgICAgbG9hZCBhbnkgZGVidWdnaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIGRlYnVnZ2VkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgSW5zdGVhZCwgYSBHREIgaW5zdGFuY2UgcHJvY2Vzc2VzIHRoZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdGhhdAorICAgICAgICAgICAgICAgIGlzIHJ1biBvbiBhIHJlbW90ZSBjb21wdXRlciAtIHRoZSBob3N0IEdEQi4KKyAgICAgICAgICAgICAgICBUaGUgaG9zdCBHREIgdGhlbiBzZW5kcyBjb250cm9sIGNvbW1hbmRzIHRvIGdkYnNlcnZlciB0byBtYWtlCisgICAgICAgICAgICAgICAgaXQgc3RvcCBvciBzdGFydCB0aGUgZGVidWdnZWQgcHJvZ3JhbSwgYXMgd2VsbCBhcyByZWFkIG9yIHdyaXRlCisgICAgICAgICAgICAgICAgbWVtb3J5IHJlZ2lvbnMgb2YgdGhhdCBkZWJ1Z2dlZCBwcm9ncmFtLgorICAgICAgICAgICAgICAgIEFsbCB0aGUgZGVidWdnaW5nIGluZm9ybWF0aW9uIGxvYWRlZCBhbmQgcHJvY2Vzc2VkIGFzIHdlbGwKKyAgICAgICAgICAgICAgIGFzIGFsbCB0aGUgaGVhdnkgZGVidWdnaW5nIGlzIGRvbmUgYnkgdGhlIGhvc3QgR0RCLgorICAgICAgICAgICAgICAgIE9mZmxvYWRpbmcgdGhlc2UgcHJvY2Vzc2VzIGdpdmVzIHRoZSBnZGJzZXJ2ZXIgcnVubmluZyBvbiB0aGUKKyAgICAgICAgICAgICAgICB0YXJnZXQgYSBjaGFuY2UgdG8gcmVtYWluIHNtYWxsIGFuZCBmYXN0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSBob3N0IEdEQiBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyB0aGUgZGVidWdnaW5nCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYW5kIGZvciBkb2luZyB0aGUgbmVjZXNzYXJ5IHByb2Nlc3NpbmcgdG8gbWFrZQorICAgICAgICAgICAgICAgIGFjdHVhbCBkZWJ1Z2dpbmcgaGFwcGVuLCB5b3UgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGhvc3QgY2FuCisgICAgICAgICAgICAgICAgYWNjZXNzIHRoZSB1bnN0cmlwcGVkIGJpbmFyaWVzIGNvbXBsZXRlIHdpdGggdGhlaXIgZGVidWdnaW5nCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYW5kIGFsc28gYmUgc3VyZSB0aGUgdGFyZ2V0IGlzIGNvbXBpbGVkIHdpdGggbm8KKyAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25zLgorICAgICAgICAgICAgICAgIFRoZSBob3N0IEdEQiBtdXN0IGFsc28gaGF2ZSBsb2NhbCBhY2Nlc3MgdG8gYWxsIHRoZSBsaWJyYXJpZXMKKyAgICAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlZCBwcm9ncmFtLgorICAgICAgICAgICAgICAgIEJlY2F1c2UgZ2Ric2VydmVyIGRvZXMgbm90IG5lZWQgYW55IGxvY2FsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiwKKyAgICAgICAgICAgICAgICB0aGUgYmluYXJpZXMgb24gdGhlIHJlbW90ZSB0YXJnZXQgY2FuIHJlbWFpbiBzdHJpcHBlZC4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgYmluYXJpZXMgbXVzdCBhbHNvIGJlIGNvbXBpbGVkIHdpdGhvdXQgb3B0aW1pemF0aW9uCisgICAgICAgICAgICAgICAgc28gdGhleSBtYXRjaCB0aGUgaG9zdCdzIGJpbmFyaWVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyByZW1haW4gY29uc2lzdGVudCB3aXRoIEdEQiBkb2N1bWVudGF0aW9uIGFuZCB0ZXJtaW5vbG9neSwKKyAgICAgICAgICAgICAgICB0aGUgYmluYXJ5IGJlaW5nIGRlYnVnZ2VkIG9uIHRoZSByZW1vdGUgdGFyZ2V0IG1hY2hpbmUgaXMKKyAgICAgICAgICAgICAgICByZWZlcnJlZCB0byBhcyB0aGUgImluZmVyaW9yIiBiaW5hcnkuCisgICAgICAgICAgICAgICAgRm9yIGRvY3VtZW50YXRpb24gb24gR0RCIHNlZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL2RvY3VtZW50YXRpb24vIj5HREIgc2l0ZTwvdWxpbms+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0ZXBzIHNob3cgeW91IGhvdyB0byBkZWJ1ZyB1c2luZyB0aGUgR05VIHByb2plY3QKKyAgICAgICAgICAgICAgICBkZWJ1Z2dlci4KKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db25maWd1cmUgeW91ciBidWlsZCBzeXN0ZW0gdG8gY29uc3RydWN0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFuaW9uIGRlYnVnIGZpbGVzeXN0ZW06PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0dFTl9ERUJVR0ZTID0gIjEiCisgICAgIElNQUdFX0ZTVFlQRVNfREVCVUdGUyA9ICJ0YXIuYnoyIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2Ugb3B0aW9ucyBjYXVzZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2VuZXJhdGUgYSBzcGVjaWFsIGNvbXBhbmlvbiBmaWxlc3lzdGVtIGZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggY29udGFpbnMgdGhlIG1hdGNoaW5nIHNvdXJjZSBhbmQgZGVidWcgc3ltYm9scyB0bworICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBkZXBsb3lhYmxlIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGRvZXMgdGhpcyBieSBsb29raW5nIGF0IHdoYXQgaXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkZXBsb3llZCBmaWxlc3lzdGVtLCBhbmQgcHVsbGluZyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPiBwYWNrYWdlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBjb21wYW5pb24gZGVidWcgZmlsZXN5c3RlbSBpcyBub3QgYSBjb21wbGV0ZQorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSwgYnV0IG9ubHkgY29udGFpbnMgdGhlIGRlYnVnIGZyYWdtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZXN5c3RlbSBtdXN0IGJlIGNvbWJpbmVkIHdpdGggdGhlIGZ1bGwgZmlsZXN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRlYnVnZ2luZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFN1YnNlcXVlbnQgc3RlcHMgaW4gdGhpcyBwcm9jZWR1cmUgc2hvdyBob3cgdG8gY29tYmluZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBhcnRpYWwgZmlsZXN5c3RlbSB3aXRoIHRoZSBmdWxsIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbmZpZ3VyZSB0aGUgc3lzdGVtIHRvIGluY2x1ZGUgZ2Ric2VydmVyIGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGZpbGVzeXN0ZW06PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk1ha2UgdGhlIGZvbGxvd2luZyBhZGRpdGlvbiBpbiBlaXRoZXIgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIGluIGFuIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0lOU1RBTExfYXBwZW5kID0g4oCcIGdkYnNlcnZlciIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjaGFuZ2UgbWFrZXMgc3VyZSB0aGUgPGZpbGVuYW1lPmdkYnNlcnZlcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGlzIGluY2x1ZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgZW52aXJvbm1lbnQ6PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gY29uc3RydWN0IHRoZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBjb21wYW5pb24gRGVidWcgRmlsZXN5c3RlbToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgY3Jvc3MgR0RCIGNvbXBvbmVudCBhbmQgbWFrZSBpdCBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkZWJ1Z2dpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgU0RLIHRoYXQgbWF0Y2hlcyB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZGluZyB0aGUgU0RLIGlzIGJlc3QgZm9yIGEgcHJvZHVjdGlvbiBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjYW4gYmUgdXNlZCBsYXRlciBmb3IgZGVidWdnaW5nLCBlc3BlY2lhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgbG9uZyB0ZXJtIG1haW50ZW5hbmNlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWMgcG9wdWxhdGVfc2RrIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGJ1aWxkIHRoZSBtaW5pbWFsCisgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gY29tcG9uZW50cyB0aGF0IG1hdGNoIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBjcmVhdGVzIGEgc21hbGxlciB0aGFuIHR5cGljYWwgU0RLIGFuZCBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhIG1pbmltYWwgc2V0IG9mIGNvbXBvbmVudHMgd2l0aCB3aGljaCB0bworICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc2ltcGxlIHRlc3QgYXBwbGljYXRpb25zLCBhcyB3ZWxsIGFzIHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWV0YS10b29sY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkEgZmluYWwgbWV0aG9kIGlzIHRvIGJ1aWxkIEdkYiBpdHNlbGYgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgc3lzdGVtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgZ2RiLWNyb3NzLTxyZXBsYWNlYWJsZT5hcmNoaXRlY3R1cmU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gcHJvZHVjZXMgYSB0ZW1wb3JhcnkgY29weSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyb3NzLWdkYjwvZmlsZW5hbWU+IHlvdSBjYW4gdXNlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnaW5nIGR1cmluZyBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoaXMgaXMgdGhlIHF1aWNrZXN0IGFwcHJvYWNoLCB0aGUgdHdvIHByZXZpb3VzCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RzIGluIHRoaXMgc3RlcCBhcmUgYmV0dGVyIHdoZW4gY29uc2lkZXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvbmctdGVybSBtYWludGVuYW5jZSBzdHJhdGVnaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIGdkYi1jcm9zczwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHN1Z2dlc3RzIHRoZSBhY3R1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSAoZS5nLiA8ZmlsZW5hbWU+Z2RiLWNyb3NzLWk1ODY8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHN1Z2dlc3Rpb24gaXMgdXN1YWxseSB0aGUgYWN0dWFsIG5hbWUgeW91IHdhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB1c2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCB0aGU8L2VtcGhhc2lzPiZuYnNwOzxmaWxlbmFtZT5kZWJ1Z2ZzPC9maWxlbmFtZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIHNldCB1cCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWJ1Z2ZzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbWtkaXIgZGVidWdmcworICAgICAkIGNkIGRlYnVnZnMKKyAgICAgJCB0YXIgeHZmaiA8cmVwbGFjZWFibGU+YnVpbGQtZGlyPC9yZXBsYWNlYWJsZT4vdG1wLWdsaWJjL2RlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPi5yb290ZnMudGFyLmJ6MgorICAgICAkIHRhciB4dmZqIDxyZXBsYWNlYWJsZT5idWlsZC1kaXI8L3JlcGxhY2VhYmxlPi90bXAtZ2xpYmMvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+LWRiZy5yb290ZnMudGFyLmJ6MgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgR0RCPC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluc3RhbGwgdGhlIFNESyAoaWYgeW91IGJ1aWx0IG9uZSkgYW5kIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSB0aGUgY29ycmVjdCBlbnZpcm9ubWVudCBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNpbmcgdGhlIGVudmlyb25tZW50IGZpbGUgcHV0cyB0aGUgU0RLIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIHVzaW5nIHRoZSBidWlsZCBzeXN0ZW0sIEdkYiBpcworICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJ1aWxkLWRpcjwvcmVwbGFjZWFibGU+L3RtcC9zeXNyb290cy88cmVwbGFjZWFibGU+aG9zdDwvcmVwbGFjZWFibGU+L3Vzci9iaW4vPHJlcGxhY2VhYmxlPmFyY2hpdGVjdHVyZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5hcmNoaXRlY3R1cmU8L3JlcGxhY2VhYmxlPi1nZGIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qm9vdCB0aGUgdGFyZ2V0OjwvZW1waGFzaXM+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHJ1biBRRU1VLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd2lraS5xZW11Lm9yZy9Eb2N1bWVudGF0aW9uL0dldHRpbmdTdGFydGVkRGV2ZWxvcGVycyc+UUVNVSBEb2N1bWVudGF0aW9uPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHZlcmlmeSB0aGF0IHlvdXIgaG9zdCBjYW4gYWNjZXNzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCB2aWEgVENQLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZWJ1ZyBhIHByb2dyYW06PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkRlYnVnZ2luZyBhIHByb2dyYW0gaW52b2x2ZXMgcnVubmluZyBnZGJzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQgYW5kIHRoZW4gcnVubmluZyBHZGIgb24gdGhlIGhvc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZXhhbXBsZSBpbiB0aGlzIHN0ZXAgZGVidWdzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3ppcDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QHFlbXV4ODY6fiMgZ2Ric2VydmVyIGxvY2FsaG9zdDoxMjM0IC9iaW4vZ3ppcCDigJRoZWxwCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBnZGJzZXJ2ZXIgb3B0aW9ucywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGIvZG9jdW1lbnRhdGlvbi8nPkdEQiBTZXJ2ZXIgRG9jdW1lbnRhdGlvbjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BZnRlciBydW5uaW5nIGdkYnNlcnZlciBvbiB0aGUgdGFyZ2V0LCB5b3UgbmVlZAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gcnVuIEdkYiBvbiB0aGUgaG9zdCBhbmQgY29uZmlndXJlIGl0IGFuZCBjb25uZWN0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZXNlIGNvbW1hbmRzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIDxyZXBsYWNlYWJsZT5kaXJlY3RvcnktaG9sZGluZy10aGUtZGVidWdmcy1kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPgorICAgICAkIDxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4tZ2RiCisKKyAgICAgKGdkYikgc2V0IHN5c3Jvb3QgZGVidWdmcworICAgICAoZ2RiKSBzZXQgc3Vic3RpdHV0ZS1wYXRoIC91c3Ivc3JjL2RlYnVnIGRlYnVnZnMvdXNyL3NyYy9kZWJ1ZworICAgICAoZ2RiKSB0YXJnZXQgcmVtb3RlIDxyZXBsYWNlYWJsZT5JUC1vZi10YXJnZXQ8L3JlcGxhY2VhYmxlPjoxMjM0CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCBldmVyeXRoaW5nIHNob3VsZCBhdXRvbWF0aWNhbGx5IGxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIG1hdGNoaW5nIGJpbmFyaWVzLCBzeW1ib2xzIGFuZCBoZWFkZXJzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBHZGIgPGZpbGVuYW1lPnNldDwvZmlsZW5hbWU+IGNvbW1hbmRzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzIGV4YW1wbGUgY2FuIGJlIHBsYWNlZCBpbnRvIHRoZSB1c2VycworICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPn4vLmdkYmluaXQ8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwb24gc3RhcnRpbmcsIEdkYiBhdXRvbWF0aWNhbGx5IHJ1bnMgd2hhdGV2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcyBhcmUgaW4gdGhhdCBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXBsb3lpbmcgd2l0aG91dCBhIGZ1bGwgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYnVpbGQ6PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIG1hbnkgY2FzZXMsIGR1cmluZyBkZXZlbG9wbWVudCB5b3Ugd2FudCBhCisgICAgICAgICAgICAgICAgICAgICAgICBxdWljayBtZXRob2QgdG8gZGVwbG95IGEgbmV3IGJpbmFyeSB0byB0aGUgdGFyZ2V0IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcgaXQsIHdpdGhvdXQgd2FpdGluZyBmb3IgYSBmdWxsIGltYWdlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmUgYXBwcm9hY2ggdG8gc29sdmluZyB0aGlzIHNpdHVhdGlvbiBpcyB0bworICAgICAgICAgICAgICAgICAgICAgICAganVzdCBidWlsZCB0aGUgY29tcG9uZW50IHlvdSB3YW50IHRvIGRlYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBidWlsdCB0aGUgY29tcG9uZW50LCBjb3B5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSBkaXJlY3RseSB0byBib3RoIHRoZSB0YXJnZXQgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCA8ZmlsZW5hbWU+ZGVidWdmczwvZmlsZW5hbWU+LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgdGhlIGJpbmFyeSBpcyBwcm9jZXNzZWQgdGhyb3VnaCB0aGUgZGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0dGluZyBpbiBPcGVuRW1iZWRkZWQsIHlvdSBzaG91bGQgYWxzbworICAgICAgICAgICAgICAgICAgICAgICAgY29weSB0aGUgZGVidWcgaXRlbXMgKGkuZS4gPGZpbGVuYW1lPi5kZWJ1ZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBhbmQgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc3JjL2RlYnVnPC9maWxlbmFtZT4gZmlsZXMpCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSB3b3JrIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGJhc2gKKyAgICAgJCBiaXRiYWtlIC1jIGRldnNoZWxsIGJhc2gKKyAgICAgJCBjZCAuLgorICAgICAkIHNjcCBwYWNrYWdlcy1zcGxpdC9iYXNoL2Jpbi9iYXNoIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPjovYmluL2Jhc2gKKyAgICAgJCBjcCAtYSBwYWNrYWdlcy1zcGxpdC9iYXNoLWRiZy8qIDxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4vZGVidWdmcworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZWJ1Z2dpbmctd2l0aC10aGUtZ251LXByb2plY3QtZGVidWdnZXItZ2RiLW9uLXRoZS10YXJnZXQnPgorICAgICAgICAgICAgPHRpdGxlPkRlYnVnZ2luZyB3aXRoIHRoZSBHTlUgUHJvamVjdCBEZWJ1Z2dlciAoR0RCKSBvbiB0aGUgVGFyZ2V0PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIHNlY3Rpb24gYWRkcmVzc2VkIHVzaW5nIEdEQiByZW1vdGVseSBmb3IgZGVidWdnaW5nCisgICAgICAgICAgICAgICAgcHVycG9zZXMsIHdoaWNoIGlzIHRoZSBtb3N0IHVzdWFsIGNhc2UgZHVlIHRvIHRoZSBpbmhlcmVudAorICAgICAgICAgICAgICAgIGhhcmR3YXJlIGxpbWl0YXRpb25zIG9uIG1hbnkgZW1iZWRkZWQgZGV2aWNlcy4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBkZWJ1Z2dpbmcgaW4gdGhlIHRhcmdldCBoYXJkd2FyZSBpdHNlbGYgaXMgYWxzbworICAgICAgICAgICAgICAgIHBvc3NpYmxlIHdpdGggbW9yZSBwb3dlcmZ1bCBkZXZpY2VzLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCB5b3UgbmVlZCB0byBkbyBpbiBvcmRlciB0byBzdXBwb3J0CisgICAgICAgICAgICAgICAgdXNpbmcgR0RCIHRvIGRlYnVnIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHN1cHBvcnQgdGhpcyBraW5kIG9mIGRlYnVnZ2luZywgeW91IG5lZWQgZG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBFbnN1cmUgdGhhdCBHREIgaXMgb24gdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZG8gdGhpcyBieSBhZGRpbmcgImdkYiIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBnZGIiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFkZCAidG9vbHMtZGVidWciIHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0ZFQVRVUkVTX2FwcGVuZCA9ICIgdG9vbHMtZGVidWciCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRW5zdXJlIHRoYXQgZGVidWcgc3ltYm9scyBhcmUgcHJlc2VudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbWFrZSBzdXJlIHRoZXNlIHN5bWJvbHMgYXJlIHByZXNlbnQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIDxyZXBsYWNlYWJsZT5wYWNrYWdlbmFtZTwvcmVwbGFjZWFibGU+LWRiZyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gZG8gdGhlIGZvbGxvd2luZyB0byBpbmNsdWRlIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlYnVnIHN5bWJvbHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZGJnLXBrZ3MiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVG8gaW1wcm92ZSB0aGUgZGVidWcgaW5mb3JtYXRpb24gYWNjdXJhY3ksIHlvdSBjYW4gcmVkdWNlCisgICAgICAgICAgICAgICAgICAgIHRoZSBsZXZlbCBvZiBvcHRpbWl6YXRpb24gdXNlZCBieSB0aGUgY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIGFkZGluZyB0aGUgZm9sbG93aW5nIGxpbmUgdG8geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHlvdSB3aWxsIHJlZHVjZQorICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb24gZnJvbQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRlVMTF9PUFRJTUlaQVRJT04nPjxmaWxlbmFtZT5GVUxMX09QVElNSVpBVElPTjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb2YgIi1PMiIgdG8KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFQlVHX09QVElNSVpBVElPTic+PGZpbGVuYW1lPkRFQlVHX09QVElNSVpBVElPTjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb2YgIi1PIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBERUJVR19CVUlMRCA9ICIxIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoYXQgdGhpcyB3aWxsIHJlZHVjZSB0aGUgYXBwbGljYXRpb24ncyBwZXJmb3JtYW5jZQorICAgICAgICAgICAgICAgICAgICBhbmQgaXMgcmVjb21tZW5kZWQgb25seSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtb3RoZXItZGVidWdnaW5nLW90aGVycyc+CisgICAgICAgICAgICA8dGl0bGU+T3RoZXIgRGVidWdnaW5nIFRpcHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGFyZSBzb21lIG90aGVyIHRpcHMgdGhhdCB5b3UgbWlnaHQgZmluZCB1c2VmdWw6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBhZGRpbmcgbmV3IHBhY2thZ2VzLCBpdCBpcyB3b3J0aCB3YXRjaGluZyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxlIGl0ZW1zIG1ha2luZyB0aGVpciB3YXkgaW50byBjb21waWxlciBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgZG8gbm90IHdhbnQgcmVmZXJlbmNlcyB0byBsb2NhbCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2xpYi88L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvaW5jbHVkZS88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byByZW1vdmUgdGhlIDxmaWxlbmFtZT5wc3BsYXNoPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb3Qgc3BsYXNoc2NyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgYWRkIDxmaWxlbmFtZT5wc3BsYXNoPWZhbHNlPC9maWxlbmFtZT4gdG8gIHRoZSBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIHByZXZlbnRzIDxmaWxlbmFtZT5wc3BsYXNoPC9maWxlbmFtZT4gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZyBhbmQgdGh1cyBhbGxvd3MgeW91IHRvIHNlZSB0aGUgY29uc29sZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gc3dpdGNoIG91dCBvZiB0aGUgc3BsYXNoc2NyZWVuIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hpbmcgdGhlIHZpcnR1YWwgY29uc29sZSAoZS5nLiBGbitMZWZ0IG9yIEZuK1JpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICBvbiBhIFphdXJ1cykuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAodXN1YWxseSA8ZmlsZW5hbWU+dG1wLzwvZmlsZW5hbWU+LCB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+KQorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIG9mdGVuIGZpeCB0ZW1wb3JhcnkgYnVpbGQgaXNzdWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZpbmcgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGlzIHVzdWFsbHkgYQorICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVseSBjaGVhcCBvcGVyYXRpb24sIGJlY2F1c2UgdGFzayBvdXRwdXQgd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAodXN1YWxseSA8ZmlsZW5hbWU+c3N0YXRlLWNhY2hlLzwvZmlsZW5hbWU+LCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICAgICAgYWxzbyBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92aW5nIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBtaWdodCBiZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2Fyb3VuZCByYXRoZXIgdGhhbiBhIGZpeC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRyeWluZyB0byBkZXRlcm1pbmUgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzZSBvZiBhbiBpc3N1ZSBiZWZvcmUgcmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgZ29vZCBpZGVhLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVuZGVyc3RhbmRpbmcgaG93IGEgZmVhdHVyZSBpcyB1c2VkIGluIHByYWN0aWNlIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgcmVjaXBlcyBjYW4gYmUgdmVyeSBoZWxwZnVsLgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgY29uZmlndXJlIHNvbWUgbWV0aG9kIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gcXVpY2tseSBzZWFyY2ggdGhyb3VnaCBmaWxlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzaW5nIEdOVSBHcmVwLCB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHNoZWxsCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byByZWN1cnNpdmVseSBzZWFyY2ggdGhyb3VnaCBjb21tb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS1yZWxhdGVkIGZpbGVzLCBza2lwcGluZyBiaW5hcnkgZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmdpdDwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkgKGFzc3VtaW5nIGl0cyBuYW1lIHN0YXJ0cyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAiYnVpbGQiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZygpIHsKKyAgICAgICAgIGdyZXAgLUlyIFwKKyAgICAgICAgICAgICAgLS1leGNsdWRlLWRpcj0uZ2l0IFwKKyAgICAgICAgICAgICAgLS1leGNsdWRlLWRpcj0nYnVpbGQqJyBcCisgICAgICAgICAgICAgIC0taW5jbHVkZT0nKi5iYionIFwKKyAgICAgICAgICAgICAgLS1pbmNsdWRlPScqLmluYyonIFwKKyAgICAgICAgICAgICAgLS1pbmNsdWRlPScqLmNvbmYqJyBcCisgICAgICAgICAgICAgIC0taW5jbHVkZT0nKi5weSonIFwKKyAgICAgICAgICAgICAgIiRAIgorICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgdXNhZ2UgZXhhbXBsZXM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZyBGT08gICAgIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJGT08iCisgICAgICQgZyAtaSBmb28gIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJmb28iLCBpZ25vcmluZyBjYXNlCisgICAgICQgZyAtdyBGT08gIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJGT08iIGFzIGEgd29yZCwgaWdub3JpbmcgZS5nLiAiRk9PQkFSIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgZmlndXJpbmcgb3V0IGhvdyBzb21lIGZlYXR1cmUgd29ya3MgcmVxdWlyZXMgYSBsb3Qgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaGluZywgaXQgbWlnaHQgaW5kaWNhdGUgdGhhdCB0aGUgZG9jdW1lbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGV4dGVuZGVkIG9yIGltcHJvdmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gc3VjaCBjYXNlcywgY29uc2lkZXIgZmlsaW5nIGEgZG9jdW1lbnRhdGlvbiBidWcgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvJz5CdWd6aWxsYTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzdWJtaXQgYSBidWcgYWdhaW5zdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUgWW9jdG8gUHJvamVjdCBCdWd6aWxsYQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0J1Z3ppbGxhX0NvbmZpZ3VyYXRpb25fYW5kX0J1Z19UcmFja2luZyc+d2lraSBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdWJtaXR0aW5nLWEtZGVmZWN0LWFnYWluc3QtdGhlLXlvY3RvLXByb2plY3QnPlN1Ym1pdHRpbmcgYSBEZWZlY3QgQWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1hbnVhbHMgbWlnaHQgbm90IGJlIHRoZSByaWdodCBwbGFjZSB0byBkb2N1bWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSBwdXJlbHkgaW50ZXJuYWwgYW5kIGhhdmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZWQgc2NvcGUgKGUuZy4gaW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnQgYSBzaW5nbGUgPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCi0gICAgPHNlY3Rpb24gaWQ9J21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPgotICAgICAgICA8dGl0bGU+TWFpbnRhaW5pbmcgT3BlbiBTb3VyY2UgTGljZW5zZSBDb21wbGlhbmNlIER1cmluZyBZb3VyIFByb2R1Y3QncyBMaWZlY3ljbGU8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdtYWtpbmctY2hhbmdlcy10by10aGUteW9jdG8tcHJvamVjdCc+CisgICAgICAgIDx0aXRsZT5NYWtpbmcgQ2hhbmdlcyB0byB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBPbmUgb2YgdGhlIGNvbmNlcm5zIGZvciBhIGRldmVsb3BtZW50IG9yZ2FuaXphdGlvbiB1c2luZyBvcGVuIHNvdXJjZQotICAgICAgICAgICAgc29mdHdhcmUgaXMgaG93IHRvIG1haW50YWluIGNvbXBsaWFuY2Ugd2l0aCB2YXJpb3VzIG9wZW4gc291cmNlCi0gICAgICAgICAgICBsaWNlbnNpbmcgZHVyaW5nIHRoZSBsaWZlY3ljbGUgb2YgdGhlIHByb2R1Y3QuCi0gICAgICAgICAgICBXaGlsZSB0aGlzIHNlY3Rpb24gZG9lcyBub3QgcHJvdmlkZSBsZWdhbCBhZHZpY2Ugb3IKLSAgICAgICAgICAgIGNvbXByZWhlbnNpdmVseSBjb3ZlciBhbGwgc2NlbmFyaW9zLCBpdCBkb2VzCi0gICAgICAgICAgICBwcmVzZW50IG1ldGhvZHMgdGhhdCB5b3UgY2FuIHVzZSB0bwotICAgICAgICAgICAgYXNzaXN0IHlvdSBpbiBtZWV0aW5nIHRoZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBkdXJpbmcgYSBzb2Z0d2FyZQotICAgICAgICAgICAgcmVsZWFzZS4KKyAgICAgICAgICAgIEJlY2F1c2UgdGhlIFlvY3RvIFByb2plY3QgaXMgYW4gb3Blbi1zb3VyY2UsIGNvbW11bml0eS1iYXNlZAorICAgICAgICAgICAgcHJvamVjdCwgeW91IGNhbiBlZmZlY3QgY2hhbmdlcyB0byB0aGUgcHJvamVjdC4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyBwcm9jZWR1cmVzIHRoYXQgc2hvdyB5b3UgaG93IHRvIHN1Ym1pdAorICAgICAgICAgICAgYSBkZWZlY3QgYWdhaW5zdCB0aGUgcHJvamVjdCBhbmQgaG93IHRvIHN1Ym1pdCBhIGNoYW5nZS4KICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2l0aCBodW5kcmVkcyBvZiBkaWZmZXJlbnQgb3BlbiBzb3VyY2UgbGljZW5zZXMgdGhhdCB0aGUgWW9jdG8KLSAgICAgICAgICAgIFByb2plY3QgdHJhY2tzLCBpdCBpcyBkaWZmaWN1bHQgdG8ga25vdyB0aGUgcmVxdWlyZW1lbnRzIG9mIGVhY2gKLSAgICAgICAgICAgIGFuZCBldmVyeSBsaWNlbnNlLgotICAgICAgICAgICAgSG93ZXZlciwgdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgbWFqb3IgRkxPU1MgbGljZW5zZXMgY2FuIGJlZ2luCi0gICAgICAgICAgICB0byBiZSBjb3ZlcmVkIGJ5Ci0gICAgICAgICAgICBhc3N1bWluZyB0aGF0IHRocmVlIG1haW4gYXJlYXMgb2YgY29uY2VybiBleGlzdDoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNvdXJjZSBjb2RlIG11c3QgYmUgcHJvdmlkZWQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkxpY2Vuc2UgdGV4dCBmb3IgdGhlIHNvZnR3YXJlIG11c3QgYmUKLSAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNvbXBpbGF0aW9uIHNjcmlwdHMgYW5kIG1vZGlmaWNhdGlvbnMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlIG11c3QgYmUgcHJvdmlkZWQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICBUaGVyZSBhcmUgb3RoZXIgcmVxdWlyZW1lbnRzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhlc2UKLSAgICAgICAgICAgIHRocmVlIGFuZCB0aGUgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhpcyBzZWN0aW9uCi0gICAgICAgICAgICAoZS5nLiB0aGUgbWVjaGFuaXNtIHRocm91Z2ggd2hpY2ggc291cmNlIGNvZGUgaXMgZGlzdHJpYnV0ZWQpLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBcyBkaWZmZXJlbnQgb3JnYW5pemF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZXRob2RzIG9mIGNvbXBseWluZyB3aXRoCi0gICAgICAgICAgICBvcGVuIHNvdXJjZSBsaWNlbnNpbmcsIHRoaXMgc2VjdGlvbiBpcyBub3QgbWVhbnQgdG8gaW1wbHkgdGhhdAotICAgICAgICAgICAgdGhlcmUgaXMgb25seSBvbmUgc2luZ2xlIHdheSB0byBtZWV0IHlvdXIgY29tcGxpYW5jZSBvYmxpZ2F0aW9ucywKLSAgICAgICAgICAgIGJ1dCByYXRoZXIgdG8gZGVzY3JpYmUgb25lIG1ldGhvZCBvZiBhY2hpZXZpbmcgY29tcGxpYW5jZS4KLSAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBtZXRob2RzIHN1cHBvcnRlZCB0byBtZWV0IHRoZQotICAgICAgICAgICAgcHJldmlvdXNseSBtZW50aW9uZWQgdGhyZWUgcmVxdWlyZW1lbnRzLgotICAgICAgICAgICAgT25jZSB5b3UgdGFrZSBzdGVwcyB0byBtZWV0IHRoZXNlIHJlcXVpcmVtZW50cywKLSAgICAgICAgICAgIGFuZCBwcmlvciB0byByZWxlYXNpbmcgaW1hZ2VzLCBzb3VyY2VzLCBhbmQgdGhlIGJ1aWxkIHN5c3RlbSwKLSAgICAgICAgICAgIHlvdSBzaG91bGQgYXVkaXQgYWxsIGFydGlmYWN0cyB0byBlbnN1cmUgY29tcGxldGVuZXNzLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZ2VuZXJhdGVzIGEgbGljZW5zZSBtYW5pZmVzdCBkdXJpbmcKLSAgICAgICAgICAgICAgICBpbWFnZSBjcmVhdGlvbiB0aGF0IGlzIGxvY2F0ZWQKLSAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+JHtERVBMT1lfRElSfS9saWNlbnNlcy88cmVwbGFjZWFibGU+aW1hZ2VfbmFtZS1kYXRlc3RhbXA8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgdG8gYXNzaXN0IHdpdGggYW55IGF1ZGl0cy4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdwcm92aWRpbmctdGhlLXNvdXJjZS1jb2RlJz4KLSAgICAgICAgICAgIDx0aXRsZT5Qcm92aWRpbmcgdGhlIFNvdXJjZSBDb2RlPC90aXRsZT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J3N1Ym1pdHRpbmctYS1kZWZlY3QtYWdhaW5zdC10aGUteW9jdG8tcHJvamVjdCc+CisgICAgICAgICAgICA8dGl0bGU+U3VibWl0dGluZyBhIERlZmVjdCBBZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQ29tcGxpYW5jZSBhY3Rpdml0aWVzIHNob3VsZCBiZWdpbiBiZWZvcmUgeW91IGdlbmVyYXRlIHRoZQotICAgICAgICAgICAgICAgIGZpbmFsIGltYWdlLgotICAgICAgICAgICAgICAgIFRoZSBmaXJzdCB0aGluZyB5b3Ugc2hvdWxkIGxvb2sgYXQgaXMgdGhlIHJlcXVpcmVtZW50IHRoYXQKLSAgICAgICAgICAgICAgICB0b3BzIHRoZSBsaXN0IGZvciBtb3N0IGNvbXBsaWFuY2UgZ3JvdXBzIC0gcHJvdmlkaW5nCi0gICAgICAgICAgICAgICAgdGhlIHNvdXJjZS4KLSAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBoYXMgYSBmZXcgd2F5cyBvZiBtZWV0aW5nIHRoaXMKLSAgICAgICAgICAgICAgICByZXF1aXJlbWVudC4KKyAgICAgICAgICAgICAgICBVc2UgdGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmJ1Z3ppbGxhLm9yZy9hYm91dC8nPkJ1Z3ppbGxhPC91bGluaz4KKyAgICAgICAgICAgICAgICB0byBzdWJtaXQgYSBkZWZlY3QgKGJ1ZykgYWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGlzIGltcGxlbWVudGF0aW9uIG9mIEJ1Z3ppbGxhIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLWJ1Z3RyYWNrZXInPllvY3RvIFByb2plY3QgQnVnemlsbGE8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlsIG9uIGFueSBvZiB0aGUgZm9sbG93aW5nIHN0ZXBzLCBzZWUgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvQnVnemlsbGFfQ29uZmlndXJhdGlvbl9hbmRfQnVnX1RyYWNraW5nJz5CdWd6aWxsYSB3aWtpIHBhZ2U8L3VsaW5rPi4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgT25lIG9mIHRoZSBlYXNpZXN0IHdheXMgdG8gbWVldCB0aGlzIHJlcXVpcmVtZW50IGlzCi0gICAgICAgICAgICAgICAgdG8gcHJvdmlkZSB0aGUgZW50aXJlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCwgaG93ZXZlciwgaGFzIGEgZmV3IGlzc3Vlcy4KLSAgICAgICAgICAgICAgICBUaGUgbW9zdCBvYnZpb3VzIGlzIHRoZSBzaXplIG9mIHRoZSBkaXJlY3Rvcnkgc2luY2UgaXQgaW5jbHVkZXMKLSAgICAgICAgICAgICAgICBhbGwgc291cmNlcyB1c2VkIGluIHRoZSBidWlsZCBhbmQgbm90IGp1c3QgdGhlIHNvdXJjZSB1c2VkIGluCi0gICAgICAgICAgICAgICAgdGhlIHJlbGVhc2VkIGltYWdlLgotICAgICAgICAgICAgICAgIEl0IHdpbGwgaW5jbHVkZSB0b29sY2hhaW4gc291cmNlLCBhbmQgb3RoZXIgYXJ0aWZhY3RzLCB3aGljaAotICAgICAgICAgICAgICAgIHlvdSB3b3VsZCBub3QgZ2VuZXJhbGx5IHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIG1vcmUgc2VyaW91cyBpc3N1ZSBmb3IgbW9zdCBjb21wYW5pZXMgaXMgYWNjaWRlbnRhbAotICAgICAgICAgICAgICAgIHJlbGVhc2Ugb2YgcHJvcHJpZXRhcnkgc29mdHdhcmUuCi0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgYW4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1hcmNoaXZlcic+PGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIGNsYXNzIHRvIGhlbHAgYXZvaWQgc29tZSBvZiB0aGVzZSBjb25jZXJucy4KKyAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBnZW5lcmFsIHN0ZXBzIHRvIHN1Ym1pdCBhIGJ1ZyIKKworICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgT3BlbiB0aGUgWW9jdG8gUHJvamVjdCBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPkJ1Z3ppbGxhPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkZpbGUgYSBCdWciIHRvIGVudGVyIGEgbmV3IGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgdGhlIGFwcHJvcHJpYXRlICJDbGFzc2lmaWNhdGlvbiIsICJQcm9kdWN0IiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcG9uZW50IiBmb3Igd2hpY2ggdGhlIGJ1ZyB3YXMgZm91bmQuCisgICAgICAgICAgICAgICAgICAgICAgICBCdWdzIGZvciB0aGUgWW9jdG8gUHJvamVjdCBmYWxsIGludG8gb25lIG9mIHNldmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZpY2F0aW9ucywgd2hpY2ggaW4gdHVybiBicmVhayBkb3duIGludG8gc2V2ZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHMgYW5kIGNvbXBvbmVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZm9yIGEgYnVnIGFnYWluc3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyLCB5b3Ugd291bGQgY2hvb3NlCisgICAgICAgICAgICAgICAgICAgICAgICAiQnVpbGQgU3lzdGVtLCBNZXRhZGF0YSAmYW1wOyBSdW50aW1lIiwgIkJTUHMiLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICJic3BzLW1ldGEtaW50ZWwiLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIHRoZSAiVmVyc2lvbiIgb2YgdGhlIFlvY3RvIFByb2plY3QgZm9yIHdoaWNoIHlvdSBmb3VuZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1ZyAoZS5nLiAmRElTVFJPOykuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGFuZCBzZWxlY3QgdGhlICJTZXZlcml0eSIgb2YgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzZXZlcml0eSBpbmRpY2F0ZXMgaG93IHRoZSBidWcgaW1wYWN0ZWQgeW91ciB3b3JrLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSB0aGUgIkhhcmR3YXJlIiB0aGF0IHRoZSBidWcgaW1wYWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgdGhlICJBcmNoaXRlY3R1cmUiIHRoYXQgdGhlIGJ1ZyBpbXBhY3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSBhICJEb2N1bWVudGF0aW9uIGNoYW5nZSIgaXRlbSBmb3IgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZpeGluZyBhIGJ1ZyBtaWdodCBvciBtaWdodCBub3QgYWZmZWN0IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1bnN1cmUgb2YgdGhlIGltcGFjdCB0byB0aGUgZG9jdW1lbnRhdGlvbiwgc2VsZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAiRG9uJ3QgS25vdyIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIGJyaWVmICJTdW1tYXJ5IiBvZiB0aGUgYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgVHJ5IHRvIGxpbWl0IHlvdXIgc3VtbWFyeSB0byBqdXN0IGEgbGluZSBvciB0d28gYW5kIGJlIHN1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNhcHR1cmUgdGhlIGVzc2VuY2Ugb2YgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGEgZGV0YWlsZWQgIkRlc2NyaXB0aW9uIiBvZiB0aGUgYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggZGV0YWlsIGFzIHlvdSBjYW4gYWJvdXQgdGhlIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBiZWhhdmlvciwgb3V0cHV0LCBhbmQgc28gZm9ydGggdGhhdCBzdXJyb3VuZHMgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZXZlbiBhdHRhY2ggc3VwcG9ydGluZyBmaWxlcyBmb3Igb3V0cHV0IGZyb20gbG9ncyBieQorICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlICJBZGQgYW4gYXR0YWNobWVudCIgYnV0dG9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSAiU3VibWl0IEJ1ZyIgYnV0dG9uIHN1Ym1pdCB0aGUgYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBuZXcgQnVnemlsbGEgbnVtYmVyIGlzIGFzc2lnbmVkIHRvIHRoZSBidWcgYW5kIHRoZSBkZWZlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIGxvZ2dlZCBpbiB0aGUgYnVnIHRyYWNraW5nIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgT25jZSB5b3UgZmlsZSBhIGJ1ZywgdGhlIGJ1ZyBpcyBwcm9jZXNzZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgQnVnCisgICAgICAgICAgICAgICAgVHJpYWdlIFRlYW0gYW5kIGZ1cnRoZXIgZGV0YWlscyBjb25jZXJuaW5nIHRoZSBidWcgYXJlIGFzc2lnbmVkCisgICAgICAgICAgICAgICAgKGUuZy4gcHJpb3JpdHkgYW5kIG93bmVyKS4KKyAgICAgICAgICAgICAgICBZb3UgYXJlIHRoZSAiU3VibWl0dGVyIiBvZiB0aGUgYnVnIGFuZCBhbnkgZnVydGhlciBjYXRlZ29yaXphdGlvbiwKKyAgICAgICAgICAgICAgICBwcm9ncmVzcywgb3IgY29tbWVudHMgb24gdGhlIGJ1ZyByZXN1bHQgaW4gQnVnemlsbGEgc2VuZGluZyB5b3UgYW4KKyAgICAgICAgICAgICAgICBhdXRvbWF0ZWQgZW1haWwgY29uY2VybmluZyB0aGUgcGFydGljdWxhciBjaGFuZ2Ugb3IgcHJvZ3Jlc3MgdG8gdGhlCisgICAgICAgICAgICAgICAgYnVnLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPgorICAgICAgICAgICAgPHRpdGxlPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBDb250cmlidXRpb25zIHRvIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBPcGVuRW1iZWRkZWQgYXJlIHZlcnkgd2VsY29tZS4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSBzeXN0ZW0gaXMgZXh0cmVtZWx5IGNvbmZpZ3VyYWJsZSBhbmQgZmxleGlibGUsIHdlIHJlY29nbml6ZQorICAgICAgICAgICAgICAgIHRoYXQgZGV2ZWxvcGVycyB3aWxsIHdhbnQgdG8gZXh0ZW5kLCBjb25maWd1cmUgb3Igb3B0aW1pemUgaXQgZm9yCisgICAgICAgICAgICAgICAgdGhlaXIgc3BlY2lmaWMgdXNlcy4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQmVmb3JlIHlvdSBlbXBsb3kgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+IG9yIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcmNoaXZlcjwvZmlsZW5hbWU+IGNsYXNzLCB5b3UgbmVlZCB0byBkZWNpZGUgaG93Ci0gICAgICAgICAgICAgICAgeW91IGNob29zZSB0byBwcm92aWRlIHNvdXJjZS4KLSAgICAgICAgICAgICAgICBUaGUgc291cmNlIDxmaWxlbmFtZT5hcmNoaXZlcjwvZmlsZW5hbWU+IGNsYXNzIGNhbiBnZW5lcmF0ZQotICAgICAgICAgICAgICAgIHRhcmJhbGxzIGFuZCBTUlBNcyBhbmQgY2FuIGNyZWF0ZSB0aGVtIHdpdGggdmFyaW91cyBsZXZlbHMgb2YKLSAgICAgICAgICAgICAgICBjb21wbGlhbmNlIGluIG1pbmQuCisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdXNlcyBhIG1haWxpbmcgbGlzdCBhbmQgYSBwYXRjaC1iYXNlZCB3b3JrZmxvdworICAgICAgICAgICAgICAgIHRoYXQgaXMgc2ltaWxhciB0byB0aGUgTGludXgga2VybmVsIGJ1dCBjb250YWlucyBpbXBvcnRhbnQKKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlcy4KKyAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBhIG1haWxpbmcgbGlzdCBleGlzdHMgdGhyb3VnaCB3aGljaCB5b3UgY2FuIHN1Ym1pdAorICAgICAgICAgICAgICAgIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgWW91IHNob3VsZCBzZW5kIHBhdGNoZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG1haWxpbmcgbGlzdCBzbyB0aGF0IHRoZXkKKyAgICAgICAgICAgICAgICBjYW4gYmUgcmV2aWV3ZWQgYW5kIG1lcmdlZCBieSB0aGUgYXBwcm9wcmlhdGUgbWFpbnRhaW5lci4KKyAgICAgICAgICAgICAgICBUaGUgc3BlY2lmaWMgbWFpbGluZyBsaXN0IHlvdSBuZWVkIHRvIHVzZSBkZXBlbmRzIG9uIHRoZQorICAgICAgICAgICAgICAgIGxvY2F0aW9uIG9mIHRoZSBjb2RlIHlvdSBhcmUgY2hhbmdpbmcuCisgICAgICAgICAgICAgICAgRWFjaCBjb21wb25lbnQgKGUuZy4gbGF5ZXIpIHNob3VsZCBoYXZlIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZSB0aGF0IGluZGljYXRlcyB3aGVyZSB0byBzZW5kCisgICAgICAgICAgICAgICAgdGhlIGNoYW5nZXMgYW5kIHdoaWNoIHByb2Nlc3MgdG8gZm9sbG93LgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBPbmUgd2F5IG9mIGRvaW5nIHRoaXMgKGJ1dCBjZXJ0YWlubHkgbm90IHRoZSBvbmx5IHdheSkgaXMgdG8KLSAgICAgICAgICAgICAgICByZWxlYXNlIGp1c3QgdGhlIHNvdXJjZSBhcyBhIHRhcmJhbGwuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBkbyB0aGlzIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+OgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VuZCB0aGUgcGF0Y2ggdG8gdGhlIG1haWxpbmcgbGlzdCB1c2luZyB3aGljaGV2ZXIgYXBwcm9hY2gKKyAgICAgICAgICAgICAgICB5b3UgZmVlbCBjb21mb3J0YWJsZSB3aXRoIHRvIGdlbmVyYXRlIHRoZSBwYXRjaC4KKyAgICAgICAgICAgICAgICBPbmNlIHNlbnQsIHRoZSBwYXRjaCBpcyB1c3VhbGx5IHJldmlld2VkIGJ5IHRoZSBjb21tdW5pdHkgYXQgbGFyZ2UuCisgICAgICAgICAgICAgICAgSWYgc29tZWJvZHkgaGFzIGNvbmNlcm5zIHdpdGggdGhlIHBhdGNoLCB0aGV5IHdpbGwgdXN1YWxseSB2b2ljZQorICAgICAgICAgICAgICAgIHRoZWlyIGNvbmNlcm4gb3ZlciB0aGUgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgIElmIGEgcGF0Y2ggZG9lcyBub3QgcmVjZWl2ZSBhbnkgbmVnYXRpdmUgcmV2aWV3cywgdGhlIG1haW50YWluZXIgb2YKKyAgICAgICAgICAgICAgICB0aGUgYWZmZWN0ZWQgbGF5ZXIgdHlwaWNhbGx5IHRha2VzIHRoZSBwYXRjaCwgdGVzdHMgaXQsIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgYmFzZWQgb24gc3VjY2Vzc2Z1bCB0ZXN0aW5nLCBtZXJnZXMgdGhlIHBhdGNoLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYSBpZD0nZmlndXJpbmctb3V0LXRoZS1tYWlsaW5nLWxpc3QtdG8tdXNlJz4KKyAgICAgICAgICAgICAgICBUaGUgInBva3kiIHJlcG9zaXRvcnksIHdoaWNoIGlzIHRoZSBZb2N0byBQcm9qZWN0J3MgcmVmZXJlbmNlIGJ1aWxkCisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsIGlzIGEgaHlicmlkIHJlcG9zaXRvcnkgdGhhdCBjb250YWlucyBzZXZlcmFsCisgICAgICAgICAgICAgICAgaW5kaXZpZHVhbCBwaWVjZXMgKGUuZy4gQml0QmFrZSwgTWV0YWRhdGEsIGRvY3VtZW50YXRpb24sCisgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoKSBidWlsdCB1c2luZyB0aGUgY29tYm8tbGF5ZXIgdG9vbC4KKyAgICAgICAgICAgICAgICBUaGUgdXBzdHJlYW0gbG9jYXRpb24gdXNlZCBmb3Igc3VibWl0dGluZyBjaGFuZ2VzIHZhcmllcyBieQorICAgICAgICAgICAgICAgIGNvbXBvbmVudDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29yZSBNZXRhZGF0YTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VuZCB5b3VyIHBhdGNoIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvbWFpbG1hbi9saXN0aW5mby9vcGVuZW1iZWRkZWQtY29yZSc+b3BlbmVtYmVkZGVkLWNvcmU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGluZyBsaXN0LiAgRm9yIGV4YW1wbGUsIGEgY2hhbmdlIHRvIGFueXRoaW5nIHVuZGVyCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBzaG91bGQgYmUgc2VudAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhpcyBtYWlsaW5nIGxpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJpdEJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBjaGFuZ2VzIHRvIEJpdEJha2UgKGkuZS4gYW55dGhpbmcgdW5kZXIgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGRpcmVjdG9yeSksIHNlbmQgeW91ciBwYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JpdGJha2UtZGV2ZWwnPmJpdGJha2UtZGV2ZWw8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4ibWV0YS0qIiB0cmVlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHJlZXMgY29udGFpbiBNZXRhZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9saXN0aW5mby9wb2t5Jz5wb2t5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1haWxpbmcgbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgY2hhbmdlcyB0byBvdGhlciBsYXllcnMgaG9zdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0IHNvdXJjZQorICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcyAoaS5lLiA8ZmlsZW5hbWU+eW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+KSwgdG9vbHMsCisgICAgICAgICAgICAgICAgYW5kIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24sIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvbGlzdGluZm8veW9jdG8nPllvY3RvIFByb2plY3Q8L3VsaW5rPgorICAgICAgICAgICAgICAgIGdlbmVyYWwgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMgYSBsYXllcidzIGRvY3VtZW50YXRpb24gc3BlY2lmaWVzIHRvIHVzZSBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgICAgICBJZiBzbywgdXNlIHRoYXQgbGlzdC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgcmVjaXBlcyB0aGF0IGRvIG5vdCBmaXQgaW50byB0aGUgY29yZSBNZXRhZGF0YSwgeW91CisgICAgICAgICAgICAgICAgc2hvdWxkIGRldGVybWluZSB3aGljaCBsYXllciB0aGUgcmVjaXBlIHNob3VsZCBnbyBpbnRvIGFuZCBzdWJtaXQKKyAgICAgICAgICAgICAgICB0aGUgY2hhbmdlIGluIHRoZSBtYW5uZXIgcmVjb21tZW5kZWQgYnkgdGhlIGRvY3VtZW50YXRpb24gKGUuZy4KKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUpIHN1cHBsaWVkIHdpdGggdGhlIGxheWVyLgorICAgICAgICAgICAgICAgIElmIGluIGRvdWJ0LCBwbGVhc2UgYXNrIG9uIHRoZSBZb2N0byBnZW5lcmFsIG1haWxpbmcgbGlzdCBvciBvbgorICAgICAgICAgICAgICAgIHRoZSBvcGVuZW1iZWRkZWQtZGV2ZWwgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gcHVzaCBhIGNoYW5nZSB1cHN0cmVhbSBhbmQgcmVxdWVzdCBhIG1haW50YWluZXIgdG8KKyAgICAgICAgICAgICAgICBwdWxsIHRoZSBjaGFuZ2UgaW50byB0aGUgY29tcG9uZW50J3MgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBZb3UgZG8gdGhpcyBieSBwdXNoaW5nIHRvIGEgY29udHJpYnV0aW9uIHJlcG9zaXRvcnkgdGhhdCBpcyB1cHN0cmVhbS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ3MtZ2l0LXdvcmtmbG93cy1hbmQtdGhlLXlvY3RvLXByb2plY3QnPkdpdCBXb3JrZmxvd3MgYW5kIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsIGZvciBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgY29uY2VwdHMgb24gd29ya2luZyBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVHdvIGNvbW1vbmx5IHVzZWQgdGVzdGluZyByZXBvc2l0b3JpZXMgZXhpc3QgZm9yCisgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkLUNvcmU6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJyb3NzL211dCIgYnJhbmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgIm11dCIgKG1hc3Rlci11bmRlci10ZXN0KSB0cmVlCisgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHMgaW4gdGhlIDxmaWxlbmFtZT5wb2t5LWNvbnRyaWI8L2ZpbGVuYW1lPiByZXBvc2l0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+WW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJtYXN0ZXItbmV4dCIgYnJhbmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGJyYW5jaCBpcyBwYXJ0IG9mIHRoZSBtYWluCisgICAgICAgICAgICAgICAgICAgICAgICAicG9reSIgcmVwb3NpdG9yeSBpbiB0aGUgWW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgTWFpbnRhaW5lcnMgdXNlIHRoZXNlIGJyYW5jaGVzIHRvIHRlc3Qgc3VibWlzc2lvbnMgcHJpb3IgdG8gbWVyZ2luZworICAgICAgICAgICAgICAgIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgVGh1cywgeW91IGNhbiBnZXQgYW4gaWRlYSBvZiB0aGUgc3RhdHVzIG9mIGEgcGF0Y2ggYmFzZWQgb24KKyAgICAgICAgICAgICAgICB3aGV0aGVyIHRoZSBwYXRjaCBoYXMgYmVlbiBtZXJnZWQgaW50byBvbmUgb2YgdGhlc2UgYnJhbmNoZXMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgc3lzdGVtIGlzIGltcGVyZmVjdCBhbmQgY2hhbmdlcyBjYW4gc29tZXRpbWVzIGdldCBsb3N0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICBmbG93LgorICAgICAgICAgICAgICAgICAgICBBc2tpbmcgYWJvdXQgdGhlIHN0YXR1cyBvZiBhIHBhdGNoIG9yIGNoYW5nZSBpcyByZWFzb25hYmxlIGlmIHRoZQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgaGFzIGJlZW4gaWRsZSBmb3IgYSB3aGlsZSB3aXRoIG5vIGZlZWRiYWNrLgorICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBkb2VzIGhhdmUgcGxhbnMgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhdGNod29ya18oc29mdHdhcmUpJz5QYXRjaHdvcms8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0byB0cmFjayB0aGUgc3RhdHVzIG9mIHBhdGNoZXMgYW5kIGFsc28gdG8gYXV0b21hdGljYWxseSBwcmV2aWV3CisgICAgICAgICAgICAgICAgICAgIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIHByb3ZpZGUgcHJvY2VkdXJlcyBmb3Igc3VibWl0dGluZyBhIGNoYW5nZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3B1c2hpbmctYS1jaGFuZ2UtdXBzdHJlYW0nPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBTY3JpcHRzIHRvIFB1c2ggYSBDaGFuZ2UgVXBzdHJlYW0gYW5kIFJlcXVlc3QgYSBQdWxsPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhpcyBwcm9jZWR1cmUgdG8gcHVzaCBhIGNoYW5nZSB0byBhbiB1cHN0cmVhbSAiY29udHJpYiIKKyAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnk6CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGdlbmVyYWwgR2l0IGluZm9ybWF0aW9uIG9uIGhvdyB0byBwdXNoIGEgY2hhbmdlCisgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9ib29rL2VuL3YyL0Rpc3RyaWJ1dGVkLUdpdC1EaXN0cmlidXRlZC1Xb3JrZmxvd3MnPkdpdCBDb21tdW5pdHkgQm9vazwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBZb3VyIENoYW5nZXMgTG9jYWxseTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ha2UgeW91ciBjaGFuZ2VzIGluIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBtYWtlIHNtYWxsLCBjb250cm9sbGVkLCBpc29sYXRlZCBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlZXBpbmcgY2hhbmdlcyBzbWFsbCBhbmQgaXNvbGF0ZWQgYWlkcyByZXZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZXMgbWVyZ2luZy9yZWJhc2luZyBlYXNpZXIgYW5kIGtlZXBzIHRoZSBjaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXN0b3J5IGNsZWFuIHNob3VsZCBhbnlvbmUgbmVlZCB0byByZWZlciB0byBpdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhZ2UgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhZ2UgeW91ciBjaGFuZ2VzIGJ5IHVzaW5nIHRoZSA8ZmlsZW5hbWU+Z2l0IGFkZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvbiBlYWNoIGZpbGUgeW91IGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J21ha2luZy1zdXJlLXlvdS1oYXZlLWNvcnJlY3QtY29tbWl0LWluZm9ybWF0aW9uJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbWl0IFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1pdCB0aGUgY2hhbmdlIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgY29tbWl0PC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlIHN1cmUgeW91ciBjb21taXQgaW5mb3JtYXRpb24gZm9sbG93cyBzdGFuZGFyZHMgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgdGhlc2UgYWNjZXB0ZWQgY29udmVudGlvbnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBpbmNsdWRlIGEgIlNpZ25lZC1vZmYtYnk6IiBsaW5lIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSBzdHlsZSBhcyByZXF1aXJlZCBieSB0aGUgTGludXgga2VybmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaW5nIHRoaXMgbGluZSBzaWduaWZpZXMgdGhhdCB5b3UsIHRoZSBzdWJtaXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIGFncmVlZCB0byB0aGUgRGV2ZWxvcGVyJ3MgQ2VydGlmaWNhdGUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yaWdpbiAxLjEgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRGV2ZWxvcGVyJ3MgQ2VydGlmaWNhdGUgb2YgT3JpZ2luIDEuMQorCisgICAgIEJ5IG1ha2luZyBhIGNvbnRyaWJ1dGlvbiB0byB0aGlzIHByb2plY3QsIEkgY2VydGlmeSB0aGF0OgorCisgICAgIChhKSBUaGUgY29udHJpYnV0aW9uIHdhcyBjcmVhdGVkIGluIHdob2xlIG9yIGluIHBhcnQgYnkgbWUgYW5kIEkKKyAgICAgICAgIGhhdmUgdGhlIHJpZ2h0IHRvIHN1Ym1pdCBpdCB1bmRlciB0aGUgb3BlbiBzb3VyY2UgbGljZW5zZQorICAgICAgICAgaW5kaWNhdGVkIGluIHRoZSBmaWxlOyBvcgorCisgICAgIChiKSBUaGUgY29udHJpYnV0aW9uIGlzIGJhc2VkIHVwb24gcHJldmlvdXMgd29yayB0aGF0LCB0byB0aGUgYmVzdAorICAgICAgICAgb2YgbXkga25vd2xlZGdlLCBpcyBjb3ZlcmVkIHVuZGVyIGFuIGFwcHJvcHJpYXRlIG9wZW4gc291cmNlCisgICAgICAgICBsaWNlbnNlIGFuZCBJIGhhdmUgdGhlIHJpZ2h0IHVuZGVyIHRoYXQgbGljZW5zZSB0byBzdWJtaXQgdGhhdAorICAgICAgICAgd29yayB3aXRoIG1vZGlmaWNhdGlvbnMsIHdoZXRoZXIgY3JlYXRlZCBpbiB3aG9sZSBvciBpbiBwYXJ0CisgICAgICAgICBieSBtZSwgdW5kZXIgdGhlIHNhbWUgb3BlbiBzb3VyY2UgbGljZW5zZSAodW5sZXNzIEkgYW0KKyAgICAgICAgIHBlcm1pdHRlZCB0byBzdWJtaXQgdW5kZXIgYSBkaWZmZXJlbnQgbGljZW5zZSksIGFzIGluZGljYXRlZAorICAgICAgICAgaW4gdGhlIGZpbGU7IG9yCisKKyAgICAgKGMpIFRoZSBjb250cmlidXRpb24gd2FzIHByb3ZpZGVkIGRpcmVjdGx5IHRvIG1lIGJ5IHNvbWUgb3RoZXIKKyAgICAgICAgIHBlcnNvbiB3aG8gY2VydGlmaWVkIChhKSwgKGIpIG9yIChjKSBhbmQgSSBoYXZlIG5vdCBtb2RpZmllZAorICAgICAgICAgaXQuCisKKyAgICAgKGQpIEkgdW5kZXJzdGFuZCBhbmQgYWdyZWUgdGhhdCB0aGlzIHByb2plY3QgYW5kIHRoZSBjb250cmlidXRpb24KKyAgICAgICAgIGFyZSBwdWJsaWMgYW5kIHRoYXQgYSByZWNvcmQgb2YgdGhlIGNvbnRyaWJ1dGlvbiAoaW5jbHVkaW5nIGFsbAorICAgICAgICAgcGVyc29uYWwgaW5mb3JtYXRpb24gSSBzdWJtaXQgd2l0aCBpdCwgaW5jbHVkaW5nIG15IHNpZ24tb2ZmKSBpcworICAgICAgICAgbWFpbnRhaW5lZCBpbmRlZmluaXRlbHkgYW5kIG1heSBiZSByZWRpc3RyaWJ1dGVkIGNvbnNpc3RlbnQgd2l0aAorICAgICAgICAgdGhpcyBwcm9qZWN0IG9yIHRoZSBvcGVuIHNvdXJjZSBsaWNlbnNlKHMpIGludm9sdmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYSBzaW5nbGUtbGluZSBzdW1tYXJ5IG9mIHRoZSBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtb3JlIGV4cGxhbmF0aW9uIGlzIG5lZWRlZCwgcHJvdmlkZSBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWwgaW4gdGhlIGJvZHkgb2YgdGhlIGNvbW1pdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc3VtbWFyeSBpcyB0eXBpY2FsbHkgdmlld2FibGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvcnRsaXN0IiBvZiBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgcHJvdmlkaW5nIHNvbWV0aGluZyBzaG9ydCBhbmQgZGVzY3JpcHRpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZ2l2ZXMgdGhlIHJlYWRlciBhIHN1bW1hcnkgb2YgdGhlIGNoYW5nZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZnVsIHdoZW4gdmlld2luZyBhIGxpc3Qgb2YgbWFueSBjb21taXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBwcmVmaXggdGhpcyBzaG9ydCBkZXNjcmlwdGlvbiB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIG5hbWUgKGlmIGNoYW5naW5nIGEgcmVjaXBlKSwgb3IgZWxzZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2hvcnQgZm9ybSBwYXRoIHRvIHRoZSBmaWxlIGJlaW5nIGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBib2R5IG9mIHRoZSBjb21taXQgbWVzc2FnZSwgcHJvdmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsZWQgaW5mb3JtYXRpb24gdGhhdCBkZXNjcmliZXMgd2hhdCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQsIHdoeSB5b3UgbWFkZSB0aGUgY2hhbmdlLCBhbmQgdGhlIGFwcHJvYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IG1pZ2h0IGFsc28gYmUgaGVscGZ1bCBpZiB5b3UgbWVudGlvbiBob3cgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZWQgdGhlIGNoYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYXMgbXVjaCBkZXRhaWwgYXMgeW91IGNhbiBpbiB0aGUgYm9keSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbW1pdCBtZXNzYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIHByb3ZpZGUgYSBtb3JlIGRldGFpbGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gb2YgYSBjaGFuZ2UgaWYgdGhlIGNoYW5nZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yIHRvIHRoZSBwb2ludCBvZiB0aGUgc2luZ2xlIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5IHByb3ZpZGluZyBhbGwgdGhlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBjaGFuZ2UgYWRkcmVzc2VzIGEgc3BlY2lmaWMgYnVnIG9yIGlzc3VlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIGJ1Zy10cmFja2luZyBJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgYSByZWZlcmVuY2UgdG8gdGhhdCBJRCBpbiB5b3VyIGRldGFpbGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIGEgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlbnRpb24gZm9yIGJ1ZyByZWZlcmVuY2VzIC0gYW55IGNvbW1pdCB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXMgYSBzcGVjaWZpYyBidWcgc2hvdWxkIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHVzZSB0aGUgYWN0dWFsIGJ1Zy10cmFja2luZyBJRCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWd6aWxsYSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5idWctaWQ8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRml4ZXMgW1lPQ1RPICM8cmVwbGFjZWFibGU+YnVnLWlkPC9yZXBsYWNlYWJsZT5dCisKKyAgICAgPHJlcGxhY2VhYmxlPmRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGNoYW5nZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHVzaCBZb3VyIENvbW1pdHMgdG8gYSAiQ29udHJpYiIgVXBzdHJlYW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhcnJhbmdlZCBmb3IgcGVybWlzc2lvbnMgdG8gcHVzaCB0byBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtIGNvbnRyaWIgcmVwb3NpdG9yeSwgcHVzaCB0aGUgY2hhbmdlIHRvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgcHVzaCA8cmVwbGFjZWFibGU+dXBzdHJlYW1fcmVtb3RlX3JlcG88L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+bG9jYWxfYnJhbmNoX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZSBwZXJtaXNzaW9ucyB0byBwdXNoIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW0gPGZpbGVuYW1lPm1ldGEtaW50ZWwtY29udHJpYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBhbmQgeW91IGFyZSB3b3JraW5nIGluIGEgbG9jYWwgYnJhbmNoIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnlvdXJfbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9SRUFETUU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgcHVzaGVzIHlvdXIgbG9jYWwgY29tbWl0cyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbC1jb250cmliPC9maWxlbmFtZT4gdXBzdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBwdXRzIHRoZSBjb21taXQgaW4gYSBicmFuY2ggbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+eW91cl9uYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L1JFQURNRTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgcHVzaCBtZXRhLWludGVsLWNvbnRyaWIgPHJlcGxhY2VhYmxlPnlvdXJfbmFtZTwvcmVwbGFjZWFibGU+L1JFQURNRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0ncHVzaC1kZXRlcm1pbmUtd2hvLXRvLW5vdGlmeSc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGVybWluZSBXaG8gdG8gTm90aWZ5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIHRoZSBtYWludGFpbmVyIG9yIHRoZSBtYWlsaW5nIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHlvdSBuZWVkIHRvIG5vdGlmeSBmb3IgdGhlIGNoYW5nZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5CZWZvcmUgc3VibWl0dGluZyBhbnkgY2hhbmdlLCB5b3UgbmVlZCB0byBiZSBzdXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvIHRoZSBtYWludGFpbmVyIGlzIG9yIHdoYXQgbWFpbGluZyBsaXN0IHRoYXQgeW91IG5lZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBub3RpZnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGVpdGhlciB0aGVzZSBtZXRob2RzIHRvIGZpbmQgb3V0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWludGVuYW5jZSBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGFtaW5lIHRoZSA8ZmlsZW5hbWU+bWFpbnRhaW5lcnMuaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzZWUgd2hvIGlzIHJlc3BvbnNpYmxlIGZvciBjb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWFyY2ggYnkgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBlbnRlciB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gYnJpbmcgdXAgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgbGlzdCBvZiBhbGwgY29tbWl0cyBhZ2FpbnN0IGEgc3BlY2lmaWMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZ2l0IHNob3J0bG9nIC0tIDxyZXBsYWNlYWJsZT5maWxlbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdXN0IHByb3ZpZGUgdGhlIG5hbWUgb2YgdGhlIGZpbGUgZm9yIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGludGVyZXN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgaXMgbm90IG9yZGVyZWQgYnkgaGlzdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGRvZXMgaW5jbHVkZSBhIGxpc3Qgb2YgZXZlcnlvbmUgd2hvIGhhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0dGVkIGdyb3VwZWQgYnkgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb20gdGhlIGxpc3QsIHlvdSBjYW4gc2VlIHdobyBpcyByZXNwb25zaWJsZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWxrIG9mIHRoZSBjaGFuZ2VzIGFnYWluc3QgdGhlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4YW1pbmUgdGhlIExpc3Qgb2YgTWFpbGluZyBMaXN0czo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgWW9jdG8gUHJvamVjdCBhbmQgcmVsYXRlZCBtYWlsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1tYWlsaW5nbGlzdCc+TWFpbGluZyBsaXN0czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgYSBQdWxsIFJlcXVlc3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZnkgdGhlIG1haW50YWluZXIgb3IgdGhlIG1haWxpbmcgbGlzdCB0aGF0IHlvdSBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaGVkIGEgY2hhbmdlIGJ5IG1ha2luZyBhIHB1bGwgcmVxdWVzdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyB0d28gc2NyaXB0cyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVuaWVudGx5IGxldCB5b3UgZ2VuZXJhdGUgYW5kIHNlbmQgcHVsbCByZXF1ZXN0cyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHNjcmlwdHMgYXJlIDxmaWxlbmFtZT5jcmVhdGUtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnNlbmQtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIHNjcmlwdHMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5+L3Bva3kvc2NyaXB0czwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Vc2luZyB0aGVzZSBzY3JpcHRzIGNvcnJlY3RseSBmb3JtYXRzIHRoZSByZXF1ZXN0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgaW50cm9kdWNpbmcgYW55IHdoaXRlc3BhY2Ugb3IgSFRNTCBmb3JtYXR0aW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtYWludGFpbmVyIHRoYXQgcmVjZWl2ZXMgeW91ciBwYXRjaGVzIGVpdGhlciBkaXJlY3RseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRocm91Z2ggdGhlIG1haWxpbmcgbGlzdCBuZWVkcyB0byBiZSBhYmxlIHRvIHNhdmUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHkgdGhlbSBkaXJlY3RseSBmcm9tIHlvdXIgZW1haWxzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZXNlIHNjcmlwdHMgaXMgdGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIHNlbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZpcnN0LCBjcmVhdGUgdGhlIHB1bGwgcmVxdWVzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHJ1bnMgdGhlIHNjcmlwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkgaW4gdGhlIGNvbnRyaWIgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50byB3aGljaCB5b3UgcHVzaGVkIHRoZSBjaGFuZ2UsIGFuZCBwcm92aWRlcyBhIHN1YmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGluIHRoZSBjcmVhdGVkIHBhdGNoIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB+L3Bva3kvc2NyaXB0cy9jcmVhdGUtcHVsbC1yZXF1ZXN0IC11IG1ldGEtaW50ZWwtY29udHJpYiAtcyAiVXBkYXRlZCBNYW51YWwgU2VjdGlvbiBSZWZlcmVuY2UgaW4gUkVBRE1FIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIHRoaXMgc2NyaXB0IGZvcm1zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPioucGF0Y2g8L2ZpbGVuYW1lPiBmaWxlcyBpbiBhIGZvbGRlciBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wdWxsLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPlBJRDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uZSBvZiB0aGUgcGF0Y2ggZmlsZXMgaXMgYSBjb3ZlciBsZXR0ZXIuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QmVmb3JlIHJ1bm5pbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmQtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4gc2NyaXB0LCB5b3UgbXVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXQgdGhlIGNvdmVyIGxldHRlciBwYXRjaCB0byBpbnNlcnQgaW5mb3JtYXRpb24gYWJvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGNoYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBlZGl0aW5nIHRoZSBjb3ZlciBsZXR0ZXIsIHNlbmQgdGhlIHB1bGwgcmVxdWVzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHJ1bnMgdGhlIHNjcmlwdCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIHBhdGNoIGRpcmVjdG9yeSBhbmQgZW1haWwgYWRkcmVzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBlbWFpbCBhZGRyZXNzIGlzIGEgbWFpbGluZyBsaXN0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB+L3Bva3kvc2NyaXB0cy9zZW5kLXB1bGwtcmVxdWVzdCAtcCB+L21ldGEtaW50ZWwvcHVsbC0xMDU2NSAtdCBtZXRhLWludGVsQHlvY3RvcHJvamVjdC5vcmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZm9sbG93IHRoZSBwcm9tcHRzIGFzIHRoZSBzY3JpcHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGhlbHAgb24gdXNpbmcgdGhlc2Ugc2NyaXB0cywgc2ltcGx5IHByb3ZpZGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4taDwvZmlsZW5hbWU+IGFyZ3VtZW50IGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBwb2t5L3NjcmlwdHMvY3JlYXRlLXB1bGwtcmVxdWVzdCAtaAorICAgICAkIHBva3kvc2NyaXB0cy9zZW5kLXB1bGwtcmVxdWVzdCAtaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3N1Ym1pdHRpbmctYS1wYXRjaCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlVzaW5nIEVtYWlsIHRvIFN1Ym1pdCBhIFBhdGNoPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHN1Ym1pdCBwYXRjaGVzIHdpdGhvdXQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcmVhdGUtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHNjcmlwdHMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBrZWVwIGluIG1pbmQsIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGlzIHRvIHVzZSB0aGUgc2NyaXB0cy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBjb21wb25lbnRzIGNoYW5nZWQsIHlvdSBuZWVkIHRvIHN1Ym1pdCB0aGUgZW1haWwKKyAgICAgICAgICAgICAgICAgICAgdG8gYSBzcGVjaWZpYyBtYWlsaW5nIGxpc3QuCisgICAgICAgICAgICAgICAgICAgIEZvciBzb21lIGd1aWRhbmNlIG9uIHdoaWNoIG1haWxpbmcgbGlzdCB0byB1c2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZmlndXJpbmctb3V0LXRoZS1tYWlsaW5nLWxpc3QtdG8tdXNlJz5saXN0PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGEgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBhdmFpbGFibGUgbWFpbGluZyBsaXN0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLW1haWxpbmdsaXN0Jz5NYWlsaW5nIExpc3RzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgZ2VuZXJhbCBwcm9jZWR1cmUgb24gaG93IHRvIHN1Ym1pdCBhIHBhdGNoIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgZW1haWwgd2l0aG91dCB1c2luZyB0aGUgc2NyaXB0czoKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIFlvdXIgQ2hhbmdlcyBMb2NhbGx5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFrZSB5b3VyIGNoYW5nZXMgaW4geW91ciBsb2NhbCBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG1ha2Ugc21hbGwsIGNvbnRyb2xsZWQsIGlzb2xhdGVkIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VlcGluZyBjaGFuZ2VzIHNtYWxsIGFuZCBpc29sYXRlZCBhaWRzIHJldmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlcyBtZXJnaW5nL3JlYmFzaW5nIGVhc2llciBhbmQga2VlcHMgdGhlIGNoYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpc3RvcnkgY2xlYW4gc2hvdWxkIGFueW9uZSBuZWVkIHRvIHJlZmVyIHRvIGl0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnV0dXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TdGFnZSBZb3VyIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFnZSB5b3VyIGNoYW5nZXMgYnkgdXNpbmcgdGhlIDxmaWxlbmFtZT5naXQgYWRkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIG9uIGVhY2ggZmlsZSB5b3UgY2hhbmdlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbWl0IFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1pdCB0aGUgY2hhbmdlIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgY29tbWl0IC0tc2lnbm9mZjwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIDxmaWxlbmFtZT4tLXNpZ25vZmY8L2ZpbGVuYW1lPiBvcHRpb24gaWRlbnRpZmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBhcyB0aGUgcGVyc29uIG1ha2luZyB0aGUgY2hhbmdlIGFuZCBhbHNvIHNhdGlzZmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBEZXZlbG9wZXIncyBDZXJ0aWZpY2F0ZSBvZiBPcmlnaW4gKERDTykgc2hvd24gZWFybGllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBmb3JtIGEgY29tbWl0LCB5b3UgbXVzdCBmb2xsb3cgY2VydGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkcyBlc3RhYmxpc2hlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWFraW5nLXN1cmUteW91LWhhdmUtY29ycmVjdC1jb21taXQtaW5mb3JtYXRpb24nPlN0ZXAgMzwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBjb21taXQgaW5mb3JtYXRpb24gdGhhdCBtZWV0cyBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0IG1lc3NhZ2Ugc3RhbmRhcmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Gb3JtYXQgdGhlIENvbW1pdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdCB0aGUgY29tbWl0IGludG8gYW4gZW1haWwgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyBmb3JtYXQgY29tbWl0cywgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBwcm92aWRlIHRoZSBjb21tYW5kLCB5b3UgbXVzdCBpbmNsdWRlIGEgcmV2aXNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0IG9yIGEgbnVtYmVyIG9mIHBhdGNoZXMgYXMgcGFydCBvZiB0aGUgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZWl0aGVyIG9mIHRoZXNlIHR3byBjb21tYW5kcyB0YWtlcyB5b3VyIG1vc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlbnQgc2luZ2xlIGNvbW1pdCBhbmQgZm9ybWF0cyBpdCBhcyBhbiBlbWFpbCBtZXNzYWdlIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGN1cnJlbnQgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgZm9ybWF0LXBhdGNoIC0xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBmb3JtYXQtcGF0Y2ggSEVBRH4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWZ0ZXIgdGhlIGNvbW1hbmQgaXMgcnVuLCB0aGUgY3VycmVudCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhIG51bWJlcmVkIDxmaWxlbmFtZT4ucGF0Y2g8L2ZpbGVuYW1lPiBmaWxlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21taXQuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHByb3ZpZGUgc2V2ZXJhbCBjb21taXRzIGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgdGhlIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIGEgc2VyaWVzIG9mIG51bWJlcmVkIGZpbGVzIGluIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IOKAkyBvbmUgZm9yIGVhY2ggY29tbWl0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgcGF0Y2gsIHlvdSBzaG91bGQgYWxzbyB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tY292ZXI8L2ZpbGVuYW1lPiBvcHRpb24gd2l0aCB0aGUgY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBnZW5lcmF0ZXMgYSBjb3ZlciBsZXR0ZXIgYXMgdGhlIGZpcnN0ICJwYXRjaCIgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2VyaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdGhlbiBlZGl0IHRoZSBjb3ZlciBsZXR0ZXIgdG8gcHJvdmlkZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gZm9yIHRoZSBzZXJpZXMgb2YgcGF0Y2hlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZSA8ZmlsZW5hbWU+R0lUX0ZPUk1BVF9QQVRDSCgxKTwvZmlsZW5hbWU+IGRpc3BsYXllZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSA8ZmlsZW5hbWU+bWFuIGdpdC1mb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgb3Igd2lsbCBiZSBhIGZyZXF1ZW50IGNvbnRyaWJ1dG9yIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IG9yIHRvIE9wZW5FbWJlZGRlZCwgeW91IG1pZ2h0IGNvbnNpZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RpbmcgYSBjb250cmliIGFyZWEgYW5kIHRoZSBuZWNlc3NhcnkgYXNzb2NpYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbXBvcnQgdGhlIEZpbGVzIEludG8gWW91ciBNYWlsIENsaWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydCB0aGUgZmlsZXMgaW50byB5b3VyIG1haWwgY2xpZW50IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHVzZSA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgaGF2ZSB0aGUgcHJvcGVyIEdpdCBwYWNrYWdlcyBpbnN0YWxsZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBob3N0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgVWJ1bnR1LCBEZWJpYW4sIGFuZCBGZWRvcmEgdGhlIHBhY2thZ2UgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdC1lbWFpbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRzIGVtYWlsIGJ5IHVzaW5nIGEgbG9jYWwgb3IgcmVtb3RlIE1haWwgVHJhbnNwb3J0IEFnZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE1UQSkgc3VjaCBhcyA8ZmlsZW5hbWU+bXNtdHA8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZG1haWw8L2ZpbGVuYW1lPiwgb3IgdGhyb3VnaCBhIGRpcmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zbXRwPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBpbiB5b3VyIEdpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5+Ly5naXRjb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgc3VibWl0dGluZyBwYXRjaGVzIHRocm91Z2ggZW1haWwgb25seSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ5IGltcG9ydGFudCB0aGF0IHlvdSBzdWJtaXQgdGhlbSB3aXRob3V0IGFueSB3aGl0ZXNwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgSFRNTCBmb3JtYXR0aW5nIHRoYXQgZWl0aGVyIHlvdSBvciB5b3VyIG1haWxlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJvZHVjZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1haW50YWluZXIgdGhhdCByZWNlaXZlcyB5b3VyIHBhdGNoZXMgbmVlZHMgdG8gYmUgYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNhdmUgYW5kIGFwcGx5IHRoZW0gZGlyZWN0bHkgZnJvbSB5b3VyIGVtYWlscy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGdvb2Qgd2F5IHRvIHZlcmlmeSB0aGF0IHdoYXQgeW91IGFyZSBzZW5kaW5nIHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhYmxlIGJ5IHRoZSBtYWludGFpbmVyIGlzIHRvIGRvIGEgZHJ5IHJ1biBhbmQgc2VuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW0gdG8geW91cnNlbGYgYW5kIHRoZW4gc2F2ZSBhbmQgYXBwbHkgdGhlbSBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWludGFpbmVyIHdvdWxkLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIHNlbmRpbmcgeW91ciBwYXRjaGVzIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWwgc2luY2UgdGhlcmUgaXMgbm8gcmlzayBvZiBjb21wcm9taXNpbmcgd2hpdGVzcGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlLCB3aGljaCBjYW4gb2NjdXIgd2hlbiB5b3UgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBvd24gbWFpbCBjbGllbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgYWxzbyBoYXMgc2V2ZXJhbCBvcHRpb25zIHRoYXQgbGV0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgcmVjaXBpZW50cyBhbmQgcGVyZm9ybSBmdXJ0aGVyIGVkaXRpbmcgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWwgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZSA8ZmlsZW5hbWU+R0lULVNFTkQtRU1BSUwoMSk8L2ZpbGVuYW1lPiBkaXNwbGF5ZWQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1hbiBnaXQtc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3dvcmtpbmctd2l0aC1saWNlbnNlcyc+CisgICAgICAgIDx0aXRsZT5Xb3JraW5nIFdpdGggTGljZW5zZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjbGljZW5zaW5nJz5MaWNlbnNpbmc8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCwKKyAgICAgICAgICAgIG9wZW4gc291cmNlIHByb2plY3RzIGFyZSBvcGVuIHRvIHRoZSBwdWJsaWMgYW5kIHRoZXkKKyAgICAgICAgICAgIGNvbnNlcXVlbnRseSBoYXZlIGRpZmZlcmVudCBsaWNlbnNpbmcgc3RydWN0dXJlcyBpbiBwbGFjZS4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIG1lY2hhbmlzbSBieSB3aGljaCB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgIHRyYWNrcyBjaGFuZ2VzIHRvIGxpY2Vuc2luZyB0ZXh0IGFuZCBjb3ZlcnMgaG93IHRvIG1haW50YWluIG9wZW4KKyAgICAgICAgICAgIHNvdXJjZSBsaWNlbnNlIGNvbXBsaWFuY2UgZHVyaW5nIHlvdXIgcHJvamVjdCdzIGxpZmVjeWNsZS4KKyAgICAgICAgICAgIFRoZSBzZWN0aW9uIGFsc28gZGVzY3JpYmVzIGhvdyB0byBlbmFibGUgY29tbWVyY2lhbGx5IGxpY2Vuc2VkCisgICAgICAgICAgICByZWNpcGVzLCB3aGljaCBieSBkZWZhdWx0IGFyZSBkaXNhYmxlZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJ1c2luZ3Bva3ktY29uZmlndXJpbmctTElDX0ZJTEVTX0NIS1NVTSI+CisgICAgICAgICAgICA8dGl0bGU+VHJhY2tpbmcgTGljZW5zZSBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGxpY2Vuc2Ugb2YgYW4gdXBzdHJlYW0gcHJvamVjdCBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICBJbiBvcmRlciB0byBwcmV2ZW50IHRoZXNlIGNoYW5nZXMgZ29pbmcgdW5ub3RpY2VkLCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDX0ZJTEVTX0NIS1NVTSc+PGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdHJhY2tzIGNoYW5nZXMgdG8gdGhlIGxpY2Vuc2UgdGV4dC4gVGhlIGNoZWNrc3VtcyBhcmUKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgY29uZmlndXJlIHN0ZXAsIGFuZCBpZiB0aGUKKyAgICAgICAgICAgICAgICBjaGVja3N1bXMgZG8gbm90IG1hdGNoLCB0aGUgYnVpbGQgd2lsbCBmYWlsLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0idXNpbmdwb2t5LXNwZWNpZnlpbmctTElDX0ZJTEVTX0NIS1NVTSI+CisgICAgICAgICAgICAgICAgPHRpdGxlPlNwZWNpZnlpbmcgdGhlIDxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT4gVmFyaWFibGU8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGNvbnRhaW5zIGNoZWNrc3VtcyBvZiB0aGUgbGljZW5zZSB0ZXh0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgY29kZSBmb3IgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNwZWNpZnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT14eHh4IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGljZmlsZTEudHh0O2JlZ2lubGluZT01O2VuZGxpbmU9Mjk7bWQ1PXl5eXkgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWNmaWxlMi50eHQ7ZW5kbGluZT01MDttZDU9enp6eiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgLi4uIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZyAiYmVnaW5saW5lIiBhbmQgImVuZGxpbmUiLCByZWFsaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbGluZSBudW1iZXJpbmcgYmVnaW5zIHdpdGggb25lIGFuZCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemVyby4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgdGhlIGluY2x1ZGVkIGxpbmVzIGFyZSBpbmNsdXNpdmUgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMgZml2ZSB0aHJvdWdoIGFuZCBpbmNsdWRpbmcgMjkgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzIGV4YW1wbGUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWNmaWxlMS50eHQ8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBhIGxpY2Vuc2UgY2hlY2sgZmFpbHMsIHRoZSBzZWxlY3RlZCBsaWNlbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgaXMgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgUUEgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBvdXRwdXQsIHlvdSBjYW4gZGV0ZXJtaW5lIHRoZSBleGFjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCBhbmQgZmluaXNoIGZvciB0aGUgbmVlZGVkIGxpY2Vuc2UgdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYXMgdGhlIGRlZmF1bHQgZGlyZWN0b3J5IHdoZW4gc2VhcmNoaW5nIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGxpc3RlZCBpbiA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBlbXBsb3lzIHRoZSBkZWZhdWx0IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhpcyBuZXh0IGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL2xzLmM7YmVnaW5saW5lPTU7ZW5kbGluZT0xNjtcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1kNT1iYjE0ZWQzYzRjZGE1ODNhYmM4NTQwMTMwNGI1Y2Q0ZSIKKyAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS9saWNlbnNlLmh0bWw7bWQ1PTVjOTQ3NjdjZWRiNWQ2OTg3YzkwMmFjODUwZGVkMmM2IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBsaW5lIGxvY2F0ZXMgYSBmaWxlIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1N9L3NyYy9scy5jPC9maWxlbmFtZT4gYW5kIGlzb2xhdGVzIGxpbmVzIGZpdmUKKyAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCAxNiBhcyBsaWNlbnNlIHRleHQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzZWNvbmQgbGluZSByZWZlcnMgdG8gYSBmaWxlIGluCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzCisgICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeSBmb3IgYWxsIHJlY2lwZXMsIHVubGVzcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBzZXQgdG8gIkNMT1NFRCIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0idXNpbmdwb2t5LUxJQ19GSUxFU19DSEtTVU0tZXhwbGFuYXRpb24tb2Ytc3ludGF4Ij4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RXhwbGFuYXRpb24gb2YgU3ludGF4PC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24sIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+IHZhcmlhYmxlIGxpc3RzIGFsbAorICAgICAgICAgICAgICAgICAgICB0aGUgaW1wb3J0YW50IGZpbGVzIHRoYXQgY29udGFpbiB0aGUgbGljZW5zZSB0ZXh0IGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUuCisgICAgICAgICAgICAgICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBjaGVja3N1bSBmb3IgYW4gZW50aXJlIGZpbGUsCisgICAgICAgICAgICAgICAgICAgIG9yIGEgc3BlY2lmaWMgc2VjdGlvbiBvZiBhIGZpbGUgKHNwZWNpZmllZCBieSBiZWdpbm5pbmcgYW5kCisgICAgICAgICAgICAgICAgICAgIGVuZGluZyBsaW5lIG51bWJlcnMgd2l0aCB0aGUgImJlZ2lubGluZSIgYW5kICJlbmRsaW5lIgorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLCByZXNwZWN0aXZlbHkpLgorICAgICAgICAgICAgICAgICAgICBUaGUgbGF0dGVyIGlzIHVzZWZ1bCBmb3Igc291cmNlIGZpbGVzIHdpdGggYSBsaWNlbnNlCisgICAgICAgICAgICAgICAgICAgIG5vdGljZSBoZWFkZXIsIFJFQURNRSBkb2N1bWVudHMsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCB1c2UgdGhlICJiZWdpbmxpbmUiIHBhcmFtZXRlciwgdGhlbiBpdCBpcworICAgICAgICAgICAgICAgICAgICBhc3N1bWVkIHRoYXQgdGhlIHRleHQgYmVnaW5zIG9uIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBTaW1pbGFybHksIGlmIHlvdSBkbyBub3QgdXNlIHRoZSAiZW5kbGluZSIgcGFyYW1ldGVyLAorICAgICAgICAgICAgICAgICAgICBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGxpY2Vuc2UgdGV4dCBlbmRzIHdpdGggdGhlIGxhc3QKKyAgICAgICAgICAgICAgICAgICAgbGluZSBvZiB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlICJtZDUiIHBhcmFtZXRlciBzdG9yZXMgdGhlIG1kNSBjaGVja3N1bSBvZiB0aGUgbGljZW5zZQorICAgICAgICAgICAgICAgICAgICB0ZXh0LgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUgbGljZW5zZSB0ZXh0IGNoYW5nZXMgaW4gYW55IHdheSBhcyBjb21wYXJlZCB0bworICAgICAgICAgICAgICAgICAgICB0aGlzIHBhcmFtZXRlciB0aGVuIGEgbWlzbWF0Y2ggb2NjdXJzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIG1pc21hdGNoIHRyaWdnZXJzIGEgYnVpbGQgZmFpbHVyZSBhbmQgbm90aWZpZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGRldmVsb3Blci4KKyAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIHJldmlldyBhbmQgYWRkcmVzcworICAgICAgICAgICAgICAgICAgICB0aGUgbGljZW5zZSB0ZXh0IGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIEFsc28gbm90ZSB0aGF0IGlmIGEgbWlzbWF0Y2ggb2NjdXJzIGR1cmluZyB0aGUgYnVpbGQsCisgICAgICAgICAgICAgICAgICAgIHRoZSBjb3JyZWN0IG1kNSBjaGVja3N1bSBpcyBwbGFjZWQgaW4gdGhlIGJ1aWxkIGxvZyBhbmQKKyAgICAgICAgICAgICAgICAgICAgY2FuIGJlIGVhc2lseSBjb3BpZWQgdG8gdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlcmUgaXMgbm8gbGltaXQgdG8gaG93IG1hbnkgZmlsZXMgeW91IGNhbiBzcGVjaWZ5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBHZW5lcmFsbHksIGhvd2V2ZXIsIGV2ZXJ5IHByb2plY3QgcmVxdWlyZXMgYSBmZXcKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhdGlvbnMgZm9yIGxpY2Vuc2UgdHJhY2tpbmcuCisgICAgICAgICAgICAgICAgICAgIE1hbnkgcHJvamVjdHMgaGF2ZSBhICJDT1BZSU5HIiBmaWxlIHRoYXQgc3RvcmVzIHRoZQorICAgICAgICAgICAgICAgICAgICBsaWNlbnNlIGluZm9ybWF0aW9uIGZvciBhbGwgdGhlIHNvdXJjZSBjb2RlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIGFsbG93cyB5b3UgdG8ganVzdCB0cmFjayB0aGUgIkNPUFlJTkciCisgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgbG9uZyBhcyBpdCBpcyBrZXB0IHVwIHRvIGRhdGUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXBzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc3BlY2lmeSBhbiBlbXB0eSBvciBpbnZhbGlkICJtZDUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJucyBhbiBtZDUgbWlzLW1hdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGFuZCBkaXNwbGF5cyB0aGUgY29ycmVjdCAibWQ1IiBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvcnJlY3QgcGFyYW1ldGVyIGlzIGFsc28gY2FwdHVyZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGxvZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgd2hvbGUgZmlsZSBjb250YWlucyBvbmx5IGxpY2Vuc2UgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGRvIG5vdCBuZWVkIHRvIHVzZSB0aGUgImJlZ2lubGluZSIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZGxpbmUiIHBhcmFtZXRlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJlbmFibGluZy1jb21tZXJjaWFsbHktbGljZW5zZWQtcmVjaXBlcyI+CisgICAgICAgICAgICA8dGl0bGU+RW5hYmxpbmcgQ29tbWVyY2lhbGx5IExpY2Vuc2VkIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkaXNhYmxlcworICAgICAgICAgICAgICAgIGNvbXBvbmVudHMgdGhhdCBoYXZlIGNvbW1lcmNpYWwgb3Igb3RoZXIgc3BlY2lhbCBsaWNlbnNpbmcKKyAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMuCisgICAgICAgICAgICAgICAgU3VjaCByZXF1aXJlbWVudHMgYXJlIGRlZmluZWQgb24gYQorICAgICAgICAgICAgICAgIHJlY2lwZS1ieS1yZWNpcGUgYmFzaXMgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRV9GTEFHUyc+PGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgZGVmaW5pdGlvbiBpbiB0aGUgYWZmZWN0ZWQgcmVjaXBlLgorICAgICAgICAgICAgICAgIEZvciBpbnN0YW5jZSwgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXVnbHk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHJlY2lwZSBjb250YWlucyB0aGUgZm9sbG93aW5nIHN0YXRlbWVudDoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSGVyZSBpcyBhIHNsaWdodGx5IG1vcmUgY29tcGxpY2F0ZWQgZXhhbXBsZSB0aGF0IGNvbnRhaW5zIGJvdGgKKyAgICAgICAgICAgICAgICBhbiBleHBsaWNpdCByZWNpcGUgbmFtZSBhbmQgdmVyc2lvbiAoYWZ0ZXIgdmFyaWFibGUgZXhwYW5zaW9uKToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJQ0VOU0VfRkxBR1MgPSAibGljZW5zZV8ke1BOfV8ke1BWfSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisJICAgICAgICAgICAgSW4gb3JkZXIgZm9yIGEgY29tcG9uZW50IHJlc3RyaWN0ZWQgYnkgYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT4gZGVmaW5pdGlvbiB0byBiZSBlbmFibGVkIGFuZAorICAgICAgICAgICAgICAgIGluY2x1ZGVkIGluIGFuIGltYWdlLCBpdCBuZWVkcyB0byBoYXZlIGEgbWF0Y2hpbmcgZW50cnkgaW4gdGhlCisgICAgICAgICAgICAgICAgZ2xvYmFsCisJICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUJz48ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIGEgdmFyaWFibGUgdHlwaWNhbGx5IGRlZmluZWQgaW4geW91cgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gZW5hYmxlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGx1Z2lucy11Z2x5PC9maWxlbmFtZT4KKwkgICAgICAgICAgICBwYWNrYWdlLCB5b3UgY291bGQgYWRkIGVpdGhlciB0aGUgc3RyaW5nCisJICAgICAgICAgICAgImNvbW1lcmNpYWxfZ3N0LXBsdWdpbnMtdWdseSIgb3IgdGhlIG1vcmUgZ2VuZXJhbCBzdHJpbmcKKwkgICAgICAgICAgICAiY29tbWVyY2lhbCIgdG8gPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdsaWNlbnNlLWZsYWctbWF0Y2hpbmcnPkxpY2Vuc2UgRmxhZyBNYXRjaGluZzwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgYSBmdWxsCisgICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gb2YgaG93IDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT4gbWF0Y2hpbmcKKyAgICAgICAgICAgICAgICB3b3Jrcy4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDRU5TRV9GTEFHU19XSElURUxJU1QgPSAiY29tbWVyY2lhbF9nc3QtcGx1Z2lucy11Z2x5IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKwkgICAgICAgICAgICBMaWtld2lzZSwgdG8gYWRkaXRpb25hbGx5IGVuYWJsZSB0aGUgcGFja2FnZSBidWlsdCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIHJlY2lwZSBjb250YWluaW5nCisJICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1MgPSAibGljZW5zZV8ke1BOfV8ke1BWfSI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICBhbmQgYXNzdW1pbmcgdGhhdCB0aGUgYWN0dWFsIHJlY2lwZSBuYW1lIHdhcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lbWdkXzEuMTAuYmI8L2ZpbGVuYW1lPiwgdGhlIGZvbGxvd2luZyBzdHJpbmcgd291bGQKKyAgICAgICAgICAgICAgICBlbmFibGUgdGhhdCBwYWNrYWdlIGFzIHdlbGwgYXMgdGhlIG9yaWdpbmFsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdzdC1wbHVnaW5zLXVnbHk8L2ZpbGVuYW1lPiBwYWNrYWdlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDRU5TRV9GTEFHU19XSElURUxJU1QgPSAiY29tbWVyY2lhbF9nc3QtcGx1Z2lucy11Z2x5IGxpY2Vuc2VfZW1nZF8xLjEwIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKwkgICAgICAgICAgICBBcyBhIGNvbnZlbmllbmNlLCB5b3UgZG8gbm90IG5lZWQgdG8gc3BlY2lmeSB0aGUgY29tcGxldGUKKyAgICAgICAgICAgICAgICBsaWNlbnNlIHN0cmluZyBpbiB0aGUgd2hpdGVsaXN0IGZvciBldmVyeSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIGFuIGFiYnJldmlhdGVkIGZvcm0sIHdoaWNoIGNvbnNpc3RzCisgICAgICAgICAgICAgICAgb2YganVzdCB0aGUgZmlyc3QgcG9ydGlvbiBvciBwb3J0aW9ucyBvZiB0aGUgbGljZW5zZQorICAgICAgICAgICAgICAgIHN0cmluZyBiZWZvcmUgdGhlIGluaXRpYWwgdW5kZXJzY29yZSBjaGFyYWN0ZXIgb3IgY2hhcmFjdGVycy4KKyAgICAgICAgICAgICAgICBBIHBhcnRpYWwgc3RyaW5nIHdpbGwgbWF0Y2ggYW55IGxpY2Vuc2UgdGhhdCBjb250YWlucyB0aGUKKyAgICAgICAgICAgICAgICBnaXZlbiBzdHJpbmcgYXMgdGhlIGZpcnN0IHBvcnRpb24gb2YgaXRzIGxpY2Vuc2UuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgd2hpdGVsaXN0IHN0cmluZyB3aWxsIGFsc28gbWF0Y2gKKyAgICAgICAgICAgICAgICBib3RoIG9mIHRoZSBwYWNrYWdlcyBwcmV2aW91c2x5IG1lbnRpb25lZCBhcyB3ZWxsIGFzIGFueSBvdGhlcgorICAgICAgICAgICAgICAgIHBhY2thZ2VzIHRoYXQgaGF2ZSBsaWNlbnNlcyBzdGFydGluZyB3aXRoICJjb21tZXJjaWFsIiBvcgorICAgICAgICAgICAgICAgICJsaWNlbnNlIi4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUID0gImNvbW1lcmNpYWwgbGljZW5zZSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJsaWNlbnNlLWZsYWctbWF0Y2hpbmciPgorICAgICAgICAgICAgICAgIDx0aXRsZT5MaWNlbnNlIEZsYWcgTWF0Y2hpbmc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisJCSAgICAgICAgICAgIExpY2Vuc2UgZmxhZyBtYXRjaGluZyBhbGxvd3MgeW91IHRvIGNvbnRyb2wgd2hhdCByZWNpcGVzCisgICAgICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluY2x1ZGVzIGluIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgRnVuZGFtZW50YWxseSwgdGhlIGJ1aWxkIHN5c3RlbSBhdHRlbXB0cyB0byBtYXRjaAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IHN0cmluZ3MgZm91bmQgaW4gcmVjaXBlcworICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0IDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ3MgZm91bmQgaW4gdGhlIHdoaXRlbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgQSBtYXRjaCBjYXVzZXMgdGhlIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgcmVjaXBlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCwgd2hpbGUgZmFpbHVyZSB0byBmaW5kIGEgbWF0Y2ggY2F1c2VzIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gdG8gZXhjbHVkZSBhIHJlY2lwZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgbGljZW5zZSBmbGFnIG1hdGNoaW5nIGlzIHNpbXBsZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdW5kZXJzdGFuZGluZyBzb21lIGNvbmNlcHRzIHdpbGwgaGVscCB5b3UKKyAgICAgICAgICAgICAgICAgICAgY29ycmVjdGx5IGFuZCBlZmZlY3RpdmVseSB1c2UgbWF0Y2hpbmcuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlZm9yZSBhIGZsYWcKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBieSBhIHBhcnRpY3VsYXIgcmVjaXBlIGlzIHRlc3RlZCBhZ2FpbnN0IHRoZQorICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBvZiB0aGUgd2hpdGVsaXN0LCB0aGUgZXhwYW5kZWQgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fJHtQTn08L2ZpbGVuYW1lPiBpcyBhcHBlbmRlZCB0byB0aGUgZmxhZy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBleHBhbnNpb24gbWFrZXMgZWFjaAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IHZhbHVlIHJlY2lwZS1zcGVjaWZpYy4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgZXhwYW5zaW9uLCB0aGUgc3RyaW5nIGlzIHRoZW4gbWF0Y2hlZCBhZ2FpbnN0IHRoZQorICAgICAgICAgICAgICAgICAgICB3aGl0ZWxpc3QuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHNwZWNpZnlpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbiByZWNpcGUgImZvbyIsIGZvciBleGFtcGxlLCByZXN1bHRzIGluIHRoZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiJjb21tZXJjaWFsX2ZvbyI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQW5kLCB0byBjcmVhdGUgYSBtYXRjaCwgdGhhdCBzdHJpbmcgbXVzdCBhcHBlYXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIHdoaXRlbGlzdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSnVkaWNpb3VzIHVzZSBvZiB0aGUgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzdHJpbmdzIGFuZCB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgYSBsb3Qgb2YgZmxleGliaWxpdHkgZm9yIGluY2x1ZGluZyBvciBleGNsdWRpbmcKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBiYXNlZCBvbiBsaWNlbnNpbmcuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIGJyb2FkZW4gdGhlIG1hdGNoaW5nIGNhcGFiaWxpdGllcyBieQorICAgICAgICAgICAgICAgICAgICB1c2luZyBsaWNlbnNlIGZsYWdzIHN0cmluZyBzdWJzZXRzIGluIHRoZSB3aGl0ZWxpc3QuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZyBhIHN0cmluZyBzdWJzZXQsIGJlIHN1cmUgdG8gdXNlIHRoZSBwYXJ0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZXhwYW5kZWQgc3RyaW5nIHRoYXQgcHJlY2VkZXMgdGhlIGFwcGVuZGVkCisgICAgICAgICAgICAgICAgICAgICAgICB1bmRlcnNjb3JlIGNoYXJhY3RlciAoZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVzZXRoaXNwYXJ0XzEuMzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVzZXRoaXNwYXJ0XzEuNDwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzaW1wbHkgc3BlY2lmeWluZyB0aGUgc3RyaW5nICJjb21tZXJjaWFsIiBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgd2hpdGVsaXN0IG1hdGNoZXMgYW55IGV4cGFuZGVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT4gZGVmaW5pdGlvbiB0aGF0IHN0YXJ0cworICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBzdHJpbmcgImNvbW1lcmNpYWwiIHN1Y2ggYXMgImNvbW1lcmNpYWxfZm9vIiBhbmQKKyAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfYmFyIiwgd2hpY2ggYXJlIHRoZSBzdHJpbmdzIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgZm9yIGh5cG90aGV0aWNhbCByZWNpcGVzIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICJmb28iIGFuZCAiYmFyIiBhc3N1bWluZyB0aG9zZSByZWNpcGVzIHNpbXBseSBzcGVjaWZ5IHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRodXMsIHlvdSBjYW4gY2hvb3NlIHRvIGV4aGF1c3RpdmVseQorICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdGUgZWFjaCBsaWNlbnNlIGZsYWcgaW4gdGhlIHdoaXRlbGlzdCBhbmQKKyAgICAgICAgICAgICAgICAgICAgYWxsb3cgb25seSBzcGVjaWZpYyByZWNpcGVzIGludG8gdGhlIGltYWdlLCBvcgorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSBhIHN0cmluZyBzdWJzZXQgdGhhdCBjYXVzZXMgYSBicm9hZGVyIHJhbmdlIG9mCisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgdG8gYWxsb3cgYSByYW5nZSBvZiByZWNpcGVzIGludG8gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNjaGVtZSB3b3JrcyBldmVuIGlmIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IHN0cmluZyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgIGhhcyA8ZmlsZW5hbWU+XyR7UE59PC9maWxlbmFtZT4gYXBwZW5kZWQuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgYnVpbGQgc3lzdGVtIHR1cm5zIHRoZSBsaWNlbnNlIGZsYWcKKyAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfMS4yX2ZvbyIgaW50byAiY29tbWVyY2lhbF8xLjJfZm9vX2ZvbyIgYW5kCisgICAgICAgICAgICAgICAgICAgIHdvdWxkIG1hdGNoIGJvdGggdGhlIGdlbmVyYWwgImNvbW1lcmNpYWwiIGFuZCB0aGUgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfMS4yX2ZvbyIgc3RyaW5ncyBmb3VuZCBpbiB0aGUgd2hpdGVsaXN0LCBhcworICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBvdGhlciBzY2VuYXJpb3M6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzcGVjaWZ5IGEgdmVyc2lvbmVkIHN0cmluZyBpbiB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyAiY29tbWVyY2lhbF9mb29fMS4yIiBpbiBhICJmb28iIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGV4cGFuZHMgdGhpcyBzdHJpbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWVyY2lhbF9mb29fMS4yX2ZvbyIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZSB0aGlzIGxpY2Vuc2UgZmxhZyB3aXRoIGEgd2hpdGVsaXN0IHRoYXQgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0cmluZyAiY29tbWVyY2lhbCIgYW5kIHlvdSBtYXRjaCB0aGUgZmxhZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsb25nIHdpdGggYW55IG90aGVyIGZsYWcgdGhhdCBzdGFydHMgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgImNvbW1lcmNpYWwiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuZGVyIHRoZSBzYW1lIGNpcmN1bXN0YW5jZXMsIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfZm9vIiBpbiB0aGUgd2hpdGVsaXN0IGFuZCB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gbm90IG9ubHkgbWF0Y2hlcyAiY29tbWVyY2lhbF9mb29fMS4yIiBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNvIG1hdGNoZXMgYW55IGxpY2Vuc2UgZmxhZyB3aXRoIHRoZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWVyY2lhbF9mb28iLCByZWdhcmRsZXNzIG9mIHRoZSB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYmUgdmVyeSBzcGVjaWZpYyBhbmQgdXNlIGJvdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBhbmQgdmVyc2lvbiBwYXJ0cyBpbiB0aGUgd2hpdGVsaXN0IChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfZm9vXzEuMiIpIHRvIHNwZWNpZmljYWxseSBtYXRjaCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbmVkIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ib3RoZXItdmFyaWFibGVzLXJlbGF0ZWQtdG8tY29tbWVyY2lhbC1saWNlbnNlcyI+CisgICAgICAgICAgICAgICAgPHRpdGxlPk90aGVyIFZhcmlhYmxlcyBSZWxhdGVkIHRvIENvbW1lcmNpYWwgTGljZW5zZXM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE90aGVyIGhlbHBmdWwgdmFyaWFibGVzIHJlbGF0ZWQgdG8gY29tbWVyY2lhbAorICAgICAgICAgICAgICAgICAgICBsaWNlbnNlIGhhbmRsaW5nIGV4aXN0IGFuZCBhcmUgZGVmaW5lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmM8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIENPTU1FUkNJQUxfQVVESU9fUExVR0lOUyA/PSAiIgorICAgICBDT01NRVJDSUFMX1ZJREVPX1BMVUdJTlMgPz0gIiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBlbmFibGUgdGhlc2UgY29tcG9uZW50cywgeW91IGNhbiBkbyBzbyBieQorICAgICAgICAgICAgICAgICAgICBtYWtpbmcgc3VyZSB5b3UgaGF2ZSBzdGF0ZW1lbnRzIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIENPTU1FUkNJQUxfQVVESU9fUExVR0lOUyA9ICJnc3QtcGx1Z2lucy11Z2x5LW1hZCBcCisgICAgICAgIGdzdC1wbHVnaW5zLXVnbHktbXBlZ2F1ZGlvcGFyc2UiCisgICAgIENPTU1FUkNJQUxfVklERU9fUExVR0lOUyA9ICJnc3QtcGx1Z2lucy11Z2x5LW1wZWcyZGVjIFwKKyAgICAgICAgZ3N0LXBsdWdpbnMtdWdseS1tcGVnc3RyZWFtIGdzdC1wbHVnaW5zLWJhZC1tcGVndmlkZW9wYXJzZSIKKyAgICAgTElDRU5TRV9GTEFHU19XSElURUxJU1QgPSAiY29tbWVyY2lhbF9nc3QtcGx1Z2lucy11Z2x5IGNvbW1lcmNpYWxfZ3N0LXBsdWdpbnMtYmFkIGNvbW1lcmNpYWxfcW1tcCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHlvdSBjb3VsZCBhbHNvIGNyZWF0ZSBhIG1hdGNoaW5nIHdoaXRlbGlzdAorICAgICAgICAgICAgICAgICAgICBmb3IgdGhvc2UgY29tcG9uZW50cyB1c2luZyB0aGUgbW9yZSBnZW5lcmFsICJjb21tZXJjaWFsIgorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgd2hpdGVsaXN0LCBidXQgdGhhdCB3b3VsZCBhbHNvIGVuYWJsZSBhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIG90aGVyIHBhY2thZ2VzIHdpdGggPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb250YWluaW5nICJjb21tZXJjaWFsIiwgd2hpY2ggeW91IG1heSBvciBtYXkgbm90IHdhbnQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDRU5TRV9GTEFHU19XSElURUxJU1QgPSAiY29tbWVyY2lhbCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5aW5nIGF1ZGlvIGFuZCB2aWRlbyBwbHVnLWlucyBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09NTUVSQ0lBTF9BVURJT19QTFVHSU5TPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT01NRVJDSUFMX1ZJREVPX1BMVUdJTlM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzCisgICAgICAgICAgICAgICAgICAgIChhbG9uZyB3aXRoIHRoZSBlbmFibGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPikgaW5jbHVkZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHBsdWctaW5zIG9yIGNvbXBvbmVudHMgaW50byBidWlsdCBpbWFnZXMsIHRodXMgYWRkaW5nCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIG1lZGlhIGZvcm1hdHMgb3IgY29tcG9uZW50cy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWFpbnRhaW5pbmctb3Blbi1zb3VyY2UtbGljZW5zZS1jb21wbGlhbmNlLWR1cmluZy15b3VyLXByb2R1Y3RzLWxpZmVjeWNsZSc+CisgICAgICAgICAgICA8dGl0bGU+TWFpbnRhaW5pbmcgT3BlbiBTb3VyY2UgTGljZW5zZSBDb21wbGlhbmNlIER1cmluZyBZb3VyIFByb2R1Y3QncyBMaWZlY3ljbGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPbmUgb2YgdGhlIGNvbmNlcm5zIGZvciBhIGRldmVsb3BtZW50IG9yZ2FuaXphdGlvbiB1c2luZyBvcGVuIHNvdXJjZQorICAgICAgICAgICAgICAgIHNvZnR3YXJlIGlzIGhvdyB0byBtYWludGFpbiBjb21wbGlhbmNlIHdpdGggdmFyaW91cyBvcGVuIHNvdXJjZQorICAgICAgICAgICAgICAgIGxpY2Vuc2luZyBkdXJpbmcgdGhlIGxpZmVjeWNsZSBvZiB0aGUgcHJvZHVjdC4KKyAgICAgICAgICAgICAgICBXaGlsZSB0aGlzIHNlY3Rpb24gZG9lcyBub3QgcHJvdmlkZSBsZWdhbCBhZHZpY2Ugb3IKKyAgICAgICAgICAgICAgICBjb21wcmVoZW5zaXZlbHkgY292ZXIgYWxsIHNjZW5hcmlvcywgaXQgZG9lcworICAgICAgICAgICAgICAgIHByZXNlbnQgbWV0aG9kcyB0aGF0IHlvdSBjYW4gdXNlIHRvCisgICAgICAgICAgICAgICAgYXNzaXN0IHlvdSBpbiBtZWV0aW5nIHRoZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBkdXJpbmcgYSBzb2Z0d2FyZQorICAgICAgICAgICAgICAgIHJlbGVhc2UuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdpdGggaHVuZHJlZHMgb2YgZGlmZmVyZW50IG9wZW4gc291cmNlIGxpY2Vuc2VzIHRoYXQgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgUHJvamVjdCB0cmFja3MsIGl0IGlzIGRpZmZpY3VsdCB0byBrbm93IHRoZSByZXF1aXJlbWVudHMgb2YgZWFjaAorICAgICAgICAgICAgICAgIGFuZCBldmVyeSBsaWNlbnNlLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIG1ham9yIEZMT1NTIGxpY2Vuc2VzIGNhbiBiZWdpbgorICAgICAgICAgICAgICAgIHRvIGJlIGNvdmVyZWQgYnkKKyAgICAgICAgICAgICAgICBhc3N1bWluZyB0aGF0IHRocmVlIG1haW4gYXJlYXMgb2YgY29uY2VybiBleGlzdDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U291cmNlIGNvZGUgbXVzdCBiZSBwcm92aWRlZC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkxpY2Vuc2UgdGV4dCBmb3IgdGhlIHNvZnR3YXJlIG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q29tcGlsYXRpb24gc2NyaXB0cyBhbmQgbW9kaWZpY2F0aW9ucyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlIG11c3QgYmUgcHJvdmlkZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICBUaGVyZSBhcmUgb3RoZXIgcmVxdWlyZW1lbnRzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhlc2UKKyAgICAgICAgICAgICAgICB0aHJlZSBhbmQgdGhlIG1ldGhvZHMgZGVzY3JpYmVkIGluIHRoaXMgc2VjdGlvbgorICAgICAgICAgICAgICAgIChlLmcuIHRoZSBtZWNoYW5pc20gdGhyb3VnaCB3aGljaCBzb3VyY2UgY29kZSBpcyBkaXN0cmlidXRlZCkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGRpZmZlcmVudCBvcmdhbml6YXRpb25zIGhhdmUgZGlmZmVyZW50IG1ldGhvZHMgb2YgY29tcGx5aW5nIHdpdGgKKyAgICAgICAgICAgICAgICBvcGVuIHNvdXJjZSBsaWNlbnNpbmcsIHRoaXMgc2VjdGlvbiBpcyBub3QgbWVhbnQgdG8gaW1wbHkgdGhhdAorICAgICAgICAgICAgICAgIHRoZXJlIGlzIG9ubHkgb25lIHNpbmdsZSB3YXkgdG8gbWVldCB5b3VyIGNvbXBsaWFuY2Ugb2JsaWdhdGlvbnMsCisgICAgICAgICAgICAgICAgYnV0IHJhdGhlciB0byBkZXNjcmliZSBvbmUgbWV0aG9kIG9mIGFjaGlldmluZyBjb21wbGlhbmNlLgorICAgICAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBtZXRob2RzIHN1cHBvcnRlZCB0byBtZWV0IHRoZQorICAgICAgICAgICAgICAgIHByZXZpb3VzbHkgbWVudGlvbmVkIHRocmVlIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSB0YWtlIHN0ZXBzIHRvIG1lZXQgdGhlc2UgcmVxdWlyZW1lbnRzLAorICAgICAgICAgICAgICAgIGFuZCBwcmlvciB0byByZWxlYXNpbmcgaW1hZ2VzLCBzb3VyY2VzLCBhbmQgdGhlIGJ1aWxkIHN5c3RlbSwKKyAgICAgICAgICAgICAgICB5b3Ugc2hvdWxkIGF1ZGl0IGFsbCBhcnRpZmFjdHMgdG8gZW5zdXJlIGNvbXBsZXRlbmVzcy4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZ2VuZXJhdGVzIGEgbGljZW5zZSBtYW5pZmVzdCBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UgY3JlYXRpb24gdGhhdCBpcyBsb2NhdGVkCisgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT4ke0RFUExPWV9ESVJ9L2xpY2Vuc2VzLzxyZXBsYWNlYWJsZT5pbWFnZV9uYW1lLWRhdGVzdGFtcDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gYXNzaXN0IHdpdGggYW55IGF1ZGl0cy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdwcm92aWRpbmctdGhlLXNvdXJjZS1jb2RlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+UHJvdmlkaW5nIHRoZSBTb3VyY2UgQ29kZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29tcGxpYW5jZSBhY3Rpdml0aWVzIHNob3VsZCBiZWdpbiBiZWZvcmUgeW91IGdlbmVyYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBzaG91bGQgbG9vayBhdCBpcyB0aGUgcmVxdWlyZW1lbnQgdGhhdAorICAgICAgICAgICAgICAgICAgICB0b3BzIHRoZSBsaXN0IGZvciBtb3N0IGNvbXBsaWFuY2UgZ3JvdXBzIC0gcHJvdmlkaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGhhcyBhIGZldyB3YXlzIG9mIG1lZXRpbmcgdGhpcworICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25lIG9mIHRoZSBlYXNpZXN0IHdheXMgdG8gbWVldCB0aGlzIHJlcXVpcmVtZW50IGlzCisgICAgICAgICAgICAgICAgICAgIHRvIHByb3ZpZGUgdGhlIGVudGlyZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtZXRob2QsIGhvd2V2ZXIsIGhhcyBhIGZldyBpc3N1ZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtb3N0IG9idmlvdXMgaXMgdGhlIHNpemUgb2YgdGhlIGRpcmVjdG9yeSBzaW5jZSBpdCBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICBhbGwgc291cmNlcyB1c2VkIGluIHRoZSBidWlsZCBhbmQgbm90IGp1c3QgdGhlIHNvdXJjZSB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgIHRoZSByZWxlYXNlZCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgSXQgd2lsbCBpbmNsdWRlIHRvb2xjaGFpbiBzb3VyY2UsIGFuZCBvdGhlciBhcnRpZmFjdHMsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIHlvdSB3b3VsZCBub3QgZ2VuZXJhbGx5IHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBtb3JlIHNlcmlvdXMgaXNzdWUgZm9yIG1vc3QgY29tcGFuaWVzIGlzIGFjY2lkZW50YWwKKyAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSBvZiBwcm9wcmlldGFyeSBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgYW4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYXJjaGl2ZXInPjxmaWxlbmFtZT5hcmNoaXZlcjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgdG8gaGVscCBhdm9pZCBzb21lIG9mIHRoZXNlIGNvbmNlcm5zLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGVtcGxveSA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcmNoaXZlcjwvZmlsZW5hbWU+IGNsYXNzLCB5b3UgbmVlZCB0byBkZWNpZGUgaG93CisgICAgICAgICAgICAgICAgICAgIHlvdSBjaG9vc2UgdG8gcHJvdmlkZSBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzb3VyY2UgPGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT4gY2xhc3MgY2FuIGdlbmVyYXRlCisgICAgICAgICAgICAgICAgICAgIHRhcmJhbGxzIGFuZCBTUlBNcyBhbmQgY2FuIGNyZWF0ZSB0aGVtIHdpdGggdmFyaW91cyBsZXZlbHMgb2YKKyAgICAgICAgICAgICAgICAgICAgY29tcGxpYW5jZSBpbiBtaW5kLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBPbmUgd2F5IG9mIGRvaW5nIHRoaXMgKGJ1dCBjZXJ0YWlubHkgbm90IHRoZSBvbmx5IHdheSkgaXMgdG8KKyAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSBqdXN0IHRoZSBzb3VyY2UgYXMgYSB0YXJiYWxsLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRvIHRoaXMgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBJTkhFUklUICs9ICJhcmNoaXZlciIKICAgICAgQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGNyZWF0aW9uIG9mIHlvdXIgaW1hZ2UsIHRoZSBzb3VyY2UgZnJvbSBhbGwKLSAgICAgICAgICAgICAgICByZWNpcGVzIHRoYXQgZGVwbG95IHBhY2thZ2VzIHRvIHRoZSBpbWFnZSBpcyBwbGFjZWQgd2l0aGluCi0gICAgICAgICAgICAgICAgc3ViZGlyZWN0b3JpZXMgb2YKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQTE9ZX0RJUi9zb3VyY2VzPC9maWxlbmFtZT4gYmFzZWQgb24gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ0VOU0UnPjxmaWxlbmFtZT5MSUNFTlNFPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIGZvciBlYWNoIHJlY2lwZS4KLSAgICAgICAgICAgICAgICBSZWxlYXNpbmcgdGhlIGVudGlyZSBkaXJlY3RvcnkgZW5hYmxlcyB5b3UgdG8gY29tcGx5IHdpdGgKLSAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMgY29uY2VybmluZyBwcm92aWRpbmcgdGhlIHVubW9kaWZpZWQgc291cmNlLgotICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIHNpemUgb2YgdGhlIGRpcmVjdG9yeSBjYW4KLSAgICAgICAgICAgICAgICBnZXQgbGFyZ2UuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSBjcmVhdGlvbiBvZiB5b3VyIGltYWdlLCB0aGUgc291cmNlIGZyb20gYWxsCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgdGhhdCBkZXBsb3kgcGFja2FnZXMgdG8gdGhlIGltYWdlIGlzIHBsYWNlZCB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3JpZXMgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRFUExPWV9ESVIvc291cmNlczwvZmlsZW5hbWU+IGJhc2VkIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgUmVsZWFzaW5nIHRoZSBlbnRpcmUgZGlyZWN0b3J5IGVuYWJsZXMgeW91IHRvIGNvbXBseSB3aXRoCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cyBjb25jZXJuaW5nIHByb3ZpZGluZyB0aGUgdW5tb2RpZmllZCBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIHNpemUgb2YgdGhlIGRpcmVjdG9yeSBjYW4KKyAgICAgICAgICAgICAgICAgICAgZ2V0IGxhcmdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQSB3YXkgdG8gaGVscCBtaXRpZ2F0ZSB0aGUgc2l6ZSBpc3N1ZSBpcyB0byBvbmx5IHJlbGVhc2UKLSAgICAgICAgICAgICAgICB0YXJiYWxscyBmb3IgbGljZW5zZXMgdGhhdCByZXF1aXJlIHRoZSByZWxlYXNlIG9mCi0gICAgICAgICAgICAgICAgc291cmNlLgotICAgICAgICAgICAgICAgIExldCB1cyBhc3N1bWUgeW91IGFyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIEdQTCBjb2RlIGFzCi0gICAgICAgICAgICAgICAgaWRlbnRpZmllZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgc2NyaXB0OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSB3YXkgdG8gaGVscCBtaXRpZ2F0ZSB0aGUgc2l6ZSBpc3N1ZSBpcyB0byBvbmx5IHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgdGFyYmFsbHMgZm9yIGxpY2Vuc2VzIHRoYXQgcmVxdWlyZSB0aGUgcmVsZWFzZSBvZgorICAgICAgICAgICAgICAgICAgICBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIExldCB1cyBhc3N1bWUgeW91IGFyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIEdQTCBjb2RlIGFzCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZWQgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIHNjcmlwdDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAjIFNjcmlwdCB0byBhcmNoaXZlIGEgc3Vic2V0IG9mIHBhY2thZ2VzIG1hdGNoaW5nIHNwZWNpZmljIGxpY2Vuc2UocykKICAgICAgIyBTb3VyY2UgYW5kIGxpY2Vuc2UgZmlsZXMgYXJlIGNvcGllZCBpbnRvIHN1YiBmb2xkZXJzIG9mIHBhY2thZ2UgZm9sZGVyCiAgICAgICMgTXVzdCBiZSBydW4gZnJvbSBidWlsZCBmb2xkZXIKQEAgLTEwNTE1LDk2ICsxNDk0MSw5NyBAQAogICAgICAgICAgICAgICBjcCB0bXAvZGVwbG95L2xpY2Vuc2VzLyRwLyogJHNyY19yZWxlYXNlX2Rpci8kcC9saWNlbnNlIDI+IC9kZXYvbnVsbAogICAgICAgICAgICBmaQogICAgICAgICBkb25lCi0gICAgIGRvbmUgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHlvdSBjb3VsZCBjcmVhdGUgYSB0YXJiYWxsIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdwbF9zb3VyY2VfcmVsZWFzZTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQKLSAgICAgICAgICAgICAgICBwcm92aWRlIHRoYXQgdG8gdGhlIGVuZCB1c2VyLgotICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHdvdWxkIGJlIGEgc3RlcCB0b3dhcmQgYWNoaWV2aW5nIGNvbXBsaWFuY2UKLSAgICAgICAgICAgICAgICB3aXRoIHNlY3Rpb24gM2Egb2YgR1BMdjIgYW5kIHdpdGggc2VjdGlvbiA2IG9mIEdQTHYzLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+CisgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgY291bGQgY3JlYXRlIGEgdGFyYmFsbCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3BsX3NvdXJjZV9yZWxlYXNlPC9maWxlbmFtZT4gZGlyZWN0b3J5IGFuZAorICAgICAgICAgICAgICAgICAgICBwcm92aWRlIHRoYXQgdG8gdGhlIGVuZCB1c2VyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCB3b3VsZCBiZSBhIHN0ZXAgdG93YXJkIGFjaGlldmluZyBjb21wbGlhbmNlCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VjdGlvbiAzYSBvZiBHUEx2MiBhbmQgd2l0aCBzZWN0aW9uIDYgb2YgR1BMdjMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSdwcm92aWRpbmctbGljZW5zZS10ZXh0Jz4KLSAgICAgICAgICAgIDx0aXRsZT5Qcm92aWRpbmcgTGljZW5zZSBUZXh0PC90aXRsZT4KKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdwcm92aWRpbmctbGljZW5zZS10ZXh0Jz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+UHJvdmlkaW5nIExpY2Vuc2UgVGV4dDwvdGl0bGU+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE9uZSByZXF1aXJlbWVudCB0aGF0IGlzIG9mdGVuIG92ZXJsb29rZWQgaXMgaW5jbHVzaW9uCi0gICAgICAgICAgICAgICAgb2YgbGljZW5zZSB0ZXh0LgotICAgICAgICAgICAgICAgIFRoaXMgcmVxdWlyZW1lbnQgYWxzbyBuZWVkcyB0byBiZSBkZWFsdCB3aXRoIHByaW9yIHRvCi0gICAgICAgICAgICAgICAgZ2VuZXJhdGluZyB0aGUgZmluYWwgaW1hZ2UuCi0gICAgICAgICAgICAgICAgU29tZSBsaWNlbnNlcyByZXF1aXJlIHRoZSBsaWNlbnNlIHRleHQgdG8gYWNjb21wYW55Ci0gICAgICAgICAgICAgICAgdGhlIGJpbmFyeS4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGFjaGlldmUgdGhpcyBieSBhZGRpbmcgdGhlIGZvbGxvd2luZyB0byB5b3VyCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25lIHJlcXVpcmVtZW50IHRoYXQgaXMgb2Z0ZW4gb3Zlcmxvb2tlZCBpcyBpbmNsdXNpb24KKyAgICAgICAgICAgICAgICAgICAgb2YgbGljZW5zZSB0ZXh0LgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlcXVpcmVtZW50IGFsc28gbmVlZHMgdG8gYmUgZGVhbHQgd2l0aCBwcmlvciB0bworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW5nIHRoZSBmaW5hbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgU29tZSBsaWNlbnNlcyByZXF1aXJlIHRoZSBsaWNlbnNlIHRleHQgdG8gYWNjb21wYW55CisgICAgICAgICAgICAgICAgICAgIHRoZSBiaW5hcnkuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWNoaWV2ZSB0aGlzIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIENPUFlfTElDX01BTklGRVNUID0gIjEiCiAgICAgIENPUFlfTElDX0RJUlMgPSAiMSIKICAgICAgTElDRU5TRV9DUkVBVEVfUEFDS0FHRSA9ICIxIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBBZGRpbmcgdGhlc2Ugc3RhdGVtZW50cyB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGVuc3VyZXMKLSAgICAgICAgICAgICAgICB0aGF0IHRoZSBsaWNlbnNlcyBjb2xsZWN0ZWQgZHVyaW5nIHBhY2thZ2UgZ2VuZXJhdGlvbgotICAgICAgICAgICAgICAgIGFyZSBpbmNsdWRlZCBvbiB5b3VyIGltYWdlLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5TZXR0aW5nIGFsbCB0aHJlZSB2YXJpYWJsZXMgdG8gIjEiIHJlc3VsdHMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIGltYWdlIGhhdmluZyB0d28gY29waWVzIG9mIHRoZSBzYW1lIGxpY2Vuc2UgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgT25lIGNvcHkgcmVzaWRlcyBpbgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9zaGFyZS9jb21tb24tbGljZW5zZXM8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgdGhlIG90aGVyIHJlc2lkZXMgaW4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc2hhcmUvbGljZW5zZTwvZmlsZW5hbWU+LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBZGRpbmcgdGhlc2Ugc3RhdGVtZW50cyB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGVuc3VyZXMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgbGljZW5zZXMgY29sbGVjdGVkIGR1cmluZyBwYWNrYWdlIGdlbmVyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgYXJlIGluY2x1ZGVkIG9uIHlvdXIgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+U2V0dGluZyBhbGwgdGhyZWUgdmFyaWFibGVzIHRvICIxIiByZXN1bHRzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgaGF2aW5nIHR3byBjb3BpZXMgb2YgdGhlIHNhbWUgbGljZW5zZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgT25lIGNvcHkgcmVzaWRlcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc2hhcmUvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3RoZXIgcmVzaWRlcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc2hhcmUvbGljZW5zZTwvZmlsZW5hbWU+LjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgcmVhc29uIGZvciB0aGlzIGJlaGF2aW9yIGlzIGJlY2F1c2UKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPUFlfTElDX0RJUlMnPjxmaWxlbmFtZT5DT1BZX0xJQ19ESVJTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPUFlfTElDX01BTklGRVNUJz48ZmlsZW5hbWU+Q09QWV9MSUNfTUFOSUZFU1Q8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFkZCBhIGNvcHkgb2YgdGhlIGxpY2Vuc2Ugd2hlbiB0aGUgaW1hZ2UgaXMgYnVpbHQgYnV0IGRvCi0gICAgICAgICAgICAgICAgICAgIG5vdCBvZmZlciBhIHBhdGggZm9yIGFkZGluZyBsaWNlbnNlcyBmb3IgbmV3bHkgaW5zdGFsbGVkCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIHRvIGFuIGltYWdlLgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRV9DUkVBVEVfUEFDS0FHRSc+PGZpbGVuYW1lPkxJQ0VOU0VfQ1JFQVRFX1BBQ0tBR0U8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFkZHMgYSBzZXBhcmF0ZSBwYWNrYWdlIGFuZCBhbiB1cGdyYWRlIHBhdGggZm9yIGFkZGluZwotICAgICAgICAgICAgICAgICAgICBsaWNlbnNlcyB0byBhbiBpbWFnZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHJlYXNvbiBmb3IgdGhpcyBiZWhhdmlvciBpcyBiZWNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09QWV9MSUNfRElSUyc+PGZpbGVuYW1lPkNPUFlfTElDX0RJUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT1BZX0xJQ19NQU5JRkVTVCc+PGZpbGVuYW1lPkNPUFlfTElDX01BTklGRVNUPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGEgY29weSBvZiB0aGUgbGljZW5zZSB3aGVuIHRoZSBpbWFnZSBpcyBidWlsdCBidXQgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBvZmZlciBhIHBhdGggZm9yIGFkZGluZyBsaWNlbnNlcyBmb3IgbmV3bHkgaW5zdGFsbGVkCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyB0byBhbiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNFTlNFX0NSRUFURV9QQUNLQUdFJz48ZmlsZW5hbWU+TElDRU5TRV9DUkVBVEVfUEFDS0FHRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHMgYSBzZXBhcmF0ZSBwYWNrYWdlIGFuZCBhbiB1cGdyYWRlIHBhdGggZm9yIGFkZGluZworICAgICAgICAgICAgICAgICAgICAgICAgbGljZW5zZXMgdG8gYW4gaW1hZ2UuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBcyB0aGUgc291cmNlIDxmaWxlbmFtZT5hcmNoaXZlcjwvZmlsZW5hbWU+IGNsYXNzIGhhcyBhbHJlYWR5Ci0gICAgICAgICAgICAgICAgYXJjaGl2ZWQgdGhlIG9yaWdpbmFsCi0gICAgICAgICAgICAgICAgdW5tb2RpZmllZCBzb3VyY2UgdGhhdCBjb250YWlucyB0aGUgbGljZW5zZSBmaWxlcywKLSAgICAgICAgICAgICAgICB5b3Ugd291bGQgaGF2ZSBhbHJlYWR5IG1ldCB0aGUgcmVxdWlyZW1lbnRzIGZvciBpbmNsdXNpb24KLSAgICAgICAgICAgICAgICBvZiB0aGUgbGljZW5zZSBpbmZvcm1hdGlvbiB3aXRoIHNvdXJjZSBhcyBkZWZpbmVkIGJ5IHRoZSBHUEwKLSAgICAgICAgICAgICAgICBhbmQgb3RoZXIgb3BlbiBzb3VyY2UgbGljZW5zZXMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQXMgdGhlIHNvdXJjZSA8ZmlsZW5hbWU+YXJjaGl2ZXI8L2ZpbGVuYW1lPiBjbGFzcyBoYXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICBhcmNoaXZlZCB0aGUgb3JpZ2luYWwKKyAgICAgICAgICAgICAgICAgICAgdW5tb2RpZmllZCBzb3VyY2UgdGhhdCBjb250YWlucyB0aGUgbGljZW5zZSBmaWxlcywKKyAgICAgICAgICAgICAgICAgICAgeW91IHdvdWxkIGhhdmUgYWxyZWFkeSBtZXQgdGhlIHJlcXVpcmVtZW50cyBmb3IgaW5jbHVzaW9uCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsaWNlbnNlIGluZm9ybWF0aW9uIHdpdGggc291cmNlIGFzIGRlZmluZWQgYnkgdGhlIEdQTAorICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgb3BlbiBzb3VyY2UgbGljZW5zZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSdwcm92aWRpbmctY29tcGlsYXRpb24tc2NyaXB0cy1hbmQtc291cmNlLWNvZGUtbW9kaWZpY2F0aW9ucyc+Ci0gICAgICAgICAgICA8dGl0bGU+UHJvdmlkaW5nIENvbXBpbGF0aW9uIFNjcmlwdHMgYW5kIFNvdXJjZSBDb2RlIE1vZGlmaWNhdGlvbnM8L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3Byb3ZpZGluZy1jb21waWxhdGlvbi1zY3JpcHRzLWFuZC1zb3VyY2UtY29kZS1tb2RpZmljYXRpb25zJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+UHJvdmlkaW5nIENvbXBpbGF0aW9uIFNjcmlwdHMgYW5kIFNvdXJjZSBDb2RlIE1vZGlmaWNhdGlvbnM8L3RpdGxlPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGFkZHJlc3NlZCBhbGwgd2UgbmVlZCB0bwotICAgICAgICAgICAgICAgIHByaW9yIHRvIGdlbmVyYXRpbmcgdGhlIGltYWdlLgotICAgICAgICAgICAgICAgIFRoZSBuZXh0IHR3byByZXF1aXJlbWVudHMgYXJlIGFkZHJlc3NlZCBkdXJpbmcgdGhlIGZpbmFsCi0gICAgICAgICAgICAgICAgcGFja2FnaW5nIG9mIHRoZSByZWxlYXNlLgotICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGFkZHJlc3NlZCBhbGwgd2UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICBwcmlvciB0byBnZW5lcmF0aW5nIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG5leHQgdHdvIHJlcXVpcmVtZW50cyBhcmUgYWRkcmVzc2VkIGR1cmluZyB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnaW5nIG9mIHRoZSByZWxlYXNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQnkgcmVsZWFzaW5nIHRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgYW5kIHRoZSBsYXllcnMgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLCB5b3Ugd2lsbCBiZSBwcm92aWRpbmcgYm90aAotICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uIHNjcmlwdHMgYW5kIHRoZSBzb3VyY2UgY29kZSBtb2RpZmljYXRpb25zIGluIG9uZQotICAgICAgICAgICAgICAgIHN0ZXAuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ5IHJlbGVhc2luZyB0aGUgdmVyc2lvbiBvZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGxheWVycyB1c2VkIGR1cmluZyB0aGUgYnVpbGQsIHlvdSB3aWxsIGJlIHByb3ZpZGluZyBib3RoCisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uIHNjcmlwdHMgYW5kIHRoZSBzb3VyY2UgY29kZSBtb2RpZmljYXRpb25zIGluIG9uZQorICAgICAgICAgICAgICAgICAgICBzdGVwLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSWYgdGhlIGRlcGxveW1lbnQgdGVhbSBoYXMgYQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBsYXllcjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgYW5kIGEgZGlzdHJvIGxheWVyLCBhbmQgdGhvc2UgdGhvc2UgbGF5ZXJzIGFyZSB1c2VkIHRvIHBhdGNoLAotICAgICAgICAgICAgICAgIGNvbXBpbGUsIHBhY2thZ2UsIG9yIG1vZGlmeSAoaW4gYW55IHdheSkgYW55IG9wZW4gc291cmNlCi0gICAgICAgICAgICAgICAgc29mdHdhcmUgaW5jbHVkZWQgaW4geW91ciByZWxlYXNlZCBpbWFnZXMsIHlvdQotICAgICAgICAgICAgICAgIG1pZ2h0IGJlIHJlcXVpcmVkIHRvIHJlbGVhc2UgdGhvc2UgbGF5ZXJzIHVuZGVyIHNlY3Rpb24gMyBvZgotICAgICAgICAgICAgICAgIEdQTHYyIG9yIHNlY3Rpb24gMSBvZiBHUEx2My4KLSAgICAgICAgICAgICAgICBPbmUgd2F5IG9mIGRvaW5nIHRoYXQgaXMgd2l0aCBhIGNsZWFuCi0gICAgICAgICAgICAgICAgY2hlY2tvdXQgb2YgdGhlIHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgYW5kIGxheWVycyB1c2VkCi0gICAgICAgICAgICAgICAgZHVyaW5nIHlvdXIgYnVpbGQuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGRlcGxveW1lbnQgdGVhbSBoYXMgYQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtbGF5ZXJzJz5CU1AgbGF5ZXI8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgYSBkaXN0cm8gbGF5ZXIsIGFuZCB0aG9zZSB0aG9zZSBsYXllcnMgYXJlIHVzZWQgdG8gcGF0Y2gsCisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUsIHBhY2thZ2UsIG9yIG1vZGlmeSAoaW4gYW55IHdheSkgYW55IG9wZW4gc291cmNlCisgICAgICAgICAgICAgICAgICAgIHNvZnR3YXJlIGluY2x1ZGVkIGluIHlvdXIgcmVsZWFzZWQgaW1hZ2VzLCB5b3UKKyAgICAgICAgICAgICAgICAgICAgbWlnaHQgYmUgcmVxdWlyZWQgdG8gcmVsZWFzZSB0aG9zZSBsYXllcnMgdW5kZXIgc2VjdGlvbiAzIG9mCisgICAgICAgICAgICAgICAgICAgIEdQTHYyIG9yIHNlY3Rpb24gMSBvZiBHUEx2My4KKyAgICAgICAgICAgICAgICAgICAgT25lIHdheSBvZiBkb2luZyB0aGF0IGlzIHdpdGggYSBjbGVhbgorICAgICAgICAgICAgICAgICAgICBjaGVja291dCBvZiB0aGUgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBhbmQgbGF5ZXJzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHlvdXIgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAjIFdlIGJ1aWx0IHVzaW5nIHRoZSAmRElTVFJPX05BTUVfTk9fQ0FQOyBicmFuY2ggb2YgdGhlIHBva3kgcmVwbwogICAgICAkIGdpdCBjbG9uZSAtYiAmRElTVFJPX05BTUVfTk9fQ0FQOyBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5CiAgICAgICQgY2QgcG9reQpAQCAtMTA2MTMsMTggKzE1MDQwLDE4IEBACiAgICAgICQgZ2l0IGNsb25lIC1iIHJlbGVhc2VfYnJhbmNoIGdpdDovL2dpdC5teWNvbXBhbnkuY29tL21ldGEtbXktc29mdHdhcmUtbGF5ZXIKICAgICAgIyBjbGVhbiB1cCB0aGUgLmdpdCByZXBvcwogICAgICAkIGZpbmQgLiAtbmFtZSAiLmdpdCIgLXR5cGUgZCAtZXhlYyBybSAtcmYge30gXDsKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgT25lIHRoaW5nIGEgZGV2ZWxvcG1lbnQgb3JnYW5pemF0aW9uIG1pZ2h0IHdhbnQgdG8gY29uc2lkZXIKLSAgICAgICAgICAgICAgICBmb3IgZW5kLXVzZXIgY29udmVuaWVuY2UgaXMgdG8gbW9kaWZ5Ci0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL2JibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gdG8KLSAgICAgICAgICAgICAgICBlbnN1cmUgdGhhdCB3aGVuIHRoZSBlbmQgdXNlciB1dGlsaXplcyB0aGUgcmVsZWFzZWQgYnVpbGQKLSAgICAgICAgICAgICAgICBzeXN0ZW0gdG8gYnVpbGQgYW4gaW1hZ2UsIHRoZSBkZXZlbG9wbWVudCBvcmdhbml6YXRpb24ncwotICAgICAgICAgICAgICAgIGxheWVycyBhcmUgaW5jbHVkZWQgaW4gdGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBmaWxlIGF1dG9tYXRpY2FsbHk6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIExBWUVSX0NPTkZfVkVSU0lPTiBpcyBpbmNyZWFzZWQgZWFjaCB0aW1lIGJ1aWxkL2NvbmYvYmJsYXllcnMuY29uZgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE9uZSB0aGluZyBhIGRldmVsb3BtZW50IG9yZ2FuaXphdGlvbiBtaWdodCB3YW50IHRvIGNvbnNpZGVyCisgICAgICAgICAgICAgICAgICAgIGZvciBlbmQtdXNlciBjb252ZW5pZW5jZSBpcyB0byBtb2RpZnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL2JibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgZW5zdXJlIHRoYXQgd2hlbiB0aGUgZW5kIHVzZXIgdXRpbGl6ZXMgdGhlIHJlbGVhc2VkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSB0byBidWlsZCBhbiBpbWFnZSwgdGhlIGRldmVsb3BtZW50IG9yZ2FuaXphdGlvbidzCisgICAgICAgICAgICAgICAgICAgIGxheWVycyBhcmUgaW5jbHVkZWQgaW4gdGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBhdXRvbWF0aWNhbGx5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgUE9LWV9CQkxBWUVSU19DT05GX1ZFUlNJT04gaXMgaW5jcmVhc2VkIGVhY2ggdGltZSBidWlsZC9jb25mL2JibGF5ZXJzLmNvbmYKICAgICAgIyBjaGFuZ2VzIGluY29tcGF0aWJseQotICAgICBMQ09ORl9WRVJTSU9OID0gIjYiCisgICAgIFBPS1lfQkJMQVlFUlNfQ09ORl9WRVJTSU9OID0gIjIiCiAKICAgICAgQkJQQVRIID0gIiR7VE9QRElSfSIKICAgICAgQkJGSUxFUyA/PSAiIgpAQCAtMTA2MzUsMTQgKzE1MDYyLDE1IEBACiAgICAgICAgIyNPRVJPT1QjIy9tZXRhLXlvY3RvLWJzcCBcCiAgICAgICAgIyNPRVJPT1QjIy9tZXRhLW15bGF5ZXIgXAogICAgICAgICIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgQ3JlYXRpbmcgYW5kIHByb3ZpZGluZyBhbiBhcmNoaXZlIG9mIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgbGF5ZXJzIChyZWNpcGVzLCBjb25maWd1cmF0aW9uIGZpbGVzLCBhbmQgc28gZm9ydGgpCi0gICAgICAgICAgICAgICAgZW5hYmxlcyB5b3UgdG8gbWVldCB5b3VyCi0gICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzIHRvIGluY2x1ZGUgdGhlIHNjcmlwdHMgdG8gY29udHJvbCBjb21waWxhdGlvbgotICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgYW55IG1vZGlmaWNhdGlvbnMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZS4KLSAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyBhbmQgcHJvdmlkaW5nIGFuIGFyY2hpdmUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGxheWVycyAocmVjaXBlcywgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kIHNvIGZvcnRoKQorICAgICAgICAgICAgICAgICAgICBlbmFibGVzIHlvdSB0byBtZWV0IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzIHRvIGluY2x1ZGUgdGhlIHNjcmlwdHMgdG8gY29udHJvbCBjb21waWxhdGlvbgorICAgICAgICAgICAgICAgICAgICBhcyB3ZWxsIGFzIGFueSBtb2RpZmljYXRpb25zIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0xMDc2MSw2ICsxNTE4OSwxMzYgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogICAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iZGV2LXVzaW5nLXdheWxhbmQtYW5kLXdlc3RvbiI+CisgICAgICAgIDx0aXRsZT5Vc2luZyBXYXlsYW5kIGFuZCBXZXN0b248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYXlsYW5kXyhkaXNwbGF5X3NlcnZlcl9wcm90b2NvbCknPldheWxhbmQ8L3VsaW5rPgorICAgICAgICAgICAgaXMgYSBjb21wdXRlciBkaXNwbGF5IHNlcnZlciBwcm90b2NvbCB0aGF0CisgICAgICAgICAgICBwcm92aWRlcyBhIG1ldGhvZCBmb3IgY29tcG9zaXRpbmcgd2luZG93IG1hbmFnZXJzIHRvIGNvbW11bmljYXRlCisgICAgICAgICAgICBkaXJlY3RseSB3aXRoIGFwcGxpY2F0aW9ucyBhbmQgdmlkZW8gaGFyZHdhcmUgYW5kIGV4cGVjdHMgdGhlbSB0bworICAgICAgICAgICAgY29tbXVuaWNhdGUgd2l0aCBpbnB1dCBoYXJkd2FyZSB1c2luZyBvdGhlciBsaWJyYXJpZXMuCisgICAgICAgICAgICBVc2luZyBXYXlsYW5kIHdpdGggc3VwcG9ydGluZyB0YXJnZXRzIGNhbiByZXN1bHQgaW4gYmV0dGVyIGNvbnRyb2wKKyAgICAgICAgICAgIG92ZXIgZ3JhcGhpY3MgZnJhbWUgcmVuZGVyaW5nIHRoYW4gYW4gYXBwbGljYXRpb24gbWlnaHQgb3RoZXJ3aXNlCisgICAgICAgICAgICBhY2hpZXZlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyB0aGUgV2F5bGFuZCBwcm90b2NvbCBsaWJyYXJpZXMgYW5kIHRoZQorICAgICAgICAgICAgcmVmZXJlbmNlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dheWxhbmRfKGRpc3BsYXlfc2VydmVyX3Byb3RvY29sKSNXZXN0b24nPldlc3RvbjwvdWxpbms+CisgICAgICAgICAgICBjb21wb3NpdG9yIGFzIHBhcnQgb2YgaXRzIHJlbGVhc2UuCisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIGludGVncmF0ZWQgcGFja2FnZXMgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGxheWVyIG9mIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgU3BlY2lmaWNhbGx5LCB5b3UgY2FuIGZpbmQgdGhlIHJlY2lwZXMgdGhhdCBidWlsZCBib3RoIFdheWxhbmQKKyAgICAgICAgICAgIGFuZCBXZXN0b24gYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gYnVpbGQgYm90aCB0aGUgV2F5bGFuZCBhbmQgV2VzdG9uIHBhY2thZ2VzIGZvciB1c2Ugb25seQorICAgICAgICAgICAgd2l0aCB0YXJnZXRzIHRoYXQgYWNjZXB0IHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVzYV8oY29tcHV0ZXJfZ3JhcGhpY3MpJz5NZXNhIDNEIGFuZCBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlPC91bGluaz4sCisgICAgICAgICAgICB3aGljaCBpcyBhbHNvIGtub3duIGFzIE1lc2EgRFJJLgorICAgICAgICAgICAgVGhpcyBpbXBsaWVzIHRoYXQgeW91IGNhbm5vdCBidWlsZCBhbmQgdXNlIHRoZSBwYWNrYWdlcyBpZiB5b3VyCisgICAgICAgICAgICB0YXJnZXQgdXNlcywgZm9yIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+SW50ZWw8L3RyYWRlbWFyaz4gRW1iZWRkZWQgTWVkaWEKKyAgICAgICAgICAgIGFuZCBHcmFwaGljcyBEcml2ZXIKKyAgICAgICAgICAgICg8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5JbnRlbDwvdHJhZGVtYXJrPiBFTUdEKSB0aGF0CisgICAgICAgICAgICBvdmVycmlkZXMgTWVzYSBEUkkuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBEdWUgdG8gbGFjayBvZiBFR0wgc3VwcG9ydCwgV2VzdG9uIDEuMC4zIHdpbGwgbm90IHJ1bgorICAgICAgICAgICAgICAgIGRpcmVjdGx5IG9uIHRoZSBlbXVsYXRlZCBRRU1VIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgdmVyc2lvbiBvZiBXZXN0b24gd2lsbCBydW4gdW5kZXIgWCBlbXVsYXRpb24KKyAgICAgICAgICAgICAgICB3aXRob3V0IGlzc3Vlcy4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB3aGF0IHlvdSBuZWVkIHRvIGRvIHRvIGltcGxlbWVudCBXYXlsYW5kIGFuZAorICAgICAgICAgICAgdXNlIHRoZSBXZXN0b24gY29tcG9zaXRvciB3aGVuIGJ1aWxkaW5nIGFuIGltYWdlIGZvciBhIHN1cHBvcnRpbmcKKyAgICAgICAgICAgIHRhcmdldC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJlbmFibGluZy13YXlsYW5kLWluLWFuLWltYWdlIj4KKyAgICAgICAgICAgIDx0aXRsZT5FbmFibGluZyBXYXlsYW5kIGluIGFuIEltYWdlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gZW5hYmxlIFdheWxhbmQsIHlvdSBuZWVkIHRvIGVuYWJsZSBpdCB0byBiZSBidWlsdCBhbmQgZW5hYmxlCisgICAgICAgICAgICAgICAgaXQgdG8gYmUgaW5jbHVkZWQgKGluc3RhbGxlZCkgaW4gdGhlIGltYWdlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0iZW5hYmxlLWJ1aWxkaW5nIj4KKyAgICAgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGNhdXNlIE1lc2EgdG8gYnVpbGQgdGhlIDxmaWxlbmFtZT53YXlsYW5kLWVnbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIGFuZCBXZXN0b24gdG8gYnVpbGQgV2F5bGFuZCB3aXRoIEtlcm5lbCBNb2RlCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS5hcmNobGludXgub3JnL2luZGV4LnBocC9LZXJuZWxfTW9kZV9TZXR0aW5nJz5LTVM8L3VsaW5rPikKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCwgaW5jbHVkZSB0aGUgIndheWxhbmQiIGZsYWcgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9IiZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk9fRkVBVFVSRVMiPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiB3YXlsYW5kIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgWDExIGhhcyBiZWVuIGVuYWJsZWQgZWxzZXdoZXJlLCBXZXN0b24gd2lsbCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgV2F5bGFuZCB3aXRoIFgxMSBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJlbmFibGUtaW5zdGFsbGF0aW9uLWluLWFuLWltYWdlIj4KKyAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZzwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gaW5zdGFsbCB0aGUgV2F5bGFuZCBmZWF0dXJlIGludG8gYW4gaW1hZ2UsIHlvdSBtdXN0CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMJz48ZmlsZW5hbWU+Q09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMICs9ICJ3YXlsYW5kIHdlc3RvbiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJydW5uaW5nLXdlc3RvbiI+CisgICAgICAgICAgICA8dGl0bGU+UnVubmluZyBXZXN0b248L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBydW4gV2VzdG9uIGluc2lkZSBYMTEsIGVuYWJsaW5nIGl0IGFzIGRlc2NyaWJlZCBlYXJsaWVyIGFuZAorICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGEgU2F0byBpbWFnZSBpcyBzdWZmaWNpZW50LgorICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgcnVubmluZyB5b3VyIGltYWdlIHVuZGVyIFNhdG8sIGEgV2VzdG9uIExhdW5jaGVyCisgICAgICAgICAgICAgICAgYXBwZWFycyBpbiB0aGUgIlV0aWxpdHkiIGNhdGVnb3J5LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHJ1biBXZXN0b24gdGhyb3VnaCB0aGUgY29tbWFuZC1saW5lCisgICAgICAgICAgICAgICAgaW50ZXJwcmV0b3IgKENMSSksIHdoaWNoIGlzIGJldHRlciBzdWl0ZWQgZm9yIGRldmVsb3BtZW50IHdvcmsuCisgICAgICAgICAgICAgICAgVG8gcnVuIFdlc3RvbiB1bmRlciB0aGUgQ0xJLCB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nIGFmdGVyCisgICAgICAgICAgICAgICAgeW91ciBpbWFnZSBpcyBidWlsdDoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1biB0aGVzZSBjb21tYW5kcyB0byBleHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5YREdfUlVOVElNRV9ESVI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbWtkaXIgLXAgL3RtcC8kVVNFUi13ZXN0b24KKyAgICAgY2htb2QgMDcwMCAvdG1wLyRVU0VSLXdlc3RvbgorICAgICBleHBvcnQgWERHX1JVTlRJTUVfRElSPS90bXAvJFVTRVItd2VzdG9uCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgTGF1bmNoIFdlc3RvbiBpbiB0aGUgc2hlbGw6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHdlc3RvbgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CiA8L2NoYXB0ZXI+CiAKIDwhLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1pbnRyby54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtaW50cm8ueG1sCmluZGV4IDQ3YzgwMDYuLmY0NTdjODAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1pbnRyby54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWludHJvLnhtbApAQCAtMTYsMzMgKzE2LDI5IEBACiAgICAgICAgICAgICBUaGUgbWFudWFsIGdyb3VwcyByZWxhdGVkIHByb2NlZHVyZXMgaW50byBoaWdoZXItbGV2ZWwgc2VjdGlvbnMuCiAgICAgICAgICAgICBQcm9jZWR1cmVzIGNhbiBjb25zaXN0IG9mIGhpZ2gtbGV2ZWwgc3RlcHMgb3IgbG93LWxldmVsIHN0ZXBzCiAgICAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlIHRvcGljLgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIGNvbmNlcHR1YWwgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBhIHByb2NlZHVyZSBieQotICAgICAgICAgICAgZm9sbG93aW5nIGFwcHJvcHJpYXRlIGxpbmtzIHRvIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZQotICAgICAgICAgICAgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHdoYXQgeW91IGNhbiBnZXQgZnJvbSB0aGlzIG1hbnVhbDoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0dXAgUHJvY2VkdXJlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBQcm9jZWR1cmVzIHRoYXQgc2hvdyB5b3UgaG93IHRvIHNldAotICAgICAgICAgICAgICAgICAgICB1cCBhIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYW5kIGhvdwotICAgICAgICAgICAgICAgICAgICB0byBhY2NvbXBsaXNoIHRoZSBjaGFuZ2Ugd29ya2Zsb3cgdGhyb3VnaCBsb2dnaW5nCi0gICAgICAgICAgICAgICAgICAgIGRlZmVjdHMgYW5kIHN1Ym1pdHRpbmcgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlcyB0aGF0IGhlbHAgeW91IGdldCBnb2luZyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcHJvY2VkdXJlcyB0aGF0IHNob3cgeW91IGhvdyB0byBzZXQgdXAKKyAgICAgICAgICAgICAgICAgICAgYSBidWlsZCBob3N0IGFuZCB3b3JrIHdpdGggdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIHJlcG9zaXRvcmllcy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RW11bGF0aW9uIFByb2NlZHVyZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlcyB0aGF0IHNob3cgeW91IGhvdyB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgaW50ZWdyYXRlZCBRdWlja0VNVWxhdG9yIChRRU1VKSwgd2hpY2ggbGV0cwotICAgICAgICAgICAgICAgICAgICB5b3Ugc2ltdWxhdGUgcnVubmluZyBvbiBoYXJkd2FyZSBhbiBpbWFnZSB5b3UgaGF2ZSBidWlsdAotICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlcyB0aGF0IHNob3cgeW91IGhvdyB0byBzdWJtaXQgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgQ2hhbmdlcyBjYW4gYmUgaW1wcm92ZW1lbnRzLCBuZXcgZmVhdHVyZXMsIG9yIGJ1ZworICAgICAgICAgICAgICAgICAgICBmaXhlcy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbW9uIFByb2NlZHVyZXM6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlcyByZWxhdGVkIHRvICJldmVyeWRheSIgdGFza3MgeW91IHBlcmZvcm0gd2hpbGUKICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGluZyBpbWFnZXMgYW5kIGFwcGxpY2F0aW9ucyB1c2luZyB0aGUgWW9jdG8KICAgICAgICAgICAgICAgICAgICAgUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHByb2NlZHVyZXMgdG8gY3JlYXRlIGEgbGF5ZXIsIGN1c3RvbWl6ZSBhbgorICAgICAgICAgICAgICAgICAgICBpbWFnZSwgd3JpdGUgYSBuZXcgcmVjaXBlLCBhbmQgc28gZm9ydGguCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KQEAgLTUxLDcgKzQ3LDcgQEAKICAgICAgICAgICAgIFRoaXMgbWFudWFsIHdpbGwgbm90IGdpdmUgeW91IHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlZHVuZGFudCBTdGVwLWJ5LXN0ZXAgSW5zdHJ1Y3Rpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlZHVuZGFudCBTdGVwLWJ5LXN0ZXAgSW5zdHJ1Y3Rpb25zOgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgbWFudWFsIGNvbnRhaW5zIGRldGFpbGVkIGluc3RydWN0aW9ucyBvbiBob3cgdG8gaW5zdGFsbCBhbgpAQCAtNTksMTQgKzU1LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWZlcmVuY2Ugb3IgQ29uY2VwdHVhbCBNYXRlcmlhbDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgbWF0ZXJpYWwgcmVzaWRlcyBpbiBhbiBhcHByb3ByaWF0ZSByZWZlcmVuY2UgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2Ugb3IgQ29uY2VwdHVhbCBNYXRlcmlhbDoKKyAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIG1hdGVyaWFsIHJlc2lkZXMgaW4gYW4gYXBwcm9wcmlhdGUgcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN5c3RlbSB2YXJpYWJsZXMgYXJlIGRvY3VtZW50ZWQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7Jz5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGV0YWlsZWQgUHVibGljIEluZm9ybWF0aW9uIE5vdCBTcGVjaWZpYyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEZXRhaWxlZCBQdWJsaWMgSW5mb3JtYXRpb24gTm90IFNwZWNpZmljIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0OgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZXhoYXVzdGl2ZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQogICAgICAgICAgICAgICAgICAgICBTb3VyY2UgQ29udHJvbCBNYW5hZ2VyIEdpdCBpcyBiZXR0ZXIgY292ZXJlZCB3aXRoIEludGVybmV0CiAgICAgICAgICAgICAgICAgICAgIHNlYXJjaGVzIGFuZCBvZmZpY2lhbCBHaXQgRG9jdW1lbnRhdGlvbiB0aGFuIHRocm91Z2ggdGhlCkBAIC04NSw5ICs4MiwxMCBAQAogICAgICAgICAgICAgY29tcHJlaGVuc2lvbi4KICAgICAgICAgICAgIEZvciBpbnRyb2R1Y3RvcnkgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+LgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIGFuIGludHJvZHVjdG9yeSB0byB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBieSB3b3JraW5nCi0gICAgICAgICAgICB0aHJvdWdoIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdWxpbms+LgorICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gYnVpbGQgYW4gaW1hZ2Ugd2l0aCBubyBrbm93bGVkZ2Ugb2YgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgYXMgYSB3YXkgb2YgcXVpY2tseSB0ZXN0aW5nIGl0IG91dCwgc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlJJRUZfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvdWxpbms+CisgICAgICAgICAgICBkb2N1bWVudC4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLW5ld2JpZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbmV3YmllLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBmYmI0Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbmV3YmllLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDk4OSArMCwwIEBACi08IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCi0iaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgotWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgotCi08Y2hhcHRlciBpZD0nZGV2LW1hbnVhbC1uZXdiaWUnPgotCi08dGl0bGU+VGhlIFlvY3RvIFByb2plY3QgT3BlbiBTb3VyY2UgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3RpdGxlPgotCi08c2VjdGlvbiBpZD0idXNpbmdwb2t5LWNoYW5nZXMtY29sbGFib3JhdGUiPgotICAgIDx0aXRsZT5TZXR0aW5nIFVwIGEgVGVhbSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBJdCBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgY2xlYXIgaG93IHlvdSBjYW4gdXNlIHRoZSBZb2N0bwotICAgICAgICBQcm9qZWN0IGluIGEgdGVhbSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgb3Igc2NhbGUgaXQgZm9yIGEgbGFyZ2UKLSAgICAgICAgdGVhbSBvZiBkZXZlbG9wZXJzLgotICAgICAgICBPbmUgb2YgdGhlIHN0cmVuZ3RocyBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0aGF0IGl0IGlzIGV4dHJlbWVseQotICAgICAgICBmbGV4aWJsZS4KLSAgICAgICAgVGh1cywgeW91IGNhbiBhZGFwdCBpdCB0byBtYW55IGRpZmZlcmVudCB1c2UgY2FzZXMgYW5kIHNjZW5hcmlvcy4KLSAgICAgICAgSG93ZXZlciwgdGhlc2UgY2hhcmFjdGVyaXN0aWNzIGNhbiBjYXVzZSBhIHN0cnVnZ2xlIGlmIHlvdSBhcmUgdHJ5aW5nCi0gICAgICAgIHRvIGNyZWF0ZSBhIHdvcmtpbmcgc2V0dXAgdGhhdCBzY2FsZXMgYWNyb3NzIGEgbGFyZ2UgdGVhbS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVG8gaGVscCB5b3UgdW5kZXJzdGFuZCBob3cgdG8gc2V0IHVwIHRoaXMgdHlwZSBvZiBlbnZpcm9ubWVudCwKLSAgICAgICAgdGhpcyBzZWN0aW9uIHByZXNlbnRzIGEgcHJvY2VkdXJlIHRoYXQgZ2l2ZXMgeW91IHRoZSBpbmZvcm1hdGlvbgotICAgICAgICB0byBsZWFybiBob3cgdG8gZ2V0IHRoZSByZXN1bHRzIHlvdSB3YW50LgotICAgICAgICBUaGUgcHJvY2VkdXJlIGlzIGhpZ2gtbGV2ZWwgYW5kIHByZXNlbnRzIHNvbWUgb2YgdGhlIHByb2plY3QncyBtb3N0Ci0gICAgICAgIHN1Y2Nlc3NmdWwgZXhwZXJpZW5jZXMsIHByYWN0aWNlcywgc29sdXRpb25zLCBhbmQgYXZhaWxhYmxlCi0gICAgICAgIHRlY2hub2xvZ2llcyB0aGF0IHdvcmsgd2VsbC4KLSAgICAgICAgS2VlcCBpbiBtaW5kLCB0aGUgcHJvY2VkdXJlIGhlcmUgaXMgYSBzdGFydGluZyBwb2ludC4KLSAgICAgICAgWW91IGNhbiBidWlsZCBvZmYgaXQgYW5kIGN1c3RvbWl6ZSBpdCB0byBmaXQgYW55Ci0gICAgICAgIHBhcnRpY3VsYXIgd29ya2luZyBlbnZpcm9ubWVudCBhbmQgc2V0IG9mIHByYWN0aWNlcy4KLSAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgV2hvIGlzIEdvaW5nIHRvIGJlIERldmVsb3Bpbmc6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byB1bmRlcnN0YW5kIHdobyBpcyBnb2luZyB0byBiZSBkb2luZyBhbnl0aGluZwotICAgICAgICAgICAgICAgIHJlbGF0ZWQgdG8gdGhlIFlvY3RvIFByb2plY3QgYW5kIHdoYXQgdGhlaXIgcm9sZXMgd291bGQgYmUuCi0gICAgICAgICAgICAgICAgTWFraW5nIHRoaXMgZGV0ZXJtaW5hdGlvbiBpcyBlc3NlbnRpYWwgdG8gY29tcGxldGluZyB0aGUKLSAgICAgICAgICAgICAgICBzdGVwcyB0d28gYW5kIHRocmVlLCB3aGljaCBhcmUgdG8gZ2V0IHlvdXIgZXF1aXBtZW50IHRvZ2V0aGVyCi0gICAgICAgICAgICAgICAgYW5kIHNldCB1cCB5b3VyIGRldmVsb3BtZW50IGVudmlyb25tZW50J3MgaGFyZHdhcmUgdG9wb2xvZ3kuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyByb2xlcyBleGlzdDoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgZG8gYXBwbGljYXRpb24gbGV2ZWwgd29yawotICAgICAgICAgICAgICAgICAgICAgICAgb24gdG9wIG9mIGFuIGV4aXN0aW5nIHNvZnR3YXJlIHN0YWNrLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db3JlIFN5c3RlbSBEZXZlbG9wbWVudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHlwZXMgb2YgZGV2ZWxvcGVycyB3b3JrIG9uIHRoZSBjb250ZW50cyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW0gaW1hZ2UgaXRzZWxmLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBFbmdpbmVlcjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGRldmVsb3BlciBtYW5hZ2VzIEF1dG9idWlsZGVycyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgTm90IGFsbCBlbnZpcm9ubWVudHMgbmVlZCBhIEJ1aWxkIEVuZ2luZWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UZXN0IEVuZ2luZWVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgZGV2ZWxvcGVyIGNyZWF0ZXMgYW5kIG1hbmFnZXMgYXV0b21hdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyBuZWVkZWQgdG8gZW5zdXJlIGFsbCBhcHBsaWNhdGlvbiBhbmQgY29yZQotICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGRldmVsb3BtZW50IG1lZXRzIGRlc2lyZWQgcXVhbGl0eSBzdGFuZGFyZHMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2F0aGVyIHRoZSBIYXJkd2FyZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEJhc2VkIG9uIHRoZSBzaXplIGFuZCBtYWtlLXVwIG9mIHRoZSB0ZWFtLCBnZXQgdGhlIGhhcmR3YXJlCi0gICAgICAgICAgICAgICAgdG9nZXRoZXIuCi0gICAgICAgICAgICAgICAgQW55IGRldmVsb3BtZW50LCBidWlsZCwgb3IgdGVzdCBlbmdpbmVlciBzaG91bGQgYmUgdXNpbmcKLSAgICAgICAgICAgICAgICBhIHN5c3RlbSB0aGF0IGlzIHJ1bm5pbmcgYSBzdXBwb3J0ZWQgTGludXggZGlzdHJpYnV0aW9uLgotICAgICAgICAgICAgICAgIFN5c3RlbXMsIGluIGdlbmVyYWwsIHNob3VsZCBiZSBoaWdoIHBlcmZvcm1hbmNlIChlLmcuIGR1YWwsCi0gICAgICAgICAgICAgICAgc2l4LWNvcmUgWGVvbnMgd2l0aCAyNCBHYnl0ZXMgb2YgUkFNIGFuZCBwbGVudHkgb2YgZGlzayBzcGFjZSkuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBoZWxwIGVuc3VyZSBlZmZpY2llbmN5IGJ5IGhhdmluZyBhbnkgbWFjaGluZXMgdXNlZAotICAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIG9yIHRoYXQgcnVuIEF1dG9idWlsZGVycyBiZSBhcyBoaWdoIHBlcmZvcm1hbmNlCi0gICAgICAgICAgICAgICAgYXMgcG9zc2libGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVuZGVyc3RhbmQgdGhlIEhhcmR3YXJlIFRvcG9sb2d5IG9mIHRoZSBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIE5vdyB0aGF0IHlvdSBrbm93IGhvdyBtYW55IGRldmVsb3BlcnMgYW5kIHN1cHBvcnQgZW5naW5lZXJzCi0gICAgICAgICAgICAgICAgYXJlIHJlcXVpcmVkLCB5b3UgY2FuIHVuZGVyc3RhbmQgdGhlIHRvcG9sb2d5IG9mIHRoZQotICAgICAgICAgICAgICAgIGhhcmR3YXJlIGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGEgbW9kZXJhdGVseSBzaXplZCBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0KLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJ3cml0ZXJub3RlcyI+Ci0gICAgICAgICAgICAgICAgTmVlZCBmaWd1cmUuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSBHaXQgYXMgWW91ciBTb3VyY2UgQ29udHJvbCBNYW5hZ2VyIChTQ00pOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgS2VlcGluZyB5b3VyCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KLSAgICAgICAgICAgICAgICBhbmQgYW55IHNvZnR3YXJlIHlvdSBhcmUgZGV2ZWxvcGluZyB1bmRlciB0aGUKLSAgICAgICAgICAgICAgICBjb250cm9sIG9mIGFuIFNDTSBzeXN0ZW0gdGhhdCBpcyBjb21wYXRpYmxlCi0gICAgICAgICAgICAgICAgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpcyBhZHZpc2FibGUuCi0gICAgICAgICAgICAgICAgT2YgdGhlIFNDTXMgQml0QmFrZSBzdXBwb3J0cywgdGhlCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCB0ZWFtIHN0cm9uZ2x5IHJlY29tbWVuZHMgdXNpbmcKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQnPkdpdDwvdWxpbms+LgotICAgICAgICAgICAgICAgIEdpdCBpcyBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0IGlzIGVhc3kgdG8gYmFja3VwLAotICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gd29yayByZW1vdGVseSwgYW5kIHRoZW4gY29ubmVjdHMgYmFjayB0byB0aGUKLSAgICAgICAgICAgICAgICBpbmZyYXN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IEJpdEJha2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgotICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyByZWxhdGl2ZWx5IGVhc3kgdG8gc2V0IHVwIEdpdCBzZXJ2aWNlcyBhbmQgY3JlYXRlCi0gICAgICAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgbGlrZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnPC91bGluaz4sCi0gICAgICAgICAgICAgICAgd2hpY2ggaXMgYmFzZWQgb24gc2VydmVyIHNvZnR3YXJlIGNhbGxlZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHdpdGggPGZpbGVuYW1lPmNnaXQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGJlaW5nIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHdlYiBpbnRlcmZhY2UgdGhhdCBsZXRzIHlvdSB2aWV3IHRoZQotICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdpdG9saXRlPC9maWxlbmFtZT4gc29mdHdhcmUgaWRlbnRpZmllcyB1c2VycwotICAgICAgICAgICAgICAgIHVzaW5nIFNTSCBrZXlzIGFuZCBhbGxvd3MgYnJhbmNoLWJhc2VkCi0gICAgICAgICAgICAgICAgYWNjZXNzIGNvbnRyb2xzIHRvIHJlcG9zaXRvcmllcyB0aGF0IHlvdSBjYW4gY29udHJvbCBhcyBsaXR0bGUKLSAgICAgICAgICAgICAgICBvciBhcyBtdWNoIGFzIG5lY2Vzc2FyeS4KLQotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgIFRoZSBzZXR1cCBvZiB0aGVzZSBzZXJ2aWNlcyBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMKLSAgICAgICAgICAgICAgICAgICBtYW51YWwuCi0gICAgICAgICAgICAgICAgICAgSG93ZXZlciwgc2l0ZXMgc3VjaCBhcyB0aGVzZSBleGlzdCB0aGF0IGRlc2NyaWJlIGhvdyB0bwotICAgICAgICAgICAgICAgICAgIHBlcmZvcm0gc2V0dXA6Ci0gICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2Jvb2svY2g0LTguaHRtbCc+R2l0IGRvY3VtZW50YXRpb248L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJlcyBob3cgdG8gaW5zdGFsbCA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIHNlcnZlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vc2l0YXJhbWMuZ2l0aHViLmNvbS9naXRvbGl0ZS9tYXN0ZXItdG9jLmh0bWwnPlRoZSA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPiBtYXN0ZXIgaW5kZXg8L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGwgdG9waWNzIGZvciA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0ludGVyZmFjZXMsX2Zyb250ZW5kcyxfYW5kX3Rvb2xzJz5JbnRlcmZhY2VzLCBmcm9udGVuZHMsIGFuZCB0b29sczwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gb24gaG93IHRvIGNyZWF0ZSBpbnRlcmZhY2VzIGFuZCBmcm9udGVuZHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgR2l0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCB0aGUgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgTWFjaGluZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgYXBwbGljYXRpb24gZGV2ZWxvcGVycyBhcmUgY3JlYXRpbmcKLSAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgb24gdG9wIG9mIGV4aXN0aW5nIHNvZnR3YXJlIHN0YWNrcy4KLSAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgYmVzdCBwcmFjdGljZXMgZm9yIHNldHRpbmcgdXAgbWFjaGluZXMKLSAgICAgICAgICAgICAgICB0aGF0IGRvIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50OgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBhIHByZS1idWlsdCB0b29sY2hhaW4gdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgdGhlIHNvZnR3YXJlIHN0YWNrIGl0c2VsZi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZW4sIGRldmVsb3AgdGhlIGFwcGxpY2F0aW9uIGNvZGUgb24gdG9wIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCB3b3JrcyB3ZWxsIGZvciBzbWFsbCBudW1iZXJzIG9mIHJlbGF0aXZlbHkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzb2xhdGVkIGFwcGxpY2F0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHBvc3NpYmxlLCB1c2UgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIHBsdWctaW4gZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gSURFCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgU0RLIGRldmVsb3BtZW50IHByYWN0aWNlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBLZWVwIHlvdXIgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucyB1cGRhdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkbyB0aGlzIHRocm91Z2ggcHJvdmlzaW9uaW5nIGVpdGhlciBhcyBuZXcKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiBkb3dubG9hZHMgb3IgYXMgdXBkYXRlcyB0aHJvdWdoIGEgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIG1lY2hhbmlzbSB1c2luZyA8ZmlsZW5hbWU+b3BrZzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0byBwcm92aWRlIHVwZGF0ZXMgdG8gYW4gZXhpc3RpbmcgdG9vbGNoYWluLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGV4YWN0IG1lY2hhbmljcyBvZiBob3cgYW5kIHdoZW4gdG8gZG8gdGhpcyBhcmUgYQotICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb24gZm9yIGxvY2FsIHBvbGljeS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgbXVsdGlwbGUgdG9vbGNoYWlucyBpbnN0YWxsZWQgbG9jYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgaW50byBkaWZmZXJlbnQgbG9jYXRpb25zIHRvIGFsbG93IGRldmVsb3BtZW50IGFjcm9zcwotICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIHRoZSBDb3JlIERldmVsb3BtZW50IE1hY2hpbmVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgd29yayBvbiB0aGUKLSAgICAgICAgICAgICAgICBjb250ZW50cyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpdHNlbGYuCi0gICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGJlc3QgcHJhY3RpY2VzIGZvciBzZXR0aW5nIHVwIG1hY2hpbmVzCi0gICAgICAgICAgICAgICAgdXNlZCBmb3IgZGV2ZWxvcGluZyBpbWFnZXM6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgSGF2ZSB0aGUgWW9jdG8gUHJvamVjdCBidWlsZCBzeXN0ZW0gaXRzZWxmIGF2YWlsYWJsZSBvbgotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRldmVsb3BlciB3b3Jrc3RhdGlvbnMgc28gZGV2ZWxvcGVycyBjYW4gcnVuIHRoZWlyIG93bgotICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRzIGFuZCBkaXJlY3RseSByZWJ1aWxkIHRoZSBzb2Z0d2FyZSBzdGFjay4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBLZWVwIHRoZSBjb3JlIHN5c3RlbSB1bmNoYW5nZWQgYXMgbXVjaCBhcwotICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGUgYW5kIGRvIHlvdXIgd29yayBpbiBsYXllcnMgb24gdG9wIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgY29yZSBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBnaXZlcyB5b3UgYSBncmVhdGVyIGxldmVsIG9mIHBvcnRhYmlsaXR5IHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGluZyB0byBuZXcgdmVyc2lvbnMgb2YgdGhlIGNvcmUgc3lzdGVtIG9yIEJvYXJkCi0gICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTaGFyZSBsYXllcnMgYW1vbmdzdCB0aGUgZGV2ZWxvcGVycyBvZiBhCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHByb2plY3QgYW5kIGNvbnRhaW4gdGhlIHBvbGljeSBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGRlZmluZXMgdGhlIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIGFuIEF1dG9idWlsZGVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzIGFyZSBvZnRlbiB0aGUgY29yZSBvZiB0aGUgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICBJdCBpcyBoZXJlIHRoYXQgY2hhbmdlcyBmcm9tIGluZGl2aWR1YWwgZGV2ZWxvcGVycyBhcmUgYnJvdWdodAotICAgICAgICAgICAgICAgIHRvZ2V0aGVyIGFuZCBjZW50cmFsbHkgdGVzdGVkIGFuZCBzdWJzZXF1ZW50IGRlY2lzaW9ucyBhYm91dAotICAgICAgICAgICAgICAgIHJlbGVhc2VzIGNhbiBiZSBtYWRlLgotICAgICAgICAgICAgICAgIEF1dG9idWlsZGVycyBhbHNvIGFsbG93IGZvciAiY29udGludW91cyBpbnRlZ3JhdGlvbiIgc3R5bGUKLSAgICAgICAgICAgICAgICB0ZXN0aW5nIG9mIHNvZnR3YXJlIGNvbXBvbmVudHMgYW5kIHJlZ3Jlc3Npb24gaWRlbnRpZmljYXRpb24KLSAgICAgICAgICAgICAgICBhbmQgdHJhY2tpbmcuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+U2VlICI8dWxpbmsgdXJsPSdodHRwOi8vYXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZyc+WW9jdG8gUHJvamVjdCBBdXRvYnVpbGRlcjwvdWxpbms+IgotICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBsaW5rcyB0byBidWlsZGJvdC4KLSAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIGhhcyBmb3VuZCB0aGlzIGltcGxlbWVudGF0aW9uCi0gICAgICAgICAgICAgICAgd29ya3Mgd2VsbCBpbiB0aGlzIHJvbGUuCi0gICAgICAgICAgICAgICAgQSBwdWJsaWMgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzLCB3aGljaCB3ZSB1c2UgdG8gdGVzdCB0aGUgb3ZlcmFsbCBoZWFsdGggb2YgdGhlCi0gICAgICAgICAgICAgICAgcHJvamVjdC48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZmVhdHVyZXMgb2YgdGhpcyBzeXN0ZW0gYXJlOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICBIaWdobGlnaHRzIHdoZW4gY29tbWl0cyBicmVhayB0aGUgYnVpbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVsYXRlcyBhbiBzc3RhdGUgY2FjaGUgZnJvbSB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVycyBjYW4gcHVsbCByYXRoZXIgdGhhbiByZXF1aXJpbmcgbG9jYWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBbGxvd3MgY29tbWl0IGhvb2sgdHJpZ2dlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB0cmlnZ2VyIGJ1aWxkcyB3aGVuIGNvbW1pdHMgYXJlIG1hZGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHRyaWdnZXJpbmcgb2YgYXV0b21hdGVkIGltYWdlIGJvb3RpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0ZXN0aW5nIHVuZGVyIHRoZSBRdWlja0VNVWxhdG9yIChRRU1VKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0cyBpbmNyZW1lbnRhbCBidWlsZCB0ZXN0aW5nIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgZnJvbS1zY3JhdGNoIGJ1aWxkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTaGFyZXMgb3V0cHV0IHRoYXQgYWxsb3dzIGRldmVsb3BlcgotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZyBhbmQgaGlzdG9yaWNhbCByZWdyZXNzaW9uIGludmVzdGlnYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBvdXRwdXQgdGhhdCBjYW4gYmUgdXNlZCBmb3IgcmVsZWFzZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHNjaGVkdWxpbmcgb2YgYnVpbGRzIHNvIHRoYXQgcmVzb3VyY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgdXNlZCBlZmZpY2llbnRseS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCBUZXN0IE1hY2hpbmVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICBVc2UgYSBzbWFsbCBudW1iZXIgb2Ygc2hhcmVkLCBoaWdoIHBlcmZvcm1hbmNlIHN5c3RlbXMKLSAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgotICAgICAgICAgICAgICAgRGV2ZWxvcGVycyBjYW4gdXNlIHRoZXNlIHN5c3RlbXMgZm9yIHdpZGVyLCBtb3JlCi0gICAgICAgICAgICAgICBleHRlbnNpdmUgdGVzdGluZyB3aGlsZSB0aGV5IGNvbnRpbnVlIHRvIGRldmVsb3AKLSAgICAgICAgICAgICAgIGxvY2FsbHkgdXNpbmcgdGhlaXIgcHJpbWFyeSBkZXZlbG9wbWVudCBzeXN0ZW0uCi0gICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRvY3VtZW50IFBvbGljaWVzIGFuZCBDaGFuZ2UgRmxvdzo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXRzZWxmIHVzZXMgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlIGFuZCBhCi0gICAgICAgICAgICAgICAgcHVsbCBtb2RlbC4KLSAgICAgICAgICAgICAgICBTY3JpcHRzIGV4aXN0IHRvIGNyZWF0ZSBhbmQgc2VuZCBwdWxsIHJlcXVlc3RzCi0gICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgVGhpcyBtb2RlbCBpcyBpbiBsaW5lIHdpdGggb3RoZXIgb3BlbiBzb3VyY2UgcHJvamVjdHMgd2hlcmUKLSAgICAgICAgICAgICAgICBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBwcm9qZWN0Ci0gICAgICAgICAgICAgICAgYW5kIGEgc2luZ2xlIG1haW50YWluZXIgaGFuZGxlcyB0aGUgZmluYWwgInRvcC1vZi10cmVlIiBtZXJnZXMuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgYSBtb3JlIGNvbGxlY3RpdmUgcHVzaCBtb2RlbC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHNvZnR3YXJlIHN1cHBvcnRzIGJvdGggdGhlCi0gICAgICAgICAgICAgICAgICAgIHB1c2ggYW5kIHB1bGwgbW9kZWxzIHF1aXRlIGVhc2lseS4KLSAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+QXMgd2l0aCBhbnkgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGl0IGlzIGltcG9ydGFudAotICAgICAgICAgICAgICAgIHRvIGRvY3VtZW50IHRoZSBwb2xpY3kgdXNlZCBhcyB3ZWxsIGFzIGFueSBtYWluIHByb2plY3QKLSAgICAgICAgICAgICAgICBndWlkZWxpbmVzIHNvIHRoZXkgYXJlIHVuZGVyc3Rvb2QgYnkgZXZlcnlvbmUuCi0gICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBhIGdvb2QgaWRlYSB0byBoYXZlIHdlbGwgc3RydWN0dXJlZAotICAgICAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlcywgd2hpY2ggYXJlIHVzdWFsbHkgYSBwYXJ0IG9mIGEgcHJvamVjdCdzCi0gICAgICAgICAgICAgICAgZ3VpZGVsaW5lcy4KLSAgICAgICAgICAgICAgICBHb29kIGNvbW1pdCBtZXNzYWdlcyBhcmUgZXNzZW50aWFsIHdoZW4gbG9va2luZyBiYWNrIGluIHRpbWUgYW5kCi0gICAgICAgICAgICAgICAgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgd2h5IGNoYW5nZXMgd2VyZSBtYWRlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBkaXNjb3ZlciB0aGF0IGNoYW5nZXMgYXJlIG5lZWRlZCB0byB0aGUgY29yZQotICAgICAgICAgICAgICAgIGxheWVyIG9mIHRoZSBwcm9qZWN0LCBpdCBpcyB3b3J0aCBzaGFyaW5nIHRob3NlIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgY29tbXVuaXR5IGFzIHNvb24gYXMgcG9zc2libGUuCi0gICAgICAgICAgICAgICAgQ2hhbmNlcyBhcmUgaWYgeW91IGhhdmUgZGlzY292ZXJlZCB0aGUgbmVlZCBmb3IgY2hhbmdlcywKLSAgICAgICAgICAgICAgICBzb21lb25lIGVsc2UgaW4gdGhlIGNvbW11bml0eSBuZWVkcyB0aGVtIGFsc28uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldmVsb3BtZW50IEVudmlyb25tZW50IFN1bW1hcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBc2lkZSBmcm9tIHRoZSBwcmV2aW91cyBzdGVwcywgc29tZSBiZXN0IHByYWN0aWNlcyBleGlzdAotICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQnPkdpdDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGUgc291cmNlIGNvbnRyb2wgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIE1haW50YWluIHlvdXIgTWV0YWRhdGEgaW4gbGF5ZXJzIHRoYXQgbWFrZSBzZW5zZQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgc2l0dWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC9saW5rPiIgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgotICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlcGFyYXRlIHRoZSBwcm9qZWN0J3MgTWV0YWRhdGEgYW5kIGNvZGUgYnkgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlIEdpdCByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gdGhlc2UgcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3dvcmtpbmctd2l0aC15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+V29ya2luZyBXaXRoIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgbG9jYWwgR2l0Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMgZm9yIHJlbGF0ZWQgdXBzdHJlYW0gWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTZXQgdXAgdGhlIGRpcmVjdG9yeSBmb3IgdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZQotICAgICAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TU1RBVEVfRElSJz48ZmlsZW5hbWU+U1NUQVRFX0RJUjwvZmlsZW5hbWU+PC91bGluaz4pCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBpdCBtYWtlcyBzZW5zZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzZXQgdXAgdGhlIHNzdGF0ZSBjYWNoZSBvbiBhIHN5c3RlbSB1c2VkCi0gICAgICAgICAgICAgICAgICAgICAgICBieSBkZXZlbG9wZXJzIGluIHRoZSBzYW1lIG9yZ2FuaXphdGlvbiBhbmQgc2hhcmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzYW1lIHNvdXJjZSBkaXJlY3RvcmllcyBvbiB0aGVpciBtYWNoaW5lcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTZXQgdXAgYW4gQXV0b2J1aWxkZXIgYW5kIGhhdmUgaXQgcG9wdWxhdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzc3RhdGUgY2FjaGUgYW5kIHNvdXJjZSBkaXJlY3Rvcmllcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBjb21tdW5pdHkgZW5jb3VyYWdlcyB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNlbmQgcGF0Y2hlcyB0byB0aGUgcHJvamVjdCB0byBmaXggYnVncyBvciBhZGQgZmVhdHVyZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gc3VibWl0IHBhdGNoZXMsIGZvbGxvdyB0aGUgcHJvamVjdCBjb21taXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlbGluZXMgZm9yIHdyaXRpbmcgZ29vZCBjb21taXQgbWVzc2FnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgU2VuZCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHNvb25lciB0aGFuIGxhdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBhcyBvdGhlcnMgYXJlIGxpa2VseSB0byBydW4gaW50byB0aGUgc2FtZSBpc3N1ZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3Igc29tZSBndWlkYW5jZSBvbiBtYWlsaW5nIGxpc3RzIHRvIHVzZSwgc2VlIHRoZSBsaXN0IGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBhdmFpbGFibGUgbWFpbGluZyBsaXN0cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1tYWlsaW5nbGlzdCc+TWFpbGluZyBMaXN0czwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nc3VibWl0dGluZy1hLWRlZmVjdC1hZ2FpbnN0LXRoZS15b2N0by1wcm9qZWN0Jz4KLSAgICA8dGl0bGU+U3VibWl0dGluZyBhIERlZmVjdCBBZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBVc2UgdGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50YXRpb24gb2YKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5idWd6aWxsYS5vcmcvYWJvdXQvJz5CdWd6aWxsYTwvdWxpbms+Ci0gICAgICAgIHRvIHN1Ym1pdCBhIGRlZmVjdCAoYnVnKSBhZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGlzIGltcGxlbWVudGF0aW9uIG9mIEJ1Z3ppbGxhIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1idWd0cmFja2VyJz5Zb2N0byBQcm9qZWN0IEJ1Z3ppbGxhPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgRm9yIG1vcmUgZGV0YWlsIG9uIGFueSBvZiB0aGUgZm9sbG93aW5nIHN0ZXBzLCBzZWUgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0J1Z3ppbGxhX0NvbmZpZ3VyYXRpb25fYW5kX0J1Z19UcmFja2luZyc+QnVnemlsbGEgd2lraSBwYWdlPC91bGluaz4uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGdlbmVyYWwgc3RlcHMgdG8gc3VibWl0IGEgYnVnIgotCi0gICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBPcGVuIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPkJ1Z3ppbGxhPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgQ2xpY2sgIkZpbGUgYSBCdWciIHRvIGVudGVyIGEgbmV3IGJ1Zy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBDaG9vc2UgdGhlIGFwcHJvcHJpYXRlICJDbGFzc2lmaWNhdGlvbiIsICJQcm9kdWN0IiwgYW5kCi0gICAgICAgICAgICAgICAgIkNvbXBvbmVudCIgZm9yIHdoaWNoIHRoZSBidWcgd2FzIGZvdW5kLgotICAgICAgICAgICAgICAgIEJ1Z3MgZm9yIHRoZSBZb2N0byBQcm9qZWN0IGZhbGwgaW50byBvbmUgb2Ygc2V2ZXJhbAotICAgICAgICAgICAgICAgIGNsYXNzaWZpY2F0aW9ucywgd2hpY2ggaW4gdHVybiBicmVhayBkb3duIGludG8gc2V2ZXJhbAotICAgICAgICAgICAgICAgIHByb2R1Y3RzIGFuZCBjb21wb25lbnRzLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBmb3IgYSBidWcgYWdhaW5zdCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyLCB5b3Ugd291bGQgY2hvb3NlCi0gICAgICAgICAgICAgICAgIkJ1aWxkIFN5c3RlbSwgTWV0YWRhdGEgJmFtcDsgUnVudGltZSIsICJCU1BzIiwgYW5kCi0gICAgICAgICAgICAgICAgImJzcHMtbWV0YS1pbnRlbCIsIHJlc3BlY3RpdmVseS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBDaG9vc2UgdGhlICJWZXJzaW9uIiBvZiB0aGUgWW9jdG8gUHJvamVjdCBmb3Igd2hpY2ggeW91IGZvdW5kCi0gICAgICAgICAgICAgICAgdGhlIGJ1ZyAoZS5nLiAmRElTVFJPOykuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGFuZCBzZWxlY3QgdGhlICJTZXZlcml0eSIgb2YgdGhlIGJ1Zy4KLSAgICAgICAgICAgICAgICBUaGUgc2V2ZXJpdHkgaW5kaWNhdGVzIGhvdyB0aGUgYnVnIGltcGFjdGVkIHlvdXIgd29yay4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBDaG9vc2UgdGhlICJIYXJkd2FyZSIgdGhhdCB0aGUgYnVnIGltcGFjdHMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgQ2hvb3NlIHRoZSAiQXJjaGl0ZWN0dXJlIiB0aGF0IHRoZSBidWcgaW1wYWN0cy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBDaG9vc2UgYSAiRG9jdW1lbnRhdGlvbiBjaGFuZ2UiIGl0ZW0gZm9yIHRoZSBidWcuCi0gICAgICAgICAgICAgICAgRml4aW5nIGEgYnVnIG1pZ2h0IG9yIG1pZ2h0IG5vdCBhZmZlY3QgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uLgotICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdW5zdXJlIG9mIHRoZSBpbXBhY3QgdG8gdGhlIGRvY3VtZW50YXRpb24sIHNlbGVjdAotICAgICAgICAgICAgICAgICJEb24ndCBLbm93Ii4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBQcm92aWRlIGEgYnJpZWYgIlN1bW1hcnkiIG9mIHRoZSBidWcuCi0gICAgICAgICAgICAgICAgVHJ5IHRvIGxpbWl0IHlvdXIgc3VtbWFyeSB0byBqdXN0IGEgbGluZSBvciB0d28gYW5kIGJlIHN1cmUKLSAgICAgICAgICAgICAgICB0byBjYXB0dXJlIHRoZSBlc3NlbmNlIG9mIHRoZSBidWcuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgUHJvdmlkZSBhIGRldGFpbGVkICJEZXNjcmlwdGlvbiIgb2YgdGhlIGJ1Zy4KLSAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHByb3ZpZGUgYXMgbXVjaCBkZXRhaWwgYXMgeW91IGNhbiBhYm91dCB0aGUgY29udGV4dCwKLSAgICAgICAgICAgICAgICBiZWhhdmlvciwgb3V0cHV0LCBhbmQgc28gZm9ydGggdGhhdCBzdXJyb3VuZHMgdGhlIGJ1Zy4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGV2ZW4gYXR0YWNoIHN1cHBvcnRpbmcgZmlsZXMgZm9yIG91dHB1dCBmcm9tIGxvZ3MgYnkKLSAgICAgICAgICAgICAgICB1c2luZyB0aGUgIkFkZCBhbiBhdHRhY2htZW50IiBidXR0b24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJTdWJtaXQgQnVnIiBidXR0b24gc3VibWl0IHRoZSBidWcuCi0gICAgICAgICAgICAgICAgQSBuZXcgQnVnemlsbGEgbnVtYmVyIGlzIGFzc2lnbmVkIHRvIHRoZSBidWcgYW5kIHRoZSBkZWZlY3QKLSAgICAgICAgICAgICAgICBpcyBsb2dnZWQgaW4gdGhlIGJ1ZyB0cmFja2luZyBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgIE9uY2UgeW91IGZpbGUgYSBidWcsIHRoZSBidWcgaXMgcHJvY2Vzc2VkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IEJ1ZwotICAgICAgICBUcmlhZ2UgVGVhbSBhbmQgZnVydGhlciBkZXRhaWxzIGNvbmNlcm5pbmcgdGhlIGJ1ZyBhcmUgYXNzaWduZWQKLSAgICAgICAgKGUuZy4gcHJpb3JpdHkgYW5kIG93bmVyKS4KLSAgICAgICAgWW91IGFyZSB0aGUgIlN1Ym1pdHRlciIgb2YgdGhlIGJ1ZyBhbmQgYW55IGZ1cnRoZXIgY2F0ZWdvcml6YXRpb24sCi0gICAgICAgIHByb2dyZXNzLCBvciBjb21tZW50cyBvbiB0aGUgYnVnIHJlc3VsdCBpbiBCdWd6aWxsYSBzZW5kaW5nIHlvdSBhbgotICAgICAgICBhdXRvbWF0ZWQgZW1haWwgY29uY2VybmluZyB0aGUgcGFydGljdWxhciBjaGFuZ2Ugb3IgcHJvZ3Jlc3MgdG8gdGhlCi0gICAgICAgIGJ1Zy4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz4KLSAgICA8dGl0bGU+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQ29udHJpYnV0aW9ucyB0byB0aGUgWW9jdG8gUHJvamVjdCBhbmQgT3BlbkVtYmVkZGVkIGFyZSB2ZXJ5IHdlbGNvbWUuCi0gICAgICAgIEJlY2F1c2UgdGhlIHN5c3RlbSBpcyBleHRyZW1lbHkgY29uZmlndXJhYmxlIGFuZCBmbGV4aWJsZSwgd2UgcmVjb2duaXplCi0gICAgICAgIHRoYXQgZGV2ZWxvcGVycyB3aWxsIHdhbnQgdG8gZXh0ZW5kLCBjb25maWd1cmUgb3Igb3B0aW1pemUgaXQgZm9yCi0gICAgICAgIHRoZWlyIHNwZWNpZmljIHVzZXMuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYSBtYWlsaW5nIGxpc3QgYW5kIGEgcGF0Y2gtYmFzZWQgd29ya2Zsb3cKLSAgICAgICAgdGhhdCBpcyBzaW1pbGFyIHRvIHRoZSBMaW51eCBrZXJuZWwgYnV0IGNvbnRhaW5zIGltcG9ydGFudAotICAgICAgICBkaWZmZXJlbmNlcy4KLSAgICAgICAgSW4gZ2VuZXJhbCwgYSBtYWlsaW5nIGxpc3QgZXhpc3RzIHRocm91Z2ggd2hpY2ggeW91IGNhbiBzdWJtaXQKLSAgICAgICAgcGF0Y2hlcy4KLSAgICAgICAgWW91IHNob3VsZCBzZW5kIHBhdGNoZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG1haWxpbmcgbGlzdCBzbyB0aGF0IHRoZXkKLSAgICAgICAgY2FuIGJlIHJldmlld2VkIGFuZCBtZXJnZWQgYnkgdGhlIGFwcHJvcHJpYXRlIG1haW50YWluZXIuCi0gICAgICAgIFRoZSBzcGVjaWZpYyBtYWlsaW5nIGxpc3QgeW91IG5lZWQgdG8gdXNlIGRlcGVuZHMgb24gdGhlCi0gICAgICAgIGxvY2F0aW9uIG9mIHRoZSBjb2RlIHlvdSBhcmUgY2hhbmdpbmcuCi0gICAgICAgIEVhY2ggY29tcG9uZW50IChlLmcuIGxheWVyKSBzaG91bGQgaGF2ZSBhCi0gICAgICAgIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgaW5kaWNhdGVzIHdoZXJlIHRvIHNlbmQKLSAgICAgICAgdGhlIGNoYW5nZXMgYW5kIHdoaWNoIHByb2Nlc3MgdG8gZm9sbG93LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBZb3UgY2FuIHNlbmQgdGhlIHBhdGNoIHRvIHRoZSBtYWlsaW5nIGxpc3QgdXNpbmcgd2hpY2hldmVyIGFwcHJvYWNoCi0gICAgICAgIHlvdSBmZWVsIGNvbWZvcnRhYmxlIHdpdGggdG8gZ2VuZXJhdGUgdGhlIHBhdGNoLgotICAgICAgICBPbmNlIHNlbnQsIHRoZSBwYXRjaCBpcyB1c3VhbGx5IHJldmlld2VkIGJ5IHRoZSBjb21tdW5pdHkgYXQgbGFyZ2UuCi0gICAgICAgIElmIHNvbWVib2R5IGhhcyBjb25jZXJucyB3aXRoIHRoZSBwYXRjaCwgdGhleSB3aWxsIHVzdWFsbHkgdm9pY2UKLSAgICAgICAgdGhlaXIgY29uY2VybiBvdmVyIHRoZSBtYWlsaW5nIGxpc3QuCi0gICAgICAgIElmIGEgcGF0Y2ggZG9lcyBub3QgcmVjZWl2ZSBhbnkgbmVnYXRpdmUgcmV2aWV3cywgdGhlIG1haW50YWluZXIgb2YKLSAgICAgICAgdGhlIGFmZmVjdGVkIGxheWVyIHR5cGljYWxseSB0YWtlcyB0aGUgcGF0Y2gsIHRlc3RzIGl0LCBhbmQgdGhlbgotICAgICAgICBiYXNlZCBvbiBzdWNjZXNzZnVsIHRlc3RpbmcsIG1lcmdlcyB0aGUgcGF0Y2guCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmEgaWQ9J2ZpZ3VyaW5nLW91dC10aGUtbWFpbGluZy1saXN0LXRvLXVzZSc+Ci0gICAgICAgIFRoZSAicG9reSIgcmVwb3NpdG9yeSwgd2hpY2ggaXMgdGhlIFlvY3RvIFByb2plY3QncyByZWZlcmVuY2UgYnVpbGQKLSAgICAgICAgZW52aXJvbm1lbnQsIGlzIGEgaHlicmlkIHJlcG9zaXRvcnkgdGhhdCBjb250YWlucyBzZXZlcmFsCi0gICAgICAgIGluZGl2aWR1YWwgcGllY2VzIChlLmcuIEJpdEJha2UsIE1ldGFkYXRhLCBkb2N1bWVudGF0aW9uLAotICAgICAgICBhbmQgc28gZm9ydGgpIGJ1aWx0IHVzaW5nIHRoZSBjb21iby1sYXllciB0b29sLgotICAgICAgICBUaGUgdXBzdHJlYW0gbG9jYXRpb24gdXNlZCBmb3Igc3VibWl0dGluZyBjaGFuZ2VzIHZhcmllcyBieQotICAgICAgICBjb21wb25lbnQ6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvcmUgTWV0YWRhdGE6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBTZW5kIHlvdXIgcGF0Y2ggdG8gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvbWFpbG1hbi9saXN0aW5mby9vcGVuZW1iZWRkZWQtY29yZSc+b3BlbmVtYmVkZGVkLWNvcmU8L3VsaW5rPgotICAgICAgICAgICAgICAgIG1haWxpbmcgbGlzdC4gIEZvciBleGFtcGxlLCBhIGNoYW5nZSB0byBhbnl0aGluZyB1bmRlcgotICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IG9yCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBzaG91bGQgYmUgc2VudAotICAgICAgICAgICAgICAgIHRvIHRoaXMgbWFpbGluZyBsaXN0LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CaXRCYWtlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRm9yIGNoYW5nZXMgdG8gQml0QmFrZSAoaS5lLiBhbnl0aGluZyB1bmRlciB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGRpcmVjdG9yeSksIHNlbmQgeW91ciBwYXRjaAotICAgICAgICAgICAgICAgIHRvIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL21haWxtYW4vbGlzdGluZm8vYml0YmFrZS1kZXZlbCc+Yml0YmFrZS1kZXZlbDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgbWFpbGluZyBsaXN0LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4ibWV0YS0qIiB0cmVlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZXNlIHRyZWVzIGNvbnRhaW4gTWV0YWRhdGEuCi0gICAgICAgICAgICAgICAgVXNlIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9saXN0aW5mby9wb2t5Jz5wb2t5PC91bGluaz4KLSAgICAgICAgICAgICAgICBtYWlsaW5nIGxpc3QuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb3IgY2hhbmdlcyB0byBvdGhlciBsYXllcnMgaG9zdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0IHNvdXJjZQotICAgICAgICByZXBvc2l0b3JpZXMgKGkuZS4gPGZpbGVuYW1lPnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiksIHRvb2xzLAotICAgICAgICBhbmQgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiwgdXNlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvbGlzdGluZm8veW9jdG8nPllvY3RvIFByb2plY3Q8L3VsaW5rPgotICAgICAgICBnZW5lcmFsIG1haWxpbmcgbGlzdC4KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBTb21ldGltZXMgYSBsYXllcidzIGRvY3VtZW50YXRpb24gc3BlY2lmaWVzIHRvIHVzZSBhCi0gICAgICAgICAgICBwYXJ0aWN1bGFyIG1haWxpbmcgbGlzdC4KLSAgICAgICAgICAgIElmIHNvLCB1c2UgdGhhdCBsaXN0LgotICAgICAgICA8L25vdGU+Ci0gICAgICAgIEZvciBhZGRpdGlvbmFsIHJlY2lwZXMgdGhhdCBkbyBub3QgZml0IGludG8gdGhlIGNvcmUgTWV0YWRhdGEsIHlvdQotICAgICAgICBzaG91bGQgZGV0ZXJtaW5lIHdoaWNoIGxheWVyIHRoZSByZWNpcGUgc2hvdWxkIGdvIGludG8gYW5kIHN1Ym1pdAotICAgICAgICB0aGUgY2hhbmdlIGluIHRoZSBtYW5uZXIgcmVjb21tZW5kZWQgYnkgdGhlIGRvY3VtZW50YXRpb24gKGUuZy4KLSAgICAgICAgdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlKSBzdXBwbGllZCB3aXRoIHRoZSBsYXllci4KLSAgICAgICAgSWYgaW4gZG91YnQsIHBsZWFzZSBhc2sgb24gdGhlIFlvY3RvIGdlbmVyYWwgbWFpbGluZyBsaXN0IG9yIG9uCi0gICAgICAgIHRoZSBvcGVuZW1iZWRkZWQtZGV2ZWwgbWFpbGluZyBsaXN0LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBZb3UgY2FuIGFsc28gcHVzaCBhIGNoYW5nZSB1cHN0cmVhbSBhbmQgcmVxdWVzdCBhIG1haW50YWluZXIgdG8KLSAgICAgICAgcHVsbCB0aGUgY2hhbmdlIGludG8gdGhlIGNvbXBvbmVudCdzIHVwc3RyZWFtIHJlcG9zaXRvcnkuCi0gICAgICAgIFlvdSBkbyB0aGlzIGJ5IHB1c2hpbmcgdG8gYSBjb250cmlidXRpb24gcmVwb3NpdG9yeSB0aGF0IGlzIHVwc3RyZWFtLgotICAgICAgICBTZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN3b3JrZmxvd3MnPldvcmtmbG93czwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGFkZGl0aW9uYWwKLSAgICAgICAgY29uY2VwdHMgb24gd29ya2luZyBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVHdvIGNvbW1vbmx5IHVzZWQgdGVzdGluZyByZXBvc2l0b3JpZXMgZXhpc3QgZm9yCi0gICAgICAgIE9wZW5FbWJlZGRlZC1Db3JlOgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4icm9zcy9tdXQiIGJyYW5jaDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSAibXV0IiAobWFzdGVyLXVuZGVyLXRlc3QpIHRyZWUKLSAgICAgICAgICAgICAgICBleGlzdHMgaW4gdGhlIDxmaWxlbmFtZT5wb2t5LWNvbnRyaWI8L2ZpbGVuYW1lPiByZXBvc2l0b3J5Ci0gICAgICAgICAgICAgICAgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Zb2N0byBQcm9qZWN0IHNvdXJjZSByZXBvc2l0b3JpZXM8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Im1hc3Rlci1uZXh0IiBicmFuY2g6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGlzIGJyYW5jaCBpcyBwYXJ0IG9mIHRoZSBtYWluCi0gICAgICAgICAgICAgICAgInBva3kiIHJlcG9zaXRvcnkgaW4gdGhlIFlvY3RvIFByb2plY3Qgc291cmNlIHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIE1haW50YWluZXJzIHVzZSB0aGVzZSBicmFuY2hlcyB0byB0ZXN0IHN1Ym1pc3Npb25zIHByaW9yIHRvIG1lcmdpbmcKLSAgICAgICAgcGF0Y2hlcy4KLSAgICAgICAgVGh1cywgeW91IGNhbiBnZXQgYW4gaWRlYSBvZiB0aGUgc3RhdHVzIG9mIGEgcGF0Y2ggYmFzZWQgb24KLSAgICAgICAgd2hldGhlciB0aGUgcGF0Y2ggaGFzIGJlZW4gbWVyZ2VkIGludG8gb25lIG9mIHRoZXNlIGJyYW5jaGVzLgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFRoaXMgc3lzdGVtIGlzIGltcGVyZmVjdCBhbmQgY2hhbmdlcyBjYW4gc29tZXRpbWVzIGdldCBsb3N0IGluIHRoZQotICAgICAgICAgICAgZmxvdy4KLSAgICAgICAgICAgIEFza2luZyBhYm91dCB0aGUgc3RhdHVzIG9mIGEgcGF0Y2ggb3IgY2hhbmdlIGlzIHJlYXNvbmFibGUgaWYgdGhlCi0gICAgICAgICAgICBjaGFuZ2UgaGFzIGJlZW4gaWRsZSBmb3IgYSB3aGlsZSB3aXRoIG5vIGZlZWRiYWNrLgotICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZG9lcyBoYXZlIHBsYW5zIHRvIHVzZQotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGF0Y2h3b3JrXyhzb2Z0d2FyZSknPlBhdGNod29yazwvdWxpbms+Ci0gICAgICAgICAgICB0byB0cmFjayB0aGUgc3RhdHVzIG9mIHBhdGNoZXMgYW5kIGFsc28gdG8gYXV0b21hdGljYWxseSBwcmV2aWV3Ci0gICAgICAgICAgICBwYXRjaGVzLgotICAgICAgICA8L25vdGU+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcHJvdmlkZSBwcm9jZWR1cmVzIGZvciBzdWJtaXR0aW5nIGEgY2hhbmdlLgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSdwdXNoaW5nLWEtY2hhbmdlLXVwc3RyZWFtJz4KLSAgICAgICAgPHRpdGxlPlVzaW5nIFNjcmlwdHMgdG8gUHVzaCBhIENoYW5nZSBVcHN0cmVhbSBhbmQgUmVxdWVzdCBhIFB1bGw8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9sbG93IHRoaXMgcHJvY2VkdXJlIHRvIHB1c2ggYSBjaGFuZ2UgdG8gYW4gdXBzdHJlYW0gImNvbnRyaWIiCi0gICAgICAgICAgICBHaXQgcmVwb3NpdG9yeToKLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBnZW5lcmFsIEdpdCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcHVzaCBhIGNoYW5nZQotICAgICAgICAgICAgICAgIHVwc3RyZWFtIGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9ib29rL2VuL3YyL0Rpc3RyaWJ1dGVkLUdpdC1EaXN0cmlidXRlZC1Xb3JrZmxvd3MnPkdpdCBDb21tdW5pdHkgQm9vazwvdWxpbms+LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgWW91ciBDaGFuZ2VzIExvY2FsbHk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgTWFrZSB5b3VyIGNoYW5nZXMgaW4geW91ciBsb2NhbCBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBtYWtlIHNtYWxsLCBjb250cm9sbGVkLCBpc29sYXRlZCBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICBLZWVwaW5nIGNoYW5nZXMgc21hbGwgYW5kIGlzb2xhdGVkIGFpZHMgcmV2aWV3LAotICAgICAgICAgICAgICAgICAgICBtYWtlcyBtZXJnaW5nL3JlYmFzaW5nIGVhc2llciBhbmQga2VlcHMgdGhlIGNoYW5nZQotICAgICAgICAgICAgICAgICAgICBoaXN0b3J5IGNsZWFuIHNob3VsZCBhbnlvbmUgbmVlZCB0byByZWZlciB0byBpdCBpbgotICAgICAgICAgICAgICAgICAgICBmdXR1cmUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0YWdlIFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTdGFnZSB5b3VyIGNoYW5nZXMgYnkgdXNpbmcgdGhlIDxmaWxlbmFtZT5naXQgYWRkPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvbiBlYWNoIGZpbGUgeW91IGNoYW5nZWQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nbWFraW5nLXN1cmUteW91LWhhdmUtY29ycmVjdC1jb21taXQtaW5mb3JtYXRpb24nPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbWl0IFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDb21taXQgdGhlIGNoYW5nZSBieSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBjb21taXQ8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBNYWtlIHN1cmUgeW91ciBjb21taXQgaW5mb3JtYXRpb24gZm9sbG93cyBzdGFuZGFyZHMgYnkKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHRoZXNlIGFjY2VwdGVkIGNvbnZlbnRpb25zOgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gaW5jbHVkZSBhICJTaWduZWQtb2ZmLWJ5OiIgbGluZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1lIHN0eWxlIGFzIHJlcXVpcmVkIGJ5IHRoZSBMaW51eCBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaW5nIHRoaXMgbGluZSBzaWduaWZpZXMgdGhhdCB5b3UsIHRoZSBzdWJtaXR0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBhZ3JlZWQgdG8gdGhlIERldmVsb3BlcidzIENlcnRpZmljYXRlIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JpZ2luIDEuMSBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgRGV2ZWxvcGVyJ3MgQ2VydGlmaWNhdGUgb2YgT3JpZ2luIDEuMQotCi0gICAgIEJ5IG1ha2luZyBhIGNvbnRyaWJ1dGlvbiB0byB0aGlzIHByb2plY3QsIEkgY2VydGlmeSB0aGF0OgotCi0gICAgIChhKSBUaGUgY29udHJpYnV0aW9uIHdhcyBjcmVhdGVkIGluIHdob2xlIG9yIGluIHBhcnQgYnkgbWUgYW5kIEkKLSAgICAgICAgIGhhdmUgdGhlIHJpZ2h0IHRvIHN1Ym1pdCBpdCB1bmRlciB0aGUgb3BlbiBzb3VyY2UgbGljZW5zZQotICAgICAgICAgaW5kaWNhdGVkIGluIHRoZSBmaWxlOyBvcgotCi0gICAgIChiKSBUaGUgY29udHJpYnV0aW9uIGlzIGJhc2VkIHVwb24gcHJldmlvdXMgd29yayB0aGF0LCB0byB0aGUgYmVzdAotICAgICAgICAgb2YgbXkga25vd2xlZGdlLCBpcyBjb3ZlcmVkIHVuZGVyIGFuIGFwcHJvcHJpYXRlIG9wZW4gc291cmNlCi0gICAgICAgICBsaWNlbnNlIGFuZCBJIGhhdmUgdGhlIHJpZ2h0IHVuZGVyIHRoYXQgbGljZW5zZSB0byBzdWJtaXQgdGhhdAotICAgICAgICAgd29yayB3aXRoIG1vZGlmaWNhdGlvbnMsIHdoZXRoZXIgY3JlYXRlZCBpbiB3aG9sZSBvciBpbiBwYXJ0Ci0gICAgICAgICBieSBtZSwgdW5kZXIgdGhlIHNhbWUgb3BlbiBzb3VyY2UgbGljZW5zZSAodW5sZXNzIEkgYW0KLSAgICAgICAgIHBlcm1pdHRlZCB0byBzdWJtaXQgdW5kZXIgYSBkaWZmZXJlbnQgbGljZW5zZSksIGFzIGluZGljYXRlZAotICAgICAgICAgaW4gdGhlIGZpbGU7IG9yCi0KLSAgICAgKGMpIFRoZSBjb250cmlidXRpb24gd2FzIHByb3ZpZGVkIGRpcmVjdGx5IHRvIG1lIGJ5IHNvbWUgb3RoZXIKLSAgICAgICAgIHBlcnNvbiB3aG8gY2VydGlmaWVkIChhKSwgKGIpIG9yIChjKSBhbmQgSSBoYXZlIG5vdCBtb2RpZmllZAotICAgICAgICAgaXQuCi0KLSAgICAgKGQpIEkgdW5kZXJzdGFuZCBhbmQgYWdyZWUgdGhhdCB0aGlzIHByb2plY3QgYW5kIHRoZSBjb250cmlidXRpb24KLSAgICAgICAgIGFyZSBwdWJsaWMgYW5kIHRoYXQgYSByZWNvcmQgb2YgdGhlIGNvbnRyaWJ1dGlvbiAoaW5jbHVkaW5nIGFsbAotICAgICAgICAgcGVyc29uYWwgaW5mb3JtYXRpb24gSSBzdWJtaXQgd2l0aCBpdCwgaW5jbHVkaW5nIG15IHNpZ24tb2ZmKSBpcwotICAgICAgICAgbWFpbnRhaW5lZCBpbmRlZmluaXRlbHkgYW5kIG1heSBiZSByZWRpc3RyaWJ1dGVkIGNvbnNpc3RlbnQgd2l0aAotICAgICAgICAgdGhpcyBwcm9qZWN0IG9yIHRoZSBvcGVuIHNvdXJjZSBsaWNlbnNlKHMpIGludm9sdmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGEgc2luZ2xlLWxpbmUgc3VtbWFyeSBvZiB0aGUgY2hhbmdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtb3JlIGV4cGxhbmF0aW9uIGlzIG5lZWRlZCwgcHJvdmlkZSBtb3JlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsIGluIHRoZSBib2R5IG9mIHRoZSBjb21taXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzdW1tYXJ5IGlzIHR5cGljYWxseSB2aWV3YWJsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvcnRsaXN0IiBvZiBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIHByb3ZpZGluZyBzb21ldGhpbmcgc2hvcnQgYW5kIGRlc2NyaXB0aXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBnaXZlcyB0aGUgcmVhZGVyIGEgc3VtbWFyeSBvZiB0aGUgY2hhbmdlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZnVsIHdoZW4gdmlld2luZyBhIGxpc3Qgb2YgbWFueSBjb21taXRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgcHJlZml4IHRoaXMgc2hvcnQgZGVzY3JpcHRpb24gd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgbmFtZSAoaWYgY2hhbmdpbmcgYSByZWNpcGUpLCBvciBlbHNlIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2hvcnQgZm9ybSBwYXRoIHRvIHRoZSBmaWxlIGJlaW5nIGNoYW5nZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBib2R5IG9mIHRoZSBjb21taXQgbWVzc2FnZSwgcHJvdmlkZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbGVkIGluZm9ybWF0aW9uIHRoYXQgZGVzY3JpYmVzIHdoYXQgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCwgd2h5IHlvdSBtYWRlIHRoZSBjaGFuZ2UsIGFuZCB0aGUgYXBwcm9hY2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgdXNlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBtaWdodCBhbHNvIGJlIGhlbHBmdWwgaWYgeW91IG1lbnRpb24gaG93IHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlZCB0aGUgY2hhbmdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYXMgbXVjaCBkZXRhaWwgYXMgeW91IGNhbiBpbiB0aGUgYm9keSBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21taXQgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIHByb3ZpZGUgYSBtb3JlIGRldGFpbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uIG9mIGEgY2hhbmdlIGlmIHRoZSBjaGFuZ2UgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3IgdG8gdGhlIHBvaW50IG9mIHRoZSBzaW5nbGUgbGluZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5IHByb3ZpZGluZyBhbGwgdGhlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgY2hhbmdlIGFkZHJlc3NlcyBhIHNwZWNpZmljIGJ1ZyBvciBpc3N1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgYnVnLXRyYWNraW5nIElELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgYSByZWZlcmVuY2UgdG8gdGhhdCBJRCBpbiB5b3VyIGRldGFpbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYSBzcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlbnRpb24gZm9yIGJ1ZyByZWZlcmVuY2VzIC0gYW55IGNvbW1pdCB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzIGEgc3BlY2lmaWMgYnVnIHNob3VsZCB1c2UgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0gZm9yIHRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHVzZSB0aGUgYWN0dWFsIGJ1Zy10cmFja2luZyBJRCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVnemlsbGEgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJ1Zy1pZDwvcmVwbGFjZWFibGU+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgRml4ZXMgW1lPQ1RPICM8cmVwbGFjZWFibGU+YnVnLWlkPC9yZXBsYWNlYWJsZT5dCi0KLSAgICAgPHJlcGxhY2VhYmxlPmRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGNoYW5nZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHVzaCBZb3VyIENvbW1pdHMgdG8gYSAiQ29udHJpYiIgVXBzdHJlYW06PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYXJyYW5nZWQgZm9yIHBlcm1pc3Npb25zIHRvIHB1c2ggdG8gYW4KLSAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW0gY29udHJpYiByZXBvc2l0b3J5LCBwdXNoIHRoZSBjaGFuZ2UgdG8gdGhhdAotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IHB1c2ggPHJlcGxhY2VhYmxlPnVwc3RyZWFtX3JlbW90ZV9yZXBvPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPmxvY2FsX2JyYW5jaF9uYW1lPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZSBwZXJtaXNzaW9ucyB0byBwdXNoIGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtIDxmaWxlbmFtZT5tZXRhLWludGVsLWNvbnRyaWI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCB5b3UgYXJlIHdvcmtpbmcgaW4gYSBsb2NhbCBicmFuY2ggbmFtZWQKLSAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnlvdXJfbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9SRUFETUU8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIHB1c2hlcyB5b3VyIGxvY2FsIGNvbW1pdHMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsLWNvbnRyaWI8L2ZpbGVuYW1lPiB1cHN0cmVhbQotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBwdXRzIHRoZSBjb21taXQgaW4gYSBicmFuY2ggbmFtZWQKLSAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnlvdXJfbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9SRUFETUU8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBwdXNoIG1ldGEtaW50ZWwtY29udHJpYiA8cmVwbGFjZWFibGU+eW91cl9uYW1lPC9yZXBsYWNlYWJsZT4vUkVBRE1FCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdwdXNoLWRldGVybWluZS13aG8tdG8tbm90aWZ5Jz4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGVybWluZSBXaG8gdG8gTm90aWZ5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIERldGVybWluZSB0aGUgbWFpbnRhaW5lciBvciB0aGUgbWFpbGluZyBsaXN0Ci0gICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IG5lZWQgdG8gbm90aWZ5IGZvciB0aGUgY2hhbmdlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5CZWZvcmUgc3VibWl0dGluZyBhbnkgY2hhbmdlLCB5b3UgbmVlZCB0byBiZSBzdXJlCi0gICAgICAgICAgICAgICAgICAgIHdobyB0aGUgbWFpbnRhaW5lciBpcyBvciB3aGF0IG1haWxpbmcgbGlzdCB0aGF0IHlvdSBuZWVkCi0gICAgICAgICAgICAgICAgICAgIHRvIG5vdGlmeS4KLSAgICAgICAgICAgICAgICAgICAgVXNlIGVpdGhlciB0aGVzZSBtZXRob2RzIHRvIGZpbmQgb3V0OgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWludGVuYW5jZSBGaWxlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhhbWluZSB0aGUgPGZpbGVuYW1lPm1haW50YWluZXJzLmluYzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSwgd2hpY2ggaXMgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGU8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzZWUgd2hvIGlzIHJlc3BvbnNpYmxlIGZvciBjb2RlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWFyY2ggYnkgRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdCc+R2l0PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBlbnRlciB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gYnJpbmcgdXAgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0IGxpc3Qgb2YgYWxsIGNvbW1pdHMgYWdhaW5zdCBhIHNwZWNpZmljIGZpbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBnaXQgc2hvcnRsb2cgLS0gPHJlcGxhY2VhYmxlPmZpbGVuYW1lPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVzdCBwcm92aWRlIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGZvciB3aGljaCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgaW50ZXJlc3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgaXMgbm90IG9yZGVyZWQgYnkgaGlzdG9yeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBkb2VzIGluY2x1ZGUgYSBsaXN0IG9mIGV2ZXJ5b25lIHdobyBoYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXR0ZWQgZ3JvdXBlZCBieSBuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb20gdGhlIGxpc3QsIHlvdSBjYW4gc2VlIHdobyBpcyByZXNwb25zaWJsZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVsayBvZiB0aGUgY2hhbmdlcyBhZ2FpbnN0IHRoZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGFtaW5lIHRoZSBMaXN0IG9mIE1haWxpbmcgTGlzdHM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSBsaXN0IG9mIHRoZSBZb2N0byBQcm9qZWN0IGFuZCByZWxhdGVkIG1haWxpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPk1haWxpbmcgbGlzdHM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIGEgUHVsbCBSZXF1ZXN0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIE5vdGlmeSB0aGUgbWFpbnRhaW5lciBvciB0aGUgbWFpbGluZyBsaXN0IHRoYXQgeW91IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgcHVzaGVkIGEgY2hhbmdlIGJ5IG1ha2luZyBhIHB1bGwgcmVxdWVzdC48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgdHdvIHNjcmlwdHMgdGhhdAotICAgICAgICAgICAgICAgICAgICBjb252ZW5pZW50bHkgbGV0IHlvdSBnZW5lcmF0ZSBhbmQgc2VuZCBwdWxsIHJlcXVlc3RzIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICBUaGVzZSBzY3JpcHRzIGFyZSA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIHNjcmlwdHMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3J5IHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5+L3Bva3kvc2NyaXB0czwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzaW5nIHRoZXNlIHNjcmlwdHMgY29ycmVjdGx5IGZvcm1hdHMgdGhlIHJlcXVlc3RzCi0gICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgaW50cm9kdWNpbmcgYW55IHdoaXRlc3BhY2Ugb3IgSFRNTCBmb3JtYXR0aW5nLgotICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbnRhaW5lciB0aGF0IHJlY2VpdmVzIHlvdXIgcGF0Y2hlcyBlaXRoZXIgZGlyZWN0bHkKLSAgICAgICAgICAgICAgICAgICAgb3IgdGhyb3VnaCB0aGUgbWFpbGluZyBsaXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gc2F2ZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgYXBwbHkgdGhlbSBkaXJlY3RseSBmcm9tIHlvdXIgZW1haWxzLgotICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGVzZSBzY3JpcHRzIGlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBzZW5kaW5nCi0gICAgICAgICAgICAgICAgICAgIHBhdGNoZXMuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkZpcnN0LCBjcmVhdGUgdGhlIHB1bGwgcmVxdWVzdC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBydW5zIHRoZSBzY3JpcHQsCi0gICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeSBpbiB0aGUgY29udHJpYiBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgaW50byB3aGljaCB5b3UgcHVzaGVkIHRoZSBjaGFuZ2UsIGFuZCBwcm92aWRlcyBhIHN1YmplY3QKLSAgICAgICAgICAgICAgICAgICAgbGluZSBpbiB0aGUgY3JlYXRlZCBwYXRjaCBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIH4vcG9reS9zY3JpcHRzL2NyZWF0ZS1wdWxsLXJlcXVlc3QgLXUgbWV0YS1pbnRlbC1jb250cmliIC1zICJVcGRhdGVkIE1hbnVhbCBTZWN0aW9uIFJlZmVyZW5jZSBpbiBSRUFETUUiCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgUnVubmluZyB0aGlzIHNjcmlwdCBmb3JtcwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5wYXRjaDwvZmlsZW5hbWU+IGZpbGVzIGluIGEgZm9sZGVyIG5hbWVkCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wdWxsLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPlBJRDwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgT25lIG9mIHRoZSBwYXRjaCBmaWxlcyBpcyBhIGNvdmVyIGxldHRlci48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+QmVmb3JlIHJ1bm5pbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHNjcmlwdCwgeW91IG11c3QKLSAgICAgICAgICAgICAgICAgICAgZWRpdCB0aGUgY292ZXIgbGV0dGVyIHBhdGNoIHRvIGluc2VydCBpbmZvcm1hdGlvbiBhYm91dAotICAgICAgICAgICAgICAgICAgICB5b3VyIGNoYW5nZS4KLSAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgZWRpdGluZyB0aGUgY292ZXIgbGV0dGVyLCBzZW5kIHRoZSBwdWxsIHJlcXVlc3QuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgcnVucyB0aGUgc2NyaXB0IGFuZAotICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIHBhdGNoIGRpcmVjdG9yeSBhbmQgZW1haWwgYWRkcmVzcy4KLSAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgZW1haWwgYWRkcmVzcyBpcyBhIG1haWxpbmcgbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIH4vcG9reS9zY3JpcHRzL3NlbmQtcHVsbC1yZXF1ZXN0IC1wIH4vbWV0YS1pbnRlbC9wdWxsLTEwNTY1IC10IG1ldGEtaW50ZWxAeW9jdG9wcm9qZWN0Lm9yZwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGZvbGxvdyB0aGUgcHJvbXB0cyBhcyB0aGUgc2NyaXB0IGlzCi0gICAgICAgICAgICAgICAgICAgIGludGVyYWN0aXZlLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBoZWxwIG9uIHVzaW5nIHRoZXNlIHNjcmlwdHMsIHNpbXBseSBwcm92aWRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1oPC9maWxlbmFtZT4gYXJndW1lbnQgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBwb2t5L3NjcmlwdHMvY3JlYXRlLXB1bGwtcmVxdWVzdCAtaAotICAgICAkIHBva3kvc2NyaXB0cy9zZW5kLXB1bGwtcmVxdWVzdCAtaAotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdzdWJtaXR0aW5nLWEtcGF0Y2gnPgotICAgICAgICA8dGl0bGU+VXNpbmcgRW1haWwgdG8gU3VibWl0IGEgUGF0Y2g8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBzdWJtaXQgcGF0Y2hlcyB3aXRob3V0IHVzaW5nIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHNjcmlwdHMgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgcHJldmlvdXMgc2VjdGlvbi4KLSAgICAgICAgICAgIEhvd2V2ZXIsIGtlZXAgaW4gbWluZCwgdGhlIHByZWZlcnJlZCBtZXRob2QgaXMgdG8gdXNlIHRoZSBzY3JpcHRzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIGNvbXBvbmVudHMgY2hhbmdlZCwgeW91IG5lZWQgdG8gc3VibWl0IHRoZSBlbWFpbAotICAgICAgICAgICAgdG8gYSBzcGVjaWZpYyBtYWlsaW5nIGxpc3QuCi0gICAgICAgICAgICBGb3Igc29tZSBndWlkYW5jZSBvbiB3aGljaCBtYWlsaW5nIGxpc3QgdG8gdXNlLCBzZWUgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdmaWd1cmluZy1vdXQtdGhlLW1haWxpbmctbGlzdC10by11c2UnPmJlZ2lubmluZzwvbGluaz4KLSAgICAgICAgICAgIG9mIHRoaXMgc2VjdGlvbi4KLSAgICAgICAgICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgYXZhaWxhYmxlIG1haWxpbmcgbGlzdHMsIHNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPk1haWxpbmcgTGlzdHM8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSGVyZSBpcyB0aGUgZ2VuZXJhbCBwcm9jZWR1cmUgb24gaG93IHRvIHN1Ym1pdCBhIHBhdGNoIHRocm91Z2gKLSAgICAgICAgICAgIGVtYWlsIHdpdGhvdXQgdXNpbmcgdGhlIHNjcmlwdHM6Ci0gICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBZb3VyIENoYW5nZXMgTG9jYWxseTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBNYWtlIHlvdXIgY2hhbmdlcyBpbiB5b3VyIGxvY2FsIEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG1ha2Ugc21hbGwsIGNvbnRyb2xsZWQsIGlzb2xhdGVkIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgIEtlZXBpbmcgY2hhbmdlcyBzbWFsbCBhbmQgaXNvbGF0ZWQgYWlkcyByZXZpZXcsCi0gICAgICAgICAgICAgICAgICAgIG1ha2VzIG1lcmdpbmcvcmViYXNpbmcgZWFzaWVyIGFuZCBrZWVwcyB0aGUgY2hhbmdlCi0gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkgY2xlYW4gc2hvdWxkIGFueW9uZSBuZWVkIHRvIHJlZmVyIHRvIGl0IGluCi0gICAgICAgICAgICAgICAgICAgIGZ1dHVyZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhZ2UgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFN0YWdlIHlvdXIgY2hhbmdlcyBieSB1c2luZyB0aGUgPGZpbGVuYW1lPmdpdCBhZGQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBjb21tYW5kIG9uIGVhY2ggZmlsZSB5b3UgY2hhbmdlZC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbWl0IFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDb21taXQgdGhlIGNoYW5nZSBieSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBjb21taXQgLS1zaWdub2ZmPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIDxmaWxlbmFtZT4tLXNpZ25vZmY8L2ZpbGVuYW1lPiBvcHRpb24gaWRlbnRpZmllcwotICAgICAgICAgICAgICAgICAgICB5b3UgYXMgdGhlIHBlcnNvbiBtYWtpbmcgdGhlIGNoYW5nZSBhbmQgYWxzbyBzYXRpc2ZpZXMKLSAgICAgICAgICAgICAgICAgICAgdGhlIERldmVsb3BlcidzIENlcnRpZmljYXRlIG9mIE9yaWdpbiAoRENPKSBzaG93biBlYXJsaWVyLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2hlbiB5b3UgZm9ybSBhIGNvbW1pdCwgeW91IG11c3QgZm9sbG93IGNlcnRhaW4KLSAgICAgICAgICAgICAgICAgICAgc3RhbmRhcmRzIGVzdGFibGlzaGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgICAgIHRlYW0uCi0gICAgICAgICAgICAgICAgICAgIFNlZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtYWtpbmctc3VyZS15b3UtaGF2ZS1jb3JyZWN0LWNvbW1pdC1pbmZvcm1hdGlvbic+U3RlcCAzPC9saW5rPgotICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvCi0gICAgICAgICAgICAgICAgICAgIHByb3ZpZGUgY29tbWl0IGluZm9ybWF0aW9uIHRoYXQgbWVldHMgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICBjb21taXQgbWVzc2FnZSBzdGFuZGFyZHMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZvcm1hdCB0aGUgQ29tbWl0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEZvcm1hdCB0aGUgY29tbWl0IGludG8gYW4gZW1haWwgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgVG8gZm9ybWF0IGNvbW1pdHMsIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBwcm92aWRlIHRoZSBjb21tYW5kLCB5b3UgbXVzdCBpbmNsdWRlIGEgcmV2aXNpb24KLSAgICAgICAgICAgICAgICAgICAgbGlzdCBvciBhIG51bWJlciBvZiBwYXRjaGVzIGFzIHBhcnQgb2YgdGhlIGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBlaXRoZXIgb2YgdGhlc2UgdHdvIGNvbW1hbmRzIHRha2VzIHlvdXIgbW9zdAotICAgICAgICAgICAgICAgICAgICByZWNlbnQgc2luZ2xlIGNvbW1pdCBhbmQgZm9ybWF0cyBpdCBhcyBhbiBlbWFpbCBtZXNzYWdlIGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IGRpcmVjdG9yeToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBmb3JtYXQtcGF0Y2ggLTEKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBvcgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGZvcm1hdC1wYXRjaCBIRUFEfgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkFmdGVyIHRoZSBjb21tYW5kIGlzIHJ1biwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGEgbnVtYmVyZWQgPGZpbGVuYW1lPi5wYXRjaDwvZmlsZW5hbWU+IGZpbGUgZm9yCi0gICAgICAgICAgICAgICAgICAgIHRoZSBjb21taXQuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBwcm92aWRlIHNldmVyYWwgY29tbWl0cyBhcyBwYXJ0IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCB0aGUgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIGEgc2VyaWVzIG9mIG51bWJlcmVkIGZpbGVzIGluIHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSDigJMgb25lIGZvciBlYWNoIGNvbW1pdC4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgbW9yZSB0aGFuIG9uZSBwYXRjaCwgeW91IHNob3VsZCBhbHNvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tY292ZXI8L2ZpbGVuYW1lPiBvcHRpb24gd2l0aCB0aGUgY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgd2hpY2ggZ2VuZXJhdGVzIGEgY292ZXIgbGV0dGVyIGFzIHRoZSBmaXJzdCAicGF0Y2giIGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSBzZXJpZXMuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdGhlbiBlZGl0IHRoZSBjb3ZlciBsZXR0ZXIgdG8gcHJvdmlkZSBhCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uIGZvciB0aGUgc2VyaWVzIG9mIHBhdGNoZXMuCi0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kLAotICAgICAgICAgICAgICAgICAgICBzZWUgPGZpbGVuYW1lPkdJVF9GT1JNQVRfUEFUQ0goMSk8L2ZpbGVuYW1lPiBkaXNwbGF5ZWQKLSAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5tYW4gZ2l0LWZvcm1hdC1wYXRjaDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBvciB3aWxsIGJlIGEgZnJlcXVlbnQgY29udHJpYnV0b3IgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IG9yIHRvIE9wZW5FbWJlZGRlZCwgeW91IG1pZ2h0IGNvbnNpZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0aW5nIGEgY29udHJpYiBhcmVhIGFuZCB0aGUgbmVjZXNzYXJ5IGFzc29jaWF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0cy4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbXBvcnQgdGhlIEZpbGVzIEludG8gWW91ciBNYWlsIENsaWVudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBJbXBvcnQgdGhlIGZpbGVzIGludG8geW91ciBtYWlsIGNsaWVudCBieSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgbXVzdCBoYXZlIHRoZSBwcm9wZXIgR2l0IHBhY2thZ2VzIGluc3RhbGxlZCBvbgotICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBob3N0LgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIFVidW50dSwgRGViaWFuLCBhbmQgRmVkb3JhIHRoZSBwYWNrYWdlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0LWVtYWlsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgc2VuZHMgZW1haWwgYnkgdXNpbmcgYSBsb2NhbCBvciByZW1vdGUgTWFpbCBUcmFuc3BvcnQgQWdlbnQKLSAgICAgICAgICAgICAgICAgICAgKE1UQSkgc3VjaCBhcyA8ZmlsZW5hbWU+bXNtdHA8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmRtYWlsPC9maWxlbmFtZT4sIG9yIHRocm91Z2ggYSBkaXJlY3QKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNtdHA8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGluIHlvdXIgR2l0Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5+Ly5naXRjb25maWc8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHN1Ym1pdHRpbmcgcGF0Y2hlcyB0aHJvdWdoIGVtYWlsIG9ubHksIGl0IGlzCi0gICAgICAgICAgICAgICAgICAgIHZlcnkgaW1wb3J0YW50IHRoYXQgeW91IHN1Ym1pdCB0aGVtIHdpdGhvdXQgYW55IHdoaXRlc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgb3IgSFRNTCBmb3JtYXR0aW5nIHRoYXQgZWl0aGVyIHlvdSBvciB5b3VyIG1haWxlcgotICAgICAgICAgICAgICAgICAgICBpbnRyb2R1Y2VzLgotICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbnRhaW5lciB0aGF0IHJlY2VpdmVzIHlvdXIgcGF0Y2hlcyBuZWVkcyB0byBiZSBhYmxlCi0gICAgICAgICAgICAgICAgICAgIHRvIHNhdmUgYW5kIGFwcGx5IHRoZW0gZGlyZWN0bHkgZnJvbSB5b3VyIGVtYWlscy4KLSAgICAgICAgICAgICAgICAgICAgQSBnb29kIHdheSB0byB2ZXJpZnkgdGhhdCB3aGF0IHlvdSBhcmUgc2VuZGluZyB3aWxsIGJlCi0gICAgICAgICAgICAgICAgICAgIGFwcGxpY2FibGUgYnkgdGhlIG1haW50YWluZXIgaXMgdG8gZG8gYSBkcnkgcnVuIGFuZCBzZW5kCi0gICAgICAgICAgICAgICAgICAgIHRoZW0gdG8geW91cnNlbGYgYW5kIHRoZW4gc2F2ZSBhbmQgYXBwbHkgdGhlbSBhcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5lciB3b3VsZC48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQgaXMKLSAgICAgICAgICAgICAgICAgICAgdGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIHNlbmRpbmcgeW91ciBwYXRjaGVzIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgIGVtYWlsIHNpbmNlIHRoZXJlIGlzIG5vIHJpc2sgb2YgY29tcHJvbWlzaW5nIHdoaXRlc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UsIHdoaWNoIGNhbiBvY2N1ciB3aGVuIHlvdSB1c2UKLSAgICAgICAgICAgICAgICAgICAgeW91ciBvd24gbWFpbCBjbGllbnQuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGFsc28gaGFzIHNldmVyYWwgb3B0aW9ucyB0aGF0IGxldCB5b3UKLSAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSByZWNpcGllbnRzIGFuZCBwZXJmb3JtIGZ1cnRoZXIgZWRpdGluZyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgZW1haWwgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgIHNlZSA8ZmlsZW5hbWU+R0lULVNFTkQtRU1BSUwoMSk8L2ZpbGVuYW1lPiBkaXNwbGF5ZWQgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tYW4gZ2l0LXNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci08L3NlY3Rpb24+Ci08L2NoYXB0ZXI+Ci08IS0tCi12aW06IGV4cGFuZHRhYiB0dz04MCB0cz00Ci0tLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1xZW11LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1xZW11LnhtbAppbmRleCA4NWU3MzE1Li40ZTdiNWRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sCkBAIC03LDE1ICs3LDUxIEBACiA8dGl0bGU+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdGl0bGU+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIHByb2NlZHVyZXMgdGhhdCBzaG93IHlvdSBob3cgdG8gdXNlIHRoZQotICAgICAgICBRdWljayBFTVVsYXRvciAoUUVNVSksIHdoaWNoIGlzIGFuIE9wZW4gU291cmNlIHByb2plY3QgdGhlIFlvY3RvCi0gICAgICAgIFByb2plY3QgdXNlcyBhcyBwYXJ0IG9mIGl0cyBkZXZlbG9wbWVudCAidG9vbCBzZXQiLgotICAgICAgICBGb3IgcmVmZXJlbmNlIGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mIFFFTVUsCi0gICAgICAgIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1xdWljay1lbXVsYXRvci1xZW11Jz5RdWljayBFTVVsYXRvciAoUUVNVSk8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB1c2VzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBRdWljayBFTVVsYXRvciAoUUVNVSkKKyAgICAgICAgT3BlbiBTb3VyY2UgcHJvamVjdCBhcyBwYXJ0IG9mIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50ICJ0b29sCisgICAgICAgIHNldCIuCisgICAgICAgIFRoaXMgY2hhcHRlciBwcm92aWRlcyBib3RoIHByb2NlZHVyZXMgdGhhdCBzaG93IHlvdSBob3cgdG8gdXNlIHRoZQorICAgICAgICBRdWljayBFTVVsYXRvciAoUUVNVSkgYW5kIG90aGVyIFFFTVUgaW5mb3JtYXRpb24gaGVscGZ1bCBmb3IKKyAgICAgICAgZGV2ZWxvcG1lbnQgcHVycG9zZXMuCiAgICAgPC9wYXJhPgogCisgICAgPHNlY3Rpb24gaWQ9J3FlbXUtZGV2LW92ZXJ2aWV3Jz4KKyAgICAgICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgWW9jdG8gUHJvamVjdCwgUUVNVSBpcyBhbgorICAgICAgICAgICAgZW11bGF0b3IgYW5kIHZpcnR1YWxpemF0aW9uIG1hY2hpbmUgdGhhdCBhbGxvd3MgeW91IHRvIHJ1biBhCisgICAgICAgICAgICBjb21wbGV0ZSBpbWFnZSB5b3UgaGF2ZSBidWlsdCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBhcyBqdXN0CisgICAgICAgICAgICBhbm90aGVyIHRhc2sgb24geW91ciBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICBRRU1VIGlzIHVzZWZ1bCBmb3IgcnVubmluZyBhbmQgdGVzdGluZyBpbWFnZXMgYW5kIGFwcGxpY2F0aW9ucyBvbgorICAgICAgICAgICAgc3VwcG9ydGVkIFlvY3RvIFByb2plY3QgYXJjaGl0ZWN0dXJlcyB3aXRob3V0IGhhdmluZyBhY3R1YWwKKyAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIFFFTVUgdG8gcnVuIGF1dG9tYXRlZAorICAgICAgICAgICAgUXVhbGl0eSBBc3N1cmFuY2UgKFFBKSB0ZXN0cyBvbiBmaW5hbCBpbWFnZXMgc2hpcHBlZCB3aXRoIGVhY2gKKyAgICAgICAgICAgIHJlbGVhc2UuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCB0aGUgc2FtZSBhcyBRRU1VIGluIGdlbmVyYWwuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBicmllZiByZWZlcmVuY2UgZm9yIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBRRU1VLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3Igb2ZmaWNpYWwgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gUUVNVSBpbiBnZW5lcmFsLCBzZWUKKyAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgcmVmZXJlbmNlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvTWFpbl9QYWdlJz5RRU1VIFdlYnNpdGU8L3VsaW5rPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgb2ZmaWNpYWwgd2Vic2l0ZSBmb3IgdGhlIFFFTVUgT3BlbiBTb3VyY2UgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvTWFudWFsJz5Eb2N1bWVudGF0aW9uPC91bGluaz46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFFFTVUgdXNlciBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKICAgICA8c2VjdGlvbiBpZD0ncWVtdS1ydW5uaW5nLXFlbXUnPgogICAgICAgICA8dGl0bGU+UnVubmluZyBRRU1VPC90aXRsZT4KIApAQCAtMjcsNiArNjMsOSBAQAogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluc3RhbGwgUUVNVTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBRRU1VIGlzIG1hZGUgYXZhaWxhYmxlIHdpdGggdGhlIFlvY3RvIFByb2plY3QgYSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgd2F5cy4KKyAgICAgICAgICAgICAgICAgICAgT25lIG1ldGhvZCBpcyB0byBpbnN0YWxsIGEgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspLgogICAgICAgICAgICAgICAgICAgICBTZWUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3RoZS1xZW11LWVtdWxhdG9yJz5UaGUgUUVNVSBFbXVsYXRvcjwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZApAQCAtMzAzLDYgKzM0MiwzNDUgQEAKICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdxZW11LWt2bS1jcHUtY29tcGF0aWJpbGl0eSc+CisgICAgICAgIDx0aXRsZT5RRU1VIENQVSBDb21wYXRpYmlsaXR5IFVuZGVyIEtWTTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgUUVNVSBidWlsZCBjb21waWxlcyBmb3IgYW5kIHRhcmdldHMgNjQtYml0IGFuZCB4ODYKKyAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlbWFyayc+Q29yZTwvdHJhZGVtYXJrPjIKKyAgICAgICAgICAgIER1byBwcm9jZXNzb3JzIGFuZCAzMi1iaXQgeDg2CisgICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5JbnRlbDwvdHJhZGVtYXJrPiA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5QZW50aXVtPC90cmFkZW1hcms+CisgICAgICAgICAgICBJSSBwcm9jZXNzb3JzLgorICAgICAgICAgICAgUUVNVSBidWlsZHMgZm9yIGFuZCB0YXJnZXRzIHRoZXNlIENQVSB0eXBlcyBiZWNhdXNlIHRoZXkgZGlzcGxheQorICAgICAgICAgICAgYSBicm9hZCByYW5nZSBvZiBDUFUgZmVhdHVyZSBjb21wYXRpYmlsaXR5IHdpdGggbWFueSBjb21tb25seQorICAgICAgICAgICAgdXNlZCBDUFVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEZXNwaXRlIHRoaXMgYnJvYWQgcmFuZ2Ugb2YgY29tcGF0aWJpbGl0eSwgdGhlIENQVXMgY291bGQgc3VwcG9ydAorICAgICAgICAgICAgYSBmZWF0dXJlIHRoYXQgeW91ciBob3N0IENQVSBkb2VzIG5vdCBzdXBwb3J0LgorICAgICAgICAgICAgQWx0aG91Z2ggdGhpcyBzaXR1YXRpb24gaXMgbm90IGEgcHJvYmxlbSB3aGVuIFFFTVUgdXNlcyBzb2Z0d2FyZQorICAgICAgICAgICAgZW11bGF0aW9uIG9mIHRoZSBmZWF0dXJlLCBpdCBjYW4gYmUgYSBwcm9ibGVtIHdoZW4gUUVNVSBpcworICAgICAgICAgICAgcnVubmluZyB3aXRoIEtWTSBlbmFibGVkLgorICAgICAgICAgICAgU3BlY2lmaWNhbGx5LCBzb2Z0d2FyZSBjb21waWxlZCB3aXRoIGEgY2VydGFpbiBDUFUgZmVhdHVyZSBjcmFzaGVzCisgICAgICAgICAgICB3aGVuIHJ1biBvbiBhIENQVSB1bmRlciBLVk0gdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgZmVhdHVyZS4KKyAgICAgICAgICAgIFRvIHdvcmsgYXJvdW5kIHRoaXMgcHJvYmxlbSwgeW91IGNhbiBvdmVycmlkZSBRRU1VJ3MgcnVudGltZSBDUFUKKyAgICAgICAgICAgIHNldHRpbmcgYnkgY2hhbmdpbmcgdGhlIDxmaWxlbmFtZT5RQl9DUFVfS1ZNPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHZhcmlhYmxlIGluIDxmaWxlbmFtZT5xZW11Ym9vdC5jb25mPC9maWxlbmFtZT4gaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeSdzPC91bGluaz4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2U8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICBUaGlzIHNldHRpbmcgc3BlY2lmaWVzIGEgPGZpbGVuYW1lPi1jcHU8L2ZpbGVuYW1lPiBvcHRpb24KKyAgICAgICAgICAgIHBhc3NlZCBpbnRvIFFFTVUgaW4gdGhlIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgUnVubmluZyA8ZmlsZW5hbWU+cWVtdSAtY3B1IGhlbHA8L2ZpbGVuYW1lPiByZXR1cm5zIGEgbGlzdCBvZgorICAgICAgICAgICAgYXZhaWxhYmxlIHN1cHBvcnRlZCBDUFUgdHlwZXMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncWVtdS1kZXYtcGVyZm9ybWFuY2UnPgorICAgICAgICA8dGl0bGU+UUVNVSBQZXJmb3JtYW5jZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVc2luZyBRRU1VIHRvIGVtdWxhdGUgeW91ciBoYXJkd2FyZSBjYW4gcmVzdWx0IGluIHNwZWVkIGlzc3VlcworICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQgYW5kIGhvc3QgYXJjaGl0ZWN0dXJlIG1peC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB1c2luZyB0aGUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiBpbWFnZSBpbiB0aGUKKyAgICAgICAgICAgIGVtdWxhdG9yIG9uIGFuIEludGVsLWJhc2VkIDMyLWJpdCAoeDg2KSBob3N0IG1hY2hpbmUgaXMgZmFzdAorICAgICAgICAgICAgYmVjYXVzZSB0aGUgdGFyZ2V0IGFuZCBob3N0IGFyY2hpdGVjdHVyZXMgbWF0Y2guCisgICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgdXNpbmcgdGhlIDxmaWxlbmFtZT5xZW11YXJtPC9maWxlbmFtZT4gaW1hZ2UKKyAgICAgICAgICAgIG9uIHRoZSBzYW1lIEludGVsLWJhc2VkIGhvc3QgY2FuIGJlIHNsb3dlci4KKyAgICAgICAgICAgIEJ1dCwgeW91IHN0aWxsIGFjaGlldmUgZmFpdGhmdWwgZW11bGF0aW9uIG9mIEFSTS1zcGVjaWZpYyBpc3N1ZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIHNwZWVkIHRoaW5ncyB1cCwgdGhlIFFFTVUgaW1hZ2VzIHN1cHBvcnQgdXNpbmcKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0Y2M8L2ZpbGVuYW1lPiB0byBjYWxsIGEgY3Jvc3MtY29tcGlsZXIgb3V0c2lkZSB0aGUKKyAgICAgICAgICAgIGVtdWxhdGVkIHN5c3RlbS4KKyAgICAgICAgICAgIElmIHlvdSB1c2VkIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gdG8gc3RhcnQgUUVNVSwgYW5kIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3RjY2Q8L2ZpbGVuYW1lPiBhcHBsaWNhdGlvbiBpcyBwcmVzZW50IG9uIHRoZSBob3N0CisgICAgICAgICAgICBzeXN0ZW0sIGFueSBCaXRCYWtlIGNyb3NzLWNvbXBpbGluZyB0b29sY2hhaW4gYXZhaWxhYmxlIGZyb20gdGhlCisgICAgICAgICAgICBidWlsZCBzeXN0ZW0gaXMgYXV0b21hdGljYWxseSB1c2VkIGZyb20gd2l0aGluIFFFTVUgc2ltcGx5IGJ5CisgICAgICAgICAgICBjYWxsaW5nIDxmaWxlbmFtZT5kaXN0Y2M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFlvdSBjYW4gYWNjb21wbGlzaCB0aGlzIGJ5IGRlZmluaW5nIHRoZSBjcm9zcy1jb21waWxlciB2YXJpYWJsZQorICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmV4cG9ydCBDQz0iZGlzdGNjIjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIGlmIHlvdSBhcmUgdXNpbmcgYSBzdWl0YWJsZSBTREsgaW1hZ2Ugb3IgdGhlCisgICAgICAgICAgICBhcHByb3ByaWF0ZSBzdGFuZC1hbG9uZSB0b29sY2hhaW4gaXMgcHJlc2VudCwgdGhlIHRvb2xjaGFpbiBpcworICAgICAgICAgICAgYWxzbyBhdXRvbWF0aWNhbGx5IHVzZWQuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBTZXZlcmFsIG1lY2hhbmlzbXMgZXhpc3QgdGhhdCBsZXQgeW91IGNvbm5lY3QgdG8gdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgIHJ1bm5pbmcgb24gdGhlIFFFTVUgZW11bGF0b3I6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUUVNVSBwcm92aWRlcyBhIGZyYW1lYnVmZmVyIGludGVyZmFjZSB0aGF0IG1ha2VzCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZCBjb25zb2xlcyBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhbGx5LCBoZWFkbGVzcyBlbWJlZGRlZCBkZXZpY2VzIGhhdmUgYSBzZXJpYWwgcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHNvLCB5b3UgY2FuIGNvbmZpZ3VyZSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgaW1hZ2UgdG8gdXNlIHRoYXQgcG9ydCB0byBydW4gYSBjb25zb2xlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbm5lY3Rpb24gdXNlcyBzdGFuZGFyZCBJUCBuZXR3b3JraW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNTSCBzZXJ2ZXJzIGV4aXN0IGluIHNvbWUgUUVNVSBpbWFnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IFFFTVUgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBhIERyb3BiZWFyIHNlY3VyZSBzaGVsbCAoU1NIKSBzZXJ2ZXIgdGhhdCBydW5zCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSByb290IHBhc3N3b3JkIGRpc2FibGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLWZ1bGwtY21kbGluZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbHNiPC9maWxlbmFtZT4gUUVNVSBpbWFnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgT3BlblNTSCBpbnN0ZWFkIG9mIERyb3BiZWFyLgorICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkaW5nIHRoZXNlIFNTSCBzZXJ2ZXJzIGFsbG93IHlvdSB0byB1c2Ugc3RhbmRhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnNjcDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gUUVNVSBpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvd2V2ZXIsIGNvbnRhaW5zIG5vIFNTSCBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYSBwcm92aWRlZCwgdXNlci1zcGFjZSBORlMgc2VydmVyIHRvIGJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBRRU1VIHNlc3Npb24gdXNpbmcgYSBsb2NhbCBjb3B5IG9mIHRoZSByb290CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIG9uIHRoZSBob3N0LgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gbWFrZSB0aGlzIGNvbm5lY3Rpb24sIHlvdSBtdXN0IGV4dHJhY3QgYQorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIHRhcmJhbGwgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdS1leHRyYWN0LXNkazwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZSBjb21tYW5kLCB5b3UgbXVzdCB0aGVuIHBvaW50IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IHRvIHRoZSBleHRyYWN0ZWQgZGlyZWN0b3J5IGluc3RlYWQgb2YgYSByb290CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGltYWdlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncWVtdS1ydW5uaW5nLXVuZGVyLWEtbmV0d29yay1maWxlLXN5c3RlbS1uZnMtc2VydmVyJz5SdW5uaW5nIFVuZGVyIGEgTmV0d29yayBGaWxlIFN5c3RlbSAoTkZTKSBTZXJ2ZXI8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3FlbXUtZGV2LWNvbW1hbmQtbGluZS1zeW50YXgnPgorICAgICAgICA8dGl0bGU+UUVNVSBDb21tYW5kLUxpbmUgU3ludGF4PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBiYXNpYyA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGNvbW1hbmQgc3ludGF4IGlzIGFzCisgICAgICAgICAgICBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgWzxyZXBsYWNlYWJsZT5vcHRpb248L3JlcGxhY2VhYmxlPiBdICBbLi4uXQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgQmFzZWQgb24gd2hhdCB5b3UgcHJvdmlkZSBvbiB0aGUgY29tbWFuZCBsaW5lLAorICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkb2VzIGEgZ29vZCBqb2Igb2YgZmlndXJpbmcgb3V0IHdoYXQKKyAgICAgICAgICAgIHlvdSBhcmUgdHJ5aW5nIHRvIGRvLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQsIFFFTVUgbG9va3MgZm9yIHRoZSBtb3N0IHJlY2VudGx5IGJ1aWx0CisgICAgICAgICAgICBpbWFnZSBhY2NvcmRpbmcgdG8gdGhlIHRpbWVzdGFtcCB3aGVuIGl0IG5lZWRzIHRvIGxvb2sgZm9yIGFuCisgICAgICAgICAgICBpbWFnZS4KKyAgICAgICAgICAgIE1pbmltYWxseSwgdGhyb3VnaCB0aGUgdXNlIG9mIG9wdGlvbnMsIHlvdSBtdXN0IHByb3ZpZGUgZWl0aGVyCisgICAgICAgICAgICBhIG1hY2hpbmUgbmFtZSwgYSB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2UKKyAgICAgICAgICAgICg8ZmlsZW5hbWU+KndpYy52bWRrPC9maWxlbmFtZT4pLCBvciBhIGtlcm5lbCBpbWFnZQorICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJpbjwvZmlsZW5hbWU+KS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIHRoZSBjb21tYW5kLWxpbmUgaGVscCBvdXRwdXQgZm9yIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgLS1oZWxwCisKKyAgICAgVXNhZ2U6IHlvdSBjYW4gcnVuIHRoaXMgc2NyaXB0IHdpdGggYW55IHZhbGlkIGNvbWJpbmF0aW9uCisgICAgIG9mIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIChpbiBhbnkgb3JkZXIpOgorICAgICAgIEtFUk5FTCAtIHRoZSBrZXJuZWwgaW1hZ2UgZmlsZSB0byB1c2UKKyAgICAgICBST09URlMgLSB0aGUgcm9vdGZzIGltYWdlIGZpbGUgb3IgbmZzcm9vdCBkaXJlY3RvcnkgdG8gdXNlCisgICAgICAgTUFDSElORSAtIHRoZSBtYWNoaW5lIG5hbWUgKG9wdGlvbmFsLCBhdXRvZGV0ZWN0ZWQgZnJvbSBLRVJORUwgZmlsZW5hbWUgaWYgdW5zcGVjaWZpZWQpCisgICAgICAgU2ltcGxpZmllZCBRRU1VIGNvbW1hbmQtbGluZSBvcHRpb25zIGNhbiBiZSBwYXNzZWQgd2l0aDoKKyAgICAgICAgIG5vZ3JhcGhpYyAtIGRpc2FibGUgdmlkZW8gY29uc29sZQorICAgICAgICAgc2VyaWFsIC0gZW5hYmxlIGEgc2VyaWFsIGNvbnNvbGUgb24gL2Rldi90dHlTMAorICAgICAgICAgc2xpcnAgLSBlbmFibGUgdXNlciBuZXR3b3JraW5nLCBubyByb290IHByaXZpbGVnZXMgaXMgcmVxdWlyZWQKKyAgICAgICAgIGt2bSAtIGVuYWJsZSBLVk0gd2hlbiBydW5uaW5nIHg4Ni94ODZfNjQgKFZULWNhcGFibGUgQ1BVIHJlcXVpcmVkKQorICAgICAgICAga3ZtLXZob3N0IC0gZW5hYmxlIEtWTSB3aXRoIHZob3N0IHdoZW4gcnVubmluZyB4ODYveDg2XzY0IChWVC1jYXBhYmxlIENQVSByZXF1aXJlZCkKKyAgICAgICAgIHB1YmxpY3ZuYyAtIGVuYWJsZSBhIFZOQyBzZXJ2ZXIgb3BlbiB0byBhbGwgaG9zdHMKKyAgICAgICAgIGF1ZGlvIC0gZW5hYmxlIGF1ZGlvCisgICAgICAgICBbKi9db3ZtZiogLSBPVk1GIGZpcm13YXJlIGZpbGUgb3IgYmFzZSBuYW1lIGZvciBib290aW5nIHdpdGggVUVGSQorICAgICAgIHRjcHNlcmlhbD0mbHQ7cG9ydCZndDsgLSBzcGVjaWZ5IHRjcCBzZXJpYWwgcG9ydCBudW1iZXIKKyAgICAgICBiaW9zZGlyPSZsdDtkaXImZ3Q7IC0gc3BlY2lmeSBjdXN0b20gYmlvcyBkaXIKKyAgICAgICBiaW9zZmlsZW5hbWU9Jmx0O2ZpbGVuYW1lJmd0OyAtIHNwZWNpZnkgYmlvcyBmaWxlbmFtZQorICAgICAgIHFlbXVwYXJhbXM9Jmx0O3h5eiZndDsgLSBzcGVjaWZ5IGN1c3RvbSBwYXJhbWV0ZXJzIHRvIFFFTVUKKyAgICAgICBib290cGFyYW1zPSZsdDt4eXomZ3Q7IC0gc3BlY2lmeSBjdXN0b20ga2VybmVsIHBhcmFtZXRlcnMgZHVyaW5nIGJvb3QKKyAgICAgICBoZWxwLCAtaCwgLS1oZWxwOiBwcmludCB0aGlzIHRleHQKKworICAgICBFeGFtcGxlczoKKyAgICAgICBydW5xZW11CisgICAgICAgcnVucWVtdSBxZW11YXJtCisgICAgICAgcnVucWVtdSB0bXAvZGVwbG95L2ltYWdlcy9xZW11YXJtCisgICAgICAgcnVucWVtdSB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LyZsdDtxZW11Ym9vdC5jb25mJmd0OworICAgICAgIHJ1bnFlbXUgcWVtdXg4Ni02NCBjb3JlLWltYWdlLXNhdG8gZXh0NAorICAgICAgIHJ1bnFlbXUgcWVtdXg4Ni02NCB3aWMtaW1hZ2UtbWluaW1hbCB3aWMKKyAgICAgICBydW5xZW11IHBhdGgvdG8vYnpJbWFnZS1xZW11eDg2LmJpbiBwYXRoL3RvL25mc3Jvb3RkaXIvIHNlcmlhbAorICAgICAgIHJ1bnFlbXUgcWVtdXg4NiBpc28vaGRkaW1nL3dpYy52bWRrL3dpYy5xY293Mi93aWMudmRpL3JhbWZzL2NwaW8uZ3ouLi4KKyAgICAgICBydW5xZW11IHFlbXV4ODYgcWVtdXBhcmFtcz0iLW0gMjU2IgorICAgICAgIHJ1bnFlbXUgcWVtdXg4NiBib290cGFyYW1zPSJwc3BsYXNoPWZhbHNlIgorICAgICAgIHJ1bnFlbXUgcGF0aC90by8mbHQ7aW1hZ2UmZ3Q7LSZsdDttYWNoaW5lJmd0Oy53aWMKKyAgICAgICBydW5xZW11IHBhdGgvdG8vJmx0O2ltYWdlJmd0Oy0mbHQ7bWFjaGluZSZndDsud2ljLnZtZGsKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdxZW11LWRldi1ydW5xZW11LWNvbW1hbmQtbGluZS1vcHRpb25zJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gQ29tbWFuZC1MaW5lIE9wdGlvbnM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIGEgZGVzY3JpcHRpb24gb2YgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgb3B0aW9ucyB5b3UgY2FuIHByb3ZpZGUgb24gdGhlIGNvbW1hbmQgbGluZToKKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgIElmIHlvdSBkbyBwcm92aWRlIHNvbWUgImlsbGVnYWwiIG9wdGlvbiBjb21iaW5hdGlvbiBvciBwZXJoYXBzCisgICAgICAgICAgICAgICAgeW91IGRvIG5vdCBwcm92aWRlIGVub3VnaCBpbiB0aGUgd2F5IG9mIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBwcm92aWRlcyBhcHByb3ByaWF0ZSBlcnJvcgorICAgICAgICAgICAgICAgIG1lc3NhZ2luZyB0byBoZWxwIHlvdSBjb3JyZWN0IHRoZSBwcm9ibGVtLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5RRU1VQVJDSDwvcmVwbGFjZWFibGU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgUUVNVSBtYWNoaW5lIGFyY2hpdGVjdHVyZSwgd2hpY2ggbXVzdCBiZSAicWVtdWFybSIsCisgICAgICAgICAgICAgICAgICAgICJxZW11YXJtNjQiLCAicWVtdW1pcHMiLCAicWVtdW1pcHM2NCIsICJxZW11cHBjIiwKKyAgICAgICAgICAgICAgICAgICAgInFlbXV4ODYiLCBvciAicWVtdXg4Ni02NCIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5WTTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2UsIHdoaWNoIG11c3QgYmUgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LndpYy52bWRrPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgb3B0aW9uIHdoZW4geW91IHdhbnQgdG8gYm9vdCBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2ljLnZtZGs8L2ZpbGVuYW1lPiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGltYWdlIGZpbGVuYW1lIHlvdSBwcm92aWRlIG11c3QgY29udGFpbiBvbmUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBzdHJpbmdzOiAicWVtdXg4Ni02NCIsICJxZW11eDg2IiwgInFlbXVhcm0iLAorICAgICAgICAgICAgICAgICAgICAicWVtdW1pcHM2NCIsICJxZW11bWlwcyIsICJxZW11cHBjIiwgb3IgInFlbXVzaDQiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5ST09URlM8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgQSByb290IGZpbGVzeXN0ZW0gdGhhdCBoYXMgb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgZmlsZXR5cGUgZXh0ZW5zaW9uczogImV4dDIiLCAiZXh0MyIsICJleHQ0IiwgImpmZnMyIiwKKyAgICAgICAgICAgICAgICAgICAgIm5mcyIsIG9yICJidHJmcyIuCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSBmaWxlbmFtZSB5b3UgcHJvdmlkZSBmb3IgdGhpcyBvcHRpb24gdXNlcyDigJxuZnPigJ0sIGl0CisgICAgICAgICAgICAgICAgICAgIG11c3QgcHJvdmlkZSBhbiBleHBsaWNpdCByb290IGZpbGVzeXN0ZW0gcGF0aC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+S0VSTkVMPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgIEEga2VybmVsIGltYWdlLCB3aGljaCBpcyBhIDxmaWxlbmFtZT4uYmluPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgcHJvdmlkZSBhIDxmaWxlbmFtZT4uYmluPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkZXRlY3RzIGl0IGFuZCBhc3N1bWVzIHRoZQorICAgICAgICAgICAgICAgICAgICBmaWxlIGlzIGEga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIFFFTVUgbWFjaGluZSwgd2hpY2ggbXVzdCBiZSBvbmUKKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZzogInFlbXV4ODYiLCAicWVtdXg4Ni02NCIsICJxZW11YXJtIiwKKyAgICAgICAgICAgICAgICAgICAgInFlbXVhcm02NCIsICJxZW11bWlwcyIsIOKAnHFlbXVtaXBzNjQiLCBvciAicWVtdXBwYyIuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+UUVNVUFSQ0g8L3JlcGxhY2VhYmxlPiBvcHRpb25zIGFyZSBiYXNpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHByb3ZpZGUgYSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiB0cmllcyB0byBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgaXQgYmFzZWQgb24gb3RoZXIgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmFtZnM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHlvdSBhcmUgYm9vdGluZyBhbiBpbml0aWFsIFJBTSBkaXNrIChpbml0cmFtZnMpCisgICAgICAgICAgICAgICAgICAgIGltYWdlLCB3aGljaCBtZWFucyB0aGUgPGZpbGVuYW1lPkZTVFlQRTwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcGlvLmd6PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmlzbzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgeW91IGFyZSBib290aW5nIGFuIElTTyBpbWFnZSwgd2hpY2ggbWVhbnMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GU1RZUEU8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmlzbzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub2dyYXBoaWM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRGlzYWJsZXMgdGhlIHZpZGVvIGNvbnNvbGUsIHdoaWNoIHNldHMgdGhlIGNvbnNvbGUgdG8KKyAgICAgICAgICAgICAgICAgICAgInR0eXMwIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VyaWFsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgYSBzZXJpYWwgY29uc29sZSBvbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2Rldi90dHlTMDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW9zZGlyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIGEgY3VzdG9tIGRpcmVjdG9yeSBmb3IgQklPUywgVkdBIEJJT1MgYW5kCisgICAgICAgICAgICAgICAgICAgIGtleW1hcHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpb3NmaWxlbmFtZTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFc3RhYmxpc2hlcyBhIGN1c3RvbSBCSU9TIG5hbWUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXVwYXJhbXM9XCI8cmVwbGFjZWFibGU+eHl6PC9yZXBsYWNlYWJsZT5cIjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgY3VzdG9tIFFFTVUgcGFyYW1ldGVycy4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgb3B0aW9uIHRvIHBhc3Mgb3B0aW9ucyBvdGhlciB0aGFuIHRoZSBzaW1wbGUKKyAgICAgICAgICAgICAgICAgICAgImt2bSIgYW5kICJzZXJpYWwiIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Ym9vdHBhcmFtcz1cIjxyZXBsYWNlYWJsZT54eXo8L3JlcGxhY2VhYmxlPlwiPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBjdXN0b20gYm9vdCBwYXJhbWV0ZXJzIGZvciB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdWRpbzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIGF1ZGlvIGluIFFFTVUuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IG9wdGlvbiBtdXN0IGJlCisgICAgICAgICAgICAgICAgICAgIGVpdGhlciAicWVtdXg4NiIgb3IgInFlbXV4ODYtNjQiIGluIG9yZGVyIGZvciBhdWRpbyB0byBiZQorICAgICAgICAgICAgICAgICAgICBlbmFibGVkLgorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSA8ZmlsZW5hbWU+c25kX2ludGVsOHgwPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPnNuZF9lbnMxMzcwPC9maWxlbmFtZT4gZHJpdmVyIG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGxpbnV4IGd1ZXN0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zbGlycDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzICJzbGlycCIgbmV0d29ya2luZywgd2hpY2ggaXMgYSBkaWZmZXJlbnQgd2F5CisgICAgICAgICAgICAgICAgICAgIG9mIG5ldHdvcmtpbmcgdGhhdCBkb2VzIG5vdCBuZWVkIHJvb3QgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgIGJ1dCBhbHNvIGlzIG5vdCBhcyBlYXN5IHRvIHVzZSBvciBjb21wcmVoZW5zaXZlCisgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBkZWZhdWx0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2t2bS1jb25kJz4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmt2bTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIEtWTSB3aGVuIHJ1bm5pbmcgInFlbXV4ODYiIG9yICJxZW11eDg2LTY0IgorICAgICAgICAgICAgICAgICAgICBRRU1VIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBLVk0gdG8gd29yaywgYWxsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBtdXN0IGJlIG1ldDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gbXVzdCBiZSBlaXRoZXIKK3FlbXV4ODYiIG9yICJxZW11eDg2LTY0Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIGJ1aWxkIGhvc3QgaGFzIHRvIGhhdmUgdGhlIEtWTSBtb2R1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLCB3aGljaCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2Rldi9rdm08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgIGJ1aWxkIGhvc3QgPGZpbGVuYW1lPi9kZXYva3ZtPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaGFzIHRvIGJlIGJvdGggd3JpdGFibGUgYW5kIHJlYWRhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a3ZtLXZob3N0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgS1ZNIHdpdGggVkhPU1Qgc3VwcG9ydCB3aGVuIHJ1bm5pbmcgInFlbXV4ODYiCisgICAgICAgICAgICAgICAgICAgIG9yICJxZW11eDg2LTY0IiBRRU1VIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBLVk0gd2l0aCBWSE9TVCB0byB3b3JrLCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgbXVzdAorICAgICAgICAgICAgICAgICAgICBiZSBtZXQ6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0na3ZtLWNvbmQnPmt2bTwvbGluaz4gb3B0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9ucyBtdXN0IGJlIG1ldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIGJ1aWxkIGhvc3QgaGFzIHRvIGhhdmUgdmlydGlvIG5ldCBkZXZpY2UsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIDxmaWxlbmFtZT4vZGV2L3Zob3N0LW5ldDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBob3N0IDxmaWxlbmFtZT4vZGV2L3Zob3N0LW5ldDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGhhcyB0byBiZSBlaXRoZXIgcmVhZGFibGUgb3Igd3JpdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQg4oCcc2xpcnAtZW5hYmxlZOKAnS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB1YmxpY3ZuYzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIGEgVk5DIHNlcnZlciBvcGVuIHRvIGFsbCBob3N0cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KIDwvY2hhcHRlcj4KIDwhLS0KIHZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCmluZGV4IDE5NWIyMmQuLmQ4NzI2YjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXN0YXJ0LnhtbApAQCAtNCwxOCArNCwzODYgQEAKIAogPGNoYXB0ZXIgaWQ9J2Rldi1tYW51YWwtc3RhcnQnPgogCi08dGl0bGU+R2V0dGluZyBTdGFydGVkIHdpdGggdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgorPHRpdGxlPlNldHRpbmcgVXAgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KIAogPHBhcmE+CiAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIHByb2NlZHVyZXMgcmVsYXRlZCB0byBnZXR0aW5nIHNldCB1cCB0byB1c2UgdGhlCiAgICAgWW9jdG8gUHJvamVjdC4KLSAgICBGb3IgYSBtb3JlIGZyb250LXRvLWVuZCBwcm9jZXNzIHRoYXQgdGFrZXMgeW91IGZyb20gbWluaW1hbGx5IHByZXBhcmluZwotICAgIGEgYnVpbGQgaG9zdCB0aHJvdWdoIGJ1aWxkaW5nIGFuIGltYWdlLCBzZWUgdGhlCi0gICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdWxpbms+LgorICAgIFlvdSBjYW4gbGVhcm4gYWJvdXQgY3JlYXRpbmcgYSB0ZWFtIGVudmlyb25tZW50IHRoYXQgZGV2ZWxvcHMgdXNpbmcgdGhlCisgICAgWW9jdG8gUHJvamVjdCwgaG93IHRvIHNldCB1cCBhIGJ1aWxkIGhvc3QsIGhvdyB0byBsb2NhdGUgWW9jdG8gUHJvamVjdAorICAgIHNvdXJjZSByZXBvc2l0b3JpZXMsIGFuZCBob3cgdG8gY3JlYXRlIGxvY2FsIEdpdCByZXBvc2l0b3JpZXMuCiA8L3BhcmE+CiAKKzxzZWN0aW9uIGlkPSJ1c2luZ3Bva3ktY2hhbmdlcy1jb2xsYWJvcmF0ZSI+CisgICAgPHRpdGxlPkNyZWF0aW5nIGEgVGVhbSBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IGNsZWFyIGhvdyB5b3UgY2FuIHVzZSB0aGUgWW9jdG8KKyAgICAgICAgUHJvamVjdCBpbiBhIHRlYW0gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIG9yIHNjYWxlIGl0IGZvciBhIGxhcmdlCisgICAgICAgIHRlYW0gb2YgZGV2ZWxvcGVycy4KKyAgICAgICAgT25lIG9mIHRoZSBzdHJlbmd0aHMgb2YgdGhlIFlvY3RvIFByb2plY3QgaXMgdGhhdCBpdCBpcyBleHRyZW1lbHkKKyAgICAgICAgZmxleGlibGUuCisgICAgICAgIFRodXMsIHlvdSBjYW4gYWRhcHQgaXQgdG8gbWFueSBkaWZmZXJlbnQgdXNlIGNhc2VzIGFuZCBzY2VuYXJpb3MuCisgICAgICAgIEhvd2V2ZXIsIHRoZXNlIGNoYXJhY3RlcmlzdGljcyBjYW4gY2F1c2UgYSBzdHJ1Z2dsZSBpZiB5b3UgYXJlIHRyeWluZworICAgICAgICB0byBjcmVhdGUgYSB3b3JraW5nIHNldHVwIHRoYXQgc2NhbGVzIGFjcm9zcyBhIGxhcmdlIHRlYW0uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRvIGhlbHAgeW91IHVuZGVyc3RhbmQgaG93IHRvIHNldCB1cCB0aGlzIHR5cGUgb2YgZW52aXJvbm1lbnQsCisgICAgICAgIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHByb2NlZHVyZSB0aGF0IGdpdmVzIHlvdSB0aGUgaW5mb3JtYXRpb24KKyAgICAgICAgdG8gbGVhcm4gaG93IHRvIGdldCB0aGUgcmVzdWx0cyB5b3Ugd2FudC4KKyAgICAgICAgVGhlIHByb2NlZHVyZSBpcyBoaWdoLWxldmVsIGFuZCBwcmVzZW50cyBzb21lIG9mIHRoZSBwcm9qZWN0J3MgbW9zdAorICAgICAgICBzdWNjZXNzZnVsIGV4cGVyaWVuY2VzLCBwcmFjdGljZXMsIHNvbHV0aW9ucywgYW5kIGF2YWlsYWJsZQorICAgICAgICB0ZWNobm9sb2dpZXMgdGhhdCB3b3JrIHdlbGwuCisgICAgICAgIEtlZXAgaW4gbWluZCwgdGhlIHByb2NlZHVyZSBoZXJlIGlzIGEgc3RhcnRpbmcgcG9pbnQuCisgICAgICAgIFlvdSBjYW4gYnVpbGQgb2ZmIGl0IGFuZCBjdXN0b21pemUgaXQgdG8gZml0IGFueQorICAgICAgICBwYXJ0aWN1bGFyIHdvcmtpbmcgZW52aXJvbm1lbnQgYW5kIHNldCBvZiBwcmFjdGljZXMuCisgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGV0ZXJtaW5lIFdobyBpcyBHb2luZyB0byBiZSBEZXZlbG9waW5nOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gdW5kZXJzdGFuZCB3aG8gaXMgZ29pbmcgdG8gYmUgZG9pbmcgYW55dGhpbmcKKyAgICAgICAgICAgICAgICByZWxhdGVkIHRvIHRoZSBZb2N0byBQcm9qZWN0IGFuZCB3aGF0IHRoZWlyIHJvbGVzIHdvdWxkIGJlLgorICAgICAgICAgICAgICAgIE1ha2luZyB0aGlzIGRldGVybWluYXRpb24gaXMgZXNzZW50aWFsIHRvIGNvbXBsZXRpbmcgdGhlCisgICAgICAgICAgICAgICAgc3RlcHMgdHdvIGFuZCB0aHJlZSwgd2hpY2ggYXJlIHRvIGdldCB5b3VyIGVxdWlwbWVudCB0b2dldGhlcgorICAgICAgICAgICAgICAgIGFuZCBzZXQgdXAgeW91ciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCdzIGhhcmR3YXJlIHRvcG9sb2d5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgcm9sZXMgZXhpc3Q6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFwcGxpY2F0aW9uIERldmVsb3BtZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSB0eXBlcyBvZiBkZXZlbG9wZXJzIGRvIGFwcGxpY2F0aW9uIGxldmVsIHdvcmsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRvcCBvZiBhbiBleGlzdGluZyBzb2Z0d2FyZSBzdGFjay4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29yZSBTeXN0ZW0gRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgd29yayBvbiB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpbmcgc3lzdGVtIGltYWdlIGl0c2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgRW5naW5lZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBkZXZlbG9wZXIgbWFuYWdlcyBBdXRvYnVpbGRlcnMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBhbGwgZW52aXJvbm1lbnRzIG5lZWQgYSBCdWlsZCBFbmdpbmVlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VGVzdCBFbmdpbmVlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGRldmVsb3BlciBjcmVhdGVzIGFuZCBtYW5hZ2VzIGF1dG9tYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgbmVlZGVkIHRvIGVuc3VyZSBhbGwgYXBwbGljYXRpb24gYW5kIGNvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBkZXZlbG9wbWVudCBtZWV0cyBkZXNpcmVkIHF1YWxpdHkgc3RhbmRhcmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdhdGhlciB0aGUgSGFyZHdhcmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBCYXNlZCBvbiB0aGUgc2l6ZSBhbmQgbWFrZS11cCBvZiB0aGUgdGVhbSwgZ2V0IHRoZSBoYXJkd2FyZQorICAgICAgICAgICAgICAgIHRvZ2V0aGVyLgorICAgICAgICAgICAgICAgIEFueSBkZXZlbG9wbWVudCwgYnVpbGQsIG9yIHRlc3QgZW5naW5lZXIgc2hvdWxkIGJlIHVzaW5nCisgICAgICAgICAgICAgICAgYSBzeXN0ZW0gdGhhdCBpcyBydW5uaW5nIGEgc3VwcG9ydGVkIExpbnV4IGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICBTeXN0ZW1zLCBpbiBnZW5lcmFsLCBzaG91bGQgYmUgaGlnaCBwZXJmb3JtYW5jZSAoZS5nLiBkdWFsLAorICAgICAgICAgICAgICAgIHNpeC1jb3JlIFhlb25zIHdpdGggMjQgR2J5dGVzIG9mIFJBTSBhbmQgcGxlbnR5IG9mIGRpc2sgc3BhY2UpLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gaGVscCBlbnN1cmUgZWZmaWNpZW5jeSBieSBoYXZpbmcgYW55IG1hY2hpbmVzIHVzZWQKKyAgICAgICAgICAgICAgICBmb3IgdGVzdGluZyBvciB0aGF0IHJ1biBBdXRvYnVpbGRlcnMgYmUgYXMgaGlnaCBwZXJmb3JtYW5jZQorICAgICAgICAgICAgICAgIGFzIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VbmRlcnN0YW5kIHRoZSBIYXJkd2FyZSBUb3BvbG9neSBvZiB0aGUgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSBpbnZvbHZlZCBhbmQgdGhlIG1ha2UtdXAKKyAgICAgICAgICAgICAgICBvZiB0aGUgdGVhbSwgeW91IGNhbiB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSB0b3BvbG9neSBvZiB0aGUKKyAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGdldCBhIHZpc3VhbCBpZGVhIG9mIHRoZSBtYWNoaW5lcyBhbmQgdGhlaXIgcm9sZXMKKyAgICAgICAgICAgICAgICBhY3Jvc3MgdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgorCis8IS0tCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgYSBtb2RlcmF0ZWx5IHNpemVkIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKworICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9IndyaXRlcm5vdGVzIj4KKyAgICAgICAgICAgICAgICBOZWVkIGZpZ3VyZS48L3BhcmE+CistLT4KKworICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgR2l0IGFzIFlvdXIgU291cmNlIENvbnRyb2wgTWFuYWdlciAoU0NNKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEtlZXBpbmcgeW91cgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kIGFueSBzb2Z0d2FyZSB5b3UgYXJlIGRldmVsb3BpbmcgdW5kZXIgdGhlCisgICAgICAgICAgICAgICAgY29udHJvbCBvZiBhbiBTQ00gc3lzdGVtIHRoYXQgaXMgY29tcGF0aWJsZQorICAgICAgICAgICAgICAgIHdpdGggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgYWR2aXNhYmxlLgorICAgICAgICAgICAgICAgIE9mIHRoZSBTQ01zIEJpdEJha2Ugc3VwcG9ydHMsIHRoZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgdGVhbSBzdHJvbmdseSByZWNvbW1lbmRzIHVzaW5nCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+LgorICAgICAgICAgICAgICAgIEdpdCBpcyBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0IGlzIGVhc3kgdG8gYmFja3VwLAorICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gd29yayByZW1vdGVseSwgYW5kIHRoZW4gY29ubmVjdHMgYmFjayB0byB0aGUKKyAgICAgICAgICAgICAgICBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IEJpdEJha2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyByZWxhdGl2ZWx5IGVhc3kgdG8gc2V0IHVwIEdpdCBzZXJ2aWNlcyBhbmQgY3JlYXRlCisgICAgICAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgbGlrZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnPC91bGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgYmFzZWQgb24gc2VydmVyIHNvZnR3YXJlIGNhbGxlZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHdpdGggPGZpbGVuYW1lPmNnaXQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGJlaW5nIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHdlYiBpbnRlcmZhY2UgdGhhdCBsZXRzIHlvdSB2aWV3IHRoZQorICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdpdG9saXRlPC9maWxlbmFtZT4gc29mdHdhcmUgaWRlbnRpZmllcyB1c2VycworICAgICAgICAgICAgICAgIHVzaW5nIFNTSCBrZXlzIGFuZCBhbGxvd3MgYnJhbmNoLWJhc2VkCisgICAgICAgICAgICAgICAgYWNjZXNzIGNvbnRyb2xzIHRvIHJlcG9zaXRvcmllcyB0aGF0IHlvdSBjYW4gY29udHJvbCBhcyBsaXR0bGUKKyAgICAgICAgICAgICAgICBvciBhcyBtdWNoIGFzIG5lY2Vzc2FyeS4KKworICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgIFRoZSBzZXR1cCBvZiB0aGVzZSBzZXJ2aWNlcyBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgc2l0ZXMgc3VjaCBhcyB0aGVzZSBleGlzdCB0aGF0IGRlc2NyaWJlIGhvdyB0bworICAgICAgICAgICAgICAgICAgIHBlcmZvcm0gc2V0dXA6CisgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2Jvb2svY2g0LTguaHRtbCc+R2l0IGRvY3VtZW50YXRpb248L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJlcyBob3cgdG8gaW5zdGFsbCA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIHNlcnZlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0b2xpdGUuY29tJz5HaXRvbGl0ZTwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIGZvciA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0ludGVyZmFjZXMsX2Zyb250ZW5kcyxfYW5kX3Rvb2xzJz5JbnRlcmZhY2VzLCBmcm9udGVuZHMsIGFuZCB0b29sczwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gb24gaG93IHRvIGNyZWF0ZSBpbnRlcmZhY2VzIGFuZCBmcm9udGVuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgR2l0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCB0aGUgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgTWFjaGluZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgYXBwbGljYXRpb24gZGV2ZWxvcGVycyBhcmUgY3JlYXRpbmcKKyAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgb24gdG9wIG9mIGV4aXN0aW5nIHNvZnR3YXJlIHN0YWNrcy4KKyAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgYmVzdCBwcmFjdGljZXMgZm9yIHNldHRpbmcgdXAgbWFjaGluZXMKKyAgICAgICAgICAgICAgICB0aGF0IGRvIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50OgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBhIHByZS1idWlsdCB0b29sY2hhaW4gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgdGhlIHNvZnR3YXJlIHN0YWNrIGl0c2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZW4sIGRldmVsb3AgdGhlIGFwcGxpY2F0aW9uIGNvZGUgb24gdG9wIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCB3b3JrcyB3ZWxsIGZvciBzbWFsbCBudW1iZXJzIG9mIHJlbGF0aXZlbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzb2xhdGVkIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHBvc3NpYmxlLCB1c2UgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHBsdWctaW4gZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gSURFCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgU0RLIGRldmVsb3BtZW50IHByYWN0aWNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBLZWVwIHlvdXIgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucyB1cGRhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkbyB0aGlzIHRocm91Z2ggcHJvdmlzaW9uaW5nIGVpdGhlciBhcyBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiBkb3dubG9hZHMgb3IgYXMgdXBkYXRlcyB0aHJvdWdoIGEgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIG1lY2hhbmlzbSB1c2luZyA8ZmlsZW5hbWU+b3BrZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB0byBwcm92aWRlIHVwZGF0ZXMgdG8gYW4gZXhpc3RpbmcgdG9vbGNoYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGV4YWN0IG1lY2hhbmljcyBvZiBob3cgYW5kIHdoZW4gdG8gZG8gdGhpcyBhcmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb24gZm9yIGxvY2FsIHBvbGljeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgbXVsdGlwbGUgdG9vbGNoYWlucyBpbnN0YWxsZWQgbG9jYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgaW50byBkaWZmZXJlbnQgbG9jYXRpb25zIHRvIGFsbG93IGRldmVsb3BtZW50IGFjcm9zcworICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIHRoZSBDb3JlIERldmVsb3BtZW50IE1hY2hpbmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgd29yayBvbiB0aGUKKyAgICAgICAgICAgICAgICBjb250ZW50cyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpdHNlbGYuCisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGJlc3QgcHJhY3RpY2VzIGZvciBzZXR0aW5nIHVwIG1hY2hpbmVzCisgICAgICAgICAgICAgICAgdXNlZCBmb3IgZGV2ZWxvcGluZyBpbWFnZXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSGF2ZSB0aGUgWW9jdG8gUHJvamVjdCBidWlsZCBzeXN0ZW0gaXRzZWxmIGF2YWlsYWJsZSBvbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRldmVsb3BlciB3b3Jrc3RhdGlvbnMgc28gZGV2ZWxvcGVycyBjYW4gcnVuIHRoZWlyIG93bgorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRzIGFuZCBkaXJlY3RseSByZWJ1aWxkIHRoZSBzb2Z0d2FyZSBzdGFjay4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBLZWVwIHRoZSBjb3JlIHN5c3RlbSB1bmNoYW5nZWQgYXMgbXVjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGUgYW5kIGRvIHlvdXIgd29yayBpbiBsYXllcnMgb24gdG9wIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgY29yZSBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBnaXZlcyB5b3UgYSBncmVhdGVyIGxldmVsIG9mIHBvcnRhYmlsaXR5IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGluZyB0byBuZXcgdmVyc2lvbnMgb2YgdGhlIGNvcmUgc3lzdGVtIG9yIEJvYXJkCisgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTaGFyZSBsYXllcnMgYW1vbmdzdCB0aGUgZGV2ZWxvcGVycyBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHByb2plY3QgYW5kIGNvbnRhaW4gdGhlIHBvbGljeSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGRlZmluZXMgdGhlIHByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIGFuIEF1dG9idWlsZGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzIGFyZSBvZnRlbiB0aGUgY29yZSBvZiB0aGUgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBJdCBpcyBoZXJlIHRoYXQgY2hhbmdlcyBmcm9tIGluZGl2aWR1YWwgZGV2ZWxvcGVycyBhcmUgYnJvdWdodAorICAgICAgICAgICAgICAgIHRvZ2V0aGVyIGFuZCBjZW50cmFsbHkgdGVzdGVkIGFuZCBzdWJzZXF1ZW50IGRlY2lzaW9ucyBhYm91dAorICAgICAgICAgICAgICAgIHJlbGVhc2VzIGNhbiBiZSBtYWRlLgorICAgICAgICAgICAgICAgIEF1dG9idWlsZGVycyBhbHNvIGFsbG93IGZvciAiY29udGludW91cyBpbnRlZ3JhdGlvbiIgc3R5bGUKKyAgICAgICAgICAgICAgICB0ZXN0aW5nIG9mIHNvZnR3YXJlIGNvbXBvbmVudHMgYW5kIHJlZ3Jlc3Npb24gaWRlbnRpZmljYXRpb24KKyAgICAgICAgICAgICAgICBhbmQgdHJhY2tpbmcuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+U2VlICI8dWxpbmsgdXJsPSdodHRwOi8vYXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZyc+WW9jdG8gUHJvamVjdCBBdXRvYnVpbGRlcjwvdWxpbms+IgorICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBsaW5rcyB0byBidWlsZGJvdC4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIGhhcyBmb3VuZCB0aGlzIGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICAgICAgd29ya3Mgd2VsbCBpbiB0aGlzIHJvbGUuCisgICAgICAgICAgICAgICAgQSBwdWJsaWMgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzLCB3aGljaCB3ZSB1c2UgdG8gdGVzdCB0aGUgb3ZlcmFsbCBoZWFsdGggb2YgdGhlCisgICAgICAgICAgICAgICAgcHJvamVjdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZmVhdHVyZXMgb2YgdGhpcyBzeXN0ZW0gYXJlOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICBIaWdobGlnaHRzIHdoZW4gY29tbWl0cyBicmVhayB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVsYXRlcyBhbiBzc3RhdGUgY2FjaGUgZnJvbSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVycyBjYW4gcHVsbCByYXRoZXIgdGhhbiByZXF1aXJpbmcgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd3MgY29tbWl0IGhvb2sgdHJpZ2dlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB0cmlnZ2VyIGJ1aWxkcyB3aGVuIGNvbW1pdHMgYXJlIG1hZGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHRyaWdnZXJpbmcgb2YgYXV0b21hdGVkIGltYWdlIGJvb3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0ZXN0aW5nIHVuZGVyIHRoZSBRdWlja0VNVWxhdG9yIChRRU1VKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0cyBpbmNyZW1lbnRhbCBidWlsZCB0ZXN0aW5nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbS1zY3JhdGNoIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTaGFyZXMgb3V0cHV0IHRoYXQgYWxsb3dzIGRldmVsb3BlcgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZyBhbmQgaGlzdG9yaWNhbCByZWdyZXNzaW9uIGludmVzdGlnYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBvdXRwdXQgdGhhdCBjYW4gYmUgdXNlZCBmb3IgcmVsZWFzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHNjaGVkdWxpbmcgb2YgYnVpbGRzIHNvIHRoYXQgcmVzb3VyY2VzCisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgdXNlZCBlZmZpY2llbnRseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCBUZXN0IE1hY2hpbmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICBVc2UgYSBzbWFsbCBudW1iZXIgb2Ygc2hhcmVkLCBoaWdoIHBlcmZvcm1hbmNlIHN5c3RlbXMKKyAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgICAgICAgICAgICAgRGV2ZWxvcGVycyBjYW4gdXNlIHRoZXNlIHN5c3RlbXMgZm9yIHdpZGVyLCBtb3JlCisgICAgICAgICAgICAgICBleHRlbnNpdmUgdGVzdGluZyB3aGlsZSB0aGV5IGNvbnRpbnVlIHRvIGRldmVsb3AKKyAgICAgICAgICAgICAgIGxvY2FsbHkgdXNpbmcgdGhlaXIgcHJpbWFyeSBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRvY3VtZW50IFBvbGljaWVzIGFuZCBDaGFuZ2UgRmxvdzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXRzZWxmIHVzZXMgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlIGFuZCBhCisgICAgICAgICAgICAgICAgcHVsbCBtb2RlbC4KKyAgICAgICAgICAgICAgICBTY3JpcHRzIGV4aXN0IHRvIGNyZWF0ZSBhbmQgc2VuZCBwdWxsIHJlcXVlc3RzCisgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgVGhpcyBtb2RlbCBpcyBpbiBsaW5lIHdpdGggb3RoZXIgb3BlbiBzb3VyY2UgcHJvamVjdHMgd2hlcmUKKyAgICAgICAgICAgICAgICBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBwcm9qZWN0CisgICAgICAgICAgICAgICAgYW5kIGEgc2luZ2xlIG1haW50YWluZXIgaGFuZGxlcyB0aGUgZmluYWwgInRvcC1vZi10cmVlIiBtZXJnZXMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgYSBtb3JlIGNvbGxlY3RpdmUgcHVzaCBtb2RlbC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHNvZnR3YXJlIHN1cHBvcnRzIGJvdGggdGhlCisgICAgICAgICAgICAgICAgICAgIHB1c2ggYW5kIHB1bGwgbW9kZWxzIHF1aXRlIGVhc2lseS4KKyAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+QXMgd2l0aCBhbnkgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGl0IGlzIGltcG9ydGFudAorICAgICAgICAgICAgICAgIHRvIGRvY3VtZW50IHRoZSBwb2xpY3kgdXNlZCBhcyB3ZWxsIGFzIGFueSBtYWluIHByb2plY3QKKyAgICAgICAgICAgICAgICBndWlkZWxpbmVzIHNvIHRoZXkgYXJlIHVuZGVyc3Rvb2QgYnkgZXZlcnlvbmUuCisgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBhIGdvb2QgaWRlYSB0byBoYXZlIHdlbGwgc3RydWN0dXJlZAorICAgICAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlcywgd2hpY2ggYXJlIHVzdWFsbHkgYSBwYXJ0IG9mIGEgcHJvamVjdCdzCisgICAgICAgICAgICAgICAgZ3VpZGVsaW5lcy4KKyAgICAgICAgICAgICAgICBHb29kIGNvbW1pdCBtZXNzYWdlcyBhcmUgZXNzZW50aWFsIHdoZW4gbG9va2luZyBiYWNrIGluIHRpbWUgYW5kCisgICAgICAgICAgICAgICAgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgd2h5IGNoYW5nZXMgd2VyZSBtYWRlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBkaXNjb3ZlciB0aGF0IGNoYW5nZXMgYXJlIG5lZWRlZCB0byB0aGUgY29yZQorICAgICAgICAgICAgICAgIGxheWVyIG9mIHRoZSBwcm9qZWN0LCBpdCBpcyB3b3J0aCBzaGFyaW5nIHRob3NlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgY29tbXVuaXR5IGFzIHNvb24gYXMgcG9zc2libGUuCisgICAgICAgICAgICAgICAgQ2hhbmNlcyBhcmUgaWYgeW91IGhhdmUgZGlzY292ZXJlZCB0aGUgbmVlZCBmb3IgY2hhbmdlcywKKyAgICAgICAgICAgICAgICBzb21lb25lIGVsc2UgaW4gdGhlIGNvbW11bml0eSBuZWVkcyB0aGVtIGFsc28uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldmVsb3BtZW50IEVudmlyb25tZW50IFN1bW1hcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBc2lkZSBmcm9tIHRoZSBwcmV2aW91cyBzdGVwcywgc29tZSBiZXN0IHByYWN0aWNlcyBleGlzdAorICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGUgc291cmNlIGNvbnRyb2wgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1haW50YWluIHlvdXIgTWV0YWRhdGEgaW4gbGF5ZXJzIHRoYXQgbWFrZSBzZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgc2l0dWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC9saW5rPiIgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlcGFyYXRlIHRoZSBwcm9qZWN0J3MgTWV0YWRhdGEgYW5kIGNvZGUgYnkgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlIEdpdCByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyN5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbG9jYXRpbmcteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPkxvY2F0aW5nIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgbG9jYWwgR2l0CisgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMgZm9yIHJlbGF0ZWQgdXBzdHJlYW0gWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdXAgdGhlIGRpcmVjdG9yeSBmb3IgdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZQorICAgICAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TU1RBVEVfRElSJz48ZmlsZW5hbWU+U1NUQVRFX0RJUjwvZmlsZW5hbWU+PC91bGluaz4pCisgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBpdCBtYWtlcyBzZW5zZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzZXQgdXAgdGhlIHNzdGF0ZSBjYWNoZSBvbiBhIHN5c3RlbSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICBieSBkZXZlbG9wZXJzIGluIHRoZSBzYW1lIG9yZ2FuaXphdGlvbiBhbmQgc2hhcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzYW1lIHNvdXJjZSBkaXJlY3RvcmllcyBvbiB0aGVpciBtYWNoaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdXAgYW4gQXV0b2J1aWxkZXIgYW5kIGhhdmUgaXQgcG9wdWxhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzc3RhdGUgY2FjaGUgYW5kIHNvdXJjZSBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBjb21tdW5pdHkgZW5jb3VyYWdlcyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNlbmQgcGF0Y2hlcyB0byB0aGUgcHJvamVjdCB0byBmaXggYnVncyBvciBhZGQgZmVhdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gc3VibWl0IHBhdGNoZXMsIGZvbGxvdyB0aGUgcHJvamVjdCBjb21taXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlbGluZXMgZm9yIHdyaXRpbmcgZ29vZCBjb21taXQgbWVzc2FnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VuZCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHNvb25lciB0aGFuIGxhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBhcyBvdGhlcnMgYXJlIGxpa2VseSB0byBydW4gaW50byB0aGUgc2FtZSBpc3N1ZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3Igc29tZSBndWlkYW5jZSBvbiBtYWlsaW5nIGxpc3RzIHRvIHVzZSwgc2VlIHRoZSBsaXN0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBhdmFpbGFibGUgbWFpbGluZyBsaXN0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1tYWlsaW5nbGlzdCc+TWFpbGluZyBMaXN0czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCiA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPgotICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRoZSBEZXZlbG9wbWVudCBIb3N0IHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+CisgICAgPHRpdGxlPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdGl0bGU+CiAKICAgICA8cGFyYT4KICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHByb2NlZHVyZXMgdG8gc2V0IHVwIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdCB0bwpAQCAtMTc3LDcgKzU0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNpdGUuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdvIHRoZSBJbnN0YWxsIFNpdGUgZm9yIFlvdXIgUGxhdGZvcm06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdvIHRvIHRoZSBJbnN0YWxsIFNpdGUgZm9yIFlvdXIgUGxhdGZvcm06PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlIGxpbmsgZm9yIHRoZSBEb2NrZXIgZWRpdGlvbiBhc3NvY2lhdGVkIHdpdGgKICAgICAgICAgICAgICAgICAgICAgeW91ciBkZXZlbG9wbWVudCBob3N0IG1hY2hpbmUncyBuYXRpdmUgc29mdHdhcmUuCiAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3VyIG1hY2hpbmUgaXMgcnVubmluZyBNaWNyb3NvZnQKQEAgLTIxMyw4ICs1ODEsOCBAQAogICAgICAgICAgICAgICAgICAgICB0aGUgdHlwZSBvZiB0aGUgc29mdHdhcmUgeW91IG5lZWQgdG8gaW5zdGFsbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBPcmllbnQgWW91cnNlbGYgV2l0aCBEb2NrZXJzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdW5mYW1pbGlhciB3aXRoIERvY2tlcnMgYW5kIHRoZSBjb250YWluZXIKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgT3JpZW50IFlvdXJzZWxmIFdpdGggRG9ja2VyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdW5mYW1pbGlhciB3aXRoIERvY2tlciBhbmQgdGhlIGNvbnRhaW5lcgogICAgICAgICAgICAgICAgICAgICBjb25jZXB0LCB5b3UgY2FuIGxlYXJuIG1vcmUgaGVyZSAtCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2dldC1zdGFydGVkLyc+PC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgYmUgYWJsZSB0byBsYXVuY2ggRG9ja2VyIG9yIHRoZSBEb2NrZXIgVG9vbGJveApAQCAtMjUwLDI1ICs2MTgsMjUgQEAKICAgICA8L3NlY3Rpb24+CiA8L3NlY3Rpb24+CiAKLTxzZWN0aW9uIGlkPSd3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPgotICAgIDx0aXRsZT5Xb3JraW5nIFdpdGggWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3RpdGxlPgorPHNlY3Rpb24gaWQ9J2xvY2F0aW5nLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz4KKyAgICA8dGl0bGU+TG9jYXRpbmcgWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyBwcm9jZWR1cmVzIHJlbGF0ZWQgdG8gbG9jYXRpbmcgYW5kIHNlY3VyaW5nCi0gICAgICAgIFlvY3RvIFByb2plY3QgZmlsZXMuCisgICAgICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyBwcm9jZWR1cmVzIHJlbGF0ZWQgdG8gbG9jYXRpbmcgWW9jdG8gUHJvamVjdAorICAgICAgICBmaWxlcy4KICAgICAgICAgWW91IGVzdGFibGlzaCBhbmQgdXNlIHRoZXNlIGxvY2FsIGZpbGVzIHRvIHdvcmsgb24gcHJvamVjdHMuCiAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgRm9yIGNvbmNlcHRzIGFuZCBpbnRyb2R1Y3RvcnkgaW5mb3JtYXRpb24gYWJvdXQgR2l0IGFzIGl0CiAgICAgICAgICAgICAgICAgICAgIGlzIHVzZWQgaW4gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdCc+R2l0PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBjb25jZXB0cyBvbiBZb2N0byBQcm9qZWN0IHNvdXJjZSByZXBvc2l0b3JpZXMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLiIKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuIgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICA8L25vdGU+CkBAIC0yNzgsOSArNjQ2LDIwIEBACiAgICAgICAgIDx0aXRsZT5BY2Nlc3NpbmcgU291cmNlIFJlcG9zaXRvcmllczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb2N0byBQcm9qZWN0IG1haW50YWlucyB1cHN0cmVhbSBHaXQKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgotICAgICAgICAgICAgdGhhdCB5b3UgY2FuIGV4YW1pbmUgYW5kIGFjY2VzcyB1c2luZyBhIGJyb3dzZXItYmFzZWQgVUk6CisgICAgICAgICAgICBXb3JraW5nIGZyb20gYSBjb3B5IG9mIHRoZSB1cHN0cmVhbSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgaXMgdGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIG9idGFpbmluZyBhbmQgdXNpbmcgYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICByZWxlYXNlLgorICAgICAgICAgICAgWW91IGNhbiB2aWV3IHRoZSBZb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXMgYXQKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+PC91bGluaz4uCisgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuIGZpbmQgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgYXQKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvJz48L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlIHRvIGxvY2F0ZSB0aGUgbGF0ZXN0IHVwc3RyZWFtIGNvcHkgb2YKKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5OgogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFjY2VzcyBSZXBvc2l0b3JpZXM6PC9lbXBoYXNpcz4KQEAgLTI5MCwyNCArNjY5LDIxIEBACiAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IGEgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDbGljayBvbiBhbnkgcmVwb3NpdG9yeSBpbiB3aGljaCB5b3UgYXJlIGludGVyZXN0ZWQgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdCB0aGUgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDbGljayBvbiB0aGUgcmVwb3NpdG9yeSBpbiB3aGljaCB5b3UgYXJlIGludGVyZXN0ZWQgKGkuZS4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZpbmQgdGhlIFVSTCBVc2VkIHRvIENsb25lIHRoZSBSZXBvc2l0b3J5OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIEF0IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UsIG5vdGUgdGhlIFVSTCB1c2VkIHRvCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdC1jb21tYW5kcy1jbG9uZSc+Y2xvbmU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2dpdC1jb21tYW5kcy1jbG9uZSc+Y2xvbmU8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICB0aGF0IHJlcG9zaXRvcnkgKGUuZy4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZZT0NUT19HSVRfVVJMOy9wb2t5PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGFtaW5lIENoYW5nZSBIaXN0b3J5IG9mIHRoZSBSZXBvc2l0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UsIGNsaWNrIG9uIGFueSBicmFuY2ggaW4gd2hpY2ggeW91Ci0gICAgICAgICAgICAgICAgICAgIG1pZ2h0IGJlIGludGVyZXN0ZWQgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZESVNUUk9fTkFNRV9OT19DQVA7PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHRoZW4gdmlldyB0aGUgY29tbWl0IGxvZyBvciB0cmVlIHZpZXcgZm9yIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBjbG9uaW5nIGEgcmVwb3NpdG9yeSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+Q2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICA8L3BhcmE+CkBAIC0zMTksMTIgKzY5NSwxMiBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgbWFpbnRhaW5zIGFuIEluZGV4IG9mIFJlbGVhc2VzIGFyZWEgdGhhdCBjb250YWlucwogICAgICAgICAgICAgcmVsYXRlZCBmaWxlcyB0aGF0IGNvbnRyaWJ1dGUgdG8gdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICBSYXRoZXIgdGhhbiBHaXQgcmVwb3NpdG9yaWVzLCB0aGVzZSBmaWxlcyByZXByZXNlbnQgc25hcHNob3QKLSAgICAgICAgICAgIHRhcmJhbGxzLgorICAgICAgICAgICAgUmF0aGVyIHRoYW4gR2l0IHJlcG9zaXRvcmllcywgdGhlc2UgZmlsZXMgYXJlIHRhcmJhbGxzIHRoYXQKKyAgICAgICAgICAgIHJlcHJlc2VudCBzbmFwc2hvdHMgaW4gdGltZSBvZiBhIGdpdmVuIGNvbXBvbmVudC4KICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgogICAgICAgICAgICAgICAgIFRoZSByZWNvbW1lbmRlZCBtZXRob2QgZm9yIGFjY2Vzc2luZyBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgY29tcG9uZW50cyBpcyB0byB1c2UgR2l0IHRvIGNsb25lIGEgcmVwb3NpdG9yeSBhbmQgd29yayBmcm9tCi0gICAgICAgICAgICAgICAgd2l0aGluIHRoYXQgbG9jYWwgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBjb21wb25lbnRzIGlzIHRvIHVzZSBHaXQgdG8gY2xvbmUgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkgYW5kCisgICAgICAgICAgICAgICAgd29yayBmcm9tIHdpdGhpbiB0aGF0IGxvY2FsbHkgY2xvbmVkIHJlcG9zaXRvcnkuCiAgICAgICAgICAgICAgICAgVGhlIHByb2NlZHVyZSBpbiB0aGlzIHNlY3Rpb24gZXhpc3RzIHNob3VsZCB5b3UgZGVzaXJlIGEKICAgICAgICAgICAgICAgICB0YXJiYWxsIHNuYXBzaG90IG9mIGFueSBnaXZlbiBjb21wb25lbnQuCiAgICAgICAgICAgICA8L25vdGU+CkBAIC0zNDIsOCArNzE4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgYXJyYXkgb2YgcmVsZWFzZWQgUG9reSB0YXJiYWxscy4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IG9mIFJlbGVhc2VzIHdhcyBoaXN0b3JpY2FsbHkgdXNlZCBmb3IgdmVyeQotICAgICAgICAgICAgICAgICAgICAgICAgZWFybHkgcmVsZWFzZXMgYW5kIGV4aXN0cyBmb3IgcmV0cm9hY3RpdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlbmVzcyBvbmx5LgorICAgICAgICAgICAgICAgICAgICAgICAgZWFybHkgcmVsZWFzZXMgYW5kIGV4aXN0cyBub3cgb25seSBmb3IgcmV0cm9hY3RpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlbmVzcy4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0zNjEsNyArNzM3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RG93bmxvYWQgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ2xpY2sgYSB0YXJiYWxsIHRvIGRvd25sb2FkIGFuZCBzYXZlIGEgc25hcHNob3Qgb2YgYQorICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgdGFyYmFsbCB0byBkb3dubG9hZCBhbmQgc2F2ZSBhIHNuYXBzaG90IG9mIHRoZQogICAgICAgICAgICAgICAgICAgICBnaXZlbiBjb21wb25lbnQuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KQEAgLTM3NCw3ICs3NTAsNyBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZQogICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4KLSAgICAgICAgICAgIHVzZXMgYSAiRG93bmxvYWRzIiBhcmVhIGZyb20gd2hpY2ggeW91IGNhbiBsb2NhdGUgYW5kIGRvd25sb2FkCisgICAgICAgICAgICB1c2VzIGEgIkRPV05MT0FEUyIgcGFnZSBmcm9tIHdoaWNoIHlvdSBjYW4gbG9jYXRlIGFuZCBkb3dubG9hZAogICAgICAgICAgICAgdGFyYmFsbHMgb2YgYW55IFlvY3RvIFByb2plY3QgcmVsZWFzZS4KICAgICAgICAgICAgIFJhdGhlciB0aGFuIEdpdCByZXBvc2l0b3JpZXMsIHRoZXNlIGZpbGVzIHJlcHJlc2VudCBzbmFwc2hvdAogICAgICAgICAgICAgdGFyYmFsbHMuCkBAIC0zOTQsNTIgKzc3MCwxMDAgQEAKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2V0IHRvIHRoZSBEb3dubG9hZHMgQXJlYTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgIkRvd25sb2FkcyIgdGFiLgorICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhlICJET1dOTE9BRFMiIGl0ZW0gZnJvbSB0aGUgcHVsbC1kb3duCisgICAgICAgICAgICAgICAgICAgICJTT0ZUV0FSRSIgdGFiIG1lbnUuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdCB0aGUgVHlwZSBvZiBGaWxlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgdHlwZSBvZiBmaWxlcyB5b3Ugd2FudCAoaS5lICJCdWlsZCBTeXN0ZW0iLAotICAgICAgICAgICAgICAgICAgICAiVG9vbHMiLCBvciAiQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcykiLgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IGEgWW9jdG8gUHJvamVjdCBSZWxlYXNlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgbWVudSBuZXh0IHRvICJSRUxFQVNFIiB0byBkaXNwbGF5IGFuZCBjaG9vc2UKKyAgICAgICAgICAgICAgICAgICAgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UgKGUuZy4gc3Vtbywgcm9ja28sIHB5cm8sIGFuZAorICAgICAgICAgICAgICAgICAgICBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGEgIm1hcCIgb2YgWW9jdG8gUHJvamVjdCByZWxlYXNlcyB0byB2ZXJzaW9uIG51bWJlcnMsCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvY2F0ZSBhbmQgRG93bmxvYWQgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgbGlzdCBvZiByZWxlYXNlcywgbG9jYXRlIHRoZSBhcHByb3ByaWF0ZQotICAgICAgICAgICAgICAgICAgICBkb3dubG9hZCBsaW5rIGFuZCBkb3dubG9hZCB0aGUgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCBUb29scyBvciBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSAiRE9XTkxPQURTIiBwYWdlLCB5b3UgY2FuIGRvd25sb2FkIHRvb2xzIG9yCisgICAgICAgICAgICAgICAgICAgIEJTUHMgYXMgd2VsbC4KKyAgICAgICAgICAgICAgICAgICAgSnVzdCBzY3JvbGwgZG93biB0aGUgcGFnZSBhbmQgbG9vayBmb3Igd2hhdCB5b3UgbmVlZC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCisgICAgPHNlY3Rpb24gaWQ9J2FjY2Vzc2luZy1uaWdodGx5LWJ1aWxkcyc+CisgICAgICAgIDx0aXRsZT5BY2Nlc3NpbmcgTmlnaHRseSBCdWlsZHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBtYWludGFpbnMgYW4gYXJlYSBmb3IgbmlnaHRseSBidWlsZHMgdGhhdCBjb250YWlucworICAgICAgICAgICAgdGFyYmFsbCByZWxlYXNlcyBhdCA8dWxpbmsgdXJsPScmWU9DVE9fQUJfTklHSFRMWV9VUkw7Jy8+LgorICAgICAgICAgICAgVGhlc2UgYnVpbGRzIGluY2x1ZGUgWW9jdG8gUHJvamVjdCByZWxlYXNlcywgU0RLIGluc3RhbGxhdGlvbgorICAgICAgICAgICAgc2NyaXB0cywgYW5kIGV4cGVyaW1lbnRhbCBidWlsZHMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNob3VsZCB5b3UgZXZlciB3YW50IHRvIGFjY2VzcyBhIG5pZ2h0bHkgYnVpbGQgb2YgYSBwYXJ0aWN1bGFyCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGNvbXBvbmVudCwgdXNlIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlOgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFjY2VzcyB0aGUgTmlnaHRseSBCdWlsZHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT3BlbiBhIGJyb3dzZXIgYW5kIGdvIHRvCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19BQl9OSUdIVExZX1VSTDsnLz4gdG8gYWNjZXNzIHRoZQorICAgICAgICAgICAgICAgICAgICBOaWdodGx5IEJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IGEgQnVpbGQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gYW55IGJ1aWxkIGJ5IGRhdGUgaW4gd2hpY2ggeW91IGFyZSBpbnRlcmVzdGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIHRoZSBUYXJiYWxsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERyaWxsIGRvd24gdG8gZmluZCB0aGUgYXNzb2NpYXRlZCB0YXJiYWxsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgdGFyYmFsbCB0byBkb3dubG9hZCBhbmQgc2F2ZSBhIHNuYXBzaG90IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBnaXZlbiBjb21wb25lbnQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2Nsb25pbmctYW5kLWNoZWNraW5nLW91dC1icmFuY2hzJz4KKyAgICA8dGl0bGU+Q2xvbmluZyBhbmQgQ2hlY2tpbmcgT3V0IEJyYW5jaGVzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUbyB1c2UgdGhlIFlvY3RvIFByb2plY3QsIHlvdSBuZWVkIGEgcmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICBsb2NhbGx5IGluc3RhbGxlZCBvbiB5b3VyIGRldmVsb3BtZW50IHN5c3RlbS4KKyAgICAgICAgVGhlIGxvY2FsbHkgaW5zdGFsbGVkIHNldCBvZiBmaWxlcyBpcyByZWZlcnJlZCB0byBhcyB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBjcmVhdGUgeW91ciBTb3VyY2UgRGlyZWN0b3J5IGJ5IHVzaW5nCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiB0byBjbG9uZSBhIGxvY2FsCisgICAgICAgIGNvcHkgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICBUaGUgcHJlZmVycmVkIG1ldGhvZCBvZiBnZXR0aW5nIHRoZSBZb2N0byBQcm9qZWN0IFNvdXJjZQorICAgICAgICAgICAgRGlyZWN0b3J5IHNldCB1cCBpcyB0byBjbG9uZSB0aGUgcmVwb3NpdG9yeS4KKyAgICAgICAgPC9ub3RlPgorICAgICAgICBXb3JraW5nIGZyb20gYSBjb3B5IG9mIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5IGFsbG93cyB5b3UKKyAgICAgICAgdG8gY29udHJpYnV0ZSBiYWNrIGludG8gdGhlIFlvY3RvIFByb2plY3Qgb3Igc2ltcGx5IHdvcmsgd2l0aAorICAgICAgICB0aGUgbGF0ZXN0IHNvZnR3YXJlIG9uIGEgZGV2ZWxvcG1lbnQgYnJhbmNoLgorICAgICAgICBCZWNhdXNlIEdpdCBtYWludGFpbnMgYW5kIGNyZWF0ZXMgYW4gdXBzdHJlYW0gcmVwb3NpdG9yeSB3aXRoCisgICAgICAgIGEgY29tcGxldGUgaGlzdG9yeSBvZiBjaGFuZ2VzIGFuZCB5b3UgYXJlIHdvcmtpbmcgd2l0aCBhIGxvY2FsCisgICAgICAgIGNsb25lIG9mIHRoYXQgcmVwb3NpdG9yeSwgeW91IGhhdmUgYWNjZXNzIHRvIGFsbCB0aGUgWW9jdG8KKyAgICAgICAgUHJvamVjdCBkZXZlbG9wbWVudCBicmFuY2hlcyBhbmQgdGFnIG5hbWVzIHVzZWQgaW4gdGhlIHVwc3RyZWFtCisgICAgICAgIHJlcG9zaXRvcnkuCisgICAgPC9wYXJhPgorCiAgICAgPHNlY3Rpb24gaWQ9J2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+CiAgICAgICAgIDx0aXRsZT5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LCB5b3UgbmVlZCBhIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgIGxvY2FsbHkgaW5zdGFsbGVkIG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtLgotICAgICAgICAgICAgVGhlIGxvY2FsbHkgaW5zdGFsbGVkIHNldCBvZiBmaWxlcyBpcyByZWZlcnJlZCB0byBhcyB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNyZWF0ZSB5b3VyIFNvdXJjZSBEaXJlY3RvcnkgYnkgdXNpbmcKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdCc+R2l0PC91bGluaz4gdG8gY2xvbmUgYSBsb2NhbAotICAgICAgICAgICAgY29weSBvZiB0aGUgdXBzdHJlYW0gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgotICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgVGhlIHByZWZlcnJlZCBtZXRob2Qgb2YgZ2V0dGluZyB0aGUgWW9jdG8gUHJvamVjdCBTb3VyY2UKLSAgICAgICAgICAgICAgICBEaXJlY3Rvcnkgc2V0IHVwIGlzIHRvIGNsb25lIHRoZSByZXBvc2l0b3J5LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgV29ya2luZyBmcm9tIGEgY29weSBvZiB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeSBhbGxvd3MgeW91Ci0gICAgICAgICAgICB0byBjb250cmlidXRlIGJhY2sgaW50byB0aGUgWW9jdG8gUHJvamVjdCBvciBzaW1wbHkgd29yayB3aXRoCi0gICAgICAgICAgICB0aGUgbGF0ZXN0IHNvZnR3YXJlIG9uIGEgZGV2ZWxvcG1lbnQgYnJhbmNoLgotICAgICAgICAgICAgQmVjYXVzZSBHaXQgbWFpbnRhaW5zIGFuZCBjcmVhdGVzIGFuIHVwc3RyZWFtIHJlcG9zaXRvcnkgd2l0aAotICAgICAgICAgICAgYSBjb21wbGV0ZSBoaXN0b3J5IG9mIGNoYW5nZXMgYW5kIHlvdSBhcmUgd29ya2luZyB3aXRoIGEgbG9jYWwKLSAgICAgICAgICAgIGNsb25lIG9mIHRoYXQgcmVwb3NpdG9yeSwgeW91IGhhdmUgYWNjZXNzIHRvIGFsbCB0aGUgWW9jdG8KLSAgICAgICAgICAgIFByb2plY3QgZGV2ZWxvcG1lbnQgYnJhbmNoZXMgYW5kIHRhZyBuYW1lcyB1c2VkIGluIHRoZSB1cHN0cmVhbQotICAgICAgICAgICAgcmVwb3NpdG9yeS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgogICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNyZWF0ZSBhIGxvY2FsIHZlcnNpb24gb2YgdGhlCiAgICAgICAgICAgICB1cHN0cmVhbQogICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcG9reSc+PGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPjwvdWxpbms+CkBAIC00NzMsOCArODk3LDggQEAKICAgICAgICAgICAgICAgICAgICAgYnJhbmNoIGJhc2VkIG9uIGEgdGFnIG5hbWUsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NoZWNraW5nLW91dC1ieS1icmFuY2gtaW4tcG9reSc+Q2hlY2tpbmcgT3V0IEJ5IEJyYW5jaCBpbiBQb2t5PC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+Q2hlY2tpbmcgT3V0IEJ5IFRhZyBpbiBQb2t5PC9saW5rPiIsCi0gICAgICAgICAgICAgICAgICAgIHJlc3BlY3RpdmVseS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+Q2hlY2tpbmcgT3V0IEJ5IFRhZyBpbiBQb2t5PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMsIHJlc3BlY3RpdmVseS48L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSB0aGUgcmVwb3NpdG9yeSBpcyBjcmVhdGVkLCB5b3UgY2FuIGNoYW5nZSB0bwogICAgICAgICAgICAgICAgICAgICB0aGF0IGRpcmVjdG9yeSBhbmQgY2hlY2sgaXRzIHN0YXR1cy4KQEAgLTYzNSw3ICsxMDU5LDcgQEAKICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVja291dCB0aGUgQnJhbmNoOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgY2hlY2tvdXQgdGFncy8mRElTVFJPOyAtYiBteV95b2N0b18mRElTVFJPOworICAgICAkIGdpdCBjaGVja291dCB0YWdzLyZESVNUUk9fUkVMX1RBRzsgLWIgbXlfeW9jdG9fJkRJU1RSTzsKICAgICAgU3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICdteV95b2N0b18mRElTVFJPOycKICAgICAgJCBnaXQgYnJhbmNoCiAgICAgICAgbWFzdGVyCkBAIC02NTYsOTUgKzEwODAsNiBAQAogICAgIDwvc2VjdGlvbj4KIDwvc2VjdGlvbj4KIAotPHNlY3Rpb24gaWQ9J3BlcmZvcm1pbmctYS1zaW1wbGUtYnVpbGQnPgotICAgIDx0aXRsZT5QZXJmb3JtaW5nIGEgU2ltcGxlIEJ1aWxkPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBTZXZlcmFsIG1ldGhvZHMgZXhpc3QgdGhhdCBhbGxvdyB5b3UgdG8gYnVpbGQgYW4gaW1hZ2Ugd2l0aGluIHRoZQotICAgICAgICBZb2N0byBQcm9qZWN0LgotICAgICAgICBUaGlzIHByb2NlZHVyZSBzaG93cyBob3cgdG8gYnVpbGQgYW4gaW1hZ2UgdXNpbmcgQml0QmFrZSBmcm9tIGEKLSAgICAgICAgTGludXggaG9zdC4KLSAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIGFuIGltYWdlIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3RvYXN0ZXItdGVybSc+VG9hc3RlcjwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPllvY3RvIFByb2plY3QgVG9hc3RlciBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIGJ1aWxkIGltYWdlcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjdXNpbmctZGV2dG9vbC1pbi15b3VyLXNkay13b3JrZmxvdyc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBpbiBZb3VyIFNESyBXb3JrZmxvdzwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZAotICAgICAgICAgICAgICAgICAgICB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBjcmVhdGVzIGFuIGVudGlyZSBMaW51eCBkaXN0cmlidXRpb24gZnJvbSBzb3VyY2UKLSAgICAgICAgYW5kIHBsYWNlcyBpdCBpbiB5b3VyCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgdW5kZXIgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzPC9maWxlbmFtZT4uCi0gICAgICAgIEZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgYnVpbGQgcHJvY2VzcyB1c2luZyBCaXRCYWtlLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgotICAgICAgICBZb3UgY2FuIGFsc28gcmVmZXJlbmNlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyNxcy1idWlsZGluZy1pbWFnZXMnPkJ1aWxkaW5nIEltYWdlczwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBhbmQgbGlzdCBvdmVydmlld3MgdGhlIGJ1aWxkIHByb2Nlc3M6Ci0gICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9iaXRiYWtlLWJ1aWxkLWZsb3cucG5nIiB3aWR0aD0iN2luIiBkZXB0aD0iNGluIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KLSAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgWW91ciBIb3N0IERldmVsb3BtZW50IFN5c3RlbSB0byBTdXBwb3J0Ci0gICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgVXNpbmcgdGhlIFlvY3RvIFByb2plY3Q8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjeXAtcmVzb3VyY2VzJz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQgZm9yIG9wdGlvbnMgb24gaG93Ci0gICAgICAgICAgICAgICAgdG8gZ2V0IGEgYnVpbGQgaG9zdCByZWFkeSB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYWxpemUgdGhlIEJ1aWxkIEVudmlyb25tZW50OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgYnkgc291cmNpbmcgdGhlIGJ1aWxkCi0gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2NyaXB0IChpLmUuCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+KS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBTdXJlIFlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIEZpbGUgaXMgQ29ycmVjdDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEVuc3VyZSB0aGUgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAotICAgICAgICAgICAgICAgIGlzIHNldCB1cCBob3cgeW91IHdhbnQgaXQuCi0gICAgICAgICAgICAgICAgVGhpcyBmaWxlIGRlZmluZXMgbWFueSBhc3BlY3RzIG9mIHRoZSBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgIGluY2x1ZGluZyB0aGUgdGFyZ2V0IG1hY2hpbmUgYXJjaGl0ZWN0dXJlIHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz5NQUNISU5FPC91bGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZSwKLSAgICAgICAgICAgICAgICB0aGUgcGFja2FnaW5nIGZvcm1hdCB1c2VkIGR1cmluZyB0aGUgYnVpbGQKLSAgICAgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC91bGluaz4pLAotICAgICAgICAgICAgICAgIGFuZCBhIGNlbnRyYWxpemVkIHRhcmJhbGwgZG93bmxvYWQgZGlyZWN0b3J5IHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ETF9ESVInPkRMX0RJUjwvdWxpbms+PC9maWxlbmFtZT4gdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBJbWFnZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEJ1aWxkIHRoZSBpbWFnZSB1c2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgYnVpbGRzIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBpbWFnZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIEJpdEJha2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi0tLT4KIDwvY2hhcHRlcj4KIDwhLS0KIHZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCmluZGV4IGVkODAxMWQuLjkzYTYxNWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbApAQCAtMTAyLDE0ICsxMDIsOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMjwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPk1hcmNoIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTEzMywyNCArMTI4LDM2IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCi0gICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAotICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCisgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscworICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBsb2NhdGVkIHRoaXMgbWFudWFsIHRocm91Z2ggYSB3ZWIgc2VhcmNoLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgbWFudWFsIG1pZ2h0IG5vdCBiZSB0aGUgb25lIHlvdSB3YW50CisgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIHRoZSBzZWFyY2ggbWlnaHQgaGF2ZSByZXR1cm5lZCBhIG1hbnVhbCBtdWNoCisgICAgICAgICAgICAgICAgICAgICAgIG9sZGVyIHRoYW4gdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiB3aXRoIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICAgICBhcmUgd29ya2luZykuCisgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCBZb2N0byBQcm9qZWN0IG1ham9yIHJlbGVhc2VzIGJ5CisgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvUmVsZWFzZXMnPlJlbGVhc2VzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCisgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpAQCAtMTYxLDggKzE2OCw2IEBACiAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJkZXYtbWFudWFsLXN0YXJ0LnhtbCIvPgogCi0gICAgPHhpOmluY2x1ZGUgaHJlZj0iZGV2LW1hbnVhbC1uZXdiaWUueG1sIi8+Ci0KICAgICA8eGk6aW5jbHVkZSBocmVmPSJkZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwiLz4KIAogICAgIDx4aTppbmNsdWRlIGhyZWY9ImRldi1tYW51YWwtcWVtdS54bWwiLz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9idWlsZGhpc3Rvcnktd2ViLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9idWlsZGhpc3Rvcnktd2ViLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2J1aWxkaGlzdG9yeS13ZWIucG5nCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvYnVpbGRoaXN0b3J5LXdlYi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2J1aWxkaGlzdG9yeS5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvYnVpbGRoaXN0b3J5LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2J1aWxkaGlzdG9yeS5wbmcKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9idWlsZGhpc3RvcnkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1hZHZhbmNlZC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtYWR2YW5jZWQueG1sCmluZGV4IGMzMDEzYjguLjVjNzZlZDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1hZHZhbmNlZC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWFkdmFuY2VkLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBLZXJuZWwgTWV0YWRhdGEgZXhpc3RzIGluIG1hbnkgcGxhY2VzLgogICAgICAgICBPbmUgYXJlYSBpbiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KICAgICAgICAgaXMgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeS4KICAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgcmVwb3NpdG9yeSBncm91cGVkIHVuZGVyIHRoZSAiWW9jdG8gTGludXggS2VybmVsIgogICAgICAgICBoZWFkaW5nIGluIHRoZQpAQCAtNjQsOCArNjQsNyBAQAogICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS01BQ0hJTkUnPjxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgdmFyaWFibGUuCiAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdHlwaWNhbGx5IHNldCB0byB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgdXNlZCBieQorICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlLCB3aGljaCBpcyB1c2VkIGJ5CiAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+LgogICAgICAgICBIb3dldmVyLCBpbiBzb21lIGNhc2VzLCB0aGUgdmFyaWFibGUgbWlnaHQgaW5zdGVhZCByZWZlciB0byB0aGUKICAgICAgICAgdW5kZXJseWluZyBwbGF0Zm9ybSBvZiB0aGUgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPi4KQEAgLTc3LDggKzc2LDcgQEAKICAgICAgICAgTXVsdGlwbGUgQ29yZWk3LWJhc2VkIEJTUHMgY291bGQgc2hhcmUgdGhlIHNhbWUgImludGVsLWNvcmVpNy02NCIKICAgICAgICAgdmFsdWUgZm9yIDxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+LgogICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gcmVhbGl6ZSB0aGF0IDxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+IGlzCi0gICAgICAgIGp1c3QgZm9yIGtlcm5lbCBtYXBwaW5nLCB3aGlsZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIGp1c3QgZm9yIGtlcm5lbCBtYXBwaW5nLCB3aGlsZSA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+CiAgICAgICAgIGlzIHRoZSBtYWNoaW5lIHR5cGUgd2l0aGluIGEgQlNQIExheWVyLgogICAgICAgICBFdmVuIHdpdGggdGhpcyBkaXN0aW5jdGlvbiwgaG93ZXZlciwgdGhlc2UgdHdvIHZhcmlhYmxlcyBjYW4gaG9sZAogICAgICAgICB0aGUgc2FtZSB2YWx1ZS4KQEAgLTExNiw4ICsxMTQsNyBAQAogICAgICAgICB1c2VkIGluIGFzc2VtYmxpbmcgdGhlIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgIElmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIDxmaWxlbmFtZT5MSU5VWF9LRVJORUxfVFlQRTwvZmlsZW5hbWU+LAogICAgICAgICBpdCBkZWZhdWx0cyB0byAic3RhbmRhcmQiLgotICAgICAgICBUb2dldGhlciB3aXRoCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LTUFDSElORSc+PGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgVG9nZXRoZXIgd2l0aCA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiwKICAgICAgICAgPGZpbGVuYW1lPkxJTlVYX0tFUk5FTF9UWVBFPC9maWxlbmFtZT4gZGVmaW5lcyB0aGUgc2VhcmNoCiAgICAgICAgIGFyZ3VtZW50cyB1c2VkIGJ5IHRoZSBrZXJuZWwgdG9vbHMgdG8gZmluZCB0aGUKICAgICAgICAgYXBwcm9wcmlhdGUgZGVzY3JpcHRpb24gd2l0aGluIHRoZSBrZXJuZWwgTWV0YWRhdGEgd2l0aCB3aGljaCB0bwpAQCAtNjMxLDggKzYyOCwxMCBAQAogICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgRm9yIEJTUHMgc3VwcG9ydGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0LCB0aGUgQlNQIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgZmlsZXMgYXJlIGxvY2F0ZWQgaW4gdGhlIDxmaWxlbmFtZT5ic3A8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBvZiB0aGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICBvcmdhbml6ZWQgdW5kZXIgdGhlICJZb2N0byBMaW51eCBLZXJuZWwiIGhlYWRpbmcgaW4gdGhlCisgICAgICAgICAgICAgICAgb2YgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kveW9jdG8ta2VybmVsLWNhY2hlL3RyZWUvYnNwJz48ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgb3JnYW5pemVkIHVuZGVyIHRoZSAiWW9jdG8gTGludXggS2VybmVsIiBoZWFkaW5nCisgICAgICAgICAgICAgICAgaW4gdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2knPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CkBAIC02NDEsMjcgKzY0MCwzMCBAQAogICAgICAgICAgICAgVGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyB0aGUgQlNQIGRlc2NyaXB0aW9uIHN0cnVjdHVyZSwgdGhlCiAgICAgICAgICAgICBhZ2dyZWdhdGlvbiBjb25jZXB0cywgYW5kIHByZXNlbnRzIGEgZGV0YWlsZWQgZXhhbXBsZSB1c2luZwogICAgICAgICAgICAgYSBCU1Agc3VwcG9ydGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IChpLmUuIEJlYWdsZUJvbmUgQm9hcmQpLgorICAgICAgICAgICAgRm9yIGNvbXBsZXRlIGluZm9ybWF0aW9uIG9uIEJTUCBsYXllciBmaWxlIGhpZXJhcmNoeSwgc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8c2VjdGlvbiBpZD0nYnNwLWRlc2NyaXB0aW9uLWZpbGUtb3ZlcnZpZXcnPgogICAgICAgICAgICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgdG9wLWxldmVsIEJTUAorICAgICAgICAgICAgICAgIEZvciBzaW1wbGljaXR5LCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHJvb3QgQlNQIGxheWVyCiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gZmlsZXMgZm9yIHRoZSBCZWFnbGVCb25lIGJvYXJkLgotICAgICAgICAgICAgICAgIFRvcC1sZXZlbCBCU1AgZGVzY3JpcHRpb25zIGZpbGVzIGVtcGxveSBib3RoIGEgc3RydWN0dXJlCi0gICAgICAgICAgICAgICAgYW5kIG5hbWluZyBjb252ZW50aW9uIGZvciBjb25zaXN0ZW5jeS4KKyAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyBlbXBsb3kgYm90aCBhIHN0cnVjdHVyZSBhbmQgbmFtaW5nIGNvbnZlbnRpb24KKyAgICAgICAgICAgICAgICBmb3IgY29uc2lzdGVuY3kuCiAgICAgICAgICAgICAgICAgVGhlIG5hbWluZyBjb252ZW50aW9uIGZvciB0aGUgZmlsZSBpcyBhcyBmb2xsb3dzOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4tPHJlcGxhY2VhYmxlPmtlcm5lbF90eXBlPC9yZXBsYWNlYWJsZT4uc2NjCisgICAgIDxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4tPHJlcGxhY2VhYmxlPmtlcm5lbF90eXBlPC9yZXBsYWNlYWJsZT4uc2NjCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgZXhhbXBsZSB0b3AtbGV2ZWwgQlNQIGZpbGVuYW1lcyBmb3IgdGhlCisgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBleGFtcGxlIHJvb3QgbGF5ZXIgQlNQIGZpbGVuYW1lcyBmb3IgdGhlCiAgICAgICAgICAgICAgICAgQmVhZ2xlQm9uZSBCb2FyZCBCU1AsIHdoaWNoIGlzIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdDoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIGJlYWdsZWJvbmUtc3RhbmRhcmQuc2NjCiAgICAgIGJlYWdsZWJvbmUtcHJlZW1wdC1ydC5zY2MKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgRWFjaCBmaWxlIHVzZXMgdGhlIEJTUCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSBrZXJuZWwgdHlwZS4KKyAgICAgICAgICAgICAgICBFYWNoIGZpbGUgdXNlcyB0aGUgcm9vdCBuYW1lIChpLmUgImJlYWdsZWJvbmUiKSBCU1AgbmFtZQorICAgICAgICAgICAgICAgIGZvbGxvd2VkIGJ5IHRoZSBrZXJuZWwgdHlwZS4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC04NTAsNyArODUyLDcgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgTm93IGNvbnNpZGVyIHRoZSAibWlubm93IiBkZXNjcmlwdGlvbiBmb3IgdGhlICJ0aW55IiBrZXJuZWwKLSAgICAgICAgICAgICAgICB0eXBlIChpLmUuIDxmaWxlbmFtZT5taW5ub3ctdGlueS5zY2M8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICB0eXBlIChpLmUuIDxmaWxlbmFtZT5taW5ub3ctdGlueS5zY2M8L2ZpbGVuYW1lPik6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAgICBkZWZpbmUgS01BQ0hJTkUgbWlubm93CiAgICAgICAgIGRlZmluZSBLVFlQRSB0aW55CkBAIC0xMDEyLDggKzEwMTQsNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgSWYgeW91IG1vZGlmeSB0aGUgTWV0YWRhdGEsIHlvdSBtdXN0IG5vdCBmb3JnZXQgdG8gdXBkYXRlIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIHN0YXRlbWVudHMgaW4gdGhlIGtlcm5lbCdzIHJlY2lwZS4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIGluIHRoZSBrZXJuZWwncyByZWNpcGUuCiAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB5b3UgbmVlZCB0byB1cGRhdGUgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDUkVWX21ldGE8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0byBtYXRjaCB0aGUgY29tbWl0IGluCiAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPktNRVRBPC9maWxlbmFtZT4gYnJhbmNoIHlvdSB3aXNoIHRvIHVzZS4KQEAgLTEyMjEsOSArMTIyMiwxMyBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZpbmU8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBEZWZpbmVzIHZhcmlhYmxlcywgc3VjaCBhcyA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPktBUkNIPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5LRkVBVFVSRV9ERVNDUklQVElPTjwvZmlsZW5hbWU+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIERlZmluZXMgdmFyaWFibGVzLCBzdWNoIGFzCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtNQUNISU5FJz48ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LVFlQRSc+PGZpbGVuYW1lPktUWVBFPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0FSQ0gnPjxmaWxlbmFtZT5LQVJDSDwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtGRUFUVVJFX0RFU0NSSVBUSU9OJz48ZmlsZW5hbWU+S0ZFQVRVUkVfREVTQ1JJUFRJT048L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbmNsdWRlIFNDQ19GSUxFPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgSW5jbHVkZXMgYW4gU0NDIGZpbGUgaW4gdGhlIGN1cnJlbnQgZmlsZS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwKaW5kZXggYjhmZDg3MC4uMjk5YmFjNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwKQEAgLTI1LDcgKzI1LDcgQEAKICAgICAgICAgICAgIEJlZm9yZSB5b3UgY2FuIGRvIGFueSBrZXJuZWwgZGV2ZWxvcG1lbnQsIHlvdSBuZWVkIHRvIGJlCiAgICAgICAgICAgICBzdXJlIHlvdXIgYnVpbGQgaG9zdCBpcyBzZXQgdXAgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZXQgc2V0IHVwLCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPlNldHRpbmcgVXAgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgogICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICBQYXJ0IG9mIHByZXBhcmluZyB0aGUgc3lzdGVtIGlzIGNyZWF0aW5nIGEgbG9jYWwgR2l0CiAgICAgICAgICAgICByZXBvc2l0b3J5IG9mIHRoZQpAQCAtNzksNyArNzksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGNvbW1hbmRzIGFzc3VtZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIGhhdmUgYmVlbiBjbG9uZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBHaXQgYW5kIHRoZSBsb2NhbCByZXBvc2l0b3J5IGlzIG5hbWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBva3kiLgpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUsIHJlc3BlY3RpdmVseS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBxdWlja2x5IHNldCB1cCBhIGxheWVyLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwuCkBAIC0zMDMsNyArMzAzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBjb21tYW5kcyBhc3N1bWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSBoYXZlIGJlZW4gY2xvbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgR2l0IGFuZCB0aGUgbG9jYWwgcmVwb3NpdG9yeSBpcyBuYW1lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb2t5Ii4KQEAgLTM2MCw3ICszNjAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLCByZXNwZWN0aXZlbHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gcXVpY2tseSBzZXQgdXAgYSBsYXllciwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgpAQCAtMzg3LDcgKzM4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgR2l0IHJlcG9zaXRvcmllcyBvZiBzdXBwb3J0ZWQgWW9jdG8gUHJvamVjdAogICAgICAgICAgICAgICAgICAgICAgICAga2VybmVscyBvcmdhbml6ZWQgdW5kZXIgIllvY3RvIExpbnV4IEtlcm5lbCIgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXMgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTQ4OSw3ICs0ODksOCBAQAogICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC91bGluaz4iCiAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCi0gICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGlzIHNjcmlwdC4KKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoaXMgc2NyaXB0IHRvIHF1aWNrIHNldCB1cCBhCisgICAgICAgICAgICAgICAgbmV3IGxheWVyLgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAKQEAgLTEyMjQsMTggKzEyMjUsNiBAQAogICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZ2V0dGluZy1yZWFkeS1mb3ItdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50Jz5HZXR0aW5nIFJlYWR5IGZvciBUcmFkaXRpb25hbCBLZXJuZWwgRGV2ZWxvcG1lbnQ8L2xpbms+IgogICAgICAgICAgICAgU2VjdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQWx0aG91Z2ggdGhpcyBleGFtcGxlIHVzZXMgR2l0IGFuZCBzaGVsbCBjb21tYW5kcyB0byBnZW5lcmF0ZSB0aGUKLSAgICAgICAgICAgIHBhdGNoLCB5b3UgY291bGQgdXNlIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gc2NyaXB0Ci0gICAgICAgICAgICBmb3VuZCBpbiB0aGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICB1bmRlciA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IHRvIGFkZCBhbmQgbWFuYWdlIGtlcm5lbAotICAgICAgICAgICAgcGF0Y2hlcyBhbmQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgIFNlZSB0aGUgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I21hbmFnaW5nLWtlcm5lbC1wYXRjaGVzLWFuZC1jb25maWctaXRlbXMtd2l0aC15b2N0by1rZXJuZWwnPk1hbmFnaW5nIGtlcm5lbCBQYXRjaGVzIGFuZCBDb25maWcgSXRlbXMgd2l0aCB5b2N0by1rZXJuZWw8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKQotICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gc2NyaXB0LgogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVkaXQgdGhlIFNvdXJjZSBGaWxlczwvZW1waGFzaXM+CkBAIC0xNDEzLDkgKzE0MDIsOSBAQAogICAgICBTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovLzAwMDEtY2FsaWJyYXRlLmMtQWRkZWQtc29tZS1wcmludGstc3RhdGVtZW50cy5wYXRjaCIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDt2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDt2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50cyBlbmFibGUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gZmluZAogICAgICAgICAgICAgICAgICAgICB0aGUgcGF0Y2ggZmlsZS48L3BhcmE+CiAKQEAgLTE2NjcsNyArMTY1Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGFmdGVyIGFwcGx5aW5nIHRoZSBleGlzdGluZyBkZWZjb25maWcgZmlsZSBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGtlcm5lbCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rPSdjaGFuZ2luZy10aGUtY29uZmlndXJhdGlvbic+Q2hhbmdpbmcgdGhlIENvbmZpZ3VyYXRpb248L2xpbms+IgorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjaGFuZ2luZy10aGUtY29uZmlndXJhdGlvbic+Q2hhbmdpbmcgdGhlIENvbmZpZ3VyYXRpb248L2xpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTI0MjksNyArMjQxOCw3IEBACiAgICAgICAgICAgICAgICAgbW9kdWxlcy4KICAgICAgICAgICAgICAgICBJZiB5b3VyIG1vZHVsZSA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPiB1c2VzIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHlvdSBtaWdodCB3YW50IHRvIG92ZXJyaWRlIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZSgpPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICBzdGVwLCBvciBjcmVhdGUgYSBwYXRjaCB0bwogICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPiB0byB3b3JrIHdpdGggdGhlIG1vcmUgdHlwaWNhbAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LRVJORUxfU1JDPC9maWxlbmFtZT4gb3IKQEAgLTI1MDUsNyArMjQ5NCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHRoZSBHaXQgY29tbWFuZHMuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBicmFuY2ggbmFtZXMgdGhyb3VnaCB0aGUgd2ViIGludGVyZmFjZQogICAgICAgICAgICAgICAgICAgICB0byB0aGUgWW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzIGF0Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0LmNnaSc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+PC91bGluaz4uCiAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIFRvIHNlZSBhIGZ1bGwgcmFuZ2Ugb2YgdGhlIGNoYW5nZXMsIHVzZSB0aGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IHdoYXRjaGFuZ2VkPC9maWxlbmFtZT4gY29tbWFuZCBhbmQgc3BlY2lmeSBhCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwKaW5kZXggZmJlY2MxMy4uNmQ2NzVhNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb25jZXB0cy1hcHB4LnhtbApAQCAtNDksNyArNDksNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgWW91IGNhbiBmaW5kIGEgd2ViIGludGVyZmFjZSB0byB0aGUgWW9jdG8gTGludXgga2VybmVscyBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KICAgICAgICAgICAgIGF0CiAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+LgogICAgICAgICAgICAgSWYgeW91IGxvb2sgYXQgdGhlIGludGVyZmFjZSwgeW91IHdpbGwgc2VlIHRvIHRoZSBsZWZ0IGEKQEAgLTIzOSw4ICsyMzksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2RvY3VtZW50YXRpb24nPjwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGdldCBhbiBpbnRyb2R1Y3Rpb24gdG8gR2l0IGFzIGl0CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWVzIHRvIHRoZSBZb2N0byBQcm9qZWN0IGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdCc+R2l0PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsYXR0ZXIgcmVmZXJlbmNlIHByb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mCiAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgYW5kIHByZXNlbnRzIGEgbWluaW1hbCBzZXQgb2YgR2l0IGNvbW1hbmRzCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFsbG93cyB5b3UgdG8gYmUgZnVuY3Rpb25hbCB1c2luZyBHaXQuCkBAIC0zODEsNyArMzgyLDcgQEAKICAgICAgICAgICAgICAgICBnZW5lcmljIGtlcm5lbCBqdXN0IGZvciBjb25jZXB0dWFsIHB1cnBvc2VzLgogICAgICAgICAgICAgICAgIEFsc28ga2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyB0aGUgWW9jdG8KICAgICAgICAgICAgICAgICBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KICAgICAgICAgICAgICAgICB0aGF0IGFyZSBlaXRoZXIgcHVsbGVkIGZyb20gZHVyaW5nIHRoZSBidWlsZCBvciBlc3RhYmxpc2hlZAogICAgICAgICAgICAgICAgIG9uIHRoZSBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBwcmlvciB0byB0aGUgYnVpbGQgYnkgZWl0aGVyCiAgICAgICAgICAgICAgICAgY2xvbmluZyBhIHBhcnRpY3VsYXIga2VybmVsJ3MgR2l0IHJlcG9zaXRvcnkgb3IgYnkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1pbnRyby54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtaW50cm8ueG1sCmluZGV4IGRiYTQ1NDkuLjRlNGZkMjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1pbnRyby54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWludHJvLnhtbApAQCAtMTA4LDcgKzEwOCwxMSBAQAogICAgICAgICByZXZpZXcgYW5kIHVuZGVyc3RhbmQgdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uOgogICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQ8L3VsaW5rPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JSSUVGX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgQnVpbGQ8L3VsaW5rPgorICAgICAgICAgICAgICAgIGRvY3VtZW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsnPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvdWxpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3VzaW5nLWRldnRvb2wtaW4teW91ci1zZGstd29ya2Zsb3cnPjxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya2Zsb3c8L3VsaW5rPgpAQCAtMTI3LDE4ICsxMzEsNiBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRmluYWxseSwgd2hpbGUgdGhpcyBkb2N1bWVudCBmb2N1c2VzIG9uIHRoZSBtYW51YWwgY3JlYXRpb24gb2YKLSAgICAgICAgcmVjaXBlcywgcGF0Y2hlcywgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSB0b29scyBhcmUgYXZhaWxhYmxlIHRvIGF1dG9tYXRlCi0gICAgICAgIHRoaXMgcHJvY2VzcyB3aXRoIGV4aXN0aW5nIGNvbnRlbnQgYW5kIHdvcmsgd2VsbCB0byBjcmVhdGUgdGhlCi0gICAgICAgIGluaXRpYWwgZnJhbWV3b3JrIGFuZCBib2lsZXJwbGF0ZSBjb2RlLgotICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGVzZSB0b29scywgc2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjdXNpbmctdGhlLXlvY3RvLXByb2plY3RzLWJzcC10b29scyc+VXNpbmcgdGhlIFlvY3RvIFByb2plY3QncyBCU1AgVG9vbHM8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MKLSAgICAgICAgR3VpZGUuCi0gICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCiA8c2VjdGlvbiBpZD0na2VybmVsLW1vZGlmaWNhdGlvbi13b3JrZmxvdyc+CkBAIC0xNjUsMTIgKzE1NywxNSBAQAogICAgIDxwYXJhPgogICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCBZb3VyIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtIHRvIFN1cHBvcnQKLSAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBVc2luZyB0aGUgWW9jdG8gUHJvamVjdDo8L2VtcGhhc2lzPgorCisKKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIFlvdXIgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW0gdG8gU3VwcG9ydAorICAgICAgICAgICAgICAgIERldmVsb3BtZW50IFVzaW5nIHRoZSBZb2N0byBQcm9qZWN0PC9lbXBoYXNpcz46CiAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3lwLXJlc291cmNlcyc+U2V0dGluZyBVcCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0IGZvciBvcHRpb25zIG9uIGhvdwotICAgICAgICAgICAgICAgIHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLXN0YXJ0Jz5TZXR0aW5nIFVwIHRoZSBEZXZlbG9wbWVudCBIb3N0IHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgIG9wdGlvbnMgb24gaG93IHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdG8gdXNlIHRoZSBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCBZb3VyIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtIGZvciBLZXJuZWwgRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KQEAgLTI0MywxMSArMjM4LDcgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPkFkZGl0aW9uYWxseSwgaWYgeW91IGFyZSB3b3JraW5nIGluIGEgQlNQIGxheWVyCiAgICAgICAgICAgICAgICAgYW5kIG5lZWQgdG8gbW9kaWZ5IHRoZSBCU1AncyBrZXJuZWwncyBjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I21hbmFnaW5nLWtlcm5lbC1wYXRjaGVzLWFuZC1jb25maWctaXRlbXMtd2l0aC15b2N0by1rZXJuZWwnPjxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgc2NyaXB0IGFzIHdlbGwgYXMgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbDwvZmlsZW5hbWU+IHNjcmlwdCBsZXRzCi0gICAgICAgICAgICAgICAgeW91IGludGVyYWN0aXZlbHkgc2V0IHVwIGtlcm5lbCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWJ1aWxkIHRoZSBLZXJuZWwgSW1hZ2UgV2l0aCBZb3VyIENoYW5nZXM6PC9lbXBoYXNpcz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1tYWludC1hcHB4LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1tYWludC1hcHB4LnhtbAppbmRleCBmNWZkMTgzLi5iODI1YWU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtbWFpbnQtYXBweC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LW1haW50LWFwcHgueG1sCkBAIC0xNCw3ICsxNCw3IEBACiAgICAgICAgICAgICBjcmVhdGUgWW9jdG8gTGludXgga2VybmVsIHJlcG9zaXRvcmllcy4KICAgICAgICAgICAgIFRoZXNlIGtlcm5lbCByZXBvc2l0b3JpZXMgYXJlIGZvdW5kIHVuZGVyIHRoZSBoZWFkaW5nICJZb2N0byBMaW51eAogICAgICAgICAgICAgS2VybmVsIiBhdAotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz4mWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2k8L3VsaW5rPgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz4mWU9DVE9fR0lUX1VSTDs8L3VsaW5rPgogICAgICAgICAgICAgYW5kIGFyZSBzaGlwcGVkIGFzIHBhcnQgb2YgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCiAgICAgICAgICAgICBUaGUgdGVhbSBjcmVhdGVzIHRoZXNlIHJlcG9zaXRvcmllcyBieSBjb21waWxpbmcgYW5kIGV4ZWN1dGluZyB0aGUKICAgICAgICAgICAgIHNldCBvZiBmZWF0dXJlIGRlc2NyaXB0aW9ucyBmb3IgZXZlcnkgQlNQIGFuZCBmZWF0dXJlIGluIHRoZQpAQCAtMTE4LDEzICsxMTgsMTMgQEAKICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3RlcHMgZGVzY3JpYmUgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIFlvY3RvIFByb2plY3QKICAgICAgICAgICAgIFRlYW0gY29uc3RydWN0cyB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgc291cmNlIEdpdCByZXBvc2l0b3J5CiAgICAgICAgICAgICAob3IgdHJlZSkgZm91bmQgYXQKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+PC91bGluaz4gZ2l2ZW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+IGdpdmVuIHRoZQogICAgICAgICAgICAgaW50cm9kdWN0aW9uIG9mIGEgbmV3IHRvcC1sZXZlbCBrZXJuZWwgZmVhdHVyZSBvciBCU1AuCi0gICAgICAgICAgICBUaGVzZSBhcmUgdGhlIGFjdGlvbnMgdGhhdCBlZmZlY3RpdmVseSBwcm92aWRlIHRoZSBNZXRhZGF0YQotICAgICAgICAgICAgYW5kIGNyZWF0ZSB0aGUgdHJlZSB0aGF0IGluY2x1ZGVzIHRoZSBuZXcgZmVhdHVyZSwgcGF0Y2ggb3IgQlNQOgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBhY3Rpb25zIGVmZmVjdGl2ZWx5IHByb3ZpZGUgdGhlIE1ldGFkYXRhCisgICAgICAgICAgICBhbmQgY3JlYXRlIHRoZSB0cmVlIHRoYXQgaW5jbHVkZXMgdGhlIG5ldyBmZWF0dXJlLCBwYXRjaCwgb3IgQlNQOgogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhc3MgRmVhdHVyZSB0byBCdWlsZCBTdWJzeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhc3MgRmVhdHVyZSB0byB0aGUgT3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBBIHRvcC1sZXZlbCBrZXJuZWwgZmVhdHVyZSBpcyBwYXNzZWQgdG8gdGhlIGtlcm5lbCBidWlsZAogICAgICAgICAgICAgICAgICAgICBzdWJzeXN0ZW0uCiAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGx5LCB0aGlzIGZlYXR1cmUgaXMgYSBCU1AgZm9yIGEgcGFydGljdWxhciBrZXJuZWwKQEAgLTEzOCw4ICsxMzgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW4tdHJlZSBrZXJuZWwtY2FjaGUgZGlyZWN0b3JpZXMsIHdoaWNoIGFyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3lvY3RvLWtlcm5lbC1jYWNoZS90cmVlL2JzcCc+PGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IG9yZ2FuaXplZCB1bmRlciB0aGUgIllvY3RvIExpbnV4IEtlcm5lbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmVhcyBwb2ludGVkIHRvIGJ5IDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KQEAgLTE0OCw5ICsxNTAsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIEZvciBhIHR5cGljYWwgYnVpbGQsIHRoZSB0YXJnZXQgb2YgdGhlIHNlYXJjaCBpcyBhCiAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUgZGVzY3JpcHRpb24gaW4gYW4gPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgIHdob3NlIG5hbWUgZm9sbG93cyB0aGlzIGZvcm1hdDoKKyAgICAgICAgICAgICAgICAgICAgd2hvc2UgbmFtZSBmb2xsb3dzIHRoaXMgZm9ybWF0IChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iZWFnbGVib25lLXN0YW5kYXJkLnNjYzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmVhZ2xlYm9uZS1wcmVlbXB0LXJ0LnNjYzwvZmlsZW5hbWU+KToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICA8cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+a2VybmVsX3R5cGU8L3JlcGxhY2VhYmxlPi5zY2MKKyAgICAgPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+a2VybmVsX3R5cGU8L3JlcGxhY2VhYmxlPi5zY2MKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTIxMyw3ICsyMTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZW5kIG9mIGFuIGV4aXN0aW5nIGJyYW5jaC4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmdWxsIHJlcG9zaXRvcnkgZ2VuZXJhdGlvbiB0aGF0IGlzIGZvdW5kIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgb2ZmaWNpYWwgWW9jdG8gUHJvamVjdCBrZXJuZWwgcmVwb3NpdG9yaWVzIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0LmNnaTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZzwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICBpcyB0aGUgY29tYmluYXRpb24gb2YgYWxsIHN1cHBvcnRlZCBib2FyZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtMjI3LDcgKzIzMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZ1bGwga2VybmVsIHRyZWUgdGhhdCB5b3Ugc2VlIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPjwvdWxpbms+IGlzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+IGlzCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgdGhyb3VnaCByZXBlYXRpbmcgdGhlIGFib3ZlIHN0ZXBzIGZvciBhbGwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkIEJTUHMuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZW5kIHJlc3VsdCBpcyBhIGJyYW5jaGVkLCBjbGVhbiBoaXN0b3J5IHRyZWUgdGhhdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi54bWwKaW5kZXggZWMzNmQyNC4uOTg2YzQ0MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sCkBAIC04NywxNCArODcsOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMjwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPk1hcmNoIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTExNiwyNCArMTExLDM2IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCi0gICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAotICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCisgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscworICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBsb2NhdGVkIHRoaXMgbWFudWFsIHRocm91Z2ggYSB3ZWIgc2VhcmNoLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgbWFudWFsIG1pZ2h0IG5vdCBiZSB0aGUgb25lIHlvdSB3YW50CisgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIHRoZSBzZWFyY2ggbWlnaHQgaGF2ZSByZXR1cm5lZCBhIG1hbnVhbCBtdWNoCisgICAgICAgICAgICAgICAgICAgICAgIG9sZGVyIHRoYW4gdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiB3aXRoIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICAgICBhcmUgd29ya2luZykuCisgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCBZb2N0byBQcm9qZWN0IG1ham9yIHJlbGVhc2VzIGJ5CisgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvUmVsZWFzZXMnPlJlbGVhc2VzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCisgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9hbmFseXNpcy1mb3ItcGFja2FnZS1zcGxpdHRpbmcucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9hbmFseXNpcy1mb3ItcGFja2FnZS1zcGxpdHRpbmcucG5nCmluZGV4IDA0ZjI3OTQuLjBjYjAzODYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nCmluZGV4IDBmODJhMWYuLjJjYTFmZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ieXBxcy10aXRsZS5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2J5cHFzLXRpdGxlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTBhNWNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ieXBxcy10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9jb25jZXB0cy1tYW51YWwtdGl0bGUucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9jb25jZXB0cy1tYW51YWwtdGl0bGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzdhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2NvbmNlcHRzLW1hbnVhbC10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZwppbmRleCBhMDc0NjRmLi4wNDNkMTk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbnMucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW5zLnBuZwppbmRleCBkMzY2NzBhLi5jYmU4MzcxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbnMucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbWFnZS1nZW5lcmF0aW9uLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcKaW5kZXggNzFhNDhkYy4uYWZmOWZjMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbWFnZS1nZW5lcmF0aW9uLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvaW1hZ2VzLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvaW1hZ2VzLnBuZwppbmRleCBkOTllYWMxLi4yMGMwMTMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2ltYWdlcy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbWFnZXMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2V5LWRldi1lbGVtZW50cy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tleS1kZXYtZWxlbWVudHMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2YzQ0MDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tleS1kZXYtZWxlbWVudHMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9sYXllci1pbnB1dC5wbmcKaW5kZXggMGE0ZjJlNy4uMjliNTZmOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9sYXllci1pbnB1dC5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9sYXllci1pbnB1dC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZTkwMTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL292ZXJ2aWV3LW1hbnVhbC10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmcKaW5kZXggMzdjOWMzMi4uNzU5MjgzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BhY2thZ2UtZmVlZHMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGF0Y2hpbmcucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYXRjaGluZy5wbmcKaW5kZXggOGVjZDAxOC4uODBmYmE3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYXRjaGluZy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYXRjaGluZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wb2t5LXJlZmVyZW5jZS1kaXN0cmlidXRpb24ucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wb2t5LXJlZmVyZW5jZS1kaXN0cmlidXRpb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZTg5YWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Bva3ktcmVmZXJlbmNlLWRpc3RyaWJ1dGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstYXV0b3Rvb2xzLWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstYXV0b3Rvb2xzLWZsb3cucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNjY4NWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1hdXRvdG9vbHMtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC1hZGQtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLWFkZC1mbG93LnBuZwppbmRleCBjMDllNjBlLi5lN2Q2MTczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLWFkZC1mbG93LnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLWFkZC1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLW1vZGlmeS1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nCmluZGV4IGNkMDZjMDEuLjE4YmE4YjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtdXBncmFkZS1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtdXBncmFkZS1mbG93LnBuZwppbmRleCA2NTQ3NGRhLi43ZDRmMzk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCBhZGJlMWY0Li45MzlmODM5Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLW1ha2VmaWxlLWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstbWFrZWZpbGUtZmxvdy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNjYjQxOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLW1ha2VmaWxlLWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLnBuZwppbmRleCA1YzM2Yjc1Li5hMzc2ODcyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGsucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZwppbmRleCAyNmFlZmI1Li5iZjVlMTg3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zb3VyY2UtZmV0Y2hpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWlucHV0LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWlucHV0LnBuZwppbmRleCBmNzUxNTA1Li42YjZiYTRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1pbnB1dC5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZwpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IGMyOTg0MDEuLjE0MjQ1NDcKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy91c2VyLWNvbmZpZ3VyYXRpb24ucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lvY3RvLWVudmlyb25tZW50LXJlZi5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lvY3RvLWVudmlyb25tZW50LXJlZi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MGM2YzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy95b2N0by1lbnZpcm9ubWVudC1yZWYucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy95cC1kb3dubG9hZC5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZwppbmRleCA1NzcwYmU2Li5iZmQxMmI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwKaW5kZXggYTk0MWQ3OS4uMmMwOTQzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLnhtbApAQCAtNzEsMTQgKzcxLDkgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KYW51YXJ5IDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4xIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjI8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5NYXJjaCAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi41PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWF5IDIwMTg8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTEwMCwyNCArOTUsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCi0gICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCisgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGxvY2F0ZWQgdGhpcyBtYW51YWwgdGhyb3VnaCBhIHdlYiBzZWFyY2gsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgbWlnaHQgbm90IGJlIHRoZSBvbmUgeW91IHdhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gdGhlIHNlYXJjaCBtaWdodCBoYXZlIHJldHVybmVkIGEgbWFudWFsIG11Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgb2xkZXIgdGhhbiB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIHdpdGggd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgICAgIGFyZSB3b3JraW5nKS4KKyAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIFlvY3RvIFByb2plY3QgbWFqb3IgcmVsZWFzZXMgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogCkBAIC0xMjUsMTAgKzEzMiwzMiBAQAogCiAgICAgPC9ib29raW5mbz4KIAotPCEtLSBJbmNsdWRlcyB5b2N0by1wcm9qZWN0LXFzIC0tPgorPCEtLSBJbmNsdWRlcyBicmllZi15b2N0b3Byb2plY3RxcyAtLT4KKworICAgIDxwYXJhPgorICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYnlwcXMtdGl0bGUucG5nIiB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIHNjYWxlZml0PSIxIiAvPgorICAgIDwvcGFyYT4KIAogICAgIDx4aTppbmNsdWRlCi0gICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMueG1sIi8+CisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy54bWwiLz4KKworPCEtLSBJbmNsdWRlcyBvdmVydmlldy1tYW51YWwgdGl0bGUgaW1hZ2UgYW5kIHRoZW4gb3ZlcnZpZXctbWFudWFsIGNoYXB0ZXJzIC0tPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nIiB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIHNjYWxlZml0PSIxIiAvPgorICAgIDwvcGFyYT4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWludHJvLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWNvbmNlcHRzLnhtbCIvPgogCiA8IS0tIEluY2x1ZGVzIGRldi1tYW51YWwgdGl0bGUgaW1hZ2UgYW5kIHRoZW4gZGV2LW1hbnVhbCBjaGFwdGVycyAtLT4KIApAQCAtMTQxLDggKzE3MCw2IEBACiAgICAgPHhpOmluY2x1ZGUKICAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwiLz4KICAgICA8eGk6aW5jbHVkZQotICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vZGV2LW1hbnVhbC9kZXYtbWFudWFsLW5ld2JpZS54bWwiLz4KLSAgICA8eGk6aW5jbHVkZQogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwiLz4KICAgICA8eGk6aW5jbHVkZQogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sIi8+CkBAIC0xNzAsNyArMTk3LDcgQEAKICAgICA8eGk6aW5jbHVkZQogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmctc3RhbmRhcmQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUKLSAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW1hcnMueG1sIi8+CisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1uZW9uLnhtbCIvPgogCiA8IS0tIEluY2x1ZGVzIGJzcC1ndWlkZSB0aXRsZSBpbWFnZSBhbmQgdGhlbiBic3AtZ3VpZGUgY2hhcHRlcnMgLS0+CiAKQEAgLTIyMCwxNiArMjQ3LDEwIEBACiAgICAgPC9wYXJhPgogCiAgICAgPHhpOmluY2x1ZGUKLSAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3JlZi1tYW51YWwvaW50cm9kdWN0aW9uLnhtbCIvPgorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwiLz4KIAogICAgIDx4aTppbmNsdWRlCi0gICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3VzaW5ncG9reS54bWwiLz4KLQotICAgIDx4aTppbmNsdWRlCi0gICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwiLz4KLQotICAgIDx4aTppbmNsdWRlCi0gICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3RlY2huaWNhbC1kZXRhaWxzLnhtbCIvPgorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sIi8+CiAKICAgICA8eGk6aW5jbHVkZQogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9yZWYtcmVsZWFzZS1wcm9jZXNzLnhtbCIvPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9ZUC1mbG93LWRpYWdyYW0ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9hbmFseXNpcy1mb3ItcGFja2FnZS1zcGxpdHRpbmcucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2IwMzg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQzZDE5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW5zLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbnMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiZTgzNzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW5zLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvZ2l0LXdvcmtmbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2dpdC13b3JrZmxvdy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9naXQtd29ya2Zsb3cucG5nCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9naXQtd29ya2Zsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmOWZjMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2ltYWdlcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9pbWFnZXMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwYzAxMzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9pbWFnZXMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMva2V5LWRldi1lbGVtZW50cy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9rZXktZGV2LWVsZW1lbnRzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmM0NDA1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMva2V5LWRldi1lbGVtZW50cy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YjU2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9sYXllci1pbnB1dC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvb3ZlcnZpZXctbWFudWFsLXRpdGxlLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL292ZXJ2aWV3LW1hbnVhbC10aXRsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFlOTAxMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL292ZXJ2aWV3LW1hbnVhbC10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTkyODM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvcGF0Y2hpbmcucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvcGF0Y2hpbmcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZmJhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9wYXRjaGluZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvcG9reS1yZWZlcmVuY2UtZGlzdHJpYnV0aW9uLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3Bva3ktcmVmZXJlbmNlLWRpc3RyaWJ1dGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJlODlhZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3Bva3ktcmVmZXJlbmNlLWRpc3RyaWJ1dGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzOWY4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvc2RrLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3Nkay5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM3Njg3MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3Nkay5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY1ZTE4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvc291cmNlLWlucHV0LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1pbnB1dC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI2YmE0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1pbnB1dC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAzMzAwYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQyNDU0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMveXAtZG93bmxvYWQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMveXAtZG93bmxvYWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZDEyYjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy95cC1kb3dubG9hZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1jb25jZXB0cy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWNvbmNlcHRzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzhhMTkwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1jb25jZXB0cy54bWwKQEAgLTAsMCArMSwzMjMyIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorCis8Y2hhcHRlciBpZD0nIG92ZXJ2aWV3LW1hbnVhbC1jb25jZXB0cyc+Cis8dGl0bGU+WW9jdG8gUHJvamVjdCBDb25jZXB0czwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIGV4cGxhbmF0aW9ucyBmb3IgWW9jdG8gUHJvamVjdCBjb25jZXB0cyB0aGF0CisgICAgICAgIGdvIGJleW9uZCB0aGUgc3VyZmFjZSBvZiAiaG93LXRvIiBpbmZvcm1hdGlvbiBhbmQgcmVmZXJlbmNlIChvcgorICAgICAgICBsb29rLXVwKSBtYXRlcmlhbC4KKyAgICAgICAgQ29uY2VwdHMgc3VjaCBhcyBjb21wb25lbnRzLCB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPgorICAgICAgICB3b3JrZmxvdywgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucywgc2hhcmVkIHN0YXRlIGNhY2hlLCBhbmQgc28KKyAgICAgICAgZm9ydGggYXJlIGV4cGxhaW5lZC4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1jb21wb25lbnRzJz4KKyAgICAgICAgPHRpdGxlPllvY3RvIFByb2plY3QgQ29tcG9uZW50czwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICB0YXNrIGV4ZWN1dG9yIHRvZ2V0aGVyIHdpdGggdmFyaW91cyB0eXBlcyBvZiBjb25maWd1cmF0aW9uIGZpbGVzCisgICAgICAgICAgICBmb3JtIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjb2UtY29yZSc+T3BlbkVtYmVkZGVkLUNvcmU8L3VsaW5rPi4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBvdmVydmlld3MgdGhlc2UgY29tcG9uZW50cyBieSBkZXNjcmliaW5nIHRoZWlyIHVzZSBhbmQKKyAgICAgICAgICAgIGhvdyB0aGV5IGludGVyYWN0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCaXRCYWtlIGhhbmRsZXMgdGhlIHBhcnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiB0aGUgZGF0YSBmaWxlcy4KKyAgICAgICAgICAgIFRoZSBkYXRhIGl0c2VsZiBpcyBvZiB2YXJpb3VzIHR5cGVzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWNpcGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIGRldGFpbHMgYWJvdXQgcGFydGljdWxhciBwaWVjZXMgb2Ygc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsYXNzIERhdGE6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQWJzdHJhY3RzIGNvbW1vbiBidWlsZCBpbmZvcm1hdGlvbiAoZS5nLiBob3cgdG8gYnVpbGQgYQorICAgICAgICAgICAgICAgICAgICBMaW51eCBrZXJuZWwpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db25maWd1cmF0aW9uIERhdGE6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyBtYWNoaW5lLXNwZWNpZmljIHNldHRpbmdzLCBwb2xpY3kgZGVjaXNpb25zLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gZGF0YSBhY3RzIGFzIHRoZSBnbHVlIHRvIGJpbmQgZXZlcnl0aGluZworICAgICAgICAgICAgICAgICAgICB0b2dldGhlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSBrbm93cyBob3cgdG8gY29tYmluZSBtdWx0aXBsZSBkYXRhIHNvdXJjZXMgdG9nZXRoZXIgYW5kCisgICAgICAgICAgICByZWZlcnMgdG8gZWFjaCBkYXRhIHNvdXJjZSBhcyBhIGxheWVyLgorICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGJyaWVmIGRldGFpbHMgb24gdGhlc2UgY29yZSBjb21wb25lbnRzLgorICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gaG93IHRoZXNlIGNvbXBvbmVudHMgaW50ZXJhY3QgZHVyaW5nCisgICAgICAgICAgICBhIGJ1aWxkLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nb3BlbmVtYmVkZGVkLWJ1aWxkLXN5c3RlbS1idWlsZC1jb25jZXB0cyc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbSBDb25jZXB0czwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5ncG9reS1jb21wb25lbnRzLWJpdGJha2UnPgorICAgICAgICAgICAgPHRpdGxlPkJpdEJha2U8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIGlzIHRoZSB0b29sIGF0IHRoZSBoZWFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+LAorICAgICAgICAgICAgICAgIGdlbmVyYXRpbmcgYSBsaXN0IG9mIHRhc2tzIGZyb20gaXQsIGFuZCB0aGVuIGV4ZWN1dGluZyB0aG9zZQorICAgICAgICAgICAgICAgIHRhc2tzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gYnJpZWZseSBpbnRyb2R1Y2VzIEJpdEJha2UuCisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgbW9yZSBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiaXRiYWtlLXVzZXItbWFudWFsJz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHNlZSBhIGxpc3Qgb2YgdGhlIG9wdGlvbnMgQml0QmFrZSBzdXBwb3J0cywgdXNlIGVpdGhlciBvZgorICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWgKKyAgICAgJCBiaXRiYWtlIC0taGVscAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIHVzYWdlIGZvciBCaXRCYWtlIGlzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgPHJlcGxhY2VhYmxlPnBhY2thZ2VuYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICB3aGVyZSA8ZmlsZW5hbWU+cGFja2FnZW5hbWU8L2ZpbGVuYW1lPiBpcyB0aGUgbmFtZSBvZiB0aGUKKyAgICAgICAgICAgICAgICBwYWNrYWdlIHlvdSB3YW50IHRvIGJ1aWxkIChyZWZlcnJlZCB0byBhcyB0aGUgInRhcmdldCIpLgorICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgb2Z0ZW4gZXF1YXRlcyB0byB0aGUgZmlyc3QgcGFydCBvZiBhIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgZmlsZW5hbWUgKGUuZy4gImZvbyIgZm9yIGEgcmVjaXBlIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvb18xLjMuMC1yMC5iYjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICBTbywgdG8gcHJvY2VzcyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWF0Y2hib3gtZGVza3RvcF8xLjIuMy5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmaWxlLCB5b3UKKyAgICAgICAgICAgICAgICBtaWdodCB0eXBlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBTZXZlcmFsIGRpZmZlcmVudCB2ZXJzaW9ucyBvZgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT4gbWlnaHQgZXhpc3QuCisgICAgICAgICAgICAgICAgQml0QmFrZSBjaG9vc2VzIHRoZSBvbmUgc2VsZWN0ZWQgYnkgdGhlIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgbW9yZSBkZXRhaWxzIGFib3V0IGhvdyBCaXRCYWtlIGNob29zZXMgYmV0d2VlbgorICAgICAgICAgICAgICAgIGRpZmZlcmVudCB0YXJnZXQgdmVyc2lvbnMgYW5kIHByb3ZpZGVycyBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiYi1iaXRiYWtlLXByZWZlcmVuY2VzJz5QcmVmZXJlbmNlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UgYWxzbyB0cmllcyB0byBleGVjdXRlIGFueSBkZXBlbmRlbnQgdGFza3MgZmlyc3QuCisgICAgICAgICAgICAgICAgU28gZm9yIGV4YW1wbGUsIGJlZm9yZSBidWlsZGluZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT4sIEJpdEJha2Ugd291bGQgYnVpbGQgYQorICAgICAgICAgICAgICAgIGNyb3NzIGNvbXBpbGVyIGFuZCA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiBpZiB0aGV5IGhhZCBub3QKKyAgICAgICAgICAgICAgICBhbHJlYWR5IGJlZW4gYnVpbHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEEgdXNlZnVsIEJpdEJha2Ugb3B0aW9uIHRvIGNvbnNpZGVyIGlzIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tazwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT4tLWNvbnRpbnVlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBvcHRpb24uCisgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaW5zdHJ1Y3RzIEJpdEJha2UgdG8gdHJ5IGFuZCBjb250aW51ZSBwcm9jZXNzaW5nCisgICAgICAgICAgICAgICAgdGhlIGpvYiBhcyBsb25nIGFzIHBvc3NpYmxlIGV2ZW4gYWZ0ZXIgZW5jb3VudGVyaW5nIGFuIGVycm9yLgorICAgICAgICAgICAgICAgIFdoZW4gYW4gZXJyb3Igb2NjdXJzLCB0aGUgdGFyZ2V0IHRoYXQgZmFpbGVkIGFuZCB0aG9zZSB0aGF0CisgICAgICAgICAgICAgICAgZGVwZW5kIG9uIGl0IGNhbm5vdCBiZSByZW1hZGUuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgd2hlbiB5b3UgdXNlIHRoaXMgb3B0aW9uIG90aGVyIGRlcGVuZGVuY2llcyBjYW4KKyAgICAgICAgICAgICAgICBzdGlsbCBiZSBwcm9jZXNzZWQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nb3ZlcnZpZXctY29tcG9uZW50cy1yZWNpcGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5SZWNpcGVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBoYXZlIHRoZSA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gc3VmZml4IGFyZQorICAgICAgICAgICAgICAgICJyZWNpcGVzIiBmaWxlcy4KKyAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBhIHJlY2lwZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBwaWVjZQorICAgICAgICAgICAgICAgIG9mIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVkZXMgdGhlIGxvY2F0aW9uIGZyb20gd2hpY2ggdG8gZG93bmxvYWQKKyAgICAgICAgICAgICAgICB0aGUgdW5hbHRlcmVkIHNvdXJjZSwgYW55IHNvdXJjZSBwYXRjaGVzIHRvIGJlIGFwcGxpZWQgdG8gdGhhdAorICAgICAgICAgICAgICAgIHNvdXJjZSAoaWYgbmVlZGVkKSwgd2hpY2ggc3BlY2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8KKyAgICAgICAgICAgICAgICBhcHBseSwgaG93IHRvIGNvbXBpbGUgdGhlIHNvdXJjZSBmaWxlcywgYW5kIGhvdyB0byBwYWNrYWdlIHRoZQorICAgICAgICAgICAgICAgIGNvbXBpbGVkIG91dHB1dC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHRlcm0gInBhY2thZ2UiIGlzIHNvbWV0aW1lcyB1c2VkIHRvIHJlZmVyIHRvIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgc2luY2UgdGhlIHdvcmQgInBhY2thZ2UiIGlzIHVzZWQgZm9yIHRoZSBwYWNrYWdlZAorICAgICAgICAgICAgICAgIG91dHB1dCBmcm9tIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIChpLmUuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5pcGs8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+LmRlYjwvZmlsZW5hbWU+IGZpbGVzKSwKKyAgICAgICAgICAgICAgICB0aGlzIGRvY3VtZW50IGF2b2lkcyB1c2luZyB0aGUgdGVybSAicGFja2FnZSIgd2hlbiByZWZlcnJpbmcKKyAgICAgICAgICAgICAgICB0byByZWNpcGVzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J292ZXJ2aWV3LWNvbXBvbmVudHMtY2xhc3Nlcyc+CisgICAgICAgICAgICA8dGl0bGU+Q2xhc3NlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIENsYXNzIGZpbGVzICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPikgY29udGFpbiBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIHRoYXQgaXMgdXNlZnVsIHRvIHNoYXJlIGJldHdlZW4gcmVjaXBlcyBmaWxlcy4KKyAgICAgICAgICAgICAgICBBbiBleGFtcGxlIGlzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWF1dG90b29scyc+PGZpbGVuYW1lPmF1dG90b29sczwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBjbGFzcywgd2hpY2ggY29udGFpbnMgY29tbW9uIHNldHRpbmdzIGZvciBhbnkgYXBwbGljYXRpb24gdGhhdAorICAgICAgICAgICAgICAgIEF1dG90b29scyB1c2VzLgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcyc+Q2xhc3NlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBwcm92aWRlcworICAgICAgICAgICAgICAgIGRldGFpbHMgYWJvdXQgY2xhc3NlcyBhbmQgaG93IHRvIHVzZSB0aGVtLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J292ZXJ2aWV3LWNvbXBvbmVudHMtY29uZmlndXJhdGlvbnMnPgorICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyYXRpb25zPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgKDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+KSBkZWZpbmUKKyAgICAgICAgICAgICAgICB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgZ292ZXJuIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGZhbGwgaW50byBzZXZlcmFsIGFyZWFzIHRoYXQgZGVmaW5lIG1hY2hpbmUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgY29tcGlsZXIgdHVuaW5nIG9wdGlvbnMsIGdlbmVyYWwgY29tbW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywKKyAgICAgICAgICAgICAgICBhbmQgdXNlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4sIHdoaWNoIGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nb3ZlcnZpZXctbGF5ZXJzJz4KKyAgICAgICAgPHRpdGxlPkxheWVyczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBMYXllcnMgYXJlIHJlcG9zaXRvcmllcyB0aGF0IGNvbnRhaW4gcmVsYXRlZCBtZXRhZGF0YSAoaS5lLgorICAgICAgICAgICAgc2V0cyBvZiBpbnN0cnVjdGlvbnMpIHRoYXQgdGVsbCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBob3cKKyAgICAgICAgICAgIHRvIGJ1aWxkIGEgdGFyZ2V0LgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCdzCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd0aGUteW9jdG8tcHJvamVjdC1sYXllci1tb2RlbCc+bGF5ZXIgbW9kZWw8L2xpbms+CisgICAgICAgICAgICBmYWNpbGl0YXRlcyBjb2xsYWJvcmF0aW9uLCBzaGFyaW5nLCBjdXN0b21pemF0aW9uLCBhbmQgcmV1c2UKKyAgICAgICAgICAgIHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIExheWVycyBsb2dpY2FsbHkgc2VwYXJhdGUgaW5mb3JtYXRpb24gZm9yIHlvdXIgcHJvamVjdC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSBhIGxheWVyIHRvIGhvbGQgYWxsIHRoZSBjb25maWd1cmF0aW9ucworICAgICAgICAgICAgZm9yIGEgcGFydGljdWxhciBwaWVjZSBvZiBoYXJkd2FyZS4KKyAgICAgICAgICAgIElzb2xhdGluZyBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhbGxvd3MgeW91IHRvIHNoYXJlCisgICAgICAgICAgICBvdGhlciBtZXRhZGF0YSBieSB1c2luZyBhIGRpZmZlcmVudCBsYXllciB3aGVyZSB0aGF0IG1ldGFkYXRhCisgICAgICAgICAgICBtaWdodCBiZSBjb21tb24gYWNyb3NzIHNldmVyYWwgcGllY2VzIG9mIGhhcmR3YXJlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBNYW55IGxheWVycyBleGlzdCB0aGF0IHdvcmsgaW4gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIGVudmlyb25tZW50LgorICAgICAgICAgICAgVGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2NhZmZlbGxpLXN0YWdpbmcueW9jdG9wcm9qZWN0Lm9yZy9zb2Z0d2FyZS1vdmVydmlldy9sYXllcnMvJz5Zb2N0byBQcm9qZWN0IEN1cmF0ZWQgTGF5ZXIgSW5kZXg8L3VsaW5rPgorICAgICAgICAgICAgYW5kCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvbGF5ZXJpbmRleC9icmFuY2gvbWFzdGVyL2xheWVycy8nPk9wZW5FbWJlZGRlZCBMYXllciBJbmRleDwvdWxpbms+CisgICAgICAgICAgICBib3RoIGNvbnRhaW4gbGF5ZXJzIGZyb20gd2hpY2ggeW91IGNhbiB1c2Ugb3IgbGV2ZXJhZ2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJ5IGNvbnZlbnRpb24sIGxheWVycyBpbiB0aGUgWW9jdG8gUHJvamVjdCBmb2xsb3cgYSBzcGVjaWZpYyBmb3JtLgorICAgICAgICAgICAgQ29uZm9ybWluZyB0byBhIGtub3duIHN0cnVjdHVyZSBhbGxvd3MgQml0QmFrZSB0byBtYWtlIGFzc3VtcHRpb25zCisgICAgICAgICAgICBkdXJpbmcgYnVpbGRzIG9uIHdoZXJlIHRvIGZpbmQgdHlwZXMgb2YgbWV0YWRhdGEuCisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgcHJvY2VkdXJlcyBhbmQgbGVhcm4gYWJvdXQgdG9vbHMgKGkuZS4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+KSBmb3IgY3JlYXRpbmcgbGF5ZXJzIHN1aXRhYmxlCisgICAgICAgICAgICBmb3IgdGhlIFlvY3RvIFByb2plY3QgaW4gdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9Im9wZW5lbWJlZGRlZC1idWlsZC1zeXN0ZW0tYnVpbGQtY29uY2VwdHMiPgorICAgICAgICA8dGl0bGU+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbSBDb25jZXB0czwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gdGFrZXMgYSBtb3JlIGRldGFpbGVkIGxvb2sgaW5zaWRlIHRoZSBidWlsZAorICAgICAgICAgICAgcHJvY2VzcyB1c2VkIGJ5IHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPiwKKyAgICAgICAgICAgIHdoaWNoIGlzIHRoZSBidWlsZCBzeXN0ZW0gc3BlY2lmaWMgdG8gdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICBBdCB0aGUgaGVhcnQgb2YgdGhlIGJ1aWxkIHN5c3RlbSBpcyBCaXRCYWtlLCB0aGUgdGFzayBleGVjdXRvci4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBkaWFncmFtIHJlcHJlc2VudHMgdGhlIGhpZ2gtbGV2ZWwgd29ya2Zsb3cgb2YgYQorICAgICAgICAgICAgYnVpbGQuCisgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBleHBhbmRzIG9uIHRoZSBmdW5kYW1lbnRhbCBpbnB1dCwKKyAgICAgICAgICAgIG91dHB1dCwgcHJvY2VzcywgYW5kIG1ldGFkYXRhIGxvZ2ljYWwgYmxvY2tzIHRoYXQgbWFrZSB1cCB0aGUKKyAgICAgICAgICAgIHdvcmtmbG93LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmEgaWQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz4KKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9ZUC1mbG93LWRpYWdyYW0ucG5nIiBmb3JtYXQ9IlBORyIgYWxpZ249J2NlbnRlcicgd2lkdGg9IjhpbiIvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBnZW5lcmFsLCB0aGUgYnVpbGQncyB3b3JrZmxvdyBjb25zaXN0cyBvZiBzZXZlcmFsIGZ1bmN0aW9uYWwKKyAgICAgICAgICAgIGFyZWFzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2VyIENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEgeW91IGNhbiB1c2UgdG8gY29udHJvbCB0aGUgYnVpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWV0YWRhdGEgTGF5ZXJzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFZhcmlvdXMgbGF5ZXJzIHRoYXQgcHJvdmlkZSBzb2Z0d2FyZSwgbWFjaGluZSwgYW5kCisgICAgICAgICAgICAgICAgICAgIGRpc3RybyBtZXRhZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U291cmNlIEZpbGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVwc3RyZWFtIHJlbGVhc2VzLCBsb2NhbCBwcm9qZWN0cywgYW5kIFNDTXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBQcm9jZXNzZXMgdW5kZXIgdGhlIGNvbnRyb2wgb2YKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgYmxvY2sgZXhwYW5kcyBvbiBob3cgQml0QmFrZSBmZXRjaGVzIHNvdXJjZSwgYXBwbGllcworICAgICAgICAgICAgICAgICAgICBwYXRjaGVzLCBjb21wbGV0ZXMgY29tcGlsYXRpb24sIGFuYWx5emVzIG91dHB1dCBmb3IgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uLCBjcmVhdGVzIGFuZCB0ZXN0cyBwYWNrYWdlcywgZ2VuZXJhdGVzIGltYWdlcywKKyAgICAgICAgICAgICAgICAgICAgYW5kIGdlbmVyYXRlcyBjcm9zcy1kZXZlbG9wbWVudCB0b29scy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGFja2FnZSBGZWVkczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcmllcyBjb250YWluaW5nIG91dHB1dCBwYWNrYWdlcyAoUlBNLCBERUIgb3IgSVBLKSwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIHN1YnNlcXVlbnRseSB1c2VkIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2Ugb3IgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspLCBwcm9kdWNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBmZWVkcyBjYW4gYWxzbyBiZSBjb3BpZWQgYW5kIHNoYXJlZCB1c2luZyBhIHdlYgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgb3Igb3RoZXIgbWVhbnMgdG8gZmFjaWxpdGF0ZSBleHRlbmRpbmcgb3IgdXBkYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgaW1hZ2VzIG9uIGRldmljZXMgYXQgcnVudGltZSBpZiBydW50aW1lIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudCBpcyBlbmFibGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbWFnZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW1hZ2VzIHByb2R1Y2VkIGJ5IHRoZSB3b3JrZmxvdy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgU0RLOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyb3NzLWRldmVsb3BtZW50IHRvb2xzIHRoYXQgYXJlIHByb2R1Y2VkIGFsb25nIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgYW4gaW1hZ2Ugb3Igc2VwYXJhdGVseSB3aXRoIEJpdEJha2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0idXNlci1jb25maWd1cmF0aW9uIj4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2VyIENvbmZpZ3VyYXRpb248L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBVc2VyIGNvbmZpZ3VyYXRpb24gaGVscHMgZGVmaW5lIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICBUaHJvdWdoIHVzZXIgY29uZmlndXJhdGlvbiwgeW91IGNhbiB0ZWxsIEJpdEJha2UgdGhlCisgICAgICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmb3Igd2hpY2ggeW91IGFyZSBidWlsZGluZyB0aGUgaW1hZ2UsCisgICAgICAgICAgICAgICAgd2hlcmUgdG8gc3RvcmUgZG93bmxvYWRlZCBzb3VyY2UsIGFuZCBvdGhlciBidWlsZCBwcm9wZXJ0aWVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBzaG93cyBhbiBleHBhbmRlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAiVXNlciBDb25maWd1cmF0aW9uIiBib3ggb2YgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC13b3JrZmxvdy1maWd1cmUnPmdlbmVyYWwgd29ya2Zsb3cgZmlndXJlPC9saW5rPjoKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI4aW4iIGRlcHRoPSI0LjVpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSBuZWVkcyBzb21lIGJhc2ljIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gb3JkZXIgdG8KKyAgICAgICAgICAgICAgICBjb21wbGV0ZSBhIGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGFyZSA8ZmlsZW5hbWU+Ki5jb25mPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlIG1pbmltYWxseSBuZWNlc3Nhcnkgb25lcyByZXNpZGUgYXMgZXhhbXBsZSBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQvY29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIHRoaXMgc2VjdGlvbiByZWZlcnMgdG8gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYXMKKyAgICAgICAgICAgICAgICB0aGUgIlBva3kgRGlyZWN0b3J5LiIKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB5b3UgY2xvbmUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcG9reSc+UG9reTwvdWxpbms+CisgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgb3IgeW91IGRvd25sb2FkIGFuZCB1bnBhY2sgYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgcmVsZWFzZSwgeW91IGNhbiBzZXQgdXAgdGhlIFNvdXJjZSBEaXJlY3RvcnkgdG8gYmUgbmFtZWQKKyAgICAgICAgICAgICAgICBhbnl0aGluZyB5b3Ugd2FudC4KKyAgICAgICAgICAgICAgICBGb3IgdGhpcyBkaXNjdXNzaW9uLCB0aGUgY2xvbmVkIHJlcG9zaXRvcnkgdXNlcyB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgIG5hbWUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFBva3kgcmVwb3NpdG9yeSBpcyBwcmltYXJpbHkgYW4gYWdncmVnYXRpb24gb2YgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBub3QgYSBjYW5vbmljYWwgdXBzdHJlYW0gc291cmNlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiBsYXllciBpbnNpZGUgUG9reSBjb250YWlucworICAgICAgICAgICAgICAgIGEgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgdGhhdCBoYXMgZXhhbXBsZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlc2UgZXhhbXBsZSBmaWxlcyBhcmUgdXNlZCBhcyBhIGJhc2lzIGZvciBjcmVhdGluZyBhY3R1YWwKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIHdoZW4geW91IHNvdXJjZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2NyaXB0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb3VyY2luZyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2NyaXB0IGNyZWF0ZXMgYQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICBpZiBvbmUgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlIEJ1aWxkIERpcmVjdG9yeSBmb3IgYWxsIGl0cyB3b3JrIGR1cmluZworICAgICAgICAgICAgICAgIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICBUaGUgQnVpbGQgRGlyZWN0b3J5IGhhcyBhIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgdGhhdCBjb250YWlucyBkZWZhdWx0IHZlcnNpb25zIG9mIHlvdXIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgICAgICAgICAgICAgICBUaGVzZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGNyZWF0ZWQgb25seSBpZiB2ZXJzaW9ucworICAgICAgICAgICAgICAgIGRvIG5vdCBhbHJlYWR5IGV4aXN0IGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgYXQgdGhlIHRpbWUgeW91CisgICAgICAgICAgICAgICAgc291cmNlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIFBva3kgcmVwb3NpdG9yeSBpcyBmdW5kYW1lbnRhbGx5IGFuIGFnZ3JlZ2F0aW9uIG9mCisgICAgICAgICAgICAgICAgZXhpc3RpbmcgcmVwb3NpdG9yaWVzLCBzb21lIHVzZXJzIG1pZ2h0IGJlIGZhbWlsaWFyIHdpdGgKKyAgICAgICAgICAgICAgICBydW5uaW5nIHRoZSA8ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgICAgICBpbiB0aGUgY29udGV4dCBvZiBzZXBhcmF0ZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I29lLWNvcmUnPk9wZW5FbWJlZGRlZC1Db3JlPC91bGluaz4KKyAgICAgICAgICAgICAgICBhbmQgQml0QmFrZSByZXBvc2l0b3JpZXMgcmF0aGVyIHRoYW4gYSBzaW5nbGUgUG9reSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFRoaXMgZGlzY3Vzc2lvbiBhc3N1bWVzIHRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgZnJvbQorICAgICAgICAgICAgICAgIHdpdGhpbiBhIGNsb25lZCBvciB1bnBhY2tlZCB2ZXJzaW9uIG9mIFBva3kuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB3aGVyZSB0aGUgc2NyaXB0IGlzIHNvdXJjZWQsIGRpZmZlcmVudAorICAgICAgICAgICAgICAgIHN1Yi1zY3JpcHRzIGFyZSBjYWxsZWQgdG8gc2V0IHVwIHRoZSBCdWlsZCBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAoWW9jdG8gb3IgT3BlbkVtYmVkZGVkKS4KKyAgICAgICAgICAgICAgICBTcGVjaWZpY2FsbHksIHRoZSBzY3JpcHQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IGluc2lkZSB0aGUKKyAgICAgICAgICAgICAgICBwb2t5IGRpcmVjdG9yeSBzZXRzIHVwIHRoZSBCdWlsZCBEaXJlY3RvcnkgYW5kIHNlZWRzIHRoZQorICAgICAgICAgICAgICAgIGRpcmVjdG9yeSAoaWYgbmVjZXNzYXJ5KSB3aXRoIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICAgICBmb3IgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IHNjcmlwdAorICAgICAgICAgICAgICAgICAgICB1c2VzIHRoZSA8ZmlsZW5hbWU+JFRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvCisgICAgICAgICAgICAgICAgICAgIGRldGVybWluZSB3aGljaCBzYW1wbGUgY29uZmlndXJhdGlvbiBmaWxlcyB0byBsb2NhdGUuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHByb3ZpZGVzIG1hbnkKKyAgICAgICAgICAgICAgICBiYXNpYyB2YXJpYWJsZXMgdGhhdCBkZWZpbmUgYSBidWlsZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGEgbGlzdCBvZiBhIGZldy4KKyAgICAgICAgICAgICAgICBUbyBzZWUgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgaW4gYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBjcmVhdGVkIGJ5IHRoZSBidWlsZAorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNjcmlwdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZSc+PGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gbGF5ZXI6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRhcmdldCBNYWNoaW5lIFNlbGVjdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNoYXJlZCBTdGF0ZSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgT3V0cHV0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EaXN0cmlidXRpb24gUG9saWN5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYWNrYWdpbmcgRm9ybWF0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TREsgVGFyZ2V0IEFyY2hpdGVjdHVyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeHRyYSBJbWFnZSBQYWNrYWdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRSQV9JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbnMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBjYW4gYWxzbyBiZSBzZXQKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9hdXRvLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSB0ZWxscyBCaXRCYWtlIHdoYXQKKyAgICAgICAgICAgICAgICBsYXllcnMgeW91IHdhbnQgY29uc2lkZXJlZCBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBsYXllcnMgbGlzdGVkIGluIHRoaXMgZmlsZSBpbmNsdWRlIGxheWVycworICAgICAgICAgICAgICAgIG1pbmltYWxseSBuZWVkZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3UgbXVzdCBtYW51YWxseSBhZGQgYW55IGN1c3RvbSBsYXllcnMgeW91IGhhdmUKKyAgICAgICAgICAgICAgICBjcmVhdGVkLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIHdvcmtpbmcgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2VuYWJsaW5nLXlvdXItbGF5ZXInPkVuYWJsaW5nIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZpbGVzIDxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4gYXJlIG5vdCBjcmVhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IGluaXRpYWxpemF0aW9uIHNjcmlwdC4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0aGUgPGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHlvdQorICAgICAgICAgICAgICAgIG5lZWQgdG8gY3JlYXRlIHRoYXQgeW91cnNlbGYuCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGlzIHR5cGljYWxseSBjcmVhdGVkIGJ5CisgICAgICAgICAgICAgICAgYW4gYXV0b2J1aWxkZXI6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgdG8gY29uZmlndXJlIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYWQgc2V2ZXJhbCBidWlsZCBlbnZpcm9ubWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGV5IHNoYXJlZCBzb21lIGNvbW1vbiBmZWF0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2V0IHRoZXNlIGRlZmF1bHQgYnVpbGQgcHJvcGVydGllcyBoZXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgaXMgcGVyaGFwcyB0aGUgcGFja2FnaW5nIGZvcm1hdCB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmUgdXNlZnVsIHNjZW5hcmlvIGZvciB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGUgaXMgdG8gZXh0ZW5kCisgICAgICAgICAgICAgICAgICAgICAgICB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJQQVRIJz48ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgcGF0aCB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZW4sIHdoZW4gQml0QmFrZSBsb29rcyBmb3IgTWV0YWRhdGEgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiwgaXQgZmluZHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGFuZCBhcHBsaWVzCisgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGNvbW1vbiBjb25maWd1cmF0aW9ucyBmb3VuZCBpbiB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb25zIGluIGEgcGFydGljdWxhciBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBhbHRlciB0aGUgc2ltaWxhciBjb25maWd1cmF0aW9ucyB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYnVpbGQgZGlyZWN0b3J5J3MKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIGlzIHVzdWFsbHkgY3JlYXRlZCBhbmQgd3JpdHRlbiB0byBieQorICAgICAgICAgICAgICAgICAgICAgICAgYW4gYXV0b2J1aWxkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2V0dGluZ3MgcHV0IGludG8gdGhlIGZpbGUgYXJlIHR5cGljYWxseSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUgYXMgeW91IHdvdWxkIGZpbmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGVkaXQgYWxsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZnVydGhlciBkZWZpbmUKKyAgICAgICAgICAgICAgICBhbnkgcGFydGljdWxhciBidWlsZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBUaGlzIHByb2Nlc3MgaXMgcmVwcmVzZW50ZWQgYnkgdGhlICJVc2VyIENvbmZpZ3VyYXRpb24gRWRpdHMiCisgICAgICAgICAgICAgICAgYm94IGluIHRoZSBmaWd1cmUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdoZW4geW91IGxhdW5jaCB5b3VyIGJ1aWxkIHdpdGggdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kLCBCaXRCYWtlIHNvcnRzIG91dCB0aGUgY29uZmlndXJhdGlvbnMgdG8gdWx0aW1hdGVseQorICAgICAgICAgICAgICAgIGRlZmluZSB5b3VyIGJ1aWxkIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPgorICAgICAgICAgICAgICAgIHJlYWRzIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGluIGEgc3BlY2lmaWMgb3JkZXI6CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgQW5kLCB0aGUgYnVpbGQgc3lzdGVtIGFwcGxpZXMgdGhlIG5vcm1hbCBhc3NpZ25tZW50IHN0YXRlbWVudAorICAgICAgICAgICAgICAgIHJ1bGVzIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhJz5TeW50YXggYW5kIE9wZXJhdG9yczwvdWxpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIgb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgZmlsZXMgYXJlIHBhcnNlZCBpbiBhIHNwZWNpZmljIG9yZGVyLCB2YXJpYWJsZQorICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRzIGZvciB0aGUgc2FtZSB2YXJpYWJsZSBjb3VsZCBiZSBhZmZlY3RlZC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGFuZAorICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IHNldAorICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT52YXJpYWJsZTE8L3JlcGxhY2VhYmxlPiB0byBkaWZmZXJlbnQgdmFsdWVzLAorICAgICAgICAgICAgICAgIGJlY2F1c2UgdGhlIGJ1aWxkIHN5c3RlbSBwYXJzZXMgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGFmdGVyIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+dmFyaWFibGUxPC9yZXBsYWNlYWJsZT4gaXMgYXNzaWduZWQgdGhlIHZhbHVlIGZyb20KKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9Im1ldGFkYXRhLW1hY2hpbmUtY29uZmlndXJhdGlvbi1hbmQtcG9saWN5LWNvbmZpZ3VyYXRpb24iPgorICAgICAgICAgICAgPHRpdGxlPk1ldGFkYXRhLCBNYWNoaW5lIENvbmZpZ3VyYXRpb24sIGFuZCBQb2xpY3kgQ29uZmlndXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBzZWN0aW9uIGRlc2NyaWJlZCB0aGUgdXNlciBjb25maWd1cmF0aW9ucyB0aGF0CisgICAgICAgICAgICAgICAgZGVmaW5lIEJpdEJha2UncyBnbG9iYWwgYmVoYXZpb3IuCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHRha2VzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGxheWVycyB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgdXNlcyB0byBmdXJ0aGVyIGNvbnRyb2wgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoZXNlIGxheWVycyBwcm92aWRlIE1ldGFkYXRhIGZvciB0aGUgc29mdHdhcmUsIG1hY2hpbmUsIGFuZAorICAgICAgICAgICAgICAgIHBvbGljaWVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCB0aHJlZSB0eXBlcyBvZiBsYXllciBpbnB1dCBleGlzdHMuCisgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlbSBiZWxvdyB0aGUgIlVzZXIgQ29uZmlndXJhdGlvbiIgYm94IGluIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz5nZW5lcmFsIHdvcmtmbG93IGZpZ3VyZTwvbGluaz46CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ldGFkYXRhICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gKyBQYXRjaGVzKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUgbGF5ZXJzIGNvbnRhaW5pbmcgdXNlci1zdXBwbGllZCByZWNpcGUgZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzLCBhbmQgYXBwZW5kIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgb2YgYSBzb2Z0d2FyZSBsYXllciBtaWdodCBiZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9tZXRhLXF0NS9tZXRhLXF0NSc+PGZpbGVuYW1lPm1ldGEtcXQ1PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2JyYW5jaC9tYXN0ZXIvbGF5ZXJzLyc+T3BlbkVtYmVkZGVkIExheWVyIEluZGV4PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxheWVyIGlzIGZvciB2ZXJzaW9uIDUuMCBvZiB0aGUgcG9wdWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnF0LmlvL0Fib3V0X1F0Jz5RdDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1wbGF0Zm9ybSBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBmcmFtZXdvcmsgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNrdG9wLCBlbWJlZGRlZCBhbmQgbW9iaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWNoaW5lIEJTUCBDb25maWd1cmF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgbGF5ZXJzIChpLmUuICJCU1AgTGF5ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZm9sbG93aW5nIGZpZ3VyZSkgcHJvdmlkaW5nIG1hY2hpbmUtc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGluZm9ybWF0aW9uIGlzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgZ29vZCBleGFtcGxlIG9mIGEgQlNQIGxheWVyIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdncy1yZWZlcmVuY2UtZGlzdHJpYnV0aW9uLXBva3knPlBva3kgUmVmZXJlbmNlIERpc3RyaWJ1dGlvbjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEteW9jdG8tYnNwJz48ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9saWN5IENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGlvbiBMYXllcnMgKGkuZS4gIkRpc3RybyBMYXllciIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZmlndXJlKSBwcm92aWRpbmcgdG9wLWxldmVsIG9yIGdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljaWVzIGZvciB0aGUgaW1hZ2VzIG9yIFNES3MgYmVpbmcgYnVpbHQgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSBQb2t5IFJlZmVyZW5jZSBEaXN0cmlidXRpb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cm8gbGF5ZXIgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS1wb2t5Jz48ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIGRpc3RybyBsYXllciBpcyBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9kaXN0cm88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgZGlzdHJvIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mJz48ZmlsZW5hbWU+cG9reS5jb25mPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjb250YWluIG1hbnkgcG9saWN5IGNvbmZpZ3VyYXRpb25zIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFBva3kgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGFuIGV4cGFuZGVkIHJlcHJlc2VudGF0aW9uIG9mCisgICAgICAgICAgICAgICAgdGhlc2UgdGhyZWUgbGF5ZXJzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC13b3JrZmxvdy1maWd1cmUnPmdlbmVyYWwgd29ya2Zsb3cgZmlndXJlPC9saW5rPjoKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2xheWVyLWlucHV0LnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjhpbiIgZGVwdGg9IjhpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgYWxsIGxheWVycyBoYXZlIGEgc2ltaWxhciBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgVGhleSBhbGwgY29udGFpbiBhIGxpY2Vuc2luZyBmaWxlCisgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPkNPUFlJTkcuTUlUPC9maWxlbmFtZT4pIGlmIHRoZSBsYXllciBpcyB0byBiZQorICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVkLCBhIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGFzIGdvb2QKKyAgICAgICAgICAgICAgICBwcmFjdGljZSBhbmQgZXNwZWNpYWxseSBpZiB0aGUgbGF5ZXIgaXMgdG8gYmUgZGlzdHJpYnV0ZWQsIGEKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSwgYW5kIHJlY2lwZSBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGxlYXJuIGFib3V0IHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBmb3IgbGF5ZXJzIHVzZWQgd2l0aAorICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy15b3VyLW93bi1sYXllcic+Q3JlYXRpbmcgWW91ciBPd24gTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgYSBnZW5lcmFsIGRpc2N1c3Npb24gb24gbGF5ZXJzIGFuZCB0aGUgbWFueSBsYXllcnMgZnJvbQorICAgICAgICAgICAgICAgIHdoaWNoIHlvdSBjYW4gZHJhdywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvdmVydmlldy1sYXllcnMnPkxheWVyczwvbGluaz4iIGFuZAorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd0aGUteW9jdG8tcHJvamVjdC1sYXllci1tb2RlbCc+VGhlIFlvY3RvIFByb2plY3QgTGF5ZXIgTW9kZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb25zIGJvdGggZWFybGllciBpbiB0aGlzIG1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IGV4cGxvcmVkIHRoZSBwcmV2aW91cyBsaW5rcywgeW91IGRpc2NvdmVyZWQgc29tZQorICAgICAgICAgICAgICAgIGFyZWFzIHdoZXJlIG1hbnkgbGF5ZXJzIHRoYXQgd29yayB3aXRoIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgZXhpc3QuCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyI+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgYWxzbyBzaG93cyBsYXllcnMgY2F0ZWdvcml6ZWQgdW5kZXIgIllvY3RvIE1ldGFkYXRhIExheWVycy4iCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIExheWVycyBleGlzdCBpbiB0aGUgWW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBPcGVuRW1iZWRkZWQgTGF5ZXIgSW5kZXguCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGxheWVycyBhcmUgZWl0aGVyIGRlcHJlY2F0ZWQgb3IgZXhwZXJpbWVudGFsCisgICAgICAgICAgICAgICAgICAgIGluIG5hdHVyZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UgdXNlcyB0aGUgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgcGFydCBvZiB0aGUgdXNlciBjb25maWd1cmF0aW9uLCB0byBmaW5kIHdoYXQgbGF5ZXJzIGl0CisgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHVzaW5nIGFzIHBhcnQgb2YgdGhlIGJ1aWxkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0iZGlzdHJvLWxheWVyIj4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RGlzdHJvIExheWVyPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGlzdHJpYnV0aW9uIGxheWVyIHByb3ZpZGVzIHBvbGljeSBjb25maWd1cmF0aW9ucyBmb3IKKyAgICAgICAgICAgICAgICAgICAgeW91ciBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgIEJlc3QgcHJhY3RpY2VzIGRpY3RhdGUgdGhhdCB5b3UgaXNvbGF0ZSB0aGVzZSB0eXBlcyBvZgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBpbnRvIHRoZWlyIG93biBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MgeW91IHByb3ZpZGUgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvZGlzdHJvLzxyZXBsYWNlYWJsZT5kaXN0cm88L3JlcGxhY2VhYmxlPi5jb25mPC9maWxlbmFtZT4gb3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgc2ltaWxhciBzZXR0aW5ncyB0aGF0IEJpdEJha2UgZmluZHMgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgcHJvdmlkZXMgc29tZSBleHBsYW5hdGlvbiBhbmQgcmVmZXJlbmNlcworICAgICAgICAgICAgICAgICAgICBmb3Igd2hhdCB5b3UgdHlwaWNhbGx5IGZpbmQgaW4gdGhlIGRpc3RyaWJ1dGlvbiBsYXllcjoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Y2xhc3Nlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzIGZpbGVzICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPikgaG9sZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbiBmdW5jdGlvbmFsaXR5IHRoYXQgY2FuIGJlIHNoYXJlZCBhbW9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdXIgcmVjaXBlcyBpbmhlcml0IGEgY2xhc3MsIHRoZXkgdGFrZSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBhbmQgZnVuY3Rpb25zIGZvciB0aGF0IGNsYXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IGNsYXNzIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcyc+Q2xhc3NlczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgb2YgdGhlIFlvY3RvIFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPmNvbmY6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZWEgaG9sZHMgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgKDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Y29uZi9kaXN0cm8vPHJlcGxhY2VhYmxlPmRpc3RybzwvcmVwbGFjZWFibGU+LmNvbmY8L2ZpbGVuYW1lPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBkaXN0cmlidXRpb24td2lkZSBpbmNsdWRlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5yZWNpcGVzLSo6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIGFuZCBhcHBlbmQgZmlsZXMgdGhhdCBhZmZlY3QgY29tbW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBhY3Jvc3MgdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZWEgY291bGQgaW5jbHVkZSByZWNpcGVzIGFuZCBhcHBlbmQgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhZGQgZGlzdHJpYnV0aW9uLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gc2NyaXB0cywgY3VzdG9tIGltYWdlIHJlY2lwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGVzIG9mIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGFyZSA8ZmlsZW5hbWU+cmVjaXBlcy1jb3JlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnJlY2lwZXMtZXh0cmE8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaWVyYXJjaHkgYW5kIGNvbnRlbnRzIHdpdGhpbiBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtKjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBjYW4gdmFyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsbHksIHRoZXNlIGRpcmVjdG9yaWVzIGNvbnRhaW4gcmVjaXBlIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJiPC9maWxlbmFtZT4pLCByZWNpcGUgYXBwZW5kIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJiYXBwZW5kPC9maWxlbmFtZT4pLCBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIGRpc3Ryby1zcGVjaWZpYyBmb3IgY29uZmlndXJhdGlvbiBmaWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9ImJzcC1sYXllciI+CisgICAgICAgICAgICAgICAgPHRpdGxlPkJTUCBMYXllcjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEJTUCBMYXllciBwcm92aWRlcyBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHNwZWNpZmljIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICBFdmVyeXRoaW5nIGluIHRoaXMgbGF5ZXIgaXMgc3BlY2lmaWMgdG8gdGhlIG1hY2hpbmUgZm9yCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIHlvdSBhcmUgYnVpbGRpbmcgdGhlIGltYWdlIG9yIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIEEgY29tbW9uIHN0cnVjdHVyZSBvciBmb3JtIGlzIGRlZmluZWQgZm9yIEJTUCBsYXllcnMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCB0aGlzIHN0cnVjdHVyZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgZm9yIGEgQlNQIGxheWVyIHRvIGJlIGNvbnNpZGVyZWQgY29tcGxpYW50CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LCBpdCBtdXN0IG1lZXQgc29tZSBzdHJ1Y3R1cmFsCisgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEJTUCBMYXllcidzIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRoZSBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4uY29uZjwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBhbmQsIG9mIGNvdXJzZSwgdGhlIGxheWVyCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoZSBsYXllciBpcyBkZWRpY2F0ZWQgdG8gc3BlY2lmaWMgcmVjaXBlcworICAgICAgICAgICAgICAgICAgICBieSBmdW5jdGlvbjogPGZpbGVuYW1lPnJlY2lwZXMtYnNwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWNvcmU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtZ3JhcGhpY3M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGEgY2FuIGV4aXN0IGZvciBtdWx0aXBsZSBmb3JtZmFjdG9ycywgZ3JhcGhpY3MKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBzeXN0ZW1zLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgdGhlIGZpZ3VyZSBzaG93cyBzZXZlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMsIG5vdCBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZXNlIGRpcmVjdG9yaWVzIGFwcGVhciBpbiBhbGwgQlNQIGxheWVycy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNvZnR3YXJlLWxheWVyIj4KKyAgICAgICAgICAgICAgICA8dGl0bGU+U29mdHdhcmUgTGF5ZXI8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzb2Z0d2FyZSBsYXllciBwcm92aWRlcyB0aGUgTWV0YWRhdGEgZm9yIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgcGFja2FnZXMgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGxheWVyIGRvZXMgbm90IGluY2x1ZGUgTWV0YWRhdGEgdGhhdCBpcyBzcGVjaWZpYyB0bworICAgICAgICAgICAgICAgICAgICB0aGUgZGlzdHJpYnV0aW9uIG9yIHRoZSBtYWNoaW5lLCB3aGljaCBhcmUgZm91bmQgaW4gdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgcmVzcGVjdGl2ZSBsYXllcnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgbGF5ZXIgY29udGFpbnMgYW55IHJlY2lwZXMsIGFwcGVuZCBmaWxlcywgYW5kCisgICAgICAgICAgICAgICAgICAgIHBhdGNoZXMsIHRoYXQgeW91ciBwcm9qZWN0IG5lZWRzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJzb3VyY2VzLWRldi1lbnZpcm9ubWVudCI+CisgICAgICAgICAgICA8dGl0bGU+U291cmNlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgYW4KKyAgICAgICAgICAgICAgICBpbWFnZSBvciBhbnkgdGFyZ2V0LCBpdCBtdXN0IGJlIGFibGUgdG8gYWNjZXNzIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXdvcmtmbG93LWZpZ3VyZSc+Z2VuZXJhbCB3b3JrZmxvdyBmaWd1cmU8L2xpbms+CisgICAgICAgICAgICAgICAgcmVwcmVzZW50cyBzb3VyY2UgZmlsZXMgdXNpbmcgdGhlICJVcHN0cmVhbSBQcm9qZWN0IFJlbGVhc2VzIiwKKyAgICAgICAgICAgICAgICAiTG9jYWwgUHJvamVjdHMiLCBhbmQgIlNDTXMgKG9wdGlvbmFsKSIgYm94ZXMuCisgICAgICAgICAgICAgICAgVGhlIGZpZ3VyZSByZXByZXNlbnRzIG1pcnJvcnMsIHdoaWNoIGFsc28gcGxheSBhIHJvbGUgaW4KKyAgICAgICAgICAgICAgICBsb2NhdGluZyBzb3VyY2UgZmlsZXMsIHdpdGggdGhlICJTb3VyY2UgTWF0ZXJpYWxzIiBib3guCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBtZXRob2QgYnkgd2hpY2ggc291cmNlIGZpbGVzIGFyZSB1bHRpbWF0ZWx5IG9yZ2FuaXplZCBpcworICAgICAgICAgICAgICAgIGEgZnVuY3Rpb24gb2YgdGhlIHByb2plY3QuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGZvciByZWxlYXNlZCBzb2Z0d2FyZSwgcHJvamVjdHMgdGVuZCB0byB1c2UKKyAgICAgICAgICAgICAgICB0YXJiYWxscyBvciBvdGhlciBhcmNoaXZlZCBmaWxlcyB0aGF0IGNhbiBjYXB0dXJlIHRoZQorICAgICAgICAgICAgICAgIHN0YXRlIG9mIGEgcmVsZWFzZSBndWFyYW50ZWVpbmcgdGhhdCBpdCBpcyBzdGF0aWNhbGx5CisgICAgICAgICAgICAgICAgcmVwcmVzZW50ZWQuCisgICAgICAgICAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIGZvciBhIHByb2plY3QgdGhhdCBpcyBtb3JlIGR5bmFtaWMgb3IKKyAgICAgICAgICAgICAgICBleHBlcmltZW50YWwgaW4gbmF0dXJlLCBhIHByb2plY3QgbWlnaHQga2VlcCBzb3VyY2UgZmlsZXMgaW4gYQorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgY29udHJvbGxlZCBieSBhIFNvdXJjZSBDb250cm9sIE1hbmFnZXIgKFNDTSkgc3VjaCBhcworICAgICAgICAgICAgICAgIEdpdC4KKyAgICAgICAgICAgICAgICBQdWxsaW5nIHNvdXJjZSBmcm9tIGEgcmVwb3NpdG9yeSBhbGxvd3MgeW91IHRvIGNvbnRyb2wKKyAgICAgICAgICAgICAgICB0aGUgcG9pbnQgaW4gdGhlIHJlcG9zaXRvcnkgKHRoZSByZXZpc2lvbikgZnJvbSB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICB3YW50IHRvIGJ1aWxkIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIEZpbmFsbHksIGEgY29tYmluYXRpb24gb2YgdGhlIHR3byBtaWdodCBleGlzdCwgd2hpY2ggd291bGQKKyAgICAgICAgICAgICAgICBnaXZlIHRoZSBjb25zdW1lciBhIGNob2ljZSB3aGVuIGRlY2lkaW5nIHdoZXJlIHRvIGdldAorICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byBzb3VyY2UgZmlsZXMgcmVnYXJkbGVzcyBvZiB0aGVpciBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICBFYWNoIHJlY2lwZSBtdXN0IGhhdmUgYSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgdGhhdCBwb2ludHMgdG8gdGhlIHNvdXJjZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW5vdGhlciBhcmVhIHRoYXQgcGxheXMgYSBzaWduaWZpY2FudCByb2xlIGluIHdoZXJlIHNvdXJjZQorICAgICAgICAgICAgICAgIGZpbGVzIGNvbWUgZnJvbSBpcyBwb2ludGVkIHRvIGJ5IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgVGhpcyBhcmVhIGlzIGEgY2FjaGUgdGhhdCBjYW4gaG9sZCBwcmV2aW91c2x5IGRvd25sb2FkZWQKKyAgICAgICAgICAgICAgICBzb3VyY2UuCisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGluc3RydWN0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgIHRhcmJhbGxzIGZyb20gR2l0IHJlcG9zaXRvcmllcywgd2hpY2ggaXMgbm90IHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgYmVoYXZpb3IsIGFuZCBzdG9yZSB0aGVtIGluIHRoZSA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTJz48ZmlsZW5hbWU+QkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBKdWRpY2lvdXMgdXNlIG9mIGEgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBjYW4KKyAgICAgICAgICAgICAgICBzYXZlIHRoZSBidWlsZCBzeXN0ZW0gYSB0cmlwIGFjcm9zcyB0aGUgSW50ZXJuZXQgd2hlbiBsb29raW5nCisgICAgICAgICAgICAgICAgZm9yIGZpbGVzLgorICAgICAgICAgICAgICAgIEEgZ29vZCBtZXRob2QgZm9yIHVzaW5nIGEgZG93bmxvYWQgZGlyZWN0b3J5IGlzIHRvIGhhdmUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gcG9pbnQgdG8gYW4gYXJlYSBvdXRzaWRlIG9mIHlvdXIKKyAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgRG9pbmcgc28gYWxsb3dzIHlvdSB0byBzYWZlbHkgZGVsZXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBpZiBuZWVkZWQgd2l0aG91dCBmZWFyIG9mIHJlbW92aW5nIGFueSBkb3dubG9hZGVkIHNvdXJjZSBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIGRlZXBlciBsb29rIGludG8gdGhlCisgICAgICAgICAgICAgICAgc291cmNlIGZpbGVzIGFuZCB0aGUgbWlycm9ycy4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGEgbW9yZSBkZXRhaWxlZCBsb29rIGF0IHRoZSBzb3VyY2UgZmlsZSBhcmVhIG9mIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz5nZW5lcmFsIHdvcmtmbG93IGZpZ3VyZTwvbGluaz46CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iNmluIiBhbGlnbj0iY2VudGVyIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndXBzdHJlYW0tcHJvamVjdC1yZWxlYXNlcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlVwc3RyZWFtIFByb2plY3QgUmVsZWFzZXM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVwc3RyZWFtIHByb2plY3QgcmVsZWFzZXMgZXhpc3QgYW55d2hlcmUgaW4gdGhlIGZvcm0gb2YgYW4KKyAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZWQgZmlsZSAoZS5nLiB0YXJiYWxsIG9yIHppcCBmaWxlKS4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgY29ycmVzcG9uZCB0byBpbmRpdmlkdWFsIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZmlndXJlIHVzZXMgc3BlY2lmaWMgcmVsZWFzZXMgZWFjaCBmb3IKKyAgICAgICAgICAgICAgICAgICAgQnVzeUJveCwgUXQsIGFuZCBEYnVzLgorICAgICAgICAgICAgICAgICAgICBBbiBhcmNoaXZlIGZpbGUgY2FuIGJlIGZvciBhbnkgcmVsZWFzZWQgcHJvZHVjdCB0aGF0IGNhbiBiZQorICAgICAgICAgICAgICAgICAgICBidWlsdCB1c2luZyBhIHJlY2lwZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdsb2NhbC1wcm9qZWN0cyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkxvY2FsIFByb2plY3RzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBMb2NhbCBwcm9qZWN0cyBhcmUgY3VzdG9tIGJpdHMgb2Ygc29mdHdhcmUgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGJpdHMgcmVzaWRlIHNvbWV3aGVyZSBsb2NhbCB0byBhIHByb2plY3QgLSBwZXJoYXBzCisgICAgICAgICAgICAgICAgICAgIGEgZGlyZWN0b3J5IGludG8gd2hpY2ggdGhlIHVzZXIgY2hlY2tzIGluIGl0ZW1zIChlLmcuCisgICAgICAgICAgICAgICAgICAgIGEgbG9jYWwgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBkZXZlbG9wbWVudCBzb3VyY2UgdHJlZQorICAgICAgICAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBncm91cCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBjYW5vbmljYWwgbWV0aG9kIHRocm91Z2ggd2hpY2ggdG8gaW5jbHVkZSBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIHByb2plY3QgaXMgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyB0byBpbmNsdWRlIHRoYXQgbG9jYWwgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgWW91IHVzZSBlaXRoZXIgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgYQorICAgICAgICAgICAgICAgICAgICByZWNpcGUncyBhcHBlbmQgZmlsZSB0byBvdmVycmlkZSBvciBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSB0byBwb2ludCB0byB0aGUgbG9jYWwgZGlyZWN0b3J5IG9uIHlvdXIgZGlzayB0byBwdWxsCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSB3aG9sZSBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzY21zJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+U291cmNlIENvbnRyb2wgTWFuYWdlcnMgKE9wdGlvbmFsKTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBwbGFjZSB0aGUgYnVpbGQgc3lzdGVtIGNhbiBnZXQgc291cmNlIGZpbGVzIGZyb20gaXMKKyAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCBhbiBTQ00gc3VjaCBhcyBHaXQgb3IgU3VidmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBhIHJlcG9zaXRvcnkgaXMgY2xvbmVkIG9yIGNoZWNrZWQgb3V0LgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaW5zaWRlIEJpdEJha2UgdXNlcworICAgICAgICAgICAgICAgICAgICB0aGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGhlIGFyZ3VtZW50J3MgcHJlZml4IHRvIGRldGVybWluZSB0aGUgY29ycmVjdAorICAgICAgICAgICAgICAgICAgICBmZXRjaGVyIG1vZHVsZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGhhdmUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGdlbmVyYXRlIHRhcmJhbGxzIGZvciBHaXQgcmVwb3NpdG9yaWVzIGFuZCBwbGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnPjxmaWxlbmFtZT5CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGZldGNoaW5nIGEgcmVwb3NpdG9yeSwgQml0QmFrZSB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBkZXRlcm1pbmUgdGhlIHNwZWNpZmljIHJldmlzaW9uIGZyb20gd2hpY2ggdG8KKyAgICAgICAgICAgICAgICAgICAgYnVpbGQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nc291cmNlLW1pcnJvcnMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Tb3VyY2UgTWlycm9yKHMpPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUd28ga2luZHMgb2YgbWlycm9ycyBleGlzdDogcHJlLW1pcnJvcnMgYW5kIHJlZ3VsYXIKKyAgICAgICAgICAgICAgICAgICAgbWlycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVNSVJST1JTJz48ZmlsZW5hbWU+UFJFTUlSUk9SUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NSVJST1JTJz48ZmlsZW5hbWU+TUlSUk9SUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIHBvaW50IHRvIHRoZXNlLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgY2hlY2tzIHByZS1taXJyb3JzIGJlZm9yZSBsb29raW5nIHVwc3RyZWFtIGZvciBhbnkKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBQcmUtbWlycm9ycyBhcmUgYXBwcm9wcmlhdGUgd2hlbiB5b3UgaGF2ZSBhIHNoYXJlZAorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgdGhhdCBpcyBub3QgYSBkaXJlY3RvcnkgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIEEgUHJlLW1pcnJvciB0eXBpY2FsbHkgcG9pbnRzIHRvIGEgc2hhcmVkIGRpcmVjdG9yeSB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIHRvIHlvdXIgb3JnYW5pemF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSZWd1bGFyIG1pcnJvcnMgY2FuIGJlIGFueSBzaXRlIGFjcm9zcyB0aGUgSW50ZXJuZXQKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIGxvY2F0aW9uIGZvciBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgY29kZSBzaG91bGQgdGhlIHByaW1hcnkgc2l0ZSBub3QgYmUgZnVuY3Rpb25pbmcgZm9yCisgICAgICAgICAgICAgICAgICAgIHNvbWUgcmVhc29uIG9yIGFub3RoZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9InBhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Ij4KKyAgICAgICAgICAgIDx0aXRsZT5QYWNrYWdlIEZlZWRzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBnZW5lcmF0ZXMgYW4gaW1hZ2Ugb3IgYW4KKyAgICAgICAgICAgICAgICBTREssIGl0IGdldHMgdGhlIHBhY2thZ2VzIGZyb20gYSBwYWNrYWdlIGZlZWQgYXJlYSBsb2NhdGVkCisgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXdvcmtmbG93LWZpZ3VyZSc+Z2VuZXJhbCB3b3JrZmxvdyBmaWd1cmU8L2xpbms+CisgICAgICAgICAgICAgICAgc2hvd3MgdGhpcyBwYWNrYWdlIGZlZWRzIGFyZWEgaW4gdGhlIHVwcGVyLXJpZ2h0IGNvcm5lci4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGxvb2tzIGEgbGl0dGxlIGNsb3NlciBpbnRvIHRoZSBwYWNrYWdlIGZlZWRzCisgICAgICAgICAgICAgICAgYXJlYSB1c2VkIGJ5IHRoZSBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgSGVyZSBpcyBhIG1vcmUgZGV0YWlsZWQgbG9vayBhdCB0aGUgYXJlYToKKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI2aW4iIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFBhY2thZ2UgZmVlZHMgYXJlIGFuIGludGVybWVkaWFyeSBzdGVwIGluIHRoZSBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHByb3ZpZGVzIGNsYXNzZXMgdG8gZ2VuZXJhdGUKKyAgICAgICAgICAgICAgICBkaWZmZXJlbnQgcGFja2FnZSB0eXBlcywgYW5kIHlvdSBzcGVjaWZ5IHdoaWNoIGNsYXNzZXMgdG8KKyAgICAgICAgICAgICAgICBlbmFibGUgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIEJlZm9yZSBwbGFjaW5nIHRoZSBwYWNrYWdlcyBpbnRvIHBhY2thZ2UgZmVlZHMsCisgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHByb2Nlc3MgdmFsaWRhdGVzIHRoZW0gd2l0aCBnZW5lcmF0ZWQgb3V0cHV0IHF1YWxpdHkKKyAgICAgICAgICAgICAgICBhc3N1cmFuY2UgY2hlY2tzIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaW5zYW5lJz48ZmlsZW5hbWU+aW5zYW5lPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcGFja2FnZSBmZWVkIGFyZWEgcmVzaWRlcyBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHRlbXBvcmFyaWx5IHN0b3JlCisgICAgICAgICAgICAgICAgcGFja2FnZXMgaXMgZGV0ZXJtaW5lZCBieSBhIGNvbWJpbmF0aW9uIG9mIHZhcmlhYmxlcyBhbmQgdGhlCisgICAgICAgICAgICAgICAgcGFydGljdWxhciBwYWNrYWdlIG1hbmFnZXIgaW4gdXNlLgorICAgICAgICAgICAgICAgIFNlZSB0aGUgIlBhY2thZ2UgRmVlZHMiIGJveCBpbiB0aGUgaWxsdXN0cmF0aW9uIGFuZCBub3RlIHRoZQorICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIHRoZSByaWdodCBvZiB0aGF0IGFyZWEuCisgICAgICAgICAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyBkZWZpbmVzIHdoZXJlIHBhY2thZ2UgZmlsZXMgYXJlCisgICAgICAgICAgICAgICAga2VwdDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lZCBhcyA8ZmlsZW5hbWU+dG1wL2RlcGxveTwvZmlsZW5hbWU+IGluIHRoZSBCdWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVBMT1lfRElSXyo8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgcGFja2FnZSBtYW5hZ2VyIHVzZWQsIHRoZSBwYWNrYWdlIHR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi1mb2xkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBHaXZlbiBSUE0sIElQSywgb3IgREVCIHBhY2thZ2luZyBhbmQgdGFyYmFsbCBjcmVhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVJfUlBNJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9SUE08L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVJfSVBLJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9JUEs8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVJfREVCJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9ERUI8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBMT1lfRElSX1RBUic+PGZpbGVuYW1lPkRFUExPWV9ESVJfVEFSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBhcmUgdXNlZCwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgc3ViLWZvbGRlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcGFja2FnZXMgY291bGQgZXhpc3QgZm9yIHRoZSBpNTg2IG9yCisgICAgICAgICAgICAgICAgICAgICAgICBxZW11eDg2IGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2RlYic+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrcyB0byBnZW5lcmF0ZSBwYWNrYWdlcyBhbmQgcGxhY2UgdGhlbSBpbnRvIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgaG9sZGluZyBhcmVhIChlLmcuIDxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2lwazwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZm9yIElQSyBwYWNrYWdlcykuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2RlYjwvZmlsZW5hbWU+PC91bGluaz4iLAorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9pcGsnPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2lwazwvZmlsZW5hbWU+PC91bGluaz4iLAorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9ycG0nPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX3JwbTwvZmlsZW5hbWU+PC91bGluaz4iLAorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV90YXInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX3RhcjwvZmlsZW5hbWU+PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbnMgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbAorICAgICAgICAgICAgICAgIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIGEgc2NlbmFyaW8gd2hlcmUgYW4gSVBLIHBhY2thZ2luZworICAgICAgICAgICAgICAgIG1hbmFnZXIgaXMgYmVpbmcgdXNlZCBhbmQgcGFja2FnZSBhcmNoaXRlY3R1cmUgc3VwcG9ydCBmb3IKKyAgICAgICAgICAgICAgICBib3RoIGk1ODYgYW5kIHFlbXV4ODYgZXhpc3QuCisgICAgICAgICAgICAgICAgUGFja2FnZXMgZm9yIHRoZSBpNTg2IGFyY2hpdGVjdHVyZSBhcmUgcGxhY2VkIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvaXBrL2k1ODY8L2ZpbGVuYW1lPiwgd2hpbGUgcGFja2FnZXMKKyAgICAgICAgICAgICAgICBmb3IgdGhlIHFlbXV4ODYgYXJjaGl0ZWN0dXJlIGFyZSBwbGFjZWQgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQvdG1wL2RlcGxveS9pcGsvcWVtdXg4NjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2JpdGJha2UtZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgIDx0aXRsZT5CaXRCYWtlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICAgICAgdG8gcHJvZHVjZSBpbWFnZXMgYW5kIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdHMgKFNES3MpLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGZyb20gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC13b3JrZmxvdy1maWd1cmUnPmdlbmVyYWwgd29ya2Zsb3cgZmlndXJlPC9saW5rPiwKKyAgICAgICAgICAgICAgICB0aGUgQml0QmFrZSBhcmVhIGNvbnNpc3RzIG9mIHNldmVyYWwgZnVuY3Rpb25hbCBhcmVhcy4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gdGFrZXMgYSBjbG9zZXIgbG9vayBhdCBlYWNoIG9mIHRob3NlIGFyZWFzLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZSBkb2N1bWVudGF0aW9uIGV4aXN0cyBmb3IgdGhlIEJpdEJha2UgdG9vbC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgcmVmZXJlbmNlIG1hdGVyaWFsIG9uIEJpdEJha2UuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nc291cmNlLWZldGNoaW5nLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBGZXRjaGluZzwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHN0YWdlcyBvZiBidWlsZGluZyBhIHJlY2lwZSBhcmUgdG8gZmV0Y2ggYW5kCisgICAgICAgICAgICAgICAgICAgIHVucGFjayB0aGUgc291cmNlIGNvZGU6CisgICAgICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtZmV0Y2hpbmcucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNi41aW4iIGRlcHRoPSI1aW4iIC8+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy11bnBhY2snPjxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2tzIGZldGNoIHRoZSBzb3VyY2UgZmlsZXMgYW5kIHVucGFjayB0aGVtIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV2ZXJ5IGxvY2FsIGZpbGUgKGUuZy4gPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgcGFydCBvZiBhIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRha2VzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtIG9mIHRoZSBmaWxlIGZvciB0aGUgcmVjaXBlIGFuZCBpbnNlcnRzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tzdW0gaW50byB0aGUgc2lnbmF0dXJlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+IHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICBJZiBhbnkgbG9jYWwgZmlsZSBoYXMgYmVlbiBtb2RpZmllZCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPiB0YXNrIGFuZCBhbGwgdGFza3MgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kIG9uIGl0IGFyZSByZS1leGVjdXRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBldmVyeXRoaW5nIGlzIGFjY29tcGxpc2hlZCBpbiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LCB3aGljaCBoYXMgYSBkZWZpbmVkIHN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB0aGUgQnVpbGQgRGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1idWlsZCc+PGZpbGVuYW1lPmJ1aWxkLzwvZmlsZW5hbWU+PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRWFjaCByZWNpcGUgaGFzIGFuIGFyZWEgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgdW5wYWNrZWQgc291cmNlIGNvZGUgcmVzaWRlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgcG9pbnRzIHRvIHRoaXMgYXJlYSBmb3IgYSByZWNpcGUncyB1bnBhY2tlZCBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhhdCBkaXJlY3RvcnkgZm9yIGFueSBnaXZlbiByZWNpcGUgaXMgZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICBmcm9tIHNldmVyYWwgZGlmZmVyZW50IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZWNlZGluZyBmaWd1cmUgYW5kIHRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZQorICAgICAgICAgICAgICAgICAgICB0aGUgQnVpbGQgRGlyZWN0b3J5J3MgaGllcmFyY2h5OgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIGRpcmVjdG9yeSB3aGVyZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHBlcmZvcm1zIGFsbCBpdHMgd29yayBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGJhc2UgZGlyZWN0b3J5IGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXA8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgYnVpbHQgcGFja2FnZSBvciBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIGV2ZW50dWFsIGRlc3RpbmF0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2Ugb3IgcGFja2FnZXMgKGkuZS4gbWFjaGluZSBhcmNoaXRlY3R1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPmJ1aWxkIGhvc3Q8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTREssIG9yIHNwZWNpZmljIG1hY2hpbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPiB2YXJpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSB2YXJpYWJsZSdzIGRlc2NyaXB0aW9uIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UQVJHRVRfT1MnPjxmaWxlbmFtZT5UQVJHRVRfT1M8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvcGVyYXRpbmcgc3lzdGVtIG9mIHRoZSB0YXJnZXQgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgdHlwaWNhbCB2YWx1ZSB3b3VsZCBiZSAibGludXgiIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInFlbXV4ODYtcG9reS1saW51eCIpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBjYW4gaGF2ZSBtdWx0aXBsZSBtZWFuaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB3aGVuIHVzZWQgaW4gdGhlIGNvbnRleHQgb2YgaW5wdXQgZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4gcmVwcmVzZW50cyB0aGUgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRzIGEgcmVjaXBlIChpLmUuIGRvZXMgdGhlIHdvcmsgdG8gY3JlYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIG9mIHRoZSByZWNpcGUgdXNlZCB0byBidWlsZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJldmlzaW9uIG9mIHRoZSByZWNpcGUgdXNlZCB0byBidWlsZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHRoZSB1bnBhY2tlZCBzb3VyY2UgZmlsZXMgZm9yIGEgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJQTic+PGZpbGVuYW1lPkJQTjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5CUE48L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSB2ZXJzaW9uIG9mIHRoZSA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYnV0IHdpdGggY29tbW9uIHByZWZpeGVzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4ZXMgcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdmVyc2lvbiBvZiB0aGUgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBmaWd1cmUsIG5vdGljZSB0aGF0IHR3byBzYW1wbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoaWVzIGV4aXN0OiBvbmUgYmFzZWQgb24gcGFja2FnZSBhcmNoaXRlY3R1cmUgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPikgYW5kIG9uZSBiYXNlZCBvbiBhCisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIChpLmUuIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHVuZGVybHlpbmcgc3RydWN0dXJlcyBhcmUgaWRlbnRpY2FsLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRpZmZlcmVudGlhdG9yIGJlaW5nIHdoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGlzIHVzaW5nIGFzIGEgYnVpbGQgdGFyZ2V0IChlLmcuIGdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSwgYSBidWlsZCBob3N0LCBhbiBTREssIG9yIGEgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUpLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncGF0Y2hpbmctZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+UGF0Y2hpbmc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uY2Ugc291cmNlIGNvZGUgaXMgZmV0Y2hlZCBhbmQgdW5wYWNrZWQsIEJpdEJha2UgbG9jYXRlcworICAgICAgICAgICAgICAgICAgICBwYXRjaCBmaWxlcyBhbmQgYXBwbGllcyB0aGVtIHRvIHRoZSBzb3VyY2UgZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wYXRjaGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI2aW4iIC8+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayB1c2VzIGEgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gbG9jYXRlIGFwcGxpY2FibGUgcGF0Y2ggZmlsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgcHJvY2Vzc2luZyBmb3IgcGF0Y2ggZmlsZXMgYXNzdW1lcyB0aGUgZmlsZXMgaGF2ZQorICAgICAgICAgICAgICAgICAgICBlaXRoZXIgPGZpbGVuYW1lPioucGF0Y2g8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5kaWZmPC9maWxlbmFtZT4gZmlsZSB0eXBlcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBwYXJhbWV0ZXJzIHRvCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZSB0aGUgd2F5IHRoZSBidWlsZCBzeXN0ZW0gcmVjb2duaXplcyBwYXRjaCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBmaW5kcyBhbmQgYXBwbGllcyBtdWx0aXBsZSBwYXRjaGVzIGZvciBhIHNpbmdsZQorICAgICAgICAgICAgICAgICAgICByZWNpcGUgaW4gdGhlIG9yZGVyIGluIHdoaWNoIGl0IGxvY2F0ZXMgdGhlIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgZGVmaW5lcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBzZXQgb2YgZGlyZWN0b3JpZXMgdGhhdCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgc2VhcmNoIGZvciBwYXRjaCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgT25jZSBmb3VuZCwgcGF0Y2hlcyBhcmUgYXBwbGllZCB0byB0aGUgcmVjaXBlJ3Mgc291cmNlCisgICAgICAgICAgICAgICAgICAgIGZpbGVzLCB3aGljaCBhcmUgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgc291cmNlIGRpcmVjdG9yaWVzIGFyZQorICAgICAgICAgICAgICAgICAgICBjcmVhdGVkLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzb3VyY2UtZmV0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5Tb3VyY2UgRmV0Y2hpbmc8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIHBhdGNoZXMgYW5kIGhvdyB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHByb2Nlc3NlcyBwYXRjaGVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctcmVjaXBlLXBhdGNoaW5nLWNvZGUnPlBhdGNoaW5nIENvZGU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZGV2dG9vbC11c2UtZGV2dG9vbC1tb2RpZnktdG8tbW9kaWZ5LXRoZS1zb3VyY2Utb2YtYW4tZXhpc3RpbmctY29tcG9uZW50Jz5Vc2UgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gdG8gTW9kaWZ5IHRoZSBTb3VyY2Ugb2YgYW4gRXhpc3RpbmcgQ29tcG9uZW50PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBtYW51YWwgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I3VzaW5nLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyBUcmFkaXRpb25hbCBLZXJuZWwgRGV2ZWxvcG1lbnQgdG8gUGF0Y2ggdGhlIEtlcm5lbDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nY29uZmlndXJhdGlvbi1jb21waWxhdGlvbi1hbmQtc3RhZ2luZy1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uLCBDb21waWxhdGlvbiwgYW5kIFN0YWdpbmc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFmdGVyIHNvdXJjZSBjb2RlIGlzIHBhdGNoZWQsIEJpdEJha2UgZXhlY3V0ZXMgdGFza3MgdGhhdAorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgYW5kIGNvbXBpbGUgdGhlIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgICAgICBPbmNlIGNvbXBpbGF0aW9uIG9jY3VycywgdGhlIGZpbGVzIGFyZSBjb3BpZWQgdG8gYSBob2xkaW5nCisgICAgICAgICAgICAgICAgICAgIGFyZWEgKHN0YWdlZCkgaW4gcHJlcGFyYXRpb24gZm9yIHBhY2thZ2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjdpbiIgZGVwdGg9IjVpbiIgLz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzdGVwIGluIHRoZSBidWlsZCBwcm9jZXNzIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgdGFza3M6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wcmVwYXJlX3JlY2lwZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdDwvZmlsZW5hbWU+PC91bGluaz48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgc2V0cyB1cCB0aGUgdHdvIHN5c3Jvb3RzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdC1uYXRpdmU8L2ZpbGVuYW1lPikgc28gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyB0aGUgcGFja2FnaW5nIHBoYXNlIHRoZSBzeXNyb290cyBjYW4gY29udGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza3Mgb2YgdGhlIHJlY2lwZXMgb24gd2hpY2ggdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgdGhlIHRhc2tzIGRlcGVuZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBzeXNyb290IGV4aXN0cyBmb3IgYm90aCB0aGUgdGFyZ2V0IGFuZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlIGJpbmFyaWVzLCB3aGljaCBydW4gb24gdGhlIGhvc3Qgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgY29uZmlndXJlcyB0aGUgc291cmNlIGJ5IGVuYWJsaW5nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGluZyBhbnkgYnVpbGQtdGltZSBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBzb2Z0d2FyZSBiZWluZyBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9ucyBjYW4gY29tZSBmcm9tIHRoZSByZWNpcGUgaXRzZWxmIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VsbCBhcyBmcm9tIGFuIGluaGVyaXRlZCBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBzb2Z0d2FyZSBpdHNlbGYgbWlnaHQgY29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRzZWxmIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGZvciB3aGljaCBpdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIGJ1aWx0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBjb25maWd1cmF0aW9ucyBoYW5kbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzayBhcmUgc3BlY2lmaWMgdG8gY29uZmlndXJhdGlvbnMgZm9yIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlIGJlaW5nIGJ1aWx0IGJ5IHRoZSByZWNpcGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGFyZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHlvdSBjYW4gYWRkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVFJBX09FQ09ORic+PGZpbGVuYW1lPkVYVFJBX09FQ09ORjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFQ09ORklHX0NPTkZBUkdTJz48ZmlsZW5hbWU+UEFDS0FHRUNPTkZJR19DT05GQVJHUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHZhcmlhYmxlIHdvcmtzIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY2xhc3MsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzJz5oZXJlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIGEgY29uZmlndXJhdGlvbiB0YXNrIGhhcyBiZWVuIHNhdGlzZmllZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGNvbXBpbGVzIHRoZSBzb3VyY2UgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGlsYXRpb24gb2NjdXJzIGluIHRoZSBkaXJlY3RvcnkgcG9pbnRlZCB0byBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CJz48ZmlsZW5hbWU+QjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgdGhlIDxmaWxlbmFtZT5CPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMsIGJ5IGRlZmF1bHQsIHRoZSBzYW1lIGFzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBjb21waWxhdGlvbiBjb21wbGV0ZXMsIEJpdEJha2UgZXhlY3V0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0YXNrIGNvcGllcyBmaWxlcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CPC9maWxlbmFtZT4gZGlyZWN0b3J5IGFuZCBwbGFjZXMgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgaG9sZGluZyBhcmVhIHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2luZyBvY2N1cnMgbGF0ZXIgdXNpbmcgZmlsZXMgZnJvbSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9sZGluZyBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3BhY2thZ2Utc3BsaXR0aW5nLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlBhY2thZ2UgU3BsaXR0aW5nPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciBzb3VyY2UgY29kZSBpcyBjb25maWd1cmVkLCBjb21waWxlZCwgYW5kIHN0YWdlZCwgdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBhbmFseXplcyB0aGUgcmVzdWx0cyBhbmQgc3BsaXRzIHRoZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgaW50byBwYWNrYWdlczoKKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI3aW4iIC8+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFza3MgY29tYmluZSB0byBhbmFseXplIHRoZSBmaWxlcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYW5kIHNwbGl0IHRoZW0gaW50byBzdWJzZXRzIGJhc2VkIG9uIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBhbmQgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIEFuYWx5c2lzIGludm9sdmVzIHRoZSBmb2xsb3dpbmcgYXMgd2VsbCBhcyBvdGhlciBpdGVtczoKKyAgICAgICAgICAgICAgICAgICAgc3BsaXR0aW5nIG91dCBkZWJ1Z2dpbmcgc3ltYm9scywgbG9va2luZyBhdCBzaGFyZWQgbGlicmFyeQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgYmV0d2VlbiBwYWNrYWdlcywgYW5kIGxvb2tpbmcgYXQgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT4gdGFzayBjcmVhdGVzCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbWV0YWRhdGEgYmFzZWQgb24gdGhlIGFuYWx5c2lzIHN1Y2ggdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGNhbiBnZW5lcmF0ZSB0aGUgZmluYWwgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgc3RhZ2VzIChjb3BpZXMpIGEgc3Vic2V0IG9mIHRoZSBmaWxlcyBpbnN0YWxsZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBpbnRvIHRoZSBhcHByb3ByaWF0ZSBzeXNyb290LgorICAgICAgICAgICAgICAgICAgICBXb3JraW5nLCBzdGFnZWQsIGFuZCBpbnRlcm1lZGlhdGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMKKyAgICAgICAgICAgICAgICAgICAgYW5kIHBhY2thZ2Ugc3BsaXR0aW5nIHByb2Nlc3MgdXNlIHNldmVyYWwgYXJlYXM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBLR0QnPjxmaWxlbmFtZT5QS0dEPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVzdGluYXRpb24gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBhY2thZ2U8L2ZpbGVuYW1lPikgZm9yIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIHRoZXkgYXJlIHNwbGl0IGludG8gaW5kaXZpZHVhbCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEtHREVTVFdPUksnPjxmaWxlbmFtZT5QS0dERVNUV09SSzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSB0ZW1wb3Jhcnkgd29yayBhcmVhIChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ2RhdGE8L2ZpbGVuYW1lPikgdXNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgdG8gc2F2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBLR0RFU1QnPjxmaWxlbmFtZT5QS0dERVNUPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGFyZW50IGRpcmVjdG9yeSAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlcy1zcGxpdDwvZmlsZW5hbWU+KSBmb3IgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciB0aGV5IGhhdmUgYmVlbiBzcGxpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBzaGFyZWQsIGdsb2JhbC1zdGF0ZSBkaXJlY3RvcnkgdGhhdCBob2xkcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2luZyBtZXRhZGF0YSBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBwYWNrYWdpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYWNrYWdpbmcgcHJvY2VzcyBjb3BpZXMgbWV0YWRhdGEgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dERVNUV09SSzwvZmlsZW5hbWU+IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+IGFyZWEgd2hlcmUgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWNvbWVzIGdsb2JhbGx5IGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1RBR0lOR19ESVJfSE9TVCc+PGZpbGVuYW1lPlNUQUdJTkdfRElSX0hPU1Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYXRoIGZvciB0aGUgc3lzcm9vdCBmb3IgdGhlIHN5c3RlbSBvbiB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcG9uZW50IGlzIGJ1aWx0IHRvIHJ1biAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1RBR0lOR19ESVJfTkFUSVZFJz48ZmlsZW5hbWU+U1RBR0lOR19ESVJfTkFUSVZFPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGF0aCBmb3IgdGhlIHN5c3Jvb3QgdXNlZCB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cyBmb3IgdGhlIGJ1aWxkIGhvc3QgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3QtbmF0aXZlPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TVEFHSU5HX0RJUl9UQVJHRVQnPjxmaWxlbmFtZT5TVEFHSU5HX0RJUl9UQVJHRVQ8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYXRoIGZvciB0aGUgc3lzcm9vdCB1c2VkIHdoZW4gYSBjb21wb25lbnQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGJ1aWx0IHRvIGV4ZWN1dGUgb24gYSBzeXN0ZW0gYW5kIGl0IGdlbmVyYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgZm9yIHlldCBhbm90aGVyIG1hY2hpbmUgKGUuZy4gY3Jvc3MtY2FuYWRpYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGVmaW5lcyB0aGUgZmlsZXMgdGhhdCBnbyBpbnRvIGVhY2ggcGFja2FnZSBpbgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRVMnPjxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IGRldGFpbHMgb24gaG93IHRoaXMgaXMgYWNjb21wbGlzaGVkLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIGxvb2sgYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MnPjxmaWxlbmFtZT5wYWNrYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgcGFja2FnZXMgYmVpbmcgY3JlYXRlZCAoUlBNLCBERUIsCisgICAgICAgICAgICAgICAgICAgIG9yIElQSyksIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgY3JlYXRlcyB0aGUgYWN0dWFsIHBhY2thZ2VzIGFuZCBwbGFjZXMgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgUGFja2FnZSBGZWVkIGFyZWEsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1RNUERJUn0vZGVwbG95PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGRldGFpbCBvbiB0aGF0IHBhcnQgb2YgdGhlIGJ1aWxkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgY3JlYXRpbmcgZmVlZHMgZGlyZWN0bHkgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvKjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzIGRvZXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0aW5nIHN1Y2ggZmVlZHMgdXN1YWxseSByZXF1aXJlcyBzb21lIGtpbmQgb2YgZmVlZAorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRlbmFuY2UgbWVjaGFuaXNtIHRoYXQgd291bGQgdXBsb2FkIHRoZSBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGludG8gYW4gb2ZmaWNpYWwgcGFja2FnZSBmZWVkIChlLmcuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgw4VuZ3N0csO2bSBkaXN0cmlidXRpb24pLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGhpZ2hseSBkaXN0cmlidXRpb24tc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aHVzIGlzIG5vdCBwcm92aWRlZCBvdXQgb2YgdGhlIGJveC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2ltYWdlLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+SW1hZ2UgR2VuZXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25jZSBwYWNrYWdlcyBhcmUgc3BsaXQgYW5kIHN0b3JlZCBpbiB0aGUgUGFja2FnZSBGZWVkcworICAgICAgICAgICAgICAgICAgICBhcmVhLCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgQml0QmFrZSB0byBnZW5lcmF0ZSB0aGUgcm9vdAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGltYWdlOgorICAgICAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3LjVpbiIgZGVwdGg9IjcuNWluIiAvPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgaW1hZ2UgZ2VuZXJhdGlvbiBwcm9jZXNzIGNvbnNpc3RzIG9mIHNldmVyYWwgc3RhZ2VzIGFuZAorICAgICAgICAgICAgICAgICAgICBkZXBlbmRzIG9uIHNldmVyYWwgdGFza3MgYW5kIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1yb290ZnMnPjxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgY3JlYXRlcyB0aGUgcm9vdCBmaWxlc3lzdGVtIChmaWxlIGFuZCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlKSBmb3IgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayB1c2VzIHNldmVyYWwga2V5IHZhcmlhYmxlcyB0byBoZWxwIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGlzdCBvZiBwYWNrYWdlcyB0byBhY3R1YWxseSBpbnN0YWxsOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgb3V0IHRoZSBiYXNlIHNldCBvZiBwYWNrYWdlcyBmcm9tIHdoaWNoIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCBmcm9tIHRoZSBQYWNrYWdlIEZlZWRzIGFyZWEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRVhDTFVERSc+PGZpbGVuYW1lPlBBQ0tBR0VfRVhDTFVERTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHBhY2thZ2VzIHRoYXQgc2hvdWxkIG5vdCBiZSBpbnN0YWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGZlYXR1cmVzIHRvIGluY2x1ZGUgaW4gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vc3Qgb2YgdGhlc2UgZmVhdHVyZXMgbWFwIHRvIGFkZGl0aW9uYWwgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5zdGFsbGF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGFja2FnZSBiYWNrZW5kIChlLmcuIFJQTSwgREVCLCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQSykgdG8gdXNlIGFuZCBjb25zZXF1ZW50bHkgaGVscHMgZGV0ZXJtaW5lIHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbG9jYXRlIHBhY2thZ2VzIHdpdGhpbiB0aGUgUGFja2FnZSBGZWVkcyBhcmVhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9MSU5HVUFTJz48ZmlsZW5hbWU+SU1BR0VfTElOR1VBUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lcyB0aGUgbGFuZ3VhZ2UocykgZm9yIHdoaWNoIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSBzdXBwb3J0IHBhY2thZ2VzIGFyZSBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfSU5TVEFMTCc+PGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIGxpc3Qgb2YgcGFja2FnZXMgcGFzc2VkIHRvIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciBmb3IgaW5zdGFsbGF0aW9uIGludG8gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2l0aAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfUk9PVEZTJz48ZmlsZW5hbWU+SU1BR0VfUk9PVEZTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgdGhlIGZpbGVzeXN0ZW0gdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0aW9uIGFuZCB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHByb3ZpZGluZyB0aGUgZmluYWwgbGlzdCBvZiBwYWNrYWdlcyB0byBpbnN0YWxsLAorICAgICAgICAgICAgICAgICAgICB0aGUgcm9vdCBmaWxlIHN5c3RlbSBpcyBjcmVhdGVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBQYWNrYWdlIGluc3RhbGxhdGlvbiBpcyB1bmRlciBjb250cm9sIG9mIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIgKGUuZy4gZG5mL3JwbSwgb3BrZywgb3IgYXB0L2Rwa2cpIHJlZ2FyZGxlc3Mgb2YKKyAgICAgICAgICAgICAgICAgICAgd2hldGhlciBvciBub3QgcGFja2FnZSBtYW5hZ2VtZW50IGlzIGVuYWJsZWQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgIEF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3MsIGlmIHBhY2thZ2UgbWFuYWdlbWVudCBpcyBub3QKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZCBmb3IgdGhlIHRhcmdldCwgdGhlIHBhY2thZ2UgbWFuYWdlcidzIGRhdGEgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgYXJlIGRlbGV0ZWQgZnJvbSB0aGUgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBBcyBwYXJ0IG9mIHRoZSBmaW5hbCBzdGFnZSBvZiBwYWNrYWdlIGluc3RhbGxhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgcG9zdCBpbnN0YWxsYXRpb24gc2NyaXB0cyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICBhcmUgcnVuLgorICAgICAgICAgICAgICAgICAgICBBbnkgc2NyaXB0cyB0aGF0IGZhaWwgdG8gcnVuIG9uIHRoZSBidWlsZCBob3N0IGFyZSBydW4gb24KKyAgICAgICAgICAgICAgICAgICAgdGhlIHRhcmdldCB3aGVuIHRoZSB0YXJnZXQgc3lzdGVtIGlzIGZpcnN0IGJvb3RlZC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBhCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtcmVhZC1vbmx5LXJvb3QtZmlsZXN5c3RlbSc+cmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICBhbGwgdGhlIHBvc3QgaW5zdGFsbGF0aW9uIHNjcmlwdHMgbXVzdCBzdWNjZWVkIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0IGR1cmluZyB0aGUgcGFja2FnZSBpbnN0YWxsYXRpb24gcGhhc2Ugc2luY2UgdGhlCisgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSBvbiB0aGUgdGFyZ2V0IGlzIHJlYWQtb25seS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHN0YWdlcyBvZiB0aGUgPGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+IHRhc2sKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlIHBvc3QgcHJvY2Vzc2luZy4KKyAgICAgICAgICAgICAgICAgICAgUG9zdCBwcm9jZXNzaW5nIGluY2x1ZGVzIGNyZWF0aW9uIG9mIGEgbWFuaWZlc3QgZmlsZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9ucy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1hbmlmZXN0IGZpbGUgKDxmaWxlbmFtZT4ubWFuaWZlc3Q8L2ZpbGVuYW1lPikgcmVzaWRlcworICAgICAgICAgICAgICAgICAgICBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGxpc3RzIG91dCwgbGluZS1ieS1saW5lLCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICBUaGUgbWFuaWZlc3QgZmlsZSBpcyB1c2VmdWwgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy10ZXN0aW1hZ2UqJz48ZmlsZW5hbWU+dGVzdGltYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgZm9yIGV4YW1wbGUsIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byBydW4KKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgdGVzdHMuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX01BTklGRVNUJz48ZmlsZW5hbWU+SU1BR0VfTUFOSUZFU1Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBPcHRpbWl6aW5nIHByb2Nlc3NlcyB0aGF0IGFyZSBydW4gYWNyb3NzIHRoZSBpbWFnZSBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ta2xpYnM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnByZWxpbms8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBvdGhlciBwb3N0LXByb2Nlc3NpbmcgY29tbWFuZHMgYXMgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+Uk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1rbGliczwvZmlsZW5hbWU+IHByb2Nlc3Mgb3B0aW1pemVzIHRoZSBzaXplCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsaWJyYXJpZXMsIHdoaWxlIHRoZSA8ZmlsZW5hbWU+cHJlbGluazwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Mgb3B0aW1pemVzIHRoZSBkeW5hbWljIGxpbmtpbmcgb2Ygc2hhcmVkIGxpYnJhcmllcworICAgICAgICAgICAgICAgICAgICB0byByZWR1Y2Ugc3RhcnQgdXAgdGltZSBvZiBleGVjdXRhYmxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBidWlsdCwgcHJvY2Vzc2luZyBiZWdpbnMgb24KKyAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbWFnZSc+PGZpbGVuYW1lPmRvX2ltYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHJ1bnMgYW55IHByZS1wcm9jZXNzaW5nIGNvbW1hbmRzIGFzCisgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQnPjxmaWxlbmFtZT5JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgZmluYWwgaW1hZ2Ugb3V0cHV0IGZpbGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGR5bmFtaWNhbGx5IGNyZWF0ZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ltYWdlXyo8L2ZpbGVuYW1lPiB0YXNrcyBhcyBuZWVkZWQsIGJhc2VkCisgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBpbWFnZSB0eXBlcyBzcGVjaWZpZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBwcm9jZXNzIHR1cm5zIGV2ZXJ5dGhpbmcgaW50byBhbiBpbWFnZSBmaWxlIG9yIGEgc2V0IG9mCisgICAgICAgICAgICAgICAgICAgIGltYWdlIGZpbGVzIGFuZCBjYW4gY29tcHJlc3MgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZSB0bworICAgICAgICAgICAgICAgICAgICByZWR1Y2UgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmb3JtYXRzIHVzZWQgZm9yIHRoZSByb290IGZpbGVzeXN0ZW0gZGVwZW5kIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2lvbiBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGZvcm1hdHMgc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgYSBkeW5hbWljYWxseSBjcmVhdGVkIHRhc2sgd2hlbiBjcmVhdGluZyBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgaW1hZ2UgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiB3b3VsZAorICAgICAgICAgICAgICAgICAgICB0YWtlIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19pbWFnZV88cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgU28sIGlmIHRoZSA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IGFzIHNwZWNpZmllZCBieQorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiB3ZXJlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHQ0PC9maWxlbmFtZT4sIHRoZSBkeW5hbWljYWxseSBnZW5lcmF0ZWQgdGFzaworICAgICAgICAgICAgICAgICAgICB3b3VsZCBiZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX2ltYWdlX2V4dDQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgdGFzayBpbnZvbHZlZCBpbiBpbWFnZSBjcmVhdGlvbiBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWltYWdlLWNvbXBsZXRlJz48ZmlsZW5hbWU+ZG9faW1hZ2VfY29tcGxldGU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayBjb21wbGV0ZXMgdGhlIGltYWdlIGJ5IGFwcGx5aW5nIGFueSBpbWFnZQorICAgICAgICAgICAgICAgICAgICBwb3N0IHByb2Nlc3NpbmcgYXMgZGVmaW5lZCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORCc+PGZpbGVuYW1lPklNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgc3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIGZpbmFsIGltYWdlIG91dHB1dCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZW50aXJlIGltYWdlIGdlbmVyYXRpb24gcHJvY2VzcyBpcyBydW4gdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2Zha2Vyb290LWFuZC1wc2V1ZG8nPlBzZXVkbzwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIHVuZGVyIFBzZXVkbyBlbnN1cmVzIHRoYXQgdGhlIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIGhhdmUgY29ycmVjdCBvd25lcnNoaXAuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzZGstZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5TREsgR2VuZXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBCaXRCYWtlIHRvIGdlbmVyYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgaW5zdGFsbGVyIHNjcmlwdHMgZm9yIGJvdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIHN0YW5kYXJkIFNESyBhbmQgdGhlIGV4dGVuc2libGUgU0RLIChlU0RLKToKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1nZW5lcmF0aW9uLnBuZyIgd2lkdGg9IjlpbiIgYWxpZ249ImNlbnRlciIgLz4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYWR2YW50YWdlcyBnYWluZWQgd2hlbiBidWlsZGluZyBhCisgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc2RrJz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFzaywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKQorICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIExpa2UgaW1hZ2UgZ2VuZXJhdGlvbiwgdGhlIFNESyBzY3JpcHQgcHJvY2VzcyBjb25zaXN0cyBvZgorICAgICAgICAgICAgICAgICAgICBzZXZlcmFsIHN0YWdlcyBhbmQgZGVwZW5kcyBvbiBtYW55IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wb3B1bGF0ZV9zZGsnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc2RrX2V4dCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2tzIHVzZSB0aGVzZSBrZXkgdmFyaWFibGVzIHRvIGhlbHAgY3JlYXRlIHRoZSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIHRvIGFjdHVhbGx5IGluc3RhbGwuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgdmFyaWFibGVzIGxpc3RlZCBpbiB0aGUgZmlndXJlLAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3NkazwvZmlsZW5hbWU+IHRhc2sgaGVscHMgY3JlYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBzdGFuZGFyZCBTREsgYW5kIGhhbmRsZXMgdHdvIHBhcnRzOiBhIHRhcmdldCBwYXJ0IGFuZCBhCisgICAgICAgICAgICAgICAgICAgIGhvc3QgcGFydC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmdldCBwYXJ0IGlzIHRoZSBwYXJ0IGJ1aWx0IGZvciB0aGUgdGFyZ2V0IGhhcmR3YXJlCisgICAgICAgICAgICAgICAgICAgIGFuZCBpbmNsdWRlcyBsaWJyYXJpZXMgYW5kIGhlYWRlcnMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBob3N0IHBhcnQgaXMgdGhlIHBhcnQgb2YgdGhlIFNESyB0aGF0IHJ1bnMgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrX2V4dDwvZmlsZW5hbWU+IHRhc2sgaGVscHMKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlIHRoZSBleHRlbnNpYmxlIFNESyBhbmQgaGFuZGxlcyBob3N0IGFuZCB0YXJnZXQgcGFydHMKKyAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50bHkgdGhhbiBpdHMgY291bnRlciBwYXJ0IGRvZXMgZm9yIHRoZSBzdGFuZGFyZCBTREsuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgZXh0ZW5zaWJsZSBTREssIHRoZSB0YXNrIGVuY2Fwc3VsYXRlcyB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCAoaG9zdCBhbmQgdGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIFNESy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiBTREsgYmVpbmcgY29uc3RydWN0ZWQsIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXNrcyBwZXJmb3JtIHNvbWUgY2xlYW51cCBhZnRlciB3aGljaCBhIGNyb3NzLWRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBhbmQgYW55IG5lZWRlZCBjb25maWd1cmF0aW9uIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGFyZSBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgb3V0cHV0IGlzIHRoZSBDcm9zcy1kZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gaW5zdGFsbGF0aW9uIHNjcmlwdCAoPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUpLCB3aGljaCBpbmNsdWRlcyB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+U3RhbXAgRmlsZXMgYW5kIHRoZSBSZXJ1bm5pbmcgb2YgVGFza3M8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBlYWNoIHRhc2sgdGhhdCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LCBCaXRCYWtlIHdyaXRlcyBhCisgICAgICAgICAgICAgICAgICAgIHN0YW1wIGZpbGUgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNUQU1QU19ESVInPjxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0YW1wIGZpbGUncyBmaWxlbmFtZSBpcyBkZXRlcm1pbmVkCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1RBTVAnPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIGFuZCB0aGUgZW5kIG9mIHRoZSBuYW1lIGNvbnNpc3RzIG9mIHRoZSB0YXNrJ3MKKyAgICAgICAgICAgICAgICAgICAgbmFtZSBhbmQgY3VycmVudAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdvdmVydmlldy1jaGVja3N1bXMnPmlucHV0IGNoZWNrc3VtPC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG5hbWluZyBzY2hlbWUgYXNzdW1lcyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1CQl9TSUdOQVRVUkVfSEFORExFUic+PGZpbGVuYW1lPkJCX1NJR05BVFVSRV9IQU5ETEVSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgIk9FQmFzaWNIYXNoIiwgd2hpY2ggaXMgYWxtb3N0IGFsd2F5cyB0aGUgY2FzZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBPcGVuRW1iZWRkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVG8gZGV0ZXJtaW5lIGlmIGEgdGFzayBuZWVkcyB0byBiZSByZXJ1biwgQml0QmFrZSBjaGVja3MKKyAgICAgICAgICAgICAgICAgICAgaWYgYSBzdGFtcCBmaWxlIHdpdGggYSBtYXRjaGluZyBpbnB1dCBjaGVja3N1bSBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSB0YXNrLgorICAgICAgICAgICAgICAgICAgICBJZiBzdWNoIGEgc3RhbXAgZmlsZSBleGlzdHMsIHRoZSB0YXNrJ3Mgb3V0cHV0IGlzCisgICAgICAgICAgICAgICAgICAgIGFzc3VtZWQgdG8gZXhpc3QgYW5kIHN0aWxsIGJlIHZhbGlkLgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlIHRhc2sgaXMgcmVydW4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHN0YW1wIG1lY2hhbmlzbSBpcyBtb3JlIGdlbmVyYWwgdGhhbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBjYWNoZSBtZWNoYW5pc20gZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3NldHNjZW5lLXRhc2tzLWFuZC1zaGFyZWQtc3RhdGUnPlNldHNjZW5lIFRhc2tzIGFuZCBTaGFyZWQgU3RhdGU8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgYXZvaWRzIHJlcnVubmluZyBhbnkgdGFzayB0aGF0IGhhcyBhIHZhbGlkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFtcCBmaWxlLCBub3QganVzdCB0YXNrcyB0aGF0IGNhbiBiZSBhY2NlbGVyYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgc3N0YXRlIGNhY2hlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SG93ZXZlciwgeW91IHNob3VsZCByZWFsaXplIHRoYXQgc3RhbXAgZmlsZXMgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgc2VydmUgYXMgYSBtYXJrZXIgdGhhdCBzb21lIHdvcmsgaGFzIGJlZW4gZG9uZSBhbmQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlc2UgZmlsZXMgZG8gbm90IHJlY29yZCB0YXNrIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgdGFzayBvdXRwdXQgd291bGQgdXN1YWxseSBiZSBzb21ld2hlcmUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBpbiBzb21lIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+LikKKyAgICAgICAgICAgICAgICAgICAgICAgIFdoYXQgdGhlIHNzdGF0ZSBjYWNoZSBtZWNoYW5pc20gYWRkcyBpcyBhIHdheSB0byBjYWNoZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFzayBvdXRwdXQgdGhhdCBjYW4gdGhlbiBiZSBzaGFyZWQgYmV0d2VlbiBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXMuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFNpbmNlIDxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT4gaXMgdXN1YWxseSBhCisgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZiA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4sIHJlbW92aW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiB3aWxsIGFsc28gcmVtb3ZlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT4sIHdoaWNoIG1lYW5zIHRhc2tzIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVybHkgYmUgcmVydW4gdG8gcmVwb3B1bGF0ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHNvbWUgdGFzayB0byBhbHdheXMgYmUgY29uc2lkZXJlZCAib3V0IG9mCisgICAgICAgICAgICAgICAgICAgIGRhdGUiLCB5b3UgY2FuIG1hcmsgaXQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXJpYWJsZS1mbGFncyc+PGZpbGVuYW1lPm5vc3RhbXA8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmZsYWcuCisgICAgICAgICAgICAgICAgICAgIElmIHNvbWUgb3RoZXIgdGFzayBkZXBlbmRzIG9uIHN1Y2ggYSB0YXNrLCB0aGVuIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgdGFzayB3aWxsIGFsc28gYWx3YXlzIGJlIGNvbnNpZGVyZWQgb3V0IG9mIGRhdGUsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIG1pZ2h0IG5vdCBiZSB3aGF0IHlvdSB3YW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiBob3cgdG8gdmlldyBpbmZvcm1hdGlvbiBhYm91dCBhIHRhc2sncworICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi12aWV3aW5nLXRhc2stdmFyaWFibGUtZGVwZW5kZW5jaWVzJz5WaWV3aW5nIFRhc2sgVmFyaWFibGUgRGVwZW5kZW5jaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3NldHNjZW5lLXRhc2tzLWFuZC1zaGFyZWQtc3RhdGUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5TZXRzY2VuZSBUYXNrcyBhbmQgU2hhcmVkIFN0YXRlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVzY3JpcHRpb24gb2YgdGFza3Mgc28gZmFyIGFzc3VtZXMgdGhhdCBCaXRCYWtlIG5lZWRzCisgICAgICAgICAgICAgICAgICAgIHRvIGJ1aWxkIGV2ZXJ5dGhpbmcgYW5kIG5vIGF2YWlsYWJsZSBwcmVidWlsdCBvYmplY3RzCisgICAgICAgICAgICAgICAgICAgIGV4aXN0LgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGRvZXMgc3VwcG9ydCBza2lwcGluZyB0YXNrcyBpZiBwcmVidWlsdCBvYmplY3RzIGFyZQorICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIG9iamVjdHMgYXJlIHVzdWFsbHkgbWFkZSBhdmFpbGFibGUgaW4gdGhlIGZvcm0gb2YgYQorICAgICAgICAgICAgICAgICAgICBzaGFyZWQgc3RhdGUgKHNzdGF0ZSkgY2FjaGUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHZhcmlhYmxlcyBhZmZlY3Rpbmcgc3N0YXRlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBpZGVhIG9mIGEgc2V0c2NlbmUgdGFzayAoaS5lCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPl9zZXRzY2VuZTwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBpcyBhIHZlcnNpb24gb2YgdGhlIHRhc2sgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBidWlsZGluZyBzb21ldGhpbmcsIEJpdEJha2UgY2FuIHNraXAgdG8gdGhlIGVuZAorICAgICAgICAgICAgICAgICAgICByZXN1bHQgYW5kIHNpbXBseSBwbGFjZSBhIHNldCBvZiBmaWxlcyBpbnRvIHNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9ucyBhcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIEluIHNvbWUgY2FzZXMsIGl0IG1ha2VzIHNlbnNlIHRvIGhhdmUgYSBzZXRzY2VuZSB0YXNrCisgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQgKGUuZy4gZ2VuZXJhdGluZyBwYWNrYWdlIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2spLgorICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciBjYXNlcywgaXQgZG9lcyBub3QgbWFrZSBzZW5zZSAoZS5nLiBhCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIG9yIGEKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXVucGFjayc+PGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzaykgc2luY2UgdGhlIHdvcmsgaW52b2x2ZWQgd291bGQgYmUgZXF1YWwgdG8gb3IgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICB0aGFuIHRoZSB1bmRlcmx5aW5nIHRhc2suCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBidWlsZCBzeXN0ZW0sIHRoZSBjb21tb24gdGFza3MgdGhhdCBoYXZlIHNldHNjZW5lCisgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRzIGFyZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1kZXBsb3knPjxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBOb3RpY2UgdGhhdCB0aGVzZSB0YXNrcyByZXByZXNlbnQgbW9zdCBvZiB0aGUgdGFza3Mgd2hvc2UKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGlzIGFuIGVuZCByZXN1bHQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gaGFzIGtub3dsZWRnZSBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgdGFza3MgYW5kIG90aGVyIHByZWNlZGluZyB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIEJpdEJha2UgcnVucworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZTwvZmlsZW5hbWU+IGZvcgorICAgICAgICAgICAgICAgICAgICBzb21ldGhpbmcsIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gcnVuIGFueSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGFza3MuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gbmVlZHMgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgcnVuLCBCaXRCYWtlIG5lZWRzIHRvIHJ1biB0aG9zZSBvdGhlciB0YXNrcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSXQgYmVjb21lcyBtb3JlIGNvbXBsaWNhdGVkIGlmIGV2ZXJ5dGhpbmcgY2FuIGNvbWUKKyAgICAgICAgICAgICAgICAgICAgZnJvbSBhbiBzc3RhdGUgY2FjaGUgYmVjYXVzZSBzb21lIG9iamVjdHMgYXJlIHNpbXBseQorICAgICAgICAgICAgICAgICAgICBub3QgcmVxdWlyZWQgYXQgYWxsLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGRvIG5vdCBuZWVkIGEgY29tcGlsZXIgb3IgbmF0aXZlIHRvb2xzLAorICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIHF1aWx0LCBpZiBub3RoaW5nIGV4aXN0cyB0byBjb21waWxlIG9yIHBhdGNoLgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+IHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgIGFyZSBhdmFpbGFibGUgZnJvbSBzc3RhdGUsIEJpdEJha2UgZG9lcyBub3QgbmVlZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPiB0YXNrIGRhdGEuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGhhbmRsZSBhbGwgdGhlc2UgY29tcGxleGl0aWVzLCBCaXRCYWtlIHJ1bnMgaW4gdHdvCisgICAgICAgICAgICAgICAgICAgIHBoYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IGlzIHRoZSAic2V0c2NlbmUiIHN0YWdlLgorICAgICAgICAgICAgICAgICAgICBEdXJpbmcgdGhpcyBzdGFnZSwgQml0QmFrZSBmaXJzdCBjaGVja3MgdGhlIHNzdGF0ZSBjYWNoZQorICAgICAgICAgICAgICAgICAgICBmb3IgYW55IHRhcmdldHMgaXQgaXMgcGxhbm5pbmcgdG8gYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgZG9lcyBhIGZhc3QgY2hlY2sgdG8gc2VlIGlmIHRoZSBvYmplY3QgZXhpc3RzCisgICAgICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGEgY29tcGxldGUgZG93bmxvYWQuCisgICAgICAgICAgICAgICAgICAgIElmIG5vdGhpbmcgZXhpc3RzLCB0aGUgc2Vjb25kIHBoYXNlLCB3aGljaCBpcyB0aGUgc2V0c2NlbmUKKyAgICAgICAgICAgICAgICAgICAgc3RhZ2UsIGNvbXBsZXRlcyBhbmQgdGhlIG1haW4gYnVpbGQgcHJvY2VlZHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIG9iamVjdHMgYXJlIGZvdW5kIGluIHRoZSBzc3RhdGUgY2FjaGUsIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgd29ya3MgYmFja3dhcmRzIGZyb20gdGhlIGVuZCB0YXJnZXRzIHNwZWNpZmllZCBieSB0aGUgdXNlci4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIGFuIGltYWdlIGlzIGJlaW5nIGJ1aWx0LCB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGZpcnN0IGxvb2tzIGZvciB0aGUgcGFja2FnZXMgbmVlZGVkIGZvciB0aGF0IGltYWdlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgdG9vbHMgbmVlZGVkIHRvIGNvbnN0cnVjdCBhbiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhvc2UgYXJlIGF2YWlsYWJsZSwgdGhlIGNvbXBpbGVyIGlzIG5vdCBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHRoZSBjb21waWxlciBpcyBub3QgZXZlbiBkb3dubG9hZGVkLgorICAgICAgICAgICAgICAgICAgICBJZiBzb21ldGhpbmcgd2FzIGZvdW5kIHRvIGJlIHVuYXZhaWxhYmxlLCBvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQgb3Igc2V0c2NlbmUgdGFzayBmYWlscywgdGhlIGJ1aWxkIHN5c3RlbSB0aGVuCisgICAgICAgICAgICAgICAgICAgIHRyaWVzIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzLCBzdWNoIGFzIHRoZSBjb21waWxlciwgZnJvbQorICAgICAgICAgICAgICAgICAgICB0aGUgY2FjaGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBhdmFpbGFiaWxpdHkgb2Ygb2JqZWN0cyBpbiB0aGUgc3N0YXRlIGNhY2hlIGlzCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgYnkgdGhlIGZ1bmN0aW9uIHNwZWNpZmllZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfSEFTSENIRUNLX0ZVTkNUSU9OJz48ZmlsZW5hbWU+QkJfSEFTSENIRUNLX0ZVTkNUSU9OPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9iamVjdHMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX1NFVFNDRU5FX0RFUFZBTElEJz48ZmlsZW5hbWU+QkJfU0VUU0NFTkVfREVQVkFMSUQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciBhIGdpdmVuCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgbmVlZHMgdG8gYmUgZm9sbG93ZWQsIGFuZCB3aGV0aGVyIGZvciBhbnkgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwIHRoZSBmdW5jdGlvbiBuZWVkcyB0byBiZSBwYXNzZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgVHJ1ZSBvciBGYWxzZSB2YWx1ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0naW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICA8dGl0bGU+SW1hZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGltYWdlcyBwcm9kdWNlZCBieSB0aGUgYnVpbGQgc3lzdGVtIGFyZSBjb21wcmVzc2VkIGZvcm1zCisgICAgICAgICAgICAgICAgb2YgdGhlIHJvb3QgZmlsZXN5c3RlbSBhbmQgYXJlIHJlYWR5IHRvIGJvb3Qgb24gYSB0YXJnZXQKKyAgICAgICAgICAgICAgICBkZXZpY2UuCisgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXdvcmtmbG93LWZpZ3VyZSc+Z2VuZXJhbCB3b3JrZmxvdyBmaWd1cmU8L2xpbms+CisgICAgICAgICAgICAgICAgdGhhdCBCaXRCYWtlIG91dHB1dCwgaW4gcGFydCwgY29uc2lzdHMgb2YgaW1hZ2VzLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiB0YWtlcyBhIGNsb3NlciBsb29rIGF0IHRoaXMgb3V0cHV0OgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9pbWFnZXMucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNS41aW4iIGRlcHRoPSI1LjVpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiBleGFtcGxlIGltYWdlcyB0aGF0IHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzLAorICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWltYWdlcyc+SW1hZ2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgPC9ub3RlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyB3cml0ZXMgaW1hZ2VzIG91dCB0byB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgaW5zaWRlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZm9sZGVyIGFzIHNob3duIGluIHRoZSBmaWd1cmUuCisgICAgICAgICAgICAgICAgVGhpcyBmb2xkZXIgY29udGFpbnMgYW55IGZpbGVzIGV4cGVjdGVkIHRvIGJlIGxvYWRlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICB0YXJnZXQgZGV2aWNlLgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAgd2hpbGUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVJfSU1BR0UnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgaW1hZ2VzCisgICAgICAgICAgICAgICAgZm9yIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmtlcm5lbC1pbWFnZTwvcmVwbGFjZWFibGU+OgorICAgICAgICAgICAgICAgICAgICAgICAgQSBrZXJuZWwgYmluYXJ5IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LRVJORUxfSU1BR0VUWVBFJz48ZmlsZW5hbWU+S0VSTkVMX0lNQUdFVFlQRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRldGVybWluZXMgdGhlIG5hbWluZyBzY2hlbWUgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGltYWdlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhpcyB2YXJpYWJsZSwgdGhlIGZpbGUgY291bGQgYmVnaW4gd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgYSB2YXJpZXR5IG9mIG5hbWluZyBzdHJpbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBjYW4gY29udGFpbiBtdWx0aXBsZSBpbWFnZSBmaWxlcyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5yb290LWZpbGVzeXN0ZW0taW1hZ2U8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFJvb3QgZmlsZXN5c3RlbXMgZm9yIHRoZSB0YXJnZXQgZGV2aWNlIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5leHQzPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLmJ6MjwvZmlsZW5hbWU+IGZpbGVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGV0ZXJtaW5lcyB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlIHR5cGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIHJvb3QgZmlsZXN5c3RlbXMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+a2VybmVsLW1vZHVsZXM8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRhcmJhbGxzIHRoYXQgY29udGFpbiBhbGwgdGhlIG1vZHVsZXMgYnVpbHQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsIG1vZHVsZSB0YXJiYWxscyBleGlzdCBmb3IgbGVnYWN5IHB1cnBvc2VzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGJlIHN1cHByZXNzZWQgYnkgc2V0dGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NT0RVTEVfVEFSQkFMTF9ERVBMT1knPjxmaWxlbmFtZT5NT0RVTEVfVEFSQkFMTF9ERVBMT1k8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiMCIuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIGtlcm5lbCBtb2R1bGUgdGFyYmFsbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+Ym9vdGxvYWRlcnM8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIElmIGFwcGxpY2FibGUgdG8gdGhlIHRhcmdldCBtYWNoaW5lLCBib290bG9hZGVycworICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGluZyB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRlcGxveS9pbWFnZXMvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgY2FuIGNvbnRhaW4gbXVsdGlwbGUgYm9vdGxvYWRlcnMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c3ltbGlua3M8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlcGxveS9pbWFnZXMvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXIgY29udGFpbnMgYSBzeW1ib2xpYyBsaW5rIHRoYXQgcG9pbnRzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbW9zdCByZWNlbnRseSBidWlsdCBmaWxlIGZvciBlYWNoIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBsaW5rcyBtaWdodCBiZSB1c2VmdWwgZm9yIGV4dGVybmFsIHNjcmlwdHMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBvYnRhaW4gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGVhY2ggZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Nkay1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgPHRpdGxlPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz5nZW5lcmFsIHdvcmtmbG93IGZpZ3VyZTwvbGluaz4sCisgICAgICAgICAgICAgICAgdGhlIG91dHB1dCBsYWJlbGVkICJBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREsiIHJlcHJlc2VudHMgYW4KKyAgICAgICAgICAgICAgICBTREsuCisgICAgICAgICAgICAgICAgVGhlIFNESyBnZW5lcmF0aW9uIHByb2Nlc3MgZGlmZmVycyBkZXBlbmRpbmcgb24gd2hldGhlciB5b3UKKyAgICAgICAgICAgICAgICBidWlsZCBhbiBleHRlbnNpYmxlIFNESyAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jIHBvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4pCisgICAgICAgICAgICAgICAgb3IgYSBzdGFuZGFyZCBTREsgKGUuZy4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4pLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiB0YWtlcyBhIGNsb3NlciBsb29rIGF0IHRoaXMgb3V0cHV0OgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zZGsucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOWluIiBkZXB0aD0iNy4yNWluIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgc3BlY2lmaWMgZm9ybSBvZiB0aGlzIG91dHB1dCBpcyBhIHNldCBvZiBmaWxlcyB0aGF0CisgICAgICAgICAgICAgICAgaW5jbHVkZXMgYSBzZWxmLWV4dHJhY3RpbmcgU0RLIGluc3RhbGxlcgorICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+KSwgaG9zdCBhbmQgdGFyZ2V0IG1hbmlmZXN0IGZpbGVzLAorICAgICAgICAgICAgICAgIGFuZCBmaWxlcyB1c2VkIGZvciBTREsgdGVzdGluZy4KKyAgICAgICAgICAgICAgICBXaGVuIHRoZSBTREsgaW5zdGFsbGVyIGZpbGUgaXMgcnVuLCBpdCBpbnN0YWxscyB0aGUgU0RLLgorICAgICAgICAgICAgICAgIFRoZSBTREsgY29uc2lzdHMgb2YgYSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4sIGEgc2V0IG9mCisgICAgICAgICAgICAgICAgbGlicmFyaWVzIGFuZCBoZWFkZXJzLCBhbmQgYW4gU0RLIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KKyAgICAgICAgICAgICAgICBSdW5uaW5nIHRoaXMgaW5zdGFsbGVyIGVzc2VudGlhbGx5IHNldHMgdXAgeW91cgorICAgICAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgdGhlIGNyb3NzLXRvb2xjaGFpbiBhcyB0aGUgImhvc3QiCisgICAgICAgICAgICAgICAgcGFydCBiZWNhdXNlIGl0IHJ1bnMgb24gdGhlIFNESyBtYWNoaW5lLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgdGhlIGxpYnJhcmllcyBhbmQgaGVhZGVycyBhcyB0aGUgInRhcmdldCIKKyAgICAgICAgICAgICAgICBwYXJ0IGJlY2F1c2UgdGhleSBhcmUgYnVpbHQgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpcyBhZGRlZCBzbyB0aGF0IHlvdSBjYW4KKyAgICAgICAgICAgICAgICBpbml0aWFsaXplIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgdXNpbmcgdGhlIHRvb2xzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHNldmVyYWwgbWV0aG9kcyBieSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBzZXQgdXAgdGhpcyBjcm9zcy1kZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIG1ldGhvZHMgaW5jbHVkZSBkb3dubG9hZGluZyBwcmUtYnVpbHQgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZXJzIG9yIGJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIHlvdXIgb3duIFNESworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIGNyb3NzLWRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW5zIGluIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzZXR0aW5nIHVwIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWxsIHRoZSBvdXRwdXQgZmlsZXMgZm9yIGFuIFNESyBhcmUgd3JpdHRlbiB0byB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwbG95L3NkazwvZmlsZW5hbWU+IGZvbGRlciBpbnNpZGUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIGFzIHNob3duIGluIHRoZSBwcmV2aW91cyBmaWd1cmUuCisgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIFNESywgc2V2ZXJhbCB2YXJpYWJsZXMgZXhpc3QgdGhhdCBoZWxwCisgICAgICAgICAgICAgICAgY29uZmlndXJlIHRoZXNlIGZpbGVzLgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgdmFyaWFibGVzIGFzc29jaWF0ZWQgd2l0aCBhbgorICAgICAgICAgICAgICAgIGV4dGVuc2libGUgU0RLOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES19FWFRfVFlQRSc+PGZpbGVuYW1lPlNES19FWFRfVFlQRTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9scyB3aGV0aGVyIG9yIG5vdCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkIGludG8gdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgYWxsIHJlcXVpcmVkIHNoYXJlZCBzdGF0ZSBhcnRpZmFjdHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBjb3BpZWQgaW50byB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfSU5DTFVERV9QS0dEQVRBJz48ZmlsZW5hbWU+U0RLX0lOQ0xVREVfUEtHREFUQTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgcGFja2FnZWRhdGEgaXMgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpYmxlIFNESyBmb3IgYWxsIHJlY2lwZXMgaW4gdGhlICJ3b3JsZCIgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfSU5DTFVERV9UT09MQ0hBSU4nPjxmaWxlbmFtZT5TREtfSU5DTFVERV9UT09MQ0hBSU48L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHRoZSB0b29sY2hhaW4gaXMgaW5jbHVkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfTE9DQUxfQ09ORl9XSElURUxJU1QnPjxmaWxlbmFtZT5TREtfTE9DQUxfQ09ORl9XSElURUxJU1Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHZhcmlhYmxlcyBhbGxvd2VkIHRocm91Z2ggZnJvbSB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBjb25maWd1cmF0aW9uIGludG8gdGhlIGV4dGVuc2libGUgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfTE9DQUxfQ09ORl9CTEFDS0xJU1QnPjxmaWxlbmFtZT5TREtfTE9DQUxfQ09ORl9CTEFDS0xJU1Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHZhcmlhYmxlcyBub3QgYWxsb3dlZCB0aHJvdWdoIGZyb20gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gY29uZmlndXJhdGlvbiBpbnRvIHRoZSBleHRlbnNpYmxlIFNESworICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0lOSEVSSVRfQkxBQ0tMSVNUJz48ZmlsZW5hbWU+U0RLX0lOSEVSSVRfQkxBQ0tMSVNUPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBjbGFzc2VzIHRvIHJlbW92ZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSEVSSVQnPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgZ2xvYmFsbHkgd2l0aGluIHRoZSBleHRlbnNpYmxlIFNESyBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGxpc3QsIHNob3dzIHRoZSB2YXJpYWJsZXMgYXNzb2NpYXRlZCB3aXRoIGEgc3RhbmRhcmQKKyAgICAgICAgICAgICAgICBTREs6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIG1hY2hpbmUgb24gd2hpY2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29scyBhcmUgcnVuIHRvIGNyZWF0ZSBwYWNrYWdlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES0lNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+U0RLSU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlIGZlYXR1cmVzIHRvIGluY2x1ZGUgaW4gdGhlICJ0YXJnZXQiIHBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRPT0xDSEFJTl9IT1NUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fSE9TVF9UQVNLPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgaG9zdCBwYXJ0IG9mIHRoZSBTREsKKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIHRoZSBwYXJ0IHRoYXQgcnVucyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGsgPHJlcGxhY2VhYmxlPmltYWdlbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNyZWF0ZSB0aGUgU0RLLCBhIHNldCBvZiBkZWZhdWx0IHBhY2thZ2VzIGFwcGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhbGxvd3MgeW91IHRvIGFkZCBtb3JlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UT09MQ0hBSU5fVEFSR0VUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fVEFSR0VUX1RBU0s8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgcGFja2FnZXMgdGhhdCBtYWtlIHVwIHRoZSB0YXJnZXQgcGFydCBvZiB0aGUgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiB0aGUgcGFydCBidWlsdCBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZSkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES1BBVEgnPjxmaWxlbmFtZT5TREtQQVRIPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGRlZmF1bHQgU0RLIGluc3RhbGxhdGlvbiBwYXRoIG9mZmVyZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YWxsYXRpb24gc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfSE9TVF9NQU5JRkVTVCc+PGZpbGVuYW1lPlNES19IT1NUX01BTklGRVNUPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIGFsbCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgaG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhbHNvIHBsYXlzIGEgbWlub3Igcm9sZSBmb3IgZXh0ZW5zaWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgU0RLIGRldmVsb3BtZW50IGFzIHdlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpdCBpcyBtYWlubHkgdXNlZCBmb3IgdGhlIHN0YW5kYXJkIFNESy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX1RBUkdFVF9NQU5JRkVTVCc+PGZpbGVuYW1lPlNES19UQVJHRVRfTUFOSUZFU1Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgYWxsIHRoZSBpbnN0YWxsZWQgcGFja2FnZXMgdGhhdCBtYWtlIHVwIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHBhcnQgb2YgdGhlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYWxzbyBwbGF5cyBhIG1pbm9yIHJvbGUgZm9yIGV4dGVuc2libGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFNESyBkZXZlbG9wbWVudCBhcyB3ZWxsLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgbWFpbmx5IHVzZWQgZm9yIHRoZSBzdGFuZGFyZCBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbiI+CisgICAgICAgIDx0aXRsZT5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBkb2VzIG1vc3Qgb2YgdGhlIHdvcmsgZm9yIHlvdSB3aGVuIGl0IGNvbWVzIHRvCisgICAgICAgICAgICBjcmVhdGluZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluJz5jcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zPC91bGluaz4uCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSB0ZWNobmljYWwgYmFja2dyb3VuZCBvbiBob3cKKyAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbnMgYXJlIGNyZWF0ZWQgYW5kIHVzZWQuCisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0b29sY2hhaW5zLCB5b3UgY2FuIGFsc28gc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgbWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIHRvb2xjaGFpbnMgYXJlIHVzZWQgdG8gYnVpbGQgaW1hZ2VzIGFuZCBhcHBsaWNhdGlvbnMgdGhhdCBydW4KKyAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICBXaXRoIGp1c3QgYSBmZXcgY29tbWFuZHMsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMKKyAgICAgICAgICAgIHRoZXNlIG5lY2Vzc2FyeSB0b29sY2hhaW5zIGZvciB5b3UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGEgaGlnaC1sZXZlbCBidWlsZCBlbnZpcm9ubWVudCByZWdhcmRpbmcKKyAgICAgICAgICAgIHRvb2xjaGFpbiBjb25zdHJ1Y3Rpb24gYW5kIHVzZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbnMucG5nIiB3aWR0aD0iOGluIiBkZXB0aD0iNmluIiBhbGlnbj0iY2VudGVyIiAvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBNb3N0IG9mIHRoZSB3b3JrIG9jY3VycyBvbiB0aGUgQnVpbGQgSG9zdC4KKyAgICAgICAgICAgIFRoaXMgaXMgdGhlIG1hY2hpbmUgdXNlZCB0byBidWlsZCBpbWFnZXMgYW5kIGdlbmVyYWxseSB3b3JrIHdpdGhpbgorICAgICAgICAgICAgdGhlIHRoZSBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50LgorICAgICAgICAgICAgV2hlbiB5b3UgcnVuCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgorICAgICAgICAgICAgdG8gY3JlYXRlIGFuIGltYWdlLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgdXNlcyB0aGUgaG9zdCA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4gY29tcGlsZXIgdG8gYm9vdHN0cmFwIGEKKyAgICAgICAgICAgIGNyb3NzLWNvbXBpbGVyIG5hbWVkIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4gY29tcGlsZXIgaXMgd2hhdCBCaXRCYWtlIHVzZXMgdG8KKyAgICAgICAgICAgIGNvbXBpbGUgc291cmNlIGZpbGVzIHdoZW4gY3JlYXRpbmcgdGhlIHRhcmdldCBpbWFnZS4KKyAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+IHNpbXBseSBhcyBhbgorICAgICAgICAgICAgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgY3Jvc3MtY29tcGlsZXIgdGhhdCBpcyB1c2VkIGludGVybmFsbHkKKyAgICAgICAgICAgIHdpdGhpbiBCaXRCYWtlIG9ubHkuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgZXh0ZW5zaWJsZSBTREsgZG9lcyBub3QgdXNlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zcy1jYW5hZGlhbjwvZmlsZW5hbWU+IHNpbmNlIHRoaXMgU0RLCisgICAgICAgICAgICAgICAgc2hpcHMgYSBjb3B5IG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFuZCB0aGUgc3lzcm9vdAorICAgICAgICAgICAgICAgIHdpdGhpbiBpdCBjb250YWlucyA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBjaGFpbiBvZiBldmVudHMgdGhhdCBvY2N1cnMgd2hlbiA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgIGJvb3RzdHJhcHBlZCBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBnY2MgLT4gYmludXRpbHMtY3Jvc3MgLT4gZ2NjLWNyb3NzLWluaXRpYWwgLT4gbGludXgtbGliYy1oZWFkZXJzIC0+IGdsaWJjLWluaXRpYWwgLT4gZ2xpYmMgLT4gZ2NjLWNyb3NzIC0+IGdjYy1ydW50aW1lCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgaG9zdCdzIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW51dGlscy1jcm9zczwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFyZSBtaW5pbXVtIGJpbmFyeSB1dGlsaXRpZXMgbmVlZGVkIGluIG9yZGVyIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmdjYy1jcm9zcy1pbml0aWFsPC9maWxlbmFtZT4gcGhhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcCBvcGVyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zcy1pbml0aWFsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEFuIGVhcmx5IHN0YWdlIG9mIHRoZSBib290c3RyYXAgcHJvY2VzcyBmb3IgY3JlYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNyb3NzLWNvbXBpbGVyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHN0YWdlIGJ1aWxkcyBlbm91Z2ggb2YgdGhlIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgdGhlIEMgbGlicmFyeSwgYW5kIG90aGVyIHBpZWNlcyBuZWVkZWQgdG8gZmluaXNoIGJ1aWxkaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBmaW5hbCBjcm9zcy1jb21waWxlciBpbiBsYXRlciBzdGFnZXMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdG9vbCBpcyBhICJuYXRpdmUiIHBhY2thZ2UgKGkuZS4gaXQgaXMgZGVzaWduZWQgdG8gcnVuIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBob3N0KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgtbGliYy1oZWFkZXJzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnMgbmVlZGVkIGZvciB0aGUgY3Jvc3MtY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWJjLWluaXRpYWw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgQW4gaW5pdGlhbCB2ZXJzaW9uIG9mIHRoZSBFbWJlZGRlZCBHTlUgQyBMaWJyYXJ5CisgICAgICAgICAgICAgICAgICAgIChHTElCQykgbmVlZGVkIHRvIGJvb3RzdHJhcCA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIEdOVSBDIExpYnJhcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgc3RhZ2Ugb2YgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3Jvc3MtY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc3RhZ2UgcmVzdWx0cyBpbiB0aGUgYWN0dWFsIGNyb3NzLWNvbXBpbGVyIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSB1c2VzIHdoZW4gaXQgYnVpbGRzIGFuIGltYWdlIGZvciBhIHRhcmdldGVkCisgICAgICAgICAgICAgICAgICAgIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHJlcGxhY2luZyB0aGlzIGNyb3NzIGNvbXBpbGVyIHRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIGN1c3RvbSB2ZXJzaW9uLCB5b3UgbXVzdCByZXBsYWNlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB0b29sIGlzIGFsc28gYSAibmF0aXZlIiBwYWNrYWdlIChpLmUuIGl0IGlzCisgICAgICAgICAgICAgICAgICAgIGRlc2lnbmVkIHRvIHJ1biBvbiB0aGUgYnVpbGQgaG9zdCkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1ydW50aW1lPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWUgbGlicmFyaWVzIHJlc3VsdGluZyBmcm9tIHRoZSB0b29sY2hhaW4gYm9vdHN0cmFwcGluZworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRvb2wgcHJvZHVjZXMgYSBiaW5hcnkgdGhhdCBjb25zaXN0cyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcnVudGltZSBsaWJyYXJpZXMgbmVlZCBmb3IgdGhlIHRhcmdldGVkIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgYW4gaW5zdGFsbGVyIGZvcgorICAgICAgICAgICAgdGhlIHJlbG9jYXRhYmxlIFNESyB1c2VkIHRvIGRldmVsb3AgYXBwbGljYXRpb25zLgorICAgICAgICAgICAgV2hlbiB5b3UgcnVuIHRoZSBpbnN0YWxsZXIsIGl0IGluc3RhbGxzIHRoZSB0b29sY2hhaW4sIHdoaWNoCisgICAgICAgICAgICBjb250YWlucyB0aGUgZGV2ZWxvcG1lbnQgdG9vbHMgKGUuZy4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+YmludXRpbHMtY3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPiwgYW5kIG90aGVyCisgICAgICAgICAgICA8ZmlsZW5hbWU+bmF0aXZlc2RrLSo8L2ZpbGVuYW1lPiB0b29scyksCisgICAgICAgICAgICB3aGljaCBhcmUgdG9vbHMgbmF0aXZlIHRvIHRoZSBTREsgKGkuZS4gbmF0aXZlIHRvCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0FSQ0gnPjxmaWxlbmFtZT5TREtfQVJDSDwvZmlsZW5hbWU+PC91bGluaz4pLAorICAgICAgICAgICAgeW91IG5lZWQgdG8gY3Jvc3MtY29tcGlsZSBhbmQgdGVzdCB5b3VyIHNvZnR3YXJlLgorICAgICAgICAgICAgVGhlIGZpZ3VyZSBzaG93cyB0aGUgY29tbWFuZHMgeW91IHVzZSB0byBlYXNpbHkgYnVpbGQgb3V0IHRoaXMKKyAgICAgICAgICAgIHRvb2xjaGFpbi4KKyAgICAgICAgICAgIFRoaXMgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGlzIGJ1aWx0IHRvIGV4ZWN1dGUgb24gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgd2hpY2ggbWlnaHQgb3IgbWlnaHQgbm90IGJlIHRoZSBzYW1lCisgICAgICAgICAgICBtYWNoaW5lIGFzIHRoZSBCdWlsZCBIb3N0LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgSWYgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCwKKyAgICAgICAgICAgICAgICB5b3UgY2FuIHRha2UgYWR2YW50YWdlIG9mIHByZS1idWlsdCBpbWFnZXMgdGhhdCBzaGlwIHdpdGggdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBhbmQgYWxyZWFkeSBjb250YWluIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbgorICAgICAgICAgICAgICAgIGluc3RhbGxlcnMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEhlcmUgaXMgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciB0aGUgcmVsb2NhdGFibGUgdG9vbGNoYWluOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBnY2MgLT4gYmludXRpbHMtY3Jvc3NzZGsgLT4gZ2NjLWNyb3Nzc2RrLWluaXRpYWwgLT4gbGludXgtbGliYy1oZWFkZXJzIC0+CisgICAgICAgIGdsaWJjLWluaXRpYWwgLT4gbmF0aXZlc2RrLWdsaWJjIC0+IGdjYy1jcm9zc3NkayAtPiBnY2MtY3Jvc3MtY2FuYWRpYW4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBob3N0J3MgR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpbnV0aWxzLWNyb3Nzc2RrPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBiYXJlIG1pbmltdW0gYmluYXJ5IHV0aWxpdGllcyBuZWVkZWQgaW4gb3JkZXIgdG8gcnVuCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Z2NjLWNyb3Nzc2RrLWluaXRpYWw8L2ZpbGVuYW1lPiBwaGFzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwIG9wZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3Nzc2RrLWluaXRpYWw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgQW4gZWFybHkgc3RhZ2Ugb2YgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciBjcmVhdGluZworICAgICAgICAgICAgICAgICAgICB0aGUgY3Jvc3MtY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc3RhZ2UgYnVpbGRzIGVub3VnaCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zc3NkazwvZmlsZW5hbWU+IGFuZCBzdXBwb3J0aW5nIHBpZWNlcyBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZSBmaW5hbCBzdGFnZSBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgY2FuIHByb2R1Y2UgdGhlCisgICAgICAgICAgICAgICAgICAgIGZpbmlzaGVkIGNyb3NzLWNvbXBpbGVyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRvb2wgaXMgYSAibmF0aXZlIiBiaW5hcnkgdGhhdCBydW5zIG9uIHRoZSBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC1saWJjLWhlYWRlcnM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgSGVhZGVycyBuZWVkZWQgZm9yIHRoZSBjcm9zcy1jb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmMtaW5pdGlhbDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBBbiBpbml0aWFsIHZlcnNpb24gb2YgdGhlIEVtYmVkZGVkIEdMSUJDIG5lZWRlZCB0byBib290c3RyYXAKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5hdGl2ZXNkay1nbGliYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGstZ2xpYmM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIEVtYmVkZGVkIEdMSUJDIG5lZWRlZCB0byBib290c3RyYXAgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nY2MtY3Jvc3NzZGs8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3Nzc2RrPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBzdGFnZSBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICByZWxvY2F0YWJsZSBjcm9zcy1jb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5nY2MtY3Jvc3NzZGs8L2ZpbGVuYW1lPiBpcyBhIHRyYW5zaXRvcnkKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgYW5kIG5ldmVyIGxlYXZlcyB0aGUgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgSXRzIHB1cnBvc2UgaXMgdG8gaGVscCBpbiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBldmVudHVhbCA8ZmlsZW5hbWU+Z2NjLWNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIsIHdoaWNoIGlzIHJlbG9jYXRhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRvb2wgaXMgYWxzbyBhICJuYXRpdmUiIHBhY2thZ2UgKGkuZS4gaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgZGVzaWduZWQgdG8gcnVuIG9uIHRoZSBidWlsZCBob3N0KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCByZWxvY2F0YWJsZSBjcm9zcy1jb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBydW4gb24gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIHRoaXMgdG9vbAorICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBleGVjdXRhYmxlIGNvZGUgdGhhdCBydW5zIG9uIHRoZSB0YXJnZXQgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICBPbmx5IG9uZSBjcm9zcy1jYW5hZGlhbiBjb21waWxlciBpcyBwcm9kdWNlZCBwZXIgYXJjaGl0ZWN0dXJlCisgICAgICAgICAgICAgICAgICAgIHNpbmNlIHRoZXkgY2FuIGJlIHRhcmdldGVkIGF0IGRpZmZlcmVudCBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucworICAgICAgICAgICAgICAgICAgICB1c2luZyBjb25maWd1cmF0aW9ucyBwYXNzZWQgdG8gdGhlIGNvbXBpbGVyIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2lyY3VtdmVudHMgdGhlIG5lZWQgZm9yIG11bHRpcGxlIGNvbXBpbGVycyBhbmQgdGh1cworICAgICAgICAgICAgICAgICAgICByZWR1Y2VzIHRoZSBzaXplIG9mIHRoZSB0b29sY2hhaW5zLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYWR2YW50YWdlcyBnYWluZWQgd2hlbiBidWlsZGluZyBhCisgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaW5zdGFsbGVyLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L3VsaW5rPiIKKyAgICAgICAgICAgIGFwcGVuZGl4IGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ic2hhcmVkLXN0YXRlLWNhY2hlIj4KKyAgICAgICAgPHRpdGxlPlNoYXJlZCBTdGF0ZSBDYWNoZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCeSBkZXNpZ24sIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGJ1aWxkcyBldmVyeXRoaW5nIGZyb20KKyAgICAgICAgICAgIHNjcmF0Y2ggdW5sZXNzCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgorICAgICAgICAgICAgY2FuIGRldGVybWluZSB0aGF0IHBhcnRzIGRvIG5vdCBuZWVkIHRvIGJlIHJlYnVpbHQuCisgICAgICAgICAgICBGdW5kYW1lbnRhbGx5LCBidWlsZGluZyBmcm9tIHNjcmF0Y2ggaXMgYXR0cmFjdGl2ZSBhcyBpdCBtZWFucyBhbGwKKyAgICAgICAgICAgIHBhcnRzIGFyZSBidWlsdCBmcmVzaCBhbmQgbm8gcG9zc2liaWxpdHkgb2Ygc3RhbGUgZGF0YSBleGlzdHMgdGhhdAorICAgICAgICAgICAgY2FuIGNhdXNlIHByb2JsZW1zLgorICAgICAgICAgICAgV2hlbiBkZXZlbG9wZXJzIGhpdCBwcm9ibGVtcywgdGhleSB0eXBpY2FsbHkgZGVmYXVsdCBiYWNrIHRvCisgICAgICAgICAgICBidWlsZGluZyBmcm9tIHNjcmF0Y2ggc28gdGhleSBoYXZlIGEga25vdyBzdGF0ZSBmcm9tIHRoZQorICAgICAgICAgICAgc3RhcnQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJ1aWxkaW5nIGFuIGltYWdlIGZyb20gc2NyYXRjaCBpcyBib3RoIGFuIGFkdmFudGFnZSBhbmQgYQorICAgICAgICAgICAgZGlzYWR2YW50YWdlIHRvIHRoZSBwcm9jZXNzLgorICAgICAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIGJ1aWxkaW5nIGZyb20gc2NyYXRjaAorICAgICAgICAgICAgZW5zdXJlcyB0aGF0IGV2ZXJ5dGhpbmcgaXMgY3VycmVudCBhbmQgc3RhcnRzIGZyb20gYSBrbm93biBzdGF0ZS4KKyAgICAgICAgICAgIEhvd2V2ZXIsIGJ1aWxkaW5nIGZyb20gc2NyYXRjaCBhbHNvIHRha2VzIG11Y2ggbG9uZ2VyIGFzIGl0CisgICAgICAgICAgICBnZW5lcmFsbHkgbWVhbnMgcmVidWlsZGluZyB0aGluZ3MgdGhhdCBkbyBub3QgbmVjZXNzYXJpbHkgbmVlZAorICAgICAgICAgICAgdG8gYmUgcmVidWlsdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50cyBzaGFyZWQgc3RhdGUgY29kZSB0aGF0IHN1cHBvcnRzCisgICAgICAgICAgICBpbmNyZW1lbnRhbCBidWlsZHMuCisgICAgICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNoYXJlZCBzdGF0ZSBjb2RlIGFuc3dlcnMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgcXVlc3Rpb25zIHRoYXQgd2VyZSBmdW5kYW1lbnRhbCByb2FkYmxvY2tzIHdpdGhpbiB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICBpbmNyZW1lbnRhbCBidWlsZCBzdXBwb3J0IHN5c3RlbToKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGF0IHBpZWNlcyBvZiB0aGUgc3lzdGVtIGhhdmUgY2hhbmdlZCBhbmQgd2hhdCBwaWVjZXMgaGF2ZQorICAgICAgICAgICAgICAgICAgICBub3QgY2hhbmdlZD8KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIb3cgYXJlIGNoYW5nZWQgcGllY2VzIG9mIHNvZnR3YXJlIHJlbW92ZWQgYW5kIHJlcGxhY2VkPworICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEhvdyBhcmUgcHJlLWJ1aWx0IGNvbXBvbmVudHMgdGhhdCBkbyBub3QgbmVlZCB0byBiZSByZWJ1aWx0CisgICAgICAgICAgICAgICAgICAgIGZyb20gc2NyYXRjaCB1c2VkIHdoZW4gdGhleSBhcmUgYXZhaWxhYmxlPworICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgdGhlIGZpcnN0IHF1ZXN0aW9uLCB0aGUgYnVpbGQgc3lzdGVtIGRldGVjdHMgY2hhbmdlcyBpbiB0aGUKKyAgICAgICAgICAgICJpbnB1dHMiIHRvIGEgZ2l2ZW4gdGFzayBieSBjcmVhdGluZyBhIGNoZWNrc3VtIChvciBzaWduYXR1cmUpIG9mCisgICAgICAgICAgICB0aGUgdGFzaydzIGlucHV0cy4KKyAgICAgICAgICAgIElmIHRoZSBjaGVja3N1bSBjaGFuZ2VzLCB0aGUgc3lzdGVtIGFzc3VtZXMgdGhlIGlucHV0cyBoYXZlIGNoYW5nZWQKKyAgICAgICAgICAgIGFuZCB0aGUgdGFzayBuZWVkcyB0byBiZSByZXJ1bi4KKyAgICAgICAgICAgIEZvciB0aGUgc2Vjb25kIHF1ZXN0aW9uLCB0aGUgc2hhcmVkIHN0YXRlIChzc3RhdGUpIGNvZGUgdHJhY2tzCisgICAgICAgICAgICB3aGljaCB0YXNrcyBhZGQgd2hpY2ggb3V0cHV0IHRvIHRoZSBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGUgb3V0cHV0IGZyb20gYSBnaXZlbiB0YXNrIGNhbiBiZSByZW1vdmVkLCB1cGdyYWRlZAorICAgICAgICAgICAgb3Igb3RoZXJ3aXNlIG1hbmlwdWxhdGVkLgorICAgICAgICAgICAgVGhlIHRoaXJkIHF1ZXN0aW9uIGlzIHBhcnRseSBhZGRyZXNzZWQgYnkgdGhlIHNvbHV0aW9uIGZvciB0aGUKKyAgICAgICAgICAgIHNlY29uZCBxdWVzdGlvbiBhc3N1bWluZyB0aGUgYnVpbGQgc3lzdGVtIGNhbiBmZXRjaCB0aGUgc3N0YXRlCisgICAgICAgICAgICBvYmplY3RzIGZyb20gcmVtb3RlIGxvY2F0aW9ucyBhbmQgaW5zdGFsbCB0aGVtIGlmIHRoZXkgYXJlIGRlZW1lZAorICAgICAgICAgICAgdG8gYmUgdmFsaWQuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gZG9lcyBub3QgbWFpbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYXMgcGFydCBvZiB0aGUgc2hhcmVkIHN0YXRlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBjb25zaWRlcmF0aW9ucyBleGlzdCB0aGF0IGFmZmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5pbmcgc2hhcmVkIHN0YXRlIGZlZWRzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgYnVpbGQgc3lzdGVtIHdvcmtzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGFuZCBjYW4gdHJhY2sgaW5jcmVtZW50aW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPiBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYXV0b21hdGljYWxseS1pbmNyZW1lbnRpbmctYS1iaW5hcnktcGFja2FnZS1yZXZpc2lvbi1udW1iZXInPkF1dG9tYXRpY2FsbHkgSW5jcmVtZW50aW5nIGEgQmluYXJ5IFBhY2thZ2UgUmV2aXNpb24gTnVtYmVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29kZSBpbiB0aGUgYnVpbGQgc3lzdGVtIHRoYXQgc3VwcG9ydHMgaW5jcmVtZW50YWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcyBpcyBub3Qgc2ltcGxlIGNvZGUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGVjaG5pcXVlcyB0aGF0IGhlbHAgeW91IHdvcmsgYXJvdW5kIGlzc3VlcyByZWxhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICB0byBzaGFyZWQgc3RhdGUgY29kZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi12aWV3aW5nLW1ldGFkYXRhLXVzZWQtdG8tY3JlYXRlLXRoZS1pbnB1dC1zaWduYXR1cmUtb2YtYS1zaGFyZWQtc3RhdGUtdGFzayc+Vmlld2luZyBNZXRhZGF0YSBVc2VkIHRvIENyZWF0ZSB0aGUgSW5wdXQgU2lnbmF0dXJlIG9mIGEgU2hhcmVkIFN0YXRlIFRhc2s8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1pbnZhbGlkYXRpbmctc2hhcmVkLXN0YXRlLXRvLWZvcmNlLWEtdGFzay10by1ydW4nPkludmFsaWRhdGluZyBTaGFyZWQgU3RhdGUgdG8gRm9yY2UgYSBUYXNrIHRvIFJ1bjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMgYm90aCBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSByZXN0IG9mIHRoaXMgc2VjdGlvbiBnb2VzIGludG8gZGV0YWlsIGFib3V0IHRoZSBvdmVyYWxsCisgICAgICAgICAgICBpbmNyZW1lbnRhbCBidWlsZCBhcmNoaXRlY3R1cmUsIHRoZSBjaGVja3N1bXMgKHNpZ25hdHVyZXMpLCBhbmQKKyAgICAgICAgICAgIHNoYXJlZCBzdGF0ZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjb25jZXB0cy1vdmVyYWxsLWFyY2hpdGVjdHVyZSc+CisgICAgICAgICAgICA8dGl0bGU+T3ZlcmFsbCBBcmNoaXRlY3R1cmU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIGRldGVybWluaW5nIHdoYXQgcGFydHMgb2YgdGhlIHN5c3RlbSBuZWVkIHRvIGJlIGJ1aWx0LAorICAgICAgICAgICAgICAgIEJpdEJha2Ugd29ya3Mgb24gYSBwZXItdGFzayBiYXNpcyByYXRoZXIgdGhhbiBhIHBlci1yZWNpcGUKKyAgICAgICAgICAgICAgICBiYXNpcy4KKyAgICAgICAgICAgICAgICBZb3UgbWlnaHQgd29uZGVyIHdoeSB1c2luZyBhIHBlci10YXNrIGJhc2lzIGlzIHByZWZlcnJlZCBvdmVyCisgICAgICAgICAgICAgICAgYSBwZXItcmVjaXBlIGJhc2lzLgorICAgICAgICAgICAgICAgIFRvIGhlbHAgZXhwbGFpbiwgY29uc2lkZXIgaGF2aW5nIHRoZSBJUEsgcGFja2FnaW5nIGJhY2tlbmQKKyAgICAgICAgICAgICAgICBlbmFibGVkIGFuZCB0aGVuIHN3aXRjaGluZyB0byBERUIuCisgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRhc2sgb3V0cHV0cyBhcmUgc3RpbGwgdmFsaWQuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgd2l0aCBhIHBlci1yZWNpcGUgYXBwcm9hY2gsIHRoZSBidWlsZCB3b3VsZCBub3QKKyAgICAgICAgICAgICAgICBpbmNsdWRlIHRoZSA8ZmlsZW5hbWU+LmRlYjwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHdvdWxkIGhhdmUgdG8gaW52YWxpZGF0ZSB0aGUgd2hvbGUgYnVpbGQgYW5kCisgICAgICAgICAgICAgICAgcmVydW4gaXQuCisgICAgICAgICAgICAgICAgUmVydW5uaW5nIGV2ZXJ5dGhpbmcgaXMgbm90IHRoZSBiZXN0IHNvbHV0aW9uLgorICAgICAgICAgICAgICAgIEFsc28sIGluIHRoaXMgY2FzZSwgdGhlIGNvcmUgbXVzdCBiZSAidGF1Z2h0IiBtdWNoIGFib3V0CisgICAgICAgICAgICAgICAgc3BlY2lmaWMgdGFza3MuCisgICAgICAgICAgICAgICAgVGhpcyBtZXRob2RvbG9neSBkb2VzIG5vdCBzY2FsZSB3ZWxsIGFuZCBkb2VzIG5vdCBhbGxvdyB1c2VycworICAgICAgICAgICAgICAgIHRvIGVhc2lseSBhZGQgbmV3IHRhc2tzIGluIGxheWVycyBvciBhcyBleHRlcm5hbCByZWNpcGVzCisgICAgICAgICAgICAgICAgd2l0aG91dCB0b3VjaGluZyB0aGUgcGFja2FnZWQtc3RhZ2luZyBjb3JlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J292ZXJ2aWV3LWNoZWNrc3Vtcyc+CisgICAgICAgICAgICA8dGl0bGU+Q2hlY2tzdW1zIChTaWduYXR1cmVzKTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBzaGFyZWQgc3RhdGUgY29kZSB1c2VzIGEgY2hlY2tzdW0sIHdoaWNoIGlzIGEgdW5pcXVlCisgICAgICAgICAgICAgICAgc2lnbmF0dXJlIG9mIGEgdGFzaydzIGlucHV0cywgdG8gZGV0ZXJtaW5lIGlmIGEgdGFzayBuZWVkcyB0bworICAgICAgICAgICAgICAgIGJlIHJ1biBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIGl0IGlzIGEgY2hhbmdlIGluIGEgdGFzaydzIGlucHV0cyB0aGF0IHRyaWdnZXJzIGEKKyAgICAgICAgICAgICAgICByZXJ1biwgdGhlIHByb2Nlc3MgbmVlZHMgdG8gZGV0ZWN0IGFsbCB0aGUgaW5wdXRzIHRvIGEgZ2l2ZW4KKyAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgIEZvciBzaGVsbCB0YXNrcywgdGhpcyB0dXJucyBvdXQgdG8gYmUgZmFpcmx5IGVhc3kgYmVjYXVzZQorICAgICAgICAgICAgICAgIHRoZSBidWlsZCBwcm9jZXNzIGdlbmVyYXRlcyBhICJydW4iIHNoZWxsIHNjcmlwdCBmb3IgZWFjaCB0YXNrCisgICAgICAgICAgICAgICAgYW5kIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIGNoZWNrc3VtIHRoYXQgZ2l2ZXMgeW91IGEgZ29vZAorICAgICAgICAgICAgICAgIGlkZWEgb2Ygd2hlbiB0aGUgdGFzaydzIGRhdGEgY2hhbmdlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gY29tcGxpY2F0ZSB0aGUgcHJvYmxlbSwgdGhlcmUgYXJlIHRoaW5ncyB0aGF0IHNob3VsZCBub3QgYmUKKyAgICAgICAgICAgICAgICBpbmNsdWRlZCBpbiB0aGUgY2hlY2tzdW0uCisgICAgICAgICAgICAgICAgRmlyc3QsIHRoZXJlIGlzIHRoZSBhY3R1YWwgc3BlY2lmaWMgYnVpbGQgcGF0aCBvZiBhIGdpdmVuCisgICAgICAgICAgICAgICAgdGFzayAtIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgSXQgZG9lcyBub3QgbWF0dGVyIGlmIHRoZSB3b3JrIGRpcmVjdG9yeSBjaGFuZ2VzIGJlY2F1c2UgaXQKKyAgICAgICAgICAgICAgICBzaG91bGQgbm90IGFmZmVjdCB0aGUgb3V0cHV0IGZvciB0YXJnZXQgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgQWxzbywgdGhlIGJ1aWxkIHByb2Nlc3MgaGFzIHRoZSBvYmplY3RpdmUgb2YgbWFraW5nIG5hdGl2ZQorICAgICAgICAgICAgICAgIG9yIGNyb3NzIHBhY2thZ2VzIHJlbG9jYXRhYmxlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBCb3RoIG5hdGl2ZSBhbmQgY3Jvc3MgcGFja2FnZXMgcnVuIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBjcm9zcyBwYWNrYWdlcyBnZW5lcmF0ZSBvdXRwdXQgZm9yIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgY2hlY2tzdW0gdGhlcmVmb3JlIG5lZWRzIHRvIGV4Y2x1ZGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoZSBzaW1wbGlzdGljIGFwcHJvYWNoIGZvciBleGNsdWRpbmcgdGhlIHdvcmsgZGlyZWN0b3J5IGlzIHRvCisgICAgICAgICAgICAgICAgc2V0IDxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT4gdG8gc29tZSBmaXhlZCB2YWx1ZSBhbmQKKyAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIGNoZWNrc3VtIGZvciB0aGUgInJ1biIgc2NyaXB0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbm90aGVyIHByb2JsZW0gcmVzdWx0cyBmcm9tIHRoZSAicnVuIiBzY3JpcHRzIGNvbnRhaW5pbmcKKyAgICAgICAgICAgICAgICBmdW5jdGlvbnMgdGhhdCBtaWdodCBvciBtaWdodCBub3QgZ2V0IGNhbGxlZC4KKyAgICAgICAgICAgICAgICBUaGUgaW5jcmVtZW50YWwgYnVpbGQgc29sdXRpb24gY29udGFpbnMgY29kZSB0aGF0IGZpZ3VyZXMgb3V0CisgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIGJldHdlZW4gc2hlbGwgZnVuY3Rpb25zLgorICAgICAgICAgICAgICAgIFRoaXMgY29kZSBpcyB1c2VkIHRvIHBydW5lIHRoZSAicnVuIiBzY3JpcHRzIGRvd24gdG8gdGhlCisgICAgICAgICAgICAgICAgbWluaW11bSBzZXQsIHRoZXJlYnkgYWxsZXZpYXRpbmcgdGhpcyBwcm9ibGVtIGFuZCBtYWtpbmcgdGhlCisgICAgICAgICAgICAgICAgInJ1biIgc2NyaXB0cyBtdWNoIG1vcmUgcmVhZGFibGUgYXMgYSBib251cy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU28gZmFyLCBzb2x1dGlvbnMgZm9yIHNoZWxsIHNjcmlwdHMgZXhpc3QuCisgICAgICAgICAgICAgICAgV2hhdCBhYm91dCBQeXRob24gdGFza3M/CisgICAgICAgICAgICAgICAgVGhlIHNhbWUgYXBwcm9hY2ggYXBwbGllcyBldmVuIHRob3VnaCB0aGVzZSB0YXNrcyBhcmUgbW9yZQorICAgICAgICAgICAgICAgIGRpZmZpY3VsdC4KKyAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyBuZWVkcyB0byBmaWd1cmUgb3V0IHdoYXQgdmFyaWFibGVzIGEgUHl0aG9uCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gYWNjZXNzZXMgYW5kIHdoYXQgZnVuY3Rpb25zIGl0IGNhbGxzLgorICAgICAgICAgICAgICAgIEFnYWluLCB0aGUgaW5jcmVtZW50YWwgYnVpbGQgc29sdXRpb24gY29udGFpbnMgY29kZSB0aGF0IGZpcnN0CisgICAgICAgICAgICAgICAgZmlndXJlcyBvdXQgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBkZXBlbmRlbmNpZXMsIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgY3JlYXRlcyBhIGNoZWNrc3VtIGZvciB0aGUgZGF0YSB1c2VkIGFzIHRoZSBpbnB1dCB0byB0aGUgdGFzay4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTGlrZSB0aGUgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiBjYXNlLCBzaXR1YXRpb25zIGV4aXN0CisgICAgICAgICAgICAgICAgd2hlcmUgZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBpZ25vcmVkLgorICAgICAgICAgICAgICAgIEZvciB0aGVzZSBzaXR1YXRpb25zLCB5b3UgY2FuIGluc3RydWN0IHRoZSBidWlsZCBwcm9jZXNzIHRvCisgICAgICAgICAgICAgICAgaWdub3JlIGEgZGVwZW5kZW5jeSBieSB1c2luZyBhIGxpbmUgbGlrZSB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRV9BUkNIU1t2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIGVuc3VyZXMgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9BUkNIUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgZG9lcyBub3QgZGVwZW5kIG9uIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgZXZlbiBpZiBpdCBkb2VzIHJlZmVyZW5jZSBpdC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRXF1YWxseSwgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHlvdSBuZWVkIHRvIGFkZCBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICBCaXRCYWtlIGlzIG5vdCBhYmxlIHRvIGZpbmQuCisgICAgICAgICAgICAgICAgWW91IGNhbiBhY2NvbXBsaXNoIHRoaXMgYnkgdXNpbmcgYSBsaW5lIGxpa2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICBQQUNLQUdFX0FSQ0hTW3ZhcmRlcHNdID0gIk1BQ0hJTkUiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBleHBsaWNpdGx5IGFkZHMgdGhlIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBhcyBhIGRlcGVuZGVuY3kgZm9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfQVJDSFM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgYSBjYXNlIHdpdGggaW4tbGluZSBQeXRob24gd2hlcmUKKyAgICAgICAgICAgICAgICBCaXRCYWtlIGlzIG5vdCBhYmxlIHRvIGZpZ3VyZSBvdXQgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIFdoZW4gcnVubmluZyBpbiBkZWJ1ZyBtb2RlIChpLmUuIHVzaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1EREQ8L2ZpbGVuYW1lPiksIEJpdEJha2UgcHJvZHVjZXMgb3V0cHV0IHdoZW4gaXQKKyAgICAgICAgICAgICAgICBkaXNjb3ZlcnMgc29tZXRoaW5nIGZvciB3aGljaCBpdCBjYW5ub3QgZmlndXJlIG91dCBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBoYXMgY3VycmVudGx5IG5vdCBtYW5hZ2VkIHRvIGNvdmVyCisgICAgICAgICAgICAgICAgdGhvc2UgZGVwZW5kZW5jaWVzIGluIGRldGFpbCBhbmQgaXMgYXdhcmUgb2YgdGhlIG5lZWQgdG8gZml4CisgICAgICAgICAgICAgICAgdGhpcyBzaXR1YXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRodXMgZmFyLCB0aGlzIHNlY3Rpb24gaGFzIGxpbWl0ZWQgZGlzY3Vzc2lvbiB0byB0aGUgZGlyZWN0CisgICAgICAgICAgICAgICAgaW5wdXRzIGludG8gYSB0YXNrLgorICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIGJhc2VkIG9uIGRpcmVjdCBpbnB1dHMgaXMgcmVmZXJyZWQgdG8gYXMgdGhlCisgICAgICAgICAgICAgICAgImJhc2VoYXNoIiBpbiB0aGUgY29kZS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgcXVlc3Rpb24gb2YgYSB0YXNrJ3MgaW5kaXJlY3QgaW5wdXRzIHN0aWxsCisgICAgICAgICAgICAgICAgZXhpdHMgLSBpdGVtcyBhbHJlYWR5IGJ1aWx0IGFuZCBwcmVzZW50IGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgVGhlIGNoZWNrc3VtIChvciBzaWduYXR1cmUpIGZvciBhIHBhcnRpY3VsYXIgdGFzayBuZWVkcyB0byBhZGQKKyAgICAgICAgICAgICAgICB0aGUgaGFzaGVzIG9mIGFsbCB0aGUgdGFza3Mgb24gd2hpY2ggdGhlIHBhcnRpY3VsYXIgdGFzaworICAgICAgICAgICAgICAgIGRlcGVuZHMuCisgICAgICAgICAgICAgICAgQ2hvb3Npbmcgd2hpY2ggZGVwZW5kZW5jaWVzIHRvIGFkZCBpcyBhIHBvbGljeSBkZWNpc2lvbi4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgZWZmZWN0IGlzIHRvIGdlbmVyYXRlIGEgbWFzdGVyIGNoZWNrc3VtIHRoYXQKKyAgICAgICAgICAgICAgICBjb21iaW5lcyB0aGUgYmFzZWhhc2ggYW5kIHRoZSBoYXNoZXMgb2YgdGhlIHRhc2sncworICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXQgdGhlIGNvZGUgbGV2ZWwsIGEgdmFyaWV0eSBvZiB3YXlzIGV4aXN0IGJ5IHdoaWNoIGJvdGggdGhlCisgICAgICAgICAgICAgICAgYmFzZWhhc2ggYW5kIHRoZSBkZXBlbmRlbnQgdGFzayBoYXNoZXMgY2FuIGJlIGluZmx1ZW5jZWQuCisgICAgICAgICAgICAgICAgV2l0aGluIHRoZSBCaXRCYWtlIGNvbmZpZ3VyYXRpb24gZmlsZSwgeW91IGNhbiBnaXZlIEJpdEJha2UKKyAgICAgICAgICAgICAgICBzb21lIGV4dHJhIGluZm9ybWF0aW9uIHRvIGhlbHAgaXQgY29uc3RydWN0IHRoZSBiYXNlaGFzaC4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0YXRlbWVudCBlZmZlY3RpdmVseSByZXN1bHRzIGluIGEgbGlzdCBvZgorICAgICAgICAgICAgICAgIGdsb2JhbCB2YXJpYWJsZSBkZXBlbmRlbmN5IGV4Y2x1ZGVzIChpLmUuIHZhcmlhYmxlcyBuZXZlcgorICAgICAgICAgICAgICAgIGluY2x1ZGVkIGluIGFueSBjaGVja3N1bSk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9IQVNIQkFTRV9XSElURUxJU1QgPz0gIlRNUERJUiBGSUxFIFBBVEggUFdEIEJCX1RBU0tIQVNIIEJCUEFUSCBETF9ESVIgXAorICAgICAgICAgU1NUQVRFX0RJUiBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxFX0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFRFUk0gXAorICAgICAgICAgVVNFUiBGSUxFU1BBVEggU1RBR0lOR19ESVJfSE9TVCBTVEFHSU5HX0RJUl9UQVJHRVQgQ09SRUJBU0UgUFJTRVJWX0hPU1QgXAorICAgICAgICAgUFJTRVJWX0RVTVBESVIgUFJTRVJWX0RVTVBGSUxFIFBSU0VSVl9MT0NLRE9XTiBQQVJBTExFTF9NQUtFIFwKKyAgICAgICAgIENDQUNIRV9ESVIgRVhURVJOQUxfVE9PTENIQUlOIENDQUNIRSBDQ0FDSEVfRElTQUJMRSBMSUNFTlNFX1BBVEggU0RLUEtHU1VGRklYIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBleGNsdWRlcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBzaW5jZSB0aGF0IHZhcmlhYmxlIGlzIGFjdHVhbGx5IGNvbnN0cnVjdGVkIGFzIGEgcGF0aCB3aXRoaW4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyBvbiB0aGUgd2hpdGVsaXN0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcnVsZXMgZm9yIGRlY2lkaW5nIHdoaWNoIGhhc2hlcyBvZiBkZXBlbmRlbnQgdGFza3MgdG8KKyAgICAgICAgICAgICAgICBpbmNsdWRlIHRocm91Z2ggZGVwZW5kZW5jeSBjaGFpbnMgYXJlIG1vcmUgY29tcGxleCBhbmQgYXJlCisgICAgICAgICAgICAgICAgZ2VuZXJhbGx5IGFjY29tcGxpc2hlZCB3aXRoIGEgUHl0aG9uIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgIFRoZSBjb2RlIGluIDxmaWxlbmFtZT5tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHk8L2ZpbGVuYW1lPiBzaG93cworICAgICAgICAgICAgICAgIHR3byBleGFtcGxlcyBvZiB0aGlzIGFuZCBhbHNvIGlsbHVzdHJhdGVzIGhvdyB5b3UgY2FuIGluc2VydAorICAgICAgICAgICAgICAgIHlvdXIgb3duIHBvbGljeSBpbnRvIHRoZSBzeXN0ZW0gaWYgc28gZGVzaXJlZC4KKyAgICAgICAgICAgICAgICBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgdHdvIGJhc2ljIHNpZ25hdHVyZSBnZW5lcmF0b3JzCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjb2UtY29yZSc+T0UtQ29yZTwvdWxpbms+CisgICAgICAgICAgICAgICAgdXNlczogICJPRUJhc2ljIiBhbmQgIk9FQmFzaWNIYXNoIi4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBhIGR1bW15ICJub29wIiBzaWduYXR1cmUgaGFuZGxlciBpcyBlbmFibGVkCisgICAgICAgICAgICAgICAgaW4gQml0QmFrZS4KKyAgICAgICAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkIGZyb20gcHJldmlvdXMgdmVyc2lvbnMuCisgICAgICAgICAgICAgICAgT0UtQ29yZSB1c2VzIHRoZSAiT0VCYXNpY0hhc2giIHNpZ25hdHVyZSBoYW5kbGVyIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgICAgICB0aHJvdWdoIHRoaXMgc2V0dGluZyBpbiB0aGUgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCX1NJR05BVFVSRV9IQU5ETEVSID89ICJPRUJhc2ljSGFzaCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlICJPRUJhc2ljSGFzaCIgPGZpbGVuYW1lPkJCX1NJR05BVFVSRV9IQU5ETEVSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBpcyB0aGUgc2FtZSBhcyB0aGUgIk9FQmFzaWMiIHZlcnNpb24gYnV0IGFkZHMgdGhlIHRhc2sgaGFzaCB0bworICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz5zdGFtcCBmaWxlczwvbGluaz4uCisgICAgICAgICAgICAgICAgVGhpcyByZXN1bHRzIGluIGFueSBtZXRhZGF0YSBjaGFuZ2UgdGhhdCBjaGFuZ2VzIHRoZSB0YXNrIGhhc2gsCisgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBjYXVzaW5nIHRoZSB0YXNrIHRvIGJlIHJ1biBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIG5lZWQgdG8gYnVtcAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhbHVlcywgYW5kIGNoYW5nZXMgdG8gbWV0YWRhdGEgYXV0b21hdGljYWxseSByaXBwbGUgYWNyb3NzCisgICAgICAgICAgICAgICAgdGhlIGJ1aWxkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIHdvcnRoIG5vdGluZyB0aGF0IHRoZSBlbmQgcmVzdWx0IG9mIHRoZXNlCisgICAgICAgICAgICAgICAgc2lnbmF0dXJlIGdlbmVyYXRvcnMgaXMgdG8gbWFrZSBzb21lIGRlcGVuZGVuY3kgYW5kIGhhc2gKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhdmFpbGFibGUgdG8gdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVkZXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCX0JBU0VIQVNIX3Rhc2stPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIGhhc2hlcyBmb3IgZWFjaCB0YXNrIGluIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCX0JBU0VIQVNIXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmZpbGVuYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+OjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBoYXNoZXMgZm9yIGVhY2ggZGVwZW5kZW50IHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCSEFTSERFUFNfPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZmlsZW5hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT46PC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0YXNrIGRlcGVuZGVuY2llcyBmb3IgZWFjaCB0YXNrLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQl9UQVNLSEFTSDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGhhc2ggb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzaGFyZWQtc3RhdGUnPgorICAgICAgICAgICAgPHRpdGxlPlNoYXJlZCBTdGF0ZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIENoZWNrc3VtcyBhbmQgZGVwZW5kZW5jaWVzLCBhcyBkaXNjdXNzZWQgaW4gdGhlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgc2VjdGlvbiwgc29sdmUgaGFsZiB0aGUgcHJvYmxlbSBvZiBzdXBwb3J0aW5nIGEgc2hhcmVkIHN0YXRlLgorICAgICAgICAgICAgICAgIFRoZSBvdGhlciBoYWxmIG9mIHRoZSBwcm9ibGVtIGlzIGJlaW5nIGFibGUgdG8gdXNlIGNoZWNrc3VtCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gZHVyaW5nIHRoZSBidWlsZCBhbmQgYmVpbmcgYWJsZSB0byByZXVzZSBvciByZWJ1aWxkCisgICAgICAgICAgICAgICAgc3BlY2lmaWMgY29tcG9uZW50cy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtc3N0YXRlJz48ZmlsZW5hbWU+c3N0YXRlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGNsYXNzIGlzIGEgcmVsYXRpdmVseSBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIGhvdyB0bworICAgICAgICAgICAgICAgICJjYXB0dXJlIiBhIHNuYXBzaG90IG9mIGEgZ2l2ZW4gdGFzay4KKyAgICAgICAgICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IHRoZSBidWlsZCBwcm9jZXNzIGRvZXMgbm90IGNhcmUgYWJvdXQgdGhlCisgICAgICAgICAgICAgICAgc291cmNlIG9mIGEgdGFzaydzIG91dHB1dC4KKyAgICAgICAgICAgICAgICBPdXRwdXQgY291bGQgYmUgZnJlc2hseSBidWlsdCBvciBpdCBjb3VsZCBiZSBkb3dubG9hZGVkIGFuZAorICAgICAgICAgICAgICAgIHVucGFja2VkIGZyb20gc29tZXdoZXJlLgorICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUgYnVpbGQgcHJvY2VzcyBkb2VzIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0CisgICAgICAgICAgICAgICAgaXRzIG9yaWdpbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVHdvIHR5cGVzIG9mIG91dHB1dCBleGlzdC4KKyAgICAgICAgICAgICAgICBPbmUgdHlwZSBpcyBqdXN0IGFib3V0IGNyZWF0aW5nIGEgZGlyZWN0b3J5IGluCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSBpcyB0aGUgb3V0cHV0IG9mIGVpdGhlcgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgVGhlIG90aGVyIHR5cGUgb2Ygb3V0cHV0IG9jY3VycyB3aGVuIGEgc2V0IG9mIGRhdGEgaXMgbWVyZ2VkCisgICAgICAgICAgICAgICAgaW50byBhIHNoYXJlZCBkaXJlY3RvcnkgdHJlZSBzdWNoIGFzIHRoZSBzeXNyb290LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIGhhcyB0cmllZCB0byBrZWVwIHRoZSBkZXRhaWxzIG9mIHRoZQorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIGhpZGRlbiBpbiA8ZmlsZW5hbWU+c3N0YXRlPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgRnJvbSBhIHVzZXIncyBwZXJzcGVjdGl2ZSwgYWRkaW5nIHNoYXJlZCBzdGF0ZSB3cmFwcGluZyB0byBhCisgICAgICAgICAgICAgICAgdGFzayBpcyBhcyBzaW1wbGUgYXMgdGhpcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1kZXBsb3knPjxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZXhhbXBsZSB0YWtlbiBmcm9tIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWRlcGxveSc+PGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBjbGFzczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFUExPWURJUiA9ICIke1dPUktESVJ9L2RlcGxveS0ke1BOfSIKKyAgICAgU1NUQVRFVEFTS1MgKz0gImRvX2RlcGxveSIKKyAgICAgZG9fZGVwbG95W3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7REVQTE9ZRElSfSIKKyAgICAgZG9fZGVwbG95W3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke0RFUExPWV9ESVJfSU1BR0V9IgorCisgICAgIHB5dGhvbiBkb19kZXBsb3lfc2V0c2NlbmUgKCkgeworICAgICAgICAgc3N0YXRlX3NldHNjZW5lKGQpCisgICAgIH0KKyAgICAgYWRkdGFzayBkb19kZXBsb3lfc2V0c2NlbmUKKyAgICAgZG9fZGVwbG95W2RpcnNdID0gIiR7REVQTE9ZRElSfSAke0J9IgorICAgICBkb19kZXBsb3lbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FX0FSQ0h9IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZXhwbGFpbnMgdGhlIHByZXZpb3VzIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWRkaW5nICJkb19kZXBsb3kiIHRvIDxmaWxlbmFtZT5TU1RBVEVUQVNLUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRzIHNvbWUgcmVxdWlyZWQgc3N0YXRlLXJlbGF0ZWQgcHJvY2Vzc2luZywgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtc3N0YXRlJz48ZmlsZW5hbWU+c3N0YXRlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRvIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtZGVwbG95Jz48ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19kZXBsb3lbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtERVBMT1lESVJ9IjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBkZWNsYXJlcyB0aGF0IDxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPiBwbGFjZXMgaXRzCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgaW4gPGZpbGVuYW1lPiR7REVQTE9ZRElSfTwvZmlsZW5hbWU+IHdoZW4gcnVuCisgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxseSAoaS5lLiB3aGVuIG5vdCB1c2luZyB0aGUgc3N0YXRlIGNhY2hlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3V0cHV0IGJlY29tZXMgdGhlIGlucHV0IHRvIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95W3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke0RFUExPWV9ESVJfSU1BR0V9IjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGNhdXNlcyB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkIHRvIDxmaWxlbmFtZT4ke0RFUExPWV9ESVJfSU1BR0V9PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gaXMgbm90IGFscmVhZHkgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlIG9yIGlmIGl0cyBpbnB1dCBjaGVja3N1bQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaWduYXR1cmUpIGhhcyBjaGFuZ2VkIGZyb20gd2hlbiB0aGUgb3V0cHV0IHdhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZCwgdGhlIHRhc2sgcnVucyB0byBwb3B1bGF0ZSB0aGUgc2hhcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgY2FjaGUsIGFmdGVyIHdoaWNoIHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgY2FjaGUgaXMgY29waWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7REVQTE9ZX0RJUl9JTUFHRX08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gaXMgaW4gdGhlIHNoYXJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlIGNhY2hlIGFuZCBpdHMgc2lnbmF0dXJlIGluZGljYXRlcyB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZCBvdXRwdXQgaXMgc3RpbGwgdmFsaWQgKGkuZS4gaWYgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxldmFudCB0YXNrIGlucHV0cyBoYXZlIGNoYW5nZWQpLCB0aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUgY29waWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0bHkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtERVBMT1lfRElSX0lNQUdFfTwvZmlsZW5hbWU+IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19kZXBsb3lfc2V0c2NlbmU8L2ZpbGVuYW1lPiB0YXNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCwgc2tpcHBpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyB0YXNrIGRlZmluaXRpb24gaXMgZ2x1ZSBsb2dpYyBuZWVkZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2UgdGhlIHByZXZpb3VzIHNldHRpbmdzIGVmZmVjdGl2ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcHl0aG9uIGRvX2RlcGxveV9zZXRzY2VuZSAoKSB7CisgICAgICAgICBzc3RhdGVfc2V0c2NlbmUoZCkKKyAgICAgfQorICAgICBhZGR0YXNrIGRvX2RlcGxveV9zZXRzY2VuZQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZV9zZXRzY2VuZSgpPC9maWxlbmFtZT4gdGFrZXMgdGhlIGZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICBhYm92ZSBhcyBpbnB1dCBhbmQgYWNjZWxlcmF0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdGFzayB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIGNhY2hlIGlmIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHRhc2sgd2FzIGFjY2VsZXJhdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZV9zZXRzY2VuZSgpPC9maWxlbmFtZT4gcmV0dXJucyBUcnVlLgorICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBpdCByZXR1cm5zIEZhbHNlLCBhbmQgdGhlIG5vcm1hbAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IHRhc2sgcnVucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNzZXRzY2VuZSc+c2V0c2NlbmU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19kZXBsb3lbZGlyc10gPSAiJHtERVBMT1lESVJ9ICR7Qn0iPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgY3JlYXRlcyA8ZmlsZW5hbWU+JHtERVBMT1lESVJ9PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtCfTwvZmlsZW5hbWU+IGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPiB0YXNrIHJ1bnMsIGFuZCBhbHNvIHNldHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0J9PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPlZhcmlhYmxlIEZsYWdzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gY2FzZXMgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3N0YXRlLWlucHV0ZGlyczwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc3RhdGUtb3V0cHV0ZGlyczwvZmlsZW5hbWU+IHdvdWxkIGJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUsIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZS1wbGFpbmRpcnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gcHJlc2VydmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UEtHRH08L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtQS0dERVNUfTwvZmlsZW5hbWU+IG91dHB1dCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLCB1c2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX3BhY2thZ2Vbc3N0YXRlLXBsYWluZGlyc10gPSAiJHtQS0dEfSAke1BLR0RFU1R9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX2RlcGxveVtzdGFtcC1leHRyYS1pbmZvXSA9ICIke01BQ0hJTkVfQVJDSH0iPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgYXBwZW5kcyBleHRyYSBtZXRhZGF0YSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz5zdGFtcCBmaWxlPC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIG1ldGFkYXRhIG1ha2VzIHRoZSB0YXNrIHNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgICAgICB0byBhIG1hY2hpbmUncyBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3JlZi1iaXRiYWtlLXRhc2tsaXN0Jz5UaGUgVGFzayBMaXN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiB0aGUgPGZpbGVuYW1lPnN0YW1wLWV4dHJhLWluZm88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3N0YXRlLWlucHV0ZGlyczwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZS1vdXRwdXRkaXJzPC9maWxlbmFtZT4gY2FuIGFsc28gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBtdWx0aXBsZSBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGRlY2xhcmVzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEtHREVTVFdPUks8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TSExJQldPUks8L2ZpbGVuYW1lPiBhcyBzaGFyZWQgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IGRpcmVjdG9yaWVzLCB3aGljaCBwb3B1bGF0ZXMgdGhlIHNoYXJlZCBzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUsIGFuZCA8ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TSExJQlNESVI8L2ZpbGVuYW1lPiBhcyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIG91dHB1dCBkaXJlY3RvcmllczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9fcGFja2FnZVtzc3RhdGUtaW5wdXRkaXJzXSA9ICIke1BLR0RFU1RXT1JLfSAke1NITElCU1dPUktESVJ9IgorICAgICBkb19wYWNrYWdlW3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke1BLR0RBVEFfRElSfSAke1NITElCU0RJUn0iCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgbWV0aG9kcyBhbHNvIGluY2x1ZGUgdGhlIGFiaWxpdHkgdG8gdGFrZSBhCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZmlsZSB3aGVuIG1hbmlwdWxhdGluZyBzaGFyZWQgc3RhdGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVzLCBmb3IgY2FzZXMgd2hlcmUgZmlsZSBhZGRpdGlvbnMgb3IgcmVtb3ZhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBzZW5zaXRpdmU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX3BhY2thZ2Vbc3N0YXRlLWxvY2tmaWxlXSA9ICIke1BBQ0tBR0VMT0NLfSIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCZWhpbmQgdGhlIHNjZW5lcywgdGhlIHNoYXJlZCBzdGF0ZSBjb2RlIHdvcmtzIGJ5IGxvb2tpbmcgaW4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNTVEFURV9NSVJST1JTJz48ZmlsZW5hbWU+U1NUQVRFX01JUlJPUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZm9yIHNoYXJlZCBzdGF0ZSBmaWxlcy4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTU1RBVEVfTUlSUk9SUyA/PSAiXAorICAgICBmaWxlOi8vLiogaHR0cDovL3NvbWVzZXJ2ZXIudGxkL3NoYXJlL3NzdGF0ZS9QQVRIO2Rvd25sb2FkZmlsZW5hbWU9UEFUSCBcbiBcCisgICAgIGZpbGU6Ly8uKiBmaWxlOi8vL3NvbWUvbG9jYWwvZGlyL3NzdGF0ZS9QQVRIIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNoYXJlZCBzdGF0ZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT4pIGlzIG9yZ2FuaXplZCBpbnRvCisgICAgICAgICAgICAgICAgICAgIHR3by1jaGFyYWN0ZXIgc3ViZGlyZWN0b3JpZXMsIHdoZXJlIHRoZSBzdWJkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgbmFtZXMgYXJlIGJhc2VkIG9uIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiB0aGUgaGFzaC4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHNoYXJlZCBzdGF0ZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBhIG1pcnJvciBoYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHNhbWUgc3RydWN0dXJlIGFzIDxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT4sIHlvdSBtdXN0CisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgIlBBVEgiIGFzIHBhcnQgb2YgdGhlIFVSSSB0byBlbmFibGUgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICB0byBtYXAgdG8gdGhlIGFwcHJvcHJpYXRlIHN1YmRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBzaGFyZWQgc3RhdGUgcGFja2FnZSB2YWxpZGl0eSBjYW4gYmUgZGV0ZWN0ZWQganVzdCBieQorICAgICAgICAgICAgICAgIGxvb2tpbmcgYXQgdGhlIGZpbGVuYW1lIHNpbmNlIHRoZSBmaWxlbmFtZSBjb250YWlucyB0aGUgdGFzaworICAgICAgICAgICAgICAgIGNoZWNrc3VtIChvciBzaWduYXR1cmUpIGFzIGRlc2NyaWJlZCBlYXJsaWVyIGluIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICBJZiBhIHZhbGlkIHNoYXJlZCBzdGF0ZSBwYWNrYWdlIGlzIGZvdW5kLCB0aGUgYnVpbGQgcHJvY2VzcworICAgICAgICAgICAgICAgIGRvd25sb2FkcyBpdCBhbmQgdXNlcyBpdCB0byBhY2NlbGVyYXRlIHRoZSB0YXNrLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2Vzc2VzIHVzZSB0aGUgPGZpbGVuYW1lPipfc2V0c2NlbmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHRhc2tzIGZvciB0aGUgdGFzayBhY2NlbGVyYXRpb24gcGhhc2UuCisgICAgICAgICAgICAgICAgQml0QmFrZSBnb2VzIHRocm91Z2ggdGhpcyBwaGFzZSBiZWZvcmUgdGhlIG1haW4gZXhlY3V0aW9uCisgICAgICAgICAgICAgICAgY29kZSBhbmQgdHJpZXMgdG8gYWNjZWxlcmF0ZSBhbnkgdGFza3MgZm9yIHdoaWNoIGl0IGNhbiBmaW5kCisgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIElmIGEgc2hhcmVkIHN0YXRlIHBhY2thZ2UgZm9yIGEgdGFzayBpcyBhdmFpbGFibGUsIHRoZQorICAgICAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSBwYWNrYWdlIGlzIHVzZWQuCisgICAgICAgICAgICAgICAgVGhpcyBtZWFucyB0aGUgdGFzayBhbmQgYW55IHRhc2tzIG9uIHdoaWNoIGl0IGlzIGRlcGVuZGVudAorICAgICAgICAgICAgICAgIGFyZSBub3QgZXhlY3V0ZWQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGEgcmVhbCB3b3JsZCBleGFtcGxlLCB0aGUgYWltIGlzIHdoZW4gYnVpbGRpbmcgYW4gSVBLLWJhc2VkCisgICAgICAgICAgICAgICAgaW1hZ2UsIG9ubHkgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfaXBrJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFza3Mgd291bGQgaGF2ZSB0aGVpciBzaGFyZWQgc3RhdGUgcGFja2FnZXMgZmV0Y2hlZCBhbmQKKyAgICAgICAgICAgICAgICBleHRyYWN0ZWQuCisgICAgICAgICAgICAgICAgU2luY2UgdGhlIHN5c3Jvb3QgaXMgbm90IHVzZWQsIGl0IHdvdWxkIG5ldmVyIGdldCBleHRyYWN0ZWQuCisgICAgICAgICAgICAgICAgVGhpcyBpcyBhbm90aGVyIHJlYXNvbiB3aHkgYSB0YXNrLWJhc2VkIGFwcHJvYWNoIGlzIHByZWZlcnJlZAorICAgICAgICAgICAgICAgIG92ZXIgYSByZWNpcGUtYmFzZWQgYXBwcm9hY2gsIHdoaWNoIHdvdWxkIGhhdmUgdG8gaW5zdGFsbCB0aGUKKyAgICAgICAgICAgICAgICBvdXRwdXQgZnJvbSBldmVyeSB0YXNrLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2F1dG9tYXRpY2FsbHktYWRkZWQtcnVudGltZS1kZXBlbmRlbmNpZXMnPgorICAgICAgICA8dGl0bGU+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGFkZHMgY29tbW9uIHR5cGVzIG9mCisgICAgICAgICAgICBydW50aW1lIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHBhY2thZ2VzLCB3aGljaCBtZWFucyB0aGF0IHlvdSBkbyBub3QKKyAgICAgICAgICAgIG5lZWQgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoZSBwYWNrYWdlcyB1c2luZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgVGhyZWUgYXV0b21hdGljIG1lY2hhbmlzbXMgZXhpc3QgKDxmaWxlbmFtZT5zaGxpYmRlcHM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wY2RlcHM8L2ZpbGVuYW1lPiwgYW5kIDxmaWxlbmFtZT5kZXBjaGFpbnM8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgIHRoYXQgaGFuZGxlIHNoYXJlZCBsaWJyYXJpZXMsIHBhY2thZ2UgY29uZmlndXJhdGlvbiAocGtnLWNvbmZpZykKKyAgICAgICAgICAgIG1vZHVsZXMsIGFuZCA8ZmlsZW5hbWU+LWRldjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPiBwYWNrYWdlcywgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgRm9yIG90aGVyIHR5cGVzIG9mIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLCB5b3UgbXVzdCBtYW51YWxseSBkZWNsYXJlCisgICAgICAgICAgICB0aGUgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaGxpYmRlcHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgb2YgZWFjaCByZWNpcGUsIGFsbCBzaGFyZWQgbGlicmFyaWVzIGluc3RhbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGFyZSBsb2NhdGVkLgorICAgICAgICAgICAgICAgICAgICBGb3IgZWFjaCBzaGFyZWQgbGlicmFyeSwgdGhlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGxpYnJhcnkgaXMgcmVnaXN0ZXJlZCBhcyBwcm92aWRpbmcgdGhlIHNoYXJlZAorICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5LgorICAgICAgICAgICAgICAgICAgICBNb3JlIHNwZWNpZmljYWxseSwgdGhlIHBhY2thZ2UgaXMgcmVnaXN0ZXJlZCBhcyBwcm92aWRpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvbmFtZSc+c29uYW1lPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRpbmcgc2hhcmVkLWxpYnJhcnktdG8tcGFja2FnZSBtYXBwaW5nCisgICAgICAgICAgICAgICAgICAgIGlzIHNhdmVkIGdsb2JhbGx5IGluCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QS0dEQVRBX0RJUic+PGZpbGVuYW1lPlBLR0RBVEFfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2VkYXRhJz48ZmlsZW5hbWU+ZG9fcGFja2FnZWRhdGE8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2suPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlNpbXVsdGFuZW91c2x5LCBhbGwgZXhlY3V0YWJsZXMgYW5kIHNoYXJlZCBsaWJyYXJpZXMKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGJ5IHRoZSByZWNpcGUgYXJlIGluc3BlY3RlZCB0byBzZWUgd2hhdCBzaGFyZWQKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIHRoZXkgbGluayBhZ2FpbnN0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZWFjaCBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmN5IHRoYXQgaXMgZm91bmQsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+IGlzIHF1ZXJpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgc2VlIGlmIHNvbWUgcGFja2FnZSAobGlrZWx5IGZyb20gYSBkaWZmZXJlbnQgcmVjaXBlKQorICAgICAgICAgICAgICAgICAgICBjb250YWlucyB0aGUgc2hhcmVkIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgICAgIElmIHN1Y2ggYSBwYWNrYWdlIGlzIGZvdW5kLCBhIHJ1bnRpbWUgZGVwZW5kZW5jeSBpcyBhZGRlZAorICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBwYWNrYWdlIHRoYXQgZGVwZW5kcyBvbiB0aGUgc2hhcmVkIGxpYnJhcnkgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbGlicmFyeS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGF1dG9tYXRpY2FsbHkgYWRkZWQgcnVudGltZSBkZXBlbmRlbmN5IGFsc28KKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMgYSB2ZXJzaW9uIHJlc3RyaWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gcmVzdHJpY3Rpb24gc3BlY2lmaWVzIHRoYXQgYXQgbGVhc3QgdGhlCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSB0aGF0IHByb3ZpZGVzIHRoZSBzaGFyZWQKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyeSBtdXN0IGJlIHVzZWQsIGFzIGlmCisgICAgICAgICAgICAgICAgICAgICI8cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+ICg+PSA8cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFibGU+KSIKKyAgICAgICAgICAgICAgICAgICAgaGFkIGJlZW4gYWRkZWQgdG8gPGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZm9yY2VzIGFuIHVwZ3JhZGUgb2YgdGhlIHBhY2thZ2UgY29udGFpbmluZyB0aGUgc2hhcmVkCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgd2hlbiBpbnN0YWxsaW5nIHRoZSBwYWNrYWdlIHRoYXQgZGVwZW5kcyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyeSwgaWYgbmVlZGVkLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3Ugd2FudCB0byBhdm9pZCBhIHBhY2thZ2UgYmVpbmcgcmVnaXN0ZXJlZCBhcworICAgICAgICAgICAgICAgICAgICBwcm92aWRpbmcgYSBwYXJ0aWN1bGFyIHNoYXJlZCBsaWJyYXJ5IChlLmcuIGJlY2F1c2UgdGhlIGxpYnJhcnkKKyAgICAgICAgICAgICAgICAgICAgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5KSwgdGhlbiBhZGQgdGhlIGxpYnJhcnkgdG8KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSSVZBVEVfTElCUyc+PGZpbGVuYW1lPlBSSVZBVEVfTElCUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW5zaWRlIHRoZSBwYWNrYWdlJ3MgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wY2RlcHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgb2YgZWFjaAorICAgICAgICAgICAgICAgICAgICByZWNpcGUsIGFsbCBwa2ctY29uZmlnIG1vZHVsZXMKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLnBjPC9maWxlbmFtZT4gZmlsZXMpIGluc3RhbGxlZCBieSB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIGFyZSBsb2NhdGVkLgorICAgICAgICAgICAgICAgICAgICBGb3IgZWFjaCBtb2R1bGUsIHRoZSBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcworICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkIGFzIHByb3ZpZGluZyB0aGUgbW9kdWxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIG1vZHVsZS10by1wYWNrYWdlIG1hcHBpbmcgaXMgc2F2ZWQgZ2xvYmFsbHkgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBLR0RBVEFfRElSPC9maWxlbmFtZT4gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+IHRhc2suPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlNpbXVsdGFuZW91c2x5LCBhbGwgcGtnLWNvbmZpZyBtb2R1bGVzIGluc3RhbGxlZCBieQorICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIGFyZSBpbnNwZWN0ZWQgdG8gc2VlIHdoYXQgb3RoZXIgcGtnLWNvbmZpZworICAgICAgICAgICAgICAgICAgICBtb2R1bGVzIHRoZXkgZGVwZW5kIG9uLgorICAgICAgICAgICAgICAgICAgICBBIG1vZHVsZSBpcyBzZWVuIGFzIGRlcGVuZGluZyBvbiBhbm90aGVyIG1vZHVsZSBpZiBpdAorICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhICJSZXF1aXJlczoiIGxpbmUgdGhhdCBzcGVjaWZpZXMgdGhlIG90aGVyIG1vZHVsZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGVhY2ggbW9kdWxlIGRlcGVuZGVuY3ksCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+IGlzIHF1ZXJpZWQgdG8gc2VlIGlmIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBjb250YWlucyB0aGUgbW9kdWxlLgorICAgICAgICAgICAgICAgICAgICBJZiBzdWNoIGEgcGFja2FnZSBpcyBmb3VuZCwgYSBydW50aW1lIGRlcGVuZGVuY3kgaXMgYWRkZWQKKyAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgcGFja2FnZSB0aGF0IGRlcGVuZHMgb24gdGhlIG1vZHVsZSB0byB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5wY2RlcHM8L2ZpbGVuYW1lPiBtZWNoYW5pc20gbW9zdCBvZnRlbgorICAgICAgICAgICAgICAgICAgICAgICAgaW5mZXJzIGRlcGVuZGVuY2llcyBiZXR3ZWVuIDxmaWxlbmFtZT4tZGV2PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlcGNoYWluczwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBJZiBhIHBhY2thZ2UgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+IGRlcGVuZHMgb24gYSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXI8L2ZpbGVuYW1lPiwgdGhlbiA8ZmlsZW5hbWU+Zm9vLWRldjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+Zm9vLWRiZzwvZmlsZW5hbWU+IGFyZSBhbHNvIG1hZGUgdG8gZGVwZW5kIG9uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXItZGV2PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXItZGJnPC9maWxlbmFtZT4sIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICAgICAgVGFraW5nIHRoZSA8ZmlsZW5hbWU+LWRldjwvZmlsZW5hbWU+IHBhY2thZ2VzIGFzIGFuCisgICAgICAgICAgICAgICAgICAgIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+YmFyLWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgbWlnaHQKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBoZWFkZXJzIGFuZCBzaGFyZWQgbGlicmFyeSBzeW1saW5rcyBuZWVkZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvby1kZXY8L2ZpbGVuYW1lPiwgd2hpY2ggc2hvd3MgdGhlIG5lZWQKKyAgICAgICAgICAgICAgICAgICAgZm9yIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSBwYWNrYWdlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGRlcGVuZGVuY2llcyBhZGRlZCBieQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwY2hhaW5zPC9maWxlbmFtZT4gYXJlIGluIHRoZSBmb3JtIG9mCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+Zm9vLWRldjwvZmlsZW5hbWU+IGFsc28gaGFzIGFuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPi1zdHlsZSBkZXBlbmRlbmN5IG9uCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9vPC9maWxlbmFtZT4sIGJlY2F1c2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EU18ke1BOfS1kZXY8L2ZpbGVuYW1lPiAoc2V0IGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4pIGluY2x1ZGVzCisgICAgICAgICAgICAgICAgICAgICAgICAiJHtQTn0iLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRvIGVuc3VyZSB0aGF0IHRoZSBkZXBlbmRlbmN5IGNoYWluIGlzIG5ldmVyIGJyb2tlbiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kZXY8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBhcmUgYWx3YXlzIGdlbmVyYXRlZCBieSBkZWZhdWx0LCBldmVuIGlmIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyB0dXJuIG91dCB0byBiZSBlbXB0eS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQUxMT1dfRU1QVFknPjxmaWxlbmFtZT5BTExPV19FTVBUWTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgZGVwZW5kcyBvbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+IHRhc2sgb2YgZWFjaCByZWNpcGUgaW4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHRocm91Z2ggdXNlIG9mIGEKKyAgICAgICAgICAgIDxmaWxlbmFtZT5bPC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3ZhcmlhYmxlLWZsYWdzJz48ZmlsZW5hbWU+ZGVwdGFzazwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+XTwvZmlsZW5hbWU+CisgICAgICAgICAgICBkZWNsYXJhdGlvbiwgd2hpY2ggZ3VhcmFudGVlcyB0aGF0IHRoZSByZXF1aXJlZAorICAgICAgICAgICAgc2hhcmVkLWxpYnJhcnkvbW9kdWxlLXRvLXBhY2thZ2UgbWFwcGluZyBpbmZvcm1hdGlvbiB3aWxsIGJlIGF2YWlsYWJsZQorICAgICAgICAgICAgd2hlbiBuZWVkZWQgYXMgbG9uZyBhcyA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGhhcyBiZWVuCisgICAgICAgICAgICBjb3JyZWN0bHkgc2V0LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2Zha2Vyb290LWFuZC1wc2V1ZG8nPgorICAgICAgICA8dGl0bGU+RmFrZXJvb3QgYW5kIFBzZXVkbzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTb21lIHRhc2tzIGFyZSBlYXNpZXIgdG8gaW1wbGVtZW50IHdoZW4gYWxsb3dlZCB0byBwZXJmb3JtIGNlcnRhaW4KKyAgICAgICAgICAgIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm9ybWFsbHkgcmVzZXJ2ZWQgZm9yIHRoZSByb290IHVzZXIgKGUuZy4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlKjwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWltYWdlJz48ZmlsZW5hbWU+ZG9faW1hZ2UqPC9maWxlbmFtZT48L3VsaW5rPikuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGFzayBiZW5lZml0cworICAgICAgICAgICAgZnJvbSBiZWluZyBhYmxlIHRvIHNldCB0aGUgVUlEIGFuZCBHSUQgb2YgaW5zdGFsbGVkIGZpbGVzIHRvCisgICAgICAgICAgICBhcmJpdHJhcnkgdmFsdWVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmUgYXBwcm9hY2ggdG8gYWxsb3dpbmcgdGFza3MgdG8gcGVyZm9ybSByb290LW9ubHkgb3BlcmF0aW9ucworICAgICAgICAgICAgd291bGQgYmUgdG8gcmVxdWlyZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgIHRvIHJ1biBhcyByb290LgorICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBtZXRob2QgaXMgY3VtYmVyc29tZSBhbmQgaGFzIHNlY3VyaXR5IGlzc3Vlcy4KKyAgICAgICAgICAgIFRoZSBhcHByb2FjaCB0aGF0IGlzIGFjdHVhbGx5IHVzZWQgaXMgdG8gcnVuIHRhc2tzIHRoYXQgYmVuZWZpdAorICAgICAgICAgICAgZnJvbSByb290IHByaXZpbGVnZXMgaW4gYSAiZmFrZSIgcm9vdCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIFdpdGhpbiB0aGlzIGVudmlyb25tZW50LCB0aGUgdGFzayBhbmQgaXRzIGNoaWxkIHByb2Nlc3NlcyBiZWxpZXZlCisgICAgICAgICAgICB0aGF0IHRoZXkgYXJlIHJ1bm5pbmcgYXMgdGhlIHJvb3QgdXNlciwgYW5kIHNlZSBhbiBpbnRlcm5hbGx5CisgICAgICAgICAgICBjb25zaXN0ZW50IHZpZXcgb2YgdGhlIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICBBcyBsb25nIGFzIGdlbmVyYXRpbmcgdGhlIGZpbmFsIG91dHB1dCAoZS5nLiBhIHBhY2thZ2Ugb3IgYW4gaW1hZ2UpCisgICAgICAgICAgICBkb2VzIG5vdCByZXF1aXJlIHJvb3QgcHJpdmlsZWdlcywgdGhlIGZhY3QgdGhhdCBzb21lIGVhcmxpZXIKKyAgICAgICAgICAgIHN0ZXBzIHJhbiBpbiBhIGZha2Ugcm9vdCBlbnZpcm9ubWVudCBkb2VzIG5vdCBjYXVzZSBwcm9ibGVtcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGNhcGFiaWxpdHkgdG8gcnVuIHRhc2tzIGluIGEgZmFrZSByb290IGVudmlyb25tZW50IGlzIGtub3duIGFzCisgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cDovL21hbi5oZS5uZXQvbWFuMS9mYWtlcm9vdCc+ZmFrZXJvb3Q8L3VsaW5rPiIsCisgICAgICAgICAgICB3aGljaCBpcyBkZXJpdmVkIGZyb20gdGhlIEJpdEJha2Uga2V5d29yZC92YXJpYWJsZQorICAgICAgICAgICAgZmxhZyB0aGF0IHJlcXVlc3RzIGEgZmFrZSByb290IGVudmlyb25tZW50IGZvciBhIHRhc2suCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPiwKKyAgICAgICAgICAgIHRoZSBwcm9ncmFtIHRoYXQgaW1wbGVtZW50cyBmYWtlcm9vdCBpcyBrbm93biBhcyBQc2V1ZG8uCisgICAgICAgICAgICBQc2V1ZG8gb3ZlcnJpZGVzIHN5c3RlbSBjYWxscyBieSB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5MRF9QUkVMT0FEPC9maWxlbmFtZT4sIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGlsbHVzaW9uCisgICAgICAgICAgICBvZiBydW5uaW5nIGFzIHJvb3QuCisgICAgICAgICAgICBUbyBrZWVwIHRyYWNrIG9mICJmYWtlIiBmaWxlIG93bmVyc2hpcCBhbmQgcGVybWlzc2lvbnMgcmVzdWx0aW5nCisgICAgICAgICAgICBmcm9tIG9wZXJhdGlvbnMgdGhhdCByZXF1aXJlIHJvb3QgcGVybWlzc2lvbnMsIFBzZXVkbyB1c2VzCisgICAgICAgICAgICBhbiBTUUxpdGUgMyBkYXRhYmFzZS4KKyAgICAgICAgICAgIFRoaXMgZGF0YWJhc2UgaXMgc3RvcmVkIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fS9wc2V1ZG8vZmlsZXMuZGI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZm9yIGluZGl2aWR1YWwgcmVjaXBlcy4KKyAgICAgICAgICAgIFN0b3JpbmcgdGhlIGRhdGFiYXNlIGluIGEgZmlsZSBhcyBvcHBvc2VkIHRvIGluIG1lbW9yeQorICAgICAgICAgICAgZ2l2ZXMgcGVyc2lzdGVuY2UgYmV0d2VlbiB0YXNrcyBhbmQgYnVpbGRzLCB3aGljaCBpcyBub3QKKyAgICAgICAgICAgIGFjY29tcGxpc2hlZCB1c2luZyBmYWtlcm9vdC4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5DYXV0aW9uPC90aXRsZT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYWRkIHlvdXIgb3duIHRhc2sgdGhhdCBtYW5pcHVsYXRlcyB0aGUgc2FtZSBmaWxlcyBvcgorICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGFzIGEgZmFrZXJvb3QgdGFzaywgdGhlbiB0aGF0IHRhc2sgYWxzbyBuZWVkcyB0bworICAgICAgICAgICAgICAgIHJ1biB1bmRlciBmYWtlcm9vdC4KKyAgICAgICAgICAgICAgICBPdGhlcndpc2UsIHRoZSB0YXNrIGNhbm5vdCBydW4gcm9vdC1vbmx5IG9wZXJhdGlvbnMsIGFuZAorICAgICAgICAgICAgICAgIGNhbm5vdCBzZWUgdGhlIGZha2UgZmlsZSBvd25lcnNoaXAgYW5kIHBlcm1pc3Npb25zIHNldCBieSB0aGUKKyAgICAgICAgICAgICAgICBvdGhlciB0YXNrLgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGFsc28gYWRkIGEgZGVwZW5kZW5jeSBvbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgZ2l2aW5nIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgIGZha2Vyb290IGRvX215dGFzayAoKSB7CisgICAgICAgICAgIC4uLgorICAgICAgIH0KKyAgICAgICBkb19teXRhc2tbZGVwZW5kc10gKz0gInZpcnR1YWwvZmFrZXJvb3QtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUZBS0VST09UJz48ZmlsZW5hbWU+RkFLRVJPT1QqPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgdmFyaWFibGVzIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgWW91IGNhbiBhbHNvIHJlZmVyZW5jZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWJyYXJ5L29zLWFhcHNldWRvMS9pbmRleC5odG1sJz5Qc2V1ZG88L3VsaW5rPiIKKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgIjx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS93cnBzZXVkby9wc2V1ZG8vd2lraS9XaHlOb3RGYWtlcm9vdCc+V2h5IE5vdCBGYWtlcm9vdD88L3VsaW5rPiIKKyAgICAgICAgICAgIGFydGljbGVzIGZvciBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIFBzZXVkby4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1jdXN0b21pemF0aW9uLnhzbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtY3VzdG9taXphdGlvbi54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjIzNjBlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtY3VzdG9taXphdGlvbi54c2wKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0nMS4wJz8+Cis8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczpmbz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvRm9ybWF0IiB2ZXJzaW9uPSIxLjAiPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3IvZG9jYm9vay1taXJyb3IvZG9jYm9vay14c2wtMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCis8IS0tCisKKyAgPHhzbDppbXBvcnQgaHJlZj0iLi4vdGVtcGxhdGUvMS43Ni4xL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCistLT4KKworICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvcGVybWFsaW5rcy54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSInb3ZlcnZpZXctbWFudWFsLXN0eWxlLmNzcyciIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iY2hhcHRlci5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJhcHBlbmRpeC5hdXRvbGFiZWwiIHNlbGVjdD0iQSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24ubGFiZWwuaW5jbHVkZXMuY29tcG9uZW50LmxhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iZ2VuZXJhdGUuaWQuYXR0cmlidXRlcyIgc2VsZWN0PSIxIiAvPgorCis8L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmE5M2NjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwKQEAgLTAsMCArMSw5NzAgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzxjaGFwdGVyIGlkPSdvdmVydmlldy1kZXZlbG9wbWVudC1lbnZpcm9ubWVudCc+Cis8dGl0bGU+VGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3RpdGxlPgorCis8cGFyYT4KKyAgICBUaGlzIGNoYXB0ZXIgdGFrZXMgYSBsb29rIGF0IHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50CisgICAgZW52aXJvbm1lbnQuCisgICAgVGhlIGNoYXB0ZXIgcHJvdmlkZXMgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBjb25jZXB0cyB0aGF0CisgICAgaGVscCB5b3UgdW5kZXJzdGFuZCBob3cgd29yayBpcyBhY2NvbXBsaXNoZWQgaW4gYW4gb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQsCisgICAgd2hpY2ggaXMgdmVyeSBkaWZmZXJlbnQgYXMgY29tcGFyZWQgdG8gd29yayBhY2NvbXBsaXNoZWQgaW4gYSBjbG9zZWQsCisgICAgcHJvcHJpZXRhcnkgZW52aXJvbm1lbnQuCis8L3BhcmE+CisKKzxwYXJhPgorICAgIFNwZWNpZmljYWxseSwgdGhpcyBjaGFwdGVyIGFkZHJlc3NlcyBvcGVuIHNvdXJjZSBwaGlsb3NvcGh5LCBzb3VyY2UKKyAgICByZXBvc2l0b3JpZXMsIHdvcmtmbG93cywgR2l0LCBhbmQgbGljZW5zaW5nLgorPC9wYXJhPgorCis8c2VjdGlvbiBpZD0nb3Blbi1zb3VyY2UtcGhpbG9zb3BoeSc+CisgICAgPHRpdGxlPk9wZW4gU291cmNlIFBoaWxvc29waHk8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIE9wZW4gc291cmNlIHBoaWxvc29waHkgaXMgY2hhcmFjdGVyaXplZCBieSBzb2Z0d2FyZSBkZXZlbG9wbWVudAorICAgICAgICBkaXJlY3RlZCBieSBwZWVyIHByb2R1Y3Rpb24gYW5kIGNvbGxhYm9yYXRpb24gdGhyb3VnaCBhbiBhY3RpdmUKKyAgICAgICAgY29tbXVuaXR5IG9mIGRldmVsb3BlcnMuCisgICAgICAgIENvbnRyYXN0IHRoaXMgdG8gdGhlIG1vcmUgc3RhbmRhcmQgY2VudHJhbGl6ZWQgZGV2ZWxvcG1lbnQgbW9kZWxzCisgICAgICAgIHVzZWQgYnkgY29tbWVyY2lhbCBzb2Z0d2FyZSBjb21wYW5pZXMgd2hlcmUgYSBmaW5pdGUgc2V0IG9mIGRldmVsb3BlcnMKKyAgICAgICAgcHJvZHVjZXMgYSBwcm9kdWN0IGZvciBzYWxlIHVzaW5nIGEgZGVmaW5lZCBzZXQgb2YgcHJvY2VkdXJlcyB0aGF0CisgICAgICAgIHVsdGltYXRlbHkgcmVzdWx0IGluIGFuIGVuZCBwcm9kdWN0IHdob3NlIGFyY2hpdGVjdHVyZSBhbmQgc291cmNlCisgICAgICAgIG1hdGVyaWFsIGFyZSBjbG9zZWQgdG8gdGhlIHB1YmxpYy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgT3BlbiBzb3VyY2UgcHJvamVjdHMgY29uY2VwdHVhbGx5IGhhdmUgZGlmZmVyaW5nIGNvbmN1cnJlbnQgYWdlbmRhcywKKyAgICAgICAgYXBwcm9hY2hlcywgYW5kIHByb2R1Y3Rpb24uCisgICAgICAgIFRoZXNlIGZhY2V0cyBvZiB0aGUgZGV2ZWxvcG1lbnQgcHJvY2VzcyBjYW4gY29tZSBmcm9tIGFueW9uZSBpbiB0aGUKKyAgICAgICAgcHVibGljIChjb21tdW5pdHkpIHdobyBoYXMgYSBzdGFrZSBpbiB0aGUgc29mdHdhcmUgcHJvamVjdC4KKyAgICAgICAgVGhlIG9wZW4gc291cmNlIGVudmlyb25tZW50IGNvbnRhaW5zIG5ldyBjb3B5cmlnaHQsIGxpY2Vuc2luZywgZG9tYWluLAorICAgICAgICBhbmQgY29uc3VtZXIgaXNzdWVzIHRoYXQgZGlmZmVyIGZyb20gdGhlIG1vcmUgdHJhZGl0aW9uYWwgZGV2ZWxvcG1lbnQKKyAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgIEluIGFuIG9wZW4gc291cmNlIGVudmlyb25tZW50LCB0aGUgZW5kIHByb2R1Y3QsIHNvdXJjZSBtYXRlcmlhbCwKKyAgICAgICAgYW5kIGRvY3VtZW50YXRpb24gYXJlIGFsbCBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBhdCBubyBjb3N0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBIGJlbmNobWFyayBleGFtcGxlIG9mIGFuIG9wZW4gc291cmNlIHByb2plY3QgaXMgdGhlIExpbnV4IGtlcm5lbCwKKyAgICAgICAgd2hpY2ggd2FzIGluaXRpYWxseSBjb25jZWl2ZWQgYW5kIGNyZWF0ZWQgYnkgRmlubmlzaCBjb21wdXRlciBzY2llbmNlCisgICAgICAgIHN0dWRlbnQgTGludXMgVG9ydmFsZHMgaW4gMTk5MS4KKyAgICAgICAgQ29udmVyc2VseSwgYSBnb29kIGV4YW1wbGUgb2YgYSBub24tb3BlbiBzb3VyY2UgcHJvamVjdCBpcyB0aGUKKyAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+V2luZG93czwvdHJhZGVtYXJrPiBmYW1pbHkgb2Ygb3BlcmF0aW5nCisgICAgICAgIHN5c3RlbXMgZGV2ZWxvcGVkIGJ5CisgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPk1pY3Jvc29mdDwvdHJhZGVtYXJrPiBDb3Jwb3JhdGlvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2lraXBlZGlhIGhhcyBhIGdvb2QgaGlzdG9yaWNhbCBkZXNjcmlwdGlvbiBvZiB0aGUgT3BlbiBTb3VyY2UKKyAgICAgICAgUGhpbG9zb3BoeQorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZW5fc291cmNlJz5oZXJlPC91bGluaz4uCisgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIGhlbHBmdWwgaW5mb3JtYXRpb24gb24gaG93IHRvIHBhcnRpY2lwYXRlIGluIHRoZQorICAgICAgICBMaW51eCBDb21tdW5pdHkKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xkbi5saW51eGZvdW5kYXRpb24ub3JnL2Jvb2svaG93LXBhcnRpY2lwYXRlLWxpbnV4LWNvbW11bml0eSc+aGVyZTwvdWxpbms+LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2dzLXRoZS1kZXZlbG9wbWVudC1ob3N0Jz4KKyAgICA8dGl0bGU+VGhlIERldmVsb3BtZW50IEhvc3Q8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEEgZGV2ZWxvcG1lbnQgaG9zdCBvcgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+CisgICAgICAgIGlzIGtleSB0byB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgQmVjYXVzZSB0aGUgZ29hbCBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0byBkZXZlbG9wIGltYWdlcyBvcgorICAgICAgICBhcHBsaWNhdGlvbnMgdGhhdCBydW4gb24gZW1iZWRkZWQgaGFyZHdhcmUsIGRldmVsb3BtZW50IG9mIHRob3NlCisgICAgICAgIGltYWdlcyBhbmQgYXBwbGljYXRpb25zIGdlbmVyYWxseSB0YWtlcyBwbGFjZSBvbiBhIHN5c3RlbSBub3QKKyAgICAgICAgaW50ZW5kZWQgdG8gcnVuIHRoZSBzb2Z0d2FyZSAtIHRoZSBkZXZlbG9wbWVudCBob3N0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBZb3UgbmVlZCB0byBzZXQgdXAgYSBkZXZlbG9wbWVudCBob3N0IGluIG9yZGVyIHRvIHVzZSBpdCB3aXRoIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICBNb3N0IGZpbmQgdGhhdCBpdCBpcyBiZXN0IHRvIGhhdmUgYSBuYXRpdmUgTGludXggbWFjaGluZSBmdW5jdGlvbiBhcworICAgICAgICB0aGUgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gdXNlIGEgc3lzdGVtIHRoYXQgZG9lcyBub3QgcnVuIExpbnV4CisgICAgICAgIGFzIGl0cyBvcGVyYXRpbmcgc3lzdGVtIGFzIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgV2hlbiB5b3UgaGF2ZSBhIE1hYyBvciBXaW5kb3dzLWJhc2VkIHN5c3RlbSwgeW91IGNhbiBzZXQgaXQgdXAKKyAgICAgICAgYXMgdGhlIGRldmVsb3BtZW50IGhvc3QgYnkgdXNpbmcKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2Nyb3BzL2Fib3V0Lyc+Q1JPUFM8L3VsaW5rPiwKKyAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+LgorICAgICAgICBPbmNlIHlvdSB0YWtlIHRoZSBzdGVwcyB0byBzZXQgdXAgYSBDUk9QUyBtYWNoaW5lLCB5b3UgZWZmZWN0aXZlbHkKKyAgICAgICAgaGF2ZSBhY2Nlc3MgdG8gYSBzaGVsbCBlbnZpcm9ubWVudCB0aGF0IGlzIHNpbWlsYXIgdG8gd2hhdCB5b3Ugc2VlCisgICAgICAgIHdoZW4gdXNpbmcgYSBMaW51eC1iYXNlZCBkZXZlbG9wbWVudCBob3N0LgorICAgICAgICBGb3IgdGhlIHN0ZXBzIG5lZWRlZCB0byBzZXQgdXAgYSBzeXN0ZW0gdXNpbmcgQ1JPUFMsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdG8tdXNlLWNyb3BzJz5TZXR0aW5nIFVwIHRvIFVzZSBDUk9zcyBQbGF0Zm9ybVMgKENST1BTKTwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91ciBkZXZlbG9wbWVudCBob3N0IGlzIGdvaW5nIHRvIGJlIGEgc3lzdGVtIHRoYXQgcnVucyBhIExpbnV4CisgICAgICAgIGRpc3RyaWJ1dGlvbiwgc3RlcHMgc3RpbGwgZXhpc3QgdGhhdCB5b3UgbXVzdCB0YWtlIHRvIHByZXBhcmUgdGhlCisgICAgICAgIHN5c3RlbSBmb3IgdXNlIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIFlvdSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgTGludXggZGlzdHJpYnV0aW9uIG9uIHRoZSBzeXN0ZW0gaXMKKyAgICAgICAgb25lIHRoYXQgc3VwcG9ydHMgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIFlvdSBhbHNvIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBjb3JyZWN0IHNldCBvZiBob3N0IHBhY2thZ2VzIGFyZQorICAgICAgICBpbnN0YWxsZWQgdGhhdCBhbGxvdyBkZXZlbG9wbWVudCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgRm9yIHRoZSBzdGVwcyBuZWVkZWQgdG8gc2V0IHVwIGEgZGV2ZWxvcG1lbnQgaG9zdCB0aGF0IHJ1bnMgTGludXgsCisgICAgICAgIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtYS1uYXRpdmUtbGludXgtaG9zdCc+U2V0dGluZyBVcCBhIE5hdGl2ZSBMaW51eCBIb3N0PC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBPbmNlIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdCBpcyBzZXQgdXAgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LAorICAgICAgICBzZXZlcmFsIG1ldGhvZHMgZXhpc3QgZm9yIHlvdSB0byBkbyB3b3JrIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgIGVudmlyb25tZW50OgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db21tYW5kIExpbmVzLCBCaXRCYWtlLCBhbmQgU2hlbGxzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVHJhZGl0aW9uYWwgZGV2ZWxvcG1lbnQgaW4gdGhlIFlvY3RvIFByb2plY3QgaW52b2x2ZXMgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCB1c2VzIEJpdEJha2UsIGluIGEgY29tbWFuZC1saW5lIGVudmlyb25tZW50IGZyb20gYSBzaGVsbAorICAgICAgICAgICAgICAgIG9uIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGFjY29tcGxpc2ggdGhpcyBmcm9tIGEgaG9zdCB0aGF0IGlzIGEgbmF0aXZlIExpbnV4CisgICAgICAgICAgICAgICAgbWFjaGluZSBvciBmcm9tIGEgaG9zdCB0aGF0IGhhcyBiZWVuIHNldCB1cCB3aXRoIENST1BTLgorICAgICAgICAgICAgICAgIEVpdGhlciB3YXksIHlvdSBjcmVhdGUsIG1vZGlmeSwgYW5kIGJ1aWxkIGltYWdlcyBhbmQKKyAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgYWxsIHdpdGhpbiBhIHNoZWxsLWJhc2VkIGVudmlyb25tZW50IHVzaW5nCisgICAgICAgICAgICAgICAgY29tcG9uZW50cyBhbmQgdG9vbHMgYXZhaWxhYmxlIHRocm91Z2ggeW91ciBMaW51eCBkaXN0cmlidXRpb24KKyAgICAgICAgICAgICAgICBhbmQgdGhlIFlvY3RvIFByb2plY3QuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGEgZ2VuZXJhbCBmbG93IG9mIHRoZSBidWlsZCBwcm9jZWR1cmVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1idWlsZGluZy1hLXNpbXBsZS1pbWFnZSc+QnVpbGRpbmcgYSBTaW1wbGUgSW1hZ2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BtZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgb2YgQlNQcyBpbnZvbHZlcyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCB0bworICAgICAgICAgICAgICAgIGNyZWF0ZSBhbmQgdGVzdCBsYXllcnMgdGhhdCBhbGxvdyBlYXN5IGRldmVsb3BtZW50IG9mCisgICAgICAgICAgICAgICAgaW1hZ2VzIGFuZCBhcHBsaWNhdGlvbnMgdGFyZ2V0ZWQgZm9yIHNwZWNpZmljIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgIFRvIGRldmVsb3BtZW50IEJTUHMsIHlvdSBuZWVkIHRvIHRha2Ugc29tZSBhZGRpdGlvbmFsIHN0ZXBzCisgICAgICAgICAgICAgICAgYmV5b25kIHdoYXQgd2FzIGRlc2NyaWJlZCBpbiBzZXR0aW5nIHVwIGEgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyc+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPgorICAgICAgICAgICAgICAgIHByb3ZpZGVzIEJTUC1yZWxhdGVkIGRldmVsb3BtZW50IGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIEZvciBzcGVjaWZpY3Mgb24gZGV2ZWxvcG1lbnQgaG9zdCBwcmVwYXJhdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNwcmVwYXJpbmcteW91ci1idWlsZC1ob3N0LXRvLXdvcmstd2l0aC1ic3AtbGF5ZXJzJz5QcmVwYXJpbmcgWW91ciBCdWlsZCBIb3N0IHRvIFdvcmsgV2l0aCBCU1AgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKKyAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+S2VybmVsIERldmVsb3BtZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBnb2luZyB0byBiZSBkZXZlbG9waW5nIGtlcm5lbHMgdXNpbmcgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgUHJvamVjdCB5b3UgbGlrZWx5IHdpbGwgYmUgdXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBBIHdvcmtmbG93IHVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gbWFrZXMga2VybmVsCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgcXVpY2tlciBieSByZWR1Y2luZyBpdGVyYXRpb24gY3ljbGUgdGltZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7Jz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPgorICAgICAgICAgICAgICAgIHByb3ZpZGVzIGtlcm5lbC1yZWxhdGVkIGRldmVsb3BtZW50IGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIEZvciBzcGVjaWZpY3Mgb24gZGV2ZWxvcG1lbnQgaG9zdCBwcmVwYXJhdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjcHJlcGFyaW5nLXRoZS1idWlsZC1ob3N0LXRvLXdvcmstb24tdGhlLWtlcm5lbCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0IHRvIFdvcmsgb24gdGhlIEtlcm5lbDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNpbmcgdGhlIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IElERTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIE9uZSBvZiB0d28gWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBtZXRob2RzIHRoYXQgaW52b2x2ZXMgYW4KKyAgICAgICAgICAgICAgICBpbnRlcmZhY2UgdGhhdCBlZmZlY3RpdmVseSBwdXRzIHRoZSBZb2N0byBQcm9qZWN0IGludG8gdGhlCisgICAgICAgICAgICAgICAgYmFja2dyb3VuZCBpcyB0aGUgcG9wdWxhciBFY2xpcHNlIElERS4KKyAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBvZiBkZXZlbG9wbWVudCBpcyBhZHZhbnRhZ2VvdXMgaWYgeW91IGFyZSBhbHJlYWR5CisgICAgICAgICAgICAgICAgZmFtaWxpYXIgd2l0aCB3b3JraW5nIHdpdGhpbiBFY2xpcHNlLgorICAgICAgICAgICAgICAgIERldmVsb3BtZW50IGlzIHN1cHBvcnRlZCB0aHJvdWdoIGEgcGx1Z2luIHRoYXQgeW91IGluc3RhbGwKKyAgICAgICAgICAgICAgICBvbnRvIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Gb3Igc3RlcHMgdGhhdCBzaG93IHlvdSBob3cgdG8gc2V0IHVwIHlvdXIgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBob3N0IHRvIHVzZSB0aGUgRWNsaXBzZSBZb2N0byBQcm9qZWN0IHBsdWdpbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZWNsaXBzZS1wcm9qZWN0Jz5EZXZlbG9waW5nIEFwcGxpY2F0aW9ucyBVc2luZyA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPjwvdWxpbms+IgorICAgICAgICAgICAgICAgIENoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzaW5nIFRvYXN0ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgb3RoZXIgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBtZXRob2QgdGhhdCBpbnZvbHZlcyBhbgorICAgICAgICAgICAgICAgIGludGVyZmFjZSB0aGF0IGVmZmVjdGl2ZWx5IHB1dHMgdGhlIFlvY3RvIFByb2plY3QgaW50byB0aGUKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kIGlzIFRvYXN0ZXIuCisgICAgICAgICAgICAgICAgVG9hc3RlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgVGhlIGludGVyZmFjZSBlbmFibGVzIHlvdSB0byBjb25maWd1cmUgYW5kIHJ1biB5b3VyIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBhYm91dCBidWlsZHMgaXMgY29sbGVjdGVkIGFuZCBzdG9yZWQgaW4gYSBkYXRhYmFzZS4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBUb2FzdGVyIHRvIGNvbmZpZ3VyZSBhbmQgc3RhcnQgYnVpbGRzIG9uIG11bHRpcGxlCisgICAgICAgICAgICAgICAgcmVtb3RlIGJ1aWxkIHNlcnZlcnMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIHN0ZXBzIHRoYXQgc2hvdyB5b3UgaG93IHRvIHNldCB1cCB5b3VyIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgaG9zdCB0byB1c2UgVG9hc3RlciBhbmQgb24gaG93IHRvIHVzZSBUb2FzdGVyIGluIGdlbmVyYWwsCisgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPgorICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gbWFpbnRhaW5zIGNvbXBsZXRlIHNvdXJjZSByZXBvc2l0b3JpZXMgZm9yIGFsbAorICAgICAgICBZb2N0byBQcm9qZWN0IGZpbGVzIGF0CisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+PC91bGluaz4uCisgICAgICAgIFRoaXMgd2ViLWJhc2VkIHNvdXJjZSBjb2RlIGJyb3dzZXIgaXMgb3JnYW5pemVkIGludG8gY2F0ZWdvcmllcyBieQorICAgICAgICBmdW5jdGlvbiBzdWNoIGFzIElERSBQbHVnaW5zLCBNYXRjaGJveCwgUG9reSwgWW9jdG8gTGludXggS2VybmVsLCBhbmQKKyAgICAgICAgc28gZm9ydGguCisgICAgICAgIEZyb20gdGhlIGludGVyZmFjZSwgeW91IGNhbiBjbGljayBvbiBhbnkgcGFydGljdWxhciBpdGVtIGluIHRoZSAiTmFtZSIKKyAgICAgICAgY29sdW1uIGFuZCBzZWUgdGhlIFVSTCBhdCB0aGUgYm90dG9tIG9mIHRoZSBwYWdlIHRoYXQgeW91IG5lZWQgdG8gY2xvbmUKKyAgICAgICAgYSBHaXQgcmVwb3NpdG9yeSBmb3IgdGhhdCBwYXJ0aWN1bGFyIGl0ZW0uCisgICAgICAgIEhhdmluZyBhIGxvY2FsIEdpdCByZXBvc2l0b3J5IG9mIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgIHdoaWNoIGlzIHVzdWFsbHkgbmFtZWQgInBva3kiLCBhbGxvd3MKKyAgICAgICAgeW91IHRvIG1ha2UgY2hhbmdlcywgY29udHJpYnV0ZSB0byB0aGUgaGlzdG9yeSwgYW5kIHVsdGltYXRlbHkgZW5oYW5jZQorICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCdzIHRvb2xzLCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzLCBhbmQgc28gZm9ydGguCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBhbnkgc3VwcG9ydGVkIHJlbGVhc2Ugb2YgWW9jdG8gUHJvamVjdCwgeW91IGNhbiBhbHNvIGdvIHRvIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPiBhbmQKKyAgICAgICAgc2VsZWN0IHRoZSAiRE9XTkxPQURTIiBpdGVtIGZyb20gdGhlICJTT0ZUV0FSRSIgbWVudSBhbmQgZ2V0IGEKKyAgICAgICAgcmVsZWFzZWQgdGFyYmFsbCBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LCBhbnkKKyAgICAgICAgc3VwcG9ydGVkIEJTUCB0YXJiYWxsLCBvciBZb2N0byBQcm9qZWN0IHRvb2xzLgorICAgICAgICBVbnBhY2tpbmcgdGhlc2UgdGFyYmFsbHMgZ2l2ZXMgeW91IGEgc25hcHNob3Qgb2YgdGhlIHJlbGVhc2VkCisgICAgICAgIGZpbGVzLgorICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNvbW1lbmRlZCBtZXRob2QgZm9yIHNldHRpbmcgdXAgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgZmlsZXMgZm9yIHN1cHBvcnRlZCBCU1BzCisgICAgICAgICAgICAgICAgICAgIChlLmcuLCA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+KSBpcyB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2l0Jz5HaXQ8L2xpbms+IHRvIGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGFsd2F5cyB3b3JrIGluIG1hdGNoaW5nIGJyYW5jaGVzIGZvciBib3RoCisgICAgICAgICAgICAgICAgICAgIHRoZSBzZWxlY3RlZCBCU1AgcmVwb3NpdG9yeSBhbmQgdGhlIFNvdXJjZSBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGNoZWNrZWQgb3V0IHRoZSAibWFzdGVyIiBicmFuY2gKKyAgICAgICAgICAgICAgICAgICAgb2YgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBhbmQgeW91IGFyZSBnb2luZyB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiwgYmUgc3VyZSB0byBjaGVja291dCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIm1hc3RlciIgYnJhbmNoIG9mIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSW4gc3VtbWFyeSwgaGVyZSBpcyB3aGVyZSB5b3UgY2FuIGdldCB0aGUgcHJvamVjdCBmaWxlcyBuZWVkZWQgZm9yCisgICAgICAgIGRldmVsb3BtZW50OgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdzb3VyY2UtcmVwb3NpdG9yaWVzJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzOjwvdWxpbms+CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIGFyZWEgY29udGFpbnMgSURFIFBsdWdpbnMsIE1hdGNoYm94LCBQb2t5LCBQb2t5IFN1cHBvcnQsCisgICAgICAgICAgICAgICAgVG9vbHMsIFlvY3RvIExpbnV4IEtlcm5lbCwgYW5kIFlvY3RvIE1ldGFkYXRhIExheWVycy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGNyZWF0ZSBsb2NhbCBjb3BpZXMgb2YgR2l0IHJlcG9zaXRvcmllcyBmb3IgZWFjaCBvZgorICAgICAgICAgICAgICAgIHRoZXNlIGFyZWFzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iNGluIiAvPgorICAgICAgICAgICAgICAgIEZvciBzdGVwcyBvbiBob3cgdG8gdmlldyBhbmQgYWNjZXNzIHRoZXNlIHVwc3RyZWFtIEdpdAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNhY2Nlc3Npbmctc291cmNlLXJlcG9zaXRvcmllcyc+QWNjZXNzaW5nIFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBTZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48YW5jaG9yIGlkPSdpbmRleC1kb3dubG9hZHMnIC8+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzLyc+SW5kZXggb2YgL3JlbGVhc2VzOjwvdWxpbms+CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIGlzIGFuIGluZGV4IG9mIHJlbGVhc2VzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICB0aGUgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4KKyAgICAgICAgICAgICAgICBZb2N0byBQbHVnLWluLCBtaXNjZWxsYW5lb3VzIHN1cHBvcnQsIFBva3ksIFBzZXVkbywgaW5zdGFsbGVycworICAgICAgICAgICAgICAgIGZvciBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zLCBhbmQgYWxsIHJlbGVhc2VkIHZlcnNpb25zIG9mCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBpbiB0aGUgZm9ybSBvZiBpbWFnZXMgb3IgdGFyYmFsbHMuCisgICAgICAgICAgICAgICAgRG93bmxvYWRpbmcgYW5kIGV4dHJhY3RpbmcgdGhlc2UgZmlsZXMgZG9lcyBub3QgcHJvZHVjZSBhIGxvY2FsCisgICAgICAgICAgICAgICAgY29weSBvZiB0aGUgR2l0IHJlcG9zaXRvcnkgYnV0IHJhdGhlciBhIHNuYXBzaG90IG9mIGEKKyAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHJlbGVhc2Ugb3IgaW1hZ2UuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSIzLjVpbiIgLz4KKyAgICAgICAgICAgICAgICBGb3Igc3RlcHMgb24gaG93IHRvIHZpZXcgYW5kIGFjY2VzcyB0aGVzZSBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNhY2Nlc3NpbmctaW5kZXgtb2YtcmVsZWFzZXMnPkFjY2Vzc2luZyBJbmRleCBvZiBSZWxlYXNlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdkb3dubG9hZHMtcGFnZSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJET1dOTE9BRFMiIHBhZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3Qgd2Vic2l0ZSBpbmNsdWRlcyBhICJET1dOTE9BRFMiIHBhZ2UKKyAgICAgICAgICAgICAgICBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlICJTT0ZUV0FSRSIgbWVudSB0aGF0IGFsbG93cyB5b3UgdG8KKyAgICAgICAgICAgICAgICBkb3dubG9hZCBhbnkgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB0b29sLCBhbmQgQm9hcmQgU3VwcG9ydAorICAgICAgICAgICAgICAgIFBhY2thZ2UgKEJTUCkgaW4gdGFyYmFsbCBmb3JtLgorICAgICAgICAgICAgICAgIFRoZSB0YXJiYWxscyBhcmUgc2ltaWxhciB0byB0aG9zZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy8nPkluZGV4IG9mIC9yZWxlYXNlczo8L3VsaW5rPgorICAgICAgICAgICAgICAgIGFyZWEuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3lwLWRvd25sb2FkLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjRpbiIgLz4KKyAgICAgICAgICAgICAgICBGb3Igc3RlcHMgb24gaG93IHRvIHVzZSB0aGUgIkRPV05MT0FEUyIgcGFnZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy10aGUtZG93bmxvYWRzLXBhZ2UnPlVzaW5nIHRoZSBEb3dubG9hZHMgUGFnZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdncy1naXQtd29ya2Zsb3dzLWFuZC10aGUteW9jdG8tcHJvamVjdCc+CisgICAgPHRpdGxlPkdpdCBXb3JrZmxvd3MgYW5kIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBEZXZlbG9waW5nIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IGxpa2VseSByZXF1aXJlcyB0aGUgdXNlIG9mCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPi4KKyAgICAgICAgR2l0IGlzIGEgZnJlZSwgb3BlbiBzb3VyY2UgZGlzdHJpYnV0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbQorICAgICAgICB1c2VkIGFzIHBhcnQgb2YgbWFueSBjb2xsYWJvcmF0aXZlIGRlc2lnbiBlbnZpcm9ubWVudHMuCisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyB3b3JrZmxvdyBjb25jZXB0cyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBhbmQKKyAgICAgICAgR2l0LgorICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgaW5mb3JtYXRpb24gY292ZXJzIGJhc2ljIHByYWN0aWNlcyB0aGF0IGRlc2NyaWJlCisgICAgICAgIHJvbGVzIGFuZCBhY3Rpb25zIGluIGEgY29sbGFib3JhdGl2ZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBJZiB5b3UgYXJlIGZhbWlsaWFyIHdpdGggdGhpcyB0eXBlIG9mIGRldmVsb3BtZW50IGVudmlyb25tZW50LCB5b3UKKyAgICAgICAgICAgIG1pZ2h0IG5vdCB3YW50IHRvIHJlYWQgdGhpcyBzZWN0aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGZpbGVzIGFyZSBtYWludGFpbmVkIHVzaW5nIEdpdCBpbiAiYnJhbmNoZXMiCisgICAgICAgIHdob3NlIEdpdCBoaXN0b3JpZXMgdHJhY2sgZXZlcnkgY2hhbmdlIGFuZCB3aG9zZSBzdHJ1Y3R1cmVzCisgICAgICAgIHByb3ZpZGUgYnJhbmNoZXMgZm9yIGFsbCBkaXZlcmdpbmcgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgQWx0aG91Z2ggdGhlcmUgaXMgbm8gbmVlZCB0byB1c2UgR2l0LCBtYW55IG9wZW4gc291cmNlIHByb2plY3RzIGRvIHNvLgorICAgIDxwYXJhPgorCisgICAgPC9wYXJhPgorICAgICAgICBGb3IgdGhlIFlvY3RvIFByb2plY3QsIGEga2V5IGluZGl2aWR1YWwgY2FsbGVkIHRoZSAibWFpbnRhaW5lciIgaXMKKyAgICAgICAgcmVzcG9uc2libGUgZm9yIHRoZSBpbnRlZ3JpdHkgb2YgdGhlICJtYXN0ZXIiIGJyYW5jaCBvZiBhIGdpdmVuIEdpdAorICAgICAgICByZXBvc2l0b3J5LgorICAgICAgICBUaGUgIm1hc3RlciIgYnJhbmNoIGlzIHRoZSDigJx1cHN0cmVhbeKAnSByZXBvc2l0b3J5IGZyb20gd2hpY2ggZmluYWwgb3IKKyAgICAgICAgbW9zdCByZWNlbnQgYnVpbGRzIG9mIGEgcHJvamVjdCBvY2N1ci4KKyAgICAgICAgVGhlIG1haW50YWluZXIgaXMgcmVzcG9uc2libGUgZm9yIGFjY2VwdGluZyBjaGFuZ2VzIGZyb20gb3RoZXIKKyAgICAgICAgZGV2ZWxvcGVycyBhbmQgZm9yIG9yZ2FuaXppbmcgdGhlIHVuZGVybHlpbmcgYnJhbmNoIHN0cnVjdHVyZSB0bworICAgICAgICByZWZsZWN0IHJlbGVhc2Ugc3RyYXRlZ2llcyBhbmQgc28gZm9ydGguCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGZpbmRpbmcgb3V0IHdobyBpcyByZXNwb25zaWJsZSBmb3IgKG1haW50YWlucykKKyAgICAgICAgICAgIGEgcGFydGljdWxhciBhcmVhIG9mIGNvZGUgaW4gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5IGFsc28gaGFzIGFuCisgICAgICAgIHVwc3RyZWFtIGNvbnRyaWJ1dGlvbiBHaXQgcmVwb3NpdG9yeSBuYW1lZAorICAgICAgICA8ZmlsZW5hbWU+cG9reS1jb250cmliPC9maWxlbmFtZT4uCisgICAgICAgIFlvdSBjYW4gc2VlIGFsbCB0aGUgYnJhbmNoZXMgaW4gdGhpcyByZXBvc2l0b3J5IHVzaW5nIHRoZSB3ZWIgaW50ZXJmYWNlCisgICAgICAgIG9mIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiBvcmdhbml6ZWQKKyAgICAgICAgd2l0aGluIHRoZSAiUG9reSBTdXBwb3J0IiBhcmVhLgorICAgICAgICBUaGVzZSBicmFuY2hlcyBob2xkIGNoYW5nZXMgKGNvbW1pdHMpIHRvIHRoZSBwcm9qZWN0IHRoYXQgaGF2ZSBiZWVuCisgICAgICAgIHN1Ym1pdHRlZCBvciBjb21taXR0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgdGVhbSBhbmQgYnkKKyAgICAgICAgY29tbXVuaXR5IG1lbWJlcnMgd2hvIGNvbnRyaWJ1dGUgdG8gdGhlIHByb2plY3QuCisgICAgICAgIFRoZSBtYWludGFpbmVyIGRldGVybWluZXMgaWYgdGhlIGNoYW5nZXMgYXJlIHF1YWxpZmllZCB0byBiZSBtb3ZlZAorICAgICAgICBmcm9tIHRoZSAiY29udHJpYiIgYnJhbmNoZXMgaW50byB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQKKyAgICAgICAgcmVwb3NpdG9yeS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRGV2ZWxvcGVycyAoaW5jbHVkaW5nIGNvbnRyaWJ1dGluZyBjb21tdW5pdHkgbWVtYmVycykgY3JlYXRlIGFuZAorICAgICAgICBtYWludGFpbiBjbG9uZWQgcmVwb3NpdG9yaWVzIG9mIHVwc3RyZWFtIGJyYW5jaGVzLgorICAgICAgICBUaGUgY2xvbmVkIHJlcG9zaXRvcmllcyBhcmUgbG9jYWwgdG8gdGhlaXIgZGV2ZWxvcG1lbnQgcGxhdGZvcm1zIGFuZAorICAgICAgICBhcmUgdXNlZCB0byBkZXZlbG9wIGNoYW5nZXMuCisgICAgICAgIFdoZW4gYSBkZXZlbG9wZXIgaXMgc2F0aXNmaWVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgb3IgY2hhbmdlLAorICAgICAgICB0aGV5ICJwdXNoIiB0aGUgY2hhbmdlIHRvIHRoZSBhcHByb3ByaWF0ZSAiY29udHJpYiIgcmVwb3NpdG9yeS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRGV2ZWxvcGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgdGhlaXIgbG9jYWwgcmVwb3NpdG9yeQorICAgICAgICB1cC10by1kYXRlIHdpdGggd2hhdGV2ZXIgdXBzdHJlYW0gYnJhbmNoIHRoZXkgYXJlIHdvcmtpbmcgYWdhaW5zdC4KKyAgICAgICAgVGhleSBhcmUgYWxzbyByZXNwb25zaWJsZSBmb3Igc3RyYWlnaHRlbmluZyBvdXQgYW55IGNvbmZsaWN0cyB0aGF0CisgICAgICAgIG1pZ2h0IGFyaXNlIHdpdGhpbiBmaWxlcyB0aGF0IGFyZSBiZWluZyB3b3JrZWQgb24gc2ltdWx0YW5lb3VzbHkgYnkKKyAgICAgICAgbW9yZSB0aGFuIG9uZSBwZXJzb24uCisgICAgICAgIEFsbCB0aGlzIHdvcmsgaXMgZG9uZSBsb2NhbGx5IG9uIHRoZSBkZXZlbG9wbWVudCBob3N0IGJlZm9yZQorICAgICAgICBhbnl0aGluZyBpcyBwdXNoZWQgdG8gYSAiY29udHJpYiIgYXJlYSBhbmQgZXhhbWluZWQgYXQgdGhlIG1haW50YWluZXLigJlzCisgICAgICAgIGxldmVsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBIHNvbWV3aGF0IGZvcm1hbCBtZXRob2QgZXhpc3RzIGJ5IHdoaWNoIGRldmVsb3BlcnMgY29tbWl0IGNoYW5nZXMKKyAgICAgICAgYW5kIHB1c2ggdGhlbSBpbnRvIHRoZSAiY29udHJpYiIgYXJlYSBhbmQgc3Vic2VxdWVudGx5IHJlcXVlc3QgdGhhdAorICAgICAgICB0aGUgbWFpbnRhaW5lciBpbmNsdWRlIHRoZW0gaW50byBhbiB1cHN0cmVhbSBicmFuY2guCisgICAgICAgIFRoaXMgcHJvY2VzcyBpcyBjYWxsZWQg4oCcc3VibWl0dGluZyBhIHBhdGNo4oCdIG9yICJzdWJtaXR0aW5nIGEgY2hhbmdlLiIKKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHN1Ym1pdHRpbmcgcGF0Y2hlcyBhbmQgY2hhbmdlcywgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSW4gc3VtbWFyeSwgYSBzaW5nbGUgcG9pbnQgb2YgZW50cnkKKyAgICAgICAgZXhpc3RzIGZvciBjaGFuZ2VzIGludG8gYSAibWFzdGVyIiBvciBkZXZlbG9wbWVudCBicmFuY2ggb2YgdGhlCisgICAgICAgIEdpdCByZXBvc2l0b3J5LCB3aGljaCBpcyBjb250cm9sbGVkIGJ5IHRoZSBwcm9qZWN04oCZcyBtYWludGFpbmVyLgorICAgICAgICBBbmQsIGEgc2V0IG9mIGRldmVsb3BlcnMgZXhpc3Qgd2hvIGluZGVwZW5kZW50bHkgZGV2ZWxvcCwgdGVzdCwgYW5kCisgICAgICAgIHN1Ym1pdCBjaGFuZ2VzIHRvICJjb250cmliIiBhcmVhcyBmb3IgdGhlIG1haW50YWluZXIgdG8gZXhhbWluZS4KKyAgICAgICAgVGhlIG1haW50YWluZXIgdGhlbiBjaG9vc2VzIHdoaWNoIGNoYW5nZXMgYXJlIGdvaW5nIHRvIGJlY29tZSBhCisgICAgICAgIHBlcm1hbmVudCBwYXJ0IG9mIHRoZSBwcm9qZWN0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZ2l0LXdvcmtmbG93LnBuZyIgd2lkdGg9IjZpbiIgZGVwdGg9IjNpbiIgYWxpZ249ImxlZnQiIHNjYWxlZml0PSIxIiAvPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGlsZSBlYWNoIGRldmVsb3BtZW50IGVudmlyb25tZW50IGlzIHVuaXF1ZSwgdGhlcmUgYXJlIHNvbWUgYmVzdAorICAgICAgICBwcmFjdGljZXMgb3IgbWV0aG9kcyB0aGF0IGhlbHAgZGV2ZWxvcG1lbnQgcnVuIHNtb290aGx5LgorICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHNvbWUgb2YgdGhlc2UgcHJhY3RpY2VzLgorICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBHaXQgd29ya2Zsb3dzLCBzZWUgdGhlIHdvcmtmbG93IHRvcGljcyBpbgorICAgICAgICB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2Jvb2suZ2l0LXNjbS5jb20nPkdpdCBDb21tdW5pdHkgQm9vazwvdWxpbms+LgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIFNtYWxsIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJdCBpcyBiZXN0IHRvIGtlZXAgdGhlIGNoYW5nZXMgeW91IGNvbW1pdCBzbWFsbCBhcyBjb21wYXJlZCB0bworICAgICAgICAgICAgICAgIGJ1bmRsaW5nIG1hbnkgZGlzcGFyYXRlIGNoYW5nZXMgaW50byBhIHNpbmdsZSBjb21taXQuCisgICAgICAgICAgICAgICAgVGhpcyBwcmFjdGljZSBub3Qgb25seSBrZWVwcyB0aGluZ3MgbWFuYWdlYWJsZSBidXQgYWxzbyBhbGxvd3MKKyAgICAgICAgICAgICAgICB0aGUgbWFpbnRhaW5lciB0byBtb3JlIGVhc2lseSBpbmNsdWRlIG9yIHJlZnVzZSBjaGFuZ2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIENvbXBsZXRlIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIGdvb2QgcHJhY3RpY2UgdG8gbGVhdmUgdGhlIHJlcG9zaXRvcnkgaW4gYQorICAgICAgICAgICAgICAgIHN0YXRlIHRoYXQgYWxsb3dzIHlvdSB0byBzdGlsbCBzdWNjZXNzZnVsbHkgYnVpbGQgeW91ciBwcm9qZWN0LgorICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBkbyBub3QgY29tbWl0IGhhbGYgb2YgYSBmZWF0dXJlLAorICAgICAgICAgICAgICAgIHRoZW4gYWRkIHRoZSBvdGhlciBoYWxmIGFzIGEgc2VwYXJhdGUsIGxhdGVyIGNvbW1pdC4KKyAgICAgICAgICAgICAgICBFYWNoIGNvbW1pdCBzaG91bGQgdGFrZSB5b3UgZnJvbSBvbmUgYnVpbGRhYmxlIHByb2plY3Qgc3RhdGUKKyAgICAgICAgICAgICAgICB0byBhbm90aGVyIGJ1aWxkYWJsZSBzdGF0ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlIEJyYW5jaGVzIExpYmVyYWxseTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEl0IGlzIHZlcnkgZWFzeSB0byBjcmVhdGUsIHVzZSwgYW5kIGRlbGV0ZSBsb2NhbCBicmFuY2hlcyBpbgorICAgICAgICAgICAgICAgIHlvdXIgd29ya2luZyBHaXQgcmVwb3NpdG9yeSBvbiB0aGUgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIG5hbWUgdGhlc2UgYnJhbmNoZXMgYW55dGhpbmcgeW91IGxpa2UuCisgICAgICAgICAgICAgICAgSXQgaXMgaGVscGZ1bCB0byBnaXZlIHRoZW0gbmFtZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJ0aWN1bGFyCisgICAgICAgICAgICAgICAgZmVhdHVyZSBvciBjaGFuZ2Ugb24gd2hpY2ggeW91IGFyZSB3b3JraW5nLgorICAgICAgICAgICAgICAgIE9uY2UgeW91IGFyZSBkb25lIHdpdGggYSBmZWF0dXJlIG9yIGNoYW5nZSBhbmQgaGF2ZSBtZXJnZWQgaXQKKyAgICAgICAgICAgICAgICBpbnRvIHlvdXIgbG9jYWwgbWFzdGVyIGJyYW5jaCwgc2ltcGx5IGRpc2NhcmQgdGhlIHRlbXBvcmFyeQorICAgICAgICAgICAgICAgIGJyYW5jaC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWVyZ2UgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2l0IG1lcmdlPC9maWxlbmFtZT4gY29tbWFuZCBhbGxvd3MgeW91IHRvIHRha2UKKyAgICAgICAgICAgICAgICB0aGUgY2hhbmdlcyBmcm9tIG9uZSBicmFuY2ggYW5kIGZvbGQgdGhlbSBpbnRvIGFub3RoZXIgYnJhbmNoLgorICAgICAgICAgICAgICAgIFRoaXMgcHJvY2VzcyBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgd2hlbiBtb3JlIHRoYW4gYSBzaW5nbGUKKyAgICAgICAgICAgICAgICBkZXZlbG9wZXIgbWlnaHQgYmUgd29ya2luZyBvbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICBmZWF0dXJlLgorICAgICAgICAgICAgICAgIE1lcmdpbmcgY2hhbmdlcyBhbHNvIGF1dG9tYXRpY2FsbHkgaWRlbnRpZmllcyBhbnkgY29sbGlzaW9ucworICAgICAgICAgICAgICAgIG9yICJjb25mbGljdHMiIHRoYXQgbWlnaHQgaGFwcGVuIGFzIGEgcmVzdWx0IG9mIHRoZSBzYW1lIGxpbmVzCisgICAgICAgICAgICAgICAgb2YgY29kZSBiZWluZyBhbHRlcmVkIGJ5IHR3byBkaWZmZXJlbnQgZGV2ZWxvcGVycy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFuYWdlIEJyYW5jaGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQmVjYXVzZSBicmFuY2hlcyBhcmUgZWFzeSB0byB1c2UsIHlvdSBzaG91bGQgdXNlIGEgc3lzdGVtCisgICAgICAgICAgICAgICAgd2hlcmUgYnJhbmNoZXMgaW5kaWNhdGUgdmFyeWluZyBsZXZlbHMgb2YgY29kZSByZWFkaW5lc3MuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gaGF2ZSBhICJ3b3JrIiBicmFuY2ggdG8gZGV2ZWxvcCBpbiwgYQorICAgICAgICAgICAgICAgICJ0ZXN0IiBicmFuY2ggd2hlcmUgdGhlIGNvZGUgb3IgY2hhbmdlIGlzIHRlc3RlZCwgYSAic3RhZ2UiCisgICAgICAgICAgICAgICAgYnJhbmNoIHdoZXJlIGNoYW5nZXMgYXJlIHJlYWR5IHRvIGJlIGNvbW1pdHRlZCwgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgIEFzIHlvdXIgcHJvamVjdCBkZXZlbG9wcywgeW91IGNhbiBtZXJnZSBjb2RlIGFjcm9zcyB0aGUKKyAgICAgICAgICAgICAgICBicmFuY2hlcyB0byByZWZsZWN0IGV2ZXItaW5jcmVhc2luZyBzdGFibGUgc3RhdGVzIG9mIHRoZQorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgUHVzaCBhbmQgUHVsbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBwdXNoLXB1bGwgd29ya2Zsb3cgaXMgYmFzZWQgb24gdGhlIGNvbmNlcHQgb2YgZGV2ZWxvcGVycworICAgICAgICAgICAgICAgICJwdXNoaW5nIiBsb2NhbCBjb21taXRzIHRvIGEgcmVtb3RlIHJlcG9zaXRvcnksIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgdXN1YWxseSBhIGNvbnRyaWJ1dGlvbiByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFRoaXMgd29ya2Zsb3cgaXMgYWxzbyBiYXNlZCBvbiBkZXZlbG9wZXJzICJwdWxsaW5nIiBrbm93bgorICAgICAgICAgICAgICAgIHN0YXRlcyBvZiB0aGUgcHJvamVjdCBkb3duIGludG8gdGhlaXIgbG9jYWwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgVGhlIHdvcmtmbG93IGVhc2lseSBhbGxvd3MgeW91IHRvIHB1bGwgY2hhbmdlcyBzdWJtaXR0ZWQgYnkKKyAgICAgICAgICAgICAgICBvdGhlciBkZXZlbG9wZXJzIGZyb20gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkgaW50byB5b3VyCisgICAgICAgICAgICAgICAgd29yayBhcmVhIGVuc3VyaW5nIHRoYXQgeW91IGhhdmUgdGhlIG1vc3QgcmVjZW50IHNvZnR3YXJlCisgICAgICAgICAgICAgICAgb24gd2hpY2ggdG8gZGV2ZWxvcC4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBoYXMgdHdvIHNjcmlwdHMgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHRoYXQgc2hpcCB3aXRoIHRoZQorICAgICAgICAgICAgICAgIHJlbGVhc2UgdG8gZmFjaWxpdGF0ZSB0aGlzIHdvcmtmbG93LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBzY3JpcHRzIGluIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZm9sZGVyIG9mIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVzZSBzY3JpcHRzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3B1c2hpbmctYS1jaGFuZ2UtdXBzdHJlYW0nPlVzaW5nIFNjcmlwdHMgdG8gUHVzaCBhIENoYW5nZSBVcHN0cmVhbSBhbmQgUmVxdWVzdCBhIFB1bGw8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGF0Y2ggV29ya2Zsb3c6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIHdvcmtmbG93IGFsbG93cyB5b3UgdG8gbm90aWZ5IHRoZSBtYWludGFpbmVyIHRocm91Z2ggYW4KKyAgICAgICAgICAgICAgICBlbWFpbCB0aGF0IHlvdSBoYXZlIGEgY2hhbmdlIChvciBwYXRjaCkgeW91IHdvdWxkIGxpa2UKKyAgICAgICAgICAgICAgICBjb25zaWRlcmVkIGZvciB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBUbyBzZW5kIHRoaXMgdHlwZSBvZiBjaGFuZ2UsIHlvdSBmb3JtYXQgdGhlIHBhdGNoIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgc2VuZCB0aGUgZW1haWwgdXNpbmcgdGhlIEdpdCBjb21tYW5kcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlc2Ugc2NyaXB0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2dpdCc+CisgICAgPHRpdGxlPkdpdDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBHaXQsIHdoaWNoIGlzIGEKKyAgICAgICAgZnJlZSwgb3BlbiBzb3VyY2UgZGlzdHJpYnV0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbS4KKyAgICAgICAgR2l0IHN1cHBvcnRzIGRpc3RyaWJ1dGVkIGRldmVsb3BtZW50LCBub24tbGluZWFyIGRldmVsb3BtZW50LAorICAgICAgICBhbmQgY2FuIGhhbmRsZSBsYXJnZSBwcm9qZWN0cy4KKyAgICAgICAgSXQgaXMgYmVzdCB0aGF0IHlvdSBoYXZlIHNvbWUgZnVuZGFtZW50YWwgdW5kZXJzdGFuZGluZworICAgICAgICBvZiBob3cgR2l0IHRyYWNrcyBwcm9qZWN0cyBhbmQgaG93IHRvIHdvcmsgd2l0aCBHaXQgaWYKKyAgICAgICAgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgZm9yIGRldmVsb3BtZW50LgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBxdWljayBvdmVydmlldyBvZiBob3cgR2l0IHdvcmtzIGFuZAorICAgICAgICBwcm92aWRlcyB5b3Ugd2l0aCBhIHN1bW1hcnkgb2Ygc29tZSBlc3NlbnRpYWwgR2l0IGNvbW1hbmRzLgorICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEdpdCwgc2VlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBkb3dubG9hZCBHaXQsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGFkZAorICAgICAgICAgICAgICAgICAgICBHaXQgdG8geW91ciBzeXN0ZW0gdGhyb3VnaCB5b3VyIGRpc3RyaWJ1dGlvbidzICJzb2Z0d2FyZQorICAgICAgICAgICAgICAgICAgICBzdG9yZSIgKGUuZy4gZm9yIFVidW50dSwgdXNlIHRoZSBVYnVudHUgU29mdHdhcmUgZmVhdHVyZSkuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgR2l0IGRvd25sb2FkIHBhZ2UsIHNlZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vZG93bmxvYWQnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBiZXlvbmQgdGhlIGludHJvZHVjdG9yeSBuYXR1cmUgaW4gdGhpcworICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNsb2NhdGluZy15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+TG9jYXRpbmcgWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVwb3NpdG9yaWVzLXRhZ3MtYW5kLWJyYW5jaGVzJz4KKyAgICAgICAgPHRpdGxlPlJlcG9zaXRvcmllcywgVGFncywgYW5kIEJyYW5jaGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBicmllZmx5IGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIGFuZCBhbHNvIGluIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dzLWdpdC13b3JrZmxvd3MtYW5kLXRoZS15b2N0by1wcm9qZWN0Jz5HaXQgV29ya2Zsb3dzIGFuZCB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLCB0aGUgWW9jdG8gUHJvamVjdCBtYWludGFpbnMgc291cmNlIHJlcG9zaXRvcmllcyBhdAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz48L3VsaW5rPi4KKyAgICAgICAgICAgIElmIHlvdSBsb29rIGF0IHRoaXMgd2ViLWludGVyZmFjZSBvZiB0aGUgcmVwb3NpdG9yaWVzLCBlYWNoIGl0ZW0KKyAgICAgICAgICAgIGlzIGEgc2VwYXJhdGUgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEdpdCByZXBvc2l0b3JpZXMgdXNlIGJyYW5jaGluZyB0ZWNobmlxdWVzIHRoYXQgdHJhY2sgY29udGVudAorICAgICAgICAgICAgY2hhbmdlIChub3QgZmlsZXMpIHdpdGhpbiBhIHByb2plY3QgKGUuZy4gYSBuZXcgZmVhdHVyZSBvciB1cGRhdGVkCisgICAgICAgICAgICBkb2N1bWVudGF0aW9uKS4KKyAgICAgICAgICAgIENyZWF0aW5nIGEgdHJlZS1saWtlIHN0cnVjdHVyZSBiYXNlZCBvbiBwcm9qZWN0IGRpdmVyZ2VuY2UgYWxsb3dzCisgICAgICAgICAgICBmb3IgZXhjZWxsZW50IGhpc3RvcmljYWwgaW5mb3JtYXRpb24gb3ZlciB0aGUgbGlmZSBvZiBhIHByb2plY3QuCisgICAgICAgICAgICBUaGlzIG1ldGhvZG9sb2d5IGFsc28gYWxsb3dzIGZvciBhbiBlbnZpcm9ubWVudCBmcm9tIHdoaWNoIHlvdSBjYW4KKyAgICAgICAgICAgIGRvIGxvdHMgb2YgbG9jYWwgZXhwZXJpbWVudGF0aW9uIG9uIHByb2plY3RzIGFzIHlvdSBkZXZlbG9wCisgICAgICAgICAgICBjaGFuZ2VzIG9yIG5ldyBmZWF0dXJlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSBHaXQgcmVwb3NpdG9yeSByZXByZXNlbnRzIGFsbCBkZXZlbG9wbWVudCBlZmZvcnRzIGZvciBhIGdpdmVuCisgICAgICAgICAgICBwcm9qZWN0LgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBHaXQgcmVwb3NpdG9yeSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGNvbnRhaW5zCisgICAgICAgICAgICBhbGwgY2hhbmdlcyBhbmQgZGV2ZWxvcG1lbnRzIGZvciB0aGF0IHJlcG9zaXRvcnkgb3ZlciB0aGUgY291cnNlCisgICAgICAgICAgICBvZiBpdHMgZW50aXJlIGxpZmUuCisgICAgICAgICAgICBUaGF0IG1lYW5zIHRoYXQgYWxsIGNoYW5nZXMgdGhhdCBtYWtlIHVwIGFsbCByZWxlYXNlcyBhcmUgY2FwdHVyZWQuCisgICAgICAgICAgICBUaGUgcmVwb3NpdG9yeSBtYWludGFpbnMgYSBjb21wbGV0ZSBoaXN0b3J5IG9mIGNoYW5nZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIGEgbG9jYWwgY29weSBvZiBhbnkgcmVwb3NpdG9yeSBieSAiY2xvbmluZyIgaXQKKyAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT5naXQgY2xvbmU8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgV2hlbiB5b3UgY2xvbmUgYSBHaXQgcmVwb3NpdG9yeSwgeW91IGVuZCB1cCB3aXRoIGFuIGlkZW50aWNhbAorICAgICAgICAgICAgY29weSBvZiB0aGUgcmVwb3NpdG9yeSBvbiB5b3VyIGRldmVsb3BtZW50IHN5c3RlbS4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgYSBsb2NhbCBjb3B5IG9mIGEgcmVwb3NpdG9yeSwgeW91IGNhbiB0YWtlIHN0ZXBzIHRvCisgICAgICAgICAgICBkZXZlbG9wIGxvY2FsbHkuCisgICAgICAgICAgICBGb3IgZXhhbXBsZXMgb24gaG93IHRvIGNsb25lIEdpdCByZXBvc2l0b3JpZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNsb2NhdGluZy15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+TG9jYXRpbmcgWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IEdpdCB0cmFja3MgY29udGVudCBjaGFuZ2UgYW5kCisgICAgICAgICAgICBub3QgZmlsZXMuCisgICAgICAgICAgICBHaXQgdXNlcyAiYnJhbmNoZXMiIHRvIG9yZ2FuaXplIGRpZmZlcmVudCBkZXZlbG9wbWVudCBlZmZvcnRzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgaGFzCisgICAgICAgICAgICBzZXZlcmFsIGJyYW5jaGVzIHRoYXQgaW5jbHVkZSB0aGUgY3VycmVudCAiJkRJU1RST19OQU1FX05PX0NBUDsiCisgICAgICAgICAgICBicmFuY2gsIHRoZSAibWFzdGVyIiBicmFuY2gsIGFuZCBtYW55IGJyYW5jaGVzIGZvciBwYXN0CisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2VzLgorICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIHRoZSBicmFuY2hlcyBieSBnb2luZyB0bworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL3Bva3kvJz48L3VsaW5rPiBhbmQKKyAgICAgICAgICAgIGNsaWNraW5nIG9uIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L3JlZnMvaGVhZHMnPlsuLi5dPC91bGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgbGluayBiZW5lYXRoIHRoZSAiQnJhbmNoIiBoZWFkaW5nLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBFYWNoIG9mIHRoZXNlIGJyYW5jaGVzIHJlcHJlc2VudHMgYSBzcGVjaWZpYyBhcmVhIG9mIGRldmVsb3BtZW50LgorICAgICAgICAgICAgVGhlICJtYXN0ZXIiIGJyYW5jaCByZXByZXNlbnRzIHRoZSBjdXJyZW50IG9yIG1vc3QgcmVjZW50CisgICAgICAgICAgICBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgIEFsbCBvdGhlciBicmFuY2hlcyByZXByZXNlbnQgb2Zmc2hvb3RzIG9mIHRoZSAibWFzdGVyIiBicmFuY2guCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgYSBHaXQgcmVwb3NpdG9yeSwgdGhlIGNvcHkgaGFzCisgICAgICAgICAgICB0aGUgc2FtZSBzZXQgb2YgYnJhbmNoZXMgYXMgdGhlIG9yaWdpbmFsLgorICAgICAgICAgICAgVGhpcyBtZWFucyB5b3UgY2FuIHVzZSBHaXQgdG8gY3JlYXRlIGEgbG9jYWwgd29ya2luZyBhcmVhCisgICAgICAgICAgICAoYWxzbyBjYWxsZWQgYSBicmFuY2gpIHRoYXQgdHJhY2tzIGEgc3BlY2lmaWMgZGV2ZWxvcG1lbnQgYnJhbmNoCisgICAgICAgICAgICBmcm9tIHRoZSB1cHN0cmVhbSBzb3VyY2UgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICBpbiBvdGhlciB3b3JkcywgeW91IGNhbiBkZWZpbmUgeW91ciBsb2NhbCBHaXQgZW52aXJvbm1lbnQgdG8KKyAgICAgICAgICAgIHdvcmsgb24gYW55IGRldmVsb3BtZW50IGJyYW5jaCBpbiB0aGUgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIFRvIGhlbHAgaWxsdXN0cmF0ZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlIEdpdCBjb21tYW5kczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKKyAgICAgJCBjZCBwb2t5CisgICAgICQgZ2l0IGNoZWNrb3V0IC1iICZESVNUUk9fTkFNRV9OT19DQVA7IG9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUgYWZ0ZXIgbW92aW5nIHRvIHRoZSBob21lIGRpcmVjdG9yeSwgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNsb25lPC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzIGEKKyAgICAgICAgICAgIGxvY2FsIGNvcHkgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICBCeSBkZWZhdWx0LCBHaXQgY2hlY2tzIG91dCB0aGUgIm1hc3RlciIgYnJhbmNoIGZvciB5b3VyIHdvcmsuCisgICAgICAgICAgICBBZnRlciBjaGFuZ2luZyB0aGUgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIG5ldyBsb2NhbCByZXBvc2l0b3J5CisgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSwgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNoZWNrb3V0PC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzCisgICAgICAgICAgICBhbmQgY2hlY2tzIG91dCBhIGxvY2FsIGJyYW5jaCBuYW1lZCAiJkRJU1RST19OQU1FX05PX0NBUDsiLCB3aGljaAorICAgICAgICAgICAgdHJhY2tzIHRoZSB1cHN0cmVhbSAib3JpZ2luLyZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2guCisgICAgICAgICAgICBDaGFuZ2VzIHlvdSBtYWtlIHdoaWxlIGluIHRoaXMgYnJhbmNoIHdvdWxkIHVsdGltYXRlbHkgYWZmZWN0CisgICAgICAgICAgICB0aGUgdXBzdHJlYW0gIiZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2ggb2YgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgd2hlbiB5b3UgY3JlYXRlIGFuZCBjaGVja291dCBhCisgICAgICAgICAgICBsb2NhbCB3b3JraW5nIGJyYW5jaCBiYXNlZCBvbiBhIGJyYW5jaCBuYW1lLAorICAgICAgICAgICAgeW91ciBsb2NhbCBlbnZpcm9ubWVudCBtYXRjaGVzIHRoZSAidGlwIiBvZiB0aGF0IHBhcnRpY3VsYXIKKyAgICAgICAgICAgIGRldmVsb3BtZW50IGJyYW5jaCBhdCB0aGUgdGltZSB5b3UgY3JlYXRlZCB5b3VyIGxvY2FsIGJyYW5jaCwKKyAgICAgICAgICAgIHdoaWNoIGNvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBmaWxlcyBpbiB0aGUgIm1hc3RlciIgYnJhbmNoCisgICAgICAgICAgICBvZiB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBjcmVhdGluZyBhbmQgY2hlY2tpbmcgb3V0IGEgbG9jYWwgYnJhbmNoIGJhc2VkIG9uCisgICAgICAgICAgICB0aGUgIiZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2ggbmFtZSBpcyBub3QgdGhlIHNhbWUgYXMKKyAgICAgICAgICAgIGNoZWNraW5nIG91dCB0aGUgIm1hc3RlciIgYnJhbmNoIGluIHRoZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgS2VlcCByZWFkaW5nIHRvIHNlZSBob3cgeW91IGNyZWF0ZSBhIGxvY2FsIHNuYXBzaG90IG9mIGEgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgUmVsZWFzZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgR2l0IHVzZXMgInRhZ3MiIHRvIG1hcmsgc3BlY2lmaWMgY2hhbmdlcyBpbiBhIHJlcG9zaXRvcnkgYnJhbmNoCisgICAgICAgICAgICBzdHJ1Y3R1cmUuCisgICAgICAgICAgICBUeXBpY2FsbHksIGEgdGFnIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpYWwgcG9pbnQgc3VjaCBhcyB0aGUgZmluYWwKKyAgICAgICAgICAgIGNoYW5nZSAob3IgY29tbWl0KSBiZWZvcmUgYSBwcm9qZWN0IGlzIHJlbGVhc2VkLgorICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlIHRhZ3MgdXNlZCB3aXRoIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAorICAgICAgICAgICAgcmVwb3NpdG9yeSBieSBnb2luZyB0bworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL3Bva3kvJz48L3VsaW5rPiBhbmQKKyAgICAgICAgICAgIGNsaWNraW5nIG9uIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L3JlZnMvdGFncyc+Wy4uLl08L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICBsaW5rIGJlbmVhdGggdGhlICJUYWciIGhlYWRpbmcuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNvbWUga2V5IHRhZ3MgZm9yIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgYXJlCisgICAgICAgICAgICA8ZmlsZW5hbWU+amV0aHJvLTE0LjAuMzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPm1vcnR5LTE2LjAuMTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPnB5cm8tMTcuMC4wPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPiZESVNUUk9fTkFNRV9OT19DQVA7LSZQT0tZVkVSU0lPTjs8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFRoZXNlIHRhZ3MgcmVwcmVzZW50IFlvY3RvIFByb2plY3QgcmVsZWFzZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgdGhlIEdpdCByZXBvc2l0b3J5LCB5b3UgYWxzbworICAgICAgICAgICAgaGF2ZSBhY2Nlc3MgdG8gYWxsIHRoZSB0YWdzIGluIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5LgorICAgICAgICAgICAgU2ltaWxhciB0byBicmFuY2hlcywgeW91IGNhbiBjcmVhdGUgYW5kIGNoZWNrb3V0IGEgbG9jYWwgd29ya2luZworICAgICAgICAgICAgR2l0IGJyYW5jaCBiYXNlZCBvbiBhIHRhZyBuYW1lLgorICAgICAgICAgICAgV2hlbiB5b3UgZG8gdGhpcywgeW91IGdldCBhIHNuYXBzaG90IG9mIHRoZSBHaXQgcmVwb3NpdG9yeSB0aGF0CisgICAgICAgICAgICByZWZsZWN0cyB0aGUgc3RhdGUgb2YgdGhlIGZpbGVzIHdoZW4gdGhlIGNoYW5nZSB3YXMgbWFkZSBhc3NvY2lhdGVkCisgICAgICAgICAgICB3aXRoIHRoYXQgdGFnLgorICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIHVzZSBpcyB0byBjaGVja291dCBhIHdvcmtpbmcgYnJhbmNoIHRoYXQgbWF0Y2hlcworICAgICAgICAgICAgYSBzcGVjaWZpYyBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCisgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgfgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5CisgICAgICQgY2QgcG9reQorICAgICAkIGdpdCBmZXRjaCAtLXRhZ3MKKyAgICAgJCBnaXQgY2hlY2tvdXQgdGFncy9yb2Nrby0xOC4wLjAgLWIgbXlfcm9ja28tMTguMC4wCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBuYW1lIG9mIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG9mIHlvdXIKKyAgICAgICAgICAgIGxvY2FsIFlvY3RvIFByb2plY3QgcmVwb3NpdG9yeSBpcyA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgQWZ0ZXIgbW92aW5nIHRvIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGZldGNoPC9maWxlbmFtZT4gY29tbWFuZCBtYWtlcyBhbGwgdGhlIHVwc3RyZWFtCisgICAgICAgICAgICB0YWdzIGF2YWlsYWJsZSBsb2NhbGx5IGluIHlvdXIgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEZpbmFsbHksIHRoZSA8ZmlsZW5hbWU+Z2l0IGNoZWNrb3V0PC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgY3JlYXRlcyBhbmQgY2hlY2tzIG91dCBhIGJyYW5jaCBuYW1lZCAibXktcm9ja28tMTguMC4wIiB0aGF0IGlzCisgICAgICAgICAgICBiYXNlZCBvbiB0aGUgdXBzdHJlYW0gYnJhbmNoIHdob3NlICJIRUFEIiBtYXRjaGVzIHRoZQorICAgICAgICAgICAgY29tbWl0IGluIHRoZSByZXBvc2l0b3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgInJvY2tvLTE4LjAuMCIgdGFnLgorICAgICAgICAgICAgVGhlIGZpbGVzIGluIHlvdXIgcmVwb3NpdG9yeSBub3cgZXhhY3RseSBtYXRjaCB0aGF0IHBhcnRpY3VsYXIKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSBhcyBpdCBpcyB0YWdnZWQgaW4gdGhlIHVwc3RyZWFtIEdpdAorICAgICAgICAgICAgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgd2hlbiB5b3UgY3JlYXRlIGFuZAorICAgICAgICAgICAgY2hlY2tvdXQgYSBsb2NhbCB3b3JraW5nIGJyYW5jaCBiYXNlZCBvbiBhIHRhZywgeW91ciBlbnZpcm9ubWVudAorICAgICAgICAgICAgbWF0Y2hlcyBhIHNwZWNpZmljIHBvaW50IGluIHRpbWUgYW5kIG5vdCB0aGUgZW50aXJlIGRldmVsb3BtZW50CisgICAgICAgICAgICBicmFuY2ggKGkuZS4gZnJvbSB0aGUgInRpcCIgb2YgdGhlIGJyYW5jaCBiYWNrd2FyZHMpLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2Jhc2ljLWNvbW1hbmRzJz4KKyAgICAgICAgPHRpdGxlPkJhc2ljIENvbW1hbmRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEdpdCBoYXMgYW4gZXh0ZW5zaXZlIHNldCBvZiBjb21tYW5kcyB0aGF0IGxldHMgeW91IG1hbmFnZSBjaGFuZ2VzCisgICAgICAgICAgICBhbmQgcGVyZm9ybSBjb2xsYWJvcmF0aW9uIG92ZXIgdGhlIGxpZmUgb2YgYSBwcm9qZWN0LgorICAgICAgICAgICAgQ29udmVuaWVudGx5IHRob3VnaCwgeW91IGNhbiBtYW5hZ2Ugd2l0aCBhIHNtYWxsIHNldCBvZiBiYXNpYworICAgICAgICAgICAgb3BlcmF0aW9ucyBhbmQgd29ya2Zsb3dzIG9uY2UgeW91IHVuZGVyc3RhbmQgdGhlIGJhc2ljCisgICAgICAgICAgICBwaGlsb3NvcGh5IGJlaGluZCBHaXQuCisgICAgICAgICAgICBZb3UgZG8gbm90IGhhdmUgdG8gYmUgYW4gZXhwZXJ0IGluIEdpdCB0byBiZSBmdW5jdGlvbmFsLgorICAgICAgICAgICAgQSBnb29kIHBsYWNlIHRvIGxvb2sgZm9yIGluc3RydWN0aW9uIG9uIGEgbWluaW1hbCBzZXQgb2YgR2l0CisgICAgICAgICAgICBjb21tYW5kcyBpcworICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2RvY3VtZW50YXRpb24nPmhlcmU8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IG9mIEdpdCBjb21tYW5kcyBicmllZmx5IGRlc2NyaWJlcyBzb21lIGJhc2ljCisgICAgICAgICAgICBHaXQgb3BlcmF0aW9ucyBhcyBhIHdheSB0byBnZXQgc3RhcnRlZC4KKyAgICAgICAgICAgIEFzIHdpdGggYW55IHNldCBvZiBjb21tYW5kcywgdGhpcyBsaXN0IChpbiBtb3N0IGNhc2VzKSBzaW1wbHkgc2hvd3MKKyAgICAgICAgICAgIHRoZSBiYXNlIGNvbW1hbmQgYW5kIG9taXRzIHRoZSBtYW55IGFyZ3VtZW50cyBpdCBzdXBwb3J0cy4KKyAgICAgICAgICAgIFNlZSB0aGUgR2l0IGRvY3VtZW50YXRpb24gZm9yIGNvbXBsZXRlIGRlc2NyaXB0aW9ucyBhbmQgc3RyYXRlZ2llcworICAgICAgICAgICAgb24gaG93IHRvIHVzZSB0aGVzZSBjb21tYW5kczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBpbml0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZXMgYW4gZW1wdHkgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIEdpdCBjb21tYW5kcyB1bmxlc3MgeW91IGhhdmUgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmdpdDwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZ2l0LWNvbW1hbmRzLWNsb25lJz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY2xvbmU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDcmVhdGVzIGEgbG9jYWwgY2xvbmUgb2YgYSBHaXQgcmVwb3NpdG9yeSB0aGF0IGlzIG9uCisgICAgICAgICAgICAgICAgICAgIGVxdWFsIGZvb3Rpbmcgd2l0aCBhIGZlbGxvdyBkZXZlbG9wZXLigJlzIEdpdCByZXBvc2l0b3J5CisgICAgICAgICAgICAgICAgICAgIG9yIGFuIHVwc3RyZWFtIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgYWRkPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTG9jYWxseSBzdGFnZXMgdXBkYXRlZCBmaWxlIGNvbnRlbnRzIHRvIHRoZSBpbmRleCB0aGF0CisgICAgICAgICAgICAgICAgICAgIEdpdCB1c2VzIHRvIHRyYWNrIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHN0YWdlIGFsbCBmaWxlcyB0aGF0IGhhdmUgY2hhbmdlZCBiZWZvcmUgeW91CisgICAgICAgICAgICAgICAgICAgIGNhbiBjb21taXQgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjb21taXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDcmVhdGVzIGEgbG9jYWwgImNvbW1pdCIgdGhhdCBkb2N1bWVudHMgdGhlIGNoYW5nZXMgeW91CisgICAgICAgICAgICAgICAgICAgIG1hZGUuCisgICAgICAgICAgICAgICAgICAgIE9ubHkgY2hhbmdlcyB0aGF0IGhhdmUgYmVlbiBzdGFnZWQgY2FuIGJlIGNvbW1pdHRlZC4KKyAgICAgICAgICAgICAgICAgICAgQ29tbWl0cyBhcmUgdXNlZCBmb3IgaGlzdG9yaWNhbCBwdXJwb3NlcywgZm9yIGRldGVybWluaW5nCisgICAgICAgICAgICAgICAgICAgIGlmIGEgbWFpbnRhaW5lciBvZiBhIHByb2plY3Qgd2lsbCBhbGxvdyB0aGUgY2hhbmdlLAorICAgICAgICAgICAgICAgICAgICBhbmQgZm9yIHVsdGltYXRlbHkgcHVzaGluZyB0aGUgY2hhbmdlIGZyb20geW91ciBsb2NhbAorICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSBpbnRvIHRoZSBwcm9qZWN04oCZcyB1cHN0cmVhbSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHN0YXR1czwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgYW55IG1vZGlmaWVkIGZpbGVzIHRoYXQgcG9zc2libHkgbmVlZCB0byBiZQorICAgICAgICAgICAgICAgICAgICBzdGFnZWQgYW5kIGdpdmVzIHlvdSBhIHN0YXR1cyBvZiB3aGVyZSB5b3Ugc3RhbmQgcmVnYXJkaW5nCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIGNvbW1pdHMgYXMgY29tcGFyZWQgdG8gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY2hlY2tvdXQ8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+YnJhbmNoLW5hbWU8L3JlcGxhY2VhYmxlPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDaGFuZ2VzIHlvdXIgbG9jYWwgd29ya2luZyBicmFuY2ggYW5kIGluIHRoaXMgZm9ybQorICAgICAgICAgICAgICAgICAgICBhc3N1bWVzIHRoZSBsb2NhbCBicmFuY2ggYWxyZWFkeSBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBpcyBhbmFsb2dvdXMgdG8gImNkIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVja291dCDigJNiPC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPndvcmtpbmctYnJhbmNoPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnVwc3RyZWFtLWJyYW5jaDwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYW5kIGNoZWNrcyBvdXQgYSB3b3JraW5nIGJyYW5jaCBvbiB5b3VyIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBsb2NhbCBicmFuY2ggdHJhY2tzIHRoZSB1cHN0cmVhbSBicmFuY2guCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHlvdXIgbG9jYWwgYnJhbmNoIHRvIGlzb2xhdGUgeW91ciB3b3JrLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBhIGdvb2QgaWRlYSB0byB1c2UgbG9jYWwgYnJhbmNoZXMgd2hlbiBhZGRpbmcKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgZmVhdHVyZXMgb3IgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgaXNvbGF0ZWQgYnJhbmNoZXMgZmFjaWxpdGF0ZXMgZWFzeSByZW1vdmFsIG9mCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgaWYgdGhleSBkbyBub3Qgd29yayBvdXQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBicmFuY2g8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEaXNwbGF5cyB0aGUgZXhpc3RpbmcgbG9jYWwgYnJhbmNoZXMgYXNzb2NpYXRlZCB3aXRoIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJyYW5jaCB0aGF0IHlvdSBoYXZlIGN1cnJlbnRseSBjaGVja2VkIG91dCBpcyBub3RlZAorICAgICAgICAgICAgICAgICAgICB3aXRoIGFuIGFzdGVyaXNrIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBicmFuY2ggLUQ8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+YnJhbmNoLW5hbWU8L3JlcGxhY2VhYmxlPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEZWxldGVzIGFuIGV4aXN0aW5nIGxvY2FsIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgaW4gYSBsb2NhbCBicmFuY2ggb3RoZXIgdGhhbiB0aGUgb25lIHlvdQorICAgICAgICAgICAgICAgICAgICBhcmUgZGVsZXRpbmcgaW4gb3JkZXIgdG8gZGVsZXRlCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5icmFuY2gtbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHB1bGwgLS1yZWJhc2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gZnJvbSBhbiB1cHN0cmVhbSBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICBhbmQgcGxhY2VzIGl0IGluIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFlvdSB1c2UgdGhpcyBjb21tYW5kIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIHN5bmNocm9uaXplZCB3aXRoCisgICAgICAgICAgICAgICAgICAgIHRoZSByZXBvc2l0b3J5IGZyb20gd2hpY2ggeW91IGFyZSBiYXNpbmcgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICAoLmUuZy4gdGhlICJtYXN0ZXIiIGJyYW5jaCkuCisgICAgICAgICAgICAgICAgICAgIFRoZSAiLS1yZWJhc2UiIG9wdGlvbiBlbnN1cmVzIHRoYXQgYW55IGxvY2FsIGNvbW1pdHMgeW91CisgICAgICAgICAgICAgICAgICAgIGhhdmUgaW4geW91ciBicmFuY2ggYXJlIHByZXNlcnZlZCBhdCB0aGUgdG9wIG9mIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHB1c2g8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+cmVwby1uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPmxvY2FsLWJyYW5jaDwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPjo8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT51cHN0cmVhbS1icmFuY2g8L3JlcGxhY2VhYmxlPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTZW5kcyBhbGwgeW91ciBjb21taXR0ZWQgbG9jYWwgY2hhbmdlcyB0byB0aGUgdXBzdHJlYW0gR2l0CisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgdGhhdCB5b3VyIGxvY2FsIHJlcG9zaXRvcnkgaXMgdHJhY2tpbmcKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gYSBjb250cmlidXRpb24gcmVwb3NpdG9yeSkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtYWludGFpbmVyIG9mIHRoZSBwcm9qZWN0IGRyYXdzIGZyb20gdGhlc2UgcmVwb3NpdG9yaWVzCisgICAgICAgICAgICAgICAgICAgIHRvIG1lcmdlIGNoYW5nZXMgKGNvbW1pdHMpIGludG8gdGhlIGFwcHJvcHJpYXRlIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBvZiBwcm9qZWN0J3MgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENvbWJpbmVzIG9yIGFkZHMgY2hhbmdlcyBmcm9tIG9uZQorICAgICAgICAgICAgICAgICAgICBsb2NhbCBicmFuY2ggb2YgeW91ciByZXBvc2l0b3J5IHdpdGggYW5vdGhlciBicmFuY2guCisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIEdpdCByZXBvc2l0b3J5LCB0aGUgZGVmYXVsdCBicmFuY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgbmFtZWQgIm1hc3RlciIuCisgICAgICAgICAgICAgICAgICAgIEEgdHlwaWNhbCB3b3JrZmxvdyBpcyB0byBjcmVhdGUgYSB0ZW1wb3JhcnkgYnJhbmNoIHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgYmFzZWQgb2ZmICJtYXN0ZXIiIHRoYXQgeW91IHdvdWxkIHVzZSBmb3IgaXNvbGF0ZWQgd29yay4KKyAgICAgICAgICAgICAgICAgICAgWW91IHdvdWxkIG1ha2UgeW91ciBjaGFuZ2VzIGluIHRoYXQgaXNvbGF0ZWQgYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICBzdGFnZSBhbmQgY29tbWl0IHRoZW0gbG9jYWxseSwgc3dpdGNoIHRvIHRoZSAibWFzdGVyIgorICAgICAgICAgICAgICAgICAgICBicmFuY2gsIGFuZCB0aGVuIHVzZSB0aGUgPGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gYXBwbHkgdGhlIGNoYW5nZXMgZnJvbSB5b3VyIGlzb2xhdGVkIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBjdXJyZW50bHkgY2hlY2tlZCBvdXQgYnJhbmNoIChlLmcuICJtYXN0ZXIiKS4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIG1lcmdlIGlzIGNvbXBsZXRlIGFuZCBpZiB5b3UgYXJlIGRvbmUgd2l0aAorICAgICAgICAgICAgICAgICAgICB3b3JraW5nIGluIHRoYXQgaXNvbGF0ZWQgYnJhbmNoLCB5b3UgY2FuIHNhZmVseSBkZWxldGUKKyAgICAgICAgICAgICAgICAgICAgdGhlIGlzb2xhdGVkIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVycnktcGljazwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5jb21taXRzPC9yZXBsYWNlYWJsZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIGFuZCBhcHBseSBzcGVjaWZpYyBjb21taXRzIGZyb20gb25lIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBpbnRvIGFub3RoZXIgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICBUaGVyZSBhcmUgdGltZXMgd2hlbiB5b3UgbWlnaHQgbm90IGJlIGFibGUgdG8gbWVyZ2UKKyAgICAgICAgICAgICAgICAgICAgYWxsIHRoZSBjaGFuZ2VzIGluIG9uZSBicmFuY2ggd2l0aAorICAgICAgICAgICAgICAgICAgICBhbm90aGVyIGJ1dCBuZWVkIHRvIHBpY2sgb3V0IGNlcnRhaW4gb25lcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdGs8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyBhIEdVSSB2aWV3IG9mIHRoZSBicmFuY2hlcyBhbmQgY2hhbmdlcyBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgaXMgYSBnb29kIHdheSB0byBncmFwaGljYWxseSBzZWUgd2hlcmUgdGhpbmdzCisgICAgICAgICAgICAgICAgICAgIGhhdmUgZGl2ZXJnZWQgaW4geW91ciBsb2NhbCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGluc3RhbGwgdGhlIDxmaWxlbmFtZT5naXRrPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2Ugb24geW91ciBkZXZlbG9wbWVudCBzeXN0ZW0gdG8gdXNlIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBsb2c8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIGEgaGlzdG9yeSBvZiB5b3VyIGNvbW1pdHMgdG8gdGhlIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVwb3J0IGxpc3RzIGFsbCBjb21taXRzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB5b3UKKyAgICAgICAgICAgICAgICAgICAgaGF2ZSBwdXNoZWQgdGhlbSB1cHN0cmVhbSBvciBub3QuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgZGlmZjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERpc3BsYXlzIGxpbmUtYnktbGluZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGEgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgd29ya2luZyBmaWxlIGFuZCB0aGUgc2FtZSBmaWxlIGFzIHVuZGVyc3Rvb2QgYnkgR2l0LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgaXMgdXNlZnVsIHRvIHNlZSB3aGF0IHlvdSBoYXZlIGNoYW5nZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gYW55IGdpdmVuIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdsaWNlbnNpbmcnPgorICAgIDx0aXRsZT5MaWNlbnNpbmc8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEJlY2F1c2Ugb3BlbiBzb3VyY2UgcHJvamVjdHMgYXJlIG9wZW4gdG8gdGhlIHB1YmxpYywgdGhleSBoYXZlCisgICAgICAgIGRpZmZlcmVudCBsaWNlbnNpbmcgc3RydWN0dXJlcyBpbiBwbGFjZS4KKyAgICAgICAgTGljZW5zZSBldm9sdXRpb24gZm9yIGJvdGggT3BlbiBTb3VyY2UgYW5kIEZyZWUgU29mdHdhcmUgaGFzIGFuCisgICAgICAgIGludGVyZXN0aW5nIGhpc3RvcnkuCisgICAgICAgIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB0aGlzIGhpc3RvcnksIHlvdSBjYW4gZmluZCBiYXNpYyBpbmZvcm1hdGlvbgorICAgICAgICBoZXJlOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3Blbi1zb3VyY2VfbGljZW5zZSc+T3BlbiBzb3VyY2UgbGljZW5zZSBoaXN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZyZWVfc29mdHdhcmVfbGljZW5zZSc+RnJlZSBzb2Z0d2FyZSBsaWNlbnNlIGhpc3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSW4gZ2VuZXJhbCwgdGhlIFlvY3RvIFByb2plY3QgaXMgYnJvYWRseSBsaWNlbnNlZCB1bmRlciB0aGUKKyAgICAgICAgTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSAoTUlUKSBMaWNlbnNlLgorICAgICAgICBNSVQgbGljZW5zaW5nIHBlcm1pdHMgdGhlIHJldXNlIG9mIHNvZnR3YXJlIHdpdGhpbiBwcm9wcmlldGFyeQorICAgICAgICBzb2Z0d2FyZSBhcyBsb25nIGFzIHRoZSBsaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIHdpdGggdGhhdCBzb2Z0d2FyZS4KKyAgICAgICAgTUlUIGlzIGFsc28gY29tcGF0aWJsZSB3aXRoIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKS4KKyAgICAgICAgUGF0Y2hlcyB0byB0aGUgWW9jdG8gUHJvamVjdCBmb2xsb3cgdGhlIHVwc3RyZWFtIGxpY2Vuc2luZyBzY2hlbWUuCisgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBvbiB0aGUgTUlUIGxpY2Vuc2UKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHAnPmhlcmU8L3VsaW5rPi4KKyAgICAgICAgWW91IGNhbiBmaW5kIGluZm9ybWF0aW9uIG9uIHRoZSBHTlUgR1BMCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjAnPmhlcmU8L3VsaW5rPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2hlbiB5b3UgYnVpbGQgYW4gaW1hZ2UgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QsIHRoZSBidWlsZCBwcm9jZXNzCisgICAgICAgIHVzZXMgYSBrbm93biBsaXN0IG9mIGxpY2Vuc2VzIHRvIGVuc3VyZSBjb21wbGlhbmNlLgorICAgICAgICBZb3UgY2FuIGZpbmQgdGhpcyBsaXN0IGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgYXQgPGZpbGVuYW1lPm1ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4uCisgICAgICAgIE9uY2UgdGhlIGJ1aWxkIGNvbXBsZXRlcywgdGhlIGxpc3Qgb2YgYWxsIGxpY2Vuc2VzIGZvdW5kIGFuZCB1c2VkCisgICAgICAgIGR1cmluZyB0aGF0IGJ1aWxkIGFyZSBrZXB0IGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgIGF0IDxmaWxlbmFtZT50bXAvZGVwbG95L2xpY2Vuc2VzPC9maWxlbmFtZT4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIElmIGEgbW9kdWxlIHJlcXVpcmVzIGEgbGljZW5zZSB0aGF0IGlzIG5vdCBpbiB0aGUgYmFzZSBsaXN0LCB0aGUKKyAgICAgICAgYnVpbGQgcHJvY2VzcyBnZW5lcmF0ZXMgYSB3YXJuaW5nIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgIFRoZXNlIHRvb2xzIG1ha2UgaXQgZWFzaWVyIGZvciBhIGRldmVsb3BlciB0byBiZSBjZXJ0YWluIG9mIHRoZQorICAgICAgICBsaWNlbnNlcyB3aXRoIHdoaWNoIHRoZWlyIHNoaXBwZWQgcHJvZHVjdHMgbXVzdCBjb21wbHkuCisgICAgICAgIEhvd2V2ZXIsIGV2ZW4gd2l0aCB0aGVzZSB0b29scyBpdCBpcyBzdGlsbCB1cCB0byB0aGUgZGV2ZWxvcGVyIHRvCisgICAgICAgIHJlc29sdmUgcG90ZW50aWFsIGxpY2Vuc2luZyBpc3N1ZXMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBiYXNlIGxpc3Qgb2YgbGljZW5zZXMgdXNlZCBieSB0aGUgYnVpbGQgcHJvY2VzcyBpcyBhIGNvbWJpbmF0aW9uCisgICAgICAgIG9mIHRoZSBTb2Z0d2FyZSBQYWNrYWdlIERhdGEgRXhjaGFuZ2UgKFNQRFgpIGxpc3QgYW5kIHRoZSBPcGVuCisgICAgICAgIFNvdXJjZSBJbml0aWF0aXZlIChPU0kpIHByb2plY3RzLgorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vc3BkeC5vcmcnPlNQRFggR3JvdXA8L3VsaW5rPiBpcyBhIHdvcmtpbmcgZ3JvdXAgb2YKKyAgICAgICAgdGhlIExpbnV4IEZvdW5kYXRpb24gdGhhdCBtYWludGFpbnMgYSBzcGVjaWZpY2F0aW9uIGZvciBhIHN0YW5kYXJkCisgICAgICAgIGZvcm1hdCBmb3IgY29tbXVuaWNhdGluZyB0aGUgY29tcG9uZW50cywgbGljZW5zZXMsIGFuZCBjb3B5cmlnaHRzCisgICAgICAgIGFzc29jaWF0ZWQgd2l0aCBhIHNvZnR3YXJlIHBhY2thZ2UuCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9vcGVuc291cmNlLm9yZyc+T1NJPC91bGluaz4gaXMgYSBjb3Jwb3JhdGlvbgorICAgICAgICBkZWRpY2F0ZWQgdG8gdGhlIE9wZW4gU291cmNlIERlZmluaXRpb24gYW5kIHRoZSBlZmZvcnQgZm9yIHJldmlld2luZworICAgICAgICBhbmQgYXBwcm92aW5nIGxpY2Vuc2VzIHRoYXQgY29uZm9ybSB0byB0aGUgT3BlbiBTb3VyY2UgRGVmaW5pdGlvbgorICAgICAgICAoT1NEKS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBmaW5kIGEgbGlzdCBvZiB0aGUgY29tYmluZWQgU1BEWCBhbmQgT1NJIGxpY2Vuc2VzIHRoYXQgdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QgdXNlcyBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPm1ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHlvdXIKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gdGhhdCBjYW4gaGVscCB5b3UgbWFpbnRhaW4gY29tcGxpYW5jZSB3aXRoIHZhcmlvdXMKKyAgICAgICAgb3BlbiBzb3VyY2UgbGljZW5zaW5nIGR1cmluZyB0aGUgbGlmZWN5Y2xlIG9mIGEgcHJvZHVjdCBjcmVhdGVkIHVzaW5nCisgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5NYWludGFpbmluZyBPcGVuIFNvdXJjZSBMaWNlbnNlIENvbXBsaWFuY2UgRHVyaW5nIFlvdXIgUHJvZHVjdCdzIExpZmVjeWNsZTwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtZWNsaXBzZS1jdXN0b21pemF0aW9uLnhzbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtZWNsaXBzZS1jdXN0b21pemF0aW9uLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWY5OWVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1lY2xpcHNlLWN1c3RvbWl6YXRpb24ueHNsCkBAIC0wLDAgKzEsMzUgQEAKKzw/eG1sIHZlcnNpb249JzEuMCc/PgorPHhzbDpzdHlsZXNoZWV0CisJeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCisJeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiCisJeG1sbnM6Zm89Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML0Zvcm1hdCIKKwl2ZXJzaW9uPSIxLjAiPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3IvZG9jYm9vay1taXJyb3IvZG9jYm9vay14c2wtMS43Ni4xL2VjbGlwc2UvZWNsaXBzZTMueHNsIiAvPgorCis8IS0tCisKKyAgPHhzbDppbXBvcnQgaHJlZj0iLi4vdGVtcGxhdGUvMS43Ni4xL2RvY2Jvb2steHNsLTEuNzYuMS9lY2xpcHNlL2VjbGlwc2UzLnhzbCIgLz4KKworICA8eHNsOmltcG9ydAorCSAgaHJlZj0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsLzEuNzYuMS9lY2xpcHNlL2VjbGlwc2UzLnhzbCIgLz4KKworLS0+CisKKyAgPHhzbDpwYXJhbSBuYW1lPSJjaHVua2VyLm91dHB1dC5pbmRlbnQiIHNlbGVjdD0iJ3llcyciLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJjaHVuay5xdWlldGx5IiBzZWxlY3Q9IjEiLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJjaHVuay5maXJzdC5zZWN0aW9ucyIgc2VsZWN0PSIxIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0iY2h1bmsuc2VjdGlvbi5kZXB0aCIgc2VsZWN0PSIxMCIvPgorICA8eHNsOnBhcmFtIG5hbWU9InVzZS5pZC5hcy5maWxlbmFtZSIgc2VsZWN0PSIxIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0idWxpbmsudGFyZ2V0IiBzZWxlY3Q9Iidfc2VsZiciIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iYmFzZS5kaXIiIHNlbGVjdD0iJ2h0bWwvb3ZlcnZpZXctbWFudWFsLyciLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJodG1sLnN0eWxlc2hlZXQiIHNlbGVjdD0iJy4uL2Jvb2suY3NzJyIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImVjbGlwc2UubWFuaWZlc3QiIHNlbGVjdD0iMCIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNyZWF0ZS5wbHVnaW4ueG1sIiBzZWxlY3Q9IjAiLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzdXBwcmVzcy5uYXZpZ2F0aW9uIiBzZWxlY3Q9IjEiLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS5pbmRleCIgc2VsZWN0PSIwIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0iY2hhcHRlci5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJhcHBlbmRpeC5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24ubGFiZWwuaW5jbHVkZXMuY29tcG9uZW50LmxhYmVsIiBzZWxlY3Q9IjEiIC8+Cis8L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1pbnRyby54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWludHJvLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTQzM2FhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1pbnRyby54bWwKQEAgLTAsMCArMSwxMTIgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzxjaGFwdGVyIGlkPSdvdmVydmlldy1tYW51YWwtaW50cm8nPgorCis8dGl0bGU+VGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9J292ZXJ2aWV3LW1hbnVhbC13ZWxjb21lJz4KKyAgICAgICAgPHRpdGxlPldlbGNvbWU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2VsY29tZSB0byB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsIQorICAgICAgICAgICAgVGhpcyBtYW51YWwgaW50cm9kdWNlcyB0aGUgWW9jdG8gUHJvamVjdCBieSBwcm92aWRpbmcgY29uY2VwdHMsCisgICAgICAgICAgICBzb2Z0d2FyZSBvdmVydmlld3MsIGJlc3Qta25vd24tbWV0aG9kcyAoQktNcyksIGFuZCBhbnkgb3RoZXIKKyAgICAgICAgICAgIGhpZ2gtbGV2ZWwgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIHN1aXRhYmxlIGZvciBhIG5ldyBZb2N0bworICAgICAgICAgICAgUHJvamVjdCB1c2VyLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHdoYXQgeW91IGNhbiBnZXQgZnJvbSB0aGlzIG1hbnVhbDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGxpbmsgbGlua2VuZD0nb3ZlcnZpZXcteXAnPkludHJvZHVjaW5nIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBsZWFybiBhYm91dCBmZWF0dXJlcyBhbmQgY2hhbGxlbmdlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCwgdGhlIGxheWVyIG1vZGVsLCBjb21wb25lbnRzIGFuZCB0b29scywKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgbWV0aG9kcywgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Bva3knPlBva3k8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UgZGlzdHJpYnV0aW9uLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICB3b3JrZmxvdywgYW5kIHNvbWUgYmFzaWMgWW9jdG8gdGVybXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxsaW5rIGxpbmtlbmQ9J292ZXJ2aWV3LWRldmVsb3BtZW50LWVudmlyb25tZW50Jz5UaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvbGluaz46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjaGFwdGVyIGhlbHBzIHlvdSBnZXQgc3RhcnRlZCB1bmRlcnN0YW5kaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBsZWFybiBhYm91dCBvcGVuIHNvdXJjZSwgZGV2ZWxvcG1lbnQgaG9zdHMsCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Qgc291cmNlIHJlcG9zaXRvcmllcywgd29ya2Zsb3dzIHVzaW5nIEdpdAorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIFlvY3RvIFByb2plY3QsIGEgR2l0IHByaW1lciwgYW5kIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgIGFib3V0IGxpY2Vuc2luZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGxpbmsgbGlua2VuZD0nb3ZlcnZpZXctbWFudWFsLWNvbmNlcHRzJz5Zb2N0byBQcm9qZWN0IENvbmNlcHRzPC9saW5rPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNoYXB0ZXIgcHJlc2VudHMgdmFyaW91cyBjb25jZXB0cyByZWdhcmRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBjb25jZXB0dWFsIGluZm9ybWF0aW9uIGFib3V0IGNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50LCBjcm9zcy10b29sY2hhaW5zLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgbWFudWFsIGRvZXMgbm90IGdpdmUgeW91IHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0ZXAtYnktc3RlcCBJbnN0cnVjdGlvbnMgZm9yIERldmVsb3BtZW50IFRhc2tzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uYWwgcHJvY2VkdXJlcyByZXNpZGUgaW4gb3RoZXIgbWFudWFscyB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBzZXQuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsnPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgZXhhbXBsZXMgb24gaG93IHRvIHBlcmZvcm0gdmFyaW91cyBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgQXMgYW5vdGhlciBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBtYW51YWwgY29udGFpbnMgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBpbnN0YWxsIGFuCisgICAgICAgICAgICAgICAgICAgIFNESywgd2hpY2ggaXMgdXNlZCB0byBkZXZlbG9wIGFwcGxpY2F0aW9ucyBmb3IgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWZlcmVuY2UgTWF0ZXJpYWw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIG1hdGVyaWFsIHJlc2lkZXMgaW4gYW4gYXBwcm9wcmlhdGUgcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN5c3RlbSB2YXJpYWJsZXMgYXJlIGRvY3VtZW50ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7Jz5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgQXMgYW5vdGhlciBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgcmVmZXJlbmNlIGluZm9ybWF0aW9uIG9uIEJTUHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGFpbGVkIFB1YmxpYyBJbmZvcm1hdGlvbiBOb3QgU3BlY2lmaWMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGV4aGF1c3RpdmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgU291cmNlIENvbnRyb2wgTWFuYWdlciBHaXQgaXMgYmV0dGVyIGNvdmVyZWQgd2l0aCBJbnRlcm5ldAorICAgICAgICAgICAgICAgICAgICBzZWFyY2hlcyBhbmQgb2ZmaWNpYWwgR2l0IERvY3VtZW50YXRpb24gdGhhbiB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nb3ZlcnZpZXctbWFudWFsLW90aGVyLWluZm9ybWF0aW9uJz4KKyAgICAgICAgPHRpdGxlPk90aGVyIEluZm9ybWF0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJlY2F1c2UgdGhpcyBtYW51YWwgcHJlc2VudHMgaW5mb3JtYXRpb24gZm9yIG1hbnkgZGlmZmVyZW50CisgICAgICAgICAgICB0b3BpY3MsIHN1cHBsZW1lbnRhbCBpbmZvcm1hdGlvbiBpcyByZWNvbW1lbmRlZCBmb3IgZnVsbAorICAgICAgICAgICAgY29tcHJlaGVuc2lvbi4KKyAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGludHJvZHVjdG9yeSBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCwgc2VlCisgICAgICAgICAgICB0aGUgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4uCisgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBidWlsZCBhbiBpbWFnZSB3aXRoIG5vIGtub3dsZWRnZSBvZiBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBhcyBhIHdheSBvZiBxdWlja2x5IHRlc3RpbmcgaXQgb3V0LCBzZWUgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CUklFRl9VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkPC91bGluaz4KKyAgICAgICAgICAgIGRvY3VtZW50LgorICAgICAgICAgICAgRm9yIGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIGxpbmtzIGFuZCBvdGhlciBkb2N1bWVudGF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLWxpbmtzLWFuZC1yZWxhdGVkLWRvY3VtZW50YXRpb24nPkxpbmtzIGFuZCBSZWxhdGVkIERvY3VtZW50YXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1zdHlsZS5jc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXN0eWxlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2EzNjRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1zdHlsZS5jc3MKQEAgLTAsMCArMSw5ODggQEAKKy8qCisgICBHZW5lcmljIFhIVE1MIC8gRG9jQm9vayBYSFRNTCBDU1MgU3R5bGVzaGVldC4KKworICAgQnJvd3NlciB3cmFuZ2xpbmcgYW5kIHR5cG9ncmFwaGljIGRlc2lnbiBieQorICAgICAgT3l2aW5kIEtvbGFzIC8gcGlwcGluQGdpbXAub3JnCisKKyAgIEN1c3RvbWlzZWQgZm9yIFBva3kgYnkKKyAgICAgIE1hdHRoZXcgQWxsdW0gLyBtYWxsdW1Aby1oYW5kLmNvbQorCisgICBUaGFua3MgdG86CisgICAgIExpYW0gUi4gRS4gUXVpbgorICAgICBXaWxsaWFtIFNrYWdncworICAgICBKYWt1YiBTdGVpbmVyCisKKyAgIFN0cnVjdHVyZQorICAgLS0tLS0tLS0tCisKKyAgIFRoZSBzdHlsZXNoZWV0IGlzIGRpdmlkZWQgaW50byB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOgorCisgICAgICAgUG9zaXRpb25pbmcKKyAgICAgICAgICBNYXJnaW5zLCBwYWRkaW5ncywgd2lkdGgsIGZvbnQtc2l6ZSwgY2xlYXJpbmcuCisgICAgICAgRGVjb3JhdGlvbnMKKyAgICAgICAgICBCb3JkZXJzLCBzdHlsZQorICAgICAgIENvbG9ycworICAgICAgICAgIENvbG9ycworICAgICAgIEdyYXBoaWNzCisgICAgICAgICAgR3JhcGhpY2FsIGJhY2tncm91bmRzCisgICAgICAgTmFzdHkgSUUgdHdlYWtzCisgICAgICAgICAgV29ya2Fyb3VuZHMgbmVlZGVkIHRvIG1ha2UgaXQgd29yayBpbiBpbnRlcm5ldCBleHBsb3JlciwKKyAgICAgICAgICBjdXJyZW50bHkgbWFrZXMgdGhlIHN0eWxlc2hlZXQgbm9uIHZhbGlkYXRpbmcsIGJ1dCB1cCB1bnRpbAorICAgICAgICAgIHRoaXMgcG9pbnQgaXQgaXMgdmFsaWRhdGluZy4KKyAgICAgICBNb3ppbGxhIGV4dGVuc2lvbnMKKyAgICAgICAgICBUcmFuc3BhcmVuY3kgZm9yIGZvb3RlcgorCSAgUm91bmRlZCBjb3JuZXJzIG9uIGJveGVzCisKKyovCisKKworICAvKioqKioqKioqKioqKioqIC8KKyAvICBQb3NpdGlvbmluZyAgIC8KKy8gKioqKioqKioqKioqKioqLworCitib2R5IHsKKyAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIFNhbnMsIHNhbnMtc2VyaWY7CisKKyAgbWluLXdpZHRoOiA2NDBweDsKKyAgd2lkdGg6IDgwJTsKKyAgbWFyZ2luOiAgMGVtIGF1dG87CisgIHBhZGRpbmc6IDJlbSA1ZW0gNWVtIDVlbTsKKyAgY29sb3I6ICMzMzM7Cit9CisKK2gxLGgyLGgzLGg0LGg1LGg2LGg3IHsKKyAgZm9udC1mYW1pbHk6IEFyaWFsLCBTYW5zOworICBjb2xvcjogIzAwNTU3RDsKKyAgY2xlYXI6IGJvdGg7Cit9CisKK2gxIHsKKyAgZm9udC1zaXplOiAyZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAyZW0gMGVtIDBlbSAwZW07Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwLjEwZW0gMGVtIDMuMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEuOGVtOworICBwYWRkaW5nLWxlZnQ6IDIwJTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCitoMiB7CisgIG1hcmdpbjogMmVtIDBlbSAwLjY2ZW0gMGVtOworICBwYWRkaW5nOiAwLjVlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjVlbTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2gzLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxNDIuMTQlOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworaDMgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g0IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEyMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNSB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDYgeworICBtYXJnaW46IDFlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDExMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisuYXV0aG9yZ3JvdXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgcGFkZGluZy10b3A6IDI1NnB4OworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMvb3ZlcnZpZXctbWFudWFsLXRpdGxlLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDsKKyAgbWFyZ2luLXRvcDogLTI1NnB4OworICBwYWRkaW5nLXJpZ2h0OiA1MHB4OworICBtYXJnaW4tbGVmdDogMHB4OworICB0ZXh0LWFsaWduOiByaWdodDsKKyAgd2lkdGg6IDc0MHB4OworfQorCitoMy5hdXRob3IgeworICBtYXJnaW46IDBlbSAwbWUgMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXdlaWdodDogbm9ybWFsOworICBmb250LXNpemU6IDEwMCU7CisgIGNvbG9yOiAjMzMzOworICBjbGVhcjogYm90aDsKK30KKworLmF1dGhvciB0dC5lbWFpbCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCisudGl0bGVwYWdlIGhyIHsKKyAgd2lkdGg6IDBlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy5yZXZoaXN0b3J5IHsKKyAgcGFkZGluZy10b3A6IDJlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy50b2MsCisubGlzdC1vZi10YWJsZXMsCisubGlzdC1vZi1leGFtcGxlcywKKy5saXN0LW9mLWZpZ3VyZXMgeworICBwYWRkaW5nOiAxLjMzZW0gMGVtIDIuNWVtIDBlbTsKKyAgY29sb3I6ICMwMDU1N0Q7Cit9CisKKy50b2MgcCwKKy5saXN0LW9mLXRhYmxlcyBwLAorLmxpc3Qtb2YtZmlndXJlcyBwLAorLmxpc3Qtb2YtZXhhbXBsZXMgcCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwLjNlbTsKKyAgbWFyZ2luOiAxLjVlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBwIGIsCisubGlzdC1vZi10YWJsZXMgcCBiLAorLmxpc3Qtb2YtZmlndXJlcyBwIGIsCisubGlzdC1vZi1leGFtcGxlcyBwIGJ7CisgIGZvbnQtc2l6ZTogMTAwLjAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLnRvYyBkbCwKKy5saXN0LW9mLXRhYmxlcyBkbCwKKy5saXN0LW9mLWZpZ3VyZXMgZGwsCisubGlzdC1vZi1leGFtcGxlcyBkbCB7CisgIG1hcmdpbjogMGVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkdCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgZGQgeworICBtYXJnaW46IDBlbSAwZW0gMGVtIDIuNmVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK2Rpdi5nbG9zc2FyeSBkbCwKK2Rpdi52YXJpYWJsZWxpc3QgZGwgeworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBmb250LXdlaWdodDogbm9ybWFsOworICB3aWR0aDogMjBlbTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52YXJpYWJsZWxpc3QgZGwgZHQgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKK30KKworLmdsb3NzYXJ5IGRsIGRkLAorLnZhcmlhYmxlbGlzdCBkbCBkZCB7CisgIG1hcmdpbi10b3A6IC0xZW07CisgIG1hcmdpbi1sZWZ0OiAyNS41ZW07Cit9CisKKy5nbG9zc2FyeSBkZCBwLAorLnZhcmlhYmxlbGlzdCBkZCBwIHsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKKworZGl2LmNhbGxvdXRsaXN0IHRhYmxlIHRkIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBtYXJnaW46IDBlbSAwZW0gMGVtIDBlbTsKK30KKworZGl2LmNhbGxvdXRsaXN0IHRhYmxlIHRkIHAgeworICBtYXJnaW4tdG9wOiAwZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworZGl2IHAuY29weXJpZ2h0IHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworZGl2LmxlZ2Fsbm90aWNlIHAubGVnYWxub3RpY2UtdGl0bGUgeworICBtYXJnaW4tYm90dG9tOiAwZW07Cit9CisKK3AgeworICBsaW5lLWhlaWdodDogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKworfQorCitkbCB7CisgIHBhZGRpbmctdG9wOiAwZW07Cit9CisKK2hyIHsKKyAgYm9yZGVyOiBzb2xpZCAxcHg7Cit9CisKKworLm1lZGlhb2JqZWN0LAorLm1lZGlhb2JqZWN0Y28geworICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK2ltZyB7CisgIGJvcmRlcjogbm9uZTsKK30KKwordWwgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAxLjVlbTsKK30KKwordWwgbGkgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK3VsIGxpIHAgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCit0YWJsZSB7CisgIHdpZHRoIDoxMDAlOworfQorCit0aCB7CisgIHBhZGRpbmc6IDAuMjVlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKwordGQgeworICBwYWRkaW5nOiAwLjI1ZW07CisgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3AgYVtpZF0geworICBtYXJnaW46IDBweDsKKyAgcGFkZGluZzogMHB4OworICBkaXNwbGF5OiBpbmxpbmU7CisgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cit9CisKK2EgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgY29sb3I6ICM0NDQ7Cit9CisKK3ByZSB7CisgICAgb3ZlcmZsb3c6IGF1dG87Cit9CisKK2E6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgLypmb250LXdlaWdodDogYm9sZDsqLworfQorCisvKiBUaGlzIHN0eWxlIGRlZmluZXMgaG93IHRoZSBwZXJtYWxpbmsgY2hhcmFjdGVyCisgICBhcHBlYXJzIGJ5IGl0c2VsZiBhbmQgd2hlbiBob3ZlcmVkIG92ZXIgd2l0aAorICAgdGhlIG1vdXNlLiAqLworCitbYWx0PSdQZXJtYWxpbmsnXSB7IGNvbG9yOiAjZWVlOyB9CitbYWx0PSdQZXJtYWxpbmsnXTpob3ZlciB7IGNvbG9yOiBibGFjazsgfQorCisKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuZXhhbXBsZSB7CisgIG1hcmdpbjogMWVtIDBlbTsKKyAgcGFkZGluZzogMWVtOworICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7Cit9CisKKworZGl2LmluZm9ybWFsZmlndXJlIHAudGl0bGUgYiwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUgcC50aXRsZSBiLAorZGl2LmluZm9ybWFsdGFibGUgcC50aXRsZSBiLAorZGl2LmZpZ3VyZSBwLnRpdGxlIGIsCitkaXYuZXhhbXBsZSBwLnRpdGxlIGIsCitkaXYudGFibGUgcC50aXRsZSBieworICAgIHBhZGRpbmctdG9wOiAwZW07CisgICAgbWFyZ2luLXRvcDogMGVtOworICAgIGZvbnQtc2l6ZTogMTAwJTsKKyAgICBmb250LXdlaWdodDogbm9ybWFsOworfQorCisubWVkaWFvYmplY3QgLmNhcHRpb24sCisubWVkaWFvYmplY3QgLmNhcHRpb24gcCAgeworICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgIGZvbnQtc2l6ZTogODAlOworICBwYWRkaW5nLXRvcDogMC41ZW07CisgIHBhZGRpbmctYm90dG9tOiAwLjVlbTsKK30KKworLmVwaWdyYXBoIHsKKyAgcGFkZGluZy1sZWZ0OiA1NSU7CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworLmVwaWdyYXBoIHAgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuZXBpZ3JhcGggLnF1b3RlIHsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorLmVwaWdyYXBoIC5hdHRyaWJ1dGlvbiB7CisgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK3NwYW4uYXBwbGljYXRpb24geworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy5wcm9ncmFtbGlzdGluZyB7CisgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CisgIGZvbnQtc2l6ZTogODAlOworICB3aGl0ZS1zcGFjZTogcHJlOworICBtYXJnaW46IDEuMzNlbSAwZW07CisgIHBhZGRpbmc6IDEuMzNlbTsKK30KKworLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIG1hcmdpbi10b3A6IDFlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworCit9CisKKy8qIGZvcmNlIGZ1bGwgd2lkdGggb2YgdGFibGUgd2l0aGluIGRpdiAqLworLnRpcCB0YWJsZSwKKy53YXJuaW5nIHRhYmxlLAorLmNhdXRpb24gdGFibGUsCisubm90ZSB0YWJsZSB7CisgIGJvcmRlcjogbm9uZTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIHBhZGRpbmc6IDAuOGVtIDAuMGVtIDAuMGVtIDAuMGVtOworICBtYXJnaW4gOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50aXAgcCwKKy53YXJuaW5nIHAsCisuY2F1dGlvbiBwLAorLm5vdGUgcCB7CisgIG1hcmdpbi10b3A6IDAuNWVtOworICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKKyAgcGFkZGluZy1yaWdodDogMWVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuYWNyb255bSB7CisgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIHBhZGRpbmc6IDAuMDllbSAwLjNlbTsKKyAgbWFyZ2luOiAwZW07Cit9CisKKy5pdGVtaXplZGxpc3QgbGkgeworICBjbGVhcjogbm9uZTsKK30KKworLmZpbGVuYW1lIHsKKyAgZm9udC1zaXplOiBtZWRpdW07CisgIGZvbnQtZmFtaWx5OiBDb3VyaWVyLCBtb25vc3BhY2U7Cit9CisKKworZGl2Lm5hdmhlYWRlciwgZGl2LmhlYWRpbmd7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbGVmdDogMGVtOworICB0b3A6IDBlbTsKKyAgd2lkdGg6IDEwMCU7CisgIGJhY2tncm91bmQtY29sb3I6ICNjZGY7CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgcG9zaXRpb246IGZpeGVkOworICBsZWZ0OiAwZW07CisgIGJvdHRvbTogMGVtOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICB3aWR0aDogMTAwJTsKK30KKworCitkaXYubmF2aGVhZGVyIHRkLAorZGl2Lm5hdmZvb3RlciB0ZCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRoIHsKKyAgLypmb250LWZhbWlseTogR2VvcmdpYSwgVGltZXMsIHNlcmlmOyovCisgIC8qZm9udC1zaXplOiB4LWxhcmdlOyovCisgIGZvbnQtc2l6ZTogODAlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHsKKyAgYm9yZGVyLWxlZnQ6IDBlbTsKKyAgYm9yZGVyLXJpZ2h0OiAwZW07CisgIGJvcmRlci10b3A6IDBlbTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZmb290ZXIgdGFibGUgeworICBib3JkZXItbGVmdDogMGVtOworICBib3JkZXItcmlnaHQ6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogMGVtOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhIHsKKyAgY29sb3I6ICM3Nzc7CisgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KKworLyogbm9ybWFsIHRleHQgaW4gdGhlIGZvb3RlciAqLworZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCB7CisgIGNvbG9yOiBibGFjazsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhOnZpc2l0ZWQsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGE6dmlzaXRlZCB7CisgIGNvbG9yOiAjNDQ0OworfQorCisKKy8qIGxpbmtzIGluIGhlYWRlciBhbmQgZm9vdGVyICovCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6aG92ZXIsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGE6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGNvbG9yOiAjMzNhOworfQorCitkaXYubmF2aGVhZGVyIGhyLAorZGl2Lm5hdmZvb3RlciBociB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworLnFhbmRhc2V0IHRyLnF1ZXN0aW9uIHRkIHAgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisucWFuZGFzZXQgdHIuYW5zd2VyIHRkIHAgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorLmFuc3dlciB0ZCB7CisgIHBhZGRpbmctYm90dG9tOiAxLjVlbTsKK30KKworLmVtcGhhc2lzIHsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKworICAvKioqKioqKioqKioqKiAvCisgLyBkZWNvcmF0aW9ucyAgLworLyAqKioqKioqKioqKioqLworCisudGl0bGVwYWdlIHsKK30KKworLnBhcnQgLnRpdGxlIHsKK30KKworLnN1YnRpdGxlIHsKKyAgICBib3JkZXI6IG5vbmU7Cit9CisKKy8qCitoMSB7CisgIGJvcmRlcjogbm9uZTsKK30KKworaDIgeworICBib3JkZXItdG9wOiBzb2xpZCAwLjJlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoMyB7CisgIGJvcmRlci10b3A6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoNCB7CisgIGJvcmRlcjogMGVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2g1IHsKKyAgYm9yZGVyOiAwZW07Cit9CisqLworCisucHJvZ3JhbWxpc3RpbmcgeworICBib3JkZXI6IHNvbGlkIDFweDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKworCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7Cit9CisKKy5xdWVzdGlvbiB0ZCB7CisgIGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsKK30KKworLmFuc3dlciB7Cit9CisKKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKworZGl2Lm5hdmhlYWRlciwgZGl2LmhlYWRpbmd7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKK30KKworCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgYm9yZGVyLXRvcDogMXB4IHNvbGlkOworfQorCisgIC8qKioqKioqKiogLworIC8gIGNvbG9ycyAgLworLyAqKioqKioqKiovCisKK2JvZHkgeworICBjb2xvcjogIzMzMzsKKyAgYmFja2dyb3VuZDogd2hpdGU7Cit9CisKK2EgeworICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKK30KKworYTpob3ZlciB7CisgIGJhY2tncm91bmQtY29sb3I6ICNkZWRlZGU7Cit9CisKKworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDcsCitoOCB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworfQorCitociB7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKK30KKworCisudGlwLCAud2FybmluZywgLmNhdXRpb24sIC5ub3RlIHsKKyAgYm9yZGVyLWNvbG9yOiAjZmZmOworfQorCisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOworfQorCisKKy53YXJuaW5nIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLmNhdXRpb24geworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisudGlwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLm5vdGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBjb2xvcjogIzA0NDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCitwcmUucHJvZ3JhbWxpc3RpbmcgeworICBjb2xvcjogYmxhY2s7CisgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKKyAgYm9yZGVyLXdpZHRoOiAycHg7Cit9CisKKy5ndWltZW51LAorLmd1aWxhYmVsLAorLmd1aW1lbnVpdGVtIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICBib3JkZXItY29sb3I6ICM5OTk7Cit9CisKKworZGl2Lm5hdmhlYWRlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKworZGl2Lm5hdmZvb3RlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKy53cml0ZXJub3RlcyB7CisgIGNvbG9yOiByZWQ7Cit9CisKKworICAvKioqKioqKioqKiogLworIC8gIGdyYXBoaWNzICAvCisvICoqKioqKioqKioqLworCisvKgorYm9keSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2JvZHlfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5uYXZoZWFkZXIsCisubm90ZSwKKy50aXAgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ub3RlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisud2FybmluZywKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvd2FybmluZ19iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLmZpZ3VyZSwKKy5pbmZvcm1hbGZpZ3VyZSwKKy5leGFtcGxlLAorLmluZm9ybWFsZXhhbXBsZSwKKy50YWJsZSwKKy5pbmZvcm1hbHRhYmxlIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvZmlndXJlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisqLworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDd7Cit9CisKKy8qCitFeGFtcGxlIG9mIGhvdyB0byBzdGljayBhbiBpbWFnZSBhcyBwYXJ0IG9mIHRoZSB0aXRsZS4KKworZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL3doaXRlLW9uLWJsYWNrLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKK30KKyovCisKK2Rpdi5wcmVmYWNlIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmNvbG9waG9uIC50aXRsZSwKK2Rpdi5jaGFwdGVyIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKK30KKworZGl2LnNlY3Rpb24gZGl2LnNlY3Rpb24gLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuc2VjdDIgLnRpdGxlcGFnZSAudGl0bGUgeworICAgIGJhY2tncm91bmQ6IG5vbmU7Cit9CisKKworaDEudGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgaGVpZ2h0OiAyNTZweDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworaDIuc3VidGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKKyAgd2lkdGg6IDBweDsKKyAgZGlzcGxheTogbm9uZTsKK30KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvICBwaXBwaW4uZ2ltcC5vcmcgc3BlY2lmaWMgYWx0ZXJhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICBjb2xvcjogIzc3NzsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmc6IDA7CisgIG1hcmdpbjogMDsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICB0b3A6IDBweDsKKyAgbGVmdDogMHB4OworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiA1MHB4OworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvaGVhZGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworICBib3JkZXI6IG5vbmU7Cit9CisKK2Rpdi5oZWFkaW5nIGEgeworICBjb2xvcjogIzQ0NDsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICBib3JkZXI6IG5vbmU7CisgIGNvbG9yOiAjZGRkOworICBmb250LXNpemU6IDgwJTsKKyAgdGV4dC1hbGlnbjpyaWdodDsKKworICB3aWR0aDogMTAwJTsKKyAgcGFkZGluZy10b3A6IDEwcHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgYm90dG9tOiAwcHg7CisgIGxlZnQ6IDBweDsKKworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvZm9vdGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKK30KKyovCisKKworCisgIC8qKioqKioqKioqKioqKioqKiogLworIC8gIG5hc3R5IGllIHR3ZWFrcyAgLworLyAqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworICBtYXJnaW4tbGVmdDpleHByZXNzaW9uKCItNWVtIik7Cit9Citib2R5IHsKKyAgcGFkZGluZzpleHByZXNzaW9uKCI0ZW0gNWVtIDBlbSA1ZW0iKTsKK30KKyovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gbW96aWxsYSB2ZW5kb3Igc3BlY2lmaWMgY3NzIGV4dGVuc2lvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgLW1vei1vcGFjaXR5OiAwLjhlbTsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlLAorLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC41ZW07Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC4zZW07Cit9CisqLworCit0YWJsZSB0ciB0ZCB0YWJsZSB0ciB0ZCB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworaHIgeworICBkaXNwbGF5OiBub25lOworfQorCit0YWJsZSB7CisgIGJvcmRlcjogMGVtOworfQorCisgLnBob3RvIHsKKyAgZmxvYXQ6IHJpZ2h0OworICBtYXJnaW4tbGVmdDogICAxLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWF4LXdpZHRoOiAgICAgIDE3ZW07CisgIGJvcmRlcjogICAgIDFweCBzb2xpZCBncmF5OworICBwYWRkaW5nOiAgICAzcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorIC5zZXBlcmF0b3IgeworICAgcGFkZGluZy10b3A6IDJlbTsKKyAgIGNsZWFyOiBib3RoOworICB9CisKKyAgI3ZhbGlkYXRvcnMgeworICAgICAgbWFyZ2luLXRvcDogNWVtOworICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgICBjb2xvcjogIzc3NzsKKyAgfQorICBAbWVkaWEgcHJpbnQgeworICAgICAgYm9keSB7CisgICAgICAgICAgZm9udC1zaXplOiA4cHQ7CisgICAgICB9CisgICAgICAubm9wcmludCB7CisgICAgICAgICAgZGlzcGxheTogbm9uZTsKKyAgICAgIH0KKyAgfQorCisKKy50aXAsCisubm90ZSB7CisgICBiYWNrZ3JvdW5kOiAjZjBmMGYyOworICAgY29sb3I6ICMzMzM7CisgICBwYWRkaW5nOiAyMHB4OworICAgbWFyZ2luOiAyMHB4OworfQorCisudGlwIGgzLAorLm5vdGUgaDMgeworICAgcGFkZGluZzogMGVtOworICAgbWFyZ2luOiAwZW07CisgICBmb250LXNpemU6IDJlbTsKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgY29sb3I6ICMzMzM7Cit9CisKKy50aXAgYSwKKy5ub3RlIGEgeworICAgY29sb3I6ICMzMzM7CisgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmZvb3Rub3RlIHsKKyAgIGZvbnQtc2l6ZTogc21hbGw7CisgICBjb2xvcjogIzMzMzsKK30KKworLyogQ2hhbmdlcyB0aGUgYW5ub3VuY2VtZW50IHRleHQgKi8KKy50aXAgaDMsCisud2FybmluZyBoMywKKy5jYXV0aW9uIGgzLAorLm5vdGUgaDMgeworICAgZm9udC1zaXplOmxhcmdlOworICAgY29sb3I6ICMwMDU1N0Q7Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXlwLWludHJvLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZjVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXlwLWludHJvLnhtbApAQCAtMCwwICsxLDEzNTcgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzxjaGFwdGVyIGlkPSdvdmVydmlldy15cCc+CisgICAgPHRpdGxlPkludHJvZHVjaW5nIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KKworICAgIDxzZWN0aW9uIGlkPSd3aGF0LWlzLXRoZS15b2N0by1wcm9qZWN0Jz4KKyAgICAgICAgPHRpdGxlPldoYXQgaXMgdGhlIFlvY3RvIFByb2plY3Q/PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIGFuIG9wZW4gc291cmNlIGNvbGxhYm9yYXRpb24gcHJvamVjdAorICAgICAgICAgICAgdGhhdCBoZWxwcyBkZXZlbG9wZXJzIGNyZWF0ZSBjdXN0b20gTGludXgtYmFzZWQgc3lzdGVtcyB0aGF0IGFyZQorICAgICAgICAgICAgZGVzaWduZWQgZm9yIGVtYmVkZGVkIHByb2R1Y3RzIHJlZ2FyZGxlc3Mgb2YgdGhlIHByb2R1Y3QncyBoYXJkd2FyZQorICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBhIGZsZXhpYmxlIHRvb2xzZXQgYW5kIGEgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIGVudmlyb25tZW50IHRoYXQgYWxsb3dzIGVtYmVkZGVkIGRldmljZSBkZXZlbG9wZXJzIGFjcm9zcyB0aGUKKyAgICAgICAgICAgIHdvcmxkIHRvIGNvbGxhYm9yYXRlIHRocm91Z2ggc2hhcmVkIHRlY2hub2xvZ2llcywgc29mdHdhcmUgc3RhY2tzLAorICAgICAgICAgICAgY29uZmlndXJhdGlvbnMsIGFuZCBiZXN0IHByYWN0aWNlcyB1c2VkIHRvIGNyZWF0ZSB0aGVzZSB0YWlsb3JlZAorICAgICAgICAgICAgTGludXggaW1hZ2VzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaG91c2FuZHMgb2YgZGV2ZWxvcGVycyB3b3JsZHdpZGUgaGF2ZSBkaXNjb3ZlcmVkIHRoYXQgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBib3RoIHN5c3RlbXMgYW5kIGFwcGxpY2F0aW9ucworICAgICAgICAgICAgZGV2ZWxvcG1lbnQsIGFyY2hpdmFsIGFuZCBtYW5hZ2VtZW50IGJlbmVmaXRzLCBhbmQgY3VzdG9taXphdGlvbnMKKyAgICAgICAgICAgIHVzZWQgZm9yIHNwZWVkLCBmb290cHJpbnQsIGFuZCBtZW1vcnkgdXRpbGl6YXRpb24uCisgICAgICAgICAgICBUaGUgcHJvamVjdCBpcyBhIHN0YW5kYXJkIHdoZW4gaXQgY29tZXMgdG8gZGVsaXZlcmluZyBlbWJlZGRlZAorICAgICAgICAgICAgc29mdHdhcmUgc3RhY2tzLgorICAgICAgICAgICAgVGhlIHByb2plY3QgYWxsb3dzIHNvZnR3YXJlIGN1c3RvbWl6YXRpb25zIGFuZCBidWlsZCBpbnRlcmNoYW5nZQorICAgICAgICAgICAgZm9yIG11bHRpcGxlIGhhcmR3YXJlIHBsYXRmb3JtcyBhcyB3ZWxsIGFzIHNvZnR3YXJlIHN0YWNrcyB0aGF0CisgICAgICAgICAgICBjYW4gYmUgbWFpbnRhaW5lZCBhbmQgc2NhbGVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmEgaWQ9J3lwLWtleS1kZXYtZWxlbWVudHMnPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9rZXktZGV2LWVsZW1lbnRzLnBuZyIgZm9ybWF0PSJQTkciIGFsaWduPSdjZW50ZXInIHdpZHRoPSI4aW4iLz4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGZ1cnRoZXIgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0LCB5b3UKKyAgICAgICAgICAgIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4gdGhpcworICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZW1iZWRkZWQuY29tL2VsZWN0cm9uaWNzLWJsb2dzL3NheS13aGF0LS80NDU4NjAwL1doeS10aGUtWW9jdG8tUHJvamVjdC1mb3ItbXktSW9ULVByb2plY3QtJz5hcnRpY2xlPC91bGluaz4KKyAgICAgICAgICAgIGJ5IERyZXcgTW9zZWxleSBhbmQgaW4gdGhpcyBzaG9ydCBpbnRyb2R1Y3RvcnkKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9dXRacEtNN2k1WjQnPnZpZGVvPC91bGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyBhZHZhbnRhZ2VzIGFuZCBjaGFsbGVuZ2VzCisgICAgICAgICAgICB0aWVkIHRvIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLWZlYXR1cmVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5GZWF0dXJlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgZmVhdHVyZXMgYW5kIGFkdmFudGFnZXMgb2YgdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+V2lkZWx5IEFkb3B0ZWQgQWNyb3NzIHRoZSBJbmR1c3RyeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VtaWNvbmR1Y3Rvciwgb3BlcmF0aW5nIHN5c3RlbSwgc29mdHdhcmUsIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSB2ZW5kb3JzIGV4aXN0IHdob3NlIHByb2R1Y3RzIGFuZCBzZXJ2aWNlcworICAgICAgICAgICAgICAgICAgICAgICAgYWRvcHQgYW5kIHN1cHBvcnQgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSBsb29rIGF0IHRoZSBZb2N0byBQcm9qZWN0IGNvbW11bml0eSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21wYW5pZXMgaW52b2x2ZWQgd2l0aCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIHNlZSB0aGUgIkNPTU1VTklUWSIgYW5kICJFQ09TWVNURU0iIHRhYnMKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBob21lIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFyY2hpdGVjdHVyZSBBZ25vc3RpYzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBJbnRlbCwgQVJNLCBNSVBTLCBBTUQsIFBQQworICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG90aGVyIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBNb3N0IE9ETXMsIE9TVnMsIGFuZCBjaGlwIHZlbmRvcnMgY3JlYXRlIGFuZCBzdXBwbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIEJTUHMgdGhhdCBzdXBwb3J0IHRoZWlyIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgY3VzdG9tIHNpbGljb24sIHlvdSBjYW4gY3JlYXRlIGEgQlNQCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHN1cHBvcnRzIHRoYXQgYXJjaGl0ZWN0dXJlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXNpZGUgZnJvbSBsb3RzIG9mIGFyY2hpdGVjdHVyZSBzdXBwb3J0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZnVsbHkgc3VwcG9ydHMgYSB3aWRlIHJhbmdlIG9mIGRldmljZQorICAgICAgICAgICAgICAgICAgICAgICAgZW11bGF0aW9uIHRocm91Z2ggdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW1hZ2VzIGFuZCBDb2RlIFRyYW5zZmVyIEVhc2lseTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBvdXRwdXQgY2FuIGVhc2lseSBtb3ZlIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMgd2l0aG91dCBtb3ZpbmcgdG8gbmV3IGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGlmIHlvdSBoYXZlIHVzZWQgdGhlIFlvY3RvIFByb2plY3QgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhbiBpbWFnZSBvciBhcHBsaWNhdGlvbiBhbmQgeW91IGZpbmQgeW91cnNlbGYKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhYmxlIHRvIHN1cHBvcnQgaXQsIGNvbW1lcmNpYWwgTGludXggdmVuZG9ycyBzdWNoCisgICAgICAgICAgICAgICAgICAgICAgICBhcyBXaW5kIFJpdmVyLCBNZW50b3IgR3JhcGhpY3MsIFRpbWVzeXMsIGFuZCBFTkVBIGNvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICB0YWtlIGl0IGFuZCBwcm92aWRlIG9uZ29pbmcgc3VwcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHZlbmRvcnMgaGF2ZSBvZmZlcmluZ3MgdGhhdCBhcmUgYnVpbHQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GbGV4aWJpbGl0eTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29ycG9yYXRpb25zIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBtYW55IGRpZmZlcmVudCB3YXlzLgorICAgICAgICAgICAgICAgICAgICAgICAgT25lIGV4YW1wbGUgaXMgdG8gY3JlYXRlIGFuIGludGVybmFsIExpbnV4IGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgYXMgYSBjb2RlIGJhc2UgdGhlIGNvcnBvcmF0aW9uIGNhbiB1c2UgYWNyb3NzIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0IGdyb3Vwcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRocm91Z2ggY3VzdG9taXphdGlvbiBhbmQgbGF5ZXJpbmcsIGEgcHJvamVjdCBncm91cAorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGxldmVyYWdlIHRoZSBiYXNlIExpbnV4IGRpc3RyaWJ1dGlvbiB0byBjcmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgZGlzdHJpYnV0aW9uIHRoYXQgd29ya3MgZm9yIHRoZWlyIHByb2R1Y3QgbmVlZHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPklkZWFsIGZvciBDb25zdHJhaW5lZCBFbWJlZGRlZCBhbmQgSW9UIGRldmljZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVubGlrZSBhIGZ1bGwgTGludXggZGlzdHJpYnV0aW9uLCB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgdG8gY3JlYXRlIGV4YWN0bHkgd2hhdCB5b3UgbmVlZCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtYmVkZGVkIGRldmljZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugb25seSBhZGQgdGhlIGZlYXR1cmUgc3VwcG9ydCBvciBwYWNrYWdlcyB0aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgYWJzb2x1dGVseSBuZWVkIGZvciB0aGUgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGRldmljZXMgdGhhdCBoYXZlIGRpc3BsYXkgaGFyZHdhcmUsIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgc3lzdGVtIGNvbXBvbmVudHMgc3VjaCBhcyBYMTEsIEdUSyssIFF0LAorICAgICAgICAgICAgICAgICAgICAgICAgQ2x1dHRlciwgYW5kIFNETCAoYW1vbmcgb3RoZXJzKSB0byBjcmVhdGUgYSByaWNoIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaWVuY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZGV2aWNlcyB0aGF0IGRvIG5vdCBoYXZlIGEgZGlzcGxheSBvciB3aGVyZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgdG8gdXNlIGFsdGVybmF0aXZlIFVJIGZyYW1ld29ya3MsIHlvdSBjYW4gY2hvb3NlCisgICAgICAgICAgICAgICAgICAgICAgICB0byBub3QgaW5zdGFsbCB0aGVzZSBjb21wb25lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db21wcmVoZW5zaXZlIFRvb2xjaGFpbiBDYXBhYmlsaXRpZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvb2xjaGFpbnMgZm9yIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzIHNhdGlzZnkgbW9zdAorICAgICAgICAgICAgICAgICAgICAgICAgdXNlIGNhc2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91ciBoYXJkd2FyZSBzdXBwb3J0cyBmZWF0dXJlcyB0aGF0IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgbm90IHBhcnQgb2YgYSBzdGFuZGFyZCB0b29sY2hhaW4sIHlvdSBjYW4gZWFzaWx5CisgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21pemUgdGhhdCB0b29sY2hhaW4gdGhyb3VnaCBzcGVjaWZpY2F0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybS1zcGVjaWZpYyB0dW5pbmcgcGFyYW1ldGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFuZCwgc2hvdWxkIHlvdSBuZWVkIHRvIHVzZSBhIHRoaXJkLXBhcnR5IHRvb2xjaGFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lY2hhbmlzbXMgYnVpbHQgaW50byB0aGUgWW9jdG8gUHJvamVjdCBhbGxvdyBmb3IgdGhhdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWVjaGFuaXNtIFJ1bGVzIE92ZXIgUG9saWN5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c2luZyBvbiBtZWNoYW5pc20gcmF0aGVyIHRoYW4gcG9saWN5IGVuc3VyZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGFyZSBmcmVlIHRvIHNldCBwb2xpY2llcyBiYXNlZCBvbiB0aGUgbmVlZHMgb2YgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgZGVzaWduIGluc3RlYWQgb2YgYWRvcHRpbmcgZGVjaXNpb25zIGVuZm9yY2VkIGJ5IHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBzb2Z0d2FyZSBwcm92aWRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlcyBhIExheWVyIE1vZGVsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndGhlLXlvY3RvLXByb2plY3QtbGF5ZXItbW9kZWwnPmxheWVyIGluZnJhc3RydWN0dXJlPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBpbnRvIHNlcGFyYXRlIGJ1bmRsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGluY3JlbWVudGFsbHkgYWRkIHRoZXNlIGdyb3VwZWQgZnVuY3Rpb25hbGl0aWVzCisgICAgICAgICAgICAgICAgICAgICAgICB0byB5b3VyIHByb2plY3QgYXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgbGF5ZXJzIHRvIGlzb2xhdGUgYW5kIGdyb3VwIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZHVjZXMgcHJvamVjdCBjb21wbGV4aXR5IGFuZCByZWR1bmRhbmN5LCBhbGxvd3MgeW91CisgICAgICAgICAgICAgICAgICAgICAgICB0byBlYXNpbHkgZXh0ZW5kIHRoZSBzeXN0ZW0sIG1ha2UgY3VzdG9taXphdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQga2VlcCBmdW5jdGlvbmFsaXR5IG9yZ2FuaXplZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN1cHBvcnRzIFBhcnRpYWwgQnVpbGRzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGJ1aWxkIGFuZCByZWJ1aWxkIGluZGl2aWR1YWwgcGFja2FnZXMgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgYWNjb21wbGlzaGVzIHRoaXMgdGhyb3VnaCBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NoYXJlZC1zdGF0ZS1jYWNoZSc+c2hhcmVkLXN0YXRlIGNhY2hlPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgKHNzdGF0ZSkgc2NoZW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgQmVpbmcgYWJsZSB0byBidWlsZCBhbmQgZGVidWcgY29tcG9uZW50cyBpbmRpdmlkdWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVhc2VzIHByb2plY3QgZGV2ZWxvcG1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlbGVhc2VzIEFjY29yZGluZyB0byBhIFN0cmljdCBTY2hlZHVsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgTWFqb3IgcmVsZWFzZXMgb2NjdXIgb24gYQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXJlbGVhc2UtcHJvY2Vzcyc+c2l4LW1vbnRoIGN5Y2xlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY3RhYmx5IGluIE9jdG9iZXIgYW5kIEFwcmlsLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1vc3QgcmVjZW50IHR3byByZWxlYXNlcyBzdXBwb3J0IHBvaW50IHJlbGVhc2VzCisgICAgICAgICAgICAgICAgICAgICAgICB0byBhZGRyZXNzIGNvbW1vbiB2dWxuZXJhYmlsaXRpZXMgYW5kIGV4cG9zdXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcHJlZGljdGFiaWxpdHkgaXMgY3J1Y2lhbCBmb3IgcHJvamVjdHMgYmFzZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBhbGxvd3MgZGV2ZWxvcG1lbnQgdGVhbXMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHBsYW4gYWN0aXZpdGllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmljaCBFY29zeXN0ZW0gb2YgSW5kaXZpZHVhbHMgYW5kIE9yZ2FuaXphdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBvcGVuIHNvdXJjZSBwcm9qZWN0cywgdGhlIHZhbHVlIG9mIGNvbW11bml0eSBpcworICAgICAgICAgICAgICAgICAgICAgICAgdmVyeSBpbXBvcnRhbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvcnVtcywgZXhwZXJ0aXNlLCBhbmQgYWN0aXZlIGRldmVsb3BlcnMgd2hvCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSB0byBwdXNoIHRoZSBZb2N0byBQcm9qZWN0IGZvcndhcmQgYXJlIHJlYWRpbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QmluYXJ5IFJlcHJvZHVjaWJpbGl0eTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgYWxsb3dzIHlvdSB0byBiZSB2ZXJ5IHNwZWNpZmljIGFib3V0CisgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgYW5kIGFjaGlldmVzIHZlcnkgaGlnaCBwZXJjZW50YWdlcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5IHJlcHJvZHVjaWJpbGl0eSAoZS5nLiA5OS44JSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIGRpc3RyaWJ1dGlvbnMgYXJlIG5vdCBzcGVjaWZpYyBhYm91dCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgYXJlIHB1bGxlZCBpbiBhbmQgaW4gd2hhdCBvcmRlciB0byBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMsIG90aGVyIGJ1aWxkIHN5c3RlbXMgY2FuIGFyYml0cmFyaWx5CisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MaWNlbnNlIE1hbmlmZXN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBhCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5saWNlbnNlIG1hbmlmZXN0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciByZXZpZXcgYnkgcGVvcGxlIHdobyBuZWVkIHRvIHRyYWNrIHRoZSB1c2Ugb2Ygb3BlbgorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIGxpY2Vuc2VzIChlLmcubGVnYWwgdGVhbXMpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ3MtY2hhbGxlbmdlcyc+CisgICAgICAgICAgICA8dGl0bGU+Q2hhbGxlbmdlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcmVzZW50cyBjaGFsbGVuZ2VzIHlvdSBtaWdodCBlbmNvdW50ZXIKKyAgICAgICAgICAgICAgICB3aGVuIGRldmVsb3BpbmcgdXNpbmcgdGhlIFlvY3RvIFByb2plY3Q6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0ZWVwIExlYXJuaW5nIEN1cnZlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBoYXMgYSBzdGVlcCBsZWFybmluZyBjdXJ2ZSBhbmQgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICBtYW55IGRpZmZlcmVudCB3YXlzIHRvIGFjY29tcGxpc2ggc2ltaWxhciB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGNhbiBiZSBkaWZmaWN1bHQgdG8gY2hvb3NlIGhvdyB0byBwcm9jZWVkIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcnlpbmcgbWV0aG9kcyBleGlzdCBieSB3aGljaCB0byBhY2NvbXBsaXNoIGEgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVuZGVyc3RhbmRpbmcgV2hhdCBDaGFuZ2VzIFlvdSBOZWVkIHRvIE1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBZb3VyIERlc2lnbiBSZXF1aXJlcyBTb21lIFJlc2VhcmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCZXlvbmQgdGhlIHNpbXBsZSB0dXRvcmlhbCBzdGFnZSwgdW5kZXJzdGFuZGluZyB3aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIG5lZWQgdG8gYmUgbWFkZSBmb3IgeW91ciBwYXJ0aWN1bGFyIGRlc2lnbgorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIHJlcXVpcmUgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgcmVzZWFyY2ggYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBpbnZlc3RpZ2F0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIHRoYXQgaGVscHMgeW91IHRyYW5zaXRpb24gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5aW5nIG91dCB0aGUgWW9jdG8gUHJvamVjdCB0byB1c2luZyBpdCBmb3IgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jcy93aGF0LWktd2lzaC1pZC1rbm93bi8nPldoYXQgSSB3aXNoIEknZCBLbm93bjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2NzL3RyYW5zaXRpb25pbmctdG8tYS1jdXN0b20tZW52aXJvbm1lbnQvJz5UcmFuc2l0aW9uaW5nIHRvIGEgQ3VzdG9tIEVudmlyb25tZW50IGZvciBTeXN0ZW1zIERldmVsb3BtZW50PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudHMgb24gdGhlIFlvY3RvIFByb2plY3Qgd2Vic2l0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJvamVjdCBXb3JrZmxvdyBDb3VsZCBCZSBDb25mdXNpbmc6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nb3ZlcnZpZXctZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQnPllvY3RvIFByb2plY3Qgd29ya2Zsb3c8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBjb25mdXNpbmcgaWYgeW91IGFyZSB1c2VkIHRvIHRyYWRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNrdG9wIGFuZCBzZXJ2ZXIgc29mdHdhcmUgZGV2ZWxvcG1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBhIGRlc2t0b3AgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIG1lY2hhbmlzbXMgZXhpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGVhc2lseSBwdWxsIGFuZCBpbnN0YWxsIG5ldyBwYWNrYWdlcywgd2hpY2ggYXJlCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBpY2FsbHkgcHJlLWNvbXBpbGVkIGJpbmFyaWVzIGZyb20gc2VydmVycyBhY2Nlc3NpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBvdmVyIHRoZSBJbnRlcm5ldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LCB5b3UgbXVzdCBtb2RpZnkgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBhbmQgcmVidWlsZCB0byBhZGQgYWRkaXRpb25hbCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+V29ya2luZyBpbiBhIENyb3NzLUJ1aWxkIEVudmlyb25tZW50IENhbgorICAgICAgICAgICAgICAgICAgICAgICAgRmVlbCBVbmZhbWlsaWFyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIGRldmVsb3BpbmcgY29kZSB0byBydW4gb24gYSB0YXJnZXQsIGNvbXBpbGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aW9uLCBhbmQgdGVzdGluZyBkb25lIG9uIHRoZSBhY3R1YWwgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgZmFzdGVyIHRoYW4gcnVubmluZyBhIEJpdEJha2UgYnVpbGQgb24gYQorICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaG9zdCBhbmQgdGhlbiBkZXBsb3lpbmcgYmluYXJpZXMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgZm9yIHRlc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSB0aGUgWW9jdG8gUHJvamVjdCBkb2VzIHN1cHBvcnQgZGV2ZWxvcG1lbnQgdG9vbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQsIHRoZSBhZGRpdGlvbmFsIHN0ZXAgb2YgaW50ZWdyYXRpbmcgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlcyBiYWNrIGludG8gdGhlIFlvY3RvIFByb2plY3QgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvdWxkIGJlIHJlcXVpcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBhbiBpbnRlcm1lZGlhdGUgYXBwcm9hY2ggdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgaW52b2x2ZXMgbWFraW5nIGNoYW5nZXMgb24gdGhlIGRldmVsb3BtZW50IHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSBCaXRCYWtlIGVudmlyb25tZW50IGFuZCB0aGVuIGRlcGxveWluZyBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXBkYXRlZCBwYWNrYWdlcyB0byB0aGUgdGFyZ2V0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIHBhY2thZ2VzIGluIHN0YW5kYXJkIGZvcm1hdHMgKGkuZS4gUlBNLAorICAgICAgICAgICAgICAgICAgICAgICAgREVCLCBJUEssIGFuZCBUQVIpLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkZXBsb3kgdGhlc2UgcGFja2FnZXMgaW50byB0aGUgcnVubmluZyBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQgYnkgdXNpbmcgdXRpbGl0aWVzIG9uIHRoZSB0YXJnZXQgc3VjaAorICAgICAgICAgICAgICAgICAgICAgICAgYXMgPGZpbGVuYW1lPnJwbTwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aXBrPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYWwgQnVpbGQgVGltZXMgQ2FuIGJlIFNpZ25pZmljYW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBMb25nIGluaXRpYWwgYnVpbGQgdGltZXMgYXJlIHVuZm9ydHVuYXRlbHkgdW5hdm9pZGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGR1ZSB0byB0aGUgbGFyZ2UgbnVtYmVyIG9mIHBhY2thZ2VzIGluaXRpYWxseSBidWlsdAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBzY3JhdGNoIGZvciBhIGZ1bGx5IGZ1bmN0aW9uaW5nIExpbnV4IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhhdCBpbml0aWFsIGJ1aWxkIGlzIGNvbXBsZXRlZCwgaG93ZXZlciwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQtc3RhdGUgKHNzdGF0ZSkgY2FjaGUgbWVjaGFuaXNtIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZXMga2VlcHMgdGhlIHN5c3RlbSBmcm9tIHJlYnVpbGRpbmcgcGFja2FnZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBub3QgYmVlbiAidG91Y2hlZCIgc2luY2UgdGhlIGxhc3QgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3N0YXRlIG1lY2hhbmlzbSBzaWduaWZpY2FudGx5IHJlZHVjZXMgdGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzdWNjZXNzaXZlIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3RoZS15b2N0by1wcm9qZWN0LWxheWVyLW1vZGVsJz4KKyAgICAgICAgPHRpdGxlPlRoZSBZb2N0byBQcm9qZWN0IExheWVyIE1vZGVsPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0J3MgIkxheWVyIE1vZGVsIiBpcyBhIGRldmVsb3BtZW50IG1vZGVsIGZvcgorICAgICAgICAgICAgZW1iZWRkZWQgYW5kIElvVCBMaW51eCBjcmVhdGlvbiB0aGF0IGRpc3Rpbmd1aXNoZXMgdGhlCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGZyb20gb3RoZXIgc2ltcGxlIGJ1aWxkIHN5c3RlbXMuCisgICAgICAgICAgICBUaGUgTGF5ZXIgTW9kZWwgc2ltdWx0YW5lb3VzbHkgc3VwcG9ydHMgY29sbGFib3JhdGlvbiBhbmQKKyAgICAgICAgICAgIGN1c3RvbWl6YXRpb24uCisgICAgICAgICAgICBMYXllcnMgYXJlIHJlcG9zaXRvcmllcyB0aGF0IGNvbnRhaW4gcmVsYXRlZCBzZXRzIG9mIGluc3RydWN0aW9ucworICAgICAgICAgICAgdGhhdCB0ZWxsIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPgorICAgICAgICAgICAgd2hhdCB0byBkby4KKyAgICAgICAgICAgIFlvdSBjYW4gY29sbGFib3JhdGUsIHNoYXJlLCBhbmQgcmV1c2UgbGF5ZXJzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBMYXllcnMgY2FuIGNvbnRhaW4gY2hhbmdlcyB0byBwcmV2aW91cyBpbnN0cnVjdGlvbnMgb3Igc2V0dGluZ3MKKyAgICAgICAgICAgIGF0IGFueSB0aW1lLgorICAgICAgICAgICAgVGhpcyBwb3dlcmZ1bCBvdmVycmlkZSBjYXBhYmlsaXR5IGlzIHdoYXQgYWxsb3dzIHlvdSB0byBjdXN0b21pemUKKyAgICAgICAgICAgIHByZXZpb3VzbHkgc3VwcGxpZWQgY29sbGFib3JhdGl2ZSBvciBjb21tdW5pdHkgbGF5ZXJzIHRvIHN1aXQgeW91cgorICAgICAgICAgICAgcHJvZHVjdCByZXF1aXJlbWVudHMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSB1c2UgZGlmZmVyZW50IGxheWVycyB0byBsb2dpY2FsbHkgc2VwYXJhdGUgaW5mb3JtYXRpb24gaW4geW91cgorICAgICAgICAgICAgYnVpbGQuCisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCB5b3UgY291bGQgaGF2ZSBCU1AsIEdVSSwgZGlzdHJvIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICBtaWRkbGV3YXJlLCBvciBhcHBsaWNhdGlvbiBsYXllcnMuCisgICAgICAgICAgICBQdXR0aW5nIHlvdXIgZW50aXJlIGJ1aWxkIGludG8gb25lIGxheWVyIGxpbWl0cyBhbmQgY29tcGxpY2F0ZXMKKyAgICAgICAgICAgIGZ1dHVyZSBjdXN0b21pemF0aW9uIGFuZCByZXVzZS4KKyAgICAgICAgICAgIElzb2xhdGluZyBpbmZvcm1hdGlvbiBpbnRvIGxheWVycywgb24gdGhlIG90aGVyIGhhbmQsIGhlbHBzCisgICAgICAgICAgICBzaW1wbGlmeSBmdXR1cmUgY3VzdG9taXphdGlvbnMgYW5kIHJldXNlLgorICAgICAgICAgICAgWW91IG1pZ2h0IGZpbmQgaXQgdGVtcHRpbmcgdG8ga2VlcCBldmVyeXRoaW5nIGluIG9uZSBsYXllciB3aGVuCisgICAgICAgICAgICB3b3JraW5nIG9uIGEgc2luZ2xlIHByb2plY3QuCisgICAgICAgICAgICBIb3dldmVyLCB0aGUgbW9yZSBtb2R1bGFyIHlvdXIgTWV0YWRhdGEsIHRoZSBlYXNpZXIKKyAgICAgICAgICAgIGl0IGlzIHRvIGNvcGUgd2l0aCBmdXR1cmUgY2hhbmdlcy4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBsYXllcnMgZnJvbSBzaWxpY29uCisgICAgICAgICAgICAgICAgICAgICAgICB2ZW5kb3JzIHdoZW4gcG9zc2libGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRmFtaWxpYXJpemUgeW91cnNlbGYgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vY2FmZmVsbGktc3RhZ2luZy55b2N0b3Byb2plY3Qub3JnL3NvZnR3YXJlLW92ZXJ2aWV3L2xheWVycy8nPllvY3RvIFByb2plY3QgY3VyYXRlZCBsYXllciBpbmRleDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2JyYW5jaC9tYXN0ZXIvbGF5ZXJzLyc+T3BlbkVtYmVkZGVkIGxheWVyIGluZGV4PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGF0dGVyIGNvbnRhaW5zIG1vcmUgbGF5ZXJzIGJ1dCB0aGV5IGFyZSBsZXNzCisgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxseSB2YWxpZGF0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXJzIHN1cHBvcnQgdGhlIGluY2x1c2lvbiBvZiB0ZWNobm9sb2dpZXMsIGhhcmR3YXJlCisgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLCBhbmQgc29mdHdhcmUgY29tcG9uZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFraW5nLXN1cmUteW91ci1sYXllci1pcy1jb21wYXRpYmxlLXdpdGgteW9jdG8tcHJvamVjdCc+WW9jdG8gUHJvamVjdCBDb21wYXRpYmxlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lnbmF0aW9uIHByb3ZpZGVzIGEgbWluaW11bSBsZXZlbCBvZiBzdGFuZGFyZGl6YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udHJpYnV0ZXMgdG8gYSBzdHJvbmcgZWNvc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgIllQIENvbXBhdGlibGUiIGlzIGFwcGxpZWQgdG8gYXBwcm9wcmlhdGUgcHJvZHVjdHMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBzb2Z0d2FyZSBjb21wb25lbnRzIHN1Y2ggYXMgQlNQcywgb3RoZXIgT0UtY29tcGF0aWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLCBhbmQgcmVsYXRlZCBvcGVuLXNvdXJjZSBwcm9qZWN0cywgYWxsb3dpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlciB0byB1c2UgWW9jdG8gUHJvamVjdCBiYWRnZXMgYW5kIGJyYW5kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NldHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gaWxsdXN0cmF0ZSBob3cgbGF5ZXJzIGFyZSB1c2VkIHRvIGtlZXAgdGhpbmdzIG1vZHVsYXIsIGNvbnNpZGVyCisgICAgICAgICAgICBtYWNoaW5lIGN1c3RvbWl6YXRpb25zLgorICAgICAgICAgICAgVGhlc2UgdHlwZXMgb2YgY3VzdG9taXphdGlvbnMgdHlwaWNhbGx5IHJlc2lkZSBpbiBhIHNwZWNpYWwgbGF5ZXIsCisgICAgICAgICAgICByYXRoZXIgdGhhbiBhIGdlbmVyYWwgbGF5ZXIsIGNhbGxlZCBhIEJTUCBMYXllci4KKyAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgbWFjaGluZSBjdXN0b21pemF0aW9ucyBzaG91bGQgYmUgaXNvbGF0ZWQgZnJvbQorICAgICAgICAgICAgcmVjaXBlcyBhbmQgTWV0YWRhdGEgdGhhdCBzdXBwb3J0IGEgbmV3IEdVSSBlbnZpcm9ubWVudCwKKyAgICAgICAgICAgIGZvciBleGFtcGxlLgorICAgICAgICAgICAgVGhpcyBzaXR1YXRpb24gZ2l2ZXMgeW91IGEgY291cGxlIG9mIGxheWVyczogb25lIGZvciB0aGUgbWFjaGluZQorICAgICAgICAgICAgY29uZmlndXJhdGlvbnMsIGFuZCBvbmUgZm9yIHRoZSBHVUkgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCwgaG93ZXZlciwgdGhhdCB0aGUgQlNQIGxheWVyIGNhbgorICAgICAgICAgICAgc3RpbGwgbWFrZSBtYWNoaW5lLXNwZWNpZmljIGFkZGl0aW9ucyB0byByZWNpcGVzIHdpdGhpbiB0aGUgR1VJCisgICAgICAgICAgICBlbnZpcm9ubWVudCBsYXllciB3aXRob3V0IHBvbGx1dGluZyB0aGUgR1VJIGxheWVyIGl0c2VsZgorICAgICAgICAgICAgd2l0aCB0aG9zZSBtYWNoaW5lLXNwZWNpZmljIGNoYW5nZXMuCisgICAgICAgICAgICBZb3UgY2FuIGFjY29tcGxpc2ggdGhpcyB0aHJvdWdoIGEgcmVjaXBlIHRoYXQgaXMgYSBCaXRCYWtlIGFwcGVuZAorICAgICAgICAgICAgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikgZmlsZSwgd2hpY2ggaXMgZGVzY3JpYmVkIGxhdGVyCisgICAgICAgICAgICBpbiB0aGlzIHNlY3Rpb24uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXIgc3RydWN0dXJlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgY29udGFpbnMgYm90aCBnZW5lcmFsIGxheWVycyBhbmQgQlNQIGxheWVycyByaWdodCBvdXQgb2YgdGhlIGJveC4KKyAgICAgICAgICAgIFlvdSBjYW4gZWFzaWx5IGlkZW50aWZ5IGxheWVycyB0aGF0IHNoaXAgd2l0aCBhIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIHJlbGVhc2UgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYnkgdGhlaXIgbmFtZXMuCisgICAgICAgICAgICBMYXllcnMgdHlwaWNhbGx5IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoIHRoZSBzdHJpbmcKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgSXQgaXMgbm90IGEgcmVxdWlyZW1lbnQgdGhhdCBhIGxheWVyIG5hbWUgYmVnaW4gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICBwcmVmaXggPGZpbGVuYW1lPm1ldGEtPC9maWxlbmFtZT4sIGJ1dCBpdCBpcyBhIGNvbW1vbmx5CisgICAgICAgICAgICAgICAgYWNjZXB0ZWQgc3RhbmRhcmQgaW4gdGhlIFlvY3RvIFByb2plY3QgY29tbXVuaXR5LgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSB3ZXJlIHRvIGV4YW1pbmUgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlLyc+dHJlZSB2aWV3PC91bGluaz4KKyAgICAgICAgICAgIG9mIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnksIHlvdSB3aWxsIHNlZSBzZXZlcmFsCisgICAgICAgICAgICBsYXllcnM6IDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1za2VsZXRvbjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2VsZnRlc3Q8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIEVhY2ggb2YgdGhlc2UgcmVwb3NpdG9yaWVzIHJlcHJlc2VudHMgYSBkaXN0aW5jdCBsYXllci4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIHByb2NlZHVyZXMgb24gaG93IHRvIGNyZWF0ZSBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nY29tcG9uZW50cy1hbmQtdG9vbHMnPgorICAgICAgICA8dGl0bGU+Q29tcG9uZW50cyBhbmQgVG9vbHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZW1wbG95cyBhIGNvbGxlY3Rpb24gb2YgY29tcG9uZW50cyBhbmQKKyAgICAgICAgICAgIHRvb2xzIHVzZWQgYnkgdGhlIHByb2plY3QgaXRzZWxmLCBieSBwcm9qZWN0IGRldmVsb3BlcnMsCisgICAgICAgICAgICBhbmQgYnkgdGhvc2UgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICBUaGVzZSBjb21wb25lbnRzIGFuZCB0b29scyBhcmUgb3BlbiBzb3VyY2UgcHJvamVjdHMgYW5kCisgICAgICAgICAgICBtZXRhZGF0YSB0aGF0IGFyZSBzZXBhcmF0ZSBmcm9tIHRoZSByZWZlcmVuY2UgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcG9reSc+UG9reTwvdWxpbms+KQorICAgICAgICAgICAgYW5kIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPi4KKyAgICAgICAgICAgIE1vc3Qgb2YgdGhlIGNvbXBvbmVudHMgYW5kIHRvb2xzIGFyZSBkb3dubG9hZGVkIHNlcGFyYXRlbHkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBicmllZiBvdmVydmlld3Mgb2YgdGhlIGNvbXBvbmVudHMgYW5kCisgICAgICAgICAgICB0b29scyBhc3NvY2lhdGVkIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ3MtZGV2ZWxvcG1lbnQtdG9vbHMnPgorICAgICAgICAgICAgPHRpdGxlPkRldmVsb3BtZW50IFRvb2xzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGNvbnNpc3RzIG9mIHRvb2xzIHRoYXQgaGVscCB5b3UgZGV2ZWxvcAorICAgICAgICAgICAgICAgIGltYWdlcyBhbmQgYXBwbGljYXRpb25zIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0OgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZ3MtY3JvcHMtb3ZlcnZpZXcnPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNST1BTOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBpcyBhbiBvcGVuIHNvdXJjZSwgY3Jvc3MtcGxhdGZvcm0gZGV2ZWxvcG1lbnQgZnJhbWV3b3JrCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGxldmVyYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBDUk9QUyBwcm92aWRlcyBhbiBlYXNpbHkgbWFuYWdlZCwgZXh0ZW5zaWJsZSBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBhbGxvd3MgeW91IHRvIGJ1aWxkIGJpbmFyaWVzIGZvciBhIHZhcmlldHkgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMgb24gV2luZG93cywgTGludXggYW5kIE1hYyBPUyBYIGhvc3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQtbGluZSB0b29sIGlzIGF2YWlsYWJsZSBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaWJsZSBTREsgKGVTREspIGFuZCBpcyBpdHMgY29ybmVyc3RvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIGhlbHAgYnVpbGQsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0LCBhbmQgcGFja2FnZSBzb2Z0d2FyZSB3aXRoaW4gdGhlIGVTREsuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgdG9vbCB0byBvcHRpb25hbGx5IGludGVncmF0ZSB3aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgaW50byBhbiBpbWFnZSBidWlsdCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kIGVtcGxveXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgbnVtYmVyIG9mIHN1Yi1jb21tYW5kcyB0aGF0IGFsbG93IHlvdSB0byBhZGQsIG1vZGlmeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1cGdyYWRlIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBBcyB3aXRoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCDigJxyZWNpcGVz4oCdCisgICAgICAgICAgICAgICAgICAgICAgICByZXByZXNlbnQgc29mdHdhcmUgcGFja2FnZXMgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+LCBhIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBleGlzdGluZyByZWNpcGUgaXMgdXNlZCBpbiBvcmRlciB0byBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRvIGdldCB0aGUgc291cmNlIGNvZGUgYW5kIGhvdyB0byBwYXRjaCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIGJvdGggY2FzZXMsIGFuIGVudmlyb25tZW50IGlzIHNldCB1cCBzbyB0aGF0IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBidWlsZCB0aGUgcmVjaXBlIGEgc291cmNlIHRyZWUgdGhhdCBpcyB1bmRlciB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sIGlzIHVzZWQgaW4gb3JkZXIgdG8gYWxsb3cgeW91IHRvIG1ha2UgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHNvdXJjZSBhcyBkZXNpcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgYm90aCBuZXcgcmVjaXBlcyBhbmQgdGhlIHNvdXJjZSBnbyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICBhIOKAnHdvcmtzcGFjZeKAnSBkaXJlY3RvcnkgdW5kZXIgdGhlIGVTREsuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXMgYW4gZXhpc3RpbmcgcmVjaXBlIHNvIHRoYXQgeW91IGNhbiBidWlsZCBpdAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFuIHVwZGF0ZWQgc2V0IG9mIHNvdXJjZSBmaWxlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gcmVhZCBhYm91dCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya2Zsb3cgaW4gdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCBFeHRlbnNpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIE1hbnVhbCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyN1c2luZy1kZXZ0b29sLWluLXlvdXItc2RrLXdvcmtmbG93Jz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGluIFlvdXIgU0RLIFdvcmtmbG93JzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZVNESyBwcm92aWRlcyBhIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyB0YWlsb3JlZCB0byB0aGUgY29udGVudHMgb2YgYSBzcGVjaWZpYyBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlU0RLIG1ha2VzIGl0IGVhc3kgdG8gYWRkIG5ldyBhcHBsaWNhdGlvbnMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgdG8gYW4gaW1hZ2UsIG1vZGlmeSB0aGUgc291cmNlIGZvciBhbgorICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgY29tcG9uZW50LCB0ZXN0IGNoYW5nZXMgb24gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUsIGFuZCBpbnRlZ3JhdGUgaW50byB0aGUgcmVzdCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZVNESyBnaXZlcyB5b3UgYSB0b29sY2hhaW4gZXhwZXJpZW5jZSBzdXBwbGVtZW50ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIHBvd2VyZnVsIHNldCBvZiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcyB0YWlsb3JlZCBmb3IgdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBpbmZvcm1hdGlvbiBvbiB0aGUgZVNESywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPiBJREUgUGx1Zy1pbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwbHVnLWluIGVuYWJsZXMgeW91IHRvIHVzZSB0aGUgcG9wdWxhciBFY2xpcHNlCisgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50IChJREUpLCB3aGljaCBhbGxvd3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkZXZlbG9wbWVudCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBhbGwgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHdvcmsgd2l0aGluIEVjbGlwc2UgdG8gY3Jvc3MtY29tcGlsZSwgZGVwbG95LAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGV4ZWN1dGUgeW91ciBvdXRwdXQgaW50byBhIFFFTVUgZW11bGF0aW9uIHNlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgb250byBhY3R1YWwgdGFyZ2V0IGhhcmR3YXJlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGVudmlyb25tZW50IGFsc28gc3VwcG9ydHMgcGVyZm9ybWFuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuaGFuY2luZyB0b29scyB0aGF0IGFsbG93IHlvdSB0byBwZXJmb3JtIHJlbW90ZQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsaW5nLCB0cmFjaW5nLCBjb2xsZWN0aW9uIG9mIHBvd2VyIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uIG9mIGxhdGVuY3kgZGF0YSwgYW5kIGNvbGxlY3Rpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlIGRhdGEuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIHlvdSBlbmFibGUgdGhlIHBsdWctaW4sIHN0YW5kYXJkIEVjbGlwc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBhdXRvbWF0aWNhbGx5IHVzZSB0aGUgY3Jvc3MtdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGFyZ2V0IHN5c3RlbSBsaWJyYXJpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGJ1aWxkIGFwcGxpY2F0aW9ucyB1c2luZyBhbnkgb2YgdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBFY2xpcHNlIHBsdWctaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjYWR0LWVjbGlwc2UnPldvcmtpbmcgV2l0aGluIEVjbGlwc2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspCisgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRvYXN0ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgaXMgYSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBhbGxvd3MgeW91IHRvIGNvbmZpZ3VyZSwgcnVuLCBhbmQgdmlldworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgYnVpbGRzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIFRvYXN0ZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLXByb2R1Y3Rpb24tdG9vbHMnPgorICAgICAgICAgICAgPHRpdGxlPlByb2R1Y3Rpb24gVG9vbHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgY29uc2lzdHMgb2YgdG9vbHMgdGhhdCBoZWxwIHByb2R1Y3Rpb24KKyAgICAgICAgICAgICAgICByZWxhdGVkIGFjdGl2aXRpZXMgdXNpbmcgdGhlIFlvY3RvIFByb2plY3Q6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkF1dG8gVXBncmFkZSBIZWxwZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdXRpbGl0eSB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIChCaXRCYWtlIGFuZCBPRS1Db3JlKSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyB1cGdyYWRlcworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJlY2lwZXMgdGhhdCBhcmUgYmFzZWQgb24gbmV3IHZlcnNpb25zIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBwdWJsaXNoZWQgdXBzdHJlYW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlY2lwZSBSZXBvcnRpbmcgU3lzdGVtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgUmVjaXBlIFJlcG9ydGluZyBTeXN0ZW0gdHJhY2tzIHJlY2lwZSB2ZXJzaW9ucworICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIGZvciBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1haW4gcHVycG9zZSBvZiB0aGUgc3lzdGVtIGlzIHRvIGhlbHAgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2UgdGhlIHJlY2lwZXMgeW91IG1haW50YWluIGFuZCB0byBvZmZlciBhIGR5bmFtaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ2aWV3IG9mIHRoZSBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFJlY2lwZSBSZXBvcnRpbmcgU3lzdGVtIGlzIGJ1aWx0IG9uIHRvcCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2xheWVycy8iPk9wZW5FbWJlZGRlZCBMYXllciBJbmRleDwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSB3ZWJzaXRlIHRoYXQgaW5kZXhlcyBPcGVuRW1iZWRkZWQtQ29yZQorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYXRjaHdvcms6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9qay5vemxhYnMub3JnL3Byb2plY3RzL3BhdGNod29yay8nPlBhdGNod29yazwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBpcyBhIGZvcmsgb2YgYSBwcm9qZWN0IG9yaWdpbmFsbHkgc3RhcnRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL296bGFicy5vcmcvJz5PekxhYnM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcm9qZWN0IGlzIGEgd2ViLWJhc2VkIHRyYWNraW5nIHN5c3RlbSBkZXNpZ25lZAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gc3RyZWFtbGluZSB0aGUgcHJvY2VzcyBvZiBicmluZ2luZyBjb250cmlidXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGEgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHVzZXMgUGF0Y2h3b3JrIGFzIGFuIG9yZ2FuaXphdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICB0b29sIHRvIGhhbmRsZSBwYXRjaGVzLCB3aGljaCBudW1iZXIgaW4gdGhlIHRob3VzYW5kcworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV2ZXJ5IHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkF1dG9CdWlsZGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBBdXRvQnVpbGRlciBpcyBhIHByb2plY3QgdGhhdCBhdXRvbWF0ZXMgYnVpbGQgdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBxdWFsaXR5IGFzc3VyYW5jZSAoUUEpLgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgdXNpbmcgdGhlIHB1YmxpYyBBdXRvQnVpbGRlciwgYW55b25lIGNhbiBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdGF0dXMgb2YgdGhlIGN1cnJlbnQgIm1hc3RlciIgYnJhbmNoIG9mIFBva3kuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRvQnVpbGRlciBpcyBiYXNlZCBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vYnVpbGRib3QubmV0Lyc+YnVpbGRib3Q8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkEgZ29hbCBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0byBsZWFkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgb3BlbiBzb3VyY2UgaW5kdXN0cnkgd2l0aCBhIHByb2plY3QgdGhhdCBhdXRvbWF0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbmcgYW5kIFFBIHByb2NlZHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBkb2luZyBzbywgdGhlIHByb2plY3QgZW5jb3VyYWdlcyBhIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tdW5pdHkgdGhhdCBwdWJsaXNoZXMgUUEgYW5kIHRlc3QgcGxhbnMsIHB1YmxpY2x5CisgICAgICAgICAgICAgICAgICAgICAgICBkZW1vbnN0cmF0ZXMgUUEgYW5kIHRlc3QgcGxhbnMsIGFuZCBlbmNvdXJhZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBvZiB0b29scyB0aGF0IGF1dG9tYXRlIGFuZCB0ZXN0IGFuZCBRQQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VkdXJlcyBmb3IgdGhlIGJlbmVmaXQgb2YgdGhlIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tdW5pdHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgdGhlIEF1dG9CdWlsZGVyIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fQUJfVVJMOyc+aGVyZTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1QcmVsaW5rOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQcmVsaW5raW5nIGlzIHRoZSBwcm9jZXNzIG9mIHByZS1jb21wdXRpbmcgdGhlIGxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NlcyBhbmQgbGluayB0YWJsZXMgZ2VuZXJhdGVkIGJ5IHRoZSBkeW5hbWljCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZXIgYXMgY29tcGFyZWQgdG8gZG9pbmcgdGhpcyBhdCBydW50aW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgRG9pbmcgdGhpcyBhaGVhZCBvZiB0aW1lIHJlc3VsdHMgaW4gcGVyZm9ybWFuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcHJvdmVtZW50cyB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBsYXVuY2hlZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZHVjZWQgbWVtb3J5IHVzYWdlIGZvciBsaWJyYXJpZXMgc2hhcmVkIGJ5IG1hbnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhpc3RvcmljYWxseSwgY3Jvc3MtcHJlbGluayBpcyBhIHZhcmlhbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWxpbmssIHdoaWNoIHdhcyBjb25jZWl2ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9qYWt1Yi9wcmVsaW5rLnBkZic+SmFrdWIgSmVsJmlhY3V0ZTtuZWs8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYSBudW1iZXIgb2YgeWVhcnMgYWdvLgorICAgICAgICAgICAgICAgICAgICAgICAgQm90aCBwcmVsaW5rIGFuZCBjcm9zcy1wcmVsaW5rIGFyZSBtYWludGFpbmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSByZXBvc2l0b3J5IGFsYmVpdCBvbiBzZXBhcmF0ZSBicmFuY2hlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJ5IHByb3ZpZGluZyBhbiBlbXVsYXRlZCBydW50aW1lIGR5bmFtaWMgbGlua2VyCisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPi1kZXJpdmVkCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGQuc288L2ZpbGVuYW1lPiBlbXVsYXRpb24pLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLXByZWxpbmsgcHJvamVjdCBleHRlbmRzIHRoZSBwcmVsaW5rIHNvZnR3YXJl4oCZcworICAgICAgICAgICAgICAgICAgICAgICAgYWJpbGl0eSB0byBwcmVsaW5rIGEgc3lzcm9vdCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIGNyb3NzLXByZWxpbmsgc29mdHdhcmUgZW5hYmxlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFiaWxpdHkgdG8gd29yayBpbiBzeXNyb290IHN0eWxlIGVudmlyb25tZW50cy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBkeW5hbWljIGxpbmtlciBkZXRlcm1pbmVzIHN0YW5kYXJkIGxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgY2FsY3VsYXRpb25zIGJhc2VkIG9uIGEgdmFyaWV0eSBvZiBmYWN0b3JzCisgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIG1hcHBpbmcgYWRkcmVzc2VzLCBsaWJyYXJ5IHVzYWdlLCBhbmQgbGlicmFyeQorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY29uZmxpY3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZWxpbmsgdG9vbCB1c2VzIHRoaXMgaW5mb3JtYXRpb24sIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljIGxpbmtlciwgdG8gZGV0ZXJtaW5lIHVuaXF1ZSBsb2FkIGFkZHJlc3NlcworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4ZWN1dGFibGUgYW5kIGxpbmthYmxlIGZvcm1hdCAoRUxGKSBiaW5hcmllcworICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgc2hhcmVkIGxpYnJhcmllcyBhbmQgZHluYW1pY2FsbHkgbGlua2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZWxpbmsgdG9vbCBtb2RpZmllcyB0aGVzZSBFTEYgYmluYXJpZXMgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZS1jb21wdXRlZCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgZmFzdGVyIGxvYWRpbmcgYW5kIG9mdGVuIGxvd2VyIG1lbW9yeQorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtcHRpb24gYmVjYXVzZSBtb3JlIG9mIHRoZSBsaWJyYXJ5IGNvZGUgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICBiZSByZS11c2VkIGZyb20gc2hhcmVkIENvcHktT24tV3JpdGUgKENPVykgcGFnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBvcmlnaW5hbCB1cHN0cmVhbSBwcmVsaW5rIHByb2plY3Qgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMgcnVubmluZyBwcmVsaW5rIG9uIHRoZSBlbmQgdGFyZ2V0IGRldmljZQorICAgICAgICAgICAgICAgICAgICAgICAgZHVlIHRvIHRoZSByZWxpYW5jZSBvbiB0aGUgdGFyZ2V0IGRldmljZeKAmXMgZHluYW1pYworICAgICAgICAgICAgICAgICAgICAgICAgbGlua2VyLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyByZXN0cmljdGlvbiBjYXVzZXMgaXNzdWVzIHdoZW4gZGV2ZWxvcGluZyBhCisgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxlZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY3Jvc3MtcHJlbGluayBhZGRzIGEgc3ludGhlc2l6ZWQgZHluYW1pYyBsb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgcnVucyBvbiB0aGUgaG9zdCwgdGh1cyBwZXJtaXR0aW5nIGNyb3NzLXByZWxpbmtpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgZXZlciBoYXZpbmcgdG8gcnVuIG9uIGEgcmVhZC13cml0ZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBzZXVkbzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUHNldWRvIGlzIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbWFuLmhlLm5ldC9tYW4xL2Zha2Vyb290Jz5mYWtlcm9vdDwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgdXNlZCB0byBydW4gY29tbWFuZHMgaW4gYW4gZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2VlbWluZ2x5IGhhcyByb290IHByaXZpbGVnZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5EdXJpbmcgYSBidWlsZCwgaXQgY2FuIGJlIG5lY2Vzc2FyeSB0byBwZXJmb3JtCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zIHRoYXQgcmVxdWlyZSBzeXN0ZW0gYWRtaW5pc3RyYXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmlsZWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBmaWxlIG93bmVyc2hpcCBvciBwZXJtaXNzaW9ucyBtaWdodCBuZWVkCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgUHNldWRvIGlzIGEgdG9vbCB0aGF0IHlvdSBjYW4gZWl0aGVyIHVzZSBkaXJlY3RseSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MRF9QUkVMT0FEPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBFaXRoZXIgbWV0aG9kIGFsbG93cyB0aGVzZSBvcGVyYXRpb25zIHRvIHN1Y2NlZWQgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHByaXZpbGVnZXMgZXhpc3QgZXZlbgorICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGV5IGRvIG5vdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gcmVhZCBtb3JlIGFib3V0IFBzZXVkbyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdmYWtlcm9vdC1hbmQtcHNldWRvJz5GYWtlcm9vdCBhbmQgUHNldWRvPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdncy1vcGVuZW1iZWRkZWQtYnVpbGQtc3lzdGVtJz4KKyAgICAgICAgICAgIDx0aXRsZT5PcGVuLUVtYmVkZGVkIEJ1aWxkIFN5c3RlbSBDb21wb25lbnRzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGNvbnNpc3RzIG9mIGNvbXBvbmVudHMgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz46CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJpdEJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgaXMgYSBjb3JlIGNvbXBvbmVudCBvZiB0aGUgWW9jdG8gUHJvamVjdCBhbmQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgQml0QmFrZSBpcyBrZXkgdG8gdGhlIGJ1aWxkIHN5c3RlbSwgQml0QmFrZQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5IGZyb20gdGhlIFlvY3RvIFByb2plY3QuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5CaXRCYWtlIGlzIGEgZ2VuZXJpYyB0YXNrIGV4ZWN1dGlvbiBlbmdpbmUgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHNoZWxsIGFuZCBQeXRob24gdGFza3MgdG8gYmUgcnVuIGVmZmljaWVudGx5CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaW4gcGFyYWxsZWwgd2hpbGUgd29ya2luZyB3aXRoaW4gY29tcGxleCBpbnRlci10YXNrCisgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5IGNvbnN0cmFpbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gc2hvcnQsIEJpdEJha2UgaXMgYSBidWlsZCBlbmdpbmUgdGhhdCB3b3JrcworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCByZWNpcGVzIHdyaXR0ZW4gaW4gYSBzcGVjaWZpYyBmb3JtYXQgaW4gb3JkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHBlcmZvcm0gc2V0cyBvZiB0YXNrcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCBCaXRCYWtlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcGVuRW1iZWRkZWQtQ29yZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkLUNvcmUgKE9FLUNvcmUpIGlzIGEgY29tbW9uIGxheWVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YSAoaS5lLiByZWNpcGVzLCBjbGFzc2VzLCBhbmQgYXNzb2NpYXRlZCBmaWxlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgYnkgT3BlbkVtYmVkZGVkLWRlcml2ZWQgc3lzdGVtcywgd2hpY2ggaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgYW5kIHRoZSBPcGVuRW1iZWRkZWQgUHJvamVjdCBib3RoCisgICAgICAgICAgICAgICAgICAgICAgICBtYWludGFpbiB0aGUgT3BlbkVtYmVkZGVkLUNvcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIE9FLUNvcmUgbWV0YWRhdGEgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhpc3RvcmljYWxseSwgdGhlIFlvY3RvIFByb2plY3QgaW50ZWdyYXRlZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIE9FLUNvcmUgbWV0YWRhdGEgdGhyb3VnaG91dCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIHJlcG9zaXRvcnkgcmVmZXJlbmNlIHN5c3RlbSAoUG9reSkuCisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBZb2N0byBQcm9qZWN0IFZlcnNpb24gMS4wLCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIE9wZW5FbWJlZGRlZCBhZ3JlZWQgdG8gd29yayB0b2dldGhlciBhbmQgc2hhcmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uIGNvcmUgc2V0IG9mIG1ldGFkYXRhIChPRS1Db3JlKSwgd2hpY2ggY29udGFpbmVkCisgICAgICAgICAgICAgICAgICAgICAgICBtdWNoIG9mIHRoZSBmdW5jdGlvbmFsaXR5IHByZXZpb3VzbHkgZm91bmQgaW4gUG9reS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29sbGFib3JhdGlvbiBhY2hpZXZlZCBhIGxvbmctc3RhbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBvYmplY3RpdmUgZm9yIGhhdmluZyBhIG1vcmUgdGlnaHRseQorICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlZCBhbmQgcXVhbGl0eS1hc3N1cmVkIGNvcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0cyBhbHNvIGZpdCB3ZWxsIHdpdGggdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdGl2ZSBvZiBhY2hpZXZpbmcgYSBzbWFsbGVyIG51bWJlciBvZiBmdWxseQorICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZWQgdG9vbHMgYXMgY29tcGFyZWQgdG8gbWFueSBkaWZmZXJlbnQgb25lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+U2hhcmluZyBhIGNvcmUgc2V0IG9mIG1ldGFkYXRhIHJlc3VsdHMgaW4gUG9reQorICAgICAgICAgICAgICAgICAgICAgICAgYXMgYW4gaW50ZWdyYXRpb24gbGF5ZXIgb24gdG9wIG9mIE9FLUNvcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGF0IGluIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3lwLWtleS1kZXYtZWxlbWVudHMnPmZpZ3VyZTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBjb21iaW5lcyB2YXJpb3VzIGNvbXBvbmVudHMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSwgT0UtQ29yZSwgc2NyaXB0IOKAnGdsdWXigJ0sIGFuZCBkb2N1bWVudGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaXRzIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLXJlZmVyZW5jZS1kaXN0cmlidXRpb24tcG9reSc+CisgICAgICAgICAgICA8dGl0bGU+UmVmZXJlbmNlIERpc3RyaWJ1dGlvbiAoUG9reSk8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBQb2t5IGlzIHRoZSBZb2N0byBQcm9qZWN0IHJlZmVyZW5jZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgSXQgY29udGFpbnMgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW4tRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgICAgICAoQml0QmFrZSBhbmQgT0UtQ29yZSkgYXMgd2VsbCBhcyBhIHNldCBvZiBtZXRhZGF0YSB0byBnZXQgeW91CisgICAgICAgICAgICAgICAgc3RhcnRlZCBidWlsZGluZyB5b3VyIG93biBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3doYXQtaXMtdGhlLXlvY3RvLXByb2plY3QnPmZpZ3VyZTwvbGluaz4gaW4KKyAgICAgICAgICAgICAgICAiV2hhdCBpcyB0aGUgWW9jdG8gUHJvamVjdD8iIHNlY3Rpb24gZm9yIGFuIGlsbHVzdHJhdGlvbgorICAgICAgICAgICAgICAgIHRoYXQgc2hvd3MgUG9reSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvb2xzIGFuZCBjb21wb25lbnRzLCB5b3UKKyAgICAgICAgICAgICAgICBjYW4gZG93bmxvYWQgKDxmaWxlbmFtZT5jbG9uZTwvZmlsZW5hbWU+KSBQb2t5IGFuZCB1c2UgaXQKKyAgICAgICAgICAgICAgICB0byBib290c3RyYXAgeW91ciBvd24gZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBQb2t5IGRvZXMgbm90IGNvbnRhaW4gYmluYXJ5IGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBhIHdvcmtpbmcgZXhhbXBsZSBvZiBob3cgdG8gYnVpbGQgeW91ciBvd24gY3VzdG9tCisgICAgICAgICAgICAgICAgICAgIExpbnV4IGRpc3RyaWJ1dGlvbiBmcm9tIHNvdXJjZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgUG9reSBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmZXJlbmNlLWVtYmVkZGVkLWRpc3RyaWJ1dGlvbic+UmVmZXJlbmNlIEVtYmVkZGVkIERpc3RyaWJ1dGlvbiAoUG9reSk8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ3MtcGFja2FnZXMtZm9yLWZpbmlzaGVkLXRhcmdldHMnPgorICAgICAgICAgICAgPHRpdGxlPlBhY2thZ2VzIGZvciBGaW5pc2hlZCBUYXJnZXRzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0cyBjb21wb25lbnRzIGFzc29jaWF0ZWQgd2l0aCBwYWNrYWdlcworICAgICAgICAgICAgICAgIGZvciBmaW5pc2hlZCB0YXJnZXRzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYXRjaGJveDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hib3ggaXMgYW4gT3BlbiBTb3VyY2UsIGJhc2UgZW52aXJvbm1lbnQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWCBXaW5kb3cgU3lzdGVtIHJ1bm5pbmcgb24gbm9uLWRlc2t0b3AsIGVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybXMgc3VjaCBhcyBoYW5kaGVsZHMsIHNldC10b3AgYm94ZXMsIGtpb3NrcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbnl0aGluZyBlbHNlIGZvciB3aGljaCBzY3JlZW4gc3BhY2UsIGlucHV0CisgICAgICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc21zLCBvciBzeXN0ZW0gcmVzb3VyY2VzIGFyZSBsaW1pdGVkLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+TWF0Y2hib3ggY29uc2lzdHMgb2YgYSBudW1iZXIgb2YgaW50ZXJjaGFuZ2VhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgb3B0aW9uYWwgYXBwbGljYXRpb25zIHRoYXQgeW91IGNhbiB0YWlsb3IgdG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMsIG5vbi1kZXNrdG9wIHBsYXRmb3JtIHRvIGVuaGFuY2UgdXNhYmlsaXR5CisgICAgICAgICAgICAgICAgICAgICAgICBpbiBjb25zdHJhaW5lZCBlbnZpcm9ubWVudHMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIGZpbmQgdGhlIE1hdGNoYm94IHNvdXJjZSBpbiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcGtnPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW4gUGFjS2FHZSBtYW5hZ2VtZW50IChvcGtnKSBpcyBhIGxpZ2h0d2VpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtIGJhc2VkIG9uIHRoZSBpdHN5IHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIChpcGtnKSBtYW5hZ2VtZW50IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9wa2cgaXMgd3JpdHRlbiBpbiBDIGFuZCByZXNlbWJsZXMgQWR2YW5jZWQgUGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgVG9vbCAoQVBUKSBhbmQgRGViaWFuIFBhY2thZ2UgKGRwa2cpIGluIG9wZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T3BrZyBpcyBpbnRlbmRlZCBmb3IgdXNlIG9uIGVtYmVkZGVkIExpbnV4CisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VzIGFuZCBpcyB1c2VkIGluIHRoaXMgY2FwYWNpdHkgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3Lm9wZW5lbWJlZGRlZC5vcmcvd2lraS9NYWluX1BhZ2UnPk9wZW5FbWJlZGRlZDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vb3BlbndydC5vcmcvJz5PcGVuV3J0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RzLCBhcyB3ZWxsIGFzIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYmVzdCBpdCBjYW4sIG9wa2cgbWFpbnRhaW5zIGJhY2t3YXJkcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGliaWxpdHkgd2l0aCBpcGtnIGFuZCBjb25mb3JtcyB0byBhIHN1YnNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIERlYmlhbuKAmXMgcG9saWN5IG1hbnVhbCByZWdhcmRpbmcgY29udHJvbCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLWFyY2hpdmVkLWNvbXBvbmVudHMnPgorICAgICAgICAgICAgPHRpdGxlPkFyY2hpdmVkIENvbXBvbmVudHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgQnVpbGQgQXBwbGlhbmNlIGlzIGEgdmlydHVhbCBtYWNoaW5lIGltYWdlIHRoYXQgZW5hYmxlcworICAgICAgICAgICAgICAgIHlvdSB0byBidWlsZCBhbmQgYm9vdCBhIGN1c3RvbSBlbWJlZGRlZCBMaW51eCBpbWFnZSB3aXRoCisgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgdXNpbmcgYSBub24tTGludXggZGV2ZWxvcG1lbnQgc3lzdGVtLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIaXN0b3JpY2FsbHksIHRoZSBCdWlsZCBBcHBsaWFuY2Ugd2FzIHRoZSBzZWNvbmQgb2YgdGhyZWUKKyAgICAgICAgICAgICAgICBtZXRob2RzIGJ5IHdoaWNoIHlvdSBjb3VsZCB1c2UgdGhlIFlvY3RvIFByb2plY3Qgb24gYSBzeXN0ZW0KKyAgICAgICAgICAgICAgICB0aGF0IHdhcyBub3QgbmF0aXZlIHRvIExpbnV4LgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkhvYjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSG9iLCB3aGljaCBpcyBub3cgZGVwcmVjYXRlZCBhbmQgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgc2luY2UgdGhlIDIuMSByZWxlYXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBhIHJ1ZGltZW50YXJ5LCBHVUktYmFzZWQgaW50ZXJmYWNlIHRvIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgaGFzIGZ1bGx5IHJlcGxhY2VkIEhvYi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgQXBwbGlhbmNlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQb3N0IEhvYiwgdGhlIEJ1aWxkIEFwcGxpYW5jZSBiZWNhbWUgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgd2FzIG5ldmVyIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIEFwcGxpYW5jZSBhcyBhIGRheS10by1kYXkgcHJvZHVjdGlvbiBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIEFwcGxpYW5jZSB3YXMgdXNlZnVsIGFzIGEgd2F5IHRvIHRyeSBvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGluIHRoZSBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DUk9QUzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIGFuZCBiZXN0IHNvbHV0aW9uIGF2YWlsYWJsZSBub3cgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9waW5nIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IG9uIGEgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICBub3QgbmF0aXZlIHRvIExpbnV4IGlzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dzLWNyb3BzLW92ZXJ2aWV3Jz5DUk9QUzwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2dzLWRldmVsb3BtZW50LW1ldGhvZHMnPgorICAgICAgICA8dGl0bGU+RGV2ZWxvcG1lbnQgTWV0aG9kczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB1c3VhbGx5IGludm9sdmVzIGEKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5CdWlsZCBIb3N0PC91bGluaz4KKyAgICAgICAgICAgIGFuZCB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICBZb3UgdXNlIHRoZSBCdWlsZCBIb3N0IHRvIGJ1aWxkIGltYWdlcyBhbmQgZGV2ZWxvcCBhcHBsaWNhdGlvbnMsCisgICAgICAgICAgICB3aGlsZSB5b3UgdXNlIHRoZSB0YXJnZXQgaGFyZHdhcmUgdG8gdGVzdCBkZXBsb3llZCBzb2Z0d2FyZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGFuIGludHJvZHVjdGlvbiB0byB0aGUgY2hvaWNlcyBvcgorICAgICAgICAgICAgZGV2ZWxvcG1lbnQgbWV0aG9kcyB5b3UgaGF2ZSB3aGVuIHNldHRpbmcgdXAgeW91ciBCdWlsZCBIb3N0LgorICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSB5b3VyIHBhcnRpY3VsYXIgd29ya2Zsb3cgcHJlZmVyZW5jZSBhbmQgdGhlCisgICAgICAgICAgICB0eXBlIG9mIG9wZXJhdGluZyBzeXN0ZW0geW91ciBCdWlsZCBIb3N0IHJ1bnMsIHNldmVyYWwgY2hvaWNlcworICAgICAgICAgICAgZXhpc3QgdGhhdCBhbGxvdyB5b3UgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgZGV0YWlsIGFib3V0IHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nb3ZlcnZpZXctZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQnPlRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC9saW5rPiIKKyAgICAgICAgICAgICAgICBjaGFwdGVyLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5OYXRpdmUgTGludXggSG9zdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBCeSBmYXIgdGhlIGJlc3Qgb3B0aW9uIGZvciBhIEJ1aWxkIEhvc3QuCisgICAgICAgICAgICAgICAgICAgIEEgc3lzdGVtIHJ1bm5pbmcgTGludXggYXMgaXRzIG5hdGl2ZSBvcGVyYXRpbmcgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gZGV2ZWxvcCBzb2Z0d2FyZSBieSBkaXJlY3RseSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdG9vbC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhY2NvbXBsaXNoIGFsbCBhc3BlY3RzIG9mIGRldmVsb3BtZW50IGZyb20gYQorICAgICAgICAgICAgICAgICAgICBmYW1pbGlhciBzaGVsbCBvZiBhIHN1cHBvcnRlZCBMaW51eCBkaXN0cmlidXRpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIGEgQnVpbGQgSG9zdCBvbgorICAgICAgICAgICAgICAgICAgICBhIHN5c3RlbSBydW5uaW5nIExpbnV4IGFzIGl0cyBuYXRpdmUgb3BlcmF0aW5nIHN5c3RlbSwKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC1hLW5hdGl2ZS1saW51eC1ob3N0Jz5TZXR0aW5nIFVwIGEgTmF0aXZlIExpbnV4IEhvc3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNST3NzIFBsYXRmb3JtUyAoQ1JPUFMpOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgeW91IHVzZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBsZXZlcmFnZXMKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIHRvIHNldCB1cCBhIEJ1aWxkIEhvc3QgdGhhdCBpcyBub3QgcnVubmluZyBMaW51eCAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5NaWNyb3NvZnQ8L3RyYWRlbWFyaz4KKyAgICAgICAgICAgICAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGVtYXJrJz5XaW5kb3dzPC90cmFkZW1hcms+CisgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPm1hY09TPC90cmFkZW1hcms+KS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuLCBob3dldmVyLCB1c2UgQ1JPUFMgb24gYSBMaW51eC1iYXNlZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQ1JPUFMgaXMgYW4gb3BlbiBzb3VyY2UsIGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIGZyYW1ld29yayB0aGF0IHByb3ZpZGVzIGFuIGVhc2lseSBtYW5hZ2VkLCBleHRlbnNpYmxlCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IGZvciBidWlsZGluZyBiaW5hcmllcyB0YXJnZXRlZCBmb3IgYSB2YXJpZXR5CisgICAgICAgICAgICAgICAgICAgIG9mIGFyY2hpdGVjdHVyZXMgb24gV2luZG93cywgbWFjT1MsIG9yIExpbnV4IGhvc3RzLgorICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBCdWlsZCBIb3N0IGlzIHNldCB1cCB1c2luZyBDUk9QUywgeW91IGNhbiBwcmVwYXJlCisgICAgICAgICAgICAgICAgICAgIGEgc2hlbGwgZW52aXJvbm1lbnQgdG8gbWltaWMgdGhhdCBvZiBhIHNoZWxsIGJlaW5nIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgb24gYSBzeXN0ZW0gbmF0aXZlbHkgcnVubmluZyBMaW51eC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYSBCdWlsZCBIb3N0IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgQ1JPUFMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdG8tdXNlLWNyb3BzJz5TZXR0aW5nIFVwIHRvIFVzZSBDUk9zcyBQbGF0Zm9ybVMgKENST1BTKTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VG9hc3Rlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZWdhcmRsZXNzIG9mIHdoYXQgeW91ciBCdWlsZCBIb3N0IGlzIHJ1bm5pbmcsIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgdXNlIFRvYXN0ZXIgdG8gZGV2ZWxvcCBzb2Z0d2FyZSB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBpcyBhIHdlYiBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QncworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3Blbi1FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGludGVyZmFjZSBlbmFibGVzIHlvdSB0byBjb25maWd1cmUgYW5kIHJ1biB5b3VyCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgYnVpbGRzIGlzIGNvbGxlY3RlZCBhbmQgc3RvcmVkIGluIGEKKyAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2UuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIFRvYXN0ZXIgdG8gY29uZmlndXJlIGFuZCBzdGFydCBidWlsZHMgb24KKyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgcmVtb3RlIGJ1aWxkIHNlcnZlcnMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBpbmZvcm1hdGlvbiBhYm91dCBhbmQgaG93IHRvIHVzZSBUb2FzdGVyLAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gSURFOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgQnVpbGQgSG9zdCBzdXBwb3J0cyBhbmQgcnVucyB0aGUgcG9wdWxhcgorICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIElERSwgeW91IGNhbiBpbnN0YWxsIHRoZSBZb2N0byBQcm9qZWN0IEVjbGlwc2UKKyAgICAgICAgICAgICAgICAgICAgcGx1Zy1pbiBhbmQgdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvIGRldmVsb3Agc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBwbHVnLWluIGludGVncmF0ZXMgdGhlIFlvY3RvIFByb2plY3QgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgICAgICAgICBpbnRvIEVjbGlwc2UgZGV2ZWxvcG1lbnQgcHJhY3RpY2VzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIGluc3RhbGwgYW5kIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBFY2xpcHNlIHBsdWctaW4sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1lY2xpcHNlLXByb2plY3QnPkRldmVsb3BpbmcgQXBwbGljYXRpb25zIFVzaW5nIEVjbGlwc2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmZXJlbmNlLWVtYmVkZGVkLWRpc3RyaWJ1dGlvbic+CisgICAgICAgIDx0aXRsZT5SZWZlcmVuY2UgRW1iZWRkZWQgRGlzdHJpYnV0aW9uIChQb2t5KTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAiUG9reSIsIHdoaWNoIGlzIHByb25vdW5jZWQgPGVtcGhhc2lzPlBvY2s8L2VtcGhhc2lzPi1lZSwgaXMgdGhlCisgICAgICAgICAgICBuYW1lIG9mIHRoZSBZb2N0byBQcm9qZWN0J3MgcmVmZXJlbmNlIGRpc3RyaWJ1dGlvbiBvciBSZWZlcmVuY2UgT1MKKyAgICAgICAgICAgIEtpdC4KKyAgICAgICAgICAgIFBva3kgY29udGFpbnMgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvdWxpbms+CisgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4gYW5kCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNvZS1jb3JlJz5PcGVuRW1iZWRkZWQtQ29yZTwvdWxpbms+KQorICAgICAgICAgICAgYXMgd2VsbCBhcyBhIHNldCBvZgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPm1ldGFkYXRhPC91bGluaz4gdG8gZ2V0CisgICAgICAgICAgICB5b3Ugc3RhcnRlZCBidWlsZGluZyB5b3VyIG93biBkaXN0cm8uCisgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgUG9reSBpcyBhIGJhc2Ugc3BlY2lmaWNhdGlvbiBvZiB0aGUgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgbmVlZGVkIGZvciBhIHR5cGljYWwgZW1iZWRkZWQgc3lzdGVtIGFzIHdlbGwgYXMgdGhlIGNvbXBvbmVudHMKKyAgICAgICAgICAgIGZyb20gdGhlIFlvY3RvIFByb2plY3QgdGhhdCBhbGxvdyB5b3UgdG8gYnVpbGQgYSBkaXN0cmlidXRpb24gaW50bworICAgICAgICAgICAgYSB1c2FibGUgYmluYXJ5IGltYWdlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQb2t5IGlzIGEgY29tYmluZWQgcmVwb3NpdG9yeSBvZiBCaXRCYWtlLCBPcGVuRW1iZWRkZWQtQ29yZQorICAgICAgICAgICAgKHdoaWNoIGlzIGZvdW5kIGluIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4pLAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4sIGFuZCBkb2N1bWVudGF0aW9uIHByb3ZpZGVkCisgICAgICAgICAgICBhbGwgdG9nZXRoZXIgYW5kIGtub3duIHRvIHdvcmsgd2VsbCB0b2dldGhlci4KKyAgICAgICAgICAgIFlvdSBjYW4gdmlldyB0aGVzZSBpdGVtcyB0aGF0IG1ha2UgdXAgdGhlIFBva3kgcmVwb3NpdG9yeSBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS8nPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBhbGwgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUnPlRvcC1MZXZlbCBDb3JlIENvbXBvbmVudHM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYSBpZD0nZ3MtcG9reS1yZWZlcmVuY2UtZGlzdHJpYnV0aW9uJz4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIGlsbHVzdHJhdGVzIHdoYXQgZ2VuZXJhbGx5IGNvbXByaXNlcyBQb2t5OgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Bva3ktcmVmZXJlbmNlLWRpc3RyaWJ1dGlvbi5wbmciIGZvcm1hdD0iUE5HIiBhbGlnbj0nY2VudGVyJyB3aWR0aD0iOGluIi8+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBpcyBhIHRhc2sgZXhlY3V0b3IgYW5kIHNjaGVkdWxlciB0aGF0IGlzIHRoZSBoZWFydCBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4sIHdoaWNoIGlzIFBva3ktc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4sIHdoaWNoIGFyZSBZb2N0bworICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LXNwZWNpZmljIEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUHMpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZC1Db3JlIChPRS1Db3JlKSBtZXRhZGF0YSwgd2hpY2ggaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGNvbmZpZ3VyYXRpb25zLCBnbG9iYWwgdmFyaWFibGUgZGVmaW5pdGlvbnMsCisgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBjbGFzc2VzLCBwYWNrYWdpbmcsIGFuZCByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBDbGFzc2VzIGRlZmluZSB0aGUgZW5jYXBzdWxhdGlvbiBhbmQgaW5oZXJpdGFuY2Ugb2YgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgbG9naWMuCisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgYXJlIHRoZSBsb2dpY2FsIHVuaXRzIG9mIHNvZnR3YXJlIGFuZCBpbWFnZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gYmUgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiwgd2hpY2ggY29udGFpbnMgdGhlIFlvY3RvIFByb2plY3Qgc291cmNlCisgICAgICAgICAgICAgICAgICAgIGZpbGVzIHVzZWQgdG8gbWFrZSB0aGUgc2V0IG9mIHVzZXIgbWFudWFscy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFdoaWxlIFBva3kgaXMgYSAiY29tcGxldGUiIGRpc3RyaWJ1dGlvbiBzcGVjaWZpY2F0aW9uIGFuZCBpcworICAgICAgICAgICAgICAgIHRlc3RlZCBhbmQgcHV0IHRocm91Z2ggUUEsIHlvdSBjYW5ub3QgdXNlIGl0IGFzIGEgcHJvZHVjdAorICAgICAgICAgICAgICAgICJvdXQgb2YgdGhlIGJveCIgaW4gaXRzIGN1cnJlbnQgZm9ybS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvb2xzLCB5b3UgY2FuIHVzZSBHaXQgdG8gY2xvbmUgKGRvd25sb2FkKQorICAgICAgICAgICAgdGhlIFBva3kgcmVwb3NpdG9yeSB0aGVuIHVzZSB5b3VyIGxvY2FsIGNvcHkgb2YgdGhlIHJlZmVyZW5jZQorICAgICAgICAgICAgZGlzdHJpYnV0aW9uIHRvIGJvb3RzdHJhcCB5b3VyIG93biBkaXN0cmlidXRpb24uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBQb2t5IGRvZXMgbm90IGNvbnRhaW4gYmluYXJ5IGZpbGVzLgorICAgICAgICAgICAgICAgIEl0IGlzIGEgd29ya2luZyBleGFtcGxlIG9mIGhvdyB0byBidWlsZCB5b3VyIG93biBjdXN0b20gTGludXggZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgZnJvbSBzb3VyY2UuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFBva3kgaGFzIGEgcmVndWxhciwgd2VsbCBlc3RhYmxpc2hlZCwgc2l4LW1vbnRoIHJlbGVhc2UgY3ljbGUKKyAgICAgICAgICAgIHVuZGVyIGl0cyBvd24gdmVyc2lvbi4KKyAgICAgICAgICAgIE1ham9yIHJlbGVhc2VzIG9jY3VyIGF0IHRoZSBzYW1lIHRpbWUgbWFqb3IgcmVsZWFzZXMgKHBvaW50CisgICAgICAgICAgICByZWxlYXNlcykgb2NjdXIgZm9yIHRoZSBZb2N0byBQcm9qZWN0LCB3aGljaCBhcmUgdHlwaWNhbGx5IGluIHRoZQorICAgICAgICAgICAgU3ByaW5nIGFuZCBGYWxsLgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZSBzY2hlZHVsZSBhbmQKKyAgICAgICAgICAgIGNhZGVuY2UsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtcmVsZWFzZS1wcm9jZXNzJz5Zb2N0byBQcm9qZWN0IFJlbGVhc2VzIGFuZCB0aGUgU3RhYmxlIFJlbGVhc2UgUHJvY2VzczwvdWxpbms+IgorICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBNdWNoIGhhcyBiZWVuIHNhaWQgYWJvdXQgUG9reSBiZWluZyBhICJkZWZhdWx0IGNvbmZpZ3VyYXRpb24uIgorICAgICAgICAgICAgQSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gcHJvdmlkZXMgYSBzdGFydGluZyBpbWFnZSBmb290cHJpbnQuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSBQb2t5IG91dCBvZiB0aGUgYm94IHRvIGNyZWF0ZSBhbiBpbWFnZSByYW5naW5nIGZyb20gYQorICAgICAgICAgICAgc2hlbGwtYWNjZXNzaWJsZSBtaW5pbWFsIGltYWdlIGFsbCB0aGUgd2F5IHVwIHRvIGEgTGludXgKKyAgICAgICAgICAgIFN0YW5kYXJkIEJhc2UtY29tcGxpYW50IGltYWdlIHRoYXQgdXNlcyBhIEdOT01FIE1vYmlsZSBhbmQKKyAgICAgICAgICAgIEVtYmVkZGVkIChHTUFFKSBiYXNlZCByZWZlcmVuY2UgdXNlciBpbnRlcmZhY2UgY2FsbGVkIFNhdG8uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE9uZSBvZiB0aGUgbW9zdCBwb3dlcmZ1bCBwcm9wZXJ0aWVzIG9mIFBva3kgaXMgdGhhdCBldmVyeSBhc3BlY3QKKyAgICAgICAgICAgIG9mIGEgYnVpbGQgaXMgY29udHJvbGxlZCBieSB0aGUgbWV0YWRhdGEuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSBtZXRhZGF0YSB0byBhdWdtZW50IHRoZXNlIGJhc2UgaW1hZ2UgdHlwZXMgYnkKKyAgICAgICAgICAgIGFkZGluZyBtZXRhZGF0YQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndGhlLXlvY3RvLXByb2plY3QtbGF5ZXItbW9kZWwnPmxheWVyczwvbGluaz4KKyAgICAgICAgICAgIHRoYXQgZXh0ZW5kIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICAgICBUaGVzZSBsYXllcnMgY2FuIHByb3ZpZGUsIGZvciBleGFtcGxlLCBhbiBhZGRpdGlvbmFsIHNvZnR3YXJlCisgICAgICAgICAgICBzdGFjayBmb3IgYW4gaW1hZ2UgdHlwZSwgYWRkIGEgYm9hcmQgc3VwcG9ydCBwYWNrYWdlIChCU1ApIGZvcgorICAgICAgICAgICAgYWRkaXRpb25hbCBoYXJkd2FyZSwgb3IgZXZlbiBjcmVhdGUgYSBuZXcgaW1hZ2UgdHlwZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTWV0YWRhdGEgaXMgbG9vc2VseSBncm91cGVkIGludG8gY29uZmlndXJhdGlvbiBmaWxlcyBvciBwYWNrYWdlCisgICAgICAgICAgICByZWNpcGVzLgorICAgICAgICAgICAgQSByZWNpcGUgaXMgYSBjb2xsZWN0aW9uIG9mIG5vbi1leGVjdXRhYmxlIG1ldGFkYXRhIHVzZWQgYnkKKyAgICAgICAgICAgIEJpdEJha2UgdG8gc2V0IHZhcmlhYmxlcyBvciBkZWZpbmUgYWRkaXRpb25hbCBidWlsZC10aW1lIHRhc2tzLgorICAgICAgICAgICAgQSByZWNpcGUgY29udGFpbnMgZmllbGRzIHN1Y2ggYXMgdGhlIHJlY2lwZSBkZXNjcmlwdGlvbiwgdGhlIHJlY2lwZQorICAgICAgICAgICAgdmVyc2lvbiwgdGhlIGxpY2Vuc2Ugb2YgdGhlIHBhY2thZ2UgYW5kIHRoZSB1cHN0cmVhbSBzb3VyY2UKKyAgICAgICAgICAgIHJlcG9zaXRvcnkuCisgICAgICAgICAgICBBIHJlY2lwZSBtaWdodCBhbHNvIGluZGljYXRlIHRoYXQgdGhlIGJ1aWxkIHByb2Nlc3MgdXNlcyBhdXRvdG9vbHMsCisgICAgICAgICAgICBtYWtlLCBkaXN0dXRpbHMgb3IgYW55IG90aGVyIGJ1aWxkIHByb2Nlc3MsIGluIHdoaWNoIGNhc2UgdGhlIGJhc2ljCisgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IGNhbiBiZSBkZWZpbmVkIGJ5IHRoZSBjbGFzc2VzIGl0IGluaGVyaXRzIGZyb20KKyAgICAgICAgICAgIHRoZSBPRS1Db3JlIGxheWVyJ3MgY2xhc3MgZGVmaW5pdGlvbnMgaW4KKyAgICAgICAgICAgIDxmaWxlbmFtZT4uL21ldGEvY2xhc3NlczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgV2l0aGluIGEgcmVjaXBlIHlvdSBjYW4gYWxzbyBkZWZpbmUgYWRkaXRpb25hbCB0YXNrcyBhcyB3ZWxsIGFzCisgICAgICAgICAgICB0YXNrIHByZXJlcXVpc2l0ZXMuCisgICAgICAgICAgICBSZWNpcGUgc3ludGF4IHRocm91Z2ggQml0QmFrZSBhbHNvIHN1cHBvcnRzIGJvdGgKKyAgICAgICAgICAgIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICBvcGVyYXRvcnMgYXMgYSBtZXRob2Qgb2YgZXh0ZW5kaW5nIHRhc2sgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgIFRoZXNlIG9wZXJhdG9ycyBpbmplY3QgY29kZSBpbnRvIHRoZSBiZWdpbm5pbmcgb3IgZW5kIG9mIGEgdGFzay4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSBCaXRCYWtlIG9wZXJhdG9ycywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYXBwZW5kaW5nLWFuZC1wcmVwZW5kaW5nLW92ZXJyaWRlLXN0eWxlLXN5bnRheCc+QXBwZW5kaW5nIGFuZCBQcmVwZW5kaW5nIChPdmVycmlkZSBTdHlsZSBTeW50YXgpPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIncyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nb3BlbmVtYmVkZGVkLWJ1aWxkLXN5c3RlbS13b3JrZmxvdyc+CisgICAgICAgIDx0aXRsZT5UaGUgT3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbSBXb3JrZmxvdzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgIHVzZXMgYSAid29ya2Zsb3ciIHRvIGFjY29tcGxpc2ggaW1hZ2UgYW5kIFNESyBnZW5lcmF0aW9uLgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgb3ZlcnZpZXdzIHRoYXQgd29ya2Zsb3c6CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZyIKKyAgICAgICAgICAgICAgICBmb3JtYXQ9IlBORyIgYWxpZ249J2NlbnRlcicgd2lkdGg9IjhpbiIvPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIGEgYnJpZWYgc3VtbWFyeSBvZiB0aGUgIndvcmtmbG93IjoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcnMgc3BlY2lmeSBhcmNoaXRlY3R1cmUsIHBvbGljaWVzLCBwYXRjaGVzIGFuZAorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRldGFpbHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBmZXRjaGVzIGFuZCBkb3dubG9hZHMgdGhlIHNvdXJjZSBjb2RlCisgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIHNwZWNpZmllZCBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBzdXBwb3J0cyBzdGFuZGFyZCBtZXRob2RzIHN1Y2ggYXMgdGFyYmFsbHMKKyAgICAgICAgICAgICAgICAgICAgb3Igc291cmNlIGNvZGUgcmVwb3NpdG9yaWVzIHN5c3RlbXMgc3VjaCBhcyBHaXQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25jZSBzb3VyY2UgY29kZSBpcyBkb3dubG9hZGVkLCB0aGUgYnVpbGQgc3lzdGVtIGV4dHJhY3RzCisgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2VzIGludG8gYSBsb2NhbCB3b3JrIGFyZWEgd2hlcmUgcGF0Y2hlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgYXBwbGllZCBhbmQgY29tbW9uIHN0ZXBzIGZvciBjb25maWd1cmluZyBhbmQgY29tcGlsaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBzb2Z0d2FyZSBhcmUgcnVuLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gdGhlbiBpbnN0YWxscyB0aGUgc29mdHdhcmUgaW50byBhCisgICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeSBzdGFnaW5nIGFyZWEgd2hlcmUgdGhlIGJpbmFyeSBwYWNrYWdlIGZvcm1hdCB5b3UKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0IChERUIsIFJQTSwgb3IgSVBLKSBpcyB1c2VkIHRvIHJvbGwgdXAgdGhlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERpZmZlcmVudCBRQSBhbmQgc2FuaXR5IGNoZWNrcyBydW4gdGhyb3VnaG91dCBlbnRpcmUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciB0aGUgYmluYXJpZXMgYXJlIGNyZWF0ZWQsIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVzIGEgYmluYXJ5IHBhY2thZ2UgZmVlZCB0aGF0IGlzIHVzZWQgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBmaW5hbCByb290IGZpbGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBnZW5lcmF0ZXMgdGhlIGZpbGUgc3lzdGVtIGltYWdlIGFuZCBhCisgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZWQgRXh0ZW5zaWJsZSBTREsgKGVTRFNLKSBmb3IgYXBwbGljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaW4gcGFyYWxsZWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGEgdmVyeSBkZXRhaWxlZCBsb29rIGF0IHRoaXMgd29ya2Zsb3csIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvcGVuZW1iZWRkZWQtYnVpbGQtc3lzdGVtLWJ1aWxkLWNvbmNlcHRzJz5PcGVuRW1iZWRkZWQgQnVpbGQgU3lzdGVtIENvbmNlcHRzPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKworICAgIDxzZWN0aW9uIGlkPSdzb21lLWJhc2ljLXRlcm1zJz4KKyAgICAgICAgPHRpdGxlPlNvbWUgQmFzaWMgVGVybXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSXQgaGVscHMgdG8gdW5kZXJzdGFuZCBzb21lIGJhc2ljIGZ1bmRhbWVudGFsIHRlcm1zIHdoZW4KKyAgICAgICAgICAgIGxlYXJuaW5nIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgQWx0aG91Z2ggYSBsaXN0IG9mIHRlcm1zIGV4aXN0cyBpbiB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGVybXMnPllvY3RvIFByb2plY3QgVGVybXM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCwgdGhpcyBzZWN0aW9uCisgICAgICAgICAgICBwcm92aWRlcyB0aGUgZGVmaW5pdGlvbnMgb2Ygc29tZSB0ZXJtcyBoZWxwZnVsIGZvciBnZXR0aW5nIHN0YXJ0ZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbmZpZ3VyYXRpb24gRmlsZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBob2xkIGdsb2JhbCBkZWZpbml0aW9ucyBvZiB2YXJpYWJsZXMsCisgICAgICAgICAgICAgICAgICAgIHVzZXItZGVmaW5lZCB2YXJpYWJsZXMsIGFuZCBoYXJkd2FyZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyB0ZWxsIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3Blbi1FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB3aGF0IHRvIGJ1aWxkIGFuZCB3aGF0IHRvIHB1dCBpbnRvIHRoZSBpbWFnZSB0byBzdXBwb3J0IGEKKyAgICAgICAgICAgICAgICAgICAgcGFydGljdWxhciBwbGF0Zm9ybS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEEgY3VzdG9tIFNESyBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcGVycy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBlU0RLIGFsbG93cyBkZXZlbG9wZXJzIHRvIGluY29ycG9yYXRlIHRoZWlyIGxpYnJhcnkKKyAgICAgICAgICAgICAgICAgICAgYW5kIHByb2dyYW1taW5nIGNoYW5nZXMgYmFjayBpbnRvIHRoZSBpbWFnZSB0byBtYWtlCisgICAgICAgICAgICAgICAgICAgIHRoZWlyIGNvZGUgYXZhaWxhYmxlIHRvIG90aGVyIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgZVNESywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgTGF5ZXJzIGFsbG93IHlvdSB0byBjb25zb2xpZGF0ZSByZWxhdGVkIG1ldGFkYXRhIHRvCisgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZSB5b3VyIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBMYXllcnMgYWxzbyBpc29sYXRlIGluZm9ybWF0aW9uIHVzZWQgd2hlbiBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBmb3IgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgTGF5ZXJzIGFyZSBoaWVyYXJjaGljYWwgaW4gdGhlaXIgYWJpbGl0eSB0byBvdmVycmlkZQorICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBzcGVjaWZpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBpbmNsdWRlIGFueSBudW1iZXIgb2YgYXZhaWxhYmxlIGxheWVycyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGFuZCBjdXN0b21pemUgdGhlIGJ1aWxkIGJ5IGFkZGluZyB5b3VyCisgICAgICAgICAgICAgICAgICAgIGxheWVycyBhZnRlciB0aGVtLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlYXJjaCB0aGUgTGF5ZXIgSW5kZXggZm9yIGxheWVycyB1c2VkIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBGb3IgYSBkaXNjdXNzaW9uIHNwZWNpZmljYWxseSBvbiBCU1AgTGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKQorICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWV0YWRhdGE6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQSBrZXkgZWxlbWVudCBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0aGUgTWV0YWRhdGEgdGhhdAorICAgICAgICAgICAgICAgICAgICBpcyB1c2VkIHRvIGNvbnN0cnVjdCBhIExpbnV4IGRpc3RyaWJ1dGlvbiBhbmQgaXMgY29udGFpbmVkCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBmaWxlcyB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHBhcnNlcworICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGFuIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBNZXRhZGF0YSBpbmNsdWRlcyByZWNpcGVzLCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGZpbGVzLCBhbmQgb3RoZXIgaW5mb3JtYXRpb24gdGhhdCByZWZlcnMgdG8gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucyB0aGVtc2VsdmVzLCBhcyB3ZWxsIGFzIHRoZSBkYXRhIHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgY29udHJvbCB3aGF0IHRoaW5ncyBnZXQgYnVpbHQgYW5kIHRoZSBlZmZlY3RzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGEgYWxzbyBpbmNsdWRlcyBjb21tYW5kcyBhbmQgZGF0YSB1c2VkIHRvCisgICAgICAgICAgICAgICAgICAgIGluZGljYXRlIHdoYXQgdmVyc2lvbnMgb2Ygc29mdHdhcmUgYXJlIHVzZWQsIGZyb20KKyAgICAgICAgICAgICAgICAgICAgd2hlcmUgdGhleSBhcmUgb2J0YWluZWQsIGFuZCBjaGFuZ2VzIG9yIGFkZGl0aW9ucyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgaXRzZWxmIChwYXRjaGVzIG9yIGF1eGlsaWFyeSBmaWxlcykgdGhhdAorICAgICAgICAgICAgICAgICAgICBhcmUgdXNlZCB0byBmaXggYnVncyBvciBjdXN0b21pemUgdGhlIHNvZnR3YXJlIGZvciB1c2UKKyAgICAgICAgICAgICAgICAgICAgaW4gYSBwYXJ0aWN1bGFyIHNpdHVhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkLUNvcmUgaXMgYW4gaW1wb3J0YW50IHNldCBvZiB2YWxpZGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZ3MtdGVybS1vcGVuZW1iZWRkZWQtYnVpbGQtc3lzdGVtJz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wZW5FbWJlZGRlZCBCdWlsZCBTeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHRlcm1zICJCaXRCYWtlIiBhbmQgImJ1aWxkIHN5c3RlbSIgYXJlIHNvbWV0aW1lcworICAgICAgICAgICAgICAgICAgICB1c2VkIGZvciB0aGUgT3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Qml0QmFrZSBpcyBhIHRhc2sgc2NoZWR1bGVyIGFuZCBleGVjdXRpb24gZW5naW5lCisgICAgICAgICAgICAgICAgICAgIHRoYXQgcGFyc2VzIGluc3RydWN0aW9ucyAoaS5lLiByZWNpcGVzKSBhbmQgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBkYXRhLgorICAgICAgICAgICAgICAgICAgICBBZnRlciBhIHBhcnNpbmcgcGhhc2UsIEJpdEJha2UgY3JlYXRlcyBhIGRlcGVuZGVuY3kgdHJlZQorICAgICAgICAgICAgICAgICAgICB0byBvcmRlciB0aGUgY29tcGlsYXRpb24sIHNjaGVkdWxlcyB0aGUgY29tcGlsYXRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIGluY2x1ZGVkIGNvZGUsIGFuZCBmaW5hbGx5IGV4ZWN1dGVzIHRoZSBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc3BlY2lmaWVkIGN1c3RvbSBMaW51eCBpbWFnZSAoZGlzdHJpYnV0aW9uKS4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBpcyBzaW1pbGFyIHRvIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvb2wuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkR1cmluZyBhIGJ1aWxkIHByb2Nlc3MsIHRoZSBidWlsZCBzeXN0ZW0gdHJhY2tzCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBhbmQgcGVyZm9ybXMgYSBuYXRpdmUgb3IgY3Jvc3MtY29tcGlsYXRpb24KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIEFzIGEgZmlyc3Qgc3RlcCBpbiBhIGNyb3NzLWJ1aWxkIHNldHVwLCB0aGUgZnJhbWV3b3JrCisgICAgICAgICAgICAgICAgICAgIGF0dGVtcHRzIHRvIGNyZWF0ZSBhIGNyb3NzLWNvbXBpbGVyIHRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICAoaS5lLiBFeHRlbnNpYmxlIFNESykgc3VpdGVkIGZvciB0aGUgdGFyZ2V0IHBsYXRmb3JtLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcGVuRW1iZWRkZWQtQ29yZSAoT0UtQ29yZSk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT0UtQ29yZSBpcyBtZXRhZGF0YSBjb21wcmlzZWQgb2YgZm91bmRhdGlvbiByZWNpcGVzLAorICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLCBhbmQgYXNzb2NpYXRlZCBmaWxlcyB0aGF0IGFyZSBtZWFudCB0byBiZQorICAgICAgICAgICAgICAgICAgICBjb21tb24gYW1vbmcgbWFueSBkaWZmZXJlbnQgT3BlbkVtYmVkZGVkLWRlcml2ZWQgc3lzdGVtcywKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBPRS1Db3JlIGlzIGEgY3VyYXRlZCBzdWJzZXQgb2YgYW4gb3JpZ2luYWwgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICBkZXZlbG9wZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBjb21tdW5pdHkgdGhhdCBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICBwYXJlZCBkb3duIGludG8gYSBzbWFsbGVyLCBjb3JlIHNldCBvZiBjb250aW51b3VzbHkKKyAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVkIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSB0aWdodGx5IGNvbnRyb2xsZWQgYW5kIHF1YWxpdHktYXNzdXJlZAorICAgICAgICAgICAgICAgICAgICBjb3JlIHNldCBvZiByZWNpcGVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIHNlZSB0aGUgTWV0YWRhdGEgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhY2thZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBjb250ZXh0IG9mIHRoZSBZb2N0byBQcm9qZWN0LCB0aGlzIHRlcm0gcmVmZXJzIHRvIGEKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlJ3MgcGFja2FnZWQgb3V0cHV0IHByb2R1Y2VkIGJ5IEJpdEJha2UgKGkuZS4gYQorICAgICAgICAgICAgICAgICAgICAiYmFrZWQgcmVjaXBlIikuCisgICAgICAgICAgICAgICAgICAgIEEgcGFja2FnZSBpcyBnZW5lcmFsbHkgdGhlIGNvbXBpbGVkIGJpbmFyaWVzIHByb2R1Y2VkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSdzIHNvdXJjZXMuCisgICAgICAgICAgICAgICAgICAgIFlvdSAiYmFrZSIgc29tZXRoaW5nIGJ5IHJ1bm5pbmcgaXQgdGhyb3VnaCBCaXRCYWtlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgdGVybSAicGFja2FnZSIgY2FuLAorICAgICAgICAgICAgICAgICAgICBpbiBnZW5lcmFsLCBoYXZlIHN1YnRsZSBtZWFuaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBwYWNrYWdlcyByZWZlcnJlZCB0byBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtaG9zdC1kZXZlbG9wbWVudC1zeXN0ZW0nPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW08L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGFyZSBjb21waWxlZAorICAgICAgICAgICAgICAgICAgICBiaW5hcmllcyB0aGF0LCB3aGVuIGluc3RhbGxlZCwgYWRkIGZ1bmN0aW9uYWxpdHkgdG8geW91cgorICAgICAgICAgICAgICAgICAgICBMaW51eCBkaXN0cmlidXRpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFub3RoZXIgcG9pbnQgd29ydGggbm90aW5nIGlzIHRoYXQgaGlzdG9yaWNhbGx5IHdpdGhpbgorICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgcmVjaXBlcyB3ZXJlIHJlZmVycmVkIHRvIGFzIHBhY2thZ2VzIC0gdGh1cywKKyAgICAgICAgICAgICAgICAgICAgdGhlIGV4aXN0ZW5jZSBvZiBzZXZlcmFsIEJpdEJha2UgdmFyaWFibGVzIHRoYXQgYXJlIHNlZW1pbmdseQorICAgICAgICAgICAgICAgICAgICBtaXMtbmFtZWQsCisgICAgICAgICAgICAgICAgICAgIChlLmcuIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBFJz48ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9reTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBQb2t5IGlzIGEgcmVmZXJlbmNlIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbiBhbmQgYSByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICBQb2t5IHByb3ZpZGVzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBiYXNlLWxldmVsIGZ1bmN0aW9uYWwgZGlzdHJvIHVzZWQgdG8gaWxsdXN0cmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdyB0byBjdXN0b21pemUgYSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBtZWFucyBieSB3aGljaCB0byB0ZXN0IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cyAoaS5lLiBQb2t5IGlzIHVzZWQgdG8gdmFsaWRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSB2ZWhpY2xlIHRocm91Z2ggd2hpY2ggeW91IGNhbiBkb3dubG9hZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgUG9reSBpcyBub3QgYSBwcm9kdWN0IGxldmVsIGRpc3Ryby4KKyAgICAgICAgICAgICAgICAgICAgUmF0aGVyLCBpdCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGN1c3RvbWl6YXRpb24uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgUG9reSBpcyBhbiBpbnRlZ3JhdGlvbiBsYXllciBvbiB0b3Agb2YgT0UtQ29yZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWNpcGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIGZvcm0gb2YgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgIEEgcmVjaXBlIGNvbnRhaW5zIGEgbGlzdCBvZiBzZXR0aW5ncyBhbmQgdGFza3MKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gaW5zdHJ1Y3Rpb25zKSBmb3IgYnVpbGRpbmcgcGFja2FnZXMgdGhhdCBhcmUgdGhlbgorICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIGJ1aWxkIHRoZSBiaW5hcnkgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIEEgcmVjaXBlIGRlc2NyaWJlcyB3aGVyZSB5b3UgZ2V0IHNvdXJjZSBjb2RlIGFuZCB3aGljaAorICAgICAgICAgICAgICAgICAgICBwYXRjaGVzIHRvIGFwcGx5LgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIGRlc2NyaWJlIGRlcGVuZGVuY2llcyBmb3IgbGlicmFyaWVzIG9yIGZvciBvdGhlcgorICAgICAgICAgICAgICAgICAgICByZWNpcGVzIGFzIHdlbGwgYXMgY29uZmlndXJhdGlvbiBhbmQgY29tcGlsYXRpb24gb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgUmVsYXRlZCByZWNpcGVzIGFyZSBjb25zb2xpZGF0ZWQgaW50byBhIGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyODNmOWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbApAQCAtMCwwICsxLDEwOCBAQAorPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKworPGJvb2sgaWQ9J292ZXJ2aWV3LW1hbnVhbCcgbGFuZz0nZW4nCisgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIKKyAgICAgIHhtbG5zPSJodHRwOi8vZG9jYm9vay5vcmcvbnMvZG9jYm9vayIKKyAgICAgID4KKyAgICA8Ym9va2luZm8+CisKKyAgICAgICAgPG1lZGlhb2JqZWN0PgorICAgICAgICAgICAgPGltYWdlb2JqZWN0PgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0nZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nJworICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9J1NWRycKKyAgICAgICAgICAgICAgICAgICAgYWxpZ249J2xlZnQnIHNjYWxlZml0PScxJyB3aWR0aD0nMTAwJScvPgorICAgICAgICAgICAgPC9pbWFnZW9iamVjdD4KKyAgICAgICAgPC9tZWRpYW9iamVjdD4KKworICAgICAgICA8dGl0bGU+CisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwKKyAgICAgICAgPC90aXRsZT4KKworICAgICAgICA8YXV0aG9yZ3JvdXA+CisgICAgICAgICAgICA8YXV0aG9yPgorICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgorICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+CisgICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgIDwvYXV0aG9yPgorICAgICAgICA8L2F1dGhvcmdyb3VwPgorCisgICAgICAgIDxyZXZoaXN0b3J5PgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi41PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWF5IDIwMTg8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgPC9yZXZoaXN0b3J5PgorCisgICAgPGNvcHlyaWdodD4KKyAgICAgPHllYXI+JkNPUFlSSUdIVF9ZRUFSOzwveWVhcj4KKyAgICAgIDxob2xkZXI+TGludXggRm91bmRhdGlvbjwvaG9sZGVyPgorICAgIDwvY29weXJpZ2h0PgorCisgICAgPGxlZ2Fsbm90aWNlPgorICAgICAgPHBhcmE+CisgICAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCisgICAgICAgICAgdGhlIHRlcm1zIG9mIHRoZSA8dWxpbmsgdHlwZT0iaHR0cCIgdXJsPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvdWsvIj4KKyAgICAgICAgICBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDIuMCBVSzogRW5nbGFuZCAmYW1wOyBXYWxlczwvdWxpbms+IGFzIHB1Ymxpc2hlZCBieQorICAgICAgICAgIENyZWF0aXZlIENvbW1vbnMuCisgICAgICA8L3BhcmE+CisgICAgICAgICAgIDxub3RlPjx0aXRsZT5NYW51YWwgTm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgorICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbG9jYXRlZCB0aGlzIG1hbnVhbCB0aHJvdWdoIGEgd2ViIHNlYXJjaCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBtaWdodCBub3QgYmUgdGhlIG9uZSB5b3Ugd2FudAorICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgc2VhcmNoIG1pZ2h0IGhhdmUgcmV0dXJuZWQgYSBtYW51YWwgbXVjaAorICAgICAgICAgICAgICAgICAgICAgICBvbGRlciB0aGFuIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gd2l0aCB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdvcmtpbmcpLgorICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBhbGwgWW9jdG8gUHJvamVjdCBtYWpvciByZWxlYXNlcyBieQorICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgorICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICA8L25vdGU+CisgICAgPC9sZWdhbG5vdGljZT4KKworICAgIDwvYm9va2luZm8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJvdmVydmlldy1tYW51YWwtaW50cm8ueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJvdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJvdmVydmlldy1tYW51YWwtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJvdmVydmlldy1tYW51YWwtY29uY2VwdHMueG1sIiAvPgorCis8L2Jvb2s+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Bva3kuZW50IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKaW5kZXggZGIzZWVmMC4uNDliMTkwMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKQEAgLTEsMTMgKzEsMTcgQEAKLTwhRU5USVRZIERJU1RSTyAiMi40LjIiPgotPCFFTlRJVFkgRElTVFJPX0NPTVBSRVNTRUQgIjI0MiI+Ci08IUVOVElUWSBESVNUUk9fTkFNRV9OT19DQVAgInJvY2tvIj4KLTwhRU5USVRZIERJU1RST19OQU1FICJSb2NrbyI+Ci08IUVOVElUWSBZT0NUT19ET0NfVkVSU0lPTiAiMi40LjIiPgotPCFFTlRJVFkgRElTVFJPX1JFTF9UQUcgInlvY3RvLTIuNC4yIj4KLTwhRU5USVRZIE1FVEFJTlRFTFZFUlNJT04gIjguMCI+Cis8IUVOVElUWSBESVNUUk8gIjIuNSI+Cis8IUVOVElUWSBESVNUUk9fQ09NUFJFU1NFRCAiMjUiPgorPCFFTlRJVFkgRElTVFJPX05BTUVfTk9fQ0FQICJzdW1vIj4KKzwhRU5USVRZIERJU1RST19OQU1FICJTdW1vIj4KKzwhRU5USVRZIERJU1RST19OQU1FX05PX0NBUF9NSU5VU19PTkUgInJvY2tvIj4KKzwhRU5USVRZIERJU1RST19OQU1FX01JTlVTX09ORSAiUm9ja28iPgorPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT04gIjIuNSI+Cis8IUVOVElUWSBZT0NUT19ET0NfVkVSU0lPTl9NSU5VU19PTkUgIjIuNCI+Cis8IUVOVElUWSBESVNUUk9fUkVMX1RBRyAieW9jdG8tMi41Ij4KKzwhRU5USVRZIE1FVEFJTlRFTFZFUlNJT04gIjkuMCI+Cis8IUVOVElUWSBSRUxfTU9OVEhfWUVBUiAiTWF5IDIwMTgiPgogPCFFTlRJVFkgTUVUQV9JTlRFTF9SRUxfVEFHICImTUVUQUlOVEVMVkVSU0lPTjstJkRJU1RST19OQU1FX05PX0NBUDstJllPQ1RPX0RPQ19WRVJTSU9OOyI+Ci08IUVOVElUWSBQT0tZVkVSU0lPTiAiMTkuMC4yIj4KLTwhRU5USVRZIFBPS1lWRVJTSU9OX0NPTVBSRVNTRUQgIjE5MDIiPgorPCFFTlRJVFkgUE9LWVZFUlNJT04gIjIwLjAuMCI+Cis8IUVOVElUWSBQT0tZVkVSU0lPTl9DT01QUkVTU0VEICIyMDAwIj4KIDwhRU5USVRZIFlPQ1RPX1BPS1kgInBva3ktJkRJU1RST19OQU1FX05PX0NBUDstJlBPS1lWRVJTSU9OOyI+CiA8IUVOVElUWSBDT1BZUklHSFRfWUVBUiAiMjAxMC0yMDE4Ij4KIDwhRU5USVRZIFlPQ1RPX0RMX1VSTCAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnIj4KQEAgLTE4LDcgKzIyLDYgQEAKIDwhRU5USVRZIFlPQ1RPX0FCX1VSTCAiaHR0cDovL2F1dG9idWlsZGVyLnlvY3RvcHJvamVjdC5vcmciPgogPCFFTlRJVFkgWU9DVE9fR0lUX1VSTCAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnIj4KIDwhRU5USVRZIFlPQ1RPX0FEVFJFUE9fVVJMICJodHRwOi8vYWR0cmVwby55b2N0b3Byb2plY3Qub3JnIj4KLTwhRU5USVRZIFlPQ1RPX1JFTEVBU0VfTk9URVMgIiZZT0NUT19IT01FX1VSTDsvZG93bmxvYWRzL2NvcmUvJkRJU1RST19OQU1FX05PX0NBUDsmRElTVFJPX0NPTVBSRVNTRUQ7Ij4KIDwhRU5USVRZIE9FX0hPTUVfVVJMICJodHRwOi8vd3d3Lm9wZW5lbWJlZGRlZC5vcmciPgogPCFFTlRJVFkgT0VfTElTVFNfVVJMICJodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9tYWlsbWFuIj4KIDwhRU5USVRZIE9FX0RPQ1NfVVJMICJodHRwOi8vZG9jcy5vcGVuZW1iZWRkZWQub3JnIj4KQEAgLTM1LDggKzM4LDggQEAKIDwhRU5USVRZIEVDTElQU0VfSU5ESUdPX0NEVF9VUkwgIiZFQ0xJUFNFX0RMX1VSTDsvdG9vbHMvY2R0L3JlbGVhc2VzL2luZGlnbyI+CiA8IUVOVElUWSBZT0NUT19ET0NTX1VSTCAiJllPQ1RPX0hPTUVfVVJMOy9kb2NzIj4KIDwhRU5USVRZIFlPQ1RPX1NPVVJDRVNfVVJMICImWU9DVE9fSE9NRV9VUkw7L3NvdXJjZXMvIj4KLTwhRU5USVRZIFlPQ1RPX0FCX1BPUlRfVVJMICImWU9DVE9fQUJfVVJMOzo4MDEwIj4KLTwhRU5USVRZIFlPQ1RPX0FCX05JR0hUTFlfVVJMICImWU9DVE9fQUJfVVJMOy9wdWIvbmlnaHRseS8iPgorPCFFTlRJVFkgWU9DVE9fQUJfUE9SVF9VUkwgImh0dHBzOi8vYXV0b2J1aWxkZXIueW9jdG8uaW8vIj4KKzwhRU5USVRZIFlPQ1RPX0FCX05JR0hUTFlfVVJMICImWU9DVE9fQUJfUE9SVF9VUkw7L3B1Yi9uaWdodGx5LyI+CiA8IUVOVElUWSBZT0NUT19QT0tZX1VSTCAiJllPQ1RPX0RMX1VSTDsvcmVsZWFzZXMvcG9reS8iPgogPCFFTlRJVFkgWU9DVE9fUkVMRUFTRV9ETF9VUkwgIiZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3lvY3RvL3lvY3RvLSZESVNUUk87Ij4KIDwhRU5USVRZIFlPQ1RPX1RPT0xDSEFJTl9ETF9VUkwgIiZZT0NUT19SRUxFQVNFX0RMX1VSTDsvdG9vbGNoYWluLyI+CkBAIC01MiwxMyArNTUsMTQgQEAKIDwhRU5USVRZIFlPQ1RPX0RPQ1NfUkVGX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sIj4KIDwhRU5USVRZIFlPQ1RPX0RPQ1NfQlNQX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCI+CiA8IUVOVElUWSBZT0NUT19ET0NTX0RFVl9VUkwgIiZZT0NUT19ET0NTX1VSTDsvJllPQ1RPX0RPQ19WRVJTSU9OOy9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCI+Ci08IUVOVElUWSBZT0NUT19ET0NTX0tFUk5FTF9VUkwgIiZZT0NUT19ET0NTX1VSTDsvJllPQ1RPX0RPQ19WRVJTSU9OOy9rZXJuZWwtbWFudWFsL2tlcm5lbC1tYW51YWwuaHRtbCI+CiA8IUVOVElUWSBZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsva2VybmVsLWRldi9rZXJuZWwtZGV2Lmh0bWwiPgogPCFFTlRJVFkgWU9DVE9fRE9DU19QUk9GX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwiPgogPCFFTlRJVFkgWU9DVE9fRE9DU19NTV9VUkwgIiZZT0NUT19ET0NTX1VSTDsvJllPQ1RPX0RPQ19WRVJTSU9OOy9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC5odG1sIj4KIDwhRU5USVRZIFlPQ1RPX0RPQ1NfQkJfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwiPgogPCFFTlRJVFkgWU9DVE9fRE9DU19UT0FTVF9VUkwgIiZZT0NUT19ET0NTX1VSTDsvJllPQ1RPX0RPQ19WRVJTSU9OOy90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC5odG1sIj4KIDwhRU5USVRZIFlPQ1RPX0RPQ1NfU0RLX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfT01fVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsvb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfQlJJRUZfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsvYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCI+CiA8IUVOVElUWSBZT0NUT19BRFRQQVRIX0RJUiAiL29wdC9wb2t5LyZESVNUUk87Ij4KIDwhRU5USVRZIFlPQ1RPX1BPS1lfVEFSQkFMTCAiJllPQ1RPX1BPS1k7LnRhci5iejIiPgogPCFFTlRJVFkgT0VfSU5JVF9QQVRIICImWU9DVE9fUE9LWTsvb2UtaW5pdC1idWlsZC1lbnYiPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCmluZGV4IGY3NDJlODguLmI2NDg3NWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC54bWwKQEAgLTg3LDE0ICs4Nyw5IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIApAQCAtMTE4LDI0ICsxMTMsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCi0gICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCisgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGxvY2F0ZWQgdGhpcyBtYW51YWwgdGhyb3VnaCBhIHdlYiBzZWFyY2gsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgbWlnaHQgbm90IGJlIHRoZSBvbmUgeW91IHdhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gdGhlIHNlYXJjaCBtaWdodCBoYXZlIHJldHVybmVkIGEgbWFudWFsIG11Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgb2xkZXIgdGhhbiB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIHdpdGggd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgICAgIGFyZSB3b3JraW5nKS4KKyAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIFlvY3RvIFByb2plY3QgbWFqb3IgcmVsZWFzZXMgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS54bWwKaW5kZXggMTFkZmM1Yi4uNDlmZjg2MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnhtbApAQCAtMTQzLDcgKzE0Myw3IEBACiAgICAgICAgICAgICAgICAgVG8gYWRkIGEgcGFja2FnZSwgeW91IG5lZWQgdG8gY3JlYXRlIGEgQml0QmFrZSByZWNpcGUuCiAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjcmVhdGUgYSBCaXRCYWtlIHJlY2lwZSwgc2VlIHRoZQogICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctcmVjaXBlLXdyaXRpbmctYS1uZXctcmVjaXBlJz5Xcml0aW5nIGEgTmV3IFJlY2lwZTwvdWxpbms+IgotICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9hbnN3ZXI+CiAgICAgPC9xYW5kYWVudHJ5PgpAQCAtNDE3LDEwICs0MTcsMTEgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gbGljZW5zaW5nIGluIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdsaWNlbnNpbmcnPkxpY2Vuc2luZzwvbGluaz4iIHNlY3Rpb24gYW5kIGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2xpY2Vuc2luZyc+TGljZW5zaW5nPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsCisgICAgICAgICAgICAgICAgYW5kIGFsc28gaW4gdGhlCiAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9kdWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiwgd2hpY2ggaXMgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKLSAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvYW5zd2VyPgogICAgIDwvcWFuZGFlbnRyeT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9hbmFseXNpcy1mb3ItcGFja2FnZS1zcGxpdHRpbmcucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ZjI3OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvYnVpbGRpbmctYW4taW1hZ2UucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2J1aWxkaW5nLWFuLWltYWdlLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMWZiZWE1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvYnVpbGRpbmctYW4taW1hZ2UucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNzQ2NGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW5zLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW5zLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM2NjcwYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxYTQ4ZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2ltYWdlcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvaW1hZ2VzLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk5ZWFjMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvaW1hZ2VzLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9sYXllci1pbnB1dC5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTRmMmU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9sYXllci1pbnB1dC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3YzljMzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3BhY2thZ2UtZmVlZHMucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3BhdGNoaW5nLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9wYXRjaGluZy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlY2QwMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3BhdGNoaW5nLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhZGJlMWY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc2RrLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zZGsucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzM2Yjc1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zZGsucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZhZWZiNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1pbnB1dC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NTE1MDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1pbnB1dC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWNmZjE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzI5ODQwMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy95b2N0by1lbnZpcm9ubWVudC1yZWYucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3lvY3RvLWVudmlyb25tZW50LXJlZi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MGM2YzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3lvY3RvLWVudmlyb25tZW50LXJlZi5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMveXAtZG93bmxvYWQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc3MGJlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMveXAtZG93bmxvYWQucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9pbnRyb2R1Y3Rpb24ueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9pbnRyb2R1Y3Rpb24ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWVmMmQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvaW50cm9kdWN0aW9uLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwODQgKzAsMCBAQAotPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgotImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKLVs8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KLQotPGNoYXB0ZXIgaWQ9J3JlZi1tYW51YWwtaW50cm8nPgotPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+Ci0KLTxzZWN0aW9uIGlkPSdyZWYtd2VsY29tZSc+Ci0gICAgPHRpdGxlPldlbGNvbWU8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFdlbGNvbWUgdG8gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgcmVmZXJlbmNlIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCByZWxlYXNlCi0gICAgICAgIG9mIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBUaGlzIG1hbnVhbCBpcyBiZXN0IHVzZWQgYWZ0ZXIgeW91IGhhdmUgYW4gdW5kZXJzdGFuZGluZwotICAgICAgICBvZiB0aGUgYmFzaWNzIG9mIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBUaGUgbWFudWFsIGlzIG5laXRoZXIgbWVhbnQgdG8gYmUgcmVhZCBhcyBhIHN0YXJ0aW5nIHBvaW50IHRvIHRoZQotICAgICAgICBZb2N0byBQcm9qZWN0IG5vciByZWFkIGZyb20gc3RhcnQgdG8gZmluaXNoLgotICAgICAgICBVc2UgdGhpcyBtYW51YWwgdG8gZmluZCBjb25jZXB0cywgdmFyaWFibGUgZGVmaW5pdGlvbnMsIGNsYXNzCi0gICAgICAgIGRlc2NyaXB0aW9ucywgYW5kIHNvIGZvcnRoIGFzIG5lZWRlZCBkdXJpbmcgdGhlIGNvdXJzZSBvZiB1c2luZwotICAgICAgICB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9yIGludHJvZHVjdG9yeSBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPiBhbmQgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSd5cC1pbnRybyc+SW50cm9kdWNpbmcgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L2xpbms+IgotICAgICAgICBzZWN0aW9uLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgdG8gdGVzdCBydW4gYnVpbGRpbmcgYW4gaW1hZ2UKLSAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gdW5kZXJzdGFuZCBjb25jZXB0cywgd29yayB0aHJvdWdoIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0PC91bGluaz4uCi0gICAgICAgIFlvdSBjYW4gZmluZCAiaG93LXRvIiBpbmZvcm1hdGlvbiBpbiB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsnPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsPC91bGluaz4uCi0gICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgotICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFlvY3RvIFByb2plY3QgRG9jdW1lbnRhdGlvbiBzZXQsCi0gICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVzb3VyY2VzLWxpbmtzLWFuZC1yZWxhdGVkLWRvY3VtZW50YXRpb24nPkxpbmtzIGFuZCBSZWxhdGVkIERvY3VtZW50YXRpb248L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J3lwLWludHJvJz4KLSAgICA8dGl0bGU+SW50cm9kdWNpbmcgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIGFuIG9wZW4tc291cmNlIGNvbGxhYm9yYXRpb24gcHJvamVjdCB3aG9zZQotICAgICAgICBmb2N1cyBpcyBmb3IgZGV2ZWxvcGVycyBvZiBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zLgotICAgICAgICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYW4KLSAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L2xpbms+LgotICAgICAgICBUaGUgYnVpbGQgc3lzdGVtLCB3aGljaCBpcyBiYXNlZCBvbiB0aGUgT3BlbkVtYmVkZGVkIChPRSkgcHJvamVjdCBhbmQKLSAgICAgICAgdXNlcyB0aGUKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPiB0b29sLCBjb25zdHJ1Y3RzIGNvbXBsZXRlCi0gICAgICAgIExpbnV4IGltYWdlcyBmb3IgYXJjaGl0ZWN0dXJlcyBiYXNlZCBvbiBBUk0sIE1JUFMsIFBvd2VyUEMsIHg4NiBhbmQKLSAgICAgICAgeDg2LTY0LgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIEhpc3RvcmljYWxseSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sIHdoaWNoIGlzIHRoZQotICAgICAgICAgICAgY29tYmluYXRpb24gb2YgQml0QmFrZSBhbmQgT0UgY29tcG9uZW50cywgZm9ybWVkIGEgcmVmZXJlbmNlCi0gICAgICAgICAgICBidWlsZCBob3N0IHRoYXQgd2FzIGtub3duIGFzCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncG9reSc+UG9reTwvbGluaz4iICg8ZW1waGFzaXM+UGFoPC9lbXBoYXNpcz4ta2VlKS4KLSAgICAgICAgICAgIFRoZSB0ZXJtICJQb2t5IiwgYXMgdXNlZCB0aHJvdWdob3V0IHRoZSBZb2N0byBQcm9qZWN0IERvY3VtZW50YXRpb24KLSAgICAgICAgICAgIHNldCwgY2FuIGhhdmUgZGlmZmVyZW50IG1lYW5pbmdzLgotICAgICAgICA8L25vdGU+Ci0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHZhcmlvdXMgYW5jaWxsYXJ5IHRvb2xzIGZvciB0aGUgZW1iZWRkZWQKLSAgICAgICAgZGV2ZWxvcGVyIGFuZCBhbHNvIGZlYXR1cmVzIHRoZSBTYXRvIHJlZmVyZW5jZSBVc2VyIEludGVyZmFjZSwgd2hpY2gKLSAgICAgICAgaXMgb3B0aW1pemVkIGZvciBzdHlsdXMtZHJpdmVuLCBsb3ctcmVzb2x1dGlvbiBzY3JlZW5zLgotICAgIDwvcGFyYT4KLQotICAgIDxtZWRpYW9iamVjdD4KLSAgICAgICAgPGltYWdlb2JqZWN0PgotICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmciCi0gICAgICAgICAgICAgICAgZm9ybWF0PSJQTkciIGFsaWduPSdjZW50ZXInIHdpZHRoPSI4aW4iLz4KLSAgICAgICAgPC9pbWFnZW9iamVjdD4KLSAgICA8L21lZGlhb2JqZWN0PgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEhlcmUgYXJlIHNvbWUgaGlnaGxpZ2h0cyBmb3IgdGhlIFlvY3RvIFByb2plY3Q6Ci0gICAgPC9wYXJhPgotCi0gICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgUHJvdmlkZXMgYSByZWNlbnQgTGludXgga2VybmVsIGFsb25nIHdpdGggYSBzZXQgb2Ygc3lzdGVtCi0gICAgICAgICAgICBjb21tYW5kcyBhbmQgbGlicmFyaWVzIHN1aXRhYmxlIGZvciB0aGUgZW1iZWRkZWQKLSAgICAgICAgICAgIGVudmlyb25tZW50LgotICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgIE1ha2VzIGF2YWlsYWJsZSBzeXN0ZW0gY29tcG9uZW50cyBzdWNoIGFzIFgxMSwgR1RLKywgUXQsCi0gICAgICAgICAgICBDbHV0dGVyLCBhbmQgU0RMIChhbW9uZyBvdGhlcnMpIHNvIHlvdSBjYW4gY3JlYXRlIGEgcmljaCB1c2VyCi0gICAgICAgICAgICBleHBlcmllbmNlIG9uIGRldmljZXMgdGhhdCBoYXZlIGRpc3BsYXkgaGFyZHdhcmUuCi0gICAgICAgICAgICBGb3IgZGV2aWNlcyB0aGF0IGRvIG5vdCBoYXZlIGEgZGlzcGxheSBvciB3aGVyZSB5b3Ugd2lzaCB0bwotICAgICAgICAgICAgdXNlIGFsdGVybmF0aXZlIFVJIGZyYW1ld29ya3MsIHRoZXNlIGNvbXBvbmVudHMgbmVlZCBub3QgYmUKLSAgICAgICAgICAgIGluc3RhbGxlZC4KLSAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICBDcmVhdGVzIGEgZm9jdXNlZCBhbmQgc3RhYmxlIGNvcmUgY29tcGF0aWJsZSB3aXRoIHRoZQotICAgICAgICAgICAgT3BlbkVtYmVkZGVkIHByb2plY3Qgd2l0aCB3aGljaCB5b3UgY2FuIGVhc2lseSBhbmQgcmVsaWFibHkKLSAgICAgICAgICAgIGJ1aWxkIGFuZCBkZXZlbG9wLgotICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgIEZ1bGx5IHN1cHBvcnRzIGEgd2lkZSByYW5nZSBvZiBoYXJkd2FyZSBhbmQgZGV2aWNlIGVtdWxhdGlvbgotICAgICAgICAgICAgdGhyb3VnaCB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpLgotICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgIFByb3ZpZGVzIGEgbGF5ZXIgbWVjaGFuaXNtIHRoYXQgYWxsb3dzIHlvdSB0byBlYXNpbHkgZXh0ZW5kCi0gICAgICAgICAgICB0aGUgc3lzdGVtLCBtYWtlIGN1c3RvbWl6YXRpb25zLCBhbmQga2VlcCB0aGVtIG9yZ2FuaXplZC4KLSAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgIDwvaXRlbWl6ZWRsaXN0PgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFlvdSBjYW4gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvIGdlbmVyYXRlIGltYWdlcyBmb3IgbWFueSBraW5kcwotICAgICAgICBvZiBkZXZpY2VzLgotICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgY3JlYXRpb24gb2YKLSAgICAgICAgcmVmZXJlbmNlIGltYWdlcyB0aGF0IHlvdSBjYW4gYm9vdCB3aXRoaW4gYW5kIGVtdWxhdGUgdXNpbmcgUUVNVS4KLSAgICAgICAgVGhlIHN0YW5kYXJkIGV4YW1wbGUgbWFjaGluZXMgdGFyZ2V0IFFFTVUgZnVsbC1zeXN0ZW0KLSAgICAgICAgZW11bGF0aW9uIGZvciAzMi1iaXQgYW5kIDY0LWJpdCB2YXJpYW50cyBvZiB4ODYsIEFSTSwgTUlQUywgYW5kCi0gICAgICAgIFBvd2VyUEMgYXJjaGl0ZWN0dXJlcy4KLSAgICAgICAgQmV5b25kIGVtdWxhdGlvbiwgeW91IGNhbiB1c2UgdGhlIGxheWVyIG1lY2hhbmlzbSB0byBleHRlbmQKLSAgICAgICAgc3VwcG9ydCB0byBqdXN0IGFib3V0IGFueSBwbGF0Zm9ybSB0aGF0IExpbnV4IGNhbiBydW4gb24gYW5kIHRoYXQKLSAgICAgICAgYSB0b29sY2hhaW4gY2FuIHRhcmdldC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQW5vdGhlciBZb2N0byBQcm9qZWN0IGZlYXR1cmUgaXMgdGhlIFNhdG8gcmVmZXJlbmNlIFVzZXIKLSAgICAgICAgSW50ZXJmYWNlLgotICAgICAgICBUaGlzIG9wdGlvbmFsIFVJIHRoYXQgaXMgYmFzZWQgb24gR1RLKyBpcyBpbnRlbmRlZCBmb3IgZGV2aWNlcyB3aXRoCi0gICAgICAgIHJlc3RyaWN0ZWQgc2NyZWVuIHNpemVzIGFuZCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQotICAgICAgICBPcGVuRW1iZWRkZWQgQ29yZSBsYXllciBzbyB0aGF0IGRldmVsb3BlcnMgY2FuIHRlc3QgcGFydHMgb2YgdGhlCi0gICAgICAgIHNvZnR3YXJlIHN0YWNrLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBXaGlsZSB0aGUgWW9jdG8gUHJvamVjdCBkb2VzIG5vdCBwcm92aWRlIGEgc3RyaWN0IHRlc3RpbmcgZnJhbWV3b3JrLAotICAgICAgICBpdCBkb2VzIHByb3ZpZGUgb3IgZ2VuZXJhdGUgZm9yIHlvdSBhcnRpZmFjdHMgdGhhdCBsZXQgeW91IHBlcmZvcm0KLSAgICAgICAgdGFyZ2V0LWxldmVsIGFuZCBlbXVsYXRlZCB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcuCi0gICAgICAgIEFkZGl0aW9uYWxseSwgaWYgeW91IGFyZSBhbgotICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPiBJREUgdXNlciwgeW91IGNhbgotICAgICAgICBpbnN0YWxsIGFuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiB0byBhbGxvdyB5b3UgdG8gZGV2ZWxvcCB3aXRoaW4gdGhhdAotICAgICAgICBmYW1pbGlhciBlbnZpcm9ubWVudC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQnkgZGVmYXVsdCwgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QgdG8gYnVpbGQgYW4gaW1hZ2UgY3JlYXRlcyBhIFBva3kKLSAgICAgICAgZGlzdHJpYnV0aW9uLgotICAgICAgICBIb3dldmVyLCB5b3UgY2FuIGNyZWF0ZSB5b3VyIG93biBkaXN0cmlidXRpb24gYnkgcHJvdmlkaW5nIGtleQotICAgICAgICA8bGluayBsaW5rPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+LgotICAgICAgICBBIGdvb2QgZXhhbXBsZSBpcyBBbmdzdHJvbSwgd2hpY2ggaGFzIGhhZCBhIGRpc3RyaWJ1dGlvbgotICAgICAgICBiYXNlZCBvbiB0aGUgWW9jdG8gUHJvamVjdCBzaW5jZSBpdHMgaW5jZXB0aW9uLgotICAgICAgICBPdGhlciBleGFtcGxlcyBpbmNsdWRlIGNvbW1lcmNpYWwgZGlzdHJpYnV0aW9ucyBsaWtlCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvb3JnYW5pemF0aW9uL3dpbmQtcml2ZXItc3lzdGVtcyc+V2luZCBSaXZlciBMaW51eDwvdWxpbms+LAotICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b2N0b3Byb2plY3Qub3JnL29yZ2FuaXphdGlvbi9tZW50b3ItZ3JhcGhpY3MnPk1lbnRvciBFbWJlZGRlZCBMaW51eDwvdWxpbms+LAotICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b2N0b3Byb2plY3Qub3JnL29yZ2FuaXphdGlvbi9lbmVhLWFiJz5FTkVBIExpbnV4PC91bGluaz4KLSAgICAgICAgYW5kIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZWNvc3lzdGVtL21lbWJlci1vcmdhbml6YXRpb25zJz5vdGhlcnM8L3VsaW5rPi4KLSAgICAgICAgU2VlIHRoZSAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmcteW91ci1vd24tZGlzdHJpYnV0aW9uJz5DcmVhdGluZyBZb3VyIE93biBEaXN0cmlidXRpb248L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKLSAgICAgICAgaW5mb3JtYXRpb24uCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0naW50cm8tcmVxdWlyZW1lbnRzJz4KLTx0aXRsZT5TeXN0ZW0gUmVxdWlyZW1lbnRzPC90aXRsZT4KLSAgICA8cGFyYT4KLSAgICAgICAgRm9yIGdlbmVyYWwgWW9jdG8gUHJvamVjdCBzeXN0ZW0gcmVxdWlyZW1lbnRzLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3lwLXJlc291cmNlcyc+U2V0dGluZyBVcCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIgc2VjdGlvbgotICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydC4KLSAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gcHJvdmlkZXMgZGV0YWlscyBvbiBzeXN0ZW0gcmVxdWlyZW1lbnRzCi0gICAgICAgIG5vdCBjb3ZlcmVkIGluIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0LgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSdkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+Ci0gICAgICAgIDx0aXRsZT5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBDdXJyZW50bHksIHRoZSBZb2N0byBQcm9qZWN0IGlzIHN1cHBvcnRlZCBvbiB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICBkaXN0cmlidXRpb25zOgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZXMgYXJlIHRlc3RlZCBhZ2FpbnN0IHRoZSBzdGFibGUgTGludXgKLSAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9ucyBpbiB0aGUgZm9sbG93aW5nIGxpc3QuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHNob3VsZCB3b3JrIG9uIG90aGVyIGRpc3RyaWJ1dGlvbnMgYnV0Ci0gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24gaXMgbm90IHBlcmZvcm1lZCBhZ2FpbnN0IHRoZW0uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHRoZSBZb2N0byBQcm9qZWN0IGRvZXMgbm90IHN1cHBvcnQKLSAgICAgICAgICAgICAgICAgICAgYW5kIGN1cnJlbnRseSBoYXMgbm8gcGxhbnMgdG8gc3VwcG9ydAotICAgICAgICAgICAgICAgICAgICByb2xsaW5nLXJlbGVhc2VzIG9yIGRldmVsb3BtZW50IGRpc3RyaWJ1dGlvbnMgZHVlIHRvIHRoZWlyCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0YW50bHkgY2hhbmdpbmcgbmF0dXJlLgotICAgICAgICAgICAgICAgICAgICBXZSB3ZWxjb21lIHBhdGNoZXMgYW5kIGJ1ZyByZXBvcnRzLCBidXQga2VlcCBpbiBtaW5kIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgb3VyIHByaW9yaXR5IGlzIG9uIHRoZSBzdXBwb3J0ZWQgcGxhdGZvcm1zIGxpc3RlZCBiZWxvdy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGVuY291bnRlciBwcm9ibGVtcywgcGxlYXNlIGdvIHRvCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19CVUdaSUxMQV9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJ1Z3ppbGxhPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYW5kIHN1Ym1pdCBhIGJ1Zy4KLSAgICAgICAgICAgICAgICAgICAgV2UgYXJlIGludGVyZXN0ZWQgaW4gaGVhcmluZyBhYm91dCB5b3VyIGV4cGVyaWVuY2UuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLTwhLS0KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDEwLjA0PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxMS4xMDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTIuMDQgKExUUyk8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDEzLjEwPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNC4wNCAoTFRTKTwvcGFyYT48L2xpc3RpdGVtPiAtLT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE0LjEwPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNS4wNDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTUuMTA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE2LjA0IChMVFMpPC9wYXJhPjwvbGlzdGl0ZW0+Ci08IS0tICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgMTYgKFZlcm5lKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgMTcgKFNwaGVyaWNhbCk8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIHJlbGVhc2UgMTkgKFNjaHLDtmRpbmdlcidzIENhdCk8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIHJlbGVhc2UgMjAgKEhlaXNlbmJ1Zyk8L3BhcmE+PC9saXN0aXRlbT4gLS0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDIyPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDIzPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDI0PC9wYXJhPjwvbGlzdGl0ZW0+Ci08IS0tICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA1LjYgKEZpbmFsKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA1LjcgKEZpbmFsKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA1LjggKEZpbmFsKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA2LjMgKEZpbmFsKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA2Lng8L3BhcmE+PC9saXN0aXRlbT4gLS0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNlbnRPUyByZWxlYXNlIDcueDwvcGFyYT48L2xpc3RpdGVtPgotPCEtLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA2LjAgKFNxdWVlemUpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy54IChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDgueCAoSmVzc2llKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDkueCAoU3RyZXRjaCk8L3BhcmE+PC9saXN0aXRlbT4KLTwhLS0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy4xIChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy4yIChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy4zIChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy40IChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy41IChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy42IChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgotPCEtLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTEuNDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSAxMi4xPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPm9wZW5TVVNFIDEyLjI8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTIuMzwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSAxMy4xPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSAxMy4yPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPm9wZW5TVVNFIDQyLjE8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBXaGlsZSB0aGUgWW9jdG8gUHJvamVjdCBUZWFtIGF0dGVtcHRzIHRvIGVuc3VyZSBhbGwgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgcmVsZWFzZXMgYXJlIG9uZSBodW5kcmVkIHBlcmNlbnQgY29tcGF0aWJsZSB3aXRoIGVhY2ggb2ZmaWNpYWxseQotICAgICAgICAgICAgc3VwcG9ydGVkIExpbnV4IGRpc3RyaWJ1dGlvbiwgaW5zdGFuY2VzIG1pZ2h0IGV4aXN0IHdoZXJlIHlvdQotICAgICAgICAgICAgZW5jb3VudGVyIGEgcHJvYmxlbSB3aGlsZSB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBvbiBhIHNwZWNpZmljCi0gICAgICAgICAgICBkaXN0cmlidXRpb24uCi0gICAgICAgIDwvbm90ZT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+Ci0gICAgPHRpdGxlPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW08L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGxpc3Qgb2YgcGFja2FnZXMgeW91IG5lZWQgb24gdGhlIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIGNhbgotICAgICAgICAgICAgYmUgbGFyZ2Ugd2hlbiBjb3ZlcmluZyBhbGwgYnVpbGQgc2NlbmFyaW9zIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHJlcXVpcmVkIHBhY2thZ2VzIGFjY29yZGluZyB0bwotICAgICAgICAgICAgTGludXggZGlzdHJpYnV0aW9uIGFuZCBmdW5jdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSd1YnVudHUtcGFja2FnZXMnPgotICAgICAgICAgICAgPHRpdGxlPlVidW50dSBhbmQgRGViaWFuPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBieSBmdW5jdGlvbgotICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIFVidW50dSBvciBEZWJpYW4gTGludXggZGlzdHJpYnV0aW9uOgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIHN5c3RlbSBoYXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vc3M0LWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGFsbGVkLCB5b3UKLSAgICAgICAgICAgICAgICAgICAgbWlnaHQgZXhwZXJpZW5jZSBRRU1VIGJ1aWxkIGZhaWx1cmVzIGR1ZSB0byB0aGUgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsaW5nIGl0cyBvd24gY3VzdG9tCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2luY2x1ZGUvbGludXgvc291bmRjYXJkLmg8L2ZpbGVuYW1lPiBvbgotICAgICAgICAgICAgICAgICAgICB0aGUgRGViaWFuIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHJ1biBpbnRvIHRoaXMgc2l0dWF0aW9uLCBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgICAgICBzb2x1dGlvbnMgZXhpc3Q6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGFwdC1nZXQgYnVpbGQtZGVwIHFlbXUKLSAgICAgJCBzdWRvIGFwdC1nZXQgcmVtb3ZlIG9zczQtZGV2Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIG9uIGEgaGVhZGxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCAmVUJVTlRVX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkdyYXBoaWNhbCBhbmQgRWNsaXBzZSBQbHVnLUluIEV4dHJhczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgcmVjb21tZW5kZWQgaWYgdGhlIGhvc3Qgc3lzdGVtIGhhcyBncmFwaGljcwotICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBvciBpZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgRWNsaXBzZQotICAgICAgICAgICAgICAgICAgICAgICAgSURFOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIGxpYnNkbDEuMi1kZXYgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCBtYWtlIHhzbHRwcm9jIGRvY2Jvb2stdXRpbHMgZm9wIGRibGF0ZXggeG1sdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcGVuRW1iZWRkZWQgU2VsZi1UZXN0ICg8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPik6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIHJ1bgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgcHl0aG9uLWdpdAotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nZmVkb3JhLXBhY2thZ2VzJz4KLSAgICAgICAgICAgIDx0aXRsZT5GZWRvcmEgUGFja2FnZXM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIHJlcXVpcmVkIHBhY2thZ2VzIGJ5IGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgZ2l2ZW4gYSBzdXBwb3J0ZWQgRmVkb3JhIExpbnV4IGRpc3RyaWJ1dGlvbjoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzc2VudGlhbHM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCB0byBidWlsZCBhbiBpbWFnZSBmb3IgYSBoZWFkbGVzcwotICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gZG5mIGluc3RhbGwgJkZFRE9SQV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5HcmFwaGljYWwgYW5kIEVjbGlwc2UgUGx1Zy1JbiBFeHRyYXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIHJlY29tbWVuZGVkIGlmIHRoZSBob3N0IHN5c3RlbSBoYXMgZ3JhcGhpY3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgb3IgaWYgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIEVjbGlwc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIElERToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGRuZiBpbnN0YWxsIFNETC1kZXZlbCB4dGVybQotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRvY3VtZW50YXRpb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIGJ1aWxkIG91dCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYW51YWxzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gZG5mIGluc3RhbGwgbWFrZSBkb2Nib29rLXN0eWxlLWRzc3NsIGRvY2Jvb2stc3R5bGUteHNsIFwKLSAgICAgZG9jYm9vay1kdGRzIGRvY2Jvb2stdXRpbHMgZm9wIGxpYnhzbHQgZGJsYXRleCB4bWx0bwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk9wZW5FbWJlZGRlZCBTZWxmLVRlc3QgKDxmaWxlbmFtZT5vZS1zZWxmdGVzdDwvZmlsZW5hbWU+KTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gcnVuCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGRuZiBpbnN0YWxsIHB5dGhvbjMtR2l0UHl0aG9uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdvcGVuc3VzZS1wYWNrYWdlcyc+Ci0gICAgICAgICAgICA8dGl0bGU+b3BlblNVU0UgUGFja2FnZXM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIHJlcXVpcmVkIHBhY2thZ2VzIGJ5IGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgZ2l2ZW4gYSBzdXBwb3J0ZWQgb3BlblNVU0UgTGludXggZGlzdHJpYnV0aW9uOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIGZvciBhIGhlYWRsZXNzCi0gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB6eXBwZXIgaW5zdGFsbCAmT1BFTlNVU0VfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R3JhcGhpY2FsIGFuZCBFY2xpcHNlIFBsdWctSW4gRXh0cmFzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyByZWNvbW1lbmRlZCBpZiB0aGUgaG9zdCBzeXN0ZW0gaGFzIGdyYXBoaWNzCi0gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9yIGlmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFY2xpcHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBJREU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB6eXBwZXIgaW5zdGFsbCBsaWJTREwtZGV2ZWwgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIHp5cHBlciBpbnN0YWxsIG1ha2UgZGJsYXRleCB4bWx0bwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk9wZW5FbWJlZGRlZCBTZWxmLVRlc3QgKDxmaWxlbmFtZT5vZS1zZWxmdGVzdDwvZmlsZW5hbWU+KTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gcnVuCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIHp5cHBlciBpbnN0YWxsIHB5dGhvbi1HaXRQeXRob24KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdjZW50b3MtcGFja2FnZXMnPgotICAgICAgICAgICAgPHRpdGxlPkNlbnRPUyBQYWNrYWdlczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgYnkgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICBnaXZlbiBhIHN1cHBvcnRlZCBDZW50T1MgTGludXggZGlzdHJpYnV0aW9uOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIGZvciBhIGhlYWRsZXNzCi0gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB5dW0gaW5zdGFsbCAmQ0VOVE9TX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOyBTREwtZGV2ZWwgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0cmEgUGFja2FnZXMgZm9yIEVudGVycHJpc2UgTGludXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGEgY29sbGVjdGlvbiBvZiBwYWNrYWdlcyBmcm9tIEZlZG9yYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgb24gUkhFTC9DZW50T1MgZm9yIGVhc3kgaW5zdGFsbGF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBwYWNrYWdlcyBub3QgaW5jbHVkZWQgaW4gZW50ZXJwcmlzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGludXggYnkgZGVmYXVsdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGluc3RhbGwgdGhlc2UgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tYWtlY2FjaGU8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lcyBhZGRpdGlvbmFsIE1ldGFkYXRhIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R3JhcGhpY2FsIGFuZCBFY2xpcHNlIFBsdWctSW4gRXh0cmFzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyByZWNvbW1lbmRlZCBpZiB0aGUgaG9zdCBzeXN0ZW0gaGFzIGdyYXBoaWNzCi0gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9yIGlmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFY2xpcHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBJREU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB5dW0gaW5zdGFsbCBTREwtZGV2ZWwgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIHl1bSBpbnN0YWxsIG1ha2UgZG9jYm9vay1zdHlsZS1kc3NzbCBkb2Nib29rLXN0eWxlLXhzbCBcCi0gICAgIGRvY2Jvb2stZHRkcyBkb2Nib29rLXV0aWxzIGZvcCBsaWJ4c2x0IGRibGF0ZXggeG1sdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcGVuRW1iZWRkZWQgU2VsZi1UZXN0ICg8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPik6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIHJ1bgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB5dW0gaW5zdGFsbCBHaXRQeXRob24KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+Ci0gICAgICAgIDx0aXRsZT5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgdGhlIGJ1aWxkIHN5c3RlbSwgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbQotICAgICAgICAgICAgbXVzdCBtZWV0IHRoZSBmb2xsb3dpbmcgdmVyc2lvbiByZXF1aXJlbWVudHMgZm9yIEdpdCwgdGFyLCBhbmQKLSAgICAgICAgICAgIFB5dGhvbjoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkdpdCAxLjguMy4xIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+dGFyIDEuMjcgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QeXRob24gMy40LjAgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gZG9lcyBub3QgbWVldCBhbGwgdGhlc2UgcmVxdWlyZW1lbnRzLAotICAgICAgICAgICAgeW91IGNhbiByZXNvbHZlIHRoaXMgYnkgaW5zdGFsbGluZyBhIDxmaWxlbmFtZT5idWlsZHRvb2xzPC9maWxlbmFtZT4KLSAgICAgICAgICAgIHRhcmJhbGwgdGhhdCBjb250YWlucyB0aGVzZSB0b29scy4KLSAgICAgICAgICAgIFlvdSBjYW4gZ2V0IHRoZSB0YXJiYWxsIG9uZSBvZiB0d28gd2F5czogZG93bmxvYWQgYSBwcmUtYnVpbHQKLSAgICAgICAgICAgIHRhcmJhbGwgb3IgdXNlIEJpdEJha2UgdG8gYnVpbGQgdGhlIHRhcmJhbGwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nZG93bmxvYWRpbmctYS1wcmUtYnVpbHQtYnVpbGR0b29scy10YXJiYWxsJz4KLSAgICAgICAgICAgIDx0aXRsZT5Eb3dubG9hZGluZyBhIFByZS1CdWlsdCA8ZmlsZW5hbWU+YnVpbGR0b29sczwvZmlsZW5hbWU+IFRhcmJhbGw8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBEb3dubG9hZGluZyBhbmQgcnVubmluZyBhIHByZS1idWlsdCBidWlsZHRvb2xzIGluc3RhbGxlciBpcwotICAgICAgICAgICAgICAgIHRoZSBlYXNpZXN0IG9mIHRoZSB0d28gbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuIGdldCB0aGVzZSB0b29sczoKLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0ZSBhbmQgZG93bmxvYWQgdGhlIDxmaWxlbmFtZT4qLnNoPC9maWxlbmFtZT4gYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3lvY3RvL3lvY3RvLSZESVNUUk87L2J1aWxkdG9vbHMvJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNoIHBva3ktZ2xpYmMteDg2XzY0LWJ1aWxkdG9vbHMtdGFyYmFsbC14ODZfNjQtYnVpbGR0b29scy1uYXRpdmVzZGstc3RhbmRhbG9uZS0mRElTVFJPOy5zaAotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGV4ZWN1dGlvbiwgYSBwcm9tcHQgYXBwZWFycyB0aGF0IGFsbG93cyB5b3UgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGNob29zZSB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY291bGQgY2hvb3NlIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIC9ob21lLzxyZXBsYWNlYWJsZT55b3VyLXVzZXJuYW1lPC9yZXBsYWNlYWJsZT4vYnVpbGR0b29scwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSB0aGUgdG9vbHMgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGJ5IHVzaW5nIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGlrZSB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNvdXJjZSAvaG9tZS88cmVwbGFjZWFibGU+eW91cl91c2VybmFtZTwvcmVwbGFjZWFibGU+L2J1aWxkdG9vbHMvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHlvdSBuZWVkIHRvIHN1cHBseSB5b3VyIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgYW5kIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgZmlsZSAoaS5lLiBpNTg1IG9yIHg4Ni02NCkuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHlvdSBoYXZlIHNvdXJjZWQgdGhlIHNldHVwIHNjcmlwdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0b29scyBhcmUgYWRkZWQgdG8gPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBvdGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcmVxdWlyZWQgdG8gcnVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHMgYXJlIGluaXRpYWxpemVkLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdHMgYXJlIHdvcmtpbmcgdmVyc2lvbnMgdmVyc2lvbnMgb2YgR2l0LCB0YXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gYW5kIDxmaWxlbmFtZT5jaHJwYXRoPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkaW5nLXlvdXItb3duLWJ1aWxkdG9vbHMtdGFyYmFsbCc+Ci0gICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgWW91ciBPd24gPGZpbGVuYW1lPmJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBUYXJiYWxsPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQnVpbGRpbmcgYW5kIHJ1bm5pbmcgeW91ciBvd24gYnVpbGR0b29scyBpbnN0YWxsZXIgYXBwbGllcwotICAgICAgICAgICAgICAgIG9ubHkgd2hlbiB5b3UgaGF2ZSBhIGJ1aWxkIGhvc3QgdGhhdCBjYW4gYWxyZWFkeSBydW4gQml0QmFrZS4KLSAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSB1c2UgdGhhdCBtYWNoaW5lIHRvIGJ1aWxkIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgdGFrZSBzdGVwcyB0byB0cmFuc2ZlciBhbmQgcnVuIGl0IG9uIGEKLSAgICAgICAgICAgICAgICBtYWNoaW5lIHRoYXQgZG9lcyBub3QgbWVldCB0aGUgbWluaW1hbCBHaXQsIHRhciwgYW5kIFB5dGhvbgotICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSGVyZSBhcmUgdGhlIHN0ZXBzIHRvIHRha2UgdG8gYnVpbGQgYW5kIHJ1biB5b3VyIG93bgotICAgICAgICAgICAgICAgIGJ1aWxkdG9vbHMgaW5zdGFsbGVyOgotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgT24gdGhlIG1hY2hpbmUgdGhhdCBpcyBhYmxlIHRvIHJ1biBCaXRCYWtlLAotICAgICAgICAgICAgICAgICAgICAgICAgYmUgc3VyZSB5b3UgaGF2ZSBzZXQgdXAgeW91ciBidWlsZCBlbnZpcm9ubWVudCB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2V0dXAgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJ1biB0aGUgQml0QmFrZSBjb21tYW5kIHRvIGJ1aWxkIHRoZSB0YXJiYWxsOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgYnVpbGR0b29scy10YXJiYWxsCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lcyB3aGV0aGVyIHlvdSBidWlsZCB0b29scyBmb3IgYSAzMi1iaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIG9yIDY0LWJpdCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgYnVpbGQgY29tcGxldGVzLCB5b3UgY2FuIGZpbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgaW5zdGFsbHMKLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRvb2xzIGluIHRoZSA8ZmlsZW5hbWU+dG1wL2RlcGxveS9zZGs8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgVGhlIGluc3RhbGxlciBmaWxlIGhhcyB0aGUgc3RyaW5nICJidWlsZHRvb2xzIgotICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgbmFtZS4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2ZlciB0aGUgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgaG9zdCB0byB0aGUgbWFjaGluZSB0aGF0IGRvZXMgbm90IG1lZXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIEdpdCwgdGFyLCBvciBQeXRob24gcmVxdWlyZW1lbnRzLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIE9uIHRoZSBtYWNoaW5lIHRoYXQgZG9lcyBub3QgbWVldCB0aGUgcmVxdWlyZW1lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICBydW4gdGhlIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgIHRvIGluc3RhbGwgdGhlIHRvb2xzLgotICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzaCBwb2t5LWdsaWJjLXg4Nl82NC1idWlsZHRvb2xzLXRhcmJhbGwteDg2XzY0LWJ1aWxkdG9vbHMtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJkRJU1RSTzsuc2gKLSAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uLCBhIHByb21wdCBhcHBlYXJzIHRoYXQgYWxsb3dzIHlvdSB0bwotICAgICAgICAgICAgICAgICAgICAgICBjaG9vc2UgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY291bGQgY2hvb3NlIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgL2hvbWUvPHJlcGxhY2VhYmxlPnlvdXJfdXNlcm5hbWU8L3JlcGxhY2VhYmxlPi9idWlsZHRvb2xzCi0gICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSB0aGUgdG9vbHMgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGJ5IHVzaW5nIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGlrZSB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNvdXJjZSAvaG9tZS88cmVwbGFjZWFibGU+eW91cl91c2VybmFtZTwvcmVwbGFjZWFibGU+L2J1aWxkdG9vbHMvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHlvdSBuZWVkIHRvIHN1cHBseSB5b3VyIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgYW5kIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgZmlsZSAoaS5lLiBpNTg1IG9yIHg4Ni02NCkuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHlvdSBoYXZlIHNvdXJjZWQgdGhlIHNldHVwIHNjcmlwdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0b29scyBhcmUgYWRkZWQgdG8gPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBvdGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcmVxdWlyZWQgdG8gcnVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHMgYXJlIGluaXRpYWxpemVkLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdHMgYXJlIHdvcmtpbmcgdmVyc2lvbnMgdmVyc2lvbnMgb2YgR2l0LCB0YXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gYW5kIDxmaWxlbmFtZT5jaHJwYXRoPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0naW50cm8tZ2V0aXQnPgotICAgIDx0aXRsZT5PYnRhaW5pbmcgdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCB0ZWFtIG1ha2VzIHRoZSBZb2N0byBQcm9qZWN0IGF2YWlsYWJsZSB0aHJvdWdoIGEgbnVtYmVyCi0gICAgICAgIG9mIG1ldGhvZHM6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNvdXJjZSBSZXBvc2l0b3JpZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBXb3JraW5nIGZyb20gYSBjb3B5IG9mIHRoZSB1cHN0cmVhbQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSBpcyB0aGUKLSAgICAgICAgICAgICAgICBwcmVmZXJyZWQgbWV0aG9kIGZvciBvYnRhaW5pbmcgYW5kIHVzaW5nIGEgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgWW91IGNhbiB2aWV3IHRoZSBZb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXMgYXQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPjwvdWxpbms+LgotICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHlvdSBjYW4gZmluZCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgYXQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5Lyc+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJlbGVhc2VzOjwvZW1waGFzaXM+IFN0YWJsZSwgdGVzdGVkCi0gICAgICAgICAgICAgICAgcmVsZWFzZXMgYXJlIGF2YWlsYWJsZSBhcyB0YXJiYWxscyB0aHJvdWdoCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RMX1VSTDsvcmVsZWFzZXMveW9jdG8vJy8+LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5OaWdodGx5IEJ1aWxkczo8L2VtcGhhc2lzPiBUaGVzZQotICAgICAgICAgICAgICAgIHRhcmJhbGwgcmVsZWFzZXMgYXJlIGF2YWlsYWJsZSBhdAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19BQl9OSUdIVExZX1VSTDsnLz4uCi0gICAgICAgICAgICAgICAgVGhlc2UgYnVpbGRzIGluY2x1ZGUgWW9jdG8gUHJvamVjdCByZWxlYXNlcywgU0RLIGluc3RhbGxhdGlvbgotICAgICAgICAgICAgICAgIHNjcmlwdHMsIGFuZCBleHBlcmltZW50YWwgYnVpbGRzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU6PC9lbXBoYXNpcz4gWW91IGNhbgotICAgICAgICAgICAgICAgIGZpbmQgdGFyYmFsbCByZWxlYXNlcyBvZiB0aGUgWW9jdG8gUHJvamVjdCBhbmQgc3VwcG9ydGVkIEJTUHMKLSAgICAgICAgICAgICAgICBhdCB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IHdlYnNpdGU8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBBbG9uZyB3aXRoIHRoZXNlIGRvd25sb2FkcywgeW91IGNhbiBmaW5kIGxvdHMgb2Ygb3RoZXIKLSAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhdCB0aGlzIHNpdGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J2ludHJvLWdldGl0LWRldic+Ci0gICAgPHRpdGxlPkRldmVsb3BtZW50IENoZWNrb3V0czwvdGl0bGU+Ci0gICAgPHBhcmE+Ci0gICAgICAgIERldmVsb3BtZW50IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IHJlcXVpcmVzIGEgbG9jYWwKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgIFlvdSBjYW4gc2V0IHVwIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGJ5IGNsb25pbmcgYSBjb3B5IG9mIHRoZSB1cHN0cmVhbQotICAgICAgICA8bGluayBsaW5rZW5kPSdwb2t5Jz5wb2t5PC9saW5rPiBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBkbyB0aGlzLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSd5b2N0by1wcm9qZWN0LXRlcm1zJz4KLSAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBUZXJtczwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9sbG93aW5nIGlzIGEgbGlzdCBvZiB0ZXJtcyBhbmQgZGVmaW5pdGlvbnMgdXNlcnMgbmV3IHRvIHRoZSBZb2N0bwotICAgICAgICBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IG1pZ2h0IGZpbmQgaGVscGZ1bC4KLSAgICAgICAgV2hpbGUgc29tZSBvZiB0aGVzZSB0ZXJtcyBhcmUgdW5pdmVyc2FsLCB0aGUgbGlzdCBpbmNsdWRlcyB0aGVtCi0gICAgICAgIGp1c3QgaW4gY2FzZToKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXBwZW5kIEZpbGVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBhcHBlbmQgYnVpbGQgaW5mb3JtYXRpb24gdG8gYSByZWNpcGUgZmlsZS4KLSAgICAgICAgICAgICAgICBBcHBlbmQgZmlsZXMgYXJlIGtub3duIGFzIEJpdEJha2UgYXBwZW5kIGZpbGVzIGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBleHBlY3RzIGV2ZXJ5IGFwcGVuZCBmaWxlIHRvIGhhdmUKLSAgICAgICAgICAgICAgICBhIGNvcnJlc3BvbmRpbmcgcmVjaXBlICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4pIGZpbGUuCi0gICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBhcHBlbmQgZmlsZSBhbmQgY29ycmVzcG9uZGluZyByZWNpcGUgZmlsZQotICAgICAgICAgICAgICAgIG11c3QgdXNlIHRoZSBzYW1lIHJvb3QgZmlsZW5hbWUuCi0gICAgICAgICAgICAgICAgVGhlIGZpbGVuYW1lcyBjYW4gZGlmZmVyIG9ubHkgaW4gdGhlIGZpbGUgdHlwZSBzdWZmaXggdXNlZAotICAgICAgICAgICAgICAgIChlLmcuCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1mYWN0b3JfMC4wLmJiPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1mYWN0b3JfMC4wLmJiYXBwZW5kPC9maWxlbmFtZT4pLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPkluZm9ybWF0aW9uIGluIGFwcGVuZCBmaWxlcyBleHRlbmRzIG9yIG92ZXJyaWRlcyB0aGUKLSAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpbiB0aGUgc2ltaWxhcmx5LW5hbWVkIHJlY2lwZSBmaWxlLgotICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9mIGFuIGFwcGVuZCBmaWxlIGluIHVzZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgQXBwZW5kIGZpbGVzIGNhbiBhbHNvIHVzZSB3aWxkY2FyZCBwYXR0ZXJucyBpbiB0aGVpcgotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG51bWJlcnMgc28gdGhleSBjYW4gYmUgYXBwbGllZCB0byBtb3JlIHRoYW4gb25lCi0gICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHVuZGVybHlpbmcgcmVjaXBlIGZpbGUuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdiaXRiYWtlLXRlcm0nPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CaXRCYWtlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhlIHRhc2sgZXhlY3V0b3IgYW5kIHNjaGVkdWxlciB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKLSAgICAgICAgICAgICAgICBzeXN0ZW0gdG8gYnVpbGQgaW1hZ2VzLgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEJpdEJha2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2JvYXJkLXN1cHBvcnQtcGFja2FnZS1ic3AtdGVybSc+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEEgZ3JvdXAgb2YgZHJpdmVycywgZGVmaW5pdGlvbnMsIGFuZCBvdGhlciBjb21wb25lbnRzIHRoYXQKLSAgICAgICAgICAgICAgICBwcm92aWRlIHN1cHBvcnQgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCU1BzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPHBhcmEgaWQ9J2J1aWxkLWRpcmVjdG9yeSc+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIERpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoaXMgdGVybSByZWZlcnMgdG8gdGhlIGFyZWEgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICAgICAgc3lzdGVtIGZvciBidWlsZHMuCi0gICAgICAgICAgICAgICAgVGhlIGFyZWEgaXMgY3JlYXRlZCB3aGVuIHlvdSA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4gdGhlCi0gICAgICAgICAgICAgICAgc2V0dXAgZW52aXJvbm1lbnQgc2NyaXB0IHRoYXQgaXMgZm91bmQgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAoaS5lLiA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCi0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRPUERJUic+PGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgQnVpbGQgRGlyZWN0b3J5LjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPllvdSBoYXZlIGEgbG90IG9mIGZsZXhpYmlsaXR5IHdoZW4gY3JlYXRpbmcgdGhlIEJ1aWxkCi0gICAgICAgICAgICAgICAgRGlyZWN0b3J5LgotICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBleGFtcGxlcyB0aGF0IHNob3cgaG93IHRvIGNyZWF0ZSB0aGUKLSAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgVGhlIGV4YW1wbGVzIGFzc3VtZSB5b3VyCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4gaXMKLSAgICAgICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DcmVhdGUgdGhlIEJ1aWxkIERpcmVjdG9yeSBpbnNpZGUgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBhbmQgbGV0IHRoZSBuYW1lIG9mIHRoZSBCdWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5IGRlZmF1bHQgdG8gPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgJEhPTUUvcG9reQotICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DcmVhdGUgdGhlIEJ1aWxkIERpcmVjdG9yeSBpbnNpZGUgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgaG9tZSBkaXJlY3RvcnkgYW5kIHNwZWNpZmljYWxseSBuYW1lIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGVzdC1idWlsZHM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCAkSE9NRQotICAgICAkIHNvdXJjZSBwb2t5LyZPRV9JTklUX0ZJTEU7IHRlc3QtYnVpbGRzCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIGRpcmVjdG9yeSBwYXRoIGFuZCBzcGVjaWZpY2FsbHkgbmFtZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFueSBpbnRlcm1lZGlhdGUgZm9sZGVycyBpbiB0aGUgcGF0aG5hbWUgbXVzdCBleGlzdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIGNyZWF0ZXMgYSBCdWlsZCBEaXJlY3RvcnkgbmFtZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ZUC0mUE9LWVZFUlNJT047PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgaG9tZSBkaXJlY3Rvcnkgd2l0aGluIHRoZSBleGlzdGluZwotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IDxmaWxlbmFtZT5teWJ1aWxkczwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkY2QgJEhPTUUKLSAgICAgJCBzb3VyY2UgJEhPTUUvcG9reS8mT0VfSU5JVF9GSUxFOyAkSE9NRS9teWJ1aWxkcy9ZUC0mUE9LWVZFUlNJT047Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIEJ1aWxkIERpcmVjdG9yeSBjb250YWlucwotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIGZvcgotICAgICAgICAgICAgICAgICAgICBpdHMgd29yay4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGNhbm5vdCBiZSB1bmRlciBORlMuCi0gICAgICAgICAgICAgICAgICAgIFRodXMsIGJ5IGRlZmF1bHQsIHRoZSBCdWlsZCBEaXJlY3RvcnkgY2Fubm90IGJlIHVuZGVyIE5GUy4KLSAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IG5lZWQgdGhlIEJ1aWxkIERpcmVjdG9yeSB0byBiZSB1bmRlciBORlMsCi0gICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gc2V0IHRoaXMgdXAgYnkgc2V0dGluZyA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgdG8gdXNlIGEgbG9jYWwgZHJpdmUuCi0gICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIGVmZmVjdGl2ZWx5IHNlcGFyYXRlcyA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+VE9QRElSPC9maWxlbmFtZT4sIHdoaWNoIGlzIHRoZSBCdWlsZAotICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSBzeXN0ZW0gdXNlZCB0byBidWlsZCBpbWFnZXMgaW4gYSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgdGhlCi0gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaG9zdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xhc3Nlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEZpbGVzIHRoYXQgcHJvdmlkZSBmb3IgbG9naWMgZW5jYXBzdWxhdGlvbiBhbmQgaW5oZXJpdGFuY2Ugc28KLSAgICAgICAgICAgICAgICB0aGF0IGNvbW1vbmx5IHVzZWQgcGF0dGVybnMgY2FuIGJlIGRlZmluZWQgb25jZSBhbmQgdGhlbgotICAgICAgICAgICAgICAgIGVhc2lseSB1c2VkIGluIG11bHRpcGxlIHJlY2lwZXMuCi0gICAgICAgICAgICAgICAgRm9yIHJlZmVyZW5jZSBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCBjbGFzc2VzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzJz5DbGFzc2VzPC9saW5rPiIgY2hhcHRlci4KLSAgICAgICAgICAgICAgICBDbGFzcyBmaWxlcyBlbmQgd2l0aCB0aGUgPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBmaWxlbmFtZSBleHRlbnNpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gaW4gdmFyaW91cyA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGZpbGVzIHByb3ZpZGVzIGdsb2JhbCBkZWZpbml0aW9ucyBvZiB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgaW4KLSAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgICAgICBjb250YWlucyB1c2VyLWRlZmluZWQgdmFyaWFibGVzIHRoYXQgYWZmZWN0IGV2ZXJ5IGJ1aWxkLgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGRlZmluZXMgWW9jdG8gImRpc3RybyIgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB1c2VkIG9ubHkgd2hlbiBidWlsZGluZyB3aXRoIHRoaXMgcG9saWN5LgotICAgICAgICAgICAgICAgIE1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcywgd2hpY2gKLSAgICAgICAgICAgICAgICBhcmUgbG9jYXRlZCB0aHJvdWdob3V0IHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LCBkZWZpbmUKLSAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBhcmUgb25seSB1c2VkIHdoZW4gYnVpbGRpbmcKLSAgICAgICAgICAgICAgICBmb3IgdGhhdCB0YXJnZXQgKGUuZy4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hY2hpbmUvYmVhZ2xlYm9uZS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgIGZpbGUgZGVmaW5lcyB2YXJpYWJsZXMgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBBUk0gQ29ydGV4LUE4Ci0gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYm9hcmQpLgotICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gZmlsZXMgZW5kIHdpdGggYSA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGZpbGVuYW1lIGV4dGVuc2lvbi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluJz4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgYSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaXMgYSBjb2xsZWN0aW9uIG9mCi0gICAgICAgICAgICAgICAgc29mdHdhcmUgZGV2ZWxvcG1lbnQgdG9vbHMgYW5kIHV0aWxpdGllcyB0aGF0IHJ1biBvbiBvbmUKLSAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgYW5kIGFsbG93IHlvdSB0byBkZXZlbG9wIHNvZnR3YXJlIGZvciBhCi0gICAgICAgICAgICAgICAgZGlmZmVyZW50LCBvciB0YXJnZXRlZCwgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgIFRoZXNlIHRvb2xjaGFpbnMgY29udGFpbiBjcm9zcy1jb21waWxlcnMsIGxpbmtlcnMsIGFuZAotICAgICAgICAgICAgICAgIGRlYnVnZ2VycyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyB0d28gZGlmZmVyZW50IGNyb3NzLWRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgdG9vbGNoYWluczoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIHRvb2xjaGFpbiBvbmx5IHVzZWQgYnkgYW5kIHdpdGhpbgotICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSB3aGVuIGJ1aWxkaW5nIGFuIGltYWdlIGZvciBhIHRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHJlbG9jYXRhYmxlIHRvb2xjaGFpbiB1c2VkIG91dHNpZGUgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgYnkgZGV2ZWxvcGVycyB3aGVuIGRldmVsb3BpbmcgYXBwbGljYXRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgcnVuIG9uIGEgdGFyZ2V0ZWQgZGV2aWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Q3JlYXRpb24gb2YgdGhlc2UgdG9vbGNoYWlucyBpcyBzaW1wbGUgYW5kIGF1dG9tYXRlZC4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdG9vbGNoYWluIGNvbmNlcHRzIGFzIHRoZXkgYXBwbHkgdG8gdGhlCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICByZWxvY2F0YWJsZSB0b29sY2hhaW4gaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgotICAgICAgICAgICAgICAgIG1hbnVhbC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW1hZ2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBbiBpbWFnZSBpcyBhbiBhcnRpZmFjdCBvZiB0aGUgQml0QmFrZSBidWlsZCBwcm9jZXNzIGdpdmVuCi0gICAgICAgICAgICAgICAgYSBjb2xsZWN0aW9uIG9mIHJlY2lwZXMgYW5kIHJlbGF0ZWQgTWV0YWRhdGEuCi0gICAgICAgICAgICAgICAgSW1hZ2VzIGFyZSB0aGUgYmluYXJ5IG91dHB1dCB0aGF0IHJ1biBvbiBzcGVjaWZpYyBoYXJkd2FyZSBvcgotICAgICAgICAgICAgICAgIFFFTVUgYW5kIGFyZSB1c2VkIGZvciBzcGVjaWZpYyB1c2UtY2FzZXMuCi0gICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgc3VwcG9ydGVkIGltYWdlIHR5cGVzIHRoYXQgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICBwcm92aWRlcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtaW1hZ2VzJz5JbWFnZXM8L2xpbms+IgotICAgICAgICAgICAgICAgIGNoYXB0ZXIuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxheWVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQSBjb2xsZWN0aW9uIG9mIHJlY2lwZXMgcmVwcmVzZW50aW5nIHRoZSBjb3JlLAotICAgICAgICAgICAgICAgIGEgQlNQLCBvciBhbiBhcHBsaWNhdGlvbiBzdGFjay4KLSAgICAgICAgICAgICAgICBGb3IgYSBkaXNjdXNzaW9uIHNwZWNpZmljYWxseSBvbiBCU1AgTGF5ZXJzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUCkKLSAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nbWV0YWRhdGEnPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NZXRhZGF0YTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSBmaWxlcyB0aGF0IEJpdEJha2UgcGFyc2VzIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgTWV0YWRhdGEgaW5jbHVkZXMgcmVjaXBlcywgY2xhc3NlcywgYW5kCi0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcy4KLSAgICAgICAgICAgICAgICBJbiB0aGUgY29udGV4dCBvZiB0aGUga2VybmVsICgia2VybmVsIE1ldGFkYXRhIiksIHRoZQotICAgICAgICAgICAgICAgIHRlcm0gcmVmZXJzIHRvIHRoZSBrZXJuZWwgY29uZmlnIGZyYWdtZW50cyBhbmQgZmVhdHVyZXMKLSAgICAgICAgICAgICAgICBjb250YWluZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kveW9jdG8ta2VybmVsLWNhY2hlJz48ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdvZS1jb3JlJz4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T0UtQ29yZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEEgY29yZSBzZXQgb2YgTWV0YWRhdGEgb3JpZ2luYXRpbmcgd2l0aCBPcGVuRW1iZWRkZWQgKE9FKQotICAgICAgICAgICAgICAgIHRoYXQgaXMgc2hhcmVkIGJldHdlZW4gT0UgYW5kIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgIFRoaXMgTWV0YWRhdGEgaXMgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2J1aWxkLXN5c3RlbS10ZXJtJz4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gc3BlY2lmaWMgdG8gdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgYmFzZWQgb24gYW5vdGhlciBwcm9qZWN0IGtub3duCi0gICAgICAgICAgICAgICAgYXMgIlBva3kiLCB3aGljaCB1c2VzCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPiBhcyB0aGUgdGFzawotICAgICAgICAgICAgICAgIGV4ZWN1dG9yLgotICAgICAgICAgICAgICAgIFRocm91Z2hvdXQgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBzZXQsIHRoZQotICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIHNpbXBseQotICAgICAgICAgICAgICAgIGFzICJ0aGUgYnVpbGQgc3lzdGVtIi4KLSAgICAgICAgICAgICAgICBJZiBvdGhlciBidWlsZCBzeXN0ZW1zLCBzdWNoIGFzIGEgaG9zdCBvciB0YXJnZXQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgYXJlIHJlZmVyZW5jZWQsIHRoZSBkb2N1bWVudGF0aW9uIGNsZWFybHkgc3RhdGVzIHRoZQotICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBzb21lIGhpc3RvcmljYWwgaW5mb3JtYXRpb24gYWJvdXQgUG9reSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdwb2t5Jz5Qb2t5PC9saW5rPiB0ZXJtLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGFja2FnZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEluIHRoZSBjb250ZXh0IG9mIHRoZSBZb2N0byBQcm9qZWN0LCB0aGlzIHRlcm0gcmVmZXJzIHRvIGEKLSAgICAgICAgICAgICAgICByZWNpcGUncyBwYWNrYWdlZCBvdXRwdXQgcHJvZHVjZWQgYnkgQml0QmFrZSAoaS5lLiBhCi0gICAgICAgICAgICAgICAgImJha2VkIHJlY2lwZSIpLgotICAgICAgICAgICAgICAgIEEgcGFja2FnZSBpcyBnZW5lcmFsbHkgdGhlIGNvbXBpbGVkIGJpbmFyaWVzIHByb2R1Y2VkIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgcmVjaXBlJ3Mgc291cmNlcy4KLSAgICAgICAgICAgICAgICBZb3UgImJha2UiIHNvbWV0aGluZyBieSBydW5uaW5nIGl0IHRocm91Z2ggQml0QmFrZS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgdGVybSAicGFja2FnZSIgY2FuLAotICAgICAgICAgICAgICAgIGluIGdlbmVyYWwsIGhhdmUgc3VidGxlIG1lYW5pbmdzLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgcGFja2FnZXMgcmVmZXJyZWQgdG8gaW4gdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcGFja2FnZXMnPlRoZSBCdWlsZCBIb3N0IFBhY2thZ2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBhcmUgY29tcGlsZWQgYmluYXJpZXMKLSAgICAgICAgICAgICAgICB0aGF0LCB3aGVuIGluc3RhbGxlZCwgYWRkIGZ1bmN0aW9uYWxpdHkgdG8geW91ciBMaW51eAotICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5Bbm90aGVyIHBvaW50IHdvcnRoIG5vdGluZyBpcyB0aGF0IGhpc3RvcmljYWxseSB3aXRoaW4KLSAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgcmVjaXBlcyB3ZXJlIHJlZmVycmVkIHRvIGFzIHBhY2thZ2VzIC0gdGh1cywKLSAgICAgICAgICAgICAgICB0aGUgZXhpc3RlbmNlIG9mIHNldmVyYWwgQml0QmFrZSB2YXJpYWJsZXMgdGhhdCBhcmUgc2VlbWluZ2x5Ci0gICAgICAgICAgICAgICAgbWlzLW5hbWVkLAotICAgICAgICAgICAgICAgIChlLmcuIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+LCBhbmQKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEUnPjxmaWxlbmFtZT5QRTwvZmlsZW5hbWU+PC9saW5rPikuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhY2thZ2UgR3JvdXBzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQXJiaXRyYXJ5IGdyb3VwcyBvZiBzb2Z0d2FyZSBSZWNpcGVzLgotICAgICAgICAgICAgICAgIFlvdSB1c2UgcGFja2FnZSBncm91cHMgdG8gaG9sZCByZWNpcGVzIHRoYXQsIHdoZW4gYnVpbHQsCi0gICAgICAgICAgICAgICAgdXN1YWxseSBhY2NvbXBsaXNoIGEgc2luZ2xlIHRhc2suCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGEgcGFja2FnZSBncm91cCBjb3VsZCBjb250YWluIHRoZSByZWNpcGVzIGZvciBhCi0gICAgICAgICAgICAgICAgY29tcGFueeKAmXMgcHJvcHJpZXRhcnkgb3IgdmFsdWUtYWRkIHNvZnR3YXJlLgotICAgICAgICAgICAgICAgIE9yLCB0aGUgcGFja2FnZSBncm91cCBjb3VsZCBjb250YWluIHRoZSByZWNpcGVzIHRoYXQgZW5hYmxlCi0gICAgICAgICAgICAgICAgZ3JhcGhpY3MuCi0gICAgICAgICAgICAgICAgQSBwYWNrYWdlIGdyb3VwIGlzIHJlYWxseSBqdXN0IGFub3RoZXIgcmVjaXBlLgotICAgICAgICAgICAgICAgIEJlY2F1c2UgcGFja2FnZSBncm91cCBmaWxlcyBhcmUgcmVjaXBlcywgdGhleSBlbmQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZW5hbWUgZXh0ZW5zaW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdwb2t5Jz4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9reTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSB0ZXJtICJwb2t5Iiwgd2hpY2ggaXMgcHJvbm91bmNlZAotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYWg8L2VtcGhhc2lzPi1rZWUsIGNhbiBtZWFuIHNldmVyYWwgdGhpbmdzOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIGl0cyBtb3N0IGdlbmVyYWwgc2Vuc2UsIHBva3kgaXMgYW4gb3Blbi1zb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QgdGhhdCB3YXMgaW5pdGlhbGx5IGRldmVsb3BlZCBieSBPcGVuZWRIYW5kLgotICAgICAgICAgICAgICAgICAgICAgICAgT3BlbmVkSGFuZCBkZXZlbG9wZWQgcG9reSBvZmYgb2YgdGhlIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhIGNvbW1lcmNpYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGFibGUgYnVpbGQgc3lzdGVtIGZvciBlbWJlZGRlZCBMaW51eC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIEludGVsIENvcnBvcmF0aW9uIGFjcXVpcmVkIE9wZW5lZEhhbmQsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgcG9reSBwcm9qZWN0IGJlY2FtZSB0aGUgYmFzaXMgZm9yIHRoZSBZb2N0byBQcm9qZWN0J3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICAgICAgInBva3kiIGV4aXN0cyBhcyBhIHNlcGFyYXRlIEdpdAotICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBmcm9tIHdoaWNoIHlvdSBjYW4gY2xvbmUgdG8geWllbGQgYSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgdGhhdCBpcyBhIGNvcHkgb24geW91ciBob3N0IHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsICJwb2t5IiBjYW4gcmVmZXIgdG8gdGhlIHVwc3RyZWFtIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBjb3B5IG9mIHRoZSBmaWxlcyB1c2VkIGZvciBkZXZlbG9wbWVudCB3aXRoaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZpbmFsbHksICJwb2t5IiBjYW4gcmVmZXIgdG8gdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIGRpc3RyaWJ1dGlvbikgY3JlYXRlZCB3aGVuIHlvdSB1c2UgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgdG8gYnVpbGQgYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVjaXBlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQSBzZXQgb2YgaW5zdHJ1Y3Rpb25zIGZvciBidWlsZGluZyBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICBBIHJlY2lwZSBkZXNjcmliZXMgd2hlcmUgeW91IGdldCBzb3VyY2UgY29kZSwgd2hpY2ggcGF0Y2hlcwotICAgICAgICAgICAgICAgIHRvIGFwcGx5LCBob3cgdG8gY29uZmlndXJlIHRoZSBzb3VyY2UsIGhvdyB0byBjb21waWxlIGl0IGFuZCBzbyBvbi4KLSAgICAgICAgICAgICAgICBSZWNpcGVzIGFsc28gZGVzY3JpYmUgZGVwZW5kZW5jaWVzIGZvciBsaWJyYXJpZXMgb3IgZm9yIG90aGVyCi0gICAgICAgICAgICAgICAgcmVjaXBlcy4KLSAgICAgICAgICAgICAgICBSZWNpcGVzIHJlcHJlc2VudCB0aGUgbG9naWNhbCB1bml0IG9mIGV4ZWN1dGlvbiwgdGhlIHNvZnR3YXJlCi0gICAgICAgICAgICAgICAgdG8gYnVpbGQsIHRoZSBpbWFnZXMgdG8gYnVpbGQsIGFuZCB1c2UgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGUgZXh0ZW5zaW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdyZWZlcmVuY2Uta2l0LXRlcm0nPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWZlcmVuY2UgS2l0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQSB3b3JraW5nIGV4YW1wbGUgb2YgYSBzeXN0ZW0sIHdoaWNoIGluY2x1ZGVzIGEKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwLXRlcm0nPkJTUDwvbGluaz4KLSAgICAgICAgICAgICAgICBhcyB3ZWxsIGFzIGEKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgc3lzdGVtPC9saW5rPgotICAgICAgICAgICAgICAgIGFuZCBvdGhlciBjb21wb25lbnRzLCB0aGF0IGNhbiB3b3JrIG9uIHNwZWNpZmljIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdzb3VyY2UtZGlyZWN0b3J5Jz4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U291cmNlIERpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoaXMgdGVybSByZWZlcnMgdG8gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgY3JlYXRlZCBhcyBhIHJlc3VsdAotICAgICAgICAgICAgICAgIG9mIGNyZWF0aW5nIGEgbG9jYWwgY29weSBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKLSAgICAgICAgICAgICAgICByZXBvc2l0b3J5IDxmaWxlbmFtZT5naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBvciBleHBhbmRpbmcgYSByZWxlYXNlZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHRhcmJhbGwuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIENyZWF0aW5nIGEgbG9jYWwgY29weSBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSBpcyB0aGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBzZXR0aW5nIHVwCi0gICAgICAgICAgICAgICAgICAgIHlvdXIgU291cmNlIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgU29tZXRpbWVzIHlvdSBtaWdodCBoZWFyIHRoZSB0ZXJtICJwb2t5IGRpcmVjdG9yeSIgdXNlZCB0byByZWZlcgotICAgICAgICAgICAgICAgIHRvIHRoaXMgZGlyZWN0b3J5IHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBmaWxlIG9yCi0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBuYW1lcyB0aGF0IGNvbnRhaW4gc3BhY2VzLgotICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRoYXQgdGhlIFNvdXJjZSBEaXJlY3RvcnkgeW91IHVzZSBkb2VzIG5vdCBjb250YWluCi0gICAgICAgICAgICAgICAgICAgIHRoZXNlIHR5cGVzIG9mIG5hbWVzLgotICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGUgU291cmNlIERpcmVjdG9yeSBjb250YWlucyBCaXRCYWtlLCBEb2N1bWVudGF0aW9uLAotICAgICAgICAgICAgICAgIE1ldGFkYXRhIGFuZCBvdGhlciBmaWxlcyB0aGF0IGFsbCBzdXBwb3J0IHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IG11c3QgaGF2ZSB0aGUgU291cmNlIERpcmVjdG9yeSBpbiBwbGFjZSBvbgotICAgICAgICAgICAgICAgIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtIGluIG9yZGVyIHRvIGRvIGFueSBkZXZlbG9wbWVudCB1c2luZwotICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPldoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgdGhlIEdpdCByZXBvc2l0b3J5LCB5b3UKLSAgICAgICAgICAgICAgICBjYW4gbmFtZSB0aGUgcmVwb3NpdG9yeSBhbnl0aGluZyB5b3UgbGlrZS4KLSAgICAgICAgICAgICAgICBUaHJvdWdob3V0IG11Y2ggb2YgdGhlIGRvY3VtZW50YXRpb24sICJwb2t5IgotICAgICAgICAgICAgICAgIGlzIHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhlIHRvcC1sZXZlbCBmb2xkZXIgb2YgdGhlIGxvY2FsIGNvcHkgb2YKLSAgICAgICAgICAgICAgICB0aGUgcG9reSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICBTbywgZm9yIGV4YW1wbGUsIGNsb25pbmcgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeSByZXN1bHRzIGluIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgd2hvc2UgdG9wLWxldmVsCi0gICAgICAgICAgICAgICAgZm9sZGVyIGlzIGFsc28gbmFtZWQgInBva3kiLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPldoaWxlIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgdGFyYmFsbCBleHBhbnNpb24KLSAgICAgICAgICAgICAgICB0byBzZXQgdXAgdGhlIFNvdXJjZSBEaXJlY3RvcnksIGlmIHlvdSBkbywgdGhlIHRvcC1sZXZlbAotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBuYW1lIG9mIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGlzIGRlcml2ZWQgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UgdGFyYmFsbC4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZG93bmxvYWRpbmcgYW5kIHVucGFja2luZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mWU9DVE9fUE9LWV9UQVJCQUxMOzwvZmlsZW5hbWU+IHJlc3VsdHMgaW4gYQotICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3Rvcnkgd2hvc2Ugcm9vdCBmb2xkZXIgaXMgbmFtZWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JllPQ1RPX1BPS1k7PC9maWxlbmFtZT4uPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlCi0gICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBjcmVhdGVkIGJ5IHVucGFja2luZyBhIHJlbGVhc2VkIHRhcmJhbGwgYXMKLSAgICAgICAgICAgICAgICBjb21wYXJlZCB0byBjbG9uaW5nCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSB1bnBhY2sgYSB0YXJiYWxsLCB5b3UgaGF2ZSBhbiBleGFjdCBjb3B5IG9mIHRoZSBmaWxlcwotICAgICAgICAgICAgICAgIGJhc2VkIG9uIHRoZSB0aW1lIG9mIHJlbGVhc2UgLSBhIGZpeGVkIHJlbGVhc2UgcG9pbnQuCi0gICAgICAgICAgICAgICAgQW55IGNoYW5nZXMgeW91IG1ha2UgdG8geW91ciBsb2NhbCBmaWxlcyBpbiB0aGUgU291cmNlIERpcmVjdG9yeQotICAgICAgICAgICAgICAgIGFyZSBvbiB0b3Agb2YgdGhlIHJlbGVhc2UgYW5kIHdpbGwgcmVtYWluIGxvY2FsIG9ubHkuCi0gICAgICAgICAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIHdoZW4geW91IGNsb25lIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIHlvdSBoYXZlIGFuIGFjdGl2ZSBkZXZlbG9wbWVudCByZXBvc2l0b3J5IHdpdGgKLSAgICAgICAgICAgICAgICBhY2Nlc3MgdG8gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkncyBicmFuY2hlcyBhbmQgdGFncy4KLSAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGFueSBsb2NhbCBjaGFuZ2VzIHlvdSBtYWtlIHRvIHRoZSBsb2NhbAotICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgY2FuIGJlIGxhdGVyIGFwcGxpZWQgdG8gYWN0aXZlIGRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgYnJhbmNoZXMgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb25jZXB0cyByZWxhdGVkIHRvIEdpdAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcywgYnJhbmNoZXMsIGFuZCB0YWdzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcG9zaXRvcmllcy10YWdzLWFuZC1icmFuY2hlcyc+UmVwb3NpdG9yaWVzLCBUYWdzLCBhbmQgQnJhbmNoZXM8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRhc2s6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBIHVuaXQgb2YgZXhlY3V0aW9uIGZvciBCaXRCYWtlIChlLmcuCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1mZXRjaCc+PGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J3RvYXN0ZXItdGVybSc+PGVtcGhhc2lzPlRvYXN0ZXI6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBIHdlYiBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QncwotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgQnVpbGQgU3lzdGVtPC9saW5rPi4KLSAgICAgICAgICAgICAgICBUaGUgaW50ZXJmYWNlIGVuYWJsZXMgeW91IHRvIGNvbmZpZ3VyZSBhbmQgcnVuIHlvdXIgYnVpbGRzLgotICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIGFib3V0IGJ1aWxkcyBpcyBjb2xsZWN0ZWQgYW5kIHN0b3JlZCBpbiBhIGRhdGFiYXNlLgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBUb2FzdGVyLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+WW9jdG8gUHJvamVjdCBUb2FzdGVyIE1hbnVhbDwvdWxpbms+LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcHN0cmVhbTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEEgcmVmZXJlbmNlIHRvIHNvdXJjZSBjb2RlIG9yIHJlcG9zaXRvcmllcwotICAgICAgICAgICAgICAgIHRoYXQgYXJlIG5vdCBsb2NhbCB0byB0aGUgZGV2ZWxvcG1lbnQgc3lzdGVtIGJ1dCBsb2NhdGVkIGluIGEKLSAgICAgICAgICAgICAgICBtYXN0ZXIgYXJlYSB0aGF0IGlzIGNvbnRyb2xsZWQgYnkgdGhlIG1haW50YWluZXIgb2YgdGhlIHNvdXJjZQotICAgICAgICAgICAgICAgIGNvZGUuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIG9yZGVyIGZvciBhIGRldmVsb3BlciB0byB3b3JrIG9uIGEgcGFydGljdWxhcgotICAgICAgICAgICAgICAgIHBpZWNlIG9mIGNvZGUsIHRoZXkgbmVlZCB0byBmaXJzdCBnZXQgYSBjb3B5IG9mIGl0IGZyb20gYW4KLSAgICAgICAgICAgICAgICAidXBzdHJlYW0iIHNvdXJjZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08L2NoYXB0ZXI+Ci08IS0tCi12aW06IGV4cGFuZHRhYiB0dz04MCB0cz00Ci0tLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbAppbmRleCA4MTE1NzdiLi5iMDYwOTY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ueG1sCkBAIC0yOTMsNyArMjkzLDcgQEAKICAgICAgICAgICAgICAgICBGb3IgdGhlIHJlbWFpbmRlciwgeW91IGNhbiBub3cgZmluZCB0aGVtIGluIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWV4dHJhczwvZmlsZW5hbWU+IHJlcG9zaXRvcnksIHdoaWNoIGlzIGluIHRoZQogICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC9saW5rPi4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogICAgIDwvc2VjdGlvbj4KQEAgLTQ0Miw3ICs0NDIsNyBAQAogICAgICAgICAgICAgYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1jb3JlL2luaXQtaWZ1cGRvd248L2ZpbGVuYW1lPi4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIGFwcGVuZCBmaWxlcywgc2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLWJiYXBwZW5kLWZpbGVzJz5Vc2luZyAuYmJhcHBlbmQgRmlsZXM8L3VsaW5rPiIKLSAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC04NjYsMTAgKzg2Niw4IEBACiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPjoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgb2YKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgaXMgbm93IHZhbGlkYXRlZCB0byBlbnN1cmUgaW52YWxpZCBmZWF0dXJlIGl0ZW1zIGFyZSBub3QKLSAgICAgICAgICAgICAgICAgICAgYWRkZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiBpcyBub3cKKyAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVkIHRvIGVuc3VyZSBpbnZhbGlkIGZlYXR1cmUgaXRlbXMgYXJlIG5vdCBhZGRlZC4KICAgICAgICAgICAgICAgICAgICAgU29tZSB1c2VycyBtaXN0YWtlbmx5IGFkZCBwYWNrYWdlIG5hbWVzIHRvIHRoaXMgdmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiB1c2luZwogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvbGluaz4KQEAgLTEwMjIsOCArMTAyMCw4IEBACiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCdWlsZCBIaXN0b3J5LCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMTExNiw4ICsxMTE0LDggQEAKICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMgcHJlLXJlbmFtZWQgcGFja2FnZSBuYW1lcy48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jbGFzc2VzL3Jvb3Rmc19ycG08L2ZpbGVuYW1lPjogSW1wbGVtZW50Ci0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQURfUkVDT01NRU5EQVRJT05TJz48ZmlsZW5hbWU+QkFEX1JFQ09NTUVOREFUSU9OUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBmb3IgUlBNLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkFEX1JFQ09NTUVOREFUSU9OUzwvZmlsZW5hbWU+IGZvciBSUE0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPjogUmVtb3ZlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW1kX3VuaXRkaXI8L2ZpbGVuYW1lPiBpZgpAQCAtMTQ1Miw3ICsxNDUwLDcgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBQYWNrYWdlIFRlc3RzIChwdGVzdCkgYXJlIGJ1aWx0IGJ1dCBub3QgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgUGFja2FnZSBUZXN0cywgc2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Rlc3RpbmctcGFja2FnZXMtd2l0aC1wdGVzdCc+U2V0dGluZyB1cCBhbmQgcnVubmluZyBwYWNrYWdlIHRlc3QgKHB0ZXN0KTwvdWxpbms+IgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Rlc3RpbmctcGFja2FnZXMtd2l0aC1wdGVzdCc+VGVzdGluZyBQYWNrYWdlcyB3aXRoIHB0ZXN0PC91bGluaz4iCiAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgPGZpbGVuYW1lPnB0ZXN0PC9maWxlbmFtZT4gY2xhc3MsIHNlZSB0aGUKICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wdGVzdCc+PGZpbGVuYW1lPnB0ZXN0LmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCkBAIC0xNzQ4LDggKzE3NDYsOCBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIG1pbmltdW0KLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPiB2ZXJzaW9uIHJlcXVpcmVkCi0gICAgICAgICAgICBvbiB0aGUgYnVpbGQgaG9zdCBpcyBub3cgMS43LjggYmVjYXVzZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiB2ZXJzaW9uCisgICAgICAgICAgICByZXF1aXJlZCBvbiB0aGUgYnVpbGQgaG9zdCBpcyBub3cgMS43LjggYmVjYXVzZSB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT4tLWxpc3Q8L2ZpbGVuYW1lPiBvcHRpb24gaXMgbm93IHJlcXVpcmVkIGJ5CiAgICAgICAgICAgICBCaXRCYWtlJ3MgR2l0IGZldGNoZXIuCiAgICAgICAgICAgICBBcyBhbHdheXMsIGlmIHlvdXIgaG9zdCBkaXN0cmlidXRpb24gZG9lcyBub3QgcHJvdmlkZSBhIHZlcnNpb24gb2YKQEAgLTE5MDksMTQgKzE5MDcsNiBAQAogICAgICAgICAgICAgZm9yIHdoaWNoIDxmaWxlbmFtZT5tb2R1bGVfY29uZl8qPC9maWxlbmFtZT4gaXMgc3BlY2lmaWVkIHRvCiAgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX01PRFVMRV9QUk9CRUNPTkY8L2ZpbGVuYW1lPi4KICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfTU9EVUxFX0FVVE9MT0FEJz48ZmlsZW5hbWU+S0VSTkVMX01PRFVMRV9BVVRPTE9BRDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX01PRFVMRV9QUk9CRUNPTkYnPjxmaWxlbmFtZT5LRVJORUxfTU9EVUxFX1BST0JFQ09ORjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGVzLgotICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjctcWEtY2hlY2stY2hhbmdlcyc+CkBAIC0yMDI2LDggKzIwMTYsOCBAQAogICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG1hbnVhbGx5IHJlbW92ZSBvbGQgImJ1aWxkLWlkIiBmaWxlcyBmcm9tIHlvdXIKICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgYnVpbGQgaGlzdG9yeSByZXBvc2l0b3JpZXMgdG8gYXZvaWQgY29uZnVzaW9uLgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIGJ1aWxkIGhpc3RvcnkgZmVhdHVyZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgPC9wYXJhPgpAQCAtMzAzNyw3ICszMDI3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYWN0aXZlbHkgbWFpbnRhaW5lZC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyN1c2luZy10aGUtdG9hc3Rlci13ZWItaW50ZXJmYWNlJz5Vc2luZyB0aGUgVG9hc3RlciBXZWIgSW50ZXJmYWNlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgVG9hc3RlciBVc2VyIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBUb2FzdGVyIFVzZXIgTWFudWFsIGZvciBtb3JlCiAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIHRoaXMgaW50ZXJmYWNlLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJwdWNjaG8iIEJpdEJha2UgVUk8L2VtcGhhc2lzPjoKQEAgLTMwNTcsNyArMzA0Nyw4IEBACiAgICAgICAgICAgICBhbmQgdGhlCiAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZXh0ZW5zaWJsZSc+ZXh0ZW5zaWJsZSBTREs8L3VsaW5rPi4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSBTREtzIGFuZCBob3cgdG8gYnVpbGQgYW5kIHVzZSB0aGVtLCBzZWUgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstaW50cm8nPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICBtYW51YWwuCiAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBFY2xpcHNlIElERSBQbHVnLWluIGlzIHN0aWxsIHN1cHBvcnRlZCBhbmQKICAgICAgICAgICAgICAgICBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCkBAIC00MDM4LDcgKzQwMjksNyBAQAogICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgYW4gZXhhbXBsZSwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGl4YnVmY2FjaGU8L2ZpbGVuYW1lPiBjbGFzcyBpbgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzLzwvZmlsZW5hbWU+IGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNTVEFURVBPU1RJTlNURlVOQ1M8L2ZpbGVuYW1lPiB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgaXRzZWxmIGlzIG5vdyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZQpAQCAtNDI1MSw4ICs0MjQyLDggQEAKIAogICAgICAgICAgICAgICAgICAgICA8cGFyYT5TZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3N2bi1mZXRjaGVyJz5TdWJ2ZXJzaW9uIChTVk4pIEZldGNoZXIgKHN2bjovLyk8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCaXRCYWtlIFVzZXIgTWFudWFsIGZvcgotICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+QkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OPC9maWxlbmFtZT4KQEAgLTQ2MjUsOCArNDYxNiw3IEBACiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlVTRV9MRENPTkZJRzwvZmlsZW5hbWU+IHZhcmlhYmxlIGhhcyBiZWVuCiAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkIHdpdGggdGhlICJsZGNvbmZpZyIKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4gZmVhdHVyZS4KICAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0aW9ucyB0aGF0IHByZXZpb3VzbHkgc2V0OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFVTRV9MRENPTkZJRyA9ICIwIgpAQCAtNDY4NSw5ICs0Njc1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICBBbGwgbmF0aXZlIGFuZCBuYXRpdmVzZGsgcmVjaXBlcyBub3cgdXNlIGEgc2VwYXJhdGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpbnN0ZWFkIG9mIHNoYXJpbmcgdGhlIHZhbHVlIHVzZWQgYnkgcmVjaXBlcyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgIHRhcmdldCwgaW4gb3JkZXIgdG8gYXZvaWQgdW5uZWNlc3NhcnkgcmVidWlsZHMuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4gdmFsdWUgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICBzaGFyaW5nIHRoZSB2YWx1ZSB1c2VkIGJ5IHJlY2lwZXMgZm9yIHRoZSB0YXJnZXQsIGluIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlYnVpbGRzLjwvcGFyYT4KIAogICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+IGZvcgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmF0aXZlPC9maWxlbmFtZT4gcmVjaXBlcyBpcwpAQCAtNDczOCw5ICs0NzI4LDkgQEAKICAgICAgICAgICAgIHJlcGxhY2luZyBpdHMgcHJldmlvdXMgIm1lbW9yeSByZXNpZGVudCBtb2RlIiAoaS5lLgogICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+KS4KICAgICAgICAgICAgIE5vdyB5b3Ugb25seSBuZWVkIHRvIHNldAotICAgICAgICAgICAgPGZpbGVuYW1lPkJCX1NFUlZFUl9USU1FT1VUPC9maWxlbmFtZT4gdG8gYSB0aW1lb3V0Ci0gICAgICAgICAgICAoaW4gc2Vjb25kcykgYW5kIEJpdEJha2UncyBzZXJ2ZXIgc3RheXMgcmVzaWRlbnQgZm9yIHRoYXQKLSAgICAgICAgICAgIGFtb3VudCBvZiB0aW1lIGJldHdlZW4gaW52b2NhdGlvbnMuCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfU0VSVkVSX1RJTUVPVVQnPjxmaWxlbmFtZT5CQl9TRVJWRVJfVElNRU9VVDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdG8gYSB0aW1lb3V0IChpbiBzZWNvbmRzKSBhbmQgQml0QmFrZSdzIHNlcnZlciBzdGF5cyByZXNpZGVudCBmb3IKKyAgICAgICAgICAgIHRoYXQgYW1vdW50IG9mIHRpbWUgYmV0d2VlbiBpbnZvY2F0aW9ucy4KICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT4gc2NyaXB0IGhhcyBiZWVuCiAgICAgICAgICAgICByZW1vdmVkIHNpbmNlIGEgc2VwYXJhdGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGlzIG5vIGxvbmdlcgogICAgICAgICAgICAgbmVlZGVkLgpAQCAtNDgwNSw3ICs0Nzk1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPnV0aWwtbGludXgtc3U8L2ZpbGVuYW1lPiBwYWNrYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiAicGFtIiBpcyBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c3dpdGNoX3Jvb3Q8L2ZpbGVuYW1lPiBwcm9ncmFtIGlzIG5vdwpAQCAtNDgyNCw3ICs0ODE0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlZCBpbiBhIHNlcGFyYXRlICJ1dGlsLWxpbnV4LWlvbmljZSIgcGFja2FnZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbiA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZWNvbW1lbmRlZCBydW50aW1lIGRlcGVuZGVuY3kgKGkuZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPnV0aWwtbGludXgtaW9uaWNlPC9maWxlbmFtZT4gcGFja2FnZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CkBAIC00ODM5LDE4ICs0ODI5LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIFRoZSBjaGFuZ2UgYWxzbyBlbGltaW5hdGVzIG5lZWRpbmcgdG8gcHVsbCBpbiB0aGUgZW50aXJlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbml0c2NyaXB0czwvZmlsZW5hbWU+IHBhY2thZ2UuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBtYWluIDxmaWxlbmFtZT5pbml0c2NyaXB0czwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzIGEKLSAgICAgICAgICAgICAgICAgICAgcnVudGltZSBkZXBlbmRlbmN5IChpLmUuCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+KQorICAgICAgICAgICAgICAgICAgICBydW50aW1lIGRlcGVuZGVuY3kgKGkuZS4gPGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT4pCiAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSA8ZmlsZW5hbWU+c3VzaGVsbDwvZmlsZW5hbWU+IHBhY2thZ2Ugd2hlbgotICAgICAgICAgICAgICAgICAgICAic2VsaW51eCIgaXMgaW4KLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgInNlbGludXgiIGlzIGluIDxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdsaWItMi4wPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5nbGliLTIuMDwvZmlsZW5hbWU+IHBhY2thZ2Ugbm93IGhhcyBhCiAgICAgICAgICAgICAgICAgICAgIHJlY29tbWVuZGVkIHJ1bnRpbWUgZGVwZW5kZW5jeSAoaS5lLgotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKLSAgICAgICAgICAgICAgICAgICAgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+KSBvbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNoYXJlZC1taW1lLWluZm88L2ZpbGVuYW1lPiBwYWNrYWdlLCBzaW5jZSBsYXJnZQogICAgICAgICAgICAgICAgICAgICBwb3J0aW9ucyBvZiBHSU8gYXJlIG5vdCB1c2VmdWwgd2l0aG91dCB0aGUgTUlNRSBkYXRhYmFzZS4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZW1vdmUgdGhlIGRlcGVuZGVuY3kgYnkgdXNpbmcgdGhlCkBAIC01MDQ1LDcgKzUwMzIsOCBAQAogICAgICAgICAgICAgS2VybmVsIERldmljZSBUcmVlIHN1cHBvcnQgaXMgbm93IGVhc2llciB0byBlbmFibGUgaW4gYSBrZXJuZWwKICAgICAgICAgICAgIHJlY2lwZS4KICAgICAgICAgICAgIFRoZSBEZXZpY2UgVHJlZSBjb2RlIGhhcyBtb3ZlZCB0byBhCi0gICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLWRldmljZXRyZWU8L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWtlcm5lbC1kZXZpY2V0cmVlJz48ZmlsZW5hbWU+a2VybmVsLWRldmljZXRyZWU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGNsYXNzLgogICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgZm9yIGFueSByZWNpcGUgdGhhdCBpbmhlcml0cwogICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1rZXJuZWwnPjxmaWxlbmFtZT5rZXJuZWw8L2ZpbGVuYW1lPjwvbGluaz4KQEAgLTUxNzcsMTMgKzUxNjUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgbXVsdGljb25maWcgaXMgZW5hYmxlZCAob25lIHBlciBjb25maWd1cmF0aW9uKS4KICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjZXZlbnRzJz5FdmVudHM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5zZWN1cml0eV9mbGFncy5pbmM8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgIHNldHMgYSA8ZmlsZW5hbWU+R0NDUElFPC9maWxlbmFtZT4gdmFyaWFibGUgd2l0aCBhbiBvcHRpb24KLSAgICAgICAgICAgICAgICAgICAgdG8gZW5hYmxlIFBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGVzIChQSUUpIHdpdGhpbgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIHNldHMgYQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItR0NDUElFJz48ZmlsZW5hbWU+R0NDUElFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHdpdGggYW4gb3B0aW9uIHRvIGVuYWJsZSBQb3NpdGlvbiBJbmRlcGVuZGVudAorICAgICAgICAgICAgICAgICAgICBFeGVjdXRhYmxlcyAoUElFKSB3aXRoaW4gPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBFbmFibGluZyBQSUUgaW4gdGhlIEdOVSBDIENvbXBpbGVyIChHQ0MpLCBtYWtlcyBSZXR1cm4KICAgICAgICAgICAgICAgICAgICAgT3JpZW50ZWQgUHJvZ3JhbW1pbmcgKFJPUCkgYXR0YWNrcyBtdWNoIG1vcmUgZGlmZmljdWx0IHRvCiAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGUuCkBAIC01MjM4LDYgKzUyMjcsNDU3IEBACiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiA8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdtb3ZpbmctdG8tdGhlLXlvY3RvLXByb2plY3QtMi41LXJlbGVhc2UnPgorICAgIDx0aXRsZT5Nb3ZpbmcgdG8gdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2U8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBtaWdyYXRpb24gaW5mb3JtYXRpb24gZm9yIG1vdmluZyB0byB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZSBmcm9tIHRoZSBwcmlvciByZWxlYXNlLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi41LXBhY2thZ2luZy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPlBhY2thZ2luZyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdpbmcgY2hhbmdlcyB0aGF0IGhhdmUKKyAgICAgICAgICAgIG9jY3VycmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YmluZC1saWJzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpYnJhcmllcyBwYWNrYWdlZCBieSB0aGUgYmluZCByZWNpcGUgYXJlIGluIGEKKyAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGUgPGZpbGVuYW1lPmJpbmQtbGliczwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJmbS1ndGs8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxpYmZtPC9maWxlbmFtZT4gR1RLKyBiaW5kaW5ncyBhcmUgc3BsaXQgaW50bworICAgICAgICAgICAgICAgICAgICBhIHNlcGFyYXRlIDxmaWxlbmFtZT5saWJmbS1ndGs8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZmxleC1saWJmbDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmbGV4IHJlY2lwZSBzcGxpdHMgb3V0IGxpYmZsIGludG8gYSBzZXBhcmF0ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmxleC1saWJmbDwvZmlsZW5hbWU+IHBhY2thZ2UgdG8gYXZvaWQgdG9vIG1hbnkKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIGJlaW5nIHB1bGxlZCBpbiB3aGVyZSBvbmx5IHRoZSBsaWJyYXJ5IGlzCisgICAgICAgICAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdydWItZWZpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5ncnViLWVmaTwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gaXMgc3BsaXQKKyAgICAgICAgICAgICAgICAgICAgaW50byBhIHNlcGFyYXRlIDxmaWxlbmFtZT5ncnViLWJvb3Rjb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXAgZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3J1Yi1lZmk8L2ZpbGVuYW1lPiBpcyB0aHJvdWdoIGEKKyAgICAgICAgICAgICAgICAgICAgdmlydHVhbC9ncnViLWJvb3Rjb25mIHByb3ZpZGVyIG1ha2luZyBpdCBwb3NzaWJsZSB0byBoYXZlCisgICAgICAgICAgICAgICAgICAgIHlvdXIgb3duIHJlY2lwZSBwcm92aWRlIHRoZSBkZXBlbmRlbmN5LgorICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSBhIEJpdEJha2UgYXBwZW5kIGZpbGUgdG8gYnJpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gYmFjayBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3J1Yi1lZmk8L2ZpbGVuYW1lPiByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPmFybXY3YSBMZWdhY3kgUGFja2FnZSBGZWVkIFN1cHBvcnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTGVnYWN5IHN1cHBvcnQgaXMgcmVtb3ZlZCBmb3IgdHJhbnNpdGlvbmluZyBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcm12N2E8L2ZpbGVuYW1lPiB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXJtdjdhLXZmcC1uZW9uPC9maWxlbmFtZT4gaW4gcGFja2FnZSBmZWVkcywKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggd2FzIHByZXZpb3VzbHkgZW5hYmxlZCBieSBzZXR0aW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dBUkNIQ09NUEFUX0FSTVY3QTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRyYW5zaXRpb24gb2NjdXJyZWQgaW4gMjAxMSBhbmQgYWN0aXZlIHBhY2thZ2UgZmVlZHMKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJ5IG5vdyBiZSB1cGRhdGVkIHRvIHRoZSBuZXcgbmFtaW5nLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjUtcmVtb3ZlZC1yZWNpcGVzJz4KKyAgICAgICAgPHRpdGxlPlJlbW92ZWQgUmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHJlY2lwZXMgaGF2ZSBiZWVuIHJlbW92ZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgdmVyc2lvbiA2LjQgcmVjaXBlcyBhcmUgcmVwbGFjZWQgYnkgNy54LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z3N0LXBsYXllcjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbmFtZWQgdG8gPGZpbGVuYW1lPmdzdC1leGFtcGxlczwvZmlsZW5hbWU+IGFzIHBlcgorICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmhvc3RhcC11dGlsczwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgc29mdHdhcmUgcGFja2FnZSBpcyBvYnNvbGV0ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxhdGVuY3l0b3A8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCB1cHN0cmVhbS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxhc3QgcmVsZWFzZSB3YXMgaW4gMjAwOS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYnBmbTQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgb25seSBmaWxlIHRoYXQgcmVxdWlyZXMgdGhpcyByZWNpcGUgaXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9wcm9maWxlPC9maWxlbmFtZT4sIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saW51eC15b2N0bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIDQuNCwgNC45LCBhbmQgNC4xMCByZWNpcGVzIGhhdmUgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICBWZXJzaW9ucyA0LjEyLCA0LjE0LCBhbmQgNC4xNSByZW1haW4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5tYW48L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBoYXMgYmVlbiByZXBsYWNlZCBieSBtb2Rlcm4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hbi1kYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5ta2VsZmltYWdlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB0b29sIGhhcyBiZWVuIHJlbW92ZWQgaW4gdGhlIHVwc3RyZWFtIGNvcmVib290IHByb2plY3QsCisgICAgICAgICAgICAgICAgICAgIGFuZCBpcyBubyBsb25nZXIgbmVlZGVkIHdpdGggdGhlIHJlbW92YWwgb2YgdGhlIEVMRiBpbWFnZQorICAgICAgICAgICAgICAgICAgICB0eXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bmF0aXZlc2RrLXBvc3RpbnN0LWludGVyY2VwdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGlzIG5vdCBtYWludGFpbmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bmVvbjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgc29mdHdhcmUgcGFja2FnZSBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCB1cHN0cmVhbSBhbmQKKyAgICAgICAgICAgICAgICAgICAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBieSBhbnl0aGluZyBpbiBPcGVuRW1iZWRkZWQtQ29yZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPm9wcm9maWxlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyByZWNpcGUgaXMgcmVwbGFjZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBlcmY8L2ZpbGVuYW1lPiBhbmQga2VlcGluZyBjb21wYXRpYmlsaXR5IG9uCisgICAgICAgICAgICAgICAgICAgIGFuIG9uZ29pbmcgYmFzaXMgd2l0aCA8ZmlsZW5hbWU+bXVzbDwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgIGRpZmZpY3VsdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnBheDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgc29mdHdhcmUgcGFja2FnZSBpcyBvYnNvbGV0ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnN0YXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNvZnR3YXJlIHBhY2thZ2UgaXMgbm90IG1haW50YWluZWQgdXBzdHJlYW0uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JldXRpbHM8L2ZpbGVuYW1lPiBwcm92aWRlcyBhIG1vZGVybiBzdGF0IGJpbmFyeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnppc29mcy10b29scy1uYXRpdmU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBpcyBubyBsb25nZXIgbmVlZGVkIGJlY2F1c2UgdGhlIGNvbXByZXNzZWQKKyAgICAgICAgICAgICAgICAgICAgSVNPIGltYWdlIGZlYXR1cmUgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi41LXNjcmlwdHMtYW5kLXRvb2xzLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+U2NyaXB0cyBhbmQgVG9vbHMgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGFyZSBjaGFuZ2VzIHRvIHNjcmlwdHMgYW5kIHRvb2xzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+eW9jdG8tYnNwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1sYXllcjwvZmlsZW5hbWU+PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+eW9jdG8tYnNwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1sYXllcjwvZmlsZW5hbWU+IHNjcmlwdHMgcHJldmlvdXNseSBzaGlwcGVkCisgICAgICAgICAgICAgICAgICAgIHdpdGggcG9reSBidXQgbm90IGluIE9wZW5FbWJlZGRlZC1Db3JlIGhhdmUgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBzY3JpcHRzIGFyZSBub3QgbWFpbnRhaW5lZCBhbmQgYXJlIG91dGRhdGVkLgorICAgICAgICAgICAgICAgICAgICBJbiBtYW55IGNhc2VzLCB0aGV5IGFyZSBhbHNvIGxpbWl0ZWQgaW4gc2NvcGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICBpcyBhIGRpcmVjdCByZXBsYWNlbWVudCBmb3IgPGZpbGVuYW1lPnlvY3RvLWxheWVyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiB0byBjcmVhdGUgYSBCU1Agb3Iga2VybmVsIHJlY2lwZSBpbgorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1rZXJuZWwtcmVjaXBlLWV4YW1wbGUnPkJTUCBLZXJuZWwgUmVjaXBlIEV4YW1wbGU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IG5vdyBleGl0cyB3aXRoIGFuIGVycm9yCisgICAgICAgICAgICAgICAgICAgIGlmIHRoZXJlIGFyZSB1bmNvbW1pdHRlZCBjaGFuZ2VzIG9yIGEgcmViYXNlL2FtIGluIHByb2dyZXNzCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSByZWNpcGUncyBzb3VyY2UgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBlcnJvciBvY2N1cnMsIHRoZXJlIG1pZ2h0IGJlIHVuY29tbWl0dGVkIGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB1cGRhdGVzIHRvIHRoZSBwYXRjaGVzIGFwcGxpZWQKKyAgICAgICAgICAgICAgICAgICAgYnkgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgQSAtZi8tLWZvcmNlIG9wdGlvbiBpcyBwcm92aWRlZCBmb3Igc2l0dWF0aW9ucyB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICB1bmNvbW1pdHRlZCBjaGFuZ2VzIGFyZSBpbmNvbnNlcXVlbnRpYWwgYW5kIHlvdSB3YW50IHRvCisgICAgICAgICAgICAgICAgICAgIHByb2NlZWQgcmVnYXJkbGVzcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnNjcmlwdHMvb2Utc2V0dXAtcnBtcmVwbzwvZmlsZW5hbWU+IHNjcmlwdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZnVuY3Rpb25hbGl0eSBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1ycG1yZXBvPC9maWxlbmFtZT4gaXMgcmVwbGFjZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgcGFja2FnZS1pbmRleDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+c2NyaXB0cy90ZXN0LWRlcGVuZGVuY2llcy5zaDwvZmlsZW5hbWU+IHNjcmlwdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGlzIGxhcmdlbHkgbWFkZSBvYnNvbGV0ZSBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLXNwZWNpZmljIHN5c3Jvb3RzIGZ1bmN0aW9uYWxpdHkgaW50cm9kdWNlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi41LWJpdGJha2UtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5CaXRCYWtlIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBhcmUgQml0QmFrZSBjaGFuZ2VzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+LS1ydW5hbGw8L2ZpbGVuYW1lPiBvcHRpb24gaGFzIGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IGJlaGF2aW9ycyBwZW9wbGUgbWlnaHQgd2FudDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QmVoYXZpb3IgQTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGdpdmVuIHRhcmdldCAob3Igc2V0IG9mIHRhcmdldHMpIGxvb2sgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXNrIGdyYXBoIGFuZCBydW4gdGFzayBYIG9ubHkgaWYgaXQgaXMgcHJlc2VudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB3aWxsIGJlIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CZWhhdmlvciBCOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgZ2l2ZW4gdGFyZ2V0IChvciBzZXQgb2YgdGFyZ2V0cykgbG9vayB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhc2sgZ3JhcGggYW5kIHJ1biB0YXNrIFggaWYgYW55IHJlY2lwZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrZ3JhcGggaGFzIHN1Y2ggYSB0YXJnZXQsIGV2ZW4gaWYgaXQgaXMgbm90IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9yaWdpbmFsIHRhc2sgZ3JhcGguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi0tcnVuYWxsPC9maWxlbmFtZT4gb3B0aW9uIG5vdyBwZXJmb3JtcworICAgICAgICAgICAgICAgICAgICAiQmVoYXZpb3IgQiIuCisgICAgICAgICAgICAgICAgICAgIFByZXZpb3VzbHkgPGZpbGVuYW1lPi0tcnVuYWxsPC9maWxlbmFtZT4gYmVoYXZlZCBsaWtlCisgICAgICAgICAgICAgICAgICAgICJCZWhhdmlvciBBIi4KKyAgICAgICAgICAgICAgICAgICAgQSA8ZmlsZW5hbWU+LS1ydW5vbmx5PC9maWxlbmFtZT4gb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRvCisgICAgICAgICAgICAgICAgICAgIHJldGFpbiB0aGUgYWJpbGl0eSB0byBwZXJmb3JtICJCZWhhdmlvciBBIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZXZlcmFsIGV4cGxpY2l0ICJydW4gdGhpcyB0YXNrIGZvciBhbGwgcmVjaXBlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSB0cmVlIiB0YXNrcyBoYXZlIGJlZW4gcmVtb3ZlZCAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmV0Y2hhbGw8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNoZWNrdXJpYWxsPC9maWxlbmFtZT4sIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiphbGw8L2ZpbGVuYW1lPiB0YXNrcyBwcm92aWRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3Ryb2RhdGE8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT4gY2xhc3NlcykuCisgICAgICAgICAgICAgICAgICAgIFRoZXJlIGlzIGEgQml0QmFrZSBvcHRpb24gdG8gY29tcGxldGUgdGhpcyBmb3IgYW55IGFyYml0cmFyeQorICAgICAgICAgICAgICAgICAgICB0YXNrLiBGb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBiaXRiYWtlICZsdDt0YXJnZXQmZ3Q7IC1jIGZldGNoYWxsCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkIG5vdyBiZSByZXBsYWNlZCB3aXRoOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGJpdGJha2UgJmx0O3RhcmdldCZndDsgLS1ydW5hbGw9ZmV0Y2gKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjUtcHl0aG9uLWFuZC1weXRob24zLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+UHl0aG9uIGFuZCBQeXRob24gMyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgYXJlIGF1dG8tcGFja2FnaW5nIGNoYW5nZXMgdG8gUHl0aG9uIGFuZCBQeXRob24gMzoKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBzY3JpcHQtbWFuYWdlZCA8ZmlsZW5hbWU+cHl0aG9uLSotbWFuaWZlc3QuaW5jPC9maWxlbmFtZT4gZmlsZXMKKyAgICAgICAgICAgIHRoYXQgd2VyZSBwcmV2aW91c2x5IHVzZWQgdG8gZ2VuZXJhdGUgUHl0aG9uIGFuZCBQeXRob24gMworICAgICAgICAgICAgcGFja2FnZXMgaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGggYSBKU09OLWJhc2VkIGZpbGUgdGhhdCBpcworICAgICAgICAgICAgZWFzaWVyIHRvIHJlYWQgYW5kIG1haW50YWluLgorICAgICAgICAgICAgQSBuZXcgdGFzayBpcyBhdmFpbGFibGUgZm9yIG1haW50YWluZXJzIG9mIHRoZSBQeXRob24gcmVjaXBlcyB0bworICAgICAgICAgICAgdXBkYXRlIHRoZSBKU09OIGZpbGUgd2hlbiB1cGdyYWRpbmcgdG8gbmV3IFB5dGhvbiB2ZXJzaW9ucy4KKyAgICAgICAgICAgIFlvdSBjYW4gbm93IGVkaXQgdGhlIGZpbGUgZGlyZWN0bHkgaW5zdGVhZCBvZiBoYXZpbmcgdG8gZWRpdCBhCisgICAgICAgICAgICBzY3JpcHQgYW5kIHJ1biBpdCB0byB1cGRhdGUgdGhlIGZpbGUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmUgcGFydGljdWxhciBjaGFuZ2UgdG8gbm90ZSBpcyB0aGF0IHRoZSBQeXRob24gcmVjaXBlcyBubyBsb25nZXIKKyAgICAgICAgICAgIGhhdmUgYnVpbGQtdGltZSBwcm92aWRlcyBmb3IgdGhlaXIgcGFja2FnZXMuCisgICAgICAgICAgICBUaGlzIGFzc3VtZXMgPGZpbGVuYW1lPnB5dGhvbi1mb288L2ZpbGVuYW1lPiBpcyBvbmUgb2YgdGhlIHBhY2thZ2VzCisgICAgICAgICAgICBwcm92aWRlZCBieSB0aGUgUHl0aG9uIHJlY2lwZS4KKyAgICAgICAgICAgIFlvdSBjYW4gbm8gbG9uZ2VyIHJ1biA8ZmlsZW5hbWU+Yml0YmFrZSBweXRob24tZm9vPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgIGhhdmUgYSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+IG9uCisgICAgICAgICAgICA8ZmlsZW5hbWU+cHl0aG9uLWZvbzwvZmlsZW5hbWU+LCBidXQgZG9pbmcgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgIGNhdXNlcyB0aGUgcGFja2FnZSB0byB3b3JrIGFzIGV4cGVjdGVkOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIgcHl0aG9uLWZvbyIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIG9yCisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1mb28iCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgZWFybGllciBidWlsZC10aW1lIHByb3ZpZGVzIGJlaGF2aW9yIHdhcyBhIHF1aXJrIG9mIHRoZSB3YXkgdGhlCisgICAgICAgICAgICBQeXRob24gbWFuaWZlc3QgZmlsZSB3YXMgY3JlYXRlZC4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY2hhbmdlIHBsZWFzZSBzZWUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvY29tbWl0Lz9pZD04ZDk0YjlkYjIyMWQxZGVmNDJmMDkxYjk5MTkwM2ZhYTJkMTY1MWNlJz50aGlzIGNvbW1pdDwvdWxpbms+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjUtbWlzY2VsbGFuZW91cy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXMgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGFyZSBhZGRpdGlvbmFsIGNoYW5nZXM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5rZXJuZWw8L2ZpbGVuYW1lPiBjbGFzcyBzdXBwb3J0cyBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBmb3IgbXVsdGlwbGUga2VybmVscy4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBrZXJuZWwgcmVjaXBlIG9yIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIG1lbnRpb25zIHBhY2thZ2luZyBhdCBhbGwsIHlvdSBzaG91bGQgcmVwbGFjZSByZWZlcmVuY2VzIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgaW4gcGFja2FnZSBuYW1lcyB3aXRoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0tFUk5FTF9QQUNLQUdFX05BTUV9PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzYWJsZSBhdXRvbWF0aWMgaW5zdGFsbGF0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBrZXJuZWwgaW1hZ2UgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJERVBFTkRTX2tlcm5lbC1iYXNlID0gIiI8L2ZpbGVuYW1lPiB5b3UgY2FuIGF2b2lkCisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiIjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBjbGFzcyBjb21taXRzIGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHJlcG9zaXRvcnkgYnkgZGVmYXVsdCBzbyB5b3Ugbm8gbG9uZ2VyIG5lZWQgdG8gc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMREhJU1RPUllfQ09NTUlUID0gIjEiPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGRpc2FibGUgY29tbWl0cyB5b3UgbmVlZCB0byBzZXQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVQgPSAiMCI8L2ZpbGVuYW1lPiBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iZWFnbGVib25lPC9maWxlbmFtZT4gcmVmZXJlbmNlIG1hY2hpbmUgaGFzCisgICAgICAgICAgICAgICAgICAgIGJlZW4gcmVuYW1lZCB0byA8ZmlsZW5hbWU+YmVhZ2xlYm9uZS15b2N0bzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJlYWdsZWJvbmUteW9jdG88L2ZpbGVuYW1lPiBCU1AgaXMgYSByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gdXNpbmcgb25seSBtYWlubGluZSBjb21wb25lbnRzIGF2YWlsYWJsZSBpbgorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQtQ29yZSBhbmQgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHdoZXJlYXMgVGV4YXMgSW5zdHJ1bWVudHMgbWFpbnRhaW5zIGEgZnVsbC1mZWF0dXJlZCBCU1AgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tZXRhLXRpPC9maWxlbmFtZT4gbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVuYW1lIGF2b2lkcyB0aGUgcHJldmlvdXMgbmFtZSBjbGFzaCB0aGF0IGV4aXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgYmV0d2VlbiB0aGUgdHdvIEJTUHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT51cGRhdGUtYWx0ZXJuYXRpdmVzPC9maWxlbmFtZT4gY2xhc3Mgbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgIHdvcmtzIHdpdGggU3lzViA8ZmlsZW5hbWU+aW5pdDwvZmlsZW5hbWU+IHNjcmlwdHMgYmVjYXVzZQorICAgICAgICAgICAgICAgICAgICB0aGlzIHVzYWdlIGhhcyBiZWVuIHByb2JsZW1hdGljLgorICAgICAgICAgICAgICAgICAgICBBbHNvLCB0aGUgPGZpbGVuYW1lPnN5c2tsb2dkPC9maWxlbmFtZT4gcmVjaXBlIG5vIGxvbmdlcgorICAgICAgICAgICAgICAgICAgICB1c2VzIDxmaWxlbmFtZT51cGRhdGUtYWx0ZXJuYXRpdmVzPC9maWxlbmFtZT4gYmVjYXVzZSBpdCBpcworICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGUgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+IGNsYXNzIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5pbmphPC9maWxlbmFtZT4gaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGZvciBidWlsZGluZy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpbXByb3ZlcyBidWlsZCBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgSWYgYSByZWNpcGUgaXMgYnJva2VuIHdpdGggPGZpbGVuYW1lPm5pbmphPC9maWxlbmFtZT4sIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSBjYW4gc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5PRUNNQUtFX0dFTkVSQVRPUiA9ICJVbml4IE1ha2VmaWxlcyI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0byBjaGFuZ2UgYmFjayB0byA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgPGZpbGVuYW1lPmJhc2VfKjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGVpciByZXBsYWNlbWVudHMKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPm1ldGEvbGliL29lPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2xpYi9iYjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBhcmUgdHlwaWNhbGx5IHVzZWQgZnJvbSByZWNpcGVzIGFuZCBjbGFzc2VzLgorICAgICAgICAgICAgICAgICAgICBBbnkgcmVmZXJlbmNlcyB0byB0aGUgb2xkIGZ1bmN0aW9ucyBtdXN0IGJlIHVwZGF0ZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgdGFibGUgc2hvd3MgdGhlIHJlbW92ZWQgZnVuY3Rpb25zIGFuZCB0aGVpcgorICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHM6CisKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8ZW1waGFzaXM+UmVtb3ZlZDwvZW1waGFzaXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlcGxhY2VtZW50PC9lbXBoYXNpcz4KKyAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgYmFzZV9wYXRoX2pvaW4oKSAgICAgICAgICAgICAgICAgICAgICAgIG9lLnBhdGguam9pbigpCisgICAgIGJhc2VfcGF0aF9yZWxhdGl2ZSgpICAgICAgICAgICAgICAgICAgICBvZS5wYXRoLnJlbGF0aXZlKCkKKyAgICAgYmFzZV9wYXRoX291dCgpICAgICAgICAgICAgICAgICAgICAgICAgIG9lLnBhdGguZm9ybWF0X2Rpc3BsYXkoKQorICAgICBiYXNlX3JlYWRfZmlsZSgpICAgICAgICAgICAgICAgICAgICAgICAgb2UudXRpbHMucmVhZF9maWxlKCkKKyAgICAgYmFzZV9pZmVsc2UoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lLnV0aWxzLmlmZWxzZSgpCisgICAgIGJhc2VfY29uZGl0aW9uYWwoKSAgICAgICAgICAgICAgICAgICAgICBvZS51dGlscy5jb25kaXRpb25hbCgpCisgICAgIGJhc2VfbGVzc19vcl9lcXVhbCgpICAgICAgICAgICAgICAgICAgICBvZS51dGlscy5sZXNzX29yX2VxdWFsKCkKKyAgICAgYmFzZV92ZXJzaW9uX2xlc3Nfb3JfZXF1YWwoKSAgICAgICAgICAgIG9lLnV0aWxzLnZlcnNpb25fbGVzc19vcl9lcXVhbCgpCisgICAgIGJhc2VfY29udGFpbnMoKSAgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygpCisgICAgIGJhc2VfYm90aF9jb250YWluKCkgICAgICAgICAgICAgICAgICAgICBvZS51dGlscy5ib3RoX2NvbnRhaW4oKQorICAgICBiYXNlX3BydW5lX3N1ZmZpeCgpICAgICAgICAgICAgICAgICAgICAgb2UudXRpbHMucHJ1bmVfc3VmZml4KCkKKyAgICAgb2VfZmlsdGVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lLnV0aWxzLnN0cl9maWx0ZXIoKQorICAgICBvZV9maWx0ZXJfb3V0KCkgICAgICAgICAgICAgICAgICAgICAgICAgb2UudXRpbHMuc3RyX2ZpbHRlcl9vdXQoKSAob3IgdXNlIHRoZSBfcmVtb3ZlIG9wZXJhdG9yKS4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzaW5nIDxmaWxlbmFtZT5leGl0IDE8L2ZpbGVuYW1lPiB0byBleHBsaWNpdGx5IGRlZmVyIGEKKyAgICAgICAgICAgICAgICAgICAgcG9zdGluc3RhbGwgc2NyaXB0IHVudGlsIGZpcnN0IGJvb3QgaXMgbm93IGRlcHJlY2F0ZWQgc2luY2UKKyAgICAgICAgICAgICAgICAgICAgaXQgaXMgbm90IGFuIG9idmlvdXMgbWVjaGFuaXNtIGFuZCBjYW4gbWFzayBhY3R1YWwgZXJyb3JzLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IGRlZmVyIGEgcG9zdGluc3RhbGwgdG8gZmlyc3QgYm9vdAorICAgICAgICAgICAgICAgICAgICBvbiB0aGUgdGFyZ2V0IHJhdGhlciB0aGFuIGF0IDxmaWxlbmFtZT5yb290ZnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiB0aW1lLCB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdF9vbnRhcmdldCgpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3IgY2FsbAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9zdGluc3QtaW50ZXJjZXB0cyBkZWZlcl90b19maXJzdF9ib290PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQW55IGZhaWx1cmUgb2YgYSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzY3JpcHQgKGluY2x1ZGluZyA8ZmlsZW5hbWU+ZXhpdCAxPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgIHdpbGwgdHJpZ2dlciBhIHdhcm5pbmcgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmVsZjwvZmlsZW5hbWU+IGltYWdlIHR5cGUgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpbWFnZSB0eXBlIHdhcyByZW1vdmVkIGJlY2F1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ta2VsZmltYWdlPC9maWxlbmFtZT4gdG9vbAorICAgICAgICAgICAgICAgICAgICB0aGF0IHdhcyByZXF1aXJlZCB0byBjcmVhdGUgaXQgaXMgbm8gbG9uZ2VyIHByb3ZpZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIGNvcmVib290IHVwc3RyZWFtIGFuZCByZXF1aXJlZCB1cGRhdGluZyBldmVyeSB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW51dGlsczwvZmlsZW5hbWU+IHVwZGF0ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgLmlzbyBpbWFnZSBjb21wcmVzc2lvbiAocHJldmlvdXNseSBlbmFibGVkCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggPGZpbGVuYW1lPkNPTVBSRVNTSVNPID0gIjEiPC9maWxlbmFtZT4pIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSB1c2Vyc3BhY2UgdG9vbHMgKDxmaWxlbmFtZT56aXNvZnMtdG9vbHM8L2ZpbGVuYW1lPikgYXJlCisgICAgICAgICAgICAgICAgICAgIHVubWFpbnRhaW5lZCBhbmQgPGZpbGVuYW1lPnNxdWFzaGZzPC9maWxlbmFtZT4gcHJvdmlkZXMKKyAgICAgICAgICAgICAgICAgICAgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBjb21wcmVzc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gYnVpbGQgYSBsaXZlIGltYWdlIHdpdGggc3F1YXNoZnMrbHo0IGNvbXByZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQgeW91IHNob3VsZCBub3cgc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSVZFX1JPT1RGU19UWVBFID0gInNxdWFzaGZzLWx6NCI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgZW5zdXJlIHRoYXQgPGZpbGVuYW1lPmxpdmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpcyBpbiA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGRlcGVuZGVuY3kgb24KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnBhbTwvZmlsZW5hbWU+IGFyZSBvbmx5IGJ1aWxkYWJsZSB3aXRoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYW08L2ZpbGVuYW1lPiBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSBkZXBlbmRlbmN5IGlzIHRydWx5IG9wdGlvbmFsIHRoZW4gaXQgaXMgcmVjb21tZW5kZWQKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgZGVwZW5kZW5jeSBiZSBjb25kaXRpb25hbCB1cG9uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYW08L2ZpbGVuYW1lPiBiZWluZyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIEVGSS1iYXNlZCBtYWNoaW5lcywgdGhlIGJvb3Rsb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5ncnViLWVmaTwvZmlsZW5hbWU+IGJ5IGRlZmF1bHQpIGlzIGluc3RhbGxlZCBpbnRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBhdCAvYm9vdC4KKyAgICAgICAgICAgICAgICAgICAgV2ljIGNhbiBiZSB1c2VkIHRvIHNwbGl0IHRoZSBib290bG9hZGVyIGludG8gc2VwYXJhdGUgYm9vdAorICAgICAgICAgICAgICAgICAgICBhbmQgcm9vdGZzIHBhcnRpdGlvbnMgaWYgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFBhdGNoZXMgd2hvc2UgY29udGV4dCBkb2VzIG5vdCBtYXRjaCBleGFjdGx5IChpLmUuIHdoZXJlCisgICAgICAgICAgICAgICAgICAgIHBhdGNoIHJlcG9ydHMgImZ1enoiIHdoZW4gYXBwbHlpbmcpIHdpbGwgZ2VuZXJhdGUgYQorICAgICAgICAgICAgICAgICAgICB3YXJuaW5nLgorICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiB0aGlzIHNlZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2NvbW1pdC8/aWQ9Y2M5N2JjMDgxMjViNjM4MjFjZTNmNjE2NzcxODMwZjc3YzQ1NmY1Nyc+dGhpcyBjb21taXQ8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBMYXllcnMgYXJlIGV4cGVjdGVkIHRvIHNldAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TEFZRVJTRVJJRVNfQ09NUEFUX2xheWVybmFtZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvIG1hdGNoIHRoZSB2ZXJzaW9uKHMpIG9mIE9wZW5FbWJlZGRlZC1Db3JlIHRoZXkgYXJlCisgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBzcGVjaWZpZWQgYXMgY29kZW5hbWVzIHVzaW5nIHNwYWNlcyB0byBzZXBhcmF0ZQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSB2YWx1ZXMgKGUuZy4gInJvY2tvIHN1bW8iKS4KKyAgICAgICAgICAgICAgICAgICAgSWYgYSBsYXllciBkb2VzIG5vdCBzZXQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxBWUVSU0VSSUVTX0NPTVBBVF9sYXllcm5hbWU8L2ZpbGVuYW1lPiwgYSB3YXJuaW5nCisgICAgICAgICAgICAgICAgICAgIHdpbGwgaXMgc2hvd24uCisgICAgICAgICAgICAgICAgICAgIElmIGEgbGF5ZXIgc2V0cyBhIHZhbHVlIHRoYXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uICgic3VtbyIgZm9yIHRoZSAyLjUgcmVsZWFzZSksIHRoZW4gYW4gZXJyb3Igd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICBwcm9kdWNlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRaPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICJVVEMiIHdpdGhpbiB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaW4gb3JkZXIgdG8gZml4CisgICAgICAgICAgICAgICAgICAgIHJlcHJvZHVjaWJpbGl0eSBwcm9ibGVtcyBpbiBzb21lIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CiA8L2NoYXB0ZXI+CiA8IS0tCiB2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1iaXRiYWtlLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWJpdGJha2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2Y0YzU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWJpdGJha2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDc3ICswLDAgQEAKLTwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKLSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCi1bPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Ci0KLTxjaGFwdGVyIGlkPSdyZWYtYml0YmFrZSc+Ci0KLSAgICA8dGl0bGU+Qml0QmFrZTwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQml0QmFrZSBpcyBhIHByb2dyYW0gd3JpdHRlbiBpbiBQeXRob24gdGhhdCBpbnRlcnByZXRzIHRoZQotICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+IHVzZWQgYnkKLSAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCi0gICAgICAgIEF0IHNvbWUgcG9pbnQsIGRldmVsb3BlcnMgd29uZGVyIHdoYXQgYWN0dWFsbHkgaGFwcGVucyB3aGVuIHlvdSBlbnRlcjoKLSAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvCi0gICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mIHdoYXQgaGFwcGVucyBiZWhpbmQgdGhlIHNjZW5lcyBmcm9tIEJpdEJha2UncyBwZXJzcGVjdGl2ZS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8bm90ZT4KLSAgICAgICAgQml0QmFrZSBzdHJpdmVzIHRvIGJlIGEgZ2VuZXJpYyAidGFzayIgZXhlY3V0b3IgdGhhdCBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nIGNvbXBsZXggZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzLgotICAgICAgICBBcyBzdWNoLCBpdCBoYXMgbm8gcmVhbCBrbm93bGVkZ2Ugb2Ygd2hhdCB0aGUgdGFza3MgYmVpbmcgZXhlY3V0ZWQgYWN0dWFsbHkgZG8uCi0gICAgICAgIEJpdEJha2UganVzdCBjb25zaWRlcnMgYSBsaXN0IG9mIHRhc2tzIHdpdGggZGVwZW5kZW5jaWVzIGFuZCBoYW5kbGVzCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KLSAgICAgICAgY29uc2lzdGluZyBvZiB2YXJpYWJsZXMgaW4gYSBjZXJ0YWluIGZvcm1hdCB0aGF0IGdldCBwYXNzZWQgdG8gdGhlIHRhc2tzLgotICAgIDwvbm90ZT4KLQotICAgIDxzZWN0aW9uIGlkPSdyZWYtYml0YmFrZS1wYXJzaW5nJz4KLSAgICAgICAgPHRpdGxlPlBhcnNpbmc8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSBwYXJzZXMgY29uZmlndXJhdGlvbiBmaWxlcywgY2xhc3NlcywgYW5kIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIEJpdEJha2UgZG9lcyBpcyBsb29rIGZvciB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgVGhpcyBmaWxlIHJlc2lkZXMgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgd2l0aGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mLzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgIEJpdEJha2UgZmluZHMgaXQgYnkgZXhhbWluaW5nIGl0cwotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCUEFUSCc+PGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+PC9saW5rPiBlbnZpcm9ubWVudAotICAgICAgICAgICAgdmFyaWFibGUgYW5kIGxvb2tpbmcgZm9yIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mLzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBkaXJlY3RvcnkuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZSBsaXN0cyBvdGhlciBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICBmaWxlcyB0byBpbmNsdWRlIGZyb20gYSA8ZmlsZW5hbWU+Y29uZi88L2ZpbGVuYW1lPgotICAgICAgICAgICAgZGlyZWN0b3J5IGJlbG93IHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgaW4gPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgSW4gZ2VuZXJhbCwgdGhlIG1vc3QgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb24gZmlsZSBmcm9tIGEgdXNlcidzIHBlcnNwZWN0aXZlCi0gICAgICAgICAgICBpcyA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+LCB3aGljaCBjb250YWlucyBhIHVzZXIncyBjdXN0b21pemVkCi0gICAgICAgICAgICBzZXR0aW5ncyBmb3IgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgIE90aGVyIG5vdGFibGUgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgdGhlIGRpc3RyaWJ1dGlvbgotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIChzZXQgYnkgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURJU1RSTyc+RElTVFJPPC9saW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlKQotICAgICAgICAgICAgYW5kIHRoZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZQotICAgICAgICAgICAgKHNldCBieSB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+TUFDSElORTwvbGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZSkuCi0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IEJpdEJha2UgZW52aXJvbm1lbnQKLSAgICAgICAgICAgIHZhcmlhYmxlcyBhcmUgYm90aCB1c3VhbGx5IHNldCBpbgotICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgIFZhbGlkIGRpc3RyaWJ1dGlvbgotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mL2Rpc3Ryby88L2ZpbGVuYW1lPiBkaXJlY3RvcnkKLSAgICAgICAgICAgIGFuZCB2YWxpZCBtYWNoaW5lIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgIGZpbGVzIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvPC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICAgICAgV2l0aGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS88L2ZpbGVuYW1lPgotICAgICAgICAgICAgZGlyZWN0b3J5IGFyZSB2YXJpb3VzIDxmaWxlbmFtZT50dW5lLSouaW5jPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcyB0aGF0IHByb3ZpZGUgY29tbW9uCi0gICAgICAgICAgICAidHVuaW5nIiBzZXR0aW5ncyBzcGVjaWZpYyB0byBhbmQgc2hhcmVkIGJldHdlZW4gcGFydGljdWxhciBhcmNoaXRlY3R1cmVzIGFuZCBtYWNoaW5lcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQWZ0ZXIgdGhlIHBhcnNpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHNvbWUgc3RhbmRhcmQgY2xhc3NlcyBhcmUgaW5jbHVkZWQuCi0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJhc2UuYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUgaXMgYWx3YXlzIGluY2x1ZGVkLgotICAgICAgICAgICAgT3RoZXIgY2xhc3NlcyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUlOSEVSSVQnPklOSEVSSVQ8L2xpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgIHZhcmlhYmxlIGFyZSBhbHNvIGluY2x1ZGVkLgotICAgICAgICAgICAgQ2xhc3MgZmlsZXMgYXJlIHNlYXJjaGVkIGZvciBpbiBhIDxmaWxlbmFtZT5jbGFzc2VzPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5Ci0gICAgICAgICAgICB1bmRlciB0aGUgcGF0aHMgaW4gPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IGluIHRoZSBzYW1lIHdheSBhcwotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQWZ0ZXIgY2xhc3NlcyBhcmUgaW5jbHVkZWQsIHRoZSB2YXJpYWJsZQotICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1CQkZJTEVTJz5CQkZJTEVTPC9saW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBpcyBzZXQsIHVzdWFsbHkgaW4KLSAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4sIGFuZCBkZWZpbmVzIHRoZSBsaXN0IG9mIHBsYWNlcyB0byBzZWFyY2ggZm9yCi0gICAgICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZXMuCi0gICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgPGZpbGVuYW1lPkJCRklMRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLSovPC9maWxlbmFtZT4gZGlyZWN0b3J5IHdpdGhpbiBQb2t5LgotICAgICAgICAgICAgQWRkaW5nIGV4dHJhIGNvbnRlbnQgdG8gPGZpbGVuYW1lPkJCRklMRVM8L2ZpbGVuYW1lPiBpcyBiZXN0IGFjaGlldmVkIHRocm91Z2ggdGhlIHVzZSBvZgotICAgICAgICAgICAgQml0QmFrZSBsYXllcnMgYXMgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSBwYXJzZXMgZWFjaCA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZSBpbiA8ZmlsZW5hbWU+QkJGSUxFUzwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgc3RvcmVzIHRoZSB2YWx1ZXMgb2YgdmFyaW91cyB2YXJpYWJsZXMuCi0gICAgICAgICAgICBJbiBzdW1tYXJ5LCBmb3IgZWFjaCA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGZpbGUgdGhlIGNvbmZpZ3VyYXRpb24gcGx1cyB0aGUgYmFzZSBjbGFzcyBvZiB2YXJpYWJsZXMgYXJlIHNldCwgZm9sbG93ZWQKLSAgICAgICAgICAgIGJ5IHRoZSBkYXRhIGluIHRoZSA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgaXRzZWxmLCBmb2xsb3dlZCBieSBhbnkgaW5oZXJpdCBjb21tYW5kcyB0aGF0Ci0gICAgICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZSBtaWdodCBjb250YWluLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCZWNhdXNlIHBhcnNpbmcgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGVzIGlzIGEgdGltZQotICAgICAgICAgICAgY29uc3VtaW5nIHByb2Nlc3MsIGEgY2FjaGUgaXMga2VwdCB0byBzcGVlZCB1cCBzdWJzZXF1ZW50IHBhcnNpbmcuCi0gICAgICAgICAgICBUaGlzIGNhY2hlIGlzIGludmFsaWQgaWYgdGhlIHRpbWVzdGFtcCBvZiB0aGUgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBmaWxlIGl0c2VsZiBjaGFuZ2VzLCBvciBpZiB0aGUgdGltZXN0YW1wcyBvZiBhbnkgb2YgdGhlIGluY2x1ZGUsCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIG9yIGNsYXNzIGZpbGVzIG9uIHdoaWNoIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGUgZGVwZW5kcyBjaGFuZ2UuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIGF3YXJlIG9mIGhvdyBCaXRCYWtlIHBhcnNlcyBjdXJseSBicmFjZXMuCi0gICAgICAgICAgICAgICAgSWYgYSByZWNpcGUgdXNlcyBhIGNsb3NpbmcgY3VybHkgYnJhY2Ugd2l0aGluIHRoZSBmdW5jdGlvbiBhbmQKLSAgICAgICAgICAgICAgICB0aGUgY2hhcmFjdGVyIGhhcyBubyBsZWFkaW5nIHNwYWNlcywgQml0QmFrZSBwcm9kdWNlcyBhIHBhcnNpbmcKLSAgICAgICAgICAgICAgICBlcnJvci4KLSAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIGEgcGFpciBvZiBjdXJseSBicmFjZSBpbiBhIHNoZWxsIGZ1bmN0aW9uLCB0aGUKLSAgICAgICAgICAgICAgICBjbG9zaW5nIGN1cmx5IGJyYWNlIG11c3Qgbm90IGJlIGxvY2F0ZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lCi0gICAgICAgICAgICAgICAgd2l0aG91dCBsZWFkaW5nIHNwYWNlcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgY2F1c2VzIEJpdEJha2UgdG8gcHJvZHVjZSBhIHBhcnNpbmcKLSAgICAgICAgICAgICAgICBlcnJvcjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGZha2Vyb290IGNyZWF0ZV9zaGFyKCkgewotICAgICAgICAgY2F0ICZsdDsmbHQ7ICJFT0YiICZndDsgJHtTREtfREVQTE9ZfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS5zaAotICAgICB1c2FnZSgpCi0gICAgIHsKLSAgICAgICBlY2hvICJ0ZXN0IgotICAgICAgICMjIyMjIyBUaGUgZm9sbG93aW5nICJ9IiBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUgY2F1c2VzIGEgcGFyc2luZyBlcnJvciAjIyMjIyMKLSAgICAgfQotICAgICBFT0YKLSAgICAgfQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBXcml0aW5nIHRoZSByZWNpcGUgdGhpcyB3YXkgYXZvaWRzIHRoZSBlcnJvcjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGZha2Vyb290IGNyZWF0ZV9zaGFyKCkgewotICAgICAgICAgY2F0ICZsdDsmbHQ7ICJFT0YiICZndDsgJHtTREtfREVQTE9ZfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS5zaAotICAgICB1c2FnZSgpCi0gICAgIHsKLSAgICAgICBlY2hvICJ0ZXN0IgotICAgICAgICMjIyMjI1RoZSBmb2xsb3dpbmcgIn0iIHdpdGggYSBsZWFkaW5nIHNwYWNlIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSBhdm9pZHMgdGhlIGVycm9yICMjIyMjIwotICAgICAgfQotICAgICBFT0YKLSAgICAgfQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdyZWYtYml0YmFrZS1wcm92aWRlcnMnPgotICAgICAgICA8dGl0bGU+UHJlZmVyZW5jZXMgYW5kIFByb3ZpZGVyczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBPbmNlIGFsbCB0aGUgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGVzIGhhdmUgYmVlbgotICAgICAgICAgICAgcGFyc2VkLCBCaXRCYWtlIHN0YXJ0cyB0byBidWlsZCB0aGUgdGFyZ2V0ICg8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uJ3MgZXhhbXBsZSkgYW5kIGxvb2tzIGZvciBwcm92aWRlcnMgb2YgdGhhdCB0YXJnZXQuCi0gICAgICAgICAgICBPbmNlIGEgcHJvdmlkZXIgaXMgc2VsZWN0ZWQsIEJpdEJha2UgcmVzb2x2ZXMgYWxsIHRoZSBkZXBlbmRlbmNpZXMgZm9yCi0gICAgICAgICAgICB0aGUgdGFyZ2V0LgotICAgICAgICAgICAgSW4gdGhlIGNhc2Ugb2YgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+LCBpdCB3b3VsZCBsZWFkIHRvCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG88L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIHdoaWNoIGluIHR1cm4gbGVhZHMgdG8gcmVjaXBlcyBsaWtlIDxmaWxlbmFtZT5tYXRjaGJveC10ZXJtaW5hbDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPGZpbGVuYW1lPnBjbWFuZm08L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmd0aHVtYjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgVGhlc2UgcmVjaXBlcyBpbiB0dXJuIGRlcGVuZCBvbiA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiBhbmQgdGhlIHRvb2xjaGFpbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgU29tZXRpbWVzIGEgdGFyZ2V0IG1pZ2h0IGhhdmUgbXVsdGlwbGUgcHJvdmlkZXJzLgotICAgICAgICAgICAgQSBjb21tb24gZXhhbXBsZSBpcyAidmlydHVhbC9rZXJuZWwiLCB3aGljaCBpcyBwcm92aWRlZCBieSBlYWNoIGtlcm5lbCBwYWNrYWdlLgotICAgICAgICAgICAgRWFjaCBtYWNoaW5lIG9mdGVuIHNlbGVjdHMgdGhlIGJlc3Qga2VybmVsIHByb3ZpZGVyIGJ5IHVzaW5nIGEgbGluZSBzaW1pbGFyIHRvIHRoZQotICAgICAgICAgICAgZm9sbG93aW5nIGluIHRoZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZToKLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID0gImxpbnV4LXlvY3RvIgotICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZGVmYXVsdCA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBSRUZFUlJFRF9QUk9WSURFUic+UFJFRkVSUkVEX1BST1ZJREVSPC9saW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBpcyB0aGUgcHJvdmlkZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB0YXJnZXQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFVuZGVyc3RhbmRpbmcgaG93IHByb3ZpZGVycyBhcmUgY2hvc2VuIGlzIG1hZGUgY29tcGxpY2F0ZWQgYnkgdGhlIGZhY3QKLSAgICAgICAgICAgIHRoYXQgbXVsdGlwbGUgdmVyc2lvbnMgbWlnaHQgZXhpc3QuCi0gICAgICAgICAgICBCaXRCYWtlIGRlZmF1bHRzIHRvIHRoZSBoaWdoZXN0IHZlcnNpb24gb2YgYSBwcm92aWRlci4KLSAgICAgICAgICAgIFZlcnNpb24gY29tcGFyaXNvbnMgYXJlIG1hZGUgdXNpbmcgdGhlIHNhbWUgbWV0aG9kIGFzIERlYmlhbi4KLSAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QUkVGRVJSRURfVkVSU0lPTic+UFJFRkVSUkVEX1ZFUlNJT048L2xpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgIHZhcmlhYmxlIHRvIHNwZWNpZnkgYSBwYXJ0aWN1bGFyIHZlcnNpb24gKHVzdWFsbHkgaW4gdGhlIGRpc3RybyBjb25maWd1cmF0aW9uKS4KLSAgICAgICAgICAgIFlvdSBjYW4gaW5mbHVlbmNlIHRoZSBvcmRlciBieSB1c2luZyB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVGQVVMVF9QUkVGRVJFTkNFJz5ERUZBVUxUX1BSRUZFUkVOQ0U8L2xpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgZmlsZXMgaGF2ZSBhIHByZWZlcmVuY2Ugb2YgIjAiLgotICAgICAgICAgICAgU2V0dGluZyB0aGUgPGZpbGVuYW1lPkRFRkFVTFRfUFJFRkVSRU5DRTwvZmlsZW5hbWU+IHRvICItMSIgbWFrZXMgdGhlCi0gICAgICAgICAgICBwYWNrYWdlIHVubGlrZWx5IHRvIGJlIHVzZWQgdW5sZXNzIGl0IGlzIGV4cGxpY2l0bHkgcmVmZXJlbmNlZC4KLSAgICAgICAgICAgIFNldHRpbmcgdGhlIDxmaWxlbmFtZT5ERUZBVUxUX1BSRUZFUkVOQ0U8L2ZpbGVuYW1lPiB0byAiMSIgbWFrZXMgaXQgbGlrZWx5IHRoZSBwYWNrYWdlIGlzIHVzZWQuCi0gICAgICAgICAgICA8ZmlsZW5hbWU+UFJFRkVSUkVEX1ZFUlNJT048L2ZpbGVuYW1lPiBvdmVycmlkZXMgYW55IDxmaWxlbmFtZT5ERUZBVUxUX1BSRUZFUkVOQ0U8L2ZpbGVuYW1lPiBzZXR0aW5nLgotICAgICAgICAgICAgPGZpbGVuYW1lPkRFRkFVTFRfUFJFRkVSRU5DRTwvZmlsZW5hbWU+IGlzIG9mdGVuIHVzZWQgdG8gbWFyayBuZXdlciBhbmQgbW9yZSBleHBlcmltZW50YWwgcGFja2FnZQotICAgICAgICAgICAgdmVyc2lvbnMgdW50aWwgdGhleSBoYXZlIHVuZGVyZ29uZSBzdWZmaWNpZW50IHRlc3RpbmcgdG8gYmUgY29uc2lkZXJlZCBzdGFibGUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEluIHN1bW1hcnksIEJpdEJha2UgaGFzIGNyZWF0ZWQgYSBsaXN0IG9mIHByb3ZpZGVycywgd2hpY2ggaXMgcHJpb3JpdGl6ZWQsIGZvciBlYWNoIHRhcmdldC4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdyZWYtYml0YmFrZS1kZXBlbmRlbmNpZXMnPgotICAgICAgICA8dGl0bGU+RGVwZW5kZW5jaWVzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEVhY2ggdGFyZ2V0IEJpdEJha2UgYnVpbGRzIGNvbnNpc3RzIG9mIG11bHRpcGxlIHRhc2tzIHN1Y2ggYXMKLSAgICAgICAgICAgIDxmaWxlbmFtZT5mZXRjaDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+dW5wYWNrPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cGF0Y2g8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5jb21waWxlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBGb3IgYmVzdCBwZXJmb3JtYW5jZSBvbiBtdWx0aS1jb3JlIHN5c3RlbXMsIEJpdEJha2UgY29uc2lkZXJzIGVhY2ggdGFzayBhcyBhbiBpbmRlcGVuZGVudAotICAgICAgICAgICAgZW50aXR5IHdpdGggaXRzIG93biBzZXQgb2YgZGVwZW5kZW5jaWVzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBEZXBlbmRlbmNpZXMgYXJlIGRlZmluZWQgdGhyb3VnaCBzZXZlcmFsIHZhcmlhYmxlcy4KLSAgICAgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBhYm91dCB2YXJpYWJsZXMgQml0QmFrZSB1c2VzIGluIHRoZQotICAgICAgICAgICAgQml0QmFrZSBkb2N1bWVudGF0aW9uLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2RvYy9tYW51YWw8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICBBdCBhIGJhc2ljIGxldmVsLCBpdCBpcyBzdWZmaWNpZW50IHRvIGtub3cgdGhhdCBCaXRCYWtlIHVzZXMgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPkRFUEVORFM8L2xpbms+PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz5SREVQRU5EUzwvbGluaz48L2ZpbGVuYW1lPgotICAgICAgICAgICAgdmFyaWFibGVzIHdoZW4gY2FsY3VsYXRpbmcgZGVwZW5kZW5jaWVzLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3JlZi1iaXRiYWtlLXRhc2tsaXN0Jz4KLSAgICAgICAgPHRpdGxlPlRoZSBUYXNrIExpc3Q8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQmFzZWQgb24gdGhlIGdlbmVyYXRlZCBsaXN0IG9mIHByb3ZpZGVycyBhbmQgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24sCi0gICAgICAgICAgICBCaXRCYWtlIGNhbiBub3cgY2FsY3VsYXRlIGV4YWN0bHkgd2hhdCB0YXNrcyBpdCBuZWVkcyB0byBydW4gYW5kIGluIHdoYXQKLSAgICAgICAgICAgIG9yZGVyIGl0IG5lZWRzIHRvIHJ1biB0aGVtLgotICAgICAgICAgICAgVGhlIGJ1aWxkIG5vdyBzdGFydHMgd2l0aCBCaXRCYWtlIGZvcmtpbmcgb2ZmIHRocmVhZHMgdXAgdG8gdGhlIGxpbWl0IHNldCBpbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItQkJfTlVNQkVSX1RIUkVBRFMnPkJCX05VTUJFUl9USFJFQURTPC9saW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlLgotICAgICAgICAgICAgQml0QmFrZSBjb250aW51ZXMgdG8gZm9yayB0aHJlYWRzIGFzIGxvbmcgYXMgdGhlcmUgYXJlIHRhc2tzIHJlYWR5IHRvIHJ1biwKLSAgICAgICAgICAgIHRob3NlIHRhc2tzIGhhdmUgYWxsIHRoZWlyIGRlcGVuZGVuY2llcyBtZXQsIGFuZCB0aGUgdGhyZWFkIHRocmVzaG9sZCBoYXMgbm90IGJlZW4KLSAgICAgICAgICAgIGV4Y2VlZGVkLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB5b3UgY2FuIGdyZWF0bHkgc3BlZWQgdXAgdGhlIGJ1aWxkIHRpbWUgYnkgcHJvcGVybHkgc2V0dGluZwotICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5CQl9OVU1CRVJfVEhSRUFEUzwvZmlsZW5hbWU+IHZhcmlhYmxlLgotICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcXMtYnVpbGRpbmctaW1hZ2VzJz5CdWlsZGluZyBJbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFzIGVhY2ggdGFzayBjb21wbGV0ZXMsIGEgdGltZXN0YW1wIGlzIHdyaXR0ZW4gdG8gdGhlIGRpcmVjdG9yeSBzcGVjaWZpZWQgYnkgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVNUQU1QJz5TVEFNUDwvbGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZS4KLSAgICAgICAgICAgIE9uIHN1YnNlcXVlbnQgcnVucywgQml0QmFrZSBsb29rcyB3aXRoaW4gdGhlIDxmaWxlbmFtZT5idWlsZC90bXAvc3RhbXBzPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgZG9lcyBub3QgcmVydW4KLSAgICAgICAgICAgIHRhc2tzIHRoYXQgYXJlIGFscmVhZHkgY29tcGxldGVkIHVubGVzcyBhIHRpbWVzdGFtcCBpcyBmb3VuZCB0byBiZSBpbnZhbGlkLgotICAgICAgICAgICAgQ3VycmVudGx5LCBpbnZhbGlkIHRpbWVzdGFtcHMgYXJlIG9ubHkgY29uc2lkZXJlZCBvbiBhIHBlcgotICAgICAgICAgICAgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGUgYmFzaXMuCi0gICAgICAgICAgICBTbywgZm9yIGV4YW1wbGUsIGlmIHRoZSBjb25maWd1cmUgc3RhbXAgaGFzIGEgdGltZXN0YW1wIGdyZWF0ZXIgdGhhbiB0aGUKLSAgICAgICAgICAgIGNvbXBpbGUgdGltZXN0YW1wIGZvciBhIGdpdmVuIHRhcmdldCwgdGhlbiB0aGUgY29tcGlsZSB0YXNrIHdvdWxkIHJlcnVuLgotICAgICAgICAgICAgUnVubmluZyB0aGUgY29tcGlsZSB0YXNrIGFnYWluLCBob3dldmVyLCBoYXMgbm8gZWZmZWN0IG9uIG90aGVyIHByb3ZpZGVycwotICAgICAgICAgICAgdGhhdCBkZXBlbmQgb24gdGhhdCB0YXJnZXQuCi0gICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGNvdWxkIGNoYW5nZSBvciBiZWNvbWUgY29uZmlndXJhYmxlIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBCaXRCYWtlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBTb21lIHRhc2tzIGFyZSBtYXJrZWQgYXMgIm5vc3RhbXAiIHRhc2tzLgotICAgICAgICAgICAgTm8gdGltZXN0YW1wIGZpbGUgaXMgY3JlYXRlZCB3aGVuIHRoZXNlIHRhc2tzIGFyZSBydW4uCi0gICAgICAgICAgICBDb25zZXF1ZW50bHksICJub3N0YW1wIiB0YXNrcyBhcmUgYWx3YXlzIHJlcnVuLgotICAgICAgICA8L25vdGU+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3JlZi1iaXRiYWtlLXJ1bnRhc2snPgotICAgICAgICA8dGl0bGU+UnVubmluZyBhIFRhc2s8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGFza3MgY2FuIGVpdGhlciBiZSBhIHNoZWxsIHRhc2sgb3IgYSBQeXRob24gdGFzay4KLSAgICAgICAgICAgIEZvciBzaGVsbCB0YXNrcywgQml0QmFrZSB3cml0ZXMgYSBzaGVsbCBzY3JpcHQgdG8KLSAgICAgICAgICAgIDxmaWxlbmFtZT4ke1dPUktESVJ9L3RlbXAvcnVuLmRvX3Rhc2tuYW1lLnBpZDwvZmlsZW5hbWU+IGFuZCB0aGVuIGV4ZWN1dGVzIHRoZSBzY3JpcHQuCi0gICAgICAgICAgICBUaGUgZ2VuZXJhdGVkIHNoZWxsIHNjcmlwdCBjb250YWlucyBhbGwgdGhlIGV4cG9ydGVkIHZhcmlhYmxlcywgYW5kIHRoZSBzaGVsbCBmdW5jdGlvbnMKLSAgICAgICAgICAgIHdpdGggYWxsIHZhcmlhYmxlcyBleHBhbmRlZC4KLSAgICAgICAgICAgIE91dHB1dCBmcm9tIHRoZSBzaGVsbCBzY3JpcHQgZ29lcyB0byB0aGUgZmlsZSA8ZmlsZW5hbWU+JHtXT1JLRElSfS90ZW1wL2xvZy5kb190YXNrbmFtZS5waWQ8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIExvb2tpbmcgYXQgdGhlIGV4cGFuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiB0aGUgcnVuIGZpbGUgYW5kIHRoZSBvdXRwdXQgaW4gdGhlIGxvZyBmaWxlcwotICAgICAgICAgICAgaXMgYSB1c2VmdWwgZGVidWdnaW5nIHRlY2huaXF1ZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9yIFB5dGhvbiB0YXNrcywgQml0QmFrZSBleGVjdXRlcyB0aGUgdGFzayBpbnRlcm5hbGx5IGFuZCBsb2dzIGluZm9ybWF0aW9uIHRvIHRoZQotICAgICAgICAgICAgY29udHJvbGxpbmcgdGVybWluYWwuCi0gICAgICAgICAgICBGdXR1cmUgdmVyc2lvbnMgb2YgQml0QmFrZSB3aWxsIHdyaXRlIHRoZSBmdW5jdGlvbnMgdG8gZmlsZXMgc2ltaWxhciB0byB0aGUgd2F5Ci0gICAgICAgICAgICBzaGVsbCB0YXNrcyBhcmUgaGFuZGxlZC4KLSAgICAgICAgICAgIExvZ2dpbmcgd2lsbCBiZSBoYW5kbGVkIGluIGEgd2F5IHNpbWlsYXIgdG8gc2hlbGwgdGFza3MgYXMgd2VsbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgT25jZSBhbGwgdGhlIHRhc2tzIGhhdmUgYmVlbiBjb21wbGV0ZWQgQml0QmFrZSBleGl0cy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiBydW5uaW5nIGEgdGFzaywgQml0QmFrZSB0aWdodGx5IGNvbnRyb2xzIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQKLSAgICAgICAgICAgIG9mIHRoZSBidWlsZCB0YXNrcyB0byBtYWtlIHN1cmUgdW53YW50ZWQgY29udGFtaW5hdGlvbiBmcm9tIHRoZSBidWlsZCBtYWNoaW5lCi0gICAgICAgICAgICBjYW5ub3QgaW5mbHVlbmNlIHRoZSBidWlsZC4KLSAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgeW91IGRvIHdhbnQgc29tZXRoaW5nIHRvIGdldCBwYXNzZWQgaW50byB0aGUgYnVpbGQKLSAgICAgICAgICAgIHRhc2sncyBlbnZpcm9ubWVudCwgeW91IG11c3QgdGFrZSBhIGZldyBzdGVwczoKLSAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGVsbCBCaXRCYWtlIHRvIGxvYWQgd2hhdCB5b3Ugd2FudCBmcm9tIHRoZSBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBkYXRhIHN0b3JlLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRvIHNvIHRocm91Z2ggdGhlIDxmaWxlbmFtZT5CQl9FTlZfRVhUUkFXSElURTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYXNzdW1lIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGJ1aWxkIHN5c3RlbSBmcm9tCi0gICAgICAgICAgICAgICAgICAgIGFjY2Vzc2luZyB5b3VyIDxmaWxlbmFtZT4kSE9NRS8uY2NhY2hlPC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgdGVsbHMgQml0QmFrZSB0byBsb2FkCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DQ0FDSEVfRElSPC9maWxlbmFtZT4gZnJvbSB0aGUgZW52aXJvbm1lbnQgaW50byB0aGUgZGF0YQotICAgICAgICAgICAgICAgICAgICBzdG9yZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBleHBvcnQgQkJfRU5WX0VYVFJBV0hJVEU9IiRCQl9FTlZfRVhUUkFXSElURSBDQ0FDSEVfRElSIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRlbGwgQml0QmFrZSB0byBleHBvcnQgd2hhdCB5b3UgaGF2ZSBsb2FkZWQgaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc3RvcmUgdG8gdGhlIHRhc2sgZW52aXJvbm1lbnQgb2YgZXZlcnkgcnVubmluZyB0YXNrLgotICAgICAgICAgICAgICAgICAgICBMb2FkaW5nIHNvbWV0aGluZyBmcm9tIHRoZSBlbnZpcm9ubWVudCBpbnRvIHRoZSBkYXRhIHN0b3JlCi0gICAgICAgICAgICAgICAgICAgIChwcmV2aW91cyBzdGVwKSBvbmx5IG1ha2VzIGl0IGF2YWlsYWJsZSBpbiB0aGUgZGF0YXN0b3JlLgotICAgICAgICAgICAgICAgICAgICBUbyBleHBvcnQgaXQgdG8gdGhlIHRhc2sgZW52aXJvbm1lbnQgb2YgZXZlcnkgcnVubmluZyB0YXNrLAotICAgICAgICAgICAgICAgICAgICB1c2UgYSBjb21tYW5kIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZyBpbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgZGlzdHJvIGNvbmZpZ3VyYXRpb24gZmlsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBleHBvcnQgQ0NBQ0hFX0RJUgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBBIHNpZGUgZWZmZWN0IG9mIHRoZSBwcmV2aW91cyBzdGVwcyBpcyB0aGF0IEJpdEJha2UgcmVjb3JkcyB0aGUgdmFyaWFibGUKLSAgICAgICAgICAgIGFzIGEgZGVwZW5kZW5jeSBvZiB0aGUgYnVpbGQgcHJvY2VzcyBpbiB0aGluZ3MgbGlrZSB0aGUgc2hhcmVkIHN0YXRlCi0gICAgICAgICAgICBjaGVja3N1bXMuCi0gICAgICAgICAgICBJZiBkb2luZyBzbyByZXN1bHRzIGluIHVubmVjZXNzYXJ5IHJlYnVpbGRzIG9mIHRhc2tzLCB5b3UgY2FuIHdoaXRlbGlzdCB0aGUKLSAgICAgICAgICAgIHZhcmlhYmxlIHNvIHRoYXQgdGhlIHNoYXJlZCBzdGF0ZSBjb2RlIGlnbm9yZXMgdGhlIGRlcGVuZGVuY3kgd2hlbiBpdCBjcmVhdGVzCi0gICAgICAgICAgICBjaGVja3N1bXMuCi0gICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhpcyBwcm9jZXNzLCBzZWUgdGhlIDxmaWxlbmFtZT5CQl9IQVNIQkFTRV9XSElURUxJU1Q8L2ZpbGVuYW1lPgotICAgICAgICAgICAgZXhhbXBsZSBpbiB0aGUgIjxsaW5rIGxpbmtlbmQ9J2NoZWNrc3Vtcyc+Q2hlY2tzdW1zIChTaWduYXR1cmVzKTwvbGluaz4iIHNlY3Rpb24uCi0gICAgICAgIDwvbm90ZT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncmVmLWJpdGJha2UtY29tbWFuZGxpbmUnPgotICAgICAgICA8dGl0bGU+Qml0QmFrZSBDb21tYW5kIExpbmU8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9sbG93aW5nIGlzIHRoZSBCaXRCYWtlIGhlbHAgb3V0cHV0OgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNjcmVlbj4KLSQgYml0YmFrZSAtLWhlbHAKLVVzYWdlOiBiaXRiYWtlIFtvcHRpb25zXSBbcmVjaXBlbmFtZS90YXJnZXQgLi4uXQotCi0gICAgRXhlY3V0ZXMgdGhlIHNwZWNpZmllZCB0YXNrIChkZWZhdWx0IGlzICdidWlsZCcpIGZvciBhIGdpdmVuIHNldCBvZiB0YXJnZXQgcmVjaXBlcyAoLmJiIGZpbGVzKS4KLSAgICBJdCBpcyBhc3N1bWVkIHRoZXJlIGlzIGEgY29uZi9iYmxheWVycy5jb25mIGF2YWlsYWJsZSBpbiBjd2Qgb3IgaW4gQkJQQVRIIHdoaWNoCi0gICAgd2lsbCBwcm92aWRlIHRoZSBsYXllciwgQkJGSUxFUyBhbmQgb3RoZXIgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4KLQotT3B0aW9uczoKLSAgLS12ZXJzaW9uICAgICAgICAgICAgIHNob3cgcHJvZ3JhbSdzIHZlcnNpb24gbnVtYmVyIGFuZCBleGl0Ci0gIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0Ci0gIC1iIEJVSUxERklMRSwgLS1idWlsZGZpbGU9QlVJTERGSUxFCi0gICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIHRhc2tzIGZyb20gYSBzcGVjaWZpYyAuYmIgcmVjaXBlIGRpcmVjdGx5LgotICAgICAgICAgICAgICAgICAgICAgICAgV0FSTklORzogRG9lcyBub3QgaGFuZGxlIGFueSBkZXBlbmRlbmNpZXMgZnJvbSBvdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcy4KLSAgLWssIC0tY29udGludWUgICAgICAgIENvbnRpbnVlIGFzIG11Y2ggYXMgcG9zc2libGUgYWZ0ZXIgYW4gZXJyb3IuIFdoaWxlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHRoYXQgZmFpbGVkIGFuZCBhbnl0aGluZyBkZXBlbmRpbmcgb24gaXQgY2Fubm90Ci0gICAgICAgICAgICAgICAgICAgICAgICBiZSBidWlsdCwgYXMgbXVjaCBhcyBwb3NzaWJsZSB3aWxsIGJlIGJ1aWx0IGJlZm9yZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHBpbmcuCi0gIC1hLCAtLXRyeWFsdGNvbmZpZ3MgICBDb250aW51ZSB3aXRoIGJ1aWxkcyBieSB0cnlpbmcgdG8gdXNlIGFsdGVybmF0aXZlCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcnMgd2hlcmUgcG9zc2libGUuCi0gIC1mLCAtLWZvcmNlICAgICAgICAgICBGb3JjZSB0aGUgc3BlY2lmaWVkIHRhcmdldHMvdGFzayB0byBydW4gKGludmFsaWRhdGluZwotICAgICAgICAgICAgICAgICAgICAgICAgYW55IGV4aXN0aW5nIHN0YW1wIGZpbGUpLgotICAtYyBDTUQsIC0tY21kPUNNRCAgICAgU3BlY2lmeSB0aGUgdGFzayB0byBleGVjdXRlLiBUaGUgZXhhY3Qgb3B0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIGRlcGVuZCBvbiB0aGUgbWV0YWRhdGEuIFNvbWUgZXhhbXBsZXMgbWlnaHQKLSAgICAgICAgICAgICAgICAgICAgICAgIGJlICdjb21waWxlJyBvciAncG9wdWxhdGVfc3lzcm9vdCcgb3IgJ2xpc3R0YXNrcycgbWF5Ci0gICAgICAgICAgICAgICAgICAgICAgICBnaXZlIGEgbGlzdCBvZiB0aGUgdGFza3MgYXZhaWxhYmxlLgotICAtQyBJTlZBTElEQVRFX1NUQU1QLCAtLWNsZWFyLXN0YW1wPUlOVkFMSURBVEVfU1RBTVAKLSAgICAgICAgICAgICAgICAgICAgICAgIEludmFsaWRhdGUgdGhlIHN0YW1wIGZvciB0aGUgc3BlY2lmaWVkIHRhc2sgc3VjaCBhcwotICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBpbGUnIGFuZCB0aGVuIHJ1biB0aGUgZGVmYXVsdCB0YXNrIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCB0YXJnZXQocykuCi0gIC1yIFBSRUZJTEUsIC0tcmVhZD1QUkVGSUxFCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWFkIHRoZSBzcGVjaWZpZWQgZmlsZSBiZWZvcmUgYml0YmFrZS5jb25mLgotICAtUiBQT1NURklMRSwgLS1wb3N0cmVhZD1QT1NURklMRQotICAgICAgICAgICAgICAgICAgICAgICAgUmVhZCB0aGUgc3BlY2lmaWVkIGZpbGUgYWZ0ZXIgYml0YmFrZS5jb25mLgotICAtdiwgLS12ZXJib3NlICAgICAgICAgT3V0cHV0IG1vcmUgbG9nIG1lc3NhZ2UgZGF0YSB0byB0aGUgdGVybWluYWwuCi0gIC1ELCAtLWRlYnVnICAgICAgICAgICBJbmNyZWFzZSB0aGUgZGVidWcgbGV2ZWwuIFlvdSBjYW4gc3BlY2lmeSB0aGlzIG1vcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gb25jZS4KLSAgLW4sIC0tZHJ5LXJ1biAgICAgICAgIERvbid0IGV4ZWN1dGUsIGp1c3QgZ28gdGhyb3VnaCB0aGUgbW90aW9ucy4KLSAgLVMsIC0tZHVtcC1zaWduYXR1cmVzCi0gICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBleGVjdXRlLCBqdXN0IGR1bXAgb3V0IHRoZSBzaWduYXR1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdGlvbiBpbmZvcm1hdGlvbi4KLSAgLXAsIC0tcGFyc2Utb25seSAgICAgIFF1aXQgYWZ0ZXIgcGFyc2luZyB0aGUgQkIgcmVjaXBlcy4KLSAgLXMsIC0tc2hvdy12ZXJzaW9ucyAgIFNob3cgY3VycmVudCBhbmQgcHJlZmVycmVkIHZlcnNpb25zIG9mIGFsbCByZWNpcGVzLgotICAtZSwgLS1lbnZpcm9ubWVudCAgICAgU2hvdyB0aGUgZ2xvYmFsIG9yIHBlci1wYWNrYWdlIGVudmlyb25tZW50IGNvbXBsZXRlCi0gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHZhcmlhYmxlcyB3ZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXQvY2hhbmdlZC4KLSAgLWcsIC0tZ3JhcGh2aXogICAgICAgIFNhdmUgZGVwZW5kZW5jeSB0cmVlIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkCi0gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzIGluIHRoZSBkb3Qgc3ludGF4LgotICAtSSBFWFRSQV9BU1NVTUVfUFJPVklERUQsIC0taWdub3JlLWRlcHM9RVhUUkFfQVNTVU1FX1BST1ZJREVECi0gICAgICAgICAgICAgICAgICAgICAgICBBc3N1bWUgdGhlc2UgZGVwZW5kZW5jaWVzIGRvbid0IGV4aXN0IGFuZCBhcmUgYWxyZWFkeQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgKGVxdWl2YWxlbnQgdG8gQVNTVU1FX1BST1ZJREVEKS4gVXNlZnVsIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBtYWtlIGRlcGVuZGVuY3kgZ3JhcGhzIG1vcmUgYXBwZWFsaW5nCi0gIC1sIERFQlVHX0RPTUFJTlMsIC0tbG9nLWRvbWFpbnM9REVCVUdfRE9NQUlOUwotICAgICAgICAgICAgICAgICAgICAgICAgU2hvdyBkZWJ1ZyBsb2dnaW5nIGZvciB0aGUgc3BlY2lmaWVkIGxvZ2dpbmcgZG9tYWlucwotICAtUCwgLS1wcm9maWxlICAgICAgICAgUHJvZmlsZSB0aGUgY29tbWFuZCBhbmQgc2F2ZSByZXBvcnRzLgotICAtdSBVSSwgLS11aT1VSSAgICAgICAgVGhlIHVzZXIgaW50ZXJmYWNlIHRvIHVzZSAoZS5nLiBrbm90dHkgYW5kIHRhc2tleHApLgotICAtdCBTRVJWRVJUWVBFLCAtLXNlcnZlcnR5cGU9U0VSVkVSVFlQRQotICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIHdoaWNoIHNlcnZlciB0byB1c2UsIHByb2Nlc3Mgb3IgeG1scnBjLgotICAtLXJldmlzaW9ucy1jaGFuZ2VkICAgU2V0IHRoZSBleGl0IGNvZGUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdXBzdHJlYW0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nIHJldmlzaW9ucyBoYXZlIGNoYW5nZWQgb3Igbm90LgotICAtLXNlcnZlci1vbmx5ICAgICAgICAgUnVuIGJpdGJha2Ugd2l0aG91dCBhIFVJLCBvbmx5IHN0YXJ0aW5nIGEgc2VydmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAoY29va2VyKSBwcm9jZXNzLgotICAtQiBCSU5ELCAtLWJpbmQ9QklORCAgVGhlIG5hbWUvYWRkcmVzcyBmb3IgdGhlIGJpdGJha2Ugc2VydmVyIHRvIGJpbmQgdG8uCi0gIC0tbm8tc2V0c2NlbmUgICAgICAgICBEbyBub3QgcnVuIGFueSBzZXRzY2VuZSB0YXNrcy4gc3N0YXRlIHdpbGwgYmUgaWdub3JlZAotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGV2ZXJ5dGhpbmcgbmVlZGVkLCBidWlsdC4KLSAgLS1yZW1vdGUtc2VydmVyPVJFTU9URV9TRVJWRVIKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3QgdG8gdGhlIHNwZWNpZmllZCBzZXJ2ZXIuCi0gIC1tLCAtLWtpbGwtc2VydmVyICAgICBUZXJtaW5hdGUgdGhlIHJlbW90ZSBzZXJ2ZXIuCi0gIC0tb2JzZXJ2ZS1vbmx5ICAgICAgICBDb25uZWN0IHRvIGEgc2VydmVyIGFzIGFuIG9ic2VydmluZy1vbmx5IGNsaWVudC4KLSAgICAgICAgPC9zY3JlZW4+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3JlZi1iaXRiYWtlLWZldGNoZXJzJz4KLSAgICAgICAgPHRpdGxlPkZldGNoZXJzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJpdEJha2UgYWxzbyBjb250YWlucyBhIHNldCBvZiAiZmV0Y2hlciIgbW9kdWxlcyB0aGF0IGFsbG93Ci0gICAgICAgICAgICByZXRyaWV2YWwgb2Ygc291cmNlIGNvZGUgZnJvbSB2YXJpb3VzIHR5cGVzIG9mIHNvdXJjZXMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgQml0QmFrZSBjYW4gZ2V0IHNvdXJjZSBjb2RlIGZyb20gYSBkaXNrIHdpdGggdGhlIG1ldGFkYXRhLCBmcm9tIHdlYnNpdGVzLAotICAgICAgICAgICAgZnJvbSByZW1vdGUgc2hlbGwgYWNjb3VudHMsIG9yIGZyb20gU291cmNlIENvZGUgTWFuYWdlbWVudCAoU0NNKSBzeXN0ZW1zCi0gICAgICAgICAgICBsaWtlIDxmaWxlbmFtZT5jdnMvc3VidmVyc2lvbi9naXQ8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRmV0Y2hlcnMgYXJlIHVzdWFsbHkgdHJpZ2dlcmVkIGJ5IGVudHJpZXMgaW4KLSAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+U1JDX1VSSTwvbGluaz48L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3B0aW9ucyBhbmQgZm9ybWF0cyBvZiBlbnRyaWVzIGZvciBzcGVjaWZpYwotICAgICAgICAgICAgZmV0Y2hlcnMgaW4gdGhlIEJpdEJha2UgbWFudWFsIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9kb2MvbWFudWFsPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIE9uZSB1c2VmdWwgZmVhdHVyZSBmb3IgY2VydGFpbiBTb3VyY2UgQ29kZSBNYW5hZ2VyIChTQ00pIGZldGNoZXJzCi0gICAgICAgICAgICBpcyB0aGUgYWJpbGl0eSB0byAiYXV0by11cGRhdGUiIHdoZW4gdGhlIHVwc3RyZWFtIFNDTSBjaGFuZ2VzCi0gICAgICAgICAgICB2ZXJzaW9uLgotICAgICAgICAgICAgU2luY2UgdGhpcyBhYmlsaXR5IHJlcXVpcmVzIGNlcnRhaW4gZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSBTQ00sCi0gICAgICAgICAgICBub3QgYWxsIHN5c3RlbXMgc3VwcG9ydCBpdC4KLSAgICAgICAgICAgIEN1cnJlbnRseSBTdWJ2ZXJzaW9uLCBCYXphYXIgYW5kIHRvIGEgbGltaXRlZCBleHRlbnQsIEdpdCBzdXBwb3J0Ci0gICAgICAgICAgICB0aGUgYWJpbGl0eSB0byAiYXV0by11cGRhdGUiLgotICAgICAgICAgICAgVGhpcyBmZWF0dXJlIHdvcmtzIHVzaW5nIHRoZSA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVNSQ1JFVic+U1JDUkVWPC9saW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWFwcGRldi1zcmNyZXYnPlVzaW5nIGFuIEV4dGVybmFsIFNDTTwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKLSAgICAgICAgICAgIGluZm9ybWF0aW9uLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICA8L3NlY3Rpb24+Ci0KLTwvY2hhcHRlcj4KLTwhLS0KLXZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQgc3BlbGwgc3BlbGxsYW5nPWVuX2diCi0tLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtY2xhc3Nlcy54bWwKaW5kZXggNTk2MWQzZS4uNzdmMjFlZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtY2xhc3Nlcy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtY2xhc3Nlcy54bWwKQEAgLTM1LDggKzM1LDcgQEAKIDxwYXJhPgogICAgIFRoaXMgY2hhcHRlciBkaXNjdXNzZXMgb25seSB0aGUgbW9zdCB1c2VmdWwgYW5kIGltcG9ydGFudCBjbGFzc2VzLgogICAgIE90aGVyIGNsYXNzZXMgZG8gZXhpc3Qgd2l0aGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzPC9maWxlbmFtZT4KLSAgICBkaXJlY3RvcnkgaW4gdGhlCi0gICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgZGlyZWN0b3J5IGluIHRoZSBTb3VyY2UgRGlyZWN0b3J5LgogICAgIFlvdSBjYW4gcmVmZXJlbmNlIHRoZSA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlcyBkaXJlY3RseQogICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogPC9wYXJhPgpAQCAtMTI4LDkgKzEyNyw4IEBACiAgICAgPHBhcmE+CiAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+YXV0b3Rvb2xzKjwvZmlsZW5hbWU+IGNsYXNzZXMKICAgICAgICAgdXNlIG91dC1vZi10cmVlIGJ1aWxkcyAoaS5lLgotICAgICAgICA8ZmlsZW5hbWU+YXV0b3Rvb2xzLmJiY2xhc3M8L2ZpbGVuYW1lPikuCi0gICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItQic+PGZpbGVuYW1lPkI8L2ZpbGVuYW1lPjwvbGluaz4gPGZpbGVuYW1lPiE9PC9maWxlbmFtZT4KLSAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgPGZpbGVuYW1lPmF1dG90b29scy5iYmNsYXNzPC9maWxlbmFtZT4gYnVpbGRpbmcgd2l0aAorICAgICAgICA8ZmlsZW5hbWU+QiAhPSBTPC9maWxlbmFtZT4pLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMzU3LDggKzM1NSw4IEBACiAgICAgICAgIGhpc3Rvcnkgb2YgYnVpbGQgb3V0cHV0IG1ldGFkYXRhLCB3aGljaCBjYW4gYmUgdXNlZCB0byBkZXRlY3QgcG9zc2libGUKICAgICAgICAgcmVncmVzc2lvbnMgYXMgd2VsbCBhcyB1c2VkIGZvciBhbmFseXNpcyBvZiB0aGUgYnVpbGQgb3V0cHV0LgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyBCdWlsZCBIaXN0b3J5LCBzZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdtYWludGFpbmluZy1idWlsZC1vdXRwdXQtcXVhbGl0eSc+TWFpbnRhaW5pbmcgQnVpbGQgT3V0cHV0IFF1YWxpdHk8L2xpbms+IgotICAgICAgICBzZWN0aW9uLgorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApAQCAtNDA3LDggKzQwNSw3IEBACiAgICAgPHRpdGxlPjxmaWxlbmFtZT5jY2FjaGUuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGUgPGZpbGVuYW1lPmNjYWNoZTwvZmlsZW5hbWU+IGNsYXNzIGVuYWJsZXMgdGhlCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9jY2FjaGUuc2FtYmEub3JnLyc+Qy9DKysgQ29tcGlsZXIgQ2FjaGU8L3VsaW5rPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmNjYWNoZTwvZmlsZW5hbWU+IGNsYXNzIGVuYWJsZXMgdGhlIEMvQysrIENvbXBpbGVyIENhY2hlCiAgICAgICAgIGZvciB0aGUgYnVpbGQuCiAgICAgICAgIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBnaXZlIGEgbWlub3IgcGVyZm9ybWFuY2UgYm9vc3QgZHVyaW5nIHRoZSBidWlsZC4KICAgICAgICAgSG93ZXZlciwgdXNpbmcgdGhlIGNsYXNzIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgc2lkZS1lZmZlY3RzLgpAQCAtNTY4LDggKzU2NSw5IEBACiAgICAgICAgIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSByZWNpcGVzIHRoYXQgYnVpbGQgdGhlIENhbmFkaWFuCiAgICAgICAgIENyb3NzLWNvbXBpbGF0aW9uIHRvb2xzIGZvciBTREtzLgogICAgICAgICBTZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGRpc2N1c3Npb24gb24gdGhlc2UgY3Jvc3MtY29tcGlsYXRpb24gdG9vbHMuCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgZGlzY3Vzc2lvbiBvbiB0aGVzZSBjcm9zcy1jb21waWxhdGlvbiB0b29scy4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTU4MSw4ICs1NzksOSBAQAogICAgICAgICBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgcmVjaXBlcyB0aGF0IGJ1aWxkIHRoZSBjcm9zcy1jb21waWxhdGlvbgogICAgICAgICB0b29scyB1c2VkIGZvciBidWlsZGluZyBTREtzLgogICAgICAgICBTZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGRpc2N1c3Npb24gb24gdGhlc2UgY3Jvc3MtY29tcGlsYXRpb24gdG9vbHMuCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgZGlzY3Vzc2lvbiBvbiB0aGVzZSBjcm9zcy1jb21waWxhdGlvbiB0b29scy4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTEyNDksOCArMTI0OCw4IEBACiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZ3Bva3ktZXh0ZW5kLWN1c3RvbWltYWdlJz5DdXN0b21pemluZyBJbWFnZXM8L3VsaW5rPiIKICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgaW1hZ2VzIGFyZSBjcmVhdGVkLCBzZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L2xpbms+IiBzZWN0aW9uIGVsc2V3aGVyZQotICAgICAgICBpbiB0aGlzIG1hbnVhbC4KKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+SW1hZ2VzPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNwZXRzIE1hbnVhbC4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTEyOTEsNyArMTI5MCw3IEBACiAgICAgICAgIFRoaXMgY2xhc3MgYWxzbyBoYW5kbGVzIGNvbnZlcnNpb24gYW5kIGNvbXByZXNzaW9uIG9mIGltYWdlcy4KICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICBUbyBidWlsZCBhIFZNd2FyZSBWTURLIGltYWdlLCB5b3UgbmVlZCB0byBhZGQgIndpYy52bWRrIiB0bwotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgIFRoaXMgd291bGQgYWxzbyBiZSBzaW1pbGFyIGZvciBWaXJ0dWFsIEJveCBWaXJ0dWFsIERpc2sgSW1hZ2UKICAgICAgICAgICAgICgidmRpIikgYW5kIFFFTVUgQ29weSBPbiBXcml0ZSBWZXJzaW9uIDIgKCJxY293MiIpIGltYWdlcy4KICAgICAgICAgPC9ub3RlPgpAQCAtMTU1Miw3ICsxNTUxLDggQEAKICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgIHZhcmlhYmxlIHZhbHVlcyB0aGF0IGNvbnRhaW4gIi8vIiwgd2hpY2ggaXMgaW52YWxpZC4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmhvc3QtdXNlci1jb250YW1pbmF0ZWQ6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdpbnNhbmUtaG9zdC11c2VyLWNvbnRhbWluYXRlZCc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5ob3N0LXVzZXItY29udGFtaW5hdGVkOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBDaGVja3MgdGhhdCBubyBwYWNrYWdlIHByb2R1Y2VkIGJ5IHRoZSByZWNpcGUgY29udGFpbnMgYW55CiAgICAgICAgICAgICAgICAgZmlsZXMgb3V0c2lkZSBvZiA8ZmlsZW5hbWU+L2hvbWU8L2ZpbGVuYW1lPiB3aXRoIGEgdXNlciBvcgogICAgICAgICAgICAgICAgIGdyb3VwIElEIHRoYXQgbWF0Y2hlcyB0aGUgdXNlciBydW5uaW5nIEJpdEJha2UuCkBAIC0xODgzLDYgKzE4ODMsMTcgQEAKICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1rZXJuZWwtZGV2aWNldHJlZSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5rZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+a2VybmVsLWRldmljZXRyZWU8L2ZpbGVuYW1lPiBjbGFzcywgd2hpY2ggaXMgaW5oZXJpdGVkIGJ5CisgICAgICAgIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1rZXJuZWwnPjxmaWxlbmFtZT5rZXJuZWw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MsIHN1cHBvcnRzIGRldmljZSB0cmVlIGdlbmVyYXRpb24uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCiA8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMta2VybmVsLWZpdGltYWdlJz4KICAgICA8dGl0bGU+PGZpbGVuYW1lPmtlcm5lbC1maXRpbWFnZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgogCkBAIC0yMTIyLDcgKzIxMzMsNyBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIG91dC1vZi10cmVlIExpbnV4IGtlcm5lbCBtb2R1bGVzLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfVVJMOyNpbmNvcnBvcmF0aW5nLW91dC1vZi10cmVlLW1vZHVsZXMnPkluY29ycG9yYXRpbmcgT3V0LW9mLVRyZWUgTW9kdWxlczwvdWxpbms+IgorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2luY29ycG9yYXRpbmctb3V0LW9mLXRyZWUtbW9kdWxlcyc+SW5jb3Jwb3JhdGluZyBPdXQtb2YtVHJlZSBNb2R1bGVzPC91bGluaz4iCiAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbC4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CkBAIC0yNzA5LDggKzI3MjAsOCBAQAogICAgIDxwYXJhPgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluCiAgICAgICAgIGdlbmVyYXRpb24sIHNlZSB0aGUKLSAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvbGluaz4iCi0gICAgICAgIHNlY3Rpb24uCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBhZHZhbnRhZ2VzIGdhaW5lZCB3aGVuIGJ1aWxkaW5nIGEKICAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIHVzaW5nIHRoZQogICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc2RrJz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT48L2xpbms+CkBAIC0zMDA3LDggKzMwMTgsOCBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgcm9vdCBmaWxlc3lzdGVtIGltYWdlcyBhcmUgY3JlYXRlZCwgc2VlIHRoZQotICAgICAgICAiPGxpbmsgbGlua2VuZD0naW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICBzZWN0aW9uLgorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNpbWFnZS1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+SW1hZ2UgR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCkBAIC0zMTY5LDggKzMxODAsOCBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNzdGF0ZSwgc2VlIHRoZQotICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2hhcmVkLXN0YXRlLWNhY2hlJz5TaGFyZWQgU3RhdGUgQ2FjaGU8L2xpbms+IgotICAgICAgICBzZWN0aW9uLgorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzaGFyZWQtc3RhdGUtY2FjaGUnPlNoYXJlZCBTdGF0ZSBDYWNoZTwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMTk3ZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjc2MSArMCwwIEBACi08IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCi0iaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgotWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgotCi08Y2hhcHRlciBpZD0ncmVmLWRldmVsb3BtZW50LWVudmlyb25tZW50Jz4KLTx0aXRsZT5UaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdGl0bGU+Ci0KLTxwYXJhPgotICAgIFRoaXMgY2hhcHRlciB0YWtlcyBhIGxvb2sgYXQgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKLSAgICBlbnZpcm9ubWVudCBhbmQgYWxzbyBwcm92aWRlcyBhIGRldGFpbGVkIGxvb2sgYXQgd2hhdCBnb2VzIG9uIGR1cmluZwotICAgIGRldmVsb3BtZW50IGluIHRoYXQgZW52aXJvbm1lbnQuCi0gICAgVGhlIGNoYXB0ZXIgcHJvdmlkZXMgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBjb25jZXB0cyB0aGF0Ci0gICAgaGVscCB5b3UgdW5kZXJzdGFuZCBob3cgd29yayBpcyBhY2NvbXBsaXNoZWQgaW4gYW4gb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQsCi0gICAgd2hpY2ggaXMgdmVyeSBkaWZmZXJlbnQgYXMgY29tcGFyZWQgdG8gd29yayBhY2NvbXBsaXNoZWQgaW4gYSBjbG9zZWQsCi0gICAgcHJvcHJpZXRhcnkgZW52aXJvbm1lbnQuCi08L3BhcmE+Ci0KLTxwYXJhPgotICAgIFNwZWNpZmljYWxseSwgdGhpcyBjaGFwdGVyIGFkZHJlc3NlcyBvcGVuIHNvdXJjZSBwaGlsb3NvcGh5LCB3b3JrZmxvd3MsCi0gICAgR2l0LCBzb3VyY2UgcmVwb3NpdG9yaWVzLCBsaWNlbnNpbmcsIHJlY2lwZSBzeW50YXgsIGFuZCBkZXZlbG9wbWVudAotICAgIHN5bnRheC4KLTwvcGFyYT4KLQotPHNlY3Rpb24gaWQ9J29wZW4tc291cmNlLXBoaWxvc29waHknPgotICAgIDx0aXRsZT5PcGVuIFNvdXJjZSBQaGlsb3NvcGh5PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBPcGVuIHNvdXJjZSBwaGlsb3NvcGh5IGlzIGNoYXJhY3Rlcml6ZWQgYnkgc29mdHdhcmUgZGV2ZWxvcG1lbnQKLSAgICAgICAgZGlyZWN0ZWQgYnkgcGVlciBwcm9kdWN0aW9uIGFuZCBjb2xsYWJvcmF0aW9uIHRocm91Z2ggYW4gYWN0aXZlCi0gICAgICAgIGNvbW11bml0eSBvZiBkZXZlbG9wZXJzLgotICAgICAgICBDb250cmFzdCB0aGlzIHRvIHRoZSBtb3JlIHN0YW5kYXJkIGNlbnRyYWxpemVkIGRldmVsb3BtZW50IG1vZGVscwotICAgICAgICB1c2VkIGJ5IGNvbW1lcmNpYWwgc29mdHdhcmUgY29tcGFuaWVzIHdoZXJlIGEgZmluaXRlIHNldCBvZiBkZXZlbG9wZXJzCi0gICAgICAgIHByb2R1Y2VzIGEgcHJvZHVjdCBmb3Igc2FsZSB1c2luZyBhIGRlZmluZWQgc2V0IG9mIHByb2NlZHVyZXMgdGhhdAotICAgICAgICB1bHRpbWF0ZWx5IHJlc3VsdCBpbiBhbiBlbmQgcHJvZHVjdCB3aG9zZSBhcmNoaXRlY3R1cmUgYW5kIHNvdXJjZQotICAgICAgICBtYXRlcmlhbCBhcmUgY2xvc2VkIHRvIHRoZSBwdWJsaWMuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIE9wZW4gc291cmNlIHByb2plY3RzIGNvbmNlcHR1YWxseSBoYXZlIGRpZmZlcmluZyBjb25jdXJyZW50IGFnZW5kYXMsCi0gICAgICAgIGFwcHJvYWNoZXMsIGFuZCBwcm9kdWN0aW9uLgotICAgICAgICBUaGVzZSBmYWNldHMgb2YgdGhlIGRldmVsb3BtZW50IHByb2Nlc3MgY2FuIGNvbWUgZnJvbSBhbnlvbmUgaW4gdGhlCi0gICAgICAgIHB1YmxpYyAoY29tbXVuaXR5KSB0aGF0IGhhcyBhIHN0YWtlIGluIHRoZSBzb2Z0d2FyZSBwcm9qZWN0LgotICAgICAgICBUaGUgb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQgY29udGFpbnMgbmV3IGNvcHlyaWdodCwgbGljZW5zaW5nLCBkb21haW4sCi0gICAgICAgIGFuZCBjb25zdW1lciBpc3N1ZXMgdGhhdCBkaWZmZXIgZnJvbSB0aGUgbW9yZSB0cmFkaXRpb25hbCBkZXZlbG9wbWVudAotICAgICAgICBlbnZpcm9ubWVudC4KLSAgICAgICAgSW4gYW4gb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQsIHRoZSBlbmQgcHJvZHVjdCwgc291cmNlIG1hdGVyaWFsLAotICAgICAgICBhbmQgZG9jdW1lbnRhdGlvbiBhcmUgYWxsIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGF0IG5vIGNvc3QuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEEgYmVuY2htYXJrIGV4YW1wbGUgb2YgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCBpcyB0aGUgTGludXgga2VybmVsLAotICAgICAgICB3aGljaCB3YXMgaW5pdGlhbGx5IGNvbmNlaXZlZCBhbmQgY3JlYXRlZCBieSBGaW5uaXNoIGNvbXB1dGVyIHNjaWVuY2UKLSAgICAgICAgc3R1ZGVudCBMaW51cyBUb3J2YWxkcyBpbiAxOTkxLgotICAgICAgICBDb252ZXJzZWx5LCBhIGdvb2QgZXhhbXBsZSBvZiBhIG5vbi1vcGVuIHNvdXJjZSBwcm9qZWN0IGlzIHRoZQotICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5XaW5kb3dzPC90cmFkZW1hcms+IGZhbWlseSBvZiBvcGVyYXRpbmcKLSAgICAgICAgc3lzdGVtcyBkZXZlbG9wZWQgYnkKLSAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+TWljcm9zb2Z0PC90cmFkZW1hcms+IENvcnBvcmF0aW9uLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBXaWtpcGVkaWEgaGFzIGEgZ29vZCBoaXN0b3JpY2FsIGRlc2NyaXB0aW9uIG9mIHRoZSBPcGVuIFNvdXJjZQotICAgICAgICBQaGlsb3NvcGh5Ci0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3Blbl9zb3VyY2UnPmhlcmU8L3VsaW5rPi4KLSAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgaGVscGZ1bCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcGFydGljaXBhdGUgaW4gdGhlCi0gICAgICAgIExpbnV4IENvbW11bml0eQotICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGRuLmxpbnV4Zm91bmRhdGlvbi5vcmcvYm9vay9ob3ctcGFydGljaXBhdGUtbGludXgtY29tbXVuaXR5Jz5oZXJlPC91bGluaz4uCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nd29ya2Zsb3dzJz4KLSAgICA8dGl0bGU+V29ya2Zsb3dzPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgd29ya2Zsb3cgY29uY2VwdHMgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QgYW5kCi0gICAgICAgIEdpdC4KLSAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGluZm9ybWF0aW9uIGNvdmVycyBiYXNpYyBwcmFjdGljZXMgdGhhdCBkZXNjcmliZQotICAgICAgICByb2xlcyBhbmQgYWN0aW9ucyBpbiBhIGNvbGxhYm9yYXRpdmUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgSWYgeW91IGFyZSBmYW1pbGlhciB3aXRoIHRoaXMgdHlwZSBvZiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgeW91Ci0gICAgICAgICAgICBtaWdodCBub3Qgd2FudCB0byByZWFkIHRoaXMgc2VjdGlvbi4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBmaWxlcyBhcmUgbWFpbnRhaW5lZCB1c2luZyBHaXQgaW4gIm1hc3RlciIKLSAgICAgICAgYnJhbmNoZXMgd2hvc2UgR2l0IGhpc3RvcmllcyB0cmFjayBldmVyeSBjaGFuZ2UgYW5kIHdob3NlIHN0cnVjdHVyZXMKLSAgICAgICAgcHJvdmlkZXMgYnJhbmNoZXMgZm9yIGFsbCBkaXZlcmdpbmcgZnVuY3Rpb25hbGl0eS4KLSAgICAgICAgQWx0aG91Z2ggdGhlcmUgaXMgbm8gbmVlZCB0byB1c2UgR2l0LCBtYW55IG9wZW4gc291cmNlIHByb2plY3RzIGRvIHNvLgotICAgIDxwYXJhPgotCi0gICAgPC9wYXJhPgotICAgICAgICBGb3IgdGhlIFlvY3RvIFByb2plY3QsIGEga2V5IGluZGl2aWR1YWwgY2FsbGVkIHRoZSAibWFpbnRhaW5lciIgaXMKLSAgICAgICAgcmVzcG9uc2libGUgZm9yIHRoZSAibWFzdGVyIiBicmFuY2ggb2YgYSBnaXZlbiBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgVGhlICJtYXN0ZXIiIGJyYW5jaCBpcyB0aGUg4oCcdXBzdHJlYW3igJ0gcmVwb3NpdG9yeSBmcm9tIHdoaWNoIGZpbmFsIG9yCi0gICAgICAgIG1vc3QgcmVjZW50IGJ1aWxkcyBvZiB0aGUgcHJvamVjdCBvY2N1ci4KLSAgICAgICAgVGhlIG1haW50YWluZXIgaXMgcmVzcG9uc2libGUgZm9yIGFjY2VwdGluZyBjaGFuZ2VzIGZyb20gb3RoZXIKLSAgICAgICAgZGV2ZWxvcGVycyBhbmQgZm9yIG9yZ2FuaXppbmcgdGhlIHVuZGVybHlpbmcgYnJhbmNoIHN0cnVjdHVyZSB0bwotICAgICAgICByZWZsZWN0IHJlbGVhc2Ugc3RyYXRlZ2llcyBhbmQgc28gZm9ydGguCi0gICAgICAgIDxub3RlPkZvciBpbmZvcm1hdGlvbiBvbiBmaW5kaW5nIG91dCB3aG8gaXMgcmVzcG9uc2libGUgZm9yIChtYWludGFpbnMpCi0gICAgICAgICAgICBhIHBhcnRpY3VsYXIgYXJlYSBvZiBjb2RlLCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgIDwvbm90ZT4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSBhbHNvIGhhcyBhbgotICAgICAgICB1cHN0cmVhbSBjb250cmlidXRpb24gR2l0IHJlcG9zaXRvcnkgbmFtZWQKLSAgICAgICAgPGZpbGVuYW1lPnBva3ktY29udHJpYjwvZmlsZW5hbWU+LgotICAgICAgICBZb3UgY2FuIHNlZSBhbGwgdGhlIGJyYW5jaGVzIGluIHRoaXMgcmVwb3NpdG9yeSB1c2luZyB0aGUgd2ViIGludGVyZmFjZQotICAgICAgICBvZiB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4gb3JnYW5pemVkCi0gICAgICAgIHdpdGhpbiB0aGUgIlBva3kgU3VwcG9ydCIgYXJlYS4KLSAgICAgICAgVGhlc2UgYnJhbmNoZXMgdGVtcG9yYXJpbHkgaG9sZCBjaGFuZ2VzIHRvIHRoZSBwcm9qZWN0IHRoYXQgaGF2ZSBiZWVuCi0gICAgICAgIHN1Ym1pdHRlZCBvciBjb21taXR0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgdGVhbSBhbmQgYnkKLSAgICAgICAgY29tbXVuaXR5IG1lbWJlcnMgd2hvIGNvbnRyaWJ1dGUgdG8gdGhlIHByb2plY3QuCi0gICAgICAgIFRoZSBtYWludGFpbmVyIGRldGVybWluZXMgaWYgdGhlIGNoYW5nZXMgYXJlIHF1YWxpZmllZCB0byBiZSBtb3ZlZAotICAgICAgICBmcm9tIHRoZSAiY29udHJpYiIgYnJhbmNoZXMgaW50byB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQKLSAgICAgICAgcmVwb3NpdG9yeS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRGV2ZWxvcGVycyAoaW5jbHVkaW5nIGNvbnRyaWJ1dGluZyBjb21tdW5pdHkgbWVtYmVycykgY3JlYXRlIGFuZAotICAgICAgICBtYWludGFpbiBjbG9uZWQgcmVwb3NpdG9yaWVzIG9mIHRoZSB1cHN0cmVhbSAibWFzdGVyIiBicmFuY2guCi0gICAgICAgIFRoZSBjbG9uZWQgcmVwb3NpdG9yaWVzIGFyZSBsb2NhbCB0byB0aGVpciBkZXZlbG9wbWVudCBwbGF0Zm9ybXMgYW5kCi0gICAgICAgIGFyZSB1c2VkIHRvIGRldmVsb3AgY2hhbmdlcy4KLSAgICAgICAgV2hlbiBhIGRldmVsb3BlciBpcyBzYXRpc2ZpZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBvciBjaGFuZ2UsCi0gICAgICAgIHRoZXkgInB1c2giIHRoZSBjaGFuZ2VzIHRvIHRoZSBhcHByb3ByaWF0ZSAiY29udHJpYiIgcmVwb3NpdG9yeS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRGV2ZWxvcGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgdGhlaXIgbG9jYWwgcmVwb3NpdG9yeQotICAgICAgICB1cC10by1kYXRlIHdpdGggIm1hc3RlciIuCi0gICAgICAgIFRoZXkgYXJlIGFsc28gcmVzcG9uc2libGUgZm9yIHN0cmFpZ2h0ZW5pbmcgb3V0IGFueSBjb25mbGljdHMgdGhhdAotICAgICAgICBtaWdodCBhcmlzZSB3aXRoaW4gZmlsZXMgdGhhdCBhcmUgYmVpbmcgd29ya2VkIG9uIHNpbXVsdGFuZW91c2x5IGJ5Ci0gICAgICAgIG1vcmUgdGhhbiBvbmUgcGVyc29uLgotICAgICAgICBBbGwgdGhpcyB3b3JrIGlzIGRvbmUgbG9jYWxseSBvbiB0aGUgZGV2ZWxvcGVy4oCZcyBtYWNoaW5lIGJlZm9yZQotICAgICAgICBhbnl0aGluZyBpcyBwdXNoZWQgdG8gYSAiY29udHJpYiIgYXJlYSBhbmQgZXhhbWluZWQgYXQgdGhlIG1haW50YWluZXLigJlzCi0gICAgICAgIGxldmVsLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBBIHNvbWV3aGF0IGZvcm1hbCBtZXRob2QgZXhpc3RzIGJ5IHdoaWNoIGRldmVsb3BlcnMgY29tbWl0IGNoYW5nZXMKLSAgICAgICAgYW5kIHB1c2ggdGhlbSBpbnRvIHRoZSAiY29udHJpYiIgYXJlYSBhbmQgc3Vic2VxdWVudGx5IHJlcXVlc3QgdGhhdAotICAgICAgICB0aGUgbWFpbnRhaW5lciBpbmNsdWRlIHRoZW0gaW50byAibWFzdGVyIi4KLSAgICAgICAgVGhpcyBwcm9jZXNzIGlzIGNhbGxlZCDigJxzdWJtaXR0aW5nIGEgcGF0Y2jigJ0gb3IgInN1Ym1pdHRpbmcgYSBjaGFuZ2UuIgotICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc3VibWl0dGluZyBwYXRjaGVzIGFuZCBjaGFuZ2VzLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUbyBzdW1tYXJpemUgdGhlIGRldmVsb3BtZW50IHdvcmtmbG93OiAgYSBzaW5nbGUgcG9pbnQgb2YgZW50cnkKLSAgICAgICAgZXhpc3RzIGZvciBjaGFuZ2VzIGludG8gdGhlIHByb2plY3TigJlzICJtYXN0ZXIiIGJyYW5jaCBvZiB0aGUKLSAgICAgICAgR2l0IHJlcG9zaXRvcnksIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgdGhlIHByb2plY3TigJlzIG1haW50YWluZXIuCi0gICAgICAgIEFuZCwgYSBzZXQgb2YgZGV2ZWxvcGVycyBleGlzdCB3aG8gaW5kZXBlbmRlbnRseSBkZXZlbG9wLCB0ZXN0LCBhbmQKLSAgICAgICAgc3VibWl0IGNoYW5nZXMgdG8gImNvbnRyaWIiIGFyZWFzIGZvciB0aGUgbWFpbnRhaW5lciB0byBleGFtaW5lLgotICAgICAgICBUaGUgbWFpbnRhaW5lciB0aGVuIGNob29zZXMgd2hpY2ggY2hhbmdlcyBhcmUgZ29pbmcgdG8gYmVjb21lIGEKLSAgICAgICAgcGVybWFuZW50IHBhcnQgb2YgdGhlIHByb2plY3QuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9naXQtd29ya2Zsb3cucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iM2luIiBhbGlnbj0ibGVmdCIgc2NhbGVmaXQ9IjEiIC8+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFdoaWxlIGVhY2ggZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgaXMgdW5pcXVlLCB0aGVyZSBhcmUgc29tZSBiZXN0Ci0gICAgICAgIHByYWN0aWNlcyBvciBtZXRob2RzIHRoYXQgaGVscCBkZXZlbG9wbWVudCBydW4gc21vb3RobHkuCi0gICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgc29tZSBvZiB0aGVzZSBwcmFjdGljZXMuCi0gICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEdpdCB3b3JrZmxvd3MsIHNlZSB0aGUgd29ya2Zsb3cgdG9waWNzIGluCi0gICAgICAgIHRoZQotICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vYm9vay5naXQtc2NtLmNvbSc+R2l0IENvbW11bml0eSBCb29rPC91bGluaz4uCi0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgU21hbGwgQ2hhbmdlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEl0IGlzIGJlc3QgdG8ga2VlcCB0aGUgY2hhbmdlcyB5b3UgY29tbWl0IHNtYWxsIGFzIGNvbXBhcmVkIHRvCi0gICAgICAgICAgICAgICAgYnVuZGxpbmcgbWFueSBkaXNwYXJhdGUgY2hhbmdlcyBpbnRvIGEgc2luZ2xlIGNvbW1pdC4KLSAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIG5vdCBvbmx5IGtlZXBzIHRoaW5ncyBtYW5hZ2VhYmxlIGJ1dCBhbHNvIGFsbG93cwotICAgICAgICAgICAgICAgIHRoZSBtYWludGFpbmVyIHRvIG1vcmUgZWFzaWx5IGluY2x1ZGUgb3IgcmVmdXNlIGNoYW5nZXMuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgYWxzbyBnb29kIHByYWN0aWNlIHRvIGxlYXZlIHRoZSByZXBvc2l0b3J5IGluIGEKLSAgICAgICAgICAgICAgICBzdGF0ZSB0aGF0IGFsbG93cyB5b3UgdG8gc3RpbGwgc3VjY2Vzc2Z1bGx5IGJ1aWxkIHlvdXIgcHJvamVjdC4KLSAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgZG8gbm90IGNvbW1pdCBoYWxmIG9mIGEgZmVhdHVyZSwKLSAgICAgICAgICAgICAgICB0aGVuIGFkZCB0aGUgb3RoZXIgaGFsZiBhcyBhIHNlcGFyYXRlLCBsYXRlciBjb21taXQuCi0gICAgICAgICAgICAgICAgRWFjaCBjb21taXQgc2hvdWxkIHRha2UgeW91IGZyb20gb25lIGJ1aWxkYWJsZSBwcm9qZWN0IHN0YXRlCi0gICAgICAgICAgICAgICAgdG8gYW5vdGhlciBidWlsZGFibGUgc3RhdGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSBCcmFuY2hlcyBMaWJlcmFsbHk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBJdCBpcyB2ZXJ5IGVhc3kgdG8gY3JlYXRlLCB1c2UsIGFuZCBkZWxldGUgbG9jYWwgYnJhbmNoZXMgaW4KLSAgICAgICAgICAgICAgICB5b3VyIHdvcmtpbmcgR2l0IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBuYW1lIHRoZXNlIGJyYW5jaGVzIGFueXRoaW5nIHlvdSBsaWtlLgotICAgICAgICAgICAgICAgIEl0IGlzIGhlbHBmdWwgdG8gZ2l2ZSB0aGVtIG5hbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFydGljdWxhcgotICAgICAgICAgICAgICAgIGZlYXR1cmUgb3IgY2hhbmdlIG9uIHdoaWNoIHlvdSBhcmUgd29ya2luZy4KLSAgICAgICAgICAgICAgICBPbmNlIHlvdSBhcmUgZG9uZSB3aXRoIGEgZmVhdHVyZSBvciBjaGFuZ2UgYW5kIGhhdmUgbWVyZ2VkIGl0Ci0gICAgICAgICAgICAgICAgaW50byB5b3VyIGxvY2FsIG1hc3RlciBicmFuY2gsIHNpbXBseSBkaXNjYXJkIHRoZSB0ZW1wb3JhcnkKLSAgICAgICAgICAgICAgICBicmFuY2guCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1lcmdlIENoYW5nZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+IGNvbW1hbmQgYWxsb3dzIHlvdSB0byB0YWtlCi0gICAgICAgICAgICAgICAgdGhlIGNoYW5nZXMgZnJvbSBvbmUgYnJhbmNoIGFuZCBmb2xkIHRoZW0gaW50byBhbm90aGVyIGJyYW5jaC4KLSAgICAgICAgICAgICAgICBUaGlzIHByb2Nlc3MgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4gbW9yZSB0aGFuIGEgc2luZ2xlCi0gICAgICAgICAgICAgICAgZGV2ZWxvcGVyIG1pZ2h0IGJlIHdvcmtpbmcgb24gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBzYW1lCi0gICAgICAgICAgICAgICAgZmVhdHVyZS4KLSAgICAgICAgICAgICAgICBNZXJnaW5nIGNoYW5nZXMgYWxzbyBhdXRvbWF0aWNhbGx5IGlkZW50aWZpZXMgYW55IGNvbGxpc2lvbnMKLSAgICAgICAgICAgICAgICBvciAiY29uZmxpY3RzIiB0aGF0IG1pZ2h0IGhhcHBlbiBhcyBhIHJlc3VsdCBvZiB0aGUgc2FtZSBsaW5lcwotICAgICAgICAgICAgICAgIG9mIGNvZGUgYmVpbmcgYWx0ZXJlZCBieSB0d28gZGlmZmVyZW50IGRldmVsb3BlcnMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1hbmFnZSBCcmFuY2hlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEJlY2F1c2UgYnJhbmNoZXMgYXJlIGVhc3kgdG8gdXNlLCB5b3Ugc2hvdWxkIHVzZSBhIHN5c3RlbQotICAgICAgICAgICAgICAgIHdoZXJlIGJyYW5jaGVzIGluZGljYXRlIHZhcnlpbmcgbGV2ZWxzIG9mIGNvZGUgcmVhZGluZXNzLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIGhhdmUgYSAid29yayIgYnJhbmNoIHRvIGRldmVsb3AgaW4sIGEKLSAgICAgICAgICAgICAgICAidGVzdCIgYnJhbmNoIHdoZXJlIHRoZSBjb2RlIG9yIGNoYW5nZSBpcyB0ZXN0ZWQsIGEgInN0YWdlIgotICAgICAgICAgICAgICAgIGJyYW5jaCB3aGVyZSBjaGFuZ2VzIGFyZSByZWFkeSB0byBiZSBjb21taXR0ZWQsIGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgICAgICBBcyB5b3VyIHByb2plY3QgZGV2ZWxvcHMsIHlvdSBjYW4gbWVyZ2UgY29kZSBhY3Jvc3MgdGhlCi0gICAgICAgICAgICAgICAgYnJhbmNoZXMgdG8gcmVmbGVjdCBldmVyLWluY3JlYXNpbmcgc3RhYmxlIHN0YXRlcyBvZiB0aGUKLSAgICAgICAgICAgICAgICBkZXZlbG9wbWVudC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlIFB1c2ggYW5kIFB1bGw6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGUgcHVzaC1wdWxsIHdvcmtmbG93IGlzIGJhc2VkIG9uIHRoZSBjb25jZXB0IG9mIGRldmVsb3BlcnMKLSAgICAgICAgICAgICAgICAicHVzaGluZyIgbG9jYWwgY29tbWl0cyB0byBhIHJlbW90ZSByZXBvc2l0b3J5LCB3aGljaCBpcwotICAgICAgICAgICAgICAgIHVzdWFsbHkgYSBjb250cmlidXRpb24gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICBUaGlzIHdvcmtmbG93IGlzIGFsc28gYmFzZWQgb24gZGV2ZWxvcGVycyAicHVsbGluZyIga25vd24KLSAgICAgICAgICAgICAgICBzdGF0ZXMgb2YgdGhlIHByb2plY3QgZG93biBpbnRvIHRoZWlyIGxvY2FsIGRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgICAgIFRoZSB3b3JrZmxvdyBlYXNpbHkgYWxsb3dzIHlvdSB0byBwdWxsIGNoYW5nZXMgc3VibWl0dGVkIGJ5Ci0gICAgICAgICAgICAgICAgb3RoZXIgZGV2ZWxvcGVycyBmcm9tIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5IGludG8geW91cgotICAgICAgICAgICAgICAgIHdvcmsgYXJlYSBlbnN1cmluZyB0aGF0IHlvdSBoYXZlIHRoZSBtb3N0IHJlY2VudCBzb2Z0d2FyZQotICAgICAgICAgICAgICAgIG9uIHdoaWNoIHRvIGRldmVsb3AuCi0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaGFzIHR3byBzY3JpcHRzIG5hbWVkCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiB0aGF0IHNoaXAgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICByZWxlYXNlIHRvIGZhY2lsaXRhdGUgdGhpcyB3b3JrZmxvdy4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2Ugc2NyaXB0cyBpbiB0aGUgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGZvbGRlciBvZiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVzZSBzY3JpcHRzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3B1c2hpbmctYS1jaGFuZ2UtdXBzdHJlYW0nPlVzaW5nIFNjcmlwdHMgdG8gUHVzaCBhIENoYW5nZSBVcHN0cmVhbSBhbmQgUmVxdWVzdCBhIFB1bGw8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGF0Y2ggV29ya2Zsb3c6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGlzIHdvcmtmbG93IGFsbG93cyB5b3UgdG8gbm90aWZ5IHRoZSBtYWludGFpbmVyIHRocm91Z2ggYW4KLSAgICAgICAgICAgICAgICBlbWFpbCB0aGF0IHlvdSBoYXZlIGEgY2hhbmdlIChvciBwYXRjaCkgeW91IHdvdWxkIGxpa2UKLSAgICAgICAgICAgICAgICBjb25zaWRlcmVkIGZvciB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICBUbyBzZW5kIHRoaXMgdHlwZSBvZiBjaGFuZ2UsIHlvdSBmb3JtYXQgdGhlIHBhdGNoIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgc2VuZCB0aGUgZW1haWwgdXNpbmcgdGhlIEdpdCBjb21tYW5kcwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlc2Ugc2NyaXB0cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J2dpdCc+Ci0gICAgPHRpdGxlPkdpdDwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBHaXQsIHdoaWNoIGlzIGEKLSAgICAgICAgZnJlZSwgb3BlbiBzb3VyY2UgZGlzdHJpYnV0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbS4KLSAgICAgICAgR2l0IHN1cHBvcnRzIGRpc3RyaWJ1dGVkIGRldmVsb3BtZW50LCBub24tbGluZWFyIGRldmVsb3BtZW50LAotICAgICAgICBhbmQgY2FuIGhhbmRsZSBsYXJnZSBwcm9qZWN0cy4KLSAgICAgICAgSXQgaXMgYmVzdCB0aGF0IHlvdSBoYXZlIHNvbWUgZnVuZGFtZW50YWwgdW5kZXJzdGFuZGluZwotICAgICAgICBvZiBob3cgR2l0IHRyYWNrcyBwcm9qZWN0cyBhbmQgaG93IHRvIHdvcmsgd2l0aCBHaXQgaWYKLSAgICAgICAgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgZm9yIGRldmVsb3BtZW50LgotICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBxdWljayBvdmVydmlldyBvZiBob3cgR2l0IHdvcmtzIGFuZAotICAgICAgICBwcm92aWRlcyB5b3Ugd2l0aCBhIHN1bW1hcnkgb2Ygc29tZSBlc3NlbnRpYWwgR2l0IGNvbW1hbmRzLgotICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEdpdCwgc2VlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBkb3dubG9hZCBHaXQsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGFkZAotICAgICAgICAgICAgICAgICAgICBHaXQgdG8geW91ciBzeXN0ZW0gdGhyb3VnaCB5b3VyIGRpc3RyaWJ1dGlvbidzICJzb2Z0d2FyZQotICAgICAgICAgICAgICAgICAgICBzdG9yZSIgKGUuZy4gZm9yIFVidW50dSwgdXNlIHRoZSBVYnVudHUgU29mdHdhcmUgZmVhdHVyZSkuCi0gICAgICAgICAgICAgICAgICAgIEZvciB0aGUgR2l0IGRvd25sb2FkIHBhZ2UsIHNlZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vZG93bmxvYWQnPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlcyBiZXlvbmQgdGhlIGxpbWl0ZWQgZmV3IGluIHRoaXMgc2VjdGlvbiBvbiBob3cKLSAgICAgICAgICAgICAgICAgICAgdG8gdXNlIEdpdCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSdyZXBvc2l0b3JpZXMtdGFncy1hbmQtYnJhbmNoZXMnPgotICAgICAgICA8dGl0bGU+UmVwb3NpdG9yaWVzLCBUYWdzLCBhbmQgQnJhbmNoZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQXMgbWVudGlvbmVkIGJyaWVmbHkgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24gYW5kIGFsc28gaW4gdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nd29ya2Zsb3dzJz5Xb3JrZmxvd3M8L2xpbms+IiBzZWN0aW9uLAotICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgbWFpbnRhaW5zIHNvdXJjZSByZXBvc2l0b3JpZXMgYXQKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+PC91bGluaz4uCi0gICAgICAgICAgICBJZiB5b3UgbG9vayBhdCB0aGlzIHdlYi1pbnRlcmZhY2Ugb2YgdGhlIHJlcG9zaXRvcmllcywgZWFjaCBpdGVtCi0gICAgICAgICAgICBpcyBhIHNlcGFyYXRlIEdpdCByZXBvc2l0b3J5LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBHaXQgcmVwb3NpdG9yaWVzIHVzZSBicmFuY2hpbmcgdGVjaG5pcXVlcyB0aGF0IHRyYWNrIGNvbnRlbnQKLSAgICAgICAgICAgIGNoYW5nZSAobm90IGZpbGVzKSB3aXRoaW4gYSBwcm9qZWN0IChlLmcuIGEgbmV3IGZlYXR1cmUgb3IgdXBkYXRlZAotICAgICAgICAgICAgZG9jdW1lbnRhdGlvbikuCi0gICAgICAgICAgICBDcmVhdGluZyBhIHRyZWUtbGlrZSBzdHJ1Y3R1cmUgYmFzZWQgb24gcHJvamVjdCBkaXZlcmdlbmNlIGFsbG93cwotICAgICAgICAgICAgZm9yIGV4Y2VsbGVudCBoaXN0b3JpY2FsIGluZm9ybWF0aW9uIG92ZXIgdGhlIGxpZmUgb2YgYSBwcm9qZWN0LgotICAgICAgICAgICAgVGhpcyBtZXRob2RvbG9neSBhbHNvIGFsbG93cyBmb3IgYW4gZW52aXJvbm1lbnQgZnJvbSB3aGljaCB5b3UgY2FuCi0gICAgICAgICAgICBkbyBsb3RzIG9mIGxvY2FsIGV4cGVyaW1lbnRhdGlvbiBvbiBwcm9qZWN0cyBhcyB5b3UgZGV2ZWxvcAotICAgICAgICAgICAgY2hhbmdlcyBvciBuZXcgZmVhdHVyZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEEgR2l0IHJlcG9zaXRvcnkgcmVwcmVzZW50cyBhbGwgZGV2ZWxvcG1lbnQgZWZmb3J0cyBmb3IgYSBnaXZlbgotICAgICAgICAgICAgcHJvamVjdC4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgR2l0IHJlcG9zaXRvcnkgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBjb250YWlucwotICAgICAgICAgICAgYWxsIGNoYW5nZXMgYW5kIGRldmVsb3BtZW50cyBmb3IgUG9reSBvdmVyIHRoZSBjb3Vyc2Ugb2YgaXRzCi0gICAgICAgICAgICBlbnRpcmUgbGlmZS4KLSAgICAgICAgICAgIFRoYXQgbWVhbnMgdGhhdCBhbGwgY2hhbmdlcyB0aGF0IG1ha2UgdXAgYWxsIHJlbGVhc2VzIGFyZSBjYXB0dXJlZC4KLSAgICAgICAgICAgIFRoZSByZXBvc2l0b3J5IG1haW50YWlucyBhIGNvbXBsZXRlIGhpc3Rvcnkgb2YgY2hhbmdlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIGFueSByZXBvc2l0b3J5IGJ5ICJjbG9uaW5nIiBpdAotICAgICAgICAgICAgd2l0aCB0aGUgPGZpbGVuYW1lPmdpdCBjbG9uZTwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICBXaGVuIHlvdSBjbG9uZSBhIEdpdCByZXBvc2l0b3J5LCB5b3UgZW5kIHVwIHdpdGggYW4gaWRlbnRpY2FsCi0gICAgICAgICAgICBjb3B5IG9mIHRoZSByZXBvc2l0b3J5IG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtLgotICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBhIGxvY2FsIGNvcHkgb2YgYSByZXBvc2l0b3J5LCB5b3UgY2FuIHRha2Ugc3RlcHMgdG8KLSAgICAgICAgICAgIGRldmVsb3AgbG9jYWxseS4KLSAgICAgICAgICAgIEZvciBleGFtcGxlcyBvbiBob3cgdG8gY2xvbmUgR2l0IHJlcG9zaXRvcmllcywgc2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dvcmtpbmctd2l0aC15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+V29ya2luZyBXaXRoIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhhdCBHaXQgdHJhY2tzIGNvbnRlbnQgY2hhbmdlIGFuZAotICAgICAgICAgICAgbm90IGZpbGVzLgotICAgICAgICAgICAgR2l0IHVzZXMgImJyYW5jaGVzIiB0byBvcmdhbml6ZSBkaWZmZXJlbnQgZGV2ZWxvcG1lbnQgZWZmb3J0cy4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IGhhcwotICAgICAgICAgICAgc2V2ZXJhbCBicmFuY2hlcyB0aGF0IGluY2x1ZGUgdGhlIGN1cnJlbnQgIiZESVNUUk9fTkFNRV9OT19DQVA7IgotICAgICAgICAgICAgYnJhbmNoLCB0aGUgIm1hc3RlciIgYnJhbmNoLCBhbmQgbWFueSBicmFuY2hlcyBmb3IgcGFzdAotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlcy4KLSAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCB0aGUgYnJhbmNoZXMgYnkgZ29pbmcgdG8KLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5Lyc+PC91bGluaz4gYW5kCi0gICAgICAgICAgICBjbGlja2luZyBvbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvcG9reS9yZWZzL2hlYWRzJz5bLi4uXTwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgIGxpbmsgYmVuZWF0aCB0aGUgIkJyYW5jaCIgaGVhZGluZy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRWFjaCBvZiB0aGVzZSBicmFuY2hlcyByZXByZXNlbnRzIGEgc3BlY2lmaWMgYXJlYSBvZiBkZXZlbG9wbWVudC4KLSAgICAgICAgICAgIFRoZSAibWFzdGVyIiBicmFuY2ggcmVwcmVzZW50cyB0aGUgY3VycmVudCBvciBtb3N0IHJlY2VudAotICAgICAgICAgICAgZGV2ZWxvcG1lbnQuCi0gICAgICAgICAgICBBbGwgb3RoZXIgYnJhbmNoZXMgcmVwcmVzZW50IG9mZnNob290cyBvZiB0aGUgIm1hc3RlciIgYnJhbmNoLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIGEgR2l0IHJlcG9zaXRvcnksIHRoZSBjb3B5IGhhcwotICAgICAgICAgICAgdGhlIHNhbWUgc2V0IG9mIGJyYW5jaGVzIGFzIHRoZSBvcmlnaW5hbC4KLSAgICAgICAgICAgIFRoaXMgbWVhbnMgeW91IGNhbiB1c2UgR2l0IHRvIGNyZWF0ZSBhIGxvY2FsIHdvcmtpbmcgYXJlYQotICAgICAgICAgICAgKGFsc28gY2FsbGVkIGEgYnJhbmNoKSB0aGF0IHRyYWNrcyBhIHNwZWNpZmljIGRldmVsb3BtZW50IGJyYW5jaAotICAgICAgICAgICAgZnJvbSB0aGUgdXBzdHJlYW0gc291cmNlIEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgaW4gb3RoZXIgd29yZHMsIHlvdSBjYW4gZGVmaW5lIHlvdXIgbG9jYWwgR2l0IGVudmlyb25tZW50IHRvCi0gICAgICAgICAgICB3b3JrIG9uIGFueSBkZXZlbG9wbWVudCBicmFuY2ggaW4gdGhlIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBUbyBoZWxwIGlsbHVzdHJhdGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSBHaXQgY29tbWFuZHM6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgfgotICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5Ci0gICAgICQgY2QgcG9reQotICAgICAkIGdpdCBjaGVja291dCAtYiAmRElTVFJPX05BTUVfTk9fQ0FQOyBvcmlnaW4vJkRJU1RST19OQU1FX05PX0NBUDsKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlIGFmdGVyIG1vdmluZyB0byB0aGUgaG9tZSBkaXJlY3RvcnksIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBjbG9uZTwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcyBhCi0gICAgICAgICAgICBsb2NhbCBjb3B5IG9mIHRoZSB1cHN0cmVhbSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgR2l0IGNoZWNrcyBvdXQgdGhlICJtYXN0ZXIiIGJyYW5jaCBmb3IgeW91ciB3b3JrLgotICAgICAgICAgICAgQWZ0ZXIgY2hhbmdpbmcgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBuZXcgbG9jYWwgcmVwb3NpdG9yeQotICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiksIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBjaGVja291dDwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcwotICAgICAgICAgICAgYW5kIGNoZWNrcyBvdXQgYSBsb2NhbCBicmFuY2ggbmFtZWQgIiZESVNUUk9fTkFNRV9OT19DQVA7Iiwgd2hpY2gKLSAgICAgICAgICAgIHRyYWNrcyB0aGUgdXBzdHJlYW0gIm9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOyIgYnJhbmNoLgotICAgICAgICAgICAgQ2hhbmdlcyB5b3UgbWFrZSB3aGlsZSBpbiB0aGlzIGJyYW5jaCB3b3VsZCB1bHRpbWF0ZWx5IGFmZmVjdAotICAgICAgICAgICAgdGhlIHVwc3RyZWFtICImRElTVFJPX05BTUVfTk9fQ0FQOyIgYnJhbmNoIG9mIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHdoZW4geW91IGNyZWF0ZSBhbmQgY2hlY2tvdXQgYQotICAgICAgICAgICAgbG9jYWwgd29ya2luZyBicmFuY2ggYmFzZWQgb24gYSBicmFuY2ggbmFtZSwKLSAgICAgICAgICAgIHlvdXIgbG9jYWwgZW52aXJvbm1lbnQgbWF0Y2hlcyB0aGUgInRpcCIgb2YgdGhhdCBwYXJ0aWN1bGFyCi0gICAgICAgICAgICBkZXZlbG9wbWVudCBicmFuY2ggYXQgdGhlIHRpbWUgeW91IGNyZWF0ZWQgeW91ciBsb2NhbCBicmFuY2gsCi0gICAgICAgICAgICB3aGljaCBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgZmlsZXMgaW4gdGhlICJtYXN0ZXIiIGJyYW5jaAotICAgICAgICAgICAgb2YgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgY3JlYXRpbmcgYW5kIGNoZWNraW5nIG91dCBhIGxvY2FsIGJyYW5jaCBiYXNlZCBvbgotICAgICAgICAgICAgdGhlICImRElTVFJPX05BTUVfTk9fQ0FQOyIgYnJhbmNoIG5hbWUgaXMgbm90IHRoZSBzYW1lIGFzCi0gICAgICAgICAgICBjbG9uaW5nIGFuZCBjaGVja2luZyBvdXQgdGhlICJtYXN0ZXIiIGJyYW5jaCBpZiB0aGUgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIEtlZXAgcmVhZGluZyB0byBzZWUgaG93IHlvdSBjcmVhdGUgYSBsb2NhbCBzbmFwc2hvdCBvZiBhIFlvY3RvCi0gICAgICAgICAgICBQcm9qZWN0IFJlbGVhc2UuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEdpdCB1c2VzICJ0YWdzIiB0byBtYXJrIHNwZWNpZmljIGNoYW5nZXMgaW4gYSByZXBvc2l0b3J5LgotICAgICAgICAgICAgVHlwaWNhbGx5LCBhIHRhZyBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWFsIHBvaW50IHN1Y2ggYXMgdGhlIGZpbmFsCi0gICAgICAgICAgICBjaGFuZ2UgYmVmb3JlIGEgcHJvamVjdCBpcyByZWxlYXNlZC4KLSAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSB0YWdzIHVzZWQgd2l0aCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKLSAgICAgICAgICAgIHJlcG9zaXRvcnkgYnkgZ29pbmcgdG8KLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5Lyc+PC91bGluaz4gYW5kCi0gICAgICAgICAgICBjbGlja2luZyBvbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvcG9reS9yZWZzL3RhZ3MnPlsuLi5dPC91bGluaz48L2ZpbGVuYW1lPgotICAgICAgICAgICAgbGluayBiZW5lYXRoIHRoZSAiVGFnIiBoZWFkaW5nLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTb21lIGtleSB0YWdzIGZvciB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBhcmUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5qZXRocm8tMTQuMC4zPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bW9ydHktMTYuMC4xPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cHlyby0xNy4wLjA8L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICA8ZmlsZW5hbWU+JkRJU1RST19OQU1FX05PX0NBUDstJlBPS1lWRVJTSU9OOzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgVGhlc2UgdGFncyByZXByZXNlbnQgWW9jdG8gUHJvamVjdCByZWxlYXNlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIGEgbG9jYWwgY29weSBvZiB0aGUgR2l0IHJlcG9zaXRvcnksIHlvdSBhbHNvCi0gICAgICAgICAgICBoYXZlIGFjY2VzcyB0byBhbGwgdGhlIHRhZ3MgaW4gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBTaW1pbGFyIHRvIGJyYW5jaGVzLCB5b3UgY2FuIGNyZWF0ZSBhbmQgY2hlY2tvdXQgYSBsb2NhbCB3b3JraW5nCi0gICAgICAgICAgICBHaXQgYnJhbmNoIGJhc2VkIG9uIGEgdGFnIG5hbWUuCi0gICAgICAgICAgICBXaGVuIHlvdSBkbyB0aGlzLCB5b3UgZ2V0IGEgc25hcHNob3Qgb2YgdGhlIEdpdCByZXBvc2l0b3J5IHRoYXQKLSAgICAgICAgICAgIHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiB0aGUgZmlsZXMgd2hlbiB0aGUgY2hhbmdlIHdhcyBtYWRlIGFzc29jaWF0ZWQKLSAgICAgICAgICAgIHdpdGggdGhhdCB0YWcuCi0gICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdXNlIGlzIHRvIGNoZWNrb3V0IGEgd29ya2luZyBicmFuY2ggdGhhdCBtYXRjaGVzCi0gICAgICAgICAgICBhIHNwZWNpZmljIFlvY3RvIFByb2plY3QgcmVsZWFzZS4KLSAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+Ci0gICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKLSAgICAgJCBjZCBwb2t5Ci0gICAgICQgZ2l0IGZldGNoIC0tYWxsIC0tdGFncyAtLXBydW5lCi0gICAgICQgZ2l0IGNoZWNrb3V0IHRhZ3MvcHlyby0xNy4wLjAgLWIgbXktcHlyby0xNy4wLjAKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIG5hbWUgb2YgdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgeW91cgotICAgICAgICAgICAgbG9jYWwgWW9jdG8gUHJvamVjdCByZXBvc2l0b3J5IGlzIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICBBZnRlciBtb3ZpbmcgdG8gdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gZGlyZWN0b3J5LCB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZmV0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kIG1ha2VzIGFsbCB0aGUgdXBzdHJlYW0KLSAgICAgICAgICAgIHRhZ3MgYXZhaWxhYmxlIGxvY2FsbHkgaW4geW91ciByZXBvc2l0b3J5LgotICAgICAgICAgICAgRmluYWxseSwgdGhlIDxmaWxlbmFtZT5naXQgY2hlY2tvdXQ8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICBjcmVhdGVzIGFuZCBjaGVja3Mgb3V0IGEgYnJhbmNoIG5hbWVkICJteS1weXJvLTE3LjAuMCIgdGhhdCBpcwotICAgICAgICAgICAgYmFzZWQgb24gdGhlIHNwZWNpZmljIGNoYW5nZSB1cHN0cmVhbSBpbiB0aGUgcmVwb3NpdG9yeQotICAgICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSAicHlyby0xNy4wLjAiIHRhZy4KLSAgICAgICAgICAgIFRoZSBmaWxlcyBpbiB5b3VyIHJlcG9zaXRvcnkgbm93IGV4YWN0bHkgbWF0Y2ggdGhhdCBwYXJ0aWN1bGFyCi0gICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UgYXMgaXQgaXMgdGFnZ2VkIGluIHRoZSB1cHN0cmVhbSBHaXQKLSAgICAgICAgICAgIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHdoZW4geW91IGNyZWF0ZSBhbmQKLSAgICAgICAgICAgIGNoZWNrb3V0IGEgbG9jYWwgd29ya2luZyBicmFuY2ggYmFzZWQgb24gYSB0YWcsIHlvdXIgZW52aXJvbm1lbnQKLSAgICAgICAgICAgIG1hdGNoZXMgYSBzcGVjaWZpYyBwb2ludCBpbiB0aW1lIGFuZCBub3QgdGhlIGVudGlyZSBkZXZlbG9wbWVudAotICAgICAgICAgICAgYnJhbmNoIChpLmUuIHRoZSAidGlwIiBvZiB0aGUgYnJhbmNoKS4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdiYXNpYy1jb21tYW5kcyc+Ci0gICAgICAgIDx0aXRsZT5CYXNpYyBDb21tYW5kczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBHaXQgaGFzIGFuIGV4dGVuc2l2ZSBzZXQgb2YgY29tbWFuZHMgdGhhdCBsZXRzIHlvdSBtYW5hZ2UgY2hhbmdlcwotICAgICAgICAgICAgYW5kIHBlcmZvcm0gY29sbGFib3JhdGlvbiBvdmVyIHRoZSBsaWZlIG9mIGEgcHJvamVjdC4KLSAgICAgICAgICAgIENvbnZlbmllbnRseSB0aG91Z2gsIHlvdSBjYW4gbWFuYWdlIHdpdGggYSBzbWFsbCBzZXQgb2YgYmFzaWMKLSAgICAgICAgICAgIG9wZXJhdGlvbnMgYW5kIHdvcmtmbG93cyBvbmNlIHlvdSB1bmRlcnN0YW5kIHRoZSBiYXNpYwotICAgICAgICAgICAgcGhpbG9zb3BoeSBiZWhpbmQgR2l0LgotICAgICAgICAgICAgWW91IGRvIG5vdCBoYXZlIHRvIGJlIGFuIGV4cGVydCBpbiBHaXQgdG8gYmUgZnVuY3Rpb25hbC4KLSAgICAgICAgICAgIEEgZ29vZCBwbGFjZSB0byBsb29rIGZvciBpbnN0cnVjdGlvbiBvbiBhIG1pbmltYWwgc2V0IG9mIEdpdAotICAgICAgICAgICAgY29tbWFuZHMgaXMKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz5oZXJlPC91bGluaz4uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIHlvdSBkbyBub3Qga25vdyBtdWNoIGFib3V0IEdpdCwgeW91IHNob3VsZCBlZHVjYXRlCi0gICAgICAgICAgICB5b3Vyc2VsZiBieSB2aXNpdGluZyB0aGUgbGlua3MgcHJldmlvdXNseSBtZW50aW9uZWQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBvZiBHaXQgY29tbWFuZHMgYnJpZWZseSBkZXNjcmliZXMgc29tZSBiYXNpYwotICAgICAgICAgICAgR2l0IG9wZXJhdGlvbnMgYXMgYSB3YXkgdG8gZ2V0IHN0YXJ0ZWQuCi0gICAgICAgICAgICBBcyB3aXRoIGFueSBzZXQgb2YgY29tbWFuZHMsIHRoaXMgbGlzdCAoaW4gbW9zdCBjYXNlcykgc2ltcGx5IHNob3dzCi0gICAgICAgICAgICB0aGUgYmFzZSBjb21tYW5kIGFuZCBvbWl0cyB0aGUgbWFueSBhcmd1bWVudHMgdGhleSBzdXBwb3J0LgotICAgICAgICAgICAgU2VlIHRoZSBHaXQgZG9jdW1lbnRhdGlvbiBmb3IgY29tcGxldGUgZGVzY3JpcHRpb25zIGFuZCBzdHJhdGVnaWVzCi0gICAgICAgICAgICBvbiBob3cgdG8gdXNlIHRoZXNlIGNvbW1hbmRzOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGluaXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplcyBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgR2l0IGNvbW1hbmRzIHVubGVzcyB5b3UgaGF2ZSBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uZ2l0PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdnaXQtY29tbWFuZHMtY2xvbmUnPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjbG9uZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYSBsb2NhbCBjbG9uZSBvZiBhIEdpdCByZXBvc2l0b3J5IHRoYXQgaXMgb24KLSAgICAgICAgICAgICAgICAgICAgZXF1YWwgZm9vdGluZyB3aXRoIGEgZmVsbG93IGRldmVsb3BlcuKAmXMgR2l0IHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICAgICAgb3IgYW4gdXBzdHJlYW0gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBhZGQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBMb2NhbGx5IHN0YWdlcyB1cGRhdGVkIGZpbGUgY29udGVudHMgdG8gdGhlIGluZGV4IHRoYXQKLSAgICAgICAgICAgICAgICAgICAgR2l0IHVzZXMgdG8gdHJhY2sgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc3RhZ2UgYWxsIGZpbGVzIHRoYXQgaGF2ZSBjaGFuZ2VkIGJlZm9yZSB5b3UKLSAgICAgICAgICAgICAgICAgICAgY2FuIGNvbW1pdCB0aGVtLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGNvbW1pdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYSBsb2NhbCAiY29tbWl0IiB0aGF0IGRvY3VtZW50cyB0aGUgY2hhbmdlcyB5b3UKLSAgICAgICAgICAgICAgICAgICAgbWFkZS4KLSAgICAgICAgICAgICAgICAgICAgT25seSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIHN0YWdlZCBjYW4gYmUgY29tbWl0dGVkLgotICAgICAgICAgICAgICAgICAgICBDb21taXRzIGFyZSB1c2VkIGZvciBoaXN0b3JpY2FsIHB1cnBvc2VzLCBmb3IgZGV0ZXJtaW5pbmcKLSAgICAgICAgICAgICAgICAgICAgaWYgYSBtYWludGFpbmVyIG9mIGEgcHJvamVjdCB3aWxsIGFsbG93IHRoZSBjaGFuZ2UsCi0gICAgICAgICAgICAgICAgICAgIGFuZCBmb3IgdWx0aW1hdGVseSBwdXNoaW5nIHRoZSBjaGFuZ2UgZnJvbSB5b3VyIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5IGludG8gdGhlIHByb2plY3TigJlzIHVwc3RyZWFtIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgc3RhdHVzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgUmVwb3J0cyBhbnkgbW9kaWZpZWQgZmlsZXMgdGhhdCBwb3NzaWJseSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgIHN0YWdlZCBhbmQgZ2l2ZXMgeW91IGEgc3RhdHVzIG9mIHdoZXJlIHlvdSBzdGFuZCByZWdhcmRpbmcKLSAgICAgICAgICAgICAgICAgICAgbG9jYWwgY29tbWl0cyBhcyBjb21wYXJlZCB0byB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVja291dDwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5icmFuY2gtbmFtZTwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENoYW5nZXMgeW91ciB3b3JraW5nIGJyYW5jaC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIGFuYWxvZ291cyB0byAiY2QiLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY2hlY2tvdXQg4oCTYjwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT53b3JraW5nLWJyYW5jaDwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYW5kIGNoZWNrcyBvdXQgYSB3b3JraW5nIGJyYW5jaCBvbiB5b3VyIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgdGhhdCB5b3UgY2FuIHVzZSB0byBpc29sYXRlIHlvdXIgd29yay4KLSAgICAgICAgICAgICAgICAgICAgSXQgaXMgYSBnb29kIGlkZWEgdG8gdXNlIGxvY2FsIGJyYW5jaGVzIHdoZW4gYWRkaW5nCi0gICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIGZlYXR1cmVzIG9yIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgIFVzaW5nIGlzb2xhdGVkIGJyYW5jaGVzIGZhY2lsaXRhdGVzIGVhc3kgcmVtb3ZhbCBvZgotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIGlmIHRoZXkgZG8gbm90IHdvcmsgb3V0LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgYnJhbmNoPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRGlzcGxheXMgdGhlIGV4aXN0aW5nIGxvY2FsIGJyYW5jaGVzIGFzc29jaWF0ZWQgd2l0aCB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGxvY2FsIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBicmFuY2ggdGhhdCB5b3UgaGF2ZSBjdXJyZW50bHkgY2hlY2tlZCBvdXQgaXMgbm90ZWQKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBhbiBhc3RlcmlzayBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgYnJhbmNoIC1EPC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPmJyYW5jaC1uYW1lPC9yZXBsYWNlYWJsZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRGVsZXRlcyBhbiBleGlzdGluZyBsb2NhbCBicmFuY2guCi0gICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIGluIGEgbG9jYWwgYnJhbmNoIG90aGVyIHRoYW4gdGhlIG9uZSB5b3UKLSAgICAgICAgICAgICAgICAgICAgYXJlIGRlbGV0aW5nIGluIG9yZGVyIHRvIGRlbGV0ZQotICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnJhbmNoLW5hbWU8L3JlcGxhY2VhYmxlPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBwdWxsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgUmV0cmlldmVzIGluZm9ybWF0aW9uIGZyb20gYW4gdXBzdHJlYW0gR2l0IHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICAgICAgYW5kIHBsYWNlcyBpdCBpbiB5b3VyIGxvY2FsIEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICBZb3UgdXNlIHRoaXMgY29tbWFuZCB0byBtYWtlIHN1cmUgeW91IGFyZSBzeW5jaHJvbml6ZWQgd2l0aAotICAgICAgICAgICAgICAgICAgICB0aGUgcmVwb3NpdG9yeSBmcm9tIHdoaWNoIHlvdSBhcmUgYmFzaW5nIGNoYW5nZXMKLSAgICAgICAgICAgICAgICAgICAgKC5lLmcuIHRoZSAibWFzdGVyIiBicmFuY2gpLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHB1c2g8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTZW5kcyBhbGwgeW91ciBjb21taXR0ZWQgbG9jYWwgY2hhbmdlcyB0byB0aGUgdXBzdHJlYW0gR2l0Ci0gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgdGhhdCB5b3VyIGxvY2FsIHJlcG9zaXRvcnkgaXMgdHJhY2tpbmcKLSAgICAgICAgICAgICAgICAgICAgKGUuZy4gYSBjb250cmlidXRpb24gcmVwb3NpdG9yeSkuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBtYWludGFpbmVyIG9mIHRoZSBwcm9qZWN0IGRyYXdzIGZyb20gdGhlc2UgcmVwb3NpdG9yaWVzCi0gICAgICAgICAgICAgICAgICAgIHRvIG1lcmdlIGNoYW5nZXMgKGNvbW1pdHMpIGludG8gdGhlIGFwcHJvcHJpYXRlIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICBvZiBwcm9qZWN0J3MgdXBzdHJlYW0gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENvbWJpbmVzIG9yIGFkZHMgY2hhbmdlcyBmcm9tIG9uZQotICAgICAgICAgICAgICAgICAgICBsb2NhbCBicmFuY2ggb2YgeW91ciByZXBvc2l0b3J5IHdpdGggYW5vdGhlciBicmFuY2guCi0gICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIEdpdCByZXBvc2l0b3J5LCB0aGUgZGVmYXVsdCBicmFuY2gKLSAgICAgICAgICAgICAgICAgICAgaXMgbmFtZWQgIm1hc3RlciIuCi0gICAgICAgICAgICAgICAgICAgIEEgdHlwaWNhbCB3b3JrZmxvdyBpcyB0byBjcmVhdGUgYSB0ZW1wb3JhcnkgYnJhbmNoIHRoYXQgaXMKLSAgICAgICAgICAgICAgICAgICAgYmFzZWQgb2ZmICJtYXN0ZXIiIHRoYXQgeW91IHdvdWxkIHVzZSBmb3IgaXNvbGF0ZWQgd29yay4KLSAgICAgICAgICAgICAgICAgICAgWW91IHdvdWxkIG1ha2UgeW91ciBjaGFuZ2VzIGluIHRoYXQgaXNvbGF0ZWQgYnJhbmNoLAotICAgICAgICAgICAgICAgICAgICBzdGFnZSBhbmQgY29tbWl0IHRoZW0gbG9jYWxseSwgc3dpdGNoIHRvIHRoZSAibWFzdGVyIgotICAgICAgICAgICAgICAgICAgICBicmFuY2gsIGFuZCB0aGVuIHVzZSB0aGUgPGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gYXBwbHkgdGhlIGNoYW5nZXMgZnJvbSB5b3VyIGlzb2xhdGVkIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBjdXJyZW50bHkgY2hlY2tlZCBvdXQgYnJhbmNoIChlLmcuICJtYXN0ZXIiKS4KLSAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIG1lcmdlIGlzIGNvbXBsZXRlIGFuZCBpZiB5b3UgYXJlIGRvbmUgd2l0aAotICAgICAgICAgICAgICAgICAgICB3b3JraW5nIGluIHRoYXQgaXNvbGF0ZWQgYnJhbmNoLCB5b3UgY2FuIHNhZmVseSBkZWxldGUKLSAgICAgICAgICAgICAgICAgICAgdGhlIGlzb2xhdGVkIGJyYW5jaC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVycnktcGljazwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENob29zZSBhbmQgYXBwbHkgc3BlY2lmaWMgY29tbWl0cyBmcm9tIG9uZSBicmFuY2gKLSAgICAgICAgICAgICAgICAgICAgaW50byBhbm90aGVyIGJyYW5jaC4KLSAgICAgICAgICAgICAgICAgICAgVGhlcmUgYXJlIHRpbWVzIHdoZW4geW91IG1pZ2h0IG5vdCBiZSBhYmxlIHRvIG1lcmdlCi0gICAgICAgICAgICAgICAgICAgIGFsbCB0aGUgY2hhbmdlcyBpbiBvbmUgYnJhbmNoIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgYW5vdGhlciBidXQgbmVlZCB0byBwaWNrIG91dCBjZXJ0YWluIG9uZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXRrPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgYSBHVUkgdmlldyBvZiB0aGUgYnJhbmNoZXMgYW5kIGNoYW5nZXMgaW4geW91cgotICAgICAgICAgICAgICAgICAgICBsb2NhbCBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIGEgZ29vZCB3YXkgdG8gZ3JhcGhpY2FsbHkgc2VlIHdoZXJlIHRoaW5ncwotICAgICAgICAgICAgICAgICAgICBoYXZlIGRpdmVyZ2VkIGluIHlvdXIgbG9jYWwgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBpbnN0YWxsIHRoZSA8ZmlsZW5hbWU+Z2l0azwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtIHRvIHVzZSB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgbG9nPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgUmVwb3J0cyBhIGhpc3Rvcnkgb2YgeW91ciBjb21taXRzIHRvIHRoZSByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICBUaGlzIHJlcG9ydCBsaXN0cyBhbGwgY29tbWl0cyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgeW91Ci0gICAgICAgICAgICAgICAgICAgIGhhdmUgcHVzaGVkIHRoZW0gdXBzdHJlYW0gb3Igbm90LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGRpZmY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBEaXNwbGF5cyBsaW5lLWJ5LWxpbmUgZGlmZmVyZW5jZXMgYmV0d2VlbiBhIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgZmlsZSBhbmQgdGhlIHNhbWUgZmlsZSBhcyB1bmRlcnN0b29kIGJ5IEdpdC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIHVzZWZ1bCB0byBzZWUgd2hhdCB5b3UgaGF2ZSBjaGFuZ2VkCi0gICAgICAgICAgICAgICAgICAgIGluIGFueSBnaXZlbiBmaWxlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPgotICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gbWFpbnRhaW5zIGNvbXBsZXRlIHNvdXJjZSByZXBvc2l0b3JpZXMgZm9yIGFsbAotICAgICAgICBZb2N0byBQcm9qZWN0IGZpbGVzIGF0Ci0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpJz48L3VsaW5rPi4KLSAgICAgICAgVGhpcyB3ZWItYmFzZWQgc291cmNlIGNvZGUgYnJvd3NlciBpcyBvcmdhbml6ZWQgaW50byBjYXRlZ29yaWVzIGJ5Ci0gICAgICAgIGZ1bmN0aW9uIHN1Y2ggYXMgSURFIFBsdWdpbnMsIE1hdGNoYm94LCBQb2t5LCBZb2N0byBMaW51eCBLZXJuZWwsIGFuZAotICAgICAgICBzbyBmb3J0aC4KLSAgICAgICAgRnJvbSB0aGUgaW50ZXJmYWNlLCB5b3UgY2FuIGNsaWNrIG9uIGFueSBwYXJ0aWN1bGFyIGl0ZW0gaW4gdGhlICJOYW1lIgotICAgICAgICBjb2x1bW4gYW5kIHNlZSB0aGUgVVJMIGF0IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UgdGhhdCB5b3UgbmVlZCB0byBjbG9uZQotICAgICAgICBhIEdpdCByZXBvc2l0b3J5IGZvciB0aGF0IHBhcnRpY3VsYXIgaXRlbS4KLSAgICAgICAgSGF2aW5nIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgb2YgdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LCB3aGljaCBpcwotICAgICAgICB1c3VhbGx5IG5hbWVkICJwb2t5IiwgYWxsb3dzCi0gICAgICAgIHlvdSB0byBtYWtlIGNoYW5nZXMsIGNvbnRyaWJ1dGUgdG8gdGhlIGhpc3RvcnksIGFuZCB1bHRpbWF0ZWx5IGVuaGFuY2UKLSAgICAgICAgdGhlIFlvY3RvIFByb2plY3QncyB0b29scywgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcywgYW5kIHNvIGZvcnRoLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb3IgYW55IHN1cHBvcnRlZCByZWxlYXNlIG9mIFlvY3RvIFByb2plY3QsIHlvdSBjYW4gYWxzbyBnbyB0byB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4gYW5kCi0gICAgICAgIHNlbGVjdCB0aGUgIkRvd25sb2FkcyIgdGFiIGFuZCBnZXQgYSByZWxlYXNlZCB0YXJiYWxsIG9mIHRoZQotICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgb3IgYW55IHN1cHBvcnRlZCBCU1AgdGFyYmFsbHMuCi0gICAgICAgIFVucGFja2luZyB0aGVzZSB0YXJiYWxscyBnaXZlcyB5b3UgYSBzbmFwc2hvdCBvZiB0aGUgcmVsZWFzZWQKLSAgICAgICAgZmlsZXMuCi0gICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHJlY29tbWVuZGVkIG1ldGhvZCBmb3Igc2V0dGluZyB1cCB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGZpbGVzIGZvciBzdXBwb3J0ZWQgQlNQcwotICAgICAgICAgICAgICAgICAgICAoZS5nLiwgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPikgaXMgdG8gdXNlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPiB0byBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mCi0gICAgICAgICAgICAgICAgICAgIHRoZSB1cHN0cmVhbSByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBhbHdheXMgd29yayBpbiBtYXRjaGluZyBicmFuY2hlcyBmb3IgYm90aAotICAgICAgICAgICAgICAgICAgICB0aGUgc2VsZWN0ZWQgQlNQIHJlcG9zaXRvcnkgYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgY2hlY2tlZCBvdXQgdGhlICJtYXN0ZXIiIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGFuZCB5b3UgYXJlIGdvaW5nIHRvIHVzZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+LCBiZSBzdXJlIHRvIGNoZWNrb3V0IHRoZQotICAgICAgICAgICAgICAgICAgICAibWFzdGVyIiBicmFuY2ggb2YgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBJbiBzdW1tYXJ5LCBoZXJlIGlzIHdoZXJlIHlvdSBjYW4gZ2V0IHRoZSBwcm9qZWN0IGZpbGVzIG5lZWRlZCBmb3IKLSAgICAgICAgZGV2ZWxvcG1lbnQ6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J3NvdXJjZS1yZXBvc2l0b3JpZXMnPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaSc+U291cmNlIFJlcG9zaXRvcmllczo8L3VsaW5rPgotICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhpcyBhcmVhIGNvbnRhaW5zIElERSBQbHVnaW5zLCBNYXRjaGJveCwgUG9reSwgUG9reSBTdXBwb3J0LAotICAgICAgICAgICAgICAgIFRvb2xzLCBZb2N0byBMaW51eCBLZXJuZWwsIGFuZCBZb2N0byBNZXRhZGF0YSBMYXllcnMuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgbG9jYWwgY29waWVzIG9mIEdpdCByZXBvc2l0b3JpZXMgZm9yIGVhY2ggb2YKLSAgICAgICAgICAgICAgICB0aGVzZSBhcmVhcy48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjRpbiIgLz4KLSAgICAgICAgICAgICAgICBGb3Igc3RlcHMgb24gaG93IHRvIHZpZXcgYW5kIGFjY2VzcyB0aGVzZSB1cHN0cmVhbSBHaXQKLSAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYWNjZXNzaW5nLXNvdXJjZS1yZXBvc2l0b3JpZXMnPkFjY2Vzc2luZyBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgU2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGFuY2hvciBpZD0naW5kZXgtZG93bmxvYWRzJyAvPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy8nPkluZGV4IG9mIC9yZWxlYXNlczo8L3VsaW5rPgotICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhpcyBpcyBhbiBpbmRleCBvZiByZWxlYXNlcyBzdWNoIGFzCi0gICAgICAgICAgICAgICAgdGhlIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+Ci0gICAgICAgICAgICAgICAgWW9jdG8gUGx1Zy1pbiwgbWlzY2VsbGFuZW91cyBzdXBwb3J0LCBQb2t5LCBQc2V1ZG8sIGluc3RhbGxlcnMKLSAgICAgICAgICAgICAgICBmb3IgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucywgYW5kIGFsbCByZWxlYXNlZCB2ZXJzaW9ucyBvZgotICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgaW4gdGhlIGZvcm0gb2YgaW1hZ2VzIG9yIHRhcmJhbGxzLgotICAgICAgICAgICAgICAgIERvd25sb2FkaW5nIGFuZCBleHRyYWN0aW5nIHRoZXNlIGZpbGVzIGRvZXMgbm90IHByb2R1Y2UgYSBsb2NhbAotICAgICAgICAgICAgICAgIGNvcHkgb2YgdGhlIEdpdCByZXBvc2l0b3J5IGJ1dCByYXRoZXIgYSBzbmFwc2hvdCBvZiBhCi0gICAgICAgICAgICAgICAgcGFydGljdWxhciByZWxlYXNlIG9yIGltYWdlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iMy41aW4iIC8+Ci0gICAgICAgICAgICAgICAgRm9yIHN0ZXBzIG9uIGhvdyB0byB2aWV3IGFuZCBhY2Nlc3MgdGhlc2UgZmlsZXMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYWNjZXNzaW5nLWluZGV4LW9mLXJlbGVhc2VzJz5BY2Nlc3NpbmcgSW5kZXggb2YgUmVsZWFzZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZG93bmxvYWRzLXBhZ2UnPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4iRG93bmxvYWRzIiBwYWdlIGZvciB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPjoKLSAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9IndyaXRlcm5vdGVzIj5UaGlzIHNlY3Rpb24gd2lsbCBjaGFuZ2UgZHVlIHRvCi0gICAgICAgICAgICAgICAgcmV3b3JraW5nIG9mIHRoZSBZUCBXZWJzaXRlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGUgaW5jbHVkZXMgYSAiRG93bmxvYWRzIiB0YWIKLSAgICAgICAgICAgICAgICB0aGF0IGFsbG93cyB5b3UgdG8gZG93bmxvYWQgYW55IFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICByZWxlYXNlIGFuZCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgaW4gdGFyYmFsbCBmb3JtLgotICAgICAgICAgICAgICAgIFRoZSB0YXJiYWxscyBhcmUgc2ltaWxhciB0byB0aG9zZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy8nPkluZGV4IG9mIC9yZWxlYXNlczo8L3VsaW5rPiBhcmVhLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy95cC1kb3dubG9hZC5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSI0aW4iIC8+Ci0gICAgICAgICAgICAgICAgRm9yIHN0ZXBzIG9uIGhvdyB0byB1c2UgdGhlICJEb3dubG9hZHMiIHBhZ2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctdGhlLWRvd25sb2Fkcy1wYWdlJz5Vc2luZyB0aGUgRG93bmxvYWRzIFBhZ2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nbGljZW5zaW5nJz4KLSAgICA8dGl0bGU+TGljZW5zaW5nPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBCZWNhdXNlIG9wZW4gc291cmNlIHByb2plY3RzIGFyZSBvcGVuIHRvIHRoZSBwdWJsaWMsIHRoZXkgaGF2ZQotICAgICAgICBkaWZmZXJlbnQgbGljZW5zaW5nIHN0cnVjdHVyZXMgaW4gcGxhY2UuCi0gICAgICAgIExpY2Vuc2UgZXZvbHV0aW9uIGZvciBib3RoIE9wZW4gU291cmNlIGFuZCBGcmVlIFNvZnR3YXJlIGhhcyBhbgotICAgICAgICBpbnRlcmVzdGluZyBoaXN0b3J5LgotICAgICAgICBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gdGhpcyBoaXN0b3J5LCB5b3UgY2FuIGZpbmQgYmFzaWMgaW5mb3JtYXRpb24KLSAgICAgICAgaGVyZToKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZW4tc291cmNlX2xpY2Vuc2UnPk9wZW4gc291cmNlIGxpY2Vuc2UgaGlzdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmVlX3NvZnR3YXJlX2xpY2Vuc2UnPkZyZWUgc29mdHdhcmUgbGljZW5zZSBoaXN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEluIGdlbmVyYWwsIHRoZSBZb2N0byBQcm9qZWN0IGlzIGJyb2FkbHkgbGljZW5zZWQgdW5kZXIgdGhlCi0gICAgICAgIE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kgKE1JVCkgTGljZW5zZS4KLSAgICAgICAgTUlUIGxpY2Vuc2luZyBwZXJtaXRzIHRoZSByZXVzZSBvZiBzb2Z0d2FyZSB3aXRoaW4gcHJvcHJpZXRhcnkKLSAgICAgICAgc29mdHdhcmUgYXMgbG9uZyBhcyB0aGUgbGljZW5zZSBpcyBkaXN0cmlidXRlZCB3aXRoIHRoYXQgc29mdHdhcmUuCi0gICAgICAgIE1JVCBpcyBhbHNvIGNvbXBhdGlibGUgd2l0aCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkuCi0gICAgICAgIFBhdGNoZXMgdG8gdGhlIFlvY3RvIFByb2plY3QgZm9sbG93IHRoZSB1cHN0cmVhbSBsaWNlbnNpbmcgc2NoZW1lLgotICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gdGhlIE1JVCBsaWNlbnNlCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwJz5oZXJlPC91bGluaz4uCi0gICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBvbiB0aGUgR05VIEdQTAotICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wJz5oZXJlPC91bGluaz4uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFdoZW4geW91IGJ1aWxkIGFuIGltYWdlIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LCB0aGUgYnVpbGQgcHJvY2VzcwotICAgICAgICB1c2VzIGEga25vd24gbGlzdCBvZiBsaWNlbnNlcyB0byBlbnN1cmUgY29tcGxpYW5jZS4KLSAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgbGlzdCBpbiB0aGUKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4gYXQKLSAgICAgICAgPGZpbGVuYW1lPm1ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4uCi0gICAgICAgIE9uY2UgdGhlIGJ1aWxkIGNvbXBsZXRlcywgdGhlIGxpc3Qgb2YgYWxsIGxpY2Vuc2VzIGZvdW5kIGFuZCB1c2VkCi0gICAgICAgIGR1cmluZyB0aGF0IGJ1aWxkIGFyZSBrZXB0IGluIHRoZQotICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgYXQgPGZpbGVuYW1lPnRtcC9kZXBsb3kvbGljZW5zZXM8L2ZpbGVuYW1lPi4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgSWYgYSBtb2R1bGUgcmVxdWlyZXMgYSBsaWNlbnNlIHRoYXQgaXMgbm90IGluIHRoZSBiYXNlIGxpc3QsIHRoZQotICAgICAgICBidWlsZCBwcm9jZXNzIGdlbmVyYXRlcyBhIHdhcm5pbmcgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgVGhlc2UgdG9vbHMgbWFrZSBpdCBlYXNpZXIgZm9yIGEgZGV2ZWxvcGVyIHRvIGJlIGNlcnRhaW4gb2YgdGhlCi0gICAgICAgIGxpY2Vuc2VzIHdpdGggd2hpY2ggdGhlaXIgc2hpcHBlZCBwcm9kdWN0cyBtdXN0IGNvbXBseS4KLSAgICAgICAgSG93ZXZlciwgZXZlbiB3aXRoIHRoZXNlIHRvb2xzIGl0IGlzIHN0aWxsIHVwIHRvIHRoZSBkZXZlbG9wZXIgdG8KLSAgICAgICAgcmVzb2x2ZSBwb3RlbnRpYWwgbGljZW5zaW5nIGlzc3Vlcy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIGJhc2UgbGlzdCBvZiBsaWNlbnNlcyB1c2VkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIGlzIGEgY29tYmluYXRpb24KLSAgICAgICAgb2YgdGhlIFNvZnR3YXJlIFBhY2thZ2UgRGF0YSBFeGNoYW5nZSAoU1BEWCkgbGlzdCBhbmQgdGhlIE9wZW4KLSAgICAgICAgU291cmNlIEluaXRpYXRpdmUgKE9TSSkgcHJvamVjdHMuCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9zcGR4Lm9yZyc+U1BEWCBHcm91cDwvdWxpbms+IGlzIGEgd29ya2luZyBncm91cCBvZgotICAgICAgICB0aGUgTGludXggRm91bmRhdGlvbiB0aGF0IG1haW50YWlucyBhIHNwZWNpZmljYXRpb24gZm9yIGEgc3RhbmRhcmQKLSAgICAgICAgZm9ybWF0IGZvciBjb21tdW5pY2F0aW5nIHRoZSBjb21wb25lbnRzLCBsaWNlbnNlcywgYW5kIGNvcHlyaWdodHMKLSAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGEgc29mdHdhcmUgcGFja2FnZS4KLSAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL29wZW5zb3VyY2Uub3JnJz5PU0k8L3VsaW5rPiBpcyBhIGNvcnBvcmF0aW9uCi0gICAgICAgIGRlZGljYXRlZCB0byB0aGUgT3BlbiBTb3VyY2UgRGVmaW5pdGlvbiBhbmQgdGhlIGVmZm9ydCBmb3IgcmV2aWV3aW5nCi0gICAgICAgIGFuZCBhcHByb3ZpbmcgbGljZW5zZXMgdGhhdCBjb25mb3JtIHRvIHRoZSBPcGVuIFNvdXJjZSBEZWZpbml0aW9uCi0gICAgICAgIChPU0QpLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBZb3UgY2FuIGZpbmQgYSBsaXN0IG9mIHRoZSBjb21iaW5lZCBTUERYIGFuZCBPU0kgbGljZW5zZXMgdGhhdCB0aGUKLSAgICAgICAgWW9jdG8gUHJvamVjdCB1c2VzIGluIHRoZQotICAgICAgICA8ZmlsZW5hbWU+bWV0YS9maWxlcy9jb21tb24tbGljZW5zZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4geW91cgotICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIHRoYXQgY2FuIGhlbHAgeW91IG1haW50YWluIGNvbXBsaWFuY2Ugd2l0aCB2YXJpb3VzCi0gICAgICAgIG9wZW4gc291cmNlIGxpY2Vuc2luZyBkdXJpbmcgdGhlIGxpZmVjeWNsZSBvZiBhIHByb2R1Y3QgY3JlYXRlZCB1c2luZwotICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctb3Blbi1zb3VyY2UtbGljZW5zZS1jb21wbGlhbmNlLWR1cmluZy15b3VyLXByb2R1Y3RzLWxpZmVjeWNsZSc+TWFpbnRhaW5pbmcgT3BlbiBTb3VyY2UgTGljZW5zZSBDb21wbGlhbmNlIER1cmluZyBZb3VyIFByb2R1Y3QncyBMaWZlY3ljbGU8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0ncmVjaXBlLXN5bnRheCc+Ci0gICAgPHRpdGxlPlJlY2lwZSBTeW50YXg8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFVuZGVyc3RhbmRpbmcgcmVjaXBlIGZpbGUgc3ludGF4IGlzIGltcG9ydGFudCBmb3IKLSAgICAgICAgd3JpdGluZyByZWNpcGVzLgotICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgb3ZlcnZpZXdzIHRoZSBiYXNpYyBpdGVtcyB0aGF0IG1ha2UgdXAgYQotICAgICAgICBCaXRCYWtlIHJlY2lwZSBmaWxlLgotICAgICAgICBGb3IgbW9yZSBjb21wbGV0ZSBCaXRCYWtlIHN5bnRheCBkZXNjcmlwdGlvbnMsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YSc+U3ludGF4IGFuZCBPcGVyYXRvcnM8L3VsaW5rPiIKLSAgICAgICAgY2hhcHRlciBvZiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VmFyaWFibGUgQXNzaWdubWVudHMgYW5kIE1hbmlwdWxhdGlvbnM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBWYXJpYWJsZSBhc3NpZ25tZW50cyBhbGxvdyBhIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGEKLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBUaGUgYXNzaWdubWVudCBjYW4gYmUgc3RhdGljIHRleHQgb3IgbWlnaHQgaW5jbHVkZQotICAgICAgICAgICAgICAgIHRoZSBjb250ZW50cyBvZiBvdGhlciB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIGFzc2lnbm1lbnQsIGFwcGVuZGluZyBhbmQgcHJlcGVuZGluZwotICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMgYXJlIGFsc28gc3VwcG9ydGVkLjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3Mgc29tZSBvZiB0aGUgd2F5cwotICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHZhcmlhYmxlcyBpbiByZWNpcGVzOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUyA9ICIke1dPUktESVJ9L3Bvc3RmaXgtJHtQVn0iCi0gICAgIENGTEFHUyArPSAiLUROT19BU00iCi0gICAgIFNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vZml4dXAucGF0Y2giCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5GdW5jdGlvbnM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBGdW5jdGlvbnMgcHJvdmlkZSBhIHNlcmllcyBvZiBhY3Rpb25zIHRvIGJlIHBlcmZvcm1lZC4KLSAgICAgICAgICAgICAgICBZb3UgdXN1YWxseSB1c2UgZnVuY3Rpb25zIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgYSB0YXNrIGZ1bmN0aW9uIG9yIHRvIGNvbXBsZW1lbnQKLSAgICAgICAgICAgICAgICBhIGRlZmF1bHQgZnVuY3Rpb24gKGkuZS4gYXBwZW5kIG9yIHByZXBlbmQgdG8gYW4KLSAgICAgICAgICAgICAgICBleGlzdGluZyBmdW5jdGlvbikuCi0gICAgICAgICAgICAgICAgU3RhbmRhcmQgZnVuY3Rpb25zIHVzZSA8ZmlsZW5hbWU+c2g8L2ZpbGVuYW1lPiBzaGVsbAotICAgICAgICAgICAgICAgIHN5bnRheCwgYWx0aG91Z2ggYWNjZXNzIHRvIE9wZW5FbWJlZGRlZCB2YXJpYWJsZXMgYW5kCi0gICAgICAgICAgICAgICAgaW50ZXJuYWwgbWV0aG9kcyBhcmUgYWxzbyBhdmFpbGFibGUuPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBmdW5jdGlvbiBmcm9tIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZWQ8L2ZpbGVuYW1lPiByZWNpcGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBkb19pbnN0YWxsICgpIHsKLSAgICAgICAgIGF1dG90b29sc19kb19pbnN0YWxsCi0gICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS9zZWQgJHtEfSR7YmFzZV9iaW5kaXJ9L3NlZAotICAgICAgICAgcm1kaXIgJHtEfSR7YmluZGlyfS8KLSAgICAgfQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGltcGxlbWVudCBuZXcgZnVuY3Rpb25zIHRoYXQKLSAgICAgICAgICAgICAgICBhcmUgY2FsbGVkIGJldHdlZW4gZXhpc3RpbmcgdGFza3MgYXMgbG9uZyBhcyB0aGUKLSAgICAgICAgICAgICAgICBuZXcgZnVuY3Rpb25zIGFyZSBub3QgcmVwbGFjaW5nIG9yIGNvbXBsZW1lbnRpbmcgdGhlCi0gICAgICAgICAgICAgICAgZGVmYXVsdCBmdW5jdGlvbnMuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBpbXBsZW1lbnQgZnVuY3Rpb25zIGluIFB5dGhvbgotICAgICAgICAgICAgICAgIGluc3RlYWQgb2Ygc2hlbGwuCi0gICAgICAgICAgICAgICAgQm90aCBvZiB0aGVzZSBvcHRpb25zIGFyZSBub3Qgc2VlbiBpbiB0aGUgbWFqb3JpdHkgb2YKLSAgICAgICAgICAgICAgICByZWNpcGVzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5LZXl3b3Jkczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEJpdEJha2UgcmVjaXBlcyB1c2Ugb25seSBhIGZldyBrZXl3b3Jkcy4KLSAgICAgICAgICAgICAgICBZb3UgdXNlIGtleXdvcmRzIHRvIGluY2x1ZGUgY29tbW9uCi0gICAgICAgICAgICAgICAgZnVuY3Rpb25zICg8ZmlsZW5hbWU+aW5oZXJpdDwvZmlsZW5hbWU+KSwgbG9hZCBwYXJ0cwotICAgICAgICAgICAgICAgIG9mIGEgcmVjaXBlIGZyb20gb3RoZXIgZmlsZXMKLSAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVxdWlyZTwvZmlsZW5hbWU+KSBhbmQgZXhwb3J0IHZhcmlhYmxlcwotICAgICAgICAgICAgICAgIHRvIHRoZSBlbnZpcm9ubWVudCAoPGZpbGVuYW1lPmV4cG9ydDwvZmlsZW5hbWU+KS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSB1c2Ugb2Ygc29tZSBvZgotICAgICAgICAgICAgICAgIHRoZXNlIGtleXdvcmRzOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZXhwb3J0IFBPU1RDT05GID0gIiR7U1RBR0lOR19CSU5ESVJ9L3Bvc3Rjb25mIgotICAgICBpbmhlcml0IGF1dG9jb25mCi0gICAgIHJlcXVpcmUgb3RoZXJmaWxlLmluYwotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29tbWVudHM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBbnkgbGluZXMgdGhhdCBiZWdpbiB3aXRoIHRoZSBoYXNoIGNoYXJhY3RlcgotICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+IzwvZmlsZW5hbWU+KSBhcmUgdHJlYXRlZCBhcyBjb21tZW50IGxpbmVzCi0gICAgICAgICAgICAgICAgYW5kIGFyZSBpZ25vcmVkOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgIyBUaGlzIGlzIGEgY29tbWVudAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgbmV4dCBsaXN0IHN1bW1hcml6ZXMgdGhlIG1vc3QgaW1wb3J0YW50IGFuZCBtb3N0IGNvbW1vbmx5Ci0gICAgICAgIHVzZWQgcGFydHMgb2YgdGhlIHJlY2lwZSBzeW50YXguCi0gICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZXNlIHBhcnRzIG9mIHRoZSBzeW50YXgsIHlvdSBjYW4KLSAgICAgICAgcmVmZXJlbmNlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEnPlN5bnRheCBhbmQgT3BlcmF0b3JzPC91bGluaz4KLSAgICAgICAgY2hhcHRlciBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGluZSBDb250aW51YXRpb246IDxmaWxlbmFtZT5cPC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgVXNlIHRoZSBiYWNrd2FyZCBzbGFzaCAoPGZpbGVuYW1lPlw8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgdG8gc3BsaXQgYSBzdGF0ZW1lbnQgb3ZlciBtdWx0aXBsZSBsaW5lcy4KLSAgICAgICAgICAgICAgICBQbGFjZSB0aGUgc2xhc2ggY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgdGhhdAotICAgICAgICAgICAgICAgIGlzIHRvIGJlIGNvbnRpbnVlZCBvbiB0aGUgbmV4dCBsaW5lOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgVkFSID0gIkEgcmVhbGx5IGxvbmcgXAotICAgICAgICAgICAgbGluZSIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgaGF2ZSBhbnkgY2hhcmFjdGVycyBpbmNsdWRpbmcgc3BhY2VzCi0gICAgICAgICAgICAgICAgICAgIG9yIHRhYnMgYWZ0ZXIgdGhlIHNsYXNoIGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzaW5nIFZhcmlhYmxlczogPGZpbGVuYW1lPiR7Li4ufTwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPiR7PHJlcGxhY2VhYmxlPlZBUk5BTUU8L3JlcGxhY2VhYmxlPn08L2ZpbGVuYW1lPiBzeW50YXggdG8KLSAgICAgICAgICAgICAgICBhY2Nlc3MgdGhlIGNvbnRlbnRzIG9mIGEgdmFyaWFibGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9saWJwbmcvemxpYi0ke1BWfS50YXIuZ3oiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHRoZSB2YWx1ZSBvZiBhCi0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGV4cHJlc3NlZCBpbiB0aGlzIGZvcm0gZG9lcyBub3QgZ2V0Ci0gICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVkIGF1dG9tYXRpY2FsbHkuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBleHBhbnNpb24gb2YgdGhlc2UgZXhwcmVzc2lvbnMgaGFwcGVucwotICAgICAgICAgICAgICAgICAgICBvbi1kZW1hbmQgbGF0ZXIgKGUuZy4gdXN1YWxseSB3aGVuIGEgZnVuY3Rpb24gdGhhdAotICAgICAgICAgICAgICAgICAgICBtYWtlcyByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIGV4ZWN1dGVzKS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBlbnN1cmVzIHRoYXQgdGhlIHZhbHVlcyBhcmUgbW9zdAotICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBmb3IgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhleSBhcmUKLSAgICAgICAgICAgICAgICAgICAgZmluYWxseSB1c2VkLgotICAgICAgICAgICAgICAgICAgICBPbiB0aGUgcmFyZSBvY2Nhc2lvbiB0aGF0IHlvdSBkbyBuZWVkIHRoZSB2YXJpYWJsZQotICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uIHRvIGJlIGV4cGFuZGVkIGltbWVkaWF0ZWx5LCB5b3UgY2FuIHVzZQotICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPjo9PC9maWxlbmFtZT4gb3BlcmF0b3IgaW5zdGVhZCBvZgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IHdoZW4geW91IG1ha2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQsIGJ1dCB0aGlzIGlzIG5vdCBnZW5lcmFsbHkgbmVlZGVkLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UXVvdGUgQWxsIEFzc2lnbm1lbnRzOiA8ZmlsZW5hbWU+IjxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgIFVzZSBkb3VibGUgcXVvdGVzIGFyb3VuZCB0aGUgdmFsdWUgaW4gYWxsIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgYXNzaWdubWVudHMuCi0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBWQVIxID0gIiR7T1RIRVJWQVJ9IgotICAgICBWQVIyID0gIlRoZSB2ZXJzaW9uIGlzICR7UFZ9IgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29uZGl0aW9uYWwgQXNzaWdubWVudDogPGZpbGVuYW1lPj89PC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgQ29uZGl0aW9uYWwgYXNzaWdubWVudCBpcyB1c2VkIHRvIGFzc2lnbiBhIHZhbHVlIHRvCi0gICAgICAgICAgICAgICAgYSB2YXJpYWJsZSwgYnV0IG9ubHkgd2hlbiB0aGUgdmFyaWFibGUgaXMgY3VycmVudGx5Ci0gICAgICAgICAgICAgICAgdW5zZXQuCi0gICAgICAgICAgICAgICAgVXNlIHRoZSBxdWVzdGlvbiBtYXJrIGZvbGxvd2VkIGJ5IHRoZSBlcXVhbCBzaWduCi0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+KSB0byBtYWtlIGEgInNvZnQiIGFzc2lnbm1lbnQKLSAgICAgICAgICAgICAgICB1c2VkIGZvciBjb25kaXRpb25hbCBhc3NpZ25tZW50LgotICAgICAgICAgICAgICAgIFR5cGljYWxseSwgInNvZnQiIGFzc2lnbm1lbnRzIGFyZSB1c2VkIGluIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3IgdmFyaWFibGVzCi0gICAgICAgICAgICAgICAgdGhhdCBhcmUgYWxsb3dlZCB0byBjb21lIHRocm91Z2ggZnJvbSB0aGUgZXh0ZXJuYWwKLSAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlIHdoZXJlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPlZBUjE8L2ZpbGVuYW1lPiBpcyBzZXQgdG8gIk5ldyB2YWx1ZSIgaWYKLSAgICAgICAgICAgICAgICBpdCBpcyBjdXJyZW50bHkgZW1wdHkuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgPGZpbGVuYW1lPlZBUjE8L2ZpbGVuYW1lPiBoYXMgYWxyZWFkeSBiZWVuCi0gICAgICAgICAgICAgICAgc2V0LCBpdCByZW1haW5zIHVuY2hhbmdlZDoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFZBUjEgPz0gIk5ldyB2YWx1ZSIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgSW4gdGhpcyBuZXh0IGV4YW1wbGUsIDxmaWxlbmFtZT5WQVIxPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBpcyBsZWZ0IHdpdGggdGhlIHZhbHVlICJPcmlnaW5hbCB2YWx1ZSI6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBWQVIxID0gIk9yaWdpbmFsIHZhbHVlIgotICAgICBWQVIxID89ICJOZXcgdmFsdWUiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BcHBlbmRpbmc6IDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgIFVzZSB0aGUgcGx1cyBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgdGhlIGVxdWFscyBzaWduCi0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+KSB0byBhcHBlbmQgdmFsdWVzIHRvIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGFkZHMgYSBzcGFjZSBiZXR3ZWVuIHRoZSBleGlzdGluZwotICAgICAgICAgICAgICAgICAgICBjb250ZW50IG9mIHRoZSB2YXJpYWJsZSBhbmQgdGhlIG5ldyBjb250ZW50LgotICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSSArPSAiZmlsZTovL2ZpeC1tYWtlZmlsZS5wYXRjaCIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlByZXBlbmRpbmc6IDxmaWxlbmFtZT49KzwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgIFVzZSB0aGUgZXF1YWxzIHNpZ24gZm9sbG93ZWQgYnkgdGhlIHBsdXMgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT49KzwvZmlsZW5hbWU+KSB0byBwcmVwZW5kIHZhbHVlcyB0byBleGlzdGluZwotICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBhZGRzIGEgc3BhY2UgYmV0d2VlbiB0aGUgbmV3IGNvbnRlbnQKLSAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBleGlzdGluZyBjb250ZW50IG9mIHRoZSB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPkhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFZBUiA9KyAiU3RhcnRzIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QXBwZW5kaW5nOiA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBvcGVyYXRvciB0bwotICAgICAgICAgICAgICAgIGFwcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIFRoaXMgb3BlcmF0b3IgZG9lcyBub3QgYWRkIGFueSBhZGRpdGlvbmFsIHNwYWNlLgotICAgICAgICAgICAgICAgIEFsc28sIHRoZSBvcGVyYXRvciBpcyBhcHBsaWVkIGFmdGVyIGFsbCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPj0rPC9maWxlbmFtZT4gb3BlcmF0b3JzIGhhdmUgYmVlbiBhcHBsaWVkIGFuZAotICAgICAgICAgICAgICAgIGFmdGVyIGFsbCA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IGFzc2lnbm1lbnRzIGhhdmUKLSAgICAgICAgICAgICAgICBvY2N1cnJlZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBzcGFjZSBiZWluZwotICAgICAgICAgICAgICAgIGV4cGxpY2l0bHkgYWRkZWQgdG8gdGhlIHN0YXJ0IHRvIGVuc3VyZSB0aGUgYXBwZW5kZWQKLSAgICAgICAgICAgICAgICB2YWx1ZSBpcyBub3QgbWVyZ2VkIHdpdGggdGhlIGV4aXN0aW5nIHZhbHVlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBvcGVyYXRvciB3aXRoIG92ZXJyaWRlcywgd2hpY2ggcmVzdWx0cyBpbiB0aGUgYWN0aW9ucwotICAgICAgICAgICAgICAgIG9ubHkgYmVpbmcgcGVyZm9ybWVkIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCBvcgotICAgICAgICAgICAgICAgIG1hY2hpbmU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJX2FwcGVuZF9zaDQgPSAiIGZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QcmVwZW5kaW5nOiA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KLSAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IG9wZXJhdG9yIHRvCi0gICAgICAgICAgICAgICAgcHJlcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIFRoaXMgb3BlcmF0b3IgZG9lcyBub3QgYWRkIGFueSBhZGRpdGlvbmFsIHNwYWNlLgotICAgICAgICAgICAgICAgIEFsc28sIHRoZSBvcGVyYXRvciBpcyBhcHBsaWVkIGFmdGVyIGFsbCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPj0rPC9maWxlbmFtZT4gb3BlcmF0b3JzIGhhdmUgYmVlbiBhcHBsaWVkIGFuZAotICAgICAgICAgICAgICAgIGFmdGVyIGFsbCA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IGFzc2lnbm1lbnRzIGhhdmUKLSAgICAgICAgICAgICAgICBvY2N1cnJlZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBzcGFjZSBiZWluZwotICAgICAgICAgICAgICAgIGV4cGxpY2l0bHkgYWRkZWQgdG8gdGhlIGVuZCB0byBlbnN1cmUgdGhlIHByZXBlbmRlZAotICAgICAgICAgICAgICAgIHZhbHVlIGlzIG5vdCBtZXJnZWQgd2l0aCB0aGUgZXhpc3RpbmcgdmFsdWU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBDRkxBR1NfcHJlcGVuZCA9ICItSSR7U30vbXlpbmNsdWRlcyAiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgb3BlcmF0b3Igd2l0aCBvdmVycmlkZXMsIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGFjdGlvbnMKLSAgICAgICAgICAgICAgICBvbmx5IGJlaW5nIHBlcmZvcm1lZCBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQgb3IKLSAgICAgICAgICAgICAgICBtYWNoaW5lOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQ0ZMQUdTX3ByZXBlbmRfc2g0ID0gIi1JJHtTfS9teWluY2x1ZGVzICIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk92ZXJyaWRlczo8L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2Ugb3ZlcnJpZGVzIHRvIHNldCBhIHZhbHVlIGNvbmRpdGlvbmFsbHksCi0gICAgICAgICAgICAgICAgdHlwaWNhbGx5IGJhc2VkIG9uIGhvdyB0aGUgcmVjaXBlIGlzIGJlaW5nIGJ1aWx0LgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBzZXQgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtCUkFOQ0gnPjxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUncyB2YWx1ZSB0byAic3RhbmRhcmQvYmFzZSIgZm9yIGFueSB0YXJnZXQKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgZXhjZXB0IGZvciBxZW11YXJtIHdoZXJlIGl0IHNob3VsZCBiZSBzZXQgdG8KLSAgICAgICAgICAgICAgICAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiLCB5b3Ugd291bGQgZG8gdGhlCi0gICAgICAgICAgICAgICAgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgS0JSQU5DSCA9ICJzdGFuZGFyZC9iYXNlIgotICAgICBLQlJBTkNIX3FlbXVhcm0gID0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBPdmVycmlkZXMgYXJlIGFsc28gdXNlZCB0byBzZXBhcmF0ZSBhbHRlcm5hdGUgdmFsdWVzCi0gICAgICAgICAgICAgICAgb2YgYSB2YXJpYWJsZSBpbiBvdGhlciBzaXR1YXRpb25zLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIHNldHRpbmcgdmFyaWFibGVzIHN1Y2ggYXMKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGhhdCBhcmUgc3BlY2lmaWMgdG8gaW5kaXZpZHVhbCBwYWNrYWdlcyBwcm9kdWNlZCBieQotICAgICAgICAgICAgICAgIGEgcmVjaXBlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2UgYW4gb3ZlcnJpZGUgdGhhdAotICAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgcGFja2FnZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW5kZW50YXRpb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBVc2Ugc3BhY2VzIGZvciBpbmRlbnRhdGlvbiByYXRoZXIgdGhhbiB0aGFuIHRhYnMuCi0gICAgICAgICAgICAgICAgRm9yIHNoZWxsIGZ1bmN0aW9ucywgYm90aCBjdXJyZW50bHkgd29yay4KLSAgICAgICAgICAgICAgICBIb3dldmVyLCBpdCBpcyBhIHBvbGljeSBkZWNpc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIHRvIHVzZSB0YWJzIGluIHNoZWxsIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgc29tZSBsYXllcnMgaGF2ZSBhIHBvbGljeSB0byB1c2Ugc3BhY2VzCi0gICAgICAgICAgICAgICAgZm9yIGFsbCBpbmRlbnRhdGlvbi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNpbmcgUHl0aG9uIGZvciBDb21wbGV4IE9wZXJhdGlvbnM6IDxmaWxlbmFtZT4ke0A8cmVwbGFjZWFibGU+cHl0aG9uX2NvZGU8L3JlcGxhY2VhYmxlPn08L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KLSAgICAgICAgICAgICAgICBGb3IgbW9yZSBhZHZhbmNlZCBwcm9jZXNzaW5nLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UKLSAgICAgICAgICAgICAgICBQeXRob24gY29kZSBkdXJpbmcgdmFyaWFibGUgYXNzaWdubWVudHMgKGUuZy4KLSAgICAgICAgICAgICAgICBzZWFyY2ggYW5kIHJlcGxhY2VtZW50IG9uIGEgdmFyaWFibGUpLjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgaW5kaWNhdGUgUHl0aG9uIGNvZGUgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7QDxyZXBsYWNlYWJsZT5weXRob25fY29kZTwvcmVwbGFjZWFibGU+fTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgc3ludGF4IGZvciB0aGUgdmFyaWFibGUgYXNzaWdubWVudDoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFNSQ19VUkkgPSAiZnRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvemlwJHtAZC5nZXRWYXIoJ1BWJywxKS5yZXBsYWNlKCcuJywgJycpfS50Z3oKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNoZWxsIEZ1bmN0aW9uIFN5bnRheDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFdyaXRlIHNoZWxsIGZ1bmN0aW9ucyBhcyBpZiB5b3Ugd2VyZSB3cml0aW5nIGEgc2hlbGwKLSAgICAgICAgICAgICAgICBzY3JpcHQgd2hlbiB5b3UgZGVzY3JpYmUgYSBsaXN0IG9mIGFjdGlvbnMgdG8gdGFrZS4KLSAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGVuc3VyZSB0aGF0IHlvdXIgc2NyaXB0IHdvcmtzIHdpdGggYSBnZW5lcmljCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNoPC9maWxlbmFtZT4gYW5kIHRoYXQgaXQgZG9lcyBub3QgcmVxdWlyZQotICAgICAgICAgICAgICAgIGFueSA8ZmlsZW5hbWU+YmFzaDwvZmlsZW5hbWU+IG9yIG90aGVyIHNoZWxsLXNwZWNpZmljCi0gICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eS4KLSAgICAgICAgICAgICAgICBUaGUgc2FtZSBjb25zaWRlcmF0aW9ucyBhcHBseSB0byB2YXJpb3VzIHN5c3RlbQotICAgICAgICAgICAgICAgIHV0aWxpdGllcyAoZS5nLiA8ZmlsZW5hbWU+c2VkPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdyZXA8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmF3azwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkgdGhhdCB5b3UgbWlnaHQgd2lzaCB0byB1c2UuCi0gICAgICAgICAgICAgICAgSWYgaW4gZG91YnQsIHlvdSBzaG91bGQgY2hlY2sgd2l0aCBtdWx0aXBsZQotICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyAtIGluY2x1ZGluZyB0aG9zZSBmcm9tIEJ1c3lCb3guCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9ImRldmVsb3BtZW50LWNvbmNlcHRzIj4KLSAgICA8dGl0bGU+RGV2ZWxvcG1lbnQgQ29uY2VwdHM8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiB0YWtlcyBhIG1vcmUgZGV0YWlsZWQgbG9vayBpbnNpZGUgdGhlIGRldmVsb3BtZW50Ci0gICAgICAgIHByb2Nlc3MuCi0gICAgICAgIFRoZSBmb2xsb3dpbmcgZGlhZ3JhbSByZXByZXNlbnRzIGRldmVsb3BtZW50IGF0IGEgaGlnaCBsZXZlbC4KLSAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIGNoYXB0ZXIgZXhwYW5kcyBvbiB0aGUgZnVuZGFtZW50YWwgaW5wdXQsIG91dHB1dCwKLSAgICAgICAgcHJvY2VzcywgYW5kCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4pIGJsb2NrcwotICAgICAgICB0aGF0IG1ha2UgdXAgZGV2ZWxvcG1lbnQgaW4gdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmEgaWQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz4KLSAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3lvY3RvLWVudmlyb25tZW50LXJlZi5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI4aW4iIGRlcHRoPSI0LjI1aW4iIC8+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEluIGdlbmVyYWwsIGRldmVsb3BtZW50IGNvbnNpc3RzIG9mIHNldmVyYWwgZnVuY3Rpb25hbCBhcmVhczoKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNlciBDb25maWd1cmF0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgTWV0YWRhdGEgeW91IGNhbiB1c2UgdG8gY29udHJvbCB0aGUgYnVpbGQgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWV0YWRhdGEgTGF5ZXJzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVmFyaW91cyBsYXllcnMgdGhhdCBwcm92aWRlIHNvZnR3YXJlLCBtYWNoaW5lLCBhbmQKLSAgICAgICAgICAgICAgICBkaXN0cm8gTWV0YWRhdGEuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNvdXJjZSBGaWxlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFVwc3RyZWFtIHJlbGVhc2VzLCBsb2NhbCBwcm9qZWN0cywgYW5kIFNDTXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFByb2Nlc3NlcyB1bmRlciB0aGUgY29udHJvbCBvZgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4uCi0gICAgICAgICAgICAgICAgVGhpcyBibG9jayBleHBhbmRzIG9uIGhvdyBCaXRCYWtlIGZldGNoZXMgc291cmNlLCBhcHBsaWVzCi0gICAgICAgICAgICAgICAgcGF0Y2hlcywgY29tcGxldGVzIGNvbXBpbGF0aW9uLCBhbmFseXplcyBvdXRwdXQgZm9yIHBhY2thZ2UKLSAgICAgICAgICAgICAgICBnZW5lcmF0aW9uLCBjcmVhdGVzIGFuZCB0ZXN0cyBwYWNrYWdlcywgZ2VuZXJhdGVzIGltYWdlcywgYW5kCi0gICAgICAgICAgICAgICAgZ2VuZXJhdGVzIGNyb3NzLWRldmVsb3BtZW50IHRvb2xzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QYWNrYWdlIEZlZWRzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRGlyZWN0b3JpZXMgY29udGFpbmluZyBvdXRwdXQgcGFja2FnZXMgKFJQTSwgREVCIG9yIElQSyksCi0gICAgICAgICAgICAgICAgd2hpY2ggYXJlIHN1YnNlcXVlbnRseSB1c2VkIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4gaW1hZ2Ugb3IKLSAgICAgICAgICAgICAgICBTREssIHByb2R1Y2VkIGJ5IHRoZSBidWlsZCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgVGhlc2UgZmVlZHMgY2FuIGFsc28gYmUgY29waWVkIGFuZCBzaGFyZWQgdXNpbmcgYSB3ZWIgc2VydmVyIG9yCi0gICAgICAgICAgICAgICAgb3RoZXIgbWVhbnMgdG8gZmFjaWxpdGF0ZSBleHRlbmRpbmcgb3IgdXBkYXRpbmcgZXhpc3RpbmcKLSAgICAgICAgICAgICAgICBpbWFnZXMgb24gZGV2aWNlcyBhdCBydW50aW1lIGlmIHJ1bnRpbWUgcGFja2FnZSBtYW5hZ2VtZW50IGlzCi0gICAgICAgICAgICAgICAgZW5hYmxlZC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW1hZ2VzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgSW1hZ2VzIHByb2R1Y2VkIGJ5IHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBDcm9zcy1kZXZlbG9wbWVudCB0b29scyB0aGF0IGFyZSBwcm9kdWNlZCBhbG9uZyB3aXRoIGFuIGltYWdlCi0gICAgICAgICAgICAgICAgb3Igc2VwYXJhdGVseSB3aXRoIEJpdEJha2UuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSJ1c2VyLWNvbmZpZ3VyYXRpb24iPgotICAgICAgICA8dGl0bGU+VXNlciBDb25maWd1cmF0aW9uPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFVzZXIgY29uZmlndXJhdGlvbiBoZWxwcyBkZWZpbmUgdGhlIGJ1aWxkLgotICAgICAgICAgICAgVGhyb3VnaCB1c2VyIGNvbmZpZ3VyYXRpb24sIHlvdSBjYW4gdGVsbCBCaXRCYWtlIHRoZQotICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmb3Igd2hpY2ggeW91IGFyZSBidWlsZGluZyB0aGUgaW1hZ2UsCi0gICAgICAgICAgICB3aGVyZSB0byBzdG9yZSBkb3dubG9hZGVkIHNvdXJjZSwgYW5kIG90aGVyIGJ1aWxkIHByb3BlcnRpZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGFuIGV4cGFuZGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZQotICAgICAgICAgICAgIlVzZXIgQ29uZmlndXJhdGlvbiIgYm94IG9mIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+OgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZyIgYWxpZ249ImNlbnRlciIgLz4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSBuZWVkcyBzb21lIGJhc2ljIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gb3JkZXIgdG8gY29tcGxldGUKLSAgICAgICAgICAgIGEgYnVpbGQuCi0gICAgICAgICAgICBUaGVzZSBmaWxlcyBhcmUgPGZpbGVuYW1lPiouY29uZjwvZmlsZW5hbWU+IGZpbGVzLgotICAgICAgICAgICAgVGhlIG1pbmltYWxseSBuZWNlc3Nhcnkgb25lcyByZXNpZGUgYXMgZXhhbXBsZSBmaWxlcyBpbiB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIHRoaXMgc2VjdGlvbiByZWZlcnMgdG8gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYXMKLSAgICAgICAgICAgIHRoZSAiUG9reSBEaXJlY3RvcnkuIgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIHlvdSBjbG9uZSB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSBvciB5b3UKLSAgICAgICAgICAgIGRvd25sb2FkIGFuZCB1bnBhY2sgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHlvdSBjYW4gc2V0IHVwIHRoZQotICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSB0byBiZSBuYW1lZCBhbnl0aGluZyB5b3Ugd2FudC4KLSAgICAgICAgICAgIEZvciB0aGlzIGRpc2N1c3Npb24sIHRoZSBjbG9uZWQgcmVwb3NpdG9yeSB1c2VzIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICBuYW1lIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgUG9reSByZXBvc2l0b3J5IGlzIHByaW1hcmlseSBhbiBhZ2dyZWdhdGlvbiBvZiBleGlzdGluZwotICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICBJdCBpcyBub3QgYSBjYW5vbmljYWwgdXBzdHJlYW0gc291cmNlLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGxheWVyIGluc2lkZSBQb2t5IGNvbnRhaW5zCi0gICAgICAgICAgICBhIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IHRoYXQgaGFzIGV4YW1wbGUKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMuCi0gICAgICAgICAgICBUaGVzZSBleGFtcGxlIGZpbGVzIGFyZSB1c2VkIGFzIGEgYmFzaXMgZm9yIGNyZWF0aW5nIGFjdHVhbAotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyB3aGVuIHlvdSBzb3VyY2UgdGhlIGJ1aWxkIGVudmlyb25tZW50Ci0gICAgICAgICAgICBzY3JpcHQKLSAgICAgICAgICAgIChpLmUuCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFNvdXJjaW5nIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzY3JpcHQgY3JlYXRlcyBhCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgIGlmIG9uZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgotICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSBCdWlsZCBEaXJlY3RvcnkgZm9yIGFsbCBpdHMgd29yayBkdXJpbmcgYnVpbGRzLgotICAgICAgICAgICAgVGhlIEJ1aWxkIERpcmVjdG9yeSBoYXMgYSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSB0aGF0Ci0gICAgICAgICAgICBjb250YWlucyBkZWZhdWx0IHZlcnNpb25zIG9mIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcy4KLSAgICAgICAgICAgIFRoZXNlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgY3JlYXRlZCBvbmx5IGlmIHZlcnNpb25zCi0gICAgICAgICAgICBkbyBub3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGF0IHRoZSB0aW1lIHlvdQotICAgICAgICAgICAgc291cmNlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJlY2F1c2UgdGhlIFBva3kgcmVwb3NpdG9yeSBpcyBmdW5kYW1lbnRhbGx5IGFuIGFnZ3JlZ2F0aW9uIG9mCi0gICAgICAgICAgICBleGlzdGluZyByZXBvc2l0b3JpZXMsIHNvbWUgdXNlcnMgbWlnaHQgYmUgZmFtaWxpYXIgd2l0aCBydW5uaW5nCi0gICAgICAgICAgICB0aGUgPGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT4gc2NyaXB0IGluIHRoZSBjb250ZXh0Ci0gICAgICAgICAgICBvZiBzZXBhcmF0ZSBPcGVuRW1iZWRkZWQtQ29yZSBhbmQgQml0QmFrZSByZXBvc2l0b3JpZXMgcmF0aGVyIHRoYW4gYQotICAgICAgICAgICAgc2luZ2xlIFBva3kgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIFRoaXMgZGlzY3Vzc2lvbiBhc3N1bWVzIHRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgZnJvbSB3aXRoaW4gYSBjbG9uZWQKLSAgICAgICAgICAgIG9yIHVucGFja2VkIHZlcnNpb24gb2YgUG9reS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHdoZXJlIHRoZSBzY3JpcHQgaXMgc291cmNlZCwgZGlmZmVyZW50IHN1Yi1zY3JpcHRzCi0gICAgICAgICAgICBhcmUgY2FsbGVkIHRvIHNldCB1cCB0aGUgQnVpbGQgRGlyZWN0b3J5IChZb2N0byBvciBPcGVuRW1iZWRkZWQpLgotICAgICAgICAgICAgU3BlY2lmaWNhbGx5LCB0aGUgc2NyaXB0Ci0gICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IGluc2lkZSB0aGUKLSAgICAgICAgICAgIHBva3kgZGlyZWN0b3J5IHNldHMgdXAgdGhlIEJ1aWxkIERpcmVjdG9yeSBhbmQgc2VlZHMgdGhlIGRpcmVjdG9yeQotICAgICAgICAgICAgKGlmIG5lY2Vzc2FyeSkgd2l0aCBjb25maWd1cmF0aW9uIGZpbGVzIGFwcHJvcHJpYXRlIGZvciB0aGUKLSAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnNjcmlwdHMvb2Utc2V0dXAtYnVpbGRkaXI8L2ZpbGVuYW1lPiBzY3JpcHQKLSAgICAgICAgICAgICAgICB1c2VzIHRoZSA8ZmlsZW5hbWU+JFRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvCi0gICAgICAgICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIHNhbXBsZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGxvY2F0ZS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBwcm92aWRlcyBtYW55Ci0gICAgICAgICAgICBiYXNpYyB2YXJpYWJsZXMgdGhhdCBkZWZpbmUgYSBidWlsZCBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgIEhlcmUgaXMgYSBsaXN0IG9mIGEgZmV3LgotICAgICAgICAgICAgVG8gc2VlIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGluIGEgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgZmlsZSBjcmVhdGVkIGJ5IHRoZSBidWlsZCBlbnZpcm9ubWVudCBzY3JpcHQsIHNlZSB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGluIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGxheWVyOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlBhcmFsbGVsaXNtIE9wdGlvbnM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX05VTUJFUl9USFJFQURTJz48ZmlsZW5hbWU+QkJfTlVNQkVSX1RIUkVBRFM8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQVJBTExFTF9NQUtFJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX05VTUJFUl9QQVJTRV9USFJFQURTJz48ZmlsZW5hbWU+QkJfTlVNQkVSX1BBUlNFX1RIUkVBRFM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRhcmdldCBNYWNoaW5lIFNlbGVjdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb3dubG9hZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNoYXJlZCBTdGF0ZSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgT3V0cHV0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25zIHNldCBpbiB0aGUgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgZmlsZSBjYW4gYWxzbyBiZSBzZXQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvc2l0ZS5jb25mPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvYXV0by5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcy4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSB0ZWxscyBCaXRCYWtlIHdoYXQKLSAgICAgICAgICAgIGxheWVycyB5b3Ugd2FudCBjb25zaWRlcmVkIGR1cmluZyB0aGUgYnVpbGQuCi0gICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgbGF5ZXJzIGxpc3RlZCBpbiB0aGlzIGZpbGUgaW5jbHVkZSBsYXllcnMKLSAgICAgICAgICAgIG1pbmltYWxseSBuZWVkZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgIEhvd2V2ZXIsIHlvdSBtdXN0IG1hbnVhbGx5IGFkZCBhbnkgY3VzdG9tIGxheWVycyB5b3UgaGF2ZSBjcmVhdGVkLgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gd29ya2luZyB3aXRoIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2VuYWJsaW5nLXlvdXItbGF5ZXInPkVuYWJsaW5nIFlvdXIgTGF5ZXI8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZmlsZXMgPGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+IGFyZSBub3QgY3JlYXRlZCBieSB0aGUgZW52aXJvbm1lbnQKLSAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIHNjcmlwdC4KLSAgICAgICAgICAgIElmIHlvdSB3YW50IHRoZSA8ZmlsZW5hbWU+c2l0ZS5jb25mPC9maWxlbmFtZT4gZmlsZSwgeW91IG5lZWQgdG8KLSAgICAgICAgICAgIGNyZWF0ZSB0aGF0IHlvdXJzZWxmLgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGlzIHR5cGljYWxseSBjcmVhdGVkIGJ5Ci0gICAgICAgICAgICBhbiBhdXRvYnVpbGRlcjoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+c2l0ZS5jb25mPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBjb25maWd1cmUgbXVsdGlwbGUgYnVpbGQgZGlyZWN0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYWQgc2V2ZXJhbCBidWlsZCBlbnZpcm9ubWVudHMgYW5kCi0gICAgICAgICAgICAgICAgICAgIHRoZXkgc2hhcmVkIHNvbWUgY29tbW9uIGZlYXR1cmVzLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNldCB0aGVzZSBkZWZhdWx0IGJ1aWxkIHByb3BlcnRpZXMgaGVyZS4KLSAgICAgICAgICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgaXMgcGVyaGFwcyB0aGUgcGFja2FnaW5nIGZvcm1hdCB0byB1c2UKLSAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uZSB1c2VmdWwgc2NlbmFyaW8gZm9yIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGlzIHRvIGV4dGVuZCB5b3VyCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgcGF0aCB0byBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBUaGVuLCB3aGVuIEJpdEJha2UgbG9va3MgZm9yIE1ldGFkYXRhIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiwgaXQgZmluZHMgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGUgYW5kIGFwcGxpZXMgeW91cgotICAgICAgICAgICAgICAgICAgICBjb21tb24gY29uZmlndXJhdGlvbnMgZm91bmQgaW4gdGhlIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIFRvIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb25zIGluIGEgcGFydGljdWxhciBidWlsZCBkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgIGFsdGVyIHRoZSBzaW1pbGFyIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGF0IGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSdzIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZSBpcyB1c3VhbGx5IGNyZWF0ZWQgYW5kIHdyaXR0ZW4gdG8gYnkKLSAgICAgICAgICAgICAgICAgICAgYW4gYXV0b2J1aWxkZXIuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBzZXR0aW5ncyBwdXQgaW50byB0aGUgZmlsZSBhcmUgdHlwaWNhbGx5IHRoZSBzYW1lIGFzCi0gICAgICAgICAgICAgICAgICAgIHlvdSB3b3VsZCBmaW5kIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgb3IgdGhlIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGVzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3UgY2FuIGVkaXQgYWxsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZnVydGhlciBkZWZpbmUKLSAgICAgICAgICAgIGFueSBwYXJ0aWN1bGFyIGJ1aWxkIGVudmlyb25tZW50LgotICAgICAgICAgICAgVGhpcyBwcm9jZXNzIGlzIHJlcHJlc2VudGVkIGJ5IHRoZSAiVXNlciBDb25maWd1cmF0aW9uIEVkaXRzIgotICAgICAgICAgICAgYm94IGluIHRoZSBmaWd1cmUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFdoZW4geW91IGxhdW5jaCB5b3VyIGJ1aWxkIHdpdGggdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgotICAgICAgICAgICAgY29tbWFuZCwgQml0QmFrZSBzb3J0cyBvdXQgdGhlIGNvbmZpZ3VyYXRpb25zIHRvIHVsdGltYXRlbHkKLSAgICAgICAgICAgIGRlZmluZSB5b3VyIGJ1aWxkIGVudmlyb25tZW50LgotICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgcmVhZHMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gYSBzcGVjaWZpYyBvcmRlcjoKLSAgICAgICAgICAgIDxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBBbmQsIHRoZSBidWlsZCBzeXN0ZW0gYXBwbGllcyB0aGUgbm9ybWFsIGFzc2lnbm1lbnQgc3RhdGVtZW50Ci0gICAgICAgICAgICBydWxlcy4KLSAgICAgICAgICAgIEJlY2F1c2UgdGhlIGZpbGVzIGFyZSBwYXJzZWQgaW4gYSBzcGVjaWZpYyBvcmRlciwgdmFyaWFibGUKLSAgICAgICAgICAgIGFzc2lnbm1lbnRzIGZvciB0aGUgc2FtZSB2YXJpYWJsZSBjb3VsZCBiZSBhZmZlY3RlZC4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB0aGUgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+IGZpbGUgYW5kCi0gICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBzZXQKLSAgICAgICAgICAgIDxyZXBsYWNlYWJsZT52YXJpYWJsZTE8L3JlcGxhY2VhYmxlPiB0byBkaWZmZXJlbnQgdmFsdWVzLCBiZWNhdXNlCi0gICAgICAgICAgICB0aGUgYnVpbGQgc3lzdGVtIHBhcnNlcyA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGFmdGVyCi0gICAgICAgICAgICA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8cmVwbGFjZWFibGU+dmFyaWFibGUxPC9yZXBsYWNlYWJsZT4gaXMgYXNzaWduZWQgdGhlIHZhbHVlIGZyb20KLSAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ibWV0YWRhdGEtbWFjaGluZS1jb25maWd1cmF0aW9uLWFuZC1wb2xpY3ktY29uZmlndXJhdGlvbiI+Ci0gICAgICAgIDx0aXRsZT5NZXRhZGF0YSwgTWFjaGluZSBDb25maWd1cmF0aW9uLCBhbmQgUG9saWN5IENvbmZpZ3VyYXRpb248L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHByZXZpb3VzIHNlY3Rpb24gZGVzY3JpYmVkIHRoZSB1c2VyIGNvbmZpZ3VyYXRpb25zIHRoYXQKLSAgICAgICAgICAgIGRlZmluZSBCaXRCYWtlJ3MgZ2xvYmFsIGJlaGF2aW9yLgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHRha2VzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGxheWVycyB0aGUgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICB1c2VzIHRvIGZ1cnRoZXIgY29udHJvbCB0aGUgYnVpbGQuCi0gICAgICAgICAgICBUaGVzZSBsYXllcnMgcHJvdmlkZSBNZXRhZGF0YSBmb3IgdGhlIHNvZnR3YXJlLCBtYWNoaW5lLCBhbmQKLSAgICAgICAgICAgIHBvbGljeS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSW4gZ2VuZXJhbCwgdGhyZWUgdHlwZXMgb2YgbGF5ZXIgaW5wdXQgZXhpc3Q6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UG9saWN5IENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0aW9uIExheWVycyBwcm92aWRlIHRvcC1sZXZlbCBvciBnZW5lcmFsCi0gICAgICAgICAgICAgICAgICAgIHBvbGljaWVzIGZvciB0aGUgaW1hZ2Ugb3IgU0RLIGJlaW5nIGJ1aWx0LgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBsYXllciB3b3VsZCBkaWN0YXRlIHdoZXRoZXIgQml0QmFrZQotICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBSUE0gb3IgSVBLIHBhY2thZ2VzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFjaGluZSBDb25maWd1cmF0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBsYXllcnMgcHJvdmlkZSBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgaW5mb3JtYXRpb24gaXMgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyCi0gICAgICAgICAgICAgICAgICAgIHRhcmdldCBhcmNoaXRlY3R1cmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NZXRhZGF0YTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZSBsYXllcnMgY29udGFpbiB1c2VyLXN1cHBsaWVkIHJlY2lwZSBmaWxlcywKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2hlcywgYW5kIGFwcGVuZCBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgYW4gZXhwYW5kZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlCi0gICAgICAgICAgICBNZXRhZGF0YSwgTWFjaGluZSBDb25maWd1cmF0aW9uLCBhbmQgUG9saWN5IENvbmZpZ3VyYXRpb24gaW5wdXQKLSAgICAgICAgICAgIChsYXllcnMpIGJveGVzIG9mIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+OgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOGluIiBkZXB0aD0iNy41aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEluIGdlbmVyYWwsIGFsbCBsYXllcnMgaGF2ZSBhIHNpbWlsYXIgc3RydWN0dXJlLgotICAgICAgICAgICAgVGhleSBhbGwgY29udGFpbiBhIGxpY2Vuc2luZyBmaWxlCi0gICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+Q09QWUlORzwvZmlsZW5hbWU+KSBpZiB0aGUgbGF5ZXIgaXMgdG8gYmUKLSAgICAgICAgICAgIGRpc3RyaWJ1dGVkLCBhIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGFzIGdvb2QgcHJhY3RpY2UKLSAgICAgICAgICAgIGFuZCBlc3BlY2lhbGx5IGlmIHRoZSBsYXllciBpcyB0byBiZSBkaXN0cmlidXRlZCwgYQotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBkaXJlY3RvcnksIGFuZCByZWNpcGUgZGlyZWN0b3JpZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGhhcyBtYW55IGxheWVycyB0aGF0IGNhbiBiZSB1c2VkLgotICAgICAgICAgICAgWW91IGNhbiBzZWUgYSB3ZWItaW50ZXJmYWNlIGxpc3Rpbmcgb2YgdGhlbSBvbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8iPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgotICAgICAgICAgICAgcGFnZS4KLSAgICAgICAgICAgIFRoZSBsYXllcnMgYXJlIHNob3duIGF0IHRoZSBib3R0b20gY2F0ZWdvcml6ZWQgdW5kZXIKLSAgICAgICAgICAgICJZb2N0byBNZXRhZGF0YSBMYXllcnMuIgotICAgICAgICAgICAgVGhlc2UgbGF5ZXJzIGFyZSBmdW5kYW1lbnRhbGx5IGEgc3Vic2V0IG9mIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvbGF5ZXJzLyI+T3BlbkVtYmVkZGVkIE1ldGFkYXRhIEluZGV4PC91bGluaz4sCi0gICAgICAgICAgICB3aGljaCBsaXN0cyBhbGwgbGF5ZXJzIHByb3ZpZGVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgY29tbXVuaXR5LgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgTGF5ZXJzIGV4aXN0IGluIHRoZSBZb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXMgdGhhdAotICAgICAgICAgICAgICAgIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgT3BlbkVtYmVkZGVkIE1ldGFkYXRhIEluZGV4LgotICAgICAgICAgICAgICAgIFRoZXNlIGxheWVycyBhcmUgZWl0aGVyIGRlcHJlY2F0ZWQgb3IgZXhwZXJpbWVudGFsIGluIG5hdHVyZS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSwKLSAgICAgICAgICAgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIHVzZXIgY29uZmlndXJhdGlvbiwgdG8gZmluZCB3aGF0IGxheWVycyBpdAotICAgICAgICAgICAgc2hvdWxkIGJlIHVzaW5nIGFzIHBhcnQgb2YgdGhlIGJ1aWxkLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0iZGlzdHJvLWxheWVyIj4KLSAgICAgICAgICAgIDx0aXRsZT5EaXN0cm8gTGF5ZXI8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZGlzdHJpYnV0aW9uIGxheWVyIHByb3ZpZGVzIHBvbGljeSBjb25maWd1cmF0aW9ucyBmb3IgeW91cgotICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgICAgICBCZXN0IHByYWN0aWNlcyBkaWN0YXRlIHRoYXQgeW91IGlzb2xhdGUgdGhlc2UgdHlwZXMgb2YKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBpbnRvIHRoZWlyIG93biBsYXllci4KLSAgICAgICAgICAgICAgICBTZXR0aW5ncyB5b3UgcHJvdmlkZSBpbgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2Rpc3Ryby88cmVwbGFjZWFibGU+ZGlzdHJvPC9yZXBsYWNlYWJsZT4uY29uZjwvZmlsZW5hbWU+IG92ZXJyaWRlCi0gICAgICAgICAgICAgICAgc2ltaWxhcgotICAgICAgICAgICAgICAgIHNldHRpbmdzIHRoYXQgQml0QmFrZSBmaW5kcyBpbiB5b3VyCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlIEJ1aWxkCi0gICAgICAgICAgICAgICAgRGlyZWN0b3J5LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgcHJvdmlkZXMgc29tZSBleHBsYW5hdGlvbiBhbmQgcmVmZXJlbmNlcwotICAgICAgICAgICAgICAgIGZvciB3aGF0IHlvdSB0eXBpY2FsbHkgZmluZCBpbiB0aGUgZGlzdHJpYnV0aW9uIGxheWVyOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Y2xhc3Nlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgZmlsZXMgKDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+KSBob2xkCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tb24gZnVuY3Rpb25hbGl0eSB0aGF0IGNhbiBiZSBzaGFyZWQgYW1vbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91ciByZWNpcGVzIGluaGVyaXQgYSBjbGFzcywgdGhleSB0YWtlIG9uIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MgYW5kIGZ1bmN0aW9ucyBmb3IgdGhhdCBjbGFzcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IGNsYXNzIGZpbGVzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzJz5DbGFzc2VzPC9saW5rPiIgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmNvbmY6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJlYSBob2xkcyBjb25maWd1cmF0aW9uIGZpbGVzIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyICg8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4pLAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRpc3RyaWJ1dGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5jb25mL2Rpc3Ryby88cmVwbGFjZWFibGU+ZGlzdHJvPC9yZXBsYWNlYWJsZT4uY29uZjwvZmlsZW5hbWU+KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbnkgZGlzdHJpYnV0aW9uLXdpZGUgaW5jbHVkZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnJlY2lwZXMtKjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUmVjaXBlcyBhbmQgYXBwZW5kIGZpbGVzIHRoYXQgYWZmZWN0IGNvbW1vbgotICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBhY3Jvc3MgdGhlIGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJlYSBjb3VsZCBpbmNsdWRlIHJlY2lwZXMgYW5kIGFwcGVuZCBmaWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWRkIGRpc3RyaWJ1dGlvbi1zcGVjaWZpYyBjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gc2NyaXB0cywgY3VzdG9tIGltYWdlIHJlY2lwZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGguPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0iYnNwLWxheWVyIj4KLSAgICAgICAgICAgIDx0aXRsZT5CU1AgTGF5ZXI8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgQlNQIExheWVyIHByb3ZpZGVzIG1hY2hpbmUgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgRXZlcnl0aGluZyBpbiB0aGlzIGxheWVyIGlzIHNwZWNpZmljIHRvIHRoZSBtYWNoaW5lIGZvciB3aGljaAotICAgICAgICAgICAgICAgIHlvdSBhcmUgYnVpbGRpbmcgdGhlIGltYWdlIG9yIHRoZSBTREsuCi0gICAgICAgICAgICAgICAgQSBjb21tb24gc3RydWN0dXJlIG9yIGZvcm0gaXMgZGVmaW5lZCBmb3IgQlNQIGxheWVycy4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgdGhpcyBzdHJ1Y3R1cmUgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciBhIEJTUCBsYXllciB0byBiZSBjb25zaWRlcmVkIGNvbXBsaWFudCB3aXRoIHRoZQotICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LCBpdCBtdXN0IG1lZXQgc29tZSBzdHJ1Y3R1cmFsIHJlcXVpcmVtZW50cy4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBCU1AgTGF5ZXIncyBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSBjb250YWlucwotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRoZSBtYWNoaW5lCi0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5jb25mL21hY2hpbmUvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi5jb25mPC9maWxlbmFtZT4pIGFuZCwKLSAgICAgICAgICAgICAgICBvZiBjb3Vyc2UsIHRoZSBsYXllciAoPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGUgbGF5ZXIgaXMgZGVkaWNhdGVkIHRvIHNwZWNpZmljIHJlY2lwZXMKLSAgICAgICAgICAgICAgICBieSBmdW5jdGlvbjogPGZpbGVuYW1lPnJlY2lwZXMtYnNwPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtY29yZTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWdyYXBoaWNzPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWtlcm5lbDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIE1ldGFkYXRhIGNhbiBleGlzdCBmb3IgbXVsdGlwbGUgZm9ybWZhY3RvcnMsIGdyYXBoaWNzCi0gICAgICAgICAgICAgICAgc3VwcG9ydCBzeXN0ZW1zLCBhbmQgc28gZm9ydGguCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoZSBmaWd1cmUgc2hvd3Mgc2V2ZXJhbCA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMsIG5vdCBhbGwgdGhlc2UgZGlyZWN0b3JpZXMgYXBwZWFyIGluIGFsbAotICAgICAgICAgICAgICAgICAgICBCU1AgbGF5ZXJzLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSJzb2Z0d2FyZS1sYXllciI+Ci0gICAgICAgICAgICA8dGl0bGU+U29mdHdhcmUgTGF5ZXI8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgc29mdHdhcmUgbGF5ZXIgcHJvdmlkZXMgdGhlIE1ldGFkYXRhIGZvciBhZGRpdGlvbmFsCi0gICAgICAgICAgICAgICAgc29mdHdhcmUgcGFja2FnZXMgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgIFRoaXMgbGF5ZXIgZG9lcyBub3QgaW5jbHVkZSBNZXRhZGF0YSB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZQotICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBvciB0aGUgbWFjaGluZSwgd2hpY2ggYXJlIGZvdW5kIGluIHRoZWlyCi0gICAgICAgICAgICAgICAgcmVzcGVjdGl2ZSBsYXllcnMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoaXMgbGF5ZXIgY29udGFpbnMgYW55IG5ldyByZWNpcGVzIHRoYXQgeW91ciBwcm9qZWN0IG5lZWRzCi0gICAgICAgICAgICAgICAgaW4gdGhlIGZvcm0gb2YgcmVjaXBlIGZpbGVzLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9InNvdXJjZXMtZGV2LWVudmlyb25tZW50Ij4KLSAgICAgICAgPHRpdGxlPlNvdXJjZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSW4gb3JkZXIgZm9yIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhbiBpbWFnZSBvcgotICAgICAgICAgICAgYW55IHRhcmdldCwgaXQgbXVzdCBiZSBhYmxlIHRvIGFjY2VzcyBzb3VyY2UgZmlsZXMuCi0gICAgICAgICAgICBUaGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPgotICAgICAgICAgICAgcmVwcmVzZW50cyBzb3VyY2UgZmlsZXMgdXNpbmcgdGhlICJVcHN0cmVhbSBQcm9qZWN0IFJlbGVhc2VzIiwKLSAgICAgICAgICAgICJMb2NhbCBQcm9qZWN0cyIsIGFuZCAiU0NNcyAob3B0aW9uYWwpIiBib3hlcy4KLSAgICAgICAgICAgIFRoZSBmaWd1cmUgcmVwcmVzZW50cyBtaXJyb3JzLCB3aGljaCBhbHNvIHBsYXkgYSByb2xlIGluIGxvY2F0aW5nCi0gICAgICAgICAgICBzb3VyY2UgZmlsZXMsIHdpdGggdGhlICJTb3VyY2UgTWlycm9yKHMpIiBib3guCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBtZXRob2QgYnkgd2hpY2ggc291cmNlIGZpbGVzIGFyZSB1bHRpbWF0ZWx5IG9yZ2FuaXplZCBpcwotICAgICAgICAgICAgYSBmdW5jdGlvbiBvZiB0aGUgcHJvamVjdC4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCBmb3IgcmVsZWFzZWQgc29mdHdhcmUsIHByb2plY3RzIHRlbmQgdG8gdXNlIHRhcmJhbGxzCi0gICAgICAgICAgICBvciBvdGhlciBhcmNoaXZlZCBmaWxlcyB0aGF0IGNhbiBjYXB0dXJlIHRoZSBzdGF0ZSBvZiBhIHJlbGVhc2UKLSAgICAgICAgICAgIGd1YXJhbnRlZWluZyB0aGF0IGl0IGlzIHN0YXRpY2FsbHkgcmVwcmVzZW50ZWQuCi0gICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgZm9yIGEgcHJvamVjdCB0aGF0IGlzIG1vcmUgZHluYW1pYyBvcgotICAgICAgICAgICAgZXhwZXJpbWVudGFsIGluIG5hdHVyZSwgYSBwcm9qZWN0IG1pZ2h0IGtlZXAgc291cmNlIGZpbGVzIGluIGEKLSAgICAgICAgICAgIHJlcG9zaXRvcnkgY29udHJvbGxlZCBieSBhIFNvdXJjZSBDb250cm9sIE1hbmFnZXIgKFNDTSkgc3VjaCBhcwotICAgICAgICAgICAgR2l0LgotICAgICAgICAgICAgUHVsbGluZyBzb3VyY2UgZnJvbSBhIHJlcG9zaXRvcnkgYWxsb3dzIHlvdSB0byBjb250cm9sCi0gICAgICAgICAgICB0aGUgcG9pbnQgaW4gdGhlIHJlcG9zaXRvcnkgKHRoZSByZXZpc2lvbikgZnJvbSB3aGljaCB5b3Ugd2FudCB0bwotICAgICAgICAgICAgYnVpbGQgc29mdHdhcmUuCi0gICAgICAgICAgICBGaW5hbGx5LCBhIGNvbWJpbmF0aW9uIG9mIHRoZSB0d28gbWlnaHQgZXhpc3QsIHdoaWNoIHdvdWxkIGdpdmUgdGhlCi0gICAgICAgICAgICBjb25zdW1lciBhIGNob2ljZSB3aGVuIGRlY2lkaW5nIHdoZXJlIHRvIGdldCBzb3VyY2UgZmlsZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJpdEJha2UgdXNlcyB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUgdG8gcG9pbnQgdG8gc291cmNlIGZpbGVzIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgbG9jYXRpb24uCi0gICAgICAgICAgICBFYWNoIHJlY2lwZSBtdXN0IGhhdmUgYSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHZhcmlhYmxlCi0gICAgICAgICAgICB0aGF0IHBvaW50cyB0byB0aGUgc291cmNlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBbm90aGVyIGFyZWEgdGhhdCBwbGF5cyBhIHNpZ25pZmljYW50IHJvbGUgaW4gd2hlcmUgc291cmNlIGZpbGVzCi0gICAgICAgICAgICBjb21lIGZyb20gaXMgcG9pbnRlZCB0byBieSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgVGhpcyBhcmVhIGlzIGEgY2FjaGUgdGhhdCBjYW4gaG9sZCBwcmV2aW91c2x5IGRvd25sb2FkZWQgc291cmNlLgotICAgICAgICAgICAgWW91IGNhbiBhbHNvIGluc3RydWN0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZQotICAgICAgICAgICAgdGFyYmFsbHMgZnJvbSBHaXQgcmVwb3NpdG9yaWVzLCB3aGljaCBpcyBub3QgdGhlIGRlZmF1bHQgYmVoYXZpb3IsCi0gICAgICAgICAgICBhbmQgc3RvcmUgdGhlbSBpbiB0aGUgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+IGJ5IHVzaW5nIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyc+PGZpbGVuYW1lPkJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEp1ZGljaW91cyB1c2Ugb2YgYSA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gZGlyZWN0b3J5IGNhbgotICAgICAgICAgICAgc2F2ZSB0aGUgYnVpbGQgc3lzdGVtIGEgdHJpcCBhY3Jvc3MgdGhlIEludGVybmV0IHdoZW4gbG9va2luZwotICAgICAgICAgICAgZm9yIGZpbGVzLgotICAgICAgICAgICAgQSBnb29kIG1ldGhvZCBmb3IgdXNpbmcgYSBkb3dubG9hZCBkaXJlY3RvcnkgaXMgdG8gaGF2ZQotICAgICAgICAgICAgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+IHBvaW50IHRvIGFuIGFyZWEgb3V0c2lkZSBvZiB5b3VyCi0gICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkuCi0gICAgICAgICAgICBEb2luZyBzbyBhbGxvd3MgeW91IHRvIHNhZmVseSBkZWxldGUgdGhlIEJ1aWxkIERpcmVjdG9yeQotICAgICAgICAgICAgaWYgbmVlZGVkIHdpdGhvdXQgZmVhciBvZiByZW1vdmluZyBhbnkgZG93bmxvYWRlZCBzb3VyY2UgZmlsZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBkZWVwZXIgbG9vayBpbnRvIHRoZQotICAgICAgICAgICAgc291cmNlIGZpbGVzIGFuZCB0aGUgbWlycm9ycy4KLSAgICAgICAgICAgIEhlcmUgaXMgYSBtb3JlIGRldGFpbGVkIGxvb2sgYXQgdGhlIHNvdXJjZSBmaWxlIGFyZWEgb2YgdGhlCi0gICAgICAgICAgICBiYXNlIGZpZ3VyZToKLSAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iN2luIiBkZXB0aD0iNy41aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ndXBzdHJlYW0tcHJvamVjdC1yZWxlYXNlcyc+Ci0gICAgICAgICAgICA8dGl0bGU+VXBzdHJlYW0gUHJvamVjdCBSZWxlYXNlczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVwc3RyZWFtIHByb2plY3QgcmVsZWFzZXMgZXhpc3QgYW55d2hlcmUgaW4gdGhlIGZvcm0gb2YgYW4KLSAgICAgICAgICAgICAgICBhcmNoaXZlZCBmaWxlIChlLmcuIHRhcmJhbGwgb3IgemlwIGZpbGUpLgotICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGNvcnJlc3BvbmQgdG8gaW5kaXZpZHVhbCByZWNpcGVzLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZmlndXJlIHVzZXMgc3BlY2lmaWMgcmVsZWFzZXMgZWFjaCBmb3IKLSAgICAgICAgICAgICAgICBCdXN5Qm94LCBRdCwgYW5kIERidXMuCi0gICAgICAgICAgICAgICAgQW4gYXJjaGl2ZSBmaWxlIGNhbiBiZSBmb3IgYW55IHJlbGVhc2VkIHByb2R1Y3QgdGhhdCBjYW4gYmUKLSAgICAgICAgICAgICAgICBidWlsdCB1c2luZyBhIHJlY2lwZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdsb2NhbC1wcm9qZWN0cyc+Ci0gICAgICAgICAgICA8dGl0bGU+TG9jYWwgUHJvamVjdHM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBMb2NhbCBwcm9qZWN0cyBhcmUgY3VzdG9tIGJpdHMgb2Ygc29mdHdhcmUgdGhlIHVzZXIgcHJvdmlkZXMuCi0gICAgICAgICAgICAgICAgVGhlc2UgYml0cyByZXNpZGUgc29tZXdoZXJlIGxvY2FsIHRvIGEgcHJvamVjdCAtIHBlcmhhcHMKLSAgICAgICAgICAgICAgICBhIGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRoZSB1c2VyIGNoZWNrcyBpbiBpdGVtcyAoZS5nLgotICAgICAgICAgICAgICAgIGEgbG9jYWwgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBkZXZlbG9wbWVudCBzb3VyY2UgdHJlZQotICAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIGdyb3VwKS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGNhbm9uaWNhbCBtZXRob2QgdGhyb3VnaCB3aGljaCB0byBpbmNsdWRlIGEgbG9jYWwgcHJvamVjdAotICAgICAgICAgICAgICAgIGlzIHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgY2xhc3MgdG8gaW5jbHVkZSB0aGF0IGxvY2FsIHByb2plY3QuCi0gICAgICAgICAgICAgICAgWW91IHVzZSBlaXRoZXIgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgYQotICAgICAgICAgICAgICAgIHJlY2lwZSdzIGFwcGVuZCBmaWxlIHRvIG92ZXJyaWRlIG9yIHNldCB0aGUKLSAgICAgICAgICAgICAgICByZWNpcGUgdG8gcG9pbnQgdG8gdGhlIGxvY2FsIGRpcmVjdG9yeSBvbiB5b3VyIGRpc2sgdG8gcHVsbAotICAgICAgICAgICAgICAgIGluIHRoZSB3aG9sZSBzb3VyY2UgdHJlZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT4gY2xhc3MsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZXh0ZXJuYWxzcmMnPjxmaWxlbmFtZT5leHRlcm5hbHNyYy5iYmNsYXNzPC9maWxlbmFtZT48L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nc2Ntcyc+Ci0gICAgICAgICAgICA8dGl0bGU+U291cmNlIENvbnRyb2wgTWFuYWdlcnMgKE9wdGlvbmFsKTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFub3RoZXIgcGxhY2UgdGhlIGJ1aWxkIHN5c3RlbSBjYW4gZ2V0IHNvdXJjZSBmaWxlcyBmcm9tIGlzCi0gICAgICAgICAgICAgICAgdGhyb3VnaCBhbiBTQ00gc3VjaCBhcyBHaXQgb3IgU3VidmVyc2lvbi4KLSAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGEgcmVwb3NpdG9yeSBpcyBjbG9uZWQgb3IgY2hlY2tlZCBvdXQuCi0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0YXNrIGluc2lkZSBCaXRCYWtlIHVzZXMKLSAgICAgICAgICAgICAgICB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIHRoZSBhcmd1bWVudCdzIHByZWZpeCB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3QKLSAgICAgICAgICAgICAgICBmZXRjaGVyIG1vZHVsZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBoYXZlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgZ2VuZXJhdGUgdGFyYmFsbHMgZm9yIEdpdCByZXBvc2l0b3JpZXMgYW5kIHBsYWNlIHRoZW0gaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgc2VlIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnPjxmaWxlbmFtZT5CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgIDwvbm90ZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgV2hlbiBmZXRjaGluZyBhIHJlcG9zaXRvcnksIEJpdEJha2UgdXNlcyB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gZGV0ZXJtaW5lIHRoZSBzcGVjaWZpYyByZXZpc2lvbiBmcm9tIHdoaWNoIHRvCi0gICAgICAgICAgICAgICAgYnVpbGQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nc291cmNlLW1pcnJvcnMnPgotICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBNaXJyb3Iocyk8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUd28ga2luZHMgb2YgbWlycm9ycyBleGlzdDogcHJlLW1pcnJvcnMgYW5kIHJlZ3VsYXIgbWlycm9ycy4KLSAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLVBSRU1JUlJPUlMnPjxmaWxlbmFtZT5QUkVNSVJST1JTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1JUlJPUlMnPjxmaWxlbmFtZT5NSVJST1JTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGVzIHBvaW50IHRvIHRoZXNlLCByZXNwZWN0aXZlbHkuCi0gICAgICAgICAgICAgICAgQml0QmFrZSBjaGVja3MgcHJlLW1pcnJvcnMgYmVmb3JlIGxvb2tpbmcgdXBzdHJlYW0gZm9yIGFueQotICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcy4KLSAgICAgICAgICAgICAgICBQcmUtbWlycm9ycyBhcmUgYXBwcm9wcmlhdGUgd2hlbiB5b3UgaGF2ZSBhIHNoYXJlZCBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICB0aGF0IGlzIG5vdCBhIGRpcmVjdG9yeSBkZWZpbmVkIGJ5IHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBBIFByZS1taXJyb3IgdHlwaWNhbGx5IHBvaW50cyB0byBhIHNoYXJlZCBkaXJlY3RvcnkgdGhhdCBpcwotICAgICAgICAgICAgICAgIGxvY2FsIHRvIHlvdXIgb3JnYW5pemF0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBSZWd1bGFyIG1pcnJvcnMgY2FuIGJlIGFueSBzaXRlIGFjcm9zcyB0aGUgSW50ZXJuZXQgdGhhdCBpcwotICAgICAgICAgICAgICAgIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgbG9jYXRpb24gZm9yIHNvdXJjZSBjb2RlIHNob3VsZCB0aGUKLSAgICAgICAgICAgICAgICBwcmltYXJ5IHNpdGUgbm90IGJlIGZ1bmN0aW9uaW5nIGZvciBzb21lIHJlYXNvbiBvciBhbm90aGVyLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9InBhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Ij4KLSAgICAgICAgPHRpdGxlPlBhY2thZ2UgRmVlZHM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBnZW5lcmF0ZXMgYW4gaW1hZ2Ugb3IgYW4gU0RLLAotICAgICAgICAgICAgaXQgZ2V0cyB0aGUgcGFja2FnZXMgZnJvbSBhIHBhY2thZ2UgZmVlZCBhcmVhIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICBUaGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPgotICAgICAgICAgICAgc2hvd3MgdGhpcyBwYWNrYWdlIGZlZWRzIGFyZWEgaW4gdGhlIHVwcGVyLXJpZ2h0IGNvcm5lci4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGxvb2tzIGEgbGl0dGxlIGNsb3NlciBpbnRvIHRoZSBwYWNrYWdlIGZlZWRzIGFyZWEgdXNlZAotICAgICAgICAgICAgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgIEhlcmUgaXMgYSBtb3JlIGRldGFpbGVkIGxvb2sgYXQgdGhlIGFyZWE6Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI2aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFBhY2thZ2UgZmVlZHMgYXJlIGFuIGludGVybWVkaWFyeSBzdGVwIGluIHRoZSBidWlsZCBwcm9jZXNzLgotICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvdmlkZXMgY2xhc3NlcyB0byBnZW5lcmF0ZQotICAgICAgICAgICAgZGlmZmVyZW50IHBhY2thZ2UgdHlwZXMsIGFuZCB5b3Ugc3BlY2lmeSB3aGljaCBjbGFzc2VzIHRvIGVuYWJsZQotICAgICAgICAgICAgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgQmVmb3JlIHBsYWNpbmcgdGhlIHBhY2thZ2VzIGludG8gcGFja2FnZSBmZWVkcywKLSAgICAgICAgICAgIHRoZSBidWlsZCBwcm9jZXNzIHZhbGlkYXRlcyB0aGVtIHdpdGggZ2VuZXJhdGVkIG91dHB1dCBxdWFsaXR5Ci0gICAgICAgICAgICBhc3N1cmFuY2UgY2hlY2tzIHRocm91Z2ggdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbnNhbmUnPjxmaWxlbmFtZT5pbnNhbmU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIGNsYXNzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgcGFja2FnZSBmZWVkIGFyZWEgcmVzaWRlcyBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LgotICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgdG8gdGVtcG9yYXJpbHkgc3RvcmUgcGFja2FnZXMKLSAgICAgICAgICAgIGlzIGRldGVybWluZWQgYnkgYSBjb21iaW5hdGlvbiBvZiB2YXJpYWJsZXMgYW5kIHRoZSBwYXJ0aWN1bGFyCi0gICAgICAgICAgICBwYWNrYWdlIG1hbmFnZXIgaW4gdXNlLgotICAgICAgICAgICAgU2VlIHRoZSAiUGFja2FnZSBGZWVkcyIgYm94IGluIHRoZSBpbGx1c3RyYXRpb24gYW5kIG5vdGUgdGhlCi0gICAgICAgICAgICBpbmZvcm1hdGlvbiB0byB0aGUgcmlnaHQgb2YgdGhhdCBhcmVhLgotICAgICAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyBkZWZpbmVzIHdoZXJlIHBhY2thZ2UgZmlsZXMgYXJlCi0gICAgICAgICAgICBrZXB0OgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBEZWZpbmVkIGFzIDxmaWxlbmFtZT50bXAvZGVwbG95PC9maWxlbmFtZT4gaW4gdGhlIEJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ERVBMT1lfRElSXyo8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBwYWNrYWdlIG1hbmFnZXIgdXNlZCwgdGhlIHBhY2thZ2UgdHlwZQotICAgICAgICAgICAgICAgICAgICBzdWItZm9sZGVyLgotICAgICAgICAgICAgICAgICAgICBHaXZlbiBSUE0sIElQSywgb3IgREVCIHBhY2thZ2luZyBhbmQgdGFyYmFsbCBjcmVhdGlvbiwgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX1JQTSc+PGZpbGVuYW1lPkRFUExPWV9ESVJfUlBNPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9JUEsnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lQSzwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfREVCJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9ERUI8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX1RBUic+PGZpbGVuYW1lPkRFUExPWV9ESVJfVEFSPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgYXJlIHVzZWQsIHJlc3BlY3RpdmVseS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIERlZmluZXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHN1Yi1mb2xkZXJzLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcGFja2FnZXMgY291bGQgZXhpc3QgZm9yIHRoZSBpNTg2IG9yIHFlbXV4ODYKLSAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4gdGFza3MgdG8KLSAgICAgICAgICAgIGdlbmVyYXRlIHBhY2thZ2VzIGFuZCBwbGFjZSB0aGVtIGludG8gdGhlIHBhY2thZ2UgaG9sZGluZyBhcmVhIChlLmcuCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPiBmb3IgSVBLIHBhY2thZ2VzKS4KLSAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2RlYjwvZmlsZW5hbWU+PC9saW5rPiIsCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfaXBrJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPjwvbGluaz4iLAotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3JwbSc+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfcnBtPC9maWxlbmFtZT48L2xpbms+IiwKLSAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3Rhcic+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfdGFyPC9maWxlbmFtZT48L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbnMgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciBhIHNjZW5hcmlvIHdoZXJlIGFuIElQSyBwYWNrYWdpbmcgbWFuYWdlcgotICAgICAgICAgICAgaXMgYmVpbmcgdXNlZCBhbmQgcGFja2FnZSBhcmNoaXRlY3R1cmUgc3VwcG9ydCBmb3IgYm90aCBpNTg2Ci0gICAgICAgICAgICBhbmQgcWVtdXg4NiBleGlzdC4KLSAgICAgICAgICAgIFBhY2thZ2VzIGZvciB0aGUgaTU4NiBhcmNoaXRlY3R1cmUgYXJlIHBsYWNlZCBpbgotICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvaXBrL2k1ODY8L2ZpbGVuYW1lPiwgd2hpbGUgcGFja2FnZXMgZm9yCi0gICAgICAgICAgICB0aGUgcWVtdXg4NiBhcmNoaXRlY3R1cmUgYXJlIHBsYWNlZCBpbgotICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvaXBrL3FlbXV4ODY8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdiaXRiYWtlLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgIDx0aXRsZT5CaXRCYWtlPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4KLSAgICAgICAgICAgIHRvIHByb2R1Y2UgaW1hZ2VzLgotICAgICAgICAgICAgWW91IGNhbiBzZWUgZnJvbSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPiwKLSAgICAgICAgICAgIHRoZSBCaXRCYWtlIGFyZWEgY29uc2lzdHMgb2Ygc2V2ZXJhbCBmdW5jdGlvbmFsIGFyZWFzLgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHRha2VzIGEgY2xvc2VyIGxvb2sgYXQgZWFjaCBvZiB0aG9zZSBhcmVhcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgU2VwYXJhdGUgZG9jdW1lbnRhdGlvbiBleGlzdHMgZm9yIHRoZSBCaXRCYWtlIHRvb2wuCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPgotICAgICAgICAgICAgZm9yIHJlZmVyZW5jZSBtYXRlcmlhbCBvbiBCaXRCYWtlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3NvdXJjZS1mZXRjaGluZy1kZXYtZW52aXJvbm1lbnQnPgotICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBGZXRjaGluZzwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBzdGFnZXMgb2YgYnVpbGRpbmcgYSByZWNpcGUgYXJlIHRvIGZldGNoIGFuZCB1bnBhY2sKLSAgICAgICAgICAgICAgICB0aGUgc291cmNlIGNvZGU6Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2LjVpbiIgZGVwdGg9IjVpbiIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtdW5wYWNrJz48ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFza3MgZmV0Y2ggdGhlIHNvdXJjZSBmaWxlcyBhbmQgdW5wYWNrIHRoZW0gaW50byB0aGUgd29yawotICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV2ZXJ5IGxvY2FsIGZpbGUgKGUuZy4gPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyBwYXJ0IG9mIGEgcmVjaXBlJ3MKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdGFrZXMgYSBjaGVja3N1bQotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZmlsZSBmb3IgdGhlIHJlY2lwZSBhbmQgaW5zZXJ0cyB0aGUgY2hlY2tzdW0gaW50bwotICAgICAgICAgICAgICAgICAgICB0aGUgc2lnbmF0dXJlIGZvciB0aGUgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIElmIGFueSBsb2NhbCBmaWxlIGhhcyBiZWVuIG1vZGlmaWVkLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4gdGFzayBhbmQgYWxsIHRhc2tzIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgZGVwZW5kIG9uIGl0IGFyZSByZS1leGVjdXRlZC4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgZXZlcnl0aGluZyBpcyBhY2NvbXBsaXNoZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAotICAgICAgICAgICAgICAgIHdoaWNoIGhhcyBhIGRlZmluZWQgc3RydWN0dXJlLgotICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdGhlIEJ1aWxkIERpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLWJ1aWxkJz48ZmlsZW5hbWU+YnVpbGQvPC9maWxlbmFtZT48L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVucGFja2VkIHNvdXJjZSBmaWxlcyBhcmUgcG9pbnRlZCB0byBieSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvbGluaz4gdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgRWFjaCByZWNpcGUgaGFzIGFuIGFyZWEgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSB3aGVyZSB0aGUKLSAgICAgICAgICAgICAgICB1bnBhY2tlZCBzb3VyY2UgY29kZSByZXNpZGVzLgotICAgICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoYXQgZGlyZWN0b3J5IGZvciBhbnkgZ2l2ZW4gcmVjaXBlIGlzIGRlZmluZWQgZnJvbQotICAgICAgICAgICAgICAgIHNldmVyYWwgZGlmZmVyZW50IHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgdmFyaWFibGVzIHRoYXQgZGVmaW5lIHRoZXNlIGRpcmVjdG9yaWVzCi0gICAgICAgICAgICAgICAgYnkgbG9va2luZyBhdCB0aGUgZmlndXJlOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIGRpcmVjdG9yeSB3aGVyZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybXMgYWxsIGl0cyB3b3JrIGR1cmluZyB0aGUgYnVpbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgYnVpbHQgcGFja2FnZSBvciBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9PUyc+PGZpbGVuYW1lPlRBUkdFVF9PUzwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgb3BlcmF0aW5nIHN5c3RlbSBvZiB0aGUgdGFyZ2V0IGRldmljZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGJ1aWx0IHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIG9mIHRoZSByZWNpcGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJldmlzaW9uIG9mIHRoZSByZWNpcGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsb2NhdGlvbiB3aXRoaW4gPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IHdoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIHBhY2thZ2UgaXMgYnVpbHQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBDb250YWlucyB0aGUgdW5wYWNrZWQgc291cmNlIGZpbGVzIGZvciBhIGdpdmVuIHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3BhdGNoaW5nLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgICAgICA8dGl0bGU+UGF0Y2hpbmc8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBPbmNlIHNvdXJjZSBjb2RlIGlzIGZldGNoZWQgYW5kIHVucGFja2VkLCBCaXRCYWtlIGxvY2F0ZXMKLSAgICAgICAgICAgICAgICBwYXRjaCBmaWxlcyBhbmQgYXBwbGllcyB0aGVtIHRvIHRoZSBzb3VyY2UgZmlsZXM6Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3BhdGNoaW5nLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjVpbiIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0YXNrIHByb2Nlc3NlcyByZWNpcGVzIGJ5Ci0gICAgICAgICAgICAgICAgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gbG9jYXRlIGFwcGxpY2FibGUgcGF0Y2ggZmlsZXMsIHdoaWNoIGJ5IGRlZmF1bHQKLSAgICAgICAgICAgICAgICBhcmUgPGZpbGVuYW1lPioucGF0Y2g8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLmRpZmY8L2ZpbGVuYW1lPiBmaWxlcywgb3IgYW55IGZpbGUgaWYKLSAgICAgICAgICAgICAgICAiYXBwbHk9eWVzIiBpcyBzcGVjaWZpZWQgZm9yIHRoZSBmaWxlIGluCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQml0QmFrZSBmaW5kcyBhbmQgYXBwbGllcyBtdWx0aXBsZSBwYXRjaGVzIGZvciBhIHNpbmdsZSByZWNpcGUKLSAgICAgICAgICAgICAgICBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggaXQgZmluZHMgdGhlIHBhdGNoZXMuCi0gICAgICAgICAgICAgICAgUGF0Y2hlcyBhcmUgYXBwbGllZCB0byB0aGUgcmVjaXBlJ3Mgc291cmNlIGZpbGVzIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRoZSBzb3VyY2UgZGlyZWN0b3JpZXMgYXJlCi0gICAgICAgICAgICAgICAgY3JlYXRlZCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzb3VyY2UtZmV0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5Tb3VyY2UgRmV0Y2hpbmc8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nY29uZmlndXJhdGlvbi1hbmQtY29tcGlsYXRpb24tZGV2LWVudmlyb25tZW50Jz4KLSAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uIGFuZCBDb21waWxhdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFmdGVyIHNvdXJjZSBjb2RlIGlzIHBhdGNoZWQsIEJpdEJha2UgZXhlY3V0ZXMgdGFza3MgdGhhdAotICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSBhbmQgY29tcGlsZSB0aGUgc291cmNlIGNvZGU6Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjdpbiIgZGVwdGg9IjVpbiIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBzdGVwIGluIHRoZSBidWlsZCBwcm9jZXNzIGNvbnNpc3RzIG9mIHRocmVlIHRhc2tzOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayBzZXRzIHVwIHRoZSB0d28gc3lzcm9vdHMgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnJlY2lwZS1zeXNyb290PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3QtbmF0aXZlPC9maWxlbmFtZT4pIHNvIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzeXNyb290cyBjb250YWluIHRoZSBjb250ZW50cyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wb3B1bGF0ZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdGFza3Mgb2YgdGhlIHJlY2lwZXMgb24gd2hpY2ggdGhlIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmluZyB0aGUgdGFza3MgZGVwZW5kcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgc3lzcm9vdCBleGlzdHMgZm9yIGJvdGggdGhlIHRhcmdldCBhbmQgZm9yIHRoZSBuYXRpdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyaWVzLCB3aGljaCBydW4gb24gdGhlIGhvc3Qgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgY29uZmlndXJlcyB0aGUgc291cmNlIGJ5IGVuYWJsaW5nIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsaW5nIGFueSBidWlsZC10aW1lIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc29mdHdhcmUgYmVpbmcgYnVpbHQuCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9ucyBjYW4gY29tZSBmcm9tIHRoZSByZWNpcGUgaXRzZWxmIGFzIHdlbGwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzIGZyb20gYW4gaW5oZXJpdGVkIGNsYXNzLgotICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgc29mdHdhcmUgaXRzZWxmIG1pZ2h0IGNvbmZpZ3VyZSBpdHNlbGYKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGZvciB3aGljaCBpdCBpcyBiZWluZyBidWlsdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGNvbmZpZ3VyYXRpb25zIGhhbmRsZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXNrIGFyZSBzcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICAgICAgdG8gc291cmNlIGNvZGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHNvdXJjZSBjb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBidWlsdCBieSB0aGUgcmVjaXBlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGFyZSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWF1dG90b29scyc+PGZpbGVuYW1lPmF1dG90b29sczwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGFkZCBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBieSB1c2luZwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9PRUNPTkYnPjxmaWxlbmFtZT5FWFRSQV9PRUNPTkY8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRUNPTkZJR19DT05GQVJHUyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdGhpcyB2YXJpYWJsZSB3b3JrcyB3aXRoaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY2xhc3MsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSBhIGNvbmZpZ3VyYXRpb24gdGFzayBoYXMgYmVlbiBzYXRpc2ZpZWQsIEJpdEJha2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVzIHRoZSBzb3VyY2UgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCi0gICAgICAgICAgICAgICAgICAgICAgICBDb21waWxhdGlvbiBvY2N1cnMgaW4gdGhlIGRpcmVjdG9yeSBwb2ludGVkIHRvIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUInPjxmaWxlbmFtZT5CPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCB0aGUgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMsIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0LCB0aGUgc2FtZSBhcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgY29tcGlsYXRpb24gaXMgZG9uZSwgQml0QmFrZSBleGVjdXRlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdGFzay4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayBjb3BpZXMgZmlsZXMgZnJvbSB0aGUgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCBwbGFjZXMgdGhlbSBpbiBhIGhvbGRpbmcgYXJlYSBwb2ludGVkIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1EJz48ZmlsZW5hbWU+RDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ncGFja2FnZS1zcGxpdHRpbmctZGV2LWVudmlyb25tZW50Jz4KLSAgICAgICAgICAgIDx0aXRsZT5QYWNrYWdlIFNwbGl0dGluZzwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFmdGVyIHNvdXJjZSBjb2RlIGlzIGNvbmZpZ3VyZWQgYW5kIGNvbXBpbGVkLCB0aGUKLSAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFuYWx5emVzCi0gICAgICAgICAgICAgICAgdGhlIHJlc3VsdHMgYW5kIHNwbGl0cyB0aGUgb3V0cHV0IGludG8gcGFja2FnZXM6Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI3aW4iIC8+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlZGF0YSc+PGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFza3MgY29tYmluZSB0byBhbmFseXplCi0gICAgICAgICAgICAgICAgdGhlIGZpbGVzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1EJz48ZmlsZW5hbWU+RDwvZmlsZW5hbWU+PC9saW5rPiBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBhbmQgc3BsaXQgdGhlbSBpbnRvIHN1YnNldHMgYmFzZWQgb24gYXZhaWxhYmxlIHBhY2thZ2VzIGFuZAotICAgICAgICAgICAgICAgIGZpbGVzLgotICAgICAgICAgICAgICAgIFRoZSBhbmFseXppbmcgcHJvY2VzcyBpbnZvbHZlcyB0aGUgZm9sbG93aW5nIGFzIHdlbGwgYXMgb3RoZXIKLSAgICAgICAgICAgICAgICBpdGVtczogc3BsaXR0aW5nIG91dCBkZWJ1Z2dpbmcgc3ltYm9scywKLSAgICAgICAgICAgICAgICBsb29raW5nIGF0IHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBiZXR3ZWVuIHBhY2thZ2VzLAotICAgICAgICAgICAgICAgIGFuZCBsb29raW5nIGF0IHBhY2thZ2UgcmVsYXRpb25zaGlwcy4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT4gdGFzayBjcmVhdGVzIHBhY2thZ2UKLSAgICAgICAgICAgICAgICBtZXRhZGF0YSBiYXNlZCBvbiB0aGUgYW5hbHlzaXMgc3VjaCB0aGF0IHRoZQotICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuIGdlbmVyYXRlIHRoZSBmaW5hbCBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICBXb3JraW5nLCBzdGFnZWQsIGFuZCBpbnRlcm1lZGlhdGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMKLSAgICAgICAgICAgICAgICBhbmQgcGFja2FnZSBzcGxpdHRpbmcgcHJvY2VzcyB1c2UgdGhlc2UgYXJlYXM6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dEJz48ZmlsZW5hbWU+UEtHRDwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGZvciBwYWNrYWdlcyBiZWZvcmUgdGhleSBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBBIHNoYXJlZCwgZ2xvYmFsLXN0YXRlIGRpcmVjdG9yeSB0aGF0IGhvbGRzIGRhdGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCBkdXJpbmcgdGhlIHBhY2thZ2luZyBwcm9jZXNzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEtHREVTVFdPUksnPjxmaWxlbmFtZT5QS0dERVNUV09SSzwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBBIHRlbXBvcmFyeSB3b3JrIGFyZWEgdXNlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gdGFzay4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBLR0RFU1QnPjxmaWxlbmFtZT5QS0dERVNUPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYXJlbnQgZGlyZWN0b3J5IGZvciBwYWNrYWdlcyBhZnRlciB0aGV5IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJlZW4gc3BsaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTJz48ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBkZWZpbmVzIHRoZSBmaWxlcyB0aGF0IGdvIGludG8gZWFjaCBwYWNrYWdlIGluCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VTJz48ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgZGV0YWlscyBvbiBob3cgdGhpcyBpcyBhY2NvbXBsaXNoZWQsIHlvdSBjYW4KLSAgICAgICAgICAgICAgICBsb29rIGF0IHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBhY2thZ2UnPjxmaWxlbmFtZT5wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgY2xhc3MuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBwYWNrYWdlcyBiZWluZyBjcmVhdGVkIChSUE0sIERFQiwgb3IKLSAgICAgICAgICAgICAgICBJUEspLCB0aGUgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+IHRhc2sKLSAgICAgICAgICAgICAgICBjcmVhdGVzIHRoZSBhY3R1YWwgcGFja2FnZXMgYW5kIHBsYWNlcyB0aGVtIGluIHRoZQotICAgICAgICAgICAgICAgIFBhY2thZ2UgRmVlZCBhcmVhLCB3aGljaCBpcwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1RNUERJUn0vZGVwbG95PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGRldGFpbCBvbiB0aGF0IHBhcnQgb2YgdGhlIGJ1aWxkIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgZm9yIGNyZWF0aW5nIGZlZWRzIGRpcmVjdGx5IGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvKjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzIGRvZXMgbm90IGV4aXN0LgotICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyBzdWNoIGZlZWRzIHVzdWFsbHkgcmVxdWlyZXMgc29tZSBraW5kIG9mIGZlZWQKLSAgICAgICAgICAgICAgICAgICAgbWFpbnRlbmFuY2UgbWVjaGFuaXNtIHRoYXQgd291bGQgdXBsb2FkIHRoZSBuZXcgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgaW50byBhbiBvZmZpY2lhbCBwYWNrYWdlIGZlZWQgKGUuZy4gdGhlCi0gICAgICAgICAgICAgICAgICAgIMOFbmdzdHLDtm0gZGlzdHJpYnV0aW9uKS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGhpZ2hseSBkaXN0cmlidXRpb24tc3BlY2lmaWMKLSAgICAgICAgICAgICAgICAgICAgYW5kIHRodXMgaXMgbm90IHByb3ZpZGVkIG91dCBvZiB0aGUgYm94LgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdpbWFnZS1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgICAgICA8dGl0bGU+SW1hZ2UgR2VuZXJhdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE9uY2UgcGFja2FnZXMgYXJlIHNwbGl0IGFuZCBzdG9yZWQgaW4gdGhlIFBhY2thZ2UgRmVlZHMgYXJlYSwKLSAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIEJpdEJha2UgdG8gZ2VuZXJhdGUgdGhlCi0gICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIGltYWdlOgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9pbWFnZS1nZW5lcmF0aW9uLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjdpbiIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGltYWdlIGdlbmVyYXRpb24gcHJvY2VzcyBjb25zaXN0cyBvZiBzZXZlcmFsIHN0YWdlcyBhbmQKLSAgICAgICAgICAgICAgICBkZXBlbmRzIG9uIHNldmVyYWwgdGFza3MgYW5kIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBjcmVhdGVzIHRoZSByb290IGZpbGVzeXN0ZW0gKGZpbGUgYW5kIGRpcmVjdG9yeSBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICAgICAgZm9yIGFuIGltYWdlLgotICAgICAgICAgICAgICAgIFRoaXMgdGFzayB1c2VzIHNldmVyYWwga2V5IHZhcmlhYmxlcyB0byBoZWxwIGNyZWF0ZSB0aGUgbGlzdAotICAgICAgICAgICAgICAgIG9mIHBhY2thZ2VzIHRvIGFjdHVhbGx5IGluc3RhbGw6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIG91dCB0aGUgYmFzZSBzZXQgb2YgcGFja2FnZXMgdG8gaW5zdGFsbCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgUGFja2FnZSBGZWVkcyBhcmVhLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfRVhDTFVERSc+PGZpbGVuYW1lPlBBQ0tBR0VfRVhDTFVERTwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBwYWNrYWdlcyB0aGF0IHNob3VsZCBub3QgYmUgaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBmZWF0dXJlcyB0byBpbmNsdWRlIGluIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIE1vc3Qgb2YgdGhlc2UgZmVhdHVyZXMgbWFwIHRvIGFkZGl0aW9uYWwgcGFja2FnZXMgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYWNrYWdlIGJhY2tlbmQgdG8gdXNlIGFuZCBjb25zZXF1ZW50bHkKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBzIGRldGVybWluZSB3aGVyZSB0byBsb2NhdGUgcGFja2FnZXMgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSBGZWVkcyBhcmVhLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0xJTkdVQVMnPjxmaWxlbmFtZT5JTUFHRV9MSU5HVUFTPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lcyB0aGUgbGFuZ3VhZ2UocykgZm9yIHdoaWNoIGFkZGl0aW9uYWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlIHN1cHBvcnQgcGFja2FnZXMgYXJlIGluc3RhbGxlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfSU5TVEFMTCc+PGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBsaXN0IG9mIHBhY2thZ2VzIHBhc3NlZCB0byB0aGUgcGFja2FnZSBtYW5hZ2VyCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5zdGFsbGF0aW9uIGludG8gdGhlIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFdpdGgKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUk9PVEZTJz48ZmlsZW5hbWU+SU1BR0VfUk9PVEZTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgcG9pbnRpbmcgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlc3lzdGVtIHVuZGVyIGNvbnN0cnVjdGlvbiBhbmQKLSAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+IHZhcmlhYmxlIHByb3ZpZGluZyB0aGUKLSAgICAgICAgICAgICAgICBmaW5hbCBsaXN0IG9mIHBhY2thZ2VzIHRvIGluc3RhbGwsIHRoZSByb290IGZpbGUgc3lzdGVtIGlzCi0gICAgICAgICAgICAgICAgY3JlYXRlZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgUGFja2FnZSBpbnN0YWxsYXRpb24gaXMgdW5kZXIgY29udHJvbCBvZiB0aGUgcGFja2FnZSBtYW5hZ2VyCi0gICAgICAgICAgICAgICAgKGUuZy4gZG5mL3JwbSwgb3BrZywgb3IgYXB0L2Rwa2cpIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvcgotICAgICAgICAgICAgICAgIG5vdCBwYWNrYWdlIG1hbmFnZW1lbnQgaXMgZW5hYmxlZCBmb3IgdGhlIHRhcmdldC4KLSAgICAgICAgICAgICAgICBBdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzLCBpZiBwYWNrYWdlIG1hbmFnZW1lbnQgaXMgbm90Ci0gICAgICAgICAgICAgICAgZW5hYmxlZCBmb3IgdGhlIHRhcmdldCwgdGhlIHBhY2thZ2UgbWFuYWdlcidzIGRhdGEgZmlsZXMKLSAgICAgICAgICAgICAgICBhcmUgZGVsZXRlZCBmcm9tIHRoZSByb290IGZpbGVzeXN0ZW0uCi0gICAgICAgICAgICAgICAgQXMgcGFydCBvZiB0aGUgZmluYWwgc3RhZ2Ugb2YgcGFja2FnZSBpbnN0YWxsYXRpb24sIHBvc3RpbnN0YWxsCi0gICAgICAgICAgICAgICAgc2NyaXB0cyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBwYWNrYWdlcyBhcmUgcnVuLgotICAgICAgICAgICAgICAgIEFueSBzY3JpcHRzIHRoYXQgZmFpbCB0byBydW4KLSAgICAgICAgICAgICAgICBvbiB0aGUgYnVpbGQgaG9zdCBhcmUgcnVuIG9uIHRoZSB0YXJnZXQgd2hlbiB0aGUgdGFyZ2V0IHN5c3RlbQotICAgICAgICAgICAgICAgIGlzIGZpcnN0IGJvb3RlZC4KLSAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIGEKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLXJlYWQtb25seS1yb290LWZpbGVzeXN0ZW0nPnJlYWQtb25seSByb290IGZpbGVzeXN0ZW08L3VsaW5rPiwKLSAgICAgICAgICAgICAgICBhbGwgdGhlIHBvc3QgaW5zdGFsbGF0aW9uIHNjcmlwdHMgbXVzdCBzdWNjZWVkIGR1cmluZyB0aGUKLSAgICAgICAgICAgICAgICBwYWNrYWdlIGluc3RhbGxhdGlvbiBwaGFzZSBzaW5jZSB0aGUgcm9vdCBmaWxlc3lzdGVtIGlzCi0gICAgICAgICAgICAgICAgcmVhZC1vbmx5LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZmluYWwgc3RhZ2VzIG9mIHRoZSA8ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT4gdGFzawotICAgICAgICAgICAgICAgIGhhbmRsZSBwb3N0IHByb2Nlc3NpbmcuCi0gICAgICAgICAgICAgICAgUG9zdCBwcm9jZXNzaW5nIGluY2x1ZGVzIGNyZWF0aW9uIG9mIGEgbWFuaWZlc3QgZmlsZSBhbmQKLSAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25zLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgbWFuaWZlc3QgZmlsZSAoPGZpbGVuYW1lPi5tYW5pZmVzdDwvZmlsZW5hbWU+KSByZXNpZGVzCi0gICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSByb290IGZpbGVzeXN0ZW0gaW1hZ2UuCi0gICAgICAgICAgICAgICAgVGhpcyBmaWxlIGxpc3RzIG91dCwgbGluZS1ieS1saW5lLCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLgotICAgICAgICAgICAgICAgIFRoZSBtYW5pZmVzdCBmaWxlIGlzIHVzZWZ1bCBmb3IgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdGVzdGltYWdlKic+PGZpbGVuYW1lPnRlc3RpbWFnZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGNsYXNzLCBmb3IgZXhhbXBsZSwgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvIHJ1bgotICAgICAgICAgICAgICAgIHNwZWNpZmljIHRlc3RzLgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfTUFOSUZFU1QnPjxmaWxlbmFtZT5JTUFHRV9NQU5JRkVTVDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBPcHRpbWl6aW5nIHByb2Nlc3NlcyBydW4gYWNyb3NzIHRoZSBpbWFnZSBpbmNsdWRlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1rbGliczwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+cHJlbGluazwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIGFuZCBhbnkgb3RoZXIgcG9zdC1wcm9jZXNzaW5nIGNvbW1hbmRzIGFzIGRlZmluZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+Uk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1rbGliczwvZmlsZW5hbWU+IHByb2Nlc3Mgb3B0aW1pemVzIHRoZSBzaXplCi0gICAgICAgICAgICAgICAgb2YgdGhlIGxpYnJhcmllcywgd2hpbGUgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnByZWxpbms8L2ZpbGVuYW1lPiBwcm9jZXNzIG9wdGltaXplcyB0aGUgZHluYW1pYwotICAgICAgICAgICAgICAgIGxpbmtpbmcgb2Ygc2hhcmVkIGxpYnJhcmllcyB0byByZWR1Y2Ugc3RhcnQgdXAgdGltZSBvZgotICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBZnRlciB0aGUgcm9vdCBmaWxlc3lzdGVtIGlzIGJ1aWx0LCBwcm9jZXNzaW5nIGJlZ2lucyBvbgotICAgICAgICAgICAgICAgIHRoZSBpbWFnZSB0aHJvdWdoIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbWFnZSc+PGZpbGVuYW1lPmRvX2ltYWdlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzay4KLSAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHJ1bnMgYW55IHByZS1wcm9jZXNzaW5nIGNvbW1hbmRzIGFzIGRlZmluZWQKLSAgICAgICAgICAgICAgICBieSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+SU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGJlZm9yZQotICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhlIGZpbmFsIGltYWdlIG91dHB1dAotICAgICAgICAgICAgICAgIGZpbGVzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkeW5hbWljYWxseSBjcmVhdGVzCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ltYWdlXyo8L2ZpbGVuYW1lPiB0YXNrcyBhcyBuZWVkZWQsIGJhc2VkCi0gICAgICAgICAgICAgICAgb24gdGhlIGltYWdlIHR5cGVzIHNwZWNpZmllZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyB0dXJucyBldmVyeXRoaW5nIGludG8gYW4gaW1hZ2UgZmlsZSBvciBhIHNldCBvZgotICAgICAgICAgICAgICAgIGltYWdlIGZpbGVzIGFuZCBjb21wcmVzc2VzIHRoZSByb290IGZpbGVzeXN0ZW0gaW1hZ2UgdG8gcmVkdWNlCi0gICAgICAgICAgICAgICAgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgVGhlIGZvcm1hdHMgdXNlZCBmb3IgdGhlIHJvb3QgZmlsZXN5c3RlbSBkZXBlbmQgb24gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgYSBkeW5hbWljYWxseSBjcmVhdGVkIHRhc2sgd2hlbiBjcmVhdGluZyBhCi0gICAgICAgICAgICAgICAgcGFydGljdWxhciBpbWFnZSA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IHdvdWxkIHRha2UgdGhlCi0gICAgICAgICAgICAgICAgZm9sbG93aW5nIGZvcm06Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBkb19pbWFnZV88cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+W2RlcGVuZHNdCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFNvLCBpZiB0aGUgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBhcyBzcGVjaWZpZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiB3ZXJlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dDQ8L2ZpbGVuYW1lPiwgdGhlIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCB0YXNrCi0gICAgICAgICAgICAgICAgd291bGQgYmUgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGRvX2ltYWdlX2V4dDRbZGVwZW5kc10KLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmaW5hbCB0YXNrIGludm9sdmVkIGluIGltYWdlIGNyZWF0aW9uIGlzIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbWFnZS1jb21wbGV0ZSc+PGZpbGVuYW1lPmRvX2ltYWdlX2NvbXBsZXRlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzay4KLSAgICAgICAgICAgICAgICBUaGlzIHRhc2sgY29tcGxldGVzIHRoZSBpbWFnZSBieSBhcHBseWluZyBhbnkgaW1hZ2UKLSAgICAgICAgICAgICAgICBwb3N0IHByb2Nlc3NpbmcgYXMgZGVmaW5lZCB0aHJvdWdoIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+SU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBzcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIG9uY2UgdGhlCi0gICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgZmluYWwgaW1hZ2Ugb3V0cHV0Ci0gICAgICAgICAgICAgICAgZmlsZXMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFRoZSBlbnRpcmUgaW1hZ2UgZ2VuZXJhdGlvbiBwcm9jZXNzIGlzIHJ1biB1bmRlciBQc2V1ZG8uCi0gICAgICAgICAgICAgICAgUnVubmluZyB1bmRlciBQc2V1ZG8gZW5zdXJlcyB0aGF0IHRoZSBmaWxlcyBpbiB0aGUgcm9vdAotICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gaGF2ZSBjb3JyZWN0IG93bmVyc2hpcC4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdzZGstZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPgotICAgICAgICAgICAgPHRpdGxlPlNESyBHZW5lcmF0aW9uPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBCaXRCYWtlIHRvIGdlbmVyYXRlIHRoZQotICAgICAgICAgICAgICAgIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBpbnN0YWxsZXIgc2NyaXB0IGZvciBib3RoIHRoZQotICAgICAgICAgICAgICAgIHN0YW5kYXJkIGFuZCBleHRlbnNpYmxlIFNES3M6Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1nZW5lcmF0aW9uLnBuZyIgYWxpZ249ImNlbnRlciIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbgotICAgICAgICAgICAgICAgIGdlbmVyYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBhZHZhbnRhZ2VzIGdhaW5lZCB3aGVuIGJ1aWxkaW5nIGEKLSAgICAgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3Nkayc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3NkazwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2ssIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKLSAgICAgICAgICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBtYW51YWwuCi0gICAgICAgICAgICA8L25vdGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIExpa2UgaW1hZ2UgZ2VuZXJhdGlvbiwgdGhlIFNESyBzY3JpcHQgcHJvY2VzcyBjb25zaXN0cyBvZgotICAgICAgICAgICAgICAgIHNldmVyYWwgc3RhZ2VzIGFuZCBkZXBlbmRzIG9uIG1hbnkgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiB0YXNrcyB1c2UgdGhlc2UKLSAgICAgICAgICAgICAgICBrZXkgdmFyaWFibGVzIHRvIGhlbHAgY3JlYXRlIHRoZSBsaXN0IG9mIHBhY2thZ2VzIHRvIGFjdHVhbGx5Ci0gICAgICAgICAgICAgICAgaW5zdGFsbC4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIHZhcmlhYmxlcyBsaXN0ZWQgaW4gdGhlIGZpZ3VyZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT4gdGFzayBoZWxwcyBjcmVhdGUKLSAgICAgICAgICAgICAgICB0aGUgc3RhbmRhcmQgU0RLIGFuZCBoYW5kbGVzIHR3byBwYXJ0czogYSB0YXJnZXQgcGFydCBhbmQgYQotICAgICAgICAgICAgICAgIGhvc3QgcGFydC4KLSAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IHBhcnQgaXMgdGhlIHBhcnQgYnVpbHQgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUgYW5kCi0gICAgICAgICAgICAgICAgaW5jbHVkZXMgbGlicmFyaWVzIGFuZCBoZWFkZXJzLgotICAgICAgICAgICAgICAgIFRoZSBob3N0IHBhcnQgaXMgdGhlIHBhcnQgb2YgdGhlIFNESyB0aGF0IHJ1bnMgb24gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiB0YXNrIGhlbHBzIGNyZWF0ZQotICAgICAgICAgICAgICAgIHRoZSBleHRlbnNpYmxlIFNESyBhbmQgaGFuZGxlcyBob3N0IGFuZCB0YXJnZXQgcGFydHMKLSAgICAgICAgICAgICAgICBkaWZmZXJlbnRseSB0aGFuIGl0cyBjb3VudGVyIHBhcnQgZG9lcyBmb3IgdGhlIHN0YW5kYXJkIFNESy4KLSAgICAgICAgICAgICAgICBGb3IgdGhlIGV4dGVuc2libGUgU0RLLCB0aGUgdGFzayBlbmNhcHN1bGF0ZXMgdGhlIGJ1aWxkIHN5c3RlbSwKLSAgICAgICAgICAgICAgICB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCAoaG9zdCBhbmQgdGFyZ2V0KSBmb3IgdGhlIFNESy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiBTREsgYmVpbmcgY29uc3RydWN0ZWQsIHRoZQotICAgICAgICAgICAgICAgIHRhc2tzIHBlcmZvcm0gc29tZSBjbGVhbnVwIGFmdGVyIHdoaWNoIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgYW5kIGFueSBuZWVkZWQgY29uZmlndXJhdGlvbiBmaWxlcwotICAgICAgICAgICAgICAgIGFyZSBjcmVhdGVkLgotICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBvdXRwdXQgaXMgdGhlIENyb3NzLWRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgdG9vbGNoYWluIGluc3RhbGxhdGlvbiBzY3JpcHQgKDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlKSwKLSAgICAgICAgICAgICAgICB3aGljaCBpbmNsdWRlcyB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz4KLSAgICAgICAgICAgIDx0aXRsZT5TdGFtcCBGaWxlcyBhbmQgdGhlIFJlcnVubmluZyBvZiBUYXNrczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBlYWNoIHRhc2sgdGhhdCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LCBCaXRCYWtlIHdyaXRlcyBhCi0gICAgICAgICAgICAgICAgc3RhbXAgZmlsZSBpbnRvIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFNUFNfRElSJz48ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICBUaGUgYmVnaW5uaW5nIG9mIHRoZSBzdGFtcCBmaWxlJ3MgZmlsZW5hbWUgaXMgZGV0ZXJtaW5lZCBieSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBTVAnPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlLCBhbmQgdGhlIGVuZCBvZiB0aGUgbmFtZSBjb25zaXN0cyBvZiB0aGUgdGFzaydzIG5hbWUKLSAgICAgICAgICAgICAgICBhbmQgY3VycmVudAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjY2hlY2tzdW1zJz5pbnB1dCBjaGVja3N1bTwvdWxpbms+LgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGlzIG5hbWluZyBzY2hlbWUgYXNzdW1lcyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX1NJR05BVFVSRV9IQU5ETEVSJz48ZmlsZW5hbWU+QkJfU0lHTkFUVVJFX0hBTkRMRVI8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGlzICJPRUJhc2ljSGFzaCIsIHdoaWNoIGlzIGFsbW9zdCBhbHdheXMgdGhlIGNhc2UgaW4KLSAgICAgICAgICAgICAgICAgICAgY3VycmVudCBPcGVuRW1iZWRkZWQuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIFRvIGRldGVybWluZSBpZiBhIHRhc2sgbmVlZHMgdG8gYmUgcmVydW4sIEJpdEJha2UgY2hlY2tzIGlmIGEKLSAgICAgICAgICAgICAgICBzdGFtcCBmaWxlIHdpdGggYSBtYXRjaGluZyBpbnB1dCBjaGVja3N1bSBleGlzdHMgZm9yIHRoZSB0YXNrLgotICAgICAgICAgICAgICAgIElmIHN1Y2ggYSBzdGFtcCBmaWxlIGV4aXN0cywgdGhlIHRhc2sncyBvdXRwdXQgaXMgYXNzdW1lZCB0bwotICAgICAgICAgICAgICAgIGV4aXN0IGFuZCBzdGlsbCBiZSB2YWxpZC4KLSAgICAgICAgICAgICAgICBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlIHRhc2sgaXMgcmVydW4uCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBzdGFtcCBtZWNoYW5pc20gaXMgbW9yZSBnZW5lcmFsIHRoYW4gdGhlIHNoYXJlZAotICAgICAgICAgICAgICAgICAgICBzdGF0ZSAoc3N0YXRlKSBjYWNoZSBtZWNoYW5pc20gZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2V0c2NlbmUtdGFza3MtYW5kLXNoYXJlZC1zdGF0ZSc+U2V0c2NlbmUgVGFza3MgYW5kIFNoYXJlZCBTdGF0ZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIEJpdEJha2UgYXZvaWRzIHJlcnVubmluZyBhbnkgdGFzayB0aGF0IGhhcyBhIHZhbGlkCi0gICAgICAgICAgICAgICAgICAgIHN0YW1wIGZpbGUsIG5vdCBqdXN0IHRhc2tzIHRoYXQgY2FuIGJlIGFjY2VsZXJhdGVkIHRocm91Z2gKLSAgICAgICAgICAgICAgICAgICAgdGhlIHNzdGF0ZSBjYWNoZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkhvd2V2ZXIsIHlvdSBzaG91bGQgcmVhbGl6ZSB0aGF0IHN0YW1wIGZpbGVzIG9ubHkKLSAgICAgICAgICAgICAgICAgICAgc2VydmUgYXMgYSBtYXJrZXIgdGhhdCBzb21lIHdvcmsgaGFzIGJlZW4gZG9uZSBhbmQgdGhhdAotICAgICAgICAgICAgICAgICAgICB0aGVzZSBmaWxlcyBkbyBub3QgcmVjb3JkIHRhc2sgb3V0cHV0LgotICAgICAgICAgICAgICAgICAgICBUaGUgYWN0dWFsIHRhc2sgb3V0cHV0IHdvdWxkIHVzdWFsbHkgYmUgc29tZXdoZXJlIGluCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgKGUuZy4gaW4gc29tZSByZWNpcGUncwotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4uKQotICAgICAgICAgICAgICAgICAgICBXaGF0IHRoZSBzc3RhdGUgY2FjaGUgbWVjaGFuaXNtIGFkZHMgaXMgYSB3YXkgdG8gY2FjaGUgdGFzawotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgdGhhdCBjYW4gdGhlbiBiZSBzaGFyZWQgYmV0d2VlbiBidWlsZCBtYWNoaW5lcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICBTaW5jZSA8ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+IGlzIHVzdWFsbHkgYSBzdWJkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4sIHJlbW92aW5nCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IHdpbGwgYWxzbyByZW1vdmUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+LCB3aGljaCBtZWFucyB0YXNrcyB3aWxsCi0gICAgICAgICAgICAgICAgcHJvcGVybHkgYmUgcmVydW4gdG8gcmVwb3B1bGF0ZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHNvbWUgdGFzayB0byBhbHdheXMgYmUgY29uc2lkZXJlZCAib3V0IG9mIGRhdGUiLAotICAgICAgICAgICAgICAgIHlvdSBjYW4gbWFyayBpdCB3aXRoIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPjxmaWxlbmFtZT5ub3N0YW1wPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHZhcmZsYWcuCi0gICAgICAgICAgICAgICAgSWYgc29tZSBvdGhlciB0YXNrIGRlcGVuZHMgb24gc3VjaCBhIHRhc2ssIHRoZW4gdGhhdCB0YXNrIHdpbGwKLSAgICAgICAgICAgICAgICBhbHNvIGFsd2F5cyBiZSBjb25zaWRlcmVkIG91dCBvZiBkYXRlLCB3aGljaCBtaWdodCBub3QgYmUgd2hhdAotICAgICAgICAgICAgICAgIHlvdSB3YW50LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiBob3cgdG8gdmlldyBpbmZvcm1hdGlvbiBhYm91dCBhIHRhc2sncwotICAgICAgICAgICAgICAgIHNpZ25hdHVyZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZ3Bva3ktdmlld2luZy10YXNrLXZhcmlhYmxlLWRlcGVuZGVuY2llcyc+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdzZXRzY2VuZS10YXNrcy1hbmQtc2hhcmVkLXN0YXRlJz4KLSAgICAgICAgICAgIDx0aXRsZT5TZXRzY2VuZSBUYXNrcyBhbmQgU2hhcmVkIFN0YXRlPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGRlc2NyaXB0aW9uIG9mIHRhc2tzIHNvIGZhciBhc3N1bWVzIHRoYXQgQml0QmFrZSBuZWVkcyB0bwotICAgICAgICAgICAgICAgIGJ1aWxkIGV2ZXJ5dGhpbmcgYW5kIHRoZXJlIGFyZSBubyBwcmVidWlsdCBvYmplY3RzIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICBCaXRCYWtlIGRvZXMgc3VwcG9ydCBza2lwcGluZyB0YXNrcyBpZiBwcmVidWlsdCBvYmplY3RzIGFyZQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICBUaGVzZSBvYmplY3RzIGFyZSB1c3VhbGx5IG1hZGUgYXZhaWxhYmxlIGluIHRoZSBmb3JtIG9mIGEKLSAgICAgICAgICAgICAgICBzaGFyZWQgc3RhdGUgKHNzdGF0ZSkgY2FjaGUuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB2YXJpYWJsZXMgYWZmZWN0aW5nIHNzdGF0ZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBpZGVhIG9mIGEgc2V0c2NlbmUgdGFzayAoaS5lCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+X3NldHNjZW5lPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgaXMgYSB2ZXJzaW9uIG9mIHRoZSB0YXNrIHdoZXJlCi0gICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBidWlsZGluZyBzb21ldGhpbmcsIEJpdEJha2UgY2FuIHNraXAgdG8gdGhlIGVuZAotICAgICAgICAgICAgICAgIHJlc3VsdCBhbmQgc2ltcGx5IHBsYWNlIGEgc2V0IG9mIGZpbGVzIGludG8gc3BlY2lmaWMgbG9jYXRpb25zCi0gICAgICAgICAgICAgICAgYXMgbmVlZGVkLgotICAgICAgICAgICAgICAgIEluIHNvbWUgY2FzZXMsIGl0IG1ha2VzIHNlbnNlIHRvIGhhdmUgYSBzZXRzY2VuZSB0YXNrIHZhcmlhbnQKLSAgICAgICAgICAgICAgICAoZS5nLiBnZW5lcmF0aW5nIHBhY2thZ2UgZmlsZXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+IHRhc2spLgotICAgICAgICAgICAgICAgIEluIG90aGVyIGNhc2VzLCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlLCAoZS5nLiBhCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0YXNrIG9yCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXVucGFjayc+PGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2spIHNpbmNlIHRoZSB3b3JrIGludm9sdmVkIHdvdWxkIGJlIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbgotICAgICAgICAgICAgICAgIHRoZSB1bmRlcmx5aW5nIHRhc2suCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCB0aGUgY29tbW9uIHRhc2tzIHRoYXQgaGF2ZQotICAgICAgICAgICAgICAgIHNldHNjZW5lIHZhcmlhbnRzIGFyZSA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1kZXBsb3knPjxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2VkYXRhJz48ZmlsZW5hbWU+ZG9fcGFja2FnZWRhdGE8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgICAgIE5vdGljZSB0aGF0IHRoZXNlIGFyZSBtb3N0IG9mIHRoZSB0YXNrcyB3aG9zZSBvdXRwdXQgaXMgYW4KLSAgICAgICAgICAgICAgICBlbmQgcmVzdWx0LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMga25vd2xlZGdlIG9mIHRoZSByZWxhdGlvbnNoaXAKLSAgICAgICAgICAgICAgICBiZXR3ZWVuIHRoZXNlIHRhc2tzIGFuZCBvdGhlciB0YXNrcyB0aGF0IHByZWNlZGUgdGhlbS4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgQml0QmFrZSBydW5zCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU8L2ZpbGVuYW1lPiBmb3IKLSAgICAgICAgICAgICAgICBzb21ldGhpbmcsIHRoZXJlIGlzIGxpdHRsZSBwb2ludCBpbiBydW5uaW5nIGFueSBvZiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+IHRhc2tzLgotICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gbmVlZHMgdG8gYmUgcnVuLAotICAgICAgICAgICAgICAgIEJpdEJha2Ugd291bGQgbmVlZCB0byBydW4gdGhvc2Ugb3RoZXIgdGFza3MuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEl0IGJlY29tZXMgbW9yZSBjb21wbGljYXRlZCBpZiBldmVyeXRoaW5nIGNhbiBjb21lIGZyb20gYW4KLSAgICAgICAgICAgICAgICBzc3RhdGUgY2FjaGUgYmVjYXVzZSBzb21lIG9iamVjdHMgYXJlIHNpbXBseSBub3QgcmVxdWlyZWQgYXQKLSAgICAgICAgICAgICAgICBhbGwuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBkbyBub3QgbmVlZCBhIGNvbXBpbGVyIG9yIG5hdGl2ZSB0b29scywgc3VjaAotICAgICAgICAgICAgICAgIGFzIHF1aWx0LCBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIGNvbXBpbGUgb3IgcGF0Y2guCi0gICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPiBwYWNrYWdlcyBhcmUKLSAgICAgICAgICAgICAgICBhdmFpbGFibGUgZnJvbSBzc3RhdGUsIEJpdEJha2UgZG9lcyBub3QgbmVlZCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgZGF0YS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gaGFuZGxlIGFsbCB0aGVzZSBjb21wbGV4aXRpZXMsIEJpdEJha2UgcnVucyBpbiB0d28gcGhhc2VzLgotICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBpcyB0aGUgInNldHNjZW5lIiBzdGFnZS4KLSAgICAgICAgICAgICAgICBEdXJpbmcgdGhpcyBzdGFnZSwgQml0QmFrZSBmaXJzdCBjaGVja3MgdGhlIHNzdGF0ZSBjYWNoZSBmb3IKLSAgICAgICAgICAgICAgICBhbnkgdGFyZ2V0cyBpdCBpcyBwbGFubmluZyB0byBidWlsZC4KLSAgICAgICAgICAgICAgICBCaXRCYWtlIGRvZXMgYSBmYXN0IGNoZWNrIHRvIHNlZSBpZiB0aGUgb2JqZWN0IGV4aXN0cyByYXRoZXIKLSAgICAgICAgICAgICAgICB0aGFuIGEgY29tcGxldGUgZG93bmxvYWQuCi0gICAgICAgICAgICAgICAgSWYgbm90aGluZyBleGlzdHMsIHRoZSBzZWNvbmQgcGhhc2UsIHdoaWNoIGlzIHRoZSBzZXRzY2VuZQotICAgICAgICAgICAgICAgIHN0YWdlLCBjb21wbGV0ZXMgYW5kIHRoZSBtYWluIGJ1aWxkIHByb2NlZWRzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJZiBvYmplY3RzIGFyZSBmb3VuZCBpbiB0aGUgc3N0YXRlIGNhY2hlLCB0aGUgT3BlbkVtYmVkZGVkCi0gICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHdvcmtzIGJhY2t3YXJkcyBmcm9tIHRoZSBlbmQgdGFyZ2V0cyBzcGVjaWZpZWQKLSAgICAgICAgICAgICAgICBieSB0aGUgdXNlci4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgYW4gaW1hZ2UgaXMgYmVpbmcgYnVpbHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKLSAgICAgICAgICAgICAgICBzeXN0ZW0gZmlyc3QgbG9va3MgZm9yIHRoZSBwYWNrYWdlcyBuZWVkZWQgZm9yIHRoYXQgaW1hZ2UgYW5kCi0gICAgICAgICAgICAgICAgdGhlIHRvb2xzIG5lZWRlZCB0byBjb25zdHJ1Y3QgYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgSWYgdGhvc2UgYXJlIGF2YWlsYWJsZSwgdGhlIGNvbXBpbGVyIGlzIG5vdCBuZWVkZWQuCi0gICAgICAgICAgICAgICAgVGh1cywgdGhlIGNvbXBpbGVyIGlzIG5vdCBldmVuIGRvd25sb2FkZWQuCi0gICAgICAgICAgICAgICAgSWYgc29tZXRoaW5nIHdhcyBmb3VuZCB0byBiZSB1bmF2YWlsYWJsZSwgb3IgdGhlIGRvd25sb2FkIG9yCi0gICAgICAgICAgICAgICAgc2V0c2NlbmUgdGFzayBmYWlscywgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdGhlbiB0cmllcwotICAgICAgICAgICAgICAgIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzLCBzdWNoIGFzIHRoZSBjb21waWxlciwgZnJvbSB0aGUgY2FjaGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBhdmFpbGFiaWxpdHkgb2Ygb2JqZWN0cyBpbiB0aGUgc3N0YXRlIGNhY2hlIGlzIGhhbmRsZWQgYnkKLSAgICAgICAgICAgICAgICB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX0hBU0hDSEVDS19GVU5DVElPTic+PGZpbGVuYW1lPkJCX0hBU0hDSEVDS19GVU5DVElPTjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgdGhlIG9iamVjdHMgdGhhdCBhcmUgYXZhaWxhYmxlLgotICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfU0VUU0NFTkVfREVQVkFMSUQnPjxmaWxlbmFtZT5CQl9TRVRTQ0VORV9ERVBWQUxJRDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbgotICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgbmVlZHMgdG8gYmUgZm9sbG93ZWQsIGFuZCB3aGV0aGVyIGZvciBhbnkgZ2l2ZW4KLSAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAgdGhlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHBhc3NlZC4KLSAgICAgICAgICAgICAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIFRydWUgb3IgRmFsc2UgdmFsdWUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0naW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgIDx0aXRsZT5JbWFnZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGltYWdlcyBwcm9kdWNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgYXJlIGNvbXByZXNzZWQgZm9ybXMgb2YgdGhlCi0gICAgICAgICAgICByb290IGZpbGVzeXN0ZW0gdGhhdCBhcmUgcmVhZHkgdG8gYm9vdCBvbiBhIHRhcmdldCBkZXZpY2UuCi0gICAgICAgICAgICBZb3UgY2FuIHNlZSBmcm9tIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+Ci0gICAgICAgICAgICB0aGF0IEJpdEJha2Ugb3V0cHV0LCBpbiBwYXJ0LCBjb25zaXN0cyBvZiBpbWFnZXMuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gaXMgZ29pbmcgdG8gbG9vayBtb3JlIGNsb3NlbHkgYXQgdGhpcyBvdXRwdXQ6Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvaW1hZ2VzLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjUuNWluIiBkZXB0aD0iNS41aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgZXhhbXBsZSBpbWFnZXMgdGhhdCB0aGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcywKLSAgICAgICAgICAgIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtaW1hZ2VzJz5JbWFnZXM8L2xpbms+IiBjaGFwdGVyLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbWFnZXMgYXJlIHdyaXR0ZW4gb3V0IHRvIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+Ci0gICAgICAgICAgICBpbnNpZGUgdGhlIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBmb2xkZXIgYXMgc2hvd24gaW4gdGhlIGZpZ3VyZS4KLSAgICAgICAgICAgIFRoaXMgZm9sZGVyIGNvbnRhaW5zIGFueSBmaWxlcyBleHBlY3RlZCB0byBiZSBsb2FkZWQgb24gdGhlCi0gICAgICAgICAgICB0YXJnZXQgZGV2aWNlLgotICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+IGRpcmVjdG9yeSwKLSAgICAgICAgICAgIHdoaWxlIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfSU1BR0UnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lNQUdFPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeSBjb250YWluaW5nIGltYWdlcyBmb3IKLSAgICAgICAgICAgIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmtlcm5lbC1pbWFnZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEEga2VybmVsIGJpbmFyeSBmaWxlLgotICAgICAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9JTUFHRVRZUEUnPjxmaWxlbmFtZT5LRVJORUxfSU1BR0VUWVBFPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNldHRpbmcgZGV0ZXJtaW5lcyB0aGUgbmFtaW5nIHNjaGVtZSBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhhdCB2YXJpYWJsZSwgdGhlIGZpbGUgY291bGQgYmVnaW4gd2l0aAotICAgICAgICAgICAgICAgICAgICBhIHZhcmlldHkgb2YgbmFtaW5nIHN0cmluZ3MuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIGltYWdlIGZpbGVzIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5yb290LWZpbGVzeXN0ZW0taW1hZ2U8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBSb290IGZpbGVzeXN0ZW1zIGZvciB0aGUgdGFyZ2V0IGRldmljZSAoZS5nLgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5leHQzPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPiouYnoyPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmlsZXMpLgotICAgICAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNldHRpbmcgZGV0ZXJtaW5lcyB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlCi0gICAgICAgICAgICAgICAgICAgIHR5cGUuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIHJvb3QgZmlsZXN5c3RlbXMgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmtlcm5lbC1tb2R1bGVzPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgVGFyYmFsbHMgdGhhdCBjb250YWluIGFsbCB0aGUgbW9kdWxlcyBidWlsdCBmb3IgdGhlIGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgS2VybmVsIG1vZHVsZSB0YXJiYWxscyBleGlzdCBmb3IgbGVnYWN5IHB1cnBvc2VzIGFuZAotICAgICAgICAgICAgICAgICAgICBjYW4gYmUgc3VwcHJlc3NlZCBieSBzZXR0aW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTU9EVUxFX1RBUkJBTExfREVQTE9ZJz48ZmlsZW5hbWU+TU9EVUxFX1RBUkJBTExfREVQTE9ZPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICIwIi4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgY2FuIGNvbnRhaW4gbXVsdGlwbGUga2VybmVsIG1vZHVsZSB0YXJiYWxscwotICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIG1hY2hpbmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48cmVwbGFjZWFibGU+Ym9vdGxvYWRlcnM8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBCb290bG9hZGVycyBzdXBwb3J0aW5nIHRoZSBpbWFnZSwgaWYgYXBwbGljYWJsZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIGJvb3Rsb2FkZXJzIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5zeW1saW5rczwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZm9sZGVyIGNvbnRhaW5zCi0gICAgICAgICAgICAgICAgICAgIGEgc3ltYm9saWMgbGluayB0aGF0IHBvaW50cyB0byB0aGUgbW9zdCByZWNlbnRseSBidWlsdCBmaWxlCi0gICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgIFRoZXNlIGxpbmtzIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZXh0ZXJuYWwgc2NyaXB0cyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gb2J0YWluIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBlYWNoIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nc2RrLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgIDx0aXRsZT5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Z2VuZXJhbCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IGZpZ3VyZTwvbGluaz4sCi0gICAgICAgICAgICB0aGUgb3V0cHV0IGxhYmVsZWQgIkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESyIgcmVwcmVzZW50cyBhbgotICAgICAgICAgICAgU0RLLgotICAgICAgICAgICAgVGhlIFNESyBnZW5lcmF0aW9uIHByb2Nlc3MgZGlmZmVycyBkZXBlbmRpbmcgb24gd2hldGhlciB5b3UgYnVpbGQKLSAgICAgICAgICAgIGEgc3RhbmRhcmQgU0RLCi0gICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4pCi0gICAgICAgICAgICBvciBhbiBleHRlbnNpYmxlIFNESwotICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmJpdGJha2UgLWMgcG9wdWxhdGVfc2RrX2V4dDwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5pbWFnZW5hbWU8L3JlcGxhY2VhYmxlPikuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gaXMgZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoaXMgb3V0cHV0OgotICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI5aW4iIGRlcHRoPSI3LjI1aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBzcGVjaWZpYyBmb3JtIG9mIHRoaXMgb3V0cHV0IGlzIGEgc2VsZi1leHRyYWN0aW5nCi0gICAgICAgICAgICBTREsgaW5zdGFsbGVyICg8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+KSB0aGF0LCB3aGVuIHJ1biwKLSAgICAgICAgICAgIGluc3RhbGxzIHRoZSBTREssIHdoaWNoIGNvbnNpc3RzIG9mIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgIHRvb2xjaGFpbiwgYSBzZXQgb2YgbGlicmFyaWVzIGFuZCBoZWFkZXJzLCBhbmQgYW4gU0RLCi0gICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCi0gICAgICAgICAgICBSdW5uaW5nIHRoaXMgaW5zdGFsbGVyIGVzc2VudGlhbGx5IHNldHMgdXAgeW91cgotICAgICAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICBZb3UgY2FuIHRoaW5rIG9mIHRoZSBjcm9zcy10b29sY2hhaW4gYXMgdGhlICJob3N0IgotICAgICAgICAgICAgcGFydCBiZWNhdXNlIGl0IHJ1bnMgb24gdGhlIFNESyBtYWNoaW5lLgotICAgICAgICAgICAgWW91IGNhbiB0aGluayBvZiB0aGUgbGlicmFyaWVzIGFuZCBoZWFkZXJzIGFzIHRoZSAidGFyZ2V0IgotICAgICAgICAgICAgcGFydCBiZWNhdXNlIHRoZXkgYXJlIGJ1aWx0IGZvciB0aGUgdGFyZ2V0IGhhcmR3YXJlLgotICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpcyBhZGRlZCBzbyB0aGF0IHlvdSBjYW4gaW5pdGlhbGl6ZQotICAgICAgICAgICAgdGhlIGVudmlyb25tZW50IGJlZm9yZSB1c2luZyB0aGUgdG9vbHMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHNldmVyYWwgbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgICAgIHNldCB1cCB0aGlzIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgICAgICBUaGVzZSBtZXRob2RzIGluY2x1ZGUgZG93bmxvYWRpbmcgcHJlLWJ1aWx0IFNESyBpbnN0YWxsZXJzCi0gICAgICAgICAgICAgICAgICAgIG9yIGJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIHlvdXIgb3duIFNESyBpbnN0YWxsZXIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGJhY2tncm91bmQgaW5mb3JtYXRpb24gb24gY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucwotICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc2V0dGluZyB1cCBhIGNyb3NzLWRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L25vdGU+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgT25jZSBidWlsdCwgdGhlIFNESyBpbnN0YWxsZXJzIGFyZSB3cml0dGVuIG91dCB0byB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvc2RrPC9maWxlbmFtZT4gZm9sZGVyIGluc2lkZSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgYXMgc2hvd24gaW4gdGhlIGZpZ3VyZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc2VjdGlvbi4KLSAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBTREssIHNldmVyYWwgdmFyaWFibGVzIGV4aXN0IHRoYXQgaGVscAotICAgICAgICAgICAgY29uZmlndXJlIHRoZXNlIGZpbGVzLgotICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSB2YXJpYWJsZXMgYXNzb2NpYXRlZCB3aXRoIGEgc3RhbmRhcmQKLSAgICAgICAgICAgIFNESzoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSA8ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgIG9uIHdoaWNoIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29scyBhcmUgcnVuIHRvCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBwYWNrYWdlcyBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtJTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPlNES0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBMaXN0cyB0aGUgZmVhdHVyZXMgdG8gaW5jbHVkZSBpbiB0aGUgInRhcmdldCIgcGFydAotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgU0RLLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVRPT0xDSEFJTl9IT1NUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fSE9TVF9UQVNLPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBMaXN0cyBwYWNrYWdlcyB0aGF0IG1ha2UgdXAgdGhlIGhvc3QKLSAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgU0RLIChpLmUuIHRoZSBwYXJ0IHRoYXQgcnVucyBvbgotICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGsgPHJlcGxhY2VhYmxlPmltYWdlbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgdG8gY3JlYXRlIHRoZSBTREssIGEgc2V0IG9mIGRlZmF1bHQgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgYXBwbHkuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYWxsb3dzIHlvdSB0byBhZGQgbW9yZSBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1UT09MQ0hBSU5fVEFSR0VUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fVEFSR0VUX1RBU0s8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgdGFyZ2V0IHBhcnQKLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIFNESyAoaS5lLiB0aGUgcGFydCBidWlsdCBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgIHRhcmdldCBoYXJkd2FyZSkuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLUEFUSCc+PGZpbGVuYW1lPlNES1BBVEg8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGRlZmF1bHQgU0RLIGluc3RhbGxhdGlvbiBwYXRoIG9mZmVyZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiBzY3JpcHQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICBUaGlzIG5leHQgbGlzdCwgc2hvd3MgdGhlIHZhcmlhYmxlcyBhc3NvY2lhdGVkIHdpdGggYW4gZXh0ZW5zaWJsZQotICAgICAgICAgICAgU0RLOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0VYVF9UWVBFJz48ZmlsZW5hbWU+U0RLX0VYVF9UWVBFPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBDb250cm9scyB3aGV0aGVyIG9yIG5vdCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZSBjb3BpZWQKLSAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgZXh0ZW5zaWJsZSBTREsuCi0gICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGFsbCByZXF1aXJlZCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZSBjb3BpZWQKLSAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgU0RLLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES19JTkNMVURFX1BLR0RBVEEnPjxmaWxlbmFtZT5TREtfSU5DTFVERV9QS0dEQVRBPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgcGFja2FnZWRhdGEgd2lsbCBiZSBpbmNsdWRlZCBpbgotICAgICAgICAgICAgICAgICAgICB0aGUgZXh0ZW5zaWJsZSBTREsgZm9yIGFsbCByZWNpcGVzIGluIHRoZSAid29ybGQiIHRhcmdldC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfSU5DTFVERV9UT09MQ0hBSU4nPjxmaWxlbmFtZT5TREtfSU5DTFVERV9UT09MQ0hBSU48L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0aGUgdG9vbGNoYWluIHdpbGwgYmUgaW5jbHVkZWQKLSAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyB0aGUgZXh0ZW5zaWJsZSBTREsuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUJz48ZmlsZW5hbWU+U0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgdmFyaWFibGVzIGFsbG93ZWQgdGhyb3VnaCBmcm9tIHRoZSBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBpbnRvIHRoZSBleHRlbnNpYmxlIFNESyBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES19MT0NBTF9DT05GX0JMQUNLTElTVCc+PGZpbGVuYW1lPlNES19MT0NBTF9DT05GX0JMQUNLTElTVDwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHZhcmlhYmxlcyBub3QgYWxsb3dlZCB0aHJvdWdoIGZyb20gdGhlIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIHN5c3RlbSBjb25maWd1cmF0aW9uIGludG8gdGhlIGV4dGVuc2libGUgU0RLIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0lOSEVSSVRfQkxBQ0tMSVNUJz48ZmlsZW5hbWU+U0RLX0lOSEVSSVRfQkxBQ0tMSVNUPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgY2xhc3NlcyB0byByZW1vdmUgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOSEVSSVQnPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlIGdsb2JhbGx5IHdpdGhpbiB0aGUgZXh0ZW5zaWJsZSBTREsgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLTwvc2VjdGlvbj4KLQotPC9jaGFwdGVyPgotPCEtLQotdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAotLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwKaW5kZXggZTI5YmY4OS4uYjk3NGQwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2dG9vbC1yZWZlcmVuY2UueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWRldnRvb2wtcmVmZXJlbmNlLnhtbApAQCAtMjAsNyArMjAsNyBAQAogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYXBwbHkgdGhlIGNvbW1hbmQgd2hlbiB1c2luZyB0aGUKICAgICAgICAgZXh0ZW5zaWJsZSBTREssIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1leHRlbnNpYmxlJz5Vc2luZyB0aGUgRXh0ZW5zaWJsZSBTREs8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlCisgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQogICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgogICAgIDwvcGFyYT4KIApAQCAtMzUsNTkgKzM1LDUxIEBACiAgICAgICAgICAgICB0aGUgY29tbWFuZHM6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCAtLWhlbHAKLSAgICAgdXNhZ2U6IGRldnRvb2wgYWRkIFstaF0gWy0tc2FtZS1kaXIgfCAtLW5vLXNhbWUtZGlyXSBbLS1mZXRjaCBVUkldCi0gICAgICAgICAgICAgICAgICAgICAgICBbLS1mZXRjaC1kZXZdIFstLXZlcnNpb24gVkVSU0lPTl0gWy0tbm8tZ2l0XQotICAgICAgICAgICAgICAgICAgICAgICAgWy0tc3JjcmV2IFNSQ1JFViB8IC0tYXV0b3Jldl0gWy0tc3JjYnJhbmNoIFNSQ0JSQU5DSF0KLSAgICAgICAgICAgICAgICAgICAgICAgIFstLWJpbmFyeV0gWy0tYWxzby1uYXRpdmVdIFstLXNyYy1zdWJkaXIgU1VCRElSXQotICAgICAgICAgICAgICAgICAgICAgICAgWy0tbWlycm9yc10gWy0tcHJvdmlkZXMgUFJPVklERVNdCi0gICAgICAgICAgICAgICAgICAgICAgICBbcmVjaXBlbmFtZV0gW3NyY3RyZWVdIFtmZXRjaHVyaV0KKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgdXNhZ2U6IGRldnRvb2wgWy0tYmFzZXBhdGggQkFTRVBBVEhdIFstLWJicGF0aCBCQlBBVEhdIFstZF0gWy1xXQorICAgICAgICAgICAgICAgICAgICBbLS1jb2xvciBDT0xPUl0gWy1oXQorICAgICAgICAgICAgICAgICAgICAmbHQ7c3ViY29tbWFuZCZndDsgLi4uCiAKLSAgICAgQWRkcyBhIG5ldyByZWNpcGUgdG8gdGhlIHdvcmtzcGFjZSB0byBidWlsZCBhIHNwZWNpZmllZCBzb3VyY2UgdHJlZS4gQ2FuCi0gICAgIG9wdGlvbmFsbHkgZmV0Y2ggYSByZW1vdGUgVVJJIGFuZCB1bnBhY2sgaXQgdG8gY3JlYXRlIHRoZSBzb3VyY2UgdHJlZS4KLQotICAgICBhcmd1bWVudHM6Ci0gICAgICAgcmVjaXBlbmFtZSAgICAgICAgICAgIE5hbWUgZm9yIG5ldyByZWNpcGUgdG8gYWRkIChqdXN0IG5hbWUgLSBubyB2ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIG9yIGV4dGVuc2lvbikuIElmIG5vdCBzcGVjaWZpZWQsIHdpbGwgYXR0ZW1wdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhdXRvLWRldGVjdCBpdC4KLSAgICAgICBzcmN0cmVlICAgICAgICAgICAgICAgUGF0aCB0byBleHRlcm5hbCBzb3VyY2UgdHJlZS4gSWYgbm90IHNwZWNpZmllZCwgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL2hvbWUvPHJlcGxhY2VhYmxlPnVzZXI8L3JlcGxhY2VhYmxlPi9wb2t5L2J1aWxkL3dvcmtzcGFjZS9zb3VyY2VzIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZC4KLSAgICAgICBmZXRjaHVyaSAgICAgICAgICAgICAgRmV0Y2ggdGhlIHNwZWNpZmllZCBVUkkgYW5kIGV4dHJhY3QgaXQgdG8gY3JlYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgdHJlZQorICAgICBPcGVuRW1iZWRkZWQgZGV2ZWxvcG1lbnQgdG9vbAogCiAgICAgIG9wdGlvbnM6Ci0gICAgICAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKLSAgICAgICAtLXNhbWUtZGlyLCAtcyAgICAgICAgQnVpbGQgaW4gc2FtZSBkaXJlY3RvcnkgYXMgc291cmNlCi0gICAgICAgLS1uby1zYW1lLWRpciAgICAgICAgIEZvcmNlIGJ1aWxkIGluIGEgc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5Ci0gICAgICAgLS1mZXRjaCBVUkksIC1mIFVSSSAgIEZldGNoIHRoZSBzcGVjaWZpZWQgVVJJIGFuZCBleHRyYWN0IGl0IHRvIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIHRyZWUgKGRlcHJlY2F0ZWQgLSBwYXNzIGFzIHBvc2l0aW9uYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgaW5zdGVhZCkKLSAgICAgICAtLWZldGNoLWRldiAgICAgICAgICAgRm9yIG5wbSwgYWxzbyBmZXRjaCBkZXZEZXBlbmRlbmNpZXMKLSAgICAgICAtLXZlcnNpb24gVkVSU0lPTiwgLVYgVkVSU0lPTgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIHRvIHVzZSB3aXRoaW4gcmVjaXBlIChQVikKLSAgICAgICAtLW5vLWdpdCwgLWcgICAgICAgICAgSWYgZmV0Y2hpbmcgc291cmNlLCBkbyBub3Qgc2V0IHVwIHNvdXJjZSB0cmVlIGFzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0IHJlcG9zaXRvcnkKLSAgICAgICAtLXNyY3JldiBTUkNSRVYsIC1TIFNSQ1JFVgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgcmV2aXNpb24gdG8gZmV0Y2ggaWYgZmV0Y2hpbmcgZnJvbSBhbiBTQ00KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyBnaXQgKGRlZmF1bHQgbGF0ZXN0KQotICAgICAgIC0tYXV0b3JldiwgLWEgICAgICAgICBXaGVuIGZldGNoaW5nIGZyb20gYSBnaXQgcmVwb3NpdG9yeSwgc2V0IFNSQ1JFViBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIHRvIGEgZmxvYXRpbmcgcmV2aXNpb24gaW5zdGVhZCBvZiBmaXhlZAotICAgICAgIC0tc3JjYnJhbmNoIFNSQ0JSQU5DSCwgLUIgU1JDQlJBTkNICi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5jaCBpbiBzb3VyY2UgcmVwb3NpdG9yeSBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIGdpdCAoZGVmYXVsdCBtYXN0ZXIpCi0gICAgICAgLS1iaW5hcnksIC1iICAgICAgICAgIFRyZWF0IHRoZSBzb3VyY2UgdHJlZSBhcyBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIHZlcmJhdGltIChubyBjb21waWxhdGlvbiwgc2FtZSBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlKS4gVXNlZnVsIHdpdGggYmluYXJ5IHBhY2thZ2VzIGUuZy4gUlBNcy4KLSAgICAgICAtLWFsc28tbmF0aXZlICAgICAgICAgQWxzbyBhZGQgbmF0aXZlIHZhcmlhbnQgKGkuZS4gc3VwcG9ydCBidWlsZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgZm9yIHRoZSBidWlsZCBob3N0IGFzIHdlbGwgYXMgdGhlIHRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lKQotICAgICAgIC0tc3JjLXN1YmRpciBTVUJESVIgICBTcGVjaWZ5IHN1YmRpcmVjdG9yeSB3aXRoaW4gc291cmNlIHRyZWUgdG8gdXNlCi0gICAgICAgLS1taXJyb3JzICAgICAgICAgICAgIEVuYWJsZSBQUkVNSVJST1JTIGFuZCBNSVJST1JTIGZvciBzb3VyY2UgdHJlZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaGluZyAoZGlzYWJsZSBieSBkZWZhdWx0KS4KLSAgICAgICAtLXByb3ZpZGVzIFBST1ZJREVTLCAtcCBQUk9WSURFUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5IGFuIGFsaWFzIGZvciB0aGUgaXRlbSBwcm92aWRlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLiBFLmcuIHZpcnR1YWwvbGliZ2wKKyAgICAgICAtLWJhc2VwYXRoIEJBU0VQQVRIICBCYXNlIGRpcmVjdG9yeSBvZiBTREsgLyBidWlsZCBkaXJlY3RvcnkKKyAgICAgICAtLWJicGF0aCBCQlBBVEggICAgICBFeHBsaWNpdGx5IHNwZWNpZnkgdGhlIEJCUEFUSCwgcmF0aGVyIHRoYW4gZ2V0dGluZyBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIG1ldGFkYXRhCisgICAgICAgLWQsIC0tZGVidWcgICAgICAgICAgRW5hYmxlIGRlYnVnIG91dHB1dAorICAgICAgIC1xLCAtLXF1aWV0ICAgICAgICAgIFByaW50IG9ubHkgZXJyb3JzCisgICAgICAgLS1jb2xvciBDT0xPUiAgICAgICAgQ29sb3JpemUgb3V0cHV0ICh3aGVyZSBDT0xPUiBpcyBhdXRvLCBhbHdheXMsIG5ldmVyKQorICAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKworICAgICBzdWJjb21tYW5kczoKKyAgICAgICBCZWdpbm5pbmcgd29yayBvbiBhIHJlY2lwZToKKyAgICAgICAgIGFkZCAgICAgICAgICAgICAgICAgIEFkZCBhIG5ldyByZWNpcGUKKyAgICAgICAgIG1vZGlmeSAgICAgICAgICAgICAgIE1vZGlmeSB0aGUgc291cmNlIGZvciBhbiBleGlzdGluZyByZWNpcGUKKyAgICAgICAgIHVwZ3JhZGUgICAgICAgICAgICAgIFVwZ3JhZGUgYW4gZXhpc3RpbmcgcmVjaXBlCisgICAgICAgR2V0dGluZyBpbmZvcm1hdGlvbjoKKyAgICAgICAgIHN0YXR1cyAgICAgICAgICAgICAgIFNob3cgd29ya3NwYWNlIHN0YXR1cworICAgICAgICAgc2VhcmNoICAgICAgICAgICAgICAgU2VhcmNoIGF2YWlsYWJsZSByZWNpcGVzCisgICAgICAgICBsYXRlc3QtdmVyc2lvbiAgICAgICBSZXBvcnQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGFuIGV4aXN0aW5nIHJlY2lwZQorICAgICAgIFdvcmtpbmcgb24gYSByZWNpcGUgaW4gdGhlIHdvcmtzcGFjZToKKyAgICAgICAgIGJ1aWxkICAgICAgICAgICAgICAgIEJ1aWxkIGEgcmVjaXBlCisgICAgICAgICByZW5hbWUgICAgICAgICAgICAgICBSZW5hbWUgYSByZWNpcGUgZmlsZSBpbiB0aGUgd29ya3NwYWNlCisgICAgICAgICBlZGl0LXJlY2lwZSAgICAgICAgICBFZGl0IGEgcmVjaXBlIGZpbGUKKyAgICAgICAgIGZpbmQtcmVjaXBlICAgICAgICAgIEZpbmQgYSByZWNpcGUgZmlsZQorICAgICAgICAgY29uZmlndXJlLWhlbHAgICAgICAgR2V0IGhlbHAgb24gY29uZmlndXJlIHNjcmlwdCBvcHRpb25zCisgICAgICAgICB1cGRhdGUtcmVjaXBlICAgICAgICBBcHBseSBjaGFuZ2VzIGZyb20gZXh0ZXJuYWwgc291cmNlIHRyZWUgdG8gcmVjaXBlCisgICAgICAgICByZXNldCAgICAgICAgICAgICAgICBSZW1vdmUgYSByZWNpcGUgZnJvbSB5b3VyIHdvcmtzcGFjZQorICAgICAgICAgZmluaXNoICAgICAgICAgICAgICAgRmluaXNoIHdvcmtpbmcgb24gYSByZWNpcGUgaW4geW91ciB3b3Jrc3BhY2UKKyAgICAgICBUZXN0aW5nIGNoYW5nZXMgb24gdGFyZ2V0OgorICAgICAgICAgZGVwbG95LXRhcmdldCAgICAgICAgRGVwbG95IHJlY2lwZSBvdXRwdXQgZmlsZXMgdG8gbGl2ZSB0YXJnZXQgbWFjaGluZQorICAgICAgICAgdW5kZXBsb3ktdGFyZ2V0ICAgICAgVW5kZXBsb3kgcmVjaXBlIG91dHB1dCBmaWxlcyBpbiBsaXZlIHRhcmdldCBtYWNoaW5lCisgICAgICAgICBidWlsZC1pbWFnZSAgICAgICAgICBCdWlsZCBpbWFnZSBpbmNsdWRpbmcgd29ya3NwYWNlIHJlY2lwZSBwYWNrYWdlcworICAgICAgIEFkdmFuY2VkOgorICAgICAgICAgY3JlYXRlLXdvcmtzcGFjZSAgICAgU2V0IHVwIHdvcmtzcGFjZSBpbiBhbiBhbHRlcm5hdGl2ZSBsb2NhdGlvbgorICAgICAgICAgZXhwb3J0ICAgICAgICAgICAgICAgRXhwb3J0IHdvcmtzcGFjZSBpbnRvIGEgdGFyIGFyY2hpdmUKKyAgICAgICAgIGltcG9ydCAgICAgICAgICAgICAgIEltcG9ydCBleHBvcnRlZCB0YXIgYXJjaGl2ZSBpbnRvIHdvcmtzcGFjZQorICAgICAgICAgZXh0cmFjdCAgICAgICAgICAgICAgRXh0cmFjdCB0aGUgc291cmNlIGZvciBhbiBleGlzdGluZyByZWNpcGUKKyAgICAgICAgIHN5bmMgICAgICAgICAgICAgICAgIFN5bmNocm9uaXplIHRoZSBzb3VyY2UgdHJlZSBmb3IgYW4gZXhpc3RpbmcgcmVjaXBlCisgICAgIFVzZSBkZXZ0b29sICZsdDtzdWJjb21tYW5kJmd0OyAtLWhlbHAgdG8gZ2V0IGhlbHAgb24gYSBzcGVjaWZpYyBjb21tYW5kCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgIDwvcGFyYT4KIApAQCAtOTcsOSArODksMTIgQEAKICAgICAgICAgICAgICAgICBuYW1lIGFuZCB1c2luZyA8ZmlsZW5hbWU+LS1oZWxwPC9maWxlbmFtZT46CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBhZGQgLS1oZWxwCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCiAgICAgIHVzYWdlOiBkZXZ0b29sIGFkZCBbLWhdIFstLXNhbWUtZGlyIHwgLS1uby1zYW1lLWRpcl0gWy0tZmV0Y2ggVVJJXQotICAgICAgICAgICAgICAgICAgICAgICAgWy0tdmVyc2lvbiBWRVJTSU9OXSBbLS1uby1naXRdIFstLWF1dG9yZXZdIFstLWJpbmFyeV0KLSAgICAgICAgICAgICAgICAgICAgICAgIFstLWFsc28tbmF0aXZlXSBbLS1zcmMtc3ViZGlyIFNVQkRJUl0KKyAgICAgICAgICAgICAgICAgICAgICAgIFstLWZldGNoLWRldl0gWy0tdmVyc2lvbiBWRVJTSU9OXSBbLS1uby1naXRdCisgICAgICAgICAgICAgICAgICAgICAgICBbLS1zcmNyZXYgU1JDUkVWIHwgLS1hdXRvcmV2XSBbLS1zcmNicmFuY2ggU1JDQlJBTkNIXQorICAgICAgICAgICAgICAgICAgICAgICAgWy0tYmluYXJ5XSBbLS1hbHNvLW5hdGl2ZV0gWy0tc3JjLXN1YmRpciBTVUJESVJdCisgICAgICAgICAgICAgICAgICAgICAgICBbLS1taXJyb3JzXSBbLS1wcm92aWRlcyBQUk9WSURFU10KICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWNpcGVuYW1lXSBbc3JjdHJlZV0gW2ZldGNodXJpXQogCiAgICAgIEFkZHMgYSBuZXcgcmVjaXBlIHRvIHRoZSB3b3Jrc3BhY2UgdG8gYnVpbGQgYSBzcGVjaWZpZWQgc291cmNlIHRyZWUuIENhbgpAQCAtMTIzLDE4ICsxMTgsMzAgQEAKICAgICAgICAtLWZldGNoIFVSSSwgLWYgVVJJICAgRmV0Y2ggdGhlIHNwZWNpZmllZCBVUkkgYW5kIGV4dHJhY3QgaXQgdG8gY3JlYXRlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgdHJlZSAoZGVwcmVjYXRlZCAtIHBhc3MgYXMgcG9zaXRpb25hbCBhcmd1bWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkKQorICAgICAgIC0tZmV0Y2gtZGV2ICAgICAgICAgICBGb3IgbnBtLCBhbHNvIGZldGNoIGRldkRlcGVuZGVuY2llcwogICAgICAgIC0tdmVyc2lvbiBWRVJTSU9OLCAtViBWRVJTSU9OCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gdG8gdXNlIHdpdGhpbiByZWNpcGUgKFBWKQogICAgICAgIC0tbm8tZ2l0LCAtZyAgICAgICAgICBJZiBmZXRjaGluZyBzb3VyY2UsIGRvIG5vdCBzZXQgdXAgc291cmNlIHRyZWUgYXMgYSBnaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeQorICAgICAgIC0tc3JjcmV2IFNSQ1JFViwgLVMgU1JDUkVWCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSByZXZpc2lvbiB0byBmZXRjaCBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTSBzdWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGdpdCAoZGVmYXVsdCBsYXRlc3QpCiAgICAgICAgLS1hdXRvcmV2LCAtYSAgICAgICAgIFdoZW4gZmV0Y2hpbmcgZnJvbSBhIGdpdCByZXBvc2l0b3J5LCBzZXQgU1JDUkVWIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgdG8gYSBmbG9hdGluZyByZXZpc2lvbiBpbnN0ZWFkIG9mIGZpeGVkCisgICAgICAgLS1zcmNicmFuY2ggU1JDQlJBTkNILCAtQiBTUkNCUkFOQ0gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJhbmNoIGluIHNvdXJjZSByZXBvc2l0b3J5IGlmIGZldGNoaW5nIGZyb20gYW4gU0NNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgZ2l0IChkZWZhdWx0IG1hc3RlcikKICAgICAgICAtLWJpbmFyeSwgLWIgICAgICAgICAgVHJlYXQgdGhlIHNvdXJjZSB0cmVlIGFzIHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgdmVyYmF0aW0gKG5vIGNvbXBpbGF0aW9uLCBzYW1lIGRpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUpLiBVc2VmdWwgd2l0aCBiaW5hcnkgcGFja2FnZXMgZS5nLiBSUE1zLgogICAgICAgIC0tYWxzby1uYXRpdmUgICAgICAgICBBbHNvIGFkZCBuYXRpdmUgdmFyaWFudCAoaS5lLiBzdXBwb3J0IGJ1aWxkaW5nIHJlY2lwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGJ1aWxkIGhvc3QgYXMgd2VsbCBhcyB0aGUgdGFyZ2V0IG1hY2hpbmUpCiAgICAgICAgLS1zcmMtc3ViZGlyIFNVQkRJUiAgIFNwZWNpZnkgc3ViZGlyZWN0b3J5IHdpdGhpbiBzb3VyY2UgdHJlZSB0byB1c2UKKyAgICAgICAtLW1pcnJvcnMgICAgICAgICAgICAgRW5hYmxlIFBSRU1JUlJPUlMgYW5kIE1JUlJPUlMgZm9yIHNvdXJjZSB0cmVlIGZldGNoaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNhYmxlIGJ5IGRlZmF1bHQpLgorICAgICAgIC0tcHJvdmlkZXMgUFJPVklERVMsIC1wIFBST1ZJREVTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZnkgYW4gYWxpYXMgZm9yIHRoZSBpdGVtIHByb3ZpZGVkIGJ5IHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUuZy4gdmlydHVhbC9saWJnbAogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtMTYxLDcgKzE2OCw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGF0dGljIC0gQSBkaXJlY3RvcnkgY3JlYXRlZCBpZiBkZXZ0b29sIGJlbGlldmVzIGl0IHByZXNlcnZlCisgICAgIGF0dGljIC0gQSBkaXJlY3RvcnkgY3JlYXRlZCBpZiBkZXZ0b29sIGJlbGlldmVzIGl0IG11c3QgcHJlc2VydmUKICAgICAgICAgICAgICBhbnl0aGluZyB3aGVuIHlvdSBydW4gImRldnRvb2wgcmVzZXQiLiAgRm9yIGV4YW1wbGUsIGlmIHlvdQogICAgICAgICAgICAgIHJ1biAiZGV2dG9vbCBhZGQiLCBtYWtlIGNoYW5nZXMgdG8gdGhlIHJlY2lwZSwgYW5kIHRoZW4KICAgICAgICAgICAgICBydW4gImRldnRvb2wgcmVzZXQiLCBkZXZ0b29sIHRha2VzIG5vdGljZSB0aGF0IHRoZSBmaWxlIGhhcwpAQCAtNDI2LDEyICs0MzMsMjcgQEAKICAgICAgICAgPHRpdGxlPlVwZ3JhZGluZyBhIFJlY2lwZTwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICB0byB1cGdyYWRlIGFuIGV4aXN0aW5nIHJlY2lwZSB0byBhIG5ldyB1cHN0cmVhbSB2ZXJzaW9uLgotICAgICAgICAgICAgVGhlIGNvbW1hbmQgcHV0cyB0aGUgdXBncmFkZWQgcmVjaXBlIGZpbGUgaW50byB0aGUKLSAgICAgICAgICAgIHdvcmtzcGFjZSBhbG9uZyB3aXRoIGFueSBhc3NvY2lhdGVkIGZpbGVzLCBhbmQgZXh0cmFjdHMKLSAgICAgICAgICAgIHRoZSBzb3VyY2UgdHJlZSB0byBhIHNwZWNpZmllZCBsb2NhdGlvbiBzaG91bGQgcGF0Y2hlcwotICAgICAgICAgICAgbmVlZCByZWJhc2VkIG9yIGFkZGVkIHRvIGFzIGEgcmVzdWx0IG9mIHRoZSB1cGdyYWRlLgorICAgICAgICAgICAgQXMgc29mdHdhcmUgbWF0dXJlcywgdXBzdHJlYW0gcmVjaXBlcyBhcmUgdXBncmFkZWQgdG8gbmV3ZXIKKyAgICAgICAgICAgIHZlcnNpb25zLgorICAgICAgICAgICAgQXMgYSBkZXZlbG9wZXIsIHlvdSBuZWVkIHRvIGtlZXAgeW91ciBsb2NhbCByZWNpcGVzIHVwLXRvLWRhdGUKKyAgICAgICAgICAgIHdpdGggdGhlIHVwc3RyZWFtIHZlcnNpb24gcmVsZWFzZXMuCisgICAgICAgICAgICBTZXZlcmFsIG1ldGhvZHMgZXhpc3QgYnkgd2hpY2ggeW91IGNhbiB1cGdyYWRlIHJlY2lwZXMuCisgICAgICAgICAgICBZb3UgY2FuIHJlYWQgYWJvdXQgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNncy11cGdyYWRpbmctcmVjaXBlcyc+VXBncmFkaW5nIFJlY2lwZXM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICBjb21tYW5kLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgIHVwZ3JhZGVzIGFuIGV4aXN0aW5nIHJlY2lwZSB0byBhIG1vcmUgcmVjZW50IHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgICByZWNpcGUgdXBzdHJlYW0uCisgICAgICAgICAgICBUaGUgY29tbWFuZCBwdXRzIHRoZSB1cGdyYWRlZCByZWNpcGUgZmlsZSBhbG9uZyB3aXRoIGFueSBhc3NvY2lhdGVkCisgICAgICAgICAgICBmaWxlcyBpbnRvIGEgIndvcmtzcGFjZSIgYW5kLCBpZiBuZWNlc3NhcnksIGV4dHJhY3RzIHRoZSBzb3VyY2UKKyAgICAgICAgICAgIHRyZWUgdG8gYSBzcGVjaWZpZWQgbG9jYXRpb24uCisgICAgICAgICAgICBEdXJpbmcgdGhlIHVwZ3JhZGUsIHBhdGNoZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWNpcGUgYXJlCisgICAgICAgICAgICByZWJhc2VkIG9yIGFkZGVkIGFzIG5lZWRlZC4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtNDQzLDkgKzQ2NSwyMSBAQAogICAgICAgICAgICAgdGhlIHZlcnNpb24gbnVtYmVyIHRvIHdoaWNoIHlvdSB3YW50IHRvIHVwZ3JhZGUgKGkuZS4gdGhlCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPiksCiAgICAgICAgICAgICB0aGUgc291cmNlIHJldmlzaW9uIHRvIHdoaWNoIHlvdSB3YW50IHRvIHVwZ3JhZGUgKGkuZS4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC9saW5rPiksCiAgICAgICAgICAgICB3aGV0aGVyIG9yIG5vdCB0byBhcHBseSBwYXRjaGVzLCBhbmQgc28gZm9ydGguCiAgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBtb3JlIG9uIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHdvcmtmbG93IGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1kZXZ0b29sLXVzZS1kZXZ0b29sLXVwZ3JhZGUtdG8tY3JlYXRlLWEtdmVyc2lvbi1vZi10aGUtcmVjaXBlLXRoYXQtc3VwcG9ydHMtYS1uZXdlci12ZXJzaW9uLW9mLXRoZS1zb2Z0d2FyZSc+VXNlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiB0byBDcmVhdGUgYSBWZXJzaW9uIG9mIHRoZSBSZWNpcGUgdGhhdCBTdXBwb3J0cyBhIE5ld2VyIFZlcnNpb24gb2YgdGhlIFNvZnR3YXJlPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICBZb3UgY2FuIGFsc28gc2VlIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVzZQorICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dzLXVzaW5nLWRldnRvb2wtdXBncmFkZSc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAogICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLXJlc2V0dGluZy1hLXJlY2lwZSc+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwKaW5kZXggMDI4NTdkYy4uY2I3NGRmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbApAQCAtMTYxLDkgKzE2MSw5IEBACiAgICAgICAgICAgICAgICAgICAgIHByb3RvY29scyBzdXBwb3J0LgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk8gRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluY2x1ZGVzICJibHVldG9vdGgiLCB3aGljaCBjYXVzZXMgYmx1ZXo1Ci0gICAgICAgICAgICAgICAgICAgICAgICB0byBiZSBiYWNrZmlsbGVkIGluIGZvciBibHVldG9vdGggc3VwcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk8gRkVBVFVSRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICAgICAgImJsdWV0b290aCIsIHdoaWNoIGNhdXNlcyBibHVlejUgdG8gYmUgYmFja2ZpbGxlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGJsdWV0b290aCBzdXBwb3J0LgogICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCB3YW50IGJsdWV6NSBiYWNrZmlsbGVkIGFuZCB3b3VsZCByYXRoZXIKICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBibHVlejQsIHlvdSBuZWVkIHRvIHVzZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEPC9maWxlbmFtZT48L2xpbms+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1pbWFnZXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtaW1hZ2VzLnhtbAppbmRleCBjNzUyZjk0Li4xZjk2MTg2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1pbWFnZXMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWltYWdlcy54bWwKQEAgLTQwLDE1ICs0MCwxOSBAQAogICAgIDxwYXJhPgogICAgICAgICBGb2xsb3dpbmcgaXMgYSBsaXN0IG9mIHN1cHBvcnRlZCByZWNpcGVzOgogICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5idWlsZC1hcHBsaWFuY2UtaW1hZ2U8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBBbiBleGFtcGxlIHZpcnR1YWwgbWFjaGluZSB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgcGllY2VzIHJlcXVpcmVkIHRvCi0gICAgICAgICAgICAgICAgcnVuIGJ1aWxkcyB1c2luZyB0aGUgYnVpbGQgc3lzdGVtIGFzIHdlbGwgYXMgdGhlIGJ1aWxkIHN5c3RlbSBpdHNlbGYuCisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkLWFwcGxpYW5jZS1pbWFnZTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIEFuIGV4YW1wbGUgdmlydHVhbCBtYWNoaW5lIHRoYXQgY29udGFpbnMgYWxsIHRoZSBwaWVjZXMKKyAgICAgICAgICAgICAgICByZXF1aXJlZCB0byBydW4gYnVpbGRzIHVzaW5nIHRoZSBidWlsZCBzeXN0ZW0gYXMgd2VsbCBhcyB0aGUKKyAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gaXRzZWxmLgogICAgICAgICAgICAgICAgIFlvdSBjYW4gYm9vdCBhbmQgcnVuIHRoZSBpbWFnZSB1c2luZyBlaXRoZXIgdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy52bXdhcmUuY29tL3Byb2R1Y3RzL3BsYXllci9vdmVydmlldy5odG1sJz5WTXdhcmUgUGxheWVyPC91bGluaz4KLSAgICAgICAgICAgICAgICBvciA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnZtd2FyZS5jb20vcHJvZHVjdHMvd29ya3N0YXRpb24vb3ZlcnZpZXcuaHRtbCc+Vk13YXJlIFdvcmtzdGF0aW9uPC91bGluaz4uCisgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnZtd2FyZS5jb20vcHJvZHVjdHMvd29ya3N0YXRpb24vb3ZlcnZpZXcuaHRtbCc+Vk13YXJlIFdvcmtzdGF0aW9uPC91bGluaz4uCiAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBpbWFnZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbi9idWlsZC1hcHBsaWFuY2UnPkJ1aWxkIEFwcGxpYW5jZTwvdWxpbms+IHBhZ2Ugb24KLSAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCB3ZWJzaXRlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvc29mdHdhcmUtaXRlbS9idWlsZC1hcHBsaWFuY2UvJz5CdWlsZCBBcHBsaWFuY2U8L3VsaW5rPgorICAgICAgICAgICAgICAgIHBhZ2Ugb24gdGhlIFlvY3RvIFByb2plY3Qgd2Vic2l0ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS1iYXNlPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgQSBjb25zb2xlLW9ubHkgaW1hZ2UgdGhhdCBmdWxseSBzdXBwb3J0cyB0aGUgdGFyZ2V0IGRldmljZSBoYXJkd2FyZS48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS1jbHV0dGVyPC9maWxlbmFtZT46CkBAIC0xNTEsNyArMTU1LDggQEAKICAgICAgICAgICAgICAgICBUaGlzIGltYWdlIHByb3ZpZGVzIHRoZSBXYXlsYW5kIHByb3RvY29sIGxpYnJhcmllcyBhbmQgdGhlCiAgICAgICAgICAgICAgICAgcmVmZXJlbmNlIFdlc3RvbiBjb21wb3NpdG9yLgogICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3dheWxhbmQnPldheWxhbmQ8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtdXNpbmctd2F5bGFuZC1hbmQtd2VzdG9uJz5Vc2luZyBXYXlsYW5kIGFuZCBXZXN0b248L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS14MTE8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICBBIHZlcnkgYmFzaWMgWDExIGltYWdlIHdpdGggYSB0ZXJtaW5hbC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWtpY2tzdGFydC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1raWNrc3RhcnQueG1sCmluZGV4IDFkZDM2YjIuLmE1OGY5ZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWtpY2tzdGFydC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYta2lja3N0YXJ0LnhtbApAQCAtMjcsMTUgKzI3LDEwIEBACiAgICAgICAgICAgICBLaWNrc3RhcnQgY29tbWFuZHMgYXJlIGJhc2VkIG9uIHRoZSBGZWRvcmEga2lja3N0YXJ0IHZlcnNpb25zIGJ1dAogICAgICAgICAgICAgd2l0aCBtb2RpZmljYXRpb25zIHRvIHJlZmxlY3QgV2ljIGNhcGFiaWxpdGllcy4KICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIGZvciB0aG9zZSBjb21tYW5kcyBhdCB0aGUKLSAgICAgICAgICAgIGZvbGxvd2luZyBsaW5rczoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9BbmFjb25kYS9LaWNrc3RhcnQjcGFydF9vcl9wYXJ0aXRpb24nPmh0dHA6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0FuYWNvbmRhL0tpY2tzdGFydCNwYXJ0X29yX3BhcnRpdGlvbjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvQW5hY29uZGEvS2lja3N0YXJ0I2Jvb3Rsb2FkZXInPmh0dHA6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0FuYWNvbmRhL0tpY2tzdGFydCNib290bG9hZGVyPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIGZvbGxvd2luZyBsaW5rOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8dWxpbmsgdXJsPSdodHRwOi8vcHlraWNrc3RhcnQucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2tpY2tzdGFydC1kb2NzLmh0bWwnPmh0dHA6Ly9weWtpY2tzdGFydC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3Qva2lja3N0YXJ0LWRvY3MuaHRtbDwvdWxpbms+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTQzLDcgKzM4LDcgQEAKICAgICAgICAgPHRpdGxlPkNvbW1hbmQ6IHBhcnQgb3IgcGFydGl0aW9uPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEVpdGhlciBvZiB0aGVzZSBjb21tYW5kcyBjcmVhdGUgYSBwYXJ0aXRpb24gb24gdGhlIHN5c3RlbSBhbmQgdXNlCisgICAgICAgICAgICBFaXRoZXIgb2YgdGhlc2UgY29tbWFuZHMgY3JlYXRlcyBhIHBhcnRpdGlvbiBvbiB0aGUgc3lzdGVtIGFuZCB1c2VzCiAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIHN5bnRheDoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgcGFydCBbPHJlcGxhY2VhYmxlPm1udHBvaW50PC9yZXBsYWNlYWJsZT5dCkBAIC01NSw3ICs1MCw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4gaXMKLSAgICAgICAgICAgIHdoZXJlIHRoZSBwYXJ0aXRpb24gd2lsbCBiZSBtb3VudGVkIGFuZCBtdXN0IGJlIG9mIG9uZSBvZiB0aGUKKyAgICAgICAgICAgIHdoZXJlIHRoZSBwYXJ0aXRpb24gaXMgbW91bnRlZCBhbmQgbXVzdCBiZSBpbiBvbmUgb2YgdGhlCiAgICAgICAgICAgICBmb2xsb3dpbmcgZm9ybXM6CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTY0LDcgKzU5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3dhcDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgY3JlYXRlZCBwYXJ0aXRpb24gaXMgdXNlZCBhcyBzd2FwIHNwYWNlLgorICAgICAgICAgICAgICAgICAgICBUaGUgY3JlYXRlZCBwYXJ0aXRpb24gaXMgdXNlZCBhcyBzd2FwIHNwYWNlCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KQEAgLTc0LDEzICs2OSwyMiBAQAogICAgICAgICAgICAgcGFydGl0aW9uIHRvIGF1dG9tYXRpY2FsbHkgYmUgbW91bnRlZC4KICAgICAgICAgICAgIFdpYyBhY2hpZXZlcyB0aGlzIGJ5IGFkZGluZyBlbnRyaWVzIHRvIHRoZSBmaWxlc3lzdGVtIHRhYmxlIChmc3RhYikKICAgICAgICAgICAgIGR1cmluZyBpbWFnZSBnZW5lcmF0aW9uLgotICAgICAgICAgICAgSW4gb3JkZXIgZm9yIHdpYyB0byBnZW5lcmF0ZSBhIHZhbGlkIGZzdGFiLCB5b3UgbXVzdCBhbHNvIHByb3ZpZGUKKyAgICAgICAgICAgIEluIG9yZGVyIGZvciBXaWMgdG8gZ2VuZXJhdGUgYSB2YWxpZCBmc3RhYiwgeW91IG11c3QgYWxzbyBwcm92aWRlCiAgICAgICAgICAgICBvbmUgb2YgdGhlIDxmaWxlbmFtZT4tLW9uZHJpdmU8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgIDxmaWxlbmFtZT4tLW9uZGlzazwvZmlsZW5hbWU+LCBvcgogICAgICAgICAgICAgPGZpbGVuYW1lPi0tdXNlLXV1aWQ8L2ZpbGVuYW1lPiBwYXJ0aXRpb24gb3B0aW9ucyBhcyBwYXJ0IG9mIHRoZQogICAgICAgICAgICAgY29tbWFuZC4KLSAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB1c2luZyAiLyIgYXMgdGhlIG1vdW50cG9pbnQuCi0gICAgICAgICAgICBUaGUgY29tbWFuZCB1c2VzICItLW9uZGlzayIgdG8gZm9yY2UgdGhlIHBhcnRpdGlvbiBvbnRvIHRoZQorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIG1vdW50IHByb2dyYW0gbXVzdCB1bmRlcnN0YW5kIHRoZSBQQVJUVVVJRCBzeW50YXggeW91IHVzZQorICAgICAgICAgICAgICAgIHdpdGggPGZpbGVuYW1lPi0tdXNlLXV1aWQ8L2ZpbGVuYW1lPiBhbmQgbm9uLXJvb3QKKyAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+bW91bnRwb2ludDwvcmVwbGFjZWFibGU+LCBpbmNsdWRpbmcgc3dhcC4KKyAgICAgICAgICAgICAgICBUaGUgYnVzeWJveCB2ZXJzaW9ucyBvZiB0aGVzZSBhcHBsaWNhdGlvbiBhcmUgY3VycmVudGx5CisgICAgICAgICAgICAgICAgZXhjbHVkZWQuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCB1c2VzICIvIiBhcyB0aGUKKyAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5tb3VudHBvaW50PC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICBUaGUgY29tbWFuZCB1c2VzIDxmaWxlbmFtZT4tLW9uZGlzazwvZmlsZW5hbWU+IHRvIGZvcmNlIHRoZQorICAgICAgICAgICAgcGFydGl0aW9uIG9udG8gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+c2RiPC9maWxlbmFtZT4gZGlzazoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGIgLS1mc3R5cGU9ZXh0MyAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNApAQCAtMTAxLDE3ICsxMDUsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWZpeGVkLXNpemU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZXhhY3QgcGFydGl0aW9uIHNpemUgaW4gTUJ5dGVzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHNwZWNpZnkgd2l0aCA8ZmlsZW5hbWU+LS1zaXplPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEFuIGVycm9yIG9jY3VycyB3aGVuIGFzc2VtYmxpbmcgdGhlIGRpc2sgaW1hZ2UgaWYgdGhlCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBkYXRhIGlzIGxhcmdlciB0aGFuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLWZpeGVkLXNpemU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgbmFtZXMgdGhlIHNvdXJjZQogICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZGF0YSB0aGF0IHBvcHVsYXRlcyB0aGUgcGFydGl0aW9uLgogICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdmFsdWUgZm9yIHRoaXMgb3B0aW9uIGlzICJyb290ZnMiLCBidXQgeW91CiAgICAgICAgICAgICAgICAgICAgIGNhbiB1c2UgYW55IHZhbHVlIHRoYXQgbWFwcyB0byBhIHZhbGlkIHNvdXJjZSBwbHVnLWluLgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIHNvdXJjZSBwbHVnLWlucywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nd2ljLXBsdWctaW5zLWludGVyZmFjZSc+V2ljIFBsdWctSW5zIEludGVyZmFjZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjd2ljLXVzaW5nLXRoZS13aWMtcGx1Zy1pbnMtaW50ZXJmYWNlJz5Vc2luZyB0aGUgV2ljIFBsdWctSW5zIEludGVyZmFjZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSB1c2UgPGZpbGVuYW1lPi0tc291cmNlIHJvb3RmczwvZmlsZW5hbWU+LCBXaWMKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBhIHBhcnRpdGlvbiBhcyBsYXJnZSBhcyBuZWVkZWQgYW5kIHRvIGZpbGwgaXQgd2l0aAorICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgcGFydGl0aW9uIGFzIGxhcmdlIGFzIG5lZWRlZCBhbmQgZmlsbHMgaXQgd2l0aAogICAgICAgICAgICAgICAgICAgICB0aGUgY29udGVudHMgb2YgdGhlIHJvb3QgZmlsZXN5c3RlbSBwb2ludGVkIHRvIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LXI8L2ZpbGVuYW1lPiBjb21tYW5kLWxpbmUgb3B0aW9uIG9yIHRoZQogICAgICAgICAgICAgICAgICAgICBlcXVpdmFsZW50IHJvb3RmcyBkZXJpdmVkIGZyb20gdGhlIDxmaWxlbmFtZT4tZTwvZmlsZW5hbWU+CkBAIC0xMzAsOCArMTQzLDggQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1yPC9maWxlbmFtZT4gY29tbWFuZC1saW5lIG9wdGlvbiBvciB0aGUKICAgICAgICAgICAgICAgICAgICAgZXF1aXZhbGVudCByb290ZnMgZGVyaXZlZCBmcm9tIHRoZSA8ZmlsZW5hbWU+LWU8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBjb21tYW5kLWxpbmUgb3B0aW9uLgotICAgICAgICAgICAgICAgICAgICBFeGFjdGx5IHdoYXQgdGhvc2UgY29udGVudHMgYW5kIGZpbGVzeXN0ZW0gdHlwZSBlbmQgdXAKLSAgICAgICAgICAgICAgICAgICAgYmVpbmcgYXJlIGRlcGVuZGVudCBvbiB0aGUgZ2l2ZW4gcGx1Zy1pbiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgRXhhY3RseSB3aGF0IHRob3NlIGNvbnRlbnRzIGFyZSBhbmQgZmlsZXN5c3RlbSB0eXBlIHVzZWQgYXJlCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVudCBvbiB0aGUgZ2l2ZW4gcGx1Zy1pbiBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBkbyBub3QgdXNlIHRoZSA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPgpAQCAtMTczLDcgKzE4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1mc29wdGlvbnM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBmcmVlLWZvcm0gc3RyaW5nIG9mIG9wdGlvbnMgdG8gYmUgdXNlZCB3aGVuCiAgICAgICAgICAgICAgICAgICAgIG1vdW50aW5nIHRoZSBmaWxlc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBUaGlzIHN0cmluZyB3aWxsIGJlIGNvcGllZCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICBUaGlzIHN0cmluZyBpcyBjb3BpZWQgaW50byB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvZnN0YWI8L2ZpbGVuYW1lPiBmaWxlIG9mIHRoZSBpbnN0YWxsZWQKICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGFuZCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gcXVvdGVzLgogICAgICAgICAgICAgICAgICAgICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBzdHJpbmcgaXMgImRlZmF1bHRzIi4KQEAgLTE5MSw5ICsyMDQsOSBAQAogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1hbGlnbiAoaW4gS0J5dGVzKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IHNheXMgdG8gc3RhcnQgYQotICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24gb24gYW4gPHJlcGxhY2VhYmxlPng8L3JlcGxhY2VhYmxlPiBLQnl0ZXMKLSAgICAgICAgICAgICAgICAgICAgYm91bmRhcnkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IHNheXMgdG8gc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9ucyBvbiBib3VuZGFyaWVzIGdpdmVuCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT54PC9yZXBsYWNlYWJsZT4gS0J5dGVzLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1uby10YWJsZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CkBAIC0yMDMsMTAgKzIxNiwxNyBAQAogICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgcGFydGl0aW9uIGlzIG5vdCBhZGRlZCB0byB0aGUgcGFydGl0aW9uIHRhYmxlLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1leGNsdWRlLXBhdGg8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdCBleGNsdWRlcyB0aGUgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSByZXN1bHRpbmcgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIG9ubHkgZWZmZWN0aXZlIHdpdGggdGhlIHJvb3RmcyBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgcGx1Zy1pbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tZXh0cmEtc3BhY2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdCBhZGRzIGV4dHJhIHNwYWNlCiAgICAgICAgICAgICAgICAgICAgIGFmdGVyIHRoZSBzcGFjZSBmaWxsZWQgYnkgdGhlIGNvbnRlbnQgb2YgdGhlIHBhcnRpdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHNpemUgY2FuIGdvIGJleW9uZCB0aGUgc2l6ZSBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBzaXplIGNhbiBleGNlZWQgdGhlIHNpemUgc3BlY2lmaWVkIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1zaXplPC9maWxlbmFtZT4gb3B0aW9uLgogICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxMCBNYnl0ZXMuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtMjE4LDYgKzIzOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAiMS4zIi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tcGFydC1uYW1lPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIGEgbmFtZQorICAgICAgICAgICAgICAgICAgICBmb3IgR1BUIHBhcnRpdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXBhcnQtdHlwZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IHNwZWNpZmllcyB0aGUKICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uIHR5cGUgZ2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgKEdVSUQpIGZvciBHUFQKQEAgLTIzNyw2ICsyNjIsMzEgQEAKICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZQogICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24gVVVJRC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tZnN1dWlkPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIFVVSUQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2VuZXJhdGUgb3IgbW9kaWZ5CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XS1NfRklMRSc+PGZpbGVuYW1lPldLU19GSUxFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHdpdGggdGhpcyBvcHRpb24gaWYgYSBwcmVjb25maWd1cmVkIGZpbGVzeXN0ZW0gVVVJRCBpcworICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBpbiB0aGUgYm9vdGxvYWRlcgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGJlZm9yZSB5b3UgcnVuIFdpYy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tc3lzdGVtLWlkPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24gc3lzdGVtIElELCB3aGljaCBpcyBhIG9uZSBieXRlIGxvbmcsIGhleGFkZWNpbWFsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciB3aXRoIG9yIHdpdGhvdXQgdGhlIDB4IHByZWZpeC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tbWtmcy1leHRyYW9wdHM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBzcGVjaWZpZXMgYWRkaXRpb25hbCBvcHRpb25zIHRvIHBhc3MgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ta2ZzPC9maWxlbmFtZT4gdXRpbGl0eS4KKyAgICAgICAgICAgICAgICAgICAgU29tZSBkZWZhdWx0IG9wdGlvbnMgZm9yIGNlcnRhaW4gZmlsZXN5c3RlbXMgZG8gbm90IHRha2UKKyAgICAgICAgICAgICAgICAgICAgZWZmZWN0LgorICAgICAgICAgICAgICAgICAgICBTZWUgV2ljJ3MgaGVscCBvbiBraWNrc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPndpYyBoZWxwIGtpY2tzdGFydDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwueG1sCmluZGV4IGQ0YjdiZWUuLjE2OWEzMWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnhtbApAQCAtMTE4LDE0ICsxMTgsOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMjwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPk1hcmNoIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTE0NywzNyArMTQyLDQ1IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCi0gICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAotICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCisgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscworICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBsb2NhdGVkIHRoaXMgbWFudWFsIHRocm91Z2ggYSB3ZWIgc2VhcmNoLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgbWFudWFsIG1pZ2h0IG5vdCBiZSB0aGUgb25lIHlvdSB3YW50CisgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIHRoZSBzZWFyY2ggbWlnaHQgaGF2ZSByZXR1cm5lZCBhIG1hbnVhbCBtdWNoCisgICAgICAgICAgICAgICAgICAgICAgIG9sZGVyIHRoYW4gdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiB3aXRoIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICAgICBhcmUgd29ya2luZykuCisgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCBZb2N0byBQcm9qZWN0IG1ham9yIHJlbGVhc2VzIGJ5CisgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvUmVsZWFzZXMnPlJlbGVhc2VzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCisgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgogCiAgICAgPC9ib29raW5mbz4KIAotICAgIDx4aTppbmNsdWRlIGhyZWY9ImludHJvZHVjdGlvbi54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJyZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwiLz4KIAotICAgIDx4aTppbmNsdWRlIGhyZWY9InVzaW5ncG9reS54bWwiLz4KLQotICAgIDx4aTppbmNsdWRlIGhyZWY9InJlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwiLz4KLQotICAgIDx4aTppbmNsdWRlIGhyZWY9InRlY2huaWNhbC1kZXRhaWxzLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InJlZi10ZXJtcy54bWwiLz4KIAogICAgIDx4aTppbmNsdWRlIGhyZWY9InJlZi1yZWxlYXNlLXByb2Nlc3MueG1sIi8+CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1yZWxlYXNlLXByb2Nlc3MueG1sCmluZGV4IGUyOTAyZWIuLmM2NjVjZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtcmVsZWFzZS1wcm9jZXNzLnhtbApAQCAtNjEsNyArNjEsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBFYWNoIG1ham9yIHJlbGVhc2UgcmVjZWl2ZXMgYSBjb2RlbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIHJlbGVhc2UgaW4KICAgICAgICAgdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L2xpbms+LgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KICAgICAgICAgVGhlIGNvbmNlcHQgaXMgdGhhdCBicmFuY2hlcyBvZgogICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CiAgICAgICAgIHdpdGggdGhlIHNhbWUgY29kZW5hbWUgYXJlIGxpa2VseSB0byBiZSBjb21wYXRpYmxlIGFuZCB0aHVzCkBAIC0yMTcsNyArMjE3LDcgQEAKICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYWxsIHRoZXNlIGJyYW5jaGVzIGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC9saW5rPi4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgogICAgICAgICA8L25vdGU+CiAgICAgICAgIFRlc3Rpbmcgd2l0aGluIHRoZXNlIHB1YmxpYyBicmFuY2hlcyBlbnN1cmVzIGluIGEgcHVibGljbHkgdmlzaWJsZSB3YXkKICAgICAgICAgdGhhdCBhbGwgb2YgdGhlIG1haW4gc3VwcG9zZWQgYXJjaGl0ZWN0dXJlcyBhbmQgcmVjaXBlcyBpbiBPRS1Db3JlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3RydWN0dXJlLnhtbAppbmRleCA0YmRkYzU5Li44ZTBjOWY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwKQEAgLTE4LDcgKzE4LDcgQEAKIDxwYXJhPgogICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZXN0YWJsaXNoIGEgbG9jYWwgU291cmNlIERpcmVjdG9yeSBvbiB5b3VyCiAgICAgZGV2ZWxvcG1lbnQgc3lzdGVtLCBzZWUgdGhlCi0gICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dvcmtpbmctd2l0aC15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+V29ya2luZyBXaXRoIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC91bGluaz4iCisgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2xvY2F0aW5nLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz5Mb2NhdGluZyBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgogICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogPC9wYXJhPgogCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhLzwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBPcGVuRW1iZWRkZWQgQ29yZSBtZXRhZGF0YS4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBPcGVuRW1iZWRkZWQtQ29yZSBtZXRhZGF0YS4KICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgaG9sZHMgcmVjaXBlcywgY29tbW9uIGNsYXNzZXMsIGFuZCBtYWNoaW5lCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZvciBlbXVsYXRlZCB0YXJnZXRzICg8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+LAogICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoLikKQEAgLTEzNyw4ICsxMzcsNyBAQAogICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdGhlIFlvY3RvIFByb2plY3QgcmVmZXJlbmNlCiAgICAgICAgICAgICBoYXJkd2FyZSBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKS4KICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEJTUHMsIHNlZSB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQKLSAgICAgICAgICAgIFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0yMzQsOCArMjMzLDcgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgcnVubmluZyB0aGlzIHNjcmlwdCB3aXRob3V0IGEKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgcnVubmluZyB0aGlzIHNjcmlwdCB3aXRob3V0IGEgQnVpbGQgRGlyZWN0b3J5CiAgICAgICAgICAgICBhcmd1bWVudCBjcmVhdGVzIHRoZSA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKICAgICAgICAgICAgIGluIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KICAgICAgICAgICAgIElmIHlvdSBwcm92aWRlIGEgQnVpbGQgRGlyZWN0b3J5IGFyZ3VtZW50IHdoZW4geW91CkBAIC0zMDYsOCArMzA0LDggQEAKICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgdHJhY2tzIGJ1aWxkIGluZm9ybWF0aW9uIGludG8gaW1hZ2UsIHBhY2thZ2VzLCBhbmQKICAgICAgICAgICAgIFNESyBzdWJkaXJlY3Rvcmllcy4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgYnVpbGQgaGlzdG9yeSBmZWF0dXJlLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMzUwLDcgKzM0OCw3IEBACiAgICAgICAgICAgICB3aGljaCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgd2hlbiB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKICAgICAgICAgICAgIGVudmlyb25tZW50IGFuZCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+bWV0YS9jb25mPC9maWxlbmFtZT4gd2hlbgotICAgICAgICAgICAgeW91IGFyZSBidWlsZGluZyBmcm9tIHRoZSBPcGVuRW1iZWRkZWQgQ29yZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIHlvdSBhcmUgYnVpbGRpbmcgZnJvbSB0aGUgT3BlbkVtYmVkZGVkLUNvcmUgZW52aXJvbm1lbnQuCiAgICAgICAgICAgICBCZWNhdXNlIHRoZSBzY3JpcHQgdmFyaWFibGUgcG9pbnRzIHRvIHRoZSBzb3VyY2Ugb2YgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlLCB0aGlzIGltcGxpZXMgdGhhdAogICAgICAgICAgICAgeW91IGNhbiBjb25maWd1cmUgeW91ciBidWlsZCBlbnZpcm9ubWVudCBmcm9tIGFueSBsYXllciBieSBzZXR0aW5nCkBAIC00MDIsNyArNDAwLDcgQEAKICAgICAgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+CiAgICAgICAgICAgICB3aGVuIHlvdSBhcmUgYnVpbGRpbmcgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudAogICAgICAgICAgICAgZW52aXJvbm1lbnQgYW5kIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhL2NvbmY8L2ZpbGVuYW1lPiB3aGVuCi0gICAgICAgICAgICB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIE9wZW5FbWJlZGRlZCBDb3JlIGVudmlyb25tZW50LgorICAgICAgICAgICAgeW91IGFyZSBidWlsZGluZyBmcm9tIHRoZSBPcGVuRW1iZWRkZWQtQ29yZSBlbnZpcm9ubWVudC4KICAgICAgICAgICAgIEJlY2F1c2UgdGhlIHNjcmlwdCB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIHNvdXJjZSBvZiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGUsIHRoaXMgaW1wbGllcyB0aGF0CiAgICAgICAgICAgICB5b3UgY2FuIGJhc2UgeW91ciBidWlsZCBmcm9tIGFueSBsYXllciBieSBzZXR0aW5nIHRoZSB2YXJpYWJsZSBpbgpAQCAtNTIwLDkgKzUxOCwxMCBAQAogICAgICAgICAgICAgdmFyaWFibGUgcG9pbnRzIHRvIHRoaXMgZGlyZWN0b3J5LgogICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlsIG9uIHRoZSBjb250ZW50cyBvZiB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+CiAgICAgICAgICAgICBkaXJlY3RvcnksIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L2xpbms+IiBhbmQKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbnMuCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2RrLWRldi1lbnZpcm9ubWVudCc+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgU0RLPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9ucyBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC02OTUsOCArNjk0LDggQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IEJpdEJha2UgdXNlcyBzdGFtcCBmaWxlcyB0byBkZXRlcm1pbmUgaWYKICAgICAgICAgICAgIGEgdGFzayBzaG91bGQgYmUgcmVydW4sIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdGFtcC1maWxlcy1hbmQtdGhlLXJlcnVubmluZy1vZi10YXNrcyc+U3RhbXAgRmlsZXMgYW5kIHRoZSBSZXJ1bm5pbmcgb2YgVGFza3M8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz5TdGFtcCBGaWxlcyBhbmQgdGhlIFJlcnVubmluZyBvZiBUYXNrczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC03MzUsOCArNzM0LDcgQEAKICAgICAgICAgICAgIGJ1aWx0IHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgIEZvciB0aGlzIHBhY2thZ2UsIGEgd29yayBkaXJlY3Rvcnkgb2YKICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvbGludXgteW9jdG8vMy4wK2dpdDErJmx0Oy4uLi4uJmd0OzwvZmlsZW5hbWU+LAotICAgICAgICAgICAgcmVmZXJyZWQgdG8gYXMgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPldPUktESVI8L2xpbms+PC9maWxlbmFtZT4sIGlzIGNyZWF0ZWQuCisgICAgICAgICAgICByZWZlcnJlZCB0byBhcyB0aGUgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiwgaXMgY3JlYXRlZC4KICAgICAgICAgICAgIFdpdGhpbiB0aGlzIGRpcmVjdG9yeSwgdGhlIHNvdXJjZSBpcyB1bnBhY2tlZCB0bwogICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXFlbXV4ODYtc3RhbmRhcmQtYnVpbGQ8L2ZpbGVuYW1lPiBhbmQgdGhlbiBwYXRjaGVkIGJ5IFF1aWx0LgogICAgICAgICAgICAgKFNlZSB0aGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVhMWZkZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sCkBAIC0wLDAgKzEsNDkwIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorCis8Y2hhcHRlciBpZD0ncmVmLW1hbnVhbC1zeXN0ZW0tcmVxdWlyZW1lbnRzJz4KKzx0aXRsZT5TeXN0ZW0gUmVxdWlyZW1lbnRzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBXZWxjb21lIHRvIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwhCisgICAgICAgIFRoaXMgbWFudWFsIHByb3ZpZGVzIHJlZmVyZW5jZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgcmVsZWFzZQorICAgICAgICBvZiB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgVGhlIG1hbnVhbCBpcyBiZXN0IHVzZWQgYWZ0ZXIgeW91IGhhdmUgYW4gdW5kZXJzdGFuZGluZworICAgICAgICBvZiB0aGUgYmFzaWNzIG9mIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICBUaGUgbWFudWFsIGlzIG5laXRoZXIgbWVhbnQgdG8gYmUgcmVhZCBhcyBhIHN0YXJ0aW5nIHBvaW50IHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IG5vciByZWFkIGZyb20gc3RhcnQgdG8gZmluaXNoLgorICAgICAgICBVc2UgdGhpcyBtYW51YWwgdG8gZmluZCB2YXJpYWJsZSBkZWZpbml0aW9ucywgY2xhc3MKKyAgICAgICAgZGVzY3JpcHRpb25zLCBhbmQgc28gZm9ydGggYXMgbmVlZGVkIGR1cmluZyB0aGUgY291cnNlIG9mIHVzaW5nCisgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+IGFuZCB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjb3ZlcnZpZXctZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQnPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3VsaW5rPiIKKyAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgdG8gcXVpY2tseSBidWlsZCBhbiBpbWFnZQorICAgICAgICB3aXRob3V0IGhhdmluZyB0byB1bmRlcnN0YW5kIGNvbmNlcHRzLCB3b3JrIHRocm91Z2ggdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JSSUVGX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgQnVpbGQ8L3VsaW5rPgorICAgICAgICBkb2N1bWVudC4KKyAgICAgICAgWW91IGNhbiBmaW5kICJob3ctdG8iIGluZm9ybWF0aW9uIGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyc+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgWW91IGNhbiBmaW5kIFlvY3RvIFByb2plY3Qgb3ZlcnZpZXcgYW5kIGNvbmNlcHR1YWwgaW5mb3JtYXRpb24gaW4gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsnPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvdWxpbms+LgorICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBZb2N0byBQcm9qZWN0IERvY3VtZW50YXRpb24gc2V0LAorICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Jlc291cmNlcy1saW5rcy1hbmQtcmVsYXRlZC1kb2N1bWVudGF0aW9uJz5MaW5rcyBhbmQgUmVsYXRlZCBEb2N1bWVudGF0aW9uPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nZGV0YWlsZWQtc3VwcG9ydGVkLWRpc3Ryb3MnPgorICAgICAgICA8dGl0bGU+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ3VycmVudGx5LCB0aGUgWW9jdG8gUHJvamVjdCBpcyBzdXBwb3J0ZWQgb24gdGhlIGZvbGxvd2luZworICAgICAgICAgICAgZGlzdHJpYnV0aW9uczoKKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlcyBhcmUgdGVzdGVkIGFnYWluc3QgdGhlIHN0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgTGludXggZGlzdHJpYnV0aW9ucyBpbiB0aGUgZm9sbG93aW5nIGxpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzaG91bGQgd29yayBvbiBvdGhlciBkaXN0cmlidXRpb25zIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbiBpcyBub3QgcGVyZm9ybWVkIGFnYWluc3QgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgWW9jdG8gUHJvamVjdCBkb2VzIG5vdCBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgY3VycmVudGx5IGhhcyBubyBwbGFucyB0byBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICByb2xsaW5nLXJlbGVhc2VzIG9yIGRldmVsb3BtZW50IGRpc3RyaWJ1dGlvbnMgZHVlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGVpciBjb25zdGFudGx5IGNoYW5naW5nIG5hdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdlIHdlbGNvbWUgcGF0Y2hlcyBhbmQgYnVnIHJlcG9ydHMsIGJ1dCBrZWVwIGluIG1pbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgb3VyIHByaW9yaXR5IGlzIG9uIHRoZSBzdXBwb3J0ZWQgcGxhdGZvcm1zIGxpc3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgYmVsb3cuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGVuY291bnRlciBwcm9ibGVtcywgcGxlYXNlIGdvIHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fQlVHWklMTEFfVVJMOyc+WW9jdG8gUHJvamVjdCBCdWd6aWxsYTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3VibWl0IGEgYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgV2UgYXJlIGludGVyZXN0ZWQgaW4gaGVhcmluZyBhYm91dCB5b3VyIGV4cGVyaWVuY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHN1Ym1pdCBhIGJ1Zywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0J1Z3ppbGxhX0NvbmZpZ3VyYXRpb25fYW5kX0J1Z19UcmFja2luZyc+QnVnemlsbGEgd2lraSBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzdWJtaXR0aW5nLWEtZGVmZWN0LWFnYWluc3QtdGhlLXlvY3RvLXByb2plY3QnPlN1Ym1pdHRpbmcgYSBEZWZlY3QgQWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Cis8IS0tCisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxMC4wNDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTEuMTA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDEyLjA0IChMVFMpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxMy4xMDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTQuMDQgKExUUyk8L3BhcmE+PC9saXN0aXRlbT4gLS0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNC4xMDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTUuMDQ8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE1LjEwPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNi4wNCAoTFRTKTwvcGFyYT48L2xpc3RpdGVtPgorPCEtLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIDE2IChWZXJuZSk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIDE3IChTcGhlcmljYWwpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDE5IChTY2hyw7ZkaW5nZXIncyBDYXQpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDIwIChIZWlzZW5idWcpPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgcmVsZWFzZSAyMjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgcmVsZWFzZSAyMzwvcGFyYT48L2xpc3RpdGVtPgorPCEtLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIHJlbGVhc2UgMjQ8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2VudE9TIHJlbGVhc2UgNS42IChGaW5hbCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2VudE9TIHJlbGVhc2UgNS43IChGaW5hbCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2VudE9TIHJlbGVhc2UgNS44IChGaW5hbCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2VudE9TIHJlbGVhc2UgNi4zIChGaW5hbCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2VudE9TIHJlbGVhc2UgNi54PC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA3Lng8L3BhcmE+PC9saXN0aXRlbT4KKzwhLS0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNi4wIChTcXVlZXplKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcueCAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPiAtLT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA4LnggKEplc3NpZSk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA5LnggKFN0cmV0Y2gpPC9wYXJhPjwvbGlzdGl0ZW0+Cis8IS0tICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMSAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMiAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMyAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuNCAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuNSAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuNiAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPiAtLT4KKzwhLS0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPm9wZW5TVVNFIDExLjQ8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTIuMTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSAxMi4yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPm9wZW5TVVNFIDEyLjM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTMuMTwvcGFyYT48L2xpc3RpdGVtPiAtLT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTMuMjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSA0Mi4xPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgV2hpbGUgdGhlIFlvY3RvIFByb2plY3QgVGVhbSBhdHRlbXB0cyB0byBlbnN1cmUgYWxsIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIHJlbGVhc2VzIGFyZSBvbmUgaHVuZHJlZCBwZXJjZW50IGNvbXBhdGlibGUgd2l0aCBlYWNoIG9mZmljaWFsbHkKKyAgICAgICAgICAgIHN1cHBvcnRlZCBMaW51eCBkaXN0cmlidXRpb24sIGluc3RhbmNlcyBtaWdodCBleGlzdCB3aGVyZSB5b3UKKyAgICAgICAgICAgIGVuY291bnRlciBhIHByb2JsZW0gd2hpbGUgdXNpbmcgdGhlIFlvY3RvIFByb2plY3Qgb24gYSBzcGVjaWZpYworICAgICAgICAgICAgZGlzdHJpYnV0aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtaG9zdC1kZXZlbG9wbWVudC1zeXN0ZW0nPgorICAgIDx0aXRsZT5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBsaXN0IG9mIHBhY2thZ2VzIHlvdSBuZWVkIG9uIHRoZSBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBjYW4KKyAgICAgICAgICAgIGJlIGxhcmdlIHdoZW4gY292ZXJpbmcgYWxsIGJ1aWxkIHNjZW5hcmlvcyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyByZXF1aXJlZCBwYWNrYWdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgICAgIExpbnV4IGRpc3RyaWJ1dGlvbiBhbmQgZnVuY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndWJ1bnR1LXBhY2thZ2VzJz4KKyAgICAgICAgICAgIDx0aXRsZT5VYnVudHUgYW5kIERlYmlhbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgYnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICBnaXZlbiBhIHN1cHBvcnRlZCBVYnVudHUgb3IgRGViaWFuIExpbnV4IGRpc3RyaWJ1dGlvbjoKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBzeXN0ZW0gaGFzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3NzNC1kZXY8L2ZpbGVuYW1lPiBwYWNrYWdlIGluc3RhbGxlZCwgeW91CisgICAgICAgICAgICAgICAgICAgIG1pZ2h0IGV4cGVyaWVuY2UgUUVNVSBidWlsZCBmYWlsdXJlcyBkdWUgdG8gdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGluZyBpdHMgb3duIGN1c3RvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9pbmNsdWRlL2xpbnV4L3NvdW5kY2FyZC5oPC9maWxlbmFtZT4gb24KKyAgICAgICAgICAgICAgICAgICAgdGhlIERlYmlhbiBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBydW4gaW50byB0aGlzIHNpdHVhdGlvbiwgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgc29sdXRpb25zIGV4aXN0OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGJ1aWxkLWRlcCBxZW11CisgICAgICQgc3VkbyBhcHQtZ2V0IHJlbW92ZSBvc3M0LWRldgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzc2VudGlhbHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCB0byBidWlsZCBhbiBpbWFnZSBvbiBhIGhlYWRsZXNzCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgJlVCVU5UVV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5HcmFwaGljYWwgYW5kIEVjbGlwc2UgUGx1Zy1JbiBFeHRyYXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIHJlY29tbWVuZGVkIGlmIHRoZSBob3N0IHN5c3RlbSBoYXMgZ3JhcGhpY3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgb3IgaWYgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIEVjbGlwc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIElERToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCBsaWJzZGwxLjItZGV2IHh0ZXJtCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RG9jdW1lbnRhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gYnVpbGQgb3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1hbnVhbHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgbWFrZSB4c2x0cHJvYyBkb2Nib29rLXV0aWxzIGZvcCBkYmxhdGV4IHhtbHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+T3BlbkVtYmVkZGVkIFNlbGYtVGVzdCAoPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT4pOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1zZWxmdGVzdDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIHB5dGhvbi1naXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2ZlZG9yYS1wYWNrYWdlcyc+CisgICAgICAgICAgICA8dGl0bGU+RmVkb3JhIFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBieSBmdW5jdGlvbgorICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIEZlZG9yYSBMaW51eCBkaXN0cmlidXRpb246CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Fc3NlbnRpYWxzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgdG8gYnVpbGQgYW4gaW1hZ2UgZm9yIGEgaGVhZGxlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGRuZiBpbnN0YWxsICZGRURPUkFfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R3JhcGhpY2FsIGFuZCBFY2xpcHNlIFBsdWctSW4gRXh0cmFzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyByZWNvbW1lbmRlZCBpZiB0aGUgaG9zdCBzeXN0ZW0gaGFzIGdyYXBoaWNzCisgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9yIGlmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFY2xpcHNlCisgICAgICAgICAgICAgICAgICAgICAgICBJREU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBkbmYgaW5zdGFsbCBTREwtZGV2ZWwgeHRlcm0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGRuZiBpbnN0YWxsIG1ha2UgZG9jYm9vay1zdHlsZS1kc3NzbCBkb2Nib29rLXN0eWxlLXhzbCBcCisgICAgIGRvY2Jvb2stZHRkcyBkb2Nib29rLXV0aWxzIGZvcCBsaWJ4c2x0IGRibGF0ZXggeG1sdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcGVuRW1iZWRkZWQgU2VsZi1UZXN0ICg8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPik6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBkbmYgaW5zdGFsbCBweXRob24zLUdpdFB5dGhvbgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nb3BlbnN1c2UtcGFja2FnZXMnPgorICAgICAgICAgICAgPHRpdGxlPm9wZW5TVVNFIFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBieSBmdW5jdGlvbgorICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIG9wZW5TVVNFIExpbnV4IGRpc3RyaWJ1dGlvbjoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzc2VudGlhbHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCB0byBidWlsZCBhbiBpbWFnZSBmb3IgYSBoZWFkbGVzcworICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8genlwcGVyIGluc3RhbGwgJk9QRU5TVVNFX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkdyYXBoaWNhbCBhbmQgRWNsaXBzZSBQbHVnLUluIEV4dHJhczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgcmVjb21tZW5kZWQgaWYgdGhlIGhvc3Qgc3lzdGVtIGhhcyBncmFwaGljcworICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBvciBpZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgRWNsaXBzZQorICAgICAgICAgICAgICAgICAgICAgICAgSURFOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8genlwcGVyIGluc3RhbGwgbGliU0RMLWRldmVsIHh0ZXJtCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RG9jdW1lbnRhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gYnVpbGQgb3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1hbnVhbHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyB6eXBwZXIgaW5zdGFsbCBtYWtlIGRibGF0ZXggeG1sdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcGVuRW1iZWRkZWQgU2VsZi1UZXN0ICg8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPik6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyB6eXBwZXIgaW5zdGFsbCBweXRob24tR2l0UHl0aG9uCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFNhbml0eSB0ZXN0aW5nLCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy10ZXN0aW1hZ2UqJz50ZXN0aW1hZ2U8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMsIGRvZXMgbm90IHdvcmsgb24gc3lzdGVtcyB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi5vcGVuc3VzZS5vcmcvUG9ydGFsOldpY2tlZCc+V2lja2VkPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgbmV0d29yayBtYW5hZ2VyLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjZW50b3MtcGFja2FnZXMnPgorICAgICAgICAgICAgPHRpdGxlPkNlbnRPUyBQYWNrYWdlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgYnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICBnaXZlbiBhIHN1cHBvcnRlZCBDZW50T1MgTGludXggZGlzdHJpYnV0aW9uOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIGZvciBhIGhlYWRsZXNzCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyB5dW0gaW5zdGFsbCAmQ0VOVE9TX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOyBTREwtZGV2ZWwgeHRlcm0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0cmEgUGFja2FnZXMgZm9yIEVudGVycHJpc2UgTGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGEgY29sbGVjdGlvbiBvZiBwYWNrYWdlcyBmcm9tIEZlZG9yYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgb24gUkhFTC9DZW50T1MgZm9yIGVhc3kgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBwYWNrYWdlcyBub3QgaW5jbHVkZWQgaW4gZW50ZXJwcmlzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGludXggYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGluc3RhbGwgdGhlc2UgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tYWtlY2FjaGU8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lcyBhZGRpdGlvbmFsIE1ldGFkYXRhIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R3JhcGhpY2FsIGFuZCBFY2xpcHNlIFBsdWctSW4gRXh0cmFzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyByZWNvbW1lbmRlZCBpZiB0aGUgaG9zdCBzeXN0ZW0gaGFzIGdyYXBoaWNzCisgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9yIGlmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFY2xpcHNlCisgICAgICAgICAgICAgICAgICAgICAgICBJREU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyB5dW0gaW5zdGFsbCBTREwtZGV2ZWwgeHRlcm0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIHl1bSBpbnN0YWxsIG1ha2UgZG9jYm9vay1zdHlsZS1kc3NzbCBkb2Nib29rLXN0eWxlLXhzbCBcCisgICAgIGRvY2Jvb2stZHRkcyBkb2Nib29rLXV0aWxzIGZvcCBsaWJ4c2x0IGRibGF0ZXggeG1sdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcGVuRW1iZWRkZWQgU2VsZi1UZXN0ICg8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPik6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyB5dW0gaW5zdGFsbCBHaXRQeXRob24KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+CisgICAgICAgIDx0aXRsZT5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgdGhlIGJ1aWxkIHN5c3RlbSwgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbQorICAgICAgICAgICAgbXVzdCBtZWV0IHRoZSBmb2xsb3dpbmcgdmVyc2lvbiByZXF1aXJlbWVudHMgZm9yIEdpdCwgdGFyLCBhbmQKKyAgICAgICAgICAgIFB5dGhvbjoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkdpdCAxLjguMy4xIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+dGFyIDEuMjcgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QeXRob24gMy40LjAgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gZG9lcyBub3QgbWVldCBhbGwgdGhlc2UgcmVxdWlyZW1lbnRzLAorICAgICAgICAgICAgeW91IGNhbiByZXNvbHZlIHRoaXMgYnkgaW5zdGFsbGluZyBhIDxmaWxlbmFtZT5idWlsZHRvb2xzPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHRhcmJhbGwgdGhhdCBjb250YWlucyB0aGVzZSB0b29scy4KKyAgICAgICAgICAgIFlvdSBjYW4gZ2V0IHRoZSB0YXJiYWxsIG9uZSBvZiB0d28gd2F5czogZG93bmxvYWQgYSBwcmUtYnVpbHQKKyAgICAgICAgICAgIHRhcmJhbGwgb3IgdXNlIEJpdEJha2UgdG8gYnVpbGQgdGhlIHRhcmJhbGwuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZG93bmxvYWRpbmctYS1wcmUtYnVpbHQtYnVpbGR0b29scy10YXJiYWxsJz4KKyAgICAgICAgICAgIDx0aXRsZT5Eb3dubG9hZGluZyBhIFByZS1CdWlsdCA8ZmlsZW5hbWU+YnVpbGR0b29sczwvZmlsZW5hbWU+IFRhcmJhbGw8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBEb3dubG9hZGluZyBhbmQgcnVubmluZyBhIHByZS1idWlsdCBidWlsZHRvb2xzIGluc3RhbGxlciBpcworICAgICAgICAgICAgICAgIHRoZSBlYXNpZXN0IG9mIHRoZSB0d28gbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuIGdldCB0aGVzZSB0b29sczoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0ZSBhbmQgZG93bmxvYWQgdGhlIDxmaWxlbmFtZT4qLnNoPC9maWxlbmFtZT4gYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3lvY3RvL3lvY3RvLSZESVNUUk87L2J1aWxkdG9vbHMvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNoIH4vRG93bmxvYWRzL3g4Nl82NC1idWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lLSZESVNUUk87LnNoCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uLCBhIHByb21wdCBhcHBlYXJzIHRoYXQgYWxsb3dzIHlvdSB0bworICAgICAgICAgICAgICAgICAgICAgICAgY2hvb3NlIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBjaG9vc2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgL2hvbWUvPHJlcGxhY2VhYmxlPnlvdXItdXNlcm5hbWU8L3JlcGxhY2VhYmxlPi9idWlsZHRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlIHRoZSB0b29scyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgYnkgdXNpbmcgYQorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaWtlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIC9ob21lLzxyZXBsYWNlYWJsZT55b3VyX3VzZXJuYW1lPC9yZXBsYWNlYWJsZT4vYnVpbGR0b29scy9lbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9mIGNvdXJzZSwgeW91IG5lZWQgdG8gc3VwcGx5IHlvdXIgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBhbmQgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cmUgdG8gdXNlIHRoZSByaWdodCBmaWxlIChpLmUuIGk1ODUgb3IgeDg2LTY0KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgeW91IGhhdmUgc291cmNlZCB0aGUgc2V0dXAgc2NyaXB0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRvb2xzIGFyZSBhZGRlZCB0byA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYW55IG90aGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyByZXF1aXJlZCB0byBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB0b29scyBhcmUgaW5pdGlhbGl6ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0cyBhcmUgd29ya2luZyB2ZXJzaW9ucyB2ZXJzaW9ucyBvZiBHaXQsIHRhciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBhbmQgPGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGRpbmcteW91ci1vd24tYnVpbGR0b29scy10YXJiYWxsJz4KKyAgICAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBZb3VyIE93biA8ZmlsZW5hbWU+YnVpbGR0b29sczwvZmlsZW5hbWU+IFRhcmJhbGw8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCdWlsZGluZyBhbmQgcnVubmluZyB5b3VyIG93biBidWlsZHRvb2xzIGluc3RhbGxlciBhcHBsaWVzCisgICAgICAgICAgICAgICAgb25seSB3aGVuIHlvdSBoYXZlIGEgYnVpbGQgaG9zdCB0aGF0IGNhbiBhbHJlYWR5IHJ1biBCaXRCYWtlLgorICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgeW91IHVzZSB0aGF0IG1hY2hpbmUgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUgYW5kIHRoZW4KKyAgICAgICAgICAgICAgICB0YWtlIHN0ZXBzIHRvIHRyYW5zZmVyIGFuZCBydW4gaXQgb24gYQorICAgICAgICAgICAgICAgIG1hY2hpbmUgdGhhdCBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbWFsIEdpdCwgdGFyLCBhbmQgUHl0aG9uCisgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGFyZSB0aGUgc3RlcHMgdG8gdGFrZSB0byBidWlsZCBhbmQgcnVuIHlvdXIgb3duCisgICAgICAgICAgICAgICAgYnVpbGR0b29scyBpbnN0YWxsZXI6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBPbiB0aGUgbWFjaGluZSB0aGF0IGlzIGFibGUgdG8gcnVuIEJpdEJha2UsCisgICAgICAgICAgICAgICAgICAgICAgICBiZSBzdXJlIHlvdSBoYXZlIHNldCB1cCB5b3VyIGJ1aWxkIGVudmlyb25tZW50IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzZXR1cCBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUnVuIHRoZSBCaXRCYWtlIGNvbW1hbmQgdG8gYnVpbGQgdGhlIHRhcmJhbGw6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBidWlsZHRvb2xzLXRhcmJhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmVzIHdoZXRoZXIgeW91IGJ1aWxkIHRvb2xzIGZvciBhIDMyLWJpdAorICAgICAgICAgICAgICAgICAgICAgICAgb3IgNjQtYml0IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBidWlsZCBjb21wbGV0ZXMsIHlvdSBjYW4gZmluZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUgdGhhdCBpbnN0YWxscworICAgICAgICAgICAgICAgICAgICAgICB0aGUgdG9vbHMgaW4gdGhlIDxmaWxlbmFtZT50bXAvZGVwbG95L3NkazwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW5zdGFsbGVyIGZpbGUgaGFzIHRoZSBzdHJpbmcgImJ1aWxkdG9vbHMiCisgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZmVyIHRoZSA8ZmlsZW5hbWU+LnNoPC9maWxlbmFtZT4gZmlsZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0IHRvIHRoZSBtYWNoaW5lIHRoYXQgZG9lcyBub3QgbWVldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgR2l0LCB0YXIsIG9yIFB5dGhvbiByZXF1aXJlbWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgT24gdGhlIG1hY2hpbmUgdGhhdCBkb2VzIG5vdCBtZWV0IHRoZSByZXF1aXJlbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgIHJ1biB0aGUgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgdG8gaW5zdGFsbCB0aGUgdG9vbHMuCisgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNoIH4vRG93bmxvYWRzL3g4Nl82NC1idWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lLSZESVNUUk87LnNoCisgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGV4ZWN1dGlvbiwgYSBwcm9tcHQgYXBwZWFycyB0aGF0IGFsbG93cyB5b3UgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgY2hvb3NlIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIGNob29zZSB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIC9ob21lLzxyZXBsYWNlYWJsZT55b3VyX3VzZXJuYW1lPC9yZXBsYWNlYWJsZT4vYnVpbGR0b29scworICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgdGhlIHRvb2xzIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBieSB1c2luZyBhCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGxpa2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgL2hvbWUvPHJlcGxhY2VhYmxlPnlvdXJfdXNlcm5hbWU8L3JlcGxhY2VhYmxlPi9idWlsZHRvb2xzL2Vudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgT2YgY291cnNlLCB5b3UgbmVlZCB0byBzdXBwbHkgeW91ciBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGFuZCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgc3VyZSB0byB1c2UgdGhlIHJpZ2h0IGZpbGUgKGkuZS4gaTU4NSBvciB4ODYtNjQpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciB5b3UgaGF2ZSBzb3VyY2VkIHRoZSBzZXR1cCBzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdG9vbHMgYXJlIGFkZGVkIHRvIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbnkgb3RoZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHJlcXVpcmVkIHRvIHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xzIGFyZSBpbml0aWFsaXplZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRzIGFyZSB3b3JraW5nIHZlcnNpb25zIHZlcnNpb25zIG9mIEdpdCwgdGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGFuZCA8ZmlsZW5hbWU+Y2hycGF0aDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGFza3MueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGFza3MueG1sCmluZGV4IGM3MjZjYjkuLmU2Y2Y2ODYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRhc2tzLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10YXNrcy54bWwKQEAgLTExMSw4ICsxMTEsNyBAQAogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGVwbG95Jz48ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICBjbGFzcyBhbmQgc2hvdWxkIHdyaXRlIHRoZSBvdXRwdXQgdG8KICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWURJUic+PGZpbGVuYW1lPkRFUExPWURJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4sCi0gICAgICAgICAgICB3aGljaCBpcyBub3QgdG8gYmUgY29uZnVzZWQgd2l0aAotICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgd2hpY2ggaXMgbm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggPGZpbGVuYW1lPiR7REVQTE9ZX0RJUn08L2ZpbGVuYW1lPi4KICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT4gY2xhc3Mgc2V0cyB1cAogICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IGFzIGEgc2hhcmVkIHN0YXRlIChzc3RhdGUpIHRhc2sgdGhhdAogICAgICAgICAgICAgY2FuIGJlIGFjY2VsZXJhdGVkIHRocm91Z2ggc3N0YXRlIHVzZS4KQEAgLTIyMCw4ICsyMTksOCBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaW1hZ2UgY3JlYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdpbWFnZS1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+SW1hZ2UgR2VuZXJhdGlvbjwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMjMyLDcgKzIzMSw3IEBACiAgICAgICAgICAgICBDb21wbGV0ZXMgdGhlIGltYWdlIGdlbmVyYXRpb24gcHJvY2Vzcy4KICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9faW1hZ2VfY29tcGxldGU8L2ZpbGVuYW1lPiB0YXNrIHJ1bnMgYWZ0ZXIgdGhlCiAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBydW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9faW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbWFnZSc+PGZpbGVuYW1lPmRvX2ltYWdlPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICB0YXNrIGR1cmluZyB3aGljaCBpbWFnZSBwcmUtcHJvY2Vzc2luZyBvY2N1cnMgYW5kIHRocm91Z2gKICAgICAgICAgICAgIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCA8ZmlsZW5hbWU+ZG9faW1hZ2VfKjwvZmlsZW5hbWU+IHRhc2tzIHRoZQogICAgICAgICAgICAgaW1hZ2UgaXMgY29uc3RydWN0ZWQuCkBAIC0yNDYsOCArMjQ1LDggQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGltYWdlIGNyZWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0naW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2ltYWdlLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz5JbWFnZSBHZW5lcmF0aW9uPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTI2OCw3ICsyNjcsNyBAQAogICAgICAgICAgICAgYW5kCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L2xpbms+KSwKICAgICAgICAgICAgIHJ1biB1bmRlcgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZmFrZXJvb3QtYW5kLXBzZXVkbyc+ZmFrZXJvb3Q8L2xpbms+LgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNmYWtlcm9vdC1hbmQtcHNldWRvJz5mYWtlcm9vdDwvdWxpbms+LgogICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgPHRpdGxlPkNhdXRpb248L3RpdGxlPgogCkBAIC0yODAsNyArMjc5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgVUlEIGFuZC9vciBHSUQgb2YgdGhlIG9yaWdpbmFsIGZpbGUsIHdoaWNoIGlzIHVzdWFsbHkgbm90CiAgICAgICAgICAgICAgICAgICAgIHdoYXQgeW91IHdhbnQuCiAgICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbnNhbmUnPjxmaWxlbmFtZT5ob3N0LXVzZXItY29udGFtaW5hdGVkPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2luc2FuZS1ob3N0LXVzZXItY29udGFtaW5hdGVkJz48ZmlsZW5hbWU+aG9zdC11c2VyLWNvbnRhbWluYXRlZDwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBRQSBjaGVjayBjaGVja3MgZm9yIGZpbGVzIHRoYXQgcHJvYmFibHkgaGF2ZSB0aGUgd3JvbmcKICAgICAgICAgICAgICAgICAgICAgb3duZXJzaGlwLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTM0Miw4ICszNDEsOCBAQAogICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIHNlZSB0aGUKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dERVNUV09SSyc+PGZpbGVuYW1lPlBLR0RFU1RXT1JLPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0zNjcsOCArMzY2LDggQEAKICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfREVCJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9ERUI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CiAgICAgICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIHBhY2thZ2UgZmVlZHMgYXJlYS4KICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTM4MSw4ICszODAsOCBAQAogICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9JUEsnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lQSzwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KICAgICAgICAgICAgIGRpcmVjdG9yeSBpbiB0aGUgcGFja2FnZSBmZWVkcyBhcmVhLgogICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjcGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMzk1LDggKzM5NCw4IEBACiAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX1JQTSc+PGZpbGVuYW1lPkRFUExPWV9ESVJfUlBNPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgogICAgICAgICAgICAgZGlyZWN0b3J5IGluIHRoZSBwYWNrYWdlIGZlZWRzIGFyZWEuCiAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC00MDgsOCArNDA3LDggQEAKICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfVEFSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9UQVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CiAgICAgICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIHBhY2thZ2UgZmVlZHMgYXJlYS4KICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTQzMCw5ICs0MjksODcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIExvY2F0ZXMgcGF0Y2ggZmlsZXMgYW5kIGFwcGxpZXMgdGhlbSB0byB0aGUgc291cmNlIGNvZGUuCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGF0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5QYXRjaGluZzwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBZnRlciBmZXRjaGluZyBhbmQgdW5wYWNraW5nIHNvdXJjZSBmaWxlcywgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgdXNlcyB0aGUgcmVjaXBlJ3MKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHN0YXRlbWVudHMgdG8gbG9jYXRlIGFuZCBhcHBseSBwYXRjaCBmaWxlcyB0byB0aGUgc291cmNlIGNvZGUuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBkZXRlcm1pbmUgdGhlIGRlZmF1bHQgc2V0IG9mIGRpcmVjdG9yaWVzIHdoZW4KKyAgICAgICAgICAgICAgICBzZWFyY2hpbmcgZm9yIHBhdGNoZXMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBQYXRjaCBmaWxlcywgYnkgZGVmYXVsdCwgYXJlIDxmaWxlbmFtZT4qLnBhdGNoPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5kaWZmPC9maWxlbmFtZT4gZmlsZXMgY3JlYXRlZCBhbmQga2VwdCBpbiBhCisgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlIGRpcmVjdG9yeSBob2xkaW5nIHRoZSByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NSc+PGZpbGVuYW1lPmJsdWV6NTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHJlY2lwZSBmcm9tIHRoZSBPRS1Db3JlIGxheWVyIChpLmUuCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhPC9maWxlbmFtZT4pOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGlzIHJlY2lwZSBoYXMgdHdvIHBhdGNoIGZpbGVzIGxvY2F0ZWQgaGVyZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gdGhlIDxmaWxlbmFtZT5ibHVlejU8L2ZpbGVuYW1lPiByZWNpcGUsIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIHBvaW50IHRvIHRoZSBzb3VyY2UgYW5kCisgICAgICAgICAgICBwYXRjaCBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBJbiB0aGUgY2FzZSBmb3IgdGhlIDxmaWxlbmFtZT5ibHVlejVfNS40OC5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcmVjaXBlLCB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIGFyZSBmcm9tIGFuCisgICAgICAgICAgICAgICAgaW5jbHVkZSBmaWxlIDxmaWxlbmFtZT5ibHVlejUuaW5jPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgYnVpbGQgc3lzdGVtIHRyZWF0cyBmaWxlcyB3aG9zZSBmaWxlCisgICAgICAgICAgICB0eXBlcyBhcmUgPGZpbGVuYW1lPi5wYXRjaDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPi5kaWZmPC9maWxlbmFtZT4gYXMgcGF0Y2ggZmlsZXMuCisgICAgICAgICAgICBIb3dldmVyLCB5b3UgY2FuIHVzZSB0aGUgImFwcGx5PXllcyIgcGFyYW1ldGVyIHdpdGggdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCB0byBpbmRpY2F0ZSBhbnkgZmlsZSBhcyBhCisgICAgICAgICAgICBwYXRjaCBmaWxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gIiBcCisgICAgICAgICAgZ2l0Oi8vPHJlcGxhY2VhYmxlPnBhdGhfdG9fcmVwbzwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5zb21lX3BhY2thZ2U8L3JlcGxhY2VhYmxlPiBcCisgICAgICAgICAgZmlsZTovLzxyZXBsYWNlYWJsZT5maWxlPC9yZXBsYWNlYWJsZT47YXBwbHk9eWVzIFwKKyAgICAgIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDb252ZXJzZWx5LCBpZiB5b3UgaGF2ZSBhIGRpcmVjdG9yeSBmdWxsIG9mIHBhdGNoIGZpbGVzIGFuZCB5b3UKKyAgICAgICAgICAgIHdhbnQgdG8gZXhjbHVkZSBzb21lIHNvIHRoYXQgdGhlIDxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+CisgICAgICAgICAgICB0YXNrIGRvZXMgbm90IGFwcGx5IHRoZW0gZHVyaW5nIHRoZSBwYXRjaCBwaGFzZSwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgIHRoZSAiYXBwbHk9bm8iIHBhcmFtZXRlciB3aXRoIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICBzdGF0ZW1lbnQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgPSAiIFwKKyAgICAgICAgICBnaXQ6Ly88cmVwbGFjZWFibGU+cGF0aF90b19yZXBvPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPnNvbWVfcGFja2FnZTwvcmVwbGFjZWFibGU+IFwKKyAgICAgICAgICBmaWxlOi8vPHJlcGxhY2VhYmxlPnBhdGhfdG9fbG90c19vZl9wYXRjaF9maWxlczwvcmVwbGFjZWFibGU+IFwKKyAgICAgICAgICBmaWxlOi8vPHJlcGxhY2VhYmxlPnBhdGhfdG9fbG90c19vZl9wYXRjaF9maWxlczwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5wYXRjaF9maWxlNTwvcmVwbGFjZWFibGU+O2FwcGx5PW5vIFwKKyAgICAgIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIGFzc3VtaW5nIGFsbCB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgaG9sZGluZyB0aGUgcGF0Y2ggZmlsZXMgZW5kIHdpdGggZWl0aGVyIDxmaWxlbmFtZT4ucGF0Y2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgb3IgPGZpbGVuYW1lPi5kaWZmPC9maWxlbmFtZT4sIGV2ZXJ5IGZpbGUgd291bGQgYmUgYXBwbGllZCBhcyBhCisgICAgICAgICAgICBwYXRjaCBieSBkZWZhdWx0IGV4Y2VwdCBmb3IgdGhlCisgICAgICAgICAgICA8cmVwbGFjZWFibGU+cGF0Y2hfZmlsZTU8L3JlcGxhY2VhYmxlPiBwYXRjaC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0IHRoZSBwYXRjaGluZyBwcm9jZXNzIGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjcGF0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5QYXRjaGluZzwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsIGFuZCB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctcmVjaXBlLXBhdGNoaW5nLWNvZGUnPlBhdGNoaW5nIENvZGU8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC00NTEsOCArNTI4LDkgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBDcmVhdGVzIHRoZSBmaWxlIGFuZCBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBhbiBpbnN0YWxsYWJsZSBTREsuCiAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz5TREsgR2VuZXJhdGlvbjwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2RrLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz5TREsgR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICBpbmZvcm1hdGlvbi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtNTM4LDggKzYxNiw5IEBACiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvbGluaz4gdmFyaWFibGUgYWxzbwogICAgICAgICAgICAgcGxheXMgYSByb2xlIGluIHdoZXJlIHVucGFja2VkIHNvdXJjZSBmaWxlcyB1bHRpbWF0ZWx5IHJlc2lkZS4KICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyBzb3VyY2UgZmlsZXMgYXJlIHVucGFja2VkLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc291cmNlLWZldGNoaW5nLWRldi1lbnZpcm9ubWVudCc+U291cmNlIEZldGNoaW5nPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gYW5kIHRoZSA8ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc291cmNlLWZldGNoaW5nLWRldi1lbnZpcm9ubWVudCc+U291cmNlIEZldGNoaW5nPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwgYW5kIGFsc28KKyAgICAgICAgICAgIHNlZSB0aGUgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiBhbmQKICAgICAgICAgICAgIDxmaWxlbmFtZT5TPC9maWxlbmFtZT4gdmFyaWFibGUgZGVzY3JpcHRpb25zLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtNTkzLDI0ICs2NzIsMTMgQEAKICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtY2hlY2t1cmlhbGwnPgotICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2NoZWNrdXJpYWxsPC9maWxlbmFtZT48L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVmFsaWRhdGVzIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YWx1ZSBmb3IgYWxsIHJlY2lwZXMgcmVxdWlyZWQgdG8gYnVpbGQgYSB0YXJnZXQuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KICAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLWNsZWFuJz4KICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19jbGVhbjwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFJlbW92ZXMgYWxsIG91dHB1dCBmaWxlcyBmb3IgYSB0YXJnZXQgZnJvbSB0aGUKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy11bnBhY2snPjxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHRhc2sgZm9yd2FyZCAoaS5lLgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgdGFzayBmb3J3YXJkIChpLmUuIDxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvbGluaz4sCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvbGluaz4sCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4sCkBAIC02MjcsOCArNjk1LDggQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFJ1bm5pbmcgdGhpcyB0YXNrIGRvZXMgbm90IHJlbW92ZSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NoYXJlZC1zdGF0ZS1jYWNoZSc+c3N0YXRlPC9saW5rPikgY2FjaGUKLSAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzaGFyZWQtc3RhdGUtY2FjaGUnPnNzdGF0ZTwvdWxpbms+CisgICAgICAgICAgICBjYWNoZSBmaWxlcy4KICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgbm8gY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSBhbmQgdGhlIHJlY2lwZSBpcwogICAgICAgICAgICAgcmVidWlsdCBhZnRlciBjbGVhbmluZywgb3V0cHV0IGZpbGVzIGFyZSBzaW1wbHkgcmVzdG9yZWQgZnJvbSB0aGUKICAgICAgICAgICAgIHNzdGF0ZSBjYWNoZS4KQEAgLTY0NCw4ICs3MTIsOSBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgUmVtb3ZlcyBhbGwgb3V0cHV0IGZpbGVzLCBzaGFyZWQgc3RhdGUKLSAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSdzaGFyZWQtc3RhdGUtY2FjaGUnPnNzdGF0ZTwvbGluaz4pIGNhY2hlLCBhbmQKLSAgICAgICAgICAgIGRvd25sb2FkZWQgc291cmNlIGZpbGVzIGZvciBhIHRhcmdldCAoaS5lLiB0aGUgY29udGVudHMgb2YKKyAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+c3N0YXRlPC91bGluaz4pCisgICAgICAgICAgICBjYWNoZSwgYW5kIGRvd25sb2FkZWQgc291cmNlIGZpbGVzIGZvciBhIHRhcmdldCAoaS5lLiB0aGUgY29udGVudHMKKyAgICAgICAgICAgIG9mCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L2xpbms+KS4KICAgICAgICAgICAgIEVzc2VudGlhbGx5LCB0aGUgPGZpbGVuYW1lPmRvX2NsZWFuYWxsPC9maWxlbmFtZT4gdGFzayBpcwogICAgICAgICAgICAgaWRlbnRpY2FsIHRvIHRoZQpAQCAtNjc0LDEzICs3NDMsMTQgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFJlbW92ZXMgYWxsIG91dHB1dCBmaWxlcyBhbmQgc2hhcmVkIHN0YXRlCi0gICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0nc2hhcmVkLXN0YXRlLWNhY2hlJz5zc3RhdGU8L2xpbms+KQorICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlLWNhY2hlJz5zc3RhdGU8L3VsaW5rPikKICAgICAgICAgICAgIGNhY2hlIGZvciBhIHRhcmdldC4KICAgICAgICAgICAgIEVzc2VudGlhbGx5LCB0aGUgPGZpbGVuYW1lPmRvX2NsZWFuc3N0YXRlPC9maWxlbmFtZT4gdGFzayBpcwogICAgICAgICAgICAgaWRlbnRpY2FsIHRvIHRoZQogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNsZWFuJz48ZmlsZW5hbWU+ZG9fY2xlYW48L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgIHRhc2sgd2l0aCB0aGUgYWRkZWQgcmVtb3ZhbCBvZiBzaGFyZWQgc3RhdGUKLSAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSdzaGFyZWQtc3RhdGUtY2FjaGUnPnNzdGF0ZTwvbGluaz4pIGNhY2hlLgorICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlLWNhY2hlJz5zc3RhdGU8L3VsaW5rPikKKyAgICAgICAgICAgIGNhY2hlLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CkBAIC03MzYsMTQgKzgwNiw2IEBACiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLWZldGNoYWxsJz4KLSAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19mZXRjaGFsbDwvZmlsZW5hbWU+PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZldGNoZXMgYWxsIHJlbW90ZSBzb3VyY2VzIHJlcXVpcmVkIHRvIGJ1aWxkIGEgdGFyZ2V0LgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCiAgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1saXN0dGFza3MnPgogICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2xpc3R0YXNrczwvZmlsZW5hbWU+PC90aXRsZT4KIApAQCAtNzU3LDcgKzgxOSw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBDcmVhdGVzIG9yIHVwZGF0ZXMgdGhlIGluZGV4IGluIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC91bGluaz4KICAgICAgICAgICAgIGFyZWEuCiAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgaXMgbm90IHRyaWdnZXJlZCB3aXRoIHRoZQpAQCAtODA5LDggKzg3MSw5IEBACiAgICAgICAgICAgICBDcmVhdGVzIHRoZSByb290IGZpbGVzeXN0ZW0gKGZpbGUgYW5kIGRpcmVjdG9yeSBzdHJ1Y3R1cmUpIGZvciBhbgogICAgICAgICAgICAgaW1hZ2UuCiAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0naW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBjcmVhdGVkLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRoZSByb290IGZpbGVzeXN0ZW0gaXMgY3JlYXRlZC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMDlkM2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10ZXJtcy54bWwKQEAgLTAsMCArMSw1MDcgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzxjaGFwdGVyIGlkPSdyZWYtdGVybXMnPgorPHRpdGxlPllvY3RvIFByb2plY3QgVGVybXM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgdGVybXMgYW5kIGRlZmluaXRpb25zIHVzZXJzIG5ldyB0byB0aGUgWW9jdG8KKyAgICAgICAgUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBtaWdodCBmaW5kIGhlbHBmdWwuCisgICAgICAgIFdoaWxlIHNvbWUgb2YgdGhlc2UgdGVybXMgYXJlIHVuaXZlcnNhbCwgdGhlIGxpc3QgaW5jbHVkZXMgdGhlbQorICAgICAgICBqdXN0IGluIGNhc2U6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFwcGVuZCBGaWxlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEZpbGVzIHRoYXQgYXBwZW5kIGJ1aWxkIGluZm9ybWF0aW9uIHRvIGEgcmVjaXBlIGZpbGUuCisgICAgICAgICAgICAgICAgQXBwZW5kIGZpbGVzIGFyZSBrbm93biBhcyBCaXRCYWtlIGFwcGVuZCBmaWxlcyBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZXhwZWN0cyBldmVyeSBhcHBlbmQgZmlsZSB0byBoYXZlCisgICAgICAgICAgICAgICAgYSBjb3JyZXNwb25kaW5nIHJlY2lwZSAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+KSBmaWxlLgorICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgYXBwZW5kIGZpbGUgYW5kIGNvcnJlc3BvbmRpbmcgcmVjaXBlIGZpbGUKKyAgICAgICAgICAgICAgICBtdXN0IHVzZSB0aGUgc2FtZSByb290IGZpbGVuYW1lLgorICAgICAgICAgICAgICAgIFRoZSBmaWxlbmFtZXMgY2FuIGRpZmZlciBvbmx5IGluIHRoZSBmaWxlIHR5cGUgc3VmZml4IHVzZWQKKyAgICAgICAgICAgICAgICAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtZmFjdG9yXzAuMC5iYjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtZmFjdG9yXzAuMC5iYmFwcGVuZDwvZmlsZW5hbWU+KS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JbmZvcm1hdGlvbiBpbiBhcHBlbmQgZmlsZXMgZXh0ZW5kcyBvciBvdmVycmlkZXMgdGhlCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gaW4gdGhlIHNpbWlsYXJseS1uYW1lZCByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBhbiBhcHBlbmQgZmlsZSBpbiB1c2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctYmJhcHBlbmQtZmlsZXMnPlVzaW5nIC5iYmFwcGVuZCBGaWxlcyBpbiBZb3VyIExheWVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEFwcGVuZCBmaWxlcyBjYW4gYWxzbyB1c2Ugd2lsZGNhcmQgcGF0dGVybnMgaW4gdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBudW1iZXJzIHNvIHRoZXkgY2FuIGJlIGFwcGxpZWQgdG8gbW9yZSB0aGFuIG9uZQorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSB1bmRlcmx5aW5nIHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nYml0YmFrZS10ZXJtJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qml0QmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSB0YXNrIGV4ZWN1dG9yIGFuZCBzY2hlZHVsZXIgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgc3lzdGVtIHRvIGJ1aWxkIGltYWdlcy4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwLXRlcm0nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Cb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIGdyb3VwIG9mIGRyaXZlcnMsIGRlZmluaXRpb25zLCBhbmQgb3RoZXIgY29tcG9uZW50cyB0aGF0CisgICAgICAgICAgICAgICAgcHJvdmlkZSBzdXBwb3J0IGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQlNQcywgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdidWlsZC1kaXJlY3RvcnknPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIHRlcm0gcmVmZXJzIHRvIHRoZSBhcmVhIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgIHN5c3RlbSBmb3IgYnVpbGRzLgorICAgICAgICAgICAgICAgIFRoZSBhcmVhIGlzIGNyZWF0ZWQgd2hlbiB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZQorICAgICAgICAgICAgICAgIHNldHVwIGVudmlyb25tZW50IHNjcmlwdCB0aGF0IGlzIGZvdW5kIGluIHRoZSBTb3VyY2UgRGlyZWN0b3J5CisgICAgICAgICAgICAgICAgKGkuZS4gPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UT1BESVInPjxmaWxlbmFtZT5UT1BESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIEJ1aWxkIERpcmVjdG9yeS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgaGF2ZSBhIGxvdCBvZiBmbGV4aWJpbGl0eSB3aGVuIGNyZWF0aW5nIHRoZSBCdWlsZAorICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgZXhhbXBsZXMgdGhhdCBzaG93IGhvdyB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlcyBhc3N1bWUgeW91cgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+IGlzCisgICAgICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW5zaWRlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgYW5kIGxldCB0aGUgbmFtZSBvZiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeSBkZWZhdWx0IHRvIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkICRIT01FL3Bva3kKKyAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW5zaWRlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvbWUgZGlyZWN0b3J5IGFuZCBzcGVjaWZpY2FsbHkgbmFtZSBpdAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlc3QtYnVpbGRzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgJEhPTUUKKyAgICAgJCBzb3VyY2UgcG9reS8mT0VfSU5JVF9GSUxFOyB0ZXN0LWJ1aWxkcworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYSBkaXJlY3RvcnkgcGF0aCBhbmQgc3BlY2lmaWNhbGx5IG5hbWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBBbnkgaW50ZXJtZWRpYXRlIGZvbGRlcnMgaW4gdGhlIHBhdGhuYW1lIG11c3QgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG5leHQgZXhhbXBsZSBjcmVhdGVzIGEgQnVpbGQgRGlyZWN0b3J5IG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+WVAtJlBPS1lWRVJTSU9OOzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5IHdpdGhpbiB0aGUgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSA8ZmlsZW5hbWU+bXlidWlsZHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJGNkICRIT01FCisgICAgICQgc291cmNlICRIT01FL3Bva3kvJk9FX0lOSVRfRklMRTsgJEhPTUUvbXlidWlsZHMvWVAtJlBPS1lWRVJTSU9OOworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBCdWlsZCBEaXJlY3RvcnkgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRoZSBidWlsZCBzeXN0ZW0gdXNlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgaXRzIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBjYW5ub3QgYmUgdW5kZXIgTkZTLgorICAgICAgICAgICAgICAgICAgICBUaHVzLCBieSBkZWZhdWx0LCB0aGUgQnVpbGQgRGlyZWN0b3J5IGNhbm5vdCBiZSB1bmRlciBORlMuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBuZWVkIHRoZSBCdWlsZCBEaXJlY3RvcnkgdG8gYmUgdW5kZXIgTkZTLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHNldCB0aGlzIHVwIGJ5IHNldHRpbmcgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIHRvIHVzZSBhIGxvY2FsIGRyaXZlLgorICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBlZmZlY3RpdmVseSBzZXBhcmF0ZXMgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+LCB3aGljaCBpcyB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0naGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBIb3N0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhlIHN5c3RlbSB1c2VkIHRvIGJ1aWxkIGltYWdlcyBpbiBhIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyB0aGUKKyAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBob3N0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbGFzc2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBwcm92aWRlIGZvciBsb2dpYyBlbmNhcHN1bGF0aW9uIGFuZCBpbmhlcml0YW5jZSBzbworICAgICAgICAgICAgICAgIHRoYXQgY29tbW9ubHkgdXNlZCBwYXR0ZXJucyBjYW4gYmUgZGVmaW5lZCBvbmNlIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgZWFzaWx5IHVzZWQgaW4gbXVsdGlwbGUgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICBGb3IgcmVmZXJlbmNlIGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0IGNsYXNzZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMnPkNsYXNzZXM8L2xpbms+IiBjaGFwdGVyLgorICAgICAgICAgICAgICAgIENsYXNzIGZpbGVzIGVuZCB3aXRoIHRoZSA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGVuYW1lIGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBob2xkIGdsb2JhbCBkZWZpbml0aW9ucyBvZiB2YXJpYWJsZXMsCisgICAgICAgICAgICAgICAgdXNlci1kZWZpbmVkIHZhcmlhYmxlcywgYW5kIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyB0ZWxsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdoYXQgdG8KKyAgICAgICAgICAgICAgICBidWlsZCBhbmQgd2hhdCB0byBwdXQgaW50byB0aGUgaW1hZ2UgdG8gc3VwcG9ydCBhCisgICAgICAgICAgICAgICAgcGFydGljdWxhciBwbGF0Zm9ybS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Db25maWd1cmF0aW9uIGZpbGVzIGVuZCB3aXRoIGEgPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlbmFtZSBleHRlbnNpb24uCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgaW4KKyAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgICAgICBjb250YWlucyB1c2VyLWRlZmluZWQgdmFyaWFibGVzIHRoYXQgYWZmZWN0IGV2ZXJ5IGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGRlZmluZXMgWW9jdG8gImRpc3RybyIgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB1c2VkIG9ubHkgd2hlbiBidWlsZGluZyB3aXRoIHRoaXMgcG9saWN5LgorICAgICAgICAgICAgICAgIE1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcywgd2hpY2gKKyAgICAgICAgICAgICAgICBhcmUgbG9jYXRlZCB0aHJvdWdob3V0IHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LCBkZWZpbmUKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBhcmUgb25seSB1c2VkIHdoZW4gYnVpbGRpbmcKKyAgICAgICAgICAgICAgICBmb3IgdGhhdCB0YXJnZXQgKGUuZy4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hY2hpbmUvYmVhZ2xlYm9uZS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGUgZGVmaW5lcyB2YXJpYWJsZXMgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBBUk0gQ29ydGV4LUE4CisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYm9hcmQpLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSd0ZXJtLWNvbnRhaW5lci1sYXllcic+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbnRhaW5lciBMYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIExheWVycyB0aGF0IGhvbGQgb3RoZXIgbGF5ZXJzLgorICAgICAgICAgICAgICAgIEFuIGV4YW1wbGUgb2YgYSBjb250YWluZXIgbGF5ZXIgaXMgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICBUaGlzIGxheWVyIGNvbnRhaW5zIEJTUCBsYXllcnMgZm9yIHRoZSBJbnRlbC1jb3JlMi0zMgorICAgICAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IENvbW1vbiBDb3JlCisgICAgICAgICAgICAgICAgKEludGVsLWNvcmUyLTMyKSBhbmQgdGhlIEludGVsLWNvcmVpNy02NAorICAgICAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IENvbW1vbiBDb3JlCisgICAgICAgICAgICAgICAgKEludGVsLWNvcmVpNy02NCkuCisgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbGF5ZXIgYWxzbyBjb250YWlucworICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Y29tbW9uLzwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgd2hpY2ggY29udGFpbnMKKyAgICAgICAgICAgICAgICBjb21tb24gY29udGVudCBhY3Jvc3MgdGhvc2UgbGF5ZXJzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBhIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBpcyBhIGNvbGxlY3Rpb24gb2YKKyAgICAgICAgICAgICAgICBzb2Z0d2FyZSBkZXZlbG9wbWVudCB0b29scyBhbmQgdXRpbGl0aWVzIHRoYXQgcnVuIG9uIG9uZQorICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSBhbmQgYWxsb3cgeW91IHRvIGRldmVsb3Agc29mdHdhcmUgZm9yIGEKKyAgICAgICAgICAgICAgICBkaWZmZXJlbnQsIG9yIHRhcmdldGVkLCBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgVGhlc2UgdG9vbGNoYWlucyBjb250YWluIGNyb3NzLWNvbXBpbGVycywgbGlua2VycywgYW5kCisgICAgICAgICAgICAgICAgZGVidWdnZXJzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHR3byBkaWZmZXJlbnQgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICB0b29sY2hhaW5zOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgdG9vbGNoYWluIG9ubHkgdXNlZCBieSBhbmQgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UgZm9yIGEgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgcmVsb2NhdGFibGUgdG9vbGNoYWluIHVzZWQgb3V0c2lkZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBieSBkZXZlbG9wZXJzIHdoZW4gZGV2ZWxvcGluZyBhcHBsaWNhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCBydW4gb24gYSB0YXJnZXRlZCBkZXZpY2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5DcmVhdGlvbiBvZiB0aGVzZSB0b29sY2hhaW5zIGlzIHNpbXBsZSBhbmQgYXV0b21hdGVkLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0b29sY2hhaW4gY29uY2VwdHMgYXMgdGhleSBhcHBseSB0byB0aGUKKyAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgcmVsb2NhdGFibGUgdG9vbGNoYWluIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4KKyAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgY3VzdG9tIFNESyBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcGVycy4KKyAgICAgICAgICAgICAgICBUaGlzIGVTREsgYWxsb3dzIGRldmVsb3BlcnMgdG8gaW5jb3Jwb3JhdGUgdGhlaXIgbGlicmFyeQorICAgICAgICAgICAgICAgIGFuZCBwcm9ncmFtbWluZyBjaGFuZ2VzIGJhY2sgaW50byB0aGUgaW1hZ2UgdG8gbWFrZQorICAgICAgICAgICAgICAgIHRoZWlyIGNvZGUgYXZhaWxhYmxlIHRvIG90aGVyIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGluZm9ybWF0aW9uIG9uIHRoZSBlU0RLLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgIG1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBbiBpbWFnZSBpcyBhbiBhcnRpZmFjdCBvZiB0aGUgQml0QmFrZSBidWlsZCBwcm9jZXNzIGdpdmVuCisgICAgICAgICAgICAgICAgYSBjb2xsZWN0aW9uIG9mIHJlY2lwZXMgYW5kIHJlbGF0ZWQgTWV0YWRhdGEuCisgICAgICAgICAgICAgICAgSW1hZ2VzIGFyZSB0aGUgYmluYXJ5IG91dHB1dCB0aGF0IHJ1biBvbiBzcGVjaWZpYyBoYXJkd2FyZSBvcgorICAgICAgICAgICAgICAgIFFFTVUgYW5kIGFyZSB1c2VkIGZvciBzcGVjaWZpYyB1c2UtY2FzZXMuCisgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgc3VwcG9ydGVkIGltYWdlIHR5cGVzIHRoYXQgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBwcm92aWRlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtaW1hZ2VzJz5JbWFnZXM8L2xpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICBMYXllcnMgYWxsb3cgeW91IHRvIGNvbnNvbGlkYXRlIHJlbGF0ZWQgbWV0YWRhdGEgdG8KKyAgICAgICAgICAgICAgICBjdXN0b21pemUgeW91ciBidWlsZC4KKyAgICAgICAgICAgICAgICBMYXllcnMgYWxzbyBpc29sYXRlIGluZm9ybWF0aW9uIHVzZWQgd2hlbiBidWlsZGluZworICAgICAgICAgICAgICAgIGZvciBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgIExheWVycyBhcmUgaGllcmFyY2hpY2FsIGluIHRoZWlyIGFiaWxpdHkgdG8gb3ZlcnJpZGUKKyAgICAgICAgICAgICAgICBwcmV2aW91cyBzcGVjaWZpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGluY2x1ZGUgYW55IG51bWJlciBvZiBhdmFpbGFibGUgbGF5ZXJzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBhbmQgY3VzdG9taXplIHRoZSBidWlsZCBieSBhZGRpbmcgeW91cgorICAgICAgICAgICAgICAgIGxheWVycyBhZnRlciB0aGVtLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VhcmNoIHRoZSBMYXllciBJbmRleCBmb3IgbGF5ZXJzIHVzZWQgd2l0aGluCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3RoZS15b2N0by1wcm9qZWN0LWxheWVyLW1vZGVsJz5UaGUgWW9jdG8gUHJvamVjdCBMYXllciBNb2RlbDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgYSBkaXNjdXNzaW9uIHNwZWNpZmljYWxseSBvbiBCU1AgTGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUCkKKyAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nbWV0YWRhdGEnPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NZXRhZGF0YTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEga2V5IGVsZW1lbnQgb2YgdGhlIFlvY3RvIFByb2plY3QgaXMgdGhlIE1ldGFkYXRhIHRoYXQKKyAgICAgICAgICAgICAgICBpcyB1c2VkIHRvIGNvbnN0cnVjdCBhIExpbnV4IGRpc3RyaWJ1dGlvbiBhbmQgaXMgY29udGFpbmVkCisgICAgICAgICAgICAgICAgaW4gdGhlIGZpbGVzIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L2xpbms+CisgICAgICAgICAgICAgICAgcGFyc2VzIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgTWV0YWRhdGEgaW5jbHVkZXMgcmVjaXBlcywgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGVzLCBhbmQgb3RoZXIgaW5mb3JtYXRpb24gdGhhdCByZWZlcnMgdG8gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zIHRoZW1zZWx2ZXMsIGFzIHdlbGwgYXMgdGhlIGRhdGEgdXNlZCB0bworICAgICAgICAgICAgICAgIGNvbnRyb2wgd2hhdCB0aGluZ3MgZ2V0IGJ1aWx0IGFuZCB0aGUgZWZmZWN0cyBvZiB0aGUKKyAgICAgICAgICAgICAgICBidWlsZC4KKyAgICAgICAgICAgICAgICBNZXRhZGF0YSBhbHNvIGluY2x1ZGVzIGNvbW1hbmRzIGFuZCBkYXRhIHVzZWQgdG8KKyAgICAgICAgICAgICAgICBpbmRpY2F0ZSB3aGF0IHZlcnNpb25zIG9mIHNvZnR3YXJlIGFyZSB1c2VkLCBmcm9tCisgICAgICAgICAgICAgICAgd2hlcmUgdGhleSBhcmUgb2J0YWluZWQsIGFuZCBjaGFuZ2VzIG9yIGFkZGl0aW9ucyB0byB0aGUKKyAgICAgICAgICAgICAgICBzb2Z0d2FyZSBpdHNlbGYgKHBhdGNoZXMgb3IgYXV4aWxpYXJ5IGZpbGVzKSB0aGF0CisgICAgICAgICAgICAgICAgYXJlIHVzZWQgdG8gZml4IGJ1Z3Mgb3IgY3VzdG9taXplIHRoZSBzb2Z0d2FyZSBmb3IgdXNlCisgICAgICAgICAgICAgICAgaW4gYSBwYXJ0aWN1bGFyIHNpdHVhdGlvbi4KKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQtQ29yZSBpcyBhbiBpbXBvcnRhbnQgc2V0IG9mIHZhbGlkYXRlZAorICAgICAgICAgICAgICAgIG1ldGFkYXRhLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkluIHRoZSBjb250ZXh0IG9mIHRoZSBrZXJuZWwgKCJrZXJuZWwgTWV0YWRhdGEiKSwgdGhlCisgICAgICAgICAgICAgICAgdGVybSByZWZlcnMgdG8gdGhlIGtlcm5lbCBjb25maWcgZnJhZ21lbnRzIGFuZCBmZWF0dXJlcworICAgICAgICAgICAgICAgIGNvbnRhaW5lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS95b2N0by1rZXJuZWwtY2FjaGUnPjxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J29lLWNvcmUnPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcGVuRW1iZWRkZWQtQ29yZSAoT0UtQ29yZSk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBPRS1Db3JlIGlzIG1ldGFkYXRhIGNvbXByaXNlZCBvZiBmb3VuZGF0aW9uYWwgcmVjaXBlcywKKyAgICAgICAgICAgICAgICBjbGFzc2VzLCBhbmQgYXNzb2NpYXRlZCBmaWxlcyB0aGF0IGFyZSBtZWFudCB0byBiZQorICAgICAgICAgICAgICAgIGNvbW1vbiBhbW9uZyBtYW55IGRpZmZlcmVudCBPcGVuRW1iZWRkZWQtZGVyaXZlZCBzeXN0ZW1zLAorICAgICAgICAgICAgICAgIGluY2x1ZGluZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBPRS1Db3JlIGlzIGEgY3VyYXRlZCBzdWJzZXQgb2YgYW4gb3JpZ2luYWwgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgIGRldmVsb3BlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGNvbW11bml0eSB0aGF0IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgcGFyZWQgZG93biBpbnRvIGEgc21hbGxlciwgY29yZSBzZXQgb2YgY29udGludW91c2x5CisgICAgICAgICAgICAgICAgdmFsaWRhdGVkIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIHRpZ2h0bHkgY29udHJvbGxlZCBhbmQgYW4gcXVhbGl0eS1hc3N1cmVkCisgICAgICAgICAgICAgICAgY29yZSBzZXQgb2YgcmVjaXBlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIHNlZSB0aGUgTWV0YWRhdGEgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaSc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdidWlsZC1zeXN0ZW0tdGVybSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wZW5FbWJlZGRlZCBCdWlsZCBTeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHNwZWNpZmljIHRvIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGlzIGJhc2VkIG9uIGFub3RoZXIgcHJvamVjdCBrbm93bgorICAgICAgICAgICAgICAgIGFzICJQb2t5Iiwgd2hpY2ggdXNlcworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4gYXMgdGhlIHRhc2sKKyAgICAgICAgICAgICAgICBleGVjdXRvci4KKyAgICAgICAgICAgICAgICBUaHJvdWdob3V0IHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gc2V0LCB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBzaW1wbHkKKyAgICAgICAgICAgICAgICBhcyAidGhlIGJ1aWxkIHN5c3RlbSIuCisgICAgICAgICAgICAgICAgSWYgb3RoZXIgYnVpbGQgc3lzdGVtcywgc3VjaCBhcyBhIGhvc3Qgb3IgdGFyZ2V0IGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgIGFyZSByZWZlcmVuY2VkLCB0aGUgZG9jdW1lbnRhdGlvbiBjbGVhcmx5IHN0YXRlcyB0aGUKKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBGb3Igc29tZSBoaXN0b3JpY2FsIGluZm9ybWF0aW9uIGFib3V0IFBva3ksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncG9reSc+UG9reTwvbGluaz4gdGVybS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhY2thZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJbiB0aGUgY29udGV4dCBvZiB0aGUgWW9jdG8gUHJvamVjdCwgdGhpcyB0ZXJtIHJlZmVycyB0byBhCisgICAgICAgICAgICAgICAgcmVjaXBlJ3MgcGFja2FnZWQgb3V0cHV0IHByb2R1Y2VkIGJ5IEJpdEJha2UgKGkuZS4gYQorICAgICAgICAgICAgICAgICJiYWtlZCByZWNpcGUiKS4KKyAgICAgICAgICAgICAgICBBIHBhY2thZ2UgaXMgZ2VuZXJhbGx5IHRoZSBjb21waWxlZCBiaW5hcmllcyBwcm9kdWNlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIHJlY2lwZSdzIHNvdXJjZXMuCisgICAgICAgICAgICAgICAgWW91ICJiYWtlIiBzb21ldGhpbmcgYnkgcnVubmluZyBpdCB0aHJvdWdoIEJpdEJha2UuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgd29ydGggbm90aW5nIHRoYXQgdGhlIHRlcm0gInBhY2thZ2UiIGNhbiwKKyAgICAgICAgICAgICAgICBpbiBnZW5lcmFsLCBoYXZlIHN1YnRsZSBtZWFuaW5ncy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIHBhY2thZ2VzIHJlZmVycmVkIHRvIGluIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWhvc3QtZGV2ZWxvcG1lbnQtc3lzdGVtJz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGFyZSBjb21waWxlZCBiaW5hcmllcyB0aGF0LCB3aGVuIGluc3RhbGxlZCwgYWRkCisgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSB0byB5b3VyIExpbnV4IGRpc3RyaWJ1dGlvbi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Bbm90aGVyIHBvaW50IHdvcnRoIG5vdGluZyBpcyB0aGF0IGhpc3RvcmljYWxseSB3aXRoaW4KKyAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgcmVjaXBlcyB3ZXJlIHJlZmVycmVkIHRvIGFzIHBhY2thZ2VzIC0gdGh1cywKKyAgICAgICAgICAgICAgICB0aGUgZXhpc3RlbmNlIG9mIHNldmVyYWwgQml0QmFrZSB2YXJpYWJsZXMgdGhhdCBhcmUgc2VlbWluZ2x5CisgICAgICAgICAgICAgICAgbWlzLW5hbWVkLAorICAgICAgICAgICAgICAgIChlLmcuIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+LCBhbmQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEUnPjxmaWxlbmFtZT5QRTwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhY2thZ2UgR3JvdXBzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXJiaXRyYXJ5IGdyb3VwcyBvZiBzb2Z0d2FyZSBSZWNpcGVzLgorICAgICAgICAgICAgICAgIFlvdSB1c2UgcGFja2FnZSBncm91cHMgdG8gaG9sZCByZWNpcGVzIHRoYXQsIHdoZW4gYnVpbHQsCisgICAgICAgICAgICAgICAgdXN1YWxseSBhY2NvbXBsaXNoIGEgc2luZ2xlIHRhc2suCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGEgcGFja2FnZSBncm91cCBjb3VsZCBjb250YWluIHRoZSByZWNpcGVzIGZvciBhCisgICAgICAgICAgICAgICAgY29tcGFueeKAmXMgcHJvcHJpZXRhcnkgb3IgdmFsdWUtYWRkIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIE9yLCB0aGUgcGFja2FnZSBncm91cCBjb3VsZCBjb250YWluIHRoZSByZWNpcGVzIHRoYXQgZW5hYmxlCisgICAgICAgICAgICAgICAgZ3JhcGhpY3MuCisgICAgICAgICAgICAgICAgQSBwYWNrYWdlIGdyb3VwIGlzIHJlYWxseSBqdXN0IGFub3RoZXIgcmVjaXBlLgorICAgICAgICAgICAgICAgIEJlY2F1c2UgcGFja2FnZSBncm91cCBmaWxlcyBhcmUgcmVjaXBlcywgdGhleSBlbmQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZW5hbWUgZXh0ZW5zaW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdwb2t5Jz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9reTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFBva3ksIHdoaWNoIGlzIHByb25vdW5jZWQgPGVtcGhhc2lzPlBvY2s8L2VtcGhhc2lzPi1lZSwKKyAgICAgICAgICAgICAgICBpcyBhIHJlZmVyZW5jZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gYW5kIGEgcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgdGVzdCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgIFBva3kgcHJvdmlkZXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBIGJhc2UtbGV2ZWwgZnVuY3Rpb25hbCBkaXN0cm8gdXNlZCB0byBpbGx1c3RyYXRlCisgICAgICAgICAgICAgICAgICAgICAgICBob3cgdG8gY3VzdG9taXplIGEgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgbWVhbnMgYnkgd2hpY2ggdG8gdGVzdCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cyAoaS5lLiBQb2t5IGlzIHVzZWQgdG8gdmFsaWRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBIHZlaGljbGUgdGhyb3VnaCB3aGljaCB5b3UgY2FuIGRvd25sb2FkCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIFBva3kgaXMgbm90IGEgcHJvZHVjdCBsZXZlbCBkaXN0cm8uCisgICAgICAgICAgICAgICAgUmF0aGVyLCBpdCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGN1c3RvbWl6YXRpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFBva3kgYmVnYW4gYW4gb3Blbi1zb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgcHJvamVjdCBpbml0aWFsbHkgZGV2ZWxvcGVkIGJ5IE9wZW5lZEhhbmQuCisgICAgICAgICAgICAgICAgICAgIE9wZW5lZEhhbmQgZGV2ZWxvcGVkIFBva3kgZnJvbSB0aGUgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgYSBjb21tZXJjaWFsbHkKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGFibGUgYnVpbGQgc3lzdGVtIGZvciBlbWJlZGRlZCBMaW51eC4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgSW50ZWwgQ29ycG9yYXRpb24gYWNxdWlyZWQgT3BlbmVkSGFuZCwgdGhlCisgICAgICAgICAgICAgICAgICAgIHBva3kgcHJvamVjdCBiZWNhbWUgdGhlIGJhc2lzIGZvciB0aGUgWW9jdG8gUHJvamVjdCdzCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgc2V0IG9mIGluc3RydWN0aW9ucyBmb3IgYnVpbGRpbmcgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgQSByZWNpcGUgZGVzY3JpYmVzIHdoZXJlIHlvdSBnZXQgc291cmNlIGNvZGUsIHdoaWNoIHBhdGNoZXMKKyAgICAgICAgICAgICAgICB0byBhcHBseSwgaG93IHRvIGNvbmZpZ3VyZSB0aGUgc291cmNlLCBob3cgdG8gY29tcGlsZSBpdCBhbmQgc28gb24uCisgICAgICAgICAgICAgICAgUmVjaXBlcyBhbHNvIGRlc2NyaWJlIGRlcGVuZGVuY2llcyBmb3IgbGlicmFyaWVzIG9yIGZvciBvdGhlcgorICAgICAgICAgICAgICAgIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgUmVjaXBlcyByZXByZXNlbnQgdGhlIGxvZ2ljYWwgdW5pdCBvZiBleGVjdXRpb24sIHRoZSBzb2Z0d2FyZQorICAgICAgICAgICAgICAgIHRvIGJ1aWxkLCB0aGUgaW1hZ2VzIHRvIGJ1aWxkLCBhbmQgdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlIGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0ncmVmZXJlbmNlLWtpdC10ZXJtJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVmZXJlbmNlIEtpdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgd29ya2luZyBleGFtcGxlIG9mIGEgc3lzdGVtLCB3aGljaCBpbmNsdWRlcyBhCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcC10ZXJtJz5CU1A8L2xpbms+CisgICAgICAgICAgICAgICAgYXMgd2VsbCBhcyBhCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0naGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPmJ1aWxkIGhvc3Q8L2xpbms+CisgICAgICAgICAgICAgICAgYW5kIG90aGVyIGNvbXBvbmVudHMsIHRoYXQgY2FuIHdvcmsgb24gc3BlY2lmaWMgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3NvdXJjZS1kaXJlY3RvcnknPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Tb3VyY2UgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyB0ZXJtIHJlZmVycyB0byB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBjcmVhdGVkIGFzIGEgcmVzdWx0CisgICAgICAgICAgICAgICAgb2YgY3JlYXRpbmcgYSBsb2NhbCBjb3B5IG9mIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgPGZpbGVuYW1lPmdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIG9yIGV4cGFuZGluZyBhIHJlbGVhc2VkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gdGFyYmFsbC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRpbmcgYSBsb2NhbCBjb3B5IG9mIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5IGlzIHRoZSByZWNvbW1lbmRlZCBtZXRob2QgZm9yIHNldHRpbmcgdXAKKyAgICAgICAgICAgICAgICAgICAgeW91ciBTb3VyY2UgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBTb21ldGltZXMgeW91IG1pZ2h0IGhlYXIgdGhlIHRlcm0gInBva3kgZGlyZWN0b3J5IiB1c2VkIHRvIHJlZmVyCisgICAgICAgICAgICAgICAgdG8gdGhpcyBkaXJlY3Rvcnkgc3RydWN0dXJlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgb3IKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG5hbWVzIHRoYXQgY29udGFpbiBzcGFjZXMuCisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdGhhdCB0aGUgU291cmNlIERpcmVjdG9yeSB5b3UgdXNlIGRvZXMgbm90IGNvbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgdHlwZXMgb2YgbmFtZXMuCisgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBTb3VyY2UgRGlyZWN0b3J5IGNvbnRhaW5zIEJpdEJha2UsIERvY3VtZW50YXRpb24sCisgICAgICAgICAgICAgICAgTWV0YWRhdGEgYW5kIG90aGVyIGZpbGVzIHRoYXQgYWxsIHN1cHBvcnQgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgbXVzdCBoYXZlIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGluIHBsYWNlIG9uCisgICAgICAgICAgICAgICAgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0gaW4gb3JkZXIgdG8gZG8gYW55IGRldmVsb3BtZW50IHVzaW5nCisgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+V2hlbiB5b3UgY3JlYXRlIGEgbG9jYWwgY29weSBvZiB0aGUgR2l0IHJlcG9zaXRvcnksIHlvdQorICAgICAgICAgICAgICAgIGNhbiBuYW1lIHRoZSByZXBvc2l0b3J5IGFueXRoaW5nIHlvdSBsaWtlLgorICAgICAgICAgICAgICAgIFRocm91Z2hvdXQgbXVjaCBvZiB0aGUgZG9jdW1lbnRhdGlvbiwgInBva3kiCisgICAgICAgICAgICAgICAgaXMgdXNlZCBhcyB0aGUgbmFtZSBvZiB0aGUgdG9wLWxldmVsIGZvbGRlciBvZiB0aGUgbG9jYWwgY29weSBvZgorICAgICAgICAgICAgICAgIHRoZSBwb2t5IEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFNvLCBmb3IgZXhhbXBsZSwgY2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5IHJlc3VsdHMgaW4gYSBsb2NhbCBHaXQgcmVwb3NpdG9yeSB3aG9zZSB0b3AtbGV2ZWwKKyAgICAgICAgICAgICAgICBmb2xkZXIgaXMgYWxzbyBuYW1lZCAicG9reSIuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+V2hpbGUgaXQgaXMgbm90IHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSB0YXJiYWxsIGV4cGFuc2lvbgorICAgICAgICAgICAgICAgIHRvIHNldCB1cCB0aGUgU291cmNlIERpcmVjdG9yeSwgaWYgeW91IGRvLCB0aGUgdG9wLWxldmVsCisgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG5hbWUgb2YgdGhlIFNvdXJjZSBEaXJlY3RvcnkgaXMgZGVyaXZlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSB0YXJiYWxsLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBkb3dubG9hZGluZyBhbmQgdW5wYWNraW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZZT0NUT19QT0tZX1RBUkJBTEw7PC9maWxlbmFtZT4gcmVzdWx0cyBpbiBhCisgICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSB3aG9zZSByb290IGZvbGRlciBpcyBuYW1lZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mWU9DVE9fUE9LWTs8L2ZpbGVuYW1lPi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUKKyAgICAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IGNyZWF0ZWQgYnkgdW5wYWNraW5nIGEgcmVsZWFzZWQgdGFyYmFsbCBhcworICAgICAgICAgICAgICAgIGNvbXBhcmVkIHRvIGNsb25pbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFdoZW4geW91IHVucGFjayBhIHRhcmJhbGwsIHlvdSBoYXZlIGFuIGV4YWN0IGNvcHkgb2YgdGhlIGZpbGVzCisgICAgICAgICAgICAgICAgYmFzZWQgb24gdGhlIHRpbWUgb2YgcmVsZWFzZSAtIGEgZml4ZWQgcmVsZWFzZSBwb2ludC4KKyAgICAgICAgICAgICAgICBBbnkgY2hhbmdlcyB5b3UgbWFrZSB0byB5b3VyIGxvY2FsIGZpbGVzIGluIHRoZSBTb3VyY2UgRGlyZWN0b3J5CisgICAgICAgICAgICAgICAgYXJlIG9uIHRvcCBvZiB0aGUgcmVsZWFzZSBhbmQgd2lsbCByZW1haW4gbG9jYWwgb25seS4KKyAgICAgICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgd2hlbiB5b3UgY2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSwgeW91IGhhdmUgYW4gYWN0aXZlIGRldmVsb3BtZW50IHJlcG9zaXRvcnkgd2l0aAorICAgICAgICAgICAgICAgIGFjY2VzcyB0byB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeSdzIGJyYW5jaGVzIGFuZCB0YWdzLgorICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgYW55IGxvY2FsIGNoYW5nZXMgeW91IG1ha2UgdG8gdGhlIGxvY2FsCisgICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBjYW4gYmUgbGF0ZXIgYXBwbGllZCB0byBhY3RpdmUgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBicmFuY2hlcyBvZiB0aGUgdXBzdHJlYW0gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5LjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbmNlcHRzIHJlbGF0ZWQgdG8gR2l0CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLCBicmFuY2hlcywgYW5kIHRhZ3MsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNyZXBvc2l0b3JpZXMtdGFncy1hbmQtYnJhbmNoZXMnPlJlcG9zaXRvcmllcywgVGFncywgYW5kIEJyYW5jaGVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UYXNrOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSB1bml0IG9mIGV4ZWN1dGlvbiBmb3IgQml0QmFrZSAoZS5nLgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSd0b2FzdGVyLXRlcm0nPjxlbXBoYXNpcz5Ub2FzdGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0J3MKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvbGluaz4uCisgICAgICAgICAgICAgICAgVGhlIGludGVyZmFjZSBlbmFibGVzIHlvdSB0byBjb25maWd1cmUgYW5kIHJ1biB5b3VyIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBhYm91dCBidWlsZHMgaXMgY29sbGVjdGVkIGFuZCBzdG9yZWQgaW4gYSBkYXRhYmFzZS4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gVG9hc3Rlciwgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXBzdHJlYW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIHJlZmVyZW5jZSB0byBzb3VyY2UgY29kZSBvciByZXBvc2l0b3JpZXMKKyAgICAgICAgICAgICAgICB0aGF0IGFyZSBub3QgbG9jYWwgdG8gdGhlIGRldmVsb3BtZW50IHN5c3RlbSBidXQgbG9jYXRlZCBpbiBhCisgICAgICAgICAgICAgICAgbWFzdGVyIGFyZWEgdGhhdCBpcyBjb250cm9sbGVkIGJ5IHRoZSBtYWludGFpbmVyIG9mIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICBjb2RlLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiBvcmRlciBmb3IgYSBkZXZlbG9wZXIgdG8gd29yayBvbiBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICBwaWVjZSBvZiBjb2RlLCB0aGV5IG5lZWQgdG8gZmlyc3QgZ2V0IGEgY29weSBvZiBpdCBmcm9tIGFuCisgICAgICAgICAgICAgICAgInVwc3RyZWFtIiBzb3VyY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFyaWFibGVzLnhtbAppbmRleCAyYjAxNzIzLi4xYzU1YTkyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKQEAgLTIyLDcgKzIyLDcgQEAKICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRCc+RDwvbGluaz4KICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRUZJX1BST1ZJREVSJz5FPC9saW5rPgogICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GRUFUVVJFX1BBQ0tBR0VTJz5GPC9saW5rPgotICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1HREInPkc8L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUdDQ1BJRSc+RzwvbGluaz4KICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSE9NRVBBR0UnPkg8L2xpbms+CiAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlDRUNDX0RJU0FCTEVEJz5JPC9saW5rPgogPCEtLSAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1nbG9zc2FyeS1qJz5KPC9saW5rPiAtLT4KQEAgLTcyLDEyICs3MiwxMyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQUxMT1dfRU1QVFknPjxnbG9zc3Rlcm0+QUxMT1dfRU1QVFk8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIEFMTE9XX0VNUFRZW2RvY10gPSAiU3BlY2lmaWVzIGlmIGFuIG91dHB1dCBwYWNrYWdlIHNob3VsZCBzdGlsbCBiZSBwcm9kdWNlZCBpZiBpdCBpcyBlbXB0eS4iCisgICAgICAgICAgICAgICAgQUxMT1dfRU1QVFlbZG9jXSA9ICJTcGVjaWZpZXMgd2hldGhlciB0byBwcm9kdWNlIGFuIG91dHB1dCBwYWNrYWdlIGV2ZW4gaWYgaXQgaXMgZW1wdHkuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgaWYgYW4gb3V0cHV0IHBhY2thZ2Ugc2hvdWxkIHN0aWxsIGJlIHByb2R1Y2VkIGlmIGl0IGlzIGVtcHR5LgorICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIHByb2R1Y2UgYW4gb3V0cHV0IHBhY2thZ2UgZXZlbiBpZiBpdCBpcworICAgICAgICAgICAgICAgICAgIGVtcHR5LgogICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIEJpdEJha2UgZG9lcyBub3QgcHJvZHVjZSBlbXB0eSBwYWNrYWdlcy4KICAgICAgICAgICAgICAgICAgICBUaGlzIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGNhdXNlIGlzc3VlcyB3aGVuIHRoZXJlIGlzIGFuCiAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4gb3IKQEAgLTI1MywxMyArMjU0LDE0IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1BUFBFTkQnPjxnbG9zc3Rlcm0+QVBQRU5EPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBBUFBFTkRbZG9jXSA9ICJBbiBvdmVycmlkZSBsaXN0IG9mIGFwcGVuZCBzdHJpbmdzIGZvciBlYWNoIExBQkVMLiIKKyAgICAgICAgICAgICAgICBBUFBFTkRbZG9jXSA9ICJBbiBvdmVycmlkZSBsaXN0IG9mIGFwcGVuZCBzdHJpbmdzIGZvciB0YXJnZXQgc3BlY2lmaWVkIHVzaW5nIExBQkVMUy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBBbiBvdmVycmlkZSBsaXN0IG9mIGFwcGVuZCBzdHJpbmdzIGZvciBlYWNoCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MQUJFTFMnPjxmaWxlbmFtZT5MQUJFTDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgQW4gb3ZlcnJpZGUgbGlzdCBvZiBhcHBlbmQgc3RyaW5ncyBmb3IgZWFjaCB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxBQkVMUyc+PGZpbGVuYW1lPkxBQkVMUzwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTM1NCw3ICszNTYsNyBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJbiBPcGVuRW1iZWRkZWQgQ29yZSwgPGZpbGVuYW1lPkFTU1VNRV9QUk9WSURFRDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIEluIE9wZW5FbWJlZGRlZC1Db3JlLCA8ZmlsZW5hbWU+QVNTVU1FX1BST1ZJREVEPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgbW9zdGx5IHNwZWNpZmllcyBuYXRpdmUgdG9vbHMgdGhhdCBzaG91bGQgbm90IGJlIGJ1aWx0LgogICAgICAgICAgICAgICAgICAgICBBbiBleGFtcGxlIGlzIDxmaWxlbmFtZT5naXQtbmF0aXZlPC9maWxlbmFtZT4sIHdoaWNoIHdoZW4KICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkLCBhbGxvd3MgZm9yIHRoZSBHaXQgYmluYXJ5IGZyb20gdGhlIGhvc3QgdG8gYmUKQEAgLTc3NSwxMCArNzc3LDkgQEAKICAgICAgICAgICAgV0FSTjogICAgICBJc3N1ZSBhIHdhcm5pbmcgYnV0IGNvbnRpbnVlIHRoZQogICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHdoZW4gYSB0aHJlc2hvbGQgaXMgYnJva2VuLgogICAgICAgICAgICAgICAgICAgICAgIFN1YnNlcXVlbnQgd2FybmluZ3MgYXJlIGlzc3VlZCBhcwotICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX0RJU0tNT05fV0FSTklOVEVSVkFMJz5CQl9ESVNLTU9OX1dBUk5JTlRFUlZBTDwvbGluaz4gdmFyaWFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBiZSBkZWZpbmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgIGNvbmYvbG9jYWwuY29uZiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYnkgdGhlIEJCX0RJU0tNT05fV0FSTklOVEVSVkFMCisgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIG11c3QgYmUgZGVmaW5lZCBpbgorICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb25mL2xvY2FsLmNvbmYgZmlsZS4KIAogICAgICAgICA8cmVwbGFjZWFibGU+ZGlyPC9yZXBsYWNlYWJsZT4gaXM6CiAgICAgICAgICAgIEFueSBkaXJlY3RvcnkgeW91IGNob29zZS4gWW91IGNhbiBzcGVjaWZ5IG9uZSBvcgpAQCAtOTcxLDE1ICs5NzIsNDEgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzcGVlZGluZyB1cCBidWlsZHMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3NwZWVkaW5nLXVwLXRoZS1idWlsZCc+U3BlZWRpbmcgVXAgdGhlIEJ1aWxkPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NwZWVkaW5nLXVwLWEtYnVpbGQnPlNwZWVkaW5nIFVwIGEgQnVpbGQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJfU0VSVkVSX1RJTUVPVVQnPjxnbG9zc3Rlcm0+QkJfU0VSVkVSX1RJTUVPVVQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJCX1NFUlZFUl9USU1FT1VUIFtkb2NdID0gIlNwZWNpZmllcyB0aGUgdGltZSAoaW4gc2Vjb25kcykgYWZ0ZXIgd2hpY2ggdG8gdW5sb2FkIHRoZSBCaXRCYWtlIHNlcnZlciBkdWUgdG8gaW5hY3Rpdml0eS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHRpbWUgKGluIHNlY29uZHMpIGFmdGVyIHdoaWNoIHRvIHVubG9hZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBzZXJ2ZXIgZHVlIHRvIGluYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgICAgIFNldCA8ZmlsZW5hbWU+QkJfU0VSVkVSX1RJTUVPVVQ8L2ZpbGVuYW1lPiB0byBkZXRlcm1pbmUgaG93CisgICAgICAgICAgICAgICAgICAgIGxvbmcgdGhlIEJpdEJha2Ugc2VydmVyIHN0YXlzIHJlc2lkZW50IGJldHdlZW4gaW52b2NhdGlvbnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHN0YXRlbWVudCBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbnN0cnVjdHMgdGhlIHNlcnZlcgorICAgICAgICAgICAgICAgICAgICB0byBiZSB1bmxvYWRlZCBhZnRlciAyMCBzZWNvbmRzIG9mIGluYWN0aXZpdHk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJfU0VSVkVSX1RJTUVPVVQgPSAiMjAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIHNlcnZlciB0byBuZXZlciBiZSB1bmxvYWRlZCwgc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQl9TRVJWRVJfVElNRU9VVDwvZmlsZW5hbWU+IHRvICItMSIuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJDTEFTU0VYVEVORCc+PGdsb3NzdGVybT5CQkNMQVNTRVhURU5EPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBCQkNMQVNTRVhURU5EW2RvY10gPSAiQWxsb3dzIHlvdSB0byBleHRlbmQgYSByZWNpcGUgc28gdGhhdCBpdCBidWlsZHMgdmFyaWFudHMgb2YgdGhlIHNvZnR3YXJlLiBDb21tb24gdmFyaWFudHMgZm9yIHJlY2lwZXMgYXJlICduYXRpdmUnLCAnY3Jvc3MnLCAnbmF0aXZlc2RrJyBhbmQgbXVsdGlsaWJzLiIKKyAgICAgICAgICAgICAgICBCQkNMQVNTRVhURU5EW2RvY10gPSAiQWxsb3dzIHlvdSB0byBleHRlbmQgYSByZWNpcGUgc28gdGhhdCBpdCBidWlsZHMgdmFyaWFudHMgb2YgdGhlIHNvZnR3YXJlLiBDb21tb24gdmFyaWFudHMgZm9yIHJlY2lwZXMgYXJlICduYXRpdmUnLCAnY3Jvc3MnLCAnbmF0aXZlc2RrJywgYW5kIG11bHRpbGlicy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0xMTE2LDYgKzExNDMsNTMgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCRklMRVNfRFlOQU1JQyc+PGdsb3NzdGVybT5CQkZJTEVTX0RZTkFNSUM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJCRklMRVNfRFlOQU1JQ1tkb2NdID0gIkFjdGl2YXRlcyBjb250ZW50IHdoZW4gaWRlbnRpZmllZCBsYXllcnMgYXJlIHByZXNlbnQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgQWN0aXZhdGVzIGNvbnRlbnQgd2hlbiBpZGVudGlmaWVkIGxheWVycyBhcmUgcHJlc2VudC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGlkZW50aWZ5IHRoZSBsYXllcnMgYnkgdGhlIGNvbGxlY3Rpb25zIHRoYXQgdGhlIGxheWVycworICAgICAgICAgICAgICAgICAgICBkZWZpbmUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPkJCRklMRVNfRFlOQU1JQzwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvCisgICAgICAgICAgICAgICAgICAgIGF2b2lkIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlcyB3aG9zZQorICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlIGlzIGluIGEgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhdHRlbXB0cyB0byBtb2RpZnkgb3RoZXIgbGF5ZXJzIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGJ1dCBkb2VzIG5vdCB3YW50IHRvCisgICAgICAgICAgICAgICAgICAgIGludHJvZHVjZSBhIGhhcmQgZGVwZW5kZW5jeSBvbiB0aG9zZSBvdGhlciBsYXllcnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGZvcm0gZm9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQkZJTEVTX0RZTkFNSUM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8cmVwbGFjZWFibGU+Y29sbGVjdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPmZpbGVuYW1lX3BhdHRlcm48L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpZGVudGlmaWVzIHR3byBjb2xsZWN0aW9uIG5hbWVzIGFuZAorICAgICAgICAgICAgICAgICAgICB0d28gZmlsZW5hbWUgcGF0dGVybnM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJGSUxFU19EWU5BTUlDICs9ICIgXAorICAgICAgICAgY2xhbmctbGF5ZXI6JHtMQVlFUkRJUn0vYmJhcHBlbmRzL21ldGEtY2xhbmcvKi8qLyouYmJhcHBlbmQgXAorICAgICAgICAgY29yZToke0xBWUVSRElSfS9iYmFwcGVuZHMvb3BlbmVtYmVkZGVkLWNvcmUvbWV0YS8qLyovKi5iYmFwcGVuZCBcCisgICAgICIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGlzIG5leHQgZXhhbXBsZSBzaG93cyBhbiBlcnJvciBtZXNzYWdlIHRoYXQgb2NjdXJzCisgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaW52YWxpZCBlbnRyaWVzIGFyZSBmb3VuZCwgd2hpY2ggY2F1c2UgcGFyc2luZyB0bworICAgICAgICAgICAgICAgICAgICBhYm9ydDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFUlJPUjogQkJGSUxFU19EWU5BTUlDIGVudHJpZXMgbXVzdCBiZSBvZiB0aGUgZm9ybSAmbHQ7Y29sbGVjdGlvbiBuYW1lJmd0OzombHQ7ZmlsZW5hbWUgcGF0dGVybiZndDssIG5vdDoKKyAgICAgICAgIC93b3JrL215LWxheWVyL2JiYXBwZW5kcy9tZXRhLXNlY3VyaXR5LWlzYWZ3LyovKi8qLmJiYXBwZW5kCisgICAgICAgICAvd29yay9teS1sYXllci9iYmFwcGVuZHMvb3BlbmVtYmVkZGVkLWNvcmUvbWV0YS8qLyovKi5iYmFwcGVuZAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJJTkNMVURFTE9HUyc+PGdsb3NzdGVybT5CQklOQ0xVREVMT0dTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KICAgICAgICAgICAgICAgICBCQklOQ0xVREVMT0dTW2RvY10gPSAiVmFyaWFibGUgdGhhdCBjb250cm9scyBob3cgQml0QmFrZSBkaXNwbGF5cyBsb2dzIG9uIGJ1aWxkIGZhaWx1cmUuIgpAQCAtMTIwMCw4ICsxMjc0LDggQEAKICAgICAgICAgICAgICAgICAgICAgVGhlIGV4cHJlc3Npb25zIGFyZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBmdWxsIHBhdGhzIHRvCiAgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgRm9yIGNvbXBsZXRlIHN5bnRheCBpbmZvcm1hdGlvbiwgc2VlIFB5dGhvbidzCi0gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gYXQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2RvY3MucHl0aG9uLm9yZy9yZWxlYXNlLzIuMy9saWIvcmUtc3ludGF4Lmh0bWwnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXBwcm9wcmlhdGUgcmVsZWFzZSBhdAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZG9jcy5weXRob24ub3JnL3JlbGVhc2UvJz48L3VsaW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTE1MjAsMTIgKzE1OTQsMTIgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0NQUEZMQUdTJz48Z2xvc3N0ZXJtPkJVSUxEX0NQUEZMQUdTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBCVUlMRF9DUFBGTEFHU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBwcmUtcHJvY2Vzc29yIChpLmUuIHRvIGJvdGggdGhlIEMgYW5kIHRoZSBDKysgY29tcGlsZXJzKSB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdC4iCisgICAgICAgICAgICAgICAgQlVJTERfQ1BQRkxBR1NbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMgcHJlcHJvY2Vzc29yIChpLmUuIHRvIGJvdGggdGhlIEMgYW5kIHRoZSBDKysgY29tcGlsZXJzKSB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdC4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMgcHJlLXByb2Nlc3NvcgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMgcHJlcHJvY2Vzc29yCiAgICAgICAgICAgICAgICAgICAgIChpLmUuIHRvIGJvdGggdGhlIEMgYW5kIHRoZSBDKysgY29tcGlsZXJzKSB3aGVuIGJ1aWxkaW5nCiAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgYnVpbGQgaG9zdC4KICAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyBpbiB0aGUgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPiBjb250ZXh0LApAQCAtMTc5Nyw3ICsxODcxLDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcXVpcmVzIHRoYXQgdGhlIHZhbHVlIHlvdSBwcm92aWRlIGZvciB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVRfQVVUSE9SPC9maWxlbmFtZT4gdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgdGFrZXMgdGhlIGZvcm0gb2YgIm5hbWUgJmx0O2VtYWlsQGhvc3QmZ3Q7Ii4KKyAgICAgICAgICAgICAgICAgICAgdGFrZXMgdGhlIGZvcm0gb2YgIm5hbWUgPHJlcGxhY2VhYmxlPmVtYWlsQGhvc3Q8L3JlcGxhY2VhYmxlPiIuCiAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGluZyBhbiBlbWFpbCBhZGRyZXNzIG9yIGhvc3QgdGhhdCBpcyBub3QgdmFsaWQgZG9lcwogICAgICAgICAgICAgICAgICAgICBub3QgcHJvZHVjZSBhbiBlcnJvci4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xODQ5LDEyICsxOTIzLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgYnVpbGQgaGlzdG9yeSBmZWF0dXJlcwogICAgICAgICAgICAgICAgICAgICB0byBiZSBlbmFibGVkLgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgYnVpbGQgaGlzdG9yeSB3b3Jrcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzcGVjaWZ5IHRocmVlIGZlYXR1cmVzIGluIHRoZSBmb3JtIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzcGVjaWZ5IHRoZXNlIGZlYXR1cmVzIGluIHRoZSBmb3JtIG9mIGEKICAgICAgICAgICAgICAgICAgICAgc3BhY2Utc2VwYXJhdGVkIGxpc3Q6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmltYWdlOjwvZW1waGFzaXM+CkBAIC0xODY5LDEyICsxOTQzLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHlzaXMgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBzb2Z0d2FyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGtpdCAoU0RLKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+dGFzazo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhdmUgb3V0cHV0IGZpbGUgc2lnbmF0dXJlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+c2hhcmVkIHN0YXRlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3N0YXRlKSB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNhdmVzIG9uZSBmaWxlIHBlciB0YXNrIGFuZCBsaXN0cyB0aGUgU0hBLTI1NgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtcyBmb3IgZWFjaCBmaWxlIHN0YWdlZCAoaS5lLiB0aGUgb3V0cHV0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhc2spLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBjbGFzcwotICAgICAgICAgICAgICAgICAgICBlbmFibGVzIGFsbCB0aHJlZSBmZWF0dXJlczoKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlcyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJVSUxESElTVE9SWV9GRUFUVVJFUyA/PSAiaW1hZ2UgcGFja2FnZSBzZGsiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KQEAgLTIyMTIsMTMgKzIyOTQsNiBAQAogICAgICAgICAgICAgICAgICAgICBsZXZlbCwgaW4gY2FzZSB0aGUgaGFyZHdhcmUgc3VwcG9ydHMgQmx1ZXRvb3RoIGJ1dCB5b3UKICAgICAgICAgICAgICAgICAgICAgZG8gbm90IGV2ZXIgaW50ZW5kIHRvIHVzZSBpdC4KICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkVfRkVBVFVSRVMnPjxmaWxlbmFtZT5NQUNISU5FX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFuZCA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKQEAgLTI3MzIsMTMgKzI4MDcsMTMgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNPUkVCQVNFJz48Z2xvc3N0ZXJtPkNPUkVCQVNFPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBDT1JFQkFTRVtkb2NdID0gIlNwZWNpZmllcyB0aGUgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGUgT3BlbkVtYmVkZGVkIENvcmUgTWV0YWRhdGEgbGF5ZXIgKGkuZS4gbWV0YSkuIgorICAgICAgICAgICAgICAgIENPUkVCQVNFW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIHRoZSBPcGVuRW1iZWRkZWQtQ29yZSBNZXRhZGF0YSBsYXllciAoaS5lLiBtZXRhKS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlIE9wZW5FbWJlZGRlZAotICAgICAgICAgICAgICAgICAgICBDb3JlIE1ldGFkYXRhIGxheWVyIChpLmUuIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlIE9wZW5FbWJlZGRlZC1Db3JlCisgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhIGxheWVyIChpLmUuIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4pLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMjkzOCwxMiArMzAxMywxMiBAQAogICAgICAgICAgICAgICAgICAgICB0YXNrLgogICAgICAgICAgICAgICAgICAgICBUaGlzIGxvY2F0aW9uIGRlZmF1bHRzIHRvOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICR7PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPldPUktESVI8L2xpbms+fS9pbWFnZQorICAgICAke1dPUktESVJ9L2ltYWdlCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPkNhdXRpb248L3RpdGxlPgogICAgICAgICAgICAgICAgICAgICAgICAgVGFza3MgdGhhdCByZWFkIGZyb20gb3Igd3JpdGUgdG8gdGhpcyBkaXJlY3Rvcnkgc2hvdWxkCiAgICAgICAgICAgICAgICAgICAgICAgICBydW4gdW5kZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2Zha2Vyb290LWFuZC1wc2V1ZG8nPmZha2Vyb290PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZmFrZXJvb3QtYW5kLXBzZXVkbyc+ZmFrZXJvb3Q8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0zMTkwLDkgKzMyNjUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGFueSBydW50aW1lIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBwcm9kdWNlZCBieSB0aGUgdHdvIHJlY2lwZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGFzIGV4cGxhaW5lZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2F1dG9tYXRpY2FsbHktYWRkZWQtcnVudGltZS1kZXBlbmRlbmNpZXMnPkF1dG9tYXRpY2FsbHkgQWRkZWQgUnVudGltZSBEZXBlbmRlbmNpZXM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLCBydW50aW1lIGRlcGVuZGVuY2llcyB3aWxsIG9mdGVuIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkIGF1dG9tYXRpY2FsbHksIG1lYW5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25jZXB0cyBNYW51YWwsIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Z0ZW4gYmUgYWRkZWQgYXV0b21hdGljYWxseSwgbWVhbmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGFsb25lIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpY2llbnQgZm9yIG1vc3QgcmVjaXBlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0zMjM0LDEzICszMzEwLDEzIEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ERVBMT1lfRElSJz48Z2xvc3N0ZXJtPkRFUExPWV9ESVI8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIERFUExPWV9ESVJbZG9jXSA9ICJQb2ludHMgdG8gdGhlIGdlbmVyYWwgYXJlYSB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdG8gcGxhY2UgaW1hZ2VzLCBwYWNrYWdlcywgU0RLcyBhbmQgb3RoZXIgb3V0cHV0IGZpbGVzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUgYnVpbGQgc3lzdGVtLiIKKyAgICAgICAgICAgICAgICBERVBMT1lfRElSW2RvY10gPSAiUG9pbnRzIHRvIHRoZSBnZW5lcmFsIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MsIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBnZW5lcmFsIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MgYW5kIG90aGVyIG91dHB1dAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gdXNlcyB0byBwbGFjZSBpbWFnZXMsIHBhY2thZ2VzLCBTREtzLCBhbmQgb3RoZXIgb3V0cHV0CiAgICAgICAgICAgICAgICAgICAgIGZpbGVzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUgYnVpbGQgc3lzdGVtLgogICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGRpcmVjdG9yeSByZXNpZGVzIHdpdGhpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CkBAIC0zMjU0LDE4ICszMzMwLDE5IEBACiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbCBvbiB0aGUgY29udGVudHMgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2ltYWdlcy1kZXYtZW52aXJvbm1lbnQnPkltYWdlczwvbGluaz4iLAotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IiwKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+SW1hZ2VzPC91bGluaz4iLAorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IiwKICAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2RrLWRldi1lbnZpcm9ubWVudCc+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgU0RLPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zIGFsbCBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMKKyAgICAgICAgICAgICAgICAgICAgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURFUExPWV9ESVJfREVCJz48Z2xvc3N0ZXJtPkRFUExPWV9ESVJfREVCPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBERVBMT1lfRElSX0RFQltkb2NdID0gIlBvaW50cyB0byBhIERlYmlhbi1zcGVjaWZpYyBhcmVhIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0byBwbGFjZSBpbWFnZXMsIHBhY2thZ2VzLCBTREtzIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgorICAgICAgICAgICAgICAgIERFUExPWV9ESVJfREVCW2RvY10gPSAiUG9pbnRzIHRvIGEgRGViaWFuLXNwZWNpZmljIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MsIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMzI5Nyw4ICszMzc0LDggQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfZGViJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9kZWI8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdGFzayB3cml0ZXMgRGViaWFuIHBhY2thZ2VzIGludG8gdGhlIGFwcHJvcHJpYXRlIGZvbGRlci4KICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHBhY2thZ2luZyB3b3Jrcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMzMyNywxNiArMzQwNCwxOCBAQAogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWwgb24gdGhlIGNvbnRlbnRzIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT4gZGlyZWN0b3J5LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L2xpbms+IiBhbmQKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1kZXYtZW52aXJvbm1lbnQnPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3Nkay1kZXYtZW52aXJvbm1lbnQnPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucyBib3RoIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cworICAgICAgICAgICAgICAgICAgICBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItREVQTE9ZX0RJUl9JUEsnPjxnbG9zc3Rlcm0+REVQTE9ZX0RJUl9JUEs8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIERFUExPWV9ESVJfSVBLW2RvY10gPSAiUG9pbnRzIHRvIGEgSVBLLXNwZWNpZmljIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MgYW5kIG90aGVyIG91dHB1dCBmaWxlcyB0aGF0IGFyZSByZWFkeSB0byBiZSB1c2VkIG91dHNpZGUgb2YgdGhlIGJ1aWxkIHN5c3RlbS4iCisgICAgICAgICAgICAgICAgREVQTE9ZX0RJUl9JUEtbZG9jXSA9ICJQb2ludHMgdG8gYSBJUEstc3BlY2lmaWMgYXJlYSB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdG8gcGxhY2UgaW1hZ2VzLCBwYWNrYWdlcywgU0RLcywgYW5kIG90aGVyIG91dHB1dCBmaWxlcyB0aGF0IGFyZSByZWFkeSB0byBiZSB1c2VkIG91dHNpZGUgb2YgdGhlIGJ1aWxkIHN5c3RlbS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0zMzY3LDE1ICszNDQ2LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2lwayc+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfaXBrPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHRhc2sgd3JpdGVzIElQSyBwYWNrYWdlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBmb2xkZXIuCiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyBwYWNrYWdpbmcgd29ya3MsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjcGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURFUExPWV9ESVJfUlBNJz48Z2xvc3N0ZXJtPkRFUExPWV9ESVJfUlBNPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBERVBMT1lfRElSX1JQTVtkb2NdID0gIlBvaW50cyB0byBhIFJQTS1zcGVjaWZpYyBhcmVhIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0byBwbGFjZSBpbWFnZXMsIHBhY2thZ2VzLCBTREtzIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgorICAgICAgICAgICAgICAgIERFUExPWV9ESVJfUlBNW2RvY10gPSAiUG9pbnRzIHRvIGEgUlBNLXNwZWNpZmljIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MsIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMzQwNiwxNSArMzQ4NSwxNSBAQAogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZV93cml0ZV9ycG0nPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX3JwbTwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICB0YXNrIHdyaXRlcyBSUE0gcGFja2FnZXMgaW50byB0aGUgYXBwcm9wcmlhdGUgZm9sZGVyLgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgcGFja2FnaW5nIHdvcmtzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ERVBMT1lfRElSX1RBUic+PGdsb3NzdGVybT5ERVBMT1lfRElSX1RBUjwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgREVQTE9ZX0RJUl9UQVJbZG9jXSA9ICJQb2ludHMgdG8gYSB0YXJiYWxsIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MgYW5kIG90aGVyIG91dHB1dCBmaWxlcyB0aGF0IGFyZSByZWFkeSB0byBiZSB1c2VkIG91dHNpZGUgb2YgdGhlIGJ1aWxkIHN5c3RlbS4iCisgICAgICAgICAgICAgICAgREVQTE9ZX0RJUl9UQVJbZG9jXSA9ICJQb2ludHMgdG8gYSB0YXJiYWxsIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MsIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMzQ0NSw4ICszNTI0LDggQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfdGFyJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV90YXI8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdGFzayB3cml0ZXMgVEFSIHBhY2thZ2VzIGludG8gdGhlIGFwcHJvcHJpYXRlIGZvbGRlci4KICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHBhY2thZ2luZyB3b3Jrcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMzY5OCw3ICszNzc3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgSXQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZXItY29uZmlndXJhYmxlLgogICAgICAgICAgICAgICAgICAgICBJdCBpcyBiZXN0IHRvIGp1c3QgcmVmZXJlbmNlIHRoZSB2YXJpYWJsZSB0byBzZWUgd2hpY2ggZGlzdHJvIGZlYXR1cmVzIGFyZQogICAgICAgICAgICAgICAgICAgICBiZWluZyBiYWNrZmlsbGVkIGZvciBhbGwgZGlzdHJvIGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIDxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBiYWNrZmlsbGluZzwvbGluaz4gc2VjdGlvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8bGluayBsaW5rZW5kPSdyZWYtZmVhdHVyZXMtYmFja2ZpbGwnPkZlYXR1cmUgQmFja2ZpbGxpbmc8L2xpbms+IHNlY3Rpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTQzODYsNyArNDQ2NSw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1FWFRSQV9JTUFHRUNNRCc+PGdsb3NzdGVybT5FWFRSQV9JTUFHRUNNRDwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgRVhUUkFfSU1BR0VDTURbZG9jXSA9ICJTcGVjaWZpZXMgYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgaW1hZ2UgY3JlYXRpb24gY29tbWFuZCB0aGF0IGhhcyBiZWVuIHNwZWNpZmllZCBpbiBJTUFHRV9DTUQuIFdoZW4gc2V0dGluZyB0aGlzIHZhcmlhYmxlLCB5b3Ugc2hvdWxkIHVzZSBhbiBvdmVycmlkZSBmb3IgdGhlIGFzc29jaWF0ZWQgdHlwZS4iCisgICAgICAgICAgICAgICAgRVhUUkFfSU1BR0VDTURbZG9jXSA9ICJTcGVjaWZpZXMgYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgaW1hZ2UgY3JlYXRpb24gY29tbWFuZCB0aGF0IGhhcyBiZWVuIHNwZWNpZmllZCBpbiBJTUFHRV9DTUQuIFdoZW4gc2V0dGluZyB0aGlzIHZhcmlhYmxlLCB5b3Ugc2hvdWxkIHVzZSBhbiBvdmVycmlkZSBmb3IgdGhlIGFzc29jaWF0ZWQgaW1hZ2UgdHlwZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC00Mzk0LDggKzQ0NzMsOCBAQAogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgaW1hZ2UKICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb24gY29tbWFuZCB0aGF0IGhhcyBiZWVuIHNwZWNpZmllZCBpbgogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfQ01EJz48ZmlsZW5hbWU+SU1BR0VfQ01EPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgICAgICAgICBXaGVuIHNldHRpbmcgdGhpcyB2YXJpYWJsZSwgeW91IHNob3VsZAotICAgICAgICAgICAgICAgICAgICB1c2UgYW4gb3ZlcnJpZGUgZm9yIHRoZSBhc3NvY2lhdGVkIHR5cGUuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gc2V0dGluZyB0aGlzIHZhcmlhYmxlLCB1c2UgYW4gb3ZlcnJpZGUgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIGltYWdlIHR5cGUuCiAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBFWFRSQV9JTUFHRUNNRF9leHQzID89ICItaSA0MDk2IgpAQCAtNDc4Nyw3ICs0ODY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIHN0YXRlbWVudCBhcHBlYXJzIGluIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tZGV2LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSwgd2hpY2gKICAgICAgICAgICAgICAgICAgICAgaXMgZm91bmQgaW4gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgaW4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWwvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIEhlcmUsIHRoZSBtYWNoaW5lIG92ZXJyaWRlIGlzIGEgc3BlY2lhbApAQCAtNDgyMSw3ICs0OTAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IG92ZXJyaWRlcyBhcmUgaGFuZGxlZAogICAgICAgICAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtNDg1Myw3ICs0OTMyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLCBCaXRCYWtlIHNlYXJjaGVzIGVhY2ggZGlyZWN0b3J5IGluCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPiBpbiB0aGUgc3BlY2lmaWVkIG9yZGVyIHdoZW4KICAgICAgICAgICAgICAgICAgICAgbG9va2luZyBmb3IgZmlsZXMgYW5kIHBhdGNoZXMgc3BlY2lmaWVkIGJ5IGVhY2gKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPiBVUkkgaW4gYSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5maWxlOi8vPC9maWxlbmFtZT4gVVJJIGluIGEgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC00ODgxLDkgKzQ5NjIsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGJ1aWxkIHN5c3RlbSB0byBmaW5kIHBhdGNoZXMgb3IgZmlsZXMKICAgICAgICAgICAgICAgICAgICAgdGhhdCByZXNpZGUgd2l0aCB5b3VyIGFwcGVuZCBmaWxlcywgeW91IG5lZWQgdG8gZXh0ZW5kCiAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgYnkgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT4gdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCB0aGUgcGF0Y2hpbmcgcHJvY2VzcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjcGF0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5QYXRjaGluZzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwKKyAgICAgICAgICAgICAgICAgICAgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXJlY2lwZS1wYXRjaGluZy1jb2RlJz5QYXRjaGluZyBDb2RlPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgYXMgd2VsbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC01MDA0LDYgKzUwOTUsMzAgQEAKIAogICAgIDxnbG9zc2RpdiBpZD0ndmFyLWdsb3NzYXJ5LWcnPjx0aXRsZT5HPC90aXRsZT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUdDQ1BJRSc+PGdsb3NzdGVybT5HQ0NQSUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEdDQ1BJRVtkb2NdID0gIkVuYWJsZXMgUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZXMgKFBJRSkgd2l0aGluIHRoZSBHTlUgQyBDb21waWxlciAoR0NDKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIFBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGVzIChQSUUpIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgR05VIEMgQ29tcGlsZXIgKEdDQykuCisgICAgICAgICAgICAgICAgICAgIEVuYWJsaW5nIFBJRSBpbiB0aGUgR0NDIG1ha2VzIFJldHVybiBPcmllbnRlZCBQcm9ncmFtbWluZworICAgICAgICAgICAgICAgICAgICAoUk9QKSBhdHRhY2tzIG11Y2ggbW9yZSBkaWZmaWN1bHQgdG8KKyAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCB0aGUgPGZpbGVuYW1lPnNlY3VyaXR5X2ZsYWdzLmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgZW5hYmxlcyBQSUUgYnkgc2V0dGluZyB0aGUgdmFyaWFibGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBHQ0NQSUUgPz0gIi0tZW5hYmxlLWRlZmF1bHQtcGllIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItR0RCJz48Z2xvc3N0ZXJtPkdEQjwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+CiAgICAgICAgICAgICAgICAgR0RCW2RvY10gPSAiVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biB0aGUgR05VIERlYnVnZ2VyLiIKQEAgLTUwMzEsMTMgKzUxNDYsMTMgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUdMSUJDX0dFTkVSQVRFX0xPQ0FMRVMnPjxnbG9zc3Rlcm0+R0xJQkNfR0VORVJBVEVfTE9DQUxFUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgR0xJQkNfR0VORVJBVEVfTE9DQUxFU1tkb2NdPSAiU3BlY2lmaWVzIHRoZSBsaXN0IG9mIEdMSUJDIGxvY2FsZXMgdG8gZ2VuZXJhdGUgc2hvdWxkIHlvdSBub3Qgd2lzaCBnZW5lcmF0ZSBhbGwgTElCQyBsb2NhbHMsIHdoaWNoIGNhbiBiZSB0aW1lIGNvbnN1bWluZy4iCisgICAgICAgICAgICAgICAgR0xJQkNfR0VORVJBVEVfTE9DQUxFU1tkb2NdPSAiU3BlY2lmaWVzIHRoZSBsaXN0IG9mIEdMSUJDIGxvY2FsZXMgdG8gZ2VuZXJhdGUgc2hvdWxkIHlvdSBub3Qgd2lzaCB0byBnZW5lcmF0ZSBhbGwgTElCQyBsb2NhbHMsIHdoaWNoIGNhbiBiZSB0aW1lIGNvbnN1bWluZy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgR0xJQkMgbG9jYWxlcyB0byBnZW5lcmF0ZSBzaG91bGQgeW91Ci0gICAgICAgICAgICAgICAgICAgIG5vdCB3aXNoIGdlbmVyYXRlIGFsbCBMSUJDIGxvY2Fscywgd2hpY2ggY2FuIGJlIHRpbWUKKyAgICAgICAgICAgICAgICAgICAgbm90IHdpc2ggdG8gZ2VuZXJhdGUgYWxsIExJQkMgbG9jYWxzLCB3aGljaCBjYW4gYmUgdGltZQogICAgICAgICAgICAgICAgICAgICBjb25zdW1pbmcuCiAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHNwZWNpZmljYWxseSByZW1vdmUgdGhlIGxvY2FsZQpAQCAtNTMwNyw3ICs1NDIyLDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUhPU1RfU1lTJz48Z2xvc3N0ZXJtPkhPU1RfU1lTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBIT1NUX1NZU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgc3lzdGVtLCBpbmNsdWRpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0sIGZvciB3aXRoIHRoZSBidWlsZCBpcyBvY2N1cnJpbmcgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgcmVjaXBlLiIKKyAgICAgICAgICAgICAgICBIT1NUX1NZU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgc3lzdGVtLCBpbmNsdWRpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0sIGZvciB3aGljaCB0aGUgYnVpbGQgaXMgb2NjdXJyaW5nIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHJlY2lwZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC01MzgzLDcgKzU0OTgsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb250YW1pbmF0aW9uLgogICAgICAgICAgICAgICAgICAgICBVbmxpa2UKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUhPU1RUT09MUyc+PGZpbGVuYW1lPkhPU1RUT09MUzwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3QgcHJvZHVjZSBhbmQgZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3QgcHJvZHVjZSBhbiBlcnJvcgogICAgICAgICAgICAgICAgICAgICBpZiBhIHRvb2wgc3BlY2lmaWVkIGluIHRoZSB2YWx1ZSBvZgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SE9TVFRPT0xTX05PTkZBVEFMPC9maWxlbmFtZT4gaXMgbm90IGZvdW5kIG9uIHRoZQogICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0LgpAQCAtNTQwMiw3ICs1NTE3LDcgQEAKIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgdmVuZG9yLgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SE9TVF9WRU5ET1I8L2ZpbGVuYW1lPiBpcyBub3JtYWxseSB0aGUgc2FtZSBhcwotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX1BSRUZJWCc+PGZpbGVuYW1lPlRBUkdFVF9WRU5ET1I8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQVJHRVRfVkVORE9SJz48ZmlsZW5hbWU+VEFSR0VUX1ZFTkRPUjwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC01NjIwLDE4ICs1NzM1LDE3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9CT09UX0ZJTEVTJz48Z2xvc3N0ZXJtPklNQUdFX0JPT1RfRklMRVM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIElNQUdFX0JPT1RfRklMRVNbZG9jXSA9ICJXaGl0ZXNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIGZyb20gJHtERVBMT1lfRElSX0lNQUdFfSB0byBwbGFjZSBpbiBib290IHBhcnRpdGlvbi4gRW50cmllcyB3aWxsIGJlIGluc3RhbGxlZCB1bmRlciBhIHNhbWUgbmFtZSBhcyB0aGUgc291cmNlIGZpbGUuIFRvIGNoYW5nZSB0aGUgZGVzdGluYXRpb24gZmlsZSBuYW1lLCBwYXNzIGEgZGVzaXJlZCBuYW1lIGFmdGVyIGEgc2VtaWNvbG9uIChlZy4gdS1ib290LmltZzt1Ym9vdCkuIgorICAgICAgICAgICAgICAgIElNQUdFX0JPT1RfRklMRVNbZG9jXSA9ICJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIGZyb20gJHtERVBMT1lfRElSX0lNQUdFfSB0byBwbGFjZSBpbiBib290IHBhcnRpdGlvbi4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIGluc3RhbGxlZCBpbnRvIHRoZQotICAgICAgICAgICAgICAgICAgICBib290IHBhcnRpdGlvbiB3aGVuIHByZXBhcmluZyBhbiBpbWFnZSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IHRvb2wgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJvb3RpbWctcGFydGl0aW9uPC9maWxlbmFtZT4gc291cmNlCisgICAgICAgICAgICAgICAgICAgIGJvb3QgcGFydGl0aW9uIHdoZW4gcHJlcGFyaW5nIGFuIGltYWdlIHVzaW5nIHRoZSBXaWMgdG9vbAorICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSA8ZmlsZW5hbWU+Ym9vdGltZy1wYXJ0aXRpb248L2ZpbGVuYW1lPiBzb3VyY2UKICAgICAgICAgICAgICAgICAgICAgcGx1Z2luLgotICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgZmlsZXMgYXJlIGluc3RhbGxlZCB1bmRlcgotICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBuYW1lIGFzIHRoZSBzb3VyY2UgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBmaWxlcyBhcmUgaW5zdGFsbGVkIHVuZGVyIHRoZSBzYW1lIG5hbWUgYXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgVG8gY2hhbmdlIHRoZSBpbnN0YWxsZWQgbmFtZSwgc2VwYXJhdGUgaXQgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgbmFtZSB3aXRoIGEgc2VtaS1jb2xvbiAoOykuCiAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBmaWxlcyBuZWVkIHRvIGJlIGxvY2F0ZWQgaW4KQEAgLTU2NDcsOSArNTc2MSw4IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHNvdXJjZSBmaWxlcyBjYW4gYmUgcGlja2VkIHVwIHVzaW5nCiAgICAgICAgICAgICAgICAgICAgIGEgZ2xvYiBwYXR0ZXJuLgotICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBkZXN0aW5hdGlvbiBmaWxlCi0gICAgICAgICAgICAgICAgICAgIHdpbGwgaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZSBiYXNlIG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlCi0gICAgICAgICAgICAgICAgICAgIHBhdGguCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGRlc3RpbmF0aW9uIGZpbGUgbXVzdCBoYXZlIHRoZSBzYW1lIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgYXMgdGhlIGJhc2UgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgcGF0aC4KICAgICAgICAgICAgICAgICAgICAgVG8gaW5zdGFsbCBmaWxlcyBpbnRvIGEgZGlyZWN0b3J5IHdpdGhpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGxvY2F0aW9uLCBwYXNzIGl0cyBuYW1lIGFmdGVyIGEgc2VtaS1jb2xvbgogICAgICAgICAgICAgICAgICAgICAoOykuCkBAIC01NjY1LDYgKzU3NzgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJvb3Q8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQogICAgICAgICAgICAgICAgICAgICB0YXJnZXQgcGFydGl0aW9uLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgV2ljIHRvb2wgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMtdXNpbmctd2ljJz5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2UgbWF0ZXJpYWwgZm9yIFdpYyBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWtpY2tzdGFydCc+T3BlbkVtYmVkZGVkIEtpY2tzdGFydCAoLndrcykgUmVmZXJlbmNlPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCkBAIC01ODQwLDcwICs1OTYyLDg2IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9JTlNUQUxMJz48Z2xvc3N0ZXJtPklNQUdFX0lOU1RBTEw8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIElNQUdFX0lOU1RBTExbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhY2thZ2VzIHRvIGluc3RhbGwgaW50byBhbiBpbWFnZS4gSW1hZ2UgcmVjaXBlcyBzZXQgSU1BR0VfSU5TVEFMTCB0byBzcGVjaWZ5IHRoZSBwYWNrYWdlcyB0byBpbnN0YWxsIGludG8gYW4gaW1hZ2UgdGhyb3VnaCBpbWFnZS5iYmNsYXNzLiIKKyAgICAgICAgICAgICAgICBJTUFHRV9JTlNUQUxMW2RvY10gPSAiVXNlZCBieSByZWNpcGVzIHRvIHNwZWNpZnkgdGhlIHBhY2thZ2VzIHRvIGluc3RhbGwgaW50byBhbiBpbWFnZSB0aHJvdWdoIGltYWdlLmJiY2xhc3MuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYWNrYWdlcyB0byBpbnN0YWxsIGludG8gYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIGEKLSAgICAgICAgICAgICAgICAgICAgbWVjaGFuaXNtIGZvciBhbiBpbWFnZSByZWNpcGUgYW5kIHlvdSBzaG91bGQgdXNlIGl0Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggY2FyZSB0byBhdm9pZCBvcmRlcmluZyBpc3N1ZXMuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB3b3JraW5nIHdpdGggYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2ltYWdlcy1jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzJz48ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mczwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UsIGRvIG5vdCB1c2UgdGhlIDxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHNwZWNpZnkgcGFja2FnZXMgZm9yIGluc3RhbGxhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBhbGxvd3MgdGhlIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIChpbml0cmFtZnMpIHJlY2lwZSB0byB1c2UgYSBmaXhlZCBzZXQgb2YgcGFja2FnZXMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBub3QgYmUgYWZmZWN0ZWQgYnkgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBjcmVhdGluZyBhbiBpbml0cmFtZnMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZGluZy1hbi1pbml0cmFtZnMtaW1hZ2UnPkJ1aWxkaW5nIGFuIEluaXRpYWwgUkFNIEZpbGVzeXN0ZW0gKGluaXRyYW1mcykgSW1hZ2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFVzZWQgYnkgcmVjaXBlcyB0byBzcGVjaWZ5IHRoZSBwYWNrYWdlcyB0byBpbnN0YWxsIGludG8gYW4KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+IHZhcmlhYmxlIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgY2FyZSB0byBhdm9pZCBvcmRlcmluZyBpc3N1ZXMuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEltYWdlIHJlY2lwZXMgc2V0IDxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgdG8gc3BlY2lmeSB0aGUgcGFja2FnZXMgdG8gaW5zdGFsbCBpbnRvIGFuIGltYWdlIHRocm91Z2gKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmltYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCAiaGVscGVyIiBjbGFzc2VzIGV4aXN0LCBzdWNoIGFzCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPiwgdGhhdCBjYW4gdGFrZQorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksICJoZWxwZXIiIGNsYXNzZXMgc3VjaCBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtY29yZS1pbWFnZSc+PGZpbGVuYW1lPmNvcmUtaW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgZXhpc3QgdGhhdCBjYW4gdGFrZSBsaXN0cyB1c2VkIHdpdGgKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+SU1BR0VfRkVBVFVSRVM8L2xpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgbGlzdHMgYW5kIHR1cm4gdGhlc2UgaW50byBhdXRvLWdlbmVyYXRlZCBlbnRyaWVzIGluCisgICAgICAgICAgICAgICAgICAgIGFuZCB0dXJuIHRoZW0gaW50byBhdXRvLWdlbmVyYXRlZCBlbnRyaWVzIGluCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT4gaW4gYWRkaXRpb24gdG8gaXRzCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgY29udGVudHMuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFVzaW5nIDxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT4gd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPis9PC9maWxlbmFtZT4gb3BlcmF0b3IgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIGZyb20gd2l0aGluCi0gICAgICAgICAgICAgICAgICAgIGFuIGltYWdlIHJlY2lwZSBpcyBub3QgcmVjb21tZW5kZWQgYXMgaXQgY2FuIGNhdXNlIG9yZGVyaW5nCi0gICAgICAgICAgICAgICAgICAgIGlzc3Vlcy4KLSAgICAgICAgICAgICAgICAgICAgU2luY2UgPGZpbGVuYW1lPmNvcmUtaW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+IHNldHMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB0byBhIGRlZmF1bHQgdmFsdWUgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+IG9wZXJhdG9yLCB1c2luZyBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+IG9wZXJhdGlvbiBhZ2FpbnN0Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT4gd2lsbCByZXN1bHQgaW4KLSAgICAgICAgICAgICAgICAgICAgdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIHVzZWQgaW4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIHNhbWUgb3BlcmF0aW9uIGZyb20gd2l0aGluIGFuIGltYWdlCi0gICAgICAgICAgICAgICAgICAgIHJlY2lwZSBtYXkgb3IgbWF5IG5vdCBzdWNjZWVkIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMKLSAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uLgotICAgICAgICAgICAgICAgICAgICBJbiBib3RoIHRoZXNlIGNhc2VzLCB0aGUgYmVoYXZpb3IgaXMgY29udHJhcnkgdG8gaG93IG1vc3QKLSAgICAgICAgICAgICAgICAgICAgdXNlcnMgZXhwZWN0IHRoZSA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiBvcGVyYXRvciB0byB3b3JrLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhpcyB2YXJpYWJsZSwgaXQgaXMgYmVzdCB0byB1c2UgaXQgYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIgPHJlcGxhY2VhYmxlPnBhY2thZ2UtbmFtZTwvcmVwbGFjZWFibGU+IgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gaW5jbHVkZSB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgcXVvdGF0aW9uIGNoYXJhY3RlcgogICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIHN0YXJ0IG9mIHRoZSBwYWNrYWdlIG5hbWUgb3IgbmFtZXMuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5DYXV0aW9uPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHdvcmtpbmcgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2ltYWdlcy1jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzJz48ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSwgZG8gbm90IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHBhY2thZ2VzIGZvciBpbnN0YWxsYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfSU5TVEFMTCc+PGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggYWxsb3dzIHRoZSBpbml0aWFsIFJBTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIChpbml0cmFtZnMpIHJlY2lwZSB0byB1c2UgYSBmaXhlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgb2YgcGFja2FnZXMgYW5kIG5vdCBiZSBhZmZlY3RlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYW4gaW5pdHJhbWZzLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZGluZy1hbi1pbml0cmFtZnMtaW1hZ2UnPkJ1aWxkaW5nIGFuIEluaXRpYWwgUkFNIEZpbGVzeXN0ZW0gKGluaXRyYW1mcykgSW1hZ2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2FwcGVuZGluZy1hbmQtcHJlcGVuZGluZyc+PGZpbGVuYW1lPis9PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIG9wZXJhdG9yIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gd2l0aGluIGFuIGltYWdlIHJlY2lwZSBpcyBub3QgcmVjb21tZW5kZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBvZiB0aGlzIG9wZXJhdG9yIGluIHRoZXNlIHdheXMgY2FuIGNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyaW5nIGlzc3Vlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luY2UgPGZpbGVuYW1lPmNvcmUtaW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHMgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWUgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjc2V0dGluZy1hLWRlZmF1bHQtdmFsdWUnPjxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsIHVzaW5nIGEgPGZpbGVuYW1lPis9PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uIGFnYWluc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiByZXN1bHRzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiB1c2VkIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgc2FtZSBvcGVyYXRpb24gZnJvbSB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW1hZ2UgcmVjaXBlIG1heSBvciBtYXkgbm90IHN1Y2NlZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyBzaXR1YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIGJvdGggdGhlc2UgY2FzZXMsIHRoZSBiZWhhdmlvciBpcyBjb250cmFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBob3cgbW9zdCB1c2VycyBleHBlY3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+IG9wZXJhdG9yIHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC01OTgxLDggKzYxMTksOCBAQAogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIGltYWdlCiAgICAgICAgICAgICAgICAgICAgIGlzIGNyZWF0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdpbWFnZS1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+SW1hZ2UgR2VuZXJhdGlvbjwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2ltYWdlLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz5JbWFnZSBHZW5lcmF0aW9uPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC02MDU2LDEyICs2MTk0LDEyIEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9QS0dUWVBFJz48Z2xvc3N0ZXJtPklNQUdFX1BLR1RZUEU8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIElNQUdFX1BLR1RZUEVbZG9jXSA9ICJEZWZpbmVzIHRoZSBwYWNrYWdlIHR5cGUgKERFQiwgUlBNLCBJUEssIG9yIFRBUikgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4iCisgICAgICAgICAgICAgICAgSU1BR0VfUEtHVFlQRVtkb2NdID0gIkRlZmluZXMgdGhlIHBhY2thZ2UgdHlwZSAoaS5lLiBERUIsIFJQTSwgSVBLLCBvciBUQVIpIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgcGFja2FnZSB0eXBlIChERUIsIFJQTSwgSVBLLCBvciBUQVIpIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgcGFja2FnZSB0eXBlIChpLmUuIERFQiwgUlBNLCBJUEssIG9yIFRBUikgdXNlZAogICAgICAgICAgICAgICAgICAgICBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KICAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIGlzIGRlZmluZWQgYXBwcm9wcmlhdGVseSBieSB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcGFja2FnZV9kZWInPjxmaWxlbmFtZT5wYWNrYWdlX2RlYjwvZmlsZW5hbWU+PC9saW5rPiwKQEAgLTYxMDgsMTMgKzYyNDYsMTMgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQnPjxnbG9zc3Rlcm0+SU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORDwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgSU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORFtkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgZmluYWwgaW1hZ2Ugb3V0cHV0IGZpbGVzLiIKKyAgICAgICAgICAgICAgICBJTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EW2RvY10gPSAiU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhlIGZpbmFsIGltYWdlIG91dHB1dCBmaWxlcy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIG9uY2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIGZpbmFsIGltYWdlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgZmluYWwgaW1hZ2UKICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGZpbGVzLgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgZnVuY3Rpb25zIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC02MTM2LDEzICs2Mjc0LDEzIEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQnPjxnbG9zc3Rlcm0+SU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBJTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkRbZG9jXSA9ICJTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGJlZm9yZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgZmluYWwgaW1hZ2Ugb3V0cHV0IGZpbGVzLiIKKyAgICAgICAgICAgICAgICBJTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkRbZG9jXSA9ICJTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGJlZm9yZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoZSBmaW5hbCBpbWFnZSBvdXRwdXQgZmlsZXMuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBiZWZvcmUgdGhlCi0gICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIGZpbmFsIGltYWdlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgZmluYWwgaW1hZ2UKICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGZpbGVzLgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgZnVuY3Rpb25zIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC02NDg4LDcgKzY2MjYsNyBAQAogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiA8ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+LCBzZWUKICAgICAgICAgICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSImWU9DVE9fRE9DU19CQl9VUkw7I2luaGVyaXQtY29uZmlndXJhdGlvbi1kaXJlY3RpdmUiPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4gQ29uZmlndXJhdGlvbiBEaXJlY3RpdmU8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCaXRiYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRiYWtlIFVzZXIgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTY2NjIsOCArNjgwMCw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYnkgcmVmZXJlbmNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUgU291cmNlIERpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWltYWdlJz48ZmlsZW5hbWU+aW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgY2xhc3MsIGFuZCB0aGUKQEAgLTY3MjksOCArNjg2Niw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFNldHRpbmcgdGhlIHZhcmlhYmxlIHRvICIxIiBpbiBhIGNvbmZpZ3VyYXRpb24gZmlsZSBjYXVzZXMgdGhlCiAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gZ2VuZXJhdGUgYSBrZXJuZWwgaW1hZ2Ugd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzIHNwZWNpZmllZCBpbgotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5JVFJBTUZTX0lNQUdFJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGluaXRyYW1mcyBzcGVjaWZpZWQgaW4gPGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgd2l0aGluOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIElOSVRSQU1GU19JTUFHRV9CVU5ETEUgPSAiMSIKQEAgLTcwMDgsNyArNzE0NCw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LQlJBTkNIJz48Z2xvc3N0ZXJtPktCUkFOQ0g8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIEtCUkFOQ0hbZG9jXSA9ICJBIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIHRvIGV4cGxpY2l0bHkgaWRlbnRpZnkgdGhlIGtlcm5lbCBicmFuY2ggdGhhdCBpcyB2YWxpZGF0ZWQsIHBhdGNoZWQgYW5kIGNvbmZpZ3VyZWQgZHVyaW5nIGEgYnVpbGQuIgorICAgICAgICAgICAgICAgIEtCUkFOQ0hbZG9jXSA9ICJBIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIHRvIGV4cGxpY2l0bHkgaWRlbnRpZnkgdGhlIGtlcm5lbCBicmFuY2ggdGhhdCBpcyB2YWxpZGF0ZWQsIHBhdGNoZWQsIGFuZCBjb25maWd1cmVkIGR1cmluZyBhIGJ1aWxkLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTcxMTIsNyArNzI0OCw4IEBACiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LQlVJTERfREVGQ09ORklHPC9maWxlbmFtZT4gdmFyaWFibGUsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyN1c2luZy1hbi1pbi10cmVlLWRlZmNvbmZpZy1maWxlJz5Vc2luZyBhbiAiSW4tVHJlZSIgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IEZpbGU8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTcxNTUsNyArNzI5Miw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LRVJORUxfREVWSUNFVFJFRSc+PGdsb3NzdGVybT5LRVJORUxfREVWSUNFVFJFRTwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgS0VSTkVMX0RFVklDRVRSRUVbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBMaW51eCBrZXJuZWwgZGV2aWNlIHRyZWUgKGkuZS4gdGhlIDxmaWxlbmFtZT4uZHRiPC9maWxlbmFtZT4pIGZpbGUuIgorICAgICAgICAgICAgICAgIEtFUk5FTF9ERVZJQ0VUUkVFW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgTGludXgga2VybmVsIGRldmljZSB0cmVlIChpLmUuIHRoZSAuZHRiKSBmaWxlLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTc0MTUsNyArNzU1Miw4IEBACiAgICAgICAgICAgICAgICAgICAgIGNsYXNzLgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgaXMgdXNlZCwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2luY29ycG9yYXRpbmctb3V0LW9mLXRyZWUtbW9kdWxlcyc+SW5jb3Jwb3JhdGluZyBPdXQtb2YtVHJlZSBNb2R1bGVzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTc0NDYsNyArNzU4NCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGNsYXNzLgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgaXMgdXNlZCwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2luY29ycG9yYXRpbmctb3V0LW9mLXRyZWUtbW9kdWxlcyc+SW5jb3Jwb3JhdGluZyBPdXQtb2YtVHJlZSBNb2R1bGVzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTc2OTYsNiArNzgzNSw1MyBAQAogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTEFZRVJTRVJJRVNfQ09NUEFUJz48Z2xvc3N0ZXJtPkxBWUVSU0VSSUVTX0NPTVBBVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTEFZRVJTRVJJRVNfQ09NUEFUW2RvY10gPSAiTGlzdHMgdGhlIE9wZW5FbWJlZGRlZC1Db3JlIHZlcnNpb25zIGZvciB3aGljaCBhIGxheWVyIGlzIGNvbXBhdGlibGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlIHZlcnNpb25zIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdvZS1jb3JlJz5PcGVuRW1iZWRkZWQtQ29yZTwvbGluaz4gZm9yIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGEgbGF5ZXIgaXMgY29tcGF0aWJsZS4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIDxmaWxlbmFtZT5MQVlFUlNFUklFU19DT01QQVQ8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBhbGxvd3MgdGhlIGxheWVyIG1haW50YWluZXIgdG8gaW5kaWNhdGUgd2hpY2ggY29tYmluYXRpb25zCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsYXllciBhbmQgT0UtQ29yZSBjYW4gYmUgZXhwZWN0ZWQgdG8gd29yay4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIGdpdmVzIHRoZSBzeXN0ZW0gYSB3YXkgdG8gZGV0ZWN0IHdoZW4gYSBsYXllcgorICAgICAgICAgICAgICAgICAgICBoYXMgbm90IGJlZW4gdGVzdGVkIHdpdGggbmV3IHJlbGVhc2VzIG9mIE9FLUNvcmUgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgdGhlIGxheWVyIGlzIG5vdCBtYWludGFpbmVkKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gc3BlY2lmeSB0aGUgT0UtQ29yZSB2ZXJzaW9ucyBmb3Igd2hpY2ggYSBsYXllciBpcworICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlLCB1c2UgdGhpcyB2YXJpYWJsZSBpbiB5b3VyIGxheWVyJ3MKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBsaXN0LCB1c2UgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9SZWxlYXNlcyc+UmVsZWFzZSBOYW1lPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gJkRJU1RST19OQU1FX05PX0NBUDspLgorICAgICAgICAgICAgICAgICAgICBUbyBzcGVjaWZ5IG11bHRpcGxlIE9FLUNvcmUgdmVyc2lvbnMgZm9yIHRoZSBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgdXNlIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Q6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTEFZRVJTRVJJRVNfQ09NUEFUXzxyZXBsYWNlYWJsZT5sYXllcl9yb290X25hbWU8L3JlcGxhY2VhYmxlPiA9ICImRElTVFJPX05BTUVfTk9fQ0FQOyAmRElTVFJPX05BTUVfTk9fQ0FQX01JTlVTX09ORTsiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIDxmaWxlbmFtZT5MQVlFUlNFUklFU19DT01QQVQ8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgQ29tcGF0aWJsZSB2ZXJzaW9uIDIKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvZHVjZXMgYSB3YXJuaW5nIGlmCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdmFyaWFibGUgaXMgbm90IHNldCBmb3IgYW55IGdpdmVuIGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLXlvdXItb3duLWxheWVyJz5DcmVhdGluZyBZb3VyIE93biBMYXllcjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1MQVlFUlZFUlNJT04nPjxnbG9zc3Rlcm0+TEFZRVJWRVJTSU9OPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KICAgICAgICAgICAgICAgICBMQVlFUlZFUlNJT05bZG9jXSA9ICJPcHRpb25hbGx5IHNwZWNpZmllcyB0aGUgdmVyc2lvbiBvZiBhIGxheWVyIGFzIGEgc2luZ2xlIG51bWJlci4gVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGluIHRoZSBjb25mL2xheWVyLmNvbmYgZmlsZSBhbmQgbXVzdCBiZSBzdWZmaXhlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBsYXllci4iCkBAIC03NzY2LDEzICs3OTUyLDEzIEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1MRUFEX1NPTkFNRSc+PGdsb3NzdGVybT5MRUFEX1NPTkFNRTwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgTEVBRF9TT05BTUVbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGxlYWQgKG9yIHByaW1hcnkpIGNvbXBpbGVkIGxpYnJhcnkgZmlsZSAoLnNvKSB0aGF0IHRoZSBkZWJpYW4gY2xhc3MgYXBwbGllcyBpdHMgbmFtaW5nIHBvbGljeSB0byBnaXZlbiBhIHJlY2lwZSB0aGF0IHBhY2thZ2VzIG11bHRpcGxlIGxpYnJhcmllcy4iCisgICAgICAgICAgICAgICAgTEVBRF9TT05BTUVbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGxlYWQgKG9yIHByaW1hcnkpIGNvbXBpbGVkIGxpYnJhcnkgZmlsZSAoaS5lLiAuc28pIHRoYXQgdGhlIGRlYmlhbiBjbGFzcyBhcHBsaWVzIGl0cyBuYW1pbmcgcG9saWN5IHRvIGdpdmVuIGEgcmVjaXBlIHRoYXQgcGFja2FnZXMgbXVsdGlwbGUgbGlicmFyaWVzLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbGVhZCAob3IgcHJpbWFyeSkgY29tcGlsZWQgbGlicmFyeSBmaWxlCi0gICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LnNvPC9maWxlbmFtZT4pIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT4uc288L2ZpbGVuYW1lPikgdGhhdCB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGViaWFuJz48ZmlsZW5hbWU+ZGViaWFuPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFwcGxpZXMgaXRzIG5hbWluZyBwb2xpY3kgdG8gZ2l2ZW4gYSByZWNpcGUgdGhhdAogICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBtdWx0aXBsZSBsaWJyYXJpZXMuCkBAIC03ODA4LDggKzc5OTQsOCBAQAogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvICJDTE9TRUQiKS48L3BhcmE+CiAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5ncG9reS1jb25maWd1cmluZy1MSUNfRklMRVNfQ0hLU1VNJz4KLSAgICAgICAgICAgICAgICAgICAgVHJhY2tpbmcgTGljZW5zZSBDaGFuZ2VzPC9saW5rPiIgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5ncG9reS1jb25maWd1cmluZy1MSUNfRklMRVNfQ0hLU1VNJz5UcmFja2luZyBMaWNlbnNlIENoYW5nZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtNzk0NCw4ICs4MTMwLDggQEAKICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSBhZGRpdGlvbmFsIGxpY2Vuc2VzIGluIG9yZGVyIHRvIGJlIHVzZWQgaW4gYQogICAgICAgICAgICAgICAgICAgICBjb21tZXJjaWFsIHByb2R1Y3QuCiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdlbmFibGluZy1jb21tZXJjaWFsbHktbGljZW5zZWQtcmVjaXBlcyc+RW5hYmxpbmcgQ29tbWVyY2lhbGx5IExpY2Vuc2VkIFJlY2lwZXM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZW5hYmxpbmctY29tbWVyY2lhbGx5LWxpY2Vuc2VkLXJlY2lwZXMnPkVuYWJsaW5nIENvbW1lcmNpYWxseSBMaWNlbnNlZCBSZWNpcGVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTc5NjQsOCArODE1MCw4IEBACiAgICAgICAgICAgICAgICAgICAgIFRoaXMgcHJhY3RpY2UgaXMgb3RoZXJ3aXNlIGtub3duIGFzICJ3aGl0ZWxpc3RpbmciCiAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgZmxhZ3MuCiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2VuYWJsaW5nLWNvbW1lcmNpYWxseS1saWNlbnNlZC1yZWNpcGVzJz5FbmFibGluZyBDb21tZXJjaWFsbHkgTGljZW5zZWQgUmVjaXBlczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNlbmFibGluZy1jb21tZXJjaWFsbHktbGljZW5zZWQtcmVjaXBlcyc+RW5hYmxpbmcgQ29tbWVyY2lhbGx5IExpY2Vuc2VkIFJlY2lwZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtODE4Niw3ICs4MzcyLDcgQEAKIAogICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUyc+PGdsb3NzdGVybT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFNbZG9jXSA9ICJBIGxpc3Qgb2YgcmVxdWlyZWQgbWFjaGluZS1zcGVjaWZpYyBwYWNrYWdlcyB0byBpbnN0YWxsIGFzIHBhcnQgb2YgdGhlIGltYWdlIGJlaW5nIGJ1aWx0LiBCZWNhdXNlIHRoaXMgaXMgYSAnbWFjaGluZSBlc3NlbnRpYWwnIHZhcmlhYmxlLCB0aGUgbGlzdCBvZiBwYWNrYWdlcyBhcmUgZXNzZW50aWFsIGZvciB0aGUgbWFjaGluZSB0byBib290LiIKKyAgICAgICAgICAgICAgICBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EU1tkb2NdID0gIkEgbGlzdCBvZiByZXF1aXJlZCBtYWNoaW5lLXNwZWNpZmljIHBhY2thZ2VzIHRvIGluc3RhbGwgYXMgcGFydCBvZiB0aGUgaW1hZ2UgYmVpbmcgYnVpbHQuIEJlY2F1c2UgdGhpcyBpcyBhICdtYWNoaW5lLWVzc2VudGlhbCcgdmFyaWFibGUsIHRoZSBsaXN0IG9mIHBhY2thZ2VzIGFyZSBlc3NlbnRpYWwgZm9yIHRoZSBtYWNoaW5lIHRvIGJvb3QuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtODE5NCw3ICs4MzgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHJlcXVpcmVkIG1hY2hpbmUtc3BlY2lmaWMgcGFja2FnZXMgdG8gaW5zdGFsbCBhcyBwYXJ0IG9mCiAgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBiZWluZyBidWlsdC4KICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHByb2Nlc3MgZGVwZW5kcyBvbiB0aGVzZSBwYWNrYWdlcyBiZWluZyBwcmVzZW50LgotICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgYmVjYXVzZSB0aGlzIGlzIGEgIm1hY2hpbmUgZXNzZW50aWFsIiB2YXJpYWJsZSwgdGhlIGxpc3Qgb2YKKyAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIGJlY2F1c2UgdGhpcyBpcyBhICJtYWNoaW5lLWVzc2VudGlhbCIgdmFyaWFibGUsIHRoZSBsaXN0IG9mCiAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGFyZSBlc3NlbnRpYWwgZm9yIHRoZSBtYWNoaW5lIHRvIGJvb3QuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBpbXBhY3Qgb2YgdGhpcyB2YXJpYWJsZSBhZmZlY3RzIGltYWdlcyBiYXNlZCBvbgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtYm9vdDwvZmlsZW5hbWU+LApAQCAtODIyMyw3ICs4NDA5LDcgQEAKIAogICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyc+PGdsb3NzdGVybT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFNbZG9jXSA9ICJBIGxpc3Qgb2YgcmVjb21tZW5kZWQgbWFjaGluZS1zcGVjaWZpYyBwYWNrYWdlcyB0byBpbnN0YWxsIGFzIHBhcnQgb2YgdGhlIGltYWdlIGJlaW5nIGJ1aWx0LiBCZWNhdXNlIHRoaXMgaXMgYSAnbWFjaGluZSBlc3NlbnRpYWwnIHZhcmlhYmxlLCB0aGUgbGlzdCBvZiBwYWNrYWdlcyBhcmUgZXNzZW50aWFsIGZvciB0aGUgbWFjaGluZSB0byBib290LiIKKyAgICAgICAgICAgICAgICBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EU1tkb2NdID0gIkEgbGlzdCBvZiByZWNvbW1lbmRlZCBtYWNoaW5lLXNwZWNpZmljIHBhY2thZ2VzIHRvIGluc3RhbGwgYXMgcGFydCBvZiB0aGUgaW1hZ2UgYmVpbmcgYnVpbHQuIEJlY2F1c2UgdGhpcyBpcyBhICdtYWNoaW5lLWVzc2VudGlhbCcgdmFyaWFibGUsIHRoZSBsaXN0IG9mIHBhY2thZ2VzIGFyZSBlc3NlbnRpYWwgZm9yIHRoZSBtYWNoaW5lIHRvIGJvb3QuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtODIzMSw3ICs4NDE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHJlY29tbWVuZGVkIG1hY2hpbmUtc3BlY2lmaWMgcGFja2FnZXMgdG8gaW5zdGFsbCBhcyBwYXJ0IG9mCiAgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBiZWluZyBidWlsdC4KICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHByb2Nlc3MgZG9lcyBub3QgZGVwZW5kIG9uIHRoZXNlIHBhY2thZ2VzIGJlaW5nIHByZXNlbnQuCi0gICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGJlY2F1c2UgdGhpcyBpcyBhICJtYWNoaW5lIGVzc2VudGlhbCIgdmFyaWFibGUsIHRoZSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGJlY2F1c2UgdGhpcyBpcyBhICJtYWNoaW5lLWVzc2VudGlhbCIgdmFyaWFibGUsIHRoZSBsaXN0IG9mCiAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGFyZSBlc3NlbnRpYWwgZm9yIHRoZSBtYWNoaW5lIHRvIGJvb3QuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBpbXBhY3Qgb2YgdGhpcyB2YXJpYWJsZSBhZmZlY3RzIGltYWdlcyBiYXNlZCBvbgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtYm9vdDwvZmlsZW5hbWU+LApAQCAtODQyMSw3ICs4NjA3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgSXQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZXItY29uZmlndXJhYmxlLgogICAgICAgICAgICAgICAgICAgICBJdCBpcyBiZXN0IHRvIGp1c3QgcmVmZXJlbmNlIHRoZSB2YXJpYWJsZSB0byBzZWUgd2hpY2ggbWFjaGluZSBmZWF0dXJlcyBhcmUKICAgICAgICAgICAgICAgICAgICAgYmVpbmcgYmFja2ZpbGxlZCBmb3IgYWxsIG1hY2hpbmUgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBiYWNrZmlsbGluZzwvbGluaz4iIHNlY3Rpb24gZm9yCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBCYWNrZmlsbGluZzwvbGluaz4iIHNlY3Rpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTg0MzksNyArODYyNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2hvdWxkIG5vdCBiZSBiYWNrZmlsbGVkIChpLmUuIGFkZGVkIHRvCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9GRUFUVVJFUyc+TUFDSElORV9GRUFUVVJFUzwvbGluaz48L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ncmVmLWZlYXR1cmVzLWJhY2tmaWxsJz5GZWF0dXJlIGJhY2tmaWxsaW5nPC9saW5rPiIgc2VjdGlvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ncmVmLWZlYXR1cmVzLWJhY2tmaWxsJz5GZWF0dXJlIEJhY2tmaWxsaW5nPC9saW5rPiIgc2VjdGlvbiBmb3IKICAgICAgICAgICAgICAgICAgICAgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtODUyOSwxNCArODcxNSwxNCBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTUxQUkVGSVgnPjxnbG9zc3Rlcm0+TUxQUkVGSVg8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIE1MUFJFRklYW2RvY10gPSAiU3BlY2lmaWVzIGEgcHJlZml4IGhhcyBiZWVuIGFkZGVkIHRvIFBOIHRvIGNyZWF0ZSBhIHNwZWNpYWwgdmVyc2lvbiBvZiBhIHJlY2lwZSBvciBwYWNrYWdlLCBzdWNoIGFzIGEgTXVsdGlsaWIgdmVyc2lvbi4iCisgICAgICAgICAgICAgICAgTUxQUkVGSVhbZG9jXSA9ICJTcGVjaWZpZXMgYSBwcmVmaXggaGFzIGJlZW4gYWRkZWQgdG8gUE4gdG8gY3JlYXRlIGEgc3BlY2lhbCB2ZXJzaW9uIG9mIGEgcmVjaXBlIG9yIHBhY2thZ2UgKGkuZS4gYSBNdWx0aWxpYiB2ZXJzaW9uKS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBwcmVmaXggaGFzIGJlZW4gYWRkZWQgdG8KICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz4gdG8gY3JlYXRlIGEgc3BlY2lhbCB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgIG9mIGEgcmVjaXBlIG9yIHBhY2thZ2UsIHN1Y2ggYXMgYSBNdWx0aWxpYiB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICBvZiBhIHJlY2lwZSBvciBwYWNrYWdlIChpLmUuIGEgTXVsdGlsaWIgdmVyc2lvbikuCiAgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBpcyB1c2VkIGluIHBsYWNlcyB3aGVyZSB0aGUgcHJlZml4IG5lZWRzIHRvIGJlCiAgICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIG9yIHJlbW92ZWQgZnJvbSBhIHRoZSBuYW1lIChlLmcuIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlBOJz48ZmlsZW5hbWU+QlBOPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlKS4KQEAgLTg4MjcsNyArOTAxMyw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1OT19SRUNPTU1FTkRBVElPTlMnPjxnbG9zc3Rlcm0+Tk9fUkVDT01NRU5EQVRJT05TPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBOT19SRUNPTU1FTkRBVElPTlNbZG9jXSA9ICJXaGVuIHNldCB0byAnMScsIG5vIHJlY29tbWVuZGVkIHBhY2thZ2VzIHdpbGwgYmUgaW5zdGFsbGVkLiBSZWFsaXplIHRoYXQgc29tZSByZWNvbW1lbmRlZCBwYWNrYWdlcyBtaWdodCBiZSByZXF1aXJlZCBmb3IgY2VydGFpbiBzeXN0ZW0gZnVuY3Rpb25hbGl0eSwgc3VjaCBhcyBrZXJuZWwtbW9kdWxlcy4gSXQgaXMgdXAgdG8gdGhlIHVzZXIgdG8gYWRkIHBhY2thZ2VzIHRvIElNQUdFX0lOU1RBTEwgYXMgbmVlZGVkLiIKKyAgICAgICAgICAgICAgICBOT19SRUNPTU1FTkRBVElPTlNbZG9jXSA9ICJXaGVuIHNldCB0byAnMScsIG5vIHJlY29tbWVuZGVkIHBhY2thZ2VzIHdpbGwgYmUgaW5zdGFsbGVkLiBTb21lIHJlY29tbWVuZGVkIHBhY2thZ2VzIG1pZ2h0IGJlIHJlcXVpcmVkIGZvciBjZXJ0YWluIHN5c3RlbSBmdW5jdGlvbmFsaXR5LCBzdWNoIGFzIGtlcm5lbC1tb2R1bGVzLiBJdCBpcyB1cCB0byB0aGUgdXNlciB0byBhZGQgcGFja2FnZXMgdG8gSU1BR0VfSU5TVEFMTCBhcyBuZWVkZWQuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtOTAwMyw4ICs5MTg5LDggQEAKICAgICAgICAgICAgICAgICAgICAgZm9yIGRldGFpbHMgb24gaG93IHRoaXMgY2xhc3MgYXBwbGllcyB0aGVzZSBhZGRpdGlvbmFsCiAgICAgICAgICAgICAgICAgICAgIHNlZCBjb21tYW5kIGFyZ3VtZW50cy4KICAgICAgICAgICAgICAgICAgICAgRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5jb25maWcuYmJjbGFzczwvZmlsZW5hbWU+IGNsYXNzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1iaW5jb25maWcnPkJpbmFyeSBDb25maWd1cmF0aW9uIFNjcmlwdHMgLSA8ZmlsZW5hbWU+YmluY29uZmlnLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5jb25maWc8L2ZpbGVuYW1lPiBjbGFzcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYmluY29uZmlnJz48ZmlsZW5hbWU+YmluY29uZmlnLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTkxODMsOCArOTM2OSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT4gaW4gdGhlIG91dHB1dCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1lPC9maWxlbmFtZT4gY29tbWFuZC4KICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZ3Bva3ktZGVidWdnaW5nLXZpZXdpbmctdmFyaWFibGUtdmFsdWVzJz5WaWV3aW5nIFZhcmlhYmxlIFZhbHVlczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1kZWJ1Z2dpbmctdmlld2luZy12YXJpYWJsZS12YWx1ZXMnPlZpZXdpbmcgVmFyaWFibGUgVmFsdWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtOTIyMywxMSArOTQxMCwxNyBAQAogICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8KICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRVTkVfUEtHQVJDSCc+PGZpbGVuYW1lPlRVTkVfUEtHQVJDSDwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERfQVJDSDwvZmlsZW5hbWU+IHdoZW4gYnVpbGRpbmcgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0IGFuZCAiJHtTREtfQVJDSH0tJHtTREtQS0dTVUZGSVh9IiB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMRF9BUkNIJz48ZmlsZW5hbWU+QlVJTERfQVJDSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgaG9zdCwgYW5kICIke1NES19BUkNIfS0ke1NES1BLR1NVRkZJWH0iIHdoZW4gYnVpbGRpbmcKICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX0FSQ0gnPjxmaWxlbmFtZT5TREtfQVJDSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91ciByZWNpcGUncyBvdXRwdXQgcGFja2FnZXMgYXJlIGJ1aWx0Ci0gICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHRvIHRoZSB0YXJnZXQgbWFjaGluZSByYXRoZXIgdGhhbiBnZW5lcmFsIGZvcgorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyB0byB0aGUgdGFyZ2V0IG1hY2hpbmUgcmF0aGVyIHRoYW4gZ2VuZXJhbGx5IGZvcgogICAgICAgICAgICAgICAgICAgICB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBtYWNoaW5lLCB5b3Ugc2hvdWxkIHNldAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9BUkNIPC9maWxlbmFtZT4gdG8gdGhlIHZhbHVlIG9mCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FX0FSQ0gnPjxmaWxlbmFtZT5NQUNISU5FX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4KQEAgLTkyOTgsOSArOTQ5MSwxMCBAQAogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5XYXJuaW5nPC90aXRsZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIGl0IGlzIGEgbGVnYWwgb3B0aW9uLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlX3RhcjwvZmlsZW5hbWU+IGNsYXNzIGlzIGJyb2tlbgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGlzIG5vdCBzdXBwb3J0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkbyBub3QgdXNlIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2VfdGFyPC9maWxlbmFtZT4gY2xhc3MgaGFzIGxpbWl0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgZHVlIHRvIG5vIHN1cHBvcnQgZm9yIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBieSB0aGF0IGJhY2tlbmQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGVyZWZvcmUsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvIG5vdCB1c2UgaXQuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB1c2VzIG9ubHkgdGhlIGZpcnN0IGFyZ3VtZW50IGluIHRoZSBsaXN0CiAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBwYWNrYWdlIG1hbmFnZXIgd2hlbiBjcmVhdGluZyB5b3VyIGltYWdlIG9yIFNESy4KQEAgLTk0NzcsMjAgKzk2NzEsMjkgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBBQ0tBR0VfRkVFRF9BUkNIUyc+PGdsb3NzdGVybT5QQUNLQUdFX0ZFRURfQVJDSFM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFBBQ0tBR0VfRkVFRF9BUkNIU1tkb2NdID0gIlNwZWNpZmllcyB1c2VyLWRlZmluZWQgcGFja2FnZSBhcmNoaXRlY3R1cmVzIHdoZW4gY29uc3RydWN0aW5nIHBhY2thZ2UgZmVlZCBVUklzLiIKKyAgICAgICAgICAgICAgICBQQUNLQUdFX0ZFRURfQVJDSFNbZG9jXSA9ICJPcHRpb25hbGx5IHNwZWNpZmllcyB1c2VyLWRlZmluZWQgcGFja2FnZSBhcmNoaXRlY3R1cmVzIHdoZW4gY29uc3RydWN0aW5nIHBhY2thZ2UgZmVlZCBVUklzLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+Ci0gICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGFja2FnZSBhcmNoaXRlY3R1cmVzIHVzZWQgYXMgcGFydCBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBmZWVkIFVSSXMgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfQVJDSFM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcwotICAgICAgICAgICAgICAgICAgICBhcHBlbmRlZCB0byB0aGUgZmluYWwgcGFja2FnZSBmZWVkIFVSSSwgd2hpY2ggaXMgY29uc3RydWN0ZWQKLSAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHkgc3BlY2lmaWVzIHRoZSBwYWNrYWdlIGFyY2hpdGVjdHVyZXMgdXNlZCBhcworICAgICAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSBwYWNrYWdlIGZlZWQgVVJJcyBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHVzZWQsIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0FSQ0hTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgYXBwZW5kZWQgdG8gdGhlIGZpbmFsIHBhY2thZ2UgZmVlZCBVUkksIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGlzIGNvbnN0cnVjdGVkIHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9GRUVEX1VSSVMnPjxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfVVJJUzwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBhbmQKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfRkVFRF9CQVNFX1BBVEhTJz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0JBU0VfUEFUSFM8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRV9GRUVEU19BUkNIUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byB3aGl0ZWxpc3Qgc3BlY2lmaWMgcGFja2FnZSBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBuZWVkIHRvIHdoaXRlbGlzdCBzcGVjaWZpYyBhcmNoaXRlY3R1cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSBjb21tb24gY2FzZSwgeW91IGNhbiBvbWl0IHRoaXMgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICBPbWl0dGluZyB0aGUgdmFyaWFibGUgcmVzdWx0cyBpbiBhbGwgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzIGZvciB0aGUgY3VycmVudCBtYWNoaW5lIGJlaW5nIGluY2x1ZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHJlbW90ZSBwYWNrYWdlIGZlZWRzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC05Nzk4LDcgKzEwMDAxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCA8ZmlsZW5hbWU+LS13aXRoLWNyb2NvPC9maWxlbmFtZT4gaXMKICAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYXJndW1lbnQgbGlzdCBhbmQKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmNyb2NvPC9maWxlbmFtZT4gaXMgYWRkZWQgdG8KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz5ERVBFTkRTPC9saW5rPjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGZlYXR1cmUgaXMgZGlzYWJsZWQgc2F5IHRocm91Z2gKICAgICAgICAgICAgICAgICAgICAgYSA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSBpbiBhbm90aGVyIGxheWVyLCB0aGVuCiAgICAgICAgICAgICAgICAgICAgIHRoZSBzZWNvbmQgYXJndW1lbnQgPGZpbGVuYW1lPi0td2l0aG91dC1jcm9jbzwvZmlsZW5hbWU+IGlzCkBAIC05ODcwLDggKzEwMDczLDggQEAKICAgICAgICAgICAgICAgICAgICAgYW5kCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWNtYWtlJz48ZmlsZW5hbWU+Y21ha2U8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdXNlIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHX0NPTkZBUkdTPC9maWxlbmFtZT4gdG8gcGFzcwotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRUNPTkZJRyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB0byA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT4gb3B0aW9ucyB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuCiAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPiBidXQgbm90IGEgY2xhc3MgdGhhdApAQCAtOTg3OSwxMiArMTAwODIsNiBAQAogICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byB1c2UKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2ZpbGVuYW1lPiBhcHByb3ByaWF0ZWx5LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRUNPTkZJRyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCkBAIC05OTExLDEyICsxMDEwOCwxMiBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRVMnPjxnbG9zc3Rlcm0+UEFDS0FHRVM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFBBQ0tBR0VTW2RvY10gPSAiVGhlIGxpc3Qgb2YgcGFja2FnZXMgdG8gYmUgY3JlYXRlZCBmcm9tIHRoZSByZWNpcGUuIgorICAgICAgICAgICAgICAgIFBBQ0tBR0VTW2RvY10gPSAiVGhlIGxpc3Qgb2YgcGFja2FnZXMgdGhlIHJlY2lwZSBjcmVhdGVzLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBsaXN0IG9mIHBhY2thZ2VzIHRvIGJlIGNyZWF0ZWQgZnJvbSB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBUaGUgbGlzdCBvZiBwYWNrYWdlcyB0aGUgcmVjaXBlIGNyZWF0ZXMuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJHtQTn0tZGJnICR7UE59LXN0YXRpY2RldiAke1BOfS1kZXYgJHtQTn0tZG9jICR7UE59LWxvY2FsZSAke1BBQ0tBR0VfQkVGT1JFX1BOfSAke1BOfQpAQCAtMTAwNjYsOCArMTAyNjMsOCBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNwZWVkaW5nIHVwIGJ1aWxkcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3BlZWRpbmctdXAtdGhlLWJ1aWxkJz5TcGVlZGluZyBVcCB0aGUgQnVpbGQ8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc3BlZWRpbmctdXAtYS1idWlsZCc+U3BlZWRpbmcgVXAgYSBCdWlsZDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xMDMwOCwxMCArMTA1MDUsMTQgQEAKICAgICAgJHtTVEFHSU5HX0RJUl9IT1NUfS9wa2dkYXRhCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGVzIG9mIGhvdyB0aGlzIGRhdGEgaXMgdXNlZCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndmlld2luZy1wYWNrYWdlLWluZm9ybWF0aW9uLXdpdGgtb2UtcGtnZGF0YS11dGlsJz5WaWV3aW5nIFBhY2thZ2UgSW5mb3JtYXRpb24gd2l0aCA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsPC9maWxlbmFtZT48L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNhdXRvbWF0aWNhbGx5LWFkZGVkLXJ1bnRpbWUtZGVwZW5kZW5jaWVzJz5BdXRvbWF0aWNhbGx5IEFkZGVkIFJ1bnRpbWUgRGVwZW5kZW5jaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbAorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN2aWV3aW5nLXBhY2thZ2UtaW5mb3JtYXRpb24td2l0aC1vZS1wa2dkYXRhLXV0aWwnPlZpZXdpbmcgUGFja2FnZSBJbmZvcm1hdGlvbiB3aXRoIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWw8L2ZpbGVuYW1lPjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHNoYXJlZCwgZ2xvYmFsLXN0YXRlIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgc2VlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUl9IT1NUJz48ZmlsZW5hbWU+U1RBR0lOR19ESVJfSE9TVDwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xMDQxNCw3ICsxMDYxNSw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QTic+PGdsb3NzdGVybT5QTjwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgUE5bZG9jXSA9ICJQTiByZWZlcnMgdG8gYSByZWNpcGUgbmFtZSBpbiB0aGUgY29udGV4dCBvZiBhIGZpbGUgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhcyBpbnB1dCB0byBjcmVhdGUgYSBwYWNrYWdlLiBJdCByZWZlcnMgdG8gYSBwYWNrYWdlIG5hbWUgaW4gdGhlIGNvbnRleHQgb2YgYSBmaWxlIGNyZWF0ZWQgb3IgcHJvZHVjZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIgorICAgICAgICAgICAgICAgIFBOW2RvY10gPSAiUE4gcmVmZXJzIHRvIGEgcmVjaXBlIG5hbWUgaW4gdGhlIGNvbnRleHQgb2YgYSBmaWxlIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXMgaW5wdXQgdG8gY3JlYXRlIGEgcGFja2FnZS4KICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTEwNTU1LDExICsxMDc1NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4gdG8ga25vdyB3aGVuIHRvIHJlYnVpbGQgYQogICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZSB0YXNrCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2NoZWNrc3Vtcyc+aW5wdXQgY2hlY2tzdW1zPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjb3ZlcnZpZXctY2hlY2tzdW1zJz5pbnB1dCBjaGVja3N1bXM8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgYWxvbmcgd2l0aCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1idWlsZC10bXAtc3RhbXBzJz5zdGFtcDwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc2hhcmVkLXN0YXRlLWNhY2hlJz5zaGFyZWQgc3RhdGUgY2FjaGU8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+c2hhcmVkIHN0YXRlIGNhY2hlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIG1lY2hhbmlzbXMuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+IHZhcmlhYmxlIHByaW1hcmlseSBiZWNvbWVzCkBAIC0xMDU5OCwyNiArMTA3OTksNDAgQEAKICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+Ci0gICAgICAgICAgICAgICAgICAgIElmIG11bHRpcGxlIHJlY2lwZXMgcHJvdmlkZSBhbiBpdGVtLCB0aGlzIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgIGRldGVybWluZXMgd2hpY2ggcmVjaXBlIHNob3VsZCBiZSBnaXZlbiBwcmVmZXJlbmNlLgotICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGFsd2F5cyBzdWZmaXggdGhlIHZhcmlhYmxlIHdpdGggdGhlIG5hbWUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGl0ZW0sIGFuZCB5b3Ugc2hvdWxkIHNldCBpdCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlY2lwZSB0byB3aGljaCB5b3Ugd2FudCB0byBnaXZlIHByZWNlZGVuY2UuCi0gICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXM6CisgICAgICAgICAgICAgICAgICAgIElmIG11bHRpcGxlIHJlY2lwZXMgcHJvdmlkZSB0aGUgc2FtZSBpdGVtLCB0aGlzIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGRldGVybWluZXMgd2hpY2ggcmVjaXBlIGlzIHByZWZlcnJlZCBhbmQgdGh1cyBwcm92aWRlcworICAgICAgICAgICAgICAgICAgICB0aGUgaXRlbSAoaS5lLiB0aGUgcHJlZmVycmVkIHByb3ZpZGVyKS4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBhbHdheXMgc3VmZml4IHRoaXMgdmFyaWFibGUgd2l0aCB0aGUgbmFtZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgaXRlbS4KKyAgICAgICAgICAgICAgICAgICAgQW5kLCB5b3Ugc2hvdWxkIGRlZmluZSB0aGUgdmFyaWFibGUgdXNpbmcgdGhlIHByZWZlcnJlZAorICAgICAgICAgICAgICAgICAgICByZWNpcGUncyBuYW1lCisgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYSBjb21tb24gZXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCBtdWx0aXBsZSByZWNpcGVzIGFyZSBwcm92aWRpbmcKKyAgICAgICAgICAgICAgICAgICAgInZpcnR1YWwva2VybmVsIi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcworICAgICAgICAgICAgICAgICAgICBzZXQgd2l0aCB0aGUgbmFtZSAoPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4pIG9mIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgeW91IHByZWZlciB0byBwcm92aWRlICJ2aXJ0dWFsL2tlcm5lbCIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgbW9yZSBleGFtcGxlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyID0gInhzZXJ2ZXIteGY4NiIKICAgICAgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliZ2wgPz0gIm1lc2EiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOgotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YS12aXJ0dWFsLXByb3ZpZGVycyc+TWV0YWRhdGEgKFZpcnR1YWwgUHJvdmlkZXJzKTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhLXZpcnR1YWwtcHJvdmlkZXJzJz5Vc2luZyBWaXJ0dWFsIFByb3ZpZGVyczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc2V0IDxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGEgPGZpbGVuYW1lPnZpcnR1YWwvKjwvZmlsZW5hbWU+IGl0ZW0sIHRoZW4gYW55CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIGEgPGZpbGVuYW1lPnZpcnR1YWwvKjwvZmlsZW5hbWU+IGl0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggPGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+LCB0aGVuIGFueQogICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUk9WSURFUyc+PGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGl0ZW0gdGhhdCBpcyBub3Qgc2VsZWN0ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXRlbSBidXQgaXMgbm90IHNlbGVjdGVkIChkZWZpbmVkKSBieQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+IGlzIHByZXZlbnRlZAogICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBidWlsZGluZywgd2hpY2ggaXMgdXN1YWxseSBkZXNpcmFibGUgc2luY2UgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgbWVjaGFuaXNtIGlzIGRlc2lnbmVkIHRvIHNlbGVjdCBiZXR3ZWVuIG11dHVhbGx5CkBAIC0xMDY5Niw4ICsxMDkxMSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPl9mb3JjZXZhcmlhYmxlPC9maWxlbmFtZT4gb3ZlcnJpZGUgaXMKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBoYW5kbGVkIHNwZWNpYWxseS4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3ZlcnJpZGUgb25seSB3b3JrcyBiZWNhdXNlIHRoZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItT1ZFUlJJREVTJz48ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcyAiZm9yY2V2YXJpYWJsZSIuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT4gaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb3JjZXZhcmlhYmxlIi4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0xMDc1NCw3ICsxMDk2OSw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QUklPUklUWSc+PGdsb3NzdGVybT5QUklPUklUWTwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgUFJJT1JJVFlbZG9jXSA9ICJJbmRpY2F0ZXMgdGhlIGltcG9ydGFuY2Ugb2YgYSBwYWNrYWdlLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgJ29wdGlvbmFsJy4gIE90aGVyIHN0YW5kYXJkIHZhbHVlcyBhcmUgJ3JlcXVpcmVkJywgJ3N0YW5kYXJkJyBhbmQgJ2V4dHJhJy4iCisgICAgICAgICAgICAgICAgUFJJT1JJVFlbZG9jXSA9ICJJbmRpY2F0ZXMgdGhlIGltcG9ydGFuY2Ugb2YgYSBwYWNrYWdlLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgJ29wdGlvbmFsJy4gIE90aGVyIHN0YW5kYXJkIHZhbHVlcyBhcmUgJ3JlcXVpcmVkJywgJ3N0YW5kYXJkJywgYW5kICdleHRyYScuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTA4MTQsOCArMTEwMjksOCBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdhdXRvbWF0aWNhbGx5LWFkZGVkLXJ1bnRpbWUtZGVwZW5kZW5jaWVzJz5BdXRvbWF0aWNhbGx5IEFkZGVkIFJ1bnRpbWUgRGVwZW5kZW5jaWVzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTA4NjAsOCArMTEwNzUsNyBAQAogICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHRoYXQgcHJvdmlkZSB0aGUgZnVuY3Rpb25hbGl0eSBpbiBxdWVzdGlvbiBsaXN0IHRoZQogICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHRhcmdldCBpbiA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgUmVjaXBlcyB0aGF0IGRlcGVuZCBvbiB0aGUgZnVuY3Rpb25hbGl0eSBpbiBxdWVzdGlvbiBjYW4KLSAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGUgdmlydHVhbCB0YXJnZXQgaW4KLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgdGhlIHZpcnR1YWwgdGFyZ2V0IGluIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgdG8gbGVhdmUgdGhlIGNob2ljZSBvZiBwcm92aWRlciBvcGVuLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTEwMDEsOCArMTEyMTUsNyBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHRoYXQgaW5oZXJpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGlzdHV0aWxzJz48ZmlsZW5hbWU+ZGlzdHV0aWxzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgdGhhdCBpbmhlcml0IHRoZSA8ZmlsZW5hbWU+ZGlzdHV0aWxzPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgY2xhc3MgZHVyaW5nIGNyb3NzLWJ1aWxkcyBhbHNvIHVzZSB0aGlzIHZhcmlhYmxlIHRvCiAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZSB0aGUgaGVhZGVycyBhbmQgbGlicmFyaWVzIG9mIHRoZSBhcHByb3ByaWF0ZSBQeXRob24KICAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgZXh0ZW5zaW9uIGlzIHRhcmdldGluZy4KQEAgLTExMTMxLDggKzExMzQ0LDggQEAKICAgICAgICAgICAgICAgICAgICAgVGhlcmVmb3JlLCBtb3N0IHJlY2lwZXMgZG8gbm90IG5lZWQgdG8gc2V0CiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2F1dG9tYXRpY2FsbHktYWRkZWQtcnVudGltZS1kZXBlbmRlbmNpZXMnPkF1dG9tYXRpY2FsbHkgQWRkZWQgUnVudGltZSBEZXBlbmRlbmNpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTE1NzEsOSArMTE3ODQsOSBAQAogICAgICAgICAgICAgICAgICAgICBJbiB0aGUgZXhhbXBsZSwgdGhlIHBhY2thZ2UgbmFtZQogICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPiR7PGxpbmsgbGlua2VuZD0ndmFyLVBOJz5QTjwvbGluaz59LWRldjwvZmlsZW5hbWU+KQogICAgICAgICAgICAgICAgICAgICBtdXN0IGFwcGVhciBhcyBpdCB3b3VsZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFUyc+UEFDS0FHRVM8L2xpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlIGJlZm9yZSBhbnkgcmVuYW1pbmcgb2YgdGhlIG91dHB1dCBwYWNrYWdlIGJ5Ci0gICAgICAgICAgICAgICAgICAgIGNsYXNzZXMgc3VjaCBhcyA8ZmlsZW5hbWU+ZGViaWFuLmJiY2xhc3M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4gbmFtZXNwYWNlIGJlZm9yZSBhbnkgcmVuYW1pbmcKKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIG91dHB1dCBwYWNrYWdlIGJ5IGNsYXNzZXMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGViaWFuLmJiY2xhc3M8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTExODA3LDExICsxMjAyMCwxMSBAQAogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBzZXQgdXAgYW5kIHVzZWQgYnkgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkayc+PGZpbGVuYW1lPnBvcHVsYXRlX3Nka19iYXNlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHRvIHdoaWNoIHRoZSBTREsgaXMgZGVwbG95ZWQuCisgICAgICAgICAgICAgICAgICAgIGNsYXNzIHRvIHdoaWNoIHRoZSBTREsgaXMgZGVwbG95ZWQuCiAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPiBjbGFzcyBkZWZpbmVzCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TREtfREVQTE9ZPC9maWxlbmFtZT4gYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTREtfREVQTE9ZID0gIiR7PGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+VE1QRElSPC9saW5rPn0vZGVwbG95L3NkayIKKyAgICAgU0RLX0RFUExPWSA9ICIke1RNUERJUn0vZGVwbG95L3NkayIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0xMTgzMCw3ICsxMjA0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkay0qJz48ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgY2xhc3MgZGVmaW5lcyB0aGUgdmFyaWFibGUgYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTREtfRElSID0gIiR7PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+fS9zZGsiCisgICAgIFNES19ESVIgPSAiJHtXT1JLRElSfS9zZGsiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNES19ESVI8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMgYQpAQCAtMTE4NzYsNyArMTIwODksNyBAQAogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgVGhlIG1hbmlmZXN0IGZpbGUgZm9yIHRoZSBob3N0IHBhcnQgb2YgdGhlIFNESy4KICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGxpc3RzIGFsbCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIHRoYXQgbWFrZSB1cAotICAgICAgICAgICAgICAgICAgICB0aGUgaG9zdCBwYXJ0IG9mIFNESy4KKyAgICAgICAgICAgICAgICAgICAgdGhlIGhvc3QgcGFydCBvZiB0aGUgU0RLLgogICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZSBjb250YWlucyBwYWNrYWdlIGluZm9ybWF0aW9uIG9uIGEgbGluZS1wZXItcGFja2FnZQogICAgICAgICAgICAgICAgICAgICBiYXNpcyBhcyBmb2xsb3dzOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0xMjA2MCwxMyArMTIyNzMsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcG9wdWxhdGUtc2RrLSonPjxmaWxlbmFtZT5wb3B1bGF0ZV9zZGtfYmFzZTwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBjbGFzcyBkZWZpbmVzIHRoZSB2YXJpYWJsZSBhcyBmb2xsb3dzOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFNES19PVVRQVVQgPSAiJHs8bGluayBsaW5rZW5kPSd2YXItU0RLX0RJUic+U0RLX0RJUjwvbGluaz59L2ltYWdlIgorICAgICBTREtfRElSID0gIiR7V09SS0RJUn0vc2RrIgorICAgICBTREtfT1VUUFVUID0gIiR7U0RLX0RJUn0vaW1hZ2UiCisgICAgIFNES19ERVBMT1kgPSAiJHtERVBMT1lfRElSfS9zZGsiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNES19PVVRQVVQ8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhcyBpdCBpcyBwYXJ0IG9mCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+IGJ5IHdheSBvZgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNES19ESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYnkgd2F5IG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX0RJUic+PGZpbGVuYW1lPlNES19ESVI8L2ZpbGVuYW1lPjwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgb3V0cHV0IGRpcmVjdG9yeSBpcwogICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES19ERVBMT1knPjxmaWxlbmFtZT5TREtfREVQTE9ZPC9maWxlbmFtZT48L2xpbms+LgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CkBAIC0xMjA5NiwxMyArMTIzMTIsMTMgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES19QT1NUUFJPQ0VTU19DT01NQU5EJz48Z2xvc3N0ZXJtPlNES19QT1NUUFJPQ0VTU19DT01NQU5EPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBTREtfUE9TVFBST0NFU1NfQ09NTUFORFtkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgU0RLLiIKKyAgICAgICAgICAgICAgICBTREtfUE9TVFBST0NFU1NfQ09NTUFORFtkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoZSBTREsuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZQotICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBjcmVhdGVkIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgU0RLLgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgZnVuY3Rpb25zIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFNES19QT1NUUFJPQ0VTU19DT01NQU5EICs9ICI8cmVwbGFjZWFibGU+ZnVuY3Rpb248L3JlcGxhY2VhYmxlPjsgLi4uICIKQEAgLTEyNDQzLDEyICsxMjY1OSwxMyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0VSSUFMX0NPTlNPTEUnPjxnbG9zc3Rlcm0+U0VSSUFMX0NPTlNPTEU8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNFUklBTF9DT05TT0xFW2RvY10gPSAiVGhlIHNwZWVkIGFuZCBkZXZpY2UgZm9yIHRoZSBzZXJpYWwgcG9ydCB1c2VkIHRvIGF0dGFjaCB0aGUgc2VyaWFsIGNvbnNvbGUuIFRoaXMgdmFyaWFibGUgaXMgZ2l2ZW4gdG8gdGhlIGtlcm5lbCBhcyB0aGUgJ2NvbnNvbGUnIHBhcmFtZXRlci4gQWZ0ZXIgYm9vdGluZyBvY2N1cnMsIGdldHR5IGlzIHN0YXJ0ZWQgb24gdGhhdCBwb3J0IHNvIHJlbW90ZSBsb2dpbiBpcyBwb3NzaWJsZS4iCisgICAgICAgICAgICAgICAgU0VSSUFMX0NPTlNPTEVbZG9jXSA9ICJEZWZpbmVzIHRoZSBzZXJpYWwgY29uc29sZXMgKFRUWXMpIHRvIGVuYWJsZSB1c2luZyBnZXR0eS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGEgc2VyaWFsIGNvbnNvbGUgKFRUWSkgdG8gZW5hYmxlIHVzaW5nIGdldHR5LgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGEgc2VyaWFsIGNvbnNvbGUgKFRUWSkgdG8gZW5hYmxlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dldHR5XyhVbml4KSc+Z2V0dHk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBiYXVkIHJhdGUgZm9sbG93ZWQgYnkKICAgICAgICAgICAgICAgICAgICAgdGhlIFRUWSBkZXZpY2UgbmFtZSBzZXBhcmF0ZWQgYnkgYSBzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgVFRZIGRldmljZToKQEAgLTEyNDczLDcgKzEyNjkwLDggQEAKICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+Ci0gICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIHNlcmlhbCBjb25zb2xlcyAoVFRZcykgdG8gZW5hYmxlIHVzaW5nIGdldHR5LgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGEgc2VyaWFsIGNvbnNvbGUgKFRUWSkgdG8gZW5hYmxlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dldHR5XyhVbml4KSc+Z2V0dHk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBiYXVkIHJhdGUgZm9sbG93ZWQgYnkKICAgICAgICAgICAgICAgICAgICAgdGhlIFRUWSBkZXZpY2UgbmFtZSBzZXBhcmF0ZWQgYnkgYSBzZW1pY29sb24uCiAgICAgICAgICAgICAgICAgICAgIFVzZSBzcGFjZXMgdG8gc2VwYXJhdGUgbXVsdGlwbGUgZGV2aWNlczoKQEAgLTEyNTI3LDggKzEyNzQ1LDI1IEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgPGZpbGVuYW1lPmludG9uZTwvZmlsZW5hbWU+IGRlcGVuZHMgb24KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1wbGF5ZXIyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCA8ZmlsZW5hbWU+aW50b25lPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kcyBvbiA8ZmlsZW5hbWU+bXBsYXllcjI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIHNwZWNpYWwgdG9rZW4gPGZpbGVuYW1lPiIqIjwvZmlsZW5hbWU+IG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBsZWZ0LWhhbmQgc2lkZSBvZiB0aGUgZGVwZW5kZW5jeSB0byBtYXRjaCBhbGwKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBleGNlcHQgdGhlIG9uZSBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICBTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTICs9ICIqLT5xdWlsdC1uYXRpdmUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIGFsbCByZWNpcGVzIGV4Y2VwdAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cXVpbHQtbmF0aXZlPC9maWxlbmFtZT4gaWdub3JlIHRhc2sKKyAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlcyBmcm9tIHRoZSA8ZmlsZW5hbWU+cXVpbHQtbmF0aXZlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHdoZW4gZGV0ZXJtaW5pbmcgdGhlaXIgdGFzayBzaWduYXR1cmVzLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTI3ODksNiArMTMwMjQsNDggQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNQTF9CSU5BUlknPjxnbG9zc3Rlcm0+U1BMX0JJTkFSWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1BMX0JJTkFSWVtkb2NdID0gIlRoZSBmaWxlIHR5cGUgb2YgdGhlIFNlY29uZGFyeSBQcm9ncmFtIExvYWRlciAoU1BMKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZSB0eXBlIGZvciB0aGUgU2Vjb25kYXJ5IFByb2dyYW0gTG9hZGVyIChTUEwpLgorICAgICAgICAgICAgICAgICAgICBTb21lIGRldmljZXMgdXNlIGFuIFNQTCBmcm9tIHdoaWNoIHRvIGJvb3QgKGUuZy4gdGhlCisgICAgICAgICAgICAgICAgICAgIEJlYWdsZUJvbmUgZGV2ZWxvcG1lbnQgYm9hcmQpLgorICAgICAgICAgICAgICAgICAgICBGb3Igc3VjaCBjYXNlcywgeW91IGNhbiBkZWNsYXJlIHRoZSBmaWxlIHR5cGUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIFNQTCBiaW5hcnkgaW4gdGhlIDxmaWxlbmFtZT51LWJvb3QuaW5jPC9maWxlbmFtZT4gaW5jbHVkZQorICAgICAgICAgICAgICAgICAgICBmaWxlLCB3aGljaCBpcyB1c2VkIGluIHRoZSBVLUJvb3QgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgU1BMIGZpbGUgdHlwZSBpcyBzZXQgdG8gIm51bGwiIGJ5IGRlZmF1bHQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51LWJvb3QuaW5jPC9maWxlbmFtZT4gZmlsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgU29tZSB2ZXJzaW9ucyBvZiB1LWJvb3QgYnVpbGQgYW4gU1BMIChTZWNvbmQgUHJvZ3JhbSBMb2FkZXIpIGltYWdlIHRoYXQKKyAgICAgIyBzaG91bGQgYmUgcGFja2FnZWQgYWxvbmcgd2l0aCB0aGUgdS1ib290IGJpbmFyeSBhcyB3ZWxsIGFzIHBsYWNlZCBpbiB0aGUKKyAgICAgIyBkZXBsb3kgZGlyZWN0b3J5LiAgRm9yIHRob3NlIHZlcnNpb25zIHRoZXkgY2FuIHNldCB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcworICAgICAjIHRvIGFsbG93IHBhY2thZ2luZyB0aGUgU1BMLgorICAgICBTUExfQklOQVJZID89ICIiCisgICAgIFNQTF9CSU5BUllOQU1FID89ICIke0Bvcy5wYXRoLmJhc2VuYW1lKGQuZ2V0VmFyKCJTUExfQklOQVJZIikpfSIKKyAgICAgU1BMX0lNQUdFID89ICIke1NQTF9CSU5BUllOQU1FfS0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9IgorICAgICBTUExfU1lNTElOSyA/PSAiJHtTUExfQklOQVJZTkFNRX0tJHtNQUNISU5FfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNQTF9CSU5BUlk8L2ZpbGVuYW1lPiB2YXJpYWJsZSBoZWxwcyBmb3JtCisgICAgICAgICAgICAgICAgICAgIHZhcmlvdXMgPGZpbGVuYW1lPlNQTF8qPC9maWxlbmFtZT4gdmFyaWFibGVzIHVzZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgQmVhZ2xlQm9uZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZXhhbXBsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIG5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZQorICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TUkNfVVJJJz48Z2xvc3N0ZXJtPlNSQ19VUkk8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgogICAgICAgICAgICAgICAgIFNSQ19VUklbZG9jXSA9ICJUaGUgbGlzdCBvZiBzb3VyY2UgZmlsZXMgLSBsb2NhbCBvciByZW1vdGUuIFRoaXMgdmFyaWFibGUgdGVsbHMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2hhdCBiaXRzIHRvIHB1bGwgaW4gZm9yIHRoZSBidWlsZCBhbmQgaG93IHRvIHB1bGwgdGhlbSBpbi4iCkBAIC0xMjgyMyw3ICsxMzEwMCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmV0Y2hlcyBmaWxlcywgd2hpY2ggYXJlIHVzdWFsbHkgZmlsZXMgc2hpcHBlZCB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBsb2NhbCBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIGxvY2FsIG1hY2hpbmUgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhdGNoaW5nLWRldi1lbnZpcm9ubWVudCc+cGF0Y2g8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCkBAIC0xMjk1MiwxNCArMTMyMzEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnN1YmRpcjwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBQbGFjZXMgdGhlIGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgZXh0cmFjdHMgaXRzIGNvbnRlbnRzKSBpbnRvIHRoZSBzcGVjaWZpZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgPGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3J5IG9mIDxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSBsb2NhbCAoPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaGVyIGlzIHVzZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5sb2NhbGRpcjwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBQbGFjZXMgdGhlIGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgZXh0cmFjdHMgaXRzIGNvbnRlbnRzKSBpbnRvIHRoZSBzcGVjaWZpZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgPGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgQ1ZTIGZldGNoZXIgaXMgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIENWUyBmZXRjaGVyIGlzIHVzZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5zdWJwYXRoPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGltaXRzIHRoZSBjaGVja291dCB0byBhIHNwZWNpZmljIHN1YnBhdGggb2YgdGhlCkBAIC0xMzA0NiwxMyArMTMzMjUsMTMgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNSQ1JFVic+PGdsb3NzdGVybT5TUkNSRVY8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNSQ1JFVltkb2NdID0gIlRoZSByZXZpc2lvbiBvZiB0aGUgc291cmNlIGNvZGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4gVGhpcyB2YXJpYWJsZSBhcHBsaWVzIHRvIFN1YnZlcnNpb24sIEdpdCwgTWVyY3VyaWFsIGFuZCBCYXphYXIgb25seS4iCisgICAgICAgICAgICAgICAgU1JDUkVWW2RvY10gPSAiVGhlIHJldmlzaW9uIG9mIHRoZSBzb3VyY2UgY29kZSB1c2VkIHRvIGJ1aWxkIHRoZSBwYWNrYWdlLiBUaGlzIHZhcmlhYmxlIGFwcGxpZXMgdG8gU3VidmVyc2lvbiwgR2l0LCBNZXJjdXJpYWwsIGFuZCBCYXphYXIgb25seS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBUaGUgcmV2aXNpb24gb2YgdGhlIHNvdXJjZSBjb2RlIHVzZWQgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYXBwbGllcyB0byBTdWJ2ZXJzaW9uLCBHaXQsIE1lcmN1cmlhbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhcHBsaWVzIHRvIFN1YnZlcnNpb24sIEdpdCwgTWVyY3VyaWFsLCBhbmQKICAgICAgICAgICAgICAgICAgICAgQmF6YWFyIG9ubHkuCiAgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byBidWlsZCBhIGZpeGVkIHJldmlzaW9uIGFuZCB5b3UKICAgICAgICAgICAgICAgICAgICAgd2FudCB0byBhdm9pZCBwZXJmb3JtaW5nIGEgcXVlcnkgb24gdGhlIHJlbW90ZSByZXBvc2l0b3J5CkBAIC0xMzA4OCw3ICsxMzM2Nyw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TU1RBVEVfTUlSUk9SX0FMTE9XX05FVFdPUksnPjxnbG9zc3Rlcm0+U1NUQVRFX01JUlJPUl9BTExPV19ORVRXT1JLPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBTU1RBVEVfTUlSUk9SX0FMTE9XX05FVFdPUktbZG9jXSA9ICJJZiBzZXQgdG8gIjEiLCBhbGxvd3MgZmV0Y2hlcyBmcm9tIG1pcnJvcnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIFNTVEFURV9NSVJST1JTIHRvIHdvcmsgZXZlbiB3aGVuIGZldGNoaW5nIGZyb20gdGhlIG5ldHdvcmsgaGFzIGJlZW4gZGlzYWJsZWQgYnkgc2V0dGluZyBCQl9OT19ORVRXT1JLIHRvICIxIi4iCisgICAgICAgICAgICAgICAgU1NUQVRFX01JUlJPUl9BTExPV19ORVRXT1JLW2RvY10gPSAiSWYgc2V0IHRvICIxIiwgYWxsb3dzIGZldGNoZXMgZnJvbSBtaXJyb3JzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiBTU1RBVEVfTUlSUk9SUyB0byB3b3JrIGV2ZW4gd2hlbiBmZXRjaGluZyBmcm9tIHRoZSBuZXR3b3JrIGlzIGRpc2FibGVkIGJ5IHNldHRpbmcgQkJfTk9fTkVUV09SSyB0byAiMSIuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTMwOTYsNyArMTMzNzUsNyBAQAogICAgICAgICAgICAgICAgICAgICBJZiBzZXQgdG8gIjEiLCBhbGxvd3MgZmV0Y2hlcyBmcm9tCiAgICAgICAgICAgICAgICAgICAgIG1pcnJvcnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHRvIHdvcmsgZXZlbiB3aGVuIGZldGNoaW5nIGZyb20gdGhlIG5ldHdvcmsgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgdG8gd29yayBldmVuIHdoZW4gZmV0Y2hpbmcgZnJvbSB0aGUgbmV0d29yayBpcwogICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCBieSBzZXR0aW5nIDxmaWxlbmFtZT5CQl9OT19ORVRXT1JLPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgdG8gIjEiLgogICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUKQEAgLTEzMzAxLDI3ICsxMzU4MCwyNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1RBR0lOR19ESVInPjxnbG9zc3Rlcm0+U1RBR0lOR19ESVI8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNUQUdJTkdfRElSW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSB0b3AtbGV2ZWwgc3lzcm9vdHMgZGlyZWN0b3J5IChpLmUuICR7VE1QRElSfS9zeXNyb290cykuIgorICAgICAgICAgICAgICAgIFNUQUdJTkdfRElSW2RvY10gPSAiSGVscHMgY29uc3RydWN0IHRoZSByZWNpcGUtc3lzcm9vdHMgZGlyZWN0b3J5LCB3aGljaCBpcyB1c2VkIGR1cmluZyBwYWNrYWdpbmcuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSB0b3AtbGV2ZWwgc3lzcm9vdHMgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgIChpLmUuCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59L3N5c3Jvb3RzPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBIZWxwcyBjb25zdHJ1Y3QgdGhlIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdHM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIHdoaWNoIGlzIHVzZWQgZHVyaW5nIHBhY2thZ2luZy4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQUdJTkdfRElSPC9maWxlbmFtZT4gY29udGFpbnMgdGhlIGRpcmVjdG9yaWVzCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIHN0YWdlZCBpbnRvIHRoZSBzeXNyb290IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHN0YWdpbmcgZm9yIHJlY2lwZS1zcGVjaWZpYworICAgICAgICAgICAgICAgICAgICBzeXNyb290cyBvY2N1cnMsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHRhc2suCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNZU1JPT1RfRElSUyc+PGZpbGVuYW1lPlNZU1JPT1RfRElSUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIHRhc2ssIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXNoYXJpbmctZmlsZXMtYmV0d2Vlbi1yZWNpcGVzJz5TaGFyaW5nIEZpbGVzIEJldHdlZW4gUmVjaXBlczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAotICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwsIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNjb25maWd1cmF0aW9uLWNvbXBpbGF0aW9uLWFuZC1zdGFnaW5nLWRldi1lbnZpcm9ubWVudCc+Q29uZmlndXJhdGlvbiwgQ29tcGlsYXRpb24sIGFuZCBTdGFnaW5nPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCwKKyAgICAgICAgICAgICAgICAgICAgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1lTUk9PVF9ESVJTJz48ZmlsZW5hbWU+U1lTUk9PVF9ESVJTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgc2hvdWxkIG5ldmVyIHdyaXRlIGZpbGVzIGRpcmVjdGx5IHVuZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlNUQUdJTkdfRElSPC9maWxlbmFtZT4gZGlyZWN0b3J5IGJlY2F1c2UKQEAgLTEzMzQ2LDExICsxMzYyNSwxMiBAQAogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBzeXNyb290IGRpcmVjdG9yeSBmb3IgdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICB0aGF0IHRoZSBjb21wb25lbnQgaXMgYnVpbHQgdG8gcnVuIG9uICh0aGUgc3lzdGVtIHRoYXQgaG9zdHMKLSAgICAgICAgICAgICAgICAgICAgdGhlIGNvbXBvbmVudCkuCi0gICAgICAgICAgICAgICAgICAgIEZvciBtb3N0IHJlY2lwZXMsIHRoaXMgc3lzcm9vdCBpcyB0aGUgb25lIHRoYXQgdGhlIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgIG9uIHdoaWNoIHRoZSBjb21wb25lbnQgaXMgYnVpbHQgdG8gcnVuICh0aGUgc3lzdGVtIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgaG9zdHMgdGhlIGNvbXBvbmVudCkuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3N0IHJlY2lwZXMsIHRoaXMgc3lzcm9vdCBpcyB0aGUgb25lIGluIHdoaWNoIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlJ3MKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHRhc2sgY29waWVzIGZpbGVzIGludG8uCisgICAgICAgICAgICAgICAgICAgIHRhc2sgY29waWVzIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25zIGluY2x1ZGUgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPiByZWNpcGVzLAogICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPiB0YXNrCiAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgdXNlcwpAQCAtMTMzNTksMTcgKzEzNjM5LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFHSU5HX0RJUl9IT1NUPC9maWxlbmFtZT4gY2FuIGhhdmUgdGhlCiAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyB2YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Rm9yIHJlY2lwZXMgYnVpbGRpbmcgZm9yIHRoZSB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLCB0aGUgdmFsdWUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgcmVjaXBlcyBidWlsZGluZyBmb3IgdGhlIHRhcmdldCBtYWNoaW5lLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkezxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUic+U1RBR0lOR19ESVI8L2xpbms+fS8kezxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz5NQUNISU5FPC9saW5rPn0iLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZvciBuYXRpdmUgcmVjaXBlcyBidWlsZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgYnVpbGQgaG9zdCwgdGhlIHZhbHVlIGlzIGVtcHR5IGdpdmVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc3VtcHRpb24gdGhhdCB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgaG9zdCdzIG93biBkaXJlY3RvcmllcyBzaG91bGQgYmUgdXNlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPiByZWNpcGVzIGFyZSBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGludG8gaG9zdCBwYXRocyBsaWtlIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbmF0aXZlIHJlY2lwZXMgYnVpbGRpbmcgZm9yIHRoZSBidWlsZCBob3N0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyBlbXB0eSBnaXZlbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBmb3IgdGhlIGJ1aWxkIGhvc3QsIHRoZSBidWlsZCBob3N0J3Mgb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2hvdWxkIGJlIHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPjxmaWxlbmFtZT4tbmF0aXZlPC9maWxlbmFtZT4gcmVjaXBlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGluc3RhbGxlZCBpbnRvIGhvc3QgcGF0aHMgbGlrZSBzdWNoIGFzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhdGhlciwgdGhlc2UgcmVjaXBlcyBhcmUgaW5zdGFsbGVkIGludG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQUdJTkdfRElSX05BVElWRTwvZmlsZW5hbWU+LgpAQCAtMTMzODUsNyArMTM2NjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlLCBHQ0MncyA8ZmlsZW5hbWU+LWlzeXN0ZW08L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgZW1waGFzaXplcyB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaHVzLCB0aGUgZW1waGFzaXMgaXMgdGhhdCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQUdJTkdfRElSKjwvZmlsZW5hbWU+IHZhcmlhYmxlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgdmlld2VkIGFzIGlucHV0IHZhcmlhYmxlcyBieSB0YXNrcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzCkBAIC0xMzM5OSw3ICsxMzY4MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tbmF0aXZlPC9maWxlbmFtZT4gcmVjaXBlcywgYXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhleSBtYWtlIHVzZSBvZiBob3N0IGhlYWRlcnMgYW5kIGxpYnJhcmllcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xMzU5MCw4ICsxMzg3Miw4IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgQml0QmFrZSB1c2VzIHN0YW1wIGZpbGVzIHRvIGRldGVybWluZQogICAgICAgICAgICAgICAgICAgICBpZiBhIHRhc2sgc2hvdWxkIGJlIHJlcnVuLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdGFtcC1maWxlcy1hbmQtdGhlLXJlcnVubmluZy1vZi10YXNrcyc+U3RhbXAgRmlsZXMgYW5kIHRoZSBSZXJ1bm5pbmcgb2YgVGFza3M8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzdGFtcC1maWxlcy1hbmQtdGhlLXJlcnVubmluZy1vZi10YXNrcyc+U3RhbXAgRmlsZXMgYW5kIHRoZSBSZXJ1bm5pbmcgb2YgVGFza3M8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTM2MzcsMTMgKzEzOTE5LDEzIEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TVU1NQVJZJz48Z2xvc3N0ZXJtPlNVTU1BUlk8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNVTU1BUllbZG9jXSA9ICJUaGUgc2hvcnQgKDgwIGNoYXJhY3RlcnMgb3IgbGVzcykgc3VtbWFyeSBvZiB0aGUgYmluYXJ5IHBhY2thZ2UgZm9yIHBhY2thZ2luZyBzeXN0ZW1zIHN1Y2ggYXMgb3BrZywgcnBtIG9yIGRwa2cuIEJ5IGRlZmF1bHQsIFNVTU1BUlkgaXMgdXNlZCB0byBkZWZpbmUgdGhlIERFU0NSSVBUSU9OIHZhcmlhYmxlIGlmIERFU0NSSVBUSU9OIGlzIG5vdCBzZXQgaW4gdGhlIHJlY2lwZS4iCisgICAgICAgICAgICAgICAgU1VNTUFSWVtkb2NdID0gIlRoZSBzaG9ydCAoODAgY2hhcmFjdGVycyBvciBsZXNzKSBzdW1tYXJ5IG9mIHRoZSBiaW5hcnkgcGFja2FnZSBmb3IgcGFja2FnaW5nIHN5c3RlbXMgc3VjaCBhcyBvcGtnLCBycG0sIG9yIGRwa2cuIEJ5IGRlZmF1bHQsIFNVTU1BUlkgaXMgdXNlZCB0byBkZWZpbmUgdGhlIERFU0NSSVBUSU9OIHZhcmlhYmxlIGlmIERFU0NSSVBUSU9OIGlzIG5vdCBzZXQgaW4gdGhlIHJlY2lwZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBUaGUgc2hvcnQgKDcyIGNoYXJhY3RlcnMgb3IgbGVzcykgc3VtbWFyeSBvZiB0aGUgYmluYXJ5IHBhY2thZ2UgZm9yIHBhY2thZ2luZwotICAgICAgICAgICAgICAgICAgICBzeXN0ZW1zIHN1Y2ggYXMgPGZpbGVuYW1lPm9wa2c8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnJwbTwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbXMgc3VjaCBhcyA8ZmlsZW5hbWU+b3BrZzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+cnBtPC9maWxlbmFtZT4sIG9yCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kcGtnPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5TVU1NQVJZPC9maWxlbmFtZT4gaXMgdXNlZCB0byBkZWZpbmUKICAgICAgICAgICAgICAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVNDUklQVElPTic+PGZpbGVuYW1lPkRFU0NSSVBUSU9OPC9maWxlbmFtZT48L2xpbms+CkBAIC0xMzY1NSw3ICsxMzkzNyw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TVk5ESVInPjxnbG9zc3Rlcm0+U1ZORElSPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBTVk5ESVJbZG9jXSA9ICJUaGUgZGlyZWN0b3J5IHdoZXJlIFN1YnZlcnNpb24gY2hlY2tvdXRzIHdpbGwgYmUgc3RvcmVkLiIKKyAgICAgICAgICAgICAgICBTVk5ESVJbZG9jXSA9ICJUaGUgZGlyZWN0b3J5IHdoZXJlIFN1YnZlcnNpb24gY2hlY2tvdXRzIGFyZSBzdG9yZWQuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTM3MjQsNyArMTQwMDYsNyBAQAogICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIHJlY2lwZS4KICAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlJ3MgZGVmYXVsdCB2YWx1ZSBpcyBzZXQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXN5c2xpbnV4Jz48ZmlsZW5hbWU+c3lzbGludXg8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBTWVNMSU5VWF9TRVJJQUwgPz0gIjAgMTE1MjAwIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0xMzczOCwxMyArMTQwMjAsMTMgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU0xJTlVYX1NQTEFTSCc+PGdsb3NzdGVybT5TWVNMSU5VWF9TUExBU0g8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNZU0xJTlVYX1NQTEFTSFtkb2NdID0gIkFuIC5MU1MgZmlsZSB1c2VkIGFzIHRoZSBiYWNrZ3JvdW5kIGZvciB0aGUgVkdBIGJvb3QgbWVudSB3aGVuIHlvdSBhcmUgdXNpbmcgdGhlIGJvb3QgbWVudS4iCisgICAgICAgICAgICAgICAgU1lTTElOVVhfU1BMQVNIW2RvY10gPSAiQW4gLkxTUyBmaWxlIHVzZWQgYXMgdGhlIGJhY2tncm91bmQgZm9yIHRoZSBWR0EgYm9vdCBtZW51IHdoZW4geW91IHVzZSB0aGUgYm9vdCBtZW51LiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIEFuIDxmaWxlbmFtZT4uTFNTPC9maWxlbmFtZT4gZmlsZSB1c2VkIGFzIHRoZSBiYWNrZ3JvdW5kCi0gICAgICAgICAgICAgICAgICAgIGZvciB0aGUgVkdBIGJvb3QgbWVudSB3aGVuIHlvdSBhcmUgdXNpbmcgdGhlIGJvb3QgbWVudS4KKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBWR0EgYm9vdCBtZW51IHdoZW4geW91IHVzZSB0aGUgYm9vdCBtZW51LgogICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBzZXQgdGhpcyB2YXJpYWJsZSBpbiB5b3VyIHJlY2lwZS4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTEzNzY3LDcgKzE0MDQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBhbHRlcm5hdGUgY29uc29sZT10dHkuLi4ga2VybmVsIGJvb3QgYXJndW1lbnQuCiAgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSdzIGRlZmF1bHQgdmFsdWUgaXMgc2V0IGluIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zeXNsaW51eCc+PGZpbGVuYW1lPnN5c2xpbnV4PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgU1lTTElOVVhfU0VSSUFMX1RUWSA/PSAiY29uc29sZT10dHlTMCwxMTUyMDAiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KQEAgLTEzNzgxLDcgKzE0MDYzLDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU1JPT1RfREVTVERJUic+PGdsb3NzdGVybT5TWVNST09UX0RFU1RESVI8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNZU1JPT1RfREVTVERJUltkb2NdID0gIlBvaW50cyB0byB0aGUgdGVtcG9yYXJ5IHdvcmsgZGlyZWN0b3J5IChkZWZhdWx0ICR7V09SS0RJUn0vc3lzcm9vdC1kZXN0ZGlyKSB3aGVyZSB0aGUgZmlsZXMgdGhhdCB3aWxsIGJlIHBvcHVsYXRlZCBpbnRvIHRoZSBzeXNyb290IGFyZSBhc3NlbWJsZWQgZHVyaW5nIHRoZSBkb19wb3B1bGF0ZV9zeXNyb290IHRhc2suIgorICAgICAgICAgICAgICAgIFNZU1JPT1RfREVTVERJUltkb2NdID0gIlBvaW50cyB0byB0aGUgdGVtcG9yYXJ5IHdvcmsgZGlyZWN0b3J5IChkZWZhdWx0ICR7V09SS0RJUn0vc3lzcm9vdC1kZXN0ZGlyKSB3aGVyZSB0aGUgZmlsZXMgcG9wdWxhdGVkIGludG8gdGhlIHN5c3Jvb3QgYXJlIGFzc2VtYmxlZCBkdXJpbmcgdGhlIGRvX3BvcHVsYXRlX3N5c3Jvb3QgdGFzay4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0xMzc4OSw4ICsxNDA3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB1bmRlciB0aGUgd29yayBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICAgIjxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0vc3lzcm9vdC1kZXN0ZGlyPC9maWxlbmFtZT4iKQotICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgdGhhdCB3aWxsIGJlIHBvcHVsYXRlZCBpbnRvIHRoZSBzeXNyb290IGFyZSBhc3NlbWJsZWQKKyAgICAgICAgICAgICAgICAgICAgd2hlcmUgdGhlIGZpbGVzIHBvcHVsYXRlZCBpbnRvIHRoZSBzeXNyb290IGFyZSBhc3NlbWJsZWQKICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdGFzay4KQEAgLTEzOTA1LDE3ICsxNDE4NiwxNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1lTVEVNRF9BVVRPX0VOQUJMRSc+PGdsb3NzdGVybT5TWVNURU1EX0FVVE9fRU5BQkxFPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBTWVNURU1EX0FVVE9fRU5BQkxFW2RvY10gPSAiRm9yIHJlY2lwZXMgdGhhdCBpbmhlcml0IHRoZSBzeXN0ZW1kIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBzZXJ2aWNlIHlvdSBoYXZlIHNwZWNpZmllZCBpbiBTWVNURU1EX1NFUlZJQ0Ugc2hvdWxkIGJlIHN0YXJ0ZWQgYXV0b21hdGljYWxseSBvciBub3QuIgorICAgICAgICAgICAgICAgIFNZU1RFTURfQVVUT19FTkFCTEVbZG9jXSA9ICJGb3IgcmVjaXBlcyB0aGF0IGluaGVyaXQgdGhlIHN5c3RlbWQgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBzZXJ2aWNlIGluIFNZU1RFTURfU0VSVklDRSBzaG91bGQgc3RhcnQgYXV0b21hdGljYWxseSBvciBub3QuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zeXN0ZW1kJz48ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgd2hldGhlciB0aGUgc2VydmljZSB5b3UgaGF2ZQotICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBzZXJ2aWNlCisgICAgICAgICAgICAgICAgICAgIGluCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TWVNURU1EX1NFUlZJQ0UnPjxmaWxlbmFtZT5TWVNURU1EX1NFUlZJQ0U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHN0YXJ0ZWQgYXV0b21hdGljYWxseSBvciBub3QuCisgICAgICAgICAgICAgICAgICAgIHNob3VsZCBzdGFydCBhdXRvbWF0aWNhbGx5IG9yIG5vdC4KICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIHNlcnZpY2UgaXMgZW5hYmxlZCB0byBhdXRvbWF0aWNhbGx5IHN0YXJ0CiAgICAgICAgICAgICAgICAgICAgIGF0IGJvb3QgdGltZS4KICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgc2V0dGluZyBpcyBpbiB0aGUKQEAgLTEzOTYzLDcgKzE0MjQ0LDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU1RFTURfQk9PVF9FTlRSSUVTJz48Z2xvc3N0ZXJtPlNZU1RFTURfQk9PVF9FTlRSSUVTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBTWVNURU1EX0JPT1RfRU5UUklFU1tkb2NdID0gIldoZW4gRUZJX1BST1ZJREVSIGlzIHNldCB0byAic3lzdGVtZC1ib290IiwgdGhlIFNZU1RFTURfQk9PVF9FTlRSSUVTIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgZW50cnkgZmlsZXMgKCouY29uZikgdG8gYmUgaW5zdGFsbGVkIGNvbnRhaW5pbmcgb25lIGJvb3QgZW50cnkgcGVyIGZpbGUuIgorICAgICAgICAgICAgICAgIFNZU1RFTURfQk9PVF9FTlRSSUVTW2RvY10gPSAiV2hlbiBFRklfUFJPVklERVIgaXMgc2V0IHRvICJzeXN0ZW1kLWJvb3QiLCB0aGUgU1lTVEVNRF9CT09UX0VOVFJJRVMgdmFyaWFibGUgc3BlY2lmaWVzIGEgbGlzdCBvZiBlbnRyeSBmaWxlcyAoKi5jb25mKSB0byBpbnN0YWxsIHRoYXQgY29udGFpbiBvbmUgYm9vdCBlbnRyeSBwZXIgZmlsZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0xMzk3Myw4ICsxNDI1NCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byAic3lzdGVtZC1ib290IiwgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TWVNURU1EX0JPT1RfRU5UUklFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIHNwZWNpZmllcwogICAgICAgICAgICAgICAgICAgICBhIGxpc3Qgb2YgZW50cnkgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmNvbmY8L2ZpbGVuYW1lPikgdG8gYmUgaW5zdGFsbGVkCi0gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgb25lIGJvb3QgZW50cnkgcGVyIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Ki5jb25mPC9maWxlbmFtZT4pIHRvIGluc3RhbGwgdGhhdCBjb250YWluCisgICAgICAgICAgICAgICAgICAgIG9uZSBib290IGVudHJ5IHBlciBmaWxlLgogICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtc3lzdGVtZC1ib290Jz48ZmlsZW5hbWU+c3lzdGVtZC1ib290PC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzIHNldHMgdGhlIDxmaWxlbmFtZT5TWVNURU1EX0JPT1RfRU5UUklFUzwvZmlsZW5hbWU+IGFzCkBAIC0xNDA3Niw3ICsxNDM1Nyw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TWVNWSU5JVF9FTkFCTEVEX0dFVFRZUyc+PGdsb3NzdGVybT5TWVNWSU5JVF9FTkFCTEVEX0dFVFRZUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgU1lTVklOSVRfRU5BQkxFRF9HRVRUWVNbZG9jXSA9ICJTcGVjaWZpZXMgd2hpY2ggdmlydHVhbCB0ZXJtaW5hbHMgc2hvdWxkIGJlIHJ1bm5pbmcgYSBnZXR0eSwgdGhlIGRlZmF1bHQgaXMgJzEnLiIKKyAgICAgICAgICAgICAgICBTWVNWSU5JVF9FTkFCTEVEX0dFVFRZU1tkb2NdID0gIlNwZWNpZmllcyB3aGljaCB2aXJ0dWFsIHRlcm1pbmFscyBzaG91bGQgcnVuIGEgZ2V0dHksIHRoZSBkZWZhdWx0IGlzICcxJy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0xNDA4NCw3ICsxNDM2NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFdoZW4gdXNpbmcKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXJlY2lwZS1lbmFibGluZy1zeXN0ZW0tc2VydmljZXMnPlN5c1Zpbml0PC91bGluaz4sCiAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSB2aXJ0dWFsIHRlcm1pbmFscwotICAgICAgICAgICAgICAgICAgICB0aGF0IHNob3VsZCBiZSBydW5uaW5nIGEKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBzaG91bGQgcnVuIGEKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZXR0eV8lMjhVbml4JTI5Jz5nZXR0eTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIChhbGxvd2luZyBsb2dpbiksIGFzc3VtaW5nCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1VU0VfVlQnPjxmaWxlbmFtZT5VU0VfVlQ8L2ZpbGVuYW1lPjwvbGluaz4KQEAgLTE0MjUwLDEwICsxNDUzMSw4IEBACiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgU0RLJ3MgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IHNldHMKLSAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DRkxBR1MnPjxmaWxlbmFtZT5DRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIGVudmlyb25tZW50IHRvIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEFSR0VUX0NGTEFHUzwvZmlsZW5hbWU+IHZhbHVlIHNvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5DRkxBR1M8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIDxmaWxlbmFtZT5UQVJHRVRfQ0ZMQUdTPC9maWxlbmFtZT4gdmFsdWUgc28gdGhhdAogICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlcyBidWlsdCB1c2luZyB0aGUgU0RLIGFsc28gaGF2ZSB0aGUgZmxhZ3MKICAgICAgICAgICAgICAgICAgICAgYXBwbGllZC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xNDI3NywxMiArMTQ1NTYsMTAgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBTREsncyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgc2V0cwotICAgICAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNQUEZMQUdTJz48ZmlsZW5hbWU+Q1BQRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIGVudmlyb25tZW50IHRvIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEFSR0VUX0NQUEZMQUdTPC9maWxlbmFtZT4gdmFsdWUgc28gdGhhdAotICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlcyBidWlsdCB1c2luZyB0aGUgU0RLIGFsc28gaGF2ZSB0aGUgZmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgYXBwbGllZC4KKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5DUFBGTEFHUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCB0byB0aGUgPGZpbGVuYW1lPlRBUkdFVF9DUFBGTEFHUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhbHVlIHNvIHRoYXQgZXhlY3V0YWJsZXMgYnVpbHQgdXNpbmcgdGhlIFNESyBhbHNvIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgdGhlIGZsYWdzIGFwcGxpZWQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTQzMDMsMTIgKzE0NTgwLDEwIEBACiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgU0RLJ3MgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IHNldHMKLSAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DWFhGTEFHUyc+PGZpbGVuYW1lPkNYWEZMQUdTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSBlbnZpcm9ubWVudCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRBUkdFVF9DWFhGTEFHUzwvZmlsZW5hbWU+IHZhbHVlIHNvIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZXMgYnVpbHQgdXNpbmcgdGhlIFNESyBhbHNvIGhhdmUgdGhlIGZsYWdzCi0gICAgICAgICAgICAgICAgICAgIGFwcGxpZWQuCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Q1hYRkxBR1M8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgdG8gdGhlIDxmaWxlbmFtZT5UQVJHRVRfQ1hYRkxBR1M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBzbyB0aGF0IGV4ZWN1dGFibGVzIGJ1aWx0IHVzaW5nIHRoZSBTREsgYWxzbyBoYXZlCisgICAgICAgICAgICAgICAgICAgIHRoZSBmbGFncyBhcHBsaWVkLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTE0MzgyLDEwICsxNDY1NywxMCBAQAogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSB0YXJnZXQncyBvcGVyYXRpbmcgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgY2FuIGJlIHNldCB0byAibGludXgiIGZvciA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPi1iYXNlZCBzeXN0ZW1zIGFuZAotICAgICAgICAgICAgICAgICAgICB0byAibGludXgtbXVzbCIgZm9yIDxmaWxlbmFtZT5tdXNsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIEZvciBBUk0vRUFCSSB0YXJnZXRzLCB0aGVyZSBhcmUgYWxzbyAibGludXgtZ251ZWFiaSIgYW5kCi0gICAgICAgICAgICAgICAgICAgICJsaW51eC1tdXNsZWFiaSIgdmFsdWVzIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgY2FuIGJlIHNldCB0byAibGludXgiIGZvciBnbGliYy1iYXNlZCBzeXN0ZW1zCisgICAgICAgICAgICAgICAgICAgIChHTlUgQyBMaWJyYXJ5KSBhbmQgdG8gImxpbnV4LW11c2wiIGZvciBtdXNsIGxpYmMuCisgICAgICAgICAgICAgICAgICAgIEZvciBBUk0vRUFCSSB0YXJnZXRzLCAibGludXgtZ251ZWFiaSIgYW5kICJsaW51eC1tdXNsZWFiaSIKKyAgICAgICAgICAgICAgICAgICAgcG9zc2libGUgdmFsdWVzIGV4aXN0LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTE0NTUzLDEwICsxNDgyOCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCB0b29sY2hhaW4uCiAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyBvbGRlciBvciBuZXdlciB2ZXJzaW9ucyBvZiB0aGVzZSBjb21wb25lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICBtaWdodCBjYXVzZSBidWlsZCBwcm9ibGVtcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX05PVEVTOyc+UmVsZWFzZSBOb3RlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIFJlbGVhc2UgTm90ZXMgZm9yIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgc3BlY2lmaWMgY29tcG9uZW50cyB3aXRoIHdoaWNoIHRoZSB0b29sY2hhaW4KICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgY29tcGF0aWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGFjY2VzcyB0aGUgUmVsZWFzZSBOb3RlcywgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L3NvZnR3YXJlLW92ZXJ2aWV3L2Rvd25sb2Fkcy8nPkRvd25sb2FkczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlIG9uIHRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGUgYW5kIGNsaWNrIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIlJFTEVBU0UgSU5GT1JNQVRJT04iIGxpbmsgZm9yIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZS4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTQ2NzEsNyArMTQ5NTAsNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVEVTVF9MT0dfRElSJz48Z2xvc3N0ZXJtPlRFU1RfTE9HX0RJUjwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgVEVTVF9MT0dfRElSW2RvY10gPSAiSG9sZHMgdGhlIFNTSCBsb2cgYW5kIHRoZSBib290IGxvZyBmb3IgUUVNVSBtYWNoaW5lcy4gVGhlIDxmaWxlbmFtZT5URVNUX0xPR19ESVI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBkZWZhdWx0cyB0byAiJHtXT1JLRElSfS90ZXN0aW1hZ2UiLiIKKyAgICAgICAgICAgICAgICBURVNUX0xPR19ESVJbZG9jXSA9ICJIb2xkcyB0aGUgU1NIIGxvZyBhbmQgdGhlIGJvb3QgbG9nIGZvciBRRU1VIG1hY2hpbmVzLiBUaGUgVEVTVF9MT0dfRElSIHZhcmlhYmxlIGRlZmF1bHRzIHRvICIke1dPUktESVJ9L3Rlc3RpbWFnZSIuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTUwODMsOCArMTUzNjIsOCBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zCiAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc2V0dGluZyB1cCBhIGNyb3NzLWRldmVsb3BtZW50CiAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50LCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4KQEAgLTE1MTQyLDggKzE1NDIxLDggQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgRm9yIGJhY2tncm91bmQgaW5mb3JtYXRpb24gb24gY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucwogICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHNldHRpbmcgdXAgYSBjcm9zcy1kZXZlbG9wbWVudAogICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CkBAIC0xNTE4MSw3ICsxNTQ2MCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGEgdmFsdWUgd2hlcmUgdW5kZXJzY29yZXMgYXJlIG5vdCBhbGxvd2VkLCBmb3IgZXhhbXBsZQogICAgICAgICAgICAgICAgICAgICB3aXRoaW4gcGFja2FnZSBmaWxlbmFtZXMuCiAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgZGFzaCBjaGFyYWN0ZXJzIHJlcGxhY2UgYW55IHVuZGVyc2NvcmUKLSAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycyB1c2VkIGluIFRBUkdFVF9BUkNILgorICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIHVzZWQgaW4gPGZpbGVuYW1lPlRBUkdFVF9BUkNIPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0xNTc0OSw3ICsxNjAyOCw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1VUERBVEVSQ1BOJz48Z2xvc3N0ZXJtPlVQREFURVJDUE48L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgVVBEQVRFUkNQTltkb2NdID0gIlNwZWNpZmllcyB0aGUgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBpbml0c2NyaXB0IHRoYXQgaXMgdG8gYmUgZW5hYmxlZC4iCisgICAgICAgICAgICAgICBVUERBVEVSQ1BOW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIGluaXRzY3JpcHQgdGhhdCBpcyBlbmFibGVkLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTE1NzU3LDcgKzE2MDM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgRm9yIHJlY2lwZXMgaW5oZXJpdGluZyB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdXBkYXRlLXJjLmQnPjxmaWxlbmFtZT51cGRhdGUtcmMuZDwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBjbGFzcywgPGZpbGVuYW1lPlVQREFURVJDUE48L2ZpbGVuYW1lPiBzcGVjaWZpZXMKLSAgICAgICAgICAgICAgICAgICAgdGhlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgaW5pdHNjcmlwdCB0aGF0IGlzIHRvIGJlCisgICAgICAgICAgICAgICAgICAgIHRoZSBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIGluaXRzY3JpcHQgdGhhdCBpcwogICAgICAgICAgICAgICAgICAgICBlbmFibGVkLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTYwNDUsNyArMTYzMjQsNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVVNFUkFERF9QQVJBTSc+PGdsb3NzdGVybT5VU0VSQUREX1BBUkFNPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgIFVTRVJBRERfUEFSQU1bZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSB1c2VyYWRkIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSB1c2VyYWRkIGNvbW1hbmQgaWYgeW91IHdpc2ggdG8gYWRkIGEgdXNlciB0byB0aGUgc3lzdGVtIHdoZW4gdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkLiIKKyAgICAgICAgICAgICAgIFVTRVJBRERfUEFSQU1bZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSB1c2VyYWRkIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgcGFzcyB0byB0aGUgdXNlcmFkZCBjb21tYW5kIGlmIHlvdSBhZGQgYSB1c2VyIHRvIHRoZSBzeXN0ZW0gd2hlbiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTYwNTMsOSArMTYzMzIsOSBAQAogICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXVzZXJhZGQnPjxmaWxlbmFtZT51c2VyYWRkPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgYmUgcGFzc2VkCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgcGFzcwogICAgICAgICAgICAgICAgICAgICB0byB0aGUgPGZpbGVuYW1lPnVzZXJhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgIGlmIHlvdSB3aXNoIHRvIGFkZCBhIHVzZXIgdG8gdGhlIHN5c3RlbSB3aGVuIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIGlmIHlvdSBhZGQgYSB1c2VyIHRvIHRoZSBzeXN0ZW0gd2hlbiB0aGUgcGFja2FnZQogICAgICAgICAgICAgICAgICAgICBpcyBpbnN0YWxsZWQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0xNjI2Niw3ICsxNjU0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMtdXNpbmctd2ljJz5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUga2lja3N0YXJ0IGZpbGUgZm9ybWF0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvcGVuZW1iZWRkZWQta2lja3N0YXJ0LXdrcy1yZWZlcmVuY2UnPk9wZW5FbWJlZGRlZCBLaWNrc3RhcnQgKDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4pIFJlZmVyZW5jZTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1raWNrc3RhcnQnPk9wZW5FbWJlZGRlZCBLaWNrc3RhcnQgKDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4pIFJlZmVyZW5jZTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgQ2hhcHRlci4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtMTYyOTUsNyArMTY1NzQsNyBAQAogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgZGlyZWN0b3J5IGRlcGVuZHMgb24gc2V2ZXJhbCB0aGluZ3M6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvcC1sZXZlbCBidWlsZCBvdXRwdXQgZGlyZWN0b3J5PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48bGluayBsaW5rZW5kPSd2YXItTVVMVElNQUNIX1RBUkdFVF9TWVMnPjxmaWxlbmFtZT5NVUxUSU1BQ0hfVEFSR0VUX1NZUzwvZmlsZW5hbWU+PC9saW5rPjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IHN5c3RlbSBpZGVudGlmaWVyPC9saXN0aXRlbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVzb3VyY2VzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVzb3VyY2VzLnhtbAppbmRleCBkNTliZWEyLi5iZTA0Njk2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3Jlc291cmNlcy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZXNvdXJjZXMueG1sCkBAIC0zNyw4ICszNyw4IEBACiAKICAgICA8cGFyYT4KICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdXNlcyBpdHMgb3duIGltcGxlbWVudGF0aW9uIG9mCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuYnVnemlsbGEub3JnL2Fib3V0Lyc+QnVnemlsbGE8L3VsaW5rPiB0byB0cmFjawotICAgICAgICBkZWZlY3RzIChidWdzKS4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPkJ1Z3ppbGxhPC91bGluaz4gdG8KKyAgICAgICAgdHJhY2sgZGVmZWN0cyAoYnVncykuCiAgICAgICAgIEltcGxlbWVudGF0aW9ucyBvZiBCdWd6aWxsYSB3b3JrIHdlbGwgZm9yIGdyb3VwIGRldmVsb3BtZW50IGJlY2F1c2UKICAgICAgICAgdGhleSB0cmFjayBidWdzIGFuZCBjb2RlIGNoYW5nZXMsIGNhbiBiZSB1c2VkIHRvIGNvbW11bmljYXRlIGNoYW5nZXMKICAgICAgICAgYW5kIHByb2JsZW1zIHdpdGggZGV2ZWxvcGVycywgY2FuIGJlIHVzZWQgdG8gc3VibWl0IGFuZCByZXZpZXcgcGF0Y2hlcywKQEAgLTY4LDYgKzY4LDggQEAKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvQnVnemlsbGFfQ29uZmlndXJhdGlvbl9hbmRfQnVnX1RyYWNraW5nJz5CdWd6aWxsYSB3aWtpIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIEJ1Z3ppbGxhIGluIGdlbmVyYWwsIHNlZQorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmJ1Z3ppbGxhLm9yZy9hYm91dC8nPjwvdWxpbms+LgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApAQCAtMTYwLDEwICsxNjIsMTggQEAKICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JSSUVGX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgQnVpbGQ8L3VsaW5rPjoKICAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoaXMgc2hvcnQgZG9jdW1lbnQgbGV0cyB5b3UgZ2V0IHN0YXJ0ZWQKLSAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBxdWlja2x5IGJlZ2luIGJ1aWxkaW5nIGFuIGltYWdlLgorICAgICAgICAgICAgICAgIFRoaXMgc2hvcnQgZG9jdW1lbnQgbGV0cyB5b3UgZXhwZXJpZW5jZSBidWlsZGluZyBhbiBpbWFnZSB1c2luZworICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IHdpdGhvdXQgaGF2aW5nIHRvIHVuZGVyc3RhbmQgYW55IGNvbmNlcHRzIG9yCisgICAgICAgICAgICAgICAgZGV0YWlscy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyc+WW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIG1hbnVhbCBwcm92aWRlcyBvdmVydmlldyBhbmQgY29uY2VwdHVhbCBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIGFib3V0IHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KQEAgLTIwMSw2ICsyMTEsMjMgQEAKICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsnPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgcmVmZXJlbmNlIG1hdGVyaWFsIHN1Y2ggYXMgdmFyaWFibGUsCisgICAgICAgICAgICAgICAgdGFzaywgYW5kIGNsYXNzIGRlc2NyaXB0aW9ucy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfTU1fVVJMOyc+WW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgaXMgc2ltcGx5IGEgc2luZ2xlIEhUTUwgZmlsZSBjb21wcmlzZWQgb2YgdGhlCisgICAgICAgICAgICAgICAgYnVsayBvZiB0aGUgWW9jdG8gUHJvamVjdCBtYW51YWxzLgorICAgICAgICAgICAgICAgIFRoZSBNZWdhLU1hbnVhbCBwcmltYXJpbHkgZXhpc3RzIGFzIGEgdmVoaWNsZSBieSB3aGljaCB5b3UgY2FuCisgICAgICAgICAgICAgICAgZWFzaWx5IHNlYXJjaCBmb3IgcGhyYXNlcyBhbmQgdGVybXMgdXNlZCBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gc2V0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19QUk9GX1VSTDsnPllvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbDwvdWxpbms+OgogICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJlc2VudHMgYSBzZXQgb2YgY29tbW9uIGFuZCBnZW5lcmFsbHkgdXNlZnVsCkBAIC0yMDksNyArMjM2LDE4IEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1hcHBlbmRpeC1sYXRlc3QteXAtZWNsaXBzZS1wbHVnLWluJz5FY2xpcHNlIElERSBZb2N0byBQbHVnLWluPC91bGluaz46CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+VG9hc3RlciBVc2VyIE1hbnVhbDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgaW50cm9kdWNlcyBhbmQgZGVzY3JpYmVzIGhvdyB0byBzZXQgdXAgYW5kIHVzZQorICAgICAgICAgICAgICAgIFRvYXN0ZXIuCisgICAgICAgICAgICAgICAgVG9hc3RlciBpcyBhbiBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2UgKEFQSSkgYW5kCisgICAgICAgICAgICAgICAgd2ViLWJhc2VkIGludGVyZmFjZSB0byB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvbGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggdXNlcyBCaXRCYWtlLCB0aGF0IHJlcG9ydHMgYnVpbGQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I2FkdC1lY2xpcHNlJz5FY2xpcHNlIElERSBZb2N0byBQbHVnLWluPC91bGluaz46CiAgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbnMgdGhhdCBkZW1vbnN0cmF0ZSBob3cgYW4gYXBwbGljYXRpb24gZGV2ZWxvcGVyCiAgICAgICAgICAgICAgICAgdXNlcyB0aGUgRWNsaXBzZSBZb2N0byBQcm9qZWN0IFBsdWctaW4gZmVhdHVyZSB3aXRoaW4KQEAgLTIyMiwyMiArMjYwLDEzIEBACiAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGNvbW1vbmx5IGFza2VkIHF1ZXN0aW9ucyBhbmQgdGhlaXIgYW5zd2Vycy4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1JFTEVBU0VfTk9URVM7Jz5SZWxlYXNlIE5vdGVzPC91bGluaz46Ci0gICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVsZWFzZSBOb3Rlczo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIEZlYXR1cmVzLCB1cGRhdGVzIGFuZCBrbm93biBpc3N1ZXMgZm9yIHRoZSBjdXJyZW50CiAgICAgICAgICAgICAgICAgcmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+VG9hc3RlciBVc2VyIE1hbnVhbDwvdWxpbms+OgotICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgaW50cm9kdWNlcyBhbmQgZGVzY3JpYmVzIGhvdyB0byBzZXQgdXAgYW5kIHVzZQotICAgICAgICAgICAgICAgIFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgVG9hc3RlciBpcyBhbiBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2UgKEFQSSkgYW5kCi0gICAgICAgICAgICAgICAgd2ViLWJhc2VkIGludGVyZmFjZSB0byB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvbGluaz4sCi0gICAgICAgICAgICAgICAgd2hpY2ggdXNlcyBCaXRCYWtlLCB0aGF0IHJlcG9ydHMgYnVpbGQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgVG8gYWNjZXNzIHRoZSBSZWxlYXNlIE5vdGVzLCBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L3NvZnR3YXJlLW92ZXJ2aWV3L2Rvd25sb2Fkcy8nPkRvd25sb2FkczwvdWxpbms+CisgICAgICAgICAgICAgICAgcGFnZSBvbiB0aGUgWW9jdG8gUHJvamVjdCB3ZWJzaXRlIGFuZCBjbGljayBvbiB0aGUKKyAgICAgICAgICAgICAgICAiUkVMRUFTRSBJTkZPUk1BVElPTiIgbGluayBmb3IgdGhlIGFwcHJvcHJpYXRlIHJlbGVhc2UuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC90ZWNobmljYWwtZGV0YWlscy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3RlY2huaWNhbC1kZXRhaWxzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTllNzZlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3RlY2huaWNhbC1kZXRhaWxzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwNDIgKzAsMCBAQAotPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgotImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKLVs8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KLQotPGNoYXB0ZXIgaWQ9J3RlY2huaWNhbC1kZXRhaWxzJz4KLTx0aXRsZT5UZWNobmljYWwgRGV0YWlsczwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIHRlY2huaWNhbCBkZXRhaWxzIGZvciB2YXJpb3VzIHBhcnRzIG9mIHRoZQotICAgICAgICBZb2N0byBQcm9qZWN0LgotICAgICAgICBDdXJyZW50bHksIHRvcGljcyBpbmNsdWRlIFlvY3RvIFByb2plY3QgY29tcG9uZW50cywKLSAgICAgICAgY3Jvc3MtdG9vbGNoYWluIGdlbmVyYXRpb24sIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBjYWNoZSwKLSAgICAgICAgeDMyLCBXYXlsYW5kIHN1cHBvcnQsIGFuZCBMaWNlbnNlcy4KLSAgICA8L3BhcmE+Ci0KLTxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktY29tcG9uZW50cyc+Ci0gICAgPHRpdGxlPllvY3RvIFByb2plY3QgQ29tcG9uZW50czwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4KLSAgICAgICAgdGFzayBleGVjdXRvciB0b2dldGhlciB3aXRoIHZhcmlvdXMgdHlwZXMgb2YgY29uZmlndXJhdGlvbiBmaWxlcyBmb3JtCi0gICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgQ29yZS4KLSAgICAgICAgVGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyB0aGVzZSBjb21wb25lbnRzIGJ5IGRlc2NyaWJpbmcgdGhlaXIgdXNlIGFuZAotICAgICAgICBob3cgdGhleSBpbnRlcmFjdC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQml0QmFrZSBoYW5kbGVzIHRoZSBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgdGhlIGRhdGEgZmlsZXMuCi0gICAgICAgIFRoZSBkYXRhIGl0c2VsZiBpcyBvZiB2YXJpb3VzIHR5cGVzOgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SZWNpcGVzOjwvZW1waGFzaXM+IFByb3ZpZGVzIGRldGFpbHMKLSAgICAgICAgICAgICAgICBhYm91dCBwYXJ0aWN1bGFyIHBpZWNlcyBvZiBzb2Z0d2FyZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2xhc3MgRGF0YTo8L2VtcGhhc2lzPiBBYnN0cmFjdHMKLSAgICAgICAgICAgICAgICBjb21tb24gYnVpbGQgaW5mb3JtYXRpb24gKGUuZy4gaG93IHRvIGJ1aWxkIGEgTGludXgga2VybmVsKS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29uZmlndXJhdGlvbiBEYXRhOjwvZW1waGFzaXM+IERlZmluZXMKLSAgICAgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIHNldHRpbmdzLCBwb2xpY3kgZGVjaXNpb25zLCBhbmQgc28gZm9ydGguCi0gICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBkYXRhIGFjdHMgYXMgdGhlIGdsdWUgdG8gYmluZCBldmVyeXRoaW5nCi0gICAgICAgICAgICAgICAgdG9nZXRoZXIuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBCaXRCYWtlIGtub3dzIGhvdyB0byBjb21iaW5lIG11bHRpcGxlIGRhdGEgc291cmNlcyB0b2dldGhlciBhbmQgcmVmZXJzCi0gICAgICAgIHRvIGVhY2ggZGF0YSBzb3VyY2UgYXMgYSBsYXllci4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZAotICAgICAgICBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudAotICAgICAgICBUYXNrcyBNYW51YWwuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBicmllZiBkZXRhaWxzIG9uIHRoZXNlIGNvcmUgY29tcG9uZW50cy4KLSAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gaG93IHRoZXNlIGNvbXBvbmVudHMgaW50ZXJhY3QgZHVyaW5nCi0gICAgICAgIGEgYnVpbGQsIHNlZSB0aGUKLSAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RldmVsb3BtZW50LWNvbmNlcHRzJz5EZXZlbG9wbWVudCBDb25jZXB0czwvbGluaz4iCi0gICAgICAgIHNlY3Rpb24uCi0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9J3VzaW5ncG9reS1jb21wb25lbnRzLWJpdGJha2UnPgotICAgICAgICA8dGl0bGU+Qml0QmFrZTwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCaXRCYWtlIGlzIHRoZSB0b29sIGF0IHRoZSBoZWFydCBvZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiwKLSAgICAgICAgICAgIGdlbmVyYXRpbmcgYSBsaXN0IG9mIHRhc2tzIGZyb20gaXQsIGFuZCB0aGVuIGV4ZWN1dGluZyB0aG9zZSB0YXNrcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGJyaWVmbHkgaW50cm9kdWNlcyBCaXRCYWtlLgotICAgICAgICAgICAgSWYgeW91IHdhbnQgbW9yZSBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gc2VlIGEgbGlzdCBvZiB0aGUgb3B0aW9ucyBCaXRCYWtlIHN1cHBvcnRzLCB1c2UgZWl0aGVyIG9mCi0gICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWgKLSAgICAgJCBiaXRiYWtlIC0taGVscAotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdXNhZ2UgZm9yIEJpdEJha2UgaXMgPGZpbGVuYW1lPmJpdGJha2UgPHJlcGxhY2VhYmxlPnBhY2thZ2VuYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiwgd2hlcmUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlbmFtZTwvZmlsZW5hbWU+IGlzIHRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlIHlvdSB3YW50IHRvIGJ1aWxkCi0gICAgICAgICAgICAocmVmZXJyZWQgdG8gYXMgdGhlICJ0YXJnZXQiIGluIHRoaXMgbWFudWFsKS4KLSAgICAgICAgICAgIFRoZSB0YXJnZXQgb2Z0ZW4gZXF1YXRlcyB0byB0aGUgZmlyc3QgcGFydCBvZiBhIHJlY2lwZSdzIGZpbGVuYW1lCi0gICAgICAgICAgICAoZS5nLiAiZm9vIiBmb3IgYSByZWNpcGUgbmFtZWQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5mb29fMS4zLjAtcjAuYmI8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICBTbywgdG8gcHJvY2VzcyB0aGUgPGZpbGVuYW1lPm1hdGNoYm94LWRlc2t0b3BfMS4yLjMuYmI8L2ZpbGVuYW1lPiByZWNpcGUgZmlsZSwgeW91Ci0gICAgICAgICAgICBtaWdodCB0eXBlIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBTZXZlcmFsIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiA8ZmlsZW5hbWU+bWF0Y2hib3gtZGVza3RvcDwvZmlsZW5hbWU+IG1pZ2h0IGV4aXN0LgotICAgICAgICAgICAgQml0QmFrZSBjaG9vc2VzIHRoZSBvbmUgc2VsZWN0ZWQgYnkgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgWW91IGNhbiBnZXQgbW9yZSBkZXRhaWxzIGFib3V0IGhvdyBCaXRCYWtlIGNob29zZXMgYmV0d2VlbiBkaWZmZXJlbnQKLSAgICAgICAgICAgIHRhcmdldCB2ZXJzaW9ucyBhbmQgcHJvdmlkZXJzIGluIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYmItYml0YmFrZS1wcmVmZXJlbmNlcyc+UHJlZmVyZW5jZXM8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJpdEJha2UgYWxzbyB0cmllcyB0byBleGVjdXRlIGFueSBkZXBlbmRlbnQgdGFza3MgZmlyc3QuCi0gICAgICAgICAgICBTbyBmb3IgZXhhbXBsZSwgYmVmb3JlIGJ1aWxkaW5nIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT4sIEJpdEJha2UKLSAgICAgICAgICAgIHdvdWxkIGJ1aWxkIGEgY3Jvc3MgY29tcGlsZXIgYW5kIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+IGlmIHRoZXkgaGFkIG5vdCBhbHJlYWR5Ci0gICAgICAgICAgICBiZWVuIGJ1aWx0LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBIHVzZWZ1bCBCaXRCYWtlIG9wdGlvbiB0byBjb25zaWRlciBpcyB0aGUgPGZpbGVuYW1lPi1rPC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgIDxmaWxlbmFtZT4tLWNvbnRpbnVlPC9maWxlbmFtZT4gb3B0aW9uLgotICAgICAgICAgICAgVGhpcyBvcHRpb24gaW5zdHJ1Y3RzIEJpdEJha2UgdG8gdHJ5IGFuZCBjb250aW51ZSBwcm9jZXNzaW5nIHRoZSBqb2IKLSAgICAgICAgICAgIGFzIGxvbmcgYXMgcG9zc2libGUgZXZlbiBhZnRlciBlbmNvdW50ZXJpbmcgYW4gZXJyb3IuCi0gICAgICAgICAgICBXaGVuIGFuIGVycm9yIG9jY3VycywgdGhlIHRhcmdldCB0aGF0Ci0gICAgICAgICAgICBmYWlsZWQgYW5kIHRob3NlIHRoYXQgZGVwZW5kIG9uIGl0IGNhbm5vdCBiZSByZW1hZGUuCi0gICAgICAgICAgICBIb3dldmVyLCB3aGVuIHlvdSB1c2UgdGhpcyBvcHRpb24gb3RoZXIgZGVwZW5kZW5jaWVzIGNhbiBzdGlsbCBiZQotICAgICAgICAgICAgcHJvY2Vzc2VkLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3VzaW5ncG9reS1jb21wb25lbnRzLW1ldGFkYXRhJz4KLSAgICAgICAgPHRpdGxlPk1ldGFkYXRhIChSZWNpcGVzKTwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGaWxlcyB0aGF0IGhhdmUgdGhlIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBzdWZmaXggYXJlICJyZWNpcGVzIgotICAgICAgICAgICAgZmlsZXMuCi0gICAgICAgICAgICBJbiBnZW5lcmFsLCBhIHJlY2lwZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBwaWVjZSBvZgotICAgICAgICAgICAgc29mdHdhcmUuCi0gICAgICAgICAgICBUaGlzIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSBsb2NhdGlvbiBmcm9tIHdoaWNoIHRvIGRvd25sb2FkIHRoZQotICAgICAgICAgICAgdW5hbHRlcmVkIHNvdXJjZSwgYW55IHNvdXJjZSBwYXRjaGVzIHRvIGJlIGFwcGxpZWQgdG8gdGhhdCBzb3VyY2UKLSAgICAgICAgICAgIChpZiBuZWVkZWQpLCB3aGljaCBzcGVjaWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBhcHBseSwKLSAgICAgICAgICAgIGhvdyB0byBjb21waWxlIHRoZSBzb3VyY2UgZmlsZXMsIGFuZCBob3cgdG8gcGFja2FnZSB0aGUgY29tcGlsZWQKLSAgICAgICAgICAgIG91dHB1dC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHRlcm0gInBhY2thZ2UiIGlzIHNvbWV0aW1lcyB1c2VkIHRvIHJlZmVyIHRvIHJlY2lwZXMuIEhvd2V2ZXIsCi0gICAgICAgICAgICBzaW5jZSB0aGUgd29yZCAicGFja2FnZSIgaXMgdXNlZCBmb3IgdGhlIHBhY2thZ2VkIG91dHB1dCBmcm9tIHRoZSBPcGVuRW1iZWRkZWQKLSAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSAoaS5lLiA8ZmlsZW5hbWU+LmlwazwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT4uZGViPC9maWxlbmFtZT4gZmlsZXMpLAotICAgICAgICAgICAgdGhpcyBkb2N1bWVudCBhdm9pZHMgdXNpbmcgdGhlIHRlcm0gInBhY2thZ2UiIHdoZW4gcmVmZXJyaW5nIHRvIHJlY2lwZXMuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nbWV0YWRhdGEtdmlydHVhbC1wcm92aWRlcnMnPgotICAgICAgICA8dGl0bGU+TWV0YWRhdGEgKFZpcnR1YWwgUHJvdmlkZXJzKTwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBQcmlvciB0byB0aGUgYnVpbGQsIGlmIHlvdSBrbm93IHRoYXQgc2V2ZXJhbCBkaWZmZXJlbnQgcmVjaXBlcwotICAgICAgICAgICAgcHJvdmlkZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LCB5b3UgY2FuIHVzZSBhIHZpcnR1YWwgcHJvdmlkZXIKLSAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT52aXJ0dWFsLyo8L2ZpbGVuYW1lPikgYXMgYSBwbGFjZWhvbGRlciBmb3IgdGhlCi0gICAgICAgICAgICBhY3R1YWwgcHJvdmlkZXIuCi0gICAgICAgICAgICBUaGUgYWN0dWFsIHByb3ZpZGVyIHdvdWxkIGJlIGRldGVybWluZWQgYXQgYnVpbGQKLSAgICAgICAgICAgIHRpbWUuCi0gICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBzaG91bGQgYWRkIDxmaWxlbmFtZT52aXJ0dWFsLyo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgdG8gPGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgcmF0aGVyIHRoYW4gbGlzdGluZyB0aGUgc3BlY2lmaWVkIHByb3ZpZGVyLgotICAgICAgICAgICAgWW91IHdvdWxkIHNlbGVjdCB0aGUgYWN0dWFsIHByb3ZpZGVyIGJ5IHNldHRpbmcgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJFRkVSUkVEX1BST1ZJREVSJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZSAoaS5lLiA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvKjwvZmlsZW5hbWU+KQotICAgICAgICAgICAgaW4gdGhlIGJ1aWxkJ3MgY29uZmlndXJhdGlvbiBmaWxlIChlLmcuCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9idWlsZC9jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBBbnkgcmVjaXBlIHRoYXQgUFJPVklERVMgYSA8ZmlsZW5hbWU+dmlydHVhbC8qPC9maWxlbmFtZT4gaXRlbQotICAgICAgICAgICAgICAgIHRoYXQgaXMgdWx0aW1hdGVseSBub3Qgc2VsZWN0ZWQgdGhyb3VnaAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPiBkb2VzIG5vdCBnZXQgYnVpbHQuCi0gICAgICAgICAgICAgICAgUHJldmVudGluZyB0aGVzZSByZWNpcGVzIGZyb20gYnVpbGRpbmcgaXMgdXN1YWxseSB0aGUgZGVzaXJlZAotICAgICAgICAgICAgICAgIGJlaGF2aW9yIHNpbmNlIHRoaXMgbWVjaGFuaXNtJ3MgcHVycG9zZSBpcyB0byBzZWxlY3QgYmV0d2VlbgotICAgICAgICAgICAgICAgIG11dHVhbGx5IGV4Y2x1c2l2ZSBhbHRlcm5hdGl2ZSBwcm92aWRlcnMuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdHMgc3BlY2lmaWMgZXhhbXBsZXMgb2YgdmlydHVhbCBwcm92aWRlcnM6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvbWVzYTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyA8ZmlsZW5hbWU+Z2JtLnBjPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvZWdsPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5lZ2wucGM8L2ZpbGVuYW1lPiBhbmQgcG9zc2libHkKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndheWxhbmQtZWdsLnBjPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvbGliZ2w8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgPGZpbGVuYW1lPmdsLnBjPC9maWxlbmFtZT4gKGkuZS4gbGliR0wpLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2xpYmdsZXMxPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5nbGVzdjFfY20ucGM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAoaS5lLiBsaWJHTEVTdjFfQ00pLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2xpYmdsZXMyPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5nbGVzdjIucGM8L2ZpbGVuYW1lPiAoaS5lLiBsaWJHTEVTdjIpLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3VzaW5ncG9reS1jb21wb25lbnRzLWNsYXNzZXMnPgotICAgICAgICA8dGl0bGU+Q2xhc3NlczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBDbGFzcyBmaWxlcyAoPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4pIGNvbnRhaW4gaW5mb3JtYXRpb24gdGhhdAotICAgICAgICAgICAgaXMgdXNlZnVsIHRvIHNoYXJlIGJldHdlZW4KLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4gZmlsZXMuCi0gICAgICAgICAgICBBbiBleGFtcGxlIGlzIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBjbGFzcywgd2hpY2ggY29udGFpbnMgY29tbW9uIHNldHRpbmdzIGZvciBhbnkgYXBwbGljYXRpb24gdGhhdAotICAgICAgICAgICAgQXV0b3Rvb2xzIHVzZXMuCi0gICAgICAgICAgICBUaGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzJz5DbGFzc2VzPC9saW5rPiIgY2hhcHRlciBwcm92aWRlcwotICAgICAgICAgICAgZGV0YWlscyBhYm91dCBjbGFzc2VzIGFuZCBob3cgdG8gdXNlIHRoZW0uCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ndXNpbmdwb2t5LWNvbXBvbmVudHMtY29uZmlndXJhdGlvbic+Ci0gICAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBjb25maWd1cmF0aW9uIGZpbGVzICg8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPikgZGVmaW5lIHZhcmlvdXMgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSAgICAgICAgICAgIHRoYXQgZ292ZXJuIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgcHJvY2Vzcy4KLSAgICAgICAgICAgIFRoZXNlIGZpbGVzIGZhbGwgaW50byBzZXZlcmFsIGFyZWFzIHRoYXQgZGVmaW5lIG1hY2hpbmUgY29uZmlndXJhdGlvbiBvcHRpb25zLAotICAgICAgICAgICAgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgY29tcGlsZXIgdHVuaW5nIG9wdGlvbnMsIGdlbmVyYWwgY29tbW9uIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgIG9wdGlvbnMsIGFuZCB1c2VyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+LCB3aGljaCBpcyBmb3VuZAotICAgICAgICAgICAgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSJjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbiI+Ci0gICAgPHRpdGxlPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBkb2VzIG1vc3Qgb2YgdGhlIHdvcmsgZm9yIHlvdSB3aGVuIGl0IGNvbWVzIHRvCi0gICAgICAgIGNyZWF0aW5nCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbic+Y3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluczwvbGluaz4uCi0gICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBzb21lIHRlY2huaWNhbCBiYWNrZ3JvdW5kIG9uIGhvdwotICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zIGFyZSBjcmVhdGVkIGFuZCB1c2VkLgotICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0b29sY2hhaW5zLCB5b3UgY2FuIGFsc28gc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+Ci0gICAgICAgIG1hbnVhbC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgSW4gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGNyb3NzLWRldmVsb3BtZW50Ci0gICAgICAgIHRvb2xjaGFpbnMgYXJlIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlIGFuZCBhcHBsaWNhdGlvbnMgdGhhdCBydW4gb24gdGhlCi0gICAgICAgIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgV2l0aCBqdXN0IGEgZmV3IGNvbW1hbmRzLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzCi0gICAgICAgIHRoZXNlIG5lY2Vzc2FyeSB0b29sY2hhaW5zIGZvciB5b3UuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGEgaGlnaC1sZXZlbCBidWlsZCBlbnZpcm9ubWVudCByZWdhcmRpbmcKLSAgICAgICAgdG9vbGNoYWluIGNvbnN0cnVjdGlvbiBhbmQgdXNlLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmciIHdpZHRoPSI4aW4iIGRlcHRoPSI2aW4iIGFsaWduPSJjZW50ZXIiIC8+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIE1vc3Qgb2YgdGhlIHdvcmsgb2NjdXJzIG9uIHRoZSBCdWlsZCBIb3N0LgotICAgICAgICBUaGlzIGlzIHRoZSBtYWNoaW5lIHVzZWQgdG8gYnVpbGQgaW1hZ2VzIGFuZCBnZW5lcmFsbHkgd29yayB3aXRoaW4gdGhlCi0gICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50LgotICAgICAgICBXaGVuIHlvdSBydW4gQml0QmFrZSB0byBjcmVhdGUgYW4gaW1hZ2UsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgIHVzZXMgdGhlIGhvc3QgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+IGNvbXBpbGVyIHRvIGJvb3RzdHJhcCBhCi0gICAgICAgIGNyb3NzLWNvbXBpbGVyIG5hbWVkIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPi4KLSAgICAgICAgVGhlIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPiBjb21waWxlciBpcyB3aGF0IEJpdEJha2UgdXNlcyB0bwotICAgICAgICBjb21waWxlIHNvdXJjZSBmaWxlcyB3aGVuIGNyZWF0aW5nIHRoZSB0YXJnZXQgaW1hZ2UuCi0gICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+IHNpbXBseSBhcyBhbgotICAgICAgICBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBjcm9zcy1jb21waWxlciB0aGF0IGlzIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4KLSAgICAgICAgQml0QmFrZSBvbmx5LgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFRoZSBleHRlbnNpYmxlIFNESyBkb2VzIG5vdCB1c2UKLSAgICAgICAgICAgIDxmaWxlbmFtZT5nY2MtY3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPiBzaW5jZSB0aGlzIFNESwotICAgICAgICAgICAgc2hpcHMgYSBjb3B5IG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFuZCB0aGUgc3lzcm9vdAotICAgICAgICAgICAgd2l0aGluIGl0IGNvbnRhaW5zIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgY2hhaW4gb2YgZXZlbnRzIHRoYXQgb2NjdXJzIHdoZW4gPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+IGlzCi0gICAgICAgIGJvb3RzdHJhcHBlZCBpcyBhcyBmb2xsb3dzOgotICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGdjYyAtPiBiaW51dGlscy1jcm9zcyAtPiBnY2MtY3Jvc3MtaW5pdGlhbCAtPiBsaW51eC1saWJjLWhlYWRlcnMgLT4gZ2xpYmMtaW5pdGlhbCAtPiBnbGliYyAtPiBnY2MtY3Jvc3MgLT4gZ2NjLXJ1bnRpbWUKLSAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBUaGUgYnVpbGQgaG9zdCdzIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5iaW51dGlscy1jcm9zczwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIFRoZSBiYXJlIG1pbmltdW0gYmluYXJ5IHV0aWxpdGllcyBuZWVkZWQgaW4gb3JkZXIgdG8gcnVuCi0gICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5nY2MtY3Jvc3MtaW5pdGlhbDwvZmlsZW5hbWU+IHBoYXNlIG9mIHRoZQotICAgICAgICAgICAgICAgIGJvb3RzdHJhcCBvcGVyYXRpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmdjYy1jcm9zcy1pbml0aWFsPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgQW4gZWFybHkgc3RhZ2Ugb2YgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciBjcmVhdGluZwotICAgICAgICAgICAgICAgIHRoZSBjcm9zcy1jb21waWxlci4KLSAgICAgICAgICAgICAgICBUaGlzIHN0YWdlIGJ1aWxkcyBlbm91Z2ggb2YgdGhlIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICB0aGUgQyBsaWJyYXJ5LCBhbmQgb3RoZXIgcGllY2VzIG5lZWRlZCB0byBmaW5pc2ggYnVpbGRpbmcgdGhlCi0gICAgICAgICAgICAgICAgZmluYWwgY3Jvc3MtY29tcGlsZXIgaW4gbGF0ZXIgc3RhZ2VzLgotICAgICAgICAgICAgICAgIFRoaXMgdG9vbCBpcyBhICJuYXRpdmUiIHBhY2thZ2UgKGkuZS4gaXQgaXMgZGVzaWduZWQgdG8gcnVuIG9uCi0gICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGhvc3QpLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5saW51eC1saWJjLWhlYWRlcnM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBIZWFkZXJzIG5lZWRlZCBmb3IgdGhlIGNyb3NzLWNvbXBpbGVyLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nbGliYy1pbml0aWFsPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgQW4gaW5pdGlhbCB2ZXJzaW9uIG9mIHRoZSBFbWJlZGRlZCBHTElCQyBuZWVkZWQgdG8gYm9vdHN0cmFwCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBzdGFnZSBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgZm9yIHRoZQotICAgICAgICAgICAgICAgIGNyb3NzLWNvbXBpbGVyLgotICAgICAgICAgICAgICAgIFRoaXMgc3RhZ2UgcmVzdWx0cyBpbiB0aGUgYWN0dWFsIGNyb3NzLWNvbXBpbGVyIHRoYXQKLSAgICAgICAgICAgICAgICBCaXRCYWtlIHVzZXMgd2hlbiBpdCBidWlsZHMgYW4gaW1hZ2UgZm9yIGEgdGFyZ2V0ZWQKLSAgICAgICAgICAgICAgICBkZXZpY2UuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgcmVwbGFjaW5nIHRoaXMgY3Jvc3MgY29tcGlsZXIgdG9vbGNoYWluCi0gICAgICAgICAgICAgICAgICAgIHdpdGggYSBjdXN0b20gdmVyc2lvbiwgeW91IG11c3QgcmVwbGFjZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIFRoaXMgdG9vbCBpcyBhbHNvIGEgIm5hdGl2ZSIgcGFja2FnZSAoaS5lLiBpdCBpcwotICAgICAgICAgICAgICAgIGRlc2lnbmVkIHRvIHJ1biBvbiB0aGUgYnVpbGQgaG9zdCkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmdjYy1ydW50aW1lPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgUnVudGltZSBsaWJyYXJpZXMgcmVzdWx0aW5nIGZyb20gdGhlIHRvb2xjaGFpbiBib290c3RyYXBwaW5nCi0gICAgICAgICAgICAgICAgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICBUaGlzIHRvb2wgcHJvZHVjZXMgYSBiaW5hcnkgdGhhdCBjb25zaXN0cyBvZiB0aGUKLSAgICAgICAgICAgICAgICBydW50aW1lIGxpYnJhcmllcyBuZWVkIGZvciB0aGUgdGFyZ2V0ZWQgZGV2aWNlLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgWW91IGNhbiB1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgYW4gaW5zdGFsbGVyIGZvcgotICAgICAgICB0aGUgcmVsb2NhdGFibGUgU0RLIHVzZWQgdG8gZGV2ZWxvcCBhcHBsaWNhdGlvbnMuCi0gICAgICAgIFdoZW4geW91IHJ1biB0aGUgaW5zdGFsbGVyLCBpdCBpbnN0YWxscyB0aGUgdG9vbGNoYWluLCB3aGljaCBjb250YWlucwotICAgICAgICB0aGUgZGV2ZWxvcG1lbnQgdG9vbHMgKGUuZy4sIHRoZQotICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT4pLAotICAgICAgICA8ZmlsZW5hbWU+YmludXRpbHMtY3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPiwgYW5kIG90aGVyCi0gICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGstKjwvZmlsZW5hbWU+IHRvb2xzLAotICAgICAgICB3aGljaCBhcmUgdG9vbHMgbmF0aXZlIHRvIHRoZSBTREsgKGkuZS4gbmF0aXZlIHRvCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfQVJDSCc+PGZpbGVuYW1lPlNES19BUkNIPC9maWxlbmFtZT48L2xpbms+KSwKLSAgICAgICAgeW91IG5lZWQgdG8gY3Jvc3MtY29tcGlsZSBhbmQgdGVzdCB5b3VyIHNvZnR3YXJlLgotICAgICAgICBUaGUgZmlndXJlIHNob3dzIHRoZSBjb21tYW5kcyB5b3UgdXNlIHRvIGVhc2lseSBidWlsZCBvdXQgdGhpcwotICAgICAgICB0b29sY2hhaW4uCi0gICAgICAgIFRoaXMgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGlzIGJ1aWx0IHRvIGV4ZWN1dGUgb24gdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgd2hpY2ggbWlnaHQgb3IgbWlnaHQgbm90IGJlIHRoZSBzYW1lCi0gICAgICAgIG1hY2hpbmUgYXMgdGhlIEJ1aWxkIEhvc3QuCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgSWYgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCwKLSAgICAgICAgICAgIHlvdSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgcHJlLWJ1aWx0IGltYWdlcyB0aGF0IHNoaXAgd2l0aCB0aGUKLSAgICAgICAgICAgIFlvY3RvIFByb2plY3QgYW5kIGFscmVhZHkgY29udGFpbiBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4KLSAgICAgICAgICAgIGluc3RhbGxlcnMuCi0gICAgICAgIDwvbm90ZT4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgSGVyZSBpcyB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgZm9yIHRoZSByZWxvY2F0YWJsZSB0b29sY2hhaW46Ci0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZ2NjIC0+IGJpbnV0aWxzLWNyb3Nzc2RrIC0+IGdjYy1jcm9zc3Nkay1pbml0aWFsIC0+IGxpbnV4LWxpYmMtaGVhZGVycyAtPgotICAgICAgICBnbGliYy1pbml0aWFsIC0+IG5hdGl2ZXNkay1nbGliYyAtPiBnY2MtY3Jvc3NzZGsgLT4gZ2NjLWNyb3NzLWNhbmFkaWFuCi0gICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgVGhlIGJ1aWxkIGhvc3QncyBHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+YmludXRpbHMtY3Jvc3NzZGs8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBUaGUgYmFyZSBtaW5pbXVtIGJpbmFyeSB1dGlsaXRpZXMgbmVlZGVkIGluIG9yZGVyIHRvIHJ1bgotICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Z2NjLWNyb3Nzc2RrLWluaXRpYWw8L2ZpbGVuYW1lPiBwaGFzZSBvZiB0aGUKLSAgICAgICAgICAgICAgICBib290c3RyYXAgb3BlcmF0aW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nY2MtY3Jvc3NzZGstaW5pdGlhbDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIEFuIGVhcmx5IHN0YWdlIG9mIHRoZSBib290c3RyYXAgcHJvY2VzcyBmb3IgY3JlYXRpbmcKLSAgICAgICAgICAgICAgICB0aGUgY3Jvc3MtY29tcGlsZXIuCi0gICAgICAgICAgICAgICAgVGhpcyBzdGFnZSBidWlsZHMgZW5vdWdoIG9mIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nY2MtY3Jvc3NzZGs8L2ZpbGVuYW1lPiBhbmQgc3VwcG9ydGluZyBwaWVjZXMgc28gdGhhdAotICAgICAgICAgICAgICAgIHRoZSBmaW5hbCBzdGFnZSBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgY2FuIHByb2R1Y2UgdGhlCi0gICAgICAgICAgICAgICAgZmluaXNoZWQgY3Jvc3MtY29tcGlsZXIuCi0gICAgICAgICAgICAgICAgVGhpcyB0b29sIGlzIGEgIm5hdGl2ZSIgYmluYXJ5IHRoYXQgcnVucyBvbiB0aGUgYnVpbGQgaG9zdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGludXgtbGliYy1oZWFkZXJzPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgSGVhZGVycyBuZWVkZWQgZm9yIHRoZSBjcm9zcy1jb21waWxlci4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Z2xpYmMtaW5pdGlhbDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIEFuIGluaXRpYWwgdmVyc2lvbiBvZiB0aGUgRW1iZWRkZWQgR0xJQkMgbmVlZGVkIHRvIGJvb3RzdHJhcAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGstZ2xpYmM8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bmF0aXZlc2RrLWdsaWJjPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgVGhlIEVtYmVkZGVkIEdMSUJDIG5lZWRlZCB0byBib290c3RyYXAgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zc3NkazwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nY2MtY3Jvc3NzZGs8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBUaGUgZmluYWwgc3RhZ2Ugb2YgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciB0aGUKLSAgICAgICAgICAgICAgICByZWxvY2F0YWJsZSBjcm9zcy1jb21waWxlci4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdjYy1jcm9zc3NkazwvZmlsZW5hbWU+IGlzIGEgdHJhbnNpdG9yeSBjb21waWxlcgotICAgICAgICAgICAgICAgIGFuZCBuZXZlciBsZWF2ZXMgdGhlIGJ1aWxkIGhvc3QuCi0gICAgICAgICAgICAgICAgSXRzIHB1cnBvc2UgaXMgdG8gaGVscCBpbiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgdG8gY3JlYXRlIHRoZQotICAgICAgICAgICAgICAgIGV2ZW50dWFsIHJlbG9jYXRhYmxlIDxmaWxlbmFtZT5nY2MtY3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGNvbXBpbGVyLCB3aGljaCBpcyByZWxvY2F0YWJsZS4KLSAgICAgICAgICAgICAgICBUaGlzIHRvb2wgaXMgYWxzbyBhICJuYXRpdmUiIHBhY2thZ2UgKGkuZS4gaXQgaXMKLSAgICAgICAgICAgICAgICBkZXNpZ25lZCB0byBydW4gb24gdGhlIGJ1aWxkIGhvc3QpLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nY2MtY3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBUaGUgZmluYWwgcmVsb2NhdGFibGUgY3Jvc3MtY29tcGlsZXIuCi0gICAgICAgICAgICAgICAgV2hlbiBydW4gb24gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgIHRoaXMgdG9vbAotICAgICAgICAgICAgICAgIHByb2R1Y2VzIGV4ZWN1dGFibGUgY29kZSB0aGF0IHJ1bnMgb24gdGhlIHRhcmdldCBkZXZpY2UuCi0gICAgICAgICAgICAgICAgT25seSBvbmUgY3Jvc3MtY2FuYWRpYW4gY29tcGlsZXIgaXMgcHJvZHVjZWQgcGVyIGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgIHNpbmNlIHRoZXkgY2FuIGJlIHRhcmdldGVkIGF0IGRpZmZlcmVudCBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucwotICAgICAgICAgICAgICAgIHVzaW5nIGNvbmZpZ3VyYXRpb25zIHBhc3NlZCB0byB0aGUgY29tcGlsZXIgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICBjb21waWxlIGNvbW1hbmRzLgotICAgICAgICAgICAgICAgIFRoaXMgY2lyY3VtdmVudHMgdGhlIG5lZWQgZm9yIG11bHRpcGxlIGNvbXBpbGVycyBhbmQgdGh1cwotICAgICAgICAgICAgICAgIHJlZHVjZXMgdGhlIHNpemUgb2YgdGhlIHRvb2xjaGFpbnMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxub3RlPgotICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYWR2YW50YWdlcyBnYWluZWQgd2hlbiBidWlsZGluZyBhCi0gICAgICAgIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBpbnN0YWxsZXIsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQotICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgotICAgIDwvbm90ZT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9InNoYXJlZC1zdGF0ZS1jYWNoZSI+Ci0gICAgPHRpdGxlPlNoYXJlZCBTdGF0ZSBDYWNoZTwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQnkgZGVzaWduLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBidWlsZHMgZXZlcnl0aGluZyBmcm9tIHNjcmF0Y2ggdW5sZXNzCi0gICAgICAgIEJpdEJha2UgY2FuIGRldGVybWluZSB0aGF0IHBhcnRzIGRvIG5vdCBuZWVkIHRvIGJlIHJlYnVpbHQuCi0gICAgICAgIEZ1bmRhbWVudGFsbHksIGJ1aWxkaW5nIGZyb20gc2NyYXRjaCBpcyBhdHRyYWN0aXZlIGFzIGl0IG1lYW5zIGFsbCBwYXJ0cyBhcmUKLSAgICAgICAgYnVpbHQgZnJlc2ggYW5kIHRoZXJlIGlzIG5vIHBvc3NpYmlsaXR5IG9mIHN0YWxlIGRhdGEgY2F1c2luZyBwcm9ibGVtcy4KLSAgICAgICAgV2hlbiBkZXZlbG9wZXJzIGhpdCBwcm9ibGVtcywgdGhleSB0eXBpY2FsbHkgZGVmYXVsdCBiYWNrIHRvIGJ1aWxkaW5nIGZyb20gc2NyYXRjaAotICAgICAgICBzbyB0aGV5IGtub3cgdGhlIHN0YXRlIG9mIHRoaW5ncyBmcm9tIHRoZSBzdGFydC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQnVpbGRpbmcgYW4gaW1hZ2UgZnJvbSBzY3JhdGNoIGlzIGJvdGggYW4gYWR2YW50YWdlIGFuZCBhIGRpc2FkdmFudGFnZSB0byB0aGUgcHJvY2Vzcy4KLSAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIGJ1aWxkaW5nIGZyb20gc2NyYXRjaCBlbnN1cmVzIHRoYXQKLSAgICAgICAgZXZlcnl0aGluZyBpcyBjdXJyZW50IGFuZCBzdGFydHMgZnJvbSBhIGtub3duIHN0YXRlLgotICAgICAgICBIb3dldmVyLCBidWlsZGluZyBmcm9tIHNjcmF0Y2ggYWxzbyB0YWtlcyBtdWNoIGxvbmdlciBhcyBpdCBnZW5lcmFsbHkgbWVhbnMKLSAgICAgICAgcmVidWlsZGluZyB0aGluZ3MgdGhhdCBkbyBub3QgbmVjZXNzYXJpbHkgbmVlZCB0byBiZSByZWJ1aWx0LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpbXBsZW1lbnRzIHNoYXJlZCBzdGF0ZSBjb2RlIHRoYXQgc3VwcG9ydHMgaW5jcmVtZW50YWwgYnVpbGRzLgotICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNoYXJlZCBzdGF0ZSBjb2RlIGFuc3dlcnMgdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMgdGhhdAotICAgICAgICB3ZXJlIGZ1bmRhbWVudGFsIHJvYWRibG9ja3Mgd2l0aGluIHRoZSBPcGVuRW1iZWRkZWQgaW5jcmVtZW50YWwgYnVpbGQgc3VwcG9ydCBzeXN0ZW06Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+V2hhdCBwaWVjZXMgb2YgdGhlIHN5c3RlbSBoYXZlIGNoYW5nZWQgYW5kIHdoYXQgcGllY2VzIGhhdmUKLSAgICAgICAgICAgICAgICBub3QgY2hhbmdlZD88L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Ib3cgYXJlIGNoYW5nZWQgcGllY2VzIG9mIHNvZnR3YXJlIHJlbW92ZWQgYW5kIHJlcGxhY2VkPzwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkhvdyBhcmUgcHJlLWJ1aWx0IGNvbXBvbmVudHMgdGhhdCBkbyBub3QgbmVlZCB0byBiZSByZWJ1aWx0IGZyb20gc2NyYXRjaAotICAgICAgICAgICAgICAgIHVzZWQgd2hlbiB0aGV5IGFyZSBhdmFpbGFibGU/PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb3IgdGhlIGZpcnN0IHF1ZXN0aW9uLCB0aGUgYnVpbGQgc3lzdGVtIGRldGVjdHMgY2hhbmdlcyBpbiB0aGUgImlucHV0cyIgdG8gYSBnaXZlbiB0YXNrIGJ5Ci0gICAgICAgIGNyZWF0aW5nIGEgY2hlY2tzdW0gKG9yIHNpZ25hdHVyZSkgb2YgdGhlIHRhc2sncyBpbnB1dHMuCi0gICAgICAgIElmIHRoZSBjaGVja3N1bSBjaGFuZ2VzLCB0aGUgc3lzdGVtIGFzc3VtZXMgdGhlIGlucHV0cyBoYXZlIGNoYW5nZWQgYW5kIHRoZSB0YXNrIG5lZWRzIHRvIGJlCi0gICAgICAgIHJlcnVuLgotICAgICAgICBGb3IgdGhlIHNlY29uZCBxdWVzdGlvbiwgdGhlIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBjb2RlIHRyYWNrcyB3aGljaCB0YXNrcyBhZGQgd2hpY2ggb3V0cHV0Ci0gICAgICAgIHRvIHRoZSBidWlsZCBwcm9jZXNzLgotICAgICAgICBUaGlzIG1lYW5zIHRoZSBvdXRwdXQgZnJvbSBhIGdpdmVuIHRhc2sgY2FuIGJlIHJlbW92ZWQsIHVwZ3JhZGVkIG9yIG90aGVyd2lzZSBtYW5pcHVsYXRlZC4KLSAgICAgICAgVGhlIHRoaXJkIHF1ZXN0aW9uIGlzIHBhcnRseSBhZGRyZXNzZWQgYnkgdGhlIHNvbHV0aW9uIGZvciB0aGUgc2Vjb25kIHF1ZXN0aW9uCi0gICAgICAgIGFzc3VtaW5nIHRoZSBidWlsZCBzeXN0ZW0gY2FuIGZldGNoIHRoZSBzc3RhdGUgb2JqZWN0cyBmcm9tIHJlbW90ZSBsb2NhdGlvbnMgYW5kCi0gICAgICAgIGluc3RhbGwgdGhlbSBpZiB0aGV5IGFyZSBkZWVtZWQgdG8gYmUgdmFsaWQuCi0gICAgPC9wYXJhPgotCi0gICAgPG5vdGU+Ci0gICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRvZXMgbm90IG1haW50YWluCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L2xpbms+IGluZm9ybWF0aW9uCi0gICAgICAgIGFzIHBhcnQgb2YgdGhlIHNoYXJlZCBzdGF0ZSBwYWNrYWdlcy4KLSAgICAgICAgQ29uc2VxdWVudGx5LCBjb25zaWRlcmF0aW9ucyBleGlzdCB0aGF0IGFmZmVjdCBtYWludGFpbmluZyBzaGFyZWQKLSAgICAgICAgc3RhdGUgZmVlZHMuCi0gICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSAgICAgICAgd29ya3Mgd2l0aCBwYWNrYWdlcyBhbmQgY2FuCi0gICAgICAgIHRyYWNrIGluY3JlbWVudGluZyA8ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPiBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYXV0b21hdGljYWxseS1pbmNyZW1lbnRpbmctYS1iaW5hcnktcGFja2FnZS1yZXZpc2lvbi1udW1iZXInPkF1dG9tYXRpY2FsbHkgSW5jcmVtZW50aW5nIGEgQmluYXJ5IFBhY2thZ2UgUmV2aXNpb24gTnVtYmVyPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgIDwvbm90ZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgcmVzdCBvZiB0aGlzIHNlY3Rpb24gZ29lcyBpbnRvIGRldGFpbCBhYm91dCB0aGUgb3ZlcmFsbCBpbmNyZW1lbnRhbCBidWlsZAotICAgICAgICBhcmNoaXRlY3R1cmUsIHRoZSBjaGVja3N1bXMgKHNpZ25hdHVyZXMpLCBzaGFyZWQgc3RhdGUsIGFuZCBzb21lIHRpcHMgYW5kIHRyaWNrcy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8c2VjdGlvbiBpZD0nb3ZlcmFsbC1hcmNoaXRlY3R1cmUnPgotICAgICAgICA8dGl0bGU+T3ZlcmFsbCBBcmNoaXRlY3R1cmU8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiBkZXRlcm1pbmluZyB3aGF0IHBhcnRzIG9mIHRoZSBzeXN0ZW0gbmVlZCB0byBiZSBidWlsdCwgQml0QmFrZQotICAgICAgICAgICAgd29ya3Mgb24gYSBwZXItdGFzayBiYXNpcyByYXRoZXIgdGhhbiBhIHBlci1yZWNpcGUgYmFzaXMuCi0gICAgICAgICAgICBZb3UgbWlnaHQgd29uZGVyIHdoeSB1c2luZyBhIHBlci10YXNrIGJhc2lzIGlzIHByZWZlcnJlZCBvdmVyIGEgcGVyLXJlY2lwZSBiYXNpcy4KLSAgICAgICAgICAgIFRvIGhlbHAgZXhwbGFpbiwgY29uc2lkZXIgaGF2aW5nIHRoZSBJUEsgcGFja2FnaW5nIGJhY2tlbmQgZW5hYmxlZCBhbmQgdGhlbiBzd2l0Y2hpbmcgdG8gREVCLgotICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHRhc2sgb3V0cHV0cyBhcmUgc3RpbGwgdmFsaWQuCi0gICAgICAgICAgICBIb3dldmVyLCB3aXRoIGEgcGVyLXJlY2lwZSBhcHByb2FjaCwgdGhlIGJ1aWxkIHdvdWxkIG5vdCBpbmNsdWRlIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPi5kZWI8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHdvdWxkIGhhdmUgdG8gaW52YWxpZGF0ZSB0aGUgd2hvbGUgYnVpbGQgYW5kIHJlcnVuIGl0LgotICAgICAgICAgICAgUmVydW5uaW5nIGV2ZXJ5dGhpbmcgaXMgbm90IHRoZSBiZXN0IHNvbHV0aW9uLgotICAgICAgICAgICAgQWxzbywgaW4gdGhpcyBjYXNlLCB0aGUgY29yZSBtdXN0IGJlICJ0YXVnaHQiIG11Y2ggYWJvdXQgc3BlY2lmaWMgdGFza3MuCi0gICAgICAgICAgICBUaGlzIG1ldGhvZG9sb2d5IGRvZXMgbm90IHNjYWxlIHdlbGwgYW5kIGRvZXMgbm90IGFsbG93IHVzZXJzIHRvIGVhc2lseSBhZGQgbmV3IHRhc2tzCi0gICAgICAgICAgICBpbiBsYXllcnMgb3IgYXMgZXh0ZXJuYWwgcmVjaXBlcyB3aXRob3V0IHRvdWNoaW5nIHRoZSBwYWNrYWdlZC1zdGFnaW5nIGNvcmUuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nY2hlY2tzdW1zJz4KLSAgICAgICAgPHRpdGxlPkNoZWNrc3VtcyAoU2lnbmF0dXJlcyk8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHNoYXJlZCBzdGF0ZSBjb2RlIHVzZXMgYSBjaGVja3N1bSwgd2hpY2ggaXMgYSB1bmlxdWUgc2lnbmF0dXJlIG9mIGEgdGFzaydzCi0gICAgICAgICAgICBpbnB1dHMsIHRvIGRldGVybWluZSBpZiBhIHRhc2sgbmVlZHMgdG8gYmUgcnVuIGFnYWluLgotICAgICAgICAgICAgQmVjYXVzZSBpdCBpcyBhIGNoYW5nZSBpbiBhIHRhc2sncyBpbnB1dHMgdGhhdCB0cmlnZ2VycyBhIHJlcnVuLCB0aGUgcHJvY2VzcwotICAgICAgICAgICAgbmVlZHMgdG8gZGV0ZWN0IGFsbCB0aGUgaW5wdXRzIHRvIGEgZ2l2ZW4gdGFzay4KLSAgICAgICAgICAgIEZvciBzaGVsbCB0YXNrcywgdGhpcyB0dXJucyBvdXQgdG8gYmUgZmFpcmx5IGVhc3kgYmVjYXVzZQotICAgICAgICAgICAgdGhlIGJ1aWxkIHByb2Nlc3MgZ2VuZXJhdGVzIGEgInJ1biIgc2hlbGwgc2NyaXB0IGZvciBlYWNoIHRhc2sgYW5kCi0gICAgICAgICAgICBpdCBpcyBwb3NzaWJsZSB0byBjcmVhdGUgYSBjaGVja3N1bSB0aGF0IGdpdmVzIHlvdSBhIGdvb2QgaWRlYSBvZiB3aGVuCi0gICAgICAgICAgICB0aGUgdGFzaydzIGRhdGEgY2hhbmdlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gY29tcGxpY2F0ZSB0aGUgcHJvYmxlbSwgdGhlcmUgYXJlIHRoaW5ncyB0aGF0IHNob3VsZCBub3QgYmUKLSAgICAgICAgICAgIGluY2x1ZGVkIGluIHRoZSBjaGVja3N1bS4KLSAgICAgICAgICAgIEZpcnN0LCB0aGVyZSBpcyB0aGUgYWN0dWFsIHNwZWNpZmljIGJ1aWxkIHBhdGggb2YgYSBnaXZlbiB0YXNrIC0KLSAgICAgICAgICAgIHRoZSA8bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICBJdCBkb2VzIG5vdCBtYXR0ZXIgaWYgdGhlIHdvcmsgZGlyZWN0b3J5IGNoYW5nZXMgYmVjYXVzZSBpdCBzaG91bGQKLSAgICAgICAgICAgIG5vdCBhZmZlY3QgdGhlIG91dHB1dCBmb3IgdGFyZ2V0IHBhY2thZ2VzLgotICAgICAgICAgICAgQWxzbywgdGhlIGJ1aWxkIHByb2Nlc3MgaGFzIHRoZSBvYmplY3RpdmUgb2YgbWFraW5nIG5hdGl2ZQotICAgICAgICAgICAgb3IgY3Jvc3MgcGFja2FnZXMgcmVsb2NhdGFibGUuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBCb3RoIG5hdGl2ZSBhbmQgY3Jvc3MgcGFja2FnZXMgcnVuIG9uIHRoZSBidWlsZCBob3N0LgotICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGNyb3NzIHBhY2thZ2VzIGdlbmVyYXRlIG91dHB1dCBmb3IgdGhlIHRhcmdldAotICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIFRoZSBjaGVja3N1bSB0aGVyZWZvcmUgbmVlZHMgdG8gZXhjbHVkZQotICAgICAgICAgICAgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIFRoZSBzaW1wbGlzdGljIGFwcHJvYWNoIGZvciBleGNsdWRpbmcgdGhlIHdvcmsgZGlyZWN0b3J5IGlzIHRvIHNldAotICAgICAgICAgICAgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiB0byBzb21lIGZpeGVkIHZhbHVlIGFuZCBjcmVhdGUgdGhlCi0gICAgICAgICAgICBjaGVja3N1bSBmb3IgdGhlICJydW4iIHNjcmlwdC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQW5vdGhlciBwcm9ibGVtIHJlc3VsdHMgZnJvbSB0aGUgInJ1biIgc2NyaXB0cyBjb250YWluaW5nIGZ1bmN0aW9ucyB0aGF0Ci0gICAgICAgICAgICBtaWdodCBvciBtaWdodCBub3QgZ2V0IGNhbGxlZC4KLSAgICAgICAgICAgIFRoZSBpbmNyZW1lbnRhbCBidWlsZCBzb2x1dGlvbiBjb250YWlucyBjb2RlIHRoYXQgZmlndXJlcyBvdXQgZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICBiZXR3ZWVuIHNoZWxsIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgIFRoaXMgY29kZSBpcyB1c2VkIHRvIHBydW5lIHRoZSAicnVuIiBzY3JpcHRzIGRvd24gdG8gdGhlIG1pbmltdW0gc2V0LAotICAgICAgICAgICAgdGhlcmVieSBhbGxldmlhdGluZyB0aGlzIHByb2JsZW0gYW5kIG1ha2luZyB0aGUgInJ1biIgc2NyaXB0cyBtdWNoIG1vcmUKLSAgICAgICAgICAgIHJlYWRhYmxlIGFzIGEgYm9udXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFNvIGZhciB3ZSBoYXZlIHNvbHV0aW9ucyBmb3Igc2hlbGwgc2NyaXB0cy4KLSAgICAgICAgICAgIFdoYXQgYWJvdXQgUHl0aG9uIHRhc2tzPwotICAgICAgICAgICAgVGhlIHNhbWUgYXBwcm9hY2ggYXBwbGllcyBldmVuIHRob3VnaCB0aGVzZSB0YXNrcyBhcmUgbW9yZSBkaWZmaWN1bHQuCi0gICAgICAgICAgICBUaGUgcHJvY2VzcyBuZWVkcyB0byBmaWd1cmUgb3V0IHdoYXQgdmFyaWFibGVzIGEgUHl0aG9uIGZ1bmN0aW9uIGFjY2Vzc2VzCi0gICAgICAgICAgICBhbmQgd2hhdCBmdW5jdGlvbnMgaXQgY2FsbHMuCi0gICAgICAgICAgICBBZ2FpbiwgdGhlIGluY3JlbWVudGFsIGJ1aWxkIHNvbHV0aW9uIGNvbnRhaW5zIGNvZGUgdGhhdCBmaXJzdCBmaWd1cmVzIG91dAotICAgICAgICAgICAgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBkZXBlbmRlbmNpZXMsIGFuZCB0aGVuIGNyZWF0ZXMgYSBjaGVja3N1bSBmb3IgdGhlIGRhdGEKLSAgICAgICAgICAgIHVzZWQgYXMgdGhlIGlucHV0IHRvIHRoZSB0YXNrLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBMaWtlIHRoZSA8ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+IGNhc2UsIHNpdHVhdGlvbnMgZXhpc3Qgd2hlcmUgZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICBzaG91bGQgYmUgaWdub3JlZC4KLSAgICAgICAgICAgIEZvciB0aGVzZSBjYXNlcywgeW91IGNhbiBpbnN0cnVjdCB0aGUgYnVpbGQgcHJvY2VzcyB0byBpZ25vcmUgYSBkZXBlbmRlbmN5Ci0gICAgICAgICAgICBieSB1c2luZyBhIGxpbmUgbGlrZSB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBQQUNLQUdFX0FSQ0hTW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FIgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhpcyBleGFtcGxlIGVuc3VyZXMgdGhhdCB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0FSQ0hTJz48ZmlsZW5hbWU+UEFDS0FHRV9BUkNIUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUgZG9lcyBub3QKLSAgICAgICAgICAgIGRlcGVuZCBvbiB0aGUgdmFsdWUgb2YKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgIGV2ZW4gaWYgaXQgZG9lcyByZWZlcmVuY2UgaXQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEVxdWFsbHksIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB3ZSBuZWVkIHRvIGFkZCBkZXBlbmRlbmNpZXMgQml0QmFrZSBpcyBub3QgYWJsZSB0byBmaW5kLgotICAgICAgICAgICAgWW91IGNhbiBhY2NvbXBsaXNoIHRoaXMgYnkgdXNpbmcgYSBsaW5lIGxpa2UgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgIFBBQ0tBR0VfQVJDSFNbdmFyZGVwc10gPSAiTUFDSElORSIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBleHBsaWNpdGx5IGFkZHMgdGhlIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUgYXMgYQotICAgICAgICAgICAgZGVwZW5kZW5jeSBmb3IgPGZpbGVuYW1lPlBBQ0tBR0VfQVJDSFM8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQ29uc2lkZXIgYSBjYXNlIHdpdGggaW4tbGluZSBQeXRob24sIGZvciBleGFtcGxlLCB3aGVyZSBCaXRCYWtlIGlzIG5vdAotICAgICAgICAgICAgYWJsZSB0byBmaWd1cmUgb3V0IGRlcGVuZGVuY2llcy4KLSAgICAgICAgICAgIFdoZW4gcnVubmluZyBpbiBkZWJ1ZyBtb2RlIChpLmUuIHVzaW5nIDxmaWxlbmFtZT4tREREPC9maWxlbmFtZT4pLCBCaXRCYWtlCi0gICAgICAgICAgICBwcm9kdWNlcyBvdXRwdXQgd2hlbiBpdCBkaXNjb3ZlcnMgc29tZXRoaW5nIGZvciB3aGljaCBpdCBjYW5ub3QgZmlndXJlIG91dAotICAgICAgICAgICAgZGVwZW5kZW5jaWVzLgotICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBoYXMgY3VycmVudGx5IG5vdCBtYW5hZ2VkIHRvIGNvdmVyIHRob3NlIGRlcGVuZGVuY2llcwotICAgICAgICAgICAgaW4gZGV0YWlsIGFuZCBpcyBhd2FyZSBvZiB0aGUgbmVlZCB0byBmaXggdGhpcyBzaXR1YXRpb24uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRodXMgZmFyLCB0aGlzIHNlY3Rpb24gaGFzIGxpbWl0ZWQgZGlzY3Vzc2lvbiB0byB0aGUgZGlyZWN0IGlucHV0cyBpbnRvIGEgdGFzay4KLSAgICAgICAgICAgIEluZm9ybWF0aW9uIGJhc2VkIG9uIGRpcmVjdCBpbnB1dHMgaXMgcmVmZXJyZWQgdG8gYXMgdGhlICJiYXNlaGFzaCIgaW4gdGhlCi0gICAgICAgICAgICBjb2RlLgotICAgICAgICAgICAgSG93ZXZlciwgdGhlcmUgaXMgc3RpbGwgdGhlIHF1ZXN0aW9uIG9mIGEgdGFzaydzIGluZGlyZWN0IGlucHV0cyAtIHRoZQotICAgICAgICAgICAgdGhpbmdzIHRoYXQgd2VyZSBhbHJlYWR5IGJ1aWx0IGFuZCBwcmVzZW50IGluIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgVGhlIGNoZWNrc3VtIChvciBzaWduYXR1cmUpIGZvciBhIHBhcnRpY3VsYXIgdGFzayBuZWVkcyB0byBhZGQgdGhlIGhhc2hlcwotICAgICAgICAgICAgb2YgYWxsIHRoZSB0YXNrcyBvbiB3aGljaCB0aGUgcGFydGljdWxhciB0YXNrIGRlcGVuZHMuCi0gICAgICAgICAgICBDaG9vc2luZyB3aGljaCBkZXBlbmRlbmNpZXMgdG8gYWRkIGlzIGEgcG9saWN5IGRlY2lzaW9uLgotICAgICAgICAgICAgSG93ZXZlciwgdGhlIGVmZmVjdCBpcyB0byBnZW5lcmF0ZSBhIG1hc3RlciBjaGVja3N1bSB0aGF0IGNvbWJpbmVzIHRoZSBiYXNlaGFzaAotICAgICAgICAgICAgYW5kIHRoZSBoYXNoZXMgb2YgdGhlIHRhc2sncyBkZXBlbmRlbmNpZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEF0IHRoZSBjb2RlIGxldmVsLCB0aGVyZSBhcmUgYSB2YXJpZXR5IG9mIHdheXMgYm90aCB0aGUgYmFzZWhhc2ggYW5kIHRoZQotICAgICAgICAgICAgZGVwZW5kZW50IHRhc2sgaGFzaGVzIGNhbiBiZSBpbmZsdWVuY2VkLgotICAgICAgICAgICAgV2l0aGluIHRoZSBCaXRCYWtlIGNvbmZpZ3VyYXRpb24gZmlsZSwgd2UgY2FuIGdpdmUgQml0QmFrZSBzb21lIGV4dHJhIGluZm9ybWF0aW9uCi0gICAgICAgICAgICB0byBoZWxwIGl0IGNvbnN0cnVjdCB0aGUgYmFzZWhhc2guCi0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0YXRlbWVudCBlZmZlY3RpdmVseSByZXN1bHRzIGluIGEgbGlzdCBvZiBnbG9iYWwgdmFyaWFibGUKLSAgICAgICAgICAgIGRlcGVuZGVuY3kgZXhjbHVkZXMgLSB2YXJpYWJsZXMgbmV2ZXIgaW5jbHVkZWQgaW4gYW55IGNoZWNrc3VtOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBCQl9IQVNIQkFTRV9XSElURUxJU1QgPz0gIlRNUERJUiBGSUxFIFBBVEggUFdEIEJCX1RBU0tIQVNIIEJCUEFUSCBETF9ESVIgXAotICAgICAgICAgU1NUQVRFX0RJUiBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxFX0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFRFUk0gXAotICAgICAgICAgVVNFUiBGSUxFU1BBVEggU1RBR0lOR19ESVJfSE9TVCBTVEFHSU5HX0RJUl9UQVJHRVQgQ09SRUJBU0UgUFJTRVJWX0hPU1QgXAotICAgICAgICAgUFJTRVJWX0RVTVBESVIgUFJTRVJWX0RVTVBGSUxFIFBSU0VSVl9MT0NLRE9XTiBQQVJBTExFTF9NQUtFIFwKLSAgICAgICAgIENDQUNIRV9ESVIgRVhURVJOQUxfVE9PTENIQUlOIENDQUNIRSBDQ0FDSEVfRElTQUJMRSBMSUNFTlNFX1BBVEggU0RLUEtHU1VGRklYIgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgZXhjbHVkZXMKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgc2luY2UgdGhhdCB2YXJpYWJsZSBpcyBhY3R1YWxseSBjb25zdHJ1Y3RlZCBhcyBhIHBhdGggd2l0aGluCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+LCB3aGljaCBpcyBvbgotICAgICAgICAgICAgdGhlIHdoaXRlbGlzdC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHJ1bGVzIGZvciBkZWNpZGluZyB3aGljaCBoYXNoZXMgb2YgZGVwZW5kZW50IHRhc2tzIHRvIGluY2x1ZGUgdGhyb3VnaAotICAgICAgICAgICAgZGVwZW5kZW5jeSBjaGFpbnMgYXJlIG1vcmUgY29tcGxleCBhbmQgYXJlIGdlbmVyYWxseSBhY2NvbXBsaXNoZWQgd2l0aCBhCi0gICAgICAgICAgICBQeXRob24gZnVuY3Rpb24uCi0gICAgICAgICAgICBUaGUgY29kZSBpbiA8ZmlsZW5hbWU+bWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5PC9maWxlbmFtZT4gc2hvd3MgdHdvIGV4YW1wbGVzCi0gICAgICAgICAgICBvZiB0aGlzIGFuZCBhbHNvIGlsbHVzdHJhdGVzIGhvdyB5b3UgY2FuIGluc2VydCB5b3VyIG93biBwb2xpY3kgaW50byB0aGUgc3lzdGVtCi0gICAgICAgICAgICBpZiBzbyBkZXNpcmVkLgotICAgICAgICAgICAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIHR3byBiYXNpYyBzaWduYXR1cmUgZ2VuZXJhdG9ycwotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nb2UtY29yZSc+T0UtQ29yZTwvbGluaz4gdXNlczogICJPRUJhc2ljIiBhbmQKLSAgICAgICAgICAgICJPRUJhc2ljSGFzaCIuCi0gICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGVyZSBpcyBhIGR1bW15ICJub29wIiBzaWduYXR1cmUgaGFuZGxlciBlbmFibGVkIGluIEJpdEJha2UuCi0gICAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkIGZyb20gcHJldmlvdXMgdmVyc2lvbnMuCi0gICAgICAgICAgICBPRS1Db3JlIHVzZXMgdGhlICJPRUJhc2ljSGFzaCIgc2lnbmF0dXJlIGhhbmRsZXIgYnkgZGVmYXVsdAotICAgICAgICAgICAgdGhyb3VnaCB0aGlzIHNldHRpbmcgaW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBCQl9TSUdOQVRVUkVfSEFORExFUiA/PSAiT0VCYXNpY0hhc2giCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGUgIk9FQmFzaWNIYXNoIiA8ZmlsZW5hbWU+QkJfU0lHTkFUVVJFX0hBTkRMRVI8L2ZpbGVuYW1lPiBpcyB0aGUgc2FtZSBhcyB0aGUKLSAgICAgICAgICAgICJPRUJhc2ljIiB2ZXJzaW9uIGJ1dCBhZGRzIHRoZSB0YXNrIGhhc2ggdG8gdGhlIHN0YW1wIGZpbGVzLgotICAgICAgICAgICAgVGhpcyByZXN1bHRzIGluIGFueQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPgotICAgICAgICAgICAgY2hhbmdlIHRoYXQgY2hhbmdlcyB0aGUgdGFzayBoYXNoLCBhdXRvbWF0aWNhbGx5Ci0gICAgICAgICAgICBjYXVzaW5nIHRoZSB0YXNrIHRvIGJlIHJ1biBhZ2Fpbi4KLSAgICAgICAgICAgIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCB0byBidW1wIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YWx1ZXMsIGFuZCBjaGFuZ2VzIHRvIE1ldGFkYXRhIGF1dG9tYXRpY2FsbHkgcmlwcGxlIGFjcm9zcyB0aGUgYnVpbGQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEl0IGlzIGFsc28gd29ydGggbm90aW5nIHRoYXQgdGhlIGVuZCByZXN1bHQgb2YgdGhlc2Ugc2lnbmF0dXJlIGdlbmVyYXRvcnMgaXMgdG8KLSAgICAgICAgICAgIG1ha2Ugc29tZSBkZXBlbmRlbmN5IGFuZCBoYXNoIGluZm9ybWF0aW9uIGF2YWlsYWJsZSB0byB0aGUgYnVpbGQuCi0gICAgICAgICAgICBUaGlzIGluZm9ybWF0aW9uIGluY2x1ZGVzOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPkJCX0JBU0VIQVNIX3Rhc2stPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2UgaGFzaGVzIGZvciBlYWNoIHRhc2sgaW4gdGhlIHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5CQl9CQVNFSEFTSF88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5maWxlbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPjo8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBoYXNoZXMgZm9yIGVhY2ggZGVwZW5kZW50IHRhc2suCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+QkJIQVNIREVQU188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5maWxlbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPjo8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgdGFzayBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggdGFzay4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5CQl9UQVNLSEFTSDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgaGFzaCBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGFzay4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdzaGFyZWQtc3RhdGUnPgotICAgICAgICA8dGl0bGU+U2hhcmVkIFN0YXRlPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIENoZWNrc3VtcyBhbmQgZGVwZW5kZW5jaWVzLCBhcyBkaXNjdXNzZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24sIHNvbHZlIGhhbGYgdGhlCi0gICAgICAgICAgICBwcm9ibGVtIG9mIHN1cHBvcnRpbmcgYSBzaGFyZWQgc3RhdGUuCi0gICAgICAgICAgICBUaGUgb3RoZXIgcGFydCBvZiB0aGUgcHJvYmxlbSBpcyBiZWluZyBhYmxlIHRvIHVzZSBjaGVja3N1bSBpbmZvcm1hdGlvbiBkdXJpbmcgdGhlIGJ1aWxkCi0gICAgICAgICAgICBhbmQgYmVpbmcgYWJsZSB0byByZXVzZSBvciByZWJ1aWxkIHNwZWNpZmljIGNvbXBvbmVudHMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtc3N0YXRlJz48ZmlsZW5hbWU+c3N0YXRlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBjbGFzcyBpcyBhIHJlbGF0aXZlbHkgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiBob3cgdG8gImNhcHR1cmUiCi0gICAgICAgICAgICBhIHNuYXBzaG90IG9mIGEgZ2l2ZW4gdGFzay4KLSAgICAgICAgICAgIFRoZSBpZGVhIGlzIHRoYXQgdGhlIGJ1aWxkIHByb2Nlc3MgZG9lcyBub3QgY2FyZSBhYm91dCB0aGUgc291cmNlIG9mIGEgdGFzaydzIG91dHB1dC4KLSAgICAgICAgICAgIE91dHB1dCBjb3VsZCBiZSBmcmVzaGx5IGJ1aWx0IG9yIGl0IGNvdWxkIGJlIGRvd25sb2FkZWQgYW5kIHVucGFja2VkIGZyb20KLSAgICAgICAgICAgIHNvbWV3aGVyZSAtIHRoZSBidWlsZCBwcm9jZXNzIGRvZXMgbm90IG5lZWQgdG8gd29ycnkgYWJvdXQgaXRzIG9yaWdpbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBvdXRwdXQsIG9uZSBpcyBqdXN0IGFib3V0IGNyZWF0aW5nIGEgZGlyZWN0b3J5Ci0gICAgICAgICAgICBpbiA8bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSBpcyB0aGUgb3V0cHV0IG9mIGVpdGhlcgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBvcgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgVGhlIG90aGVyIHR5cGUgb2Ygb3V0cHV0IG9jY3VycyB3aGVuIGEgc2V0IG9mIGRhdGEgaXMgbWVyZ2VkIGludG8gYSBzaGFyZWQgZGlyZWN0b3J5Ci0gICAgICAgICAgICB0cmVlIHN1Y2ggYXMgdGhlIHN5c3Jvb3QuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gaGFzIHRyaWVkIHRvIGtlZXAgdGhlIGRldGFpbHMgb2YgdGhlCi0gICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBoaWRkZW4gaW4gPGZpbGVuYW1lPnNzdGF0ZTwvZmlsZW5hbWU+IGNsYXNzLgotICAgICAgICAgICAgRnJvbSBhIHVzZXIncyBwZXJzcGVjdGl2ZSwgYWRkaW5nIHNoYXJlZCBzdGF0ZSB3cmFwcGluZyB0byBhIHRhc2sKLSAgICAgICAgICAgIGlzIGFzIHNpbXBsZSBhcyB0aGlzCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtZGVwbG95Jz48ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBleGFtcGxlIHRha2VuIGZyb20gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1kZXBsb3knPjxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIGNsYXNzOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBERVBMT1lESVIgPSAiJHtXT1JLRElSfS9kZXBsb3ktJHtQTn0iCi0gICAgIFNTVEFURVRBU0tTICs9ICJkb19kZXBsb3kiCi0gICAgIGRvX2RlcGxveVtzc3RhdGUtaW5wdXRkaXJzXSA9ICIke0RFUExPWURJUn0iCi0gICAgIGRvX2RlcGxveVtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtERVBMT1lfRElSX0lNQUdFfSIKLQotICAgICBweXRob24gZG9fZGVwbG95X3NldHNjZW5lICgpIHsKLSAgICAgICAgIHNzdGF0ZV9zZXRzY2VuZShkKQotICAgICB9Ci0gICAgIGFkZHRhc2sgZG9fZGVwbG95X3NldHNjZW5lCi0gICAgIGRvX2RlcGxveVtkaXJzXSA9ICIke0RFUExPWURJUn0gJHtCfSIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBleHBsYWlucyB0aGUgcHJldmlvdXMgZXhhbXBsZToKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBZGRpbmcgImRvX2RlcGxveSIgdG8gPGZpbGVuYW1lPlNTVEFURVRBU0tTPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgYWRkcyBzb21lIHJlcXVpcmVkIHNzdGF0ZS1yZWxhdGVkIHByb2Nlc3NpbmcsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zc3RhdGUnPjxmaWxlbmFtZT5zc3RhdGU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRvIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1kZXBsb3knPjxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdGFzay4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveVtzc3RhdGUtaW5wdXRkaXJzXSA9ICIke0RFUExPWURJUn0iPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGVjbGFyZXMgdGhhdCA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gcGxhY2VzIGl0cwotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgaW4gPGZpbGVuYW1lPiR7REVQTE9ZRElSfTwvZmlsZW5hbWU+IHdoZW4gcnVuCi0gICAgICAgICAgICAgICAgICAgIG5vcm1hbGx5IChpLmUuIHdoZW4gbm90IHVzaW5nIHRoZSBzc3RhdGUgY2FjaGUpLgotICAgICAgICAgICAgICAgICAgICBUaGlzIG91dHB1dCBiZWNvbWVzIHRoZSBpbnB1dCB0byB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95W3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke0RFUExPWV9ESVJfSU1BR0V9IjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgY2F1c2VzIHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgIGNvcGllZCB0byA8ZmlsZW5hbWU+JHtERVBMT1lfRElSX0lNQUdFfTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPiBpcyBub3QgYWxyZWFkeSBpbgotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZSBvciBpZiBpdHMgaW5wdXQgY2hlY2tzdW0KLSAgICAgICAgICAgICAgICAgICAgICAgIChzaWduYXR1cmUpIGhhcyBjaGFuZ2VkIGZyb20gd2hlbiB0aGUgb3V0cHV0IHdhcwotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkLCB0aGUgdGFzayB3aWxsIGJlIHJ1biB0byBwb3B1bGF0ZSB0aGUgc2hhcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSBjYWNoZSwgYWZ0ZXIgd2hpY2ggdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlIGNhY2hlIGlzIGNvcGllZCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7REVQTE9ZX0RJUl9JTUFHRX08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPiBpcyBpbiB0aGUgc2hhcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSBjYWNoZSBhbmQgaXRzIHNpZ25hdHVyZSBpbmRpY2F0ZXMgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZCBvdXRwdXQgaXMgc3RpbGwgdmFsaWQgKGkuZS4gaWYgbm8KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbGV2YW50IHRhc2sgaW5wdXRzIGhhdmUgY2hhbmdlZCksIHRoZW4gdGhlIGNvbnRlbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlIHdpbGwgYmUgY29waWVkIGRpcmVjdGx5IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtERVBMT1lfRElSX0lNQUdFfTwvZmlsZW5hbWU+IGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveV9zZXRzY2VuZTwvZmlsZW5hbWU+IHRhc2sgaW5zdGVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwaW5nIHRoZSA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdGFzay4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgdGFzayBkZWZpbml0aW9uIGlzIGdsdWUgbG9naWMgbmVlZGVkIHRvIG1ha2UKLSAgICAgICAgICAgICAgICAgICAgdGhlIHByZXZpb3VzIHNldHRpbmdzIGVmZmVjdGl2ZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBweXRob24gZG9fZGVwbG95X3NldHNjZW5lICgpIHsKLSAgICAgICAgIHNzdGF0ZV9zZXRzY2VuZShkKQotICAgICB9Ci0gICAgIGFkZHRhc2sgZG9fZGVwbG95X3NldHNjZW5lCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZV9zZXRzY2VuZSgpPC9maWxlbmFtZT4gdGFrZXMgdGhlIGZsYWdzCi0gICAgICAgICAgICAgICAgICAgIGFib3ZlIGFzIGlucHV0IGFuZCBhY2NlbGVyYXRlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IHRhc2sgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIGNhY2hlIGlmIHBvc3NpYmxlLgotICAgICAgICAgICAgICAgICAgICBJZiB0aGUgdGFzayB3YXMgYWNjZWxlcmF0ZWQsCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc3RhdGVfc2V0c2NlbmUoKTwvZmlsZW5hbWU+IHJldHVybnMgVHJ1ZS4KLSAgICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBpdCByZXR1cm5zIEZhbHNlLCBhbmQgdGhlIG5vcm1hbAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdGFzayBydW5zLgotICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNzZXRzY2VuZSc+c2V0c2NlbmU8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX2RlcGxveVtkaXJzXSA9ICIke0RFUExPWURJUn0gJHtCfSI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBsaW5lIGNyZWF0ZXMgPGZpbGVuYW1lPiR7REVQTE9ZRElSfTwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtCfTwvZmlsZW5hbWU+IGJlZm9yZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IHRhc2sgcnVucywgYW5kIGFsc28gc2V0cwotICAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdG8KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7Qn08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPlZhcmlhYmxlIEZsYWdzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gY2FzZXMgd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc3RhdGUtaW5wdXRkaXJzPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3N0YXRlLW91dHB1dGRpcnM8L2ZpbGVuYW1lPiB3b3VsZCBiZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUsIHlvdSBjYW4gdXNlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3N0YXRlLXBsYWluZGlyczwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIHByZXNlcnZlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UEtHRH08L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1BLR0RFU1R9PC9maWxlbmFtZT4gb3V0cHV0IGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2ssIHVzZSB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBkb19wYWNrYWdlW3NzdGF0ZS1wbGFpbmRpcnNdID0gIiR7UEtHRH0gJHtQS0dERVNUfSIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3N0YXRlLWlucHV0ZGlyczwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZS1vdXRwdXRkaXJzPC9maWxlbmFtZT4gY2FuIGFsc28gYmUgdXNlZAotICAgICAgICAgICAgICAgICAgICAgd2l0aCBtdWx0aXBsZSBkaXJlY3Rvcmllcy4KLSAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGRlY2xhcmVzCi0gICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEtHREVTVFdPUks8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TSExJQldPUks8L2ZpbGVuYW1lPiBhcyBzaGFyZWQgc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgIGlucHV0IGRpcmVjdG9yaWVzLCB3aGljaCBwb3B1bGF0ZXMgdGhlIHNoYXJlZCBzdGF0ZQotICAgICAgICAgICAgICAgICAgICAgY2FjaGUsIGFuZCA8ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TSExJQlNESVI8L2ZpbGVuYW1lPiBhcyB0aGUgY29ycmVzcG9uZGluZwotICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIG91dHB1dCBkaXJlY3RvcmllczoKLSAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZG9fcGFja2FnZVtzc3RhdGUtaW5wdXRkaXJzXSA9ICIke1BLR0RFU1RXT1JLfSAke1NITElCU1dPUktESVJ9IgotICAgICBkb19wYWNrYWdlW3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke1BLR0RBVEFfRElSfSAke1NITElCU0RJUn0iCi0gICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgVGhlc2UgbWV0aG9kcyBhbHNvIGluY2x1ZGUgdGhlIGFiaWxpdHkgdG8gdGFrZSBhIGxvY2tmaWxlCi0gICAgICAgICAgICAgICAgICAgICB3aGVuIG1hbmlwdWxhdGluZyBzaGFyZWQgc3RhdGUgZGlyZWN0b3J5IHN0cnVjdHVyZXMsCi0gICAgICAgICAgICAgICAgICAgICBmb3IgY2FzZXMgd2hlcmUgZmlsZSBhZGRpdGlvbnMgb3IgcmVtb3ZhbHMgYXJlIHNlbnNpdGl2ZToKLSAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZG9fcGFja2FnZVtzc3RhdGUtbG9ja2ZpbGVdID0gIiR7UEFDS0FHRUxPQ0t9IgotICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi08IS0tCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB3ZSBhZGQgc29tZSBleHRyYSBmbGFncyB0byB0aGUgdGFzaywgYSBuYW1lIGZpZWxkICgiZGVwbG95IiksIGFuCi0gICAgICAgICAgICBpbnB1dCBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRhc2sgc2VuZHMgZGF0YSwgYW5kIHRoZSBvdXRwdXQKLSAgICAgICAgICAgIGRpcmVjdG9yeSB3aGVyZSB0aGUgZGF0YSBmcm9tIHRoZSB0YXNrIHNob3VsZCBldmVudHVhbGx5IGJlIGNvcGllZC4KLSAgICAgICAgICAgIFdlIGFsc28gYWRkIGEgPGZpbGVuYW1lPl9zZXRzY2VuZTwvZmlsZW5hbWU+IHZhcmlhbnQgb2YgdGhlIHRhc2sgYW5kIGFkZCB0aGUgdGFzawotICAgICAgICAgICAgbmFtZSB0byB0aGUgPGZpbGVuYW1lPlNTVEFURVRBU0tTPC9maWxlbmFtZT4gbGlzdC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBkaXJlY3Rvcnkgd2hvc2UgY29udGVudHMgeW91IG5lZWQgdG8gcHJlc2VydmUsIHlvdSBjYW4gZG8gdGhpcyB3aXRoCi0gICAgICAgICAgICBhIGxpbmUgbGlrZSB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBkb19wYWNrYWdlW3NzdGF0ZS1wbGFpbmRpcnNdID0gIiR7UEtHRH0gJHtQS0dERVNUfSIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoaXMgbWV0aG9kLCBhcyB3ZWxsIGFzIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgYWxzbyB3b3JrcyBmb3IgbXVsdGlwbGUgZGlyZWN0b3JpZXMuCi0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGRvX3BhY2thZ2Vbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtQS0dERVNUV09SS30gJHtTSExJQlNXT1JLRElSfSIKLSAgICAgZG9fcGFja2FnZVtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtQS0dEQVRBX0RJUn0gJHtTSExJQlNESVJ9IgotICAgICBkb19wYWNrYWdlW3NzdGF0ZS1sb2NrZmlsZV0gPSAiJHtQQUNLQUdFTE9DS30iCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGVzZSBtZXRob2RzIGFsc28gaW5jbHVkZSB0aGUgYWJpbGl0eSB0byB0YWtlIGEgbG9ja2ZpbGUgd2hlbiBtYW5pcHVsYXRpbmcKLSAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSBkaXJlY3Rvcnkgc3RydWN0dXJlcyBzaW5jZSBzb21lIGNhc2VzIGFyZSBzZW5zaXRpdmUgdG8gZmlsZQotICAgICAgICAgICAgYWRkaXRpb25zIG9yIHJlbW92YWxzLgotICAgICAgICA8L3BhcmE+Ci0tLT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJlaGluZCB0aGUgc2NlbmVzLCB0aGUgc2hhcmVkIHN0YXRlIGNvZGUgd29ya3MgYnkgbG9va2luZyBpbgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L2xpbms+IGFuZAotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9NSVJST1JTJz48ZmlsZW5hbWU+U1NUQVRFX01JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIGZvciBzaGFyZWQgc3RhdGUgZmlsZXMuCi0gICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFNTVEFURV9NSVJST1JTID89ICJcCi0gICAgIGZpbGU6Ly8uKiBodHRwOi8vc29tZXNlcnZlci50bGQvc2hhcmUvc3N0YXRlL1BBVEg7ZG93bmxvYWRmaWxlbmFtZT1QQVRIIFxuIFwKLSAgICAgZmlsZTovLy4qIGZpbGU6Ly8vc29tZS9sb2NhbC9kaXIvc3N0YXRlL1BBVEgiCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgc2hhcmVkIHN0YXRlIGRpcmVjdG9yeSAoPGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPikgaXMKLSAgICAgICAgICAgICAgICBvcmdhbml6ZWQgaW50byB0d28tY2hhcmFjdGVyIHN1YmRpcmVjdG9yaWVzLCB3aGVyZSB0aGUgc3ViZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgbmFtZXMgYXJlIGJhc2VkIG9uIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiB0aGUgaGFzaC4KLSAgICAgICAgICAgICAgICBJZiB0aGUgc2hhcmVkIHN0YXRlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGEgbWlycm9yIGhhcyB0aGUKLSAgICAgICAgICAgICAgICBzYW1lIHN0cnVjdHVyZSBhcyA8ZmlsZW5hbWU+U1NUQVRFX0RJUjwvZmlsZW5hbWU+LCB5b3UgbXVzdAotICAgICAgICAgICAgICAgIHNwZWNpZnkgIlBBVEgiIGFzIHBhcnQgb2YgdGhlIFVSSSB0byBlbmFibGUgdGhlIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgIHRvIG1hcCB0byB0aGUgYXBwcm9wcmlhdGUgc3ViZGlyZWN0b3J5LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgc2hhcmVkIHN0YXRlIHBhY2thZ2UgdmFsaWRpdHkgY2FuIGJlIGRldGVjdGVkIGp1c3QgYnkgbG9va2luZyBhdCB0aGUKLSAgICAgICAgICAgIGZpbGVuYW1lIHNpbmNlIHRoZSBmaWxlbmFtZSBjb250YWlucyB0aGUgdGFzayBjaGVja3N1bSAob3Igc2lnbmF0dXJlKSBhcwotICAgICAgICAgICAgZGVzY3JpYmVkIGVhcmxpZXIgaW4gdGhpcyBzZWN0aW9uLgotICAgICAgICAgICAgSWYgYSB2YWxpZCBzaGFyZWQgc3RhdGUgcGFja2FnZSBpcyBmb3VuZCwgdGhlIGJ1aWxkIHByb2Nlc3MgZG93bmxvYWRzIGl0Ci0gICAgICAgICAgICBhbmQgdXNlcyBpdCB0byBhY2NlbGVyYXRlIHRoZSB0YXNrLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2Vzc2VzIHVzZSB0aGUgPGZpbGVuYW1lPipfc2V0c2NlbmU8L2ZpbGVuYW1lPiB0YXNrcwotICAgICAgICAgICAgZm9yIHRoZSB0YXNrIGFjY2VsZXJhdGlvbiBwaGFzZS4KLSAgICAgICAgICAgIEJpdEJha2UgZ29lcyB0aHJvdWdoIHRoaXMgcGhhc2UgYmVmb3JlIHRoZSBtYWluIGV4ZWN1dGlvbiBjb2RlIGFuZCB0cmllcwotICAgICAgICAgICAgdG8gYWNjZWxlcmF0ZSBhbnkgdGFza3MgZm9yIHdoaWNoIGl0IGNhbiBmaW5kIHNoYXJlZCBzdGF0ZSBwYWNrYWdlcy4KLSAgICAgICAgICAgIElmIGEgc2hhcmVkIHN0YXRlIHBhY2thZ2UgZm9yIGEgdGFzayBpcyBhdmFpbGFibGUsIHRoZSBzaGFyZWQgc3RhdGUKLSAgICAgICAgICAgIHBhY2thZ2UgaXMgdXNlZC4KLSAgICAgICAgICAgIFRoaXMgbWVhbnMgdGhlIHRhc2sgYW5kIGFueSB0YXNrcyBvbiB3aGljaCBpdCBpcyBkZXBlbmRlbnQgYXJlIG5vdAotICAgICAgICAgICAgZXhlY3V0ZWQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFzIGEgcmVhbCB3b3JsZCBleGFtcGxlLCB0aGUgYWltIGlzIHdoZW4gYnVpbGRpbmcgYW4gSVBLLWJhc2VkIGltYWdlLAotICAgICAgICAgICAgb25seSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2lwayc+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfaXBrPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB0YXNrcyB3b3VsZCBoYXZlIHRoZWlyCi0gICAgICAgICAgICBzaGFyZWQgc3RhdGUgcGFja2FnZXMgZmV0Y2hlZCBhbmQgZXh0cmFjdGVkLgotICAgICAgICAgICAgU2luY2UgdGhlIHN5c3Jvb3QgaXMgbm90IHVzZWQsIGl0IHdvdWxkIG5ldmVyIGdldCBleHRyYWN0ZWQuCi0gICAgICAgICAgICBUaGlzIGlzIGFub3RoZXIgcmVhc29uIHdoeSBhIHRhc2stYmFzZWQgYXBwcm9hY2ggaXMgcHJlZmVycmVkIG92ZXIgYQotICAgICAgICAgICAgcmVjaXBlLWJhc2VkIGFwcHJvYWNoLCB3aGljaCB3b3VsZCBoYXZlIHRvIGluc3RhbGwgdGhlIG91dHB1dCBmcm9tIGV2ZXJ5IHRhc2suCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ndGlwcy1hbmQtdHJpY2tzJz4KLSAgICAgICAgPHRpdGxlPlRpcHMgYW5kIFRyaWNrczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgY29kZSBpbiB0aGUgYnVpbGQgc3lzdGVtIHRoYXQgc3VwcG9ydHMgaW5jcmVtZW50YWwgYnVpbGRzIGlzIG5vdAotICAgICAgICAgICAgc2ltcGxlIGNvZGUuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJlc2VudHMgc29tZSB0aXBzIGFuZCB0cmlja3MgdGhhdCBoZWxwIHlvdSB3b3JrIGFyb3VuZAotICAgICAgICAgICAgaXNzdWVzIHJlbGF0ZWQgdG8gc2hhcmVkIHN0YXRlIGNvZGUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nZGVidWdnaW5nJz4KLSAgICAgICAgICAgIDx0aXRsZT5EZWJ1Z2dpbmc8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBTZWVpbmcgd2hhdCBtZXRhZGF0YSB3ZW50IGludG8gY3JlYXRpbmcgdGhlIGlucHV0IHNpZ25hdHVyZQotICAgICAgICAgICAgICAgIG9mIGEgc2hhcmVkIHN0YXRlIChzc3RhdGUpIHRhc2sgY2FuIGJlIGEgdXNlZnVsIGRlYnVnZ2luZyBhaWQuCi0gICAgICAgICAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4gc2lnbmF0dXJlIGluZm9ybWF0aW9uCi0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4pIGZpbGVzIGluCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdmlldyBhbmQgaW50ZXJwcmV0IGluZm9ybWF0aW9uIGluCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpZ2luZm88L2ZpbGVuYW1lPiBmaWxlcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZ3Bva3ktdmlld2luZy10YXNrLXZhcmlhYmxlLWRlcGVuZGVuY2llcyc+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdpbnZhbGlkYXRpbmctc2hhcmVkLXN0YXRlJz4KLSAgICAgICAgICAgIDx0aXRsZT5JbnZhbGlkYXRpbmcgU2hhcmVkIFN0YXRlPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBjaGVja3N1bXMgYW5kIHNoYXJlZCBzdGF0ZQotICAgICAgICAgICAgICAgIGNhY2hlIHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgcmVidWlsZGluZyB0YXNrcy4KLSAgICAgICAgICAgICAgICBDb2xsZWN0aXZlbHksIHRoaXMgc2NoZW1lIGlzIGtub3duIGFzICJzaGFyZWQgc3RhdGUgY29kZS4iCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIHdpdGggYWxsIHNjaGVtZXMsIHRoaXMgb25lIGhhcyBzb21lIGRyYXdiYWNrcy4KLSAgICAgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSBjb3VsZCBtYWtlIGltcGxpY2l0IGNoYW5nZXMgdG8geW91cgotICAgICAgICAgICAgICAgIGNvZGUgdGhhdCB0aGUgY2hlY2tzdW0gY2FsY3VsYXRpb25zIGRvIG5vdCB0YWtlIGludG8KLSAgICAgICAgICAgICAgICBhY2NvdW50LgotICAgICAgICAgICAgICAgIFRoZXNlIGltcGxpY2l0IGNoYW5nZXMgYWZmZWN0IGEgdGFzaydzIG91dHB1dCBidXQgZG8gbm90IHRyaWdnZXIKLSAgICAgICAgICAgICAgICB0aGUgc2hhcmVkIHN0YXRlIGNvZGUgaW50byByZWJ1aWxkaW5nIGEgcmVjaXBlLgotICAgICAgICAgICAgICAgIENvbnNpZGVyIGFuIGV4YW1wbGUgZHVyaW5nIHdoaWNoIGEgdG9vbCBjaGFuZ2VzIGl0cyBvdXRwdXQuCi0gICAgICAgICAgICAgICAgQXNzdW1lIHRoYXQgdGhlIG91dHB1dCBvZiA8ZmlsZW5hbWU+cnBtZGVwczwvZmlsZW5hbWU+IGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBvZiB0aGUgY2hhbmdlIHNob3VsZCBiZSB0aGF0IGFsbCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZTwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlX3dyaXRlX3JwbTwvZmlsZW5hbWU+IHNoYXJlZCBzdGF0ZSBjYWNoZQotICAgICAgICAgICAgICAgIGl0ZW1zIGJlY29tZSBpbnZhbGlkLgotICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGJlY2F1c2UgdGhlIGNoYW5nZSB0byB0aGUgb3V0cHV0IGlzCi0gICAgICAgICAgICAgICAgZXh0ZXJuYWwgdG8gdGhlIGNvZGUgYW5kIHRoZXJlZm9yZSBpbXBsaWNpdCwKLSAgICAgICAgICAgICAgICB0aGUgYXNzb2NpYXRlZCBzaGFyZWQgc3RhdGUgY2FjaGUgaXRlbXMgZG8gbm90IGJlY29tZQotICAgICAgICAgICAgICAgIGludmFsaWRhdGVkLgotICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGJ1aWxkIHByb2Nlc3MgdXNlcyB0aGUgY2FjaGVkIGl0ZW1zIHJhdGhlcgotICAgICAgICAgICAgICAgIHRoYW4gcnVubmluZyB0aGUgdGFzayBhZ2Fpbi4KLSAgICAgICAgICAgICAgICBPYnZpb3VzbHksIHRoZXNlIHR5cGVzIG9mIGltcGxpY2l0IGNoYW5nZXMgY2FuIGNhdXNlIHByb2JsZW1zLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUbyBhdm9pZCB0aGVzZSBwcm9ibGVtcyBkdXJpbmcgdGhlIGJ1aWxkLCB5b3UgbmVlZCB0bwotICAgICAgICAgICAgICAgIHVuZGVyc3RhbmQgdGhlIGVmZmVjdHMgb2YgYW55IGNoYW5nZXMgeW91IG1ha2UuCi0gICAgICAgICAgICAgICAgUmVhbGl6ZSB0aGF0IGNoYW5nZXMgeW91IG1ha2UgZGlyZWN0bHkgdG8gYSBmdW5jdGlvbgotICAgICAgICAgICAgICAgIGFyZSBhdXRvbWF0aWNhbGx5IGZhY3RvcmVkIGludG8gdGhlIGNoZWNrc3VtIGNhbGN1bGF0aW9uLgotICAgICAgICAgICAgICAgIFRodXMsIHRoZXNlIGV4cGxpY2l0IGNoYW5nZXMgaW52YWxpZGF0ZSB0aGUgYXNzb2NpYXRlZCBhcmVhIG9mCi0gICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIGNhY2hlLgotICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHlvdSBuZWVkIHRvIGJlIGF3YXJlIG9mIGFueSBpbXBsaWNpdCBjaGFuZ2VzIHRoYXQKLSAgICAgICAgICAgICAgICBhcmUgbm90IG9idmlvdXMgY2hhbmdlcyB0byB0aGUgY29kZSBhbmQgY291bGQgYWZmZWN0IHRoZSBvdXRwdXQKLSAgICAgICAgICAgICAgICBvZiBhIGdpdmVuIHRhc2suCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFdoZW4geW91IGlkZW50aWZ5IGFuIGltcGxpY2l0IGNoYW5nZSwgeW91IGNhbiBlYXNpbHkgdGFrZSBzdGVwcwotICAgICAgICAgICAgICAgIHRvIGludmFsaWRhdGUgdGhlIGNhY2hlIGFuZCBmb3JjZSB0aGUgdGFza3MgdG8gcnVuLgotICAgICAgICAgICAgICAgIFRoZSBzdGVwcyB5b3UgY2FuIHRha2UgYXJlIGFzIHNpbXBsZSBhcyBjaGFuZ2luZyBhIGZ1bmN0aW9uJ3MKLSAgICAgICAgICAgICAgICBjb21tZW50cyBpbiB0aGUgc291cmNlIGNvZGUuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIGludmFsaWRhdGUgcGFja2FnZSBzaGFyZWQgc3RhdGUgZmlsZXMsIGNoYW5nZQotICAgICAgICAgICAgICAgIHRoZSBjb21tZW50IHN0YXRlbWVudHMgb2YKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBvciB0aGUgY29tbWVudHMgb2Ygb25lIG9mIHRoZSBmdW5jdGlvbnMgaXQgY2FsbHMuCi0gICAgICAgICAgICAgICAgRXZlbiB0aG91Z2ggdGhlIGNoYW5nZSBpcyBwdXJlbHkgY29zbWV0aWMsIGl0IGNhdXNlcyB0aGUKLSAgICAgICAgICAgICAgICBjaGVja3N1bSB0byBiZSByZWNhbGN1bGF0ZWQgYW5kIGZvcmNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICAgICAgc3lzdGVtIHRvIHJ1biB0aGUgdGFzayBhZ2Fpbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgb2YgYSBjb21taXQgdGhhdCBtYWtlcyBhIGNvc21ldGljIGNoYW5nZSB0bwotICAgICAgICAgICAgICAgIGludmFsaWRhdGUgc2hhcmVkIHN0YXRlLCBzZWUgdGhpcwotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L2NvbW1pdC9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzP2lkPTczN2Y4YmJiNGYyN2I0ODM3MDQ3Y2I5YjRmYmZlMDFkZmRlMzZkNTQnPmNvbW1pdDwvdWxpbms+LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+Ci0gICAgPHRpdGxlPkF1dG9tYXRpY2FsbHkgQWRkZWQgUnVudGltZSBEZXBlbmRlbmNpZXM8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF1dG9tYXRpY2FsbHkgYWRkcyBjb21tb24gdHlwZXMgb2YKLSAgICAgICAgcnVudGltZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBwYWNrYWdlcywgd2hpY2ggbWVhbnMgdGhhdCB5b3UgZG8gbm90Ci0gICAgICAgIG5lZWQgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoZSBwYWNrYWdlcyB1c2luZwotICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPi4KLSAgICAgICAgVGhyZWUgYXV0b21hdGljIG1lY2hhbmlzbXMgZXhpc3QgKDxmaWxlbmFtZT5zaGxpYmRlcHM8L2ZpbGVuYW1lPiwKLSAgICAgICAgPGZpbGVuYW1lPnBjZGVwczwvZmlsZW5hbWU+LCBhbmQgPGZpbGVuYW1lPmRlcGNoYWluczwvZmlsZW5hbWU+KSB0aGF0Ci0gICAgICAgIGhhbmRsZSBzaGFyZWQgbGlicmFyaWVzLCBwYWNrYWdlIGNvbmZpZ3VyYXRpb24gKHBrZy1jb25maWcpIG1vZHVsZXMsCi0gICAgICAgIGFuZCA8ZmlsZW5hbWU+LWRldjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+LWRiZzwvZmlsZW5hbWU+IHBhY2thZ2VzLAotICAgICAgICByZXNwZWN0aXZlbHkuCi0gICAgICAgIEZvciBvdGhlciB0eXBlcyBvZiBydW50aW1lIGRlcGVuZGVuY2llcywgeW91IG11c3QgbWFudWFsbHkgZGVjbGFyZQotICAgICAgICB0aGUgZGVwZW5kZW5jaWVzLgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaGxpYmRlcHM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBEdXJpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBvZiBlYWNoIHJlY2lwZSwgYWxsIHNoYXJlZCBsaWJyYXJpZXMgaW5zdGFsbGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgIHJlY2lwZSBhcmUgbG9jYXRlZC4KLSAgICAgICAgICAgICAgICBGb3IgZWFjaCBzaGFyZWQgbGlicmFyeSwgdGhlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgc2hhcmVkCi0gICAgICAgICAgICAgICAgbGlicmFyeSBpcyByZWdpc3RlcmVkIGFzIHByb3ZpZGluZyB0aGUgc2hhcmVkIGxpYnJhcnkuCi0gICAgICAgICAgICAgICAgTW9yZSBzcGVjaWZpY2FsbHksIHRoZSBwYWNrYWdlIGlzIHJlZ2lzdGVyZWQgYXMgcHJvdmlkaW5nIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvbmFtZSc+c29uYW1lPC91bGluaz4KLSAgICAgICAgICAgICAgICBvZiB0aGUgbGlicmFyeS4KLSAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIHNoYXJlZC1saWJyYXJ5LXRvLXBhY2thZ2UgbWFwcGluZwotICAgICAgICAgICAgICAgIGlzIHNhdmVkIGdsb2JhbGx5IGluCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBLR0RBVEFfRElSJz48ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBieSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2suPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+U2ltdWx0YW5lb3VzbHksIGFsbCBleGVjdXRhYmxlcyBhbmQgc2hhcmVkIGxpYnJhcmllcwotICAgICAgICAgICAgICAgIGluc3RhbGxlZCBieSB0aGUgcmVjaXBlIGFyZSBpbnNwZWN0ZWQgdG8gc2VlIHdoYXQgc2hhcmVkCi0gICAgICAgICAgICAgICAgbGlicmFyaWVzIHRoZXkgbGluayBhZ2FpbnN0LgotICAgICAgICAgICAgICAgIEZvciBlYWNoIHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY3kgdGhhdCBpcyBmb3VuZCwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPiBpcyBxdWVyaWVkIHRvCi0gICAgICAgICAgICAgICAgc2VlIGlmIHNvbWUgcGFja2FnZSAobGlrZWx5IGZyb20gYSBkaWZmZXJlbnQgcmVjaXBlKSBjb250YWlucwotICAgICAgICAgICAgICAgIHRoZSBzaGFyZWQgbGlicmFyeS4KLSAgICAgICAgICAgICAgICBJZiBzdWNoIGEgcGFja2FnZSBpcyBmb3VuZCwgYSBydW50aW1lIGRlcGVuZGVuY3kgaXMgYWRkZWQgZnJvbQotICAgICAgICAgICAgICAgIHRoZSBwYWNrYWdlIHRoYXQgZGVwZW5kcyBvbiB0aGUgc2hhcmVkIGxpYnJhcnkgdG8gdGhlIHBhY2thZ2UKLSAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBsaWJyYXJ5LjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHJ1bnRpbWUgZGVwZW5kZW5jeSBhbHNvIGluY2x1ZGVzCi0gICAgICAgICAgICAgICAgYSB2ZXJzaW9uIHJlc3RyaWN0aW9uLgotICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiByZXN0cmljdGlvbiBzcGVjaWZpZXMgdGhhdCBhdCBsZWFzdCB0aGUgY3VycmVudAotICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHBhY2thZ2UgdGhhdCBwcm92aWRlcyB0aGUgc2hhcmVkIGxpYnJhcnkgbXVzdCBiZQotICAgICAgICAgICAgICAgIHVzZWQsIGFzIGlmCi0gICAgICAgICAgICAgICAgIjxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT4gKD49IDxyZXBsYWNlYWJsZT52ZXJzaW9uPC9yZXBsYWNlYWJsZT4pIgotICAgICAgICAgICAgICAgIGhhZCBiZWVuIGFkZGVkIHRvCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICAgICAgVGhpcyBmb3JjZXMgYW4gdXBncmFkZSBvZiB0aGUgcGFja2FnZSBjb250YWluaW5nIHRoZSBzaGFyZWQKLSAgICAgICAgICAgICAgICBsaWJyYXJ5IHdoZW4gaW5zdGFsbGluZyB0aGUgcGFja2FnZSB0aGF0IGRlcGVuZHMgb24gdGhlCi0gICAgICAgICAgICAgICAgbGlicmFyeSwgaWYgbmVlZGVkLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSB3YW50IHRvIGF2b2lkIGEgcGFja2FnZSBiZWluZyByZWdpc3RlcmVkIGFzCi0gICAgICAgICAgICAgICAgcHJvdmlkaW5nIGEgcGFydGljdWxhciBzaGFyZWQgbGlicmFyeSAoZS5nLiBiZWNhdXNlIHRoZSBsaWJyYXJ5Ci0gICAgICAgICAgICAgICAgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5KSwgdGhlbiBhZGQgdGhlIGxpYnJhcnkgdG8KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJJVkFURV9MSUJTJz48ZmlsZW5hbWU+UFJJVkFURV9MSUJTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgaW5zaWRlIHRoZSBwYWNrYWdlJ3MgcmVjaXBlLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wY2RlcHM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBEdXJpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBvZiBlYWNoIHJlY2lwZSwgYWxsIHBrZy1jb25maWcgbW9kdWxlcwotICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Ki5wYzwvZmlsZW5hbWU+IGZpbGVzKSBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwZSBhcmUKLSAgICAgICAgICAgICAgICBsb2NhdGVkLgotICAgICAgICAgICAgICAgIEZvciBlYWNoIG1vZHVsZSwgdGhlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlIGlzCi0gICAgICAgICAgICAgICAgcmVnaXN0ZXJlZCBhcyBwcm92aWRpbmcgdGhlIG1vZHVsZS4KLSAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIG1vZHVsZS10by1wYWNrYWdlIG1hcHBpbmcgaXMgc2F2ZWQgZ2xvYmFsbHkgaW4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGJ5IHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlZGF0YSc+PGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzay48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5TaW11bHRhbmVvdXNseSwgYWxsIHBrZy1jb25maWcgbW9kdWxlcyBpbnN0YWxsZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgcmVjaXBlIGFyZSBpbnNwZWN0ZWQgdG8gc2VlIHdoYXQgb3RoZXIgcGtnLWNvbmZpZyBtb2R1bGVzIHRoZXkKLSAgICAgICAgICAgICAgICBkZXBlbmQgb24uCi0gICAgICAgICAgICAgICAgQSBtb2R1bGUgaXMgc2VlbiBhcyBkZXBlbmRpbmcgb24gYW5vdGhlciBtb2R1bGUgaWYgaXQgY29udGFpbnMKLSAgICAgICAgICAgICAgICBhICJSZXF1aXJlczoiIGxpbmUgdGhhdCBzcGVjaWZpZXMgdGhlIG90aGVyIG1vZHVsZS4KLSAgICAgICAgICAgICAgICBGb3IgZWFjaCBtb2R1bGUgZGVwZW5kZW5jeSwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPiBpcyBxdWVyaWVkIHRvIHNlZSBpZiBzb21lCi0gICAgICAgICAgICAgICAgcGFja2FnZSBjb250YWlucyB0aGUgbW9kdWxlLgotICAgICAgICAgICAgICAgIElmIHN1Y2ggYSBwYWNrYWdlIGlzIGZvdW5kLCBhIHJ1bnRpbWUgZGVwZW5kZW5jeSBpcyBhZGRlZCBmcm9tCi0gICAgICAgICAgICAgICAgdGhlIHBhY2thZ2UgdGhhdCBkZXBlbmRzIG9uIHRoZSBtb2R1bGUgdG8gdGhlIHBhY2thZ2UgdGhhdAotICAgICAgICAgICAgICAgIGNvbnRhaW5zIHRoZSBtb2R1bGUuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cGNkZXBzPC9maWxlbmFtZT4gbWVjaGFuaXNtIG1vc3Qgb2Z0ZW4gaW5mZXJzCi0gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBiZXR3ZWVuIDxmaWxlbmFtZT4tZGV2PC9maWxlbmFtZT4gcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBjaGFpbnM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBJZiBhIHBhY2thZ2UgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+IGRlcGVuZHMgb24gYSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhcjwvZmlsZW5hbWU+LCB0aGVuIDxmaWxlbmFtZT5mb28tZGV2PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmZvby1kYmc8L2ZpbGVuYW1lPiBhcmUgYWxzbyBtYWRlIHRvIGRlcGVuZCBvbgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXItZGV2PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5iYXItZGJnPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgcmVzcGVjdGl2ZWx5LgotICAgICAgICAgICAgICAgIFRha2luZyB0aGUgPGZpbGVuYW1lPi1kZXY8L2ZpbGVuYW1lPiBwYWNrYWdlcyBhcyBhbiBleGFtcGxlLAotICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+YmFyLWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgbWlnaHQgcHJvdmlkZQotICAgICAgICAgICAgICAgIGhlYWRlcnMgYW5kIHNoYXJlZCBsaWJyYXJ5IHN5bWxpbmtzIG5lZWRlZCBieQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb28tZGV2PC9maWxlbmFtZT4sIHdoaWNoIHNob3dzIHRoZSBuZWVkCi0gICAgICAgICAgICAgICAgZm9yIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSBwYWNrYWdlcy48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZGVwZW5kZW5jaWVzIGFkZGVkIGJ5IDxmaWxlbmFtZT5kZXBjaGFpbnM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGFyZSBpbiB0aGUgZm9ybSBvZgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+Zm9vLWRldjwvZmlsZW5hbWU+IGFsc28gaGFzIGFuCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+LXN0eWxlIGRlcGVuZGVuY3kgb24KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+LCBiZWNhdXNlIHRoZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EU18ke1BOfS1kZXY8L2ZpbGVuYW1lPiAoc2V0IGluCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPikgaW5jbHVkZXMKLSAgICAgICAgICAgICAgICAgICAgIiR7UE59Ii4KLSAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+VG8gZW5zdXJlIHRoYXQgdGhlIGRlcGVuZGVuY3kgY2hhaW4gaXMgbmV2ZXIgYnJva2VuLAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZGV2PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBwYWNrYWdlcyBhcmUgYWx3YXlzIGdlbmVyYXRlZCBieSBkZWZhdWx0LCBldmVuIGlmIHRoZSBwYWNrYWdlcwotICAgICAgICAgICAgICAgIHR1cm4gb3V0IHRvIGJlIGVtcHR5LgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQUxMT1dfRU1QVFknPjxmaWxlbmFtZT5BTExPV19FTVBUWTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gdGFzayBkZXBlbmRzIG9uIHRoZQotICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICB0YXNrIG9mIGVhY2ggcmVjaXBlIGluCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICB0aHJvdWdoIHVzZSBvZiBhCi0gICAgICAgIDxmaWxlbmFtZT5bPC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3ZhcmlhYmxlLWZsYWdzJz48ZmlsZW5hbWU+ZGVwdGFzazwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+XTwvZmlsZW5hbWU+Ci0gICAgICAgIGRlY2xhcmF0aW9uLCB3aGljaCBndWFyYW50ZWVzIHRoYXQgdGhlIHJlcXVpcmVkCi0gICAgICAgIHNoYXJlZC1saWJyYXJ5L21vZHVsZS10by1wYWNrYWdlIG1hcHBpbmcgaW5mb3JtYXRpb24gd2lsbCBiZSBhdmFpbGFibGUKLSAgICAgICAgd2hlbiBuZWVkZWQgYXMgbG9uZyBhcyA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGhhcyBiZWVuCi0gICAgICAgIGNvcnJlY3RseSBzZXQuCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nZmFrZXJvb3QtYW5kLXBzZXVkbyc+Ci0gICAgPHRpdGxlPkZha2Vyb290IGFuZCBQc2V1ZG88L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFNvbWUgdGFza3MgYXJlIGVhc2llciB0byBpbXBsZW1lbnQgd2hlbiBhbGxvd2VkIHRvIHBlcmZvcm0gY2VydGFpbgotICAgICAgICBvcGVyYXRpb25zIHRoYXQgYXJlIG5vcm1hbGx5IHJlc2VydmVkIGZvciB0aGUgcm9vdCB1c2VyLgotICAgICAgICBGb3IgZXhhbXBsZSwgdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICB0YXNrIGJlbmVmaXRzIGZyb20gYmVpbmcgYWJsZSB0byBzZXQgdGhlIFVJRCBhbmQgR0lEIG9mIGluc3RhbGxlZCBmaWxlcwotICAgICAgICB0byBhcmJpdHJhcnkgdmFsdWVzLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBPbmUgYXBwcm9hY2ggdG8gYWxsb3dpbmcgdGFza3MgdG8gcGVyZm9ybSByb290LW9ubHkgb3BlcmF0aW9ucwotICAgICAgICB3b3VsZCBiZSB0byByZXF1aXJlIEJpdEJha2UgdG8gcnVuIGFzIHJvb3QuCi0gICAgICAgIEhvd2V2ZXIsIHRoaXMgbWV0aG9kIGlzIGN1bWJlcnNvbWUgYW5kIGhhcyBzZWN1cml0eSBpc3N1ZXMuCi0gICAgICAgIFRoZSBhcHByb2FjaCB0aGF0IGlzIGFjdHVhbGx5IHVzZWQgaXMgdG8gcnVuIHRhc2tzIHRoYXQgYmVuZWZpdCBmcm9tCi0gICAgICAgIHJvb3QgcHJpdmlsZWdlcyBpbiBhICJmYWtlIiByb290IGVudmlyb25tZW50LgotICAgICAgICBXaXRoaW4gdGhpcyBlbnZpcm9ubWVudCwgdGhlIHRhc2sgYW5kIGl0cyBjaGlsZCBwcm9jZXNzZXMgYmVsaWV2ZSB0aGF0Ci0gICAgICAgIHRoZXkgYXJlIHJ1bm5pbmcgYXMgdGhlIHJvb3QgdXNlciwgYW5kIHNlZSBhbiBpbnRlcm5hbGx5IGNvbnNpc3RlbnQKLSAgICAgICAgdmlldyBvZiB0aGUgZmlsZXN5c3RlbS4KLSAgICAgICAgQXMgbG9uZyBhcyBnZW5lcmF0aW5nIHRoZSBmaW5hbCBvdXRwdXQgKGUuZy4gYSBwYWNrYWdlIG9yIGFuIGltYWdlKQotICAgICAgICBkb2VzIG5vdCByZXF1aXJlIHJvb3QgcHJpdmlsZWdlcywgdGhlIGZhY3QgdGhhdCBzb21lIGVhcmxpZXIgc3RlcHMgcmFuCi0gICAgICAgIGluIGEgZmFrZSByb290IGVudmlyb25tZW50IGRvZXMgbm90IGNhdXNlIHByb2JsZW1zLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgY2FwYWJpbGl0eSB0byBydW4gdGFza3MgaW4gYSBmYWtlIHJvb3QgZW52aXJvbm1lbnQgaXMga25vd24gYXMKLSAgICAgICAgImZha2Vyb290Iiwgd2hpY2ggaXMgZGVyaXZlZCBmcm9tIHRoZSBCaXRCYWtlIGtleXdvcmQvdmFyaWFibGUKLSAgICAgICAgZmxhZyB0aGF0IHJlcXVlc3RzIGEgZmFrZSByb290IGVudmlyb25tZW50IGZvciBhIHRhc2suCi0gICAgICAgIEluIGN1cnJlbnQgdmVyc2lvbnMgb2YgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sCi0gICAgICAgIHRoZSBwcm9ncmFtIHRoYXQgaW1wbGVtZW50cyBmYWtlcm9vdCBpcyBrbm93biBhcyBQc2V1ZG8uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFBzZXVkbyBvdmVycmlkZXMgc3lzdGVtIGNhbGxzIHRocm91Z2ggdGhlCi0gICAgICAgIDxmaWxlbmFtZT5MRF9QUkVMT0FEPC9maWxlbmFtZT4gbWVjaGFuaXNtIHRvIGdpdmUgdGhlCi0gICAgICAgIGlsbHVzaW9uIG9mIHJ1bm5pbmcgYXMgcm9vdC4KLSAgICAgICAgVG8ga2VlcCB0cmFjayBvZiAiZmFrZSIgZmlsZSBvd25lcnNoaXAgYW5kIHBlcm1pc3Npb25zIHJlc3VsdGluZyBmcm9tCi0gICAgICAgIG9wZXJhdGlvbnMgdGhhdCByZXF1aXJlIHJvb3QgcGVybWlzc2lvbnMsIGFuIHNxbGl0ZTMKLSAgICAgICAgZGF0YWJhc2UgaXMgdXNlZC4KLSAgICAgICAgVGhpcyBkYXRhYmFzZSBpcyBzdG9yZWQgaW4KLSAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fS9wc2V1ZG8vZmlsZXMuZGI8L2ZpbGVuYW1lPgotICAgICAgICBmb3IgaW5kaXZpZHVhbCByZWNpcGVzLgotICAgICAgICBTdG9yaW5nIHRoZSBkYXRhYmFzZSBpbiBhIGZpbGUgYXMgb3Bwb3NlZCB0byBpbiBtZW1vcnkKLSAgICAgICAgZ2l2ZXMgcGVyc2lzdGVuY2UgYmV0d2VlbiB0YXNrcywgYW5kIGV2ZW4gYmV0d2VlbiBidWlsZHMuCi0gICAgICAgIDxub3RlPjx0aXRsZT5DYXV0aW9uPC90aXRsZT4KLSAgICAgICAgICAgIElmIHlvdSBhZGQgeW91ciBvd24gdGFzayB0aGF0IG1hbmlwdWxhdGVzIHRoZSBzYW1lIGZpbGVzIG9yCi0gICAgICAgICAgICBkaXJlY3RvcmllcyBhcyBhIGZha2Vyb290IHRhc2ssIHRoZW4gdGhhdCB0YXNrIHNob3VsZCBhbHNvIHJ1bgotICAgICAgICAgICAgdW5kZXIgZmFrZXJvb3QuCi0gICAgICAgICAgICBPdGhlcndpc2UsIHRoZSB0YXNrIHdpbGwgbm90IGJlIGFibGUgdG8gcnVuIHJvb3Qtb25seSBvcGVyYXRpb25zLAotICAgICAgICAgICAgYW5kIHdpbGwgbm90IHNlZSB0aGUgZmFrZSBmaWxlIG93bmVyc2hpcCBhbmQgcGVybWlzc2lvbnMgc2V0IGJ5IHRoZQotICAgICAgICAgICAgb3RoZXIgdGFzay4KLSAgICAgICAgICAgIFlvdSBzaG91bGQgYWxzbyBhZGQgYSBkZXBlbmRlbmN5IG9uCi0gICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgZ2l2aW5nIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICAgZmFrZXJvb3QgZG9fbXl0YXNrICgpIHsKLSAgICAgICAgICAgLi4uCi0gICAgICAgfQotICAgICAgIGRvX215dGFza1tkZXBlbmRzXSArPSAidmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgPC9ub3RlPgotICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1GQUtFUk9PVCc+PGZpbGVuYW1lPkZBS0VST09UKjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgdmFyaWFibGVzIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgotICAgICAgICBZb3UgY2FuIGFsc28gcmVmZXJlbmNlIHRoaXMKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGlicmFyeS9vcy1hYXBzZXVkbzEvaW5kZXguaHRtbCc+UHNldWRvPC91bGluaz4KLSAgICAgICAgYXJ0aWNsZS4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSd3aWMtcGx1Zy1pbnMtaW50ZXJmYWNlJz4KLSAgICA8dGl0bGU+V2ljIFBsdWctSW5zIEludGVyZmFjZTwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgWW91IGNhbiBleHRlbmQgYW5kIHNwZWNpYWxpemUgV2ljIGZ1bmN0aW9uYWxpdHkgYnkgdXNpbmcKLSAgICAgICAgV2ljIHBsdWctaW5zLgotICAgICAgICBUaGlzIHNlY3Rpb24gZXhwbGFpbnMgdGhlIFdpYyBwbHVnLWluIGludGVyZmFjZS4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIFdpYyBpbiBnZW5lcmFsLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMtdXNpbmctd2ljJz5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFdpYyBwbHVnLWlucyBjb25zaXN0IG9mICJzb3VyY2UiIGFuZCAiaW1hZ2VyIiBwbHVnLWlucy4KLSAgICAgICAgICAgIEltYWdlciBwbHVnLWlucyBhcmUgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzIHNlY3Rpb24uCi0gICAgICAgIDwvbm90ZT4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgU291cmNlIHBsdWctaW5zIHByb3ZpZGUgYSBtZWNoYW5pc20gdG8gY3VzdG9taXplIHBhcnRpdGlvbgotICAgICAgICBjb250ZW50IGR1cmluZyB0aGUgV2ljIGltYWdlIGdlbmVyYXRpb24gcHJvY2Vzcy4KLSAgICAgICAgWW91IGNhbiB1c2Ugc291cmNlIHBsdWctaW5zIHRvIG1hcCB2YWx1ZXMgdGhhdCB5b3Ugc3BlY2lmeQotICAgICAgICB1c2luZyA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPiBjb21tYW5kcyBpbiBraWNrc3RhcnQKLSAgICAgICAgZmlsZXMgKGkuZS4gPGZpbGVuYW1lPioud2tzPC9maWxlbmFtZT4pIHRvIGEgcGx1Zy1pbgotICAgICAgICBpbXBsZW1lbnRhdGlvbiB1c2VkIHRvIHBvcHVsYXRlIGEgZ2l2ZW4gcGFydGl0aW9uLgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIElmIHlvdSB1c2UgcGx1Zy1pbnMgdGhhdCBoYXZlIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICAoZS5nLiBuYXRpdmUgdG9vbHMsIGJvb3Rsb2FkZXJzLCBhbmQgc28gZm9ydGgpCi0gICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGEgV2ljIGltYWdlLCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRob3NlCi0gICAgICAgICAgICBkZXBlbmRlbmNpZXMgdXNpbmcgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItV0tTX0ZJTEVfREVQRU5EUyc+PGZpbGVuYW1lPldLU19GSUxFX0RFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICA8L25vdGU+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFNvdXJjZSBwbHVnLWlucyBhcmUgc3ViY2xhc3NlcyBkZWZpbmVkIGluIHBsdWctaW4gZmlsZXMuCi0gICAgICAgIEFzIHNoaXBwZWQsIHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHNldmVyYWwgcGx1Zy1pbgotICAgICAgICBmaWxlcy4KLSAgICAgICAgWW91IGNhbiBzZWUgdGhlIHNvdXJjZSBwbHVnLWluIGZpbGVzIHRoYXQgc2hpcCB3aXRoIHRoZQotICAgICAgICBZb2N0byBQcm9qZWN0Ci0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UnPmhlcmU8L3VsaW5rPi4KLSAgICAgICAgRWFjaCBvZiB0aGVzZSBwbHVnLWluIGZpbGVzIGNvbnRhaW4gc291cmNlIHBsdWctaW5zIHRoYXQKLSAgICAgICAgYXJlIGRlc2lnbmVkIHRvIHBvcHVsYXRlIGEgc3BlY2lmaWMgV2ljIGltYWdlIHBhcnRpdGlvbi4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgU291cmNlIHBsdWctaW5zIGFyZSBzdWJjbGFzc2VzIG9mIHRoZQotICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MsIHdoaWNoIGlzCi0gICAgICAgIGRlZmluZWQgaW4gdGhlCi0gICAgICAgIDxmaWxlbmFtZT5wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5PC9maWxlbmFtZT4KLSAgICAgICAgZmlsZS4KLSAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+Qm9vdGltZ0VGSVBsdWdpbjwvZmlsZW5hbWU+Ci0gICAgICAgIHNvdXJjZSBwbHVnLWluIGZvdW5kIGluIHRoZQotICAgICAgICA8ZmlsZW5hbWU+Ym9vdGltZy1lZmkucHk8L2ZpbGVuYW1lPiBmaWxlIGlzIGEgc3ViY2xhc3Mgb2YKLSAgICAgICAgdGhlIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzcywgd2hpY2ggaXMgZm91bmQKLSAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5wbHVnaW5iYXNlLnB5PC9maWxlbmFtZT4gZmlsZS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgWW91IGNhbiBhbHNvIGltcGxlbWVudCBzb3VyY2UgcGx1Zy1pbnMgaW4gYSBsYXllciBvdXRzaWRlCi0gICAgICAgIG9mIHRoZSBTb3VyY2UgUmVwb3NpdG9yaWVzIChleHRlcm5hbCBsYXllcikuCi0gICAgICAgIFRvIGRvIHNvLCBiZSBzdXJlIHRoYXQgeW91ciBwbHVnLWluIGZpbGVzIGFyZSBsb2NhdGVkIGluCi0gICAgICAgIGEgZGlyZWN0b3J5IHdob3NlIHBhdGggaXMKLSAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS88L2ZpbGVuYW1lPgotICAgICAgICB3aXRoaW4geW91ciBleHRlcm5hbCBsYXllci4KLSAgICAgICAgV2hlbiB0aGUgcGx1Zy1pbiBmaWxlcyBhcmUgbG9jYXRlZCB0aGVyZSwgdGhlIHNvdXJjZQotICAgICAgICBwbHVnLWlucyB0aGV5IGNvbnRhaW4gYXJlIG1hZGUgYXZhaWxhYmxlIHRvIFdpYy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgV2hlbiB0aGUgV2ljIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGludm9rZSBhCi0gICAgICAgIHBhcnRpdGlvbi1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgaXQgbG9va3MgZm9yIHRoZSBwbHVnLWluCi0gICAgICAgIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4KLSAgICAgICAgcGFyYW1ldGVyIHVzZWQgaW4gdGhlIGtpY2tzdGFydCBmaWxlIGdpdmVuIHRvIHRoYXQKLSAgICAgICAgcGFydGl0aW9uLgotICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIHBhcnRpdGlvbiBpcyBzZXQgdXAgdXNpbmcgdGhlIGZvbGxvd2luZwotICAgICAgICBjb21tYW5kIGluIGEga2lja3N0YXJ0IGZpbGU6Ci0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLXBjYmlvcyAtLW9uZGlzayBzZGEgLS1sYWJlbCBib290IC0tYWN0aXZlIC0tYWxpZ24gMTAyNAotICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIFRoZSBtZXRob2RzIGRlZmluZWQgYXMgY2xhc3MgbWVtYmVycyBvZiB0aGUgbWF0Y2hpbmcKLSAgICAgICAgc291cmNlIHBsdWctaW4gKGkuZS4gPGZpbGVuYW1lPmJvb3RpbWctcGNiaW9zPC9maWxlbmFtZT4pCi0gICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+Ym9vdGltZy1wY2Jpb3MucHk8L2ZpbGVuYW1lPiBwbHVnLWluIGZpbGUKLSAgICAgICAgYXJlIHVzZWQuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRvIGJlIG1vcmUgY29uY3JldGUsIGhlcmUgaXMgdGhlIGNvcnJlc3BvbmRpbmcgcGx1Zy1pbgotICAgICAgICBkZWZpbml0aW9uIGZyb20gdGhlIDxmaWxlbmFtZT5ib290aW1nLXBjYmlvcy5weTwvZmlsZW5hbWU+Ci0gICAgICAgIGZpbGUgZm9yIHRoZSBwcmV2aW91cyBjb21tYW5kIGFsb25nIHdpdGggYW4gZXhhbXBsZQotICAgICAgICBtZXRob2QgY2FsbGVkIGJ5IHRoZSBXaWMgaW1wbGVtZW50YXRpb24gd2hlbiBpdCBuZWVkcyB0bwotICAgICAgICBwcmVwYXJlIGEgcGFydGl0aW9uIHVzaW5nIGFuIGltcGxlbWVudGF0aW9uLXNwZWNpZmljCi0gICAgICAgIGZ1bmN0aW9uOgotICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGJvb3RpbWctcGNiaW9zLnB5Ci0gICAgICAgICAgICAgICAgICAuCi0gICAgICAgICAgICAgICAgICAuCi0gICAgICAgICAgICAgICAgICAuCi0gICAgICAgIGNsYXNzIEJvb3RpbWdQY2Jpb3NQbHVnaW4oU291cmNlUGx1Z2luKToKLSAgICAgICAgIiIiCi0gICAgICAgIENyZWF0ZSBNQlIgYm9vdCBwYXJ0aXRpb24gYW5kIGluc3RhbGwgc3lzbGludXggb24gaXQuCi0gICAgICAgICIiIgotCi0gICAgICAgIG5hbWUgPSAnYm9vdGltZy1wY2Jpb3MnCi0gICAgICAgICAgICAgICAgICAuCi0gICAgICAgICAgICAgICAgICAuCi0gICAgICAgICAgICAgICAgICAuCi0gICAgICAgIEBjbGFzc21ldGhvZAotICAgICAgICBkZWYgZG9fcHJlcGFyZV9wYXJ0aXRpb24oY2xzLCBwYXJ0LCBzb3VyY2VfcGFyYW1zLCBjcmVhdG9yLCBjcl93b3JrZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2VfYnVpbGRkaXIsIGJvb3RpbWdfZGlyLCBrZXJuZWxfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QpOgotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBDYWxsZWQgdG8gZG8gdGhlIGFjdHVhbCBjb250ZW50IHBvcHVsYXRpb24gZm9yIGEgcGFydGl0aW9uIGkuZS4gaXQKLSAgICAgICAgICAgICdwcmVwYXJlcycgdGhlIHBhcnRpdGlvbiB0byBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgaW1hZ2UuCi0gICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHByZXBhcmUgY29udGVudCBmb3IgbGVnYWN5IGJpb3MgYm9vdCBwYXJ0aXRpb24uCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgICAgICAgIC4KLSAgICAgICAgICAgICAgICAgIC4KLSAgICAgICAgICAgICAgICAgIC4KLSAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICBJZiBhIHN1YmNsYXNzIChwbHVnLWluKSBpdHNlbGYgZG9lcyBub3QgaW1wbGVtZW50IGEKLSAgICAgICAgcGFydGljdWxhciBmdW5jdGlvbiwgV2ljIGxvY2F0ZXMgYW5kIHVzZXMgdGhlIGRlZmF1bHQKLSAgICAgICAgdmVyc2lvbiBpbiB0aGUgc3VwZXJjbGFzcy4KLSAgICAgICAgSXQgaXMgZm9yIHRoaXMgcmVhc29uIHRoYXQgYWxsIHNvdXJjZSBwbHVnLWlucyBhcmUgZGVyaXZlZAotICAgICAgICBmcm9tIHRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MgZGVmaW5lZCBpbgotICAgICAgICB0aGUgPGZpbGVuYW1lPnBsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPiBmaWxlIGRlZmluZXMKLSAgICAgICAgYSBzZXQgb2YgbWV0aG9kcyB0aGF0IHNvdXJjZSBwbHVnLWlucyBjYW4gaW1wbGVtZW50IG9yCi0gICAgICAgIG92ZXJyaWRlLgotICAgICAgICBBbnkgcGx1Zy1pbnMgKHN1YmNsYXNzIG9mCi0gICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPikgdGhhdCBkbyBub3QgaW1wbGVtZW50Ci0gICAgICAgIGEgcGFydGljdWxhciBtZXRob2QgaW5oZXJpdCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlCi0gICAgICAgIG1ldGhvZCBmcm9tIHRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MuCi0gICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzcyBpbiB0aGUKLSAgICAgICAgPGZpbGVuYW1lPnBsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPiBmaWxlIGZvciBkZXRhaWxzOgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoZSBtZXRob2RzIGltcGxlbWVudGVkIGluIHRoZQotICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3M6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19wcmVwYXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBDYWxsZWQgdG8gcG9wdWxhdGUgYSBwYXJ0aXRpb24gd2l0aCBhY3R1YWwgY29udGVudC4KLSAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIG1ldGhvZCBwcmVwYXJlcyB0aGUgZmluYWwKLSAgICAgICAgICAgICAgICBwYXJ0aXRpb24gaW1hZ2UgdGhhdCBpcyBpbmNvcnBvcmF0ZWQgaW50byB0aGUKLSAgICAgICAgICAgICAgICBkaXNrIGltYWdlLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBDYWxsZWQgYmVmb3JlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3ByZXBhcmVfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPiB0bwotICAgICAgICAgICAgICAgIGNyZWF0ZSBjdXN0b20gY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgYSBwYXJ0aXRpb24KLSAgICAgICAgICAgICAgICAoZS5nLiBzeXNsaW51eCBvciBncnViIGNvbmZpZ3VyYXRpb24gZmlsZXMpLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9faW5zdGFsbF9kaXNrKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIENhbGxlZCBhZnRlciBhbGwgcGFydGl0aW9ucyBoYXZlIGJlZW4gcHJlcGFyZWQgYW5kCi0gICAgICAgICAgICAgICAgYXNzZW1ibGVkIGludG8gYSBkaXNrIGltYWdlLgotICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHByb3ZpZGVzIGEgaG9vayB0byBhbGxvdyBmaW5hbGl6YXRpb24KLSAgICAgICAgICAgICAgICBvZiBhIGRpc2sgaW1hZ2UgKGUuZy4gd3JpdGluZyBhbiBNQlIpLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fc3RhZ2VfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFNwZWNpYWwgY29udGVudC1zdGFnaW5nIGhvb2sgY2FsbGVkIGJlZm9yZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wcmVwYXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgbm9ybWFsbHkgZW1wdHkuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+VHlwaWNhbGx5LCBhIHBhcnRpdGlvbiBqdXN0IHVzZXMgdGhlIHBhc3NlZC1pbgotICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgKGUuZy4gdGhlIHVubW9kaWZpZWQgdmFsdWUgb2YKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym9vdGltZ19kaXI8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwgaW4gc29tZSBjYXNlcywgdGhpbmdzIG1pZ2h0IG5lZWQgdG8gYmUKLSAgICAgICAgICAgICAgICBtb3JlIHRhaWxvcmVkLgotICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNlcnRhaW4gZmlsZXMgbWlnaHQgYWRkaXRpb25hbGx5Ci0gICAgICAgICAgICAgICAgbmVlZCB0byBiZSB0YWtlbiBmcm9tCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJvb3RpbWdfZGlyICsgL2Jvb3Q8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBUaGlzIGhvb2sgYWxsb3dzIHRob3NlIGZpbGVzIHRvIGJlIHN0YWdlZCBpbiBhCi0gICAgICAgICAgICAgICAgY3VzdG9taXplZCBmYXNoaW9uLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2V0X2JpdGJha2VfdmFyKCk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBhbGxvd3MgeW91IHRvIGFjY2VzcyBub24tc3RhbmRhcmQgdmFyaWFibGVzCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IG1pZ2h0IHdhbnQgdG8gdXNlIGZvciB0aGlzCi0gICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFlvdSBjYW4gZXh0ZW5kIHRoZSBzb3VyY2UgcGx1Zy1pbiBtZWNoYW5pc20uCi0gICAgICAgIFRvIGFkZCBtb3JlIGhvb2tzLCBjcmVhdGUgbW9yZSBzb3VyY2UgcGx1Zy1pbiBtZXRob2RzCi0gICAgICAgIHdpdGhpbiA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gYW5kIHRoZQotICAgICAgICBjb3JyZXNwb25kaW5nIGRlcml2ZWQgc3ViY2xhc3Nlcy4KLSAgICAgICAgVGhlIGNvZGUgdGhhdCBjYWxscyB0aGUgcGx1Zy1pbiBtZXRob2RzIHVzZXMgdGhlCi0gICAgICAgIDxmaWxlbmFtZT5wbHVnaW4uZ2V0X3NvdXJjZV9wbHVnaW5fbWV0aG9kcygpPC9maWxlbmFtZT4KLSAgICAgICAgZnVuY3Rpb24gdG8gZmluZCB0aGUgbWV0aG9kIG9yIG1ldGhvZHMgbmVlZGVkIGJ5IHRoZSBjYWxsLgotICAgICAgICBSZXRyaWV2YWwgb2YgdGhvc2UgbWV0aG9kcyBpcyBhY2NvbXBsaXNoZWQgYnkgZmlsbGluZyB1cAotICAgICAgICBhIGRpY3Qgd2l0aCBrZXlzIHRoYXQgY29udGFpbiB0aGUgbWV0aG9kIG5hbWVzIG9mIGludGVyZXN0LgotICAgICAgICBPbiBzdWNjZXNzLCB0aGVzZSB3aWxsIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSBhY3R1YWwKLSAgICAgICAgbWV0aG9kcy4KLSAgICAgICAgU2VlIHRoZSBXaWMgaW1wbGVtZW50YXRpb24gZm9yIGV4YW1wbGVzIGFuZCBkZXRhaWxzLgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J3gzMic+Ci0gICAgPHRpdGxlPngzMjwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgeDMyIGlzIGEgcHJvY2Vzc29yLXNwZWNpZmljIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UgKHBzQUJJKSBmb3IgeDg2XzY0LgotICAgICAgICBBbiBBQkkgZGVmaW5lcyB0aGUgY2FsbGluZyBjb252ZW50aW9ucyBiZXR3ZWVuIGZ1bmN0aW9ucyBpbiBhIHByb2Nlc3NpbmcgZW52aXJvbm1lbnQuCi0gICAgICAgIFRoZSBpbnRlcmZhY2UgZGV0ZXJtaW5lcyB3aGF0IHJlZ2lzdGVycyBhcmUgdXNlZCBhbmQgd2hhdCB0aGUgc2l6ZXMgYXJlIGZvciB2YXJpb3VzIEMgZGF0YSB0eXBlcy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgU29tZSBwcm9jZXNzaW5nIGVudmlyb25tZW50cyBwcmVmZXIgdXNpbmcgMzItYml0IGFwcGxpY2F0aW9ucyBldmVuIHdoZW4gcnVubmluZwotICAgICAgICBvbiBJbnRlbCA2NC1iaXQgcGxhdGZvcm1zLgotICAgICAgICBDb25zaWRlciB0aGUgaTM4NiBwc0FCSSwgd2hpY2ggaXMgYSB2ZXJ5IG9sZCAzMi1iaXQgQUJJIGZvciBJbnRlbCA2NC1iaXQgcGxhdGZvcm1zLgotICAgICAgICBUaGUgaTM4NiBwc0FCSSBkb2VzIG5vdCBwcm92aWRlIGVmZmljaWVudCB1c2UgYW5kIGFjY2VzcyBvZiB0aGUgSW50ZWwgNjQtYml0IHByb2Nlc3NvciByZXNvdXJjZXMsCi0gICAgICAgIGxlYXZpbmcgdGhlIHN5c3RlbSB1bmRlcnV0aWxpemVkLgotICAgICAgICBOb3cgY29uc2lkZXIgdGhlIHg4Nl82NCBwc0FCSS4KLSAgICAgICAgVGhpcyBBQkkgaXMgbmV3ZXIgYW5kIHVzZXMgNjQtYml0cyBmb3IgZGF0YSBzaXplcyBhbmQgcHJvZ3JhbSBwb2ludGVycy4KLSAgICAgICAgVGhlIGV4dHJhIGJpdHMgaW5jcmVhc2UgdGhlIGZvb3RwcmludCBzaXplIG9mIHRoZSBwcm9ncmFtcywgbGlicmFyaWVzLAotICAgICAgICBhbmQgYWxzbyBpbmNyZWFzZXMgdGhlIG1lbW9yeSBhbmQgZmlsZSBzeXN0ZW0gc2l6ZSByZXF1aXJlbWVudHMuCi0gICAgICAgIEV4ZWN1dGluZyB1bmRlciB0aGUgeDMyIHBzQUJJIGVuYWJsZXMgdXNlciBwcm9ncmFtcyB0byB1dGlsaXplIENQVSBhbmQgc3lzdGVtIHJlc291cmNlcwotICAgICAgICBtb3JlIGVmZmljaWVudGx5IHdoaWxlIGtlZXBpbmcgdGhlIG1lbW9yeSBmb290cHJpbnQgb2YgdGhlIGFwcGxpY2F0aW9ucyBsb3cuCi0gICAgICAgIEV4dHJhIGJpdHMgYXJlIHVzZWQgZm9yIHJlZ2lzdGVycyBidXQgbm90IGZvciBhZGRyZXNzaW5nIG1lY2hhbmlzbXMuCi0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9J3N1cHBvcnQnPgotICAgICAgICA8dGl0bGU+U3VwcG9ydDwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIFlvY3RvIFByb2plY3QgcmVsZWFzZSBzdXBwb3J0cyB0aGUgZmluYWwgc3BlY2lmaWNhdGlvbnMgb2YgeDMyCi0gICAgICAgICAgICBwc0FCSS4KLSAgICAgICAgICAgIFN1cHBvcnQgZm9yIHgzMiBwc0FCSSBleGlzdHMgYXMgZm9sbG93czoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPllvdSBjYW4gY3JlYXRlIHBhY2thZ2VzIGFuZCBpbWFnZXMgaW4geDMyIHBzQUJJIGZvcm1hdCBvbiB4ODZfNjQgYXJjaGl0ZWN0dXJlIHRhcmdldHMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Zb3UgY2FuIHN1Y2Nlc3NmdWxseSBidWlsZCBtYW55IHJlY2lwZXMgd2l0aCB0aGUgeDMyIHRvb2xjaGFpbi48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+WW91IGNhbiBjcmVhdGUgYW5kIGJvb3QgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW1hZ2VzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nY29tcGxldGluZy14MzInPgotICAgICAgICA8dGl0bGU+Q29tcGxldGluZyB4MzI8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRnV0dXJlIFBsYW5zIGZvciB0aGUgeDMyIHBzQUJJIGluIHRoZSBZb2N0byBQcm9qZWN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkVuaGFuY2UgYW5kIGZpeCB0aGUgZmV3IHJlbWFpbmluZyByZWNpcGVzIHNvIHRoZXkKLSAgICAgICAgICAgICAgICAgICAgd29yayB3aXRoIGFuZCBzdXBwb3J0IHgzMiB0b29sY2hhaW5zLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FbmhhbmNlIFJQTSBQYWNrYWdlIE1hbmFnZXIgKFJQTSkgc3VwcG9ydCBmb3IgeDMyIGJpbmFyaWVzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TdXBwb3J0IGxhcmdlciBpbWFnZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZy14MzItcmlnaHQtbm93Jz4KLSAgICAgICAgPHRpdGxlPlVzaW5nIHgzMiBSaWdodCBOb3c8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIHVzZSB0aGUgeDMyIHNwQUJJOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RW5hYmxlIHRoZSB4MzIgcHNBQkkgdHVuaW5nIGZpbGUgZm9yIDxmaWxlbmFtZT54ODZfNjQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcyBieSBlZGl0aW5nIHRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gbGlrZSB0aGlzOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICBNQUNISU5FID0gInFlbXV4ODYtNjQiCi0gICAgICBERUZBVUxUVFVORSA9ICJ4ODYtNjQteDMyIgotICAgICAgYmFzZWxpYiA9ICIke0BkLmdldFZhcignQkFTRV9MSUJfdHVuZS0nICsgKGQuZ2V0VmFyKCdERUZBVUxUVFVORScsIFRydWUpIFwKLSAgICAgICAgIG9yICdJTlZBTElEJyksIFRydWUpIG9yICdsaWInfSIKLSAgICAgICNNQUNISU5FID0gImdlbmVyaWN4ODYiCi0gICAgICAjREVGQVVMVFRVTkUgPSAiY29yZTItNjQteDMyIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFzIHVzdWFsLCB1c2UgQml0QmFrZSB0byBidWlsZCBhbiBpbWFnZSB0aGF0IHN1cHBvcnRzIHRoZSB4MzIgcHNBQkkuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QXMgdXN1YWwsIHJ1biB5b3VyIGltYWdlIHVzaW5nIFFFTVU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IHFlbXV4ODYtNjQgY29yZS1pbWFnZS1zYXRvCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0id2F5bGFuZCI+Ci0gICAgPHRpdGxlPldheWxhbmQ8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2F5bGFuZF8oZGlzcGxheV9zZXJ2ZXJfcHJvdG9jb2wpJz5XYXlsYW5kPC91bGluaz4KLSAgICAgICAgaXMgYSBjb21wdXRlciBkaXNwbGF5IHNlcnZlciBwcm90b2NvbCB0aGF0Ci0gICAgICAgIHByb3ZpZGVzIGEgbWV0aG9kIGZvciBjb21wb3NpdGluZyB3aW5kb3cgbWFuYWdlcnMgdG8gY29tbXVuaWNhdGUKLSAgICAgICAgZGlyZWN0bHkgd2l0aCBhcHBsaWNhdGlvbnMgYW5kIHZpZGVvIGhhcmR3YXJlIGFuZCBleHBlY3RzIHRoZW0gdG8KLSAgICAgICAgY29tbXVuaWNhdGUgd2l0aCBpbnB1dCBoYXJkd2FyZSB1c2luZyBvdGhlciBsaWJyYXJpZXMuCi0gICAgICAgIFVzaW5nIFdheWxhbmQgd2l0aCBzdXBwb3J0aW5nIHRhcmdldHMgY2FuIHJlc3VsdCBpbiBiZXR0ZXIgY29udHJvbAotICAgICAgICBvdmVyIGdyYXBoaWNzIGZyYW1lIHJlbmRlcmluZyB0aGFuIGFuIGFwcGxpY2F0aW9uIG1pZ2h0IG90aGVyd2lzZQotICAgICAgICBhY2hpZXZlLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyB0aGUgV2F5bGFuZCBwcm90b2NvbCBsaWJyYXJpZXMgYW5kIHRoZQotICAgICAgICByZWZlcmVuY2UKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYXlsYW5kXyhkaXNwbGF5X3NlcnZlcl9wcm90b2NvbCkjV2VzdG9uJz5XZXN0b248L3VsaW5rPgotICAgICAgICBjb21wb3NpdG9yIGFzIHBhcnQgb2YgaXRzIHJlbGVhc2UuCi0gICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCB5b3UgbmVlZCB0byBkbyB0byBpbXBsZW1lbnQgV2F5bGFuZCBhbmQKLSAgICAgICAgdXNlIHRoZSBjb21wb3NpdG9yIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UgZm9yIGEgc3VwcG9ydGluZyB0YXJnZXQuCi0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9IndheWxhbmQtc3VwcG9ydCI+Ci0gICAgICAgIDx0aXRsZT5TdXBwb3J0PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBXYXlsYW5kIHByb3RvY29sIGxpYnJhcmllcyBhbmQgdGhlIHJlZmVyZW5jZSBXZXN0b24gY29tcG9zaXRvcgotICAgICAgICAgICAgc2hpcCBhcyBpbnRlZ3JhdGVkIHBhY2thZ2VzIGluIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGxheWVyCi0gICAgICAgICAgICBvZiB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgU3BlY2lmaWNhbGx5LCB5b3UgY2FuIGZpbmQgdGhlIHJlY2lwZXMgdGhhdCBidWlsZCBib3RoIFdheWxhbmQKLSAgICAgICAgICAgIGFuZCBXZXN0b24gYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kPC9maWxlbmFtZT4uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gYnVpbGQgYm90aCB0aGUgV2F5bGFuZCBhbmQgV2VzdG9uIHBhY2thZ2VzIGZvciB1c2Ugb25seQotICAgICAgICAgICAgd2l0aCB0YXJnZXRzIHRoYXQgYWNjZXB0IHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvd2lraS8nPk1lc2EgM0QgYW5kIERpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmU8L3VsaW5rPiwKLSAgICAgICAgICAgIHdoaWNoIGlzIGFsc28ga25vd24gYXMgTWVzYSBEUkkuCi0gICAgICAgICAgICBUaGlzIGltcGxpZXMgdGhhdCB5b3UgY2Fubm90IGJ1aWxkIGFuZCB1c2UgdGhlIHBhY2thZ2VzIGlmIHlvdXIKLSAgICAgICAgICAgIHRhcmdldCB1c2VzLCBmb3IgZXhhbXBsZSwgdGhlCi0gICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5JbnRlbDwvdHJhZGVtYXJrPiBFbWJlZGRlZCBNZWRpYSBhbmQKLSAgICAgICAgICAgIEdyYXBoaWNzIERyaXZlciAoPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+SW50ZWw8L3RyYWRlbWFyaz4KLSAgICAgICAgICAgIEVNR0QpIHRoYXQgb3ZlcnJpZGVzIE1lc2EgRFJJLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBEdWUgdG8gbGFjayBvZiBFR0wgc3VwcG9ydCwgV2VzdG9uIDEuMC4zIHdpbGwgbm90IHJ1biBkaXJlY3RseSBvbgotICAgICAgICAgICAgdGhlIGVtdWxhdGVkIFFFTVUgaGFyZHdhcmUuCi0gICAgICAgICAgICBIb3dldmVyLCB0aGlzIHZlcnNpb24gb2YgV2VzdG9uIHdpbGwgcnVuIHVuZGVyIFggZW11bGF0aW9uIHdpdGhvdXQKLSAgICAgICAgICAgIGlzc3Vlcy4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSJlbmFibGluZy13YXlsYW5kLWluLWFuLWltYWdlIj4KLSAgICAgICAgPHRpdGxlPkVuYWJsaW5nIFdheWxhbmQgaW4gYW4gSW1hZ2U8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gZW5hYmxlIFdheWxhbmQsIHlvdSBuZWVkIHRvIGVuYWJsZSBpdCB0byBiZSBidWlsdCBhbmQgZW5hYmxlCi0gICAgICAgICAgICBpdCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgaW1hZ2UuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0iZW5hYmxlLWJ1aWxkaW5nIj4KLSAgICAgICAgICAgIDx0aXRsZT5CdWlsZGluZzwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIGNhdXNlIE1lc2EgdG8gYnVpbGQgdGhlIDxmaWxlbmFtZT53YXlsYW5kLWVnbDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm0gYW5kIFdlc3RvbiB0byBidWlsZCBXYXlsYW5kIHdpdGggS2VybmVsIE1vZGUKLSAgICAgICAgICAgICAgICBTZXR0aW5nCi0gICAgICAgICAgICAgICAgKDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS5hcmNobGludXgub3JnL2luZGV4LnBocC9LZXJuZWxfTW9kZV9TZXR0aW5nJz5LTVM8L3VsaW5rPikKLSAgICAgICAgICAgICAgICBzdXBwb3J0LCBpbmNsdWRlIHRoZSAid2F5bGFuZCIgZmxhZyBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSJ2YXItRElTVFJPX0ZFQVRVUkVTIj48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50IGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgd2F5bGFuZCIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIElmIFgxMSBoYXMgYmVlbiBlbmFibGVkIGVsc2V3aGVyZSwgV2VzdG9uIHdpbGwgYnVpbGQgV2F5bGFuZAotICAgICAgICAgICAgICAgIHdpdGggWDExIHN1cHBvcnQKLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSJlbmFibGUtaW5zdGFsbGF0aW9uLWluLWFuLWltYWdlIj4KLSAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gaW5zdGFsbCB0aGUgV2F5bGFuZCBmZWF0dXJlIGludG8gYW4gaW1hZ2UsIHlvdSBtdXN0Ci0gICAgICAgICAgICAgICAgaW5jbHVkZSB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCc+PGZpbGVuYW1lPkNPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHN0YXRlbWVudCBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIENPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCArPSAid2F5bGFuZCB3ZXN0b24iCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9InJ1bm5pbmctd2VzdG9uIj4KLSAgICAgICAgPHRpdGxlPlJ1bm5pbmcgV2VzdG9uPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIHJ1biBXZXN0b24gaW5zaWRlIFgxMSwgZW5hYmxpbmcgaXQgYXMgZGVzY3JpYmVkIGVhcmxpZXIgYW5kCi0gICAgICAgICAgICBidWlsZGluZyBhIFNhdG8gaW1hZ2UgaXMgc3VmZmljaWVudC4KLSAgICAgICAgICAgIElmIHlvdSBhcmUgcnVubmluZyB5b3VyIGltYWdlIHVuZGVyIFNhdG8sIGEgV2VzdG9uIExhdW5jaGVyIGFwcGVhcnMKLSAgICAgICAgICAgIGluIHRoZSAiVXRpbGl0eSIgY2F0ZWdvcnkuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gcnVuIFdlc3RvbiB0aHJvdWdoIHRoZSBjb21tYW5kLWxpbmUKLSAgICAgICAgICAgIGludGVycHJldG9yIChDTEkpLCB3aGljaCBpcyBiZXR0ZXIgc3VpdGVkIGZvciBkZXZlbG9wbWVudCB3b3JrLgotICAgICAgICAgICAgVG8gcnVuIFdlc3RvbiB1bmRlciB0aGUgQ0xJLCB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nIGFmdGVyCi0gICAgICAgICAgICB5b3VyIGltYWdlIGlzIGJ1aWx0OgotICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SdW4gdGhlc2UgY29tbWFuZHMgdG8gZXhwb3J0Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5YREdfUlVOVElNRV9ESVI8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBta2RpciAtcCAvdG1wLyRVU0VSLXdlc3RvbgotICAgICBjaG1vZCAwNzAwIC90bXAvJFVTRVItd2VzdG9uCi0gICAgIGV4cG9ydCBYREdfUlVOVElNRV9ESVI9L3RtcC8kVVNFUi13ZXN0b24KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5MYXVuY2ggV2VzdG9uIGluIHRoZSBzaGVsbDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICB3ZXN0b24KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9ImxpY2Vuc2VzIj4KLSAgICA8dGl0bGU+TGljZW5zZXM8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIG1lY2hhbmlzbSBieSB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICB0cmFja3MgY2hhbmdlcyB0byBsaWNlbnNpbmcgdGV4dC4KLSAgICAgICAgVGhlIHNlY3Rpb24gYWxzbyBkZXNjcmliZXMgaG93IHRvIGVuYWJsZSBjb21tZXJjaWFsbHkgbGljZW5zZWQgcmVjaXBlcywKLSAgICAgICAgd2hpY2ggYnkgZGVmYXVsdCBhcmUgZGlzYWJsZWQuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvciBpbmZvcm1hdGlvbiB0aGF0IGNhbiBoZWxwIHlvdSBtYWludGFpbiBjb21wbGlhbmNlIHdpdGggdmFyaW91cyBvcGVuCi0gICAgICAgIHNvdXJjZSBsaWNlbnNpbmcgZHVyaW5nIHRoZSBsaWZlY3ljbGUgb2YgdGhlIHByb2R1Y3QsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9qZWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSJ1c2luZ3Bva3ktY29uZmlndXJpbmctTElDX0ZJTEVTX0NIS1NVTSI+Ci0gICAgICAgIDx0aXRsZT5UcmFja2luZyBMaWNlbnNlIENoYW5nZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGxpY2Vuc2Ugb2YgYW4gdXBzdHJlYW0gcHJvamVjdCBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KLSAgICAgICAgICAgIEluIG9yZGVyIHRvIHByZXZlbnQgdGhlc2UgY2hhbmdlcyBnb2luZyB1bm5vdGljZWQsIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNfRklMRVNfQ0hLU1VNJz5MSUNfRklMRVNfQ0hLU1VNPC9saW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICB2YXJpYWJsZSB0cmFja3MgY2hhbmdlcyB0byB0aGUgbGljZW5zZSB0ZXh0LiBUaGUgY2hlY2tzdW1zIGFyZSB2YWxpZGF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUKLSAgICAgICAgICAgIGNvbmZpZ3VyZSBzdGVwLCBhbmQgaWYgdGhlIGNoZWNrc3VtcyBkbyBub3QgbWF0Y2gsIHRoZSBidWlsZCB3aWxsIGZhaWwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0idXNpbmdwb2t5LXNwZWNpZnlpbmctTElDX0ZJTEVTX0NIS1NVTSI+Ci0gICAgICAgICAgICA8dGl0bGU+U3BlY2lmeWluZyB0aGUgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiBWYXJpYWJsZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgY29udGFpbnMgY2hlY2tzdW1zIG9mIHRoZSBsaWNlbnNlIHRleHQgaW4gdGhlIHNvdXJjZQotICAgICAgICAgICAgICAgIGNvZGUgZm9yIHRoZSByZWNpcGUuCi0gICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNwZWNpZnkKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9eHh4eCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpY2ZpbGUxLnR4dDtiZWdpbmxpbmU9NTtlbmRsaW5lPTI5O21kNT15eXl5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGljZmlsZTIudHh0O2VuZGxpbmU9NTA7bWQ1PXp6enogXAotICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHVzaW5nICJiZWdpbmxpbmUiIGFuZCAiZW5kbGluZSIsIHJlYWxpemUgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgbnVtYmVyaW5nIGJlZ2lucyB3aXRoIG9uZSBhbmQgbm90IHplcm8uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgdGhlIGluY2x1ZGVkIGxpbmVzIGFyZSBpbmNsdXNpdmUgKGkuZS4gbGluZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXZlIHRocm91Z2ggYW5kIGluY2x1ZGluZyAyOSBpbiB0aGUgcHJldmlvdXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlIGZvciA8ZmlsZW5hbWU+bGljZmlsZTEudHh0PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gYSBsaWNlbnNlIGNoZWNrIGZhaWxzLCB0aGUgc2VsZWN0ZWQgbGljZW5zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgaXMgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgUUEgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGlzIG91dHB1dCwgeW91IGNhbiBkZXRlcm1pbmUgdGhlIGV4YWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgYW5kIGZpbmlzaCBmb3IgdGhlIG5lZWRlZCBsaWNlbnNlIHRleHQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUyc+UzwvbGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZSBhcwotICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0IGRpcmVjdG9yeSB3aGVuIHNlYXJjaGluZyBmaWxlcyBsaXN0ZWQgaW4KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIGVtcGxveXMgdGhlIGRlZmF1bHQgZGlyZWN0b3J5LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBDb25zaWRlciB0aGlzIG5leHQgZXhhbXBsZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9scy5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTY7XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZDU9YmIxNGVkM2M0Y2RhNTgzYWJjODU0MDEzMDRiNWNkNGUiCi0gICAgIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vbGljZW5zZS5odG1sO21kNT01Yzk0NzY3Y2VkYjVkNjk4N2M5MDJhYzg1MGRlZDJjNiIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBsaW5lIGxvY2F0ZXMgYSBmaWxlIGluCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7U30vc3JjL2xzLmM8L2ZpbGVuYW1lPiBhbmQgaXNvbGF0ZXMgbGluZXMgZml2ZQotICAgICAgICAgICAgICAgIHRocm91Z2ggMTYgYXMgbGljZW5zZSB0ZXh0LgotICAgICAgICAgICAgICAgIFRoZSBzZWNvbmQgbGluZSByZWZlcnMgdG8gYSBmaWxlIGluCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz5XT1JLRElSPC9saW5rPjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgTm90ZSB0aGF0IDxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT4gdmFyaWFibGUgaXMKLSAgICAgICAgICAgICAgICBtYW5kYXRvcnkgZm9yIGFsbCByZWNpcGVzLCB1bmxlc3MgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBzZXQgdG8gIkNMT1NFRCIuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0idXNpbmdwb2t5LUxJQ19GSUxFU19DSEtTVU0tZXhwbGFuYXRpb24tb2Ytc3ludGF4Ij4KLSAgICAgICAgICAgIDx0aXRsZT5FeHBsYW5hdGlvbiBvZiBTeW50YXg8L3RpdGxlPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uLCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+IHZhcmlhYmxlIGxpc3RzIGFsbCB0aGUKLSAgICAgICAgICAgICAgICBpbXBvcnRhbnQgZmlsZXMgdGhhdCBjb250YWluIHRoZSBsaWNlbnNlIHRleHQgZm9yIHRoZSBzb3VyY2UgY29kZS4KLSAgICAgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgY2hlY2tzdW0gZm9yIGFuIGVudGlyZSBmaWxlLCBvciBhIHNwZWNpZmljIHNlY3Rpb24gb2YgYQotICAgICAgICAgICAgICAgIGZpbGUgKHNwZWNpZmllZCBieSBiZWdpbm5pbmcgYW5kIGVuZGluZyBsaW5lIG51bWJlcnMgd2l0aCB0aGUgImJlZ2lubGluZSIgYW5kICJlbmRsaW5lIgotICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMsIHJlc3BlY3RpdmVseSkuCi0gICAgICAgICAgICAgICAgVGhlIGxhdHRlciBpcyB1c2VmdWwgZm9yIHNvdXJjZSBmaWxlcyB3aXRoIGEgbGljZW5zZSBub3RpY2UgaGVhZGVyLAotICAgICAgICAgICAgICAgIFJFQURNRSBkb2N1bWVudHMsIGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHVzZSB0aGUgImJlZ2lubGluZSIgcGFyYW1ldGVyLCB0aGVuIGl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgdGV4dCBiZWdpbnMgb24gdGhlCi0gICAgICAgICAgICAgICAgZmlyc3QgbGluZSBvZiB0aGUgZmlsZS4KLSAgICAgICAgICAgICAgICBTaW1pbGFybHksIGlmIHlvdSBkbyBub3QgdXNlIHRoZSAiZW5kbGluZSIgcGFyYW1ldGVyLCBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGxpY2Vuc2UgdGV4dAotICAgICAgICAgICAgICAgIGVuZHMgd2l0aCB0aGUgbGFzdCBsaW5lIG9mIHRoZSBmaWxlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgIm1kNSIgcGFyYW1ldGVyIHN0b3JlcyB0aGUgbWQ1IGNoZWNrc3VtIG9mIHRoZSBsaWNlbnNlIHRleHQuCi0gICAgICAgICAgICAgICAgSWYgdGhlIGxpY2Vuc2UgdGV4dCBjaGFuZ2VzIGluIGFueSB3YXkgYXMgY29tcGFyZWQgdG8gdGhpcyBwYXJhbWV0ZXIKLSAgICAgICAgICAgICAgICB0aGVuIGEgbWlzbWF0Y2ggb2NjdXJzLgotICAgICAgICAgICAgICAgIFRoaXMgbWlzbWF0Y2ggdHJpZ2dlcnMgYSBidWlsZCBmYWlsdXJlIGFuZCBub3RpZmllcyB0aGUgZGV2ZWxvcGVyLgotICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBhbGxvd3MgdGhlIGRldmVsb3BlciB0byByZXZpZXcgYW5kIGFkZHJlc3MgdGhlIGxpY2Vuc2UgdGV4dCBjaGFuZ2VzLgotICAgICAgICAgICAgICAgIEFsc28gbm90ZSB0aGF0IGlmIGEgbWlzbWF0Y2ggb2NjdXJzIGR1cmluZyB0aGUgYnVpbGQsIHRoZSBjb3JyZWN0IG1kNQotICAgICAgICAgICAgICAgIGNoZWNrc3VtIGlzIHBsYWNlZCBpbiB0aGUgYnVpbGQgbG9nIGFuZCBjYW4gYmUgZWFzaWx5IGNvcGllZCB0byB0aGUgcmVjaXBlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGVyZSBpcyBubyBsaW1pdCB0byBob3cgbWFueSBmaWxlcyB5b3UgY2FuIHNwZWNpZnkgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBHZW5lcmFsbHksIGhvd2V2ZXIsIGV2ZXJ5IHByb2plY3QgcmVxdWlyZXMgYSBmZXcgc3BlY2lmaWNhdGlvbnMgZm9yIGxpY2Vuc2UgdHJhY2tpbmcuCi0gICAgICAgICAgICAgICAgTWFueSBwcm9qZWN0cyBoYXZlIGEgIkNPUFlJTkciIGZpbGUgdGhhdCBzdG9yZXMgdGhlIGxpY2Vuc2UgaW5mb3JtYXRpb24gZm9yIGFsbCB0aGUgc291cmNlCi0gICAgICAgICAgICAgICAgY29kZSBmaWxlcy4KLSAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIGFsbG93cyB5b3UgdG8ganVzdCB0cmFjayB0aGUgIkNPUFlJTkciIGZpbGUgYXMgbG9uZyBhcyBpdCBpcyBrZXB0IHVwIHRvIGRhdGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDx0aXA+Ci0gICAgICAgICAgICAgICAgSWYgeW91IHNwZWNpZnkgYW4gZW1wdHkgb3IgaW52YWxpZCAibWQ1IiBwYXJhbWV0ZXIsIEJpdEJha2UgcmV0dXJucyBhbiBtZDUgbWlzLW1hdGNoCi0gICAgICAgICAgICAgICAgZXJyb3IgYW5kIGRpc3BsYXlzIHRoZSBjb3JyZWN0ICJtZDUiIHBhcmFtZXRlciB2YWx1ZSBkdXJpbmcgdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgIFRoZSBjb3JyZWN0IHBhcmFtZXRlciBpcyBhbHNvIGNhcHR1cmVkIGluIHRoZSBidWlsZCBsb2cuCi0gICAgICAgICAgICA8L3RpcD4KLQotICAgICAgICAgICAgPHRpcD4KLSAgICAgICAgICAgICAgICBJZiB0aGUgd2hvbGUgZmlsZSBjb250YWlucyBvbmx5IGxpY2Vuc2UgdGV4dCwgeW91IGRvIG5vdCBuZWVkIHRvIHVzZSB0aGUgImJlZ2lubGluZSIgYW5kCi0gICAgICAgICAgICAgICAgImVuZGxpbmUiIHBhcmFtZXRlcnMuCi0gICAgICAgICAgICA8L3RpcD4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSJlbmFibGluZy1jb21tZXJjaWFsbHktbGljZW5zZWQtcmVjaXBlcyI+Ci0gICAgICAgIDx0aXRsZT5FbmFibGluZyBDb21tZXJjaWFsbHkgTGljZW5zZWQgUmVjaXBlczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkaXNhYmxlcwotICAgICAgICAgICAgY29tcG9uZW50cyB0aGF0IGhhdmUgY29tbWVyY2lhbCBvciBvdGhlciBzcGVjaWFsIGxpY2Vuc2luZwotICAgICAgICAgICAgcmVxdWlyZW1lbnRzLgotICAgICAgICAgICAgU3VjaCByZXF1aXJlbWVudHMgYXJlIGRlZmluZWQgb24gYQotICAgICAgICAgICAgcmVjaXBlLWJ5LXJlY2lwZSBiYXNpcyB0aHJvdWdoIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxJQ0VOU0VfRkxBR1MnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZSBkZWZpbml0aW9uIGluIHRoZSBhZmZlY3RlZCByZWNpcGUuCi0gICAgICAgICAgICBGb3IgaW5zdGFuY2UsIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXVnbHk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgcmVjaXBlIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50OgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBIZXJlIGlzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGljYXRlZCBleGFtcGxlIHRoYXQgY29udGFpbnMgYm90aCBhbgotICAgICAgICAgICAgZXhwbGljaXQgcmVjaXBlIG5hbWUgYW5kIHZlcnNpb24gKGFmdGVyIHZhcmlhYmxlIGV4cGFuc2lvbik6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIExJQ0VOU0VfRkxBR1MgPSAibGljZW5zZV8ke1BOfV8ke1BWfSIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLQkgICAgICAgIEluIG9yZGVyIGZvciBhIGNvbXBvbmVudCByZXN0cmljdGVkIGJ5IGEgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPgotCSAgICAgICAgZGVmaW5pdGlvbiB0byBiZSBlbmFibGVkIGFuZCBpbmNsdWRlZCBpbiBhbiBpbWFnZSwgaXQKLQkgICAgICAgIG5lZWRzIHRvIGhhdmUgYSBtYXRjaGluZyBlbnRyeSBpbiB0aGUgZ2xvYmFsCi0JICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRV9GTEFHU19XSElURUxJU1QnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIGEgdmFyaWFibGUKLQkgICAgICAgIHR5cGljYWxseSBkZWZpbmVkIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIGVuYWJsZQotCSAgICAgICAgdGhlIDxmaWxlbmFtZT5wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGx1Z2lucy11Z2x5PC9maWxlbmFtZT4KLQkgICAgICAgIHBhY2thZ2UsIHlvdSBjb3VsZCBhZGQgZWl0aGVyIHRoZSBzdHJpbmcKLQkgICAgICAgICJjb21tZXJjaWFsX2dzdC1wbHVnaW5zLXVnbHkiIG9yIHRoZSBtb3JlIGdlbmVyYWwgc3RyaW5nCi0JICAgICAgICAiY29tbWVyY2lhbCIgdG8gPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbGljZW5zZS1mbGFnLW1hdGNoaW5nJz5MaWNlbnNlIEZsYWcgTWF0Y2hpbmc8L2xpbms+IiBzZWN0aW9uCi0gICAgICAgICAgICBmb3IgYSBmdWxsIGV4cGxhbmF0aW9uIG9mIGhvdyA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IG1hdGNoaW5nIHdvcmtzLgotICAgICAgICAgICAgSGVyZSBpcyB0aGUgZXhhbXBsZToKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgTElDRU5TRV9GTEFHU19XSElURUxJU1QgPSAiY29tbWVyY2lhbF9nc3QtcGx1Z2lucy11Z2x5IgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotCSAgICAgICAgTGlrZXdpc2UsIHRvIGFkZGl0aW9uYWxseSBlbmFibGUgdGhlIHBhY2thZ2UgYnVpbHQgZnJvbSB0aGUgcmVjaXBlIGNvbnRhaW5pbmcKLQkgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTID0gImxpY2Vuc2VfJHtQTn1fJHtQVn0iPC9maWxlbmFtZT4sIGFuZCBhc3N1bWluZwotCSAgICAgICAgdGhhdCB0aGUgYWN0dWFsIHJlY2lwZSBuYW1lIHdhcyA8ZmlsZW5hbWU+ZW1nZF8xLjEwLmJiPC9maWxlbmFtZT4sCi0JICAgICAgICB0aGUgZm9sbG93aW5nIHN0cmluZyB3b3VsZCBlbmFibGUgdGhhdCBwYWNrYWdlIGFzIHdlbGwgYXMKLQkgICAgICAgIHRoZSBvcmlnaW5hbCA8ZmlsZW5hbWU+Z3N0LXBsdWdpbnMtdWdseTwvZmlsZW5hbWU+IHBhY2thZ2U6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIExJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUID0gImNvbW1lcmNpYWxfZ3N0LXBsdWdpbnMtdWdseSBsaWNlbnNlX2VtZ2RfMS4xMCIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLQkgICAgICAgIEFzIGEgY29udmVuaWVuY2UsIHlvdSBkbyBub3QgbmVlZCB0byBzcGVjaWZ5IHRoZSBjb21wbGV0ZSBsaWNlbnNlIHN0cmluZwotCSAgICAgICAgaW4gdGhlIHdoaXRlbGlzdCBmb3IgZXZlcnkgcGFja2FnZS4KLSAgICAgICAgICAgIFlvdSBjYW4gdXNlIGFuIGFiYnJldmlhdGVkIGZvcm0sIHdoaWNoIGNvbnNpc3RzCi0JICAgICAgICBvZiBqdXN0IHRoZSBmaXJzdCBwb3J0aW9uIG9yIHBvcnRpb25zIG9mIHRoZSBsaWNlbnNlIHN0cmluZyBiZWZvcmUKLQkgICAgICAgIHRoZSBpbml0aWFsIHVuZGVyc2NvcmUgY2hhcmFjdGVyIG9yIGNoYXJhY3RlcnMuCi0gICAgICAgICAgICBBIHBhcnRpYWwgc3RyaW5nIHdpbGwgbWF0Y2gKLQkgICAgICAgIGFueSBsaWNlbnNlIHRoYXQgY29udGFpbnMgdGhlIGdpdmVuIHN0cmluZyBhcyB0aGUgZmlyc3QKLQkgICAgICAgIHBvcnRpb24gb2YgaXRzIGxpY2Vuc2UuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZwotCSAgICAgICAgd2hpdGVsaXN0IHN0cmluZyB3aWxsIGFsc28gbWF0Y2ggYm90aCBvZiB0aGUgcGFja2FnZXMKLQkgICAgICAgIHByZXZpb3VzbHkgbWVudGlvbmVkIGFzIHdlbGwgYXMgYW55IG90aGVyIHBhY2thZ2VzIHRoYXQgaGF2ZQotCSAgICAgICAgbGljZW5zZXMgc3RhcnRpbmcgd2l0aCAiY29tbWVyY2lhbCIgb3IgImxpY2Vuc2UiLgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCA9ICJjb21tZXJjaWFsIGxpY2Vuc2UiCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ibGljZW5zZS1mbGFnLW1hdGNoaW5nIj4KLSAgICAgICAgICAgIDx0aXRsZT5MaWNlbnNlIEZsYWcgTWF0Y2hpbmc8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLQkJICAgICAgICBMaWNlbnNlIGZsYWcgbWF0Y2hpbmcgYWxsb3dzIHlvdSB0byBjb250cm9sIHdoYXQgcmVjaXBlcyB0aGUKLSAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluY2x1ZGVzIGluIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICBGdW5kYW1lbnRhbGx5LCB0aGUgYnVpbGQgc3lzdGVtIGF0dGVtcHRzIHRvIG1hdGNoCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxJQ0VOU0VfRkxBR1MnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgc3RyaW5ncyBmb3VuZCBpbiByZWNpcGVzIGFnYWluc3QKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRV9GTEFHU19XSElURUxJU1QnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHN0cmluZ3MgZm91bmQgaW4gdGhlIHdoaXRlbGlzdC4KLSAgICAgICAgICAgICAgICBBIG1hdGNoIGNhdXNlcyB0aGUgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSByZWNpcGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgYnVpbGQsIHdoaWxlIGZhaWx1cmUgdG8gZmluZCBhIG1hdGNoIGNhdXNlcyB0aGUgYnVpbGQgc3lzdGVtIHRvCi0gICAgICAgICAgICAgICAgZXhjbHVkZSBhIHJlY2lwZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgbGljZW5zZSBmbGFnIG1hdGNoaW5nIGlzIHNpbXBsZS4KLSAgICAgICAgICAgICAgICBIb3dldmVyLCB1bmRlcnN0YW5kaW5nIHNvbWUgY29uY2VwdHMgd2lsbCBoZWxwIHlvdQotICAgICAgICAgICAgICAgIGNvcnJlY3RseSBhbmQgZWZmZWN0aXZlbHkgdXNlIG1hdGNoaW5nLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCZWZvcmUgYSBmbGFnCi0gICAgICAgICAgICAgICAgZGVmaW5lZCBieSBhIHBhcnRpY3VsYXIgcmVjaXBlIGlzIHRlc3RlZCBhZ2FpbnN0IHRoZQotICAgICAgICAgICAgICAgIGNvbnRlbnRzIG9mIHRoZSB3aGl0ZWxpc3QsIHRoZSBleHBhbmRlZCBzdHJpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+XyR7UE59PC9maWxlbmFtZT4gaXMgYXBwZW5kZWQgdG8gdGhlIGZsYWcuCi0gICAgICAgICAgICAgICAgVGhpcyBleHBhbnNpb24gbWFrZXMgZWFjaCA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgdmFsdWUgcmVjaXBlLXNwZWNpZmljLgotICAgICAgICAgICAgICAgIEFmdGVyIGV4cGFuc2lvbiwgdGhlIHN0cmluZyBpcyB0aGVuIG1hdGNoZWQgYWdhaW5zdCB0aGUKLSAgICAgICAgICAgICAgICB3aGl0ZWxpc3QuCi0gICAgICAgICAgICAgICAgVGh1cywgc3BlY2lmeWluZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBpbiByZWNpcGUgImZvbyIsIGZvciBleGFtcGxlLCByZXN1bHRzIGluIHRoZSBzdHJpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ImNvbW1lcmNpYWxfZm9vIjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIEFuZCwgdG8gY3JlYXRlIGEgbWF0Y2gsIHRoYXQgc3RyaW5nIG11c3QgYXBwZWFyIGluIHRoZQotICAgICAgICAgICAgICAgIHdoaXRlbGlzdC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSnVkaWNpb3VzIHVzZSBvZiB0aGUgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIHN0cmluZ3MgYW5kIHRoZSBjb250ZW50cyBvZiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPiB2YXJpYWJsZQotICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgYSBsb3Qgb2YgZmxleGliaWxpdHkgZm9yIGluY2x1ZGluZyBvciBleGNsdWRpbmcKLSAgICAgICAgICAgICAgICByZWNpcGVzIGJhc2VkIG9uIGxpY2Vuc2luZy4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNhbiBicm9hZGVuIHRoZSBtYXRjaGluZyBjYXBhYmlsaXRpZXMgYnkKLSAgICAgICAgICAgICAgICB1c2luZyBsaWNlbnNlIGZsYWdzIHN0cmluZyBzdWJzZXRzIGluIHRoZSB3aGl0ZWxpc3QuCi0gICAgICAgICAgICAgICAgPG5vdGU+V2hlbiB1c2luZyBhIHN0cmluZyBzdWJzZXQsIGJlIHN1cmUgdG8gdXNlIHRoZSBwYXJ0IG9mCi0gICAgICAgICAgICAgICAgICAgIHRoZSBleHBhbmRlZCBzdHJpbmcgdGhhdCBwcmVjZWRlcyB0aGUgYXBwZW5kZWQgdW5kZXJzY29yZQotICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgKGUuZy4gPGZpbGVuYW1lPnVzZXRoaXNwYXJ0XzEuMzwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dXNldGhpc3BhcnRfMS40PC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzaW1wbHkgc3BlY2lmeWluZyB0aGUgc3RyaW5nICJjb21tZXJjaWFsIiBpbgotICAgICAgICAgICAgICAgIHRoZSB3aGl0ZWxpc3QgbWF0Y2hlcyBhbnkgZXhwYW5kZWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IGRlZmluaXRpb24gdGhhdCBzdGFydHMgd2l0aAotICAgICAgICAgICAgICAgIHRoZSBzdHJpbmcgImNvbW1lcmNpYWwiIHN1Y2ggYXMgImNvbW1lcmNpYWxfZm9vIiBhbmQKLSAgICAgICAgICAgICAgICAiY29tbWVyY2lhbF9iYXIiLCB3aGljaCBhcmUgdGhlIHN0cmluZ3MgdGhlIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIGZvciBoeXBvdGhldGljYWwgcmVjaXBlcyBuYW1lZAotICAgICAgICAgICAgICAgICJmb28iIGFuZCAiYmFyIiBhc3N1bWluZyB0aG9zZSByZWNpcGVzIHNpbXBseSBzcGVjaWZ5IHRoZQotICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIExJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVGh1cywgeW91IGNhbiBjaG9vc2UgdG8gZXhoYXVzdGl2ZWx5Ci0gICAgICAgICAgICAgICAgZW51bWVyYXRlIGVhY2ggbGljZW5zZSBmbGFnIGluIHRoZSB3aGl0ZWxpc3QgYW5kCi0gICAgICAgICAgICAgICAgYWxsb3cgb25seSBzcGVjaWZpYyByZWNpcGVzIGludG8gdGhlIGltYWdlLCBvcgotICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIGEgc3RyaW5nIHN1YnNldCB0aGF0IGNhdXNlcyBhIGJyb2FkZXIgcmFuZ2Ugb2YKLSAgICAgICAgICAgICAgICBtYXRjaGVzIHRvIGFsbG93IGEgcmFuZ2Ugb2YgcmVjaXBlcyBpbnRvIHRoZSBpbWFnZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBzY2hlbWUgd29ya3MgZXZlbiBpZiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IHN0cmluZyBhbHJlYWR5Ci0gICAgICAgICAgICAgICAgaGFzIDxmaWxlbmFtZT5fJHtQTn08L2ZpbGVuYW1lPiBhcHBlbmRlZC4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGJ1aWxkIHN5c3RlbSB0dXJucyB0aGUgbGljZW5zZSBmbGFnCi0gICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfMS4yX2ZvbyIgaW50byAiY29tbWVyY2lhbF8xLjJfZm9vX2ZvbyIgYW5kIHdvdWxkCi0gICAgICAgICAgICAgICAgbWF0Y2ggYm90aCB0aGUgZ2VuZXJhbCAiY29tbWVyY2lhbCIgYW5kIHRoZSBzcGVjaWZpYwotICAgICAgICAgICAgICAgICJjb21tZXJjaWFsXzEuMl9mb28iIHN0cmluZ3MgZm91bmQgaW4gdGhlIHdoaXRlbGlzdCwgYXMKLSAgICAgICAgICAgICAgICBleHBlY3RlZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBvdGhlciBzY2VuYXJpb3M6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPllvdSBjYW4gc3BlY2lmeSBhIHZlcnNpb25lZCBzdHJpbmcgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgc3VjaCBhcyAiY29tbWVyY2lhbF9mb29fMS4yIiBpbiBhICJmb28iIHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gZXhwYW5kcyB0aGlzIHN0cmluZyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfZm9vXzEuMl9mb28iLgotICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZSB0aGlzIGxpY2Vuc2UgZmxhZyB3aXRoIGEgd2hpdGVsaXN0IHRoYXQgaGFzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3RyaW5nICJjb21tZXJjaWFsIiBhbmQgeW91IG1hdGNoIHRoZSBmbGFnIGFsb25nCi0gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGFueSBvdGhlciBmbGFnIHRoYXQgc3RhcnRzIHdpdGggdGhlIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWwiLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VW5kZXIgdGhlIHNhbWUgY2lyY3Vtc3RhbmNlcywgeW91IGNhbgotICAgICAgICAgICAgICAgICAgICAgICAgdXNlICJjb21tZXJjaWFsX2ZvbyIgaW4gdGhlIHdoaXRlbGlzdCBhbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gbm90IG9ubHkgbWF0Y2hlcyAiY29tbWVyY2lhbF9mb29fMS4yIiBidXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsc28gbWF0Y2hlcyBhbnkgbGljZW5zZSBmbGFnIHdpdGggdGhlIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfZm9vIiwgcmVnYXJkbGVzcyBvZiB0aGUgdmVyc2lvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+WW91IGNhbiBiZSB2ZXJ5IHNwZWNpZmljIGFuZCB1c2UgYm90aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgYW5kIHZlcnNpb24gcGFydHMgaW4gdGhlIHdoaXRlbGlzdCAoZS5nLgotICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfZm9vXzEuMiIpIHRvIHNwZWNpZmljYWxseSBtYXRjaCBhCi0gICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uZWQgcmVjaXBlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9Im90aGVyLXZhcmlhYmxlcy1yZWxhdGVkLXRvLWNvbW1lcmNpYWwtbGljZW5zZXMiPgotICAgICAgICAgICAgPHRpdGxlPk90aGVyIFZhcmlhYmxlcyBSZWxhdGVkIHRvIENvbW1lcmNpYWwgTGljZW5zZXM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBPdGhlciBoZWxwZnVsIHZhcmlhYmxlcyByZWxhdGVkIHRvIGNvbW1lcmNpYWwKLSAgICAgICAgICAgICAgICBsaWNlbnNlIGhhbmRsaW5nIGV4aXN0IGFuZCBhcmUgZGVmaW5lZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYzwvZmlsZW5hbWU+IGZpbGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBDT01NRVJDSUFMX0FVRElPX1BMVUdJTlMgPz0gIiIKLSAgICAgQ09NTUVSQ0lBTF9WSURFT19QTFVHSU5TID89ICIiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGVuYWJsZSB0aGVzZSBjb21wb25lbnRzLCB5b3UgY2FuIGRvIHNvIGJ5IG1ha2luZyBzdXJlIHlvdSBoYXZlCi0gICAgICAgICAgICAgICAgc3RhdGVtZW50cyBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgICAgICBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQ09NTUVSQ0lBTF9BVURJT19QTFVHSU5TID0gImdzdC1wbHVnaW5zLXVnbHktbWFkIFwKLSAgICAgICAgZ3N0LXBsdWdpbnMtdWdseS1tcGVnYXVkaW9wYXJzZSIKLSAgICAgQ09NTUVSQ0lBTF9WSURFT19QTFVHSU5TID0gImdzdC1wbHVnaW5zLXVnbHktbXBlZzJkZWMgXAotICAgICAgICBnc3QtcGx1Z2lucy11Z2x5LW1wZWdzdHJlYW0gZ3N0LXBsdWdpbnMtYmFkLW1wZWd2aWRlb3BhcnNlIgotICAgICBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCA9ICJjb21tZXJjaWFsX2dzdC1wbHVnaW5zLXVnbHkgY29tbWVyY2lhbF9nc3QtcGx1Z2lucy1iYWQgY29tbWVyY2lhbF9xbW1wIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHlvdSBjb3VsZCBhbHNvIGNyZWF0ZSBhIG1hdGNoaW5nIHdoaXRlbGlzdAotICAgICAgICAgICAgICAgIGZvciB0aG9zZSBjb21wb25lbnRzIHVzaW5nIHRoZSBtb3JlIGdlbmVyYWwgImNvbW1lcmNpYWwiCi0gICAgICAgICAgICAgICAgaW4gdGhlIHdoaXRlbGlzdCwgYnV0IHRoYXQgd291bGQgYWxzbyBlbmFibGUgYWxsIHRoZQotICAgICAgICAgICAgICAgIG90aGVyIHBhY2thZ2VzIHdpdGgKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRV9GTEFHUyc+PGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBjb250YWluaW5nICJjb21tZXJjaWFsIiwgd2hpY2ggeW91IG1heSBvciBtYXkgbm90IHdhbnQ6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCA9ICJjb21tZXJjaWFsIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgU3BlY2lmeWluZyBhdWRpbyBhbmQgdmlkZW8gcGx1Zy1pbnMgYXMgcGFydCBvZiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09NTUVSQ0lBTF9BVURJT19QTFVHSU5TPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNPTU1FUkNJQUxfVklERU9fUExVR0lOUzwvZmlsZW5hbWU+IHN0YXRlbWVudHMKLSAgICAgICAgICAgICAgICAoYWxvbmcgd2l0aCB0aGUgZW5hYmxpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPikgaW5jbHVkZXMgdGhlCi0gICAgICAgICAgICAgICAgcGx1Zy1pbnMgb3IgY29tcG9uZW50cyBpbnRvIGJ1aWx0IGltYWdlcywgdGh1cyBhZGRpbmcKLSAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciBtZWRpYSBmb3JtYXRzIG9yIGNvbXBvbmVudHMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLSAgICA8L3NlY3Rpb24+Ci08L3NlY3Rpb24+Ci08L2NoYXB0ZXI+Ci08IS0tCi12aW06IGV4cGFuZHRhYiB0dz04MCB0cz00Ci0tLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvdXNpbmdwb2t5LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvdXNpbmdwb2t5LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNkOWFkNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3VzaW5ncG9reS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkxICswLDAgQEAKLTwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKLSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCi1bPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Ci0KLTxjaGFwdGVyIGlkPSd1c2luZ3Bva3knPgotPHRpdGxlPlVzaW5nIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGNvbW1vbiB1c2FnZSBmb3IgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgIFRoZSBpbmZvcm1hdGlvbiBpcyBpbnRyb2R1Y3RvcnkgaW4gbmF0dXJlIGFzIG90aGVyIG1hbnVhbHMgaW4gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgZG9jdW1lbnRhdGlvbiBzZXQgcHJvdmlkZSBtb3JlIGRldGFpbHMgb24gaG93IHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICA8L3BhcmE+Ci0KLTxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktYnVpbGQnPgotICAgIDx0aXRsZT5SdW5uaW5nIGEgQnVpbGQ8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIHN1bW1hcnkgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHByb3ZpZGVzIGluZm9ybWF0aW9uCi0gICAgICAgIGZvciBsZXNzIG9idmlvdXMgYXNwZWN0cyBvZiB0aGUgYnVpbGQgcHJvY2Vzcy4KLSAgICAgICAgRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIGFuIGltYWdlIHVzaW5nIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKLSAgICAgICAgc3lzdGVtLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQuCi0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9J2J1aWxkLW92ZXJ2aWV3Jz4KLSAgICAgICAgPHRpdGxlPkJ1aWxkIE92ZXJ2aWV3PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEluIHRoZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB5b3Ugd2lsbCBuZWVkIHRvIGJ1aWxkIGFuIGltYWdlIHdoZW5ldmVyIHlvdSBjaGFuZ2UgaGFyZHdhcmUKLSAgICAgICAgICAgIHN1cHBvcnQsIGFkZCBvciBjaGFuZ2Ugc3lzdGVtIGxpYnJhcmllcywgb3IgYWRkIG9yIGNoYW5nZSBzZXJ2aWNlcyB0aGF0IGhhdmUgZGVwZW5kZW5jaWVzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG1lZGlhb2JqZWN0PgotICAgICAgICAgICAgPGltYWdlb2JqZWN0PgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9idWlsZGluZy1hbi1pbWFnZS5wbmciIGZvcm1hdD0iUE5HIiBhbGlnbj0nY2VudGVyJyBzY2FsZWZpdD0nMScvPgotICAgICAgICAgICAgPC9pbWFnZW9iamVjdD4KLSAgICAgICAgICAgIDxjYXB0aW9uPgotICAgICAgICAgICAgICAgIDxwYXJhPkJ1aWxkaW5nIGFuIEltYWdlPC9wYXJhPgotICAgICAgICAgICAgPC9jYXB0aW9uPgotICAgICAgICA8L21lZGlhb2JqZWN0PgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGRvIGlzIHNldCB1cCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICBlbnZpcm9ubWVudCBieSBzb3VyY2luZyB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0Ci0gICAgICAgICAgICAoaS5lLgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgotICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOyBbPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcjwvcmVwbGFjZWFibGU+XQotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcjwvcmVwbGFjZWFibGU+IGFyZ3VtZW50IGlzIG9wdGlvbmFsIGFuZCBzcGVjaWZpZXMgdGhlIGRpcmVjdG9yeSB0aGUKLSAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBmb3IgdGhlIGJ1aWxkIC0KLSAgICAgICAgICAgIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEgQnVpbGQgRGlyZWN0b3J5LCBpdCBkZWZhdWx0cyB0byBhIGRpcmVjdG9yeQotICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gaW4geW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotICAgICAgICAgICAgQSBjb21tb24gcHJhY3RpY2UgaXMgdG8gdXNlIGEgZGlmZmVyZW50IEJ1aWxkIERpcmVjdG9yeSBmb3IgZGlmZmVyZW50IHRhcmdldHMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPn4vYnVpbGQveDg2PC9maWxlbmFtZT4gZm9yIGEgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgdGFyZ2V0LCBhbmQgPGZpbGVuYW1lPn4vYnVpbGQvYXJtPC9maWxlbmFtZT4gZm9yIGEgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiB0YXJnZXQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIE9uY2UgdGhlIGJ1aWxkIGVudmlyb25tZW50IGlzIHNldCB1cCwgeW91IGNhbiBidWlsZCBhIHRhcmdldCB1c2luZzoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBleHBlcmllbmNlIGEgYnVpbGQgZXJyb3IgZHVlIHRvIHJlc291cmNlcwotICAgICAgICAgICAgICAgICAgICB0ZW1wb3JhcmlseSBiZWluZyB1bmF2YWlsYWJsZSBhbmQgaXQgYXBwZWFycyB5b3UKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkIG5vdCBiZSBoYXZpbmcgdGhpcyBpc3N1ZSwgaXQgbWlnaHQgYmUgZHVlCi0gICAgICAgICAgICAgICAgICAgIHRvIHRoZSBjb21iaW5hdGlvbiBvZiBhIDQuMysgTGludXgga2VybmVsIGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IHZlcnNpb24gMjI4KwotICAgICAgICAgICAgICAgICAgICAoaS5lLiBzZWUgdGhpcwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vdW5peC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMjUzOTAzL2NyZWF0aW5nLXRocmVhZHMtZmFpbHMtd2l0aC1yZXNvdXJjZS10ZW1wb3JhcmlseS11bmF2YWlsYWJsZS13aXRoLTQtMy1rZXJuZWwnPmxpbms8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24pLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUbyB3b3JrIGFyb3VuZCB0aGlzIGlzc3VlLCB5b3UgY2FuIHRyeSBlaXRoZXIKLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnkgdGhlIGJ1aWxkIGFnYWluLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGlmeSB0aGUgIkRlZmF1bHRUYXNrc01heCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IHBhcmFtZXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHVuY29tbWVudGluZyBpdCBhbmQgc2V0dGluZyBpdCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmZpbml0eSIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgcGFyYW1ldGVyIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW0uY29uZjwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvc3lzdGVtZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gbW9zdCBzeXN0ZW1zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gaXMgdGhlIG5hbWUgb2YgdGhlIHJlY2lwZSB5b3Ugd2FudCB0byBidWlsZC4KLSAgICAgICAgICAgIENvbW1vbiB0YXJnZXRzIGFyZSB0aGUgaW1hZ2VzIGluIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXM8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXM8L2ZpbGVuYW1lPiwgZXRjLiBhbGwgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgIE9yLCB0aGUgdGFyZ2V0IGNhbiBiZSB0aGUgbmFtZSBvZiBhIHJlY2lwZSBmb3IgYSBzcGVjaWZpYyBwaWVjZSBvZiBzb2Z0d2FyZSBzdWNoIGFzCi0gICAgICAgICAgICBCdXN5Qm94LgotICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgaW1hZ2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHN1cHBvcnRzLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0icmVmLWltYWdlcyI+SW1hZ2VzPC9saW5rPiIgY2hhcHRlci4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgQnVpbGRpbmcgYW4gaW1hZ2Ugd2l0aG91dCBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uCi0gICAgICAgICAgICAzIChHUEx2MyksIG9yIHNpbWlsYXJseSBsaWNlbnNlZCwgY29tcG9uZW50cyBpcyBzdXBwb3J0ZWQgZm9yCi0gICAgICAgICAgICBvbmx5IG1pbmltYWwgYW5kIGJhc2UgaW1hZ2VzLgotICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ncmVmLWltYWdlcyc+SW1hZ2VzPC9saW5rPiIgY2hhcHRlciBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdidWlsZGluZy1hbi1pbWFnZS11c2luZy1ncGwtY29tcG9uZW50cyc+Ci0gICAgICAgIDx0aXRsZT5CdWlsZGluZyBhbiBJbWFnZSBVc2luZyBHUEwgQ29tcG9uZW50czwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIGJ1aWxkaW5nIGFuIGltYWdlIHVzaW5nIEdQTCBjb21wb25lbnRzLCB5b3UgbmVlZCB0byBtYWludGFpbiB5b3VyIG9yaWdpbmFsCi0gICAgICAgICAgICBzZXR0aW5ncyBhbmQgbm90IHN3aXRjaCBiYWNrIGFuZCBmb3J0aCBhcHBseWluZyBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIEdOVQotICAgICAgICAgICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSAgICAgICAgICAgIElmIHlvdSByZWJ1aWxkIHVzaW5nIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBHUEwsIGRlcGVuZGVuY3kgZXJyb3JzIG1pZ2h0IG9jY3VyCi0gICAgICAgICAgICBkdWUgdG8gc29tZSBjb21wb25lbnRzIG5vdCBiZWluZyByZWJ1aWx0LgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0ndXNpbmdwb2t5LWluc3RhbGwnPgotICAgIDx0aXRsZT5JbnN0YWxsaW5nIGFuZCBVc2luZyB0aGUgUmVzdWx0PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBPbmNlIGFuIGltYWdlIGhhcyBiZWVuIGJ1aWx0LCBpdCBvZnRlbiBuZWVkcyB0byBiZSBpbnN0YWxsZWQuCi0gICAgICAgIFRoZSBpbWFnZXMgYW5kIGtlcm5lbHMgYnVpbHQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXJlIHBsYWNlZCBpbiB0aGUKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+IGluCi0gICAgICAgIDxmaWxlbmFtZSBjbGFzcz0iZGlyZWN0b3J5Ij50bXAvZGVwbG95L2ltYWdlczwvZmlsZW5hbWU+LgotICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHJ1biBwcmUtYnVpbHQgaW1hZ2VzIHN1Y2ggYXMgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgotICAgICAgICBhbmQgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiwgc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+Ci0gICAgICAgIG1hbnVhbC4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBpbnN0YWxsIHRoZXNlIGltYWdlcywgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB5b3VyCi0gICAgICAgIHBhcnRpY3VsYXIgYm9hcmQgb3IgbWFjaGluZS4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZGVidWdnaW5nLXRvb2xzLWFuZC10ZWNobmlxdWVzJz4KLSAgICA8dGl0bGU+RGVidWdnaW5nIFRvb2xzIGFuZCBUZWNobmlxdWVzPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgZXhhY3QgbWV0aG9kIGZvciBkZWJ1Z2dpbmcgYnVpbGQgZmFpbHVyZXMgZGVwZW5kcyBvbiB0aGUgbmF0dXJlIG9mCi0gICAgICAgIHRoZSBwcm9ibGVtIGFuZCBvbiB0aGUgc3lzdGVtJ3MgYXJlYSBmcm9tIHdoaWNoIHRoZSBidWcgb3JpZ2luYXRlcy4KLSAgICAgICAgU3RhbmRhcmQgZGVidWdnaW5nIHByYWN0aWNlcyBzdWNoIGFzIGNvbXBhcmlzb24gYWdhaW5zdCB0aGUgbGFzdAotICAgICAgICBrbm93biB3b3JraW5nIHZlcnNpb24gd2l0aCBleGFtaW5hdGlvbiBvZiB0aGUgY2hhbmdlcyBhbmQgdGhlCi0gICAgICAgIHJlLWFwcGxpY2F0aW9uIG9mIHN0ZXBzIHRvIGlkZW50aWZ5IHRoZSBvbmUgY2F1c2luZyB0aGUgcHJvYmxlbSBhcmUKLSAgICAgICAgdmFsaWQgZm9yIHRoZSBZb2N0byBQcm9qZWN0IGp1c3QgYXMgdGhleSBhcmUgZm9yIGFueSBvdGhlciBzeXN0ZW0uCi0gICAgICAgIEV2ZW4gdGhvdWdoIGl0IGlzIGltcG9zc2libGUgdG8gZGV0YWlsIGV2ZXJ5IHBvc3NpYmxlIHBvdGVudGlhbCBmYWlsdXJlLAotICAgICAgICB0aGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSBnZW5lcmFsIHRpcHMgdG8gYWlkIGluIGRlYnVnZ2luZy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQSB1c2VmdWwgZmVhdHVyZSBmb3IgZGVidWdnaW5nIGlzIHRoZSBlcnJvciByZXBvcnRpbmcgdG9vbC4KLSAgICAgICAgQ29uZmlndXJpbmcgdGhlIFlvY3RvIFByb2plY3QgdG8gdXNlIHRoaXMgdG9vbCBjYXVzZXMgdGhlCi0gICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcHJvZHVjZSBlcnJvciByZXBvcnRpbmcgY29tbWFuZHMgYXMKLSAgICAgICAgcGFydCBvZiB0aGUgY29uc29sZSBvdXRwdXQuCi0gICAgICAgIFlvdSBjYW4gZW50ZXIgdGhlIGNvbW1hbmRzIGFmdGVyIHRoZSBidWlsZCBjb21wbGV0ZXMKLSAgICAgICAgdG8gbG9nIGVycm9yIGluZm9ybWF0aW9uCi0gICAgICAgIGludG8gYSBjb21tb24gZGF0YWJhc2UsIHRoYXQgY2FuIGhlbHAgeW91IGZpZ3VyZSBvdXQgd2hhdCBtaWdodCBiZQotICAgICAgICBnb2luZyB3cm9uZy4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBlbmFibGUgYW5kIHVzZSB0aGlzIGZlYXR1cmUsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLXRoZS1lcnJvci1yZXBvcnRpbmctdG9vbCc+VXNpbmcgdGhlIEVycm9yIFJlcG9ydGluZyBUb29sPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb3IgZGlzY3Vzc2lvbnMgb24gZGVidWdnaW5nLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1Zyc+RGVidWdnaW5nIFdpdGggdGhlIEdOVSBQcm9qZWN0IERlYnVnZ2VyIChHREIpIFJlbW90ZWx5PC91bGluaz4iIHNlY3Rpb24KLSAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCi0gICAgICAgIGFuZCB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I2FkdC1lY2xpcHNlJz5Xb3JraW5nIHdpdGhpbiBFY2xpcHNlPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQotICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgotICAgIDwvcGFyYT4KLQotICAgIDxub3RlPgotICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBtYW55IGV4YW1wbGVzIG9mIHRoZQotICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgIFlvdSBjYW4gbGVhcm4gYWJvdXQgQml0QmFrZSBieSByZWFkaW5nIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KLSAgICA8L25vdGU+Ci0KLSAgICA8c2VjdGlvbiBpZD0ndXNpbmdwb2t5LWRlYnVnZ2luZy12aWV3aW5nLWxvZ3MtZnJvbS1mYWlsZWQtdGFza3MnPgotICAgICAgICA8dGl0bGU+Vmlld2luZyBMb2dzIGZyb20gRmFpbGVkIFRhc2tzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgbG9nIGZvciBhIHRhc2sgaW4gdGhlIGZpbGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0vdGVtcC9sb2cuZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPi4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgbG9nIGZvciB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdGFzayBvZiB0aGUgUUVNVSBtaW5pbWFsIGltYWdlIGZvciB0aGUgeDg2IG1hY2hpbmUKLSAgICAgICAgICAgICg8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+KSBtaWdodCBiZSBpbgotICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3RlbXAvbG9nLmRvX2NvbXBpbGU8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIFRvIHNlZSB0aGUgY29tbWFuZHMKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4gcmFuCi0gICAgICAgICAgICB0byBnZW5lcmF0ZSBhIGxvZywgbG9vayBhdCB0aGUgY29ycmVzcG9uZGluZwotICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bi5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgPGZpbGVuYW1lPmxvZy5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+IGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bi5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICBhcmUgYWN0dWFsbHkgc3ltYm9saWMgbGlua3MgdG8KLSAgICAgICAgICAgIDxmaWxlbmFtZT5sb2cuZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGlkPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPmxvZy5ydW5fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGlkPC9yZXBsYWNlYWJsZT4sCi0gICAgICAgICAgICB3aGVyZSA8cmVwbGFjZWFibGU+cGlkPC9yZXBsYWNlYWJsZT4gaXMgdGhlIFBJRCB0aGUgdGFzayBoYWQgd2hlbgotICAgICAgICAgICAgaXQgcmFuLgotICAgICAgICAgICAgVGhlIHN5bWxpbmtzIGFsd2F5cyBwb2ludCB0byB0aGUgZmlsZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbW9zdAotICAgICAgICAgICAgcmVjZW50IHJ1bi4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZGVidWdnaW5nLXZpZXdpbmctdmFyaWFibGUtdmFsdWVzJz4KLSAgICAgICAgPHRpdGxlPlZpZXdpbmcgVmFyaWFibGUgVmFsdWVzPC90aXRsZT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCaXRCYWtlJ3MgPGZpbGVuYW1lPi1lPC9maWxlbmFtZT4gb3B0aW9uIGlzIHVzZWQgdG8gZGlzcGxheQotICAgICAgICAgICAgdmFyaWFibGUgdmFsdWVzIGFmdGVyIHBhcnNpbmcuCi0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgZGlzcGxheXMgdGhlIHZhcmlhYmxlIHZhbHVlcyBhZnRlciB0aGUKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGkuZS4gPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gYW5kIHNvIGZvcnRoKSBoYXZlIGJlZW4KLSAgICAgICAgICAgIHBhcnNlZDoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIC1lCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgZGlzcGxheXMgdmFyaWFibGUgdmFsdWVzIGFmdGVyIGEgc3BlY2lmaWMKLSAgICAgICAgICAgIHJlY2lwZSBoYXMgYmVlbiBwYXJzZWQuCi0gICAgICAgICAgICBUaGUgdmFyaWFibGVzIGluY2x1ZGUgdGhvc2UgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBhcyB3ZWxsOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWUgcmVjaXBlbmFtZQotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPG5vdGU+PHBhcmE+Ci0gICAgICAgICAgICAgICAgRWFjaCByZWNpcGUgaGFzIGl0cyBvd24gcHJpdmF0ZSBzZXQgb2YgdmFyaWFibGVzIChkYXRhc3RvcmUpLgotICAgICAgICAgICAgICAgIEludGVybmFsbHksIGFmdGVyIHBhcnNpbmcgdGhlIGNvbmZpZ3VyYXRpb24sIGEgY29weSBvZiB0aGUKLSAgICAgICAgICAgICAgICByZXN1bHRpbmcgZGF0YXN0b3JlIGlzIG1hZGUgcHJpb3IgdG8gcGFyc2luZyBlYWNoIHJlY2lwZS4KLSAgICAgICAgICAgICAgICBUaGlzIGNvcHlpbmcgaW1wbGllcyB0aGF0IHZhcmlhYmxlcyBzZXQgaW4gb25lIHJlY2lwZSB3aWxsCi0gICAgICAgICAgICAgICAgbm90IGJlIHZpc2libGUgdG8gb3RoZXIgcmVjaXBlcy48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5MaWtld2lzZSwgZWFjaCB0YXNrIHdpdGhpbiBhIHJlY2lwZSBnZXRzIGEgcHJpdmF0ZQotICAgICAgICAgICAgICAgIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgcmVjaXBlIGRhdGFzdG9yZSwgd2hpY2ggbWVhbnMgdGhhdAotICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBzZXQgd2l0aGluIG9uZSB0YXNrIHdpbGwgbm90IGJlIHZpc2libGUgdG8KLSAgICAgICAgICAgICAgICBvdGhlciB0YXNrcy48L3BhcmE+Ci0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEluIHRoZSBvdXRwdXQgb2YgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPiwgZWFjaCB2YXJpYWJsZSBpcwotICAgICAgICAgICAgcHJlY2VkZWQgYnkgYSBkZXNjcmlwdGlvbiBvZiBob3cgdGhlIHZhcmlhYmxlIGdvdCBpdHMgdmFsdWUsCi0gICAgICAgICAgICBpbmNsdWRpbmcgdGVtcG9yYXJ5IHZhbHVlcyB0aGF0IHdlcmUgbGF0ZXIgb3ZlcnJpZGVuLgotICAgICAgICAgICAgVGhpcyBkZXNjcmlwdGlvbiBhbHNvIGluY2x1ZGVzIHZhcmlhYmxlIGZsYWdzICh2YXJmbGFncykgc2V0IG9uCi0gICAgICAgICAgICB0aGUgdmFyaWFibGUuCi0gICAgICAgICAgICBUaGUgb3V0cHV0IGNhbiBiZSB2ZXJ5IGhlbHBmdWwgZHVyaW5nIGRlYnVnZ2luZy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVmFyaWFibGVzIHRoYXQgYXJlIGV4cG9ydGVkIHRvIHRoZSBlbnZpcm9ubWVudCBhcmUgcHJlY2VkZWQgYnkKLSAgICAgICAgICAgIDxmaWxlbmFtZT5leHBvcnQ8L2ZpbGVuYW1lPiBpbiB0aGUgb3V0cHV0IG9mCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZXhwb3J0IENDPSJpNTg2LXBva3ktbGludXgtZ2NjIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9ob21lL3VsZi9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy9xZW11eDg2IgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbiBhZGRpdGlvbiB0byB2YXJpYWJsZSB2YWx1ZXMsIHRoZSBvdXRwdXQgb2YgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPiZuYnNwOzxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgY29tbWFuZHMgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IHN0YXJ0cyB3aXRoIGEgdHJlZSBsaXN0aW5nIGFsbCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgIGZpbGVzIGFuZCBjbGFzc2VzIGluY2x1ZGVkIGdsb2JhbGx5LCByZWN1cnNpdmVseSBsaXN0aW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlcyB0aGV5IGluY2x1ZGUgb3IgaW5oZXJpdCBpbiB0dXJuLgotICAgICAgICAgICAgICAgICAgICBNdWNoIG9mIHRoZSBiZWhhdmlvciBvZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAoaW5jbHVkaW5nIHRoZSBiZWhhdmlvciBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbm9ybWFsLXJlY2lwZS1idWlsZC10YXNrcyc+bm9ybWFsIHJlY2lwZSBidWlsZCB0YXNrczwvbGluaz4pCi0gICAgICAgICAgICAgICAgICAgIGlzIGltcGxlbWVudGVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1iYXNlJz48ZmlsZW5hbWU+YmFzZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBjbGFzcyBhbmQgdGhlIGNsYXNzZXMgaXQgaW5oZXJpdHMsIHJhdGhlciB0aGFuIGJlaW5nIGJ1aWx0Ci0gICAgICAgICAgICAgICAgICAgIGludG8gQml0QmFrZSBpdHNlbGYuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHZhcmlhYmxlIHZhbHVlcywgYWxsIGZ1bmN0aW9ucyBhcHBlYXIgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIHNoZWxsIGZ1bmN0aW9ucywgdmFyaWFibGVzIHJlZmVyZW5jZWQgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBib2R5IGFyZSBleHBhbmRlZC4KLSAgICAgICAgICAgICAgICAgICAgSWYgYSBmdW5jdGlvbiBoYXMgYmVlbiBtb2RpZmllZCB1c2luZyBvdmVycmlkZXMgb3IKLSAgICAgICAgICAgICAgICAgICAgdXNpbmcgb3ZlcnJpZGUtc3R5bGUgb3BlcmF0b3JzIGxpa2UKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9wcmVwZW5kPC9maWxlbmFtZT4sIHRoZW4gdGhlIGZpbmFsIGFzc2VtYmxlZAotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBib2R5IGFwcGVhcnMgaW4gdGhlIG91dHB1dC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd2aWV3aW5nLXBhY2thZ2UtaW5mb3JtYXRpb24td2l0aC1vZS1wa2dkYXRhLXV0aWwnPgotICAgICAgICA8dGl0bGU+Vmlld2luZyBQYWNrYWdlIEluZm9ybWF0aW9uIHdpdGggPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbDwvZmlsZW5hbWU+PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsPC9maWxlbmFtZT4gY29tbWFuZC1saW5lCi0gICAgICAgICAgICB1dGlsaXR5IHRvIHF1ZXJ5Ci0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgYW5kIGRpc3BsYXkgdmFyaW91cyBwYWNrYWdlLXJlbGF0ZWQgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhlIHV0aWxpdHksIHlvdSBtdXN0IHVzZSBpdCB0byB2aWV3IGluZm9ybWF0aW9uCi0gICAgICAgICAgICBvbiBwYWNrYWdlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGJ1aWx0LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb2xsb3dpbmcgYXJlIGEgZmV3IG9mIHRoZSBhdmFpbGFibGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWw8L2ZpbGVuYW1lPiBzdWJjb21tYW5kcy4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBzdGFuZGFyZCAqIGFuZCA/IGdsb2JiaW5nIHdpbGRjYXJkcyBhcyBwYXJ0IG9mCi0gICAgICAgICAgICAgICAgcGFja2FnZSBuYW1lcyBhbmQgcGF0aHMuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgWzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBhdHRlcm48L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT5dPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIGFsbCBwYWNrYWdlcyB0aGF0IGhhdmUgYmVlbiBidWlsdCwgb3B0aW9uYWxseQotICAgICAgICAgICAgICAgICAgICBsaW1pdGluZyB0aGUgbWF0Y2ggdG8gcGFja2FnZXMgdGhhdCBtYXRjaAotICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+cGF0dGVybjwvcmVwbGFjZWFibGU+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMmbmJzcDs8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+Jm5ic3A7Li4uPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgY29udGFpbmVkIGluIHRoZSBnaXZlbgotICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgZGlmZmVyZW50IHdheSB0byB2aWV3IHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGxvb2sgYXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59L3BhY2thZ2VzLXNwbGl0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgcmVjaXBlIHRoYXQgZ2VuZXJhdGVzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgYW5kIGhhcyBvbmUgc3ViZGlyZWN0b3J5IGZvciBlYWNoIHBhY2thZ2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgZ2VuZXJhdGVzLCB3aGljaCBjb250YWlucyB0aGUgZmlsZXMgc3RvcmVkIGluCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHBhY2thZ2UuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBpbnNwZWN0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7V09SS0RJUn0vcGFja2FnZXMtc3BsaXQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBtYWtlIHN1cmUgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcm0td29yayc+PGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBlbmFibGVkIHdoZW4geW91IGJ1aWxkIHRoZSByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbCBmaW5kLXBhdGgmbmJzcDs8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+Jm5ic3A7Li4uPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBuYW1lcyBvZiB0aGUgcGFja2FnZXMgdGhhdCBjb250YWluIHRoZSBnaXZlbgotICAgICAgICAgICAgICAgICAgICBwYXRocy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVsbHMgdXMgdGhhdAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9zaGFyZS9tYW4vbWFuMS9tYWtlLjE8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBpcyBjb250YWluZWQgaW4gdGhlIDxmaWxlbmFtZT5tYWtlLWRvYzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2U6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBvZS1wa2dkYXRhLXV0aWwgZmluZC1wYXRoIC91c3Ivc2hhcmUvbWFuL21hbjEvbWFrZS4xCi0gICAgIG1ha2UtZG9jOiAvdXNyL3NoYXJlL21hbi9tYW4xL21ha2UuMQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcmVjaXBlJm5ic3A7PC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPiZuYnNwOy4uLjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBMaXN0cyB0aGUgbmFtZSBvZiB0aGUgcmVjaXBlcyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIHByb2R1Y2UgdGhlIGdpdmVuIHBhY2thZ2VzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBjb21tYW5kLCB1c2UgdGhlIGhlbHAgZmFjaWxpdHk6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgb2UtcGtnZGF0YS11dGlsICZkYXNoOyZkYXNoO2hlbHAKLSAgICAgJCBvZS1wa2dkYXRhLXV0aWwgPHJlcGxhY2VhYmxlPnN1YmNvbW1hbmQ8L3JlcGxhY2VhYmxlPiAtLWhlbHAKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktdmlld2luZy1kZXBlbmRlbmNpZXMtYmV0d2Vlbi1yZWNpcGVzLWFuZC10YXNrcyc+Ci0gICAgICAgIDx0aXRsZT5WaWV3aW5nIERlcGVuZGVuY2llcyBCZXR3ZWVuIFJlY2lwZXMgYW5kIFRhc2tzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFNvbWV0aW1lcyBpdCBjYW4gYmUgaGFyZCB0byBzZWUgd2h5IEJpdEJha2Ugd2FudHMgdG8gYnVpbGQgb3RoZXIKLSAgICAgICAgICAgIHJlY2lwZXMgYmVmb3JlIHRoZSBvbmUgeW91IGhhdmUgc3BlY2lmaWVkLgotICAgICAgICAgICAgRGVwZW5kZW5jeSBpbmZvcm1hdGlvbiBjYW4gaGVscCB5b3UgdW5kZXJzdGFuZCB3aHkgYSByZWNpcGUgaXMKLSAgICAgICAgICAgIGJ1aWx0LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUbyBnZW5lcmF0ZSBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZvciBhIHJlY2lwZSwgcnVuIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgIGNvbW1hbmQ6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSAtZyA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGlzIGNvbW1hbmQgd3JpdGVzIHRoZSBmb2xsb3dpbmcgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5OgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wbi1idWlsZGxpc3Q8L2ZpbGVuYW1lPjogQSBsaXN0IG9mCi0gICAgICAgICAgICAgICAgICAgIHJlY2lwZXMvdGFyZ2V0cyBpbnZvbHZlZCBpbiBidWlsZGluZwotICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+LgotICAgICAgICAgICAgICAgICAgICAiSW52b2x2ZWQiIGhlcmUgbWVhbnMgdGhhdCBhdCBsZWFzdCBvbmUgdGFzayBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIG5lZWRzIHRvIHJ1biB3aGVuIGJ1aWxkaW5nCi0gICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWNpcGVuYW1lPC9yZXBsYWNlYWJsZT4gZnJvbSBzY3JhdGNoLgotICAgICAgICAgICAgICAgICAgICBUYXJnZXRzIHRoYXQgYXJlIGluCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1BU1NVTUVfUFJPVklERUQnPjxmaWxlbmFtZT5BU1NVTUVfUFJPVklERUQ8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCBsaXN0ZWQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRhc2stZGVwZW5kcy5kb3Q8L2ZpbGVuYW1lPjogQSBncmFwaCBzaG93aW5nCi0gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRhc2tzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZ3JhcGhzIGFyZSBpbgotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRE9UXyUyOGdyYXBoX2Rlc2NyaXB0aW9uX2xhbmd1YWdlJTI5Jz5ET1Q8L3VsaW5rPgotICAgICAgICAgICAgZm9ybWF0IGFuZCBjYW4gYmUgY29udmVydGVkIHRvIGltYWdlcyAoZS5nLiB1c2luZyB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5kb3Q8L2ZpbGVuYW1lPiB0b29sIGZyb20KLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZ3JhcGh2aXoub3JnLyc+R3JhcGh2aXo8L3VsaW5rPikuCi0gICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIERPVCBmaWxlcyB1c2UgYSBwbGFpbiB0ZXh0IGZvcm1hdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBncmFwaHMgZ2VuZXJhdGVkIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWc8L2ZpbGVuYW1lPiBjb21tYW5kIGFyZSBvZnRlbiBzbwotICAgICAgICAgICAgICAgICAgICAgICAgbGFyZ2UgYXMgdG8gYmUgZGlmZmljdWx0IHRvIHJlYWQgd2l0aG91dCBzcGVjaWFsCi0gICAgICAgICAgICAgICAgICAgICAgICBwcnVuaW5nIChlLmcuIHdpdGggQml0YmFrZSdzCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LUk8L2ZpbGVuYW1lPiBvcHRpb24pIGFuZCBwcm9jZXNzaW5nLgotICAgICAgICAgICAgICAgICAgICAgICAgRGVzcGl0ZSB0aGUgZm9ybSBhbmQgc2l6ZSBvZiB0aGUgZ3JhcGhzLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgPGZpbGVuYW1lPi5kb3Q8L2ZpbGVuYW1lPiBmaWxlcyBjYW4gc3RpbGwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJlIHBvc3NpYmxlIHRvIHJlYWQgYW5kIHByb3ZpZGUgdXNlZnVsIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BcyBhbiBleGFtcGxlLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50YXNrLWRlcGVuZHMuZG90PC9maWxlbmFtZT4gZmlsZSBjb250YWlucwotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAibGlieHNsdC5kb19jb25maWd1cmUiIC0+ICJsaWJ4bWwyLmRvX3BvcHVsYXRlX3N5c3Jvb3QiCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgYWJvdmUgZXhhbXBsZSBsaW5lIHJldmVhbHMgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgaW4gPGZpbGVuYW1lPmxpYnhzbHQ8L2ZpbGVuYW1lPiBkZXBlbmRzIG9uIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXNrIGluIDxmaWxlbmFtZT5saWJ4bWwyPC9maWxlbmFtZT4sIHdoaWNoIGlzIGEgbm9ybWFsCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUgdHdvIHJlY2lwZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgb2YgaG93IDxmaWxlbmFtZT4uZG90PC9maWxlbmFtZT4gZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBiZSBwcm9jZXNzZWQsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL2NvbnRyaWIvZ3JhcGgtdG9vbDwvZmlsZW5hbWU+IFB5dGhvbgotICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LCB3aGljaCBmaW5kcyBhbmQgZGlzcGxheXMgcGF0aHMgYmV0d2VlbiBncmFwaAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiB1c2UgYSBkaWZmZXJlbnQgbWV0aG9kIHRvIHZpZXcgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbgotICAgICAgICAgICAgYnkgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWcgLXUgdGFza2V4cCA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGlzIGNvbW1hbmQgZGlzcGxheXMgYSBHVUkgd2luZG93IGZyb20gd2hpY2ggeW91IGNhbiB2aWV3Ci0gICAgICAgICAgICBidWlsZC10aW1lIGFuZCBydW50aW1lIGRlcGVuZGVuY2llcyBmb3IgdGhlIHJlY2lwZXMgaW52b2x2ZWQgaW4KLSAgICAgICAgICAgIGJ1aWxkaW5nIDxyZXBsYWNlYWJsZT5yZWNpcGVuYW1lPC9yZXBsYWNlYWJsZT4uCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ndXNpbmdwb2t5LXZpZXdpbmctdGFzay12YXJpYWJsZS1kZXBlbmRlbmNpZXMnPgotICAgICAgICA8dGl0bGU+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBcyBtZW50aW9uZWQgaW4gdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNjaGVja3N1bXMnPkNoZWNrc3VtcyAoU2lnbmF0dXJlcyk8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwsIEJpdEJha2UgdHJpZXMgdG8gYXV0b21hdGljYWxseQotICAgICAgICAgICAgZGV0ZXJtaW5lIHdoYXQgdmFyaWFibGVzIGEgdGFzayBkZXBlbmRzIG9uIHNvIHRoYXQgaXQgY2FuIHJlcnVuCi0gICAgICAgICAgICB0aGUgdGFzayBpZiBhbnkgdmFsdWVzIG9mIHRoZSB2YXJpYWJsZXMgY2hhbmdlLgotICAgICAgICAgICAgVGhpcyBkZXRlcm1pbmF0aW9uIGlzIHVzdWFsbHkgcmVsaWFibGUuCi0gICAgICAgICAgICBIb3dldmVyLCBpZiB5b3UgZG8gdGhpbmdzIGxpa2UgY29uc3RydWN0IHZhcmlhYmxlIG5hbWVzIGF0IHJ1bnRpbWUsCi0gICAgICAgICAgICB0aGVuIHlvdSBtaWdodCBoYXZlIHRvIG1hbnVhbGx5IGRlY2xhcmUgZGVwZW5kZW5jaWVzIG9uIHRob3NlCi0gICAgICAgICAgICB2YXJpYWJsZXMgdXNpbmcgPGZpbGVuYW1lPnZhcmRlcHM8L2ZpbGVuYW1lPiBhcyBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXJpYWJsZS1mbGFncyc+VmFyaWFibGUgRmxhZ3M8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIHlvdSBhcmUgdW5zdXJlIHdoZXRoZXIgYSB2YXJpYWJsZSBkZXBlbmRlbmN5IGlzIGJlaW5nIHBpY2tlZCB1cAotICAgICAgICAgICAgYXV0b21hdGljYWxseSBmb3IgYSBnaXZlbiB0YXNrLCB5b3UgY2FuIGxpc3QgdGhlIHZhcmlhYmxlCi0gICAgICAgICAgICBkZXBlbmRlbmNpZXMgQml0QmFrZSBoYXMgZGV0ZXJtaW5lZCBieSBkb2luZyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIHJlY2lwZSBjb250YWluaW5nIHRoZSB0YXNrOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJbnNpZGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFNUFNfRElSJz48ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIGZpbmQgdGhlIHNpZ25hdHVyZSBkYXRhCi0gICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+KSBmaWxlIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIHRhc2suCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+IGZpbGVzIGNvbnRhaW4gYSBwaWNrbGVkCi0gICAgICAgICAgICAgICAgICAgIFB5dGhvbiBkYXRhYmFzZSBvZiBhbGwgdGhlIG1ldGFkYXRhIHRoYXQgd2VudCBpbnRvIGNyZWF0aW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZSBpbnB1dCBjaGVja3N1bSBmb3IgdGhlIHRhc2suCi0gICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdGFzayBvZiB0aGUgPGZpbGVuYW1lPmRiPC9maWxlbmFtZT4gcmVjaXBlLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpZ2RhdGE8L2ZpbGVuYW1lPiBmaWxlIG1pZ2h0IGJlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgbG9jYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJHtCVUlMRERJUn0vdG1wL3N0YW1wcy9pNTg2LXBva3ktbGludXgvZGIvNi4wLjMwLXIxLmRvX2ZldGNoLnNpZ2RhdGEuN2MwNDhjMTgyMjJiMTZmZjBiY2VlMjAwMGVmNjQ4YjEKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBGb3IgdGFza3MgdGhhdCBhcmUgYWNjZWxlcmF0ZWQgdGhyb3VnaCB0aGUgc2hhcmVkIHN0YXRlCi0gICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSdzaGFyZWQtc3RhdGUtY2FjaGUnPnNzdGF0ZTwvbGluaz4pCi0gICAgICAgICAgICAgICAgICAgIGNhY2hlLCBhbiBhZGRpdGlvbmFsIDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4gZmlsZSBpcwotICAgICAgICAgICAgICAgICAgICB3cml0dGVuIGludG8KLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFsb25nIHdpdGggdGhlIGNhY2hlZCB0YXNrIG91dHB1dC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4gZmlsZXMgY29udGFpbiBleGFjdGx5IHRoZQotICAgICAgICAgICAgICAgICAgICBzYW1lIGluZm9ybWF0aW9uIGFzIDxmaWxlbmFtZT5zaWdkYXRhPC9maWxlbmFtZT4gZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgUnVuIDxmaWxlbmFtZT5iaXRiYWtlLWR1bXBzaWc8L2ZpbGVuYW1lPiBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpZ2RhdGE8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2lnaW5mbzwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UtZHVtcHNpZyAke0JVSUxERElSfS90bXAvc3RhbXBzL2k1ODYtcG9reS1saW51eC9kYi82LjAuMzAtcjEuZG9fZmV0Y2guc2lnZGF0YS43YzA0OGMxODIyMmIxNmZmMGJjZWUyMDAwZWY2NDhiMQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIEluIHRoZSBvdXRwdXQgb2YgdGhlIGFib3ZlIGNvbW1hbmQsIHlvdSB3aWxsIGZpbmQgYSBsaW5lCi0gICAgICAgICAgICAgICAgICAgIGxpa2UgdGhlIGZvbGxvd2luZywgd2hpY2ggbGlzdHMgYWxsIHRoZSAoaW5mZXJyZWQpIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBmb3IgdGhlIHRhc2suCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgbGlzdCBhbHNvIGluY2x1ZGVzIGluZGlyZWN0IGRlcGVuZGVuY2llcyBmcm9tCi0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBkZXBlbmRpbmcgb24gb3RoZXIgdmFyaWFibGVzLCByZWN1cnNpdmVseS4KLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBUYXNrIGRlcGVuZGVuY2llczogWydQVicsICdTUkNSRVYnLCAnU1JDX1VSSScsICdTUkNfVVJJW21kNXN1bV0nLCAnU1JDX1VSSVtzaGEyNTZzdW1dJywgJ2Jhc2VfZG9fZmV0Y2gnXQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zIChlLmcuIDxmaWxlbmFtZT5iYXNlX2RvX2ZldGNoPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgICAgICAgICBhbHNvIGNvdW50IGFzIHZhcmlhYmxlIGRlcGVuZGVuY2llcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBpbiB0dXJuIGRlcGVuZCBvbiB0aGUgdmFyaWFibGVzIHRoZXkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZS4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IG9mIDxmaWxlbmFtZT5iaXRiYWtlLWR1bXBzaWc8L2ZpbGVuYW1lPiBhbHNvIGluY2x1ZGVzCi0gICAgICAgICAgICAgICAgICAgIHRoZSB2YWx1ZSBlYWNoIHZhcmlhYmxlIGhhZCwgYSBsaXN0IG9mIGRlcGVuZGVuY2llcyBmb3IgZWFjaAotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgYW5kCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX0hBU0hCQVNFX1dISVRFTElTVCc+PGZpbGVuYW1lPkJCX0hBU0hCQVNFX1dISVRFTElTVDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlcmUgaXMgYWxzbyBhIDxmaWxlbmFtZT5iaXRiYWtlLWRpZmZzaWdzPC9maWxlbmFtZT4gY29tbWFuZCBmb3IKLSAgICAgICAgICAgIGNvbXBhcmluZyB0d28gPGZpbGVuYW1lPnNpZ2luZm88L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgPGZpbGVuYW1lPnNpZ2RhdGE8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgICAgIFRoaXMgY29tbWFuZCBjYW4gYmUgaGVscGZ1bCB3aGVuIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoYXQgY2hhbmdlZAotICAgICAgICAgICAgYmV0d2VlbiB0d28gdmVyc2lvbnMgb2YgYSB0YXNrLgotICAgICAgICAgICAgSWYgeW91IGNhbGwgPGZpbGVuYW1lPmJpdGJha2UtZGlmZnNpZ3M8L2ZpbGVuYW1lPiB3aXRoIGp1c3Qgb25lCi0gICAgICAgICAgICBmaWxlLCB0aGUgY29tbWFuZCBiZWhhdmVzIGxpa2UKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWR1bXBzaWc8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSBCaXRCYWtlIHRvIGR1bXAgb3V0IHRoZSBzaWduYXR1cmUgY29uc3RydWN0aW9uCi0gICAgICAgICAgICBpbmZvcm1hdGlvbiB3aXRob3V0IGV4ZWN1dGluZyB0YXNrcyBieSB1c2luZyBlaXRoZXIgb2YgdGhlCi0gICAgICAgICAgICBmb2xsb3dpbmcgQml0QmFrZSBjb21tYW5kLWxpbmUgb3B0aW9uczoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJmRhc2g7JmRhc2g7ZHVtcC1zaWduYXR1cmVzPTxyZXBsYWNlYWJsZT5TSUdOQVRVUkVfSEFORExFUjwvcmVwbGFjZWFibGU+Ci0gICAgIC1TIDxyZXBsYWNlYWJsZT5TSUdOQVRVUkVfSEFORExFUjwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUd28gY29tbW9uIHZhbHVlcyBmb3IKLSAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+U0lHTkFUVVJFX0hBTkRMRVI8L3JlcGxhY2VhYmxlPiBhcmUgIm5vbmUiIGFuZAotICAgICAgICAgICAgICAgICJwcmludGRpZmYiLCB3aGljaCBkdW1wIG9ubHkgdGhlIHNpZ25hdHVyZSBvciBjb21wYXJlIHRoZQotICAgICAgICAgICAgICAgIGR1bXBlZCBzaWduYXR1cmUgd2l0aCB0aGUgY2FjaGVkIG9uZSwgcmVzcGVjdGl2ZWx5LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgVXNpbmcgQml0QmFrZSB3aXRoIGVpdGhlciBvZiB0aGVzZSBvcHRpb25zIGNhdXNlcyBCaXRCYWtlIHRvIGR1bXAKLSAgICAgICAgICAgIG91dCA8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+IGZpbGVzIGluIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPnN0YW1wczwvZmlsZW5hbWU+IGRpcmVjdG9yeSBmb3IgZXZlcnkgdGFzayBpdCB3b3VsZCBoYXZlCi0gICAgICAgICAgICBleGVjdXRlZCBpbnN0ZWFkIG9mIGJ1aWxkaW5nIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IHBhY2thZ2UuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ndXNpbmdwb2t5LWRlYnVnZ2luZy10YXNrcnVubmluZyc+Ci0gICAgICAgIDx0aXRsZT5SdW5uaW5nIFNwZWNpZmljIFRhc2tzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFueSBnaXZlbiByZWNpcGUgY29uc2lzdHMgb2YgYSBzZXQgb2YgdGFza3MuCi0gICAgICAgICAgICBUaGUgc3RhbmRhcmQgQml0QmFrZSBiZWhhdmlvciBpbiBtb3N0IGNhc2VzIGlzOgotICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2J1aWxkPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBUaGUgZGVmYXVsdCB0YXNrIGlzIDxmaWxlbmFtZT5kb19idWlsZDwvZmlsZW5hbWU+IGFuZCBhbnkgdGFza3MKLSAgICAgICAgICAgIG9uIHdoaWNoIGl0IGRlcGVuZHMgYnVpbGQgZmlyc3QuCi0gICAgICAgICAgICBTb21lIHRhc2tzLCBzdWNoIGFzIDxmaWxlbmFtZT5kb19kZXZzaGVsbDwvZmlsZW5hbWU+LCBhcmUgbm90IHBhcnQKLSAgICAgICAgICAgIG9mIHRoZSBkZWZhdWx0IGJ1aWxkIGNoYWluLgotICAgICAgICAgICAgSWYgeW91IHdpc2ggdG8gcnVuIGEgdGFzayB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZSBkZWZhdWx0IGJ1aWxkCi0gICAgICAgICAgICBjaGFpbiwgeW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT4tYzwvZmlsZW5hbWU+IG9wdGlvbiBpbiBCaXRCYWtlLgotICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBkZXZzaGVsbAotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi1jPC9maWxlbmFtZT4gb3B0aW9uIHJlc3BlY3RzIHRhc2sgZGVwZW5kZW5jaWVzLAotICAgICAgICAgICAgd2hpY2ggbWVhbnMgdGhhdCBhbGwgb3RoZXIgdGFza3MgKGluY2x1ZGluZyB0YXNrcyBmcm9tIG90aGVyCi0gICAgICAgICAgICByZWNpcGVzKSB0aGF0IHRoZSBzcGVjaWZpZWQgdGFzayBkZXBlbmRzIG9uIHdpbGwgYmUgcnVuIGJlZm9yZSB0aGUKLSAgICAgICAgICAgIHRhc2suCi0gICAgICAgICAgICBFdmVuIHdoZW4geW91IG1hbnVhbGx5IHNwZWNpZnkgYSB0YXNrIHRvIHJ1biB3aXRoCi0gICAgICAgICAgICA8ZmlsZW5hbWU+LWM8L2ZpbGVuYW1lPiwgQml0QmFrZSB3aWxsIG9ubHkgcnVuIHRoZSB0YXNrIGlmIGl0Ci0gICAgICAgICAgICBjb25zaWRlcnMgaXQgIm91dCBvZiBkYXRlIi4KLSAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdGFtcC1maWxlcy1hbmQtdGhlLXJlcnVubmluZy1vZi10YXNrcyc+U3RhbXAgRmlsZXMgYW5kIHRoZSBSZXJ1bm5pbmcgb2YgVGFza3M8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3IgaG93IEJpdEJha2UgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgdGFzayBpcyAib3V0IG9mIGRhdGUiLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBmb3JjZSBhbiB1cC10by1kYXRlIHRhc2sgdG8gYmUgcmVydW4gKGUuZy4KLSAgICAgICAgICAgIGJlY2F1c2UgeW91IG1hZGUgbWFudWFsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJlY2lwZSdzCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHRoYXQgeW91IHdhbnQgdG8gdHJ5IG91dCksIHRoZW4geW91IGNhbiB1c2UgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+LWY8L2ZpbGVuYW1lPiBvcHRpb24uCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgcmVhc29uIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IGlzIG5ldmVyIHJlcXVpcmVkIHdoZW4KLSAgICAgICAgICAgICAgICBydW5uaW5nIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1kZXZzaGVsbCc+PGZpbGVuYW1lPmRvX2RldnNoZWxsPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBpcyBiZWNhdXNlIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5bPC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3ZhcmlhYmxlLWZsYWdzJz48ZmlsZW5hbWU+bm9zdGFtcDwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+XTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgZmxhZyBpcyBhbHJlYWR5IHNldCBmb3IgdGhlIHRhc2suCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3Mgb25lIHdheSB5b3UgY2FuIHVzZSB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IG9wdGlvbjoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AKLSAgICAgICAgICAgICAgIC4KLSAgICAgICAgICAgICAgIC4KLSAgICAgbWFrZSBzb21lIGNoYW5nZXMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoZSB3b3JrIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgLgotICAgICAgICAgICAgICAgLgotICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBjb21waWxlIC1mCi0gICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgc2VxdWVuY2UgZmlyc3QgYnVpbGRzIGFuZCB0aGVuIHJlY29tcGlsZXMKLSAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBUaGUgbGFzdCBjb21tYW5kIHJlcnVucyBhbGwgdGFza3MgKGJhc2ljYWxseSB0aGUgcGFja2FnaW5nIHRhc2tzKQotICAgICAgICAgICAgYWZ0ZXIgdGhlIGNvbXBpbGUuCi0gICAgICAgICAgICBCaXRCYWtlIHJlY29nbml6ZXMgdGhhdCB0aGUgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgdGFzayB3YXMgcmVydW4gYW5kIHRoZXJlZm9yZSB1bmRlcnN0YW5kcyB0aGF0IHRoZSBvdGhlciB0YXNrcwotICAgICAgICAgICAgYWxzbyBuZWVkIHRvIGJlIHJ1biBhZ2Fpbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQW5vdGhlciwgc2hvcnRlciB3YXkgdG8gcmVydW4gYSB0YXNrIGFuZCBhbGwKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J25vcm1hbC1yZWNpcGUtYnVpbGQtdGFza3MnPm5vcm1hbCByZWNpcGUgYnVpbGQgdGFza3M8L2xpbms+Ci0gICAgICAgICAgICB0aGF0IGRlcGVuZCBvbiBpdCBpcyB0byB1c2UgdGhlIDxmaWxlbmFtZT4tQzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBvcHRpb24uCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyB1cHBlci1jYXNlZCBhbmQgaXMgc2VwYXJhdGUgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWM8L2ZpbGVuYW1lPiBvcHRpb24sIHdoaWNoIGlzIGxvd2VyLWNhc2VkLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgVXNpbmcgdGhpcyBvcHRpb24gaW52YWxpZGF0ZXMgdGhlIGdpdmVuIHRhc2sgYW5kIHRoZW4gcnVucyB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1idWlsZCc+PGZpbGVuYW1lPmRvX2J1aWxkPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB0YXNrLCB3aGljaCBpcyB0aGUgZGVmYXVsdCB0YXNrIGlmIG5vIHRhc2sgaXMgZ2l2ZW4sIGFuZCB0aGUKLSAgICAgICAgICAgIHRhc2tzIG9uIHdoaWNoIGl0IGRlcGVuZHMuCi0gICAgICAgICAgICBZb3UgY291bGQgcmVwbGFjZSB0aGUgZmluYWwgdHdvIGNvbW1hbmRzIGluIHRoZSBwcmV2aW91cyBleGFtcGxlCi0gICAgICAgICAgICB3aXRoIHRoZSBmb2xsb3dpbmcgc2luZ2xlIGNvbW1hbmQ6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wIC1DIGNvbXBpbGUKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIEludGVybmFsbHksIHRoZSA8ZmlsZW5hbWU+LWY8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT4tQzwvZmlsZW5hbWU+IG9wdGlvbnMgd29yayBieSB0YWludGluZyAobW9kaWZ5aW5nKSB0aGUKLSAgICAgICAgICAgIGlucHV0IGNoZWNrc3VtIG9mIHRoZSBzcGVjaWZpZWQgdGFzay4KLSAgICAgICAgICAgIFRoaXMgdGFpbnRpbmcgaW5kaXJlY3RseSBjYXVzZXMgdGhlIHRhc2sgYW5kIGl0cwotICAgICAgICAgICAgZGVwZW5kZW50IHRhc2tzIHRvIGJlIHJlcnVuIHRocm91Z2ggdGhlIG5vcm1hbCB0YXNrIGRlcGVuZGVuY3kKLSAgICAgICAgICAgIG1lY2hhbmlzbXMuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBCaXRCYWtlIGV4cGxpY2l0bHkga2VlcHMgdHJhY2sgb2Ygd2hpY2ggdGFza3MgaGF2ZSBiZWVuCi0gICAgICAgICAgICAgICAgdGFpbnRlZCBpbiB0aGlzIGZhc2hpb24sIGFuZCB3aWxsIHByaW50IHdhcm5pbmdzIHN1Y2ggYXMgdGhlCi0gICAgICAgICAgICAgICAgZm9sbG93aW5nIGZvciBidWlsZHMgaW52b2x2aW5nIHN1Y2ggdGFza3M6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBXQVJOSU5HOiAvaG9tZS91bGYvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4xLmJiLmRvX2NvbXBpbGUgaXMgdGFpbnRlZCBmcm9tIGEgZm9yY2VkIHJ1bgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGUgd2FybmluZyBpcyB0byBsZXQgeW91IGtub3cgdGhhdCB0aGUgd29yawotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgYnVpbGQgb3V0cHV0IG1pZ2h0IG5vdCBiZSBpbiB0aGUgY2xlYW4gc3RhdGUgdGhleQotICAgICAgICAgICAgICAgIHdvdWxkIGJlIGluIGZvciBhICJub3JtYWwiIGJ1aWxkLCBkZXBlbmRpbmcgb24gd2hhdCBhY3Rpb25zCi0gICAgICAgICAgICAgICAgeW91IHRvb2suCi0gICAgICAgICAgICAgICAgVG8gZ2V0IHJpZCBvZiBzdWNoIHdhcm5pbmdzLCB5b3UgY2FuIHJlbW92ZSB0aGUgd29yayBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBhbmQgcmVidWlsZCB0aGUgcmVjaXBlLCBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AgLWMgY2xlYW4KLSAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gdmlldyBhIGxpc3Qgb2YgdGFza3MgaW4gYSBnaXZlbiBwYWNrYWdlIGJ5IHJ1bm5pbmcgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fbGlzdHRhc2tzPC9maWxlbmFtZT4gdGFzayBhcyBmb2xsb3dzOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBsaXN0dGFza3MKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoZSByZXN1bHRzIGFwcGVhciBhcyBvdXRwdXQgdG8gdGhlIGNvbnNvbGUgYW5kIGFyZSBhbHNvIGluIHRoZQotICAgICAgICAgICAgZmlsZSA8ZmlsZW5hbWU+JHtXT1JLRElSfS90ZW1wL2xvZy5kb19saXN0dGFza3M8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZGVidWdnaW5nLWJpdGJha2UnPgotICAgICAgICA8dGl0bGU+R2VuZXJhbCBCaXRCYWtlIFByb2JsZW1zPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gc2VlIGRlYnVnIG91dHB1dCBmcm9tIEJpdEJha2UgYnkgdXNpbmcgdGhlIDxmaWxlbmFtZT4tRDwvZmlsZW5hbWU+IG9wdGlvbi4KLSAgICAgICAgICAgIFRoZSBkZWJ1ZyBvdXRwdXQgZ2l2ZXMgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IEJpdEJha2UKLSAgICAgICAgICAgIGlzIGRvaW5nIGFuZCB0aGUgcmVhc29uIGJlaGluZCBpdC4KLSAgICAgICAgICAgIEVhY2ggPGZpbGVuYW1lPi1EPC9maWxlbmFtZT4gb3B0aW9uIHlvdSB1c2UgaW5jcmVhc2VzIHRoZSBsb2dnaW5nIGxldmVsLgotICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIHVzYWdlIGlzIDxmaWxlbmFtZT4tREREPC9maWxlbmFtZT4uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBvdXRwdXQgZnJvbSA8ZmlsZW5hbWU+Yml0YmFrZSAtREREIC12PC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPnRhcmdldG5hbWU8L3JlcGxhY2VhYmxlPiBjYW4gcmV2ZWFsIHdoeQotICAgICAgICAgICAgQml0QmFrZSBjaG9zZSBhIGNlcnRhaW4gdmVyc2lvbiBvZiBhIHBhY2thZ2Ugb3Igd2h5IEJpdEJha2UKLSAgICAgICAgICAgIHBpY2tlZCBhIGNlcnRhaW4gcHJvdmlkZXIuCi0gICAgICAgICAgICBUaGlzIGNvbW1hbmQgY291bGQgYWxzbyBoZWxwIHlvdSBpbiBhIHNpdHVhdGlvbiB3aGVyZSB5b3UgdGhpbmsgQml0QmFrZSBkaWQgc29tZXRoaW5nCi0gICAgICAgICAgICB1bmV4cGVjdGVkLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J2RldmVsb3BtZW50LWhvc3Qtc3lzdGVtLWlzc3Vlcyc+Ci0gICAgICAgIDx0aXRsZT5EZXZlbG9wbWVudCBIb3N0IFN5c3RlbSBJc3N1ZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgU29tZXRpbWVzIGlzc3VlcyBvbiB0aGUgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gY2FuIGNhdXNlIHlvdXIKLSAgICAgICAgICAgIGJ1aWxkIHRvIGZhaWwuCi0gICAgICAgICAgICBGb2xsb3dpbmcgYXJlIGtub3duLCBob3N0LXNwZWNpZmljIHByb2JsZW1zLgotICAgICAgICAgICAgQmUgc3VyZSB0byBhbHdheXMgY29uc3VsdCB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX05PVEVTOyc+UmVsZWFzZSBOb3RlczwvdWxpbms+Ci0gICAgICAgICAgICBmb3IgYSBsb29rIGF0IGFsbCByZWxlYXNlLXJlbGF0ZWQgaXNzdWVzLgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5nbGliYy1pbml0aWFsPC9maWxlbmFtZT4gZmFpbHMgdG8gYnVpbGQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBkZXZlbG9wbWVudCBob3N0IHN5c3RlbSBoYXMgdGhlIHVucGF0Y2hlZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+R05VIE1ha2UgMy44MjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHRhc2sgZmFpbHMgZm9yIDxmaWxlbmFtZT5nbGliYy1pbml0aWFsPC9maWxlbmFtZT4gZHVyaW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZC48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlR5cGljYWxseSwgZXZlcnkgZGlzdHJpYnV0aW9uIHRoYXQgc2hpcHMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkdOVSBNYWtlIDMuODI8L2ZpbGVuYW1lPiBhcwotICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBhbHJlYWR5IGhhcyB0aGUgcGF0Y2hlZCB2ZXJzaW9uLgotICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBzb21lIGRpc3RyaWJ1dGlvbnMsIHN1Y2ggYXMgRGViaWFuLCBoYXZlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5HTlUgTWFrZSAzLjgyPC9maWxlbmFtZT4gYXMgYW4gb3B0aW9uLCB3aGljaAotICAgICAgICAgICAgICAgICAgICBpcyB1bnBhdGNoZWQuCi0gICAgICAgICAgICAgICAgICAgIFlvdSB3aWxsIHNlZSB0aGlzIGVycm9yIG9uIHRoZXNlIHR5cGVzIG9mIGRpc3RyaWJ1dGlvbnMuCi0gICAgICAgICAgICAgICAgICAgIFN3aXRjaCB0byA8ZmlsZW5hbWU+R05VIE1ha2UgMy44MTwvZmlsZW5hbWU+IG9yIHBhdGNoCi0gICAgICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiB0byBzb2x2ZSB0aGUgcHJvYmxlbS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZGVidWdnaW5nLWJ1aWxkZmlsZSc+Ci0gICAgICAgIDx0aXRsZT5CdWlsZGluZyB3aXRoIE5vIERlcGVuZGVuY2llczwvdGl0bGU+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gYnVpbGQgYSBzcGVjaWZpYyByZWNpcGUgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlKSwKLSAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmb3JtOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWIgPHJlcGxhY2VhYmxlPnNvbWVwYXRoPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPnNvbWVyZWNpcGU8L3JlcGxhY2VhYmxlPi5iYgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhpcyBjb21tYW5kIGZvcm0gZG9lcyBub3QgY2hlY2sgZm9yIGRlcGVuZGVuY2llcy4KLSAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHNob3VsZCB1c2UgaXQKLSAgICAgICAgICAgIG9ubHkgd2hlbiB5b3Uga25vdyBleGlzdGluZyBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIG1ldC4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGZyYWdtZW50cyBvZiB0aGUgZmlsZW5hbWUuCi0gICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBCaXRCYWtlIGNoZWNrcyBmb3IgYSB1bmlxdWUgbWF0Y2guCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncmVjaXBlLWxvZ2dpbmctbWVjaGFuaXNtcyc+Ci0gICAgICAgIDx0aXRsZT5SZWNpcGUgTG9nZ2luZyBNZWNoYW5pc21zPC90aXRsZT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBzZXZlcmFsIGxvZ2dpbmcgZnVuY3Rpb25zIGZvciBwcm9kdWNpbmcKLSAgICAgICAgICAgIGRlYnVnZ2luZyBvdXRwdXQgYW5kIHJlcG9ydGluZyBlcnJvcnMgYW5kIHdhcm5pbmdzLgotICAgICAgICAgICAgRm9yIFB5dGhvbiBmdW5jdGlvbnMsIHRoZSBmb2xsb3dpbmcgbG9nZ2luZyBmdW5jdGlvbnMgZXhpc3QuCi0gICAgICAgICAgICBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGxvZyB0bwotICAgICAgICAgICAgPGZpbGVuYW1lPiR7VH0vbG9nLmRvXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2s8L3JlcGxhY2VhYmxlPiwKLSAgICAgICAgICAgIGFuZCBjYW4gYWxzbyBsb2cgdG8gc3RhbmRhcmQgb3V0cHV0IChzdGRvdXQpIHdpdGggdGhlIHJpZ2h0Ci0gICAgICAgICAgICBzZXR0aW5nczoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIucGxhaW4oPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+KTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBXcml0ZXMgPHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+IGFzIGlzIHRvIHRoZSBsb2cgd2hpbGUKLSAgICAgICAgICAgICAgICAgICAgYWxzbyBsb2dnaW5nIHRvIHN0ZG91dC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIubm90ZSg8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFdyaXRlcyAiTk9URTogPHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+IiB0byB0aGUgbG9nLgotICAgICAgICAgICAgICAgICAgICBBbHNvIGxvZ3MgdG8gc3Rkb3V0IGlmIEJpdEJha2UgaXMgY2FsbGVkIHdpdGggIi12Ii4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZGVidWcoPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bGV2ZWw8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4sJm5ic3A7PC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+KTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBXcml0ZXMgIkRFQlVHOiA8cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT4iIHRvIHRoZSBsb2cuCi0gICAgICAgICAgICAgICAgICAgIEFsc28gbG9ncyB0byBzdGRvdXQgaWYgdGhlIGxvZyBsZXZlbCBpcyBncmVhdGVyIHRoYW4gb3IKLSAgICAgICAgICAgICAgICAgICAgZXF1YWwgdG8gPHJlcGxhY2VhYmxlPmxldmVsPC9yZXBsYWNlYWJsZT4uCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdXNhZ2UtYW5kLXN5bnRheCc+LUQ8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi53YXJuKDwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPik8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgV3JpdGVzICJXQVJOSU5HOiA8cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT4iIHRvIHRoZSBsb2cKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgYWxzbyBsb2dnaW5nIHRvIHN0ZG91dC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZXJyb3IoPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+KTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBXcml0ZXMgIkVSUk9SOiA8cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT4iIHRvIHRoZSBsb2cKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgYWxzbyBsb2dnaW5nIHRvIHN0ZG91dC4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2F1c2UgdGhlIHRhc2sgdG8gZmFpbC4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5mYXRhbCg8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgbG9nZ2luZyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5lcnJvcig8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgYnV0IGFsc28gY2F1c2VzIHRoZSBjYWxsaW5nIHRhc2sgdG8gZmFpbC4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZmF0YWwoKTwvZmlsZW5hbWU+IHJhaXNlcyBhbiBleGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBtZWFucyB5b3UgZG8gbm90IG5lZWQgdG8gcHV0IGEgInJldHVybiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCBhZnRlciB0aGUgZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHNhbWUgbG9nZ2luZyBmdW5jdGlvbnMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHNoZWxsIGZ1bmN0aW9ucywKLSAgICAgICAgICAgIHVuZGVyIHRoZSBuYW1lcwotICAgICAgICAgICAgPGZpbGVuYW1lPmJicGxhaW48L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmJibm90ZTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPGZpbGVuYW1lPmJiZGVidWc8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmJid2FybjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPGZpbGVuYW1lPmJiZXJyb3I8L2ZpbGVuYW1lPiwgYW5kIDxmaWxlbmFtZT5iYmZhdGFsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBUaGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWxvZ2dpbmcnPjxmaWxlbmFtZT5sb2dnaW5nPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBjbGFzcyBpbXBsZW1lbnRzIHRoZXNlIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgIFNlZSB0aGF0IGNsYXNzIGluIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3NlczwvZmlsZW5hbWU+IGZvbGRlciBvZiB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+Ci0gICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nbG9nZ2luZy13aXRoLXB5dGhvbic+Ci0gICAgICAgICAgICA8dGl0bGU+TG9nZ2luZyBXaXRoIFB5dGhvbjwvdGl0bGU+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaGVuIGNyZWF0aW5nIHJlY2lwZXMgdXNpbmcgUHl0aG9uIGFuZCBpbnNlcnRpbmcgY29kZSB0aGF0IGhhbmRsZXMgYnVpbGQgbG9ncywKLSAgICAgICAgICAgICAgICBrZWVwIGluIG1pbmQgdGhlIGdvYWwgaXMgdG8gaGF2ZSBpbmZvcm1hdGl2ZSBsb2dzIHdoaWxlIGtlZXBpbmcgdGhlIGNvbnNvbGUgYXMKLSAgICAgICAgICAgICAgICAic2lsZW50IiBhcyBwb3NzaWJsZS4KLSAgICAgICAgICAgICAgICBBbHNvLCBpZiB5b3Ugd2FudCBzdGF0dXMgbWVzc2FnZXMgaW4gdGhlIGxvZywgdXNlIHRoZSAiZGVidWciIGxvZ2xldmVsLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB3cml0dGVuIGluIFB5dGhvbi4KLSAgICAgICAgICAgICAgICBUaGUgY29kZSBoYW5kbGVzIGxvZ2dpbmcgZm9yIGEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHRoZQotICAgICAgICAgICAgICAgIG51bWJlciBvZiB0YXNrcyBuZWVkZWQgdG8gYmUgcnVuLgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWxpc3R0YXNrcyc+PGZpbGVuYW1lPmRvX2xpc3R0YXNrczwvZmlsZW5hbWU+PC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcHl0aG9uIGRvX2xpc3R0YXNrcygpIHsKLSAgICAgICAgIGJiLmRlYnVnKDIsICJTdGFydGluZyB0byBmaWd1cmUgb3V0IHRoZSB0YXNrIGxpc3QiKQotICAgICAgICAgaWYgbm90ZXdvcnRoeV9jb25kaXRpb246Ci0gICAgICAgICAgICAgYmIubm90ZSgiVGhlcmUgYXJlIDQ3IHRhc2tzIHRvIHJ1biIpCi0gICAgICAgICBiYi5kZWJ1ZygyLCAiR290IHRvIHBvaW50IHh5eiIpCi0gICAgICAgICBpZiB3YXJuaW5nX3RyaWdnZXI6Ci0gICAgICAgICAgICAgYmIud2FybigiRGV0ZWN0ZWQgd2FybmluZ190cmlnZ2VyLCB0aGlzIG1pZ2h0IGJlIGEgcHJvYmxlbSBsYXRlci4iKQotICAgICAgICAgaWYgcmVjb3ZlcmFibGVfZXJyb3I6Ci0gICAgICAgICAgICAgYmIuZXJyb3IoIkhpdCByZWNvdmVyYWJsZV9lcnJvciwgeW91IHJlYWxseSBuZWVkIHRvIGZpeCB0aGlzISIpCi0gICAgICAgICBpZiBmYXRhbF9lcnJvcjoKLSAgICAgICAgICAgICBiYi5mYXRhbCgiZmF0YWxfZXJyb3IgZGV0ZWN0ZWQsIHVuYWJsZSB0byBwcmludCB0aGUgdGFzayBsaXN0IikKLSAgICAgICAgIGJiLnBsYWluKCJUaGUgdGFza3MgcHJlc2VudCBhcmUgYWJjIikKLSAgICAgICAgIGJiLmRlYnVnKDIsICJGaW5pc2hlZCBmaWd1cmluZyBvdXQgdGhlIHRhc2tsaXN0IikKLSAgICAgfQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdsb2dnaW5nLXdpdGgtYmFzaCc+Ci0gICAgICAgICAgICA8dGl0bGU+TG9nZ2luZyBXaXRoIEJhc2g8L3RpdGxlPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgV2hlbiBjcmVhdGluZyByZWNpcGVzIHVzaW5nIEJhc2ggYW5kIGluc2VydGluZyBjb2RlIHRoYXQgaGFuZGxlcyBidWlsZAotICAgICAgICAgICAgICAgIGxvZ3MsIHlvdSBoYXZlIHRoZSBzYW1lIGdvYWxzIC0gaW5mb3JtYXRpdmUgd2l0aCBtaW5pbWFsIGNvbnNvbGUgb3V0cHV0LgotICAgICAgICAgICAgICAgIFRoZSBzeW50YXggeW91IHVzZSBmb3IgcmVjaXBlcyB3cml0dGVuIGluIEJhc2ggaXMgc2ltaWxhciB0byB0aGF0IG9mCi0gICAgICAgICAgICAgICAgcmVjaXBlcyB3cml0dGVuIGluIFB5dGhvbiBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHdyaXR0ZW4gaW4gQmFzaC4KLSAgICAgICAgICAgICAgICBUaGUgY29kZSBsb2dzIHRoZSBwcm9ncmVzcyBvZiB0aGUgPGZpbGVuYW1lPmRvX215X2Z1bmN0aW9uPC9maWxlbmFtZT4gZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBkb19teV9mdW5jdGlvbigpIHsKLSAgICAgICAgIGJiZGVidWcgMiAiUnVubmluZyBkb19teV9mdW5jdGlvbiIKLSAgICAgICAgIGlmIFsgZXhjZXB0aW9uYWxfY29uZGl0aW9uIF07IHRoZW4KLSAgICAgICAgICAgICBiYm5vdGUgIkhpdCBleGNlcHRpb25hbF9jb25kaXRpb24iCi0gICAgICAgICBmaQotICAgICAgICAgYmJkZWJ1ZyAyICAiR290IHRvIHBvaW50IHh5eiIKLSAgICAgICAgIGlmIFsgd2FybmluZ190cmlnZ2VyIF07IHRoZW4KLSAgICAgICAgICAgICBiYndhcm4gIkRldGVjdGVkIHdhcm5pbmdfdHJpZ2dlciwgdGhpcyBtaWdodCBjYXVzZSBhIHByb2JsZW0gbGF0ZXIuIgotICAgICAgICAgZmkKLSAgICAgICAgIGlmIFsgcmVjb3ZlcmFibGVfZXJyb3IgXTsgdGhlbgotICAgICAgICAgICAgIGJiZXJyb3IgIkhpdCByZWNvdmVyYWJsZV9lcnJvciwgY29ycmVjdGluZyIKLSAgICAgICAgIGZpCi0gICAgICAgICBpZiBbIGZhdGFsX2Vycm9yIF07IHRoZW4KLSAgICAgICAgICAgICBiYmZhdGFsICJmYXRhbF9lcnJvciBkZXRlY3RlZCIKLSAgICAgICAgIGZpCi0gICAgICAgICBiYmRlYnVnIDIgIkNvbXBsZXRlZCBkb19teV9mdW5jdGlvbiIKLSAgICAgfQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZGVidWdnaW5nLW90aGVycyc+Ci0gICAgICAgIDx0aXRsZT5PdGhlciBUaXBzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgb3RoZXIgdGlwcyB0aGF0IHlvdSBtaWdodCBmaW5kIHVzZWZ1bDoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBXaGVuIGFkZGluZyBuZXcgcGFja2FnZXMsIGl0IGlzIHdvcnRoIHdhdGNoaW5nIGZvcgotICAgICAgICAgICAgICAgICAgICB1bmRlc2lyYWJsZSBpdGVtcyBtYWtpbmcgdGhlaXIgd2F5IGludG8gY29tcGlsZXIgY29tbWFuZAotICAgICAgICAgICAgICAgICAgICBsaW5lcy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBkbyBub3Qgd2FudCByZWZlcmVuY2VzIHRvIGxvY2FsIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICBmaWxlcyBsaWtlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2xpYi88L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9pbmNsdWRlLzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHJlbW92ZSB0aGUgPGZpbGVuYW1lPnBzcGxhc2g8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBib290IHNwbGFzaHNjcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgYWRkIDxmaWxlbmFtZT5wc3BsYXNoPWZhbHNlPC9maWxlbmFtZT4gdG8gIHRoZSBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaW5lLgotICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBwcmV2ZW50cyA8ZmlsZW5hbWU+cHNwbGFzaDwvZmlsZW5hbWU+IGZyb20gbG9hZGluZwotICAgICAgICAgICAgICAgICAgICBhbmQgdGh1cyBhbGxvd3MgeW91IHRvIHNlZSB0aGUgY29uc29sZS4KLSAgICAgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzd2l0Y2ggb3V0IG9mIHRoZSBzcGxhc2hzY3JlZW4gYnkKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoaW5nIHRoZSB2aXJ0dWFsIGNvbnNvbGUgKGUuZy4gRm4rTGVmdCBvciBGbitSaWdodAotICAgICAgICAgICAgICAgICAgICBvbiBhIFphdXJ1cykuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgUmVtb3ZpbmcKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAodXN1YWxseSA8ZmlsZW5hbWU+dG1wLzwvZmlsZW5hbWU+LCB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPikKLSAgICAgICAgICAgICAgICAgICAgY2FuIG9mdGVuIGZpeCB0ZW1wb3JhcnkgYnVpbGQgaXNzdWVzLgotICAgICAgICAgICAgICAgICAgICBSZW1vdmluZyA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gaXMgdXN1YWxseSBhCi0gICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlbHkgY2hlYXAgb3BlcmF0aW9uLCBiZWNhdXNlIHRhc2sgb3V0cHV0IHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgY2FjaGVkIGluCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfRElSJz48ZmlsZW5hbWU+U1NUQVRFX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAodXN1YWxseSA8ZmlsZW5hbWU+c3N0YXRlLWNhY2hlLzwvZmlsZW5hbWU+LCB3aGljaCBpcwotICAgICAgICAgICAgICAgICAgICBhbHNvIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkpLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92aW5nIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBtaWdodCBiZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICB3b3JrYXJvdW5kIHJhdGhlciB0aGFuIGEgZml4LgotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0cnlpbmcgdG8gZGV0ZXJtaW5lIHRoZSB1bmRlcmx5aW5nIGNhdXNlCi0gICAgICAgICAgICAgICAgICAgICAgICBvZiBhbiBpc3N1ZSBiZWZvcmUgcmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBpcyBhIGdvb2QKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkZWEuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBVbmRlcnN0YW5kaW5nIGhvdyBhIGZlYXR1cmUgaXMgdXNlZCBpbiBwcmFjdGljZSB3aXRoaW4KLSAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgcmVjaXBlcyBjYW4gYmUgdmVyeSBoZWxwZnVsLgotICAgICAgICAgICAgICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBjb25maWd1cmUgc29tZSBtZXRob2QgdGhhdAotICAgICAgICAgICAgICAgICAgICBhbGxvd3MgeW91IHRvIHF1aWNrbHkgc2VhcmNoIHRocm91Z2ggZmlsZXMuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzaW5nIEdOVSBHcmVwLCB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHNoZWxsCi0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvIHJlY3Vyc2l2ZWx5IHNlYXJjaCB0aHJvdWdoIGNvbW1vbgotICAgICAgICAgICAgICAgICAgICByZWNpcGUtcmVsYXRlZCBmaWxlcywgc2tpcHBpbmcgYmluYXJ5IGZpbGVzLAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmdpdDwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLCBhbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeSAoYXNzdW1pbmcgaXRzIG5hbWUgc3RhcnRzIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgImJ1aWxkIik6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZygpIHsKLSAgICAgICAgIGdyZXAgLUlyIFwKLSAgICAgICAgICAgICAgLS1leGNsdWRlLWRpcj0uZ2l0IFwKLSAgICAgICAgICAgICAgLS1leGNsdWRlLWRpcj0nYnVpbGQqJyBcCi0gICAgICAgICAgICAgIC0taW5jbHVkZT0nKi5iYionIFwKLSAgICAgICAgICAgICAgLS1pbmNsdWRlPScqLmluYyonIFwKLSAgICAgICAgICAgICAgLS1pbmNsdWRlPScqLmNvbmYqJyBcCi0gICAgICAgICAgICAgIC0taW5jbHVkZT0nKi5weSonIFwKLSAgICAgICAgICAgICAgIiRAIgotICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIHVzYWdlIGV4YW1wbGVzOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZyBGT08gICAgIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJGT08iCi0gICAgICQgZyAtaSBmb28gIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJmb28iLCBpZ25vcmluZyBjYXNlCi0gICAgICQgZyAtdyBGT08gIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJGT08iIGFzIGEgd29yZCwgaWdub3JpbmcgZS5nLiAiRk9PQkFSIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIElmIGZpZ3VyaW5nIG91dCBob3cgc29tZSBmZWF0dXJlIHdvcmtzIHJlcXVpcmVzIGEgbG90IG9mCi0gICAgICAgICAgICAgICAgICAgIHNlYXJjaGluZywgaXQgbWlnaHQgaW5kaWNhdGUgdGhhdCB0aGUgZG9jdW1lbnRhdGlvbiBzaG91bGQKLSAgICAgICAgICAgICAgICAgICAgYmUgZXh0ZW5kZWQgb3IgaW1wcm92ZWQuCi0gICAgICAgICAgICAgICAgICAgIEluIHN1Y2ggY2FzZXMsIGNvbnNpZGVyIGZpbGluZyBhIGRvY3VtZW50YXRpb24gYnVnIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8nPkJ1Z3ppbGxhPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzdWJtaXQgYSBidWcgYWdhaW5zdAotICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZSBZb2N0byBQcm9qZWN0IEJ1Z3ppbGxhCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9CdWd6aWxsYV9Db25maWd1cmF0aW9uX2FuZF9CdWdfVHJhY2tpbmcnPndpa2kgcGFnZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc3VibWl0dGluZy1hLWRlZmVjdC1hZ2FpbnN0LXRoZS15b2N0by1wcm9qZWN0Jz5TdWJtaXR0aW5nIGEgRGVmZWN0IEFnYWluc3QgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiwgd2hpY2ggaXMgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKLSAgICAgICAgICAgICAgICAgICAgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtYW51YWxzIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQgcGxhY2UgdG8gZG9jdW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSBwdXJlbHkgaW50ZXJuYWwgYW5kIGhhdmUgYSBsaW1pdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICBzY29wZSAoZS5nLiBpbnRlcm5hbCB2YXJpYWJsZXMgdXNlZCB0byBpbXBsZW1lbnQgYQotICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUpLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSdyZWYtcXVpY2stZW11bGF0b3ItcWVtdSc+Ci0gICAgPHRpdGxlPlF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdXNlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpCi0gICAgICAgIE9wZW4gU291cmNlIHByb2plY3QgYXMgcGFydCBvZiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCAidG9vbAotICAgICAgICBzZXQiLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBXaXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIFlvY3RvIFByb2plY3QsIFFFTVUgaXMgYW4KLSAgICAgICAgZW11bGF0b3IgYW5kIHZpcnR1YWxpemF0aW9uIG1hY2hpbmUgdGhhdCBhbGxvd3MgeW91IHRvIHJ1biBhIGNvbXBsZXRlCi0gICAgICAgIGltYWdlIHlvdSBoYXZlIGJ1aWx0IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IGFzIGp1c3QgYW5vdGhlciB0YXNrCi0gICAgICAgIG9uIHlvdXIgYnVpbGQgc3lzdGVtLgotICAgICAgICBRRU1VIGlzIHVzZWZ1bCBmb3IgcnVubmluZyBhbmQgdGVzdGluZyBpbWFnZXMgYW5kIGFwcGxpY2F0aW9ucyBvbgotICAgICAgICBzdXBwb3J0ZWQgWW9jdG8gUHJvamVjdCBhcmNoaXRlY3R1cmVzIHdpdGhvdXQgaGF2aW5nIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIFFFTVUgdG8gcnVuIGF1dG9tYXRlZAotICAgICAgICBRdWFsaXR5IEFzc3VyYW5jZSAoUUEpIHRlc3RzIG9uIGZpbmFsIGltYWdlcyBzaGlwcGVkIHdpdGggZWFjaAotICAgICAgICByZWxlYXNlLgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IHRoZSBzYW1lIGFzIFFFTVUgaW4gZ2VuZXJhbC4KLSAgICAgICAgPC9ub3RlPgotICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBicmllZiByZWZlcmVuY2UgZm9yIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgIGltcGxlbWVudGF0aW9uIG9mIFFFTVUuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvciBvZmZpY2lhbCBpbmZvcm1hdGlvbiBhbmQgZG9jdW1lbnRhdGlvbiBvbiBRRU1VIGluIGdlbmVyYWwsIHNlZSB0aGUKLSAgICAgICAgZm9sbG93aW5nIHJlZmVyZW5jZXM6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPjx1bGluayB1cmw9J2h0dHA6Ly93aWtpLnFlbXUub3JnL01haW5fUGFnZSc+UUVNVSBXZWJzaXRlPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGUgb2ZmaWNpYWwgd2Vic2l0ZSBmb3IgdGhlIFFFTVUgT3BlbiBTb3VyY2UgcHJvamVjdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvTWFudWFsJz5Eb2N1bWVudGF0aW9uPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGUgUUVNVSB1c2VyIG1hbnVhbC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCi0gICAgICAgIFFFTVUsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSc+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgotICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncWVtdS1hdmFpbGFiaWxpdHknPgotICAgICAgICA8dGl0bGU+UUVNVSBBdmFpbGFiaWxpdHk8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgUUVNVSBpcyBtYWRlIGF2YWlsYWJsZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGEgbnVtYmVyIG9mIHdheXMuCi0gICAgICAgICAgICBPbmUgbWV0aG9kIGlzIHRvIGluc3RhbGwgYSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykuCi0gICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gbWFrZSBzdXJlIHlvdSBoYXZlCi0gICAgICAgICAgICBRRU1VIGF2YWlsYWJsZSwgc2VlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjdGhlLXFlbXUtZW11bGF0b3InPlRoZSBRRU1VIEVtdWxhdG9yPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKLSAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncWVtdS1wZXJmb3JtYW5jZSc+Ci0gICAgICAgIDx0aXRsZT5RRU1VIFBlcmZvcm1hbmNlPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFVzaW5nIFFFTVUgdG8gZW11bGF0ZSB5b3VyIGhhcmR3YXJlIGNhbiByZXN1bHQgaW4gc3BlZWQgaXNzdWVzCi0gICAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlIHRhcmdldCBhbmQgaG9zdCBhcmNoaXRlY3R1cmUgbWl4LgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHVzaW5nIHRoZSA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IGltYWdlIGluIHRoZQotICAgICAgICAgICAgZW11bGF0b3Igb24gYW4gSW50ZWwtYmFzZWQgMzItYml0ICh4ODYpIGhvc3QgbWFjaGluZSBpcyBmYXN0Ci0gICAgICAgICAgICBiZWNhdXNlIHRoZSB0YXJnZXQgYW5kIGhvc3QgYXJjaGl0ZWN0dXJlcyBtYXRjaC4KLSAgICAgICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCB1c2luZyB0aGUgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiBpbWFnZQotICAgICAgICAgICAgb24gdGhlIHNhbWUgSW50ZWwtYmFzZWQgaG9zdCBjYW4gYmUgc2xvd2VyLgotICAgICAgICAgICAgQnV0LCB5b3Ugc3RpbGwgYWNoaWV2ZSBmYWl0aGZ1bCBlbXVsYXRpb24gb2YgQVJNLXNwZWNpZmljIGlzc3Vlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gc3BlZWQgdGhpbmdzIHVwLCB0aGUgUUVNVSBpbWFnZXMgc3VwcG9ydCB1c2luZwotICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3RjYzwvZmlsZW5hbWU+IHRvIGNhbGwgYSBjcm9zcy1jb21waWxlciBvdXRzaWRlIHRoZQotICAgICAgICAgICAgZW11bGF0ZWQgc3lzdGVtLgotICAgICAgICAgICAgSWYgeW91IHVzZWQgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiB0byBzdGFydCBRRU1VLCBhbmQgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdGNjZDwvZmlsZW5hbWU+IGFwcGxpY2F0aW9uIGlzIHByZXNlbnQgb24gdGhlIGhvc3QKLSAgICAgICAgICAgIHN5c3RlbSwgYW55IEJpdEJha2UgY3Jvc3MtY29tcGlsaW5nIHRvb2xjaGFpbiBhdmFpbGFibGUgZnJvbSB0aGUKLSAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBpcyBhdXRvbWF0aWNhbGx5IHVzZWQgZnJvbSB3aXRoaW4gUUVNVSBzaW1wbHkgYnkKLSAgICAgICAgICAgIGNhbGxpbmcgPGZpbGVuYW1lPmRpc3RjYzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgWW91IGNhbiBhY2NvbXBsaXNoIHRoaXMgYnkgZGVmaW5pbmcgdGhlIGNyb3NzLWNvbXBpbGVyIHZhcmlhYmxlCi0gICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+ZXhwb3J0IENDPSJkaXN0Y2MiPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFyZSB1c2luZyBhIHN1aXRhYmxlIFNESyBpbWFnZSBvciB0aGUKLSAgICAgICAgICAgIGFwcHJvcHJpYXRlIHN0YW5kLWFsb25lIHRvb2xjaGFpbiBpcyBwcmVzZW50LCB0aGUgdG9vbGNoYWluIGlzCi0gICAgICAgICAgICBhbHNvIGF1dG9tYXRpY2FsbHkgdXNlZC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgU2V2ZXJhbCBtZWNoYW5pc21zIGV4aXN0IHRoYXQgbGV0IHlvdSBjb25uZWN0IHRvIHRoZSBzeXN0ZW0KLSAgICAgICAgICAgIHJ1bm5pbmcgb24gdGhlIFFFTVUgZW11bGF0b3I6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgUUVNVSBwcm92aWRlcyBhIGZyYW1lYnVmZmVyIGludGVyZmFjZSB0aGF0IG1ha2VzIHN0YW5kYXJkCi0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGVzIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBHZW5lcmFsbHksIGhlYWRsZXNzIGVtYmVkZGVkIGRldmljZXMgaGF2ZSBhIHNlcmlhbCBwb3J0LgotICAgICAgICAgICAgICAgICAgICBJZiBzbywgeW91IGNhbiBjb25maWd1cmUgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgaW1hZ2UgdG8gdXNlIHRoYXQgcG9ydCB0byBydW4gYSBjb25zb2xlLgotICAgICAgICAgICAgICAgICAgICBUaGUgY29ubmVjdGlvbiB1c2VzIHN0YW5kYXJkIElQIG5ldHdvcmtpbmcuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgU1NIIHNlcnZlcnMgZXhpc3QgaW4gc29tZSBRRU1VIGltYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBRRU1VIGltYWdlIGhhcyBhCi0gICAgICAgICAgICAgICAgICAgIERyb3BiZWFyIHNlY3VyZSBzaGVsbCAoU1NIKSBzZXJ2ZXIgdGhhdCBydW5zIHdpdGggdGhlIHJvb3QKLSAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQgZGlzYWJsZWQuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1mdWxsLWNtZGxpbmU8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbHNiPC9maWxlbmFtZT4gUUVNVSBpbWFnZXMKLSAgICAgICAgICAgICAgICAgICAgaGF2ZSBPcGVuU1NIIGluc3RlYWQgb2YgRHJvcGJlYXIuCi0gICAgICAgICAgICAgICAgICAgIEluY2x1ZGluZyB0aGVzZSBTU0ggc2VydmVycyBhbGxvdyB5b3UgdG8gdXNlIHN0YW5kYXJkCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnNjcDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzLgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IFFFTVUgaW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgIGhvd2V2ZXIsIGNvbnRhaW5zIG5vIFNTSCBzZXJ2ZXIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYSBwcm92aWRlZCwgdXNlci1zcGFjZSBORlMgc2VydmVyIHRvIGJvb3QKLSAgICAgICAgICAgICAgICAgICAgdGhlIFFFTVUgc2Vzc2lvbiB1c2luZyBhIGxvY2FsIGNvcHkgb2YgdGhlIHJvb3QKLSAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSBvbiB0aGUgaG9zdC4KLSAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gbWFrZSB0aGlzIGNvbm5lY3Rpb24sIHlvdSBtdXN0IGV4dHJhY3QgYQotICAgICAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0gdGFyYmFsbCBieSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXUtZXh0cmFjdC1zZGs8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZSBjb21tYW5kLCB5b3UgbXVzdCB0aGVuIHBvaW50IHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHNjcmlwdCB0byB0aGUgZXh0cmFjdGVkIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIGEgcm9vdAotICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGltYWdlIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3FlbXUtcnVubmluZy11bmRlci1hLW5ldHdvcmstZmlsZS1zeXN0ZW0tbmZzLXNlcnZlcic+UnVubmluZyBVbmRlciBhIE5ldHdvcmsgRmlsZSBTeXN0ZW0gKE5GUykgU2VydmVyPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgotICAgICAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L25vdGU+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3FlbXUtY29tbWFuZC1saW5lLXN5bnRheCc+Ci0gICAgICAgIDx0aXRsZT5RRU1VIENvbW1hbmQtTGluZSBTeW50YXg8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGJhc2ljIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gY29tbWFuZCBzeW50YXggaXMgYXMKLSAgICAgICAgICAgIGZvbGxvd3M6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcnVucWVtdSBbPHJlcGxhY2VhYmxlPm9wdGlvbjwvcmVwbGFjZWFibGU+IF0gIFsuLi5dCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBCYXNlZCBvbiB3aGF0IHlvdSBwcm92aWRlIG9uIHRoZSBjb21tYW5kIGxpbmUsCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGRvZXMgYSBnb29kIGpvYiBvZiBmaWd1cmluZyBvdXQgd2hhdAotICAgICAgICAgICAgeW91IGFyZSB0cnlpbmcgdG8gZG8uCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCwgUUVNVSBsb29rcyBmb3IgdGhlIG1vc3QgcmVjZW50bHkgYnVpbHQKLSAgICAgICAgICAgIGltYWdlIGFjY29yZGluZyB0byB0aGUgdGltZXN0YW1wIHdoZW4gaXQgbmVlZHMgdG8gbG9vayBmb3IgYW4KLSAgICAgICAgICAgIGltYWdlLgotICAgICAgICAgICAgTWluaW1hbGx5LCB0aHJvdWdoIHRoZSB1c2Ugb2Ygb3B0aW9ucywgeW91IG11c3QgcHJvdmlkZSBlaXRoZXIKLSAgICAgICAgICAgIGEgbWFjaGluZSBuYW1lLCBhIHZpcnR1YWwgbWFjaGluZSBpbWFnZQotICAgICAgICAgICAgKDxmaWxlbmFtZT4qd2ljLnZtZGs8L2ZpbGVuYW1lPiksIG9yIGEga2VybmVsIGltYWdlCi0gICAgICAgICAgICAoPGZpbGVuYW1lPiouYmluPC9maWxlbmFtZT4pLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb2xsb3dpbmcgaXMgdGhlIGNvbW1hbmQtbGluZSBoZWxwIG91dHB1dCBmb3IgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGNvbW1hbmQ6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcnVucWVtdSAtLWhlbHAKLQotICAgICBVc2FnZTogeW91IGNhbiBydW4gdGhpcyBzY3JpcHQgd2l0aCBhbnkgdmFsaWQgY29tYmluYXRpb24KLSAgICAgb2YgdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGluIGFueSBvcmRlcik6Ci0gICAgICAgS0VSTkVMIC0gdGhlIGtlcm5lbCBpbWFnZSBmaWxlIHRvIHVzZQotICAgICAgIFJPT1RGUyAtIHRoZSByb290ZnMgaW1hZ2UgZmlsZSBvciBuZnNyb290IGRpcmVjdG9yeSB0byB1c2UKLSAgICAgICBNQUNISU5FIC0gdGhlIG1hY2hpbmUgbmFtZSAob3B0aW9uYWwsIGF1dG9kZXRlY3RlZCBmcm9tIEtFUk5FTCBmaWxlbmFtZSBpZiB1bnNwZWNpZmllZCkKLSAgICAgICBTaW1wbGlmaWVkIFFFTVUgY29tbWFuZC1saW5lIG9wdGlvbnMgY2FuIGJlIHBhc3NlZCB3aXRoOgotICAgICAgICAgbm9ncmFwaGljIC0gZGlzYWJsZSB2aWRlbyBjb25zb2xlCi0gICAgICAgICBzZXJpYWwgLSBlbmFibGUgYSBzZXJpYWwgY29uc29sZSBvbiAvZGV2L3R0eVMwCi0gICAgICAgICBzbGlycCAtIGVuYWJsZSB1c2VyIG5ldHdvcmtpbmcsIG5vIHJvb3QgcHJpdmlsZWdlcyBpcyByZXF1aXJlZAotICAgICAgICAga3ZtIC0gZW5hYmxlIEtWTSB3aGVuIHJ1bm5pbmcgeDg2L3g4Nl82NCAoVlQtY2FwYWJsZSBDUFUgcmVxdWlyZWQpCi0gICAgICAgICBrdm0tdmhvc3QgLSBlbmFibGUgS1ZNIHdpdGggdmhvc3Qgd2hlbiBydW5uaW5nIHg4Ni94ODZfNjQgKFZULWNhcGFibGUgQ1BVIHJlcXVpcmVkKQotICAgICAgICAgcHVibGljdm5jIC0gZW5hYmxlIGEgVk5DIHNlcnZlciBvcGVuIHRvIGFsbCBob3N0cwotICAgICAgICAgYXVkaW8gLSBlbmFibGUgYXVkaW8KLSAgICAgICAgIFsqL11vdm1mKiAtIE9WTUYgZmlybXdhcmUgZmlsZSBvciBiYXNlIG5hbWUgZm9yIGJvb3Rpbmcgd2l0aCBVRUZJCi0gICAgICAgdGNwc2VyaWFsPSZsdDtwb3J0Jmd0OyAtIHNwZWNpZnkgdGNwIHNlcmlhbCBwb3J0IG51bWJlcgotICAgICAgIGJpb3NkaXI9Jmx0O2RpciZndDsgLSBzcGVjaWZ5IGN1c3RvbSBiaW9zIGRpcgotICAgICAgIGJpb3NmaWxlbmFtZT0mbHQ7ZmlsZW5hbWUmZ3Q7IC0gc3BlY2lmeSBiaW9zIGZpbGVuYW1lCi0gICAgICAgcWVtdXBhcmFtcz0mbHQ7eHl6Jmd0OyAtIHNwZWNpZnkgY3VzdG9tIHBhcmFtZXRlcnMgdG8gUUVNVQotICAgICAgIGJvb3RwYXJhbXM9Jmx0O3h5eiZndDsgLSBzcGVjaWZ5IGN1c3RvbSBrZXJuZWwgcGFyYW1ldGVycyBkdXJpbmcgYm9vdAotICAgICAgIGhlbHAsIC1oLCAtLWhlbHA6IHByaW50IHRoaXMgdGV4dAotCi0gICAgIEV4YW1wbGVzOgotICAgICAgIHJ1bnFlbXUKLSAgICAgICBydW5xZW11IHFlbXVhcm0KLSAgICAgICBydW5xZW11IHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXVhcm0KLSAgICAgICBydW5xZW11IHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYvJmx0O3FlbXVib290LmNvbmYmZ3Q7Ci0gICAgICAgcnVucWVtdSBxZW11eDg2LTY0IGNvcmUtaW1hZ2Utc2F0byBleHQ0Ci0gICAgICAgcnVucWVtdSBxZW11eDg2LTY0IHdpYy1pbWFnZS1taW5pbWFsIHdpYwotICAgICAgIHJ1bnFlbXUgcGF0aC90by9iekltYWdlLXFlbXV4ODYuYmluIHBhdGgvdG8vbmZzcm9vdGRpci8gc2VyaWFsCi0gICAgICAgcnVucWVtdSBxZW11eDg2IGlzby9oZGRpbWcvd2ljLnZtZGsvd2ljLnFjb3cyL3dpYy52ZGkvcmFtZnMvY3Bpby5nei4uLgotICAgICAgIHJ1bnFlbXUgcWVtdXg4NiBxZW11cGFyYW1zPSItbSAyNTYiCi0gICAgICAgcnVucWVtdSBxZW11eDg2IGJvb3RwYXJhbXM9InBzcGxhc2g9ZmFsc2UiCi0gICAgICAgcnVucWVtdSBwYXRoL3RvLyZsdDtpbWFnZSZndDstJmx0O21hY2hpbmUmZ3Q7LndpYwotICAgICAgIHJ1bnFlbXUgcGF0aC90by8mbHQ7aW1hZ2UmZ3Q7LSZsdDttYWNoaW5lJmd0Oy53aWMudm1kawotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3J1bnFlbXUtY29tbWFuZC1saW5lLW9wdGlvbnMnPgotICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBDb21tYW5kLUxpbmUgT3B0aW9uczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb2xsb3dpbmcgaXMgYSBkZXNjcmlwdGlvbiBvZiA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBvcHRpb25zIHlvdSBjYW4gcHJvdmlkZSBvbiB0aGUgY29tbWFuZCBsaW5lOgotICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgSWYgeW91IGRvIHByb3ZpZGUgc29tZSAiaWxsZWdhbCIgb3B0aW9uIGNvbWJpbmF0aW9uIG9yIHBlcmhhcHMKLSAgICAgICAgICAgICAgICB5b3UgZG8gbm90IHByb3ZpZGUgZW5vdWdoIGluIHRoZSB3YXkgb2Ygb3B0aW9ucywKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHByb3ZpZGVzIGFwcHJvcHJpYXRlIGVycm9yCi0gICAgICAgICAgICAgICAgbWVzc2FnaW5nIHRvIGhlbHAgeW91IGNvcnJlY3QgdGhlIHByb2JsZW0uCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPlFFTVVBUkNIPC9yZXBsYWNlYWJsZT46Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBRRU1VIG1hY2hpbmUgYXJjaGl0ZWN0dXJlLCB3aGljaCBtdXN0IGJlICJxZW11YXJtIiwKLSAgICAgICAgICAgICAgICAgICAgInFlbXVhcm02NCIsICJxZW11bWlwcyIsICJxZW11bWlwczY0IiwgInFlbXVwcGMiLAotICAgICAgICAgICAgICAgICAgICAicWVtdXg4NiIsIG9yICJxZW11eDg2LTY0Ii4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPlZNPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIHZpcnR1YWwgbWFjaGluZSBpbWFnZSwgd2hpY2ggbXVzdCBiZSBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2ljLnZtZGs8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyBvcHRpb24gd2hlbiB5b3Ugd2FudCB0byBib290IGEKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi53aWMudm1kazwvZmlsZW5hbWU+IGltYWdlLgotICAgICAgICAgICAgICAgICAgICBUaGUgaW1hZ2UgZmlsZW5hbWUgeW91IHByb3ZpZGUgbXVzdCBjb250YWluIG9uZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHN0cmluZ3M6ICJxZW11eDg2LTY0IiwgInFlbXV4ODYiLCAicWVtdWFybSIsCi0gICAgICAgICAgICAgICAgICAgICJxZW11bWlwczY0IiwgInFlbXVtaXBzIiwgInFlbXVwcGMiLCBvciAicWVtdXNoNCIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPlJPT1RGUzwvcmVwbGFjZWFibGU+OgotICAgICAgICAgICAgICAgICAgICBBIHJvb3QgZmlsZXN5c3RlbSB0aGF0IGhhcyBvbmUgb2YgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgICAgICBmaWxldHlwZSBleHRlbnNpb25zOiAiZXh0MiIsICJleHQzIiwgImV4dDQiLCAiamZmczIiLAotICAgICAgICAgICAgICAgICAgICAibmZzIiwgb3IgImJ0cmZzIi4KLSAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGZpbGVuYW1lIHlvdSBwcm92aWRlIGZvciB0aGlzIG9wdGlvbiB1c2VzIOKAnG5mc+KAnSwgaXQKLSAgICAgICAgICAgICAgICAgICAgbXVzdCBwcm92aWRlIGFuIGV4cGxpY2l0IHJvb3QgZmlsZXN5c3RlbSBwYXRoLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5LRVJORUw8L3JlcGxhY2VhYmxlPjoKLSAgICAgICAgICAgICAgICAgICAgQSBrZXJuZWwgaW1hZ2UsIHdoaWNoIGlzIGEgPGZpbGVuYW1lPi5iaW48L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBwcm92aWRlIGEgPGZpbGVuYW1lPi5iaW48L2ZpbGVuYW1lPiBmaWxlLAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGRldGVjdHMgaXQgYW5kIGFzc3VtZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIGZpbGUgaXMgYSBrZXJuZWwgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgUUVNVSBtYWNoaW5lLCB3aGljaCBtdXN0IGJlIG9uZQotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nOiAicWVtdXg4NiIsICJxZW11eDg2LTY0IiwgInFlbXVhcm0iLAotICAgICAgICAgICAgICAgICAgICAicWVtdWFybTY0IiwgInFlbXVtaXBzIiwg4oCccWVtdW1pcHM2NCIsIG9yICJxZW11cHBjIi4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5RRU1VQVJDSDwvcmVwbGFjZWFibGU+IG9wdGlvbnMgYXJlIGJhc2ljYWxseQotICAgICAgICAgICAgICAgICAgICBpZGVudGljYWwuCi0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgcHJvdmlkZSBhIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHRyaWVzIHRvIGRldGVybWluZQotICAgICAgICAgICAgICAgICAgICBpdCBiYXNlZCBvbiBvdGhlciBvcHRpb25zLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yYW1mczwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgeW91IGFyZSBib290aW5nIGFuIGluaXRpYWwgUkFNIGRpc2sgKGluaXRyYW1mcykKLSAgICAgICAgICAgICAgICAgICAgaW1hZ2UsIHdoaWNoIG1lYW5zIHRoZSA8ZmlsZW5hbWU+RlNUWVBFPC9maWxlbmFtZT4gaXMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNwaW8uZ3o8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aXNvPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEluZGljYXRlcyB5b3UgYXJlIGJvb3RpbmcgYW4gSVNPIGltYWdlLCB3aGljaCBtZWFucyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZTVFlQRTwvZmlsZW5hbWU+IGlzCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uaXNvPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5vZ3JhcGhpYzwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBEaXNhYmxlcyB0aGUgdmlkZW8gY29uc29sZSwgd2hpY2ggc2V0cyB0aGUgY29uc29sZSB0bwotICAgICAgICAgICAgICAgICAgICAidHR5czAiLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZXJpYWw8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBhIHNlcmlhbCBjb25zb2xlIG9uCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L3R0eVMwPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpb3NkaXI8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRXN0YWJsaXNoZXMgYSBjdXN0b20gZGlyZWN0b3J5IGZvciBCSU9TLCBWR0EgQklPUyBhbmQKLSAgICAgICAgICAgICAgICAgICAga2V5bWFwcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ymlvc2ZpbGVuYW1lPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIGEgY3VzdG9tIEJJT1MgbmFtZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXBhcmFtcz1cIjxyZXBsYWNlYWJsZT54eXo8L3JlcGxhY2VhYmxlPlwiPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBjdXN0b20gUUVNVSBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyBvcHRpb24gdG8gcGFzcyBvcHRpb25zIG90aGVyIHRoYW4gdGhlIHNpbXBsZQotICAgICAgICAgICAgICAgICAgICAia3ZtIiBhbmQgInNlcmlhbCIgb3B0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ib290cGFyYW1zPVwiPHJlcGxhY2VhYmxlPnh5ejwvcmVwbGFjZWFibGU+XCI8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGN1c3RvbSBib290IHBhcmFtZXRlcnMgZm9yIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1ZGlvPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgYXVkaW8gaW4gUUVNVS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gb3B0aW9uIG11c3QgYmUKLSAgICAgICAgICAgICAgICAgICAgZWl0aGVyICJxZW11eDg2IiBvciAicWVtdXg4Ni02NCIgaW4gb3JkZXIgZm9yIGF1ZGlvIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgIGVuYWJsZWQuCi0gICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIDxmaWxlbmFtZT5zbmRfaW50ZWw4eDA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+c25kX2VuczEzNzA8L2ZpbGVuYW1lPiBkcml2ZXIgbXVzdCBiZQotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW4gbGludXggZ3Vlc3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNsaXJwPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgInNsaXJwIiBuZXR3b3JraW5nLCB3aGljaCBpcyBhIGRpZmZlcmVudCB3YXkKLSAgICAgICAgICAgICAgICAgICAgb2YgbmV0d29ya2luZyB0aGF0IGRvZXMgbm90IG5lZWQgcm9vdCBhY2Nlc3MKLSAgICAgICAgICAgICAgICAgICAgYnV0IGFsc28gaXMgbm90IGFzIGVhc3kgdG8gdXNlIG9yIGNvbXByZWhlbnNpdmUKLSAgICAgICAgICAgICAgICAgICAgYXMgdGhlIGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0na3ZtLWNvbmQnPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a3ZtPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgS1ZNIHdoZW4gcnVubmluZyAicWVtdXg4NiIgb3IgInFlbXV4ODYtNjQiCi0gICAgICAgICAgICAgICAgICAgIFFFTVUgYXJjaGl0ZWN0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIEtWTSB0byB3b3JrLCBhbGwgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIG11c3QgYmUgbWV0OgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiBtdXN0IGJlIGVpdGhlcgotcWVtdXg4NiIgb3IgInFlbXV4ODYtNjQiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgYnVpbGQgaG9zdCBoYXMgdG8gaGF2ZSB0aGUgS1ZNIG1vZHVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQsIHdoaWNoIGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L2t2bTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSAgYnVpbGQgaG9zdCA8ZmlsZW5hbWU+L2Rldi9rdm08L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBoYXMgdG8gYmUgYm90aCB3cml0YWJsZSBhbmQgcmVhZGFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rdm0tdmhvc3Q8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBLVk0gd2l0aCBWSE9TVCBzdXBwb3J0IHdoZW4gcnVubmluZyAicWVtdXg4NiIKLSAgICAgICAgICAgICAgICAgICAgb3IgInFlbXV4ODYtNjQiIFFFTVUgYXJjaGl0ZWN0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIEtWTSB3aXRoIFZIT1NUIHRvIHdvcmssIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBtdXN0Ci0gICAgICAgICAgICAgICAgICAgIGJlIG1ldDoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdrdm0tY29uZCc+a3ZtPC9saW5rPiBvcHRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zIG11c3QgYmUgbWV0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgYnVpbGQgaG9zdCBoYXMgdG8gaGF2ZSB2aXJ0aW8gbmV0IGRldmljZSwgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgPGZpbGVuYW1lPi9kZXYvdmhvc3QtbmV0PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIGhvc3QgPGZpbGVuYW1lPi9kZXYvdmhvc3QtbmV0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaGFzIHRvIGJlIGVpdGhlciByZWFkYWJsZSBvciB3cml0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCDigJxzbGlycC1lbmFibGVk4oCdLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHVibGljdm5jPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgYSBWTkMgc2VydmVyIG9wZW4gdG8gYWxsIGhvc3RzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPgotICAgIDx0aXRsZT5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgTWFueSBmYWN0b3JzIGNhbiBpbmZsdWVuY2UgdGhlIHF1YWxpdHkgb2YgYSBidWlsZC4KLSAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSB1cGdyYWRlIGEgcmVjaXBlIHRvIHVzZSBhIG5ldyB2ZXJzaW9uIG9mIGFuIHVwc3RyZWFtIHNvZnR3YXJlCi0gICAgICAgIHBhY2thZ2Ugb3IgeW91IGV4cGVyaW1lbnQgd2l0aCBzb21lIG5ldyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHN1YnRsZSBjaGFuZ2VzCi0gICAgICAgIGNhbiBvY2N1ciB0aGF0IHlvdSBtaWdodCBub3QgZGV0ZWN0IHVudGlsIGxhdGVyLgotICAgICAgICBDb25zaWRlciB0aGUgY2FzZSB3aGVyZSB5b3VyIHJlY2lwZSBpcyB1c2luZyBhIG5ld2VyIHZlcnNpb24gb2YgYW4gdXBzdHJlYW0gcGFja2FnZS4KLSAgICAgICAgSW4gdGhpcyBjYXNlLCBhIG5ldyB2ZXJzaW9uIG9mIGEgcGllY2Ugb2Ygc29mdHdhcmUgbWlnaHQgaW50cm9kdWNlIGFuIG9wdGlvbmFsCi0gICAgICAgIGRlcGVuZGVuY3kgb24gYW5vdGhlciBsaWJyYXJ5LCB3aGljaCBpcyBhdXRvLWRldGVjdGVkLgotICAgICAgICBJZiB0aGF0IGxpYnJhcnkgaGFzIGFscmVhZHkgYmVlbiBidWlsdCB3aGVuIHRoZSBzb2Z0d2FyZSBpcyBidWlsZGluZywKLSAgICAgICAgdGhlIHNvZnR3YXJlIHdpbGwgbGluayB0byB0aGUgYnVpbHQgbGlicmFyeSBhbmQgdGhhdCBsaWJyYXJ5IHdpbGwgYmUgcHVsbGVkCi0gICAgICAgIGludG8geW91ciBpbWFnZSBhbG9uZyB3aXRoIHRoZSBuZXcgc29mdHdhcmUgZXZlbiBpZiB5b3UgZGlkIG5vdCB3YW50IHRoZQotICAgICAgICBsaWJyYXJ5LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUKLSAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYnVpbGRoaXN0b3J5Jz48ZmlsZW5hbWU+YnVpbGRoaXN0b3J5PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgIGNsYXNzIGV4aXN0cyB0byBoZWxwIHlvdSBtYWludGFpbgotICAgICAgICB0aGUgcXVhbGl0eSBvZiB5b3VyIGJ1aWxkIG91dHB1dC4KLSAgICAgICAgWW91IGNhbiB1c2UgdGhlIGNsYXNzIHRvIGhpZ2hsaWdodCB1bmV4cGVjdGVkIGFuZCBwb3NzaWJseSB1bndhbnRlZAotICAgICAgICBjaGFuZ2VzIGluIHRoZSBidWlsZCBvdXRwdXQuCi0gICAgICAgIFdoZW4geW91IGVuYWJsZSBidWlsZCBoaXN0b3J5LCBpdCByZWNvcmRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZW50cyBvZgotICAgICAgICBlYWNoIHBhY2thZ2UgYW5kIGltYWdlIGFuZCB0aGVuIGNvbW1pdHMgdGhhdCBpbmZvcm1hdGlvbiB0byBhIGxvY2FsIEdpdAotICAgICAgICByZXBvc2l0b3J5IHdoZXJlIHlvdSBjYW4gZXhhbWluZSB0aGUgaW5mb3JtYXRpb24uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgZm9sbG93aW5nOgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SG93IHlvdSBjYW4gZW5hYmxlIGFuZCBkaXNhYmxlCi0gICAgICAgICAgICAgICBidWlsZCBoaXN0b3J5PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Ib3cgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZSBidWlsZCBoaXN0b3J5IGNvbnRhaW5zCi0gICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkhvdyB0byBsaW1pdCB0aGUgaW5mb3JtYXRpb24gdXNlZCBmb3IgYnVpbGQgaGlzdG9yeQotICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Ib3cgdG8gZXhhbWluZSB0aGUgYnVpbGQgaGlzdG9yeSBmcm9tIGJvdGggYQotICAgICAgICAgICAgICAgY29tbWFuZC1saW5lIGFuZCB3ZWIgaW50ZXJmYWNlPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9J2VuYWJsaW5nLWFuZC1kaXNhYmxpbmctYnVpbGQtaGlzdG9yeSc+Ci0gICAgICAgIDx0aXRsZT5FbmFibGluZyBhbmQgRGlzYWJsaW5nIEJ1aWxkIEhpc3Rvcnk8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQnVpbGQgaGlzdG9yeSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgotICAgICAgICAgICAgVG8gZW5hYmxlIGl0LCBhZGQgdGhlIGZvbGxvd2luZyA8ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBzdGF0ZW1lbnQgYW5kIHNldCB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMREhJU1RPUllfQ09NTUlUJz48ZmlsZW5hbWU+QlVJTERISVNUT1JZX0NPTU1JVDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGF0IHRoZSBlbmQgb2YgeW91cgotICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz46Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElOSEVSSVQgKz0gImJ1aWxkaGlzdG9yeSIKLSAgICAgQlVJTERISVNUT1JZX0NPTU1JVCA9ICIxIgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgRW5hYmxpbmcgYnVpbGQgaGlzdG9yeSBhcyBwcmV2aW91c2x5IGRlc2NyaWJlZCBjYXVzZXMgdGhlCi0gICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNvbGxlY3QgYnVpbGQgb3V0cHV0IGluZm9ybWF0aW9uIGFuZAotICAgICAgICAgICAgY29tbWl0IGl0IGFzIGEgc2luZ2xlIGNvbW1pdCB0byBhIGxvY2FsCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnaXQnPkdpdDwvbGluaz4gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIEVuYWJsaW5nIGJ1aWxkIGhpc3RvcnkgaW5jcmVhc2VzIHlvdXIgYnVpbGQgdGltZXMgc2xpZ2h0bHksCi0gICAgICAgICAgICAgICAgcGFydGljdWxhcmx5IGZvciBpbWFnZXMsIGFuZCBpbmNyZWFzZXMgdGhlIGFtb3VudCBvZiBkaXNrCi0gICAgICAgICAgICAgICAgc3BhY2UgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3UgY2FuIGRpc2FibGUgYnVpbGQgaGlzdG9yeSBieSByZW1vdmluZyB0aGUgcHJldmlvdXMgc3RhdGVtZW50cwotICAgICAgICAgICAgZnJvbSB5b3VyIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3VuZGVyc3RhbmRpbmctd2hhdC10aGUtYnVpbGQtaGlzdG9yeS1jb250YWlucyc+Ci0gICAgICAgIDx0aXRsZT5VbmRlcnN0YW5kaW5nIFdoYXQgdGhlIEJ1aWxkIEhpc3RvcnkgQ29udGFpbnM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQnVpbGQgaGlzdG9yeSBpbmZvcm1hdGlvbiBpcyBrZXB0IGluCi0gICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1UT1BESVInPjxmaWxlbmFtZT5UT1BESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fS9idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSBhcyBkZWZpbmVkIGJ5IHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxESElTVE9SWV9ESVInPjxmaWxlbmFtZT5CVUlMREhJU1RPUllfRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBhYmJyZXZpYXRlZCBsaXN0aW5nOgotICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2J1aWxkaGlzdG9yeS5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSI0aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEF0IHRoZSB0b3AgbGV2ZWwsIHRoZXJlIGlzIGEgPGZpbGVuYW1lPm1ldGFkYXRhLXJldnM8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICB0aGF0IGxpc3RzIHRoZSByZXZpc2lvbnMgb2YgdGhlIHJlcG9zaXRvcmllcyBmb3IgdGhlIGxheWVycyBlbmFibGVkCi0gICAgICAgICAgICB3aGVuIHRoZSBidWlsZCB3YXMgcHJvZHVjZWQuCi0gICAgICAgICAgICBUaGUgcmVzdCBvZiB0aGUgZGF0YSBzcGxpdHMgaW50byBzZXBhcmF0ZQotICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2VzPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5pbWFnZXM8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5zZGs8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcywgdGhlIGNvbnRlbnRzIG9mIHdoaWNoIGFyZQotICAgICAgICAgICAgZGVzY3JpYmVkIGJlbG93LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkLWhpc3RvcnktcGFja2FnZS1pbmZvcm1hdGlvbic+Ci0gICAgICAgICAgICA8dGl0bGU+QnVpbGQgSGlzdG9yeSBQYWNrYWdlIEluZm9ybWF0aW9uPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGhpc3RvcnkgZm9yIGVhY2ggcGFja2FnZSBjb250YWlucyBhIHRleHQgZmlsZSB0aGF0IGhhcwotICAgICAgICAgICAgICAgIG5hbWUtdmFsdWUgcGFpcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFja2FnZS4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS9wYWNrYWdlcy9pNTg2LXBva3ktbGludXgvYnVzeWJveC9idXN5Ym94L2xhdGVzdDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgY29udGFpbnMgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFBWID0gMS4yMi4xCi0gICAgIFBSID0gcjMyCi0gICAgIFJQUk9WSURFUyA9Ci0gICAgIFJERVBFTkRTID0gZ2xpYmMgKD49IDIuMjApIHVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZwotICAgICBSUkVDT01NRU5EUyA9IGJ1c3lib3gtc3lzbG9nIGJ1c3lib3gtdWRoY3BjIHVwZGF0ZS1yYy5kCi0gICAgIFBLR1NJWkUgPSA1NDAxNjgKLSAgICAgRklMRVMgPSAvdXNyL2Jpbi8qIC91c3Ivc2Jpbi8qIC91c3IvbGliL2J1c3lib3gvKiAvdXNyL2xpYi9saWIqLnNvLiogXAotICAgICAgICAvZXRjIC9jb20gL3ZhciAvYmluLyogL3NiaW4vKiAvbGliLyouc28uKiAvbGliL3VkZXYvcnVsZXMuZCBcCi0gICAgICAgIC91c3IvbGliL3VkZXYvcnVsZXMuZCAvdXNyL3NoYXJlL2J1c3lib3ggL3Vzci9saWIvYnVzeWJveC8qIFwKLSAgICAgICAgL3Vzci9zaGFyZS9waXhtYXBzIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zIC91c3Ivc2hhcmUvaWRsIFwKLSAgICAgICAgL3Vzci9zaGFyZS9vbWYgL3Vzci9zaGFyZS9zb3VuZHMgL3Vzci9saWIvYm9ub2JvL3NlcnZlcnMKLSAgICAgRklMRUxJU1QgPSAvYmluL2J1c3lib3ggL2Jpbi9idXN5Ym94Lm5vc3VpZCAvYmluL2J1c3lib3guc3VpZCAvYmluL3NoIFwKLSAgICAgICAgL2V0Yy9idXN5Ym94LmxpbmtzLm5vc3VpZCAvZXRjL2J1c3lib3gubGlua3Muc3VpZAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBNb3N0IG9mIHRoZXNlIG5hbWUtdmFsdWUgcGFpcnMgY29ycmVzcG9uZCB0byB2YXJpYWJsZXMgdXNlZAotICAgICAgICAgICAgICAgIHRvIHByb2R1Y2UgdGhlIHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgVGhlIGV4Y2VwdGlvbnMgYXJlIDxmaWxlbmFtZT5GSUxFTElTVDwvZmlsZW5hbWU+LCB3aGljaCBpcyB0aGUKLSAgICAgICAgICAgICAgICBhY3R1YWwgbGlzdCBvZiBmaWxlcyBpbiB0aGUgcGFja2FnZSwgYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBLR1NJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlIHRvdGFsIHNpemUgb2YgZmlsZXMKLSAgICAgICAgICAgICAgICBpbiB0aGUgcGFja2FnZSBpbiBieXRlcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlcmUgaXMgYWxzbyBhIGZpbGUgY29ycmVzcG9uZGluZyB0byB0aGUgcmVjaXBlIGZyb20gd2hpY2ggdGhlCi0gICAgICAgICAgICAgICAgcGFja2FnZSBjYW1lIChlLmcuCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS9wYWNrYWdlcy9pNTg2LXBva3ktbGludXgvYnVzeWJveC9sYXRlc3Q8L2ZpbGVuYW1lPik6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBQViA9IDEuMjIuMQotICAgICBQUiA9IHIzMgotICAgICBERVBFTkRTID0gaW5pdHNjcmlwdHMga2Vybi10b29scy1uYXRpdmUgdXBkYXRlLXJjLmQtbmF0aXZlIFwKLSAgICAgICAgdmlydHVhbC9pNTg2LXBva3ktbGludXgtY29tcGlsZXJsaWJzIHZpcnR1YWwvaTU4Ni1wb2t5LWxpbnV4LWdjYyBcCi0gICAgICAgIHZpcnR1YWwvbGliYyB2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMKLSAgICAgUEFDS0FHRVMgPSBidXN5Ym94LXB0ZXN0IGJ1c3lib3gtaHR0cGQgYnVzeWJveC11ZGhjcGQgYnVzeWJveC11ZGhjcGMgXAotICAgICAgICBidXN5Ym94LXN5c2xvZyBidXN5Ym94LW1kZXYgYnVzeWJveC1od2Nsb2NrIGJ1c3lib3gtZGJnIFwKLSAgICAgICAgYnVzeWJveC1zdGF0aWNkZXYgYnVzeWJveC1kZXYgYnVzeWJveC1kb2MgYnVzeWJveC1sb2NhbGUgYnVzeWJveAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRmluYWxseSwgZm9yIHRob3NlIHJlY2lwZXMgZmV0Y2hlZCBmcm9tIGEgdmVyc2lvbiBjb250cm9sCi0gICAgICAgICAgICAgICAgc3lzdGVtIChlLmcuLCBHaXQpLCBhIGZpbGUgZXhpc3RzIHRoYXQgbGlzdHMgc291cmNlIHJldmlzaW9ucwotICAgICAgICAgICAgICAgIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgcmVjaXBlIGFuZCBsaXN0cyB0aGUgYWN0dWFsIHJldmlzaW9ucwotICAgICAgICAgICAgICAgIHVzZWQgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICBMaXN0ZWQgYW5kIGFjdHVhbCByZXZpc2lvbnMgbWlnaHQgZGlmZmVyIHdoZW4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgaXMgc2V0IHRvCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PGxpbmsgbGlua2VuZD0ndmFyLUFVVE9SRVYnPkFVVE9SRVY8L2xpbms+fTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBhc3N1bWluZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnkvcGFja2FnZXMvcWVtdXg4Ni1wb2t5LWxpbnV4L2xpbnV4LXlvY3RvL2xhdGVzdF9zcmNyZXY8L2ZpbGVuYW1lPik6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIFNSQ1JFVl9tYWNoaW5lID0gIjM4Y2Q1NjBkNTAyMmVkMmRiZDFhYjBkY2E5NjQyZTQ3Yzk4YTBhYTEiCi0gICAgIFNSQ1JFVl9tYWNoaW5lID0gIjM4Y2Q1NjBkNTAyMmVkMmRiZDFhYjBkY2E5NjQyZTQ3Yzk4YTBhYTEiCi0gICAgICMgU1JDUkVWX21ldGEgPSAiYTIyN2YyMGVmZjA1NmU1MTFkNTA0YjJlNDkwZjM3NzRhYjI2MGQ2ZiIKLSAgICAgU1JDUkVWX21ldGEgPSAiYTIyN2YyMGVmZjA1NmU1MTFkNTA0YjJlNDkwZjM3NzRhYjI2MGQ2ZiIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5idWlsZGhpc3RvcnktY29sbGVjdC1zcmNyZXZzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBjb21tYW5kIHdpdGggdGhlIDxmaWxlbmFtZT4tYTwvZmlsZW5hbWU+IG9wdGlvbiB0bwotICAgICAgICAgICAgICAgIGNvbGxlY3QgdGhlIHN0b3JlZCA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4gdmFsdWVzCi0gICAgICAgICAgICAgICAgZnJvbSBidWlsZCBoaXN0b3J5IGFuZCByZXBvcnQgdGhlbSBpbiBhIGZvcm1hdCBzdWl0YWJsZSBmb3IKLSAgICAgICAgICAgICAgICB1c2UgaW4gZ2xvYmFsIGNvbmZpZ3VyYXRpb24gKGUuZy4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBvciBhIGRpc3RybyBpbmNsdWRlIGZpbGUpIHRvCi0gICAgICAgICAgICAgICAgb3ZlcnJpZGUgZmxvYXRpbmcgPGZpbGVuYW1lPkFVVE9SRVY8L2ZpbGVuYW1lPiB2YWx1ZXMgdG8gYQotICAgICAgICAgICAgICAgIGZpeGVkIHNldCBvZiByZXZpc2lvbnMuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBzb21lIGV4YW1wbGUgb3V0cHV0IGZyb20gdGhpcyBjb21tYW5kOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBidWlsZGhpc3RvcnktY29sbGVjdC1zcmNyZXZzIC1hCi0gICAgICMgaTU4Ni1wb2t5LWxpbnV4Ci0gICAgIFNSQ1JFVl9wbi1nbGliYyA9ICJiODA3OWRkMGQzNjA2NDhlNGU4ZGU0ODY1NmM1YzM4OTcyNjIxMDcyIgotICAgICBTUkNSRVZfcG4tZ2xpYmMtaW5pdGlhbCA9ICJiODA3OWRkMGQzNjA2NDhlNGU4ZGU0ODY1NmM1YzM4OTcyNjIxMDcyIgotICAgICBTUkNSRVZfcG4tb3BrZy11dGlscyA9ICI1MzI3NGYwODc1NjVmZDQ1ZDg0NTJjNTM2Nzk5N2JhNmE2ODJhMzdhIgotICAgICBTUkNSRVZfcG4ta21vZCA9ICJmZDU2NjM4YWVkM2ZlMTQ3MDE1YmZhMTBlZDRhNWY3NDkxMzAzY2I0IgotICAgICAjIHg4Nl82NC1saW51eAotICAgICBTUkNSRVZfcG4tZ3RrLWRvYy1zdHViLW5hdGl2ZSA9ICIxZGVhMjY2NTkzZWRiNzY2ZDZkODk4Yzc5NDUxZWYxOTNlYjE3Y2ZhIgotICAgICBTUkNSRVZfcG4tZHRjLW5hdGl2ZSA9ICI2NWNjNGQyNzQ4YTJjMmU2ZjI3ZjFjZjM5ZTA3YTVkYmFiZDgwZWJmIgotICAgICBTUkNSRVZfcG4tdXBkYXRlLXJjLmQtbmF0aXZlID0gImVjYTY4MGRkZjI4ZDAyNDk1NDg5NWY1OWEyNDFhNjIyZGQ1NzVjMTEiCi0gICAgIFNSQ1JFVl9nbGliY19wbi1jcm9zcy1sb2NhbGVkZWYtbmF0aXZlID0gImI4MDc5ZGQwZDM2MDY0OGU0ZThkZTQ4NjU2YzVjMzg5NzI2MjEwNzIiCi0gICAgIFNSQ1JFVl9sb2NhbGVkZWZfcG4tY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZSA9ICJjODMzMzY3MzQ4ZDM5ZGFkN2JhMDE4OTkwYmZkYWZmYWVjOGU5ZWQzIgotICAgICBTUkNSRVZfcG4tcHJlbGluay1uYXRpdmUgPSAiZmFhMDY5ZGVlYzk5YmY2MTQxOGQwYmFiODMxYzgzZDdjMWI3OTdjYSIKLSAgICAgU1JDUkVWX3BuLW9wa2ctdXRpbHMtbmF0aXZlID0gIjUzMjc0ZjA4NzU2NWZkNDVkODQ1MmM1MzY3OTk3YmE2YTY4MmEzN2EiCi0gICAgIFNSQ1JFVl9wbi1rZXJuLXRvb2xzLW5hdGl2ZSA9ICIyMzM0NWI4ODQ2ZmU0YmQxNjdlZmRmMWJkOGExMjI0YjJiYTlhNWZmIgotICAgICBTUkNSRVZfcG4ta21vZC1uYXRpdmUgPSAiZmQ1NjYzOGFlZDNmZTE0NzAxNWJmYTEwZWQ0YTVmNzQ5MTMwM2NiNCIKLSAgICAgIyBxZW11eDg2LXBva3ktbGludXgKLSAgICAgU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8gPSAiMzhjZDU2MGQ1MDIyZWQyZGJkMWFiMGRjYTk2NDJlNDdjOThhMGFhMSIKLSAgICAgU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8gPSAiYTIyN2YyMGVmZjA1NmU1MTFkNTA0YjJlNDkwZjM3NzRhYjI2MGQ2ZiIKLSAgICAgIyBhbGwtcG9reS1saW51eAotICAgICBTUkNSRVZfcG4tdXBkYXRlLXJjLmQgPSAiZWNhNjgwZGRmMjhkMDI0OTU0ODk1ZjU5YTI0MWE2MjJkZDU3NWMxMSIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgbm90ZXMgb24gdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnktY29sbGVjdC1zcmNyZXZzPC9maWxlbmFtZT4gY29tbWFuZDoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CeSBkZWZhdWx0LCBvbmx5IHZhbHVlcyB3aGVyZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4gd2FzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGhhcmRjb2RlZCAodXN1YWxseSB3aGVuIDxmaWxlbmFtZT5BVVRPUkVWPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgdXNlZCkgYXJlIHJlcG9ydGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPi1hPC9maWxlbmFtZT4gb3B0aW9uIHRvIHNlZSBhbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4gdmFsdWVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBvdXRwdXQgc3RhdGVtZW50cyBtaWdodCBub3QgaGF2ZSBhbnkgZWZmZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3ZlcnJpZGVzIGFyZSBhcHBsaWVkIGVsc2V3aGVyZSBpbiB0aGUgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IG9wdGlvbiB0byBhZGQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcmNldmFyaWFibGU8L2ZpbGVuYW1lPiBvdmVycmlkZSB0byBlYWNoIG91dHB1dCBsaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeW91IG5lZWQgdG8gd29yayBhcm91bmQgdGhpcyByZXN0cmljdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgc2NyaXB0IGRvZXMgYXBwbHkgc3BlY2lhbCBoYW5kbGluZyB3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgZm9yIG11bHRpcGxlIG1hY2hpbmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBzY3JpcHQgZG9lcyBwbGFjZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudCBiZWZvcmUgZWFjaCBzZXQgb2YgdmFsdWVzIHRoYXQgc3BlY2lmaWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggdHJpcGxldCB0byB3aGljaCB0aGV5IGJlbG9uZyBhcyBzaG93biBhYm92ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuLCA8ZmlsZW5hbWU+aTU4Ni1wb2t5LWxpbnV4PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGQtaGlzdG9yeS1pbWFnZS1pbmZvcm1hdGlvbic+Ci0gICAgICAgICAgICA8dGl0bGU+QnVpbGQgSGlzdG9yeSBJbWFnZSBJbmZvcm1hdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmaWxlcyBwcm9kdWNlZCBmb3IgZWFjaCBpbWFnZSBhcmUgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmltYWdlLWZpbGVzOjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIGRpcmVjdG9yeSBjb250YWluaW5nIHNlbGVjdGVkIGZpbGVzIGZyb20gdGhlIHJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZXMgYXJlIGRlZmluZWQgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMREhJU1RPUllfSU1BR0VfRklMRVMnPjxmaWxlbmFtZT5CVUlMREhJU1RPUllfSU1BR0VfRklMRVM8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5idWlsZC1pZC50eHQ6PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEh1bWFuLXJlYWRhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgbWV0YWRhdGEgc291cmNlIHJldmlzaW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZnVsbCBidWlsZCBoZWFkZXIgYXMgcHJpbnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgYnkgQml0QmFrZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT4qLmRvdDo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kZW5jeSBncmFwaHMgZm9yIHRoZSBpbWFnZSB0aGF0IGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIDxmaWxlbmFtZT5ncmFwaHZpejwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZmlsZXMtaW4taW1hZ2UudHh0OjwvZmlsZW5hbWU+Ci0gCSAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGZpbGVzIGluIHRoZSBpbWFnZSB3aXRoIHBlcm1pc3Npb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgb3duZXIsIGdyb3VwLCBzaXplLCBhbmQgc3ltbGluayBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmltYWdlLWluZm8udHh0OjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIHRleHQgZmlsZSBjb250YWluaW5nIG5hbWUtdmFsdWUgcGFpcnMgd2l0aCBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQgdGhlIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgbGlzdGluZyBleGFtcGxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2UtbmFtZXMudHh0OjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIGJ5IG5hbWUgb25seS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5pbnN0YWxsZWQtcGFja2FnZS1zaXplcy50eHQ6PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBpbnN0YWxsZWQgcGFja2FnZXMgb3JkZXJlZCBieSBzaXplLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2VzLnR4dDo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGluc3RhbGxlZCBwYWNrYWdlcyB3aXRoIGZ1bGwgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBJbnN0YWxsZWQgcGFja2FnZSBpbmZvcm1hdGlvbiBpcyBhYmxlIHRvIGJlIGdhdGhlcmVkIGFuZAotICAgICAgICAgICAgICAgICAgICBwcm9kdWNlZCBldmVuIGlmIHBhY2thZ2UgbWFuYWdlbWVudCBpcyBkaXNhYmxlZCBmb3IgdGhlIGZpbmFsCi0gICAgICAgICAgICAgICAgICAgIGltYWdlLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIDxmaWxlbmFtZT5pbWFnZS1pbmZvLnR4dDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgRElTVFJPID0gcG9reQotICAgICBESVNUUk9fVkVSU0lPTiA9IDEuNwotICAgICBVU0VSX0NMQVNTRVMgPSBidWlsZHN0YXRzIGltYWdlLW1rbGlicyBpbWFnZS1wcmVsaW5rCi0gICAgIElNQUdFX0NMQVNTRVMgPSBpbWFnZV90eXBlcwotICAgICBJTUFHRV9GRUFUVVJFUyA9IGRlYnVnLXR3ZWFrcwotICAgICBJTUFHRV9MSU5HVUFTID0KLSAgICAgSU1BR0VfSU5TVEFMTCA9IHBhY2thZ2Vncm91cC1jb3JlLWJvb3QgcnVuLXBvc3RpbnN0cwotICAgICBCQURfUkVDT01NRU5EQVRJT05TID0KLSAgICAgTk9fUkVDT01NRU5EQVRJT05TID0KLSAgICAgUEFDS0FHRV9FWENMVURFID0KLSAgICAgUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQgPSB3cml0ZV9wYWNrYWdlX21hbmlmZXN0OyBsaWNlbnNlX2NyZWF0ZV9tYW5pZmVzdDsgXAotICAgICAgICB3cml0ZV9pbWFnZV9tYW5pZmVzdCA7IGJ1aWxkaGlzdG9yeV9saXN0X2luc3RhbGxlZF9pbWFnZSA7IFwKLSAgICAgICAgYnVpbGRoaXN0b3J5X2dldF9pbWFnZV9pbnN0YWxsZWQgOyBzc2hfYWxsb3dfZW1wdHlfcGFzc3dvcmQ7ICBcCi0gICAgICAgIHBvc3RpbnN0X2VuYWJsZV9sb2dnaW5nOyByb290ZnNfdXBkYXRlX3RpbWVzdGFtcCA7IHNzaF9kaXNhYmxlX2Ruc19sb29rdXAgOwotICAgICBJTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EID0gICBidWlsZGhpc3RvcnlfZ2V0X2ltYWdlaW5mbyA7Ci0gICAgIElNQUdFU0laRSA9IDY5MDAKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgT3RoZXIgdGhhbiA8ZmlsZW5hbWU+SU1BR0VTSVpFPC9maWxlbmFtZT4sIHdoaWNoIGlzIHRoZQotICAgICAgICAgICAgICAgIHRvdGFsIHNpemUgb2YgdGhlIGZpbGVzIGluIHRoZSBpbWFnZSBpbiBLYnl0ZXMsIHRoZQotICAgICAgICAgICAgICAgIG5hbWUtdmFsdWUgcGFpcnMgYXJlIHZhcmlhYmxlcyB0aGF0IG1heSBoYXZlIGluZmx1ZW5jZWQgdGhlCi0gICAgICAgICAgICAgICAgY29udGVudCBvZiB0aGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiBpcyBvZnRlbiB1c2VmdWwgd2hlbiB5b3UgYXJlIHRyeWluZyB0byBkZXRlcm1pbmUKLSAgICAgICAgICAgICAgICB3aHkgYSBjaGFuZ2UgaW4gdGhlIHBhY2thZ2Ugb3IgZmlsZSBsaXN0aW5ncyBoYXMgb2NjdXJyZWQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctYnVpbGQtaGlzdG9yeS10by1nYXRoZXItaW1hZ2UtaW5mb3JtYXRpb24tb25seSc+Ci0gICAgICAgICAgICA8dGl0bGU+VXNpbmcgQnVpbGQgSGlzdG9yeSB0byBHYXRoZXIgSW1hZ2UgSW5mb3JtYXRpb24gT25seTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIHlvdSBjYW4gc2VlLCBidWlsZCBoaXN0b3J5IHByb2R1Y2VzIGltYWdlIGluZm9ybWF0aW9uLAotICAgICAgICAgICAgICAgIGluY2x1ZGluZyBkZXBlbmRlbmN5IGdyYXBocywgc28geW91IGNhbiBzZWUgd2h5IHNvbWV0aGluZwotICAgICAgICAgICAgICAgIHdhcyBwdWxsZWQgaW50byB0aGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgSWYgeW91IGFyZSBqdXN0IGludGVyZXN0ZWQgaW4gdGhpcyBpbmZvcm1hdGlvbiBhbmQgbm90Ci0gICAgICAgICAgICAgICAgaW50ZXJlc3RlZCBpbiBjb2xsZWN0aW5nIHNwZWNpZmljIHBhY2thZ2Ugb3IgU0RLIGluZm9ybWF0aW9uLAotICAgICAgICAgICAgICAgIHlvdSBjYW4gZW5hYmxlIHdyaXRpbmcgb25seSBpbWFnZSBpbmZvcm1hdGlvbiB3aXRob3V0Ci0gICAgICAgICAgICAgICAgYW55IGhpc3RvcnkgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8geW91cgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElOSEVSSVQgKz0gImJ1aWxkaGlzdG9yeSIKLSAgICAgQlVJTERISVNUT1JZX0NPTU1JVCA9ICIwIgotICAgICBCVUlMREhJU1RPUllfRkVBVFVSRVMgPSAiaW1hZ2UiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIEhlcmUsIHlvdSBzZXQgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxESElTVE9SWV9GRUFUVVJFUyc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHVzZSB0aGUgaW1hZ2UgZmVhdHVyZSBvbmx5LgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkLWhpc3Rvcnktc2RrLWluZm9ybWF0aW9uJz4KLSAgICAgICAgICAgIDx0aXRsZT5CdWlsZCBIaXN0b3J5IFNESyBJbmZvcm1hdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEJ1aWxkIGhpc3RvcnkgY29sbGVjdHMgc2ltaWxhciBpbmZvcm1hdGlvbiBvbiB0aGUgY29udGVudHMKLSAgICAgICAgICAgICAgICBvZiBTREtzCi0gICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmJpdGJha2UgLWMgcG9wdWxhdGVfc2RrIGltYWdlbmFtZTwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgIGFzIGNvbXBhcmVkIHRvIGluZm9ybWF0aW9uIGl0IGNvbGxlY3RzIGZvciBpbWFnZXMuCi0gICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoaXMgaW5mb3JtYXRpb24gZGlmZmVycyBkZXBlbmRpbmcgb24gd2hldGhlciBhbgotICAgICAgICAgICAgICAgIGV4dGVuc2libGUgb3Igc3RhbmRhcmQgU0RLIGlzIGJlaW5nIHByb2R1Y2VkLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIGZpbGVzIHByb2R1Y2VkIGZvciBTREtzOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZmlsZXMtaW4tc2RrLnR4dDo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGZpbGVzIGluIHRoZSBTREsgd2l0aCBwZXJtaXNzaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyLCBncm91cCwgc2l6ZSwgYW5kIHN5bWxpbmsgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxpc3QgaW5jbHVkZXMgYm90aCB0aGUgaG9zdCBhbmQgdGFyZ2V0IHBhcnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgU0RLLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+c2RrLWluZm8udHh0OjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIHRleHQgZmlsZSBjb250YWluaW5nIG5hbWUtdmFsdWUgcGFpcnMgd2l0aCBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQgdGhlIFNESy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgZm9sbG93aW5nIGxpc3RpbmcgZXhhbXBsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnNzdGF0ZS10YXNrLXNpemVzLnR4dDo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgQSB0ZXh0IGZpbGUgY29udGFpbmluZyBuYW1lLXZhbHVlIHBhaXJzIHdpdGggaW5mb3JtYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIGFib3V0IHRhc2sgZ3JvdXAgc2l6ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4gdGFza3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgYSB0b3RhbCBzaXplKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c3N0YXRlLXRhc2stc2l6ZXMudHh0PC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RzIG9ubHkgd2hlbiBhbiBleHRlbnNpYmxlIFNESyBpcyBjcmVhdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+c3N0YXRlLXBhY2thZ2Utc2l6ZXMudHh0OjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIHRleHQgZmlsZSBjb250YWluaW5nIG5hbWUtdmFsdWUgcGFpcnMgd2l0aCBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBzaGFyZWQtc3RhdGUgcGFja2FnZXMgYW5kIHNpemVzIGluIHRoZSBTREsuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnNzdGF0ZS1wYWNrYWdlLXNpemVzLnR4dDwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBvbmx5IHdoZW4gYW4gZXh0ZW5zaWJsZSBTREsgaXMgY3JlYXRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnNkay1maWxlczo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgQSBmb2xkZXIgdGhhdCBjb250YWlucyBjb3BpZXMgb2YgdGhlIGZpbGVzIG1lbnRpb25lZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxESElTVE9SWV9TREtfRklMRVM8L2ZpbGVuYW1lPiBpZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGFyZSBwcmVzZW50IGluIHRoZSBvdXRwdXQuCi0gICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERISVNUT1JZX1NES19GSUxFUzwvZmlsZW5hbWU+IGlzIHNwZWNpZmljCi0gICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZXh0ZW5zaWJsZSBTREsgYWx0aG91Z2ggeW91IGNhbiBzZXQgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudGx5IGlmIHlvdSB3b3VsZCBsaWtlIHRvIHB1bGwgaW4gc3BlY2lmaWMgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIHN0YW5kYXJkIFNESy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZGVmYXVsdCBmaWxlcyBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2F1dG8uY29uZjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9ja2VkLXNpZ3MuaW5jPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvZGV2dG9vbC5jb25mPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBmb3IgYW4gZXh0ZW5zaWJsZSBTREssIHRoZXNlIGZpbGVzIGdldCBjb3BpZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGludG8gdGhlIDxmaWxlbmFtZT5zZGstZmlsZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXBwZWFycyB1bmRlcgotICAgICAgICAgICAgICAgICAgICAgICAgZWFjaCBvZiB0aGUgPGZpbGVuYW1lPmhvc3Q8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT50YXJnZXQ8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBwb3J0aW9ucyBvZiB0aGUgU0RLIHRoYXQgcnVuIG9uIHRoZSBob3N0IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIHRhcmdldCwgcmVzcGVjdGl2ZWx5OgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWxlcyBmb3IgdGhlIG1vc3QgcGFydCBhcmUgZW1wdHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHByb2R1Y2luZyBhbiBleHRlbnNpYmxlIFNESyBiZWNhdXNlIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIG9mIFNESyBpcyBub3QgY29uc3RydWN0ZWQgZnJvbSBwYWNrYWdlcyBhcyBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdGFuZGFyZCBTREsuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZGVwZW5kcy5kb3Q6PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kZW5jeSBncmFwaCBmb3IgdGhlIFNESyB0aGF0IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCA8ZmlsZW5hbWU+Z3JhcGh2aXo8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5pbnN0YWxsZWQtcGFja2FnZS1uYW1lcy50eHQ6PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGluc3RhbGxlZCBwYWNrYWdlcyBieSBuYW1lIG9ubHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2Utc2l6ZXMudHh0OjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBpbnN0YWxsZWQgcGFja2FnZXMgb3JkZXJlZCBieSBzaXplLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmluc3RhbGxlZC1wYWNrYWdlcy50eHQ6PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGluc3RhbGxlZCBwYWNrYWdlcyB3aXRoIGZ1bGwgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIDxmaWxlbmFtZT5zZGstaW5mby50eHQ8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIERJU1RSTyA9IHBva3kKLSAgICAgRElTVFJPX1ZFUlNJT04gPSAxLjMrc25hcHNob3QtMjAxMzAzMjcKLSAgICAgU0RLX05BTUUgPSBwb2t5LWdsaWJjLWk2ODYtYXJtCi0gICAgIFNES19WRVJTSU9OID0gMS4zK3NuYXBzaG90Ci0gICAgIFNES01BQ0hJTkUgPQotICAgICBTREtJTUFHRV9GRUFUVVJFUyA9IGRldi1wa2dzIGRiZy1wa2dzCi0gICAgIEJBRF9SRUNPTU1FTkRBVElPTlMgPQotICAgICBTREtTSVpFID0gMzUyNzEyCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIE90aGVyIHRoYW4gPGZpbGVuYW1lPlNES1NJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlCi0gICAgICAgICAgICAgICAgdG90YWwgc2l6ZSBvZiB0aGUgZmlsZXMgaW4gdGhlIFNESyBpbiBLYnl0ZXMsIHRoZQotICAgICAgICAgICAgICAgIG5hbWUtdmFsdWUgcGFpcnMgYXJlIHZhcmlhYmxlcyB0aGF0IG1pZ2h0IGhhdmUgaW5mbHVlbmNlZCB0aGUKLSAgICAgICAgICAgICAgICBjb250ZW50IG9mIHRoZSBTREsuCi0gICAgICAgICAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiBpcyBvZnRlbiB1c2VmdWwgd2hlbiB5b3UgYXJlIHRyeWluZyB0bwotICAgICAgICAgICAgICAgIGRldGVybWluZSB3aHkgYSBjaGFuZ2UgaW4gdGhlIHBhY2thZ2Ugb3IgZmlsZSBsaXN0aW5ncwotICAgICAgICAgICAgICAgIGhhcyBvY2N1cnJlZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdleGFtaW5pbmctYnVpbGQtaGlzdG9yeS1pbmZvcm1hdGlvbic+Ci0gICAgICAgICAgICA8dGl0bGU+RXhhbWluaW5nIEJ1aWxkIEhpc3RvcnkgSW5mb3JtYXRpb248L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGV4YW1pbmUgYnVpbGQgaGlzdG9yeSBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZCBsaW5lIG9yCi0gICAgICAgICAgICAgICAgZnJvbSBhIHdlYiBpbnRlcmZhY2UuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIHNlZSBhbnkgY2hhbmdlcyB0aGF0IGhhdmUgb2NjdXJyZWQgKGFzc3VtaW5nIHlvdSBoYXZlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxESElTVE9SWV9DT01NSVQnPjxmaWxlbmFtZT5CVUlMREhJU1RPUllfQ09NTUlUID0gIjEiPC9maWxlbmFtZT48L2xpbms+KSwKLSAgICAgICAgICAgICAgICB5b3UgY2FuIHNpbXBseQotICAgICAgICAgICAgICAgIHVzZSBhbnkgR2l0IGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIHZpZXcgdGhlIGhpc3Rvcnkgb2YKLSAgICAgICAgICAgICAgICBhIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBvbmUgbWV0aG9kOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgICQgZ2l0IGxvZyAtcAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byByZWFsaXplLCBob3dldmVyLCB0aGF0IHRoaXMgbWV0aG9kIGRvZXMgc2hvdwotICAgICAgICAgICAgICAgIGNoYW5nZXMgdGhhdCBhcmUgbm90IHNpZ25pZmljYW50IChlLmcuIGEgcGFja2FnZSdzIHNpemUKLSAgICAgICAgICAgICAgICBjaGFuZ2luZyBieSBhIGZldyBieXRlcykuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEEgY29tbWFuZC1saW5lIHRvb2wgY2FsbGVkIDxmaWxlbmFtZT5idWlsZGhpc3RvcnktZGlmZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgZG9lcyBleGlzdCwgdGhvdWdoLCB0aGF0IHF1ZXJpZXMgdGhlIEdpdCByZXBvc2l0b3J5IGFuZCBwcmludHMganVzdAotICAgICAgICAgICAgICAgIHRoZSBkaWZmZXJlbmNlcyB0aGF0IG1pZ2h0IGJlIHNpZ25pZmljYW50IGluIGh1bWFuLXJlYWRhYmxlIGZvcm0uCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB+L3Bva3kvcG9reS9zY3JpcHRzL2J1aWxkaGlzdG9yeS1kaWZmIC4gSEVBRF4KLSAgICAgQ2hhbmdlcyB0byBpbWFnZXMvcWVtdXg4Nl82NC9nbGliYy9jb3JlLWltYWdlLW1pbmltYWwgKGZpbGVzLWluLWltYWdlLnR4dCk6Ci0gICAgICAgIC9ldGMvYW5vdGhlcnBrZy5jb25mIHdhcyBhZGRlZAotICAgICAgICAvc2Jpbi9hbm90aGVycGtnIHdhcyBhZGRlZAotICAgICAgICAqIChpbnN0YWxsZWQtcGFja2FnZS1uYW1lcy50eHQpOgotICAgICAgICAqICAgYW5vdGhlcnBrZyB3YXMgYWRkZWQKLSAgICAgQ2hhbmdlcyB0byBpbWFnZXMvcWVtdXg4Nl82NC9nbGliYy9jb3JlLWltYWdlLW1pbmltYWwgKGluc3RhbGxlZC1wYWNrYWdlLW5hbWVzLnR4dCk6Ci0gICAgICAgIGFub3RoZXJwa2cgd2FzIGFkZGVkCi0gICAgIHBhY2thZ2VzL3FlbXV4ODZfNjQtcG9reS1saW51eC92ODZkOiBQQUNLQUdFUzogYWRkZWQgInY4NmQtZXh0cmFzIgotICAgICAgICAqIFBSIGNoYW5nZWQgZnJvbSAicjAiIHRvICJyMSIKLSAgICAgICAgKiBQViBjaGFuZ2VkIGZyb20gIjAuMS4xMCIgdG8gIjAuMS4xMiIKLSAgICAgcGFja2FnZXMvcWVtdXg4Nl82NC1wb2t5LWxpbnV4L3Y4NmQvdjg2ZDogUEtHU0laRSBjaGFuZ2VkIGZyb20gMTEwNTc5IHRvIDE0NDM4MSAoKzMwJSkKLSAgICAgICAgKiBQUiBjaGFuZ2VkIGZyb20gInIwIiB0byAicjEiCi0gICAgICAgICogUFYgY2hhbmdlZCBmcm9tICIwLjEuMTAiIHRvICIwLjEuMTIiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS1kaWZmPC9maWxlbmFtZT4gdG9vbCByZXF1aXJlcwotICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPkdpdFB5dGhvbjwvZmlsZW5hbWU+IHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gaW5zdGFsbCBpdCB1c2luZyBQaXAzIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICQgcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiAtLXVzZXIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGluc3RhbGwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbjMtZ2l0PC9maWxlbmFtZT4gdXNpbmcgdGhlIGFwcHJvcHJpYXRlCi0gICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBwYWNrYWdlIG1hbmFnZXIgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFwdC1nZXQ8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmRuZjwvZmlsZW5hbWU+LCBvcgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+emlwcGVyPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gc2VlIGNoYW5nZXMgdG8gdGhlIGJ1aWxkIGhpc3RvcnkgdXNpbmcgYSB3ZWIgaW50ZXJmYWNlLCBmb2xsb3cKLSAgICAgICAgICAgICAgICB0aGUgaW5zdHJ1Y3Rpb24gaW4gdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGhlcmUuCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvYnVpbGRoaXN0b3J5LXdlYi8nPjwvdWxpbms+LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGEgc2FtcGxlIHNjcmVlbnNob3Qgb2YgdGhlIGludGVyZmFjZToKLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYnVpbGRoaXN0b3J5LXdlYi5wbmciIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiB3aWR0aD0iMTMwJSIgY29udGVudGRlcHRoPSIxMzAlIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nc3BlZWRpbmctdXAtdGhlLWJ1aWxkJz4KLSAgICA8dGl0bGU+U3BlZWRpbmcgVXAgdGhlIEJ1aWxkPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBCdWlsZCB0aW1lIGNhbiBiZSBhbiBpc3N1ZS4KLSAgICAgICAgQnkgZGVmYXVsdCwgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHNpbXBsZSBjb250cm9scyB0byB0cnkgYW5kIG1heGltaXplCi0gICAgICAgIGJ1aWxkIGVmZmljaWVuY3kuCi0gICAgICAgIEluIGdlbmVyYWwsIHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciBhbGwgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMKLSAgICAgICAgcmVzdWx0IGluIHRoZSBtb3N0IGVmZmljaWVudCBidWlsZCB0aW1lcyB3aGVuIGRlYWxpbmcgd2l0aCBzaW5nbGUKLSAgICAgICAgc29ja2V0IHN5c3RlbXMgKGkuZS4gYSBzaW5nbGUgQ1BVKS4KLSAgICAgICAgSWYgeW91IGhhdmUgbXVsdGlwbGUgQ1BVcywgeW91IG1pZ2h0IHRyeSBpbmNyZWFzaW5nIHRoZSBkZWZhdWx0Ci0gICAgICAgIHZhbHVlcyB0byBnYWluIG1vcmUgc3BlZWQuCi0gICAgICAgIFNlZSB0aGUgZGVzY3JpcHRpb25zIGluIHRoZSBnbG9zc2FyeSBmb3IgZWFjaCB2YXJpYWJsZSBmb3IgbW9yZQotICAgICAgICBpbmZvcm1hdGlvbjoKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfTlVNQkVSX1RIUkVBRFMnPjxmaWxlbmFtZT5CQl9OVU1CRVJfVEhSRUFEUzwvZmlsZW5hbWU+OjwvbGluaz4KLSAgICAgICAgICAgICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcyBCaXRCYWtlIHNpbXVsdGFuZW91c2x5IGV4ZWN1dGVzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX05VTUJFUl9QQVJTRV9USFJFQURTJz48ZmlsZW5hbWU+QkJfTlVNQkVSX1BBUlNFX1RIUkVBRFM8L2ZpbGVuYW1lPjo8L3VsaW5rPgotICAgICAgICAgICAgICAgIFRoZSBudW1iZXIgb2YgdGhyZWFkcyBCaXRCYWtlIHVzZXMgZHVyaW5nIHBhcnNpbmcuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBUkFMTEVMX01BS0UnPjxmaWxlbmFtZT5QQVJBTExFTF9NQUtFPC9maWxlbmFtZT46PC9saW5rPgotICAgICAgICAgICAgICAgIEV4dHJhIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICBkdXJpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBpbiBvcmRlciB0byBzcGVjaWZ5IHBhcmFsbGVsIGNvbXBpbGF0aW9uIG9uIHRoZQotICAgICAgICAgICAgICAgIGxvY2FsIGJ1aWxkIGhvc3QuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBUkFMTEVMX01BS0VJTlNUJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRUlOU1Q8L2ZpbGVuYW1lPjo8L2xpbms+Ci0gICAgICAgICAgICAgICAgRXh0cmEgb3B0aW9ucyBwYXNzZWQgdG8gdGhlIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgIGR1cmluZyB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0YXNrIGluIG9yZGVyIHRvIHNwZWNpZnkgcGFyYWxsZWwgaW5zdGFsbGF0aW9uIG9uIHRoZQotICAgICAgICAgICAgICAgIGxvY2FsIGJ1aWxkIGhvc3QuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICBBcyBtZW50aW9uZWQsIHRoZXNlIHZhcmlhYmxlcyBhbGwgc2NhbGUgdG8gdGhlIG51bWJlciBvZiBwcm9jZXNzb3IKLSAgICAgICAgY29yZXMgYXZhaWxhYmxlIG9uIHRoZSBidWlsZCBzeXN0ZW0uCi0gICAgICAgIEZvciBzaW5nbGUgc29ja2V0IHN5c3RlbXMsIHRoaXMgYXV0by1zY2FsaW5nIGVuc3VyZXMgdGhhdCB0aGUgYnVpbGQKLSAgICAgICAgc3lzdGVtIGZ1bmRhbWVudGFsbHkgdGFrZXMgYWR2YW50YWdlIG9mIHBvdGVudGlhbCBwYXJhbGxlbCBvcGVyYXRpb25zCi0gICAgICAgIGR1cmluZyB0aGUgYnVpbGQgYmFzZWQgb24gdGhlIGJ1aWxkIG1hY2hpbmUncyBjYXBhYmlsaXRpZXMuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvbGxvd2luZyBhcmUgYWRkaXRpb25hbCBmYWN0b3JzIHRoYXQgY2FuIGFmZmVjdCBidWlsZCBzcGVlZDoKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBGaWxlIHN5c3RlbSB0eXBlOgotICAgICAgICAgICAgICAgIFRoZSBmaWxlIHN5c3RlbSB0eXBlIHRoYXQgdGhlIGJ1aWxkIGlzIGJlaW5nIHBlcmZvcm1lZCBvbiBjYW4KLSAgICAgICAgICAgICAgICBhbHNvIGluZmx1ZW5jZSBwZXJmb3JtYW5jZS4KLSAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+ZXh0NDwvZmlsZW5hbWU+IGlzIHJlY29tbWVuZGVkIGFzIGNvbXBhcmVkCi0gICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPmV4dDI8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmV4dDM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGR1ZSB0byA8ZmlsZW5hbWU+ZXh0NDwvZmlsZW5hbWU+IGltcHJvdmVkIGZlYXR1cmVzCi0gICAgICAgICAgICAgICAgc3VjaCBhcyBleHRlbnRzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIERpc2FibGluZyB0aGUgdXBkYXRpbmcgb2YgYWNjZXNzIHRpbWUgdXNpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9hdGltZTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bm9hdGltZTwvZmlsZW5hbWU+IG1vdW50IG9wdGlvbiBwcmV2ZW50cyB0aGUKLSAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gZnJvbSB1cGRhdGluZyBmaWxlIGFuZCBkaXJlY3RvcnkgYWNjZXNzIHRpbWVzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIFNldHRpbmcgYSBsb25nZXIgY29tbWl0OgotICAgICAgICAgICAgICAgIFVzaW5nIHRoZSAiY29tbWl0PSIgbW91bnQgb3B0aW9uIGluY3JlYXNlcyB0aGUgaW50ZXJ2YWwKLSAgICAgICAgICAgICAgICBpbiBzZWNvbmRzIGJldHdlZW4gZGlzayBjYWNoZSB3cml0ZXMuCi0gICAgICAgICAgICAgICAgQ2hhbmdpbmcgdGhpcyBpbnRlcnZhbCBmcm9tIHRoZSBmaXZlIHNlY29uZCBkZWZhdWx0IHRvCi0gICAgICAgICAgICAgICAgc29tZXRoaW5nIGxvbmdlciBpbmNyZWFzZXMgdGhlIHJpc2sgb2YgZGF0YSBsb3NzIGJ1dCBkZWNyZWFzZXMKLSAgICAgICAgICAgICAgICB0aGUgbmVlZCB0byB3cml0ZSB0byB0aGUgZGlzaywgdGh1cyBpbmNyZWFzaW5nIHRoZSBidWlsZAotICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIENob29zaW5nIHRoZSBwYWNrYWdpbmcgYmFja2VuZDoKLSAgICAgICAgICAgICAgICBPZiB0aGUgYXZhaWxhYmxlIHBhY2thZ2luZyBiYWNrZW5kcywgSVBLIGlzIHRoZSBmYXN0ZXN0LgotICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgc2VsZWN0aW5nIGEgc2luZ3VsYXIgcGFja2FnaW5nIGJhY2tlbmQgYWxzbwotICAgICAgICAgICAgICAgIGhlbHBzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIFVzaW5nIDxmaWxlbmFtZT50bXBmczwvZmlsZW5hbWU+IGZvcgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBhcyBhIHRlbXBvcmFyeSBmaWxlIHN5c3RlbToKLSAgICAgICAgICAgICAgICBXaGlsZSB0aGlzIGNhbiBoZWxwIHNwZWVkIHVwIHRoZSBidWlsZCwgdGhlIGJlbmVmaXRzIGFyZQotICAgICAgICAgICAgICAgIGxpbWl0ZWQgZHVlIHRvIHRoZSBjb21waWxlciB1c2luZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tcGlwZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gZ29lcyB0byBzb21lIGxlbmd0aHMgdG8gYXZvaWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3luYygpPC9maWxlbmFtZT4gY2FsbHMgaW50byB0aGUKLSAgICAgICAgICAgICAgICBmaWxlIHN5c3RlbSBvbiB0aGUgcHJpbmNpcGxlIHRoYXQgaWYgdGhlcmUgd2FzIGEgc2lnbmlmaWNhbnQKLSAgICAgICAgICAgICAgICBmYWlsdXJlLCB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgICAgICBjb250ZW50cyBjb3VsZCBlYXNpbHkgYmUgcmVidWlsdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBJbmhlcml0aW5nIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXJtLXdvcmsnPjxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgY2xhc3M6Ci0gICAgICAgICAgICAgICAgSW5oZXJpdGluZyB0aGlzIGNsYXNzIGhhcyBzaG93biB0byBzcGVlZCB1cCBidWlsZHMgZHVlIHRvCi0gICAgICAgICAgICAgICAgc2lnbmlmaWNhbnRseSBsb3dlciBhbW91bnRzIG9mIGRhdGEgc3RvcmVkIGluIHRoZSBkYXRhCi0gICAgICAgICAgICAgICAgY2FjaGUgYXMgd2VsbCBhcyBvbiBkaXNrLgotICAgICAgICAgICAgICAgIEluaGVyaXRpbmcgdGhpcyBjbGFzcyBhbHNvIG1ha2VzIGNsZWFudXAgb2YKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgZmFzdGVyLCBhdCB0aGUgZXhwZW5zZSBvZiBiZWluZyBlYXNpbHkgYWJsZSB0byBkaXZlIGludG8gdGhlCi0gICAgICAgICAgICAgICAgc291cmNlIGNvZGUuCi0gICAgICAgICAgICAgICAgRmlsZSBzeXN0ZW0gbWFpbnRhaW5lcnMgaGF2ZSByZWNvbW1lbmRlZCB0aGF0IHRoZSBmYXN0ZXN0IHdheQotICAgICAgICAgICAgICAgIHRvIGNsZWFuIHVwIGxhcmdlIG51bWJlcnMgb2YgZmlsZXMgaXMgdG8gcmVmb3JtYXQgcGFydGl0aW9ucwotICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGRlbGV0ZSBmaWxlcyBkdWUgdG8gdGhlIGxpbmVhciBuYXR1cmUgb2YgcGFydGl0aW9ucy4KLSAgICAgICAgICAgICAgICBUaGlzLCBvZiBjb3Vyc2UsIGFzc3VtZXMgeW91IHN0cnVjdHVyZSB0aGUgZGlzayBwYXJ0aXRpb25zIGFuZAotICAgICAgICAgICAgICAgIGZpbGUgc3lzdGVtcyBpbiBhIHdheSB0aGF0IHRoaXMgaXMgcHJhY3RpY2FsLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgQXNpZGUgZnJvbSB0aGUgcHJldmlvdXMgbGlzdCwgeW91IHNob3VsZCBrZWVwIHNvbWUgdHJhZGUgb2ZmcyBpbgotICAgICAgICBtaW5kIHRoYXQgY2FuIGhlbHAgeW91IHNwZWVkIHVwIHRoZSBidWlsZDoKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBSZW1vdmUgaXRlbXMgZnJvbQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0aGF0IHlvdSBtaWdodCBub3QgbmVlZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBFeGNsdWRlIGRlYnVnIHN5bWJvbHMgYW5kIG90aGVyIGRlYnVnIGluZm9ybWF0aW9uOgotICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgbmVlZCB0aGVzZSBzeW1ib2xzIGFuZCBvdGhlciBkZWJ1ZyBpbmZvcm1hdGlvbiwKLSAgICAgICAgICAgICAgICBkaXNhYmxpbmcgdGhlIDxmaWxlbmFtZT4qLWRiZzwvZmlsZW5hbWU+IHBhY2thZ2UgZ2VuZXJhdGlvbgotICAgICAgICAgICAgICAgIGNhbiBzcGVlZCB1cCB0aGUgYnVpbGQuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBkaXNhYmxlIHRoaXMgZ2VuZXJhdGlvbiBieSBzZXR0aW5nIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQnPjxmaWxlbmFtZT5JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQ8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiMSIuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgRGlzYWJsZSBzdGF0aWMgbGlicmFyeSBnZW5lcmF0aW9uIGZvciByZWNpcGVzIGRlcml2ZWQgZnJvbQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT5saWJ0b29sPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gZGlzYWJsZSBzdGF0aWMKLSAgICAgICAgICAgICAgICBsaWJyYXJpZXMgYW5kIHN0aWxsIHByb3ZpZGUgYW4gb3ZlcnJpZGUgdG8gaGFuZGxlIGV4Y2VwdGlvbnM6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTVEFUSUNMSUJDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMiCi0gICAgIFNUQVRJQ0xJQkNPTkZfc3FsaXRlMy1uYXRpdmUgPSAiIgotICAgICBFWFRSQV9PRUNPTkYgKz0gIiR7U1RBVElDTElCQ09ORn0iCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSByZWNpcGVzIG5lZWQgc3RhdGljIGxpYnJhcmllcyBpbiBvcmRlciB0byB3b3JrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdGx5IChlLmcuIDxmaWxlbmFtZT5wc2V1ZG8tbmF0aXZlPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkcyA8ZmlsZW5hbWU+c3FsaXRlMy1uYXRpdmU8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGVzLCBhcyBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgYWNjb3VudCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSBraW5kcyBvZiBleGNlcHRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcGFja2FnZXMgaGF2ZSBwYWNrYWdpbmcgY29kZSB0aGF0IGFzc3VtZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VuY2Ugb2YgdGhlIHN0YXRpYyBsaWJyYXJpZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgc28sIHlvdSBtaWdodCBuZWVkIHRvIGV4Y2x1ZGUgdGhlbSBhcyB3ZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotPC9jaGFwdGVyPgotPCEtLQotdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAotLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL2ZpZ3VyZXMvc2RrLWF1dG90b29scy1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstYXV0b3Rvb2xzLWZsb3cucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNjY4NWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL2ZpZ3VyZXMvc2RrLWF1dG90b29scy1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtYWRkLWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLWFkZC1mbG93LnBuZwppbmRleCA5ODVhYzMzLi5lN2Q2MTczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtYWRkLWZsb3cucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC1hZGQtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLW1vZGlmeS1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC1tb2RpZnktZmxvdy5wbmcKaW5kZXggZmQ2ODRmZi4uMThiYThiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLW1vZGlmeS1mbG93LnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcKaW5kZXggNjU0NzRkYS4uN2Q0ZjM5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1tYWtlZmlsZS1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstbWFrZWZpbGUtZmxvdy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNjYjQxOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstbWFrZWZpbGUtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmcueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmcueG1sCmluZGV4IDU4NzUyNmYuLjViNTZlNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1jdXN0b21pemluZy54bWwKQEAgLTM4Nyw4ICszODcsOSBAQAogICAgICAgICBoYXZlIHNldCA8ZmlsZW5hbWU+U0RLX0VYVF9UWVBFPC9maWxlbmFtZT4gdG8KICAgICAgICAgIm1pbmltYWwiLCB3aGljaCBieSBkZWZhdWx0LCBleGNsdWRlcyB0aGUgdG9vbGNoYWluLgogICAgICAgICBBbHNvLCBpdCBpcyBoZWxwZnVsIGlmIHlvdSBhcmUgYnVpbGRpbmcgYSBzbWFsbCBTREsgZm9yIHVzZSB3aXRoCi0gICAgICAgIGFuIElERSwgc3VjaCBhcyBFY2xpcHNlLCBvciBzb21lIG90aGVyIHRvb2wgd2hlcmUgeW91IGRvIG5vdCB3YW50Ci0gICAgICAgIHRvIHRha2UgZXh0cmEgc3RlcHMgdG8gaW5zdGFsbCBhIHRvb2xjaGFpbi4KKyAgICAgICAgYW4gSURFLCBzdWNoIGFzIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+LCBvciBzb21lCisgICAgICAgIG90aGVyIHRvb2wgd2hlcmUgeW91IGRvIG5vdCB3YW50IHRvIHRha2UgZXh0cmEgc3RlcHMgdG8gaW5zdGFsbCBhCisgICAgICAgIHRvb2xjaGFpbi4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiA8L2FwcGVuZGl4PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtbWFycy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1tYXJzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ4MGY2NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1tYXJzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDkxNiArMCwwIEBACi08IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCi0iaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgotWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgotCi08YXBwZW5kaXggaWQ9J3Nkay1hcHBlbmRpeC1sYXRlc3QteXAtZWNsaXBzZS1wbHVnLWluJz4KLSAgICA8dGl0bGU+VXNpbmcgRWNsaXBzZSBNYXJzPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGlzIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgYm90aCB0aGUgTmVvbiBhbmQgTWFycwotICAgICAgICB2ZXJzaW9ucyBvZiB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgIFRoaXMgYXBwZW5kaXggcHJlc2VudHMgaW5mb3JtYXRpb24gdGhhdCBkZXNjcmliZXMgaG93IHRvIG9idGFpbiBhbmQKLSAgICAgICAgY29uZmlndXJlIHRoZSBNYXJzIHZlcnNpb24gb2YgRWNsaXBzZS4KLSAgICAgICAgSXQgYWxzbyBwcm92aWRlcyBhIGJhc2ljIHByb2plY3QgZXhhbXBsZSB0aGF0IHlvdSBjYW4gd29yayB0aHJvdWdoCi0gICAgICAgIGZyb20gc3RhcnQgdG8gZmluaXNoLgotICAgICAgICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgRWNsaXBzZSBJREUgYW5kIHRoZSBZb2N0bwotICAgICAgICBQcm9qZWN0IEVjbGlwc2UgUGx1Zy1Jbiwgc2VlIHRoZQotICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWVjbGlwc2UtcHJvamVjdCc+RGV2ZWxvcGluZyBBcHBsaWNhdGlvbnMgVXNpbmcgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz48L2xpbms+IgotICAgICAgICBDaGFwdGVyLgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSdtYXJzLXNldHRpbmctdXAtdGhlLWVjbGlwc2UtaWRlJz4KLSAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdGhlIE1hcnMgVmVyc2lvbiBvZiB0aGUgRWNsaXBzZSBJREU8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gZGV2ZWxvcCB3aXRoaW4gdGhlIEVjbGlwc2UgSURFLCB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbnN0YWxsIHRoZSBNYXJzIHZlcnNpb24gb2YgdGhlIEVjbGlwc2UKLSAgICAgICAgICAgICAgICAgICAgSURFLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Db25maWd1cmUgdGhlIEVjbGlwc2UgSURFLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW5zdGFsbCB0aGUgRWNsaXBzZSBZb2N0byBQbHVnLWluLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q29uZmlndXJlIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIERvIG5vdCBpbnN0YWxsIEVjbGlwc2UgZnJvbSB5b3VyIGRpc3RyaWJ1dGlvbidzIHBhY2thZ2UKLSAgICAgICAgICAgICAgICByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gaW5zdGFsbCBFY2xpcHNlIGZyb20gdGhlIG9mZmljaWFsIEVjbGlwc2UKLSAgICAgICAgICAgICAgICBkb3dubG9hZCBzaXRlIGFzIGRpcmVjdGVkIGluIHRoZSBuZXh0IHNlY3Rpb24uCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nbWFycy1pbnN0YWxsaW5nLWVjbGlwc2UtaWRlJz4KLSAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIHRoZSBNYXJzIEVjbGlwc2UgSURFPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGxvY2F0ZSwgaW5zdGFsbCwgYW5kIGNvbmZpZ3VyZQotICAgICAgICAgICAgICAgIE1hcnMgRWNsaXBzZToKLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TG9jYXRlIHRoZSBNYXJzIERvd25sb2FkOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPcGVuIGEgYnJvd3NlciBhbmQgZ28gdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbWFycy8nPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbWFycy88L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRvd25sb2FkIHRoZSBUYXJiYWxsOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgIkRvd25sb2FkIiBidXR0b24gYW5kIHRoZW4gdXNlIHRoZSAiTGludXgKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBFY2xpcHNlIElERSBmb3IgQysrIERldmVsb3BlcnMiCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBmb3IgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2Rvd25sb2Fkcy9kb3dubG9hZC5waHA/ZmlsZT0vdGVjaG5vbG9neS9lcHAvZG93bmxvYWRzL3JlbGVhc2UvbWFycy8yL2VjbGlwc2UtY3BwLW1hcnMtMi1saW51eC1ndGsteDg2XzY0LnRhci5neic+NjQtYml0IHVuZGVyIExpbnV4IGZvciBFY2xpcHNlIElERSBmb3IgQysrIERldmVsb3BlcnM8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0gaXMgYSBMaW51eCA2NC1iaXQgbWFjaGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVucGFjayB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgTW92ZSB0byBhIGNsZWFuIGRpcmVjdG9yeSBhbmQgdW5wYWNrIHRoZSB0YXJiYWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4KLSAgICAgJCB0YXIgLXh6dmYgfi9Eb3dubG9hZHMvZWNsaXBzZS1jcHAtbWFycy0yLWxpbnV4LWd0ay14ODZfNjQudGFyLmd6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBFdmVyeXRoaW5nIHVucGFja3MgaW50byBhIGZvbGRlciBuYW1lZCAiRWNsaXBzZSIuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5MYXVuY2ggRWNsaXBzZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgRG91YmxlIGNsaWNrIHRoZSAiRWNsaXBzZSIgZmlsZSBpbiB0aGUgZm9sZGVyIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXVuY2ggRWNsaXBzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBleHBlcmllbmNlIGEgTnVsbFBvaW50ZXIgRXhjZXB0aW9uIGFmdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF1bmNoIEVjbGlwc2Ugb3IgdGhlIGRlYnVnZ2VyIGZyb20gd2l0aGluIEVjbGlwc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IGFkZGluZyB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8geW91ciA8ZmlsZW5hbWU+ZWNsaXBzZS5pbmk8L2ZpbGVuYW1lPiBmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tlZCB0aGUgRWNsaXBzZSB0YXIgZmlsZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIC0tbGF1bmNoZXIuR1RLX3ZlcnNpb24KLSAgICAgMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGV4cG9ydCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1dUX0dUSzwvZmlsZW5hbWU+IHZhcmlhYmxlIGluIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbCBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBleHBvcnQgU1dUX0dUSzM9MAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J21hcnMtY29uZmlndXJpbmctdGhlLW1hcnMtZWNsaXBzZS1pZGUnPgotICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBNYXJzIEVjbGlwc2UgSURFPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNvbmZpZ3VyZSB0aGUgTWFycyBFY2xpcHNlIElERS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIGhvdyB5b3UgaW5zdGFsbGVkIEVjbGlwc2UgYW5kIHdoYXQgeW91IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBkb25lLCBzb21lIG9mIHRoZSBvcHRpb25zIHdpbGwgbm90IGFwcGVhci4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNhbm5vdCBmaW5kIGFuIG9wdGlvbiBhcyBkaXJlY3RlZCBieSB0aGUgbWFudWFsLAotICAgICAgICAgICAgICAgICAgICBpdCBoYXMgYWxyZWFkeSBiZWVuIGluc3RhbGxlZC4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QmUgc3VyZSBFY2xpcHNlIGlzIHJ1bm5pbmcgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIGluIHlvdXIgd29ya2JlbmNoLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgIkluc3RhbGwgTmV3IFNvZnR3YXJlIiBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgIkhlbHAiIHB1bGwtZG93biBtZW51LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICJNYXJzIC0gaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL3JlbGVhc2VzL21hcnMiCi0gICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSAiV29yayB3aXRoOiIgcHVsbC1kb3duIG1lbnUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkV4cGFuZCB0aGUgYm94IG5leHQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICJMaW51eCBUb29scyIgYW5kIHNlbGVjdCAiQy9DKysgUmVtb3RlCi0gICAgICAgICAgICAgICAgICAgICAgICAoT3ZlciBUQ0YvVEUpIFJ1bi9EZWJ1ZyBMYXVuY2hlciIgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAiVE0gVGVybWluYWwiLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBhbmQgdGhlIGJveCBuZXh0IHRvICJNb2JpbGUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2UgRGV2ZWxvcG1lbnQiIGFuZCBzZWxlY3QgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgICAgICAgICAgYm94ZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEMvQysrIFJlbW90ZSAoT3ZlciBUQ0YvVEUpIFJ1bi9EZWJ1ZyBMYXVuY2hlcgotICAgICBSZW1vdGUgU3lzdGVtIEV4cGxvcmVyIFVzZXIgQWN0aW9ucwotICAgICBUTSBUZXJtaW5hbAotICAgICBUQ0YgUmVtb3RlIFN5c3RlbSBFeHBsb3JlciBhZGQtaW4KLSAgICAgVENGIFRhcmdldCBFeHBsb3JlcgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBhbmQgdGhlIGJveCBuZXh0IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzIiBhbmQgc2VsZWN0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGJveGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBDL0MrKyBBdXRvdG9vbHMgU3VwcG9ydAotICAgICBDL0MrKyBEZXZlbG9wbWVudCBUb29scyBTREsKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIGJ5IGNsaWNraW5nIHRocm91Z2gKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlICJOZXh0IiBhbmQgIkZpbmlzaCIgYnV0dG9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nbWFycy1pbnN0YWxsaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPgotICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgb3IgQWNjZXNzaW5nIHRoZSBNYXJzIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gaW5zdGFsbCB0aGUgRWNsaXBzZSBZb2N0byBQbHVnLWluIGludG8gdGhlIEVjbGlwc2UKLSAgICAgICAgICAgICAgICBJREUgb25lIG9mIHR3byB3YXlzOiAgdXNlIHRoZSBZb2N0byBQcm9qZWN0J3MgRWNsaXBzZQotICAgICAgICAgICAgICAgIFVwZGF0ZSBzaXRlIHRvIGluc3RhbGwgdGhlIHByZS1idWlsdCBwbHVnLWluIG9yIGJ1aWxkIGFuZAotICAgICAgICAgICAgICAgIGluc3RhbGwgdGhlIHBsdWctaW4gZnJvbSB0aGUgbGF0ZXN0IHNvdXJjZSBjb2RlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nbWFycy1uZXctc29mdHdhcmUnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIHRoZSBQcmUtYnVpbHQgUGx1Zy1pbiBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IEVjbGlwc2UgVXBkYXRlIFNpdGU8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRvIGluc3RhbGwgdGhlIE1hcnMgRWNsaXBzZSBZb2N0byBQbHVnLWluIGZyb20gdGhlIHVwZGF0ZQotICAgICAgICAgICAgICAgICAgICBzaXRlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6Ci0gICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TdGFydCB1cCB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW4gRWNsaXBzZSwgc2VsZWN0ICJJbnN0YWxsIE5ldwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlIiBmcm9tIHRoZSAiSGVscCIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiQWRkLi4uIiBpbiB0aGUgIldvcmsgd2l0aDoiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkVudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZFQ0xJUFNFX0RMX1BMVUdJTl9VUkw7L21hcnM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBVUkwgZmllbGQgYW5kIHByb3ZpZGUgYSBtZWFuaW5nZnVsIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgIk5hbWUiIGZpZWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJPSyIgdG8gaGF2ZSB0aGUgZW50cnkgYWRkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgIldvcmsgd2l0aDoiIGRyb3AtZG93biBsaXN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCB0aGUgZW50cnkgZm9yIHRoZSBwbHVnLWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgIldvcmsgd2l0aDoiIGRyb3AtZG93biBsaXN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNoZWNrIHRoZSBib3hlcyBuZXh0IHRvIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBZb2N0byBQcm9qZWN0IFNESyBQbHVnLWluCi0gICAgIFlvY3RvIFByb2plY3QgRG9jdW1lbnRhdGlvbiBwbHVnLWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNvbXBsZXRlIHRoZSByZW1haW5pbmcgc29mdHdhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gc3RlcHMgYW5kIHRoZW4gcmVzdGFydCB0aGUgRWNsaXBzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElERSB0byBmaW5pc2ggdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgcGx1Zy1pbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjbGljayAiT0siIHdoZW4gcHJvbXB0ZWQgYWJvdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGluZyBzb2Z0d2FyZSB0aGF0IGNvbnRhaW5zIHVuc2lnbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J21hcnMtemlwLWZpbGUtbWV0aG9kJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgUGx1Zy1pbiBVc2luZyB0aGUgTGF0ZXN0IFNvdXJjZSBDb2RlPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUbyBpbnN0YWxsIHRoZSBNYXJzIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBmcm9tIHRoZSBsYXRlc3QKLSAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUsIGZvbGxvdyB0aGVzZSBzdGVwczoKLSAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkJlIHN1cmUgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgSkRLIDEuNysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5pbnN0YWxsIFgxMS1yZWxhdGVkIHBhY2thZ2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCB4YXV0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbiBhIG5ldyB0ZXJtaW5hbCBzaGVsbCwgY3JlYXRlIGEgR2l0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSB3aXRoOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+Ci0gICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2VjbGlwc2UtcG9reQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Vc2UgR2l0IHRvIGNoZWNrb3V0IHRoZSBjb3JyZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+L2VjbGlwc2UtcG9reQotICAgICAkIGdpdCBjaGVja291dCBtYXJzL3lvY3RvLSZESVNUUk87Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcHV0cyB5b3UgaW4gYSBkZXRhY2hlZCBIRUFEIHN0YXRlLCB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZpbmUgc2luY2UgeW91IGFyZSBvbmx5IGdvaW5nIHRvIGJlIGJ1aWxkaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBkZXZlbG9waW5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNoYW5nZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHdpdGhpbiB0aGUgR2l0IHJlcG9zaXRvcnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIHNjcmlwdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2V0IHVwIHRoZSBsb2NhbCBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHJ1bm5pbmcgdGhlIHNldHVwIHNjcmlwdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgLi9zZXR1cC5zaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBzY3JpcHQgZmluaXNoZXMgZXhlY3V0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IHByb21wdHMgeW91IHdpdGggaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBydW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmJ1aWxkLnNoPC9maWxlbmFtZT4gc2NyaXB0LCB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFsc28gaW4gdGhlIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIEdpdCByZXBvc2l0b3J5IGNyZWF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXJsaWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJ1biB0aGUgPGZpbGVuYW1lPmJ1aWxkLnNoPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQgYXMgZGlyZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBwcm92aWRlIHRoZSB0YWcgbmFtZSwgZG9jdW1lbnRhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCwgYW5kIGEgcmVsZWFzZSBuYW1lLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgRUNMSVBTRV9IT01FPS9ob21lL3Njb3R0cmlmL2VjbGlwc2UtcG9reS9zY3JpcHRzL2VjbGlwc2UgLi9idWlsZC5zaCAtbCBtYXJzL3lvY3RvLSZESVNUUk87IG1hc3RlciB5b2N0by0mRElTVFJPOyAyPiZhbXA7MSB8IHRlZSBidWlsZC5sb2cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgY29tbWFuZCBhZGRzIHRoZSB0YWcgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZCBmb3IgPGZpbGVuYW1lPm1hcnMveW9jdG8tJkRJU1RSTzs8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5IRUFEPC9maWxlbmFtZT4sIHRoZW4gdGVsbHMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc2NyaXB0IHRvIHVzZSB0aGUgbG9jYWwgKC1sKSBHaXQgY2hlY2tvdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIHNjcmlwdCwgdGhlIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3JnLnlvY3RvLnNkay08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5yZWxlYXNlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmRhdGU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4tYXJjaGl2ZS56aXA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiBuZWNlc3NhcnksIHN0YXJ0IHRoZSBFY2xpcHNlIElERQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBiZSBzdXJlIHlvdSBhcmUgaW4gdGhlIFdvcmtiZW5jaC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgIkluc3RhbGwgTmV3IFNvZnR3YXJlIiBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlICJIZWxwIiBwdWxsLWRvd24gbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiQWRkIi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Qcm92aWRlIGFueXRoaW5nIHlvdSB3YW50IGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYW1lIiBmaWVsZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiQXJjaGl2ZSIgYW5kIGJyb3dzZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBaSVAgZmlsZSB5b3UgYnVpbHQgZWFybGllci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIFpJUCBmaWxlIHNob3VsZCBub3QgYmUgInVuemlwcGVkIiwgYW5kIG11c3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSB0aGUgPGZpbGVuYW1lPiphcmNoaXZlLnppcDwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGJ5IHJ1bm5pbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkLnNoPC9maWxlbmFtZT4gc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrIHRoZSAiT0siIGJ1dHRvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DaGVjayB0aGUgYm94ZXMgdGhhdCBhcHBlYXIgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5zdGFsbGF0aW9uIHdpbmRvdyB0byBpbnN0YWxsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFlvY3RvIFByb2plY3QgU0RLIFBsdWctaW4KLSAgICAgWW9jdG8gUHJvamVjdCBEb2N1bWVudGF0aW9uIHBsdWctaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmluaXNoIHRoZSBpbnN0YWxsYXRpb24gYnkgY2xpY2tpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZSBhcHByb3ByaWF0ZSBidXR0b25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2xpY2sgIk9LIiB3aGVuIHByb21wdGVkIGFib3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGluZyBzb2Z0d2FyZSB0aGF0IGNvbnRhaW5zIHVuc2lnbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SZXN0YXJ0IHRoZSBFY2xpcHNlIElERSBpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gY29uZmlndXJlIHRoZQotICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIFlvY3RvIFBsdWctaW4gYXMgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFycy1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgTWFycyBFY2xpcHNlIFlvY3RvIFBsdWctaW48L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdtYXJzLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPgotICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBNYXJzIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIENvbmZpZ3VyaW5nIHRoZSBNYXJzIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBpbnZvbHZlcyBzZXR0aW5nIHRoZQotICAgICAgICAgICAgICAgIENyb3NzIENvbXBpbGVyIG9wdGlvbnMgYW5kIHRoZSBUYXJnZXQgb3B0aW9ucy4KLSAgICAgICAgICAgICAgICBUaGUgY29uZmlndXJhdGlvbnMgeW91IGNob29zZSBiZWNvbWUgdGhlIGRlZmF1bHQgc2V0dGluZ3MKLSAgICAgICAgICAgICAgICBmb3IgYWxsIHByb2plY3RzLgotICAgICAgICAgICAgICAgIFlvdSBkbyBoYXZlIG9wcG9ydHVuaXRpZXMgdG8gY2hhbmdlIHRoZW0gbGF0ZXIgd2hlbgotICAgICAgICAgICAgICAgIHlvdSBjb25maWd1cmUgdGhlIHByb2plY3QgKHNlZSB0aGUgZm9sbG93aW5nIHNlY3Rpb24pLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUbyBzdGFydCwgeW91IG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZyBmcm9tIHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICBFY2xpcHNlIElERToKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2hvb3NlICJQcmVmZXJlbmNlcyIgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICJXaW5kb3ciIG1lbnUgdG8gZGlzcGxheSB0aGUgUHJlZmVyZW5jZXMgRGlhbG9nLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiWW9jdG8gUHJvamVjdCBTREsiIHRvIGRpc3BsYXkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIHNjcmVlbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3ViLXNlY3Rpb25zIGRlc2NyaWJlIGhvdyB0byBjb25maWd1cmUgdGhlCi0gICAgICAgICAgICAgICAgdGhlIHBsdWctaW4uCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRocm91Z2hvdXQgdGhlIGRlc2NyaXB0aW9ucywgYSBzdGFydC10by1maW5pc2ggZXhhbXBsZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgcHJlcGFyaW5nIGEgUUVNVSBpbWFnZSBmb3IgdXNlIHdpdGggRWNsaXBzZSBpcyByZWZlcmVuY2VkCi0gICAgICAgICAgICAgICAgICAgIGFzIHRoZSAid2lraSIgYW5kIGlzIGxpbmtlZCB0byB0aGUgZXhhbXBsZSBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPiBDb29rYm9vayBndWlkZSB0byBNYWtpbmcgYW4gRWNsaXBzZSBEZWJ1ZyBDYXBhYmxlIEltYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J21hcnMtY29uZmlndXJpbmctdGhlLWNyb3NzLWNvbXBpbGVyLW9wdGlvbnMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgQ3Jvc3MtQ29tcGlsZXIgT3B0aW9uczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQ3Jvc3MgQ29tcGlsZXIgb3B0aW9ucyBlbmFibGUgRWNsaXBzZSB0byB1c2UgeW91ciBzcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICBjcm9zcyBjb21waWxlciB0b29sY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgIFRvIGNvbmZpZ3VyZSB0aGVzZSBvcHRpb25zLCB5b3UgbXVzdCBzZWxlY3QKLSAgICAgICAgICAgICAgICAgICAgdGhlIHR5cGUgb2YgdG9vbGNoYWluLCBwb2ludCB0byB0aGUgdG9vbGNoYWluLCBzcGVjaWZ5Ci0gICAgICAgICAgICAgICAgICAgIHRoZSBzeXNyb290IGxvY2F0aW9uLCBhbmQgc2VsZWN0IHRoZSB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TZWxlY3RpbmcgdGhlIFRvb2xjaGFpbiBUeXBlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIGJldHdlZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U3RhbmRhbG9uZSBwcmUtYnVpbHQgdG9vbGNoYWluPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgc3lzdGVtIGRlcml2ZWQgdG9vbGNoYWluPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgQ3Jvc3MgQ29tcGlsZXIgT3B0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlN0YW5kYWxvbmUgUHJlLWJ1aWx0IFRvb2xjaGFpbjo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgdHlwZSB3aGVuIHlvdSBhcmUgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHN0YW5kLWFsb25lIGNyb3NzLXRvb2xjaGFpbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgYXJlIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gZGV2ZWxvcGVyIGFuZCBkbyBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGJ1aWxkIGEgdGFyZ2V0IGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIHlvdSBqdXN0IHdhbnQgdG8gdXNlIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRvb2xjaGFpbiBvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGV4aXN0aW5nIGtlcm5lbCBhbmQgdGFyZ2V0IHJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB5b3UgaGF2ZSBkb3dubG9hZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGluc3RhbGxlZCBhIHByZS1idWlsdCB0b29sY2hhaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYW4gZXhpc3RpbmcgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIFN5c3RlbSBEZXJpdmVkIFRvb2xjaGFpbjo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgdHlwZSBpZiB5b3UgYnVpbHQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluIGFzIHBhcnQgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBzZWxlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgc3lzdGVtIGRlcml2ZWQgdG9vbGNoYWluPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGFyZSB1c2luZyB0aGUgdG9vbGNoYWluIGJ1aWx0IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgaW5zaWRlIHRoZSBCdWlsZCBEaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGNyZWF0ZWQgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRhYmxlIGltYWdlIHVzaW5nIHRoZSBzdGVwcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCB5b3Ugd291bGQgc2VsZWN0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNwZWNpZnkgdGhlIFRvb2xjaGFpbiBSb290IExvY2F0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBhIHN0YW5kLWFsb25lIHByZS1idWlsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiwgeW91IHNob3VsZCBiZSBwb2ludGluZyB0byB3aGVyZSBpdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCAoZS5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vb3B0L3Bva3kvJkRJU1RSTzs8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstaW5zdGFsbGluZy10aGUtc2RrJz5JbnN0YWxsaW5nIHRoZSBTREs8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGUgU0RLIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIHVzaW5nIGEgYnVpbGQgc3lzdGVtIGRlcml2ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4sIHRoZSBwYXRoIHlvdSBwcm92aWRlIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VG9vbGNoYWluIFJvb3QgTG9jYXRpb248L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkIGlzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHdoaWNoIHlvdSBydW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIChlLmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZDwvZmlsZW5hbWU+KS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNwZWNpZnkgU3lzcm9vdCBMb2NhdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbG9jYXRpb24gaXMgd2hlcmUgdGhlIHJvb3QgZmlsZXN5c3RlbSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGhhcmR3YXJlIHJlc2lkZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgbG9jYXRpb24gZGVwZW5kcyBvbiB3aGVyZSB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5IGV4dHJhY3RlZCBhbmQgaW5zdGFsbGVkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCBmaWxlc3lzdGVtIHdoZW4geW91IGVpdGhlciBidWlsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IG9yIGRvd25sb2FkZWQgaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkb3dubG9hZGVkIHRoZSByb290IGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUgcmF0aGVyIHRoYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgaXQsIHlvdSBtdXN0IGRvd25sb2FkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2F0by1zZGs8L2ZpbGVuYW1lPiBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBidWlsZCBhbnkgYy9jKysgcHJvamVjdHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHN1cHBvc2UgeW91IHByZXBhcmVkIGFuIGltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIHN0ZXBzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgc28sIHRoZSA8ZmlsZW5hbWU+TVlfUUVNVV9ST09URlM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHlvdSB3b3VsZCBicm93c2UgdG8gYW5kIHNlbGVjdCB0aGF0IGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT4vaG9tZS9zY290dHJpZi9idWlsZC9NWV9RRU1VX1JPT1RGUzwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGluc3RhbGwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluIGFuZCBvbiBob3cgdG8gZXh0cmFjdCBhbmQgaW5zdGFsbCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNyb290IGZpbGVzeXN0ZW0sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNlbGVjdCB0aGUgVGFyZ2V0IEFyY2hpdGVjdHVyZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHRoZSB0eXBlIG9mIGhhcmR3YXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGFyZSBnb2luZyB0byB1c2Ugb3IgZW11bGF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIHB1bGwtZG93bgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UYXJnZXQgQXJjaGl0ZWN0dXJlPC9maWxlbmFtZT4gbWVudQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIG1ha2UgeW91ciBzZWxlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHB1bGwtZG93biBtZW51IHNob3VsZCBoYXZlIHRoZSBzdXBwb3J0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBhcmNoaXRlY3R1cmUgeW91IG5lZWQgaXMgbm90IGxpc3RlZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtZW51LCB5b3Ugd2lsbCBuZWVkIHRvIGJ1aWxkIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcXMtYnVpbGRpbmctaW1hZ2VzJz5CdWlsZGluZyBJbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0IGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdtYXJzLWNvbmZpZ3VyaW5nLXRoZS10YXJnZXQtb3B0aW9ucyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBUYXJnZXQgT3B0aW9uczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjaG9vc2UgdG8gZW11bGF0ZSBoYXJkd2FyZSB1c2luZyB0aGUgUUVNVQotICAgICAgICAgICAgICAgICAgICBlbXVsYXRvciwgb3IgeW91IGNhbiBjaG9vc2UgdG8gcnVuIHlvdXIgaW1hZ2Ugb24gYWN0dWFsCi0gICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5RRU1VOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3aWxsIGJlIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUgZW11bGF0b3IuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyB0aGUgZW11bGF0b3IsIHlvdSBhbHNvIG5lZWQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGUgdGhlIGtlcm5lbCBhbmQgc3BlY2lmeSBhbnkgY3VzdG9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHNlbGVjdGVkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGtlcm5lbCB5b3UgYnVpbHQgd2lsbCBiZSBsb2NhdGVkIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBzdXBwb3NlIHlvdSBwZXJmb3JtZWQgdGhlIHN0ZXBzIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPndpa2k8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBzcGVjaWZ5IHlvdXIgQnVpbGQgRGlyZWN0b3J5IHBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgaW1hZ2UgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2L2J6SW1hZ2UtcWVtdXg4Ni5iaW48L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBzZWxlY3RlZCB0aGUgc3RhbmRhbG9uZSBwcmUtYnVpbHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4sIHRoZSBwcmUtYnVpbHQgaW1hZ2UgeW91IGRvd25sb2FkZWQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZSBkaXJlY3RvcnkgeW91IHNwZWNpZmllZCB3aGVuIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkZWQgdGhlIGltYWdlLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Nb3N0IGN1c3RvbSBvcHRpb25zIGFyZSBmb3IgYWR2YW5jZWQgUUVNVQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJzIHRvIGZ1cnRoZXIgY3VzdG9taXplIHRoZWlyIFFFTVUgaW5zdGFuY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2Ugb3B0aW9ucyBhcmUgc3BlY2lmaWVkIGJldHdlZW4gcGFpcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVkIGJyYWNrZXRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgb3B0aW9ucyBtdXN0IGJlIHNwZWNpZmllZCBvdXRzaWRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYWNrZXRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHRoZSBvcHRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlcmlhbDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub2dyYXBoaWM8L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmt2bTwvZmlsZW5hbWU+IG11c3QgYWxsIGJlIG91dHNpZGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhY2tldHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+bWFuIHFlbXU8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2V0IGhlbHAgb24gYWxsIHRoZSBvcHRpb25zIGFuZCB0aGVpciB1c2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgIHNlcmlhbCDigJgmbHQ7LW0gMjU2IC1mdWxsLXNjcmVlbiZndDvigJkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgdGhlIG1vZGUsIFN5c3Jvb3QgaXMgYWxyZWFkeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYXMgcGFydCBvZiB0aGUgQ3Jvc3MtQ29tcGlsZXIgT3B0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlN5c3Jvb3QgTG9jYXRpb246PC9maWxlbmFtZT4gZmllbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkV4dGVybmFsIEhXOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3aWxsIGJlIHVzaW5nIGFjdHVhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJBcHBseSIgYW5kICJPSyIgdG8gc2F2ZSB5b3VyIHBsdWctaW4KLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J21hcnMtY3JlYXRpbmctdGhlLXByb2plY3QnPgotICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgdGhlIFByb2plY3Q8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgdHdvIHR5cGVzIG9mIHByb2plY3RzOiAgQXV0b3Rvb2xzLWJhc2VkLCBvcgotICAgICAgICAgICAgTWFrZWZpbGUtYmFzZWQuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBjcmVhdGUgQXV0b3Rvb2xzLWJhc2VkIHByb2plY3RzCi0gICAgICAgICAgICBmcm9tIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgTWFrZWZpbGUtYmFzZWQgcHJvamVjdHMgaW4gYQotICAgICAgICAgICAgdGVybWluYWwgd2luZG93LCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFrZWZpbGUtYmFzZWQtcHJvamVjdHMnPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBEbyBub3QgdXNlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBwcm9qZWN0IG5hbWVzCi0gICAgICAgICAgICAgICAgKGUuZy4gc3BhY2VzLCB1bmRlcnNjb3JlcywgZXRjLikuICBEb2luZyBzbyBjYW4KLSAgICAgICAgICAgICAgICBjYXVzZSBjb25maWd1cmF0aW9uIHRvIGZhaWwuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIGNyZWF0ZSBhIHByb2plY3QgYmFzZWQgb24gYSBZb2N0byB0ZW1wbGF0ZSBhbmQgdGhlbiBkaXNwbGF5Ci0gICAgICAgICAgICB0aGUgc291cmNlIGNvZGUsIGZvbGxvdyB0aGVzZSBzdGVwczoKLSAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2VsZWN0ICJDIFByb2plY3QiIGZyb20gdGhlICJGaWxlIC0+IE5ldyIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkV4cGFuZCA8ZmlsZW5hbWU+WW9jdG8gUHJvamVjdCBTREsgQXV0b3Rvb2xzIFByb2plY3Q8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCA8ZmlsZW5hbWU+SGVsbG8gV29ybGQgQU5TSSBDIEF1dG90b29scyBQcm9qZWN0czwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGFuIEF1dG90b29scy1iYXNlZCBwcm9qZWN0IGJhc2VkIG9uIGEgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QdXQgYSBuYW1lIGluIHRoZSA8ZmlsZW5hbWU+UHJvamVjdCBuYW1lOjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkLgotICAgICAgICAgICAgICAgICAgICBEbyBub3QgdXNlIGh5cGhlbnMgYXMgcGFydCBvZiB0aGUgbmFtZQotICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+aGVsbG88L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiTmV4dCIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BZGQgYXBwcm9wcmlhdGUgaW5mb3JtYXRpb24gaW4gdGhlIHZhcmlvdXMKLSAgICAgICAgICAgICAgICAgICAgZmllbGRzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgIkZpbmlzaCIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiB0aGUgIm9wZW4gcGVyc3BlY3RpdmUiIHByb21wdCBhcHBlYXJzLAotICAgICAgICAgICAgICAgICAgICBjbGljayAiWWVzIiBzbyB0aGF0IHlvdSBpbiB0aGUgQy9DKysgcGVyc3BlY3RpdmUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgbGVmdC1oYW5kIG5hdmlnYXRpb24gcGFuZSBzaG93cyB5b3VyCi0gICAgICAgICAgICAgICAgICAgIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGlzcGxheSB5b3VyIHNvdXJjZSBieSBkb3VibGUgY2xpY2tpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIHByb2plY3QncyBzb3VyY2UgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J21hcnMtY29uZmlndXJpbmctdGhlLWNyb3NzLXRvb2xjaGFpbnMnPgotICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIENyb3NzLVRvb2xjaGFpbnM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGVhcmxpZXIgc2VjdGlvbiwKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtYXJzLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBNYXJzIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iLAotICAgICAgICAgICAgc2V0cyB1cCB0aGUgZGVmYXVsdCBwcm9qZWN0IGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgWW91IGNhbiBvdmVycmlkZSB0aGVzZSBzZXR0aW5ncyBmb3IgYSBnaXZlbiBwcm9qZWN0IGJ5IGZvbGxvd2luZwotICAgICAgICAgICAgdGhlc2Ugc3RlcHM6Ci0gICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCAiWW9jdG8gUHJvamVjdCBTZXR0aW5ncyIgZnJvbQotICAgICAgICAgICAgICAgICAgICB0aGUgIlByb2plY3QgLT4gUHJvcGVydGllcyIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWxlY3Rpb24gYnJpbmdzIHVwIHRoZSBZb2N0byBQcm9qZWN0IFNldHRpbmdzCi0gICAgICAgICAgICAgICAgICAgIERpYWxvZyBhbmQgYWxsb3dzIHlvdSB0byBtYWtlIGNoYW5nZXMgc3BlY2lmaWMgdG8gYW4KLSAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbCBwcm9qZWN0LjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+QnkgZGVmYXVsdCwgdGhlIENyb3NzIENvbXBpbGVyIE9wdGlvbnMgYW5kIFRhcmdldAotICAgICAgICAgICAgICAgICAgICBPcHRpb25zIGZvciBhIHByb2plY3QgYXJlIGluaGVyaXRlZCBmcm9tIHNldHRpbmdzIHlvdQotICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCB1c2luZyB0aGUgUHJlZmVyZW5jZXMgRGlhbG9nIGFzIGRlc2NyaWJlZAotICAgICAgICAgICAgICAgICAgICBlYXJsaWVyIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFycy1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgTWFycyBFY2xpcHNlIFlvY3RvIFBsdWctaW48L2xpbms+IiBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBTZXR0aW5ncyBEaWFsb2cgYWxsb3dzIHlvdSB0byBvdmVycmlkZQotICAgICAgICAgICAgICAgICAgICB0aG9zZSBkZWZhdWx0IHNldHRpbmdzIGZvciBhIGdpdmVuIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5NYWtlIG9yIHZlcmlmeSB5b3VyIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgcHJvamVjdCBhbmQgY2xpY2sgIk9LIi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJpZ2h0LWNsaWNrIGluIHRoZSBuYXZpZ2F0aW9uIHBhbmUgYW5kCi0gICAgICAgICAgICAgICAgICAgIHNlbGVjdCAiUmVjb25maWd1cmUgUHJvamVjdCIgZnJvbSB0aGUgcG9wLXVwIG1lbnUuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgc2VsZWN0aW9uIHJlY29uZmlndXJlcyB0aGUgcHJvamVjdCBieSBydW5uaW5nCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvZ2VuLnNoPC9maWxlbmFtZT4gaW4gdGhlIHdvcmtzcGFjZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgeW91ciBwcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGFsc28gcnVucyA8ZmlsZW5hbWU+bGlidG9vbGl6ZTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YWNsb2NhbDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2NvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9oZWFkZXI8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9tYWtlIC0tYTwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi4vY29uZmlndXJlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIENsaWNrIG9uIHRoZSAiQ29uc29sZSIgdGFiIGJlbmVhdGggeW91ciBzb3VyY2UgY29kZSB0bwotICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIHJlc3VsdHMgb2YgcmVjb25maWd1cmluZyB5b3VyIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdtYXJzLWJ1aWxkaW5nLXRoZS1wcm9qZWN0Jz4KLSAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIHRoZSBQcm9qZWN0PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIGJ1aWxkIHRoZSBwcm9qZWN0IHNlbGVjdCAiQnVpbGQgQWxsIiBmcm9tIHRoZQotICAgICAgICAgICAgIlByb2plY3QiIG1lbnUuCi0gICAgICAgICAgICBUaGUgY29uc29sZSBzaG91bGQgdXBkYXRlIGFuZCB5b3UgY2FuIG5vdGUgdGhlIGNyb3NzLWNvbXBpbGVyCi0gICAgICAgICAgICB5b3UgYXJlIHVzaW5nLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyAiWW9jdG8gUHJvamVjdCBTREsgQXV0b3Rvb2xzIiBwcm9qZWN0cywgdGhlCi0gICAgICAgICAgICAgICAgRWNsaXBzZSBJREUgbWlnaHQgZGlzcGxheSBlcnJvciBtZXNzYWdlcyBmb3IKLSAgICAgICAgICAgICAgICBGdW5jdGlvbnMvU3ltYm9scy9UeXBlcyB0aGF0IGNhbm5vdCBiZSAicmVzb2x2ZWQiLCBldmVuIHdoZW4KLSAgICAgICAgICAgICAgICB0aGUgcmVsYXRlZCBpbmNsdWRlIGZpbGUgaXMgbGlzdGVkIGF0IHRoZSBwcm9qZWN0IG5hdmlnYXRvciBhbmQKLSAgICAgICAgICAgICAgICB3aGVuIHRoZSBwcm9qZWN0IGlzIGFibGUgdG8gYnVpbGQuCi0gICAgICAgICAgICAgICAgRm9yIHRoZXNlIGNhc2VzIG9ubHksIGl0IGlzIHJlY29tbWVuZGVkIHRvIGFkZCBhIG5ldyBsaW5rZWQKLSAgICAgICAgICAgICAgICBmb2xkZXIgdG8gdGhlIGFwcHJvcHJpYXRlIHN5c3Jvb3QuCi0gICAgICAgICAgICAgICAgVXNlIHRoZXNlIHN0ZXBzIHRvIGFkZCB0aGUgbGlua2VkIGZvbGRlcjoKLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkZvbGRlciIgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GaWxlID4gTmV3PC9maWxlbmFtZT4gbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgIk5ldyBGb2xkZXIiIERpYWxvZywgc2VsZWN0ICJMaW5rIHRvIGFsdGVybmF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gKGxpbmtlZCBmb2xkZXIpIi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiQnJvd3NlIiB0byBuYXZpZ2F0ZSB0byB0aGUgaW5jbHVkZSBmb2xkZXIgaW5zaWRlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBzeXNyb290IGxvY2F0aW9uIHNlbGVjdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJPSyIuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkZpbmlzaCIgdG8gc2F2ZSB0aGUgbGlua2VkIGZvbGRlci4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nbWFycy1zdGFydGluZy1xZW11LWluLXVzZXItc3BhY2UtbmZzLW1vZGUnPgotICAgICAgICA8dGl0bGU+U3RhcnRpbmcgUUVNVSBpbiBVc2VyLVNwYWNlIE5GUyBNb2RlPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIHN0YXJ0IHRoZSBRRU1VIGVtdWxhdG9yIGZyb20gd2l0aGluIEVjbGlwc2UsIGZvbGxvdyB0aGVzZQotICAgICAgICAgICAgc3RlcHM6Ci0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSc+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgotICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCi0gICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgUUVNVS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXhwb3NlIGFuZCBzZWxlY3QgIkV4dGVybmFsIFRvb2xzCi0gICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25zIC4uLiIgZnJvbSB0aGUgIlJ1biAtPiBFeHRlcm5hbCBUb29scyIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBMb2NhdGUgYW5kIHNlbGVjdCB5b3VyIGltYWdlIGluIHRoZSBuYXZpZ2F0aW9uIHBhbmVsIHRvCi0gICAgICAgICAgICAgICAgICAgIHRoZSBsZWZ0IChlLmcuIDxmaWxlbmFtZT5xZW11X2k1ODYtcG9reS1saW51eDwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBDbGljayAiUnVuIiB0byBsYXVuY2ggUUVNVS4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgaG9zdCBvbiB3aGljaCB5b3UgYXJlIHJ1bm5pbmcgUUVNVSBtdXN0IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+cnBjYmluZDwvZmlsZW5hbWU+IHV0aWxpdHkgcnVubmluZyB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgYWJsZSB0byBtYWtlIFJQQyBjYWxscyBvbiBhIHNlcnZlciBvbiB0aGF0IG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiBRRU1VIGRvZXMgbm90IGludm9rZSBhbmQgeW91IHJlY2VpdmUgZXJyb3IgbWVzc2FnZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGludm9sdmluZyA8ZmlsZW5hbWU+cnBjYmluZDwvZmlsZW5hbWU+LCBmb2xsb3cgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyB0byBnZXQgdGhlIHNlcnZpY2UgcnVubmluZy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIG9uIGEgbmV3IFVidW50dSAxNi4wNCBMVFMgaW5zdGFsbGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgZG8gdGhlIGZvbGxvd2luZyBpbiBvcmRlciB0byBnZXQgUUVNVSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgbGF1bmNoOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIHJwY2JpbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIGluc3RhbGxpbmcgPGZpbGVuYW1lPnJwY2JpbmQ8L2ZpbGVuYW1lPiwgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGVkaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0Yy9pbml0LmQvcnBjYmluZDwvZmlsZW5hbWU+IGZpbGUgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBPUFRJT05TPSItaSAtdyIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIG1vZGlmeWluZyB0aGUgZmlsZSwgeW91IG5lZWQgdG8gc3RhcnQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gc2VydmljZSBwb3J0bWFwIHJlc3RhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SWYgbmVlZGVkLCBlbnRlciB5b3VyIGhvc3Qgcm9vdCBwYXNzd29yZCBpbgotICAgICAgICAgICAgICAgICAgICB0aGUgc2hlbGwgd2luZG93IGF0IHRoZSBwcm9tcHQuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgc2V0cyB1cCBhIDxmaWxlbmFtZT5UYXAgMDwvZmlsZW5hbWU+IGNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgbmVlZGVkIGZvciBydW5uaW5nIGluIHVzZXItc3BhY2UgTkZTIG1vZGUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XYWl0IGZvciBRRU1VIHRvIGxhdW5jaC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk9uY2UgUUVNVSBsYXVuY2hlcywgeW91IGNhbiBiZWdpbiBvcGVyYXRpbmcKLSAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoYXQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgICAgICAgIE9uZSB1c2VmdWwgdGFzayBhdCB0aGlzIHBvaW50IHdvdWxkIGJlIHRvIGRldGVybWluZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgSVAgQWRkcmVzcyBmb3IgdGhlIHVzZXItc3BhY2UgTkZTIGJ5IHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aWZjb25maWc8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBUaGUgSVAgYWRkcmVzcyBvZiB0aGUgUUVNVSBtYWNoaW5lIGFwcGVhcnMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIHh0ZXJtIHdpbmRvdy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhpcyBhZGRyZXNzIHRvIGhlbHAgeW91IHNlZSB3aGljaCBwYXJ0aWN1bGFyCi0gICAgICAgICAgICAgICAgICAgIElQIGFkZHJlc3MgdGhlIGluc3RhbmNlIG9mIFFFTVUgaXMgdXNpbmcuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdtYXJzLWRlcGxveWluZy1hbmQtZGVidWdnaW5nLXRoZS1hcHBsaWNhdGlvbic+Ci0gICAgICAgIDx0aXRsZT5EZXBsb3lpbmcgYW5kIERlYnVnZ2luZyB0aGUgQXBwbGljYXRpb248L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgT25jZSB0aGUgUUVNVSBlbXVsYXRvciBpcyBydW5uaW5nIHRoZSBpbWFnZSwgeW91IGNhbiBkZXBsb3kKLSAgICAgICAgICAgIHlvdXIgYXBwbGljYXRpb24gdXNpbmcgdGhlIEVjbGlwc2UgSURFIGFuZCB0aGVuIHVzZQotICAgICAgICAgICAgdGhlIGVtdWxhdG9yIHRvIHBlcmZvcm0gZGVidWdnaW5nLgotICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGRlcGxveSB0aGUgYXBwbGljYXRpb24uCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBDdXJyZW50bHksIEVjbGlwc2UgZG9lcyBub3Qgc3VwcG9ydCBTU0ggcG9ydCBmb3J3YXJkaW5nLgotICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgeW91IG5lZWQgdG8gcnVuIG9yIGRlYnVnIGEgcmVtb3RlCi0gICAgICAgICAgICAgICAgYXBwbGljYXRpb24gdXNpbmcgdGhlIGhvc3QgZGlzcGxheSwgeW91IG11c3QgY3JlYXRlIGEKLSAgICAgICAgICAgICAgICB0dW5uZWxpbmcgY29ubmVjdGlvbiBmcm9tIG91dHNpZGUgRWNsaXBzZSBhbmQga2VlcAotICAgICAgICAgICAgICAgIHRoYXQgY29ubmVjdGlvbiBhbGl2ZSBkdXJpbmcgeW91ciB3b3JrLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiBhIG5ldyB0ZXJtaW5hbCwgcnVuIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNzaCAtWFkgPHJlcGxhY2VhYmxlPnVzZXJfbmFtZTwvcmVwbGFjZWFibGU+QDxyZXBsYWNlYWJsZT5yZW1vdGVfaG9zdF9pcDwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFVzaW5nIHRoZSBhYm92ZSBmb3JtLCBoZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNzaCAtWFkgcm9vdEAxOTIuMTY4LjcuMgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZSBjb21tYW5kLCBhZGQgdGhlIGNvbW1hbmQgdG8gYmUgZXhlY3V0ZWQKLSAgICAgICAgICAgICAgICBpbiBFY2xpcHNlJ3MgcnVuIGNvbmZpZ3VyYXRpb24gYmVmb3JlIHRoZSBhcHBsaWNhdGlvbgotICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBleHBvcnQgRElTUExBWT06MTAuMAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIG5vdCBkZXN0cm95IHRoZSBjb25uZWN0aW9uIGR1cmluZyB5b3VyIFFFTVUKLSAgICAgICAgICAgICAgICBzZXNzaW9uIChpLmUuIGRvIG5vdAotICAgICAgICAgICAgICAgIGV4aXQgb3V0IG9mIG9yIGNsb3NlIHRoYXQgc2hlbGwpLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgIkRlYnVnIENvbmZpZ3VyYXRpb25zLi4uIiBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAiUnVuIiBtZW51LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbiB0aGUgbGVmdCBhcmVhLCBleHBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkMvQysrUmVtb3RlIEFwcGxpY2F0aW9uPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Mb2NhdGUgeW91ciBwcm9qZWN0IGFuZCBzZWxlY3QgaXQgdG8gYnJpbmcKLSAgICAgICAgICAgICAgICAgICAgdXAgYSBuZXcgdGFiYmVkIHZpZXcgaW4gdGhlIERlYnVnIENvbmZpZ3VyYXRpb25zIERpYWxvZy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrIG9uIHRoZSAiRGVidWdnZXIiIHRhYiB0byBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2wgZGVidWdnZXIgeW91IGFyZSB1c2luZy4KLSAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBjaGFuZ2UgdG8gdGhlIGRlYnVnZ2VyIHBlcnNwZWN0aXZlIGluIEVjbGlwc2UuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayBvbiB0aGUgIk1haW4iIHRhYi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIHRoZSBRRU1VIGluc3RhbmNlCi0gICAgICAgICAgICAgICAgICAgIGJ5IGNsaWNraW5nIG9uICJuZXciLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgPGZpbGVuYW1lPlNTSDwvZmlsZW5hbWU+LCB3aGljaCBtZWFucwotICAgICAgICAgICAgICAgICAgICBTZWN1cmUgU29ja2V0IFNoZWxsLgotICAgICAgICAgICAgICAgICAgICBPcHRpb25hbGx5LCB5b3UgY2FuIHNlbGVjdCBhIFRDRiBjb25uZWN0aW9uIGluc3RlYWQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiTmV4dCIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGVhciBvdXQgdGhlICJDb25uZWN0aW9uIG5hbWUiIGZpZWxkIGFuZAotICAgICAgICAgICAgICAgICAgICBlbnRlciBhbnkgbmFtZSB5b3Ugd2FudCBmb3IgdGhlIGNvbm5lY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QdXQgdGhlIElQIGFkZHJlc3MgZm9yIHRoZSBjb25uZWN0aW9uIGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSAiSG9zdCIgZmllbGQuCi0gICAgICAgICAgICAgICAgICAgIEZvciBRRU1VLCB0aGUgZGVmYXVsdCBpcyA8ZmlsZW5hbWU+MTkyLjE2OC43LjI8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgYSBwcmV2aW91cyBRRU1VIHNlc3Npb24gZGlkIG5vdCBleGl0Ci0gICAgICAgICAgICAgICAgICAgIGNsZWFubHksIHRoZSBJUCBhZGRyZXNzIGluY3JlbWVudHMgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjE5Mi4xNjguNy4zPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgSVAgYWRkcmVzcyBmb3IgdGhlIGN1cnJlbnQgUUVNVQotICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiBieSBsb29raW5nIGluIHRoZSB4dGVybSB0aGF0IG9wZW5zIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBsYXVuY2ggUUVNVS4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RW50ZXIgPGZpbGVuYW1lPnJvb3Q8L2ZpbGVuYW1lPiwgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGRlZmF1bHQgZm9yIFFFTVUsIGZvciB0aGUgIlVzZXIiIGZpZWxkLgotICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGxlYXZlIHRoZSBwYXNzd29yZCBmaWVsZCBlbXB0eS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJGaW5pc2giIHRvIGNsb3NlIHRoZQotICAgICAgICAgICAgICAgICAgICBOZXcgQ29ubmVjdGlvbnMgRGlhbG9nLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SWYgbmVjZXNzYXJ5LCB1c2UgdGhlIGRyb3AtZG93biBtZW51IG5vdyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24iIGZpZWxkIGFuZCBwaWNrIHRoZSBJUCBBZGRyZXNzIHlvdSBlbnRlcmVkLgotICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFzc3VtaW5nIHlvdSBhcmUgY29ubmVjdGluZyBhcyB0aGUgcm9vdCB1c2VyLAotICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB0aGUgZGVmYXVsdCBmb3IgUUVNVSB4ODYtNjQgU0RLIGltYWdlcyBwcm92aWRlZCBieQotICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgaW4gdGhlICJSZW1vdGUgQWJzb2x1dGUgRmlsZSBQYXRoIGZvcgotICAgICAgICAgICAgICAgICAgICBDL0MrKyBBcHBsaWNhdGlvbiIgZmllbGQsIGJyb3dzZSB0bwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvcm9vdDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBZb3UgY291bGQgYWxzbyBicm93c2UgdG8gYW55IG90aGVyIHBhdGggeW91IGhhdmUgd3JpdGUKLSAgICAgICAgICAgICAgICAgICAgYWNjZXNzIHRvIG9uIHRoZSB0YXJnZXQgc3VjaCBhcwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9iaW48L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBsb2NhdGlvbiBpcyB3aGVyZSB5b3VyIGFwcGxpY2F0aW9uIHdpbGwgYmUgbG9jYXRlZCBvbgotICAgICAgICAgICAgICAgICAgICB0aGUgUUVNVSBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBmYWlsIHRvIGJyb3dzZSB0byBhbmQgc3BlY2lmeSBhbiBhcHByb3ByaWF0ZQotICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiwgUUVNVSB3aWxsIG5vdCB1bmRlcnN0YW5kIHdoYXQgdG8gcmVtb3RlbHkKLSAgICAgICAgICAgICAgICAgICAgbGF1bmNoLgotICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIGlzIGhlbHBmdWwgaW4gdGhhdCBpdCBhdXRvIGZpbGxzIHlvdXIgYXBwbGljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgbmFtZSBmb3IgeW91IGFzc3VtaW5nIHlvdSBicm93c2VkIHRvIGEgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwczwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBwcm9tcHRlZCB0byBwcm92aWRlIGEgdXNlcm5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRvIG9wdGlvbmFsbHkgc2V0IGEgcGFzc3dvcmQsIGJlIHN1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IHByb3ZpZGUgInJvb3QiIGFzIHRoZSB1c2VybmFtZSBhbmQgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYXZlIHRoZSBwYXNzd29yZCBmaWVsZCBibGFuay4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBicm93c2luZyB0byBhIGRpcmVjdG9yeSBmYWlscyBvciB0aW1lcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsIGJ1dCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPiBpbnRvIHlvdXIgUUVNVQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0YXJnZXQgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGFuZCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBwcm94aWVzIHNldCB1cCwgaXQgaXMgbGlrZWx5IHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBpcyBzZW5kaW5nIHRoZSBTU0ggdHJhZmZpYyB0byBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGVpdGhlciB1c2UgVENGICwgb3IgY2xpY2sgb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyZSBwcm94eSBzZXR0aW5ncyIgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gZGlhbG9nIGFuZCBhZGQgdGhlIHRhcmdldCBJUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzIHRvIHRoZSAiYnlwYXNzIHByb3h5IiBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbWlnaHQgYWxzbyBuZWVkIHRvIGNoYW5nZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWN0aXZlIFByb3ZpZGVyIiBmcm9tIE5hdGl2ZSB0byBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBjaGFuZ2UgdG8gdGhlICJEZWJ1ZyIgcGVyc3BlY3RpdmUgaW4gRWNsaXBzZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJEZWJ1ZyIKLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFjY2VwdCB0aGUgZGVidWcgcGVyc3BlY3RpdmUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdtYXJzLXVzaW5nLUxpbnV4dG9vbHMnPgotICAgICAgICA8dGl0bGU+VXNpbmcgTGludXh0b29sczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciBpbiB0aGUgbWFudWFsLCBwZXJmb3JtYW5jZSB0b29scyBleGlzdAotICAgICAgICAgICAgKExpbnV4dG9vbHMpIHRoYXQgZW5oYW5jZSB5b3VyIGRldmVsb3BtZW50IGV4cGVyaWVuY2UuCi0gICAgICAgICAgICBUaGVzZSB0b29scyBhcmUgYWlkcyBpbiBkZXZlbG9waW5nIGFuZCBkZWJ1Z2dpbmcgYXBwbGljYXRpb25zIGFuZAotICAgICAgICAgICAgaW1hZ2VzLgotICAgICAgICAgICAgWW91IGNhbiBydW4gdGhlc2UgdG9vbHMgZnJvbSB3aXRoaW4gdGhlIEVjbGlwc2UgSURFIHRocm91Z2ggdGhlCi0gICAgICAgICAgICAiTGludXh0b29scyIgbWVudS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb25maWd1cmUgYW5kIHVzZSB0aGVzZSB0b29scywgc2VlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpbnV4dG9vbHMvJz5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpbnV4dG9vbHMvPC91bGluaz4uCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci08L2FwcGVuZGl4PgotPCEtLQotdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAotLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1uZW9uLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW5lb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NDgwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1uZW9uLnhtbApAQCAtMCwwICsxLDkwNSBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKworPGFwcGVuZGl4IGlkPSdzZGstYXBwZW5kaXgtbmVvbi15cC1lY2xpcHNlLXBsdWctaW4nPgorICAgIDx0aXRsZT5Vc2luZyA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPiBOZW9uPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgYm90aCB0aGUgT3h5Z2VuIGFuZCBOZW9uCisgICAgICAgIHZlcnNpb25zIG9mIHRoZSBFY2xpcHNlIElERS4KKyAgICAgICAgVGhpcyBhcHBlbmRpeCBwcmVzZW50cyBpbmZvcm1hdGlvbiB0aGF0IGRlc2NyaWJlcyBob3cgdG8gb2J0YWluIGFuZAorICAgICAgICBjb25maWd1cmUgdGhlIE5lb24gdmVyc2lvbiBvZiBFY2xpcHNlLgorICAgICAgICBJdCBhbHNvIHByb3ZpZGVzIGEgYmFzaWMgcHJvamVjdCBleGFtcGxlIHRoYXQgeW91IGNhbiB3b3JrIHRocm91Z2gKKyAgICAgICAgZnJvbSBzdGFydCB0byBmaW5pc2guCisgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBFY2xpcHNlIElERSBhbmQgdGhlIFlvY3RvCisgICAgICAgIFByb2plY3QgRWNsaXBzZSBQbHVnLUluLCBzZWUgdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZWNsaXBzZS1wcm9qZWN0Jz5EZXZlbG9waW5nIEFwcGxpY2F0aW9ucyBVc2luZyA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPjwvbGluaz4iCisgICAgICAgIENoYXB0ZXIuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J25lb24tc2V0dGluZy11cC10aGUtZWNsaXBzZS1pZGUnPgorICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCB0aGUgTmVvbiBWZXJzaW9uIG9mIHRoZSBFY2xpcHNlIElERTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBkZXZlbG9wIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUsIHlvdSBuZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluc3RhbGwgdGhlIE5lb24gdmVyc2lvbiBvZiB0aGUgRWNsaXBzZQorICAgICAgICAgICAgICAgICAgICBJREUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNvbmZpZ3VyZSB0aGUgRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbnN0YWxsIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Db25maWd1cmUgdGhlIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRG8gbm90IGluc3RhbGwgRWNsaXBzZSBmcm9tIHlvdXIgZGlzdHJpYnV0aW9uJ3MgcGFja2FnZQorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBpbnN0YWxsIEVjbGlwc2UgZnJvbSB0aGUgb2ZmaWNpYWwgRWNsaXBzZQorICAgICAgICAgICAgICAgIGRvd25sb2FkIHNpdGUgYXMgZGlyZWN0ZWQgaW4gdGhlIG5leHQgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWluc3RhbGxpbmctZWNsaXBzZS1pZGUnPgorICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIE5lb24gRWNsaXBzZSBJREU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gbG9jYXRlLCBpbnN0YWxsLCBhbmQgY29uZmlndXJlCisgICAgICAgICAgICAgICAgTmVvbiBFY2xpcHNlOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Mb2NhdGUgdGhlIE5lb24gRG93bmxvYWQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW4gYSBicm93c2VyIGFuZCBnbyB0bworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5lY2xpcHNlLm9yZy9uZW9uLyc+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9uZW9uLzwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RG93bmxvYWQgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSAiRG93bmxvYWQiIGJ1dHRvbiBhbmQgdGhlbiB1c2UgdGhlICJFY2xpcHNlCisgICAgICAgICAgICAgICAgICAgICAgICBJREUgZm9yIEMvQysrIERldmVsb3BlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBmb3IgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5VbnBhY2sgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1vdmUgdG8gYSBjbGVhbiBkaXJlY3RvcnkgYW5kIHVucGFjayB0aGUgdGFyYmFsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+CisgICAgICQgdGFyIC14enZmIH4vRG93bmxvYWRzL2VjbGlwc2UtY3BwLW5lb24tMy1saW51eC1ndGsteDg2XzY0LnRhci5negorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB1bnBhY2tzIGludG8gYSBmb2xkZXIgbmFtZWQgIkVjbGlwc2UiLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGF1bmNoIEVjbGlwc2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgbGF1bmNoIEVjbGlwc2UgYXNzdW1pbmcgeW91CisgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tlZCBpdCBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vZWNsaXBzZQorICAgICAkIC4vZWNsaXBzZQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0IHRoZSBkZWZhdWx0ICJ3b3Jrc3BhY2UiIG9uY2UgRWNsaXBzZSBsYXVuY2hlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtbmVvbi1lY2xpcHNlLWlkZSc+CisgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBJREU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY29uZmlndXJlIHRoZSBOZW9uIEVjbGlwc2UgSURFLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gaG93IHlvdSBpbnN0YWxsZWQgRWNsaXBzZSBhbmQgd2hhdCB5b3UgaGF2ZQorICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGRvbmUsIHNvbWUgb2YgdGhlIG9wdGlvbnMgd2lsbCBub3QgYXBwZWFyLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgY2Fubm90IGZpbmQgYW4gb3B0aW9uIGFzIGRpcmVjdGVkIGJ5IHRoZSBtYW51YWwsCisgICAgICAgICAgICAgICAgICAgIGl0IGhhcyBhbHJlYWR5IGJlZW4gaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CZSBzdXJlIEVjbGlwc2UgaXMgcnVubmluZyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBhcmUgaW4geW91ciB3b3JrYmVuY2guCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCAiSW5zdGFsbCBOZXcgU29mdHdhcmUiIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiSGVscCIgcHVsbC1kb3duIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgIk5lb24gLSBodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvcmVsZWFzZXMvbmVvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlICJXb3JrIHdpdGg6IiBwdWxsLWRvd24gbWVudS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXhwYW5kIHRoZSBib3ggbmV4dCB0bworICAgICAgICAgICAgICAgICAgICAgICAgIkxpbnV4IFRvb2xzIiBhbmQgc2VsZWN0IHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEMvQysrIFJlbW90ZSAoT3ZlciBUQ0YvVEUpIFJ1bi9EZWJ1ZyBMYXVuY2hlcgorICAgICBUTSBUZXJtaW5hbAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBhbmQgdGhlIGJveCBuZXh0IHRvICJNb2JpbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2UgRGV2ZWxvcG1lbnQiIGFuZCBzZWxlY3QgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgYm94ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEMvQysrIFJlbW90ZSAoT3ZlciBUQ0YvVEUpIFJ1bi9EZWJ1ZyBMYXVuY2hlcgorICAgICBSZW1vdGUgU3lzdGVtIEV4cGxvcmVyIFVzZXIgQWN0aW9ucworICAgICBUTSBUZXJtaW5hbAorICAgICBUQ0YgUmVtb3RlIFN5c3RlbSBFeHBsb3JlciBhZGQtaW4KKyAgICAgVENGIFRhcmdldCBFeHBsb3JlcgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBhbmQgdGhlIGJveCBuZXh0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzIiBhbmQgc2VsZWN0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGJveDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQy9DKysgRGV2ZWxvcG1lbnQgVG9vbHMgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBieSBjbGlja2luZyB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSAiTmV4dCIgYW5kICJGaW5pc2giIGJ1dHRvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24taW5zdGFsbGluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz4KKyAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIG9yIEFjY2Vzc2luZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGluc3RhbGwgdGhlIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBpbnRvIHRoZSBFY2xpcHNlCisgICAgICAgICAgICAgICAgSURFIG9uZSBvZiB0d28gd2F5czogIHVzZSB0aGUgWW9jdG8gUHJvamVjdCdzIEVjbGlwc2UKKyAgICAgICAgICAgICAgICBVcGRhdGUgc2l0ZSB0byBpbnN0YWxsIHRoZSBwcmUtYnVpbHQgcGx1Zy1pbiBvciBidWlsZCBhbmQKKyAgICAgICAgICAgICAgICBpbnN0YWxsIHRoZSBwbHVnLWluIGZyb20gdGhlIGxhdGVzdCBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tbmV3LXNvZnR3YXJlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgUHJlLWJ1aWx0IFBsdWctaW4gZnJvbSB0aGUgWW9jdG8gUHJvamVjdCBFY2xpcHNlIFVwZGF0ZSBTaXRlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBpbnN0YWxsIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBmcm9tIHRoZSB1cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgc2l0ZSwgZm9sbG93IHRoZXNlIHN0ZXBzOgorICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U3RhcnQgdXAgdGhlIEVjbGlwc2UgSURFLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluIEVjbGlwc2UsIHNlbGVjdCAiSW5zdGFsbCBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZSIgZnJvbSB0aGUgIkhlbHAiIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgIkFkZC4uLiIgaW4gdGhlICJXb3JrIHdpdGg6IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FbnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mRUNMSVBTRV9ETF9QTFVHSU5fVVJMOy9uZW9uPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgVVJMIGZpZWxkIGFuZCBwcm92aWRlIGEgbWVhbmluZ2Z1bCBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlICJOYW1lIiBmaWVsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiT0siIHRvIGhhdmUgdGhlIGVudHJ5IGFkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlICJXb3JrIHdpdGg6IiBkcm9wLWRvd24gbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgdGhlIGVudHJ5IGZvciB0aGUgcGx1Zy1pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlICJXb3JrIHdpdGg6IiBkcm9wLWRvd24gbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DaGVjayB0aGUgYm94ZXMgbmV4dCB0byB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgWW9jdG8gUHJvamVjdCBTREsgUGx1Zy1pbgorICAgICBZb2N0byBQcm9qZWN0IERvY3VtZW50YXRpb24gcGx1Zy1pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Db21wbGV0ZSB0aGUgcmVtYWluaW5nIHNvZnR3YXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIHN0ZXBzIGFuZCB0aGVuIHJlc3RhcnQgdGhlIEVjbGlwc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJREUgdG8gZmluaXNoIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhlIHBsdWctaW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2xpY2sgIk9LIiB3aGVuIHByb21wdGVkIGFib3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgc29mdHdhcmUgdGhhdCBjb250YWlucyB1bnNpZ25lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLXppcC1maWxlLW1ldGhvZCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIFBsdWctaW4gVXNpbmcgdGhlIExhdGVzdCBTb3VyY2UgQ29kZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gaW5zdGFsbCB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW4gZnJvbSB0aGUgbGF0ZXN0CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CisgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CZSBzdXJlIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIEpESyAxLjgrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+aW5zdGFsbCBYMTEtcmVsYXRlZCBwYWNrYWdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgeGF1dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW4gYSBuZXcgdGVybWluYWwgc2hlbGwsIGNyZWF0ZSBhIEdpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgd2l0aDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgfgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9lY2xpcHNlLXlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVzZSBHaXQgdG8gY2hlY2tvdXQgdGhlIGNvcnJlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vZWNsaXBzZS15b2N0bworICAgICAkIGdpdCBjaGVja291dCBuZW9uL3lvY3RvLSZESVNUUk87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY3JlYXRlcyBhIGxvY2FsIHRhZyBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uZW9uL3lvY3RvLSZESVNUUk87PC9maWxlbmFtZT4gYmFzZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnJhbmNoIDxmaWxlbmFtZT5vcmlnaW4vbmVvbi1tYXN0ZXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHB1dHMgeW91IGluIGEgZGV0YWNoZWQgSEVBRCBzdGF0ZSwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBmaW5lIHNpbmNlIHlvdSBhcmUgb25seSBnb2luZyB0byBiZSBidWlsZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBub3QgZGV2ZWxvcGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DaGFuZ2UgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoaW4gdGhlIEdpdCByZXBvc2l0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCBzY3JpcHRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNldCB1cCB0aGUgbG9jYWwgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBydW5uaW5nIHRoZSBzZXR1cCBzY3JpcHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIC4vc2V0dXAuc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGUgc2NyaXB0IGZpbmlzaGVzIGV4ZWN1dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBwcm9tcHRzIHlvdSB3aXRoIGluc3RydWN0aW9ucyBvbiBob3cgdG8gcnVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5idWlsZC5zaDwvZmlsZW5hbWU+IHNjcmlwdCwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhbHNvIGluIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZSBHaXQgcmVwb3NpdG9yeSBjcmVhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFybGllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SdW4gdGhlIDxmaWxlbmFtZT5idWlsZC5zaDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IGFzIGRpcmVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gcHJvdmlkZSB0aGUgdGFnIG5hbWUsIGRvY3VtZW50YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2gsIGFuZCBhIHJlbGVhc2UgbmFtZS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIEVDTElQU0VfSE9NRT0vaG9tZS9zY290dHJpZi9lY2xpcHNlLXlvY3RvL3NjcmlwdHMvZWNsaXBzZSAuL2J1aWxkLnNoIC1sIG5lb24veW9jdG8tJkRJU1RSTzsgbWFzdGVyIHlvY3RvLSZESVNUUk87IDI+JmFtcDsxIHwgdGVlIGJ1aWxkLmxvZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBjb21tYW5kIGFkZHMgdGhlIHRhZyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIGZvciA8ZmlsZW5hbWU+bmVvbi95b2N0by0mRElTVFJPOzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPkhFQUQ8L2ZpbGVuYW1lPiwgdGhlbiB0ZWxscyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBzY3JpcHQgdG8gdXNlIHRoZSBsb2NhbCAoLWwpIEdpdCBjaGVja291dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgcnVubmluZyB0aGUgc2NyaXB0LCB0aGUgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vcmcueW9jdG8uc2RrLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnJlbGVhc2U8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4tPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZGF0ZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi1hcmNoaXZlLnppcDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPklmIG5lY2Vzc2FyeSwgc3RhcnQgdGhlIEVjbGlwc2UgSURFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJlIHN1cmUgeW91IGFyZSBpbiB0aGUgV29ya2JlbmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCAiSW5zdGFsbCBOZXcgU29mdHdhcmUiIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgIkhlbHAiIHB1bGwtZG93biBtZW51LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJBZGQiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlByb3ZpZGUgYW55dGhpbmcgeW91IHdhbnQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5hbWUiIGZpZWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJBcmNoaXZlIiBhbmQgYnJvd3NlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpJUCBmaWxlIHlvdSBidWlsdCBlYXJsaWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgWklQIGZpbGUgc2hvdWxkIG5vdCBiZSAidW56aXBwZWQiLCBhbmQgbXVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHRoZSA8ZmlsZW5hbWU+KmFyY2hpdmUuemlwPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgcnVubmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQuc2g8L2ZpbGVuYW1lPiBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgdGhlICJPSyIgYnV0dG9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNoZWNrIHRoZSBib3hlcyB0aGF0IGFwcGVhciBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YWxsYXRpb24gd2luZG93IHRvIGluc3RhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgWW9jdG8gUHJvamVjdCBTREsgUGx1Zy1pbgorICAgICBZb2N0byBQcm9qZWN0IERvY3VtZW50YXRpb24gcGx1Zy1pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GaW5pc2ggdGhlIGluc3RhbGxhdGlvbiBieSBjbGlja2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIGFwcHJvcHJpYXRlIGJ1dHRvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjbGljayAiT0siIHdoZW4gcHJvbXB0ZWQgYWJvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsaW5nIHNvZnR3YXJlIHRoYXQgY29udGFpbnMgdW5zaWduZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJlc3RhcnQgdGhlIEVjbGlwc2UgSURFIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50IHlvdSBzaG91bGQgYmUgYWJsZSB0byBjb25maWd1cmUgdGhlCisgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBhcyBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+CisgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQ29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluIGludm9sdmVzIHNldHRpbmcgdGhlCisgICAgICAgICAgICAgICAgQ3Jvc3MgQ29tcGlsZXIgb3B0aW9ucyBhbmQgdGhlIFRhcmdldCBvcHRpb25zLgorICAgICAgICAgICAgICAgIFRoZSBjb25maWd1cmF0aW9ucyB5b3UgY2hvb3NlIGJlY29tZSB0aGUgZGVmYXVsdCBzZXR0aW5ncworICAgICAgICAgICAgICAgIGZvciBhbGwgcHJvamVjdHMuCisgICAgICAgICAgICAgICAgWW91IGRvIGhhdmUgb3Bwb3J0dW5pdGllcyB0byBjaGFuZ2UgdGhlbSBsYXRlciB3aGVuCisgICAgICAgICAgICAgICAgeW91IGNvbmZpZ3VyZSB0aGUgcHJvamVjdCAoc2VlIHRoZSBmb2xsb3dpbmcgc2VjdGlvbikuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHN0YXJ0LCB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nIGZyb20gd2l0aGluIHRoZQorICAgICAgICAgICAgICAgIEVjbGlwc2UgSURFOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DaG9vc2UgIlByZWZlcmVuY2VzIiBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIldpbmRvdyIgbWVudSB0byBkaXNwbGF5IHRoZSBQcmVmZXJlbmNlcyBEaWFsb2cuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJZb2N0byBQcm9qZWN0IFNESyIgdG8gZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gc2NyZWVuLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdWItc2VjdGlvbnMgZGVzY3JpYmUgaG93IHRvIGNvbmZpZ3VyZSB0aGUKKyAgICAgICAgICAgICAgICB0aGUgcGx1Zy1pbi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhyb3VnaG91dCB0aGUgZGVzY3JpcHRpb25zLCBhIHN0YXJ0LXRvLWZpbmlzaCBleGFtcGxlIGZvcgorICAgICAgICAgICAgICAgICAgICBwcmVwYXJpbmcgYSBRRU1VIGltYWdlIGZvciB1c2Ugd2l0aCBFY2xpcHNlIGlzIHJlZmVyZW5jZWQKKyAgICAgICAgICAgICAgICAgICAgYXMgdGhlICJ3aWtpIiBhbmQgaXMgbGlua2VkIHRvIHRoZSBleGFtcGxlIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+IENvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtY3Jvc3MtY29tcGlsZXItb3B0aW9ucyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBDcm9zcy1Db21waWxlciBPcHRpb25zPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDcm9zcyBDb21waWxlciBvcHRpb25zIGVuYWJsZSBFY2xpcHNlIHRvIHVzZSB5b3VyIHNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgIGNyb3NzIGNvbXBpbGVyIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgVG8gY29uZmlndXJlIHRoZXNlIG9wdGlvbnMsIHlvdSBtdXN0IHNlbGVjdAorICAgICAgICAgICAgICAgICAgICB0aGUgdHlwZSBvZiB0b29sY2hhaW4sIHBvaW50IHRvIHRoZSB0b29sY2hhaW4sIHNwZWNpZnkKKyAgICAgICAgICAgICAgICAgICAgdGhlIHN5c3Jvb3QgbG9jYXRpb24sIGFuZCBzZWxlY3QgdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNlbGVjdGluZyB0aGUgVG9vbGNoYWluIFR5cGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgYmV0d2VlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TdGFuZGFsb25lIHByZS1idWlsdCB0b29sY2hhaW48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBDcm9zcyBDb21waWxlciBPcHRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U3RhbmRhbG9uZSBQcmUtYnVpbHQgVG9vbGNoYWluOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhpcyB0eXBlIHdoZW4geW91IGFyZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc3RhbmQtYWxvbmUgY3Jvc3MtdG9vbGNoYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhcmUgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgYW5kIGRvIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gYnVpbGQgYSB0YXJnZXQgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGVhZCwgeW91IGp1c3Qgd2FudCB0byB1c2UgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG9vbGNoYWluIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gZXhpc3Rpbmcga2VybmVsIGFuZCB0YXJnZXQgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHlvdSBoYXZlIGRvd25sb2FkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaW5zdGFsbGVkIGEgcHJlLWJ1aWx0IHRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhbiBleGlzdGluZyBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgU3lzdGVtIERlcml2ZWQgVG9vbGNoYWluOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhpcyB0eXBlIGlmIHlvdSBidWlsdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHNlbGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIHVzaW5nIHRoZSB0b29sY2hhaW4gYnVpbHQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVuZGxlZCBpbnNpZGUgdGhlIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgY3JlYXRlZCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGFibGUgaW1hZ2UgdXNpbmcgdGhlIHN0ZXBzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBzaXR1YXRpb24sIHlvdSB3b3VsZCBzZWxlY3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIHN5c3RlbSBkZXJpdmVkIHRvb2xjaGFpbjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U3BlY2lmeSB0aGUgVG9vbGNoYWluIFJvb3QgTG9jYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIGEgc3RhbmQtYWxvbmUgcHJlLWJ1aWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluLCB5b3Ugc2hvdWxkIGJlIHBvaW50aW5nIHRvIHdoZXJlIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9vcHQvcG9reS8mRElTVFJPOzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1pbnN0YWxsaW5nLXRoZS1zZGsnPkluc3RhbGxpbmcgdGhlIFNESzwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRoZSBTREsgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBhcmUgdXNpbmcgYSBidWlsZCBzeXN0ZW0gZGVyaXZlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiwgdGhlIHBhdGggeW91IHByb3ZpZGUgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Ub29sY2hhaW4gUm9vdCBMb2NhdGlvbjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gd2hpY2ggeW91IHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgKGUuZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkPC9maWxlbmFtZT4pLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U3BlY2lmeSBTeXNyb290IExvY2F0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBsb2NhdGlvbiBpcyB3aGVyZSB0aGUgcm9vdCBmaWxlc3lzdGVtIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgaGFyZHdhcmUgcmVzaWRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBsb2NhdGlvbiBkZXBlbmRzIG9uIHdoZXJlIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkgZXh0cmFjdGVkIGFuZCBpbnN0YWxsZWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGZpbGVzeXN0ZW0gd2hlbiB5b3UgZWl0aGVyIGJ1aWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgb3IgZG93bmxvYWRlZCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvd25sb2FkZWQgdGhlIHJvb3QgZmlsZXN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZSByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBpdCwgeW91IG11c3QgZG93bmxvYWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zYXRvLXNkazwvZmlsZW5hbWU+IGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGJ1aWxkIGFueSBjL2MrKyBwcm9qZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgc3VwcG9zZSB5b3UgcHJlcGFyZWQgYW4gaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgc3RlcHMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPndpa2k8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBzbywgdGhlIDxmaWxlbmFtZT5NWV9RRU1VX1JPT1RGUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgeW91IHdvdWxkIGJyb3dzZSB0byBhbmQgc2VsZWN0IHRoYXQgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPi9ob21lL3Njb3R0cmlmL2J1aWxkL01ZX1FFTVVfUk9PVEZTPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaW5zdGFsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gYW5kIG9uIGhvdyB0byBleHRyYWN0IGFuZCBpbnN0YWxsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3Jvb3QgZmlsZXN5c3RlbSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2VsZWN0IHRoZSBUYXJnZXQgQXJjaGl0ZWN0dXJlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgdGhlIHR5cGUgb2YgaGFyZHdhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIGdvaW5nIHRvIHVzZSBvciBlbXVsYXRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgcHVsbC1kb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRhcmdldCBBcmNoaXRlY3R1cmU8L2ZpbGVuYW1lPiBtZW51CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbWFrZSB5b3VyIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHVsbC1kb3duIG1lbnUgc2hvdWxkIGhhdmUgdGhlIHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGFyY2hpdGVjdHVyZSB5b3UgbmVlZCBpcyBub3QgbGlzdGVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1lbnUsIHlvdSB3aWxsIG5lZWQgdG8gYnVpbGQgdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LWJ1aWxkaW5nLWEtc2ltcGxlLWltYWdlJz5CdWlsZGluZyBhIFNpbXBsZSBJbWFnZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS10YXJnZXQtb3B0aW9ucyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBUYXJnZXQgT3B0aW9uczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjaG9vc2UgdG8gZW11bGF0ZSBoYXJkd2FyZSB1c2luZyB0aGUgUUVNVQorICAgICAgICAgICAgICAgICAgICBlbXVsYXRvciwgb3IgeW91IGNhbiBjaG9vc2UgdG8gcnVuIHlvdXIgaW1hZ2Ugb24gYWN0dWFsCisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5RRU1VOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3aWxsIGJlIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUgZW11bGF0b3IuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyB0aGUgZW11bGF0b3IsIHlvdSBhbHNvIG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGUgdGhlIGtlcm5lbCBhbmQgc3BlY2lmeSBhbnkgY3VzdG9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHNlbGVjdGVkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGtlcm5lbCB5b3UgYnVpbHQgd2lsbCBiZSBsb2NhdGVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBzdXBwb3NlIHlvdSBwZXJmb3JtZWQgdGhlIHN0ZXBzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPndpa2k8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBzcGVjaWZ5IHlvdXIgQnVpbGQgRGlyZWN0b3J5IHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgaW1hZ2UgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2L2J6SW1hZ2UtcWVtdXg4Ni5iaW48L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBzZWxlY3RlZCB0aGUgc3RhbmRhbG9uZSBwcmUtYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4sIHRoZSBwcmUtYnVpbHQgaW1hZ2UgeW91IGRvd25sb2FkZWQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZSBkaXJlY3RvcnkgeW91IHNwZWNpZmllZCB3aGVuIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkZWQgdGhlIGltYWdlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Nb3N0IGN1c3RvbSBvcHRpb25zIGFyZSBmb3IgYWR2YW5jZWQgUUVNVQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJzIHRvIGZ1cnRoZXIgY3VzdG9taXplIHRoZWlyIFFFTVUgaW5zdGFuY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2Ugb3B0aW9ucyBhcmUgc3BlY2lmaWVkIGJldHdlZW4gcGFpcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVkIGJyYWNrZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgb3B0aW9ucyBtdXN0IGJlIHNwZWNpZmllZCBvdXRzaWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYWNrZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHRoZSBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlcmlhbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub2dyYXBoaWM8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmt2bTwvZmlsZW5hbWU+IG11c3QgYWxsIGJlIG91dHNpZGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhY2tldHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+bWFuIHFlbXU8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2V0IGhlbHAgb24gYWxsIHRoZSBvcHRpb25zIGFuZCB0aGVpciB1c2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIHNlcmlhbCDigJgmbHQ7LW0gMjU2IC1mdWxsLXNjcmVlbiZndDvigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgdGhlIG1vZGUsIFN5c3Jvb3QgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYXMgcGFydCBvZiB0aGUgQ3Jvc3MtQ29tcGlsZXIgT3B0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlN5c3Jvb3QgTG9jYXRpb246PC9maWxlbmFtZT4gZmllbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkV4dGVybmFsIEhXOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3aWxsIGJlIHVzaW5nIGFjdHVhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJBcHBseSIgYW5kICJPSyIgdG8gc2F2ZSB5b3VyIHBsdWctaW4KKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J25lb24tY3JlYXRpbmctdGhlLXByb2plY3QnPgorICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgdGhlIFByb2plY3Q8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgdHdvIHR5cGVzIG9mIHByb2plY3RzOiAgQXV0b3Rvb2xzLWJhc2VkLCBvcgorICAgICAgICAgICAgTWFrZWZpbGUtYmFzZWQuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBjcmVhdGUgQXV0b3Rvb2xzLWJhc2VkIHByb2plY3RzCisgICAgICAgICAgICBmcm9tIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgTWFrZWZpbGUtYmFzZWQgcHJvamVjdHMgaW4gYQorICAgICAgICAgICAgdGVybWluYWwgd2luZG93LCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFrZWZpbGUtYmFzZWQtcHJvamVjdHMnPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBEbyBub3QgdXNlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBwcm9qZWN0IG5hbWVzCisgICAgICAgICAgICAgICAgKGUuZy4gc3BhY2VzLCB1bmRlcnNjb3JlcywgZXRjLikuICBEb2luZyBzbyBjYW4KKyAgICAgICAgICAgICAgICBjYXVzZSB0aGUgY29uZmlndXJhdGlvbiB0byBmYWlsLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBjcmVhdGUgYSBwcm9qZWN0IGJhc2VkIG9uIGEgWW9jdG8gdGVtcGxhdGUgYW5kIHRoZW4gZGlzcGxheQorICAgICAgICAgICAgdGhlIHNvdXJjZSBjb2RlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCAiQyBQcm9qZWN0IiBmcm9tIHRoZSAiRmlsZSAtPiBOZXciIG1lbnUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBhbmQgPGZpbGVuYW1lPllvY3RvIFByb2plY3QgU0RLIEF1dG90b29scyBQcm9qZWN0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgPGZpbGVuYW1lPkhlbGxvIFdvcmxkIEFOU0kgQyBBdXRvdG9vbHMgUHJvamVjdHM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhbiBBdXRvdG9vbHMtYmFzZWQgcHJvamVjdCBiYXNlZCBvbiBhIFlvY3RvCisgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UHV0IGEgbmFtZSBpbiB0aGUgPGZpbGVuYW1lPlByb2plY3QgbmFtZTo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWVsZC4KKyAgICAgICAgICAgICAgICAgICAgRG8gbm90IHVzZSBoeXBoZW5zIGFzIHBhcnQgb2YgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmhlbGxvPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgIk5leHQiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWRkIGFwcHJvcHJpYXRlIGluZm9ybWF0aW9uIGluIHRoZSB2YXJpb3VzCisgICAgICAgICAgICAgICAgICAgIGZpZWxkcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJGaW5pc2giLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SWYgdGhlICJvcGVuIHBlcnNwZWN0aXZlIiBwcm9tcHQgYXBwZWFycywKKyAgICAgICAgICAgICAgICAgICAgY2xpY2sgIlllcyIgc28gdGhhdCB5b3UgYXJlIGluIHRoZSBDL0MrKyBwZXJzcGVjdGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBsZWZ0LWhhbmQgbmF2aWdhdGlvbiBwYW5lIHNob3dzIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkaXNwbGF5IHlvdXIgc291cmNlIGJ5IGRvdWJsZSBjbGlja2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJvamVjdCdzIHNvdXJjZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtY3Jvc3MtdG9vbGNoYWlucyc+CisgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgQ3Jvc3MtVG9vbGNoYWluczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZWFybGllciBzZWN0aW9uLAorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J25lb24tY29uZmlndXJpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC9saW5rPiIsCisgICAgICAgICAgICBzZXRzIHVwIHRoZSBkZWZhdWx0IHByb2plY3QgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICBZb3UgY2FuIG92ZXJyaWRlIHRoZXNlIHNldHRpbmdzIGZvciBhIGdpdmVuIHByb2plY3QgYnkgZm9sbG93aW5nCisgICAgICAgICAgICB0aGVzZSBzdGVwczoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2VsZWN0ICJZb2N0byBQcm9qZWN0IFNldHRpbmdzIiBmcm9tCisgICAgICAgICAgICAgICAgICAgIHRoZSAiUHJvamVjdCAtPiBQcm9wZXJ0aWVzIiBtZW51LgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNlbGVjdGlvbiBicmluZ3MgdXAgdGhlIFlvY3RvIFByb2plY3QgU2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgRGlhbG9nIGFuZCBhbGxvd3MgeW91IHRvIG1ha2UgY2hhbmdlcyBzcGVjaWZpYyB0byBhbgorICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsIHByb2plY3QuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5CeSBkZWZhdWx0LCB0aGUgQ3Jvc3MgQ29tcGlsZXIgT3B0aW9ucyBhbmQgVGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgZm9yIGEgcHJvamVjdCBhcmUgaW5oZXJpdGVkIGZyb20gc2V0dGluZ3MgeW91CisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIHVzaW5nIHRoZSBQcmVmZXJlbmNlcyBEaWFsb2cgYXMgZGVzY3JpYmVkCisgICAgICAgICAgICAgICAgICAgIGVhcmxpZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IFNldHRpbmdzIERpYWxvZyBhbGxvd3MgeW91IHRvIG92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgIHRob3NlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGEgZ2l2ZW4gcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk1ha2Ugb3IgdmVyaWZ5IHlvdXIgY29uZmlndXJhdGlvbnMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IGFuZCBjbGljayAiT0siLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UmlnaHQtY2xpY2sgaW4gdGhlIG5hdmlnYXRpb24gcGFuZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0ICJSZWNvbmZpZ3VyZSBQcm9qZWN0IiBmcm9tIHRoZSBwb3AtdXAgbWVudS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWxlY3Rpb24gcmVjb25maWd1cmVzIHRoZSBwcm9qZWN0IGJ5IHJ1bm5pbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9nZW4uc2g8L2ZpbGVuYW1lPiBpbiB0aGUgd29ya3NwYWNlIGZvcgorICAgICAgICAgICAgICAgICAgICB5b3VyIHByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgYWxzbyBydW5zIDxmaWxlbmFtZT5saWJ0b29saXplPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hY2xvY2FsPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2hlYWRlcjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b21ha2UgLS1hPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Li9jb25maWd1cmU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gdGhlICJDb25zb2xlIiB0YWIgYmVuZWF0aCB5b3VyIHNvdXJjZSBjb2RlIHRvCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgcmVzdWx0cyBvZiByZWNvbmZpZ3VyaW5nIHlvdXIgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J25lb24tYnVpbGRpbmctdGhlLXByb2plY3QnPgorICAgICAgICA8dGl0bGU+QnVpbGRpbmcgdGhlIFByb2plY3Q8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gYnVpbGQgdGhlIHByb2plY3Qgc2VsZWN0ICJCdWlsZCBBbGwiIGZyb20gdGhlCisgICAgICAgICAgICAiUHJvamVjdCIgbWVudS4KKyAgICAgICAgICAgIFRoZSBjb25zb2xlIHNob3VsZCB1cGRhdGUgYW5kIHlvdSBjYW4gbm90ZSB0aGUgY3Jvc3MtY29tcGlsZXIKKyAgICAgICAgICAgIHlvdSBhcmUgdXNpbmcuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBXaGVuIGJ1aWxkaW5nICJZb2N0byBQcm9qZWN0IFNESyBBdXRvdG9vbHMiIHByb2plY3RzLCB0aGUKKyAgICAgICAgICAgICAgICBFY2xpcHNlIElERSBtaWdodCBkaXNwbGF5IGVycm9yIG1lc3NhZ2VzIGZvcgorICAgICAgICAgICAgICAgIEZ1bmN0aW9ucy9TeW1ib2xzL1R5cGVzIHRoYXQgY2Fubm90IGJlICJyZXNvbHZlZCIsIGV2ZW4gd2hlbgorICAgICAgICAgICAgICAgIHRoZSByZWxhdGVkIGluY2x1ZGUgZmlsZSBpcyBsaXN0ZWQgYXQgdGhlIHByb2plY3QgbmF2aWdhdG9yIGFuZAorICAgICAgICAgICAgICAgIHdoZW4gdGhlIHByb2plY3QgaXMgYWJsZSB0byBidWlsZC4KKyAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMgb25seSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gYWRkIGEgbmV3IGxpbmtlZAorICAgICAgICAgICAgICAgIGZvbGRlciB0byB0aGUgYXBwcm9wcmlhdGUgc3lzcm9vdC4KKyAgICAgICAgICAgICAgICBVc2UgdGhlc2Ugc3RlcHMgdG8gYWRkIHRoZSBsaW5rZWQgZm9sZGVyOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoZSBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCAiRm9sZGVyIiBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZpbGUgPiBOZXc8L2ZpbGVuYW1lPiBtZW51LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSAiTmV3IEZvbGRlciIgRGlhbG9nLCBzZWxlY3QgIkxpbmsgdG8gYWx0ZXJuYXRlCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiAobGlua2VkIGZvbGRlcikiLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJCcm93c2UiIHRvIG5hdmlnYXRlIHRvIHRoZSBpbmNsdWRlIGZvbGRlciBpbnNpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIHN5c3Jvb3QgbG9jYXRpb24gc2VsZWN0ZWQgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk9LIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiRmluaXNoIiB0byBzYXZlIHRoZSBsaW5rZWQgZm9sZGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSduZW9uLXN0YXJ0aW5nLXFlbXUtaW4tdXNlci1zcGFjZS1uZnMtbW9kZSc+CisgICAgICAgIDx0aXRsZT5TdGFydGluZyBRRU1VIGluIFVzZXItU3BhY2UgTkZTIE1vZGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gc3RhcnQgdGhlIFFFTVUgZW11bGF0b3IgZnJvbSB3aXRoaW4gRWNsaXBzZSwgZm9sbG93IHRoZXNlCisgICAgICAgICAgICBzdGVwczoKKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Jz5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCisgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKKyAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyBRRU1VLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBvc2UgYW5kIHNlbGVjdCAiRXh0ZXJuYWwgVG9vbHMKKyAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbnMgLi4uIiBmcm9tIHRoZSAiUnVuIC0+IEV4dGVybmFsIFRvb2xzIiBtZW51LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIExvY2F0ZSBhbmQgc2VsZWN0IHlvdXIgaW1hZ2UgaW4gdGhlIG5hdmlnYXRpb24gcGFuZWwgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIGxlZnQgKGUuZy4gPGZpbGVuYW1lPnFlbXVfaTU4Ni1wb2t5LWxpbnV4PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENsaWNrICJSdW4iIHRvIGxhdW5jaCBRRU1VLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBob3N0IG9uIHdoaWNoIHlvdSBhcmUgcnVubmluZyBRRU1VIG11c3QgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5ycGNiaW5kPC9maWxlbmFtZT4gdXRpbGl0eSBydW5uaW5nIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBhYmxlIHRvIG1ha2UgUlBDIGNhbGxzIG9uIGEgc2VydmVyIG9uIHRoYXQgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIFFFTVUgZG9lcyBub3QgaW52b2tlIGFuZCB5b3UgcmVjZWl2ZSBlcnJvciBtZXNzYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgaW52b2x2aW5nIDxmaWxlbmFtZT5ycGNiaW5kPC9maWxlbmFtZT4sIGZvbGxvdyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zIHRvIGdldCB0aGUgc2VydmljZSBydW5uaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgb24gYSBuZXcgVWJ1bnR1IDE2LjA0IExUUyBpbnN0YWxsYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbXVzdCBkbyB0aGUgZm9sbG93aW5nIGluIG9yZGVyIHRvIGdldCBRRU1VIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBsYXVuY2g6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgcnBjYmluZAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgaW5zdGFsbGluZyA8ZmlsZW5hbWU+cnBjYmluZDwvZmlsZW5hbWU+LCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gZWRpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2luaXQuZC9ycGNiaW5kPC9maWxlbmFtZT4gZmlsZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE9QVElPTlM9Ii1pIC13IgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgbW9kaWZ5aW5nIHRoZSBmaWxlLCB5b3UgbmVlZCB0byBzdGFydCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBzZXJ2aWNlIHBvcnRtYXAgcmVzdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiBuZWVkZWQsIGVudGVyIHlvdXIgaG9zdCByb290IHBhc3N3b3JkIGluCisgICAgICAgICAgICAgICAgICAgIHRoZSBzaGVsbCB3aW5kb3cgYXQgdGhlIHByb21wdC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzZXRzIHVwIGEgPGZpbGVuYW1lPlRhcCAwPC9maWxlbmFtZT4gY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICBuZWVkZWQgZm9yIHJ1bm5pbmcgaW4gdXNlci1zcGFjZSBORlMgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldhaXQgZm9yIFFFTVUgdG8gbGF1bmNoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+T25jZSBRRU1VIGxhdW5jaGVzLCB5b3UgY2FuIGJlZ2luIG9wZXJhdGluZworICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhhdCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgT25lIHVzZWZ1bCB0YXNrIGF0IHRoaXMgcG9pbnQgd291bGQgYmUgdG8gZGV0ZXJtaW5lIHRoZQorICAgICAgICAgICAgICAgICAgICBJUCBBZGRyZXNzIGZvciB0aGUgdXNlci1zcGFjZSBORlMgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pZmNvbmZpZzwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBJUCBhZGRyZXNzIG9mIHRoZSBRRU1VIG1hY2hpbmUgYXBwZWFycyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgeHRlcm0gd2luZG93LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGlzIGFkZHJlc3MgdG8gaGVscCB5b3Ugc2VlIHdoaWNoIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgSVAgYWRkcmVzcyB0aGUgaW5zdGFuY2Ugb2YgUUVNVSBpcyB1c2luZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J25lb24tZGVwbG95aW5nLWFuZC1kZWJ1Z2dpbmctdGhlLWFwcGxpY2F0aW9uJz4KKyAgICAgICAgPHRpdGxlPkRlcGxveWluZyBhbmQgRGVidWdnaW5nIHRoZSBBcHBsaWNhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmNlIHRoZSBRRU1VIGVtdWxhdG9yIGlzIHJ1bm5pbmcgdGhlIGltYWdlLCB5b3UgY2FuIGRlcGxveQorICAgICAgICAgICAgeW91ciBhcHBsaWNhdGlvbiB1c2luZyB0aGUgRWNsaXBzZSBJREUgYW5kIHRoZW4gdXNlCisgICAgICAgICAgICB0aGUgZW11bGF0b3IgdG8gcGVyZm9ybSBkZWJ1Z2dpbmcuCisgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gZGVwbG95IHRoZSBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEN1cnJlbnRseSwgRWNsaXBzZSBkb2VzIG5vdCBzdXBwb3J0IFNTSCBwb3J0IGZvcndhcmRpbmcuCisgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBpZiB5b3UgbmVlZCB0byBydW4gb3IgZGVidWcgYSByZW1vdGUKKyAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiB1c2luZyB0aGUgaG9zdCBkaXNwbGF5LCB5b3UgbXVzdCBjcmVhdGUgYQorICAgICAgICAgICAgICAgIHR1bm5lbGluZyBjb25uZWN0aW9uIGZyb20gb3V0c2lkZSBFY2xpcHNlIGFuZCBrZWVwCisgICAgICAgICAgICAgICAgdGhhdCBjb25uZWN0aW9uIGFsaXZlIGR1cmluZyB5b3VyIHdvcmsuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIGEgbmV3IHRlcm1pbmFsLCBydW4gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3NoIC1YWSA8cmVwbGFjZWFibGU+dXNlcl9uYW1lPC9yZXBsYWNlYWJsZT5APHJlcGxhY2VhYmxlPnJlbW90ZV9ob3N0X2lwPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVXNpbmcgdGhlIGFib3ZlIGZvcm0sIGhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3NoIC1YWSByb290QDE5Mi4xNjguNy4yCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIGNvbW1hbmQsIGFkZCB0aGUgY29tbWFuZCB0byBiZSBleGVjdXRlZAorICAgICAgICAgICAgICAgIGluIEVjbGlwc2UncyBydW4gY29uZmlndXJhdGlvbiBiZWZvcmUgdGhlIGFwcGxpY2F0aW9uCisgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGV4cG9ydCBESVNQTEFZPToxMC4wCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gbm90IGRlc3Ryb3kgdGhlIGNvbm5lY3Rpb24gZHVyaW5nIHlvdXIgUUVNVQorICAgICAgICAgICAgICAgIHNlc3Npb24gKGkuZS4gZG8gbm90CisgICAgICAgICAgICAgICAgZXhpdCBvdXQgb2Ygb3IgY2xvc2UgdGhhdCBzaGVsbCkuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCAiRGVidWcgQ29uZmlndXJhdGlvbnMuLi4iIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICJSdW4iIG1lbnUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluIHRoZSBsZWZ0IGFyZWEsIGV4cGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Qy9DKytSZW1vdGUgQXBwbGljYXRpb248L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkxvY2F0ZSB5b3VyIHByb2plY3QgYW5kIHNlbGVjdCBpdCB0byBicmluZworICAgICAgICAgICAgICAgICAgICB1cCBhIG5ldyB0YWJiZWQgdmlldyBpbiB0aGUgRGVidWcgQ29uZmlndXJhdGlvbnMgRGlhbG9nLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgb24gdGhlICJEZWJ1Z2dlciIgdGFiIHRvIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3Jvc3MtdG9vbCBkZWJ1Z2dlciB5b3UgYXJlIHVzaW5nLgorICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGNoYW5nZSB0byB0aGUgZGVidWdnZXIgcGVyc3BlY3RpdmUgaW4gRWNsaXBzZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrIG9uIHRoZSAiTWFpbiIgdGFiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gdG8gdGhlIFFFTVUgaW5zdGFuY2UKKyAgICAgICAgICAgICAgICAgICAgYnkgY2xpY2tpbmcgb24gIm5ldyIuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCA8ZmlsZW5hbWU+U1NIPC9maWxlbmFtZT4sIHdoaWNoIG1lYW5zCisgICAgICAgICAgICAgICAgICAgIFNlY3VyZSBTb2NrZXQgU2hlbGwuCisgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gc2VsZWN0IGEgVENGIGNvbm5lY3Rpb24gaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJOZXh0Ii4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsZWFyIG91dCB0aGUgIkNvbm5lY3Rpb24gbmFtZSIgZmllbGQgYW5kCisgICAgICAgICAgICAgICAgICAgIGVudGVyIGFueSBuYW1lIHlvdSB3YW50IGZvciB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlB1dCB0aGUgSVAgYWRkcmVzcyBmb3IgdGhlIGNvbm5lY3Rpb24gaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlICJIb3N0IiBmaWVsZC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIFFFTVUsIHRoZSBkZWZhdWx0IGlzIDxmaWxlbmFtZT4xOTIuMTY4LjcuMjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiBhIHByZXZpb3VzIFFFTVUgc2Vzc2lvbiBkaWQgbm90IGV4aXQKKyAgICAgICAgICAgICAgICAgICAgY2xlYW5seSwgdGhlIElQIGFkZHJlc3MgaW5jcmVtZW50cyAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+MTkyLjE2OC43LjM8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBJUCBhZGRyZXNzIGZvciB0aGUgY3VycmVudCBRRU1VCisgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uIGJ5IGxvb2tpbmcgaW4gdGhlIHh0ZXJtIHRoYXQgb3BlbnMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGxhdW5jaCBRRU1VLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FbnRlciA8ZmlsZW5hbWU+cm9vdDwvZmlsZW5hbWU+LCB3aGljaAorICAgICAgICAgICAgICAgICAgICBpcyB0aGUgZGVmYXVsdCBmb3IgUUVNVSwgZm9yIHRoZSAiVXNlciIgZmllbGQuCisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gbGVhdmUgdGhlIHBhc3N3b3JkIGZpZWxkIGVtcHR5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgIkZpbmlzaCIgdG8gY2xvc2UgdGhlCisgICAgICAgICAgICAgICAgICAgIE5ldyBDb25uZWN0aW9ucyBEaWFsb2cuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiBuZWNlc3NhcnksIHVzZSB0aGUgZHJvcC1kb3duIG1lbnUgbm93IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiIgZmllbGQgYW5kIHBpY2sgdGhlIElQIEFkZHJlc3MgeW91IGVudGVyZWQuCisgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QXNzdW1pbmcgeW91IGFyZSBjb25uZWN0aW5nIGFzIHRoZSByb290IHVzZXIsCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGZvciBRRU1VIHg4Ni02NCBTREsgaW1hZ2VzIHByb3ZpZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LCBpbiB0aGUgIlJlbW90ZSBBYnNvbHV0ZSBGaWxlIFBhdGggZm9yCisgICAgICAgICAgICAgICAgICAgIEMvQysrIEFwcGxpY2F0aW9uIiBmaWVsZCwgYnJvd3NlIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS9yb290LzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPlByb2plY3ROYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPi9ob21lL3Jvb3QvaGVsbG88L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjb3VsZCBhbHNvIGJyb3dzZSB0byBhbnkgb3RoZXIgcGF0aCB5b3UgaGF2ZSB3cml0ZQorICAgICAgICAgICAgICAgICAgICBhY2Nlc3MgdG8gb24gdGhlIHRhcmdldCBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2JpbjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGxvY2F0aW9uIGlzIHdoZXJlIHlvdXIgYXBwbGljYXRpb24gd2lsbCBiZSBsb2NhdGVkIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBRRU1VIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGZhaWwgdG8gYnJvd3NlIHRvIGFuZCBzcGVjaWZ5IGFuIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLCBRRU1VIHdpbGwgbm90IHVuZGVyc3RhbmQgd2hhdCB0byByZW1vdGVseQorICAgICAgICAgICAgICAgICAgICBsYXVuY2guCisgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgaXMgaGVscGZ1bCBpbiB0aGF0IGl0IGF1dG8gZmlsbHMgeW91ciBhcHBsaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICBuYW1lIGZvciB5b3UgYXNzdW1pbmcgeW91IGJyb3dzZWQgdG8gYSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXBzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHByb21wdGVkIHRvIHByb3ZpZGUgYSB1c2VybmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdG8gb3B0aW9uYWxseSBzZXQgYSBwYXNzd29yZCwgYmUgc3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgcHJvdmlkZSAicm9vdCIgYXMgdGhlIHVzZXJuYW1lIGFuZCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhdmUgdGhlIHBhc3N3b3JkIGZpZWxkIGJsYW5rLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGJyb3dzaW5nIHRvIGEgZGlyZWN0b3J5IGZhaWxzIG9yIHRpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCwgYnV0IHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzaDwvZmlsZW5hbWU+IGludG8geW91ciBRRU1VCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRhcmdldCBmcm9tIHRoZSBjb21tYW5kIGxpbmUgYW5kIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIHByb3hpZXMgc2V0IHVwLCBpdCBpcyBsaWtlbHkgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIGlzIHNlbmRpbmcgdGhlIFNTSCB0cmFmZmljIHRvIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgZWl0aGVyIHVzZSBUQ0YgLCBvciBjbGljayBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlndXJlIHByb3h5IHNldHRpbmdzIiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiBkaWFsb2cgYW5kIGFkZCB0aGUgdGFyZ2V0IElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgdG8gdGhlICJieXBhc3MgcHJveHkiIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtaWdodCBhbHNvIG5lZWQgdG8gY2hhbmdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBY3RpdmUgUHJvdmlkZXIiIGZyb20gTmF0aXZlIHRvIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGNoYW5nZSB0byB0aGUgIkRlYnVnIiBwZXJzcGVjdGl2ZSBpbiBFY2xpcHNlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgIkRlYnVnIgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWNjZXB0IHRoZSBkZWJ1ZyBwZXJzcGVjdGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J25lb24tdXNpbmctTGludXh0b29scyc+CisgICAgICAgIDx0aXRsZT5Vc2luZyBMaW51eHRvb2xzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyIGluIHRoZSBtYW51YWwsIHBlcmZvcm1hbmNlIHRvb2xzIGV4aXN0CisgICAgICAgICAgICAoTGludXh0b29scykgdGhhdCBlbmhhbmNlIHlvdXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZS4KKyAgICAgICAgICAgIFRoZXNlIHRvb2xzIGFyZSBhaWRzIGluIGRldmVsb3BpbmcgYW5kIGRlYnVnZ2luZyBhcHBsaWNhdGlvbnMgYW5kCisgICAgICAgICAgICBpbWFnZXMuCisgICAgICAgICAgICBZb3UgY2FuIHJ1biB0aGVzZSB0b29scyBmcm9tIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICJMaW51eHRvb2xzIiBtZW51LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbmZpZ3VyZSBhbmQgdXNlIHRoZXNlIHRvb2xzLCBzZWUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGludXh0b29scy8nPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGludXh0b29scy88L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvYXBwZW5kaXg+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sCmluZGV4IGFiOTA1NWUuLmFhMDYzNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbApAQCAtMTA1LDcgKzEwNSw3IEBACiAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBhcmUgc2V0IHVwIHRvIHVzZSBCaXRCYWtlIGluIGEgc2hlbGwuCiAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+U2V0dGluZyBVcCB0aGUgRGV2ZWxvcG1lbnQgSG9zdCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgogICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZXQgYSBidWlsZCBob3N0IHJlYWR5IHRoYXQgaXMgZWl0aGVyIGEKICAgICAgICAgICAgICAgICBuYXRpdmUgTGludXggbWFjaGluZSBvciBhIG1hY2hpbmUgdGhhdCB1c2VzIENST1BTLgpAQCAtMjAzLDcgKzIwMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gYnVpbGRpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVyLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPkNvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz5Db29rYm9vayBndWlkZSB0byBNYWtpbmcgYW4gPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gRGVidWcgQ2FwYWJsZSBJbWFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KQEAgLTMyNyw3ICszMjcsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPkZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGNvbW1hbmQgdGhhdCBleHRyYWN0cyB0aGUgcm9vdAogICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gZnJvbSBhIHByZXZpb3VzbHkgYnVpbHQgcm9vdCBmaWxlc3lzdGVtIGltYWdlIHRoYXQKICAgICAgICAgICAgICAgICB3YXMgZG93bmxvYWRlZCBmcm9tIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2luZGV4LWRvd25sb2Fkcyc+SW5kZXggb2YgUmVsZWFzZXM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2luZGV4LWRvd25sb2Fkcyc+SW5kZXggb2YgUmVsZWFzZXM8L3VsaW5rPi4KICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgZXh0cmFjdHMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbnRvIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlMi02NC1zYXRvPC9maWxlbmFtZT4gZGlyZWN0b3J5OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWVjbGlwc2UtcHJvamVjdC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1lY2xpcHNlLXByb2plY3QueG1sCmluZGV4IGJkYjgzNDQuLjNlYjg1ZTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWVjbGlwc2UtcHJvamVjdC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZWNsaXBzZS1wcm9qZWN0LnhtbApAQCAtMTksOCArMTksOCBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgYW5kIHN1cHBvcnRpbmcgbGlzdCBzdW1tYXJpemUgdGhlCi0gICAgICAgICAgICBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBnZW5lcmFsIHdvcmtmbG93IHRoYXQgZW1wbG95cyBib3RoIHRoZQotICAgICAgICAgICAgU0RLIEVjbGlwc2UuCisgICAgICAgICAgICBnZW5lcmFsIHdvcmtmbG93IGZvciBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCB0aGF0IHVzZXMgdGhlCisgICAgICAgICAgICBTREsgd2l0aGluIHRoZSBFY2xpcHNlIElERS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtMzEsOSArMzEsOCBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIHRoZSBob3N0IHN5c3RlbSBmb3IgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgIFByb2plY3Q8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIHRoZSBIb3N0IFN5c3RlbSBmb3IgdGhlIFlvY3RvIFByb2plY3Q8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV0YWlsZWQtc3VwcG9ydGVkLWRpc3Ryb3MnPlN1cHBvcnRlZCBMaW51eCBEaXN0cmlidXRpb25zPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIGFuZAogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBIb3N0IERldmVsb3BtZW50IFN5c3RlbTwvdWxpbms+IgpAQCAtNDMsOCArNDIsOCBAQAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eHRlcm08L2ZpbGVuYW1lPiBwYWNrYWdlIGluc3RhbGxlZC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VjdXJlIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgaW1hZ2U8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlY3VyZSB0aGUgWW9jdG8gUHJvamVjdCBLZXJuZWwgVGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIEltYWdlPC9lbXBoYXNpcz46CiAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGhhdmUgYSB0YXJnZXQga2VybmVsIGltYWdlIHRoYXQgaGFzIGJlZW4gYnVpbHQKICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uPC9wYXJhPgogICAgICAgICAgICAgICAgICAgICA8cGFyYT5EZXBlbmRpbmcgb24gd2hldGhlciB0aGUgWW9jdG8gUHJvamVjdCBoYXMgYQpAQCAtNjYsNyArNjUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWNoaW5lcy9xZW11PC9maWxlbmFtZT48L3VsaW5rPiBpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBzdXBwb3J0ZWQgYW5kIHlvdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBnb2luZyB0byBkZXZlbG9wIGFuZCB0ZXN0IHlvdXIgYXBwbGljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgUUVNVSBlbXVsYXRvci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLXFlbXUnPlFFTVUgRW11bGF0b3I8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB5b3VyIGltYWdlIGlmIHlvdSBjYW5ub3QgZmluZCBhIHByZS1idWlsdApAQCAtOTEsOCArOTEsOCBAQAogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWN1cmUgdGhlIHRhcmdldCByb290IGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBDcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlY3VyZSB0aGUgVGFyZ2V0IFJvb3QgRmlsZXN5c3RlbQorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIENyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbjwvZW1waGFzaXM+OgogICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBmaW5kIGFuZCBkb3dubG9hZCB0aGUgYXBwcm9wcmlhdGUgcm9vdAogICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGFuZCB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluLjwvcGFyYT4KICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBmaW5kIHRoZSB0YXJiYWxscyBmb3IgdGhlIHJvb3QgZmlsZXN5c3RlbQpAQCAtMTE4LDIyICsxMTgsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICBBbm90aGVyIGhlbHBmdWwgcmVzb3VyY2UgZm9yIGJ1aWxkaW5nIGFuIGluc3RhbGxlcgogICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+Q29va2Jvb2sgZ3VpZGUgdG8gTWFraW5nIGFuIEVjbGlwc2UgRGVidWcgQ2FwYWJsZSBJbWFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPkNvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYW5kIGJ1aWxkIHlvdXIgYXBwbGljYXRpb248L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhbmQgQnVpbGQgWW91ciBBcHBsaWNhdGlvbjwvZW1waGFzaXM+OgogICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgbmVlZCB0byBoYXZlIHNvdXJjZSBmaWxlcyBmb3IgeW91cgogICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB0aGUgZmlsZXMsIHlvdSBjYW4gdXNlIHRoZSBFY2xpcHNlIElERQogICAgICAgICAgICAgICAgICAgICB0byBpbXBvcnQgdGhlbSBhbmQgYnVpbGQgdGhlIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgbm90IHVzaW5nIEVjbGlwc2UsIHlvdSBuZWVkIHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbHMgeW91IGhhdmUgaW5zdGFsbGVkIHRvIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICB0aGUgaW1hZ2UuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRlcGxveSB0aGUgaW1hZ2Ugd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb248L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRlcGxveSB0aGUgSW1hZ2UgV2l0aCB0aGUgQXBwbGljYXRpb248L2VtcGhhc2lzPjoKICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIEVjbGlwc2UgSURFLCB5b3UgY2FuIGRlcGxveSB5b3VyIGltYWdlIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBvciB0byBRRU1VIHRocm91Z2ggdGhlIHByb2plY3QncyBwcmVmZXJlbmNlcy4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSBFY2xpcHNlIHRvIGxvYWQgYW5kIHRlc3QgeW91ciBpbWFnZQpAQCAtMTQ0LDcgKzE0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyBRRU1VLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UZXN0IGFuZCBkZWJ1ZyB0aGUgYXBwbGljYXRpb248L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRlc3QgYW5kIERlYnVnIHRoZSBBcHBsaWNhdGlvbjwvZW1waGFzaXM+OgogICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdXIgYXBwbGljYXRpb24gaXMgZGVwbG95ZWQsIHlvdSBuZWVkIHRvIHRlc3QgaXQuCiAgICAgICAgICAgICAgICAgICAgIFdpdGhpbiB0aGUgRWNsaXBzZSBJREUsIHlvdSBjYW4gdXNlIHRoZSBkZWJ1Z2dpbmcKICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgYWxvbmcgd2l0aCBzdXBwb3J0ZWQgcGVyZm9ybWFuY2UgZW5oYW5jaW5nCkBAIC0xNzksMjUgKzE3NiwyNSBAQAogICAgICAgICAgICAgY29sbGVjdGlvbiBvZiBwb3dlciBkYXRhLCBjb2xsZWN0aW9uIG9mIGxhdGVuY3kgZGF0YSwgYW5kCiAgICAgICAgICAgICBjb2xsZWN0aW9uIG9mIHBlcmZvcm1hbmNlIGRhdGEuCiAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGlzIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgYm90aCB0aGUgTmVvbgotICAgICAgICAgICAgICAgIGFuZCBNYXJzIHZlcnNpb25zIG9mIHRoZSBFY2xpcHNlIElERS4KLSAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgTmVvbgorICAgICAgICAgICAgICAgIFRoaXMgcmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBib3RoIHRoZSBPeHlnZW4KKyAgICAgICAgICAgICAgICBhbmQgTmVvbiB2ZXJzaW9ucyBvZiB0aGUgRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIE94eWdlbgogICAgICAgICAgICAgICAgIHJlbGVhc2Ugd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgTWFycyB2ZXJzaW9uIG9mIEVjbGlwc2UKKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgTmVvbiB2ZXJzaW9uIG9mIEVjbGlwc2UKICAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWFwcGVuZGl4LWxhdGVzdC15cC1lY2xpcHNlLXBsdWctaW4nPkFwcGVuZGl4IEM8L2xpbms+LgorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstYXBwZW5kaXgtbmVvbi15cC1lY2xpcHNlLXBsdWctaW4nPkFwcGVuZGl4IEQ8L2xpbms+Ii4KICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1zZXR0aW5nLXVwLXRoZS1lY2xpcHNlLWlkZSc+Ci0gICAgICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCB0aGUgTmVvbiBWZXJzaW9uIG9mIHRoZSBFY2xpcHNlIElERTwvdGl0bGU+CisgICAgICAgIDxzZWN0aW9uIGlkPSdveHlnZW4tc2V0dGluZy11cC10aGUtZWNsaXBzZS1pZGUnPgorICAgICAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdGhlIE94eWdlbiBWZXJzaW9uIG9mIHRoZSBFY2xpcHNlIElERTwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRvIGRldmVsb3Agd2l0aGluIHRoZSBFY2xpcHNlIElERSwgeW91IG5lZWQgdG8gZG8gdGhlCiAgICAgICAgICAgICAgICAgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbCB0aGUgTmVvbiB2ZXJzaW9uIG9mIHRoZSBFY2xpcHNlIElERS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwgdGhlIE94eWdlbiB2ZXJzaW9uIG9mIHRoZSBFY2xpcHNlIElERS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmUgdGhlIEVjbGlwc2UgSURFLgpAQCAtMjE3LDE3ICsyMTQsMTcgQEAKICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWluc3RhbGxpbmctZWNsaXBzZS1pZGUnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIHRoZSBOZW9uIEVjbGlwc2UgSURFPC90aXRsZT4KKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdveHlnZW4taW5zdGFsbGluZy1lY2xpcHNlLWlkZSc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIE94eWdlbiBFY2xpcHNlIElERTwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGxvY2F0ZSwgaW5zdGFsbCwgYW5kIGNvbmZpZ3VyZQotICAgICAgICAgICAgICAgICAgICBOZW9uIEVjbGlwc2U6CisgICAgICAgICAgICAgICAgICAgIE94eWdlbiBFY2xpcHNlOgogICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvY2F0ZSB0aGUgTmVvbiBEb3dubG9hZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Mb2NhdGUgdGhlIE94eWdlbiBEb3dubG9hZDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW4gYSBicm93c2VyIGFuZCBnbyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbmVvbi8nPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbmVvbi88L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL294eWdlbi8nPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3h5Z2VuLzwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgpAQCAtMjYyLDM2ICsyNTksNTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5zdGFsbCB0aGUgU29mdHdhcmU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHQgdGhlIGRlZmF1bHQgImNwcC1uZW9uIiBkaXJlY3RvcnkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2sgIkluc3RhbGwiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2VwdCBhbnkgbGljZW5zZSBhZ3JlZW1lbnRzIGFuZCBhcHByb3ZlIGFueQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiSW5zdGFsbCIgdG8gYmVnaW4gdGhlIGluc3RhbGxhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHQgYWxsIHRoZSBjZXJ0aWZpY2F0ZXMgYW5kIGFueSBsaWNlbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdyZWVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiSW5zdGFsbCIgYWdhaW4gdG8gZmluaXNoIHRoZSBpbnN0YWxsYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxhdW5jaCBOZW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJMYXVuY2giIGJ1dHRvbiBhbmQgYWNjZXB0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgIndvcmtzcGFjZSIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxhdW5jaCBPeHlnZW46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHQgdGhlIGRlZmF1bHQgIndvcmtzcGFjZSIgYW5kIGNsaWNrIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMYXVuY2giIGJ1dHRvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHNlZSB0aGUgRWNsaXBzZSB3ZWxjb21lIHBhZ2UgZnJvbSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBjbGljayAid29ya2JlbmNoIiB0byBlbnRlciB5b3VyIHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1tYXJzLWVjbGlwc2UtaWRlJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBJREU8L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J294eWdlbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS1pZGUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgT3h5Z2VuIEVjbGlwc2UgSURFPC90aXRsZT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY29uZmlndXJlIHRoZSBOZW9uIEVjbGlwc2UgSURFLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiBob3cgeW91IGluc3RhbGxlZCBFY2xpcHNlIGFuZCB3aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgaGF2ZSBhbHJlYWR5IGRvbmUsIHNvbWUgb2YgdGhlIG9wdGlvbnMgd2lsbAotICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFwcGVhci4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBjYW5ub3QgZmluZCBhbiBvcHRpb24gYXMgZGlyZWN0ZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIGl0IGhhcyBhbHJlYWR5IGJlZW4gaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY29uZmlndXJlIHRoZSBPeHlnZW4gRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIGhvdyB5b3UgaW5zdGFsbGVkIEVjbGlwc2UgYW5kIHdoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGhhdmUgYWxyZWFkeSBkb25lLCBzb21lIG9mIHRoZSBvcHRpb25zIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFwcGVhci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNhbm5vdCBmaW5kIGFuIG9wdGlvbiBhcyBkaXJlY3RlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBpdCBoYXMgYWxyZWFkeSBiZWVuIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBzZWUgYWxsIGl0ZW1zIHJlZ2FyZGxlc3Mgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hldGhlciB0aGV5IGFyZSBpbnN0YWxsZWQgb3Igbm90LCBkZXNlbGVjdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhpZGUgaXRlbXMgdGhhdCBhcmUgYWxyZWFkeSBpbnN0YWxsZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrIGJveC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSBFY2xpcHNlIGlzIHJ1bm5pbmcgYW5kIHlvdSBhcmUgaW4geW91cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtiZW5jaC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdXN0IGNsaWNrICJ3b3JrYmVuY2giIGlmIHlvdSBhcmUgbm90IGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkluc3RhbGwgTmV3IFNvZnR3YXJlIiBmcm9tIHRoZSAiSGVscCIKQEAgLTI5OSw3ICszMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZW9uIC0gaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL3JlbGVhc2VzL25lb24iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk94eWdlbiAtIGh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9yZWxlYXNlcy9veHlnZW4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgIldvcmsgd2l0aDoiIHB1bGwtZG93biBtZW51LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMzMxLDI4ICszNDIsMjkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIGJ5IGNsaWNraW5nIHRocm91Z2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSAiTmV4dCIgYW5kICJGaW5pc2giIGJ1dHRvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm9wcmlhdGUgIk5leHQiIGFuZCAiRmluaXNoIiBidXR0b25zIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdGFydCB0aGUgRWNsaXBzZSBJREUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1pbnN0YWxsaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPgotICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIG9yIEFjY2Vzc2luZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J294eWdlbi1pbnN0YWxsaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPgorICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIG9yIEFjY2Vzc2luZyB0aGUgT3h5Z2VuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBpbnN0YWxsIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4gaW50byB0aGUKICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBJREUgb25lIG9mIHR3byB3YXlzOiAgdXNlIHRoZSBZb2N0byBQcm9qZWN0J3MKLSAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBVcGRhdGUgc2l0ZSB0byBpbnN0YWxsIHRoZSBwcmUtYnVpbHQgcGx1Zy1pbgorICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIFVwZGF0ZSBzaXRlIHRvIGluc3RhbGwgdGhlIHByZS1idWlsdCBwbHVnLWluLAogICAgICAgICAgICAgICAgICAgICBvciBidWlsZCBhbmQgaW5zdGFsbCB0aGUgcGx1Zy1pbiBmcm9tIHRoZSBsYXRlc3QKICAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tbmV3LXNvZnR3YXJlJz4KKyAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nb3h5Z2VuLW5ldy1zb2Z0d2FyZSc+CiAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIHRoZSBQcmUtYnVpbHQgUGx1Zy1pbiBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IEVjbGlwc2UgVXBkYXRlIFNpdGU8L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVG8gaW5zdGFsbCB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW4gZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGluc3RhbGwgdGhlIE94eWdlbiBFY2xpcHNlIFlvY3RvIFBsdWctaW4gZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSBzaXRlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CiAgICAgICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMzY3LDE3ICszNzksMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JkVDTElQU0VfRExfUExVR0lOX1VSTDsvbmVvbjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mRUNMSVBTRV9ETF9QTFVHSU5fVVJMOy9veHlnZW48L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgVVJMIGZpZWxkIGFuZCBwcm92aWRlIGEgbWVhbmluZ2Z1bAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGluIHRoZSAiTmFtZSIgZmllbGQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk9LIiB0byBoYXZlIHRoZSBlbnRyeSBhZGRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgIldvcmsgd2l0aDoiIGRyb3AtZG93biBsaXN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgZW50cnkgZm9yIHRoZSBwbHVnLWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlICJXb3JrIHdpdGg6IiBkcm9wLWRvd24gbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk9LIiB0byBoYXZlIHRoZSBlbnRyeSBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVsYXRlIHRoZSAiV29yayB3aXRoOiIgZmllbGQgYW5kIHRvIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGl0ZW1zIGZvciBpbnN0YWxsYXRpb24gYXBwZWFyIGluIHRoZSB3aW5kb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVsb3cuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2sgdGhlIGJveGVzIG5leHQgdG8gdGhlIGZvbGxvd2luZzoKQEAgLTQwMSwxNiArNDExLDIxIEBACiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi16aXAtZmlsZS1tZXRob2QnPgorICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdveHlnZW4temlwLWZpbGUtbWV0aG9kJz4KICAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIFBsdWctaW4gVXNpbmcgdGhlIExhdGVzdCBTb3VyY2UgQ29kZTwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUbyBpbnN0YWxsIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgVG8gaW5zdGFsbCB0aGUgT3h5Z2VuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZXN0IHNvdXJjZSBjb2RlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CiAgICAgICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBKREsgMS44KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdXIgYnVpbGQgaG9zdCBoYXMgSkRLIHZlcnNpb24gMS44CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIGEgTGludXggYnVpbGQgaG9zdCB5b3UgY2FuIGRldGVybWluZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBqYXZhIC12ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsIFgxMS1yZWxhdGVkIHBhY2thZ2VzOgpAQCAtNDIzLDE5ICs0MzgsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgd2l0aDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGNkIH4KLSAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZWNsaXBzZS1wb2t5CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2VjbGlwc2UteW9jdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBHaXQgdG8gY3JlYXRlIHRoZSBjb3JyZWN0IHRhZzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4vZWNsaXBzZS1wb2t5Ci0gICAgICQgZ2l0IGNoZWNrb3V0IG5lb24veW9jdG8tJkRJU1RSTzsKKyAgICAgJCBjZCB+L2VjbGlwc2UteW9jdG8KKyAgICAgJCBnaXQgY2hlY2tvdXQgLWIgb3h5Z2VuLyZESVNUUk9fTkFNRV9OT19DQVA7IHJlbW90ZXMvb3JpZ2luL294eWdlbi8mRElTVFJPX05BTUVfTk9fQ0FQOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY3JlYXRlcyBhIGxvY2FsIHRhZyBuYW1lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmVvbi95b2N0by0mRElTVFJPOzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5veHlnZW4vJkRJU1RST19OQU1FX05PX0NBUDs8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlZCBvbiB0aGUgYnJhbmNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vcmlnaW4vbmVvbi1tYXN0ZXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9yaWdpbi9veHlnZW4vJkRJU1RST19OQU1FX05PX0NBUDs8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGFyZSBwdXQgaW50byBhIGRldGFjaGVkIEhFQUQgc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGZpbmUgc2luY2UgeW91IGFyZSBvbmx5IGdvaW5nIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGJ1aWxkaW5nIGFuZCBub3QgZGV2ZWxvcGluZy4KQEAgLTQ2OSwxMSArNDg0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIEVDTElQU0VfSE9NRT0vaG9tZS9zY290dHJpZi9lY2xpcHNlLXBva3kvc2NyaXB0cy9lY2xpcHNlIC4vYnVpbGQuc2ggLWwgbmVvbi95b2N0by0mRElTVFJPOyBtYXN0ZXIgeW9jdG8tJkRJU1RSTzsgMj4mYW1wOzEgfCB0ZWUgYnVpbGQubG9nCisgICAgICQgRUNMSVBTRV9IT01FPS9ob21lL3Njb3R0cmlmL2VjbGlwc2UteW9jdG8vc2NyaXB0cy9lY2xpcHNlIC4vYnVpbGQuc2ggLWwgb3h5Z2VuLyZESVNUUk9fTkFNRV9OT19DQVA7IG1hc3RlciB5b2N0by0mRElTVFJPOyAyPiZhbXA7MSB8IHRlZSBidWlsZC5sb2cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBjb21tYW5kIGFkZHMgdGhlIHRhZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hcnMveW9jdG8tJkRJU1RSTzs8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3h5Z2VuLyZESVNUUk9fTkFNRV9OT19DQVA7PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPkhFQUQ8L2ZpbGVuYW1lPiwgdGhlbiB0ZWxscwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgc2NyaXB0IHRvIHVzZSB0aGUgbG9jYWwgKC1sKSBHaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tvdXQgZm9yIHRoZSBidWlsZC4KQEAgLTUzMywxNyArNTQ4LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gY29uZmlndXJlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBZb2N0byBQbHVnLWluIGFzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtYXJzLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nb3h5Z2VuLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBPeHlnZW4gRWNsaXBzZSBZb2N0byBQbHVnLWluPC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPgotICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J294eWdlbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIE94eWdlbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBpbnZvbHZlcworICAgICAgICAgICAgICAgICAgICBDb25maWd1cmluZyB0aGUgT3h5Z2VuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBpbnZvbHZlcwogICAgICAgICAgICAgICAgICAgICBzZXR0aW5nIHRoZSBDcm9zcyBDb21waWxlciBvcHRpb25zIGFuZCB0aGUgVGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBjb25maWd1cmF0aW9ucyB5b3UgY2hvb3NlIGJlY29tZSB0aGUgZGVmYXVsdApAQCAtNTU1LDcgKzU3MCw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFRvIHN0YXJ0LCB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nIGZyb20gd2l0aGluIHRoZQogICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIElERToKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSAiUHJlZmVyZW5jZXMiIGZyb20gdGhlICJXaW5kb3ciIG1lbnUgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IHRoZSBQcmVmZXJlbmNlcyBEaWFsb2cuCkBAIC01NjQsNyArNTc5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiWW9jdG8gUHJvamVjdCBTREsiIHRvIGRpc3BsYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBzY3JlZW4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN1Yi1zZWN0aW9ucyBkZXNjcmliZSBob3cgdG8gY29uZmlndXJlCiAgICAgICAgICAgICAgICAgICAgIHRoZSBwbHVnLWluLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KQEAgLTU3MiwxMiArNTg3LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlIGZvciBwcmVwYXJpbmcgYSBRRU1VIGltYWdlIGZvciB1c2Ugd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBpcyByZWZlcmVuY2VkIGFzIHRoZSAid2lraSIgYW5kIGlzIGxpbmtlZAogICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGV4YW1wbGUgb24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+IENvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz4gQ29va2Jvb2sgZ3VpZGUgdG8gTWFraW5nIGFuIEVjbGlwc2UgRGVidWcgQ2FwYWJsZSBJbWFnZTwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLWNyb3NzLWNvbXBpbGVyLW9wdGlvbnMnPgorICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdveHlnZW4tY29uZmlndXJpbmctdGhlLWNyb3NzLWNvbXBpbGVyLW9wdGlvbnMnPgogICAgICAgICAgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIENyb3NzLUNvbXBpbGVyIE9wdGlvbnM8L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtNjgyLDggKzY5Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHNvLCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ZX1FFTVVfUk9PVEZTPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGlzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpcyBmb3VuZCBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3Ugd291bGQgYnJvd3NlIHRvIGFuZCBzZWxlY3QgdGhhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgKGUuZy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvTVlfUUVNVV9ST09URlM8L2ZpbGVuYW1lPikuCkBAIC03MDgsOSArNzIyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG1lbnUsIHlvdSB3aWxsIG5lZWQgdG8gYnVpbGQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtYnVpbGRpbmctYS1zaW1wbGUtaW1hZ2UnPkJ1aWxkaW5nIGEgU2ltcGxlIEltYWdlPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTcxOCw3ICs3MzIsNyBAQAogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLXRhcmdldC1vcHRpb25zJz4KKyAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nb3h5Z2VuLWNvbmZpZ3VyaW5nLXRoZS10YXJnZXQtb3B0aW9ucyc+CiAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgVGFyZ2V0IE9wdGlvbnM8L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtNzg3LDE0ICs4MDEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJBcHBseSIgYW5kICJPSyIgdG8gc2F2ZSB5b3VyIHBsdWctaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJBcHBseSBhbmQgQ2xvc2UiIHRvIHNhdmUgeW91ciBwbHVnLWluCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNyZWF0aW5nLXRoZS1wcm9qZWN0Jz4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J294eWdlbi1jcmVhdGluZy10aGUtcHJvamVjdCc+CiAgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgdGhlIFByb2plY3Q8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTgxOCwyMCArODMyLDIyIEBACiAgICAgICAgICAgICAgICAgZGlzcGxheSB0aGUgc291cmNlIGNvZGUsIGZvbGxvdyB0aGVzZSBzdGVwczoKICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCAiQyBQcm9qZWN0IiBmcm9tIHRoZSAiRmlsZSAtPiBOZXciIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkMvQysrIFByb2plY3QiIGZyb20gdGhlICJGaWxlIC0+IE5ldyIgbWVudS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBFeHBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Zb2N0byBQcm9qZWN0IFNESyBBdXRvdG9vbHMgUHJvamVjdDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJDIE1hbmFnZWQgQnVpbGQiIGZyb20gdGhlIGF2YWlsYWJsZSBvcHRpb25zIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2sgIk5leHQiLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCA8ZmlsZW5hbWU+SGVsbG8gV29ybGQgQU5TSSBDIEF1dG90b29scyBQcm9qZWN0czwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgRXhwYW5kICJZb2N0byBQcm9qZWN0IFNESyBBdXRvdG9vbHMgUHJvamVjdCIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJIZWxsbyBXb3JsZCBBTlNJIEMgQXV0b3Rvb2xzIFByb2plY3RzIi4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYW4gQXV0b3Rvb2xzLWJhc2VkIHByb2plY3QgYmFzZWQgb24gYSBZb2N0bwogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgUHV0IGEgbmFtZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Qcm9qZWN0IG5hbWU6PC9maWxlbmFtZT4gZmllbGQuCisgICAgICAgICAgICAgICAgICAgICAgICBQdXQgYSBuYW1lIGluIHRoZSAiUHJvamVjdCBuYW1lOiIgZmllbGQuCiAgICAgICAgICAgICAgICAgICAgICAgICBEbyBub3QgdXNlIGh5cGhlbnMgYXMgcGFydCBvZiB0aGUgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmhlbGxvPC9maWxlbmFtZT4pLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC04NTcsMTIgKzg3MywxMiBAQAogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLWNyb3NzLXRvb2xjaGFpbnMnPgorICAgICAgICA8c2VjdGlvbiBpZD0nb3h5Z2VuLWNvbmZpZ3VyaW5nLXRoZS1jcm9zcy10b29sY2hhaW5zJz4KICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgQ3Jvc3MtVG9vbGNoYWluczwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoZSBlYXJsaWVyIHNlY3Rpb24sCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J25lb24tY29uZmlndXJpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC9saW5rPiIsCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J294eWdlbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgT3h5Z2VuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iLAogICAgICAgICAgICAgICAgIHNldHMgdXAgdGhlIGRlZmF1bHQgcHJvamVjdCBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAgICAgICBZb3UgY2FuIG92ZXJyaWRlIHRoZXNlIHNldHRpbmdzIGZvciBhIGdpdmVuIHByb2plY3QgYnkKICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgdGhlc2Ugc3RlcHM6CkBAIC04NzcsNyArODkzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldCBPcHRpb25zIGZvciBhIHByb2plY3QgYXJlIGluaGVyaXRlZCBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyB5b3UgcHJvdmlkZWQgdXNpbmcgdGhlIFByZWZlcmVuY2VzIERpYWxvZwogICAgICAgICAgICAgICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGVhcmxpZXIgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbmVvbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J294eWdlbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgT3h5Z2VuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgU2V0dGluZ3MgRGlhbG9nIGFsbG93cyB5b3UgdG8KICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlIHRob3NlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGEgZ2l2ZW4KQEAgLTg4NSwyMSArOTAxLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgTWFrZSBvciB2ZXJpZnkgeW91ciBjb25maWd1cmF0aW9ucyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IGFuZCBjbGljayAiT0siLgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdCBhbmQgY2xpY2sgIkFwcGx5IGFuZCBDbG9zZSIuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgUmlnaHQtY2xpY2sgaW4gdGhlIG5hdmlnYXRpb24gcGFuZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCAiUmVjb25maWd1cmUgUHJvamVjdCIgZnJvbSB0aGUgcG9wLXVwIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICBSaWdodC1jbGljayBpbiB0aGUgbmF2aWdhdGlvbiBwYW5lIGFuZCBzZWxlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICJSZWNvbmZpZ3VyZSBQcm9qZWN0IiBmcm9tIHRoZSBwb3AtdXAgbWVudS4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc2VsZWN0aW9uIHJlY29uZmlndXJlcyB0aGUgcHJvamVjdCBieSBydW5uaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2dlbi5zaDwvZmlsZW5hbWU+IGluIHRoZSB3b3Jrc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciB5b3VyIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGFsc28gcnVucwotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnRvb2xpemU8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hY2xvY2FsPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2NvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvaGVhZGVyPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b21ha2UgLS1hPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi4vY29uZmlndXJlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HTlVfQnVpbGRfU3lzdGVtJz5BdXRvdG9vbHMgR05VIHV0aWxpdHkgcHJvZ3JhbXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyBBdXRvY29uZiwgQXV0b21ha2UsIGFuZCBzbyBmb3J0aCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZSBmb3IgeW91ciBwcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gdGhlICJDb25zb2xlIiB0YWIgYmVuZWF0aCB5b3VyIHNvdXJjZSBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICB0byBzZWUgdGhlIHJlc3VsdHMgb2YgcmVjb25maWd1cmluZyB5b3VyIHByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTkwNywxMyArOTE3LDE0IEBACiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWJ1aWxkaW5nLXRoZS1wcm9qZWN0Jz4KKyAgICAgICAgIDxzZWN0aW9uIGlkPSdveHlnZW4tYnVpbGRpbmctdGhlLXByb2plY3QnPgogICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIHRoZSBQcm9qZWN0PC90aXRsZT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBUbyBidWlsZCB0aGUgcHJvamVjdCBzZWxlY3QgIkJ1aWxkIEFsbCIgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAiUHJvamVjdCIgbWVudS4KICAgICAgICAgICAgICAgICBUaGUgY29uc29sZSBzaG91bGQgdXBkYXRlIGFuZCB5b3UgY2FuIG5vdGUgdGhlCi0gICAgICAgICAgICAgICAgY3Jvc3MtY29tcGlsZXIgeW91IGFyZSB1c2luZy4KKyAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxlciB5b3UgYXJlIHVzaW5nIChpLmUuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmk1ODYtcG9reS1saW51eC1nY2M8L2ZpbGVuYW1lPiBpbiB0aGlzIGV4YW1wbGUpLgogICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICBXaGVuIGJ1aWxkaW5nICJZb2N0byBQcm9qZWN0IFNESyBBdXRvdG9vbHMiIHByb2plY3RzLAogICAgICAgICAgICAgICAgICAgICB0aGUgRWNsaXBzZSBJREUgbWlnaHQgZGlzcGxheSBlcnJvciBtZXNzYWdlcyBmb3IKQEAgLTkyOSwxMiArOTQwLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoZSBwcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCAiRm9sZGVyIiBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GaWxlID4gTmV3PC9maWxlbmFtZT4gbWVudS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkZvbGRlciIgZnJvbSB0aGUgIkZpbGUgLT4gTmV3IiBtZW51LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSAiTmV3IEZvbGRlciIgRGlhbG9nLCBzZWxlY3QgIkxpbmsgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGUgbG9jYXRpb24gKGxpbmtlZCBmb2xkZXIpIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgIk5ldyBGb2xkZXIiIERpYWxvZywgY2xpY2sgdGhlICJBZHZhbmNlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24gYW5kIHRoZW4gYWN0aXZhdGUgIkxpbmsgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGUgbG9jYXRpb24gKGxpbmtlZCBmb2xkZXIpIiBidXR0b24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkJyb3dzZSIgdG8gbmF2aWdhdGUgdG8gdGhlIGluY2x1ZGUKQEAgLTk0Myw5ICs5NTQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk9LIi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiRmluaXNoIiB0byBzYXZlIHRoZSBsaW5rZWQgZm9sZGVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgpAQCAtOTUzLDcgKzk2MSw3IEBACiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1zdGFydGluZy1xZW11LWluLXVzZXItc3BhY2UtbmZzLW1vZGUnPgorICAgICAgICA8c2VjdGlvbiBpZD0nb3h5Z2VuLXN0YXJ0aW5nLXFlbXUtaW4tdXNlci1zcGFjZS1uZnMtbW9kZSc+CiAgICAgICAgICAgICA8dGl0bGU+U3RhcnRpbmcgUUVNVSBpbiBVc2VyLVNwYWNlIE5GUyBNb2RlPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC05ODcsOCArOTk1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnBjYmluZDwvZmlsZW5hbWU+LCBmb2xsb3cgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMgdG8gZ2V0IHRoZSBzZXJ2aWNlIHJ1bm5pbmcuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgb24gYSBuZXcgVWJ1bnR1IDE2LjA0IExUUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiwgeW91IG11c3QgZG8gdGhlIGZvbGxvd2luZyBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyIHRvIGdldCBRRU1VIHRvIGxhdW5jaDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24sIHlvdSBtdXN0IGRvIHRoZSBmb2xsb3dpbmcgaW4gYSBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbCBpbiBvcmRlciB0byBnZXQgUUVNVSB0byBsYXVuY2g6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIHJwY2JpbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0xMDMyLDcgKzEwNDAsNyBAQAogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tZGVwbG95aW5nLWFuZC1kZWJ1Z2dpbmctdGhlLWFwcGxpY2F0aW9uJz4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J294eWdlbi1kZXBsb3lpbmctYW5kLWRlYnVnZ2luZy10aGUtYXBwbGljYXRpb24nPgogICAgICAgICAgICAgPHRpdGxlPkRlcGxveWluZyBhbmQgRGVidWdnaW5nIHRoZSBBcHBsaWNhdGlvbjwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTE4Niw3ICsxMTk0LDcgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLXVzaW5nLUxpbnV4dG9vbHMnPgorICAgICAgICA8c2VjdGlvbiBpZD0nb3h5Z2VuLXVzaW5nLUxpbnV4dG9vbHMnPgogICAgICAgICAgICAgPHRpdGxlPlVzaW5nIExpbnV4dG9vbHM8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWV4dGVuc2libGUueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZXh0ZW5zaWJsZS54bWwKaW5kZXggNDQ0ZDgxNi4uNTIxNWE5ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZXh0ZW5zaWJsZS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZXh0ZW5zaWJsZS54bWwKQEAgLTI4LDcgKzI4LDcgQEAKICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIHRocm91Z2gKICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiwgeW91IGNhbiBhbHRlcm5hdGl2ZWx5IG1ha2UgdXNlIG9mIHRoZQogICAgICAgICB0b29sY2hhaW4gZGlyZWN0bHksIGZvciBleGFtcGxlIGZyb20gTWFrZWZpbGUsIEF1dG90b29scywgYW5kCi0gICAgICAgIEVjbGlwc2UtYmFzZWQgcHJvamVjdHMuCisgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+LWJhc2VkIHByb2plY3RzLgogICAgICAgICBTZWUgdGhlCiAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstd29ya2luZy1wcm9qZWN0cyc+VXNpbmcgdGhlIFNESyBUb29sY2hhaW4gRGlyZWN0bHk8L2xpbms+IgogICAgICAgICBjaGFwdGVyIGZvciBtb3JlIGluZm9ybWF0aW9uLgpAQCAtNTQsMjkgKzU0LDI5IEBACiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0nc2RrLXNldHRpbmctdXAtdG8tdXNlLXRoZS1leHRlbnNpYmxlLXNkayc+Ci0gICAgICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgRXh0ZW5zaWJsZSBTREs8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdzZGstaW5zdGFsbGluZy10aGUtZXh0ZW5zaWJsZS1zZGsnPgorICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgRXh0ZW5zaWJsZSBTREs8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGRvIGlzIGluc3RhbGwgdGhlIFNESyBvbiB5b3VyIGhvc3QKLSAgICAgICAgICAgIGRldmVsb3BtZW50IG1hY2hpbmUgYnkgcnVubmluZyB0aGUgPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPgotICAgICAgICAgICAgaW5zdGFsbGF0aW9uIHNjcmlwdC4KKyAgICAgICAgICAgIFRoZSBmaXJzdCB0aGluZyB5b3UgbmVlZCB0byBkbyBpcyBpbnN0YWxsIHRoZSBTREsgb24geW91cgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPkJ1aWxkIEhvc3Q8L3VsaW5rPgorICAgICAgICAgICAgYnkgcnVubmluZyB0aGUgPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPiBpbnN0YWxsYXRpb24gc2NyaXB0LgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBZb3UgY2FuIGRvd25sb2FkIGEgdGFyYmFsbCBpbnN0YWxsZXIsIHdoaWNoIGluY2x1ZGVzIHRoZQogICAgICAgICAgICAgcHJlLWJ1aWx0IHRvb2xjaGFpbiwgdGhlIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4KICAgICAgICAgICAgIHNjcmlwdCwgdGhlIGludGVybmFsIGJ1aWxkIHN5c3RlbSwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIGFuZCBzdXBwb3J0IGZpbGVzIGZyb20gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeSB1bmRlcgotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1RPT0xDSEFJTl9ETF9VUkw7Jz48L3VsaW5rPi4KLSAgICAgICAgICAgIFRvb2xjaGFpbnMgYXJlIGF2YWlsYWJsZSBmb3IgMzItYml0IGFuZCA2NC1iaXQgeDg2IGRldmVsb3BtZW50Ci0gICAgICAgICAgICBzeXN0ZW1zIGZyb20gdGhlIDxmaWxlbmFtZT5pNjg2PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICA8ZmlsZW5hbWU+eDg2XzY0PC9maWxlbmFtZT4gZGlyZWN0b3JpZXMsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgIGFuZCBzdXBwb3J0IGZpbGVzIGZyb20gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fVE9PTENIQUlOX0RMX1VSTDsnPnRvb2xjaGFpbjwvdWxpbms+CisgICAgICAgICAgICBkaXJlY3Rvcnkgd2l0aGluIHRoZSBJbmRleCBvZiBSZWxlYXNlcy4KKyAgICAgICAgICAgIFRvb2xjaGFpbnMgYXJlIGF2YWlsYWJsZSBmb3Igc2V2ZXJhbCAzMi1iaXQgYW5kIDY0LWJpdAorICAgICAgICAgICAgYXJjaGl0ZWN0dXJlcyB3aXRoIHRoZSA8ZmlsZW5hbWU+eDg2XzY0PC9maWxlbmFtZT4gZGlyZWN0b3JpZXMsCisgICAgICAgICAgICByZXNwZWN0aXZlbHkuCiAgICAgICAgICAgICBUaGUgdG9vbGNoYWlucyB0aGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBhcmUgYmFzZWQgb2ZmIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGltYWdlIGFuZCBjb250YWluCisgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2VzIGFuZCBjb250YWluCiAgICAgICAgICAgICBsaWJyYXJpZXMgYXBwcm9wcmlhdGUgZm9yIGRldmVsb3BpbmcgYWdhaW5zdCB0aGF0IGltYWdlLgotICAgICAgICAgICAgRWFjaCB0eXBlIG9mIGRldmVsb3BtZW50IHN5c3RlbSBzdXBwb3J0cyBmaXZlIG9yIG1vcmUgdGFyZ2V0Ci0gICAgICAgICAgICBhcmNoaXRlY3R1cmVzLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CkBAIC04NSw2ICs4NSw3IEBACiAgICAgICAgICAgICBmaWxlbmFtZSBhbmQgdGhlbiBpcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhIHN0cmluZwogICAgICAgICAgICAgcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgogICAgICAgICAgICAgQW4gZXh0ZW5zaWJsZSBTREsgaGFzIHRoZSBzdHJpbmcgIi1leHQiIGFzIHBhcnQgb2YgdGhlIG5hbWUuCisgICAgICAgICAgICBGb2xsb3dpbmcgaXMgdGhlIGdlbmVyYWwgZm9ybToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgcG9reS1nbGliYy08cmVwbGFjZWFibGU+aG9zdF9zeXN0ZW08L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+aW1hZ2VfdHlwZTwvcmVwbGFjZWFibGU+LTxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4tdG9vbGNoYWluLWV4dC08cmVwbGFjZWFibGU+cmVsZWFzZV92ZXJzaW9uPC9yZXBsYWNlYWJsZT4uc2gKIApAQCAtOTMsMTQgKzk0LDE1IEBACiAKICAgICAgICAgICAgICAgICAgICAgaTY4NiBvciB4ODZfNjQuCiAKLSAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZV90eXBlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIGltYWdlIGZvciB3aGljaCB0aGUgU0RLIHdhcyBidWlsdC4KKyAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZV90eXBlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIGltYWdlIGZvciB3aGljaCB0aGUgU0RLIHdhcyBidWlsdDoKKworICAgICAgICAgICAgICAgICAgICBjb3JlLWltYWdlLXNhdG8gb3IgY29yZS1pbWFnZS1taW5pbWFsCiAKICAgICAgICAgIDxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0dW5lZCB0YXJnZXQgYXJjaGl0ZWN0dXJlOgogCi0gICAgICAgICAgICAgICAgICAgIGk1ODYsIHg4Nl82NCwgcG93ZXJwYywgbWlwcywgYXJtdjdhIG9yIGFybXY1dGUKKyAgICAgICAgICAgICAgICAgICAgYWFyY2g2NCwgYXJtdjVlLCBjb3JlMi02NCwgaTU4NiwgbWlwczMycjIsIG1pcHM2NCwgcHBjNzQwMCwgb3IgY29ydGV4YThoZi1uZW9uCiAKLSAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWxlYXNlX3ZlcnNpb248L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHJlbGVhc2UgbnVtYmVyIG9mIHRoZQotICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Q6CisgICAgICAgICA8cmVwbGFjZWFibGU+cmVsZWFzZV92ZXJzaW9uPC9yZXBsYWNlYWJsZT4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSByZWxlYXNlIG51bWJlciBvZiB0aGUgWW9jdG8gUHJvamVjdDoKIAogICAgICAgICAgICAgICAgICAgICAmRElTVFJPOywgJkRJU1RSTzsrc25hcHNob3QKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KQEAgLTEzMSw5ICsxMzMsMTAgQEAKICAgICAgICAgICAgIGhvbWUgZGlyZWN0b3J5LgogICAgICAgICAgICAgWW91IGNhbiBjaG9vc2UgdG8gaW5zdGFsbCB0aGUgZXh0ZW5zaWJsZSBTREsgaW4gYW55IGxvY2F0aW9uIHdoZW4KICAgICAgICAgICAgIHlvdSBydW4gdGhlIGluc3RhbGxlci4KLSAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBsb2NhdGlvbiB5b3UgY2hvb3NlIG5lZWRzIHRvIGJlIHdyaXRhYmxlIGZvciB3aGljaGV2ZXIKLSAgICAgICAgICAgIHVzZXJzIG5lZWQgdG8gdXNlIHRoZSBTREssIHNpbmNlIGZpbGVzIHdpbGwgbmVlZCB0byBiZSB3cml0dGVuCi0gICAgICAgICAgICB1bmRlciB0aGF0IGRpcmVjdG9yeSBkdXJpbmcgdGhlIG5vcm1hbCBjb3Vyc2Ugb2Ygb3BlcmF0aW9uLgorICAgICAgICAgICAgSG93ZXZlciwgYmVjYXVzZSBmaWxlcyBuZWVkIHRvIGJlIHdyaXR0ZW4gdW5kZXIgdGhhdCBkaXJlY3RvcnkKKyAgICAgICAgICAgIGR1cmluZyB0aGUgbm9ybWFsIGNvdXJzZSBvZiBvcGVyYXRpb24sIHRoZSBsb2NhdGlvbiB5b3UgY2hvb3NlCisgICAgICAgICAgICBmb3IgaW5zdGFsbGF0aW9uIG11c3QgYmUgd3JpdGFibGUgZm9yIHdoaWNoZXZlcgorICAgICAgICAgICAgdXNlcnMgbmVlZCB0byB1c2UgdGhlIFNESy4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtMTQxLDI4ICsxNDQsMzQgQEAKICAgICAgICAgICAgIHRvb2xjaGFpbiB0YXJiYWxsIGZvciBhIDY0LWJpdCB4ODYgZGV2ZWxvcG1lbnQgaG9zdCBzeXN0ZW0gYW5kCiAgICAgICAgICAgICBhIDY0LWJpdCB4ODYgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KICAgICAgICAgICAgIFRoZSBleGFtcGxlIGFzc3VtZXMgdGhlIFNESyBpbnN0YWxsZXIgaXMgbG9jYXRlZCBpbgotICAgICAgICAgICAgPGZpbGVuYW1lPn4vRG93bmxvYWRzLzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPGZpbGVuYW1lPn4vRG93bmxvYWRzLzwvZmlsZW5hbWU+IGFuZCBoYXMgZXhlY3V0aW9uIHJpZ2h0cy4KICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIGRpcmVjdG9yeQogICAgICAgICAgICAgICAgIGludG8gd2hpY2ggeW91IGFyZSBpbnN0YWxsaW5nIHRoZSBTREssIHRoZSBpbnN0YWxsZXIKICAgICAgICAgICAgICAgICBub3RpZmllcyB5b3UgYW5kIGV4aXRzLgotICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGhhdmUgd3JpdGUgcGVybWlzc2lvbnMgaW4gdGhlIGRpcmVjdG9yeSBhbmQKLSAgICAgICAgICAgICAgICBydW4gdGhlIGluc3RhbGxlciBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBGb3IgdGhhdCBjYXNlLCBzZXQgdXAgdGhlIHByb3BlciBwZXJtaXNzaW9ucyBpbiB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgYW5kIHJ1biB0aGUgaW5zdGFsbGVyIGFnYWluLgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIC4vcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1taW5pbWFsLWNvcmUyLTY0LXRvb2xjaGFpbi1leHQtJkRJU1RSTzsuc2gKLSAgICAgUG9reSAoWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgRGlzdHJvKSBFeHRlbnNpYmxlIFNESyBpbnN0YWxsZXIgdmVyc2lvbiAmRElTVFJPOwotICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAkIC4vRG93bmxvYWRzL3Bva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2UtbWluaW1hbC1jb3JlMi02NC10b29sY2hhaW4tZXh0LTIuNS5zaAorICAgICBQb2t5IChZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBEaXN0cm8pIEV4dGVuc2libGUgU0RLIGluc3RhbGxlciB2ZXJzaW9uIDIuNQorICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICBFbnRlciB0YXJnZXQgZGlyZWN0b3J5IGZvciBTREsgKGRlZmF1bHQ6IH4vcG9reV9zZGspOgogICAgICBZb3UgYXJlIGFib3V0IHRvIGluc3RhbGwgdGhlIFNESyB0byAiL2hvbWUvc2NvdHRyaWYvcG9reV9zZGsiLiBQcm9jZWVkW1kvbl0/IFkKLSAgICAgRXh0cmFjdGluZyBTREsuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uZG9uZQorICAgICBFeHRyYWN0aW5nIFNESy4uLi4uLi4uLi4uLi4uZG9uZQogICAgICBTZXR0aW5nIGl0IHVwLi4uCiAgICAgIEV4dHJhY3RpbmcgYnVpbGR0b29scy4uLgogICAgICBQcmVwYXJpbmcgYnVpbGQgc3lzdGVtLi4uCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjUyCisgICAgIEluaXRpYWxpc2luZyB0YXNrczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIENoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eTogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIExvYWRpbmcgY2FjaGU6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIEluaXRpYWxpc2luZyB0YXNrczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCiAgICAgIGRvbmUKICAgICAgU0RLIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBzZXQgdXAgYW5kIGlzIHJlYWR5IHRvIGJlIHVzZWQuCiAgICAgIEVhY2ggdGltZSB5b3Ugd2lzaCB0byB1c2UgdGhlIFNESyBpbiBhIG5ldyBzaGVsbCBzZXNzaW9uLCB5b3UgbmVlZCB0byBzb3VyY2UgdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBlLmcuCiAgICAgICAkIC4gL2hvbWUvc2NvdHRyaWYvcG9reV9zZGsvZW52aXJvbm1lbnQtc2V0dXAtY29yZTItNjQtcG9reS1saW51eAorCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CkBAIC0xNzIsNyArMTgxLDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdGhlIFNESyBpbnN0YWxsZWQsIHlvdSBtdXN0IHJ1biB0aGUgU0RLIGVudmlyb25tZW50Ci0gICAgICAgICAgICBzZXR1cCBzY3JpcHQgYmVmb3JlIHlvdSBjYW4gYWN0dWFsbHkgdXNlIGl0LgorICAgICAgICAgICAgc2V0dXAgc2NyaXB0IGJlZm9yZSB5b3UgY2FuIGFjdHVhbGx5IHVzZSB0aGUgU0RLLgogICAgICAgICAgICAgVGhpcyBzZXR1cCBzY3JpcHQgcmVzaWRlcyBpbiB0aGUgZGlyZWN0b3J5IHlvdSBjaG9zZSB3aGVuIHlvdQogICAgICAgICAgICAgaW5zdGFsbGVkIHRoZSBTREssIHdoaWNoIGlzIGVpdGhlciB0aGUgZGVmYXVsdAogICAgICAgICAgICAgPGZpbGVuYW1lPnBva3lfc2RrPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9yIHRoZSBkaXJlY3RvcnkgeW91CkBAIC0xOTYsMzIgKzIwNSwxMyBAQAogICAgICBTREsgZW52aXJvbm1lbnQgbm93IHNldCB1cDsgYWRkaXRpb25hbGx5IHlvdSBtYXkgbm93IHJ1biBkZXZ0b29sIHRvIHBlcmZvcm0gZGV2ZWxvcG1lbnQgdGFza3MuCiAgICAgIFJ1biBkZXZ0b29sIC0taGVscCBmb3IgZnVydGhlciBkZXRhaWxzLgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgV2hlbiB5b3UgcnVuIHRoZSBzZXR1cCBzY3JpcHQsIG1hbnkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZQotICAgICAgICAgICAgZGVmaW5lZDoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES1RBUkdFVFNZU1JPT1QnPjxmaWxlbmFtZT5TREtUQVJHRVRTWVNST09UPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBwYXRoIHRvIHRoZSBzeXNyb290IHVzZWQgZm9yIGNyb3NzLWNvbXBpbGF0aW9uCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QS0dfQ09ORklHX1BBVEgnPjxmaWxlbmFtZT5QS0dfQ09ORklHX1BBVEg8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIHBhdGggdG8gdGhlIHRhcmdldCBwa2ctY29uZmlnIGZpbGVzCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT05GSUdfU0lURSc+PGZpbGVuYW1lPkNPTkZJR19TSVRFPC9maWxlbmFtZT48L3VsaW5rPiAtIEEgR05VIGF1dG9jb25mIHNpdGUgZmlsZSBwcmVjb25maWd1cmVkIGZvciB0aGUgdGFyZ2V0Ci0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DQyc+PGZpbGVuYW1lPkNDPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gdGhlIEMgY29tcGlsZXIKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNYWCc+PGZpbGVuYW1lPkNYWDwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuIHRoZSBDKysgY29tcGlsZXIKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNQUCc+PGZpbGVuYW1lPkNQUDwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvcgotICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQVMnPjxmaWxlbmFtZT5BUzwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuIHRoZSBhc3NlbWJsZXIKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxEJz48ZmlsZW5hbWU+TEQ8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biB0aGUgbGlua2VyCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1HREInPjxmaWxlbmFtZT5HREI8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biB0aGUgR05VIERlYnVnZ2VyCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TVFJJUCc+PGZpbGVuYW1lPlNUUklQPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gJ3N0cmlwJywgd2hpY2ggc3RyaXBzIHN5bWJvbHMKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJBTkxJQic+PGZpbGVuYW1lPlJBTkxJQjwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuICdyYW5saWInCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1PQkpDT1BZJz48ZmlsZW5hbWU+T0JKQ09QWTwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuICdvYmpjb3B5JwotICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItT0JKRFVNUCc+PGZpbGVuYW1lPk9CSkRVTVA8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biAnb2JqZHVtcCcKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUFSJz48ZmlsZW5hbWU+QVI8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biAnYXInCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1OTSc+PGZpbGVuYW1lPk5NPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gJ25tJwotICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVEFSR0VUX1BSRUZJWCc+PGZpbGVuYW1lPlRBUkdFVF9QUkVGSVg8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIHRvb2xjaGFpbiBiaW5hcnkgcHJlZml4IGZvciB0aGUgdGFyZ2V0IHRvb2xzCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DUk9TU19DT01QSUxFJz48ZmlsZW5hbWU+Q1JPU1NfQ09NUElMRTwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgdG9vbGNoYWluIGJpbmFyeSBwcmVmaXggZm9yIHRoZSB0YXJnZXQgdG9vbHMKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPTkZJR1VSRV9GTEFHUyc+PGZpbGVuYW1lPkNPTkZJR1VSRV9GTEFHUzwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBhcmd1bWVudHMgZm9yIEdOVSBjb25maWd1cmUKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNGTEFHUyc+PGZpbGVuYW1lPkNGTEFHUzwvZmlsZW5hbWU+PC91bGluaz4gLSBTdWdnZXN0ZWQgQyBmbGFncwotICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ1hYRkxBR1MnPjxmaWxlbmFtZT5DWFhGTEFHUzwvZmlsZW5hbWU+PC91bGluaz4gLSBTdWdnZXN0ZWQgQysrIGZsYWdzCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MREZMQUdTJz48ZmlsZW5hbWU+TERGTEFHUzwvZmlsZW5hbWU+PC91bGluaz4gLSBTdWdnZXN0ZWQgbGlua2VyIGZsYWdzIHdoZW4geW91IHVzZSBDQyB0byBsaW5rCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DUFBGTEFHUyc+PGZpbGVuYW1lPkNQUEZMQUdTPC9maWxlbmFtZT48L3VsaW5rPiAtIFN1Z2dlc3RlZCBwcmVwcm9jZXNzb3IgZmxhZ3MKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFJ1bm5pbmcgdGhlIHNldHVwIHNjcmlwdCBkZWZpbmVzIG1hbnkgZW52aXJvbm1lbnQgdmFyaWFibGVzIG5lZWRlZAorICAgICAgICAgICAgaW4gb3JkZXIgdG8gdXNlIHRoZSBTREsgKGUuZy4gPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DQyc+PGZpbGVuYW1lPkNDPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MRCc+PGZpbGVuYW1lPkxEPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkuCisgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBzZWUgYWxsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhlIHNjcmlwdAorICAgICAgICAgICAgZXhwb3J0cywgZXhhbWluZSB0aGUgaW5zdGFsbGF0aW9uIGZpbGUgaXRzZWxmLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0yNDAsMTUgKzIzMCwxNSBAQAogICAgICAgICAgICAgICAgIHRoZSBleHRlbnNpYmxlIFNESy4KICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIGhlbHAgeW91IGVhc2lseQogICAgICAgICAgICAgICAgIGRldmVsb3AgYW55IHByb2plY3Qgd2hvc2UgYnVpbGQgb3V0cHV0IG11c3QgYmUgcGFydCBvZiBhbgotICAgICAgICAgICAgICAgIGltYWdlIGJ1aWx0IHVzaW5nIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgIGltYWdlIGJ1aWx0IHVzaW5nIHRoZSBidWlsZCBzeXN0ZW0uCiAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQgbGluZSBpcyBvcmdhbml6ZWQKICAgICAgICAgICAgIHNpbWlsYXJseSB0bwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiBpbiB0aGF0IGl0IGhhcyBhCi0gICAgICAgICAgICBudW1iZXIgb2Ygc3ViLWNvbW1hbmRzIGZvciBlYWNoIGZ1bmN0aW9uLgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+IGluIHRoYXQgaXQKKyAgICAgICAgICAgIGhhcyBhIG51bWJlciBvZiBzdWItY29tbWFuZHMgZm9yIGVhY2ggZnVuY3Rpb24uCiAgICAgICAgICAgICBZb3UgY2FuIHJ1biA8ZmlsZW5hbWU+ZGV2dG9vbCAtLWhlbHA8L2ZpbGVuYW1lPiB0byBzZWUgYWxsIHRoZQogICAgICAgICAgICAgY29tbWFuZHMuCiAgICAgICAgICAgICA8bm90ZT4KQEAgLTI2MCw4ICsyNTAsOCBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaHJlZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHN1YmNvbW1hbmRzIHRoYXQgcHJvdmlkZQotICAgICAgICAgICAgZW50cnktcG9pbnRzIGludG8gZGV2ZWxvcG1lbnQgYXJlOgorICAgICAgICAgICAgVGhyZWUgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBzdWJjb21tYW5kcyBleGlzdCB0aGF0IHByb3ZpZGUKKyAgICAgICAgICAgIGVudHJ5LXBvaW50cyBpbnRvIGRldmVsb3BtZW50OgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPjwvZW1waGFzaXM+OgpAQCAtMjc4LDE3ICsyNjgsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgYW4gdXBkYXRlZCBzZXQgb2Ygc291cmNlIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgQXMgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwgInJlY2lwZXMiIHJlcHJlc2VudCBzb2Z0d2FyZQotICAgICAgICAgICAgcGFja2FnZXMgd2l0aGluIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4uCisgICAgICAgICAgICBBcyB3aXRoIHRoZSBidWlsZCBzeXN0ZW0sICJyZWNpcGVzIiByZXByZXNlbnQgc29mdHdhcmUgcGFja2FnZXMKKyAgICAgICAgICAgIHdpdGhpbiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LgogICAgICAgICAgICAgV2hlbiB5b3UgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+LCBhIHJlY2lwZSBpcwogICAgICAgICAgICAgYXV0b21hdGljYWxseSBjcmVhdGVkLgogICAgICAgICAgICAgV2hlbiB5b3UgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+LCB0aGUgc3BlY2lmaWVkCi0gICAgICAgICAgICBleGlzdGluZyByZWNpcGUgaXMgdXNlZCBpbiBvcmRlciB0byBkZXRlcm1pbmUgd2hlcmUgdG8gZ2V0IHRoZSBzb3VyY2UKLSAgICAgICAgICAgIGNvZGUgYW5kIGhvdyB0byBwYXRjaCBpdC4KKyAgICAgICAgICAgIGV4aXN0aW5nIHJlY2lwZSBpcyB1c2VkIGluIG9yZGVyIHRvIGRldGVybWluZSB3aGVyZSB0byBnZXQgdGhlCisgICAgICAgICAgICBzb3VyY2UgY29kZSBhbmQgaG93IHRvIHBhdGNoIGl0LgogICAgICAgICAgICAgSW4gYm90aCBjYXNlcywgYW4gZW52aXJvbm1lbnQgaXMgc2V0IHVwIHNvIHRoYXQgd2hlbiB5b3UgYnVpbGQgdGhlCiAgICAgICAgICAgICByZWNpcGUgYSBzb3VyY2UgdHJlZSB0aGF0IGlzIHVuZGVyIHlvdXIgY29udHJvbCBpcyB1c2VkIGluIG9yZGVyIHRvCiAgICAgICAgICAgICBhbGxvdyB5b3UgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSBzb3VyY2UgYXMgZGVzaXJlZC4KLSAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGJvdGggbmV3IHJlY2lwZXMgYW5kIHRoZSBzb3VyY2UgZ28gaW50byBhICJ3b3Jrc3BhY2UiCisgICAgICAgICAgICBCeSBkZWZhdWx0LCBuZXcgcmVjaXBlcyBhbmQgdGhlIHNvdXJjZSBnbyBpbnRvIGEgIndvcmtzcGFjZSIKICAgICAgICAgICAgIGRpcmVjdG9yeSB1bmRlciB0aGUgU0RLLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTMzNSwxMCArMzI1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBhIHJlY2lwZSBiYXNlZCBvbiBleGlzdGluZyBzb3VyY2UgY29kZS48L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIGEgc2hhcmVkIGRldmVsb3BtZW50IGVudmlyb25tZW50LCBpdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgdHlwaWNhbCB3aGVyZSBvdGhlciBkZXZlbG9wZXJzIGFyZSByZXNwb25zaWJsZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGljYWwgZm9yIG90aGVyIGRldmVsb3BlcnMgdG8gYmUgcmVzcG9uc2libGUgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpb3VzIGFyZWFzIG9mIHNvdXJjZSBjb2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgQXMgYSBkZXZlbG9wZXIsIHlvdSBhcmUgcHJvYmFibHkgaW50ZXJlc3RlZCBpbiB1c2luZwotICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzb3VyY2UgY29kZSBhcyBwYXJ0IG9mIHlvdXIgZGV2ZWxvcG1lbnQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc291cmNlIGNvZGUgYXMgcGFydCBvZiB5b3VyIGRldmVsb3BtZW50IHdpdGhpbgogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgICBBbGwgeW91IG5lZWQgaXMgYWNjZXNzIHRvIHRoZSBjb2RlLCBhIHJlY2lwZSwgYW5kIGEKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZWQgYXJlYSBpbiB3aGljaCB0byBkbyB5b3VyIHdvcmsuPC9wYXJhPgpAQCAtMzQ2LDEzOCArMzM2LDE2NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2l0aGluIHRoZSBkaWFncmFtLCB0aHJlZSBwb3NzaWJsZSBzY2VuYXJpb3MKICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQgaW50byB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gd29ya2Zsb3c6CiAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGVmdDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGVmdCBzY2VuYXJpbyByZXByZXNlbnRzIGEgY29tbW9uIHNpdHVhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgZXhpc3QgbG9jYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIHNpdHVhdGlvbiwgeW91IGp1c3QgbGV0IGl0IGdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0ZWQgdG8gdGhlIGRlZmF1bHQgd29ya3NwYWNlIC0geW91IGRvIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YW50IGl0IGluIHNvbWUgc3BlY2lmaWMgbG9jYXRpb24gb3V0c2lkZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBldmVyeXRoaW5nIHlvdSBuZWVkIHdpbGwgYmUgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxlZnQ8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxlZnQgc2NlbmFyaW8gaW4gdGhlIGZpZ3VyZSByZXByZXNlbnRzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uIHNpdHVhdGlvbiB3aGVyZSB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3QgbG9jYWxseSBhbmQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIHNpdHVhdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGlzIGV4dHJhY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZGVmYXVsdCB3b3Jrc3BhY2UgLSB5b3UgZG8gbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgdGhlIGZpbGVzIGluIHNvbWUgc3BlY2lmaWMgbG9jYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0c2lkZSBvZiB0aGUgd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBldmVyeXRoaW5nIHlvdSBuZWVkIHdpbGwgYmUgbG9jYXRlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgd29ya3NwYWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBhZGQgPHJlcGxhY2VhYmxlPnJlY2lwZSBmZXRjaHVyaTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGlzIGNvbW1hbmQsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBhIHJlY2lwZSBhbmQgYW4gYXBwZW5kIGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZSBhcyB3ZWxsIGFzIGV4dHJhY3RzIHRoZSB1cHN0cmVhbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgZmlsZXMgaW50byBhIGxvY2FsIEdpdCByZXBvc2l0b3J5IGFsc28KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSA8ZmlsZW5hbWU+c291cmNlczwvZmlsZW5hbWU+IGZvbGRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdHMgdGhlIHVwc3RyZWFtIHNvdXJjZSBmaWxlcyBpbnRvIGEgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c291cmNlczwvZmlsZW5hbWU+IGZvbGRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgdGhlbiBjcmVhdGVzIGEgcmVjaXBlIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPiBhbmQgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIGFwcGVuZCBmaWxlIGluIHRoZSB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgcHJvdmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4sIHRoZSBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VzIGFuIGF0dGVtcHQgdG8gZGV0ZXJtaW5lIHRoZSByZWNpcGUgbmFtZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NaWRkbGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1pZGRsZSBzY2VuYXJpbyBhbHNvIHJlcHJlc2VudHMgYSBzaXR1YXRpb24gd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IGV4aXN0IGxvY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWlkZGxlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtaWRkbGUgc2NlbmFyaW8gaW4gdGhlIGZpZ3VyZSBhbHNvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHJlc2VudHMgYSBzaXR1YXRpb24gd2hlcmUgdGhlIHNvdXJjZSBjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IGV4aXN0IGxvY2FsbHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGNvZGUgaXMgYWdhaW4gdXBzdHJlYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5lZWRzIHRvIGJlIGV4dHJhY3RlZCB0byBzb21lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIGFyZWEgLSB0aGlzIHRpbWUgb3V0c2lkZSBvZiB0aGUgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHJlcXVpcmVkLCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5cyBjcmVhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgR2l0IHJlcG9zaXRvcnkgbG9jYWxseSBkdXJpbmcgdGhlIGV4dHJhY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgcmVxdWlyZWQsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5cyBjcmVhdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIEdpdCByZXBvc2l0b3J5IGxvY2FsbHkgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBpbiB0aGlzIGNhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcyB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBpbiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaWRlbnRpZmllcyB3aGVyZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGxvY2F0ZSB0aGUgZXh0cmFjdGVkIGNvZGUgb3V0c2lkZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIHNwZWNpZnkgYW4gZW1wdHkgZGlyZWN0b3J5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBhZGQgPHJlcGxhY2VhYmxlPnJlY2lwZSBzcmN0cmVlIGZldGNodXJpPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBzdW1tYXJ5LCB0aGUgc291cmNlIGNvZGUgaXMgcHVsbGVkIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmZldGNodXJpPC9yZXBsYWNlYWJsZT4gYW5kIGV4dHJhY3RlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBsb2NhdGlvbiBkZWZpbmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5mZXRjaHVyaTwvcmVwbGFjZWFibGU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0ZWQgaW50byB0aGUgbG9jYXRpb24gZGVmaW5lZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+IGFzIGEgbG9jYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkuPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldpdGhpbiB3b3Jrc3BhY2UsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBib3RoIHRoZSByZWNpcGUgYW5kIGFuIGFwcGVuZCBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaXRoaW4gd29ya3NwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNyZWF0ZXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgbmFtZWQgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsb25nIHdpdGggYW4gYXNzb2NpYXRlZCBhcHBlbmQgZmlsZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SaWdodDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmlnaHQgc2NlbmFyaW8gcmVwcmVzZW50cyBhIHNpdHVhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgc291cmNlIHRyZWUgKHNyY3RyZWUpIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmlnaHQ8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJpZ2h0IHNjZW5hcmlvIGluIHRoZSBmaWd1cmUgcmVwcmVzZW50cyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbiB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBoYXMgYmVlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IHByZXBhcmVkIG91dHNpZGUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGNvbW1hbmQgbmFtZXMgdGhlIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaWRlbnRpZmllcyB3aGVyZSB0aGUgZXhpc3Rpbmcgc291cmNlIHRyZWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbG9jYXRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIHByb3ZpZGVzIGEgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBuYW1lIGFuZCBpZGVudGlmaWVzIHRoZSBleGlzdGluZyBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZSBsb2NhdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgYWRkIDxyZXBsYWNlYWJsZT5yZWNpcGUgc3JjdHJlZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgZXhhbWluZXMgdGhlIHNvdXJjZSBjb2RlIGFuZCBjcmVhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVjaXBlIGZvciBpdCBwbGFjaW5nIHRoZSByZWNpcGUgaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgZXhhbWluZXMgdGhlIHNvdXJjZSBjb2RlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgcmVjaXBlIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPiBmb3IgdGhlIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHBsYWNlcyB0aGUgcmVjaXBlIGludG8gdGhlIHdvcmtzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlY2F1c2UgdGhlIGV4dHJhY3RlZCBzb3VyY2UgY29kZSBhbHJlYWR5IGV4aXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCB0cnkgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsb2NhdGUgaXQgaW50byB0aGUgd29ya3NwYWNlIC0ganVzdCB0aGUgbmV3Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgaXMgcGxhY2VkIGluIHRoZSB3b3Jrc3BhY2UuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5CZWNhdXNlIHRoZSBleHRyYWN0ZWQgc291cmNlIGNvZGUgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHMsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZG9lcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHRvIHJlbG9jYXRlIHRoZSBzb3VyY2UgY29kZSBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UgLSBvbmx5IHRoZSBuZXcgcmVjaXBlIGlzIHBsYWNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgd29ya3NwYWNlLjwvcGFyYT4KIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Bc2lkZSBmcm9tIGEgcmVjaXBlIGZvbGRlciwgdGhlIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzbyBjcmVhdGVzIGFuIGFwcGVuZCBmb2xkZXIgYW5kIHBsYWNlcyBhbiBpbml0aWFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLmJiYXBwZW5kPC9maWxlbmFtZT4gd2l0aGluLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNvIGNyZWF0ZXMgYW4gYXNzb2NpYXRlZCBhcHBlbmQgZm9sZGVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZXMgYW4gaW5pdGlhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgd2l0aGluLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RWRpdCB0aGUgUmVjaXBlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgY2FuIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCBlZGl0LXJlY2lwZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FZGl0IHRoZSBSZWNpcGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGVkaXQtcmVjaXBlPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgIHRvIG9wZW4gdXAgdGhlIGVkaXRvciBhcyBkZWZpbmVkIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiRFRElUT1I8L2ZpbGVuYW1lPiBlbnZpcm9ubWVudCB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1vZGlmeSB0aGUgZmlsZToKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIGVkaXQtcmVjaXBlIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgRnJvbSB3aXRoaW4gdGhlIGVkaXRvciwgeW91IGNhbiBtYWtlIG1vZGlmaWNhdGlvbnMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgdGhhdCB0YWtlIGFmZmVjdCB3aGVuIHlvdSBidWlsZCBpdCBsYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZyb20gd2l0aGluIHRoZSBlZGl0b3IsIHlvdSBjYW4gbWFrZSBtb2RpZmljYXRpb25zIHRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIHRoYXQgdGFrZSBhZmZlY3Qgd2hlbiB5b3UgYnVpbGQgaXQgbGF0ZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCB0aGUgUmVjaXBlIG9yIFJlYnVpbGQgdGhlIEltYWdlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50IGluIHRoZSBmbG93LCB0aGUgbmV4dCBzdGVwIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSBkZXBlbmRzIG9uIHdoYXQgeW91IGFyZSBnb2luZyB0byBkbyB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgbmV3IGNvZGUuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IG5lZWQgdG8gdGFrZSB0aGUgYnVpbGQgb3V0cHV0IGFuZCBldmVudHVhbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlIGl0IHRvIHRoZSB0YXJnZXQgaGFyZHdhcmUsIHlvdSB3b3VsZCB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgUmVjaXBlIG9yIFJlYnVpbGQgdGhlIEltYWdlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmV4dCBzdGVwIHlvdSB0YWtlIGRlcGVuZHMgb24gd2hhdCB5b3UgYXJlIGdvaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB0byBkbyB3aXRoIHRoZSBuZXcgY29kZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBuZWVkIHRvIGV2ZW50dWFsbHkgbW92ZSB0aGUgYnVpbGQgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgdGFyZ2V0IGhhcmR3YXJlLCB1c2UgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgYnVpbGQgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorCiAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbiB0aGUgb3RoZXIgaGFuZCwgaWYgeW91IHdhbnQgYW4gaW1hZ2UgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW4gdGhlIHJlY2lwZSdzIHBhY2thZ2VzIGZvciBpbW1lZGlhdGUgZGVwbG95bWVudAotICAgICAgICAgICAgICAgICAgICAgICAgb250byBhIGRldmljZSAoZS5nLiBmb3IgdGVzdGluZyBwdXJwb3NlcyksIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluIHRoZSByZWNpcGUncyBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbW1lZGlhdGUgZGVwbG95bWVudCBvbnRvIGEgZGV2aWNlIChlLmcuIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZyBwdXJwb3NlcyksIHlvdSBjYW4gdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQtaW1hZ2U8L2ZpbGVuYW1lPiBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgYnVpbGQtaW1hZ2UgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRlcGxveSB0aGUgQnVpbGQgT3V0cHV0PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXBsb3kgdGhlIEJ1aWxkIE91dHB1dDwvZW1waGFzaXM+OgogICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIGJ1aWxkIG91dCB5b3VyIHJlY2lwZSwgeW91IHByb2JhYmx5IHdhbnQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIHNlZSBpZiB0aGUgcmVzdWx0aW5nIGJ1aWxkIG91dHB1dCB3b3JrcyBhcyBleHBlY3RlZCBvbiB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VlIGlmIHRoZSByZXN1bHRpbmcgYnVpbGQgb3V0cHV0IHdvcmtzIGFzIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgdGFyZ2V0IGhhcmR3YXJlLgogICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzdGVwIGFzc3VtZXMgeW91IGhhdmUgYSBwcmV2aW91c2x5IGJ1aWx0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdGhhdCBpcyBhbHJlYWR5IGVpdGhlciBydW5uaW5nIGluIFFFTVUgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIG9uIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBpdCBpcyBhc3N1bWVkIHRoYXQgZm9yIGRlcGxveW1lbnQgb2YgdGhlIGltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHRhcmdldCwgU1NIIGlzIGluc3RhbGxlZCBpbiB0aGUgaW1hZ2UgYW5kIGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIGlzIHJ1bm5pbmcgb24gcmVhbCBoYXJkd2FyZSB0aGF0IHlvdSBoYXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29yayBhY2Nlc3MgdG8gYW5kIGZyb20geW91ciBkZXZlbG9wbWVudCBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJ1bm5pbmcgb24gYWN0dWFsIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIGl0IGlzIGFzc3VtZWQgdGhhdCBmb3IgZGVwbG95bWVudCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB0byB0aGUgdGFyZ2V0LCBTU0ggaXMgaW5zdGFsbGVkIGluIHRoZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCwgaWYgdGhlIGltYWdlIGlzIHJ1bm5pbmcgb24gcmVhbCBoYXJkd2FyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgaGF2ZSBuZXR3b3JrIGFjY2VzcyB0byBhbmQgZnJvbSB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgbWFjaGluZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGVwbG95IHlvdXIgYnVpbGQgb3V0cHV0IHRvIHRoYXQgdGFyZ2V0IGhhcmR3YXJlIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRlcGxveSB5b3VyIGJ1aWxkIG91dHB1dCB0byB0aGF0IHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gY29tbWFuZDoKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIGRlcGxveS10YXJnZXQgPHJlcGxhY2VhYmxlPnJlY2lwZSB0YXJnZXQ8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBpcyBhIGxpdmUgdGFyZ2V0IG1hY2hpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgYXMgYW4gU1NIIHNlcnZlci48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IGlzIGEgbGl2ZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgcnVubmluZyBhcyBhbiBTU0ggc2VydmVyLjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiwgb2YgY291cnNlLCBhbHNvIGRlcGxveSB0aGUgaW1hZ2UgeW91IGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQtaW1hZ2U8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBhY3R1YWwgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGRvZXMgbm90IHByb3ZpZGUgYQotICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgY29tbWFuZCB0aGF0IGFsbG93cyB5b3UgdG8gZG8gdGhpcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4sIG9mIGNvdXJzZSwgYWxzbyBkZXBsb3kgdGhlIGltYWdlIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgdG8gYWN0dWFsIGhhcmR3YXJlIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQtaW1hZ2U8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIGRlcGxveSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHRvIGFjdHVhbCBoYXJkd2FyZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RmluaXNoIFlvdXIgV29yayBXaXRoIHRoZSBSZWNpcGU8L2VtcGhhc2lzPjoKQEAgLTQ5NCw4ICs1MTAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgR2l0IHJlcG9zaXRvcnkgaW4gdGhlIHNvdXJjZSB0cmVlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgbWVudGlvbmVkLCB0aGUgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbW92ZXMgdGhlIGZpbmFsIHJlY2lwZSB0byBpdHMgcGVybWFuZW50IGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgbWVudGlvbmVkLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQgbW92ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCByZWNpcGUgdG8gaXRzIHBlcm1hbmVudCBsYXllci4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgYSBmaW5hbCBwcm9jZXNzIG9mIHRoZQpAQCAtNTIwLDIxICs1MzcsMjAgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQgcHJlcGFyZXMgdGhlCi0gICAgICAgICAgICAgICAgd2F5IHRvIHdvcmsgb24gZXhpc3RpbmcgY29kZSB0aGF0IGFscmVhZHkgaGFzIGEgcmVjaXBlIGluCi0gICAgICAgICAgICAgICAgcGxhY2UuCi0gICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgaXMgZmxleGlibGUgZW5vdWdoIHRvIGFsbG93IHlvdSB0byBleHRyYWN0IGNvZGUsCi0gICAgICAgICAgICAgICAgc3BlY2lmeSB0aGUgZXhpc3RpbmcgcmVjaXBlLCBhbmQga2VlcCB0cmFjayBvZiBhbmQgZ2F0aGVyIGFueQotICAgICAgICAgICAgICAgIHBhdGNoIGZpbGVzIGZyb20gb3RoZXIgZGV2ZWxvcGVycyB0aGF0IGFyZQotICAgICAgICAgICAgICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29kZS4KKyAgICAgICAgICAgICAgICB3YXkgdG8gd29yayBvbiBleGlzdGluZyBjb2RlIHRoYXQgYWxyZWFkeSBoYXMgYSBsb2NhbCByZWNpcGUgaW4KKyAgICAgICAgICAgICAgICBwbGFjZSB0aGF0IGlzIHVzZWQgdG8gYnVpbGQgdGhlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGlzIGZsZXhpYmxlIGVub3VnaCB0byBhbGxvdyB5b3UgdG8gZXh0cmFjdCBjb2RlCisgICAgICAgICAgICAgICAgZnJvbSBhbiB1cHN0cmVhbSBzb3VyY2UsIHNwZWNpZnkgdGhlIGV4aXN0aW5nIHJlY2lwZSwgYW5kCisgICAgICAgICAgICAgICAga2VlcCB0cmFjayBvZiBhbmQgZ2F0aGVyIGFueSBwYXRjaCBmaWxlcyBmcm9tIG90aGVyIGRldmVsb3BlcnMKKyAgICAgICAgICAgICAgICB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvZGUuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIHBhcnRpY3VsYXIgc2NlbmFyaW8sIHRoZSBhcmd1bWVudHMgYW5kIG9wdGlvbnMKICAgICAgICAgICAgICAgICB5b3UgdXNlIHdpdGggPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gZm9ybSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICBjb21iaW5hdGlvbnMuCi0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBkaWFncmFtIHNob3dzIGNvbW1vbiBkZXZlbG9wbWVudCBmbG93cwotICAgICAgICAgICAgICAgIHlvdSB3b3VsZCB1c2Ugd2l0aCB0aGUgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBjb21tYW5kOgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGlhZ3JhbSBzaG93cyBjb21tb24gZGV2ZWxvcG1lbnQgZmxvd3MgZm9yIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQ6CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgpAQCAtNTQzLDE0MCArNTU5LDE4MSBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UHJlcGFyaW5nIHRvIE1vZGlmeSB0aGUgQ29kZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJlcGFyaW5nIHRvIE1vZGlmeSB0aGUgQ29kZTwvZW1waGFzaXM+OgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvcCBwYXJ0IG9mIHRoZSBmbG93IHNob3dzIHRocmVlIHNjZW5hcmlvcyBieSB3aGljaAogICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNvdWxkIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiB0bwogICAgICAgICAgICAgICAgICAgICAgICAgcHJlcGFyZSB0byB3b3JrIG9uIHNvdXJjZSBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgICAgIEVhY2ggc2NlbmFyaW8gYXNzdW1lcyB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHJlY2lwZSBleGlzdHMgaW4gc29tZSBsYXllciBleHRlcm5hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSBleGlzdHMgbG9jYWxseSBpbiBhIGxheWVyIGV4dGVybmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBzb3VyY2UgZmlsZXMgZXhpc3QgdXBzdHJlYW0gaW4gYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzb3VyY2UgZmlsZXMgZXhpc3QgZWl0aGVyIHVwc3RyZWFtIGluIGFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuLWV4dHJhY3RlZCBzdGF0ZSBvciBsb2NhbGx5IGluIGEgcHJldmlvdXNseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0ZWQgc3RhdGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdHlwaWNhbCBzaXR1YXRpb24gaXMgd2hlcmUgYW5vdGhlciBkZXZlbG9wZXIgaGFzCi0gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIHNvbWUgbGF5ZXIgZm9yIHVzZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBhIGxheWVyIGZvciB1c2Ugd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWlyIHJlY2lwZSBhbHJlYWR5IHJlc2lkZXMgaW4gdGhhdCBsYXllci4KICAgICAgICAgICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGVpciBzb3VyY2UgY29kZSBpcyByZWFkaWx5IGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgZWl0aGVyIHVwc3RyZWFtIG9yIGxvY2FsbHkuCiAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGVmdDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGVmdCBzY2VuYXJpbyByZXByZXNlbnRzIGEgY29tbW9uIHNpdHVhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgZXhpc3QgbG9jYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxlZnQ8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxlZnQgc2NlbmFyaW8gaW4gdGhlIGZpZ3VyZSByZXByZXNlbnRzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uIHNpdHVhdGlvbiB3aGVyZSB0aGUgc291cmNlIGNvZGUgZG9lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgZXhpc3QgbG9jYWxseSBhbmQgaXQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gYW4gdXBzdHJlYW0gc291cmNlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIHNpdHVhdGlvbiwgdGhlIHNvdXJjZSBpcyBleHRyYWN0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgZGVmYXVsdCB3b3Jrc3BhY2UgbG9jYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludG8gdGhlIGRlZmF1bHQgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UgbG9jYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUsIGluIHRoaXMgc2NlbmFyaW8sIGlzIGluIGl0cyBvd24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgb3V0c2lkZSB0aGUgd29ya3NwYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmxheWVybmFtZTwvcmVwbGFjZWFibGU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgY29tbWFuZCBpZGVudGlmaWVzIHRoZSByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJ5IGRlZmF1bHQgZXh0cmFjdHMgdGhlIHNvdXJjZSBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIGlkZW50aWZpZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBhbmQsIGJ5IGRlZmF1bHQsIGV4dHJhY3RzIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIG1vZGlmeSA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT5sb2NhdGVzIHRoZSByZWNpcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IHVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPmxvY2F0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGxvY2F0ZSB0aGUgc291cmNlIGNvZGUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSBsb2NhbCBwYXRjaCBmaWxlcyBmcm9tIG90aGVyIGRldmVsb3BlcnMgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCBwcm92aWRlIGFuIFVSTCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4gd2hlbiB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGlzIHNjZW5hcmlvLCBob3dldmVyLCBzaW5jZSBubwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+IGFyZ3VtZW50IGV4aXN0cywgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQgYnkgZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0cyB0aGUgc291cmNlIGZpbGVzIHRvIGEgR2l0IHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBsb2NhdGlvbiBmb3IgdGhlIGV4dHJhY3RlZCBzb3VyY2UgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgYXJlYSB3aXRoaW4gdGhlIHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGF0IHRoZSBjb21tYW5kIHNldHMgdXAgYm90aCB0aGUgc291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgYW5kIGFuIGFwcGVuZCBmaWxlIHdpdGhpbiB0aGUgd29ya3NwYWNlIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSByZW1haW5pbmcgaW4gaXRzIG9yaWdpbmFsIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzIHRvIGxvY2F0ZSB0aGUgc291cmNlIGNvZGUgYW5kIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBwYXRjaCBmaWxlcyBmcm9tIG90aGVyIGRldmVsb3BlcnMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldpdGggdGhpcyBzY2VuYXJpbywgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZXh0cmFjdCB0aGUgc291cmNlIGZpbGVzIHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50cyBpbnRvIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgR2l0IHN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBsb2NhdGlvbiBmb3IgdGhlIGV4dHJhY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgaXMgdGhlIGRlZmF1bHQgYXJlYSB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IGlzIHRoYXQgdGhlIGNvbW1hbmQgc2V0cyB1cCBib3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgY29kZSBhbmQgYW4gYXBwZW5kIGZpbGUgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2Ugd2hpbGUgdGhlIHJlY2lwZSByZW1haW5zIGluIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCBsb2NhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NaWRkbGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1pZGRsZSBzY2VuYXJpbyByZXByZXNlbnRzIGEgc2l0dWF0aW9uIHdoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgY29kZSBhbHNvIGRvZXMgbm90IGV4aXN0IGxvY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWlkZGxlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtaWRkbGUgc2NlbmFyaW8gaW4gdGhlIGZpZ3VyZSByZXByZXNlbnRzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBhbHNvIGRvZXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0IGxvY2FsbHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGNvZGUgaXMgYWdhaW4gdXBzdHJlYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5lZWRzIHRvIGJlIGV4dHJhY3RlZCB0byBzb21lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIGFyZWEgYXMgYSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSwgaW4gdGhpcyBzY2VuYXJpbywgaXMgYWdhaW4gaW4gaXRzIG93bgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllciBvdXRzaWRlIHRoZSB3b3Jrc3BhY2UuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlLCBpbiB0aGlzIHNjZW5hcmlvLCBpcyBhZ2FpbiBsb2NhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaW4gaXRzIG93biBsYXllciBvdXRzaWRlIHRoZSB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGNvbW1hbmQgdGVsbHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3aGF0IHJlY2lwZSB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRvIHdvcmsgYW5kLCBpbiB0aGlzIGNhc2UsIGlkZW50aWZpZXMgYSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhIGZvciB0aGUgZXh0cmFjdGVkIHNvdXJjZSBmaWxlcyB0aGF0IGlzIG91dHNpZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGRlZmF1bHQgd29ya3NwYWNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB0byB3b3JrIGFuZCwgaW4gdGhpcyBjYXNlLCBpZGVudGlmaWVzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgYXJlYSBmb3IgdGhlIGV4dHJhY3RlZCBzb3VyY2UgZmlsZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBvdXRzaWRlIG9mIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBtb2RpZnkgPHJlcGxhY2VhYmxlPnJlY2lwZSBzcmN0cmVlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgcHJvdmlkZSBhIFVSTCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4gdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgd2l0aCBhbGwgZXh0cmFjdGlvbnMsIHRoZSBjb21tYW5kIHVzZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSdzIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdG8gbG9jYXRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIGZpbGVzIGFyZSBsb2NhdGVkLCB0aGUgY29tbWFuZCBieSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RzIHRoZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGluZyB0aGUgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCBpbnN0cnVjdHMgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3aGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBwbGFjZSB0aGUgZXh0cmFjdGVkIHNvdXJjZS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUncyA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgdG8gbG9jYXRlIHRoZSBzb3VyY2UgZmlsZXMgYW5kIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIHBhdGNoIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBmaWxlcyBhcmUgbG9jYXRlZCwgdGhlIGNvbW1hbmQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBleHRyYWN0cyB0aGVtIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPi48L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2l0aGluIHdvcmtzcGFjZSwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGFuIGFwcGVuZCBmaWxlIGZvciB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaXRoaW4gd29ya3NwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNyZWF0ZXMgYW4gYXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIHRoZSByZWNpcGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgcmVtYWlucyBpbiBpdHMgb3JpZ2luYWwgbG9jYXRpb24gYnV0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgZmlsZXMgYXJlIGV4dHJhY3RlZCB0byB0aGUgbG9jYXRpb24geW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIHdpdGggPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSBmaWxlcyBhcmUgZXh0cmFjdGVkIHRvIHRoZSBsb2NhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgcHJvdmlkZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UmlnaHQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJpZ2h0IHNjZW5hcmlvIHJlcHJlc2VudHMgYSBzaXR1YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdGhlIHNvdXJjZSB0cmVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+KSBleGlzdHMgYXMgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IGV4dHJhY3RlZCBHaXQgc3RydWN0dXJlIG91dHNpZGUgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJpZ2h0PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByaWdodCBzY2VuYXJpbyBpbiB0aGUgZmlndXJlIHJlcHJlc2VudHMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb24gd2hlcmUgdGhlIHNvdXJjZSB0cmVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+KSBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBsb2NhbGx5IGFzIGEgcHJldmlvdXNseSBleHRyYWN0ZWQgR2l0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSBvdXRzaWRlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgcmVjaXBlIGFsc28gZXhpc3RzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V3aGVyZSBpbiBpdHMgb3duIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNld2hlcmUgbG9jYWxseSBpbiBpdHMgb3duIGxheWVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIHRlbGxzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdGhlIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHdoaWNoIHRvIHdvcmssIHVzZXMgdGhlICItbiIgb3B0aW9uIHRvIGluZGljYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBkb2VzIG5vdCBuZWVkIHRvIGJlIGV4dHJhY3RlZCwgYW5kIHVzZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiB0byBwb2ludCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseSBleHRyYWN0ZWQgc291cmNlIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHdoaWNoIHRvIHdvcmssIHVzZXMgdGhlICItbiIgb3B0aW9uIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlIHNvdXJjZSBkb2VzIG5vdCBuZWVkIHRvIGJlIGV4dHJhY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZXMgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludCB0byB0aGUgcHJldmlvdXNseSBleHRyYWN0ZWQgc291cmNlIGZpbGVzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBtb2RpZnkgLW4gPHJlcGxhY2VhYmxlPnJlY2lwZSBzcmN0cmVlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSB0aGUgY29tbWFuZCBmaW5pc2hlcywgaXQgY3JlYXRlcyBvbmx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGFwcGVuZCBmaWxlIGZvciB0aGUgcmVjaXBlIGluIHRoZSB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGFwcGVuZCBmaWxlIGZvciB0aGUgcmVjaXBlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSBhbmQgdGhlIHNvdXJjZSBjb2RlIHJlbWFpbiBpbiB0aGVpcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCBsb2NhdGlvbnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RWRpdCB0aGUgU291cmNlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHVzZWQgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCB5b3UgYXJlIGZyZWUgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSBzb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RWRpdCB0aGUgU291cmNlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHVzZWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiBjb21tYW5kLCB5b3UgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBmcmVlIHRvIG1ha2UgY2hhbmdlcyB0byB0aGUgc291cmNlIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYW55IGVkaXRvciB5b3UgbGlrZSB0byBtYWtlIGFuZCBzYXZlCiAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIHNvdXJjZSBjb2RlIG1vZGlmaWNhdGlvbnMuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCB0aGUgUmVjaXBlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHVwZGF0ZWQgdGhlIHNvdXJjZSBmaWxlcywgeW91IGNhbiBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBSZWNpcGUgb3IgUmVidWlsZCB0aGUgSW1hZ2U8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXh0IHN0ZXAgeW91IHRha2UgZGVwZW5kcyBvbiB3aGF0IHlvdSBhcmUgZ29pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRvIHdpdGggdGhlIG5ldyBjb2RlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IG5lZWQgdG8gZXZlbnR1YWxseSBtb3ZlIHRoZSBidWlsZCBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSB0YXJnZXQgaGFyZHdhcmUsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBidWlsZCA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uIHRoZSBvdGhlciBoYW5kLCBpZiB5b3Ugd2FudCBhbiBpbWFnZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbiB0aGUgcmVjaXBlJ3MgcGFja2FnZXMgZnJvbSB0aGUgd29ya3NwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW1tZWRpYXRlIGRlcGxveW1lbnQgb250byBhIGRldmljZSAoZS5nLiBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbmcgcHVycG9zZXMpLCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGJ1aWxkLWltYWdlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5EZXBsb3kgdGhlIEJ1aWxkIE91dHB1dDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGVwbG95IHRoZSBCdWlsZCBPdXRwdXQ8L2VtcGhhc2lzPjoKICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBidWlsZCBvdXQgeW91ciByZWNpcGUsIHlvdSBwcm9iYWJseSB3YW50IHRvIHNlZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIHJlc3VsdGluZyBidWlsZCBvdXRwdXQgd29ya3MgYXMgZXhwZWN0ZWQgb24gdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gYnVpbGQgb3V0IHlvdXIgcmVjaXBlLCB5b3UgcHJvYmFibHkgd2FudCB0bworICAgICAgICAgICAgICAgICAgICAgICAgc2VlIGlmIHRoZSByZXN1bHRpbmcgYnVpbGQgb3V0cHV0IHdvcmtzIGFzIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICBvbiB0YXJnZXQgaGFyZHdhcmUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN0ZXAgYXNzdW1lcyB5b3UgaGF2ZSBhIHByZXZpb3VzbHkgYnVpbHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB0aGF0IGlzIGFscmVhZHkgZWl0aGVyIHJ1bm5pbmcgaW4gUUVNVSBvcgpAQCAtNjg2LDE5ICs3NDMsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW1hZ2UgaXMgcnVubmluZyBvbiByZWFsIGhhcmR3YXJlIHRoYXQgeW91IGhhdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrIGFjY2VzcyB0byBhbmQgZnJvbSB5b3VyIGRldmVsb3BtZW50IG1hY2hpbmUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRlcGxveSB5b3VyIGJ1aWxkIG91dHB1dCB0byB0aGF0IHRhcmdldCBoYXJkd2FyZSBieQotICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkZXBsb3kgeW91ciBidWlsZCBvdXRwdXQgdG8gdGhhdCB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQ6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IDxyZXBsYWNlYWJsZT5yZWNpcGUgdGFyZ2V0PC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gaXMgYSBsaXZlIHRhcmdldCBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIGFzIGFuIFNTSCBzZXJ2ZXIuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBpcyBhIGxpdmUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIHJ1bm5pbmcgYXMgYW4gU1NIIHNlcnZlci48L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4sIG9mIGNvdXJzZSwgYWxzbyBkZXBsb3kgdGhlIGltYWdlIHlvdSBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWN0dWFsIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCBwcm92aWRlIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIGRvIHRoaXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuLCBvZiBjb3Vyc2UsIHVzZSBvdGhlciBtZXRob2RzIHRvIGRlcGxveQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIHlvdSBidWlsdCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIGNvbW1hbmQgdG8gZGVwbG95IHRoZSBpbWFnZSB0byBhY3R1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5pc2ggWW91ciBXb3JrIFdpdGggdGhlIFJlY2lwZTwvZW1waGFzaXM+OgpAQCAtNzA3LDI4ICs3NjcsMzAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5LCB1cGRhdGVzIHRoZSByZWNpcGUgdG8gcG9pbnQgdG8gdGhlbQogICAgICAgICAgICAgICAgICAgICAgICAgKG9yIGNyZWF0ZXMgYSA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSB0byBkbwogICAgICAgICAgICAgICAgICAgICAgICAgc28sIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWVkIGRlc3RpbmF0aW9uIGxheWVyKSwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGVuIHJlc2V0cyB0aGUgcmVjaXBlIHNvIHRoYXQgdGhlIHJlY2lwZSBpcyBidWlsdCBub3JtYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gZnJvbSB0aGUgd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiByZXNldHMgdGhlIHJlY2lwZSBzbyB0aGF0IHRoZSByZWNpcGUgaXMgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGx5IHJhdGhlciB0aGFuIGZyb20gdGhlIHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIGZpbmlzaCA8cmVwbGFjZWFibGU+cmVjaXBlIGxheWVyPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueSBjaGFuZ2VzIHlvdSB3YW50IHRvIHR1cm4gaW50byBwYXRjaGVzIG11c3QgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXR0ZWQgdG8gdGhlIEdpdCByZXBvc2l0b3J5IGluIHRoZSBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFnZWQgYW5kIGNvbW1pdHRlZCB3aXRoaW4gdGhlIGxvY2FsIEdpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYmVmb3JlIHlvdSB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlY2F1c2UgdGhlcmUgaXMgbm8gbmVlZCB0byBtb3ZlIHRoZSByZWNpcGUsCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBmaW5pc2g8L2ZpbGVuYW1lPiBlaXRoZXIgdXBkYXRlcyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsIHJlY2lwZSBpbiB0aGUgb3JpZ2luYWwgbGF5ZXIgb3IgdGhlIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gaW4gYSBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyIGFzIHByb3ZpZGVkIGJ5IDxyZXBsYWNlYWJsZT5sYXllcjwvcmVwbGFjZWFibGU+LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBhIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBsYXllciBhcyBwcm92aWRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmxheWVyPC9yZXBsYWNlYWJsZT4uPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BcyBhIGZpbmFsIHByb2Nlc3Mgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBmaW5pc2g8L2ZpbGVuYW1lPiBjb21tYW5kLCB0aGUgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBzdGFuZGFyZCBsYXllcnMgYW5kIHRoZSB1cHN0cmVhbSBzb3VyY2UgaXMKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmVkIHNvIHRoYXQgeW91IGNhbiBidWlsZCB0aGUgcmVjaXBlIGZyb20gdGhvc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZWFzIHJhdGhlciB0aGFuIHRoZSB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBhcmVhcyByYXRoZXIgdGhhbiBmcm9tIHRoZSB3b3Jrc3BhY2UuCiAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgcmVzZXQ8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gcHV0IHRoaW5ncyBiYWNrIHNob3VsZCB5b3UgZGVjaWRlIHlvdQpAQCAtNzQ1LDIyICs4MDcsMzYgQEAKICAgICAgICAgICAgIDx0aXRsZT5Vc2UgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IHRvIENyZWF0ZSBhIFZlcnNpb24gb2YgdGhlIFJlY2lwZSB0aGF0IFN1cHBvcnRzIGEgTmV3ZXIgVmVyc2lvbiBvZiB0aGUgU29mdHdhcmU8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGNvbW1hbmQgdXBkYXRlcwotICAgICAgICAgICAgICAgIGFuIGV4aXN0aW5nIHJlY2lwZSBzbyB0aGF0IHlvdSBjYW4gYnVpbGQgaXQgZm9yIGFuIHVwZGF0ZWQKLSAgICAgICAgICAgICAgICBzZXQgb2Ygc291cmNlIGZpbGVzLgotICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGlzIGZsZXhpYmxlIGVub3VnaCB0byBhbGxvdyB5b3UgdG8gc3BlY2lmeQotICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlIHJldmlzaW9uIGFuZCB2ZXJzaW9uaW5nIHNjaGVtZXMsIGV4dHJhY3QgY29kZSBpbnRvCi0gICAgICAgICAgICAgICAgb3Igb3V0IG9mIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZSwgYW5kCi0gICAgICAgICAgICAgICAgd29yayB3aXRoIGFueSBzb3VyY2UgZmlsZSBmb3JtcyB0aGF0IHRoZSBmZXRjaGVycyBzdXBwb3J0LgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gY29tbWFuZCB1cGdyYWRlcworICAgICAgICAgICAgICAgIGFuIGV4aXN0aW5nIHJlY2lwZSB0byB0aGF0IG9mIGEgbW9yZSB1cC10by1kYXRlIHZlcnNpb24KKyAgICAgICAgICAgICAgICBmb3VuZCB1cHN0cmVhbS4KKyAgICAgICAgICAgICAgICBUaHJvdWdob3V0IHRoZSBsaWZlIG9mIHNvZnR3YXJlLCByZWNpcGVzIGNvbnRpbnVhbGx5IHVuZGVyZ28KKyAgICAgICAgICAgICAgICB2ZXJzaW9uIHVwZ3JhZGVzIGJ5IHRoZWlyIHVwc3RyZWFtIHB1Ymxpc2hlcnMuCisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHdvcmtmbG93IHRvIG1ha2Ugc3VyZSB5b3VyIHJlY2lwZXMgeW91IGFyZSB1c2luZyBmb3IgYnVpbGRzCisgICAgICAgICAgICAgICAgYXJlIHVwLXRvLWRhdGUgd2l0aCB0aGVpciB1cHN0cmVhbSBjb3VudGVycGFydHMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFNldmVyYWwgbWV0aG9kcyBleGlzdCBieSB3aGljaCB5b3UgY2FuIHVwZ3JhZGUgcmVjaXBlcyAtCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiBoYXBwZW5zIHRvIGJlIG9uZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZWFkIGFib3V0IGFsbCB0aGUgbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGUgcmVjaXBlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dzLXVwZ3JhZGluZy1yZWNpcGVzJz5VcGdyYWRpbmcgUmVjaXBlczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIHBhcnRpY3VsYXIgc2NlbmFyaW8sIHRoZSBhcmd1bWVudHMgYW5kIG9wdGlvbnMKLSAgICAgICAgICAgICAgICB5b3UgdXNlIHdpdGggPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGZvcm0gZGlmZmVyZW50Ci0gICAgICAgICAgICAgICAgY29tYmluYXRpb25zLgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGlhZ3JhbSBzaG93cyBhIGNvbW1vbiBkZXZlbG9wbWVudCBmbG93Ci0gICAgICAgICAgICAgICAgeW91IHdvdWxkIHVzZSB3aXRoIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiBjb21tYW5kIGlzIGZsZXhpYmxlCisgICAgICAgICAgICAgICAgZW5vdWdoIHRvIGFsbG93IHlvdSB0byBzcGVjaWZ5IHNvdXJjZSBjb2RlIHJldmlzaW9uIGFuZAorICAgICAgICAgICAgICAgIHZlcnNpb25pbmcgc2NoZW1lcywgZXh0cmFjdCBjb2RlIGludG8gb3Igb3V0IG9mIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXZ0b29sLXRoZS13b3Jrc3BhY2UtbGF5ZXItc3RydWN0dXJlJz53b3Jrc3BhY2U8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICBhbmQgd29yayB3aXRoIGFueSBzb3VyY2UgZmlsZSBmb3JtcyB0aGF0IHRoZSBmZXRjaGVycyBzdXBwb3J0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGRpYWdyYW0gc2hvd3MgdGhlIGNvbW1vbiBkZXZlbG9wbWVudCBmbG93CisgICAgICAgICAgICAgICAgdXNlZCB3aXRoIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gY29tbWFuZDoKICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC03NjksMTEwICs4NDUsMTQyIEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Jbml0aWF0ZSB0aGUgVXBncmFkZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvcCBwYXJ0IG9mIHRoZSBmbG93IHNob3dzIGEgdHlwaWNhbCBzY2VuYXJpbyBieSB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNvdWxkIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWF0ZSB0aGUgVXBncmFkZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvcCBwYXJ0IG9mIHRoZSBmbG93IHNob3dzIHRoZSB0eXBpY2FsIHNjZW5hcmlvIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB5b3UgdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgZXhpc3Q6CiAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgcmVjaXBlIGV4aXN0cyBpbiBzb21lIGxheWVyIGV4dGVybmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIGV4aXN0cyBpbiBhIGxvY2FsIGxheWVyIGV4dGVybmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBzb3VyY2UgZmlsZXMgZm9yIHRoZSBuZXcgcmVsZWFzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdCBhZGphY2VudCB0byB0aGUgc2FtZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc291cmNlIGZpbGVzIGZvciB0aGUgbmV3IHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3QgaW4gdGhlIHNhbWUgbG9jYXRpb24gcG9pbnRlZCB0byBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSByZWNpcGUgKGUuZy4gYSB0YXJiYWxsIHdpdGggdGhlIG5ldyB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBpbiB0aGUgbmFtZSwgb3IgYXMgYSBkaWZmZXJlbnQgcmV2aXNpb24gaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVwc3RyZWFtIEdpdCByZXBvc2l0b3J5KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHJlY2lwZSAoZS5nLiBhIHRhcmJhbGwgd2l0aCB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gbnVtYmVyIGluIHRoZSBuYW1lLCBvciBhcyBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbiBpbiB0aGUgdXBzdHJlYW0gR2l0IHJlcG9zaXRvcnkpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgQSBjb21tb24gc2l0dWF0aW9uIGlzIHdoZXJlIHRoaXJkLXBhcnR5IHNvZnR3YXJlIGhhcwogICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJnb25lIGEgcmV2aXNpb24gc28gdGhhdCBpdCBoYXMgYmVlbiB1cGdyYWRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgeW91IGhhdmUgYWNjZXNzIHRvIGlzIGxpa2VseSBpbiB5b3VyIG93biBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgeW91IGhhdmUgYWNjZXNzIHRvIGlzIGxpa2VseSBpbiB5b3VyIG93bgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCB5b3UgbmVlZCB0byB1cGdyYWRlIHRoZSByZWNpcGUgdG8gdXNlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZXIgdmVyc2lvbiBvZiB0aGUgc29mdHdhcmU6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCB1cGdyYWRlIC1WIDxyZXBsYWNlYWJsZT52ZXJzaW9uIHJlY2lwZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RzIHNvdXJjZSBjb2RlIGludG8gdGhlIDxmaWxlbmFtZT5zb3VyY2VzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpbiB0aGUgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGNvZGUgZXh0cmFjdGVkIHRvIGFueSBvdGhlciBsb2NhdGlvbiwgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIHByb3ZpZGUgdGhlIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uYWwgYXJndW1lbnQgd2l0aCB0aGUgY29tbWFuZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBleHRyYWN0cyBzb3VyY2UgY29kZSBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNvdXJjZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXZ0b29sLXRoZS13b3Jrc3BhY2UtbGF5ZXItc3RydWN0dXJlJz53b3Jrc3BhY2U8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRoZSBjb2RlIGV4dHJhY3RlZCB0byBhbnkgb3RoZXIgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBwcm92aWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBwb3NpdGlvbmFsIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBjb21tYW5kIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCB1cGdyYWRlIC1WIDxyZXBsYWNlYWJsZT52ZXJzaW9uIHJlY2lwZSBzcmN0cmVlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIGluIHRoaXMgZXhhbXBsZSwgdGhlICItViIgb3B0aW9uIGlzIHVzZWQgdG8gc3BlY2lmeQotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgIi1WIiBvcHRpb24gc3BlY2lmaWVzIHRoZSBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkb24ndCB1c2UgIi1WIiwgdGhlIGNvbW1hbmQgdXBncmFkZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHRvIHRoZSBsYXRlc3QgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBzb3VyY2UgZmlsZXMgcG9pbnRlZCB0byBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50IGluIHRoZSByZWNpcGUgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBpbiBhIEdpdCByZXBvc2l0b3J5LCB5b3UgbXVzdCBwcm92aWRlIHRoZSAiLVMiIG9wdGlvbiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgYSByZXZpc2lvbiBmb3IgdGhlIHNvZnR3YXJlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50IGluIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBpbiBhIEdpdCByZXBvc2l0b3J5LCB5b3UgbXVzdCBwcm92aWRlIHRoZSAiLVMiCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gYW5kIHNwZWNpZnkgYSByZXZpc2lvbiBmb3IgdGhlIHNvZnR3YXJlLjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGxvY2F0ZXMgdGhlIHJlY2lwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0IHVzZXMgdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdmFyaWFibGUgdG8gbG9jYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIGNvZGUgYW5kIGFueSBsb2NhbCBwYXRjaCBmaWxlcyBmcm9tIG90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wZXJzIGFyZSBsb2NhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGxvY2F0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUsIGl0IHVzZXMgdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGxvY2F0ZSB0aGUgc291cmNlIGNvZGUgYW5kIGFueSBsb2NhbCBwYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgZnJvbSBvdGhlciBkZXZlbG9wZXJzLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGF0IHRoZSBjb21tYW5kIHNldHMgdXAgdGhlIHNvdXJjZQogICAgICAgICAgICAgICAgICAgICAgICAgY29kZSwgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSByZWNpcGUsIGFuZCBhbiBhcHBlbmQgZmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgYWxsIHdpdGhpbiB0aGUgd29ya3NwYWNlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UmVzb2x2ZSBhbnkgQ29uZmxpY3RzIGNyZWF0ZWQgYnkgdGhlIFVwZ3JhZGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHRoZXJlIGNvdWxkIGJlIHNvbWUgY29uZmxpY3RzIGR1ZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvZnR3YXJlIGJlaW5nIHVwZ3JhZGVkIHRvIGEgbmV3IHZlcnNpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHdvdWxkIG9jY3VyIGlmIHlvdXIgcmVjaXBlIHNwZWNpZmllcyBzb21lIHBhdGNoIGZpbGVzIGluCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHRoYXQgY29uZmxpY3Qgd2l0aCBjaGFuZ2VzCi0gICAgICAgICAgICAgICAgICAgICAgICBtYWRlIGluIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgc29mdHdhcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB5b3UgbmVlZCB0byByZXNvbHZlIHRoZSBjb25mbGljdHMKKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlc29sdmUgYW55IENvbmZsaWN0cyBjcmVhdGVkIGJ5IHRoZSBVcGdyYWRlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBDb25mbGljdHMgY291bGQgZXhpc3QgZHVlIHRvIHRoZSBzb2Z0d2FyZSBiZWluZworICAgICAgICAgICAgICAgICAgICAgICAgdXBncmFkZWQgdG8gYSBuZXcgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbmZsaWN0cyBvY2N1ciBpZiB5b3VyIHJlY2lwZSBzcGVjaWZpZXMgc29tZSBwYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgaW4gPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB0aGF0IGNvbmZsaWN0CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGNoYW5nZXMgbWFkZSBpbiB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHN1Y2ggY2FzZXMsIHlvdSBuZWVkIHRvIHJlc29sdmUgdGhlIGNvbmZsaWN0cwogICAgICAgICAgICAgICAgICAgICAgICAgYnkgZWRpdGluZyB0aGUgc291cmNlIGFuZCBmb2xsb3dpbmcgdGhlIG5vcm1hbAogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCByZWJhc2U8L2ZpbGVuYW1lPiBjb25mbGljdCByZXNvbHV0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlZm9yZSBtb3Zpbmcgb250byB0aGUgbmV4dCBzdGVwLCBiZSBzdXJlIHRvIHJlc29sdmUgYW55Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGNvbmZsaWN0cyBjcmVhdGVkIHRocm91Z2ggdXNlIG9mIGEgbmV3ZXIgb3IgZGlmZmVyZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBzb2Z0d2FyZS4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QmVmb3JlIG1vdmluZyBvbnRvIHRoZSBuZXh0IHN0ZXAsIGJlIHN1cmUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUgYW55IHN1Y2ggY29uZmxpY3RzIGNyZWF0ZWQgdGhyb3VnaCB1c2Ugb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZXIgb3IgZGlmZmVyZW50IHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgdGhlIFJlY2lwZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB5b3VyIHJlY2lwZSBpbiBvcmRlciwgeW91IGNhbiBidWlsZCBpdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZWl0aGVyIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+IG9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgRWl0aGVyIG1ldGhvZCBwcm9kdWNlcyBidWlsZCBvdXRwdXQgdGhhdCBpcyBzdG9yZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGluCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBSZWNpcGUgb3IgUmVidWlsZCB0aGUgSW1hZ2U8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXh0IHN0ZXAgeW91IHRha2UgZGVwZW5kcyBvbiB3aGF0IHlvdSBhcmUgZ29pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRvIHdpdGggdGhlIG5ldyBjb2RlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IG5lZWQgdG8gZXZlbnR1YWxseSBtb3ZlIHRoZSBidWlsZCBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSB0YXJnZXQgaGFyZHdhcmUsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBidWlsZCA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uIHRoZSBvdGhlciBoYW5kLCBpZiB5b3Ugd2FudCBhbiBpbWFnZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbiB0aGUgcmVjaXBlJ3MgcGFja2FnZXMgZnJvbSB0aGUgd29ya3NwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW1tZWRpYXRlIGRlcGxveW1lbnQgb250byBhIGRldmljZSAoZS5nLiBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbmcgcHVycG9zZXMpLCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGJ1aWxkLWltYWdlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5EZXBsb3kgdGhlIEJ1aWxkIE91dHB1dDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGVwbG95IHRoZSBCdWlsZCBPdXRwdXQ8L2VtcGhhc2lzPjoKICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvciA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IHRvIGJ1aWxkIG91dCB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUsIHlvdSBwcm9iYWJseSB3YW50IHRvIHNlZSBpZiB0aGUgcmVzdWx0aW5nIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgd29ya3MgYXMgZXhwZWN0ZWQgb24gdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvciA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IHRvIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIHJlY2lwZSwgeW91IHByb2JhYmx5IHdhbnQgdG8gc2VlIGlmIHRoZSByZXN1bHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIG91dHB1dCB3b3JrcyBhcyBleHBlY3RlZCBvbiB0YXJnZXQgaGFyZHdhcmUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN0ZXAgYXNzdW1lcyB5b3UgaGF2ZSBhIHByZXZpb3VzbHkgYnVpbHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB0aGF0IGlzIGFscmVhZHkgZWl0aGVyIHJ1bm5pbmcgaW4gUUVNVSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgb24gYWN0dWFsIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIGl0IGlzIGFzc3VtZWQgdGhhdCBmb3IgZGVwbG95bWVudCBvZiB0aGUgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgdGFyZ2V0LCBTU0ggaXMgaW5zdGFsbGVkIGluIHRoZSBpbWFnZSBhbmQgaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW1hZ2UgaXMgcnVubmluZyBvbiByZWFsIGhhcmR3YXJlIHRoYXQgeW91IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrIGFjY2VzcyB0byBhbmQgZnJvbSB5b3VyIGRldmVsb3BtZW50IG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgaXQgaXMgYXNzdW1lZCB0aGF0IGZvciBkZXBsb3ltZW50IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHRvIHRoZSB0YXJnZXQsIFNTSCBpcyBpbnN0YWxsZWQgaW4gdGhlIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGlmIHRoZSBpbWFnZSBpcyBydW5uaW5nIG9uIHJlYWwgaGFyZHdhcmUgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBoYXZlIG5ldHdvcmsgYWNjZXNzIHRvIGFuZCBmcm9tIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBtYWNoaW5lLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkZXBsb3kgeW91ciBidWlsZCBvdXRwdXQgdG8gdGhhdCB0YXJnZXQgaGFyZHdhcmUgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGVwbG95IHlvdXIgYnVpbGQgb3V0cHV0IHRvIHRoYXQgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgZGVwbG95LXRhcmdldCA8cmVwbGFjZWFibGU+cmVjaXBlIHRhcmdldDwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IGlzIGEgbGl2ZSB0YXJnZXQgbWFjaGluZQotICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZyBhcyBhbiBTU0ggc2VydmVyLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4sIG9mIGNvdXJzZSwgYWxzbyBkZXBsb3kgdGhlIGltYWdlIHlvdSBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBpcyBhIGxpdmUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIHJ1bm5pbmcgYXMgYW4gU1NIIHNlcnZlci48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4sIG9mIGNvdXJzZSwgYWxzbyBkZXBsb3kgdGhlIGltYWdlIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZC1pbWFnZTwvZmlsZW5hbWU+IGNvbW1hbmQKICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZG9lcyBub3QgcHJvdmlkZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBjb21tYW5kIHRoYXQgYWxsb3dzIHlvdSB0byBkbyB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIGRvIHRoaXMuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZpbmlzaCBZb3VyIFdvcmsgV2l0aCB0aGUgUmVjaXBlPC9lbXBoYXNpcz46CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzCiAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgcGF0Y2hlcyBjb3JyZXNwb25kaW5nIHRvIGNvbW1pdHMgaW4gdGhlIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSwgbW92ZXMgdGhlIG5ldyByZWNpcGUgdG8gYSBtb3JlIHBlcm1hbmVudAotICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIsIGFuZCB0aGVuIHJlc2V0cyB0aGUgcmVjaXBlIHNvIHRoYXQgdGhlIHJlY2lwZSBpcwotICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgbm9ybWFsbHkgcmF0aGVyIHRoYW4gZnJvbSB0aGUgd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIG1vdmVzIHRoZSBuZXcgcmVjaXBlIHRvIGEgbW9yZQorICAgICAgICAgICAgICAgICAgICAgICAgcGVybWFuZW50IGxheWVyLCBhbmQgdGhlbiByZXNldHMgdGhlIHJlY2lwZSBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIGlzIGJ1aWx0IG5vcm1hbGx5IHJhdGhlciB0aGFuIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UuCiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc3BlY2lmeSBhIGRlc3RpbmF0aW9uIGxheWVyIHRoYXQgaXMgdGhlIHNhbWUgYXMKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvcmlnaW5hbCBzb3VyY2UsIHRoZW4gdGhlIG9sZCB2ZXJzaW9uIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGFuZCBhc3NvY2lhdGVkIGZpbGVzIHdpbGwgYmUgcmVtb3ZlZCBwcmlvciB0bwpAQCAtODg0LDYgKzk5Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW55IGNoYW5nZXMgeW91IHdhbnQgdG8gdHVybiBpbnRvIHBhdGNoZXMgbXVzdCBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgR2l0IHJlcG9zaXRvcnkgaW4gdGhlIHNvdXJjZSB0cmVlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKwogICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgYSBmaW5hbCBwcm9jZXNzIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZCwgdGhlIHN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc3RhbmRhcmQgbGF5ZXJzIGFuZCB0aGUgdXBzdHJlYW0gc291cmNlIGlzCkBAIC05MDYsOCArMTAxNSw4IEBACiAgICAgICAgIDx0aXRsZT5BIENsb3NlciBMb29rIGF0IDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhCi0gICAgICAgICAgICByZWNpcGUgYmFzZWQgb24gdGhlIHNvdXJjZSB0cmVlIHdpdGggd2hpY2ggeW91IHByb3ZpZGUgaXQuCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZXMKKyAgICAgICAgICAgIGEgcmVjaXBlIGJhc2VkIG9uIHRoZSBzb3VyY2UgdHJlZSB5b3UgcHJvdmlkZSB3aXRoIHRoZSBjb21tYW5kLgogICAgICAgICAgICAgQ3VycmVudGx5LCB0aGUgY29tbWFuZCBoYXMgc3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtOTUzLDggKzEwNjIsOCBAQAogICAgICAgICAgICAgICAgIEluIG1vc3QgY2FzZXMsIHlvdSBuZWVkIHRvIGVkaXQgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkCiAgICAgICAgICAgICAgICAgcmVjaXBlIGluIG9yZGVyIHRvIG1ha2UgaXQgYnVpbGQgcHJvcGVybHkuCiAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3Ugd291bGQgZ28gdGhyb3VnaCBzZXZlcmFsIGVkaXQgYW5kIGJ1aWxkIGN5Y2xlcwotICAgICAgICAgICAgICAgIHVudGlsIHlvdSBjYW4gYnVpbGQgdGhlIHJlY2lwZS4KLSAgICAgICAgICAgICAgICBPbmNlIHRoZSByZWNpcGUgY2FuIGJlIGJ1aWx0LCB5b3UgY291bGQgdXNlIHBvc3NpYmxlIGZ1cnRoZXIKKyAgICAgICAgICAgICAgICB1bnRpbCB0aGUgcmVjaXBlIHN1Y2Nlc3NmdWxseSBidWlsZHMuCisgICAgICAgICAgICAgICAgT25jZSB0aGUgcmVjaXBlIGJ1aWxkcywgeW91IGNvdWxkIHVzZSBwb3NzaWJsZSBmdXJ0aGVyCiAgICAgICAgICAgICAgICAgaXRlcmF0aW9ucyB0byB0ZXN0IHRoZSByZWNpcGUgb24gdGhlIHRhcmdldCBkZXZpY2UuCiAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KQEAgLTk2OSwxNSArMTA3OCwxOSBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYSBuYW1lIGFuZCB2ZXJzaW9uIG9uIHRoZSBjb21tYW5kCi0gICAgICAgICAgICAgICAgbGluZSwgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gYXR0ZW1wdHMgdG8gZGV0ZXJtaW5lCi0gICAgICAgICAgICAgICAgdGhlIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0IGZyb20KLSAgICAgICAgICAgICAgICB2YXJpb3VzIG1ldGFkYXRhIHdpdGhpbiB0aGUgc291cmNlIHRyZWUuCi0gICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBjb21tYW5kIHNldHMgdGhlIG5hbWUgb2YgdGhlIGNyZWF0ZWQgcmVjaXBlCi0gICAgICAgICAgICAgICAgZmlsZSBhY2NvcmRpbmdseS4KLSAgICAgICAgICAgICAgICBJZiB0aGUgbmFtZSBvciB2ZXJzaW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIHByaW50cyBhbiBlcnJvciBhbmQKLSAgICAgICAgICAgICAgICB5b3UgbXVzdCByZS1ydW4gdGhlIGNvbW1hbmQgd2l0aCBib3RoIHRoZSBuYW1lIGFuZCB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgb3IganVzdCB0aGUgbmFtZSBvciB2ZXJzaW9uIHNwZWNpZmllZC4KKyAgICAgICAgICAgICAgICBsaW5lLCA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiB1c2VzIHZhcmlvdXMgbWV0YWRhdGEKKyAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIHNvdXJjZSB0cmVlIGluIGFuIGF0dGVtcHQgdG8gZGV0ZXJtaW5lCisgICAgICAgICAgICAgICAgdGhlIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgICAgIEJhc2VkIG9uIHdoYXQgdGhlIHRvb2wgZGV0ZXJtaW5lcywgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHNldHMgdGhlIG5hbWUgb2YgdGhlIGNyZWF0ZWQgcmVjaXBlIGZpbGUgYWNjb3JkaW5nbHkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gY2Fubm90IGRldGVybWluZSB0aGUgbmFtZSBhbmQKKyAgICAgICAgICAgICAgICB2ZXJzaW9uLCB0aGUgY29tbWFuZCBwcmludHMgYW4gZXJyb3IuCisgICAgICAgICAgICAgICAgRm9yIHN1Y2ggY2FzZXMsIHlvdSBtdXN0IHJlLXJ1biB0aGUgY29tbWFuZCBhbmQgcHJvdmlkZQorICAgICAgICAgICAgICAgIHRoZSBuYW1lIGFuZCB2ZXJzaW9uLCBqdXN0IHRoZSBuYW1lLCBvciBqdXN0IHRoZSB2ZXJzaW9uIGFzCisgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgY29tbWFuZCBsaW5lLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTEwMDEsMjYgKzExMTQsMjcgQEAKICAgICAgICAgICAgICAgICBkZXRlY3QgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMgYW5kIG1hcCB0aGVtIHRvIG90aGVyIHJlY2lwZXMKICAgICAgICAgICAgICAgICBpbiB0aGUgc3lzdGVtLgogICAgICAgICAgICAgICAgIER1cmluZyB0aGlzIG1hcHBpbmcsIHRoZSBjb21tYW5kIGZpbGxzIGluIHRoZSBuYW1lcyBvZiB0aG9zZQotICAgICAgICAgICAgICAgIHJlY2lwZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgcmVjaXBlcyBhcyBwYXJ0IG9mIHRoZQogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB2YWx1ZSB3aXRoaW4gdGhlIHJlY2lwZS4KLSAgICAgICAgICAgICAgICBJZiBhIGRlcGVuZGVuY3kgY2Fubm90IGJlIG1hcHBlZCwgdGhlbiBhIGNvbW1lbnQgaXMgcGxhY2VkIGluCi0gICAgICAgICAgICAgICAgdGhlIHJlY2lwZSBpbmRpY2F0aW5nIHN1Y2guCi0gICAgICAgICAgICAgICAgVGhlIGluYWJpbGl0eSB0byBtYXAgYSBkZXBlbmRlbmN5IG1pZ2h0IGJlIGNhdXNlZCBiZWNhdXNlIHRoZQotICAgICAgICAgICAgICAgIG5hbWluZyBpcyBub3QgcmVjb2duaXplZCBvciBiZWNhdXNlIHRoZSBkZXBlbmRlbmN5IHNpbXBseSBpcwotICAgICAgICAgICAgICAgIG5vdCBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgdmFyaWFibGUgd2l0aGluIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgSWYgYSBkZXBlbmRlbmN5IGNhbm5vdCBiZSBtYXBwZWQsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBwbGFjZXMgYSBjb21tZW50IGluIHRoZSByZWNpcGUgaW5kaWNhdGluZyBzdWNoLgorICAgICAgICAgICAgICAgIFRoZSBpbmFiaWxpdHkgdG8gbWFwIGEgZGVwZW5kZW5jeSBjYW4gcmVzdWx0IGZyb20gbmFtaW5nIG5vdAorICAgICAgICAgICAgICAgIGJlaW5nIHJlY29nbml6ZWQgb3IgYmVjYXVzZSB0aGUgZGVwZW5kZW5jeSBzaW1wbHkgaXMgbm90CisgICAgICAgICAgICAgICAgYXZhaWxhYmxlLgogICAgICAgICAgICAgICAgIEZvciBjYXNlcyB3aGVyZSB0aGUgZGVwZW5kZW5jeSBpcyBub3QgYXZhaWxhYmxlLCB5b3UgbXVzdCB1c2UKICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCB0byBhZGQgYW4KLSAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIHJlY2lwZSB0byBzYXRpc2Z5IHRoZSBkZXBlbmRlbmN5IGFuZCB0aGVuIGNvbWUKLSAgICAgICAgICAgICAgICBiYWNrIHRvIHRoZSBmaXJzdCByZWNpcGUgYW5kIGFkZCBpdHMgbmFtZSB0bwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgYWRkaXRpb25hbCByZWNpcGUgdGhhdCBzYXRpc2ZpZXMgdGhlIGRlcGVuZGVuY3kuCisgICAgICAgICAgICAgICAgT25jZSB5b3UgYWRkIHRoYXQgcmVjaXBlLCB5b3UgbmVlZCB0byB1cGRhdGUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUgb3JpZ2luYWwgcmVjaXBlCisgICAgICAgICAgICAgICAgdG8gaW5jbHVkZSB0aGUgbmV3IHJlY2lwZS4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgdG8gYWRkIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLCB5b3UgY2FuIGRvIHNvIGJ5CiAgICAgICAgICAgICAgICAgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8geW91ciByZWNpcGU6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBSREVQRU5EU18ke1BOfSArPSAiZGVwZW5kZW5jeTEgZGVwZW5kZW5jeTIgLi4uIgorICAgICBSREVQRU5EU18ke1BOfSArPSAiPHJlcGxhY2VhYmxlPmRlcGVuZGVuY3kxIGRlcGVuZGVuY3kyIC4uLjwvcmVwbGFjZWFibGU+IgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQgb2Z0ZW4gY2Fubm90CkBAIC0xMDMxLDcgKzExNDUsNyBAQAogICAgICAgICAgICAgICAgICAgICBzY3JpcHQgZm9yIHRoZSBzb2Z0d2FyZSB0aGUgcmVjaXBlIGlzIGJ1aWxkaW5nIGZvciBmdXJ0aGVyCiAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMuCiAgICAgICAgICAgICAgICAgICAgIEluIHNvbWUgY2FzZXMsIHlvdSBtaWdodCBmaW5kIHlvdSBjYW4gc3Vic3RpdHV0ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSBmb3IgYW4gb3B0aW9uIHRvIGRpc2FibGUgdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSB3aXRoIGFuIG9wdGlvbiB0aGF0IGRpc2FibGVzIHRoZSBhc3NvY2lhdGVkCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgcGFzc2VkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTEwNDMsMjAgKzExNTcsMjQgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIGF0dGVtcHRzIHRvCiAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIGlmIHRoZSBzb2Z0d2FyZSB5b3UgYXJlIGFkZGluZyBpcyBhYmxlIHRvIGJlCi0gICAgICAgICAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgYSBjb21tb24gb3Blbi1zb3VyY2UgbGljZW5zZSBhbmQgc2V0cyB0aGUKKyAgICAgICAgICAgICAgICBkaXN0cmlidXRlZCB1bmRlciBhIGNvbW1vbiwgb3Blbi1zb3VyY2UgbGljZW5zZS4KKyAgICAgICAgICAgICAgICBJZiBzbywgdGhlIGNvbW1hbmQgc2V0cyB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgdmFsdWUgYWNjb3JkaW5nbHkuCi0gICAgICAgICAgICAgICAgWW91IHNob3VsZCBkb3VibGUtY2hlY2sgdGhpcyB2YWx1ZSBhZ2FpbnN0IHRoZSBkb2N1bWVudGF0aW9uCi0gICAgICAgICAgICAgICAgb3Igc291cmNlIGZpbGVzIGZvciB0aGUgc29mdHdhcmUgeW91IGFyZSBidWlsZGluZyBhbmQgdXBkYXRlCi0gICAgICAgICAgICAgICAgdGhhdCA8ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+IHZhbHVlIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgdmFsdWUgYWRkZWQgYnkgdGhlIGNvbW1hbmQgYWdhaW5zdAorICAgICAgICAgICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSBmaWxlcyBmb3IgdGhlIHNvZnR3YXJlIHlvdSBhcmUKKyAgICAgICAgICAgICAgICBidWlsZGluZyBhbmQsIGlmIG5lY2Vzc2FyeSwgdXBkYXRlIHRoYXQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+IHZhbHVlLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBhbHNvIHNldHMgdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ19GSUxFU19DSEtTVU0nPjxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgIHZhbHVlIHRvIHBvaW50IHRvIGFsbCBmaWxlcyB0aGF0IGFwcGVhciB0byBiZSBsaWNlbnNlLXJlbGF0ZWQuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwgbGljZW5zZSBzdGF0ZW1lbnRzIG9mdGVuIGFwcGVhciBpbiBjb21tZW50cyBhdCB0aGUgdG9wCi0gICAgICAgICAgICAgICAgb2Ygc291cmNlIGZpbGVzIG9yIHdpdGhpbiBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBsaWNlbnNlIHN0YXRlbWVudHMgb2Z0ZW4gYXBwZWFyIGluIGNvbW1lbnRzIGF0CisgICAgICAgICAgICAgICAgdGhlIHRvcCBvZiBzb3VyY2UgZmlsZXMgb3Igd2l0aGluIHRoZSBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgICAgIEluIHN1Y2ggY2FzZXMsIHRoZSBjb21tYW5kIGRvZXMgbm90IHJlY29nbml6ZSB0aG9zZSBsaWNlbnNlCisgICAgICAgICAgICAgICAgc3RhdGVtZW50cy4KICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtaWdodCBuZWVkIHRvIGFtZW5kIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT4gdmFyaWFibGUgdG8gcG9pbnQgdG8gb25lCiAgICAgICAgICAgICAgICAgb3IgbW9yZSBvZiB0aG9zZSBjb21tZW50cyBpZiBwcmVzZW50LgpAQCAtMTA3MCwxNCArMTE4OCwxMyBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBjYW5ub3QKLSAgICAgICAgICAgICAgICBkZXRlcm1pbmUgbGljZW5zaW5nIGluZm9ybWF0aW9uLCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+IHZhbHVlIGlzIHNldCB0byAiQ0xPU0VEIiBhbmQgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiB2YWx1ZSByZW1haW5zIHVuc2V0LgotICAgICAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHlvdSB0byBjb250aW51ZSB3aXRoIGRldmVsb3BtZW50IGJ1dCBpcwotICAgICAgICAgICAgICAgIHVubGlrZWx5IHRvIGJlIGNvcnJlY3QgaW4gYWxsIGNhc2VzLgotICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHNob3VsZCBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBvciBzb3VyY2UKLSAgICAgICAgICAgICAgICBmaWxlcyBmb3IgdGhlIHNvZnR3YXJlIHlvdSBhcmUgYnVpbGRpbmcgdG8gZGV0ZXJtaW5lIHRoZSBhY3R1YWwKLSAgICAgICAgICAgICAgICBsaWNlbnNlLgorICAgICAgICAgICAgICAgIGRldGVybWluZSBsaWNlbnNpbmcgaW5mb3JtYXRpb24sIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzZXRzIHRoZSA8ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+IHZhbHVlIHRvICJDTE9TRUQiIGFuZAorICAgICAgICAgICAgICAgIGxlYXZlcyB0aGUgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiB2YWx1ZSB1bnNldC4KKyAgICAgICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGFsbG93cyB5b3UgdG8gY29udGludWUgd2l0aCBkZXZlbG9wbWVudCBldmVuCisgICAgICAgICAgICAgICAgdGhvdWdoIHRoZSBzZXR0aW5ncyBhcmUgdW5saWtlbHkgdG8gYmUgY29ycmVjdCBpbiBhbGwgY2FzZXMuCisgICAgICAgICAgICAgICAgWW91IHNob3VsZCBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBvciBzb3VyY2UgZmlsZXMgZm9yIHRoZQorICAgICAgICAgICAgICAgIHNvZnR3YXJlIHlvdSBhcmUgYnVpbGRpbmcgdG8gZGV0ZXJtaW5lIHRoZSBhY3R1YWwgbGljZW5zZS4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCkBAIC0xMDg1LDggKzEyMDIsOCBAQAogICAgICAgICAgICAgPHRpdGxlPkFkZGluZyBNYWtlZmlsZS1Pbmx5IFNvZnR3YXJlPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIHVzZSBvZiA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGJ5IGl0c2VsZiBpcyB2ZXJ5IGNvbW1vbgotICAgICAgICAgICAgICAgIGluIGJvdGggcHJvcHJpZXRhcnkgYW5kIG9wZW4gc291cmNlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIFRoZSB1c2Ugb2YgTWFrZSBieSBpdHNlbGYgaXMgdmVyeSBjb21tb24gaW4gYm90aCBwcm9wcmlldGFyeQorICAgICAgICAgICAgICAgIGFuZCBvcGVuLXNvdXJjZSBzb2Z0d2FyZS4KICAgICAgICAgICAgICAgICBVbmZvcnR1bmF0ZWx5LCBNYWtlZmlsZXMgYXJlIG9mdGVuIG5vdCB3cml0dGVuIHdpdGgKICAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxhdGlvbiBpbiBtaW5kLgogICAgICAgICAgICAgICAgIFRodXMsIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IG9mdGVuIGNhbm5vdCBkbyB2ZXJ5CkBAIC0xMDk5LDcgKzEyMTYsNyBAQAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPiBpcyB0aGUgY29tcGlsZXIgZm9yIHRoZSBidWlsZCBob3N0CiAgICAgICAgICAgICAgICAgYW5kIHRoZSBjcm9zcy1jb21waWxlciBpcyBuYW1lZCBzb21ldGhpbmcgc2ltaWxhciB0bwogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcm0tcG9reS1saW51eC1nbnVlYWJpLWdjYzwvZmlsZW5hbWU+IGFuZCBtaWdodAotICAgICAgICAgICAgICAgIHJlcXVpcmUgc29tZSBhcmd1bWVudHMgKGUuZy4gdG8gcG9pbnQgdG8gdGhlIGFzc29jaWF0ZWQgc3lzcm9vdAorICAgICAgICAgICAgICAgIHJlcXVpcmUgYXJndW1lbnRzIChlLmcuIHRvIHBvaW50IHRvIHRoZSBhc3NvY2lhdGVkIHN5c3Jvb3QKICAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldCBtYWNoaW5lKS4KICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTExNCwxOCArMTIzMSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmcrKzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IHJ1bnMKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzIHNldCB1cCB3aXRoIHZhcmlvdXMgc3RhbmRhcmQgdmFyaWFibGVzIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsYXRpb24gKGUuZy4gPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q1hYPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkgaW4gYSBzaW1pbGFyCi0gICAgICAgICAgICAgICAgICAgICAgICBtYW5uZXIgdG8gdGhlIGVudmlyb25tZW50IHNldCB1cCBieSB0aGUgU0RLJ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCBNYWtlIHJ1bnMgaXMgc2V0IHVwIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlvdXMgc3RhbmRhcmQgdmFyaWFibGVzIGZvciBjb21waWxhdGlvbiAoZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5DWFg8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBzbyBmb3J0aCkgaW4gYSBzaW1pbGFyIG1hbm5lciB0byB0aGUgZW52aXJvbm1lbnQgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICB1cCBieSB0aGUgU0RLJ3MgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgogICAgICAgICAgICAgICAgICAgICAgICAgT25lIGVhc3kgd2F5IHRvIHNlZSB0aGVzZSB2YXJpYWJsZXMgaXMgdG8gcnVuIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPiBjb21tYW5kIG9uIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGFuZCB0aGVuIGxvb2sgaW4KICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1sb2dzL3J1bi5kb19jb21waWxlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBUb3dhcmRzIHRoZSB0b3Agb2YgdGhpcyBmaWxlIHlvdSB3aWxsIHNlZSBhIGxpc3Qgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSBiZWluZyBzZXQuCisgICAgICAgICAgICAgICAgICAgICAgICBUb3dhcmRzIHRoZSB0b3Agb2YgdGhpcyBmaWxlLCBhIGxpc3Qgb2YgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBleGlzdHMgdGhhdCBhcmUgYmVpbmcgc2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB0YWtlIGFkdmFudGFnZSBvZiB0aGVzZSB2YXJpYWJsZXMgd2l0aGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgTWFrZWZpbGUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTExMzMsNyArMTI0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgTWFrZWZpbGUgc2V0cyBhIGRlZmF1bHQgZm9yIGEgdmFyaWFibGUgdXNpbmcgIj0iLAogICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBkZWZhdWx0IG92ZXJyaWRlcyB0aGUgdmFsdWUgc2V0IGluIHRoZSBlbnZpcm9ubWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHVzdWFsbHkgbm90IGRlc2lyYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCB5b3UgY2FuIGVpdGhlciBwYXRjaCB0aGUgTWFrZWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGNhc2UsIHlvdSBjYW4gZWl0aGVyIHBhdGNoIHRoZSBNYWtlZmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgc28gaXQgc2V0cyB0aGUgZGVmYXVsdCB1c2luZyB0aGUgIj89IiBvcGVyYXRvciwgb3IKICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gYWx0ZXJuYXRpdmVseSBmb3JjZSB0aGUgdmFsdWUgb24gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgbGluZS4KQEAgLTExNTgsMTYgKzEyNzQsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgcGFydGljdWxhcmx5IHRydWUgYmVjYXVzZSB0aG9zZSBoYXJkY29kZWQgcGF0aHMKICAgICAgICAgICAgICAgICAgICAgICAgIG9mdGVuIHBvaW50IHRvIGxvY2F0aW9ucyBvbiB0aGUgYnVpbGQgaG9zdCBhbmQgdGh1cwogICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBlaXRoZXIgYmUgcmVhZC1vbmx5IG9yIHdpbGwgaW50cm9kdWNlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250YW1pbmF0aW9uIGludG8gdGhlIGNyb3NzLWNvbXBpbGF0aW9uIGJ5IHZpcnR1ZSBvZgotICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgc3BlY2lmaWMgdG8gdGhlIGJ1aWxkIGhvc3QgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhbWluYXRpb24gaW50byB0aGUgY3Jvc3MtY29tcGlsYXRpb24gYmVjYXVzZSB0aGV5CisgICAgICAgICAgICAgICAgICAgICAgICBhcmUgc3BlY2lmaWMgdG8gdGhlIGJ1aWxkIGhvc3QgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC4KICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGNoaW5nIHRoZSBNYWtlZmlsZSB0byB1c2UgcHJlZml4IHZhcmlhYmxlcyBvciBvdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCB2YXJpYWJsZXMgaXMgdXN1YWxseSB0aGUgd2F5IHRvIGhhbmRsZSB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCB2YXJpYWJsZXMgaXMgdXN1YWxseSB0aGUgd2F5IHRvIGhhbmRsZSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzIGEgTWFrZWZpbGUgcnVucyB0YXJnZXQtc3BlY2lmaWMgY29tbWFuZHMgc3VjaAogICAgICAgICAgICAgICAgICAgICAgICAgYXMgPGZpbGVuYW1lPmxkY29uZmlnPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3Igc3VjaCBjYXNlcywgeW91IG1pZ2h0IGJlIGFibGUgdG8gc2ltcGx5IGFwcGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzIHRoYXQgcmVtb3ZlIHRoZXNlIGNvbW1hbmRzIGZyb20gdGhlIE1ha2VmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHN1Y2ggY2FzZXMsIHlvdSBtaWdodCBiZSBhYmxlIHRvIGFwcGx5IHBhdGNoZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlIHRoZXNlIGNvbW1hbmRzIGZyb20gdGhlIE1ha2VmaWxlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xMTc4LDkgKzEyOTUsMTEgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgT2Z0ZW4sIHlvdSBuZWVkIHRvIGJ1aWxkIGFkZGl0aW9uYWwgdG9vbHMgdGhhdCBydW4gb24gdGhlCi0gICAgICAgICAgICAgICAgYnVpbGQgaG9zdCBzeXN0ZW0gYXMgb3Bwb3NlZCB0byB0aGUgdGFyZ2V0LgotICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgaW5kaWNhdGUgdGhpcyB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBtZXRob2RzCi0gICAgICAgICAgICAgICAgd2hlbiB5b3UgcnVuIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5idWlsZCBob3N0PC91bGluaz4KKyAgICAgICAgICAgICAgICBhcyBvcHBvc2VkIHRvIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgWW91IHNob3VsZCBpbmRpY2F0ZSB0aGlzIHJlcXVpcmVtZW50IGJ5IHVzaW5nIG9uZSBvZiB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgbWV0aG9kcyB3aGVuIHlvdSBydW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSByZWNpcGUgc3VjaCB0aGF0IGl0IGVuZHMKQEAgLTEyMDIsOCArMTMyMSw4IEBACiAgICAgICAgICAgICAgICAgICAgIHR5cGljYWxseSBhY2NvbXBsaXNoIHRoaXMgYnkgYnVpbGRpbmcgdGhlIG5hdGl2ZSBhbmQgdGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgIHBhcnRzIHNlcGFyYXRlbHkgcmF0aGVyIHRoYW4gd2l0aGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgICAgIFJlYWxpemUgdGhvdWdoIHRoYXQgd2l0aCB0aGUgIiZkYXNoOyZkYXNoO2Fsc28tbmF0aXZlIiBvcHRpb24sIHlvdQotICAgICAgICAgICAgICAgICAgICBjYW4gYWRkIHRoZSB0b29sIHVzaW5nIGp1c3Qgb25lIHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBSZWFsaXplIHRob3VnaCB0aGF0IHdpdGggdGhlICImZGFzaDsmZGFzaDthbHNvLW5hdGl2ZSIKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCB5b3UgY2FuIGFkZCB0aGUgdG9vbCB1c2luZyBqdXN0IG9uZSByZWNpcGUgZmlsZS4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTEyNDQsMTEgKzEzNjMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kIiBlcnJvcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gc3VwcG9ydCBhZGRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlLmpzIG1vZHVsZXMsIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9kZWpzPC9maWxlbmFtZT4gcmVjaXBlIG11c3QgYmUgcGFydCBvZiB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RLIGluIG9yZGVyIHRvIHByb3ZpZGUgTm9kZS5qcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0c2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byBzdXBwb3J0IGFkZGluZyBOb2RlLmpzIG1vZHVsZXMsIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9kZWpzPC9maWxlbmFtZT4gcmVjaXBlIG11c3QgYmUgcGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHlvdXIgU0RLLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L25vdGU+CkBAIC0xMjU3LDE0ICsxMzc0LDE1IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgeW91IGNhbiBhbHNvIGFkZCBOb2RlLmpzIG1vZHVsZXMKICAgICAgICAgICAgICAgICBkaXJlY3RseSBmcm9tIGEgcmVwb3NpdG9yeSBvciBsb2NhbCBzb3VyY2UgdHJlZS4KLSAgICAgICAgICAgICAgICBUbyBhZGQgbW9kdWxlcyB0aGlzIHdheSwgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGluCi0gICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgICAgICAgICAgICAgIFRvIGFkZCBtb2R1bGVzIHRoaXMgd2F5LCB1c2UgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBpbiB0aGUgZm9sbG93aW5nIGZvcm06CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgYWRkIGh0dHBzOi8vZ2l0aHViLmNvbS9kaXZlcnNhcmlvL25vZGUtc3NkcAogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZmV0Y2hlcyB0aGUgc3BlY2lmaWVkCi0gICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIGRldGVjdHMgdGhhdCB0aGUgY29kZSBpcyBOb2RlLmpzIGNvZGUsIGZldGNoZXMKLSAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgdXNpbmcgPGZpbGVuYW1lPm5wbTwvZmlsZW5hbWU+LCBhbmQgc2V0cworICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBmZXRjaGVzIHRoZQorICAgICAgICAgICAgICAgIHNwZWNpZmllZCBHaXQgcmVwb3NpdG9yeSwgZGV0ZWN0cyB0aGUgY29kZSBhcyBOb2RlLmpzCisgICAgICAgICAgICAgICAgY29kZSwgZmV0Y2hlcyBkZXBlbmRlbmNpZXMgdXNpbmcgPGZpbGVuYW1lPm5wbTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICBzZXRzCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgIGFjY29yZGluZ2x5LgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMTI3NSw4ICsxMzkzLDkgQEAKICAgICAgICAgPHRpdGxlPldvcmtpbmcgV2l0aCBSZWNpcGVzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFdoZW4gYnVpbGRpbmcgYSByZWNpcGUgd2l0aCA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+LCB0aGUKLSAgICAgICAgICAgIHR5cGljYWwgYnVpbGQgcHJvZ3Jlc3Npb24gaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgIFdoZW4gYnVpbGRpbmcgYSByZWNpcGUgdXNpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+IGNvbW1hbmQsIHRoZSB0eXBpY2FsIGJ1aWxkCisgICAgICAgICAgICBwcm9ncmVzc2VzIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGZXRjaCB0aGUgc291cmNlCkBAIC0xMjg4LDcgKzE0MDcsNyBAQAogICAgICAgICAgICAgICAgICAgICBDb25maWd1cmUgdGhlIHNvdXJjZQogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIENvbXBpbGluZyB0aGUgc291cmNlCisgICAgICAgICAgICAgICAgICAgIENvbXBpbGUgdGhlIHNvdXJjZQogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwgdGhlIGJ1aWxkIG91dHB1dApAQCAtMTI5OSwxMCArMTQxOCwxMyBAQAogICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgICAgIEZvciByZWNpcGVzIGluIHRoZSB3b3Jrc3BhY2UsIGZldGNoaW5nIGFuZCB1bnBhY2tpbmcgaXMgZGlzYWJsZWQKICAgICAgICAgICAgIGFzIHRoZSBzb3VyY2UgdHJlZSBoYXMgYWxyZWFkeSBiZWVuIHByZXBhcmVkIGFuZCBpcyBwZXJzaXN0ZW50LgotICAgICAgICAgICAgRWFjaCBvZiB0aGVzZSBidWlsZCBzdGVwcyBpcyBkZWZpbmVkIGFzIGEgZnVuY3Rpb24sIHVzdWFsbHkgd2l0aCBhCi0gICAgICAgICAgICAiZG9fIiBwcmVmaXguCi0gICAgICAgICAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIHR5cGljYWxseSBzaGVsbCBzY3JpcHRzIGJ1dCBjYW4gaW5zdGVhZCBiZSB3cml0dGVuCi0gICAgICAgICAgICBpbiBQeXRob24uCisgICAgICAgICAgICBFYWNoIG9mIHRoZXNlIGJ1aWxkIHN0ZXBzIGlzIGRlZmluZWQgYXMgYSBmdW5jdGlvbiAodGFzayksIHVzdWFsbHkKKyAgICAgICAgICAgIHdpdGggYSAiZG9fIiBwcmVmaXggKGUuZy4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1mZXRjaCc+PGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy11bnBhY2snPjxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdHlwaWNhbGx5IHNoZWxsIHNjcmlwdHMgYnV0IGNhbiBpbnN0ZWFkIGJlCisgICAgICAgICAgICB3cml0dGVuIGluIFB5dGhvbi4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtMTMxMCwxMiArMTQzMiwxMyBAQAogICAgICAgICAgICAgcmVjaXBlIGRvZXMgbm90IGluY2x1ZGUgY29tcGxldGUgaW5zdHJ1Y3Rpb25zIGZvciBidWlsZGluZyB0aGUKICAgICAgICAgICAgIHNvZnR3YXJlLgogICAgICAgICAgICAgSW5zdGVhZCwgY29tbW9uIGZ1bmN0aW9uYWxpdHkgaXMgZW5jYXBzdWxhdGVkIGluIGNsYXNzZXMgaW5oZXJpdGVkCi0gICAgICAgICAgICB3aXRoIHRoZSA8ZmlsZW5hbWU+aW5oZXJpdDwvZmlsZW5hbWU+IGRpcmVjdGl2ZSwgbGVhdmluZyB0aGUgcmVjaXBlCi0gICAgICAgICAgICB0byBkZXNjcmliZSBqdXN0IHRoZSB0aGluZ3MgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIHNvZnR3YXJlIHRvIGJlCi0gICAgICAgICAgICBidWlsdC4KLSAgICAgICAgICAgIEEgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYmFzZSc+PGZpbGVuYW1lPmJhc2U8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICBjbGFzcyBleGlzdHMgdGhhdCBpcyBpbXBsaWNpdGx5IGluaGVyaXRlZCBieSBhbGwgcmVjaXBlcyBhbmQgcHJvdmlkZXMKLSAgICAgICAgICAgIHRoZSBmdW5jdGlvbmFsaXR5IHRoYXQgbW9zdCB0eXBpY2FsIHJlY2lwZXMgbmVlZC4KKyAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT5pbmhlcml0PC9maWxlbmFtZT4gZGlyZWN0aXZlLgorICAgICAgICAgICAgVGhpcyB0ZWNobmlxdWUgbGVhdmVzIHRoZSByZWNpcGUgdG8gZGVzY3JpYmUganVzdCB0aGUgdGhpbmdzIHRoYXQKKyAgICAgICAgICAgIGFyZSBzcGVjaWZpYyB0byB0aGUgc29mdHdhcmUgYmVpbmcgYnVpbHQuCisgICAgICAgICAgICBBCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1iYXNlJz48ZmlsZW5hbWU+YmFzZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIGNsYXNzIGV4aXN0cyB0aGF0IGlzIGltcGxpY2l0bHkgaW5oZXJpdGVkIGJ5IGFsbCByZWNpcGVzIGFuZAorICAgICAgICAgICAgcHJvdmlkZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdGhhdCBtb3N0IHJlY2lwZXMgdHlwaWNhbGx5IG5lZWQuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KQEAgLTEzMjcsNDYgKzE0NTAsNTcgQEAKICAgICAgICAgICAgIDx0aXRsZT5GaW5kaW5nIExvZ3MgYW5kIFdvcmsgRmlsZXM8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSBhcmUgZGVidWdnaW5nIGEgcmVjaXBlIHRoYXQgeW91IHByZXZpb3VzbHkgY3JlYXRlZCB1c2luZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IG9yIHdob3NlIHNvdXJjZSB5b3UgYXJlIG1vZGlmeWluZwotICAgICAgICAgICAgICAgIGJ5IHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiBjb21tYW5kLCBhZnRlcgotICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBydW4gb2YgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPiwgeW91IHdpbGwKLSAgICAgICAgICAgICAgICBmaW5kIHNvbWUgc3ltYm9saWMgbGlua3MgY3JlYXRlZCB3aXRoaW4gdGhlIHNvdXJjZSB0cmVlOgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1sb2dzPC9maWxlbmFtZT4sIHdoaWNoIHBvaW50cyB0byB0aGUgZGlyZWN0b3J5IGluCi0gICAgICAgICAgICAgICAgd2hpY2ggbG9nIGZpbGVzIGFuZCBydW4gc2NyaXB0cyBmb3IgZWFjaCBidWlsZCBzdGVwIGFyZSBjcmVhdGVkCi0gICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5vZS13b3JrZGlyPC9maWxlbmFtZT4sIHdoaWNoIHBvaW50cyB0byB0aGUgdGVtcG9yYXJ5Ci0gICAgICAgICAgICAgICAgd29yayBhcmVhIGZvciB0aGUgcmVjaXBlLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZXNlIGxpbmtzIHRvIGdldCBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaXMKLSAgICAgICAgICAgICAgICBoYXBwZW5pbmcgYXQgZWFjaCBidWlsZCBzdGVwLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGVzZSBsb2NhdGlvbnMgdW5kZXIgPGZpbGVuYW1lPm9lLXdvcmtkaXI8L2ZpbGVuYW1lPiBhcmUKLSAgICAgICAgICAgICAgICBwYXJ0aWN1bGFybHkgdXNlZnVsOgorICAgICAgICAgICAgICAgIEFmdGVyIHRoZSBmaXJzdCBydW4gb2YgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kLCByZWNpcGVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGNyZWF0ZWQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBvciB3aG9zZSBzb3VyY2VzIHdlcmUKKyAgICAgICAgICAgICAgICBtb2RpZmllZCB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kIGNvbnRhaW4gc3ltYm9saWMgbGlua3MgY3JlYXRlZCB3aXRoaW4gdGhlIHNvdXJjZSB0cmVlOgogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aW1hZ2UvPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb250YWlucyBhbGwgb2YgdGhlIGZpbGVzIGluc3RhbGxlZCBhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgV2l0aGluIGEgcmVjaXBlLCB0aGlzIGRpcmVjdG9yeSBpcyByZWZlcnJlZCB0byBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1sb2dzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxpbmsgcG9pbnRzIHRvIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggbG9nIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcnVuIHNjcmlwdHMgZm9yIGVhY2ggYnVpbGQgc3RlcCBhcmUgY3JlYXRlZC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnN5c3Jvb3QtZGVzdGRpci88L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIGEgc3Vic2V0IG9mIGZpbGVzIGluc3RhbGxlZCB3aXRoaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGhhdCBoYXZlIGJlZW4gcHV0IGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQgc3lzcm9vdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLXNoYXJpbmctZmlsZXMtYmV0d2Vlbi1yZWNpcGVzJz5TaGFyaW5nIEZpbGVzIEJldHdlZW4gUmVjaXBlczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cGFja2FnZXMtc3BsaXQvPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb250YWlucyBzdWJkaXJlY3RvcmllcyBmb3IgZWFjaCBwYWNrYWdlIHByb2R1Y2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2Utd29ya2RpcjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBsaW5rIHBvaW50cyB0byB0aGUgdGVtcG9yYXJ5IHdvcmsgYXJlYSBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1wYWNrYWdpbmcnPlBhY2thZ2luZzwvbGluaz4iIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxvY2F0aW9ucyB1bmRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXdvcmtkaXI8L2ZpbGVuYW1lPiBhcmUgcGFydGljdWxhcmx5CisgICAgICAgICAgICAgICAgICAgICAgICB1c2VmdWw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmltYWdlLzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFpbnMgYWxsIG9mIHRoZSBmaWxlcyBpbnN0YWxsZWQgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aGluIGEgcmVjaXBlLCB0aGlzIGRpcmVjdG9yeSBpcyByZWZlcnJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYnkgdGhlIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3Jvb3QtZGVzdGRpci88L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIGEgc3Vic2V0IG9mIGZpbGVzIGluc3RhbGxlZCB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGhhdCBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWVuIHB1dCBpbnRvIHRoZSBzaGFyZWQgc3lzcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLXNoYXJpbmctZmlsZXMtYmV0d2Vlbi1yZWNpcGVzJz5TaGFyaW5nIEZpbGVzIEJldHdlZW4gUmVjaXBlczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlcy1zcGxpdC88L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHN1YmRpcmVjdG9yaWVzIGZvciBlYWNoIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VkIGJ5IHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1wYWNrYWdpbmcnPlBhY2thZ2luZzwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGVzZSBsaW5rcyB0byBnZXQgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IGlzCisgICAgICAgICAgICAgICAgaGFwcGVuaW5nIGF0IGVhY2ggYnVpbGQgc3RlcC4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCkBAIC0xNDEzLDEyICsxNTQ3LDE0IEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFJlY2lwZXMgb2Z0ZW4gbmVlZCB0byB1c2UgZmlsZXMgcHJvdmlkZWQgYnkgb3RoZXIgcmVjaXBlcyBvbgotICAgICAgICAgICAgICAgIHRoZSBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5idWlsZCBob3N0PC91bGluaz4uCiAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGFuIGFwcGxpY2F0aW9uIGxpbmtpbmcgdG8gYSBjb21tb24gbGlicmFyeSBuZWVkcwogICAgICAgICAgICAgICAgIGFjY2VzcyB0byB0aGUgbGlicmFyeSBpdHNlbGYgYW5kIGl0cyBhc3NvY2lhdGVkIGhlYWRlcnMuCiAgICAgICAgICAgICAgICAgVGhlIHdheSB0aGlzIGFjY2VzcyBpcyBhY2NvbXBsaXNoZWQgd2l0aGluIHRoZSBleHRlbnNpYmxlIFNESyBpcwogICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIHN5c3Jvb3QuCi0gICAgICAgICAgICAgICAgT25lIHN5c3Jvb3QgZXhpc3RzIHBlciAibWFjaGluZSIgZm9yIHdoaWNoIHRoZSBTREsgaXMgYmVpbmcgYnVpbHQuCisgICAgICAgICAgICAgICAgT25lIHN5c3Jvb3QgZXhpc3RzIHBlciAibWFjaGluZSIgZm9yIHdoaWNoIHRoZSBTREsgaXMgYmVpbmcKKyAgICAgICAgICAgICAgICBidWlsdC4KICAgICAgICAgICAgICAgICBJbiBwcmFjdGljYWwgdGVybXMsIHRoaXMgbWVhbnMgYSBzeXNyb290IGV4aXN0cyBmb3IgdGhlIHRhcmdldAogICAgICAgICAgICAgICAgIG1hY2hpbmUsIGFuZCBhIHN5c3Jvb3QgZXhpc3RzIGZvciB0aGUgYnVpbGQgaG9zdC4KICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTE0MzEsNyArMTU2Nyw3IEBACiAgICAgICAgICAgICAgICAgdGFzayB3aXRoaW4gdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRCc+PGZpbGVuYW1lPkQ8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICBBIHN1YnNldCBvZiB0aGVzZSBmaWxlcyBhdXRvbWF0aWNhbGx5IGdvIGludG8gdGhlIHN5c3Jvb3QuCisgICAgICAgICAgICAgICAgQSBzdWJzZXQgb2YgdGhlc2UgZmlsZXMgYXV0b21hdGljYWxseSBnb2VzIGludG8gdGhlIHN5c3Jvb3QuCiAgICAgICAgICAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBsaW1pdGF0aW9uIGlzIHRoYXQgYWxtb3N0IGFsbCBmaWxlcyB0aGF0IGdvCiAgICAgICAgICAgICAgICAgaW50byB0aGUgc3lzcm9vdCBhcmUgY2F0YWxvZ2VkIGluIG1hbmlmZXN0cyBpbiBvcmRlciB0byBlbnN1cmUKICAgICAgICAgICAgICAgICB0aGV5IGNhbiBiZSByZW1vdmVkIGxhdGVyIHdoZW4gYSByZWNpcGUgaXMgbW9kaWZpZWQgb3IgcmVtb3ZlZC4KQEAgLTE0NTYsMjAgKzE1OTIsMjAgQEAKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgdGFzaywgZmlsZXMgaW5zdGFsbGVkIGR1cmluZyB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBhcmUgc3BsaXQgaW50byBvbmUgbWFpbiBwYWNrYWdlLCB3aGljaCBpcyBhbG1vc3QgYWx3YXlzIG5hbWVkCi0gICAgICAgICAgICAgICAgdGhlIHNhbWUgYXMgdGhlIHJlY2lwZSwgYW5kIHNldmVyYWwgb3RoZXIgcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgVGhpcyBzZXBhcmF0aW9uIGlzIGRvbmUgYmVjYXVzZSBub3QgYWxsIG9mIHRob3NlIGluc3RhbGxlZCBmaWxlcwotICAgICAgICAgICAgICAgIGFyZSBhbHdheXMgdXNlZnVsIGluIGV2ZXJ5IGltYWdlLgorICAgICAgICAgICAgICAgIHRhc2sgYXJlIHNwbGl0IGludG8gb25lIG1haW4gcGFja2FnZSwgd2hpY2ggaXMgYWxtb3N0IGFsd2F5cworICAgICAgICAgICAgICAgIG5hbWVkIHRoZSBzYW1lIGFzIHRoZSByZWNpcGUsIGFuZCBpbnRvIHNldmVyYWwgb3RoZXIgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgVGhpcyBzZXBhcmF0aW9uIGV4aXN0cyBiZWNhdXNlIG5vdCBhbGwgb2YgdGhvc2UgaW5zdGFsbGVkIGZpbGVzCisgICAgICAgICAgICAgICAgYXJlIHVzZWZ1bCBpbiBldmVyeSBpbWFnZS4KICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IHByb2JhYmx5IGRvIG5vdCBuZWVkIGFueSBvZiB0aGUgZG9jdW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiBhIHByb2R1Y3Rpb24gaW1hZ2UuCi0gICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBmb3IgZWFjaCByZWNpcGUgdGhlIGRvY3VtZW50YXRpb24gZmlsZXMgYXJlIHNlcGFyYXRlZAotICAgICAgICAgICAgICAgIGludG8gYSA8ZmlsZW5hbWU+LWRvYzwvZmlsZW5hbWU+IHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgUmVjaXBlcyB0aGF0IHBhY2thZ2Ugc29mdHdhcmUgdGhhdCBoYXMgb3B0aW9uYWwgbW9kdWxlcyBvcgotICAgICAgICAgICAgICAgIHBsdWdpbnMgbWlnaHQgZG8gYWRkaXRpb25hbCBwYWNrYWdlIHNwbGl0dGluZyBhcyB3ZWxsLgorICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgZm9yIGVhY2ggcmVjaXBlIHRoZSBkb2N1bWVudGF0aW9uIGZpbGVzIGFyZQorICAgICAgICAgICAgICAgIHNlcGFyYXRlZCBpbnRvIGEgPGZpbGVuYW1lPi1kb2M8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgIFJlY2lwZXMgdGhhdCBwYWNrYWdlIHNvZnR3YXJlIGNvbnRhaW5pbmcgb3B0aW9uYWwgbW9kdWxlcyBvcgorICAgICAgICAgICAgICAgIHBsdWdpbnMgbWlnaHQgdW5kZXJnbyBhZGRpdGlvbmFsIHBhY2thZ2Ugc3BsaXR0aW5nIGFzIHdlbGwuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFmdGVyIGJ1aWxkaW5nIGEgcmVjaXBlIHlvdSBjYW4gc2VlIHdoZXJlIGZpbGVzIGhhdmUgZ29uZSBieQorICAgICAgICAgICAgICAgIEFmdGVyIGJ1aWxkaW5nIGEgcmVjaXBlLCB5b3UgY2FuIHNlZSB3aGVyZSBmaWxlcyBoYXZlIGdvbmUgYnkKICAgICAgICAgICAgICAgICBsb29raW5nIGluIHRoZSA8ZmlsZW5hbWU+b2Utd29ya2Rpci9wYWNrYWdlcy1zcGxpdDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCB3aGljaCBjb250YWlucyBhIHN1YmRpcmVjdG9yeSBmb3IgZWFjaCBwYWNrYWdlLgogICAgICAgICAgICAgICAgIEFwYXJ0IGZyb20gc29tZSBhZHZhbmNlZCBjYXNlcywgdGhlCkBAIC0xNDc5LDE3ICsxNjE1LDE4IEBACiAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGNvbnRyb2xzIHNwbGl0dGluZy4KICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4gdmFyaWFibGUgbGlzdHMgYWxsIG9mIHRoZQogICAgICAgICAgICAgICAgIHBhY2thZ2VzIHRvIGJlIHByb2R1Y2VkLCB3aGlsZSB0aGUgPGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBzcGVjaWZpZXMgd2hpY2ggZmlsZXMgdG8gaW5jbHVkZSBpbiBlYWNoIHBhY2thZ2UsCisgICAgICAgICAgICAgICAgdmFyaWFibGUgc3BlY2lmaWVzIHdoaWNoIGZpbGVzIHRvIGluY2x1ZGUgaW4gZWFjaCBwYWNrYWdlIGJ5CiAgICAgICAgICAgICAgICAgdXNpbmcgYW4gb3ZlcnJpZGUgdG8gc3BlY2lmeSB0aGUgcGFja2FnZS4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPkZJTEVTXyR7UE59PC9maWxlbmFtZT4gc3BlY2lmaWVzIHRoZSBmaWxlcwotICAgICAgICAgICAgICAgIHRvIGdvIGludG8gdGhlIG1haW4gcGFja2FnZSAoaS5lLiB0aGUgbWFpbiBwYWNrYWdlIGlzIG5hbWVkIHRoZQotICAgICAgICAgICAgICAgIHNhbWUgYXMgdGhlIHJlY2lwZSBhbmQKKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPkZJTEVTXyR7UE59PC9maWxlbmFtZT4gc3BlY2lmaWVzIHRoZQorICAgICAgICAgICAgICAgIGZpbGVzIHRvIGdvIGludG8gdGhlIG1haW4gcGFja2FnZSAoaS5lLiB0aGUgbWFpbiBwYWNrYWdlIGhhcworICAgICAgICAgICAgICAgIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHJlY2lwZSBhbmQKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBldmFsdWF0ZXMgdG8gdGhlIHJlY2lwZSBuYW1lKS4KLSAgICAgICAgICAgICAgICBUaGUgb3JkZXIgb2YgdGhlIDxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+IHZhbHVlIGlzIHNpZ25pZmljYW50LgorICAgICAgICAgICAgICAgIFRoZSBvcmRlciBvZiB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4gdmFsdWUgaXMKKyAgICAgICAgICAgICAgICBzaWduaWZpY2FudC4KICAgICAgICAgICAgICAgICBGb3IgZWFjaCBpbnN0YWxsZWQgZmlsZSwgdGhlIGZpcnN0IHBhY2thZ2Ugd2hvc2UKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPiB2YWx1ZSBtYXRjaGVzIHRoZSBmaWxlIGlzIHRoZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgaW50byB3aGljaCB0aGUgZmlsZSBnb2VzLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+IHZhbHVlIG1hdGNoZXMgdGhlIGZpbGUgaXMgdGhlCisgICAgICAgICAgICAgICAgcGFja2FnZSBpbnRvIHdoaWNoIHRoZSBmaWxlIGdvZXMuCiAgICAgICAgICAgICAgICAgRGVmYXVsdHMgZXhpc3QgZm9yIGJvdGggdGhlIDxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+IGFuZAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+IHZhcmlhYmxlcy4KICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtaWdodCBmaW5kIHlvdSBkbyBub3QgZXZlbiBuZWVkIHRvIHNldCB0aGVzZQpAQCAtMTUxMSwyOSArMTY0OCwyOSBAQAogICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgICAgICBCZWNhdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gY29tbWFuZAogICAgICAgICAgICAgYmFja3MgdXAgYW55IGZpbGVzIGl0IG92ZXJ3cml0ZXMsIHlvdSBjYW4gdXNlIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdW5kZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gdG8gcmVzdG9yZSB0aG9zZSBmaWxlcwotICAgICAgICAgICAgYW5kIHJlbW92ZSBhbnkgb3RoZXIgZmlsZXMgdGhlIHJlY2lwZSBkZXBsb3llZC4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHVuZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gcmVzdG9yZQorICAgICAgICAgICAgdGhvc2UgZmlsZXMgYW5kIHJlbW92ZSBhbnkgb3RoZXIgZmlsZXMgdGhlIHJlY2lwZSBkZXBsb3llZC4KICAgICAgICAgICAgIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIHVuZGVwbG95LXRhcmdldCBsaWdodHRwZCByb290QDE5Mi4xNjguNy4yCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBkZXBsb3llZCBtdWx0aXBsZSBhcHBsaWNhdGlvbnMsIHlvdSBjYW4gcmVtb3ZlIHRoZW0KLSAgICAgICAgICAgIGFsbCBhdCBvbmNlIHRodXMgcmVzdG9yaW5nIHRoZSB0YXJnZXQgZGV2aWNlIGJhY2sgdG8gaXRzCisgICAgICAgICAgICBhbGwgdXNpbmcgdGhlICItYSIgb3B0aW9uIHRodXMgcmVzdG9yaW5nIHRoZSB0YXJnZXQgZGV2aWNlIHRvIGl0cwogICAgICAgICAgICAgb3JpZ2luYWwgc3RhdGU6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCB1bmRlcGxveS10YXJnZXQgLWEgcm9vdEAxOTIuMTY4LjcuMgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgZmlsZXMgZGVwbG95ZWQgdG8gdGhlIHRhcmdldCBhcyB3ZWxsIGFzIGFueQogICAgICAgICAgICAgYmFja2VkIHVwIGZpbGVzIGFyZSBzdG9yZWQgb24gdGhlIHRhcmdldCBpdHNlbGYuCi0gICAgICAgICAgICBUaGlzIHN0b3JhZ2Ugb2YgY291cnNlIHJlcXVpcmVzIHNvbWUgYWRkaXRpb25hbCBzcGFjZQorICAgICAgICAgICAgVGhpcyBzdG9yYWdlLCBvZiBjb3Vyc2UsIHJlcXVpcmVzIHNvbWUgYWRkaXRpb25hbCBzcGFjZQogICAgICAgICAgICAgb24gdGhlIHRhcmdldCBtYWNoaW5lLgogICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCB1bmRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBjb21tYW5kIGRvIG5vdAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHVuZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmRzIGRvIG5vdAogICAgICAgICAgICAgICAgIGN1cnJlbnRseSBpbnRlcmFjdCB3aXRoIGFueSBwYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtIG9uIHRoZQogICAgICAgICAgICAgICAgIHRhcmdldCBkZXZpY2UgKGUuZy4gUlBNIG9yIE9QS0cpLgotICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHNob3VsZCBub3QgaW50ZXJtaW5nbGUgb3BlcmF0aW9ucwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBhbmQgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBzaG91bGQgbm90IGludGVybWluZ2xlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGFuZCBwYWNrYWdlCiAgICAgICAgICAgICAgICAgbWFuYWdlciBvcGVyYXRpb25zIG9uIHRoZSB0YXJnZXQgZGV2aWNlLgogICAgICAgICAgICAgICAgIERvaW5nIHNvIGNvdWxkIHJlc3VsdCBpbiBhIGNvbmZsaWN0aW5nIHNldCBvZiBmaWxlcy4KICAgICAgICAgICAgIDwvbm90ZT4KQEAgLTE1NDQsMTYgKzE2ODEsMTQgQEAKICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgQWRkaXRpb25hbCBJdGVtcyBJbnRvIHRoZSBFeHRlbnNpYmxlIFNESzwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZXh0ZW5zaWJsZSBTREsgdHlwaWNhbGx5IG9ubHkgY29tZXMgd2l0aCBhIHNtYWxsIG51bWJlciBvZiB0b29scwotICAgICAgICAgICAgYW5kIGxpYnJhcmllcyBvdXQgb2YgdGhlIGJveC4KLSAgICAgICAgICAgIElmIHlvdSBoYXZlIGEgbWluaW1hbCBTREssIHRoZW4gaXQgc3RhcnRzIG1vc3RseSBlbXB0eSBhbmQgaXMKLSAgICAgICAgICAgIHBvcHVsYXRlZCBvbi1kZW1hbmQuCi0gICAgICAgICAgICBIb3dldmVyLCBzb21ldGltZXMgeW91IHdpbGwgbmVlZCB0byBleHBsaWNpdGx5IGluc3RhbGwgZXh0cmEgaXRlbXMKLSAgICAgICAgICAgIGludG8gdGhlIFNESy4KKyAgICAgICAgICAgIE91dCBvZiB0aGUgYm94IHRoZSBleHRlbnNpYmxlIFNESyB0eXBpY2FsbHkgb25seSBjb21lcyB3aXRoIGEgc21hbGwKKyAgICAgICAgICAgIG51bWJlciBvZiB0b29scyBhbmQgbGlicmFyaWVzLgorICAgICAgICAgICAgQSBtaW5pbWFsIFNESyBzdGFydHMgbW9zdGx5IGVtcHR5IGFuZCBpcyBwb3B1bGF0ZWQgb24tZGVtYW5kLgorICAgICAgICAgICAgU29tZXRpbWVzIHlvdSBtdXN0IGV4cGxpY2l0bHkgaW5zdGFsbCBleHRyYSBpdGVtcyBpbnRvIHRoZSBTREsuCiAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0aGVzZSBleHRyYSBpdGVtcywgeW91IGNhbiBmaXJzdCBzZWFyY2ggZm9yIHRoZSBpdGVtcwogICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHNlYXJjaDwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgbmVlZCB0byBsaW5rIHRvIGxpYkdMIGJ1dCB5b3UgYXJlIG5vdCBzdXJlCi0gICAgICAgICAgICB3aGljaCByZWNpcGUgcHJvdmlkZXMgaXQuCisgICAgICAgICAgICB3aGljaCByZWNpcGUgcHJvdmlkZXMgbGliR0wuCiAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gZmluZCBvdXQ6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBzZWFyY2ggbGliR0wKQEAgLTE1NjQsMTcgKzE2OTksMTkgQEAKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIHNkay1pbnN0YWxsIG1lc2EKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBzZGstaW5zdGFsbDwvZmlsZW5hbWU+IGFzc3VtZXMgdGhlCi0gICAgICAgICAgICBpdGVtIGlzIGF2YWlsYWJsZSBpbiBwcmUtYnVpbHQgZm9ybSBmcm9tIHlvdXIgU0RLIHByb3ZpZGVyLgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHNkay1pbnN0YWxsPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgYXNzdW1lcyB0aGUgaXRlbSBpcyBhdmFpbGFibGUgaW4gcHJlLWJ1aWx0IGZvcm0gZnJvbSB5b3VyIFNESworICAgICAgICAgICAgcHJvdmlkZXIuCiAgICAgICAgICAgICBJZiB0aGUgaXRlbSBpcyBub3QgYXZhaWxhYmxlIGFuZCBpdCBpcyBhY2NlcHRhYmxlIHRvIGJ1aWxkIHRoZSBpdGVtCiAgICAgICAgICAgICBmcm9tIHNvdXJjZSwgeW91IGNhbiBhZGQgdGhlICItcyIgb3B0aW9uIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBzZGstaW5zdGFsbCAtcyBtZXNhCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCBidWlsZGluZyB0aGUgaXRlbSBmcm9tIHNvdXJjZSB0YWtlcwotICAgICAgICAgICAgc2lnbmlmaWNhbnRseSBsb25nZXIgdGhhbiBpbnN0YWxsaW5nIHRoZSBwcmUtYnVpbHQgYXJ0aWZhY3QuCi0gICAgICAgICAgICBBbHNvLCBpZiBubyByZWNpcGUgZXhpc3RzIGZvciB0aGUgaXRlbSB5b3Ugd2FudCB0byBhZGQgdG8gdGhlIFNESywgeW91Ci0gICAgICAgICAgICBtdXN0IGluc3RlYWQgYWRkIGl0IHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgYnVpbGRpbmcgdGhlIGl0ZW0gZnJvbSBzb3VyY2UKKyAgICAgICAgICAgIHRha2VzIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRoYW4gaW5zdGFsbGluZyB0aGUgcHJlLWJ1aWx0IGFydGlmYWN0LgorICAgICAgICAgICAgQWxzbywgaWYgbm8gcmVjaXBlIGV4aXN0cyBmb3IgdGhlIGl0ZW0geW91IHdhbnQgdG8gYWRkIHRvIHRoZSBTREssCisgICAgICAgICAgICB5b3UgbXVzdCBpbnN0ZWFkIGFkZCB0aGUgaXRlbSB1c2luZyB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTE2MTIsMzEgKzE3NDksMzQgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFlvdSBtaWdodCBuZWVkIHRvIHByb2R1Y2UgYW4gU0RLIHRoYXQgY29udGFpbnMgeW91ciBvd24gY3VzdG9tCi0gICAgICAgICAgICBsaWJyYXJpZXMgZm9yIHNlbmRpbmcgdG8gYSB0aGlyZCBwYXJ0eSAoZS5nLiwgaWYgeW91IGFyZSBhIHZlbmRvciB3aXRoCi0gICAgICAgICAgICBjdXN0b21lcnMgbmVlZGluZyB0byBidWlsZCB0aGVpciBvd24gc29mdHdhcmUgZm9yIHRoZSB0YXJnZXQgcGxhdGZvcm0pLgotICAgICAgICAgICAgSWYgdGhhdCBpcyB0aGUgY2FzZSwgdGhlbiB5b3UgY2FuIHByb2R1Y2UgYSBkZXJpdmF0aXZlIFNESyBiYXNlZCBvbgotICAgICAgICAgICAgdGhlIGN1cnJlbnRseSBpbnN0YWxsZWQgU0RLIGZhaXJseSBlYXNpbHkuCi0gICAgICAgICAgICBVc2UgdGhlc2Ugc3RlcHM6CisgICAgICAgICAgICBsaWJyYXJpZXMuCisgICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSB3b3VsZCBiZSBpZiB5b3Ugd2VyZSBhIHZlbmRvciB3aXRoIGN1c3RvbWVycyB0aGF0CisgICAgICAgICAgICB1c2UgeW91ciBTREsgdG8gYnVpbGQgdGhlaXIgb3duIHBsYXRmb3JtLXNwZWNpZmljIHNvZnR3YXJlIGFuZAorICAgICAgICAgICAgdGhvc2UgY3VzdG9tZXJzIG5lZWQgYW4gU0RLIHRoYXQgaGFzIGN1c3RvbSBsaWJyYXJpZXMuCisgICAgICAgICAgICBJbiBzdWNoIGEgY2FzZSwgeW91IGNhbiBwcm9kdWNlIGEgZGVyaXZhdGl2ZSBTREsgYmFzZWQgb24gdGhlCisgICAgICAgICAgICBjdXJyZW50bHkgaW5zdGFsbGVkIFNESyBmYWlybHkgZWFzaWx5IGJ5IGZvbGxvd2luZyB0aGVzZSBzdGVwczoKICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SWYgbmVjZXNzYXJ5LCBpbnN0YWxsIGFuIGV4dGVuc2libGUgU0RLIHRoYXQKKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIG5lY2Vzc2FyeSwgaW5zdGFsbCBhbiBleHRlbnNpYmxlIFNESyB0aGF0CiAgICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IHRvIHVzZSBhcyBhIGJhc2UgZm9yIHlvdXIgZGVyaXZhdGl2ZSBTREsuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Tb3VyY2UgdGhlIGVudmlyb25tZW50IHNjcmlwdCBmb3IgdGhlIFNESy4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNvdXJjZSB0aGUgZW52aXJvbm1lbnQgc2NyaXB0IGZvciB0aGUgU0RLLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWRkIHRoZSBleHRyYSBsaWJyYXJpZXMgb3Igb3RoZXIgY29tcG9uZW50cwotICAgICAgICAgICAgICAgICAgICB5b3Ugd2FudCBieSB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZC4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFkZCB0aGUgZXh0cmEgbGlicmFyaWVzIG9yIG90aGVyIGNvbXBvbmVudHMgeW91IHdhbnQgYnkKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SdW4gdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLXNkazwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSdW4gdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLXNkazwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIFRoZSBhYm92ZSBwcm9jZWR1cmUgdGFrZXMgdGhlIHJlY2lwZXMgYWRkZWQgdG8gdGhlIHdvcmtzcGFjZSBhbmQKLSAgICAgICAgICAgIGNvbnN0cnVjdHMgYSBuZXcgU0RLIGluc3RhbGxlciBjb250YWluaW5nIHRob3NlIHJlY2lwZXMgYW5kIHRoZQorICAgICAgICAgICAgVGhlIHByZXZpb3VzIHN0ZXBzIHRha2UgdGhlIHJlY2lwZXMgYWRkZWQgdG8gdGhlIHdvcmtzcGFjZSBhbmQKKyAgICAgICAgICAgIGNvbnN0cnVjdCBhIG5ldyBTREsgaW5zdGFsbGVyIHRoYXQgY29udGFpbnMgdGhvc2UgcmVjaXBlcyBhbmQgdGhlCiAgICAgICAgICAgICByZXN1bHRpbmcgYmluYXJ5IGFydGlmYWN0cy4KICAgICAgICAgICAgIFRoZSByZWNpcGVzIGdvIGludG8gdGhlaXIgb3duIHNlcGFyYXRlIGxheWVyIGluIHRoZSBjb25zdHJ1Y3RlZAotICAgICAgICAgICAgZGVyaXZhdGl2ZSBTREssIGxlYXZpbmcgdGhlIHdvcmtzcGFjZSBjbGVhbiBhbmQgcmVhZHkgZm9yIHVzZXJzCi0gICAgICAgICAgICB0byBhZGQgdGhlaXIgb3duIHJlY2lwZXMuCisgICAgICAgICAgICBkZXJpdmF0aXZlIFNESywgd2hpY2ggbGVhdmVzIHRoZSB3b3Jrc3BhY2UgY2xlYW4gYW5kIHJlYWR5IGZvcgorICAgICAgICAgICAgdXNlcnMgdG8gYWRkIHRoZWlyIG93biByZWNpcGVzLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogPC9jaGFwdGVyPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstaW50cm8ueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstaW50cm8ueG1sCmluZGV4IGI2OTI1ZmEuLjg2NDJiZTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWludHJvLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1pbnRyby54bWwKQEAgLTMxLDE1ICszMSwxOCBAQAogICAgIDxwYXJhPgogICAgICAgICBBbGwgU0RLcyBjb25zaXN0IG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbjwvZW1waGFzaXM+OgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW48L2VtcGhhc2lzPjoKICAgICAgICAgICAgICAgICBUaGlzIHRvb2xjaGFpbiBjb250YWlucyBhIGNvbXBpbGVyLCBkZWJ1Z2dlciwgYW5kIHZhcmlvdXMKICAgICAgICAgICAgICAgICBtaXNjZWxsYW5lb3VzIHRvb2xzLgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5MaWJyYXJpZXMsIEhlYWRlcnMsIGFuZCBTeW1ib2xzPC9lbXBoYXNpcz46CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxpYnJhcmllcywgSGVhZGVycywgYW5kIFN5bWJvbHM8L2VtcGhhc2lzPjoKICAgICAgICAgICAgICAgICBUaGUgbGlicmFyaWVzLCBoZWFkZXJzLCBhbmQgc3ltYm9scyBhcmUgc3BlY2lmaWMgdG8gdGhlIGltYWdlCiAgICAgICAgICAgICAgICAgKGkuZS4gdGhleSBtYXRjaCB0aGUgaW1hZ2UpLgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5FbnZpcm9ubWVudCBTZXR1cCBTY3JpcHQ8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RW52aXJvbm1lbnQgU2V0dXAgU2NyaXB0PC9lbXBoYXNpcz46CiAgICAgICAgICAgICAgICAgVGhpcyA8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+IGZpbGUsIG9uY2UgcnVuLCBzZXRzIHVwIHRoZQogICAgICAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50IGJ5IGRlZmluaW5nIHZhcmlhYmxlcyBhbmQKICAgICAgICAgICAgICAgICBwcmVwYXJpbmcgZm9yIFNESyB1c2UuCkBAIC00OCw3ICs1MSw3IEBACiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIEFkZGl0aW9uYWxseSBhbiBleHRlbnNpYmxlIFNESyBoYXMgdG9vbHMgdGhhdCBhbGxvdyB5b3UgdG8gZWFzaWx5IGFkZAorICAgICAgICBBZGRpdGlvbmFsbHksIGFuIGV4dGVuc2libGUgU0RLIGhhcyB0b29scyB0aGF0IGFsbG93IHlvdSB0byBlYXNpbHkgYWRkCiAgICAgICAgIG5ldyBhcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcyB0byBhbiBpbWFnZSwgbW9kaWZ5IHRoZSBzb3VyY2Ugb2YgYW4KICAgICAgICAgZXhpc3RpbmcgY29tcG9uZW50LCB0ZXN0IGNoYW5nZXMgb24gdGhlIHRhcmdldCBoYXJkd2FyZSwgYW5kIGVhc2lseQogICAgICAgICBpbnRlZ3JhdGUgYW4gYXBwbGljYXRpb24gaW50byB0aGUKQEAgLTgxLDE0ICs4NCwxNSBAQAogICAgICAgICBhbmQKICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxEJz48ZmlsZW5hbWU+TEQ8L2ZpbGVuYW1lPjwvdWxpbms+LgogICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIHNwYWNlIG5lZWRlZCBmb3IgdGhlIHRvb2xzLgotICAgICAgICBVbmRlcnN0YW5kLCBob3dldmVyLCB0aGF0IGEgc3lzcm9vdCBpcyBzdGlsbCBuZWVkZWQgZm9yIGV2ZXJ5IHRhcmdldAotICAgICAgICBzaW5jZSB0aG9zZSBiaW5hcmllcyBhcmUgdGFyZ2V0LXNwZWNpZmljLgorICAgICAgICBVbmRlcnN0YW5kLCBob3dldmVyLCB0aGF0IGV2ZXJ5IHRhcmdldCBzdGlsbCBuZWVkcyBhIHN5c3Jvb3QgYmVjYXVzZQorICAgICAgICB0aG9zZSBiaW5hcmllcyBhcmUgdGFyZ2V0LXNwZWNpZmljLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgogICAgICAgICBUaGUgU0RLIGRldmVsb3BtZW50IGVudmlyb25tZW50IGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHNlbGYtY29udGFpbmVkIFNESywgd2hpY2ggaXMgYW4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgc2VsZi1jb250YWluZWQgU0RLLCB3aGljaCBpcyBhbgogICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjcm9zcy10b29sY2hhaW4gYW5kCiAgICAgICAgICAgICAgICAgbWF0Y2hpbmcgc3lzcm9vdHMgKHRhcmdldCBhbmQgbmF0aXZlKSBhbGwgYnVpbHQgYnkgdGhlCiAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSAoZS5nLiB0aGUgU0RLKS4KQEAgLTEwMCwyMSArMTA0LDI0IEBACiAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgZXh0ZW5zaWJsZSBTREsgY29udGFpbnMgdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBmdW5jdGlvbmFsaXR5LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBRdWljayBFTVVsYXRvciAoUUVNVSksIHdoaWNoIGxldHMgeW91IHNpbXVsYXRlCisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKSwgd2hpY2ggbGV0cyB5b3Ugc2ltdWxhdGUKICAgICAgICAgICAgICAgICB0YXJnZXQgaGFyZHdhcmUuCiAgICAgICAgICAgICAgICAgUUVNVSBpcyBub3QgbGl0ZXJhbGx5IHBhcnQgb2YgdGhlIFNESy4KICAgICAgICAgICAgICAgICBZb3UgbXVzdCBidWlsZCBhbmQgaW5jbHVkZSB0aGlzIGVtdWxhdG9yIHNlcGFyYXRlbHkuCiAgICAgICAgICAgICAgICAgSG93ZXZlciwgUUVNVSBwbGF5cyBhbiBpbXBvcnRhbnQgcm9sZSBpbiB0aGUgZGV2ZWxvcG1lbnQKICAgICAgICAgICAgICAgICBwcm9jZXNzIHRoYXQgcmV2b2x2ZXMgYXJvdW5kIHVzZSBvZiB0aGUgU0RLLgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBFY2xpcHNlIElERSBZb2N0byBQbHVnLWluLgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBFY2xpcHNlIElERSBZb2N0byBQbHVnLWluLgogICAgICAgICAgICAgICAgIFRoaXMgcGx1Zy1pbiBpcyBhdmFpbGFibGUgZm9yIHlvdSBpZiB5b3UgYXJlIGFuIEVjbGlwc2UKICAgICAgICAgICAgICAgICB1c2VyLgogICAgICAgICAgICAgICAgIEluIHRoZSBzYW1lIG1hbm5lciBhcyBRRU1VLCB0aGUgcGx1Zy1pbiBpcyBub3QgbGl0ZXJhbGx5IHBhcnQKICAgICAgICAgICAgICAgICBvZiB0aGUgU0RLIGJ1dCBpcyByYXRoZXIgYXZhaWxhYmxlIGZvciB1c2UgYXMgcGFydCBvZiB0aGUKICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBwcm9jZXNzLgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlZhcmlvdXMgcGVyZm9ybWFuY2UtcmVsYXRlZAorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFZhcmlvdXMgcGVyZm9ybWFuY2UtcmVsYXRlZAogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGludXh0b29scy9pbmRleC5waHAnPnRvb2xzPC91bGluaz4KICAgICAgICAgICAgICAgICB0aGF0IGNhbiBlbmhhbmNlIHlvdXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZS4KICAgICAgICAgICAgICAgICBUaGVzZSB0b29scyBhcmUgYWxzbyBzZXBhcmF0ZSBmcm9tIHRoZSBhY3R1YWwgU0RLIGJ1dCBjYW4gYmUKQEAgLTE5MiwxMSArMTk5LDExIEBACiAgICAgICAgICAgICA8L3Rncm91cD4KICAgICAgICAgPC9pbmZvcm1hbHRhYmxlPgogICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICogRXh0ZW5zaWJsZSBTREsgd2lsbCBjb250YWluIHRoZSB0b29sY2hhaW4gYW5kIGRlYnVnZ2VyIGlmIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfRVhUX1RZUEUnPjxmaWxlbmFtZT5TREtfRVhUX1RZUEU8L2ZpbGVuYW1lPjwvdWxpbms+IGlzICJmdWxsIiBvciA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0lOQ0xVREVfVE9PTENIQUlOJz48ZmlsZW5hbWU+U0RLX0lOQ0xVREVfVE9PTENIQUlOPC9maWxlbmFtZT48L3VsaW5rPiBpcyAiMSIsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LgorICAgICAqIEV4dGVuc2libGUgU0RLIGNvbnRhaW5zIHRoZSB0b29sY2hhaW4gYW5kIGRlYnVnZ2VyIGlmIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfRVhUX1RZUEUnPjxmaWxlbmFtZT5TREtfRVhUX1RZUEU8L2ZpbGVuYW1lPjwvdWxpbms+IGlzICJmdWxsIiBvciA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0lOQ0xVREVfVE9PTENIQUlOJz48ZmlsZW5hbWU+U0RLX0lOQ0xVREVfVE9PTENIQUlOPC9maWxlbmFtZT48L3VsaW5rPiBpcyAiMSIsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LgogCi0gICAgICoqIFN5c3Jvb3QgaXMgbWFuYWdlZCB0aHJvdWdoIHVzZSBvZiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LiAgVGh1cywgaXQgaXMgbGVzcyBsaWtlbHkgdGhhdCB5b3Ugd2lsbCBjb3JydXB0IHlvdXIgU0RLIHN5c3Jvb3Qgd2hlbiB5b3UgdHJ5IHRvIGFkZCBhZGRpdGlvbmFsIGxpYnJhcmllcy4KKyAgICAgKiogU3lzcm9vdCBpcyBtYW5hZ2VkIHRocm91Z2ggdGhlIHVzZSBvZiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LiAgVGh1cywgaXQgaXMgbGVzcyBsaWtlbHkgdGhhdCB5b3Ugd2lsbCBjb3JydXB0IHlvdXIgU0RLIHN5c3Jvb3Qgd2hlbiB5b3UgdHJ5IHRvIGFkZCBhZGRpdGlvbmFsIGxpYnJhcmllcy4KIAotICAgICAqKiogUnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQgY2FuIGJlIGFkZGVkIHRvIHRoZSBzdGFuZGFyZCBTREsgYnV0IGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgZGVmYXVsdC4KKyAgICAgKioqIFlvdSBjYW4gYWRkIHJ1bnRpbWUgcGFja2FnZSBtYW5hZ2VtZW50IHRvIHRoZSBzdGFuZGFyZCBTREsgYnV0IGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgZGVmYXVsdC4KIAogICAgICAqKioqIFlvdSBtdXN0IGJ1aWxkIGFuZCBtYWtlIHRoZSBzaGFyZWQgc3RhdGUgYXZhaWxhYmxlIHRvIGV4dGVuc2libGUgU0RLIHVzZXJzIGZvciAicGFja2FnZXMiIHlvdSB3YW50IHRvIGVuYWJsZSB1c2VycyB0byBpbnN0YWxsLgogICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0yMTYsNyArMjIzLDcgQEAKICAgICAgICAgICAgIFRoaXMgdG9vbGNoYWluIGlzIGNyZWF0ZWQgYnkgcnVubmluZyBhIFNESyBpbnN0YWxsZXIgc2NyaXB0CiAgICAgICAgICAgICBvciB0aHJvdWdoIGEKICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgIHRoYXQgaXMgYmFzZWQgb24geW91ciBNZXRhZGF0YSBjb25maWd1cmF0aW9uIG9yIGV4dGVuc2lvbiBmb3IKKyAgICAgICAgICAgIHRoYXQgaXMgYmFzZWQgb24geW91ciBtZXRhZGF0YSBjb25maWd1cmF0aW9uIG9yIGV4dGVuc2lvbiBmb3IKICAgICAgICAgICAgIHlvdXIgdGFyZ2V0ZWQgZGV2aWNlLgogICAgICAgICAgICAgVGhlIGNyb3NzLXRvb2xjaGFpbiB3b3JrcyB3aXRoIGEgbWF0Y2hpbmcgdGFyZ2V0IHN5c3Jvb3QuCiAgICAgICAgIDwvcGFyYT4KQEAgLTIzMCw3ICsyMzcsNyBAQAogICAgICAgICAgICAgZm9yIGdlbmVyYXRpbmcgYmluYXJpZXMgdGhhdCBydW4gb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCiAgICAgICAgICAgICBUaGUgdGFyZ2V0IHN5c3Jvb3QgaXMgYmFzZWQgb24gdGhlIHRhcmdldCByb290IGZpbGVzeXN0ZW0gaW1hZ2UKICAgICAgICAgICAgIHRoYXQgaXMgYnVpbHQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYW5kIHVzZXMgdGhlIHNhbWUKLSAgICAgICAgICAgIE1ldGFkYXRhIGNvbmZpZ3VyYXRpb24gdXNlZCB0byBidWlsZCB0aGUgY3Jvc3MtdG9vbGNoYWluLgorICAgICAgICAgICAgbWV0YWRhdGEgY29uZmlndXJhdGlvbiB1c2VkIHRvIGJ1aWxkIHRoZSBjcm9zcy10b29sY2hhaW4uCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTI0MCw3ICsyNDcsOCBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBRRU1VIGVtdWxhdG9yIGFsbG93cyB5b3UgdG8gc2ltdWxhdGUgeW91ciBoYXJkd2FyZSB3aGlsZQogICAgICAgICAgICAgcnVubmluZyB5b3VyIGFwcGxpY2F0aW9uIG9yIGltYWdlLgotICAgICAgICAgICAgUUVNVSBpcyBub3QgcGFydCBvZiB0aGUgU0RLIGJ1dCBpcyBtYWRlIGF2YWlsYWJsZSBhIG51bWJlciBvZiB3YXlzOgorICAgICAgICAgICAgUUVNVSBpcyBub3QgcGFydCBvZiB0aGUgU0RLIGJ1dCBpcyBtYWRlIGF2YWlsYWJsZSBhIG51bWJlciBvZgorICAgICAgICAgICAgZGlmZmVyZW50IHdheXM6CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgY2xvbmVkIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdApAQCAtMjY1LDcgKzI3Myw3IEBACiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9J2VjbGlwc2Utb3ZlcnZpZXcnPgotICAgICAgICA8dGl0bGU+RWNsaXBzZSBZb2N0byBQbHVnLWluPC90aXRsZT4KKyAgICAgICAgPHRpdGxlPjx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IFlvY3RvIFBsdWctaW48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIEVjbGlwc2UgSURFIGlzIGEgcG9wdWxhciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBhbmQgaXQgZnVsbHkKQEAgLTI4NSw4ICsyOTMsOCBAQAogICAgICAgICAgICAgICAgIFByZXZpb3VzIHJlbGVhc2VzIG9mIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4gc3VwcG9ydGVkCiAgICAgICAgICAgICAgICAgInVzZXItc3BhY2UgdG9vbHMiIChpLmUuIExhdGVuY3lUT1AsIFBvd2VyVE9QLCBQZXJmLCBTeXN0ZW1UYXAsCiAgICAgICAgICAgICAgICAgYW5kIEx0dG5nLXVzdCkgdGhhdCBhbHNvIGFkZGVkIHRvIHRoZSBkZXZlbG9wbWVudCBleHBlcmllbmNlLgotICAgICAgICAgICAgICAgIFRoZXNlIHRvb2xzIGhhdmUgYmVlbiBkZXByZWNhdGVkIGJlZ2lubmluZyB3aXRoIHRoaXMgcmVsZWFzZQotICAgICAgICAgICAgICAgIG9mIHRoZSBwbHVnLWluLgorICAgICAgICAgICAgICAgIFRoZXNlIHRvb2xzIGhhdmUgYmVlbiBkZXByZWNhdGVkIHdpdGggdGhlIHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgRWNsaXBzZSBZb2N0byBQbHVnLWluLgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAKQEAgLTMzNSwxNCArMzQzLDE4IEBACiAgICAgPHBhcmE+CiAgICAgICAgIFlvdSBqdXN0IG5lZWQgdG8gZm9sbG93IHRoZXNlIGdlbmVyYWwgc3RlcHM6CiAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW5zdGFsbCB0aGUgU0RLIGZvciB5b3VyIHRhcmdldCBoYXJkd2FyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbnN0YWxsIHRoZSBTREsgZm9yIHlvdXIgdGFyZ2V0IGhhcmR3YXJlOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpbnN0YWxsIHRoZSBTREssIHNlZSB0aGUKICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxpbmctdGhlLXNkayc+SW5zdGFsbGluZyB0aGUgU0RLPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb3dubG9hZCBvciBCdWlsZCB0aGUgVGFyZ2V0IEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RG93bmxvYWQgb3IgQnVpbGQgdGhlIFRhcmdldCBJbWFnZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHNldmVyYWwgdGFyZ2V0IGFyY2hpdGVjdHVyZXMKICAgICAgICAgICAgICAgICBhbmQgaGFzIG1hbnkgcHJlLWJ1aWx0IGtlcm5lbCBpbWFnZXMgYW5kIHJvb3QgZmlsZXN5c3RlbQogICAgICAgICAgICAgICAgIGltYWdlcy48L3BhcmE+CisKICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIGdvaW5nIHRvIGRldmVsb3AgeW91ciBhcHBsaWNhdGlvbiBvbgogICAgICAgICAgICAgICAgIGhhcmR3YXJlLCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fTUFDSElORVNfRExfVVJMOyc+PGZpbGVuYW1lPm1hY2hpbmVzPC9maWxlbmFtZT48L3VsaW5rPgpAQCAtMzU2LDYgKzM2OCw3IEBACiAgICAgICAgICAgICAgICAgc28gZm9ydGguCiAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBnZXQgdGhlIGZpbGVzIHlvdSBuZWVkIGZvciB5b3VyIHBhcnRpY3VsYXIKICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBwcm9jZXNzLjwvcGFyYT4KKwogICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBhcmUgZ29pbmcgdG8gZGV2ZWxvcCB5b3VyIGFwcGxpY2F0aW9uIGFuZAogICAgICAgICAgICAgICAgIHRoZW4gcnVuIGFuZCB0ZXN0IGl0IHVzaW5nIHRoZSBRRU1VIGVtdWxhdG9yLCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fUUVNVV9ETF9VUkw7Jz48ZmlsZW5hbWU+bWFjaGluZXMvcWVtdTwvZmlsZW5hbWU+PC91bGluaz4KQEAgLTM2NCwzNSArMzc3LDM1IEBACiAgICAgICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoZS5nLiA8ZmlsZW5hbWU+cWVtdXg4Nl82NDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgZm9yIGFuIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+LWJhc2VkCiAgICAgICAgICAgICAgICAgNjQtYml0IGFyY2hpdGVjdHVyZSkuCi0gICAgICAgICAgICAgICAgRG93bmxvYWQga2VybmVsLCByb290IGZpbGVzeXN0ZW0sIGFuZCBhbnkgb3RoZXIgZmlsZXMgeW91CisgICAgICAgICAgICAgICAgRG93bmxvYWQgdGhlIGtlcm5lbCwgcm9vdCBmaWxlc3lzdGVtLCBhbmQgYW55IG90aGVyIGZpbGVzIHlvdQogICAgICAgICAgICAgICAgIG5lZWQgZm9yIHlvdXIgcHJvY2Vzcy4KICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVG8gdXNlIHRoZSByb290IGZpbGVzeXN0ZW0gaW4gUUVNVSwgeW91Ci0gICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gZXh0cmFjdCBpdC4KKyAgICAgICAgICAgICAgICAgICAgVG8gdXNlIHRoZSByb290IGZpbGVzeXN0ZW0gaW4gUUVNVSwgeW91IG5lZWQgdG8gZXh0cmFjdCBpdC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWV4dHJhY3RpbmctdGhlLXJvb3QtZmlsZXN5c3RlbSc+RXh0cmFjdGluZyB0aGUgUm9vdCBGaWxlc3lzdGVtPC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGV4dHJhY3QgdGhlIHJvb3QKICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRldmVsb3AgYW5kIFRlc3QgeW91cgotICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uOjwvZW1waGFzaXM+ICBBdCB0aGlzIHBvaW50LCB5b3UgaGF2ZSB0aGUgdG9vbHMKLSAgICAgICAgICAgICAgICB0byBkZXZlbG9wIHlvdXIgYXBwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgdG8gc2VwYXJhdGVseSBpbnN0YWxsIGFuZCB1c2UgdGhlIFFFTVUKLSAgICAgICAgICAgICAgICBlbXVsYXRvciwgeW91IGNhbiBnbyB0bworICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXZlbG9wIGFuZCBUZXN0IHlvdXIgQXBwbGljYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgaGF2ZSB0aGUgdG9vbHMgdG8gZGV2ZWxvcCB5b3VyIGFwcGxpY2F0aW9uLgorICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIHNlcGFyYXRlbHkgaW5zdGFsbCBhbmQgdXNlIHRoZSBRRU1VIGVtdWxhdG9yLAorICAgICAgICAgICAgICAgIHlvdSBjYW4gZ28gdG8KICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd2lraS5xZW11Lm9yZy9NYWluX1BhZ2UnPlFFTVUgSG9tZSBQYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICB0byBkb3dubG9hZCBhbmQgbGVhcm4gYWJvdXQgdGhlIGVtdWxhdG9yLgogICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Jz5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCiAgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgUUVNVSB3aXRoaW4gdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgUHJvamVjdC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICBQcm9qZWN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgbWFudWFsIGRlc2NyaWJlcyBob3cgdG8gdXNlIGJvdGggdGhlIHN0YW5kYXJkCi0gICAgICAgIFNESyBhbmQgdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgbWFudWFsIGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZSBleHRlbnNpYmxlCisgICAgICAgIGFuZCBzdGFuZGFyZCBTREtzLgogICAgICAgICBJbmZvcm1hdGlvbiBhbHNvIGV4aXN0cyBpbiBhcHBlbmRpeCBmb3JtIHRoYXQgZGVzY3JpYmVzIGhvdyB5b3UgY2FuCiAgICAgICAgIGJ1aWxkLCBpbnN0YWxsLCBhbmQgbW9kaWZ5IGFuIFNESy4KICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnhtbAppbmRleCA3ZmMwNDcyLi5lODU4YjliIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwKQEAgLTUyLDE0ICs1Miw5IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgPC9yZXZoaXN0b3J5PgogCkBAIC04MSwyNyArNzYsMzggQEAKICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCi0gICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAotICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCisgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscworICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBsb2NhdGVkIHRoaXMgbWFudWFsIHRocm91Z2ggYSB3ZWIgc2VhcmNoLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgbWFudWFsIG1pZ2h0IG5vdCBiZSB0aGUgb25lIHlvdSB3YW50CisgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIHRoZSBzZWFyY2ggbWlnaHQgaGF2ZSByZXR1cm5lZCBhIG1hbnVhbCBtdWNoCisgICAgICAgICAgICAgICAgICAgICAgIG9sZGVyIHRoYW4gdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiB3aXRoIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICAgICBhcmUgd29ya2luZykuCisgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCBZb2N0byBQcm9qZWN0IG1ham9yIHJlbGVhc2VzIGJ5CisgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvUmVsZWFzZXMnPlJlbGVhc2VzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCisgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KLQogICAgIDwvbGVnYWxub3RpY2U+CiAKICAgICA8L2Jvb2tpbmZvPgpAQCAtMTIyLDcgKzEyOCw3IEBACiAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJzZGstYXBwZW5kaXgtY3VzdG9taXppbmctc3RhbmRhcmQueG1sIi8+CiAKLSAgICA8eGk6aW5jbHVkZSBocmVmPSJzZGstYXBwZW5kaXgtbWFycy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJzZGstYXBwZW5kaXgtbmVvbi54bWwiLz4KIAogPCEtLSAgICA8aW5kZXggaWQ9J2luZGV4Jz4KICAgICAgIDx0aXRsZT5JbmRleDwvdGl0bGU+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay11c2luZy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay11c2luZy54bWwKaW5kZXggNzI4MWU4My4uZGQyMjBjMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstdXNpbmcueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXVzaW5nLnhtbApAQCAtMTksOSArMTksOSBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIFlvdSBjYW4gdXNlIGEgc3RhbmRhcmQgU0RLIHRvIHdvcmsgb24gTWFrZWZpbGUsIEF1dG90b29scywgYW5kCi0gICAgICAgIEVjbGlwc2UtYmFzZWQgcHJvamVjdHMuCisgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+LWJhc2VkIHByb2plY3RzLgogICAgICAgICBTZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstd29ya2luZy1wcm9qZWN0cyc+V29ya2luZyB3aXRoIERpZmZlcmVudCBUeXBlcyBvZiBQcm9qZWN0czwvbGluaz4iCisgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstd29ya2luZy1wcm9qZWN0cyc+VXNpbmcgdGhlIFNESyBUb29sY2hhaW4gRGlyZWN0bHk8L2xpbms+IgogICAgICAgICBjaGFwdGVyIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgIDwvcGFyYT4KIApAQCAtNTMsMjQgKzUzLDI0IEBACiAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIHRoZSBTREs8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGRvIGlzIGluc3RhbGwgdGhlIFNESyBvbiB5b3VyIGhvc3QKLSAgICAgICAgICAgIGRldmVsb3BtZW50IG1hY2hpbmUgYnkgcnVubmluZyB0aGUgPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPgotICAgICAgICAgICAgaW5zdGFsbGF0aW9uIHNjcmlwdC4KKyAgICAgICAgICAgIFRoZSBmaXJzdCB0aGluZyB5b3UgbmVlZCB0byBkbyBpcyBpbnN0YWxsIHRoZSBTREsgb24geW91cgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPkJ1aWxkIEhvc3Q8L3VsaW5rPgorICAgICAgICAgICAgYnkgcnVubmluZyB0aGUgPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPiBpbnN0YWxsYXRpb24gc2NyaXB0LgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBZb3UgY2FuIGRvd25sb2FkIGEgdGFyYmFsbCBpbnN0YWxsZXIsIHdoaWNoIGluY2x1ZGVzIHRoZQogICAgICAgICAgICAgcHJlLWJ1aWx0IHRvb2xjaGFpbiwgdGhlIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4KLSAgICAgICAgICAgIHNjcmlwdCwgYW5kIHN1cHBvcnQgZmlsZXMgZnJvbSB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3J5IHVuZGVyCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fVE9PTENIQUlOX0RMX1VSTDsnPjwvdWxpbms+LgotICAgICAgICAgICAgVG9vbGNoYWlucyBhcmUgYXZhaWxhYmxlIGZvciAzMi1iaXQgYW5kIDY0LWJpdCB4ODYgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgIHN5c3RlbXMgZnJvbSB0aGUgPGZpbGVuYW1lPmk2ODY8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT54ODZfNjQ8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcywgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgc2NyaXB0LCBhbmQgc3VwcG9ydCBmaWxlcyBmcm9tIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1RPT0xDSEFJTl9ETF9VUkw7Jz50b29sY2hhaW48L3VsaW5rPgorICAgICAgICAgICAgZGlyZWN0b3J5IHdpdGhpbiB0aGUgSW5kZXggb2YgUmVsZWFzZXMuCisgICAgICAgICAgICBUb29sY2hhaW5zIGFyZSBhdmFpbGFibGUgZm9yIHNldmVyYWwgMzItYml0IGFuZCA2NC1iaXQKKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMgd2l0aCB0aGUgPGZpbGVuYW1lPng4Nl82NDwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLAorICAgICAgICAgICAgcmVzcGVjdGl2ZWx5LgogICAgICAgICAgICAgVGhlIHRvb2xjaGFpbnMgdGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgYXJlIGJhc2VkIG9mZiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBpbWFnZSBhbmQgY29udGFpbgorICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlcyBhbmQgY29udGFpbgogICAgICAgICAgICAgbGlicmFyaWVzIGFwcHJvcHJpYXRlIGZvciBkZXZlbG9waW5nIGFnYWluc3QgdGhhdCBpbWFnZS4KLSAgICAgICAgICAgIEVhY2ggdHlwZSBvZiBkZXZlbG9wbWVudCBzeXN0ZW0gc3VwcG9ydHMgZml2ZSBvciBtb3JlIHRhcmdldAotICAgICAgICAgICAgYXJjaGl0ZWN0dXJlcy4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtODYsMTQgKzg2LDE1IEBACiAKICAgICAgICAgICAgICAgICAgICAgaTY4NiBvciB4ODZfNjQuCiAKLSAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZV90eXBlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIGltYWdlIGZvciB3aGljaCB0aGUgU0RLIHdhcyBidWlsdC4KKyAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZV90eXBlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIGltYWdlIGZvciB3aGljaCB0aGUgU0RLIHdhcyBidWlsdDoKKworICAgICAgICAgICAgICAgICAgICBjb3JlLWltYWdlLW1pbmltYWwgb3IgY29yZS1pbWFnZS1zYXRvLgogCiAgICAgICAgICA8cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdHVuZWQgdGFyZ2V0IGFyY2hpdGVjdHVyZToKIAotICAgICAgICAgICAgICAgICAgICBpNTg2LCB4ODZfNjQsIHBvd2VycGMsIG1pcHMsIGFybXY3YSBvciBhcm12NXRlCisgICAgICAgICAgICAgICAgICAgIGFhcmNoNjQsIGFybXY1ZSwgY29yZTItNjQsIGk1ODYsIG1pcHMzMnIyLCBtaXBzNjQsIHBwYzc0MDAsIG9yIGNvcnRleGE4aGYtbmVvbi4KIAotICAgICAgICAgPHJlcGxhY2VhYmxlPnJlbGVhc2VfdmVyc2lvbjwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVsZWFzZSBudW1iZXIgb2YgdGhlCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdDoKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWxlYXNlX3ZlcnNpb248L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHJlbGVhc2UgbnVtYmVyIG9mIHRoZSBZb2N0byBQcm9qZWN0OgogCiAgICAgICAgICAgICAgICAgICAgICZESVNUUk87LCAmRElTVFJPOytzbmFwc2hvdAogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtMTIwLDM4ICsxMjEsMzYgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBTREsgYW5kIHRvb2xjaGFpbnMgYXJlIHNlbGYtY29udGFpbmVkIGFuZCBieSBkZWZhdWx0IGFyZQotICAgICAgICAgICAgaW5zdGFsbGVkIGludG8gPGZpbGVuYW1lPi9vcHQvcG9reTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgSG93ZXZlciwgd2hlbiB5b3UgcnVuIHRoZSBTREsgaW5zdGFsbGVyLCB5b3UgY2FuIGNob29zZSBhbgotICAgICAgICAgICAgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFlvdSBtdXN0IGNoYW5nZSB0aGUgcGVybWlzc2lvbnMgb24gdGhlIFNESwotICAgICAgICAgICAgICAgIGluc3RhbGxlciBzY3JpcHQgc28gdGhhdCBpdCBpcyBleGVjdXRhYmxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjaG1vZCAreCBwb2t5LWdsaWJjLXg4Nl82NC1jb3JlLWltYWdlLXNhdG8taTU4Ni10b29sY2hhaW4tJkRJU1RSTzsuc2gKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBpbnN0YWxsZWQgaW50byB0aGUgPGZpbGVuYW1lPnBva3lfc2RrPC9maWxlbmFtZT4gZm9sZGVyIGluIHlvdXIKKyAgICAgICAgICAgIGhvbWUgZGlyZWN0b3J5LgorICAgICAgICAgICAgWW91IGNhbiBjaG9vc2UgdG8gaW5zdGFsbCB0aGUgZXh0ZW5zaWJsZSBTREsgaW4gYW55IGxvY2F0aW9uIHdoZW4KKyAgICAgICAgICAgIHlvdSBydW4gdGhlIGluc3RhbGxlci4KKyAgICAgICAgICAgIEhvd2V2ZXIsIGJlY2F1c2UgZmlsZXMgbmVlZCB0byBiZSB3cml0dGVuIHVuZGVyIHRoYXQgZGlyZWN0b3J5CisgICAgICAgICAgICBkdXJpbmcgdGhlIG5vcm1hbCBjb3Vyc2Ugb2Ygb3BlcmF0aW9uLCB0aGUgbG9jYXRpb24geW91IGNob29zZQorICAgICAgICAgICAgZm9yIGluc3RhbGxhdGlvbiBtdXN0IGJlIHdyaXRhYmxlIGZvciB3aGljaGV2ZXIKKyAgICAgICAgICAgIHVzZXJzIG5lZWQgdG8gdXNlIHRoZSBTREsuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBzaG93cyBob3cgdG8gcnVuIHRoZSBpbnN0YWxsZXIgZ2l2ZW4gYQogICAgICAgICAgICAgdG9vbGNoYWluIHRhcmJhbGwgZm9yIGEgNjQtYml0IHg4NiBkZXZlbG9wbWVudCBob3N0IHN5c3RlbSBhbmQKLSAgICAgICAgICAgIGEgMzItYml0IHg4NiB0YXJnZXQgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgYSA2NC1iaXQgeDg2IHRhcmdldCBhcmNoaXRlY3R1cmUuCiAgICAgICAgICAgICBUaGUgZXhhbXBsZSBhc3N1bWVzIHRoZSBTREsgaW5zdGFsbGVyIGlzIGxvY2F0ZWQgaW4KLSAgICAgICAgICAgIDxmaWxlbmFtZT5+L0Rvd25sb2Fkcy88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5+L0Rvd25sb2Fkcy88L2ZpbGVuYW1lPiBhbmQgaGFzIGV4ZWN1dGlvbiByaWdodHMuCiAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGhhdmUgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoZSBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICBpbnRvIHdoaWNoIHlvdSBhcmUgaW5zdGFsbGluZyB0aGUgU0RLLCB0aGUgaW5zdGFsbGVyCiAgICAgICAgICAgICAgICAgbm90aWZpZXMgeW91IGFuZCBleGl0cy4KLSAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBoYXZlIHdyaXRlIHBlcm1pc3Npb25zIGluIHRoZSBkaXJlY3RvcnkgYW5kCi0gICAgICAgICAgICAgICAgcnVuIHRoZSBpbnN0YWxsZXIgYWdhaW4uCisgICAgICAgICAgICAgICAgRm9yIHRoYXQgY2FzZSwgc2V0IHVwIHRoZSBwcm9wZXIgcGVybWlzc2lvbnMgaW4gdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGFuZCBydW4gdGhlIGluc3RhbGxlciBhZ2Fpbi4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCAuL3Bva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2Utc2F0by1pNTg2LXRvb2xjaGFpbi0mRElTVFJPOy5zaAorICAgICAkIC4vRG93bmxvYWRzL3Bva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2Utc2F0by1pNTg2LXRvb2xjaGFpbi0mRElTVFJPOy5zaAogICAgICBQb2t5IChZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBEaXN0cm8pIFNESyBpbnN0YWxsZXIgdmVyc2lvbiAmRElTVFJPOwogICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgRW50ZXIgdGFyZ2V0IGRpcmVjdG9yeSBmb3IgU0RLIChkZWZhdWx0OiAvb3B0L3Bva3kvJkRJU1RSTzspOgogICAgICBZb3UgYXJlIGFib3V0IHRvIGluc3RhbGwgdGhlIFNESyB0byAiL29wdC9wb2t5LyZESVNUUk87Ii4gUHJvY2VlZFtZL25dPyBZCi0gICAgIEV4dHJhY3RpbmcgU0RLLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5kb25lCisgICAgIEV4dHJhY3RpbmcgU0RLLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5kb25lCiAgICAgIFNldHRpbmcgaXQgdXAuLi5kb25lCiAgICAgIFNESyBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgc2V0IHVwIGFuZCBpcyByZWFkeSB0byBiZSB1c2VkLgogICAgICBFYWNoIHRpbWUgeW91IHdpc2ggdG8gdXNlIHRoZSBTREsgaW4gYSBuZXcgc2hlbGwgc2Vzc2lvbiwgeW91IG5lZWQgdG8gc291cmNlIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgZS5nLgpAQCAtMTcyLDEyICsxNzEsMTEgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdGhlIFNESyBpbnN0YWxsZWQsIHlvdSBtdXN0IHJ1biB0aGUgU0RLIGVudmlyb25tZW50Ci0gICAgICAgICAgICBzZXR1cCBzY3JpcHQgYmVmb3JlIHlvdSBjYW4gYWN0dWFsbHkgdXNlIGl0LgorICAgICAgICAgICAgc2V0dXAgc2NyaXB0IGJlZm9yZSB5b3UgY2FuIGFjdHVhbGx5IHVzZSB0aGUgU0RLLgogICAgICAgICAgICAgVGhpcyBzZXR1cCBzY3JpcHQgcmVzaWRlcyBpbiB0aGUgZGlyZWN0b3J5IHlvdSBjaG9zZSB3aGVuIHlvdQotICAgICAgICAgICAgaW5zdGFsbGVkIHRoZSBTREsuCi0gICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gd2hlcmUgdGhpcyBzZXR1cCBzY3JpcHQgY2FuIHJlc2lkZSwgc2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1hcHBlbmRpeC1vYnRhaW4nPk9idGFpbmluZyB0aGUgU0RLPC9saW5rPiIKLSAgICAgICAgICAgIEFwcGVuZGl4LgorICAgICAgICAgICAgaW5zdGFsbGVkIHRoZSBTREssIHdoaWNoIGlzIGVpdGhlciB0aGUgZGVmYXVsdAorICAgICAgICAgICAgPGZpbGVuYW1lPi9vcHQvcG9reS8mRElTVFJPOzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvciB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICB5b3UgY2hvc2UgZHVyaW5nIGluc3RhbGxhdGlvbi4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtMTg2LDkgKzE4NCwxMSBAQAogICAgICAgICAgICAgRW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0cyBiZWdpbiB3aXRoIHRoZSBzdHJpbmcKICAgICAgICAgICAgICI8ZmlsZW5hbWU+ZW52aXJvbm1lbnQtc2V0dXA8L2ZpbGVuYW1lPiIgYW5kIGluY2x1ZGUgYXMgcGFydCBvZgogICAgICAgICAgICAgdGhlaXIgbmFtZSB0aGUgdHVuZWQgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgY29tbWFuZCB0byBzb3VyY2UgYSBzZXR1cCBzY3JpcHQgZm9yIGFuIElBLWJhc2VkCi0gICAgICAgICAgICB0YXJnZXQgbWFjaGluZSB1c2luZyBpNTg2IHR1bmluZyBhbmQgbG9jYXRlZCBpbiB0aGUgZGVmYXVsdCBTREsKLSAgICAgICAgICAgIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgc2V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAgICAgdG8gd2hlcmUgdGhlIFNESyB3YXMgaW5zdGFsbGVkIGFuZCB0aGVuIHNvdXJjZSB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgICAgIHNldHVwIHNjcmlwdC4KKyAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIHNldHVwIHNjcmlwdCBpcyBmb3IgYW4gSUEtYmFzZWQKKyAgICAgICAgICAgIHRhcmdldCBtYWNoaW5lIHVzaW5nIGk1ODYgdHVuaW5nOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHNvdXJjZSAvb3B0L3Bva3kvJkRJU1RSTzsvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4CiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay13b3JraW5nLXByb2plY3RzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sCmluZGV4IDY5NjVlM2YuLmQ4Y2M0MjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sCkBAIC04LDcgKzgsNyBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBTREsgdG9vbGNoYWluIGRpcmVjdGx5IHdpdGggTWFrZWZpbGUsCi0gICAgICAgIEF1dG90b29scywgYW5kIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IGJhc2VkCisgICAgICAgIEF1dG90b29scywgYW5kIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+LWJhc2VkCiAgICAgICAgIHByb2plY3RzLgogICAgICAgICBUaGlzIGNoYXB0ZXIgY292ZXJzIHRoZSBmaXJzdCB0d28sIHdoaWxlIHRoZQogICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWVjbGlwc2UtcHJvamVjdCc+RGV2ZWxvcGluZyBBcHBsaWNhdGlvbnMgVXNpbmcgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz48L2xpbms+IgpAQCAtMTksMjYzICsxOSw0OTQgQEAKICAgICAgICAgPHRpdGxlPkF1dG90b29scy1CYXNlZCBQcm9qZWN0czwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGEgc3VpdGFibGUgY3Jvc3MtdG9vbGNoYWluIGluc3RhbGxlZCwgaXQgaXMgdmVyeSBlYXN5Ci0gICAgICAgICAgICB0byBkZXZlbG9wIGEgcHJvamVjdCBvdXRzaWRlIG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByZXNlbnRzIGEgc2ltcGxlICJIZWxsb3dvcmxkIiBleGFtcGxlIHRoYXQgc2hvd3MgaG93Ci0gICAgICAgICAgICB0byBzZXQgdXAsIGNvbXBpbGUsIGFuZCBydW4gdGhlIHByb2plY3QuCisgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGEgc3VpdGFibGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbic+Y3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluPC91bGluaz4KKyAgICAgICAgICAgIGluc3RhbGxlZCwgaXQgaXMgdmVyeSBlYXN5IHRvIGRldmVsb3AgYSBwcm9qZWN0IHVzaW5nIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR05VX0J1aWxkX1N5c3RlbSc+R05VIEF1dG90b29scy1iYXNlZDwvdWxpbms+CisgICAgICAgICAgICB3b3JrZmxvdywgd2hpY2ggaXMgb3V0c2lkZSBvZiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4uCiAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYW5kLXJ1bm5pbmctYS1wcm9qZWN0LWJhc2VkLW9uLWdudS1hdXRvdG9vbHMnPgotICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIGFuZCBSdW5uaW5nIGEgUHJvamVjdCBCYXNlZCBvbiBHTlUgQXV0b3Rvb2xzPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBwcmVzZW50cyBhIHNpbXBsZSBBdXRvdG9vbHMgd29ya2Zsb3cuCisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc2RrLWF1dG90b29scy1mbG93LnBuZyIgd2lkdGg9IjdpbiIgaGVpZ2h0PSI4aW4iIGFsaWduPSJjZW50ZXIiIC8+CisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNyZWF0ZSBhIHNpbXBsZSBBdXRvdG9vbHMtYmFzZWQgcHJvamVjdDoKLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgeW91ciBkaXJlY3Rvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBhIGNsZWFuIGRpcmVjdG9yeSBmb3IgeW91ciBwcm9qZWN0IGFuZCB0aGVuIG1ha2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZGlyZWN0b3J5IHlvdXIgd29ya2luZyBsb2NhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY3JlYXRlIGEgc2ltcGxlIEF1dG90b29scy1iYXNlZAorICAgICAgICAgICAgIkhlbGxvIFdvcmxkIiBwcm9qZWN0OgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIEdOVSBBdXRvdG9vbHMgd29ya2Zsb3csCisgICAgICAgICAgICAgICAgc2VlIHRoZSBzYW1lIGV4YW1wbGUgb24gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2FuanV0YS1idWlsZC10dXRvcmlhbC9zdGFibGUvY3JlYXRlLWF1dG90b29scy5odG1sLmVuJz5HTk9NRSBEZXZlbG9wZXI8L3VsaW5rPgorICAgICAgICAgICAgICAgIHNpdGUuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgV29ya2luZyBEaXJlY3RvcnkgYW5kIFBvcHVsYXRlIEl0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBhIGNsZWFuIGRpcmVjdG9yeSBmb3IgeW91ciBwcm9qZWN0IGFuZCB0aGVuIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBkaXJlY3RvcnkgeW91ciB3b3JraW5nIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgbWtkaXIgJEhPTUUvaGVsbG93b3JsZAogICAgICAkIGNkICRIT01FL2hlbGxvd29ybGQKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9wdWxhdGUgdGhlIGRpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIDxmaWxlbmFtZT5oZWxsby5jPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGUuYW08L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+Y29uZmlndXJlLmFjPC9maWxlbmFtZT4gZmlsZXMgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgPGZpbGVuYW1lPmhlbGxvLmM8L2ZpbGVuYW1lPiwgaW5jbHVkZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSBsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFmdGVyIHNldHRpbmcgdXAgdGhlIGRpcmVjdG9yeSwgcG9wdWxhdGUgaXQgd2l0aCBmaWxlcworICAgICAgICAgICAgICAgICAgICBuZWVkZWQgZm9yIHRoZSBmbG93LgorICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCBhIHByb2plY3Qgc291cmNlIGZpbGUsIGEgZmlsZSB0byBoZWxwIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwgYW5kIGEgZmlsZSB0byBoZWxwIGNyZWF0ZSB0aGUgTWFrZWZpbGUsCisgICAgICAgICAgICAgICAgICAgIGFuZCBhIFJFQURNRSBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGVsbG8uYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZmlndXJlLmFjPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZS5hbTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPiBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGNyZWF0ZSBhbiBlbXB0eSBSRUFETUUKKyAgICAgICAgICAgICAgICAgICAgZmlsZSwgd2hpY2ggaXMgcmVxdWlyZWQgYnkgR05VIENvZGluZyBTdGFuZGFyZHM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB0b3VjaCBSRUFETUUKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBDcmVhdGUgdGhlIHJlbWFpbmluZyB0aHJlZSBmaWxlcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+aGVsbG8uYzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAjaW5jbHVkZSAmbHQ7c3RkaW8uaCZndDsKIAogICAgICBtYWluKCkKICAgICAgICAgewogICAgICAgICAgICBwcmludGYoIkhlbGxvIFdvcmxkIVxuIik7CiAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciA8ZmlsZW5hbWU+TWFrZWZpbGUuYW08L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGVzZSBsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBiaW5fUFJPR1JBTVMgPSBoZWxsbwotICAgICBoZWxsb19TT1VSQ0VTID0gaGVsbG8uYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIDxmaWxlbmFtZT5jb25maWd1cmUuaW48L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGVzZSBsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmNvbmZpZ3VyZS5hYzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBBQ19JTklUKGhlbGxvLDAuMSkKICAgICAgQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbl0pCiAgICAgIEFDX1BST0dfQ0MKLSAgICAgQUNfUFJPR19JTlNUQUxMCi0gICAgIEFDX09VVFBVVChNYWtlZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Tb3VyY2UgdGhlIGNyb3NzLXRvb2xjaGFpbgotICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgZmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQXMgZGVzY3JpYmVkIGVhcmxpZXIgaW4gdGhlIG1hbnVhbCwgaW5zdGFsbGluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbiBjcmVhdGVzIGEgY3Jvc3MtdG9vbGNoYWluCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgaW4gdGhlIGRpcmVjdG9yeSB0aGF0IHRoZSBTREsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBpbnN0YWxsZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiB1c2UgdGhlIHRvb2xzIHRvIGRldmVsb3AgeW91ciBwcm9qZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgeW91IG11c3Qgc291cmNlIHRoaXMgc2V0dXAgc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBiZWdpbnMgd2l0aCB0aGUgc3RyaW5nICJlbnZpcm9ubWVudC1zZXR1cCIKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjb250YWlucyB0aGUgbWFjaGluZSBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgc3RyaW5nICJwb2t5LWxpbnV4Ii4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHNvdXJjZXMgYSBzY3JpcHQgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgU0RLIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgdGhhdCB1c2VzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgMzItYml0IEludGVsIHg4NiBBcmNoaXRlY3R1cmUgYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgJkRJU1RST19OQU1FOyBZb2N0byBQcm9qZWN0IHJlbGVhc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEFDX0NPTkZJR19GSUxFUyhNYWtlZmlsZSkKKyAgICAgQUNfT1VUUFVUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+TWFrZWZpbGUuYW08L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYmluX1BST0dSQU1TID0gaGVsbG8KKyAgICAgaGVsbG9fU09VUkNFUyA9IGhlbGxvLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Tb3VyY2UgdGhlIENyb3NzLVRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudCBTZXR1cCBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEFzIGRlc2NyaWJlZCBlYXJsaWVyIGluIHRoZSBtYW51YWwsIGluc3RhbGxpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbiBjcmVhdGVzIGEgY3Jvc3MtdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpbiB0aGUgZGlyZWN0b3J5IHRoYXQgdGhlIFNESworICAgICAgICAgICAgICAgICAgICB3YXMgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiB1c2UgdGhlIHRvb2xzIHRvIGRldmVsb3AgeW91ciBwcm9qZWN0LAorICAgICAgICAgICAgICAgICAgICB5b3UgbXVzdCBzb3VyY2UgdGhpcyBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgYmVnaW5zIHdpdGggdGhlIHN0cmluZyAiZW52aXJvbm1lbnQtc2V0dXAiCisgICAgICAgICAgICAgICAgICAgIGFuZCBjb250YWlucyB0aGUgbWFjaGluZSBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2VkIGJ5IHRoZSBzdHJpbmcgInBva3ktbGludXgiLgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB0aGUgY29tbWFuZCBzb3VyY2VzIGEgc2NyaXB0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgU0RLIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgdGhhdCB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICAzMi1iaXQgSW50ZWwgeDg2IEFyY2hpdGVjdHVyZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICZESVNUUk9fTkFNRTsgWW9jdG8gUHJvamVjdCByZWxlYXNlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc291cmNlIC9vcHQvcG9reS8mRElTVFJPOy9lbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXgKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2VuZXJhdGUgdGhlIGxvY2FsIGFjbG9jYWwubTQKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGFuZCBjcmVhdGUgdGhlIGNvbmZpZ3VyZSBzY3JpcHQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgR05VIEF1dG90b29scyBnZW5lcmF0ZSB0aGUgbG9jYWwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hY2xvY2FsLm00PC9maWxlbmFtZT4gZmlsZXMgYW5kIGNyZWF0ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSBzY3JpcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYWNsb2NhbAotICAgICAkIGF1dG9jb25mCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdlbmVyYXRlIGZpbGVzIG5lZWRlZCBieSBHTlUgY29kaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZHM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEdOVSBjb2Rpbmcgc3RhbmRhcmRzIHJlcXVpcmUgY2VydGFpbiBmaWxlcyBpbiBvcmRlcgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBwcm9qZWN0IHRvIGJlIGNvbXBsaWFudC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBjcmVhdGVzIHRob3NlIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHRvdWNoIE5FV1MgUkVBRE1FIEFVVEhPUlMgQ2hhbmdlTG9nCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdlbmVyYXRlIHRoZSBjb25maWd1cmUgZmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGdlbmVyYXRlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25maWd1cmU8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBhdXRvbWFrZSAtYQotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1jb21waWxlIHRoZSBwcm9qZWN0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgY29tcGlsZXMgdGhlIHByb2plY3QgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxlci4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPTkZJR1VSRV9GTEFHUyc+PGZpbGVuYW1lPkNPTkZJR1VSRV9GTEFHUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIHByb3ZpZGVzIHRoZSBtaW5pbWFsIGFyZ3VtZW50cyBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIEdOVSBjb25maWd1cmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gU2NyaXB0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPmF1dG9yZWNvbmY8L2ZpbGVuYW1lPiBjb21tYW5kIHRvCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIHRoZSA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYXV0b3JlY29uZgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+YXV0b3JlY29uZjwvZmlsZW5hbWU+IHRvb2wgdGFrZXMgY2FyZQorICAgICAgICAgICAgICAgICAgICBvZiBydW5uaW5nIHRoZSBvdGhlciBBdXRvdG9vbHMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YWNsb2NhbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2NvbmY8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvbWFrZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBnZXQgZXJyb3JzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25maWd1cmUuYWM8L2ZpbGVuYW1lPiwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvcmVjb25mPC9maWxlbmFtZT4gcnVucywgdGhhdCBpbmRpY2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZyBmaWxlcywgeW91IGNhbiB1c2UgdGhlICItaSIgb3B0aW9uLCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgZW5zdXJlcyBtaXNzaW5nIGF1eGlsaWFyeSBmaWxlcyBhcmUgY29waWVkIHRvIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1Db21waWxlIHRoZSBQcm9qZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBjb21waWxlcyB0aGUgcHJvamVjdCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3Jvc3MtY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09ORklHVVJFX0ZMQUdTJz48ZmlsZW5hbWU+Q09ORklHVVJFX0ZMQUdTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSBwcm92aWRlcyB0aGUgbWluaW1hbCBhcmd1bWVudHMgZm9yCisgICAgICAgICAgICAgICAgICAgIEdOVSBjb25maWd1cmU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCAuL2NvbmZpZ3VyZSAke0NPTkZJR1VSRV9GTEFHU30KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBhbmQgaW5zdGFsbCB0aGUgcHJvamVjdDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHdvIGNvbW1hbmRzIGdlbmVyYXRlIGFuZCBpbnN0YWxsIHRoZSBwcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3Rvcnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGFuIEF1dG90b29scy1iYXNlZCBwcm9qZWN0LCB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3Jvc3MtdG9vbGNoYWluIGJ5IGp1c3QgcGFzc2luZyB0aGUgYXBwcm9wcmlhdGUgaG9zdAorICAgICAgICAgICAgICAgICAgICBvcHRpb24gdG8gPGZpbGVuYW1lPmNvbmZpZ3VyZS5zaDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgaG9zdCBvcHRpb24geW91IHVzZSBpcyBkZXJpdmVkIGZyb20gdGhlIG5hbWUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5IGluIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIHlvdSBpbnN0YWxsZWQgdGhlIGNyb3NzLXRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBob3N0IG9wdGlvbiBmb3IgYW4gQVJNLWJhc2VkIHRhcmdldCB0aGF0CisgICAgICAgICAgICAgICAgICAgIHVzZXMgdGhlIEdOVSBFQUJJIGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBub3RpY2UgdGhhdCB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0IGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lbnZpcm9ubWVudC1zZXR1cC1hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaHVzLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgd29ya3MgdG8gdXBkYXRlIHlvdXIgcHJvamVjdAorICAgICAgICAgICAgICAgICAgICBhbmQgcmVidWlsZCBpdCB1c2luZyB0aGUgYXBwcm9wcmlhdGUgY3Jvc3MtdG9vbGNoYWluIHRvb2xzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgLi9jb25maWd1cmUgLS1ob3N0PWFybXY1dGUtcG9reS1saW51eC1nbnVlYWJpIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9PHJlcGxhY2VhYmxlPnN5c3Jvb3RfZGlyPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIGFuZCBJbnN0YWxsIHRoZSBQcm9qZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZXNlIHR3byBjb21tYW5kcyBnZW5lcmF0ZSBhbmQgaW5zdGFsbCB0aGUgcHJvamVjdAorICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBtYWtlCiAgICAgICQgbWFrZSBpbnN0YWxsIERFU1RESVI9Li90bXAKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VmVyaWZ5IHRoZSBpbnN0YWxsYXRpb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBpcyBhIHNpbXBsZSB3YXkgdG8gdmVyaWZ5IHRoZSBpbnN0YWxsYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIHlvdXIgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJ1bm5pbmcgdGhlIGNvbW1hbmQgcHJpbnRzIHRoZSBhcmNoaXRlY3R1cmUgb24gd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBiaW5hcnkgZmlsZSBjYW4gcnVuLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBhcmNoaXRlY3R1cmUgc2hvdWxkIGJlIHRoZSBzYW1lIGFyY2hpdGVjdHVyZSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5zdGFsbGVkIGNyb3NzLXRvb2xjaGFpbiBzdXBwb3J0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBmaWxlIC4vdG1wL3Vzci9sb2NhbC9iaW4vaGVsbG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhlY3V0ZSB5b3VyIHByb2plY3Q6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRvIGV4ZWN1dGUgdGhlIHByb2plY3QgaW4gdGhlIHNoZWxsLCBzaW1wbHkgZW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNvdWxkIGFsc28gY29weSB0aGUgYmluYXJ5IHRvIHRoZSBhY3R1YWwgdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBhbmQgcnVuIHRoZSBwcm9qZWN0IHRoZXJlIGFzIHdlbGw6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgLi9oZWxsbwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgQXMgZXhwZWN0ZWQsIHRoZSBwcm9qZWN0IGRpc3BsYXlzIHRoZSAiSGVsbG8gV29ybGQhIgotICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ncGFzc2luZy1ob3N0LW9wdGlvbnMnPgotICAgICAgICAgICAgPHRpdGxlPlBhc3NpbmcgSG9zdCBPcHRpb25zPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIGFuIEF1dG90b29scy1iYXNlZCBwcm9qZWN0LCB5b3UgY2FuIHVzZSB0aGUgY3Jvc3MtdG9vbGNoYWluCi0gICAgICAgICAgICAgICAgYnkganVzdCBwYXNzaW5nIHRoZSBhcHByb3ByaWF0ZSBob3N0IG9wdGlvbiB0bwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25maWd1cmUuc2g8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBUaGUgaG9zdCBvcHRpb24geW91IHVzZSBpcyBkZXJpdmVkIGZyb20gdGhlIG5hbWUgb2YgdGhlCi0gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGZvdW5kIGluIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggeW91Ci0gICAgICAgICAgICAgICAgaW5zdGFsbGVkIHRoZSBjcm9zcy10b29sY2hhaW4uCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBob3N0IG9wdGlvbiBmb3IgYW4gQVJNLWJhc2VkIHRhcmdldCB0aGF0IHVzZXMKLSAgICAgICAgICAgICAgICB0aGUgR05VIEVBQkkgaXMgPGZpbGVuYW1lPmFybXY1dGUtcG9reS1saW51eC1nbnVlYWJpPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgWW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIG5hbWUgb2YgdGhlIHNjcmlwdCBpcwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lbnZpcm9ubWVudC1zZXR1cC1hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRodXMsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB3b3JrcyB0byB1cGRhdGUgeW91ciBwcm9qZWN0IGFuZAotICAgICAgICAgICAgICAgIHJlYnVpbGQgaXQgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGNyb3NzLXRvb2xjaGFpbiB0b29sczoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgLi9jb25maWd1cmUgLS1ob3N0PWFybXY1dGUtcG9reS1saW51eC1nbnVlYWJpIFwKLSAgICAgICAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD08cmVwbGFjZWFibGU+c3lzcm9vdF9kaXI8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5jb25maWd1cmU8L2ZpbGVuYW1lPiBzY3JpcHQgcmVzdWx0cyBpbgotICAgICAgICAgICAgICAgICAgICBwcm9ibGVtcyByZWNvZ25pemluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9PC9maWxlbmFtZT48cmVwbGFjZWFibGU+c3lzcm9vdC1kaXI8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICBvcHRpb24sIHJlZ2VuZXJhdGUgdGhlIHNjcmlwdCB0byBlbmFibGUgdGhlIHN1cHBvcnQgYnkKLSAgICAgICAgICAgICAgICAgICAgZG9pbmcgdGhlIGZvbGxvd2luZyBhbmQgdGhlbiBydW4gdGhlIHNjcmlwdCBhZ2FpbjoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGxpYnRvb2xpemUgLS1hdXRvbWFrZQotICAgICAkIGFjbG9jYWwgLUkgJHtPRUNPUkVfVEFSR0VUX1NZU1JPT1R9L3Vzci9zaGFyZS9hY2xvY2FsIFstSSA8cmVwbGFjZWFibGU+ZGlyX2NvbnRhaW5pbmdfeW91cl9wcm9qZWN0LXNwZWNpZmljX200X21hY3JvczwvcmVwbGFjZWFibGU+XQotICAgICAkIGF1dG9jb25mCi0gICAgICQgYXV0b2hlYWRlcgotICAgICAkIGF1dG9tYWtlIC1hCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyBsZWFybiBhYm91dCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZXN0YWJsaXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4geW91IHJ1biB0aGUgY3Jvc3MtdG9vbGNoYWluIGVudmlyb25tZW50IHNldHVwCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQgYW5kIGhvdyB0aGV5IGFyZSB1c2VkIG9yIG92ZXJyaWRkZW4gd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIE1ha2VmaWxlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFrZWZpbGUtYmFzZWQtcHJvamVjdHMnPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGNvbW1hbmQgaXMgYSBzaW1wbGUgd2F5IHRvIHZlcmlmeSB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIG9mIHlvdXIgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgUnVubmluZyB0aGUgY29tbWFuZCBwcmludHMgdGhlIGFyY2hpdGVjdHVyZSBvbiB3aGljaAorICAgICAgICAgICAgICAgICAgICB0aGUgYmluYXJ5IGZpbGUgY2FuIHJ1bi4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBhcmNoaXRlY3R1cmUgc2hvdWxkIGJlIHRoZSBzYW1lIGFyY2hpdGVjdHVyZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YWxsZWQgY3Jvc3MtdG9vbGNoYWluIHN1cHBvcnRzLgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZmlsZSAuL3RtcC91c3IvbG9jYWwvYmluL2hlbGxvCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhlY3V0ZSBZb3VyIFByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVG8gZXhlY3V0ZSB0aGUgcHJvamVjdCwgeW91IHdvdWxkIG5lZWQgdG8gcnVuIGl0IG9uIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIHRhcmdldCBoYXJkd2FyZSBoYXBwZW5zIHRvIGJlIHlvdXIgYnVpbGQgaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgeW91IGNvdWxkIHJ1biB0aGUgcHJvamVjdCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgLi90bXAvdXNyL2xvY2FsL2Jpbi9oZWxsbworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFzIGV4cGVjdGVkLCB0aGUgcHJvamVjdCBkaXNwbGF5cyB0aGUgIkhlbGxvIFdvcmxkISIKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9J21ha2VmaWxlLWJhc2VkLXByb2plY3RzJz4KICAgICAgICAgPHRpdGxlPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZvciBNYWtlZmlsZS1iYXNlZCBwcm9qZWN0cywgdGhlIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudAotICAgICAgICAgICAgdmFyaWFibGVzIGVzdGFibGlzaGVkIGJ5IHJ1bm5pbmcgdGhlIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudAotICAgICAgICAgICAgc2V0dXAgc2NyaXB0IGFyZSBzdWJqZWN0IHRvIGdlbmVyYWwgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPgotICAgICAgICAgICAgcnVsZXMuCisgICAgICAgICAgICBTaW1wbGUgTWFrZWZpbGUtYmFzZWQgcHJvamVjdHMgdXNlIGFuZCBpbnRlcmFjdCB3aXRoIHRoZQorICAgICAgICAgICAgY3Jvc3MtdG9vbGNoYWluIGVudmlyb25tZW50IHZhcmlhYmxlcyBlc3RhYmxpc2hlZCB3aGVuIHlvdSBydW4KKyAgICAgICAgICAgIHRoZSBjcm9zcy10b29sY2hhaW4gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgorICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgc3ViamVjdCB0byBnZW5lcmFsCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IHJ1bGVzLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUbyBpbGx1c3RyYXRlIHRoaXMsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZm91ciBjcm9zcy10b29sY2hhaW4KLSAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlczoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNDJz5DQzwvdWxpbms+PWk1ODYtcG9reS1saW51eC1nY2MgLW0zMiAtbWFyY2g9aTU4NiAtLXN5c3Jvb3Q9L29wdC9wb2t5LyZESVNUUk87L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eAotICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTEQnPkxEPC91bGluaz49aTU4Ni1wb2t5LWxpbnV4LWxkIC0tc3lzcm9vdD0vb3B0L3Bva3kvJkRJU1RSTzsvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4Ci0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DRkxBR1MnPkNGTEFHUzwvdWxpbms+PS1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNYWEZMQUdTJz5DWFhGTEFHUzwvdWxpbms+PS1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIE5vdywgY29uc2lkZXIgdGhlIGZvbGxvd2luZyB0aHJlZSBjYXNlczoKKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHNpbXBsZSBNYWtlZmlsZSBkZXZlbG9wbWVudCBmbG93IGFuZAorICAgICAgICAgICAgcHJvdmlkZXMgYW4gZXhhbXBsZSB0aGF0IGxldHMgeW91IHNlZSBob3cgeW91IGNhbiB1c2UKKyAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIE1ha2VmaWxlIHZhcmlhYmxlcworICAgICAgICAgICAgZHVyaW5nIGRldmVsb3BtZW50LgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1tYWtlZmlsZS1mbG93LnBuZyIgd2lkdGg9IjZpbiIgaGVpZ2h0PSI3aW4iIGFsaWduPSJjZW50ZXIiIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBtYWluIHBvaW50IG9mIHRoaXMgc2VjdGlvbiBpcyB0byBleHBsYWluIHRoZSBmb2xsb3dpbmcgdGhyZWUKKyAgICAgICAgICAgIGNhc2VzIHJlZ2FyZGluZyB2YXJpYWJsZSBiZWhhdmlvcjoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2FzZSAxIC0gTm8gVmFyaWFibGVzIFNldCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGVzZSB2YXJpYWJsZXMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPiBNYXAgdG8gRXF1aXZhbGVudAorICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudCBWYXJpYWJsZXMgU2V0IGluIHRoZSBTREsgU2V0dXAgU2NyaXB0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgbWF0Y2hpbmcgdmFyaWFibGVzIGFyZSBub3Qgc3BlY2lmaWNhbGx5IHNldCBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4sIHRoZSB2YXJpYWJsZXMgcmV0YWluIHRoZWlyCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlcyBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgIHZhbHVlcyBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DYXNlIDIgLSBWYXJpYWJsZXMgU2V0IGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpY2FsbHkgc2V0dGluZyB2YXJpYWJsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DYXNlIDIgLSBWYXJpYWJsZXMgQXJlIFNldCBpbiB0aGUgTWFrZWZpbGUgdGhhdAorICAgICAgICAgICAgICAgICAgICBNYXAgdG8gRXF1aXZhbGVudCBFbnZpcm9ubWVudCBWYXJpYWJsZXMgZnJvbSB0aGUgU0RLCisgICAgICAgICAgICAgICAgICAgIFNldHVwIFNjcmlwdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpY2FsbHkgc2V0dGluZyBtYXRjaGluZyB2YXJpYWJsZXMgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IGR1cmluZyB0aGUgYnVpbGQgcmVzdWx0cyBpbgogICAgICAgICAgICAgICAgICAgICB0aGUgZW52aXJvbm1lbnQgc2V0dGluZ3Mgb2YgdGhlIHZhcmlhYmxlcyBiZWluZwogICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdHRlbi4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgdmFyaWFibGVzIHlvdSBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IGFyZSB1c2VkLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DYXNlIDMgLSBWYXJpYWJsZXMgU2V0IHdoZW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IGlzIEV4ZWN1dGVkIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgIENvbW1hbmQgTGluZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2FzZSAzIC0gVmFyaWFibGVzIEFyZSBTZXQgVXNpbmcgdGhlIENvbW1hbmQgTGluZQorICAgICAgICAgICAgICAgICAgICB0aGF0IE1hcCB0byBFcXVpdmFsZW50IEVudmlyb25tZW50IFZhcmlhYmxlcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBTREsgU2V0dXAgU2NyaXB0OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGluZyB0aGUgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4gZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZC1saW5lIHJlc3VsdHMgaW4gdGhlIHZhcmlhYmxlcyBiZWluZyBvdmVyd3JpdHRlbgotICAgICAgICAgICAgICAgICAgICB3aXRoIGNvbW1hbmQtbGluZSBjb250ZW50IHJlZ2FyZGxlc3Mgb2Ygd2hhdCBpcyBiZWluZyBzZXQKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IGNvbnNpZGVyZWQKLSAgICAgICAgICAgICAgICAgICAgdW5sZXNzIHlvdSB1c2UgdGhlICItZSIgZmxhZyBkdXJpbmcgdGhlIGJ1aWxkOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgbWFrZSAtZSA8cmVwbGFjZWFibGU+ZmlsZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHVzZSB0aGlzIGZsYWcsIHRoZW4gdGhlIGVudmlyb25tZW50IHZhbHVlcyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIG92ZXJyaWRlIGFueSB2YXJpYWJsZXMgc3BlY2lmaWNhbGx5IHNldCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGluZSByZXN1bHRzIGluIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXR0ZW4uCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGNvbW1hbmQtbGluZSBjb250ZW50IGlzIHVzZWQuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBGb3IgdGhlIGxpc3Qgb2YgdmFyaWFibGVzIHNldCB1cCBieSB0aGUgY3Jvc3MtdG9vbGNoYWluCi0gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1ydW5uaW5nLXRoZS1zZGstZW52aXJvbm1lbnQtc2V0dXAtc2NyaXB0Jz5SdW5uaW5nIHRoZSBTREsgRW52aXJvbm1lbnQgU2V0dXAgU2NyaXB0PC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgaG93IHlvdSBzZXQgeW91ciB2YXJpYWJsZXMsIGlmIHlvdSB1c2UKKyAgICAgICAgICAgICAgICB0aGUgIi1lIiBvcHRpb24gd2l0aCA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZnJvbSB0aGUgU0RLIHNldHVwIHNjcmlwdCB0YWtlIHByZWNlZGVuY2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG1ha2UgLWUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHNpbXBsZSBNYWtlZmlsZSBleGFtcGxlCisgICAgICAgICAgICB0aGF0IGRlbW9uc3RyYXRlcyB0aGVzZSB2YXJpYWJsZSBiZWhhdmlvcnMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGEgbmV3IHNoZWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IGVzdGFibGlzaGVkIGZvciB0aGUKKyAgICAgICAgICAgIFNESyB1bnRpbCB5b3UgcnVuIHRoZSBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBzaG93IGEgbnVsbCB2YWx1ZSBmb3IgdGhlCisgICAgICAgICAgICBjb21waWxlciB2YXJpYWJsZSAoaS5lLgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNDJz48ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBlY2hvICR7Q0N9CisKKyAgICAgJAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgUnVubmluZyB0aGUgU0RLIHNldHVwIHNjcmlwdCBmb3IgYSA2NC1iaXQgYnVpbGQgaG9zdCBhbmQgYW4KKyAgICAgICAgICAgIGk1ODYtdHVuZWQgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmb3IgYQorICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGltYWdlIHVzaW5nIHRoZSBjdXJyZW50CisgICAgICAgICAgICAmRElTVFJPOyBZb2N0byBQcm9qZWN0IHJlbGVhc2UgYW5kIHRoZW4gZWNob2luZyB0aGF0IHZhcmlhYmxlCisgICAgICAgICAgICBzaG93cyB0aGUgdmFsdWUgZXN0YWJsaXNoZWQgdGhyb3VnaCB0aGUgc2NyaXB0OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAvb3B0L3Bva3kvJkRJU1RSTzsvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4CisgICAgICQgZWNobyAke0NDfQorICAgICBpNTg2LXBva3ktbGludXgtZ2NjIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIGlsbHVzdHJhdGUgdmFyaWFibGUgdXNlLCB3b3JrIHRocm91Z2ggdGhpcyBzaW1wbGUgIkhlbGxvIFdvcmxkISIKKyAgICAgICAgICAgIGV4YW1wbGU6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgV29ya2luZyBEaXJlY3RvcnkgYW5kIFBvcHVsYXRlIEl0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBhIGNsZWFuIGRpcmVjdG9yeSBmb3IgeW91ciBwcm9qZWN0IGFuZCB0aGVuIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBkaXJlY3RvcnkgeW91ciB3b3JraW5nIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbWtkaXIgJEhPTUUvaGVsbG93b3JsZAorICAgICAkIGNkICRIT01FL2hlbGxvd29ybGQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBZnRlciBzZXR0aW5nIHVwIHRoZSBkaXJlY3RvcnksIHBvcHVsYXRlIGl0IHdpdGggZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgbmVlZGVkIGZvciB0aGUgZmxvdy4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgYSA8ZmlsZW5hbWU+bWFpbi5jPC9maWxlbmFtZT4gZmlsZSBmcm9tIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICBjYWxsIHlvdXIgZnVuY3Rpb24sIGEgPGZpbGVuYW1lPm1vZHVsZS5oPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICB0byBjb250YWluIGhlYWRlcnMsIGFuZCBhIDxmaWxlbmFtZT5tb2R1bGUuYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRoYXQgZGVmaW5lcyB5b3VyIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Q3JlYXRlIHRoZSB0aHJlZSBmaWxlcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bWFpbi5jPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjaW5jbHVkZSAibW9kdWxlLmgiCisgICAgIHZvaWQgc2FtcGxlX2Z1bmMoKTsKKyAgICAgaW50IG1haW4oKQorICAgICB7CisgICAgIAlzYW1wbGVfZnVuYygpOworICAgICAJcmV0dXJuIDA7CisgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bW9kdWxlLmg8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICNpbmNsdWRlICZsdDtzdGRpby5oJmd0OworICAgICB2b2lkIHNhbXBsZV9mdW5jKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPm1vZHVsZS5jPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjaW5jbHVkZSAibW9kdWxlLmgiCisgICAgIHZvaWQgc2FtcGxlX2Z1bmMoKQorICAgICB7CisJICAgICBwcmludGYoIkhlbGxvIFdvcmxkISIpOworCSAgICAgcHJpbnRmKCJcbiIpOworICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U291cmNlIHRoZSBDcm9zcy1Ub29sY2hhaW4gRW52aXJvbm1lbnQgU2V0dXAgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBcyBkZXNjcmliZWQgZWFybGllciBpbiB0aGUgbWFudWFsLCBpbnN0YWxsaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBjcm9zcy10b29sY2hhaW4gY3JlYXRlcyBhIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudCBzZXR1cAorICAgICAgICAgICAgICAgICAgICBzY3JpcHQgaW4gdGhlIGRpcmVjdG9yeSB0aGF0IHRoZSBTREsgd2FzIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHlvdSBjYW4gdXNlIHRoZSB0b29scyB0byBkZXZlbG9wIHlvdXIgcHJvamVjdCwKKyAgICAgICAgICAgICAgICAgICAgeW91IG11c3Qgc291cmNlIHRoaXMgc2V0dXAgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGJlZ2lucyB3aXRoIHRoZSBzdHJpbmcgImVudmlyb25tZW50LXNldHVwIgorICAgICAgICAgICAgICAgICAgICBhbmQgY29udGFpbnMgdGhlIG1hY2hpbmUgYXJjaGl0ZWN0dXJlLCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgc3RyaW5nICJwb2t5LWxpbnV4Ii4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgdGhlIGNvbW1hbmQgc291cmNlcyBhIHNjcmlwdCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IFNESyBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IHRoYXQgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgMzItYml0IEludGVsIHg4NiBBcmNoaXRlY3R1cmUgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAmRElTVFJPX05BTUU7IFlvY3RvIFByb2plY3QgcmVsZWFzZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAvb3B0L3Bva3kvJkRJU1RSTzsvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB0aGUgTWFrZWZpbGUgY29udGFpbnMgdHdvIGxpbmVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSA8ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgT25lIGxpbmUgaXMgaWRlbnRpY2FsIHRvIHRoZSB2YWx1ZSB0aGF0IGlzIHNldCB3aGVuIHlvdQorICAgICAgICAgICAgICAgICAgICBydW4gdGhlIFNESyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQsIGFuZCB0aGUgb3RoZXIgbGluZQorICAgICAgICAgICAgICAgICAgICBzZXRzIDxmaWxlbmFtZT5DQzwvZmlsZW5hbWU+IHRvICJnY2MiLCB0aGUgZGVmYXVsdCBHTlUKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgb24gdGhlIGJ1aWxkIGhvc3Q6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBDQz1pNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eAorICAgICAjIENDPSJnY2MiCisgICAgIGFsbDogbWFpbi5vIG1vZHVsZS5vCisgICAgIAkgJHtDQ30gbWFpbi5vIG1vZHVsZS5vIC1vIHRhcmdldF9iaW4KKyAgICAgbWFpbi5vOiBtYWluLmMgbW9kdWxlLmgKKwkgICAgICR7Q0N9IC1JIC4gLWMgbWFpbi5jCisgICAgIG1vZHVsZS5vOiBtb2R1bGUuYyBtb2R1bGUuaAorCSAgICAgJHtDQ30gLUkgLiAtYyBtb2R1bGUuYworICAgICBjbGVhbjoKKwkgICAgIHJtIC1yZiAqLm8KKwkgICAgIHJtIHRhcmdldF9iaW4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIHRoZSBQcm9qZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgYmluYXJ5IG91dHB1dCBmaWxlLgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHZhcmlhYmxlcyBhcmUgY29tbWVudGVkIG91dCBpbiB0aGUgTWFrZWZpbGUsCisgICAgICAgICAgICAgICAgICAgIHRoZSB2YWx1ZSB1c2VkIGZvciA8ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPiBpcyB0aGUgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgc2V0IHdoZW4gdGhlIFNESyBlbnZpcm9ubWVudCBzZXR1cCBmaWxlIHdhcyBydW46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBtYWtlCisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4IC1JIC4gLWMgbWFpbi5jCisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4IC1JIC4gLWMgbW9kdWxlLmMKKyAgICAgaTU4Ni1wb2t5LWxpbnV4LWdjYyAgLW0zMiAtbWFyY2g9aTU4NiAtLXN5c3Jvb3Q9L29wdC9wb2t5LzIuNS9zeXNyb290cy9pNTg2LXBva3ktbGludXggbWFpbi5vIG1vZHVsZS5vIC1vIHRhcmdldF9iaW4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSByZXN1bHRzIG9mIHRoZSBwcmV2aW91cyBjb21tYW5kLCB5b3UgY2FuIHNlZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZSBjb21waWxlciB1c2VkIHdhcyB0aGUgY29tcGlsZXIgZXN0YWJsaXNoZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4gdmFyaWFibGUgZGVmaW5lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIG92ZXJyaWRlIHRoZSA8ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSBzYW1lIHZhcmlhYmxlIGFzIHNldCBmcm9tCisgICAgICAgICAgICAgICAgICAgIHRoZSBNYWtlZmlsZSBieSB1bmNvbW1lbnRpbmcgdGhlIGxpbmUgaW4gdGhlIE1ha2VmaWxlCisgICAgICAgICAgICAgICAgICAgIGFuZCBydW5uaW5nIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gYWdhaW4uCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBtYWtlIGNsZWFuCisgICAgIHJtIC1yZiAqLm8KKyAgICAgcm0gdGFyZ2V0X2JpbgorICAgICAjCisgICAgICMgRWRpdCB0aGUgTWFrZWZpbGUgYnkgdW5jb21tZW50aW5nIHRoZSBsaW5lIHRoYXQgc2V0cyBDQyB0byAiZ2NjIgorICAgICAjCisgICAgICQgbWFrZQorICAgICBnY2MgLUkgLiAtYyBtYWluLmMKKyAgICAgZ2NjIC1JIC4gLWMgbW9kdWxlLmMKKyAgICAgZ2NjIG1haW4ubyBtb2R1bGUubyAtbyB0YXJnZXRfYmluCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQXMgc2hvd24gaW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHRoZSBjcm9zcy10b29sY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgaXMgbm90IHVzZWQuCisgICAgICAgICAgICAgICAgICAgIFJhdGhlciwgdGhlIGRlZmF1bHQgY29tcGlsZXIgaXMgdXNlZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBuZXh0IGNhc2Ugc2hvd3MgaG93IHRvIG92ZXJyaWRlIGEgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgYnkgcHJvdmlkaW5nIHRoZSB2YXJpYWJsZSBhcyBwYXJ0IG9mIHRoZSBjb21tYW5kIGxpbmUuCisgICAgICAgICAgICAgICAgICAgIEdvIGludG8gdGhlIE1ha2VmaWxlIGFuZCByZS1pbnNlcnQgdGhlIGNvbW1lbnQgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgIHNvIHRoYXQgcnVubmluZyA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IHVzZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGVzdGFibGlzaGVkIFNESyBjb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgd2hlbiB5b3UgcnVuIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4sIHVzZSBhCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSBhcmd1bWVudCB0byBzZXQgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gImdjYyI6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBtYWtlIGNsZWFuCisgICAgIHJtIC1yZiAqLm8KKyAgICAgcm0gdGFyZ2V0X2JpbgorICAgICAjCisgICAgICMgRWRpdCB0aGUgTWFrZWZpbGUgdG8gY29tbWVudCBvdXQgdGhlIGxpbmUgc2V0dGluZyBDQyB0byAiZ2NjIgorICAgICAjCisgICAgICQgbWFrZQorICAgICBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtSSAuIC1jIG1haW4uYworICAgICBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtSSAuIC1jIG1vZHVsZS5jCisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4IG1haW4ubyBtb2R1bGUubyAtbyB0YXJnZXRfYmluCisgICAgICQgbWFrZSBjbGVhbgorICAgICBybSAtcmYgKi5vCisgICAgIHJtIHRhcmdldF9iaW4KKyAgICAgJCBtYWtlIENDPSJnY2MiCisgICAgIGdjYyAtSSAuIC1jIG1haW4uYworICAgICBnY2MgLUkgLiAtYyBtb2R1bGUuYworICAgICBnY2MgbWFpbi5vIG1vZHVsZS5vIC1vIHRhcmdldF9iaW4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgY2FzZSwgdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudCBvdmVycmlkZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIFNESyBlbnZpcm9ubWVudCB2YXJpYWJsZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gdGhpcyBsYXN0IGNhc2UsIGVkaXQgTWFrZWZpbGUgYWdhaW4gdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAiZ2NjIiBjb21waWxlciBidXQgdGhlbiB1c2UgdGhlICItZSIgb3B0aW9uIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgbGluZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG1ha2UgY2xlYW4KKyAgICAgcm0gLXJmICoubworICAgICBybSB0YXJnZXRfYmluCisgICAgICMKKyAgICAgIyBFZGl0IHRoZSBNYWtlZmlsZSB0byB1c2UgImdjYyIKKyAgICAgIworICAgICAkIG1ha2UKKyAgICAgZ2NjIC1JIC4gLWMgbWFpbi5jCisgICAgIGdjYyAtSSAuIC1jIG1vZHVsZS5jCisgICAgIGdjYyBtYWluLm8gbW9kdWxlLm8gLW8gdGFyZ2V0X2JpbgorICAgICAkIG1ha2UgY2xlYW4KKyAgICAgcm0gLXJmICoubworICAgICBybSB0YXJnZXRfYmluCisgICAgICQgbWFrZSAtZQorICAgICBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtSSAuIC1jIG1haW4uYworICAgICBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtSSAuIC1jIG1vZHVsZS5jCisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4IG1haW4ubyBtb2R1bGUubyAtbyB0YXJnZXRfYmluCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGNhc2UsIHRoZSAiLWUiIG9wdGlvbiBmb3JjZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiB0byB1c2UgdGhlIFNESyBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWVzIGluIHRoZSBNYWtlZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhlY3V0ZSBZb3VyIFByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVG8gZXhlY3V0ZSB0aGUgcHJvamVjdCAoaS5lLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGFyZ2V0X2JpbjwvZmlsZW5hbWU+KSwgdXNlIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIC4vdGFyZ2V0X2JpbgorICAgICBIZWxsbyBXb3JsZCEKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2VkIHRoZSBjcm9zcy10b29sY2hhaW4gY29tcGlsZXIgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50YXJnZXRfYmluPC9maWxlbmFtZT4gYW5kIHlvdXIgYnVpbGQgaG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVycyBpbiBhcmNoaXRlY3R1cmUgZnJvbSB0aGF0IG9mIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUsIHlvdSBuZWVkIHRvIHJ1biB5b3VyIHByb2plY3Qgb24gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIEFzIGV4cGVjdGVkLCB0aGUgcHJvamVjdCBkaXNwbGF5cyB0aGUgIkhlbGxvIFdvcmxkISIKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogPC9jaGFwdGVyPgogPCEtLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtaW50cm8ueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtaW50cm8ueG1sCmluZGV4IDRlNTllMDAuLmU4NDk2NGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLWludHJvLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1pbnRyby54bWwKQEAgLTM4LDcgKzM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCcm93c2UgbGF5ZXJzIGxpc3RlZCBpbiB0aGUgdmFyaW91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2xheWVyLXNvdXJjZSc+bGF5ZXIgc291cmNlczwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFyZSBhdmFpbGFibGUgaW4geW91ciBwcm9qZWN0IChlLmcuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBNZXRhZGF0YSBJbmRleCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBMYXllciBJbmRleCBhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4Lyc+PC91bGluaz4pLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtcmVmZXJlbmNlLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXJlZmVyZW5jZS54bWwKaW5kZXggZTk4NDM5MS4uNzQ0MDU4MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtcmVmZXJlbmNlLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1yZWZlcmVuY2UueG1sCkBAIC0zNCw3ICszNCw3IEBACiAgICAgICAgICAgICBBIGxheWVyIGluZGV4IGlzIGEgd2ViIGFwcGxpY2F0aW9uIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24KICAgICAgICAgICAgIGFib3V0IGEgc2V0IG9mIGN1c3RvbSBsYXllcnMuCiAgICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSBvZiBhbiBleGlzdGluZyBsYXllciBpbmRleCBpcyB0aGUKLSAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBNZXRhZGF0YSBJbmRleC4KKyAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBMYXllciBJbmRleC4KICAgICAgICAgICAgIEEgcHVibGljIGluc3RhbmNlIG9mIHRoaXMgbGF5ZXIgaW5kZXggZXhpc3RzIGF0CiAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcnPjwvdWxpbms+LgogICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBjb2RlIGZvciB0aGlzIGxheWVyIGluZGV4J3Mgd2ViIGFwcGxpY2F0aW9uIGF0CkBAIC05MiwxMSArOTIsMTEgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyN1c2luZy10aGUteW9jdG8tcHJvamVjdHMtYnNwLXRvb2xzJz5Vc2luZyB0aGUgWW9jdG8gUHJvamVjdCdzIEJTUCBUb29sczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucyBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKLSAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUuCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3RoZS15b2N0by1wcm9qZWN0LWxheWVyLW1vZGVsJz5UaGUgWW9jdG8gUHJvamVjdCBMYXllciBNb2RlbDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9zZWN0aW9uPgogCkBAIC02ODEsMjYgKzY4MSwyNyBAQAogICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgYXQKICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2xpYi9tYW5hZ2UucHk8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhvc2UgY29tbWFuZHMuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZyA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT4gY29tbWFuZHMgZ2l2ZW4KLSAgICAgICAgICAgICAgICAgICAgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIHlvdSBtdXN0IGJlIHN1cmUgdGhhdCB5b3VyCi0gICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgZGlyZWN0b3J5IGlzIHNldCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPm1hbmFnZS5weTwvZmlsZW5hbWU+IGNvbW1hbmRzIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeSBhbGxvd3MgVG9hc3RlciB0byBmaW5kIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG9hc3Rlci5zcWxpdGU8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBsb2NhdGVkCi0gICAgICAgICAgICAgICAgICAgIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBub24tZGVmYXVsdCBkYXRhYmFzZSBjb25maWd1cmF0aW9ucywgaXQgaXMgcG9zc2libGUKLSAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgY2FuIHVzZSA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT4gY29tbWFuZHMKLSAgICAgICAgICAgICAgICAgICAgZnJvbSBhIGRpcmVjdG9yeSBvdGhlciB0aGFuIHRoZSBCdWlsZCBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIFRvIGRvIHNvLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRvYXN0ZXJtYWluL3NldHRpbmdzLnB5PC9maWxlbmFtZT4gZmlsZSBtdXN0IGJlCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZWQgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgZGF0YWJhc2UgYmFja2VuZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gdXNpbmcgPGZpbGVuYW1lPm1hbmFnZS5weTwvZmlsZW5hbWU+IGNvbW1hbmRzIGdpdmVuCisgICAgICAgICAgICAgICAgICAgICAgICBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiwgeW91IG11c3QgYmUgc3VyZSB0aGF0IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgZGlyZWN0b3J5IGlzIHNldCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT4gY29tbWFuZHMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeSBhbGxvd3MgVG9hc3RlciB0byBmaW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRvYXN0ZXIuc3FsaXRlPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMgbG9jYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3Igbm9uLWRlZmF1bHQgZGF0YWJhc2UgY29uZmlndXJhdGlvbnMsIGl0IGlzIHBvc3NpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHlvdSBjYW4gdXNlIDxmaWxlbmFtZT5tYW5hZ2UucHk8L2ZpbGVuYW1lPiBjb21tYW5kcworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBhIGRpcmVjdG9yeSBvdGhlciB0aGFuIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBUbyBkbyBzbywgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG9hc3Rlcm1haW4vc2V0dGluZ3MucHk8L2ZpbGVuYW1lPiBmaWxlIG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZWQgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgZGF0YWJhc2UgYmFja2VuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZS54bWwKaW5kZXggYzI2YTMyYS4uYjRjYWViYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZS54bWwKQEAgLTExLDkgKzExLDkgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgc2V0IHVwIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBpbnN0YWxsZWQgdGhlCi0gICAgICAgICAgICBUb2FzdGVyIHN5c3RlbSBkZXBlbmRlbmNpZXMgYXMgZGVzY3JpYmVkIGluCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndG9hc3Rlci1tYW51YWwtc3RhcnQnPlByZXBhcmluZyB0byBVc2UgVG9hc3RlcjwvbGluaz4iLAotICAgICAgICAgICAgeW91IGFyZSByZWFkeSB0byBzdGFydCBUb2FzdGVyLgorICAgICAgICAgICAgVG9hc3RlciBzeXN0ZW0gZGVwZW5kZW5jaWVzIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd0b2FzdGVyLW1hbnVhbC1zdGFydCc+UHJlcGFyaW5nIHRvIFVzZSBUb2FzdGVyPC9saW5rPiIKKyAgICAgICAgICAgIGNoYXB0ZXIsIHlvdSBhcmUgcmVhZHkgdG8gc3RhcnQgVG9hc3Rlci4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtNjEsNiArNjEsNzEgQEAKICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAorICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLXVwLXRvYXN0ZXItd2l0aG91dC1hLXdlYi1zZXJ2ZXInPgorICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCBUb2FzdGVyIFdpdGhvdXQgYSBXZWIgU2VydmVyPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gc3RhcnQgYSBUb2FzdGVyIGVudmlyb25tZW50IHdpdGhvdXQgc3RhcnRpbmcgaXRzCisgICAgICAgICAgICB3ZWIgc2VydmVyLiBUaGlzIGlzIHVzZWZ1bCBmb3IgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDYXB0dXJpbmcgYSBjb21tYW5kLWxpbmUgYnVpbGTigJlzIHN0YXRpc3RpY3MgaW50bworICAgICAgICAgICAgICAgICAgICB0aGUgVG9hc3RlciBkYXRhYmFzZSBmb3IgZXhhbWluYXRpb24gbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ2FwdHVyaW5nIGEgY29tbWFuZC1saW5lIGJ1aWxk4oCZcyBzdGF0aXN0aWNzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIFRvYXN0ZXIgc2VydmVyIGlzIGFscmVhZHkgcnVubmluZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIYXZpbmcgb25lIGluc3RhbmNlIG9mIHRoZSBUb2FzdGVyIHdlYiBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgdHJhY2sgYW5kIGNhcHR1cmUgbXVsdGlwbGUgY29tbWFuZC1saW5lIGJ1aWxkcywKKyAgICAgICAgICAgICAgICAgICAgd2hlcmUgZWFjaCBidWlsZCBpcyBzdGFydGVkIGluIGl0cyBvd24g4oCcbm93ZWLigJ0KKyAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgc2hvdyBob3cgdG8gc3RhcnQgYSBUb2FzdGVyIGVudmlyb25tZW50CisgICAgICAgICAgICB3aXRob3V0IHN0YXJ0aW5nIGl0cyB3ZWIgc2VydmVyLCBwZXJmb3JtIEJpdEJha2Ugb3BlcmF0aW9ucywKKyAgICAgICAgICAgIGFuZCB0aGVuIHNodXQgZG93biB0aGUgVG9hc3RlciBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIE9uY2UgdGhlIGJ1aWxkIGlzIGNvbXBsZXRlLCB5b3UgY2FuIGNsb3NlIHRoZSBUb2FzdGVyIGVudmlyb25tZW50LgorICAgICAgICAgICAgQmVmb3JlIGNsb3NpbmcgdGhlIGVudmlyb25tZW50LCBob3dldmVyLCB5b3Ugc2hvdWxkIGFsbG93IGEgZmV3CisgICAgICAgICAgICBtaW51dGVzIHRvIGVuc3VyZSB0aGUgY29tcGxldGUgdHJhbnNmZXIgb2YgaXRzIEJpdEJha2UgYnVpbGQKKyAgICAgICAgICAgIHN0YXRpc3RpY3MgdG8gdGhlIFRvYXN0ZXIgZGF0YWJhc2UuCisgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhIHNlcGFyYXRlIFRvYXN0ZXIgd2ViIHNlcnZlciBpbnN0YW5jZSBydW5uaW5nLCB5b3UKKyAgICAgICAgICAgIGNhbiB3YXRjaCB0aGlzIGNvbW1hbmQtbGluZSBidWlsZOKAmXMgcHJvZ3Jlc3MgYW5kIGV4YW1pbmUgdGhlCisgICAgICAgICAgICByZXN1bHRzIGFzIHNvb24gYXMgdGhleSBhcmUgcG9zdGVkOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSB0b2FzdGVyIHN0YXJ0IG5vd2ViCisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4KKyAgICAgJCBzb3VyY2UgdG9hc3RlciBzdG9wCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC10b2FzdGVyLXdpdGhvdXQtYS1idWlsZC1zZXJ2ZXInPgorICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCBUb2FzdGVyIFdpdGhvdXQgYSBCdWlsZCBTZXJ2ZXI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBzdGFydCBhIFRvYXN0ZXIgZW52aXJvbm1lbnQgd2l0aCB0aGUKKyAgICAgICAgICAgIOKAnE5ldyBQcm9qZWN0c+KAnSBmZWF0dXJlIGRpc2FibGVkLgorICAgICAgICAgICAgRG9pbmcgc28gaXMgdXNlZnVsIGZvciB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNoYXJpbmcgeW91ciBidWlsZCByZXN1bHRzIG92ZXIgdGhlIHdlYiBzZXJ2ZXIgd2hpbGUKKyAgICAgICAgICAgICAgICAgICAgYmxvY2tpbmcgb3RoZXJzIGZyb20gc3RhcnRpbmcgYnVpbGRzIG9uIHlvdXIgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbGxvd2luZyBvbmx5IGxvY2FsIGNvbW1hbmQtbGluZSBidWlsZHMgdG8gYmUgY2FwdHVyZWQKKyAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgVG9hc3RlciBkYXRhYmFzZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gc2V0IHVwIFRvYXN0ZXIgd2l0aG91dCBhCisgICAgICAgICAgICBidWlsZCBzZXJ2ZXI6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIHRvYXN0ZXIgc3RhcnQgbm9idWlsZCB3ZWJwb3J0PTxyZXBsYWNlYWJsZT5wb3J0PC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKwogICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLXVwLWV4dGVybmFsLWFjY2Vzcyc+CiAgICAgICAgIDx0aXRsZT5TZXR0aW5nIHVwIEV4dGVybmFsIEFjY2VzczwvdGl0bGU+CiAKQEAgLTIyNyw4ICsyOTIsOCBAQAogICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgSGF2ZSBhbGwgdGhlIGJ1aWxkIHJlcXVpcmVtZW50cyBhcyBkZXNjcmliZWQgaW4KLSAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndG9hc3Rlci1zZXR0aW5nLXVwLXRoZS1iYXNpYy1zeXN0ZW0tcmVxdWlyZW1lbnRzJz5TZXR0aW5nIFVwIHRoZSBCYXNpYyBTeXN0ZW0gUmVxdWlyZW1lbnRzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICBIYXZlIGFsbCB0aGUgYnVpbGQgcmVxdWlyZW1lbnRzIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndG9hc3Rlci1tYW51YWwtc3RhcnQnPlByZXBhcmluZyB0byBVc2UgVG9hc3RlcjwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgICAgY2hhcHRlci4KICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTMxMiw3ICszNzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8xLjgvcmVmL3NldHRpbmdzLyNzdGQ6c2V0dGluZy1TRUNSRVRfS0VZJz5EQVRBQkFTRTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS4xMS9yZWYvc2V0dGluZ3MvI2RhdGFiYXNlcyc+REFUQUJBU0VTPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgREFUQUJBU0VTID0gewpAQCAtMzI5LDE0ICszOTQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS44L3JlZi9zZXR0aW5ncy8jc3RkOnNldHRpbmctU0VDUkVUX0tFWSc+U0VDUkVUX0tFWTwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRqYW5nb3Byb2plY3QuY29tL2VuLzEuMTEvcmVmL3NldHRpbmdzLyNzdGQ6c2V0dGluZy1TRUNSRVRfS0VZJz5TRUNSRVRfS0VZPC91bGluaz46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICBTRUNSRVRfS0VZID0gJzxyZXBsYWNlYWJsZT55b3VyX3NlY3JldF9rZXk8L3JlcGxhY2VhYmxlPicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS44L3JlZi9zZXR0aW5ncy8jc3RkOnNldHRpbmctU0VDUkVUX0tFWSc+U1RBVElDX1JPT1Q8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8xLjExL3JlZi9zZXR0aW5ncy8jc3RkOnNldHRpbmctU1RBVElDX1JPT1QnPlNUQVRJQ19ST09UPC91bGluaz46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICBTVEFUSUNfUk9PVCA9ICcvdmFyL3d3dy90b2FzdGVyL3N0YXRpY19maWxlcy8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0zNjAsNTggKzQyNSw2OCBAQAogICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICQgY2QgIC92YXIvd3d3L3RvYXN0ZXIvcG9reS8KICAgICQgLi9iaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBtaWdyYXRlCi0gICAkIFRPQVNURVJfRElSPWBwd2RgIFRPQVNURVJfQ09ORj0uL21ldGEtcG9reS9jb25mL3RvYXN0ZXJjb25mLmpzb24gXAorICAgJCBUT0FTVEVSX0RJUj1gcHdkYCBURU1QTEFURUNPTkY9J3Bva3knIFwKICAgICAgLi9iaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBjaGVja3NldHRpbmdzCiAgICAkIC4vYml0YmFrZS9saWIvdG9hc3Rlci9tYW5hZ2UucHkgY29sbGVjdHN0YXRpYwogICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIGZyb20gdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIHRoZSA8ZmlsZW5hbWU+bWlncmF0ZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICBlbnN1cmVzIHRoZSBkYXRhYmFzZSBzY2hlbWEgY2hhbmdlcyBoYXZlIHByb3BhZ2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0bHkgKGkuZS4gbWlncmF0aW9ucykuCisgICAgICAgICAgICAgICAgICAgICAgVGhlIG5leHQgbGluZSBzZXRzIHRoZSBUb2FzdGVyIHJvb3QgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRPQVNURVJfRElSPC9maWxlbmFtZT4gYW5kIHRoZSBsb2NhdGlvbgorICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBUb2FzdGVyIGNvbmZpZ3VyYXRpb24gZmlsZQorICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UT0FTVEVSX0NPTkY8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgcmVsYXRpdmUgdG8KKyAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE9BU1RFUl9ESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHZhbHVlIHJlZmxlY3RzIHRoZQorICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIG9mIDxmaWxlbmFtZT5wb2t5Ly50ZW1wbGF0ZWNvbmY8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdCwgc2hvdWxkIGluY2x1ZGUgdGhlIHN0cmluZyAicG9reSIuCisgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFRvYXN0ZXIgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgIGZpbGUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY29uZmlndXJpbmctdG9hc3Rlcic+Q29uZmlndXJpbmcgVG9hc3RlcjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi48L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBhYm92ZSBzZXQgb2YgY29tbWFuZHMsIGFmdGVyIG1vdmluZyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWlncmF0ZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgZW5zdXJlcyB0aGUgZGF0YWJhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hIGhhcyBoYWQgY2hhbmdlcyBwcm9wYWdhdGVkIGNvcnJlY3RseSAoaS5lLgotICAgICAgICAgICAgICAgICAgICAgICAgICBtaWdyYXRpb25zKS4KLSAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5leHQgbGluZSBzZXRzIHRoZSBUb2FzdGVyIHJvb3QgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UT0FTVEVSX0RJUjwvZmlsZW5hbWU+IGFuZCB0aGUgbG9jYXRpb24gb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFRvYXN0ZXIgY29uZmlndXJhdGlvbiBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UT0FTVEVSX0NPTkY8L2ZpbGVuYW1lPiwgd2hpY2ggaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFRvYXN0ZXIgcm9vdCBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRPQVNURVJfRElSPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBUb2FzdGVyIGNvbmZpZ3VyYXRpb24gZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjb25maWd1cmluZy10b2FzdGVyJz5Db25maWd1cmluZyBUb2FzdGVyPC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFwdGVyLgotICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxpbmUgYWxzbyBydW5zIHRoZSA8ZmlsZW5hbWU+Y2hlY2tzZXR0aW5nczwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsIHdoaWNoIGNvbmZpZ3VyZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBUb2FzdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgZGlyZWN0b3J5PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBUb2FzdGVyIHJvb3QgZGlyZWN0b3J5IDxmaWxlbmFtZT5UT0FTVEVSX0RJUjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGRldGVybWluZXMgd2hlcmUgdGhlIFRvYXN0ZXIgYnVpbGQgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGNyZWF0ZWQgb24gdGhlIGZpbGUgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgZXhhbXBsZSBhYm92ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRPQVNURVJfRElSPC9maWxlbmFtZT4gaXMgc2V0IGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KKyAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIGxpbmUgYWxzbyBydW5zIHRoZSA8ZmlsZW5hbWU+Y2hlY2tzZXR0aW5nczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgd2hpY2ggY29uZmlndXJlcyB0aGUgbG9jYXRpb24gb2YgdGhlIFRvYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgIFRoZSBUb2FzdGVyIHJvb3QgZGlyZWN0b3J5IDxmaWxlbmFtZT5UT0FTVEVSX0RJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lcyB3aGVyZSB0aGUgVG9hc3RlciBidWlsZCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICBpcyBjcmVhdGVkIG9uIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgZXhhbXBsZSBhYm92ZSwKKyAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE9BU1RFUl9ESVI8L2ZpbGVuYW1lPiBpcyBzZXQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CiAgICAvdmFyL3d3dy90b2FzdGVyL3Bva3kKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNldHRpbmcgY2F1c2VzIHRoZSBUb2FzdGVyIGJ1aWxkIGRpcmVjdG9yeSB0byBiZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9Im1vbm9zcGFjZWQiPgorICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNldHRpbmcgY2F1c2VzIHRoZSBUb2FzdGVyIGJ1aWxkIGRpcmVjdG9yeSB0byBiZToKKyAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CiAgICAvdmFyL3d3dy90b2FzdGVyL3Bva3kvYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEZpbmFsbHksIHRoZSA8ZmlsZW5hbWU+Y29sbGVjdHN0YXRpYzwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYSBEamFuZ28gZnJhbWV3b3JrIGNvbW1hbmQgdGhhdCBjb2xsZWN0cyBhbGwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY2FsbHkgc2VydmVkIGZpbGVzIGludG8gYSBkZXNpZ25hdGVkIGRpcmVjdG9yeSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBzZXJ2ZWQgdXAgYnkgdGhlIEFwYWNoZSB3ZWIgc2VydmVyIGFzIGRlZmluZWQgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQVRJQ19ST09UPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+RmluYWxseSwgdGhlIDxmaWxlbmFtZT5jb2xsZWN0c3RhdGljPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgIGlzIGEgRGphbmdvIGZyYW1ld29yayBjb21tYW5kIHRoYXQgY29sbGVjdHMgYWxsIHRoZQorICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY2FsbHkgc2VydmVkIGZpbGVzIGludG8gYSBkZXNpZ25hdGVkIGRpcmVjdG9yeSB0bworICAgICAgICAgICAgICAgICAgICAgIGJlIHNlcnZlZCB1cCBieSB0aGUgQXBhY2hlIHdlYiBzZXJ2ZXIgYXMgZGVmaW5lZCBieQorICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFUSUNfUk9PVDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIFRlc3QgYW5kL29yIHVzZSB0aGUgTXlzcWwgaW50ZWdyYXRpb24gd2l0aCBUb2FzdGVy4oCZcworICAgICAgICAgICAgICAgICAgICAgIERqYW5nbyB3ZWIgc2VydmVyLgorICAgICAgICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHlvdSBjYW4gc3RhcnQgdXAgdGhlIG5vcm1hbCBUb2FzdGVyCisgICAgICAgICAgICAgICAgICAgICAgRGphbmdvIHdlYiBzZXJ2ZXIgd2l0aCB0aGUgVG9hc3RlciBkYXRhYmFzZSBpbiBNeXNxbC4KKyAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGlzIHdlYiBzZXJ2ZXIgdG8gY29uZmlybSB0aGF0IHRoZSBkYXRhYmFzZQorICAgICAgICAgICAgICAgICAgICAgIG1pZ3JhdGlvbiBhbmQgZGF0YSBwb3B1bGF0aW9uIGZyb20gdGhlIExheWVyIEluZGV4IGlzCisgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VG8gc3RhcnQgdGhlIGRlZmF1bHQgVG9hc3RlciBEamFuZ28gd2ViIHNlcnZlciB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgdGhlIFRvYXN0ZXIgZGF0YWJhc2Ugbm93IGluIE15c3FsLCB1c2UgdGhlIHN0YW5kYXJkCisgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgY29tbWFuZHM6CisgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYKKyAgICQgc291cmNlIHRvYXN0ZXIgc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBpZiBEamFuZ28gaXMgc3VmZmljaWVudCBmb3IgeW91ciByZXF1aXJlbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgaXQgZm9yIHlvdXIgcmVsZWFzZSBzeXN0ZW0gYW5kIG1pZ3JhdGUgbGF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICB0byBBcGFjaGUgYXMgeW91ciByZXF1aXJlbWVudHMgY2hhbmdlLgogICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgIEFkZCBhbiBBcGFjaGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBUb2FzdGVyIHRvIHlvdXIgQXBhY2hlIHdlYgpAQCAtNTM1LDcgKzYxMCw3IEBACiAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgQnJvd3NlIHB1Ymxpc2hlZCBsYXllcnMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcnPk9wZW5FbWJlZGRlZCBNZXRhZGF0YSBJbmRleDwvdWxpbms+CisgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcnPk9wZW5FbWJlZGRlZCBMYXllciBJbmRleDwvdWxpbms+CiAgICAgICAgICAgICAgICAgICB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHlvdXIgc2VsZWN0ZWQgdmVyc2lvbiBvZiB0aGUgYnVpbGQKICAgICAgICAgICAgICAgICAgIHN5c3RlbS4KICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc3RhcnQueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc3RhcnQueG1sCmluZGV4IDY1ZTA1N2EuLjQ1ZjYwNDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0YXJ0LnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zdGFydC54bWwKQEAgLTE4LDEwICsxOCw5IEBACiAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiB1c2UgVG9hc3RlciwgeW91IG5lZWQgdG8gZmlyc3Qgc2V0IHVwIHlvdXIKICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSB0byBydW4gdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICBUbyBkbyB0aGlzLCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpbiB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3BhY2thZ2VzJz5UaGUgQnVpbGQgSG9zdCBQYWNrYWdlczwvdWxpbms+IgotICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyNyZWxlYXNlcyc+WW9jdG8gUHJvamVjdCBSZWxlYXNlPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9ucyBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydC4KKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICBNYW51YWwuCiAgCSAgICBGb3IgVWJ1bnR1L0RlYmlhbiwgeW91IG1pZ2h0IGFsc28gbmVlZCB0byBkbyBhbiBhZGRpdGlvbmFsIGluc3RhbGwKICAgICAgICAgICAgIG9mIHBpcDMuCiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sCmluZGV4IDVhMWI2MGUuLjE4ODg3NDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC54bWwKQEAgLTYyLDE0ICs2Miw5IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgPC9yZXZoaXN0b3J5PgogCkBAIC05MSwyNCArODYsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCi0gICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCisgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGxvY2F0ZWQgdGhpcyBtYW51YWwgdGhyb3VnaCBhIHdlYiBzZWFyY2gsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgbWlnaHQgbm90IGJlIHRoZSBvbmUgeW91IHdhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gdGhlIHNlYXJjaCBtaWdodCBoYXZlIHJldHVybmVkIGEgbWFudWFsIG11Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgb2xkZXIgdGhhbiB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIHdpdGggd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgICAgIGFyZSB3b3JraW5nKS4KKyAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIFlvY3RvIFByb2plY3QgbWFqb3IgcmVsZWFzZXMgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b29scy9lY2xpcHNlLWhlbHAuc2VkIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvZWNsaXBzZS1oZWxwLnNlZAppbmRleCAzODY5MGJjLi5hYjVjOWFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b29scy9lY2xpcHNlLWhlbHAuc2VkCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL2VjbGlwc2UtaGVscC5zZWQKQEAgLTEsMTggKzEsMTggQEAKLSMgUHJvY2Vzc2VzIHBva3ktcmVmLW1hbnVhbCBhbmQgeW9jdG8tcHJvamVjdC1xcyBtYW51YWwgKDx3b3JkPi08d29yZD4tPHdvcmQ+IHN0eWxlKQorIyBQcm9jZXNzIHBva3ktcmVmLW1hbnVhbCBhbmQgeW9jdG8tcHJvamVjdC1xcyBtYW51YWwgKDx3b3JkPi08d29yZD4tPHdvcmQ+IHN0eWxlKQogIyBGb3IgZXhhbXBsZToKICMgICAidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzEuMy9wb2t5LXJlZi1tYW51YWwvcG9reS1yZWYtbWFudWFsLmh0bWwjZmFxIgogIyAgIC0+ICJsaW5rIiBocmVmPSIuLi9wb2t5LXJlZi1tYW51YWwvZmFxLmh0bWwiCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcL1teXC9dKlwvXChbYS16XSotW2Etel0qLVthLXpdKlwpXC9bYS16XSotW2Etel0qLVthLXpdKi5odG1sI1woW15cIl0qXClcIi9cImxpbmtcIiBocmVmPVwiXC5cLlwvXDFcL1wyLmh0bWxcIi9nCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvW14vXSovKFthLXpdKi1bYS16XSotW2Etel0qKS9bYS16XSotW2Etel0qLVthLXpdKi5odG1sIyhbXiJdKikiL0AibGluayIgaHJlZj0iLi4vMS8yLmh0bWwiQGcKIAogIyBQcm9jZXNzZXMgYWxsIG90aGVyIG1hbnVhbHMgKDx3b3JkPi08d29yZD4gc3R5bGUpCiAjIEZvciBleGFtcGxlOgogIyAgICJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMS4zL2tlcm5lbC1tYW51YWwva2VybmVsLW1hbnVhbC5odG1sI2ZhcSIKICMgICAtPiAibGluayIgaHJlZj0iLi4va2VybmVsLW1hbnVhbC9mYXEuaHRtbCIKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvW15cL10qXC9cKFthLXpdKi1bYS16XSpcKVwvW2Etel0qLVthLXpdKi5odG1sI1woW15cIl0qXClcIi9cImxpbmtcIiBocmVmPVwiXC5cLlwvXDFcL1wyLmh0bWxcIi9nCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvW14vXSovKFthLXpdKi1bYS16XSopL1thLXpdKi1bYS16XSouaHRtbCMoW14iXSopIkAibGluayIgaHJlZj0iLi4vMS8yLmh0bWwiQGcKIAogIyBQcm9jZXNzIGNhc2VzIHdoZXJlIGp1c3QgYW4gZXh0ZXJuYWwgbWFudWFsIGlzIHJlZmVyZW5jZWQgd2l0aG91dCBhbiBpZCBhbmNob3IKICMgRm9yIGV4YW1wbGU6CiAjICAgInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8xLjMva2VybmVsLW1hbnVhbC9rZXJuZWwtbWFudWFsLmh0bWwKICMgICAtPiAibGluayIgaHJlZj0iLi4va2VybmVsLW1hbnVhbC9pbmRleC5odG1sIgotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC9bXlwvXSpcL1woW2Etel0qLVthLXpdKi1bYS16XSpcKVwvW2Etel0qLVthLXpdKi1bYS16XSouaHRtbFwiL1wibGlua1wiIGhyZWY9XCJcLlwuXC9cMVwvaW5kZXguaHRtbFwiL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvW15cL10qXC9cKFthLXpdKi1bYS16XSpcKVwvW2Etel0qLVthLXpdKi5odG1sXCIvXCJsaW5rXCIgaHJlZj1cIlwuXC5cL1wxXC9pbmRleC5odG1sXCIvZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzL1teL10qLyhbYS16XSotW2Etel0qLVthLXpdKikvW2Etel0qLVthLXpdKi1bYS16XSouaHRtbCJAImxpbmsiIGhyZWY9Ii4uLzEvaW5kZXguaHRtbCJAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzL1teL10qLyhbYS16XSotW2Etel0qKS9bYS16XSotW2Etel0qLmh0bWwiQCJsaW5rIiBocmVmPSIuLi8xL2luZGV4Lmh0bWwiQGcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZAppbmRleCBhZTI4MDBjLi42NGZhNGQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b29scy9tZWdhLW1hbnVhbC5zZWQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkCkBAIC0yLDMyICsyLDM5IEBACiAjIFRoaXMgc3R5bGUgaXMgZm9yIG1hbnVhbCBmb2xkZXJzIGxpa2UgInlvY3RvLXByb2plY3QtcXMiIGFuZCAicG9reS1yZWYtbWFudWFsIi4KICMgVGhpcyBpcyB0aGUgb2xkIHdheSB0aGF0IGRpZCBpdC4gIENhbid0IGRvIHRoYXQgbm93IHRoYXQgd2UgaGF2ZSAiYml0YmFrZS11c2VyLW1hbnVhbCIgc3RyaW5ncwogIyBpbiB0aGUgbWVnYS1tYW51YWwuCi0jIHMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL1thLXpdKi1bYS16XSotW2Etel0qXC9bYS16XSotW2Etel0qLVthLXpdKi5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC95b2N0by1wcm9qZWN0LXFzXC95b2N0by1wcm9qZWN0LXFzLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3Bva3ktcmVmLW1hbnVhbFwvcG9reS1yZWYtbWFudWFsLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKKyMgc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS9bYS16XSotW2Etel0qLVthLXpdKi9bYS16XSotW2Etel0qLVthLXpdKi5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L3Bva3ktcmVmLW1hbnVhbC9wb2t5LXJlZi1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwogCiAjIFByb2Nlc3NlcyBhbGwgb3RoZXIgbWFudWFscyAoPHdvcmQ+LTx3b3JkPiBzdHlsZSkgZXhjZXB0IGZvciB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbCBiZWNhdXNlCiAjIGl0IGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgbWVnYS1tYW51YWwuCiAjIFRoaXMgc3R5bGUgaXMgZm9yIG1hbnVhbCBmb2xkZXJzIHRoYXQgdXNlIHR3byB3b3JkLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgbm93IChlLmcuICJyZWYtbWFudWFsIikuCiAjIFRoaXMgd2FzIHRoZSBvbmUtbGluZXIgdGhhdCB3b3JrZWQgYmVmb3JlIHdlIGludHJvZHVjZWQgdGhlIEJpdEJha2UgVXNlciBNYW51YWwsIHdoaWNoIGlzCiAjIG5vdCBpbiB0aGUgbWVnYS1tYW51YWwuCi0jIHMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL1thLXpdKi1bYS16XSpcL1thLXpdKi1bYS16XSouaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZworIyBzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L1thLXpdKi1bYS16XSovW2Etel0qLVthLXpdKi5odG1sI0AibGluayIgaHJlZj0iI0BnCiAKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3Nkay1tYW51YWxcL3Nkay1tYW51YWwuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZwotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvYnNwLWd1aWRlXC9ic3AtZ3VpZGUuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZwotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvZGV2LW1hbnVhbFwvZGV2LW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9rZXJuZWwtZGV2XC9rZXJuZWwtZGV2Lmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3Byb2ZpbGUtbWFudWFsXC9wcm9maWxlLW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9yZWYtbWFudWFsXC9yZWYtbWFudWFsLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3RvYXN0ZXItbWFudWFsXC90b2FzdGVyLW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC95b2N0by1wcm9qZWN0LXFzXC95b2N0by1wcm9qZWN0LXFzLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUvc2RrLW1hbnVhbC9zZGstbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L2Rldi1tYW51YWwvZGV2LW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L2tlcm5lbC1kZXYva2VybmVsLWRldi5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUvcmVmLW1hbnVhbC9yZWYtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwogCiAjIFByb2Nlc3MgY2FzZXMgd2hlcmUganVzdCBhbiBleHRlcm5hbCBtYW51YWwgaXMgcmVmZXJlbmNlZCB3aXRob3V0IGFuIGlkIGFuY2hvcgotcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwveW9jdG8tcHJvamVjdC1xc1wveW9jdG8tcHJvamVjdC1xcy5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQ8XC9hPi9Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0L2cKLXMvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL2Rldi1tYW51YWxcL2Rldi1tYW51YWwuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDxcL2E+L1lvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsL2cKLXMvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3Nkay1tYW51YWxcL3Nkay1tYW51YWwuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPFwvYT4vWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKS9nCi1zLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9ic3AtZ3VpZGVcL2JzcC1ndWlkZS5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPFwvYT4vWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGUvZwotcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvcHJvZmlsZS1tYW51YWxcL3Byb2ZpbGUtbWFudWFsLmh0bWxcIiB0YXJnZXQ9XCJfdG9wXCI+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPFwvYT4vWW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsL2cKLXMvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL2tlcm5lbC1kZXZcL2tlcm5lbC1kZXYuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8XC9hPi9Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwvZwotcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvcmVmLW1hbnVhbFwvcmVmLW1hbnVhbC5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDxcL2E+L1lvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC9nCi1zLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC90b2FzdGVyLW1hbnVhbFwvdG9hc3Rlci1tYW51YWwuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Ub2FzdGVyIFVzZXIgTWFudWFsPFwvYT4vVG9hc3RlciBVc2VyIE1hbnVhbC9nCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvYT5AWW9jdG8gUHJvamVjdCBRdWljayBCdWlsZEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQ8L2E+QFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnRAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsPC9hPkBZb2N0byBwcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS9zZGstbWFudWFsL3Nkay1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC9hPkBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC9hPkBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZUBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS9rZXJuZWwtZGV2L2tlcm5lbC1kZXYuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Ub2FzdGVyIFVzZXIgTWFudWFsPC9hPkBUb2FzdGVyIFVzZXIgTWFudWFsQGcKKworIyBQcm9jZXNzIGEgc2luZ2xlLCByb3VnZSBvY2N1cnJlbmNlIG9mIGEgbGlua2VkIHJlZmVyZW5jZSB0byB0aGUgTWVnYS1NYW51YWwuCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbEBnCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMvcXMtc3R5bGUuY3NzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy9xcy1zdHlsZS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0OGYxYmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy9xcy1zdHlsZS5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw5ODggKzAsMCBAQAotLyoKLSAgIEdlbmVyaWMgWEhUTUwgLyBEb2NCb29rIFhIVE1MIENTUyBTdHlsZXNoZWV0LgotCi0gICBCcm93c2VyIHdyYW5nbGluZyBhbmQgdHlwb2dyYXBoaWMgZGVzaWduIGJ5Ci0gICAgICBPeXZpbmQgS29sYXMgLyBwaXBwaW5AZ2ltcC5vcmcKLQotICAgQ3VzdG9taXNlZCBmb3IgUG9reSBieQotICAgICAgTWF0dGhldyBBbGx1bSAvIG1hbGx1bUBvLWhhbmQuY29tCi0KLSAgIFRoYW5rcyB0bzoKLSAgICAgTGlhbSBSLiBFLiBRdWluCi0gICAgIFdpbGxpYW0gU2thZ2dzCi0gICAgIEpha3ViIFN0ZWluZXIKLQotICAgU3RydWN0dXJlCi0gICAtLS0tLS0tLS0KLQotICAgVGhlIHN0eWxlc2hlZXQgaXMgZGl2aWRlZCBpbnRvIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6Ci0KLSAgICAgICBQb3NpdGlvbmluZwotICAgICAgICAgIE1hcmdpbnMsIHBhZGRpbmdzLCB3aWR0aCwgZm9udC1zaXplLCBjbGVhcmluZy4KLSAgICAgICBEZWNvcmF0aW9ucwotICAgICAgICAgIEJvcmRlcnMsIHN0eWxlCi0gICAgICAgQ29sb3JzCi0gICAgICAgICAgQ29sb3JzCi0gICAgICAgR3JhcGhpY3MKLSAgICAgICAgICBHcmFwaGljYWwgYmFja2dyb3VuZHMKLSAgICAgICBOYXN0eSBJRSB0d2Vha3MKLSAgICAgICAgICBXb3JrYXJvdW5kcyBuZWVkZWQgdG8gbWFrZSBpdCB3b3JrIGluIGludGVybmV0IGV4cGxvcmVyLAotICAgICAgICAgIGN1cnJlbnRseSBtYWtlcyB0aGUgc3R5bGVzaGVldCBub24gdmFsaWRhdGluZywgYnV0IHVwIHVudGlsCi0gICAgICAgICAgdGhpcyBwb2ludCBpdCBpcyB2YWxpZGF0aW5nLgotICAgICAgIE1vemlsbGEgZXh0ZW5zaW9ucwotICAgICAgICAgIFRyYW5zcGFyZW5jeSBmb3IgZm9vdGVyCi0JICBSb3VuZGVkIGNvcm5lcnMgb24gYm94ZXMKLQotKi8KLQotCi0gIC8qKioqKioqKioqKioqKiogLwotIC8gIFBvc2l0aW9uaW5nICAgLwotLyAqKioqKioqKioqKioqKiovCi0KLWJvZHkgewotICBmb250LWZhbWlseTogVmVyZGFuYSwgU2Fucywgc2Fucy1zZXJpZjsKLQotICBtaW4td2lkdGg6IDY0MHB4OwotICB3aWR0aDogODAlOwotICBtYXJnaW46ICAwZW0gYXV0bzsKLSAgcGFkZGluZzogMmVtIDVlbSA1ZW0gNWVtOwotICBjb2xvcjogIzMzMzsKLX0KLQotaDEsaDIsaDMsaDQsaDUsaDYsaDcgewotICBmb250LWZhbWlseTogQXJpYWwsIFNhbnM7Ci0gIGNvbG9yOiAjMDA1NTdEOwotICBjbGVhcjogYm90aDsKLX0KLQotaDEgewotICBmb250LXNpemU6IDJlbTsKLSAgdGV4dC1hbGlnbjogbGVmdDsKLSAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOwotICBtYXJnaW46IDJlbSAwZW0gMGVtIDBlbTsKLX0KLQotaDIuc3VidGl0bGUgewotICBtYXJnaW46IDAuMTBlbSAwZW0gMy4wZW0gMGVtOwotICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Ci0gIGZvbnQtc2l6ZTogMS44ZW07Ci0gIHBhZGRpbmctbGVmdDogMjAlOwotICBmb250LXdlaWdodDogbm9ybWFsOwotICBmb250LXN0eWxlOiBpdGFsaWM7Ci19Ci0KLWgyIHsKLSAgbWFyZ2luOiAyZW0gMGVtIDAuNjZlbSAwZW07Ci0gIHBhZGRpbmc6IDAuNWVtIDBlbSAwZW0gMGVtOwotICBmb250LXNpemU6IDEuNWVtOwotICBmb250LXdlaWdodDogYm9sZDsKLX0KLQotaDMuc3VidGl0bGUgewotICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKLSAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOwotICBmb250LXNpemU6IDE0Mi4xNCU7Ci0gIHRleHQtYWxpZ246IHJpZ2h0OwotfQotCi1oMyB7Ci0gIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07Ci0gIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKLSAgZm9udC1zaXplOiAxNDAlOwotICBmb250LXdlaWdodDogYm9sZDsKLX0KLQotaDQgewotICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOwotICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07Ci0gIGZvbnQtc2l6ZTogMTIwJTsKLSAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci19Ci0KLWg1IHsKLSAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKLSAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOwotICBmb250LXNpemU6IDExMCU7Ci0gIGZvbnQtd2VpZ2h0OiBib2xkOwotfQotCi1oNiB7Ci0gIG1hcmdpbjogMWVtIDBlbSAwZW0gMGVtOwotICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07Ci0gIGZvbnQtc2l6ZTogMTEwJTsKLSAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci19Ci0KLS5hdXRob3Jncm91cCB7Ci0gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwotICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwotICBwYWRkaW5nLXRvcDogMjU2cHg7Ci0gIGJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKLSAgbWFyZ2luLXRvcDogLTI1NnB4OwotICBwYWRkaW5nLXJpZ2h0OiA1MHB4OwotICBtYXJnaW4tbGVmdDogNTBweDsKLSAgdGV4dC1hbGlnbjogY2VudGVyOwotICB3aWR0aDogNjAwcHg7Ci19Ci0KLWgzLmF1dGhvciB7Ci0gIG1hcmdpbjogMGVtIDBtZSAwZW0gMGVtOwotICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Ci0gIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gIGZvbnQtc2l6ZTogMTAwJTsKLSAgY29sb3I6ICMzMzM7Ci0gIGNsZWFyOiBib3RoOwotfQotCi0uYXV0aG9yIHR0LmVtYWlsIHsKLSAgZm9udC1zaXplOiA2NiU7Ci19Ci0KLS50aXRsZXBhZ2UgaHIgewotICB3aWR0aDogMGVtOwotICBjbGVhcjogYm90aDsKLX0KLQotLnJldmhpc3RvcnkgewotICBwYWRkaW5nLXRvcDogMmVtOwotICBjbGVhcjogYm90aDsKLX0KLQotLnRvYywKLS5saXN0LW9mLXRhYmxlcywKLS5saXN0LW9mLWV4YW1wbGVzLAotLmxpc3Qtb2YtZmlndXJlcyB7Ci0gIHBhZGRpbmc6IDEuMzNlbSAwZW0gMi41ZW0gMGVtOwotICBjb2xvcjogIzAwNTU3RDsKLX0KLQotLnRvYyBwLAotLmxpc3Qtb2YtdGFibGVzIHAsCi0ubGlzdC1vZi1maWd1cmVzIHAsCi0ubGlzdC1vZi1leGFtcGxlcyBwIHsKLSAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOwotICBwYWRkaW5nOiAwZW0gMGVtIDAuM2VtOwotICBtYXJnaW46IDEuNWVtIDBlbSAwZW0gMGVtOwotfQotCi0udG9jIHAgYiwKLS5saXN0LW9mLXRhYmxlcyBwIGIsCi0ubGlzdC1vZi1maWd1cmVzIHAgYiwKLS5saXN0LW9mLWV4YW1wbGVzIHAgYnsKLSAgZm9udC1zaXplOiAxMDAuMCU7Ci0gIGZvbnQtd2VpZ2h0OiBib2xkOwotfQotCi0udG9jIGRsLAotLmxpc3Qtb2YtdGFibGVzIGRsLAotLmxpc3Qtb2YtZmlndXJlcyBkbCwKLS5saXN0LW9mLWV4YW1wbGVzIGRsIHsKLSAgbWFyZ2luOiAwZW0gMGVtIDAuNWVtIDBlbTsKLSAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOwotfQotCi0udG9jIGR0IHsKLSAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07Ci0gIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKLX0KLQotLnRvYyBkZCB7Ci0gIG1hcmdpbjogMGVtIDBlbSAwZW0gMi42ZW07Ci0gIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKLX0KLQotZGl2Lmdsb3NzYXJ5IGRsLAotZGl2LnZhcmlhYmxlbGlzdCBkbCB7Ci19Ci0KLS5nbG9zc2FyeSBkbCBkdCwKLS52YXJpYWJsZWxpc3QgZGwgZHQsCi0udmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7Ci0gIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gIHdpZHRoOiAyMGVtOwotICB0ZXh0LWFsaWduOiByaWdodDsKLX0KLQotLnZhcmlhYmxlbGlzdCBkbCBkdCB7Ci0gIG1hcmdpbi10b3A6IDAuNWVtOwotfQotCi0uZ2xvc3NhcnkgZGwgZGQsCi0udmFyaWFibGVsaXN0IGRsIGRkIHsKLSAgbWFyZ2luLXRvcDogLTFlbTsKLSAgbWFyZ2luLWxlZnQ6IDI1LjVlbTsKLX0KLQotLmdsb3NzYXJ5IGRkIHAsCi0udmFyaWFibGVsaXN0IGRkIHAgewotICBtYXJnaW4tdG9wOiAwZW07Ci0gIG1hcmdpbi1ib3R0b206IDFlbTsKLX0KLQotCi1kaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgewotICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Ci0gIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOwotfQotCi1kaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgcCB7Ci0gIG1hcmdpbi10b3A6IDBlbTsKLSAgbWFyZ2luLWJvdHRvbTogMWVtOwotfQotCi1kaXYgcC5jb3B5cmlnaHQgewotICB0ZXh0LWFsaWduOiBsZWZ0OwotfQotCi1kaXYubGVnYWxub3RpY2UgcC5sZWdhbG5vdGljZS10aXRsZSB7Ci0gIG1hcmdpbi1ib3R0b206IDBlbTsKLX0KLQotcCB7Ci0gIGxpbmUtaGVpZ2h0OiAxLjVlbTsKLSAgbWFyZ2luLXRvcDogMGVtOwotCi19Ci0KLWRsIHsKLSAgcGFkZGluZy10b3A6IDBlbTsKLX0KLQotaHIgewotICBib3JkZXI6IHNvbGlkIDFweDsKLX0KLQotCi0ubWVkaWFvYmplY3QsCi0ubWVkaWFvYmplY3RjbyB7Ci0gIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotaW1nIHsKLSAgYm9yZGVyOiBub25lOwotfQotCi11bCB7Ci0gIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDEuNWVtOwotfQotCi11bCBsaSB7Ci0gIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKLX0KLQotdWwgbGkgcCB7Ci0gIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLXRhYmxlIHsKLSAgd2lkdGggOjEwMCU7Ci19Ci0KLXRoIHsKLSAgcGFkZGluZzogMC4yNWVtOwotICB0ZXh0LWFsaWduOiBsZWZ0OwotICBmb250LXdlaWdodDogbm9ybWFsOwotICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwotfQotCi10ZCB7Ci0gIHBhZGRpbmc6IDAuMjVlbTsKLSAgdmVydGljYWwtYWxpZ246IHRvcDsKLX0KLQotcCBhW2lkXSB7Ci0gIG1hcmdpbjogMHB4OwotICBwYWRkaW5nOiAwcHg7Ci0gIGRpc3BsYXk6IGlubGluZTsKLSAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKLX0KLQotYSB7Ci0gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwotICBjb2xvcjogIzQ0NDsKLX0KLQotcHJlIHsKLSAgICBvdmVyZmxvdzogYXV0bzsKLX0KLQotYTpob3ZlciB7Ci0gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwotICAvKmZvbnQtd2VpZ2h0OiBib2xkOyovCi19Ci0KLS8qIFRoaXMgc3R5bGUgZGVmaW5lcyBob3cgdGhlIHBlcm1hbGluayBjaGFyYWN0ZXIKLSAgIGFwcGVhcnMgYnkgaXRzZWxmIGFuZCB3aGVuIGhvdmVyZWQgb3ZlciB3aXRoCi0gICB0aGUgbW91c2UuICovCi0KLVthbHQ9J1Blcm1hbGluayddIHsgY29sb3I6ICNlZWU7IH0KLVthbHQ9J1Blcm1hbGluayddOmhvdmVyIHsgY29sb3I6IGJsYWNrOyB9Ci0KLQotZGl2LmluZm9ybWFsZmlndXJlLAotZGl2LmluZm9ybWFsZXhhbXBsZSwKLWRpdi5pbmZvcm1hbHRhYmxlLAotZGl2LmZpZ3VyZSwKLWRpdi50YWJsZSwKLWRpdi5leGFtcGxlIHsKLSAgbWFyZ2luOiAxZW0gMGVtOwotICBwYWRkaW5nOiAxZW07Ci0gIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKLX0KLQotCi1kaXYuaW5mb3JtYWxmaWd1cmUgcC50aXRsZSBiLAotZGl2LmluZm9ybWFsZXhhbXBsZSBwLnRpdGxlIGIsCi1kaXYuaW5mb3JtYWx0YWJsZSBwLnRpdGxlIGIsCi1kaXYuZmlndXJlIHAudGl0bGUgYiwKLWRpdi5leGFtcGxlIHAudGl0bGUgYiwKLWRpdi50YWJsZSBwLnRpdGxlIGJ7Ci0gICAgcGFkZGluZy10b3A6IDBlbTsKLSAgICBtYXJnaW4tdG9wOiAwZW07Ci0gICAgZm9udC1zaXplOiAxMDAlOwotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci19Ci0KLS5tZWRpYW9iamVjdCAuY2FwdGlvbiwKLS5tZWRpYW9iamVjdCAuY2FwdGlvbiBwICB7Ci0gIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgZm9udC1zaXplOiA4MCU7Ci0gIHBhZGRpbmctdG9wOiAwLjVlbTsKLSAgcGFkZGluZy1ib3R0b206IDAuNWVtOwotfQotCi0uZXBpZ3JhcGggewotICBwYWRkaW5nLWxlZnQ6IDU1JTsKLSAgbWFyZ2luLWJvdHRvbTogMWVtOwotfQotCi0uZXBpZ3JhcGggcCB7Ci0gIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLS5lcGlncmFwaCAucXVvdGUgewotICBmb250LXN0eWxlOiBpdGFsaWM7Ci19Ci0uZXBpZ3JhcGggLmF0dHJpYnV0aW9uIHsKLSAgZm9udC1zdHlsZTogbm9ybWFsOwotICB0ZXh0LWFsaWduOiByaWdodDsKLX0KLQotc3Bhbi5hcHBsaWNhdGlvbiB7Ci0gIGZvbnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotLnByb2dyYW1saXN0aW5nIHsKLSAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKLSAgZm9udC1zaXplOiA4MCU7Ci0gIHdoaXRlLXNwYWNlOiBwcmU7Ci0gIG1hcmdpbjogMS4zM2VtIDBlbTsKLSAgcGFkZGluZzogMS4zM2VtOwotfQotCi0udGlwLAotLndhcm5pbmcsCi0uY2F1dGlvbiwKLS5ub3RlIHsKLSAgbWFyZ2luLXRvcDogMWVtOwotICBtYXJnaW4tYm90dG9tOiAxZW07Ci0KLX0KLQotLyogZm9yY2UgZnVsbCB3aWR0aCBvZiB0YWJsZSB3aXRoaW4gZGl2ICovCi0udGlwIHRhYmxlLAotLndhcm5pbmcgdGFibGUsCi0uY2F1dGlvbiB0YWJsZSwKLS5ub3RlIHRhYmxlIHsKLSAgYm9yZGVyOiBub25lOwotICB3aWR0aDogMTAwJTsKLX0KLQotCi0udGlwIHRhYmxlIHRoLAotLndhcm5pbmcgdGFibGUgdGgsCi0uY2F1dGlvbiB0YWJsZSB0aCwKLS5ub3RlIHRhYmxlIHRoIHsKLSAgcGFkZGluZzogMC44ZW0gMC4wZW0gMC4wZW0gMC4wZW07Ci0gIG1hcmdpbiA6IDBlbSAwZW0gMGVtIDBlbTsKLX0KLQotLnRpcCBwLAotLndhcm5pbmcgcCwKLS5jYXV0aW9uIHAsCi0ubm90ZSBwIHsKLSAgbWFyZ2luLXRvcDogMC41ZW07Ci0gIG1hcmdpbi1ib3R0b206IDAuNWVtOwotICBwYWRkaW5nLXJpZ2h0OiAxZW07Ci0gIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLS5hY3JvbnltIHsKLSAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKLX0KLQotYi5rZXljYXAsCi0ua2V5Y2FwIHsKLSAgcGFkZGluZzogMC4wOWVtIDAuM2VtOwotICBtYXJnaW46IDBlbTsKLX0KLQotLml0ZW1pemVkbGlzdCBsaSB7Ci0gIGNsZWFyOiBub25lOwotfQotCi0uZmlsZW5hbWUgewotICBmb250LXNpemU6IG1lZGl1bTsKLSAgZm9udC1mYW1pbHk6IENvdXJpZXIsIG1vbm9zcGFjZTsKLX0KLQotCi1kaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKLSAgcG9zaXRpb246IGFic29sdXRlOwotICBsZWZ0OiAwZW07Ci0gIHRvcDogMGVtOwotICB3aWR0aDogMTAwJTsKLSAgYmFja2dyb3VuZC1jb2xvcjogI2NkZjsKLSAgd2lkdGg6IDEwMCU7Ci19Ci0KLWRpdi5uYXZmb290ZXIsIGRpdi5mb290aW5newotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIGxlZnQ6IDBlbTsKLSAgYm90dG9tOiAwZW07Ci0gIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci0gIHdpZHRoOiAxMDAlOwotfQotCi0KLWRpdi5uYXZoZWFkZXIgdGQsCi1kaXYubmF2Zm9vdGVyIHRkIHsKLSAgZm9udC1zaXplOiA2NiU7Ci19Ci0KLWRpdi5uYXZoZWFkZXIgdGFibGUgdGggewotICAvKmZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBUaW1lcywgc2VyaWY7Ki8KLSAgLypmb250LXNpemU6IHgtbGFyZ2U7Ki8KLSAgZm9udC1zaXplOiA4MCU7Ci19Ci0KLWRpdi5uYXZoZWFkZXIgdGFibGUgewotICBib3JkZXItbGVmdDogMGVtOwotICBib3JkZXItcmlnaHQ6IDBlbTsKLSAgYm9yZGVyLXRvcDogMGVtOwotICB3aWR0aDogMTAwJTsKLX0KLQotZGl2Lm5hdmZvb3RlciB0YWJsZSB7Ci0gIGJvcmRlci1sZWZ0OiAwZW07Ci0gIGJvcmRlci1yaWdodDogMGVtOwotICBib3JkZXItYm90dG9tOiAwZW07Ci0gIHdpZHRoOiAxMDAlOwotfQotCi1kaXYubmF2aGVhZGVyIHRhYmxlIHRkIGEsCi1kaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGEgewotICBjb2xvcjogIzc3NzsKLSAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotCi0vKiBub3JtYWwgdGV4dCBpbiB0aGUgZm9vdGVyICovCi1kaXYubmF2Zm9vdGVyIHRhYmxlIHRkIHsKLSAgY29sb3I6IGJsYWNrOwotfQotCi1kaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6dmlzaXRlZCwKLWRpdi5uYXZmb290ZXIgdGFibGUgdGQgYTp2aXNpdGVkIHsKLSAgY29sb3I6ICM0NDQ7Ci19Ci0KLQotLyogbGlua3MgaW4gaGVhZGVyIGFuZCBmb290ZXIgKi8KLWRpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTpob3ZlciwKLWRpdi5uYXZmb290ZXIgdGFibGUgdGQgYTpob3ZlciB7Ci0gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgY29sb3I6ICMzM2E7Ci19Ci0KLWRpdi5uYXZoZWFkZXIgaHIsCi1kaXYubmF2Zm9vdGVyIGhyIHsKLSAgZGlzcGxheTogbm9uZTsKLX0KLQotCi0ucWFuZGFzZXQgdHIucXVlc3Rpb24gdGQgcCB7Ci0gIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOwotICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Ci19Ci0KLS5xYW5kYXNldCB0ci5hbnN3ZXIgdGQgcCB7Ci0gIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOwotICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Ci19Ci0uYW5zd2VyIHRkIHsKLSAgcGFkZGluZy1ib3R0b206IDEuNWVtOwotfQotCi0uZW1waGFzaXMgewotICBmb250LXdlaWdodDogYm9sZDsKLX0KLQotCi0gIC8qKioqKioqKioqKioqIC8KLSAvIGRlY29yYXRpb25zICAvCi0vICoqKioqKioqKioqKiovCi0KLS50aXRsZXBhZ2UgewotfQotCi0ucGFydCAudGl0bGUgewotfQotCi0uc3VidGl0bGUgewotICAgIGJvcmRlcjogbm9uZTsKLX0KLQotLyoKLWgxIHsKLSAgYm9yZGVyOiBub25lOwotfQotCi1oMiB7Ci0gIGJvcmRlci10b3A6IHNvbGlkIDAuMmVtOwotICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Ci19Ci0KLWgzIHsKLSAgYm9yZGVyLXRvcDogMGVtOwotICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Ci19Ci0KLWg0IHsKLSAgYm9yZGVyOiAwZW07Ci0gIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKLX0KLQotaDUgewotICBib3JkZXI6IDBlbTsKLX0KLSovCi0KLS5wcm9ncmFtbGlzdGluZyB7Ci0gIGJvcmRlcjogc29saWQgMXB4OwotfQotCi1kaXYuZmlndXJlLAotZGl2LnRhYmxlLAotZGl2LmluZm9ybWFsZmlndXJlLAotZGl2LmluZm9ybWFsdGFibGUsCi1kaXYuaW5mb3JtYWxleGFtcGxlLAotZGl2LmV4YW1wbGUgewotICBib3JkZXI6IDFweCBzb2xpZDsKLX0KLQotCi0KLS50aXAsCi0ud2FybmluZywKLS5jYXV0aW9uLAotLm5vdGUgewotICBib3JkZXI6IDFweCBzb2xpZDsKLX0KLQotLnRpcCB0YWJsZSB0aCwKLS53YXJuaW5nIHRhYmxlIHRoLAotLmNhdXRpb24gdGFibGUgdGgsCi0ubm90ZSB0YWJsZSB0aCB7Ci0gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKLX0KLQotLnF1ZXN0aW9uIHRkIHsKLSAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOwotfQotCi0uYW5zd2VyIHsKLX0KLQotCi1iLmtleWNhcCwKLS5rZXljYXAgewotICBib3JkZXI6IDFweCBzb2xpZDsKLX0KLQotCi1kaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKLSAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOwotfQotCi0KLWRpdi5uYXZmb290ZXIsIGRpdi5mb290aW5newotICBib3JkZXItdG9wOiAxcHggc29saWQ7Ci19Ci0KLSAgLyoqKioqKioqKiAvCi0gLyAgY29sb3JzICAvCi0vICoqKioqKioqKi8KLQotYm9keSB7Ci0gIGNvbG9yOiAjMzMzOwotICBiYWNrZ3JvdW5kOiB3aGl0ZTsKLX0KLQotYSB7Ci0gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwotfQotCi1hOmhvdmVyIHsKLSAgYmFja2dyb3VuZC1jb2xvcjogI2RlZGVkZTsKLX0KLQotCi1oMSwKLWgyLAotaDMsCi1oNCwKLWg1LAotaDYsCi1oNywKLWg4IHsKLSAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Ci19Ci0KLWhyIHsKLSAgYm9yZGVyLWNvbG9yOiAjYWFhOwotfQotCi0KLS50aXAsIC53YXJuaW5nLCAuY2F1dGlvbiwgLm5vdGUgewotICBib3JkZXItY29sb3I6ICNmZmY7Ci19Ci0KLQotLnRpcCB0YWJsZSB0aCwKLS53YXJuaW5nIHRhYmxlIHRoLAotLmNhdXRpb24gdGFibGUgdGgsCi0ubm90ZSB0YWJsZSB0aCB7Ci0gIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7Ci19Ci0KLQotLndhcm5pbmcgewotICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOwotfQotCi0uY2F1dGlvbiB7Ci0gIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Ci19Ci0KLS50aXAgewotICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOwotfQotCi0ubm90ZSB7Ci0gIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Ci19Ci0KLS5nbG9zc2FyeSBkbCBkdCwKLS52YXJpYWJsZWxpc3QgZGwgZHQsCi0udmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7Ci0gIGNvbG9yOiAjMDQ0OwotfQotCi1kaXYuZmlndXJlLAotZGl2LnRhYmxlLAotZGl2LmV4YW1wbGUsCi1kaXYuaW5mb3JtYWxmaWd1cmUsCi1kaXYuaW5mb3JtYWx0YWJsZSwKLWRpdi5pbmZvcm1hbGV4YW1wbGUgewotICBib3JkZXItY29sb3I6ICNhYWE7Ci19Ci0KLXByZS5wcm9ncmFtbGlzdGluZyB7Ci0gIGNvbG9yOiBibGFjazsKLSAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKLSAgYm9yZGVyLWNvbG9yOiAjYWFhOwotICBib3JkZXItd2lkdGg6IDJweDsKLX0KLQotLmd1aW1lbnUsCi0uZ3VpbGFiZWwsCi0uZ3VpbWVudWl0ZW0gewotICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwotfQotCi0KLWIua2V5Y2FwLAotLmtleWNhcCB7Ci0gIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci0gIGJvcmRlci1jb2xvcjogIzk5OTsKLX0KLQotCi1kaXYubmF2aGVhZGVyIHsKLSAgYm9yZGVyLWNvbG9yOiBibGFjazsKLX0KLQotCi1kaXYubmF2Zm9vdGVyIHsKLSAgYm9yZGVyLWNvbG9yOiBibGFjazsKLX0KLQotCi0ud3JpdGVybm90ZXMgewotICBjb2xvcjogcmVkOwotfQotCi0KLSAgLyoqKioqKioqKioqIC8KLSAvICBncmFwaGljcyAgLwotLyAqKioqKioqKioqKi8KLQotLyoKLWJvZHkgewotICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ib2R5X2JnLmpwZyIpOwotICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOwotfQotCi0ubmF2aGVhZGVyLAotLm5vdGUsCi0udGlwIHsKLSAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvbm90ZV9iZy5qcGciKTsKLSAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKLX0KLQotLndhcm5pbmcsCi0uY2F1dGlvbiB7Ci0gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL3dhcm5pbmdfYmcuanBnIik7Ci0gIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Ci19Ci0KLS5maWd1cmUsCi0uaW5mb3JtYWxmaWd1cmUsCi0uZXhhbXBsZSwKLS5pbmZvcm1hbGV4YW1wbGUsCi0udGFibGUsCi0uaW5mb3JtYWx0YWJsZSB7Ci0gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2ZpZ3VyZV9iZy5qcGciKTsKLSAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKLX0KLQotKi8KLWgxLAotaDIsCi1oMywKLWg0LAotaDUsCi1oNiwKLWg3ewotfQotCi0vKgotRXhhbXBsZSBvZiBob3cgdG8gc3RpY2sgYW4gaW1hZ2UgYXMgcGFydCBvZiB0aGUgdGl0bGUuCi0KLWRpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCi17Ci0gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZmlndXJlcy93aGl0ZS1vbi1ibGFjay5wbmciKTsKLSAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwotICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7Ci19Ci0qLwotCi1kaXYucHJlZmFjZSAudGl0bGVwYWdlIC50aXRsZSwKLWRpdi5jb2xvcGhvbiAudGl0bGUsCi1kaXYuY2hhcHRlciAudGl0bGVwYWdlIC50aXRsZSwKLWRpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCi17Ci19Ci0KLWRpdi5zZWN0aW9uIGRpdi5zZWN0aW9uIC50aXRsZXBhZ2UgLnRpdGxlLAotZGl2LnNlY3QyIC50aXRsZXBhZ2UgLnRpdGxlIHsKLSAgICBiYWNrZ3JvdW5kOiBub25lOwotfQotCi0KLWgxLnRpdGxlIHsKLSAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Ci0gIGhlaWdodDogMjU2cHg7Ci0gIHRleHQtaW5kZW50OiAtOTAwMHB4OwotICBvdmVyZmxvdzpoaWRkZW47Ci19Ci0KLWgyLnN1YnRpdGxlIHsKLSAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gIHRleHQtaW5kZW50OiAtOTAwMHB4OwotICBvdmVyZmxvdzpoaWRkZW47Ci0gIHdpZHRoOiAwcHg7Ci0gIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLSAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvCi0gLyAgcGlwcGluLmdpbXAub3JnIHNwZWNpZmljIGFsdGVyYXRpb25zICAvCi0vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoKLWRpdi5oZWFkaW5nLCBkaXYubmF2aGVhZGVyIHsKLSAgY29sb3I6ICM3Nzc7Ci0gIGZvbnQtc2l6ZTogODAlOwotICBwYWRkaW5nOiAwOwotICBtYXJnaW46IDA7Ci0gIHRleHQtYWxpZ246IGxlZnQ7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgdG9wOiAwcHg7Ci0gIGxlZnQ6IDBweDsKLSAgd2lkdGg6IDEwMCU7Ci0gIGhlaWdodDogNTBweDsKLSAgYmFja2dyb3VuZDogdXJsKCcvZ2Z4L2hlYWRpbmdfYmcucG5nJykgdHJhbnNwYXJlbnQ7Ci0gIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKLSAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKLSAgYm9yZGVyOiBub25lOwotfQotCi1kaXYuaGVhZGluZyBhIHsKLSAgY29sb3I6ICM0NDQ7Ci19Ci0KLWRpdi5mb290aW5nLCBkaXYubmF2Zm9vdGVyIHsKLSAgYm9yZGVyOiBub25lOwotICBjb2xvcjogI2RkZDsKLSAgZm9udC1zaXplOiA4MCU7Ci0gIHRleHQtYWxpZ246cmlnaHQ7Ci0KLSAgd2lkdGg6IDEwMCU7Ci0gIHBhZGRpbmctdG9wOiAxMHB4OwotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIGJvdHRvbTogMHB4OwotICBsZWZ0OiAwcHg7Ci0KLSAgYmFja2dyb3VuZDogdXJsKCcvZ2Z4L2Zvb3RpbmdfYmcucG5nJykgdHJhbnNwYXJlbnQ7Ci19Ci0qLwotCi0KLQotICAvKioqKioqKioqKioqKioqKioqIC8KLSAvICBuYXN0eSBpZSB0d2Vha3MgIC8KLS8gKioqKioqKioqKioqKioqKioqLwotCi0vKgotZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgewotICB3aWR0aDpleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyAicHgiKTsKLX0KLQotZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgewotICB3aWR0aDpleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyAicHgiKTsKLSAgbWFyZ2luLWxlZnQ6ZXhwcmVzc2lvbigiLTVlbSIpOwotfQotYm9keSB7Ci0gIHBhZGRpbmc6ZXhwcmVzc2lvbigiNGVtIDVlbSAwZW0gNWVtIik7Ci19Ci0qLwotCi0gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KLSAvIG1vemlsbGEgdmVuZG9yIHNwZWNpZmljIGNzcyBleHRlbnNpb25zICAvCi0vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKgotZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7Ci0gIC1tb3otb3BhY2l0eTogMC44ZW07Ci19Ci0KLWRpdi5maWd1cmUsCi1kaXYudGFibGUsCi1kaXYuaW5mb3JtYWxmaWd1cmUsCi1kaXYuaW5mb3JtYWx0YWJsZSwKLWRpdi5pbmZvcm1hbGV4YW1wbGUsCi1kaXYuZXhhbXBsZSwKLS50aXAsCi0ud2FybmluZywKLS5jYXV0aW9uLAotLm5vdGUgewotICAtbW96LWJvcmRlci1yYWRpdXM6IDAuNWVtOwotfQotCi1iLmtleWNhcCwKLS5rZXljYXAgewotICAtbW96LWJvcmRlci1yYWRpdXM6IDAuM2VtOwotfQotKi8KLQotdGFibGUgdHIgdGQgdGFibGUgdHIgdGQgewotICBkaXNwbGF5OiBub25lOwotfQotCi0KLWhyIHsKLSAgZGlzcGxheTogbm9uZTsKLX0KLQotdGFibGUgewotICBib3JkZXI6IDBlbTsKLX0KLQotIC5waG90byB7Ci0gIGZsb2F0OiByaWdodDsKLSAgbWFyZ2luLWxlZnQ6ICAgMS41ZW07Ci0gIG1hcmdpbi1ib3R0b206IDEuNWVtOwotICBtYXJnaW4tdG9wOiAwZW07Ci0gIG1heC13aWR0aDogICAgICAxN2VtOwotICBib3JkZXI6ICAgICAxcHggc29saWQgZ3JheTsKLSAgcGFkZGluZzogICAgM3B4OwotICBiYWNrZ3JvdW5kOiB3aGl0ZTsKLX0KLSAuc2VwZXJhdG9yIHsKLSAgIHBhZGRpbmctdG9wOiAyZW07Ci0gICBjbGVhcjogYm90aDsKLSAgfQotCi0gICN2YWxpZGF0b3JzIHsKLSAgICAgIG1hcmdpbi10b3A6IDVlbTsKLSAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwotICAgICAgY29sb3I6ICM3Nzc7Ci0gIH0KLSAgQG1lZGlhIHByaW50IHsKLSAgICAgIGJvZHkgewotICAgICAgICAgIGZvbnQtc2l6ZTogOHB0OwotICAgICAgfQotICAgICAgLm5vcHJpbnQgewotICAgICAgICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgICB9Ci0gIH0KLQotCi0udGlwLAotLm5vdGUgewotICAgYmFja2dyb3VuZDogI2YwZjBmMjsKLSAgIGNvbG9yOiAjMzMzOwotICAgcGFkZGluZzogMjBweDsKLSAgIG1hcmdpbjogMjBweDsKLX0KLQotLnRpcCBoMywKLS5ub3RlIGgzIHsKLSAgIHBhZGRpbmc6IDBlbTsKLSAgIG1hcmdpbjogMGVtOwotICAgZm9udC1zaXplOiAyZW07Ci0gICBmb250LXdlaWdodDogYm9sZDsKLSAgIGNvbG9yOiAjMzMzOwotfQotCi0udGlwIGEsCi0ubm90ZSBhIHsKLSAgIGNvbG9yOiAjMzMzOwotICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ci19Ci0KLS5mb290bm90ZSB7Ci0gICBmb250LXNpemU6IHNtYWxsOwotICAgY29sb3I6ICMzMzM7Ci19Ci0KLS8qIENoYW5nZXMgdGhlIGFubm91bmNlbWVudCB0ZXh0ICovCi0udGlwIGgzLAotLndhcm5pbmcgaDMsCi0uY2F1dGlvbiBoMywKLS5ub3RlIGgzIHsKLSAgIGZvbnQtc2l6ZTpsYXJnZTsKLSAgIGNvbG9yOiAjMDA1NTdEOwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLWN1c3RvbWl6YXRpb24ueHNsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLWN1c3RvbWl6YXRpb24ueHNsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2MwMmRkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy1jdXN0b21pemF0aW9uLnhzbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249JzEuMCc/PgotPHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6Zm89Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML0Zvcm1hdCIgdmVyc2lvbj0iMS4wIj4KLQotICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL2RvY2Jvb2stbWlycm9yL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KLQotPCEtLQotCi0gIDx4c2w6aW1wb3J0IGhyZWY9Ii4uL3RlbXBsYXRlLzEuNzYuMS9kb2Nib29rLXhzbC0xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+Ci0KLSAgPHhzbDppbXBvcnQgaHJlZj0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsLzEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KLQotLS0+Ci0KLSAgPHhzbDppbXBvcnQgaHJlZj0ieW9jdG8tcHJvamVjdC1xcy10aXRsZXBhZ2UueHNsIi8+Ci0KLSAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3Blcm1hbGlua3MueHNsIi8+Ci0gIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9zZWN0aW9uLnRpdGxlLnhzbCIvPgotICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvY29tcG9uZW50LnRpdGxlLnhzbCIvPgotICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvZGl2aXNpb24udGl0bGUueHNsIi8+Ci0gIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9mb3JtYWwub2JqZWN0LmhlYWRpbmcueHNsIi8+Ci0KLSAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS50b2MiIHNlbGVjdD0iJ2FydGljbGUgbm9wJyI+PC94c2w6cGFyYW0+Ci0gIDx4c2w6cGFyYW0gbmFtZT0iaHRtbC5zdHlsZXNoZWV0IiBzZWxlY3Q9Iidxcy1zdHlsZS5jc3MnIiAvPgotPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy1lY2xpcHNlLWN1c3RvbWl6YXRpb24ueHNsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLWVjbGlwc2UtY3VzdG9taXphdGlvbi54c2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZTY4MzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLWVjbGlwc2UtY3VzdG9taXphdGlvbi54c2wKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPScxLjAnPz4KLTx4c2w6c3R5bGVzaGVldAotCXhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIgotCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIgotCXhtbG5zOmZvPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9Gb3JtYXQiCi0JdmVyc2lvbj0iMS4wIj4KLQotICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL2RvY2Jvb2stbWlycm9yL2RvY2Jvb2steHNsLTEuNzYuMS9lY2xpcHNlL2VjbGlwc2UzLnhzbCIgLz4KLQotPCEtLQotCi0gIDx4c2w6aW1wb3J0IGhyZWY9Ii4uL3RlbXBsYXRlLzEuNzYuMS9kb2Nib29rLXhzbC0xLjc2LjEvZWNsaXBzZS9lY2xpcHNlMy54c2wiIC8+Ci0KLSAgPHhzbDppbXBvcnQKLQkgIGhyZWY9Imh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC8xLjc2LjEvZWNsaXBzZS9lY2xpcHNlMy54c2wiIC8+Ci0KLS0tPgotCi0gIDx4c2w6aW1wb3J0IGhyZWY9InlvY3RvLXByb2plY3QtcXMtdGl0bGVwYWdlLnhzbCIvPgotCi0gIDx4c2w6cGFyYW0gbmFtZT0iY2h1bmtlci5vdXRwdXQuaW5kZW50IiBzZWxlY3Q9Iid5ZXMnIi8+Ci0gIDx4c2w6cGFyYW0gbmFtZT0iY2h1bmsucXVpZXRseSIgc2VsZWN0PSIxIi8+Ci0gIDx4c2w6cGFyYW0gbmFtZT0idXNlLmlkLmFzLmZpbGVuYW1lIiBzZWxlY3Q9IjEiLz4KLSAgPHhzbDpwYXJhbSBuYW1lPSJ1bGluay50YXJnZXQiIHNlbGVjdD0iJ19zZWxmJyIgLz4KLSAgPHhzbDpwYXJhbSBuYW1lPSJiYXNlLmRpciIgc2VsZWN0PSInaHRtbC95b2N0by1wcm9qZWN0LXFzLyciLz4KLSAgPHhzbDpwYXJhbSBuYW1lPSJjaHVuay5zZWN0aW9uLmRlcHRoIiBzZWxlY3Q9IjAiLz4KLSAgPHhzbDpwYXJhbSBuYW1lPSJodG1sLnN0eWxlc2hlZXQiIHNlbGVjdD0iJy4uL2Jvb2suY3NzJyIvPgotICA8eHNsOnBhcmFtIG5hbWU9ImVjbGlwc2UubWFuaWZlc3QiIHNlbGVjdD0iMCIvPgotICA8eHNsOnBhcmFtIG5hbWU9ImNyZWF0ZS5wbHVnaW4ueG1sIiBzZWxlY3Q9IjAiLz4KLSAgPHhzbDpwYXJhbSBuYW1lPSJzdXBwcmVzcy5uYXZpZ2F0aW9uIiBzZWxlY3Q9IjEiLz4KLSAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS5pbmRleCIgc2VsZWN0PSIwIi8+Ci0gIDx4c2w6cGFyYW0gbmFtZT0iZ2VuZXJhdGUudG9jIiBzZWxlY3Q9IidhcnRpY2xlIG5vcCciPjwveHNsOnBhcmFtPgotICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSInc3R5bGUuY3NzJyIgLz4KLTwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZkYWU3Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1NiArMCwwIEBACi08IURPQ1RZUEUgYXJ0aWNsZSBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCi0iaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgotWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgotCi08YXJ0aWNsZSBpZD0neW9jdG8tcHJvamVjdC1xcy1pbnRybyc+Ci0gICAgPGFydGljbGVpbmZvPgotICAgICAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdGl0bGU+Ci0KLSAgICAgICAgPGNvcHlyaWdodD4KLSAgICAgICAgICAgIDx5ZWFyPiZDT1BZUklHSFRfWUVBUjs8L3llYXI+Ci0gICAgICAgICAgICA8aG9sZGVyPkxpbnV4IEZvdW5kYXRpb248L2hvbGRlcj4KLSAgICAgICAgPC9jb3B5cmlnaHQ+Ci0KLSAgICAgICAgPGxlZ2Fsbm90aWNlPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCi0gICAgICAgICAgICAgICAgdGhlIHRlcm1zIG9mIHRoZSA8dWxpbmsgdHlwZT0iaHR0cCIgdXJsPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvdWsvIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDIuMCBVSzogRW5nbGFuZCAmYW1wOyBXYWxlczwvdWxpbms+IGFzIHB1Ymxpc2hlZCBieSBDcmVhdGl2ZSBDb21tb25zLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBkcm9wLWRvd24gIkFjdGl2ZSBSZWxlYXNlcyIgYnV0dG9uCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIG1hbnVhbCBhc3NvY2lhdGVkIHdpdGggdGhlIGRlc2lyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9sZWdhbG5vdGljZT4KLQotICAgICAgICA8YWJzdHJhY3Q+Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMveW9jdG8tcHJvamVjdC10cmFuc3AucG5nIgotICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjZpbiIgZGVwdGg9IjFpbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduPSJyaWdodCIgc2NhbGU9IjI1IiAvPgotICAgICAgICA8L2Fic3RyYWN0PgotICAgIDwvYXJ0aWNsZWluZm8+Ci0KLSAgICA8c2VjdGlvbiBpZD0nd2VsY29tZSc+Ci0gICAgICAgIDx0aXRsZT5XZWxjb21lITwvdGl0bGU+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2VsY29tZSB0byB0aGUgWW9jdG8gUHJvamVjdCEKLSAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIGFuIG9wZW4tc291cmNlIGNvbGxhYm9yYXRpb24gcHJvamVjdCB3aG9zZQotICAgICAgICAgICAgZm9jdXMgaXMgZGV2ZWxvcGVycyBvZiBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zLgotICAgICAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIGEgYnVpbGQgaG9zdCBiYXNlZAotICAgICAgICAgICAgb24gdGhlIE9wZW5FbWJlZGRlZCAoT0UpIHByb2plY3QsIHdoaWNoIHVzZXMgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgotICAgICAgICAgICAgdG9vbCwgdG8gY29uc3RydWN0IGNvbXBsZXRlIExpbnV4IGltYWdlcy4KLSAgICAgICAgICAgIFRoZSBCaXRCYWtlIGFuZCBPRSBjb21wb25lbnRzIGNvbWJpbmUgdG9nZXRoZXIgdG8gZm9ybQotICAgICAgICAgICAgYSByZWZlcmVuY2UgYnVpbGQgaG9zdCwgaGlzdG9yaWNhbGx5IGtub3duIGFzCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNwb2t5Jz5Qb2t5PC91bGluaz4KLSAgICAgICAgICAgICg8ZW1waGFzaXM+UGFoPC9lbXBoYXNpcz4ta2VlKS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBxdWljayBzdGFydCBpcyB3cml0dGVuIHNvIHRoYXQgeW91IGNhbiBxdWlja2x5IGdldCBhCi0gICAgICAgICAgICBidWlsZCBob3N0IHNldCB1cCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgYW5kIHRoZW4gYnVpbGQgc29tZQotICAgICAgICAgICAgTGludXggaW1hZ2VzLgotICAgICAgICAgICAgUmF0aGVyIHRoYW4gZ28gaW50byBncmVhdCBkZXRhaWwgYWJvdXQgdGhlIFlvY3RvIFByb2plY3QgYW5kIGl0cwotICAgICAgICAgICAgbWFueSBjYXBhYmlsaXRpZXMsIHRoaXMgcXVpY2sgc3RhcnQgcHJvdmlkZXMgdGhlIG1pbmltYWwKLSAgICAgICAgICAgIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIHRyeSBvdXQgdGhlIFlvY3RvIFByb2plY3QgdXNpbmcgZWl0aGVyIGEKLSAgICAgICAgICAgIHN1cHBvcnRlZCBMaW51eCBidWlsZCBob3N0IG9yIGEgYnVpbGQgaG9zdCBzZXQgdXAgdG8gdXNlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAotICAgICAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgUmVhZGluZyBhbmQgdXNpbmcgdGhlIHF1aWNrIHN0YXJ0IHNob3VsZCByZXN1bHQgaW4geW91IGhhdmluZyBhCi0gICAgICAgICAgICBiYXNpYyB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhlIFlvY3RvIFByb2plY3QgaXMgYW5kIGhvdyB0byB1c2UKLSAgICAgICAgICAgIHNvbWUgb2YgaXRzIGNvcmUgY29tcG9uZW50cy4KLSAgICAgICAgICAgIFlvdSB3aWxsIGFsc28gaGF2ZSB3b3JrZWQgdGhyb3VnaCBzdGVwcyB0byBwcm9kdWNlIHR3byBpbWFnZXM6Ci0gICAgICAgICAgICBvbmUgdGhhdCBydW5zIG9uIHRoZSBlbXVsYXRvciAoUUVNVSkgYW5kIG9uZSB0aGF0IGJvb3RzIG9uIGFjdHVhbAotICAgICAgICAgICAgaGFyZHdhcmUgKGkuZS4gTWlubm93Qm9hcmQgVHVyYm90KS4KLSAgICAgICAgICAgIFRoZSBleGFtcGxlcyBoaWdobGlnaHQgdGhlIGVhc2Ugd2l0aCB3aGljaCB5b3UgY2FuIHVzZSB0aGUKLSAgICAgICAgICAgIFlvY3RvIFByb2plY3QgdG8gY3JlYXRlIGltYWdlcyBmb3IgbXVsdGlwbGUgdHlwZXMgb2YgaGFyZHdhcmUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkaXJlY3RzIHlvdSB0byBrZXkgc2VjdGlvbnMgb2YgdGhpcwotICAgICAgICAgICAgcXVpY2sgc3RhcnQ6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi40L3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sI3lwLXJlc291cmNlcyc+U2V0dGluZyBVcCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNC95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMuaHRtbCNidWlsZGluZy1hbi1pbWFnZS1mb3ItZW11bGF0aW9uJz5CdWlsZGluZyBhbiBJbWFnZSBmb3IgRW11bGF0aW9uPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjQveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwjYnVpbGRpbmctYW4taW1hZ2UtZm9yLWhhcmR3YXJlJz5CdWlsZGluZyBhbiBJbWFnZSBmb3IgSGFyZHdhcmU8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotPCEtLQotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBoYXZlIGEgc3lzdGVtIHRoYXQgcnVucyBMaW51eCBhbmQgeW91IHdhbnQgdG8gZ2l2ZQotICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGEgdGVzdCBydW4sIHlvdSBtaWdodCBjb25zaWRlciB1c2luZyB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICBQcm9qZWN0IEJ1aWxkIEFwcGxpYW5jZS4KLSAgICAgICAgICAgICAgICBUaGUgQnVpbGQgQXBwbGlhbmNlIGFsbG93cyB5b3UgdG8gYnVpbGQgYW5kIGJvb3QgYSBjdXN0b20KLSAgICAgICAgICAgICAgICBlbWJlZGRlZCBMaW51eCBpbWFnZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IHVzaW5nIGEgbm9uLUxpbnV4Ci0gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgc3lzdGVtLgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b2N0b3Byb2plY3Qub3JnL3Rvb2xzLXJlc291cmNlcy9wcm9qZWN0cy9idWlsZC1hcHBsaWFuY2UnPllvY3RvIFByb2plY3QgQnVpbGQgQXBwbGlhbmNlPC91bGluaz4KLSAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgIDwvbm90ZT4KLS0tPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCwgeW91IGNhbgotICAgICAgICAgICAgcmVmZXJlbmNlIHRoZXNlIHJlc291cmNlczoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+V2Vic2l0ZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiwgdGhlIGxhdGVzdCBidWlsZHMsIGJyZWFraW5nCi0gICAgICAgICAgICAgICAgICAgIG5ld3MsIGZ1bGwgZGV2ZWxvcG1lbnQgZG9jdW1lbnRhdGlvbiwgYW5kIGFjY2VzcyB0byBhIHJpY2gKLSAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBDb21tdW5pdHkgaW50byB3aGljaCB5b3UgY2FuIHRhcC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBPdmVydmlldzo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3lwLWludHJvJz5JbnRyb2R1Y2luZyB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIHByZXNlbnRzIGFuIG92ZXJ2aWV3IG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GQVFzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIGNvbW1vbmx5IGFza2VkIFlvY3RvIFByb2plY3QgcXVlc3Rpb25zIGFuZCBhbnN3ZXJzLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdHdvIEZBUXM6Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9GQVEnPllvY3RvIFByb2plY3QgRkFRPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgb24gYSB3aWtpLCBhbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNmYXEnPkZBUTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldmVsb3BlciBTY3JlZW5jYXN0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vdmltZW8uY29tLzM2NDUwMzIxJz5HZXR0aW5nIFN0YXJ0ZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAtIE5ldyBEZXZlbG9wZXIgU2NyZWVuY2FzdCBUdXRvcmlhbDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIGEgMzAtbWludXRlIHZpZGVvIGNyZWF0ZWQgZm9yIHVzZXJzIHVuZmFtaWxpYXIKLSAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBidXQgZmFtaWxpYXIgd2l0aCBMaW51eCBidWlsZAotICAgICAgICAgICAgICAgICAgICBob3N0cy4KLSAgICAgICAgICAgICAgICAgICAgV2hpbGUgdGhpcyBzY3JlZW5jYXN0IGlzIHNvbWV3aGF0IGRhdGVkLCB0aGUgaW50cm9kdWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgIGFuZCBmdW5kYW1lbnRhbCBjb25jZXB0cyBhcmUgdXNlZnVsIGZvciB0aGUgYmVnaW5uZXIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbXByZWhlbnNpdmUgTGlzdCBvZiBMaW5rcyBhbmQgT3RoZXIgRG9jdW1lbnRhdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1saW5rcy1hbmQtcmVsYXRlZC1kb2N1bWVudGF0aW9uJz5MaW5rcyBhbmQgUmVsYXRlZCBEb2N1bWVudGF0aW9uPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBwcm92aWRlcyBhCi0gICAgICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpdmUgbGlzdCBvZiByZWxhdGVkIGxpbmtzIGFuZCBkb2N1bWVudGF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3lwLXJlc291cmNlcyc+Ci0gICAgICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTZXR0aW5nIHVwIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBpbnZvbHZlcyBnZXR0aW5nIHlvdXIgYnVpbGQKLSAgICAgICAgICAgIGhvc3QgcmVhZHkuCi0gICAgICAgICAgICBJZiB5b3UgaGF2ZSBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lIHRoYXQgcnVucyBhIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgIHN1cHBvcnRlZCBkaXN0cmlidXRpb24gYXMgZGVzY3JpYmVkIGJ5IHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldGFpbGVkLXN1cHBvcnRlZC1kaXN0cm9zJz5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLCB5b3UgY2FuIHByZXBhcmUKLSAgICAgICAgICAgIHRoYXQgbWFjaGluZSBhcyB5b3VyIGJ1aWxkIGhvc3QuCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncXMtbmF0aXZlLWxpbnV4LWJ1aWxkLWhvc3QnPlVzaW5nIGEgTmF0aXZlIExpbnV4IE1hY2hpbmU8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSWYgeW91IGRvIG5vdCB3YW50IHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBvbiBhIG5hdGl2ZSBMaW51eAotICAgICAgICAgICAgbWFjaGluZSwgeW91IGNhbiBwcmVwYXJlIHlvdXIgYnVpbGQgaG9zdCB0byB1c2UKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9jcm9wcy9hYm91dC8nPkNST1BTPC91bGluaz4sCi0gICAgICAgICAgICB3aGljaCBsZXZlcmFnZXMKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+LgotICAgICAgICAgICAgWW91IGNhbiBzZXQgdXAgYSBidWlsZCBob3N0IGZvciBXaW5kb3dzLCBNYWMsIGFuZCBMaW51eAotICAgICAgICAgICAgbWFjaGluZXMuCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncXMtY3JvcHMtYnVpbGQtaG9zdCc+VXNpbmcgQ1JPUFMgYW5kIENvbnRhaW5lcnM8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdxcy1jcm9wcy1idWlsZC1ob3N0Jz4KLSAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBDUk9QUyBhbmQgQ29udGFpbmVyczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBnZXQgeW91ciBidWlsZCBob3N0IHNldCB1cCB3aXRoIGEKLSAgICAgICAgICAgICAgICBQb2t5IGNvbnRhaW5lciB0aGF0IHlvdSBjYW4gdXNlIHRvIGNvbXBsZXRlIHRoZSBidWlsZAotICAgICAgICAgICAgICAgIGV4YW1wbGVzIGZ1cnRoZXIgZG93biBpbiB0aGUgUXVpY2sgU3RhcnQ6Ci0gICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIHRvIHVzZSBDUk9zcyBQbGF0Zm9ybVMgKENST1BTKTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgV29yayB0aHJvdWdoIHRoZSBmaXJzdCBzaXggc3RlcHMgb2YgdGhlIHByb2NlZHVyZQotICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10by11c2UtY3JvcHMnPlNldHRpbmcgVXAgdG8gVXNlIENST3NzIFBsYXRmb3JtUyAoQ1JPUFMpPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIHRoZSBQb2t5IENvbnRhaW5lciB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEdvIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXIvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kJz48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGZvbGxvdyB0aGUgZGlyZWN0aW9ucyB0byBzZXQgdXAgdGhlIFBva3kgY29udGFpbmVyCi0gICAgICAgICAgICAgICAgICAgICAgICBvbiB5b3VyIGJ1aWxkIGhvc3QuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIHlvdSBjb21wbGV0ZSB0aGUgc2V0dXAgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLCB5b3UgbmVlZCB0byBnZXQgYSBjb3B5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IG9uIHlvdXIgYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QuCi0gICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVsZWFzZXMnPllvY3RvIFByb2plY3QgUmVsZWFzZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIHRvIGNvbnRpbnVlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdxcy1uYXRpdmUtbGludXgtYnVpbGQtaG9zdCc+Ci0gICAgICAgICAgICA8dGl0bGU+VXNpbmcgYSBOYXRpdmUgTGludXggTWFjaGluZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB3aGF0IHlvdSBuZWVkIGluIG9yZGVyIHRvIHVzZSBhCi0gICAgICAgICAgICAgICAgTGludXgtYmFzZWQgYnVpbGQgaG9zdCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgdG8gYnVpbGQgaW1hZ2VzOgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgSG9zdDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEEgYnVpbGQgaG9zdCB3aXRoIGEgbWluaW11bSBvZiA1MCBHYnl0ZXMgb2YgZnJlZSBkaXNrCi0gICAgICAgICAgICAgICAgICAgIHNwYWNlIHRoYXQgaXMgcnVubmluZyBhIHN1cHBvcnRlZCBMaW51eCBkaXN0cmlidXRpb24gKGkuZS4KLSAgICAgICAgICAgICAgICAgICAgcmVjZW50IHJlbGVhc2VzIG9mIEZlZG9yYSwgb3BlblNVU0UsIENlbnRPUywgRGViaWFuLCBvcgotICAgICAgICAgICAgICAgICAgICBVYnVudHUpLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIEhvc3QgUGFja2FnZXM8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBBcHByb3ByaWF0ZSBwYWNrYWdlcyBpbnN0YWxsZWQgb24gdGhlIGJ1aWxkIGhvc3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd0aGUtbGludXgtZGlzdHJvJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+VGhlIExpbnV4IERpc3RyaWJ1dGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSB2ZXJpZmllcyBlYWNoIHJlbGVhc2UgYWdhaW5zdCByZWNlbnQKLSAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMgb2YgdGhlIG1vc3QgcG9wdWxhciBMaW51eCBkaXN0cmlidXRpb25zIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBzdGFibGUgcmVsZWFzZXMuCi0gICAgICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIGlmIHlvdSBoYXZlIHRoZSBjdXJyZW50IHJlbGVhc2UgbWludXMgb25lIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZGlzdHJpYnV0aW9ucywgeW91IHNob3VsZCBoYXZlIG5vIHByb2JsZW1zLgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVidW50dQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZlZG9yYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5TVVNFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2VudE9TCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGViaWFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICBGb3IgYSBtb3JlIGRldGFpbGVkIGxpc3Qgb2YgZGlzdHJpYnV0aW9ucyB0aGF0IHN1cHBvcnQgdGhlCi0gICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldGFpbGVkLXN1cHBvcnRlZC1kaXN0cm9zJz5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBvbiBhbnkKLSAgICAgICAgICAgICAgICAgICAgbW9kZXJuIGRpc3RyaWJ1dGlvbiB0aGF0IGhhcyB0aGUgZm9sbG93aW5nIHZlcnNpb25zIGZvcgotICAgICAgICAgICAgICAgICAgICBHaXQsIHRhciwgYW5kIFB5dGhvbi4KLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgMS44LjMuMSBvciBncmVhdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyIDEuMjcgb3IgZ3JlYXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiAzLjQuMCBvciBncmVhdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBob3N0IGRvZXMgbm90IG1lZXQgYW55IG9mIHRoZXNlIHRocmVlIGxpc3RlZAotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIHJlcXVpcmVtZW50cywgeW91IGNhbiB0YWtlIHN0ZXBzIHRvIHByZXBhcmUgdGhlCi0gICAgICAgICAgICAgICAgICAgIHN5c3RlbSBzbyB0aGF0IHlvdSBjYW4gc3RpbGwgdXNlIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1naXQtdGFyLWFuZC1weXRob24tdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0ncGFja2FnZXMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5UaGUgQnVpbGQgSG9zdCBQYWNrYWdlczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWQgYnVpbGQgaG9zdCBwYWNrYWdlcyB2YXJ5IGRlcGVuZGluZyBvbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkIG1hY2hpbmUgYW5kIHdoYXQgeW91IHdhbnQgdG8gZG8gd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGFuIGltYWdlIHRoYXQgY2FuIHJ1bgotICAgICAgICAgICAgICAgICAgICBvbiBRRU1VIGluIGdyYXBoaWNhbCBtb2RlIChhIG1pbmltYWwsIGJhc2ljIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50KSwgdGhlbiB0aGUgYnVpbGQgaG9zdCBwYWNrYWdlIHJlcXVpcmVtZW50cwotICAgICAgICAgICAgICAgICAgICBhcmUgZGlmZmVyZW50IHRoYW4gaWYgeW91IHdhbnQgdG8gYnVpbGQgYW4gaW1hZ2Ugb24gYSBoZWFkbGVzcwotICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gb3IgYnVpbGQgb3V0IHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gc2V0LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZlbHksIHRoZSBudW1iZXIgb2YgcmVxdWlyZWQgcGFja2FnZXMgaXMgbGFyZ2UKLSAgICAgICAgICAgICAgICAgICAgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBjb3ZlciBhbGwgY2FzZXMuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgeW91IG5lZWQgdG8gaGF2ZSByb290IGFjY2VzcyBhbmQgdGhlbiBpbnN0YWxsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVxdWlyZWQgcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCB0aGUgY29tbWFuZHMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uIG1heSBvciBtYXkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vdCB3b3JrIGRlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB5b3VyIExpbnV4Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gaGFzIDxmaWxlbmFtZT5zdWRvPC9maWxlbmFtZT4gaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIGFuIGltYWdlIHRoYXQgcnVucyBvbiBRRU1VIGluIGdyYXBoaWNhbCBtb2RlIChlLmcuIGVzc2VudGlhbAotICAgICAgICAgICAgICAgICAgICBwbHVzIGdyYXBoaWNzIHN1cHBvcnQpLgotICAgICAgICAgICAgICAgICAgICBGb3IgbGlzdHMgb2YgcmVxdWlyZWQgcGFja2FnZXMgZm9yIG90aGVyIHNjZW5hcmlvcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBIb3N0IERldmVsb3BtZW50IFN5c3RlbTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVidW50dSBhbmQgRGViaWFuPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgJlVCVU5UVV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsgbGlic2RsMS4yLWRldiB4dGVybQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RmVkb3JhPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBkbmYgaW5zdGFsbCAmRkVET1JBX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOyBTREwtZGV2ZWwgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk9wZW5TVVNFPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB6eXBwZXIgaW5zdGFsbCAmT1BFTlNVU0VfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7IGxpYlNETC1kZXZlbCB4dGVybQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2VudE9TPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB5dW0gaW5zdGFsbCAmQ0VOVE9TX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOyBTREwtZGV2ZWwgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRyYSBQYWNrYWdlcyBmb3IgRW50ZXJwcmlzZSBMaW51eAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhIGNvbGxlY3Rpb24gb2YgcGFja2FnZXMgZnJvbSBGZWRvcmEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBvbiBSSEVML0NlbnRPUyBmb3IgZWFzeSBpbnN0YWxsYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBwYWNrYWdlcyBub3QgaW5jbHVkZWQgaW4gZW50ZXJwcmlzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IGJ5IGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaW5zdGFsbCB0aGVzZSBwYWNrYWdlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tYWtlY2FjaGU8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZXMgYWRkaXRpb25hbCBNZXRhZGF0YSBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVwZWwtcmVsZWFzZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgT25jZSB5b3UgY29tcGxldGUgdGhlIHNldHVwIGluc3RydWN0aW9ucyBmb3IgeW91cgotICAgICAgICAgICAgICAgIG1hY2hpbmUsIHlvdSBuZWVkIHRvIGdldCBhIGNvcHkgb2YgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IG9uIHlvdXIgYnVpbGQKLSAgICAgICAgICAgICAgICBob3N0LgotICAgICAgICAgICAgICAgIENvbnRpbnVlIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlbGVhc2VzJz5Zb2N0byBQcm9qZWN0IFJlbGVhc2U8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ncmVsZWFzZXMnPgotICAgICAgICAgICAgPHRpdGxlPllvY3RvIFByb2plY3QgUmVsZWFzZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE5vdyB0aGF0IHlvdXIgYnVpbGQgaG9zdCBoYXMgdGhlIHJpZ2h0IHBhY2thZ2VzIChuYXRpdmUKLSAgICAgICAgICAgICAgICBMaW51eCBtYWNoaW5lKSBvciB5b3UgaGF2ZSB0aGUgUG9reSBjb250YWluZXIgc2V0IHVwCi0gICAgICAgICAgICAgICAgKENST1BTKSwgeW91IG5lZWQgdG8gZ2V0IGEgY29weSBvZiB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBnZXQgdGhlIGxhdGVzdCBZb2N0byBQcm9qZWN0IHJlbGVhc2UKLSAgICAgICAgICAgICAgICBieSBzZXR0aW5nIHVwIChjbG9uaW5nIGluCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiB0ZXJtcykgYQotICAgICAgICAgICAgICAgIGxvY2FsIGNvcHkgb2YgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkgb24KLSAgICAgICAgICAgICAgICB5b3VyIGJ1aWxkIGhvc3QgYW5kIHRoZW4gY2hlY2tpbmcgb3V0IHRoZSBsYXRlc3QgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICBEb2luZyBzbyBhbGxvd3MgeW91IHRvIGVhc2lseSB1cGRhdGUgdG8gbmV3ZXIgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIHJlbGVhc2VzIGFzIHdlbGwgYXMgY29udHJpYnV0ZSBiYWNrIHRvIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZnJvbSBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lIHRoYXQgaXMKLSAgICAgICAgICAgICAgICBydW5uaW5nIFVidW50dS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBob3N0IGlzIHVzaW5nIGEgUG9reSBjb250YWluZXIsIHlvdSBjYW4KLSAgICAgICAgICAgICAgICAgICAgdXNlIHRoZSBzYW1lIEdpdCBjb21tYW5kcy4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGNsb25lcyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYW5kIHRoZW4gY2hlY2tzIG91dCB0aGUgbGF0ZXN0IFlvY3RvIFByb2plY3QgUmVsZWFzZQotICAgICAgICAgICAgICAgIGJ5IHRhZyAoaS5lLiA8ZmlsZW5hbWU+JkRJU1RST19SRUxfVEFHOzwvZmlsZW5hbWU+KToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKLSAgICAgQ2xvbmluZyBpbnRvICdwb2t5Jy4uLgotICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDM2MTc4MiwgZG9uZS4KLSAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg4NzEwMC84NzEwMCksIGRvbmUuCi0gICAgIHJlbW90ZTogVG90YWwgMzYxNzgyIChkZWx0YSAyNjg2MTkpLCByZXVzZWQgMzYxNDM5IChkZWx0YSAyNjgyNzcpCi0gICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgzNjE3ODIvMzYxNzgyKSwgMTMxLjk0IE1pQiB8IDYuODggTWlCL3MsIGRvbmUuCi0gICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDI2ODYxOS8yNjg2MTkpLCBkb25lLgotICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KLSAgICAgJCBnaXQgY2hlY2tvdXQgdGFncy8mRElTVFJPX1JFTF9UQUc7IC1iIHBva3lfJkRJU1RSTzsKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBHaXQgPGZpbGVuYW1lPmNoZWNrb3V0PC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSBsb2NhbCBicmFuY2ggbmFtZWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reV8mRElTVFJPOzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRoZSBmaWxlcyBhdmFpbGFibGUgdG8geW91IGluIHRoYXQgYnJhbmNoIGV4YWN0bHkgbWF0Y2ggdGhlCi0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeSdzIGZpbGVzIGluIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mRElTVFJPX05BTUVfTk9fQ0FQOzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYnJhbmNoIGF0IHRoZSB0aW1lIG9mIHRoZSBZb2N0byBQcm9qZWN0ICZESVNUUk87Ci0gICAgICAgICAgICAgICAgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gY2hlY2tpbmcgb3V0IHRoZSBlbnRpcmUgZGV2ZWxvcG1lbnQgYnJhbmNoCi0gICAgICAgICAgICAgICAgICAgIG9mIGEgcmVsZWFzZSAoaS5lLiB0aGUgdGlwKSwgd2hpY2ggY291bGQgYmUgY29udGludW91c2x5Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5naW5nIHdoaWxlIHlvdSBhcmUgZG9pbmcgeW91ciBkZXZlbG9wbWVudCwgeW91IHdvdWxkCi0gICAgICAgICAgICAgICAgICAgIGNoZWNrIG91dCBhIGJyYW5jaCBiYXNlZCBvbiBhIHJlbGVhc2UgdGFnIGFzIHNob3duIGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSBwcmV2aW91cyBleGFtcGxlLgotICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBwcm92aWRlcyB5b3Ugd2l0aCBhbiB1bmNoYW5naW5nLCBzdGFibGUgc2V0IG9mCi0gICAgICAgICAgICAgICAgICAgIGZpbGVzLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIG1vcmUgb3B0aW9ucyBhbmQgaW5mb3JtYXRpb24gYWJvdXQgYWNjZXNzaW5nIFlvY3RvCi0gICAgICAgICAgICAgICAgUHJvamVjdCByZWxhdGVkIHJlcG9zaXRvcmllcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3FzLWJ1aWxkaW5nLWltYWdlcyc+Ci0gICAgICAgIDx0aXRsZT5CdWlsZGluZyBJbWFnZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGFyZSBub3cgcmVhZHkgdG8gZ2l2ZSB0aGUgWW9jdG8gUHJvamVjdCBhIHRyeS4KLSAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsIHlvdSB3aWxsIGJlIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgdG8gYnVpbGQKLSAgICAgICAgICAgIHlvdXIgaW1hZ2VzLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgQSBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QgaXMgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgdGhyb3VnaAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3RvYXN0ZXItdGVybSc+VG9hc3RlcjwvdWxpbms+LgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7Jz5Ub2FzdGVyIFVzZXIgTWFudWFsPC91bGluaz4KLSAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHF1aWNrIHN0YXJ0IHN0ZXBzIHlvdSB0aHJvdWdoIHRoZQotICAgICAgICAgICAgZm9sbG93aW5nOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEJ1aWxkIGEgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiByZWZlcmVuY2UgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgYW5kIHJ1biBpdCBpbiB0aGUgUUVNVSBlbXVsYXRvci4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBFYXNpbHkgY2hhbmdlIGNvbmZpZ3VyYXRpb25zIHNvIHRoYXQgeW91IGNhbiBxdWlja2x5Ci0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhIHNlY29uZCBpbWFnZSB0aGF0IHlvdSBjYW4gbG9hZCBvbnRvIGJvb3RhYmxlCi0gICAgICAgICAgICAgICAgICAgIG1lZGlhIGFuZCBhY3R1YWxseSBib290IHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHVzZXMgdGhlIE1pbm5vd0JvYXJkCi0gICAgICAgICAgICAgICAgICAgIFR1cmJvdC1jb21wYXRpYmxlIGJvYXJkcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFRoZSBzdGVwcyBpbiB0aGUgZm9sbG93aW5nIHR3byBzZWN0aW9ucyBkbyBub3QgcHJvdmlkZSBkZXRhaWwsCi0gICAgICAgICAgICAgICAgYnV0IHJhdGhlciBwcm92aWRlIG1pbmltYWwsIHdvcmtpbmcgY29tbWFuZHMgYW5kIGV4YW1wbGVzCi0gICAgICAgICAgICAgICAgZGVzaWduZWQgdG8ganVzdCBnZXQgeW91IHN0YXJ0ZWQuCi0gICAgICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBhcHByb3ByaWF0ZSBtYW51YWxzIGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBtYW51YWwgc2V0PC91bGluaz4uCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGRpbmctYW4taW1hZ2UtZm9yLWVtdWxhdGlvbic+Ci0gICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgYW4gSW1hZ2UgZm9yIEVtdWxhdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIGJ1aWxkIHlvdXIgaW1hZ2UuCi0gICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyBhbiBlbnRpcmUgTGludXgKLSAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24sIGluY2x1ZGluZyB0aGUgdG9vbGNoYWluLCBmcm9tIHNvdXJjZS4KLSAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXMgYWJvdXQgTmV0d29yayBQcm94aWVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgYnVpbGQgcHJvY2VzcyBzZWFyY2hlcyBmb3Igc291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSB1c2luZyBhIHByZS1kZXRlcm1pbmVkIG9yZGVyIHRocm91Z2ggYSBzZXQgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB3b3JraW5nIGJlaGluZCBhIGZpcmV3YWxsIGFuZCB5b3VyIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCBpcyBub3Qgc2V0IHVwIGZvciBwcm94aWVzLCB5b3UgY291bGQgZW5jb3VudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmxlbXMgd2l0aCB0aGUgYnVpbGQgcHJvY2VzcyB3aGVuIGZldGNoaW5nIHNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgKGUuZy4gZmV0Y2hlciBmYWlsdXJlcyBvciBHaXQgZmFpbHVyZXMpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3Qga25vdyB5b3VyIHByb3h5IHNldHRpbmdzLCBjb25zdWx0IHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIHJlc291cmNlcyBhbmQgZ2V0IHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGdvb2Qgc3RhcnRpbmcgcG9pbnQgY291bGQgYWxzbyBiZSB0byBjaGVjayB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViIGJyb3dzZXIgc2V0dGluZ3MuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgeW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBiZWhpbmQgYSBmaXJld2FsbCBpbiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSBNYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNob3ctZG9lcy10aGUteW9jdG8tcHJvamVjdC1vYnRhaW4tc291cmNlLWNvZGUtYW5kLXdpbGwtaXQtd29yay1iZWhpbmQtbXktZmlyZXdhbGwtb3ItcHJveHktc2VydmVyJz5GQVE8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9Xb3JraW5nX0JlaGluZF9hX05ldHdvcmtfUHJveHknPldvcmtpbmcgQmVoaW5kIGEgTmV0d29yayBQcm94eTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CZSBTdXJlIFlvdXIgQnVpbGQgSG9zdCBpcyBTZXQgVXA6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzdGVwcyB0byBidWlsZCBhbiBpbWFnZSBpbiB0aGlzIHNlY3Rpb24gZGVwZW5kIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGJ1aWxkIGhvc3QgYmVpbmcgcHJvcGVybHkgc2V0IHVwLgotICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB5b3UgaGF2ZSB3b3JrZWQgdGhyb3VnaCB0aGUgcmVxdWlyZW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0neXAtcmVzb3VyY2VzJz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVjayBPdXQgWW91ciBCcmFuY2g6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGFyZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgYW5kIHRoZW4gY2hlY2sgb3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnJhbmNoIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGF0ZXN0IFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2Qgfi9wb2t5Ci0gICAgICQgZ2l0IGNoZWNrb3V0IC1iICZESVNUUk9fTkFNRV9OT19DQVA7IG9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgR2l0J3MgPGZpbGVuYW1lPmNoZWNrb3V0PC9maWxlbmFtZT4gY29tbWFuZCBjaGVja3Mgb3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCBZb2N0byBQcm9qZWN0IHJlbGVhc2UgaW50byBhIGxvY2FsIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICAgICAgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSByZWxlYXNlIChpLmUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JkRJU1RST19OQU1FX05PX0NBUDs8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgbG9jYWwgYnJhbmNoIHRyYWNrcyB0aGUgdXBzdHJlYW0gYnJhbmNoIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSBuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRpbmcgeW91ciBvd24gYnJhbmNoIGJhc2VkIG9uIHRoZSByZWxlYXNlZAotICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoIGVuc3VyZXMgeW91IGFyZSB1c2luZyB0aGUgbGF0ZXN0IGZpbGVzIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCByZWxlYXNlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsaXplIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUnVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgdG8gZGVmaW5lIHRoZSBPcGVuRW1iZWRkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGVudmlyb25tZW50IG9uIHlvdXIgYnVpbGQgaG9zdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGluIHRoaXMgY2FzZQotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGlzIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICBBZnRlciB0aGUgc2NyaXB0IHJ1bnMsIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvIHRoZSBCdWlsZCBEaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICBMYXRlciwgd2hlbiB0aGUgYnVpbGQgY29tcGxldGVzLCB0aGUgQnVpbGQgRGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhbGwgdGhlIGZpbGVzIGNyZWF0ZWQgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhhbWluZSBZb3VyIExvY2FsIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3Ugc2V0IHVwIHRoZSBidWlsZCBlbnZpcm9ubWVudCwgYSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIG5hbWVkCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGJlY29tZXMgYXZhaWxhYmxlIGluCi0gICAgICAgICAgICAgICAgICAgICAgICBhIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHVzaW5nIEJpdEJha2UgdG8gc3RhcnQgdGhlIGJ1aWxkLCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICBsb29rIGF0IHRoaXMgZmlsZSBhbmQgYmUgc3VyZSB5b3VyIGdlbmVyYWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zIGFyZSBob3cgeW91IHdhbnQgdGhlbToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyBoZWxwIGNvbnNlcnZlIGRpc2sgc3BhY2UgZHVyaW5nIGJ1aWxkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBhZGQgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgdG8geW91cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0J3MgY29uZmlndXJhdGlvbiBmaWxlLCB3aGljaCBmb3IgdGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L2J1aWxkL2NvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpbmcgdGhpcyBzdGF0ZW1lbnQgZGVsZXRlcyB0aGUgd29yawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgdXNlZCBmb3IgYnVpbGRpbmcgYSByZWNpcGUgb25jZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGlzIGJ1aWx0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElOSEVSSVQgKz0gInJtX3dvcmsiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgdGFyZ2V0IG1hY2hpbmUgZm9yIHRoZSBidWlsZCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBwcm9kdWNlcyBhbiBpbWFnZSB0aGF0IGNhbiBiZSB1c2VkIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBRRU1VIGVtdWxhdG9yIGFuZCBpcyB0YXJnZXRlZCBhdCBhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5JbnRlbDwvdHJhZGVtYXJrPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMi1iaXQgYmFzZWQgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdXJ0aGVyIG9uIGluIHRoaXMgZXhhbXBsZSwgdGhpcyBkZWZhdWx0IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2lseSBjaGFuZ2VkIHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgc28gdGhhdCB5b3UgY2FuIHF1aWNrbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgYW4gaW1hZ2UgZm9yIGEgZGlmZmVyZW50IG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBjb25zaWRlcmF0aW9uIGJlZm9yZSB5b3UgYnVpbGQgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbWFuYWdlciB1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgc2VsZWN0cyB0aGUgUlBNIHBhY2thZ2UgbWFuYWdlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjb250cm9sIHRoaXMgY29uZmlndXJhdGlvbiBieSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5TZWxlY3Rpb24gb2YgdGhlIHBhY2thZ2UgbWFuYWdlciBpcyBzZXBhcmF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHdoZXRoZXIgcGFja2FnZSBtYW5hZ2VtZW50IGlzIHVzZWQgYXQgcnVudGltZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgdGFyZ2V0IGltYWdlLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGFkZGl0aW9uYWwgcGFja2FnZSBtYW5hZ2VyIHNlbGVjdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtcGFja2FnZSc+PGZpbGVuYW1lPnBhY2thZ2UuYmJjbGFzczwvZmlsZW5hbWU+PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhcnQgdGhlIEJ1aWxkOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb250aW51ZSB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBidWlsZCBhbiBPUyBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSB0YXJnZXQsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW4gdGhpcyBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBudW1iZXIgb2YgcHJvY2Vzc29ycyBhbmQgY29yZXMsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCBvZiBSQU0sIHRoZSBzcGVlZCBvZiB5b3VyIEludGVybmV0IGNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgZmFjdG9ycywgdGhlIGJ1aWxkIHByb2Nlc3MgY291bGQgdGFrZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldmVyYWwgaG91cnMgdGhlIGZpcnN0IHRpbWUgeW91IHJ1biBpdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJzZXF1ZW50IGJ1aWxkcyBydW4gbXVjaCBmYXN0ZXIgc2luY2UgcGFydHMgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgYXJlIGNhY2hlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2Utc2F0bwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBleHBlcmllbmNlIGEgYnVpbGQgZXJyb3IgZHVlIHRvIHJlc291cmNlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wb3JhcmlseSBiZWluZyB1bmF2YWlsYWJsZSBhbmQgaXQgYXBwZWFycyB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIG5vdCBiZSBoYXZpbmcgdGhpcyBpc3N1ZSwgaXQgbWlnaHQgYmUgZHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBjb21iaW5hdGlvbiBvZiBhIDQuMysgTGludXgga2VybmVsIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IHZlcnNpb24gMjI4KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiBzZWUgdGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vdW5peC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMjUzOTAzL2NyZWF0aW5nLXRocmVhZHMtZmFpbHMtd2l0aC1yZXNvdXJjZS10ZW1wb3JhcmlseS11bmF2YWlsYWJsZS13aXRoLTQtMy1rZXJuZWwnPmxpbms8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyB3b3JrIGFyb3VuZCB0aGlzIGlzc3VlLCB5b3UgY2FuIHRyeSBlaXRoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnkgdGhlIGJ1aWxkIGFnYWluLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGlmeSB0aGUgIkRlZmF1bHRUYXNrc01heCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IHBhcmFtZXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHVuY29tbWVudGluZyBpdCBhbmQgc2V0dGluZyBpdCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmZpbml0eSIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgcGFyYW1ldGVyIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW0uY29uZjwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvc3lzdGVtZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gbW9zdCBzeXN0ZW1zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN1c2luZ3Bva3ktY29tcG9uZW50cy1iaXRiYWtlJz5CaXRCYWtlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwsIG9yIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwtY29tbWFuZCc+Qml0QmFrZSBDb21tYW5kPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIG90aGVyIHRhcmdldHMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2ltdWxhdGUgWW91ciBJbWFnZSBVc2luZyBRRU1VOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoaXMgcGFydGljdWxhciBpbWFnZSBpcyBidWlsdCwgeW91IGNhbiBzdGFydCBRRU1VCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgcnVuIHRoZSBpbWFnZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IHFlbXV4ODYKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGxlYXJuIG1vcmUgYWJvdXQgcnVubmluZyBRRU1VLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0iJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Ij5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhpdCBRRU1VOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBFeGl0IFFFTVUgYnkgZWl0aGVyIGNsaWNraW5nIG9uIHRoZSBzaHV0ZG93biBpY29uIG9yIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcgPGZpbGVuYW1lPkN0cmwtQzwvZmlsZW5hbWU+IGluIHRoZSBRRU1VCi0gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2NyaXB0IHdpbmRvdyBmcm9tIHdoaWNoIHlvdSBldm9rZWQgUUVNVS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGRpbmctYW4taW1hZ2UtZm9yLWhhcmR3YXJlJz4KLSAgICAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBhbiBJbWFnZSBmb3IgSGFyZHdhcmU8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYSBpZD0ncXMtbWlubm93Ym9hcmQtZXhhbXBsZSc+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGVwcyBzaG93IGhvdyBlYXN5IGl0IGlzIHRvIHNldCB1cCB0byBidWlsZCBhbgotICAgICAgICAgICAgICAgIGltYWdlIGZvciBhIG5ldyBtYWNoaW5lLgotICAgICAgICAgICAgICAgIFRoZXNlIHN0ZXBzIGJ1aWxkIGFuIGltYWdlIGZvciB0aGUgTWlubm93Qm9hcmQgVHVyYm90LCB3aGljaCBpcwotICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBhbmQgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiA8ZmlsZW5hbWU+aW50ZWwtY29yZWk3LTY0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmludGVsLWNvcmUyLTMyPC9maWxlbmFtZT4gQm9hcmQgU3VwcG9ydCBQYWNrYWdlcwotICAgICAgICAgICAgICAgIChCU1BzKS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIE1pbm5vd0JvYXJkIFR1cmJvdCBzaGlwcyB3aXRoIDY0LWJpdCBmaXJtd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBib2FyZCBpbiAzMi1iaXQgbW9kZSwgeW91IG11c3QKLSAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9maXJtd2FyZS5pbnRlbC5jb20vcHJvamVjdHMvbWlubm93Ym9hcmQtbWF4Jz4zMi1iaXQgZmlybXdhcmU8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIExvY2FsIENvcHkgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkaW5nIGFuIGltYWdlIGZvciB0aGUgTWlubm93Qm9hcmQgVHVyYm90IHJlcXVpcmVzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5naXQgY2xvbmU8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgYSBsb2NhbCBjb3B5IG9mIHRoZSByZXBvc2l0b3J5IGluc2lkZSB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGluIHRoaXMgZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCAkSE9NRS9wb2t5Ci0gICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL21ldGEtaW50ZWwKLSAgICAgQ2xvbmluZyBpbnRvICdtZXRhLWludGVsJy4uLgotICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDE0MDM5LCBkb25lLgotICAgICByZW1vdGU6IENvbXByZXNzaW5nIG9iamVjdHM6IDEwMCUgKDQ0NzEvNDQ3MSksIGRvbmUuCi0gICAgIHJlbW90ZTogVG90YWwgMTQwMzkgKGRlbHRhIDgxMzApLCByZXVzZWQgMTM4MzcgKGRlbHRhIDc5NDcpCi0gICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgxNDAzOS8xNDAzOSksIDQuMjcgTWlCIHwgMy45OCBNaUIvcywgZG9uZS4KLSAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoODEzMC84MTMwKSwgZG9uZS4KLSAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0IHdoZW4geW91IGNsb25lIGEgR2l0IHJlcG9zaXRvcnksIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIm1hc3RlciIgYnJhbmNoIGlzIGNoZWNrZWQgb3V0LgotICAgICAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHlvdSBidWlsZCB5b3VyIGltYWdlIHRoYXQgdXNlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbGF5ZXIsIHlvdSBtdXN0IGJlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdXJlIHRoYXQgYm90aCByZXBvc2l0b3JpZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgYXJlIHVzaW5nIHRoZSBzYW1lIHJlbGVhc2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB5b3UgdXNlZCB0aGUgPGZpbGVuYW1lPiZESVNUUk9fUkVMX1RBRzs8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgdGFnIHdoZW4geW91IGNoZWNrZWQgb3V0IHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGJ5IHRhZywgeW91IHNob3VsZCB1c2UgYQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgdGFnIHRoYXQgY29ycmVzcG9uZHMgd2l0aCB0aGUgcmVsZWFzZSB5b3UgdXNlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBuZWVkIHRvIGNoZWNrb3V0IG91dCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+Jk1FVEFJTlRFTFZFUlNJT047LSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjs8L2ZpbGVuYW1lPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCBhZnRlciBjbG9uaW5nIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgJEhPTUUvcG9reS9tZXRhLWludGVsCi0gICAgICQgZ2l0IGNoZWNrb3V0IHRhZ3MvJk1FVEFJTlRFTFZFUlNJT047LSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjsgLWIgbWV0YS1pbnRlbC0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047Ci0gICAgIFN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnbWV0YS1pbnRlbC0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047JwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIEdpdCA8ZmlsZW5hbWU+Y2hlY2tvdXQ8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgbG9jYWwgYnJhbmNoIG5hbWVkCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbC0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgaGF2ZSB0aGUgb3B0aW9uIHRvIG5hbWUgeW91ciBsb2NhbCBicmFuY2ggd2hhdGV2ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IGJ5IHByb3ZpZGluZyBhbnkgbmFtZSB5b3UgbGlrZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhLWludGVsLSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjsiCi0gICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgYWJvdmUgZXhhbXBsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29uZmlndXJlIHRoZSBCdWlsZDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVG8gY29uZmlndXJlIHRoZSBidWlsZCwgeW91IGVkaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlcywgYm90aCBvZiB3aGljaCBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlIDxmaWxlbmFtZT5idWlsZC9jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGEgcXVpY2sgd2F5IHRvIG1ha2UgdGhlIGVkaXRzLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IGNvbW1hbmQgdXNlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBhZGQtbGF5ZXI8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBhZGQgdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLCB3aGljaCBjb250YWlucyB0aGUgPGZpbGVuYW1lPmludGVsLWNvcmUqPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJTUHMgdG8gdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNlY29uZCBjb21tYW5kIHNlbGVjdHMgdGhlIEJTUCBieSBzZXR0aW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgJEhPTUUvcG9reS9idWlsZAotICAgICAkIGJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAiJEhPTUUvcG9reS9tZXRhLWludGVsIgotICAgICAkIGVjaG8gJ01BQ0hJTkUgPSAiaW50ZWwtY29yZWk3LTY0IicgPj4gY29uZi9sb2NhbC5jb25mCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgYSA2NC1iaXQgYnVpbGQsIHVzZSB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBlY2hvICdNQUNISU5FID0gImludGVsLWNvcmVpNy02NCInID4+IGNvbmYvbG9jYWwuY29uZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgMzItYml0IGltYWdlcywgdXNlIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGVjaG8gJ01BQ0hJTkUgPSAiaW50ZWwtY29yZTItMzIiJyA+PiBjb25mL2xvY2FsLmNvbmYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIGFuIEltYWdlIGZvciBNaW5ub3dCb2FyZAotICAgICAgICAgICAgICAgICAgICAgICAgVHVyYm90OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgdHlwZSBvZiBpbWFnZSB5b3UgYnVpbGQgZGVwZW5kcyBvbiB5b3VyIGdvYWxzLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBwcmV2aW91cyBidWlsZCBjcmVhdGVkIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBpbWFnZSwgd2hpY2ggaXMgYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHdpdGggU2F0byBzdXBwb3J0LgotICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgcG9zc2libGUgdG8gYnVpbGQgbWFueSBpbWFnZSB0eXBlcyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBNaW5ub3dCb2FyZCBUdXJib3QuCi0gICAgICAgICAgICAgICAgICAgICAgICBTb21lIHBvc3NpYmlsaXRpZXMgYXJlIDxmaWxlbmFtZT5jb3JlLWltYWdlLWJhc2U8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgY29uc29sZS1vbmx5IGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBjaG9pY2UgY291bGQgYmUgYQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lPC9maWxlbmFtZT4sIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBhbm90aGVyIGNvbnNvbGUtb25seSBpbWFnZSBidXQgaGFzIG1vcmUgZnVsbC1mZWF0dXJlcwotICAgICAgICAgICAgICAgICAgICAgICAgTGludXggc3lzdGVtIGZ1bmN0aW9uYWxpdHkgaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHR5cGVzIG9mIGltYWdlcyB5b3UgY2FuIGJ1aWxkIHVzaW5nIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1pbWFnZXMnPkltYWdlczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlY2F1c2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGFyZSBtaW5pbWFsIHRvIHNldCB1cAotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgc2Vjb25kIGJ1aWxkLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlLXVzZSBmaWxlcyBmcm9tIHByZXZpb3VzIGJ1aWxkcyBhcyBtdWNoIGFzIHBvc3NpYmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgUmUtdXNpbmcgZmlsZXMgbWVhbnMgdGhpcyBzZWNvbmQgYnVpbGQgd2lsbCBiZSBtdWNoIGZhc3RlcgotICAgICAgICAgICAgICAgICAgICAgICAgdGhhbiBhbiBpbml0aWFsIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLWJhc2U8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgaXMgYnVpbHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBjb3JlLWltYWdlLWJhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZXhwZXJpZW5jZSBhIGJ1aWxkIGVycm9yIGR1ZSB0byByZXNvdXJjZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcG9yYXJpbHkgYmVpbmcgdW5hdmFpbGFibGUgYW5kIGl0IGFwcGVhcnMgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBub3QgYmUgaGF2aW5nIHRoaXMgaXNzdWUsIGl0IG1pZ2h0IGJlIGR1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgY29tYmluYXRpb24gb2YgYSA0LjMrIExpbnV4IGtlcm5lbCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPiB2ZXJzaW9uIDIyOCsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gc2VlIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3VuaXguc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzI1MzkwMy9jcmVhdGluZy10aHJlYWRzLWZhaWxzLXdpdGgtcmVzb3VyY2UtdGVtcG9yYXJpbHktdW5hdmFpbGFibGUtd2l0aC00LTMta2VybmVsJz5saW5rPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZSwgeW91IGNhbiB0cnkgZWl0aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ5IHRoZSBidWlsZCBhZ2Fpbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RpZnkgdGhlICJEZWZhdWx0VGFza3NNYXgiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPiBwYXJhbWV0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB1bmNvbW1lbnRpbmcgaXQgYW5kIHNldHRpbmcgaXQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5maW5pdHkiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIHBhcmFtZXRlciBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL3N5c3RlbWQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIG1vc3Qgc3lzdGVtcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgYnVpbGQgY29tcGxldGVzLCB0aGUgcmVzdWx0aW5nIGNvbnNvbGUtb25seSBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgaXMgbG9jYXRlZCBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGhlcmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHRtcC9kZXBsb3kvaW1hZ2VzL2ludGVsLWNvcmVpNy02NC9jb3JlLWltYWdlLWJhc2UtaW50ZWwtY29yZWk3LTY0LndpYwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Xcml0ZSB0aGUgSW1hZ2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gd3JpdGUgdGhlIGltYWdlIGp1c3QgYnVpbHQgdG8gYSBib290YWJsZSBtZWRpYQotICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gYSBVU0Iga2V5LCBTQVRBIGRyaXZlLCBTRCBjYXJkLCBldGMuKSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZDwvZmlsZW5hbWU+IHV0aWxpdHk6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBkZCBpZj10bXAvZGVwbG95L2ltYWdlcy9pbnRlbC1jb3JlaTctNjQvY29yZS1pbWFnZS1iYXNlLWludGVsLWNvcmVpNy02NC53aWMgb2Y9VEFSR0VUX0RFVklDRQotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGNvbW1hbmQsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRBUkdFVF9ERVZJQ0U8L2ZpbGVuYW1lPiBpcyB0aGUgZGV2aWNlIG5vZGUgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBob3N0IG1hY2hpbmUgKGUuZy4gPGZpbGVuYW1lPi9kZXYvc2RjPC9maWxlbmFtZT4sIHdoaWNoCi0gICAgICAgICAgICAgICAgICAgICAgICBpcyBtb3N0IGxpa2VseSBhIFVTQiBzdGljaywgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L21tY2JsazA8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgbW9zdCBsaWtlbHkgYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNEIGNhcmQpLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Cb290IHRoZSBIYXJkd2FyZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGUgYm9vdCBkZXZpY2UgcHJvdmlzaW9uZWQsIHlvdSBjYW4gaW5zZXJ0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWEgaW50byB0aGUgTWlubm93Qm9hcmQgVHVyYm90IGFuZCBib290IHRoZSBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBib2FyZCBzaG91bGQgYXV0b21hdGljYWxseSBkZXRlY3QgdGhlIG1lZGlhIGFuZCBib290IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgYm9vdGxvYWRlciBhbmQgc3Vic2VxdWVudGx5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB0aGUgYm9hcmQgZG9lcyBub3QgYm9vdCBhdXRvbWF0aWNhbGx5LCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICBib290IGl0IG1hbnVhbGx5IGZyb20gdGhlIEVGSSBzaGVsbCBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTaGVsbD4gY29ubmVjdCAtcgotICAgICBTaGVsbD4gbWFwIC1yCi0gICAgIFNoZWxsPiBmczA6Ci0gICAgIFNoZWxsPiBib290eDY0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSAzMi1iaXQgaW1hZ2UgdXNlIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTaGVsbD4gYm9vdGlhMzIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3FzLW5leHQtc3RlcHMnPgotICAgICAgICA8dGl0bGU+TmV4dCBTdGVwczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJZiB5b3UgY29tcGxldGVkIGFsbCB0aGUgc3RlcHMgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24gdGhlbgotICAgICAgICAgICAgY29uZ3JhdHVsYXRpb25zIQotICAgICAgICAgICAgV2hhdCBub3c/Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIERlcGVuZGluZyBvbiB3aGF0IHlvdSBwcmltYXJ5IGludGVyZXN0cyBhcmUgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwKLSAgICAgICAgICAgIHlvdSBjb3VsZCBjb25zaWRlciBhbnkgb2YgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VmlzaXQgdGhlIFlvY3RvIFByb2plY3QgV2ViIFNpdGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG9mZmljaWFsCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3Q8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB3ZWIgc2l0ZSBjb250YWlucyBpbmZvcm1hdGlvbiBvbiB0aGUgZW50aXJlIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIFZpc2l0aW5nIHRoaXMgc2l0ZSBpcyBhIGdvb2Qgd2F5IHRvIGZhbWlsaWFyaXplIHlvdXJzZWxmCi0gICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIG92ZXJhbGwgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TG9vayBUaHJvdWdoIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLWludHJvJz5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGNvbnRhaW5zIHByb2NlZHVyYWwgaW5mb3JtYXRpb24gZ3JvdXBlZCB0bwotICAgICAgICAgICAgICAgICAgICBoZWxwIHlvdSBnZXQgc2V0IHVwLCB3b3JrIHdpdGggbGF5ZXJzLCBjdXN0b21pemUgaW1hZ2VzLAotICAgICAgICAgICAgICAgICAgICB3cml0ZSBuZXcgcmVjaXBlcywgd29yayB3aXRoIGxpYnJhcmllcywgYW5kIHVzZSBRRU1VLgotICAgICAgICAgICAgICAgICAgICBUaGUgaW5mb3JtYXRpb24gaXMgdGFzay1iYXNlZCBhbmQgc3BhbnMgdGhlIGJyZWFkdGggb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvb2sgVGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBtYW51YWw6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgZGVzY3JpYmVzIGhvdyB0byB1c2UgYm90aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLXVzaW5nLXRoZS1zdGFuZGFyZC1zZGsnPnN0YW5kYXJkIFNESzwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWV4dGVuc2libGUnPmV4dGVuc2libGUgU0RLPC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSB1c2VkIHByaW1hcmlseSBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGFsc28gcHJvdmlkZXMgZXhhbXBsZSB3b3JrZmxvd3MKLSAgICAgICAgICAgICAgICAgICAgdGhhdCB1c2UgdGhlIHBvcHVsYXIgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4KLSAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYW5kIHRoYXQgdXNlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3dvcmtmbG93LXVzaW5nLWVjbGlwc2UnPldvcmtmbG93IHVzaW5nIEVjbGlwc2XihKI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyN1c2luZy1kZXZ0b29sLWluLXlvdXItc2RrLXdvcmtmbG93Jz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGluIHlvdXIgU0RLIFdvcmtmbG93PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MZWFybiBBYm91dCBLZXJuZWwgRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gc2VlIGhvdyB0byB3b3JrIHdpdGggdGhlIGtlcm5lbCBhbmQKLSAgICAgICAgICAgICAgICAgICAgdW5kZXJzdGFuZCBZb2N0byBMaW51eCBrZXJuZWxzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNrZXJuZWwtZGV2LWludHJvJz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gaG93IHRvIHBhdGNoIHRoZQotICAgICAgICAgICAgICAgICAgICBrZXJuZWwsIG1vZGlmeSBrZXJuZWwgcmVjaXBlcywgYW5kIGNvbmZpZ3VyZSB0aGUga2VybmVsLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MZWFybiBBYm91dCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBsZWFybiBhYm91dCBCU1BzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcCc+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGFsc28gcHJvdmlkZXMgYW4gZXhhbXBsZSBCU1AgY3JlYXRpb24gd29ya2Zsb3cuCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjZGV2ZWxvcGluZy1hLWJvYXJkLXN1cHBvcnQtcGFja2FnZS1ic3AnPiJEZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxlYXJuIEFib3V0IFRvYXN0ZXI6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBpcyBhIHdlYiBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QncwotICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gdXNpbmcgdGhpcyB0eXBlIG9mIGludGVyZmFjZSB0bwotICAgICAgICAgICAgICAgICAgICBjcmVhdGUgaW1hZ2VzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsjdG9hc3Rlci1tYW51YWwtaW50cm8nPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SGF2ZSBBdmFpbGFibGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1tYW51YWwtaW50cm8nPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDo8L3VsaW5rPjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFVubGlrZSB0aGUgcmVzdCBvZiB0aGUgWW9jdG8gUHJvamVjdCBtYW51YWwgc2V0LCB0aGlzIG1hbnVhbAotICAgICAgICAgICAgICAgICAgICBpcyBjb21wcmlzZWQgb2YgbWF0ZXJpYWwgc3VpdGVkIGZvciByZWZlcmVuY2UgcmF0aGVyIHRoYW4KLSAgICAgICAgICAgICAgICAgICAgcHJvY2VkdXJlcy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdXNpbmdwb2t5Jz5idWlsZCBkZXRhaWxzPC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgIGEKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV2ZWxvcG1lbnQtY29uY2VwdHMnPmNsb3NlciBsb29rPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXQgaG93IHRoZSBwaWVjZXMgb2YgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgd29yayB0b2dldGhlciwgaW5mb3JtYXRpb24gb24gdmFyaW91cwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN0ZWNobmljYWwtZGV0YWlscyc+dGVjaG5pY2FsIGRldGFpbHM8L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgZ3VpZGFuY2Ugb24KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWlncmF0aW9uJz5taWdyYXRpbmcgdG8gYSBuZXdlciBZb2N0byBQcm9qZWN0IHJlbGVhc2U8L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlIG1hdGVyaWFsIG9uIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtc3RydWN0dXJlJz5kaXJlY3Rvcnkgc3RydWN0dXJlPC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzJz5jbGFzc2VzPC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MnPnRhc2tzPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgYWxzbyBjb250YWlucyBhIGZhaXJseQotICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaXZlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi12YXJpYWJsZXMtZ2xvc3NhcnknPmdsb3NzYXJ5IG9mIHZhcmlhYmxlczwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHVzZWQgd2l0aGluIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9hcnRpY2xlPgotPCEtLQotdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAotLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktbHNiLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktbHNiLmNvbmYKaW5kZXggMjRjZmIwOC4uZWNmZTVkMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWxzYi5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS1sc2IuY29uZgpAQCAtMTIsNCArMTIsNCBAQAogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9wbi1saW51eC15b2N0byA9ICIgZmVhdHVyZXMvbmZzZC9uZnNkLWVuYWJsZS5zY2MiCiAKICMgVXNlIHRoZSBMVFNJIEtlcm5lbCBmb3IgTFNCIFRlc3RpbmcKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX2xpbnV4c3RkYmFzZSA/PSAiNC45JSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX2xpbnV4c3RkYmFzZSA/PSAiNC4xNCUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LXRpbnkuY29uZgppbmRleCAyMDMyYmZkLi43YjIyYTEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKQEAgLTM4LDcgKzM4LDcgQEAKICMgRGlzdHJvIGNvbmZpZyBpcyBldmFsdWF0ZWQgYWZ0ZXIgdGhlIG1hY2hpbmUgY29uZmlnLCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkKICMgc2V0IHRoZSBrZXJuZWwgcHJvdmlkZXIgdG8gb3ZlcnJpZGUgYSBtYWNoaW5lIGNvbmZpZy4KIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA9ICJsaW51eC15b2N0by10aW55IgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8tdGlueSA/PSAiNC4xMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0by10aW55ID89ICI0LjE0JSIKIAogIyBXZSBjYW4gdXNlIHBhY2thZ2Vncm91cC1jb3JlLWJvb3QsIGJ1dCBpbiB0aGUgZnV0dXJlIHdlIG1heSBuZWVkIGEgbmV3IHBhY2thZ2Vncm91cC1jb3JlLXRpbnkKICNQT0tZX0RFRkFVTFRfRVhUUkFfUkRFUEVORFMgKz0gInBhY2thZ2Vncm91cC1jb3JlLWJvb3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCmluZGV4IDU3ZDAwYmMuLjdiMWYyNGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCkBAIC0xLDcgKzEsNyBAQAogRElTVFJPID0gInBva3kiCiBESVNUUk9fTkFNRSA9ICJQb2t5IChZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBEaXN0cm8pIgotRElTVFJPX1ZFUlNJT04gPSAiMi40LjIiCi1ESVNUUk9fQ09ERU5BTUUgPSAicm9ja28iCitESVNUUk9fVkVSU0lPTiA9ICIyLjUiCitESVNUUk9fQ09ERU5BTUUgPSAic3VtbyIKIFNES19WRU5ET1IgPSAiLXBva3lzZGsiCiBTREtfVkVSU0lPTiA6PSAiJHtAJyR7RElTVFJPX1ZFUlNJT059Jy5yZXBsYWNlKCdzbmFwc2hvdC0ke0RBVEV9Jywnc25hcHNob3QnKX0iCiAKQEAgLTIxLDcgKzIxLDcgQEAKIAogRElTVFJPX0ZFQVRVUkVTID89ICIke0RJU1RST19GRUFUVVJFU19ERUZBVUxUfSAke0RJU1RST19GRUFUVVJFU19MSUJDfSAke1BPS1lfREVGQVVMVF9ESVNUUk9fRkVBVFVSRVN9IgogCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xNCUiCiAKIFNES19OQU1FID0gIiR7RElTVFJPfS0ke1RDTElCQ30tJHtTREtfQVJDSH0tJHtJTUFHRV9CQVNFTkFNRX0tJHtUVU5FX1BLR0FSQ0h9IgogU0RLUEFUSCA9ICIvb3B0LyR7RElTVFJPfS8ke1NES19WRVJTSU9OfSIKQEAgLTY0LDE1ICs2NCwxMiBAQAogQ09OTkVDVElWSVRZX0NIRUNLX1VSSVMgPz0gImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIKIAogU0FOSVRZX1RFU1RFRF9ESVNUUk9TID89ICIgXAotICAgICAgICAgICAgcG9reS0yLjIgXG4gXAotICAgICAgICAgICAgcG9reS0yLjMgXG4gXAogICAgICAgICAgICAgcG9reS0yLjQgXG4gXAorICAgICAgICAgICAgcG9reS0yLjUgXG4gXAogICAgICAgICAgICAgdWJ1bnR1LTE1LjA0IFxuIFwKICAgICAgICAgICAgIHVidW50dS0xNi4wNCBcbiBcCiAgICAgICAgICAgICB1YnVudHUtMTYuMTAgXG4gXAogICAgICAgICAgICAgdWJ1bnR1LTE3LjA0IFxuIFwKLSAgICAgICAgICAgIGZlZG9yYS0yNCBcbiBcCi0gICAgICAgICAgICBmZWRvcmEtMjUgXG4gXAogICAgICAgICAgICAgZmVkb3JhLTI2IFxuIFwKICAgICAgICAgICAgIGNlbnRvcy03IFxuIFwKICAgICAgICAgICAgIGRlYmlhbi04IFxuIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKaW5kZXggMjZkN2MzYi4uMzc2MWY4NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKQEAgLTksNyArOSw3IEBACiBCQkZJTEVfUEFUVEVSTl95b2N0byA9ICJeJHtMQVlFUkRJUn0vIgogQkJGSUxFX1BSSU9SSVRZX3lvY3RvID0gIjUiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF95b2N0byA9ICJyb2NrbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF95b2N0byA9ICJzdW1vIgogCiAjIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW5jcmVtZW50ZWQgb24gc2lnbmlmaWNhbnQgY2hhbmdlcyB0aGF0IHdpbGwKICMgY2F1c2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBsYXllcnMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQppbmRleCA5YTU2MGRmLi5hYThkZjQwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCkBAIC0yOCw3ICsyOCw3IEBACiAjIFRoZXJlIGFyZSBhbHNvIHRoZSBmb2xsb3dpbmcgaGFyZHdhcmUgYm9hcmQgdGFyZ2V0IG1hY2hpbmVzIGluY2x1ZGVkIGZvciAKICMgZGVtb25zdHJhdGlvbiBwdXJwb3NlczoKICMKLSNNQUNISU5FID89ICJiZWFnbGVib25lIgorI01BQ0hJTkUgPz0gImJlYWdsZWJvbmUteW9jdG8iCiAjTUFDSElORSA/PSAiZ2VuZXJpY3g4NiIKICNNQUNISU5FID89ICJnZW5lcmljeDg2LTY0IgogI01BQ0hJTkUgPz0gIm1wYzgzMTVlLXJkYiIKQEAgLTIxOCw2ICsyMTgsMTcgQEAKICNmaWxlOi8vLiogaHR0cDovL3NvbWVzZXJ2ZXIudGxkL3NoYXJlL3NzdGF0ZS9QQVRIO2Rvd25sb2FkZmlsZW5hbWU9UEFUSCBcbiBcCiAjZmlsZTovLy4qIGZpbGU6Ly8vc29tZS9sb2NhbC9kaXIvc3N0YXRlL1BBVEgiCiAKKyMKKyMgWW9jdG8gUHJvamVjdCBTU3RhdGUgTWlycm9yCisjCisjIFRoZSBZb2N0byBQcm9qZWN0IGhhcyBwcmVidWlsdCBhcnRlZmFjdHMgYXZhaWxhYmxlIGZvciBpdHMgcmVsZWFzZXMsIHlvdSBjYW4gZW5hYmxlCisjIHVzZSBvZiB0aGVzZSBieSB1bmNvbW1lbnRpbmcgdGhlIGZvbGxvd2luZyBsaW5lLiBUaGlzIHdpbGwgbWVhbiB0aGUgYnVpbGQgdXNlcworIyB0aGUgbmV0d29yayB0byBjaGVjayBmb3IgYXJ0ZWZhY3RzIGF0IHRoZSBzdGFydCBvZiBidWlsZHMsIHdoaWNoIGRvZXMgc2xvdyBpdCBkb3duCisjIGVxdWFsbHksIGl0IHdpbGwgYWxzbyBzcGVlZCB1cCB0aGUgYnVpbGRzIGJ5IG5vdCBoYXZpbmcgdG8gYnVpbGQgdGhpbmdzIGlmIHRoZXkgYXJlCisjIHByZXNlbnQgaW4gdGhlIGNhY2hlLiBJdCBhc3N1bWVzIHlvdSBjYW4gZG93bmxvYWQgc29tZXRoaW5nIGZhc3RlciB0aGFuIHlvdSBjYW4gYnVpbGQgaXQKKyMgd2hpY2ggd2lsbCBkZXBlbmQgb24geW91ciBuZXR3b3JrLgorIworI1NTVEFURV9NSVJST1JTID89ICJmaWxlOi8vLiogaHR0cDovL3NzdGF0ZS55b2N0b3Byb2plY3Qub3JnLzIuNS9QQVRIO2Rvd25sb2FkZmlsZW5hbWU9UEFUSCIKIAogIwogIyBRZW11IGNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZgppbmRleCAyYTcxODk1Li5mNTc0YTUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvY29uZi9sYXllci5jb25mCkBAIC05LDQgKzksNCBAQAogQkJGSUxFX1BBVFRFUk5fc2VsZnRlc3QgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV9zZWxmdGVzdCA9ICI1IgogCi1MQVlFUlNFUklFU19DT01QQVRfc2VsZnRlc3QgPSAicm9ja28iCitMQVlFUlNFUklFU19DT01QQVRfc2VsZnRlc3QgPSAic3VtbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1sb2NhbC9maWxlMSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1sb2NhbC9maWxlMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGJkY2ZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC10ZXN0LWxvY2FsL2ZpbGUxCkBAIC0wLDAgKzEgQEAKK1RoZSBmaXJzdCBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXRlc3QtbG9jYWwvZmlsZTIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXRlc3QtbG9jYWwvZmlsZTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdlMjQxNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1sb2NhbC9maWxlMgpAQCAtMCwwICsxIEBACitUaGUgc2Vjb25kIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1sb2NhbF82LjAzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC10ZXN0LWxvY2FsXzYuMDMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM3N2NiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1sb2NhbF82LjAzLmJiCkBAIC0wLDAgKzEsMTYgQEAKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCisKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL3N5c2xpbnV4LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9maWxlMSBcCisgICAgICAgICAgIGZpbGU6Ly9maWxlMiIKKworU1JDX1VSSVttZDVzdW1dID0gIjkyYTI1M2RmOTIxMWU5YzIwMTcyNzk2ZWNmMzg4ZjEzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI2ZDM5ODZkMmJlYTEwOWQ1ZGMwZTRmOGM0ODIyYTQ1OTI3NmNmMDIxMTI1ZThjOWYyM2MzY2NhNWQ4Yzg1MGUiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKKworUyA9ICIke1dPUktESVJ9L3N5c2xpbnV4LSR7UFZ9IgorCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9pbWFnZXMvd2ljLWltYWdlLW1pbmltYWwud2tzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2ltYWdlcy93aWMtaW1hZ2UtbWluaW1hbC53a3MKaW5kZXggOTQxMGI2OC4uYWU2OWNiNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2ltYWdlcy93aWMtaW1hZ2UtbWluaW1hbC53a3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2ltYWdlcy93aWMtaW1hZ2UtbWluaW1hbC53a3MKQEAgLTQsNiArNCw3IEBACiAKIHBhcnQgL2Jvb3QgLS1zb3VyY2UgYm9vdGltZy1wY2Jpb3MgLS1vbmRpc2sgc2RhIC0tbGFiZWwgYm9vdCAtLWFjdGl2ZSAtLWFsaWduIDEwMjQKIHBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RhIC0tZnN0eXBlPWV4dDQgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQgLS11c2UtdXVpZAorcGFydCAvbWVkaWEgLS1zb3VyY2Ugcm9vdGZzIC0tcm9vdGZzLWRpcj13aWMtaW1hZ2UtbWluaW1hbCAtLW9uZGlzayBzZGEgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHV1aWQtdGVzdCAtLWFsaWduIDEwMjQgLS11c2UtdXVpZCAtLWZzdXVpZCAyYzcxZWYwNi1hODFkLTQ3MzUtOWQzYS0zNzliNjljNmJkYmEKIHBhcnQgL21udCAtLXNvdXJjZSByb290ZnMgLS1yb290ZnMtZGlyPXdpYy1pbWFnZS1taW5pbWFsIC0tb25kaXNrIHNkYSAtLWZzdHlwZT1leHQ0IC0tbGFiZWwgY29yZSAtLWFsaWduIDEwMjQKIAogYm9vdGxvYWRlciAtLXB0YWJsZSBncHQgLS10aW1lb3V0PTAgIC0tYXBwZW5kPSJyb290d2FpdCBjb25zb2xlPXR0eTAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbWFuLWRiL2ZpbGVzLzAwMDEtVGVzdC1wYXRjaC1oZXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L21hbi1kYi9maWxlcy8wMDAxLVRlc3QtcGF0Y2gtaGVyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWQ1ZWFiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L21hbi1kYi9maWxlcy8wMDAxLVRlc3QtcGF0Y2gtaGVyZS5wYXRjaApAQCAtMCwwICsxLDIyIEBACitGcm9tIGVmYzg4MzFmMzMxMDZlNmI0OGRlOGU2MTJjMmQ4MTZmZTdkMWFlNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgOSBGZWIgMjAxOCAxNzozNzo0OCArMDIwMAorU3ViamVjdDogW1BBVENIXSBUZXN0IHBhdGNoIGhlcmUhCisKK1RoaXMgaXMgYW4gaW52YWxpZCBwYXRjaCB1c2VkIGJ5IG9lLXNlbGZ0ZXN0CistLS0KKyBSRUFETUUgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQoraW5kZXggNDhmZmY1Ny4uMjZkMTIzNCAxMDA2NDQKKy0tLSBhL1JFQURNRQorKysrIGIvUkVBRE1FCitAQCAtMSwzICsxLDQgQEAKKytUaGlzIGlzIGEgdGVzdCBwYXRjaCBmb3IgcHVycG9zZXMgb2Ygb2Utc2VsZnRlc3QKKyBUSElTIExJTkUgTUFLRVMgVEhJUyBQQVRDSCBJTlZBTElEIFJFQURNRSBmb3IgdGhlIG1hbi1kYiBtYW51YWwgcGFnZXIgc3VpdGUKKyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbWFuL21hbl8xLjZnLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L21hbi1kYi9tYW4tZGJfJS5iYmFwcGVuZApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L21hbi9tYW5fMS42Zy5iYmFwcGVuZApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L21hbi1kYi9tYW4tZGJfJS5iYmFwcGVuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L21hbi9tYW4vbWFuLTEuNWgxLW1ha2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbWFuL21hbi9tYW4tMS41aDEtbWFrZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBkNTliNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbWFuL21hbi9tYW4tMS41aDEtbWFrZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVRlc3QgcGF0Y2ggaGVyZSEKLVRoaXMgaXMgaW52YWxpZCBwYXRjaCB1c2VkIGJ5IHRlc3RzIGluIHNjcmlwdHMvbGliL3NlbGZ0ZXN0cy4KLQotLS0tIG1hbi0xLjVnL21hbi9NYWtlZmlsZS5pbi5taWtlCUZyaSBBcHIgIDkgMTM6MzU6NTQgMTk5OQotKysrIG1hbi0xLjVnL21hbi9NYWtlZmlsZS5pbglGcmkgQXByICA5IDEzOjM2OjQ1IDE5OTkKLUBAIC0xLDggKzEsOCBAQAotICNNQUtFIFRISVMgUEFUQ0ggSU5WQUxJRAotIE1BTjEgPSBtYW4gd2hhdGlzIGFwcm9wb3MKLS1NQU41ID0gbWFuLmNvbmYKLStNQU41ID0gbWFuLmNvbmZpZwotIE1BTjggPSBtYWtld2hhdGlzCi0tQUxMID0gbWFuLjEgd2hhdGlzLjEgYXByb3Bvcy4xIG1hbi5jb25mLjUKLStBTEwgPSBtYW4uMSB3aGF0aXMuMSBhcHJvcG9zLjEgbWFuLmNvbmZpZy41Ci0gTUFZQkU4ID0gbWFrZXdoYXRpcwotIAotIC5TVUZGSVhFUzogLm1hbiAuMSAuNSAuOApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3Bvc3RpbnN0L3Bvc3RpbnN0XzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9wb3N0aW5zdC9wb3N0aW5zdF8xLjAuYmIKaW5kZXggNmQ0OTczNC4uOTEzYmZhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3Bvc3RpbnN0L3Bvc3RpbnN0XzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvcG9zdGluc3QvcG9zdGluc3RfMS4wLmJiCkBAIC0xLDEyNiArMSw3MiBAQAorU1VNTUFSWSA9ICJQYWNrYWdlcyB0byBleGVyY2lzZSBwb3N0aW5zdGFsbCBmdW5jdGlvbnMiCiBMSUNFTlNFID0gIk1JVCIKLUFMTE9XX0VNUFRZXyR7UE59LWF0LXJvb3RmcyA9ICIxIgorCitpbmhlcml0IGFsbGFyY2gKKworUEFDS0FHRVMgPSAiJHtQTn0tcm9vdGZzICR7UE59LWRlbGF5ZWQtYSAke1BOfS1kZWxheWVkLWIgJHtQTn0tcm9vdGZzLWZhaWxpbmciCisKK0FMTE9XX0VNUFRZXyR7UE59LXJvb3RmcyA9ICIxIgogQUxMT1dfRU1QVFlfJHtQTn0tZGVsYXllZC1hID0gIjEiCiBBTExPV19FTVBUWV8ke1BOfS1kZWxheWVkLWIgPSAiMSIKLUFMTE9XX0VNUFRZXyR7UE59LWRlbGF5ZWQtZCA9ICIxIgotQUxMT1dfRU1QVFlfJHtQTn0tZGVsYXllZC1wID0gIjEiCi1BTExPV19FTVBUWV8ke1BOfS1kZWxheWVkLXQgPSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LXJvb3Rmcy1mYWlsaW5nID0gIjEiCiAKLVBBQ0tBR0VTICs9ICIke1BOfS1hdC1yb290ZnMgJHtQTn0tZGVsYXllZC1hICR7UE59LWRlbGF5ZWQtYiAke1BOfS1kZWxheWVkLWQgJHtQTn0tZGVsYXllZC1wICR7UE59LWRlbGF5ZWQtdCIKLVBST1ZJREVTICs9ICIke1BOfS1hdC1yb290ZnMgJHtQTn0tZGVsYXllZC1hICR7UE59LWRlbGF5ZWQtYiAke1BOfS1kZWxheWVkLWQgJHtQTn0tZGVsYXllZC1wICR7UE59LWRlbGF5ZWQtdCIKLUZJTEVTXyR7UE59LWRlbGF5ZWQtYSA9ICIiCi1GSUxFU18ke1BOfS1kZWxheWVkLWIgPSAiIgotRklMRVNfJHtQTn0tZGVsYXllZC1kID0gIiIKLUZJTEVTXyR7UE59LWRlbGF5ZWQtcCA9ICIiCi1GSUxFU18ke1BOfS1kZWxheWVkLXQgPSAiIgotCi0jIFJ1bnRpbWUgZGVwZW5kZW5jaWVzCi1SREVQRU5EU18ke1BOfS1kZWxheWVkLWEgPSAiJHtQTn0tYXQtcm9vdGZzIgorUkRFUEVORFNfJHtQTn0tZGVsYXllZC1hID0gIiR7UE59LXJvb3RmcyIKIFJERVBFTkRTXyR7UE59LWRlbGF5ZWQtYiA9ICIke1BOfS1kZWxheWVkLWEiCi1SREVQRU5EU18ke1BOfS1kZWxheWVkLWQgPSAiJHtQTn0tZGVsYXllZC1iIgotUkRFUEVORFNfJHtQTn0tZGVsYXllZC1wID0gIiR7UE59LWRlbGF5ZWQtZCIKLVJERVBFTkRTXyR7UE59LWRlbGF5ZWQtdCA9ICIke1BOfS1kZWxheWVkLXAiCiAKLSMgTWFpbiByZWNpcGUgcG9zdC1pbnN0YWxsCi1wa2dfcG9zdGluc3RfJHtQTn0tYXQtcm9vdGZzICgpIHsKLSAgICB0ZmlsZT0iL2V0Yy9wb3N0aW5zdGEtdGVzdCIKLSAgICB0b3VjaCAiJEQiL3RoaXMtd2FzLWNyZWF0ZWQtYXQtcm9vdGZzdGltZQotICAgIGlmIHRlc3QgIngkRCIgIT0gIngiIHRoZW4KLSAgICAgICAgIyBOZWVkIHRvIHJ1biBvbiBmaXJzdCBib290CitURVNURElSID0gIiR7c3lzY29uZmRpcn0vcG9zdGluc3QtdGVzdCIKKworIyBBdCByb290ZnMgdGltZSB0b3VjaCAkVEVTVERJUi9yb290ZnMuICBFcnJvcnMgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIG9yCisjIGlmIHRoZSBmdW5jdGlvbiBydW5zIG9uIGZpcnN0IGJvb3QuCitwa2dfcG9zdGluc3RfJHtQTn0tcm9vdGZzICgpIHsKKyAgICBzZXQgLWUKKworICAgIGlmIFsgLXogIiREIiBdOyB0aGVuCisgICAgICAgIGVjaG8gIiR7UE59LXJvb3RmcyBzaG91bGQgaGF2ZSBmaW5pc2hlZCBhdCByb290ZnMgdGltZSIKICAgICAgICAgZXhpdCAxCi0gICAgZWxzZQotICAgICAgICBlY2hvICJsZXRzIHdyaXRlIHBvc3RpbnN0IiA+ICR0ZmlsZQogICAgIGZpCi19CiAKLSMgRGVwZW5kZW5jeSByZWNpcGVzIHBvc3QtaW5zdGFsbHMKLXBrZ19wb3N0aW5zdF8ke1BOfS1kZWxheWVkLWEgKCkgewotICAgIGVmaWxlPSIvZXRjL3Bvc3RpbnN0LXRlc3QiCi0gICAgdGZpbGU9Ii9ldGMvcG9zdGluc3RhLXRlc3QiCi0gICAgcmRlcHM9InBvc3RpbnN0IgotCi0gICAgaWYgdGVzdCAieCREIiAhPSAieCI7IHRoZW4KLSAgICAgICMgTmVlZCB0byBydW4gb24gZmlyc3QgYm9vdAotICAgICAgZXhpdCAxCi0gICAgZWxzZQotICAgICAgdG91Y2ggL2V0Yy90aGlzLXdhcy1jcmVhdGVkLWF0LWZpcnN0LWJvb3QKLSAgICAgIGlmIHRlc3QgLWUgJGVmaWxlIDsgdGhlbgotICAgICAgICBlY2hvICdzdWNjZXNzJyA+ICR0ZmlsZQotICAgICAgZWxzZQotICAgICAgICBlY2hvICdmYWlsIHRvIGluc3RhbGwgJHJkZXBzIGZpcnN0IScgPiYyCisgICAgaWYgWyAtZSAkRCR7VEVTVERJUn0vcm9vdGZzIF07IHRoZW4KKyAgICAgICAgZWNobyAiJEQke1RFU1RESVJ9L3Jvb3RmcyBleGlzdHMsIGJ1dCBzaG91bGQgbm90IgogICAgICAgICBleGl0IDEKLSAgICAgIGZpCi0gICBmaQorICAgIGZpCisKKyAgICBta2RpciAtcCAkRCR7VEVTVERJUn0KKyAgICB0b3VjaCAkRCR7VEVTVERJUn0vcm9vdGZzCiB9CiAKLXBrZ19wb3N0aW5zdF8ke1BOfS1kZWxheWVkLWIgKCkgewotICAgIGVmaWxlPSIvZXRjL3Bvc3RpbnN0YS10ZXN0IgotICAgIHRmaWxlPSIvZXRjL3Bvc3RpbnN0Yi10ZXN0IgotICAgIHJkZXBzPSJwb3N0aW5zdGEiCisjIERlcGVuZHMgb24gcm9vdGZzLCBkZWxheXMgdW50aWwgZmlyc3QgYm9vdCwgdmVyaWZpZXMgdGhhdCB0aGUgcm9vdGZzIGZpbGUgd2FzCisjIHdyaXR0ZW4uCitwa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0tZGVsYXllZC1hICgpIHsKKyAgICBzZXQgLWUKIAotICAgIGlmIHRlc3QgIngkRCIgIT0gIngiOyB0aGVuCi0gICAgICAjIE5lZWQgdG8gcnVuIG9uIGZpcnN0IGJvb3QKLSAgICAgIGV4aXQgMQotICAgIGVsc2UKLSAgICAgIGlmIHRlc3QgLWUgJGVmaWxlIDsgdGhlbgotICAgICAgICBlY2hvICdzdWNjZXNzJyA+ICR0ZmlsZQotICAgICAgZWxzZQotICAgICAgICBlY2hvICdmYWlsIHRvIGluc3RhbGwgJHJkZXBzIGZpcnN0IScgPiYyCisgICAgaWYgWyAhIC1lICR7VEVTVERJUn0vcm9vdGZzIF07IHRoZW4KKyAgICAgICAgZWNobyAiJHtQTn0tZGVsYXllZC1hOiAke1RFU1RESVJ9L3Jvb3RmcyBub3QgZm91bmQiCiAgICAgICAgIGV4aXQgMQotICAgICAgZmkKLSAgIGZpCisgICAgZmkKKworICAgIHRvdWNoICR7VEVTVERJUn0vZGVsYXllZC1hCiB9CiAKLXBrZ19wb3N0aW5zdF8ke1BOfS1kZWxheWVkLWQgKCkgewotICAgIGVmaWxlPSIvZXRjL3Bvc3RpbnN0Yi10ZXN0IgotICAgIHRmaWxlPSIvZXRjL3Bvc3RpbnN0ZC10ZXN0IgotICAgIHJkZXBzPSJwb3N0aW5zdGIiCisjIERlcGVuZHMgb24gZGVsYXllZC1hLCBkZWxheXMgdW50aWwgZmlyc3QgYm9vdCwgdmVyaWZpZXMgdGhhdCB0aGUgZGVsYXllZC1hIGZpbGUgd2FzCisjIHdyaXR0ZW4uIFRoaXMgdmVyaWZpZXMgdGhlIG9yZGVyaW5nIGJldHdlZW4gZGVsYXllZCBwb3N0aW5zdHMuCitwa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0tZGVsYXllZC1iICgpIHsKKyAgICBzZXQgLWUKIAotICAgIGlmIHRlc3QgIngkRCIgIT0gIngiOyB0aGVuCi0gICAgICAjIE5lZWQgdG8gcnVuIG9uIGZpcnN0IGJvb3QKLSAgICAgIGV4aXQgMQotICAgIGVsc2UKLSAgICAgIGlmIHRlc3QgLWUgJGVmaWxlIDsgdGhlbgotICAgICAgICBlY2hvICdzdWNjZXNzJyA+ICR0ZmlsZQotICAgICAgZWxzZQotICAgICAgICBlY2hvICdmYWlsIHRvIGluc3RhbGwgJHJkZXBzIGZpcnN0IScgPiYyCisgICAgaWYgWyAhIC1lICR7VEVTVERJUn0vZGVsYXllZC1hIF07IHRoZW4KKyAgICAgICAgZWNobyAiJHtQTn0tZGVsYXllZC1iOiAke1RFU1RESVJ9L2RlbGF5ZWQtYSBub3QgZm91bmQiCiAgICAgICAgIGV4aXQgMQotICAgICAgZmkKLSAgIGZpCisgICAgZmkKKworICAgIHRvdWNoICR7VEVTVERJUn0vZGVsYXllZC1iCiB9CiAKLXBrZ19wb3N0aW5zdF8ke1BOfS1kZWxheWVkLXAgKCkgewotICAgIGVmaWxlPSIvZXRjL3Bvc3RpbnN0ZC10ZXN0IgotICAgIHRmaWxlPSIvZXRjL3Bvc3RpbnN0cC10ZXN0IgotICAgIHJkZXBzPSJwb3N0aW5zdGQiCi0KLSAgICBpZiB0ZXN0ICJ4JEQiICE9ICJ4IjsgdGhlbgotICAgICAgIyBOZWVkIHRvIHJ1biBvbiBmaXJzdCBib290Ci0gICAgICBleGl0IDEKLSAgICBlbHNlCi0gICAgICBpZiB0ZXN0IC1lICRlZmlsZSA7IHRoZW4KLSAgICAgICAgZWNobyAnc3VjY2VzcycgPiAkdGZpbGUKLSAgICAgIGVsc2UKLSAgICAgICAgZWNobyAnZmFpbCB0byBpbnN0YWxsICRyZGVwcyBmaXJzdCEnID4mMgotICAgICAgICBleGl0IDEKLSAgICAgIGZpCi0gICBmaQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0tZGVsYXllZC10ICgpIHsKLSAgICBlZmlsZT0iL2V0Yy9wb3N0aW5zdHAtdGVzdCIKLSAgICB0ZmlsZT0iL2V0Yy9wb3N0aW5zdHQtdGVzdCIKLSAgICByZGVwcz0icG9zdGluc3RwIgotCi0gICAgaWYgdGVzdCAieCREIiAhPSAieCI7IHRoZW4KLSAgICAgICMgTmVlZCB0byBydW4gb24gZmlyc3QgYm9vdAotICAgICAgZXhpdCAxCi0gICAgZWxzZQotICAgICAgaWYgdGVzdCAtZSAkZWZpbGUgOyB0aGVuCi0gICAgICAgICAgZWNobyAnc3VjY2VzcycgPiAkdGZpbGUKLSAgICAgIGVsc2UKLSAgICAgICAgICBlY2hvICdmYWlsIHRvIGluc3RhbGwgJHJkZXBzIGZpcnN0IScgPiYyCi0gICAgICAgICAgZXhpdCAxCi0gICAgICBmaQotICAgZmkKKyMgVGhpcyBzY3JpcHRsZXQgaW50ZW50aW9uYWxseSBpbmNsdWRlcyBhIGJvZ3VzIGNvbW1hbmQgaW4gdGhlIG1pZGRsZSB0byB0ZXN0IAorIyB0aGF0IHdlIGNhdGNoIGFuZCByZXBvcnQgc3VjaCBlcnJvcnMgcHJvcGVybHkuCitwa2dfcG9zdGluc3RfJHtQTn0tcm9vdGZzLWZhaWxpbmcgKCkgeworICAgIG1rZGlyIC1wICREJHtURVNURElSfQorICAgIHRvdWNoICREJHtURVNURElSfS9yb290ZnMtYmVmb3JlLWZhaWx1cmUKKyAgICBydW5fYV9yZWFsbHlfYnJva2VuX2NvbW1hbmQKKyAgICAjIFNjcmlwdGxldCBleGVjdXRpb24gc2hvdWxkIHN0b3AgaGVyZTsgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBhcmUgTk9UIHN1cHBvc2VkIHRvIHJ1bi4KKyAgICAjIChvZS1zZWxmdGVzdCBjaGVja3MgZm9yIGl0KS4KKyAgICB0b3VjaCAkRCR7VEVTVERJUn0vcm9vdGZzLWFmdGVyLWZhaWx1cmUKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1lZC9zZWxmdGVzdC1lZF8xLjE0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtZWQvc2VsZnRlc3QtZWRfMS4xNC4xLmJiCmluZGV4IDYyOTMxYzQuLjhhMmI1NjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1lZC9zZWxmdGVzdC1lZF8xLjE0LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LWVkL3NlbGZ0ZXN0LWVkXzEuMTQuMS5iYgpAQCAtMTIsNiArMTIsNyBAQAogYmluZGlyID0gIiR7YmFzZV9iaW5kaXJ9IgogCiBTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvZWQtJHtQVn0udGFyLmx6IgorUkVDSVBFX05PX1VQREFURV9SRUFTT04gPSAiVGhpcyByZWNpcGUgaXMgdXNlZCBpbiBzZWxmdGVzdCBhbmQgc2hvdWxkbid0IGJlIHVwZGF0ZWQgb3RoZXJ3aXNlIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiN2Y0YTU0ZmE3ZjM2NjQ3OWYwMzY1NGI4YWY2NDVmZDAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmZiOTdlYjhmMmEyYjVhNzFhOWI5N2UzODcyYWRjZTk1M2FhMWI4OTU4ZTA0YzViN2JmMTFkNTU2ZjMyNTUyYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZgppbmRleCBhMTU1MTZhLi40ZTg2OTJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mCkBAIC0xNCw0ICsxNCw0IEBACiAKIExBWUVSREVQRU5EU19za2VsZXRvbiA9ICJjb3JlIgogCi1MQVlFUlNFUklFU19DT01QQVRfc2tlbGV0b24gPSAicm9ja28iCitMQVlFUlNFUklFU19DT01QQVRfc2tlbGV0b24gPSAic3VtbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNrZWxldG9uL3JlY2lwZXMta2VybmVsL2hlbGxvLW1vZC9oZWxsby1tb2RfMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2tlbGV0b24vcmVjaXBlcy1rZXJuZWwvaGVsbG8tbW9kL2hlbGxvLW1vZF8wLjEuYmIKaW5kZXggYjE0MGIwYS4uM2QzMzQ0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2tlbGV0b24vcmVjaXBlcy1rZXJuZWwvaGVsbG8tbW9kL2hlbGxvLW1vZF8wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2tlbGV0b24vcmVjaXBlcy1rZXJuZWwvaGVsbG8tbW9kL2hlbGxvLW1vZF8wLjEuYmIKQEAgLTEzLDMgKzEzLDUgQEAKIAogIyBUaGUgaW5oZXJpdCBvZiBtb2R1bGUuYmJjbGFzcyB3aWxsIGF1dG9tYXRpY2FsbHkgbmFtZSBtb2R1bGUgcGFja2FnZXMgd2l0aAogIyAia2VybmVsLW1vZHVsZS0iIHByZWZpeCBhcyByZXF1aXJlZCBieSB0aGUgb2UtY29yZSBidWlsZCBlbnZpcm9ubWVudC4KKworUlBST1ZJREVTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLWhlbGxvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL1JFQURNRS5oYXJkd2FyZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9SRUFETUUuaGFyZHdhcmUKaW5kZXggODRjNWFmYS4uZDhkMmEwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL1JFQURNRS5oYXJkd2FyZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvUkVBRE1FLmhhcmR3YXJlCkBAIC0yNyw3ICsyNyw3IEBACiAKIFRoZSBmb2xsb3dpbmcgYm9hcmRzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIG1ldGEteW9jdG8tYnNwIGxheWVyOgogCi0gICogVGV4YXMgSW5zdHJ1bWVudHMgQmVhZ2xlYm9uZSAoYmVhZ2xlYm9uZSkKKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBCZWFnbGVib25lIChiZWFnbGVib25lLXlvY3RvKQogICAqIEZyZWVzY2FsZSBNUEM4MzE1RS1SREIgKG1wYzgzMTVlLXJkYikKICAgKiBVYmlxdWl0aSBOZXR3b3JrcyBFZGdlUm91dGVyIExpdGUgKGVkZ2Vyb3V0ZXIpCiAgICogR2VuZXJhbCBJQSBwbGF0Zm9ybXMgKGdlbmVyaWN4ODYgYW5kIGdlbmVyaWN4ODYtNjQpCkBAIC0xMjAsNyArMTIwLDcgQEAKICAgICAgICBkZCBjb21tYW5kIHRvIHdyaXRlIHRoZSBpbWFnZSB0byBhIFVTQiBzdGljay4KIAogCi1UZXhhcyBJbnN0cnVtZW50cyBCZWFnbGVib25lIChiZWFnbGVib25lKQorVGV4YXMgSW5zdHJ1bWVudHMgQmVhZ2xlYm9uZSAoYmVhZ2xlYm9uZS15b2N0bykKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIFRoZSBCZWFnbGVib25lIGlzIGFuIEFSTSBDb3J0ZXgtQTggZGV2ZWxvcG1lbnQgYm9hcmQgd2l0aCBVU0IsIEV0aGVybmV0LCAyRC8zRApAQCAtMTUxLDcgKzE1MSw3IEBACiAKICAgMi4gVXNlIHRoZSAiZGQiIHV0aWxpdHkgdG8gd3JpdGUgdGhlIGltYWdlIHRvIHRoZSBTRCBjYXJkLiBGb3IgZXhhbXBsZToKIAotICAgICAjIGRkIGNvcmUtaW1hZ2UtbWluaW1hbC1iZWFnbGVib25lLndpYyBvZj0vZGV2L3NkYgorICAgICAjIGRkIGNvcmUtaW1hZ2UtbWluaW1hbC1iZWFnbGVib25lLXlvY3RvLndpYyBvZj0vZGV2L3NkYgogCiAgIDMuIEluc2VydCB0aGUgU0QgY2FyZCBpbnRvIHRoZSBCZWFnbGVib25lIGFuZCBib290IHRoZSBib2FyZC4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL2xheWVyLmNvbmYKaW5kZXggN2I1NjVmMi4uNjQ3MjIzOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCkBAIC04LDUgKzgsNSBAQAogQkJGSUxFX0NPTExFQ1RJT05TICs9ICJ5b2N0b2JzcCIKIEJCRklMRV9QQVRURVJOX3lvY3RvYnNwID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfeW9jdG9ic3AgPSAiNSIKLUxBWUVSVkVSU0lPTl95b2N0b2JzcCA9ICIzIgotTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvYnNwID0gInJvY2tvIgorTEFZRVJWRVJTSU9OX3lvY3RvYnNwID0gIjQiCitMQVlFUlNFUklFU19DT01QQVRfeW9jdG9ic3AgPSAic3VtbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLXlvY3RvLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU2ODJhNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mCkBAIC0wLDAgKzEsNDAgQEAKKyNAVFlQRTogTWFjaGluZQorI0BOQU1FOiBCZWFnbGVib25lLXlvY3RvIG1hY2hpbmUKKyNAREVTQ1JJUFRJT046IFJlZmVyZW5jZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIGh0dHA6Ly9iZWFnbGVib2FyZC5vcmcvYm9uZSBhbmQgaHR0cDovL2JlYWdsZWJvYXJkLm9yZy9ibGFjayBib2FyZHMKKworUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA/PSAieHNlcnZlci14b3JnIgorWFNFUlZFUiA/PSAieHNlcnZlci14b3JnIFwKKyAgICAgICAgICAgeGY4Ni12aWRlby1tb2Rlc2V0dGluZyBcCisgICAgICAgICAgICIKKworTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICJrZXJuZWwtbW9kdWxlcyBrZXJuZWwtZGV2aWNldHJlZSIKKworRVhUUkFfSU1BR0VERVBFTkRTICs9ICJ1LWJvb3QiCisKK0RFRkFVTFRUVU5FID89ICJjb3J0ZXhhOGhmLW5lb24iCitpbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTguaW5jCisKK0lNQUdFX0ZTVFlQRVMgKz0gInRhci5iejIgamZmczIgd2ljIHdpYy5ibWFwIgorRVhUUkFfSU1BR0VDTURfamZmczIgPSAiLWxucCAiCitXS1NfRklMRSA/PSAiYmVhZ2xlYm9uZS15b2N0by53a3MiCitJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIga2VybmVsLWRldmljZXRyZWUga2VybmVsLWltYWdlLXppbWFnZSIKK2RvX2ltYWdlX3dpY1tkZXBlbmRzXSArPSAibXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGRvc2ZzdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisKK1NFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlPMCIKKworUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC15b2N0byIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjE1JSIKKworS0VSTkVMX0lNQUdFVFlQRSA9ICJ6SW1hZ2UiCitLRVJORUxfREVWSUNFVFJFRSA9ICJhbTMzNXgtYm9uZS5kdGIgYW0zMzV4LWJvbmVibGFjay5kdGIgYW0zMzV4LWJvbmVncmVlbi5kdGIiCitLRVJORUxfRVhUUkFfQVJHUyArPSAiTE9BREFERFI9JHtVQk9PVF9FTlRSWVBPSU5UfSIKKworU1BMX0JJTkFSWSA9ICJNTE8iCitVQk9PVF9TVUZGSVggPSAiaW1nIgorVUJPT1RfTUFDSElORSA9ICJhbTMzNXhfYm9uZWJsYWNrX2NvbmZpZyIKK1VCT09UX0VOVFJZUE9JTlQgPSAiMHg4MDAwODAwMCIKK1VCT09UX0xPQURBRERSRVNTID0gIjB4ODAwMDgwMDAiCisKK01BQ0hJTkVfRkVBVFVSRVMgPSAidXNiZ2FkZ2V0IHVzYmhvc3QgdmZhdCBhbHNhIgorCitJTUFHRV9CT09UX0ZJTEVTID89ICJ1LWJvb3QuJHtVQk9PVF9TVUZGSVh9IE1MTyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiZGQ0ZGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0jQFRZUEU6IE1hY2hpbmUKLSNATkFNRTogQmVhZ2xlYm9uZSBtYWNoaW5lCi0jQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIGh0dHA6Ly9iZWFnbGVib2FyZC5vcmcvYm9uZSBhbmQgaHR0cDovL2JlYWdsZWJvYXJkLm9yZy9ibGFjayBib2FyZHMKLQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA/PSAieHNlcnZlci14b3JnIgotWFNFUlZFUiA/PSAieHNlcnZlci14b3JnIFwKLSAgICAgICAgICAgeGY4Ni12aWRlby1tb2Rlc2V0dGluZyBcCi0gICAgICAgICAgICIKLQotTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICIga2VybmVsLW1vZHVsZXMga2VybmVsLWRldmljZXRyZWUiCi0KLUVYVFJBX0lNQUdFREVQRU5EUyArPSAidS1ib290IgotCi1ERUZBVUxUVFVORSA/PSAiY29ydGV4YThoZi1uZW9uIgotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE4LmluYwotCi1JTUFHRV9GU1RZUEVTICs9ICJ0YXIuYnoyIGpmZnMyIHdpYyB3aWMuYm1hcCIKLUVYVFJBX0lNQUdFQ01EX2pmZnMyID0gIi1sbnAgIgotV0tTX0ZJTEUgPz0gImJlYWdsZWJvbmUud2tzIgotSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIGtlcm5lbC1kZXZpY2V0cmVlIGtlcm5lbC1pbWFnZS16aW1hZ2UiCi1kb19pbWFnZV93aWNbZGVwZW5kc10gKz0gIm10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBkb3Nmc3Rvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgotCi1TRVJJQUxfQ09OU09MRSA9ICIxMTUyMDAgdHR5TzAiCi0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xMiUiCi0KLUtFUk5FTF9JTUFHRVRZUEUgPSAiekltYWdlIgotS0VSTkVMX0RFVklDRVRSRUUgPSAiYW0zMzV4LWJvbmUuZHRiIGFtMzM1eC1ib25lYmxhY2suZHRiIGFtMzM1eC1ib25lZ3JlZW4uZHRiIgotS0VSTkVMX0VYVFJBX0FSR1MgKz0gIkxPQURBRERSPSR7VUJPT1RfRU5UUllQT0lOVH0iCi0KLVNQTF9CSU5BUlkgPSAiTUxPIgotVUJPT1RfU1VGRklYID0gImltZyIKLVVCT09UX01BQ0hJTkUgPSAiYW0zMzV4X2JvbmVibGFja19jb25maWciCi1VQk9PVF9FTlRSWVBPSU5UID0gIjB4ODAwMDgwMDAiCi1VQk9PVF9MT0FEQUREUkVTUyA9ICIweDgwMDA4MDAwIgotCi1NQUNISU5FX0ZFQVRVUkVTID0gInVzYmdhZGdldCB1c2Job3N0IHZmYXQgYWxzYSIKLQotSU1BR0VfQk9PVF9GSUxFUyA/PSAidS1ib290LiR7VUJPT1RfU1VGRklYfSBNTE8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCmluZGV4IGFiNWE2ZmMuLjYxZjIxNDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCkBAIC0xMSwxMiArMTEsMTIgQEAKIEtFUk5FTF9JTUFHRV9TVFJJUF9FWFRSQV9TRUNUSU9OUyAgPSAiLmNvbW1lbnQiCiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xNSUiCiAKIFNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlTMCIKIFVTRV9WVCA/PSAiMCIKIAotTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICIga2VybmVsLW1vZHVsZXMiCitNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gImtlcm5lbC1tb2R1bGVzIgogCiBJTUFHRV9GU1RZUEVTID89ICJqZmZzMiB0YXIuYnoyIHdpYyB3aWMuYm1hcCIKIEpGRlMyX0VSQVNFQkxPQ0sgPSAiMHgxMDAwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mCmluZGV4IDM3MWEzZGIuLjM0ZjEyMzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9tcGM4MzE1ZS1yZGIuY29uZgpAQCAtMTQsNyArMTQsNyBAQAogCiBNQUNISU5FX0ZFQVRVUkVTID0gImtleWJvYXJkIHBjaSBleHQyIGV4dDMgc2VyaWFsIgogCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xNSUiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPSAibGludXgteW9jdG8iCiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKQEAgLTI1LDcgKzI1LDcgQEAKIAogS0VSTkVMX0RFVklDRVRSRUUgPSAibXBjODMxNWVyZGIuZHRiIgogCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gIiBrZXJuZWwtbW9kdWxlcyIKK01BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAia2VybmVsLW1vZHVsZXMiCiAKIElNQUdFX0ZTVFlQRVMgPz0gImpmZnMyIHRhci5iejIiCiBKRkZTMl9FUkFTRUJMT0NLID0gIjB4NDAwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS95b2N0b2JzcC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS95b2N0b2JzcC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM1MzlhMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEveW9jdG9ic3AucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHNodXRpbAotCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCBza2lwVW5sZXNzUGFzc2VkCi0KLWNsYXNzIFlvY3RvQlNQKG9lU2VsZlRlc3QpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgieW9jdG8tYnNwIGxpc3Qga2FyY2giKQotICAgICAgICBzZWxmLmthcmNocyA9IFtrYXJjaC5sc3RyaXAoKSBmb3Iga2FyY2ggaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCldWzE6XQotCi0gICAgZGVmIHRlc3RfeW9jdG9ic3BfbGlzdHByb3BlcnRpZXMoc2VsZik6Ci0gICAgICAgIGZvciBrYXJjaCBpbiBzZWxmLmthcmNoczoKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgieW9jdG8tYnNwIGxpc3QgJXMgcHJvcGVydGllcyIgJSBrYXJjaCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgbXNnPSJQcm9wZXJ0aWVzIGZyb20gJXMgYXJjaGl0ZWN0dXJlIGNvdWxkIG5vdCBiZSBsaXN0ZWQiICUga2FyY2gpCi0KLSAgICBkZWYgdGVzdF95b2N0b2JzcF9jcmVhdGUoc2VsZik6Ci0gICAgICAgICMgR2VuZXJhdGUgYSB0ZW1wb3JhbCBmaWxlIGFuZCBmb2xkZXJzIGZvciBlYWNoIGthcmNoCi0gICAgICAgIGpzb24gPSAie1widXNlX2RlZmF1bHRfa2VybmVsXCI6XCJ5ZXNcIn1cbiIKLSAgICAgICAgZmQgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGVsZXRlPUZhbHNlKQotICAgICAgICBmZC53cml0ZShqc29uKQotICAgICAgICBmZC5jbG9zZSgpCi0gICAgICAgIHRtcGZvbGRlcnMgPSBkaWN0KFsoa2FyY2gsIHRlbXBmaWxlLm1rZHRlbXAoKSkgZm9yIGthcmNoIGluIHNlbGYua2FyY2hzXSkKLSAgICAgICAgIyBDcmVhdGUgQlNQCi0gICAgICAgIGZvciBrYXJjaCBpbiBzZWxmLmthcmNoczoKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgieW9jdG8tYnNwIGNyZWF0ZSB0ZXN0ICVzIC1vICVzIC1pICVzIiAlIChrYXJjaCwgIiVzL3VuaXRlc3QiICUgdG1wZm9sZGVyc1trYXJjaF0sIGZkLm5hbWUpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCBtc2c9IkNvdWxkIG5vdCBjcmVhdGUgYSBCU1Agd2l0aCBhcmNoaXRlY3R1cmUgJXMgdXNpbmcgJXMgIiAlIChrYXJjaCwgZmQubmFtZSkpCi0gICAgICAgICMgUmVtb3ZlIHRtcCBmaWxlL2ZvbGRlcnMKLSAgICAgICAgb3MudW5saW5rKGZkLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZmQubmFtZSksIG1zZyA9ICJUZW1wb3JhbCBmaWxlICVzIGNvdWxkIG5vdCBiZSByZW1vdmVkIiAlIGZkLm5hbWUpCi0gICAgICAgIGZvciB0cmVlIGluIHRtcGZvbGRlcnMudmFsdWVzKCk6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHRyZWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHRyZWUpLCBtc2cgPSAiVGVtcG9yYWwgZm9sZGVyICVzIGNvdWxkIG5vdCBiZSByZW1vdmVkIiAlIHRyZWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1ic3AvZm9ybWZhY3Rvci9mb3JtZmFjdG9yL2JlYWdsZWJvbmUvbWFjaGNvbmZpZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IvYmVhZ2xlYm9uZS15b2N0by9tYWNoY29uZmlnCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1ic3AvZm9ybWZhY3Rvci9mb3JtZmFjdG9yL2JlYWdsZWJvbmUvbWFjaGNvbmZpZwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvci9iZWFnbGVib25lLXlvY3RvL21hY2hjb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL2JlYWdsZWJvbmUveG9yZy5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvYmVhZ2xlYm9uZS15b2N0by94b3JnLmNvbmYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL2JlYWdsZWJvbmUveG9yZy5jb25mCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9iZWFnbGVib25lLXlvY3RvL3hvcmcuY29uZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFmMzU5Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUtCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAic3RhbmRhcmQvYmFzZSIKLQotS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgotS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgotS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJjMWQ4YzQ0MDhiOGFlZGQ4OGVlYjZjY2M4OWNlODM0ZGQ0MWIzZjA5IgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gImMzODhmZGZjOWExZTA2YjIyY2EzNTMzYTAyM2Y0ZDY3YTZmYzFlOWIiCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lID0gImJlYWdsZWJvbmUiCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTAuMTciCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xMC4xNyIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEwLjE3IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lID0gIjQuMTAuMTciCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjEwLjE3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZAppbmRleCBmYWQ4ZWJjLi5lMjgzNjBiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApAQCAtNCwyNCArNCwyNSBAQAogS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgogS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgogS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKK0tCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJzdGFuZGFyZC9iZWFnbGVib25lIgorS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lIgogS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKIAotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiMWM0YWQ1NjlhZjNlMjNhNzc5OTQyMzU0MzUwNDBlMzIyOTA4Njg3ZiIKLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gIjFjNGFkNTY5YWYzZTIzYTc3OTk0MjM1NDM1MDQwZTMyMjkwODY4N2YiCi1TUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICIyNTdmODQzZWEzNjc3NDQ2MjBmMWQ5MjkxMGFmZDJmNDU0ZTMxNDgzIgotU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiMjU3Zjg0M2VhMzY3NzQ0NjIwZjFkOTI5MTBhZmQyZjQ1NGUzMTQ4MyIKLVNSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiMDE0NTYwODc0ZjllYjJhODYxMzhjOWNjMzUwNDZmZjE3MjA0ODVlMSIKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjk3ZTcxMGVmMDU0NWMxOWQzYzEwYmQ4MWE2MWJkY2E5ZmU1NDNiODEiCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICI5N2U3MTBlZjA1NDVjMTlkM2MxMGJkODFhNjFiZGNhOWZlNTQzYjgxIgorU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiOTdlNzEwZWYwNTQ1YzE5ZDNjMTBiZDgxYTYxYmRjYTlmZTU0M2I4MSIKK1NSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gIjk3ZTcxMGVmMDU0NWMxOWQzYzEwYmQ4MWE2MWJkY2E5ZmU1NDNiODEiCitTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjU1ZmNmYmVlMjU2MGY1N2E0OTBjNTcyNGFjNWI1Y2I0OWJhY2IwMWMiCiAKIAogQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCiBDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgotQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUgPSAiYmVhZ2xlYm9uZSIKK0NPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCiBDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKIAotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTIuMjAiCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xMi4yMCIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEyLjE5IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTIuMTkiCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjEyLjE5IgorTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTIuMjEiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xMi4yMSIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEyLjIxIgorTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTIuMjEiCitMSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjEyLjIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNC5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTMwNzA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTQuYmJhcHBlbmQKQEAgLTAsMCArMSwyNyBAQAorS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9lZGdlcm91dGVyID0gInY0LjE0L3N0YW5kYXJkL2VkZ2Vyb3V0ZXIiCitLQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAidjQuMTQvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKK0tCUkFOQ0hfbXBjODMxNWUtcmRiID0gInY0LjE0L3N0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCisKK0tNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKK0tNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKK0tNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCisKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjFkNTBjZTIxMGIwNTM2ZWI5YTY2ZDFlNTZhZTIxNWY5MjE3NjQ0NGEiCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICIxZDUwY2UyMTBiMDUzNmViOWE2NmQxZTU2YWUyMTVmOTIxNzY0NDRhIgorU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiZjJkYzk0Zjc3ZDE5YWI2NWE4MzJiYWQ2ZjQyNjYyYzUwOWQyZWY5ZSIKK1NSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gIjZjMWEwMmQ0YTljMjI3ZWNhMzU2OTExNzE1YTUyY2Y5MjQ1N2VjMTYiCitTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjdlOWEwYjAxN2JlN2I2ODVlMDk0NjM4ZjRiZGFhMzNhN2RmOGY3YzAiCisKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCitDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgorQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKK0NPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCitDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKKworTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTQuMzAiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xNC4zMCIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjE0LjMwIgorTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTQuMzAiCitMSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjE0LjMwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNS5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGM2YWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTUuYmJhcHBlbmQKQEAgLTAsMCArMSwyNyBAQAorS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJ2NC4xNS9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NC4xNS9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9lZGdlcm91dGVyID0gInY0LjE1L3N0YW5kYXJkL2VkZ2Vyb3V0ZXIiCitLQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAidjQuMTUvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKK0tCUkFOQ0hfbXBjODMxNWUtcmRiID0gInY0LjE1L3N0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCisKK0tNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKK0tNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKK0tNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCisKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImY3M2ZkODc4M2EzZTc1Mjk5MDIzNjZiYTc1YWFmYjgxYzE5ZWMzYzkiCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJmNzNmZDg3ODNhM2U3NTI5OTAyMzY2YmE3NWFhZmI4MWMxOWVjM2M5IgorU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiZjczZmQ4NzgzYTNlNzUyOTkwMjM2NmJhNzVhYWZiODFjMTllYzNjOSIKK1NSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gImY3M2ZkODc4M2EzZTc1Mjk5MDIzNjZiYTc1YWFmYjgxYzE5ZWMzYzkiCitTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gImNjMjcxMWM0ZjNiODNiNWNkNzgzNThlN2M5NDlmZGJiNjA3NmUyNWIiCisKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCitDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgorQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKK0NPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCitDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKKworTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTUuMTMiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xNS4xMyIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjE1LjEzIgorTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTUuMTMiCitMSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjE1LjEzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1Y2NlMWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUtCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAic3RhbmRhcmQvYmFzZSIKLQotS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgotS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgotS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjcwMTIwYzBhNmIwZjg4MTIyNzk5NzA1MTE0YTk5YTE1YmYwMTEzY2UiCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lID0gImJlYWdsZWJvbmUiCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuNC4xMTMiCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC40LjExMyIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjQuMTEzIgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuNC4xMTMiCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjQuMTEzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwYjJlZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUtCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAic3RhbmRhcmQvYmFzZSIKLQotS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgotS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgotS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImY3YTZkNDVmZmY4NTMxNzNiZmJmNjE3MDZhZWZmY2QxZDFlOTk0NjciCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJmN2E2ZDQ1ZmZmODUzMTczYmZiZjYxNzA2YWVmZmNkMWQxZTk5NDY3IgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiZjdhNmQ0NWZmZjg1MzE3M2JmYmY2MTcwNmFlZmZjZDFkMWU5OTQ2NyIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gImY3YTZkNDVmZmY4NTMxNzNiZmJmNjE3MDZhZWZmY2QxZDFlOTk0NjciCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjE5NWE4NTdhMGU0MjE1MGI5NDBkZmNiZGY4NTdiZTY2ZTA1ZGQwMDMiCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lID0gImJlYWdsZWJvbmUiCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuOS43OCIKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI0LjkuNzgiCi1MSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC45Ljc4IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuOS43OCIKLUxJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuOS43OCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvYmVhZ2xlYm9uZS53a3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3Avd2ljL2JlYWdsZWJvbmUteW9jdG8ud2tzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3Avd2ljL2JlYWdsZWJvbmUud2tzCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3Avd2ljL2JlYWdsZWJvbmUteW9jdG8ud2tzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKaW5kZXggZWM4MGFkNC4uMzFjOWI3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcwpAQCAtNDYsNyArNDYsNiBAQAogZG9fYXJfcmVjaXBlW2RpcnNdID0gIiR7QVJDSElWRVJfT1VURElSfSIKIGRvX2FyX29yaWdpbmFsW2RpcnNdID0gIiR7QVJDSElWRVJfT1VURElSfSAke0FSQ0hJVkVSX1dPUktESVJ9IgogZG9fZGVwbG95X2FyY2hpdmVzW2RpcnNdID0gIiR7V09SS0RJUn0iCi1kb19kZXBsb3lfYWxsX2FyY2hpdmVzW2RpcnNdID0gIiR7V09SS0RJUn0iCiAKICMgVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZvciB0aGUgc2hlbGwgc2NyaXB0IHRvIHVzZSBpdAogCkBAIC0xMTQsMTAgKzExMyw5IEBACiAgICAgaWYgYXJfcmVjaXBlID09ICIxIjoKICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19kZXBsb3lfYXJjaGl2ZXMnLCAnZGVwZW5kcycsICcgJXM6ZG9fYXJfcmVjaXBlJyAlIHBuKQogCi0gICAgIyBPdXRwdXQgdGhlIHNycG0gcGFja2FnZQotICAgIGFyX3NycG0gPSBkLmdldFZhckZsYWcoJ0FSQ0hJVkVSX01PREUnLCAnc3JwbScpCi0gICAgaWYgYXJfc3JwbSA9PSAiMSI6Ci0gICAgICAgIGlmIGQuZ2V0VmFyKCdQQUNLQUdFUycpICE9ICcnIGFuZCBkLmdldFZhcignSU1BR0VfUEtHVFlQRScpID09ICdycG0nOgorICAgICMgT3V0cHV0IHRoZSBTUlBNIHBhY2thZ2UKKyAgICBpZiBkLmdldFZhckZsYWcoJ0FSQ0hJVkVSX01PREUnLCAnc3JwbScpID09ICIxIiBhbmQgZC5nZXRWYXIoJ1BBQ0tBR0VTJyk6CisgICAgICAgIGlmICJwYWNrYWdlX3JwbSIgaW4gZC5nZXRWYXIoJ1BBQ0tBR0VfQ0xBU1NFUycpOgogICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19kZXBsb3lfYXJjaGl2ZXMnLCAnZGVwZW5kcycsICcgJXM6ZG9fcGFja2FnZV93cml0ZV9ycG0nICUgcG4pCiAgICAgICAgICAgICBpZiBhcl9kdW1wZGF0YSA9PSAiMSI6CiAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19wYWNrYWdlX3dyaXRlX3JwbScsICdkZXBlbmRzJywgJyAlczpkb19kdW1wZGF0YScgJSBwbikKQEAgLTEyOSw2ICsxMjcsOCBAQAogICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcGFja2FnZV93cml0ZV9ycG0nLCAnZGVwZW5kcycsICcgJXM6ZG9fYXJfcGF0Y2hlZCcgJSBwbikKICAgICAgICAgICAgIGVsaWYgYXJfc3JjID09ICJjb25maWd1cmVkIjoKICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3BhY2thZ2Vfd3JpdGVfcnBtJywgJ2RlcGVuZHMnLCAnICVzOmRvX2FyX2NvbmZpZ3VyZWQnICUgcG4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiYi5mYXRhbCgiQVJDSElWRVJfTU9ERVtzcnBtXSBuZWVkcyBwYWNrYWdlX3JwbSBpbiBQQUNLQUdFX0NMQVNTRVMiKQogfQogCiAjIFRha2UgYWxsIHRoZSBzb3VyY2VzIGZvciBhIHJlY2lwZSBhbmQgcHV0cyB0aGVtIGluIFdPUktESVIvYXJjaGl2ZXItd29yay8uCkBAIC0yNzcsNiArMjc3LDExIEBACiAgICAgaWYgKGQuZ2V0VmFyKCdTUkNfVVJJJykgPT0gIiIpOgogICAgICAgICByZXR1cm4KIAorICAgICMgRm9yIHRoZSBrZXJuZWwgYXJjaGl2ZSwgc3JjZGlyIG1heSBqdXN0IGJlIGEgbGluayB0byB0aGUKKyAgICAjIHdvcmstc2hhcmVkIGxvY2F0aW9uLiBVc2Ugb3MucGF0aC5yZWFscGF0aCB0byBtYWtlIHN1cmUKKyAgICAjIHRoYXQgd2UgYXJjaGl2ZSB0aGUgYWN0dWFsIGRpcmVjdG9yeSBhbmQgbm90IGp1c3QgdGhlIGxpbmsuCisgICAgc3JjZGlyID0gb3MucGF0aC5yZWFscGF0aChzcmNkaXIpCisKICAgICBiYi51dGlscy5ta2RpcmhpZXIoYXJfb3V0ZGlyKQogICAgIGlmIHN1ZmZpeDoKICAgICAgICAgZmlsZW5hbWUgPSAnJXMtJXMudGFyLmd6JyAlIChkLmdldFZhcignUEYnKSwgc3VmZml4KQpAQCAtMzE5LDYgKzMyNCwxMCBAQAogICAgIGZpbmFsbHk6CiAgICAgICAgIG9zLmNoZGlyKGN3ZCkKIAorZGVmIGlzX3dvcmtfc2hhcmVkKGQpOgorICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKyAgICByZXR1cm4gYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsJywgZCkgb3IgcG4uc3RhcnRzd2l0aCgnZ2NjLXNvdXJjZScpCisKICMgUnVuIGRvX3VucGFjayBhbmQgZG9fcGF0Y2gKIHB5dGhvbiBkb191bnBhY2tfYW5kX3BhdGNoKCkgewogICAgIGlmIGQuZ2V0VmFyRmxhZygnQVJDSElWRVJfTU9ERScsICdzcmMnKSBub3QgaW4gXApAQCAtMzMxLDcgKzM0MCw3IEBACiAgICAgcG4gPSBkLmdldFZhcignUE4nKQogCiAgICAgIyBUaGUga2VybmVsIGNsYXNzIGZ1bmN0aW9ucyByZXF1aXJlIGl0IHRvIGJlIG9uIHdvcmstc2hhcmVkLCBzbyB3ZSBkb250IGNoYW5nZSBXT1JLRElSCi0gICAgaWYgbm90IChiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwteW9jdG8nLCBkKSBvciBwbi5zdGFydHN3aXRoKCdnY2Mtc291cmNlJykpOgorICAgIGlmIG5vdCBpc193b3JrX3NoYXJlZChkKToKICAgICAgICAgIyBDaGFuZ2UgdGhlIFdPUktESVIgdG8gbWFrZSBkb191bnBhY2sgZG9fcGF0Y2ggcnVuIGluIGFub3RoZXIgZGlyLgogICAgICAgICBkLnNldFZhcignV09SS0RJUicsIGFyX3dvcmtkaXIpCiAgICAgICAgICMgUmVzdG9yZSB0aGUgb3JpZ2luYWwgcGF0aCB0byByZWNpcGUncyBuYXRpdmUgc3lzcm9vdCAoaXQncyByZWxhdGl2ZSB0byBXT1JLRElSKS4KQEAgLTM1MSw3ICszNjAsNyBAQAogICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKHNyYywgc3JjX29yaWcpCiAKICAgICAjIE1ha2Ugc3VyZSBnY2MgYW5kIGtlcm5lbCBzb3VyY2VzIGFyZSBwYXRjaGVkIG9ubHkgb25jZQotICAgIGlmIG5vdCAoZC5nZXRWYXIoJ1NSQ19VUkknKSA9PSAiIiBvciAoYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCkgb3IgcG4uc3RhcnRzd2l0aCgnZ2NjLXNvdXJjZScpKSk6CisgICAgaWYgbm90IChkLmdldFZhcignU1JDX1VSSScpID09ICIiIG9yIGlzX3dvcmtfc2hhcmVkKGQpKToKICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19wYXRjaCcsIGQpCiAKICAgICAjIENyZWF0ZSB0aGUgcGF0Y2hlcwpAQCAtNDU1LDEzICs0NjQsNiBAQAogYWRkdGFzayBkb19hcl9yZWNpcGUKIGFkZHRhc2sgZG9fZGVwbG95X2FyY2hpdmVzIGJlZm9yZSBkb19idWlsZAogCi1hZGR0YXNrIGRvX2RlcGxveV9hbGxfYXJjaGl2ZXMgYWZ0ZXIgZG9fZGVwbG95X2FyY2hpdmVzCi1kb19kZXBsb3lfYWxsX2FyY2hpdmVzW3JlY3JkZXB0YXNrXSA9ICJkb19kZXBsb3lfYXJjaGl2ZXMiCi1kb19kZXBsb3lfYWxsX2FyY2hpdmVzW3JlY2lkZXB0YXNrXSA9ICJkb18ke0JCX0RFRkFVTFRfVEFTS30iCi1kb19kZXBsb3lfYWxsX2FyY2hpdmVzKCkgewotICAgICAgICA6Ci19Ci0KIHB5dGhvbiAoKSB7CiAgICAgIyBBZGQgdGFza3MgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIHNwZWNpZmljYWxseSBmb3IgbGludXgteW9jdG8gdG8gYXZvaWQgcmFjZSBjb25kaXRpb24uCiAgICAgIyBzc3RhdGVzaWcucHk6c3N0YXRlX3J1bmRlcGZpbHRlciBoYXMgc3BlY2lhbCBzdXBwb3J0IHRoYXQgZXhjbHVkZXMgdGhpcyBkZXBlbmRlbmN5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcwppbmRleCBlZmE0MDk4Li5jYzg1N2FjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKQEAgLTIwMCw3ICsyMDAsNyBAQAogCQkJCWJibm90ZSBFeGVjdXRpbmcgZ2xpYi1nZXR0ZXh0aXplIC0tZm9yY2UgLS1jb3B5CiAJCQkJZWNobyAibm8iIHwgZ2xpYi1nZXR0ZXh0aXplIC0tZm9yY2UgLS1jb3B5CiAJCQlmaQotCQllbGlmIGdyZXAgLXEgIl5bWzpzcGFjZTpdXSpBTV9HTlVfR0VUVEVYVCIgJENPTkZJR1VSRV9BQzsgdGhlbgorCQllbGlmIFsgIiR7QlBOfSIgIT0gImdldHRleHQiIF0gJiYgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKkFNX0dOVV9HRVRURVhUIiAkQ09ORklHVVJFX0FDOyB0aGVuCiAJCQkjIFdlJ2QgY2FsbCBnZXR0ZXh0aXplIGhlcmUgaWYgaXQgd2Fzbid0IHNvIGJyb2tlbi4uLgogCQkJY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L2NvbmZpZy5ycGF0aCAke0FVVE9UT09MU19BVVhESVJ9LwogCQkJaWYgWyAtZCAke1N9L3BvLyBdOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCmluZGV4IGJkMGQ2ZTMuLmJiMWY0YjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCkBAIC0xNTIsMTIgKzE1Miw4IEBACiBhZGR0YXNrIHVucGFjayBhZnRlciBkb19mZXRjaAogZG9fdW5wYWNrW2RpcnNdID0gIiR7V09SS0RJUn0iCiAKLXB5dGhvbiAoKSB7Ci0gICAgaWYgZC5nZXRWYXIoJ1MnKSAhPSBkLmdldFZhcignV09SS0RJUicpOgotICAgICAgICBkLnNldFZhckZsYWcoJ2RvX3VucGFjaycsICdjbGVhbmRpcnMnLCAnJHtTfScpCi0gICAgZWxzZToKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdkb191bnBhY2snLCAnY2xlYW5kaXJzJywgb3MucGF0aC5qb2luKCcke1N9JywgJ3BhdGNoZXMnKSkKLX0KK2RvX3VucGFja1tjbGVhbmRpcnNdID0gIiR7QGQuZ2V0VmFyKCdTJykgaWYgZC5nZXRWYXIoJ1MnKSAhPSBkLmdldFZhcignV09SS0RJUicpIGVsc2Ugb3MucGF0aC5qb2luKCcke1N9JywgJ3BhdGNoZXMnKX0iCisKIHB5dGhvbiBiYXNlX2RvX3VucGFjaygpIHsKICAgICBzcmNfdXJpID0gKGQuZ2V0VmFyKCdTUkNfVVJJJykgb3IgIiIpLnNwbGl0KCkKICAgICBpZiBsZW4oc3JjX3VyaSkgPT0gMDoKQEAgLTE3MCwxMiArMTY2LDYgQEAKICAgICAgICAgYmIuZmF0YWwoc3RyKGUpKQogfQogCi1kZWYgcGtnYXJjaF9tYXBwaW5nKGQpOgotICAgICMgQ29tcGF0aWJpbGl0eSBtYXBwaW5ncyBvZiBUVU5FX1BLR0FSQ0ggKG9wdCBpbikKLSAgICBpZiBkLmdldFZhcigiUEtHQVJDSENPTVBBVF9BUk1WN0EiKToKLSAgICAgICAgaWYgZC5nZXRWYXIoIlRVTkVfUEtHQVJDSCIpID09ICJhcm12N2EtdmZwLW5lb24iOgotICAgICAgICAgICAgZC5zZXRWYXIoIlRVTkVfUEtHQVJDSCIsICJhcm12N2EiKQotCiBkZWYgZ2V0X2xheWVyc19icmFuY2hfcmV2KGQpOgogICAgIGxheWVycyA9IChkLmdldFZhcigiQkJMQVlFUlMiKSBvciAiIikuc3BsaXQoKQogICAgIGxheWVyc19icmFuY2hfcmV2ID0gWyIlLTIwcyA9IFwiJXM6JXNcIiIgJSAob3MucGF0aC5iYXNlbmFtZShpKSwgXApAQCAtMjI1LDEyICsyMTUsOSBAQAogICAgIGltcG9ydCBiYi5ydW5xdWV1ZQogCiAgICAgaWYgaXNpbnN0YW5jZShlLCBiYi5ldmVudC5Db25maWdQYXJzZWQpOgotICAgICAgICBpZiBub3QgZS5kYXRhLmdldFZhcigiTkFUSVZFTFNCU1RSSU5HIiwgRmFsc2UpOgotICAgICAgICAgICAgZS5kYXRhLnNldFZhcigiTkFUSVZFTFNCU1RSSU5HIiwgbHNiX2Rpc3Ryb19pZGVudGlmaWVyKGUuZGF0YSkpCi0gICAgICAgIGUuZGF0YS5zZXRWYXIoJ0JCX1ZFUlNJT04nLCBiYi5fX3ZlcnNpb25fXykKLSAgICAgICAgcGtnYXJjaF9tYXBwaW5nKGUuZGF0YSkKLSAgICAgICAgb2UudXRpbHMuZmVhdHVyZXNfYmFja2ZpbGwoIkRJU1RST19GRUFUVVJFUyIsIGUuZGF0YSkKLSAgICAgICAgb2UudXRpbHMuZmVhdHVyZXNfYmFja2ZpbGwoIk1BQ0hJTkVfRkVBVFVSRVMiLCBlLmRhdGEpCisgICAgICAgIGlmIG5vdCBkLmdldFZhcigiTkFUSVZFTFNCU1RSSU5HIiwgRmFsc2UpOgorICAgICAgICAgICAgZC5zZXRWYXIoIk5BVElWRUxTQlNUUklORyIsIGxzYl9kaXN0cm9faWRlbnRpZmllcihkKSkKKyAgICAgICAgZC5zZXRWYXIoJ0JCX1ZFUlNJT04nLCBiYi5fX3ZlcnNpb25fXykKICAgICAgICAgIyBXb3JrcyB3aXRoIHRoZSBsaW5lIGluIGxheWVyLmNvbmYgd2hpY2ggY2hhbmdlcyBQQVRIIHRvIHBvaW50IGhlcmUKICAgICAgICAgc2V0dXBfaG9zdHRvb2xzX2RpcihkLmdldFZhcignSE9TVFRPT0xTX0RJUicpLCAnSE9TVFRPT0xTJywgZCkKICAgICAgICAgc2V0dXBfaG9zdHRvb2xzX2RpcihkLmdldFZhcignSE9TVFRPT0xTX0RJUicpLCAnSE9TVFRPT0xTX05PTkZBVEFMJywgZCwgZmF0YWw9RmFsc2UpCkBAIC0yNDYsNyArMjMzLDcgQEAKICAgICAgICAgZS5tY2RhdGFbJyddLnNldFZhcigiU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyIsIGRlcHMpCiAKICAgICBpZiBpc2luc3RhbmNlKGUsIGJiLmV2ZW50LkJ1aWxkU3RhcnRlZCk6Ci0gICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShlLmRhdGEpCisgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQogICAgICAgICBzdGF0dXNsaW5lcyA9IFtdCiAgICAgICAgIGZvciBmdW5jIGluIG9lLmRhdGEudHlwZWRfdmFsdWUoJ0JVSUxEQ0ZHX0ZVTkNTJywgbG9jYWxkYXRhKToKICAgICAgICAgICAgIGcgPSBnbG9iYWxzKCkKQEAgLTI1Nyw3ICsyNDQsNyBAQAogICAgICAgICAgICAgICAgIGlmIGZsaW5lczoKICAgICAgICAgICAgICAgICAgICAgc3RhdHVzbGluZXMuZXh0ZW5kKGZsaW5lcykKIAotICAgICAgICBzdGF0dXNoZWFkZXIgPSBlLmRhdGEuZ2V0VmFyKCdCVUlMRENGR19IRUFERVInKQorICAgICAgICBzdGF0dXNoZWFkZXIgPSBkLmdldFZhcignQlVJTERDRkdfSEVBREVSJykKICAgICAgICAgaWYgc3RhdHVzaGVhZGVyOgogICAgICAgICAgICAgYmIucGxhaW4oJ1xuJXNcbiVzXG4nICUgKHN0YXR1c2hlYWRlciwgJ1xuJy5qb2luKHN0YXR1c2xpbmVzKSkpCiAKQEAgLTI2NSwyMyArMjUyLDIzIEBACiAgICAgIyB0YXJnZXQgb25lcyBhbmQgd2UnZCBzZWUgZHVscGljYXRlIGtleSBuYW1lcyBvdmVyd3JpdGluZyBlYWNoIG90aGVyCiAgICAgIyBmb3IgdmFyaW91cyBQUkVGRVJSRURfUFJPVklERVJTCiAgICAgaWYgaXNpbnN0YW5jZShlLCBiYi5ldmVudC5SZWNpcGVQcmVGaW5hbGlzZSk6Ci0gICAgICAgIGlmIGUuZGF0YS5nZXRWYXIoIlRBUkdFVF9QUkVGSVgiKSA9PSBlLmRhdGEuZ2V0VmFyKCJTREtfUFJFRklYIik6Ci0gICAgICAgICAgICBlLmRhdGEuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9YmludXRpbHMiKQotICAgICAgICAgICAgZS5kYXRhLmRlbFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIikKLSAgICAgICAgICAgIGUuZGF0YS5kZWxWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MiKQotICAgICAgICAgICAgZS5kYXRhLmRlbFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWcrKyIpCi0gICAgICAgICAgICBlLmRhdGEuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzIikKKyAgICAgICAgaWYgZC5nZXRWYXIoIlRBUkdFVF9QUkVGSVgiKSA9PSBkLmdldFZhcigiU0RLX1BSRUZJWCIpOgorICAgICAgICAgICAgZC5kZWxWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscyIpCisgICAgICAgICAgICBkLmRlbFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIikKKyAgICAgICAgICAgIGQuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIikKKyAgICAgICAgICAgIGQuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9ZysrIikKKyAgICAgICAgICAgIGQuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzIikKIAogICAgIGlmIGlzaW5zdGFuY2UoZSwgYmIucnVucXVldWUuc2NlbmVRdWV1ZUNvbXBsZXRlKToKLSAgICAgICAgY29tcGxldGlvbnMgPSBlLmRhdGEuZXhwYW5kKCIke1NUQUdJTkdfRElSfS9zc3RhdGVjb21wbGV0aW9ucyIpCisgICAgICAgIGNvbXBsZXRpb25zID0gZC5leHBhbmQoIiR7U1RBR0lOR19ESVJ9L3NzdGF0ZWNvbXBsZXRpb25zIikKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29tcGxldGlvbnMpOgogICAgICAgICAgICAgY21kcyA9IHNldCgpCiAgICAgICAgICAgICB3aXRoIG9wZW4oY29tcGxldGlvbnMsICJyIikgYXMgZjoKICAgICAgICAgICAgICAgICBjbWRzID0gc2V0KGYpCi0gICAgICAgICAgICBlLmRhdGEuc2V0VmFyKCJjb21wbGV0aW9uX2Z1bmN0aW9uIiwgIlxuIi5qb2luKGNtZHMpKQotICAgICAgICAgICAgZS5kYXRhLnNldFZhckZsYWcoImNvbXBsZXRpb25fZnVuY3Rpb24iLCAiZnVuYyIsICIxIikKKyAgICAgICAgICAgIGQuc2V0VmFyKCJjb21wbGV0aW9uX2Z1bmN0aW9uIiwgIlxuIi5qb2luKGNtZHMpKQorICAgICAgICAgICAgZC5zZXRWYXJGbGFnKCJjb21wbGV0aW9uX2Z1bmN0aW9uIiwgImZ1bmMiLCAiMSIpCiAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiRXhlY3V0aW5nIFNjZW5lUXVldWUgQ29tcGxldGlvbiBjb21tYW5kczogJXMiICUgIlxuIi5qb2luKGNtZHMpKQotICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJjb21wbGV0aW9uX2Z1bmN0aW9uIiwgZS5kYXRhKQorICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJjb21wbGV0aW9uX2Z1bmN0aW9uIiwgZCkKICAgICAgICAgICAgIG9zLnJlbW92ZShjb21wbGV0aW9ucykKIAogICAgIGlmIGlzaW5zdGFuY2UoZSwgYmIuZXZlbnQuUmVjaXBlUGFyc2VkKToKQEAgLTMwMCw3ICsyODcsNyBAQAogICAgICAgICAgICAgICAgIGlmIHAuc3RhcnRzd2l0aCgidmlydHVhbC8iKSBhbmQgcCBub3QgaW4gbXVsdGl3aGl0ZWxpc3Q6CiAgICAgICAgICAgICAgICAgICAgIHByb2Zwcm92ID0gZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl8iICsgcCkKICAgICAgICAgICAgICAgICAgICAgaWYgcHJvZnByb3YgYW5kIHBuICE9IHByb2Zwcm92OgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlBSRUZFUlJFRF9QUk9WSURFUl8lcyBzZXQgdG8gJXMsIG5vdCAlcyIgJSAocCwgcHJvZnByb3YsIHBuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlBSRUZFUlJFRF9QUk9WSURFUl8lcyBzZXQgdG8gJXMsIG5vdCAlcyIgJSAocCwgcHJvZnByb3YsIHBuKSkKIH0KIAogQ09ORklHVVJFU1RBTVBGSUxFID0gIiR7V09SS0RJUn0vY29uZmlndXJlLnNzdGF0ZSIKQEAgLTM4OSw2ICszNzYsMTAgQEAKIHB5dGhvbiAoKSB7CiAgICAgaW1wb3J0IHN0cmluZywgcmUKIAorICAgICMgSGFuZGxlIGJhY2tmaWxsaW5nCisgICAgb2UudXRpbHMuZmVhdHVyZXNfYmFja2ZpbGwoIkRJU1RST19GRUFUVVJFUyIsIGQpCisgICAgb2UudXRpbHMuZmVhdHVyZXNfYmFja2ZpbGwoIk1BQ0hJTkVfRkVBVFVSRVMiLCBkKQorCiAgICAgIyBIYW5kbGUgUEFDS0FHRUNPTkZJRwogICAgICMKICAgICAjIFRoZXNlIHRha2UgdGhlIGZvcm06CkBAIC00NjMsNyArNDU0LDcgQEAKIAogICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKICAgICBsaWNlbnNlID0gZC5nZXRWYXIoJ0xJQ0VOU0UnKQotICAgIGlmIGxpY2Vuc2UgPT0gIklOVkFMSUQiOgorICAgIGlmIGxpY2Vuc2UgPT0gIklOVkFMSUQiIGFuZCBwbiAhPSAiZGVmYXVsdHBrZ25hbWUiOgogICAgICAgICBiYi5mYXRhbCgnVGhpcyByZWNpcGUgZG9lcyBub3QgaGF2ZSB0aGUgTElDRU5TRSBmaWVsZCBzZXQgKCVzKScgJSBwbikKIAogICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2xpY2Vuc2UnLCBkKToKQEAgLTQ3Miw3ICs0NjMsNyBAQAogICAgICAgICBpZiB1bm1hdGNoZWRfbGljZW5zZV9mbGFnOgogICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNraXBwaW5nICVzIGJlY2F1c2UgaXQgaGFzIGEgcmVzdHJpY3RlZCBsaWNlbnNlIG5vdCIKICAgICAgICAgICAgICAgICAgIiB3aGl0ZWxpc3RlZCBpbiBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIgJSBwbikKLSAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJiZWNhdXNlIGl0IGhhcyBhIHJlc3RyaWN0ZWQgbGljZW5zZSBub3QiCisgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJiZWNhdXNlIGl0IGhhcyBhIHJlc3RyaWN0ZWQgbGljZW5zZSBub3QiCiAgICAgICAgICAgICAgICAgICIgd2hpdGVsaXN0ZWQgaW4gTElDRU5TRV9GTEFHU19XSElURUxJU1QiKQogCiAgICAgIyBJZiB3ZSdyZSBidWlsZGluZyBhIHRhcmdldCBwYWNrYWdlIHdlIG5lZWQgdG8gdXNlIGZha2Vyb290IChwc2V1ZG8pCkBAIC01MDAsNyArNDkxLDcgQEAKICAgICAgICAgICAgIGlmIHJlLm1hdGNoKG5lZWRfbWFjaGluZSwgbSk6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJpbmNvbXBhdGlibGUgd2l0aCBtYWNoaW5lICVzIChub3QgaW4gQ09NUEFUSUJMRV9NQUNISU5FKSIgJSBkLmdldFZhcignTUFDSElORScpKQorICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaW5jb21wYXRpYmxlIHdpdGggbWFjaGluZSAlcyAobm90IGluIENPTVBBVElCTEVfTUFDSElORSkiICUgZC5nZXRWYXIoJ01BQ0hJTkUnKSkKIAogICAgIHNvdXJjZV9taXJyb3JfZmV0Y2ggPSBkLmdldFZhcignU09VUkNFX01JUlJPUl9GRVRDSCcsIEZhbHNlKQogICAgIGlmIG5vdCBzb3VyY2VfbWlycm9yX2ZldGNoOgpAQCAtNTA5LDcgKzUwMCw3IEBACiAgICAgICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgICAgIHRoaXNfaG9zdCA9IGQuZ2V0VmFyKCdIT1NUX1NZUycpCiAgICAgICAgICAgICBpZiBub3QgcmUubWF0Y2gobmVlZF9ob3N0LCB0aGlzX2hvc3QpOgotICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJpbmNvbXBhdGlibGUgd2l0aCBob3N0ICVzIChub3QgaW4gQ09NUEFUSUJMRV9IT1NUKSIgJSB0aGlzX2hvc3QpCisgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaW5jb21wYXRpYmxlIHdpdGggaG9zdCAlcyAobm90IGluIENPTVBBVElCTEVfSE9TVCkiICUgdGhpc19ob3N0KQogCiAgICAgICAgIGJhZF9saWNlbnNlcyA9IChkLmdldFZhcignSU5DT01QQVRJQkxFX0xJQ0VOU0UnKSBvciAiIikuc3BsaXQoKQogCkBAIC01NjIsNyArNTUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJJTkNMVURJTkcgdGhlIHBhY2thZ2UgIiArIHBrZykKICAgICAgICAgICAgICAgICBlbGlmIGFsbF9za2lwcGVkIG9yIGluY29tcGF0aWJsZV9saWNlbnNlKGQsIGJhZF9saWNlbnNlcyk6CiAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJTS0lQUElORyByZWNpcGUgJXMgYmVjYXVzZSBpdCdzICVzIiAlIChwbiwgbGljZW5zZSkpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJpdCBoYXMgYW4gaW5jb21wYXRpYmxlIGxpY2Vuc2U6ICVzIiAlIGxpY2Vuc2UpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIml0IGhhcyBhbiBpbmNvbXBhdGlibGUgbGljZW5zZTogJXMiICUgbGljZW5zZSkKICAgICAgICAgICAgIGVsaWYgcG4gaW4gd2hpdGVsaXN0OgogICAgICAgICAgICAgICAgIGlmIHBuIGluIGluY29tcGF0d2w6CiAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIklOQ0xVRElORyAiICsgcG4gKyAiIGFzIGJ1aWxkYWJsZSBkZXNwaXRlIElOQ09NUEFUSUJMRV9MSUNFTlNFIGJlY2F1c2UgaXQgaGFzIGJlZW4gd2hpdGVsaXN0ZWQiKQpAQCAtNjM1LDYgKzYyNiwxMCBAQAogICAgICAgICBlbGlmIHBhdGguZW5kc3dpdGgoJy5ycG0nKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fdW5wYWNrJywgJ2RlcGVuZHMnLCAnIHh6LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JykKIAorICAgICAgICAjICouZGViIHNob3VsZCBERVBFTkQgb24geHotbmF0aXZlIGZvciB1bnBhY2tpbmcKKyAgICAgICAgZWxpZiBwYXRoLmVuZHN3aXRoKCcuZGViJyk6CisgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3VucGFjaycsICdkZXBlbmRzJywgJyB4ei1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCisKICAgICBpZiBuZWVkc3JjcmV2OgogICAgICAgICBkLnNldFZhcigiU1JDUFYiLCAiJHtAYmIuZmV0Y2gyLmdldF9zcmNyZXYoZCl9IikKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iaW5fcGFja2FnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iaW5fcGFja2FnZS5iYmNsYXNzCmluZGV4IGE1MmI3NWIuLmNiYzliMWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmluX3BhY2thZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Jpbl9wYWNrYWdlLmJiY2xhc3MKQEAgLTI2LDcgKzI2LDEwIEBACiBiaW5fcGFja2FnZV9kb19pbnN0YWxsICgpIHsKICAgICAjIERvIGl0IGNhcmVmdWxseQogICAgIFsgLWQgIiR7U30iIF0gfHwgZXhpdCAxCi0gICAgY2QgJHtTfSB8fCBleGl0IDEKKyAgICBpZiBbIC16ICIkKGxzIC1BICR7U30pIiBdOyB0aGVuCisgICAgICAgIGJiZmF0YWwgYmluX3BhY2thZ2UgaGFzIG5vdGhpbmcgdG8gaW5zdGFsbC4gQmUgc3VyZSB0aGUgU1JDX1VSSSB1bnBhY2tzIGludG8gUy4KKyAgICBmaQorICAgIGNkICR7U30KICAgICB0YXIgLS1uby1zYW1lLW93bmVyIC0tZXhjbHVkZT0nLi9wYXRjaGVzJyAtLWV4Y2x1ZGU9Jy4vLnBjJyAtY3BmIC0gLiBcCiAgICAgICAgIHwgdGFyIC0tbm8tc2FtZS1vd25lciAteHBmIC0gLUMgJHtEfQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ibGFja2xpc3QuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmxhY2tsaXN0LmJiY2xhc3MKaW5kZXggZTU4NTY0Yy4uZGM3OTQyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ibGFja2xpc3QuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2JsYWNrbGlzdC5iYmNsYXNzCkBAIC0xNiw1ICsxNiw1IEBACiAgICAgYmxhY2tsaXN0ID0gZC5nZXRWYXJGbGFnKCdQTkJMQUNLTElTVCcsIGQuZ2V0VmFyKCdQTicpKQogCiAgICAgaWYgYmxhY2tsaXN0OgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiUmVjaXBlIGlzIGJsYWNrbGlzdGVkOiAlcyIgJSAoYmxhY2tsaXN0KSkKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiUmVjaXBlIGlzIGJsYWNrbGlzdGVkOiAlcyIgJSAoYmxhY2tsaXN0KSkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCmluZGV4IDdhNTUzNGUuLjYzOTgwZjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcwpAQCAtMzcsNyArMzcsNyBAQAogQlVJTERISVNUT1JZX0RJUl9TREsgPSAiJHtCVUlMREhJU1RPUllfRElSfS9zZGsvJHtTREtfTkFNRX0ke1NES19FWFR9LyR7SU1BR0VfQkFTRU5BTUV9IgogQlVJTERISVNUT1JZX0lNQUdFX0ZJTEVTID89ICIvZXRjL3Bhc3N3ZCAvZXRjL2dyb3VwIgogQlVJTERISVNUT1JZX1NES19GSUxFUyA/PSAiY29uZi9sb2NhbC5jb25mIGNvbmYvYmJsYXllcnMuY29uZiBjb25mL2F1dG8uY29uZiBjb25mL2xvY2tlZC1zaWdzLmluYyBjb25mL2RldnRvb2wuY29uZiIKLUJVSUxESElTVE9SWV9DT01NSVQgPz0gIjAiCitCVUlMREhJU1RPUllfQ09NTUlUID89ICIxIgogQlVJTERISVNUT1JZX0NPTU1JVF9BVVRIT1IgPz0gImJ1aWxkaGlzdG9yeSA8YnVpbGRoaXN0b3J5QCR7RElTVFJPfT4iCiBCVUlMREhJU1RPUllfUFVTSF9SRVBPID89ICIiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcwppbmRleCBhYzJjMTUxLi5mY2ZkNWRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCkBAIC03LDYgKzcsMjMgQEAKICMgV2UgbmVlZCB0byB1bnNldCBDQ0FDSEUgb3RoZXJ3aXNlIGNtYWtlIGdldHMgdG9vIGNvbmZ1c2VkCiBDQ0FDSEUgPSAiIgogCisjIFdoYXQgQ01ha2UgZ2VuZXJhdG9yIHRvIHVzZS4KKyMgVGhlIHN1cHBvcnRlZCBvcHRpb25zIGFyZSAiVW5peCBNYWtlZmlsZXMiIG9yICJOaW5qYSIuCitPRUNNQUtFX0dFTkVSQVRPUiA/PSAiTmluamEiCisKK3B5dGhvbigpIHsKKyAgICBnZW5lcmF0b3IgPSBkLmdldFZhcigiT0VDTUFLRV9HRU5FUkFUT1IiKQorICAgIGlmIGdlbmVyYXRvciA9PSAiVW5peCBNYWtlZmlsZXMiOgorICAgICAgICBhcmdzID0gIi1HICdVbml4IE1ha2VmaWxlcycgLURDTUFLRV9NQUtFX1BST0dSQU09IiArIGQuZ2V0VmFyKCJNQUtFIikKKyAgICAgICAgZC5zZXRWYXIoIk9FQ01BS0VfR0VORVJBVE9SX0FSR1MiLCBhcmdzKQorICAgICAgICBkLnNldFZhckZsYWcoImRvX2NvbXBpbGUiLCAicHJvZ3Jlc3MiLCAicGVyY2VudCIpCisgICAgZWxpZiBnZW5lcmF0b3IgPT0gIk5pbmphIjoKKyAgICAgICAgZC5hcHBlbmRWYXIoIkRFUEVORFMiLCAiIG5pbmphLW5hdGl2ZSIpCisgICAgICAgIGQuc2V0VmFyKCJPRUNNQUtFX0dFTkVSQVRPUl9BUkdTIiwgIi1HIE5pbmphIC1EQ01BS0VfTUFLRV9QUk9HUkFNPW5pbmphIikKKyAgICAgICAgZC5zZXRWYXJGbGFnKCJkb19jb21waWxlIiwgInByb2dyZXNzIiwgIm91dG9mOl5cWyhcZCspLyhcZCspXF1ccysiKQorICAgIGVsc2U6CisgICAgICAgIGJiLmZhdGFsKCJVbmtub3duIENNYWtlIEdlbmVyYXRvciAlcyIgJSBnZW5lcmF0b3IpCit9CiAjIEMvQysrIENvbXBpbGVyICh3aXRob3V0IGNwdSBhcmNoL3R1bmUgYXJndW1lbnRzKQogT0VDTUFLRV9DX0NPTVBJTEVSID89ICJgZWNobyAke0NDfSB8IHNlZCAncy9eXChbXiBdKlwpLiovXDEvJ2AiCiBPRUNNQUtFX0NYWF9DT01QSUxFUiA/PSAiYGVjaG8gJHtDWFh9IHwgc2VkICdzL15cKFteIF0qXCkuKi9cMS8nYCIKQEAgLTM0LDYgKzUxLDExIEBACiBFWFRSQV9PRUNNQUtFX0JVSUxEX3ByZXBlbmRfdGFzay1jb21waWxlID0gIiR7UEFSQUxMRUxfTUFLRX0gIgogRVhUUkFfT0VDTUFLRV9CVUlMRF9wcmVwZW5kX3Rhc2staW5zdGFsbCA9ICIke1BBUkFMTEVMX01BS0VJTlNUfSAiCiAKK09FQ01BS0VfVEFSR0VUX0NPTVBJTEUgPz0gImFsbCIKK09FQ01BS0VfVEFSR0VUX0lOU1RBTEwgPz0gImluc3RhbGwiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlICR7ZGF0YWRpcn0vY21ha2UiCisKICMgQ01ha2UgZXhwZWN0cyB0YXJnZXQgYXJjaGl0ZWN0dXJlcyBpbiB0aGUgZm9ybWF0IG9mIHVuYW1lKDIpLAogIyB3aGljaCBkbyBub3QgYWx3YXlzIG1hdGNoIFRBUkdFVF9BUkNILCBzbyBhbGwgdGhlIG5lY2Vzc2FyeQogIyBjb252ZXJzaW9ucyBzaG91bGQgaGFwcGVuIGhlcmUuCkBAIC0xMTYsNiArMTM4LDcgQEAKIAlmaQogCiAJY21ha2UgXAorCSAgJHtPRUNNQUtFX0dFTkVSQVRPUl9BUkdTfSBcCiAJICAkb2VjbWFrZV9zaXRlZmlsZSBcCiAJICAke09FQ01BS0VfU09VUkNFUEFUSH0gXAogCSAgLURDTUFLRV9JTlNUQUxMX1BSRUZJWDpQQVRIPSR7cHJlZml4fSBcCkBAIC0xMzYsMTUgKzE1OSwxNyBAQAogCSAgLVduby1kZXYKIH0KIAotZG9fY29tcGlsZVtwcm9ncmVzc10gPSAicGVyY2VudCIKK2NtYWtlX3J1bmNtYWtlX2J1aWxkKCkgeworCWJibm90ZSAke0RFU1RESVI6K0RFU1RESVI9JHtERVNURElSfSB9VkVSQk9TRT0xIGNtYWtlIC0tYnVpbGQgJyR7Qn0nICIkQCIgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQorCWV2YWwgJHtERVNURElSOitERVNURElSPSR7REVTVERJUn0gfVZFUkJPU0U9MSBjbWFrZSAtLWJ1aWxkICcke0J9JyAiJEAiIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KK30KKwogY21ha2VfZG9fY29tcGlsZSgpICB7Ci0JYmJub3RlIFZFUkJPU0U9MSBjbWFrZSAtLWJ1aWxkICcke0J9JyAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9Ci0JVkVSQk9TRT0xIGNtYWtlIC0tYnVpbGQgJyR7Qn0nIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KKwljbWFrZV9ydW5jbWFrZV9idWlsZCAtLXRhcmdldCAke09FQ01BS0VfVEFSR0VUX0NPTVBJTEV9CiB9CiAKIGNtYWtlX2RvX2luc3RhbGwoKSB7Ci0JYmJub3RlIERFU1RESVI9JyR7RH0nIGNtYWtlIC0tYnVpbGQgJyR7Qn0nIC0tdGFyZ2V0IGluc3RhbGwgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQotCURFU1RESVI9JyR7RH0nIGNtYWtlIC0tYnVpbGQgJyR7Qn0nIC0tdGFyZ2V0IGluc3RhbGwgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQorCURFU1RESVI9JyR7RH0nIGNtYWtlX3J1bmNtYWtlX2J1aWxkIC0tdGFyZ2V0ICR7T0VDTUFLRV9UQVJHRVRfSU5TVEFMTH0KIH0KIAogRVhQT1JUX0ZVTkNUSU9OUyBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsIGRvX2dlbmVyYXRlX3Rvb2xjaGFpbl9maWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MKaW5kZXggMTkyODQ1NS4uZWU4YWE2MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy1jYW5hZGlhbi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcwpAQCAtMzgsNyArMzgsNyBAQAogICAgIGV4dHJhbGliY3MgPSBbIiJdCiAgICAgaWYgIm11c2wiIGluIGQuZ2V0VmFyKCJCQVNFQ0FOQURJQU5FWFRSQU9TIik6CiAgICAgICAgIGV4dHJhbGliY3MuYXBwZW5kKCJtdXNsIikKLSAgICBmb3IgdmFyaWFudCBpbiBbIiIsICJzcGUiLCAieDMyIiwgImVhYmkiLCAibjMyIiwgImlscDMyIl06CisgICAgZm9yIHZhcmlhbnQgaW4gWyIiLCAic3BlIiwgIngzMiIsICJlYWJpIiwgIm4zMiIsICJfaWxwMzIiXToKICAgICAgICAgZm9yIGxpYmMgaW4gZXh0cmFsaWJjczoKICAgICAgICAgICAgIGVudHJ5ID0gImxpbnV4IgogICAgICAgICAgICAgaWYgdmFyaWFudCBhbmQgbGliYzoKQEAgLTEyMyw4ICsxMjMsNiBAQAogICAgICAgICAgICAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUn0vLi4gXAogICAgICAgICAgICAtV2wsLXJwYXRoLCR7bGliZGlyfS8uLiAiCiAKLURFUEVORFNfR0VUVEVYVCA9ICJnZXR0ZXh0LW5hdGl2ZSBuYXRpdmVzZGstZ2V0dGV4dCIKLQogIwogIyBXZSBuZWVkIGNocnBhdGggPj0gMC4xNCB0byBlbnN1cmUgd2UgY2FuIGRlYWwgd2l0aCAzMiBhbmQgNjQgYml0CiAjIGJpbmFyaWVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKaW5kZXggZDIxNzcxNy4uNGU4NWNhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcwpAQCAtNDEsOCArNDEsNiBAQAogCiBUT09MQ0hBSU5fT1BUSU9OUyA9ICIiCiAKLURFUEVORFNfR0VUVEVYVCA9ICJnZXR0ZXh0LW5hdGl2ZSIKLQogIyBUaGlzIGNsYXNzIGVuY29kZXMgc3RhZ2luZyBwYXRocyBpbnRvIGl0cyBzY3JpcHRzIGRhdGEgc28gY2FuIG9ubHkgYmUKICMgcmV1c2VkIGlmIHdlIG1hbmlwdWxhdGUgdGhlIHBhdGhzLgogU1NUQVRFX1NDQU5fQ01EID89ICIke1NTVEFURV9TQ0FOX0NNRF9OQVRJVkV9IgpAQCAtOTIsMyArOTAsOCBAQAogZXhwb3J0IE5NID0gIiR7QlVJTERfTk19IgogCiBpbmhlcml0IG5vcGFja2FnZXMKKworcHl0aG9uIGRvX2FkZHRvX3JlY2lwZV9zeXNyb290ICgpIHsKKyAgICBiYi5idWlsZC5leGVjX2Z1bmMoImV4dGVuZF9yZWNpcGVfc3lzcm9vdCIsIGQpCit9CithZGR0YXNrIGFkZHRvX3JlY2lwZV9zeXNyb290IGFmdGVyIGRvX3BvcHVsYXRlX3N5c3Jvb3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzCmluZGV4IGJjMmYwM2YuLjUzNzY1OWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcwpAQCAtMjMsMTIgKzIzLDEyIEBACiAjIFRoZSBwcm9kdWN0IG5hbWUgdGhhdCB0aGUgQ1ZFIGRhdGFiYXNlIHVzZXMuICBEZWZhdWx0cyB0byBCUE4sIGJ1dCBtYXkgbmVlZCB0bwogIyBiZSBvdmVycmlkZW4gcGVyIHJlY2lwZSAoZm9yIGV4YW1wbGUgdGlmZi5iYiBzZXRzIENWRV9QUk9EVUNUPWxpYnRpZmYpLgogQ1ZFX1BST0RVQ1QgPz89ICIke0JQTn0iCitDVkVfVkVSU0lPTiA/Pz0gIiR7UFZ9IgogCiBDVkVfQ0hFQ0tfREJfRElSID89ICIke0RMX0RJUn0vQ1ZFX0NIRUNLIgogQ1ZFX0NIRUNLX0RCX0ZJTEUgPz0gIiR7Q1ZFX0NIRUNLX0RCX0RJUn0vbnZkLmRiIgogCi1DVkVfQ0hFQ0tfTE9DQUxfRElSID89ICIke1dPUktESVJ9L2N2ZSIKLUNWRV9DSEVDS19MT0NBTF9GSUxFID89ICIke0NWRV9DSEVDS19MT0NBTF9ESVJ9L2N2ZS5sb2ciCitDVkVfQ0hFQ0tfTE9HID89ICIke1R9L2N2ZS5sb2ciCiBDVkVfQ0hFQ0tfVE1QX0ZJTEUgPz0gIiR7VE1QRElSfS9jdmVfY2hlY2siCiAKIENWRV9DSEVDS19ESVIgPz89ICIke0RFUExPWV9ESVJ9L2N2ZSIKQEAgLTE2OSw3ICsxNjksMTAgQEAKICAgICBjdmVzX3BhdGNoZWQgPSBbXQogICAgIGN2ZXNfdW5wYXRjaGVkID0gW10KICAgICBicG4gPSBkLmdldFZhcigiQ1ZFX1BST0RVQ1QiKQotICAgIHB2ID0gZC5nZXRWYXIoIlBWIikuc3BsaXQoIitnaXQiKVswXQorICAgICMgSWYgdGhpcyBoYXMgYmVlbiB1bnNldCB0aGVuIHdlJ3JlIG5vdCBzY2FubmluZyBmb3IgQ1ZFcyBoZXJlIChmb3IgZXhhbXBsZSwgaW1hZ2UgcmVjaXBlcykKKyAgICBpZiBub3QgYnBuOgorICAgICAgICByZXR1cm4gKFtdLCBbXSkKKyAgICBwdiA9IGQuZ2V0VmFyKCJDVkVfVkVSU0lPTiIpLnNwbGl0KCIrZ2l0IilbMF0KICAgICBjdmVzID0gIiAiLmpvaW4ocGF0Y2hlZF9jdmVzKQogICAgIGN2ZV9kYl9kaXIgPSBkLmdldFZhcigiQ1ZFX0NIRUNLX0RCX0RJUiIpCiAgICAgY3ZlX3doaXRlbGlzdCA9IGFzdC5saXRlcmFsX2V2YWwoZC5nZXRWYXIoIkNWRV9DSEVDS19DVkVfV0hJVEVMSVNUIikpCkBAIC0xODEsOSArMTg0LDYgQEAKICAgICAgICAgYmIubm90ZSgiUmVjaXBlIGhhcyBiZWVuIHdoaXRlbGlzdGVkLCBza2lwcGluZyBjaGVjayIpCiAgICAgICAgIHJldHVybiAoW10sIFtdKQogCi0gICAgIyBJdCBpcyBuZWVkZWQgdG8gZXhwb3J0IHRoZSBwcm94aWVzIHRvIGRvd25sb2FkIHRoZSBkYXRhYmFzZSB1c2luZyBIVFRQCi0gICAgYmIudXRpbHMuZXhwb3J0X3Byb3hpZXMoZCkKLQogICAgIHRyeToKICAgICAgICAgIyBXcml0ZSB0aGUgZmF1eCBDU1YgZmlsZSB0byBiZSB1c2VkIHdpdGggY3ZlLWNoZWNrLXRvb2wKICAgICAgICAgZmQsIGZhdXggPSB0ZW1wZmlsZS5ta3N0ZW1wKHByZWZpeD0iY3ZlLWZhdXgtIikKQEAgLTI1MSwxMSArMjUxLDExIEBACiAgICAgQ1ZFIG1hbmlmZXN0IGlmIGVuYWJsZWQuCiAgICAgIiIiCiAKLSAgICBjdmVfZmlsZSA9IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfTE9DQUxfRklMRSIpCisgICAgY3ZlX2ZpbGUgPSBkLmdldFZhcigiQ1ZFX0NIRUNLX0xPRyIpCiAgICAgbnZkX2xpbmsgPSAiaHR0cHM6Ly93ZWIubnZkLm5pc3QuZ292L3ZpZXcvdnVsbi9kZXRhaWw/dnVsbklkPSIKICAgICB3cml0ZV9zdHJpbmcgPSAiIgogICAgIHVucGF0Y2hlZF9jdmVzID0gW10KLSAgICBiYi51dGlscy5ta2RpcmhpZXIoZC5nZXRWYXIoIkNWRV9DSEVDS19MT0NBTF9ESVIiKSkKKyAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGN2ZV9maWxlKSkKIAogICAgIGZvciBjdmUgaW4gc29ydGVkKGN2ZV9kYXRhKToKICAgICAgICAgd3JpdGVfc3RyaW5nICs9ICJQQUNLQUdFIE5BTUU6ICVzXG4iICUgZC5nZXRWYXIoIlBOIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGViaWFuLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RlYmlhbi5iYmNsYXNzCmluZGV4IDgxMjQ1NTguLjk4OWVhOGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGViaWFuLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZWJpYW4uYmJjbGFzcwpAQCAtMjUsMTIgKzI1LDEwIEBACiB9CiAKIHB5dGhvbiBkZWJpYW5fcGFja2FnZV9uYW1lX2hvb2sgKCkgewotICAgIGltcG9ydCBnbG9iLCBjb3B5LCBzdGF0LCBlcnJubywgcmUKKyAgICBpbXBvcnQgZ2xvYiwgY29weSwgc3RhdCwgZXJybm8sIHJlLCBwYXRobGliLCBzdWJwcm9jZXNzCiAKLSAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnKQorICAgIHBrZ2Rlc3QgPSBkLmdldFZhcigiUEtHREVTVCIpCiAgICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKQotICAgIGJpbl9yZSA9IHJlLmNvbXBpbGUoIi4qL3M/IiArIG9zLnBhdGguYmFzZW5hbWUoZC5nZXRWYXIoImJpbmRpciIpKSArICIkIikKLSAgICBsaWJfcmUgPSByZS5jb21waWxlKCIuKi8iICsgb3MucGF0aC5iYXNlbmFtZShkLmdldFZhcigibGliZGlyIikpICsgIiQiKQogICAgIHNvX3JlID0gcmUuY29tcGlsZSgibGliLipcLnNvIikKIAogICAgIGRlZiBzb2NydW5jaChzKToKQEAgLTYwLDI1ICs1OCwzMiBAQAogICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSUFJPVklERVNfJyArIHBrZywgIiAiICsgcGtnICsgIiAoPSIgKyBkLmdldFZhcigiUEtHViIpICsgIikiKQogCiAgICAgZGVmIGF1dG9fbGlibmFtZShwYWNrYWdlcywgb3JpZ19wa2cpOgorICAgICAgICBwID0gbGFtYmRhIHZhcjogcGF0aGxpYi5QdXJlUGF0aChkLmdldFZhcih2YXIpKQorICAgICAgICBsaWJkaXJzID0gKHAoImJhc2VfbGliZGlyIiksIHAoImxpYmRpciIpKQorICAgICAgICBiaW5kaXJzID0gKHAoImJhc2VfYmluZGlyIiksIHAoImJhc2Vfc2JpbmRpciIpLCBwKCJiaW5kaXIiKSwgcCgic2JpbmRpciIpKQorCiAgICAgICAgIHNvbmFtZXMgPSBbXQogICAgICAgICBoYXNfYmlucyA9IDAKICAgICAgICAgaGFzX2xpYnMgPSAwCi0gICAgICAgIGZvciBmaWxlIGluIHBrZ2ZpbGVzW29yaWdfcGtnXToKLSAgICAgICAgICAgIHJvb3QgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZSkKLSAgICAgICAgICAgIGlmIGJpbl9yZS5tYXRjaChyb290KToKKyAgICAgICAgZm9yIGYgaW4gcGtnZmlsZXNbb3JpZ19wa2ddOgorICAgICAgICAgICAgIyBUaGlzIGlzIC4uLi9wYWNrYWdlcy1zcGxpdC9vcmlnX3BrZy8KKyAgICAgICAgICAgIHBrZ3BhdGggPSBwYXRobGliLlB1cmVQYXRoKHBrZ2Rlc3QsIG9yaWdfcGtnKQorICAgICAgICAgICAgIyBTdHJpcCBwa2dwYXRoIG9mZiB0aGUgZnVsbCBwYXRoIHRvIGEgZmlsZSBpbiB0aGUgcGFja2FnZSwgcmUtcm9vdAorICAgICAgICAgICAgIyBzbyBpdCBpcyBhYnNvbHV0ZSwgYW5kIHRoZW4gZ2V0IHRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIHRoZSBmaWxlLgorICAgICAgICAgICAgcGF0aCA9IHBhdGhsaWIuUHVyZVBhdGgoIi8iKSAvIChwYXRobGliLlB1cmVQYXRoKGYpLnJlbGF0aXZlX3RvKHBrZ3BhdGgpLnBhcmVudCkKKyAgICAgICAgICAgIGlmIHBhdGggaW4gYmluZGlyczoKICAgICAgICAgICAgICAgICBoYXNfYmlucyA9IDEKLSAgICAgICAgICAgIGlmIGxpYl9yZS5tYXRjaChyb290KToKKyAgICAgICAgICAgIGlmIHBhdGggaW4gbGliZGlyczoKICAgICAgICAgICAgICAgICBoYXNfbGlicyA9IDEKLSAgICAgICAgICAgICAgICBpZiBzb19yZS5tYXRjaChvcy5wYXRoLmJhc2VuYW1lKGZpbGUpKToKLSAgICAgICAgICAgICAgICAgICAgY21kID0gKGQuZ2V0VmFyKCdUQVJHRVRfUFJFRklYJykgb3IgIiIpICsgIm9iamR1bXAgLXAgIiArIGZpbGUgKyAiIDI+L2Rldi9udWxsIgotICAgICAgICAgICAgICAgICAgICBmZCA9IG9zLnBvcGVuKGNtZCkKLSAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBmZC5yZWFkbGluZXMoKQotICAgICAgICAgICAgICAgICAgICBmZC5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgIGZvciBsIGluIGxpbmVzOgotICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCJccytTT05BTUVccysoW15cc10qKSIsIGwpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBtIGFuZCBub3QgbS5ncm91cCgxKSBpbiBzb25hbWVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvbmFtZXMuYXBwZW5kKG0uZ3JvdXAoMSkpCi0KKyAgICAgICAgICAgICAgICBpZiBzb19yZS5tYXRjaChvcy5wYXRoLmJhc2VuYW1lKGYpKToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgY21kID0gW2QuZXhwYW5kKCIke1RBUkdFVF9QUkVGSVh9b2JqZHVtcCIpLCAiLXAiLCBmXQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kKS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBtIGluIHJlLmZpbmRpdGVyKCJccytTT05BTUVccysoW15cc10rKSIsIG91dHB1dCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbS5ncm91cCgxKSBub3QgaW4gc29uYW1lczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29uYW1lcy5hcHBlbmQobS5ncm91cCgxKSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBiYi5kZWJ1ZygxLCAnTElCTkFNRVM6IHBrZyAlcyBsaWJzICVkIGJpbnMgJWQgc29uYW1lcyAlcycgJSAob3JpZ19wa2csIGhhc19saWJzLCBoYXNfYmlucywgc29uYW1lcykpCiAgICAgICAgIHNvbmFtZSA9IE5vbmUKICAgICAgICAgaWYgbGVuKHNvbmFtZXMpID09IDE6CkBAIC0xMjAsNiArMTI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuZXdwa2cuZmluZChtbHByZSkgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdwa2cgPSBtbHByZSArIG5ld3BrZwogICAgICAgICAgICAgICAgICAgICBpZiBuZXdwa2cgIT0gcGtnOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiZGViaWFuOiByZW5hbWluZyAlcyB0byAlcyIgJSAocGtnLCBuZXdwa2cpKQogICAgICAgICAgICAgICAgICAgICAgICAgZC5zZXRWYXIoJ1BLR18nICsgcGtnLCBuZXdwa2cpCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfcnByb3ZpZGVzKHBrZywgZCkKICAgICAgICAgZWxzZToKQEAgLTEzOCw0ICsxNDQsMyBAQAogRVhQT1JUX0ZVTkNUSU9OUyBwYWNrYWdlX25hbWVfaG9vawogCiBERUJJQU5fTkFNRVMgPSAiMSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXBsb3kuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGVwbG95LmJiY2xhc3MKaW5kZXggOGFkMDdkYS4uNmQ1MjkwOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXBsb3kuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RlcGxveS5iYmNsYXNzCkBAIC04LDQgKzgsNCBAQAogfQogYWRkdGFzayBkb19kZXBsb3lfc2V0c2NlbmUKIGRvX2RlcGxveVtkaXJzXSA9ICIke0RFUExPWURJUn0gJHtCfSIKLWRvX2RlcGxveVtzdGFtcC1leHRyYS1pbmZvXSA9ICIke01BQ0hJTkV9IgorZG9fZGVwbG95W3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORV9BUkNIfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcwppbmRleCA4ZjViYzg2Li41Njg4MmE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RldnRvb2wtc291cmNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXZ0b29sLXNvdXJjZS5iYmNsYXNzCkBAIC0xNTIsOSArMTUyLDY1IEBACiB9CiAKIHB5dGhvbiBkZXZ0b29sX3Bvc3RfcGF0Y2goKSB7CisgICAgaW1wb3J0IHNodXRpbAogICAgIHRlbXBkaXIgPSBkLmdldFZhcignREVWVE9PTF9URU1QRElSJykKICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlbXBkaXIsICdzcmNzdWJkaXInKSwgJ3InKSBhcyBmOgogICAgICAgICBzcmNzdWJkaXIgPSBmLnJlYWQoKQorICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2luaXRpYWxfcmV2JyksICdyJykgYXMgZjoKKyAgICAgICAgaW5pdGlhbF9yZXYgPSBmLnJlYWQoKQorCisgICAgZGVmIHJtX3BhdGNoZXMoKToKKyAgICAgICAgcGF0Y2hlc19kaXIgPSBvcy5wYXRoLmpvaW4oc3Jjc3ViZGlyLCAncGF0Y2hlcycpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGNoZXNfZGlyKToKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUocGF0Y2hlc19kaXIpCisgICAgICAgICMgUmVzdG9yZSBhbnkgInBhdGNoZXMiIGRpcmVjdG9yeSB0aGF0IHdhcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBzb3VyY2UgdHJlZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGNoZWNrb3V0IC0tIHBhdGNoZXMnLCBjd2Q9c3Jjc3ViZGlyKQorICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGV4dHJhX292ZXJyaWRlcyA9IGQuZ2V0VmFyKCdERVZUT09MX0VYVFJBX09WRVJSSURFUycpCisgICAgaWYgZXh0cmFfb3ZlcnJpZGVzOgorICAgICAgICBleHRyYV9vdmVycmlkZV9saXN0ID0gZXh0cmFfb3ZlcnJpZGVzLnNwbGl0KCc6JykKKyAgICAgICAgZGV2YnJhbmNoID0gZC5nZXRWYXIoJ0RFVlRPT0xfREVWQlJBTkNIJykKKyAgICAgICAgZGVmYXVsdF9vdmVycmlkZXMgPSBkLmdldFZhcignT1ZFUlJJREVTJykuc3BsaXQoJzonKQorICAgICAgICBub19vdmVycmlkZXMgPSBbXQorICAgICAgICAjIEZpcnN0LCB3ZSBtYXkgaGF2ZSBzb21lIG92ZXJyaWRlcyB0aGF0IGFyZSByZWZlcnJlZCB0byBpbiB0aGUgcmVjaXBlIHNldCBpbgorICAgICAgICAjIG91ciBjb25maWd1cmF0aW9uLCBzbyB3ZSBuZWVkIHRvIG1ha2UgYSBicmFuY2ggdGhhdCBleGNsdWRlcyB0aG9zZQorICAgICAgICBmb3Igb3ZlcnJpZGUgaW4gZGVmYXVsdF9vdmVycmlkZXM6CisgICAgICAgICAgICBpZiBvdmVycmlkZSBub3QgaW4gZXh0cmFfb3ZlcnJpZGVfbGlzdDoKKyAgICAgICAgICAgICAgICBub19vdmVycmlkZXMuYXBwZW5kKG92ZXJyaWRlKQorICAgICAgICBpZiBkZWZhdWx0X292ZXJyaWRlcyAhPSBub19vdmVycmlkZXM6CisgICAgICAgICAgICAjIFNvbWUgb3ZlcnJpZGVzIGFyZSBhY3RpdmUgaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiwgc28KKyAgICAgICAgICAgICMgd2UgbmVlZCB0byBjcmVhdGUgYSBicmFuY2ggd2hlcmUgbm9uZSBvZiB0aGUgb3ZlcnJpZGVzIGFyZSBhY3RpdmUKKyAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgY2hlY2tvdXQgJXMgLWIgZGV2dG9vbC1uby1vdmVycmlkZXMnICUgaW5pdGlhbF9yZXYsIGN3ZD1zcmNzdWJkaXIpCisgICAgICAgICAgICAjIFJ1biBkb19wYXRjaCBmdW5jdGlvbiB3aXRoIHRoZSBvdmVycmlkZSBhcHBsaWVkCisgICAgICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ09WRVJSSURFUycsICc6Jy5qb2luKG5vX292ZXJyaWRlcykpCisgICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX3BhdGNoJywgbG9jYWxkYXRhKQorICAgICAgICAgICAgcm1fcGF0Y2hlcygpCisgICAgICAgICAgICAjIE5vdyB3ZSBuZWVkIHRvIHJlY29uY2lsZSB0aGUgZGV2IGJyYW5jaCB3aXRoIHRoZSBuby1vdmVycmlkZXMgb25lCisgICAgICAgICAgICAjIChvdGhlcndpc2Ugd2UnZCBsaWtlbHkgYmUgbGVmdCB3aXRoIGlkZW50aWNhbCBjb21taXRzIHRoYXQgaGF2ZSBkaWZmZXJlbnQgaGFzaGVzKQorICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBjaGVja291dCAlcycgJSBkZXZicmFuY2gsIGN3ZD1zcmNzdWJkaXIpCisgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IHJlYmFzZSBkZXZ0b29sLW5vLW92ZXJyaWRlcycsIGN3ZD1zcmNzdWJkaXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGNoZWNrb3V0ICVzIC1iIGRldnRvb2wtbm8tb3ZlcnJpZGVzJyAlIGRldmJyYW5jaCwgY3dkPXNyY3N1YmRpcikKKworICAgICAgICBmb3Igb3ZlcnJpZGUgaW4gZXh0cmFfb3ZlcnJpZGVfbGlzdDoKKyAgICAgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQorICAgICAgICAgICAgaWYgb3ZlcnJpZGUgaW4gZGVmYXVsdF9vdmVycmlkZXM6CisgICAgICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBicmFuY2ggZGV2dG9vbC1vdmVycmlkZS0lcyAlcycgJSAob3ZlcnJpZGUsIGRldmJyYW5jaCksIGN3ZD1zcmNzdWJkaXIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgUmVzZXQgYmFjayB0byB0aGUgaW5pdGlhbCBjb21taXQgb24gYSBuZXcgYnJhbmNoCisgICAgICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBjaGVja291dCAlcyAtYiBkZXZ0b29sLW92ZXJyaWRlLSVzJyAlIChpbml0aWFsX3Jldiwgb3ZlcnJpZGUpLCBjd2Q9c3Jjc3ViZGlyKQorICAgICAgICAgICAgICAgICMgUnVuIGRvX3BhdGNoIGZ1bmN0aW9uIHdpdGggdGhlIG92ZXJyaWRlIGFwcGxpZWQKKyAgICAgICAgICAgICAgICBsb2NhbGRhdGEuYXBwZW5kVmFyKCdPVkVSUklERVMnLCAnOiVzJyAlIG92ZXJyaWRlKQorICAgICAgICAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fcGF0Y2gnLCBsb2NhbGRhdGEpCisgICAgICAgICAgICAgICAgcm1fcGF0Y2hlcygpCisgICAgICAgICAgICAgICAgIyBOb3cgd2UgbmVlZCB0byByZWNvbmNpbGUgdGhlIG5ldyBicmFuY2ggd2l0aCB0aGUgbm8tb3ZlcnJpZGVzIG9uZQorICAgICAgICAgICAgICAgICMgKG90aGVyd2lzZSB3ZSdkIGxpa2VseSBiZSBsZWZ0IHdpdGggaWRlbnRpY2FsIGNvbW1pdHMgdGhhdCBoYXZlIGRpZmZlcmVudCBoYXNoZXMpCisgICAgICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCByZWJhc2UgZGV2dG9vbC1uby1vdmVycmlkZXMnLCBjd2Q9c3Jjc3ViZGlyKQorICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGNoZWNrb3V0ICVzJyAlIGRldmJyYW5jaCwgY3dkPXNyY3N1YmRpcikKICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IHRhZyAtZiBkZXZ0b29sLXBhdGNoZWQnLCBjd2Q9c3Jjc3ViZGlyKQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb19mZWF0dXJlc19jaGVjay5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0cm9fZmVhdHVyZXNfY2hlY2suYmJjbGFzcwppbmRleCBlNzRkM2MwLi45Yjc4YjAzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb19mZWF0dXJlc19jaGVjay5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvX2ZlYXR1cmVzX2NoZWNrLmJiY2xhc3MKQEAgLTE3LDcgKzE3LDcgQEAKICAgICBpZiBhbnlfb2ZfZGlzdHJvX2ZlYXR1cmVzOgogICAgICAgICBhbnlfb2ZfZGlzdHJvX2ZlYXR1cmVzID0gYW55X29mX2Rpc3Ryb19mZWF0dXJlcy5zcGxpdCgpCiAgICAgICAgIGlmIHNldC5pc2Rpc2pvaW50KHNldChhbnlfb2ZfZGlzdHJvX2ZlYXR1cmVzKSxzZXQoZGlzdHJvX2ZlYXR1cmVzKSk6Ci0gICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgib25lIG9mICclcycgbmVlZHMgdG8gYmUgaW4gRElTVFJPX0ZFQVRVUkVTIiAlIGFueV9vZl9kaXN0cm9fZmVhdHVyZXMpCisgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJvbmUgb2YgJyVzJyBuZWVkcyB0byBiZSBpbiBESVNUUk9fRkVBVFVSRVMiICUgYW55X29mX2Rpc3Ryb19mZWF0dXJlcykKIAogICAgIHJlcXVpcmVkX2Rpc3Ryb19mZWF0dXJlcyA9IGQuZ2V0VmFyKCdSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMnKQogICAgIGlmIHJlcXVpcmVkX2Rpc3Ryb19mZWF0dXJlczoKQEAgLTI2LDEyICsyNiwxMiBAQAogICAgICAgICAgICAgaWYgZiBpbiBkaXN0cm9fZmVhdHVyZXM6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIm1pc3NpbmcgcmVxdWlyZWQgZGlzdHJvIGZlYXR1cmUgJyVzJyAobm90IGluIERJU1RST19GRUFUVVJFUykiICUgZikKKyAgICAgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJtaXNzaW5nIHJlcXVpcmVkIGRpc3RybyBmZWF0dXJlICclcycgKG5vdCBpbiBESVNUUk9fRkVBVFVSRVMpIiAlIGYpCiAKICAgICBjb25mbGljdF9kaXN0cm9fZmVhdHVyZXMgPSBkLmdldFZhcignQ09ORkxJQ1RfRElTVFJPX0ZFQVRVUkVTJykKICAgICBpZiBjb25mbGljdF9kaXN0cm9fZmVhdHVyZXM6CiAgICAgICAgIGNvbmZsaWN0X2Rpc3Ryb19mZWF0dXJlcyA9IGNvbmZsaWN0X2Rpc3Ryb19mZWF0dXJlcy5zcGxpdCgpCiAgICAgICAgIGZvciBmIGluIGNvbmZsaWN0X2Rpc3Ryb19mZWF0dXJlczoKICAgICAgICAgICAgIGlmIGYgaW4gZGlzdHJvX2ZlYXR1cmVzOgotICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJjb25mbGljdGluZyBkaXN0cm8gZmVhdHVyZSAnJXMnIChpbiBESVNUUk9fRkVBVFVSRVMpIiAlIGYpCisgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiY29uZmxpY3RpbmcgZGlzdHJvIGZlYXR1cmUgJyVzJyAoaW4gRElTVFJPX0ZFQVRVUkVTKSIgJSBmKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0cm9kYXRhLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb2RhdGEuYmJjbGFzcwppbmRleCBjODVmN2IzLi41OWVlOGNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb2RhdGEuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb2RhdGEuYmJjbGFzcwpAQCAtMTg4LDE0ICsxODgsNiBAQAogfQogZG9fZGlzdHJvZGF0YVt2YXJkZXBzZXhjbHVkZV0gPSAiREFURVRJTUUiCiAKLWFkZHRhc2sgZGlzdHJvZGF0YWFsbCBhZnRlciBkb19kaXN0cm9kYXRhCi1kb19kaXN0cm9kYXRhYWxsW3JlY3JkZXB0YXNrXSA9ICJkb19kaXN0cm9kYXRhYWxsIGRvX2Rpc3Ryb2RhdGEiCi1kb19kaXN0cm9kYXRhYWxsW3JlY2lkZXB0YXNrXSA9ICJkb18ke0JCX0RFRkFVTFRfVEFTS30iCi1kb19kaXN0cm9kYXRhYWxsW25vc3RhbXBdID0gIjEiCi1kb19kaXN0cm9kYXRhYWxsKCkgewotICAgICAgICA6Ci19Ci0KIGFkZGhhbmRsZXIgY2hlY2twa2dfZXZlbnRoYW5kbGVyCiBjaGVja3BrZ19ldmVudGhhbmRsZXJbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5CdWlsZFN0YXJ0ZWQgYmIuZXZlbnQuQnVpbGRDb21wbGV0ZWQiCiBweXRob24gY2hlY2twa2dfZXZlbnRoYW5kbGVyKCkgewpAQCAtMjcyLDI0ICsyNjQsMTUgQEAKICAgICAgICAgICAgIGlmIHVwc3RyZWFtX2NoZWNrX3VucmVsaWFibGUgPT0gIjEiOgogICAgICAgICAgICAgICAgIHJldHVybiAiTi9BIiwgIkNIRUNLX0lTX1VOUkVMSUFCTEUiCiAKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB1diA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfdXBzdHJlYW1fdmVyc2lvbihsb2NhbGRhdGEpCi0gICAgICAgICAgICAgICAgcHVwdmVyID0gdXZbJ3ZlcnNpb24nXSBpZiB1dlsndmVyc2lvbiddIGVsc2UgIk4vQSIKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBwdXB2ZXIgPSAiTi9BIgorICAgICAgICAgICAgdXYgPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3Vwc3RyZWFtX3ZlcnNpb24obG9jYWxkYXRhKQorICAgICAgICAgICAgcHVwdmVyID0gdXZbJ3ZlcnNpb24nXSBpZiB1dlsndmVyc2lvbiddIGVsc2UgIk4vQSIKKyAgICAgICAgICAgIHB2ZXJzaW9uID0gdXZbJ2N1cnJlbnRfdmVyc2lvbiddCisgICAgICAgICAgICByZXZpc2lvbiA9IHV2WydyZXZpc2lvbiddIGlmIHV2WydyZXZpc2lvbiddIGVsc2UgIk4vQSIKIAogICAgICAgICAgICAgaWYgcHVwdmVyID09ICJOL0EiOgogICAgICAgICAgICAgICAgIHBzdGF0dXMgPSAiVU5LTk9XTiIgaWYgdXBzdHJlYW1fdmVyc2lvbl91bmtub3duIGVsc2UgIlVOS05PV05fQlJPS0VOIgogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzcmNfdXJpID0gKGxvY2FsZGF0YS5nZXRWYXIoJ1NSQ19VUkknKSBvciAnJykuc3BsaXQoKQotICAgICAgICAgICAgICAgIGlmIHNyY191cmk6Ci0gICAgICAgICAgICAgICAgICAgIHVyaV90eXBlLCBfLCBfLCBfLCBfLCBfID0gZGVjb2RldXJsKHNyY191cmlbMF0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdXJpX3R5cGUgPSAibm9uZSIKLSAgICAgICAgICAgICAgICBwdiwgXywgXyA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfcHZfd2l0aG91dF9zcmNwdihwdmVyc2lvbiwgdXJpX3R5cGUpCi0gICAgICAgICAgICAgICAgdXB2LCBfLCBfID0gb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9wdl93aXRob3V0X3NyY3B2KHB1cHZlciwgdXJpX3R5cGUpCi0KLSAgICAgICAgICAgICAgICBjbXAgPSB2ZXJjbXBfc3RyaW5nKHB2LCB1cHYpCisgICAgICAgICAgICAgICAgY21wID0gdmVyY21wX3N0cmluZyhwdmVyc2lvbiwgcHVwdmVyKQogICAgICAgICAgICAgICAgIGlmIGNtcCA9PSAtMToKICAgICAgICAgICAgICAgICAgICAgcHN0YXR1cyA9ICJVUERBVEUiIGlmIG5vdCB1cHN0cmVhbV92ZXJzaW9uX3Vua25vd24gZWxzZSAiS05PV05fQlJPS0VOIgogICAgICAgICAgICAgICAgIGVsaWYgY21wID09IDA6CkBAIC0yOTcsNyArMjgwLDcgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBwc3RhdHVzID0gIlVOS05PV04iIGlmIHVwc3RyZWFtX3ZlcnNpb25fdW5rbm93biBlbHNlICJVTktOT1dOX0JST0tFTiIKIAotICAgICAgICAgICAgcmV0dXJuIHB1cHZlciwgcHN0YXR1cworICAgICAgICAgICAgcmV0dXJuIHB2ZXJzaW9uLCBwdXB2ZXIsIHBzdGF0dXMsIHJldmlzaW9uCiAKIAogICAgICAgICAiIiJpbml0aWFsaXplIGxvZyBmaWxlcy4iIiIKQEAgLTMzNCw3ICszMTcsNiBAQAogCiAgICAgICAgIHBkZXNjID0gbG9jYWxkYXRhLmdldFZhcignREVTQ1JJUFRJT04nKQogICAgICAgICBwZ3JwID0gbG9jYWxkYXRhLmdldFZhcignU0VDVElPTicpCi0gICAgICAgIHB2ZXJzaW9uID0gbG9jYWxkYXRhLmdldFZhcignUFYnKQogICAgICAgICBwbGljZW5zZSA9IGxvY2FsZGF0YS5nZXRWYXIoJ0xJQ0VOU0UnKQogICAgICAgICBwc2VjdGlvbiA9IGxvY2FsZGF0YS5nZXRWYXIoJ1NFQ1RJT04nKQogICAgICAgICBwaG9tZSA9IGxvY2FsZGF0YS5nZXRWYXIoJ0hPTUVQQUdFJykKQEAgLTM0NSw3ICszMjcsNyBAQAogICAgICAgICBwc3JjdXJpID0gbG9jYWxkYXRhLmdldFZhcignU1JDX1VSSScpCiAgICAgICAgIG1haW50YWluZXIgPSBsb2NhbGRhdGEuZ2V0VmFyKCdSRUNJUEVfTUFJTlRBSU5FUicpCiAKLSAgICAgICAgcHVwdmVyLCBwc3RhdHVzID0gZ2V0X3Vwc3RyZWFtX3ZlcnNpb25fYW5kX3N0YXR1cygpCisgICAgICAgIHB2ZXJzaW9uLCBwdXB2ZXIsIHBzdGF0dXMsIHByZXZpc2lvbiA9IGdldF91cHN0cmVhbV92ZXJzaW9uX2FuZF9zdGF0dXMoKQogCiAgICAgICAgIGlmIHBzcmN1cmk6CiAgICAgICAgICAgICBwc3JjdXJpID0gcHNyY3VyaS5zcGxpdCgpWzBdCkBAIC0zNTgsMjAgKzM0MCwxMiBAQAogICAgICAgICB3aXRoIG9wZW4obG9nZmlsZSwgImEiKSBhcyBmOgogICAgICAgICAgICAgd3JpdGVyID0gY3N2LndyaXRlcihmLCBkZWxpbWl0ZXI9J1x0JykKICAgICAgICAgICAgIHdyaXRlci53cml0ZXJvdyhbcG5hbWUsIHB2ZXJzaW9uLCBwdXB2ZXIsIHBsaWNlbnNlLCBwc2VjdGlvbiwgcGhvbWUsIAotICAgICAgICAgICAgICAgIHByZWxlYXNlLCBwZGVwZW5kcywgcGJ1Z3RyYWNrZXIsIHBwZSwgcGRlc2MsIHBzdGF0dXMsIHB1cHZlciwKKyAgICAgICAgICAgICAgICBwcmVsZWFzZSwgcGRlcGVuZHMsIHBidWd0cmFja2VyLCBwcGUsIHBkZXNjLCBwc3RhdHVzLCBwcmV2aXNpb24sCiAgICAgICAgICAgICAgICAgcHNyY3VyaSwgbWFpbnRhaW5lciwgbm9fdXBncl9yZWFzb25dKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiB9CiAKLWFkZHRhc2sgY2hlY2twa2dhbGwgYWZ0ZXIgZG9fY2hlY2twa2cKLWRvX2NoZWNrcGtnYWxsW3JlY3JkZXB0YXNrXSA9ICJkb19jaGVja3BrZ2FsbCBkb19jaGVja3BrZyIKLWRvX2NoZWNrcGtnYWxsW3JlY2lkZXB0YXNrXSA9ICJkb18ke0JCX0RFRkFVTFRfVEFTS30iCi1kb19jaGVja3BrZ2FsbFtub3N0YW1wXSA9ICIxIgotZG9fY2hlY2twa2dhbGwoKSB7Ci0gICAgICAgIDoKLX0KLQogYWRkaGFuZGxlciBkaXN0cm9fY2hlY2tfZXZlbnRoYW5kbGVyCiBkaXN0cm9fY2hlY2tfZXZlbnRoYW5kbGVyW2V2ZW50bWFza10gPSAiYmIuZXZlbnQuQnVpbGRTdGFydGVkIgogcHl0aG9uIGRpc3Ryb19jaGVja19ldmVudGhhbmRsZXIoKSB7CkBAIC00MDcsMTMgKzM4MSw2IEBACiAgICAgZGMuc2F2ZV9kaXN0cm9fY2hlY2tfcmVzdWx0KHJlc3VsdCwgZGF0ZXRpbWUsIHJlc3VsdF9maWxlLCBkKQogfQogCi1hZGR0YXNrIGRpc3Ryb19jaGVja2FsbCBhZnRlciBkb19kaXN0cm9fY2hlY2sKLWRvX2Rpc3Ryb19jaGVja2FsbFtyZWNyZGVwdGFza10gPSAiZG9fZGlzdHJvX2NoZWNrYWxsIGRvX2Rpc3Ryb19jaGVjayIKLWRvX2Rpc3Ryb19jaGVja2FsbFtyZWNpZGVwdGFza10gPSAiZG9fJHtCQl9ERUZBVUxUX1RBU0t9IgotZG9fZGlzdHJvX2NoZWNrYWxsW25vc3RhbXBdID0gIjEiCi1kb19kaXN0cm9fY2hlY2thbGwoKSB7Ci0gICAgICAgIDoKLX0KICMKICNDaGVjayBNaXNzaW5nIExpY2Vuc2UgVGV4dC4KICNVc2UgdGhpcyB0YXNrIHRvIGdlbmVyYXRlIHRoZSBtaXNzaW5nIGxpY2Vuc2UgdGV4dCBkYXRhIGZvciBwa2ctcmVwb3J0IHN5c3RlbSwKQEAgLTQ1OCwxMSArNDI1LDMgQEAKICAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiAgICAgcmV0dXJuCiB9Ci0KLWFkZHRhc2sgY2hlY2tsaWNlbnNlYWxsIGFmdGVyIGRvX2NoZWNrbGljZW5zZQotZG9fY2hlY2tsaWNlbnNlYWxsW3JlY3JkZXB0YXNrXSA9ICJkb19jaGVja2xpY2Vuc2VhbGwgZG9fY2hlY2tsaWNlbnNlIgotZG9fY2hlY2tsaWNlbnNlYWxsW3JlY2lkZXB0YXNrXSA9ICJkb18ke0JCX0RFRkFVTFRfVEFTS30iCi1kb19jaGVja2xpY2Vuc2VhbGxbbm9zdGFtcF0gPSAiMSIKLWRvX2NoZWNrbGljZW5zZWFsbCgpIHsKLSAgICAgICAgOgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCmluZGV4IDY1ZGQxM2QuLmM5ZjVjZjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKQEAgLTUzLDYgKzUzLDkgQEAKICAgICAgICAgICAgIGQuc2V0VmFyKCdCQl9ET05UX0NBQ0hFJywgJzEnKQogCiAgICAgaWYgZXh0ZXJuYWxzcmM6CisgICAgICAgIGltcG9ydCBvZS5yZWNpcGV1dGlscworICAgICAgICBpbXBvcnQgb2UucGF0aAorCiAgICAgICAgIGQuc2V0VmFyKCdTJywgZXh0ZXJuYWxzcmMpCiAgICAgICAgIGlmIGV4dGVybmFsc3JjYnVpbGQ6CiAgICAgICAgICAgICBkLnNldFZhcignQicsIGV4dGVybmFsc3JjYnVpbGQpCkBAIC04NSwxMCArODgsMTAgQEAKICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcodGFzaywgImxvY2tmaWxlcyIsICIgJHtTfS9zaW5nbGV0YXNrLmxvY2siKQogCiAgICAgICAgICAgICAjIFdlIGRvIG5vdCB3YW50IG91ciBzb3VyY2UgdG8gYmUgd2lwZWQgb3V0LCBldmVyIChrZXJuZWwuYmJjbGFzcyBkb2VzIHRoaXMgZm9yIGRvX2NsZWFuKQotICAgICAgICAgICAgY2xlYW5kaXJzID0gKGQuZ2V0VmFyRmxhZyh0YXNrLCAnY2xlYW5kaXJzJywgRmFsc2UpIG9yICcnKS5zcGxpdCgpCisgICAgICAgICAgICBjbGVhbmRpcnMgPSBvZS5yZWNpcGV1dGlscy5zcGxpdF92YXJfdmFsdWUoZC5nZXRWYXJGbGFnKHRhc2ssICdjbGVhbmRpcnMnLCBGYWxzZSkgb3IgJycpCiAgICAgICAgICAgICBzZXR2YWx1ZSA9IEZhbHNlCiAgICAgICAgICAgICBmb3IgY2xlYW5kaXIgaW4gY2xlYW5kaXJzWzpdOgotICAgICAgICAgICAgICAgIGlmIGQuZXhwYW5kKGNsZWFuZGlyKSA9PSBleHRlcm5hbHNyYzoKKyAgICAgICAgICAgICAgICBpZiBvZS5wYXRoLmlzX3BhdGhfcGFyZW50KGV4dGVybmFsc3JjLCBkLmV4cGFuZChjbGVhbmRpcikpOgogICAgICAgICAgICAgICAgICAgICBjbGVhbmRpcnMucmVtb3ZlKGNsZWFuZGlyKQogICAgICAgICAgICAgICAgICAgICBzZXR2YWx1ZSA9IFRydWUKICAgICAgICAgICAgIGlmIHNldHZhbHVlOgpAQCAtMTczLDcgKzE3Niw5IEBACiBleHRlcm5hbHNyY19kb19idWlsZGNsZWFuKCkgewogCWlmIFsgLWUgTWFrZWZpbGUgLW8gLWUgbWFrZWZpbGUgLW8gLWUgR05VbWFrZWZpbGUgXTsgdGhlbgogCQlybSAtZiAke0AnICcuam9pbihbeC5zcGxpdCgnOicpWzBdIGZvciB4IGluIChkLmdldFZhcignRVhURVJOQUxTUkNfU1lNTElOS1MnKSBvciAnJykuc3BsaXQoKV0pfQotCQlvZV9ydW5tYWtlIGNsZWFuIHx8IGRpZSAibWFrZSBmYWlsZWQiCisJCWlmIFsgIiR7Q0xFQU5CUk9LRU59IiAhPSAiMSIgXTsgdGhlbgorCQkJb2VfcnVubWFrZSBjbGVhbiB8fCBkaWUgIm1ha2UgZmFpbGVkIgorCQlmaQogCWVsc2UKIAkJYmJub3RlICJub3RoaW5nIHRvIGRvIC0gbm8gbWFrZWZpbGUgZm91bmQiCiAJZmkKQEAgLTE4OSw3ICsxOTQsNyBAQAogCiAgICAgdHJ5OgogICAgICAgICBnaXRfZGlyID0gb3MucGF0aC5qb2luKHNfZGlyLAotICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydnaXQnLCAnLUMnLCBzX2RpciwgJ3Jldi1wYXJzZScsICctLWdpdC1kaXInXSkuZGVjb2RlKCJ1dGYtOCIpLnJzdHJpcCgpKQorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydnaXQnLCAnLUMnLCBzX2RpciwgJ3Jldi1wYXJzZScsICctLWdpdC1kaXInXSwgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCkuZGVjb2RlKCJ1dGYtOCIpLnJzdHJpcCgpKQogICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKICAgICAgICAgcGFzcwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dldHRleHQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2V0dGV4dC5iYmNsYXNzCmluZGV4IGRhNjhlNjMuLmJlMmVmM2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2V0dGV4dC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2V0dGV4dC5iYmNsYXNzCkBAIC0zLDcgKzMsNyBAQAogICAgICAgICByZXR1cm4gIiIKICAgICBpZiBkLmdldFZhcignVVNFX05MUycpID09ICdubyc6CiAgICAgICAgIHJldHVybiAiZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSIKLSAgICByZXR1cm4gZC5nZXRWYXIoJ0RFUEVORFNfR0VUVEVYVCcsIEZhbHNlKQorICAgIHJldHVybiAiZ2V0dGV4dC1uYXRpdmUiCiAKIGRlZiBnZXR0ZXh0X29lY29uZihkKToKICAgICBpZiBkLmdldFZhcignVVNFX05MUycpID09ICdubyc6CkBAIC0xMyw4ICsxMyw2IEBACiAgICAgICAgIHJldHVybiAnLS1kaXNhYmxlLW5scycKICAgICByZXR1cm4gIi0tZW5hYmxlLW5scyIKIAotREVQRU5EU19HRVRURVhUID8/PSAiZ2V0dGV4dC1uYXRpdmUiCi0KIEJBU0VERVBFTkRTX2FwcGVuZCA9ICIgJHtAZ2V0dGV4dF9kZXBlbmRlbmNpZXMoZCl9IgogRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgJHtAZ2V0dGV4dF9vZWNvbmYoZCl9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dpby1tb2R1bGUtY2FjaGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2lvLW1vZHVsZS1jYWNoZS5iYmNsYXNzCmluZGV4IGE4MTkwYjcuLmU0MjliZDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2lvLW1vZHVsZS1jYWNoZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2lvLW1vZHVsZS1jYWNoZS5iYmNsYXNzCkBAIC05LDYgKzksNyBAQAogICAgICAgICAgICAgbWxwcmVmaXg9JHtNTFBSRUZJWH0gXAogICAgICAgICAgICAgYmlucHJlZml4PSR7TUxQUkVGSVh9IFwKICAgICAgICAgICAgIGxpYmRpcj0ke2xpYmRpcn0gXAorICAgICAgICAgICAgbGliZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9IFwKICAgICAgICAgICAgIGJhc2VfbGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKICAgICAgICAgICAgIGJpbmRpcj0ke2JpbmRpcn0KIGVsc2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2xpZGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2xpZGUuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjQyMTc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nbGlkZS5iYmNsYXNzCkBAIC0wLDAgKzEsOSBAQAorIyBIYW5kbGUgR2xpZGUgVmVuZG9yIFBhY2thZ2UgTWFuYWdlbWVudCB1c2UKKyMKKyMgQ29weXJpZ2h0IDIwMTggKEMpIE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitERVBFTkRTX2FwcGVuZCA9ICIgZ2xpZGUtbmF0aXZlIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgKCBjZCAke0J9L3NyYy8ke0dPX0lNUE9SVH0gJiYgZ2xpZGUgaW5zdGFsbCApCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dub21lYmFzZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nbm9tZWJhc2UuYmJjbGFzcwppbmRleCA0Y2NjOGUwLi5lZmNiNmNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dub21lYmFzZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ25vbWViYXNlLmJiY2xhc3MKQEAgLTIwLDcgKzIwLDggQEAKIAogRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2RldmhlbHAiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworR05PTUVCQVNFQlVJTERDTEFTUyA/Pz0gImF1dG90b29scyIKK2luaGVyaXQgJHtHTk9NRUJBU0VCVUlMRENMQVNTfSBwa2djb25maWcKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9zY3JvbGxrZWVwZXIvKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzCmluZGV4IDA5YjAxYTguLmQzM2Q4M2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MKQEAgLTEsMjMgKzEsNiBAQAogaW5oZXJpdCBnb2FyY2ggcHRlc3QKIAotZGVmIGdldF9nb19wYXJhbGxlbF9tYWtlKGQpOgotICAgIHBtID0gKGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJykgb3IgJycpLnNwbGl0KCkKLSAgICAjIGxvb2sgZm9yICctaicgYW5kIHRocm93IG90aGVyIG9wdGlvbnMgKGUuZy4gJy1sJykgYXdheQotICAgICMgYmVjYXVzZSB0aGV5IG1pZ2h0IGhhdmUgYSBkaWZmZXJlbnQgbWVhbmluZyBpbiBnb2xhbmcKLSAgICB3aGlsZSBwbToKLSAgICAgICAgb3B0ID0gcG0ucG9wKDApCi0gICAgICAgIGlmIG9wdCA9PSAnLWonOgotICAgICAgICAgICAgdiA9IHBtLnBvcCgwKQotICAgICAgICBlbGlmIG9wdC5zdGFydHN3aXRoKCctaicpOgotICAgICAgICAgICAgdiA9IG9wdFsyOl0uc3RyaXAoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICByZXR1cm4gJy1wICVkJyAlIGludCh2KQotCi0gICAgcmV0dXJuICIiCi0KLUdPX1BBUkFMTEVMX0JVSUxEID89ICIke0BnZXRfZ29fcGFyYWxsZWxfbWFrZShkKX0iCitHT19QQVJBTExFTF9CVUlMRCA/PSAiJHtAb2UudXRpbHMucGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCAnLXAgJWQnKX0iCiAKIEdPUk9PVF9jbGFzcy1uYXRpdmUgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgogR09ST09UX2NsYXNzLW5hdGl2ZXNkayA9ICIke1NUQUdJTkdfRElSX1RBUkdFVH0ke2xpYmRpcn0vZ28iCkBAIC00MSw4ICsyNCw5IEBACiBHT19MSU5LTU9ERV9jbGFzcy1uYXRpdmVzZGsgPSAiLS1saW5rbW9kZT1leHRlcm5hbCIKIEdPX0xERkxBR1MgPz0gJy1sZGZsYWdzPSIke0dPX1JQQVRIfSAke0dPX0xJTktNT0RFfSAtZXh0bGRmbGFncyAnJHtHT19FWFRMREZMQUdTfSciJwogZXhwb3J0IEdPQlVJTERGTEFHUyA/PSAiLXYgJHtHT19MREZMQUdTfSIKK2V4cG9ydCBHT1BBVEhfT01JVF9JTl9BQ1RJT05JRCA/PSAiMSIKIGV4cG9ydCBHT1BURVNUQlVJTERGTEFHUyA/PSAiJHtHT0JVSUxERkxBR1N9IC1jIgotZXhwb3J0IEdPUFRFU1RGTEFHUyA/PSAiLXRlc3QudiIKK2V4cG9ydCBHT1BURVNURkxBR1MgPz0gIiIKIEdPQlVJTERGTEFHU19wcmVwZW5kX3Rhc2stY29tcGlsZSA9ICIke0dPX1BBUkFMTEVMX0JVSUxEfSAiCiAKIGV4cG9ydCBHTyA9ICIke0hPU1RfUFJFRklYfWdvIgpAQCAtNTAsOSArMzQsNiBAQAogR09UT09MRElSX2NsYXNzLW5hdGl2ZSA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28vcGtnL3Rvb2wvJHtCVUlMRF9HT1RVUExFfSIKIGV4cG9ydCBHT1RPT0xESVIKIAotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0xERkxBR1MgPSAiIgotCiBleHBvcnQgQ0dPX0VOQUJMRUQgPz0gIjEiCiBleHBvcnQgQ0dPX0NGTEFHUyA/PSAiJHtDRkxBR1N9IgogZXhwb3J0IENHT19DUFBGTEFHUyA/PSAiJHtDUFBGTEFHU30iCkBAIC02NCw4ICs0NSw5IEBACiAKIEIgPSAiJHtXT1JLRElSfS9idWlsZCIKIGV4cG9ydCBHT1BBVEggPSAiJHtCfSIKLUdPX1RNUERJUiA/PSAiJHtXT1JLRElSfS9nby10bXAiCi1HT19UTVBESVJbdmFyZGVwdmFsdWVdID0gIiIKK2V4cG9ydCBHT0NBQ0hFID0gIm9mZiIKK2V4cG9ydCBHT1RNUERJUiA/PSAiJHtXT1JLRElSfS9nby10bXAiCitHT1RNUERJUlt2YXJkZXB2YWx1ZV0gPSAiIgogCiBweXRob24gZ29fZG9fdW5wYWNrKCkgewogICAgIHNyY191cmkgPSAoZC5nZXRWYXIoJ1NSQ19VUkknKSBvciAiIikuc3BsaXQoKQpAQCAtOTEsNyArNzMsNyBAQAogfQogCiBnb19saXN0X3BhY2thZ2VfdGVzdHMoKSB7Ci0gICAgJHtHT30gbGlzdCAtZiAne3suSW1wb3J0UGF0aH19IHt7LlRlc3RHb0ZpbGVzfX0nICR7R09CVUlMREZMQUdTfSAke0dPX0lOU1RBTEx9IHwgXAorCSR7R099IGxpc3QgLWYgJ3t7LkltcG9ydFBhdGh9fSB7ey5UZXN0R29GaWxlc319JyAke0dPQlVJTERGTEFHU30gJHtHT19JTlNUQUxMfSB8IFwKIAkJZ3JlcCAtdiAnXFtcXSQnIHwgXAogCQllZ3JlcCAtdiAnJHtHT19JTlNUQUxMX0ZJTFRFUk9VVH0nIHwgXAogCQlhd2sgJ3sgcHJpbnQgJDEgfScKQEAgLTEwMCwzMiArODIsMzcgQEAKIGdvX2RvX2NvbmZpZ3VyZSgpIHsKIAlsbiAtc25mICR7U30vc3JjICR7Qn0vCiB9Citkb19jb25maWd1cmVbZGlyc10gPSsgIiR7R09UTVBESVJ9IgogCiBnb19kb19jb21waWxlKCkgewotCWV4cG9ydCBUTVBESVI9IiR7R09fVE1QRElSfSIKLQkke0dPfSBlbnYKKwlleHBvcnQgVE1QRElSPSIke0dPVE1QRElSfSIKIAlpZiBbIC1uICIke0dPX0lOU1RBTEx9IiBdOyB0aGVuCisJCWlmIFsgLW4gIiR7R09fTElOS1NIQVJFRH0iIF07IHRoZW4KKwkJCSR7R099IGluc3RhbGwgJHtHT0JVSUxERkxBR1N9IGBnb19saXN0X3BhY2thZ2VzYAorCQkJcm0gLXJmICR7Qn0vYmluCisJCWZpCiAJCSR7R099IGluc3RhbGwgJHtHT19MSU5LU0hBUkVEfSAke0dPQlVJTERGTEFHU30gYGdvX2xpc3RfcGFja2FnZXNgCiAJZmkKIH0KLWRvX2NvbXBpbGVbZGlyc10gPSsgIiR7R09fVE1QRElSfSIKK2RvX2NvbXBpbGVbZGlyc10gPSsgIiR7R09UTVBESVJ9IgogZG9fY29tcGlsZVtjbGVhbmRpcnNdID0gIiR7Qn0vYmluICR7Qn0vcGtnIgogCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgIGV4cG9ydCBUTVBESVI9IiR7R09fVE1QRElSfSIKLSAgICBybSAtZiAke0J9Ly5nb19jb21waWxlZF90ZXN0cy5saXN0Citkb19jb21waWxlX3B0ZXN0X2Jhc2UoKSB7CisJZXhwb3J0IFRNUERJUj0iJHtHT1RNUERJUn0iCisJcm0gLWYgJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdAogCWdvX2xpc3RfcGFja2FnZV90ZXN0cyB8IHdoaWxlIHJlYWQgcGtnOyBkbwogCQljZCAke0J9L3NyYy8kcGtnCiAJCSR7R099IHRlc3QgJHtHT1BURVNUQlVJTERGTEFHU30gJHBrZwogCQlmaW5kIC4gLW1pbmRlcHRoIDEgLW1heGRlcHRoIDEgLXR5cGUgZiAtbmFtZSAnKi50ZXN0JyAtZXhlYyBlY2hvICRwa2cve30gXDsgfCBcCiAJCQlzZWQgLWUncywvXC4vLC8sJz4+ICR7Qn0vLmdvX2NvbXBpbGVkX3Rlc3RzLmxpc3QKIAlkb25lCisJZG9fY29tcGlsZV9wdGVzdAogfQotZG9fY29tcGlsZV9wdGVzdF9iYXNlW2RpcnNdID0rICIke0dPX1RNUERJUn0iCitkb19jb21waWxlX3B0ZXN0X2Jhc2VbZGlyc10gPSsgIiR7R09UTVBESVJ9IgogCiBnb19kb19pbnN0YWxsKCkgewogCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMvJHtHT19JTVBPUlR9Ci0JdGFyIC1DICR7U30vc3JjLyR7R09fSU1QT1JUfSAtY2YgLSAtLWV4Y2x1ZGUtdmNzIC0tZXhjbHVkZSAnKi50ZXN0JyAuIHwgXAorCXRhciAtQyAke1N9L3NyYy8ke0dPX0lNUE9SVH0gLWNmIC0gLS1leGNsdWRlLXZjcyAtLWV4Y2x1ZGUgJyoudGVzdCcgLS1leGNsdWRlICd0ZXN0ZGF0YScgLiB8IFwKIAkJdGFyIC1DICR7RH0ke2xpYmRpcn0vZ28vc3JjLyR7R09fSU1QT1JUfSAtLW5vLXNhbWUtb3duZXIgLXhmIC0KIAl0YXIgLUMgJHtCfSAtY2YgLSBwa2cgfCB0YXIgLUMgJHtEfSR7bGliZGlyfS9nbyAtLW5vLXNhbWUtb3duZXIgLXhmIC0KIApAQCAtMTM1LDQyICsxMjIsNTQgQEAKIAlmaQogfQogCi1kb19pbnN0YWxsX3B0ZXN0X2Jhc2UoKSB7Ci1zZXQgLXgKLSAgICB0ZXN0IC1mICIke0J9Ly5nb19jb21waWxlZF90ZXN0cy5saXN0IiB8fCBleGl0IDAKLSAgICB0ZXN0cz0iIgotICAgIHdoaWxlIHJlYWQgdGVzdDsgZG8KLSAgICAgICAgdGVzdHM9IiR0ZXN0cyR7dGVzdHM6KyB9JHt0ZXN0JS50ZXN0fSIKLSAgICAgICAgdGVzdGRpcj1gZGlybmFtZSAkdGVzdGAKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS8kdGVzdGRpcgotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9zcmMvJHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0vJHRlc3QKLSAgICAgICAgaWYgWyAtZCAiJHtCfS9zcmMvJHRlc3RkaXIvdGVzdGRhdGEiIF07IHRoZW4KLSAgICAgICAgICAgIGNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICIke0J9L3NyYy8kdGVzdGRpci90ZXN0ZGF0YSIgJHtEfSR7UFRFU1RfUEFUSH0vJHRlc3RkaXIKLSAgICAgICAgZmkKLSAgICBkb25lIDwgJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdAotICAgIGlmIFsgLW4gIiR0ZXN0cyIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgICAgIGNhdCA+JHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0IDw8RU9GCitnb19tYWtlX3B0ZXN0X3dyYXBwZXIoKSB7CisJY2F0ID4ke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QgPDxFT0YKICMhL2Jpbi9zaAotQU5ZRkFJTEVEPTAKLWZvciB0IGluICR0ZXN0czsgZG8KLSAgICB0ZXN0ZGlyPVxgZGlybmFtZSBcJHQudGVzdFxgCi0gICAgaWYgKCBjZCAiJHtQVEVTVF9QQVRIfS9cJHRlc3RkaXIiOyAiJHtQVEVTVF9QQVRIfS9cJHQudGVzdCIgJHtHT1BURVNURkxBR1N9IHwgdGVlIC9kZXYvZmQvOSB8IGdyZXAgLXEgIl5GQUlMIiApIDk+JjE7IHRoZW4KLSAgICAgICAgQU5ZRkFJTEVEPTEKLSAgICBmaQotZG9uZQotaWYgWyBcJEFOWUZBSUxFRCAtbmUgMCBdOyB0aGVuCi0gICAgZWNobyAiRkFJTDogJHtQTn0iCi0gICAgZXhpdCAxCi1maQotZWNobyAiUEFTUzogJHtQTn0iCi1leGl0IDAKK1JDPTAKK3J1bl90ZXN0KCkgKAorICAgIGNkICJcJDEiCisgICAgKCgoKC4vXCQyICR7R09QVEVTVEZMQUdTfTsgZWNobyBcJD8gPiYzKSB8IHNlZCAtciAtZSJzLF4oUEFTU3xTS0lQfEZBSUwpXCQsXFwxOiBcJDEvXCQyLCIgPiY0KSAzPiYxKSB8IChyZWFkIHJjOyBleGl0IFwkcmMpKSA0PiYxCisgICAgZXhpdCBcJD8pCiBFT0YKLSAgICAgICAgY2htb2QgK3ggJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0Ci0gICAgZWxzZQotICAgICAgICBybSAtcmYgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBmaQotc2V0ICt4CisKK30KKworZ29fc3RhZ2VfdGVzdGRhdGEoKSB7CisJb2xkd2Q9IiRQV0QiCisJY2QgJHtTfS9zcmMKKwlmaW5kICR7R09fSU1QT1JUfSAtZGVwdGggLXR5cGUgZCAtbmFtZSB0ZXN0ZGF0YSB8IHdoaWxlIHJlYWQgZDsgZG8KKwkJaWYgZWNobyAiJGQiIHwgZ3JlcCAtcSAnL3ZlbmRvci8nOyB0aGVuCisJCQljb250aW51ZQorCQlmaQorCQlwYXJlbnQ9YGRpcm5hbWUgJGRgCisJCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vJHBhcmVudAorCQljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAkZCAke0R9JHtQVEVTVF9QQVRIfS8kcGFyZW50LworCWRvbmUKKwljZCAiJG9sZHdkIgorfQorCitkb19pbnN0YWxsX3B0ZXN0X2Jhc2UoKSB7CisJdGVzdCAtZiAiJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdCIgfHwgZXhpdCAwCisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfQorCWdvX3N0YWdlX3Rlc3RkYXRhCisJZ29fbWFrZV9wdGVzdF93cmFwcGVyCisJaGF2ZXRlc3RzPSIiCisJd2hpbGUgcmVhZCB0ZXN0OyBkbworCQl0ZXN0ZGlyPWBkaXJuYW1lICR0ZXN0YAorCQl0ZXN0cHJvZz1gYmFzZW5hbWUgJHRlc3RgCisJCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vJHRlc3RkaXIKKwkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vc3JjLyR0ZXN0ICR7RH0ke1BURVNUX1BBVEh9LyR0ZXN0CisJZWNobyAicnVuX3Rlc3QgJHRlc3RkaXIgJHRlc3Rwcm9nIHx8IFJDPTEiID4+ICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorCQloYXZldGVzdHM9InllcyIKKwlkb25lIDwgJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdAorCWlmIFsgLW4gIiRoYXZldGVzdHMiIF07IHRoZW4KKwkJZWNobyAiZXhpdCBcJFJDIiA+PiAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKKwkJY2htb2QgK3ggJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0CisJZWxzZQorCQlybSAtcmYgJHtEfSR7UFRFU1RfUEFUSH0KKwlmaQorCWRvX2luc3RhbGxfcHRlc3QKKwljaG93biAtUiByb290OnJvb3QgJHtEfSR7UFRFU1RfUEFUSH0KIH0KIAogRVhQT1JUX0ZVTkNUSU9OUyBkb191bnBhY2sgZG9fY29uZmlndXJlIGRvX2NvbXBpbGUgZG9faW5zdGFsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKaW5kZXggNjYzYzlmZi4uZjU0YzUxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzCkBAIC01LDExICs1LDEzIEBACiBIT1NUX0dPQVJDSCA9ICIke0Bnb19tYXBfYXJjaChkLmdldFZhcignSE9TVF9BUkNIJyksIGQpfSIKIEhPU1RfR09BUk0gPSAiJHtAZ29fbWFwX2FybShkLmdldFZhcignSE9TVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKIEhPU1RfR08zODYgPSAiJHtAZ29fbWFwXzM4NihkLmdldFZhcignSE9TVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKK0hPU1RfR09NSVBTID0gIiR7QGdvX21hcF9taXBzKGQuZ2V0VmFyKCdIT1NUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgogSE9TVF9HT1RVUExFID0gIiR7SE9TVF9HT09TfV8ke0hPU1RfR09BUkNIfSIKIFRBUkdFVF9HT09TID0gIiR7QGdvX21hcF9vcyhkLmdldFZhcignVEFSR0VUX09TJyksIGQpfSIKIFRBUkdFVF9HT0FSQ0ggPSAiJHtAZ29fbWFwX2FyY2goZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQpfSIKIFRBUkdFVF9HT0FSTSA9ICIke0Bnb19tYXBfYXJtKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCiBUQVJHRVRfR08zODYgPSAiJHtAZ29fbWFwXzM4NihkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgorVEFSR0VUX0dPTUlQUyA9ICIke0Bnb19tYXBfbWlwcyhkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgogVEFSR0VUX0dPVFVQTEUgPSAiJHtUQVJHRVRfR09PU31fJHtUQVJHRVRfR09BUkNIfSIKIEdPX0JVSUxEX0JJTkRJUiA9ICIke0BbJ2Jpbi8ke0hPU1RfR09UVVBMRX0nLCdiaW4nXVtkLmdldFZhcignQlVJTERfR09UVVBMRScpID09IGQuZ2V0VmFyKCdIT1NUX0dPVFVQTEUnKV19IgogCkBAIC0yMiw2ICsyNCw3IEBACiBHT19EWU5MSU5LX3g4Ni02NCA9ICIxIgogR09fRFlOTElOS19wb3dlcnBjNjQgPSAiMSIKIEdPX0RZTkxJTktfY2xhc3MtbmF0aXZlID0gIiIKK0dPX0RZTkxJTktfY2xhc3MtbmF0aXZlc2RrID0gIiIKIAogIyBkZWZpbmUgaGVyZSBiZWNhdXNlIGV2ZXJ5Ym9keSBpbmhlcml0cyB0aGlzIGNsYXNzCiAjCkBAIC0zMiw2ICszNSw4IEBACiBDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAibnVsbCIKIEFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgogVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tYXJjaD1taXBzMzJyMiIKK1NFQ1VSSVRZX0NGTEFHU19taXBzID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKK1NFQ1VSSVRZX05PUElFX0NGTEFHUyA/Pz0gIiIKIAogZGVmIGdvX21hcF9hcmNoKGEsIGQpOgogICAgIGltcG9ydCByZQpAQCAtNTYsNyArNjEsNyBAQAogICAgIGVsaWYgcmUubWF0Y2goJ3AocGN8b3dlcnBjKSg2NGVsKScsIGEpOgogICAgICAgICByZXR1cm4gJ3BwYzY0bGUnCiAgICAgZWxzZToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlVuc3VwcG9ydGVkIENQVSBhcmNoaXRlY3R1cmU6ICVzIiAlIGEpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlVuc3VwcG9ydGVkIENQVSBhcmNoaXRlY3R1cmU6ICVzIiAlIGEpCiAKIGRlZiBnb19tYXBfYXJtKGEsIGYsIGQpOgogICAgIGltcG9ydCByZQpAQCAtNzgsNiArODMsMTUgQEAKICAgICAgICAgICAgIHJldHVybiAnMzg3JwogICAgIHJldHVybiAnJwogCitkZWYgZ29fbWFwX21pcHMoYSwgZiwgZCk6CisgICAgaW1wb3J0IHJlCisgICAgaWYgYSA9PSAnbWlwcycgb3IgYSA9PSAnbWlwc2VsJzoKKyAgICAgICAgaWYgJ2ZwdS1oYXJkJyBpbiBmOgorICAgICAgICAgICAgcmV0dXJuICdoYXJkZmxvYXQnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJ3NvZnRmbG9hdCcKKyAgICByZXR1cm4gJycKKwogZGVmIGdvX21hcF9vcyhvLCBkKToKICAgICBpZiBvLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CiAgICAgICAgIHJldHVybiAnbGludXgnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvZGVwLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvZGVwLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgyNDAxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29kZXAuYmJjbGFzcwpAQCAtMCwwICsxLDggQEAKK0RFUEVORFNfYXBwZW5kID0gIiBnby1kZXAtbmF0aXZlIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgcm0gLWYgJHtXT1JLRElSfS9idWlsZC9zcmMvJHtHT19JTVBPUlR9L0dvcGtnLnRvbWwKKyAgICBybSAtZiAke1dPUktESVJ9L2J1aWxkL3NyYy8ke0dPX0lNUE9SVH0vR29wa2cubG9jaworICAgICggY2QgJHtXT1JLRElSfS9idWlsZC9zcmMvJHtHT19JTVBPUlR9ICYmIGRlcCBpbml0ICYmIGRlcCBlbnN1cmUgKQorfQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLWNmZy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS1jZmcuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWVlZTZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS1jZmcuYmJjbGFzcwpAQCAtMCwwICsxLDExNCBAQAorIyBncnViLWVmaS5iYmNsYXNzCisjIENvcHlyaWdodCAoYykgMjAxMSwgSW50ZWwgQ29ycG9yYXRpb24uCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIHBhY2thZ2VzL0NPUFlJTkcpCisKKyMgUHJvdmlkZSBncnViLWVmaSBzcGVjaWZpYyBmdW5jdGlvbnMgZm9yIGJ1aWxkaW5nIGJvb3RhYmxlIGltYWdlcy4KKworIyBFeHRlcm5hbCB2YXJpYWJsZXMKKyMgJHtJTklUUkR9IC0gaW5kaWNhdGVzIGEgbGlzdCBvZiBmaWxlc3lzdGVtIGltYWdlcyB0byBjb25jYXRlbmF0ZSBhbmQgdXNlIGFzIGFuIGluaXRyZCAob3B0aW9uYWwpCisjICR7Uk9PVEZTfSAtIGluZGljYXRlcyBhIGZpbGVzeXN0ZW0gaW1hZ2UgdG8gaW5jbHVkZSBhcyB0aGUgcm9vdCBmaWxlc3lzdGVtIChvcHRpb25hbCkKKyMgJHtHUlVCX0dGWFNFUklBTH0gLSBzZXQgdGhpcyB0byAxIHRvIGhhdmUgZ3JhcGhpY3MgYW5kIHNlcmlhbCBpbiB0aGUgYm9vdCBtZW51CisjICR7TEFCRUxTfSAtIGEgbGlzdCBvZiB0YXJnZXRzIGZvciB0aGUgYXV0b21hdGljIGNvbmZpZworIyAke0FQUEVORH0gLSBhbiBvdmVycmlkZSBsaXN0IG9mIGFwcGVuZCBzdHJpbmdzIGZvciBlYWNoIGxhYmVsCisjICR7R1JVQl9PUFRTfSAtIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBhZGQgdG8gdGhlIGNvbmZpZywgJzsnIGRlbGltaXRlZCAjIChvcHRpb25hbCkKKyMgJHtHUlVCX1RJTUVPVVR9IC0gdGltZW91dCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBkZWF1bHQgbGFiZWwgKG9wdGlvbmFsKQorIyAke0dSVUJfUk9PVH0gLSBncnViJ3Mgcm9vdCBkZXZpY2UuCisKK0dSVUJfU0VSSUFMID89ICJjb25zb2xlPXR0eVMwLDExNTIwMCIKK0dSVUJfQ0ZHX1ZNID0gIiR7U30vZ3J1Yl92bS5jZmciCitHUlVCX0NGR19MSVZFID0gIiR7U30vZ3J1Yl9saXZlLmNmZyIKK0dSVUJfVElNRU9VVCA/PSAiMTAiCisjRklYTUU6IGJ1aWxkIHRoaXMgZnJvbSB0aGUgbWFjaGluZSBjb25maWcKK0dSVUJfT1BUUyA/PSAic2VyaWFsIC0tdW5pdD0wIC0tc3BlZWQ9MTE1MjAwIC0td29yZD04IC0tcGFyaXR5PW5vIC0tc3RvcD0xIgorCitFRklESVIgPSAiL0VGSS9CT09UIgorR1JVQl9ST09UID89ICIke1JPT1R9IgorQVBQRU5EID89ICIiCisKKyMgTmVlZCBVVUlEIHV0aWxpdHkgY29kZS4KK2luaGVyaXQgZnMtdXVpZAorCitweXRob24gYnVpbGRfZWZpX2NmZygpIHsKKyAgICBpbXBvcnQgc3lzCisKKyAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInKQorICAgIGlmIG5vdCB3b3JrZGlyOgorICAgICAgICBiYi5lcnJvcigiV09SS0RJUiBub3QgZGVmaW5lZCwgdW5hYmxlIHRvIHBhY2thZ2UiKQorICAgICAgICByZXR1cm4KKworICAgIGdmeHNlcmlhbCA9IGQuZ2V0VmFyKCdHUlVCX0dGWFNFUklBTCcpIG9yICIiCisKKyAgICBsYWJlbHMgPSBkLmdldFZhcignTEFCRUxTJykKKyAgICBpZiBub3QgbGFiZWxzOgorICAgICAgICBiYi5kZWJ1ZygxLCAiTEFCRUxTIG5vdCBkZWZpbmVkLCBub3RoaW5nIHRvIGRvIikKKyAgICAgICAgcmV0dXJuCisKKyAgICBpZiBsYWJlbHMgPT0gW106CisgICAgICAgIGJiLmRlYnVnKDEsICJObyBsYWJlbHMsIG5vdGhpbmcgdG8gZG8iKQorICAgICAgICByZXR1cm4KKworICAgIGNmaWxlID0gZC5nZXRWYXIoJ0dSVUJfQ0ZHJykKKyAgICBpZiBub3QgY2ZpbGU6CisgICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gcmVhZCBHUlVCX0NGRycpCisKKyAgICB0cnk6CisgICAgICAgICBjZmdmaWxlID0gb3BlbihjZmlsZSwgJ3cnKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgY2ZpbGUpCisKKyAgICBjZmdmaWxlLndyaXRlKCcjIEF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBPRVxuJykKKworICAgIG9wdHMgPSBkLmdldFZhcignR1JVQl9PUFRTJykKKyAgICBpZiBvcHRzOgorICAgICAgICBmb3Igb3B0IGluIG9wdHMuc3BsaXQoJzsnKToKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyVzXG4nICUgb3B0KQorCisgICAgY2ZnZmlsZS53cml0ZSgnZGVmYXVsdD0lc1xuJyAlIChsYWJlbHMuc3BsaXQoKVswXSkpCisKKyAgICB0aW1lb3V0ID0gZC5nZXRWYXIoJ0dSVUJfVElNRU9VVCcpCisgICAgaWYgdGltZW91dDoKKyAgICAgICAgY2ZnZmlsZS53cml0ZSgndGltZW91dD0lc1xuJyAlIHRpbWVvdXQpCisgICAgZWxzZToKKyAgICAgICAgY2ZnZmlsZS53cml0ZSgndGltZW91dD01MFxuJykKKworICAgIHJvb3QgPSBkLmdldFZhcignR1JVQl9ST09UJykKKyAgICBpZiBub3Qgcm9vdDoKKyAgICAgICAgYmIuZmF0YWwoJ0dSVUJfUk9PVCBub3QgZGVmaW5lZCcpCisKKyAgICBpZiBnZnhzZXJpYWwgPT0gIjEiOgorICAgICAgICBidHlwZXMgPSBbIFsgIiBncmFwaGljcyBjb25zb2xlIiwgIiIgXSwKKyAgICAgICAgICAgIFsgIiBzZXJpYWwgY29uc29sZSIsIGQuZ2V0VmFyKCdHUlVCX1NFUklBTCcpIG9yICIiIF0gXQorICAgIGVsc2U6CisgICAgICAgIGJ0eXBlcyA9IFsgWyAiIiwgIiIgXSBdCisKKyAgICBmb3IgbGFiZWwgaW4gbGFiZWxzLnNwbGl0KCk6CisgICAgICAgIGxvY2FsZGF0YSA9IGQuY3JlYXRlQ29weSgpCisKKyAgICAgICAgZm9yIGJ0eXBlIGluIGJ0eXBlczoKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ1xubWVudWVudHJ5IFwnJXMlc1wne1xuJyAlIChsYWJlbCwgYnR5cGVbMF0pKQorICAgICAgICAgICAgbGIgPSBsYWJlbAorICAgICAgICAgICAgaWYgbGFiZWwgPT0gImluc3RhbGwiOgorICAgICAgICAgICAgICAgIGxiID0gImluc3RhbGwtZWZpIgorICAgICAgICAgICAga2VybmVsID0gbG9jYWxkYXRhLmdldFZhcignS0VSTkVMX0lNQUdFVFlQRScpCisgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdsaW51eCAvJXMgTEFCRUw9JXMnICUgKGtlcm5lbCwgbGIpKQorCisgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCcgJXMnICUgcmVwbGFjZV9yb290ZnNfdXVpZChkLCByb290KSkKKworICAgICAgICAgICAgYXBwZW5kID0gbG9jYWxkYXRhLmdldFZhcignQVBQRU5EJykKKyAgICAgICAgICAgIGluaXRyZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0lOSVRSRCcpCisKKyAgICAgICAgICAgIGlmIGFwcGVuZDoKKyAgICAgICAgICAgICAgICBhcHBlbmQgPSByZXBsYWNlX3Jvb3Rmc191dWlkKGQsIGFwcGVuZCkKKyAgICAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCcgJXMnICUgKGFwcGVuZCkpCisKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyAlcycgJSBidHlwZVsxXSkKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ1xuJykKKworICAgICAgICAgICAgaWYgaW5pdHJkOgorICAgICAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ2luaXRyZCAvaW5pdHJkJykKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ1xufVxuJykKKworICAgIGNmZ2ZpbGUuY2xvc2UoKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS5iYmNsYXNzCmluZGV4IDYxMDQ3OWIuLjkwYmFkYzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLmJiY2xhc3MKQEAgLTEsMzYgKzEsNCBAQAotIyBncnViLWVmaS5iYmNsYXNzCi0jIENvcHlyaWdodCAoYykgMjAxMSwgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIHBhY2thZ2VzL0NPUFlJTkcpCi0KLSMgUHJvdmlkZSBncnViLWVmaSBzcGVjaWZpYyBmdW5jdGlvbnMgZm9yIGJ1aWxkaW5nIGJvb3RhYmxlIGltYWdlcy4KLQotIyBFeHRlcm5hbCB2YXJpYWJsZXMKLSMgJHtJTklUUkR9IC0gaW5kaWNhdGVzIGEgbGlzdCBvZiBmaWxlc3lzdGVtIGltYWdlcyB0byBjb25jYXRlbmF0ZSBhbmQgdXNlIGFzIGFuIGluaXRyZCAob3B0aW9uYWwpCi0jICR7Uk9PVEZTfSAtIGluZGljYXRlcyBhIGZpbGVzeXN0ZW0gaW1hZ2UgdG8gaW5jbHVkZSBhcyB0aGUgcm9vdCBmaWxlc3lzdGVtIChvcHRpb25hbCkKLSMgJHtHUlVCX0dGWFNFUklBTH0gLSBzZXQgdGhpcyB0byAxIHRvIGhhdmUgZ3JhcGhpY3MgYW5kIHNlcmlhbCBpbiB0aGUgYm9vdCBtZW51Ci0jICR7TEFCRUxTfSAtIGEgbGlzdCBvZiB0YXJnZXRzIGZvciB0aGUgYXV0b21hdGljIGNvbmZpZwotIyAke0FQUEVORH0gLSBhbiBvdmVycmlkZSBsaXN0IG9mIGFwcGVuZCBzdHJpbmdzIGZvciBlYWNoIGxhYmVsCi0jICR7R1JVQl9PUFRTfSAtIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBhZGQgdG8gdGhlIGNvbmZpZywgJzsnIGRlbGltaXRlZCAjIChvcHRpb25hbCkKLSMgJHtHUlVCX1RJTUVPVVR9IC0gdGltZW91dCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBkZWF1bHQgbGFiZWwgKG9wdGlvbmFsKQotIyAke0dSVUJfUk9PVH0gLSBncnViJ3Mgcm9vdCBkZXZpY2UuCi0KLWRvX2Jvb3RpbWdbZGVwZW5kc10gKz0gIiR7TUxQUkVGSVh9Z3J1Yi1lZmk6ZG9fZGVwbG95IgotCi1HUlVCX1NFUklBTCA/PSAiY29uc29sZT10dHlTMCwxMTUyMDAiCi1HUlVCX0NGR19WTSA9ICIke1N9L2dydWJfdm0uY2ZnIgotR1JVQl9DRkdfTElWRSA9ICIke1N9L2dydWJfbGl2ZS5jZmciCi1HUlVCX1RJTUVPVVQgPz0gIjEwIgotI0ZJWE1FOiBidWlsZCB0aGlzIGZyb20gdGhlIG1hY2hpbmUgY29uZmlnCi1HUlVCX09QVFMgPz0gInNlcmlhbCAtLXVuaXQ9MCAtLXNwZWVkPTExNTIwMCAtLXdvcmQ9OCAtLXBhcml0eT1ubyAtLXN0b3A9MSIKLQotRUZJRElSID0gIi9FRkkvQk9PVCIKLUdSVUJfUk9PVCA/PSAiJHtST09UfSIKLUFQUEVORCA/PSAiIgotCi0jIE5lZWQgVVVJRCB1dGlsaXR5IGNvZGUuCi1pbmhlcml0IGZzLXV1aWQKK2luaGVyaXQgZ3J1Yi1lZmktY2ZnCiAKIGVmaV9wb3B1bGF0ZSgpIHsKIAkjIERFU1QgbXVzdCBiZSB0aGUgcm9vdCBvZiB0aGUgaW1hZ2Ugc28gdGhhdCBFRklESVIgaXMgbm90CkBAIC01OCw3ICsyNiw3IEBACiAJIyBCdWlsZCBhIEVGSSBkaXJlY3RvcnkgdG8gY3JlYXRlIGVmaS5pbWcKIAlta2RpciAtcCAke0VGSUlNR0RJUn0vJHtFRklESVJ9CiAJY3AgJGlzb19kaXIvJHtFRklESVJ9LyogJHtFRklJTUdESVJ9JHtFRklESVJ9Ci0JY3AgJGlzb19kaXIvdm1saW51eiAke0VGSUlNR0RJUn0KKwljcCAkaXNvX2Rpci8ke0tFUk5FTF9JTUFHRVRZUEV9ICR7RUZJSU1HRElSfQogCUVGSVBBVEg9JChlY2hvICIke0VGSURJUn0iIHwgc2VkICdzL1wvL1xcL2cnKQogCXByaW50ZiAnZnMwOiVzXCVzXG4nICIkRUZJUEFUSCIgIiRHUlVCX0lNQUdFIiA+ICR7RUZJSU1HRElSfS9zdGFydHVwLm5zaAogCWlmIFsgLWYgIiRpc29fZGlyL2luaXRyZCIgXSA7IHRoZW4KQEAgLTY5LDkxICszNywzIEBACiBlZmlfaGRkaW1nX3BvcHVsYXRlKCkgewogCWVmaV9wb3B1bGF0ZSAkMQogfQotCi1weXRob24gYnVpbGRfZWZpX2NmZygpIHsKLSAgICBpbXBvcnQgc3lzCi0KLSAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInKQotICAgIGlmIG5vdCB3b3JrZGlyOgotICAgICAgICBiYi5lcnJvcigiV09SS0RJUiBub3QgZGVmaW5lZCwgdW5hYmxlIHRvIHBhY2thZ2UiKQotICAgICAgICByZXR1cm4KLQotICAgIGdmeHNlcmlhbCA9IGQuZ2V0VmFyKCdHUlVCX0dGWFNFUklBTCcpIG9yICIiCi0KLSAgICBsYWJlbHMgPSBkLmdldFZhcignTEFCRUxTJykKLSAgICBpZiBub3QgbGFiZWxzOgotICAgICAgICBiYi5kZWJ1ZygxLCAiTEFCRUxTIG5vdCBkZWZpbmVkLCBub3RoaW5nIHRvIGRvIikKLSAgICAgICAgcmV0dXJuCi0KLSAgICBpZiBsYWJlbHMgPT0gW106Ci0gICAgICAgIGJiLmRlYnVnKDEsICJObyBsYWJlbHMsIG5vdGhpbmcgdG8gZG8iKQotICAgICAgICByZXR1cm4KLQotICAgIGNmaWxlID0gZC5nZXRWYXIoJ0dSVUJfQ0ZHJykKLSAgICBpZiBub3QgY2ZpbGU6Ci0gICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gcmVhZCBHUlVCX0NGRycpCi0KLSAgICB0cnk6Ci0gICAgICAgICBjZmdmaWxlID0gb3BlbihjZmlsZSwgJ3cnKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgY2ZpbGUpCi0KLSAgICBjZmdmaWxlLndyaXRlKCcjIEF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBPRVxuJykKLQotICAgIG9wdHMgPSBkLmdldFZhcignR1JVQl9PUFRTJykKLSAgICBpZiBvcHRzOgotICAgICAgICBmb3Igb3B0IGluIG9wdHMuc3BsaXQoJzsnKToKLSAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyVzXG4nICUgb3B0KQotCi0gICAgY2ZnZmlsZS53cml0ZSgnZGVmYXVsdD0lc1xuJyAlIChsYWJlbHMuc3BsaXQoKVswXSkpCi0KLSAgICB0aW1lb3V0ID0gZC5nZXRWYXIoJ0dSVUJfVElNRU9VVCcpCi0gICAgaWYgdGltZW91dDoKLSAgICAgICAgY2ZnZmlsZS53cml0ZSgndGltZW91dD0lc1xuJyAlIHRpbWVvdXQpCi0gICAgZWxzZToKLSAgICAgICAgY2ZnZmlsZS53cml0ZSgndGltZW91dD01MFxuJykKLQotICAgIHJvb3QgPSBkLmdldFZhcignR1JVQl9ST09UJykKLSAgICBpZiBub3Qgcm9vdDoKLSAgICAgICAgYmIuZmF0YWwoJ0dSVUJfUk9PVCBub3QgZGVmaW5lZCcpCi0KLSAgICBpZiBnZnhzZXJpYWwgPT0gIjEiOgotICAgICAgICBidHlwZXMgPSBbIFsgIiBncmFwaGljcyBjb25zb2xlIiwgIiIgXSwKLSAgICAgICAgICAgIFsgIiBzZXJpYWwgY29uc29sZSIsIGQuZ2V0VmFyKCdHUlVCX1NFUklBTCcpIG9yICIiIF0gXQotICAgIGVsc2U6Ci0gICAgICAgIGJ0eXBlcyA9IFsgWyAiIiwgIiIgXSBdCi0KLSAgICBmb3IgbGFiZWwgaW4gbGFiZWxzLnNwbGl0KCk6Ci0gICAgICAgIGxvY2FsZGF0YSA9IGQuY3JlYXRlQ29weSgpCi0KLSAgICAgICAgb3ZlcnJpZGVzID0gbG9jYWxkYXRhLmdldFZhcignT1ZFUlJJREVTJykKLSAgICAgICAgaWYgbm90IG92ZXJyaWRlczoKLSAgICAgICAgICAgIGJiLmZhdGFsKCdPVkVSUklERVMgbm90IGRlZmluZWQnKQotCi0gICAgICAgIGZvciBidHlwZSBpbiBidHlwZXM6Ci0gICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdPVkVSUklERVMnLCBsYWJlbCArICc6JyArIG92ZXJyaWRlcykKLQotICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnXG5tZW51ZW50cnkgXCclcyVzXCd7XG4nICUgKGxhYmVsLCBidHlwZVswXSkpCi0gICAgICAgICAgICBsYiA9IGxhYmVsCi0gICAgICAgICAgICBpZiBsYWJlbCA9PSAiaW5zdGFsbCI6Ci0gICAgICAgICAgICAgICAgbGIgPSAiaW5zdGFsbC1lZmkiCi0gICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdsaW51eCAvdm1saW51eiBMQUJFTD0lcycgJSAobGIpKQotCi0gICAgICAgICAgICBjZmdmaWxlLndyaXRlKCcgJXMnICUgcmVwbGFjZV9yb290ZnNfdXVpZChkLCByb290KSkKLQotICAgICAgICAgICAgYXBwZW5kID0gbG9jYWxkYXRhLmdldFZhcignQVBQRU5EJykKLSAgICAgICAgICAgIGluaXRyZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0lOSVRSRCcpCi0KLSAgICAgICAgICAgIGlmIGFwcGVuZDoKLSAgICAgICAgICAgICAgICBhcHBlbmQgPSByZXBsYWNlX3Jvb3Rmc191dWlkKGQsIGFwcGVuZCkKLSAgICAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCcgJXMnICUgKGFwcGVuZCkpCi0KLSAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyAlcycgJSBidHlwZVsxXSkKLSAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ1xuJykKLQotICAgICAgICAgICAgaWYgaW5pdHJkOgotICAgICAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ2luaXRyZCAvaW5pdHJkJykKLSAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ1xufVxuJykKLQotICAgIGNmZ2ZpbGUuY2xvc2UoKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ndGstZG9jLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcwppbmRleCA1MjAxYzcxLi5iNGY2NzU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcwpAQCAtMTgsMjcgKzE4LDI3IEBACiBFWFRSQV9PRUNPTkZfcHJlcGVuZF9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWd0ay1kb2MgIgogRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIi0tZGlzYWJsZS1ndGstZG9jICIKIAotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBndGstZG9jLW5hdGl2ZSBxZW11LW5hdGl2ZSIKLQogIyBFdmVuIHRob3VnaCBndGtkb2MgaXMgZGlzYWJsZWQgb24gLW5hdGl2ZSwgZ3RrLWRvYyBwYWNrYWdlIGlzIHN0aWxsCiAjIG5lZWRlZCBmb3IgbTQgbWFjcm9zLgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBndGstZG9jLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgZ3RrLWRvYy1uYXRpdmUiCitERVBFTkRTX2FwcGVuZCA9ICIgZ3RrLWRvYy1uYXRpdmUiCiAKICMgVGhlIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5LCB3aGVyZSB0aGUgaW5mcmFzdHJ1Y3R1cmUgd2lsbCBiZSBjb3BpZWQuCiAjIGd0a2RvY2l6ZSBoYXMgYSBkZWZhdWx0IG9mICIuIiBzbyB0byBoYW5kbGUgb3V0LW9mLXRyZWUgYnVpbGRzIHNldCB0aGlzIHRvICRTLgogR1RLRE9DX0RPQ0RJUiA/PSAiJHtTfSIKIAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSggY2QgJHtTfTsgZ3RrZG9jaXplIC0tZG9jZGlyICR7R1RLRE9DX0RPQ0RJUn0gfHwgdHJ1ZSApCi19Ci0KLWluaGVyaXQgcWVtdQotCiBleHBvcnQgU1RBR0lOR19ESVJfSE9TVAogCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKK2luaGVyaXQgcHl0aG9uM25hdGl2ZSBwa2djb25maWcgcWVtdQorREVQRU5EU19hcHBlbmQgPSAiJHtAJyBxZW11LW5hdGl2ZScgaWYgZC5nZXRWYXIoJ0dUS0RPQ19FTkFCTEVEJykgPT0gJ1RydWUnIGVsc2UgJyd9IgogCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBOZWVkIHRvIHVzZSB8fHRydWUgYXMgdGhpcyBpcyBvbmx5IG5lZWRlZCBpZiBjb25maWd1cmUuYWMgYm90aCBleGlzdHMKKwkjIGFuZCB1c2VzIEdUS19ET0NfQ0hFQ0suCisJZ3RrZG9jaXplIC0tc3JjZGlyICR7U30gLS1kb2NkaXIgJHtHVEtET0NfRE9DRElSfSB8fCB0cnVlCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgeworICAgIGlmIFsgJHtHVEtET0NfRU5BQkxFRH0gPSBUcnVlIF07IHRoZW4KICAgICAgICAgIyBXcml0ZSBvdXQgYSBxZW11IHdyYXBwZXIgdGhhdCB3aWxsIGJlIGdpdmVuIHRvIGd0a2RvYy1zY2FuZ29iaiBzbyB0aGF0IGl0CiAgICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KICAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXCRHSVJfRVhUUkFfTElCU19QQVRIJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgpAQCAtNjQsNyArNjQsNSBAQAogZmkKIEVPRgogICAgICAgICBjaG1vZCAreCAke0J9L2d0a2RvYy1xZW11d3JhcHBlcgorICAgIGZpCiB9Ci0KLQotaW5oZXJpdCBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcwppbmRleCAxY2MxYzRkLi4wY2E4ZGU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCkBAIC0yOCwxNSArMjgsNDQgQEAKICNFcnJvciBjaGVja2luZyBpcyBrZXB0IHRvIG1pbmltdW0gc28gZG91YmxlIGNoZWNrIGFueSBwYXJhbWV0ZXJzIHlvdSBwYXNzIHRvIHRoZSBjbGFzcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1CQl9IQVNIQkFTRV9XSElURUxJU1QgKz0gIklDRUNDX1BBUkFMTEVMX01BS0UgSUNFQ0NfRElTQUJMRUQgSUNFQ0NfVVNFUl9QQUNLQUdFX0JMIElDRUNDX1VTRVJfQ0xBU1NfQkwgSUNFQ0NfVVNFUl9QQUNLQUdFX1dMIElDRUNDX1BBVEggSUNFQ0NfRU5WX0VYRUMiCitCQl9IQVNIQkFTRV9XSElURUxJU1QgKz0gIklDRUNDX1BBUkFMTEVMX01BS0UgSUNFQ0NfRElTQUJMRUQgSUNFQ0NfVVNFUl9QQUNLQUdFX0JMIFwKKyAgICBJQ0VDQ19VU0VSX0NMQVNTX0JMIElDRUNDX1VTRVJfUEFDS0FHRV9XTCBJQ0VDQ19QQVRIIElDRUNDX0VOVl9FWEVDIFwKKyAgICBJQ0VDQ19DQVJFVF9XT1JLQVJPVU5EIElDRUNDX0NGTEFHUyBJQ0VDQ19FTlZfVkVSU0lPTiBcCisgICAgSUNFQ0NfREVCVUcgSUNFQ0NfTE9HRklMRSBJQ0VDQ19SRVBFQVRfUkFURSBJQ0VDQ19QUkVGRVJSRURfSE9TVCBcCisgICAgSUNFQ0NfQ0xBTkdfUkVNT1RFX0NQUCBJQ0VDQ19JR05PUkVfVU5WRVJJRklFRCBJQ0VDQ19URVNUX1NPQ0tFVCBcCisgICAgSUNFQ0NfRU5WX0RFQlVHIFwKKyAgICAiCiAKIElDRUNDX0VOVl9FWEVDID89ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vaWNlY2MtY3JlYXRlLWVudiIKIAorIyBUaGlzIHZlcnNpb24gY2FuIGJlIGluY3JlbWVudGVkIHdoZW4gY2hhbmdlcyBhcmUgbWFkZSB0byB0aGUgZW52aXJvbm1lbnQgdGhhdAorIyBpbnZhbGlkYXRlIHRoZSB2ZXJzaW9uIG9uIHRoZSBjb21waWxlIG5vZGVzLiBDaGFuZ2luZyBpdCB3aWxsIGNhdXNlIGEgbmV3CisjIGVudmlyb25tZW50IHRvIGJlIGNyZWF0ZWQuCisjCisjIEEgdXNlZnVsIHRoaW5nIHRvIGRvIGZvciB0ZXN0aW5nIEljZWNyZWFtIGNoYW5nZXMgbG9jYWxseSBpcyB0byBhZGQgYQorIyBzdWJ2ZXJzaW9uIGluIGxvY2FsLmNvbmY6CisjICBJQ0VDQ19FTlZfVkVSU0lPTl9hcHBlbmQgPSAiLW15LXZlci0xIgorSUNFQ0NfRU5WX1ZFUlNJT04gPSAiMiIKKworIyBEZWZhdWx0IHRvIGRpc2FibGluZyB0aGUgY2FyZXQgd29ya2Fyb3VuZCwgSWYgc2V0IHRvICIxIiBpbiBsb2NhbC5jb25mLCBpY2VjYworIyB3aWxsIGxvY2FsbHkgcmVjb21waWxlIGFueSBmaWxlcyB0aGF0IGhhdmUgd2FybmluZ3MsIHdoaWNoIGNhbiBhZHZlcnNlbHkKKyMgYWZmZWN0IHBlcmZvcm1hbmNlLgorIworIyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pY2VjYy9pY2VjcmVhbS9pc3N1ZXMvMTkwCitleHBvcnQgSUNFQ0NfQ0FSRVRfV09SS0FST1VORCA/Pz0gIjAiCisKK0lDRUNDX0NGTEFHUyA9ICIiCitDRkxBR1MgKz0gIiR7SUNFQ0NfQ0ZMQUdTfSIKK0NYWEZMQUdTICs9ICIke0lDRUNDX0NGTEFHU30iCisKKyMgRGVidWcgZmxhZ3Mgd2hlbiBnZW5lcmF0aW5nIGVudmlyb25tZW50cworSUNFQ0NfRU5WX0RFQlVHID8/PSAiIgorCiBkZWYgaWNlY2NfZGVwX3ByZXBlbmQoZCk6CiAgICAgIyBJTkhJQklUX0RFRkFVTFRfREVQUyBkb2Vzbid0IGFwcGx5IHRvIHRoZSBwYXRjaCBjb21tYW5kLiAgV2hldGhlciBvciAgbm90CiAgICAgIyB3ZSBuZWVkIHRoYXQgYnVpbHQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBwYXRjaCBmdW5jdGlvbiAvIGNsYXNzLCBub3QKICAgICAjIHRoZSBhcHBsaWNhdGlvbi4KLSAgICBpZiBub3QgZC5nZXRWYXIoJ0lOSElCSVRfREVGQVVMVF9ERVBTJywgRmFsc2UpOgorICAgIGlmIG5vdCBkLmdldFZhcignSU5ISUJJVF9ERUZBVUxUX0RFUFMnKToKICAgICAgICAgcmV0dXJuICJpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSIKICAgICByZXR1cm4gIiIKIApAQCAtNDQsMjEgKzczLDIwIEBACiAKIGdldF9jcm9zc19rZXJuZWxfY2NbdmFyZGVwc2V4Y2x1ZGVdICs9ICJLRVJORUxfQ0MiCiBkZWYgZ2V0X2Nyb3NzX2tlcm5lbF9jYyhiYixkKToKLSAgICBrZXJuZWxfY2MgPSBkLmdldFZhcignS0VSTkVMX0NDJywgRmFsc2UpCisgICAga2VybmVsX2NjID0gZC5nZXRWYXIoJ0tFUk5FTF9DQycpCiAKICAgICAjIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGJ5IHRoZSBzaGVsbCBpZiBuZWNlc3NhcnkKICAgICBpZiAnYCcgaW4ga2VybmVsX2NjIG9yICckKCcgaW4ga2VybmVsX2NjOgogICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgICAgICBrZXJuZWxfY2MgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiZWNobyAlcyIgJSBrZXJuZWxfY2MsIHNoZWxsPVRydWUpLmRlY29kZSgidXRmLTgiKVs6LTFdCiAKLSAgICBrZXJuZWxfY2MgPSBkLmV4cGFuZChrZXJuZWxfY2MpCiAgICAga2VybmVsX2NjID0ga2VybmVsX2NjLnJlcGxhY2UoJ2NjYWNoZScsICcnKS5zdHJpcCgpCiAgICAga2VybmVsX2NjID0ga2VybmVsX2NjLnNwbGl0KCcgJylbMF0KICAgICBrZXJuZWxfY2MgPSBrZXJuZWxfY2Muc3RyaXAoKQogICAgIHJldHVybiBrZXJuZWxfY2MKIAogZGVmIGdldF9pY2VjYyhkKToKLSAgICByZXR1cm4gZC5nZXRWYXIoJ0lDRUNDX1BBVEgnLCBGYWxzZSkgb3IgYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCJQQVRIIiksICJpY2VjYyIpCisgICAgcmV0dXJuIGQuZ2V0VmFyKCdJQ0VDQ19QQVRIJykgb3IgYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCJQQVRIIiksICJpY2VjYyIpCiAKIGRlZiBjcmVhdGVfcGF0aChjb21waWxlcnMsIGJiLCBkKToKICAgICAiIiIKQEAgLTkzLDcgKzEyMSw3IEBACiAgICAgcmV0dXJuIHN0YWdpbmcKIAogZGVmIHVzZV9pY2VjYyhiYixkKToKLSAgICBpZiBkLmdldFZhcignSUNFQ0NfRElTQUJMRUQnLCBGYWxzZSkgPT0gIjEiOgorICAgIGlmIGQuZ2V0VmFyKCdJQ0VDQ19ESVNBQkxFRCcpID09ICIxIjoKICAgICAgICAgIyBkb24ndCBldmVuIHRyeSBpdCwgd2hlbiBleHBsaWNpdGx5IGRpc2FibGVkCiAgICAgICAgIHJldHVybiAibm8iCiAKQEAgLTEwMSwxMCArMTI5LDEzIEBACiAgICAgaWYgaWNlY2NfaXNfYWxsYXJjaChiYiwgZCk6CiAgICAgICAgIHJldHVybiAibm8iCiAKKyAgICBpZiBpY2VjY19pc19jcm9zc19jYW5hZGlhbihiYiwgZCk6CisgICAgICAgIHJldHVybiAibm8iCisKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCiAKICAgICBzeXN0ZW1fY2xhc3NfYmxhY2tsaXN0ID0gW10KLSAgICB1c2VyX2NsYXNzX2JsYWNrbGlzdCA9IChkLmdldFZhcignSUNFQ0NfVVNFUl9DTEFTU19CTCcsIEZhbHNlKSBvciAibm9uZSIpLnNwbGl0KCkKKyAgICB1c2VyX2NsYXNzX2JsYWNrbGlzdCA9IChkLmdldFZhcignSUNFQ0NfVVNFUl9DTEFTU19CTCcpIG9yICJub25lIikuc3BsaXQoKQogICAgIHBhY2thZ2VfY2xhc3NfYmxhY2tsaXN0ID0gc3lzdGVtX2NsYXNzX2JsYWNrbGlzdCArIHVzZXJfY2xhc3NfYmxhY2tsaXN0CiAKICAgICBmb3IgYmxhY2sgaW4gcGFja2FnZV9jbGFzc19ibGFja2xpc3Q6CkBAIC0xMjEsOCArMTUyLDggQEAKICAgICAjIGUuZy4gd2hlbiB0aGVyZSBpcyBuZXcgdmVyc2lvbgogICAgICMgYnVpbGRpbmcgbGliZ2NjLWluaXRpYWwgd2l0aCBpY2VjYyBmYWlscyB3aXRoIENQUCBzYW5pdHkgY2hlY2sgZXJyb3IgaWYgaG9zdCBzeXNyb290IGNvbnRhaW5zIGNyb3NzIGdjYyBidWlsdCBmb3IgYW5vdGhlciB0YXJnZXQgdHVuZS92YXJpYW50CiAgICAgc3lzdGVtX3BhY2thZ2VfYmxhY2tsaXN0ID0gWyJsaWJnY2MtaW5pdGlhbCJdCi0gICAgdXNlcl9wYWNrYWdlX2JsYWNrbGlzdCA9IChkLmdldFZhcignSUNFQ0NfVVNFUl9QQUNLQUdFX0JMJywgRmFsc2UpIG9yICIiKS5zcGxpdCgpCi0gICAgdXNlcl9wYWNrYWdlX3doaXRlbGlzdCA9IChkLmdldFZhcignSUNFQ0NfVVNFUl9QQUNLQUdFX1dMJywgRmFsc2UpIG9yICIiKS5zcGxpdCgpCisgICAgdXNlcl9wYWNrYWdlX2JsYWNrbGlzdCA9IChkLmdldFZhcignSUNFQ0NfVVNFUl9QQUNLQUdFX0JMJykgb3IgIiIpLnNwbGl0KCkKKyAgICB1c2VyX3BhY2thZ2Vfd2hpdGVsaXN0ID0gKGQuZ2V0VmFyKCdJQ0VDQ19VU0VSX1BBQ0tBR0VfV0wnKSBvciAiIikuc3BsaXQoKQogICAgIHBhY2thZ2VfYmxhY2tsaXN0ID0gc3lzdGVtX3BhY2thZ2VfYmxhY2tsaXN0ICsgdXNlcl9wYWNrYWdlX2JsYWNrbGlzdAogCiAgICAgaWYgcG4gaW4gcGFja2FnZV9ibGFja2xpc3Q6CkBAIC0xMzMsNyArMTY0LDcgQEAKICAgICAgICAgYmIuZGVidWcoMSwgIiVzOiBmb3VuZCBpbiB3aGl0ZWxpc3QsIGVuYWJsZSBpY2VjYyIgJSBwbikKICAgICAgICAgcmV0dXJuICJ5ZXMiCiAKLSAgICBpZiBkLmdldFZhcignUEFSQUxMRUxfTUFLRScsIEZhbHNlKSA9PSAiIjoKKyAgICBpZiBkLmdldFZhcignUEFSQUxMRUxfTUFLRScpID09ICIiOgogICAgICAgICBiYi5kZWJ1ZygxLCAiJXM6IGhhcyBlbXB0eSBQQVJBTExFTF9NQUtFLCBkaXNhYmxlIGljZWNjIiAlIHBuKQogICAgICAgICByZXR1cm4gIm5vIgogCkBAIC0xNTEsMTYgKzE4MiwyNyBAQAogICAgICAgICBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJjcm9zcyIsIGQpIG9yIFwKICAgICAgICAgYmIuZGF0YS5pbmhlcml0c19jbGFzcygibmF0aXZlIiwgZCk7CiAKK2RlZiBpY2VjY19pc19jcm9zc19jYW5hZGlhbihiYiwgZCk6CisgICAgcmV0dXJuIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoImNyb3NzLWNhbmFkaWFuIiwgZCkKKworZGVmIGljZWNjX2RpcihiYiwgZCk6CisgICAgcmV0dXJuIGQuZXhwYW5kKCcke1RNUERJUn0vd29yay1zaGFyZWQvaWNlJykKKwogIyBEb24ndCBwb2xsdXRlIGFsbGFyY2ggc2lnbmF0dXJlcyB3aXRoIFRBUkdFVF9GUFUKIGljZWNjX3ZlcnNpb25bdmFyZGVwc2V4Y2x1ZGVdICs9ICJUQVJHRVRfRlBVIgogZGVmIGljZWNjX3ZlcnNpb24oYmIsIGQpOgogICAgIGlmIHVzZV9pY2VjYyhiYiwgZCkgPT0gIm5vIjoKICAgICAgICAgcmV0dXJuICIiCiAKLSAgICBwYXJhbGxlbCA9IGQuZ2V0VmFyKCdJQ0VDQ19QQVJBTExFTF9NQUtFJywgRmFsc2UpIG9yICIiCi0gICAgaWYgbm90IGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJywgRmFsc2UpID09ICIiIGFuZCBwYXJhbGxlbDoKKyAgICBwYXJhbGxlbCA9IGQuZ2V0VmFyKCdJQ0VDQ19QQVJBTExFTF9NQUtFJykgb3IgIiIKKyAgICBpZiBub3QgZC5nZXRWYXIoJ1BBUkFMTEVMX01BS0UnKSA9PSAiIiBhbmQgcGFyYWxsZWw6CiAgICAgICAgIGQuc2V0VmFyKCJQQVJBTExFTF9NQUtFIiwgcGFyYWxsZWwpCiAKKyAgICAjIERpc2FibGUgc2hvd2luZyB0aGUgY2FyZXQgaW4gdGhlIEdDQyBjb21waWxlciBvdXRwdXQgaWYgdGhlIHdvcmthcm91bmQgaXMKKyAgICAjIGRpc2FibGVkCisgICAgaWYgZC5nZXRWYXIoJ0lDRUNDX0NBUkVUX1dPUktBUk9VTkQnKSA9PSAnMCc6CisgICAgICAgIGQuc2V0VmFyKCdJQ0VDQ19DRkxBR1MnLCAnLWZuby1kaWFnbm9zdGljcy1zaG93LWNhcmV0JykKKwogICAgIGlmIGljZWNjX2lzX25hdGl2ZShiYiwgZCk6CiAgICAgICAgIGFyY2hpdmVfbmFtZSA9ICJsb2NhbC1ob3N0LWVudiIKICAgICBlbGlmIGQuZXhwYW5kKCcke0hPU1RfUFJFRklYfScpID09ICIiOgpAQCAtMTY5LDE0ICsyMTEsMTggQEAKICAgICAgICAgcHJlZml4ID0gZC5leHBhbmQoJyR7SE9TVF9QUkVGSVh9JyApCiAgICAgICAgIGRpc3RybyA9IGQuZXhwYW5kKCcke0RJU1RST30nKQogICAgICAgICB0YXJnZXRfc3lzID0gZC5leHBhbmQoJyR7VEFSR0VUX1NZU30nKQotICAgICAgICBmbG9hdCA9IGQuZ2V0VmFyKCdUQVJHRVRfRlBVJywgRmFsc2UpIG9yICJoYXJkIgorICAgICAgICBmbG9hdCA9IGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgb3IgImhhcmQiCiAgICAgICAgIGFyY2hpdmVfbmFtZSA9IHByZWZpeCArIGRpc3RybyArICItIiAgICAgICAgKyB0YXJnZXRfc3lzICsgIi0iICsgZmxvYXQKICAgICAgICAgaWYgaWNlY2NfaXNfa2VybmVsKGJiLCBkKToKICAgICAgICAgICAgIGFyY2hpdmVfbmFtZSArPSAiLWtlcm5lbCIKIAogICAgIGltcG9ydCBzb2NrZXQKLSAgICBpY2VfZGlyID0gZC5leHBhbmQoJyR7U1RBR0lOR19ESVJfTkFUSVZFfSR7cHJlZml4X25hdGl2ZX0nKQotICAgIHRhcl9maWxlID0gb3MucGF0aC5qb2luKGljZV9kaXIsICdpY2UnLCBhcmNoaXZlX25hbWUgKyAiLUBWRVJTSU9OQC0iICsgc29ja2V0LmdldGhvc3RuYW1lKCkgKyAnLnRhci5neicpCisgICAgaWNlX2RpciA9IGljZWNjX2RpcihiYiwgZCkKKyAgICB0YXJfZmlsZSA9IG9zLnBhdGguam9pbihpY2VfZGlyLCAie2FyY2hpdmV9LXt2ZXJzaW9ufS1AVkVSU0lPTkAte2hvc3RuYW1lfS50YXIuZ3oiLmZvcm1hdCgKKyAgICAgICAgYXJjaGl2ZT1hcmNoaXZlX25hbWUsCisgICAgICAgIHZlcnNpb249ZC5nZXRWYXIoJ0lDRUNDX0VOVl9WRVJTSU9OJyksCisgICAgICAgIGhvc3RuYW1lPXNvY2tldC5nZXRob3N0bmFtZSgpCisgICAgICAgICkpCiAKICAgICByZXR1cm4gdGFyX2ZpbGUKIApAQCAtMTk3LDI1ICsyNDMsNDIgQEAKICAgICB0YXJnZXRfcHJlZml4ID0gZC5leHBhbmQoJyR7VEFSR0VUX1BSRUZJWH0nKQogICAgIHJldHVybiBvcy5wYXRoLmpvaW4oZXh0ZXJuYWxfdG9vbGNoYWluX2JpbmRpciwgJyVzJXMnICUgKHRhcmdldF9wcmVmaXgsIHRvb2wpKQogCitkZWYgaWNlY2NfZ2V0X3Rvb2xfbGluayh0b29sLCBkKToKKyAgICBpbXBvcnQgc3VicHJvY2VzcworICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgicmVhZGxpbmsgLWYgJXMiICUgdG9vbCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpWzotMV0KKworZGVmIGljZWNjX2dldF9wYXRoX3Rvb2wodG9vbCwgZCk6CisgICAgIyBUaGlzIGlzIGEgbGl0dGxlIHVnbHksIGJ1dCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBhZGQgYW4gYWN0dWFsCisgICAgIyBjb21waWxlciB0byB0aGUgdG9vbGNoYWluLCBub3QgY2NhY2hlLiBTb21lIGRpc3Ryb3MgKGUuZy4gRmVkb3JhKQorICAgICMgaGF2ZSBjY2FjaGUgZW5hYmxlZCBieSBkZWZhdWx0IHVzaW5nIHN5bWxpbmtzIFBBVEgsIG1lYW5pbmcgY2NhY2hlCisgICAgIyB3b3VsZCBiZSBmb3VuZCBmaXJzdCB3aGVuIGxvb2tpbmcgZm9yIHRoZSBjb21waWxlci4KKyAgICBwYXRocyA9IG9zLmdldGVudigiUEFUSCIpLnNwbGl0KCc6JykKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBwLCBoaXN0ID0gYmIudXRpbHMud2hpY2goJzonLmpvaW4ocGF0aHMpLCB0b29sLCBoaXN0b3J5PVRydWUpCisgICAgICAgIGlmIG5vdCBwIG9yIG9zLnBhdGguYmFzZW5hbWUoaWNlY2NfZ2V0X3Rvb2xfbGluayhwLCBkKSkgIT0gJ2NjYWNoZSc6CisgICAgICAgICAgICByZXR1cm4gcAorICAgICAgICBwYXRocyA9IHBhdGhzW2xlbihoaXN0KTpdCisKKyAgICByZXR1cm4gIiIKKwogIyBEb24ndCBwb2xsdXRlIG5hdGl2ZSBzaWduYXR1cmVzIHdpdGggdGFyZ2V0IFRVTkVfUEtHQVJDSCB0aHJvdWdoIFNUQUdJTkdfQklORElSX1RPT0xDSEFJTgogaWNlY2NfZ2V0X3Rvb2xbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU4iCiBkZWYgaWNlY2NfZ2V0X3Rvb2woYmIsIGQsIHRvb2wpOgogICAgIGlmIGljZWNjX2lzX25hdGl2ZShiYiwgZCk6Ci0gICAgICAgIHJldHVybiBiYi51dGlscy53aGljaChvcy5nZXRlbnYoIlBBVEgiKSwgdG9vbCkKKyAgICAgICAgcmV0dXJuIGljZWNjX2dldF9wYXRoX3Rvb2wodG9vbCwgZCkKICAgICBlbGlmIGljZWNjX2lzX2tlcm5lbChiYiwgZCk6Ci0gICAgICAgIHJldHVybiBiYi51dGlscy53aGljaChvcy5nZXRlbnYoIlBBVEgiKSwgZ2V0X2Nyb3NzX2tlcm5lbF9jYyhiYiwgZCkpCisgICAgICAgIHJldHVybiBpY2VjY19nZXRfcGF0aF90b29sKGdldF9jcm9zc19rZXJuZWxfY2MoYmIsIGQpLCBkKQogICAgIGVsc2U6CiAgICAgICAgIGljZV9kaXIgPSBkLmV4cGFuZCgnJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59JykKICAgICAgICAgdGFyZ2V0X3N5cyA9IGQuZXhwYW5kKCcke1RBUkdFVF9TWVN9JykKLSAgICAgICAgdG9vbF9iaW4gPSBvcy5wYXRoLmpvaW4oaWNlX2RpciwgIiVzLSVzIiAlICh0YXJnZXRfc3lzLCB0b29sKSkKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUodG9vbF9iaW4pOgotICAgICAgICAgICAgcmV0dXJuIHRvb2xfYmluCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBleHRlcm5hbF90b29sX2JpbiA9IGljZWNjX2dldF9leHRlcm5hbF90b29sKGJiLCBkLCB0b29sKQotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZXh0ZXJuYWxfdG9vbF9iaW4pOgotICAgICAgICAgICAgICAgIHJldHVybiBleHRlcm5hbF90b29sX2JpbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gIiIKKyAgICAgICAgZm9yIHAgaW4gaWNlX2Rpci5zcGxpdCgnOicpOgorICAgICAgICAgICAgdG9vbF9iaW4gPSBvcy5wYXRoLmpvaW4ocCwgIiVzLSVzIiAlICh0YXJnZXRfc3lzLCB0b29sKSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHRvb2xfYmluKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9vbF9iaW4KKyAgICAgICAgZXh0ZXJuYWxfdG9vbF9iaW4gPSBpY2VjY19nZXRfZXh0ZXJuYWxfdG9vbChiYiwgZCwgdG9vbCkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZXh0ZXJuYWxfdG9vbF9iaW4pOgorICAgICAgICAgICAgcmV0dXJuIGV4dGVybmFsX3Rvb2xfYmluCisgICAgICAgIHJldHVybiAiIgogCiBkZWYgaWNlY2NfZ2V0X2FuZF9jaGVja190b29sKGJiLCBkLCB0b29sKToKICAgICAjIENoZWNrIHRoYXQgZysrIG9yIGdjYyBpcyBub3QgYSBzeW1ib2xpYyBsaW5rIHRvIGljZWNjIGJpbmFyeSBpbgpAQCAtMjIzLDggKzI4Niw3IEBACiAgICAgIyBjb21waWxlciBlbnZpcm9ubWVudCBwYWNrYWdlLgogICAgIHQgPSBpY2VjY19nZXRfdG9vbChiYiwgZCwgdG9vbCkKICAgICBpZiB0OgotICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwotICAgICAgICBsaW5rX3BhdGggPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgicmVhZGxpbmsgLWYgJXMiICUgdCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpWzotMV0KKyAgICAgICAgbGlua19wYXRoID0gaWNlY2NfZ2V0X3Rvb2xfbGluayh0b29sLCBkKQogICAgICAgICBpZiBsaW5rX3BhdGggPT0gZ2V0X2ljZWNjKGQpOgogICAgICAgICAgICAgYmIuZXJyb3IoIiVzIGlzIGEgc3ltbGluayB0byAlcyBpbiBQQVRIIGFuZCB0aGlzIHByZXZlbnRzIGljZWNjIGZyb20gd29ya2luZyIgJSAodCwgZ2V0X2ljZWNjKGQpKSkKICAgICAgICAgICAgIHJldHVybiAiIgpAQCAtMzA1LDcgKzM2Nyw3IEBACiAgICAgICAgICMgdGhlIElDRUNDX1ZFUlNJT04gZ2VuZXJhdGlvbiBzdGVwIG11c3QgYmUgbG9ja2VkIGJ5IGEgbXV0ZXgKICAgICAgICAgIyBpbiBvcmRlciB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucwogICAgICAgICBpZiBmbG9jayAtbiAiJHtJQ0VDQ19WRVJTSU9OfS5sb2NrIiBcCi0gICAgICAgICAgICAke0lDRUNDX0VOVl9FWEVDfSAiJHtJQ0VDQ19DQ30iICIke0lDRUNDX0NYWH0iICIke0lDRUNDX0FTfSIgIiR7SUNFQ0NfVkVSU0lPTn0iCisgICAgICAgICAgICAke0lDRUNDX0VOVl9FWEVDfSAke0lDRUNDX0VOVl9ERUJVR30gIiR7SUNFQ0NfQ0N9IiAiJHtJQ0VDQ19DWFh9IiAiJHtJQ0VDQ19BU30iICIke0lDRUNDX1ZFUlNJT059IgogICAgICAgICB0aGVuCiAgICAgICAgICAgICB0b3VjaCAiJHtJQ0VDQ19WRVJTSU9OfS5kb25lIgogICAgICAgICBlbGlmIFsgISB3YWl0X2Zvcl9maWxlICIke0lDRUNDX1ZFUlNJT059LmRvbmUiIDMwIF0KQEAgLTMxNiw5ICszNzgsMTMgQEAKICAgICAgICAgZmkKICAgICBmaQogCisgICAgIyBEb24ndCBsZXQgY2NhY2hlIGZpbmQgdGhlIGljZWNyZWFtIGNvbXBpbGVyIGxpbmtzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQsIG90aGVyd2lzZQorICAgICMgaXQgY2FuIGVuZCB1cCBpbnZva2luZyBpY2VjcmVhbSByZWN1cnNpdmVseS4KKyAgICBleHBvcnQgQ0NBQ0hFX1BBVEg9IiRQQVRIIgorICAgIGV4cG9ydCBDQ0FDSEVfRElTQkFMRT0iMSIKKwogICAgIGV4cG9ydCBJQ0VDQ19WRVJTSU9OIElDRUNDX0NDIElDRUNDX0NYWAogICAgIGV4cG9ydCBQQVRIPSIkSUNFX1BBVEg6JFBBVEgiCi0gICAgZXhwb3J0IENDQUNIRV9QQVRIPSIkUEFUSCIKIAogICAgIGJibm90ZSAiVXNpbmcgaWNlY2MiCiB9CkBAIC0zMzgsMyArNDA0LDEzIEBACiBkb19pbnN0YWxsX3ByZXBlbmQoKSB7CiAgICAgc2V0X2ljZWNjX2VudgogfQorCisjIEljZUNyZWFtIGlzIG5vdCAoY3VycmVudGx5KSBzdXBwb3J0ZWQgaW4gdGhlIGV4dGVuc2libGUgU0RLCitJQ0VDQ19TREtfSE9TVF9UQVNLID0gIm5hdGl2ZXNkay1pY2VjYy10b29sY2hhaW4iCitJQ0VDQ19TREtfSE9TVF9UQVNLX3Rhc2stcG9wdWxhdGUtc2RrLWV4dCA9ICIiCisKKyMgRG9uJ3QgaW5jbHVkZSBJY2VDcmVhbSBpbiB1bmluYXRpdmUgdGFyYmFsbAorSUNFQ0NfU0RLX0hPU1RfVEFTS19wbi11bmluYXRpdmUtdGFyYmFsbCA9ICIiCisKKyMgQWRkIHRoZSB0b29sY2hhaW4gc2NyaXB0cyB0byB0aGUgU0RLCitUT09MQ0hBSU5fSE9TVF9UQVNLX2FwcGVuZCA9ICIgJHtJQ0VDQ19TREtfSE9TVF9UQVNLfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtY29tYmluZWQtZGJnLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWNvbWJpbmVkLWRiZy5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NzcyZjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWNvbWJpbmVkLWRiZy5iYmNsYXNzCkBAIC0wLDAgKzEsOSBAQAorSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EX2FwcGVuZCA9ICIgY29tYmluZV9kYmdfaW1hZ2U7ICIKKworY29tYmluZV9kYmdfaW1hZ2UgKCkgeworICAgICAgICBpZiBbICIke0lNQUdFX0dFTl9ERUJVR0ZTfSIgPSAiMSIgLWEgLWUgJHtJTUFHRV9ST09URlN9LWRiZyBdOyB0aGVuCisgICAgICAgICAgICAgICAgIyBjb3B5IHRhcmdldCBmaWxlcyBpbnRvIC1kYmcgcm9vdGZzLCBzbyBpdCBjYW4gYmUgdXNlZCBmb3IKKyAgICAgICAgICAgICAgICAjIGRlYnVnIHB1cnBvc2VzIGRpcmVjdGx5CisgICAgICAgICAgICAgICAgdGFyIC1DICR7SU1BR0VfUk9PVEZTfSAtY2YgLSAuIHwgdGFyIC1DICR7SU1BR0VfUk9PVEZTfS1kYmcgLXhmIC0KKyAgICAgICAgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbGl2ZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKaW5kZXggMTYyM2MxNS4uOTY2Mjc3YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKQEAgLTE5LDcgKzE5LDYgQEAKIAogIyBFeHRlcm5hbCB2YXJpYWJsZXMgKGFsc28gdXNlZCBieSBzeXNsaW51eC5iYmNsYXNzKQogIyAke0lOSVRSRH0gLSBpbmRpY2F0ZXMgYSBsaXN0IG9mIGZpbGVzeXN0ZW0gaW1hZ2VzIHRvIGNvbmNhdGVuYXRlIGFuZCB1c2UgYXMgYW4gaW5pdHJkIChvcHRpb25hbCkKLSMgJHtDT01QUkVTU0lTT30gLSBUcmFuc3BhcmVudCBjb21wcmVzcyBJU08sIHJlZHVjZSBzaXplIH40MCUgaWYgc2V0IHRvIDEKICMgJHtOT0lTT30gIC0gc2tpcCBidWlsZGluZyB0aGUgSVNPIGltYWdlIGlmIHNldCB0byAxCiAjICR7Tk9IRER9ICAtIHNraXAgYnVpbGRpbmcgdGhlIEhERCBpbWFnZSBpZiBzZXQgdG8gMQogIyAke0hERElNR19JRH0gLSBGQVQgaW1hZ2Ugdm9sdW1lLWlkCkBAIC0zMyw3ICszMiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsL2tlcm5lbDpkb19kZXBsb3kgXAogICAgICAgICAgICAgICAgICAgICAgICAgJHtNTFBSRUZJWH1zeXNsaW51eDpkb19wb3B1bGF0ZV9zeXNyb290IFwKICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2xpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7QG9lLnV0aWxzLmlmZWxzZShkLmdldFZhcignQ09NUFJFU1NJU08nLCBGYWxzZSksJ3ppc29mcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsJycpfSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfTpkb19pbWFnZV8ke0BkLmdldFZhcignTElWRV9ST09URlNfVFlQRScpLnJlcGxhY2UoJy0nLCAnXycpfSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAiCiAKQEAgLTY1LDcgKzYzLDYgQEAKIElTT0RJUiA9ICIke1N9L2lzbyIKIEVGSUlNR0RJUiA9ICIke1N9L2VmaV9pbWciCiBDT01QQUNUX0lTT0RJUiA9ICIke1N9L2lzby56IgotQ09NUFJFU1NJU08gPz0gIjAiCiAKIElTT0xJTlVYRElSID89ICIvaXNvbGludXgiCiBJU09fQk9PVElNRyA9ICJpc29saW51eC9pc29saW51eC5iaW4iCkBAIC0xMTUsMTggKzExMiw4IEBACiAJCWluc3RhbGwgLW0gMDY0NCAke1NUQUdJTkdfREFUQURJUn0vc3lzbGludXgvaXNvbGludXguYmluICR7SVNPRElSfSR7SVNPTElOVVhESVJ9CiAJZmkKIAotCWlmIFsgIiR7Q09NUFJFU1NJU099IiA9ICIxIiBdIDsgdGhlbgotCQkjIGNyZWF0ZSBjb21wYWN0IGRpcmVjdG9yeSwgY29tcHJlc3MgaXNvCi0JCW1rZGlyIC1wICR7Q09NUEFDVF9JU09ESVJ9Ci0JCW1remZ0cmVlIC16IDkgLXAgNCAtRiAke0lTT0RJUn0vcm9vdGZzLmltZyAke0NPTVBBQ1RfSVNPRElSfS9yb290ZnMuaW1nCi0KLQkJIyBtb3ZlIGNvbXBhY3QgaXNvIHRvIGlzbywgdGhlbiByZW1vdmUgY29tcGFjdCBkaXJlY3RvcnkKLQkJbXYgJHtDT01QQUNUX0lTT0RJUn0vcm9vdGZzLmltZyAke0lTT0RJUn0vcm9vdGZzLmltZwotCQlybSAtUmYgJHtDT01QQUNUX0lTT0RJUn0KLQkJbWtpc29mc19jb21wcmVzc19vcHRzPSItUiAteiAtRCAtbCIKLQllbHNlCi0JCW1raXNvZnNfY29tcHJlc3Nfb3B0cz0iLXIiCi0JZmkKKwkjIFdlIHVzZWQgdG8gaGF2ZSBzdXBwb3J0IGZvciB6aXNvZnM7IHRoaXMgaXMgYSByZWxpYyBvZiB0aGF0CisJbWtpc29mc19jb21wcmVzc19vcHRzPSItciIKIAogCSMgQ2hlY2sgdGhlIHNpemUgb2YgJHtJU09ESVJ9L3Jvb3Rmcy5pbWcsIHVzZSBta2lzb2ZzIC1pc28tbGV2ZWwgMwogCSMgd2hlbiBpdCBleGNlZWRzIDMuOEdCLCB0aGUgc3BlY2lmaWNhdGlvbiBpcyA0RyAtIDEgYnl0ZXMsIHdlIG5lZWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKaW5kZXggZjNiYjY4Yi4uNmE4YWZhOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKQEAgLTM2LDcgKzM2LDcgQEAKIAlkeW5hbWljX2xvYWRlcj0kKGxpbnV4bG9hZGVyKQogCiAJIyBwcmVsaW5rIQotCWlmIFsgIiRCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMiID0gIjEiIF07IHRoZW4KKwlpZiBbICIke0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFU30iID0gIjEiIF07IHRoZW4KIAkJYmJub3RlICIgcHJlbGluazogQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTLi4uIgogCQlpZiBbICIkUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMiID0gIiIgXTsgdGhlbgogCQkJZXhwb3J0IFBSRUxJTktfVElNRVNUQU1QPWBnaXQgbG9nIC0xIC0tcHJldHR5PSVjdCBgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKaW5kZXggZDg4Y2U1Yy4uMjI0N2IzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcwpAQCAtMTcsNyArMTcsNyBAQAogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogCi1URVNUSU1BR0VDTEFTUyA9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdURVNUX0lNQUdFJywgJzEnLCAndGVzdGltYWdlLWF1dG8nLCAnJywgZCl9IgorVEVTVElNQUdFQ0xBU1MgPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1RFU1RfSU1BR0UnLCAnMScsICd0ZXN0aW1hZ2UtYXV0bycsICcnLCBkKX0iCiBpbmhlcml0ICR7VEVTVElNQUdFQ0xBU1N9CiAKICMgSU1BR0VfRkVBVFVSRVMgbWF5IGNvbnRhaW4gYW55IGF2YWlsYWJsZSBwYWNrYWdlIGdyb3VwCkBAIC0yODksNyArMjg5LDcgQEAKIFNTVEFURV9TS0lQX0NSRUFUSU9OX3Rhc2staW1hZ2UtY29tcGxldGUgPSAnMScKIGRvX2ltYWdlX2NvbXBsZXRlW3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7SU1HREVQTE9ZRElSfSIKIGRvX2ltYWdlX2NvbXBsZXRlW3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke0RFUExPWV9ESVJfSU1BR0V9IgotZG9faW1hZ2VfY29tcGxldGVbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FfSIKK2RvX2ltYWdlX2NvbXBsZXRlW3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORV9BUkNIfSIKIGFkZHRhc2sgZG9faW1hZ2VfY29tcGxldGUgYWZ0ZXIgZG9faW1hZ2UgYmVmb3JlIGRvX2J1aWxkCiBweXRob24gZG9faW1hZ2VfY29tcGxldGVfc2V0c2NlbmUgKCkgewogICAgIHNzdGF0ZV9zZXRzY2VuZShkKQpAQCAtNTM2LDIxICs1MzYsMjkgQEAKICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2R1JywgJy1rcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdJTUFHRV9ST09URlMnKV0pCiAgICAgc2l6ZV9rYiA9IGludChvdXRwdXQuc3BsaXQoKVswXSkKLSAgICBiYXNlX3NpemUgPSBzaXplX2tiICogb3ZlcmhlYWRfZmFjdG9yCi0gICAgYmFzZV9zaXplID0gbWF4KGJhc2Vfc2l6ZSwgcm9vdGZzX3JlcV9zaXplKSArIHJvb3Rmc19leHRyYV9zcGFjZQogCisgICAgYmFzZV9zaXplID0gc2l6ZV9rYiAqIG92ZXJoZWFkX2ZhY3RvcgorICAgIGJiLmRlYnVnKDEsICclZiA9ICVkICogJWYnICUgKGJhc2Vfc2l6ZSwgc2l6ZV9rYiwgb3ZlcmhlYWRfZmFjdG9yKSkKKyAgICBiYXNlX3NpemUyID0gbWF4KGJhc2Vfc2l6ZSwgcm9vdGZzX3JlcV9zaXplKSArIHJvb3Rmc19leHRyYV9zcGFjZQorICAgIGJiLmRlYnVnKDEsICclZiA9IG1heCglZiwgJWQpWyVmXSArICVkJyAlIChiYXNlX3NpemUyLCBiYXNlX3NpemUsIHJvb3Rmc19yZXFfc2l6ZSwgbWF4KGJhc2Vfc2l6ZSwgcm9vdGZzX3JlcV9zaXplKSwgb3ZlcmhlYWRfZmFjdG9yKSkKKworICAgIGJhc2Vfc2l6ZSA9IGJhc2Vfc2l6ZTIKICAgICBpZiBiYXNlX3NpemUgIT0gaW50KGJhc2Vfc2l6ZSk6CiAgICAgICAgIGJhc2Vfc2l6ZSA9IGludChiYXNlX3NpemUgKyAxKQogICAgIGVsc2U6CiAgICAgICAgIGJhc2Vfc2l6ZSA9IGludChiYXNlX3NpemUpCisgICAgYmIuZGVidWcoMSwgJyVmID0gaW50KCVmKScgJSAoYmFzZV9zaXplLCBiYXNlX3NpemUyKSkKIAorICAgIGJhc2Vfc2l6ZV9zYXZlZCA9IGJhc2Vfc2l6ZQogICAgIGJhc2Vfc2l6ZSArPSByb290ZnNfYWxpZ25tZW50IC0gMQogICAgIGJhc2Vfc2l6ZSAtPSBiYXNlX3NpemUgJSByb290ZnNfYWxpZ25tZW50CisgICAgYmIuZGVidWcoMSwgJyVkID0gYWxpZ25lZCglZCknICUgKGJhc2Vfc2l6ZSwgYmFzZV9zaXplX3NhdmVkKSkKIAogICAgICMgRG8gbm90IGNoZWNrIGltYWdlIHNpemUgb2YgdGhlIGRlYnVnZnMgaW1hZ2UuIFRoaXMgaXMgbm90IHN1cHBvc2VkCiAgICAgIyB0byBiZSBkZXBsb3llZCwgZXRjLiBzbyBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gbGltaXQgdGhlIHNpemUKICAgICAjIG9mIHRoZSBkZWJ1Zy4KICAgICBpZiAoZC5nZXRWYXIoJ0lNQUdFX0JVSUxESU5HX0RFQlVHRlMnKSBvciAiIikgPT0gInRydWUiOgorICAgICAgICBiYi5kZWJ1ZygxLCAncmV0dXJuaW5nIGRlYnVnZnMgc2l6ZSAlZCcgJSAoYmFzZV9zaXplKSkKICAgICAgICAgcmV0dXJuIGJhc2Vfc2l6ZQogCiAgICAgIyBDaGVjayB0aGUgcm9vdGZzIHNpemUgYWdhaW5zdCBJTUFHRV9ST09URlNfTUFYU0laRSAoaWYgc2V0KQpAQCAtNTY4LDYgKzU3Niw4IEBACiAgICAgICAgICAgICAgICAgKGJhc2Vfc2l6ZSwgaW5pdHJhbWZzX21heHNpemVfaW50KSkKICAgICAgICAgICAgIGJiLmVycm9yKCJZb3UgY2FuIHNldCBJTklUUkFNRlNfTUFYU0laRSBhIGxhcmdlciB2YWx1ZS4gVXN1YWxseSwgaXQgc2hvdWxkIikKICAgICAgICAgICAgIGJiLmZhdGFsKCJiZSBsZXNzIHRoYW4gMS8yIG9mIHJhbSBzaXplLCBvciB5b3UgbWF5IGZhaWwgdG8gYm9vdCBpdC5cbiIpCisKKyAgICBiYi5kZWJ1ZygxLCAncmV0dXJuaW5nICVkJyAlIChiYXNlX3NpemUpKQogICAgIHJldHVybiBiYXNlX3NpemUKIAogcHl0aG9uIHNldF9pbWFnZV9zaXplICgpIHsKQEAgLTYxNyw5ICs2MjcsOSBAQAogZG9fcGFja2FnZVtub2V4ZWNdID0gIjEiCiBkZWx0YXNrIGRvX3BhY2thZ2VfcWEKIGRvX3BhY2thZ2VkYXRhW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfaXBrW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfZGViW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfcnBtW25vZXhlY10gPSAiMSIKK2RlbHRhc2sgZG9fcGFja2FnZV93cml0ZV9pcGsKK2RlbHRhc2sgZG9fcGFja2FnZV93cml0ZV9kZWIKK2RlbHRhc2sgZG9fcGFja2FnZV93cml0ZV9ycG0KIAogIyBQcmVwYXJlIHRoZSByb290IGxpbmtzIHRvIHBvaW50IHRvIHRoZSAvdXNyIGNvdW50ZXJwYXJ0cy4KIGNyZWF0ZV9tZXJnZWRfdXNyX3N5bWxpbmtzKCkgewpAQCAtNjU0LDcgKzY2NCw3IEBACiBQT1BVTEFURV9TREtfUFJFX1RBUkdFVF9DT01NQU5EICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJ2NyZWF0ZV9tZXJnZWRfdXNyX3N5bWxpbmtzX3NkazsgJywgJycsZCl9IgogCiByZXByb2R1Y2libGVfZmluYWxfaW1hZ2VfdGFzayAoKSB7Ci0gICAgaWYgWyAiJEJVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyIgPSAiMSIgXTsgdGhlbgorICAgIGlmIFsgIiR7QlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTfSIgPSAiMSIgXTsgdGhlbgogICAgICAgICBpZiBbICIkUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMiID0gIiIgXTsgdGhlbgogICAgICAgICAgICAgUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlM9YGdpdCBsb2cgLTEgLS1wcmV0dHk9JWN0YAogICAgICAgICBmaQpAQCAtNjY0LDMgKzY3NCw1IEBACiAgICAgZmkKIH0KIElNQUdFX1BSRVBST0NFU1NfQ09NTUFORF9hcHBlbmQgPSAiIHJlcHJvZHVjaWJsZV9maW5hbF9pbWFnZV90YXNrOyAiCisKK0NWRV9QUk9EVUNUID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcwppbmRleCBlODgxZDBjLi4wMGEwMGQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCkBAIC04Niw3ICs4Niw3IEBACiAJYmJkZWJ1ZyAxIEV4ZWN1dGluZyAiZGQgaWY9L2Rldi96ZXJvIG9mPSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZSBzZWVrPSRST09URlNfU0laRSBjb3VudD0kQ09VTlQgYnM9MTAyNCIKIAlkZCBpZj0vZGV2L3plcm8gb2Y9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlIHNlZWs9JFJPT1RGU19TSVpFIGNvdW50PSRDT1VOVCBicz0xMDI0CiAJYmJkZWJ1ZyAxICJBY3R1YWwgUm9vdGZzIHNpemU6ICBgZHUgLXMgJHtJTUFHRV9ST09URlN9YCIKLQliYmRlYnVnIDEgIkFjdHVhbCBQYXJ0aW9uIHNpemU6IGBscyAtcyAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGVgIgorCWJiZGVidWcgMSAiQWN0dWFsIFBhcnRpb24gc2l6ZTogYHN0YXQgLWMgJyVzJyAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGVgIgogCWJiZGVidWcgMSBFeGVjdXRpbmcgIm1rZnMuJGZzdHlwZSAtRiAkZXh0cmFfaW1hZ2VjbWQgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlIC1kICR7SU1BR0VfUk9PVEZTfSIKIAlta2ZzLiRmc3R5cGUgLUYgJGV4dHJhX2ltYWdlY21kICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZSAtZCAke0lNQUdFX1JPT1RGU30KIAkjIEVycm9yIGNvZGVzIDAtMyBpbmRpY2F0ZSBzdWNjZXNzZnVsbCBvcGVyYXRpb24gb2YgZnNjayAobm8gZXJyb3JzIG9yIGVycm9ycyBjb3JyZWN0ZWQpCkBAIC0xMjUsNyArMTI1LDcgQEAKICMgcmVxdWlyZWQgd2hlbiBleHRyYWN0aW5nLCBidXQgaXQgc2VlbXMgcHJ1ZGVudCB0byB1c2UgaXQgaW4gYm90aCBjYXNlcy4KIElNQUdFX0NNRF9UQVIgPz0gInRhciIKICMgaWdub3JlIHJldHVybiBjb2RlIDEgImZpbGUgY2hhbmdlZCBhcyB3ZSByZWFkIGl0IiBhcyBvdGhlciB0YXNrcyhlLmcuIGRvX2ltYWdlX3dpYykgbWF5IGJlIGhhcmRsaW5raW5nIHJvb3RmcwotSU1BR0VfQ01EX3RhciA9ICIke0lNQUdFX0NNRF9UQVJ9IC1jZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnRhciAtQyAke0lNQUdFX1JPT1RGU30gLiB8fCBbICQ/IC1lcSAxIF0iCitJTUFHRV9DTURfdGFyID0gIiR7SU1BR0VfQ01EX1RBUn0gLS1udW1lcmljLW93bmVyIC1jZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnRhciAtQyAke0lNQUdFX1JPT1RGU30gLiB8fCBbICQ/IC1lcSAxIF0iCiAKIGRvX2ltYWdlX2NwaW9bY2xlYW5kaXJzXSArPSAiJHtXT1JLRElSfS9jcGlvX2FwcGVuZCIKIElNQUdFX0NNRF9jcGlvICgpIHsKQEAgLTE0NywxNiArMTQ3LDYgQEAKIAlmaQogfQogCi1FTEZfS0VSTkVMID89ICIke0RFUExPWV9ESVJfSU1BR0V9LyR7S0VSTkVMX0lNQUdFVFlQRX0iCi1FTEZfQVBQRU5EID89ICJyYW1kaXNrX3NpemU9MzI3Njggcm9vdD0vZGV2L3JhbTAgcncgY29uc29sZT0iCi0KLUlNQUdFX0NNRF9lbGYgKCkgewotCXRlc3QgLWYgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5lbGYgJiYgcm0gLWYgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5lbGYKLQlta2VsZkltYWdlIC0ta2VybmVsPSR7RUxGX0tFUk5FTH0gLS1pbml0cmQ9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS5jcGlvLmd6IC0tb3V0cHV0PSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uZWxmIC0tYXBwZW5kPScke0VMRl9BUFBFTkR9JyAke0VYVFJBX0lNQUdFQ01EfQotfQotCi1JTUFHRV9UWVBFREVQX2VsZiA9ICJjcGlvLmd6IgotCiBVQklfVk9MTkFNRSA/PSAiJHtNQUNISU5FfS1yb290ZnMiCiAKIG11bHRpdWJpX21rZnMoKSB7CkBAIC0yMTgsMTAgKzIwOCwyNyBAQAogCiBJTUFHRV9DTURfdWJpZnMgPSAibWtmcy51YmlmcyAtciAke0lNQUdFX1JPT1RGU30gLW8gJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS51YmlmcyAke01LVUJJRlNfQVJHU30iCiAKK01JTl9GMkZTX1NJWkUgPz0gIjUyNDI4OCIKK0lNQUdFX0NNRF9mMmZzICgpIHsKKyAgICAgICAgIyBXZSBuZWVkIHRvIGFkZCBhZGRpdGlvbmFsIHNtYXJ0cyBoZXJlIGZvcm0gZGV2aWNlcyBzbWFsbGVyIHRoYW4gMS41RworICAgICAgICAjIE5lZWQgdG8gc2NhbGUgYXBwcm9wcmlhdGVseSBiZXR3ZWVuIDQwTSAtPiAxLjVHIGFzIHRoZSAib3ZlcnByb3Zpc2lvbgorICAgICAgICAjIHJhdGlvIiBnb2VzIGRvd24gYXMgdGhlIGRldmljZSBnZXRzIGJpZ2dlciAoNzAlIC0+IDQuNSUpLCBiZWxvdyBhYm91dAorICAgICAgICAjIDUwME0gdGhlIHN0YW5kYXJkIElNQUdFX09WRVJIRUFEX0ZBQ1RPUiBkb2VzIG5vdCB3b3JrLCBzbyBhZGQgYWRkaXRpb25hbAorICAgICAgICAjIHNwYWNlIGhlcmUgd2hlbiB1bmRlciA1MDBNCisJc2l6ZT0ke1JPT1RGU19TSVpFfQorCWlmIFsgJHtzaXplfSAtbHQgJHtNSU5fRjJGU19TSVpFfSBdIDsgdGhlbgorCQlzaXplPSR7TUlOX0YyRlNfU0laRX0KKwkJYmJ3YXJuICJSb290ZnMgc2l6ZSBpcyB0b28gc21hbGwgZm9yIEYyRlMuIEZpbGVzeXN0ZW0gd2lsbCBiZSBleHRlbmRlZCB0byAke3NpemV9SyIKKwlmaQorCWRkIGlmPS9kZXYvemVybyBvZj0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmYyZnMgc2Vlaz0ke3NpemV9IGNvdW50PTAgYnM9MTAyNAorCW1rZnMuZjJmcyAke0VYVFJBX0lNQUdFQ01EfSAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmYyZnMKKwlzbG9hZC5mMmZzIC1mICR7SU1BR0VfUk9PVEZTfSAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmYyZnMKK30KKwogRVhUUkFfSU1BR0VDTUQgPSAiIgogCiBpbmhlcml0IHNpdGVpbmZvIGtlcm5lbC1hcmNoCi1KRkZTMl9FTkRJQU5ORVNTID89ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy1sJywgJy1iJywgZCl9IgorSkZGUzJfRU5ESUFOTkVTUyA/PSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnbGUnLCAnLWwnLCAnLWInLCBkKX0iCiBKRkZTMl9FUkFTRUJMT0NLID89ICIweDQwMDAwIgogRVhUUkFfSU1BR0VDTURfamZmczIgPz0gIi0tcGFkICR7SkZGUzJfRU5ESUFOTkVTU30gLS1lcmFzZWJsb2NrPSR7SkZGUzJfRVJBU0VCTE9DS30gLS1uby1jbGVhbm1hcmtlcnMiCiAKQEAgLTIzMCw3ICsyMzcsNyBAQAogRVhUUkFfSU1BR0VDTURfZXh0MyA/PSAiLWkgNDA5NiIKIEVYVFJBX0lNQUdFQ01EX2V4dDQgPz0gIi1pIDQwOTYiCiBFWFRSQV9JTUFHRUNNRF9idHJmcyA/PSAiLW4gNDA5NiIKLUVYVFJBX0lNQUdFQ01EX2VsZiA/PSAiIgorRVhUUkFfSU1BR0VDTURfZjJmcyA/PSAiIgogCiBkb19pbWFnZV9qZmZzMltkZXBlbmRzXSArPSAibXRkLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9faW1hZ2VfY3JhbWZzW2RlcGVuZHNdICs9ICJ1dGlsLWxpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgpAQCAtMjQyLDEwICsyNDksMTAgQEAKIGRvX2ltYWdlX3NxdWFzaGZzX3h6W2RlcGVuZHNdICs9ICJzcXVhc2hmcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX2ltYWdlX3NxdWFzaGZzX2x6b1tkZXBlbmRzXSArPSAic3F1YXNoZnMtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19pbWFnZV9zcXVhc2hmc19sejRbZGVwZW5kc10gKz0gInNxdWFzaGZzLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgotZG9faW1hZ2VfZWxmW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wb3B1bGF0ZV9zeXNyb290IG1rZWxmaW1hZ2UtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19pbWFnZV91YmlbZGVwZW5kc10gKz0gIm10ZC11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX2ltYWdlX3ViaWZzW2RlcGVuZHNdICs9ICJtdGQtdXRpbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19pbWFnZV9tdWx0aXViaVtkZXBlbmRzXSArPSAibXRkLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2VfZjJmc1tkZXBlbmRzXSArPSAiZjJmcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAogIyBUaGlzIHZhcmlhYmxlIGlzIGF2YWlsYWJsZSB0byByZXF1ZXN0IHdoaWNoIHZhbHVlcyBhcmUgc3VpdGFibGUgZm9yIElNQUdFX0ZTVFlQRVMKIElNQUdFX1RZUEVTID0gIiBcCkBAIC0yNjEsOSArMjY4LDkgQEAKICAgICB1YmkgdWJpZnMgbXVsdGl1YmkgXAogICAgIHRhciB0YXIuZ3ogdGFyLmJ6MiB0YXIueHogdGFyLmx6NCBcCiAgICAgY3BpbyBjcGlvLmd6IGNwaW8ueHogY3Bpby5sem1hIGNwaW8ubHo0IFwKLSAgICBlbGYgXAogICAgIHdpYyB3aWMuZ3ogd2ljLmJ6MiB3aWMubHptYSBcCiAgICAgY29udGFpbmVyIFwKKyAgICBmMmZzIFwKICIKIAogIyBDb21wcmVzc2lvbiBpcyBhIHNwZWNpYWwgY2FzZSBvZiBjb252ZXJzaW9uLiBUaGUgb2xkIHZhcmlhYmxlCkBAIC0yNzQsMTEgKzI4MSwxMCBAQAogCiBDT05WRVJTSU9OVFlQRVMgPSAiZ3ogYnoyIGx6bWEgeHogbHo0IGx6byB6aXAgc3VtIG1kNXN1bSBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gc2hhMzg0c3VtIHNoYTUxMnN1bSBibWFwIHUtYm9vdCB2bWRrIHZkaSBxY293MiAke0NPTVBSRVNTSU9OVFlQRVN9IgogQ09OVkVSU0lPTl9DTURfbHptYSA9ICJsem1hIC1rIC1mIC03ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgotQ09OVkVSU0lPTl9DTURfZ3ogPSAiZ3ppcCAtZiAtOSAtbiAtYyAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmd6IgorQ09OVkVSU0lPTl9DTURfZ3ogPSAicGlneiAtZiAtOSAtbiAtYyAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmd6IgogQ09OVkVSU0lPTl9DTURfYnoyID0gInBiemlwMiAtZiAtayAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKIENPTlZFUlNJT05fQ01EX3h6ID0gInh6IC1mIC1rIC1jICR7WFpfQ09NUFJFU1NJT05fTEVWRUx9ICR7WFpfVEhSRUFEU30gLS1jaGVjaz0ke1haX0lOVEVHUklUWV9DSEVDS30gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS54eiIKLUNPTlZFUlNJT05fQ01EX2x6NCA9ICJsejQgLTkgLXogJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0ubHo0IgotQ09OVkVSU0lPTl9DTURfbHo0X2xlZ2FjeSA9ICJsejQgLTkgLXogLWwgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0ubHo0IgorQ09OVkVSU0lPTl9DTURfbHo0ID0gImx6NCAtOSAteiAtbCAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5sejQiCiBDT05WRVJTSU9OX0NNRF9sem8gPSAibHpvcCAtOSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKIENPTlZFUlNJT05fQ01EX3ppcCA9ICJ6aXAgJHtaSVBfQ09NUFJFU1NJT05fTEVWRUx9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnppcCAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKIENPTlZFUlNJT05fQ01EX3N1bSA9ICJzdW10b29sIC1pICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IC1vICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnN1bSAke0pGRlMyX1NVTV9FWFRSQV9BUkdTfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCmluZGV4IGRjZjYyMGMuLjViNDBhOWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcwpAQCAtMTAyLDYgKzEwMiw3IEBACiAgICAgICAgICAgICAgICAgIyBhIHZhcmlhYmxlIGFuZCBsZXQgdGhlIG1ldGFkYXRhIGRlYWwgd2l0aCB0aGUgZGVwcy4KICAgICAgICAgICAgICAgICBkLnNldFZhcignX1dLU19URU1QTEFURScsIGJvZHkpCiAgICAgICAgICAgICAgICAgYmIuYnVpbGQuYWRkdGFzaygnZG9fd3JpdGVfd2tzX3RlbXBsYXRlJywgJ2RvX2ltYWdlX3dpYycsIE5vbmUsIGQpCisgICAgICAgIGJiLmJ1aWxkLmFkZHRhc2soJ2RvX2ltYWdlX3dpYycsICdkb19pbWFnZV9jb21wbGV0ZScsIE5vbmUsIGQpCiB9CiAKICMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzCmluZGV4IDBhM2I1MjguLmZhMTU0NjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcwpAQCAtNjgsNiArNjgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJlcGlwaGFueSI6ICAgKDQ2NDMsICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiOiAgICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjMyIjogICAgKDI0MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2NjQiOiAgICAoMjQzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJsaW51eCIgOiB7IAogICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjQiIDogICAoMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCkBAIC05NCw2ICs5OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTY0cjYiOiAgICggOCwgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzaXNhNjRyNmVsIjogKCA4LCAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5pb3MyIjogICAgICAoMTEzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3YzMiI6ICAgICgyNDMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjY0IjogICAgKDI0MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgInMzOTAiOiAgICAgICAoMjIsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAic2g0IjogICAgICAgICg0MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJzcGFyYyI6ICAgICAgKCAyLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLApAQCAtMTE5LDYgKzEyNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZSI6ICAoMTg5LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWwiOigxODksICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3YzMiI6ICAgICgyNDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2NjQiOiAgICAoMjQzLCAgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJzaDQiOiAgICAgICAgKCAgNDIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJ1Y2xpbnV4LXVjbGliYyIgOiB7CkBAIC0xNDIsNiArMTUxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAgICAoNDIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJsaW51eC1nbnVfaWxwMzIiIDogICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0IiA6ICAgKDE4MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAibGludXgtZ251eDMyIiA6ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKDYyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgIH0sCkBAIC00MjIsNyArNDM0LDcgQEAKIAogICAgICMgQ2hlY2sgdGhlIGFyY2hpdGVjdHVyZSBhbmQgZW5kaWFubmVzIG9mIHRoZSBiaW5hcnkKICAgICBpc18zMiA9ICgoInZpcnR1YWwva2VybmVsIiBpbiBwcm92aWRlcykgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygibW9kdWxlIiwgZCkpIGFuZCBcCi0gICAgICAgICAgICAodGFyZ2V0X29zID09ICJsaW51eC1nbnV4MzIiIG9yIHRhcmdldF9vcyA9PSAibGludXgtbXVzbHgzMiIgIG9yIHJlLm1hdGNoKCdtaXBzNjQuKjMyJywgZC5nZXRWYXIoJ0RFRkFVTFRUVU5FJykpKQorICAgICAgICAgICAgKHRhcmdldF9vcyA9PSAibGludXgtZ251eDMyIiBvciB0YXJnZXRfb3MgPT0gImxpbnV4LW11c2x4MzIiIG9yIHRhcmdldF9vcyA9PSAibGludXgtZ251X2lscDMyIiBvciByZS5tYXRjaCgnbWlwczY0LiozMicsIGQuZ2V0VmFyKCdERUZBVUxUVFVORScpKSkKICAgICBpZiBub3QgKChtYWNoaW5lID09IGVsZi5tYWNoaW5lKCkpIG9yIGlzXzMyKToKICAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgImFyY2giLCAiQXJjaGl0ZWN0dXJlIGRpZCBub3QgbWF0Y2ggKCVzLCBleHBlY3RlZCAlcykgb24gJXMiICUgXAogICAgICAgICAgICAgICAgICAob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKGVsZi5tYWNoaW5lKCkpLCBvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcobWFjaGluZSksIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFyY2guYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFyY2guYmJjbGFzcwppbmRleCBjN2IzM2Q5Li4wOTc5M2ZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1hcmNoLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtYXJjaC5iYmNsYXNzCkBAIC0xNCw3ICsxNCw3IEBACiAgICAgICAgICAgICAgICBwYXJpc2MgczM5MCAgdjg1MCBcCiAgICAgICAgICAgICAgICBhdnIzMiBibGFja2ZpbiBcCiAgICAgICAgICAgICAgICBtaWNyb2JsYXplIFwKLSAgICAgICAgICAgICAgIG5pb3MyIGFyYyB4dGVuc2EiCisgICAgICAgICAgICAgICBuaW9zMiBhcmMgcmlzY3YgeHRlbnNhIgogCiBkZWYgbWFwX2tlcm5lbF9hcmNoKGEsIGQpOgogICAgIGltcG9ydCByZQpAQCAtMjgsNiArMjgsNyBAQAogICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjRfaWxwMzIkJywgYSk6ICAgICAgICAgcmV0dXJuICdhcm02NCcKICAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0X2JlX2lscDMyJCcsIGEpOiAgICAgIHJldHVybiAnYXJtNjQnCiAgICAgZWxpZiByZS5tYXRjaCgnbWlwcyhpc2F8KSgzMnw2NHwpKHI2fCkoZWx8KSQnLCBhKTogICAgICByZXR1cm4gJ21pcHMnCisgICAgZWxpZiByZS5tYXRjaCgncmlzY3YoMzJ8NjR8KShlYnwpJCcsIGEpOiAgICByZXR1cm4gJ3Jpc2N2JwogICAgIGVsaWYgcmUubWF0Y2goJ3AocGN8b3dlcnBjKSh8NjQpJywgYSk6ICAgICAgcmV0dXJuICdwb3dlcnBjJwogICAgIGVsaWYgcmUubWF0Y2goJ3NoKDN8NCkkJywgYSk6ICAgICAgICAgICAgICAgcmV0dXJuICdzaCcKICAgICBlbGlmIHJlLm1hdGNoKCdiZmluJywgYSk6ICAgICAgICAgICAgICAgICAgIHJldHVybiAnYmxhY2tmaW4nCkBAIC01OCw3ICs1OSw3IEBACiBUQVJHRVRfQVJfS0VSTkVMX0FSQ0ggPz0gIiIKIEhPU1RfQVJfS0VSTkVMX0FSQ0ggPz0gIiR7VEFSR0VUX0FSX0tFUk5FTF9BUkNIfSIKIAotS0VSTkVMX0NDID0gIiR7Q0NBQ0hFfSR7SE9TVF9QUkVGSVh9Z2NjICR7SE9TVF9DQ19LRVJORUxfQVJDSH0gLWZ1c2UtbGQ9YmZkIgorS0VSTkVMX0NDID0gIiR7Q0NBQ0hFfSR7SE9TVF9QUkVGSVh9Z2NjICR7SE9TVF9DQ19LRVJORUxfQVJDSH0gLWZ1c2UtbGQ9YmZkICR7REVCVUdfUFJFRklYX01BUH0gLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7U1RBR0lOR19LRVJORUxfRElSfT0ke0tFUk5FTF9TUkNfUEFUSH0iCiBLRVJORUxfTEQgPSAiJHtDQ0FDSEV9JHtIT1NUX1BSRUZJWH1sZC5iZmQgJHtIT1NUX0xEX0tFUk5FTF9BUkNIfSIKIEtFUk5FTF9BUiA9ICIke0NDQUNIRX0ke0hPU1RfUFJFRklYfWFyICR7SE9TVF9BUl9LRVJORUxfQVJDSH0iCiBUT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzCmluZGV4IDZlMDhiZTQuLjRmODBjYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWRldmljZXRyZWUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1kZXZpY2V0cmVlLmJiY2xhc3MKQEAgLTEsMTAgKzEsMTAgQEAKICMgU3VwcG9ydCBmb3IgZGV2aWNlIHRyZWUgZ2VuZXJhdGlvbgogUEFDS0FHRVNfYXBwZW5kID0gIiBcCi0gICAga2VybmVsLWRldmljZXRyZWUgXAotICAgICR7QFsna2VybmVsLWltYWdlLXppbWFnZS1idW5kbGUnLCAnJ11bZC5nZXRWYXIoJ0tFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRScpICE9ICcxJ119IFwKKyAgICAke0tFUk5FTF9QQUNLQUdFX05BTUV9LWRldmljZXRyZWUgXAorICAgICR7QFtkLmdldFZhcignS0VSTkVMX1BBQ0tBR0VfTkFNRScpICsgJy1pbWFnZS16aW1hZ2UtYnVuZGxlJywgJyddW2QuZ2V0VmFyKCdLRVJORUxfREVWSUNFVFJFRV9CVU5ETEUnKSAhPSAnMSddfSBcCiAiCi1GSUxFU19rZXJuZWwtZGV2aWNldHJlZSA9ICIvJHtLRVJORUxfSU1BR0VERVNUfS8qLmR0YiAvJHtLRVJORUxfSU1BR0VERVNUfS8qLmR0Ym8iCi1GSUxFU19rZXJuZWwtaW1hZ2UtemltYWdlLWJ1bmRsZSA9ICIvJHtLRVJORUxfSU1BR0VERVNUfS96SW1hZ2UtKi5kdGIuYmluIgorRklMRVNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1kZXZpY2V0cmVlID0gIi8ke0tFUk5FTF9JTUFHRURFU1R9LyouZHRiIC8ke0tFUk5FTF9JTUFHRURFU1R9LyouZHRibyIKK0ZJTEVTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UtemltYWdlLWJ1bmRsZSA9ICIvJHtLRVJORUxfSU1BR0VERVNUfS96SW1hZ2UtKi5kdGIuYmluIgogCiAjIEdlbmVyYXRlIGtlcm5lbCtkZXZpY2V0cmVlIGJ1bmRsZQogS0VSTkVMX0RFVklDRVRSRUVfQlVORExFID89ICIwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKaW5kZXggOWJhZjM5OS4uNTBhOTFlMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCkBAIC0xNCw2ICsxNCw4IEBACiAgICAgICAgICAgICByZXBsYWNlbWVudHR5cGUgPSAidm1saW51ei5iaW4iCiAgICAgICAgIGVsaWYgdWFyY2ggPT0gIng4NiI6CiAgICAgICAgICAgICByZXBsYWNlbWVudHR5cGUgPSAiYnpJbWFnZSIKKyAgICAgICAgZWxpZiB1YXJjaCA9PSAibWljcm9ibGF6ZSI6CisgICAgICAgICAgICByZXBsYWNlbWVudHR5cGUgPSAibGludXguYmluIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVwbGFjZW1lbnR0eXBlID0gInpJbWFnZSIKIApAQCAtMTAwLDcgKzEwMiw3IEBACiAKIAlrZXJuZWxfY3N1bT0ic2hhMSIKIAotCUVOVFJZUE9JTlQ9JHtVQk9PVF9FTlRSWVBPSU5UfQorCUVOVFJZUE9JTlQ9IiR7VUJPT1RfRU5UUllQT0lOVH0iCiAJaWYgWyAtbiAiJHtVQk9PVF9FTlRSWVNZTUJPTH0iIF07IHRoZW4KIAkJRU5UUllQT0lOVD1gJHtIT1NUX1BSRUZJWH1ubSB2bWxpbnV4IHwgXAogCQkJYXdrICckMz09IiR7VUJPT1RfRU5UUllTWU1CT0x9IiB7cHJpbnQgIjB4IiQxO2V4aXR9J2AKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLW1vZHVsZS1zcGxpdC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtbW9kdWxlLXNwbGl0LmJiY2xhc3MKaW5kZXggMTAzNTUyNS4uNjdhYjQxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtbW9kdWxlLXNwbGl0LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtbW9kdWxlLXNwbGl0LmJiY2xhc3MKQEAgLTMwLDcgKzMwLDcgQEAKIAogUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzcGxpdF9rZXJuZWxfbW9kdWxlX3BhY2thZ2VzICIKIAotS0VSTkVMX01PRFVMRVNfTUVUQV9QQUNLQUdFID89ICJrZXJuZWwtbW9kdWxlcyIKK0tFUk5FTF9NT0RVTEVTX01FVEFfUEFDS0FHRSA/PSAiJHtAIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgb3IgImtlcm5lbCIgfS1tb2R1bGVzIgogCiBLRVJORUxfTU9EVUxFX1BBQ0tBR0VfUFJFRklYID89ICIiCiBLRVJORUxfTU9EVUxFX1BBQ0tBR0VfU1VGRklYID89ICItJHtLRVJORUxfVkVSU0lPTn0iCkBAIC0xMjksMTYgKzEyOSwxOSBAQAogICAgICAgICAgICBwb3N0Zml4ID0gZm9ybWF0LnNwbGl0KCclcycpWzFdCiAgICAgICAgICAgIGQuc2V0VmFyKCdSUFJPVklERVNfJyArIHBrZywgcGtnLnJlcGxhY2UocG9zdGZpeCwgJycpKQogCisgICAga2VybmVsX3BhY2thZ2VfbmFtZSA9IGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgb3IgImtlcm5lbCIKKyAgICBrZXJuZWxfdmVyc2lvbiA9IGQuZ2V0VmFyKCJLRVJORUxfVkVSU0lPTiIpCisKICAgICBtb2R1bGVfcmVnZXggPSAnXiguKilcLms/byQnCiAKICAgICBtb2R1bGVfcGF0dGVybl9wcmVmaXggPSBkLmdldFZhcignS0VSTkVMX01PRFVMRV9QQUNLQUdFX1BSRUZJWCcpCiAgICAgbW9kdWxlX3BhdHRlcm5fc3VmZml4ID0gZC5nZXRWYXIoJ0tFUk5FTF9NT0RVTEVfUEFDS0FHRV9TVUZGSVgnKQotICAgIG1vZHVsZV9wYXR0ZXJuID0gbW9kdWxlX3BhdHRlcm5fcHJlZml4ICsgJ2tlcm5lbC1tb2R1bGUtJXMnICsgbW9kdWxlX3BhdHRlcm5fc3VmZml4CisgICAgbW9kdWxlX3BhdHRlcm4gPSBtb2R1bGVfcGF0dGVybl9wcmVmaXggKyBrZXJuZWxfcGFja2FnZV9uYW1lICsgJy1tb2R1bGUtJXMnICsgbW9kdWxlX3BhdHRlcm5fc3VmZml4CiAKICAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwa2dfcG9zdGluc3RfbW9kdWxlcycpCiAgICAgcG9zdHJtID0gZC5nZXRWYXIoJ3BrZ19wb3N0cm1fbW9kdWxlcycpCiAKLSAgICBtb2R1bGVzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgcm9vdD0nJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzJywgZmlsZV9yZWdleD1tb2R1bGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuPW1vZHVsZV9wYXR0ZXJuLCBkZXNjcmlwdGlvbj0nJXMga2VybmVsIG1vZHVsZScsIHBvc3RpbnN0PXBvc3RpbnN0LCBwb3N0cm09cG9zdHJtLCByZWN1cnNpdmU9VHJ1ZSwgaG9vaz1mcm9iX21ldGFkYXRhLCBleHRyYV9kZXBlbmRzPSdrZXJuZWwtJXMnICUgKGQuZ2V0VmFyKCJLRVJORUxfVkVSU0lPTiIpKSkKKyAgICBtb2R1bGVzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgcm9vdD0nJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzJywgZmlsZV9yZWdleD1tb2R1bGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuPW1vZHVsZV9wYXR0ZXJuLCBkZXNjcmlwdGlvbj0nJXMga2VybmVsIG1vZHVsZScsIHBvc3RpbnN0PXBvc3RpbnN0LCBwb3N0cm09cG9zdHJtLCByZWN1cnNpdmU9VHJ1ZSwgaG9vaz1mcm9iX21ldGFkYXRhLCBleHRyYV9kZXBlbmRzPSclcy0lcycgJSAoa2VybmVsX3BhY2thZ2VfbmFtZSwga2VybmVsX3ZlcnNpb24pKQogICAgIGlmIG1vZHVsZXM6CiAgICAgICAgIG1ldGFwa2cgPSBkLmdldFZhcignS0VSTkVMX01PRFVMRVNfTUVUQV9QQUNLQUdFJykKICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcrJyAnLmpvaW4obW9kdWxlcykpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcwppbmRleCA2NjNjNjU1Li40YWMzYTM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKQEAgLTI0Nyw2ICsyNDcsNyBAQAogCQlmaQogCQlybSAtZiAuZ2l0aWdub3JlCiAJCWdpdCBpbml0CisJCWNoZWNrX2dpdF9jb25maWcKIAkJZ2l0IGFkZCAuCiAJCWdpdCBjb21taXQgLXEgLW0gImJhc2VsaW5lIGNvbW1pdDogY3JlYXRpbmcgcmVwbyBmb3IgJHtQTn0tJHtQVn0iCiAJCWdpdCBjbGVhbiAtZCAtZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKaW5kZXggMTRmNDFlOS4uNzhkNmMzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCkBAIC0xLDcgKzEsMTAgQEAKIGluaGVyaXQgbGludXgta2VybmVsLWJhc2Uga2VybmVsLW1vZHVsZS1zcGxpdAogCi1QUk9WSURFUyArPSAidmlydHVhbC9rZXJuZWwiCi1ERVBFTkRTICs9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2Mga21vZC1uYXRpdmUgYmMtbmF0aXZlIGx6b3AtbmF0aXZlIgorS0VSTkVMX1BBQ0tBR0VfTkFNRSA/Pz0gImtlcm5lbCIKK0tFUk5FTF9ERVBMT1lTVUJESVIgPz89ICIke0AgIiIgaWYgKGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIpIGVsc2UgZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSB9IgorCitQUk9WSURFUyArPSAiJHtAICJ2aXJ0dWFsL2tlcm5lbCIgaWYgKGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIpIGVsc2UgIiIgfSIKK0RFUEVORFMgKz0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWJpbnV0aWxzIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyBrbW9kLW5hdGl2ZSBiYy1uYXRpdmUgbHpvcC1uYXRpdmUgYmlzb24tbmF0aXZlIgogUEFDS0FHRV9XUklURV9ERVBTICs9ICJkZXBtb2R3cmFwcGVyLWNyb3NzIgogCiBkb19kZXBsb3lbZGVwZW5kc10gKz0gImRlcG1vZHdyYXBwZXItY3Jvc3M6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKQEAgLTM0LDExICszNywzMiBAQAogS0VSTkVMX1ZFUlNJT05fUEtHX05BTUVbdmFyZGVwdmFsdWVdID0gIiR7TElOVVhfVkVSU0lPTn0iCiAKIHB5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgcG4gPSBkLmdldFZhcigiUE4iKQorICAgIGtwbiA9IGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikKKworICAgICMgWFhYIFJlbW92ZSB0aGlzIGFmdGVyIGJ1ZyAxMTkwNSBpcyByZXNvbHZlZAorICAgICMgIEZJTEVTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tZGV2IGRvZXNuJ3QgZXhwYW5kIGNvcnJlY3RseQorICAgIGlmIGtwbiA9PSBwbjoKKyAgICAgICAgYmIud2FybigiU29tZSBwYWNrYWdlcyAoRS5nLiAqLWRldikgbWlnaHQgYmUgbWlzc2luZyBkdWUgdG8gIgorICAgICAgICAgICAgICAgICJidWcgMTE5MDUgKHZhcmlhYmxlIEtFUk5FTF9QQUNLQUdFX05BTUUgPT0gUE4pIikKKworICAgICMgVGhlIGRlZmF1bHQga2VybmVsIHJlY2lwZSBidWlsZHMgaW4gYSBzaGFyZWQgbG9jYXRpb24gZGVmaW5lZCBieQorICAgICMgYml0YmFrZS9kaXN0cm8gY29uZnM6IFNUQUdJTkdfS0VSTkVMX0RJUiBhbmQgU1RBR0lOR19LRVJORUxfQlVJTERESVIuCisgICAgIyBTZXQgdGhlc2UgdmFyaWFibGVzIHRvIGRpcmVjdG9yaWVzIHVuZGVyICR7V09SS0RJUn0gaW4gYWx0ZXJuYXRlCisgICAgIyBrZXJuZWwgcmVjaXBlcyAoSS5lLiB3aGVyZSBLRVJORUxfUEFDS0FHRV9OQU1FICE9IGtlcm5lbCkgc28gdGhhdCB0aGV5CisgICAgIyBtYXkgYnVpbGQgaW4gcGFyYWxsZWwgd2l0aCB0aGUgZGVmYXVsdCBrZXJuZWwgd2l0aG91dCBjbG9iYmVyaW5nLgorICAgIGlmIGtwbiAhPSAia2VybmVsIjoKKyAgICAgICAgd29ya2RpciA9IGQuZ2V0VmFyKCJXT1JLRElSIikKKyAgICAgICAgc291cmNlRGlyID0gb3MucGF0aC5qb2luKHdvcmtkaXIsICdrZXJuZWwtc291cmNlJykKKyAgICAgICAgYXJ0aWZhY3RzRGlyID0gb3MucGF0aC5qb2luKHdvcmtkaXIsICdrZXJuZWwtYnVpbGQtYXJ0aWZhY3RzJykKKyAgICAgICAgZC5zZXRWYXIoIlNUQUdJTkdfS0VSTkVMX0RJUiIsIHNvdXJjZURpcikKKyAgICAgICAgZC5zZXRWYXIoIlNUQUdJTkdfS0VSTkVMX0JVSUxERElSIiwgYXJ0aWZhY3RzRGlyKQogCiAgICAgIyBNZXJnZSBLRVJORUxfSU1BR0VUWVBFIGFuZCBLRVJORUxfQUxUX0lNQUdFVFlQRSBpbnRvIEtFUk5FTF9JTUFHRVRZUEVTCiAgICAgdHlwZSA9IGQuZ2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFJykgb3IgIiIKICAgICBhbHR0eXBlID0gZC5nZXRWYXIoJ0tFUk5FTF9BTFRfSU1BR0VUWVBFJykgb3IgIiIKICAgICB0eXBlcyA9IGQuZ2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFUycpIG9yICIiCisgICAga25hbWUgPSBkLmdldFZhcignS0VSTkVMX1BBQ0tBR0VfTkFNRScpIG9yICJrZXJuZWwiCiAgICAgaWYgdHlwZSBub3QgaW4gdHlwZXMuc3BsaXQoKToKICAgICAgICAgdHlwZXMgPSAodHlwZSArICcgJyArIHR5cGVzKS5zdHJpcCgpCiAgICAgaWYgYWx0dHlwZSBub3QgaW4gdHlwZXMuc3BsaXQoKToKQEAgLTU1LDE1ICs3OSwxNSBAQAogICAgICAgICB0eXBlbG93ZXIgPSB0eXBlLmxvd2VyKCkKICAgICAgICAgaW1hZ2VkZXN0ID0gZC5nZXRWYXIoJ0tFUk5FTF9JTUFHRURFU1QnKQogCi0gICAgICAgIGQuYXBwZW5kVmFyKCdQQUNLQUdFUycsICcgJyArICdrZXJuZWwtaW1hZ2UtJyArIHR5cGVsb3dlcikKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1BBQ0tBR0VTJywgJyAlcy1pbWFnZS0lcycgJSAoa25hbWUsIHR5cGVsb3dlcikpCiAKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTX2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyLCAnLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlICsgJy0ke0tFUk5FTF9WRVJTSU9OX05BTUV9JyArICcgLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlKQorICAgICAgICBkLnNldFZhcignRklMRVNfJyArIGtuYW1lICsgJy1pbWFnZS0nICsgdHlwZWxvd2VyLCAnLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlICsgJy0ke0tFUk5FTF9WRVJTSU9OX05BTUV9JyArICcgLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlKQogCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU19rZXJuZWwtaW1hZ2UnLCAnICcgKyAna2VybmVsLWltYWdlLScgKyB0eXBlbG93ZXIpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18lcy1pbWFnZScgJSBrbmFtZSwgJyAlcy1pbWFnZS0lcycgJSAoa25hbWUsIHR5cGVsb3dlcikpCiAKLSAgICAgICAgZC5zZXRWYXIoJ1BLR19rZXJuZWwtaW1hZ2UtJyArIHR5cGVsb3dlciwgJ2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyICsgJy0ke0tFUk5FTF9WRVJTSU9OX1BLR19OQU1FfScpCisgICAgICAgIGQuc2V0VmFyKCdQS0dfJXMtaW1hZ2UtJXMnICUgKGtuYW1lLHR5cGVsb3dlciksICclcy1pbWFnZS0lcy0ke0tFUk5FTF9WRVJTSU9OX1BLR19OQU1FfScgJSAoa25hbWUsIHR5cGVsb3dlcikpCiAKLSAgICAgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZX2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyLCAnMScpCisgICAgICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8lcy1pbWFnZS0lcycgJSAoa25hbWUsIHR5cGVsb3dlciksICcxJykKIAogICAgIGltYWdlID0gZC5nZXRWYXIoJ0lOSVRSQU1GU19JTUFHRScpCiAgICAgaWYgaW1hZ2U6CkBAIC0xMjEsMTIgKzE0NSwxMyBAQAogCiBpbmhlcml0IGtlcm5lbC1hcmNoIGRlcGxveQogCi1QQUNLQUdFU19EWU5BTUlDICs9ICJea2VybmVsLW1vZHVsZS0uKiIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5rZXJuZWwtaW1hZ2UtLioiCi1QQUNLQUdFU19EWU5BTUlDICs9ICJea2VybmVsLWZpcm13YXJlLS4qIgorUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tbW9kdWxlLS4qIgorUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UtLioiCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1maXJtd2FyZS0uKiIKIAogZXhwb3J0IE9TID0gIiR7VEFSR0VUX09TfSIKIGV4cG9ydCBDUk9TU19DT01QSUxFID0gIiR7VEFSR0VUX1BSRUZJWH0iCitleHBvcnQgS0JVSUxEX0JVSUxEX1ZFUlNJT04gPSAiMSIKIGV4cG9ydCBLQlVJTERfQlVJTERfVVNFUiA9ICJvZS11c2VyIgogZXhwb3J0IEtCVUlMRF9CVUlMRF9IT1NUID0gIm9lLWhvc3QiCiAKQEAgLTIwNyw3ICsyMzIsNyBAQAogCQljb3B5X2luaXRyYW1mcwogCQkjIEJhY2tpbmcgdXAga2VybmVsIGltYWdlIHJlbGllcyBvbiBpdHMgdHlwZShyZWd1bGFyIGZpbGUgb3Igc3ltYm9saWMgbGluaykKIAkJdG1wX3BhdGg9IiIKLQkJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbworCQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0V9IDsgZG8KIAkJCWlmIFsgLWggJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUgXSA7IHRoZW4KIAkJCQlsaW5rcGF0aD1gcmVhZGxpbmsgLW4gJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGVgCiAJCQkJcmVhbHBhdGg9YHJlYWRsaW5rIC1mbiAke0tFUk5FTF9PVVRQVVRfRElSfS8kdHlwZWAKQEAgLTI1NSw3ICsyODAsNyBAQAogCiBrZXJuZWxfZG9fY29tcGlsZSgpIHsKIAl1bnNldCBDRkxBR1MgQ1BQRkxBR1MgQ1hYRkxBR1MgTERGTEFHUyBNQUNISU5FCi0JaWYgWyAiJEJVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyIgPSAiMSIgXTsgdGhlbgorCWlmIFsgIiR7QlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTfSIgPSAiMSIgXTsgdGhlbgogCQkjIGtlcm5lbCBzb3VyY2VzIGRvIG5vdCB1c2UgZG9fdW5wYWNrLCBzbyBTT1VSQ0VfREFURV9FUE9DSCBtYXkgbm90CiAJCSMgYmUgc2V0Li4uLgogCQlpZiBbICIkU09VUkNFX0RBVEVfRVBPQ0giID0gIjAiIF07IHRoZW4KQEAgLTMzOSw3ICszNjQsOSBAQAogCWluc3RhbGwgLWQgJHtEfS9ib290CiAJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbwogCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHt0eXBlfS0ke0tFUk5FTF9WRVJTSU9OfQotCQlsbiAtc2YgJHt0eXBlfS0ke0tFUk5FTF9WRVJTSU9OfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHt0eXBlfQorCQlpZiBbICIke0tFUk5FTF9QQUNLQUdFX05BTUV9IiA9ICJrZXJuZWwiIF07IHRoZW4KKwkJCWxuIC1zZiAke3R5cGV9LSR7S0VSTkVMX1ZFUlNJT059ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke3R5cGV9CisJCWZpCiAJZG9uZQogCWluc3RhbGwgLW0gMDY0NCBTeXN0ZW0ubWFwICR7RH0vYm9vdC9TeXN0ZW0ubWFwLSR7S0VSTkVMX1ZFUlNJT059CiAJaW5zdGFsbCAtbSAwNjQ0IC5jb25maWcgJHtEfS9ib290L2NvbmZpZy0ke0tFUk5FTF9WRVJTSU9OfQpAQCAtMzkzLDEzICs0MjAsMTQgQEAKIAogZW1pdF9kZXBtb2RfcGtnZGF0YSgpIHsKIAkjIFN0YXNoIGRhdGEgZm9yIGRlcG1vZAotCWluc3RhbGwgLWQgJHtQS0dERVNUV09SS30va2VybmVsLWRlcG1vZC8KLQllY2hvICIke0tFUk5FTF9WRVJTSU9OfSIgPiAke1BLR0RFU1RXT1JLfS9rZXJuZWwtZGVwbW9kL2tlcm5lbC1hYml2ZXJzaW9uCi0JY3AgJHtCfS9TeXN0ZW0ubWFwICR7UEtHREVTVFdPUkt9L2tlcm5lbC1kZXBtb2QvU3lzdGVtLm1hcC0ke0tFUk5FTF9WRVJTSU9OfQorCWluc3RhbGwgLWQgJHtQS0dERVNUV09SS30vJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1kZXBtb2QvCisJZWNobyAiJHtLRVJORUxfVkVSU0lPTn0iID4gJHtQS0dERVNUV09SS30vJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1kZXBtb2QvJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1hYml2ZXJzaW9uCisJY3AgJHtCfS9TeXN0ZW0ubWFwICR7UEtHREVTVFdPUkt9LyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tZGVwbW9kL1N5c3RlbS5tYXAtJHtLRVJORUxfVkVSU0lPTn0KIH0KIAogUEFDS0FHRUZVTkNTICs9ICJlbWl0X2RlcG1vZF9wa2dkYXRhIgogCitkb19zaGFyZWRfd29ya2RpcltjbGVhbmRpcnNdICs9ICIgJHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0iCiBkb19zaGFyZWRfd29ya2RpciAoKSB7CiAJY2QgJHtCfQogCkBAIC00MTAsNyArNDM4LDcgQEAKIAkjIFN0b3JlIHRoZSBrZXJuZWwgdmVyc2lvbiBpbiBzeXNyb290cyBmb3IgbW9kdWxlLWJhc2UuYmJjbGFzcwogCSMKIAotCWVjaG8gIiR7S0VSTkVMX1ZFUlNJT059IiA+ICRrZXJuZWxkaXIva2VybmVsLWFiaXZlcnNpb24KKwllY2hvICIke0tFUk5FTF9WRVJTSU9OfSIgPiAka2VybmVsZGlyLyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tYWJpdmVyc2lvbgogCiAJIyBDb3B5IGZpbGVzIHJlcXVpcmVkIGZvciBtb2R1bGUgYnVpbGRzCiAJY3AgU3lzdGVtLm1hcCAka2VybmVsZGlyL1N5c3RlbS5tYXAtJHtLRVJORUxfVkVSU0lPTn0KQEAgLTQzOSw4ICs0NjcsMTAgQEAKIAkjIGFyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8gd2hpY2ggaXMgcHJlc2VudCBpbgogCSMgS0JVSUxEX0xERkxBR1NfTU9EVUxFLCBtYWtpbmcgaXQgcmVxdWlyZWQgdG8gYnVpbGQgZXh0ZXJuYWwgbW9kdWxlcy4KIAlpZiBbICR7QVJDSH0gPSAicG93ZXJwYyIgXTsgdGhlbgotCQlta2RpciAtcCAka2VybmVsZGlyL2FyY2gvcG93ZXJwYy9saWIvCi0JCWNwIGFyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8gJGtlcm5lbGRpci9hcmNoL3Bvd2VycGMvbGliL2NydHNhdnJlcy5vCisJCWlmIFsgLWUgYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMubyBdOyB0aGVuCisJCQlta2RpciAtcCAka2VybmVsZGlyL2FyY2gvcG93ZXJwYy9saWIvCisJCQljcCBhcmNoL3Bvd2VycGMvbGliL2NydHNhdnJlcy5vICRrZXJuZWxkaXIvYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMubworCQlmaQogCWZpCiAKIAlpZiBbIC1kIGluY2x1ZGUvZ2VuZXJhdGVkIF07IHRoZW4KQEAgLTQ1OSw3ICs0ODksNyBAQAogCToKIH0KIAotS0VSTkVMX0NPTkZJR19DT01NQU5EID89ICJvZV9ydW5tYWtlX2NhbGwgLUMgJHtTfSBPPSR7Qn0gb2xkbm9jb25maWcgfHwgeWVzICcnIHwgb2VfcnVubWFrZSAtQyAke1N9IE89JHtCfSBvbGRjb25maWciCitLRVJORUxfQ09ORklHX0NPTU1BTkQgPz0gIm9lX3J1bm1ha2VfY2FsbCAtQyAke1N9IE89JHtCfSBvbGRub2NvbmZpZyIKIAogcHl0aG9uIGNoZWNrX29sZGVzdF9rZXJuZWwoKSB7CiAgICAgb2xkZXN0X2tlcm5lbCA9IGQuZ2V0VmFyKCdPTERFU1RfS0VSTkVMJykKQEAgLTUwNCwzMiArNTM0LDM0IEBACiAKIGluaGVyaXQgY21sMQogCitLQ09ORklHX0NPTkZJR19DT01NQU5EX2FwcGVuZCA9ICIgSE9TVExERkxBR1M9JyR7QlVJTERfTERGTEFHU30nIgorCiBFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbXBpbGUgZG9faW5zdGFsbCBkb19jb25maWd1cmUKIAogIyBrZXJuZWwtYmFzZSBiZWNvbWVzIGtlcm5lbC0ke0tFUk5FTF9WRVJTSU9OfQogIyBrZXJuZWwtaW1hZ2UgYmVjb21lcyBrZXJuZWwtaW1hZ2UtJHtLRVJORUxfVkVSU0lPTn0KLVBBQ0tBR0VTID0gImtlcm5lbCBrZXJuZWwtYmFzZSBrZXJuZWwtdm1saW51eCBrZXJuZWwtaW1hZ2Uga2VybmVsLWRldiBrZXJuZWwtbW9kdWxlcyIKK1BBQ0tBR0VTID0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0gJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlICR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tdm1saW51eCAke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlICR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tZGV2ICR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tbW9kdWxlcyIKIEZJTEVTXyR7UE59ID0gIiIKLUZJTEVTX2tlcm5lbC1iYXNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9tb2R1bGVzLm9yZGVyICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9tb2R1bGVzLmJ1aWx0aW4iCi1GSUxFU19rZXJuZWwtaW1hZ2UgPSAiIgotRklMRVNfa2VybmVsLWRldiA9ICIvYm9vdC9TeXN0ZW0ubWFwKiAvYm9vdC9Nb2R1bGUuc3ltdmVycyogL2Jvb3QvY29uZmlnKiAke0tFUk5FTF9TUkNfUEFUSH0gJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2J1aWxkIgotRklMRVNfa2VybmVsLXZtbGludXggPSAiL2Jvb3Qvdm1saW51eC0ke0tFUk5FTF9WRVJTSU9OX05BTUV9IgotRklMRVNfa2VybmVsLW1vZHVsZXMgPSAiIgotUkRFUEVORFNfa2VybmVsID0gImtlcm5lbC1iYXNlIgorRklMRVNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9tb2R1bGVzLm9yZGVyICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9tb2R1bGVzLmJ1aWx0aW4iCitGSUxFU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlID0gIiIKK0ZJTEVTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tZGV2ID0gIi9ib290L1N5c3RlbS5tYXAqIC9ib290L01vZHVsZS5zeW12ZXJzKiAvYm9vdC9jb25maWcqICR7S0VSTkVMX1NSQ19QQVRIfSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0vYnVpbGQiCitGSUxFU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LXZtbGludXggPSAiL2Jvb3Qvdm1saW51eC0ke0tFUk5FTF9WRVJTSU9OX05BTUV9IgorRklMRVNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1tb2R1bGVzID0gIiIKK1JERVBFTkRTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0gPSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlIgogIyBBbGxvdyBtYWNoaW5lcyB0byBvdmVycmlkZSB0aGlzIGRlcGVuZGVuY3kgaWYga2VybmVsIGltYWdlIGZpbGVzIGFyZQogIyBub3Qgd2FudGVkIGluIGltYWdlcyBhcyBzdGFuZGFyZAotUkRFUEVORFNfa2VybmVsLWJhc2UgPz0gImtlcm5lbC1pbWFnZSIKLVBLR19rZXJuZWwtaW1hZ2UgPSAia2VybmVsLWltYWdlLSR7QGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKCcke0tFUk5FTF9WRVJTSU9OfScpfSIKLVJERVBFTkRTX2tlcm5lbC1pbWFnZSArPSAiJHtAYmFzZV9jb25kaXRpb25hbCgnS0VSTkVMX0lNQUdFVFlQRScsICd2bWxpbnV4JywgJ2tlcm5lbC12bWxpbnV4JywgJycsIGQpfSIKLVBLR19rZXJuZWwtYmFzZSA9ICJrZXJuZWwtJHtAbGVnaXRpbWl6ZV9wYWNrYWdlX25hbWUoJyR7S0VSTkVMX1ZFUlNJT059Jyl9IgotUlBST1ZJREVTX2tlcm5lbC1iYXNlICs9ICJrZXJuZWwtJHtLRVJORUxfVkVSU0lPTn0iCi1BTExPV19FTVBUWV9rZXJuZWwgPSAiMSIKLUFMTE9XX0VNUFRZX2tlcm5lbC1iYXNlID0gIjEiCi1BTExPV19FTVBUWV9rZXJuZWwtaW1hZ2UgPSAiMSIKLUFMTE9XX0VNUFRZX2tlcm5lbC1tb2R1bGVzID0gIjEiCi1ERVNDUklQVElPTl9rZXJuZWwtbW9kdWxlcyA9ICJLZXJuZWwgbW9kdWxlcyBtZXRhIHBhY2thZ2UiCitSREVQRU5EU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPz0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UiCitQS0dfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZSA9ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlLSR7QGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKCcke0tFUk5FTF9WRVJTSU9OfScpfSIKK1JERVBFTkRTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UgKz0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdLRVJORUxfSU1BR0VUWVBFJywgJ3ZtbGludXgnLCAnJHtLRVJORUxfUEFDS0FHRV9OQU1FfS12bWxpbnV4JywgJycsIGQpfSIKK1BLR18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfS0ke0BsZWdpdGltaXplX3BhY2thZ2VfbmFtZSgnJHtLRVJORUxfVkVSU0lPTn0nKX0iCitSUFJPVklERVNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlICs9ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LSR7S0VSTkVMX1ZFUlNJT059IgorQUxMT1dfRU1QVFlfJHtLRVJORUxfUEFDS0FHRV9OQU1FfSA9ICIxIgorQUxMT1dfRU1QVFlfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlID0gIjEiCitBTExPV19FTVBUWV8ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlID0gIjEiCitBTExPV19FTVBUWV8ke0tFUk5FTF9QQUNLQUdFX05BTUV9LW1vZHVsZXMgPSAiMSIKK0RFU0NSSVBUSU9OXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tbW9kdWxlcyA9ICJLZXJuZWwgbW9kdWxlcyBtZXRhIHBhY2thZ2UiCiAKLXBrZ19wb3N0aW5zdF9rZXJuZWwtYmFzZSAoKSB7Citwa2dfcG9zdGluc3RfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlICgpIHsKIAlpZiBbICEgLWUgIiREL2xpYi9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059IiBdOyB0aGVuCiAJCW1rZGlyIC1wICREL2xpYi9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059CiAJZmkKQEAgLTU0Myw3ICs1NzUsNyBAQAogUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzcGxpdF9rZXJuZWxfcGFja2FnZXMgIgogCiBweXRob24gc3BsaXRfa2VybmVsX3BhY2thZ2VzICgpIHsKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCByb290PScke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlJywgZmlsZV9yZWdleD0nXiguKilcLihiaW58Znd8Y2lzfGNzcHxkc3ApJCcsIG91dHB1dF9wYXR0ZXJuPSdrZXJuZWwtZmlybXdhcmUtJXMnLCBkZXNjcmlwdGlvbj0nRmlybXdhcmUgZm9yICVzJywgcmVjdXJzaXZlPVRydWUsIGV4dHJhX2RlcGVuZHM9JycpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcm9vdD0nJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZScsIGZpbGVfcmVnZXg9J14oLiopXC4oYmlufGZ3fGNpc3xjc3B8ZHNwKSQnLCBvdXRwdXRfcGF0dGVybj0nJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1maXJtd2FyZS0lcycsIGRlc2NyaXB0aW9uPSdGaXJtd2FyZSBmb3IgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJykKIH0KIAogIyBNYW55IHNjcmlwdHMgd2FudCB0byBsb29rIGluIGFyY2gvJGFyY2gvYm9vdCBmb3IgdGhlIGJvb3RhYmxlCkBAIC02MzQsMjEgKzY2NiwyNyBAQAogTU9EVUxFX1RBUkJBTExfREVQTE9ZID89ICIxIgogCiBrZXJuZWxfZG9fZGVwbG95KCkgeworCWRlcGxveURpcj0iJHtERVBMT1lESVJ9IgorCWlmIFsgLW4gIiR7S0VSTkVMX0RFUExPWVNVQkRJUn0iIF07IHRoZW4KKwkJZGVwbG95RGlyPSIke0RFUExPWURJUn0vJHtLRVJORUxfREVQTE9ZU1VCRElSfSIKKwkJbWtkaXIgIiRkZXBsb3lEaXIiCisJZmkKKwogCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRVN9IDsgZG8KIAkJYmFzZV9uYW1lPSR7dHlwZX0tJHtLRVJORUxfSU1BR0VfQkFTRV9OQU1FfQotCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfSAke0RFUExPWURJUn0vJHtiYXNlX25hbWV9LmJpbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfSAkZGVwbG95RGlyLyR7YmFzZV9uYW1lfS5iaW4KIAlkb25lCiAJaWYgWyAke01PRFVMRV9UQVJCQUxMX0RFUExPWX0gPSAiMSIgXSAmJiAoZ3JlcCAtcSAtaSAtZSAnXkNPTkZJR19NT0RVTEVTPXkkJyAuY29uZmlnKTsgdGhlbgogCQlta2RpciAtcCAke0R9L2xpYgotCQl0YXIgLWN2emYgJHtERVBMT1lESVJ9LyR7TU9EVUxFX1RBUkJBTExfQkFTRV9OQU1FfSAtQyAke0R9IGxpYgotCQlsbiAtc2YgJHtNT0RVTEVfVEFSQkFMTF9CQVNFX05BTUV9ICR7REVQTE9ZRElSfS8ke01PRFVMRV9UQVJCQUxMX1NZTUxJTktfTkFNRX0KKwkJdGFyIC1jdnpmICRkZXBsb3lEaXIvJHtNT0RVTEVfVEFSQkFMTF9CQVNFX05BTUV9IC1DICR7RH0gbGliCisJCWxuIC1zZiAke01PRFVMRV9UQVJCQUxMX0JBU0VfTkFNRX0gJGRlcGxveURpci8ke01PRFVMRV9UQVJCQUxMX1NZTUxJTktfTkFNRX0KIAlmaQogCiAJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbwogCQliYXNlX25hbWU9JHt0eXBlfS0ke0tFUk5FTF9JTUFHRV9CQVNFX05BTUV9CiAJCXN5bWxpbmtfbmFtZT0ke3R5cGV9LSR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KLQkJbG4gLXNmICR7YmFzZV9uYW1lfS5iaW4gJHtERVBMT1lESVJ9LyR7c3ltbGlua19uYW1lfS5iaW4KLQkJbG4gLXNmICR7YmFzZV9uYW1lfS5iaW4gJHtERVBMT1lESVJ9LyR7dHlwZX0KKwkJbG4gLXNmICR7YmFzZV9uYW1lfS5iaW4gJGRlcGxveURpci8ke3N5bWxpbmtfbmFtZX0uYmluCisJCWxuIC1zZiAke2Jhc2VfbmFtZX0uYmluICRkZXBsb3lEaXIvJHt0eXBlfQogCWRvbmUKIAogCWNkICR7Qn0KQEAgLTY1OCw4ICs2OTYsOCBAQAogCQkJZWNobyAiQ29weWluZyBkZXBsb3kgJHt0eXBlfSBrZXJuZWwtaW5pdHJhbWZzIGltYWdlIGFuZCBzZXR0aW5nIHVwIGxpbmtzLi4uIgogCQkJaW5pdHJhbWZzX2Jhc2VfbmFtZT0ke3R5cGV9LSR7SU5JVFJBTUZTX0JBU0VfTkFNRX0KIAkJCWluaXRyYW1mc19zeW1saW5rX25hbWU9JHt0eXBlfS1pbml0cmFtZnMtJHtNQUNISU5FfQotCQkJaW5zdGFsbCAtbSAwNjQ0ICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7dHlwZX0uaW5pdHJhbWZzICR7REVQTE9ZRElSfS8ke2luaXRyYW1mc19iYXNlX25hbWV9LmJpbgotCQkJbG4gLXNmICR7aW5pdHJhbWZzX2Jhc2VfbmFtZX0uYmluICR7REVQTE9ZRElSfS8ke2luaXRyYW1mc19zeW1saW5rX25hbWV9LmJpbgorCQkJaW5zdGFsbCAtbSAwNjQ0ICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7dHlwZX0uaW5pdHJhbWZzICRkZXBsb3lEaXIvJHtpbml0cmFtZnNfYmFzZV9uYW1lfS5iaW4KKwkJCWxuIC1zZiAke2luaXRyYW1mc19iYXNlX25hbWV9LmJpbiAkZGVwbG95RGlyLyR7aW5pdHJhbWZzX3N5bWxpbmtfbmFtZX0uYmluCiAJCWZpCiAJZG9uZQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGliYy1wYWNrYWdlLmJiY2xhc3MKaW5kZXggNzM5YWRjZS4uMmU3Y2QyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzCkBAIC0xMTMsOSArMTEzLDkgQEAKICAgICAgICAgYmIuZXJyb3IoImRhdGFkaXIgbm90IGRlZmluZWQiKQogICAgICAgICByZXR1cm4KIAotICAgIGdjb252X2xpYmRpciA9IGJhc2VfcGF0aF9qb2luKGxpYmRpciwgImdjb252IikKLSAgICBjaGFybWFwX2RpciA9IGJhc2VfcGF0aF9qb2luKGRhdGFkaXIsICJpMThuIiwgImNoYXJtYXBzIikKLSAgICBsb2NhbGVzX2RpciA9IGJhc2VfcGF0aF9qb2luKGRhdGFkaXIsICJpMThuIiwgImxvY2FsZXMiKQorICAgIGdjb252X2xpYmRpciA9IG9lLnBhdGguam9pbihsaWJkaXIsICJnY29udiIpCisgICAgY2hhcm1hcF9kaXIgPSBvZS5wYXRoLmpvaW4oZGF0YWRpciwgImkxOG4iLCAiY2hhcm1hcHMiKQorICAgIGxvY2FsZXNfZGlyID0gb2UucGF0aC5qb2luKGRhdGFkaXIsICJpMThuIiwgImxvY2FsZXMiKQogICAgIGJpbmFyeV9sb2NhbGVzX2RpciA9IGQuZ2V0VmFyKCdsb2NhbGVkaXInKQogCiAgICAgZGVmIGNhbGNfZ2NvbnZfZGVwcyhmbiwgcGtnLCBmaWxlX3JlZ2V4LCBvdXRwdXRfcGF0dGVybiwgZ3JvdXApOgpAQCAtMTg5LDcgKzE4OSw3IEBACiAKICAgICAjIFJlYWQgaW4gc3VwcG9ydGVkIGxvY2FsZXMgYW5kIGFzc29jaWF0ZWQgZW5jb2RpbmdzCiAgICAgc3VwcG9ydGVkID0ge30KLSAgICB3aXRoIG9wZW4oYmFzZV9wYXRoX2pvaW4oZC5nZXRWYXIoJ1dPUktESVInKSwgIlNVUFBPUlRFRCIpKSBhcyBmOgorICAgIHdpdGggb3BlbihvZS5wYXRoLmpvaW4oZC5nZXRWYXIoJ1dPUktESVInKSwgIlNVUFBPUlRFRCIpKSBhcyBmOgogICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGxvY2FsZSwgY2hhcnNldCA9IGxpbmUucnN0cmlwKCkuc3BsaXQoKQpAQCAtMjMxLDEyICsyMzEsMTIgQEAKICAgICBjb21tYW5kcyA9IHt9CiAKICAgICBkZWYgb3V0cHV0X2xvY2FsZV9iaW5hcnkobmFtZSwgcGtnbmFtZSwgbG9jYWxlLCBlbmNvZGluZyk6Ci0gICAgICAgIHRyZWVkaXIgPSBiYXNlX3BhdGhfam9pbihkLmdldFZhcigiV09SS0RJUiIpLCAibG9jYWxlLXRyZWUiKQotICAgICAgICBsZGxpYmRpciA9IGJhc2VfcGF0aF9qb2luKHRyZWVkaXIsIGQuZ2V0VmFyKCJiYXNlX2xpYmRpciIpKQorICAgICAgICB0cmVlZGlyID0gb2UucGF0aC5qb2luKGQuZ2V0VmFyKCJXT1JLRElSIiksICJsb2NhbGUtdHJlZSIpCisgICAgICAgIGxkbGliZGlyID0gb2UucGF0aC5qb2luKHRyZWVkaXIsIGQuZ2V0VmFyKCJiYXNlX2xpYmRpciIpKQogICAgICAgICBwYXRoID0gZC5nZXRWYXIoIlBBVEgiKQotICAgICAgICBpMThucGF0aCA9IGJhc2VfcGF0aF9qb2luKHRyZWVkaXIsIGRhdGFkaXIsICJpMThuIikKLSAgICAgICAgZ2NvbnZwYXRoID0gYmFzZV9wYXRoX2pvaW4odHJlZWRpciwgImljb252ZGF0YSIpCi0gICAgICAgIG91dHB1dHBhdGggPSBiYXNlX3BhdGhfam9pbih0cmVlZGlyLCBiaW5hcnlfbG9jYWxlc19kaXIpCisgICAgICAgIGkxOG5wYXRoID0gb2UucGF0aC5qb2luKHRyZWVkaXIsIGRhdGFkaXIsICJpMThuIikKKyAgICAgICAgZ2NvbnZwYXRoID0gb2UucGF0aC5qb2luKHRyZWVkaXIsICJpY29udmRhdGEiKQorICAgICAgICBvdXRwdXRwYXRoID0gb2UucGF0aC5qb2luKHRyZWVkaXIsIGJpbmFyeV9sb2NhbGVzX2RpcikKIAogICAgICAgICB1c2VfY3Jvc3NfbG9jYWxlZGVmID0gZC5nZXRWYXIoIkxPQ0FMRV9HRU5FUkFUSU9OX1dJVEhfQ1JPU1MtTE9DQUxFREVGIikgb3IgIjAiCiAgICAgICAgIGlmIHVzZV9jcm9zc19sb2NhbGVkZWYgPT0gIjEiOgpAQCAtMzQ0LDcgKzM0NCw3IEBACiAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18lcycgJSBtZXRhcGtnLCAnICcgKyBwa2cpCiAKICAgICBpZiB1c2VfYmluID09ICJjb21waWxlIjoKLSAgICAgICAgbWFrZWZpbGUgPSBiYXNlX3BhdGhfam9pbihkLmdldFZhcigiV09SS0RJUiIpLCAibG9jYWxlLXRyZWUiLCAiTWFrZWZpbGUiKQorICAgICAgICBtYWtlZmlsZSA9IG9lLnBhdGguam9pbihkLmdldFZhcigiV09SS0RJUiIpLCAibG9jYWxlLXRyZWUiLCAiTWFrZWZpbGUiKQogICAgICAgICBtID0gb3BlbihtYWtlZmlsZSwgInciKQogICAgICAgICBtLndyaXRlKCJhbGw6ICVzXG5cbiIgJSAiICIuam9pbihjb21tYW5kcy5rZXlzKCkpKQogICAgICAgICBmb3IgY21kIGluIGNvbW1hbmRzOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwppbmRleCBkMzUzMTEwLi4wNmRkNGE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwpAQCAtMjI2LDkgKzIyNiw3IEBACiAgICAgIyBUaGUgbWFuaWZlc3QgZmlsZSBuYW1lIGNvbnRhaW5zIHRoZSBhcmNoLiBCZWNhdXNlIHdlIGFyZSBub3QgcnVubmluZwogICAgICMgaW4gdGhlIHJlY2lwZSBjb250ZXh0IGl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBldmVyeSBhcmNoIHVzZWQuCiAgICAgc3N0YXRlX21hbmlmZXN0X2RpciA9IGQuZ2V0VmFyKCJTU1RBVEVfTUFOSUZFU1RTIikKLSAgICBzc3RhdGVfYXJjaHMgPSBkLmdldFZhcigiU1NUQVRFX0FSQ0hTIikKLSAgICBleHRyYV9hcmNocyA9IGQuZ2V0VmFyKCJQQUNLQUdFX0VYVFJBX0FSQ0hTIikKLSAgICBhcmNocyA9IGxpc3Qoc2V0KCgiJXMgJXMiICUgKHNzdGF0ZV9hcmNocywgZXh0cmFfYXJjaHMpKS5zcGxpdCgpKSkKKyAgICBhcmNocyA9IGxpc3Qoc2V0KGQuZ2V0VmFyKCJTU1RBVEVfQVJDSFMiKS5zcGxpdCgpKSkKICAgICBmb3IgZGVwIGluIGRlcGVuZHM6CiAgICAgICAgICMgU29tZSByZWNpcGVzIGhhdmUgYW4gYXJjaCBvbiB0aGVpciBvd24sIHNvIHdlIHRyeSB0aGF0IGZpcnN0LgogICAgICAgICBzcGVjaWFsX2FyY2ggPSBkLmdldFZhcigiUEFDS0FHRV9BUkNIX3BuLSVzIiAlIGRlcCkKQEAgLTMzNiw3ICszMzQsNyBAQAogICAgIGZpbGVzID0gZC5nZXRWYXIoJ0xJQ0VOU0VfRklMRVNfRElSRUNUT1JZJykKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCiAgICAgcG5fbGljID0gIiVzJXMiICUgKHBuLCBkLmdldFZhcignTElDRU5TRV9QQUNLQUdFX1NVRkZJWCcsIEZhbHNlKSkKLSAgICBpZiBwbl9saWMgaW4gcGFja2FnZXM6CisgICAgaWYgcG5fbGljIGluIHBhY2thZ2VzLnNwbGl0KCk6CiAgICAgICAgIGJiLndhcm4oIiVzIHBhY2thZ2UgYWxyZWFkeSBleGlzdGVkIGluICVzLiIgJSAocG5fbGljLCBwbikpCiAgICAgZWxzZToKICAgICAgICAgIyBmaXJzdCBpbiBQQUNLQUdFUyB0byBiZSBzdXJlIHRoYXQgbm90aGluZyBlbHNlIGdldHMgTElDRU5TRV9GSUxFU19ESVJFQ1RPUlkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGl2ZS12bS1jb21tb24uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGl2ZS12bS1jb21tb24uYmJjbGFzcwppbmRleCBlMWQ4YjE4Li42ODEwNWQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpdmUtdm0tY29tbW9uLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saXZlLXZtLWNvbW1vbi5iYmNsYXNzCkBAIC0zMiwxOSArMzIsMTYgQEAKIGluaGVyaXQgJHtFRklfQ0xBU1N9CiBpbmhlcml0ICR7UENCSU9TX0NMQVNTfQogCi1LRVJORUxfSU1BR0VUWVBFID8/PSAiYnpJbWFnZSIKLVZNX0RFRkFVTFRfS0VSTkVMID8/PSAiJHtLRVJORUxfSU1BR0VUWVBFfSIKLQogcG9wdWxhdGVfa2VybmVsKCkgewogCWRlc3Q9JDEKIAlpbnN0YWxsIC1kICRkZXN0CiAKIAkjIEluc3RhbGwgYnpJbWFnZSwgaW5pdHJkLCBhbmQgcm9vdGZzLmltZyBpbiBERVNUIGZvciBhbGwgbG9hZGVycyB0byB1c2UuCi0JYmJub3RlICJUcnlpbmcgdG8gaW5zdGFsbCAke0RFUExPWV9ESVJfSU1BR0V9LyR7Vk1fREVGQVVMVF9LRVJORUx9IGFzICRkZXN0L3ZtbGludXoiCi0JaWYgWyAtZSAke0RFUExPWV9ESVJfSU1BR0V9LyR7Vk1fREVGQVVMVF9LRVJORUx9IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtWTV9ERUZBVUxUX0tFUk5FTH0gJGRlc3Qvdm1saW51egorCWJibm90ZSAiVHJ5aW5nIHRvIGluc3RhbGwgJHtERVBMT1lfRElSX0lNQUdFfS8ke0tFUk5FTF9JTUFHRVRZUEV9IGFzICRkZXN0LyR7S0VSTkVMX0lNQUdFVFlQRX0iCisJaWYgWyAtZSAke0RFUExPWV9ESVJfSU1BR0V9LyR7S0VSTkVMX0lNQUdFVFlQRX0gXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtERVBMT1lfRElSX0lNQUdFfS8ke0tFUk5FTF9JTUFHRVRZUEV9ICRkZXN0LyR7S0VSTkVMX0lNQUdFVFlQRX0KIAllbHNlCi0JCWJid2FybiAiJHtERVBMT1lfRElSX0lNQUdFfS8ke1ZNX0RFRkFVTFRfS0VSTkVMfSBkb2Vzbid0IGV4aXN0IgorCQliYndhcm4gIiR7REVQTE9ZX0RJUl9JTUFHRX0vJHtLRVJORUxfSU1BR0VUWVBFfSBkb2Vzbid0IGV4aXN0IgogCWZpCiAKIAkjIGluaXRyZCBpcyBtYWRlIG9mIGNvbmNhdGVuYXRpb24gb2YgbXVsdGlwbGUgZmlsZXN5c3RlbSBpbWFnZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbG9nZ2luZy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9sb2dnaW5nLmJiY2xhc3MKaW5kZXggMDZjN2MzMS4uYTBjOTRlOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9sb2dnaW5nLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9sb2dnaW5nLmJiY2xhc3MKQEAgLTg2LDcgKzg2LDcgQEAKIAkKIAkjIFN0cmlwIG9mZiB0aGUgZGVidWcgbGV2ZWwgYW5kIGVuc3VyZSBpdCBpcyBhbiBpbnRlZ2VyCiAJREJHTFZMPSQxOyBzaGlmdAotCU5PTkRJR0lUUz0kKGVjaG8gIiREQkdMVkwiIHwgdHIgLWQgWzpkaWdpdDpdKQorCU5PTkRJR0lUUz0kKGVjaG8gIiREQkdMVkwiIHwgdHIgLWQgIls6ZGlnaXQ6XSIpCiAJaWYgWyAiJE5PTkRJR0lUUyIgXTsgdGhlbgogCQliYmZhdGFsICIkVVNBR0UiCiAJZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWVzb24uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWVzb24uYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDdlZTRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzCkBAIC0wLDAgKzEsMTMwIEBACitpbmhlcml0IHB5dGhvbjNuYXRpdmUKKworREVQRU5EU19hcHBlbmQgPSAiIG1lc29uLW5hdGl2ZSBuaW5qYS1uYXRpdmUiCisKKyMgQXMgTWVzb24gZW5mb3JjZXMgb3V0LW9mLXRyZWUgYnVpbGRzIHdlIGNhbiBqdXN0IHVzZSBjbGVhbmRpcnMKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKK2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCisKKyMgV2hlcmUgdGhlIG1lc29uLmJ1aWxkIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMKK01FU09OX1NPVVJDRVBBVEggPSAiJHtTfSIKKworZGVmIG5vcHJlZml4KHZhciwgZCk6CisgICAgcmV0dXJuIGQuZ2V0VmFyKHZhcikucmVwbGFjZShkLmdldFZhcigncHJlZml4JykgKyAnLycsICcnLCAxKQorCitNRVNPTk9QVFMgPSAiIC0tcHJlZml4ICR7cHJlZml4fSBcCisgICAgICAgICAgICAgIC0tYnVpbGR0eXBlIHBsYWluIFwKKyAgICAgICAgICAgICAgLS1iaW5kaXIgJHtAbm9wcmVmaXgoJ2JpbmRpcicsIGQpfSBcCisgICAgICAgICAgICAgIC0tc2JpbmRpciAke0Bub3ByZWZpeCgnc2JpbmRpcicsIGQpfSBcCisgICAgICAgICAgICAgIC0tZGF0YWRpciAke0Bub3ByZWZpeCgnZGF0YWRpcicsIGQpfSBcCisgICAgICAgICAgICAgIC0tbGliZGlyICR7QG5vcHJlZml4KCdsaWJkaXInLCBkKX0gXAorICAgICAgICAgICAgICAtLWxpYmV4ZWNkaXIgJHtAbm9wcmVmaXgoJ2xpYmV4ZWNkaXInLCBkKX0gXAorICAgICAgICAgICAgICAtLWluY2x1ZGVkaXIgJHtAbm9wcmVmaXgoJ2luY2x1ZGVkaXInLCBkKX0gXAorICAgICAgICAgICAgICAtLW1hbmRpciAke0Bub3ByZWZpeCgnbWFuZGlyJywgZCl9IFwKKyAgICAgICAgICAgICAgLS1pbmZvZGlyICR7QG5vcHJlZml4KCdpbmZvZGlyJywgZCl9IFwKKyAgICAgICAgICAgICAgLS1zeXNjb25mZGlyICR7c3lzY29uZmRpcn0gXAorICAgICAgICAgICAgICAtLWxvY2Fsc3RhdGVkaXIgJHtsb2NhbHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgIC0tc2hhcmVkc3RhdGVkaXIgJHtzaGFyZWRzdGF0ZWRpcn0iCisKK01FU09OX1RPT0xDSEFJTl9BUkdTID0gIiR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IgorTUVTT05fQ19BUkdTID0gIiR7TUVTT05fVE9PTENIQUlOX0FSR1N9ICR7Q0ZMQUdTfSIKK01FU09OX0NQUF9BUkdTID0gIiR7TUVTT05fVE9PTENIQUlOX0FSR1N9ICR7Q1hYRkxBR1N9IgorTUVTT05fTElOS19BUkdTID0gIiR7TUVTT05fVE9PTENIQUlOX0FSR1N9ICR7TERGTEFHU30iCisKKyMgYm90aCBhcmUgcmVxdWlyZWQgYnV0IG5vdCB1c2VkIGJ5IG1lc29uCitNRVNPTl9IT1NUX0VORElBTiA9ICJib2d1cy1lbmRpYW4iCitNRVNPTl9UQVJHRVRfRU5ESUFOID0gImJvZ3VzLWVuZGlhbiIKKworRVhUUkFfT0VNRVNPTiArPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKKworTUVTT05fQ1JPU1NfRklMRSA9ICIiCitNRVNPTl9DUk9TU19GSUxFX2NsYXNzLXRhcmdldCA9ICItLWNyb3NzLWZpbGUgJHtXT1JLRElSfS9tZXNvbi5jcm9zcyIKK01FU09OX0NST1NTX0ZJTEVfY2xhc3MtbmF0aXZlc2RrID0gIi0tY3Jvc3MtZmlsZSAke1dPUktESVJ9L21lc29uLmNyb3NzIgorCitkZWYgbWVzb25fYXJyYXkodmFyLCBkKToKKyAgICByZXR1cm4gIicsICciLmpvaW4oZC5nZXRWYXIodmFyKS5zcGxpdCgpKS5qb2luKCgiJyIsICInIikpCisKK2FkZHRhc2sgd3JpdGVfY29uZmlnIGJlZm9yZSBkb19jb25maWd1cmUKK2RvX3dyaXRlX2NvbmZpZ1t2YXJkZXBzXSArPSAiTUVTT05fQ19BUkdTIE1FU09OX0NQUF9BUkdTIE1FU09OX0xJTktfQVJHUyBDQyBDWFggTEQgQVIgTk0gU1RSSVAgUkVBREVMRiIKK2RvX3dyaXRlX2NvbmZpZygpIHsKKyAgICAjIFRoaXMgbmVlZHMgdG8gYmUgUHkgdG8gc3BsaXQgdGhlIGFyZ3MgaW50byBzaW5nbGUtZWxlbWVudCBsaXN0cworICAgIGNhdCA+JHtXT1JLRElSfS9tZXNvbi5jcm9zcyA8PEVPRgorW2JpbmFyaWVzXQorYyA9IFske0BtZXNvbl9hcnJheSgnQ0MnLCBkKX1dCitjcHAgPSBbJHtAbWVzb25fYXJyYXkoJ0NYWCcsIGQpfV0KK2FyID0gWyR7QG1lc29uX2FycmF5KCdBUicsIGQpfV0KK25tID0gWyR7QG1lc29uX2FycmF5KCdOTScsIGQpfV0KK2xkID0gWyR7QG1lc29uX2FycmF5KCdMRCcsIGQpfV0KK3N0cmlwID0gWyR7QG1lc29uX2FycmF5KCdTVFJJUCcsIGQpfV0KK3JlYWRlbGYgPSBbJHtAbWVzb25fYXJyYXkoJ1JFQURFTEYnLCBkKX1dCitwa2djb25maWcgPSAncGtnLWNvbmZpZycKKworW3Byb3BlcnRpZXNdCituZWVkc19leGVfd3JhcHBlciA9IHRydWUKK2NfYXJncyA9IFske0BtZXNvbl9hcnJheSgnTUVTT05fQ19BUkdTJywgZCl9XQorY19saW5rX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0xJTktfQVJHUycsIGQpfV0KK2NwcF9hcmdzID0gWyR7QG1lc29uX2FycmF5KCdNRVNPTl9DUFBfQVJHUycsIGQpfV0KK2NwcF9saW5rX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0xJTktfQVJHUycsIGQpfV0KK2d0a2RvY19leGVfd3JhcHBlciA9ICcke0J9L2d0a2RvYy1xZW11d3JhcHBlcicKKworW2hvc3RfbWFjaGluZV0KK3N5c3RlbSA9ICcke0hPU1RfT1N9JworY3B1X2ZhbWlseSA9ICcke0hPU1RfQVJDSH0nCitjcHUgPSAnJHtIT1NUX0FSQ0h9JworZW5kaWFuID0gJyR7TUVTT05fSE9TVF9FTkRJQU59JworCitbdGFyZ2V0X21hY2hpbmVdCitzeXN0ZW0gPSAnJHtUQVJHRVRfT1N9JworY3B1X2ZhbWlseSA9ICcke1RBUkdFVF9BUkNIfScKK2NwdSA9ICcke1RBUkdFVF9BUkNIfScKK2VuZGlhbiA9ICcke01FU09OX1RBUkdFVF9FTkRJQU59JworRU9GCit9CisKK0NPTkZJR1VSRV9GSUxFUyA9ICJtZXNvbi5idWlsZCIKKworbWVzb25fZG9fY29uZmlndXJlKCkgeworICAgIGlmICEgbWVzb24gJHtNRVNPTk9QVFN9ICIke01FU09OX1NPVVJDRVBBVEh9IiAiJHtCfSIgJHtNRVNPTl9DUk9TU19GSUxFfSAke0VYVFJBX09FTUVTT059OyB0aGVuCisgICAgICAgIGNhdCAke0J9L21lc29uLWxvZ3MvbWVzb24tbG9nLnR4dAorICAgICAgICBiYmZhdGFsX2xvZyBtZXNvbiBmYWlsZWQKKyAgICBmaQorfQorCittZXNvbl9kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgIyBTZXQgdGhlc2Ugc28gdGhhdCBtZXNvbiB1c2VzIHRoZSBuYXRpdmUgdG9vbHMgZm9yIGl0cyBidWlsZCBzYW5pdHkgdGVzdHMsCisgICAgIyB3aGljaCByZXF1aXJlIGV4ZWN1dGFibGVzIHRvIGJlIHJ1bm5hYmxlLiBUaGUgY3Jvc3MgZmlsZSB3aWxsIHN0aWxsCisgICAgIyBvdmVycmlkZSB0aGVzZSBmb3IgdGhlIHRhcmdldCBidWlsZC4gTm90ZSB0aGF0IHdlIGRvICpub3QqIHNldCBDRkxBR1MsCisgICAgIyBMREZMQUdTLCBldGMuIGFzIHRoZXkgd2lsbCBiZSBzbHVycGVkIGluIGJ5IG1lc29uIGFuZCBhcHBsaWVkIHRvIHRoZQorICAgICMgdGFyZ2V0IGJ1aWxkLCBjYXVzaW5nIGVycm9ycy4KKyAgICBleHBvcnQgQ0M9IiR7QlVJTERfQ0N9IgorICAgIGV4cG9ydCBDWFg9IiR7QlVJTERfQ1hYfSIKKyAgICBleHBvcnQgTEQ9IiR7QlVJTERfTER9IgorICAgIGV4cG9ydCBBUj0iJHtCVUlMRF9BUn0iCit9CisKK21lc29uX2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICAjIFNldCB0aGVzZSBzbyB0aGF0IG1lc29uIHVzZXMgdGhlIG5hdGl2ZSB0b29scyBmb3IgaXRzIGJ1aWxkIHNhbml0eSB0ZXN0cywKKyAgICAjIHdoaWNoIHJlcXVpcmUgZXhlY3V0YWJsZXMgdG8gYmUgcnVubmFibGUuIFRoZSBjcm9zcyBmaWxlIHdpbGwgc3RpbGwKKyAgICAjIG92ZXJyaWRlIHRoZXNlIGZvciB0aGUgbmF0aXZlc2RrIGJ1aWxkLiBOb3RlIHRoYXQgd2UgZG8gKm5vdCogc2V0IENGTEFHUywKKyAgICAjIExERkxBR1MsIGV0Yy4gYXMgdGhleSB3aWxsIGJlIHNsdXJwZWQgaW4gYnkgbWVzb24gYW5kIGFwcGxpZWQgdG8gdGhlCisgICAgIyBuYXRpdmVzZGsgYnVpbGQsIGNhdXNpbmcgZXJyb3JzLgorICAgIGV4cG9ydCBDQz0iJHtCVUlMRF9DQ30iCisgICAgZXhwb3J0IENYWD0iJHtCVUlMRF9DWFh9IgorICAgIGV4cG9ydCBMRD0iJHtCVUlMRF9MRH0iCisgICAgZXhwb3J0IEFSPSIke0JVSUxEX0FSfSIKK30KKworbWVzb25fZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIGV4cG9ydCBQS0dfQ09ORklHPSJwa2ctY29uZmlnLW5hdGl2ZSIKK30KKworZG9fY29tcGlsZVtwcm9ncmVzc10gPSAib3V0b2Y6XlxbKFxkKykvKFxkKylcXVxzKyIKK21lc29uX2RvX2NvbXBpbGUoKSB7CisgICAgbmluamEgJHtQQVJBTExFTF9NQUtFfQorfQorCittZXNvbl9kb19pbnN0YWxsKCkgeworICAgIERFU1RESVI9JyR7RH0nIG5pbmphICR7UEFSQUxMRUxfTUFLRUlOU1R9IGluc3RhbGwKK30KKworRVhQT1JUX0ZVTkNUSU9OUyBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21pcnJvcnMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzCmluZGV4IDc2NmYxY2IuLmIzMzFhZmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzCkBAIC02Nyw3ICs2Nyw3IEBACiAjIHdoZXJlIGdpdCBuYXRpdmUgcHJvdG9jb2wgZmV0Y2hlcyBtYXkgZmFpbCBkdWUgdG8gbG9jYWwgZmlyZXdhbGwgcnVsZXMsIGV0Yy4KIAogTUlSUk9SUyArPSAiXAotZ2l0Oi8vYW5vbnNjbS5kZWJpYW4ub3JnLy4qICAgZ2l0Oi8vYW5vbnNjbS5kZWJpYW4ub3JnL2dpdC9QQVRIO3Byb3RvY29sPWh0dHBzIFxuIFwKK2dpdDovL3NhbHNhLmRlYmlhbi5vcmcvLiogICAgIGdpdDovL3NhbHNhLmRlYmlhbi5vcmcvUEFUSDtwcm90b2NvbD1odHRwcyBcbiBcCiBnaXQ6Ly9naXQuZ25vbWUub3JnLy4qICAgICAgICBnaXQ6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9QQVRIO3Byb3RvY29sPWh0dHBzIFxuIFwKIGdpdDovL2dpdC5zYXZhbm5haC5nbnUub3JnLy4qIGdpdDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdC9QQVRIO3Byb3RvY29sPWh0dHBzIFxuIFwKIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLy4qIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9QQVRIO3Byb3RvY29sPWh0dHBzIFxuIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLWJhc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLWJhc2UuYmJjbGFzcwppbmRleCA2ZmU3N2MwLi4yN2JkNjlmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS1iYXNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUtYmFzZS5iYmNsYXNzCkBAIC0xLDcgKzEsOCBAQAogaW5oZXJpdCBrZXJuZWwtYXJjaAogCi0jIFRoaXMgaXMgaW5zdGVhZCBvZiBERVBFTkRTID0gInZpcnR1YWwva2VybmVsIgotZG9fY29uZmlndXJlW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19jb21waWxlX2tlcm5lbG1vZHVsZXMiCisjIFdlIGRvIHRoZSBkZXBlbmRlbmN5IHRoaXMgd2F5IGJlY2F1c2UgdGhlIG91dHB1dCBpcyBub3QgcHJlc2VydmVkCisjIGluIHNzdGF0ZSwgc28gd2UgbXVzdCBmb3JjZSBkb19jb21waWxlIHRvIHJ1biAob25jZSkuCitkb19jb25maWd1cmVbZGVwZW5kc10gKz0gIm1ha2UtbW9kLXNjcmlwdHM6ZG9fY29tcGlsZSIKIAogZXhwb3J0IE9TID0gIiR7VEFSR0VUX09TfSIKIGV4cG9ydCBDUk9TU19DT01QSUxFID0gIiR7VEFSR0VUX1BSRUZJWH0iCkBAIC0xMiwxNiArMTMsOSBAQAogIyB3ZSBkaWRuJ3QgcGljayB0aGUgbmFtZS4KIGV4cG9ydCBLQlVJTERfT1VUUFVUID0gIiR7U1RBR0lOR19LRVJORUxfQlVJTERESVJ9IgogCi1leHBvcnQgS0VSTkVMX1ZFUlNJT04gPSAiJHtAYmFzZV9yZWFkX2ZpbGUoJyR7U1RBR0lOR19LRVJORUxfQlVJTERESVJ9L2tlcm5lbC1hYml2ZXJzaW9uJyl9IgorZXhwb3J0IEtFUk5FTF9WRVJTSU9OID0gIiR7QG9lLnV0aWxzLnJlYWRfZmlsZSgnJHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0va2VybmVsLWFiaXZlcnNpb24nKX0iCiBLRVJORUxfT0JKRUNUX1NVRkZJWCA9ICIua28iCiAKICMga2VybmVsIG1vZHVsZXMgYXJlIGdlbmVyYWxseSBtYWNoaW5lIHNwZWNpZmljCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgogCi0jIEZ1bmN0aW9uIHRvIGVuc3VyZSB0aGUga2VybmVsIHNjcmlwdHMgYXJlIGNyZWF0ZWQuIEV4cGVjdGVkIHRvCi0jIGJlIGNhbGxlZCBiZWZvcmUgZG9fY29tcGlsZS4gU2VlIG1vZHVsZS5iYmNsYXNzIGZvciBhbiBleGFtcGxlLgotZG9fbWFrZV9zY3JpcHRzKCkgewotCXVuc2V0IENGTEFHUyBDUFBGTEFHUyBDWFhGTEFHUyBMREZMQUdTIAotCW1ha2UgQ0M9IiR7S0VSTkVMX0NDfSIgTEQ9IiR7S0VSTkVMX0xEfSIgQVI9IiR7S0VSTkVMX0FSfSIgXAotCSAgICAgICAgICAgLUMgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IE89JHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0gc2NyaXB0cwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLmJiY2xhc3MKaW5kZXggNzhkMWIyMS4uZTM0NDk2MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS5iYmNsYXNzCkBAIC0xLDkgKzEsNSBAQAogaW5oZXJpdCBtb2R1bGUtYmFzZSBrZXJuZWwtbW9kdWxlLXNwbGl0IHBrZ2NvbmZpZwogCi1hZGR0YXNrIG1ha2Vfc2NyaXB0cyBhZnRlciBkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290IGJlZm9yZSBkb19jb25maWd1cmUKLWRvX21ha2Vfc2NyaXB0c1tsb2NrZmlsZXNdID0gIiR7VE1QRElSfS9rZXJuZWwtc2NyaXB0cy5sb2NrIgotZG9fbWFrZV9zY3JpcHRzW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19zaGFyZWRfd29ya2RpciIKLQogRVhUUkFfT0VNQUtFICs9ICJLRVJORUxfU1JDPSR7U1RBR0lOR19LRVJORUxfRElSfSIKIAogTU9EVUxFU19JTlNUQUxMX1RBUkdFVCA/PSAibW9kdWxlc19pbnN0YWxsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzCmluZGV4IDgxNmY1NGUuLjUxOWMxYTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MKQEAgLTExLDggKzExLDggQEAKICAgICAjIFRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSBrZXJuZWwgaW4gbXVsdGlsaWIgY29uZmlncwogICAgICMgV2UgYWxzbyBza2lwIG11bHRpbGliIHNldHVwIGZvciBtb2R1bGUgcGFja2FnZXMuCiAgICAgcHJvdmlkZXMgPSAoZS5kYXRhLmdldFZhcigiUFJPVklERVMiKSBvciAiIikuc3BsaXQoKQotICAgIGlmICJ2aXJ0dWFsL2tlcm5lbCIgaW4gcHJvdmlkZXMgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbW9kdWxlLWJhc2UnLCBlLmRhdGEpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiV2Ugc2hvdWxkbid0IGhhdmUgbXVsdGlsaWIgdmFyaWFudHMgZm9yIHRoZSBrZXJuZWwiKQorICAgIGlmICJ2aXJ0dWFsL2tlcm5lbCIgaW4gcHJvdmlkZXMgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbW9kdWxlLWJhc2UnLCBlLmRhdGEpIG9yICJtYWtlLW1vZC1zY3JpcHRzIiBpbiBlLmRhdGEuZ2V0VmFyKCJQTiIpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJXZSBzaG91bGRuJ3QgaGF2ZSBtdWx0aWxpYiB2YXJpYW50cyBmb3IgdGhlIGtlcm5lbCIpCiAKICAgICBzYXZlX3Zhcl9uYW1lPWUuZGF0YS5nZXRWYXIoIk1VTFRJTElCX1NBVkVfVkFSTkFNRSIpIG9yICIiCiAgICAgZm9yIG5hbWUgaW4gc2F2ZV92YXJfbmFtZS5zcGxpdCgpOgpAQCAtNDEsMTMgKzQxLDEzIEBACiAgICAgICAgIHJldHVybgogCiAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZS5kYXRhKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIldlIGNhbid0IGV4dGVuZCBuYXRpdmUgcmVjaXBlcyIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIldlIGNhbid0IGV4dGVuZCBuYXRpdmUgcmVjaXBlcyIpCiAKICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmVzZGsnLCBlLmRhdGEpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3Nzc2RrJywgZS5kYXRhKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIldlIGNhbid0IGV4dGVuZCBuYXRpdmVzZGsgcmVjaXBlcyIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIldlIGNhbid0IGV4dGVuZCBuYXRpdmVzZGsgcmVjaXBlcyIpCiAKICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdhbGxhcmNoJywgZS5kYXRhKSBhbmQgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3BhY2thZ2Vncm91cCcsIGUuZGF0YSk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJEb24ndCBleHRlbmQgYWxsYXJjaCByZWNpcGVzIHdoaWNoIGFyZSBub3QgcGFja2FnZWdyb3VwcyIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIkRvbid0IGV4dGVuZCBhbGxhcmNoIHJlY2lwZXMgd2hpY2ggYXJlIG5vdCBwYWNrYWdlZ3JvdXBzIikKIAogCiAgICAgIyBFeHBhbmQgdGhpcyBzaW5jZSB0aGlzIHdvbid0IHdvcmsgY29ycmVjdGx5IG9uY2Ugd2Ugc2V0IGEgbXVsdGlsaWIgaW50byBwbGFjZQpAQCAtNzYsNyArNzYsNiBAQAogICAgIG5ld3R1bmUgPSBlLmRhdGEuZ2V0VmFyKCJERUZBVUxUVFVORV8iICsgInZpcnRjbGFzcy1tdWx0aWxpYi0iICsgdmFyaWFudCwgRmFsc2UpCiAgICAgaWYgbmV3dHVuZToKICAgICAgICAgZS5kYXRhLnNldFZhcigiREVGQVVMVFRVTkUiLCBuZXd0dW5lKQotICAgICAgICBlLmRhdGEuc2V0VmFyKCdERUZBVUxUVFVORV9NTF8lcycgJSB2YXJpYW50LCBuZXd0dW5lKQogfQogCiBhZGRoYW5kbGVyIG11bHRpbGliX3ZpcnRjbGFzc19oYW5kbGVyCkBAIC0xMDAsOCArOTksOCBAQAogICAgICAgICBkLnNldFZhcigiTElOR1VBU19JTlNUQUxMIiwgIiIpCiAgICAgICAgICMgRklYTUUsIHdlIG5lZWQgdG8gbWFwIHRoaXMgdG8gc29tZXRoaW5nLCBub3QgZGVsZXRlIGl0IQogICAgICAgICBkLnNldFZhcigiUEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZIiwgIiIpCi0KLSAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdpbWFnZScsIGQpOgorICAgICAgICBiYi5idWlsZC5kZWx0YXNrKCdkb19wb3B1bGF0ZV9zZGsnLCBkKQorICAgICAgICBiYi5idWlsZC5kZWx0YXNrKCdkb19wb3B1bGF0ZV9zZGtfZXh0JywgZCkKICAgICAgICAgcmV0dXJuCiAKICAgICBjbHNleHRlbmQubWFwX2RlcGVuZHNfdmFyaWFibGUoIkRFUEVORFMiKQpAQCAtMTE1LDcgKzExNCw2IEBACiAKICAgICBjbHNleHRlbmQubWFwX3BhY2thZ2V2YXJzKCkKICAgICBjbHNleHRlbmQubWFwX3JlZ2V4cF92YXJpYWJsZSgiUEFDS0FHRVNfRFlOQU1JQyIpCi0gICAgY2xzZXh0ZW5kLm1hcF92YXJpYWJsZSgiUEFDS0FHRV9JTlNUQUxMIikKICAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJJTklUU0NSSVBUX1BBQ0tBR0VTIikKICAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJVU0VSQUREX1BBQ0tBR0VTIikKICAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJTWVNURU1EX1BBQ0tBR0VTIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWJfZ2xvYmFsLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliX2dsb2JhbC5iYmNsYXNzCmluZGV4IGZkMGJmZTEuLmQyZWMxYWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWJfZ2xvYmFsLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9nbG9iYWwuYmJjbGFzcwpAQCAtMTMsMTEgKzEzLDE0IEBACiAKICAgICB2ZXJzaW9ucyA9IFtdCiAgICAgcHJvdmlkZXJzID0gW10KKyAgICBycHJvdmlkZXJzID0gW10KICAgICBmb3IgdiBpbiBkLmtleXMoKToKICAgICAgICAgaWYgdi5zdGFydHN3aXRoKCJQUkVGRVJSRURfVkVSU0lPTl8iKToKICAgICAgICAgICAgIHZlcnNpb25zLmFwcGVuZCh2KQogICAgICAgICBpZiB2LnN0YXJ0c3dpdGgoIlBSRUZFUlJFRF9QUk9WSURFUl8iKToKICAgICAgICAgICAgIHByb3ZpZGVycy5hcHBlbmQodikKKyAgICAgICAgaWYgdi5zdGFydHN3aXRoKCJQUkVGRVJSRURfUlBST1ZJREVSXyIpOgorICAgICAgICAgICAgcnByb3ZpZGVycy5hcHBlbmQodikKIAogICAgIGZvciB2IGluIHZlcnNpb25zOgogICAgICAgICB2YWwgPSBkLmdldFZhcih2LCBGYWxzZSkKQEAgLTkxLDYgKzk0LDI5IEBACiAgICAgICAgIGlmIHByb3YgIT0gcHJvdmV4cCBhbmQgZC5nZXRWYXIocHJvdiwgRmFsc2UpOgogICAgICAgICAgICAgZC5yZW5hbWVWYXIocHJvdiwgcHJvdmV4cCkKIAorICAgIGZvciBwcm92IGluIHJwcm92aWRlcnM6CisgICAgICAgIHZhbCA9IGQuZ2V0VmFyKHByb3YsIEZhbHNlKQorICAgICAgICBwa2cgPSBwcm92LnJlcGxhY2UoIlBSRUZFUlJFRF9SUFJPVklERVJfIiwgIiIpCisgICAgICAgIGZvciBwIGluIHByZWZpeGVzOgorICAgICAgICAgICAgbmV3dmFsID0gcCArICItIiArIHZhbAorCisgICAgICAgICAgICAjIGltcGxlbWVudCB2YXJpYWJsZSBrZXlzCisgICAgICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICAgICAgICAgIG92ZXJyaWRlID0gIjp2aXJ0Y2xhc3MtbXVsdGlsaWItIiArIHAKKyAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoIk9WRVJSSURFUyIsIGxvY2FsZGF0YS5nZXRWYXIoIk9WRVJSSURFUyIsIEZhbHNlKSArIG92ZXJyaWRlKQorICAgICAgICAgICAgbmV3bmFtZSA9IGxvY2FsZGF0YS5leHBhbmQocHJvdikKKyAgICAgICAgICAgIGlmIG5ld25hbWUgIT0gcHJvdiBhbmQgbm90IGQuZ2V0VmFyKG5ld25hbWUsIEZhbHNlKToKKyAgICAgICAgICAgICAgICBkLnNldFZhcihuZXduYW1lLCBsb2NhbGRhdGEuZXhwYW5kKG5ld3ZhbCkpCisKKyAgICAgICAgICAgICMgaW1wbGVtZW50IGFsdGVybmF0aXZlIG11bHRpbGliIG5hbWUKKyAgICAgICAgICAgIG5ld25hbWUgPSBsb2NhbGRhdGEuZXhwYW5kKCJQUkVGRVJSRURfUlBST1ZJREVSXyIgKyBwICsgIi0iICsgcGtnKQorICAgICAgICAgICAgaWYgbm90IGQuZ2V0VmFyKG5ld25hbWUsIEZhbHNlKSBhbmQgbmV3dmFsICE9IE5vbmU6CisgICAgICAgICAgICAgICAgZC5zZXRWYXIobmV3bmFtZSwgbG9jYWxkYXRhLmV4cGFuZChuZXd2YWwpKQorICAgICAgICAjIEF2b2lkIGZ1dHVyZSB2YXJpYWJsZSBrZXkgZXhwYW5zaW9uCisgICAgICAgIHByb3ZleHAgPSBkLmV4cGFuZChwcm92KQorICAgICAgICBpZiBwcm92ICE9IHByb3ZleHAgYW5kIGQuZ2V0VmFyKHByb3YsIEZhbHNlKToKKyAgICAgICAgICAgIGQucmVuYW1lVmFyKHByb3YsIHByb3ZleHApCisKICAgICBkZWYgdHJhbnNsYXRlX3Byb3ZpZGUocHJlZml4LCBwcm92KToKICAgICAgICAgaWYgbm90IHByb3Yuc3RhcnRzd2l0aCgidmlydHVhbC8iKToKICAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyAiLSIgKyBwcm92CkBAIC0xNjIsNyArMTg4LDcgQEAKICAgICAgICAgICAgIGlmIHJwcm92cy5zdHJpcCgpOgogICAgICAgICAgICAgICAgIGUuZGF0YS5zZXRWYXIoIlJQUk9WSURFUyIsIHJwcm92cykKIAotCSAgICAjIFByb2Nlc3MgUlBST1ZJREVTXyR7UE59Li4uCisgICAgICAgICAgICAjIFByb2Nlc3MgUlBST1ZJREVTXyR7UE59Li4uCiAgICAgICAgICAgICBmb3IgcGtnIGluIChlLmRhdGEuZ2V0VmFyKCJQQUNLQUdFUyIpIG9yICIiKS5zcGxpdCgpOgogICAgICAgICAgICAgICAgIG9yaWdycHJvdnMgPSBycHJvdnMgPSBlLmRhdGEuZ2V0VmFyKCJSUFJPVklERVNfJXMiICUgcGtnKSBvciAiIgogICAgICAgICAgICAgICAgIGZvciBjbHNleHRlbmQgaW4gY2xzZXh0ZW5kczoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzCmluZGV4IDljNDM0ZGMuLmE5MTFmMmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcwpAQCAtNTIsOCArNTIsNiBAQAogIyBuYXRpdmUgcGtnIGRvZXNuJ3QgbmVlZCB0aGUgVE9PTENIQUlOX09QVElPTlMuCiBUT09MQ0hBSU5fT1BUSU9OUyA9ICIiCiAKLURFUEVORFNfR0VUVEVYVCA9ICJnZXR0ZXh0LW5hdGl2ZSIKLQogIyBEb24ndCBidWlsZCBwdGVzdCBuYXRpdmVseQogUFRFU1RfRU5BQkxFRCA9ICIwIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25wbS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcwppbmRleCBhNjliZWRiLi5jMzUxZmYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25wbS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MKQEAgLTIsNyArMiwxNSBAQAogUkRFUEVORFNfJHtQTn1fcHJlcGVuZCA9ICJub2RlanMgIgogUyA9ICIke1dPUktESVJ9L25wbXBrZyIKIAotTlBNX0lOU1RBTExESVIgPSAiJHtEfSR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtQTn0iCitkZWYgbm9kZV9wa2duYW1lKGQpOgorICAgIGJwbiA9IGQuZ2V0VmFyKCdCUE4nKQorICAgIGlmIGJwbi5zdGFydHN3aXRoKCJub2RlLSIpOgorICAgICAgICByZXR1cm4gYnBuWzU6XQorICAgIHJldHVybiBicG4KKworTlBNUE4gPz0gIiR7QG5vZGVfcGtnbmFtZShkKX0iCisKK05QTV9JTlNUQUxMRElSID0gIiR7RH0ke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7TlBNUE59IgogCiAjIGZ1bmN0aW9uIG1hcHMgYXJjaCBuYW1lcyB0byBucG0gYXJjaCBuYW1lcwogZGVmIG5wbV9vZV9hcmNoX21hcCh0YXJnZXRfYXJjaCwgZCk6CkBAIC0zMSw3ICszOSw3IEBACiAJZmkKIAlucG0gc2V0IGNhY2hlICR7V09SS0RJUn0vbnBtX2NhY2hlCiAJIyBjbGVhciBjYWNoZSBiZWZvcmUgZXZlcnkgYnVpbGQKLQlucG0gY2FjaGUgY2xlYXIKKwlucG0gY2FjaGUgY2xlYXIgLS1mb3JjZQogCSMgSW5zdGFsbCBwa2cgaW50byAke1N9IHdpdGhvdXQgZ29pbmcgdG8gdGhlIHJlZ2lzdHJ5CiAJaWYgWyAgIiR7TlBNX0lOU1RBTExfREVWfSIgPSAiMSIgXTsgdGhlbgogCQlucG0gLS1hcmNoPSR7TlBNX0FSQ0h9IC0tdGFyZ2V0X2FyY2g9JHtOUE1fQVJDSH0gLS1uby1yZWdpc3RyeSBpbnN0YWxsCkBAIC00NSw3ICs1Myw4IEBACiAJIyBiZSBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5CiAJZXhwb3J0IEhPTUU9JHtXT1JLRElSfQogCW1rZGlyIC1wICR7TlBNX0lOU1RBTExESVJ9LwotCW5wbSBpbnN0YWxsIC0tcHJlZml4ICR7RH0ke3ByZWZpeH0gLWcgLS1hcmNoPSR7TlBNX0FSQ0h9IC0tdGFyZ2V0X2FyY2g9JHtOUE1fQVJDSH0gLS1wcm9kdWN0aW9uIC0tbm8tcmVnaXN0cnkKKwlucG0gcGFjayAuCisJbnBtIGluc3RhbGwgLS1wcmVmaXggJHtEfSR7cHJlZml4fSAtZyAtLWFyY2g9JHtOUE1fQVJDSH0gLS10YXJnZXRfYXJjaD0ke05QTV9BUkNIfSAtLXByb2R1Y3Rpb24gLS1uby1yZWdpc3RyeSAke05QTVBOfS0ke1BWfS50Z3oKIAlpZiBbIC1kICR7RH0ke3ByZWZpeH0vZXRjIF0gOyB0aGVuCiAJCSMgVGhpcyB3aWxsIGJlIGVtcHR5CiAJCXJtZGlyICR7RH0ke3ByZWZpeH0vZXRjCkBAIC01MywxMyArNjIsMTMgQEAKIH0KIAogcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGluc3RkaXIgPSBkLmV4cGFuZCgnJHtEfSR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtQTn0nKQorICAgIGluc3RkaXIgPSBkLmV4cGFuZCgnJHtEfSR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtOUE1QTn0nKQogICAgIGV4dHJhcGFja2FnZXMgPSBvZS5wYWNrYWdlLm5wbV9zcGxpdF9wYWNrYWdlX2RpcnMoaW5zdGRpcikKICAgICBwa2duYW1lcyA9IGV4dHJhcGFja2FnZXMua2V5cygpCiAgICAgZC5wcmVwZW5kVmFyKCdQQUNLQUdFUycsICclcyAnICUgJyAnLmpvaW4ocGtnbmFtZXMpKQogICAgIGZvciBwa2duYW1lIGluIHBrZ25hbWVzOgogICAgICAgICBwa2dyZWxwYXRoLCBwZGF0YSA9IGV4dHJhcGFja2FnZXNbcGtnbmFtZV0KLSAgICAgICAgcGtncGF0aCA9ICcke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7UE59LycgKyBwa2dyZWxwYXRoCisgICAgICAgIHBrZ3BhdGggPSAnJHtsaWJkaXJ9L25vZGVfbW9kdWxlcy8ke05QTVBOfS8nICsgcGtncmVscGF0aAogICAgICAgICAjIHBhY2thZ2UgbmFtZXMgY2FuJ3QgaGF2ZSB1bmRlcnNjb3JlcyBidXQgbnBtIHBhY2thZ2VzIHNvbWV0aW1lcyB1c2UgdGhlbQogICAgICAgICBvZV9wa2dfbmFtZSA9IHBrZ25hbWUucmVwbGFjZSgnXycsICctJykKICAgICAgICAgZXhwYW5kZWRfcGtnbmFtZSA9IGQuZXhwYW5kKG9lX3BrZ19uYW1lKQpAQCAtNzUsNyArODQsNyBAQAogfQogCiBGSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7UE59IFwKKyAgICAke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7TlBNUE59IFwKICIKIAogRVhQT1JUX0ZVTkNUSU9OUyBkb19jb21waWxlIGRvX2luc3RhbGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKaW5kZXggMjA1M2Q0Ni4uZWRlZmZhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKQEAgLTI2LDcgKzI2LDcgQEAKICMgICAgYSBsaXN0IG9mIGFmZmVjdGVkIGZpbGVzIGluIEZJTEVSe1BST1ZJREVTLERFUEVORFN9RkxJU1RfcGtnCiAjCiAjIGgpIHBhY2thZ2VfZG9fc2hsaWJzIC0gTG9vayBhdCB0aGUgc2hhcmVkIGxpYnJhcmllcyBnZW5lcmF0ZWQgYW5kIGF1dG90bWF0aWNhbGx5IGFkZCBhbnkKLSMgICAgZGVwZW5lZGVuY2llcyBmb3VuZC4gQWxzbyBzdG9yZXMgdGhlIHBhY2thZ2UgbmFtZSBzbyBhbnlvbmUgZWxzZSB1c2luZyB0aGlzIGxpYnJhcnkKKyMgICAgZGVwZW5kZW5jaWVzIGZvdW5kLiBBbHNvIHN0b3JlcyB0aGUgcGFja2FnZSBuYW1lIHNvIGFueW9uZSBlbHNlIHVzaW5nIHRoaXMgbGlicmFyeQogIyAgICBrbm93cyB3aGljaCBwYWNrYWdlIHRvIGRlcGVuZCBvbi4KICMKICMgaSkgcGFja2FnZV9kb19wa2djb25maWcgLSBLZWVwIHRyYWNrIG9mIHdoaWNoIHBhY2thZ2VzIG5lZWQgYW5kIHByb3ZpZGUgd2hpY2ggLnBjIGZpbGVzCkBAIC01Miw3ICs1Miw4IEBACiBBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUyA9ICIke0BhbGxfbXVsdGlsaWJfdHVuZV92YWx1ZXMoZCwgJ1BBQ0tBR0VfQVJDSFMnKX0iCiAKICMgcnBtIGlzIHVzZWQgZm9yIHRoZSBwZXItZmlsZSBkZXBlbmRlbmN5IGlkZW50aWZpY2F0aW9uCi1QQUNLQUdFX0RFUEVORFMgKz0gInJwbS1uYXRpdmUiCisjIGR3YXJmc3JjZmlsZXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGxpc3Qgb2YgZGVidWcgc291cmNlIGZpbGVzCitQQUNLQUdFX0RFUEVORFMgKz0gInJwbS1uYXRpdmUgZHdhcmZzcmNmaWxlcy1uYXRpdmUiCiAKIAogIyBJZiB5b3VyIHBvc3RpbnN0YWxsIGNhbiBleGVjdXRlIGF0IHJvb3RmcyBjcmVhdGlvbiB0aW1lIHJhdGhlciB0aGFuIG9uCkBAIC0zMzQsNiArMzM1LDMzIEBACiAKICAgICByZXR1cm4gRmFsc2UKIAorZGVmIHBhcnNlX2RlYnVnc291cmNlc19mcm9tX2R3YXJmc3JjZmlsZXNfb3V0cHV0KGR3YXJmc3JjZmlsZXNfb3V0cHV0KToKKyAgICBkZWJ1Z2ZpbGVzID0ge30KKworICAgIGZvciBsaW5lIGluIGR3YXJmc3JjZmlsZXNfb3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJcdCIpOgorICAgICAgICAgICAgZGVidWdmaWxlc1tvcy5wYXRoLm5vcm1wYXRoKGxpbmUuc3BsaXQoKVswXSldID0gIiIKKworICAgIHJldHVybiBkZWJ1Z2ZpbGVzLmtleXMoKQorCitkZWYgYXBwZW5kX3NvdXJjZV9pbmZvKGZpbGUsIHNvdXJjZWZpbGUsIGQsIGZhdGFsPVRydWUpOgorICAgIGNtZCA9ICInZHdhcmZzcmNmaWxlcycgJyVzJyIgJSAoZmlsZSkKKyAgICAocmV0dmFsLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKKyAgICAjIDI1NSBtZWFucyBhIHNwZWNpZmljIGZpbGUgd2Fzbid0IGZ1bGx5IHBhcnNlZCB0byBnZXQgdGhlIGRlYnVnIGZpbGUgbGlzdCwgd2hpY2ggaXMgbm90IGEgZmF0YWwgZmFpbHVyZQorICAgIGlmIHJldHZhbCAhPSAwIGFuZCByZXR2YWwgIT0gMjU1OgorICAgICAgICBtc2cgPSAiZHdhcmZzcmNmaWxlcyBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXMgKGNtZCB3YXMgJXMpJXMiICUgKHJldHZhbCwgY21kLCAiOlxuJXMiICUgb3V0cHV0IGlmIG91dHB1dCBlbHNlICIiKQorICAgICAgICBpZiBmYXRhbDoKKyAgICAgICAgICAgIGJiLmZhdGFsKG1zZykKKyAgICAgICAgYmIubm90ZShtc2cpCisKKyAgICBkZWJ1Z3NvdXJjZXMgPSBwYXJzZV9kZWJ1Z3NvdXJjZXNfZnJvbV9kd2FyZnNyY2ZpbGVzX291dHB1dChvdXRwdXQpCisgICAgIyBmaWxlbmFtZXMgYXJlIG51bGwtc2VwYXJhdGVkIC0gdGhpcyBpcyBhbiBhcnRlZmFjdCBvZiB0aGUgcHJldmlvdXMgdXNlCisgICAgIyBvZiBycG0ncyBkZWJ1Z2VkaXQsIHdoaWNoIHdhcyB3cml0aW5nIHRoZW0gb3V0IHRoYXQgd2F5LCBhbmQgdGhlIGNvZGUgZWxzZXdoZXJlCisgICAgIyBpcyBzdGlsbCBhc3N1bWluZyB0aGF0LgorICAgIGRlYnVnbGlzdG91dHB1dCA9ICdcMCcuam9pbihkZWJ1Z3NvdXJjZXMpICsgJ1wwJworICAgIG9wZW4oc291cmNlZmlsZSwgJ2EnKS53cml0ZShkZWJ1Z2xpc3RvdXRwdXQpCisKKwogZGVmIHNwbGl0ZGVidWdpbmZvKGZpbGUsIGRlYnVnZmlsZSwgZGVidWdzcmNkaXIsIHNvdXJjZWZpbGUsIGQpOgogICAgICMgRnVuY3Rpb24gdG8gc3BsaXQgYSBzaW5nbGUgZmlsZSBpbnRvIHR3byBjb21wb25lbnRzLCBvbmUgaXMgdGhlIHN0cmlwcGVkCiAgICAgIyB0YXJnZXQgc3lzdGVtIGJpbmFyeSwgdGhlIG90aGVyIGNvbnRhaW5zIGFueSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uIFRoZQpAQCAtMzQ1LDcgKzM3Myw2IEBACiAKICAgICBkdmFyID0gZC5nZXRWYXIoJ1BLR0QnKQogICAgIG9iamNvcHkgPSBkLmdldFZhcigiT0JKQ09QWSIpCi0gICAgZGVidWdlZGl0ID0gZC5leHBhbmQoIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0vZGVidWdlZGl0IikKIAogICAgICMgV2UgaWdub3JlIGtlcm5lbCBtb2R1bGVzLCB3ZSBkb24ndCBnZW5lcmF0ZSBkZWJ1ZyBpbmZvIGZpbGVzLgogICAgIGlmIGZpbGUuZmluZCgiL2xpYi9tb2R1bGVzLyIpICE9IC0xIGFuZCBmaWxlLmVuZHN3aXRoKCIua28iKToKQEAgLTM1OSwxMCArMzg2LDcgQEAKIAogICAgICMgV2UgbmVlZCB0byBleHRyYWN0IHRoZSBkZWJ1ZyBzcmMgaW5mb3JtYXRpb24gaGVyZS4uLgogICAgIGlmIGRlYnVnc3JjZGlyOgotICAgICAgICBjbWQgPSAiJyVzJyAtaSAtbCAnJXMnICclcyciICUgKGRlYnVnZWRpdCwgc291cmNlZmlsZSwgZmlsZSkKLSAgICAgICAgKHJldHZhbCwgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCi0gICAgICAgIGlmIHJldHZhbDoKLSAgICAgICAgICAgIGJiLmZhdGFsKCJkZWJ1Z2VkaXQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVzIChjbWQgd2FzICVzKSVzIiAlIChyZXR2YWwsIGNtZCwgIjpcbiVzIiAlIG91dHB1dCBpZiBvdXRwdXQgZWxzZSAiIikpCisgICAgICAgIGFwcGVuZF9zb3VyY2VfaW5mbyhmaWxlLCBzb3VyY2VmaWxlLCBkKQogCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShkZWJ1Z2ZpbGUpKQogCkBAIC0zODMsNyArNDA3LDcgQEAKICAgICByZXR1cm4gMAogCiBkZWYgY29weWRlYnVnc291cmNlcyhkZWJ1Z3NyY2RpciwgZCk6Ci0gICAgIyBUaGUgZGVidWcgc3JjIGluZm9ybWF0aW9uIHdyaXR0ZW4gb3V0IHRvIHNvdXJjZWZpbGUgaXMgZnVydGhlciBwcm9jZWNlc3NlZAorICAgICMgVGhlIGRlYnVnIHNyYyBpbmZvcm1hdGlvbiB3cml0dGVuIG91dCB0byBzb3VyY2VmaWxlIGlzIGZ1cnRoZXIgcHJvY2Vzc2VkCiAgICAgIyBhbmQgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbiBoZXJlLgogCiAgICAgaW1wb3J0IHN0YXQKQEAgLTM5Myw3ICs0MTcsNiBAQAogICAgICAgICBkdmFyID0gZC5nZXRWYXIoJ1BLR0QnKQogICAgICAgICBzdHJpcCA9IGQuZ2V0VmFyKCJTVFJJUCIpCiAgICAgICAgIG9iamNvcHkgPSBkLmdldFZhcigiT0JKQ09QWSIpCi0gICAgICAgIGRlYnVnZWRpdCA9IGQuZXhwYW5kKCIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtL2Jpbi9kZWJ1Z2VkaXQiKQogICAgICAgICB3b3JrZGlyID0gZC5nZXRWYXIoIldPUktESVIiKQogICAgICAgICB3b3JrcGFyZW50ZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZSh3b3JrZGlyKSkKICAgICAgICAgd29ya2Jhc2VkaXIgPSBvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguZGlybmFtZSh3b3JrZGlyKSkgKyAiLyIgKyBvcy5wYXRoLmJhc2VuYW1lKHdvcmtkaXIpCkBAIC02MzMsNyArNjU2LDcgQEAKICAgICAjIF9fc3RyX18gY2FuIGJlIHVzZWQgdG8gcHJpbnQgb3V0IGFuIGVudHJ5IGluIHRoZSBpbnB1dCBmb3JtYXQKICAgICAjCiAgICAgIyBpZiBmc19wZXJtc19lbnRyeS5wYXRoIGlzIE5vbmU6Ci0gICAgIyAgICBhbiBlcnJvciBvY2N1cmVkCisgICAgIyAgICBhbiBlcnJvciBvY2N1cnJlZAogICAgICMgaWYgZnNfcGVybXNfZW50cnkubGluaywgeW91IGNhbiByZXRyaWV2ZToKICAgICAjICAgIGZzX3Blcm1zX2VudHJ5LnBhdGggPSBwYXRoCiAgICAgIyAgICBmc19wZXJtc19lbnRyeS5saW5rID0gdGFyZ2V0IG9mIGxpbmsKQEAgLTg2MCw2ICs4ODMsNyBAQAogCiAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJykKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisgICAgdGFyZ2V0b3MgPSBkLmdldFZhcignVEFSR0VUX09TJykKIAogICAgIG9sZGN3ZCA9IG9zLmdldGN3ZCgpCiAgICAgb3MuY2hkaXIoZHZhcikKQEAgLTkwMSw3ICs5MjUsNyBAQAogICAgICMgMTYgLSBrZXJuZWwgbW9kdWxlCiAgICAgZGVmIGlzRUxGKHBhdGgpOgogICAgICAgICB0eXBlID0gMAotICAgICAgICByZXQsIHJlc3VsdCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgiZmlsZSBcIiVzXCIiICUgcGF0aC5yZXBsYWNlKCJcIiIsICJcXFwiIikpCisgICAgICAgIHJldCwgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJmaWxlIC1iICclcyciICUgcGF0aCkKIAogICAgICAgICBpZiByZXQ6CiAgICAgICAgICAgICBtc2cgPSAic3BsaXRfYW5kX3N0cmlwX2ZpbGVzOiAnZmlsZSAlcycgZmFpbGVkIiAlIHBhdGgKQEAgLTkxOSw2ICs5NDMsMTUgQEAKICAgICAgICAgICAgICAgICB0eXBlIHw9IDgKICAgICAgICAgcmV0dXJuIHR5cGUKIAorICAgIGRlZiBpc1N0YXRpY0xpYihwYXRoKToKKyAgICAgICAgaWYgcGF0aC5lbmRzd2l0aCgnLmEnKSBhbmQgbm90IG9zLnBhdGguaXNsaW5rKHBhdGgpOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZoOgorICAgICAgICAgICAgICAgICMgVGhlIG1hZ2ljIG11c3QgaW5jbHVkZSB0aGUgZmlyc3Qgc2xhc2ggdG8gYXZvaWQKKyAgICAgICAgICAgICAgICAjIG1hdGNoaW5nIGdvbGFuZyBzdGF0aWMgbGlicmFyaWVzCisgICAgICAgICAgICAgICAgbWFnaWMgPSBiJyE8YXJjaD5ceDBhLycKKyAgICAgICAgICAgICAgICBzdGFydCA9IGZoLnJlYWQobGVuKG1hZ2ljKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnQgPT0gbWFnaWMKKyAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAjCiAgICAgIyBGaXJzdCBsZXRzIGZpZ3VyZSBvdXQgYWxsIG9mIHRoZSBmaWxlcyB3ZSBtYXkgaGF2ZSB0byBwcm9jZXNzIC4uLiBkbyB0aGlzIG9ubHkgb25jZSEKQEAgLTkyNiw5ICs5NTksMTEgQEAKICAgICBlbGZmaWxlcyA9IHt9CiAgICAgc3ltbGlua3MgPSB7fQogICAgIGtlcm5tb2RzID0gW10KKyAgICBzdGF0aWNsaWJzID0gW10KICAgICBpbm9kZXMgPSB7fQogICAgIGxpYmRpciA9IG9zLnBhdGguYWJzcGF0aChkdmFyICsgb3Muc2VwICsgZC5nZXRWYXIoImxpYmRpciIpKQogICAgIGJhc2VsaWJkaXIgPSBvcy5wYXRoLmFic3BhdGgoZHZhciArIG9zLnNlcCArIGQuZ2V0VmFyKCJiYXNlX2xpYmRpciIpKQorICAgIHNraXBmaWxlcyA9IChkLmdldFZhcigiSU5ISUJJVF9QQUNLQUdFX1NUUklQX0ZJTEVTIikgb3IgIiIpLnNwbGl0KCkKICAgICBpZiAoZC5nZXRWYXIoJ0lOSElCSVRfUEFDS0FHRV9TVFJJUCcpICE9ICcxJyBvciBcCiAgICAgICAgICAgICBkLmdldFZhcignSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUJykgIT0gJzEnKToKICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIGNwYXRoLndhbGsoZHZhcik6CkBAIC05MzcsNiArOTcyLDkgQEAKICAgICAgICAgICAgICAgICBpZiBmaWxlLmVuZHN3aXRoKCIua28iKSBhbmQgZmlsZS5maW5kKCIvbGliL21vZHVsZXMvIikgIT0gLTE6CiAgICAgICAgICAgICAgICAgICAgIGtlcm5tb2RzLmFwcGVuZChmaWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIGlzU3RhdGljTGliKGZpbGUpOgorICAgICAgICAgICAgICAgICAgICBzdGF0aWNsaWJzLmFwcGVuZChmaWxlKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgIyBTa2lwIGRlYnVnIGZpbGVzCiAgICAgICAgICAgICAgICAgaWYgZGVidWdhcHBlbmQgYW5kIGZpbGUuZW5kc3dpdGgoZGVidWdhcHBlbmQpOgpAQCAtOTQ0LDYgKzk4Miw5IEBACiAgICAgICAgICAgICAgICAgaWYgZGVidWdkaXIgYW5kIGRlYnVnZGlyIGluIG9zLnBhdGguZGlybmFtZShmaWxlW2xlbihkdmFyKTpdKToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAorICAgICAgICAgICAgICAgIGlmIGZpbGUgaW4gc2tpcGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBsdGFyZ2V0ID0gY3BhdGgucmVhbHBhdGgoZmlsZSwgZHZhciwgRmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIHMgPSBjcGF0aC5sc3RhdChsdGFyZ2V0KQpAQCAtOTU1LDcgKzk5Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYgbm90IHM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgIyBDaGVjayBpdHMgYW4gZXhjdXRhYmxlCisgICAgICAgICAgICAgICAgIyBDaGVjayBpdHMgYW4gZXhlY3V0YWJsZQogICAgICAgICAgICAgICAgIGlmIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhVU1IpIG9yIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhHUlApIG9yIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhPVEgpIFwKICAgICAgICAgICAgICAgICAgICAgICAgIG9yICgoZmlsZS5zdGFydHN3aXRoKGxpYmRpcikgb3IgZmlsZS5zdGFydHN3aXRoKGJhc2VsaWJkaXIpKSBhbmQgKCIuc28iIGluIGYgb3IgIi5ub2RlIiBpbiBmKSk6CiAgICAgICAgICAgICAgICAgICAgICMgSWYgaXQncyBhIHN5bWxpbmssIGFuZCBwb2ludHMgdG8gYW4gRUxGIGZpbGUsIHdlIGNhcHR1cmUgdGhlIHJlYWRsaW5rIHRhcmdldApAQCAtOTgzLDcgKzEwMjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIyAgYikgT25seSBzdHJpcCBhbnkgaGFyZGxpbmtlZCBmaWxlIG9uY2UgKG5vIHJhY2VzKQogICAgICAgICAgICAgICAgICAgICAgICAgIyAgYykgVHJhY2sgYW55IGhhcmRsaW5rcyBiZXR3ZWVuIGZpbGVzIHNvIHRoYXQgd2UgY2FuIHJlY29uc3RydWN0IG1hdGNoaW5nIGRlYnVnIGZpbGUgaGFyZGxpbmtzCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICMgVXNlIGEgcmVmZXJlbmNlIG9mIGRldmljZSBJRCBhbmQgaW5vZGUgbnVtYmVyIHRvIGluZGVudGlmeSBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2UgYSByZWZlcmVuY2Ugb2YgZGV2aWNlIElEIGFuZCBpbm9kZSBudW1iZXIgdG8gaWRlbnRpZnkgZmlsZXMKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcmVmZXJlbmNlID0gIiVkXyVkIiAlIChzLnN0X2Rldiwgcy5zdF9pbm8pCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX3JlZmVyZW5jZSBpbiBpbm9kZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZpbGUpCkBAIC0xMDEyLDYgKzEwNTMsMTAgQEAKICAgICAgICAgICAgICMgT25seSBzdG9yZSBvZmYgdGhlIGhhcmQgbGluayByZWZlcmVuY2UgaWYgd2Ugc3VjY2Vzc2Z1bGx5IHNwbGl0IQogICAgICAgICAgICAgc3BsaXRkZWJ1Z2luZm8oZmlsZSwgZnBhdGgsIGRlYnVnc3JjZGlyLCBzb3VyY2VmaWxlLCBkKQogCisgICAgICAgIGlmIGRlYnVnc3JjZGlyIGFuZCBub3QgdGFyZ2V0b3Muc3RhcnRzd2l0aCgibWluZ3ciKToKKyAgICAgICAgICAgIGZvciBmaWxlIGluIHN0YXRpY2xpYnM6CisgICAgICAgICAgICAgICAgYXBwZW5kX3NvdXJjZV9pbmZvKGZpbGUsIHNvdXJjZWZpbGUsIGQsIGZhdGFsPUZhbHNlKQorCiAgICAgICAgICMgSGFyZGxpbmsgb3VyIGRlYnVnIHN5bWJvbHMgdG8gdGhlIG90aGVyIGhhcmRsaW5rIGNvcGllcwogICAgICAgICBmb3IgcmVmIGluIGlub2RlczoKICAgICAgICAgICAgIGlmIGxlbihpbm9kZXNbcmVmXSkgPT0gMToKQEAgLTExMDUsNyArMTE1MCw3IEBACiAgICAgICAgIGQuc2V0VmFyKCdGSUxFU18lcycgJSBzcmNfcGFja2FnZV9uYW1lLCAnL3Vzci9zcmMvZGVidWcnKQogCiAgICAgIyBTYW5pdHkgY2hlY2sgUEFDS0FHRVMgZm9yIGR1cGxpY2F0ZXMKLSAgICAjIFNhbml0eSBzaG91bGQgYmUgbW92ZWQgdG8gc2FuaXR5LmJiY2xhc3Mgb25jZSB3ZSBoYXZlIHRoZSBpbmZyYXN0dWN0dXJlCisgICAgIyBTYW5pdHkgc2hvdWxkIGJlIG1vdmVkIHRvIHNhbml0eS5iYmNsYXNzIG9uY2Ugd2UgaGF2ZSB0aGUgaW5mcmFzdHJ1Y3R1cmUKICAgICBwYWNrYWdlX2xpc3QgPSBbXQogCiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgpAQCAtMTMwMyw2ICsxMzQ4LDM2IEBACiAgICAgZnJvbSBnbG9iIGltcG9ydCBnbG9iCiAgICAgaW1wb3J0IGpzb24KIAorICAgIGRlZiBwcm9jZXNzX3Bvc3RpbnN0X29uX3RhcmdldChwa2csIG1scHJlZml4KToKKyAgICAgICAgZGVmZXJfZnJhZ21lbnQgPSAiIiIKK2lmIFsgLW4gIiREIiBdOyB0aGVuCisgICAgJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IGRlbGF5X3RvX2ZpcnN0X2Jvb3QgJXMgbWxwcmVmaXg9JXMKKyAgICBleGl0IDAKK2ZpCisiIiIgJSAocGtnLCBtbHByZWZpeCkKKworICAgICAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnKQorICAgICAgICBwb3N0aW5zdF9vbnRhcmdldCA9IGQuZ2V0VmFyKCdwa2dfcG9zdGluc3Rfb250YXJnZXRfJXMnICUgcGtnKQorCisgICAgICAgIGlmIHBvc3RpbnN0X29udGFyZ2V0OgorICAgICAgICAgICAgYmIuZGVidWcoMSwgJ2FkZGluZyBkZWZlcnJlZCBwa2dfcG9zdGluc3Rfb250YXJnZXQoKSB0byBwa2dfcG9zdGluc3QoKSBmb3IgJXMnICUgcGtnKQorICAgICAgICAgICAgaWYgbm90IHBvc3RpbnN0OgorICAgICAgICAgICAgICAgIHBvc3RpbnN0ID0gJyMhL2Jpbi9zaFxuJworICAgICAgICAgICAgcG9zdGluc3QgKz0gZGVmZXJfZnJhZ21lbnQKKyAgICAgICAgICAgIHBvc3RpbnN0ICs9IHBvc3RpbnN0X29udGFyZ2V0CisgICAgICAgICAgICBkLnNldFZhcigncGtnX3Bvc3RpbnN0XyVzJyAlIHBrZywgcG9zdGluc3QpCisKKyAgICBkZWYgYWRkX3NldF9lX3RvX3NjcmlwdGxldHMocGtnKToKKyAgICAgICAgZm9yIHNjcmlwdGxldF9uYW1lIGluICgncGtnX3ByZWluc3QnLCAncGtnX3Bvc3RpbnN0JywgJ3BrZ19wcmVybScsICdwa2dfcG9zdHJtJyk6CisgICAgICAgICAgICBzY3JpcHRsZXQgPSBkLmdldFZhcignJXNfJXMnICUgKHNjcmlwdGxldF9uYW1lLCBwa2cpKQorICAgICAgICAgICAgaWYgc2NyaXB0bGV0OgorICAgICAgICAgICAgICAgIHNjcmlwdGxldF9zcGxpdCA9IHNjcmlwdGxldC5zcGxpdCgnXG4nKQorICAgICAgICAgICAgICAgIGlmIHNjcmlwdGxldF9zcGxpdFswXS5zdGFydHN3aXRoKCIjISIpOgorICAgICAgICAgICAgICAgICAgICBzY3JpcHRsZXQgPSBzY3JpcHRsZXRfc3BsaXRbMF0gKyAiXG5zZXQgLWVcbiIgKyAiXG4iLmpvaW4oc2NyaXB0bGV0X3NwbGl0WzE6XSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzY3JpcHRsZXQgPSAic2V0IC1lXG4iICsgIlxuIi5qb2luKHNjcmlwdGxldF9zcGxpdFswOl0pCisgICAgICAgICAgICBkLnNldFZhcignJXNfJXMnICUgKHNjcmlwdGxldF9uYW1lLCBwa2cpLCBzY3JpcHRsZXQpCisKICAgICBkZWYgd3JpdGVfaWZfZXhpc3RzKGYsIHBrZywgdmFyKToKICAgICAgICAgZGVmIGVuY29kZShzdHIpOgogICAgICAgICAgICAgaW1wb3J0IGNvZGVjcwpAQCAtMTM5OCw2ICsxNDczLDggQEAKICAgICAgICAgd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdBTExPV19FTVBUWScpCiAgICAgICAgIHdyaXRlX2lmX2V4aXN0cyhzZiwgcGtnLCAnRklMRVMnKQogICAgICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ0NPTkZGSUxFUycpCisgICAgICAgIHByb2Nlc3NfcG9zdGluc3Rfb25fdGFyZ2V0KHBrZywgZC5nZXRWYXIoIk1MUFJFRklYIikpCisgICAgICAgIGFkZF9zZXRfZV90b19zY3JpcHRsZXRzKHBrZykKICAgICAgICAgd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdwa2dfcG9zdGluc3QnKQogICAgICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ3BrZ19wb3N0cm0nKQogICAgICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ3BrZ19wcmVpbnN0JykKQEAgLTE1NDEsNyArMTYxOCw3IEBACiAgICAgc2hsaWJzd29ya19kaXIgPSBkLmdldFZhcignU0hMSUJTV09SS0RJUicpCiAKICAgICAjIFRha2Ugc2hhcmVkIGxvY2sgc2luY2Ugd2UncmUgb25seSByZWFkaW5nLCBub3Qgd3JpdGluZwotICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUoZC5leHBhbmQoIiR7UEFDS0FHRUxPQ0t9IikpCisgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShkLmV4cGFuZCgiJHtQQUNLQUdFTE9DS30iKSwgVHJ1ZSkKIAogICAgIGRlZiBsaW51eF9zbyhmaWxlLCBuZWVkZWQsIHNvbmFtZXMsIHJlbmFtZXMsIHBrZ3Zlcik6CiAgICAgICAgIG5lZWRzX2xkY29uZmlnID0gRmFsc2UKQEAgLTE3MzIsNiArMTgwOSw5IEBACiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgogICAgICAgICBiYi5kZWJ1ZygyLCAiY2FsY3VsYXRpbmcgc2hsaWIgcmVxdWlyZW1lbnRzIGZvciAlcyIgJSBwa2cpCiAKKyAgICAgICAgcHJpdmF0ZV9saWJzID0gZC5nZXRWYXIoJ1BSSVZBVEVfTElCU18nICsgcGtnKSBvciBkLmdldFZhcignUFJJVkFURV9MSUJTJykgb3IgIiIKKyAgICAgICAgcHJpdmF0ZV9saWJzID0gcHJpdmF0ZV9saWJzLnNwbGl0KCkKKwogICAgICAgICBkZXBzID0gbGlzdCgpCiAgICAgICAgIGZvciBuIGluIG5lZWRlZFtwa2ddOgogICAgICAgICAgICAgIyBpZiBuIGlzIGluIHByaXZhdGUgbGlicmFyaWVzLCBkb24ndCB0cnkgdG8gc2VhcmNoIHByb3ZpZGVyIGZvciBpdApAQCAtMTgyMyw3ICsxOTAzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnY29uZmlnX25lZWRlZFtwa2ddICs9IGV4cC5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgpCiAKICAgICAjIFRha2Ugc2hhcmVkIGxvY2sgc2luY2Ugd2UncmUgb25seSByZWFkaW5nLCBub3Qgd3JpdGluZwotICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUoZC5leHBhbmQoIiR7UEFDS0FHRUxPQ0t9IikpCisgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShkLmV4cGFuZCgiJHtQQUNLQUdFTE9DS30iKSwgVHJ1ZSkKIAogICAgIGZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKICAgICAgICAgcGtnc19maWxlID0gb3MucGF0aC5qb2luKHNobGlic3dvcmtfZGlyLCBwa2cgKyAiLnBjbGlzdCIpCkBAIC0yMTU2LDExICsyMjM2LDkgQEAKIGRvX3BhY2thZ2VbdmFyZGVwc10gKz0gIiR7UEFDS0FHRUJVSUxEUEtHRH0gJHtQQUNLQUdFU1BMSVRGVU5DU30gJHtQQUNLQUdFRlVOQ1N9ICR7QGdlbl9wYWNrYWdldmFyKGQpfSIKIGFkZHRhc2sgcGFja2FnZSBhZnRlciBkb19pbnN0YWxsCiAKLVBBQ0tBR0VMT0NLID0gIiR7U1RBR0lOR19ESVJ9L3BhY2thZ2Utb3V0cHV0LmxvY2siCiBTU1RBVEVUQVNLUyArPSAiZG9fcGFja2FnZSIKIGRvX3BhY2thZ2VbY2xlYW5kaXJzXSA9ICIke1BLR0RFU1R9ICR7UEtHREVTVFdPUkt9IgogZG9fcGFja2FnZVtzc3RhdGUtcGxhaW5kaXJzXSA9ICIke1BLR0R9ICR7UEtHREVTVH0gJHtQS0dERVNUV09SS30iCi1kb19wYWNrYWdlW3NzdGF0ZS1sb2NrZmlsZS1zaGFyZWRdID0gIiR7UEFDS0FHRUxPQ0t9IgogZG9fcGFja2FnZV9zZXRzY2VuZVtkaXJzXSA9ICIke1NUQUdJTkdfRElSfSIKIAogcHl0aG9uIGRvX3BhY2thZ2Vfc2V0c2NlbmUgKCkgewpAQCAtMjE3NSwxMCArMjI1MywxMyBAQAogYWRkdGFzayBwYWNrYWdlZGF0YSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fcGFja2FnZQogCiBTU1RBVEVUQVNLUyArPSAiZG9fcGFja2FnZWRhdGEiCisjIFBBQ0tBR0VMT0NLIHByb3RlY3RzIHJlYWRlcnMgb2YgUEtHREFUQV9ESVIgYWdhaW5zdCB3cml0ZXMKKyMgd2hpbHN0IGNvZGUgaXMgcmVhZGluZyBpbiBkb19wYWNrYWdlCitQQUNLQUdFTE9DSyA9ICIke1NUQUdJTkdfRElSfS9wYWNrYWdlLW91dHB1dC5sb2NrIgogZG9fcGFja2FnZWRhdGFbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtQS0dERVNUV09SS30iCiBkb19wYWNrYWdlZGF0YVtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtQS0dEQVRBX0RJUn0iCi1kb19wYWNrYWdlZGF0YVtzc3RhdGUtbG9ja2ZpbGUtc2hhcmVkXSA9ICIke1BBQ0tBR0VMT0NLfSIKLWRvX3BhY2thZ2VkYXRhW3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORX0iCitkb19wYWNrYWdlZGF0YVtzc3RhdGUtbG9ja2ZpbGVdID0gIiR7UEFDS0FHRUxPQ0t9IgorZG9fcGFja2FnZWRhdGFbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FX0FSQ0h9IgogCiBweXRob24gZG9fcGFja2FnZWRhdGFfc2V0c2NlbmUgKCkgewogICAgIHNzdGF0ZV9zZXRzY2VuZShkKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2RlYi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2RlYi5iYmNsYXNzCmluZGV4IDVkMjk3OTMuLjJlOGQxN2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9kZWIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfZGViLmJiY2xhc3MKQEAgLTIzMCw5ICsyMzAsMTEgQEAKICAgICAgICAgICAgICMgICAnPicgPSBncmVhdGVyIG9yIGVxdWFsCiAgICAgICAgICAgICAjIGFkanVzdCB0aGVzZSB0byB0aGUgJzw8JyBhbmQgJz4+JyBlcXVpdmFsZW50cwogICAgICAgICAgICAgIwotICAgICAgICAgICAgZm9yIGRlcCBpbiB2YXI6Ci0gICAgICAgICAgICAgICAgaWYgJygnIGluIGRlcDoKLSAgICAgICAgICAgICAgICAgICAgbmV3ZGVwID0gcmUuc3ViKHInWyg6KV0nLCAnX18nLCBkZXApCisgICAgICAgICAgICBmb3IgZGVwIGluIGxpc3QodmFyLmtleXMoKSk6CisgICAgICAgICAgICAgICAgaWYgJygnIGluIGRlcCBvciAnLycgaW4gZGVwOgorICAgICAgICAgICAgICAgICAgICBuZXdkZXAgPSByZS5zdWIocidbKDopL10nLCAnX18nLCBkZXApCisgICAgICAgICAgICAgICAgICAgIGlmIG5ld2RlcC5zdGFydHN3aXRoKCJfXyIpOgorICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZGVwID0gIkEiICsgbmV3ZGVwCiAgICAgICAgICAgICAgICAgICAgIGlmIG5ld2RlcCAhPSBkZXA6CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJbbmV3ZGVwXSA9IHZhcltkZXBdCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdmFyW2RlcF0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcwppbmRleCA2YzFmZGFhLi5hMGIzNGZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCkBAIC04LDcgKzgsNyBAQAogUEtHV1JJVEVESVJJUEsgPSAiJHtXT1JLRElSfS9kZXBsb3ktaXBrcyIKIAogIyBQcm9ncmFtIHRvIGJlIHVzZWQgdG8gYnVpbGQgb3BrZyBwYWNrYWdlcwotT1BLR0JVSUxEQ01EID8/PSAib3BrZy1idWlsZCIKK09QS0dCVUlMRENNRCA/Pz0gIm9wa2ctYnVpbGQgLVogeHoiCiAKIE9QS0dfQVJHUyArPSAiLS1mb3JjZV9wb3N0aW5zdGFsbCAtLXByZWZlci1hcmNoLXRvLXZlcnNpb24iCiBPUEtHX0FSR1MgKz0gIiR7QFsnJywgJy0tbm8taW5zdGFsbC1yZWNvbW1lbmRzJ11bZC5nZXRWYXIoIk5PX1JFQ09NTUVOREFUSU9OUyIpID09ICIxIl19IgpAQCAtMzA3LDcgKzMwNyw3IEBACiAKIHB5dGhvbiAoKSB7CiAgICAgaWYgZC5nZXRWYXIoJ1BBQ0tBR0VTJykgIT0gJyc6Ci0gICAgICAgIGRlcHMgPSAnIG9wa2ctdXRpbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgdmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcKKyAgICAgICAgZGVwcyA9ICcgb3BrZy11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCB2aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IHh6LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JwogICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3BhY2thZ2Vfd3JpdGVfaXBrJywgJ2RlcGVuZHMnLCBkZXBzKQogICAgICAgICBkLnNldFZhckZsYWcoJ2RvX3BhY2thZ2Vfd3JpdGVfaXBrJywgJ2Zha2Vyb290JywgIjEiKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX3JwbS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX3JwbS5iYmNsYXNzCmluZGV4IGE0MjhkMzAuLjIxYWRhMzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9ycG0uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfcnBtLmJiY2xhc3MKQEAgLTM4Miw2ICszODIsMTIgQEAKIAogICAgICAgICAjIEdhdGhlciBzcGVjaWFsIHNyYy9maXJzdCBwYWNrYWdlIGRhdGEKICAgICAgICAgaWYgc3JjbmFtZSA9PSBzcGxpdG5hbWU6CisgICAgICAgICAgICBhcmNoaXZpbmcgPSBkLmdldFZhckZsYWcoJ0FSQ0hJVkVSX01PREUnLCAnc3JwbScpID09ICcxJyBhbmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnYXJjaGl2ZXInLCBkKQorICAgICAgICAgICAgaWYgYXJjaGl2aW5nIGFuZCBzcmNsaWNlbnNlICE9IHNwbGl0bGljZW5zZToKKyAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGUgU1JQTSBwcm9kdWNlZCBtYXkgbm90IGhhdmUgdGhlIGNvcnJlY3Qgb3ZlcmFsbCBzb3VyY2UgbGljZW5zZSBpbiB0aGUgTGljZW5zZSB0YWcuIFRoaXMgaXMgZHVlIHRvIHRoZSBMSUNFTlNFIGZvciB0aGUgcHJpbWFyeSBwYWNrYWdlIGFuZCBTUlBNIGNvbmZsaWN0aW5nLiIpCisKKyAgICAgICAgICAgIHNyY2xpY2Vuc2UgICAgID0gc3BsaXRsaWNlbnNlCiAgICAgICAgICAgICBzcmNyZGVwZW5kcyAgICA9IHNwbGl0cmRlcGVuZHMKICAgICAgICAgICAgIHNyY3JyZWNvbW1lbmRzID0gc3BsaXRycmVjb21tZW5kcwogICAgICAgICAgICAgc3JjcnN1Z2dlc3RzICAgPSBzcGxpdHJzdWdnZXN0cwpAQCAtNDIxLDggKzQyNyw3IEBACiAgICAgICAgICAgICBzcGVjX3ByZWFtYmxlX2JvdHRvbS5hcHBlbmQoJ1JlbGVhc2U6ICVzJyAlIHNwbGl0cmVsZWFzZSkKICAgICAgICAgaWYgc3JjZXBvY2ggIT0gc3BsaXRlcG9jaDoKICAgICAgICAgICAgIHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnRXBvY2g6ICVzJyAlIHNwbGl0ZXBvY2gpCi0gICAgICAgIGlmIHNyY2xpY2Vuc2UgIT0gc3BsaXRsaWNlbnNlOgotICAgICAgICAgICAgc3BlY19wcmVhbWJsZV9ib3R0b20uYXBwZW5kKCdMaWNlbnNlOiAlcycgJSBzcGxpdGxpY2Vuc2UpCisgICAgICAgIHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnTGljZW5zZTogJXMnICUgc3BsaXRsaWNlbnNlKQogICAgICAgICBzcGVjX3ByZWFtYmxlX2JvdHRvbS5hcHBlbmQoJ0dyb3VwOiAlcycgJSBzcGxpdHNlY3Rpb24pCiAKICAgICAgICAgaWYgc3JjY3VzdG9tdGFnc2NodW5rICE9IHNwbGl0Y3VzdG9tdGFnc2NodW5rOgpAQCAtNjY1LDEzICs2NzAsMTUgQEAKICAgICBjbWQgPSBycG1idWlsZAogICAgIGNtZCA9IGNtZCArICIgLS1ub2NsZWFuIC0tbm9kZXBzIC0tc2hvcnQtY2lyY3VpdCAtLXRhcmdldCAiICsgcGtnYXJjaCArICIgLS1idWlsZHJvb3QgIiArIHBrZ2QKICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfdG9wZGlyICIgKyB3b3JrZGlyICsgIicgLS1kZWZpbmUgJ19ycG1kaXIgIiArIHBrZ3dyaXRlZGlyICsgIiciCi0gICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX2J1aWxkZGlyICIgKyBkLmdldFZhcignUycpICsgIiciCisgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX2J1aWxkZGlyICIgKyBkLmdldFZhcignQicpICsgIiciCiAgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX2J1aWxkX25hbWVfZm10ICUle05BTUV9LSUle1ZFUlNJT059LSUle1JFTEVBU0V9LiUle0FSQ0h9LnJwbSciCiAgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX3VzZV9pbnRlcm5hbF9kZXBlbmRlbmN5X2dlbmVyYXRvciAwJyIKICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfYmluYXJpZXNfaW5fbm9hcmNoX3BhY2thZ2VzX3Rlcm1pbmF0ZV9idWlsZCAwJyIKICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfYnVpbGRfaWRfbGlua3Mgbm9uZSciCiAgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX2JpbmFyeV9wYXlsb2FkIHc2VC54emRpbyciCiAgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX3NvdXJjZV9wYXlsb2FkIHc2VC54emRpbyciCisgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnY2xhbXBfbXRpbWVfdG9fc291cmNlX2RhdGVfZXBvY2ggMSciCisgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX2J1aWxkaG9zdCByZXByb2R1Y2libGUnIgogICAgIGlmIHBlcmZpbGVkZXBzOgogICAgICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfX2ZpbmRfcmVxdWlyZXMgIiArIG91dGRlcGVuZHMgKyAiJyIKICAgICAgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX19maW5kX3Byb3ZpZGVzICIgKyBvdXRwcm92aWRlcyArICInIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlZ3JvdXAuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZWdyb3VwLmJiY2xhc3MKaW5kZXggZWVhMmU1Yi4uZDU0MGQ0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlZ3JvdXAuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2Vncm91cC5iYmNsYXNzCkBAIC01NiwzICs1Niw0IEBACiAgICAgICAgIGJiLmZhdGFsKCJQbGVhc2UgZW5zdXJlIHRoYXQgeW91ciBzZXR0aW5nIG9mIFZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXIgKCVzKSBtYXRjaGVzIHRoZSBlbnRyaWVzIGVuYWJsZWQgaW4gRElTVFJPX0ZFQVRVUkVTIiAlIGluaXRtYW4pCiB9CiAKK0NWRV9QUk9EVUNUID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcwppbmRleCA4ZjM1Y2I0Li4yZmM2OTI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhdGNoLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzCkBAIC0yNiw5ICsyNiwyMyBAQAogCiBweXRob24gcGF0Y2hfdGFza19wYXRjaF9wcmVmdW5jKCkgewogICAgICMgUHJlZnVuYyBmb3IgZG9fcGF0Y2gKLSAgICBmdW5jID0gZC5nZXRWYXIoJ0JCX1JVTlRBU0snKQogICAgIHNyY3N1YmRpciA9IGQuZ2V0VmFyKCdTJykKIAorICAgIHdvcmtkaXIgPSBvcy5wYXRoLmFic3BhdGgoZC5nZXRWYXIoJ1dPUktESVInKSkKKyAgICB0ZXN0c3JjZGlyID0gb3MucGF0aC5hYnNwYXRoKHNyY3N1YmRpcikKKyAgICBpZiAodGVzdHNyY2RpciArIG9zLnNlcCkuc3RhcnRzd2l0aCh3b3JrZGlyICsgb3Muc2VwKToKKyAgICAgICAgIyBEb3VibGUtY2hlY2sgdGhhdCBlaXRoZXIgd29ya2RpciBvciBTIG9yIHNvbWUgZGlyZWN0b3J5IGluLWJldHdlZW4gaXMgYSBnaXQgcmVwb3NpdG9yeQorICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgIHdoaWxlIHRlc3RzcmNkaXIgIT0gJy8nOgorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHRlc3RzcmNkaXIsICcuZ2l0JykpOgorICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiB0ZXN0c3JjZGlyID09IHdvcmtkaXI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHRlc3RzcmNkaXIgPSBvcy5wYXRoLmRpcm5hbWUodGVzdHNyY2RpcikKKyAgICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAgYmIuZmF0YWwoJ1BBVENIVE9PTCA9ICJnaXQiIHNldCBmb3Igc291cmNlIHRyZWUgdGhhdCBpcyBub3QgYSBnaXQgcmVwb3NpdG9yeS4gUmVmdXNpbmcgdG8gY29udGludWUgYXMgdGhhdCBtYXkgcmVzdWx0IGluIGNvbW1pdHMgYmVpbmcgbWFkZSBpbiB5b3VyIG1ldGFkYXRhIHJlcG9zaXRvcnkuJykKKwogICAgIHBhdGNoZGlyID0gb3MucGF0aC5qb2luKHNyY3N1YmRpciwgJ3BhdGNoZXMnKQogICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGNoZGlyKToKICAgICAgICAgaWYgb3MubGlzdGRpcihwYXRjaGRpcik6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKaW5kZXggMzBmY2VmYy4uM2RhMzUwNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcwpAQCAtMjAsNiArMjAsOSBAQAogU0RLSU1BR0VfRkVBVFVSRVMgPz89ICJkZXYtcGtncyBkYmctcGtncyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2FwaS1kb2N1bWVudGF0aW9uJywgJ2RvYy1wa2dzJywgJycsIGQpfSIKIFNES0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWSA9ICcke0Bjb21wbGVtZW50YXJ5X2dsb2JzKCJTREtJTUFHRV9GRUFUVVJFUyIsIGQpfScKIAorUEFDS0FHRV9BUkNIU19hcHBlbmRfdGFzay1wb3B1bGF0ZS1zZGsgPSAiIHNkay1wcm92aWRlcy1kdW1teS10YXJnZXQiCitTREtfUEFDS0FHRV9BUkNIUyArPSAic2RrLXByb3ZpZGVzLWR1bW15LSR7U0RLUEtHU1VGRklYfSIKKwogIyBMaXN0IG9mIGxvY2FsZXMgdG8gaW5zdGFsbCwgb3IgImFsbCIgZm9yIGFsbCBvZiB0aGVtLCBvciB1bnNldCBmb3Igbm9uZS4KIFNES0lNQUdFX0xJTkdVQVMgPz0gImFsbCIKIApAQCAtMzcsMTIgKzQwLDEzIEBACiAKIFRPT0xDSEFJTl9IT1NUX1RBU0sgPz0gIm5hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QgcGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0iCiBUT09MQ0hBSU5fSE9TVF9UQVNLX0FUVEVNUFRPTkxZID89ICIiCi1UT09MQ0hBSU5fVEFSR0VUX1RBU0sgPz0gIiR7QG11bHRpbGliX3BrZ19leHRlbmQoZCwgJ3BhY2thZ2Vncm91cC1jb3JlLXN0YW5kYWxvbmUtc2RrLXRhcmdldCcpfSIKK1RPT0xDSEFJTl9UQVJHRVRfVEFTSyA/PSAiJHtAbXVsdGlsaWJfcGtnX2V4dGVuZChkLCAncGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0Jyl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAbXVsdGlsaWJfcGtnX2V4dGVuZChkLCAndGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teScpfSIKIFRPT0xDSEFJTl9UQVJHRVRfVEFTS19BVFRFTVBUT05MWSA/PSAiIgogVE9PTENIQUlOX09VVFBVVE5BTUUgPz0gIiR7U0RLX05BTUV9LXRvb2xjaGFpbi0ke1NES19WRVJTSU9OfSIKIAogU0RLX1JERVBFTkRTID0gIiR7VE9PTENIQUlOX1RBUkdFVF9UQVNLfSAke1RPT0xDSEFJTl9IT1NUX1RBU0t9IgotU0RLX0RFUEVORFMgPSAidmlydHVhbC9mYWtlcm9vdC1uYXRpdmUgcGl4ei1uYXRpdmUgY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZSIKK1NES19ERVBFTkRTID0gInZpcnR1YWwvZmFrZXJvb3QtbmF0aXZlIHh6LW5hdGl2ZSBjcm9zcy1sb2NhbGVkZWYtbmF0aXZlICR7TUxQUkVGSVh9cWVtdXdyYXBwZXItY3Jvc3MiCiBTREtfREVQRU5EU19hcHBlbmRfbGliYy1nbGliYyA9ICIgbmF0aXZlc2RrLWdsaWJjLWxvY2FsZSIKIAogIyBXZSB3YW50IHRoZSBNVUxUSUFSQ0hfVEFSR0VUX1NZUyB0byBwb2ludCB0byB0aGUgVFVORV9QS0dBUkNILCBub3QgUEFDS0FHRV9BUkNIIGFzIGl0CkBAIC0xNTIsNyArMTU2LDcgQEAKIGRvX3BvcHVsYXRlX3Nka1tjbGVhbmRpcnNdID0gIiR7U0RLREVQTE9ZRElSfSIKIGRvX3BvcHVsYXRlX3Nka1tzc3RhdGUtaW5wdXRkaXJzXSA9ICIke1NES0RFUExPWURJUn0iCiBkb19wb3B1bGF0ZV9zZGtbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7U0RLX0RFUExPWX0iCi1kb19wb3B1bGF0ZV9zZGtbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FfSR7U0RLTUFDSElORX0iCitkb19wb3B1bGF0ZV9zZGtbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FX0FSQ0h9JHtTREtNQUNISU5FfSIKIAogZmFrZXJvb3QgY3JlYXRlX3Nka19maWxlcygpIHsKIAljcCAke0NPUkVCQVNFfS9zY3JpcHRzL3JlbG9jYXRlX3Nkay5weSAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vCkBAIC0yMjEsNyArMjI1LDcgQEAKIAkjIFBhY2thZ2UgaXQgdXAKIAlta2RpciAtcCAke1NES0RFUExPWURJUn0KIAljZCAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0KLQl0YXIgJHtTREtUQVJPUFRTfSAtY2YgLSAuIHwgcGl4eiA+ICR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS50YXIueHoKKwl0YXIgJHtTREtUQVJPUFRTfSAtY2YgLSAuIHwgeHogLVQgMCA+ICR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS50YXIueHoKIH0KIAogZmFrZXJvb3QgY3JlYXRlX3NoYXIoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCmluZGV4IDJkZDIxMjMuLmUxYmJhNDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCkBAIC0xNjIsMTggKzE2MiwxNiBAQAogICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIG9zLnJlbmFtZShzZGtiYXNlcGF0aCwgdGVtcF9zZGtiYXNlcGF0aCkKKyAgICAgICAgY21kcHJlZml4ID0gJy4gJXMgLjsgJyAlIGNvbmZfaW5pdHBhdGgKKyAgICAgICAgbG9nZmlsZSA9IGQuZ2V0VmFyKCdXT1JLRElSJykgKyAnL3Rhc2tsaXN0X2JiX2xvZy50eHQnCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGNtZHByZWZpeCA9ICcuICVzIC47ICcgJSBjb25mX2luaXRwYXRoCi0gICAgICAgICAgICBsb2dmaWxlID0gZC5nZXRWYXIoJ1dPUktESVInKSArICcvdGFza2xpc3RfYmJfbG9nLnR4dCcKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvZS5jb3B5X2J1aWxkc3lzdGVtLmNoZWNrX3NzdGF0ZV90YXNrX2xpc3QoZCwgZ2V0X3Nka19pbnN0YWxsX3RhcmdldHMoZCksIHRhc2tsaXN0ZmlsZSwgY21kcHJlZml4PWNtZHByZWZpeCwgY3dkPXRlbXBfc2RrYmFzZXBhdGgsIGxvZ2ZpbGU9bG9nZmlsZSkKLSAgICAgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgbXNnID0gJ0ZhaWxlZCB0byBnZW5lcmF0ZSBmaWx0ZXJlZCB0YXNrIGxpc3QgZm9yIGV4dGVuc2libGUgU0RLOlxuJXMnICUgIGUuc3Rkb3V0LnJzdHJpcCgpCi0gICAgICAgICAgICAgICAgaWYgJ2F0dGVtcHRlZCB0byBleGVjdXRlIHVuZXhwZWN0ZWRseSBhbmQgc2hvdWxkIGhhdmUgYmVlbiBzZXRzY2VuZWQnIGluIGUuc3Rkb3V0OgotICAgICAgICAgICAgICAgICAgICBtc2cgKz0gJ1xuLS0tLS0tLS0tLVxuXG5OT1RFOiAiYXR0ZW1wdGVkIHRvIGV4ZWN1dGUgdW5leHBlY3RlZGx5IGFuZCBzaG91bGQgaGF2ZSBiZWVuIHNldHNjZW5lZCIgZXJyb3JzIGluZGljYXRlIHRoaXMgbWF5IGJlIGNhdXNlZCBieSBtaXNzaW5nIHNzdGF0ZSBhcnRpZmFjdHMgdGhhdCB3ZXJlIGxpa2VseSBwcm9kdWNlZCBpbiBlYXJsaWVyIGJ1aWxkcywgYnV0IGhhdmUgYmVlbiBzdWJzZXF1ZW50bHkgZGVsZXRlZCBmb3Igc29tZSByZWFzb24uXG4nCi0gICAgICAgICAgICAgICAgYmIuZmF0YWwobXNnKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVuYW1lKHRlbXBfc2RrYmFzZXBhdGgsIHNka2Jhc2VwYXRoKQorICAgICAgICAgICAgb2UuY29weV9idWlsZHN5c3RlbS5jaGVja19zc3RhdGVfdGFza19saXN0KGQsIGdldF9zZGtfaW5zdGFsbF90YXJnZXRzKGQpLCB0YXNrbGlzdGZpbGUsIGNtZHByZWZpeD1jbWRwcmVmaXgsIGN3ZD10ZW1wX3Nka2Jhc2VwYXRoLCBsb2dmaWxlPWxvZ2ZpbGUpCisgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBtc2cgPSAnRmFpbGVkIHRvIGdlbmVyYXRlIGZpbHRlcmVkIHRhc2sgbGlzdCBmb3IgZXh0ZW5zaWJsZSBTREs6XG4lcycgJSAgZS5zdGRvdXQucnN0cmlwKCkKKyAgICAgICAgICAgIGlmICdhdHRlbXB0ZWQgdG8gZXhlY3V0ZSB1bmV4cGVjdGVkbHkgYW5kIHNob3VsZCBoYXZlIGJlZW4gc2V0c2NlbmVkJyBpbiBlLnN0ZG91dDoKKyAgICAgICAgICAgICAgICBtc2cgKz0gJ1xuLS0tLS0tLS0tLVxuXG5OT1RFOiAiYXR0ZW1wdGVkIHRvIGV4ZWN1dGUgdW5leHBlY3RlZGx5IGFuZCBzaG91bGQgaGF2ZSBiZWVuIHNldHNjZW5lZCIgZXJyb3JzIGluZGljYXRlIHRoaXMgbWF5IGJlIGNhdXNlZCBieSBtaXNzaW5nIHNzdGF0ZSBhcnRpZmFjdHMgdGhhdCB3ZXJlIGxpa2VseSBwcm9kdWNlZCBpbiBlYXJsaWVyIGJ1aWxkcywgYnV0IGhhdmUgYmVlbiBzdWJzZXF1ZW50bHkgZGVsZXRlZCBmb3Igc29tZSByZWFzb24uXG4nCisgICAgICAgICAgICBiYi5mYXRhbChtc2cpCisgICAgICAgIG9zLnJlbmFtZSh0ZW1wX3Nka2Jhc2VwYXRoLCBzZGtiYXNlcGF0aCkKICAgICAgICAgIyBDbGVhbiBvdXQgcmVzaWR1ZSBvZiBydW5uaW5nIGJpdGJha2UsIHdoaWNoIGNoZWNrX3NzdGF0ZV90YXNrX2xpc3QoKQogICAgICAgICAjIHdpbGwgZWZmZWN0aXZlbHkgZG8KICAgICAgICAgY2xlYW5fZXNka19idWlsZGRpcihkLCBzZGtiYXNlcGF0aCkKQEAgLTUzNSw3ICs1MzMsNyBAQAogCiBpbnN0YWxsX3Rvb2xzKCkgewogCWluc3RhbGwgLWQgJHtTREtfT1VUUFVUfS8ke1NES1BBVEhOQVRJVkV9JHtiaW5kaXJfbmF0aXZlc2RrfQotCXNjcmlwdHM9ImRldnRvb2wgcmVjaXBldG9vbCBvZS1maW5kLW5hdGl2ZS1zeXNyb290IHJ1bnFlbXUqIgorCXNjcmlwdHM9ImRldnRvb2wgcmVjaXBldG9vbCBvZS1maW5kLW5hdGl2ZS1zeXNyb290IHJ1bnFlbXUqIHdpYyIKIAlmb3Igc2NyaXB0IGluICRzY3JpcHRzOyBkbwogCQlmb3Igc2NyaXB0Zm4gaW4gYGZpbmQgJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9LyR7c2NyaXB0cmVscGF0aH0gLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLW5hbWUgIiRzY3JpcHQiYDsgZG8KIAkJCWxuciAke3NjcmlwdGZufSAke1NES19PVVRQVVR9LyR7U0RLUEFUSE5BVElWRX0ke2JpbmRpcl9uYXRpdmVzZGt9L2BiYXNlbmFtZSAkc2NyaXB0Zm5gCkBAIC03MjQsNiArNzIyLDYgQEAKIGRvX3BvcHVsYXRlX3Nka19leHRbY2xlYW5kaXJzXSA9ICIke1NES0VYVERFUExPWURJUn0iCiBkb19wb3B1bGF0ZV9zZGtfZXh0W3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7U0RLRVhUREVQTE9ZRElSfSIKIGRvX3BvcHVsYXRlX3Nka19leHRbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7U0RLX0RFUExPWX0iCi1kb19wb3B1bGF0ZV9zZGtfZXh0W3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORX0iCitkb19wb3B1bGF0ZV9zZGtfZXh0W3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORV9BUkNIfSIKIAogYWRkdGFzayBwb3B1bGF0ZV9zZGtfZXh0IGFmdGVyIGRvX3Nka19kZXBlbmRzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B0ZXN0LXBlcmwuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHRlc3QtcGVybC5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YmM0MGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B0ZXN0LXBlcmwuYmJjbGFzcwpAQCAtMCwwICsxLDMwIEBACitpbmhlcml0IHB0ZXN0CisKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0NPUkVCQVNFfS9tZXRhL2ZpbGVzOiIKKworU1JDX1VSSSArPSAiZmlsZTovL3B0ZXN0LXBlcmwvcnVuLXB0ZXN0IgorCitkb19pbnN0YWxsX3B0ZXN0X3BlcmwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfQorCWlmIFsgISAtZiAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9wdGVzdC1wZXJsL3J1bi1wdGVzdCAke0R9JHtQVEVTVF9QQVRIfQorCWZpCisJY3AgLXIgJHtCfS90ICR7RH0ke1BURVNUX1BBVEh9CisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9Cit9CisKK0ZJTEVTXyR7UE59LXB0ZXN0X3ByZXBlbmQgPSAiJHtQVEVTVF9QQVRIfS90LyogJHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QgIgorCitSREVQRU5EU18ke1BOfS1wdGVzdF9wcmVwZW5kID0gInBlcmwgIgorCithZGR0YXNrIGluc3RhbGxfcHRlc3RfcGVybCBhZnRlciBkb19pbnN0YWxsX3B0ZXN0X2Jhc2UgYmVmb3JlIGRvX3BhY2thZ2UKKworcHl0aG9uICgpIHsKKyAgICBpZiBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZCkgYW5kIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcycsIGQpOgorICAgICAgICBkLnNldFZhckZsYWcoJ2RvX2luc3RhbGxfcHRlc3RfcGVybCcsICdmYWtlcm9vdCcsICcxJykKKworICAgICMgUmVtb3ZlIGFsbCAnKnB0ZXN0X3BlcmwnIHRhc2tzIHdoZW4gcHRlc3QgaXMgbm90IGVuYWJsZWQKKyAgICBpZiBub3QoZC5nZXRWYXIoJ1BURVNUX0VOQUJMRUQnKSA9PSAiMSIpOgorICAgICAgICBmb3IgaSBpbiBbJ2RvX2luc3RhbGxfcHRlc3RfcGVybCddOgorICAgICAgICAgICAgYmIuYnVpbGQuZGVsdGFzayhpLCBkKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRmODA1MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKQEAgLTAsMCArMSwxNTAgQEAKKyMKKyMgcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKKyMKKyMgVGhpcyBiYmNsYXNzIGlzIG1haW5seSByZXNwb25zaWJsZSB0byBkZXRlcm1pbmUgU09VUkNFX0RBVEVfRVBPQ0ggb24gYSBwZXIgcmVjaXBlIGJhc2UuCisjIFdlIG5lZWQgdG8gc2V0IGEgcmVjaXBlIHNwZWNpZmljIFNPVVJDRV9EQVRFX0VQT0NIIGluIGVhY2ggcmVjaXBlIGVudmlyb25tZW50IGZvciB2YXJpb3VzIHRhc2tzLgorIyBPbmUgd2F5IHdvdWxkIGJlIHRvIG1vZGlmeSBhbGwgcmVjaXBlcyBvbmUtYnktb25lIHRvIHNwZWNpZnkgU09VUkNFX0RBVEVfRVBPQ0ggZXhwbGljaXRseSwgCisjIGJ1dCB0aGF0IGlzIG5vdCByZWFsaXN0aWMgYXMgdGhlcmUgYXJlIGh1bmRyZWRzIChwcm9iYWJseSB0aG91c2FuZHMpIG9mIHJlY2lwZXMgaW4gdmFyaW91cyBtZXRhLWxheWVycy4KKyMgVGhlcmVmb3JlIHdlIGRvIGl0IHRoaXMgY2xhc3MuIAorIyBBZnRlciBzb3VyY2VzIGFyZSB1bnBhY2tlZCBidXQgYmVmb3JlIHRoZXkgYXJlIHBhdGNoZWQsIHdlIHRyeSB0byBkZXRlcm1pbmUgdGhlIHZhbHVlIGZvciBTT1VSQ0VfREFURV9FUE9DSC4KKyMKKyMgVGhlcmUgYXJlIDQgd2F5cyB0byBkZXRlcm1pbmUgU09VUkNFX0RBVEVfRVBPQ0g6CisjCisjIDEuIFVzZSB2YWx1ZSBmcm9tIF9fc291cmNlX2RhdGVfZXBvY2gudHh0IGZpbGUgaWYgdGhpcyBmaWxlIGV4aXN0cy4gCisjICAgIFRoaXMgZmlsZSB3YXMgbW9zdCBsaWtlbHkgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgYnVpbGQgYnkgb25lIG9mIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyAyLDMsNC4gCisjICAgIEluIHByaW5jaXBsZSwgaXQgY291bGQgYWN0dWFsbHkgcHJvdmlkZWQgYnkgYSByZWNpcGUgdmlhIFNSQ19VUkkKKyMKKyMgSWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QsIGZpcnN0IHRyeSB0byBkZXRlcm1pbmUgdGhlIHZhbHVlIGZvciBTT1VSQ0VfREFURV9FUE9DSDoKKyMKKyMgMi4gSWYgd2UgZGV0ZWN0ZWQgYSBmb2xkZXIgLmdpdCwgdXNlIC5naXQgbGFzdCBjb21taXQgZGF0ZSB0aW1lc3RhbXAsIGFzIGdpdCBkb2VzIG5vdCBhbGxvdyBjaGVja2luZyBvdXQKKyMgICAgZmlsZXMgYW5kIHByZXNlcnZpbmcgdGhlaXIgdGltZXN0YW1wcy4KKyMKKyMgMy4gVXNlIHRoZSBtdGltZSBvZiAia25vd24iIGZpbGVzIHN1Y2ggYXMgTkVXUywgQ0hBTkdMRUxPRywgLi4uCisjICAgIFRoaXMgd2lsbCB3b3JrIGZpbmUgZm9yIGFueSB3ZWxsIGtlcHQgcmVwb3NpdG9yeSBkaXN0cmlidXRlZCB2aWEgdGFyYmFsbHMuCisjCisjIDQuIElmIHRoZSBhYm92ZSBzdGVwcyBmYWlsLCB3ZSBuZWVkIHRvIGNoZWNrIGFsbCBwYWNrYWdlIHNvdXJjZSBmaWxlcyBhbmQgdXNlIHRoZSB5b3VuZ2VzdCBmaWxlIG9mIHRoZSBzb3VyY2UgdHJlZS4KKyMKKyMgT25jZSB0aGUgdmFsdWUgb2YgU09VUkNFX0RBVEVfRVBPQ0ggaXMgZGV0ZXJtaW5lZCwgaXQgaXMgc3RvcmVkIGluIHRoZSByZWNpcGUgJHtXT1JLRElSfS9zb3VyY2VfZGF0ZV9lcG9jaCBmb2xkZXIKKyMgaW4gYSB0ZXh0IGZpbGUgIl9fc291cmNlX2RhdGVfZXBvY2gudHh0Jy4gSWYgdGhpcyBmaWxlIGlzIGZvdW5kIGJ5IG90aGVyIHJlY2lwZSB0YXNrLCB0aGUgdmFsdWUgaXMgZXhwb3J0ZWQgaW4KKyMgdGhlIFNPVVJDRV9EQVRFX0VQT0NIIHZhcmlhYmxlIGluIHRoZSB0YXNrIGVudmlyb25tZW50LiBUaGlzIGlzIGRvbmUgaW4gYW4gYW5vbnltb3VzIHB5dGhvbiBmdW5jdGlvbiwgCisjIHNvIFNPVVJDRV9EQVRFX0VQT0NIIGlzIGd1YXJhbnRlZWQgdG8gZXhpc3QgZm9yIGFsbCB0YXNrcyB0aGUgbWF5IHVzZSBpdCAoZG9fY29uZmlndXJlLCBkb19jb21waWxlLCBkb19wYWNrYWdlLCAuLi4pCisKK0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyA/Pz0gJzEnCitpbmhlcml0ICR7QG9lLnV0aWxzLmlmZWxzZShkLmdldFZhcignQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTJykgPT0gJzEnLCAncmVwcm9kdWNpYmxlX2J1aWxkX3NpbXBsZScsICcnKX0KKworU0RFX0RJUiA9IiR7V09SS0RJUn0vc291cmNlLWRhdGUtZXBvY2giCitTREVfRklMRSA9ICIke1NERV9ESVJ9L19fc291cmNlX2RhdGVfZXBvY2gudHh0IgorCitTU1RBVEVUQVNLUyArPSAiZG9fZGVwbG95X3NvdXJjZV9kYXRlX2Vwb2NoIgorCitkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2ggKCkgeworICAgIGVjaG8gIkRlcGxveWluZyBTREUgdG8gJHtTREVfRElSfS4iCit9CisKK3B5dGhvbiBkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2hfc2V0c2NlbmUgKCkgeworICAgIHNzdGF0ZV9zZXRzY2VuZShkKQorfQorCitkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2hbZGlyc10gPSAiJHtTREVfRElSfSIKK2RvX2RlcGxveV9zb3VyY2VfZGF0ZV9lcG9jaFtzc3RhdGUtcGxhaW5kaXJzXSA9ICIke1NERV9ESVJ9IgorYWRkdGFzayBkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2hfc2V0c2NlbmUKK2FkZHRhc2sgZG9fZGVwbG95X3NvdXJjZV9kYXRlX2Vwb2NoIGJlZm9yZSBkb19jb25maWd1cmUgYWZ0ZXIgZG9fcGF0Y2gKKworZGVmIGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9rbm93bl9maWxlcyhkLCBwYXRoKToKKyAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IDAKKyAgICBrbm93bl9maWxlcyA9IHNldChbIk5FV1MiLCAiQ2hhbmdlTG9nIiwgIkNoYW5nZWxvZyIsICJDSEFOR0VTIl0pCisgICAgZm9yIGZpbGUgaW4ga25vd25fZmlsZXM6CisgICAgICAgIGZpbGVwYXRoID0gb3MucGF0aC5qb2luKHBhdGgsZmlsZSkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZXBhdGgpOgorICAgICAgICAgICAgbXRpbWUgPSBpbnQob3MucGF0aC5nZXRtdGltZShmaWxlcGF0aCkpCisgICAgICAgICAgICAjIFRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lICJrbm93bl9maWxlIiBwcmVzZW50LCBpZiBzbywgdXNlIHRoZSB5b3VuZ2VzdCBvbmUKKyAgICAgICAgICAgIGlmIG10aW1lID4gc291cmNlX2RhdGVfZXBvY2g6CisgICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBtdGltZQorICAgIHJldHVybiBzb3VyY2VfZGF0ZV9lcG9jaAorCitkZWYgZmluZF9naXRfZm9sZGVyKHBhdGgpOgorICAgIGV4Y2x1ZGUgPSBzZXQoWyJ0ZW1wIiwgImxpY2Vuc2UtZGVzdGRpciIsICJwYXRjaGVzIiwgInJlY2lwZS1zeXNyb290LW5hdGl2ZSIsICJyZWNpcGUtc3lzcm9vdCIsICJwc2V1ZG8iLCAiYnVpbGQiLCAiaW1hZ2UiLCAic3lzcm9vdC1kZXN0ZGlyIl0pCisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGF0aCwgdG9wZG93bj1UcnVlKToKKyAgICAgICAgZGlyc1s6XSA9IFtkIGZvciBkIGluIGRpcnMgaWYgZCBub3QgaW4gZXhjbHVkZV0KKyAgICAgICAgaWYgJy5naXQnIGluIGRpcnM6CisgICAgICAgICAgICAjYmIud2FybigiZm91bmQgcm9vdDolcyIgJSAoc3RyKHJvb3QpKSkKKyAgICAgICAgICAgIHJldHVybiByb290CisgICAgIAorZGVmIGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9naXQoZCwgcGF0aCk6CisgICAgc291cmNlX2RhdGVfZXBvY2ggPSAwCisgICAgaWYgImdpdDovLyIgaW4gZC5nZXRWYXIoJ1NSQ19VUkknKToKKyAgICAgICAgZ2l0cGF0aCA9IGZpbmRfZ2l0X2ZvbGRlcihkLmdldFZhcignV09SS0RJUicpKQorICAgICAgICBpZiBnaXRwYXRoICE9IE5vbmU6CisgICAgICAgICAgICBpbXBvcnQgc3VicHJvY2VzcworICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oZ2l0cGF0aCwiLmdpdCIpKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gaW50KHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnZ2l0JywnbG9nJywnLTEnLCctLXByZXR0eT0lY3QnXSwgY3dkPXBhdGgpKQorICAgICAgICAgICAgICAgICAgICAjYmIud2FybigiSkIgKioqIGdpdHBhdGg6JXMgc2RlOiAlZCIgJSAoZ2l0cGF0aCxzb3VyY2VfZGF0ZV9lcG9jaCkpCisgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJnaXQgcmVwbyBwYXRoOiVzIHNkZTogJWQiICUgKGdpdHBhdGgsc291cmNlX2RhdGVfZXBvY2gpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBncmVwZXhjOgorICAgICAgICAgICAgICAgICAgICAjYmIud2FybiggIkV4cGVjdGVkIGdpdCByZXBvc2l0b3J5IG5vdCBmb3VuZCwgKHBhdGg6ICVzKSBlcnJvcjolZCIgJSAoZ2l0cGF0aCwgZ3JlcGV4Yy5yZXR1cm5jb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIkV4cGVjdGVkIGdpdCByZXBvc2l0b3J5IG5vdCBmb3VuZCwgKHBhdGg6ICVzKSBlcnJvcjolZCIgJSAoZ2l0cGF0aCwgZ3JlcGV4Yy5yZXR1cm5jb2RlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJiLndhcm4oIkZhaWxlZCB0byBmaW5kIGEgZ2l0IHJlcG9zaXRvcnkgZm9yIHBhdGg6JXMiICUgKHBhdGgpKQorICAgIHJldHVybiBzb3VyY2VfZGF0ZV9lcG9jaAorICAgICAgICAgICAgCitweXRob24gZG9fY3JlYXRlX3NvdXJjZV9kYXRlX2Vwb2NoX3N0YW1wKCkgeworICAgIHBhdGggPSBkLmdldFZhcignUycpCisgICAgaWYgbm90IG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgIGJiLndhcm4oIlVuYWJsZSB0byBkZXRlcm1pbmUgc291cmNlX2RhdGVfZXBvY2ghIHBhdGg6JXMiICUgcGF0aCkKKyAgICAgICAgcmV0dXJuCisKKyAgICBlcG9jaGZpbGUgPSBkLmdldFZhcignU0RFX0ZJTEUnKQorICAgIGlmIG9zLnBhdGguaXNmaWxlKGVwb2NoZmlsZSk6CisgICAgICAgIGJiLmRlYnVnKDEsICIgcGF0aDogJXMgcmV1c2luZyBfX3NvdXJjZV9kYXRlX2Vwb2NoLnR4dCIgJSBlcG9jaGZpbGUpCisgICAgICAgIHJldHVybgorIAorICAgICMgVHJ5IHRvIGRldGVjdC9maW5kIGEgZ2l0IHJlcG9zaXRvcnkKKyAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9naXQoZCwgcGF0aCkKKyAgICBpZiBzb3VyY2VfZGF0ZV9lcG9jaCA9PSAwOgorICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9rbm93bl9maWxlcyhkLCBwYXRoKQorICAgIGlmIHNvdXJjZV9kYXRlX2Vwb2NoID09IDA6CisgICAgICAgICMgRG8gaXQgdGhlIGhhcmQgd2F5OiBjaGVjayBhbGwgZmlsZXMgYW5kIGZpbmQgdGhlIHlvdW5nZXN0IG9uZS4uLgorICAgICAgICBmaWxlbmFtZV9kYmcgPSBOb25lCisgICAgICAgIGV4Y2x1ZGUgPSBzZXQoWyJ0ZW1wIiwgImxpY2Vuc2UtZGVzdGRpciIsICJwYXRjaGVzIiwgInJlY2lwZS1zeXNyb290LW5hdGl2ZSIsICJyZWNpcGUtc3lzcm9vdCIsICJwc2V1ZG8iLCAiYnVpbGQiLCAiaW1hZ2UiLCAic3lzcm9vdC1kZXN0ZGlyIl0pCisgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBhdGgsIHRvcGRvd249VHJ1ZSk6CisgICAgICAgICAgICBmaWxlcyA9IFtmIGZvciBmIGluIGZpbGVzIGlmIG5vdCBmWzBdID09ICcuJ10KKyAgICAgICAgICAgIGRpcnNbOl0gPSBbZCBmb3IgZCBpbiBkaXJzIGlmIGQgbm90IGluIGV4Y2x1ZGVdCisKKyAgICAgICAgICAgIGZvciBmbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihyb290LCBmbmFtZSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG10aW1lID0gaW50KG9zLnBhdGguZ2V0bXRpbWUoZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBtdGltZSA9IDAKKyAgICAgICAgICAgICAgICBpZiBtdGltZSA+IHNvdXJjZV9kYXRlX2Vwb2NoOgorICAgICAgICAgICAgICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IG10aW1lCisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lX2RiZyA9IGZpbGVuYW1lCisKKyAgICAgICAgaWYgZmlsZW5hbWVfZGJnICE9IE5vbmU6CisgICAgICAgICAgICBiYi5kZWJ1ZygxLCIgU09VUkNFX0RBVEVfRVBPQ0ggJWQgZGVyaXZlZCBmcm9tOiAlcyIgJSAoc291cmNlX2RhdGVfZXBvY2gsIGZpbGVuYW1lX2RiZykpCisKKyAgICAgICAgaWYgc291cmNlX2RhdGVfZXBvY2ggPT0gMDoKKyAgICAgICAgICAgICMgZW1wdHkgZm9sZGVyLCBub3QgYSBzaW5nbGUgZmlsZSAuLi4KKyAgICAgICAgICAgICMga2VybmVsIHNvdXJjZSBkb191bnBhY2sgaXMgc3BlY2lhbCBjYXNlZAorICAgICAgICAgICAgaWYgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbCcsIGQpOgorICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJVbmFibGUgdG8gZGV0ZXJtaW5lIHNvdXJjZV9kYXRlX2Vwb2NoISBwYXRoOiVzIiAlIHBhdGgpCisKKyAgICBiYi51dGlscy5ta2RpcmhpZXIoZC5nZXRWYXIoJ1NERV9ESVInKSkKKyAgICB3aXRoIG9wZW4oZXBvY2hmaWxlLCAndycpIGFzIGY6CisgICAgICAgIGYud3JpdGUoc3RyKHNvdXJjZV9kYXRlX2Vwb2NoKSkKK30KKworQkJfSEFTSEJBU0VfV0hJVEVMSVNUICs9ICJTT1VSQ0VfREFURV9FUE9DSCIKKworcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcignQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTJykgPT0gJzEnOgorICAgICAgICBkLmFwcGVuZFZhckZsYWcoImRvX3VucGFjayIsICJwb3N0ZnVuY3MiLCAiIGRvX2NyZWF0ZV9zb3VyY2VfZGF0ZV9lcG9jaF9zdGFtcCIpCisgICAgICAgIGVwb2NoZmlsZSA9IGQuZ2V0VmFyKCdTREVfRklMRScpCisgICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gIjAiCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGVwb2NoZmlsZSk6CisgICAgICAgICAgICB3aXRoIG9wZW4oZXBvY2hmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBmLnJlYWQoKQorICAgICAgICAgICAgYmIuZGVidWcoMSwgInNvdXJjZV9kYXRlX2Vwb2NoIHN0YW1wIGZvdW5kIC0tLT4gc3RhbXAgJXMiICUgc291cmNlX2RhdGVfZXBvY2gpCisgICAgICAgIGQuc2V0VmFyKCdTT1VSQ0VfREFURV9FUE9DSCcsIHNvdXJjZV9kYXRlX2Vwb2NoKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGRfc2ltcGxlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZF9zaW1wbGUuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTYwZGVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGRfc2ltcGxlLmJiY2xhc3MKQEAgLTAsMCArMSwxMCBAQAorIyBTZXR1cCBkZWZhdWx0IGVudmlyb25tZW50IGZvciByZXByb2R1Y2libGUgYnVpbGRzLgorCitCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMgPSAiMSIKKworZXhwb3J0IFBZVEhPTkhBU0hTRUVEID0gIjAiCitleHBvcnQgUEVSTF9IQVNIX1NFRUQgPSAiMCIKK2V4cG9ydCBTT1VSQ0VfREFURV9FUE9DSCA/Pz0gIjE1MjA1OTg4OTYiCisKK1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTID8/PSAiMTUyMDU5ODg5NiIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnMtcG9zdGNvbW1hbmRzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcwppbmRleCBhNGU2MjdmLi41NTIyMjA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcwpAQCAtNTYsNiArNTYsNyBAQAogU09SVF9QQVNTV0RfUE9TVFBST0NFU1NfQ09NTUFORCA/Pz0gIiBzb3J0X3Bhc3N3ZDsgIgogcHl0aG9uICgpIHsKICAgICBkLmFwcGVuZFZhcignUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQnLCAnJHtTT1JUX1BBU1NXRF9QT1NUUFJPQ0VTU19DT01NQU5EfScpCisgICAgZC5hcHBlbmRWYXIoJ1JPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJywgJ3Jvb3Rmc19yZXByb2R1Y2libGU7JykKIH0KIAogc3lzdGVtZF9jcmVhdGVfdXNlcnMgKCkgewpAQCAtMjU2LDEwICsyNTcsMTcgQEAKICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKG1hbmlmZXN0X25hbWUpLCBtYW5pZmVzdF9saW5rKQogfQogCi0jIENhbiBiZSB1c2UgdG8gY3JlYXRlIC9ldGMvdGltZXN0YW1wIGR1cmluZyBpbWFnZSBjb25zdHJ1Y3Rpb24gdG8gZ2l2ZSBhIHJlYXNvbmFibHkKKyMgQ2FuIGJlIHVzZWQgdG8gY3JlYXRlIC9ldGMvdGltZXN0YW1wIGR1cmluZyBpbWFnZSBjb25zdHJ1Y3Rpb24gdG8gZ2l2ZSBhIHJlYXNvbmFibHkKICMgc2FuZSBkZWZhdWx0IHRpbWUgc2V0dGluZwogcm9vdGZzX3VwZGF0ZV90aW1lc3RhbXAgKCkgewotCWRhdGUgLXUgKyU0WSUybSUyZCUySCUyTSUyUyA+JHtJTUFHRV9ST09URlN9L2V0Yy90aW1lc3RhbXAKKwlpZiBbICIke1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTfSIgIT0gIiIgXTsgdGhlbgorCQkjIENvbnZlcnQgVVRDIGludG8gJTRZJTJtJTJkJTJIJTJNJTJTCisJCXNmb3JtYXR0ZWQ9YGRhdGUgLXUgLWQgQCR7UkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlN9ICslNFklMm0lMmQlMkglMk0lMlNgCisJZWxzZQorCQlzZm9ybWF0dGVkPWBkYXRlIC11ICslNFklMm0lMmQlMkglMk0lMlNgCisJZmkKKwllY2hvICRzZm9ybWF0dGVkID4gJHtJTUFHRV9ST09URlN9L2V0Yy90aW1lc3RhbXAKKwliYm5vdGUgInJvb3Rmc191cGRhdGVfdGltZXN0YW1wOiBzZXQgL2V0Yy90aW1lc3RhbXAgdG8gJHNmb3JtYXR0ZWQiCiB9CiAKICMgUHJldmVudCBYIGZyb20gYmVpbmcgc3RhcnRlZApAQCAtMzI4LDMgKzMzNiwxNiBAQAogICAgICAgICAgICAgaWYgJ3Vuc2F0aXNmaWVkIHJlY29tbWVuZGF0aW9uIGZvcicgaW4gbGluZToKICAgICAgICAgICAgICAgICBiYi53YXJuKCdbbG9nX2NoZWNrXSAlczogJXMnICUgKGQuZ2V0VmFyKCdQTicpLCBsaW5lKSkKIH0KKworIyBQZXJmb3JtIGFueSBhZGRpdGlvbmFsIGFkanVzdG1lbnRzIG5lZWRlZCB0byBtYWtlIHJvb3RmIGJpbmFyeSByZXByb2R1Y2libGUKK3Jvb3Rmc19yZXByb2R1Y2libGUgKCkgeworCWlmIFsgIiR7UkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlN9IiAhPSAiIiBdOyB0aGVuCisJCSMgQ29udmVydCBVVEMgaW50byAlNFklMm0lMmQlMkglMk0lMlMKKwkJc2Zvcm1hdHRlZD1gZGF0ZSAtdSAtZCBAJHtSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGU30gKyU0WSUybSUyZCUySCUyTSUyU2AKKwkJZWNobyAkc2Zvcm1hdHRlZCA+ICR7SU1BR0VfUk9PVEZTfS9ldGMvdmVyc2lvbgorCQliYm5vdGUgInJvb3Rmc19yZXByb2R1Y2libGU6IHNldCAvZXRjL3ZlcnNpb24gdG8gJHNmb3JtYXR0ZWQiCisKKwkJZmluZCAke0lNQUdFX1JPT1RGU30vZXRjL2djb25mIC1uYW1lICclZ2NvbmYueG1sJyAtcHJpbnQwIHwgeGFyZ3MgLTByIFwKKwkJc2VkIC1pIC1lICdzQFxibXRpbWU9IlswLTldWzAtOV0qIkBtdGltZT0iJyR7UkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlN9JyJAZycKKwlmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKaW5kZXggMWZlYjc5NC4uZTBlNTdjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCkBAIC0zMzYsNyArMzM2LDcgQEAKICAgICByZXR1cm4gIiIKIAogZGVmIGdldF9maWxlc3lzdGVtX2lkKHBhdGgpOgotICAgIHN0YXR1cywgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJzdGF0IC1mIC1jICclcycgJXMiICUgKCIldCIsIHBhdGgpKQorICAgIHN0YXR1cywgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJzdGF0IC1mIC1jICclcycgJyVzJyIgJSAoIiV0IiwgcGF0aCkpCiAgICAgaWYgc3RhdHVzID09IDA6CiAgICAgICAgIHJldHVybiByZXN1bHQKICAgICBlbHNlOgpAQCAtNDU2LDEzICs0NTYsMjkgQEAKIAogICAgIHJldHVybiBtZXNzYWdlcwogCisjIFBhdGNoIGJlZm9yZSAyLjcgY2FuJ3QgaGFuZGxlIGFsbCB0aGUgZmVhdHVyZXMgaW4gZ2l0LXN0eWxlIGRpZmZzLiAgU29tZQorIyBwYXRjaGVzIG1heSBpbmNvcnJlY3RseSBhcHBseSwgYW5kIG90aGVycyB3b24ndCBhcHBseSBhdCBhbGwuCitkZWYgY2hlY2tfcGF0Y2hfdmVyc2lvbihzYW5pdHlfZGF0YSk6CisgICAgZnJvbSBkaXN0dXRpbHMudmVyc2lvbiBpbXBvcnQgTG9vc2VWZXJzaW9uCisgICAgaW1wb3J0IHJlLCBzdWJwcm9jZXNzCisKKyAgICB0cnk6CisgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsicGF0Y2giLCAiLS12ZXJzaW9uIl0sIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgICAgIHZlcnNpb24gPSByZS5zZWFyY2gociJbMC05Ll0rIiwgcmVzdWx0LnNwbGl0bGluZXMoKVswXSkuZ3JvdXAoKQorICAgICAgICBpZiBMb29zZVZlcnNpb24odmVyc2lvbikgPCBMb29zZVZlcnNpb24oIjIuNyIpOgorICAgICAgICAgICAgcmV0dXJuICJZb3VyIHZlcnNpb24gb2YgcGF0Y2ggaXMgb2xkZXIgdGhhbiAyLjcgYW5kIGhhcyBidWdzIHdoaWNoIHdpbGwgYnJlYWsgYnVpbGRzLiBQbGVhc2UgaW5zdGFsbCBhIG5ld2VyIHZlcnNpb24gb2YgcGF0Y2guXG4iCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICByZXR1cm4gIlVuYWJsZSB0byBleGVjdXRlIHBhdGNoIC0tdmVyc2lvbiwgZXhpdCBjb2RlICVkOlxuJXNcbiIgJSAoZS5yZXR1cm5jb2RlLCBlLm91dHB1dCkKKwogIyBVbnBhdGNoZWQgdmVyc2lvbnMgb2YgbWFrZSAzLjgyIGFyZSBrbm93biB0byBiZSBicm9rZW4uICBTZWUgR05VIFNhdmFubmFoIEJ1ZyAzMDYxMi4KICMgVXNlIGEgbW9kaWZpZWQgcmVwcm9kdWNlciBmcm9tIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzMwNjEyIHRvIHZhbGlkYXRlLgogZGVmIGNoZWNrX21ha2VfdmVyc2lvbihzYW5pdHlfZGF0YSk6CiAgICAgZnJvbSBkaXN0dXRpbHMudmVyc2lvbiBpbXBvcnQgTG9vc2VWZXJzaW9uCiAgICAgc3RhdHVzLCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoIm1ha2UgLS12ZXJzaW9uIikKICAgICBpZiBzdGF0dXMgIT0gMDoKLSAgICAgICAgcmV0dXJuICJVbmFibGUgdG8gZXhlY3V0ZSBtYWtlIC0tdmVyc2lvbiwgZXhpdCBjb2RlICVzXG4iICUgc3RhdHVzCisgICAgICAgIHJldHVybiAiVW5hYmxlIHRvIGV4ZWN1dGUgbWFrZSAtLXZlcnNpb24sIGV4aXQgY29kZSAlZFxuIiAlIHN0YXR1cwogICAgIHZlcnNpb24gPSByZXN1bHQuc3BsaXQoKVsyXQogICAgIGlmIExvb3NlVmVyc2lvbih2ZXJzaW9uKSA9PSBMb29zZVZlcnNpb24oIjMuODIiKToKICAgICAgICAgIyBDb25zdHJ1Y3QgYSB0ZXN0IGZpbGUKQEAgLTQ5OCw3ICs1MTQsNyBAQAogICAgIGZyb20gZGlzdHV0aWxzLnZlcnNpb24gaW1wb3J0IExvb3NlVmVyc2lvbgogICAgIHN0YXR1cywgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJ0YXIgLS12ZXJzaW9uIikKICAgICBpZiBzdGF0dXMgIT0gMDoKLSAgICAgICAgcmV0dXJuICJVbmFibGUgdG8gZXhlY3V0ZSB0YXIgLS12ZXJzaW9uLCBleGl0IGNvZGUgJXNcbiIgJSBzdGF0dXMKKyAgICAgICAgcmV0dXJuICJVbmFibGUgdG8gZXhlY3V0ZSB0YXIgLS12ZXJzaW9uLCBleGl0IGNvZGUgJWRcbiIgJSBzdGF0dXMKICAgICB2ZXJzaW9uID0gcmVzdWx0LnNwbGl0KClbM10KICAgICBpZiBMb29zZVZlcnNpb24odmVyc2lvbikgPCBMb29zZVZlcnNpb24oIjEuMjQiKToKICAgICAgICAgcmV0dXJuICJZb3VyIHZlcnNpb24gb2YgdGFyIGlzIG9sZGVyIHRoYW4gMS4yNCBhbmQgaGFzIGJ1Z3Mgd2hpY2ggd2lsbCBicmVhayBidWlsZHMuIFBsZWFzZSBpbnN0YWxsIGEgbmV3ZXIgdmVyc2lvbiBvZiB0YXIuXG4iCkBAIC01MTEsNyArNTI3LDcgQEAKICAgICBmcm9tIGRpc3R1dGlscy52ZXJzaW9uIGltcG9ydCBMb29zZVZlcnNpb24KICAgICBzdGF0dXMsIHJlc3VsdCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgiZ2l0IC0tdmVyc2lvbiAyPiAvZGV2L251bGwiKQogICAgIGlmIHN0YXR1cyAhPSAwOgotICAgICAgICByZXR1cm4gIlVuYWJsZSB0byBleGVjdXRlIGdpdCAtLXZlcnNpb24sIGV4aXQgY29kZSAlc1xuIiAlIHN0YXR1cworICAgICAgICByZXR1cm4gIlVuYWJsZSB0byBleGVjdXRlIGdpdCAtLXZlcnNpb24sIGV4aXQgY29kZSAlZFxuIiAlIHN0YXR1cwogICAgIHZlcnNpb24gPSByZXN1bHQuc3BsaXQoKVsyXQogICAgIGlmIExvb3NlVmVyc2lvbih2ZXJzaW9uKSA8IExvb3NlVmVyc2lvbigiMS44LjMuMSIpOgogICAgICAgICByZXR1cm4gIllvdXIgdmVyc2lvbiBvZiBnaXQgaXMgb2xkZXIgdGhhbiAxLjguMy4xIGFuZCBoYXMgYnVncyB3aGljaCB3aWxsIGJyZWFrIGJ1aWxkcy4gUGxlYXNlIGluc3RhbGwgYSBuZXdlciB2ZXJzaW9uIG9mIGdpdC5cbiIKQEAgLTU5Niw2ICs2MTIsNyBAQAogICAgIGltcG9ydCBzdGF0CiAKICAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX21ha2VfdmVyc2lvbihkKSkKKyAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX3BhdGNoX3ZlcnNpb24oZCkpCiAgICAgc3RhdHVzLmFkZHJlc3VsdChjaGVja190YXJfdmVyc2lvbihkKSkKICAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX2dpdF92ZXJzaW9uKGQpKQogICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfcGVybF9tb2R1bGVzKGQpKQpAQCAtNjkyLDcgKzcwOSw3IEBACiAgICAgdHJ5OgogICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwsICJlbl9VUy5VVEYtOCIpCiAgICAgZXhjZXB0IGxvY2FsZS5FcnJvcjoKLSAgICAgICAgcmFpc2Vfc2FuaXR5X2Vycm9yKCJZb3Ugc3lzdGVtIG5lZWRzIHRvIHN1cHBvcnQgdGhlIGVuX1VTLlVURi04IGxvY2FsZS4iLCBkKQorICAgICAgICByYWlzZV9zYW5pdHlfZXJyb3IoIllvdXIgc3lzdGVtIG5lZWRzIHRvIHN1cHBvcnQgdGhlIGVuX1VTLlVURi04IGxvY2FsZS4iLCBkKQogCiBkZWYgY2hlY2tfc2FuaXR5X2V2ZXJ5YnVpbGQoc3RhdHVzLCBkKToKICAgICBpbXBvcnQgb3MsIHN0YXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9wYWNrYWdlX2ZlZWQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9wYWNrYWdlX2ZlZWQuYmJjbGFzcwppbmRleCBmMDNjNDgwLi43ZmYzYTM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcGFja2FnZV9mZWVkLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3BhY2thZ2VfZmVlZC5iYmNsYXNzCkBAIC00Myw0ICs0Myw0IEBACiB9CiAKIGRvX3BhY2thZ2VfaW5kZXhbZGVwZW5kc10gKz0gInNpZ25pbmcta2V5czpkb19kZXBsb3kiCi1kb19yb290ZnNbZGVwZW5kc10gKz0gInNpZ25pbmcta2V5czpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9fcm9vdGZzW2RlcGVuZHNdICs9ICJzaWduaW5nLWtleXM6ZG9fcG9wdWxhdGVfc3lzcm9vdCBnbnVwZy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9ycG0uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9ycG0uYmJjbGFzcwppbmRleCA0OTYxYjAzLi42NGFlN2NlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcnBtLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3JwbS5iYmNsYXNzCkBAIC02OCw4ICs2OCw0IEBACiBkb19wYWNrYWdlX2luZGV4W2RlcGVuZHNdICs9ICJzaWduaW5nLWtleXM6ZG9fZGVwbG95IgogZG9fcm9vdGZzW2RlcGVuZHNdICs9ICJzaWduaW5nLWtleXM6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAotIyBOZXdlciB2ZXJzaW9ucyBvZiBncGcgKGF0IGxlYXN0IDIuMS41IGFuZCAyLjIuMSkgaGF2ZSBpc3N1ZXMgd2hlbiBzaWduaW5nIG9jY3VycyBpbiBwYXJhbGxlbAotIyBzbyB1bmZvcnR1bmF0ZWx5IHRoZSBzaWduaW5nIG11c3QgYmUgZG9uZSBzZXJpYWxseS4gT25jZSB0aGUgdXBzdHJlYW0gcHJvYmxlbSBpcyBmaXhlZCwKLSMgdGhlIGZvbGxvd2luZyBsaW5lIG11c3QgYmUgcmVtb3ZlZCBvdGhlcndpc2Ugd2UgbG9vc2UgYWxsIHRoZSBpbnRyaW5zaWMgcGFyYWxsZWxpc20gZnJvbQotIyBiaXRiYWtlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIGNoZWNrIGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjIuCi1kb19wYWNrYWdlX3dyaXRlX3JwbVtsb2NrZmlsZXNdICs9ICIke1RNUERJUn0vZ3BnLmxvY2siCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gImdudXBnLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcwppbmRleCAxYWFkYTQwLi44NmJiODUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCkBAIC00Nyw2ICs0Nyw4IEBACiAgICAgICAgICJwcGMiOiAiZW5kaWFuLWJpZyBiaXQtMzIgcG93ZXJwYy1jb21tb24iLAogICAgICAgICAicHBjNjQiOiAiZW5kaWFuLWJpZyBiaXQtNjQgcG93ZXJwYy1jb21tb24iLAogICAgICAgICAicHBjNjRsZSIgOiAiZW5kaWFuLWxpdHRsZSBiaXQtNjQgcG93ZXJwYy1jb21tb24iLAorICAgICAgICAicmlzY3YzMiI6ICJlbmRpYW4tbGl0dGxlIGJpdC0zMiByaXNjdi1jb21tb24iLAorICAgICAgICAicmlzY3Y2NCI6ICJlbmRpYW4tbGl0dGxlIGJpdC02NCByaXNjdi1jb21tb24iLAogICAgICAgICAic2gzIjogImVuZGlhbi1saXR0bGUgYml0LTMyIHNoLWNvbW1vbiIsCiAgICAgICAgICJzaDQiOiAiZW5kaWFuLWxpdHRsZSBiaXQtMzIgc2gtY29tbW9uIiwKICAgICAgICAgInNwYXJjIjogImVuZGlhbi1iaWcgYml0LTMyIiwKQEAgLTU4LDYgKzYwLDcgQEAKICAgICAgICAgImRhcndpbjkiOiAiY29tbW9uLWRhcndpbiIsCiAgICAgICAgICJsaW51eCI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKICAgICAgICAgImxpbnV4LWdudSI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKKyAgICAgICAgImxpbnV4LWdudV9pbHAzMiI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKICAgICAgICAgImxpbnV4LWdudXgzMiI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKICAgICAgICAgImxpbnV4LWdudW4zMiI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKICAgICAgICAgImxpbnV4LWdudWVhYmkiOiAiY29tbW9uLWxpbnV4IGNvbW1vbi1nbGliYyIsCkBAIC03MywxMiArNzYsMTggQEAKICAgICB0YXJnZXRpbmZvID0gewogICAgICAgICAiYWFyY2g2NC1saW51eC1nbnUiOiAiYWFyY2g2NC1saW51eCIsCiAgICAgICAgICJhYXJjaDY0X2JlLWxpbnV4LWdudSI6ICJhYXJjaDY0X2JlLWxpbnV4IiwKKyAgICAgICAgImFhcmNoNjQtbGludXgtZ251X2lscDMyIjogImJpdC0zMiBhYXJjaDY0X2JlLWxpbnV4IGFybS0zMiIsCisgICAgICAgICJhYXJjaDY0X2JlLWxpbnV4LWdudV9pbHAzMiI6ICJiaXQtMzIgYWFyY2g2NF9iZS1saW51eCBhcm0tMzIiLAogICAgICAgICAiYWFyY2g2NC1saW51eC1tdXNsIjogImFhcmNoNjQtbGludXgiLAogICAgICAgICAiYWFyY2g2NF9iZS1saW51eC1tdXNsIjogImFhcmNoNjRfYmUtbGludXgiLAogICAgICAgICAiYXJtLWxpbnV4LWdudWVhYmkiOiAiYXJtLWxpbnV4IiwKICAgICAgICAgImFybS1saW51eC1tdXNsZWFiaSI6ICJhcm0tbGludXgiLAogICAgICAgICAiYXJtZWItbGludXgtZ251ZWFiaSI6ICJhcm1lYi1saW51eCIsCiAgICAgICAgICJhcm1lYi1saW51eC1tdXNsZWFiaSI6ICJhcm1lYi1saW51eCIsCisgICAgICAgICJtaWNyb2JsYXplZWItbGludXgiIDogIm1pY3JvYmxhemUtbGludXgiLAorICAgICAgICAibWljcm9ibGF6ZWViLWxpbnV4LW11c2wiIDogIm1pY3JvYmxhemUtbGludXgiLAorICAgICAgICAibWljcm9ibGF6ZWVsLWxpbnV4IiA6ICJtaWNyb2JsYXplLWxpbnV4IiwKKyAgICAgICAgIm1pY3JvYmxhemVlbC1saW51eC1tdXNsIiA6ICJtaWNyb2JsYXplLWxpbnV4IiwKICAgICAgICAgIm1pcHMtbGludXgtbXVzbCI6ICJtaXBzLWxpbnV4IiwKICAgICAgICAgIm1pcHNlbC1saW51eC1tdXNsIjogIm1pcHNlbC1saW51eCIsCiAgICAgICAgICJtaXBzNjQtbGludXgtbXVzbCI6ICJtaXBzNjQtbGludXgiLApAQCAtOTUsNiArMTA0LDEwIEBACiAgICAgICAgICJwb3dlcnBjNjQtbGludXgtbXVzbHNwZSI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGM2NC1saW51eCIsCiAgICAgICAgICJwb3dlcnBjNjQtbGludXgiOiAicG93ZXJwYy1saW51eCIsCiAgICAgICAgICJwb3dlcnBjNjQtbGludXgtbXVzbCI6ICJwb3dlcnBjLWxpbnV4IiwKKyAgICAgICAgInJpc2N2MzItbGludXgiOiAicmlzY3YzMi1saW51eCIsCisgICAgICAgICJyaXNjdjMyLWxpbnV4LW11c2wiOiAicmlzY3YzMi1saW51eCIsCisgICAgICAgICJyaXNjdjY0LWxpbnV4IjogInJpc2N2NjQtbGludXgiLAorICAgICAgICAicmlzY3Y2NC1saW51eC1tdXNsIjogInJpc2N2NjQtbGludXgiLAogICAgICAgICAieDg2XzY0LWN5Z3dpbiI6ICJiaXQtNjQiLAogICAgICAgICAieDg2XzY0LWRhcndpbiI6ICJiaXQtNjQiLAogICAgICAgICAieDg2XzY0LWRhcndpbjkiOiAiYml0LTY0IiwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCmluZGV4IGUzMGZiZTEuLjBiMjg4NTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcwpAQCAtMjgsNiArMjgsOSBAQAogU1NUQVRFX0RVUFdISVRFTElTVCA9ICIke0RFUExPWV9ESVJfSU1BR0V9LyAke0RFUExPWV9ESVJ9L2xpY2Vuc2VzLyAke0RFUExPWV9ESVJfUlBNfS9ub2FyY2gvIgogIyBBdm9pZCBkb2Nib29rL3NnbWwgY2F0YWxvZyB3YXJuaW5ncyBmb3Igbm93CiBTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke1NUQUdJTkdfRVRDRElSX05BVElWRX0vc2dtbCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L3NnbWwiCisjIHNkay1wcm92aWRlcy1kdW1teS1uYXRpdmVzZGsgYW5kIG5hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkgb3ZlcmxhcCBmb3IgZGlmZmVyZW50IFNES01BQ0hJTkUKK1NTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7REVQTE9ZX0RJUl9SUE19L3Nka19wcm92aWRlc19kdW1teV9uYXRpdmVzZGsvICR7REVQTE9ZX0RJUl9JUEt9L3Nkay1wcm92aWRlcy1kdW1teS1uYXRpdmVzZGsvIgorU1NUQVRFX0RVUFdISVRFTElTVCArPSAiJHtERVBMT1lfRElSX1JQTX0vYnVpbGR0b29sc19kdW1teV9uYXRpdmVzZGsvICR7REVQTE9ZX0RJUl9JUEt9L2J1aWxkdG9vbHMtZHVtbXktbmF0aXZlc2RrLyIKICMgQXJjaGl2ZSB0aGUgc291cmNlcyBmb3IgbWFueSBhcmNoaXRlY3R1cmVzIGluIG9uZSBkZXBsb3kgZm9sZGVyCiBTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke0RFUExPWV9ESVJfU1JDfSIKIApAQCAtNDUsNyArNDgsOCBAQAogICAgICR7U0RLX0FSQ0h9XyR7UEFDS0FHRV9BUkNIfSBcCiAgICAgYWxsYXJjaCBcCiAgICAgJHtQQUNLQUdFX0FSQ0h9IFwKLSAgICAke01BQ0hJTkV9IgorICAgICR7UEFDS0FHRV9FWFRSQV9BUkNIU30gXAorICAgICR7TUFDSElORV9BUkNIfSIKIAogU1NUQVRFX01BTk1BQ0ggPz0gIiR7U1NUQVRFX1BLR0FSQ0h9IgogCkBAIC01MzgsMTUgKzU0MiwxNSBAQAogICAgIHN0YWdpbmdfaG9zdCA9IGQuZ2V0VmFyKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnKQogICAgIHNzdGF0ZV9idWlsZGRpciA9IGQuZ2V0VmFyKCdTU1RBVEVfQlVJTERESVInKQogCisgICAgc3N0YXRlX3NlZF9jbWQgPSAic2VkIC1pIC1lICdzOiVzOkZJWE1FU1RBR0lOR0RJUkhPU1Q6ZyciICUgc3RhZ2luZ19ob3N0CiAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MtY2FuYWRpYW4nLCBkKToKICAgICAgICAgc3N0YXRlX2dyZXBfY21kID0gImdyZXAgLWwgLWUgJyVzJyIgJSAoc3RhZ2luZ19ob3N0KQotICAgICAgICBzc3RhdGVfc2VkX2NtZCA9ICJzZWQgLWkgLWUgJ3M6JXM6RklYTUVTVEFHSU5HRElSSE9TVDpnJyIgJSAoc3RhZ2luZ19ob3N0KQogICAgIGVsaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MnLCBkKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zc3NkaycsIGQpOgogICAgICAgICBzc3RhdGVfZ3JlcF9jbWQgPSAiZ3JlcCAtbCAtZSAnJXMnIC1lICclcyciICUgKHN0YWdpbmdfdGFyZ2V0LCBzdGFnaW5nX2hvc3QpCi0gICAgICAgIHNzdGF0ZV9zZWRfY21kID0gInNlZCAtaSAtZSAnczolczpGSVhNRVNUQUdJTkdESVJUQVJHRVQ6ZzsgczolczpGSVhNRVNUQUdJTkdESVJIT1NUOmcnIiAlIChzdGFnaW5nX3RhcmdldCwgc3RhZ2luZ19ob3N0KQorICAgICAgICBzc3RhdGVfc2VkX2NtZCArPSAiIC1lICdzOiVzOkZJWE1FU1RBR0lOR0RJUlRBUkdFVDpnJyIgJSBzdGFnaW5nX3RhcmdldAogICAgIGVsc2U6Ci0gICAgICAgIHNzdGF0ZV9ncmVwX2NtZCA9ICJncmVwIC1sIC1lICclcyciICUgKHN0YWdpbmdfdGFyZ2V0KQotICAgICAgICBzc3RhdGVfc2VkX2NtZCA9ICJzZWQgLWkgLWUgJ3M6JXM6RklYTUVTVEFHSU5HRElSVEFSR0VUOmcnIiAlIChzdGFnaW5nX3RhcmdldCkKKyAgICAgICAgc3N0YXRlX2dyZXBfY21kID0gImdyZXAgLWwgLWUgJyVzJyAtZSAnJXMnIiAlIChzdGFnaW5nX3RhcmdldCwgc3RhZ2luZ19ob3N0KQorICAgICAgICBzc3RhdGVfc2VkX2NtZCArPSAiIC1lICdzOiVzOkZJWE1FU1RBR0lOR0RJUlRBUkdFVDpnJyIgJSBzdGFnaW5nX3RhcmdldAogCiAgICAgZXh0cmFfc3RhZ2luZ19maXhtZXMgPSBkLmdldFZhcignRVhUUkFfU1RBR0lOR19GSVhNRVMnKSBvciAnJwogICAgIGZvciBmaXhtZXZhciBpbiBleHRyYV9zdGFnaW5nX2ZpeG1lcy5zcGxpdCgpOgpAQCAtODQ1LDcgKzg0OSw3IEBACiAgICAgICAgICAgICAgICAgbWlzc2VkLmFwcGVuZCh0YXNrKQogICAgICAgICAgICAgICAgIGJiLmRlYnVnKDIsICJTU3RhdGU6IFVuc3VjY2Vzc2Z1bCBmZXRjaCB0ZXN0IGZvciAlcyIgJSBzcmN1cmkpCiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzUHJvZ3Jlc3MoIkNoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eSIsIGxlbih0YXNrbGlzdCkgLSB0aHJlYWRfd29ya2VyLnRhc2tzLnFzaXplKCkpLCBkKQorICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzUHJvZ3Jlc3MobXNnLCBsZW4odGFza2xpc3QpIC0gdGhyZWFkX3dvcmtlci50YXNrcy5xc2l6ZSgpKSwgZCkKIAogICAgICAgICB0YXNrbGlzdCA9IFtdCiAgICAgICAgIGZvciB0YXNrIGluIHJhbmdlKGxlbihzcV9mbikpOgpAQCAtODU2LDcgKzg2MCw4IEBACiAgICAgICAgICAgICB0YXNrbGlzdC5hcHBlbmQoKHRhc2ssIHNzdGF0ZWZpbGUpKQogCiAgICAgICAgIGlmIHRhc2tsaXN0OgotICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzU3RhcnRlZCgiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5IiwgbGVuKHRhc2tsaXN0KSksIGQpCisgICAgICAgICAgICBtc2cgPSAiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5IgorICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzU3RhcnRlZChtc2csIGxlbih0YXNrbGlzdCkpLCBkKQogCiAgICAgICAgICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiAgICAgICAgICAgICBucHJvYyA9IG1pbihtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCksIGxlbih0YXNrbGlzdCkpCkBAIC04NzAsNyArODc1LDcgQEAKICAgICAgICAgICAgIHBvb2wud2FpdF9jb21wbGV0aW9uKCkKICAgICAgICAgICAgIGJiLmV2ZW50LmRpc2FibGVfdGhyZWFkbG9jaygpCiAKLSAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKCJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkiKSwgZCkKKyAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKG1zZyksIGQpCiAKICAgICBpbmhlcml0bGlzdCA9IGQuZ2V0VmFyKCJJTkhFUklUIikKICAgICBpZiAidG9hc3RlciIgaW4gaW5oZXJpdGxpc3Q6CkBAIC0xMDIyLDcgKzEwMjcsNyBAQAogICAgICAgICB3aXRoIG9wZW4ocHJlc2VydmVzdGFtcGZpbGUsICdyJykgYXMgZjoKICAgICAgICAgICAgIHByZXNlcnZlc3RhbXBzID0gZi5yZWFkbGluZXMoKQogICAgIHNlZW4gPSBbXQotICAgIGZvciBhIGluIGQuZ2V0VmFyKCJTU1RBVEVfQVJDSFMiKS5zcGxpdCgpOgorICAgIGZvciBhIGluIHNvcnRlZChsaXN0KHNldChkLmdldFZhcigiU1NUQVRFX0FSQ0hTIikuc3BsaXQoKSkpKToKICAgICAgICAgdG9yZW1vdmUgPSBbXQogICAgICAgICBpID0gZC5leHBhbmQoIiR7U1NUQVRFX01BTklGRVNUU30vaW5kZXgtIiArIGEpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhpKToKQEAgLTEwMzgsMTggKzEwNDMsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW4uYXBwZW5kKHN0YW1wKQogCiAgICAgICAgIGlmIHRvcmVtb3ZlOgotICAgICAgICAgICAgYmIubm90ZSgiVGhlcmUgYXJlICVkIHJlY2lwZXMgdG8gYmUgcmVtb3ZlZCBmcm9tIHN5c3Jvb3QgJXMsIHJlbW92aW5nLi4uIiAlIChsZW4odG9yZW1vdmUpLCBhKSkKKyAgICAgICAgICAgIG1zZyA9ICJSZW1vdmluZyAlZCByZWNpcGVzIGZyb20gdGhlICVzIHN5c3Jvb3QiICUgKGxlbih0b3JlbW92ZSksIGEpCisgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NTdGFydGVkKG1zZywgbGVuKHRvcmVtb3ZlKSksIGQpCiAKLSAgICAgICAgZm9yIHIgaW4gdG9yZW1vdmU6Ci0gICAgICAgICAgICAoc3RhbXAsIG1hbmlmZXN0LCB3b3JrZGlyKSA9IHIuc3BsaXQoKQotICAgICAgICAgICAgZm9yIG0gaW4gZ2xvYi5nbG9iKG1hbmlmZXN0ICsgIi4qIik6Ci0gICAgICAgICAgICAgICAgaWYgbS5lbmRzd2l0aCgiLnBvc3RybSIpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHNzdGF0ZV9jbGVhbl9tYW5pZmVzdChtLCBkKQotICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHN0YW1wICsgIioiKQotICAgICAgICAgICAgaWYgcmVtb3Zld29ya2RpcjoKLSAgICAgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUod29ya2RpciwgcmVjdXJzZSA9IFRydWUpCi0gICAgICAgICAgICBsaW5lcy5yZW1vdmUocikKKyAgICAgICAgICAgIHJlbW92ZWQgPSAwCisgICAgICAgICAgICBmb3IgciBpbiB0b3JlbW92ZToKKyAgICAgICAgICAgICAgICAoc3RhbXAsIG1hbmlmZXN0LCB3b3JrZGlyKSA9IHIuc3BsaXQoKQorICAgICAgICAgICAgICAgIGZvciBtIGluIGdsb2IuZ2xvYihtYW5pZmVzdCArICIuKiIpOgorICAgICAgICAgICAgICAgICAgICBpZiBtLmVuZHN3aXRoKCIucG9zdHJtIik6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBzc3RhdGVfY2xlYW5fbWFuaWZlc3QobSwgZCkKKyAgICAgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUoc3RhbXAgKyAiKiIpCisgICAgICAgICAgICAgICAgaWYgcmVtb3Zld29ya2RpcjoKKyAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHdvcmtkaXIsIHJlY3Vyc2UgPSBUcnVlKQorICAgICAgICAgICAgICAgIGxpbmVzLnJlbW92ZShyKQorICAgICAgICAgICAgICAgIHJlbW92ZWQgPSByZW1vdmVkICsgMQorICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc1Byb2dyZXNzKG1zZywgcmVtb3ZlZCksIGQpCisKKyAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKG1zZyksIGQpCisKICAgICAgICAgd2l0aCBvcGVuKGksICJ3IikgYXMgZjoKICAgICAgICAgICAgIGZvciBsIGluIGxpbmVzOgogICAgICAgICAgICAgICAgIGYud3JpdGUobCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKaW5kZXggYzQ3OWJkOS4uM2ZjYmM5ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKQEAgLTE3MSw3ICsxNzEsNyBAQAogICAgICAgICBmaXhtZV9wYXRoID0gZC5nZXRWYXIoZml4bWV2YXIpCiAgICAgICAgIGNtZCArPSAiIC1lICdzOkZJWE1FXyVzOiVzOmcnIiAlIChmaXhtZXZhciwgZml4bWVfcGF0aCkKICAgICBiYi5kZWJ1ZygyLCBjbWQpCi0gICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlKQorICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogCiAKIGRlZiBzdGFnaW5nX3BvcHVsYXRlX3N5c3Jvb3RfZGlyKHRhcmdldHN5c3Jvb3QsIG5hdGl2ZXN5c3Jvb3QsIG5hdGl2ZSwgZCk6CkBAIC0yMjgsNyArMjI4LDcgQEAKIAogICAgIHN0YWdpbmdfcHJvY2Vzc2ZpeG1lKGZpeG1lLCB0YXJnZXRkaXIsIHRhcmdldHN5c3Jvb3QsIG5hdGl2ZXN5c3Jvb3QsIGQpCiAgICAgZm9yIHAgaW4gcG9zdGluc3RzOgotICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChwLCBzaGVsbD1UcnVlKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChwLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKICMKICMgTWFuaWZlc3RzIGhlcmUgYXJlIGNvbXBsaWNhdGVkLiBUaGUgbWFpbiBzeXNyb290IGFyZWEgaGFzIHRoZSB1bnBhY2tlZCBzc3RhdGUKQEAgLTQ3MCw0MCArNDcwLDE0IEBACiAKICAgICAgICAgb3Muc3ltbGluayhjICsgIi4iICsgdGFza2hhc2gsIGRlcGRpciArICIvIiArIGMpCiAKLSAgICAgICAgZDIgPSBkCi0gICAgICAgIGRlc3RzeXNyb290ID0gcmVjaXBlc3lzcm9vdAotICAgICAgICB2YXJpYW50ID0gJycKLSAgICAgICAgaWYgc2V0c2NlbmVkZXBzW2RlcF1bMl0uc3RhcnRzd2l0aCgidmlydHVhbDptdWx0aWxpYiIpOgotICAgICAgICAgICAgdmFyaWFudCA9IHNldHNjZW5lZGVwc1tkZXBdWzJdLnNwbGl0KCI6IilbMl0KLSAgICAgICAgICAgIGlmIHZhcmlhbnQgIT0gY3VycmVudF92YXJpYW50OgotICAgICAgICAgICAgICAgIGlmIHZhcmlhbnQgbm90IGluIG11bHRpbGliczoKLSAgICAgICAgICAgICAgICAgICAgbXVsdGlsaWJzW3ZhcmlhbnRdID0gZ2V0X211bHRpbGliX2RhdGFzdG9yZSh2YXJpYW50LCBkKQotICAgICAgICAgICAgICAgIGQyID0gbXVsdGlsaWJzW3ZhcmlhbnRdCi0gICAgICAgICAgICAgICAgZGVzdHN5c3Jvb3QgPSBkMi5nZXRWYXIoIlJFQ0lQRV9TWVNST09UIikKKyAgICAgICAgbWFuaWZlc3QsIGQyID0gb2Uuc3N0YXRlc2lnLmZpbmRfc3N0YXRlX21hbmlmZXN0KGMsIHNldHNjZW5lZGVwc1tkZXBdWzJdLCAicG9wdWxhdGVfc3lzcm9vdCIsIGQsIG11bHRpbGlicykKKyAgICAgICAgZGVzdHN5c3Jvb3QgPSBkMi5nZXRWYXIoIlJFQ0lQRV9TWVNST09UIikKIAogICAgICAgICBuYXRpdmUgPSBGYWxzZQotICAgICAgICBpZiBjLmVuZHN3aXRoKCItbmF0aXZlIik6Ci0gICAgICAgICAgICBtYW5pZmVzdCA9IGQyLmV4cGFuZCgiJHtTU1RBVEVfTUFOSUZFU1RTfS9tYW5pZmVzdC0ke0JVSUxEX0FSQ0h9LSVzLnBvcHVsYXRlX3N5c3Jvb3QiICUgYykKKyAgICAgICAgaWYgYy5lbmRzd2l0aCgiLW5hdGl2ZSIpIG9yICItY3Jvc3MtIiBpbiBjIG9yICItY3Jvc3NzZGsiIGluIGM6CiAgICAgICAgICAgICBuYXRpdmUgPSBUcnVlCi0gICAgICAgIGVsaWYgYy5zdGFydHN3aXRoKCJuYXRpdmVzZGstIik6Ci0gICAgICAgICAgICBtYW5pZmVzdCA9IGQyLmV4cGFuZCgiJHtTU1RBVEVfTUFOSUZFU1RTfS9tYW5pZmVzdC0ke1NES19BUkNIfV8ke1NES19PU30tJXMucG9wdWxhdGVfc3lzcm9vdCIgJSBjKQotICAgICAgICBlbGlmICItY3Jvc3MtIiBpbiBjOgotICAgICAgICAgICAgbWFuaWZlc3QgPSBkMi5leHBhbmQoIiR7U1NUQVRFX01BTklGRVNUU30vbWFuaWZlc3QtJHtCVUlMRF9BUkNIfV8ke1RBUkdFVF9BUkNIfS0lcy5wb3B1bGF0ZV9zeXNyb290IiAlIGMpCi0gICAgICAgICAgICBuYXRpdmUgPSBUcnVlCi0gICAgICAgIGVsaWYgIi1jcm9zc3NkayIgaW4gYzoKLSAgICAgICAgICAgIG1hbmlmZXN0ID0gZDIuZXhwYW5kKCIke1NTVEFURV9NQU5JRkVTVFN9L21hbmlmZXN0LSR7QlVJTERfQVJDSH1fJHtTREtfQVJDSH1fJHtTREtfT1N9LSVzLnBvcHVsYXRlX3N5c3Jvb3QiICUgYykKLSAgICAgICAgICAgIG5hdGl2ZSA9IFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBrZ2FyY2hzID0gWycke01BQ0hJTkVfQVJDSH0nXQotICAgICAgICAgICAgcGtnYXJjaHMgPSBwa2dhcmNocyArIGxpc3QocmV2ZXJzZWQoZDIuZ2V0VmFyKCJQQUNLQUdFX0VYVFJBX0FSQ0hTIikuc3BsaXQoKSkpCi0gICAgICAgICAgICBwa2dhcmNocy5hcHBlbmQoJ2FsbGFyY2gnKQotICAgICAgICAgICAgZm9yIHBrZ2FyY2ggaW4gcGtnYXJjaHM6Ci0gICAgICAgICAgICAgICAgbWFuaWZlc3QgPSBkMi5leHBhbmQoIiR7U1NUQVRFX01BTklGRVNUU30vbWFuaWZlc3QtJXMtJXMucG9wdWxhdGVfc3lzcm9vdCIgJSAocGtnYXJjaCwgYykpCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobWFuaWZlc3QpOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobWFuaWZlc3QpOgotICAgICAgICAgICAgYmIud2FybigiTWFuaWZlc3QgJXMgbm90IGZvdW5kPyIgJSBtYW5pZmVzdCkKLSAgICAgICAgZWxzZToKKworICAgICAgICBpZiBtYW5pZmVzdDoKICAgICAgICAgICAgIG5ld21hbmlmZXN0ID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQogICAgICAgICAgICAgaWYgbmF0aXZlOgogICAgICAgICAgICAgICAgIGZtID0gZml4bWVbJ25hdGl2ZSddCkBAIC01NzYsNyArNTUwLDcgQEAKICAgICAgICAgICAgIHN0YWdpbmdfcHJvY2Vzc2ZpeG1lKGZpeG1lW2ZdLCBtdWx0aWxpYnNbZl0uZ2V0VmFyKCJSRUNJUEVfU1lTUk9PVCIpLCByZWNpcGVzeXNyb290LCByZWNpcGVzeXNyb290bmF0aXZlLCBkKQogCiAgICAgZm9yIHAgaW4gcG9zdGluc3RzOgotICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChwLCBzaGVsbD1UcnVlKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChwLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKICAgICBmb3IgZGVwIGluIG1hbmlmZXN0czoKICAgICAgICAgYyA9IHNldHNjZW5lZGVwc1tkZXBdWzBdCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c2xpbnV4LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c2xpbnV4LmJiY2xhc3MKaW5kZXggZDZmODgyNC4uMDMxZGFjYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXNsaW51eC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzbGludXguYmJjbGFzcwpAQCAtMTczLDggKzE3Myw5IEBACiAgICAgICAgIGlmIG5vdCByb290OgogICAgICAgICAgICAgYmIuZmF0YWwoJ1NZU0xJTlVYX1JPT1Qgbm90IGRlZmluZWQnKQogCisgICAgICAgIGtlcm5lbCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEUnKQogICAgICAgICBmb3IgYnR5cGUgaW4gYnR5cGVzOgotICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnTEFCRUwgJXMlc1xuS0VSTkVMIC92bWxpbnV6XG4nICUgKGJ0eXBlWzBdLCBsYWJlbCkpCisgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdMQUJFTCAlcyVzXG5LRVJORUwgLyVzXG4nICUgKGJ0eXBlWzBdLCBsYWJlbCwga2VybmVsKSkKIAogICAgICAgICAgICAgZXhhcmdzID0gZC5nZXRWYXIoJ1NZU0xJTlVYX0tFUk5FTF9BUkdTJykKICAgICAgICAgICAgIGlmIGV4YXJnczoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC1ib290LWNmZy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QtY2ZnLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxYzlmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC1ib290LWNmZy5iYmNsYXNzCkBAIC0wLDAgKzEsNjggQEAKK1NZU1RFTURfQk9PVF9DRkcgPz0gIiR7U30vbG9hZGVyLmNvbmYiCitTWVNURU1EX0JPT1RfRU5UUklFUyA/PSAiIgorU1lTVEVNRF9CT09UX1RJTUVPVVQgPz0gIjEwIgorCisjIE5lZWQgVVVJRCB1dGlsaXR5IGNvZGUuCitpbmhlcml0IGZzLXV1aWQKKworcHl0aG9uIGJ1aWxkX2VmaV9jZmcoKSB7CisgICAgcyA9IGQuZ2V0VmFyKCJTIikKKyAgICBsYWJlbHMgPSBkLmdldFZhcignTEFCRUxTJykKKyAgICBpZiBub3QgbGFiZWxzOgorICAgICAgICBiYi5kZWJ1ZygxLCAiTEFCRUxTIG5vdCBkZWZpbmVkLCBub3RoaW5nIHRvIGRvIikKKyAgICAgICAgcmV0dXJuCisKKyAgICBpZiBsYWJlbHMgPT0gW106CisgICAgICAgIGJiLmRlYnVnKDEsICJObyBsYWJlbHMsIG5vdGhpbmcgdG8gZG8iKQorICAgICAgICByZXR1cm4KKworICAgIGNmaWxlID0gZC5nZXRWYXIoJ1NZU1RFTURfQk9PVF9DRkcnKQorICAgIGNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoY2ZpbGUpCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNkaXIpOgorICAgICAgICBvcy5tYWtlZGlycyhjZGlyKQorICAgIHRyeToKKyAgICAgICAgIGNmZ2ZpbGUgPSBvcGVuKGNmaWxlLCAndycpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gb3BlbiAlcycgJSBjZmlsZSkKKworICAgIGNmZ2ZpbGUud3JpdGUoJyMgQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IE9FXG4nKQorICAgIGNmZ2ZpbGUud3JpdGUoJ2RlZmF1bHQgJXNcbicgJSAobGFiZWxzLnNwbGl0KClbMF0pKQorICAgIHRpbWVvdXQgPSBkLmdldFZhcignU1lTVEVNRF9CT09UX1RJTUVPVVQnKQorICAgIGlmIHRpbWVvdXQ6CisgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ3RpbWVvdXQgJXNcbicgJSB0aW1lb3V0KQorICAgIGVsc2U6CisgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ3RpbWVvdXQgMTBcbicpCisgICAgY2ZnZmlsZS5jbG9zZSgpCisKKyAgICBmb3IgbGFiZWwgaW4gbGFiZWxzLnNwbGl0KCk6CisgICAgICAgIGxvY2FsZGF0YSA9IGQuY3JlYXRlQ29weSgpCisKKyAgICAgICAgZW50cnlmaWxlID0gIiVzLyVzLmNvbmYiICUgKHMsIGxhYmVsKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocyk6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhzKQorICAgICAgICBkLmFwcGVuZFZhcigiU1lTVEVNRF9CT09UX0VOVFJJRVMiLCAiICIgKyBlbnRyeWZpbGUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGVudHJ5Y2ZnID0gb3BlbihlbnRyeWZpbGUsICJ3IikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgZW50cnlmaWxlKQorCisgICAgICAgIGVudHJ5Y2ZnLndyaXRlKCd0aXRsZSAlc1xuJyAlIGxhYmVsKQorCisgICAgICAgIGtlcm5lbCA9IGxvY2FsZGF0YS5nZXRWYXIoIktFUk5FTF9JTUFHRVRZUEUiKQorICAgICAgICBlbnRyeWNmZy53cml0ZSgnbGludXggLyVzXG4nICUga2VybmVsKQorCisgICAgICAgIGFwcGVuZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0FQUEVORCcpCisgICAgICAgIGluaXRyZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0lOSVRSRCcpCisKKyAgICAgICAgaWYgaW5pdHJkOgorICAgICAgICAgICAgZW50cnljZmcud3JpdGUoJ2luaXRyZCAvaW5pdHJkXG4nKQorICAgICAgICBsYiA9IGxhYmVsCisgICAgICAgIGlmIGxhYmVsID09ICJpbnN0YWxsIjoKKyAgICAgICAgICAgIGxiID0gImluc3RhbGwtZWZpIgorICAgICAgICBlbnRyeWNmZy53cml0ZSgnb3B0aW9ucyBMQUJFTD0lcyAnICUgbGIpCisgICAgICAgIGlmIGFwcGVuZDoKKyAgICAgICAgICAgIGFwcGVuZCA9IHJlcGxhY2Vfcm9vdGZzX3V1aWQoZCwgYXBwZW5kKQorICAgICAgICAgICAgZW50cnljZmcud3JpdGUoJyVzJyAlIGFwcGVuZCkKKyAgICAgICAgZW50cnljZmcud3JpdGUoJ1xuJykKKyAgICAgICAgZW50cnljZmcuY2xvc2UoKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC1ib290LmJiY2xhc3MKaW5kZXggOTM3MzA3MC4uM2NkNjgxMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQtYm9vdC5iYmNsYXNzCkBAIC0xMiwxMSArMTIsNiBAQAogZG9fYm9vdGltZ1tkZXBlbmRzXSArPSAiJHtNTFBSRUZJWH1zeXN0ZW1kLWJvb3Q6ZG9fZGVwbG95IgogCiBFRklESVIgPSAiL0VGSS9CT09UIgotCi1TWVNURU1EX0JPT1RfQ0ZHID89ICIke1N9L2xvYWRlci5jb25mIgotU1lTVEVNRF9CT09UX0VOVFJJRVMgPz0gIiIKLVNZU1RFTURfQk9PVF9USU1FT1VUID89ICIxMCIKLQogIyBOZWVkIFVVSUQgdXRpbGl0eSBjb2RlLgogaW5oZXJpdCBmcy11dWlkCiAKQEAgLTUwLDcgKzQ1LDcgQEAKICAgICAgICAgbWtkaXIgLXAgJHtFRklJTUdESVJ9LyR7RUZJRElSfQogICAgICAgICBjcCAkaXNvX2Rpci8ke0VGSURJUn0vKiAke0VGSUlNR0RJUn0ke0VGSURJUn0KICAgICAgICAgY3AgLXIgJGlzb19kaXIvbG9hZGVyICR7RUZJSU1HRElSfQotICAgICAgICBjcCAkaXNvX2Rpci92bWxpbnV6ICR7RUZJSU1HRElSfQorICAgICAgICBjcCAkaXNvX2Rpci8ke0tFUk5FTF9JTUFHRVRZUEV9ICR7RUZJSU1HRElSfQogICAgICAgICBFRklQQVRIPSQoZWNobyAiJHtFRklESVJ9IiB8IHNlZCAncy9cLy9cXC9nJykKICAgICAgICAgZWNobyAiZnMwOiR7RUZJUEFUSH1cXCR7REVTVF9FRklfSU1BR0V9IiA+ICR7RUZJSU1HRElSfS9zdGFydHVwLm5zaAogICAgICAgICBpZiBbIC1mICIkaXNvX2Rpci9pbml0cmQiIF0gOyB0aGVuCkBAIC02Miw2NyArNTcsNCBAQAogICAgICAgICBlZmlfcG9wdWxhdGUgJDEKIH0KIAotcHl0aG9uIGJ1aWxkX2VmaV9jZmcoKSB7Ci0gICAgcyA9IGQuZ2V0VmFyKCJTIikKLSAgICBsYWJlbHMgPSBkLmdldFZhcignTEFCRUxTJykKLSAgICBpZiBub3QgbGFiZWxzOgotICAgICAgICBiYi5kZWJ1ZygxLCAiTEFCRUxTIG5vdCBkZWZpbmVkLCBub3RoaW5nIHRvIGRvIikKLSAgICAgICAgcmV0dXJuCi0KLSAgICBpZiBsYWJlbHMgPT0gW106Ci0gICAgICAgIGJiLmRlYnVnKDEsICJObyBsYWJlbHMsIG5vdGhpbmcgdG8gZG8iKQotICAgICAgICByZXR1cm4KLQotICAgIGNmaWxlID0gZC5nZXRWYXIoJ1NZU1RFTURfQk9PVF9DRkcnKQotICAgIGNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoY2ZpbGUpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNkaXIpOgotICAgICAgICBvcy5tYWtlZGlycyhjZGlyKQotICAgIHRyeToKLSAgICAgICAgIGNmZ2ZpbGUgPSBvcGVuKGNmaWxlLCAndycpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gb3BlbiAlcycgJSBjZmlsZSkKLQotICAgIGNmZ2ZpbGUud3JpdGUoJyMgQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IE9FXG4nKQotICAgIGNmZ2ZpbGUud3JpdGUoJ2RlZmF1bHQgJXNcbicgJSAobGFiZWxzLnNwbGl0KClbMF0pKQotICAgIHRpbWVvdXQgPSBkLmdldFZhcignU1lTVEVNRF9CT09UX1RJTUVPVVQnKQotICAgIGlmIHRpbWVvdXQ6Ci0gICAgICAgIGNmZ2ZpbGUud3JpdGUoJ3RpbWVvdXQgJXNcbicgJSB0aW1lb3V0KQotICAgIGVsc2U6Ci0gICAgICAgIGNmZ2ZpbGUud3JpdGUoJ3RpbWVvdXQgMTBcbicpCi0gICAgY2ZnZmlsZS5jbG9zZSgpCi0KLSAgICBmb3IgbGFiZWwgaW4gbGFiZWxzLnNwbGl0KCk6Ci0gICAgICAgIGxvY2FsZGF0YSA9IGQuY3JlYXRlQ29weSgpCi0KLSAgICAgICAgb3ZlcnJpZGVzID0gbG9jYWxkYXRhLmdldFZhcignT1ZFUlJJREVTJykKLSAgICAgICAgaWYgbm90IG92ZXJyaWRlczoKLSAgICAgICAgICAgIGJiLmZhdGFsKCdPVkVSUklERVMgbm90IGRlZmluZWQnKQotCi0gICAgICAgIGVudHJ5ZmlsZSA9ICIlcy8lcy5jb25mIiAlIChzLCBsYWJlbCkKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHMpOgotICAgICAgICAgICAgb3MubWFrZWRpcnMocykKLSAgICAgICAgZC5hcHBlbmRWYXIoIlNZU1RFTURfQk9PVF9FTlRSSUVTIiwgIiAiICsgZW50cnlmaWxlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBlbnRyeWNmZyA9IG9wZW4oZW50cnlmaWxlLCAidyIpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgYmIuZmF0YWwoJ1VuYWJsZSB0byBvcGVuICVzJyAlIGVudHJ5ZmlsZSkKLSAgICAgICAgbG9jYWxkYXRhLnNldFZhcignT1ZFUlJJREVTJywgbGFiZWwgKyAnOicgKyBvdmVycmlkZXMpCi0KLSAgICAgICAgZW50cnljZmcud3JpdGUoJ3RpdGxlICVzXG4nICUgbGFiZWwpCi0gICAgICAgIGVudHJ5Y2ZnLndyaXRlKCdsaW51eCAvdm1saW51elxuJykKLQotICAgICAgICBhcHBlbmQgPSBsb2NhbGRhdGEuZ2V0VmFyKCdBUFBFTkQnKQotICAgICAgICBpbml0cmQgPSBsb2NhbGRhdGEuZ2V0VmFyKCdJTklUUkQnKQotCi0gICAgICAgIGlmIGluaXRyZDoKLSAgICAgICAgICAgIGVudHJ5Y2ZnLndyaXRlKCdpbml0cmQgL2luaXRyZFxuJykKLSAgICAgICAgbGIgPSBsYWJlbAotICAgICAgICBpZiBsYWJlbCA9PSAiaW5zdGFsbCI6Ci0gICAgICAgICAgICBsYiA9ICJpbnN0YWxsLWVmaSIKLSAgICAgICAgZW50cnljZmcud3JpdGUoJ29wdGlvbnMgTEFCRUw9JXMgJyAlIGxiKQotICAgICAgICBpZiBhcHBlbmQ6Ci0gICAgICAgICAgICBhcHBlbmQgPSByZXBsYWNlX3Jvb3Rmc191dWlkKGQsIGFwcGVuZCkKLSAgICAgICAgICAgIGVudHJ5Y2ZnLndyaXRlKCclcycgJSBhcHBlbmQpCi0gICAgICAgIGVudHJ5Y2ZnLndyaXRlKCdcbicpCi0gICAgICAgIGVudHJ5Y2ZnLmNsb3NlKCkKLX0KK2luaGVyaXQgc3lzdGVtZC1ib290LWNmZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKaW5kZXggNDViYjJiZC4uNzcyOTFjMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzCkBAIC00NCwyMCArNDQsMjIgQEAKIERFRkFVTFRfVEVTVF9TVUlURVMgPSAiJHtNSU5URVNUU1VJVEV9IGF1dG8iCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbWluaW1hbCA9ICIke01JTlRFU1RTVUlURX0iCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbWluaW1hbC1kZXYgPSAiJHtNSU5URVNUU1VJVEV9IgotREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWZ1bGwtY21kbGluZSA9ICIke05FVFRFU1RTVUlURX0gcGVybCBweXRob24gbG9ncm90YXRlIgorREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWZ1bGwtY21kbGluZSA9ICIke05FVFRFU1RTVUlURX0gcGVybCBweXRob24gbG9ncm90YXRlIHB0ZXN0IgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLXgxMSA9ICIke01JTlRFU1RTVUlURX0iCi1ERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiID0gIiR7TkVUVEVTVFNVSVRFfSBwYW0gcGFyc2Vsb2dzICR7UlBNVEVTVFNVSVRFfSIKK0RFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1sc2IgPSAiJHtORVRURVNUU1VJVEV9IHBhbSBwYXJzZWxvZ3MgJHtSUE1URVNUU1VJVEV9IHB0ZXN0IgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLXNhdG8gPSAiJHtORVRURVNUU1VJVEV9IGNvbm5tYW4geG9yZyBwYXJzZWxvZ3MgJHtSUE1URVNUU1VJVEV9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAncHl0aG9uJywgJycsIGQpfSIKKyAgICAke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAncHl0aG9uJywgJycsIGQpfSBwdGVzdCBnaSIKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1zYXRvLXNkayA9ICIke05FVFRFU1RTVUlURX0gYnVpbGRjcGlvIGJ1aWxkbHppcCBidWlsZGdhbGN1bGF0b3IgXAotICAgIGNvbm5tYW4gJHtERVZURVNUU1VJVEV9IGxvZ3JvdGF0ZSBwZXJsIHBhcnNlbG9ncyBweXRob24gJHtSUE1URVNUU1VJVEV9IHhvcmciCi1ERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiLWRldiA9ICIke05FVFRFU1RTVUlURX0gcGFtIHBlcmwgcHl0aG9uIHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0iCisgICAgY29ubm1hbiAke0RFVlRFU1RTVUlURX0gbG9ncm90YXRlIHBlcmwgcGFyc2Vsb2dzIHB5dGhvbiAke1JQTVRFU1RTVUlURX0geG9yZyBwdGVzdCBnaSBzdGFwIgorREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYi1kZXYgPSAiJHtORVRURVNUU1VJVEV9IHBhbSBwZXJsIHB5dGhvbiBwYXJzZWxvZ3MgJHtSUE1URVNUU1VJVEV9IHB0ZXN0IGdpIgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYi1zZGsgPSAiJHtORVRURVNUU1VJVEV9IGJ1aWxkY3BpbyBidWlsZGx6aXAgYnVpbGRnYWxjdWxhdG9yIFwKLSAgICBjb25ubWFuICR7REVWVEVTVFNVSVRFfSBsb2dyb3RhdGUgcGFtIHBhcnNlbG9ncyBwZXJsIHB5dGhvbiAke1JQTVRFU1RTVUlURX0iCisgICAgY29ubm1hbiAke0RFVlRFU1RTVUlURX0gbG9ncm90YXRlIHBhbSBwYXJzZWxvZ3MgcGVybCBweXRob24gJHtSUE1URVNUU1VJVEV9IHB0ZXN0IGdpIHN0YXAiCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLW1ldGEtdG9vbGNoYWluID0gImF1dG8iCiAKICMgYWFyY2g2NCBoYXMgbm8gZ3JhcGhpY3MKIERFRkFVTFRfVEVTVF9TVUlURVNfcmVtb3ZlX2FhcmNoNjQgPSAieG9yZyIKKyMgbXVzbCBkb2Vzbid0IHN1cHBvcnQgc3lzdGVtdGFwCitERUZBVUxUX1RFU1RfU1VJVEVTX3JlbW92ZV9saWJjLW11c2wgPSAic3RhcCIKIAogIyBxZW11bWlwcyBpcyBxdWl0ZSBzbG93IGFuZCBoYXMgcmVhY2hlZCB0aGUgdGltZW91dCBsaW1pdCBzZXZlcmFsIHRpbWVzIG9uIHRoZSBZUCBidWlsZCBjbHVzdGVyLAogIyBtaXRpZ2F0ZSB0aGlzIGJ5IHJlbW92aW5nIGJ1aWxkIHRlc3RzIGZvciBxZW11bWlwcyBtYWNoaW5lcy4KQEAgLTIxNSw3ICsyMTcsNyBAQAogICAgICMgR2V0IHVzZV9rdm0KICAgICBxZW11X3VzZV9rdm0gPSBkLmdldFZhcigiUUVNVV9VU0VfS1ZNIikKICAgICBpZiBxZW11X3VzZV9rdm0gYW5kIFwKLSAgICAgICAocWVtdV91c2Vfa3ZtID09ICdUcnVlJyBhbmQgJ3g4NicgaW4gbWFjaGluZSBvciBcCisgICAgICAgKG9lLnR5cGVzLmJvb2xlYW4ocWVtdV91c2Vfa3ZtKSBhbmQgJ3g4NicgaW4gbWFjaGluZSBvciBcCiAgICAgICAgIGQuZ2V0VmFyKCdNQUNISU5FJykgaW4gcWVtdV91c2Vfa3ZtLnNwbGl0KCkpOgogICAgICAgICBrdm0gPSBUcnVlCiAgICAgZWxzZToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdHNkay5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MKaW5kZXggNmI1MWEzMy4uMmU0MzM0MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MKQEAgLTE1NiwxMCArMTU2LDExIEBACiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2RrX2RpciwgJ2NvbmYnLCAnYXV0by5jb25mJyksICdhKycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCdTU1RBVEVfTUlSUk9SUyArPSAiIFxcbiBmaWxlOi8vLiogZmlsZTovLyVzL1BBVEgiXG4nICUgdGVzdF9kYXRhLmdldCgnU1NUQVRFX0RJUicpKQogICAgICAgICAgICAgZi53cml0ZSgnU09VUkNFX01JUlJPUl9VUkwgPSAiZmlsZTovLyVzIlxuJyAlIHRlc3RfZGF0YS5nZXQoJ0RMX0RJUicpKQotICAgICAgICAgICAgZi53cml0ZSgnSU5IRVJJVCArPSAib3duLW1pcnJvcnMiJykKKyAgICAgICAgICAgIGYud3JpdGUoJ0lOSEVSSVQgKz0gIm93bi1taXJyb3JzIlxuJykKIAogICAgICAgICAjIFdlIG5lZWQgdG8gZG8gdGhpcyBpbiBjYXNlIHdlIGhhdmUgYSBtaW5pbWFsIFNESwotICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiLiAlcyA+IC9kZXYvbnVsbDsgZGV2dG9vbCBzZGstaW5zdGFsbCBtZXRhLWV4dHNkay10b29sY2hhaW4iICUgc2RrX2VudiwgY3dkPXNka19kaXIsIHNoZWxsPVRydWUpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCIuICVzID4gL2Rldi9udWxsOyBkZXZ0b29sIHNkay1pbnN0YWxsIG1ldGEtZXh0c2RrLXRvb2xjaGFpbiIgJSBcCisgICAgICAgICAgICAgICAgc2RrX2VudiwgY3dkPXNka19kaXIsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKIAogICAgICAgICB0YyA9IE9FU0RLRXh0VGVzdENvbnRleHQodGQ9dGVzdF9kYXRhLCBsb2dnZXI9bG9nZ2VyLCBzZGtfZGlyPXNka19kaXIsCiAgICAgICAgICAgICBzZGtfZW52PXNka19lbnYsIHRhcmdldF9wa2dfbWFuaWZlc3Q9dGFyZ2V0X3BrZ19tYW5pZmVzdCwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcwppbmRleCA5YmNmZTcwLi43MWRhNWU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rvb2xjaGFpbi1zY3JpcHRzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzCkBAIC02Miw3ICs2Miw4IEBACiAJc2NyaXB0PSR7VE1QRElSfS9lbnZpcm9ubWVudC1zZXR1cC0ke1JFQUxfTVVMVElNQUNIX1RBUkdFVF9TWVN9CiAJcm0gLWYgJHNjcmlwdAogCXRvdWNoICRzY3JpcHQKLQllY2hvICdleHBvcnQgUEFUSD0ke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL2Jpbjoke1BBVEh9JyA+PiAkc2NyaXB0CisJZWNobyAnb3JpZz1gcHdkYDsgY2QgJHtDT1JFQkFTRX07IC4gLi9vZS1pbml0LWJ1aWxkLWVudiAke1RPUERJUn07IGNkICRvcmlnJyA+PiAkc2NyaXB0CisJZWNobyAnZXhwb3J0IFBBVEg9JHtTVEFHSU5HX0RJUl9OQVRJVkV9L3Vzci9iaW46JHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59OiRQQVRIJyA+PiAkc2NyaXB0CiAJZWNobyAnZXhwb3J0IFBLR19DT05GSUdfU1lTUk9PVF9ESVI9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfScgPj4gJHNjcmlwdAogCWVjaG8gJ2V4cG9ydCBQS0dfQ09ORklHX1BBVEg9JHtQS0dfQ09ORklHX1BBVEh9JyA+PiAkc2NyaXB0CiAJZWNobyAnZXhwb3J0IENPTkZJR19TSVRFPSIke0BzaXRlaW5mb19nZXRfZmlsZXMoZCl9IicgPj4gJHNjcmlwdApAQCAtMTE2LDYgKzExNywyMSBAQAogRU9GCiB9CiAKK3Rvb2xjaGFpbl9jcmVhdGVfcG9zdF9yZWxvY2F0ZV9zY3JpcHQoKSB7CisJc2NyaXB0PSQxCisJcm0gLWYgJHNjcmlwdAorCXRvdWNoICRzY3JpcHQKKworICAgIGNhdCA+PiAkc2NyaXB0IDw8RU9GCitpZiBbIC1kICIke1NES1BBVEhOQVRJVkV9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuZC8iIF07IHRoZW4KKyAgICBmb3IgcyBpbiAke1NES1BBVEhOQVRJVkV9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuZC8qLnNoOyBkbworICAgICAgICBcJHMgIlwkMSIKKyAgICBkb25lCisgICAgcm0gLXJmICIke1NES1BBVEhOQVRJVkV9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuZCIKK2ZpCitFT0YKK30KKwogI3dlIGdldCB0aGUgY2FjaGVkIHNpdGUgY29uZmlnIGluIHRoZSBydW50aW1lCiBUT09MQ0hBSU5fQ09ORklHU0lURV9OT0NBQ0hFID0gIiR7QHNpdGVpbmZvX2dldF9maWxlcyhkKX0iCiBUT09MQ0hBSU5fQ09ORklHU0lURV9TWVNST09UQ0FDSEUgPSAiJHtTVEFHSU5HX0RJUn0vJHtNTFBSRUZJWH0ke01BQ0hJTkV9LyR7dGFyZ2V0X2RhdGFkaXJ9LyR7VEFSR0VUX1NZU31fY29uZmlnX3NpdGUuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtY29uZmlnLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWNvbmZpZy5iYmNsYXNzCmluZGV4IDUzM2UxNzUuLjg5ZmY5NzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtY29uZmlnLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1jb25maWcuYmJjbGFzcwpAQCAtMjcsMTMgKzI3LDEzIEBACiAgICAgICAgIEZJTEUgPSBvcy5wYXRoLmJhc2VuYW1lKGQuZ2V0VmFyKCJGSUxFIikpCiAgICAgICAgIGJiLmRlYnVnKDEsICJUbyBidWlsZCAlcywgc2VlICVzIGZvciBpbnN0cnVjdGlvbnMgb24gXAogICAgICAgICAgICAgICAgICBzZXR0aW5nIHVwIHlvdXIgbWFjaGluZSBjb25maWciICUgKFBOLCBGSUxFKSkKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIkVpdGhlciBVQk9PVF9NQUNISU5FIG9yIFVCT09UX0NPTkZJRyBtdXN0IGJlIHNldCBpbiB0aGUgJXMgbWFjaGluZSBjb25maWd1cmF0aW9uLiIgJSBkLmdldFZhcigiTUFDSElORSIpKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJFaXRoZXIgVUJPT1RfTUFDSElORSBvciBVQk9PVF9DT05GSUcgbXVzdCBiZSBzZXQgaW4gdGhlICVzIG1hY2hpbmUgY29uZmlndXJhdGlvbi4iICUgZC5nZXRWYXIoIk1BQ0hJTkUiKSkKIAogICAgIGlmIHVib290bWFjaGluZSBhbmQgdWJvb3Rjb25maWc6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJZb3UgY2Fubm90IHVzZSBVQk9PVF9NQUNISU5FIGFuZCBVQk9PVF9DT05GSUcgYXQgdGhlIHNhbWUgdGltZS4iKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJZb3UgY2Fubm90IHVzZSBVQk9PVF9NQUNISU5FIGFuZCBVQk9PVF9DT05GSUcgYXQgdGhlIHNhbWUgdGltZS4iKQogCiAgICAgaWYgdWJvb3Rjb25maWdmbGFncyBhbmQgdWJvb3RiaW5hcmllczoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIllvdSBjYW5ub3QgdXNlIFVCT09UX0JJTkFSSUVTIGFzIGl0IGlzIGludGVybmFsIHRvIHVib290X2NvbmZpZy5iYmNsYXNzLiIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIllvdSBjYW5ub3QgdXNlIFVCT09UX0JJTkFSSUVTIGFzIGl0IGlzIGludGVybmFsIHRvIHVib290X2NvbmZpZy5iYmNsYXNzLiIpCiAKICAgICBpZiBsZW4odWJvb3Rjb25maWcpID4gMDoKICAgICAgICAgZm9yIGNvbmZpZyBpbiB1Ym9vdGNvbmZpZzoKQEAgLTQxLDcgKzQxLDcgQEAKICAgICAgICAgICAgICAgICBpZiBjb25maWcgPT0gZjogCiAgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gdi5zcGxpdCgnLCcpCiAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW1zWzBdIGFuZCBsZW4oaXRlbXMpID4gMzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCdPbmx5IGNvbmZpZyxpbWFnZXMsYmluYXJ5IGNhbiBiZSBzcGVjaWZpZWQhJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoJ09ubHkgY29uZmlnLGltYWdlcyxiaW5hcnkgY2FuIGJlIHNwZWNpZmllZCEnKQogICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignVUJPT1RfTUFDSElORScsICcgJyArIGl0ZW1zWzBdKQogICAgICAgICAgICAgICAgICAgICAjIElNQUdFX0ZTVFlQRVMgYXBwZW5kaW5nCiAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihpdGVtcykgPiAxIGFuZCBpdGVtc1sxXToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzCmluZGV4IDE3MjMzNjQuLmRlMjIyMWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcwpAQCAtOCw2ICs4LDkgQEAKICNVTklOQVRJVkVfQ0hFQ0tTVU1beDg2XzY0XSA9ICJkZWFkIgogVU5JTkFUSVZFX0RMRElSID89ICIke0RMX0RJUn0vdW5pbmF0aXZlLyIKIAorIyBFbmFibGluZyB1bmluYXRpdmUgd2lsbCBjaGFuZ2UgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgc28gdGhleSBuZWVkIHRvIGdvIHRoZSBwYXJzaW5nIHdoaXRlIGxpc3QgdG8gcHJldmVudCBtdWx0aXBsZSByZWNpcGUgcGFyc2luZworQkJfSEFTSENPTkZJR19XSElURUxJU1QgKz0gIk5BVElWRUxTQlNUUklORyBTU1RBVEVQT1NUVU5QQUNLRlVOQ1MgQlVJTERfTERGTEFHUyIKKwogYWRkaGFuZGxlciB1bmluYXRpdmVfZXZlbnRfZmV0Y2hsb2FkZXIKIHVuaW5hdGl2ZV9ldmVudF9mZXRjaGxvYWRlcltldmVudG1hc2tdID0gImJiLmV2ZW50LkJ1aWxkU3RhcnRlZCIKIApAQCAtMTI2LDYgKzEyOSw5IEBACiAgICAgICAgIGQuc2V0VmFyKCJOQVRJVkVMU0JTVFJJTkciLCAidW5pdmVyc2FsJXMiICUgb2UudXRpbHMuaG9zdF9nY2NfdmVyc2lvbihkKSkKICAgICAgICAgZC5hcHBlbmRWYXIoIlNTVEFURVBPU1RVTlBBQ0tGVU5DUyIsICIgdW5pbmF0aXZlX2NoYW5nZWludGVycCIpCiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygiU1NUQVRFUE9TVFVOUEFDS0ZVTkNTIiwgInZhcmRlcHZhbHVlZXhjbHVkZSIsICJ8IHVuaW5hdGl2ZV9jaGFuZ2VpbnRlcnAiKQorICAgICAgICBkLmFwcGVuZFZhcigiQlVJTERfTERGTEFHUyIsICIgLVdsLC0tYWxsb3ctc2hsaWItdW5kZWZpbmVkIC1XbCwtLWR5bmFtaWMtbGlua2VyPSR7VU5JTkFUSVZFX0xPQURFUn0iKQorICAgICAgICBkLmFwcGVuZFZhckZsYWcoIkJVSUxEX0xERkxBR1MiLCAidmFyZGVwdmFsdWVleGNsdWRlIiwgInwgLVdsLC0tYWxsb3ctc2hsaWItdW5kZWZpbmVkIC1XbCwtLWR5bmFtaWMtbGlua2VyPSR7VU5JTkFUSVZFX0xPQURFUn0iKQorICAgICAgICBkLmFwcGVuZFZhckZsYWcoIkJVSUxEX0xERkxBR1MiLCAidmFyZGVwc2V4Y2x1ZGUiLCAiVU5JTkFUSVZFX0xPQURFUiIpCiAgICAgICAgIGQucHJlcGVuZFZhcigiUEFUSCIsICIke1NUQUdJTkdfRElSfS11bmluYXRpdmUvJHtCVUlMRF9BUkNIfS1saW51eCR7YmluZGlyX25hdGl2ZX06IikKIAogcHl0aG9uIHVuaW5hdGl2ZV9jaGFuZ2VpbnRlcnAgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLXN0YXRpY2lkcy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLXN0YXRpY2lkcy5iYmNsYXNzCmluZGV4IDU4OWE5OWYuLjY0YmY2ZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC1zdGF0aWNpZHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQtc3RhdGljaWRzLmJiY2xhc3MKQEAgLTMwNyw1ICszMDcsNSBAQAogICAgICAgICAgICAgdXBkYXRlX3VzZXJhZGRfc3RhdGljX2NvbmZpZyhkKQogICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvciBhcyBmOgogICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNraXBwaW5nIHJlY2lwZSAlczogJXMiICUgKGQuZ2V0VmFyKCdQTicpLCBmKSkKLSAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKGYpCisgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKGYpCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxpdHktdGFza3MuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbGl0eS10YXNrcy5iYmNsYXNzCmluZGV4IDU4N2JmZDQuLmIxZjI3ZDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbGl0eS10YXNrcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbGl0eS10YXNrcy5iYmNsYXNzCkBAIC01MCwxNyArNTAsNCBAQAogICAgICAgICBiYi5mYXRhbChzdHIoZSkpCiB9CiAKLWFkZHRhc2sgY2hlY2t1cmlhbGwgYWZ0ZXIgZG9fY2hlY2t1cmkKLWRvX2NoZWNrdXJpYWxsW3JlY3JkZXB0YXNrXSA9ICJkb19jaGVja3VyaWFsbCBkb19jaGVja3VyaSIKLWRvX2NoZWNrdXJpYWxsW3JlY2lkZXB0YXNrXSA9ICJkb18ke0JCX0RFRkFVTFRfVEFTS30iCi1kb19jaGVja3VyaWFsbFtub3N0YW1wXSA9ICIxIgotZG9fY2hlY2t1cmlhbGwoKSB7Ci0JOgotfQogCi1hZGR0YXNrIGZldGNoYWxsIGFmdGVyIGRvX2ZldGNoCi1kb19mZXRjaGFsbFtyZWNyZGVwdGFza10gPSAiZG9fZmV0Y2hhbGwgZG9fZmV0Y2giCi1kb19mZXRjaGFsbFtyZWNpZGVwdGFza10gPSAiZG9fJHtCQl9ERUZBVUxUX1RBU0t9IgotZG9fZmV0Y2hhbGwoKSB7Ci0JOgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzCmluZGV4IDhlMDdlYWMuLjRmMDE2ZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxzLmJiY2xhc3MKQEAgLTEsNDQgKzEsMyBAQAotIyBGb3IgY29tcGF0aWJpbGl0eQotZGVmIGJhc2VfcGF0aF9qb2luKGEsICpwKToKLSAgICByZXR1cm4gb2UucGF0aC5qb2luKGEsICpwKQotCi1kZWYgYmFzZV9wYXRoX3JlbGF0aXZlKHNyYywgZGVzdCk6Ci0gICAgcmV0dXJuIG9lLnBhdGgucmVsYXRpdmUoc3JjLCBkZXN0KQotCi1kZWYgYmFzZV9wYXRoX291dChwYXRoLCBkKToKLSAgICByZXR1cm4gb2UucGF0aC5mb3JtYXRfZGlzcGxheShwYXRoLCBkKQotCi1kZWYgYmFzZV9yZWFkX2ZpbGUoZmlsZW5hbWUpOgotICAgIHJldHVybiBvZS51dGlscy5yZWFkX2ZpbGUoZmlsZW5hbWUpCi0KLWRlZiBiYXNlX2lmZWxzZShjb25kaXRpb24sIGlmdHJ1ZSA9IFRydWUsIGlmZmFsc2UgPSBGYWxzZSk6Ci0gICAgcmV0dXJuIG9lLnV0aWxzLmlmZWxzZShjb25kaXRpb24sIGlmdHJ1ZSwgaWZmYWxzZSkKLQotZGVmIGJhc2VfY29uZGl0aW9uYWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCk6Ci0gICAgcmV0dXJuIG9lLnV0aWxzLmNvbmRpdGlvbmFsKHZhcmlhYmxlLCBjaGVja3ZhbHVlLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpCi0KLWRlZiBiYXNlX2xlc3Nfb3JfZXF1YWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCk6Ci0gICAgcmV0dXJuIG9lLnV0aWxzLmxlc3Nfb3JfZXF1YWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKLQotZGVmIGJhc2VfdmVyc2lvbl9sZXNzX29yX2VxdWFsKHZhcmlhYmxlLCBjaGVja3ZhbHVlLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpOgotICAgIHJldHVybiBvZS51dGlscy52ZXJzaW9uX2xlc3Nfb3JfZXF1YWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKLQotZGVmIGJhc2VfY29udGFpbnModmFyaWFibGUsIGNoZWNrdmFsdWVzLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpOgotICAgIGJiLm5vdGUoJ2Jhc2VfY29udGFpbnMgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBiYi51dGlscy5jb250YWlucyBpbnN0ZWFkLicpCi0gICAgcmV0dXJuIGJiLnV0aWxzLmNvbnRhaW5zKHZhcmlhYmxlLCBjaGVja3ZhbHVlcywgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKQotCi1kZWYgYmFzZV9ib3RoX2NvbnRhaW4odmFyaWFibGUxLCB2YXJpYWJsZTIsIGNoZWNrdmFsdWUsIGQpOgotICAgIHJldHVybiBvZS51dGlscy5ib3RoX2NvbnRhaW4odmFyaWFibGUxLCB2YXJpYWJsZTIsIGNoZWNrdmFsdWUsIGQpCi0KLWRlZiBiYXNlX3BydW5lX3N1ZmZpeCh2YXIsIHN1ZmZpeGVzLCBkKToKLSAgICByZXR1cm4gb2UudXRpbHMucHJ1bmVfc3VmZml4KHZhciwgc3VmZml4ZXMsIGQpCi0KLWRlZiBvZV9maWx0ZXIoZiwgc3RyLCBkKToKLSAgICByZXR1cm4gb2UudXRpbHMuc3RyX2ZpbHRlcihmLCBzdHIsIGQpCi0KLWRlZiBvZV9maWx0ZXJfb3V0KGYsIHN0ciwgZCk6Ci0gICAgcmV0dXJuIG9lLnV0aWxzLnN0cl9maWx0ZXJfb3V0KGYsIHN0ciwgZCkKLQogZGVmIG1hY2hpbmVfcGF0aHMoZCk6CiAgICAgIiIiTGlzdCBhbnkgZXhpc3RpbmcgbWFjaGluZSBzcGVjaWZpYyBmaWxlc3BhdGggZGlyZWN0b3JpZXMiIiIKICAgICBtYWNoaW5lID0gZC5nZXRWYXIoIk1BQ0hJTkUiKQpAQCAtMzY0LDEyICszMjMsNyBAQAogICAgIHJldHVybiBwa2dzCiAKIGRlZiBnZXRfbXVsdGlsaWJfZGF0YXN0b3JlKHZhcmlhbnQsIGQpOgotICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQotICAgIG92ZXJyaWRlcyA9IGxvY2FsZGF0YS5nZXRWYXIoIk9WRVJSSURFUyIsIEZhbHNlKSArICI6dmlydGNsYXNzLW11bHRpbGliLSIgKyB2YXJpYW50Ci0gICAgbG9jYWxkYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgb3ZlcnJpZGVzKQotICAgIGxvY2FsZGF0YS5zZXRWYXIoIk1MUFJFRklYIiwgdmFyaWFudCArICItIikKLSAgICByZXR1cm4gbG9jYWxkYXRhCi1nZXRfbXVsdGlsaWJfZGF0YXN0b3JlW3ZhcmRlcHNleGNsdWRlXSA9ICJPVkVSUklERVMiCisgICAgcmV0dXJuIG9lLnV0aWxzLmdldF9tdWx0aWxpYl9kYXRhc3RvcmUodmFyaWFudCwgZCkKIAogZGVmIGFsbF9tdWx0aWxpYl90dW5lX3ZhbHVlcyhkLCB2YXIsIHVuaXF1ZSA9IFRydWUsIG5lZWRfc3BsaXQgPSBUcnVlLCBkZWxpbSA9ICcgJyk6CiAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIG9mIGFsbCAke3Zhcn0gaW4gYWxsIG11bHRpbGliIHR1bmUgY29uZmlndXJhdGlvbiIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy93YWYuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvd2FmLmJiY2xhc3MKaW5kZXggYWNiZGEyNy4uMTllOTM3NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy93YWYuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3dhZi5iYmNsYXNzCkBAIC0zLDM5ICszLDIwIEBACiAKIEVYVFJBX09FQ09ORl9hcHBlbmQgPSAiICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30iCiAKLWRlZiBnZXRfd2FmX3BhcmFsbGVsX21ha2UoZCk6Ci0gICAgcG0gPSBkLmdldFZhcignUEFSQUxMRUxfTUFLRScpCi0gICAgaWYgcG06Ci0gICAgICAgICMgbG9vayBmb3IgJy1qJyBhbmQgdGhyb3cgb3RoZXIgb3B0aW9ucyAoZS5nLiAnLWwnKSBhd2F5Ci0gICAgICAgICMgYmVjYXVzZSB0aGV5IG1pZ2h0IGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgaW4gYmphbQotICAgICAgICBwbSA9IHBtLnNwbGl0KCkKLSAgICAgICAgd2hpbGUgcG06Ci0gICAgICAgICAgICB2ID0gTm9uZQotICAgICAgICAgICAgb3B0ID0gcG0ucG9wKDApCi0gICAgICAgICAgICBpZiBvcHQgPT0gJy1qJzoKLSAgICAgICAgICAgICAgICB2ID0gcG0ucG9wKDApCi0gICAgICAgICAgICBlbGlmIG9wdC5zdGFydHN3aXRoKCctaicpOgotICAgICAgICAgICAgICAgIHYgPSBvcHRbMjpdLnN0cmlwKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdiA9IE5vbmUKLQotICAgICAgICAgICAgaWYgdjoKLSAgICAgICAgICAgICAgICB2ID0gbWluKDY0LCBpbnQodikpCi0gICAgICAgICAgICAgICAgcmV0dXJuICctaicgKyBzdHIodikKLQotICAgIHJldHVybiAiIgotCiBweXRob24gd2FmX3ByZWNvbmZpZ3VyZSgpIHsKKyAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgIGZyb20gZGlzdHV0aWxzLnZlcnNpb24gaW1wb3J0IFN0cmljdFZlcnNpb24KLSAgICBzcmNzdWJkaXIgPSBkLmdldFZhcignUycpCi0gICAgd2FmYmluID0gb3MucGF0aC5qb2luKHNyY3N1YmRpciwgJ3dhZicpCi0gICAgc3RhdHVzLCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQod2FmYmluICsgIiAtLXZlcnNpb24iKQotICAgIGlmIHN0YXR1cyAhPSAwOgotICAgICAgICBiYi53YXJuKCJVbmFibGUgdG8gZXhlY3V0ZSB3YWYgLS12ZXJzaW9uLCBleGl0IGNvZGUgJWQuIEFzc3VtaW5nIHdhZiB2ZXJzaW9uIHdpdGhvdXQgYmluZGlyL2xpYmRpciBzdXBwb3J0LiIgJSBzdGF0dXMpCi0gICAgICAgIHJldHVybgotICAgIHZlcnNpb24gPSByZXN1bHQuc3BsaXQoKVsxXQotICAgIGlmIFN0cmljdFZlcnNpb24odmVyc2lvbikgPj0gU3RyaWN0VmVyc2lvbigiMS44LjciKToKLSAgICAgICAgZC5zZXRWYXIoIldBRl9FWFRSQV9DT05GIiwgIi0tYmluZGlyPSR7YmluZGlyfSAtLWxpYmRpcj0ke2xpYmRpcn0iKQorICAgIHN1YnNyY2RpciA9IGQuZ2V0VmFyKCdTJykKKyAgICB3YWZiaW4gPSBvcy5wYXRoLmpvaW4oc3Vic3JjZGlyLCAnd2FmJykKKyAgICB0cnk6CisgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFt3YWZiaW4sICctLXZlcnNpb24nXSwgY3dkPXN1YnNyY2Rpciwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICB2ZXJzaW9uID0gcmVzdWx0LmRlY29kZSgndXRmLTgnKS5zcGxpdCgpWzFdCisgICAgICAgIGlmIFN0cmljdFZlcnNpb24odmVyc2lvbikgPj0gU3RyaWN0VmVyc2lvbigiMS44LjciKToKKyAgICAgICAgICAgIGQuc2V0VmFyKCJXQUZfRVhUUkFfQ09ORiIsICItLWJpbmRpcj0ke2JpbmRpcn0gLS1saWJkaXI9JHtsaWJkaXJ9IikKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKKyAgICAgICAgYmIud2FybigiVW5hYmxlIHRvIGV4ZWN1dGUgd2FmIC0tdmVyc2lvbiwgZXhpdCBjb2RlICVkLiBBc3N1bWluZyB3YWYgdmVyc2lvbiB3aXRob3V0IGJpbmRpci9saWJkaXIgc3VwcG9ydC4iICUgZS5yZXR1cm5jb2RlKQorICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgYmIuZmF0YWwoIndhZiBkb2VzIG5vdCBleGlzdCBpbiAlcyIgJSBzdWJzcmNkaXIpCiB9CiAKIGRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIndhZl9wcmVjb25maWd1cmUiCkBAIC00NCw4ICsyNSw5IEBACiAJJHtTfS93YWYgY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSAke1dBRl9FWFRSQV9DT05GfSAke0VYVFJBX09FQ09ORn0KIH0KIAorZG9fY29tcGlsZVtwcm9ncmVzc10gPSAib3V0b2Y6XlxbXHMqKFxkKykvXHMqKFxkKylcXVxzKyIKIHdhZl9kb19jb21waWxlKCkgIHsKLQkke1N9L3dhZiBidWlsZCAke0BnZXRfd2FmX3BhcmFsbGVsX21ha2UoZCl9CisJJHtTfS93YWYgYnVpbGQgJHtAb2UudXRpbHMucGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCAnLWolZCcsIGxpbWl0PTY0KX0KIH0KIAogd2FmX2RvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCmluZGV4IDFjZGJmNDMuLmEyMWI3MjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCkBAIC0xODcsNiArMTg3LDcgQEAKICAgICB0YXItbmF0aXZlIFwKICAgICB2aXJ0dWFsL2xpYmludGwtbmF0aXZlIFwKICAgICB2aXJ0dWFsL2xpYmljb252LW5hdGl2ZSBcCisgICAgdmlydHVhbC9jcnlwdC1uYXRpdmUgXAogICAgIHRleGluZm8tbmF0aXZlIFwKICAgICBiYXNoLW5hdGl2ZSBcCiAgICAgc2VkLW5hdGl2ZSBcCkBAIC0yMjAsNyArMjIxLDcgQEAKICMgQXV0b21hdGljYWxseSBkZXJpdmVzICJmb28iIGZyb20gImZvby1uYXRpdmUiLCAiZm9vLWNyb3NzIiBvciAiZm9vLWluaXRpYWwiCiAjIG90aGVyd2lzZSBpdCBpcyB0aGUgc2FtZSBhcyBQTiBhbmQgUAogU1BFQ0lBTF9QS0dTVUZGSVggPSAiLW5hdGl2ZSAtY3Jvc3MgLWluaXRpYWwgLWludGVybWVkaWF0ZSAtY3Jvc3NzZGsgLWNyb3NzLWNhbmFkaWFuIgotQlBOID0gIiR7QGJhc2VfcHJ1bmVfc3VmZml4KGQuZ2V0VmFyKCdQTicpLCBkLmdldFZhcignU1BFQ0lBTF9QS0dTVUZGSVgnKS5zcGxpdCgpLCBkKX0iCitCUE4gPSAiJHtAb2UudXRpbHMucHJ1bmVfc3VmZml4KGQuZ2V0VmFyKCdQTicpLCBkLmdldFZhcignU1BFQ0lBTF9QS0dTVUZGSVgnKS5zcGxpdCgpLCBkKX0iCiBCUCA9ICIke0JQTn0tJHtQVn0iCiAKICMgUGFja2FnZSBpbmZvLgpAQCAtNDIzLDYgKzQyNCw4IEBACiBPTERFU1RfS0VSTkVMID0gIjMuMi4wIgogT0xERVNUX0tFUk5FTF9hYXJjaDY0ID0gIjMuMTQiCiBPTERFU1RfS0VSTkVMX25pb3MyID0gIjMuMTkiCitPTERFU1RfS0VSTkVMX3Jpc2N2MzIgPSAiNC4xNSIKK09MREVTVF9LRVJORUxfcmlzY3Y2NCA9ICI0LjE1IgogCiAjIFNES19PTERFU1RfS0VSTkVMIGNhbid0IGJlIHNldCB1c2luZyBvdmVycmlkZXMgc2luY2UgdGhlcmUgYXJlCiAjIG5vbmUgZm9yIHRoZSBTREsgYXJjaGl0ZWN0dXJlLiBCZXN0IHRvIHNldCBpdCBmcm9tIGEgbWFjaGluZS1zZGsKQEAgLTQ5NSw2ICs0OTgsOSBAQAogIyBVc2VkIGJ5IGJ6ciBmZXRjaGVyCiBIT1NUVE9PTFNfTk9ORkFUQUwgKz0gImJ6ciIKIAorIyBVc2VkIGJ5IHNzaCBmZXRjaGVyCitIT1NUVE9PTFNfTk9ORkFUQUwgKz0gInNjcCIKKwogQ0NBQ0hFID8/PSAiIgogIyBjY2FjaGUgPCAzLjEuMTAgd2lsbCBjcmVhdGUgQ0NBQ0hFX0RJUiBvbiBzdGFydHVwIGV2ZW4gaWYgZGlzYWJsZWQsIGFuZAogIyBhdXRvZ2VuIHNldHMgSE9NRT0vZGV2L251bGwgc28gaW4gY2VydGFpbiBzaXR1YXRpb25zIGJ1aWxkcyBjYW4gZmFpbC4KQEAgLTUzNiw2ICs1NDIsNyBAQAogRVhUUkFfT0VNQUtFID0gIiIKIEVYVFJBX09FQ09ORiA9ICIiCiBleHBvcnQgTENfQUxMID0gImVuX1VTLlVURi04IgorZXhwb3J0IFRaID0gJ1VUQycKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFBhdGNoIGhhbmRsaW5nLgpAQCAtNTkzLDkgKzYwMCwxMCBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIE9wdGltaXphdGlvbiBmbGFncy4KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBCZXdhcmU6IGFwcGxpZWQgbGFzdCB0byBmaXJzdAogREVCVUdfUFJFRklYX01BUCA/PSAiLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7V09SS0RJUn09L3Vzci9zcmMvZGVidWcvJHtQTn0vJHtFWFRFTkRQRX0ke1BWfS0ke1BSfSBcCi0gICAgICAgICAgICAgICAgICAgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTVEFHSU5HX0RJUl9OQVRJVkV9PSBcCiAgICAgICAgICAgICAgICAgICAgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTVEFHSU5HX0RJUl9IT1NUfT0gXAorICAgICAgICAgICAgICAgICAgICAgLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7U1RBR0lOR19ESVJfTkFUSVZFfT0gXAogIgogREVCVUdfRkxBR1MgPz0gIi1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAke0RFQlVHX1BSRUZJWF9NQVB9IgogCkBAIC02NjMsNiArNjcxLDcgQEAKIFNSQ0RBVEUgPSAiJHtEQVRFfSIKIFNSQ1JFViA/Pz0gIklOVkFMSUQiCiBBVVRPUkVWID0gIiR7QGJiLmZldGNoMi5nZXRfYXV0b3JldihkKX0iCitBVVRPUkVWW3ZhcmRlcHZhbHVlXSA9ICIke1NSQ1BWfSIKICMgU2V0IER5bmFtaWNhbGx5IGluIGJhc2UuYmJjbGFzcwogIyBTUkNQViA9ICIke0BiYi5mZXRjaDIuZ2V0X3NyY3JldihkKX0iCiBTUkNQVlt2YXJkZXB2YWx1ZV0gPSAiJHtTUkNQVn0iCkBAIC03NTcsNyArNzY2LDcgQEAKIERMX0RJUiA/PSAiJHtUT1BESVJ9L2Rvd25sb2FkcyIKIFNTVEFURV9ESVIgPz0gIiR7VE9QRElSfS9zc3RhdGUtY2FjaGUiCiBJTUFHRV9GU1RZUEVTID89ICJ0YXIuZ3oiCi1JTUFHRV9GU1RZUEVTX0RFQlVHRlMgPz0gIiR7SU1BR0VfRlNUWVBFU30iCitJTUFHRV9GU1RZUEVTX0RFQlVHRlMgPz0gInRhci5neiIKIAogSU5JVFJBTUZTX0ZTVFlQRVMgPz0gImNwaW8uZ3oiCiAjIFRoZSBtYXhpbXVtIHNpemUgaW4gS2J5dGVzIGZvciB0aGUgZ2VuZXJhdGVkIGluaXRyYW1mcyBpbWFnZSBzaXplLgpAQCAtODA3LDcgKzgxNiw3IEBACiAKICMgTmF0aXZlIGRpc3RybyBmZWF0dXJlcyAod2lsbCBhbHdheXMgYmUgdXNlZCBmb3IgLW5hdGl2ZSwgZXZlbiBpZiB0aGV5CiAjIGFyZSBub3QgZW5hYmxlZCBmb3IgdGFyZ2V0KQotRElTVFJPX0ZFQVRVUkVTX05BVElWRSA/PSAieDExIGlwdjYiCitESVNUUk9fRkVBVFVSRVNfTkFUSVZFID89ICJ4MTEgaXB2NiB4YXR0ciIKIERJU1RST19GRUFUVVJFU19OQVRJVkVTREsgPz0gIngxMSBsaWJjLWNoYXJzZXRzIGxpYmMtbG9jYWxlcyBsaWJjLWxvY2FsZS1jb2RlIgogCiAjIE5vcm1hbGx5IHRhcmdldCBkaXN0cm8gZmVhdHVyZXMgd2lsbCBub3QgYmUgYXBwbGllZCB0byBuYXRpdmUgYnVpbGRzOgpAQCAtODU2LDcgKzg2NSw3IEBACiBCQl9IQVNIQkFTRV9XSElURUxJU1QgPz0gIlRNUERJUiBGSUxFIFBBVEggUFdEIEJCX1RBU0tIQVNIIEJCUEFUSCBCQlNFUlZFUiBETF9ESVIgXAogICAgIFNTVEFURV9ESVIgVEhJU0RJUiBGSUxFU0VYVFJBUEFUSFMgRklMRV9ESVJOQU1FIEhPTUUgTE9HTkFNRSBTSEVMTCBURVJNIFwKICAgICBVU0VSIEZJTEVTUEFUSCBTVEFHSU5HX0RJUl9IT1NUIFNUQUdJTkdfRElSX1RBUkdFVCBDT1JFQkFTRSBQUlNFUlZfSE9TVCBcCi0gICAgUFJTRVJWX0RVTVBESVIgUFJTRVJWX0RVTVBGSUxFIFBSU0VSVl9MT0NLRE9XTiBQQVJBTExFTF9NQUtFIFwKKyAgICBTVEFNUFNfRElSIFBSU0VSVl9EVU1QRElSIFBSU0VSVl9EVU1QRklMRSBQUlNFUlZfTE9DS0RPV04gUEFSQUxMRUxfTUFLRSBcCiAgICAgQ0NBQ0hFX0RJUiBFWFRFUk5BTF9UT09MQ0hBSU4gQ0NBQ0hFIENDQUNIRV9OT0hBU0hESVIgTElDRU5TRV9QQVRIIFNES1BLR1NVRkZJWCBcCiAgICAgV0FSTl9RQSBFUlJPUl9RQSBXT1JLRElSIFNUQU1QQ0xFQU4gUEtHREFUQV9ESVIgQlVJTERfQVJDSCBTU1RBVEVfUEtHQVJDSCBcCiAgICAgQkJfV09SS0VSQ09OVEVYVCBCQl9MSU1JVEVEREVQUyBleHRlbmRfcmVjaXBlX3N5c3Jvb3QgREVQTE9ZX0RJUiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYwppbmRleCA3NmQwOWFmLi45NjIwYWQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jCkBAIC00NywzICs0Nyw5IEBACiAKIEdUSzJESVNUUk9GRUFUVVJFUyA9ICJkaXJlY3RmYiB4MTEiCiBHVEszRElTVFJPRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCisKK0FSQ0hfREVGQVVMVF9LRVJORUxJTUFHRVRZUEUgPSAiekltYWdlIgorQVJDSF9ERUZBVUxUX0tFUk5FTElNQUdFVFlQRV94ODYgPSAiYnpJbWFnZSIKK0FSQ0hfREVGQVVMVF9LRVJORUxJTUFHRVRZUEVfeDg2LTY0ID0gImJ6SW1hZ2UiCitLRVJORUxfSU1BR0VUWVBFID8/PSAiJHtBUkNIX0RFRkFVTFRfS0VSTkVMSU1BR0VUWVBFfSIKK0tFUk5FTF9JTUFHRVRZUEVTID8/PSAiJHtLRVJORUxfSU1BR0VUWVBFfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1wcm92aWRlcnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKaW5kZXggMmI3NmMzYy4uZTY1YzFlZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKQEAgLTEsOCArMSw2IEBACiAjCiAjIERlZmF1bHQgdmlydHVhbCBwcm92aWRlcnMKICMKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2RiID89ICJkYiIKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2RiLW5hdGl2ZSA/PSAiZGItbmF0aXZlIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA/PSAieHNlcnZlci14b3JnIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlci14Zjg2ID89ICJ4c2VydmVyLXhvcmciCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9lZ2wgPz0gIm1lc2EiCkBAIC00NCw3ICs0Miw2IEBACiBQUkVGRVJSRURfUFJPVklERVJfb3BrZy1uYXRpdmUgPz0gIm9wa2ctbmF0aXZlIgogUFJFRkVSUkVEX1BST1ZJREVSX25hdGl2ZXNkay1vcGtnID89ICJuYXRpdmVzZGstb3BrZyIKIFBSRUZFUlJFRF9QUk9WSURFUl9jb25zb2xlLXRvb2xzID89ICJrYmQiCi1QUkVGRVJSRURfUFJPVklERVJfZ3ppcC1uYXRpdmUgPz0gInBpZ3otbmF0aXZlIgogUFJFRkVSUkVEX1BST1ZJREVSX3VkZXYgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnc3lzdGVtZCcsJ2V1ZGV2JyxkKX0iCiBQUkVGRVJSRURfUlBST1ZJREVSX2JsdWV6LWhjaWR1bXAgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdibHVldG9vdGggYmx1ZXo1JywnYmx1ZXo1JywnYmx1ZXotaGNpZHVtcCcsZCl9IgogIyBBbHRlcm5hdGl2ZSBpcyBsdHAtZGR0IGluIG1ldGEtb2U6IG1ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHAtZGR0L2x0cC1kZHRfMC4wLjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYwppbmRleCBmN2M4YjRhLi4xM2M3ZTY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCkBAIC0xMzgsNyArMTM4LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1ndGstaWNvbi11dGlscy1uYXRpdmUgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4tc3lzdGVtZC1ib290ID0gIlVidW50dT1zeXN0ZW1kLWJvb3QgRmVkb3JhPXN5c3RlbWQtYm9vdCIKIERJU1RST19QTl9BTElBU19wbi1oZWxsby1tb2QgPSAiT0UtQ29yZSIKLURJU1RST19QTl9BTElBU19wbi1ob3N0YXAtY29uZiA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWh3bGF0ZGV0ZWN0ID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLWljZWNjLWNyZWF0ZS1lbnYgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1pbml0LWlmdXBkb3duID0gIkRlYmlhbj1pZnVwZG93biBVYnVudHU9aWZ1cGRvd24iCkBAIC0xNjAsNyArMTU5LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1rZXltYXBzID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4ta2YgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGFtZSA9ICJEZWJpYW49bGFtZSBVYnVudHU9bGFtZSIKLURJU1RST19QTl9BTElBU19wbi1sYXRlbmN5dG9wID0gIk1lZWdvPWxhdGVuY3l0b3AgRmVkb3JhPWxhdGVuY3l0b3AgRGViaWFuPWxhdGVuY3l0b3AgT3BlblN1U0U9bGF0ZW5jeXRvcCIKIERJU1RST19QTl9BTElBU19wbi1sZGNvbmZpZy1uYXRpdmUgPSAiVWJ1bnR1PWxpYmMtYmluIEZlZG9yYT1nbGliYyIKIERJU1RST19QTl9BTElBU19wbi1saWJhNTIgPSAiTWFuZHJpdmE9YTUyZGVjIERlYmlhbj1hNTJkZWMiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGliYWNwaSA9ICJVYnVudHU9bGliYWNwaSBNYW5kcml2YT1saWJhY3BpIgpAQCAtMjc4LDcgKzI3Niw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tb3BrZy1rZXlyaW5ncyA9ICJPU1BEVCB1cHN0cmVhbT1naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9vcGtnLXV0aWxzIgogRElTVFJPX1BOX0FMSUFTX3BuLW9wa2ctbm9ncGcgPSAiT1NQRFQgdXBzdHJlYW09Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvb3BrZy11dGlscyIKIERJU1RST19QTl9BTElBU19wbi1vcGtnLXV0aWxzID0gIk9TUERUIHVwc3RyZWFtPWdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL29wa2ctdXRpbHMiCi1ESVNUUk9fUE5fQUxJQVNfcG4tb3Byb2ZpbGUgPSAiRGViaWFuPW9wcm9maWxlIEZlZG9yYT1vcHJvZmlsZSIKIERJU1RST19QTl9BTElBU19wbi1vcy1yZWxlYXNlID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWJhc2UgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wYWNrYWdlZ3JvdXAtY29yZSA9ICJPRS1Db3JlIgpAQCAtMzE2LDcgKzMxMyw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tcG9pbnRlcmNhbC14aW5wdXQgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wb25nLWNsb2NrID0gIk9wZW5lZEhhbmQiCiBESVNUUk9fUE5fQUxJQVNfcG4tcG9ydG1hcCA9ICJEZWJpYW49cnBjYmluZCBGZWRvcmE9cnBjYmluZCIKLURJU1RST19QTl9BTElBU19wbi1wb3N0aW5zdC1pbnRlcmNlcHQgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wb3dlcnRvcCA9ICJNZWVnbz1wb3dlcnRvcCBGZWRvcmE9cG93ZXJ0b3AgRGViaWFuPXBvd2VydG9wIE9wZW5TdVNFPXBvd2VydG9wIE1hbmRyaXZhPXBvd2VydG9wIgogRElTVFJPX1BOX0FMSUFTX3BuLXBwcC1kaWFsaW4gPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wcmVzZW50cHJvdG8gPSAiRGViaWFuPXgxMXByb3RvLXByZXNlbnQtZGV2IEZlZG9yYT14b3JnLXgxMS1wcm90by1kZXZlbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKaW5kZXggZDBlNjQ1MC4uNDhhZmY5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKQEAgLTMxLDcgKzMxLDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGljYSA9ICJGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGlkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGl0ZXN0cyA9ICJGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFkd2FpdGEtaWNvbi10aGVtZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFkd2FpdGEtaWNvbi10aGVtZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLWxpYiA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS1wbHVnaW5zID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXN0YXRlID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCkBAIC00NiwxMSArNDYsMTEgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFyZ3Atc3RhbmRhbG9uZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzY2lpZG9jID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hc3BlbGwgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzc2ltcCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzc2ltcCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXQtc3BpMi1hdGsgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWNvcmUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdGsgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWF0ayA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWNvcmUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXRrID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0dHIgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9jb25mID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9jb25mLWFyY2hpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgpAQCAtNTksOCArNTksOCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYXZhaGkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF2YWhpLXVpID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYWJlbHRyYWNlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1maWxlcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2UtcGFzc3dkID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1maWxlcyA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNlLXBhc3N3ZCA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNoID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNoLWNvbXBsZXRpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgpAQCAtNzcsNyArNzcsNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYmxrdG9vbCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmxrdHJhY2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibHVlejUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYm1hcC10b29scyA9ICJFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibWFwLXRvb2xzID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJvb3N0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYm9vdGNoYXJ0MiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJzZC1oZWFkZXJzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgpAQCAtODksMTAgKzg5LDkgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkdG9vbHMtdGFyYmFsbCA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1c3lib3ggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1idXN5Ym94LWluaXR0YWIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ieWFjYyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnppcDIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jYS1jZXJ0aWZpY2F0ZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jYWlybyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhaXJvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhbGlicmF0ZXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhbnRhcmVsbC1mb250cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNjYWNoZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCkBAIC0xMDAsMTIgKzk5LDEyIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jaGtjb25maWcgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNoa2NvbmZpZy1hbHRlcm5hdGl2ZXMtbmF0aXZlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jaHJwYXRoID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3N0LTMuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3RrLTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItMS4wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3N0LTMuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLWd0ay0xLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY21ha2UgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbWFrZS1uYXRpdmUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb2dsLTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvZ2wtMS4wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbXBvc2l0ZXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbm5tYW4gPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1jb25mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKQEAgLTExNiwyMiArMTE1LDIyIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcGlvID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3JhY2tsaWIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3JlYXRlcmVwby1jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3JvbmllID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3JvbmllID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyb3NzLWxvY2FsZWRlZi1uYXRpdmUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtbGludXggPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3J5cHRvZGV2LW1vZHVsZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtdGVzdHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3VwcyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3VybCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jdmUtY2hlY2stdG9vbCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWN2ZS1jaGVjay10b29sID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3dhdXRvbWFjcm9zID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRhbWFnZXByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGFtYWdlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGIgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMtZ2xpYiA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGJ1cy10ZXN0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzLXdhaXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlYmlhbnV0aWxzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlYmlhbnV0aWxzID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXBtb2R3cmFwcGVyLWNyb3NzID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGhjcCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgpAQCAtMTUyLDYgKzE1MSw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kcmkzcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZHJvcGJlYXIgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWR0YyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWR3YXJmc3JjZmlsZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lMmZzcHJvZ3MgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZWQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZWUtYWNwaS1zY3JpcHRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgpAQCAtMTY0LDIyICsxNjQsMjIgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVuY29kaW5ncyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lcGlwaGFueSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWV0aHRvb2wgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZXVkZXYgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZXVkZXYgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZXhwYXQgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWV4cGVjdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZmbXBlZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZpbGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZmlsZSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZmluZHV0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1maXhlc3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZsYWMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZsZXggPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnQtYWxpYXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udC11dGlsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnRjb25maWcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250Y29uZmlnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnRzcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9vbWF0aWMtZmlsdGVycyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9ybWZhY3RvciA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mcmVldHlwZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZyZWV0eXBlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZzdGVzdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mdHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nYXdrID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCkBAIC0xOTMsMzQgKzE5MywzNSBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNhbml0aXplcnMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc291cmNlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjbWFrZWRlcCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjb25mID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NvbmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NyID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiLWNyb3NzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiLWNyb3NzLWNhbmFkaWFuID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RibSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkay1waXhidWYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGstcGl4YnVmID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdldHRleHQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1naG9zdHNjcmlwdCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2l0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsZXcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliLTIuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWItbmV0d29ya2luZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsZXcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi0yLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi1uZXR3b3JraW5nID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLWxvY2FsZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLW10cmFjZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLXNjcmlwdHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGlkZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdscHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ21wID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtY29tbW9uID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZGVza3RvcC10ZXN0aW5nID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtY29tbW9uID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRlc2t0b3AtdGVzdGluZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1kZXNrdG9wMyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRvYy11dGlscyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLXRoZW1lcy1zdGFuZGFyZCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRvYy11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS10aGVtZXMtc3RhbmRhcmQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ251LWNvbmZpZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnUtZWZpID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudS1lZmkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudXBnID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnV0bHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ28gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCkBAIC0yMzUsNTEgKzIzNiw1MSBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3JlcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdyb2ZmID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncnViID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3J1Yi1ib290Y29uZiA9ICJDYWxpZm9ybmlhIFN1bGxpdmFuIDxjYWxpZm9ybmlhLmwuc3VsbGl2YW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdydWItZWZpID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdC1wbGF5ZXIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLWxpYmF2ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1vbXggPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXB5dGhvbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXZhYXBpID0gIldlaSBUZWUgTmcgPHdlaS50ZWUubmdAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0aysgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrMyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0LWV4YW1wbGVzID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0LXZhbGlkYXRlID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLWxpYmF2ID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLW9teCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1tZXRhLWJhc2UgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcHl0aG9uID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXZhYXBpID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrMyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZG9jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWVuZ2luZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstaWNvbi11dGlscy1uYXRpdmUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstc2F0by1lbmdpbmUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndWlsZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZW5naW5lcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstaWNvbi11dGlscy1uYXRpdmUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLXNhdG8tZW5naW5lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd1aWx0LW5hdGl2ZSA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndW1taWJvb3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nemlwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taGFyZmJ1enogPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taGRwYXJtID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taGVscDJtYW4tbmF0aXZlID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1oaWNvbG9yLWljb24tdGhlbWUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ob3N0YXAtY29uZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ob3N0YXAtdXRpbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taGljb2xvci1pY29uLXRoZW1lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWh3bGF0ZGV0ZWN0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taTJjLXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taWNlY2MtY3JlYXRlLWVudiA9ICJKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taWNvbi1uYW1pbmctdXRpbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pY3UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pZnVwZG93biA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0LWlmdXBkb3duID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1ib290ID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWZyYW1ld29yayA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWJvb3QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaS10ZXN0ZnMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLXRlc3RmcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRzY3JpcHRzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtYm9vdCA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1ib290LXRpbnkgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbCA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaSA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaS10ZXN0ZnMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC10ZXN0ZnMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHNjcmlwdHMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taW5wdXRwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbnRsdG9vbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwcm91dGUyID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKQEAgLTMwMiw0MyArMzAzLDM3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rbW9kID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rbW9kLW5hdGl2ZSA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4ta21zY3ViZSA9ICJDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbDNhZnBhZCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWwzYWZwYWQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGFtZSA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGF0ZW5jeXRvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxkY29uZmlnLW5hdGl2ZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxlc3MgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGVzcyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYTUyID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhY3BpID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFpbyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFyY2hpdmUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhcnQtbGdwbCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFydC1sZ3BsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFzc3VhbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhdG9taWMtb3BzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmF2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYnNkID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNhcCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjYXAtbmcgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYnNkID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjYXAgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNhcC1uZyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2dyb3VwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2hlY2sgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2xhc3MtaXNhLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjaGVjayA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY29tcHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjb252ZXJ0LWFzbjEtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNyb2NvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY29udmVydC1hc24xLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY3JvY28gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZGFlbW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZG14ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRuZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRybSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmR1bXB2YWx1ZS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZW52LXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcG94eSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVwb3h5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVyYXRpb24tZm9udHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcnJvci1wZXJsID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV2ZGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXZlbnQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcnJvci1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV2ZGV2ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV2ZW50ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV4aWYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmYWtla2V5ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZmZpID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZmlsZS1jaGVja3RyZWUtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZm0tZXh0cmEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmb250ZW5jID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKQEAgLTM0Niw1NiArMzQxLDU1IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnY2MtaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdjcnlwdCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2ZvcnRyYW4gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnbGFkZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdsdSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdsdSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJncGctZXJyb3IgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmd1ZGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaTE4bi1jb2xsYXRlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJndWRldiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY2FsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY29udiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlkM3RhZyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWRuID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaW5wdXQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpbnB1dCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJqc29uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlia3NiYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm1hdGNoYm94ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibWF0Y2hib3ggPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibW5sID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibXBjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmV3dCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmV3dC1weXRob24gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5mc2lkbWFwID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibm90aWZ5ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibm90aWZ5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5zbDIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuc3MtbWRucyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm9nZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvbXhpbCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvd2wgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvd2wgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGFtID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjYXAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNpYWNjZXNzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNyZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY3JlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY3JlMiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwZm00ID0gIk1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGlwZWxpbmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwbmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicG5nMTIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicG9kLXBsYWluZXItcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnByb3h5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnB0aHJlYWQtc3R1YnMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJyZXBvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicnN2ZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnJzdmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2FtcGxlcmF0ZTAgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNkbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZGwyID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNkbCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2RsMiA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2VjcmV0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic20gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic25kZmlsZTEgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNvbHYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic291cC0yLjQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzb3VwLTIuNCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0YXNuMSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0ZXN0LW5lZWRzLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGhlb3JhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGltZWRhdGUtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRpbWVkYXRlLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGlycGMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sLWNyb3NzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKQEAgLTQwMywxMiArMzk3LDEyIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bmlzdHJpbmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidW53aW5kID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVyY3UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1cmktcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzYi1jb21wYXQgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2IxID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXJpLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNiLWNvbXBhdCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2IxID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzZXIgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidmEgPSAiV2VpIFRlZSBOZyA8d2VpLnRlZS5uZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidmEtdXRpbHMgPSAiV2VpIFRlZSBOZyA8d2VpLnRlZS5uZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidmEgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2YS11dGlscyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZvcmJpcyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlid2VicCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYngxMSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCkBAIC00MjksMTIgKzQyMywxMiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGluZXJhbWEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGtiY29tbW9uID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhrYmZpbGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1wYXJzZXItcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXNheC1iYXNlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2F4LXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2ltcGxlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1wYXJzZXItcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2F4LWJhc2UtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2F4LXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXNpbXBsZS1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbDIgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtdSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cG0gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgpAQCAtNDQyLDcgKzQzNiw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cmVuZGVyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyZXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNjcm5zYXZlciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2V0dGluZ3MtY2xpZW50ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNldHRpbmdzLWNsaWVudCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2htZmVuY2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNsdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKQEAgLTQ2MiwxMCArNDU2LDEwIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0by1ydCA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0by10aW55ID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxsdm0gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sb2dyb3RhdGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbG9ncm90YXRlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1scnpzeiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2IgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzYmluaXRzY3JpcHRzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHNiaW5pdHNjcmlwdHMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbHNidGVzdCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbHNvZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sdHAgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKQEAgLTQ3OCwzNSArNDcyLDM2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sem9wID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbTQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbTQtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1haWx4ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ha2UgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWFrZWRlcGVuZCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWtlZGV2cyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWFuID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWtlLW1vZC1zY3JpcHRzID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hbi1kYiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWFuLXBhZ2VzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1jb25maWctZ3RrID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtZGVza3RvcCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWRlc2t0b3Atc2F0byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWtleWJvYXJkID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtcGFuZWwtMiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXNlc3Npb24gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1zZXNzaW9uLXNhdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC10ZXJtaW5hbCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXRoZW1lLXNhdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC13bSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWNvbmZpZy1ndGsgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtZGVza3RvcCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1kZXNrdG9wLXNhdG8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gta2V5Ym9hcmQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtcGFuZWwtMiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1zZXNzaW9uID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXNlc3Npb24tc2F0byA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC10ZXJtaW5hbCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC10aGVtZS1zYXRvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXdtID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1jID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1kYWRtID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lbnUtY2FjaGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZW51LWNhY2hlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc2EgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXNhLWRlbW9zID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWVzYS1nbCA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc29uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS1lbnZpcm9ubWVudCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWVudmlyb25tZW50LWV4dHNkayA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWV4dHNkay10b29sY2hhaW4gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS1pZGUtc3VwcG9ydCA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtdG9vbGNoYWluID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS13b3JsZC1wa2dkYXRhID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmdldHR5ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmdldHR5ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pLXgtc2Vzc2lvbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pY29tID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rZWxmaW1hZ2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCkBAIC01MTYsMjIgKzUxMSwyMiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbWt0ZW1wID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1tYy11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tb2R1dGlscy1pbml0c2NyaXB0cyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tb2R1dGlscy1pbml0c2NyaXB0cyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbXBlZzJkZWMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGZyID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbXBnMTIzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbXNtdHAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tdGQtdXRpbHMgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tdGRldiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW10ZGV2ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW10b29scyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tdXNsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbXgtMS4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXVzbC11dGlscyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW14LTEuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXNtID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15ID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1saWJ0b29sID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstcWVtdS1oZWxwZXIgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstcG9zdGluc3QtaW50ZXJjZXB0ID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLXFlbXUtaGVscGVyID0gIkp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmN1cnNlcyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmVhcmQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmVvbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCkBAIC01MzksMTQgKzUzNCwxNCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbmV0YmFzZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZXR0bGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZnMtZXhwb3J0LXJvb3QgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmZzLXV0aWxzID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmZzLXV0aWxzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5pbmphID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbnB0aCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcHIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbnNzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcy1teWhvc3RuYW1lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9mb25vID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9oLXB1enpsZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vaC1wdXp6bGVzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wZW5zc2ggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb3BlbnNzbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wa2cgPSAiQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4iCkBAIC01NjEsMzEgKzU1NiwyOSBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tb3ZtZi1zaGVsbC1pbWFnZSA9ICJSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcDExLWtpdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2UtaW5kZXggPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYW5nbyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhbmdvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhcnRlZCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGF0Y2ggPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhdGNoZWxmID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBheCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGF4LXV0aWxzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYnppcDIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wY2l1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGNtYW5mbSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBjbWNpYXV0aWxzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmYgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmwtbmF0aXZlID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGlnbGl0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsLW5hdGl2ZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1waWdsaXQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGlneiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGluZW50cnkgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1waXhtYW4gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1waXhtYW4gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGl4eiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBrZ2NvbmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGtnY29uZmlnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBtLXV0aWxzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvaW50ZXJjYWwgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb2ludGVyY2FsLXhpbnB1dCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvbmctY2xvY2sgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb25nLWNsb2NrID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvcHQgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvcnRtYXAgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcG93ZXJ0b3AgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wcHAgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBwcC1kaWFsaW4gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKQEAgLTU5NSw1NCArNTg4LDM3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wc2V1ZG8gPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBzbWlzYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBzcGxhc2ggPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB0ZXN0LXJ1bm5lciA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB0ZXN0LXJ1bm5lciA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdWxzZWF1ZGlvID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdWxzZWF1ZGlvLWNsaWVudC1jb25mLXNhdG8gPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1enpsZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24gPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5hdGl2ZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tYXN5bmMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1kaXN0cmlidXRlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tZ2l0ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tZ2l0ZGIgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1pbWFnaW5nID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbWFrbyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5hdGl2ZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbm9zZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW51bXB5ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcGV4cGVjdCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXB0eXByb2Nlc3MgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1weWNhaXJvID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHljdXJsID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHlndGsgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1weXJleCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNjb25zID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2NvbnMtbmF0aXZlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2V0dXB0b29scyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNpeCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNtYXJ0cG0gPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zbW1hcCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMyA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWFzeW5jID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRidXMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZGlzdHJpYnV0ZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1kb2N1dGlscyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1naXQgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZ2l0ZGIgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtaW5pcGFyc2UgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbWFrbyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1uYXRpdmUgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1ub3NlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW51bXB5ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXBpcCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1weWNhaXJvID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Z29iamVjdCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zZXR1cHRvb2xzID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNpeCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zbW1hcCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXUtaGVscGVyLW5hdGl2ZSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXV3cmFwcGVyLWNyb3NzID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHV6emxlcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24gPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbmF0aXZlID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5vc2UgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbnVtcHkgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2NvbnMgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2NvbnMtbmF0aXZlID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNldHVwdG9vbHMgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1hc3luYyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZGJ1cyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZG9jdXRpbHMgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWdpdCA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZ2l0ZGIgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWluaXBhcnNlID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1tYWtvID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1uYXRpdmUgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW5vc2UgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW51bXB5ID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1waXAgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Y2Fpcm8gPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Z29iamVjdCA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc2V0dXB0b29scyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc2l4ID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zbW1hcCA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXUgPSAiSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11LWhlbHBlci1uYXRpdmUgPSAiSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11d3JhcHBlci1jcm9zcyA9ICJKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXF1aWx0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXF1aWx0LW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1xdW90YSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCkBAIC02NTksMjcgKzYzNSwyNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tcm5nLXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJwbSA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcnBtcmVzb2x2ZSA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnN5bmMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnN5bmMgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ0LXRlc3RzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnVieSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ1YnkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcnVuLXBvc3RpbnN0cyA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ4dnQtdW5pY29kZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zYXRvLWljb24tdGhlbWUgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2F0by1zY3JlZW5zaG90ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2F0by1zY3JlZW5zaG90ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNiYyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2NyZWVuID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNjcm5zYXZlcnByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNlZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2VyZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXRzZXJpYWwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2V0dGluZ3MtZGFlbW9uID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2V0c2VyaWFsID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXR0aW5ncy1kYWVtb24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhZG93ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFkb3ctc2VjdXJldHR5ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFkb3ctc3lzcm9vdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhcmVkLW1pbWUtaW5mbyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYXJlZC1taW1lLWluZm8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2h1dGRvd24tZGVza3RvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNpZ25pbmcta2V5cyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zbGFuZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zbGFuZyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc29jYXQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNvdXJjZS1oaWdobGlnaHQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zcGVleCA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgpAQCAtNjg3LDEzICs2NjIsMTIgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNxbGl0ZTMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3F1YXNoZnMtdG9vbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3RhcnR1cC1ub3RpZmljYXRpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zdGF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdHJhY2UgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3RyZXNzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN1YnZlcnNpb24gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3VkbyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3dhYmJlci1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zd2lnID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3dpZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNmc3V0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNrbG9nZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzbGludXggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCkBAIC03MDIsMjkgKzY3NiwyOCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWJvb3RjaGFydCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290Y29uZiA9ICJDYWxpZm9ybmlhIFN1bGxpdmFuIDxjYWxpZm9ybmlhLmwuc3VsbGl2YW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtY29tcGF0LXVuaXRzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLXNlcmlhbGdldHR5ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbXRhcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbXRhcC11cHJvYmVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdmluaXQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdC1pbml0dGFiID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdmluaXQgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdmluaXQtaW5pdHRhYiA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10YWdsaWIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGFyID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2YtYWdlbnQgPSAiUmFuZHkgV2l0dCA8cmFuZHkuZS53aXR0QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2wgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGNsID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10Y3Atd3JhcHBlcnMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGVzdGV4cG9ydC10YXJiYWxsID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGkyaHRtbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpbmZvID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aW5mby1kdW1teS1uYXRpdmUgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpbmZvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8tZHVtbXktbmF0aXZlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpZmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10aW1lID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpbnktaW5pdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRyYWNlLWNtZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRyZW1vciA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdHNsaWIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10dGYtYml0c3RyZWFtLXZlcmEgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10dGYtYml0c3RyZWFtLXZlcmEgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdHpjb2RlLW5hdGl2ZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10emRhdGEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdS1ib290ID0gIk1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+IgpAQCAtNzM2LDcgKzcwOSw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11bmlmZGVmID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdW5pbmF0aXZlLXRhcmJhbGwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdW56aXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11cGRhdGUtcmMuZCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVwZGF0ZS1yYy5kID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVzYmluaXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11c2J1dGlscyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXV0aWwtbGludXggPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKQEAgLTc0NiwxMCArNzE5LDEwIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi12YWxncmluZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZpZGVvcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdm9sYXRpbGUtYmluZHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ0ZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ1bGthbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ1bGthbi1kZW1vcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhZmZsZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ0ZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12dWxrYW4gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdnVsa2FuLWRlbW9zID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhZmZsZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13YXRjaGRvZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhdGNoZG9nLWNvbmZpZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdheWxhbmQgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCkBAIC03NTcsMTQgKzczMCwxNCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4td2Via2l0Z3RrID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4td2VzdG9uID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4td2VzdG9uLWluaXQgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi13Z2V0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdoaWNoID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2ljLXRvb2xzID0gIkVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdnZXQgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdoaWNoID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdpYy10b29scyA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13aXJlbGVzcy10b29scyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13cGEtc3VwcGxpY2FudCA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14MTEtY29tbW9uID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXgxMXBlcmYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teDI2NCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXgyNjQgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14YXV0aCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgpAQCAtNzc0LDcgKzc0Nyw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC13bSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y21pc2Nwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkZy11dGlscyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkZy11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14ZHB5aW5mbyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14ZXYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teGV4dHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKQEAgLTgxNiw3ICs3ODksNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci14b3JnID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teHRyYW5zID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh0c2NhbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14dXNlci1hY2NvdW50ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh2aWRlby10ZXN0cyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14dmluZm8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgpAQCAtODI0LDUgKzc5Niw0IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14eiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXlhc20gPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXppcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXppc29mcy10b29scy1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi16bGliID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwppbmRleCBhYjIwNjJiLi5kNjZkZDU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwpAQCAtNiwxMCArNiwxMSBAQAogIyBpbiB0aGUgRElTVFJPPSJwb2t5LWxzYiIgY29uZmlndXJhdGlvbi4KIAogR0NDUElFID89ICItLWVuYWJsZS1kZWZhdWx0LXBpZSIKK0dMSUJDUElFID89ICItLWVuYWJsZS1zdGF0aWMtcGllIgogCiAjIF9GT1JUSUZZX1NPVVJDRSByZXF1aXJlcyAtTzEgb3IgaGlnaGVyLCBzbyBkaXNhYmxlIGluIGRlYnVnIGJ1aWxkcyBhcyB0aGV5IHVzZQogIyAtTzAgd2hpY2ggdGhlbiByZXN1bHRzIGluIGEgY29tcGlsZXIgd2FybmluZy4KLWxjbF9tYXliZV9mb3J0aWZ5ID0gIiR7QGJhc2VfY29uZGl0aW9uYWwoJ0RFQlVHX0JVSUxEJywnMScsJycsJy1EX0ZPUlRJRllfU09VUkNFPTInLGQpfSIKK2xjbF9tYXliZV9mb3J0aWZ5ID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdERUJVR19CVUlMRCcsJzEnLCcnLCctRF9GT1JUSUZZX1NPVVJDRT0yJyxkKX0iCiAKICMgRXJyb3Igb24gdXNlIG9mIGZvcm1hdCBzdHJpbmdzIHRoYXQgcmVwcmVzZW50IHBvc3NpYmxlIHNlY3VyaXR5IHByb2JsZW1zCiBTRUNVUklUWV9TVFJJTkdGT1JNQVQgPz0gIi1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IgpAQCAtMzAsNiArMzEsNyBAQAogU0VDVVJJVFlfQ0ZMQUdTX3Bvd2VycGMgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nICR7bGNsX21heWJlX2ZvcnRpZnl9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1saWJnY2NfcG93ZXJwYyA9ICIiCiBHQ0NQSUVfcG93ZXJwYyA9ICIiCitHTElCQ1BJRV9wb3dlcnBjID0gIiIKIAogIyBhcm0gc3BlY2lmaWMgc2VjdXJpdHkgZmxhZyBpc3N1ZXMKIFNFQ1VSSVRZX0NGTEFHU19wbi1nbGliYyA9ICIiCkBAIC01OSwxMiArNjEsOCBAQAogU0VDVVJJVFlfTERGTEFHU19yZW1vdmVfcG4tZ2NjLXJ1bnRpbWUgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgogU0VDVVJJVFlfTERGTEFHU19yZW1vdmVfcG4tZ2xpYmMgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgogU0VDVVJJVFlfTERGTEFHU19yZW1vdmVfcG4tZ2xpYmMtaW5pdGlhbCA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCi1TRUNVUklUWV9MREZMQUdTX3BuLXhmODYtdmlkZW8tZmJkZXYgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgotU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLWludGVsID0gIiR7U0VDVVJJVFlfWF9MREZMQUdTfSIKLVNFQ1VSSVRZX0xERkxBR1NfcG4teGY4Ni12aWRlby1vbWFwZmIgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgotU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLW9tYXAgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgotU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLXZlc2EgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgotU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLXZtd2FyZSA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCisjIEFsbCB4b3JnIG1vZHVsZSBkcml2ZXJzIG5lZWQgdG8gYmUgbGlua2VkIHRoaXMgd2F5IGFzIHdlbGwgYW5kIGFyZQorIyBoYW5kbGVkIGluIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwogU0VDVVJJVFlfTERGTEFHU19wbi14c2VydmVyLXhvcmcgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgogCiBUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfcG4tYmludXRpbHMgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW11c2wuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMKaW5kZXggOWFlMmE5My4uNTRlMWFjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMKQEAgLTI2LDQgKzI2LDcgQEAKICAgICBtdXNsIFwKICAgICBtdXNsLWRiZyBcCiAgICAgbXVzbC1kZXYgXAorICAgIG11c2wtdXRpbHMgXAorICAgIG11c2wtdXRpbHMtaWNvbnYgXAorICAgIGJzZC1oZWFkZXJzLWRldiBcCiAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYwppbmRleCAxNzg3YTgyLi4wMDM5OWFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYwpAQCAtMjQsMTAgKzI0LDExIEBACiAKIEdDQ1ZFUlNJT04gPz0gIjcuJSIKIFNES0dDQ1ZFUlNJT04gPz0gIiR7R0NDVkVSU0lPTn0iCi1CSU5VVkVSU0lPTiA/PSAiMi4yOSUiCitCSU5VVkVSU0lPTiA/PSAiMi4zMCUiCiBHREJWRVJTSU9OID89ICI4LjAlIgotR0xJQkNWRVJTSU9OID89ICIyLjI2JSIKLUxJTlVYTElCQ1ZFUlNJT04gPz0gIjQuMTIlIgorR0xJQkNWRVJTSU9OID89ICIyLjI3JSIKK0xJTlVYTElCQ1ZFUlNJT04gPz0gIjQuMTUlIgorUUVNVVZFUlNJT04gPz0gIjIuMTElIgogCiBQUkVGRVJSRURfVkVSU0lPTl9nY2MgPz0gIiR7R0NDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3MtJHtUQVJHRVRfQVJDSH0gPz0gIiR7R0NDVkVSU0lPTn0iCkBAIC02MywxMCArNjQsMjEgQEAKIFBSRUZFUlJFRF9WRVJTSU9OX2dsaWJjLWluaXRpYWwgICAgICAgICAgICA/PSAiJHtHTElCQ1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fbmF0aXZlc2RrLWdsaWJjLWluaXRpYWwgID89ICIke0dMSUJDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlICAgPz0gIiR7R0xJQkNWRVJTSU9OfSIKLSMgZG9uJ3QgdXNlIHZlcnNpb24gZWFybGllciB0aGFuIDEuNCBmb3IgZ3ppcC1uYXRpdmUsIGFzIGl0J3MgbmVjZXNzYXJ5IGZvcgotIyBzb21lIHBhY2thZ2VzIHVzaW5nIGFuIGFyY2hpdmUgZm9ybWF0IGluY29tcGF0aWJsZSB3aXRoIGVhcmxpZXIgZ3ppcAotUFJFRkVSUkVEX1ZFUlNJT05fZ3ppcC1uYXRpdmUgPz0gIjEuOCIKIAorCitQUkVGRVJSRURfVkVSU0lPTl9xZW11ID89ICIke1FFTVVWRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX3FlbXUtbmF0aXZlID89ICIke1FFTVVWRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX25hdGl2ZXNkay1xZW11ID89ICIke1FFTVVWRVJTSU9OfSIKICMgU2V0dXAgc3VpdGFibGUgdG9vbGNoYWluIGZsYWdzCiByZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvYXMtbmVlZGVkLmluYwogCitHT1ZFUlNJT04gPz0gIjEuOSUiCitQUkVGRVJSRURfVkVSU0lPTl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyA/PSAiJHtHT1ZFUlNJT059IgorUFJFRkVSUkVEX1ZFUlNJT05fZ28tY3Jvc3MtJHtUQVJHRVRfQVJDSH0gPz0gIiR7R09WRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX2dvLWNyb3Nzc2RrLSR7U0RLX0FSQ0h9ID89ICIke0dPVkVSU0lPTn0iCitQUkVGRVJSRURfVkVSU0lPTl9nby1jcm9zcy1jYW5hZGlhbi0ke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9ID89ICIke0dPVkVSU0lPTn0iCitQUkVGRVJSRURfVkVSU0lPTl9nbyA/PSAiJHtHT1ZFUlNJT059IgorUFJFRkVSUkVEX1ZFUlNJT05fZ28tbmF0aXZlID89ICIke0dPVkVSU0lPTn0iCitQUkVGRVJSRURfVkVSU0lPTl9nby1ydW50aW1lID89ICIke0dPVkVSU0lPTn0iCitQUkVGRVJSRURfVkVSU0lPTl9uYXRpdmVzZGstZ28gPz0gIiR7R09WRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX25hdGl2ZXNkay1nby1ydW50aW1lID89ICIke0dPVkVSU0lPTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMKaW5kZXggY2Q1ZmMwYi4uYThlODJjYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYwpAQCAtOCw2ICs4LDYgQEAKIAogVU5JTkFUSVZFX01BWEdMSUJDVkVSU0lPTiA9ICIyLjI3IgogCi1VTklOQVRJVkVfVVJMID89ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvdW5pbmF0aXZlLzEuOC8iCi1VTklOQVRJVkVfQ0hFQ0tTVU1baTY4Nl0gPz0gIjQyN2NlNTIyZWM5N2Y2NWM3NWZkODk1ODdkOTBlZjc4OWU4Y2JjYTRhNjE3YWJjNGI1ODIyYWJiMDFjMmQwYWUiCi1VTklOQVRJVkVfQ0hFQ0tTVU1beDg2XzY0XSA/PSAiZGU0OTQ3ZTk4ZTA5ZTE0MzJkMDY5MzExY2MyMDkzOTc0ZWNiOTEzOGE3MTRmZDU0NjZmNzM1MjRkZTY2YTY5MyIKK1VOSU5BVElWRV9VUkwgPz0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy91bmluYXRpdmUvMS45LyIKK1VOSU5BVElWRV9DSEVDS1NVTVtpNjg2XSA/PSAiODNhNGY5MjdkYTgxZDk4ODllZjBjYmU1YzEyY2I3ODJlMjFjNmNjMTFlNjE1NTYwMGI5NGZmMGM5OTU3NmRjZSIKK1VOSU5BVElWRV9DSEVDS1NVTVt4ODZfNjRdID89ICJjMjY2MjJhMWYyN2RiZjViMjVkZTk4NmIxMTU4NGI1YzViMmYzMjJkOWViMzY3ZjcwNWE3NDRmNThhNTU2MWVjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgppbmRleCAwODFlNzI2Li4yNTRmOGYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgpAQCAtOCw3ICs4LDYgQEAKIGRvX2J1aWxkW2RvY10gPSAiRGVmYXVsdCB0YXNrIGZvciBhIHJlY2lwZSAtIGRlcGVuZHMgb24gYWxsIG90aGVyIG5vcm1hbCB0YXNrcyByZXF1aXJlZCB0byAnYnVpbGQnIGEgcmVjaXBlIgogZG9fYnVuZGxlX2luaXRyYW1mc1tkb2NdID0gIkNvbWJpbmVzIGFuIGluaXRpYWwgcmFtZGlzayBpbWFnZSBhbmQga2VybmVsIHRvZ2V0aGVyIHRvIGZvcm0gYSBzaW5nbGUgaW1hZ2UiCiBkb19jaGVja3VyaVtkb2NdID0gIlZhbGlkYXRlcyB0aGUgU1JDX1VSSSB2YWx1ZSIKLWRvX2NoZWNrdXJpYWxsW2RvY10gPSAiVmFsaWRhdGVzIHRoZSBTUkNfVVJJIHZhbHVlIGZvciBhbGwgcmVjaXBlcyByZXF1aXJlZCB0byBidWlsZCBhIHRhcmdldCIKIGRvX2NsZWFuW2RvY10gPSAiUmVtb3ZlcyBhbGwgb3V0cHV0IGZpbGVzIGZvciBhIHRhcmdldCIKIGRvX2NsZWFuYWxsW2RvY10gPSAiUmVtb3ZlcyBhbGwgb3V0cHV0IGZpbGVzLCBzaGFyZWQgc3RhdGUgY2FjaGUsIGFuZCBkb3dubG9hZGVkIHNvdXJjZSBmaWxlcyBmb3IgYSB0YXJnZXQiCiBkb19jbGVhbnNzdGF0ZVtkb2NdID0gIlJlbW92ZXMgYWxsIG91dHB1dCBmaWxlcyBhbmQgc2hhcmVkIHN0YXRlIGNhY2hlIGZvciBhIHRhcmdldCIKQEAgLTIyLDcgKzIxLDYgQEAKIGRvX2RldnNoZWxsW2RvY10gPSAiU3RhcnRzIGEgc2hlbGwgd2l0aCB0aGUgZW52aXJvbm1lbnQgc2V0IHVwIGZvciBkZXZlbG9wbWVudC9kZWJ1Z2dpbmciCiBkb19kaWZmY29uZmlnW2RvY10gPSAiQ29tcGFyZXMgdGhlIG9sZCBhbmQgbmV3IGNvbmZpZyBmaWxlcyBhZnRlciBydW5uaW5nIGRvX21lbnVjb25maWcgZm9yIHRoZSBrZXJuZWwiCiBkb19mZXRjaFtkb2NdID0gIkZldGNoZXMgdGhlIHNvdXJjZSBjb2RlIgotZG9fZmV0Y2hhbGxbZG9jXSA9ICJGZXRjaGVzIGFsbCByZW1vdGUgc291cmNlcyByZXF1aXJlZCB0byBidWlsZCBhIHRhcmdldCIKIGRvX2luc3RhbGxbZG9jXSA9ICJDb3BpZXMgZmlsZXMgZnJvbSB0aGUgY29tcGlsYXRpb24gZGlyZWN0b3J5IHRvIGEgaG9sZGluZyBhcmVhIgogZG9faW5zdGFsbF9wdGVzdF9iYXNlW2RvY10gPSAiQ29waWVzIHRoZSBydW50aW1lIHRlc3Qgc3VpdGUgZmlsZXMgZnJvbSB0aGUgY29tcGlsYXRpb24gZGlyZWN0b3J5IHRvIGEgaG9sZGluZyBhcmVhIgogZG9fa2VybmVsX2NoZWNrb3V0W2RvY10gPSAiQ2hlY2tzIG91dCBzb3VyY2UvbWV0YSBicmFuY2hlcyBmb3IgYSBsaW51eC15b2N0byBzdHlsZSBrZXJuZWwiCkBAIC0yNDcsNiArMjQ1LDcgQEAKIEtFUk5FTF9JTUFHRVRZUEVTW2RvY10gPSAiVGhlIGxpc3Qgb2YgdHlwZXMgb2Yga2VybmVsIHRvIGJ1aWxkIGZvciBhIGRldmljZSwgdXN1YWxseSBzZXQgYnkgdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgZGVmYXVsdHMgdG8gS0VSTkVMX0lNQUdFVFlQRS4iCiBLRVJORUxfTU9EVUxFX0FVVE9MT0FEW2RvY10gPSAiTGlzdHMga2VybmVsIG1vZHVsZXMgdGhhdCBuZWVkIHRvIGJlIGF1dG8tbG9hZGVkIGR1cmluZyBib290IgogS0VSTkVMX01PRFVMRV9QUk9CRUNPTkZbZG9jXSA9ICJMaXN0cyBrZXJuZWwgbW9kdWxlcyBmb3Igd2hpY2ggdGhlIGJ1aWxkIHN5c3RlbSBleHBlY3RzIHRvIGZpbmQgbW9kdWxlX2NvbmZfKiB2YWx1ZXMgdGhhdCBzcGVjaWZ5IGNvbmZpZ3VyYXRpb24gZm9yIGVhY2ggb2YgdGhlIG1vZHVsZXMiCitLRVJORUxfUEFDS0FHRV9OQU1FW2RvY10gPSAiTmFtZSBwcmVmaXggZm9yIGtlcm5lbCBwYWNrYWdlcy4gRGVmYXVsdHMgdG8gJ2tlcm5lbCcuIgogS0VSTkVMX1BBVEhbZG9jXSA9ICJUaGUgbG9jYXRpb24gb2YgdGhlIGtlcm5lbCBzb3VyY2VzLiBUaGlzIHZhcmlhYmxlIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhlIFNUQUdJTkdfS0VSTkVMX0RJUiB3aXRoaW4gdGhlIG1vZHVsZSBjbGFzcyAobW9kdWxlLmJiY2xhc3MpLiIKIEtFUk5FTF9TUkNbZG9jXSA9ICJUaGUgbG9jYXRpb24gb2YgdGhlIGtlcm5lbCBzb3VyY2VzLiBUaGlzIHZhcmlhYmxlIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhlIFNUQUdJTkdfS0VSTkVMX0RJUiB3aXRoaW4gdGhlIG1vZHVsZSBjbGFzcyAobW9kdWxlLmJiY2xhc3MpLiIKIEtGRUFUVVJFX0RFU0NSSVBUSU9OW2RvY10gPSAiUHJvdmlkZXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBvZiBhIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQuIFlvdSB1c2UgdGhpcyB2YXJpYWJsZSBpbiB0aGUgLnNjYyBmaWxlIHRoYXQgZGVzY3JpYmVzIGEgY29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlLiIKQEAgLTMzMyw3ICszMzIsNiBAQAogUFJFRkVSUkVEX1BST1ZJREVSW2RvY10gPSAiSWYgbXVsdGlwbGUgcmVjaXBlcyBwcm92aWRlIGFuIGl0ZW0sIHRoaXMgdmFyaWFibGUgZGV0ZXJtaW5lcyB3aGljaCByZWNpcGUgc2hvdWxkIGJlIGdpdmVuIHByZWZlcmVuY2UuIgogUFJFRkVSUkVEX1ZFUlNJT05bZG9jXSA9ICJJZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgcmVjaXBlcyBhdmFpbGFibGUsIHRoaXMgdmFyaWFibGUgZGV0ZXJtaW5lcyB3aGljaCByZWNpcGUgc2hvdWxkIGJlIGdpdmVuIHByZWZlcmVuY2UuIgogUFJFTUlSUk9SU1tkb2NdID0gIlNwZWNpZmllcyBhZGRpdGlvbmFsIHBhdGhzIGZyb20gd2hpY2ggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZ2V0cyBzb3VyY2UgY29kZS4iCi1QUklOQ1tkb2NdID0gIkNhdXNlcyB0aGUgUFIgdmFyaWFibGUgb2YgLmJiYXBwZW5kIGZpbGVzIHRvIGR5bmFtaWNhbGx5IGluY3JlbWVudC4gVGhpcyBpbmNyZW1lbnQgbWluaW1pemVzIHRoZSBpbXBhY3Qgb2YgbGF5ZXIgb3JkZXJpbmcuIFRoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gJzAnLiIKIFBSSU9SSVRZW2RvY10gPSAiSW5kaWNhdGVzIHRoZSBpbXBvcnRhbmNlIG9mIGEgcGFja2FnZS4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzICdvcHRpb25hbCcuICBPdGhlciBzdGFuZGFyZCB2YWx1ZXMgYXJlICdyZXF1aXJlZCcsICdzdGFuZGFyZCcgYW5kICdleHRyYScuIgogUFJPVklERVNbZG9jXSA9ICJBIGxpc3Qgb2YgYWxpYXNlcyB0aGF0IGEgcmVjaXBlIGFsc28gcHJvdmlkZXMuIFRoZXNlIGFsaWFzZXMgYXJlIHVzZWZ1bCBmb3Igc2F0aXNmeWluZyBkZXBlbmRlbmNpZXMgb2Ygb3RoZXIgcmVjaXBlcyBkdXJpbmcgdGhlIGJ1aWxkIGFzIHNwZWNpZmllZCBieSBERVBFTkRTLiIKIFBSU0VSVl9IT1NUW2RvY10gPSAiVGhlIG5ldHdvcmsgYmFzZWQgUFIgc2VydmljZSBob3N0IGFuZCBwb3J0LiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgppbmRleCAwYzNkYWU1Li4zMTVmYjkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9sYXllci5jb25mCkBAIC03LDExICs3LDEyIEBACiBCQkZJTEVfUEFUVEVSTl9jb3JlID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfY29yZSA9ICI1IgogCitMQVlFUlNFUklFU19DT1JFTkFNRVMgPSAic3VtbyIKKwogIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCiAjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCiBMQVlFUlZFUlNJT05fY29yZSA9ICIxMSIKLQotTEFZRVJTRVJJRVNfQ09SRU5BTUVTID0gInJvY2tvIgorTEFZRVJTRVJJRVNfQ09NUEFUX2NvcmUgPSAic3VtbyIKIAogQkJMQVlFUlNfTEFZRVJJTkRFWF9OQU1FX2NvcmUgPSAib3BlbmVtYmVkZGVkLWNvcmUiCiAKQEAgLTQ1LDYgKzQ2LDExIEBACiAiCiAKIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIiBcCisgICotPnF1aWx0LW5hdGl2ZSBcCisgICotPnN1YnZlcnNpb24tbmF0aXZlIFwKKyAgKi0+Z2l0LW5hdGl2ZSBcCisgICotPmNjYWNoZS1uYXRpdmUgXAorICAqLT5pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSBcCiAgIGdjYy1jcm9zcy0ke1RBUkdFVF9BUkNIfS0+dmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1mb3ItZ2NjIFwKICAgZ2NjLWNyb3NzLSR7VEFSR0VUX0FSQ0h9LT5saW51eC1saWJjLWhlYWRlcnMgXAogICBwcHAtZGlhbGluLT5wcHAgXApAQCAtNjIsMTMgKzY4LDE0IEBACiAgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC0+Z3J1YiBcCiAgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC0+cGFydGVkIFwKICAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLT51dGlsLWxpbnV4IFwKKyAgZ3J1Yi1lZmktPmdydWItYm9vdGNvbmYgXAogICBsaWJlcmF0aW9uLWZvbnRzLT5mb250Y29uZmlnIFwKICAgY2FudGFyZWxsLWZvbnRzLT5mb250Y29uZmlnIFwKICAgZ25vbWUtaWNvbi10aGVtZS0+bGlicnN2ZyBcCiAgIGZvbnQtYWxpYXMtPmZvbnQtdXRpbCBcCisgIHN5c3RlbWQtYm9vdC0+c3lzdGVtZC1ib290Y29uZiBcCiAgIHdlc3Rvbi1pbml0LT53ZXN0b24gXAogICB3ZXN0b24taW5pdC0+a2JkIFwKLSAgb3Byb2ZpbGUtPnZpcnR1YWwva2VybmVsIFwKICIKIAogIyBXZSBuZWVkIHRvIGtlZXAgYml0YmFrZSB0b29scyBpbiBQQVRICmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2FyY2gtbWljcm9ibGF6ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2FyY2gtbWljcm9ibGF6ZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFiNzE3MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplLmluYwpAQCAtMCwwICsxLDUzIEBACisjIE1pY3JvQmxhemUgYXJjaGl0ZWN0dXJlIHR1bmUgZmVhdHVyZSBjb25maWd1cmF0aW9uCisKKyMgQXJjaGl0ZWN0dXJlIGZlYXR1cmUgYW5kIG92ZXJyaWRlCitUVU5FVkFMSURbbWljcm9ibGF6ZV0gPSAiTWljcm9CbGF6ZSIKK01BQ0hJTkVPVkVSUklERVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm1pY3JvYmxhemUiLCAibWljcm9ibGF6ZToiLCAiIiwgZCl9IgorCisjIEVuZGlhbgorVFVORVZBTElEW2JpZ2VuZGlhbl0gPSAiVXNlIE1pY3JvYmxhemUgQmlnIEVuZGlhbiIKK1RVTkVDT05GTElDVFNbYmlnZW5kaWFuXSArPSAidjEwLjAiCisKK01CUEtHQVJDSF9FTkRJQU4gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmlnZW5kaWFuIiwgImViIiwgImVsIiwgZCl9IgorCitUVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmlnZW5kaWFuIiwgIi1tYmlnLWVuZGlhbiIsICItbWxpdHRsZS1lbmRpYW4iLCBkKX0iCisKKyMgR2VuZXJhbCBmZWF0dXJlcworVFVORVZBTElEW2JhcnJlbC1zaGlmdF0gPSAiRW5hYmxlIEhhcmR3YXJlIEJhcnJlbCBTaGlmdGVyIgorVFVORVZBTElEW3BhdHRlcm4tY29tcGFyZV0gPSAiRW5hYmxlIFBhdHRlcm4gQ29tcGFyZSBJbnN0cnVjdGlvbnMiCitUVU5FVkFMSURbcmVvcmRlcl0gPSAiRW5hYmxlIFJlb3JkZXIgSW5zdHJ1Y3Rpb25zIgorVFVORUNPTkZMSUNUU1tyZW9yZGVyXSArPSAidjguMDAgdjguMTAgdjguMjAiCisKKyMgQ29yZSBjb25maWd1cmF0aW9uIHR1bmUgb3B0aW1pemF0aW9ucworVFVORVZBTElEW2ZyZXF1ZW5jeS1vcHRpbWl6ZWRdID0gIkVuYWJsaW5nIHR1bmluZyBmb3IgZnJlcXVlbmN5IG9wdGltaXplZCBjb3JlIChBUkVBX09QVElNSVpFRF8yKSIKK1RVTkVDT05GTElDVFNbZnJlcXVlbmN5LW9wdGltaXplZF0gKz0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCB2OS41IHY5LjYiCisKKyMgRmVhdHVyZSBjb21waWxlciBhcmdzCitUVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmFycmVsLXNoaWZ0IiwgIi1teGwtYmFycmVsLXNoaWZ0IiwgIi1tbm8teGwtYmFycmVsLXNoaWZ0IiwgZCl9IgorVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInBhdHRlcm4tY29tcGFyZSIsICItbXhsLXBhdHRlcm4tY29tcGFyZSIsICItbW5vLXhsLXBhdHRlcm4tY29tcGFyZSIsIGQpfSIKK1RVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJmcmVxdWVuY3ktb3B0aW1pemVkIiwgIi1teGwtZnJlcXVlbmN5IiwgIiIsIGQpfSIKKworIyBEaXNhYmxlIHJlb3JkZXIgZm9yIHY4LjMwIGlmIHBhdHRlcm4tY29tcGFyZSBpcyBub3QgZW5hYmxlZAorVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInJlb3JkZXIiLCBcCisgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInY4LjMwIiwgXAorICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicGF0dGVybi1jb21wYXJlIiwgXAorICAgICAgICAgICAgICAgICItbXhsLXJlb3JkZXIiLCAiLW1uby14bC1yZW9yZGVyIiwgZCksIFwKKyAgICAgICAgICAgICItbXhsLXJlb3JkZXIiLCBkKSwgIi1tbm8teGwtcmVvcmRlciIsIGQpfSIKKworIyBGZWF0dXJlIHBhY2thZ2UgYXJjaGl0ZWN0dXJlIGZvcm1hdHRpbmcKK01CUEtHQVJDSF9UVU5FID0gIiIKK01CUEtHQVJDSF9UVU5FIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiYXJyZWwtc2hpZnQiLCAiLWJzIiwgIiIsIGQpfSIKK01CUEtHQVJDSF9UVU5FIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJwYXR0ZXJuLWNvbXBhcmUiLCAiLWNtcCIsICIiLCBkKX0iCitNQlBLR0FSQ0hfVFVORSAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicmVvcmRlciIsICItcmUiLCAiIiwgZCl9IgorTUJQS0dBUkNIX1RVTkUgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImZyZXF1ZW5jeS1vcHRpbWl6ZWQiLCAiLWZvIiwgIiIsIGQpfSIKKworIyBBZGRpdGlvbmFsIGZlYXR1cmVzCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLXZlcnNpb25zLmluYworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYworCisjIEFyY2hpdGVjdHVyZSBuYW1lLCBlaXRoZXIgJ21pY3JvYmxhemVlYicgb3IgJ21pY3JvYmxhemVlbCcgZGVwZW5kaW5nIG9uIGVuZGlhbmVzcworVFVORV9BUkNIID0gIm1pY3JvYmxhemUke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiaWdlbmRpYW4iLCAiZWIiLCAiZWwiLCBkKX0iCisKKyMgUGFja2FnZSBBcmNoaXRlY3R1cmUgZm9ybWF0dGluZworVFVORV9QS0dBUkNIID0gIm1pY3JvYmxhemUke01CUEtHQVJDSF9FTkRJQU59JHtNQlBLR0FSQ0hfVkVSU0lPTn0ke01CUEtHQVJDSF9UVU5FfSR7TUJQS0dBUkNIX01BVEh9IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLW1hdGguaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMTUxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYwpAQCAtMCwwICsxLDMzIEBACisjIFRoaXMgaW5jbHVkZSBkZXNjcmliZXMgdGhlIG1hdGggZmVhdHVyZXMgKGludGVnZXIgYW5kIGZsb2F0aW5nIHBvaW50KSB0aGF0CisjIGFyZSBhdmFpbGFibGUgZm9yIHRoZSBNaWNyb0JsYXplIElTQQorCitUVU5FVkFMSURbbXVsdGlwbHktbG93XSA9ICJIYXJkd2FyZSBtdWx0aXBsZXIgd2l0aCAzMiBiaXQgcmVzdWx0IgorVFVORVZBTElEW211bHRpcGx5LWhpZ2hdID0gIkhhcmR3YXJlIG11bHRpcGxlciB3aXRoIDY0IGJpdCByZXN1bHQiCitUVU5FVkFMSURbZGl2aWRlLWhhcmRdID0gIkhhcmR3YXJlIGRpdmlkZXIiCitUVU5FVkFMSURbZnB1LXNvZnRdID0gIlNvZnR3YXJlIEZQVSIKK1RVTkVWQUxJRFtmcHUtaGFyZF0gPSAiSGFyZHdhcmUgRlBVIGluIGJhc2ljIG1vZGUiCitUVU5FVkFMSURbZnB1LWhhcmQtZXh0ZW5kZWRdID0gIkhhcmR3YXJlIEZQVSBpbiBleHRlbmRlZCBtb2RlIChjb252ZXJzaW9uIGFuZCBzcXVhcmUgcm9vdCBpbnN0cnVjdGlvbnMpIgorCitUVU5FQ09ORkxJQ1RTW2ZwdS1zb2Z0XSA9ICJmcHUtaGFyZCBmcHUtaGFyZC1leHRlbmRlZCIKK1RVTkVDT05GTElDVFNbZnB1LWhhcmRdID0gImZwdS1zb2Z0IgorVFVORUNPTkZMSUNUU1tmcHUtaGFyZC1leHRlbmRlZF0gPSAiZnB1LXNvZnQiCisKKyMgQ29tcGlsZXIgYXJncworVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsIFsnbXVsdGlwbHktbG93JywgJ211bHRpcGx5LWhpZ2gnXSwgJy1tbm8teGwtc29mdC1tdWwnLCAnLW14bC1zb2Z0LW11bCcsIGQpfSIKK1RVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtdWx0aXBseS1oaWdoJywgJy1teGwtbXVsdGlwbHktaGlnaCcsICcnLCBkKX0iCisKK1RVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdkaXZpZGUtaGFyZCcsICctbW5vLXhsLXNvZnQtZGl2JywgJy1teGwtc29mdC1kaXYnLCBkKX0iCisKK1RVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdmcHUtc29mdCcsICcnLCAnJywgZCl9IgorVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsIFsnZnB1LWhhcmQnLCAnZnB1LWhhcmQtZXh0ZW5kZWQnXSwgJy1taGFyZC1mbG9hdCcsICcnLCBkKX0iCitUVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQtZXh0ZW5kZWQnLCAnLW14bC1mbG9hdC1jb252ZXJ0IC1teGwtZmxvYXQtc3FydCcsICcnLCBkKX0iCisKKyMgU2V0IHRhcmdldCBmcHUgKGJpdGJha2Uga25vd24gdGFyZ2V0KSB0byBzb2Z0IG9yIGhhcmQgKGJhc2ljIG9yIGV4dGVuZGVkKQorVEFSR0VUX0ZQVSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQgZnB1LWhhcmQtZXh0ZW5kZWQnLCAnZnB1LWhhcmQnLCAnZnB1LXNvZnQnLCBkKX0iCisKKyMgUGFja2FnZSBBcmNoaXRlY3R1cmUgZm9ybWF0dGluZworTUJQS0dBUkNIX01BVEggPSAiIgorTUJQS0dBUkNIX01BVEggLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ211bHRpcGx5LWhpZ2gnLCAnLW1oJywgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbXVsdGlwbHktbG93JywgJy1tbCcsICcnLCBkKSwgZCl9IgorTUJQS0dBUkNIX01BVEggLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2RpdmlkZS1oYXJkJywgJy1kaXYnLCAnJywgZCl9IgorTUJQS0dBUkNIX01BVEggLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2ZwdS1oYXJkLWV4dGVuZGVkJywgJy1mZScsIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2ZwdS1oYXJkJywgJy1mYicsICcnLCBkKSwgZCl9IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS12ZXJzaW9ucy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS12ZXJzaW9ucy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU1Njc0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLXZlcnNpb25zLmluYwpAQCAtMCwwICsxLDY3IEBACisjIE1pY3JvQmxhemUgdmVyc2lvbnMgYXJlIGRlZmluZWQgYXMgZmVhdHVyZXMsIHRoZSBmZWF0dXJlcyBhcmUgc2V0dXAgdG8KKyMgY29uZmxpY3Qgd2l0aCBvdGhlciB2ZXJzaW9ucyBhcyB3ZWxsIGFzIHVuYXZhaWxhYmxlIGZlYXR1cmVzIGZvciBwYXJ0aWN1bGFyCisjIHZlcnNpb25zLgorIworIyBWZXJzaW9ucyBiZWZvcmUgdjkuMCBvZiBNaWNyb0JsYXplIHVzZSBhIHZlcnNpb25pbmcgc2NoZW1lIG9mICJ2WC5ZWS5aIgorIyAod2hlcmUgWiA9IFthYmNdKS4gRm9yIHY4LiogdmVyc2lvbnMgb2YgTWljcm9CbGF6ZSB0aGUgcmV2aXNpb24gKFopIGNoYW5nZXMKKyMgZGlkIG5vdCBhZmZlY3QgQUJJIGFuZCBhcmUgaWdub3JlZCBieSB0aGlzIHR1bmUgY29uZmlndXJhdGlvbi4gVGhvdWdoIHRoaXMKKyMgZm9ybWF0IGlzIGV4cGVjdGVkIGJ5IEdDQyBpbmNsdWRpbmcgdGhlIHJldmlzaW9uLCBidXQgdGhpcyBpcyBkZWZhdWx0ZWQgdG8KKyMgIi5hIi4KKyMKKyMgU2luY2UgdjkuMCBvZiBNaWNyb0JsYXplIHRoZSByZXZpc2lvbiAoWikgcGFydCBvZiB2ZXJzaW9ucyB3YXMgZW50aXJlbHkKKyMgZHJvcHBlZCBhbmQgdGhlIHZlcnNpb24gc2NoZW1lIHdhcyBjaGFuZ2VkIHRvICJ2WC5ZIi4KKworZGVmIG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQsIGdjYyA9IEZhbHNlKToKKyAgICBpbXBvcnQgcmUKKyAgICAjIGZpbmQgdGhlIGN1cnJlbnQgdmVyc2lvbiwgYW5kIGNvbnZlcnQgaXQgdG8gbWFqb3IvbWlub3IgaW50ZWdlcnMKKyAgICB2ZXJzaW9uID0gTm9uZQorICAgIGZvciB0IGluIChkLmdldFZhcigiVFVORV9GRUFUVVJFUyIpIG9yICIiKS5zcGxpdCgpOgorICAgICAgICBtID0gcmUuc2VhcmNoKCJedihcZCspXC4oXGQrKSIsIHQpCisgICAgICAgIGlmIG06CisgICAgICAgICAgICB2ZXJzaW9uID0gaW50KG0uZ3JvdXAoMSkpLCBpbnQobS5ncm91cCgyKSkKKyAgICAgICAgICAgIGJyZWFrCisKKyAgICAjIGZvcm1hdCB0aGUgdmVyc2lvbiBzdHJpbmcgaW4gZ2VuZXJpYyBvciBHQ0Mgc3BlY2lmaWMgZm9ybWF0cworICAgIGlmIHZlcnNpb246CisgICAgICAgIGlmIHZlcnNpb25bMF0gPD0gODoKKyAgICAgICAgICAgIHJldHVybiAoInYlZC4lMDJkIiAlIHZlcnNpb25bMDoyXSkgKyAoIi5hIiBpZiBnY2MgZWxzZSAiIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAidiVkLiVkIiAlIHZlcnNpb25bMDoyXQorICAgIHJldHVybiAiIgorCisjIE1pY3JvQmxhemUgdmVyc2lvbnMKK1RVTkVWQUxJRFt2OC4wMF0gPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDguMDAiCitUVU5FVkFMSURbdjguMTBdID0gIk1pY3JvQmxhemUgdmVyc2lvbiA4LjEwIgorVFVORVZBTElEW3Y4LjIwXSA9ICJNaWNyb0JsYXplIHZlcnNpb24gOC4yMCIKK1RVTkVWQUxJRFt2OC4zMF0gPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDguMzAiCitUVU5FVkFMSURbdjguNDBdID0gIk1pY3JvQmxhemUgdmVyc2lvbiA4LjQwIgorVFVORVZBTElEW3Y4LjUwXSA9ICJNaWNyb0JsYXplIHZlcnNpb24gOC41MCIKK1RVTkVWQUxJRFt2OS4wXSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuMCIKK1RVTkVWQUxJRFt2OS4xXSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuMSIKK1RVTkVWQUxJRFt2OS4yXSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuMiIKK1RVTkVWQUxJRFt2OS4zXSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuMyIKK1RVTkVWQUxJRFt2OS40XSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuNCIKK1RVTkVWQUxJRFt2OS41XSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuNSIKK1RVTkVWQUxJRFt2OS42XSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuNiIKK1RVTkVWQUxJRFt2MTAuMF0gPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDEwLjAiCisKKyMgVmVyc2lvbiBjb25mbGljdCBtYXRyaXgKK1RVTkVDT05GTElDVFNbdjguMDBdID0gIiIKK1RVTkVDT05GTElDVFNbdjguMTBdID0gInY4LjAwIgorVFVORUNPTkZMSUNUU1t2OC4yMF0gPSAidjguMDAgdjguMTAiCitUVU5FQ09ORkxJQ1RTW3Y4LjMwXSA9ICJ2OC4wMCB2OC4xMCB2OC4yMCIKK1RVTkVDT05GTElDVFNbdjguNDBdID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIgorVFVORUNPTkZMSUNUU1t2OC41MF0gPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAiCitUVU5FQ09ORkxJQ1RTW3Y5LjBdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCIKK1RVTkVDT05GTElDVFNbdjkuMV0gID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAiCitUVU5FQ09ORkxJQ1RTW3Y5LjJdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEiCitUVU5FQ09ORkxJQ1RTW3Y5LjNdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiIKK1RVTkVDT05GTElDVFNbdjkuNF0gID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMiCitUVU5FQ09ORkxJQ1RTW3Y5LjVdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQiCitUVU5FQ09ORkxJQ1RTW3Y5LjZdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQgdjkuNSIKK1RVTkVDT05GTElDVFNbdjEwLjBdID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCB2OS41IHY5LjYiCisKKyMgVmVyc2lvbiBmbGFncworVFVORV9DQ0FSR1MgKz0gIi1tY3B1PSR7QG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQsIFRydWUpfSIKK01CUEtHQVJDSF9WRVJTSU9OID0gIi0ke0BtaWNyb2JsYXplX2N1cnJlbnRfdmVyc2lvbihkKX0iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKaW5kZXggZTY0YjBjOC4uYWEzMzJmZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKQEAgLTE2LDcgKzE2LDcgQEAKIElNQUdFX0ZTVFlQRVMgKz0gInRhci5iejIgZXh0NCIKIAogIyBEb24ndCBpbmNsdWRlIGtlcm5lbHMgaW4gc3RhbmRhcmQgaW1hZ2VzCi1SREVQRU5EU19rZXJuZWwtYmFzZSA9ICIiCitSREVQRU5EU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiIgogCiAjIFVzZSBhIGNvbW1vbiBrZXJuZWwgcmVjaXBlIGZvciBhbGwgUUVNVSBtYWNoaW5lcwogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC15b2N0byIKQEAgLTI3LDYgKzI3LDQgQEAKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcG4tbGludXgteW9jdG8gPSAiIGZlYXR1cmVzL25mc2QvbmZzZC1lbmFibGUuc2NjIgogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9wbi1saW51eC15b2N0by1ydCA9ICIgZmVhdHVyZXMvbmZzZC9uZnNkLWVuYWJsZS5zY2MiCiAKLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gInJuZy10b29scyIKLQogSU1BR0VfQ0xBU1NFUyArPSAicWVtdWJvb3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcmUyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCmluZGV4IGY0YmE0M2YuLmM2ODZiYjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCkBAIC04LDExICs4LDggQEAKICMKIERFRkFVTFRUVU5FID89ICJjb3JlMi0zMiIKIAotIyBTZXQgeDg2IHRhcmdldCBhcmNoIHRvIGk2ODYsIHNvIHRoYXQgZ2xpYmMgZW5hYmxlcyBTU0Ugb3B0aW1pc2VkIG1lbWNweSwgZXRjLgotWDg2QVJDSDMyID89ICJpNjg2IgotCiAjIEluY2x1ZGUgdGhlIHByZXZpb3VzIHR1bmUgdG8gcHVsbCBpbiBQQUNLQUdFX0VYVFJBX0FSQ0hTCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtaTU4Ni5pbmMKK3JlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pNjg2LmluYwogCiAjIEV4dHJhIHR1bmUgZmVhdHVyZXMKIFRVTkVWQUxJRFtjb3JlMl0gPSAiRW5hYmxlIGNvcmUyIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgpAQCAtMjMsMTYgKzIwLDE5IEBACiBUVU5FX0ZFQVRVUkVTX3R1bmUtY29yZTItMzIgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUteDg2fSBjb3JlMiIKIEJBU0VfTElCX3R1bmUtY29yZTItMzIgPSAibGliIgogVFVORV9QS0dBUkNIX3R1bmUtY29yZTItMzIgPSAiY29yZTItMzIiCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29yZTItMzIgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtaTU4Nn0gY29yZTItMzIiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29yZTItMzIgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtaTY4Nn0gY29yZTItMzIiCitRRU1VX0VYVFJBT1BUSU9OU19jb3JlMi0zMiA9ICIgLWNwdSBjb3JlMmR1byIKIAogQVZBSUxUVU5FUyArPSAiY29yZTItNjQiCiBUVU5FX0ZFQVRVUkVTX3R1bmUtY29yZTItNjQgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUteDg2LTY0fSBjb3JlMiIKIEJBU0VfTElCX3R1bmUtY29yZTItNjQgPSAibGliNjQiCiBUVU5FX1BLR0FSQ0hfdHVuZS1jb3JlMi02NCA9ICJjb3JlMi02NCIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3JlMi02NCA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS14ODYtNjR9IGNvcmUyLTY0IgorUUVNVV9FWFRSQU9QVElPTlNfY29yZTItNjQgPSAiIC1jcHUgY29yZTJkdW8iCiAKIEFWQUlMVFVORVMgKz0gImNvcmUyLTY0LXgzMiIKIFRVTkVfRkVBVFVSRVNfdHVuZS1jb3JlMi02NC14MzIgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUteDg2LTY0LXgzMn0gY29yZTIiCiBCQVNFX0xJQl90dW5lLWNvcmUyLTY0LXgzMiA9ICJsaWJ4MzIiCiBUVU5FX1BLR0FSQ0hfdHVuZS1jb3JlMi02NC14MzIgPSAiY29yZTItNjQteDMyIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWNvcmUyLTY0LXgzMiA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS14ODYtNjQteDMyfSBjb3JlMi02NC14MzIiCitRRU1VX0VYVFJBT1BUSU9OU19jb3JlMi02NC14MzIgPSAiIC1jcHUgY29yZTJkdW8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWk2ODYuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pNjg2LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGI0Nzk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pNjg2LmluYwpAQCAtMCwwICsxLDI3IEBACisjCisjIFRoZSBpNjg2IENQVSBmYW1pbHkgd2FzIGludHJvZHVjZWQgd2l0aCB0aGUgSW50ZWwgUGVudGl1bSBQcm8gaW4gMTk5NS4KKyMgSXQgaGFzIGFzIHJlcXVpcmVkIGZlYXR1cmUgZmxhZ3M6IGZwdSB0c2MgY3g4IGNtb3YuCisjCisjIEl0IGlzIHRoZSBtaW5pbXVtIENQVSByZXF1aXJlZCBieSB0aGUgRGViaWFuIGkzODYgcG9ydC4KKyMgaHR0cHM6Ly9saXN0cy5kZWJpYW4ub3JnL2RlYmlhbi1kZXZlbC1hbm5vdW5jZS8yMDE2LzA1L21zZzAwMDAxLmh0bWwKKyMKKyMKKworREVGQVVMVFRVTkUgPz0gImk2ODYiCisKKyMgU2V0IHg4NiB0YXJnZXQgYXJjaCB0byBpNjg2LCBzbyB0aGF0IGdsaWJjIGVuYWJsZXMgU1NFIG9wdGltaXNlZCBtZW1jcHksIGV0Yy4KK1g4NkFSQ0gzMiA/PSAiaTY4NiIKKworIyBJbmNsdWRlIHRoZSBwcmV2aW91cyB0dW5lIHRvIHB1bGwgaW4gUEFDS0FHRV9FWFRSQV9BUkNIUworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWk1ODYuaW5jCisKKyMgRXh0cmEgdHVuZSBmZWF0dXJlcworVFVORVZBTElEW2k2ODZdID0gIkVuYWJsZSBpNjg2IHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2k2ODYnLCAnIC1tYXJjaD1pNjg2JywgJycsIGQpfSIKKworIyBFeHRyYSB0dW5lIHNlbGVjdGlvbnMKK0FWQUlMVFVORVMgKz0gImk2ODYiCitUVU5FX0ZFQVRVUkVTX3R1bmUtaTY4NiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS14ODZ9IGk2ODYiCitCQVNFX0xJQl90dW5lLWk2ODYgPSAibGliIgorVFVORV9QS0dBUkNIX3R1bmUtaTY4NiA9ICJpNjg2IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWk2ODYgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtaTU4Nn0gaTY4NiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWljcm9ibGF6ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pY3JvYmxhemUuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZjBhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pY3JvYmxhemUuaW5jCkBAIC0wLDAgKzEsOCBAQAorREVGQVVMVFRVTkUgPz0gIm1pY3JvYmxhemUiCisKK3JlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9hcmNoLW1pY3JvYmxhemUuaW5jCisKK0FWQUlMVFVORVMgKz0gIm1pY3JvYmxhemUiCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWljcm9ibGF6ZSA9ICJtaWNyb2JsYXplIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pY3JvYmxhemUgPSAiJHtUVU5FX1BLR0FSQ0h9IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKaW5kZXggMDIzZWI1ZS4uZjhhYWNlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYwpAQCAtMjEsNyArMjEsNyBAQAogIyBrZXJuZWwtcmVsYXRlZCB2YXJpYWJsZXMKICMKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/Pz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjEyJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNC4xNSUiCiAKICMKICMgWFNFUlZFUiBzdWJjb21wb25lbnRzLCB1c2VkIHRvIGJ1aWxkIHRoZSBYU0VSVkVSIHZhcmlhYmxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgppbmRleCBjODkzMmRkLi45NDAzYjFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKQEAgLTE2LDUgKzE2LDUgQEAKIFFCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJjb25zb2xlPXR0eUFNQTAsMTE1MjAwIGNvbnNvbGU9dHR5IgogIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQogUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNC4xMiUiCi1RQl9EVEIgPSAiJHtAYmFzZV92ZXJzaW9uX2xlc3Nfb3JfZXF1YWwoJ1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvJywgJzQuNycsICcnLCAnekltYWdlLXZlcnNhdGlsZS1wYi5kdGInLCBkKX0iCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjQuMTUlIgorUUJfRFRCID0gIiR7QG9lLnV0aWxzLnZlcnNpb25fbGVzc19vcl9lcXVhbCgnUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8nLCAnNC43JywgJycsICd6SW1hZ2UtdmVyc2F0aWxlLXBiLmR0YicsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9CU0QtMS1DbGF1c2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvQlNELTEtQ2xhdXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZDg4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvQlNELTEtQ2xhdXNlCkBAIC0wLDAgKzEsOSBAQAorCitDb3B5cmlnaHQgKGMpIDxZRUFSPiwgPE9XTkVSPgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCitSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEJlcmtlbGV5IFNvZnR3YXJlIERlc2lnbiwgSW5jLiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEJlcmtlbGV5IFNvZnR3YXJlIERlc2lnbiwgSW5jLiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvcHRlc3QtcGVybC9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9wdGVzdC1wZXJsL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWY5Y2E5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvcHRlc3QtcGVybC9ydW4tcHRlc3QKQEAgLTAsMCArMSwxNiBAQAorIyEvYmluL3NoCisKK2ZvciBjYXNlIGluIGBmaW5kIHQgLXR5cGUgZiAtbmFtZSAnKi50J2A7IGRvCisgICAgcGVybCAkY2FzZSA+JGNhc2Uub3V0cHV0IDI+JjEKKyAgICByZXQ9JD8KKyAgICBjYXQgJGNhc2Uub3V0cHV0CisgICAgaWYgWyAkcmV0IC1uZSAwIF07IHRoZW4KKyAgICAgICAgZWNobyAiRkFJTDogJHtjYXNlJS50fSIKKyAgICBlbGlmIGdyZXAgLWkgJ1NLSVAnICRjYXNlLm91dHB1dDsgdGhlbgorICAgICAgICBlY2hvICJTS0lQOiAke2Nhc2UlLnR9IgorICAgIGVsc2UKKyAgICAgICAgZWNobyAiUEFTUzogJHtjYXNlJS50fSIKKyAgICBmaQorCisgICAgcm0gLWYgJGNhc2Uub3V0cHV0Citkb25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItZXh0cmFjdC5zaAppbmRleCA5MTgwNGVjLi5mN2FiNDMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2gKQEAgLTI1OSw2ICsyNTksMTQgQEAKIAkkU1VET19FWEVDIHJtIC1mICR7ZW52X3NldHVwX3NjcmlwdCUvKn0vcmVsb2NhdGVfc2RrLnB5ICR7ZW52X3NldHVwX3NjcmlwdCUvKn0vcmVsb2NhdGVfc2RrLnNoCiBmaQogCisjIEV4ZWN1dGUgcG9zdC1yZWxvY2F0aW9uIHNjcmlwdAorcG9zdF9yZWxvY2F0ZT0iJHRhcmdldF9zZGtfZGlyL3Bvc3QtcmVsb2NhdGUtc2V0dXAuc2giCitpZiBbIC1lICIkcG9zdF9yZWxvY2F0ZSIgXTsgdGhlbgorCSRTVURPX0VYRUMgc2VkIC1lICJzOkBTREtQQVRIQDokdGFyZ2V0X3Nka19kaXI6ZyIgLWkgJHBvc3RfcmVsb2NhdGUKKwkkU1VET19FWEVDIC9iaW4vc2ggJHBvc3RfcmVsb2NhdGUgIiR0YXJnZXRfc2RrX2RpciIgIkBTREtQQVRIQCIKKwkkU1VET19FWEVDIHJtIC1mICRwb3N0X3JlbG9jYXRlCitmaQorCiBlY2hvICJTREsgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHNldCB1cCBhbmQgaXMgcmVhZHkgdG8gYmUgdXNlZC4iCiBlY2hvICJFYWNoIHRpbWUgeW91IHdpc2ggdG8gdXNlIHRoZSBTREsgaW4gYSBuZXcgc2hlbGwgc2Vzc2lvbiwgeW91IG5lZWQgdG8gc291cmNlIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgZS5nLiIKIGZvciBlbnZfc2V0dXBfc2NyaXB0IGluIGBscyAkdGFyZ2V0X3Nka19kaXIvZW52aXJvbm1lbnQtc2V0dXAtKmA7IGRvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvYnVpbGRoaXN0b3J5X2FuYWx5c2lzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2J1aWxkaGlzdG9yeV9hbmFseXNpcy5weQppbmRleCAzZTg2YTQ2Li5iMDM2NWFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvYnVpbGRoaXN0b3J5X2FuYWx5c2lzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkKQEAgLTM2LDEwICszNiwyOSBAQAogcmVsYXRlZF9maWVsZHNbJ1JERVBFTkRTJ10gPSBbJ0RFUEVORFMnXQogcmVsYXRlZF9maWVsZHNbJ1JSRUNPTU1FTkRTJ10gPSBbJ0RFUEVORFMnXQogcmVsYXRlZF9maWVsZHNbJ0ZJTEVMSVNUJ10gPSBbJ0ZJTEVTJ10KLXJlbGF0ZWRfZmllbGRzWydQS0dTSVpFJ10gPSBbJ0ZJTEVMSVNUJ10KIHJlbGF0ZWRfZmllbGRzWydmaWxlcy1pbi1pbWFnZS50eHQnXSA9IFsnaW5zdGFsbGVkLXBhY2thZ2UtbmFtZXMudHh0JywgJ1VTRVJfQ0xBU1NFUycsICdJTUFHRV9DTEFTU0VTJywgJ1JPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJywgJ0lNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQnXQogcmVsYXRlZF9maWVsZHNbJ2luc3RhbGxlZC1wYWNrYWdlLW5hbWVzLnR4dCddID0gWydJTUFHRV9GRUFUVVJFUycsICdJTUFHRV9MSU5HVUFTJywgJ0lNQUdFX0lOU1RBTEwnLCAnQkFEX1JFQ09NTUVOREFUSU9OUycsICdOT19SRUNPTU1FTkRBVElPTlMnLCAnUEFDS0FHRV9FWENMVURFJ10KIAorY29sb3VycyA9IHsKKyAgICAnY29sb3VyX2RlZmF1bHQnOiAnJywKKyAgICAnY29sb3VyX2FkZCc6ICAgICAnJywKKyAgICAnY29sb3VyX3JlbW92ZSc6ICAnJywKK30KKworZGVmIGluaXRfY29sb3Vycyh1c2VfY29sb3Vycyk6CisgICAgZ2xvYmFsIGNvbG91cnMKKyAgICBpZiB1c2VfY29sb3VyczoKKyAgICAgICAgY29sb3VycyA9IHsKKyAgICAgICAgICAgICdjb2xvdXJfZGVmYXVsdCc6ICdcMDMzWzBtJywKKyAgICAgICAgICAgICdjb2xvdXJfYWRkJzogICAgICdcMDMzWzE7MzJtJywKKyAgICAgICAgICAgICdjb2xvdXJfcmVtb3ZlJzogICdcMDMzWzE7MzFtJywKKyAgICAgICAgfQorICAgIGVsc2U6CisgICAgICAgIGNvbG91cnMgPSB7CisgICAgICAgICAgICAnY29sb3VyX2RlZmF1bHQnOiAnJywKKyAgICAgICAgICAgICdjb2xvdXJfYWRkJzogICAgICcnLAorICAgICAgICAgICAgJ2NvbG91cl9yZW1vdmUnOiAgJycsCisgICAgICAgIH0KIAogY2xhc3MgQ2hhbmdlUmVjb3JkOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBmaWVsZG5hbWUsIG9sZHZhbHVlLCBuZXd2YWx1ZSwgbW9uaXRvcmVkKToKQEAgLTc5LDcgKzk4LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGFkaXJzIC0gYmRpcnNdCiAgICAgICAgICAgICBmaWxlc19iYSA9IFsobmFtZSwgc29ydGVkKG9zLnBhdGguYmFzZW5hbWUoaXRlbSkgZm9yIGl0ZW0gaW4gYml0ZW1zIGlmIG9zLnBhdGguZGlybmFtZShpdGVtKSA9PSBuYW1lKSkgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBiZGlycyAtIGFkaXJzXQotICAgICAgICAgICAgcmVuYW1lZF9kaXJzID0gWyhkaXIxLCBkaXIyKSBmb3IgZGlyMSwgZmlsZXMxIGluIGZpbGVzX2FiIGZvciBkaXIyLCBmaWxlczIgaW4gZmlsZXNfYmEgaWYgZmlsZXMxID09IGZpbGVzMl0KKyAgICAgICAgICAgIHJlbmFtZWRfZGlycyA9IFtdCisgICAgICAgICAgICBmb3IgZGlyMSwgZmlsZXMxIGluIGZpbGVzX2FiOgorICAgICAgICAgICAgICAgIHJlbmFtZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgZm9yIGRpcjIsIGZpbGVzMiBpbiBmaWxlc19iYToKKyAgICAgICAgICAgICAgICAgICAgaWYgZmlsZXMxID09IGZpbGVzMiBhbmQgbm90IHJlbmFtZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmFtZWRfZGlycy5hcHBlbmQoKGRpcjEsZGlyMikpCisgICAgICAgICAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IHVzZSB0aGlzIChkaXIsIGZpbGVzKSBwYWlyIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNfYmEucmVtb3ZlKChkaXIyLGZpbGVzMikpCisgICAgICAgICAgICAgICAgICAgICAgICAjIElmIGEgZGlyIGhhcyBhbHJlYWR5IGJlZW4gZm91bmQgdG8gaGF2ZSBhIHJlbmFtZSwgc3RvcCBhbmQgZ28gbm8gZnVydGhlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmFtZSA9IFRydWUKKwogICAgICAgICAgICAgIyByZW1vdmUgZmlsZXMgdGhhdCBiZWxvbmcgdG8gcmVuYW1lZCBkaXJzIGZyb20gYWl0ZW1zIGFuZCBiaXRlbXMKICAgICAgICAgICAgIGZvciBkaXIxLCBkaXIyIGluIHJlbmFtZWRfZGlyczoKICAgICAgICAgICAgICAgICBhaXRlbXMgPSBbaXRlbSBmb3IgaXRlbSBpbiBhaXRlbXMgaWYgb3MucGF0aC5kaXJuYW1lKGl0ZW0pIG5vdCBpbiAoZGlyMSwgZGlyMildCkBAIC04OCw2ICsxMTcsNyBAQAogCiAgICAgICAgIGlmIHNlbGYuZmllbGRuYW1lIGluIGxpc3RfZmllbGRzIG9yIHNlbGYuZmllbGRuYW1lIGluIGxpc3Rfb3JkZXJfZmllbGRzOgogICAgICAgICAgICAgcmVuYW1lZF9kaXJzID0gW10KKyAgICAgICAgICAgIGNoYW5nZWRfb3JkZXIgPSBGYWxzZQogICAgICAgICAgICAgaWYgc2VsZi5maWVsZG5hbWUgaW4gWydSUFJPVklERVMnLCAnUkRFUEVORFMnLCAnUlJFQ09NTUVORFMnLCAnUlNVR0dFU1RTJywgJ1JSRVBMQUNFUycsICdSQ09ORkxJQ1RTJ106CiAgICAgICAgICAgICAgICAgKGRlcHZlcmEsIGRlcHZlcmIpID0gY29tcGFyZV9wa2dfbGlzdHMoc2VsZi5vbGR2YWx1ZSwgc2VsZi5uZXd2YWx1ZSkKICAgICAgICAgICAgICAgICBhaXRlbXMgPSBwa2dsaXN0X2NvbWJpbmUoZGVwdmVyYSkKQEAgLTEwMSwyMiArMTMxLDMzIEBACiAgICAgICAgICAgICByZW1vdmVkID0gbGlzdChzZXQoYWl0ZW1zKSAtIHNldChiaXRlbXMpKQogICAgICAgICAgICAgYWRkZWQgPSBsaXN0KHNldChiaXRlbXMpIC0gc2V0KGFpdGVtcykpCiAKKyAgICAgICAgICAgIGlmIG5vdCByZW1vdmVkIGFuZCBub3QgYWRkZWQ6CisgICAgICAgICAgICAgICAgZGVwdmVyYSA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihzZWxmLm9sZHZhbHVlLCBzb3J0PUZhbHNlKQorICAgICAgICAgICAgICAgIGRlcHZlcmIgPSBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9uczIoc2VsZi5uZXd2YWx1ZSwgc29ydD1GYWxzZSkKKyAgICAgICAgICAgICAgICBmb3IgaSwgaiBpbiB6aXAoZGVwdmVyYS5pdGVtcygpLCBkZXB2ZXJiLml0ZW1zKCkpOgorICAgICAgICAgICAgICAgICAgICBpZiBpWzBdICE9IGpbMF06CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX29yZGVyID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKwogICAgICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICAgICAgaWYgcmVuYW1lZF9kaXJzOgogICAgICAgICAgICAgICAgIGZvciBkZnJvbSwgZHRvIGluIHJlbmFtZWRfZGlyczoKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdkaXJlY3RvcnkgcmVuYW1lZCAlcyAtPiAlcycgJSAoZGZyb20sIGR0bykpCisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnZGlyZWN0b3J5IHJlbmFtZWQge2NvbG91cl9yZW1vdmV9e317Y29sb3VyX2RlZmF1bHR9IC0+IHtjb2xvdXJfYWRkfXt9e2NvbG91cl9kZWZhdWx0fScuZm9ybWF0KGRmcm9tLCBkdG8sICoqY29sb3VycykpCiAgICAgICAgICAgICBpZiByZW1vdmVkIG9yIGFkZGVkOgogICAgICAgICAgICAgICAgIGlmIHJlbW92ZWQgYW5kIG5vdCBiaXRlbXM6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgncmVtb3ZlZCBhbGwgaXRlbXMgIiVzIicgJSAnICcuam9pbihyZW1vdmVkKSkKKyAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdyZW1vdmVkIGFsbCBpdGVtcyAie2NvbG91cl9yZW1vdmV9e317Y29sb3VyX2RlZmF1bHR9IicuZm9ybWF0KCcgJy5qb2luKHJlbW92ZWQpLCAqKmNvbG91cnMpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGlmIHJlbW92ZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ3JlbW92ZWQgIiVzIicgJSAnICcuam9pbihyZW1vdmVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgncmVtb3ZlZCAie2NvbG91cl9yZW1vdmV9e3ZhbHVlfXtjb2xvdXJfZGVmYXVsdH0iJy5mb3JtYXQodmFsdWU9JyAnLmpvaW4ocmVtb3ZlZCksICoqY29sb3VycykpCiAgICAgICAgICAgICAgICAgICAgIGlmIGFkZGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdhZGRlZCAiJXMiJyAlICcgJy5qb2luKGFkZGVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnYWRkZWQgIntjb2xvdXJfYWRkfXt2YWx1ZX17Y29sb3VyX2RlZmF1bHR9IicuZm9ybWF0KHZhbHVlPScgJy5qb2luKGFkZGVkKSwgKipjb2xvdXJzKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdjaGFuZ2VkIG9yZGVyJykKIAotICAgICAgICAgICAgb3V0ID0gJyVzOiAlcycgJSAoc2VsZi5maWVsZG5hbWUsICcsICcuam9pbihsaW5lcykpCisgICAgICAgICAgICBpZiBub3QgKHJlbW92ZWQgb3IgYWRkZWQgb3IgY2hhbmdlZF9vcmRlcik6CisgICAgICAgICAgICAgICAgb3V0ID0gJycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3V0ID0gJyVzOiAlcycgJSAoc2VsZi5maWVsZG5hbWUsICcsICcuam9pbihsaW5lcykpCiAKICAgICAgICAgZWxpZiBzZWxmLmZpZWxkbmFtZSBpbiBudW1lcmljX2ZpZWxkczoKICAgICAgICAgICAgIGF2YWwgPSBpbnQoc2VsZi5vbGR2YWx1ZSBvciAwKQpAQCAtMTI1LDkgKzE2Niw5IEBACiAgICAgICAgICAgICAgICAgcGVyY2VudGNoZyA9ICgoYnZhbCAtIGF2YWwpIC8gZmxvYXQoYXZhbCkpICogMTAwCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHBlcmNlbnRjaGcgPSAxMDAKLSAgICAgICAgICAgIG91dCA9ICclcyBjaGFuZ2VkIGZyb20gJXMgdG8gJXMgKCVzJWQlJSknICUgKHNlbGYuZmllbGRuYW1lLCBzZWxmLm9sZHZhbHVlIG9yICInJyIsIHNlbGYubmV3dmFsdWUgb3IgIicnIiwgJysnIGlmIHBlcmNlbnRjaGcgPiAwIGVsc2UgJycsIHBlcmNlbnRjaGcpCisgICAgICAgICAgICBvdXQgPSAne30gY2hhbmdlZCBmcm9tIHtjb2xvdXJfcmVtb3ZlfXt9e2NvbG91cl9kZWZhdWx0fSB0byB7Y29sb3VyX2FkZH17fXtjb2xvdXJfZGVmYXVsdH0gKHt9ezouMGZ9JSknLmZvcm1hdChzZWxmLmZpZWxkbmFtZSwgc2VsZi5vbGR2YWx1ZSBvciAiJyciLCBzZWxmLm5ld3ZhbHVlIG9yICInJyIsICcrJyBpZiBwZXJjZW50Y2hnID4gMCBlbHNlICcnLCBwZXJjZW50Y2hnLCAqKmNvbG91cnMpCiAgICAgICAgIGVsaWYgc2VsZi5maWVsZG5hbWUgaW4gZGVmYXVsdHZhbF9tYXA6Ci0gICAgICAgICAgICBvdXQgPSAnJXMgY2hhbmdlZCBmcm9tICVzIHRvICVzJyAlIChzZWxmLmZpZWxkbmFtZSwgc2VsZi5vbGR2YWx1ZSwgc2VsZi5uZXd2YWx1ZSkKKyAgICAgICAgICAgIG91dCA9ICd7fSBjaGFuZ2VkIGZyb20ge2NvbG91cl9yZW1vdmV9e317Y29sb3VyX2RlZmF1bHR9IHRvIHtjb2xvdXJfYWRkfXt9e2NvbG91cl9kZWZhdWx0fScuZm9ybWF0KHNlbGYuZmllbGRuYW1lLCBzZWxmLm9sZHZhbHVlLCBzZWxmLm5ld3ZhbHVlLCAqKmNvbG91cnMpCiAgICAgICAgICAgICBpZiBzZWxmLmZpZWxkbmFtZSA9PSAnUEtHJyBhbmQgJ1tkZWZhdWx0XScgaW4gc2VsZi5uZXd2YWx1ZToKICAgICAgICAgICAgICAgICBvdXQgKz0gJyAtIG1heSBpbmRpY2F0ZSBkZWJpYW4gcmVuYW1pbmcgZmFpbHVyZScKICAgICAgICAgZWxpZiBzZWxmLmZpZWxkbmFtZSBpbiBbJ3BrZ19wcmVpbnN0JywgJ3BrZ19wb3N0aW5zdCcsICdwa2dfcHJlcm0nLCAncGtnX3Bvc3RybSddOgpAQCAtMTYzLDcgKzIwNCw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG91dCA9ICcnCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvdXQgPSAnJXMgY2hhbmdlZCBmcm9tICIlcyIgdG8gIiVzIicgJSAoc2VsZi5maWVsZG5hbWUsIHNlbGYub2xkdmFsdWUsIHNlbGYubmV3dmFsdWUpCisgICAgICAgICAgICBvdXQgPSAne30gY2hhbmdlZCBmcm9tICJ7Y29sb3VyX3JlbW92ZX17fXtjb2xvdXJfZGVmYXVsdH0iIHRvICJ7Y29sb3VyX2FkZH17fXtjb2xvdXJfZGVmYXVsdH0iJy5mb3JtYXQoc2VsZi5maWVsZG5hbWUsIHNlbGYub2xkdmFsdWUsIHNlbGYubmV3dmFsdWUsICoqY29sb3VycykKIAogICAgICAgICBpZiBzZWxmLnJlbGF0ZWQ6CiAgICAgICAgICAgICBmb3IgY2hnIGluIHNlbGYucmVsYXRlZDoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9jb3B5X2J1aWxkc3lzdGVtLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkKaW5kZXggYWMyZmFlMS4uNGI5NDgwNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkKQEAgLTk1LDcgKzk1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGVzdG5hbWUgPSBvcy5wYXRoLmpvaW4obGF5ZXJkZXN0cGF0aCwgZl9iYXNlbmFtZSkKICAgICAgICAgICAgICAgICAgICAgX3NtYXJ0X2NvcHkoZiwgZGVzdG5hbWUpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxheWVyZGVzdHBhdGgpOgorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihsYXllcmRlc3RwYXRoLCAnY29uZi9sYXllci5jb25mJykpOgogICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCJTa2lwcGluZyBsYXllciAlcywgYWxyZWFkeSBoYW5kbGVkIiAlIGxheWVyKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIF9zbWFydF9jb3B5KGxheWVyLCBsYXllcmRlc3RwYXRoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5CmluZGV4IDljYzg4ZjAuLmIxNzI3MjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkKQEAgLTEyLDYgKzEyLDcgQEAKICAgICAgICAgc2VsZi5ncGdfcGF0aCA9IGQuZ2V0VmFyKCdHUEdfUEFUSCcpCiAgICAgICAgIHNlbGYuZ3BnX3ZlcnNpb24gPSBzZWxmLmdldF9ncGdfdmVyc2lvbigpCiAgICAgICAgIHNlbGYucnBtX2JpbiA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudignUEFUSCcpLCAicnBtc2lnbiIpCisgICAgICAgIHNlbGYuZ3BnX2FnZW50X2JpbiA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudignUEFUSCcpLCAiZ3BnLWFnZW50IikKIAogICAgIGRlZiBleHBvcnRfcHVia2V5KHNlbGYsIG91dHB1dF9maWxlLCBrZXlpZCwgYXJtb3I9VHJ1ZSk6CiAgICAgICAgICIiIkV4cG9ydCBHUEcgcHVibGljIGtleSB0byBhIGZpbGUiIiIKQEAgLTMxLDcgKzMyLDcgQEAKICAgICAgICAgIiIiU2lnbiBSUE0gZmlsZXMiIiIKIAogICAgICAgICBjbWQgPSBzZWxmLnJwbV9iaW4gKyAiIC0tYWRkc2lnbiAtLWRlZmluZSAnX2dwZ19uYW1lICVzJyAgIiAlIGtleWlkCi0gICAgICAgIGdwZ19hcmdzID0gJy0tbm8tcGVybWlzc2lvbi13YXJuaW5nIC0tYmF0Y2ggLS1wYXNzcGhyYXNlPSVzJyAlIHBhc3NwaHJhc2UKKyAgICAgICAgZ3BnX2FyZ3MgPSAnLS1uby1wZXJtaXNzaW9uLXdhcm5pbmcgLS1iYXRjaCAtLXBhc3NwaHJhc2U9JXMgLS1hZ2VudC1wcm9ncmFtPSVzfC0tYXV0by1leHBhbmQtc2VjbWVtJyAlIChwYXNzcGhyYXNlLCBzZWxmLmdwZ19hZ2VudF9iaW4pCiAgICAgICAgIGlmIHNlbGYuZ3BnX3ZlcnNpb24gPiAoMiwxLCk6CiAgICAgICAgICAgICBncGdfYXJncyArPSAnIC0tcGluZW50cnktbW9kZT1sb29wYmFjaycKICAgICAgICAgY21kICs9ICItLWRlZmluZSAnX2dwZ19zaWduX2NtZF9leHRyYV9hcmdzICVzJyAiICUgZ3BnX2FyZ3MKQEAgLTcxLDYgKzcyLDkgQEAKICAgICAgICAgaWYgc2VsZi5ncGdfdmVyc2lvbiA+ICgyLDEsKToKICAgICAgICAgICAgIGNtZCArPSBbJy0tcGluZW50cnktbW9kZScsICdsb29wYmFjayddCiAKKyAgICAgICAgaWYgc2VsZi5ncGdfYWdlbnRfYmluOgorICAgICAgICAgICAgY21kICs9IFsiLS1hZ2VudC1wcm9ncmFtPSVzfC0tYXV0by1leHBhbmQtc2VjbWVtIiAlIChzZWxmLmdwZ19hZ2VudF9iaW4pXQorCiAgICAgICAgIGNtZCArPSBbaW5wdXRfZmlsZV0KIAogICAgICAgICB0cnk6CkBAIC05OSw3ICsxMDMsNyBAQAogICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgICAgICB0cnk6CiAgICAgICAgICAgICB2ZXJfc3RyID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKHNlbGYuZ3BnX2JpbiwgIi0tdmVyc2lvbiIsICItLW5vLXBlcm1pc3Npb24td2FybmluZyIpKS5zcGxpdCgpWzJdLmRlY29kZSgidXRmLTgiKQotICAgICAgICAgICAgcmV0dXJuIHR1cGxlKFtpbnQoaSkgZm9yIGkgaW4gdmVyX3N0ci5zcGxpdCgnLicpXSkKKyAgICAgICAgICAgIHJldHVybiB0dXBsZShbaW50KGkpIGZvciBpIGluIHZlcl9zdHIuc3BsaXQoIi0iKVswXS5zcGxpdCgnLicpXSkKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJDb3VsZCBub3QgZ2V0IGdwZyB2ZXJzaW9uOiAlcyIgJSBlKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbWFuaWZlc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbWFuaWZlc3QucHkKaW5kZXggNjBjNDliZS4uNjc0MzAzYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL21hbmlmZXN0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9tYW5pZmVzdC5weQpAQCAtMjc0LDggKzI3NCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIHBrZ19saXN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgcGtnc1tzZWxmLnZhcl9tYXBzW3NlbGYubWFuaWZlc3RfdHlwZV1bdmFyXV0gPSBzZWxmLmQuZ2V0VmFyKHZhcikKIAotICAgICAgICAgICAgZm9yIHBrZ190eXBlIGluIHBrZ3M6Ci0gICAgICAgICAgICAgICAgZm9yIHBrZyBpbiBwa2dzW3BrZ190eXBlXS5zcGxpdCgpOgorICAgICAgICAgICAgZm9yIHBrZ190eXBlIGluIHNvcnRlZChwa2dzKToKKyAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHNvcnRlZChwa2dzW3BrZ190eXBlXS5zcGxpdCgpKToKICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3Qud3JpdGUoIiVzLCVzXG4iICUgKHBrZ190eXBlLCBwa2cpKQogCiAgICAgZGVmIGNyZWF0ZV9maW5hbChzZWxmKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKaW5kZXggMWU1YzNhYS4uNGYzZTIxYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKQEAgLTcyLDggKzcyLDcgQEAKICAgICAjIDE2IC0ga2VybmVsIG1vZHVsZQogICAgIGRlZiBpc19lbGYocGF0aCk6CiAgICAgICAgIGV4ZWNfdHlwZSA9IDAKLSAgICAgICAgcmV0LCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoCi0gICAgICAgICAgICAiZmlsZSBcIiVzXCIiICUgcGF0aC5yZXBsYWNlKCJcIiIsICJcXFwiIikpCisgICAgICAgIHJldCwgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJmaWxlIC1iICclcyciICUgcGF0aCkKIAogICAgICAgICBpZiByZXQ6CiAgICAgICAgICAgICBiYi5lcnJvcigic3BsaXRfYW5kX3N0cmlwX2ZpbGVzOiAnZmlsZSAlcycgZmFpbGVkIiAlIHBhdGgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQppbmRleCBlZDhmZWM4Li4yZDhhZWJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKQEAgLTEyLDYgKzEyLDcgQEAKIGltcG9ydCBvZS5wYXRoCiBpbXBvcnQgc3RyaW5nCiBmcm9tIG9lLmdwZ19zaWduIGltcG9ydCBnZXRfc2lnbmVyCitpbXBvcnQgaGFzaGxpYgogCiAjIHRoaXMgY2FuIGJlIHVzZWQgYnkgYWxsIFBNIGJhY2tlbmRzIHRvIGNyZWF0ZSB0aGUgaW5kZXggZmlsZXMgaW4gcGFyYWxsZWwKIGRlZiBjcmVhdGVfaW5kZXgoYXJnKToKQEAgLTIyLDEyICsyMywxMiBAQAogICAgIGlmIHJlc3VsdDoKICAgICAgICAgYmIubm90ZShyZXN1bHQpCiAKLSIiIgotVGhpcyBtZXRob2QgcGFyc2UgdGhlIG91dHB1dCBmcm9tIHRoZSBwYWNrYWdlIG1hbmFnZXJhbmQgcmV0dXJuCi1hIGRpY3Rpb25hcnkgd2l0aCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIHBhY2thZ2VzLiBUaGlzIGlzIHVzZWQKLXdoZW4gdGhlIHBhY2thZ2VzIGFyZSBpbiBkZWIgb3IgaXBrIGZvcm1hdC4KLSIiIgogZGVmIG9wa2dfcXVlcnkoY21kX291dHB1dCk6CisgICAgIiIiCisgICAgVGhpcyBtZXRob2QgcGFyc2UgdGhlIG91dHB1dCBmcm9tIHRoZSBwYWNrYWdlIG1hbmFnZXJhbmQgcmV0dXJuCisgICAgYSBkaWN0aW9uYXJ5IHdpdGggdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBwYWNrYWdlcy4gVGhpcyBpcyB1c2VkCisgICAgd2hlbiB0aGUgcGFja2FnZXMgYXJlIGluIGRlYiBvciBpcGsgZm9ybWF0LgorICAgICIiIgogICAgIHZlcnJlZ2V4ID0gcmUuY29tcGlsZSgnIFwoWz08Pl0qIFteICldKlwpJykKICAgICBvdXRwdXQgPSBkaWN0KCkKICAgICBwa2cgPSAiIgpAQCAtODMsNiArODQsMTEgQEAKIAogICAgIHJldHVybiBvdXRwdXQKIAorIyBOb3RlOiB0aGlzIHNob3VsZCBiZSBiYi5mYXRhbCBpbiB0aGUgZnV0dXJlLgorZGVmIGZhaWxlZF9wb3N0aW5zdHNfd2Fybihwa2dzLCBsb2dfcGF0aCk6CisgICAgYmIud2FybigiIiJJbnRlbnRpb25hbGx5IGZhaWxpbmcgcG9zdGluc3RhbGwgc2NyaXB0bGV0cyBvZiAlcyB0byBkZWZlciB0aGVtIHRvIGZpcnN0IGJvb3QgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHBsYWNlIHRoZW0gaW50byBwa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0gKCkuCitJZiBkZWZlcnJpbmcgdG8gZmlyc3QgYm9vdCB3YXNuJ3QgdGhlIGludGVudCwgdGhlbiBzY3JpcHRsZXQgZmFpbHVyZSBtYXkgbWVhbiBhbiBpc3N1ZSBpbiB0aGUgcmVjaXBlLCBvciBhIHJlZ3Jlc3Npb24gZWxzZXdoZXJlLgorRGV0YWlscyBvZiB0aGUgZmFpbHVyZSBhcmUgaW4gJXMuIiIiICUocGtncywgbG9nX3BhdGgpKQogCiBjbGFzcyBJbmRleGVyKG9iamVjdCwgbWV0YWNsYXNzPUFCQ01ldGEpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCBkZXBsb3lfZGlyKToKQEAgLTk2LDEzICsxMDIsMTYgQEAKIAogY2xhc3MgUnBtSW5kZXhlcihJbmRleGVyKToKICAgICBkZWYgd3JpdGVfaW5kZXgoc2VsZik6CisgICAgICAgIHNlbGYuZG9fd3JpdGVfaW5kZXgoc2VsZi5kZXBsb3lfZGlyKQorCisgICAgZGVmIGRvX3dyaXRlX2luZGV4KHNlbGYsIGRlcGxveV9kaXIpOgogICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfU0lHTicpID09ICcxJzoKICAgICAgICAgICAgIHNpZ25lciA9IGdldF9zaWduZXIoc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfR1BHX0JBQ0tFTkQnKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNpZ25lciA9IE5vbmUKIAogICAgICAgICBjcmVhdGVyZXBvX2MgPSBiYi51dGlscy53aGljaChvcy5lbnZpcm9uWydQQVRIJ10sICJjcmVhdGVyZXBvX2MiKQotICAgICAgICByZXN1bHQgPSBjcmVhdGVfaW5kZXgoIiVzIC0tdXBkYXRlIC1xICVzIiAlIChjcmVhdGVyZXBvX2MsIHNlbGYuZGVwbG95X2RpcikpCisgICAgICAgIHJlc3VsdCA9IGNyZWF0ZV9pbmRleCgiJXMgLS11cGRhdGUgLXEgJXMiICUgKGNyZWF0ZXJlcG9fYywgZGVwbG95X2RpcikpCiAgICAgICAgIGlmIHJlc3VsdDoKICAgICAgICAgICAgIGJiLmZhdGFsKHJlc3VsdCkKIApAQCAtMTEwLDE3ICsxMTksMjggQEAKICAgICAgICAgaWYgc2lnbmVyOgogICAgICAgICAgICAgc2lnX3R5cGUgPSBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfR1BHX1NJR05BVFVSRV9UWVBFJykKICAgICAgICAgICAgIGlzX2FzY2lpX3NpZyA9IChzaWdfdHlwZS51cHBlcigpICE9ICJCSU4iKQotICAgICAgICAgICAgc2lnbmVyLmRldGFjaF9zaWduKG9zLnBhdGguam9pbihzZWxmLmRlcGxveV9kaXIsICdyZXBvZGF0YScsICdyZXBvbWQueG1sJyksCisgICAgICAgICAgICBzaWduZXIuZGV0YWNoX3NpZ24ob3MucGF0aC5qb2luKGRlcGxveV9kaXIsICdyZXBvZGF0YScsICdyZXBvbWQueG1sJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX0dQR19OQU1FJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX0dQR19QQVNTUEhSQVNFX0ZJTEUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1vcj1pc19hc2NpaV9zaWcpCiAKK2NsYXNzIFJwbVN1YmRpckluZGV4ZXIoUnBtSW5kZXhlcik6CisgICAgZGVmIHdyaXRlX2luZGV4KHNlbGYpOgorICAgICAgICBiYi5ub3RlKCJHZW5lcmF0aW5nIHBhY2thZ2UgaW5kZXggZm9yICVzIiAlKHNlbGYuZGVwbG95X2RpcikpCisgICAgICAgIHNlbGYuZG9fd3JpdGVfaW5kZXgoc2VsZi5kZXBsb3lfZGlyKQorICAgICAgICBmb3IgZW50cnkgaW4gb3Mud2FsayhzZWxmLmRlcGxveV9kaXIpOgorICAgICAgICAgICAgaWYgb3MucGF0aC5zYW1lZmlsZShzZWxmLmRlcGxveV9kaXIsIGVudHJ5WzBdKToKKyAgICAgICAgICAgICAgICBmb3IgZGlyIGluIGVudHJ5WzFdOgorICAgICAgICAgICAgICAgICAgICBpZiBkaXIgIT0gJ3JlcG9kYXRhJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9wYXRoID0gb2UucGF0aC5qb2luKHNlbGYuZGVwbG95X2RpciwgZGlyKQorICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiR2VuZXJhdGluZyBwYWNrYWdlIGluZGV4IGZvciAlcyIgJShkaXJfcGF0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvX3dyaXRlX2luZGV4KGRpcl9wYXRoKQogCiBjbGFzcyBPcGtnSW5kZXhlcihJbmRleGVyKToKICAgICBkZWYgd3JpdGVfaW5kZXgoc2VsZik6CiAgICAgICAgIGFyY2hfdmFycyA9IFsiQUxMX01VTFRJTElCX1BBQ0tBR0VfQVJDSFMiLAogICAgICAgICAgICAgICAgICAgICAgIlNES19QQUNLQUdFX0FSQ0hTIiwKLSAgICAgICAgICAgICAgICAgICAgICJNVUxUSUxJQl9BUkNIUyJdCisgICAgICAgICAgICAgICAgICAgICBdCiAKICAgICAgICAgb3BrZ19pbmRleF9jbWQgPSBiYi51dGlscy53aGljaChvcy5nZXRlbnYoJ1BBVEgnKSwgIm9wa2ctbWFrZS1pbmRleCIpCiAgICAgICAgIGlmIHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9TSUdOJykgPT0gJzEnOgpAQCAtMzA3LDM5ICszMjcsMTAzIEBACiAgICAgVGhpcyBpcyBhbiBhYnN0cmFjdCBjbGFzcy4gRG8gbm90IGluc3RhbnRpYXRlIHRoaXMgZGlyZWN0bHkuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIHRhcmdldF9yb290ZnMpOgogICAgICAgICBzZWxmLmQgPSBkCisgICAgICAgIHNlbGYudGFyZ2V0X3Jvb3RmcyA9IHRhcmdldF9yb290ZnMKICAgICAgICAgc2VsZi5kZXBsb3lfZGlyID0gTm9uZQogICAgICAgICBzZWxmLmRlcGxveV9sb2NrID0gTm9uZQorICAgICAgICBzZWxmLl9pbml0aWFsaXplX2ludGVyY2VwdHMoKQogCi0gICAgIiIiCi0gICAgVXBkYXRlIHRoZSBwYWNrYWdlIG1hbmFnZXIgcGFja2FnZSBkYXRhYmFzZS4KLSAgICAiIiIKKyAgICBkZWYgX2luaXRpYWxpemVfaW50ZXJjZXB0cyhzZWxmKToKKyAgICAgICAgYmIubm90ZSgiSW5pdGlhbGl6aW5nIGludGVyY2VwdCBkaXIgZm9yICVzIiAlIHNlbGYudGFyZ2V0X3Jvb3RmcykKKyAgICAgICAgcG9zdGluc3RfaW50ZXJjZXB0c19kaXIgPSBzZWxmLmQuZ2V0VmFyKCJQT1NUSU5TVF9JTlRFUkNFUFRTX0RJUiIpCisgICAgICAgIGlmIG5vdCBwb3N0aW5zdF9pbnRlcmNlcHRzX2RpcjoKKyAgICAgICAgICAgIHBvc3RpbnN0X2ludGVyY2VwdHNfZGlyID0gc2VsZi5kLmV4cGFuZCgiJHtDT1JFQkFTRX0vc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzIikKKyAgICAgICAgIyBBcyB0aGVyZSBtaWdodCBiZSBtb3JlIHRoYW4gb25lIGluc3RhbmNlIG9mIFBhY2thZ2VNYW5hZ2VyIG9wZXJhdGluZyBhdCB0aGUgc2FtZSB0aW1lCisgICAgICAgICMgd2UgbmVlZCB0byBpc29sYXRlIHRoZSBpbnRlcmNlcHRfc2NyaXB0cyBkaXJlY3RvcmllcyBmcm9tIGVhY2ggb3RoZXIsCisgICAgICAgICMgaGVuY2UgdGhlIHVnbHkgaGFzaCBkaWdlc3QgaW4gZGlyIG5hbWUuCisgICAgICAgIHNlbGYuaW50ZXJjZXB0c19kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5kLmdldFZhcignV09SS0RJUicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJjZXB0X3NjcmlwdHMtJXMiICUoaGFzaGxpYi5zaGEyNTYoc2VsZi50YXJnZXRfcm9vdGZzLmVuY29kZSgpKS5oZXhkaWdlc3QoKSkgKQorCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShzZWxmLmludGVyY2VwdHNfZGlyLCBUcnVlKQorICAgICAgICBzaHV0aWwuY29weXRyZWUocG9zdGluc3RfaW50ZXJjZXB0c19kaXIsIHNlbGYuaW50ZXJjZXB0c19kaXIpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShzZWxmLCBmYWlsZWRfc2NyaXB0KToKKyAgICAgICAgcGFzcworCisgICAgZGVmIF9wb3N0cG9uZV90b19maXJzdF9ib290KHNlbGYsIHBvc3RpbnN0X2ludGVyY2VwdF9ob29rKToKKyAgICAgICAgd2l0aCBvcGVuKHBvc3RpbnN0X2ludGVyY2VwdF9ob29rKSBhcyBpbnRlcmNlcHQ6CisgICAgICAgICAgICByZWdpc3RlcmVkX3BrZ3MgPSBOb25lCisgICAgICAgICAgICBmb3IgbGluZSBpbiBpbnRlcmNlcHQucmVhZCgpLnNwbGl0KCJcbiIpOgorICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiXiMjUEtHUzooLiopIiwgbGluZSkKKyAgICAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX3BrZ3MgPSBtLmdyb3VwKDEpLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgaWYgcmVnaXN0ZXJlZF9wa2dzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGJiLm5vdGUoIklmIGFuIGltYWdlIGlzIGJlaW5nIGJ1aWx0LCB0aGUgcG9zdGluc3RhbGxzIGZvciB0aGUgZm9sbG93aW5nIHBhY2thZ2VzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWxsIGJlIHBvc3Rwb25lZCBmb3IgZmlyc3QgYm9vdDogJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfcGtncykKKworICAgICAgICAgICAgICAgICMgY2FsbCB0aGUgYmFja2VuZCBkZXBlbmRlbnQgaGFuZGxlcgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShyZWdpc3RlcmVkX3BrZ3MpCisKKworICAgIGRlZiBydW5faW50ZXJjZXB0cyhzZWxmKToKKyAgICAgICAgaW50ZXJjZXB0c19kaXIgPSBzZWxmLmludGVyY2VwdHNfZGlyCisKKyAgICAgICAgYmIubm90ZSgiUnVubmluZyBpbnRlcmNlcHQgc2NyaXB0czoiKQorICAgICAgICBvcy5lbnZpcm9uWydEJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKKyAgICAgICAgb3MuZW52aXJvblsnU1RBR0lOR19ESVJfTkFUSVZFJ10gPSBzZWxmLmQuZ2V0VmFyKCdTVEFHSU5HX0RJUl9OQVRJVkUnKQorICAgICAgICBmb3Igc2NyaXB0IGluIG9zLmxpc3RkaXIoaW50ZXJjZXB0c19kaXIpOgorICAgICAgICAgICAgc2NyaXB0X2Z1bGwgPSBvcy5wYXRoLmpvaW4oaW50ZXJjZXB0c19kaXIsIHNjcmlwdCkKKworICAgICAgICAgICAgaWYgc2NyaXB0ID09ICJwb3N0aW5zdF9pbnRlcmNlcHQiIG9yIG5vdCBvcy5hY2Nlc3Moc2NyaXB0X2Z1bGwsIG9zLlhfT0spOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGlmIHNjcmlwdCA9PSAiZGVsYXlfdG9fZmlyc3RfYm9vdCI6CisgICAgICAgICAgICAgICAgc2VsZi5fcG9zdHBvbmVfdG9fZmlyc3RfYm9vdChzY3JpcHRfZnVsbCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBiYi5ub3RlKCI+IEV4ZWN1dGluZyAlcyBpbnRlcmNlcHQgLi4uIiAlIHNjcmlwdCkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHNjcmlwdF9mdWxsLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgICAgaWYgb3V0cHV0OiBiYi5ub3RlKG91dHB1dC5kZWNvZGUoInV0Zi04IikpCisgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGUgcG9zdGluc3RhbGwgaW50ZXJjZXB0IGhvb2sgJyVzJyBmYWlsZWQsIGRldGFpbHMgaW4gJXMvbG9nLmRvXyVzIiAlIChzY3JpcHQsIHNlbGYuZC5nZXRWYXIoJ1QnKSwgc2VsZi5kLmdldFZhcignQkJfQ1VSUkVOVFRBU0snKSkpCisgICAgICAgICAgICAgICAgYmIubm90ZSgiRXhpdCBjb2RlICVkLiBPdXRwdXQ6XG4lcyIgJSAoZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQorICAgICAgICAgICAgICAgIHNlbGYuX3Bvc3Rwb25lX3RvX2ZpcnN0X2Jvb3Qoc2NyaXB0X2Z1bGwpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgdXBkYXRlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVXBkYXRlIHRoZSBwYWNrYWdlIG1hbmFnZXIgcGFja2FnZSBkYXRhYmFzZS4KKyAgICAgICAgIiIiCiAgICAgICAgIHBhc3MKIAotICAgICIiIgotICAgIEluc3RhbGwgYSBsaXN0IG9mIHBhY2thZ2VzLiAncGtncycgaXMgYSBsaXN0IG9iamVjdC4gSWYgJ2F0dGVtcHRfb25seScgaXMKLSAgICBUcnVlLCBpbnN0YWxsYXRpb24gZmFpbHVyZXMgYXJlIGlnbm9yZWQuCi0gICAgIiIiCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgcGtncywgYXR0ZW1wdF9vbmx5PUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIEluc3RhbGwgYSBsaXN0IG9mIHBhY2thZ2VzLiAncGtncycgaXMgYSBsaXN0IG9iamVjdC4gSWYgJ2F0dGVtcHRfb25seScgaXMKKyAgICAgICAgVHJ1ZSwgaW5zdGFsbGF0aW9uIGZhaWx1cmVzIGFyZSBpZ25vcmVkLgorICAgICAgICAiIiIKICAgICAgICAgcGFzcwogCi0gICAgIiIiCi0gICAgUmVtb3ZlIGEgbGlzdCBvZiBwYWNrYWdlcy4gJ3BrZ3MnIGlzIGEgbGlzdCBvYmplY3QuIElmICd3aXRoX2RlcGVuZGVuY2llcycKLSAgICBpcyBGYWxzZSwgdGhlIGFueSBkZXBlbmRlbmNpZXMgYXJlIGxlZnQgaW4gcGxhY2UuCi0gICAgIiIiCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIHJlbW92ZShzZWxmLCBwa2dzLCB3aXRoX2RlcGVuZGVuY2llcz1UcnVlKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlbW92ZSBhIGxpc3Qgb2YgcGFja2FnZXMuICdwa2dzJyBpcyBhIGxpc3Qgb2JqZWN0LiBJZiAnd2l0aF9kZXBlbmRlbmNpZXMnCisgICAgICAgIGlzIEZhbHNlLCB0aGVuIGFueSBkZXBlbmRlbmNpZXMgYXJlIGxlZnQgaW4gcGxhY2UuCisgICAgICAgICIiIgogICAgICAgICBwYXNzCiAKLSAgICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdGhlIGluZGV4IGZpbGVzCi0gICAgIiIiCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIHdyaXRlX2luZGV4KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIHRoZSBpbmRleCBmaWxlcworICAgICAgICAiIiIKICAgICAgICAgcGFzcwogCiAgICAgQGFic3RyYWN0bWV0aG9kCkBAIC0zNTAsMzAgKzQzNCwyOCBAQAogICAgIGRlZiBsaXN0X2luc3RhbGxlZChzZWxmKToKICAgICAgICAgcGFzcwogCi0gICAgIiIiCi0gICAgUmV0dXJucyB0aGUgcGF0aCB0byBhIHRtcGRpciB3aGVyZSByZXNpZGVzIHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UuCi0KLSAgICBEZWxldGluZyB0aGUgdG1wZGlyIGlzIHJlc3BvbnNhYmlsaXR5IG9mIHRoZSBjYWxsZXIuCi0KLSAgICAiIiIKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgZXh0cmFjdChzZWxmLCBwa2cpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgcGF0aCB0byBhIHRtcGRpciB3aGVyZSByZXNpZGVzIHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UuCisgICAgICAgIERlbGV0aW5nIHRoZSB0bXBkaXIgaXMgcmVzcG9uc2FiaWxpdHkgb2YgdGhlIGNhbGxlci4KKyAgICAgICAgIiIiCiAgICAgICAgIHBhc3MKIAotICAgICIiIgotICAgIEFkZCByZW1vdGUgcGFja2FnZSBmZWVkcyBpbnRvIHJlcG9zaXRvcnkgbWFuYWdlciBjb25maWd1cmF0aW9uLiBUaGUgcGFyYW1ldGVycwotICAgIGZvciB0aGUgZmVlZHMgYXJlIHNldCBieSBmZWVkX3VyaXMsIGZlZWRfYmFzZV9wYXRocyBhbmQgZmVlZF9hcmNocy4KLSAgICBTZWUgaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvY3VycmVudC9yZWYtbWFudWFsL3JlZi1tYW51YWwuaHRtbCN2YXItUEFDS0FHRV9GRUVEX1VSSVMKLSAgICBmb3IgdGhlaXIgZGVzY3JpcHRpb24uCi0gICAgIiIiCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIGluc2VydF9mZWVkc191cmlzKHNlbGYsIGZlZWRfdXJpcywgZmVlZF9iYXNlX3BhdGhzLCBmZWVkX2FyY2hzKToKKyAgICAgICAgIiIiCisgICAgICAgIEFkZCByZW1vdGUgcGFja2FnZSBmZWVkcyBpbnRvIHJlcG9zaXRvcnkgbWFuYWdlciBjb25maWd1cmF0aW9uLiBUaGUgcGFyYW1ldGVycworICAgICAgICBmb3IgdGhlIGZlZWRzIGFyZSBzZXQgYnkgZmVlZF91cmlzLCBmZWVkX2Jhc2VfcGF0aHMgYW5kIGZlZWRfYXJjaHMuCisgICAgICAgIFNlZSBodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy9jdXJyZW50L3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sI3Zhci1QQUNLQUdFX0ZFRURfVVJJUworICAgICAgICBmb3IgdGhlaXIgZGVzY3JpcHRpb24uCisgICAgICAgICIiIgogICAgICAgICBwYXNzCiAKLSAgICAiIiIKLSAgICBJbnN0YWxsIGFsbCBwYWNrYWdlcyB0aGF0IG1hdGNoIGEgZ2xvYi4KLSAgICAiIiIKICAgICBkZWYgaW5zdGFsbF9nbG9iKHNlbGYsIGdsb2JzLCBzZGs9RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgSW5zdGFsbCBhbGwgcGFja2FnZXMgdGhhdCBtYXRjaCBhIGdsb2IuCisgICAgICAgICIiIgogICAgICAgICAjIFRPRE8gZG9uJ3QgaGF2ZSBzZGsgaGVyZSBidXQgaGF2ZSBhIHByb3BlcnR5IG9uIHRoZSBzdXBlcmNsYXNzCiAgICAgICAgICMgKGFuZCByZXNwZWN0IGluIGluc3RhbGxfY29tcGxlbWVudGFyeSkKICAgICAgICAgaWYgc2RrOgpAQCAtMzkzLDE0ICs0NzUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyByZXR1cm5lZCAlZDpcbiVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgJy5qb2luKGNtZCksIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAotICAgICIiIgotICAgIEluc3RhbGwgY29tcGxlbWVudGFyeSBwYWNrYWdlcyBiYXNlZCB1cG9uIHRoZSBsaXN0IG9mIGN1cnJlbnRseSBpbnN0YWxsZWQKLSAgICBwYWNrYWdlcyBlLmcuIGxvY2FsZXMsICotZGV2LCAqLWRiZywgZXRjLiBUaGlzIHdpbGwgb25seSBhdHRlbXB0IHRvIGluc3RhbGwKLSAgICB0aGVzZSBwYWNrYWdlcywgaWYgdGhleSBkb24ndCBleGlzdCB0aGVuIG5vIGVycm9yIHdpbGwgb2NjdXIuICBOb3RlOiBldmVyeQotICAgIGJhY2tlbmQgbmVlZHMgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGV4cGxpY2l0bHkgYWZ0ZXIgdGhlIG5vcm1hbCBwYWNrYWdlCi0gICAgaW5zdGFsbGF0aW9uCi0gICAgIiIiCiAgICAgZGVmIGluc3RhbGxfY29tcGxlbWVudGFyeShzZWxmLCBnbG9icz1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIEluc3RhbGwgY29tcGxlbWVudGFyeSBwYWNrYWdlcyBiYXNlZCB1cG9uIHRoZSBsaXN0IG9mIGN1cnJlbnRseSBpbnN0YWxsZWQKKyAgICAgICAgcGFja2FnZXMgZS5nLiBsb2NhbGVzLCAqLWRldiwgKi1kYmcsIGV0Yy4gVGhpcyB3aWxsIG9ubHkgYXR0ZW1wdCB0byBpbnN0YWxsCisgICAgICAgIHRoZXNlIHBhY2thZ2VzLCBpZiB0aGV5IGRvbid0IGV4aXN0IHRoZW4gbm8gZXJyb3Igd2lsbCBvY2N1ci4gIE5vdGU6IGV2ZXJ5CisgICAgICAgIGJhY2tlbmQgbmVlZHMgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGV4cGxpY2l0bHkgYWZ0ZXIgdGhlIG5vcm1hbCBwYWNrYWdlCisgICAgICAgIGluc3RhbGxhdGlvbgorICAgICAgICAiIiIKICAgICAgICAgaWYgZ2xvYnMgaXMgTm9uZToKICAgICAgICAgICAgIGdsb2JzID0gc2VsZi5kLmdldFZhcignSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJykKICAgICAgICAgICAgIHNwbGl0X2xpbmd1YXMgPSBzZXQoKQpAQCAtNDU3LDEzICs1MzksMTMgQEAKIAogICAgICAgICBzZWxmLmRlcGxveV9sb2NrID0gTm9uZQogCi0gICAgIiIiCi0gICAgQ29uc3RydWN0IFVSSXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBwYXR0ZXJuOiB1cmkvYmFzZV9wYXRoIHdoZXJlICd1cmknCi0gICAgYW5kICdiYXNlX3BhdGgnIGNvcnJlc3BvbmQgdG8gZWFjaCBlbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIGFycmF5Ci0gICAgYXJndW1lbnQgbGVhZGluZyB0byBsZW4odXJpcykgeCBsZW4oYmFzZV9wYXRocykgZWxlbWVudHMgb24gdGhlIHJldHVybmVkCi0gICAgYXJyYXkKLSAgICAiIiIKICAgICBkZWYgY29uc3RydWN0X3VyaXMoc2VsZiwgdXJpcywgYmFzZV9wYXRocyk6CisgICAgICAgICIiIgorICAgICAgICBDb25zdHJ1Y3QgVVJJcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIHBhdHRlcm46IHVyaS9iYXNlX3BhdGggd2hlcmUgJ3VyaScKKyAgICAgICAgYW5kICdiYXNlX3BhdGgnIGNvcnJlc3BvbmQgdG8gZWFjaCBlbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIGFycmF5CisgICAgICAgIGFyZ3VtZW50IGxlYWRpbmcgdG8gbGVuKHVyaXMpIHggbGVuKGJhc2VfcGF0aHMpIGVsZW1lbnRzIG9uIHRoZSByZXR1cm5lZAorICAgICAgICBhcnJheQorICAgICAgICAiIiIKICAgICAgICAgZGVmIF9hcHBlbmQoYXJyMSwgYXJyMiwgc2VwPScvJyk6CiAgICAgICAgICAgICByZXMgPSBbXQogICAgICAgICAgICAgbmFycjEgPSBbYS5yc3RyaXAoc2VwKSBmb3IgYSBpbiBhcnIxXQpAQCAtNDc3LDE4ICs1NTksOTggQEAKICAgICAgICAgICAgIHJldHVybiByZXMKICAgICAgICAgcmV0dXJuIF9hcHBlbmQodXJpcywgYmFzZV9wYXRocykKIAorZGVmIGNyZWF0ZV9wYWNrYWdlc19kaXIoZCwgcnBtX3JlcG9fZGlyLCBkZXBsb3lkaXIsIHRhc2tuYW1lLCBmaWx0ZXJieWRlcGVuZGVuY2llcyk6CisgICAgIiIiCisgICAgR28gdGhyb3VnaCBvdXIgZG9fcGFja2FnZV93cml0ZV9YIGRlcGVuZGVuY2llcyBhbmQgaGFyZGxpbmsgdGhlIHBhY2thZ2VzIHdlIGRlcGVuZAorICAgIHVwb24gaW50byB0aGUgcmVwbyBkaXJlY3RvcnkuIFRoaXMgcHJldmVudHMgdXMgc2VlaW5nIG90aGVyIHBhY2thZ2VzIHRoYXQgbWF5CisgICAgaGF2ZSBiZWVuIGJ1aWx0IHRoYXQgd2UgZG9uJ3QgZGVwZW5kIHVwb24gYW5kIGFsc28gcGFja2FnZXMgZm9yIGFyY2hpdGVjdHVyZXMgd2UgZG9uJ3QKKyAgICBzdXBwb3J0LgorICAgICIiIgorICAgIGltcG9ydCBlcnJubworCisgICAgdGFza2RlcGRhdGEgPSBkLmdldFZhcigiQkJfVEFTS0RFUERBVEEiLCBGYWxzZSkKKyAgICBteXRhc2tuYW1lID0gZC5nZXRWYXIoIkJCX1JVTlRBU0siKQorICAgIHBuID0gZC5nZXRWYXIoIlBOIikKKyAgICBzZWVuZGlycyA9IHNldCgpCisgICAgbXVsdGlsaWJzID0ge30KKyAgIAorICAgIHJwbV9zdWJyZXBvX2RpciA9IG9lLnBhdGguam9pbihycG1fcmVwb19kaXIsICJycG0iKQorCisgICAgYmIudXRpbHMucmVtb3ZlKHJwbV9zdWJyZXBvX2RpciwgcmVjdXJzZT1UcnVlKQorICAgIGJiLnV0aWxzLm1rZGlyaGllcihycG1fc3VicmVwb19kaXIpCisKKyAgICAjIERldGVjdCBiaXRiYWtlIC1iIHVzYWdlCisgICAgbm9kZXBzID0gZC5nZXRWYXIoIkJCX0xJTUlURURERVBTIikgb3IgRmFsc2UKKyAgICBpZiBub2RlcHMgb3Igbm90IGZpbHRlcmJ5ZGVwZW5kZW5jaWVzOgorICAgICAgICBvZS5wYXRoLnN5bWxpbmsoZGVwbG95ZGlyLCBycG1fc3VicmVwb19kaXIsIFRydWUpCisgICAgICAgIHJldHVybgorCisgICAgc3RhcnQgPSBOb25lCisgICAgZm9yIGRlcCBpbiB0YXNrZGVwZGF0YToKKyAgICAgICAgZGF0YSA9IHRhc2tkZXBkYXRhW2RlcF0KKyAgICAgICAgaWYgZGF0YVsxXSA9PSBteXRhc2tuYW1lIGFuZCBkYXRhWzBdID09IHBuOgorICAgICAgICAgICAgc3RhcnQgPSBkZXAKKyAgICAgICAgICAgIGJyZWFrCisgICAgaWYgc3RhcnQgaXMgTm9uZToKKyAgICAgICAgYmIuZmF0YWwoIkNvdWxkbid0IGZpbmQgb3Vyc2VsZiBpbiBCQl9UQVNLREVQREFUQT8iKQorICAgIHJwbWRlcHMgPSBzZXQoKQorICAgIHN0YXJ0ID0gW3N0YXJ0XQorICAgIHNlZW4gPSBzZXQoc3RhcnQpCisgICAgIyBTdXBwb3J0IGRpcmVjdCBkZXBlbmRlbmNpZXMgKGRvX3Jvb3RmcyAtPiBycG1zKQorICAgICMgb3IgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHdpdGhpbiBQTiAoZG9fcG9wdWxhdGVfc2RrX2V4dCAtPiBkb19yb290ZnMgLT4gcnBtcykKKyAgICB3aGlsZSBzdGFydDoKKyAgICAgICAgbmV4dCA9IFtdCisgICAgICAgIGZvciBkZXAyIGluIHN0YXJ0OgorICAgICAgICAgICAgZm9yIGRlcCBpbiB0YXNrZGVwZGF0YVtkZXAyXVszXToKKyAgICAgICAgICAgICAgICBpZiB0YXNrZGVwZGF0YVtkZXBdWzBdICE9IHBuOgorICAgICAgICAgICAgICAgICAgICBpZiAiZG9fIiArIHRhc2tuYW1lIGluIGRlcDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJwbWRlcHMuYWRkKGRlcCkKKyAgICAgICAgICAgICAgICBlbGlmIGRlcCBub3QgaW4gc2VlbjoKKyAgICAgICAgICAgICAgICAgICAgbmV4dC5hcHBlbmQoZGVwKQorICAgICAgICAgICAgICAgICAgICBzZWVuLmFkZChkZXApCisgICAgICAgIHN0YXJ0ID0gbmV4dAorCisgICAgZm9yIGRlcCBpbiBycG1kZXBzOgorICAgICAgICBjID0gdGFza2RlcGRhdGFbZGVwXVswXQorICAgICAgICBtYW5pZmVzdCwgZDIgPSBvZS5zc3RhdGVzaWcuZmluZF9zc3RhdGVfbWFuaWZlc3QoYywgdGFza2RlcGRhdGFbZGVwXVsyXSwgdGFza25hbWUsIGQsIG11bHRpbGlicykKKyAgICAgICAgaWYgbm90IG1hbmlmZXN0OgorICAgICAgICAgICAgYmIuZmF0YWwoIk5vIG1hbmlmZXN0IGdlbmVyYXRlZCBmcm9tOiAlcyBpbiAlcyIgJSAoYywgdGFza2RlcGRhdGFbZGVwXVsyXSkpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdCk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB3aXRoIG9wZW4obWFuaWZlc3QsICJyIikgYXMgZjoKKyAgICAgICAgICAgIGZvciBsIGluIGY6CisgICAgICAgICAgICAgICAgbCA9IGwuc3RyaXAoKQorICAgICAgICAgICAgICAgIGRlc3QgPSBsLnJlcGxhY2UoZGVwbG95ZGlyLCAiIikKKyAgICAgICAgICAgICAgICBkZXN0ID0gcnBtX3N1YnJlcG9fZGlyICsgZGVzdAorICAgICAgICAgICAgICAgIGlmIGwuZW5kc3dpdGgoIi8iKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZGVzdCBub3QgaW4gc2VlbmRpcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5kaXJzLmFkZChkZXN0KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICMgVHJ5IHRvIGhhcmRsaW5rIHRoZSBmaWxlLCBjb3B5IGlmIHRoYXQgZmFpbHMKKyAgICAgICAgICAgICAgICBkZXN0ZGlyID0gb3MucGF0aC5kaXJuYW1lKGRlc3QpCisgICAgICAgICAgICAgICAgaWYgZGVzdGRpciBub3QgaW4gc2VlbmRpcnM6CisgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0ZGlyKQorICAgICAgICAgICAgICAgICAgICBzZWVuZGlycy5hZGQoZGVzdGRpcikKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsobCwgZGVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyA9PSBlcnJuby5FWERFVjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKGwsIGRlc3QpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorCiBjbGFzcyBScG1QTShQYWNrYWdlTWFuYWdlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgIGQsCiAgICAgICAgICAgICAgICAgIHRhcmdldF9yb290ZnMsCiAgICAgICAgICAgICAgICAgIHRhcmdldF92ZW5kb3IsCiAgICAgICAgICAgICAgICAgIHRhc2tfbmFtZT0ndGFyZ2V0JywKLSAgICAgICAgICAgICAgICAgcHJvdmlkZW5hbWU9Tm9uZSwKICAgICAgICAgICAgICAgICAgYXJjaF92YXI9Tm9uZSwKICAgICAgICAgICAgICAgICAgb3NfdmFyPU5vbmUsCi0gICAgICAgICAgICAgICAgIHJwbV9yZXBvX3dvcmtkaXI9Im9lLXJvb3Rmcy1yZXBvIik6Ci0gICAgICAgIHN1cGVyKFJwbVBNLCBzZWxmKS5fX2luaXRfXyhkKQotICAgICAgICBzZWxmLnRhcmdldF9yb290ZnMgPSB0YXJnZXRfcm9vdGZzCisgICAgICAgICAgICAgICAgIHJwbV9yZXBvX3dvcmtkaXI9Im9lLXJvb3Rmcy1yZXBvIiwKKyAgICAgICAgICAgICAgICAgZmlsdGVyYnlkZXBlbmRlbmNpZXM9VHJ1ZSk6CisgICAgICAgIHN1cGVyKFJwbVBNLCBzZWxmKS5fX2luaXRfXyhkLCB0YXJnZXRfcm9vdGZzKQogICAgICAgICBzZWxmLnRhcmdldF92ZW5kb3IgPSB0YXJnZXRfdmVuZG9yCiAgICAgICAgIHNlbGYudGFza19uYW1lID0gdGFza19uYW1lCiAgICAgICAgIGlmIGFyY2hfdmFyID09IE5vbmU6CkBAIC01MDEsOCArNjYzLDcgQEAKICAgICAgICAgICAgIHNlbGYucHJpbWFyeV9hcmNoID0gc2VsZi5kLmdldFZhcignTUFDSElORV9BUkNIJykKIAogICAgICAgICBzZWxmLnJwbV9yZXBvX2RpciA9IG9lLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJyksIHJwbV9yZXBvX3dvcmtkaXIpCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLnJwbV9yZXBvX2RpcikKLSAgICAgICAgb2UucGF0aC5zeW1saW5rKHNlbGYuZC5nZXRWYXIoJ0RFUExPWV9ESVJfUlBNJyksIG9lLnBhdGguam9pbihzZWxmLnJwbV9yZXBvX2RpciwgInJwbSIpLCBUcnVlKQorICAgICAgICBjcmVhdGVfcGFja2FnZXNfZGlyKHNlbGYuZCwgc2VsZi5ycG1fcmVwb19kaXIsIGQuZ2V0VmFyKCJERVBMT1lfRElSX1JQTSIpLCAicGFja2FnZV93cml0ZV9ycG0iLCBmaWx0ZXJieWRlcGVuZGVuY2llcykKIAogICAgICAgICBzZWxmLnNhdmVkX3BhY2thZ2luZ19kYXRhID0gc2VsZi5kLmV4cGFuZCgnJHtUfS9zYXZlZF9wYWNrYWdpbmdfZGF0YS8lcycgJSBzZWxmLnRhc2tfbmFtZSkKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuZC5leHBhbmQoJyR7VH0vc2F2ZWRfcGFja2FnaW5nX2RhdGEnKSk6CkBAIC01NzcsNyArNzM4LDcgQEAKICAgICAgICAgICAgIGdwZ19vcHRzICs9ICdyZXBvX2dwZ2NoZWNrPTFcbicKICAgICAgICAgICAgIGdwZ19vcHRzICs9ICdncGdrZXk9ZmlsZTovLyVzL3BraS9wYWNrYWdlZmVlZC1ncGcvUEFDS0FHRUZFRUQtR1BHLUtFWS0lcy0lc1xuJyAlIChzZWxmLmQuZ2V0VmFyKCdzeXNjb25mZGlyJyksIHNlbGYuZC5nZXRWYXIoJ0RJU1RSTycpLCBzZWxmLmQuZ2V0VmFyKCdESVNUUk9fQ09ERU5BTUUnKSkKIAotICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdSUE1fU0lHTl9QQUNLQUdFUycpID09ICcwJzoKKyAgICAgICAgaWYgc2VsZi5kLmdldFZhcignUlBNX1NJR05fUEFDS0FHRVMnKSAhPSAnMSc6CiAgICAgICAgICAgICBncGdfb3B0cyArPSAnZ3BnY2hlY2s9MFxuJwogCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvZS5wYXRoLmpvaW4oc2VsZi50YXJnZXRfcm9vdGZzLCAiZXRjIiwgInl1bS5yZXBvcy5kIikpCkBAIC02MDIsOCArNzYzLDcgQEAKICAgICAgICAgb3MuZW52aXJvblsnT0ZGTElORV9ST09UJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKICAgICAgICAgb3MuZW52aXJvblsnSVBLR19PRkZMSU5FX1JPT1QnXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcwogICAgICAgICBvcy5lbnZpcm9uWydPUEtHX09GRkxJTkVfUk9PVCddID0gc2VsZi50YXJnZXRfcm9vdGZzCi0gICAgICAgIG9zLmVudmlyb25bJ0lOVEVSQ0VQVF9ESVInXSA9IG9lLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJjZXB0X3NjcmlwdHMiKQorICAgICAgICBvcy5lbnZpcm9uWydJTlRFUkNFUFRfRElSJ10gPSBzZWxmLmludGVyY2VwdHNfZGlyCiAgICAgICAgIG9zLmVudmlyb25bJ05BVElWRV9ST09UJ10gPSBzZWxmLmQuZ2V0VmFyKCdTVEFHSU5HX0RJUl9OQVRJVkUnKQogCiAKQEAgLTYyOCw2ICs3ODgsOCBAQAogICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJOb24tZmF0YWwgUE9TVElOIHNjcmlwdGxldCBmYWlsdXJlIGluIHJwbSBwYWNrYWdlIik6CiAgICAgICAgICAgICAgICAgZmFpbGVkX3NjcmlwdGxldHNfcGtnbmFtZXNbbGluZS5zcGxpdCgpWy0xXV0gPSBUcnVlCiAKKyAgICAgICAgaWYgbGVuKGZhaWxlZF9zY3JpcHRsZXRzX3BrZ25hbWVzKSA+IDA6CisgICAgICAgICAgICBmYWlsZWRfcG9zdGluc3RzX3dhcm4obGlzdChmYWlsZWRfc2NyaXB0bGV0c19wa2duYW1lcy5rZXlzKCkpLCBzZWxmLmQuZXhwYW5kKCIke1R9L2xvZy5kb18ke0JCX0NVUlJFTlRUQVNLfSIpKQogICAgICAgICBmb3IgcGtnIGluIGZhaWxlZF9zY3JpcHRsZXRzX3BrZ25hbWVzLmtleXMoKToKICAgICAgICAgICAgIHNlbGYuc2F2ZV9ycG1wb3N0aW5zdChwa2cpCiAKQEAgLTczMCw2ICs4OTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1zZXRvcHQ9bG9nZGlyPSVzIiAlIChzZWxmLmQuZ2V0VmFyKCdUJykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBjbWQgPSBbZG5mX2NtZF0gKyBzdGFuZGFyZF9kbmZfYXJncyArIGRuZl9hcmdzCisgICAgICAgIGJiLm5vdGUoJ1J1bm5pbmcgJXMnICUgJyAnLmpvaW4oY21kKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICBpZiBwcmludF9vdXRwdXQ6CkBAIC03ODIsNiArOTQ1LDE0IEBACiAgICAgICAgIG9wZW4oc2F2ZWRfc2NyaXB0X25hbWUsICd3Jykud3JpdGUob3V0cHV0KQogICAgICAgICBvcy5jaG1vZChzYXZlZF9zY3JpcHRfbmFtZSwgMG83NTUpCiAKKyAgICBkZWYgX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShzZWxmLCByZWdpc3RlcmVkX3BrZ3MpOgorICAgICAgICBycG1fcG9zdGluc3RzX2RpciA9IHNlbGYudGFyZ2V0X3Jvb3RmcyArIHNlbGYuZC5leHBhbmQoJyR7c3lzY29uZmRpcn0vcnBtLXBvc3RpbnN0cy8nKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIocnBtX3Bvc3RpbnN0c19kaXIpCisKKyAgICAgICAgIyBTYXZlIHRoZSBwYWNrYWdlIHBvc3RpbnN0YWxscyBpbiAvZXRjL3JwbS1wb3N0aW5zdHMKKyAgICAgICAgZm9yIHBrZyBpbiByZWdpc3RlcmVkX3BrZ3Muc3BsaXQoKToKKyAgICAgICAgICAgIHNlbGYuc2F2ZV9ycG1wb3N0aW5zdChwa2cpCisKICAgICBkZWYgZXh0cmFjdChzZWxmLCBwa2cpOgogICAgICAgICBvdXRwdXQgPSBzZWxmLl9pbnZva2VfZG5mKFsicmVwb3F1ZXJ5IiwgIi0tcXVlcnlmb3JtYXQiLCAiJXtsb2NhdGlvbn0iLCBwa2ddKQogICAgICAgICBwa2dfbmFtZSA9IG91dHB1dC5zcGxpdGxpbmVzKClbLTFdCkBAIC04MTksMTggKzk5MCwxOCBAQAogCiAKIGNsYXNzIE9wa2dEcGtnUE0oUGFja2FnZU1hbmFnZXIpOgotICAgICIiIgotICAgIFRoaXMgaXMgYW4gYWJzdHJhY3QgY2xhc3MuIERvIG5vdCBpbnN0YW50aWF0ZSB0aGlzIGRpcmVjdGx5LgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkKToKLSAgICAgICAgc3VwZXIoT3BrZ0Rwa2dQTSwgc2VsZikuX19pbml0X18oZCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgdGFyZ2V0X3Jvb3Rmcyk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzLiBEbyBub3QgaW5zdGFudGlhdGUgdGhpcyBkaXJlY3RseS4KKyAgICAgICAgIiIiCisgICAgICAgIHN1cGVyKE9wa2dEcGtnUE0sIHNlbGYpLl9faW5pdF9fKGQsIHRhcmdldF9yb290ZnMpCiAKLSAgICAiIiIKLSAgICBSZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBwYWNrYWdlIGluZm8uCi0KLSAgICBUaGlzIG1ldGhvZCBleHRyYWN0cyB0aGUgY29tbW9uIHBhcnRzIGZvciBPcGtnIGFuZCBEcGtnCi0gICAgIiIiCiAgICAgZGVmIHBhY2thZ2VfaW5mbyhzZWxmLCBwa2csIGNtZCk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBwYWNrYWdlIGluZm8uCisKKyAgICAgICAgVGhpcyBtZXRob2QgZXh0cmFjdHMgdGhlIGNvbW1vbiBwYXJ0cyBmb3IgT3BrZyBhbmQgRHBrZworICAgICAgICAiIiIKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpCkBAIC04MzksMTQgKzEwMTAsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKICAgICAgICAgcmV0dXJuIG9wa2dfcXVlcnkob3V0cHV0KQogCi0gICAgIiIiCi0gICAgUmV0dXJucyB0aGUgcGF0aCB0byBhIHRtcGRpciB3aGVyZSByZXNpZGVzIHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UuCi0KLSAgICBEZWxldGluZyB0aGUgdG1wZGlyIGlzIHJlc3BvbnNhYmlsaXR5IG9mIHRoZSBjYWxsZXIuCi0KLSAgICBUaGlzIG1ldGhvZCBleHRyYWN0cyB0aGUgY29tbW9uIHBhcnRzIGZvciBPcGtnIGFuZCBEcGtnCi0gICAgIiIiCiAgICAgZGVmIGV4dHJhY3Qoc2VsZiwgcGtnLCBwa2dfaW5mbyk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBwYXRoIHRvIGEgdG1wZGlyIHdoZXJlIHJlc2lkZXMgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZS4KKworICAgICAgICBEZWxldGluZyB0aGUgdG1wZGlyIGlzIHJlc3BvbnNhYmlsaXR5IG9mIHRoZSBjYWxsZXIuCisKKyAgICAgICAgVGhpcyBtZXRob2QgZXh0cmFjdHMgdGhlIGNvbW1vbiBwYXJ0cyBmb3IgT3BrZyBhbmQgRHBrZworICAgICAgICAiIiIKIAogICAgICAgICBhcl9jbWQgPSBiYi51dGlscy53aGljaChvcy5nZXRlbnYoIlBBVEgiKSwgImFyIikKICAgICAgICAgdGFyX2NtZCA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudigiUEFUSCIpLCAidGFyIikKQEAgLTg4NSwxMiArMTA1NiwxMyBAQAogCiAgICAgICAgIHJldHVybiB0bXBfZGlyCiAKKyAgICBkZWYgX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShzZWxmLCByZWdpc3RlcmVkX3BrZ3MpOgorICAgICAgICBzZWxmLm1hcmtfcGFja2FnZXMoInVucGFja2VkIiwgcmVnaXN0ZXJlZF9wa2dzLnNwbGl0KCkpCiAKIGNsYXNzIE9wa2dQTShPcGtnRHBrZ1BNKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgdGFyZ2V0X3Jvb3RmcywgY29uZmlnX2ZpbGUsIGFyY2hzLCB0YXNrX25hbWU9J3RhcmdldCcpOgotICAgICAgICBzdXBlcihPcGtnUE0sIHNlbGYpLl9faW5pdF9fKGQpCisgICAgICAgIHN1cGVyKE9wa2dQTSwgc2VsZikuX19pbml0X18oZCwgdGFyZ2V0X3Jvb3RmcykKIAotICAgICAgICBzZWxmLnRhcmdldF9yb290ZnMgPSB0YXJnZXRfcm9vdGZzCiAgICAgICAgIHNlbGYuY29uZmlnX2ZpbGUgPSBjb25maWdfZmlsZQogICAgICAgICBzZWxmLnBrZ19hcmNocyA9IGFyY2hzCiAgICAgICAgIHNlbGYudGFza19uYW1lID0gdGFza19uYW1lCkBAIC05MjEsMTIgKzEwOTMsMTIgQEAKIAogICAgICAgICBzZWxmLmluZGV4ZXIgPSBPcGtnSW5kZXhlcihzZWxmLmQsIHNlbGYuZGVwbG95X2RpcikKIAotICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjaGFuZ2UgYSBwYWNrYWdlJ3Mgc3RhdHVzIGluIC92YXIvbGliL29wa2cvc3RhdHVzIGZpbGUuCi0gICAgSWYgJ3BhY2thZ2VzJyBpcyBOb25lIHRoZW4gdGhlIG5ld19zdGF0dXMgd2lsbCBiZSBhcHBsaWVkIHRvIGFsbAotICAgIHBhY2thZ2VzCi0gICAgIiIiCiAgICAgZGVmIG1hcmtfcGFja2FnZXMoc2VsZiwgc3RhdHVzX3RhZywgcGFja2FnZXM9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY2hhbmdlIGEgcGFja2FnZSdzIHN0YXR1cyBpbiAvdmFyL2xpYi9vcGtnL3N0YXR1cyBmaWxlLgorICAgICAgICBJZiAncGFja2FnZXMnIGlzIE5vbmUgdGhlbiB0aGUgbmV3X3N0YXR1cyB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsCisgICAgICAgIHBhY2thZ2VzCisgICAgICAgICIiIgogICAgICAgICBzdGF0dXNfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLm9wa2dfZGlyLCAic3RhdHVzIikKIAogICAgICAgICB3aXRoIG9wZW4oc3RhdHVzX2ZpbGUsICJyIikgYXMgc2Y6CkBAIC0xMDc5LDggKzEyNTEsNyBAQAogICAgICAgICBvcy5lbnZpcm9uWydPRkZMSU5FX1JPT1QnXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcwogICAgICAgICBvcy5lbnZpcm9uWydJUEtHX09GRkxJTkVfUk9PVCddID0gc2VsZi50YXJnZXRfcm9vdGZzCiAgICAgICAgIG9zLmVudmlyb25bJ09QS0dfT0ZGTElORV9ST09UJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKLSAgICAgICAgb3MuZW52aXJvblsnSU5URVJDRVBUX0RJUiddID0gb3MucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmNlcHRfc2NyaXB0cyIpCisgICAgICAgIG9zLmVudmlyb25bJ0lOVEVSQ0VQVF9ESVInXSA9IHNlbGYuaW50ZXJjZXB0c19kaXIKICAgICAgICAgb3MuZW52aXJvblsnTkFUSVZFX1JPT1QnXSA9IHNlbGYuZC5nZXRWYXIoJ1NUQUdJTkdfRElSX05BVElWRScpCiAKICAgICAgICAgdHJ5OgpAQCAtMTA4OCw2ICsxMjU5LDEzIEBACiAgICAgICAgICAgICBiYi5ub3RlKGNtZCkKICAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZC5zcGxpdCgpLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgidXRmLTgiKQogICAgICAgICAgICAgYmIubm90ZShvdXRwdXQpCisgICAgICAgICAgICBmYWlsZWRfcGtncyA9IFtdCisgICAgICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICAgICAgaWYgbGluZS5lbmRzd2l0aCgiY29uZmlndXJhdGlvbiByZXF1aXJlZCBvbiB0YXJnZXQuIik6CisgICAgICAgICAgICAgICAgICAgIGJiLndhcm4obGluZSkKKyAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3BrZ3MuYXBwZW5kKGxpbmUuc3BsaXQoIi4iKVswXSkKKyAgICAgICAgICAgIGlmIGZhaWxlZF9wa2dzOgorICAgICAgICAgICAgICAgIGZhaWxlZF9wb3N0aW5zdHNfd2FybihmYWlsZWRfcGtncywgc2VsZi5kLmV4cGFuZCgiJHtUfS9sb2cuZG9fJHtCQl9DVVJSRU5UVEFTS30iKSkKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAoYmIuZmF0YWwsIGJiLndhcm4pW2F0dGVtcHRfb25seV0oIlVuYWJsZSB0byBpbnN0YWxsIHBhY2thZ2VzLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbW1hbmQgJyVzJyByZXR1cm5lZCAlZDpcbiVzIiAlCkBAIC0xMTcwLDEwICsxMzQ4LDEwIEBACiAgICAgICAgICAgICAgICAgIyBpcyBzZXBhcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGVudHJ5CiAgICAgICAgICAgICAgICAgc3RhdHVzLndyaXRlKCJcbiIpCiAKLSAgICAnJycKLSAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGR1bW15IGluc3RhbGxzIHBrZ3MgYW5kIHJldHVybnMgdGhlIGxvZyBvZiBvdXRwdXQuCi0gICAgJycnCiAgICAgZGVmIGR1bW15X2luc3RhbGwoc2VsZiwgcGtncyk6CisgICAgICAgICIiIgorICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGR1bW15IGluc3RhbGxzIHBrZ3MgYW5kIHJldHVybnMgdGhlIGxvZyBvZiBvdXRwdXQuCisgICAgICAgICIiIgogICAgICAgICBpZiBsZW4ocGtncykgPT0gMDoKICAgICAgICAgICAgIHJldHVybgogCkBAIC0xMjI4LDEwICsxNDA2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vcGtnX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1UcnVlKQogCi0gICAgIiIiCi0gICAgUmV0dXJucyBhIGRpY3Rpb25hcnkgd2l0aCB0aGUgcGFja2FnZSBpbmZvLgotICAgICIiIgogICAgIGRlZiBwYWNrYWdlX2luZm8oc2VsZiwgcGtnKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgYSBkaWN0aW9uYXJ5IHdpdGggdGhlIHBhY2thZ2UgaW5mby4KKyAgICAgICAgIiIiCiAgICAgICAgIGNtZCA9ICIlcyAlcyBpbmZvICVzIiAlIChzZWxmLm9wa2dfY21kLCBzZWxmLm9wa2dfYXJncywgcGtnKQogICAgICAgICBwa2dfaW5mbyA9IHN1cGVyKE9wa2dQTSwgc2VsZikucGFja2FnZV9pbmZvKHBrZywgY21kKQogCkBAIC0xMjQyLDEyICsxNDIwLDEyIEBACiAKICAgICAgICAgcmV0dXJuIHBrZ19pbmZvCiAKLSAgICAiIiIKLSAgICBSZXR1cm5zIHRoZSBwYXRoIHRvIGEgdG1wZGlyIHdoZXJlIHJlc2lkZXMgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZS4KLQotICAgIERlbGV0aW5nIHRoZSB0bXBkaXIgaXMgcmVzcG9uc2FiaWxpdHkgb2YgdGhlIGNhbGxlci4KLSAgICAiIiIKICAgICBkZWYgZXh0cmFjdChzZWxmLCBwa2cpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgcGF0aCB0byBhIHRtcGRpciB3aGVyZSByZXNpZGVzIHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UuCisKKyAgICAgICAgRGVsZXRpbmcgdGhlIHRtcGRpciBpcyByZXNwb25zYWJpbGl0eSBvZiB0aGUgY2FsbGVyLgorICAgICAgICAiIiIKICAgICAgICAgcGtnX2luZm8gPSBzZWxmLnBhY2thZ2VfaW5mbyhwa2cpCiAgICAgICAgIGlmIG5vdCBwa2dfaW5mbzoKICAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gZ2V0IGluZm9ybWF0aW9uIGZvciBwYWNrYWdlICclcycgd2hpbGUgIgpAQCAtMTI2MCw4ICsxNDM4LDcgQEAKIAogY2xhc3MgRHBrZ1BNKE9wa2dEcGtnUE0pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCB0YXJnZXRfcm9vdGZzLCBhcmNocywgYmFzZV9hcmNocywgYXB0X2NvbmZfZGlyPU5vbmUpOgotICAgICAgICBzdXBlcihEcGtnUE0sIHNlbGYpLl9faW5pdF9fKGQpCi0gICAgICAgIHNlbGYudGFyZ2V0X3Jvb3RmcyA9IHRhcmdldF9yb290ZnMKKyAgICAgICAgc3VwZXIoRHBrZ1BNLCBzZWxmKS5fX2luaXRfXyhkLCB0YXJnZXRfcm9vdGZzKQogICAgICAgICBzZWxmLmRlcGxveV9kaXIgPSBzZWxmLmQuZ2V0VmFyKCdERVBMT1lfRElSX0RFQicpCiAgICAgICAgIGlmIGFwdF9jb25mX2RpciBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5hcHRfY29uZl9kaXIgPSBzZWxmLmQuZXhwYW5kKCIke0FQVENPTkZfVEFSR0VUfS9hcHQiKQpAQCAtMTI4MSwxMiArMTQ1OCwxMiBAQAogCiAgICAgICAgIHNlbGYuaW5kZXhlciA9IERwa2dJbmRleGVyKHNlbGYuZCwgc2VsZi5kZXBsb3lfZGlyKQogCi0gICAgIiIiCi0gICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNoYW5nZSBhIHBhY2thZ2UncyBzdGF0dXMgaW4gL3Zhci9saWIvZHBrZy9zdGF0dXMgZmlsZS4KLSAgICBJZiAncGFja2FnZXMnIGlzIE5vbmUgdGhlbiB0aGUgbmV3X3N0YXR1cyB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsCi0gICAgcGFja2FnZXMKLSAgICAiIiIKICAgICBkZWYgbWFya19wYWNrYWdlcyhzZWxmLCBzdGF0dXNfdGFnLCBwYWNrYWdlcz1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjaGFuZ2UgYSBwYWNrYWdlJ3Mgc3RhdHVzIGluIC92YXIvbGliL2Rwa2cvc3RhdHVzIGZpbGUuCisgICAgICAgIElmICdwYWNrYWdlcycgaXMgTm9uZSB0aGVuIHRoZSBuZXdfc3RhdHVzIHdpbGwgYmUgYXBwbGllZCB0byBhbGwKKyAgICAgICAgcGFja2FnZXMKKyAgICAgICAgIiIiCiAgICAgICAgIHN0YXR1c19maWxlID0gc2VsZi50YXJnZXRfcm9vdGZzICsgIi92YXIvbGliL2Rwa2cvc3RhdHVzIgogCiAgICAgICAgIHdpdGggb3BlbihzdGF0dXNfZmlsZSwgInIiKSBhcyBzZjoKQEAgLTEzMDksMTEgKzE0ODYsMTEgQEAKIAogICAgICAgICBvcy5yZW5hbWUoc3RhdHVzX2ZpbGUgKyAiLnRtcCIsIHN0YXR1c19maWxlKQogCi0gICAgIiIiCi0gICAgUnVuIHRoZSBwcmUvcG9zdCBpbnN0YWxscyBmb3IgcGFja2FnZSAicGFja2FnZV9uYW1lIi4gSWYgcGFja2FnZV9uYW1lIGlzCi0gICAgTm9uZSwgdGhlbiBydW4gYWxsIHByZS9wb3N0IGluc3RhbGwgc2NyaXB0bGV0cy4KLSAgICAiIiIKICAgICBkZWYgcnVuX3ByZV9wb3N0X2luc3RhbGxzKHNlbGYsIHBhY2thZ2VfbmFtZT1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJ1biB0aGUgcHJlL3Bvc3QgaW5zdGFsbHMgZm9yIHBhY2thZ2UgInBhY2thZ2VfbmFtZSIuIElmIHBhY2thZ2VfbmFtZSBpcworICAgICAgICBOb25lLCB0aGVuIHJ1biBhbGwgcHJlL3Bvc3QgaW5zdGFsbCBzY3JpcHRsZXRzLgorICAgICAgICAiIiIKICAgICAgICAgaW5mb19kaXIgPSBzZWxmLnRhcmdldF9yb290ZnMgKyAiL3Zhci9saWIvZHBrZy9pbmZvIgogICAgICAgICBDb250cm9sU2NyaXB0ID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgiQ29udHJvbFNjcmlwdCIsIFsic3VmZml4IiwgIm5hbWUiLCAiYXJndW1lbnQiXSkKICAgICAgICAgY29udHJvbF9zY3JpcHRzID0gWwpAQCAtMTMzNSw4ICsxNTEyLDcgQEAKICAgICAgICAgb3MuZW52aXJvblsnT0ZGTElORV9ST09UJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKICAgICAgICAgb3MuZW52aXJvblsnSVBLR19PRkZMSU5FX1JPT1QnXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcwogICAgICAgICBvcy5lbnZpcm9uWydPUEtHX09GRkxJTkVfUk9PVCddID0gc2VsZi50YXJnZXRfcm9vdGZzCi0gICAgICAgIG9zLmVudmlyb25bJ0lOVEVSQ0VQVF9ESVInXSA9IG9zLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJjZXB0X3NjcmlwdHMiKQorICAgICAgICBvcy5lbnZpcm9uWydJTlRFUkNFUFRfRElSJ10gPSBzZWxmLmludGVyY2VwdHNfZGlyCiAgICAgICAgIG9zLmVudmlyb25bJ05BVElWRV9ST09UJ10gPSBzZWxmLmQuZ2V0VmFyKCdTVEFHSU5HX0RJUl9OQVRJVkUnKQogCiAgICAgICAgIGZhaWxlZF9wa2dzID0gW10KQEAgLTEzNTEsOSArMTUyNywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgidXRmLTgiKQogICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZShvdXRwdXQpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiJXMgZm9yIHBhY2thZ2UgJXMgZmFpbGVkIHdpdGggJWQ6XG4lcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiJXMgZm9yIHBhY2thZ2UgJXMgZmFpbGVkIHdpdGggJWQ6XG4lcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udHJvbF9zY3JpcHQubmFtZSwgcGtnX25hbWUsIGUucmV0dXJuY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRfcG9zdGluc3RzX3dhcm4oW3BrZ19uYW1lXSwgc2VsZi5kLmV4cGFuZCgiJHtUfS9sb2cuZG9fJHtCQl9DVVJSRU5UVEFTS30iKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZF9wa2dzLmFwcGVuZChwa2dfbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTE1NTgsMTAgKzE3MzUsMTAgQEAKICAgICBkZWYgbGlzdF9pbnN0YWxsZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBEcGtnUGtnc0xpc3Qoc2VsZi5kLCBzZWxmLnRhcmdldF9yb290ZnMpLmxpc3RfcGtncygpCiAKLSAgICAiIiIKLSAgICBSZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBwYWNrYWdlIGluZm8uCi0gICAgIiIiCiAgICAgZGVmIHBhY2thZ2VfaW5mbyhzZWxmLCBwa2cpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBhIGRpY3Rpb25hcnkgd2l0aCB0aGUgcGFja2FnZSBpbmZvLgorICAgICAgICAiIiIKICAgICAgICAgY21kID0gIiVzIHNob3cgJXMiICUgKHNlbGYuYXB0X2NhY2hlX2NtZCwgcGtnKQogICAgICAgICBwa2dfaW5mbyA9IHN1cGVyKERwa2dQTSwgc2VsZikucGFja2FnZV9pbmZvKHBrZywgY21kKQogCkBAIC0xNTcyLDEyICsxNzQ5LDEyIEBACiAKICAgICAgICAgcmV0dXJuIHBrZ19pbmZvCiAKLSAgICAiIiIKLSAgICBSZXR1cm5zIHRoZSBwYXRoIHRvIGEgdG1wZGlyIHdoZXJlIHJlc2lkZXMgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZS4KLQotICAgIERlbGV0aW5nIHRoZSB0bXBkaXIgaXMgcmVzcG9uc2FiaWxpdHkgb2YgdGhlIGNhbGxlci4KLSAgICAiIiIKICAgICBkZWYgZXh0cmFjdChzZWxmLCBwa2cpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgcGF0aCB0byBhIHRtcGRpciB3aGVyZSByZXNpZGVzIHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UuCisKKyAgICAgICAgRGVsZXRpbmcgdGhlIHRtcGRpciBpcyByZXNwb25zYWJpbGl0eSBvZiB0aGUgY2FsbGVyLgorICAgICAgICAiIiIKICAgICAgICAgcGtnX2luZm8gPSBzZWxmLnBhY2thZ2VfaW5mbyhwa2cpCiAgICAgICAgIGlmIG5vdCBwa2dfaW5mbzoKICAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gZ2V0IGluZm9ybWF0aW9uIGZvciBwYWNrYWdlICclcycgd2hpbGUgIgpAQCAtMTU5Miw3ICsxNzY5LDcgQEAKICAgICBjbGFzc2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VfQ0xBU1NFUycpLnJlcGxhY2UoInBhY2thZ2VfIiwgIiIpLnNwbGl0KCkKIAogICAgIGluZGV4ZXJfbWFwID0gewotICAgICAgICAicnBtIjogKFJwbUluZGV4ZXIsIGQuZ2V0VmFyKCdERVBMT1lfRElSX1JQTScpKSwKKyAgICAgICAgInJwbSI6IChScG1TdWJkaXJJbmRleGVyLCBkLmdldFZhcignREVQTE9ZX0RJUl9SUE0nKSksCiAgICAgICAgICJpcGsiOiAoT3BrZ0luZGV4ZXIsIGQuZ2V0VmFyKCdERVBMT1lfRElSX0lQSycpKSwKICAgICAgICAgImRlYiI6IChEcGtnSW5kZXhlciwgZC5nZXRWYXIoJ0RFUExPWV9ESVJfREVCJykpCiAgICAgfQpAQCAtMTYwOCwxMiArMTc4NSwzIEBACiAKICAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBiYi5mYXRhbChyZXN1bHQpCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgIiIiCi0gICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuIHRoaXMgYXMgYSBzdGFuZGFsb25lIHNjcmlwdCwgZnJvbSBvdXRzaWRlIGJpdGJha2UKLSAgICBlbnZpcm9ubWVudC4KLSAgICAiIiIKLSAgICAiIiIKLSAgICBUQkQKLSAgICAiIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weQppbmRleCA1ODRiZjZjLi5hZjdhYTUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0Y2gucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5CkBAIC0zNiw2ICszNiwyMiBAQAogICAgICAgICAoZXhpdHN0YXR1cywgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCiAgICAgICAgIGlmIGV4aXRzdGF0dXMgIT0gMDoKICAgICAgICAgICAgIHJhaXNlIENtZEVycm9yKGNtZCwgZXhpdHN0YXR1cyA+PiA4LCBvdXRwdXQpCisgICAgICAgIGlmICIgZnV6eiAiIGluIG91dHB1dDoKKyAgICAgICAgICAgIGJiLndhcm4oIiIiCitTb21lIG9mIHRoZSBjb250ZXh0IGxpbmVzIGluIHBhdGNoZXMgd2VyZSBpZ25vcmVkLiBUaGlzIGNhbiBsZWFkIHRvIGluY29ycmVjdGx5IGFwcGxpZWQgcGF0Y2hlcy4KK1RoZSBjb250ZXh0IGxpbmVzIGluIHRoZSBwYXRjaGVzIGNhbiBiZSB1cGRhdGVkIHdpdGggZGV2dG9vbDoKKworICAgIGRldnRvb2wgbW9kaWZ5IDxyZWNpcGU+CisgICAgZGV2dG9vbCBmaW5pc2ggLS1mb3JjZS1wYXRjaC1yZWZyZXNoIDxyZWNpcGU+IDxsYXllcl9wYXRoPgorCitUaGVuIHRoZSB1cGRhdGVkIHBhdGNoZXMgYW5kIHRoZSBzb3VyY2UgdHJlZSAoaW4gZGV2dG9vbCdzIHdvcmtzcGFjZSkKK3Nob3VsZCBiZSByZXZpZXdlZCB0byBtYWtlIHN1cmUgdGhlIHBhdGNoZXMgYXBwbHkgaW4gdGhlIGNvcnJlY3QgcGxhY2UKK2FuZCBkb24ndCBpbnRyb2R1Y2UgZHVwbGljYXRlIGxpbmVzICh3aGljaCBjYW4sIGFuZCBkb2VzIGhhcHBlbgord2hlbiBzb21lIG9mIHRoZSBjb250ZXh0IGlzIGlnbm9yZWQpLiBGdXJ0aGVyIGluZm9ybWF0aW9uOgoraHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvcGlwZXJtYWlsL29wZW5lbWJlZGRlZC1jb3JlLzIwMTgtTWFyY2gvMTQ4Njc1Lmh0bWwKK2h0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTAKK0RldGFpbHM6Cit7fSIiIi5mb3JtYXQob3V0cHV0KSkKICAgICAgICAgcmV0dXJuIG91dHB1dAogCiAgICAgZmluYWxseToKQEAgLTIxMiw3ICsyMjgsNyBAQAogICAgICAgICBzZWxmLnBhdGNoZXMuaW5zZXJ0KGksIHBhdGNoKQogCiAgICAgZGVmIF9hcHBseXBhdGNoKHNlbGYsIHBhdGNoLCBmb3JjZSA9IEZhbHNlLCByZXZlcnNlID0gRmFsc2UsIHJ1biA9IFRydWUpOgotICAgICAgICBzaGVsbGNtZCA9IFsiY2F0IiwgcGF0Y2hbJ2ZpbGUnXSwgInwiLCAicGF0Y2giLCAiLXAiLCBwYXRjaFsnc3RyaXBwYXRoJ11dCisgICAgICAgIHNoZWxsY21kID0gWyJjYXQiLCBwYXRjaFsnZmlsZSddLCAifCIsICJwYXRjaCIsICItLW5vLWJhY2t1cC1pZi1taXNtYXRjaCIsICItcCIsIHBhdGNoWydzdHJpcHBhdGgnXV0KICAgICAgICAgaWYgcmV2ZXJzZToKICAgICAgICAgICAgIHNoZWxsY21kLmFwcGVuZCgnLVInKQogCkBAIC00MzIsNyArNDQ4LDcgQEAKICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nb2VwYXRjaCcpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNoZWxsY21kID0gWyJnaXQiLCAiZm9ybWF0LXBhdGNoIiwgc3RhcnRjb21taXQsICItbyIsIHRlbXBkaXJdCisgICAgICAgICAgICBzaGVsbGNtZCA9IFsiZ2l0IiwgImZvcm1hdC1wYXRjaCIsICItLW5vLXNpZ25hdHVyZSIsICItLW5vLW51bWJlcmVkIiwgc3RhcnRjb21taXQsICItbyIsIHRlbXBkaXJdCiAgICAgICAgICAgICBpZiBwYXRoczoKICAgICAgICAgICAgICAgICBzaGVsbGNtZC5hcHBlbmQoJy0tJykKICAgICAgICAgICAgICAgICBzaGVsbGNtZC5leHRlbmQocGF0aHMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0aC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CmluZGV4IDFlYTAzZDUuLjc2YzU4ZmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CkBAIC0yMzcsMyArMjM3LDI1IEBACiAgICAgICAgIHJhaXNlCiAKICAgICByZXR1cm4gZmlsZQorCitkZWYgaXNfcGF0aF9wYXJlbnQocG9zc2libGVfcGFyZW50LCAqcGF0aHMpOgorICAgICIiIgorICAgIFJldHVybiBUcnVlIGlmIGEgcGF0aCBpcyB0aGUgcGFyZW50IG9mIGFub3RoZXIsIEZhbHNlIG90aGVyd2lzZS4KKyAgICBNdWx0aXBsZSBwYXRocyB0byB0ZXN0IGNhbiBiZSBzcGVjaWZpZWQgaW4gd2hpY2ggY2FzZSBhbGwKKyAgICBzcGVjaWZpZWQgdGVzdCBwYXRocyBtdXN0IGJlIHVuZGVyIHRoZSBwYXJlbnQgaW4gb3JkZXIgdG8KKyAgICByZXR1cm4gVHJ1ZS4KKyAgICAiIiIKKyAgICBkZWYgYWJzX3BhdGhfdHJhaWxpbmcocHRoKToKKyAgICAgICAgcHRoX2FicyA9IG9zLnBhdGguYWJzcGF0aChwdGgpCisgICAgICAgIGlmIG5vdCBwdGhfYWJzLmVuZHN3aXRoKG9zLnNlcCk6CisgICAgICAgICAgICBwdGhfYWJzICs9IG9zLnNlcAorICAgICAgICByZXR1cm4gcHRoX2FicworCisgICAgcG9zc2libGVfcGFyZW50X2FicyA9IGFic19wYXRoX3RyYWlsaW5nKHBvc3NpYmxlX3BhcmVudCkKKyAgICBpZiBub3QgcGF0aHM6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICBwYXRoX2FicyA9IGFic19wYXRoX3RyYWlsaW5nKHBhdGgpCisgICAgICAgIGlmIG5vdCBwYXRoX2Ficy5zdGFydHN3aXRoKHBvc3NpYmxlX3BhcmVudF9hYnMpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weQppbmRleCBjYWI4ZTQwLi5hYTY0NTUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5CkBAIC0yMiw3ICsyMiw3IEBACiAjIEhlbHAgdXMgdG8gZmluZCBwbGFjZXMgdG8gaW5zZXJ0IHZhbHVlcwogcmVjaXBlX3Byb2dyZXNzaW9uID0gWydTVU1NQVJZJywgJ0RFU0NSSVBUSU9OJywgJ0hPTUVQQUdFJywgJ0JVR1RSQUNLRVInLCAnU0VDVElPTicsICdMSUNFTlNFJywgJ0xJQ0VOU0VfRkxBR1MnLCAnTElDX0ZJTEVTX0NIS1NVTScsICdQUk9WSURFUycsICdERVBFTkRTJywgJ1BSJywgJ1BWJywgJ1NSQ1JFVicsICdTUkNQVicsICdTUkNfVVJJJywgJ1MnLCAnZG9fZmV0Y2goKScsICdkb191bnBhY2soKScsICdkb19wYXRjaCgpJywgJ0VYVFJBX09FQ09ORicsICdFWFRSQV9PRUNNQUtFJywgJ0VYVFJBX09FU0NPTlMnLCAnZG9fY29uZmlndXJlKCknLCAnRVhUUkFfT0VNQUtFJywgJ2RvX2NvbXBpbGUoKScsICdkb19pbnN0YWxsKCknLCAnZG9fcG9wdWxhdGVfc3lzcm9vdCgpJywgJ0lOSVRTQ1JJUFQnLCAnVVNFUkFERCcsICdHUk9VUEFERCcsICdQQUNLQUdFUycsICdGSUxFUycsICdSREVQRU5EUycsICdSUkVDT01NRU5EUycsICdSU1VHR0VTVFMnLCAnUlBST1ZJREVTJywgJ1JSRVBMQUNFUycsICdSQ09ORkxJQ1RTJywgJ0FMTE9XX0VNUFRZJywgJ3BvcHVsYXRlX3BhY2thZ2VzKCknLCAnZG9fcGFja2FnZSgpJywgJ2RvX2RlcGxveSgpJ10KICMgVmFyaWFibGVzIHRoYXQgc29tZXRpbWVzIGFyZSBhIGJpdCBsb25nIGJ1dCBzaG91bGRuJ3QgYmUgd3JhcHBlZAotbm93cmFwX3ZhcnMgPSBbJ1NVTU1BUlknLCAnSE9NRVBBR0UnLCAnQlVHVFJBQ0tFUicsICdTUkNfVVJJW21kNXN1bV0nLCAnU1JDX1VSSVtzaGEyNTZzdW1dJ10KK25vd3JhcF92YXJzID0gWydTVU1NQVJZJywgJ0hPTUVQQUdFJywgJ0JVR1RSQUNLRVInLCAnU1JDX1VSSVxbKC4rXC4pP21kNXN1bVxdJywgJ1NSQ19VUklcWyguK1wuKT9zaGEyNTZzdW1cXSddCiBsaXN0X3ZhcnMgPSBbJ1NSQ19VUkknLCAnTElDX0ZJTEVTX0NIS1NVTSddCiBtZXRhX3ZhcnMgPSBbJ1NVTU1BUlknLCAnREVTQ1JJUFRJT04nLCAnSE9NRVBBR0UnLCAnQlVHVFJBQ0tFUicsICdTRUNUSU9OJ10KIApAQCAtMTQyLDYgKzE0MiwxMCBAQAogICAgIGVsc2U6CiAgICAgICAgIG5ld2xpbmUgPSAnJwogCisgICAgbm93cmFwX3ZhcnNfcmVzID0gW10KKyAgICBmb3IgaXRlbSBpbiBub3dyYXBfdmFyczoKKyAgICAgICAgbm93cmFwX3ZhcnNfcmVzLmFwcGVuZChyZS5jb21waWxlKCdeJXMkJyAlIGl0ZW0pKQorCiAgICAgcmVjaXBlX3Byb2dyZXNzaW9uX3JlcyA9IFtdCiAgICAgcmVjaXBlX3Byb2dyZXNzaW9uX3Jlc3RycyA9IFtdCiAgICAgZm9yIGl0ZW0gaW4gcmVjaXBlX3Byb2dyZXNzaW9uOgpAQCAtMTc0LDcgKzE3OCwxMiBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHJhd3RleHQgPSAnJXMgPSAiJXMiJXMnICUgKG5hbWUsIHZhbHVlc1tuYW1lXSwgbmV3bGluZSkKICAgICAgICAgYWRkbGluZXMgPSBbXQotICAgICAgICBpZiBuYW1lIGluIG5vd3JhcF92YXJzOgorICAgICAgICBub3dyYXAgPSBGYWxzZQorICAgICAgICBmb3Igbm93cmFwX3JlIGluIG5vd3JhcF92YXJzX3JlczoKKyAgICAgICAgICAgIGlmIG5vd3JhcF9yZS5tYXRjaChuYW1lKToKKyAgICAgICAgICAgICAgICBub3dyYXAgPSBUcnVlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbm93cmFwOgogICAgICAgICAgICAgYWRkbGluZXMuYXBwZW5kKHJhd3RleHQpCiAgICAgICAgIGVsaWYgbmFtZSBpbiBsaXN0X3ZhcnM6CiAgICAgICAgICAgICBzcGxpdHZhbHVlID0gc3BsaXRfdmFyX3ZhbHVlKHZhbHVlc1tuYW1lXSwgYXNzaWdubWVudD1GYWxzZSkKQEAgLTI0Miw3ICsyNTEsNyBAQAogICAgIHJldHVybiBjaGFuZ2VkLCB0b2xpbmVzCiAKIAotZGVmIHBhdGNoX3JlY2lwZV9maWxlKGZuLCB2YWx1ZXMsIHBhdGNoPUZhbHNlLCByZWxwYXRoPScnKToKK2RlZiBwYXRjaF9yZWNpcGVfZmlsZShmbiwgdmFsdWVzLCBwYXRjaD1GYWxzZSwgcmVscGF0aD0nJywgcmVkaXJlY3Rfb3V0cHV0PU5vbmUpOgogICAgICIiIlVwZGF0ZSBvciBpbnNlcnQgdmFyaWFibGUgdmFsdWVzIGludG8gYSByZWNpcGUgZmlsZSAoYXNzdW1pbmcgeW91CiAgICAgICAgaGF2ZSBhbHJlYWR5IGlkZW50aWZpZWQgdGhlIGV4YWN0IGZpbGUgeW91IHdhbnQgdG8gdXBkYXRlLikKICAgICAgICBOb3RlIHRoYXQgc29tZSBtYW51YWwgaW5zcGVjdGlvbi9pbnRlcnZlbnRpb24gbWF5IGJlIHJlcXVpcmVkCkBAIC0yNTQsNyArMjYzLDExIEBACiAKICAgICBfLCB0b2xpbmVzID0gcGF0Y2hfcmVjaXBlX2xpbmVzKGZyb21saW5lcywgdmFsdWVzKQogCi0gICAgaWYgcGF0Y2g6CisgICAgaWYgcmVkaXJlY3Rfb3V0cHV0OgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHJlZGlyZWN0X291dHB1dCwgb3MucGF0aC5iYXNlbmFtZShmbikpLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlbGluZXModG9saW5lcykKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbGlmIHBhdGNoOgogICAgICAgICByZWxmbiA9IG9zLnBhdGgucmVscGF0aChmbiwgcmVscGF0aCkKICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGZyb21saW5lcywgdG9saW5lcywgJ2EvJXMnICUgcmVsZm4sICdiLyVzJyAlIHJlbGZuKQogICAgICAgICByZXR1cm4gZGlmZgpAQCAtMzA0LDcgKzMxNyw3IEBACiAKICAgICByZXR1cm4gZmlsZXZhcnMKIAotZGVmIHBhdGNoX3JlY2lwZShkLCBmbiwgdmFydmFsdWVzLCBwYXRjaD1GYWxzZSwgcmVscGF0aD0nJyk6CitkZWYgcGF0Y2hfcmVjaXBlKGQsIGZuLCB2YXJ2YWx1ZXMsIHBhdGNoPUZhbHNlLCByZWxwYXRoPScnLCByZWRpcmVjdF9vdXRwdXQ9Tm9uZSk6CiAgICAgIiIiTW9kaWZ5IGEgbGlzdCBvZiB2YXJpYWJsZSB2YWx1ZXMgaW4gdGhlIHNwZWNpZmllZCByZWNpcGUuIEhhbmRsZXMgaW5jIGZpbGVzIGlmCiAgICAgdXNlZCBieSB0aGUgcmVjaXBlLgogICAgICIiIgpAQCAtMzE0LDcgKzMyNyw3IEBACiAgICAgcGF0Y2hlcyA9IFtdCiAgICAgZm9yIGYsdiBpbiBsb2NzLml0ZW1zKCk6CiAgICAgICAgIHZhbHMgPSB7azogdmFydmFsdWVzW2tdIGZvciBrIGluIHZ9Ci0gICAgICAgIHBhdGNoZGF0YSA9IHBhdGNoX3JlY2lwZV9maWxlKGYsIHZhbHMsIHBhdGNoLCByZWxwYXRoKQorICAgICAgICBwYXRjaGRhdGEgPSBwYXRjaF9yZWNpcGVfZmlsZShmLCB2YWxzLCBwYXRjaCwgcmVscGF0aCwgcmVkaXJlY3Rfb3V0cHV0KQogICAgICAgICBpZiBwYXRjaDoKICAgICAgICAgICAgIHBhdGNoZXMuYXBwZW5kKHBhdGNoZGF0YSkKIApAQCAtMzk1LDcgKzQwOCw3IEBACiAgICAgIyBmZXRjaGVyKSB0aG91Z2ggbm90ZSB0aGF0IHRoaXMgb25seSBlbmNvbXBhc3NlcyBhY3R1YWwgY29udGFpbmVyIGZvcm1hdHMKICAgICAjIGkuZS4gdGhhdCBjYW4gY29udGFpbiBtdWx0aXBsZSBmaWxlcyBhcyBvcHBvc2VkIHRvIHRob3NlIHRoYXQgb25seQogICAgICMgY29udGFpbiBhIGNvbXByZXNzZWQgc3RyZWFtIChpLmUuIC50YXIuZ3ogYXMgb3Bwb3NlZCB0byBqdXN0IC5neikKLSAgICBhcmNoaXZlX2V4dHMgPSBbJy50YXInLCAnLnRneicsICcudGFyLmd6JywgJy50YXIuWicsICcudGJ6JywgJy50YnoyJywgJy50YXIuYnoyJywgJy50YXIueHonLCAnLnRhci5seicsICcuemlwJywgJy5qYXInLCAnLnJwbScsICcuc3JwbScsICcuZGViJywgJy5pcGsnLCAnLnRhci43eicsICcuN3onXQorICAgIGFyY2hpdmVfZXh0cyA9IFsnLnRhcicsICcudGd6JywgJy50YXIuZ3onLCAnLnRhci5aJywgJy50YnonLCAnLnRiejInLCAnLnRhci5iejInLCAnLnR4eicsICcudGFyLnh6JywgJy50YXIubHonLCAnLnppcCcsICcuamFyJywgJy5ycG0nLCAnLnNycG0nLCAnLmRlYicsICcuaXBrJywgJy50YXIuN3onLCAnLjd6J10KICAgICByZXQgPSB7fQogICAgIGZvciB1cmkgaW4gdXJpczoKICAgICAgICAgaWYgZmV0Y2gudWRbdXJpXS50eXBlID09ICdmaWxlJzoKQEAgLTU3NSw3ICs1ODgsNyBAQAogICAgIHJldHVybiAoYXBwZW5kcGF0aCwgcGF0aG9rKQogCiAKLWRlZiBiYmFwcGVuZF9yZWNpcGUocmQsIGRlc3RsYXllcmRpciwgc3JjZmlsZXMsIGluc3RhbGw9Tm9uZSwgd2lsZGNhcmR2ZXI9RmFsc2UsIG1hY2hpbmU9Tm9uZSwgZXh0cmFsaW5lcz1Ob25lLCByZW1vdmV2YWx1ZXM9Tm9uZSk6CitkZWYgYmJhcHBlbmRfcmVjaXBlKHJkLCBkZXN0bGF5ZXJkaXIsIHNyY2ZpbGVzLCBpbnN0YWxsPU5vbmUsIHdpbGRjYXJkdmVyPUZhbHNlLCBtYWNoaW5lPU5vbmUsIGV4dHJhbGluZXM9Tm9uZSwgcmVtb3ZldmFsdWVzPU5vbmUsIHJlZGlyZWN0X291dHB1dD1Ob25lKToKICAgICAiIiIKICAgICBXcml0ZXMgYSBiYmFwcGVuZCBmaWxlIGZvciBhIHJlY2lwZQogICAgIFBhcmFtZXRlcnM6CkBAIC02MDIsNiArNjE1LDkgQEAKICAgICAgICAgICAgIHZhbHVlIHBhaXJzLCBvciBzaW1wbHkgYSBsaXN0IG9mIHRoZSBsaW5lcy4KICAgICAgICAgcmVtb3ZldmFsdWVzOgogICAgICAgICAgICAgVmFyaWFibGUgdmFsdWVzIHRvIHJlbW92ZSAtIGEgZGljdCBvZiBuYW1lcy92YWx1ZXMuCisgICAgICAgIHJlZGlyZWN0X291dHB1dDoKKyAgICAgICAgICAgIElmIHNwZWNpZmllZCwgcmVkaXJlY3RzIHdyaXRpbmcgdGhlIG91dHB1dCBmaWxlIHRvIHRoZQorICAgICAgICAgICAgc3BlY2lmaWVkIGRpcmVjdG9yeSAoZm9yIGRyeS1ydW4gcHVycG9zZXMpCiAgICAgIiIiCiAKICAgICBpZiBub3QgcmVtb3ZldmFsdWVzOgpAQCAtNjE2LDcgKzYzMiw4IEBACiAgICAgICAgIGJiLndhcm4oJ1VuYWJsZSB0byBkZXRlcm1pbmUgY29ycmVjdCBzdWJkaXJlY3RvcnkgcGF0aCBmb3IgYmJhcHBlbmQgZmlsZSAtIGNoZWNrIHRoYXQgd2hhdCAlcyBhZGRzIHRvIEJCRklMRVMgYWxzbyBtYXRjaGVzIC5iYmFwcGVuZCBmaWxlcy4gVXNpbmcgJXMgZm9yIG5vdywgYnV0IHVudGlsIHlvdSBmaXggdGhpcyB0aGUgYmJhcHBlbmQgd2lsbCBub3QgYmUgYXBwbGllZC4nICUgKG9zLnBhdGguam9pbihkZXN0bGF5ZXJkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgb3MucGF0aC5kaXJuYW1lKGFwcGVuZHBhdGgpKSkKIAogICAgIGFwcGVuZGRpciA9IG9zLnBhdGguZGlybmFtZShhcHBlbmRwYXRoKQotICAgIGJiLnV0aWxzLm1rZGlyaGllcihhcHBlbmRkaXIpCisgICAgaWYgbm90IHJlZGlyZWN0X291dHB1dDoKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGFwcGVuZGRpcikKIAogICAgICMgRklYTUUgY2hlY2sgaWYgdGhlIGJiYXBwZW5kIGRvZXNuJ3QgZ2V0IG92ZXJyaWRkZW4gYnkgYSBoaWdoZXIgcHJpb3JpdHkgbGF5ZXI/CiAKQEAgLTY5Myw5ICs3MTAsMTggQEAKICAgICAgICAgaWYgaW5zdGZ1bmNsaW5lczoKICAgICAgICAgICAgIGJiYXBwZW5kbGluZXMuYXBwZW5kKCgnZG9faW5zdGFsbF9hcHBlbmQlcygpJyAlIGFwcGVuZG92ZXJyaWRlLCAnJywgaW5zdGZ1bmNsaW5lcykpCiAKLSAgICBiYi5ub3RlKCdXcml0aW5nIGFwcGVuZCBmaWxlICVzJyAlIGFwcGVuZHBhdGgpCisgICAgaWYgcmVkaXJlY3Rfb3V0cHV0OgorICAgICAgICBiYi5ub3RlKCdXcml0aW5nIGFwcGVuZCBmaWxlICVzIChkcnktcnVuKScgJSBhcHBlbmRwYXRoKQorICAgICAgICBvdXRmaWxlID0gb3MucGF0aC5qb2luKHJlZGlyZWN0X291dHB1dCwgb3MucGF0aC5iYXNlbmFtZShhcHBlbmRwYXRoKSkKKyAgICAgICAgIyBPbmx5IHRha2UgYSBjb3B5IGlmIHRoZSBmaWxlIGlzbid0IGFscmVhZHkgdGhlcmUgKHRoaXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZAorICAgICAgICAjIG11bHRpcGxlIHRpbWVzIHBlciBvcGVyYXRpb24gd2hlbiB3ZSdyZSBoYW5kbGluZyBvdmVycmlkZXMpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGFwcGVuZHBhdGgpIGFuZCBub3Qgb3MucGF0aC5leGlzdHMob3V0ZmlsZSk6CisgICAgICAgICAgICBzaHV0aWwuY29weTIoYXBwZW5kcGF0aCwgb3V0ZmlsZSkKKyAgICBlbHNlOgorICAgICAgICBiYi5ub3RlKCdXcml0aW5nIGFwcGVuZCBmaWxlICVzJyAlIGFwcGVuZHBhdGgpCisgICAgICAgIG91dGZpbGUgPSBhcHBlbmRwYXRoCiAKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhhcHBlbmRwYXRoKToKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhvdXRmaWxlKToKICAgICAgICAgIyBXb3JrIGFyb3VuZCBsYWNrIG9mIG5vbmxvY2FsIGluIHB5dGhvbiAyCiAgICAgICAgIGV4dHZhcnMgPSB7J2Rlc3RzdWJkaXInOiBkZXN0c3ViZGlyfQogCkBAIC03NjcsNyArNzkzLDcgQEAKICAgICAgICAgaWYgcmVtb3ZldmFsdWVzOgogICAgICAgICAgICAgdmFybmFtZXMuZXh0ZW5kKGxpc3QocmVtb3ZldmFsdWVzLmtleXMoKSkpCiAKLSAgICAgICAgd2l0aCBvcGVuKGFwcGVuZHBhdGgsICdyJykgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG91dGZpbGUsICdyJykgYXMgZjoKICAgICAgICAgICAgICh1cGRhdGVkLCBuZXdsaW5lcykgPSBiYi51dGlscy5lZGl0X21ldGFkYXRhKGYsIHZhcm5hbWVzLCBhcHBlbmRmaWxlX3ZhcmZ1bmMpCiAKICAgICAgICAgZGVzdHN1YmRpciA9IGV4dHZhcnNbJ2Rlc3RzdWJkaXInXQpAQCAtNzg0LDIwICs4MTAsMjcgQEAKICAgICAgICAgdXBkYXRlZCA9IFRydWUKIAogICAgIGlmIHVwZGF0ZWQ6Ci0gICAgICAgIHdpdGggb3BlbihhcHBlbmRwYXRoLCAndycpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihvdXRmaWxlLCAndycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlbGluZXMobmV3bGluZXMpCiAKICAgICBpZiBjb3B5ZmlsZXM6CiAgICAgICAgIGlmIG1hY2hpbmU6CiAgICAgICAgICAgICBkZXN0c3ViZGlyID0gb3MucGF0aC5qb2luKGRlc3RzdWJkaXIsIG1hY2hpbmUpCisgICAgICAgIGlmIHJlZGlyZWN0X291dHB1dDoKKyAgICAgICAgICAgIG91dGRpciA9IHJlZGlyZWN0X291dHB1dAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3V0ZGlyID0gYXBwZW5kZGlyCiAgICAgICAgIGZvciBuZXdmaWxlLCBzcmNmaWxlIGluIGNvcHlmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgZmlsZWRlc3QgPSBvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCBkZXN0c3ViZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHNyY2ZpbGUpKQorICAgICAgICAgICAgZmlsZWRlc3QgPSBvcy5wYXRoLmpvaW4ob3V0ZGlyLCBkZXN0c3ViZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHNyY2ZpbGUpKQogICAgICAgICAgICAgaWYgb3MucGF0aC5hYnNwYXRoKG5ld2ZpbGUpICE9IG9zLnBhdGguYWJzcGF0aChmaWxlZGVzdCk6CiAgICAgICAgICAgICAgICAgaWYgbmV3ZmlsZS5zdGFydHN3aXRoKHRlbXBmaWxlLmdldHRlbXBkaXIoKSk6CiAgICAgICAgICAgICAgICAgICAgIG5ld2ZpbGVkaXNwID0gb3MucGF0aC5iYXNlbmFtZShuZXdmaWxlKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIG5ld2ZpbGVkaXNwID0gbmV3ZmlsZQotICAgICAgICAgICAgICAgIGJiLm5vdGUoJ0NvcHlpbmcgJXMgdG8gJXMnICUgKG5ld2ZpbGVkaXNwLCBmaWxlZGVzdCkpCisgICAgICAgICAgICAgICAgaWYgcmVkaXJlY3Rfb3V0cHV0OgorICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCdDb3B5aW5nICVzIHRvICVzIChkcnktcnVuKScgJSAobmV3ZmlsZWRpc3AsIG9zLnBhdGguam9pbihhcHBlbmRkaXIsIGRlc3RzdWJkaXIsIG9zLnBhdGguYmFzZW5hbWUoc3JjZmlsZSkpKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCdDb3B5aW5nICVzIHRvICVzJyAlIChuZXdmaWxlZGlzcCwgZmlsZWRlc3QpKQogICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZmlsZWRlc3QpKQogICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShuZXdmaWxlLCBmaWxlZGVzdCkKIApAQCAtODY3LDI1ICs5MDAsMjUgQEAKICAgICAgICAgICAgIEZldGNoRXJyb3Igd2hlbiBkb24ndCBoYXZlIG5ldHdvcmsgYWNjZXNzIG9yIHVwc3RyZWFtIHNpdGUgZG9uJ3QgcmVzcG9uc2UuCiAgICAgICAgICAgICBOb01ldGhvZEVycm9yIHdoZW4gdXJpIGxhdGVzdF92ZXJzaW9uc3RyaW5nIG1ldGhvZCBpc24ndCBpbXBsZW1lbnRlZC4KIAotICAgICAgICBSZXR1cm5zIGEgZGljdG9uYXJ5IHdpdGggdmVyc2lvbiwgdHlwZSBhbmQgZGF0ZXRpbWUuCisgICAgICAgIFJldHVybnMgYSBkaWN0b25hcnkgd2l0aCB2ZXJzaW9uLCByZXBvc2l0b3J5IHJldmlzaW9uLCBjdXJyZW50X3ZlcnNpb24sIHR5cGUgYW5kIGRhdGV0aW1lLgogICAgICAgICBUeXBlIGNhbiBiZSBBIGZvciBBdXRvbWF0aWMsIE0gZm9yIE1hbnVhbCBhbmQgVSBmb3IgVW5rbm93bi4KICAgICAiIiIKICAgICBmcm9tIGJiLmZldGNoMiBpbXBvcnQgZGVjb2RldXJsCiAgICAgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIAogICAgIHJ1ID0ge30KKyAgICBydVsnY3VycmVudF92ZXJzaW9uJ10gPSByZC5nZXRWYXIoJ1BWJykKICAgICBydVsndmVyc2lvbiddID0gJycKICAgICBydVsndHlwZSddID0gJ1UnCiAgICAgcnVbJ2RhdGV0aW1lJ10gPSAnJwotCi0gICAgcHYgPSByZC5nZXRWYXIoJ1BWJykKKyAgICBydVsncmV2aXNpb24nXSA9ICcnCiAKICAgICAjIFhYWDogSWYgZG9uJ3QgaGF2ZSBTUkNfVVJJIG1lYW5zIHRoYXQgZG9uJ3QgaGF2ZSB1cHN0cmVhbSBzb3VyY2VzIHNvCiAgICAgIyByZXR1cm5zIHRoZSBjdXJyZW50IHJlY2lwZSB2ZXJzaW9uLCBzbyB0aGF0IHVwc3RyZWFtIHZlcnNpb24gY2hlY2sKICAgICAjIGRlY2xhcmVzIGEgbWF0Y2guCiAgICAgc3JjX3VyaXMgPSByZC5nZXRWYXIoJ1NSQ19VUkknKQogICAgIGlmIG5vdCBzcmNfdXJpczoKLSAgICAgICAgcnVbJ3ZlcnNpb24nXSA9IHB2CisgICAgICAgIHJ1Wyd2ZXJzaW9uJ10gPSBydVsnY3VycmVudF92ZXJzaW9uJ10KICAgICAgICAgcnVbJ3R5cGUnXSA9ICdNJwogICAgICAgICBydVsnZGF0ZXRpbWUnXSA9IGRhdGV0aW1lLm5vdygpCiAgICAgICAgIHJldHVybiBydQpAQCAtODk0LDYgKzkyNyw5IEBACiAgICAgc3JjX3VyaSA9IHNyY191cmlzLnNwbGl0KClbMF0KICAgICB1cmlfdHlwZSwgXywgXywgXywgXywgXyA9ICBkZWNvZGV1cmwoc3JjX3VyaSkKIAorICAgIChwdiwgcGZ4LCBzZngpID0gZ2V0X3JlY2lwZV9wdl93aXRob3V0X3NyY3B2KHJkLmdldFZhcignUFYnKSwgdXJpX3R5cGUpCisgICAgcnVbJ2N1cnJlbnRfdmVyc2lvbiddID0gcHYKKwogICAgIG1hbnVhbF91cHN0cmVhbV92ZXJzaW9uID0gcmQuZ2V0VmFyKCJSRUNJUEVfVVBTVFJFQU1fVkVSU0lPTiIpCiAgICAgaWYgbWFudWFsX3Vwc3RyZWFtX3ZlcnNpb246CiAgICAgICAgICMgbWFudWFsIHRyYWNraW5nIG9mIHVwc3RyZWFtIHZlcnNpb24uCkBAIC05MTQsMzMgKzk1MCwyMiBAQAogICAgICAgICBydVsnZGF0ZXRpbWUnXSA9IGRhdGV0aW1lLm5vdygpCiAgICAgZWxzZToKICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKHNyY191cmksIHJkKQotICAgICAgICBwdXB2ZXIgPSB1ZC5tZXRob2QubGF0ZXN0X3ZlcnNpb25zdHJpbmcodWQsIHJkKQotICAgICAgICAodXB2ZXJzaW9uLCByZXZpc2lvbikgPSBwdXB2ZXIKLQotICAgICAgICAjIGZvcm1hdCBnaXQgdmVyc2lvbiB2ZXJzaW9uK2dpdEFVVE9JTkMrSEFTSAotICAgICAgICBpZiB1cmlfdHlwZSA9PSAnZ2l0JzoKLSAgICAgICAgICAgIChwdiwgcGZ4LCBzZngpID0gZ2V0X3JlY2lwZV9wdl93aXRob3V0X3NyY3B2KHB2LCB1cmlfdHlwZSkKLQotICAgICAgICAgICAgIyBpZiBjb250YWlucyByZXZpc2lvbiBidXQgbm90IHVwdmVyc2lvbiB1c2UgY3VycmVudCBwdgotICAgICAgICAgICAgaWYgdXB2ZXJzaW9uID09ICcnIGFuZCByZXZpc2lvbjoKLSAgICAgICAgICAgICAgICB1cHZlcnNpb24gPSBwdgotCi0gICAgICAgICAgICBpZiB1cHZlcnNpb246Ci0gICAgICAgICAgICAgICAgdG1wID0gdXB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgdXB2ZXJzaW9uID0gJycKLQotICAgICAgICAgICAgICAgIGlmIHBmeDoKLSAgICAgICAgICAgICAgICAgICAgdXB2ZXJzaW9uID0gcGZ4ICsgdG1wCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdXB2ZXJzaW9uID0gdG1wCi0KLSAgICAgICAgICAgICAgICBpZiBzZng6Ci0gICAgICAgICAgICAgICAgICAgIHVwdmVyc2lvbiA9IHVwdmVyc2lvbiArIHNmeCArIHJldmlzaW9uWzoxMF0KKyAgICAgICAgaWYgcmQuZ2V0VmFyKCJVUFNUUkVBTV9DSEVDS19DT01NSVRTIikgPT0gIjEiOgorICAgICAgICAgICAgcmV2aXNpb24gPSB1ZC5tZXRob2QubGF0ZXN0X3JldmlzaW9uKHVkLCByZCwgJ2RlZmF1bHQnKQorICAgICAgICAgICAgdXB2ZXJzaW9uID0gcHYKKyAgICAgICAgICAgIGlmIHJldmlzaW9uICE9IHJkLmdldFZhcigiU1JDUkVWIik6CisgICAgICAgICAgICAgICAgdXB2ZXJzaW9uID0gdXB2ZXJzaW9uICsgIi1uZXctY29tbWl0cy1hdmFpbGFibGUiIAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHVwdmVyID0gdWQubWV0aG9kLmxhdGVzdF92ZXJzaW9uc3RyaW5nKHVkLCByZCkKKyAgICAgICAgICAgICh1cHZlcnNpb24sIHJldmlzaW9uKSA9IHB1cHZlcgogCiAgICAgICAgIGlmIHVwdmVyc2lvbjoKICAgICAgICAgICAgIHJ1Wyd2ZXJzaW9uJ10gPSB1cHZlcnNpb24KICAgICAgICAgICAgIHJ1Wyd0eXBlJ10gPSAnQScKIAorICAgICAgICBpZiByZXZpc2lvbjoKKyAgICAgICAgICAgIHJ1WydyZXZpc2lvbiddID0gcmV2aXNpb24KKwogICAgICAgICBydVsnZGF0ZXRpbWUnXSA9IGRhdGV0aW1lLm5vdygpCiAKICAgICByZXR1cm4gcnUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CmluZGV4IDc1NGVmNTYuLmY4ZjcxN2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQpAQCAtOTIsMTAgKzkyLDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfQVJDSFMnKSkKIAogCi0gICAgQGFic3RyYWN0bWV0aG9kCi0gICAgZGVmIF9oYW5kbGVfaW50ZXJjZXB0X2ZhaWx1cmUoc2VsZiwgZmFpbGVkX3NjcmlwdCk6Ci0gICAgICAgIHBhc3MKLQogICAgICIiIgogICAgIFRoZSBfY2xlYW51cCgpIG1ldGhvZCBzaG91bGQgYmUgdXNlZCB0byBjbGVhbi11cCBzdHVmZiB0aGF0IHdlIGRvbid0IHJlYWxseQogICAgIHdhbnQgdG8gZW5kIHVwIG9uIHRhcmdldC4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlIG9mIFJQTSwgdGhlIERCIGxvY2tzLgpAQCAtMTc4LDIwICsxNzQsMTAgQEAKICAgICAgICAgcG9zdF9wcm9jZXNzX2NtZHMgPSBzZWxmLmQuZ2V0VmFyKCJST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCIpCiAgICAgICAgIHJvb3Rmc19wb3N0X2luc3RhbGxfY21kcyA9IHNlbGYuZC5nZXRWYXIoJ1JPT1RGU19QT1NUSU5TVEFMTF9DT01NQU5EJykKIAotICAgICAgICBwb3N0aW5zdF9pbnRlcmNlcHRzX2RpciA9IHNlbGYuZC5nZXRWYXIoIlBPU1RJTlNUX0lOVEVSQ0VQVFNfRElSIikKLSAgICAgICAgaWYgbm90IHBvc3RpbnN0X2ludGVyY2VwdHNfZGlyOgotICAgICAgICAgICAgcG9zdGluc3RfaW50ZXJjZXB0c19kaXIgPSBzZWxmLmQuZXhwYW5kKCIke0NPUkVCQVNFfS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMiKQotICAgICAgICBpbnRlcmNlcHRzX2RpciA9IG9zLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmNlcHRfc2NyaXB0cyIpCi0KLSAgICAgICAgYmIudXRpbHMucmVtb3ZlKGludGVyY2VwdHNfZGlyLCBUcnVlKQotCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLmltYWdlX3Jvb3RmcykKIAogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc2VsZi5kZXBsb3lkaXIpCiAKLSAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHBvc3RpbnN0X2ludGVyY2VwdHNfZGlyLCBpbnRlcmNlcHRzX2RpcikKLQogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBwcmVfcHJvY2Vzc19jbWRzKQogCiAgICAgICAgIGlmIHNlbGYucHJvZ3Jlc3NfcmVwb3J0ZXI6CkBAIC0yMDcsNyArMTkzLDcgQEAKIAogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCByb290ZnNfcG9zdF9pbnN0YWxsX2NtZHMpCiAKLSAgICAgICAgc2VsZi5fcnVuX2ludGVyY2VwdHMoKQorICAgICAgICBzZWxmLnBtLnJ1bl9pbnRlcmNlcHRzKCkKIAogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBwb3N0X3Byb2Nlc3NfY21kcykKIApAQCAtMjkzLDQ0ICsyNzksNiBAQAogICAgICAgICAgICAgIyBSZW1vdmUgdGhlIHBhY2thZ2UgbWFuYWdlciBkYXRhIGZpbGVzCiAgICAgICAgICAgICBzZWxmLnBtLnJlbW92ZV9wYWNrYWdpbmdfZGF0YSgpCiAKLSAgICBkZWYgX3J1bl9pbnRlcmNlcHRzKHNlbGYpOgotICAgICAgICBpbnRlcmNlcHRzX2RpciA9IG9zLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmNlcHRfc2NyaXB0cyIpCi0KLSAgICAgICAgYmIubm90ZSgiUnVubmluZyBpbnRlcmNlcHQgc2NyaXB0czoiKQotICAgICAgICBvcy5lbnZpcm9uWydEJ10gPSBzZWxmLmltYWdlX3Jvb3RmcwotICAgICAgICBvcy5lbnZpcm9uWydTVEFHSU5HX0RJUl9OQVRJVkUnXSA9IHNlbGYuZC5nZXRWYXIoJ1NUQUdJTkdfRElSX05BVElWRScpCi0gICAgICAgIGZvciBzY3JpcHQgaW4gb3MubGlzdGRpcihpbnRlcmNlcHRzX2Rpcik6Ci0gICAgICAgICAgICBzY3JpcHRfZnVsbCA9IG9zLnBhdGguam9pbihpbnRlcmNlcHRzX2Rpciwgc2NyaXB0KQotCi0gICAgICAgICAgICBpZiBzY3JpcHQgPT0gInBvc3RpbnN0X2ludGVyY2VwdCIgb3Igbm90IG9zLmFjY2VzcyhzY3JpcHRfZnVsbCwgb3MuWF9PSyk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgYmIubm90ZSgiPiBFeGVjdXRpbmcgJXMgaW50ZXJjZXB0IC4uLiIgJSBzY3JpcHQpCi0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChzY3JpcHRfZnVsbCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgICAgICAgICAgICAgIGlmIG91dHB1dDogYmIubm90ZShvdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKQotICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgYmIud2FybigiVGhlIHBvc3RpbnN0YWxsIGludGVyY2VwdCBob29rICclcycgZmFpbGVkLCBkZXRhaWxzIGluIGxvZy5kb19yb290ZnMiICUgc2NyaXB0KQotICAgICAgICAgICAgICAgIGJiLm5vdGUoIkV4aXQgY29kZSAlZC4gT3V0cHV0OlxuJXMiICUgKGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKLQotICAgICAgICAgICAgICAgIHdpdGggb3BlbihzY3JpcHRfZnVsbCkgYXMgaW50ZXJjZXB0OgotICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX3BrZ3MgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGludGVyY2VwdC5yZWFkKCkuc3BsaXQoIlxuIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2goIl4jI1BLR1M6KC4qKSIsIGxpbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfcGtncyA9IG0uZ3JvdXAoMSkuc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgcmVnaXN0ZXJlZF9wa2dzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiVGhlIHBvc3RpbnN0YWxscyBmb3IgdGhlIGZvbGxvd2luZyBwYWNrYWdlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWxsIGJlIHBvc3Rwb25lZCBmb3IgZmlyc3QgYm9vdDogJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9wa2dzKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGNhbGwgdGhlIGJhY2tlbmQgZGVwZW5kZW50IGhhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShyZWdpc3RlcmVkX3BrZ3MpCi0KICAgICBkZWYgX3J1bl9sZGNvbmZpZyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5kLmdldFZhcignTERDT05GSUdERVBFTkQnKToKICAgICAgICAgICAgIGJiLm5vdGUoIkV4ZWN1dGluZzogbGRjb25maWcgLXIiICsgc2VsZi5pbWFnZV9yb290ZnMgKyAiLWMgbmV3IC12IikKQEAgLTUyMywxNCArNDcxLDYgQEAKICAgICAgICAgc2VsZi5fbG9nX2NoZWNrX3dhcm4oKQogICAgICAgICBzZWxmLl9sb2dfY2hlY2tfZXJyb3IoKQogCi0gICAgZGVmIF9oYW5kbGVfaW50ZXJjZXB0X2ZhaWx1cmUoc2VsZiwgcmVnaXN0ZXJlZF9wa2dzKToKLSAgICAgICAgcnBtX3Bvc3RpbnN0c19kaXIgPSBzZWxmLmltYWdlX3Jvb3RmcyArIHNlbGYuZC5leHBhbmQoJyR7c3lzY29uZmRpcn0vcnBtLXBvc3RpbnN0cy8nKQotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIocnBtX3Bvc3RpbnN0c19kaXIpCi0KLSAgICAgICAgIyBTYXZlIHRoZSBwYWNrYWdlIHBvc3RpbnN0YWxscyBpbiAvZXRjL3JwbS1wb3N0aW5zdHMKLSAgICAgICAgZm9yIHBrZyBpbiByZWdpc3RlcmVkX3BrZ3Muc3BsaXQoKToKLSAgICAgICAgICAgIHNlbGYucG0uc2F2ZV9ycG1wb3N0aW5zdChwa2cpCi0KICAgICBkZWYgX2NsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYucG0uX2ludm9rZV9kbmYoWyJjbGVhbiIsICJhbGwiXSkKIApAQCAtNzExLDkgKzY1MSw2IEBACiAgICAgICAgIHNyY19wb3N0aW5zdF9kaXIgPSBzZWxmLmQuZXhwYW5kKCIke0lNQUdFX1JPT1RGU30vdmFyL2xpYi9kcGtnL2luZm8iKQogICAgICAgICByZXR1cm4gc2VsZi5fc2F2ZV9wb3N0aW5zdHNfY29tbW9uKGRzdF9wb3N0aW5zdF9kaXIsIHNyY19wb3N0aW5zdF9kaXIpCiAKLSAgICBkZWYgX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShzZWxmLCByZWdpc3RlcmVkX3BrZ3MpOgotICAgICAgICBzZWxmLnBtLm1hcmtfcGFja2FnZXMoInVucGFja2VkIiwgcmVnaXN0ZXJlZF9wa2dzLnNwbGl0KCkpCi0KICAgICBkZWYgX2xvZ19jaGVjayhzZWxmKToKICAgICAgICAgc2VsZi5fbG9nX2NoZWNrX3dhcm4oKQogICAgICAgICBzZWxmLl9sb2dfY2hlY2tfZXJyb3IoKQpAQCAtOTgyLDkgKzkxOSw2IEBACiAgICAgICAgIHNyY19wb3N0aW5zdF9kaXIgPSBzZWxmLmQuZXhwYW5kKCIke0lNQUdFX1JPT1RGU30ke09QS0dMSUJESVJ9L29wa2cvaW5mbyIpCiAgICAgICAgIHJldHVybiBzZWxmLl9zYXZlX3Bvc3RpbnN0c19jb21tb24oZHN0X3Bvc3RpbnN0X2Rpciwgc3JjX3Bvc3RpbnN0X2RpcikKIAotICAgIGRlZiBfaGFuZGxlX2ludGVyY2VwdF9mYWlsdXJlKHNlbGYsIHJlZ2lzdGVyZWRfcGtncyk6Ci0gICAgICAgIHNlbGYucG0ubWFya19wYWNrYWdlcygidW5wYWNrZWQiLCByZWdpc3RlcmVkX3BrZ3Muc3BsaXQoKSkKLQogICAgIGRlZiBfbG9nX2NoZWNrKHNlbGYpOgogICAgICAgICBzZWxmLl9sb2dfY2hlY2tfd2FybigpCiAgICAgICAgIHNlbGYuX2xvZ19jaGVja19lcnJvcigpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc2RrLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Nkay5weQppbmRleCA3ZjcxY2ZiLi5kNmE1MDMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc2RrLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zZGsucHkKQEAgLTE2Miw0MCArMTYyLDIxIEBACiAgICAgICAgIHNlbGYuaG9zdF9tYW5pZmVzdCA9IFJwbU1hbmlmZXN0KGQsIHNlbGYubWFuaWZlc3RfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5pZmVzdC5NQU5JRkVTVF9UWVBFX1NES19IT1NUKQogCi0gICAgICAgIHRhcmdldF9wcm92aWRlbmFtZSA9IFsnL2Jpbi9zaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL2Jpbi9iYXNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2Jpbi9lbnYnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvYmluL3BlcmwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BrZ2NvbmZpZycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLQogICAgICAgICBycG1fcmVwb193b3JrZGlyID0gIm9lLXNkay1yZXBvIgogICAgICAgICBpZiAic2RrX2V4dCIgaW4gZC5nZXRWYXIoIkJCX1JVTlRBU0siKToKICAgICAgICAgICAgIHJwbV9yZXBvX3dvcmtkaXIgPSAib2Utc2RrLWV4dC1yZXBvIgogCi0KICAgICAgICAgc2VsZi50YXJnZXRfcG0gPSBScG1QTShkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2RrX3RhcmdldF9zeXNyb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5nZXRWYXIoJ1RBUkdFVF9WRU5ET1InKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFyZ2V0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcHJvdmlkZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnBtX3JlcG9fd29ya2Rpcj1ycG1fcmVwb193b3JrZGlyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogCi0gICAgICAgIHNka19wcm92aWRlbmFtZSA9IFsnL2Jpbi9zaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnL2Jpbi9iYXNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2Jpbi9lbnYnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvYmluL3BlcmwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BrZ2NvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnbGliR0wuc28oKSg2NGJpdCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpYkdMLnNvJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgXQotCiAgICAgICAgIHNlbGYuaG9zdF9wbSA9IFJwbVBNKGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2RrX2hvc3Rfc3lzcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcignU0RLX1ZFTkRPUicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNka19wcm92aWRlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNES19QQUNLQUdFX0FSQ0hTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNES19PUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwbV9yZXBvX3dvcmtkaXI9cnBtX3JlcG9fd29ya2RpcgpAQCAtMjI4LDYgKzIwOSw4IEBACiAKICAgICAgICAgc2VsZi50YXJnZXRfcG0uaW5zdGFsbF9jb21wbGVtZW50YXJ5KHNlbGYuZC5nZXRWYXIoJ1NES0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWScpKQogCisgICAgICAgIHNlbGYudGFyZ2V0X3BtLnJ1bl9pbnRlcmNlcHRzKCkKKwogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUE9TVF9UQVJHRVRfQ09NTUFORCIpKQogCiAgICAgICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygiU0RLSU1BR0VfRkVBVFVSRVMiLCAicGFja2FnZS1tYW5hZ2VtZW50IiwgVHJ1ZSwgRmFsc2UsIHNlbGYuZCk6CkBAIC0yMzcsNiArMjIwLDggQEAKICAgICAgICAgc2VsZi5fcG9wdWxhdGVfc3lzcm9vdChzZWxmLmhvc3RfcG0sIHNlbGYuaG9zdF9tYW5pZmVzdCkKICAgICAgICAgc2VsZi5pbnN0YWxsX2xvY2FsZXMoc2VsZi5ob3N0X3BtKQogCisgICAgICAgIHNlbGYuaG9zdF9wbS5ydW5faW50ZXJjZXB0cygpCisKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfSE9TVF9DT01NQU5EIikpCiAKICAgICAgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCJTREtJTUFHRV9GRUFUVVJFUyIsICJwYWNrYWdlLW1hbmFnZW1lbnQiLCBUcnVlLCBGYWxzZSwgc2VsZi5kKToKQEAgLTMxMiw2ICsyOTcsOCBAQAogCiAgICAgICAgIHNlbGYudGFyZ2V0X3BtLmluc3RhbGxfY29tcGxlbWVudGFyeShzZWxmLmQuZ2V0VmFyKCdTREtJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlknKSkKIAorICAgICAgICBzZWxmLnRhcmdldF9wbS5ydW5faW50ZXJjZXB0cygpCisKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQiKSkKIAogICAgICAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoIlNES0lNQUdFX0ZFQVRVUkVTIiwgInBhY2thZ2UtbWFuYWdlbWVudCIsIFRydWUsIEZhbHNlLCBzZWxmLmQpOgpAQCAtMzIxLDYgKzMwOCw4IEBACiAgICAgICAgIHNlbGYuX3BvcHVsYXRlX3N5c3Jvb3Qoc2VsZi5ob3N0X3BtLCBzZWxmLmhvc3RfbWFuaWZlc3QpCiAgICAgICAgIHNlbGYuaW5zdGFsbF9sb2NhbGVzKHNlbGYuaG9zdF9wbSkKIAorICAgICAgICBzZWxmLmhvc3RfcG0ucnVuX2ludGVyY2VwdHMoKQorCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHNlbGYuZC5nZXRWYXIoIlBPUFVMQVRFX1NES19QT1NUX0hPU1RfQ09NTUFORCIpKQogCiAgICAgICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygiU0RLSU1BR0VfRkVBVFVSRVMiLCAicGFja2FnZS1tYW5hZ2VtZW50IiwgVHJ1ZSwgRmFsc2UsIHNlbGYuZCk6CkBAIC0zOTcsNiArMzg2LDggQEAKIAogICAgICAgICBzZWxmLnRhcmdldF9wbS5pbnN0YWxsX2NvbXBsZW1lbnRhcnkoc2VsZi5kLmdldFZhcignU0RLSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJykpCiAKKyAgICAgICAgc2VsZi50YXJnZXRfcG0ucnVuX2ludGVyY2VwdHMoKQorCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHNlbGYuZC5nZXRWYXIoIlBPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EIikpCiAKICAgICAgICAgc2VsZi5fY29weV9hcHRfZGlyX3RvKG9zLnBhdGguam9pbihzZWxmLnNka190YXJnZXRfc3lzcm9vdCwgImV0YyIsICJhcHQiKSkKQEAgLTQwOCw2ICszOTksOCBAQAogICAgICAgICBzZWxmLl9wb3B1bGF0ZV9zeXNyb290KHNlbGYuaG9zdF9wbSwgc2VsZi5ob3N0X21hbmlmZXN0KQogICAgICAgICBzZWxmLmluc3RhbGxfbG9jYWxlcyhzZWxmLmhvc3RfcG0pCiAKKyAgICAgICAgc2VsZi5ob3N0X3BtLnJ1bl9pbnRlcmNlcHRzKCkKKwogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkQiKSkKIAogICAgICAgICBzZWxmLl9jb3B5X2FwdF9kaXJfdG8ob3MucGF0aC5qb2luKHNlbGYuc2RrX291dHB1dCwgc2VsZi5zZGtfbmF0aXZlX3BhdGgsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQppbmRleCAzYTg3NzhlLi5iODJlMGY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgYmIuc2lnZ2VuCitpbXBvcnQgb2UKIAogZGVmIHNzdGF0ZV9ydW5kZXBmaWx0ZXIoc2lnZ2VuLCBmbiwgcmVjaXBlbmFtZSwgdGFzaywgZGVwLCBkZXBuYW1lLCBkYXRhQ2FjaGUpOgogICAgICMgUmV0dXJuIFRydWUgaWYgd2Ugc2hvdWxkIGtlZXAgdGhlIGRlcGVuZGVuY3ksIEZhbHNlIHRvIGRyb3AgaXQKQEAgLTI4LDE1ICsyOSwxNCBAQAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAjIFF1aWx0IChwYXRjaCBhcHBsaWNhdGlvbikgY2hhbmdpbmcgaXNuJ3QgbGlrZWx5IHRvIGFmZmVjdCBhbnl0aGluZwotICAgIGV4Y2x1ZGVsaXN0ID0gWydxdWlsdC1uYXRpdmUnLCAnc3VidmVyc2lvbi1uYXRpdmUnLCAnZ2l0LW5hdGl2ZScsICdjY2FjaGUtbmF0aXZlJ10KLSAgICBpZiBkZXBuYW1lIGluIGV4Y2x1ZGVsaXN0IGFuZCByZWNpcGVuYW1lICE9IGRlcG5hbWU6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCiAgICAgIyBFeGNsdWRlIHdlbGwgZGVmaW5lZCByZWNpcGUtPmRlcGVuZGVuY3kKICAgICBpZiAiJXMtPiVzIiAlIChyZWNpcGVuYW1lLCBkZXBuYW1lKSBpbiBzaWdnZW4uc2FmZXJlY2lwZWRlcHM6CiAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgIyBDaGVjayBmb3Igc3BlY2lhbCB3aWxkY2FyZAorICAgIGlmICIqLT4lcyIgJSBkZXBuYW1lIGluIHNpZ2dlbi5zYWZlcmVjaXBlZGVwcyBhbmQgcmVjaXBlbmFtZSAhPSBkZXBuYW1lOgorICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgICMgRG9uJ3QgY2hhbmdlIG5hdGl2ZS9jcm9zcy9uYXRpdmVzZGsgcmVjaXBlIGRlcGVuZGVuY2llcyBhbnkgZnVydGhlcgogICAgIGlmIGlzTmF0aXZlKHJlY2lwZW5hbWUpIG9yIGlzQ3Jvc3MocmVjaXBlbmFtZSkgb3IgaXNOYXRpdmVTREsocmVjaXBlbmFtZSk6CiAgICAgICAgIHJldHVybiBUcnVlCkBAIC0zNjgsMyArMzY4LDM3IEBACiAgICAgaWYgZXh0cmFpbmY6CiAgICAgICAgIGQyLnNldFZhcigiU1NUQVRFX01BTk1BQ0giLCBleHRyYWluZikKICAgICByZXR1cm4gKGQyLmV4cGFuZCgiJHtTU1RBVEVfTUFORklMRVBSRUZJWH0uJXMiICUgdGFzayksIGQyKQorCitkZWYgZmluZF9zc3RhdGVfbWFuaWZlc3QodGFza2RhdGEsIHRhc2tkYXRhMiwgdGFza25hbWUsIGQsIG11bHRpbGliY2FjaGUpOgorICAgIGQyID0gZAorICAgIHZhcmlhbnQgPSAnJworICAgIGlmIHRhc2tkYXRhMi5zdGFydHN3aXRoKCJ2aXJ0dWFsOm11bHRpbGliIik6CisgICAgICAgIHZhcmlhbnQgPSB0YXNrZGF0YTIuc3BsaXQoIjoiKVsyXQorICAgICAgICBpZiB2YXJpYW50IG5vdCBpbiBtdWx0aWxpYmNhY2hlOgorICAgICAgICAgICAgbXVsdGlsaWJjYWNoZVt2YXJpYW50XSA9IG9lLnV0aWxzLmdldF9tdWx0aWxpYl9kYXRhc3RvcmUodmFyaWFudCwgZCkKKyAgICAgICAgZDIgPSBtdWx0aWxpYmNhY2hlW3ZhcmlhbnRdCisKKyAgICBpZiB0YXNrZGF0YS5lbmRzd2l0aCgiLW5hdGl2ZSIpOgorICAgICAgICBwa2dhcmNocyA9IFsiJHtCVUlMRF9BUkNIfSJdCisgICAgZWxpZiB0YXNrZGF0YS5zdGFydHN3aXRoKCJuYXRpdmVzZGstIik6CisgICAgICAgIHBrZ2FyY2hzID0gWyIke1NES19BUkNIfV8ke1NES19PU30iLCAiYWxsYXJjaCJdCisgICAgZWxpZiAiLWNyb3NzLWNhbmFkaWFuIiBpbiB0YXNrZGF0YToKKyAgICAgICAgcGtnYXJjaHMgPSBbIiR7U0RLX0FSQ0h9XyR7U0RLX0FSQ0h9LSR7U0RLUEtHU1VGRklYfSJdCisgICAgZWxpZiAiLWNyb3NzLSIgaW4gdGFza2RhdGE6CisgICAgICAgIHBrZ2FyY2hzID0gWyIke0JVSUxEX0FSQ0h9XyR7VEFSR0VUX0FSQ0h9Il0KKyAgICBlbGlmICItY3Jvc3NzZGsiIGluIHRhc2tkYXRhOgorICAgICAgICBwa2dhcmNocyA9IFsiJHtCVUlMRF9BUkNIfV8ke1NES19BUkNIfV8ke1NES19PU30iXQorICAgIGVsc2U6CisgICAgICAgIHBrZ2FyY2hzID0gWycke01BQ0hJTkVfQVJDSH0nXQorICAgICAgICBwa2dhcmNocyA9IHBrZ2FyY2hzICsgbGlzdChyZXZlcnNlZChkMi5nZXRWYXIoIlBBQ0tBR0VfRVhUUkFfQVJDSFMiKS5zcGxpdCgpKSkKKyAgICAgICAgcGtnYXJjaHMuYXBwZW5kKCdhbGxhcmNoJykKKyAgICAgICAgcGtnYXJjaHMuYXBwZW5kKCcke1NES19BUkNIfV8ke1NES19BUkNIfS0ke1NES1BLR1NVRkZJWH0nKQorCisgICAgZm9yIHBrZ2FyY2ggaW4gcGtnYXJjaHM6CisgICAgICAgIG1hbmlmZXN0ID0gZDIuZXhwYW5kKCIke1NTVEFURV9NQU5JRkVTVFN9L21hbmlmZXN0LSVzLSVzLiVzIiAlIChwa2dhcmNoLCB0YXNrZGF0YSwgdGFza25hbWUpKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdCk6CisgICAgICAgICAgICByZXR1cm4gbWFuaWZlc3QsIGQyCisgICAgYmIud2FybigiTWFuaWZlc3QgJXMgbm90IGZvdW5kIGluICVzICh2YXJpYW50ICclcycpPyIgJSAobWFuaWZlc3QsIGQyLmV4cGFuZCgiICIuam9pbihwa2dhcmNocykpLCB2YXJpYW50KSkKKyAgICByZXR1cm4gTm9uZSwgZDIKKworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXRpbHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKaW5kZXggNjQzYWI3OC4uODBmMDQ0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQpAQCAtODYsMTcgKzg2LDYgQEAKICAgICBmcm9tIHJlIGltcG9ydCBtYXRjaAogICAgIHJldHVybiAiICIuam9pbihbeCBmb3IgeCBpbiBzdHIuc3BsaXQoKSBpZiBub3QgbWF0Y2goZiwgeCwgMCldKQogCi1kZWYgcGFyYW1fYm9vbChjZmcsIGZpZWxkLCBkZmx0ID0gTm9uZSk6Ci0gICAgIiIiTG9va3VwIDxmaWVsZD4gaW4gPGNmZz4gbWFwIGFuZCBjb252ZXJ0IGl0IHRvIGEgYm9vbGVhbjsgdGFrZQotICAgIDxkZmx0PiB3aGVuIHRoaXMgPGZpZWxkPiBkb2VzIG5vdCBleGlzdCIiIgotICAgIHZhbHVlID0gY2ZnLmdldChmaWVsZCwgZGZsdCkKLSAgICBzdHJ2YWx1ZSA9IHN0cih2YWx1ZSkubG93ZXIoKQotICAgIGlmIHN0cnZhbHVlIGluICgneWVzJywgJ3knLCAndHJ1ZScsICd0JywgJzEnKToKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBlbGlmIHN0cnZhbHVlIGluICgnbm8nLCAnbicsICdmYWxzZScsICdmJywgJzAnKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB2YWx1ZSBmb3IgYm9vbGVhbiBwYXJhbWV0ZXIgJyVzJzogJyVzJyIgJSAoZmllbGQsIHZhbHVlKSkKLQogZGVmIGJ1aWxkX2RlcGVuZHNfc3RyaW5nKGRlcGVuZHMsIHRhc2spOgogICAgICIiIkFwcGVuZCBhIHRhc2tuYW1lIHRvIGEgc3RyaW5nIG9mIGRlcGVuZGVuY2llcyBhcyB1c2VkIGJ5IHRoZSBbZGVwZW5kc10gZmxhZyIiIgogICAgIHJldHVybiAiICIuam9pbihkZXAgKyAiOiIgKyB0YXNrIGZvciBkZXAgaW4gZGVwZW5kcy5zcGxpdCgpKQpAQCAtMTY3LDYgKzE1Niw0OSBAQAogICAgICIiIgogICAgIHJldHVybiBiYi51dGlscy5jb250YWluc19hbnkoIkRJU1RST19GRUFUVVJFUyIsIGZlYXR1cmVzLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpCiAKK2RlZiBwYXJhbGxlbF9tYWtlKGQpOgorICAgICIiIgorICAgIFJldHVybiB0aGUgaW50ZWdlciB2YWx1ZSBmb3IgdGhlIG51bWJlciBvZiBwYXJhbGxlbCB0aHJlYWRzIHRvIHVzZSB3aGVuCisgICAgYnVpbGRpbmcsIHNjcmFwZWQgb3V0IG9mIFBBUkFMTEVMX01BS0UuIElmIG5vIHBhcmFsbGVsaXphdGlvbiBvcHRpb24gaXMKKyAgICBmb3VuZCwgcmV0dXJucyBOb25lCisKKyAgICBlLmcuIGlmIFBBUkFMTEVMX01BS0UgPSAiLWogMTAiLCB0aGlzIHdpbGwgcmV0dXJuIDEwIGFzIGFuIGludGVnZXIuCisgICAgIiIiCisgICAgcG0gPSAoZC5nZXRWYXIoJ1BBUkFMTEVMX01BS0UnKSBvciAnJykuc3BsaXQoKQorICAgICMgbG9vayBmb3IgJy1qJyBhbmQgdGhyb3cgb3RoZXIgb3B0aW9ucyAoZS5nLiAnLWwnKSBhd2F5CisgICAgd2hpbGUgcG06CisgICAgICAgIG9wdCA9IHBtLnBvcCgwKQorICAgICAgICBpZiBvcHQgPT0gJy1qJzoKKyAgICAgICAgICAgIHYgPSBwbS5wb3AoMCkKKyAgICAgICAgZWxpZiBvcHQuc3RhcnRzd2l0aCgnLWonKToKKyAgICAgICAgICAgIHYgPSBvcHRbMjpdLnN0cmlwKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgcmV0dXJuIGludCh2KQorCisgICAgcmV0dXJuIE5vbmUKKworZGVmIHBhcmFsbGVsX21ha2VfYXJndW1lbnQoZCwgZm10LCBsaW1pdD1Ob25lKToKKyAgICAiIiIKKyAgICBIZWxwZXIgdXRpbGl0eSB0byBjb25zdHJ1Y3QgYSBwYXJhbGxlbCBtYWtlIGFyZ3VtZW50IGZyb20gdGhlIG51bWJlciBvZgorICAgIHBhcmFsbGVsIHRocmVhZHMgc3BlY2lmaWVkIGluIFBBUkFMTEVMX01BS0UuCisKKyAgICBSZXR1cm5zIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nIGBmbXRgIHdoZXJlIGEgc2luZ2xlICclZCcgd2lsbCBiZSBleHBhbmRlZAorICAgIHdpdGggdGhlIG51bWJlciBvZiBwYXJhbGxlbCB0aHJlYWRzIHRvIHVzZS4gSWYgYGxpbWl0YCBpcyBzcGVjaWZpZWQsIHRoZQorICAgIG51bWJlciBvZiBwYXJhbGxlbCB0aHJlYWRzIHdpbGwgYmUgbm8gbGFyZ2VyIHRoYW4gaXQuIElmIG5vIHBhcmFsbGVsaXphdGlvbgorICAgIG9wdGlvbiBpcyBmb3VuZCBpbiBQQVJBTExFTF9NQUtFLCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZworCisgICAgZS5nLiBpZiBQQVJBTExFTF9NQUtFID0gIi1qIDEwIiwgcGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCAiLW4gJWQiKSB3aWxsIHJldHVybgorICAgICItbiAxMCIKKyAgICAiIiIKKyAgICB2ID0gcGFyYWxsZWxfbWFrZShkKQorICAgIGlmIHY6CisgICAgICAgIGlmIGxpbWl0OgorICAgICAgICAgICAgdiA9IG1pbihsaW1pdCwgdikKKyAgICAgICAgcmV0dXJuIGZtdCAlIHYKKyAgICByZXR1cm4gJycKKwogZGVmIHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpOgogICAgICIiIgogICAgIFJldHVybiBhIGxpc3Qgb2YgcGFja2FnZXMgZnJvbSBQQUNLQUdFUyB3aXRoIHRoZSAic3lzdGVtIiBwYWNrYWdlcyBzdWNoIGFzCkBAIC0yOTIsNiArMzI0LDE0IEBACiAgICAgdmVyc2lvbiA9IG1hdGNoLmdyb3VwKDEpCiAgICAgcmV0dXJuICItJXMiICUgdmVyc2lvbiBpZiB2ZXJzaW9uIGluICgiNC44IiwgIjQuOSIpIGVsc2UgIiIKIAorCitkZWYgZ2V0X211bHRpbGliX2RhdGFzdG9yZSh2YXJpYW50LCBkKToKKyAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCJPVkVSUklERVMiLCBGYWxzZSkgKyAiOnZpcnRjbGFzcy1tdWx0aWxpYi0iICsgdmFyaWFudAorICAgIGxvY2FsZGF0YS5zZXRWYXIoIk9WRVJSSURFUyIsIG92ZXJyaWRlcykKKyAgICBsb2NhbGRhdGEuc2V0VmFyKCJNTFBSRUZJWCIsIHZhcmlhbnQgKyAiLSIpCisgICAgcmV0dXJuIGxvY2FsZGF0YQorCiAjCiAjIFB5dGhvbiAyLjcgZG9lc24ndCBoYXZlIHRocmVhZGVkIHBvb2xzIChqdXN0IG11bHRpcHJvY2Vzc2luZykKICMgc28gaW1wbGVtZW50IGEgdmVyc2lvbiBoZXJlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvYmFzZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CmluZGV4IDdiMmI0YWEuLmFjNmVlMTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CkBAIC0yODIsNyArMjgyLDcgQEAKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoc2VsZi50bXBfZGlyKToKICAgICAgICAgICAgIG9zLm1rZGlyKHNlbGYudG1wX2RpcikKICAgICAgICAgaWYgc2VsZi5idWlsZF90YXJnZXQ6Ci0gICAgICAgICAgICBzZWxmLnJ1bl9jbWQoWydiaXRiYWtlJywgc2VsZi5idWlsZF90YXJnZXQsICctYycsICdmZXRjaGFsbCddKQorICAgICAgICAgICAgc2VsZi5ydW5fY21kKFsnYml0YmFrZScsIHNlbGYuYnVpbGRfdGFyZ2V0LCAnLS1ydW5hbGw9ZmV0Y2gnXSkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgIiIiVGVhci1kb3duIGZpeHR1cmUgZm9yIGVhY2ggdGVzdCIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL3Rlc3RfYmFzaWMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvdGVzdF9iYXNpYy5weQppbmRleCBhMTkwODlhLi42ZDZiMDFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvdGVzdF9iYXNpYy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvdGVzdF9iYXNpYy5weQpAQCAtMTUsOCArMTUsNyBAQAogCiBpbXBvcnQgb2UucGF0aAogZnJvbSBvZXFhLmJ1aWxkcGVyZiBpbXBvcnQgQnVpbGRQZXJmVGVzdENhc2UKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhcnMKLQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycwogCiBjbGFzcyBUZXN0MVAxKEJ1aWxkUGVyZlRlc3RDYXNlKToKICAgICBidWlsZF90YXJnZXQgPSAnY29yZS1pbWFnZS1zYXRvJwpAQCAtMzAsNiArMjksNyBAQAogICAgICAgICBzZWxmLm1lYXN1cmVfY21kX3Jlc291cmNlcyhbJ2JpdGJha2UnLCBzZWxmLmJ1aWxkX3RhcmdldF0sICdidWlsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaXRiYWtlICcgKyBzZWxmLmJ1aWxkX3RhcmdldCwgc2F2ZV9icz1UcnVlKQogICAgICAgICBzZWxmLm1lYXN1cmVfZGlza191c2FnZShzZWxmLmJiX3ZhcnNbJ1RNUERJUiddLCAndG1wZGlyJywgJ3RtcGRpcicpCisgICAgICAgIHNlbGYubWVhc3VyZV9kaXNrX3VzYWdlKGdldF9iYl92YXIoIklNQUdFX1JPT1RGUyIsIHNlbGYuYnVpbGRfdGFyZ2V0KSwgJ3Jvb3RmcycsICdyb290ZnMnLCBUcnVlKQogCiAKIGNsYXNzIFRlc3QxUDIoQnVpbGRQZXJmVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9sb2FkZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQppbmRleCA5NzVhMDgxLi5hNDc0NGRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQpAQCAtNDMsNyArNDMsNyBAQAogICAgIGZvciBtb2R1bGUgaW4gbW9kdWxlczoKICAgICAgICAgIyBBc3N1bXB0aW9uOiBwYWNrYWdlIGFuZCBtb2R1bGUgbmFtZXMgZG8gbm90IGNvbnRhaW4gdXBwZXIgY2FzZQogICAgICAgICAjIGNoYXJhY3RlcnMsIHdoZXJlYXMgY2xhc3MgbmFtZXMgZG8KLSAgICAgICAgbSA9IHJlLm1hdGNoKHInXihbXkEtWl0rKSg/OlwuKFtBLVpdW14uXSopKD86XC4oW14uXSspKT8pPyQnLCBtb2R1bGUpCisgICAgICAgIG0gPSByZS5tYXRjaChyJ14oXHcrKSg/OlwuKFx3W14uXSopKD86XC4oW14uXSspKT8pPyQnLCBtb2R1bGUsIGZsYWdzPXJlLkFTQ0lJKQogCiAgICAgICAgIG1vZHVsZV9uYW1lLCBjbGFzc19uYW1lLCB0ZXN0X25hbWUgPSBtLmdyb3VwcygpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9xZW11LnB5CmluZGV4IGQzNTliZjkuLmJmM2I2MzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weQpAQCAtOSw3ICs5LDcgQEAKIGZyb20gLnNzaCBpbXBvcnQgT0VTU0hUYXJnZXQKIGZyb20gb2VxYS51dGlscy5xZW11cnVubmVyIGltcG9ydCBRZW11UnVubmVyCiAKLXN1cHBvcnRlZF9mc3R5cGVzID0gWydleHQzJywgJ2V4dDQnLCAnY3Bpby5neicsICd3aWMnLCAnZWxmJ10KK3N1cHBvcnRlZF9mc3R5cGVzID0gWydleHQzJywgJ2V4dDQnLCAnY3Bpby5neicsICd3aWMnXQogCiBjbGFzcyBPRVFlbXVUYXJnZXQoT0VTU0hUYXJnZXQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGlwLCBzZXJ2ZXJfaXAsIHRpbWVvdXQ9MzAwLCB1c2VyPSdyb290JywKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYXB0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ0ZGQzNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYXB0LnB5CkBAIC0wLDAgKzEsNDcgQEAKK2ltcG9ydCBvcworZnJvbSBvZXFhLnV0aWxzLmh0dHBzZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2aWNlCitmcm9tIG9lcWEucnVudGltZS5jYXNlIGltcG9ydCBPRVJ1bnRpbWVUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdERhdGFWYXIsIHNraXBJZk5vdEZlYXR1cmUKK2Zyb20gb2VxYS5ydW50aW1lLmRlY29yYXRvci5wYWNrYWdlIGltcG9ydCBPRUhhc1BhY2thZ2UKKworY2xhc3MgQXB0VGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6CisKKyAgICBkZWYgcGtnKHNlbGYsIGNvbW1hbmQsIGV4cGVjdGVkID0gMCk6CisgICAgICAgIGNvbW1hbmQgPSAnYXB0LWdldCAlcycgJSBjb21tYW5kCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKGNvbW1hbmQsIDE1MDApCisgICAgICAgIG1lc3NhZ2UgPSBvcy5saW5lc2VwLmpvaW4oW2NvbW1hbmQsIG91dHB1dF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCBleHBlY3RlZCwgbWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIG91dHB1dAorCitjbGFzcyBBcHRSZXBvVGVzdChBcHRUZXN0KToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHNlcnZpY2VfcmVwbyA9IG9zLnBhdGguam9pbihjbHMudGMudGRbJ0RFUExPWV9ESVJfREVCJ10sICdhbGwnKQorICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sIGNscy50Yy50YXJnZXQuc2VydmVyX2lwKQorICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0b3AoKQorCisgICAgZGVmIHNldHVwX3NvdXJjZV9jb25maWdfZm9yX3BhY2thZ2VfaW5zdGFsbChzZWxmKToKKyAgICAgICAgYXB0X2dldF9zb3VyY2Vfc2VydmVyID0gJ2h0dHA6Ly8lczolcy8nICUgKHNlbGYudGMudGFyZ2V0LnNlcnZlcl9pcCwgc2VsZi5yZXBvX3NlcnZlci5wb3J0KQorICAgICAgICBhcHRfZ2V0X3NvdXJjZXNsaXN0X2RpciA9ICcvZXRjL2FwdC8nCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignY2QgJXM7IGVjaG8gZGViICVzIC4vID4gc291cmNlcy5saXN0JyAlIChhcHRfZ2V0X3NvdXJjZXNsaXN0X2RpciwgYXB0X2dldF9zb3VyY2Vfc2VydmVyKSkKKworICAgIGRlZiBjbGVhbnVwX3NvdXJjZV9jb25maWdfZm9yX3BhY2thZ2VfaW5zdGFsbChzZWxmKToKKyAgICAgICAgYXB0X2dldF9zb3VyY2VzbGlzdF9kaXIgPSAnL2V0Yy9hcHQvJworICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NkICVzOyBybSBzb3VyY2VzLmxpc3QnICUgKGFwdF9nZXRfc291cmNlc2xpc3RfZGlyKSkKKworICAgIEBza2lwSWZOb3RGZWF0dXJlKCdwYWNrYWdlLW1hbmFnZW1lbnQnLAorICAgICAgICAgICAgICAgICAgICAgICdUZXN0IHJlcXVpcmVzIHBhY2thZ2UtbWFuYWdlbWVudCB0byBiZSBpbiBJTUFHRV9GRUFUVVJFUycpCisgICAgQHNraXBJZk5vdERhdGFWYXIoJ0lNQUdFX1BLR1RZUEUnLCAnZGViJywKKyAgICAgICAgICAgICAgICAgICAgICAnREVCIGlzIG5vdCB0aGUgcHJpbWFyeSBwYWNrYWdlIG1hbmFnZXInKQorICAgIEBPRUhhc1BhY2thZ2UoWydhcHQnXSkKKyAgICBkZWYgdGVzdF9hcHRfaW5zdGFsbF9mcm9tX3JlcG8oc2VsZik6CisgICAgICAgIHNlbGYuc2V0dXBfc291cmNlX2NvbmZpZ19mb3JfcGFja2FnZV9pbnN0YWxsKCkKKyAgICAgICAgc2VsZi5wa2coJ3VwZGF0ZScpCisgICAgICAgIHNlbGYucGtnKCdyZW1vdmUgLS15ZXMgcnVuLXBvc3RpbnN0cy1kZXYnKQorICAgICAgICBzZWxmLnBrZygnaW5zdGFsbCAtLXllcyAtLWFsbG93LXVuYXV0aGVudGljYXRlZCBydW4tcG9zdGluc3RzLWRldicpCisgICAgICAgIHNlbGYuY2xlYW51cF9zb3VyY2VfY29uZmlnX2Zvcl9wYWNrYWdlX2luc3RhbGwoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9naS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZ2kucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkwNzNlNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZ2kucHkKQEAgLTAsMCArMSwxNSBAQAoraW1wb3J0IG9zCisKK2Zyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcworZnJvbSBvZXFhLnJ1bnRpbWUuZGVjb3JhdG9yLnBhY2thZ2UgaW1wb3J0IE9FSGFzUGFja2FnZQorCitjbGFzcyBHT2JqZWN0SW50cm9zcGVjdGlvblRlc3QoT0VSdW50aW1lVGVzdENhc2UpOgorCisgICAgQE9FVGVzdERlcGVuZHMoWyJzc2guU1NIVGVzdC50ZXN0X3NzaCJdKQorICAgIEBPRUhhc1BhY2thZ2UoWyJweXRob24zLXB5Z29iamVjdCJdKQorICAgIGRlZiB0ZXN0X3B5dGhvbihzZWxmKToKKyAgICAgICAgc2NyaXB0ID0gIiIiZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHT2JqZWN0OyBwcmludChHT2JqZWN0Lm1hcmt1cF9lc2NhcGVfdGV4dCgiPHRlc3RpbmcmdGVzdGluZz4iKSkiIiIKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oInB5dGhvbjMgLWMgJyVzJyIgJSBzY3JpcHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9IlB5dGhvbiBmYWlsZWQgKCVzKSIgJSAob3V0cHV0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICImbHQ7dGVzdGluZyZhbXA7dGVzdGluZyZndDsiLCBtc2c9IlVuZXhwZWN0ZWQgb3V0cHV0ICglcykiICUgb3V0cHV0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9rZXJuZWxtb2R1bGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2tlcm5lbG1vZHVsZS5weQppbmRleCAxMWFkN2I3Li5kZTFhNWFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2tlcm5lbG1vZHVsZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2tlcm5lbG1vZHVsZS5weQpAQCAtMjgsNyArMjgsNyBAQAogICAgIEBPRVRlc3REZXBlbmRzKFsnZ2NjLkdjY0NvbXBpbGVUZXN0LnRlc3RfZ2NjX2NvbXBpbGUnXSkKICAgICBkZWYgdGVzdF9rZXJuZWxfbW9kdWxlKHNlbGYpOgogICAgICAgICBjbWRzID0gWwotICAgICAgICAgICAgJ2NkIC91c3Ivc3JjL2tlcm5lbCAmJiBtYWtlIHNjcmlwdHMnLAorICAgICAgICAgICAgJ2NkIC91c3Ivc3JjL2tlcm5lbCAmJiBtYWtlIHNjcmlwdHMgcHJlcGFyZScsCiAgICAgICAgICAgICAnY2QgL3RtcCAmJiBtYWtlJywKICAgICAgICAgICAgICdjZCAvdG1wICYmIGluc21vZCBoZWxsb21vZC5rbycsCiAgICAgICAgICAgICAnbHNtb2QgfCBncmVwIGhlbGxvbW9kJywKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb3BrZy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb3BrZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzFlZTA2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5CkBAIC0wLDAgKzEsNDcgQEAKK2ltcG9ydCBvcworZnJvbSBvZXFhLnV0aWxzLmh0dHBzZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2aWNlCitmcm9tIG9lcWEucnVudGltZS5jYXNlIGltcG9ydCBPRVJ1bnRpbWVUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdERhdGFWYXIsIHNraXBJZk5vdEZlYXR1cmUKK2Zyb20gb2VxYS5ydW50aW1lLmRlY29yYXRvci5wYWNrYWdlIGltcG9ydCBPRUhhc1BhY2thZ2UKKworY2xhc3MgT3BrZ1Rlc3QoT0VSdW50aW1lVGVzdENhc2UpOgorCisgICAgZGVmIHBrZyhzZWxmLCBjb21tYW5kLCBleHBlY3RlZCA9IDApOgorICAgICAgICBjb21tYW5kID0gJ29wa2cgJXMnICUgY29tbWFuZAorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjb21tYW5kLCAxNTAwKQorICAgICAgICBtZXNzYWdlID0gb3MubGluZXNlcC5qb2luKFtjb21tYW5kLCBvdXRwdXRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgZXhwZWN0ZWQsIG1lc3NhZ2UpCisgICAgICAgIHJldHVybiBvdXRwdXQKKworY2xhc3MgT3BrZ1JlcG9UZXN0KE9wa2dUZXN0KToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHNlcnZpY2VfcmVwbyA9IG9zLnBhdGguam9pbihjbHMudGMudGRbJ0RFUExPWV9ESVJfSVBLJ10sICdhbGwnKQorICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sIGNscy50Yy50YXJnZXQuc2VydmVyX2lwKQorICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0b3AoKQorCisgICAgZGVmIHNldHVwX3NvdXJjZV9jb25maWdfZm9yX3BhY2thZ2VfaW5zdGFsbChzZWxmKToKKyAgICAgICAgYXB0X2dldF9zb3VyY2Vfc2VydmVyID0gJ2h0dHA6Ly8lczolcy8nICUgKHNlbGYudGMudGFyZ2V0LnNlcnZlcl9pcCwgc2VsZi5yZXBvX3NlcnZlci5wb3J0KQorICAgICAgICBhcHRfZ2V0X3NvdXJjZXNsaXN0X2RpciA9ICcvZXRjL29wa2cvJworICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NkICVzOyBlY2hvIHNyYy9neiBhbGwgJXMgPj4gb3BrZy5jb25mJyAlIChhcHRfZ2V0X3NvdXJjZXNsaXN0X2RpciwgYXB0X2dldF9zb3VyY2Vfc2VydmVyKSkKKyAgICAgICAgCisgICAgZGVmIGNsZWFudXBfc291cmNlX2NvbmZpZ19mb3JfcGFja2FnZV9pbnN0YWxsKHNlbGYpOgorICAgICAgICBhcHRfZ2V0X3NvdXJjZXNsaXN0X2RpciA9ICcvZXRjL29wa2cvJworICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NkICVzOyBzZWQgLWkgIi9ec3JjL2QiIG9wa2cuY29uZicgJSAoYXB0X2dldF9zb3VyY2VzbGlzdF9kaXIpKQorICAgICAgICAKKyAgICBAc2tpcElmTm90RmVhdHVyZSgncGFja2FnZS1tYW5hZ2VtZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAnVGVzdCByZXF1aXJlcyBwYWNrYWdlLW1hbmFnZW1lbnQgdG8gYmUgaW4gSU1BR0VfRkVBVFVSRVMnKQorICAgIEBza2lwSWZOb3REYXRhVmFyKCdJTUFHRV9QS0dUWVBFJywgJ2lwaycsCisgICAgICAgICAgICAgICAgICAgICAgJ0lQSyBpcyBub3QgdGhlIHByaW1hcnkgcGFja2FnZSBtYW5hZ2VyJykKKyAgICBAT0VIYXNQYWNrYWdlKFsnb3BrZyddKQorICAgIGRlZiB0ZXN0X29wa2dfaW5zdGFsbF9mcm9tX3JlcG8oc2VsZik6CisgICAgICAgIHNlbGYuc2V0dXBfc291cmNlX2NvbmZpZ19mb3JfcGFja2FnZV9pbnN0YWxsKCkKKyAgICAgICAgc2VsZi5wa2coJ3VwZGF0ZScpCisgICAgICAgIHNlbGYucGtnKCdyZW1vdmUgcnVuLXBvc3RpbnN0cy1kZXYnKQorICAgICAgICBzZWxmLnBrZygnaW5zdGFsbCBydW4tcG9zdGluc3RzLWRldicpCisgICAgICAgIHNlbGYuY2xlYW51cF9zb3VyY2VfY29uZmlnX2Zvcl9wYWNrYWdlX2luc3RhbGwoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcHRlc3QucHkKaW5kZXggZWM4YzAzOC4uZjYwYTQzMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5CkBAIC00OCw5ICs0OCwxMiBAQAogCiAgICAgQE9FVGVzdElEKDE2MDApCiAgICAgQHNraXBJZk5vdEZlYXR1cmUoJ3B0ZXN0JywgJ1Rlc3QgcmVxdWlyZXMgcHRlc3QgdG8gYmUgaW4gRElTVFJPX0ZFQVRVUkVTJykKLSAgICBAc2tpcElmTm90RmVhdHVyZSgncHRlc3QtcGtncycsICdUZXN0IHJlcXVpcmVzIHB0ZXN0LXBrZ3MgdG8gYmUgaW4gSU1BR0VfRkVBVFVSRVMnKQogICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKICAgICBkZWYgdGVzdF9wdGVzdHJ1bm5lcihzZWxmKToKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3doaWNoIHB0ZXN0LXJ1bm5lcicsIDApCisgICAgICAgIGlmIHN0YXR1cyAhPSAwOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTm8gLXB0ZXN0IHBhY2thZ2VzIGFyZSBpbnN0YWxsZWQgaW4gdGhlIGltYWdlIikKKwogICAgICAgICBpbXBvcnQgZGF0ZXRpbWUKIAogICAgICAgICB0ZXN0X2xvZ19kaXIgPSBzZWxmLnRkLmdldCgnVEVTVF9MT0dfRElSJywgJycpCkBAIC04MCwzICs4MywxMSBAQAogICAgICAgICAgICAgIyBSZW1vdmUgdGhlIG9sZCBsaW5rIHRvIGNyZWF0ZSBhIG5ldyBvbmUKICAgICAgICAgICAgIG9zLnJlbW92ZShwdGVzdF9sb2dfZGlyX2xpbmspCiAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5iYXNlbmFtZShwdGVzdF9sb2dfZGlyKSwgcHRlc3RfbG9nX2Rpcl9saW5rKQorCisgICAgICAgIGZhaWxlZF90ZXN0cyA9IHt9CisgICAgICAgIGZvciBzZWN0aW9uIGluIHBhcnNlX3Jlc3VsdC5yZXN1bHRfZGljdDoKKyAgICAgICAgICAgIGZhaWxlZF90ZXN0Y2FzZXMgPSBbIHRlc3QgZm9yIHRlc3QsIHJlc3VsdCBpbiBwYXJzZV9yZXN1bHQucmVzdWx0X2RpY3Rbc2VjdGlvbl0gaWYgcmVzdWx0ID09ICdmYWlsJyBdCisgICAgICAgICAgICBpZiBmYWlsZWRfdGVzdGNhc2VzOgorICAgICAgICAgICAgICAgIGZhaWxlZF90ZXN0c1tzZWN0aW9uXSA9IGZhaWxlZF90ZXN0Y2FzZXMKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZhaWxlZF90ZXN0cywgbXNnID0gIkZhaWxlZCBwdGVzdHM6ICVzIiAlKHN0cihmYWlsZWRfdGVzdHMpKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc3RhcC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc3RhcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzcyOGJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9zdGFwLnB5CkBAIC0wLDAgKzEsMzMgQEAKK2ltcG9ydCBvcworCitmcm9tIG9lcWEucnVudGltZS5jYXNlIGltcG9ydCBPRVJ1bnRpbWVUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdEZlYXR1cmUKKworY2xhc3MgU3RhcFRlc3QoT0VSdW50aW1lVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKGNscy50Yy5ydW50aW1lX2ZpbGVzX2RpciwgJ2hlbGxvLnN0cCcpCisgICAgICAgIGRzdCA9ICcvdG1wL2hlbGxvLnN0cCcKKyAgICAgICAgY2xzLnRjLnRhcmdldC5jb3B5VG8oc3JjLCBkc3QpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBmaWxlcyA9ICcvdG1wL2hlbGxvLnN0cCcKKyAgICAgICAgY2xzLnRjLnRhcmdldC5ydW4oJ3JtICVzJyAlIGZpbGVzKQorCisgICAgQE9FVGVzdElEKDE2NTIpCisgICAgQHNraXBJZk5vdEZlYXR1cmUoJ3Rvb2xzLXByb2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgICdUZXN0IHJlcXVpcmVzIHRvb2xzLXByb2ZpbGUgdG8gYmUgaW4gSU1BR0VfRkVBVFVSRVMnKQorICAgIEBPRVRlc3REZXBlbmRzKFsna2VybmVsbW9kdWxlLktlcm5lbE1vZHVsZVRlc3QudGVzdF9rZXJuZWxfbW9kdWxlJ10pCisgICAgZGVmIHRlc3Rfc3RhcChzZWxmKToKKyAgICAgICAgY21kcyA9IFsKKyAgICAgICAgICAgICdjZCAvdXNyL3NyYy9rZXJuZWwgJiYgbWFrZSBzY3JpcHRzIHByZXBhcmUnLAorICAgICAgICAgICAgJ2NkIC9saWIvbW9kdWxlcy9gdW5hbWUgLXJgICYmIChpZiBbICEgLUwgYnVpbGQgXTsgdGhlbiBsbiAtcyAvdXNyL3NyYy9rZXJuZWwgYnVpbGQ7IGZpKScsCisgICAgICAgICAgICAnc3RhcCAtLWRpc2FibGUtY2FjaGUgLURTVFBfTk9fVkVSUkVMX0NIRUNLIC90bXAvaGVsbG8uc3RwJworICAgICAgICAgICAgXQorICAgICAgICBmb3IgY21kIGluIGNtZHM6CisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQsIDkwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9J1xuJy5qb2luKFtjbWQsIG91dHB1dF0pKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9maWxlcy9oZWxsby5zdHAgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2ZpbGVzL2hlbGxvLnN0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjc3MTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9maWxlcy9oZWxsby5zdHAKQEAgLTAsMCArMSBAQAorcHJvYmUgb25lc2hvdCB7IHByaW50bG4oImhlbGxvIHdvcmxkIikgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYXJjaGl2ZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weQppbmRleCBmNjFhNTIyLi4wYTZkNGUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weQpAQCAtMTE2LDMgKzExNiwxNiBAQAogCiAgICAgICAgIGV4Y2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX3RhcmdldCArICcvJXMtKicgJSB0YXJnZXRfcmVjaXBlc1sxXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhjbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGV4Y2x1ZGVkLicgJSB0YXJnZXRfcmVjaXBlc1sxXSkKKworCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9zcnBtX21vZGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgaW4gc3JwbSBtb2RlLCB0aGUgYWRkZWQgcmVjaXBlIGRlcGVuZGVuY2llcyBhdCBsZWFzdCBleGlzdC93b3JrIFtZT0NUTyAjMTExMjFdCisgICAgICAgICIiIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTU9ERVtzcnBtXSA9ICIxIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBiaXRiYWtlKCctbiBjb3JlLWltYWdlLXNhdG8nKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JidGVzdHMucHkKaW5kZXggNGM4MjA0OS4uMzUwNjE0OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5CkBAIC02NCwxNSArNjQsMTQgQEAKIAogICAgIEBPRVRlc3RJRCgxMDgpCiAgICAgZGVmIHRlc3RfaW52YWxpZF9wYXRjaChzZWxmKToKLSAgICAgICAgIyBUaGlzIHBhdGNoIGFscmVhZHkgZXhpc3RzIGluIFNSQ19VUkkgc28gYWRkaW5nIGl0IGFnYWluIHdpbGwgY2F1c2UgdGhlCi0gICAgICAgICMgcGF0Y2ggdG8gZmFpbC4KLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ21hbicsICdTUkNfVVJJICs9ICJmaWxlOi8vbWFuLTEuNWgxLW1ha2UucGF0Y2giJykKKyAgICAgICAgIyBUaGlzIHBhdGNoIHNob3VsZCBmYWlsIHRvIGFwcGx5LgorICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuLWRiJywgJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiJcblNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVRlc3QtcGF0Y2gtaGVyZS5wYXRjaCInKQogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiIikKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbWFuIC1jIHBhdGNoJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ21hbicpCi0gICAgICAgIGJpdGJha2UoJy1jY2xlYW4gbWFuJykKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbWFuLWRiIC1jIHBhdGNoJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ21hbi1kYicpCisgICAgICAgIGJpdGJha2UoJy1jY2xlYW4gbWFuLWRiJykKICAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXN1bHQsICJGdW5jdGlvbiBmYWlsZWQ6IHBhdGNoX2RvX3BhdGNoIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiRVJST1I6IiksIG1zZyA9ICJSZXBlYXRlZCBwYXRjaCBhcHBsaWNhdGlvbiBkaWRuJ3QgZmFpbC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIkVSUk9SOiIpLCBtc2cgPSAiSW5jb3JyZWN0bHkgZm9ybWVkIHBhdGNoIGFwcGxpY2F0aW9uIGRpZG4ndCBmYWlsLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKIAogICAgIEBPRVRlc3RJRCgxMzU0KQogICAgIGRlZiB0ZXN0X2ZvcmNlX3Rhc2tfMShzZWxmKToKQEAgLTEzMiwxNyArMTMxLDE3IEBACiAgICAgQE9FVGVzdElEKDE2OCkKICAgICBkZWYgdGVzdF9pbnZhbGlkX3JlY2lwZV9zcmNfdXJpKHNlbGYpOgogICAgICAgICBkYXRhID0gJ1NSQ19VUkkgPSAiZmlsZTovL2ludmFsaWQiJwotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuJywgZGF0YSkKKyAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ21hbi1kYicsIGRhdGEpCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIkRMX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKIFNTVEFURV9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCiBJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIKICIiIikKICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImRvd25sb2FkLXNlbGZ0ZXN0IikpCiAKLSAgICAgICAgYml0YmFrZSgnLWNjbGVhbmFsbCBtYW4nKQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctYyBmZXRjaCBtYW4nLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIGJpdGJha2UoJy1jY2xlYW5hbGwgbWFuJykKLSAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCdtYW4nKQorICAgICAgICBiaXRiYWtlKCctY2NsZWFuYWxsIG1hbi1kYicpCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1jIGZldGNoIG1hbi1kYicsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgYml0YmFrZSgnLWNjbGVhbmFsbCBtYW4tZGInKQorICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ21hbi1kYicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgbXNnPSJDb21tYW5kIHN1Y2NlZGVkIHdoZW4gaXQgc2hvdWxkIGhhdmUgZmFpbGVkLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdGZXRjaGVyIGZhaWx1cmU6IFVuYWJsZSB0byBmaW5kIGZpbGUgZmlsZTovL2ludmFsaWQgYW55d2hlcmUuIFRoZSBwYXRocyB0aGF0IHdlcmUgc2VhcmNoZWQgd2VyZTonIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJcImludmFsaWRcIiBmaWxlIFwKIGRvZXNuJ3QgZXhpc3QsIHlldCBubyBlcnJvciBtZXNzYWdlIGVuY291bnRlcmVkLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKQEAgLTIyMiw5ICsyMjEsOSBAQAogSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiCiAiIiIpCiAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJkb3dubG9hZC1zZWxmdGVzdCIpKQotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuJywiXG5kb19mYWlsX3Rhc2sgKCkge1xuZXhpdCAxIFxufVxuXG5hZGR0YXNrIGRvX2ZhaWxfdGFzayBiZWZvcmUgZG9fZmV0Y2hcbiIgKQotICAgICAgICBydW5DbWQoJ2JpdGJha2UgLWMgY2xlYW5hbGwgbWFuIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLWMgdW5wYWNrIC1rIG1hbiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuLWRiJywiXG5kb19mYWlsX3Rhc2sgKCkge1xuZXhpdCAxIFxufVxuXG5hZGR0YXNrIGRvX2ZhaWxfdGFzayBiZWZvcmUgZG9fZmV0Y2hcbiIgKQorICAgICAgICBydW5DbWQoJ2JpdGJha2UgLWMgY2xlYW5hbGwgbWFuLWRiIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLWMgdW5wYWNrIC1rIG1hbi1kYiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgaWdub3JlX3N0YXR1cz1UcnVlKQogICAgICAgICBlcnJvcnBvcyA9IHJlc3VsdC5vdXRwdXQuZmluZCgnRVJST1I6IEZ1bmN0aW9uIGZhaWxlZDogZG9fZmFpbF90YXNrJykKICAgICAgICAgbWFudmVyID0gcmUuc2VhcmNoKCJOT1RFOiByZWNpcGUgeGN1cnNvci10cmFuc3BhcmVudC10aGVtZS0oLio/KTogdGFzayBkb191bnBhY2s6IFN0YXJ0ZWQiLCByZXN1bHQub3V0cHV0KQogICAgICAgICBjb250aW51ZXBvcyA9IHJlc3VsdC5vdXRwdXQuZmluZCgnTk9URTogcmVjaXBlIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUtJXM6IHRhc2sgZG9fdW5wYWNrOiBTdGFydGVkJyAlIG1hbnZlci5ncm91cCgxKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkb3B0aW9ucy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkb3B0aW9ucy5weQppbmRleCBjZjIyMWMzLi5lNjBlMzJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9idWlsZG9wdGlvbnMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYnVpbGRvcHRpb25zLnB5CkBAIC0xNjQsMyArMTY0LDE3IEBACiAgICAgICAgIHNyY19maWxlX2dsb2IgPSBzdHIocGtnc19wYXRoWzBdKSArICIveGN1cnNvciouc3JjLnJwbSIKICAgICAgICAgdGFyX2ZpbGVfZ2xvYiA9IHN0cihwa2dzX3BhdGhbMF0pICsgIi94Y3Vyc29yKi50YXIuZ3oiCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgoZy5nbG9iKHNyY19maWxlX2dsb2IpIGFuZCBnLmdsb2IodGFyX2ZpbGVfZ2xvYikpLCAiQ291bGRuJ3QgZmluZCAuc3JjLnJwbSBhbmQgLnRhci5neiBmaWxlcyB1bmRlciAlcy9hbGxhcmNoKi94Y3Vyc29yKiIgJSBkZXBsb3lfZGlyX3NyYykKKworY2xhc3MgVG9vbGNoYWluT3B0aW9ucyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfdG9vbGNoYWluX2ZvcnRyYW4oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHdoZXRoZXIgd2UgY2FuIGVuYWJsZSBhbmQgYnVpbGQgZm9ydHJhbiBhbmQgaXRzIHN1cHBvcnRpbmcgbGlicmFyaWVzCisgICAgICAgICIiIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0ZPUlRSQU5fZm9yY2V2YXJpYWJsZSA9ICIsZm9ydHJhbiJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1JVTlRJTUVUQVJHRVRfYXBwZW5kX3BuLWdjYy1ydW50aW1lID0gIiBsaWJxdWFkbWF0aCJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgYml0YmFrZSgnZ2NjLXJ1bnRpbWUgbGliZ2ZvcnRyYW4nKQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQppbmRleCA0MzI4MGNkLi5kNWI2YTQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKQEAgLTE3NCw3ICsxNzQsNyBAQAogICAgIGRlZiB0ZXN0X2NyZWF0ZV93b3Jrc3BhY2Uoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvd29ya3NwYWNlJyBub3QgaW4gcmVzdWx0Lm91dHB1dCwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgbGF5ZXIgaW4gYmJsYXllcnMuY29uZicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnXG53b3Jrc3BhY2UnIG5vdCBpbiByZXN1bHQub3V0cHV0LCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBsYXllciBpbiBiYmxheWVycy5jb25mJykKICAgICAgICAgIyBUcnkgY3JlYXRpbmcgYSB3b3Jrc3BhY2UgbGF5ZXIgd2l0aCBhIHNwZWNpZmljIHBhdGgKICAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCkBAIC02MTEsNyArNjExLDcgQEAKICAgICBAT0VUZXN0SUQoMTE2NSkKICAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeV9naXQoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICB0ZXN0cmVjaXBlID0gJ21rZWxmaW1hZ2UnCisgICAgICAgIHRlc3RyZWNpcGUgPSAncHNwbGFzaCcKICAgICAgICAgc3JjX3VyaSA9IGdldF9iYl92YXIoJ1NSQ19VUkknLCB0ZXN0cmVjaXBlKQogICAgICAgICBzZWxmLmFzc2VydEluKCdnaXQ6Ly8nLCBzcmNfdXJpLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBiZSBhIGdpdCByZWNpcGUnICUgdGVzdHJlY2lwZSkKICAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZQpAQCAtNjIzLDkgKzYyMyw5IEBACiAgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCiAgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdHJlY2lwZSkKICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUnKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZS5hbScpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQogICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQuIGRldnRvb2wgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBtYXRjaGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2FwcGVuZHMnLCAnbWtlbGZpbWFnZV8qLmJiYXBwZW5kJykpCisgICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnYXBwZW5kcycsICdwc3BsYXNoXyouYmJhcHBlbmQnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZXMsICdiYmFwcGVuZCBub3QgY3JlYXRlZCcpCiAgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKQEAgLTg5OSw2ICs4OTksNyBAQAogICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX1BBVFRFUk5fb2VzZWxmdGVzdHRlbXBsYXllciA9ICJeJHtMQVlFUkRJUn0vIlxuJykKICAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QUklPUklUWV9vZXNlbGZ0ZXN0dGVtcGxheWVyID0gIjk5OSJcbicpCiAgICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVfUEFUVEVSTl9JR05PUkVfRU1QVFlfb2VzZWxmdGVzdHRlbXBsYXllciA9ICIxIlxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ0xBWUVSU0VSSUVTX0NPTVBBVF9vZXNlbGZ0ZXN0dGVtcGxheWVyID0gIiR7TEFZRVJTRVJJRVNfQ09NUEFUX2NvcmV9IlxuJykKICAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzIHx8IHRydWUnICUgdGVtcGxheWVyZGlyKQogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIsIGN3ZD1zZWxmLmJ1aWxkZGlyKQogICAgICAgICAjIENyZWF0ZSB0aGUgYmJhcHBlbmQKQEAgLTk4Nyw4ICs5ODgsMTIgQEAKICAgICBAT0VUZXN0SUQoMTM3MSkKICAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfbG9jYWxfZmlsZXNfMihzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgbG9jYWwgc291cmNlIGZpbGVzIHN1cHBvcnQgd2hlbiBvZS1sb2NhbC1maWxlcyBpcyBpbiBHaXQiIiIKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdsem8nCisgICAgICAgIHRlc3RyZWNpcGUgPSAnZGV2dG9vbC10ZXN0LWxvY2FsJwogICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCisgICAgICAgIHJlY2lwZWRpciA9IG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLicsIGN3ZD1yZWNpcGVkaXIpCisgICAgICAgIGlmIHJlc3VsdC5vdXRwdXQuc3RyaXAoKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUmVjaXBlIGRpcmVjdG9yeSBmb3IgJXMgY29udGFpbnMgdW5jb21taXR0ZWQgY2hhbmdlcycgJSB0ZXN0cmVjaXBlKQogICAgICAgICAjIFNldHVwIHNyY3RyZWUgZm9yIG1vZGlmeWluZyB0aGUgcmVjaXBlCiAgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQpAQCAtMTAwMiw5ICsxMDA3LDkgQEAKICAgICAgICAgcnVuQ21kKCdnaXQgYWRkIG9lLWxvY2FsLWZpbGVzJywgY3dkPXRlbXBkaXIpCiAgICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIGxvY2FsIHNvdXJjZXMiJywgY3dkPXRlbXBkaXIpCiAgICAgICAgICMgRWRpdCAvIGNvbW1pdCBsb2NhbCBzb3VyY2VzCi0gICAgICAgIHJ1bkNtZCgnZWNobyAiIyBGb29iYXIiID4+IG9lLWxvY2FsLWZpbGVzL2FjaW5jbHVkZS5tNCcsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2VjaG8gIiMgRm9vYmFyIiA+PiBvZS1sb2NhbC1maWxlcy9maWxlMScsIGN3ZD10ZW1wZGlyKQogICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLWFtICJFZGl0IGV4aXN0aW5nIGZpbGUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IHJtIG9lLWxvY2FsLWZpbGVzL3J1bi1wdGVzdCcsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBybSBvZS1sb2NhbC1maWxlcy9maWxlMicsIGN3ZD10ZW1wZGlyKQogICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLW0iUmVtb3ZlIGZpbGUiJywgY3dkPXRlbXBkaXIpCiAgICAgICAgIHJ1bkNtZCgnZWNobyAiRm9vIiA+IG9lLWxvY2FsLWZpbGVzL25ldy1sb2NhbCcsIGN3ZD10ZW1wZGlyKQogICAgICAgICBydW5DbWQoJ2dpdCBhZGQgb2UtbG9jYWwtZmlsZXMvbmV3LWxvY2FsJywgY3dkPXRlbXBkaXIpCkBAIC0xMDE2LDExICsxMDIxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpKQogICAgICAgICAjIENoZWNrb3V0IHVubW9kaWZpZWQgZmlsZSB0byB3b3JraW5nIGNvcHkgLT4gZGV2dG9vbCBzaG91bGQgc3RpbGwgcGljawogICAgICAgICAjIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGZyb20gSEVBRAotICAgICAgICBydW5DbWQoJ2dpdCBjaGVja291dCBIRUFEXiAtLSBvZS1sb2NhbC1maWxlcy9hY2luY2x1ZGUubTQnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgY2hlY2tvdXQgSEVBRF4gLS0gb2UtbG9jYWwtZmlsZXMvZmlsZTEnLCBjd2Q9dGVtcGRpcikKICAgICAgICAgcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKICAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMkJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgTScsICcuKi9hY2luY2x1ZGUubTQkJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJyBEJywgJy4qL3J1bi1wdGVzdCQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnIE0nLCAnLiovZmlsZTEkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJyBEJywgJy4qL2ZpbGUyJCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi9uZXctbG9jYWwkJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qLzAwMDEtQWRkLW5ldy1maWxlLnBhdGNoJCcpXQogICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5CmluZGV4IDEyNTQwYWQuLjdiMjgwMDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weQpAQCAtOSw2ICs5LDExIEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgc3VwZXIoRGlzdHJvZGF0YSwgY2xzKS5zZXRVcENsYXNzKCkKKyAgICAgICAgZmVhdHVyZSA9ICdJTkhFUklUICs9ICJkaXN0cm9kYXRhIlxuJworICAgICAgICBmZWF0dXJlICs9ICdMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCArPSAiIGNvbW1lcmNpYWwiXG4nCisKKyAgICAgICAgY2xzLndyaXRlX2NvbmZpZyhjbHMsIGZlYXR1cmUpCisgICAgICAgIGJpdGJha2UoJy1jIGNoZWNrcGtnIHdvcmxkJykKIAogICAgIEBPRVRlc3RJRCgxOTAyKQogICAgIGRlZiB0ZXN0X2NoZWNrcGtnKHNlbGYpOgpAQCAtMTgsMTEgKzIzLDYgQEAKICAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKICAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CiAgICAgICAgICIiIgotICAgICAgICBmZWF0dXJlID0gJ0lOSEVSSVQgKz0gImRpc3Ryb2RhdGEiXG4nCi0gICAgICAgIGZlYXR1cmUgKz0gJ0xJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUICs9ICIgY29tbWVyY2lhbCJcbicKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlKQotICAgICAgICBiaXRiYWtlKCctYyBjaGVja3BrZyB3b3JsZCcpCiAgICAgICAgIGNoZWNrcGtnX3Jlc3VsdCA9IG9wZW4ob3MucGF0aC5qb2luKGdldF9iYl92YXIoIkxPR19ESVIiKSwgImNoZWNrcGtnLmNzdiIpKS5yZWFkbGluZXMoKVsxOl0KICAgICAgICAgcmVncmVzc2VkX2ZhaWx1cmVzID0gW3BrZ19kYXRhWzBdIGZvciBwa2dfZGF0YSBpbiBbcGtnX2xpbmUuc3BsaXQoJ1x0JykgZm9yIHBrZ19saW5lIGluIGNoZWNrcGtnX3Jlc3VsdF0gaWYgcGtnX2RhdGFbMTFdID09ICdVTktOT1dOX0JST0tFTiddCiAgICAgICAgIHJlZ3Jlc3NlZF9zdWNjZXNzZXMgPSBbcGtnX2RhdGFbMF0gZm9yIHBrZ19kYXRhIGluIFtwa2dfbGluZS5zcGxpdCgnXHQnKSBmb3IgcGtnX2xpbmUgaW4gY2hlY2twa2dfcmVzdWx0XSBpZiBwa2dfZGF0YVsxMV0gPT0gJ0tOT1dOX0JST0tFTiddCkBAIC00MCwzICs0MCw2MCBAQAogYnV0IHRoZWlyIHJlY2lwZXMgY2xhaW0gb3RoZXJ3aXNlIGJ5IHNldHRpbmcgVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOLiBQbGVhc2UgcmVtb3ZlIHRoYXQgbGluZSBmcm9tIHRoZSByZWNpcGVzLgogIiIiICsgIlxuIi5qb2luKHJlZ3Jlc3NlZF9zdWNjZXNzZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ocmVncmVzc2VkX2ZhaWx1cmVzKSA9PSAwIGFuZCBsZW4ocmVncmVzc2VkX3N1Y2Nlc3NlcykgPT0gMCwgbXNnKQorCisgICAgZGVmIHRlc3RfbWFpbnRhaW5lcnMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IG9lLWNvcmUgcmVjaXBlcyBoYXZlIGEgbWFpbnRhaW5lcgorICAgICAgICBFeHBlY3RlZDogICAgQWxsIG9lLWNvcmUgcmVjaXBlcyAoZXhjZXB0IGEgZmV3IHNwZWNpYWwgc3RhdGljL3Rlc3Rpbmcgb25lcykgc2hvdWxkIGhhdmUgYSBtYWludGFpbmVyIGxpc3RlZCBpbiBtYWludGFpbmVycy5pbmMgZmlsZS4KKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICBkZWYgaXNfZXhjZXB0aW9uKHBrZyk6CisgICAgICAgICAgICBleGNlcHRpb25zID0gWyJwYWNrYWdlZ3JvdXAtIiwgImluaXRyYW1mcy0iLCAic3lzdGVtZC1tYWNoaW5lLXVuaXRzIiwgInRhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkiXQorICAgICAgICAgICAgZm9yIGkgaW4gZXhjZXB0aW9uczoKKyAgICAgICAgICAgICAgICAgaWYgaSBpbiBwa2c6CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgZGVmIGlzX2luX29lX2NvcmUocmVjaXBlLCByZWNpcGVzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZWNpcGUgaW4gcmVjaXBlcy5rZXlzKCksICJSZWNpcGUgJXMgd2FzIG5vdCBpbiAnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzJyBvdXRwdXQiICUocmVjaXBlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ocmVjaXBlc1tyZWNpcGVdKSA+IDAsICInYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzJyBjb3VsZCBub3QgZGV0ZXJtaW5lIHdoYXQgbGF5ZXIocykgYSByZWNpcGUgJXMgaXMgaW4iICUocmVjaXBlKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZWNpcGVzW3JlY2lwZV0uaW5kZXgoJ21ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBkZWYgZ2V0X3JlY2lwZV9sYXllcnMoKToKKyAgICAgICAgICAgIGltcG9ydCByZQorCisgICAgICAgICAgICByZWNpcGVzID0ge30KKyAgICAgICAgICAgIHJlY2lwZV9yZWdleCA9IHJlLmNvbXBpbGUoJ14oP1A8bmFtZT4uKik6JCcpCisgICAgICAgICAgICBsYXllcl9yZWdleCA9IHJlLmNvbXBpbGUoJ14gICg/UDxuYW1lPlxTKikgKycpCisgICAgICAgICAgICBvdXRwdXQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcycpLm91dHB1dAorICAgICAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0KCdcbicpOgorICAgICAgICAgICAgICAgIHJlY2lwZV9uYW1lX29iaiA9IHJlY2lwZV9yZWdleC5zZWFyY2gobGluZSkKKyAgICAgICAgICAgICAgICBpZiByZWNpcGVfbmFtZV9vYmo6CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZV9uYW1lID0gcmVjaXBlX25hbWVfb2JqLmdyb3VwKCduYW1lJykKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlc1tyZWNpcGVfbmFtZV0gPSBbXQorICAgICAgICAgICAgICAgIHJlY2lwZV9sYXllcl9vYmogPSBsYXllcl9yZWdleC5zZWFyY2gobGluZSkKKyAgICAgICAgICAgICAgICBpZiByZWNpcGVfbGF5ZXJfb2JqOgorICAgICAgICAgICAgICAgICAgICBsYXllcl9uYW1lID0gcmVjaXBlX2xheWVyX29iai5ncm91cCgnbmFtZScpCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXNbcmVjaXBlX25hbWVdLmFwcGVuZChsYXllcl9uYW1lKQorICAgICAgICAgICAgcmV0dXJuIHJlY2lwZXMKKworICAgICAgICBjaGVja3BrZ19yZXN1bHQgPSBvcGVuKG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCJMT0dfRElSIiksICJjaGVja3BrZy5jc3YiKSkucmVhZGxpbmVzKClbMTpdCisgICAgICAgIHJlY2lwZXNfbGF5ZXJzID0gZ2V0X3JlY2lwZV9sYXllcnMoKQorICAgICAgICBub19tYWludGFpbmVyX2xpc3QgPSBbcGtnX2RhdGFbMF0gZm9yIHBrZ19kYXRhIGluIFtwa2dfbGluZS5zcGxpdCgnXHQnKSBmb3IgcGtnX2xpbmUgaW4gY2hlY2twa2dfcmVzdWx0XSBcCisgICAgICAgICAgICBpZiBwa2dfZGF0YVsxNF0gPT0gJycgYW5kIGlzX2luX29lX2NvcmUocGtnX2RhdGFbMF0sIHJlY2lwZXNfbGF5ZXJzKSBhbmQgbm90IGlzX2V4Y2VwdGlvbihwa2dfZGF0YVswXSldCisgICAgICAgIG1zZyA9ICIiIgorVGhlIGZvbGxvd2luZyBwYWNrYWdlcyBkbyBub3QgaGF2ZSBhIG1haW50YWluZXIgYXNzaWduZWQgdG8gdGhlbS4gUGxlYXNlIGFkZCBhbiBlbnRyeSB0byBtZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jIGZpbGUuCisiIiIgKyAiXG4iLmpvaW4obm9fbWFpbnRhaW5lcl9saXN0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKG5vX21haW50YWluZXJfbGlzdCkgPT0gMCwgbXNnKQorCisgICAgICAgIHdpdGhfbWFpbnRhaW5lcl9saXN0ID0gW3BrZ19kYXRhWzBdIGZvciBwa2dfZGF0YSBpbiBbcGtnX2xpbmUuc3BsaXQoJ1x0JykgZm9yIHBrZ19saW5lIGluIGNoZWNrcGtnX3Jlc3VsdF0gXAorICAgICAgICAgICAgaWYgcGtnX2RhdGFbMTRdICE9ICcnIGFuZCBpc19pbl9vZV9jb3JlKHBrZ19kYXRhWzBdLCByZWNpcGVzX2xheWVycykgYW5kIG5vdCBpc19leGNlcHRpb24ocGtnX2RhdGFbMF0pXQorICAgICAgICBtc2cgPSAiIiIKK1RoZSBsaXN0IG9mIG9lLWNvcmUgcGFja2FnZXMgd2l0aCBtYWludGFpbmVycyBpcyBlbXB0eS4gVGhpcyBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgdGVzdCBoYXMgcmVncmVzc2VkIGFuZCBuZWVkcyBmaXhpbmcuCisiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbih3aXRoX21haW50YWluZXJfbGlzdCkgPiAwLCBtc2cpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9lZmlib290cGFydGl0aW9uLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZWZpYm9vdHBhcnRpdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzgzMjU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZWZpYm9vdHBhcnRpdGlvbi5weQpAQCAtMCwwICsxLDQ1IEBACisjIEJhc2VkIG9uIHJ1bnFlbXUucHkgdGVzdCBmaWxlCisjCisjIENvcHlyaWdodCAoYykgMjAxNyBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMKKworaW1wb3J0IHJlCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgcnVucWVtdSwgZ2V0X2JiX3ZhcgorCitjbGFzcyBHZW5lcmljRUZJVGVzdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgICIiIkVGSSBib290aW5nIHRlc3QgY2xhc3MiIiIKKworICAgIGJ1ZmZlciA9IFRydWUKKyAgICBjbWRfY29tbW9uID0gInJ1bnFlbXUgbm9ncmFwaGljIHNlcmlhbCB3aWMgb3ZtZiIKKyAgICBlZmlfcHJvdmlkZXIgPSAic3lzdGVtZC1ib290IgorICAgIGltYWdlID0gImNvcmUtaW1hZ2UtbWluaW1hbCIKKyAgICBtYWNoaW5lID0gInFlbXV4ODYtNjQiCisgICAgcmVjaXBlc19idWlsdCA9IEZhbHNlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKKyAgICAgICAgc3VwZXIoR2VuZXJpY0VGSVRlc3QsIHNlbGYpLnNldFVwTG9jYWwoc2VsZikKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhzZWxmLAorIiIiCitFRklfUFJPVklERVIgPSAiJXMiCitJTUFHRV9GU1RZUEVTX3BuLSVzX2FwcGVuZCA9ICIgd2ljIgorTUFDSElORSA9ICIlcyIKK01BQ0hJTkVfRkVBVFVSRVNfYXBwZW5kID0gIiBlZmkiCitXS1NfRklMRSA9ICJlZmktYm9vdGRpc2sud2tzLmluIgorSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIGdydWItZWZpIHN5c3RlbWQtYm9vdCBrZXJuZWwtaW1hZ2UtYnppbWFnZSIKKyIiIgorJSAoc2VsZi5lZmlfcHJvdmlkZXIsIHNlbGYuaW1hZ2UsIHNlbGYubWFjaGluZSkpCisgICAgICAgIGlmIG5vdCBzZWxmLnJlY2lwZXNfYnVpbHQ6CisgICAgICAgICAgICBiaXRiYWtlKCJvdm1mIikKKyAgICAgICAgICAgIGJpdGJha2Uoc2VsZi5pbWFnZSkKKyAgICAgICAgICAgIHNlbGYucmVjaXBlc19idWlsdCA9IFRydWUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZXN0X2Jvb3RfZWZpKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGdlbmVyaWMgYm9vdCBwYXJ0aXRpb24gd2l0aCBxZW11IiIiCisgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLm1hY2hpbmUpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLmltYWdlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXUucnVubmVyLmxvZ2dlZCwgIkZhaWxlZDogJXMiICUgY21kKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ290b29sY2hhaW4ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nb3Rvb2xjaGFpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTIzMjU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ290b29sY2hhaW4ucHkKQEAgLTAsMCArMSw2NyBAQAoraW1wb3J0IGdsb2IKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHRlbXBmaWxlCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhcnMKKworCitjbGFzcyBvZUdvVG9vbGNoYWluU2VsZlRlc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IGNhc2VzIGZvciBPRSdzIEdvIHRvb2xjaGFpbgorICAgICIiIgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfc2RrX2Vudmlyb25tZW50KHRtcGRpcl9TREtRQSk6CisgICAgICAgIHBhdHRlcm4gPSBvcy5wYXRoLmpvaW4odG1wZGlyX1NES1FBLCAiZW52aXJvbm1lbnQtc2V0dXAtKiIpCisgICAgICAgICMgRklYTUU6IHRoaXMgaXMgYSB2ZXJ5IG5haXZlIGltcGxlbWVudGF0aW9uCisgICAgICAgIHJldHVybiBnbG9iLmdsb2IocGF0dGVybilbMF0KKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X3Nka190b29sY2hhaW4oKToKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU0RLX0RFUExPWScsICdUT09MQ0hBSU5fT1VUUFVUTkFNRSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGEtZ28tdG9vbGNoYWluIikKKyAgICAgICAgc2RrX2RlcGxveSA9IGJiX3ZhcnNbJ1NES19ERVBMT1knXQorICAgICAgICB0b29sY2hhaW5fbmFtZSA9IGJiX3ZhcnNbJ1RPT0xDSEFJTl9PVVRQVVROQU1FJ10KKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZGtfZGVwbG95LCB0b29sY2hhaW5fbmFtZSArICIuc2giKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIob2VHb1Rvb2xjaGFpblNlbGZUZXN0LCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICBjbHMudG1wZGlyX1NES1FBID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J1NES1FBJykKKyAgICAgICAgY2xzLmdvX3BhdGggPSBvcy5wYXRoLmpvaW4oY2xzLnRtcGRpcl9TREtRQSwgImdvIikKKyAgICAgICAgIyBCdWlsZCB0aGUgU0RLIGFuZCBsb2NhdGUgaXQgaW4gREVQTE9ZRElSCisgICAgICAgIGJpdGJha2UoIm1ldGEtZ28tdG9vbGNoYWluIikKKyAgICAgICAgY2xzLnNka19wYXRoID0gb2VHb1Rvb2xjaGFpblNlbGZUZXN0LmdldF9zZGtfdG9vbGNoYWluKCkKKyAgICAgICAgIyBJbnN0YWxsIHRoZSBTREsgaW50byB0aGUgdG1wZGlyCisgICAgICAgIHJ1bkNtZCgic2ggJXMgLXkgLWQgXCIlc1wiIiAlIChjbHMuc2RrX3BhdGgsIGNscy50bXBkaXJfU0RLUUEpKQorICAgICAgICBjbHMuZW52X1NESyA9IG9lR29Ub29sY2hhaW5TZWxmVGVzdC5nZXRfc2RrX2Vudmlyb25tZW50KGNscy50bXBkaXJfU0RLUUEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBzaHV0aWwucm10cmVlKGNscy50bXBkaXJfU0RLUUEsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKyAgICAgICAgc3VwZXIob2VHb1Rvb2xjaGFpblNlbGZUZXN0LCBjbHMpLnRlYXJEb3duQ2xhc3MoKQorCisgICAgZGVmIHJ1bl9zZGtfZ29fY29tbWFuZChzZWxmLCBnb2NtZCk6CisgICAgICAgIGNtZCA9ICJjZCAlczsgIiAlIHNlbGYudG1wZGlyX1NES1FBCisgICAgICAgIGNtZCA9IGNtZCArICIuICVzOyAiICUgc2VsZi5lbnZfU0RLCisgICAgICAgIGNtZCA9IGNtZCArICJleHBvcnQgR09QQVRIPSVzOyAiICUgc2VsZi5nb19wYXRoCisgICAgICAgIGNtZCA9IGNtZCArICIke0NST1NTX0NPTVBJTEV9Z28gJXMiICUgZ29jbWQKKyAgICAgICAgcmV0dXJuIHJ1bkNtZChjbWQpLnN0YXR1cworCisgICAgZGVmIHRlc3RfZ29fZGVwX2J1aWxkKHNlbGYpOgorICAgICAgICBwcm9qID0gImdpdGh1Yi5jb20vZ29sYW5nIgorICAgICAgICBuYW1lID0gImRlcCIKKyAgICAgICAgdmVyID0gInYwLjMuMSIKKyAgICAgICAgYXJjaGl2ZSA9ICIudGFyLmd6IgorICAgICAgICB1cmwgPSAiaHR0cHM6Ly8lcy8lcy9hcmNoaXZlLyVzJXMiICUgKHByb2osIG5hbWUsIHZlciwgYXJjaGl2ZSkKKworICAgICAgICBydW5DbWQoImNkICVzOyB3Z2V0ICVzIiAlIChzZWxmLnRtcGRpcl9TREtRQSwgdXJsKSkKKyAgICAgICAgcnVuQ21kKCJjZCAlczsgdGFyIC14ZiAlcyIgJSAoc2VsZi50bXBkaXJfU0RLUUEsIHZlcithcmNoaXZlKSkKKyAgICAgICAgcnVuQ21kKCJta2RpciAtcCAlcy9zcmMvJXMiICUgKHNlbGYuZ29fcGF0aCwgcHJvaikpCisgICAgICAgIHJ1bkNtZCgibXYgJXMvZGVwLTAuMy4xICVzL3NyYy8lcy8lcyIKKyAgICAgICAgICAgICAgICUgKHNlbGYudG1wZGlyX1NES1FBLCBzZWxmLmdvX3BhdGgsIHByb2osIG5hbWUpKQorICAgICAgICByZXR2ID0gc2VsZi5ydW5fc2RrX2dvX2NvbW1hbmQoJ2J1aWxkICAlcy8lcy9jbWQvZGVwJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAocHJvaiwgbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0diwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9IlJ1bm5pbmcgZ28gYnVpbGQgZmFpbGVkIGZvciAlcyIgJSBuYW1lKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlZmVhdHVyZXMucHkKaW5kZXggMGZmYjY4Ni4uMDllMGIyMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CkBAIC0yMTEsNyArMjExLDcgQEAKICAgICAgICAgaW1hZ2VfbmFtZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCiAKICAgICAgICAgaW1nX3R5cGVzID0gW2l0eXBlIGZvciBpdHlwZSBpbiBnZXRfYmJfdmFyKCJJTUFHRV9UWVBFUyIsIGltYWdlX25hbWUpLnNwbGl0KCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0eXBlIG5vdCBpbiAoJ2NvbnRhaW5lcicsICdlbGYnLCAnbXVsdGl1YmknKV0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdHlwZSBub3QgaW4gKCdjb250YWluZXInLCAnZWxmJywgJ2YyZnMnLCAnbXVsdGl1YmknKV0KIAogICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyArPSAiJXMiXG4nXAogICAgICAgICAgICAgICAgICAnTUtVQklGU19BUkdTID89ICItbSAyMDQ4IC1lIDEyOTAyNCAtYyAyMDQ3IlxuJ1wKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfaWRlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWV0YV9pZGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRmOWQzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfaWRlLnB5CkBAIC0wLDAgKzEsNDkgQEAKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS5zZGsudXRpbHMuc2RrYnVpbGRwcm9qZWN0IGltcG9ydCBTREtCdWlsZFByb2plY3QKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhcnMsIHJ1bkNtZAorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBzaHV0aWwKKworY2xhc3MgTWV0YUlERShPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoTWV0YUlERSwgY2xzKS5zZXRVcENsYXNzKCkKKyAgICAgICAgYml0YmFrZSgnbWV0YS1pZGUtc3VwcG9ydCcpCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ01VTFRJTUFDSF9UQVJHRVRfU1lTJywgJ1RNUERJUicsICdDT1JFQkFTRSddKQorICAgICAgICBjbHMuZW52aXJvbm1lbnRfc2NyaXB0ID0gJ2Vudmlyb25tZW50LXNldHVwLSVzJyAlIGJiX3ZhcnNbJ01VTFRJTUFDSF9UQVJHRVRfU1lTJ10KKyAgICAgICAgY2xzLnRtcGRpciA9IGJiX3ZhcnNbJ1RNUERJUiddCisgICAgICAgIGNscy5lbnZpcm9ubWVudF9zY3JpcHRfcGF0aCA9ICclcy8lcycgJSAoY2xzLnRtcGRpciwgY2xzLmVudmlyb25tZW50X3NjcmlwdCkKKyAgICAgICAgY2xzLmNvcmViYXNlZGlyID0gYmJfdmFyc1snQ09SRUJBU0UnXQorICAgICAgICBjbHMudG1wZGlyX21ldGFpZGVRQSA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdtZXRhaWRlJykKKyAgICAgICAgCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgc2h1dGlsLnJtdHJlZShjbHMudG1wZGlyX21ldGFpZGVRQSwgaWdub3JlX2Vycm9ycz1UcnVlKQorICAgICAgICBzdXBlcihNZXRhSURFLCBjbHMpLnRlYXJEb3duQ2xhc3MoKQorCisgICAgQE9FVGVzdElEKDE5ODIpCisgICAgZGVmIHRlc3RfbWV0YV9pZGVfaGFkX2luc3RhbGxlZF9tZXRhX2lkZV9zdXBwb3J0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhzZWxmLmVudmlyb25tZW50X3NjcmlwdF9wYXRoKQorCisgICAgQE9FVGVzdElEKDE5ODMpCisgICAgZGVmIHRlc3RfbWV0YV9pZGVfY2FuX2NvbXBpbGVfY19wcm9ncmFtKHNlbGYpOgorICAgICAgICBydW5DbWQoJ2NwICVzL3Rlc3QuYyAlcycgJSAoc2VsZi50Yy5maWxlc19kaXIsIHNlbGYudG1wZGlyX21ldGFpZGVRQSkpCisgICAgICAgIHJ1bkNtZCgiY2QgJXM7IC4gJXM7ICRDQyB0ZXN0LmMgLWxtIiAlIChzZWxmLnRtcGRpcl9tZXRhaWRlUUEsIHNlbGYuZW52aXJvbm1lbnRfc2NyaXB0X3BhdGgpKQorICAgICAgICBjb21waWxlZF9maWxlID0gJyVzL2Eub3V0JyAlIHNlbGYudG1wZGlyX21ldGFpZGVRQQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhjb21waWxlZF9maWxlKQorCisgICAgQE9FVGVzdElEKDE5ODQpCisgICAgZGVmIHRlc3RfbWV0YV9pZGVfY2FuX2J1aWxkX2NwaW9fcHJvamVjdChzZWxmKToKKyAgICAgICAgZGxfZGlyID0gc2VsZi50ZC5nZXQoJ0RMX0RJUicsIE5vbmUpCisgICAgICAgIHNlbGYucHJvamVjdCA9IFNES0J1aWxkUHJvamVjdChzZWxmLnRtcGRpcl9tZXRhaWRlUUEgKyAiL2NwaW8vIiwgc2VsZi5lbnZpcm9ubWVudF9zY3JpcHRfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9jcGlvL2NwaW8tMi4xMi50YXIuZ3oiLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50bXBkaXJfbWV0YWlkZVFBLCBzZWxmLnRkWydEQVRFVElNRSddLCBkbF9kaXI9ZGxfZGlyKQorICAgICAgICBzZWxmLnByb2plY3QuZG93bmxvYWRfYXJjaGl2ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wcm9qZWN0LnJ1bl9jb25maWd1cmUoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iUnVubmluZyBjb25maWd1cmUgZmFpbGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2plY3QucnVuX21ha2UoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iUnVubmluZyBtYWtlIGZhaWxlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wcm9qZWN0LnJ1bl9pbnN0YWxsKCksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBtc2c9IlJ1bm5pbmcgbWFrZSBpbnN0YWxsIGZhaWxlZCIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVucWVtdS5weQppbmRleCA0N2Q0MWY1Li41ZWJkZDU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkKQEAgLTMsOSArMywxMCBAQAogIwogCiBpbXBvcnQgcmUKLQoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGltZQogZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBydW5xZW11LCBnZXRfYmJfdmFyCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIHJ1bnFlbXUsIGdldF9iYl92YXIsIHJ1bkNtZAogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECiAKIGNsYXNzIFJ1bnFlbXVUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgpAQCAtMTM2LDMgKzEzNyw3MCBAQAogICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgcm9vdGZzKQogICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyMgVGhpcyB0ZXN0IHdhcyBkZXNpZ25lZCBhcyBhIHNlcGFyYXRlIGNsYXNzIHRvIHRlc3QgdGhhdCBzaHV0ZG93bgorIyBjb21tYW5kIHdpbGwgc2h1dGRvd24gcWVtdSBhcyBleHBlY3RlZCBvbiBlYWNoIHFlbXUgYXJjaGl0ZWN0dXJlCisjIGJhc2VkIG9uIHRoZSBNQUNISU5FIGNvbmZpZ3VyYXRpb24gaW5zaWRlIHRoZSBjb25maWcgZmlsZQorIyAoZWcuIGxvY2FsLmNvbmYpLgorIworIyBUaGlzIHdhcyBkaWZmZXJlbnQgY29tcGFyZWQgdG8gUnVucWVtdVRlc3RzLCB3aGVyZSBSdW5xZW11VGVzdHMgd2FzCisjIGRlZGljYXRlZCBmb3IgTUFDSElORT1xZW11eDg2LTY0IHdoZXJlIGl0IHRlc3QgdGhhdCBxZW11eDg2LTY0IHdpbGwKKyMgYm9vdHVwIHZhcmlvdXMgZmlsZXN5c3RlbSB0eXBlcywgaW5jbHVkaW5nIGxpdmUgaW1hZ2UoaXNvIGFuZCBoZGRpbWcpCisjIHdoZXJlIGxpdmUgaW1hZ2Ugd2FzIG5vdCBzdXBwb3J0ZWQgb24gYWxsIHFlbXUgYXJjaGl0ZWN0dXJlLgorY2xhc3MgUWVtdVRlc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKFFlbXVUZXN0LCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICBjbHMucmVjaXBlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgY2xzLm1hY2hpbmUgPSAgZ2V0X2JiX3ZhcignTUFDSElORScpCisgICAgICAgIGNscy5kZXBsb3lfZGlyX2ltYWdlID0gIGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQorICAgICAgICBjbHMuY21kX2NvbW1vbiA9ICJydW5xZW11IG5vZ3JhcGhpYyIKKyAgICAgICAgY2xzLnFlbXVib290X2NvbmYgPSAiJXMtJXMucWVtdWJvb3QuY29uZiIgJSAoY2xzLnJlY2lwZSwgY2xzLm1hY2hpbmUpCisgICAgICAgIGNscy5xZW11Ym9vdF9jb25mID0gb3MucGF0aC5qb2luKGNscy5kZXBsb3lfZGlyX2ltYWdlLCBjbHMucWVtdWJvb3RfY29uZikKKyAgICAgICAgYml0YmFrZShjbHMucmVjaXBlKQorCisgICAgZGVmIF9zdGFydF9xZW11X3NodXRkb3duX2NoZWNrX2lmX3NodXRkb3duX3N1Y2NlZWRlZChzZWxmLCBxZW11LCB0aW1lb3V0KToKKyAgICAgICAgcWVtdS5ydW5fc2VyaWFsKCJzaHV0ZG93biAtaCBub3ciKQorICAgICAgICAjIFN0b3AgdGhyZWFkIHdpbGwgc3RvcCB0aGUgTG9nZ2luZ1RocmVhZCBpbnN0YW5jZSB1c2VkIGZvciBsb2dnaW5nCisgICAgICAgICMgcWVtdSB0aHJvdWdoIHNlcmlhbCBjb25zb2xlLCBzdG9wIHRocmVhZCB3aWxsIHByZXZlbnQgdGhpcyBjb2RlCisgICAgICAgICMgZnJvbSBmYWNpbmcgZXhjZXB0aW9uIChDb25zb2xlIGNvbm5lY3Rpb24gY2xvc2VkIHVuZXhwZWN0ZWRseSkKKyAgICAgICAgIyB3aGVuIHFlbXUgd2FzIHNodXRkb3duIGJ5IHRoZSBhYm92ZSBzaHV0ZG93biBjb21tYW5kCisgICAgICAgIHFlbXUucnVubmVyLnN0b3BfdGhyZWFkKCkKKyAgICAgICAgdGltZV90cmFjayA9IDAKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlzX2FsaXZlID0gcWVtdS5jaGVjaygpCisgICAgICAgICAgICBpZiBub3QgaXNfYWxpdmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGlmIHRpbWVfdHJhY2sgPiB0aW1lb3V0OgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAgICAgdGltZV90cmFjayArPSAxCisKKyAgICBkZWYgdGVzdF9xZW11X2Nhbl9zaHV0ZG93bihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMoc2VsZi5xZW11Ym9vdF9jb25mKQorICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5xZW11Ym9vdF9jb25mKQorICAgICAgICBzaHV0ZG93bl90aW1lb3V0ID0gMTIwCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHFlbXVfc2h1dGRvd25fc3VjY2VlZGVkID0gc2VsZi5fc3RhcnRfcWVtdV9zaHV0ZG93bl9jaGVja19pZl9zaHV0ZG93bl9zdWNjZWVkZWQocWVtdSwgc2h1dGRvd25fdGltZW91dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11X3NodXRkb3duX3N1Y2NlZWRlZCwgJ0ZhaWxlZDogJXMgZG9lcyBub3Qgc2h1dGRvd24gd2l0aGluIHRpbWVvdXQoJXMpJyAlIChzZWxmLm1hY2hpbmUsIHNodXRkb3duX3RpbWVvdXQpKQorCisgICAgIyBOZWVkIHRvIGhhdmUgcG9ydG1hcC9ycGNiaW5kIHJ1bm5pbmcgdG8gYWxsb3cgdGhpcyB0ZXN0IHRvIHdvcmsgYW5kCisgICAgIyBjdXJyZW50IGF1dG9idWlsZGVyIHNldHVwIGRvZXMgbm90IGhhdmUgdGhpcy4KKyAgICBkZWYgZGlzYWJsZWRfdGVzdF9xZW11X2Nhbl9ib290X25mc19hbmRfc2h1dGRvd24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKHNlbGYucWVtdWJvb3RfY29uZikKKyAgICAgICAgYml0YmFrZSgnbWV0YS1pZGUtc3VwcG9ydCcpCisgICAgICAgIHJvb3Rmc190YXIgPSAiJXMtJXMudGFyLmJ6MiIgJSAoc2VsZi5yZWNpcGUsIHNlbGYubWFjaGluZSkKKyAgICAgICAgcm9vdGZzX3RhciA9IG9zLnBhdGguam9pbihzZWxmLmRlcGxveV9kaXJfaW1hZ2UsIHJvb3Rmc190YXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKHJvb3Rmc190YXIpCisgICAgICAgIHRtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdxZW11X25mcycpCisgICAgICAgIHRtcGRpcl9uZnMgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnbmZzJykKKyAgICAgICAgY21kX2V4dHJhY3RfbmZzID0gJ3J1bnFlbXUtZXh0cmFjdC1zZGsgJXMgJXMnICUgKHJvb3Rmc190YXIsIHRtcGRpcl9uZnMpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWRfZXh0cmFjdF9uZnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgInJ1bnFlbXUtZXh0cmFjdC1zZGsgZGlkbid0IHJ1biBhcyBleHBlY3RlZC4gJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgY21kID0gIiVzIG5mcyAlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLnFlbXVib290X2NvbmYsIHRtcGRpcl9uZnMpCisgICAgICAgIHNodXRkb3duX3RpbWVvdXQgPSAxMjAKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgcWVtdV9zaHV0ZG93bl9zdWNjZWVkZWQgPSBzZWxmLl9zdGFydF9xZW11X3NodXRkb3duX2NoZWNrX2lmX3NodXRkb3duX3N1Y2NlZWRlZChxZW11LCBzaHV0ZG93bl90aW1lb3V0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXVfc2h1dGRvd25fc3VjY2VlZGVkLCAnRmFpbGVkOiAlcyBkb2VzIG5vdCBzaHV0ZG93biB3aXRoaW4gdGltZW91dCglcyknICUgKHNlbGYubWFjaGluZSwgc2h1dGRvd25fdGltZW91dCkpCisgICAgICAgIHJ1bkNtZCgncm0gLXJmICVzJyAlIHRtcGRpcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weQppbmRleCAyNTI3MGI3Li45YzliNGIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5CkBAIC0xNjcsNTUgKzE2Nyw2IEBACiAKIGNsYXNzIFBvc3RpbnN0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAgICAgQE9FVGVzdElEKDE1NDApCi0gICAgZGVmIHRlc3RfdmVyaWZ5X3Bvc3RpbnN0KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogVGhlIHB1cnBvc2Ugb2YgdGhpcyB0ZXN0IGlzIHRvIHZlcmlmeSB0aGUgZXhlY3V0aW9uIG9yZGVyIG9mIHBvc3RpbnN0IEJ1Z3ppbGxhIElEOiBbNTMxOV0KLSAgICAgICAgRXhwZWN0ZWQgOgotICAgICAgICAxLiBDb21waWxlIGEgbWluaW1hbCBpbWFnZS4KLSAgICAgICAgMi4gVGhlIGNvbXBpbGVkIGltYWdlIHdpbGwgYWRkIHRoZSBjcmVhdGVkIGxheWVyIHdpdGggdGhlIHJlY2lwZXMgcG9zdGluc3RbIGFiZHB0XQotICAgICAgICAzLiBSdW4gcWVtdXg4NgotICAgICAgICA0LiBWYWxpZGF0ZSB0aGUgdGFzayBleGVjdXRpb24gb3JkZXIKLSAgICAgICAgQXV0aG9yOiBGcmFuY2lzY28gUGVkcmF6YSA8ZnJhbmNpc2NvLmoucGVkcmF6YS5nb256YWxlekBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0aW1hZ2UiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgKz0gInBvc3RpbnN0LWF0LXJvb3RmcyBcCi1wb3N0aW5zdC1kZWxheWVkLWEgXAotcG9zdGluc3QtZGVsYXllZC1iIFwKLXBvc3RpbnN0LWRlbGF5ZWQtZCBcCi1wb3N0aW5zdC1kZWxheWVkLXAgXAotcG9zdGluc3QtZGVsYXllZC10IFwKLSJcbicKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsIC1mICcpCi0KLSAgICAgICAgcG9zdGluc3RfbGlzdCA9IFsnMTAwLXBvc3RpbnN0LWF0LXJvb3RmcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEwMS1wb3N0aW5zdC1kZWxheWVkLWEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMDItcG9zdGluc3QtZGVsYXllZC1iJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMTAzLXBvc3RpbnN0LWRlbGF5ZWQtZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEwNC1wb3N0aW5zdC1kZWxheWVkLXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMDUtcG9zdGluc3QtZGVsYXllZC10J10KLSAgICAgICAgcGF0aF93b3JrZGlyID0gZ2V0X2JiX3ZhcignV09SS0RJUicsJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIHdvcmtzcGFjZWRpciA9ICd0ZXN0aW1hZ2UvcWVtdV9ib290X2xvZycKLSAgICAgICAgd29ya3NwYWNlZGlyID0gb3MucGF0aC5qb2luKHBhdGhfd29ya2Rpciwgd29ya3NwYWNlZGlyKQotICAgICAgICByZXhwID0gcmUuY29tcGlsZSgiXlJ1bm5pbmcgcG9zdGluc3QgLiovKD9QPHBvc3RpbnN0Pi4qKVwuXC5cLiQiKQotICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4od29ya3NwYWNlZGlyKSBhcyBmOgotICAgICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKLSAgICAgICAgICAgICAgICBpZHggPSAwCi0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKS5yZXBsYWNlKCJeTSIsIiIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOiAjIFRvIGF2b2lkIGVtcHR5IGxpbmVzCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBtID0gcmV4cC5zZWFyY2gobGluZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zdGluc3RfbGlzdFtpZHhdLCBtLmdyb3VwKCdwb3N0aW5zdCcpLCAiRmFpbCIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZHggPSBpZHgrMQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgZm91bmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkeCwgbGVuKHBvc3RpbnN0X2xpc3QpLCAiTm90IGZvdW5kIGFsbCBwb3N0aW5zdHMiKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQogICAgIEBPRVRlc3RJRCgxNTQ1KQogICAgIGRlZiB0ZXN0X3Bvc3RpbnN0X3Jvb3Rmc19hbmRfYm9vdChzZWxmKToKICAgICAgICAgIiIiCkBAIC0yMzQsMTYgKzE4NSwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluaXRpYWxpemF0aW9uIG1hbmFnZXJzOiBzeXN2aW5pdCBhbmQgc3lzdGVtZC4KIAogICAgICAgICAiIiIKLSAgICAgICAgZmlsZV9yb290ZnNfbmFtZSA9ICJ0aGlzLXdhcy1jcmVhdGVkLWF0LXJvb3Rmc3RpbWUiCi0gICAgICAgIGZpbGVib290X25hbWUgPSAidGhpcy13YXMtY3JlYXRlZC1hdC1maXJzdC1ib290IgotICAgICAgICByb290ZnNfcGtnID0gJ3Bvc3RpbnN0LWF0LXJvb3RmcycKLSAgICAgICAgYm9vdF9wa2cgPSAncG9zdGluc3QtZGVsYXllZC1hJworCisgICAgICAgIGltcG9ydCBvZS5wYXRoCisKKyAgICAgICAgdmFycyA9IGdldF9iYl92YXJzKCgiSU1BR0VfUk9PVEZTIiwgInN5c2NvbmZkaXIiKSwgImNvcmUtaW1hZ2UtbWluaW1hbCIpCisgICAgICAgIHJvb3RmcyA9IHZhcnNbIklNQUdFX1JPT1RGUyJdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJvb3RmcykKKyAgICAgICAgc3lzY29uZmRpciA9IHZhcnNbInN5c2NvbmZkaXIiXQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzeXNjb25mZGlyKQorICAgICAgICAjIE5lZWQgdG8gdXNlIG9lLnBhdGggaGVyZSBhcyBzeXNjb25mZGlyIHN0YXJ0cyB3aXRoIC8KKyAgICAgICAgaG9zdHRlc3RkaXIgPSBvZS5wYXRoLmpvaW4ocm9vdGZzLCBzeXNjb25mZGlyLCAicG9zdGluc3QtdGVzdCIpCisgICAgICAgIHRhcmdldHRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oc3lzY29uZmRpciwgInBvc3RpbnN0LXRlc3QiKQogCiAgICAgICAgIGZvciBpbml0X21hbmFnZXIgaW4gKCJzeXN2aW5pdCIsICJzeXN0ZW1kIik6CiAgICAgICAgICAgICBmb3IgY2xhc3NlcyBpbiAoInBhY2thZ2VfcnBtIiwgInBhY2thZ2VfZGViIiwgInBhY2thZ2VfaXBrIik6CiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaW5pdF9tYW5hZ2VyPWluaXRfbWFuYWdlciwgcGFja2FnZV9jbGFzcz1jbGFzc2VzKToKLSAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSAnTUFDSElORSA9ICJxZW11eDg2IlxuJwotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMICs9ICIlcyAlcyAiXG4nJSAocm9vdGZzX3BrZywgYm9vdF9wa2cpCisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gJ0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCA9ICJwb3N0aW5zdC1kZWxheWVkLWIiXG4nCiAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9GRUFUVVJFUyArPSAicGFja2FnZS1tYW5hZ2VtZW50IGVtcHR5LXJvb3QtcGFzc3dvcmQiXG4nCiAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0NMQVNTRVMgPSAiJXMiXG4nICUgY2xhc3NlcwogICAgICAgICAgICAgICAgICAgICBpZiBpbml0X21hbmFnZXIgPT0gInN5c3RlbWQiOgpAQCAtMjU1LDEzICsyMTIsNDkgQEAKIAogICAgICAgICAgICAgICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQogCi0gICAgICAgICAgICAgICAgICAgIGZpbGVfcm9vdGZzX2NyZWF0ZWQgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignSU1BR0VfUk9PVEZTJywgImNvcmUtaW1hZ2UtbWluaW1hbCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcm9vdGZzX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoZmlsZV9yb290ZnNfY3JlYXRlZCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAiRmlsZSAlcyB3YXMgbm90IGNyZWF0ZWQgYXQgcm9vdGZzIHRpbWUgYnkgJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVfcm9vdGZzX25hbWUsIHJvb3Rmc19wa2cpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGhvc3R0ZXN0ZGlyLCAicm9vdGZzIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJvb3RmcyBzdGF0ZSBmaWxlIHdhcyBub3QgY3JlYXRlZCIpCiAKLSAgICAgICAgICAgICAgICAgICAgdGVzdGNvbW1hbmQgPSAnbHMgL2V0Yy8nICsgZmlsZWJvb3RfbmFtZQogICAgICAgICAgICAgICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbCgiLWYgL2V0Yy8iICsgZmlsZWJvb3RfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAnRmlsZSAlcyB3YXMgbm90IGNyZWF0ZWQgYXQgZmlyc3QgYm9vdCAoJXMpJyAlIChmaWxlYm9vdF9uYW1lLCBvdXRwdXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBNYWtlIHRoZSB0ZXN0IGVjaG8gYSBzdHJpbmcgYW5kIHNlYXJjaCBmb3IgdGhhdCBhcworICAgICAgICAgICAgICAgICAgICAgICAgIyBydW5fc2VyaWFsKCkncyBzdGF0dXMgY29kZSBpcyB1c2VsZXNzLicKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiAoInJvb3RmcyIsICJkZWxheWVkLWEiLCAiZGVsYXllZC1iIik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoInRlc3QgLWYgJXMgJiYgZWNobyBmb3VuZCIgJSBvcy5wYXRoLmpvaW4odGFyZ2V0dGVzdGRpciwgZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAiZm91bmQiLCAiJXMgd2FzIG5vdCBwcmVzZW50IG9uIGJvb3QiICUgZmlsZW5hbWUpCisKKworCisgICAgZGVmIHRlc3RfZmFpbGluZ19wb3N0aW5zdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgY2FzZSBpcyB0byB2ZXJpZnkgdGhhdCBwb3N0LWluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cyB0aGF0IGNvbnRhaW4gZXJyb3JzIGFyZSBwcm9wZXJseSByZXBvcnRlZC4KKyAgICAgICAgRXhwZWN0ZWQ6ICAgICAgIFRoZSBzY3JpcHRsZXQgZmFpbHVyZSBpcyBwcm9wZXJseSByZXBvcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIHRoYXQgaXMgY3JlYXRlZCBhZnRlciB0aGUgZXJyb3IgaW4gdGhlIHNjcmlwdGxldCBpcyBub3QgcHJlc2VudC4KKyAgICAgICAgUHJvZHVjdDogb2UtY29yZQorICAgICAgICBBdXRob3I6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGltcG9ydCBvZS5wYXRoCisKKyAgICAgICAgdmFycyA9IGdldF9iYl92YXJzKCgiSU1BR0VfUk9PVEZTIiwgInN5c2NvbmZkaXIiKSwgImNvcmUtaW1hZ2UtbWluaW1hbCIpCisgICAgICAgIHJvb3RmcyA9IHZhcnNbIklNQUdFX1JPT1RGUyJdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJvb3RmcykKKyAgICAgICAgc3lzY29uZmRpciA9IHZhcnNbInN5c2NvbmZkaXIiXQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzeXNjb25mZGlyKQorICAgICAgICAjIE5lZWQgdG8gdXNlIG9lLnBhdGggaGVyZSBhcyBzeXNjb25mZGlyIHN0YXJ0cyB3aXRoIC8KKyAgICAgICAgaG9zdHRlc3RkaXIgPSBvZS5wYXRoLmpvaW4ocm9vdGZzLCBzeXNjb25mZGlyLCAicG9zdGluc3QtdGVzdCIpCisKKyAgICAgICAgZm9yIGNsYXNzZXMgaW4gKCJwYWNrYWdlX3JwbSIsICJwYWNrYWdlX2RlYiIsICJwYWNrYWdlX2lwayIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGFja2FnZV9jbGFzcz1jbGFzc2VzKToKKyAgICAgICAgICAgICAgICBmZWF0dXJlcyA9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgPSAicG9zdGluc3Qtcm9vdGZzLWZhaWxpbmciXG4nCisgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfQ0xBU1NFUyA9ICIlcyJcbicgJSBjbGFzc2VzCisgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisgICAgICAgICAgICAgICAgYmJfcmVzdWx0ID0gYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChiYl9yZXN1bHQub3V0cHV0LmZpbmQoIkludGVudGlvbmFsbHkgZmFpbGluZyBwb3N0aW5zdGFsbCBzY3JpcHRsZXRzIG9mIFsncG9zdGluc3Qtcm9vdGZzLWZhaWxpbmcnXSB0byBkZWZlciB0aGVtIHRvIGZpcnN0IGJvb3QgaXMgZGVwcmVjYXRlZC4iKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgIldhcm5pbmcgYWJvdXQgYSBmYWlsZWQgc2NyaXB0bGV0IG5vdCBmb3VuZCBpbiBiaXRiYWtlIG91dHB1dDogJXMiICUoYmJfcmVzdWx0Lm91dHB1dCkpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGhvc3R0ZXN0ZGlyLCAicm9vdGZzLWJlZm9yZS1mYWlsdXJlIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJvb3Rmcy1iZWZvcmUtZmFpbHVyZSBmaWxlIHdhcyBub3QgY3JlYXRlZCIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oaG9zdHRlc3RkaXIsICJyb290ZnMtYWZ0ZXItZmFpbHVyZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyb290ZnMtYWZ0ZXItZmFpbHVyZSBmaWxlIHdhcyBjcmVhdGVkIikKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKaW5kZXggYjNkMWE4Mi4uYTc1MGNmYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5CkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgIHJldCA9IHJ1bkNtZCgnJXMvcnBta2V5cyAtLWRlZmluZSAiX2RicGF0aCAlcyIgLS1jaGVja3NpZyAlcycgJQogICAgICAgICAgICAgICAgICAgICAgKHN0YWdpbmdfYmluZGlyX25hdGl2ZSwgcnBtZGIsIHBrZ19kZXBsb3kpKQogICAgICAgICAjIHRtcC9kZXBsb3kvcnBtL2k1ODYvZWQtMS45LXIwLmk1ODYucnBtOiByc2Egc2hhMSBtZDUgT0sKLSAgICAgICAgc2VsZi5hc3NlcnRJbigncnNhIHNoYTEgKG1kNSkgcGdwIG1kNSBPSycsIHJldC5vdXRwdXQsICdQYWNrYWdlIHNpZ25lZCBpbmNvcnJlY3RseS4nKQorICAgICAgICBzZWxmLmFzc2VydEluKCdkaWdlc3RzIHNpZ25hdHVyZXMgT0snLCByZXQub3V0cHV0LCAnUGFja2FnZSBzaWduZWQgaW5jb3JyZWN0bHkuJykKICAgICAgICAgc2h1dGlsLnJtdHJlZShycG1kYikKIAogICAgICAgICAjQ2hlY2sgdGhhdCBhbiBpbWFnZSBjYW4gYmUgYnVpbHQgZnJvbSBzaWduZWQgcGFja2FnZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZXRlc3RzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKaW5kZXggNDc5MDA4OC4uN2IwMDhlNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKQEAgLTIsMTUgKzIsNTEgQEAKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBnbG9iCiBpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHRlbXBmaWxlCiAKIGZyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfdGVzdF9sYXllcgorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF90ZXN0X2xheWVyLCBjcmVhdGVfdGVtcF9sYXllcgogZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2VzLnNzdGF0ZSBpbXBvcnQgU1N0YXRlQmFzZQogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECiAKIGltcG9ydCBiYi5zaWdnZW4KIAogY2xhc3MgU1N0YXRlVGVzdHMoU1N0YXRlQmFzZSk6CisgICAgZGVmIHRlc3RfYXV0b3Jldl9zc3RhdGVfd29ya3Moc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgZ2l0IHJlcG9zaXRvcnkgd2hpY2ggY2hhbmdlcyBpcyBjb3JyZWN0bHkgaGFuZGxlZCBieSBTUkNSRVYgPSAke0FVVE9SRVZ9CisgICAgICAgICMgd2hlbiBQViBkb2VzIG5vdCBjb250YWluIFNSQ1BWCisKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdvZXFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBjcmVhdGVfdGVtcF9sYXllcih0ZW1wZGlyLCAnc2VsZnRlc3RyZWNpcGV0b29sJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzJyAlIHRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlbXBkaXIpCisKKyAgICAgICAgIyBVc2UgZGJ1cy13YWl0IGFzIGEgbG9jYWwgZ2l0IHJlcG8gd2UgY2FuIGFkZCBhIGNvbW1pdCBiZXR3ZWVuIHR3byBidWlsZHMgaW4KKyAgICAgICAgcG4gPSAnZGJ1cy13YWl0JworICAgICAgICBzcmNyZXYgPSAnNmNjNjA3N2EzNmZlMjY0OGE1Zjk5M2ZlN2MxNmM5NjMyZjk0NjUxNycKKyAgICAgICAgdXJsID0gJ2dpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2RidXMtd2FpdCcKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY2xvbmUgJXMgbm9uYW1lJyAlIHVybCwgY3dkPXRlbXBkaXIpCisgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbm9uYW1lJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmVzZXQgLS1oYXJkICVzJyAlIHNyY3JldiwgY3dkPXNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdjb25maWd1cmUuYWMnKSksICdVbmFibGUgdG8gZmluZCBjb25maWd1cmUgc2NyaXB0IGluIHNvdXJjZSBkaXJlY3RvcnknKQorCisgICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgInJlY2lwZXMtdGVzdCIsICJkYnVzLXdhaXQtdGVzdCIsICdkYnVzLXdhaXQtdGVzdF9naXQuYmInKQorICAgICAgICBvcy5tYWtlZGlycyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkpCisgICAgICAgIHNyY3VyaSA9ICdnaXQ6Ly8nICsgc3JjZGlyICsgJztwcm90b2NvbD1maWxlJworICAgICAgICByZXN1bHQgPSBydW5DbWQoWydyZWNpcGV0b29sJywgJ2NyZWF0ZScsICctbycsIHJlY2lwZWZpbGUsIHNyY3VyaV0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSwgJ3JlY2lwZXRvb2wgZGlkIG5vdCBjcmVhdGUgcmVjaXBlIGZpbGU7IG91dHB1dDpcbiVzJyAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICAgICAgd2l0aCBvcGVuKHJlY2lwZWZpbGUsICdhJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoJ1NSQ1JFViA9ICIke0FVVE9SRVZ9IlxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ1BWID0gIjEuMCJcbicpCisKKyAgICAgICAgYml0YmFrZSgiZGJ1cy13YWl0LXRlc3QgLWMgZmV0Y2giKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNyY2RpciwgImJhci50eHQiKSwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiZm9vIikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgYWRkIGJhci50eHQ7IGdpdCBjb21taXQgLWFzbSAiYWRkIGJhciInLCBjd2Q9c3JjZGlyKQorICAgICAgICBiaXRiYWtlKCJkYnVzLXdhaXQtdGVzdCAtYyB1bnBhY2siKQorCiAKICAgICAjIFRlc3Qgc3N0YXRlIGZpbGVzIGNyZWF0aW9uIGFuZCB0aGVpciBsb2NhdGlvbgogICAgIGRlZiBydW5fdGVzdF9zc3RhdGVfY3JlYXRpb24oc2VsZiwgdGFyZ2V0cywgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlLCBzaG91bGRfcGFzcz1UcnVlKToKQEAgLTQ5MCw3ICs1MjYsNyBAQAogICAgICAgICAjIHRoaXMgaXMgYW4gZXhwZW5zaXZlIGNvbXB1dGF0aW9uLCB0aHVzIGp1c3QgY29tcGFyZSB0aGUgZmlyc3QgJ21heF9zaWdmaWxlc190b19jb21wYXJlJyBrIGZpbGVzCiAgICAgICAgIG1heF9zaWdmaWxlc190b19jb21wYXJlID0gMjAKICAgICAgICAgZmlyc3QsIHJlc3QgPSBmaWxlc1s6bWF4X3NpZ2ZpbGVzX3RvX2NvbXBhcmVdLCBmaWxlc1ttYXhfc2lnZmlsZXNfdG9fY29tcGFyZTpdCi0gICAgICAgIGNvbXBhcmVfc2lnZmlsZXMoZmlyc3QsIGZpbGVzMS5rZXlzKCksIGZpbGVzMi5rZXlzKCksIGNvbXBhcmU9VHJ1ZSkKLSAgICAgICAgY29tcGFyZV9zaWdmaWxlcyhyZXN0LCBmaWxlczEua2V5cygpLCBmaWxlczIua2V5cygpLCBjb21wYXJlPUZhbHNlKQorICAgICAgICBjb21wYXJlX3NpZ2ZpbGVzKGZpcnN0LCBmaWxlczEsIGZpbGVzMiwgY29tcGFyZT1UcnVlKQorICAgICAgICBjb21wYXJlX3NpZ2ZpbGVzKHJlc3QsIGZpbGVzMSwgZmlsZXMyLCBjb21wYXJlPUZhbHNlKQogCiAgICAgICAgIHNlbGYuZmFpbCgic3N0YXRlIGhhc2hlcyBub3QgaWRlbnRpY2FsLiIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkKaW5kZXggNjUxZDU3NS4uYjg0NDY2ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weQpAQCAtNjIzLDcgKzYyMyw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsocGF0aCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5yZWFscGF0aChwYXRoKSkpCiAKLSAgICBAT0VUZXN0SUQoMTQyMikKKyAgICBAT0VUZXN0SUQoMTQyNCkKICAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKICAgICBkZWYgdGVzdF9xZW11KHNlbGYpOgogICAgICAgICAiIiJUZXN0IHdpYy1pbWFnZS1taW5pbWFsIHVuZGVyIHFlbXUiIiIKQEAgLTYzNCwxMCArNjM0LDEzIEBACiAgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCiAKICAgICAgICAgd2l0aCBydW5xZW11KCd3aWMtaW1hZ2UtbWluaW1hbCcsIHNzaD1GYWxzZSkgYXMgcWVtdToKLSAgICAgICAgICAgIGNtZCA9ICJtb3VudCB8Z3JlcCAnXi9kZXYvJyB8IGN1dCAtZjEsMyAtZCAnICciCisgICAgICAgICAgICBjbWQgPSAibW91bnQgfGdyZXAgJ14vZGV2LycgfCBjdXQgLWYxLDMgLWQgJyAnIHwgc29ydCIKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKGNtZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnL2Rldi9yb290IC9cclxuL2Rldi9zZGExIC9ib290XHJcbi9kZXYvc2RhMyAvbWVkaWFcclxuL2Rldi9zZGE0IC9tbnQnKQorICAgICAgICAgICAgY21kID0gImdyZXAgVVVJRD0gL2V0Yy9mc3RhYiIKICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKGNtZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgc3RhdHVzLCAnRmFpbGVkIHRvIHJ1biBjb21tYW5kICIlcyI6ICVzJyAlIChjbWQsIG91dHB1dCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJy9kZXYvcm9vdCAvXHJcbi9kZXYvc2RhMSAvYm9vdFxyXG4vZGV2L3NkYTMgL21udCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJ1VVSUQ9MmM3MWVmMDYtYTgxZC00NzM1LTlkM2EtMzc5YjY5YzZiZGJhXHQvbWVkaWFcdGV4dDRcdGRlZmF1bHRzXHQwXHQwJykKIAogICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQogICAgIEBPRVRlc3RJRCgxODUyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkKaW5kZXggZjYzOTM2Yy4uNTlhOWMzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5CkBAIC05MSw2ICs5MSw4IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgbG9nZ2VyLCBpbWFnZV9mc3R5cGU9Tm9uZSk6CiAKKyAgICAgICAgaW1wb3J0IG9lLnR5cGVzCisKICAgICAgICAgc3VwZXIoUWVtdVRhcmdldCwgc2VsZikuX19pbml0X18oZCwgbG9nZ2VyKQogCiAgICAgICAgIHNlbGYucm9vdGZzID0gJycKQEAgLTEwNyw3ICsxMDksNyBAQAogICAgICAgICBkdW1wX2RpciA9IGQuZ2V0VmFyKCJURVNUSU1BR0VfRFVNUF9ESVIiKQogICAgICAgICBxZW11X3VzZV9rdm0gPSBkLmdldFZhcigiUUVNVV9VU0VfS1ZNIikKICAgICAgICAgaWYgcWVtdV91c2Vfa3ZtIGFuZCBcCi0gICAgICAgICAgIChxZW11X3VzZV9rdm0gPT0gIlRydWUiIGFuZCAieDg2IiBpbiBkLmdldFZhcigiTUFDSElORSIpIG9yIFwKKyAgICAgICAgICAgKG9lLnR5cGVzLmJvb2xlYW4ocWVtdV91c2Vfa3ZtKSBhbmQgIng4NiIgaW4gZC5nZXRWYXIoIk1BQ0hJTkUiKSBvciBcCiAgICAgICAgICAgICBkLmdldFZhcigiTUFDSElORSIpIGluIHFlbXVfdXNlX2t2bS5zcGxpdCgpKToKICAgICAgICAgICAgIHVzZV9rdm0gPSBUcnVlCiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CmluZGV4IDBiYjkwMDIuLjBkOWNmMjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CkBAIC0yMjcsNyArMjI3LDcgQEAKICAgICBiYmVudiA9IGdldF9iYl9lbnYodGFyZ2V0LCBwb3N0Y29uZmlnPXBvc3Rjb25maWcpCiAKICAgICBpZiB2YXJpYWJsZXMgaXMgbm90IE5vbmU6Ci0gICAgICAgIHZhcmlhYmxlcyA9IHZhcmlhYmxlcy5jb3B5KCkKKyAgICAgICAgdmFyaWFibGVzID0gbGlzdCh2YXJpYWJsZXMpCiAgICAgdmFyX3JlID0gcmUuY29tcGlsZShyJ14oZXhwb3J0ICk/KD9QPHZhcj5cdysoXy4qKT8pPSIoP1A8dmFsdWU+LiopIiQnKQogICAgIHVuc2V0X3JlID0gcmUuY29tcGlsZShyJ151bnNldCAoP1A8dmFyPlx3KykkJykKICAgICBsYXN0bGluZSA9IE5vbmUKQEAgLTI4NSw3ICsyODUsNyBAQAogICAgICAgICBmLndyaXRlKCdCQkZJTEVfUEFUVEVSTl8lcyA9ICJeJHtMQVlFUkRJUn0vIlxuJyAlIHRlbXBsYXllcm5hbWUpCiAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QUklPUklUWV8lcyA9ICIlZCJcbicgJSAodGVtcGxheWVybmFtZSwgcHJpb3JpdHkpKQogICAgICAgICBmLndyaXRlKCdCQkZJTEVfUEFUVEVSTl9JR05PUkVfRU1QVFlfJXMgPSAiMSJcbicgJSB0ZW1wbGF5ZXJuYW1lKQotCisgICAgICAgIGYud3JpdGUoJ0xBWUVSU0VSSUVTX0NPTVBBVF8lcyA9ICIke0xBWUVSU0VSSUVTX0NPTVBBVF9jb3JlfSJcbicgJSB0ZW1wbGF5ZXJuYW1lKQogCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHJ1bnFlbXUocG4sIHNzaD1UcnVlLCBydW5xZW11cGFyYW1zPScnLCBpbWFnZV9mc3R5cGU9Tm9uZSwgbGF1bmNoX2NtZD1Ob25lLCBxZW11cGFyYW1zPU5vbmUsIG92ZXJyaWRlcz17fSwgZGlzY2FyZF93cml0ZXM9VHJ1ZSk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9wYWNrYWdlX21hbmFnZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9wYWNrYWdlX21hbmFnZXIucHkKaW5kZXggNzI0YWZiMi4uYWZkNWI4ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcGFja2FnZV9tYW5hZ2VyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3BhY2thZ2VfbWFuYWdlci5weQpAQCAtMTQsNyArMTQsOCBAQAogICAgIGlmIHBrZ19jbGFzcyA9PSAicnBtIjoKICAgICAgICAgcG0gPSBScG1QTShkLAogICAgICAgICAgICAgICAgICAgIHJvb3RfcGF0aCwKLSAgICAgICAgICAgICAgICAgICBkLmdldFZhcignVEFSR0VUX1ZFTkRPUicpKQorICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdUQVJHRVRfVkVORE9SJyksCisgICAgICAgICAgICAgICAgICAgZmlsdGVyYnlkZXBlbmRlbmNpZXM9RmFsc2UpCiAgICAgICAgIHBtLmNyZWF0ZV9jb25maWdzKCkKIAogICAgIGVsaWYgcGtnX2NsYXNzID09ICJpcGsiOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKaW5kZXggMDYzMWQ0My4uYzk2MjYwMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CkBAIC0xOTQsNyArMTk0LDggQEAKICAgICAgICAgICAgIHN5cy5leGl0KDApCiAKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInJ1bnFlbXUgc3RhcnRlZCwgcGlkIGlzICVzIiAlIHNlbGYucnVucWVtdS5waWQpCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ3YWl0aW5nIGF0IG1vc3QgJXMgc2Vjb25kcyBmb3IgcWVtdSBwaWQiICUgc2VsZi5ydW5xZW11dGltZSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIndhaXRpbmcgYXQgbW9zdCAlcyBzZWNvbmRzIGZvciBxZW11IHBpZCAoJXMpIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnJ1bnFlbXV0aW1lLCB0aW1lLnN0cmZ0aW1lKCIlRCAlSDolTTolUyIpKSkKICAgICAgICAgZW5kdGltZSA9IHRpbWUudGltZSgpICsgc2VsZi5ydW5xZW11dGltZQogICAgICAgICB3aGlsZSBub3Qgc2VsZi5pc19hbGl2ZSgpIGFuZCB0aW1lLnRpbWUoKSA8IGVuZHRpbWU6CiAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXUucG9sbCgpOgpAQCAtMjA4LDcgKzIwOSw4IEBACiAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuNSkKIAogICAgICAgICBpZiBub3Qgc2VsZi5pc19hbGl2ZSgpOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIlFlbXUgcGlkIGRpZG4ndCBhcHBlYXIgaW4gJXMgc2Vjb25kcyIgJSBzZWxmLnJ1bnFlbXV0aW1lKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIlFlbXUgcGlkIGRpZG4ndCBhcHBlYXIgaW4gJXMgc2Vjb25kcyAoJXMpIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5ydW5xZW11dGltZSwgdGltZS5zdHJmdGltZSgiJUQgJUg6JU06JVMiKSkpCiAgICAgICAgICAgICAjIER1bXAgYWxsIHByb2Nlc3NlcyB0byBoZWxwIHVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBpcyBnb2luZyBvbi4uLgogICAgICAgICAgICAgcHMgPSBzdWJwcm9jZXNzLlBvcGVuKFsncHMnLCAnYXh3dycsICctbycsICdwaWQscHBpZCxjb21tYW5kICddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5jb21tdW5pY2F0ZSgpWzBdCiAgICAgICAgICAgICBwcm9jZXNzZXMgPSBwcy5kZWNvZGUoInV0Zi04IikKQEAgLTIyNSw3ICsyMjcsOSBAQAogICAgICAgICAjIFdlIGFyZSBhbGl2ZTogcWVtdSBpcyBydW5uaW5nCiAgICAgICAgIG91dCA9IHNlbGYuZ2V0T3V0cHV0KG91dHB1dCkKICAgICAgICAgbmV0Y29uZiA9IEZhbHNlICMgbmV0d29yayBjb25maWd1cmF0aW9uIGlzIG5vdCByZXF1aXJlZCBieSBkZWZhdWx0Ci0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJxZW11IHN0YXJ0ZWQgaW4gJXMgc2Vjb25kcyAtIHFlbXUgcHJvY2NlcyBwaWQgaXMgJXMiICUgKHRpbWUudGltZSgpIC0gKGVuZHRpbWUgLSBzZWxmLnJ1bnFlbXV0aW1lKSwgc2VsZi5xZW11cGlkKSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInFlbXUgc3RhcnRlZCBpbiAlcyBzZWNvbmRzIC0gcWVtdSBwcm9jY2VzIHBpZCBpcyAlcyAoJXMpIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICh0aW1lLnRpbWUoKSAtIChlbmR0aW1lIC0gc2VsZi5ydW5xZW11dGltZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnFlbXVwaWQsIHRpbWUuc3RyZnRpbWUoIiVEICVIOiVNOiVTIikpKQogICAgICAgICBpZiBnZXRfaXA6CiAgICAgICAgICAgICBjbWRsaW5lID0gJycKICAgICAgICAgICAgIHdpdGggb3BlbignL3Byb2MvJXMvY21kbGluZScgJSBzZWxmLnFlbXVwaWQpIGFzIHA6CkBAIC0yNjksNyArMjczLDggQEAKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiLCBvdXQpCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJXYWl0aW5nIGF0IG1vc3QgJWQgc2Vjb25kcyBmb3IgbG9naW4gYmFubmVyIiAlIHNlbGYuYm9vdHRpbWUpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJXYWl0aW5nIGF0IG1vc3QgJWQgc2Vjb25kcyBmb3IgbG9naW4gYmFubmVyICglcykiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYm9vdHRpbWUsIHRpbWUuc3RyZnRpbWUoIiVEICVIOiVNOiVTIikpKQogICAgICAgICBlbmR0aW1lID0gdGltZS50aW1lKCkgKyBzZWxmLmJvb3R0aW1lCiAgICAgICAgIHNvY2tsaXN0ID0gW3NlbGYuc2VydmVyX3NvY2tldF0KICAgICAgICAgcmVhY2hlZGxvZ2luID0gRmFsc2UKQEAgLTI5OCwxNSArMzAzLDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfc29ja2V0ID0gcWVtdXNvY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcmVhZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFjaGVkbG9naW4gPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlYWNoZWQgbG9naW4gYmFubmVyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVhY2hlZCBsb2dpbiBiYW5uZXIgaW4gJXMgc2Vjb25kcyAoJXMpIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWUudGltZSgpIC0gKGVuZHRpbWUgLSBzZWxmLmJvb3R0aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCIlRCAlSDolTTolUyIpKSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gbmVlZCB0byBjaGVjayBpZiByZWFjaGVkbG9naW4gdW5sZXNzIHdlIHN1cHBvcnQgbXVsdGlwbGUgY29ubmVjdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJRRU1VIHNvY2tldCBkaXNjb25uZWN0ZWQgYmVmb3JlIGxvZ2luIGJhbm5lciByZWFjaGVkLiAoJXMpIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCIlRCAlSDolTTolUyIpKQogICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xpc3QucmVtb3ZlKHNvY2spCiAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3ByZWFkID0gVHJ1ZQogCiAKICAgICAgICAgaWYgbm90IHJlYWNoZWRsb2dpbjoKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJUYXJnZXQgZGlkbid0IHJlYWNoZWQgbG9naW4gYm9vdCBpbiAlZCBzZWNvbmRzIiAlIHNlbGYuYm9vdHRpbWUpCisgICAgICAgICAgICBpZiB0aW1lLnRpbWUoKSA+PSBlbmR0aW1lOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJUYXJnZXQgZGlkbid0IHJlYWNoIGxvZ2luIGJhbm5lciBpbiAlZCBzZWNvbmRzICglcykiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5ib290dGltZSwgdGltZS5zdHJmdGltZSgiJUQgJUg6JU06JVMiKSkpCiAgICAgICAgICAgICB0YWlsID0gbGFtYmRhIGw6ICJcbiIuam9pbihsLnNwbGl0bGluZXMoKVstMjU6XSkKICAgICAgICAgICAgICMgaW4gY2FzZSBib290bG9nIGlzIGVtcHR5LCB1c2UgdGFpbCBxZW11IGxvZyBzdG9yZSBhdCBzZWxmLm1zZwogICAgICAgICAgICAgbGluZXMgPSB0YWlsKGJvb3Rsb2cgaWYgYm9vdGxvZyBlbHNlIHNlbGYubXNnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9nY2M4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9nY2M4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNzMzMWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2djYzgucGF0Y2gKQEAgLTAsMCArMSw3NCBAQAorRnJvbSA1NjNiMWRhNmU2YWU3YWY0NmNjODM1NGNhZGI1ZGFiNDE2OTg5ZjBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBDaGFuZyA8bWNoYW5nQHN1c2UuY29tPgorRGF0ZTogTW9uLCAyNiBNYXIgMjAxOCAxNjo1MjozNCArMDgwMAorU3ViamVjdDogRml4IHBhY2tlZC1ub3QtYWxpZ25lZCBlcnJvciBvbiBHQ0MgOAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitXaGVuIGJ1aWxkaW5nIHdpdGggR0NDIDgsIHRoZXJlIGFyZSBzZXZlcmFsIGVycm9ycyByZWdhcmRpbmcgcGFja2VkLW5vdC1hbGlnbmVkLgorCisuL2luY2x1ZGUvZ3J1Yi9ncHRfcGFydGl0aW9uLmg6Nzk6MTogZXJyb3I6IGFsaWdubWVudCAxIG9mIOKAmHN0cnVjdCBncnViX2dwdF9wYXJ0ZW50cnnigJkgaXMgbGVzcyB0aGFuIDggWy1XZXJyb3I9cGFja2VkLW5vdC1hbGlnbmVkXQorCitUaGlzIHBhdGNoIGZpeGVzIHRoZSBidWlsZCBlcnJvciBieSBjbGVhbmluZyB1cCB0aGUgYW1iaWd1aXR5IG9mIHBsYWNpbmcKK2FsaWduZWQgc3RydWN0dXJlIGluIGEgcGFja2VkIG9uZS4gSW4gInN0cnVjdCBncnViX2J0cmZzX3RpbWUiIGFuZCAic3RydWN0CitncnViX2dwdF9wYXJ0X3R5cGUiLCB0aGUgYWxpZ25lZCBhdHRyaWJ1dGUgc2VlbXMgdG8gYmUgc3VwZXJmbHVvdXMsIGFuZCBhbHNvCitoYXMgdG8gYmUgcGFja2VkLCB0byBlbnN1cmUgdGhlIHN0cnVjdHVyZSBpcyBiaXQtdG8tYml0IG1hcHBlZCB0byB0aGUgZm9ybWF0CitsYWlkIG9uIGRpc2suIEkgdGhpbmsgd2UgY291bGQgYmxhbWUgdG8gY29weSBhbmQgcGFzdGUgZXJyb3IgaGVyZSBmb3IgdGhlCittaXN0YWtlLiBJbiAic3RydWN0IGVmaV92YXJpYWJsZSIsIHdlIGhhdmUgdG8gdXNlIGdydWJfZWZpX3BhY2tlZF9ndWlkX3QsIGFzCit0aGUgbmFtZSBzdWdnZXN0cy4gOikKKworU2lnbmVkLW9mZi1ieTogTWljaGFlbCBDaGFuZyA8bWNoYW5nQHN1c2UuY29tPgorVGVzdGVkLWJ5OiBNaWNoYWVsIENoYW5nIDxtY2hhbmdAc3VzZS5jb20+CitUZXN0ZWQtYnk6IFBhdWwgTWVuemVsIDxwYXVsZXBhbnRlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitSZXZpZXdlZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9ncnViLmdpdC9jb21taXQvP2lkPTU2M2IxZGE2ZTZhZTdhZjQ2Y2M4MzU0Y2FkYjVkYWI0MTY5ODlmMGEKKy0tLQorIGdydWItY29yZS9mcy9idHJmcy5jICAgICAgICAgIHwgMiArLQorIGluY2x1ZGUvZ3J1Yi9lZmllbXUvcnVudGltZS5oIHwgMiArLQorIGluY2x1ZGUvZ3J1Yi9ncHRfcGFydGl0aW9uLmggIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMgYi9ncnViLWNvcmUvZnMvYnRyZnMuYworaW5kZXggNDg0OWMxYy4uYmUxOTU0NCAxMDA2NDQKKy0tLSBhL2dydWItY29yZS9mcy9idHJmcy5jCisrKysgYi9ncnViLWNvcmUvZnMvYnRyZnMuYworQEAgLTE3NSw3ICsxNzUsNyBAQCBzdHJ1Y3QgZ3J1Yl9idHJmc190aW1lCisgeworICAgZ3J1Yl9pbnQ2NF90IHNlYzsKKyAgIGdydWJfdWludDMyX3QgbmFub3NlYzsKKy19IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICg0KSkpOworK30gR1JVQl9QQUNLRUQ7CisgCisgc3RydWN0IGdydWJfYnRyZnNfaW5vZGUKKyB7CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL2VmaWVtdS9ydW50aW1lLmggYi9pbmNsdWRlL2dydWIvZWZpZW11L3J1bnRpbWUuaAoraW5kZXggOWI2YjcyOS4uMzZkMmRlZCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZ3J1Yi9lZmllbXUvcnVudGltZS5oCisrKysgYi9pbmNsdWRlL2dydWIvZWZpZW11L3J1bnRpbWUuaAorQEAgLTI5LDcgKzI5LDcgQEAgc3RydWN0IGdydWJfZWZpZW11X3B0dl9yZWwKKyAKKyBzdHJ1Y3QgZWZpX3ZhcmlhYmxlCisgeworLSAgZ3J1Yl9lZmlfZ3VpZF90IGd1aWQ7CisrICBncnViX2VmaV9wYWNrZWRfZ3VpZF90IGd1aWQ7CisgICBncnViX3VpbnQzMl90IG5hbWVsZW47CisgICBncnViX3VpbnQzMl90IHNpemU7CisgICBncnViX2VmaV91aW50MzJfdCBhdHRyaWJ1dGVzOworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9ncHRfcGFydGl0aW9uLmggYi9pbmNsdWRlL2dydWIvZ3B0X3BhcnRpdGlvbi5oCitpbmRleCAxYjMyZjY3Li45NjY4YTY4IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9ncnViL2dwdF9wYXJ0aXRpb24uaAorKysrIGIvaW5jbHVkZS9ncnViL2dwdF9wYXJ0aXRpb24uaAorQEAgLTI4LDcgKzI4LDcgQEAgc3RydWN0IGdydWJfZ3B0X3BhcnRfdHlwZQorICAgZ3J1Yl91aW50MTZfdCBkYXRhMjsKKyAgIGdydWJfdWludDE2X3QgZGF0YTM7CisgICBncnViX3VpbnQ4X3QgZGF0YTRbOF07CistfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCg4KSkpOworK30gR1JVQl9QQUNLRUQ7CisgdHlwZWRlZiBzdHJ1Y3QgZ3J1Yl9ncHRfcGFydF90eXBlIGdydWJfZ3B0X3BhcnRfdHlwZV90OworIAorICNkZWZpbmUgR1JVQl9HUFRfUEFSVElUSU9OX1RZUEVfRU1QVFkgXAorLS0gCitjZ2l0IHYxLjAtNDEtZ2MzMzAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLW1vZHVsZS1leHBsaWNpdGx5LWtlZXBzLXN5bWJvbGUtLm1vZHVsZV9saWNlbnNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLW1vZHVsZS1leHBsaWNpdGx5LWtlZXBzLXN5bWJvbGUtLm1vZHVsZV9saWNlbnNlLnBhdGNoCmluZGV4IDkzNWM0NzIuLmZmYzJkNDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1tb2R1bGUtZXhwbGljaXRseS1rZWVwcy1zeW1ib2xlLS5tb2R1bGVfbGljZW5zZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItbW9kdWxlLWV4cGxpY2l0bHkta2VlcHMtc3ltYm9sZS0ubW9kdWxlX2xpY2Vuc2UucGF0Y2gKQEAgLTQzLDE5ICs0MywxNiBAQAogIGdydWItY29yZS9nZW5tb2Quc2guaW4gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZ2VubW9kLnNoLmluIGIvZ3J1Yi1jb3JlL2dlbm1vZC5zaC5pbgotaW5kZXggNzZkZjBiYi4uMzlhOWNmYyAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9nZW5tb2Quc2guaW4KLSsrKyBiL2dydWItY29yZS9nZW5tb2Quc2guaW4KLUBAIC01OSw3ICs1OSw3IEBAIGlmIHRlc3QgeEBUQVJHRVRfQVBQTEVfQ0NAICE9IHgxOyB0aGVuCitJbmRleDogZ3J1Yi0yLjAyL2dydWItY29yZS9nZW5tb2Quc2guaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBncnViLTIuMDIub3JpZy9ncnViLWNvcmUvZ2VubW9kLnNoLmluCisrKysgZ3J1Yi0yLjAyL2dydWItY29yZS9nZW5tb2Quc2guaW4KK0BAIC01Niw3ICs1Niw3IEBAIGlmIHRlc3QgeEBUQVJHRVRfQVBQTEVfTElOS0VSQCAhPSB4MTsgdGgKICAJaWYgdGVzdCB4QHBsYXRmb3JtQCAhPSB4ZW11OyB0aGVuCi0gCSAgICBAU1RSSVBAIC0tc3RyaXAtdW5uZWVkZWQgXAorIAkgICAgQFRBUkdFVF9TVFJJUEAgLS1zdHJpcC11bm5lZWRlZCBcCiAgCQktSyBncnViX21vZF9pbml0IC1LIGdydWJfbW9kX2ZpbmkgXAogLQkJLUsgX2dydWJfbW9kX2luaXQgLUsgX2dydWJfbW9kX2ZpbmkgXAogKwkJLUsgX2dydWJfbW9kX2luaXQgLUsgX2dydWJfbW9kX2ZpbmkgLUsgLm1vZHVsZV9saWNlbnNlIFwKICAJCS1SIC5ub3RlLmdudS5nb2xkLXZlcnNpb24gLVIgLm5vdGUuR05VLXN0YWNrIFwKLSAJCS1SIC5ub3RlIC1SIC5jb21tZW50ICR0bXBmaWxlIHx8IGV4aXQgMQorIAkJLVIgLm5vdGUgLVIgLmNvbW1lbnQgLVIgLkFSTS5leGlkeCAkdG1wZmlsZSB8fCBleGl0IDEKICAJZmkKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWJvb3Rjb25mXzEuMDAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItYm9vdGNvbmZfMS4wMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBmOGM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWJvb3Rjb25mXzEuMDAuYmIKQEAgLTAsMCArMSwyOSBAQAorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKK1NVTU1BUlkgPSAiQmFzaWMgZ3J1Yi5jZmcgZm9yIHVzZSBpbiBFRkkgc3lzdGVtcyIKKworUlBST1ZJREVTXyR7UE59ICs9ICJ2aXJ0dWFsL2dydWItYm9vdGNvbmYiCisKK2luaGVyaXQgZ3J1Yi1lZmktY2ZnCisKK1MgPSAiJHtXT1JLRElSfSIKKworR1JVQl9DRkcgPSAiJHtTfS9ncnViLWJvb3Rjb25mIgorTEFCRUxTID0gImJvb3QiCisKK1JPT1QgPz0gInJvb3Q9L2Rldi9zZGEyIgorCitweXRob24gZG9fY29uZmlndXJlKCkgeworICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnYnVpbGRfZWZpX2NmZycsIGQpCit9CisKK2RvX2NvbmZpZ3VyZVt2YXJkZXBzXSArPSAiQVBQRU5EIFJPT1QiCisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9L2Jvb3QKKwlpbnN0YWxsIC1kICR7RH0vYm9vdC9FRkkKKwlpbnN0YWxsIC1kICR7RH0vYm9vdC9FRkkvQk9PVAorCWluc3RhbGwgZ3J1Yi1ib290Y29uZiAke0R9L2Jvb3QvRUZJL0JPT1QvZ3J1Yi5jZmcKK30KKworRklMRVNfJHtQTn0gPSAiL2Jvb3QvRUZJL0JPT1QvZ3J1Yi5jZmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDIuYmIKaW5kZXggMTI4ZGExNi4uN2JmYzhlZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWVmaV8yLjAyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMi5iYgpAQCAtMyw3ICszLDcgQEAKIEdSVUJQTEFURk9STSA9ICJlZmkiCiAKIERFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ3J1Yi1lZmktbmF0aXZlIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImRpZmZ1dGlscyBmcmVldHlwZSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJkaWZmdXRpbHMgZnJlZXR5cGUgZ3J1Yi1jb21tb24gdmlydHVhbC9ncnViLWJvb3Rjb25mIgogCiBTUkNfVVJJICs9ICIgXAogICAgICAgICAgICBmaWxlOi8vY2ZnIFwKQEAgLTE1LDE2ICsxNSwyMiBAQAogcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKICAgICBpbXBvcnQgcmUKICAgICB0YXJnZXQgPSBkLmdldFZhcignVEFSR0VUX0FSQ0gnKQorICAgIHByZWZpeCA9ICIiIGlmIGQuZ2V0VmFyKCdFRklfUFJPVklERVInKSA9PSAiZ3J1Yi1lZmkiIGVsc2UgImdydWItZWZpLSIKICAgICBpZiB0YXJnZXQgPT0gIng4Nl82NCI6CiAgICAgICAgIGdydWJ0YXJnZXQgPSAneDg2XzY0JwotICAgICAgICBncnViaW1hZ2UgPSAiZ3J1Yi1lZmktYm9vdHg2NC5lZmkiCisgICAgICAgIGdydWJpbWFnZSA9IHByZWZpeCArICJib290eDY0LmVmaSIKICAgICBlbGlmIHJlLm1hdGNoKCdpLjg2JywgdGFyZ2V0KToKICAgICAgICAgZ3J1YnRhcmdldCA9ICdpMzg2JwotICAgICAgICBncnViaW1hZ2UgPSAiZ3J1Yi1lZmktYm9vdGlhMzIuZWZpIgorICAgICAgICBncnViaW1hZ2UgPSBwcmVmaXggKyAiYm9vdGlhMzIuZWZpIgorICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQnLCB0YXJnZXQpOgorICAgICAgICBncnVidGFyZ2V0ID0gJ2FybTY0JworICAgICAgICBncnViaW1hZ2UgPSBwcmVmaXggKyAiYm9vdGFhNjQuZWZpIgogICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJncnViLWVmaSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0YXJnZXQgJXMiICUgdGFyZ2V0KQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJncnViLWVmaSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0YXJnZXQgJXMiICUgdGFyZ2V0KQogICAgIGQuc2V0VmFyKCJHUlVCX1RBUkdFVCIsIGdydWJ0YXJnZXQpCiAgICAgZC5zZXRWYXIoIkdSVUJfSU1BR0UiLCBncnViaW1hZ2UpCisgICAgcHJlZml4ID0gImdydWItZWZpLSIgaWYgcHJlZml4ID09ICIiIGVsc2UgIiIKKyAgICBkLnNldFZhcigiR1JVQl9JTUFHRV9QUkVGSVgiLCBwcmVmaXgpCiB9CiAKIGluaGVyaXQgZGVwbG95CkBAIC0zNiwxMiArNDIsMzYgQEAKICMgYW5kIG1hbnkgb3RoZXIgcGxhY2VzIGluIHRoZSBncnViIGNvZGUgd2hlbiBjb21waWxlZCB3aXRoIHNvbWUgbmF0aXZlIGdjYyBjb21waWxlcnMgKHNwZWNpZmljYWxseSwgZ2VudG9vKQogQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1Xbm8tZXJyb3I9dHJhbXBvbGluZXMiCiAKK2RvX21raW1hZ2UoKSB7CisJY2QgJHtCfQorCSMgU2VhcmNoIGZvciB0aGUgZ3J1Yi5jZmcgb24gdGhlIGxvY2FsIGJvb3QgbWVkaWEgYnkgdXNpbmcgdGhlCisJIyBidWlsdCBpbiBjZmcgZmlsZSBwcm92aWRlZCB2aWEgdGhpcyByZWNpcGUKKwlncnViLW1raW1hZ2UgLWMgLi4vY2ZnIC1wIC9FRkkvQk9PVCAtZCAuL2dydWItY29yZS8gXAorCSAgICAgICAgICAgICAgIC1PICR7R1JVQl9UQVJHRVR9LWVmaSAtbyAuLyR7R1JVQl9JTUFHRV9QUkVGSVh9JHtHUlVCX0lNQUdFfSBcCisJICAgICAgICAgICAgICAgJHtHUlVCX0JVSUxESU59Cit9CisKK2FkZHRhc2sgbWtpbWFnZSBiZWZvcmUgZG9faW5zdGFsbCBhZnRlciBkb19jb21waWxlCisKK2RvX21raW1hZ2VfY2xhc3MtbmF0aXZlKCkgeworCToKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCWluc3RhbGwgLWQgJHtEfS9ib290CisJaW5zdGFsbCAtZCAke0R9L2Jvb3QvRUZJCisJaW5zdGFsbCAtZCAke0R9L2Jvb3QvRUZJL0JPT1QKKwlpbnN0YWxsIC1tIDY0NCAke0J9LyR7R1JVQl9JTUFHRV9QUkVGSVh9JHtHUlVCX0lNQUdFfSAke0R9L2Jvb3QvRUZJL0JPT1QvJHtHUlVCX0lNQUdFfQorfQorCiBkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KIAlpbnN0YWxsIC1tIDc1NSBncnViLW1raW1hZ2UgJHtEfSR7YmluZGlyfQogfQogCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Citkb19pbnN0YWxsX2NsYXNzLXRhcmdldCgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIC1DIGdydWItY29yZSBpbnN0YWxsCisKICAgICAjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMuLi4KICAgICBmaW5kICIke0R9IiAtbmFtZSBtb2RpbmZvLnNoIC10eXBlIGYgLWV4ZWMgXAogICAgICAgICBzZWQgLWkgXApAQCAtNTIsMTUgKzgyLDEwIEBACiB9CiAKIEdSVUJfQlVJTERJTiA/PSAiYm9vdCBsaW51eCBleHQyIGZhdCBzZXJpYWwgcGFydF9tc2RvcyBwYXJ0X2dwdCBub3JtYWwgXAotICAgICAgICAgICAgICAgICBlZmlfZ29wIGlzbzk2NjAgc2VhcmNoIGxvYWRlbnYgdGVzdCIKKyAgICAgICAgICAgICAgICAgZWZpX2dvcCBpc285NjYwIGNvbmZpZ2ZpbGUgc2VhcmNoIGxvYWRlbnYgdGVzdCIKIAogZG9fZGVwbG95KCkgewotCSMgU2VhcmNoIGZvciB0aGUgZ3J1Yi5jZmcgb24gdGhlIGxvY2FsIGJvb3QgbWVkaWEgYnkgdXNpbmcgdGhlCi0JIyBidWlsdCBpbiBjZmcgZmlsZSBwcm92aWRlZCB2aWEgdGhpcyByZWNpcGUKLQlncnViLW1raW1hZ2UgLWMgLi4vY2ZnIC1wIC9FRkkvQk9PVCAtZCAuL2dydWItY29yZS8gXAotCSAgICAgICAgICAgICAgIC1PICR7R1JVQl9UQVJHRVR9LWVmaSAtbyAuLyR7R1JVQl9JTUFHRX0gXAotCSAgICAgICAgICAgICAgICR7R1JVQl9CVUlMRElOfQotCWluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtHUlVCX0lNQUdFfSAke0RFUExPWURJUn0KKwlpbnN0YWxsIC1tIDY0NCAke0J9LyR7R1JVQl9JTUFHRV9QUkVGSVh9JHtHUlVCX0lNQUdFfSAke0RFUExPWURJUn0KIH0KIAogZG9fZGVwbG95X2NsYXNzLW5hdGl2ZSgpIHsKQEAgLTY5LDkgKzk0LDExIEBACiAKIGFkZHRhc2sgZGVwbG95IGFmdGVyIGRvX2luc3RhbGwgYmVmb3JlIGRvX2J1aWxkCiAKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3J1Yi8ke0dSVUJfVEFSR0VUfS1lZmkgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ3J1YiBcCi0gICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2dydWIvJHtHUlVCX1RBUkdFVH0tZWZpIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ3J1YiBcCisgICAgICAgICAgICAgICAvYm9vdC9FRkkvQk9PVC8ke0dSVUJfSU1BR0V9IFwKKyAgICAgICAgICAgICAgICIKKwogCiAjIDY0LWJpdCBiaW5hcmllcyBhcmUgZXhwZWN0ZWQgZm9yIHRoZSBib290bG9hZGVyIHdpdGggYW4geDMyIHVzZXJsYW5kCiBJTlNBTkVfU0tJUF8ke1BOfV9hcHBlbmRfbGludXgtZ251eDMyID0gIiBhcmNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwppbmRleCAyOGY5NmJiLi5hOGYzMzVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwpAQCAtMTgsNiArMTgsNyBAQAogICAgICAgICAgICBmaWxlOi8vZ3J1Yi1tb2R1bGUtZXhwbGljaXRseS1rZWVwcy1zeW1ib2xlLS5tb2R1bGVfbGljZW5zZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdydWIuZC0xMF9saW51eC5pbi1hZGQtb2Utcy1rZXJuZWwtbmFtZS5wYXRjaCBcCiAJICAgZmlsZTovL2ZpeC5idWlsZC53aXRoLmdjYy03LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2djYzgucGF0Y2ggXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjExMTZkMWY2MGM4NDBlNmRiZDY3YWJiYzk5YWNiNDVkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2MGVlMTM2ZmJjZWUwODg1ODUxNmVkNGRlMmFkODcwNjhiZmUxYjZiOGIzNzg5NmNlMzUyOWZmMDU0YTcyNmQiCkBAIC00Nyw3ICs0OCw3IEBACiAKIFBBQ0tBR0VDT05GSUcgPz89ICIiCiBQQUNLQUdFQ09ORklHW2dydWItbW91bnRdID0gIi0tZW5hYmxlLWdydWItbW91bnQsLS1kaXNhYmxlLWdydWItbW91bnQsZnVzZSIKLVBBQ0tBR0VDT05GSUdbZGV2aWNlLW1hcHBlcl0gPSAiLS1lbmFibGUtZGV2aWNlLW1hcHBlciwtLWRpc2FibGUtZGV2aWNlLW1hcHBlcixsdm0yIgorUEFDS0FHRUNPTkZJR1tkZXZpY2UtbWFwcGVyXSA9ICItLWVuYWJsZS1kZXZpY2UtbWFwcGVyLC0tZGlzYWJsZS1kZXZpY2UtbWFwcGVyLGxpYmRldm1hcHBlciIKIAogIyBncnViMiBjcmVhdGVzIGl0cyBvd24gc2V0IG9mIC1ub3N0ZGluYyAvIC1pc3lzdGVtIC8gLWZmcmVlc3RhbmRpbmcgQ0ZMQUdTIGFuZAogIyBPRSdzIGRlZmF1bHQgQlVJTERfQ0ZMQUdTIChhc3NpZ25lZCB0byBDRkxBR1MgZm9yIG5hdGl2ZSBidWlsZHMpIGV0YywgY29uZmxpY3QKQEAgLTY3LDEyICs2OCw0IEBACiAJJHtTfS9hdXRvZ2VuLnNoICkKIH0KIAotIyBncnViIGFuZCBncnViLWVmaSdzIHN5c3Jvb3QvJHtkYXRhZGlyfS9ncnViL2dydWItbWtjb25maWdfbGliIGFyZQotIyBjb25mbGljdGVkLCByZW1vdmUgaXQgc2luY2Ugbm8gb25lIHVzZXMgaXQuCi1TWVNST09UX0RJUlNfQkxBQ0tMSVNUICs9ICIke2RhdGFkaXJ9L2dydWIvZ3J1Yi1ta2NvbmZpZ19saWIiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1lZGl0ZW52IgotCi1GSUxFU18ke1BOfS1lZGl0ZW52ID0gIiR7YmluZGlyfS9ncnViLWVkaXRlbnYiCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tZWRpdGVudiIKIFJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfMi4wMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAyLmJiCmluZGV4IDNlNjFmNmEuLmUwOTczNzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAyLmJiCkBAIC0xLDYgKzEsMTggQEAKIHJlcXVpcmUgZ3J1YjIuaW5jCiAKLVJERVBFTkRTXyR7UE59ICs9ICJkaWZmdXRpbHMgZnJlZXR5cGUiCitSREVQRU5EU18ke1BOfS1jb21tb24gKz0gIiR7UE59LWVkaXRlbnYiCitSREVQRU5EU18ke1BOfSArPSAiZGlmZnV0aWxzIGZyZWV0eXBlICR7UE59LWNvbW1vbiIKKworUlBST1ZJREVTXyR7UE59LWVkaXRlbnYgKz0gIiR7UE59LWVmaS1lZGl0ZW52IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZWRpdGVudiAke1BOfS1jb21tb24iCitGSUxFU18ke1BOfS1lZGl0ZW52ID0gIiR7YmluZGlyfS9ncnViLWVkaXRlbnYiCitGSUxFU18ke1BOfS1jb21tb24gPSAiIFwKKyAgICAke2JpbmRpcn0gXAorICAgICR7c3lzY29uZmRpcn0gXAorICAgICR7c2JpbmRpcn0gXAorICAgICR7ZGF0YWRpcn0vZ3J1YiBcCisiCiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2dydWIuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL0NPUFlJTkcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvQ09QWUlORy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVjNzBjOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvQ09QWUlORy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0NiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW290aGVyXQotCi1kaWZmIC1ydU4gaG9zdGFwLWNvbmYtMS4wLW9yaWcvQ09QWUlORyBob3N0YXAtY29uZi0xLjAvQ09QWUlORwotLS0tIGhvc3RhcC1jb25mLTEuMC1vcmlnL0NPUFlJTkcJMTk3MC0wMS0wMSAwODowMDowMC4wMDAwMDAwMDAgKzA4MDAKLSsrKyBob3N0YXAtY29uZi0xLjAvQ09QWUlORwkyMDEwLTEyLTA5IDE2OjM2OjQ4LjAwMDAwMDAwMCArMDgwMAotQEAgLTAsMCArMSwzNDAgQEAKLSsJCSAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQotKwkJICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCi0rCi0rIENvcHlyaWdodCAoQykgMTk4OSwgMTk5MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICAgICAgICAgICAgICAgICAgICAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKLSsgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCi0rIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgotKwotKwkJCSAgICBQcmVhbWJsZQotKwotKyAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgotK2ZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0rTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJlZQotK3NvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCi0rR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcHBsaWVzIHRvIG1vc3Qgb2YgdGhlIEZyZWUgU29mdHdhcmUKLStGb3VuZGF0aW9uJ3Mgc29mdHdhcmUgYW5kIHRvIGFueSBvdGhlciBwcm9ncmFtIHdob3NlIGF1dGhvcnMgY29tbWl0IHRvCi0rdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQotK3RoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwotK3lvdXIgcHJvZ3JhbXMsIHRvby4KLSsKLSsgIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKLStwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91Ci0raGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgotK3RoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAotK2lmIHlvdSB3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0Ci0raW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgotKwotKyAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBtYWtlIHJlc3RyaWN0aW9ucyB0aGF0IGZvcmJpZAotK2FueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KLStUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQotK2Rpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYgeW91IG1vZGlmeSBpdC4KLSsKLSsgIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKLStncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQKLSt5b3UgaGF2ZS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQotK3NvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKLStyaWdodHMuCi0rCi0rICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCi0rKDIpIG9mZmVyIHlvdSB0aGlzIGxpY2Vuc2Ugd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwKLStkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIHNvZnR3YXJlLgotKwotKyAgQWxzbywgZm9yIGVhY2ggYXV0aG9yJ3MgcHJvdGVjdGlvbiBhbmQgb3Vycywgd2Ugd2FudCB0byBtYWtlIGNlcnRhaW4KLSt0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQotK3NvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQotK3dhbnQgaXRzIHJlY2lwaWVudHMgdG8ga25vdyB0aGF0IHdoYXQgdGhleSBoYXZlIGlzIG5vdCB0aGUgb3JpZ2luYWwsIHNvCi0rdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwKLSthdXRob3JzJyByZXB1dGF0aW9ucy4KLSsKLSsgIEZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCi0rcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQotK3Byb2dyYW0gd2lsbCBpbmRpdmlkdWFsbHkgb2J0YWluIHBhdGVudCBsaWNlbnNlcywgaW4gZWZmZWN0IG1ha2luZyB0aGUKLStwcm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQgY2xlYXIgdGhhdCBhbnkKLStwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgotKwotKyAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKLSttb2RpZmljYXRpb24gZm9sbG93LgotKwwKLSsJCSAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQotKyAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTgotKwotKyAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwotK2Egbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkCi0rdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAiUHJvZ3JhbSIsIGJlbG93LAotK3JlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgotK21lYW5zIGVpdGhlciB0aGUgUHJvZ3JhbSBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyIGNvcHlyaWdodCBsYXc6Ci0rdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwKLStlaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgotK2xhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBpbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4KLSt0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KLSsKLStBY3Rpdml0aWVzIG90aGVyIHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gYXJlIG5vdAotK2NvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKLStydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCi0raXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50cyBjb25zdGl0dXRlIGEgd29yayBiYXNlZCBvbiB0aGUKLStQcm9ncmFtIChpbmRlcGVuZGVudCBvZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLgotK1doZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgotKwotKyAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzCi0rc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91Ci0rY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBhcHByb3ByaWF0ZQotK2NvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0IGFsbCB0aGUKLStub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7Ci0rYW5kIGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5zZQotK2Fsb25nIHdpdGggdGhlIFByb2dyYW0uCi0rCi0rWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRoZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kCi0reW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhIGZlZS4KLSsKLSsgIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24KLStvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kCi0rZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCi0rYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKLSsKLSsgICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCi0rICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCi0rCi0rICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgotKyAgICB3aG9sZSBvciBpbiBwYXJ0IGNvbnRhaW5zIG9yIGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkKLSsgICAgcGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJnZSB0byBhbGwgdGhpcmQKLSsgICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgotKwotKyAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21tYW5kcyBpbnRlcmFjdGl2ZWx5Ci0rICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKLSsgICAgaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBtb3N0IG9yZGluYXJ5IHdheSwgdG8gcHJpbnQgb3IgZGlzcGxheSBhbgotKyAgICBhbm5vdW5jZW1lbnQgaW5jbHVkaW5nIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKLSsgICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCi0rICAgIGEgd2FycmFudHkpIGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1dGUgdGhlIHByb2dyYW0gdW5kZXIKLSsgICAgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhlIHVzZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKLSsgICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKLSsgICAgZG9lcyBub3Qgbm9ybWFsbHkgcHJpbnQgc3VjaCBhbiBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBvbgotKyAgICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50LikKLSsMCi0rVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgotK2lkZW50aWZpYWJsZSBzZWN0aW9ucyBvZiB0aGF0IHdvcmsgYXJlIG5vdCBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0sCi0rYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCi0rdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQotK3NlY3Rpb25zIHdoZW4geW91IGRpc3RyaWJ1dGUgdGhlbSBhcyBzZXBhcmF0ZSB3b3Jrcy4gIEJ1dCB3aGVuIHlvdQotK2Rpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZAotK29uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgotK3RoaXMgTGljZW5zZSwgd2hvc2UgcGVybWlzc2lvbnMgZm9yIG90aGVyIGxpY2Vuc2VlcyBleHRlbmQgdG8gdGhlCi0rZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlIGl0LgotKwotK1RodXMsIGl0IGlzIG5vdCB0aGUgaW50ZW50IG9mIHRoaXMgc2VjdGlvbiB0byBjbGFpbSByaWdodHMgb3IgY29udGVzdAotK3lvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0bwotK2V4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgotK2NvbGxlY3RpdmUgd29ya3MgYmFzZWQgb24gdGhlIFByb2dyYW0uCi0rCi0rSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQotK3dpdGggdGhlIFByb2dyYW0gKG9yIHdpdGggYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtKSBvbiBhIHZvbHVtZSBvZgotK2Egc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCi0rdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KLSsKLSsgIDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYSB3b3JrIGJhc2VkIG9uIGl0LAotK3VuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgotK1NlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBkbyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKLSsKLSsgICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQotKyAgICBzb3VyY2UgY29kZSwgd2hpY2ggbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMKLSsgICAgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCi0rCi0rICAgIGIpIEFjY29tcGFueSBpdCB3aXRoIGEgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlCi0rICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9yIGEgY2hhcmdlIG5vIG1vcmUgdGhhbiB5b3VyCi0rICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKLSsgICAgbWFjaGluZS1yZWFkYWJsZSBjb3B5IG9mIHRoZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCB0byBiZQotKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQotKyAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCi0rCi0rICAgIGMpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9mZmVyCi0rICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCi0rICAgIGFsbG93ZWQgb25seSBmb3Igbm9uY29tbWVyY2lhbCBkaXN0cmlidXRpb24gYW5kIG9ubHkgaWYgeW91Ci0rICAgIHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRoIHN1Y2gKLSsgICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCi0rCi0rVGhlIHNvdXJjZSBjb2RlIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrIGZvcgotK21ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCi0rY29kZSBtZWFucyBhbGwgdGhlIHNvdXJjZSBjb2RlIGZvciBhbGwgbW9kdWxlcyBpdCBjb250YWlucywgcGx1cyBhbnkKLSthc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8KLStjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCi0rc3BlY2lhbCBleGNlcHRpb24sIHRoZSBzb3VyY2UgY29kZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlCi0rYW55dGhpbmcgdGhhdCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkKLStmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQotK29wZXJhdGluZyBzeXN0ZW0gb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50Ci0raXRzZWxmIGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLgotKwotK0lmIGRpc3RyaWJ1dGlvbiBvZiBleGVjdXRhYmxlIG9yIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcKLSthY2Nlc3MgdG8gY29weSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50Ci0rYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCi0rZGlzdHJpYnV0aW9uIG9mIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90Ci0rY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KLSsMCi0rICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KLStleGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0Ci0rb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCi0rdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgotK0hvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZyb20geW91IHVuZGVyCi0rdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKLStwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCi0rCi0rICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKLStzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgotK2Rpc3RyaWJ1dGUgdGhlIFByb2dyYW0gb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQotK3Byb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKLSttb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKLStQcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAotK2FsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKLSt0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KLSsKLSsgIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKLStQcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQotK29yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUgb3IgbW9kaWZ5IHRoZSBQcm9ncmFtIHN1YmplY3QgdG8KLSt0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgotK3Jlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KLStZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB0bwotK3RoaXMgTGljZW5zZS4KLSsKLSsgIDcuIElmLCBhcyBhIGNvbnNlcXVlbmNlIG9mIGEgY291cnQganVkZ21lbnQgb3IgYWxsZWdhdGlvbiBvZiBwYXRlbnQKLStpbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLAotK2NvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKLStvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90Ci0rZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKLStkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCi0rTGljZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNlIHlvdQotK21heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKLStsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5Ci0rYWxsIHRob3NlIHdobyByZWNlaXZlIGNvcGllcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggeW91LCB0aGVuCi0rdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwotK3JlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCi0rCi0rSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCi0rYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0bwotK2FwcGx5IGFuZCB0aGUgc2VjdGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyCi0rY2lyY3Vtc3RhbmNlcy4KLSsKLStJdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5b3UgdG8gaW5mcmluZ2UgYW55Ci0rcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKLStzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCi0raW50ZWdyaXR5IG9mIHRoZSBmcmVlIHNvZnR3YXJlIGRpc3RyaWJ1dGlvbiBzeXN0ZW0sIHdoaWNoIGlzCi0raW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCi0rZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAotK3Rocm91Z2ggdGhhdCBzeXN0ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlvbiBvZiB0aGF0Ci0rc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwotK3RvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAotK2ltcG9zZSB0aGF0IGNob2ljZS4KLSsKLStUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KLStiZSBhIGNvbnNlcXVlbmNlIG9mIHRoZSByZXN0IG9mIHRoaXMgTGljZW5zZS4KLSsMCi0rICA4LiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIFByb2dyYW0gaXMgcmVzdHJpY3RlZCBpbgotK2NlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQotK29yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIExpY2Vuc2UKLSttYXkgYWRkIGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcKLSt0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCi0rY291bnRyaWVzIG5vdCB0aHVzIGV4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzCi0rdGhlIGxpbWl0YXRpb24gYXMgaWYgd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCi0rCi0rICA5LiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucwotK29mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbAotK2JlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwotK2FkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgotKwotK0VhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0KLStzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQgImFueQotK2xhdGVyIHZlcnNpb24iLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMKLStlaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQotK1NvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YKLSt0aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rRm91bmRhdGlvbi4KLSsKLSsgIDEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUKLStwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCi0rdG8gYXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdoaWNoIGlzIGNvcHlyaWdodGVkIGJ5IHRoZSBGcmVlCi0rU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzCi0rbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKLStvZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kCi0rb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nIGFuZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCi0rCi0rCQkJICAgIE5PIFdBUlJBTlRZCi0rCi0rICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKLStGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4KLStPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTCi0rUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKLStPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMKLStUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFCi0rUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsCi0rUkVQQUlSIE9SIENPUlJFQ1RJT04uCi0rCi0rICAxMi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCi0rV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZIEFORC9PUgotK1JFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCi0rSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HCi0rT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRAotK1RPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQotK1lPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSCi0rUFJPR1JBTVMpLCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFCi0rUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgotKwotKwkJICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKLSsMCi0rCSAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKLSsKLSsgIElmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ugd2FudCBpdCB0byBiZSBvZiB0aGUgZ3JlYXRlc3QKLStwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0Ci0rZnJlZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVybXMuCi0rCi0rICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAotK3RvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKLStjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAotK3RoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgotKwotKyAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgotKyAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgotKwotKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCi0rCi0rCi0rQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCi0rCi0rSWYgdGhlIHByb2dyYW0gaXMgaW50ZXJhY3RpdmUsIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQgbm90aWNlIGxpa2UgdGhpcwotK3doZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6Ci0rCi0rICAgIEdub21vdmlzaW9uIHZlcnNpb24gNjksIENvcHlyaWdodCAoQykgeWVhciBuYW1lIG9mIGF1dGhvcgotKyAgICBHbm9tb3Zpc2lvbiBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCi0rICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKLSsgICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlIGBzaG93IGMnIGZvciBkZXRhaWxzLgotKwotK1RoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQotK3BhcnRzIG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB0aGUgY29tbWFuZHMgeW91IHVzZSBtYXkKLStiZSBjYWxsZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYHNob3cgdycgYW5kIGBzaG93IGMnOyB0aGV5IGNvdWxkIGV2ZW4gYmUKLSttb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgotKwotK1lvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5b3VyCi0rc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKLStuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6Ci0rCi0rICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCi0rICBgR25vbW92aXNpb24nICh3aGljaCBtYWtlcyBwYXNzZXMgYXQgY29tcGlsZXJzKSB3cml0dGVuIGJ5IEphbWVzIEhhY2tlci4KLSsKLSsgIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQotKyAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKLSsKLStUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KLStwcm9wcmlldGFyeSBwcm9ncmFtcy4gIElmIHlvdXIgcHJvZ3JhbSBpcyBhIHN1YnJvdXRpbmUgbGlicmFyeSwgeW91IG1heQotK2NvbnNpZGVyIGl0IG1vcmUgdXNlZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9ucyB3aXRoIHRoZQotK2xpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbAotK1B1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL2hvc3RhcC1mdy1sb2FkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL2hvc3RhcC1mdy1sb2FkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTBiZGMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXAtZnctbG9hZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLQotIwotIyBQYXRjaCBtYW5hZ2VkIGJ5IGh0dHA6Ly93d3cuaG9sZ2Vyc2NodXJpZy5kZS9wYXRjaGVyLmh0bWwKLSMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi0tLS0gaG9zdGFwLXV0aWxzLTAuMi40L2hvc3RhcF9md19sb2Fkfmhvc3RhcC1mdy1sb2FkCi0rKysgaG9zdGFwLXV0aWxzLTAuMi40L2hvc3RhcF9md19sb2FkCi1AQCAtNiw5ICs2LDkgQEAKLSAjIEZpcm13YXJlIGltYWdlcyBmb3IgdGhlIGNhcmQKLSAjIFRPRE86IGNvdWxkIHRyeSB0byBzZWxlY3QgY29ycmVjdCBmaXJtd2FyZSB0eXBlIGF1dG9tYXRpY2FsbHkKLSAKLS1QUkk9L2V0Yy9wY21jaWEvUE0wMTAxMDIuSEVYCi0tU1RBPS9ldGMvcGNtY2lhL1JGMDEwODAyLkhFWAotLVBSSVNNMl9TUkVDPS91c3IvbG9jYWwvYmluL3ByaXNtMl9zcmVjCi0rUFJJPS9ldGMvcGNtY2lhL3BtMDEwMTAyLmhleAotK1NUQT0vZXRjL3BjbWNpYS9yZjAxMDgwNC5oZXgKLStQUklTTTJfU1JFQz0vdXNyL3NiaW4vcHJpc20yX3NyZWMKLSAKLSBzZXQgLWUKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXBfY3MuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXBfY3MuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRkYTgyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvaG9zdGFwX2NzLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotbW9kdWxlICJob3N0YXBfY3MiIG9wdHMgImNoYW5uZWw9MyBpd19tb2RlPTIgZXNzaWQ9YW55IGlnbm9yZV9jaXNfdmNjPTEiCi0KLWNhcmQgIkFjdGlvbnRlYyA4MDJDSTIiCi0gIG1hbmZpZCAweDE2NjgsIDB4MDEwMQotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkFpcldheSA4MDIuMTEgQWRhcHRlciAoUENNQ0lBKSIKLSAgI3ZlcnNpb24gIkFpcldheSIsICI4MDIuMTEgQWRhcHRlciAoUENNQ0lBKSIKLSAgbWFuZmlkIDB4MDI2MSwgMHgwMDAyCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQXN1cyBTcGFjZUxpbmsgV0wxMTAiCi0gICBtYW5maWQgMHgwMmFhLDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi0jIyBoYW5kaGVsZHMub3JnIGJ1ZyA5NjQKLWNhcmQgIkJlbGtpbiBGNUQ2MDYwIEV0aGVybmV0IgotICAgI3ZlcnNpb24gIlBDTUNJQSIsICIxMU0gV0xBTiBDYXJkIHYyLjUiLCAiSVNMMzczMDBQIiwgIlJldkEiCi0gICBtYW5maWQgMHgwMjc0LCAweDE2MTIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQ29tcGFxIDExTWJwcyBXaXJlbGVzcyBQQyBDYXJkIgotICBtYW5maWQgMHgwMjhhLCAweDAwMDIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJDb21wYXEgV0wxMDAgMTEgTWJwcyBXaXJlbGVzcyBBZGFwdGVyIgotICBtYW5maWQgMHgwMTM4LCAweDAwMDIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJDb21wYXEgSE5XLTEwMCAxMSBNYnBzIFdpcmVsZXNzIEFkYXB0ZXIiCi0gIG1hbmZpZCAweDAyOGEsIDB4MDAwMgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkQtTGluayBEV0wtNjUwIgotICB2ZXJzaW9uICJEIiwgIkxpbmsgRFdMLTY1MCAxMU1icHMgV0xBTiBDYXJkIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkQtTGluayBEUkMtNjUwIgotICB2ZXJzaW9uICJEIiwgIkxpbmsgRFJDLTY1MCAxMU1icHMgV0xBTiBDYXJkIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkQtTGluayBEQ0Y2NjAiCi0gIG1hbmZpZCAweGQ2MDEsIDB4MDAwNQotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkZhcmFsbG9uIFNreUxJTkUiCi0gIHZlcnNpb24gIklOVEVSU0lMIiwgIkhGQTM4NHgvSUVFRSIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJIeXBlckxpbmsgV2lyZWxlc3MgUEMgQ2FyZCAxMU1icHMiCi0gIHZlcnNpb24gIkh5cGVyTGluayIsICJXaXJlbGVzcyBQQyBDYXJkIDExTWJwcyIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi0jIGNhcmQgIkludGVyc2lsIFBSSVNNMiAxMSBNYnBzIFdpcmVsZXNzIEFkYXB0ZXIiCi0jICAgbWFuZmlkIDB4MDE1NiwgMHgwMDAyCi0jICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkxBNDExMSBTcGVjdHJ1bTI0IFdpcmVsZXNzIExBTiBQQyBDYXJkIgotICB2ZXJzaW9uICJTeW1ib2wgVGVjaG5vbG9naWVzIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkxpbmtzeXMgV1BDMTEgMTFNYnBzIDgwMi4xMWIgV0xBTiBDYXJkIgotICB2ZXJzaW9uICJJbnN0YW50IFdpcmVsZXNzICIsICIgTmV0d29yayBQQyBDQVJEIiwgIlZlcnNpb24gMDEuMDIiCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGlua3N5cyBXQ0YxMSAxMU1icHMgODAyLjExYiBXTEFOIENhcmQiCi0gICBtYW5maWQgMHgwMjc0LCAweDMzMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgYmluZCAiaG9zdGFwX2NzIiAKLQotIyMgaGFuZGhlbGRzLm9yZyBidWcgIzc5MAotY2FyZCAiTGlua3N5cyBXaXJlbGVzcyBDb21wYWN0Rmxhc2ggQ2FyZCBXQ0YxMiIKLSAgbWFuZmlkIDB4MDI4YSwgMHgwNjczCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGlua3N5cyBXTEFOIENGIENhcmQiCi0gIG1hbmZpZCAweDAyNzQsIDB4MzMwMQotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIk5FVEdFQVIgTUE3MDEgV2lyZWxlc3MgQ0YgQ2FyZCIKLSAgbWFuZmlkIDB4ZDYwMSwgMHgwMDAyCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTm9ydGVsIE5ldHdvcmtzIGVNb2JpbGl0eSA4MDIuMTEgV2lyZWxlc3MgQWRhcHRlciIKLSAgbWFuZmlkIDB4MDFlYiwgMHgwODBhCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiUExBTkVYIEdlb1dhdmUgR1ctQ0YxMTAiCi0gIHZlcnNpb24gIlBMQU5FWCIsICJHZW9XYXZlL0dXLUNGMTEwIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlBST1hJTSBMQU4gUEMgQ0FSRCBIQVJNT05ZIDgwMjExQiIKLSAgdmVyc2lvbiAiUFJPWElNIiwgIkxBTiBQQyBDQVJEIEhBUk1PTlkgODAyMTFCIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlByb3hpbSBSYW5nZUxBTi9EUyIKLSAgdmVyc2lvbiAiUFJPWElNIiwiUmFuZ2VMQU4tRFMvTEFOIFBDIENBUkQiCi0gIG1hbmZpZCAweDAxMjYsIDB4ODAwMAotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNhZmV3YXkgODAyLjExYiBXaXJlbGVzcyBBZGFwdGVyIgotICBtYW5maWQgMHhkNjAxLCAweDAwMDIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJTQU1TVU5HIDExTWJwcyBXTEFOIENhcmQiCi0gIHZlcnNpb24gIlNBTVNVTkciLCAiMTFNYnBzIFdMQU4gQ2FyZCIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi0jIG5lZWRzIGZpcm13YXJlIHVwbG9hZCB2aWEgaG9zdGFwX2Z3X2xvYWQKLWNhcmQgIlNhbkRpc2sgQ29ubmVjdFBsdXMgT0VNICgwTUIpIgotICAgbWFuZmlkIDB4ZDYwMSwgMHgwMDEwCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLSMgbmVlZHMgc3BlY2lhbCBhY3RpdmF0aW9uICg+PWhvc3RhcCAwLjMuMiBvbmx5KSBwbHVzIGZpcm13YXJlIHVwbG9hZAotY2FyZCAiU2FuRGlzayBDb25uZWN0UGx1cyB3LyBNZW1vcnkiCi0gICB2ZXJzaW9uICJTYW5EaXNrIiwgIkNvbm5lY3RQbHVzIgotICAgbWFuZmlkIDB4ZDYwMSwgMHgwMTAxCi0gICBiaW5kICJob3N0YXBfY3MiIHRvIDAKLSMgICBiaW5kICJpZGUtY3MiIHRvIDEKLQotY2FyZCAiU2VuYW8vT3JpZ28gODAyMTFiIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweDAwMGIsMHg3MTAwCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNpdGVjb20gV0wtMDA3IFdMQU4gQ0YgQ2FyZCIKLSAgbWFuZmlkIDB4ZDYwMSwgMHgwMDA0Ci0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU01DMjYzMiA4MDIuMTEgKHByaXNtMikgQ2FyZCIKLSAgdmVyc2lvbiAiU01DIiwgIlNNQzI2MzJXIiwgIlZlcnNpb24gMDEuMDIiLCAiIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNwZWVkU3RyZWFtIFNTMTAyMSBXaXJlbGVzcyBBZGFwdGVyIgotICAjdmVyc2lvbiAiU2llbWVucyIsICJTcGVlZFN0cmVhbSBXaXJlbGVzcyBQQ01DSUEiCi0gIG1hbmZpZCAweDAyYWMsIDB4MDAwMgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlpDT01BWCBBaXJSdW5uZXIvWEktMzAwIgotICAjdmVyc2lvbiAiWkNPTUFYIiwgIkFpclJ1bm5lci9YSS0zMDAiCi0gIG1hbmZpZCAweGQ2MDEsIDB4MDAwMgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlpvbmV0IFpDRjExMDAiCi0gIG1hbmZpZCAweDAwMGIsIDB4NzEwMAotICBiaW5kICJob3N0YXBfY3MiCi0gIAotY2FyZCAiV2lyZWxlc3MgTEFOIEFkYXB0ZXIgVmVyc2lvbiAwMS4wMiIKLSAgIHZlcnNpb24gIldpcmVsZXNzIiwgIkxBTiBBZGFwdGVyIiwgIlZlcnNpb24gMDEuMDIiCi0jICAgbWFuZmlkIDB4MDE1NiwgMHgwMDAyCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkFtYmljb20gV0wxMTAwQyAxMU1icyBDYXJkIDgwMi4xMWIiCi0gIHZlcnNpb24gIkFtYmlDb20iLCAiV0wxMTAwQyA4MDIuMTFiIENGLUNhcmQiLCAiMi4yIgotICBtYW5maWQgMHhkNjAxLDB4MDAwMgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkFtYmljb20gV0wxMTAwQyAxMU1icyBDYXJkIDgwMi4xMWIiCi0gIG1hbmZpZCAweGQ2MDEsMHgwMDAyCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU2FuZGlzayBDb25uZWN0IFNEV0NGQi0wMDAiCi0gIG1hbmZpZCAweGQ2MDEsMHgwMDA1Ci0gIGJpbmQgImhvc3RhcF9jcyIKLQotIyBDYXJkcyB3aXRoIEludGVyc2lsIGZpcm13YXJlIChQcmlzbSBjaGlwc2V0KQotCi1jYXJkICJMaW5rc3lzIFdQQzExIDExTWJwcyA4MDIuMTFiIFdMQU4gQ2FyZCIKLSAgdmVyc2lvbiAiVGhlIExpbmtzeXMgR3JvdXAsIEluYy4iLCAiSW5zdGFudCBXaXJlbGVzcyBOZXR3b3JrIFBDIENhcmQiLCAiSVNMMzczMDBQIiwgIlJldkEiCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGlua3N5cyBDb21wYWN0Rmxhc2ggV2lyZWxlc3MgQ2FyZCIKLSAgdmVyc2lvbiAiTGlua3N5cyIsICJXaXJlbGVzcyBDb21wYWN0Rmxhc2ggQ2FyZCIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJBQ1RJT05URUMgUFJJU00gV2lyZWxlc3MgTEFOIFBDIENhcmQiCi0gIHZlcnNpb24gIkFDVElPTlRFQyIsICJQUklTTSBXaXJlbGVzcyBMQU4gUEMgQ2FyZCIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMaW5rc3lzIFdQQzExIFZlcnNpb24gMyIKLSAgbWFuZmlkIDB4MDI3NCwweDE2MTMKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJCRU5RIEFXTDEwMCIKLSAgdmVyc2lvbiAiQkVOUSIsICJBV0wxMDAgUENNQ0lBIEFEQVBURVIiCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiUHJldGVjIFdMQU4iCi0gIHZlcnNpb24gIlByZXRlYyIsICJDb21wYWN0V0xBTiBDYXJkIDgwMi4xMWIiLCAiMi41IgotICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJUcmVuZE5ldCBURVcgUEMxNiIKLSAgbWFuZmlkIDB4MDI3NCwgMHgxNjAxCi0gIGJpbmQgImhvc3RhcF9jcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXBfY3MuY29uZi11cHN0cmVhbSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXBfY3MuY29uZi11cHN0cmVhbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI3Mzg1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvaG9zdGFwX2NzLmNvbmYtdXBzdHJlYW0KKysrIC9kZXYvbnVsbApAQCAtMSwxOTEgKzAsMCBAQAotZGV2aWNlICJob3N0YXBfY3MiCi0gICBjbGFzcyAibmV0d29yayIgbW9kdWxlICJob3N0YXAiLCAiaG9zdGFwX2NzIgotCi1jYXJkICJJbnRlcnNpbCBQUklTTTIgUmVmZXJlbmNlIERlc2lnbiAxMU1iL3MgV0xBTiBDYXJkIgotICAgdmVyc2lvbiAiSU5URVJTSUwiLCAiSEZBMzg0eC9JRUVFIgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJDb21wYXEgV0wxMDAgMTFNYi9zIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweDAxMzgsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJDb21wYXEgV0wyMDAiCi0gICB2ZXJzaW9uICJDb21wYXEiLCAiV0wyMDBfMTFNYnBzX1dpcmVsZXNzX1BDSV9DYXJkIgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJFTVRBQyBBMjQyNGkgMTFNYnBzIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweGMyNTAsIDB4MDAwMgotIyAgIGNpcyAiY2lzL0VtdGFjLmRhdCIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGlua3N5cyBXUEMxMSAxMU1icHMgV0xBTiBDYXJkIgotICAgdmVyc2lvbiAiSW5zdGFudCBXaXJlbGVzcyAiLCAiIE5ldHdvcmsgUEMgQ0FSRCIsICJWZXJzaW9uIDAxLjAyIgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMaW5rc3lzIFdQQzExIFZlciAyLjUgMTFNYnBzIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweDAyNzQsIDB4MTYxMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMaW5rc3lzIFdQQzExIFZlciAzIDExTWJwcyBXTEFOIENhcmQiCi0gICBtYW5maWQgMHgwMjc0LCAweDE2MTMKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGlua3N5cyBXQ0YxMiBXaXJlbGVzcyBDb21wYWN0Rmxhc2ggQ2FyZCIKLSAgIHZlcnNpb24gIkxpbmtzeXMiLCAiV2lyZWxlc3MgQ29tcGFjdEZsYXNoIENhcmQiCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkQtTGluayBEV0wtNjUwIDExTWJwcyBXTEFOIENhcmQiCi0gICB2ZXJzaW9uICJEIiwgIkxpbmsgRFdMLTY1MCAxMU1icHMgV0xBTiBDYXJkIiwgIlZlcnNpb24gMDEuMDIiCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkQtTGluayBEUkMtNjUwIDExTWJwcyBXTEFOIENhcmQiCi0jICB2ZXJzaW9uICJEIiwgIkxpbmsgRFJDLTY1MCAxMU1icHMgV0xBTiBDYXJkIiwgIlZlcnNpb24gMDEuMDIiCi0gICBtYW5maWQgMHgwMjhhLCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiWm9vbUFpciA0MTAwIDExTWIvcyBXTEFOIENhcmQiCi0gICB2ZXJzaW9uICJab29tQWlyIDExTWJwcyBIaWdoIiwgIlJhdGUgd2lyZWxlc3MgTmV0d29ya2luZyIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQWRkdHJvbiBBV1AtMTAwIDExTWJwcyBXTEFOIENhcmQiCi0gICB2ZXJzaW9uICJBZGR0cm9uIiwgIkFXUC0xMDAgV2lyZWxlc3MgUENNQ0lBIiwgIlZlcnNpb24gMDEuMDIiCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNhbXN1bmcgU1dMMjAwMC1OIDExTWIvcyBXTEFOIENhcmQiCi0gICBtYW5maWQgMHgwMjUwLCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU01DIDI2MzJXIDExTWJwcyBXTEFOIENhcmQiCi0gICB2ZXJzaW9uICJTTUMiLCAiU01DMjYzMlciLCAiVmVyc2lvbiAwMS4wMiIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQnJvTWF4IEZyZWVwb3J0IDExTWJwcyBXTEFOIENhcmQiCi0gICB2ZXJzaW9uICJJbnRlcnNpbCIsICJQUklTTSAyXzUgUENNQ0lBIEFEQVBURVIiLCAiSVNMMzczMDBQIiwgIkV2YWwtUmV2QSIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiWi1Db20gWEkzMDAgMTFNYi9zIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweGQ2MDEsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJaY29tYXggWEktMzI1SCAyMDBtVyIKLSMgICB2ZXJzaW9uICIgIiwgIklFRUUgODAyLjExIFdpcmVsZXNzIExBTi9QQyBDYXJkIgotICAgbWFuZmlkIDB4ZDYwMSwgMHgwMDA1Ci0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIjNDb20gQWlyQ29ubmVjdCBQQ0kgNzc3QSIKLSAgIG1hbmZpZCAweDAxMDEsIDB4MDc3NwotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJVLlMuIFJvYm90aWNzIElFRUUgODAyLjExYiBQQy1DQVJEIgotICAgdmVyc2lvbiAiVS5TLiBSb2JvdGljcyIsICJJRUVFIDgwMi4xMWIgUEMtQ0FSRCIsICJWZXJzaW9uIDAxLjAyIgotIyAgIG1hbmZpZCAweDAxNTYsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMb25nc2hpbmUgTENSLTg1MzEgMTFNYnBzIFdMQU4gUENNQ0lBIENBUkQiCi0gICB2ZXJzaW9uICJPRU0iLCAiUFJJU00yIElFRUUgODAyLjExIFBDLUNhcmQiLCAiVmVyc2lvbiAwMS4wMiIKLSMgICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiUGhpbGlwcyA4MDIuMTFiIFdMQU4gUENNQ0lBIgotICAgbWFuZmlkIDB4MDAwYiwgMHg3MzAwCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlByb3hpbSBSYW5nZUxBTiIKLSMgICB2ZXJzaW9uICJQUk9YSU0iLCAiUmFuZ2VMQU4tRFMvTEFOIFBDIENBUkQiCi0gICBtYW5maWQgMHgwMTI2LCAweDgwMDAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQnVmZmFsbyBXTEktQ0YtUzExRyIKLSAgIHZlcnNpb24gIkJVRkZBTE8iLCAiV0xJLUNGLVMxMUciCi0jICBtYW5maWQgMHgwMjZmLCAweDAzMGIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGV2ZWwtT25lIFdQQy0wMTAwIgotICAgdmVyc2lvbiAiRGlnaXRhbCBEYXRhIENvbW11bmljYXRpb25zIiwgIldQQy0wMTAwIiwgIlZlcnNpb24gMDAuMDAiCi0gICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQmVsa2luIDgwMi4xMWIgV0xBTiBQQ01DSUEiCi0gICB2ZXJzaW9uICJCZWxraW4iLCAiMTFNYnBzIFdpcmVsZXNzIE5vdGVib29rIE5ldHdvcmsgQWRhcHRlciIsICJWZXJzaW9uIDAxLjAyIgotICAgbWFuZmlkIDB4MDE1NiwgMHgwMDAyCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNlbmFvIFNMLTIwMTFDRC9TTC0yMDExQ0RQTFVTIgotICAgdmVyc2lvbiAiSU5URVJTSUwiLCAiSEZBMzg0eC9JRUVFIiwgIlZlcnNpb24gMDEuMDIiCi0gICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiRnVsYm9uZCBBaXJib25kIFhJLTMwMEIiCi0gICB2ZXJzaW9uICIgIiwgIklFRUUgODAyLjExIFdpcmVsZXNzIExBTi9QQyBDYXJkIgotICAgbWFuZmlkIDB4ZDYwMSwgMHgwMDAyCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIk5ldGdlYXIgTUE0MDEiCi0gICB2ZXJzaW9uICJORVRHRUFSIE1BNDAxIFdpcmVsZXNzIFBDIiwgIkNhcmQiLCAiVmVyc2lvbiAwMS4wMCIKLSMgICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiRC1MaW5rIERXTC02NTAgUmV2LiBQMSIKLSAgIHZlcnNpb24gIkQtTGluayIsICJEV0wtNjUwIFdpcmVsZXNzIFBDIENhcmQgUmV2UCIsICJJU0wzNzEwMVAtMTAiLCAiQTMiCi0jICAgbWFuZmlkIDB4MDAwYiwgMHg3MTEwCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNvbmljV0FMTCBMb25nIFJhbmdlIFdpcmVsZXNzIENhcmQiCi0gICB2ZXJzaW9uICJTb25pY1dBTEwiLCAiTG9uZyBSYW5nZSBXaXJlbGVzcyBDYXJkIiwgIklTTDM3MTAwUCIsICIxLjAiCi0gICBtYW5maWQgMHgwMDBiLCAweDcxMDAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU2VuYW8gTkwtMjAxMUNEIFBMVVMgRXh0MiBNZXJjdXJ5IgotICAgdmVyc2lvbiAiV0xBTiIsICIxMU1icHNfUEMtQ2FyZF8zLjAiLCAiSVNMMzcxMDBQIiwgIkV2YWwtUmV2QSIKLSAgIG1hbmZpZCAweDAwMGIsIDB4NzEwMAotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJBaXJ2YXN0IFdMMTAwIgotICAgdmVyc2lvbiAiQUlSVkFTVCIsICJJRUVFIDgwMi4xMWIgV2lyZWxlc3MgUENNQ0lBIENhcmQiLCAiSEZBMzg2MyIKLSAgIG1hbmZpZCAweDUwYzIsIDB4MDAwMQotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJNaWNyb3NvZnQgV2lyZWxlc3MgTm90ZWJvb2sgQWRhcHRlciBNTi01MjAgMS4wLjMiCi0gICB2ZXJzaW9uICJNaWNyb3NvZnQiLCAiV2lyZWxlc3MgTm90ZWJvb2sgQWRhcHRlciBNTi01MjAiLCAiIiwgIjEuMC4zIgotICAgbWFuZmlkIDB4MDJkMiwgMHgwMDAxCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIk5FVEdFQVIgTUE0MDFSQSIKLSAgIHZlcnNpb24gIk5FVEdFQVIgTUE0MDFSQSBXaXJlbGVzcyBQQyIsICJDYXJkIiwgIklTTDM3MzAwUCIsICJFdmFsLVJldkEiCi0gICBtYW5maWQgMHgwMDBiLCAweDczMDAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQWxsaWVkIFRlbGVzeW4gQVQtV0NMNDUyIgotICAgdmVyc2lvbiAiQWxsaWVkIFRlbGVzeW4iLCAiQVQtV0NMNDUyIFdpcmVsZXNzIFBDTUNJQSBSYWRpbyIsICJWZXIuIDEuMDAiCi0gICBtYW5maWQgMHhjMDBmLCAweDAwMDAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiY29yZWdhIFdMIFBDQ0wtMTEiCi0gICB2ZXJzaW9uICJjb3JlZ2EiLCAiV0wgUENDTC0xMSIsICJJU0wzNzMwMFAiLCAiUmV2QSIKLSAgIG1hbmZpZCAweGMwMGYsIDB4MDAwMAotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJTYW5EaXNrIENvbm5lY3RQbHVzIgotICAgdmVyc2lvbiAiU2FuRGlzayIsICJDb25uZWN0UGx1cyIKLSAgIG1hbmZpZCAweGQ2MDEsIDB4MDEwMQotICAgYmluZCAiaG9zdGFwX2NzIiB0byAwCi0gICBiaW5kICJpZGUtY3MiIHRvIDEKLQotY2FyZCAiQVNVUyBXTC0xMDAgODAxMWIgV0xBTiBQQyBDYXJkIgotICAgdmVyc2lvbiAiQVNVUyIsICI4MDJfMTFiX1BDX0NBUkRfMjUiLCAiVmVyc2lvbiAwMS4wMCIKLSAgIG1hbmZpZCAweDAyYWEsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJaeVhlbCBaeWFpciBCLTEwMSA4MDIuMTFiIFdMQU4gY2FyZCIKLSAgIHZlcnNpb24gIiAiLCAiSUVFRSA4MDIuMTEgV2lyZWxlc3MgTEFOL1BDIENhcmQiCi0gICBtYW5maWQgMHhkNjAxLCAweDAwMTAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiV0xBTiBQUklTTSBQQ01DSUEgQ0FSRCAzNzMwMFAgUmV2QjYiCi0gICB2ZXJzaW9uICJXTEFOIiwgIlBSSVNNIFBDTUNJQSBDQVJEIiwgIjM3MzAwUCIsICJSZXZpc2lvbiBCNiIKLSAgIG1hbmZpZCAweDUwYzIsIDB4NzMwMAotICAgYmluZCAiaG9zdGFwX2NzIgotCi0KLSMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciBob3N0YXBfY3MubwotIyBtb2R1bGUgImhvc3RhcF9jcyIgb3B0cyAiY2hhbm5lbD0zIGl3X21vZGU9MyBlc3NpZD10ZXN0IGlnbm9yZV9jaXNfdmNjPTAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvaG9zdGFwX2NzLm1vZGFsaWFzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL2hvc3RhcF9jcy5tb2RhbGlhcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg0ODM1MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvaG9zdGFwX2NzLm1vZGFsaWFzCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyBwcm9kdWN0IGluZm86ICJQcmV0ZWMiLCAiQ29tcGFjdFdMQU4gQ2FyZCA4MDIuMTFiIiwgIjIuNSIKLWFsaWFzIHBjbWNpYTptMDE1NmMwMDAyZjA2Zm4wMHBmbjAwcGExQ0FERDNFNXBiRTY5NzYzNkNwYzdBNUJGQ0YxcGQwMDAwMDAwMCBob3N0YXBfY3MKLQotIyBtYW51ZmFjdHVyZXIgSUQgd2hpY2ggZXhpc3QgaW4gb3Jpbm9jb19jcyBBTkQgaW4gaG9zdGFwX2NzCi1hbGlhcyBwY21jaWE6bTAwMEJjNzEwMGYwNmZuMDBwZm4wMHBhKnBiKnBjKnBkKiBob3N0YXBfY3MKLWFsaWFzIHBjbWNpYTptMDAwQmM3MzAwZjA2Zm4wMHBmbjAwcGEqcGIqcGMqcGQqIGhvc3RhcF9jcwotYWxpYXMgcGNtY2lhOm0wMTI2YzgwMDBmMDZmbjAwcGZuMDBwYSpwYipwYypwZCogaG9zdGFwX2NzCi1hbGlhcyBwY21jaWE6bTAxMzhjMDAwMmYwNmZuMDBwZm4wMHBhKnBiKnBjKnBkKiBob3N0YXBfY3MKLWFsaWFzIHBjbWNpYTptMDI1MGMwMDAyZjA2Zm4wMHBmbjAwcGEqcGIqcGMqcGQqIGhvc3RhcF9jcwotYWxpYXMgcGNtY2lhOm0wMjc0YzE2MTJmMDZmbjAwcGZuMDBwYSpwYipwYypwZCogaG9zdGFwX2NzCi1hbGlhcyBwY21jaWE6bTAyNzRjMTYxM2YwNmZuMDBwZm4wMHBhKnBiKnBjKnBkKiBob3N0YXBfY3MKLWFsaWFzIHBjbWNpYTptMDI4QWMwMDAyZjA2Zm4wMHBmbjAwcGEqcGIqcGMqcGQqIGhvc3RhcF9jcwotYWxpYXMgcGNtY2lhOm0wMkFBYzAwMDJmMDZmbjAwcGZuMDBwYSpwYipwYypwZCogaG9zdGFwX2NzCi1hbGlhcyBwY21jaWE6bTUwQzJjNzMwMGYwNmZuMDBwZm4wMHBhKnBiKnBjKnBkKiBob3N0YXBfY3MKLWFsaWFzIHBjbWNpYTptRDYwMWMwMDAyZjA2Zm4wMHBmbjAwcGEqcGIqcGMqcGQqIGhvc3RhcF9jcwotYWxpYXMgcGNtY2lhOm1ENjAxYzAwMDVmMDZmbjAwcGZuMDBwYSpwYipwYypwZCogaG9zdGFwX2NzCi0KLSMgcHJvZHVjdCBpbmZvOiAiTGlua3N5cyIsICJXaXJlbGVzcyBDb21wYWN0Rmxhc2ggQ2FyZCIsICIiLCAiIgotYWxpYXMgcGNtY2lhOm0wMjhBYzA2NzNmMDZmbjAwcGZuMDBwYTA3MzNDQzgxcGIwQzUyRjM5NXBjMDAwMDAwMDBwZDAwMDAwMDAwIGhvc3RhcF9jcwotCi0jIHByb2R1Y3QgaW5mbzoiUExBTkVYIENPTU1VTklDQVRJT04gSU5DIiwiUExBTkVYIEdXLUNGMTFYIFdpcmVsZXNzIENGIENhcmQiLCAiIiwgIiIKLWFsaWFzIHBjbWNpYTptRDYwMWMwMDEwZjA2Zm4wMHBmbjAwcGE0NzAzQ0Y2OHBiRkFENzMxOERwYzAwMDAwMDAwcGQwMDAwMDAwMCBob3N0YXBfY3MKLQotIyAweDAxNTYsIDB4MDAwMiBhbmQgIlZlcnNpb24gMDEuMDIiIG9ubHkgYXBwZWFyIGZvciBQcmlzbSBiYXNlZCBjYXJkcy4KLWFsaWFzIHBjbWNpYTptMDE1NmMwMDAyZjA2Zm4wMHBmbjAwcGEqcGIqcGM0Qjc0QkFBMHBkMDAwMDAwMDAgaG9zdGFwX2NzCi0KLSMgIkJVRkZBTE8iLCAiV0xJLUNGLVMxMUciLCAiIiwgIiIKLWFsaWFzIHBjbWNpYTptMDI2RmMwMzBCZjA2Zm4wMHBmbjAwcGEyREVDRUNFM3BiODIwNjdDMThwYzAwMDAwMDAwcGQwMDAwMDAwMCBob3N0YXBfY3MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtY29uZl8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLWNvbmZfMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWQ0YzU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtY29uZl8xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIkNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIEhvc3RBUCAod2lmaSkgZHJpdmVyIgotREVTQ1JJUFRJT04gPSAiUENNQ0lBLWNzIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHdpcmVsZXNzIExBTiBjYXJkcyBiYXNlZCBvbiBJbnRlcnNpbCdzIFByaXNtMi8yLjUvMyBjaGlwc2V0LiIKLVNFQ1RJT04gPSAia2VybmVsL21vZHVsZXMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzkzYTVjYTQ0NWY2OTY1ODczZWNhMDI1OWExN2Y4MzMiCi1QUiA9ICJyMTUiCi0KLVNSQ19VUkkgPSAiZmlsZTovL2hvc3RhcF9jcy5tb2RhbGlhcyBcCi0gICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLnBhdGNoIgotCi1pbmhlcml0IGFsbGFyY2gKLQotUyA9ICIke1dPUktESVJ9IgotCi1kb19jb21waWxlKCkgewotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vbW9kcHJvYmUuZAotCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaG9zdGFwX2NzLm1vZGFsaWFzICR7RH0ke3N5c2NvbmZkaXJ9L21vZHByb2JlLmQvaG9zdGFwX2NzLmNvbmYKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy0wLjQuNy8wMDAxLURlZmluZS1fdTMyLV9fczMyLV9fdTE2LV9fczE2LV9fdTgtaW4tdGVybXMtb2YtYzk5LXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLTAuNC43LzAwMDEtRGVmaW5lLV91MzItX19zMzItX191MTYtX19zMTYtX191OC1pbi10ZXJtcy1vZi1jOTktdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ0ZGNhMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLTAuNC43LzAwMDEtRGVmaW5lLV91MzItX19zMzItX191MTYtX19zMTYtX191OC1pbi10ZXJtcy1vZi1jOTktdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gNzQyZmIxMTBkOTg0MWEwNGIzY2VkMjU2YjBiZjgwZmYzMDRkY2FmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDMxIEF1ZyAyMDE1IDA1OjQ1OjA4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBfdTMyL19fczMyL19fdTE2L19fczE2L19fdTggaW4gdGVybXMgb2YgYzk5IHR5cGVzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gd2lyZWxlc3NfY29weS5oIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS93aXJlbGVzc19jb3B5LmggYi93aXJlbGVzc19jb3B5LmgKLWluZGV4IDgyMDgyNTguLjExNzFhMzUgMTAwNjQ0Ci0tLS0gYS93aXJlbGVzc19jb3B5LmgKLSsrKyBiL3dpcmVsZXNzX2NvcHkuaAotQEAgLTg2LDExICs4NiwxMSBAQAotICNlbHNlCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxuZXQvaWYuaD4KLS10eXBlZGVmIF9fdWludDMyX3QgX191MzI7Ci0tdHlwZWRlZiBfX2ludDMyX3QgX19zMzI7Ci0tdHlwZWRlZiBfX3VpbnQxNl90IF9fdTE2OwotLXR5cGVkZWYgX19pbnQxNl90IF9fczE2OwotLXR5cGVkZWYgX191aW50OF90IF9fdTg7Ci0rdHlwZWRlZiB1X2ludDMyX3QgX191MzI7Ci0rdHlwZWRlZiBpbnQzMl90IF9fczMyOwotK3R5cGVkZWYgdV9pbnQxNl90IF9fdTE2OwotK3R5cGVkZWYgaW50MTZfdCBfX3MxNjsKLSt0eXBlZGVmIHVfaW50OF90IF9fdTg7Ci0gI2lmbmRlZiBfX3VzZXIKLSAjZGVmaW5lIF9fdXNlcgotICNlbmRpZiAvKiBfX3VzZXIgKi8KLS0tIAotMi41LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy0wLjQuNy9sZGZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy0wLjQuNy9sZGZsYWdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTk5ZDBkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHMtMC40LjcvbGRmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLU9iZXkgTERGTEFHUwotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBob3N0YXAtdXRpbHMtMC40Ljcub3JpZy9NYWtlZmlsZQotKysrIGhvc3RhcC11dGlscy0wLjQuNy9NYWtlZmlsZQotQEAgLTE0LDE3ICsxNCwxNyBAQCBwcmlzbTJfc3JlYy5vOiBwcmlzbTJfc3JlYy5jIHV0aWwuaAotIGhvc3RhcF9jcnlwdF9jb25mOiBob3N0YXBfY3J5cHRfY29uZi5jCi0KLSBob3N0YXBfZGlhZzogaG9zdGFwX2RpYWcubyB1dGlsLm8KLS0JJChDQykgLW8gaG9zdGFwX2RpYWcgJChDRkxBR1MpIGhvc3RhcF9kaWFnLm8gdXRpbC5vCi0rCSQoQ0MpIC1vIGhvc3RhcF9kaWFnICQoQ0ZMQUdTKSAkKExERkxBR1MpIGhvc3RhcF9kaWFnLm8gdXRpbC5vCi0KLSBob3N0YXBfZGlhZy5vOiBob3N0YXBfZGlhZy5jIHV0aWwuaAotCi0gdXRpbC5vOiB1dGlsLmMgdXRpbC5oCi0KLSBob3N0YXBfaW9fZGVidWc6IGhvc3RhcF9pb19kZWJ1Zy5jCi0tCSQoQ0MpIC1vIGhvc3RhcF9pb19kZWJ1ZyAkKENGTEFHUykgaG9zdGFwX2lvX2RlYnVnLmMKLSsJJChDQykgLW8gaG9zdGFwX2lvX2RlYnVnICQoQ0ZMQUdTKSAkKExERkxBR1MpIGhvc3RhcF9pb19kZWJ1Zy5jCi0KLSBob3N0YXBfcmlkOiBob3N0YXBfcmlkLm8gdXRpbC5vCi0tCSQoQ0MpIC1vIGhvc3RhcF9yaWQgJChDRkxBR1MpIGhvc3RhcF9yaWQubyB1dGlsLm8KLSsJJChDQykgLW8gaG9zdGFwX3JpZCAkKENGTEFHUykgJChMREZMQUdTKSBob3N0YXBfcmlkLm8gdXRpbC5vCi0KLSBob3N0YXBfcmlkLm86IGhvc3RhcF9yaWQuYyB1dGlsLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkOThlM2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIlVzZXIgbW9kZSBoZWxwZXJzIGZvciB0aGUgaG9zdGFwIGRyaXZlciIKLURFU0NSSVBUSU9OID0gIlRoZSBob3N0YXAgZHJpdmVyIHN1cHBvcnRzIEhvc3QgQVAgbW9kZSwgaXQgYWxsb3dzIGZvciBJRUVFIDgwMi4xMSBcCi1tYW5hZ2VtZW50IGZ1bmN0aW9ucyBvbiB0aGUgaG9zdCBjb21wdXRlciBhbmQgYWxsb3dzIHRoZSBzeXN0ZW0gdG8gYWN0IGFzIGFuIGFjY2VzcyBwb2ludC4iCi1IT01FUEFHRSA9ICJodHRwczovL3cxLmZpIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKLQkJCWZpbGU6Ly91dGlsLmM7YmVnaW5saW5lPTE7ZW5kbGluZT05O21kNT1kM2I5MjgwODUxMzAyZTViYTM0ZTVmYjcxNzQ4OWI2ZCIKLVNFQ1RJT04gPSAia2VybmVsL3VzZXJsYW5kIgotUFIgPSAicjQiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93MS5maS9yZWxlYXNlcy9ob3N0YXAtdXRpbHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2hvc3RhcC1mdy1sb2FkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGVmaW5lLV91MzItX19zMzItX191MTYtX19zMTYtX191OC1pbi10ZXJtcy1vZi1jOTktdC5wYXRjaCBcCi0iCi1TID0gIiR7V09SS0RJUn0vaG9zdGFwLXV0aWxzLSR7UFZ9IgotCi1CSU5BUklFUyA9ICJob3N0YXBfY3J5cHRfY29uZiBob3N0YXBfZGlhZyBob3N0YXBfZndfbG9hZCBob3N0YXBfaW9fZGVidWcgXAotCSAgICBob3N0YXBfcmlkIHByaXNtMl9wYXJhbSBwcmlzbTJfc3JlYyBzcGxpdF9jb21iaW5lZF9oZXgiCi0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfS8KLQlmb3IgZiBpbiAke0JJTkFSSUVTfQotCWRvCi0JCWluc3RhbGwgLW0gMDc1NSAkZiAke0R9JHtzYmluZGlyfS8KLQlkb25lCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHNfMC40LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzXzAuNC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTU0ODFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHNfMC40LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXJlcXVpcmUgaG9zdGFwLXV0aWxzLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vbGRmbGFncy5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZmUwNDE1ODFiOGYwMTY2NmUzNTNiZWMyMDkxN2M4NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNmY1OThkOGUzNTZjMTYyMGZhMDA5ZWNhMGE3MDBiZjExMDVlMTY4MTdlZWZkNzdkODkxOTk0MjYxMDA5MzU1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvbGliYWNwaS9maWxlcy9saWJhY3BpX2ZpeF9mb3JfeDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvbGliYWNwaS9maWxlcy9saWJhY3BpX2ZpeF9mb3JfeDMyLnBhdGNoCmluZGV4IDg2YTE2YzIuLjA2ZjIwZTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xpYmFjcGkvZmlsZXMvbGliYWNwaV9maXhfZm9yX3gzMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9saWJhY3BpL2ZpbGVzL2xpYmFjcGlfZml4X2Zvcl94MzIucGF0Y2gKQEAgLTMsOSArMywxMCBAQAogRml4IGxpYmFjcGkgZm9yIHgzMgogICAgIAogICAgIGxpYmFjcGkgZG9lc24ndCB1c2UgYmFzZV9saWJkaXIgZm9yIGluc3RhbGwuICBUaGlzIHBhdGNoIGFkZHMKLSAgICBiYXNlX2xpYmRpciBzdXBwb3J0IHNvIHRoYXQgeDMyIGxpYnJhcmllcyBhcmUgaW5zdGFsbGVkIHByb3Blcmx5LgorICAgIGxpYmRpciBzdXBwb3J0IHNvIHRoYXQgeDMyIGxpYnJhcmllcyBhcmUgaW5zdGFsbGVkIHByb3Blcmx5LgogCiBQYXRjaCBSZWNlaXZlZCBmcm9tOiAgSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KK1VwZGF0ZWQgYnk6IFJpY2FyZG8gU2FsdmV0aSA8cmljYXJkb0BvcGVuc291cmNlZm91bmRyaWVzLmNvbT4gMjAxOC8wMi8wMwogCiBTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzA1CiAKQEAgLTEzLDE4ICsxNCw3IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gbGliYWNwaS0wLjIub3JpZy9NYWtlZmlsZQogKysrIGxpYmFjcGktMC4yL01ha2VmaWxlCi1AQCAtOCw2ICs4LDEwIEBAIFNSQ190ZXN0ID0gdGVzdC1saWJhY3BpLmMgbGliYWNwaS5jIGxpc3QKLSBPQkogPSAke1NSQzouYz0ub30KLSBPQkpfdGVzdCA9ICR7U1JDX3Rlc3Q6LmM9Lm99Ci0gCi0raWZuZGVmIGJhc2VfbGliZGlyCi0rYmFzZV9saWJkaXI9L2xpYgotK2VuZGlmCi0rCi0gYWxsOiBvcHRpb25zIGxpYmFjcGkuYSBsaWJhY3BpLnNvIHRlc3QtbGliYWNwaQotIAotIG9wdGlvbnM6Ci1AQCAtNDIsMTMgKzQ2LDEzIEBAIGluc3RhbGw6IGFsbAorQEAgLTQyLDEzICs0MiwxMyBAQCBpbnN0YWxsOiBhbGwKICAJQG1rZGlyIC1wICR7REVTVERJUn0ke1BSRUZJWH0vaW5jbHVkZQogIAlAY3AgLWYgbGliYWNwaS5oICR7REVTVERJUn0ke1BSRUZJWH0vaW5jbHVkZQogIAlAY2htb2QgNjQ0ICR7REVTVERJUn0ke1BSRUZJWH0vaW5jbHVkZS9saWJhY3BpLmgKQEAgLTM1LDEzICsyNSwxMyBAQAogLQlAY3AgLWYgJHtTT05BTUV9ICR7REVTVERJUn0ke1BSRUZJWH0vbGliLwogLQlAY2htb2QgNjQ0ICR7REVTVERJUn0ke1BSRUZJWH0vbGliLyR7U09OQU1FfQogLQlAbG4gLXMgJHtTT05BTUV9ICR7REVTVERJUn0ke1BSRUZJWH0vbGliL2xpYmFjcGkuc28KLSsJQGVjaG8gaW5zdGFsbGluZyBsaWJyYXJ5IHRvICR7REVTVERJUn0ke1BSRUZJWH0ke2Jhc2VfbGliZGlyfQotKwlAbWtkaXIgLXAgJHtERVNURElSfSR7UFJFRklYfSR7YmFzZV9saWJkaXJ9Ci0rCUBjcCAtZiBsaWJhY3BpLmEgJHtERVNURElSfSR7UFJFRklYfSR7YmFzZV9saWJkaXJ9Ci0rCUBjaG1vZCA2NDQgJHtERVNURElSfSR7UFJFRklYfSR7YmFzZV9saWJkaXJ9L2xpYmFjcGkuYQotKwlAY3AgLWYgJHtTT05BTUV9ICR7REVTVERJUn0ke1BSRUZJWH0ke2Jhc2VfbGliZGlyfS8KLSsJQGNobW9kIDY0NCAke0RFU1RESVJ9JHtQUkVGSVh9JHtiYXNlX2xpYmRpcn0vJHtTT05BTUV9Ci0rCUBsbiAtcyAke1NPTkFNRX0gJHtERVNURElSfSR7UFJFRklYfSR7YmFzZV9saWJkaXJ9L2xpYmFjcGkuc28KKysJQGVjaG8gaW5zdGFsbGluZyBsaWJyYXJ5IHRvICR7REVTVERJUn0ke0xJQkRJUn0KKysJQG1rZGlyIC1wICR7REVTVERJUn0ke0xJQkRJUn0KKysJQGNwIC1mIGxpYmFjcGkuYSAke0RFU1RESVJ9JHtMSUJESVJ9CisrCUBjaG1vZCA2NDQgJHtERVNURElSfSR7TElCRElSfS9saWJhY3BpLmEKKysJQGNwIC1mICR7U09OQU1FfSAke0RFU1RESVJ9JHtMSUJESVJ9LworKwlAY2htb2QgNjQ0ICR7REVTVERJUn0ke0xJQkRJUn0vJHtTT05BTUV9CisrCUBsbiAtcyAke1NPTkFNRX0gJHtERVNURElSfSR7TElCRElSfS9saWJhY3BpLnNvCiAgCUBlY2hvIGluc3RhbGxpbmcgdGVzdC1saWJhY3BpIHRvICR7REVTVERJUn0ke1BSRUZJWH0vYmluCiAgCUBta2RpciAtcCAke0RFU1RESVJ9JHtQUkVGSVh9L2JpbgogIAlAY3AgLWYgdGVzdC1saWJhY3BpICR7REVTVERJUn0ke1BSRUZJWH0vYmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9saWJhY3BpL2xpYmFjcGlfMC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvbGliYWNwaS9saWJhY3BpXzAuMi5iYgppbmRleCA2ZGM2NmVhLi41ZTdmN2ZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9saWJhY3BpL2xpYmFjcGlfMC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xpYmFjcGkvbGliYWNwaV8wLjIuYmIKQEAgLTI4LDUgKzI4LDUgQEAKIFRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgogCiBkb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gUFJFRklYPSR7ZXhlY19wcmVmaXh9CisJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtleGVjX3ByZWZpeH0gTElCRElSPSR7bGliZGlyfQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoCmluZGV4IDU1ZWRmZWEuLmE3ZTQ0NTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2NvbmZpZ3VyZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2gKQEAgLTEzLDExICsxMywxMSBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCi1JbmRleDogcGNpdXRpbHMtMy41LjQvTWFrZWZpbGUKK0luZGV4OiBwY2l1dGlscy0zLjUuNi9NYWtlZmlsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBjaXV0aWxzLTMuNS40Lm9yaWcvTWFrZWZpbGUKLSsrKyBwY2l1dGlscy0zLjUuNC9NYWtlZmlsZQotQEAgLTk2LDcgKzk1LDcgQEAgZXhhbXBsZTogZXhhbXBsZS5vIGxpYi8kKFBDSUxJQikKKy0tLSBwY2l1dGlscy0zLjUuNi5vcmlnL01ha2VmaWxlCisrKysgcGNpdXRpbHMtMy41LjYvTWFrZWZpbGUKK0BAIC05Niw3ICs5Niw3IEBAIGV4YW1wbGU6IGV4YW1wbGUubyBsaWIvJChQQ0lMSUIpCiAgZXhhbXBsZS5vOiBleGFtcGxlLmMgJChQQ0lJTkMpCiAgCiAgJTogJS5vCkBAIC0yNiwxMiArMjYsMTIgQEAKICAKICAlLjggJS43OiAlLm1hbgogIAlNPWBlY2hvICQoREFURSkgfCBzZWQgJ3MvLTAxLS8tSmFudWFyeS0vO3MvLTAyLS8tRmVicnVhcnktLztzLy0wMy0vLU1hcmNoLS87cy8tMDQtLy1BcHJpbC0vO3MvLTA1LS8tTWF5LS87cy8tMDYtLy1KdW5lLS87cy8tMDctLy1KdWx5LS87cy8tMDgtLy1BdWd1c3QtLztzLy0wOS0vLVNlcHRlbWJlci0vO3MvLTEwLS8tT2N0b2Jlci0vO3MvLTExLS8tTm92ZW1iZXItLztzLy0xMi0vLURlY2VtYmVyLS87cy9cKC4qXCktXCguKlwpLVwoLipcKS9cMyBcMiBcMS8nYCA7IHNlZCA8JDwgPiRAICJzL0BUT0RBWUAvJCRNLztzL0BWRVJTSU9OQC9wY2l1dGlscy0kKFZFUlNJT04pLztzI0BJRFNESVJAIyQoSURTRElSKSMiCi1JbmRleDogcGNpdXRpbHMtMy41LjQvbGliL2NvbmZpZ3VyZQorSW5kZXg6IHBjaXV0aWxzLTMuNS42L2xpYi9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwY2l1dGlscy0zLjUuNC5vcmlnL2xpYi9jb25maWd1cmUKLSsrKyBwY2l1dGlscy0zLjUuNC9saWIvY29uZmlndXJlCi1AQCAtMTQsNiArMTQsMTAgQEAgZWNob19uKCkgewotIAlmaQorLS0tIHBjaXV0aWxzLTMuNS42Lm9yaWcvbGliL2NvbmZpZ3VyZQorKysrIHBjaXV0aWxzLTMuNS42L2xpYi9jb25maWd1cmUKK0BAIC05LDYgKzksMTAgQEAgZWNob19uKCkgeworIAlwcmludGYgJyVzJyAiJCoiCiAgfQogIAogK1ZFUlNJT049JDEKQEAgLTQxLDcgKzQxLDcgQEAKICBpZiBbIC16ICIkVkVSU0lPTiIgLW8gLXogIiRJRFNESVIiIF0gOyB0aGVuCiAgCWVjaG8gPiYyICJQbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgc2NyaXB0IGZyb20gdGhlIHRvcC1sZXZlbCBNYWtlZmlsZSIKICAJZXhpdCAxCi1AQCAtMjEsOCArMjUsOCBAQCBmaQorQEAgLTE2LDggKzIwLDggQEAgZmkKICAKICBlY2hvX24gIkNvbmZpZ3VyaW5nIGxpYnBjaSBmb3IgeW91ciBzeXN0ZW0uLi4iCiAgaWYgWyAteiAiJEhPU1QiIF0gOyB0aGVuCkBAIC01Miw3ICs1Miw3IEBACiAgCXJlYWxzeXM9IiRzeXMiCiAgCWlmIFsgIiRzeXMiID0gIkFJWCIgLWEgLXggL3Vzci9iaW4vb3NsZXZlbCAtYSAteCAvdXNyL3NiaW4vbHNhdHRyIF0KICAJdGhlbgotQEAgLTMwLDcgKzM0LDcgQEAgaWYgWyAteiAiJEhPU1QiIF0gOyB0aGVuCitAQCAtMjUsNyArMjksNyBAQCBpZiBbIC16ICIkSE9TVCIgXSA7IHRoZW4KICAJCXByb2M9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIC1GIG5hbWUgfCBoZWFkIC0xYAogIAkJY3B1PWAvdXNyL3NiaW4vbHNhdHRyIC1GIHZhbHVlIC1sICRwcm9jIC1hIHR5cGUgfCBzZWQgJ3MvXy4qLy8nYAogIAllbHNlCkBAIC02MSw3ICs2MSw3IEBACiAgCWZpCiAgCWlmIFsgIiRzeXMiID0gIkdOVS9rRnJlZUJTRCIgLW8gIiRzeXMiID0gIkRyYWdvbkZseSIgXQogIAl0aGVuCi1AQCAtNDAsNyArNDQsNyBAQCBpZiBbIC16ICIkSE9TVCIgXSA7IHRoZW4KK0BAIC0zNSw3ICszOSw3IEBAIGlmIFsgLXogIiRIT1NUIiBdIDsgdGhlbgogIAl0aGVuCiAgCQlzeXM9Y3lnd2luCiAgCWZpCkBAIC03MCw3ICs3MCw3IEBACiAgZmkKICBbIC1uICIkUkVMRUFTRSIgXSAmJiByZWw9IiR7UkVMRUFTRX0iCiAgIyBDQVZFQVQ6IHRyIG9uIFNvbGFyaXMgaXMgYSBiaXQgd2VpcmQgYW5kIHRoZSBleHRyYSBbXSBpcyBvdGhlcndpc2UgaGFybWxlc3MuCi1AQCAtNDksNiArNTMsOCBAQCBjcHU9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteCitAQCAtNDQsNiArNDgsOCBAQCBjcHU9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteCiAgc3lzPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKICBlY2hvICIgJGhvc3QgJHJlbCAkY3B1ICRzeXMiCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDUxZmQ4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJQQ0kgdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAnVGhlIFBDSSBVdGlsaXRpZXMgcGFja2FnZSBjb250YWlucyBhIGxpYnJhcnkgZm9yIHBvcnRhYmxlIGFjY2VzcyBcCi10byBQQ0kgYnVzIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHNldmVyYWwgdXRpbGl0aWVzIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4nCi1IT01FUEFHRSA9ICJodHRwOi8vYXRyZXkua2FybGluLm1mZi5jdW5pLmN6L35tai9wY2l1dGlscy5zaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLURFUEVORFMgPSAiemxpYiBrbW9kIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvcGNpdXRpbHMvcGNpdXRpbHMtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIzOGQ5OTY5Y2MwZGU4YjkxMDVkOTcyMDA3ZDlkNTQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkNjJmOGZhMTkyZjkwZTYxYzM1YTZmYzE1ZmYzY2I5YTdhNzkyZjc4MjQwN2FjYzQyZWY2NzgxN2M1OTM5ZjUiCi0KLWluaGVyaXQgbXVsdGlsaWJfaGVhZGVyIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2h3ZGInLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tod2RiXSA9ICJIV0RCPXllcyxIV0RCPW5vLHVkZXYiCi0KLVBDSV9DT05GX0ZMQUcgPSAiWkxJQj15ZXMgRE5TPXllcyBTSEFSRUQ9eWVzIFNUUklQPSBMSUJESVI9JHtsaWJkaXJ9IgotCi0jIHNlZSBjb25maWd1cmUucGF0Y2gKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0JKAotCSAgY2QgbGliICYmIFwKLQkgICMgUEFDS0FHRUNPTkZJR19DT05GQVJHUyBmb3IgdGhpcyByZWNpcGUgY291bGQgb25seSBwb3NzaWJseSBjb250YWluICdIV0RCPXllcy9ubycsCi0JICAjIHNvIHdlIHB1dCBpdCBiZWZvcmUgLi9jb25maWd1cmUKLQkgICR7UENJX0NPTkZfRkxBR30gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAuL2NvbmZpZ3VyZSAke1BWfSAke2RhdGFkaXJ9ICR7VEFSR0VUX09TfSAke1RBUkdFVF9BUkNIfQotCSkKLX0KLQotZXhwb3J0IFBSRUZJWCA9ICIke3ByZWZpeH0iCi1leHBvcnQgU0JJTkRJUiA9ICIke3NiaW5kaXJ9IgotZXhwb3J0IFNIQVJFRElSID0gIiR7ZGF0YWRpcn0iCi1leHBvcnQgTUFORElSID0gIiR7bWFuZGlyfSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0gJHtQQ0lfQ09ORl9GTEFHfSIKLQotIyBUaGUgY29uZmlndXJlIHNjcmlwdCBicmVha3MgaWYgdGhlIEhPU1QgdmFyaWFibGUgaXMgc2V0Ci1IT1NUW3VuZXhwb3J0XSA9ICIxIgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsIGluc3RhbGwtbGliCi0KLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlsbiAtcyAuLi9zYmluL2xzcGNpICR7RH0ke2JpbmRpcn0vbHNwY2kKLQotCW9lX211bHRpbGliX2hlYWRlciBwY2kvY29uZmlnLmgKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWlkcyBsaWJwY2kiCi1GSUxFU18ke1BOfS1pZHMgPSAiJHtkYXRhZGlyfS9wY2kuaWRzKiIKLUZJTEVTX2xpYnBjaSA9ICIke2xpYmRpcn0vbGlicGNpLnNvLioiCi1TVU1NQVJZXyR7UE59LWlkcyA9ICJQQ0kgdXRpbGl0aWVzIC0gZGV2aWNlIElEIGRhdGFiYXNlIgotREVTQ1JJUFRJT05fJHtQTn0taWRzID0gIlBhY2thZ2UgcHJvdmlkaW5nIHRoZSBQQ0kgZGV2aWNlIElEIGRhdGFiYXNlIGZvciBwY2l1dGlscy4iCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0taWRzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMThiN2RhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjYuYmIKQEAgLTAsMCArMSw1OCBAQAorU1VNTUFSWSA9ICJQQ0kgdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAnVGhlIFBDSSBVdGlsaXRpZXMgcGFja2FnZSBjb250YWlucyBhIGxpYnJhcnkgZm9yIHBvcnRhYmxlIGFjY2VzcyBcCit0byBQQ0kgYnVzIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHNldmVyYWwgdXRpbGl0aWVzIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4nCitIT01FUEFHRSA9ICJodHRwOi8vYXRyZXkua2FybGluLm1mZi5jdW5pLmN6L35tai9wY2l1dGlscy5zaHRtbCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0RFUEVORFMgPSAiemxpYiBrbW9kIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvcGNpdXRpbHMvcGNpdXRpbHMtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjhlNTIyNzgzOTliN2IzNWZjZmMwMzFiYzA1ZGE4MGE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzNDZlZWI5MGNjZTA5MTBjMDViODc3ZmU0OWVhZGM3NjBmYTA4NGMwNDU1ZmQzMTNlMzlkNGIyYzJkNGJiMjEiCisKK2luaGVyaXQgbXVsdGlsaWJfaGVhZGVyIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2h3ZGInLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tod2RiXSA9ICJIV0RCPXllcyxIV0RCPW5vLHVkZXYiCisKK1BDSV9DT05GX0ZMQUcgPSAiWkxJQj15ZXMgRE5TPXllcyBTSEFSRUQ9eWVzIFNUUklQPSBMSUJESVI9JHtsaWJkaXJ9IgorCisjIHNlZSBjb25maWd1cmUucGF0Y2gKK2RvX2NvbmZpZ3VyZSAoKSB7CisJKAorCSAgY2QgbGliICYmIFwKKwkgICMgUEFDS0FHRUNPTkZJR19DT05GQVJHUyBmb3IgdGhpcyByZWNpcGUgY291bGQgb25seSBwb3NzaWJseSBjb250YWluICdIV0RCPXllcy9ubycsCisJICAjIHNvIHdlIHB1dCBpdCBiZWZvcmUgLi9jb25maWd1cmUKKwkgICR7UENJX0NPTkZfRkxBR30gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAuL2NvbmZpZ3VyZSAke1BWfSAke2RhdGFkaXJ9ICR7VEFSR0VUX09TfSAke1RBUkdFVF9BUkNIfQorCSkKK30KKworZXhwb3J0IFBSRUZJWCA9ICIke3ByZWZpeH0iCitleHBvcnQgU0JJTkRJUiA9ICIke3NiaW5kaXJ9IgorZXhwb3J0IFNIQVJFRElSID0gIiR7ZGF0YWRpcn0iCitleHBvcnQgTUFORElSID0gIiR7bWFuZGlyfSIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0gJHtQQ0lfQ09ORl9GTEFHfSIKKworIyBUaGUgY29uZmlndXJlIHNjcmlwdCBicmVha3MgaWYgdGhlIEhPU1QgdmFyaWFibGUgaXMgc2V0CitIT1NUW3VuZXhwb3J0XSA9ICIxIgorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsIGluc3RhbGwtbGliCisKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlsbiAtcyAuLi9zYmluL2xzcGNpICR7RH0ke2JpbmRpcn0vbHNwY2kKKworCW9lX211bHRpbGliX2hlYWRlciBwY2kvY29uZmlnLmgKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LWlkcyBsaWJwY2kiCitGSUxFU18ke1BOfS1pZHMgPSAiJHtkYXRhZGlyfS9wY2kuaWRzKiIKK0ZJTEVTX2xpYnBjaSA9ICIke2xpYmRpcn0vbGlicGNpLnNvLioiCitTVU1NQVJZXyR7UE59LWlkcyA9ICJQQ0kgdXRpbGl0aWVzIC0gZGV2aWNlIElEIGRhdGFiYXNlIgorREVTQ1JJUFRJT05fJHtQTn0taWRzID0gIlBhY2thZ2UgcHJvdmlkaW5nIHRoZSBQQ0kgZGV2aWNlIElEIGRhdGFiYXNlIGZvciBwY2l1dGlscy4iCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0taWRzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHMtMDE4L21ha2VmaWxlX3JhY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlscy0wMTgvbWFrZWZpbGVfcmFjZS5wYXRjaAppbmRleCBmNWE1MThmLi40YzVlYmE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlscy0wMTgvbWFrZWZpbGVfcmFjZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlscy0wMTgvbWFrZWZpbGVfcmFjZS5wYXRjaApAQCAtMTYsMjAgKzE2LDYgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBwY21jaWF1dGlscy0wMTgub3JpZy9NYWtlZmlsZQogKysrIHBjbWNpYXV0aWxzLTAxOC9NYWtlZmlsZQotQEAgLTI0OSw2ICsyNDksOSBAQCAkKFBDTUNJQV9TT0NLRVRfU1RBUlRVUCk6ICQoTElCQykgc3JjL3N0Ci0geWFjY19jb25maWcubyBsZXhfY29uZmlnLm86ICUubzogJS5jIHNyYy95YWNjX2NvbmZpZy5oCi0gCSQoQ0MpIC1jIC1NRCAtTyAtcGlwZSAkKENQUEZMQUdTKSAkPAotIAotK3NyYy9sZXhfY29uZmlnLm8gOiBzcmMvbGV4X2NvbmZpZy5jIHNyYy95YWNjX2NvbmZpZy5oCi0rCSQoUVVJRVQpICQoQ0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAtYyAtbyAkQCAkPAotKwotIGRlYnVndG9vbHM6IGNjZHYgJChDQkRVTVApICQoQ0lTRFVNUCkKLSAKLSAkKENCRFVNUCk6ICQoTElCQykgZGVidWcvY2JkdW1wLm8KLUluZGV4OiBwY21jaWF1dGlscy0wMTgvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwY21jaWF1dGlscy0wMTgub3JpZy9NYWtlZmlsZQotKysrIHBjbWNpYXV0aWxzLTAxOC9NYWtlZmlsZQogQEAgLTI0Niw4ICsyNDYsOCBAQCAkKFBDTUNJQV9TT0NLRVRfU1RBUlRVUCk6ICQoTElCQykgc3JjL3N0CiAgCSQoUVVJRVQpICQoTEQpICQoTERGTEFHUykgLW8gJEAgJChDUlQwKSBzcmMvc3RhcnR1cC5vIHNyYy95YWNjX2NvbmZpZy5vIHNyYy9sZXhfY29uZmlnLm8gJChMSUJfT0JKUykgJChBUkNIX0xJQl9PQkpTKQogIAkkKFFVSUVUKSAkKFNUUklQQ01EKSAkQApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzEwbTUwLXVwZGF0ZS1kZXZpY2UtdHJlZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy8xMG01MC11cGRhdGUtZGV2aWNlLXRyZWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0MTk1M2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzEwbTUwLXVwZGF0ZS1kZXZpY2UtdHJlZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLU5pb3MgSUkgZm9yIE1BWDEwIDEwbTUwIGJvYXJkIHJlcXVpcmVzIHVwZGF0ZSB0byAKLWl0cyBkZXZpY2UgdHJlZSB0byBlbmFibGUgQ1BVIGRyaXZlciBkdXJpbmcKLXUtYm9vdCBwcmUtcmVsb2NhdGlvbi4gVGhpcyBwYXRjaCB0YWcgdGhlIENQVSAKLXdpdGggZG0tcHJlLXJlbG9jIGZsYWcuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IEdhbiwgWWF1IFdhaSA8eWF1LndhaS5nYW5AaW50ZWwuY29tPgotCi0tLS0KLSBhcmNoL25pb3MyL2R0cy8xMG01MF9kZXZib2FyZC5kdHMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2FyY2gvbmlvczIvZHRzLzEwbTUwX2RldmJvYXJkLmR0cyBiL2FyY2gvbmlvczIvZHRzLzEwbTUwX2RldmJvYXJkLmR0cwotaW5kZXggMDVlYWMzMC4uNDYxYWU2OCAxMDA2NDQKLS0tLSBhL2FyY2gvbmlvczIvZHRzLzEwbTUwX2RldmJvYXJkLmR0cwotKysrIGIvYXJjaC9uaW9zMi9kdHMvMTBtNTBfZGV2Ym9hcmQuZHRzCi1AQCAtMTksNiArMTksNyBAQAotIAkJI3NpemUtY2VsbHMgPSA8MD47Ci0gCi0gCQljcHU6IGNwdUAwIHsKLSsJCQl1LWJvb3QsZG0tcHJlLXJlbG9jOwotIAkJCWRldmljZV90eXBlID0gImNwdSI7Ci0gCQkJY29tcGF0aWJsZSA9ICJhbHRyLG5pb3MyLTEuMSI7Ci0gCQkJcmVnID0gPDB4MDAwMDAwMDA+OwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvTVBDODMxNUVSREItZW5hYmxlLURIQ1AucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvTVBDODMxNUVSREItZW5hYmxlLURIQ1AucGF0Y2gKaW5kZXggY2VhNTJiNy4uZWNhYTE3OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL01QQzgzMTVFUkRCLWVuYWJsZS1ESENQLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaApAQCAtNSwxNSArNSwxNSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4KIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3MvTVBDODMxNUVSREJfZGVmY29uZmlnIGIvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcKLWluZGV4IDRlMmI3MDUuLmIwMmFiMWYgMTAwNjQ0Ci0tLS0gYS9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZwotKysrIGIvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcKLUBAIC05LDYgKzksNyBAQCBDT05GSUdfSFVTSF9QQVJTRVI9eQotIENPTkZJR19DTURfSTJDPXkKK0luZGV4OiBnaXQvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZworKysrIGdpdC9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZworQEAgLTEyLDYgKzEyLDcgQEAgQ09ORklHX0NNRF9QQ0k9eQorIENPTkZJR19DTURfU0FUQT15CiAgQ09ORklHX0NNRF9VU0I9eQogICMgQ09ORklHX0NNRF9TRVRFWFBSIGlzIG5vdCBzZXQKICtDT05GSUdfQ01EX0RIQ1A9eQogIENPTkZJR19DTURfTUlJPXkKICBDT05GSUdfQ01EX1BJTkc9eQotIENPTkZJR19DTURfRVhUMj15CisgQ09ORklHX0NNRF9EQVRFPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTcuMDkuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxNy4wOS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZTUxMjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxNy4wOS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmRlbnguZGUvd2lraS9VLUJvb3QvV2ViSG9tZSIKLVNFQ1RJT04gPSAiYm9vdGxvYWRlcnMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZXMvUkVBRE1FO21kNT1hMmM2NzhjZmQ0YTRkOTcxMzU1ODVjYWQ5MDg1NDFjNiIKLVBFID0gIjEiCi0KLSMgV2UgdXNlIHRoZSByZXZpc2lvbiBpbiBvcmRlciB0byBhdm9pZCBoYXZpbmcgdG8gZmV0Y2ggaXQgZnJvbSB0aGUKLSMgcmVwbyBkdXJpbmcgcGFyc2UKLVNSQ1JFViA9ICJjOThhYzM0ODdlNDEzYzcxZTVkMzYzMjJlZjMzMjRiMjFjNmY2MGY5IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5kZW54LmRlL3UtYm9vdC5naXQgXAotICAgIGZpbGU6Ly9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaCBcCi0gICAgZmlsZTovLzEwbTUwLXVwZGF0ZS1kZXZpY2UtdHJlZS5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE4LjAxLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTguMDEuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMDczZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE4LjAxLmluYwpAQCAtMCwwICsxLDE2IEBACitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRlbnguZGUvd2lraS9VLUJvb3QvV2ViSG9tZSIKK1NFQ1RJT04gPSAiYm9vdGxvYWRlcnMiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZXMvUkVBRE1FO21kNT1hMmM2NzhjZmQ0YTRkOTcxMzU1ODVjYWQ5MDg1NDFjNiIKK1BFID0gIjEiCisKKyMgV2UgdXNlIHRoZSByZXZpc2lvbiBpbiBvcmRlciB0byBhdm9pZCBoYXZpbmcgdG8gZmV0Y2ggaXQgZnJvbSB0aGUKKyMgcmVwbyBkdXJpbmcgcGFyc2UKK1NSQ1JFViA9ICJmM2RkODdlMGI5ODk5OWE3OGU1MDBlOGM2ZDJiMDYzZWJhZGY1MzVhIgorCitTUkNfVVJJID0gImdpdDovL2dpdC5kZW54LmRlL3UtYm9vdC5naXQgXAorICAgIGZpbGU6Ly9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTcuMDkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTguMDEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxNy4wOS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE4LjAxLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxNy4wOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE3LjA5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWZjNTY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE3LjA5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotcmVxdWlyZSB1LWJvb3QtY29tbW9uXyR7UFZ9LmluYwotCi1TVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIGltYWdlIGNyZWF0aW9uIHRvb2wiCi1ERVBFTkRTID0gIm9wZW5zc2wiCi0KLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAnQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAnQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAnQ1JPU1NfQ09NUElMRT0iJHtIT1NUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2Ugc2FuZGJveF9kZWZjb25maWcKLQotCSMgRGlzYWJsZSBDT05GSUdfQ01EX0xJQ0VOU0UsIGxpY2Vuc2UuaCBpcyBub3QgdXNlZCBieSB0b29scyBhbmQKLQkjIGdlbmVyYXRpbmcgaXQgcmVxdWlyZXMgYmluMmhlYWRlciB0b29sLCB3aGljaCBmb3IgdGFyZ2V0IGJ1aWxkCi0JIyBpcyBidWlsdCB3aXRoIHRhcmdldCB0b29scyBhbmQgdGh1cyBjYW5ub3QgYmUgZXhlY3V0ZWQgb24gaG9zdC4KLQlzZWQgLWkgInMvQ09ORklHX0NNRF9MSUNFTlNFPS4qLyMgQ09ORklHX0NNRF9MSUNFTlNFIGlzIG5vdCBzZXQvIiAuY29uZmlnCi0KLQlvZV9ydW5tYWtlIGNyb3NzX3Rvb2xzIE5PX1NETD0xCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSB0b29scy9ta2ltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtbWtpbWFnZQotCWxuIC1zZiB1Ym9vdC1ta2ltYWdlICR7RH0ke2JpbmRpcn0vbWtpbWFnZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxOC4wMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE4LjAxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMDA4YmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxOC4wMS5iYgpAQCAtMCwwICsxLDI5IEBACityZXF1aXJlIHUtYm9vdC1jb21tb25fJHtQVn0uaW5jCisKK1NVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgaW1hZ2UgY3JlYXRpb24gdG9vbCIKK0RFUEVORFMgPSAib3BlbnNzbCIKKworRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICdDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICdDUk9TU19DT01QSUxFPSIke0hPU1RfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSBzYW5kYm94X2RlZmNvbmZpZworCisJIyBEaXNhYmxlIENPTkZJR19DTURfTElDRU5TRSwgbGljZW5zZS5oIGlzIG5vdCB1c2VkIGJ5IHRvb2xzIGFuZAorCSMgZ2VuZXJhdGluZyBpdCByZXF1aXJlcyBiaW4yaGVhZGVyIHRvb2wsIHdoaWNoIGZvciB0YXJnZXQgYnVpbGQKKwkjIGlzIGJ1aWx0IHdpdGggdGFyZ2V0IHRvb2xzIGFuZCB0aHVzIGNhbm5vdCBiZSBleGVjdXRlZCBvbiBob3N0LgorCXNlZCAtaSAicy9DT05GSUdfQ01EX0xJQ0VOU0U9LiovIyBDT05GSUdfQ01EX0xJQ0VOU0UgaXMgbm90IHNldC8iIC5jb25maWcKKworCW9lX3J1bm1ha2UgY3Jvc3NfdG9vbHMgTk9fU0RMPTEKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21raW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2ltYWdlCisJbG4gLXNmIHVib290LW1raW1hZ2UgJHtEfSR7YmluZGlyfS9ta2ltYWdlCit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJkdGMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAxNy4wOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAxOC4wMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE3LjA5LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTguMDEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzL0ZpeC1OVUxMLXBvaW50ZXItY3Jhc2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlscy9GaXgtTlVMTC1wb2ludGVyLWNyYXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWZkYzU5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzL0ZpeC1OVUxMLXBvaW50ZXItY3Jhc2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1GaXggTlVMTCBwb2ludGVyIGNyYXNoLgotCi1CZWZvcmUgdXNlIHVzYmJ1c2xpc3QsIHdlIHNob3VsZCBjaGVjayBpZiBpdCBpcyB2YWxpZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsc3VzYi10LmMgfCAgICA0ICsrKysKLSAxIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xzdXNiLXQuYyBiL2xzdXNiLXQuYwotaW5kZXggZjYwNDE1NS4uNTgzYTQ2YSAxMDA2NDQKLS0tLSBhL2xzdXNiLXQuYwotKysrIGIvbHN1c2ItdC5jCi1AQCAtNjQzLDYgKzY0MywxMCBAQCBzdGF0aWMgdm9pZCBzb3J0X2J1c3Nlcyh2b2lkKQotIAkvKiBuZWVkIHRvIHJldmVyc2Ugc29ydCBidXMgbnVtYmVycyAqLwotIAlzdHJ1Y3QgdXNiYnVzbm9kZSAqdCwgKnAsICoqcHA7Ci0gCWludCBzd2FwcGVkOwotKwotKwlpZiAoIXVzYmJ1c2xpc3QpCi0rCQlyZXR1cm47Ci0rCi0gCWRvIHsKLSAJCXAgPSB1c2JidXNsaXN0OwotIAkJcHAgPSAmdXNiYnVzbGlzdDsKLS0tIAotMS43LjQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlscy9pY29udi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzL2ljb252LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDU1NTY3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzL2ljb252LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGRldGVjdGluZyBpY29udiBzdXBwb3J0IHVzaW5nIGF1dG90b29scwotdWNsaWJjIGRvZXMgbm90IGhhdmUgaWNvbnYgaW1wbGVtZW50YXRpb24gaW5zaWRlIGxpYmMgbGlrZSBnbGliYywgdGhlcmVmb3JlCi10aGUgZXhpc3RpbmcgY2hlY2tzIHdlcmUgbm90IHN1ZmZpY2llbnQsIGl0IHdvcmtlZCBmb3IgZ2xpYmMgYnV0IG5vdCBmb3IKLXVjbGliYy4gVGhlIG5ldyBwYXRjaCBwb3J0YWJseSBkZXRlY3RzIHRoZSBpY29udiBzdXBwb3J0IGFuZCBhZGRzIHRoZQotbGliaWNvbnYgdG8gbGlua2VyIGNtZGxpbmUKLQotVGhpcyBwYXRjaCBzaG91bGQgYmUgc3VibWl0dGVkIHVwc3RyZWFtIHRvbwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotSW5kZXg6IHVzYnV0aWxzLTAwOC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB1c2J1dGlscy0wMDgub3JpZy9jb25maWd1cmUuYWMKLSsrKyB1c2J1dGlscy0wMDgvY29uZmlndXJlLmFjCi1AQCAtMTAsNyArMTAsOSBAQCBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKLSBBQ19TWVNfTEFSR0VGSUxFCi0gCi0gQUNfQ0hFQ0tfSEVBREVSUyhbYnl0ZXN3YXAuaF0pCi0tQUNfQ0hFQ0tfRlVOQ1MoW25sX2xhbmdpbmZvIGljb252XSkKLSsKLStBTV9HTlVfR0VUVEVYVAotK0FNX0lDT05WCi0gCi0gUEtHX0NIRUNLX01PRFVMRVMoTElCVVNCLCBsaWJ1c2ItMS4wID49IDEuMC4wKQotIAotSW5kZXg6IHVzYnV0aWxzLTAwOC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHVzYnV0aWxzLTAwOC5vcmlnL01ha2VmaWxlLmFtCi0rKysgdXNidXRpbHMtMDA4L01ha2VmaWxlLmFtCi1AQCAtMjksNyArMjksOCBAQCBsc3VzYl9DUFBGTEFHUyA9IFwKLSAKLSBsc3VzYl9MREFERCA9IFwKLSAJJChMSUJVU0JfTElCUykgXAotLQkkKFVERVZfTElCUykKLSsJJChVREVWX0xJQlMpIFwKLSsJJChMSUJJQ09OVikKLSAKLSBtYW5fTUFOUyA9IFwKLSAJbHN1c2IuOAlcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlsc18wMDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlsc18wMDguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYzViZDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHNfMDA4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJIb3N0IHNpZGUgVVNCIGNvbnNvbGUgdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiQ29udGFpbnMgdGhlIGxzdXNiIHV0aWxpdHkgZm9yIGluc3BlY3RpbmcgdGhlIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBVU0IgYnVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXgtdXNiLm9yZyIKLVNFQ1RJT04gPSAiYmFzZSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICJsaWJ1c2IgemxpYiB2aXJ0dWFsL2xpYmljb252IHVkZXYiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy91c2IvdXNidXRpbHMvdXNidXRpbHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3VzYi1kZXZpY2VzLWF2b2lkLWRlcGVuZGVuY3ktb24tYmFzaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9GaXgtTlVMTC1wb2ludGVyLWNyYXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ljb252LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYjIwMTQ4YzJlNzg0NTc3ZTkyNGE3YjRjNTYwYzhmYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZDVmMTZjMjk2MWRmMzdlMjJlNDkyYzczNmEzZTE2MmE4ZmRlMjQ0ODBmMjNhNDBkODVmNzlhZjgwZDNmZTk1IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZyIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAidWRldi1od2RiIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAibGliYm9vc3Qtc3lzdGVtIGxpYmJvb3N0LXRocmVhZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzXzAwOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzXzAwOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmZjMGRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHNfMDA5LmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiSG9zdCBzaWRlIFVTQiBjb25zb2xlIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIkNvbnRhaW5zIHRoZSBsc3VzYiB1dGlsaXR5IGZvciBpbnNwZWN0aW5nIHRoZSBkZXZpY2VzIGNvbm5lY3RlZCB0byB0aGUgVVNCIGJ1cy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmciCitTRUNUSU9OID0gImJhc2UiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0RFUEVORFMgPSAibGlidXNiIHpsaWIgdmlydHVhbC9saWJpY29udiB1ZGV2IgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvdXNiL3VzYnV0aWxzL3VzYnV0aWxzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly91c2ItZGV2aWNlcy1hdm9pZC1kZXBlbmRlbmN5LW9uLWJhc2gucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImI1ZGJjNDk4YjJlYjUwNThmN2E1N2ZjNjUzMmQwYWFkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3MzU0MzI5M2ExN2M3ODAzOTk0ZWFjOTdhNDllNThiMzc3ZTA4ZTYyOTliYTExYWFkMDk3OTRiOTEzNDBlOGIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJsc3VzYiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZyIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAidWRldi1od2RiIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAibGliYm9vc3Qtc3lzdGVtIGxpYmJvb3N0LXRocmVhZCIKKworUEFDS0FHRV9CRUZPUkVfUE4gPSsgIiR7UE59LXB5dGhvbiIKK0ZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtiaW5kaXJ9L2xzdXNiLnB5IgorUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbjMtY29yZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgc2VkIC1pIC1FICcxcywjIS4rcHl0aG9uLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L2xzdXNiLnB5Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmRfMC4xLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avdjg2ZC92ODZkXzAuMS4xMC5iYgppbmRleCBlNWY2ZmZmLi5mOTdiODBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmRfMC4xLjEwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZF8wLjEuMTAuYmIKQEAgLTksNyArOSw3IEBACiBSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLXV2ZXNhZmIiCiBQUiA9ICJyMiIKIAotU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vdi8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxMTA0MjdUMDM1NTA2Wi9wb29sL21haW4vdi8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL1VwZGF0ZS14ODZlbXUtZnJvbS1YLm9yZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hci1mcm9tLWVudi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hYXJjaDY0LWhvc3QucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGktdWlfMC42LjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGktdWlfMC42LjMyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzM2NDYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNi4zMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvbW1vbi9hZGRyZXNzLmg7ZW5kbGluZT0yNTttZDU9YjFkMWQyY2RhMWMwN2ViODQ4ZWE3ZDYyMTU3MTJkOWQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY29yZS9kbnMuaDtlbmRsaW5lPTIzO21kNT02ZmU4MjU5MGI4MWFhMGRkZWE1MDk1YjU0OGUyZmRjYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1kYWVtb24vbWFpbi5jO2VuZGxpbmU9MjE7bWQ1PTllZTc3MzY4YzU0MDdhZjc3Y2FhZWYxYjA3Mjg1OTY5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNsaWVudC9jbGllbnQuaDtlbmRsaW5lPTIzO21kNT1mNGFjNzQxYTI1YzRmNDM0MDM5YmEzZTE4Yzg2NzRjZiIKLQotcmVxdWlyZSBhdmFoaS5pbmMKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtaW5zdGFsbC1HdGtCdWlsZGVyLWludGVyZmFjZS1maWxlcy1mb3ItLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjIyYjVlNzA1ZDNlYWJiMzFkMjZmMmUxZTdiMDc0MDEzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ1NDk5MTE4NWQ1MTRhMGFiYTU0ZWJlYjQwOGQ3NTc1YjYwZjU4MThhNzcyZTI4ZmEwZTE4Yjk4YmMxZGI0NTQiCi0KLURFUEVORFMgKz0gImF2YWhpIgotCi1BVkFISV9HVEsgPSAiZ3RrMyIKLQotUyA9ICIke1dPUktESVJ9L2F2YWhpLSR7UFZ9IgotCi1QQUNLQUdFUyA9ICIke1BOfSAke1BOfS11dGlscyAke1BOfS1kYmcgJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MgYXZhaGktZGlzY292ZXIiCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJhdmFoaS11aSouc28uKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLXVpJHtTT0xJQlNERVZ9IgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbGliYXZhaGktdWkuYSIKLQotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2IqICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2IqIgotCi1GSUxFU19hdmFoaS1kaXNjb3ZlciA9ICIke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9hdmFoaS1kaXNjb3Zlci5kZXNrdG9wIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvaW50ZXJmYWNlcy9hdmFoaS1kaXNjb3Zlci51aSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXZhaGktZGlzY292ZXItc3RhbmRhbG9uZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlybSAke0R9JHtzeXNjb25mZGlyfSAtcmYKLQlybSAke0R9JHtiYXNlX2xpYmRpcn0gLXJmCi0Jcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfSAtcmYKLQkjIFRoZSAke3N5c3RlbWRfdW5pdGRpcn0gaXMgL2xpYi9zeXN0ZW1kLCBzbyB3ZSBuZWVkIHJtZGlyIC9saWIsCi0JIyBidXQgbm90ICR7YmFzZV9saWJkaXJ9IGhlcmUuIEFuZCB0aGUgL2xpYiBtYXkgbm90IGV4aXN0Ci0JIyB3aGl0aG91dCBzeXN0ZW1kLgotCVsgISAtZCAke0R9L2xpYiBdIHx8IHJtZGlyICR7RH0vbGliIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5Ci0Jcm0gJHtEfSR7YmluZGlyfS9hdmFoaS1iKgotCXJtICR7RH0ke2JpbmRpcn0vYXZhaGktcCoKLQlybSAke0R9JHtiaW5kaXJ9L2F2YWhpLXIqCi0Jcm0gJHtEfSR7YmluZGlyfS9hdmFoaS1zKgotCXJtICR7RH0ke2luY2x1ZGVkaXJ9L2F2YWhpLWMqIC1yZgotCXJtICR7RH0ke2luY2x1ZGVkaXJ9L2F2YWhpLWcqIC1yZgotCXJtICR7RH0ke2xpYmRpcn0vbGliYXZhaGktYyoKLQlybSAke0R9JHtsaWJkaXJ9L2xpYmF2YWhpLWcqCi0Jcm0gJHtEfSR7bGliZGlyfS9wa2djb25maWcvYXZhaGktYyoKLQlybSAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9hdmFoaS1nKgotCXJtICR7RH0ke3NiaW5kaXJ9IC1yZgotCXJtICR7RH0ke2RhdGFkaXJ9L2F2YWhpL2EqCi0Jcm0gJHtEfSR7ZGF0YWRpcn0vYXZhaGkvcyoKLQlybSAke0R9JHtkYXRhZGlyfS9sb2NhbGUvIC1yZgotCXJtICR7RH0ke2RhdGFkaXJ9L2RidXMqIC1yZgotCXJtICR7RH0ke21hbmRpcn0vbWFuMS9hKgotCXJtICR7RH0ke21hbmRpcn0vbWFuNSAtcmYKLQlybSAke0R9JHttYW5kaXJ9L21hbjggLXJmCi0gICAgICAgIHJtICR7RH0ke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8gLXJmCi0gICAgICAgIHJtICR7RH0ke2RhdGFkaXJ9L2dpci0xLjAvIC1yZgotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY0OGUzOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNy5iYgpAQCAtMCwwICsxLDYyIEBACitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jb21tb24vYWRkcmVzcy5oO2VuZGxpbmU9MjU7bWQ1PWIxZDFkMmNkYTFjMDdlYjg0OGVhN2Q2MjE1NzEyZDlkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvcmUvZG5zLmg7ZW5kbGluZT0yMzttZDU9NmZlODI1OTBiODFhYTBkZGVhNTA5NWI1NDhlMmZkY2IgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktZGFlbW9uL21haW4uYztlbmRsaW5lPTIxO21kNT05ZWU3NzM2OGM1NDA3YWY3N2NhYWVmMWIwNzI4NTk2OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jbGllbnQvY2xpZW50Lmg7ZW5kbGluZT0yMzttZDU9ZjRhYzc0MWEyNWM0ZjQzNDAzOWJhM2UxOGM4Njc0Y2YiCisKK3JlcXVpcmUgYXZhaGkuaW5jCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKKworU1JDX1VSSVttZDVzdW1dID0gImQ3NmM1OWQwODgyYWM2YzI1NmQ3MGEyYTU4NTM2MmE2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3YTk5YjVkZmU3ZmRhZTc5NGUzZDFlZTdhNjI5NzNhMzY4ZTkxZTQxNGJkMGRmYTVkODQ0MzRkZTViMTQ4MDQiCisKK0RFUEVORFMgKz0gImF2YWhpIgorCitBVkFISV9HVEsgPSAiZ3RrMyIKKworUyA9ICIke1dPUktESVJ9L2F2YWhpLSR7UFZ9IgorCitQQUNLQUdFUyA9ICIke1BOfSAke1BOfS11dGlscyAke1BOfS1kYmcgJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MgYXZhaGktZGlzY292ZXIiCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJhdmFoaS11aSouc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLXVpJHtTT0xJQlNERVZ9IgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbGliYXZhaGktdWkuYSIKKworRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2IqICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2IqIgorCitGSUxFU19hdmFoaS1kaXNjb3ZlciA9ICIke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9hdmFoaS1kaXNjb3Zlci5kZXNrdG9wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvaW50ZXJmYWNlcy9hdmFoaS1kaXNjb3Zlci51aSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXZhaGktZGlzY292ZXItc3RhbmRhbG9uZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlybSAke0R9JHtzeXNjb25mZGlyfSAtcmYKKwlybSAke0R9JHtiYXNlX2xpYmRpcn0gLXJmCisJcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfSAtcmYKKwkjIFRoZSAke3N5c3RlbWRfdW5pdGRpcn0gaXMgL2xpYi9zeXN0ZW1kLCBzbyB3ZSBuZWVkIHJtZGlyIC9saWIsCisJIyBidXQgbm90ICR7YmFzZV9saWJkaXJ9IGhlcmUuIEFuZCB0aGUgL2xpYiBtYXkgbm90IGV4aXN0CisJIyB3aGl0aG91dCBzeXN0ZW1kLgorCVsgISAtZCAke0R9L2xpYiBdIHx8IHJtZGlyICR7RH0vbGliIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5CisJcm0gJHtEfSR7YmluZGlyfS9hdmFoaS1iKgorCXJtICR7RH0ke2JpbmRpcn0vYXZhaGktcCoKKwlybSAke0R9JHtiaW5kaXJ9L2F2YWhpLXIqCisJcm0gJHtEfSR7YmluZGlyfS9hdmFoaS1zKgorCXJtICR7RH0ke2luY2x1ZGVkaXJ9L2F2YWhpLWMqIC1yZgorCXJtICR7RH0ke2luY2x1ZGVkaXJ9L2F2YWhpLWcqIC1yZgorCXJtICR7RH0ke2xpYmRpcn0vbGliYXZhaGktYyoKKwlybSAke0R9JHtsaWJkaXJ9L2xpYmF2YWhpLWcqCisJcm0gJHtEfSR7bGliZGlyfS9wa2djb25maWcvYXZhaGktYyoKKwlybSAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9hdmFoaS1nKgorCXJtICR7RH0ke3NiaW5kaXJ9IC1yZgorCXJtICR7RH0ke2RhdGFkaXJ9L2F2YWhpL2EqCisJcm0gJHtEfSR7ZGF0YWRpcn0vbG9jYWxlLyAtcmYKKwlybSAke0R9JHtkYXRhZGlyfS9kYnVzKiAtcmYKKwlybSAke0R9JHttYW5kaXJ9L21hbjEvYSoKKwlybSAke0R9JHttYW5kaXJ9L21hbjUgLXJmCisJcm0gJHtEfSR7bWFuZGlyfS9tYW44IC1yZgorICAgICAgICBybSAke0R9JHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvIC1yZgorICAgICAgICBybSAke0R9JHtkYXRhZGlyfS9naXItMS4wLyAtcmYKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jCmluZGV4IDc4MTQ0NjQuLmVjMzY4ZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS5pbmMKQEAgLTIzLDIxICsyMywyMCBAQAogICAgICAgICAgICIKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGF0aGlhdC9hdmFoaS9yZWxlYXNlcy8iCiAKLSMgRm9yIGd0ayByZWxhdGVkIFBBQ0tBR0VDT05GSUdzOiBndGssIGd0azMgYW5kIHB5Z3RrCisjIEZvciBndGsgcmVsYXRlZCBQQUNLQUdFQ09ORklHczogZ3RrLCBndGszCiBBVkFISV9HVEsgPz0gIiIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gImRidXMgJHtBVkFISV9HVEt9IgogUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItLWVuYWJsZS1kYnVzLC0tZGlzYWJsZS1kYnVzLGRidXMiCiBQQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLC0tZGlzYWJsZS1ndGssZ3RrKyIKIFBBQ0tBR0VDT05GSUdbZ3RrM10gPSAiLS1lbmFibGUtZ3RrMywtLWRpc2FibGUtZ3RrMyxndGsrMyIKLVBBQ0tBR0VDT05GSUdbcHlndGtdID0gIi0tZW5hYmxlLXB5Z3RrLC0tZGlzYWJsZS1weWd0aywiCiAKIFVTRVJBRERfUEFDS0FHRVMgPSAiYXZhaGktZGFlbW9uIGF2YWhpLWF1dG9pcGQiCi1VU0VSQUREX1BBUkFNX2F2YWhpLWRhZW1vbiA9ICItLXN5c3RlbSAtLWhvbWUgL3Zhci9ydW4vYXZhaGktZGFlbW9uIFwKK1VTRVJBRERfUEFSQU1fYXZhaGktZGFlbW9uID0gIi0tc3lzdGVtIC0taG9tZSAvcnVuL2F2YWhpLWRhZW1vbiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgYXZhaGkiCiAKLVVTRVJBRERfUEFSQU1fYXZhaGktYXV0b2lwZCA9ICItLXN5c3RlbSAtLWhvbWUgL3Zhci9ydW4vYXZhaGktYXV0b2lwZCBcCitVU0VSQUREX1BBUkFNX2F2YWhpLWF1dG9pcGQgPSAiLS1zeXN0ZW0gLS1ob21lIC9ydW4vYXZhaGktYXV0b2lwZCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWMgXCJBdmFoaSBhdXRvaXAgZGFlbW9uXCIgXApAQCAtMTEwLDExICsxMDksNiBAQAogUlJFQ09NTUVORFNfYXZhaGktZGFlbW9uX2FwcGVuZF9saWJjLWdsaWJjID0gIiBsaWJuc3MtbWRucyIKIFJSRUNPTU1FTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsaWJuc3MtbWRucyIKIAotUlJFQ09NTUVORFNfYXZhaGktZGV2ID0gImV4cGF0LWRldiBsaWJjYXAtZGV2IGxpYmRhZW1vbi1kZXYgZGJ1cy1kZXYgZ2xpYi0yLjAtZGV2IHVwZGF0ZS1yYy5kLWRldiIKLVJSRUNPTU1FTkRTX2F2YWhpLWRldl9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2V0dGV4dC1kZXYiCi0KLVJSRUNPTU1FTkRTX2F2YWhpLWRldltub2RlcHJyZWNzXSA9ICIxIgotCiBDT05GRklMRVNfYXZhaGktZGFlbW9uID0gIiR7c3lzY29uZmRpcn0vYXZhaGkvYXZhaGktZGFlbW9uLmNvbmYiCiAKIElOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiYXZhaGktZGFlbW9uIGF2YWhpLWRuc2NvbmZkIgpAQCAtMTI1LDEyICsxMTksNyBAQAogCiBkb19pbnN0YWxsKCkgewogCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIGRvbid0IGluc3RhbGwgL3Zhci9ydW4gd2hlbiBwb3B1bGF0aW5nIHJvb3Rmcy4gRG8gaXQgdGhyb3VnaCB2b2xhdGlsZQotCSMgL3Zhci9ydW4gb2YgY3VycmVudCB2ZXJzaW9uIGlzIGVtcHR5LCBzbyBqdXN0IHJlbW92ZSBpdC4KLQkjIGlmIC92YXIvcnVuIGJlY29tZSBub24tZW1wdHkgaW4gdGhlIGZ1dHVyZSwgbmVlZCB0byBpbnN0YWxsIGl0IHZpYSB2b2xhdGlsZQotCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsb2NhbHN0YXRlZGlyfQorCXJtIC1yZiAke0R9L3J1bgogCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9kYnVzLTEvaW50ZXJmYWNlcwogCXRlc3QgLWQgJHtEfSR7ZGF0YWRpcn0vZGJ1cy0xICYmIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2RhdGFkaXJ9L2RidXMtMQogCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2F2YWhpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjYuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjYuMzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYTYzMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC42LjMyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotcmVxdWlyZSBhdmFoaS5pbmMKLQotaW5oZXJpdCBzeXN0ZW1kCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tZGFlbW9uICR7UE59LWRuc2NvbmZkIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWRhZW1vbiA9ICJhdmFoaS1kYWVtb24uc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1kbnNjb25mZCA9ICJhdmFoaS1kbnNjb25mZC5zZXJ2aWNlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jb21tb24vYWRkcmVzcy5oO2VuZGxpbmU9MjU7bWQ1PWIxZDFkMmNkYTFjMDdlYjg0OGVhN2Q2MjE1NzEyZDlkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvcmUvZG5zLmg7ZW5kbGluZT0yMzttZDU9NmZlODI1OTBiODFhYTBkZGVhNTA5NWI1NDhlMmZkY2IgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktZGFlbW9uL21haW4uYztlbmRsaW5lPTIxO21kNT05ZWU3NzM2OGM1NDA3YWY3N2NhYWVmMWIwNzI4NTk2OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jbGllbnQvY2xpZW50Lmg7ZW5kbGluZT0yMzttZDU9ZjRhYzc0MWEyNWM0ZjQzNDAzOWJhM2UxOGM4Njc0Y2YiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9hdmFoaS1maXgtcmVzb3VyY2UtdW5hdmFpYWJsZS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIyYjVlNzA1ZDNlYWJiMzFkMjZmMmUxZTdiMDc0MDEzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ1NDk5MTE4NWQ1MTRhMGFiYTU0ZWJlYjQwOGQ3NTc1YjYwZjU4MThhNzcyZTI4ZmEwZTE4Yjk4YmMxZGI0NTQiCi0KLURFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSIKLQotUEFDS0FHRVMgPSsgImxpYmF2YWhpLWdvYmplY3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M5MWYxMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNy5iYgpAQCAtMCwwICsxLDIwIEBACityZXF1aXJlIGF2YWhpLmluYworCitpbmhlcml0IHN5c3RlbWQKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1kYWVtb24gJHtQTn0tZG5zY29uZmQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tZGFlbW9uID0gImF2YWhpLWRhZW1vbi5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWRuc2NvbmZkID0gImF2YWhpLWRuc2NvbmZkLnNlcnZpY2UiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvbW1vbi9hZGRyZXNzLmg7ZW5kbGluZT0yNTttZDU9YjFkMWQyY2RhMWMwN2ViODQ4ZWE3ZDYyMTU3MTJkOWQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY29yZS9kbnMuaDtlbmRsaW5lPTIzO21kNT02ZmU4MjU5MGI4MWFhMGRkZWE1MDk1YjU0OGUyZmRjYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1kYWVtb24vbWFpbi5jO2VuZGxpbmU9MjE7bWQ1PTllZTc3MzY4YzU0MDdhZjc3Y2FhZWYxYjA3Mjg1OTY5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNsaWVudC9jbGllbnQuaDtlbmRsaW5lPTIzO21kNT1mNGFjNzQxYTI1YzRmNDM0MDM5YmEzZTE4Yzg2NzRjZiIKKworU1JDX1VSSVttZDVzdW1dID0gImQ3NmM1OWQwODgyYWM2YzI1NmQ3MGEyYTU4NTM2MmE2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3YTk5YjVkZmU3ZmRhZTc5NGUzZDFlZTdhNjI5NzNhMzY4ZTkxZTQxNGJkMGRmYTVkODQ0MzRkZTViMTQ4MDQiCisKK0RFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSIKKworUEFDS0FHRVMgPSsgImxpYmF2YWhpLWdvYmplY3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1pbnN0YWxsLUd0a0J1aWxkZXItaW50ZXJmYWNlLWZpbGVzLWZvci0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1pbnN0YWxsLUd0a0J1aWxkZXItaW50ZXJmYWNlLWZpbGVzLWZvci0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MjYwN2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtaW5zdGFsbC1HdGtCdWlsZGVyLWludGVyZmFjZS1maWxlcy1mb3ItLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSA2ZmYyNTVlZmY0ZmVhNjM1MGI1ZTA0NjJmZWUxNzZmYWRjMjZmYzFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFN1biwgMTIgSnVuIDIwMTYgMTg6MzI6NDkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBpbnN0YWxsIEd0a0J1aWxkZXIgaW50ZXJmYWNlIGZpbGVzIGZvciBHVEsrMwotIHRvbwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xhdGhpYXQvYXZhaGkvcHVsbC8xMzBdCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODdhOWExNy4uOTg2MGRjYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTY1LDcgKzk2NSw3IEBAIEFDX1NVQlNUKGF2YWhpX3NvY2tldCkKLSAjCi0gIyBBdmFoaSBpbnRlcmZhY2VzIGRpcgotICMKLS1pZiB0ZXN0ICJ4JEhBVkVfUFlUSE9OX0RCVVMiID0gInh5ZXMiIC1vICJ4JEhBVkVfR1RLIiA9ICJ4eWVzIjsgdGhlbgotK2lmIHRlc3QgIngkSEFWRV9QWVRIT05fREJVUyIgPSAieHllcyIgLW8gIngkSEFWRV9HVEsiID0gInh5ZXMiIC1vICJ4JEhBVkVfR1RLMyIgPSAieHllcyI7IHRoZW4KLSAJaW50ZXJmYWNlc2Rpcj0iJHtkYXRhZGlyfS8ke1BBQ0tBR0V9L2ludGVyZmFjZXMvIgotIAlBQ19TVUJTVChpbnRlcmZhY2VzZGlyKQotIGZpCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzL2F2YWhpLWZpeC1yZXNvdXJjZS11bmF2YWlhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvYXZhaGktZml4LXJlc291cmNlLXVuYXZhaWFibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMmZkNzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvYXZhaGktZml4LXJlc291cmNlLXVuYXZhaWFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUJhY2twb3J0IGZyb206Ci1odHRwczovL2dpdGh1Yi5jb20vZXhwZXJpbWVudGFsLXBsYXRmb3JtL3BsYXRmb3JtLWhvc3RuYW1lLWF2YWhpL3B1bGwvOQotCi1JdCBzb21ldGltZXMgZmFpbHMgdG8gcnVuIGF2YWhpIHdpdGggZXJyb3I6ICJDb3VsZCBub3QgcmVjZWl2ZSByZXR1cm4gdmFsdWUKLWZyb20gZGFlbW9uIHByb2Nlc3MiLiBJdCBoYXMgc2FtZSByb290IGNhdXNlIHdpdGgKLWh0dHBzOi8vZ2l0aHViLmNvbS9seGMvbHhjL2lzc3Vlcy8yNS4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gNTE1MDk4MzEwMmFkNWFkNDNmMGRhZTIwM2NiMzMyYzE2OGViNWE3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhpbm5lcmsgSGFhcmR0IDxoYWFyZHRAaW5mb3JtYXRpb24tY29udHJvbC5kZT4KLURhdGU6IFRodSwgMTcgRGVjIDIwMTUgMTE6NTI6MTkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGBjaHJvb3QuYzogZm9yaygpIGZhaWxlZDogUmVzb3VyY2UgdGVtcG9yYXJpbHkKLSB1bmF2YWlsYWJsZWAgYXMgcGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9seGMvbHhjL2lzc3Vlcy8yNS4KLQotLS0tCi0gYXZhaGktZGFlbW9uL2F2YWhpLWRhZW1vbi5jb25mIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2F2YWhpLWRhZW1vbi9hdmFoaS1kYWVtb24uY29uZiBiL2F2YWhpLWRhZW1vbi9hdmFoaS1kYWVtb24uY29uZgotaW5kZXggOTUxNjZmOC4uM2Q1YjdhNiAxMDA2NDQKLS0tLSBhL2F2YWhpLWRhZW1vbi9hdmFoaS1kYWVtb24uY29uZgotKysrIGIvYXZhaGktZGFlbW9uL2F2YWhpLWRhZW1vbi5jb25mCi1AQCAtNjUsNCArNjUsMyBAQCBybGltaXQtZGF0YT00MTk0MzA0Ci0gcmxpbWl0LWZzaXplPTAKLSBybGltaXQtbm9maWxlPTc2OAotIHJsaW1pdC1zdGFjaz00MTk0MzA0Ci0tcmxpbWl0LW5wcm9jPTMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzL2luaXRzY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy9pbml0c2NyaXB0LnBhdGNoCmluZGV4IDE5Mzg4OWUuLmM4NTZjM2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzL2luaXRzY3JpcHQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvaW5pdHNjcmlwdC5wYXRjaApAQCAtMSwxMCArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLWRpZmYgLS1naXQgYS9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kYWVtb24uaW4gYi9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kYWVtb24uaW4KLWluZGV4IDMwYTJjMmYuLmI1ODQ4YTggMTAwNzU1Ci0tLS0gYS9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kYWVtb24uaW4KLSsrKyBiL2luaXRzY3JpcHQvZGViaWFuL2F2YWhpLWRhZW1vbi5pbgotQEAgLTEsMiArMSwxNCBAQAorSW5kZXg6IGF2YWhpLTAuNy9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kYWVtb24uaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdmFoaS0wLjcub3JpZy9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kYWVtb24uaW4KKysrKyBhdmFoaS0wLjcvaW5pdHNjcmlwdC9kZWJpYW4vYXZhaGktZGFlbW9uLmluCitAQCAtMSw1ICsxLDE3IEBACiAgIyEvYmluL3NoCiAtCiArIyMjIEJFR0lOIElOSVQgSU5GTwpAQCAtMjAsMTEgKzIwLDE0IEBACiArIyAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseQogKyMjIyBFTkQgSU5JVCBJTkZPCiArIwotZGlmZiAtLWdpdCBhL2luaXRzY3JpcHQvZGViaWFuL2F2YWhpLWRuc2NvbmZkLmluIGIvaW5pdHNjcmlwdC9kZWJpYW4vYXZhaGktZG5zY29uZmQuaW4KLWluZGV4IGFjMzQ4MDQuLmY5NWMzNDAgMTAwNzU1Ci0tLS0gYS9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kbnNjb25mZC5pbgotKysrIGIvaW5pdHNjcmlwdC9kZWJpYW4vYXZhaGktZG5zY29uZmQuaW4KLUBAIC0xLDEgKzEsMTQgQEAKKyAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGF2YWhpLgorICMKKyAjIGF2YWhpIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKK0luZGV4OiBhdmFoaS0wLjcvaW5pdHNjcmlwdC9kZWJpYW4vYXZhaGktZG5zY29uZmQuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdmFoaS0wLjcub3JpZy9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kbnNjb25mZC5pbgorKysrIGF2YWhpLTAuNy9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kbnNjb25mZC5pbgorQEAgLTEsNCArMSwxNyBAQAogICMhL2Jpbi9zaAogKyMjIyBCRUdJTiBJTklUIElORk8KICsjIFByb3ZpZGVzOiAgICAgICAgICBhdmFoaS1kbnNjb25mZApAQCAtMzksMyArNDIsNiBAQAogKyMgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkKICsjIyMgRU5EIElOSVQgSU5GTwogKyMKKyAKKyAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGF2YWhpLgorICMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjUtUDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC41LVAzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzcyNGE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjUtUDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJJU0MgSW50ZXJuZXQgRG9tYWluIE5hbWUgU2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pc2Mub3JnL3N3L2JpbmQvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiSVNDICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1kYmE0NjUwNzQ0NjE5ODExOWJjZGUzMmE0ZmVhYWI0MyIKLQotREVQRU5EUyA9ICJvcGVuc3NsIGxpYmNhcCIKLQotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFrZS1ldGMtaW5pdGQtYmluZC1zdG9wLXdvcmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9udC10ZXN0LW9uLWhvc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggXAotICAgICAgICAgICBmaWxlOi8vbmFtZWQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9iaW5kOSBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0LmQtYWRkLXN1cHBvcnQtZm9yLXJlYWQtb25seS1yb290ZnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmluZC1jb25mZ2VuLWJ1aWxkLXVuaXguby1vbmNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtdXNlLXBrZy1jb25maWctdG8tZmluZC1saWJ4bWwyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdXNlLXB5dGhvbjMtYW5kLWZpeC1pbnN0YWxsLWxpYi1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+OShcLlxkKykrKC1QXGQrKSopLyIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ3OWNhZmJkOWFjNzYyMzllZTUzMmRkODlkMDVjYzgzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkN2U5NmI1YjBiYmFjN2I5MDBkNGM0YmJiODJlMDk1NmI0ZTUwOTQzM2M1ZmEzOTJiYjcyYTkyOWI5NjYwNmEiCi0KLUVOQUJMRV9JUFY2ID0gIi0tZW5hYmxlLWlwdjY9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ3llcycsICdubycsIGQpfSIKLUVYVFJBX09FQ09ORiA9ICIgJHtFTkFCTEVfSVBWNn0gLS13aXRoLWxpYnRvb2wgLS1lbmFibGUtdGhyZWFkcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZXZwb2xsIC0tZW5hYmxlLWVwb2xsIC0td2l0aC1nb3N0PW5vIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWdzc2FwaT1ubyAtLXdpdGgtZWNkc2E9eWVzIFwKLSAgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vYmluZCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZCB1c2VyYWRkIHBrZ2NvbmZpZyBweXRob24zLWRpcgotCi1leHBvcnQgUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIKLQotIyBQQUNLQUdFQ09ORklHcyByZWFkbGluZSBhbmQgbGliZWRpdCBzaG91bGQgTk9UIGJlIHNldCBhdCBzYW1lIHRpbWUKLVBBQ0tBR0VDT05GSUcgPz0gInJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1todHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmU9LWxyZWFkbGluZSwscmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1yZWFkbGluZT0tbGVkaXQsLGxpYmVkaXQiCi1QQUNLQUdFQ09ORklHW3VyYW5kb21dID0gIi0td2l0aC1yYW5kb21kZXY9L2Rldi91cmFuZG9tLC0td2l0aC1yYW5kb21kZXY9L2Rldi9yYW5kb20sLCIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCAtLW5vLWNyZWF0ZS1ob21lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIGJpbmQiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJiaW5kIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuYW1lZC5zZXJ2aWNlIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLQotUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LXV0aWxzIgotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2hvc3QgJHtiaW5kaXJ9L2RpZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2lzYy1jb25maWcuaCIKLUZJTEVTXyR7UE59ICs9ICIke3NiaW5kaXJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0JIyBjbGVhbiBob3N0IHBhdGggaW4gaXNjLWNvbmZpZy5zaCBiZWZvcmUgdGhlIGhhcmRsaW5rIGNyZWF0ZWQKLQkjIGJ5ICJtYWtlIGluc3RhbGwiOgotCSMgICBiaW5kOS1jb25maWcgLT4gaXNjLWNvbmZpZy5zaAotCXNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sIiAke0J9L2lzYy1jb25maWcuc2gKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm0gIiR7RH0ke2JpbmRpcn0vbnNsb29rdXAiCi0Jcm0gIiR7RH0ke21hbmRpcn0vbWFuMS9uc2xvb2t1cC4xIgotCXJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0Jcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgotCWluc3RhbGwgLWQgLW8gYmluZCAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCIKLQlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9iaW5kIgotCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKLQlpbnN0YWxsIC1tIDY0NCAke1N9L2NvbmYvKiAiJHtEfSR7c3lzY29uZmRpcn0vYmluZC8iCi0JaW5zdGFsbCAtbSA3NTUgIiR7U30vaW5pdC5kIiAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2JpbmQiCi0Jc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uMywjISAvdXNyL2Jpbi9weXRob24zLCcgJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlICR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jaGVja2RzCi0KLQkjIEluc3RhbGwgc3lzdGVtZCByZWxhdGVkIGZpbGVzCi0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotCWluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggJHtEfSR7c2JpbmRpcn0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmFtZWQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCSAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uYW1lZC5zZXJ2aWNlCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9iaW5kOSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLQkJZWNobyAiZCAvcnVuL25hbWVkIDA3NTUgYmluZCBiaW5kIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2JpbmQuY29uZgotCWZpCi0KLSAgICBybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vaXNjLyoucHljCi19Ci0KLUNPTkZGSUxFU18ke1BOfSA9ICIgXAotCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5sb2NhbCBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYub3B0aW9ucyBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLjAgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi4xMjcgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi5lbXB0eSBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLmxvY2FsIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIucm9vdCBcCi0JIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yjg4MzViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuNi5iYgpAQCAtMCwwICsxLDEyMyBAQAorU1VNTUFSWSA9ICJJU0MgSW50ZXJuZXQgRG9tYWluIE5hbWUgU2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pc2Mub3JnL3N3L2JpbmQvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiSVNDICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1kYmE0NjUwNzQ0NjE5ODExOWJjZGUzMmE0ZmVhYWI0MyIKKworREVQRU5EUyA9ICJvcGVuc3NsIGxpYmNhcCIKKworU1JDX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFrZS1ldGMtaW5pdGQtYmluZC1zdG9wLXdvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9udC10ZXN0LW9uLWhvc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggXAorICAgICAgICAgICBmaWxlOi8vbmFtZWQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9iaW5kOSBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0LmQtYWRkLXN1cHBvcnQtZm9yLXJlYWQtb25seS1yb290ZnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmluZC1jb25mZ2VuLWJ1aWxkLXVuaXguby1vbmNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtdXNlLXBrZy1jb25maWctdG8tZmluZC1saWJ4bWwyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdXNlLXB5dGhvbjMtYW5kLWZpeC1pbnN0YWxsLWxpYi1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODRlNjYzMjg0YjE3YWVlMGRmMWNlNmYyNDhiMTM3ZDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTdiYmNkMmJkN2IxZDMyZjViYTRiMzBkNWRiZThhMzliY2UyMDAwNzkwNDgwNzNkMWUwZDA1MGZkZjQ3ZTY5ZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPjkoXC5cZCspKygtUFxkKykqKS8iCisKKworRU5BQkxFX0lQVjYgPSAiLS1lbmFibGUtaXB2Nj0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAneWVzJywgJ25vJywgZCl9IgorRVhUUkFfT0VDT05GID0gIiAke0VOQUJMRV9JUFY2fSAtLXdpdGgtbGlidG9vbCAtLWVuYWJsZS10aHJlYWRzIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRldnBvbGwgLS1lbmFibGUtZXBvbGwgLS13aXRoLWdvc3Q9bm8gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtZ3NzYXBpPW5vIC0td2l0aC1lY2RzYT15ZXMgXAorICAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9iaW5kIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorICAgICAgICAgICAgICAgIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQgcGtnY29uZmlnIHB5dGhvbjMtZGlyCisKK2V4cG9ydCBQWVRIT05fU0lURVBBQ0tBR0VTX0RJUgorCisjIFBBQ0tBR0VDT05GSUdzIHJlYWRsaW5lIGFuZCBsaWJlZGl0IHNob3VsZCBOT1QgYmUgc2V0IGF0IHNhbWUgdGltZQorUEFDS0FHRUNPTkZJRyA/PSAicmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2h0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZT0tbHJlYWRsaW5lLCxyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLS13aXRoLXJlYWRsaW5lPS1sZWRpdCwsbGliZWRpdCIKK1BBQ0tBR0VDT05GSUdbdXJhbmRvbV0gPSAiLS13aXRoLXJhbmRvbWRldj0vZGV2L3VyYW5kb20sLS13aXRoLXJhbmRvbWRldj0vZGV2L3JhbmRvbSwsIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIC0tbm8tY3JlYXRlLWhvbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgYmluZCIKKworSU5JVFNDUklQVF9OQU1FID0gImJpbmQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5hbWVkLnNlcnZpY2UiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLWNvcmUiCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdXRpbHMiCitGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vaG9zdCAke2JpbmRpcn0vZGlnIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaXNjLWNvbmZpZy5oIgorRklMRVNfJHtQTn0gKz0gIiR7c2JpbmRpcn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS1saWJzIgorRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vKi5zbyoiCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIGNsZWFuIGhvc3QgcGF0aCBpbiBpc2MtY29uZmlnLnNoIGJlZm9yZSB0aGUgaGFyZGxpbmsgY3JlYXRlZAorCSMgYnkgIm1ha2UgaW5zdGFsbCI6CisJIyAgIGJpbmQ5LWNvbmZpZyAtPiBpc2MtY29uZmlnLnNoCisJc2VkIC1pIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSwiICR7Qn0vaXNjLWNvbmZpZy5zaAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlybSAiJHtEfSR7YmluZGlyfS9uc2xvb2t1cCIKKwlybSAiJHtEfSR7bWFuZGlyfS9tYW4xL25zbG9va3VwLjEiCisJcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKwlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCisJaW5zdGFsbCAtZCAtbyBiaW5kICIke0R9JHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIgorCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQiCisJaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIgorCWluc3RhbGwgLW0gNjQ0ICR7U30vY29uZi8qICIke0R9JHtzeXNjb25mZGlyfS9iaW5kLyIKKwlpbnN0YWxsIC1tIDc1NSAiJHtTfS9pbml0LmQiICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvYmluZCIKKwlzZWQgLWkgLWUgJzFzLCMhLipweXRob24zLCMhIC91c3IvYmluL3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMKKworCSMgSW5zdGFsbCBzeXN0ZW1kIHJlbGF0ZWQgZmlsZXMKKwlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisJaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCAke0R9JHtzYmluZGlyfQorCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uYW1lZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCSAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25hbWVkLnNlcnZpY2UKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JpbmQ5ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCQllY2hvICJkIC9ydW4vbmFtZWQgMDc1NSBiaW5kIGJpbmQgLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvYmluZC5jb25mCisJZmkKKworICAgIHJtIC1mICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9pc2MvKi5weWMKK30KKworQ09ORkZJTEVTXyR7UE59ID0gIiBcCisJJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLmxvY2FsIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5vcHRpb25zIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMCBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLjEyNyBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLmVtcHR5IFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIubG9jYWwgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi5yb290IFwKKwkiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKaW5kZXggMTgwN2FhNy4uYWUyYTgzMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKQEAgLTYsNyArNiw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT05YmM1NGI5M2NkN2UxN2JmMDNmNTI1MTNmMzlmOTI2ZSIKLURFUEVORFMgPSAidWRldiBkYnVzLWdsaWIgZ2xpYi0yLjAgbGliY2hlY2siCitERVBFTkRTID0gInVkZXYgZGJ1cy1nbGliIGdsaWItMi4wIgogUFJPVklERVMgKz0gImJsdWV6LWhjaWR1bXAiCiBSUFJPVklERVNfJHtQTn0gKz0gImJsdWV6LWhjaWR1bXAiCiAKQEAgLTQxLDYgKzQxLDcgQEAKIFBBQ0tBR0VDT05GSUdbdG9vbHNdID0gIi0tZW5hYmxlLXRvb2xzLC0tZGlzYWJsZS10b29scyIKIFBBQ0tBR0VDT05GSUdbdGhyZWFkc10gPSAiLS1lbmFibGUtdGhyZWFkcywtLWRpc2FibGUtdGhyZWFkcyIKIFBBQ0tBR0VDT05GSUdbZGVwcmVjYXRlZF0gPSAiLS1lbmFibGUtZGVwcmVjYXRlZCwtLWRpc2FibGUtZGVwcmVjYXRlZCIKK1BBQ0tBR0VDT05GSUdbbWVzaF0gPSAiLS1lbmFibGUtbWVzaCwtLWRpc2FibGUtbWVzaCwganNvbi1jIgogCiBTUkNfVVJJID0gIlwKICAgICAke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2JsdWV0b290aC9ibHVlei0ke1BWfS50YXIueHogXApAQCAtNDksMTQgKzUwLDEyIEBACiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJycsICdmaWxlOi8vMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoJywgZCl9IFwKICAgICBmaWxlOi8vMDAwMS10ZXN0cy1hZGQtYS10YXJnZXQtZm9yLWJ1aWxkaW5nLXRlc3RzLXdpdGhvdXQtcnVubmluLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1oY2lhdHRhY2gtYmNtNDN4eC1maXgtdGhlLWRlbGF5LXRpbWVyLWZvci1maXJtd2FyZS1kLnBhdGNoIFwKLSAgICBmaWxlOi8vY3ZlLTIwMTctMTAwMDI1MC5wYXRjaCBcCiAiCiBTID0gIiR7V09SS0RJUn0vYmx1ZXotJHtQVn0iCiAKIENWRV9QUk9EVUNUID0gImJsdWV6IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgcHRlc3QKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIGRpc3Ryb19mZWF0dXJlc19jaGVjayBwdGVzdCBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YQogCiBFWFRSQV9PRUNPTkYgPSAiXAogICAtLWVuYWJsZS10ZXN0IFwKQEAgLTEzMCwxNCArMTI5LDEzIEBACiAKIEZJTEVTXyR7UE59LW5vaW5zdC10b29scyA9ICIke0BnZXRfbm9pbnN0X3Rvb2xzX3BhdGhzKGQsIGJiLCBkLmdldFZhcignTk9JTlNUX1RPT0xTJykpfSIKIAotUkRFUEVORFNfJHtQTn0tdGVzdHRvb2xzICs9ICJweXRob24zIHB5dGhvbjMtZGJ1cyBweXRob24zLXB5Z29iamVjdCIKK1JERVBFTkRTXyR7UE59LXRlc3R0b29scyArPSAicHl0aG9uMyBweXRob24zLWRidXMiCitSREVQRU5EU18ke1BOfS10ZXN0dG9vbHMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdweXRob24zLXB5Z29iamVjdCcsICcnLCBkKX0iCiAKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXN0ZW1kJywgJ2JsdWV0b290aC5zZXJ2aWNlJywgJycsIGQpfSIKIElOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0iCiBJTklUU0NSSVBUX05BTUVfJHtQTn0gPSAiYmx1ZXRvb3RoIgogCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKLQogZG9fY29tcGlsZV9wdGVzdCgpIHsKIAlvZV9ydW5tYWtlIGJ1aWxkdGVzdHMKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1oY2lhdHRhY2gtYmNtNDN4eC1maXgtdGhlLWRlbGF5LXRpbWVyLWZvci1maXJtd2FyZS1kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLWhjaWF0dGFjaC1iY200M3h4LWZpeC10aGUtZGVsYXktdGltZXItZm9yLWZpcm13YXJlLWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2Nzk0MzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLWhjaWF0dGFjaC1iY200M3h4LWZpeC10aGUtZGVsYXktdGltZXItZm9yLWZpcm13YXJlLWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDNiMzQxZmI0MjFlZjYxZGI3NzgyYmYxMzE0ZWM2OTM4Mjg0NjdkZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmR5IER1YW4gPGZ1Z2FuZy5kdWFuQG54cC5jb20+Ci1EYXRlOiBXZWQsIDIzIE5vdiAyMDE2IDE3OjEyOjEyICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGhjaWF0dGFjaDogYmNtNDN4eDogZml4IHRoZSBkZWxheSB0aW1lciBmb3IgZmlybXdhcmUgZG93bmxvYWQKLQotRnJvbSB0aGUgbG9nIGluIC5iY200M3h4X2xvYWRfZmlybXdhcmUoKToKLSAgICAgICAgLyogV2FpdCA1MG1zIHRvIGxldCB0aGUgZmlybXdhcmUgcGxhY2VkIGluIGRvd25sb2FkIG1vZGUgKi8KLSAgICAgICAgbmFub3NsZWVwKCZ0bV9tb2RlLCBOVUxMKTsKLQotQnV0IHRpbWVzcGVjIHRtX21vZGUgaXMgcmVhbCBpcyA1MHVzLiBDb3JyZWN0IHRoZSBkZWxheWVkIHRpbWVyIGNvdW50LgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vYmx1ZXRvb3RoL2JsdWV6LmdpdC9jb21taXQvP2lkPTc2MjU1ZjczMmQ2OGFlZjJiOTBkMzZkOWM3YmU1MWE5ZTE3MzljZTddCi0KLVNpZ25lZC1vZmYtYnk6IEZ1Z2FuZyBEdWFuIDxmdWdhbmcuZHVhbkBueHAuY29tPgotLS0tCi0gdG9vbHMvaGNpYXR0YWNoX2JjbTQzeHguYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90b29scy9oY2lhdHRhY2hfYmNtNDN4eC5jIGIvdG9vbHMvaGNpYXR0YWNoX2JjbTQzeHguYwotaW5kZXggODFmMzhjYi4uYWMxYjNjMSAxMDA2NDQKLS0tLSBhL3Rvb2xzL2hjaWF0dGFjaF9iY200M3h4LmMKLSsrKyBiL3Rvb2xzL2hjaWF0dGFjaF9iY200M3h4LmMKLUBAIC0yMjgsOCArMjI4LDggQEAgc3RhdGljIGludCBiY200M3h4X3NldF9zcGVlZChpbnQgZmQsIHN0cnVjdCB0ZXJtaW9zICp0aSwgdWludDMyX3Qgc3BlZWQpCi0gc3RhdGljIGludCBiY200M3h4X2xvYWRfZmlybXdhcmUoaW50IGZkLCBjb25zdCBjaGFyICpmdykKLSB7Ci0gCXVuc2lnbmVkIGNoYXIgY21kW10gPSB7IEhDSV9DT01NQU5EX1BLVCwgMHgyZSwgMHhmYywgMHgwMCB9OwotLQlzdHJ1Y3QgdGltZXNwZWMgdG1fbW9kZSA9IHsgMCwgNTAwMDAgfTsKLS0Jc3RydWN0IHRpbWVzcGVjIHRtX3JlYWR5ID0geyAwLCAyMDAwMDAwIH07Ci0rCXN0cnVjdCB0aW1lc3BlYyB0bV9tb2RlID0geyAwLCA1MDAwMDAwMCB9OwotKwlzdHJ1Y3QgdGltZXNwZWMgdG1fcmVhZHkgPSB7IDAsIDIwMDAwMDAwMCB9OwotIAl1bnNpZ25lZCBjaGFyIHJlc3BbQ0NfTUlOX1NJWkVdOwotIAl1bnNpZ25lZCBjaGFyIHR4X2J1ZlsxMDI0XTsKLSAJaW50IGxlbiwgZmRfZncsIG47Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvY3ZlLTIwMTctMTAwMDI1MC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvY3ZlLTIwMTctMTAwMDI1MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZhYzk2MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2N2ZS0yMDE3LTEwMDAyNTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1BbGwgdmVyc2lvbnMgb2YgdGhlIFNEUCBzZXJ2ZXIgaW4gQmx1ZVogNS40NiBhbmQgZWFybGllciBhcmUgdnVsbmVyYWJsZSB0byBhbgotaW5mb3JtYXRpb24gZGlzY2xvc3VyZSB2dWxuZXJhYmlsaXR5IHdoaWNoIGFsbG93cyByZW1vdGUgYXR0YWNrZXJzIHRvIG9idGFpbgotc2Vuc2l0aXZlIGluZm9ybWF0aW9uIGZyb20gdGhlIGJsdWV0b290aGQgcHJvY2VzcyBtZW1vcnkuIFRoaXMgdnVsbmVyYWJpbGl0eQotbGllcyBpbiB0aGUgcHJvY2Vzc2luZyBvZiBTRFAgc2VhcmNoIGF0dHJpYnV0ZSByZXF1ZXN0cy4KLQotQ1ZFOiBDVkUtMjAxNy0xMDAwMjUwCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDllMDA5NjQ3YjE0ZTgxMGUwNjYyNmRkZTdmMWJiOWVhM2MzNzVkMDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LnZvbi5kZW50ekBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDEwOjAxOjQwICswMzAwCi1TdWJqZWN0OiBzZHA6IEZpeCBPdXQtb2YtYm91bmRzIGhlYXAgcmVhZCBpbiBzZXJ2aWNlX3NlYXJjaF9hdHRyX3JlcSBmdW5jdGlvbgotCi1DaGVjayBpZiB0aGVyZSBpcyBlbm91Z2ggZGF0YSB0byBjb250aW51ZSBvdGhlcndpc2UgcmV0dXJuIGFuIGVycm9yLgotLS0tCi0gc3JjL3NkcGQtcmVxdWVzdC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3NkcGQtcmVxdWVzdC5jIGIvc3JjL3NkcGQtcmVxdWVzdC5jCi1pbmRleCAxZWVmZGNlLi4zMThkMDQ0IDEwMDY0NAotLS0tIGEvc3JjL3NkcGQtcmVxdWVzdC5jCi0rKysgYi9zcmMvc2RwZC1yZXF1ZXN0LmMKLUBAIC05MTcsNyArOTE3LDcgQEAgc3RhdGljIGludCBzZXJ2aWNlX3NlYXJjaF9hdHRyX3JlcShzZHBfcmVxX3QgKnJlcSwgc2RwX2J1Zl90ICpidWYpCi0gCX0gZWxzZSB7Ci0gCQkvKiBjb250aW51YXRpb24gU3RhdGUgZXhpc3RzIC0+IGdldCBmcm9tIGNhY2hlICovCi0gCQlzZHBfYnVmX3QgKnBDYWNoZSA9IHNkcF9nZXRfY2FjaGVkX3JzcChjc3RhdGUpOwotLQkJaWYgKHBDYWNoZSkgewotKwkJaWYgKHBDYWNoZSAmJiBjc3RhdGUtPmNTdGF0ZVZhbHVlLm1heEJ5dGVzU2VudCA8IHBDYWNoZS0+ZGF0YV9zaXplKSB7Ci0gCQkJdWludDE2X3Qgc2VudCA9IE1JTihtYXgsIHBDYWNoZS0+ZGF0YV9zaXplIC0gY3N0YXRlLT5jU3RhdGVWYWx1ZS5tYXhCeXRlc1NlbnQpOwotIAkJCXBSZXNwb25zZSA9IHBDYWNoZS0+ZGF0YTsKLSAJCQltZW1jcHkoYnVmLT5kYXRhLCBwUmVzcG9uc2UgKyBjc3RhdGUtPmNTdGF0ZVZhbHVlLm1heEJ5dGVzU2VudCwgc2VudCk7Ci0tLSAKLWNnaXQgdjEuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQ2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQ2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWY4NTg3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40Ni5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLXJlcXVpcmUgYmx1ZXo1LmluYwotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiYmx1ZXo1IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTEzZjM1ZDZmYTRjYTU3NzJjNTNhZGI5MzZiZjE5NDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRhYjNkMzgzN2MxYWZiOGFlMjI4YTk0YmExNzcwOWE0NjUwYmQ0ZGIyNDIxMWI2NzcxYWI3MzVjODkwOGUyOCIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gUkVBRExJTkUKLSMgc3VwcG9ydAotTk9JTlNUX1RPT0xTX1JFQURMSU5FID89ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RlcHJlY2F0ZWQnLCAnYXR0cmliL2dhdHR0b29sJywgJycsIGQpfSBcCi0gICAgdG9vbHMvb2JleC1jbGllbnQtdG9vbCBcCi0gICAgdG9vbHMvb2JleC1zZXJ2ZXItdG9vbCBcCi0gICAgdG9vbHMvYmx1ZXRvb3RoLXBsYXllciBcCi0gICAgdG9vbHMvb2JleGN0bCBcCi0gICAgdG9vbHMvYnRtZ210IFwKLSIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVEVTVElORwotIyBzdXBwb3J0Ci1OT0lOU1RfVE9PTFNfVEVTVElORyA/PSAiIFwKLSAgICBlbXVsYXRvci9idHZpcnQgXAotICAgIGVtdWxhdG9yL2IxZWUgXAotICAgIGVtdWxhdG9yL2hmcCBcCi0gICAgcGVyaXBoZXJhbC9idHNlbnNvciBcCi0gICAgdG9vbHMvM2RzcCBcCi0gICAgdG9vbHMvbWdtdC10ZXN0ZXIgXAotICAgIHRvb2xzL2dhcC10ZXN0ZXIgXAotICAgIHRvb2xzL2wyY2FwLXRlc3RlciBcCi0gICAgdG9vbHMvc2NvLXRlc3RlciBcCi0gICAgdG9vbHMvc21wLXRlc3RlciBcCi0gICAgdG9vbHMvaGNpLXRlc3RlciBcCi0gICAgdG9vbHMvcmZjb21tLXRlc3RlciBcCi0gICAgdG9vbHMvYm5lcC10ZXN0ZXIgXAotICAgIHRvb2xzL3VzZXJjaGFuLXRlc3RlciBcCi0iCi0KLSMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRPT0xTCi0jIHN1cHBvcnQKLU5PSU5TVF9UT09MU19CVCA/PSAiIFwKLSAgICB0b29scy9iZGFkZHIgXAotICAgIHRvb2xzL2F2aW5mbyBcCi0gICAgdG9vbHMvYXZ0ZXN0IFwKLSAgICB0b29scy9zY290ZXN0IFwKLSAgICB0b29scy9hbXB0ZXN0IFwKLSAgICB0b29scy9od2RiIFwKLSAgICB0b29scy9oY2lldmVudG1hc2sgXAotICAgIHRvb2xzL2hjaXNlY2ZpbHRlciBcCi0gICAgdG9vbHMvYnRpbmZvIFwKLSAgICB0b29scy9idHNub29wIFwKLSAgICB0b29scy9idHByb3h5IFwKLSAgICB0b29scy9idGlvdGVzdCBcCi0gICAgdG9vbHMvYm5lcHRlc3QgXAotICAgIHRvb2xzL21jYXB0ZXN0IFwKLSAgICB0b29scy9jbHRlc3QgXAotICAgIHRvb2xzL29vYnRlc3QgXAotICAgIHRvb2xzL2FkdnRlc3QgXAotICAgIHRvb2xzL3NlcTJic2VxIFwKLSAgICB0b29scy9ub2tmdyBcCi0gICAgdG9vbHMvY3JlYXRlLWltYWdlIFwKLSAgICB0b29scy9lZGR5c3RvbmUgXAotICAgIHRvb2xzL2liZWFjb24gXAotICAgIHRvb2xzL2J0Z2F0dC1jbGllbnQgXAotICAgIHRvb2xzL2J0Z2F0dC1zZXJ2ZXIgXAotICAgIHRvb2xzL3Rlc3QtcnVubmVyIFwKLSAgICB0b29scy9jaGVjay1zZWxmdGVzdCBcCi0gICAgdG9vbHMvZ2F0dC1zZXJ2aWNlIFwKLSAgICBwcm9maWxlcy9pYXAvaWFwZCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRhNmNkMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40OC5iYgpAQCAtMCwwICsxLDY5IEBACityZXF1aXJlIGJsdWV6NS5pbmMKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImJsdWV6NSIKKworU1JDX1VSSVttZDVzdW1dID0gImM5Yzg1M2YzYzkwNTY0Y2FiZWM3NWFiMzUxMDZjMzU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5YTg3MjMwNzJlZjY2YmFlN2VjMzAxYzc3NDkwMmViY2I0NDRjOWM1YjE0OWI1YTE5OWU2MGExYmE5NzBlOTAiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFJFQURMSU5FCisjIHN1cHBvcnQKK05PSU5TVF9UT09MU19SRUFETElORSA/PSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkZXByZWNhdGVkJywgJ2F0dHJpYi9nYXR0dG9vbCcsICcnLCBkKX0gXAorICAgIHRvb2xzL29iZXgtY2xpZW50LXRvb2wgXAorICAgIHRvb2xzL29iZXgtc2VydmVyLXRvb2wgXAorICAgIHRvb2xzL2JsdWV0b290aC1wbGF5ZXIgXAorICAgIHRvb2xzL29iZXhjdGwgXAorICAgIHRvb2xzL2J0bWdtdCBcCisiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRFU1RJTkcKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX1RFU1RJTkcgPz0gIiBcCisgICAgZW11bGF0b3IvYnR2aXJ0IFwKKyAgICBlbXVsYXRvci9iMWVlIFwKKyAgICBlbXVsYXRvci9oZnAgXAorICAgIHBlcmlwaGVyYWwvYnRzZW5zb3IgXAorICAgIHRvb2xzLzNkc3AgXAorICAgIHRvb2xzL21nbXQtdGVzdGVyIFwKKyAgICB0b29scy9nYXAtdGVzdGVyIFwKKyAgICB0b29scy9sMmNhcC10ZXN0ZXIgXAorICAgIHRvb2xzL3Njby10ZXN0ZXIgXAorICAgIHRvb2xzL3NtcC10ZXN0ZXIgXAorICAgIHRvb2xzL2hjaS10ZXN0ZXIgXAorICAgIHRvb2xzL3JmY29tbS10ZXN0ZXIgXAorICAgIHRvb2xzL2JuZXAtdGVzdGVyIFwKKyAgICB0b29scy91c2VyY2hhbi10ZXN0ZXIgXAorIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBUT09MUworIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfQlQgPz0gIiBcCisgICAgdG9vbHMvYmRhZGRyIFwKKyAgICB0b29scy9hdmluZm8gXAorICAgIHRvb2xzL2F2dGVzdCBcCisgICAgdG9vbHMvc2NvdGVzdCBcCisgICAgdG9vbHMvYW1wdGVzdCBcCisgICAgdG9vbHMvaHdkYiBcCisgICAgdG9vbHMvaGNpZXZlbnRtYXNrIFwKKyAgICB0b29scy9oY2lzZWNmaWx0ZXIgXAorICAgIHRvb2xzL2J0aW5mbyBcCisgICAgdG9vbHMvYnRzbm9vcCBcCisgICAgdG9vbHMvYnRwcm94eSBcCisgICAgdG9vbHMvYnRpb3Rlc3QgXAorICAgIHRvb2xzL2JuZXB0ZXN0IFwKKyAgICB0b29scy9tY2FwdGVzdCBcCisgICAgdG9vbHMvY2x0ZXN0IFwKKyAgICB0b29scy9vb2J0ZXN0IFwKKyAgICB0b29scy9hZHZ0ZXN0IFwKKyAgICB0b29scy9zZXEyYnNlcSBcCisgICAgdG9vbHMvbm9rZncgXAorICAgIHRvb2xzL2NyZWF0ZS1pbWFnZSBcCisgICAgdG9vbHMvZWRkeXN0b25lIFwKKyAgICB0b29scy9pYmVhY29uIFwKKyAgICB0b29scy9idGdhdHQtY2xpZW50IFwKKyAgICB0b29scy9idGdhdHQtc2VydmVyIFwKKyAgICB0b29scy90ZXN0LXJ1bm5lciBcCisgICAgdG9vbHMvY2hlY2stc2VsZnRlc3QgXAorICAgIHRvb2xzL2dhdHQtc2VydmljZSBcCisgICAgcHJvZmlsZXMvaWFwL2lhcGQgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtZmlyZXdhbGwtbmZ0YWJsZXMtZml4LWJ1aWxkLXdpdGgtbGlibmZ0bmwtMS4wLjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZhZmJkMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gNDA1OGNlMzE4NmE5OWZkNWYwMzM1MGZjMTFhN2ZjOGQzOGI2YTM4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDggTWF5IDIwMTcgMTA6NTM6MTggKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZmlyZXdhbGwtbmZ0YWJsZXM6IGZpeCBidWlsZCB3aXRoIGxpYm5mdG5sLTEuMC43Ci0KLVdlIG5lZWQgdGhlc2UgdXBkYXRlcyB0byBhY2NvbW1vZGF0ZSB0aGUgY2hhbmdlcyBjYXVzZWQgYnkgdGhlIGZvbGxvd2luZwotY29tbWl0IGluIGxpYm5mdG5sLTEuMC43Ci0KLWNvbW1pdCA5MDdhOWY4ZTVhOTNmNWJjZDQ0OTY0M2ViMzkxNmE2NTZkNjM0NzU4Ci1BdXRob3I6IFBhYmxvIE5laXJhIEF5dXNvIDxwYWJsb0BuZXRmaWx0ZXIub3JnPgotRGF0ZTogICBUdWUgRGVjIDIwIDEzOjQ3OjExIDIwMTYgKzAxMDAKLQotc3JjOiBnZXQgcmlkIG9mIGFsaWFzZXMgYW5kIGNvbXBhdAotCi1UaGlzIG1hY2hpbmVyeSB3YXMgaW50cm9kdWNlZCB0byBhdm9pZCBzdWRkZW4gY29tcGlsYXRpb24gYnJlYWthZ2Ugb2YKLW9sZCBuZnRhYmxlcyByZWxlYXNlcy4gV2l0aCB0aGUgdXBjb21pbmcgcmVsZWFzZSBvZiAwLjcgKGFuZCAwLjYgd2hpY2gKLWlzIG5vdyA2IG1vbnRocyBvbGQpIHRoaXMgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUuCi0KLU1vcmVvdmVyLCB1c2VycyBnYWluIG5vdGhpbmcgZnJvbSBvbGRlciByZWxlYXNlcyBzaW5jZSB0aGV5IGFyZQotaGFsZi1ib2lsZWQgYW5kIGJ1Z2d5LgotCi1TbyBsZXQncyBnZXQgcmlkIG9mIGFsaWFzZXMgbm93LiBCdW1wIExJQlZFUlNJT04gYW5kIHVwZGF0ZSBtYXAgZmlsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBzcmMvZmlyZXdhbGwtbmZ0YWJsZXMuYyB8IDE0ICsrKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9maXJld2FsbC1uZnRhYmxlcy5jIGIvc3JjL2ZpcmV3YWxsLW5mdGFibGVzLmMKLWluZGV4IDU4M2QxYzQuLjgzYjEzN2IgMTAwNjQ0Ci0tLS0gYS9zcmMvZmlyZXdhbGwtbmZ0YWJsZXMuYwotKysrIGIvc3JjL2ZpcmV3YWxsLW5mdGFibGVzLmMKLUBAIC0zODcsOSArMzg3LDkgQEAgc3RhdGljIGludCBhZGRfY21wKHN0cnVjdCBuZnRubF9ydWxlICpydWxlLCB1aW50MzJfdCBzcmVnLCB1aW50MzJfdCBvcCwKLSAgICAgICAgIGlmICghZXhwcikKLSAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Ci0gCi0tICAgICAgICBuZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUX0VYUFJfQ01QX1NSRUcsIHNyZWcpOwotLSAgICAgICAgbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVF9FWFBSX0NNUF9PUCwgb3ApOwotLSAgICAgICAgbmZ0bmxfZXhwcl9zZXQoZXhwciwgTkZUX0VYUFJfQ01QX0RBVEEsIGRhdGEsIGRhdGFfbGVuKTsKLSsgICAgICAgIG5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlROTF9FWFBSX0NNUF9TUkVHLCBzcmVnKTsKLSsgICAgICAgIG5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlROTF9FWFBSX0NNUF9PUCwgb3ApOwotKyAgICAgICAgbmZ0bmxfZXhwcl9zZXQoZXhwciwgTkZUTkxfRVhQUl9DTVBfREFUQSwgZGF0YSwgZGF0YV9sZW4pOwotIAotICAgICAgICAgbmZ0bmxfcnVsZV9hZGRfZXhwcihydWxlLCBleHByKTsKLSAKLUBAIC01NzUsOCArNTc1LDggQEAgc3RhdGljIGludCBidWlsZF9ydWxlX25hdChjb25zdCBjaGFyICphZGRyZXNzLCB1bnNpZ25lZCBjaGFyIHByZWZpeGxlbiwKLSAJZXhwciA9IG5mdG5sX2V4cHJfYWxsb2MoIm1ldGEiKTsKLSAJaWYgKCFleHByKQotIAkJZ290byBlcnI7Ci0tCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlRfRVhQUl9NRVRBX0tFWSwgTkZUX01FVEFfT0lGTkFNRSk7Ci0tCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlRfRVhQUl9NRVRBX0RSRUcsIE5GVF9SRUdfMSk7Ci0rCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlROTF9FWFBSX01FVEFfS0VZLCBORlRfTUVUQV9PSUZOQU1FKTsKLSsJbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVE5MX0VYUFJfTUVUQV9EUkVHLCBORlRfUkVHXzEpOwotIAluZnRubF9ydWxlX2FkZF9leHByKHJ1bGUsIGV4cHIpOwotIAllcnIgPSBhZGRfY21wKHJ1bGUsIE5GVF9SRUdfMSwgTkZUX0NNUF9FUSwgaW50ZXJmYWNlLAotIAkJCXN0cmxlbihpbnRlcmZhY2UpICsgMSk7Ci1AQCAtNjc3LDggKzY3Nyw4IEBAIHN0YXRpYyBpbnQgYnVpbGRfcnVsZV9zbmF0KGludCBpbmRleCwgY29uc3QgY2hhciAqYWRkcmVzcywKLSAJZXhwciA9IG5mdG5sX2V4cHJfYWxsb2MoIm1ldGEiKTsKLSAJaWYgKCFleHByKQotIAkJZ290byBlcnI7Ci0tCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlRfRVhQUl9NRVRBX0tFWSwgTkZUX01FVEFfT0lGKTsKLS0JbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVF9FWFBSX01FVEFfRFJFRywgTkZUX1JFR18xKTsKLSsJbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVE5MX0VYUFJfTUVUQV9LRVksIE5GVF9NRVRBX09JRik7Ci0rCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlROTF9FWFBSX01FVEFfRFJFRywgTkZUX1JFR18xKTsKLSAJbmZ0bmxfcnVsZV9hZGRfZXhwcihydWxlLCBleHByKTsKLSAJZXJyID0gYWRkX2NtcChydWxlLCBORlRfUkVHXzEsIE5GVF9DTVBfRVEsICZpbmRleCwgc2l6ZW9mKGluZGV4KSk7Ci0gCWlmIChlcnIgPCAwKQotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1naW9nbnV0bHMtRml4LWEtY3Jhc2gtdXNpbmctd2lzcHItb3Zlci1UTFMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1naW9nbnV0bHMtRml4LWEtY3Jhc2gtdXNpbmctd2lzcHItb3Zlci1UTFMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwODBkNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWdpb2dudXRscy1GaXgtYS1jcmFzaC11c2luZy13aXNwci1vdmVyLVRMUy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDkyOWZjOWI3MDY4MTAwNDQ0ZTBmZmNjY2QyNTg0MWY3ODc5MWU2MTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CitEYXRlOiBGcmksIDE1IFNlcCAyMDE3IDA2OjQwOjA4IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGd3ZWI6IEZpeCBhIGNyYXNoIHVzaW5nIHdpc3ByIG92ZXIgVExTCitUbzogY29ubm1hbkBsaXN0cy4wMS5vcmcKK0NjOiB3YWdpQG1vbm9tLm9yZworCitXaGVuIGdudXRsc19jaGFubmVsIGlzIGluc3RhbnRpYXRlZCwgdGhlIGdudXRsc19jaGFubmVsLT5lc3RhYmxpc2hlZAoraGFzIHRvIGJlIGluaXRpYXRlZCBhcyBGQUxTRS4gT3RoZXJ3aXNlLCBjaGVja19oYW5kc2hha2UgZnVuY3Rpb24KK3dvbid0IHdvcmsuIEEgcmFuZG9tIGluaXRpYWwgdmFsdWUgMSBvZiBnbnV0bHNfY2hhbm5lbC0+ZXN0YWJsaXNoZWQKK3dpbGwgbWFrZSBjaGVja19oYW5kc2hha2UgcmV0dXJuIEdfSU9fU1RBVFVTX05PUk1BTCwgd2hlbiB0aGUgY2hhbm5lbAoraXMgYWN0dWFsbHkgbm90IHJlYWR5IHRvIGJlIHVzZWQuIFRoZSBvYnNlcnZlZCBiZWhhdmlvdXJzIGFyZSwKKworLSB3aXNwciBpcyBnZXR0aW5nIHJhbmRvbSBlcnJvcnMgaW4gd2lzcHJfcG9ydGFsX3dlYl9yZXN1bHQKKy0gQ29ubk1hbiBjcmFzaGVzIG9uIGV4aXQgYWZ0ZXIgdGhvc2UgcmFuZG9tIGVycm9ycworLSB3aGVuIHdpc3ByIGlzIGx1Y2tseSB3b3JraW5nLCBDb25uTWFuIGRvZXNuJ3QgY3Jhc2ggb24gZXhpdAorCitTaWduZWQtb2ZmLWJ5OiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CisKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL25ldHdvcmsvY29ubm1hbi9jb25ubWFuLmdpdC9jb21taXQvP2lkPTczZTUzZjNiZDllN2RlYmFlODYzNDFmMWVlZTdiOTc4NjJhNTZhNWVdCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YW5kcmUuZHJhc3ppa0BqY2kuY29tPgorIGd3ZWIvZ2lvZ251dGxzLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nd2ViL2dpb2dudXRscy5jIGIvZ3dlYi9naW9nbnV0bHMuYworaW5kZXggMDlkYzllNy4uYzAyOWE4YiAxMDA2NDQKKy0tLSBhL2d3ZWIvZ2lvZ251dGxzLmMKKysrKyBiL2d3ZWIvZ2lvZ251dGxzLmMKK0BAIC00MjEsNyArNDIxLDcgQEAgR0lPQ2hhbm5lbCAqZ19pb19jaGFubmVsX2dudXRsc19uZXcoaW50IGZkKQorIAorIAlEQkcoIiIpOworIAorLQlnbnV0bHNfY2hhbm5lbCA9IGdfbmV3KEdJT0dudVRMU0NoYW5uZWwsIDEpOworKwlnbnV0bHNfY2hhbm5lbCA9IGdfbmV3MChHSU9HbnVUTFNDaGFubmVsLCAxKTsKKyAKKyAJY2hhbm5lbCA9IChHSU9DaGFubmVsICopIGdudXRsc19jaGFubmVsOworIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1pbmV0LUFkZC1wcmVmaXhsZW4tdG8taXByb3V0ZV9kZWZhdWx0X2Z1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtaW5ldC1BZGQtcHJlZml4bGVuLXRvLWlwcm91dGVfZGVmYXVsdF9mdW5jdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDdiMzU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtaW5ldC1BZGQtcHJlZml4bGVuLXRvLWlwcm91dGVfZGVmYXVsdF9mdW5jdGlvbi5wYXRjaApAQCAtMCwwICsxLDYzIEBACitGcm9tIDUwOGRjNjBhMWYwNzU4ZWJjNTg2YjZiMDg2NDc4YTE3NmQ0OTMwODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CitEYXRlOiBUaHUsIDUgT2N0IDIwMTcgMDk6MzQ6NDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIGluZXQ6IEFkZCBwcmVmaXhsZW4gdG8gaXByb3V0ZV9kZWZhdWx0X2Z1bmN0aW9uCitUbzogY29ubm1hbkBsaXN0cy4wMS5vcmcKK0NjOiB3YWdpQG1vbm9tLm9yZworCitBZGQgcHJlZml4bGVuIHBhcmFtZXRlciB0byB0aGlzIGZ1bmN0aW9uIGluIHByZXBhcmF0aW9uIGZvciB1c2luZworaXQgYWxzbyBpbiBjcmVhdGluZyBzdWJuZXQgcm91dGUgbGF0ZXIsIGUuZy4KKworZGVmYXVsdCB2aWEgMTkyLjE2OC4xMDAuMSBkZXYgZXRoMAorMTkyLjE2OC4xMDAuMC8yNCBkZXYgZXRoMAorCitTaWduZWQtb2ZmLWJ5OiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CisKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL25ldHdvcmsvY29ubm1hbi9jb25ubWFuLmdpdC9jb21taXQvP2lkPWVkZGE1YjY5NWRlMmVlNzlmMDIzMTRhYmM5YjQ2ZmRkNDZiMzg4ZTFdCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YW5kcmUuZHJhc3ppa0BqY2kuY29tPgorIHNyYy9pbmV0LmMgfCA3ICsrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2luZXQuYyBiL3NyYy9pbmV0LmMKK2luZGV4IGI4ODdhYTAuLmFiOGFlYzggMTAwNjQ0CistLS0gYS9zcmMvaW5ldC5jCisrKysgYi9zcmMvaW5ldC5jCitAQCAtMjc5Niw3ICsyNzk2LDcgQEAgaW50IF9fY29ubm1hbl9pbmV0X2RlbF9md21hcmtfcnVsZSh1aW50MzJfdCB0YWJsZV9pZCwgaW50IGZhbWlseSwgdWludDMyX3QgZndtYXIKKyB9CisgCisgc3RhdGljIGludCBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KGludCBjbWQsIHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKy0JCQljb25zdCBjaGFyICpnYXRld2F5KQorKwkJCWNvbnN0IGNoYXIgKmdhdGV3YXksIHVuc2lnbmVkIGNoYXIgcHJlZml4bGVuKQorIHsKKyAJc3RydWN0IF9fY29ubm1hbl9pbmV0X3J0bmxfaGFuZGxlIHJ0aDsKKyAJdW5zaWduZWQgY2hhciBidWZbc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcildOworQEAgLTI4MjksNiArMjgyOSw3IEBAIHN0YXRpYyBpbnQgaXByb3V0ZV9kZWZhdWx0X21vZGlmeShpbnQgY21kLCB1aW50MzJfdCB0YWJsZV9pZCwgaW50IGlmaW5kZXgsCisgCXJ0aC5yZXEudS5yLnJ0LnJ0bV9wcm90b2NvbCA9IFJUUFJPVF9CT09UOworIAlydGgucmVxLnUuci5ydC5ydG1fc2NvcGUgPSBSVF9TQ09QRV9VTklWRVJTRTsKKyAJcnRoLnJlcS51LnIucnQucnRtX3R5cGUgPSBSVE5fVU5JQ0FTVDsKKysJcnRoLnJlcS51LnIucnQucnRtX2RzdF9sZW4gPSBwcmVmaXhsZW47CisgCisgCV9fY29ubm1hbl9pbmV0X3J0bmxfYWRkYXR0cl9sKCZydGgucmVxLm4sIHNpemVvZihydGgucmVxKSwgUlRBX0dBVEVXQVksCisgCQkJCQkJCQlidWYsIGxlbik7CitAQCAtMjg2MCw3ICsyODYxLDcgQEAgaW50IF9fY29ubm1hbl9pbmV0X2FkZF9kZWZhdWx0X3RvX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKyB7CisgCS8qIGlwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAxLjIuMy40IGRldiB3bGFuMCB0YWJsZSAxMjM0ICovCisgCistCXJldHVybiBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KFJUTV9ORVdST1VURSwgdGFibGVfaWQsIGlmaW5kZXgsIGdhdGV3YXkpOworKwlyZXR1cm4gaXByb3V0ZV9kZWZhdWx0X21vZGlmeShSVE1fTkVXUk9VVEUsIHRhYmxlX2lkLCBpZmluZGV4LCBnYXRld2F5LCAwKTsKKyB9CisgCisgaW50IF9fY29ubm1hbl9pbmV0X2RlbF9kZWZhdWx0X2Zyb21fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorQEAgLTI4NjgsNyArMjg2OSw3IEBAIGludCBfX2Nvbm5tYW5faW5ldF9kZWxfZGVmYXVsdF9mcm9tX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKyB7CisgCS8qIGlwIHJvdXRlIGRlbCBkZWZhdWx0IHZpYSAxLjIuMy40IGRldiB3bGFuMCB0YWJsZSAxMjM0ICovCisgCistCXJldHVybiBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KFJUTV9ERUxST1VURSwgdGFibGVfaWQsIGlmaW5kZXgsIGdhdGV3YXkpOworKwlyZXR1cm4gaXByb3V0ZV9kZWZhdWx0X21vZGlmeShSVE1fREVMUk9VVEUsIHRhYmxlX2lkLCBpZmluZGV4LCBnYXRld2F5LCAwKTsKKyB9CisgCisgaW50IF9fY29ubm1hbl9pbmV0X2dldF9pbnRlcmZhY2VfbGxfYWRkcmVzcyhpbnQgaW5kZXgsIGludCBmYW1pbHksCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLXNlc3Npb24tS2VlcC10cmFjay1vZi1hZGRyLWluLWZ3X3NuYXQtc2Vzc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLXNlc3Npb24tS2VlcC10cmFjay1vZi1hZGRyLWluLWZ3X3NuYXQtc2Vzc2lvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWI0ZDBhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtc2Vzc2lvbi1LZWVwLXRyYWNrLW9mLWFkZHItaW4tZndfc25hdC1zZXNzaW9uLnBhdGNoCkBAIC0wLDAgKzEsMTEyIEBACitGcm9tIGI1ZmQ1OTQ1ODg2ZmExODQ1ZGI1Yzk2OTQyNGI2M2Q4OTRmZTAzNzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDEwOjAyOjE2IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBzZXNzaW9uOiBLZWVwIHRyYWNrIG9mIGFkZHIgaW4gZndfc25hdCAmIHNlc3Npb24KK1RvOiBjb25ubWFuQGxpc3RzLjAxLm9yZworQ2M6IHdhZ2lAbW9ub20ub3JnCisKK1doZW4gdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBzZXNzaW9uIGluIGZ3X3NuYXQncyBsaXN0IG9mIHNlc3Npb25zLAorZndfc25hdCBmYWlsZWQgdG8gYmUgcmUtY3JlYXRlZCB3aGVuIHVwZGF0ZS1zZXNzaW9uLXN0YXRlIGlzIHRyaWdnZXJlZAord2l0aCBuZXcgSVAgYWRkcmVzcy4gVGhpcyBpcyBiZWNhdXNlIGluZGV4IGFsb25lIGlzIG5vdCBzdWZmaWNpZW50IHRvCitkZWNpZGUgaWYgZndfc25hdCBuZWVkcyB0byBiZSByZS1jcmVhdGVkLiBUaGUgc29sdXRpb24gaGVyZSBpcyB0byBrZWVwCithIHRyYWNrIG9mIElQIGFkZHIgYW5kIHVzZSBpdCB0byBhdm9pZCBmYWxzZSBsb29rdXAgb2YgZndfc25hdC4KKworU2lnbmVkLW9mZi1ieTogSmlhbiBMaWFuZyA8amlhbmxpYW5nQHR5Y29pbnQuY29tPgorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL2Nvbm5tYW4vY29ubm1hbi5naXQvY29tbWl0Lz9pZD1mOWUyN2Q0YWJmY2FiNWM4MGEzOGUwODUwYjVkZGIyNjI3N2Y5N2MxXQorU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KKyBzcmMvc2Vzc2lvbi5jIHwgMTkgKysrKysrKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Nlc3Npb24uYyBiL3NyYy9zZXNzaW9uLmMKK2luZGV4IDllM2M1NTkuLjk2NWFjMDYgMTAwNjQ0CistLS0gYS9zcmMvc2Vzc2lvbi5jCisrKysgYi9zcmMvc2Vzc2lvbi5jCitAQCAtNjUsNiArNjUsNyBAQCBzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uIHsKKyAJc3RydWN0IGZpcmV3YWxsX2NvbnRleHQgKmZ3OworIAl1aW50MzJfdCBtYXJrOworIAlpbnQgaW5kZXg7CisrCWNoYXIgKmFkZHI7CisgCWNoYXIgKmdhdGV3YXk7CisgCWJvb2wgcG9saWN5X3JvdXRpbmc7CisgCWJvb2wgc25hdF9lbmFibGVkOworQEAgLTc5LDYgKzgwLDcgQEAgc3RydWN0IGZ3X3NuYXQgeworIAlHU0xpc3QgKnNlc3Npb25zOworIAlpbnQgaWQ7CisgCWludCBpbmRleDsKKysJY2hhciAqYWRkcjsKKyAJc3RydWN0IGZpcmV3YWxsX2NvbnRleHQgKmZ3OworIH07CisgCitAQCAtMjAwLDcgKzIwMiw3IEBAIHN0YXRpYyBjaGFyICpzZXJ2aWNlMmJlYXJlcihlbnVtIGNvbm5tYW5fc2VydmljZV90eXBlIHR5cGUpCisgCXJldHVybiAiIjsKKyB9CisgCistc3RhdGljIHN0cnVjdCBmd19zbmF0ICpmd19zbmF0X2xvb2t1cChpbnQgaW5kZXgpCisrc3RhdGljIHN0cnVjdCBmd19zbmF0ICpmd19zbmF0X2xvb2t1cChpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKmFkZHIpCisgeworIAlzdHJ1Y3QgZndfc25hdCAqZndfc25hdDsKKyAJR1NMaXN0ICpsaXN0OworQEAgLTIwOCw4ICsyMTAsMTEgQEAgc3RhdGljIHN0cnVjdCBmd19zbmF0ICpmd19zbmF0X2xvb2t1cChpbnQgaW5kZXgpCisgCWZvciAobGlzdCA9IGZ3X3NuYXRfbGlzdDsgbGlzdDsgbGlzdCA9IGxpc3QtPm5leHQpIHsKKyAJCWZ3X3NuYXQgPSBsaXN0LT5kYXRhOworIAorLQkJaWYgKGZ3X3NuYXQtPmluZGV4ID09IGluZGV4KQorKwkJaWYgKGZ3X3NuYXQtPmluZGV4ID09IGluZGV4KSB7CisrCQkJaWYgKGdfc3RyY21wMChhZGRyLCBmd19zbmF0LT5hZGRyKSAhPSAwKQorKwkJCQljb250aW51ZTsKKyAJCQlyZXR1cm4gZndfc25hdDsKKysJCX0KKyAJfQorIAlyZXR1cm4gTlVMTDsKKyB9CitAQCAtMjI0LDYgKzIyOSw3IEBAIHN0YXRpYyBpbnQgZndfc25hdF9jcmVhdGUoc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiAqc2Vzc2lvbiwKKyAKKyAJZndfc25hdC0+ZncgPSBfX2Nvbm5tYW5fZmlyZXdhbGxfY3JlYXRlKCk7CisgCWZ3X3NuYXQtPmluZGV4ID0gaW5kZXg7CisrCWZ3X3NuYXQtPmFkZHIgPSBnX3N0cmR1cChhZGRyKTsKKyAKKyAJZndfc25hdC0+aWQgPSBfX2Nvbm5tYW5fZmlyZXdhbGxfZW5hYmxlX3NuYXQoZndfc25hdC0+ZncsCisgCQkJCQkJaW5kZXgsIGlmbmFtZSwgYWRkcik7CitAQCAtMjM4LDYgKzI0NCw3IEBAIHN0YXRpYyBpbnQgZndfc25hdF9jcmVhdGUoc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiAqc2Vzc2lvbiwKKyAJcmV0dXJuIDA7CisgZXJyOgorIAlfX2Nvbm5tYW5fZmlyZXdhbGxfZGVzdHJveShmd19zbmF0LT5mdyk7CisrCWdfZnJlZShmd19zbmF0LT5hZGRyKTsKKyAJZ19mcmVlKGZ3X3NuYXQpOworIAlyZXR1cm4gZXJyOworIH0KK0BAIC0zOTMsNyArNDAwLDcgQEAgc3RhdGljIHZvaWQgZGVsX25hdF9ydWxlcyhzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uICpzZXNzaW9uKQorIAkJcmV0dXJuOworIAorIAlzZXNzaW9uLT5zbmF0X2VuYWJsZWQgPSBmYWxzZTsKKy0JZndfc25hdCA9IGZ3X3NuYXRfbG9va3VwKHNlc3Npb24tPmluZGV4KTsKKysJZndfc25hdCA9IGZ3X3NuYXRfbG9va3VwKHNlc3Npb24tPmluZGV4LCBzZXNzaW9uLT5hZGRyKTsKKyAKKyAJaWYgKCFmd19zbmF0KQorIAkJcmV0dXJuOworQEAgLTQyMCw4ICs0MjcsMTEgQEAgc3RhdGljIHZvaWQgYWRkX25hdF9ydWxlcyhzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uICpzZXNzaW9uKQorIAlpZiAoIWFkZHIpCisgCQlyZXR1cm47CisgCisrCWdfZnJlZShzZXNzaW9uLT5hZGRyKTsKKysJc2Vzc2lvbi0+YWRkciA9IGdfc3RyZHVwKGFkZHIpOworKworIAlzZXNzaW9uLT5zbmF0X2VuYWJsZWQgPSB0cnVlOworLQlmd19zbmF0ID0gZndfc25hdF9sb29rdXAoaW5kZXgpOworKwlmd19zbmF0ID0gZndfc25hdF9sb29rdXAoaW5kZXgsIHNlc3Npb24tPmFkZHIpOworIAlpZiAoZndfc25hdCkgeworIAkJZndfc25hdF9yZWYoc2Vzc2lvbiwgZndfc25hdCk7CisgCQlyZXR1cm47CitAQCAtNTAyLDYgKzUxMiw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfc2Vzc2lvbihzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uICpzZXNzaW9uKQorIAlnX2ZyZWUoc2Vzc2lvbi0+aW5mbyk7CisgCWdfZnJlZShzZXNzaW9uLT5pbmZvX2xhc3QpOworIAlnX2ZyZWUoc2Vzc2lvbi0+Z2F0ZXdheSk7CisrCWdfZnJlZShzZXNzaW9uLT5hZGRyKTsKKyAKKyAJZ19mcmVlKHNlc3Npb24pOworIH0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDItaW5ldC1JbXBsZW1lbnQtc3VibmV0LXJvdXRlLWNyZWF0aW9uLWRlbGV0aW9uLWluLWlwci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAyLWluZXQtSW1wbGVtZW50LXN1Ym5ldC1yb3V0ZS1jcmVhdGlvbi1kZWxldGlvbi1pbi1pcHIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM5NTNlNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAyLWluZXQtSW1wbGVtZW50LXN1Ym5ldC1yb3V0ZS1jcmVhdGlvbi1kZWxldGlvbi1pbi1pcHIucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAorRnJvbSAwOGNkYTQwMDQ0OTFkMzk3MWE4YjlkZjkzNzQyNmM0MzgwMGQxNWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmlhbiBMaWFuZyA8amlhbmxpYW5nQHR5Y29pbnQuY29tPgorRGF0ZTogVGh1LCA1IE9jdCAyMDE3IDA5OjM3OjA2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBpbmV0OiBJbXBsZW1lbnQgc3VibmV0IHJvdXRlIGNyZWF0aW9uL2RlbGV0aW9uIGluCisgaXByb3V0ZV9kZWZhdWx0X21vZGlmeQorVG86IGNvbm5tYW5AbGlzdHMuMDEub3JnCitDYzogd2FnaUBtb25vbS5vcmcKKworLSBDYWxjdWxhdGUgc3VibmV0IGFkZHJlc3MgYmFzZSBvbiBnYXRld2F5IGFkZHJlc3MgYW5kIHByZWZpeGxlbgorLSBEaWZmZXJlbnRpYXRlIGNyZWF0aW9uIG9mIHJvdXRlcyB0byBnYXRld2F5IGFuZCBzdWJuZXQKKworU2lnbmVkLW9mZi1ieTogSmlhbiBMaWFuZyA8amlhbmxpYW5nQHR5Y29pbnQuY29tPgorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL2Nvbm5tYW4vY29ubm1hbi5naXQvY29tbWl0Lz9pZD1mZjdkY2Y5MWYxMmEyYTIzN2ZlZWJjNmU2MDZkMGE4ZTkyOTc1NTI4XQorU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KKyBzcmMvaW5ldC5jIHwgMjIgKysrKysrKysrKysrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2luZXQuYyBiL3NyYy9pbmV0LmMKK2luZGV4IGFiOGFlYzguLjBkZGIwMzAgMTAwNjQ0CistLS0gYS9zcmMvaW5ldC5jCisrKysgYi9zcmMvaW5ldC5jCitAQCAtMjgwMiw2ICsyODAyLDkgQEAgc3RhdGljIGludCBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KGludCBjbWQsIHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKyAJdW5zaWduZWQgY2hhciBidWZbc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcildOworIAlpbnQgcmV0LCBsZW47CisgCWludCBmYW1pbHkgPSBjb25ubWFuX2luZXRfY2hlY2tfaXBhZGRyZXNzKGdhdGV3YXkpOworKwljaGFyICpkc3QgPSBOVUxMOworKworKwlEQkcoImdhdGV3YXkgJXMvJXUgdGFibGUgJXUiLCBnYXRld2F5LCBwcmVmaXhsZW4sIHRhYmxlX2lkKTsKKyAKKyAJc3dpdGNoIChmYW1pbHkpIHsKKyAJY2FzZSBBRl9JTkVUOgorQEAgLTI4MTQsNyArMjgxNywxOSBAQCBzdGF0aWMgaW50IGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoaW50IGNtZCwgdWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorIAkJcmV0dXJuIC1FSU5WQUw7CisgCX0KKyAKKy0JcmV0ID0gaW5ldF9wdG9uKGZhbWlseSwgZ2F0ZXdheSwgYnVmKTsKKysJaWYgKHByZWZpeGxlbikgeworKwkJc3RydWN0IGluX2FkZHIgaXB2NF9zdWJuZXRfYWRkciwgaXB2NF9tYXNrOworKworKwkJbWVtc2V0KCZpcHY0X3N1Ym5ldF9hZGRyLCAwLCBzaXplb2YoaXB2NF9zdWJuZXRfYWRkcikpOworKwkJaXB2NF9tYXNrLnNfYWRkciA9IGh0b25sKCgweGZmZmZmZmZmIDw8ICgzMiAtIHByZWZpeGxlbikpICYgMHhmZmZmZmZmZik7CisrCQlpcHY0X3N1Ym5ldF9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihnYXRld2F5KTsKKysJCWlwdjRfc3VibmV0X2FkZHIuc19hZGRyICY9IGlwdjRfbWFzay5zX2FkZHI7CisrCisrCQlkc3QgPSBnX3N0cmR1cChpbmV0X250b2EoaXB2NF9zdWJuZXRfYWRkcikpOworKwl9CisrCisrCXJldCA9IGluZXRfcHRvbihmYW1pbHksIGRzdCA/IGRzdCA6IGdhdGV3YXksIGJ1Zik7CisrCWdfZnJlZShkc3QpOworIAlpZiAocmV0IDw9IDApCisgCQlyZXR1cm4gLUVJTlZBTDsKKyAKK0BAIC0yODMxLDggKzI4NDYsOSBAQCBzdGF0aWMgaW50IGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoaW50IGNtZCwgdWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorIAlydGgucmVxLnUuci5ydC5ydG1fdHlwZSA9IFJUTl9VTklDQVNUOworIAlydGgucmVxLnUuci5ydC5ydG1fZHN0X2xlbiA9IHByZWZpeGxlbjsKKyAKKy0JX19jb25ubWFuX2luZXRfcnRubF9hZGRhdHRyX2woJnJ0aC5yZXEubiwgc2l6ZW9mKHJ0aC5yZXEpLCBSVEFfR0FURVdBWSwKKy0JCQkJCQkJCWJ1ZiwgbGVuKTsKKysJX19jb25ubWFuX2luZXRfcnRubF9hZGRhdHRyX2woJnJ0aC5yZXEubiwgc2l6ZW9mKHJ0aC5yZXEpLAorKwkJcHJlZml4bGVuID4gMCA/IFJUQV9EU1QgOiBSVEFfR0FURVdBWSwgYnVmLCBsZW4pOworKworIAlpZiAodGFibGVfaWQgPCAyNTYpIHsKKyAJCXJ0aC5yZXEudS5yLnJ0LnJ0bV90YWJsZSA9IHRhYmxlX2lkOworIAl9IGVsc2UgeworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMy1pbmV0LUltcGxlbWVudC1BUElzLWZvci1jcmVhdGluZy1hbmQtZGVsZXRpbmctc3VibmV0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDMtaW5ldC1JbXBsZW1lbnQtQVBJcy1mb3ItY3JlYXRpbmctYW5kLWRlbGV0aW5nLXN1Ym5ldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmJhNWMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDMtaW5ldC1JbXBsZW1lbnQtQVBJcy1mb3ItY3JlYXRpbmctYW5kLWRlbGV0aW5nLXN1Ym5ldC5wYXRjaApAQCAtMCwwICsxLDY4IEBACitGcm9tIGE5MjQzZjEzZDZlMWFhZGQ2OWJmY2MyN2Y3NWY2OWMzOGJlNTE2NzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CitEYXRlOiBXZWQsIDQgT2N0IDIwMTcgMTc6MzA6MTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGluZXQ6IEltcGxlbWVudCBBUElzIGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgc3VibmV0Cisgcm91dGUKK1RvOiBjb25ubWFuQGxpc3RzLjAxLm9yZworQ2M6IHdhZ2lAbW9ub20ub3JnCisKK1NpZ25lZC1vZmYtYnk6IEppYW4gTGlhbmcgPGppYW5saWFuZ0B0eWNvaW50LmNvbT4KKworLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbmV0d29yay9jb25ubWFuL2Nvbm5tYW4uZ2l0L2NvbW1pdC8/aWQ9M2ExNWIwYjdmY2NkMDUzYWZmOTFkYTJjYzY4NTg1NTA5ZDBjNTA5Yl0KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhbmRyZS5kcmFzemlrQGpjaS5jb20+Cisgc3JjL2Nvbm5tYW4uaCB8ICA0ICsrKysKKyBzcmMvaW5ldC5jICAgIHwgMTQgKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9jb25ubWFuLmggYi9zcmMvY29ubm1hbi5oCitpbmRleCAyMWI3MDgwLi5kYTQ0NDZhIDEwMDY0NAorLS0tIGEvc3JjL2Nvbm5tYW4uaAorKysrIGIvc3JjL2Nvbm5tYW4uaAorQEAgLTI0MCw3ICsyNDAsMTEgQEAgaW50IF9fY29ubm1hbl9pbmV0X3J0bmxfYWRkYXR0cjMyKHN0cnVjdCBubG1zZ2hkciAqbiwgc2l6ZV90IG1heGxlbiwKKyBpbnQgX19jb25ubWFuX2luZXRfYWRkX2Z3bWFya19ydWxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgZmFtaWx5LCB1aW50MzJfdCBmd21hcmspOworIGludCBfX2Nvbm5tYW5faW5ldF9kZWxfZndtYXJrX3J1bGUodWludDMyX3QgdGFibGVfaWQsIGludCBmYW1pbHksIHVpbnQzMl90IGZ3bWFyayk7CisgaW50IF9fY29ubm1hbl9pbmV0X2FkZF9kZWZhdWx0X3RvX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwgY29uc3QgY2hhciAqZ2F0ZXdheSk7CisraW50IF9fY29ubm1hbl9pbmV0X2FkZF9zdWJuZXRfdG9fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorKwkJCWNvbnN0IGNoYXIgKmdhdGV3YXksIHVuc2lnbmVkIGNoYXIgcHJlZml4bGVuKTsKKyBpbnQgX19jb25ubWFuX2luZXRfZGVsX2RlZmF1bHRfZnJvbV90YWJsZSh1aW50MzJfdCB0YWJsZV9pZCwgaW50IGlmaW5kZXgsIGNvbnN0IGNoYXIgKmdhdGV3YXkpOworK2ludCBfX2Nvbm5tYW5faW5ldF9kZWxfc3VibmV0X2Zyb21fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorKwkJCWNvbnN0IGNoYXIgKmdhdGV3YXksIHVuc2lnbmVkIGNoYXIgcHJlZml4bGVuKTsKKyBpbnQgX19jb25ubWFuX2luZXRfZ2V0X2FkZHJlc3NfbmV0bWFzayhpbnQgaWZpbmRleCwKKyAJCXN0cnVjdCBzb2NrYWRkcl9pbiAqYWRkcmVzcywgc3RydWN0IHNvY2thZGRyX2luICpuZXRtYXNrKTsKKyAKK2RpZmYgLS1naXQgYS9zcmMvaW5ldC5jIGIvc3JjL2luZXQuYworaW5kZXggMGRkYjAzMC4uZGNkMWFiMiAxMDA2NDQKKy0tLSBhL3NyYy9pbmV0LmMKKysrKyBiL3NyYy9pbmV0LmMKK0BAIC0yODgwLDYgKzI4ODAsMTMgQEAgaW50IF9fY29ubm1hbl9pbmV0X2FkZF9kZWZhdWx0X3RvX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKyAJcmV0dXJuIGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoUlRNX05FV1JPVVRFLCB0YWJsZV9pZCwgaWZpbmRleCwgZ2F0ZXdheSwgMCk7CisgfQorIAorK2ludCBfX2Nvbm5tYW5faW5ldF9hZGRfc3VibmV0X3RvX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKysJCQkJCQljb25zdCBjaGFyICpnYXRld2F5LCB1bnNpZ25lZCBjaGFyIHByZWZpeGxlbikKKyt7CisrCS8qIGlwIHJvdXRlIGFkZCAxLjIuMy40LzI0IGRldiBldGgwIHRhYmxlIDEyMzQgKi8KKysJcmV0dXJuIGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoUlRNX05FV1JPVVRFLCB0YWJsZV9pZCwgaWZpbmRleCwgZ2F0ZXdheSwgcHJlZml4bGVuKTsKKyt9CisrCisgaW50IF9fY29ubm1hbl9pbmV0X2RlbF9kZWZhdWx0X2Zyb21fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorIAkJCQkJCWNvbnN0IGNoYXIgKmdhdGV3YXkpCisgeworQEAgLTI4ODgsNiArMjg5NSwxMyBAQCBpbnQgX19jb25ubWFuX2luZXRfZGVsX2RlZmF1bHRfZnJvbV90YWJsZSh1aW50MzJfdCB0YWJsZV9pZCwgaW50IGlmaW5kZXgsCisgCXJldHVybiBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KFJUTV9ERUxST1VURSwgdGFibGVfaWQsIGlmaW5kZXgsIGdhdGV3YXksIDApOworIH0KKyAKKytpbnQgX19jb25ubWFuX2luZXRfZGVsX3N1Ym5ldF9mcm9tX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKysJCQkJCQljb25zdCBjaGFyICpnYXRld2F5LCB1bnNpZ25lZCBjaGFyIHByZWZpeGxlbikKKyt7CisrCS8qIGlwIHJvdXRlIGRlbCAxLjIuMy40LzI0IGRldiBldGgwIHRhYmxlIDEyMzQgKi8KKysJcmV0dXJuIGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoUlRNX0RFTFJPVVRFLCB0YWJsZV9pZCwgaWZpbmRleCwgZ2F0ZXdheSwgcHJlZml4bGVuKTsKKyt9CisrCisgaW50IF9fY29ubm1hbl9pbmV0X2dldF9pbnRlcmZhY2VfbGxfYWRkcmVzcyhpbnQgaW5kZXgsIGludCBmYW1pbHksCisgCQkJCQkJCQl2b2lkICphZGRyZXNzKQorIHsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDQtc2Vzc2lvbi1Vc2Utc3VibmV0LXJvdXRlLWNyZWF0aW9uLWFuZC1kZWxldGlvbi1BUElzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDQtc2Vzc2lvbi1Vc2Utc3VibmV0LXJvdXRlLWNyZWF0aW9uLWFuZC1kZWxldGlvbi1BUElzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMjEzZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwNC1zZXNzaW9uLVVzZS1zdWJuZXQtcm91dGUtY3JlYXRpb24tYW5kLWRlbGV0aW9uLUFQSXMucGF0Y2gKQEAgLTAsMCArMSw3NyBAQAorRnJvbSBkZWI5MzcyZGI4Mzk2ZGE0ZjdjZDIwNTU1Y2U3YzlhOGIzYWQ5NmJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmlhbiBMaWFuZyA8amlhbmxpYW5nQHR5Y29pbnQuY29tPgorRGF0ZTogRnJpLCA2IE9jdCAyMDE3IDExOjQwOjE2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBzZXNzaW9uOiBVc2Ugc3VibmV0IHJvdXRlIGNyZWF0aW9uIGFuZCBkZWxldGlvbiBBUElzCitUbzogY29ubm1hbkBsaXN0cy4wMS5vcmcKK0NjOiB3YWdpQG1vbm9tLm9yZworCitBcyBzdWJuZXQgcm91dGUgaXMgYWRkcmVzcyBhbmQgc2Vzc2lvbiBzcGVjaWZpYyBpbiB0aGlzIGNhc2UsIHNvIGFkZAorcHJlZml4bGVuIGludG8gc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiwgYW5kIHVwZGF0ZSBpdCBhbG9uZyB3aXRoIGlwY29uZmlnLgorVGhlbiB1c2UgaXQgaW4gc3VibmV0IHJvdXRlIHJlbGF0ZWQgQVBJcy4KKworU2lnbmVkLW9mZi1ieTogSmlhbiBMaWFuZyA8amlhbmxpYW5nQHR5Y29pbnQuY29tPgorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL2Nvbm5tYW4vY29ubm1hbi5naXQvY29tbWl0Lz9pZD0yODVmMjVlZjZjYzllNGE0M2RhYjgzNTIzZjNlMmVhYjQzNjVhYzI2XQorU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KKyBzcmMvc2Vzc2lvbi5jIHwgMjAgKysrKysrKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9zZXNzaW9uLmMgYi9zcmMvc2Vzc2lvbi5jCitpbmRleCA5NjVhYzA2Li43YjdhMTRiIDEwMDY0NAorLS0tIGEvc3JjL3Nlc3Npb24uYworKysrIGIvc3JjL3Nlc3Npb24uYworQEAgLTY3LDYgKzY3LDcgQEAgc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiB7CisgCWludCBpbmRleDsKKyAJY2hhciAqYWRkcjsKKyAJY2hhciAqZ2F0ZXdheTsKKysJdW5zaWduZWQgY2hhciBwcmVmaXhsZW47CisgCWJvb2wgcG9saWN5X3JvdXRpbmc7CisgCWJvb2wgc25hdF9lbmFibGVkOworIH07CitAQCAtMzU3LDEzICszNTgsMTcgQEAgc3RhdGljIHZvaWQgZGVsX2RlZmF1bHRfcm91dGUoc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiAqc2Vzc2lvbikKKyAJaWYgKCFzZXNzaW9uLT5nYXRld2F5KQorIAkJcmV0dXJuOworIAorLQlEQkcoImluZGV4ICVkIHJvdXRpbmcgdGFibGUgJWQgZGVmYXVsdCBnYXRld2F5ICVzIiwKKy0JCXNlc3Npb24tPmluZGV4LCBzZXNzaW9uLT5tYXJrLCBzZXNzaW9uLT5nYXRld2F5KTsKKysJREJHKCJpbmRleCAlZCByb3V0aW5nIHRhYmxlICVkIGRlZmF1bHQgZ2F0ZXdheSAlcy8ldSIsCisrCQlzZXNzaW9uLT5pbmRleCwgc2Vzc2lvbi0+bWFyaywgc2Vzc2lvbi0+Z2F0ZXdheSwgc2Vzc2lvbi0+cHJlZml4bGVuKTsKKysKKysJCV9fY29ubm1hbl9pbmV0X2RlbF9zdWJuZXRfZnJvbV90YWJsZShzZXNzaW9uLT5tYXJrLAorKwkJCXNlc3Npb24tPmluZGV4LCBzZXNzaW9uLT5nYXRld2F5LCBzZXNzaW9uLT5wcmVmaXhsZW4pOworIAorIAlfX2Nvbm5tYW5faW5ldF9kZWxfZGVmYXVsdF9mcm9tX3RhYmxlKHNlc3Npb24tPm1hcmssCisgCQkJCQlzZXNzaW9uLT5pbmRleCwgc2Vzc2lvbi0+Z2F0ZXdheSk7CisgCWdfZnJlZShzZXNzaW9uLT5nYXRld2F5KTsKKyAJc2Vzc2lvbi0+Z2F0ZXdheSA9IE5VTEw7CisrCXNlc3Npb24tPnByZWZpeGxlbiA9IDA7CisgCXNlc3Npb24tPmluZGV4ID0gLTE7CisgfQorIAorQEAgLTM4MywxMyArMzg4LDIwIEBAIHN0YXRpYyB2b2lkIGFkZF9kZWZhdWx0X3JvdXRlKHN0cnVjdCBjb25ubWFuX3Nlc3Npb24gKnNlc3Npb24pCisgCWlmICghc2Vzc2lvbi0+Z2F0ZXdheSkKKyAJCXNlc3Npb24tPmdhdGV3YXkgPSBnX3N0cmR1cChpbmV0X250b2EoYWRkcikpOworIAorLQlEQkcoImluZGV4ICVkIHJvdXRpbmcgdGFibGUgJWQgZGVmYXVsdCBnYXRld2F5ICVzIiwKKy0JCXNlc3Npb24tPmluZGV4LCBzZXNzaW9uLT5tYXJrLCBzZXNzaW9uLT5nYXRld2F5KTsKKysJc2Vzc2lvbi0+cHJlZml4bGVuID0gX19jb25ubWFuX2lwY29uZmlnX2dldF9wcmVmaXhsZW4oaXBjb25maWcpOworKworKwlEQkcoImluZGV4ICVkIHJvdXRpbmcgdGFibGUgJWQgZGVmYXVsdCBnYXRld2F5ICVzLyV1IiwKKysJCXNlc3Npb24tPmluZGV4LCBzZXNzaW9uLT5tYXJrLCBzZXNzaW9uLT5nYXRld2F5LCBzZXNzaW9uLT5wcmVmaXhsZW4pOworIAorIAllcnIgPSBfX2Nvbm5tYW5faW5ldF9hZGRfZGVmYXVsdF90b190YWJsZShzZXNzaW9uLT5tYXJrLAorIAkJCQkJc2Vzc2lvbi0+aW5kZXgsIHNlc3Npb24tPmdhdGV3YXkpOworIAlpZiAoZXJyIDwgMCkKKyAJCURCRygic2Vzc2lvbiAlcCAlcyIsIHNlc3Npb24sIHN0cmVycm9yKC1lcnIpKTsKKysKKysJZXJyID0gX19jb25ubWFuX2luZXRfYWRkX3N1Ym5ldF90b190YWJsZShzZXNzaW9uLT5tYXJrLAorKwkJCQkJc2Vzc2lvbi0+aW5kZXgsIHNlc3Npb24tPmdhdGV3YXksIHNlc3Npb24tPnByZWZpeGxlbik7CisrCWlmIChlcnIgPCAwKQorKwkJREJHKCJzZXNzaW9uIGFkZCBzdWJuZXQgcm91dGUgJXAgJXMiLCBzZXNzaW9uLCBzdHJlcnJvcigtZXJyKSk7CisgfQorIAorIHN0YXRpYyB2b2lkIGRlbF9uYXRfcnVsZXMoc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiAqc2Vzc2lvbikKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuL0NWRS0yMDE3LTEyODY1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuL0NWRS0yMDE3LTEyODY1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWY3OGYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi9DVkUtMjAxNy0xMjg2NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLUZyb20gNWMyODFkMTgyZWNkZDBhNDI0YjY0Zjc2OThmMzI0NjdmOGY2N2I3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1a2thIFJpc3NhbmVuIDxqdWtrYS5yaXNzYW5lbkBsaW51eC5pbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDkgQXVnIDIwMTcgMTA6MTY6NDYgKzAzMDAKLVN1YmplY3Q6IGRuc3Byb3h5OiBGaXggY3Jhc2ggb24gbWFsZm9ybWVkIEROUyByZXNwb25zZQotCi1JZiB0aGUgcmVzcG9uc2UgcXVlcnkgc3RyaW5nIGlzIG1hbGZvcm1lZCwgd2UgbWlnaHQgYWNjZXNzIG1lbW9yeQotcGFzcyB0aGUgZW5kIG9mICJuYW1lIiB2YXJpYWJsZSBpbiBwYXJzZV9yZXNwb25zZSgpLgotCi1DVkU6IENWRS0yMDE3LTEyODY1Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbmV0d29yay9jb25ubWFuL2Nvbm5tYW4uZ2l0L3BhdGNoLz9pZD01YzI4MWQxODJlY2RkMGE0MjRiNjRmNzY5OGYzMjQ2N2Y4ZjY3YjcxXQotCi1TaWduZWQtb2ZmLWJ5OiBTb25hIFNhcm1hZGkgPHNvbmEuc2FybWFkaUBlbmVhLmNvbT4KLS0tLQotIHNyYy9kbnNwcm94eS5jIHwgMTYgKysrKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Ruc3Byb3h5LmMgYi9zcmMvZG5zcHJveHkuYwotaW5kZXggMzhhYzViZi4uNDBiNGYxNSAxMDA2NDQKLS0tLSBhL3NyYy9kbnNwcm94eS5jCi0rKysgYi9zcmMvZG5zcHJveHkuYwotQEAgLTgzOCw3ICs4MzgsNyBAQCBzdGF0aWMgc3RydWN0IGNhY2hlX2VudHJ5ICpjYWNoZV9jaGVjayhncG9pbnRlciByZXF1ZXN0LCBpbnQgKnF0eXBlLCBpbnQgcHJvdG8pCi0gc3RhdGljIGludCBnZXRfbmFtZShpbnQgY291bnRlciwKLSAJCXVuc2lnbmVkIGNoYXIgKnBrdCwgdW5zaWduZWQgY2hhciAqc3RhcnQsIHVuc2lnbmVkIGNoYXIgKm1heCwKLSAJCXVuc2lnbmVkIGNoYXIgKm91dHB1dCwgaW50IG91dHB1dF9tYXgsIGludCAqb3V0cHV0X2xlbiwKLS0JCXVuc2lnbmVkIGNoYXIgKiplbmQsIGNoYXIgKm5hbWUsIGludCAqbmFtZV9sZW4pCi0rCQl1bnNpZ25lZCBjaGFyICoqZW5kLCBjaGFyICpuYW1lLCBzaXplX3QgbWF4X25hbWUsIGludCAqbmFtZV9sZW4pCi0gewotIAl1bnNpZ25lZCBjaGFyICpwOwotIAotQEAgLTg1OSw3ICs4NTksNyBAQCBzdGF0aWMgaW50IGdldF9uYW1lKGludCBjb3VudGVyLAotIAotIAkJCXJldHVybiBnZXRfbmFtZShjb3VudGVyICsgMSwgcGt0LCBwa3QgKyBvZmZzZXQsIG1heCwKLSAJCQkJCW91dHB1dCwgb3V0cHV0X21heCwgb3V0cHV0X2xlbiwgZW5kLAotLQkJCQkJbmFtZSwgbmFtZV9sZW4pOwotKwkJCQkJbmFtZSwgbWF4X25hbWUsIG5hbWVfbGVuKTsKLSAJCX0gZWxzZSB7Ci0gCQkJdW5zaWduZWQgbGFiZWxfbGVuID0gKnA7Ci0gCi1AQCAtODY5LDYgKzg2OSw5IEBAIHN0YXRpYyBpbnQgZ2V0X25hbWUoaW50IGNvdW50ZXIsCi0gCQkJaWYgKCpvdXRwdXRfbGVuID4gb3V0cHV0X21heCkKLSAJCQkJcmV0dXJuIC1FTk9CVUZTOwotIAotKwkJCWlmICgoKm5hbWVfbGVuICsgMSArIGxhYmVsX2xlbiArIDEpID4gbWF4X25hbWUpCi0rCQkJCXJldHVybiAtRU5PQlVGUzsKLSsKLSAJCQkvKgotIAkJCSAqIFdlIG5lZWQgdGhlIG9yaWdpbmFsIG5hbWUgaW4gb3JkZXIgdG8gY2hlY2sKLSAJCQkgKiBpZiB0aGlzIGFuc3dlciBpcyB0aGUgY29ycmVjdCBvbmUuCi1AQCAtOTAwLDE0ICs5MDMsMTQgQEAgc3RhdGljIGludCBwYXJzZV9ycih1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGNoYXIgKnN0YXJ0LAotIAkJCXVuc2lnbmVkIGNoYXIgKnJlc3BvbnNlLCB1bnNpZ25lZCBpbnQgKnJlc3BvbnNlX3NpemUsCi0gCQkJdWludDE2X3QgKnR5cGUsIHVpbnQxNl90ICpjbGFzcywgaW50ICp0dGwsIGludCAqcmRsZW4sCi0gCQkJdW5zaWduZWQgY2hhciAqKmVuZCwKLS0JCQljaGFyICpuYW1lKQotKwkJCWNoYXIgKm5hbWUsIHNpemVfdCBtYXhfbmFtZSkKLSB7Ci0gCXN0cnVjdCBkb21haW5fcnIgKnJyOwotIAlpbnQgZXJyLCBvZmZzZXQ7Ci0gCWludCBuYW1lX2xlbiA9IDAsIG91dHB1dF9sZW4gPSAwLCBtYXhfcnNwID0gKnJlc3BvbnNlX3NpemU7Ci0gCi0gCWVyciA9IGdldF9uYW1lKDAsIGJ1Ziwgc3RhcnQsIG1heCwgcmVzcG9uc2UsIG1heF9yc3AsCi0tCQkmb3V0cHV0X2xlbiwgZW5kLCBuYW1lLCAmbmFtZV9sZW4pOwotKwkJCSZvdXRwdXRfbGVuLCBlbmQsIG5hbWUsIG1heF9uYW1lLCAmbmFtZV9sZW4pOwotIAlpZiAoZXJyIDwgMCkKLSAJCXJldHVybiBlcnI7Ci0gCi1AQCAtMTAzMyw3ICsxMDM2LDggQEAgc3RhdGljIGludCBwYXJzZV9yZXNwb25zZSh1bnNpZ25lZCBjaGFyICpidWYsIGludCBidWZsZW4sCi0gCQltZW1zZXQocnNwLCAwLCBzaXplb2YocnNwKSk7Ci0gCi0gCQlyZXQgPSBwYXJzZV9ycihidWYsIHB0ciwgYnVmICsgYnVmbGVuLCByc3AsICZyc3BfbGVuLAotLQkJCXR5cGUsIGNsYXNzLCB0dGwsICZyZGxlbiwgJm5leHQsIG5hbWUpOwotKwkJCXR5cGUsIGNsYXNzLCB0dGwsICZyZGxlbiwgJm5leHQsIG5hbWUsCi0rCQkJc2l6ZW9mKG5hbWUpIC0gMSk7Ci0gCQlpZiAocmV0ICE9IDApIHsKLSAJCQllcnIgPSByZXQ7Ci0gCQkJZ290byBvdXQ7Ci1AQCAtMTA5OSw3ICsxMTAzLDcgQEAgc3RhdGljIGludCBwYXJzZV9yZXNwb25zZSh1bnNpZ25lZCBjaGFyICpidWYsIGludCBidWZsZW4sCi0gCQkJICovCi0gCQkJcmV0ID0gZ2V0X25hbWUoMCwgYnVmLCBuZXh0IC0gcmRsZW4sIGJ1ZiArIGJ1ZmxlbiwKLSAJCQkJCXJzcCwgcnNwX2xlbiwgJm91dHB1dF9sZW4sICZlbmQsCi0tCQkJCQluYW1lLCAmbmFtZV9sZW4pOwotKwkJCQkJbmFtZSwgc2l6ZW9mKG5hbWUpIC0gMSwgJm5hbWVfbGVuKTsKLSAJCQlpZiAocmV0ICE9IDApIHsKLSAJCQkJLyoganVzdCBpZ25vcmUgdGhlIGVycm9yIGF0IHRoaXMgcG9pbnQgKi8KLSAJCQkJcHRyID0gbmV4dDsKLS0tIAotY2dpdCB2MS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjM0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMmM2ODguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIGNvbm5tYW4uaW5jCi0KLVNSQ19VUkkgID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBsdWdpbi5oLUNoYW5nZS12aXNpYmlsaXR5LXRvLWRlZmF1bHQtZm9yLWRlYnVnLXN5bWIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtZmlyZXdhbGwtbmZ0YWJsZXMtZml4LWJ1aWxkLXdpdGgtbGlibmZ0bmwtMS4wLjcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtY29ubm1hbi5zZXJ2aWNlLXN0b3Atc3lzdGVtZC1yZXNvbHZlZC13aGVuLXdlLXVzZS1jby5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29ubm1hbiBcCi0gICAgICAgICAgICBmaWxlOi8vbm8tdmVyc2lvbi1zY3JpcHRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTI4NjUucGF0Y2ggXAotICAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMi1yZXNvbHZlLW11c2wtZG9lcy1ub3QtaW1wbGVtZW50LXJlc19uaW5pdC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImUyMDAwMjg3MDJjODMxZDVmNTM1ZDIwZDYxZTYwOGVmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5YTA4MDhjNzI5YzFmMzQ4ZmMzNmQ4Y2VjYjUyZDE5YjcyYmMzNGNiNDExYzUwMjYwOGNiMGUwMTkwZmM3MWUiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImNvbm5tYW4tY29uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjM1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyMTE4MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjM1LmJiCkBAIC0wLDAgKzEsMjIgQEAKK3JlcXVpcmUgY29ubm1hbi5pbmMKKworU1JDX1VSSSAgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9uZXR3b3JrLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtcGx1Z2luLmgtQ2hhbmdlLXZpc2liaWxpdHktdG8tZGVmYXVsdC1mb3ItZGVidWctc3ltYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25ubWFuLnNlcnZpY2Utc3RvcC1zeXN0ZW1kLXJlc29sdmVkLXdoZW4td2UtdXNlLWNvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25ubWFuIFwKKyAgICAgICAgICAgIGZpbGU6Ly9uby12ZXJzaW9uLXNjcmlwdHMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2luY2x1ZGVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNlc3Npb24tS2VlcC10cmFjay1vZi1hZGRyLWluLWZ3X3NuYXQtc2Vzc2lvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1naW9nbnV0bHMtRml4LWEtY3Jhc2gtdXNpbmctd2lzcHItb3Zlci1UTFMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtaW5ldC1BZGQtcHJlZml4bGVuLXRvLWlwcm91dGVfZGVmYXVsdF9mdW5jdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1pbmV0LUltcGxlbWVudC1zdWJuZXQtcm91dGUtY3JlYXRpb24tZGVsZXRpb24taW4taXByLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWluZXQtSW1wbGVtZW50LUFQSXMtZm9yLWNyZWF0aW5nLWFuZC1kZWxldGluZy1zdWJuZXQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtc2Vzc2lvbi1Vc2Utc3VibmV0LXJvdXRlLWNyZWF0aW9uLWFuZC1kZWxldGlvbi1BUElzLnBhdGNoIFwKKyAgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDItcmVzb2x2ZS1tdXNsLWRvZXMtbm90LWltcGxlbWVudC1yZXNfbmluaXQucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYWUzN2I0NWVlOWIzZGI1ZWM4MTE1MTg4ZjhhNzY1MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NmQ3ZGViOTgzNzE1NDVjNmU0MTcyMzlhOWIzYjNlMzIwMWMxNTI5ZDA4ZWVkZjQwYWZiYzg1OTg0MmNmMmFhIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJjb25ubWFuLWNvbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaAppbmRleCA2NDU5ZGMwLi4xMDFjMzNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAyLWRoY2xpZW50LWRidXMucGF0Y2gKQEAgLTMsNyArMyw3IEBACiBEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE0OjU2OjU2ICswODAwCiBTdWJqZWN0OiBbUEFUQ0ggMDIvMTFdIGRoY2xpZW50IGRidXMKIAotdXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb25dCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc3RyaWJ1dGlvbl0KIAogUmViYXNlIHRvIDQuMy42CiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvQ1ZFLTIwMTctMzE0NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9DVkUtMjAxNy0zMTQ0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMjY4OGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvQ1ZFLTIwMTctMzE0NC5wYXRjaApAQCAtMCwwICsxLDc0IEBACitGcm9tIDhjZmRlZGVlMzY5YzI2ZDI4NjliNmVjNGE2NDQ2MGI1ZjVhMzA5MzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaG9tYXMgTWFya3dhbGRlciA8dG1hcmtAaXNjLm9yZz4KK0RhdGU6IFRodSwgNyBEZWMgMjAxNyAxMTozOTozMCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBbdjRfM10gUGx1Z3MgYSBzb2NrZXQgZGVzY3JpcHRvciBsZWFrIGluIE9NQVBJCisKKyAgICAgICAgTWVyZ2VzIGluIHJ0NDY3NjcuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL3NvdXJjZS5pc2Mub3JnL2NnaS1iaW4vZ2l0d2ViLmNnaT9wPWRoY3AuZ2l0O2E9Y29tbWl0ZGlmZjtoPTUwOTdiYzA1NTlmNTkyNjgzZmFhYzFmNjdiZjM1MGUxYmRkZjZlZDRdCisKK0NWRTogQ1ZFLTIwMTctMzE0NAorCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgUkVMTk9URVMgICAgICAgICB8IDcgKysrKysrKworIG9tYXBpcC9idWZmZXIuYyAgfCA5ICsrKysrKysrKworIG9tYXBpcC9tZXNzYWdlLmMgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9SRUxOT1RFUyBiL1JFTE5PVEVTCitpbmRleCBkZDQwYWFmLi4zNzQxYjgwIDEwMDY0NAorLS0tIGEvUkVMTk9URVMKKysrKyBiL1JFTE5PVEVTCitAQCAtNjYsNiArNjYsMTMgQEAgV2Ugd2VsY29tZSBjb21tZW50cyBmcm9tIERIQ1AgdXNlcnMsIGFib3V0IHRoaXMgb3IgYW55dGhpbmcgZWxzZSB3ZSBkby4KKyBFbWFpbCBWaWNreSBSaXNrLCBQcm9kdWN0IE1hbmFnZXIgYXQgdmlja3lAaXNjLm9yZyBvciBkaXNjdXNzIG9uIAorIGRoY3AtdXNlcnNAbGlzdHMuaXNjLm9yZy4KKyAKKystIFBsdWdnZWQgYSBzb2NrZXQgZGVzY3JpcHRvciBsZWFrIGluIE9NQVBJLCB0aGF0IGNhbiBvY2N1ciB3aGVuIHRoZXJlIGlzCisrICBkYXRhIHBlbmRpbmcgdG8gYmUgd3JpdHRlbiB0byBhbiBPTUFQSSBjb25uZWN0aW9uLCB3aGVuIHRoZSBjb25uZWN0aW9uCisrICBpcyBjbG9zZWQgYnkgdGhlIHJlYWRlci4gIFRoYW5rcyB0byBQYXZlbCBaaHVrb3YgYXQgUmVkSGF0IGZvciBicmluZ2luZworKyAgdGhpcyBpc3N1ZSB0byBvdXIgYXR0ZW50aW9uIGFuZCB3aG9zZSBwYXRjaCBoZWxwZWQgZ3VpZGUgdXMgaW4gdGhlIHJpZ2h0CisrICBkaXJlY3Rpb24uCisrICBbSVNjLUJ1Z3MgIzQ2NzY3XQorKworIAkJCUNoYW5nZXMgc2luY2UgNC4zLjZiMQorIAorIC0gTm9uZQorZGlmZiAtLWdpdCBhL29tYXBpcC9idWZmZXIuYyBiL29tYXBpcC9idWZmZXIuYworaW5kZXggZjdmZGMzMi4uODA5MDM0ZCAxMDA2NDQKKy0tLSBhL29tYXBpcC9idWZmZXIuYworKysrIGIvb21hcGlwL2J1ZmZlci5jCitAQCAtNTY2LDYgKzU2NiwxNSBAQCBpc2NfcmVzdWx0X3Qgb21hcGlfY29ubmVjdGlvbl93cml0ZXIgKG9tYXBpX29iamVjdF90ICpoKQorIAkJCW9tYXBpX2J1ZmZlcl9kZXJlZmVyZW5jZSAoJmJ1ZmZlciwgTURMKTsKKyAJCX0KKyAJfQorKworKwkvKiBJZiB3ZSBoYWQgZGF0YSBsZWZ0IHRvIHdyaXRlIHdoZW4gd2UncmUgdG9sZCB0byBkaXNjb25uZWN0LAorKwkqIHdlIG5lZWQgcmVjYWxsIGRpc2Nvbm5lY3QsIG5vdyB0aGF0IHdlJ3JlIGRvbmUgd3JpdGluZy4KKysJKiBTZWUgcnQ0Njc2Ny4gKi8KKysJaWYgKGMtPm91dF9ieXRlcyA9PSAwICYmIGMtPnN0YXRlID09IG9tYXBpX2Nvbm5lY3Rpb25fZGlzY29ubmVjdGluZykgeworKwkJb21hcGlfZGlzY29ubmVjdCAoaCwgMSk7CisrCQlyZXR1cm4gSVNDX1JfU0hVVFRJTkdET1dOOworKwl9CisrCisgCXJldHVybiBJU0NfUl9TVUNDRVNTOworIH0KKyAKK2RpZmYgLS1naXQgYS9vbWFwaXAvbWVzc2FnZS5jIGIvb21hcGlwL21lc3NhZ2UuYworaW5kZXggNTljY2RjMi4uMjFiY2ZjMyAxMDA2NDQKKy0tLSBhL29tYXBpcC9tZXNzYWdlLmMKKysrKyBiL29tYXBpcC9tZXNzYWdlLmMKK0BAIC0zMzksNyArMzM5LDcgQEAgaXNjX3Jlc3VsdF90IG9tYXBpX21lc3NhZ2VfdW5yZWdpc3RlciAob21hcGlfb2JqZWN0X3QgKm1vKQorIH0KKyAKKyAjaWZkZWYgREVCVUdfUFJPVE9DT0wKKy1zdGF0aWMgY29uc3QgY2hhciAqb21hcGlfbWVzc2FnZV9vcF9uYW1lKGludCBvcCkgeworK2NvbnN0IGNoYXIgKm9tYXBpX21lc3NhZ2Vfb3BfbmFtZShpbnQgb3ApIHsKKyAJc3dpdGNoIChvcCkgeworIAljYXNlIE9NQVBJX09QX09QRU46ICAgIHJldHVybiAiT01BUElfT1BfT1BFTiI7CisgCWNhc2UgT01BUElfT1BfUkVGUkVTSDogcmV0dXJuICJPTUFQSV9PUF9SRUZSRVNIIjsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuMy42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuMy42LmJiCmluZGV4IDY2MTVhZTIuLmNjMTM1NDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjMuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjYuYmIKQEAgLTEyLDYgKzEyLDcgQEAKICAgICAgICAgICAgIGZpbGU6Ly8wMDEwLWJ1aWxkLXNoYXJlZC1saWJzLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDExLU1vdmVkLXRoZS1jYWxsLXRvLWlzY19hcHBfY3R4c3RhcnQtdG8tbm90LWdldC1zaWduYWwucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMzE0NC5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImFmYTZlOWIzZWI3NTM5ZWEwNDg0MjFhODJjNjY4YWRjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCmluZGV4IGE1NzhlYjMuLjRmYmZlYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKQEAgLTEzLDYgKzEzLDggQEAKIAogaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzIGJhc2gtY29tcGxldGlvbiBwa2djb25maWcKIAorQ0xFQU5CUk9LRU4gPSAiMSIKKwogUEFDS0FHRUNPTkZJRyA/Pz0gInRpcGMiCiBQQUNLQUdFQ09ORklHW3RpcGNdID0gIiwsbGlibW5sLCIKIApAQCAtMjEsNyArMjMsNyBAQAogZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CiAgICAgc2ggY29uZmlndXJlICR7U1RBR0lOR19JTkNESVJ9CiAgICAgIyBFeHBsaWNpdGx5IGRpc2FibGUgQVRNIHN1cHBvcnQKLSAgICBzZWQgLWkgLWUgJy9UQ19DT05GSUdfQVRNL2QnIENvbmZpZworICAgIHNlZCAtaSAtZSAnL1RDX0NPTkZJR19BVE0vZCcgY29uZmlnLm1rCiB9CiAKIGRvX2luc3RhbGwgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWV4cGxpY2l0bHktZm9yLVVJTlQxNl9NQVgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZXhwbGljaXRseS1mb3ItVUlOVDE2X01BWC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIwYzBhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZXhwbGljaXRseS1mb3ItVUlOVDE2X01BWC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gM2M4ODVkODdiZWZjNzA2YmI5MjM5MzNiOTgxOWRlNmZlMmRlODk3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDIwIE1heSAyMDE3IDE0OjAzOjE5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZXhwbGljaXRseSBmb3IgVUlOVDE2X01BWCkKLQotRml4ZXMKLXwgdGNfY29yZS5jOjE5MDoyOTogZXJyb3I6ICdVSU5UMTZfTUFYJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnX19JTlQxNl9NQVhfXyc/Ci18ICAgIGlmICgoc3ogPj4gcy0+c2l6ZV9sb2cpID4gVUlOVDE2X01BWCkgewotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSB0Yy90Y19jb3JlLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3RjL3RjX2NvcmUuYyBiL3RjL3RjX2NvcmUuYwotaW5kZXggN2JiZTBkNy4uODIxYjc0MSAxMDA2NDQKLS0tLSBhL3RjL3RjX2NvcmUuYwotKysrIGIvdGMvdGNfY29yZS5jCi1AQCAtMTIsNiArMTIsNyBAQAotIAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzeXNsb2cuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWlwLVJlbW92ZS11bm5lZWQtaGVhZGVyLnBhdGNoCmluZGV4IGE5ZjhkYjYuLmE5MDI3YzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gZjU4ZmM5OWM4OGE1NDEzNWU1NWE2ZTA5NTZjZThhZTcxMDc4ZDFjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDJlZDEwZmM1MjE1YzRhMzJlNjc0MGIwYTBjMjQzOTY1OWJlNjgwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEyIEp1biAyMDE3IDA0OjI5OjA3ICswMDAwCitEYXRlOiBNb24sIDEzIE5vdiAyMDE3IDE1OjU5OjM1ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIGlwOiBSZW1vdmUgdW5uZWVkIGhlYWRlcgogCiBGaXggcmVkZWZpbml0aW9uIG9mIHN0cnVjdCBldGhoZHIgd2l0aCBhIHN1aXRhYmx5IHBhdGNoZWQgbXVzbCBsaWJjCkBAIC04LDIzICs4LDIzIEBACiAKIFNpZ25lZC1vZmYtYnk6IENoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+CiAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtuZXRkZXZAdmdlci5rZXJuZWwub3JnXQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtuZXRkZXZAdmdlci5rZXJuZWwub3JnXQogLS0tCiAgaXAvaXBsaW5rX2JyaWRnZS5jIHwgMSAtCiAgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2lwL2lwbGlua19icmlkZ2UuYyBiL2lwL2lwbGlua19icmlkZ2UuYwotaW5kZXggODE4YjQzYy4uZjA2NWIyMiAxMDA2NDQKK2luZGV4IGNjY2RlYzEuLmYwNjViMjIgMTAwNjQ0CiAtLS0gYS9pcC9pcGxpbmtfYnJpZGdlLmMKICsrKyBiL2lwL2lwbGlua19icmlkZ2UuYwotQEAgLTE1LDcgKzE1LDYgQEAKK0BAIC0xMyw3ICsxMyw2IEBACisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorLSNpbmNsdWRlIDxuZXRpbmV0L2V0aGVyLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2lmX2xpbmsuaD4KICAjaW5jbHVkZSA8bGludXgvaWZfYnJpZGdlLmg+Ci0tI2luY2x1ZGUgPG5ldGluZXQvZXRoZXIuaD4KICAjaW5jbHVkZSA8bmV0L2lmLmg+Ci0gCi0gI2luY2x1ZGUgInJ0X25hbWVzLmgiCiAtLSAKIDIuNy40CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXByb3V0ZTItZGUtYmFzaC1zY3JpcHRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2gKaW5kZXggMzljN2Q0MC4uYzNkM2ZlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2gKQEAgLTUsMTQgKzUsMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0KIC0tLQotIGlwL2lmY2ZnIHwgICAxNSArKysrKysrKy0tLS0tLS0KLSBpcC9ydHByICB8ICAgIDIgKy0KKyBpcC9pZmNmZyB8IDE1ICsrKysrKysrLS0tLS0tLQorIGlwL3J0cHIgIHwgIDIgKy0KICAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2lwL2lmY2ZnIGIvaXAvaWZjZmcKLWluZGV4IDA4M2Q5ZGYuLjYwYmNmMWYgMTAwNjQ0CitpbmRleCAzMGEyZGM0Li44Njc3YjJlIDEwMDY0NAogLS0tIGEvaXAvaWZjZmcKICsrKyBiL2lwL2lmY2ZnCiBAQCAtMSwxMiArMSwxMyBAQApAQCAtNDMsNyArNDIsNyBAQAogLWlwIHJvdXRlIGFkZCB1bnJlYWNoYWJsZSAyNTUuMjU1LjI1NS4yNTUgPiYgL2Rldi9udWxsCiAraXAgcm91dGUgYWRkIHVucmVhY2hhYmxlIDIyNC4wLjAuMC8yNCA+IC9kZXYvbnVsbCAyPiYxCiAraXAgcm91dGUgYWRkIHVucmVhY2hhYmxlIDI1NS4yNTUuMjU1LjI1NSA+IC9kZXYvbnVsbCAyPiYxCi0gaWYgWyBgaXAgbGluayBscyAkZGV2IHwgZ3JlcCAtYyBNVUxUSUNBU1RgIC1nZSAxIF07IHRoZW4KKyBpZiBbICJgaXAgbGluayBscyAkZGV2IHwgZ3JlcCAtYyBNVUxUSUNBU1RgIiAtZ2UgMSBdOyB0aGVuCiAtICBpcCByb3V0ZSBhZGQgMjI0LjAuMC4wLzQgZGV2ICRkZXYgc2NvcGUgZ2xvYmFsID4mIC9kZXYvbnVsbAogKyAgaXAgcm91dGUgYWRkIDIyNC4wLjAuMC80IGRldiAkZGV2IHNjb3BlIGdsb2JhbCA+IC9kZXYvbnVsbCAyPiYxCiAgZmkKQEAgLTYwLDUgKzU5LDUgQEAKICBleGVjIHRyICJbXFxcXF0iICJbCiAgXSIKIC0tIAotMS43LjkuNQorMi43LjQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1saWJjLWNvbXBhdC5oLWFkZC1tdXNsLXdvcmthcm91bmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaAppbmRleCAzZDMyNGM5Li41MGM0YmZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaApAQCAtMTUsMTMgKzE1LDEzIEBACiBTaWduZWQtb2ZmLWJ5OiBCYXJ1Y2ggU2lhY2ggPGJhcnVjaEB0a29zLmNvLmlsPgogU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CiAtLS0KLSBpbmNsdWRlL2xpbnV4L2xpYmMtY29tcGF0LmggfCA0ICsrKy0KKyBpbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaCB8IDQgKysrLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbGliYy1jb21wYXQuaCBiL2luY2x1ZGUvbGludXgvbGliYy1jb21wYXQuaAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKIGluZGV4IGYzODU3MWQuLjMwZjBiNjcgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2xpbnV4L2xpYmMtY29tcGF0LmgKLSsrKyBiL2luY2x1ZGUvbGludXgvbGliYy1jb21wYXQuaAorLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKKysrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCiBAQCAtNDksMTAgKzQ5LDEyIEBACiAgI2RlZmluZSBfTElCQ19DT01QQVRfSAogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvY29uZmlndXJlLWNyb3NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvY29uZmlndXJlLWNyb3NzLnBhdGNoCmluZGV4IDg2NjYwOWMuLjhiNzVhMmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyL2NvbmZpZ3VyZS1jcm9zcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi9jb25maWd1cmUtY3Jvc3MucGF0Y2gKQEAgLTksMTkgKzksMTkgQEAKIFNpZ25lZC1vZmYtYnk6IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CiBTaWduZWQtb2ZmLWJ5OiBTaGFuZSBXYW5nIDxzaGFuZS53YW5nQGludGVsLmNvbT4KIAotSW5kZXg6IGlwcm91dGUyLTMuNy4wL2NvbmZpZ3VyZQorSW5kZXg6IGlwcm91dGUyLTQuMTQuMS9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcHJvdXRlMi0zLjcuMC5vcmlnL2NvbmZpZ3VyZQotKysrIGlwcm91dGUyLTMuNy4wL2NvbmZpZ3VyZQorLS0tIGlwcm91dGUyLTQuMTQuMS5vcmlnL2NvbmZpZ3VyZQorKysrIGlwcm91dGUyLTQuMTQuMS9jb25maWd1cmUKIEBAIC0yLDYgKzIsNyBAQAotICMgVGhpcyBpcyBub3QgYW4gYXV0Y29uZiBnZW5lcmF0ZWQgY29uZmlndXJlCisgIyBUaGlzIGlzIG5vdCBhbiBhdXRvY29uZiBnZW5lcmF0ZWQgY29uZmlndXJlCiAgIwogIElOQ0xVREU9JHsxOi0iJFBXRC9pbmNsdWRlIn0KICtTWVNST09UPSQxCiAgCi0gIyBNYWtlIGEgdGVtcCBkaXJlY3RvcnkgaW4gYnVpbGQgdHJlZS4KLSBUTVBESVI9JChta3RlbXAgLWQgY29uZmlnLlhYWFhYWCkKLUBAIC0xNTgsNyArMTU5LDcgQEAgY2hlY2tfaXB0X2xpYl9kaXIoKQorICMgT3V0cHV0IGZpbGUgd2hpY2ggaXMgaW5wdXQgdG8gTWFrZWZpbGUKKyBDT05GSUc9Y29uZmlnLm1rCitAQCAtMTk1LDcgKzE5Niw3IEBAIGNoZWNrX2lwdF9saWJfZGlyKCkKICAJCXJldHVybgogIAlmaQogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmQwNTQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLXJlcXVpcmUgaXByb3V0ZTIuaW5jCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZXQvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtY3Jvc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWFkZC1tdXNsLXdvcmthcm91bmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWV4cGxpY2l0bHktZm9yLVVJTlQxNl9NQVgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2E5NDk4ZGU4OGJjY2E5NWMzMDVkZjYxMDhhZTE5N2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzI2NzEwMjhiZGE2OTZkMGNiOGY0OGVjOGU3MDI1ODFjM2E1MDFjYWVlZDMzZWVjM2E4MWQ3MDQxY2JjODAyNiIKLQotIyBDRkxBR1MgYXJlIGNvbXB1dGVkIGluIE1ha2VmaWxlIGFuZCByZWZlcmVuY2UgQ0NPUFRTCi0jCi1FWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBDQ09QVFM9JyR7Q0ZMQUdTfSciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjE0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjE0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFlMmU0YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTQuMS5iYgpAQCAtMCwwICsxLDE1IEBACityZXF1aXJlIGlwcm91dGUyLmluYworCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmV0LyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWNyb3NzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaXByb3V0ZTItZGUtYmFzaC1zY3JpcHRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1hZGQtbXVzbC13b3JrYXJvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjEwNzU0MjNkNzAyOWUwMmE4ZjIzZWQ0ZjQyYjdlMzcyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0M2FjMDY4YWZjYzM1MGE0NDhmNDU4MWI2ZTI5MjMzMWVmN2U0ZTdhYTc0NmUzNDk4MTU4MmQ1ZmRiMTAwNjciCisKKyMgQ0ZMQUdTIGFyZSBjb21wdXRlZCBpbiBNYWtlZmlsZSBhbmQgcmVmZXJlbmNlIENDT1BUUworIworRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgQ0NPUFRTPScke0NGTEFHU30nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXJkYS11dGlscy9pcmRhLXV0aWxzLTAuOS4xOC9sZGZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXJkYS11dGlscy9pcmRhLXV0aWxzLTAuOS4xOC9sZGZsYWdzLnBhdGNoCmluZGV4IGU5NWZlMzUuLmIyNDZkZTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyZGEtdXRpbHMvaXJkYS11dGlscy0wLjkuMTgvbGRmbGFncy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcmRhLXV0aWxzL2lyZGEtdXRpbHMtMC45LjE4L2xkZmxhZ3MucGF0Y2gKQEAgLTMsNzIgKzMsODQgQEAKIFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAorSW5kZXg6IGlyZGEtdXRpbHMtMC45LjE4L2ZpbmRjaGlwL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaXJkYS11dGlscy0wLjkuMTgub3JpZy9maW5kY2hpcC9NYWtlZmlsZQogKysrIGlyZGEtdXRpbHMtMC45LjE4L2ZpbmRjaGlwL01ha2VmaWxlCiBAQCAtNjUsNSArNjUsNSBAQCBpbnN0YWxsOiBmaW5kY2hpcAotCi0gZ2ZpbmRjaGlwOiBnZmluZGNoaXAuYwotCSQocHJuX2NjKQorIAorIGdmaW5kY2hpcDogZ2ZpbmRjaGlwLmMgCisgCSQocHJuX2NjKQogLQkkKEVDTUQpKSQoQ0MpICQoQ0ZMQUdTKSBgZ3RrLWNvbmZpZyAtLWNmbGFnc2AgICQ8IC1vICRAIGBndGstY29uZmlnIC0tbGlic2AKICsJJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIGBndGstY29uZmlnIC0tY2ZsYWdzYCAgJDwgLW8gJEAgYGd0ay1jb25maWcgLS1saWJzYAotCisgCitJbmRleDogaXJkYS11dGlscy0wLjkuMTgvaXJhdHRhY2gvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBpcmRhLXV0aWxzLTAuOS4xOC5vcmlnL2lyYXR0YWNoL01ha2VmaWxlCiArKysgaXJkYS11dGlscy0wLjkuMTgvaXJhdHRhY2gvTWFrZWZpbGUKIEBAIC00OSwxMyArNDksMTMgQEAgYWxsOiAkKFRBUkdFVFMpCi0KKyAKICBpcmF0dGFjaDogaXJhdHRhY2gubyB1dGlsLm8KLQkkKHBybl9jY19vKQorIAkkKHBybl9jY19vKQogLQkkKEVDTUQpJChDQykgJChDRkxBR1MpIGlyYXR0YWNoLm8gdXRpbC5vIC1vICRACiArCSQoRUNNRCkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSBpcmF0dGFjaC5vIHV0aWwubyAtbyAkQAotCi0KLQorIAorIAorIAogIGRvbmdsZV9hdHRhY2g6IGRvbmdsZV9hdHRhY2gubwotCSQocHJuX2NjX28pCisgCSQocHJuX2NjX28pCiAtCSQoRUNNRCkkKENDKSAkKENGTEFHUykgZG9uZ2xlX2F0dGFjaC5vIC1vICRACiArCSQoRUNNRCkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSBkb25nbGVfYXR0YWNoLm8gLW8gJEAKLQotCisgCisgCiAgaW5zdGFsbDogJChUQVJHRVRTKQorSW5kZXg6IGlyZGEtdXRpbHMtMC45LjE4L2lyZGFkdW1wL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaXJkYS11dGlscy0wLjkuMTgub3JpZy9pcmRhZHVtcC9NYWtlZmlsZQogKysrIGlyZGEtdXRpbHMtMC45LjE4L2lyZGFkdW1wL01ha2VmaWxlCiBAQCAtNDAsNyArNDAsNyBAQCBsaWJfaXJkYWR1bXAuYTogJChMSUJJUkRBRFVNUF9PQkpTKQotCisgCiAgaXJkYWR1bXA6ICQoSVJEQURVTVBfT0JKUykgJChMSUJJUkRBRFVNUF9UQVJHRVQpCi0JJChwcm5fY2NfbykKKyAJJChwcm5fY2NfbykKIC0JJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSBgcGtnLWNvbmZpZyAtLWxpYnMgZ2xpYi0yLjBgIC1vICAkKElSREFEVU1QX1RBUkdFVCkgJDwgJChMSUJJUkRBRFVNUF9UQVJHRVQpCiArCSQoRUNNRCkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSBgcGtnLWNvbmZpZyAtLWxpYnMgZ2xpYi0yLjBgIC1vICAkKElSREFEVU1QX1RBUkdFVCkgJDwgJChMSUJJUkRBRFVNUF9UQVJHRVQpCi0KLQorIAorIAogIC5jLm86CitJbmRleDogaXJkYS11dGlscy0wLjkuMTgvaXJkYXBpbmcvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBpcmRhLXV0aWxzLTAuOS4xOC5vcmlnL2lyZGFwaW5nL01ha2VmaWxlCiArKysgaXJkYS11dGlscy0wLjkuMTgvaXJkYXBpbmcvTWFrZWZpbGUKIEBAIC01Niw3ICs1Niw3IEBAIGFsbDogJChUQVJHRVRTKQotCisgCiAgaXJkYXBpbmc6ICQoT0JKUykKLQkkKHBybl9jY19vKQorIAkkKHBybl9jY19vKQogLQkkKEVDTUQpJChDQykgJChDRkxBR1MpICQoT0JKUykgLW8gJEAKICsJJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoT0JKUykgLW8gJEAKLQotCisgCisgCiAgLmMubzoKK0luZGV4OiBpcmRhLXV0aWxzLTAuOS4xOC9pcm5ldGQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBpcmRhLXV0aWxzLTAuOS4xOC5vcmlnL2lybmV0ZC9NYWtlZmlsZQogKysrIGlyZGEtdXRpbHMtMC45LjE4L2lybmV0ZC9NYWtlZmlsZQogQEAgLTUwLDcgKzUwLDcgQEAgYWxsOiAkKFRBUkdFVFMpCi0KKyAKICBpcm5ldGQ6ICQoT0JKUykKLQkkKHBybl9jY19vKQorIAkkKHBybl9jY19vKQogLQkkKEVDTUQpJChDQykgJChDRkxBR1MpICQoT0JKUykgLW8gJEAKICsJJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoT0JKUykgLW8gJEAKLQotCisgCisgCiAgaW5zdGFsbDogaXJuZXRkCitJbmRleDogaXJkYS11dGlscy0wLjkuMTgvcHNpb24vTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBpcmRhLXV0aWxzLTAuOS4xOC5vcmlnL3BzaW9uL01ha2VmaWxlCiArKysgaXJkYS11dGlscy0wLjkuMTgvcHNpb24vTWFrZWZpbGUKIEBAIC0yNSw0ICsyNSw0IEBAIGluc3RhbGw6ICQoUFNJT05fVEFSR0VUUykKICBDRkxBR1MgKz0gLWcgLUkuLi9pbmNsdWRlIC1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMgJChSUE1fT1BUX0ZMQUdTKQotIGlycHNpb241OgotCSQocHJuX2NjX28pCisgaXJwc2lvbjU6IAorIAkkKHBybl9jY19vKQogLQkkKEVDTUQpJChDQykgJChDRkxBR1MpICQoUFNJT05fU1JDKSAtbyAkQAogXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCiArCSQoRUNNRCkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKFBTSU9OX1NSQykgLW8gJEAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzQuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd180LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxYjE3ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd180LjE0LmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAibmw4MDIxMSBiYXNlZCBDTEkgY29uZmlndXJhdGlvbiB1dGlsaXR5IGZvciB3aXJlbGVzcyBkZXZpY2VzIgorREVTQ1JJUFRJT04gPSAiaXcgaXMgYSBuZXcgbmw4MDIxMSBiYXNlZCBDTEkgY29uZmlndXJhdGlvbiB1dGlsaXR5IGZvciBcCit3aXJlbGVzcyBkZXZpY2VzLiBJdCBzdXBwb3J0cyBhbG1vc3QgYWxsIG5ldyBkcml2ZXJzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkIFwKK3RvIHRoZSBrZXJuZWwgcmVjZW50bHkuICIKK0hPTUVQQUdFID0gImh0dHA6Ly93aXJlbGVzcy5rZXJuZWwub3JnL2VuL3VzZXJzL0RvY3VtZW50YXRpb24vaXciCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg3ODYxOGE1YzRhZjI1ZTliOTNlZjBiZTFhOTNmNzc0IgorCitERVBFTkRTID0gImxpYm5sIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9pdy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pdy12ZXJzaW9uLnNoLWRvbi10LXVzZS1naXQtZGVzY3JpYmUtZm9yLXZlcnNpb25pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VwYXJhdGUtb2JqZGlyLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjIwNjc1MTZjYTk5NDBmZGI4YzA5MWVlMzI1MGRhMzc0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwYzNhYWQ2ZmY1MjIzNGQwM2EyNTIyYmEyZWJhNTcwZTM2YWJiM2U2MGRjMjliZjBiMWNlODhkZDcyNWQ2ZDQiCisKK2luaGVyaXQgcGtnY29uZmlnCisKK0VYVFJBX09FTUFLRSA9ICJcCisgICAgLWYgJyR7U30vTWFrZWZpbGUnIFwKKyAgICBcCisgICAgJ1BSRUZJWD0ke3ByZWZpeH0nIFwKKyAgICAnU0JJTkRJUj0ke3NiaW5kaXJ9JyBcCisgICAgJ01BTkRJUj0ke21hbmRpcn0nIFwKKyIKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzQuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRhZWIwNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd180LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIm5sODAyMTEgYmFzZWQgQ0xJIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3Igd2lyZWxlc3MgZGV2aWNlcyIKLURFU0NSSVBUSU9OID0gIml3IGlzIGEgbmV3IG5sODAyMTEgYmFzZWQgQ0xJIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3IgXAotd2lyZWxlc3MgZGV2aWNlcy4gSXQgc3VwcG9ydHMgYWxtb3N0IGFsbCBuZXcgZHJpdmVycyB0aGF0IGhhdmUgYmVlbiBhZGRlZCBcCi10byB0aGUga2VybmVsIHJlY2VudGx5LiAiCi1IT01FUEFHRSA9ICJodHRwOi8vd2lyZWxlc3Mua2VybmVsLm9yZy9lbi91c2Vycy9Eb2N1bWVudGF0aW9uL2l3IgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Nzg2MThhNWM0YWYyNWU5YjkzZWYwYmUxYTkzZjc3NCIKLQotREVQRU5EUyA9ICJsaWJubCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvaXcvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaXctdmVyc2lvbi5zaC1kb24tdC11c2UtZ2l0LWRlc2NyaWJlLWZvci12ZXJzaW9uaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcGFyYXRlLW9iamRpci5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwNmU5NmFiN2E1YzY1MmY4ZWFlZDZmNzE1MzNhOWUwZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMmY5MjFmM2RiZTBmMzNjMzA5ZjVmMjg5MWNjY2Y1MzI1Yzk0YmQ0OGRjZWViMTAyZGUxODNmNWYwNDhhOWUyIgotCi1pbmhlcml0IHBrZ2NvbmZpZwotCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIC1mICcke1N9L01ha2VmaWxlJyBcCi0gICAgXAotICAgICdQUkVGSVg9JHtwcmVmaXh9JyBcCi0gICAgJ1NCSU5ESVI9JHtzYmluZGlyfScgXAotICAgICdNQU5ESVI9JHttYW5kaXJ9JyBcCi0iCi1CID0gIiR7V09SS0RJUn0vYnVpbGQiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZWFyZC9uZWFyZC9NYWtlZmlsZS5hbS1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZWFyZC9uZWFyZC9NYWtlZmlsZS5hbS1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2gKaW5kZXggNDY2MDY3Ni4uNmU4NjQwNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmVhcmQvbmVhcmQvTWFrZWZpbGUuYW0tZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25lYXJkL25lYXJkL01ha2VmaWxlLmFtLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaApAQCAtMTYsMTggKzE2LDE1IEBACiAgTWFrZWZpbGUuYW0gfCAgICAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDMyNDEzMTEuLmE0M2VhYTIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xNjQsNiArMTY0LDcgQEAgTUFJTlRBSU5FUkNMRUFORklMRVMgPSBNYWtlZmlsZS5pbiBcCitJbmRleDogbmVhcmQtMC4xNi9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5lYXJkLTAuMTYub3JpZy9NYWtlZmlsZS5hbQorKysrIG5lYXJkLTAuMTYvTWFrZWZpbGUuYW0KK0BAIC0yNDQsNiArMjQ0LDcgQEAgU0VEX1BST0NFU1MgPSAkKEFNX1ZfR0VOKSQoTUtESVJfUCkgJChkaQogIHNyYy9wbHVnaW4uJChPQkpFWFQpOiBzcmMvYnVpbHRpbi5oCiAgCiAgc3JjL2J1aWx0aW4uaDogc3JjL2dlbmJ1aWx0aW4gJChidWlsdGluX3NvdXJjZXMpCiArCSQoQU1fVl9hdCkkKE1LRElSX1ApIHNyYwogIAkkKEFNX1ZfR0VOKSQoc3JjZGlyKS9zcmMvZ2VuYnVpbHRpbiAkKGJ1aWx0aW5fbW9kdWxlcykgPiAkQAogIAotICQoc3JjX25lYXJkX09CSkVDVFMpIFwKLS0tIAotMS43LjkuNQotCisgc2UvcGx1Z2luLiQoT0JKRVhUKTogc2UvYnVpbHRpbi5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvZmlsZXMvYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvZmlsZXMvYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2gKaW5kZXggMTRiZDQwMy4uODIyOTM5ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2ZpbGVzL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9maWxlcy9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaApAQCAtMTYsMTEgKzE2LDExIEBACiAgdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS91dGlscy9zdGF0ZC9zdGFydC1zdGF0ZCBiL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCi1pbmRleCA4MjExYTkwLi4zYzJhYTZmIDEwMDc1NQotLS0tIGEvdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQKLSsrKyBiL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCi1AQCAtMTYsNyArMTYsNyBAQCBmaQorSW5kZXg6IG5mcy11dGlscy0yLjEuMS91dGlscy9zdGF0ZC9zdGFydC1zdGF0ZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5mcy11dGlscy0yLjEuMS5vcmlnL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCisrKysgbmZzLXV0aWxzLTIuMS4xL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCitAQCAtMjgsNyArMjgsNyBAQCBmaQogICMgRmlyc3QgdHJ5IHN5c3RlbWQgaWYgaXQncyBpbnN0YWxsZWQuCiAgaWYgWyAtZCAvcnVuL3N5c3RlbWQvc3lzdGVtIF07IHRoZW4KICAgICAgIyBRdWl0IG9ubHkgaWYgdGhlIGNhbGwgd29ya2VkLgpAQCAtMjgsNyArMjgsNCBAQAogKyAgICBzeXN0ZW1jdGwgc3RhcnQgbmZzLXN0YXRkLnNlcnZpY2UgJiYgZXhpdAogIGZpCiAgCi0gIyBGYWxsIGJhY2sgdG8gbGF1bmNoaW5nIGl0IG91cnNlbHZlcy4KLS0tIAotMi4xLjQKLQorIGNkIC8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1jb25maWd1cmUtQWxsb3ctdG8tZXhwbGljaXRseS1kaXNhYmxlLW5mc2lkbWFwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2gKaW5kZXggNzAyNWZiNS4uMjZiNTU4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2gKQEAgLTEyLDExICsxMiwxMSBAQAogIGNvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKy0KICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGJmNDMzZDYuLjI4YThmNjIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTY5LDYgKzY5LDEyIEBAIEFDX0FSR19FTkFCTEUobmZzdjQsCitJbmRleDogbmZzLXV0aWxzLTIuMS4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5mcy11dGlscy0yLjEuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG5mcy11dGlscy0yLjEuMS9jb25maWd1cmUuYWMKK0BAIC05Miw2ICs5MiwxMiBAQCBBQ19BUkdfRU5BQkxFKG5mc3Y0LAogIAlBQ19TVUJTVChlbmFibGVfbmZzdjQpCiAgCUFNX0NPTkRJVElPTkFMKENPTkZJR19ORlNWNCwgW3Rlc3QgIiRlbmFibGVfbmZzdjQiID0gInllcyJdKQogIApAQCAtMjcsOSArMjcsOSBAQAogKyAgICAgICAgZW5hYmxlX25mc2lkbWFwPXllcykKICsKICBBQ19BUkdfRU5BQkxFKG5mc3Y0MSwKLSAJW0FDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1uZnN2NDFdLAotICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgc3VwcG9ydCBmb3IgTkZTdjQxIEA8OkBkZWZhdWx0PXllc0A6PkBdKV0sCi1AQCAtMjk2LDcgKzMwMiw3IEBAIGZpCisgCVtBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLW5mc3Y0MV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGUgc3VwcG9ydCBmb3IgTkZTdjQxIEA8OkBkZWZhdWx0PW5vQDo+QF0pXSwKK0BAIC0zMzksNyArMzQ1LDcgQEAgZmkKICAKICBkbmwgZW5hYmxlIG5mc2lkbWFwIHdoZW4gaXRzIHN1cHBvcnQgYnkgbGlibmZzaWRtYXAKICBBTV9DT05ESVRJT05BTChDT05GSUdfTkZTRENMVFJBQ0ssIFt0ZXN0ICIkZW5hYmxlX25mc2RjbHRyYWNrIiA9ICJ5ZXMiIF0pCkBAIC0zOCw2ICszOCwzIEBACiAgCiAgCiAgaWYgdGVzdCAiJGtuZnNkX2N2X2dsaWJjMiIgPSBubzsgdGhlbgotLS0gCi0xLjguNC4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLTEuMi4zLXNtLW5vdGlmeS1yZXNfaW5pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLTEuMi4zLXNtLW5vdGlmeS1yZXNfaW5pdC5wYXRjaAppbmRleCBkOGY4MTgxLi44OWE4YTU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy0xLjIuMy1zbS1ub3RpZnktcmVzX2luaXQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtMS4yLjMtc20tbm90aWZ5LXJlc19pbml0LnBhdGNoCkBAIC0xMyw5ICsxMywxMCBAQAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAogCi1kaWZmIC11cCBuZnMtdXRpbHMtMS4yLjMvdXRpbHMvc3RhdGQvc20tbm90aWZ5LmMub3JpZyBuZnMtdXRpbHMtMS4yLjMvdXRpbHMvc3RhdGQvc20tbm90aWZ5LmMKLS0tLSBuZnMtdXRpbHMtMS4yLjMvdXRpbHMvc3RhdGQvc20tbm90aWZ5LmMub3JpZwkyMDEwLTA5LTI4IDA4OjI0OjE2LjAwMDAwMDAwMCAtMDQwMAotKysrIG5mcy11dGlscy0xLjIuMy91dGlscy9zdGF0ZC9zbS1ub3RpZnkuYwkyMDEwLTEwLTE1IDE2OjQ0OjQzLjQ4NzExOTYwMSAtMDQwMAorSW5kZXg6IG5mcy11dGlscy0yLjEuMS91dGlscy9zdGF0ZC9zbS1ub3RpZnkuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5mcy11dGlscy0yLjEuMS5vcmlnL3V0aWxzL3N0YXRkL3NtLW5vdGlmeS5jCisrKysgbmZzLXV0aWxzLTIuMS4xL3V0aWxzL3N0YXRkL3NtLW5vdGlmeS5jCiBAQCAtMjgsNiArMjgsOSBAQAogICNpbmNsdWRlIDxuZXRkYi5oPgogICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtMjQsOSArMjUsOSBAQAogKyNpbmNsdWRlIDxhcnBhL25hbWVzZXIuaD4KICsjaW5jbHVkZSA8cmVzb2x2Lmg+CiAgCisgI2luY2x1ZGUgImNvbmZmaWxlLmgiCiAgI2luY2x1ZGUgInNvY2thZGRyLmgiCi0gI2luY2x1ZGUgInhsb2cuaCIKLUBAIC04NCw2ICs4Nyw3IEBAIHNtbl9sb29rdXAoY29uc3QgY2hhciAqbmFtZSkKK0BAIC04OSw2ICs5Miw3IEBAIHNtbl9sb29rdXAoY29uc3QgY2hhciAqbmFtZSkKICAJfTsKICAJaW50IGVycm9yOwogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi4xLjEuYmIKaW5kZXggZDkxN2M0ZC4uNzk0NTNhZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjEuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMS4xLmJiCkBAIC01Niw3ICs1Niw2IEBACiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN0YXRkdXNlcj1ycGN1c2VyIFwKICAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb3VudGNvbmZpZyBcCiAgICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibW91bnQtbW91bnQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnN2NDEgXAogICAgICAgICAgICAgICAgIC0tZW5hYmxlLXV1aWQgXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nc3MgXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnNkY2x0cmFjayBcCkBAIC03MCw2ICs2OSw4IEBACiBQQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS13aXRoLXRjcC13cmFwcGVycywtLXdpdGhvdXQtdGNwLXdyYXBwZXJzLHRjcC13cmFwcGVycyIKIFBBQ0tBR0VDT05GSUdbbmZzaWRtYXBdID0gIi0tZW5hYmxlLW5mc2lkbWFwLC0tZGlzYWJsZS1uZnNpZG1hcCxrZXl1dGlscyIKIFBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisjIGxpYmRldm1hcHBlciBpcyBhdmFpbGFibGUgaW4gbWV0YS1vZQorUEFDS0FHRUNPTkZJR1tuZnN2NDFdID0gIi0tZW5hYmxlLW5mc3Y0MSwtLWRpc2FibGUtbmZzdjQxLGxpYmRldm1hcHBlciIKIAogUEFDS0FHRVMgPSsgIiR7UE59LWNsaWVudCAke1BOfS1tb3VudCAke1BOfS1zdGF0cyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm8uaW5jCmluZGV4IDY3NmEwYzAuLjA0NzI0MTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9uby5pbmMKQEAgLTUsNyArNSw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvb2Zvbm8uaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT0zY2UxN2Q1OTc4ZWYzNDQ1ZGVmMjY1Yjk4ODk5YzJlZSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIHN5c3RlbWQgYmx1ZXRvb3RoCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgc3lzdGVtZCBibHVldG9vdGggZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEKIAogREVQRU5EUyAgPSAiZGJ1cyBnbGliLTIuMCB1ZGV2IG1vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mbyIKIApAQCAtMjYsMTAgKzI2LDYgQEAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vb2Zvbm8gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29mb25vCi0KLSAgIyBPZm9ubyBzdGlsbCBoYXMgb25lIHRlc3QgdG9vbCB0aGF0IHJlZmVycyB0byBQeXRob24gMiBpbiB0aGUgc2hlYmFuZwotICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7bGliZGlyfS9vZm9uby90ZXN0L3NldC1kZHIKLQogfQogCiBQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCkBAIC0zOSw0ICszNSw1IEBACiAKIEZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0iCiBGSUxFU18ke1BOfS10ZXN0cyA9ICIke2xpYmRpcn0vJHtCUE59L3Rlc3QiCi1SREVQRU5EU18ke1BOfS10ZXN0cyA9ICJweXRob24zIHB5dGhvbjMtcHlnb2JqZWN0IHB5dGhvbjMtZGJ1cyIKK1JERVBFTkRTXyR7UE59LXRlc3RzID0gInB5dGhvbjMgcHl0aG9uMy1kYnVzIgorUkRFUEVORFNfJHtQTn0tdGVzdHMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdweXRob24zLXB5Z29iamVjdCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9uby91c2UtcHl0aG9uMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vL3VzZS1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiODQwNzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9uby91c2UtcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDI3IEBACitzZXQtZGRyIHNob3VsZCB1c2UgUHl0aG9uMyBsaWtlIGFsbCB0aGUgb3RoZXIgdGVzdHMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIDE3YjY5Y2QxZGE0YzVjNWY3MzJhY2IzOGNhMTYwMjQ0NmM1NjdlZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogTW9uLCAyOSBKYW4gMjAxOCAxMTozMToyNSArMDAwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0L3NldGRkcjogdXNlIFB5dGhvbiAzCisKK0FsbCB0aGUgb3RoZXIgdGVzdHMgdXNlIFB5dGhvbiAzLCBzbyB0aGlzIHNob3VsZCB0by4KKy0tLQorIHRlc3Qvc2V0LWRkciB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3Qvc2V0LWRkciBiL3Rlc3Qvc2V0LWRkcgoraW5kZXggNWQwNjFiOTUuLjMzNjMxZjMxIDEwMDc1NQorLS0tIGEvdGVzdC9zZXQtZGRyCisrKysgYi90ZXN0L3NldC1kZHIKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vcHl0aG9uCisrIyEvdXNyL2Jpbi9weXRob24zCisgCisgaW1wb3J0IHN5cworIGltcG9ydCBkYnVzCistLSAKKzIuMTEuMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4Zjk4M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4yMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBvZm9uby5pbmMKLQotU1JDX1VSSSAgPSAiXAotICAke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L25ldHdvcmsvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gIGZpbGU6Ly9vZm9ubyBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZmFkMDYzMGZjZTZhOWFlY2RiN2RiMzdiYzFmMWRiN2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQ3YmE4ZjQ4MWE3NzE1ZDAxM2E3OWY4ZDY0NzdlYjg5ZDhhYWFlMzk5Mzk1ZDVkMDA4YTEzMTdjMzRhMzFkNSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1N2VhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjIyLmJiCkBAIC0wLDAgKzEsOSBAQAorcmVxdWlyZSBvZm9uby5pbmMKKworU1JDX1VSSSAgPSAiXAorICAke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L25ldHdvcmsvJHtCUE59LyR7QlB9LnRhci54eiBcCisgIGZpbGU6Ly9vZm9ubyBcCisgIGZpbGU6Ly91c2UtcHl0aG9uMy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMmE2ODNhYjhlOTg0NDhhZDhiYzVkYzk4NjhkMjg5M2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGUzNGE2Njk2YzMwMGM5ODQxYjU1ZThkZmY2NDBiZDMwOTZlNDlmNWRiZTU1YmJlYmFhNjlhNzE2NzZmNjg3ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC8wMDAxLW9wZW5zc2gtRml4LXN5bnRheC1lcnJvci1vbi14MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvMDAwMS1vcGVuc3NoLUZpeC1zeW50YXgtZXJyb3Itb24teDMyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTllMjAwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC8wMDAxLW9wZW5zc2gtRml4LXN5bnRheC1lcnJvci1vbi14MzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGE3ZTM1OWQ0YmEzNDVhYTJhMTNjMDdmMTA1NzE4NGU5YjRlNTk4YTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBzd2VlYXVuIDxzd2VlLmF1bi5raG9yQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMjIgQXVnIDIwMTcgMTE6MTk6NDggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gb3BlbnNzaDogRml4IHN5bnRheCBlcnJvciBvbiB4MzIKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotVGhpcyBidWcgaGFzIGJlZW4gZml4ZWQgaW4gdl83LjUgYnJhbmNoIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NoLwotb3BlbnNzaC1wb3J0YWJsZS90cmVlL1ZfN181IGFuZCBtYXN0ZXIgYnJhbmNoIGh0dHBzOi8vZ2l0aHViLmNvbS8KLW9wZW5zc2gvb3BlbnNzaC1wb3J0YWJsZS90cmVlL21hc3Rlci4KLQotRml4IGNvbXBpbGF0aW9uIGVycm9yIGR1cmluZyBvcGVuc3NoIHgzMiBidWlsZCBkdWUgdG8gc3ludGF4IGVycm9yLgotCi1TaWduZWQtb2ZmLWJ5OiBzd2VlYXVuIDxzd2VlLmF1bi5raG9yQGludGVsLmNvbT4KLS0tLQotIHNhbmRib3gtc2VjY29tcC1maWx0ZXIuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NhbmRib3gtc2VjY29tcC1maWx0ZXIuYyBiL3NhbmRib3gtc2VjY29tcC1maWx0ZXIuYwotaW5kZXggM2ExYWVkYy4uYThkNDcyYSAxMDA2NDQKLS0tLSBhL3NhbmRib3gtc2VjY29tcC1maWx0ZXIuYwotKysrIGIvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jCi1AQCAtMjM1LDcgKzIzNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc29ja19maWx0ZXIgcHJlYXV0aF9pbnNuc1tdID0gewotIAkgKiB4ODYtNjQgc3lzY2FsbCB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMsIGUuZy4KLSAJICogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvODQ5OTIzCi0gCSAqLwotLQlTQ19BTExPVyhfX05SX2Nsb2NrX2dldHRpbWUgJiB+X19YMzJfU1lTQ0FMTF9CSVQpOwotKwlTQ19BTExPVyhfX05SX2Nsb2NrX2dldHRpbWUgJiB+X19YMzJfU1lTQ0FMTF9CSVQpLAotICNlbmRpZgotIAotIAkvKiBEZWZhdWx0IGRlbnkgKi8KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2FkZC10ZXN0LXN1cHBvcnQtZm9yLWJ1c3lib3gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaAppbmRleCBhZGMyNWM2Li5iODQwMmE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaApAQCAtNiw2NCArNiw0MiBAQAogU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBlbmVhLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogb3BlbnNzaC02LjhwMS9yZWdyZXNzL2NpcGhlci1zcGVlZC5zaAorSW5kZXg6IG9wZW5zc2gtNy42cDEvcmVncmVzcy9jaXBoZXItc3BlZWQuc2gKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NoLTYuOHAxLm9yaWcvcmVncmVzcy9jaXBoZXItc3BlZWQuc2gKLSsrKyBvcGVuc3NoLTYuOHAxL3JlZ3Jlc3MvY2lwaGVyLXNwZWVkLnNoCistLS0gb3BlbnNzaC03LjZwMS5vcmlnL3JlZ3Jlc3MvY2lwaGVyLXNwZWVkLnNoCisrKysgb3BlbnNzaC03LjZwMS9yZWdyZXNzL2NpcGhlci1zcGVlZC5zaAogQEAgLTE3LDcgKzE3LDcgQEAgZm9yIGMgaW4gYCR7U1NIfSAtUSBjaXBoZXJgOyBkbyBuPTA7IGZvcgogIAkJcHJpbnRmICIlLTYwcyIgIiRjLyRtOiIKICAJCSggJHtTU0h9IC1vICdjb21wcmVzc2lvbiBubycgXAotIAkJCS1GICRPQkovc3NoX3Byb3h5IC0yIC1tICRtIC1jICRjIHNvbWVob3N0IFwKKyAJCQktRiAkT0JKL3NzaF9wcm94eSAtbSAkbSAtYyAkYyBzb21laG9zdCBcCiAtCQkJZXhlYyBzaCAtYyBcJyJkZCBvZj0vZGV2L251bGwgb2JzPTMyayJcJyBcCiArCQkJZXhlYyBzaCAtYyBcJyJkZCBvZj0vZGV2L251bGwgYnM9MzJrIlwnIFwKICAJCTwgJHtEQVRBfSApIDI+JjEgfCBnZXRieXRlcwogIAogIAkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi1AQCAtNDIsNyArNDIsNyBAQCBmb3IgYyBpbiAkY2lwaGVyczsgZG8KLSAJCXByaW50ZiAiJS02MHMiICIkYzoiCi0gCQkoICR7U1NIfSAtbyAnY29tcHJlc3Npb24gbm8nIFwKLSAJCQktRiAkT0JKL3NzaF9wcm94eSAtMSAtYyAkYyBzb21laG9zdCBcCi0tCQkJZXhlYyBzaCAtYyBcJyJkZCBvZj0vZGV2L251bGwgb2JzPTMyayJcJyBcCi0rCQkJZXhlYyBzaCAtYyBcJyJkZCBvZj0vZGV2L251bGwgYnM9MzJrIlwnIFwKLSAJCTwgJHtEQVRBfSApIDI+JjEgfCBnZXRieXRlcwotIAkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0gCQkJZmFpbCAic3NoIC0xIGZhaWxlZCB3aXRoIGNpcGhlciAkYyIKLUluZGV4OiBvcGVuc3NoLTYuOHAxL3JlZ3Jlc3MvdHJhbnNmZXIuc2gKK0luZGV4OiBvcGVuc3NoLTcuNnAxL3JlZ3Jlc3MvdHJhbnNmZXIuc2gKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NoLTYuOHAxLm9yaWcvcmVncmVzcy90cmFuc2Zlci5zaAotKysrIG9wZW5zc2gtNi44cDEvcmVncmVzcy90cmFuc2Zlci5zaAotQEAgLTE1LDcgKzE1LDcgQEAgZm9yIHAgaW4gJHtTU0hfUFJPVE9DT0xTfTsgZG8KLSAJZm9yIHMgaW4gMTAgMTAwIDFrIDMyayA2NGsgMTI4ayAyNTZrOyBkbwotIAkJdHJhY2UgInByb3RvICRwIGRkLXNpemUgJHtzfSIKLSAJCXJtIC1mICR7Q09QWX0KLS0JCWRkIGlmPSREQVRBIG9icz0ke3N9IDI+IC9kZXYvbnVsbCB8IFwKLSsJCWRkIGlmPSREQVRBIGJzPSR7c30gMj4gL2Rldi9udWxsIHwgXAotIAkJCSR7U1NIfSAtcSAtJHAgLUYgJE9CSi9zc2hfcHJveHkgc29tZWhvc3QgImNhdCA+ICR7Q09QWX0iCi0gCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLSAJCQlmYWlsICJzc2ggY2F0ICREQVRBIGZhaWxlZCIKLUluZGV4OiBvcGVuc3NoLTYuOHAxL3JlZ3Jlc3MveWVzLWhlYWQuc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NoLTYuOHAxLm9yaWcvcmVncmVzcy95ZXMtaGVhZC5zaAotKysrIG9wZW5zc2gtNi44cDEvcmVncmVzcy95ZXMtaGVhZC5zaAotQEAgLTQsNyArNCw3IEBACi0gdGlkPSJ5ZXMgcGlwZSBoZWFkIgotIAotIGZvciBwIGluICR7U1NIX1BST1RPQ09MU307IGRvCi0tCWxpbmVzPWAke1NTSH0gLSRwIC1GICRPQkovc3NoX3Byb3h5IHRoaXNob3N0ICdzaCAtYyAid2hpbGUgdHJ1ZTtkbyBlY2hvIHllcztkb25lIHwgX1BPU0lYMl9WRVJTSU9OPTE5OTIwOSBoZWFkIC0yMDAwIicgfCAoc2xlZXAgMyA7IHdjIC1sKWAKLSsJbGluZXM9YCR7U1NIfSAtJHAgLUYgJE9CSi9zc2hfcHJveHkgdGhpc2hvc3QgJ3NoIC1jICJ3aGlsZSB0cnVlO2RvIGVjaG8geWVzO2RvbmUgfCBfUE9TSVgyX1ZFUlNJT049MTk5MjA5IGhlYWQgLW4gMjAwMCInIHwgKHNsZWVwIDMgOyB3YyAtbClgCistLS0gb3BlbnNzaC03LjZwMS5vcmlnL3JlZ3Jlc3MvdHJhbnNmZXIuc2gKKysrKyBvcGVuc3NoLTcuNnAxL3JlZ3Jlc3MvdHJhbnNmZXIuc2gKK0BAIC0xMyw3ICsxMyw3IEBAIGNtcCAke0RBVEF9ICR7Q09QWX0JCXx8IGZhaWwgImNvcnJ1cHRlZAorIGZvciBzIGluIDEwIDEwMCAxayAzMmsgNjRrIDEyOGsgMjU2azsgZG8KKyAJdHJhY2UgImRkLXNpemUgJHtzfSIKKyAJcm0gLWYgJHtDT1BZfQorLQlkZCBpZj0kREFUQSBvYnM9JHtzfSAyPiAvZGV2L251bGwgfCBcCisrCWRkIGlmPSREQVRBIGJzPSR7c30gMj4gL2Rldi9udWxsIHwgXAorIAkJJHtTU0h9IC1xIC1GICRPQkovc3NoX3Byb3h5IHNvbWVob3N0ICJjYXQgPiAke0NPUFl9IgogIAlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLSAJCWZhaWwgInllc3xoZWFkIHRlc3QgZmFpbGVkIgotIAkJbGluZXMgPSAwOwotSW5kZXg6IG9wZW5zc2gtNi44cDEvcmVncmVzcy9rZXktb3B0aW9ucy5zaAorIAkJZmFpbCAic3NoIGNhdCAkREFUQSBmYWlsZWQiCitJbmRleDogb3BlbnNzaC03LjZwMS9yZWdyZXNzL2tleS1vcHRpb25zLnNoCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNzaC02LjhwMS5vcmlnL3JlZ3Jlc3Mva2V5LW9wdGlvbnMuc2gKLSsrKyBvcGVuc3NoLTYuOHAxL3JlZ3Jlc3Mva2V5LW9wdGlvbnMuc2gKLUBAIC01NCw3ICs1NCw3IEBAIGZvciBwIGluICR7U1NIX1BST1RPQ09MU307IGRvCistLS0gb3BlbnNzaC03LjZwMS5vcmlnL3JlZ3Jlc3Mva2V5LW9wdGlvbnMuc2gKKysrKyBvcGVuc3NoLTcuNnAxL3JlZ3Jlc3Mva2V5LW9wdGlvbnMuc2gKK0BAIC00Nyw3ICs0Nyw3IEBAIGZvciBmIGluIDEyNy4wLjAuMSAnMTI3LjAuMC4wXC84JzsgZG8KICAJZmkKICAKICAJc2VkICdzLy4qL2Zyb209IiciJGYiJyIgJi8nICRvcmlna2V5cyA+JGF1dGhrZXlzCiAtCWZyb209YGhlYWQgLTEgJGF1dGhrZXlzIHwgY3V0IC1mMSAtZCAnICdgCiArCWZyb209YGhlYWQgLW4gMSAkYXV0aGtleXMgfCBjdXQgLWYxIC1kICcgJ2AKLSAJdmVyYm9zZSAia2V5IG9wdGlvbiBwcm90byAkcCAkZnJvbSIKLSAJcj1gJHtTU0h9IC0kcCAtcSAtRiAkT0JKL3NzaF9wcm94eSBzb21laG9zdCAnZWNobyB0cnVlJ2AKKyAJdmVyYm9zZSAia2V5IG9wdGlvbiAkZnJvbSIKKyAJcj1gJHtTU0h9IC1xIC1GICRPQkovc3NoX3Byb3h5IHNvbWVob3N0ICdlY2hvIHRydWUnYAogIAlpZiBbICIkciIgPSAidHJ1ZSIgXTsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2Rpc2FibGUtY2lwaGVycy1ub3Qtc3VwcG9ydGVkLWJ5LU9wZW5TU0wtREVTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2Rpc2FibGUtY2lwaGVycy1ub3Qtc3VwcG9ydGVkLWJ5LU9wZW5TU0wtREVTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMmQxYTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvZGlzYWJsZS1jaXBoZXJzLW5vdC1zdXBwb3J0ZWQtYnktT3BlblNTTC1ERVMucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSAyNjVlYWFiOGIzOWQ4ZDg3MjEyMjRhNDhlZWZlZDViZjE2OTZkMzUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxOCBBcHIgMjAxOCAyMTo1ODozMiArMDgwMAorU3ViamVjdDogW1BBVENIXSBkaXNhYmxlIGNpcGhlcnMgbm90IHN1cHBvcnRlZCBieSBPcGVuU1NMIERFUworCitXaGlsZSBjb21waWxpbmcgb3BlbnNzbCB3aXRoIG9wdGlvbiBgbm8tZGVzJywgaXQgY2F1c2VkIHRoZSBvcGVuc3NoCitidWlsZCBmYWlsdXJlCisuLi4KK2NpcGhlci5jOjg1OjQxOiBlcnJvcjogJ0VWUF9kZXNfZWRlM19jYmMnIHVuZGVjbGFyZWQgaGVyZSAobm90IGluIGEgZnVuY3Rpb24pOworLi4uCisKK09wZW5TU0wgY29uZmlndXJlZCB0aGF0IHdheSBkZWZpbmVzIE9QRU5TU0xfTk9fREVTIHRvIGRpc2FibGUgZGVzCisKK1N1Z2dlc3RlZCBieSBkdHVja2VyQAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbb3BlbnNzaC11bml4LWRldkBtaW5kcm90Lm9yZ10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY2lwaGVyLmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY2lwaGVyLmMgYi9jaXBoZXIuYworaW5kZXggYzNjZDVkYy4uODY1NThlMSAxMDA2NDQKKy0tLSBhL2NpcGhlci5jCisrKysgYi9jaXBoZXIuYworQEAgLTgyLDcgKzgyLDkgQEAgc3RydWN0IHNzaGNpcGhlciB7CisgCisgc3RhdGljIGNvbnN0IHN0cnVjdCBzc2hjaXBoZXIgY2lwaGVyc1tdID0geworICNpZmRlZiBXSVRIX09QRU5TU0wKKysjaWZuZGVmIE9QRU5TU0xfTk9fREVTCisgCXsgIjNkZXMtY2JjIiwJCTgsIDI0LCAwLCAwLCBDRkxBR19DQkMsIEVWUF9kZXNfZWRlM19jYmMgfSwKKysjZW5kaWYKKyAJeyAiYWVzMTI4LWNiYyIsCQkxNiwgMTYsIDAsIDAsIENGTEFHX0NCQywgRVZQX2Flc18xMjhfY2JjIH0sCisgCXsgImFlczE5Mi1jYmMiLAkJMTYsIDI0LCAwLCAwLCBDRkxBR19DQkMsIEVWUF9hZXNfMTkyX2NiYyB9LAorIAl7ICJhZXMyNTYtY2JjIiwJCTE2LCAzMiwgMCwgMCwgQ0ZMQUdfQ0JDLCBFVlBfYWVzXzI1Nl9jYmMgfSwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tY2lwaGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tY2lwaGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDk4Yjk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9vcGVuc3NoLTcuMXAxLWNvbmRpdGlvbmFsLWNvbXBpbGUtZGVzLWluLWNpcGhlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi1Gcm9tIDI3NzQwYzkxOGZlNWQ3ODQ0MWJjZjY5ZTdkMmVlZmIyM2RkZWNhNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxOSBKYW4gMjAxNyAwMzowMDowOCAtMDUwMAotU3ViamVjdDogW1BBVENIIDEvM10gUmVtb3ZlIGRlcyBpbiBjaXBoZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBIYWlxaW5nIEJhaSA8SGFpcWluZy5CYWlAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2lwaGVyLmMgfCAxOCArKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY2lwaGVyLmMgYi9jaXBoZXIuYwotaW5kZXggMmRlZjMzMy4uNTlmNjc5MiAxMDA2NDQKLS0tLSBhL2NpcGhlci5jCi0rKysgYi9jaXBoZXIuYwotQEAgLTUzLDggKzUzLDEwIEBACi0gCi0gI2lmZGVmIFdJVEhfU1NIMQotIGV4dGVybiBjb25zdCBFVlBfQ0lQSEVSICpldnBfc3NoMV9iZih2b2lkKTsKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gZXh0ZXJuIGNvbnN0IEVWUF9DSVBIRVIgKmV2cF9zc2gxXzNkZXModm9pZCk7Ci0gZXh0ZXJuIGludCBzc2gxXzNkZXNfaXYoRVZQX0NJUEhFUl9DVFggKiwgaW50LCB1X2NoYXIgKiwgaW50KTsKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAjZW5kaWYKLSAKLSBzdHJ1Y3Qgc3NoY2lwaGVyX2N0eCB7Ci1AQCAtODgsMTUgKzkwLDE5IEBAIHN0cnVjdCBzc2hjaXBoZXIgewotIAotIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3NoY2lwaGVyIGNpcGhlcnNbXSA9IHsKLSAjaWZkZWYgV0lUSF9TU0gxCi0rI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotIAl7ICJkZXMiLAlTU0hfQ0lQSEVSX0RFUywgOCwgOCwgMCwgMCwgMCwgMSwgRVZQX2Rlc19jYmMgfSwKLSAJeyAiM2RlcyIsCVNTSF9DSVBIRVJfM0RFUywgOCwgMTYsIDAsIDAsIDAsIDEsIGV2cF9zc2gxXzNkZXMgfSwKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAjIGlmbmRlZiBPUEVOU1NMX05PX0JGCi0gCXsgImJsb3dmaXNoIiwJU1NIX0NJUEhFUl9CTE9XRklTSCwgOCwgMzIsIDAsIDAsIDAsIDEsIGV2cF9zc2gxX2JmIH0sCi0gIyBlbmRpZiAvKiBPUEVOU1NMX05PX0JGICovCi0gI2VuZGlmIC8qIFdJVEhfU1NIMSAqLwotICNpZmRlZiBXSVRIX09QRU5TU0wKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gCXsgIm5vbmUiLAlTU0hfQ0lQSEVSX05PTkUsIDgsIDAsIDAsIDAsIDAsIDAsIEVWUF9lbmNfbnVsbCB9LAotIAl7ICIzZGVzLWNiYyIsCVNTSF9DSVBIRVJfU1NIMiwgOCwgMjQsIDAsIDAsIDAsIDEsIEVWUF9kZXNfZWRlM19jYmMgfSwKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAjIGlmbmRlZiBPUEVOU1NMX05PX0JGCi0gCXsgImJsb3dmaXNoLWNiYyIsCi0gCQkJU1NIX0NJUEhFUl9TU0gyLCA4LCAxNiwgMCwgMCwgMCwgMSwgRVZQX2JmX2NiYyB9LAotQEAgLTE4MCw4ICsxODYsMTAgQEAgY2lwaGVyX2tleWxlbihjb25zdCBzdHJ1Y3Qgc3NoY2lwaGVyICpjKQotIHVfaW50Ci0gY2lwaGVyX3NlY2xlbihjb25zdCBzdHJ1Y3Qgc3NoY2lwaGVyICpjKQotIHsKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gCWlmIChzdHJjbXAoIjNkZXMtY2JjIiwgYy0+bmFtZSkgPT0gMCkKLSAJCXJldHVybiAxNDsKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAJcmV0dXJuIGNpcGhlcl9rZXlsZW4oYyk7Ci0gfQotIAotQEAgLTIzMCwxMSArMjM4LDEzIEBAIHVfaW50Ci0gY2lwaGVyX21hc2tfc3NoMShpbnQgY2xpZW50KQotIHsKLSAJdV9pbnQgbWFzayA9IDA7Ci0rI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotIAltYXNrIHw9IDEgPDwgU1NIX0NJUEhFUl8zREVTOwkJLyogTWFuZGF0b3J5ICovCi0gCW1hc2sgfD0gMSA8PCBTU0hfQ0lQSEVSX0JMT1dGSVNIOwotIAlpZiAoY2xpZW50KSB7Ci0gCQltYXNrIHw9IDEgPDwgU1NIX0NJUEhFUl9ERVM7Ci0gCX0KLSsjZW5kaWYgLypPUEVOU1NMX05PX0RFUyovCi0gCXJldHVybiBtYXNrOwotIH0KLSAKLUBAIC02MDYsNyArNjE2LDkgQEAgY2lwaGVyX2dldF9rZXlpdihzdHJ1Y3Qgc3NoY2lwaGVyX2N0eCAqY2MsIHVfY2hhciAqaXYsIHVfaW50IGxlbikKLSAJc3dpdGNoIChjLT5udW1iZXIpIHsKLSAjaWZkZWYgV0lUSF9PUEVOU1NMCi0gCWNhc2UgU1NIX0NJUEhFUl9TU0gyOgotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAJY2FzZSBTU0hfQ0lQSEVSX0RFUzoKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAJY2FzZSBTU0hfQ0lQSEVSX0JMT1dGSVNIOgotIAkJZXZwbGVuID0gRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoKGNjLT5ldnApOwotIAkJaWYgKGV2cGxlbiA9PSAwKQotQEAgLTYyOSw4ICs2NDEsMTAgQEAgY2lwaGVyX2dldF9rZXlpdihzdHJ1Y3Qgc3NoY2lwaGVyX2N0eCAqY2MsIHVfY2hhciAqaXYsIHVfaW50IGxlbikKLSAJCWJyZWFrOwotICNlbmRpZgotICNpZmRlZiBXSVRIX1NTSDEKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gCWNhc2UgU1NIX0NJUEhFUl8zREVTOgotIAkJcmV0dXJuIHNzaDFfM2Rlc19pdihjYy0+ZXZwLCAwLCBpdiwgMjQpOwotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICNlbmRpZgotIAlkZWZhdWx0OgotIAkJcmV0dXJuIFNTSF9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKLUBAIC02NTQsNyArNjY4LDkgQEAgY2lwaGVyX3NldF9rZXlpdihzdHJ1Y3Qgc3NoY2lwaGVyX2N0eCAqY2MsIGNvbnN0IHVfY2hhciAqaXYpCi0gCXN3aXRjaCAoYy0+bnVtYmVyKSB7Ci0gI2lmZGVmIFdJVEhfT1BFTlNTTAotIAljYXNlIFNTSF9DSVBIRVJfU1NIMjoKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gCWNhc2UgU1NIX0NJUEhFUl9ERVM6Ci0rI2VuZGlmIC8qIE9QRU5TU0xfTk9fREVTICovCi0gCWNhc2UgU1NIX0NJUEhFUl9CTE9XRklTSDoKLSAJCWV2cGxlbiA9IEVWUF9DSVBIRVJfQ1RYX2l2X2xlbmd0aChjYy0+ZXZwKTsKLSAJCWlmIChldnBsZW4gPD0gMCkKLUBAIC02NzUsOCArNjkxLDEwIEBAIGNpcGhlcl9zZXRfa2V5aXYoc3RydWN0IHNzaGNpcGhlcl9jdHggKmNjLCBjb25zdCB1X2NoYXIgKml2KQotIAkJYnJlYWs7Ci0gI2VuZGlmCi0gI2lmZGVmIFdJVEhfU1NIMQotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAJY2FzZSBTU0hfQ0lQSEVSXzNERVM6Ci0gCQlyZXR1cm4gc3NoMV8zZGVzX2l2KGNjLT5ldnAsIDEsICh1X2NoYXIgKilpdiwgMjQpOwotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICNlbmRpZgotIAlkZWZhdWx0OgotIAkJcmV0dXJuIFNTSF9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tcGtjczExLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tcGtjczExLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2RjNzNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9vcGVuc3NoLTcuMXAxLWNvbmRpdGlvbmFsLWNvbXBpbGUtZGVzLWluLXBrY3MxMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gZTgxNmZjMDZlNGY4MDcwYjA5ZTY3N2VhZDRkMjE3Njg3ODRlNGM5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE5IEphbiAyMDE3IDAzOjIxOjQwIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSByZW1vdmUgZGVzIGluIHBrY3MxMS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhhaXFpbmcgQmFpIDxIYWlxaW5nLkJhaUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBrY3MxMS5oIHwgOCArKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3BrY3MxMS5oIGIvcGtjczExLmgKLWluZGV4IGIwMWQ1OGYuLjk4YjM2ZTYgMTAwNjQ0Ci0tLS0gYS9wa2NzMTEuaAotKysrIGIvcGtjczExLmgKLUBAIC0zNDIsOSArMzQyLDExIEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBja19rZXlfdHlwZV90OwotICNkZWZpbmUgQ0tLX0dFTkVSSUNfU0VDUkVUCSgweDEwKQotICNkZWZpbmUgQ0tLX1JDMgkJCSgweDExKQotICNkZWZpbmUgQ0tLX1JDNAkJCSgweDEyKQotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAjZGVmaW5lIENLS19ERVMJCQkoMHgxMykKLSAjZGVmaW5lIENLS19ERVMyCQkoMHgxNCkKLSAjZGVmaW5lIENLS19ERVMzCQkoMHgxNSkKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAjZGVmaW5lIENLS19DQVNUCQkoMHgxNikKLSAjZGVmaW5lIENLS19DQVNUMwkJKDB4MTcpCi0gI2RlZmluZSBDS0tfQ0FTVDEyOAkJKDB4MTgpCi1AQCAtNTEyLDYgKzUxNCw3IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBja19tZWNoYW5pc21fdHlwZV90OwotICNkZWZpbmUgQ0tNX1JDMl9DQkNfUEFECQkJKDB4MTA1KQotICNkZWZpbmUgQ0tNX1JDNF9LRVlfR0VOCQkJKDB4MTEwKQotICNkZWZpbmUgQ0tNX1JDNAkJCQkoMHgxMTEpCi0rI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotICNkZWZpbmUgQ0tNX0RFU19LRVlfR0VOCQkJKDB4MTIwKQotICNkZWZpbmUgQ0tNX0RFU19FQ0IJCQkoMHgxMjEpCi0gI2RlZmluZSBDS01fREVTX0NCQwkJCSgweDEyMikKLUBAIC01MjUsNiArNTI4LDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNrX21lY2hhbmlzbV90eXBlX3Q7Ci0gI2RlZmluZSBDS01fREVTM19NQUMJCQkoMHgxMzQpCi0gI2RlZmluZSBDS01fREVTM19NQUNfR0VORVJBTAkJKDB4MTM1KQotICNkZWZpbmUgQ0tNX0RFUzNfQ0JDX1BBRAkJKDB4MTM2KQotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICNkZWZpbmUgQ0tNX0NETUZfS0VZX0dFTgkJKDB4MTQwKQotICNkZWZpbmUgQ0tNX0NETUZfRUNCCQkJKDB4MTQxKQotICNkZWZpbmUgQ0tNX0NETUZfQ0JDCQkJKDB4MTQyKQotQEAgLTYxMCw4ICs2MTQsMTAgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNrX21lY2hhbmlzbV90eXBlX3Q7Ci0gI2RlZmluZSBDS01fTUQ1X0tFWV9ERVJJVkFUSU9OCQkoMHgzOTApCi0gI2RlZmluZSBDS01fTUQyX0tFWV9ERVJJVkFUSU9OCQkoMHgzOTEpCi0gI2RlZmluZSBDS01fU0hBMV9LRVlfREVSSVZBVElPTgkJKDB4MzkyKQotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAjZGVmaW5lIENLTV9QQkVfTUQyX0RFU19DQkMJCSgweDNhMCkKLSAjZGVmaW5lIENLTV9QQkVfTUQ1X0RFU19DQkMJCSgweDNhMSkKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAjZGVmaW5lIENLTV9QQkVfTUQ1X0NBU1RfQ0JDCQkoMHgzYTIpCi0gI2RlZmluZSBDS01fUEJFX01ENV9DQVNUM19DQkMJCSgweDNhMykKLSAjZGVmaW5lIENLTV9QQkVfTUQ1X0NBU1Q1X0NCQwkJKDB4M2E0KQotQEAgLTYyMCw4ICs2MjYsMTAgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNrX21lY2hhbmlzbV90eXBlX3Q7Ci0gI2RlZmluZSBDS01fUEJFX1NIQTFfQ0FTVDEyOF9DQkMJKDB4M2E1KQotICNkZWZpbmUgQ0tNX1BCRV9TSEExX1JDNF8xMjgJCSgweDNhNikKLSAjZGVmaW5lIENLTV9QQkVfU0hBMV9SQzRfNDAJCSgweDNhNykKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gI2RlZmluZSBDS01fUEJFX1NIQTFfREVTM19FREVfQ0JDCSgweDNhOCkKLSAjZGVmaW5lIENLTV9QQkVfU0hBMV9ERVMyX0VERV9DQkMJKDB4M2E5KQotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICNkZWZpbmUgQ0tNX1BCRV9TSEExX1JDMl8xMjhfQ0JDCSgweDNhYSkKLSAjZGVmaW5lIENLTV9QQkVfU0hBMV9SQzJfNDBfQ0JDCQkoMHgzYWIpCi0gI2RlZmluZSBDS01fUEtDUzVfUEJLRDIJCQkoMHgzYjApCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjVwMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjVwMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZjYTZmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy41cDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotU1VNTUFSWSA9ICJBIHN1aXRlIG9mIHNlY3VyaXR5LXJlbGF0ZWQgbmV0d29yayB1dGlsaXRpZXMgYmFzZWQgb24gXAotdGhlIFNTSCBwcm90b2NvbCBpbmNsdWRpbmcgdGhlIHNzaCBjbGllbnQgYW5kIHNzaGQgc2VydmVyIgotREVTQ1JJUFRJT04gPSAiU2VjdXJlIHJsb2dpbi9yc2gvcmNwL3RlbG5ldCByZXBsYWNlbWVudCAoT3BlblNTSCkgXAotU3NoIChTZWN1cmUgU2hlbGwpIGlzIGEgcHJvZ3JhbSBmb3IgbG9nZ2luZyBpbnRvIGEgcmVtb3RlIG1hY2hpbmUgXAotYW5kIGZvciBleGVjdXRpbmcgY29tbWFuZHMgb24gYSByZW1vdGUgbWFjaGluZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2guY29tLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1lMzI2MDQ1NjU3ZTg0MjU0MWQzZjM1YWFkYTQ0MjUwNyIKLQotIyBvcGVuc3NsIDEuMSBwYXRjaGVzIGFyZSBwcm9wb3NlZCBhdCBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzaC9vcGVuc3NoLXBvcnRhYmxlL3B1bGwvNDgKLURFUEVORFMgPSAiemxpYiBvcGVuc3NsMTAiCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAub3BlbmJzZC5vcmcvcHViL09wZW5CU0QvT3BlblNTSC9wb3J0YWJsZS9vcGVuc3NoLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkX2NvbmZpZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hfY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vc3NoZC5zb2NrZXQgXAotICAgICAgICAgICBmaWxlOi8vc3NoZEAuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkZ2Vua2V5cy5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy45OV9zc2hkIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC10ZXN0LXN1cHBvcnQtZm9yLWJ1c3lib3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tY2lwaGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tcGtjczExLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wb3RlbnRpYWwtc2lnbmVkLW92ZXJmbG93LWluLXBvaW50ZXItYXJpdGhtYXRpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wZW5zc2gtRml4LXN5bnRheC1lcnJvci1vbi14MzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3NoZF9jaGVja19rZXlzIFwKLSAgICAgICAgICAgIgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3NoZCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjY1MmZkYzdkODM5MmYxMTJiZWYxMWNhY2Y3ZTY5ZTIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk4NDZlM2M1ZmFiOWYwNTQ3NDAwYjRkMmMwMTc5OTJmOTE0MjIyYjNmZDFmOGVlZTZjN2RjNmJjNWU1OWY5ZjAiCi0KLWluaGVyaXQgdXNlcmFkZCB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotVVNFUkFERF9QQVJBTV8ke1BOfS1zc2hkID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1ob21lLWRpciAvdmFyL3J1bi9zc2hkIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgc3NoZCIKLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1zc2hkID0gInNzaGQiCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zc2hkID0gImRlZmF1bHRzIDkiCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1zc2hkID0gInNzaGQuc29ja2V0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QKLQotIyBMRlMgc3VwcG9ydDoKLUNGTEFHUyArPSAiLURfX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0KLSMgbG9naW4gcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAotRVhUUkFfT0VDT05GID0gIidMT0dJTl9QUk9HUkFNPSR7YmFzZV9iaW5kaXJ9L2xvZ2luJyBcCi0gICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtemxpYi12ZXJzaW9uLWNoZWNrIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcHJpdnNlcC1wYXRoPS92YXIvcnVuL3NzaGQgXAotICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L3NzaCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXhhdXRoPS91c3IvYmluL3hhdXRoIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RyaXAgXAotICAgICAgICAgICAgICAgICIKLQotIyBTaW5jZSB3ZSBkbyBub3QgZGVwZW5kIG9uIGxpYmJzZCwgd2UgZG8gbm90IHdhbnQgY29uZmlndXJlIHRvIHVzZSBpdAotIyBqdXN0IGJlY2F1c2UgaXQgZmluZHMgbGlidXRpbC5oLiAgQnV0LCBzcGVjaWZ5aW5nIC0tZGlzYWJsZS1saWJ1dGlsCi0jIGNhdXNlcyBjb21waWxlIGVycm9ycywgc28uLi4KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfYnNkX2xpYnV0aWxfaD1ubyBhY19jdl9oZWFkZXJfbGlidXRpbF9oPW5vIgotCi0jIHBhc3N3ZCBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QQVRIX1BBU1NXRF9QUk9HPSR7YmluZGlyfS9wYXNzd2QiCi0KLSMgV2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gbGliYmxvY2tmaWxlCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX21haWxsb2NrX2g9bm8iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlleHBvcnQgTEQ9IiR7Q0N9IgotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRfY29uZmlnICR7Qn0vCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoX2NvbmZpZyAke0J9LwotCWlmIFsgISAtZSBhY2luY2x1ZGUubTQgLWEgLWUgYWNsb2NhbC5tNCBdOyB0aGVuCi0JCWNwIGFjbG9jYWwubTQgYWNpbmNsdWRlLm00Ci0JZmkKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICAgICAgIyBza2lwIHJlZ3Jlc3MvdW5pdHRlc3RzLyBiaW5hcmllczogdGhpcyB3aWxsIHNpbGVudGx5IHNraXAKLSAgICAgICAgIyB1bml0dGVzdHMgaW4gcnVuLXB0ZXN0cyB3aGljaCBpcyBnb29kIGJlY2F1c2UgdGhleSBhcmUgc28gc2xvdy4KLSAgICAgICAgb2VfcnVubWFrZSByZWdyZXNzL21vZHBpcGUgcmVncmVzcy9zZXR1aWQtYWxsb3dlZCByZWdyZXNzL25ldGNhdAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCi0JCWluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZAotCQlzZWQgLWkgLWUgJ3M6I1VzZVBBTSBubzpVc2VQQU0geWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCi0JZmkKLQotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgotCQlzZWQgLWkgLWUgJ3M6I1gxMUZvcndhcmRpbmcgbm86WDExRm9yd2FyZGluZyB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKLQlmaQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkCi0Jcm0gLWYgJHtEfSR7YmluZGlyfS9zbG9naW4gJHtEfSR7ZGF0YWRpcn0vU3NoLmJpbgotCXJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zc2hkICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfQotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuOTlfc3NoZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfc3NoZAotCWluc3RhbGwgLW0gMDc1NSAke1N9L2NvbnRyaWIvc3NoLWNvcHktaWQgJHtEfSR7YmluZGlyfQotCi0JIyBDcmVhdGUgY29uZmlnIGZpbGVzIGZvciByZWFkLW9ubHkgcm9vdGZzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zc2gKLQlpbnN0YWxsIC1tIDY0NCAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0Jc2VkIC1pICcvSG9zdEtleS9kJyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9yc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9kc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lY2RzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VkMjU1MTlfa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkZ2Vua2V5cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotCQktZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCi0JCS1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LyR7QlBOfSxnJyBcCi0JCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQotCi0Jc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LyR7QlBOfSxnJyBcCi0JCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkCi0KLQlpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9zc2hkX2NoZWNrX2tleXMgJHtEfSR7bGliZXhlY2Rpcn0vJHtCUE59L3NzaGRfY2hlY2tfa2V5cwotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLQlzZWQgLWkgLWUgInN8XlNGVFBTRVJWRVI9Lip8U0ZUUFNFUlZFUj0ke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyfCIgcmVncmVzcy90ZXN0LWV4ZWMuc2gKLQljcCAtciByZWdyZXNzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1rZXlnZW4gJHtQTn0tc2NwICR7UE59LXNzaCAke1BOfS1zc2hkICR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciIKLUZJTEVTXyR7UE59LXNjcCA9ICIke2JpbmRpcn0vc2NwLiR7QlBOfSIKLUZJTEVTXyR7UE59LXNzaCA9ICIke2JpbmRpcn0vc3NoLiR7QlBOfSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgotRklMRVNfJHtQTn0tc3NoZCA9ICIke3NiaW5kaXJ9L3NzaGQgJHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZCAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIgotRklMRVNfJHtQTn0tc3NoZCArPSAiJHtzeXNjb25mZGlyfS9zc2gvbW9kdWxpICR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5ICR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfc3NoZCAke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQiCi1GSUxFU18ke1BOfS1zc2hkICs9ICIke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMiCi1GSUxFU18ke1BOfS1zZnRwID0gIiR7YmluZGlyfS9zZnRwIgotRklMRVNfJHtQTn0tc2Z0cC1zZXJ2ZXIgPSAiJHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlciIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtiaW5kaXJ9L3NzaCogJHtsaWJleGVjZGlyfS9zc2gqIgotRklMRVNfJHtQTn0ta2V5Z2VuID0gIiR7YmluZGlyfS9zc2gta2V5Z2VuIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tc2NwICR7UE59LXNzaCAke1BOfS1zc2hkICR7UE59LWtleWdlbiIKLVJERVBFTkRTXyR7UE59LXNzaGQgKz0gIiR7UE59LWtleWdlbiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0tcGx1Z2luLWtleWluaXQgcGFtLXBsdWdpbi1sb2dpbnVpZCcsICcnLCBkKX0iCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIG1ha2UiCi0KLVJQUk9WSURFU18ke1BOfS1zc2ggPSAic3NoIgotUlBST1ZJREVTXyR7UE59LXNzaGQgPSAic3NoZCIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJkcm9wYmVhciIKLVJDT05GTElDVFNfJHtQTn0tc3NoZCA9ICJkcm9wYmVhciIKLVJDT05GTElDVFNfJHtQTn0ta2V5Z2VuID0gInNzaC1rZXlnZW4iCi0KLUNPTkZGSUxFU18ke1BOfS1zc2hkID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnIgotQ09ORkZJTEVTXyR7UE59LXNzaCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICI5MCIKLUFMVEVSTkFUSVZFXyR7UE59LXNjcCA9ICJzY3AiCi1BTFRFUk5BVElWRV8ke1BOfS1zc2ggPSAic3NoIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy42cDEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy42cDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTExZThkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjZwMS5iYgpAQCAtMCwwICsxLDE2NyBAQAorU1VNTUFSWSA9ICJBIHN1aXRlIG9mIHNlY3VyaXR5LXJlbGF0ZWQgbmV0d29yayB1dGlsaXRpZXMgYmFzZWQgb24gXAordGhlIFNTSCBwcm90b2NvbCBpbmNsdWRpbmcgdGhlIHNzaCBjbGllbnQgYW5kIHNzaGQgc2VydmVyIgorREVTQ1JJUFRJT04gPSAiU2VjdXJlIHJsb2dpbi9yc2gvcmNwL3RlbG5ldCByZXBsYWNlbWVudCAoT3BlblNTSCkgXAorU3NoIChTZWN1cmUgU2hlbGwpIGlzIGEgcHJvZ3JhbSBmb3IgbG9nZ2luZyBpbnRvIGEgcmVtb3RlIG1hY2hpbmUgXAorYW5kIGZvciBleGVjdXRpbmcgY29tbWFuZHMgb24gYSByZW1vdGUgbWFjaGluZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2guY29tLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT00Mjk2NThjNjYxMmYzYTliMTI5Mzc4MjM2NmFiMjlkOCIKKworIyBvcGVuc3NsIDEuMSBwYXRjaGVzIGFyZSBwcm9wb3NlZCBhdCBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzaC9vcGVuc3NoLXBvcnRhYmxlL3B1bGwvNDgKK0RFUEVORFMgPSAiemxpYiBvcGVuc3NsMTAiCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAub3BlbmJzZC5vcmcvcHViL09wZW5CU0QvT3BlblNTSC9wb3J0YWJsZS9vcGVuc3NoLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkX2NvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hfY29uZmlnIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vc3NoZC5zb2NrZXQgXAorICAgICAgICAgICBmaWxlOi8vc3NoZEAuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkZ2Vua2V5cy5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy45OV9zc2hkIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc3NoZF9jaGVja19rZXlzIFwKKyAgICAgICAgICAgZmlsZTovL2FkZC10ZXN0LXN1cHBvcnQtZm9yLWJ1c3lib3gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaXBoZXJzLW5vdC1zdXBwb3J0ZWQtYnktT3BlblNTTC1ERVMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9zc2hkIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDZhODg2OTkwMThlNWZlZjEzZDQ2NTVhYmZlZDFmNjMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTMyM2NhZWVkZGZlMTQ1YmFhYTBkYjE2ZTk4ZDc4NGIxZmJjN2RkNDM2YTZiZjFmNDc5ZGZkNWNkMWQyMTcyMyIKKworaW5oZXJpdCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitVU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgorSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorCisjIExGUyBzdXBwb3J0OgorQ0ZMQUdTICs9ICItRF9fRklMRV9PRkZTRVRfQklUUz02NCIKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCisKKyMgbG9naW4gcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAorRVhUUkFfT0VDT05GID0gIidMT0dJTl9QUk9HUkFNPSR7YmFzZV9iaW5kaXJ9L2xvZ2luJyBcCisgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtemxpYi12ZXJzaW9uLWNoZWNrIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtcHJpdnNlcC1wYXRoPS92YXIvcnVuL3NzaGQgXAorICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L3NzaCBcCisgICAgICAgICAgICAgICAgLS13aXRoLXhhdXRoPS91c3IvYmluL3hhdXRoIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RyaXAgXAorICAgICAgICAgICAgICAgICIKKworIyBtdXNsIGRvZXNuJ3QgaW1wbGVtZW50IHd0bXAvdXRtcAorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS13dG1wIgorCisjIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0CisjIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKKyMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCisKKyMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKKworIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCWV4cG9ydCBMRD0iJHtDQ30iCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgICAgICMgc2tpcCByZWdyZXNzL3VuaXR0ZXN0cy8gYmluYXJpZXM6IHRoaXMgd2lsbCBzaWxlbnRseSBza2lwCisgICAgICAgICMgdW5pdHRlc3RzIGluIHJ1bi1wdGVzdHMgd2hpY2ggaXMgZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHNvIHNsb3cuCisgICAgICAgIG9lX3J1bm1ha2UgcmVncmVzcy9tb2RwaXBlIHJlZ3Jlc3Mvc2V0dWlkLWFsbG93ZWQgcmVncmVzcy9uZXRjYXQKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQKKwkJc2VkIC1pIC1lICdzOiNVc2VQQU0gbm86VXNlUEFNIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZworCWZpCisKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KKwkJc2VkIC1pIC1lICdzOiNYMTFGb3J3YXJkaW5nIG5vOlgxMUZvcndhcmRpbmcgeWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCisJZmkKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCXJtIC1mICR7RH0ke2JpbmRpcn0vc2xvZ2luICR7RH0ke2RhdGFkaXJ9L1NzaC5iaW4KKwlybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0KKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3NzaGQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQKKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS9jb250cmliL3NzaC1jb3B5LWlkICR7RH0ke2JpbmRpcn0KKworCSMgQ3JlYXRlIGNvbmZpZyBmaWxlcyBmb3IgcmVhZC1vbmx5IHJvb3RmcworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NoCisJaW5zdGFsbCAtbSA2NDQgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCXNlZCAtaSAnL0hvc3RLZXkvZCcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfcnNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAorCQktZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKKworCXNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vc3NoZF9jaGVja19rZXlzICR7RH0ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCisJY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQorfQorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitQQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCitGSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKK0ZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKK0ZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgorRklMRVNfJHtQTn0tc3NoZCArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzIgorRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKK0ZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKK0ZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCitSREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciBtYWtlIgorCitSUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKK1JQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCisKK1JDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCitSQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCitSQ09ORkxJQ1RTXyR7UE59LWtleWdlbiA9ICJzc2gta2V5Z2VuIgorCitDT05GRklMRVNfJHtQTn0tc3NoZCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyIKK0NPTkZGSUxFU18ke1BOfS1zc2ggPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiOTAiCitBTFRFUk5BVElWRV8ke1BOfS1zY3AgPSAic2NwIgorQUxURVJOQVRJVkVfJHtQTn0tc3NoID0gInNzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhlNTRkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1Gcm9tIDgzZjMxOGQ2OGJiZGFiMWNhODk4Yzk0NTc2YTgzOGNjOTdkZjQ3MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWR3aWcgTnVzc2VsIDxsdWR3aWcubnVzc2VsQHN1c2UuZGU+Ci1EYXRlOiBXZWQsIDIxIEFwciAyMDEwIDE1OjUyOjEwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsc28gY3JlYXRlIG9sZCBoYXNoIGZvciBjb21wYXRpYmlsaXR5Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2RlYmlhbl0KLQotZGlmZiAtLWdpdCBhL3Rvb2xzL2NfcmVoYXNoLmluIGIvdG9vbHMvY19yZWhhc2guaW4KLWluZGV4IGIwODZmZjkuLmI3NzdkNzkgMTAwNjQ0Ci0tLS0gYS90b29scy9jX3JlaGFzaC5pbgotKysrIGIvdG9vbHMvY19yZWhhc2guaW4KLUBAIC04LDggKzgsNiBAQCBteSAkcHJlZml4OwotIAotIG15ICRvcGVuc3NsID0gJEVOVntPUEVOU1NMfSB8fCAib3BlbnNzbCI7Ci0gbXkgJHB3ZDsKLS1teSAkeDUwOWhhc2ggPSAiLXN1YmplY3RfaGFzaCI7Ci0tbXkgJGNybGhhc2ggPSAiLWhhc2giOwotIG15ICR2ZXJib3NlID0gMDsKLSBteSAkc3ltbGlua19leGlzdHM9ZXZhbCB7c3ltbGluaygiIiwiIik7IDF9OwotIG15ICRyZW1vdmVsaW5rcyA9IDE7Ci1AQCAtMTgsMTAgKzE2LDcgQEAgbXkgJHJlbW92ZWxpbmtzID0gMTsKLSB3aGlsZSAoICRBUkdWWzBdID1+IC9eLS8gKSB7Ci0gICAgIG15ICRmbGFnID0gc2hpZnQgQEFSR1Y7Ci0gICAgIGxhc3QgaWYgKCAkZmxhZyBlcSAnLS0nKTsKLS0gICAgaWYgKCAkZmxhZyBlcSAnLW9sZCcpIHsKLS0JICAgICR4NTA5aGFzaCA9ICItc3ViamVjdF9oYXNoX29sZCI7Ci0tCSAgICAkY3JsaGFzaCA9ICItaGFzaF9vbGQiOwotLSAgICB9IGVsc2lmICggJGZsYWcgZXEgJy1oJykgewotKyAgICBpZiAoICRmbGFnIGVxICctaCcpIHsKLSAJICAgIGhlbHAoKTsKLSAgICAgfSBlbHNpZiAoICRmbGFnIGVxICctbicgKSB7Ci0gCSAgICAkcmVtb3ZlbGlua3MgPSAwOwotQEAgLTExMyw3ICsxMDgsOSBAQCBzdWIgaGFzaF9kaXIgewotIAkJCW5leHQ7Ci0gCQl9Ci0gCQlsaW5rX2hhc2hfY2VydCgkZm5hbWUpIGlmKCRjZXJ0KTsKLSsJCWxpbmtfaGFzaF9jZXJ0X29sZCgkZm5hbWUpIGlmKCRjZXJ0KTsKLSAJCWxpbmtfaGFzaF9jcmwoJGZuYW1lKSBpZigkY3JsKTsKLSsJCWxpbmtfaGFzaF9jcmxfb2xkKCRmbmFtZSkgaWYoJGNybCk7Ci0gCX0KLSB9Ci0gCi1AQCAtMTQ2LDYgKzE0Myw3IEBAIHN1YiBjaGVja19maWxlIHsKLSAKLSBzdWIgbGlua19oYXNoX2NlcnQgewotIAkJbXkgJGZuYW1lID0gJF9bMF07Ci0rCQlteSAkeDUwOWhhc2ggPSAkX1sxXSB8fCAnLXN1YmplY3RfaGFzaCc7Ci0gCQkkZm5hbWUgPX4gcy8nLydcXCcnL2c7Ci0gCQlteSAoJGhhc2gsICRmcHJpbnQpID0gYCIkb3BlbnNzbCIgeDUwOSAkeDUwOWhhc2ggLWZpbmdlcnByaW50IC1ub291dCAtaW4gIiRmbmFtZSJgOwotIAkJY2hvbXAgJGhhc2g7Ci1AQCAtMTc2LDExICsxNzQsMjEgQEAgc3ViIGxpbmtfaGFzaF9jZXJ0IHsKLSAJCSRoYXNobGlzdHskaGFzaH0gPSAkZnByaW50OwotIH0KLSAKLStzdWIgbGlua19oYXNoX2NlcnRfb2xkIHsKLSsJCWxpbmtfaGFzaF9jZXJ0KCRfWzBdLCAnLXN1YmplY3RfaGFzaF9vbGQnKTsKLSt9Ci0rCi0rc3ViIGxpbmtfaGFzaF9jcmxfb2xkIHsKLSsJCWxpbmtfaGFzaF9jcmwoJF9bMF0sICctaGFzaF9vbGQnKTsKLSt9Ci0rCi0rCi0gIyBTYW1lIGFzIGFib3ZlIGV4Y2VwdCBmb3IgYSBDUkwuIENSTCBsaW5rcyBhcmUgb2YgdGhlIGZvcm0gPGhhc2g+LnI8bj4KLSAKLSBzdWIgbGlua19oYXNoX2NybCB7Ci0gCQlteSAkZm5hbWUgPSAkX1swXTsKLSsJCW15ICRjcmxoYXNoID0gJF9bMV0gfHwgIi1oYXNoIjsKLSAJCSRmbmFtZSA9fiBzLycvJ1xcJycvZzsKLSAJCW15ICgkaGFzaCwgJGZwcmludCkgPSBgIiRvcGVuc3NsIiBjcmwgJGNybGhhc2ggLWZpbmdlcnByaW50IC1ub291dCAtaW4gJyRmbmFtZSdgOwotIAkJY2hvbXAgJGhhc2g7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWQ0MzI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZGViaWFuXQotCi1JbmRleDogb3BlbnNzbC0xLjAuMi9Db25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yLm9yaWcvQ29uZmlndXJlCi0rKysgb3BlbnNzbC0xLjAuMi9Db25maWd1cmUKLUBAIC0xMDcsNiArMTA3LDEwIEBAIG15ICRnY2NfZGV2dGVhbV93YXJuID0gIi1XYWxsIC1wZWRhbnRpYwotIAotIG15ICRjbGFuZ19kaXNhYmxlZF93YXJuaW5ncyA9ICItV25vLWxhbmd1YWdlLWV4dGVuc2lvbi10b2tlbiAtV25vLWV4dGVuZGVkLW9mZnNldG9mIC1Xbm8tcGFkZGVkIC1Xbm8tc2hvcnRlbi02NC10by0zMiAtV25vLWZvcm1hdC1ub25saXRlcmFsIC1Xbm8tbWlzc2luZy1ub3JldHVybiAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby1zaWduLWNvbnZlcnNpb24gLVduby11bnJlYWNoYWJsZS1jb2RlIC1Xbm8tY29udmVyc2lvbiAtV25vLWRvY3VtZW50YXRpb24gLVduby1taXNzaW5nLXZhcmlhYmxlLWRlY2xhcmF0aW9ucyAtV25vLWNhc3QtYWxpZ24gLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcy1kaXNjYXJkcy1xdWFsaWZpZXJzIC1Xbm8tbWlzc2luZy12YXJpYWJsZS1kZWNsYXJhdGlvbnMgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV25vLXVudXNlZC1tYWNyb3MgLVduby1kaXNhYmxlZC1tYWNyby1leHBhbnNpb24gLVduby1jb25kaXRpb25hbC11bmluaXRpYWxpemVkIC1Xbm8tc3dpdGNoLWVudW0iOwotIAotKyMgVGhlcmUgYXJlIG5vIHNlcGFyYXRlIENGTEFHUy9DUFBGTEFHUy9MREZMQUdTLCBzZXQgZXZlcnl0aGluZyBpbiBDRkxBR1MKLStteSAkZGViaWFuX2NmbGFncyA9IGBkcGtnLWJ1aWxkZmxhZ3MgLS1nZXQgQ0ZMQUdTYCAuIGBkcGtnLWJ1aWxkZmxhZ3MgLS1nZXQgQ1BQRkxBR1NgIC4gYGRwa2ctYnVpbGRmbGFncyAtLWdldCBMREZMQUdTYCAuICItV2EsLS1ub2V4ZWNzdGFjayAtV2FsbCI7Ci0rJGRlYmlhbl9jZmxhZ3MgPX4gcy9cbi8gL2c7Ci0rCi0gbXkgJHN0cmljdF93YXJuaW5ncyA9IDA7Ci0gCi0gbXkgJHg4Nl9nY2NfZGVzPSJERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMIjsKLUBAIC0zNDMsNiArMzQ3LDU1IEBAIG15ICV0YWJsZT0oCi0gIm9zZjEtYWxwaGEtY2MiLCAgImNjOi1zdGQxIC10dW5lIGhvc3QgLU80IC1yZWFkb25seV9zdHJpbmdzOjoodW5rbm93bik6OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSzoke2FscGhhX2FzbX06ZGxmY246YWxwaGEtb3NmMS1zaGFyZWQ6Ojouc28iLAotICJ0cnU2NC1hbHBoYS1jYyIsICJjYzotc3RkMSAtdHVuZSBob3N0IC1mYXN0IC1yZWFkb25seV9zdHJpbmdzOjotcHRocmVhZDo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LOiR7YWxwaGFfYXNtfTpkbGZjbjphbHBoYS1vc2YxLXNoYXJlZDo6LW1zeW06LnNvIiwKLSAKLSsjIERlYmlhbiBHTlUvKiAodmFyaW91cyBhcmNoaXRlY3R1cmVzKQotKyJkZWJpYW4tYWxwaGEiLCJnY2M6LURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWFscGhhLWV2NCIsImdjYzotRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tY3B1PWV2NDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWFscGhhLWV2NSIsImdjYzotRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tY3B1PWV2NTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWFybTY0IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tYXJtZWwiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tYXJtaGYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tYW1kNjQiLCAiZ2NjOi1tNjQgLURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1ETUQzMl9SRUdfVD1pbnQ6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjoiLAotKyJkZWJpYW4tYXZyMzIiLCAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtZm9taXQtZnJhbWUtcG9pbnRlcjo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HX0JGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1rZnJlZWJzZC1hbWQ2NCIsImdjYzotbTY0IC1ETF9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc30gLURNRDMyX1JFR19UPWludDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1rZnJlZWJzZC1pMzg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk0ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1ocHBhIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1odXJkLWkzODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgLU8zIC1XYSwtLW5vZXhlY3N0YWNrIC1nIC1tdHVuZT1pNDg2IC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4taWE2NCIsImdjYzotRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1VOUk9MTCBERVNfSU5UOiR7aWE2NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4taTM4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1pMzg2LWk0ODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNDg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4taTM4Ni1pNTg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWFyY2g9aTU4Njo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWkzODYtaTY4Ni9jbW92IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWFyY2g9aTY4Njo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW02OGsiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW1pcHMiLCAgICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbWlwc2VsIiwgICAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW1pcHNuMzIiLCAgICJtaXBzNjQtbGludXgtZ251YWJpbjMyLWdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1taXBzbjMyZWwiLCAgICJtaXBzNjRlbC1saW51eC1nbnVhYmluMzItZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW1pcHM2NCIsICAgIm1pcHM2NC1saW51eC1nbnVhYmk2NC1nY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbWlwczY0ZWwiLCAgICJtaXBzNjRlbC1saW51eC1nbnVhYmk2NC1nY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbmV0YnNkLWkzODYiLAkiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc30gLW00ODY6Oih1bmtub3duKTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW5ldGJzZC1tNjhrIiwJImdjYzotREJfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9OjoodW5rbm93bik6OjpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVggREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW5ldGJzZC1zcGFyYyIsCSJnY2M6LURCX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbXY4OjoodW5rbm93bik6OjpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVggREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW9wZW5ic2QtYWxwaGEiLCJnY2M6LURURVJNSU9TICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW9wZW5ic2QtaTM4NiIsICAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc30gLW00ODY6Oih1bmtub3duKTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9hc219OmEub3V0OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1vcGVuYnNkLW1pcHMiLCJnY2M6LURMX0VORElBTiAke2RlYmlhbl9jZmxhZ3N9OjoodW5rbm93bik6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBSQzRfQ0hBUiBERVNfVU5ST0xMIERFU19SSVNDMiBERVNfUFRSIEJGX1BUUjoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW9yMWsiLCAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1wb3dlcnBjIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzMyX2FzbX06bGludXgzMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXBvd2VycGNzcGUiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjMzJfYXNtfTpsaW51eDMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tcHBjNjQiLCJnY2M6LW02NCAtREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzY0X2FzbX06bGludXg2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1wcGM2NGVsIiwiZ2NjOi1tNjQgLURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGM2NF9hc219OmxpbnV4NjRsZTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zMzkwIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLCAKLSsiZGViaWFuLXMzOTB4IiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zaDMiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc2g0IiwgICAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXNoM2ViIiwgICAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXNoNGViIiwgICAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW0zMnIiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc3BhcmMiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc3BhcmMtdjgiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tY3B1PXY4IC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y4X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zcGFyYy12OSIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9djkgLVdhLC1BdjhwbHVzIC1EVUxUUkFTUEFSQyAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc3BhcmM2NCIsImdjYzotbTY0IC1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtRFVMVFJBU1BBUkMgLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXgzMiIsImdjYzotbXgzMiAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLURNRDMyX1JFR19UPWludDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1teDMyOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6eDMyIiwKLSsKLSAjIyMjCi0gIyMjIyBWYXJpZXR5IG9mIExJTlVYOi0pCi0gIyMjIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTViZmExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC0xLjAuMmEteDMyLWFzbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLWh0dHBzOi8vcnQub3BlbnNzbC5vcmcvVGlja2V0L0Rpc3BsYXkuaHRtbD9pZD0zNzU5JnVzZXI9Z3Vlc3QmcGFzcz1ndWVzdAotCi1Gcm9tIDYyNTdkNTliM2E2OGQyZmViOWQ2NDMxN2ExYzU1NmRjMzgxM2VlNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOiBTYXQsIDIxIE1hciAyMDE1IDA2OjAxOjI1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNyeXB0bzogdXNlIGJpZ2ludCBpbiB4ODYtNjQgcGVybAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IENyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+Ci0KLVdoZW4gYnVpbGRpbmcgb24geDMyIHN5c3RlbXMgd2hlcmUgdGhlIGRlZmF1bHQgdHlwZSBpcyAzMmJpdCwgbWFrZSBzdXJlCi13ZSBjYW4gdHJhbnNwYXJlbnRseSByZXByZXNlbnQgNjRiaXQgaW50ZWdlcnMuICBPdGhlcndpc2Ugd2UgZW5kIHVwIHdpdGgKLWJ1aWxkIGVycm9ycyBsaWtlOgotL3Vzci9iaW4vcGVybCBhc20vZ2hhc2gteDg2XzY0LnBsIGVsZiA+IGdoYXNoLXg4Nl82NC5zCi1JbnRlZ2VyIG92ZXJmbG93IGluIGhleGFkZWNpbWFsIG51bWJlciBhdCBhc20vLi4vLi4vcGVybGFzbS94ODZfNjQteGxhdGUucGwgbGluZSAyMDEsIDw+IGxpbmUgODkwLgotLi4uCi1naGFzaC14ODZfNjQuczogQXNzZW1ibGVyIG1lc3NhZ2VzOgotZ2hhc2gteDg2XzY0LnM6ODkwOiBFcnJvcjoganVuayAnLjE1NDczMzU1NDc5OTk1ZSsxOScgYWZ0ZXIgZXhwcmVzc2lvbgotCi1XZSBkb24ndCBlbmFibGUgdGhpcyBnbG9iYWxseSBhcyB0aGVyZSBhcmUgc29tZSBjYXNlcyB3aGVyZSB3ZSdkIGdldAotMzJiaXQgdmFsdWVzIGludGVycHJldGVkIGFzIHVuc2lnbmVkIHdoZW4gd2UgbmVlZCB0aGVtIGFzIHNpZ25lZC4KLQotUmVwb3J0ZWQtYnk6IEJlcnRyYW5kIEphY3F1aW4gPGJlcnRyYW5kQGphY3F1aW4uYnpoPgotVVJMOiBodHRwczovL2J1Z3MuZ2VudG9vLm9yZy81NDI2MTgKLS0tLQotIGNyeXB0by9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbCB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NyeXB0by9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbCBiL2NyeXB0by9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbAotaW5kZXggYWFlODI4OC4uMGJmOTc3NCAxMDA3NTUKLS0tLSBhL2NyeXB0by9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbAotKysrIGIvY3J5cHRvL3Blcmxhc20veDg2XzY0LXhsYXRlLnBsCi1AQCAtMTk1LDYgKzE5NSwxMCBAQCBteSAlZ2xvYmFsczsKLSAgICAgc3ViIG91dCB7Ci0gICAgIAlteSAkc2VsZiA9IHNoaWZ0OwotIAotKwkjIFdoZW4gYnVpbGRpbmcgb24geDMyIEFCSXMsIHRoZSBleHBhbmRlZCBoZXggdmFsdWUgbWlnaHQgYmUgdG9vCi0rCSMgYmlnIHRvIGZpdCBpbnRvIDMyYml0cy4gIEVuYWJsZSB0cmFuc3BhcmVudCA2NGJpdCBzdXBwb3J0IGhlcmUKLSsJIyBzbyB3ZSBjYW4gc2FmZWx5IHByaW50IGl0IG91dC4KLSsJdXNlIGJpZ2ludDsKLSAJaWYgKCRnYXMpIHsKLSAJICAgICMgU29sYXJpcyAvdXNyL2Njcy9iaW4vYXMgY2FuJ3QgaGFuZGxlIG11bHRpcGxpY2F0aW9ucwotIAkgICAgIyBpbiAkc2VsZi0+e3ZhbHVlfQotLS0gCi0yLjMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9NYWtlZmlsZXMtcHRlc3QucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL01ha2VmaWxlcy1wdGVzdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vY29uZmlndXJlLXRhcmdldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgyMGUzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaApAQCAtMCwwICsxLDcxIEBACitGcm9tIDgzZjMxOGQ2OGJiZGFiMWNhODk4Yzk0NTc2YTgzOGNjOTdkZjQ3MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMdWR3aWcgTnVzc2VsIDxsdWR3aWcubnVzc2VsQHN1c2UuZGU+CitEYXRlOiBXZWQsIDIxIEFwciAyMDEwIDE1OjUyOjEwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGFsc28gY3JlYXRlIG9sZCBoYXNoIGZvciBjb21wYXRpYmlsaXR5CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2RlYmlhbl0KKworSW5kZXg6IG9wZW5zc2wtMS4wLjJuL3Rvb2xzL2NfcmVoYXNoLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbnNzbC0xLjAuMm4ub3JpZy90b29scy9jX3JlaGFzaC5pbgorKysrIG9wZW5zc2wtMS4wLjJuL3Rvb2xzL2NfcmVoYXNoLmluCitAQCAtOCw4ICs4LDYgQEAgbXkgJHByZWZpeDsKKyAKKyBteSAkb3BlbnNzbCA9ICRFTlZ7T1BFTlNTTH0gfHwgIm9wZW5zc2wiOworIG15ICRwd2Q7CistbXkgJHg1MDloYXNoID0gIi1zdWJqZWN0X2hhc2giOworLW15ICRjcmxoYXNoID0gIi1oYXNoIjsKKyBteSAkdmVyYm9zZSA9IDA7CisgbXkgJHN5bWxpbmtfZXhpc3RzPWV2YWwge3N5bWxpbmsoIiIsIiIpOyAxfTsKKyBteSAkcmVtb3ZlbGlua3MgPSAxOworQEAgLTE4LDEwICsxNiw3IEBAIG15ICRyZW1vdmVsaW5rcyA9IDE7Cisgd2hpbGUgKCAkQVJHVlswXSA9fiAvXi0vICkgeworICAgICBteSAkZmxhZyA9IHNoaWZ0IEBBUkdWOworICAgICBsYXN0IGlmICggJGZsYWcgZXEgJy0tJyk7CistICAgIGlmICggJGZsYWcgZXEgJy1vbGQnKSB7CistCSAgICAkeDUwOWhhc2ggPSAiLXN1YmplY3RfaGFzaF9vbGQiOworLQkgICAgJGNybGhhc2ggPSAiLWhhc2hfb2xkIjsKKy0gICAgfSBlbHNpZiAoICRmbGFnIGVxICctaCcpIHsKKysgICAgaWYgKCAkZmxhZyBlcSAnLWgnKSB7CisgCSAgICBoZWxwKCk7CisgICAgIH0gZWxzaWYgKCAkZmxhZyBlcSAnLW4nICkgeworIAkgICAgJHJlbW92ZWxpbmtzID0gMDsKK0BAIC0xMTMsNyArMTA4LDkgQEAgc3ViIGhhc2hfZGlyIHsKKyAJCQluZXh0OworIAkJfQorIAkJbGlua19oYXNoX2NlcnQoJGZuYW1lKSBpZigkY2VydCk7CisrCQlsaW5rX2hhc2hfY2VydF9vbGQoJGZuYW1lKSBpZigkY2VydCk7CisgCQlsaW5rX2hhc2hfY3JsKCRmbmFtZSkgaWYoJGNybCk7CisrCQlsaW5rX2hhc2hfY3JsX29sZCgkZm5hbWUpIGlmKCRjcmwpOworIAl9CisgfQorIAorQEAgLTE0Niw2ICsxNDMsNyBAQCBzdWIgY2hlY2tfZmlsZSB7CisgCisgc3ViIGxpbmtfaGFzaF9jZXJ0IHsKKyAJCW15ICRmbmFtZSA9ICRfWzBdOworKwkJbXkgJHg1MDloYXNoID0gJF9bMV0gfHwgJy1zdWJqZWN0X2hhc2gnOworIAkJJGZuYW1lID1+IHMvJy8nXFwnJy9nOworIAkJbXkgKCRoYXNoLCAkZnByaW50KSA9IGAiJG9wZW5zc2wiIHg1MDkgJHg1MDloYXNoIC1maW5nZXJwcmludCAtbm9vdXQgLWluICIkZm5hbWUiYDsKKyAJCWNob21wICRoYXNoOworQEAgLTE3NywxMCArMTc1LDIwIEBAIHN1YiBsaW5rX2hhc2hfY2VydCB7CisgCQkkaGFzaGxpc3R7JGhhc2h9ID0gJGZwcmludDsKKyB9CisgCisrc3ViIGxpbmtfaGFzaF9jZXJ0X29sZCB7CisrCQlsaW5rX2hhc2hfY2VydCgkX1swXSwgJy1zdWJqZWN0X2hhc2hfb2xkJyk7CisrfQorKworK3N1YiBsaW5rX2hhc2hfY3JsX29sZCB7CisrCQlsaW5rX2hhc2hfY3JsKCRfWzBdLCAnLWhhc2hfb2xkJyk7CisrfQorKworKworICMgU2FtZSBhcyBhYm92ZSBleGNlcHQgZm9yIGEgQ1JMLiBDUkwgbGlua3MgYXJlIG9mIHRoZSBmb3JtIDxoYXNoPi5yPG4+CisgCisgc3ViIGxpbmtfaGFzaF9jcmwgeworIAkJbXkgJGZuYW1lID0gJF9bMF07CisrCQlteSAkY3JsaGFzaCA9ICRfWzFdIHx8ICItaGFzaCI7CisgCQkkZm5hbWUgPX4gcy8nLydcXCcnL2c7CisgCQlteSAoJGhhc2gsICRmcHJpbnQpID0gYCIkb3BlbnNzbCIgY3JsICRjcmxoYXNoIC1maW5nZXJwcmludCAtbm9vdXQgLWluICckZm5hbWUnYDsKKyAJCWNob21wICRoYXNoOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vY2EucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9jYS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vY2EucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL2NhLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZDkyYmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaApAQCAtMCwwICsxLDczIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtkZWJpYW5dCisKK0luZGV4OiBvcGVuc3NsLTEuMC4ybi9Db25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuc3NsLTEuMC4ybi5vcmlnL0NvbmZpZ3VyZQorKysrIG9wZW5zc2wtMS4wLjJuL0NvbmZpZ3VyZQorQEAgLTEzMyw2ICsxMzMsMTAgQEAgbXkgJGNsYW5nX2RldnRlYW1fd2FybiA9ICItV25vLXVudXNlZC1wYQorICMgV2FybiB0aGF0ICJtYWtlIGRlcGVuZCIgc2hvdWxkIGJlIHJ1bj8KKyBteSAkd2Fybl9tYWtlX2RlcGVuZCA9IDA7CisgCisrIyBUaGVyZSBhcmUgbm8gc2VwYXJhdGUgQ0ZMQUdTL0NQUEZMQUdTL0xERkxBR1MsIHNldCBldmVyeXRoaW5nIGluIENGTEFHUworK215ICRkZWJpYW5fY2ZsYWdzID0gYGRwa2ctYnVpbGRmbGFncyAtLWdldCBDRkxBR1NgIC4gYGRwa2ctYnVpbGRmbGFncyAtLWdldCBDUFBGTEFHU2AgLiBgZHBrZy1idWlsZGZsYWdzIC0tZ2V0IExERkxBR1NgIC4gIi1XYSwtLW5vZXhlY3N0YWNrIC1XYWxsIjsKKyskZGViaWFuX2NmbGFncyA9fiBzL1xuLyAvZzsKKysKKyBteSAkc3RyaWN0X3dhcm5pbmdzID0gMDsKKyAKKyBteSAkeDg2X2djY19kZXM9IkRFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwiOworQEAgLTM2OSw2ICszNzMsNTUgQEAgbXkgJXRhYmxlPSgKKyAib3NmMS1hbHBoYS1jYyIsICAiY2M6LXN0ZDEgLXR1bmUgaG9zdCAtTzQgLXJlYWRvbmx5X3N0cmluZ3M6Oih1bmtub3duKTo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LOiR7YWxwaGFfYXNtfTpkbGZjbjphbHBoYS1vc2YxLXNoYXJlZDo6Oi5zbyIsCisgInRydTY0LWFscGhhLWNjIiwgImNjOi1zdGQxIC10dW5lIGhvc3QgLWZhc3QgLXJlYWRvbmx5X3N0cmluZ3M6Oi1wdGhyZWFkOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTks6JHthbHBoYV9hc219OmRsZmNuOmFscGhhLW9zZjEtc2hhcmVkOjotbXN5bTouc28iLAorIAorKyMgRGViaWFuIEdOVS8qICh2YXJpb3VzIGFyY2hpdGVjdHVyZXMpCisrImRlYmlhbi1hbHBoYSIsImdjYzotRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tYWxwaGEtZXY0IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9ZXY0OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tYWxwaGEtZXY1IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9ZXY1OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tYXJtNjQiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hcm1lbCIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hcm1oZiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hbWQ2NCIsICJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLURNRDMyX1JFR19UPWludDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OiIsCisrImRlYmlhbi1hdnIzMiIsICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1mb21pdC1mcmFtZS1wb2ludGVyOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkdfQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWtmcmVlYnNkLWFtZDY0IiwiZ2NjOi1tNjQgLURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWtmcmVlYnNkLWkzODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbWFyY2g9aTQ4Njo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWhwcGEiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWh1cmQtaTM4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAtTzMgLVdhLC0tbm9leGVjc3RhY2sgLWcgLW10dW5lPWk0ODYgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1pYTY0IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfVU5ST0xMIERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1pMzg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWkzODYtaTQ4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk0ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1pMzg2LWk1ODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNTg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4taTM4Ni1pNjg2L2Ntb3YiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNjg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbTY4ayIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVg6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbWlwcyIsICAgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1taXBzZWwiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbWlwc24zMiIsICAgIm1pcHM2NC1saW51eC1nbnVhYmluMzItZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW1pcHNuMzJlbCIsICAgIm1pcHM2NGVsLWxpbnV4LWdudWFiaW4zMi1nY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbWlwczY0IiwgICAibWlwczY0LWxpbnV4LWdudWFiaTY0LWdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1taXBzNjRlbCIsICAgIm1pcHM2NGVsLWxpbnV4LWdudWFiaTY0LWdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1uZXRic2QtaTM4NiIsCSJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbTQ4Njo6KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbmV0YnNkLW02OGsiLAkiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbmV0YnNkLXNwYXJjIiwJImdjYzotREJfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1tdjg6Oih1bmtub3duKTo6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tb3BlbmJzZC1hbHBoYSIsImdjYzotRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfTo6KHVua25vd24pOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBERVNfSU5UIERFU19QVFIgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tb3BlbmJzZC1pMzg2IiwgICJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbTQ4Njo6KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2FzbX06YS5vdXQ6ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW9wZW5ic2QtbWlwcyIsImdjYzotRExfRU5ESUFOICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYIFJDNF9DSEFSIERFU19VTlJPTEwgREVTX1JJU0MyIERFU19QVFIgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tb3IxayIsICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXBvd2VycGMiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjMzJfYXNtfTpsaW51eDMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tcG93ZXJwY3NwZSIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGMzMl9hc219OmxpbnV4MzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1wcGM2NCIsImdjYzotbTY0IC1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjNjRfYXNtfTpsaW51eDY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXBwYzY0ZWwiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzY0X2FzbX06bGludXg2NGxlOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXMzOTAiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6UkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsIAorKyJkZWJpYW4tczM5MHgiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXNoMyIsICAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zaDQiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tc2gzZWIiLCAgICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tc2g0ZWIiLCAgICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbTMyciIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zcGFyYyIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zcGFyYy12OCIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9djggLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjhfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXNwYXJjLXY5IiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT12OSAtV2EsLUF2OHBsdXMgLURVTFRSQVNQQVJDIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zcGFyYzY0IiwiZ2NjOi1tNjQgLURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1EVUxUUkFTUEFSQyAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4teDMyIiwiZ2NjOi1teDMyIC1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW14MzI6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojp4MzIiLAorKworICMjIyMKKyAjIyMjIFZhcmlldHkgb2YgTElOVVg6LSkKKyAjIyMjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9tYW4tZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vbWFuLWRpci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbWFuLWRpci5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vbWFuLWRpci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9uby1ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL25vLXJwYXRoLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9uby1ycGF0aC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vbm8tcnBhdGgucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vcGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vcGljLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9waWMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL3BpYy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZmluZC5wbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZmluZC5wbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9maW5kLnBsCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2ZpbmQucGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb2UtbGRmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb2UtbGRmbGFncy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vZS1sZGZsYWdzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL29lLWxkZmxhZ3MucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC1jX3JlaGFzaC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb3BlbnNzbC1jX3JlaGFzaC5zaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLWNfcmVoYXNoLnNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL29wZW5zc2wtY19yZWhhc2guc2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLXV0aWwtcGVybHBhdGgucGwtY3dkLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcGFyYWxsZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3BhcmFsbGVsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3BhcmFsbGVsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3BhcmFsbGVsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3B0ZXN0LWRlcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3B0ZXN0LWRlcHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcHRlc3QtZGVwcy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9wdGVzdC1kZXBzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3JlcHJvZHVjaWJsZS1jZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3JlcHJvZHVjaWJsZS1jZmxhZ3MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcmVwcm9kdWNpYmxlLWNmbGFncy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9yZXByb2R1Y2libGUtY2ZsYWdzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3JlcHJvZHVjaWJsZS1ta2J1aWxkaW5mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9ydW4tcHRlc3QKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vcnVuLXB0ZXN0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3NoYXJlZC1saWJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9zaGFyZWQtbGlicy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9zaGFyZWQtbGlicy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9zaGFyZWQtbGlicy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtUmVtb3ZlLXRlc3QtdGhhdC1yZXF1aXJlcy1ydW5uaW5nLWFzLW5vbi1yb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtUmVtb3ZlLXRlc3QtdGhhdC1yZXF1aXJlcy1ydW5uaW5nLWFzLW5vbi1yb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzZiYjM5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLVJlbW92ZS10ZXN0LXRoYXQtcmVxdWlyZXMtcnVubmluZy1hcy1ub24tcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gM2ZkYjFlMmExNmVhNDA1YzY3MzE0NDdhODk5NGYyMjI4MDhlZjdlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCA3IEFwciAyMDE3IDE4OjAxOjUyICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB0ZXN0IHRoYXQgcmVxdWlyZXMgcnVubmluZyBhcyBub24tcm9vdAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIHRlc3QvcmVjaXBlcy80MC10ZXN0X3JlaGFzaC50IHwgMTcgKy0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdC9yZWNpcGVzLzQwLXRlc3RfcmVoYXNoLnQgYi90ZXN0L3JlY2lwZXMvNDAtdGVzdF9yZWhhc2gudAotaW5kZXggZjkwMmMyMy4uYzc1NjdjMSAxMDA2NDQKLS0tLSBhL3Rlc3QvcmVjaXBlcy80MC10ZXN0X3JlaGFzaC50Ci0rKysgYi90ZXN0L3JlY2lwZXMvNDAtdGVzdF9yZWhhc2gudAotQEAgLTIzLDcgKzIzLDcgQEAgc2V0dXAoInRlc3RfcmVoYXNoIik7Ci0gcGxhbiBza2lwX2FsbCA9PiAidGVzdF9yZWhhc2ggaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIgotICAgICB1bmxlc3MgcnVuKGFwcChbIm9wZW5zc2wiLCAicmVoYXNoIiwgIi1oZWxwIl0pKTsKLSAKLS1wbGFuIHRlc3RzID0+IDU7Ci0rcGxhbiB0ZXN0cyA9PiAzOwotIAotIGluZGlyICJyZWhhc2guJCQiID0+IHN1YiB7Ci0gICAgIHByZXBhcmUoKTsKLUBAIC00MiwyMSArNDIsNiBAQCBpbmRpciAicmVoYXNoLiQkIiA9PiBzdWIgewotICAgICAgICAnVGVzdGluZyByZWhhc2ggb3BlcmF0aW9ucyBvbiBlbXB0eSBkaXJlY3RvcnknKTsKLSB9LCBjcmVhdGUgPT4gMSwgY2xlYW51cCA9PiAxOwotIAotLWluZGlyICJyZWhhc2guJCQiID0+IHN1YiB7Ci0tICAgIHByZXBhcmUoKTsKLS0gICAgY2htb2QgMDUwMCwgY3VyZGlyKCk7Ci0tICBTS0lQOiB7Ci0tICAgICAgaWYgKCFvayghb3BlbihGT08sICI+dW53cml0YWJsZS50eHQiKSwKLS0gICAgICAgICAgICAgICJUZXN0aW5nIHRoYXQgd2UgYXJlbid0IHJ1bm5pbmcgYXMgYSBwcml2aWxlZ2VkIHVzZXIsIHN1Y2ggYXMgcm9vdCIpKSB7Ci0tICAgICAgICAgIGNsb3NlIEZPTzsKLS0gICAgICAgICAgc2tpcCAiSXQncyBwb2ludGxlc3MgdG8gcnVuIHRoZSBuZXh0IHRlc3QgYXMgcm9vdCIsIDE7Ci0tICAgICAgfQotLSAgICAgIGlzbnQocnVuKGFwcChbIm9wZW5zc2wiLCAicmVoYXNoIiwgY3VyZGlyKCldKSksIDEsCi0tICAgICAgICAgICAnVGVzdGluZyByZWhhc2ggb3BlcmF0aW9ucyBvbiByZWFkb25seSBkaXJlY3RvcnknKTsKLS0gICAgfQotLSAgICBjaG1vZCAwNzAwLCBjdXJkaXIoKTsgICAgICAgIyBtYWtlIGl0IHdyaXRhYmxlIGFnYWluLCBzbyBjbGVhbnVwIHdvcmtzCi0tfSwgY3JlYXRlID0+IDEsIGNsZWFudXAgPT4gMTsKLS0KLSBzdWIgcHJlcGFyZSB7Ci0gICAgIG15IEBwZW1zb3VyY2VmaWxlcyA9IHNvcnQgZ2xvYihzcmN0b3BfZmlsZSgndGVzdCcsICIqLnBlbSIpKTsKLSAgICAgbXkgQGRlc3RmaWxlcyA9ICgpOwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtYWVzLWFzbS1hZXMtYXJtdjQtYnNhZXMtYXJtdjctLnBsLW1ha2UtaXQtd29yay13aXRoLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLWFlcy1hc20tYWVzLWFybXY0LWJzYWVzLWFybXY3LS5wbC1tYWtlLWl0LXdvcmstd2l0aC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMGExNjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtYWVzLWFzbS1hZXMtYXJtdjQtYnNhZXMtYXJtdjctLnBsLW1ha2UtaXQtd29yay13aXRoLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLUZyb20gYmNjMDk2YTUwODExYmYwZjBjNGZkMzRiMjk5M2ZlZDdhNzAxNTk3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPgotRGF0ZTogRnJpLCAzIE5vdiAyMDE3IDIzOjMwOjAxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFlcy9hc20ve2Flcy1hcm12NHxic2Flcy1hcm12N30ucGw6IG1ha2UgaXQgd29yayB3aXRoCi0gYmludXRpbHMtMi4yOS4KLQotSXQncyBub3QgY2xlYXIgaWYgaXQncyBhIGZlYXR1cmUgb3IgYnVnLCBidXQgYmludXRpbHMtMi4yOVsuMV0KLWludGVycHJldHMgJ2FkcicgaW5zdHJ1Y3Rpb24gd2l0aCBUaHVtYjIgY29kZSByZWZlcmVuY2UgZGlmZmVyZW50bHksCi1pbiBhIHdheSB0aGF0IGFmZmVjdHMgY2FsY3VsYXRpb24gb2YgYWRkcmVzc2VzIG9mIGNvbnN0YW50cycgdGFibGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVJldmlld2VkLWJ5OiBUaW0gSHVkc29uIDx0amhAb3BlbnNzbC5vcmc+Ci1SZXZpZXdlZC1ieTogQmVybmQgRWRsaW5nZXIgPGJlcm5kLmVkbGluZ2VyQGhvdG1haWwuZGU+Ci1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQWduZXIgPHN0ZWZhbi5hZ25lckB0b3JhZGV4LmNvbT4KLShNZXJnZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzbC9vcGVuc3NsL3B1bGwvNDY2OSkKLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYjgyYWNjM2MxYTdmMzA0YzlkZjMxODQxNzUzYTBmYTc2YjViM2NkYSkKLS0tLQotIGNyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbCAgIHwgNiArKystLS0KLSBjcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbCB8IDYgKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQucGwgYi9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQucGwKLWluZGV4IDE2ZDc5YWFlNTMuLmM2NDc0YjhhYWQgMTAwNjQ0Ci0tLS0gYS9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQucGwKLSsrKyBiL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbAotQEAgLTIwMCw3ICsyMDAsNyBAQCBBRVNfZW5jcnlwdDoKLSAjaWZuZGVmCV9fdGh1bWIyX18KLSAJc3ViCXIzLHBjLCM4CQlAIEFFU19lbmNyeXB0Ci0gI2Vsc2UKLS0JYWRyCXIzLEFFU19lbmNyeXB0Ci0rCWFkcglyMywuCi0gI2VuZGlmCi0gCXN0bWRiICAgc3AhLHtyMSxyNC1yMTIsbHJ9Ci0gI2lmZGVmCV9fQVBQTEVfXwotQEAgLTQ1MCw3ICs0NTAsNyBAQCBfYXJtdjRfQUVTX3NldF9lbmNyeXB0X2tleToKLSAjaWZuZGVmCV9fdGh1bWIyX18KLSAJc3ViCXIzLHBjLCM4CQlAIEFFU19zZXRfZW5jcnlwdF9rZXkKLSAjZWxzZQotLQlhZHIJcjMsQUVTX3NldF9lbmNyeXB0X2tleQotKwlhZHIJcjMsLgotICNlbmRpZgotIAl0ZXEJcjAsIzAKLSAjaWZkZWYJX190aHVtYjJfXwotQEAgLTk3Niw3ICs5NzYsNyBAQCBBRVNfZGVjcnlwdDoKLSAjaWZuZGVmCV9fdGh1bWIyX18KLSAJc3ViCXIzLHBjLCM4CQlAIEFFU19kZWNyeXB0Ci0gI2Vsc2UKLS0JYWRyCXIzLEFFU19kZWNyeXB0Ci0rCWFkcglyMywuCi0gI2VuZGlmCi0gCXN0bWRiICAgc3AhLHtyMSxyNC1yMTIsbHJ9Ci0gI2lmZGVmCV9fQVBQTEVfXwotZGlmZiAtLWdpdCBhL2NyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LnBsIGIvY3J5cHRvL2Flcy9hc20vYnNhZXMtYXJtdjcucGwKLWluZGV4IDlmMjg4NjYwZWYuLmEyN2JiNGExNzkgMTAwNjQ0Ci0tLS0gYS9jcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbAotKysrIGIvY3J5cHRvL2Flcy9hc20vYnNhZXMtYXJtdjcucGwKLUBAIC03NDQsNyArNzQ0LDcgQEAgJGNvZGUuPTw8X19fOwotIC50eXBlCV9ic2Flc19kZWNyeXB0OCwlZnVuY3Rpb24KLSAuYWxpZ24JNAotIF9ic2Flc19kZWNyeXB0ODoKLS0JYWRyCSRjb25zdCxfYnNhZXNfZGVjcnlwdDgKLSsJYWRyCSRjb25zdCwuCi0gCXZsZG1pYQkka2V5ISwge0BYTU1bOV19CQlAIHJvdW5kIDAga2V5Ci0gI2lmZGVmCV9fQVBQTEVfXwotIAlhZHIJJGNvbnN0LC5MTTBJU1IKLUBAIC04NDMsNyArODQzLDcgQEAgX2JzYWVzX2NvbnN0OgotIC50eXBlCV9ic2Flc19lbmNyeXB0OCwlZnVuY3Rpb24KLSAuYWxpZ24JNAotIF9ic2Flc19lbmNyeXB0ODoKLS0JYWRyCSRjb25zdCxfYnNhZXNfZW5jcnlwdDgKLSsJYWRyCSRjb25zdCwuCi0gCXZsZG1pYQkka2V5ISwge0BYTU1bOV19CQlAIHJvdW5kIDAga2V5Ci0gI2lmZGVmCV9fQVBQTEVfXwotIAlhZHIJJGNvbnN0LC5MTTBTUgotQEAgLTk1MSw3ICs5NTEsNyBAQCAkY29kZS49PDxfX187Ci0gLnR5cGUJX2JzYWVzX2tleV9jb252ZXJ0LCVmdW5jdGlvbgotIC5hbGlnbgk0Ci0gX2JzYWVzX2tleV9jb252ZXJ0OgotLQlhZHIJJGNvbnN0LF9ic2Flc19rZXlfY29udmVydAotKwlhZHIJJGNvbnN0LC4KLSAJdmxkMS44CXtAWE1NWzddfSwgIFskaW5wXSEJCUAgbG9hZCByb3VuZCAwIGtleQotICNpZmRlZglfX0FQUExFX18KLSAJYWRyCSRjb25zdCwuTE0wCi0tLSAKLTIuMTUuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC5pbmMKaW5kZXggOTMzNWIwYi4uNjQ1ZDY0ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwLmluYwpAQCAtMjUsNyArMjUsNyBAQAogVEVSTUlPID89ICItRFRFUk1JTyIKICMgQXZvaWQgYmluYXJpZXMgYmVpbmcgbWFya2VkIGFzIHJlcXVpcmluZyBhbiBleGVjdXRhYmxlIHN0YWNrIHNpbmNlIGl0IAogIyBkb2Vzbid0KHdoaWNoIGNhdXNlcyBhbmQgdGhpcyBjYXVzZXMgaXNzdWVzIHdpdGggU0VMaW51eAotQ0ZMQUcgPSAiJHtAYmFzZV9jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICctRExfRU5ESUFOJywgJy1EQl9FTkRJQU4nLCBkKX0gXAorQ0ZMQUcgPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnbGUnLCAnLURMX0VORElBTicsICctREJfRU5ESUFOJywgZCl9IFwKIAkgJHtURVJNSU99ICR7Q0ZMQUdTfSAtV2FsbCAtV2EsLS1ub2V4ZWNzdGFjayIKIAogZXhwb3J0IERJUlMgPSAiY3J5cHRvIHNzbCBhcHBzIgpAQCAtMTM1LDYgKzEzNSwxMiBAQAogCWxpbnV4LXBvd2VycGM2NCkKIAkJdGFyZ2V0PWxpbnV4LXBwYzY0CiAJCTs7CisJbGludXgtcmlzY3Y2NCkKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWM2NAorCQk7OworCWxpbnV4LXJpc2N2MzIpCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKIAlsaW51eC1zdXBlcnNwYXJjKQogCQl0YXJnZXQ9bGludXgtc3BhcmN2OAogCQk7OwpAQCAtMTUxLDcgKzE1Nyw4IEBACiAgICAgICAgIGlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCiAgICAgICAgICAgICAgICAgdXNlcHJlZml4PS8KICAgICAgICAgZmkgICAgICAgIAotCXBlcmwgLi9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9IHNoYXJlZCAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsIC0tbGliZGlyPWBiYXNlbmFtZSAke2xpYmRpcn1gICR0YXJnZXQKKwlsaWJkaXJsZWFmPSIkKGVjaG8gJHtsaWJkaXJ9IHwgc2VkIHM6JHVzZXByZWZpeDo6KSIKKwlwZXJsIC4vQ29uZmlndXJlICR7RVhUUkFfT0VDT05GfSBzaGFyZWQgLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbCAtLWxpYmRpcj0ke2xpYmRpcmxlYWZ9ICR0YXJnZXQKIH0KIAogZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJuLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4ybi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA3Mjg5ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotcmVxdWlyZSBvcGVuc3NsMTAuaW5jCi0KLSMgRm9yIHRhcmdldCBzaWRlIHZlcnNpb25zIG9mIG9wZW5zc2wgZW5hYmxlIHN1cHBvcnQgZm9yIE9DRiBMaW51eCBkcml2ZXIKLSMgaWYgdGhleSBhcmUgYXZhaWxhYmxlLgotCi1DRkxBRyArPSAiLURIQVZFX0NSWVBUT0RFViAtRFVTRV9DUllQVE9ERVZfRElHRVNUUyIKLUNGTEFHX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1mUElDIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wNTdkOTIxOGM2MTgwZTFkOWVlNDA3NTcyYjJkZDIyNSIKLQotZXhwb3J0IERJUlMgPSAiY3J5cHRvIHNzbCBhcHBzIGVuZ2luZXMiCi1leHBvcnQgT0VfTERGTEFHUz0iJHtMREZMQUdTfSIKLQotU1JDX1VSSSArPSAiZmlsZTovL2ZpbmQucGw7c3ViZGlyPW9wZW5zc2wtJHtQVn0vdXRpbC8gXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2wtY19yZWhhc2guc2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLXRhcmdldHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2hhcmVkLWxpYnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb2UtbGRmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbm8tcnBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9waWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZXMtcHRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHRlc3QtZGVwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtb3BlbnNzbC1mb3JjZS1zb2Z0LWxpbmstdG8tYXZvaWQtcmFyZS1yYWNlLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLWNmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxM2JkYzFiMWQxZmYzOWI2ZmQ0MmEyNTVlNzQ2NzZhNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNzBiYWJiNzVmMjc4YzM5ZTBjNTBlOGM0ZTc0OTNiYzBmMThkYjY4Njc0NzgzNDFhODMyYTk4MmZkMTVhOGZlIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZW5naW5lcyIKLUZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L3NzbC9lbmdpbmVzLyouc28gJHtsaWJkaXJ9L2VuZ2luZXMiCi0KLSMgVGhlIGNyeXB0b191c2VfYmlnaW50IHBhdGNoIG1lYW5zIHRoYXQgcGVybCdzIGJpZ251bSBtb2R1bGUgbmVlZHMgdG8gYmUKLSMgaW5zdGFsbGVkLCBidXQgc29tZSBkaXN0cmlidXRpb25zIChmb3IgZXhhbXBsZSBGZWRvcmEgMjMpIGRvbid0IHNoaXAgaXQgYnkKLSMgZGVmYXVsdC4gIEFzIHRoZSByZXN1bHRpbmcgZXJyb3IgaXMgdmVyeSBtaXNsZWFkaW5nIGNoZWNrIGZvciBiaWdudW0gYmVmb3JlCi0jIGJ1aWxkaW5nLgotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JaWYgISBwZXJsIC1NYmlnaW50IC1lIHRydWU7IHRoZW4KLQkJYmJmYXRhbCAiVGhlIHBlcmwgbW9kdWxlICdiaWdudW0nIHdhcyBub3QgZm91bmQgYnV0IHRoaXMgaXMgcmVxdWlyZWQgdG8gYnVpbGQgb3BlbnNzbC4gIFBsZWFzZSBpbnN0YWxsIHRoaXMgbW9kdWxlIChvZnRlbiBwYWNrYWdlZCBhcyBwZXJsLWJpZ251bSkgYW5kIHJlLXJ1biBiaXRiYWtlLiIKLQlmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4yby5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjAuMm8uYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzZWJmMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjAuMm8uYmIKQEAgLTAsMCArMSw2NCBAQAorcmVxdWlyZSBvcGVuc3NsMTAuaW5jCisKKyMgRm9yIHRhcmdldCBzaWRlIHZlcnNpb25zIG9mIG9wZW5zc2wgZW5hYmxlIHN1cHBvcnQgZm9yIE9DRiBMaW51eCBkcml2ZXIKKyMgaWYgdGhleSBhcmUgYXZhaWxhYmxlLgorCitDRkxBRyArPSAiLURIQVZFX0NSWVBUT0RFViAtRFVTRV9DUllQVE9ERVZfRElHRVNUUyIKK0NGTEFHX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1mUElDIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mNDc1MzY4OTI0ODI3ZDA2ZDRiNDE2MTExYzhiZGI3NyIKKworZXhwb3J0IERJUlMgPSAiY3J5cHRvIHNzbCBhcHBzIGVuZ2luZXMiCitleHBvcnQgT0VfTERGTEFHUz0iJHtMREZMQUdTfSIKKworU1JDX1VSSSArPSAiZmlsZTovL2ZpbmQucGw7c3ViZGlyPW9wZW5zc2wtJHtQVn0vdXRpbC8gXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2wtY19yZWhhc2guc2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLXRhcmdldHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2hhcmVkLWxpYnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb2UtbGRmbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbm8tcnBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9waWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZXMtcHRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHRlc3QtZGVwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLXV0aWwtcGVybHBhdGgucGwtY3dkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJsZS1jZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLW1rYnVpbGRpbmYucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDQyNzliODU1N2MzMjQ3Y2JlMzI0ZTIzMjJlY2QxMTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWMzZjVjOTcxNGJhMGZkNDVjYjRlMDg3MzAxZWIxMzM2YzMxN2UwZDIwYjU3NWExMjUwNTA0NzBlODA4OWU0ZCIKKworUEFDS0FHRVMgPSsgIiR7UE59LWVuZ2luZXMiCitGSUxFU18ke1BOfS1lbmdpbmVzID0gIiR7bGliZGlyfS9zc2wvZW5naW5lcy8qLnNvICR7bGliZGlyfS9lbmdpbmVzIgorCisjIFRoZSBjcnlwdG9fdXNlX2JpZ2ludCBwYXRjaCBtZWFucyB0aGF0IHBlcmwncyBiaWdudW0gbW9kdWxlIG5lZWRzIHRvIGJlCisjIGluc3RhbGxlZCwgYnV0IHNvbWUgZGlzdHJpYnV0aW9ucyAoZm9yIGV4YW1wbGUgRmVkb3JhIDIzKSBkb24ndCBzaGlwIGl0IGJ5CisjIGRlZmF1bHQuICBBcyB0aGUgcmVzdWx0aW5nIGVycm9yIGlzIHZlcnkgbWlzbGVhZGluZyBjaGVjayBmb3IgYmlnbnVtIGJlZm9yZQorIyBidWlsZGluZy4KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWlmICEgcGVybCAtTWJpZ2ludCAtZSB0cnVlOyB0aGVuCisJCWJiZmF0YWwgIlRoZSBwZXJsIG1vZHVsZSAnYmlnbnVtJyB3YXMgbm90IGZvdW5kIGJ1dCB0aGlzIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIG9wZW5zc2wuICBQbGVhc2UgaW5zdGFsbCB0aGlzIG1vZHVsZSAob2Z0ZW4gcGFja2FnZWQgYXMgcGVybC1iaWdudW0pIGFuZCByZS1ydW4gYml0YmFrZS4iCisJZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjBnLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjQ5YmZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotU1VNTUFSWSA9ICJTZWN1cmUgU29ja2V0IExheWVyIgotREVTQ1JJUFRJT04gPSAiU2VjdXJlIFNvY2tldCBMYXllciAoU1NMKSBiaW5hcnkgYW5kIHJlbGF0ZWQgY3J5cHRvZ3JhcGhpYyB0b29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9uZXdzL3Z1bG5lcmFiaWxpdGllcy5odG1sIgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi0KLSMgIm9wZW5zc2wgfCBTU0xlYXkiIGR1YWwgbGljZW5zZQotTElDRU5TRSA9ICJvcGVuc3NsIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Y2FlNmRhMTBmNGZmZDk3MDMyMTQ3NzZkMmFhYmNlMzIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSVttZDVzdW1dID0gImJhNWYxYjhiODM1Yjg4Y2FkYmNlOWIzNWVkOTUzMWE2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlNGQ1MDEyNjdkYTM5MzEwOTA1Y2I2ZGM4YzYxMjFmN2EyY2FkNDVhNzcwN2Y3NmRmODI4ZmUxYjg1MDczYWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2wtY19yZWhhc2guc2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UYWtlLWxpbmtpbmctZmxhZ3MtZnJvbS1MREZMQUdTLWVudi12YXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGVzdC10aGF0LXJlcXVpcmVzLXJ1bm5pbmctYXMtbm9uLXJvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hZXMtYXNtLWFlcy1hcm12NC1ic2Flcy1hcm12Ny0ucGwtbWFrZS1pdC13b3JrLXdpdGgtLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9vcGVuc3NsLSR7UFZ9IgotCi1pbmhlcml0IGxpYl9wYWNrYWdlIG11bHRpbGliX2hlYWRlciBwdGVzdAotCi1kb19jb25maWd1cmUgKCkgewotCW9zPSR7SE9TVF9PU30KLQljYXNlICRvcyBpbgotCWxpbnV4LXVjbGliYyB8XAotCWxpbnV4LXVjbGliY2VhYmkgfFwKLQlsaW51eC1nbnVlYWJpIHxcCi0JbGludXgtdWNsaWJjc3BlIHxcCi0JbGludXgtZ251c3BlIHxcCi0JbGludXgtbXVzbCopCi0JCW9zPWxpbnV4Ci0JCTs7Ci0JCSopCi0JCTs7Ci0JZXNhYwotCXRhcmdldD0iJG9zLSR7SE9TVF9BUkNIfSIKLQljYXNlICR0YXJnZXQgaW4KLQlsaW51eC1hcm0pCi0JCXRhcmdldD1saW51eC1hcm12NAotCQk7OwotCWxpbnV4LWFybWViKQotCQl0YXJnZXQ9bGludXgtYXJtdjQKLQkJOzsKLQlsaW51eC1hYXJjaDY0KikKLQkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKLQkJOzsKLQlsaW51eC1zaDMpCi0JCXRhcmdldD1saW51eC1nZW5lcmljMzIKLQkJOzsKLQlsaW51eC1zaDQpCi0JCXRhcmdldD1saW51eC1nZW5lcmljMzIKLQkJOzsKLQlsaW51eC1pNDg2KQotCQl0YXJnZXQ9bGludXgtZWxmCi0JCTs7Ci0JbGludXgtaTU4NiB8IGxpbnV4LXZpYWMzKQotCQl0YXJnZXQ9bGludXgtZWxmCi0JCTs7Ci0JbGludXgtaTY4NikKLQkJdGFyZ2V0PWxpbnV4LWVsZgotCQk7OwotCWxpbnV4LWdudXgzMi14ODZfNjQpCi0JCXRhcmdldD1saW51eC14MzIKLQkJOzsKLQlsaW51eC1nbnU2NC14ODZfNjQpCi0JCXRhcmdldD1saW51eC14ODZfNjQKLQkJOzsKLQlsaW51eC1taXBzKQotICAgICAgICAgICAgICAgICMgc3BlY2lmeWluZyBUQVJHRVRfQ0NfQVJDSCBwcmV2ZW50cyBvcGVuc3NsIGZyb20gKGluY29ycmVjdGx5KSBhZGRpbmcgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmbGFncwotCQl0YXJnZXQ9ImxpbnV4LW1pcHMzMiAke1RBUkdFVF9DQ19BUkNIfSIKLQkJOzsKLQlsaW51eC1taXBzZWwpCi0JCXRhcmdldD0ibGludXgtbWlwczMyICR7VEFSR0VUX0NDX0FSQ0h9IgotCQk7OwotICAgICAgICBsaW51eC1nbnVuMzItbWlwcyopCi0gICAgICAgICAgICAgICB0YXJnZXQ9bGludXgtbWlwczY0Ci0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgbGludXgtKi1taXBzNjQgfCBsaW51eC1taXBzNjQpCi0gICAgICAgICAgICAgICB0YXJnZXQ9bGludXg2NC1taXBzNjQKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICBsaW51eC0qLW1pcHM2NGVsIHwgbGludXgtbWlwczY0ZWwpCi0gICAgICAgICAgICAgICB0YXJnZXQ9bGludXg2NC1taXBzNjQKLSAgICAgICAgICAgICAgICA7OwotCWxpbnV4LW1pY3JvYmxhemUqfGxpbnV4LW5pb3MyKikKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgotCQk7OwotCWxpbnV4LXBvd2VycGMpCi0JCXRhcmdldD1saW51eC1wcGMKLQkJOzsKLQlsaW51eC1wb3dlcnBjNjQpCi0JCXRhcmdldD1saW51eC1wcGM2NAotCQk7OwotCWxpbnV4LXN1cGVyc3BhcmMpCi0JCXRhcmdldD1saW51eC1zcGFyY3Y5Ci0JCTs7Ci0JbGludXgtc3BhcmMpCi0JCXRhcmdldD1saW51eC1zcGFyY3Y5Ci0JCTs7Ci0JZGFyd2luLWkzODYpCi0JCXRhcmdldD1kYXJ3aW4taTM4Ni1jYwotCQk7OwotCWVzYWMKLSAgICAgICAgdXNlcHJlZml4PSR7cHJlZml4fQotICAgICAgICBpZiBbICJ4JHVzZXByZWZpeCIgPSAieCIgXTsgdGhlbgotICAgICAgICAgICAgICAgIHVzZXByZWZpeD0vCi0gICAgICAgIGZpCi0JcGVybCAuL0NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0gLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbC0xLjEgLS1saWJkaXI9YGJhc2VuYW1lICR7bGliZGlyfWAgJHRhcmdldAotfQotCi0jfCBlbmdpbmVzL2FmYWxnL2VfYWZhbGcuYzogSW4gZnVuY3Rpb24gJ2V2ZW50ZmQnOgotI3wgZW5naW5lcy9hZmFsZy9lX2FmYWxnLmM6MTEwOjIwOiBlcnJvcjogJ19fTlJfZXZlbnRmZCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0jfCAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfZXZlbnRmZCwgbik7Ci0jfCAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fgotRVhUUkFfT0VDT05GX2FhcmNoNjQgKz0gIm5vLWFmYWxnZW5nIgotCi0jfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZ2V0Y29udGV4dCcKLSN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBzZXRjb250ZXh0JwotI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYG1ha2Vjb250ZXh0JwotRVhUUkFfT0VDT05GX2xpYmMtbXVzbCArPSAiLURPUEVOU1NMX05PX0FTWU5DIgotCi1kb19pbnN0YWxsICgpIHsKLSAgICAgICAgb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBNQU5ESVI9IiR7bWFuZGlyfSIgTUFOU1VGRklYPXNzbCBpbnN0YWxsCi0gICAgICAgIG9lX211bHRpbGliX2hlYWRlciBvcGVuc3NsL29wZW5zc2xjb25mLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLSAgICAgICAgIyBJbnN0YWxsIGEgY3VzdG9tIHZlcnNpb24gb2YgY19yZWhhc2ggdGhhdCBjYW4gaGFuZGxlIHN5c3Jvb3RzIHByb3Blcmx5LgotICAgICAgICAjIFRoaXMgdmVyc2lvbiBpcyB1c2VkIGZvciBleGFtcGxlIHdoZW4gaW5zdGFsbGluZyBjYS1jZXJ0aWZpY2F0ZXMgZHVyaW5nCi0gICAgICAgICMgaW1hZ2UgY3JlYXRpb24uCi0gICAgICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9vcGVuc3NsLWNfcmVoYXNoLnNoICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKLSAgICAgICAgc2VkIC1pIC1lICdzLC9ldGMvb3BlbnNzbCwke3N5c2NvbmZkaXJ9L3NzbCxnJyAke0R9JHtiaW5kaXJ9L2NfcmVoYXNoCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgICAgIGNwIC1yICogJHtEfSR7UFRFU1RfUEFUSH0KLQotICAgICAgICAjIFB1dHRpbmcgLnNvIGZpbGVzIGluIHB0ZXN0IHBhY2thZ2Ugd2lsbCBtZXNzIHVwIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIG1haW4gb3BlbnNzbCBwYWNrYWdlCi0gICAgICAgICMgc28gd2UgcmVuYW1lIHRoZW0gdG8gLnNvLnB0ZXN0IGFuZCBwYXRjaCB0aGUgdGVzdCBhY2NvcmRpbmdseQotICAgICAgICBtdiAke0R9JHtQVEVTVF9QQVRIfS9saWJjcnlwdG8uc28gJHtEfSR7UFRFU1RfUEFUSH0vbGliY3J5cHRvLnNvLnB0ZXN0Ci0gICAgICAgIG12ICR7RH0ke1BURVNUX1BBVEh9L2xpYnNzbC5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJzc2wuc28ucHRlc3QKLSAgICAgICAgc2VkIC1pICdzLyR0YXJnZXR7c2hhcmVkX2V4dGVuc2lvbl9zaW1wbGV9LyIuc28ucHRlc3QiLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9yZWNpcGVzLzkwLXRlc3Rfc2hsaWJsb2FkLnQKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gInBlcmwtbW9kdWxlLWZpbGUtc3BlYy1mdW5jdGlvbnMgYmFzaCBweXRob24iCi0KLUZJTEVTXyR7UE59ID0rICIgJHtsaWJkaXJ9L3NzbC0xLjEvKiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWVuZ2luZXMiCi1GSUxFU18ke1BOfS1lbmdpbmVzID0gIiR7bGliZGlyfS9lbmdpbmVzLTEuMSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4waC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRiNzVlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGguYmIKQEAgLTAsMCArMSwxNjEgQEAKK1NVTU1BUlkgPSAiU2VjdXJlIFNvY2tldCBMYXllciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIgKFNTTCkgYmluYXJ5IGFuZCByZWxhdGVkIGNyeXB0b2dyYXBoaWMgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy92dWxuZXJhYmlsaXRpZXMuaHRtbCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCisjICJvcGVuc3NsIHwgU1NMZWF5IiBkdWFsIGxpY2Vuc2UKK0xJQ0VOU0UgPSAib3BlbnNzbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ1N2Q1MTEwMzBjOWQ2NmVmNWY1OTY2YmVlNWE3ZWZmIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MjcxNDc3ZTRkOTNmNGVhMDMyYjY2NWVmMDk1ZmYyNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ODM1NjI2Y2RlOWU5OTY1NjU4NWZjN2FhYTIzMDJhNzNhN2UxMzQwYmY4YzE0ZmQ2MzVhNjJjNjY4MDJhNTE3IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWNfcmVoYXNoLnNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVGFrZS1saW5raW5nLWZsYWdzLWZyb20tTERGTEFHUy1lbnYtdmFyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vb3BlbnNzbC0ke1BWfSIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKKworZG9fY29uZmlndXJlICgpIHsKKwlvcz0ke0hPU1RfT1N9CisJY2FzZSAkb3MgaW4KKwlsaW51eC11Y2xpYmMgfFwKKwlsaW51eC11Y2xpYmNlYWJpIHxcCisJbGludXgtZ251ZWFiaSB8XAorCWxpbnV4LXVjbGliY3NwZSB8XAorCWxpbnV4LWdudXNwZSB8XAorCWxpbnV4LW11c2wqKQorCQlvcz1saW51eAorCQk7OworCQkqKQorCQk7OworCWVzYWMKKwl0YXJnZXQ9IiRvcy0ke0hPU1RfQVJDSH0iCisJY2FzZSAkdGFyZ2V0IGluCisJbGludXgtYXJtKQorCQl0YXJnZXQ9bGludXgtYXJtdjQKKwkJOzsKKwlsaW51eC1hcm1lYikKKwkJdGFyZ2V0PWxpbnV4LWFybXY0CisJCTs7CisJbGludXgtYWFyY2g2NCopCisJCXRhcmdldD1saW51eC1hYXJjaDY0CisJCTs7CisJbGludXgtc2gzKQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtc2g0KQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtaTQ4NikKKwkJdGFyZ2V0PWxpbnV4LWVsZgorCQk7OworCWxpbnV4LWk1ODYgfCBsaW51eC12aWFjMykKKwkJdGFyZ2V0PWxpbnV4LWVsZgorCQk7OworCWxpbnV4LWk2ODYpCisJCXRhcmdldD1saW51eC1lbGYKKwkJOzsKKwlsaW51eC1nbnV4MzIteDg2XzY0KQorCQl0YXJnZXQ9bGludXgteDMyCisJCTs7CisJbGludXgtZ251NjQteDg2XzY0KQorCQl0YXJnZXQ9bGludXgteDg2XzY0CisJCTs7CisJbGludXgtbWlwcykKKyAgICAgICAgICAgICAgICAjIHNwZWNpZnlpbmcgVEFSR0VUX0NDX0FSQ0ggcHJldmVudHMgb3BlbnNzbCBmcm9tIChpbmNvcnJlY3RseSkgYWRkaW5nIHRhcmdldCBhcmNoaXRlY3R1cmUgZmxhZ3MKKwkJdGFyZ2V0PSJsaW51eC1taXBzMzIgJHtUQVJHRVRfQ0NfQVJDSH0iCisJCTs7CisJbGludXgtbWlwc2VsKQorCQl0YXJnZXQ9ImxpbnV4LW1pcHMzMiAke1RBUkdFVF9DQ19BUkNIfSIKKwkJOzsKKyAgICAgICAgbGludXgtZ251bjMyLW1pcHMqKQorICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4LW1pcHM2NAorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIGxpbnV4LSotbWlwczY0IHwgbGludXgtbWlwczY0KQorICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4NjQtbWlwczY0CisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgbGludXgtKi1taXBzNjRlbCB8IGxpbnV4LW1pcHM2NGVsKQorICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4NjQtbWlwczY0CisgICAgICAgICAgICAgICAgOzsKKwlsaW51eC1taWNyb2JsYXplKnxsaW51eC1uaW9zMiopCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1wb3dlcnBjKQorCQl0YXJnZXQ9bGludXgtcHBjCisJCTs7CisJbGludXgtcG93ZXJwYzY0KQorCQl0YXJnZXQ9bGludXgtcHBjNjQKKwkJOzsKKwlsaW51eC1yaXNjdjY0KQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzY0CisJCTs7CisJbGludXgtcmlzY3YzMikKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgorCQk7OworCWxpbnV4LXN1cGVyc3BhcmMpCisJCXRhcmdldD1saW51eC1zcGFyY3Y5CisJCTs7CisJbGludXgtc3BhcmMpCisJCXRhcmdldD1saW51eC1zcGFyY3Y5CisJCTs7CisJZGFyd2luLWkzODYpCisJCXRhcmdldD1kYXJ3aW4taTM4Ni1jYworCQk7OworCWVzYWMKKyAgICAgICAgdXNlcHJlZml4PSR7cHJlZml4fQorICAgICAgICBpZiBbICJ4JHVzZXByZWZpeCIgPSAieCIgXTsgdGhlbgorICAgICAgICAgICAgICAgIHVzZXByZWZpeD0vCisgICAgICAgIGZpCisJbGliZGlybGVhZj0iJChlY2hvICR7bGliZGlyfSB8IHNlZCBzOiR1c2VwcmVmaXg6OikiCisJcGVybCAuL0NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0gLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbC0xLjEgLS1saWJkaXI9JHtsaWJkaXJsZWFmfSAkdGFyZ2V0Cit9CisKKyN8IGVuZ2luZXMvYWZhbGcvZV9hZmFsZy5jOiBJbiBmdW5jdGlvbiAnZXZlbnRmZCc6CisjfCBlbmdpbmVzL2FmYWxnL2VfYWZhbGcuYzoxMTA6MjA6IGVycm9yOiAnX19OUl9ldmVudGZkJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKKyN8ICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9ldmVudGZkLCBuKTsKKyN8ICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+CitFWFRSQV9PRUNPTkZfYWFyY2g2NCArPSAibm8tYWZhbGdlbmciCisKKyN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnZXRjb250ZXh0JworI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHNldGNvbnRleHQnCisjfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbWFrZWNvbnRleHQnCitFWFRSQV9PRUNPTkZfbGliYy1tdXNsICs9ICItRE9QRU5TU0xfTk9fQVNZTkMiCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIE1BTkRJUj0iJHttYW5kaXJ9IiBNQU5TVUZGSVg9c3NsIGluc3RhbGwKKyAgICAgICAgb2VfbXVsdGlsaWJfaGVhZGVyIG9wZW5zc2wvb3BlbnNzbGNvbmYuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgICAgICAjIEluc3RhbGwgYSBjdXN0b20gdmVyc2lvbiBvZiBjX3JlaGFzaCB0aGF0IGNhbiBoYW5kbGUgc3lzcm9vdHMgcHJvcGVybHkuCisgICAgICAgICMgVGhpcyB2ZXJzaW9uIGlzIHVzZWQgZm9yIGV4YW1wbGUgd2hlbiBpbnN0YWxsaW5nIGNhLWNlcnRpZmljYXRlcyBkdXJpbmcKKyAgICAgICAgIyBpbWFnZSBjcmVhdGlvbi4KKyAgICAgICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L29wZW5zc2wtY19yZWhhc2guc2ggJHtEfSR7YmluZGlyfS9jX3JlaGFzaAorICAgICAgICBzZWQgLWkgLWUgJ3MsL2V0Yy9vcGVuc3NsLCR7c3lzY29uZmRpcn0vc3NsLGcnICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICAgICAgY3AgLXIgKiAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgICAgICMgUHV0dGluZyAuc28gZmlsZXMgaW4gcHRlc3QgcGFja2FnZSB3aWxsIG1lc3MgdXAgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgbWFpbiBvcGVuc3NsIHBhY2thZ2UKKyAgICAgICAgIyBzbyB3ZSByZW5hbWUgdGhlbSB0byAuc28ucHRlc3QgYW5kIHBhdGNoIHRoZSB0ZXN0IGFjY29yZGluZ2x5CisgICAgICAgIG12ICR7RH0ke1BURVNUX1BBVEh9L2xpYmNyeXB0by5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJjcnlwdG8uc28ucHRlc3QKKyAgICAgICAgbXYgJHtEfSR7UFRFU1RfUEFUSH0vbGlic3NsLnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYnNzbC5zby5wdGVzdAorICAgICAgICBzZWQgLWkgJ3MvJHRhcmdldHtzaGFyZWRfZXh0ZW5zaW9uX3NpbXBsZX0vIi5zby5wdGVzdCIvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L3JlY2lwZXMvOTAtdGVzdF9zaGxpYmxvYWQudAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZmlsZS1zcGVjLWZ1bmN0aW9ucyBiYXNoIHB5dGhvbiIKKworRklMRVNfJHtQTn0gPSsgIiAke2xpYmRpcn0vc3NsLTEuMS8qIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZW5naW5lcyIKK0ZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L2VuZ2luZXMtMS4xIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwLzAwMDEtcHBwb2UtaW5jbHVkZS1uZXRpbmV0LWluLmgtYmVmb3JlLWxpbnV4LWluLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwLzAwMDEtcHBwb2UtaW5jbHVkZS1uZXRpbmV0LWluLmgtYmVmb3JlLWxpbnV4LWluLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM2MmQxMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvMDAwMS1wcHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1iZWZvcmUtbGludXgtaW4uaC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDUwYTI5OTdiMjU2ZTBlMGVmN2E0NmZhZTEzM2Y1NmY2MGZjZTUzOWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMdWJvbWlyIFJpbnRlbCA8bGt1bmRyYWtAdjMuc2s+CitEYXRlOiBNb24sIDkgSmFuIDIwMTcgMTM6MzQ6MjMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gcHBwb2U6IGluY2x1ZGUgbmV0aW5ldC9pbi5oIGJlZm9yZSBsaW51eC9pbi5oCisKK1RoaXMgZml4ZXMgYnVpbGRzIHdpdGggbmV3ZXIga2VybmVscy4gQmFzaWNhbGx5LCA8bmV0aW5ldC9pbi5oPiBuZWVkcyB0byBiZQoraW5jbHVkZWQgYmVmb3JlIDxsaW51eC9pbi5oPiBvdGhlcndpc2UgdGhlIGVhcmxpZXIsIHVuYXdhcmUgb2YgdGhlIGxhdHRlciwKK3RyaWVzIHRvIHJlZGVmaW5lIHN5bWJvbHMgYW5kIHN0cnVjdHVyZXMuIEFsc28sIDxsaW51eC9pZl9wcHBveC5oPiBkb2Vzbid0IHdvcmsKK2Fsb25lIGFueW1vcmUsIHNpbmNlIGl0IHB1bGxzIHRoZSBoZWFkZXJzIGluIHRoZSB3cm9uZyBvcmRlciwgc28gd2UgYmV0dGVyCitpbmNsdWRlIDxuZXRpbmV0L2luLmg+IGVhcmx5LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL3BhdWx1c21hY2svcHBwL2NvbW1pdC81MGEyOTk3YjI1NmUwZTBlZjdhNDZmYWUxMzNmNTZmNjBmY2U1MzljXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaCB8IDcgKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaCBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oCitpbmRleCA5YWIyZWVlLi5jNGFhYTZlIDEwMDY0NAorLS0tIGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmgKKysrKyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oCitAQCAtNDcsNiArNDcsMTAgQEAKKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNlbmRpZgorIAorKy8qIFRoaXMgaGFzIHRvIGJlIGluY2x1ZGVkIGJlZm9yZSBMaW51eCA0LjgncyBsaW51eC9pbi5oCisrICogZ2V0cyBkcmFnZ2VkIGluLiAqLworKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisrCisgLyogVWdseSBoZWFkZXIgZmlsZXMgb24gc29tZSBMaW51eCBib3hlcy4uLiAqLworICNpZiBkZWZpbmVkKEhBVkVfTElOVVhfSUZfSCkKKyAjaW5jbHVkZSA8bGludXgvaWYuaD4KK0BAIC04NCw4ICs4OCw2IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBVSU5UMzJfdDsKKyAjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KKyAjZW5kaWYKKyAKKy0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorLQorICNpZmRlZiBIQVZFX05FVElORVRfSUZfRVRIRVJfSAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKK0BAIC05OCw3ICsxMDAsNiBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVUlOVDMyX3Q7CisgI2VuZGlmCisgCisgCistCisgLyogRXRoZXJuZXQgZnJhbWUgdHlwZXMgYWNjb3JkaW5nIHRvIFJGQyAyNTE2ICovCisgI2RlZmluZSBFVEhfUFBQT0VfRElTQ09WRVJZIDB4ODg2MworICNkZWZpbmUgRVRIX1BQUE9FX1NFU1NJT04gICAweDg4NjQKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9jaWZkZWZyb3V0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvY2lmZGVmcm91dGUucGF0Y2gKaW5kZXggZGI0ZGJjMi4uN2RkNjlkOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9jaWZkZWZyb3V0ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwL2NpZmRlZnJvdXRlLnBhdGNoCkBAIC00LDEwICs0LDExIEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGViaWFuL3N1c2UgcGF0Y2hlc10KIAotZGlmZiAtdXJOIHBwcC0yLjQuNS1vcmlnL3BwcGQvaXBjcC5jIHBwcC0yLjQuNS9wcHBkL2lwY3AuYwotLS0tIHBwcC0yLjQuNS1vcmlnL3BwcGQvaXBjcC5jCTIwMTAtMDYtMzAgMTU6NTE6MTIuMDUwMTY2Mzk4ICswODAwCi0rKysgcHBwLTIuNC41L3BwcGQvaXBjcC5jCTIwMTAtMDYtMzAgMTY6NDA6MDAuNDc4NzE2ODU1ICswODAwCi1AQCAtMTk4LDYgKzE5OCwxNiBAQAorSW5kZXg6IHBwcC0yLjQuNy9wcHBkL2lwY3AuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBwcC0yLjQuNy5vcmlnL3BwcGQvaXBjcC5jCisrKysgcHBwLTIuNC43L3BwcGQvaXBjcC5jCitAQCAtMTk4LDYgKzE5OCwxNiBAQCBzdGF0aWMgb3B0aW9uX3QgaXBjcF9vcHRpb25fbGlzdFtdID0gewogICAgICAgICJkaXNhYmxlIGRlZmF1bHRyb3V0ZSBvcHRpb24iLCBPUFRfQUxJQVMgfCBPUFRfQTJDTFIsCiAgICAgICAgJmlwY3Bfd2FudG9wdGlvbnNbMF0uZGVmYXVsdF9yb3V0ZSB9LAogIApAQCAtMjQsNyArMjUsNyBAQAogICAgICB7ICJwcm94eWFycCIsIG9fYm9vbCwgJmlwY3Bfd2FudG9wdGlvbnNbMF0ucHJveHlfYXJwLAogICAgICAgICJBZGQgcHJveHkgQVJQIGVudHJ5IiwgT1BUX0VOQUJMRXwxLCAmaXBjcF9hbGxvd29wdGlvbnNbMF0ucHJveHlfYXJwIH0sCiAgICAgIHsgIm5vcHJveHlhcnAiLCBvX2Jvb2wsICZpcGNwX2FsbG93b3B0aW9uc1swXS5wcm94eV9hcnAsCi1AQCAtMjcxLDcgKzI4MSw3IEBACitAQCAtMjcxLDcgKzI4MSw3IEBAIHN0cnVjdCBwcm90ZW50IGlwY3BfcHJvdGVudCA9IHsKICAgICAgaXBfYWN0aXZlX3BrdAogIH07CiAgCkBAIC0zMyw3ICszNCw3IEBACiAgc3RhdGljIHZvaWQgaXBjcF9zY3JpcHQgX19QKChjaGFyICosIGludCkpOwkvKiBSdW4gYW4gdXAvZG93biBzY3JpcHQgKi8KICBzdGF0aWMgdm9pZCBpcGNwX3NjcmlwdF9kb25lIF9fUCgodm9pZCAqKSk7CiAgCi1AQCAtMTc0Miw3ICsxNzUyLDEyIEBACitAQCAtMTc2MSw3ICsxNzcxLDEyIEBAIGlwX2RlbWFuZF9jb25mKHUpCiAgICAgIGlmICghc2lmbnBtb2RlKHUsIFBQUF9JUCwgTlBNT0RFX1FVRVVFKSkKICAJcmV0dXJuIDA7CiAgICAgIGlmICh3by0+ZGVmYXVsdF9yb3V0ZSkKQEAgLTQ2LDcgKzQ3LDcgQEAKICAJICAgIGRlZmF1bHRfcm91dGVfc2V0W3VdID0gMTsKICAgICAgaWYgKHdvLT5wcm94eV9hcnApCiAgCWlmIChzaWZwcm94eWFycCh1LCB3by0+aGlzYWRkcikpCi1AQCAtMTgzMCw3ICsxODQ1LDggQEAKK0BAIC0xODQ5LDcgKzE4NjQsOCBAQCBpcGNwX3VwKGYpCiAgICAgICAqLwogICAgICBpZiAoZGVtYW5kKSB7CiAgCWlmIChnby0+b3VyYWRkciAhPSB3by0+b3VyYWRkciB8fCBoby0+aGlzYWRkciAhPSB3by0+aGlzYWRkcikgewpAQCAtNTYsNyArNTcsNyBAQAogIAkgICAgaWYgKGdvLT5vdXJhZGRyICE9IHdvLT5vdXJhZGRyKSB7CiAgCQl3YXJuKCJMb2NhbCBJUCBhZGRyZXNzIGNoYW5nZWQgdG8gJUkiLCBnby0+b3VyYWRkcik7CiAgCQlzY3JpcHRfc2V0ZW52KCJPTERJUExPQ0FMIiwgaXBfbnRvYSh3by0+b3VyYWRkciksIDApOwotQEAgLTE4NTUsNyArMTg3MSwxMiBAQAorQEAgLTE4NzQsNyArMTg5MCwxMiBAQCBpcGNwX3VwKGYpCiAgCiAgCSAgICAvKiBhc3NpZ24gYSBkZWZhdWx0IHJvdXRlIHRocm91Z2ggdGhlIGludGVyZmFjZSBpZiByZXF1aXJlZCAqLwogIAkgICAgaWYgKGlwY3Bfd2FudG9wdGlvbnNbZi0+dW5pdF0uZGVmYXVsdF9yb3V0ZSkgCkBAIC02OSw3ICs3MCw3IEBACiAgCQkgICAgZGVmYXVsdF9yb3V0ZV9zZXRbZi0+dW5pdF0gPSAxOwogIAogIAkgICAgLyogTWFrZSBhIHByb3h5IEFSUCBlbnRyeSBpZiByZXF1ZXN0ZWQuICovCi1AQCAtMTkwNSw3ICsxOTI2LDEyIEBACitAQCAtMTkyNCw3ICsxOTQ1LDEyIEBAIGlwY3BfdXAoZikKICAKICAJLyogYXNzaWduIGEgZGVmYXVsdCByb3V0ZSB0aHJvdWdoIHRoZSBpbnRlcmZhY2UgaWYgcmVxdWlyZWQgKi8KICAJaWYgKGlwY3Bfd2FudG9wdGlvbnNbZi0+dW5pdF0uZGVmYXVsdF9yb3V0ZSkgCkBAIC04Miw3ICs4Myw3IEBACiAgCQlkZWZhdWx0X3JvdXRlX3NldFtmLT51bml0XSA9IDE7CiAgCiAgCS8qIE1ha2UgYSBwcm94eSBBUlAgZW50cnkgaWYgcmVxdWVzdGVkLiAqLwotQEAgLTE5ODMsNyArMjAwOSw3IEBACitAQCAtMjAwMiw3ICsyMDI4LDcgQEAgaXBjcF9kb3duKGYpCiAgCXNpZm5wbW9kZShmLT51bml0LCBQUFBfSVAsIE5QTU9ERV9EUk9QKTsKICAJc2lmZG93bihmLT51bml0KTsKICAJaXBjcF9jbGVhcl9hZGRycyhmLT51bml0LCBpcGNwX2dvdG9wdGlvbnNbZi0+dW5pdF0ub3VyYWRkciwKQEAgLTkxLDcgKzkyLDcgQEAKICAgICAgfQogIAogICAgICAvKiBFeGVjdXRlIHRoZSBpcC1kb3duIHNjcmlwdCAqLwotQEAgLTE5OTksMTIgKzIwMjUsMjEgQEAKK0BAIC0yMDE4LDEyICsyMDQ0LDIxIEBAIGlwY3BfZG93bihmKQogICAqIHByb3h5IGFycCBlbnRyaWVzLCBldGMuCiAgICovCiAgc3RhdGljIHZvaWQKQEAgLTExNSwxMCArMTE2LDExIEBACiAgCWNpZnByb3h5YXJwKHVuaXQsIGhpc2FkZHIpOwogIAlwcm94eV9hcnBfc2V0W3VuaXRdID0gMDsKICAgICAgfQotZGlmZiAtdXJOIHBwcC0yLjQuNS1vcmlnL3BwcGQvaXBjcC5oIHBwcC0yLjQuNS9wcHBkL2lwY3AuaAotLS0tIHBwcC0yLjQuNS1vcmlnL3BwcGQvaXBjcC5oCTIwMTAtMDYtMzAgMTU6NTE6MTIuMDQzNjgyMDYzICswODAwCi0rKysgcHBwLTIuNC41L3BwcGQvaXBjcC5oCTIwMTAtMDYtMzAgMTY6NDA6NDkuNTg2MjAzMTI5ICswODAwCi1AQCAtNzAsNiArNzAsNyBAQAorSW5kZXg6IHBwcC0yLjQuNy9wcHBkL2lwY3AuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBwcC0yLjQuNy5vcmlnL3BwcGQvaXBjcC5oCisrKysgcHBwLTIuNC43L3BwcGQvaXBjcC5oCitAQCAtNzAsNiArNzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBpcGNwX29wdGlvbnMgewogICAgICBib29sIG9sZF9hZGRyczsJCS8qIFVzZSBvbGQgKElQLUFkZHJlc3Nlcykgb3B0aW9uPyAqLwogICAgICBib29sIHJlcV9hZGRyOwkJLyogQXNrIHBlZXIgdG8gc2VuZCBJUCBhZGRyZXNzPyAqLwogICAgICBib29sIGRlZmF1bHRfcm91dGU7CQkvKiBBc3NpZ24gZGVmYXVsdCByb3V0ZSB0aHJvdWdoIGludGVyZmFjZT8gKi8KQEAgLTEyNiwxMCArMTI4LDExIEBACiAgICAgIGJvb2wgcHJveHlfYXJwOwkJLyogTWFrZSBwcm94eSBBUlAgZW50cnkgZm9yIHBlZXI/ICovCiAgICAgIGJvb2wgbmVnX3ZqOwkJLyogVmFuIEphY29ic29uIENvbXByZXNzaW9uPyAqLwogICAgICBib29sIG9sZF92ajsJCS8qIHVzZSBvbGQgKHNob3J0KSBmb3JtIG9mIFZKIG9wdGlvbj8gKi8KLWRpZmYgLXVyTiBwcHAtMi40LjUtb3JpZy9wcHBkL3BwcGQuOCBwcHAtMi40LjUvcHBwZC9wcHBkLjgKLS0tLSBwcHAtMi40LjUtb3JpZy9wcHBkL3BwcGQuOAkyMDEwLTA2LTMwIDE1OjUxOjEyLjA0MzY4MjA2MyArMDgwMAotKysrIHBwcC0yLjQuNS9wcHBkL3BwcGQuOAkyMDEwLTA2LTMwIDE2OjQyOjQ3LjEwMjQxMzg1OSArMDgwMAotQEAgLTEyMSw2ICsxMjEsMTMgQEAKK0luZGV4OiBwcHAtMi40LjcvcHBwZC9wcHBkLjgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwcHAtMi40Ljcub3JpZy9wcHBkL3BwcGQuOAorKysrIHBwcC0yLjQuNy9wcHBkL3BwcGQuOAorQEAgLTEyMSw2ICsxMjEsMTMgQEAgdGhlIGdhdGV3YXksIHdoZW4gSVBDUCBuZWdvdGlhdGlvbiBpcyBzdQogIFRoaXMgZW50cnkgaXMgcmVtb3ZlZCB3aGVuIHRoZSBQUFAgY29ubmVjdGlvbiBpcyBicm9rZW4uICBUaGlzIG9wdGlvbgogIGlzIHByaXZpbGVnZWQgaWYgdGhlIFxmSW5vZGVmYXVsdHJvdXRlXGZSIG9wdGlvbiBoYXMgYmVlbiBzcGVjaWZpZWQuCiAgLlRQCkBAIC0xNDMsNyArMTQ2LDcgQEAKICAuQiBkaXNjb25uZWN0IFxmSXNjcmlwdAogIEV4ZWN1dGUgdGhlIGNvbW1hbmQgc3BlY2lmaWVkIGJ5IFxmSXNjcmlwdFxmUiwgYnkgcGFzc2luZyBpdCB0byBhCiAgc2hlbGwsIGFmdGVyCi1AQCAtNzE3LDcgKzcyNCwxMiBAQAorQEAgLTczNCw3ICs3NDEsMTIgQEAgZGlzYWJsZSBib3RoIGZvcm1zIG9mIGhhcmR3YXJlIGZsb3cgY29udAogIC5UUAogIC5CIG5vZGVmYXVsdHJvdXRlCiAgRGlzYWJsZSB0aGUgXGZJZGVmYXVsdHJvdXRlXGZSIG9wdGlvbi4gIFRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciB3aG8KQEAgLTE1NywxMCArMTYwLDExIEBACiAgY2FuIGRvIHNvIGJ5IHBsYWNpbmcgdGhpcyBvcHRpb24gaW4gdGhlIC9ldGMvcHBwL29wdGlvbnMgZmlsZS4KICAuVFAKICAuQiBub2RlZmxhdGUKLWRpZmYgLXVyTiBwcHAtMi40LjUtb3JpZy9wcHBkL3BwcGQuaCBwcHAtMi40LjUvcHBwZC9wcHBkLmgKLS0tLSBwcHAtMi40LjUtb3JpZy9wcHBkL3BwcGQuaAkyMDEwLTA2LTMwIDE1OjUxOjEyLjA1MDE2NjM5OCArMDgwMAotKysrIHBwcC0yLjQuNS9wcHBkL3BwcGQuaAkyMDEwLTA2LTMwIDE2OjQzOjM2LjUxNDE0ODMyNyArMDgwMAotQEAgLTY0Myw3ICs2NDMsMTEgQEAKK0luZGV4OiBwcHAtMi40LjcvcHBwZC9wcHBkLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwcHAtMi40Ljcub3JpZy9wcHBkL3BwcGQuaAorKysrIHBwcC0yLjQuNy9wcHBkL3BwcGQuaAorQEAgLTY2NSw3ICs2NjUsMTEgQEAgaW50ICBzaWY2YWRkciBfX1AoKGludCwgZXVpNjRfdCwgZXVpNjRfdAogIGludCAgY2lmNmFkZHIgX19QKChpbnQsIGV1aTY0X3QsIGV1aTY0X3QpKTsKICAJCQkJLyogUmVtb3ZlIGFuIElQdjYgYWRkcmVzcyBmcm9tIGkvZiAqLwogICNlbmRpZgpAQCAtMTcyLDE5ICsxNzYsMjAgQEAKICAJCQkJLyogQ3JlYXRlIGRlZmF1bHQgcm91dGUgdGhyb3VnaCBpL2YgKi8KICBpbnQgIGNpZmRlZmF1bHRyb3V0ZSBfX1AoKGludCwgdV9pbnQzMl90LCB1X2ludDMyX3QpKTsKICAJCQkJLyogRGVsZXRlIGRlZmF1bHQgcm91dGUgdGhyb3VnaCBpL2YgKi8KLWRpZmYgLXVyTiBwcHAtMi40LjUtb3JpZy9wcHBkL3N5cy1saW51eC5jIHBwcC0yLjQuNS9wcHBkL3N5cy1saW51eC5jCi0tLS0gcHBwLTIuNC41LW9yaWcvcHBwZC9zeXMtbGludXguYwkyMDEwLTA2LTMwIDE1OjUxOjEyLjA1MDE2NjM5OCArMDgwMAotKysrIHBwcC0yLjQuNS9wcHBkL3N5cy1saW51eC5jCTIwMTAtMDYtMzAgMTY6NTQ6MDAuMzYyNzE2MjMxICswODAwCi1AQCAtMjA2LDYgKzIwNiw4IEBACi0gCitJbmRleDogcHBwLTIuNC43L3BwcGQvc3lzLWxpbnV4LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwcHAtMi40Ljcub3JpZy9wcHBkL3N5cy1saW51eC5jCisrKysgcHBwLTIuNC43L3BwcGQvc3lzLWxpbnV4LmMKK0BAIC0yMDcsNiArMjA3LDggQEAgc3RhdGljIHVuc2lnbmVkIGNoYXIgaW5idWZbNTEyXTsgLyogYnVmZgogIHN0YXRpYyBpbnQJaWZfaXNfdXA7CS8qIEludGVyZmFjZSBoYXMgYmVlbiBtYXJrZWQgdXAgKi8KKyBzdGF0aWMgaW50CWlmNl9pc191cDsJLyogSW50ZXJmYWNlIGhhcyBiZWVuIG1hcmtlZCB1cCBmb3IgSVB2NiwgdG8gaGVscCBkaWZmZXJlbnRpYXRlICovCiAgc3RhdGljIGludAloYXZlX2RlZmF1bHRfcm91dGU7CS8qIEdhdGV3YXkgZm9yIGRlZmF1bHQgcm91dGUgYWRkZWQgKi8KICtzdGF0aWMgc3RydWN0IHJ0ZW50cnkgb2xkX2RlZl9ydDsgICAgICAgLyogT2xkIGRlZmF1bHQgcm91dGUgKi8KICtzdGF0aWMgaW50ICAgICAgIGRlZmF1bHRfcnRfcmVwbF9yZXN0OyAgLyogcmVwbGFjZSBhbmQgcmVzdG9yZSBvbGQgZGVmYXVsdCBydCAqLwogIHN0YXRpYyB1X2ludDMyX3QgcHJveHlfYXJwX2FkZHI7CS8qIEFkZHIgZm9yIHByb3h5IGFycCBlbnRyeSBhZGRlZCAqLwogIHN0YXRpYyBjaGFyIHByb3h5X2FycF9kZXZbMTZdOwkJLyogRGV2aWNlIGZvciBwcm94eSBhcnAgZW50cnkgKi8KICBzdGF0aWMgdV9pbnQzMl90IG91cl9vbGRfYWRkcjsJCS8qIGZvciBkZXRlY3RpbmcgYWRkcmVzcyBjaGFuZ2VzICovCi1AQCAtMTUzNyw2ICsxNTM5LDkgQEAKK0BAIC0xNTQ1LDYgKzE1NDcsOSBAQCBzdGF0aWMgaW50IHJlYWRfcm91dGVfdGFibGUoc3RydWN0IHJ0ZW50CiAgCXAgPSBOVUxMOwogICAgICB9CiAgCkBAIC0xOTQsNyArMTk5LDcgQEAKICAgICAgU0lOX0FERFIocnQtPnJ0X2RzdCkgPSBzdHJ0b3VsKGNvbHNbcm91dGVfZGVzdF9jb2xdLCBOVUxMLCAxNik7CiAgICAgIFNJTl9BRERSKHJ0LT5ydF9nYXRld2F5KSA9IHN0cnRvdWwoY29sc1tyb3V0ZV9nd19jb2xdLCBOVUxMLCAxNik7CiAgICAgIFNJTl9BRERSKHJ0LT5ydF9nZW5tYXNrKSA9IHN0cnRvdWwoY29sc1tyb3V0ZV9tYXNrX2NvbF0sIE5VTEwsIDE2KTsKLUBAIC0xNjA2LDIwICsxNjExLDUxIEBACitAQCAtMTYxNCwyMCArMTYxOSw1MSBAQCBpbnQgaGF2ZV9yb3V0ZV90byh1X2ludDMyX3QgYWRkcikKICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKgogICAqIHNpZmRlZmF1bHRyb3V0ZSAtIGFzc2lnbiBhIGRlZmF1bHQgcm91dGUgdGhyb3VnaCB0aGUgYWRkcmVzcyBnaXZlbi4KQEAgLTI2MCw3ICsyNjUsNyBAQAogICAgICB9CiAgCiAgICAgIG1lbXNldCAoJnJ0LCAwLCBzaXplb2YgKHJ0KSk7Ci1AQCAtMTYzOCw2ICsxNjc0LDEyIEBACitAQCAtMTY0Niw2ICsxNjgyLDEyIEBAIGludCBzaWZkZWZhdWx0cm91dGUgKGludCB1bml0LCB1X2ludDMyX3QKICAJICAgIGVycm9yKCJkZWZhdWx0IHJvdXRlIGlvY3RsKFNJT0NBRERSVCk6ICVtIik7CiAgCXJldHVybiAwOwogICAgICB9CkBAIC0yNzMsNyArMjc4LDcgQEAKICAKICAgICAgaGF2ZV9kZWZhdWx0X3JvdXRlID0gMTsKICAgICAgcmV0dXJuIDE7Ci1AQCAtMTY3Myw2ICsxNzE1LDE2IEBACitAQCAtMTY4MSw2ICsxNzIzLDE2IEBAIGludCBjaWZkZWZhdWx0cm91dGUgKGludCB1bml0LCB1X2ludDMyX3QKICAJICAgIHJldHVybiAwOwogIAl9CiAgICAgIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvbWFrZWZpbGUtcmVtb3ZlLWhhcmQtdXNyLXJlZmVyZW5jZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvbWFrZWZpbGUtcmVtb3ZlLWhhcmQtdXNyLXJlZmVyZW5jZS5wYXRjaAppbmRleCBkNTk3MTdlLi44YTY5Mzk2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwL21ha2VmaWxlLXJlbW92ZS1oYXJkLXVzci1yZWZlcmVuY2UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9tYWtlZmlsZS1yZW1vdmUtaGFyZC11c3ItcmVmZXJlbmNlLnBhdGNoCkBAIC02LDEwICs2LDExIEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAotZGlmZiAtdXJOIHBwcC0yLjQuNS1vcmlnL3BwcGQvTWFrZWZpbGUubGludXggcHBwLTIuNC41L3BwcGQvTWFrZWZpbGUubGludXgKLS0tLSBwcHAtMi40LjUtb3JpZy9wcHBkL01ha2VmaWxlLmxpbnV4CTIwMTAtMDYtMzAgMTU6NTE6MTIuMDQzNjgyMDYzICswODAwCi0rKysgcHBwLTIuNC41L3BwcGQvTWFrZWZpbGUubGludXgJMjAxMC0wNi0zMCAxNzowODoyMS44MDYzNjMwNDIgKzA4MDAKLUBAIC0xMTcsMTAgKzExNywxMCBAQAorSW5kZXg6IHBwcC0yLjQuNy9wcHBkL01ha2VmaWxlLmxpbnV4Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcHBwLTIuNC43Lm9yaWcvcHBwZC9NYWtlZmlsZS5saW51eAorKysrIHBwcC0yLjQuNy9wcHBkL01ha2VmaWxlLmxpbnV4CitAQCAtMTIwLDEwICsxMjAsMTAgQEAgQ0ZMQUdTICAgKz0gLURIQVNfU0hBRE9XCiAgI0xJQlMgICAgICs9IC1sc2hhZG93ICQoTElCUykKICBlbmRpZgogIApAQCAtMjAsOSArMjEsOSBAQAogLWVuZGlmCiArI2VuZGlmCiAgCi0gaWZkZWYgTkVFRERFUwotIGlmbmRlZiBVU0VfQ1JZUFQKLUBAIC0xNjksMTAgKzE2OSwxMCBAQAorIGlmZGVmIFVTRV9MSUJVVElMCisgQ0ZMQUdTCSs9IC1ESEFWRV9MT0dXVE1QPTEKK0BAIC0xNzcsMTAgKzE3NywxMCBAQCBMSUJTCSs9IC1sZGwKICBlbmRpZgogIAogIGlmZGVmIEZJTFRFUgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9wcHAtZml4LWJ1aWxkaW5nLXdpdGgtbGludXgtNC44LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9wcHAtZml4LWJ1aWxkaW5nLXdpdGgtbGludXgtNC44LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzdiMGRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvcHBwLWZpeC1idWlsZGluZy13aXRoLWxpbnV4LTQuOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gM2RhMTlhZjUzZTJlZWUyZTc3YjQ1NmNmYmI5ZDYzM2IwNjY1NmQzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDEzIE9jdCAyMDE2IDEzOjQxOjQzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBwcDogZml4IGJ1aWxkaW5nIHdpdGggbGludXgtNC44Ci0KLUZpeCBhIGJ1aWxkIGVycm9yIHdoZW4gdXNpbmcgdGhlIGxpbnV4LTQuOCBoZWFkZXJzIHRoYXQgcmVzdWx0cyBpbjoKLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHBwcG9lLmg6ODc6MCwKLSAgICAgICAgICAgICAgICAgZnJvbSBwbHVnaW4uYzoyOToKLS4uL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaDoyMTE6ODogbm90ZTogb3JpZ2luYWxseSBkZWZpbmVkIGhlcmUKLSBzdHJ1Y3QgaW42X2FkZHIKLSAgICAgICAgXn5+fn5+fn4KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi91c3IvaW5jbHVkZS9saW51eC9pZl9wcHBvbDJ0cC5oOjIwOjAsCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vdXNyL2luY2x1ZGUvbGludXgvaWZfcHBwb3guaDoyNiwKLSAgICAgICAgICAgICAgICAgZnJvbSBwbHVnaW4uYzo1MjoKLS4uL3Vzci9pbmNsdWRlL2xpbnV4L2luNi5oOjQ5Ojg6IGVycm9yOiByZWRlZmluaXRpb24gb2YgJ3N0cnVjdCBzb2NrYWRkcl9pbjYnCi0gc3RydWN0IHNvY2thZGRyX2luNiB7Ci0gICAgICAgIF5+fn5+fn5+fn5+fgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbMV0KLQotWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXVsdXNtYWNrL3BwcC9wdWxsLzY5Ci0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmgKLWluZGV4IDlhYjJlZWUuLjk2ZDI3OTQgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaAotKysrIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmgKLUBAIC04NCw3ICs4NCw3IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBVSU5UMzJfdDsKLSAjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotKyNpbmNsdWRlIDxsaW51eC9pbi5oPgotIAotICNpZmRlZiBIQVZFX05FVElORVRfSUZfRVRIRVJfSAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0tIAotMi44LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHBfMi40LjcuYmIKaW5kZXggYjJjNGQ0Yy4uYTVmNzY0ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwcC1GaXgtY29tcGlsYXRpb24tZXJyb3JzLWluLU1ha2VmaWxlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3BwcEAuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtQ1ZFLTIwMTUtMzMxMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wcHAtZml4LWJ1aWxkaW5nLXdpdGgtbGludXgtNC44LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHBwb2UtaW5jbHVkZS1uZXRpbmV0LWluLmgtYmVmb3JlLWxpbnV4LWluLmgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wcHAtUmVtb3ZlLXVubmVlZGVkLWluY2x1ZGUucGF0Y2ggXAogIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LTEuMjQuMS9pZnVwZG93bi1wYXNzLWludGVyZmFjZS1kZXZpY2UtbmFtZS1mb3ItaXB2Ni1yb3V0ZS1jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC0xLjI0LjEvaWZ1cGRvd24tcGFzcy1pbnRlcmZhY2UtZGV2aWNlLW5hbWUtZm9yLWlwdjYtcm91dGUtYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcxNTM3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LTEuMjQuMS9pZnVwZG93bi1wYXNzLWludGVyZmFjZS1kZXZpY2UtbmFtZS1mb3ItaXB2Ni1yb3V0ZS1jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSAwNmZjZjk4ZjZjYTQwZGM2YjgyM2Q3ZDYyMzFhMjQwYTE3OTRlZjJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI4IEZlYiAyMDE3IDEwOjQwOjM3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlmdXBkb3duOiBwYXNzIGludGVyZmFjZSBkZXZpY2UgbmFtZSBmb3IgaXB2NiByb3V0ZSBjb21tYW5kcwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1jb21taXQgMDI4NTI0MzE3ZDhkMDAxMWVkMzhlODZlNTA3YTA2NzM4YTViNWE5NyBmcm9tIHVwc3RyZWFtCi0KLUlQdjYgcm91dGVzIG5lZWQgdGhlIGRldmljZSBhcmd1bWVudCBmb3IgbGluay1sb2NhbCByb3V0ZXMsIG9yIHRoZXkKLWNhbm5vdCBiZSB1c2VkIGF0IGFsbC4gRS5nLiAiZ2F0ZXdheSBmZTgwOjpkZWYiIHNlZW1zIHRvIGJlIHVzZWQgaW4KLXNvbWUgcGxhY2VzLCBidXQga2VybmVsIHJlZnVzZXMgdG8gaW5zZXJ0IHRoZSByb3V0ZSB1bmxlc3MgZGV2aWNlCi1uYW1lIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHRoZSByb3V0ZSBhZGRpdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogVGltbyBUZXLDpHMgPHRpbW8udGVyYXNAaWtpLmZpPgotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBuZXR3b3JraW5nL2lmdXBkb3duLmMgfCA3ICsrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbmV0d29ya2luZy9pZnVwZG93bi5jIGIvbmV0d29ya2luZy9pZnVwZG93bi5jCi1pbmRleCAxN2JjNGU5Li5hMDBmNjhkIDEwMDY0NAotLS0tIGEvbmV0d29ya2luZy9pZnVwZG93bi5jCi0rKysgYi9uZXR3b3JraW5nL2lmdXBkb3duLmMKLUBAIC0zOTQsOCArMzk0LDggQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgc3RhdGljX3VwNihzdHJ1Y3QgaW50ZXJmYWNlX2RlZm5fdCAqaWZkLCBleGVjZm4gKmV4ZWMpCi0gIyBpZiBFTkFCTEVfRkVBVFVSRV9JRlVQRE9XTl9JUAotIAlyZXN1bHQgPSBleGVjdXRlKCJpcCBhZGRyIGFkZCAlYWRkcmVzcyUvJW5ldG1hc2slIGRldiAlaWZhY2UlW1sgbGFiZWwgJWxhYmVsJV1dIiwgaWZkLCBleGVjKTsKLSAJcmVzdWx0ICs9IGV4ZWN1dGUoImlwIGxpbmsgc2V0W1sgbXR1ICVtdHUlXV1bWyBhZGRyICVod2FkZHJlc3MlXV0gJWlmYWNlJSB1cCIsIGlmZCwgZXhlYyk7Ci0tCS8qIFdhczogIltbIGlwIC4uLi4lZ2F0ZXdheSUgXV0iLiBSZW1vdmVkIGV4dHJhIHNwYWNlcyB3L28gY2hlY2tpbmcgKi8KLS0JcmVzdWx0ICs9IGV4ZWN1dGUoIltbaXAgcm91dGUgYWRkIDo6LzAgdmlhICVnYXRld2F5JV1dW1sgbWV0cmljICVtZXRyaWMlXV0iLCBpZmQsIGV4ZWMpOwotKwkvKiBSZXBvcnRlZGx5LCBJUHY2IG5lZWRzICJkZXYgJWlmYWNlJSIsIGJ1dCBJUHY0IGRvZXMgbm90OiAqLwotKwlyZXN1bHQgKz0gZXhlY3V0ZSgiW1tpcCByb3V0ZSBhZGQgOjovMCB2aWEgJWdhdGV3YXklIGRldiAlaWZhY2UlXV1bWyBtZXRyaWMgJW1ldHJpYyVdXSIsIGlmZCwgZXhlYyk7Ci0gIyBlbHNlCi0gCXJlc3VsdCA9IGV4ZWN1dGUoImlmY29uZmlnICVpZmFjZSVbWyBtZWRpYSAlbWVkaWElXV1bWyBodyAlaHdhZGRyZXNzJV1dW1sgbXR1ICVtdHUlXV0gdXAiLCBpZmQsIGV4ZWMpOwotIAlyZXN1bHQgKz0gZXhlY3V0ZSgiaWZjb25maWcgJWlmYWNlJSBhZGQgJWFkZHJlc3MlLyVuZXRtYXNrJSIsIGlmZCwgZXhlYyk7Ci1AQCAtNDIxLDcgKzQyMSw4IEBAIHN0YXRpYyBpbnQgRkFTVF9GVU5DIHY0dHVubmVsX3VwKHN0cnVjdCBpbnRlcmZhY2VfZGVmbl90ICppZmQsIGV4ZWNmbiAqZXhlYykKLSAJCQkiJWVuZHBvaW50JVtbIGxvY2FsICVsb2NhbCVdXVtbIHR0bCAldHRsJV1dIiwgaWZkLCBleGVjKTsKLSAJcmVzdWx0ICs9IGV4ZWN1dGUoImlwIGxpbmsgc2V0ICVpZmFjZSUgdXAiLCBpZmQsIGV4ZWMpOwotIAlyZXN1bHQgKz0gZXhlY3V0ZSgiaXAgYWRkciBhZGQgJWFkZHJlc3MlLyVuZXRtYXNrJSBkZXYgJWlmYWNlJSIsIGlmZCwgZXhlYyk7Ci0tCXJlc3VsdCArPSBleGVjdXRlKCJbW2lwIHJvdXRlIGFkZCA6Oi8wIHZpYSAlZ2F0ZXdheSVdXSIsIGlmZCwgZXhlYyk7Ci0rCS8qIFJlcG9ydGVkbHksIElQdjYgbmVlZHMgImRldiAlaWZhY2UlIiwgYnV0IElQdjQgZG9lcyBub3Q6ICovCi0rCXJlc3VsdCArPSBleGVjdXRlKCJbW2lwIHJvdXRlIGFkZCA6Oi8wIHZpYSAlZ2F0ZXdheSUgZGV2ICVpZmFjZSVdXSIsIGlmZCwgZXhlYyk7Ci0gCXJldHVybiAoKHJlc3VsdCA9PSA0KSA/IDQgOiAwKTsKLSB9Ci0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gtaW5pdHRhYl8xLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LWluaXR0YWJfMS4yNy4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LWluaXR0YWJfMS4yNC4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LWluaXR0YWJfMS4yNy4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCmluZGV4IGE2YmZkNDYuLmQxNjc1YzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCkBAIC0xMDYsNyArMTA2LDcgQEAKIH0KIAogZG9fcHJlcGFyZV9jb25maWcgKCkgewotCWlmIFsgIiRCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMiID0gIjEiIF07IHRoZW4KKwlpZiBbICIke0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFU30iID0gIjEiIF07IHRoZW4KIAkJZXhwb3J0IEtDT05GSUdfTk9USU1FU1RBTVA9MQogCWZpCiAJc2VkIC1lICcvQ09ORklHX1NUQVRJQy9kJyBcCkBAIC0xNDYsNyArMTQ2LDcgQEAKIAogZG9fY29tcGlsZSgpIHsKIAl1bnNldCBDRkxBR1MgQ1BQRkxBR1MgQ1hYRkxBR1MgTERGTEFHUwotCWlmIFsgIiRCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMiID0gIjEiIF07IHRoZW4KKwlpZiBbICIke0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFU30iID0gIjEiIF07IHRoZW4KIAkJZXhwb3J0IEtDT05GSUdfTk9USU1FU1RBTVA9MQogCWZpCiAJaWYgWyAiJHtCVVNZQk9YX1NQTElUX1NVSUR9IiA9ICIxIiAtYSB4YGdyZXAgIkNPTkZJR19GRUFUVVJFX0lORElWSURVQUw9eSIgLmNvbmZpZ2AgPSB4IF07IHRoZW4KQEAgLTE1OCw2ICsxNTgsMTIgQEAKIAkJY3AgLmNvbmZpZyAuY29uZmlnLm9yaWcKIAkJb2VfcnVubWFrZSBidXN5Ym94LmNmZy5zdWlkCiAJCW9lX3J1bm1ha2UgYnVzeWJveC5jZmcubm9zdWlkCisKKwkJIyB3b3JrYXJvdW5kIGZvciBzdWlkIGJ1ZyAxMDM0NgorCQlpZiAhIGdyZXAgLXEgIkNPTkZJR19TSF9JU19OT05FIiBidXN5Ym94LmNmZy5ub3N1aWQ7IHRoZW4KKwkJCWVjaG8gIkNPTkZJR19TSF9JU19OT05FIiA+PiBidXN5Ym94LmNmZy5zdWlkCisJCWZpCisKIAkJZm9yIGkgaW4gYGNhdCBidXN5Ym94LmNmZy5zdWlkIGJ1c3lib3guY2ZnLm5vc3VpZGA7IGRvCiAJCQllY2hvICIjICRpIGlzIG5vdCBzZXQiID4+IC5jb25maWcuZGlzYWJsZS5hcHBzCiAJCWRvbmUKQEAgLTE2NywxMiArMTczLDI0IEBACiAJCQljYXQgYnVzeWJveC5jZmcuJHMgfCB3aGlsZSByZWFkIGl0ZW07IGRvCiAJCQkJZ3JlcCAtdyAiJGl0ZW0iIC5jb25maWcub3JpZwogCQkJZG9uZSA+IC5jb25maWcuYXBwLiRzCisKKwkJCSMgd29ya2Fyb3VuZCBmb3Igc3VpZCBidWcgMTAzNDYKKwkJCWlmIFsgIiRzIiA9ICJzdWlkIiBdIDsgdGhlbgorCQkJCXNlZCAicy8uKkNPTkZJR19TSF9JU19OT05FLiokL0NPTkZJR19TSF9JU19OT05FPXkvIiAtaSAuY29uZmlnLmFwcC5zdWlkCisJCQlmaQorCiAJCQltZXJnZV9jb25maWcuc2ggLW0gLmNvbmZpZy5ub25hcHBzIC5jb25maWcuYXBwLiRzCiAJCQlvZV9ydW5tYWtlIGJ1c3lib3hfdW5zdHJpcHBlZAogCQkJbXYgYnVzeWJveF91bnN0cmlwcGVkIGJ1c3lib3guJHMKIAkJCW9lX3J1bm1ha2UgYnVzeWJveC5saW5rcwogCQkJbXYgYnVzeWJveC5saW5rcyBidXN5Ym94LmxpbmtzLiRzCiAJCWRvbmUKKworCQkjIGhhcmQgZmFpbCBpZiBzaCBpcyBiZWluZyBsaW5rZWQgdG8gdGhlIHN1aWQgYnVzeWJveCAoZGV0ZWN0cyBidWcgMTAzNDYpCisJCWlmIGdyZXAgLXEgLXggIi9iaW4vc2giIGJ1c3lib3gubGlua3Muc3VpZDsgdGhlbgorCQkJYmJmYXRhbCAiYnVzeWJveCBzdWlkIGJpbmFyeSBpbmNvcnJlY3RseSBwcm92aWRlcyAvYmluL3NoIgorCQlmaQorCiAJCSMgY29weSAuY29uZmlnLm9yaWcgYmFjayB0byAuY29uZmlnLCBiZWNhdXNlIHRoZSBpbnN0YWxsIHByb2Nlc3MgbWF5IGNoZWNrIHRoaXMgZmlsZQogCQljcCAuY29uZmlnLm9yaWcgLmNvbmZpZwogCQkjIGNsZWFudXAKQEAgLTIwNiw3ICsyMjQsNyBAQAogCQkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vYnVzeWJveC5ub3N1aWQgJHtEfSR7YmFzZV9iaW5kaXJ9CiAJCQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9idXN5Ym94LmxpbmtzLnN1aWQgJHtEfSR7c3lzY29uZmRpcn0KIAkJCWluc3RhbGwgLW0gMDY0NCAke1N9L2J1c3lib3gubGlua3Mubm9zdWlkICR7RH0ke3N5c2NvbmZkaXJ9Ci0JCQlpZiBncmVwIC1xICJDT05GSUdfRkVBVFVSRV9TSF9JU19BU0g9eSIgJHtCfS8uY29uZmlnOyB0aGVuCisJCQlpZiBncmVwIC1xICJDT05GSUdfU0hfSVNfQVNIPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgogCQkJCWxuIC1zZiBidXN5Ym94Lm5vc3VpZCAke0R9JHtiYXNlX2JpbmRpcn0vc2gKIAkJCWZpCiAJCQkjIEtlZXAgYSBkZWZhdWx0IGJ1c3lib3ggZm9yIHBlb3BsZSB3aG8gd2FudCB0byBpbnZva2UgYnVzeWJveCBkaXJlY3RseS4KQEAgLTIyMCw3ICsyMzgsNyBAQAogCQkJCWluc3RhbGwgLW0gMDc1NSAke0J9L2J1c3lib3ggJHtEfSR7YmFzZV9iaW5kaXJ9CiAJCQlmaQogCQkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vYnVzeWJveC5saW5rcyAke0R9JHtzeXNjb25mZGlyfQotCQkJaWYgZ3JlcCAtcSAiQ09ORklHX0ZFQVRVUkVfU0hfSVNfQVNIPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgorCQkJaWYgZ3JlcCAtcSAiQ09ORklHX1NIX0lTX0FTSD15IiAke0J9Ly5jb25maWc7IHRoZW4KIAkJCQlsbiAtc2YgYnVzeWJveCAke0R9JHtiYXNlX2JpbmRpcn0vc2gKIAkJCWZpCiAJCQkjIFdlIG1ha2UgdGhpcyBzeW1saW5rIGhlcmUgdG8gZWxpbWluYXRlIHRoZSBlcnJvciB3aGVuIHVwZ3JhZGluZyB0b2dldGhlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWZsb2NrLXVwZGF0ZS10aGUtYmVoYXZpb3VyLW9mLWMtcGFyYW1ldGVyLXRvLW1hdGNoLXUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtZmxvY2stdXBkYXRlLXRoZS1iZWhhdmlvdXItb2YtYy1wYXJhbWV0ZXItdG8tbWF0Y2gtdS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg1MjBmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtZmxvY2stdXBkYXRlLXRoZS1iZWhhdmlvdXItb2YtYy1wYXJhbWV0ZXItdG8tbWF0Y2gtdS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gZTFkNDI2ZmQ2NWMwMGE2ZDAxYTEwZDg1ZWRmOGEyOTRhZThhMmQyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDI0IEFwciAyMDE2IDE4OjE5OjQ5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZsb2NrOiBmaXggLWM7IGltcHJvdmUgZXJyb3IgaGFuZGxpbmcgb2YgZm9yaytleGVjCi0KLWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkICAgICBuZXcgICBkZWx0YQotZmxvY2tfbWFpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTQgICAgIDMzNCAgICAgKzgwCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi0gdXRpbC1saW51eC9mbG9jay5jIHwgMTkgKysrKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdXRpbC1saW51eC9mbG9jay5jIGIvdXRpbC1saW51eC9mbG9jay5jCi1pbmRleCAwNWE3NDdmLi41MzlhODM1IDEwMDY0NAotLS0tIGEvdXRpbC1saW51eC9mbG9jay5jCi0rKysgYi91dGlsLWxpbnV4L2Zsb2NrLmMKLUBAIC01Nyw3ICs1Nyw2IEBAIGludCBmbG9ja19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCi0gCS8qIElmIGl0IGlzICJmbG9jayBGSUxFIC1jIFBST0ciLCB0aGVuIC1jIGlzbid0IGNhdWdodCBieSBnZXRvcHQzMjoKLSAJICogd2UgdXNlICIrIiBpbiBvcmRlciB0byBzdXBwb3J0ICJmbG9jayAtb3B0IEZJTEUgUFJPRyAtd2l0aC1vcHRzIiwKLSAJICogd2UgbmVlZCB0byByZW1vdmUgLWMgYnkgaGFuZC4KLS0JICogVE9ETzogaW4gdXBzdHJlYW0sIC1jICdQUk9HIEFSR1MnIG1lYW5zICJydW4gc2ggLWMgJ1BST0cgQVJHUyciCi0gCSAqLwotIAlpZiAoYXJndlswXQotIAkgJiYgYXJndlswXVswXSA9PSAnLScKLUBAIC02Niw2ICs2NSw5IEBAIGludCBmbG9ja19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCi0gCSAgICApCi0gCSkgewotIAkJYXJndisrOwotKwkJaWYgKGFyZ3ZbMV0pCi0rCQkJYmJfZXJyb3JfbXNnX2FuZF9kaWUoIi1jIHRha2VzIG9ubHkgb25lIGFyZ3VtZW50Iik7Ci0rCQlvcHQgfD0gT1BUX2M7Ci0gCX0KLSAKLSAJaWYgKE9QVF9zID09IExPQ0tfU0ggJiYgT1BUX3ggPT0gTE9DS19FWCAmJiBPUFRfbiA9PSBMT0NLX05CICYmIE9QVF91ID09IExPQ0tfVU4pIHsKLUBAIC05MCw4ICs5MiwyMSBAQCBpbnQgZmxvY2tfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQotIAkJYmJfcGVycm9yX25vbXNnX2FuZF9kaWUoKTsKLSAJfQotIAotLQlpZiAoYXJndlswXSkKLSsJaWYgKGFyZ3ZbMF0pIHsKLSsJCWlmICghKG9wdCAmIE9QVF9jKSkgewotKwkJCWludCByYyA9IHNwYXduX2FuZF93YWl0KGFyZ3YpOwotKwkJCWlmIChyYyA8IDApCi0rCQkJCWJiX3NpbXBsZV9wZXJyb3JfbXNnKGFyZ3ZbMF0pOwotKwkJCXJldHVybiByYzsKLSsJCX0KLSsJCS8qIC1jICdQUk9HIEFSR1MnIG1lYW5zICJydW4gc2ggLWMgJ1BST0cgQVJHUyciICovCi0rCQlhcmd2IC09IDI7Ci0rCQlhcmd2WzBdID0gKGNoYXIqKWdldF9zaGVsbF9uYW1lKCk7Ci0rCQlhcmd2WzFdID0gKGNoYXIqKSItYyI7Ci0rCQkvKiBhcmd2WzJdID0gIlBST0cgQVJHUyI7ICovCi0rCQkvKiBhcmd2WzNdID0gTlVMTDsgKi8KLSAJCXJldHVybiBzcGF3bl9hbmRfd2FpdChhcmd2KTsKLSsJfQotIAotIAlyZXR1cm4gRVhJVF9TVUNDRVNTOwotIH0KLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWlwLWZpeC1hbi1pbXByb3Blci1vcHRpbWl6YXRpb24tcmVxLnIucnRtX3Njb3BlLW1heS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtaXAtZml4LWFuLWltcHJvcGVyLW9wdGltaXphdGlvbi1yZXEuci5ydG1fc2NvcGUtbWF5LS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODEyYTUwNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtaXAtZml4LWFuLWltcHJvcGVyLW9wdGltaXphdGlvbi1yZXEuci5ydG1fc2NvcGUtbWF5LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gMzRlY2MzYjdhZWZkZDZjMzFlODY5MWJkNTQ4NTAzN2JiYWJlZGJkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDE0IEF1ZyAyMDE2IDAxOjMwOjM0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlwOiBmaXggYW4gaW1wcm9wZXIgb3B0aW1pemF0aW9uOiByZXEuci5ydG1fc2NvcGUgbWF5IGJlCi0gbm9uemVybyBoZXJlCi0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KLQotIG5ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMgfCAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jCi1pbmRleCBlNjc0ZTlhMGQuLjQ4ZGM2ZTNkOSAxMDA2NDQKLS0tLSBhL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMKLSsrKyBiL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMKLUBAIC0zNjIsMTAgKzM2Miw5IEBAIElGX0ZFQVRVUkVfSVBfUlVMRShBUkdfdGFibGUsKQotIAkJcmVxLnIucnRtX3Njb3BlID0gUlRfU0NPUEVfTk9XSEVSRTsKLSAKLSAJaWYgKGNtZCAhPSBSVE1fREVMUk9VVEUpIHsKLSsJCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX1VOSVZFUlNFOwotIAkJaWYgKFJUUFJPVF9CT09UICE9IDApCi0gCQkJcmVxLnIucnRtX3Byb3RvY29sID0gUlRQUk9UX0JPT1Q7Ci0tCQlpZiAoUlRfU0NPUEVfVU5JVkVSU0UgIT0gMCkKLS0JCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9VTklWRVJTRTsKLSAJCWlmIChSVE5fVU5JQ0FTVCAhPSAwKQotIAkJCXJlcS5yLnJ0bV90eXBlID0gUlROX1VOSUNBU1Q7Ci0gCX0KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1pcHJvdXRlLXN1cHBvcnQtc2NvcGUtLi1DbG9zZXMtODU2MS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1pcHJvdXRlLXN1cHBvcnQtc2NvcGUtLi1DbG9zZXMtODU2MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZiYzc2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtaXByb3V0ZS1zdXBwb3J0LXNjb3BlLS4tQ2xvc2VzLTg1NjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotRnJvbSBjZTRiYzFlZDA0ODIzM2U4OWVlNGNiOTU4MzBiZjZmMDFkNTIzZDFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFdlZCwgMzAgRGVjIDIwMTUgMTc6MzI6NTEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gaXByb3V0ZTogc3VwcG9ydCAic2NvcGUiLiBDbG9zZXMgODU2MQotCi1mdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZCAgICAgbmV3ICAgZGVsdGEKLWlwcm91dGVfbW9kaWZ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDUxICAgIDExMjAgICAgICs2OQotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1Nb2RpZmllZCBwYXRjaCB0byBidWlsZCBhZ2FpbnN0IGJ1c3lib3ggMS4yNC4xOgotLSBzL2ludmFyZ18xX3RvXzIvaW52YXJnCi1TaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci0tLS0KLSBuZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jIHwgNTIgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jIGIvbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYwotaW5kZXggZDIzMmVlNmZkLi44MjgyNzQ4OGYgMTAwNjQ0Ci0tLS0gYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jCi0rKysgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jCi1AQCAtMzEzLDEyICszMTMsMTMgQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgcHJpbnRfcm91dGUoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8gVU5VU0VEX1BBUkFNLAotIHN0YXRpYyBpbnQgaXByb3V0ZV9tb2RpZnkoaW50IGNtZCwgdW5zaWduZWQgZmxhZ3MsIGNoYXIgKiphcmd2KQotIHsKLSAJc3RhdGljIGNvbnN0IGNoYXIga2V5d29yZHNbXSBBTElHTjEgPQotLQkJInNyY1wwIiJ2aWFcMCIibXR1XDAiImxvY2tcMCIicHJvdG9jb2xcMCJJRl9GRUFUVVJFX0lQX1JVTEUoInRhYmxlXDAiKQotKwkJInNyY1wwIiJ2aWFcMCIibXR1XDAiImxvY2tcMCIic2NvcGVcMCIicHJvdG9jb2xcMCJJRl9GRUFUVVJFX0lQX1JVTEUoInRhYmxlXDAiKQotIAkJImRldlwwIiJvaWZcMCIidG9cMCIibWV0cmljXDAiIm9ubGlua1wwIjsKLSAJZW51bSB7Ci0gCQlBUkdfc3JjLAotIAkJQVJHX3ZpYSwKLSAJCUFSR19tdHUsIFBBUk1fbG9jaywKLSsJCUFSR19zY29wZSwKLSAJCUFSR19wcm90b2NvbCwKLSBJRl9GRUFUVVJFX0lQX1JVTEUoQVJHX3RhYmxlLCkKLSAJCUFSR19kZXYsCi1AQCAtMzQ0LDYgKzM0NSw3IEBAIElGX0ZFQVRVUkVfSVBfUlVMRShBUkdfdGFibGUsKQotIAl1bnNpZ25lZCBteGxvY2sgPSAwOwotIAljaGFyICpkID0gTlVMTDsKLSAJc21hbGx1aW50IG9rID0gMDsKLSsJc21hbGx1aW50IHNjb3BlX29rID0gMDsKLSAJaW50IGFyZzsKLSAKLSAJbWVtc2V0KCZyZXEsIDAsIHNpemVvZihyZXEpKTsKLUBAIC0zNTIsMTUgKzM1NCwxOCBAQCBJRl9GRUFUVVJFX0lQX1JVTEUoQVJHX3RhYmxlLCkKLSAJcmVxLm4ubmxtc2dfZmxhZ3MgPSBOTE1fRl9SRVFVRVNUIHwgZmxhZ3M7Ci0gCXJlcS5uLm5sbXNnX3R5cGUgPSBjbWQ7Ci0gCXJlcS5yLnJ0bV9mYW1pbHkgPSBwcmVmZXJyZWRfZmFtaWx5OwotLQlpZiAoUlRfVEFCTEVfTUFJTikgLyogaWYgaXQgaXMgemVybywgbWVtc2V0IGFscmVhZHkgZGlkIGl0ICovCi0rCWlmIChSVF9UQUJMRV9NQUlOICE9IDApIC8qIGlmIGl0IGlzIHplcm8sIG1lbXNldCBhbHJlYWR5IGRpZCBpdCAqLwotIAkJcmVxLnIucnRtX3RhYmxlID0gUlRfVEFCTEVfTUFJTjsKLS0JaWYgKFJUX1NDT1BFX05PV0hFUkUpCi0rCWlmIChSVF9TQ09QRV9OT1dIRVJFICE9IDApCi0gCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9OT1dIRVJFOwotIAotIAlpZiAoY21kICE9IFJUTV9ERUxST1VURSkgewotLQkJcmVxLnIucnRtX3Byb3RvY29sID0gUlRQUk9UX0JPT1Q7Ci0tCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9VTklWRVJTRTsKLS0JCXJlcS5yLnJ0bV90eXBlID0gUlROX1VOSUNBU1Q7Ci0rCQlpZiAoUlRQUk9UX0JPT1QgIT0gMCkKLSsJCQlyZXEuci5ydG1fcHJvdG9jb2wgPSBSVFBST1RfQk9PVDsKLSsJCWlmIChSVF9TQ09QRV9VTklWRVJTRSAhPSAwKQotKwkJCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX1VOSVZFUlNFOwotKwkJaWYgKFJUTl9VTklDQVNUICE9IDApCi0rCQkJcmVxLnIucnRtX3R5cGUgPSBSVE5fVU5JQ0FTVDsKLSAJfQotIAotIAlteHJ0YS0+cnRhX3R5cGUgPSBSVEFfTUVUUklDUzsKLUBAIC0zOTMsNiArMzk4LDEzIEBAIElGX0ZFQVRVUkVfSVBfUlVMRShBUkdfdGFibGUsKQotIAkJCX0KLSAJCQltdHUgPSBnZXRfdW5zaWduZWQoKmFyZ3YsICJtdHUiKTsKLSAJCQlydGFfYWRkYXR0cjMyKG14cnRhLCBzaXplb2YobXhidWYpLCBSVEFYX01UVSwgbXR1KTsKLSsJCX0gZWxzZSBpZiAoYXJnID09IEFSR19zY29wZSkgewotKwkJCXVpbnQzMl90IHNjb3BlOwotKwkJCU5FWFRfQVJHKCk7Ci0rCQkJaWYgKHJ0bmxfcnRzY29wZV9hMm4oJnNjb3BlLCAqYXJndikpCi0rCQkJCWludmFyZygqYXJndiwgInNjb3BlIik7Ci0rCQkJcmVxLnIucnRtX3Njb3BlID0gc2NvcGU7Ci0rCQkJc2NvcGVfb2sgPSAxOwotIAkJfSBlbHNlIGlmIChhcmcgPT0gQVJHX3Byb3RvY29sKSB7Ci0gCQkJdWludDMyX3QgcHJvdDsKLSAJCQlORVhUX0FSRygpOwotQEAgLTQ2OSwyMCArNDgxLDIyIEBAIElGX0ZFQVRVUkVfSVBfUlVMRShBUkdfdGFibGUsKQotIAkJYWRkYXR0cl9sKCZyZXEubiwgc2l6ZW9mKHJlcSksIFJUQV9NRVRSSUNTLCBSVEFfREFUQShteHJ0YSksIFJUQV9QQVlMT0FEKG14cnRhKSk7Ci0gCX0KLSAKLS0JaWYgKHJlcS5yLnJ0bV90eXBlID09IFJUTl9MT0NBTCB8fCByZXEuci5ydG1fdHlwZSA9PSBSVE5fTkFUKQotLQkJcmVxLnIucnRtX3Njb3BlID0gUlRfU0NPUEVfSE9TVDsKLS0JZWxzZQotLQlpZiAocmVxLnIucnRtX3R5cGUgPT0gUlROX0JST0FEQ0FTVAotLQkgfHwgcmVxLnIucnRtX3R5cGUgPT0gUlROX01VTFRJQ0FTVAotLQkgfHwgcmVxLnIucnRtX3R5cGUgPT0gUlROX0FOWUNBU1QKLS0JKSB7Ci0tCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9MSU5LOwotLQl9Ci0tCWVsc2UgaWYgKHJlcS5yLnJ0bV90eXBlID09IFJUTl9VTklDQVNUIHx8IHJlcS5yLnJ0bV90eXBlID09IFJUTl9VTlNQRUMpIHsKLS0JCWlmIChjbWQgPT0gUlRNX0RFTFJPVVRFKQotLQkJCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX05PV0hFUkU7Ci0tCQllbHNlIGlmICghKG9rICYgZ3dfb2spKQotKwlpZiAoIXNjb3BlX29rKSB7Ci0rCQlpZiAocmVxLnIucnRtX3R5cGUgPT0gUlROX0xPQ0FMIHx8IHJlcS5yLnJ0bV90eXBlID09IFJUTl9OQVQpCi0rCQkJcmVxLnIucnRtX3Njb3BlID0gUlRfU0NPUEVfSE9TVDsKLSsJCWVsc2UKLSsJCWlmIChyZXEuci5ydG1fdHlwZSA9PSBSVE5fQlJPQURDQVNUCi0rCQkgfHwgcmVxLnIucnRtX3R5cGUgPT0gUlROX01VTFRJQ0FTVAotKwkJIHx8IHJlcS5yLnJ0bV90eXBlID09IFJUTl9BTllDQVNUCi0rCQkpIHsKLSAJCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9MSU5LOwotKwkJfQotKwkJZWxzZSBpZiAocmVxLnIucnRtX3R5cGUgPT0gUlROX1VOSUNBU1QgfHwgcmVxLnIucnRtX3R5cGUgPT0gUlROX1VOU1BFQykgewotKwkJCWlmIChjbWQgPT0gUlRNX0RFTFJPVVRFKQotKwkJCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9OT1dIRVJFOwotKwkJCWVsc2UgaWYgKCEob2sgJiBnd19vaykpCi0rCQkJCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX0xJTks7Ci0rCQl9Ci0gCX0KLSAKLSAJaWYgKHJlcS5yLnJ0bV9mYW1pbHkgPT0gQUZfVU5TUEVDKSB7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtbGliaXByb3V0ZS1oYW5kbGUtdGFibGUtaWRzLWxhcmdlci10aGFuLTI1NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1saWJpcHJvdXRlLWhhbmRsZS10YWJsZS1pZHMtbGFyZ2VyLXRoYW4tMjU1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWM1YjQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1saWJpcHJvdXRlLWhhbmRsZS10YWJsZS1pZHMtbGFyZ2VyLXRoYW4tMjU1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLUZyb20gYjVhOTIzNDI3MmU2MDg0NTU3MjI0YzczYWI3NzM3ZWQ0N2YwOTg0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1a2FzeiBOb3dhayA8bG5vd2FrQHR5Y29pbnQuY29tPgotRGF0ZTogV2VkLCAyMyBOb3YgMjAxNiAxMjo0ODoyMSArMDAwMAotU3ViamVjdDogW1BBVENIIHYyXSBsaWJpcHJvdXRlOiBoYW5kbGUgdGFibGUgaWRzIGxhcmdlciB0aGFuIDI1NQotCi1MaW51eCBrZXJuZWwsIHN0YXJ0aW5nIGZyb20gMi42LjE5IGFsbG93cyBpcCB0YWJsZSBpZHMgdG8gaGF2ZSAzMi1iaXQgdmFsdWVzLgotSW4gb3JkZXIgdG8gcHJlc2VydmUgY29tcGF0aWJpbGl0eSwgdGhlIG9sZCA4LWJpdCBmaWVsZDogcnRtX3RhYmxlIGlzIHN0aWxsCi1pbiB1c2Ugd2hlbiB0YWJsZSBpZCBpcyBsb3dlciB0aGFuIDI1Ni4KLQotQWRkIHN1cHBvcnQgZm9yIHRoZSAzMi1iaXQgdGFibGUgaWQgKFJUQV9UQUJMRSBhdHRyaWJ1dGUpIGluOgotLSBpcCByb3V0ZSBwcmludAotLSBpcCByb3V0ZSBtb2RpZnkKLS0gaXAgcnVsZSBwcmludAotLSBpcCBydWxlIG1vZGlmeQotCi1BZGQgcHJpbnRpbmcgb2YgdGFibGUgaWRzIHRvIGlwIHJvdXRlLgotCi1DaGFuZ2VzIGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIG1haW5saW5lIGlwcm91dGUyIHV0aWxpdGllcy4KLQotVGhlc2UgY2hhbmdlcyBhcmUgcmVxdWlyZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBDb25uTWFuLCB3aGljaCBieSBkZWZhdWx0Ci11c2VzIHRhYmxlIGlkcyBncmVhdGVyIHRoYW4gMjU1LgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL2xpc3RzLmJ1c3lib3gubmV0L3BpcGVybWFpbC9idXN5Ym94LzIwMTYtRGVjZW1iZXIvMDg0OTg5Lmh0bWxdCi0KLVNpZ25lZC1vZmYtYnk6IEx1a2FzeiBOb3dhayA8bG5vd2FrQHR5Y29pbnQuY29tPgotLS0tCi0gbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQotIG5ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJ1bGUuYyAgfCAxMSArKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jCi1pbmRleCA2ZWNkNWY3Li5kNWFmNDk4IDEwMDY0NAotLS0tIGEvbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYwotKysrIGIvbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYwotQEAgLTg3LDYgKzg3LDcgQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgcHJpbnRfcm91dGUoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8gVU5VU0VEX1BBUkFNLAotIAlpbmV0X3ByZWZpeCBkc3Q7Ci0gCWluZXRfcHJlZml4IHNyYzsKLSAJaW50IGhvc3RfbGVuID0gLTE7Ci0rCXVpbnQzMl90IHRpZDsKLSAKLSAJaWYgKG4tPm5sbXNnX3R5cGUgIT0gUlRNX05FV1JPVVRFICYmIG4tPm5sbXNnX3R5cGUgIT0gUlRNX0RFTFJPVVRFKSB7Ci0gCQlmcHJpbnRmKHN0ZGVyciwgIk5vdCBhIHJvdXRlOiAlMDh4ICUwOHggJTA4eFxuIiwKLUBAIC05OSw2ICsxMDAsMTQgQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgcHJpbnRfcm91dGUoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8gVU5VU0VEX1BBUkFNLAotIAlpZiAobGVuIDwgMCkKLSAJCWJiX2Vycm9yX21zZ19hbmRfZGllKCJ3cm9uZyBubG1zZyBsZW4gJWQiLCBsZW4pOwotIAotKwltZW1zZXQodGIsIDAsIHNpemVvZih0YikpOwotKwlwYXJzZV9ydGF0dHIodGIsIFJUQV9NQVgsIFJUTV9SVEEociksIGxlbik7Ci0rCi0rCWlmICh0YltSVEFfVEFCTEVdKQotKwkJdGlkID0gKih1aW50MzJfdCAqKVJUQV9EQVRBKHRiW1JUQV9UQUJMRV0pOwotKwllbHNlCi0rCQl0aWQgPSByLT5ydG1fdGFibGU7Ci0rCi0gCWlmIChyLT5ydG1fZmFtaWx5ID09IEFGX0lORVQ2KQotIAkJaG9zdF9sZW4gPSAxMjg7Ci0gCWVsc2UgaWYgKHItPnJ0bV9mYW1pbHkgPT0gQUZfSU5FVCkKLUBAIC0xMjgsNyArMTM3LDcgQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgcHJpbnRfcm91dGUoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8gVU5VU0VEX1BBUkFNLAotIAkJCX0KLSAJCX0KLSAJfSBlbHNlIHsKLS0JCWlmIChHX2ZpbHRlci50YiA+IDAgJiYgR19maWx0ZXIudGIgIT0gci0+cnRtX3RhYmxlKSB7Ci0rCQlpZiAoR19maWx0ZXIudGIgPiAwICYmIEdfZmlsdGVyLnRiICE9IHRpZCkgewotIAkJCXJldHVybiAwOwotIAkJfQotIAl9Ci1AQCAtMTU3LDEwICsxNjYsOCBAQCBzdGF0aWMgaW50IEZBU1RfRlVOQyBwcmludF9yb3V0ZShjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfbmwgKndobyBVTlVTRURfUEFSQU0sCi0gCQlyZXR1cm4gMDsKLSAJfQotIAotLQltZW1zZXQodGIsIDAsIHNpemVvZih0YikpOwotIAltZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOwotIAltZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRzdCkpOwotLQlwYXJzZV9ydGF0dHIodGIsIFJUQV9NQVgsIFJUTV9SVEEociksIGxlbik7Ci0gCi0gCWlmICh0YltSVEFfU1JDXSkgewotIAkJc3JjLmJpdGxlbiA9IHItPnJ0bV9zcmNfbGVuOwotQEAgLTI4Myw2ICsyOTAsMTAgQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgcHJpbnRfcm91dGUoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8gVU5VU0VEX1BBUkFNLAotIAlpZiAodGJbUlRBX09JRl0pIHsKLSAJCXByaW50ZigiZGV2ICVzICIsIGxsX2luZGV4X3RvX25hbWUoKihpbnQqKVJUQV9EQVRBKHRiW1JUQV9PSUZdKSkpOwotIAl9Ci0rI2lmIEVOQUJMRV9GRUFUVVJFX0lQX1JVTEUKLSsJaWYgKHRpZCAmJiB0aWQgIT0gUlRfVEFCTEVfTUFJTiAmJiAhR19maWx0ZXIudGIpCi0rCQlwcmludGYoInRhYmxlICVzICIsIHJ0bmxfcnR0YWJsZV9uMmEodGlkKSk7Ci0rI2VuZGlmCi0gCi0gCS8qIFRvZG86IHBhcnNlICYgc2hvdyAicHJvdG8ga2VybmVsIiwgInNjb3BlIGxpbmsiIGhlcmUgKi8KLSAKLUBAIC00MzQsNyArNDQ1LDEyIEBAIElGX0ZFQVRVUkVfSVBfUlVMRShBUkdfdGFibGUsKQotIAkJCU5FWFRfQVJHKCk7Ci0gCQkJaWYgKHJ0bmxfcnR0YWJsZV9hMm4oJnRpZCwgKmFyZ3YpKQotIAkJCQlpbnZhcmcoKmFyZ3YsICJ0YWJsZSIpOwotLQkJCXJlcS5yLnJ0bV90YWJsZSA9IHRpZDsKLSsJCQlpZiAodGlkIDwgMjU2KQotKwkJCQlyZXEuci5ydG1fdGFibGUgPSB0aWQ7Ci0rCQkJZWxzZSB7Ci0rCQkJCXJlcS5yLnJ0bV90YWJsZSA9IFJUX1RBQkxFX1VOU1BFQzsKLSsJCQkJYWRkYXR0cjMyKCZyZXEubiwgc2l6ZW9mKHJlcSksIFJUQV9UQUJMRSwgdGlkKTsKLSsJCQl9Ci0gI2VuZGlmCi0gCQl9IGVsc2UgaWYgKGFyZyA9PSBBUkdfZGV2IHx8IGFyZyA9PSBBUkdfb2lmKSB7Ci0gCQkJTkVYVF9BUkcoKTsKLWRpZmYgLS1naXQgYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXBydWxlLmMgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXBydWxlLmMKLWluZGV4IDc3NGEzZTIuLjNmYWM3YzUgMTAwNjQ0Ci0tLS0gYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXBydWxlLmMKLSsrKyBiL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJ1bGUuYwotQEAgLTExOSw3ICsxMTksOSBAQCBzdGF0aWMgaW50IEZBU1RfRlVOQyBwcmludF9ydWxlKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9ubCAqd2hvIFVOVVNFRF9QQVJBTSwKLSAJCXByaW50ZigiaWlmICVzICIsIChjaGFyKilSVEFfREFUQSh0YltSVEFfSUlGXSkpOwotIAl9Ci0gCi0tCWlmIChyLT5ydG1fdGFibGUpCi0rCWlmICh0YltSVEFfVEFCTEVdKQotKwkJcHJpbnRmKCJsb29rdXAgJXMgIiwgcnRubF9ydHRhYmxlX24yYSgqKHVpbnQzMl90KilSVEFfREFUQSh0YltSVEFfVEFCTEVdKSkpOwotKwllbHNlIGlmIChyLT5ydG1fdGFibGUpCi0gCQlwcmludGYoImxvb2t1cCAlcyAiLCBydG5sX3J0dGFibGVfbjJhKHItPnJ0bV90YWJsZSkpOwotIAotIAlpZiAodGJbUlRBX0ZMT1ddKSB7Ci1AQCAtMjU5LDcgKzI2MSwxMiBAQCBzdGF0aWMgaW50IGlwcnVsZV9tb2RpZnkoaW50IGNtZCwgY2hhciAqKmFyZ3YpCi0gCQkJTkVYVF9BUkcoKTsKLSAJCQlpZiAocnRubF9ydHRhYmxlX2EybigmdGlkLCAqYXJndikpCi0gCQkJCWludmFyZygqYXJndiwgInRhYmxlIElEIik7Ci0tCQkJcmVxLnIucnRtX3RhYmxlID0gdGlkOwotKwkJCWlmICh0aWQgPCAyNTYpCi0rCQkJCXJlcS5yLnJ0bV90YWJsZSA9IHRpZDsKLSsJCQllbHNlIHsKLSsJCQkJcmVxLnIucnRtX3RhYmxlID0gUlRfVEFCTEVfVU5TUEVDOwotKwkJCQlhZGRhdHRyMzIoJnJlcS5uLCBzaXplb2YocmVxKSwgUlRBX1RBQkxFLCB0aWQpOwotKwkJCX0KLSAJCQl0YWJsZV9vayA9IDE7Ci0gCQl9IGVsc2UgaWYgKGtleSA9PSBBUkdfZGV2IHx8Ci0gCQkJICAga2V5ID09IEFSR19paWYKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLXNlZC1maXgtc2VkLW4tZmx1c2hlcy1wYXR0ZXJuLXNwYWNlLXRlcm1pbmF0ZXMtZWFybHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtc2VkLWZpeC1zZWQtbi1mbHVzaGVzLXBhdHRlcm4tc3BhY2UtdGVybWluYXRlcy1lYXJseS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY1Mzk4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtc2VkLWZpeC1zZWQtbi1mbHVzaGVzLXBhdHRlcm4tc3BhY2UtdGVybWluYXRlcy1lYXJseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gOTAzNTQyZjczMzFjNTgwMDdhM2VmOTM4ZDQxZTFjNTVmYzMyOTY0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDMxIEF1ZyAyMDE2IDIzOjQwOjQzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNlZDogZml4ICJzZWQgbiAoZmx1c2hlcyBwYXR0ZXJuIHNwYWNlLCB0ZXJtaW5hdGVzIGVhcmx5KSIKLSB0ZXN0Y2FzZSBmYWlsdXJlCi0KLVRoaXMgcGF0Y2ggZml4ICJzZWQgbiAoZmx1c2hlcyBwYXR0ZXJuIHNwYWNlLCB0ZXJtaW5hdGVzIGVhcmx5KSIKLXRlc3RjYXNlIGZhaWx1cmUuIFdlIGNhbiBzZWUgaXQgYXQ6Ci0KLQlodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9NzZkNzIzNzZlMDI0NGE1Y2FmZDQ4ODBjZGM2MjNlMzdkODZhNzVlNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBlZGl0b3JzL3NlZC5jICAgICAgIHwgMTkgKysrKysrKysrKy0tLS0tLS0tLQotIHRlc3RzdWl0ZS9zZWQudGVzdHMgfCAgNiArLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZWRpdG9ycy9zZWQuYyBiL2VkaXRvcnMvc2VkLmMKLWluZGV4IDdiYmY4MjAuLjI1OWMzOWMgMTAwNjQ0Ci0tLS0gYS9lZGl0b3JzL3NlZC5jCi0rKysgYi9lZGl0b3JzL3NlZC5jCi1AQCAtMTI3NCwxNiArMTI3NCwxNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZpbGVzKHZvaWQpCi0gCQljYXNlICduJzoKLSAJCQlpZiAoIUcuYmVfcXVpZXQpCi0gCQkJCXNlZF9wdXRzKHBhdHRlcm5fc3BhY2UsIGxhc3RfZ2V0c19jaGFyKTsKLS0JCQlpZiAobmV4dF9saW5lKSB7Ci0tCQkJCWZyZWUocGF0dGVybl9zcGFjZSk7Ci0tCQkJCXBhdHRlcm5fc3BhY2UgPSBuZXh0X2xpbmU7Ci0tCQkJCWxhc3RfZ2V0c19jaGFyID0gbmV4dF9nZXRzX2NoYXI7Ci0tCQkJCW5leHRfbGluZSA9IGdldF9uZXh0X2xpbmUoJm5leHRfZ2V0c19jaGFyLCAmbGFzdF9wdXRzX2NoYXIsIGxhc3RfZ2V0c19jaGFyKTsKLS0JCQkJc3Vic3RpdHV0ZWQgPSAwOwotLQkJCQlsaW5lbnVtKys7Ci0tCQkJCWJyZWFrOwotKwkJCWlmIChuZXh0X2xpbmUgPT0gTlVMTCkgewotKwkJCQkvKiBJZiBubyBuZXh0IGxpbmUsIGp1bXAgdG8gZW5kIG9mIHNjcmlwdCBhbmQgZXhpdC4gKi8KLSsJCQkJZ290byBkaXNjYXJkX2xpbmU7Ci0gCQkJfQotLQkJCS8qIGZhbGwgdGhyb3VnaCAqLwotKwkJCWZyZWUocGF0dGVybl9zcGFjZSk7Ci0rCQkJcGF0dGVybl9zcGFjZSA9IG5leHRfbGluZTsKLSsJCQlsYXN0X2dldHNfY2hhciA9IG5leHRfZ2V0c19jaGFyOwotKwkJCW5leHRfbGluZSA9IGdldF9uZXh0X2xpbmUoJm5leHRfZ2V0c19jaGFyLCAmbGFzdF9wdXRzX2NoYXIsIGxhc3RfZ2V0c19jaGFyKTsKLSsJCQlzdWJzdGl0dXRlZCA9IDA7Ci0rCQkJbGluZW51bSsrOwotKwkJCWJyZWFrOwotIAotIAkJLyogUXVpdC4gIEVuZCBvZiBzY3JpcHQsIGVuZCBvZiBpbnB1dC4gKi8KLSAJCWNhc2UgJ3EnOgotZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9zZWQudGVzdHMgYi90ZXN0c3VpdGUvc2VkLnRlc3RzCi1pbmRleCAzNDQ3OWU1Li45NmZmN2E1IDEwMDc1NQotLS0tIGEvdGVzdHN1aXRlL3NlZC50ZXN0cwotKysrIGIvdGVzdHN1aXRlL3NlZC50ZXN0cwotQEAgLTczLDEzICs3Myw5IEBAIHRlc3RpbmcgInNlZCB0ICh0ZXN0L2JyYW5jaCBjbGVhcnMgdGVzdCBiaXQpIiAic2VkIC1lICdzL2EvYi87Omxvb3A7dCBsb29wJyIgXAotIHRlc3RpbmcgInNlZCBUICghdGVzdC9icmFuY2gpIiAic2VkIC1lICdzL2EvMS87VCBub3RvbmU7cDs6IG5vdG9uZTtwJyIgXAotIAkiMVxuMVxuMVxuYlxuYlxuY1xuY1xuIiAiIiAiYVxuYlxuY1xuIgotIAotLXRlc3QgeCIkU0tJUF9LTk9XTl9CVUdTIiA9IHgiIiAmJiB7Ci0tIyBOb3JtYWwgc2VkIGVuZC1vZi1zY3JpcHQgZG9lc24ndCBwcmludCAiYyIgYmVjYXVzZSBuIGZsdXNoZWQgdGhlIHBhdHRlcm4KLS0jIHNwYWNlLiAgSWYgbiBoaXRzIEVPRiwgcGF0dGVybiBzcGFjZSBpcyBlbXB0eSB3aGVuIHNjcmlwdCBlbmRzLgotLSMgUXVlcnk6IGhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCBubyBuZXdsaW5lIGF0IEVPRj8KLSB0ZXN0aW5nICJzZWQgbiAoZmx1c2hlcyBwYXR0ZXJuIHNwYWNlLCB0ZXJtaW5hdGVzIGVhcmx5KSIgInNlZCAtZSAnbjtwJyIgXAotIAkiYVxuYlxuYlxuY1xuIiAiIiAiYVxuYlxuY1xuIgotLX0KLSsKLSAjIG5vbi1HTlUgc2VkOiBOIGRvZXMgX25vdF8gZmx1c2ggcGF0dGVybiBzcGFjZSwgdGhlcmVmb3JlIGMgaXMgZWF0ZW4gQCBzY3JpcHQgZW5kCi0gIyBHTlUgc2VkOiBOIGZsdXNoZXMgcGF0dGVybiBzcGFjZSwgdGhlcmVmb3JlIGMgaXMgcHJpbnRlZCB0b28gQCBzY3JpcHQgZW5kCi0gdGVzdGluZyAic2VkIE4gKGZsdXNoZXMgcGF0dGVybiBzcGFjZSAoR05VIGJlaGF2aW9yKSkiICJzZWQgLWUgJ047cCciIFwKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9CVUc5MDcxX2J1ZmZlcl9vdmVyZmxvd19hcnAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0JVRzkwNzFfYnVmZmVyX292ZXJmbG93X2FycC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI4Njk0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0JVRzkwNzFfYnVmZmVyX292ZXJmbG93X2FycC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLWJ1c3lib3gxLjI0LjE6IEZpeCBidXN5Ym94IC0gKGxvY2FsKSBjbWRsaW5lIHN0YWNrIGJ1ZmZlciBvdmVyd3JpdGUgCi0KLVtObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9idWdzLmJ1c3lib3gubmV0L3Nob3dfYnVnLmNnaT9pZD05MDcxCi0KLWJ1c3lib3ggLSAobG9jYWwpIGNtZGxpbmUgc3RhY2sgYnVmZmVyIG92ZXJ3cml0ZSAKLQotQnVzeWJveCBwcm92aWRlcyBhbiBgYXJwYCBhcHBsZXQgd2hpY2ggaXMgbWlzc2luZyBhbiBhcnJheSBib3VuZHMgY2hlY2sgZm9yIAotY29tbWFuZC1saW5lIHBhcmFtZXRlciBgSUZOQU1FYC4gSXQgaXMgdGhlcmVmb3JlIHZ1bG5lcmFibGUgdG8gYSBjb21tYW5kLWxpbmUgCi1iYXNlZCBsb2NhbCBzdGFjayBidWZmZXIgb3ZlcndyaXRlIGVmZmVjdGl2ZWx5IGFsbG93aW5nIGxvY2FsIHVzZXJzIHRvIHdyaXRlIAotcGFzdCBhIDE2IGJ5dGVzIGZpeGVkIHN0YWNrIGJ1ZmZlci4gVGhpcyBsZWFkcyB0byB0d28gc2NlbmFyaW9zLCBvbmUgKEEpIHdoZXJlIAotYW4gSU9DVEwgZm9yIEdFVF9IV19BRERSRVNTIChgU0lPQ0dJRkhXQUREUmApIGZhaWxzIGFuZCByZXN1bHRzIGluIGEgY29ycnVwdGVkIAotYHZhX2xpc3RgIGJlaW5nIHBhc3NlZCB0byBgKnByaW50ZigpYCBhbmQgb25lIChCKSB3aGVyZSBhbiBhdHRhY2tlciBtaWdodCBwcm92aWRlIAotdmFsaWQgcGFyYW1zIGZvciB0aGUgSU9DVEwgYW5kIHRyaWNrIHRoZSBwcm9ncmFtIHRvIHByb2NlZWQgYW5kIHJlc3VsdCBpbiBhIAotYFJFVCBlaXAgb3ZlcndyaXRlYCBldmVudHVhbGx5IGdhaW5pbmcgY29kZSBleGVjdXRpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0L25ldHdvcmtpbmcvYXJwLmM/aWQ9ODhlMmIxY2I2MjY3NjFiMTkyNDMwNWI3NjFhNWRmYzcyMzYxM2M0ZV0KLUJVRzogQlVHOTA3MQotU2lnbmVkLW9mZi1ieTogTWFydGluIEJhbGlrIDxtYXJ0aW4uYmFsaWtAc2llbWVucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci0KLS0tCi0KLWRpZmYgLS1naXQgYS9uZXR3b3JraW5nL2FycC5jIGIvbmV0d29ya2luZy9hcnAuYwotaW5kZXggMDA5OWFhNS4uODdlYjMyNyAxMDA2NDQKLS0tLSBhL25ldHdvcmtpbmcvYXJwLmMKLSsrKyBiL25ldHdvcmtpbmcvYXJwLmMKLUBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIGludCBhcnBfZGVsKGNoYXIgKiphcmdzKQotIAlpZiAoZmxhZ3MgPT0gMCkKLSAJCWZsYWdzID0gMzsKLSAKLS0Jc3RybmNweShyZXEuYXJwX2RldiwgZGV2aWNlLCBzaXplb2YocmVxLmFycF9kZXYpKTsKLSsJc3RybmNweV9JRk5BTVNJWihyZXEuYXJwX2RldiwgZGV2aWNlKTsKLSAKLSAJZXJyID0gLTE7Ci0gCi1AQCAtMjE3LDcgKzIxNyw3IEBAIHN0YXRpYyB2b2lkIGFycF9nZXRkZXZodyhjaGFyICppZm5hbWUsIHN0cnVjdCBzb2NrYWRkciAqc2EpCi0gCXN0cnVjdCBpZnJlcSBpZnI7Ci0gCWNvbnN0IHN0cnVjdCBod3R5cGUgKnhodzsKLSAKLS0Jc3RyY3B5KGlmci5pZnJfbmFtZSwgaWZuYW1lKTsKLSsJc3RybmNweV9JRk5BTVNJWihpZnIuaWZyX25hbWUsIGlmbmFtZSk7Ci0gCWlvY3RsX29yX3BlcnJvcl9hbmRfZGllKHNvY2tmZCwgU0lPQ0dJRkhXQUREUiwgJmlmciwKLSAJCQkJCSJjYW4ndCBnZXQgSFctQWRkcmVzcyBmb3IgJyVzJyIsIGlmbmFtZSk7Ci0gCWlmIChod19zZXQgJiYgKGlmci5pZnJfaHdhZGRyLnNhX2ZhbWlseSAhPSBody0+dHlwZSkpIHsKLUBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIGludCBhcnBfc2V0KGNoYXIgKiphcmdzKQotIAkvKiBGaWxsIGluIHRoZSByZW1haW5kZXIgb2YgdGhlIHJlcXVlc3QuICovCi0gCXJlcS5hcnBfZmxhZ3MgPSBmbGFnczsKLSAKLS0Jc3RybmNweShyZXEuYXJwX2RldiwgZGV2aWNlLCBzaXplb2YocmVxLmFycF9kZXYpKTsKLSsJc3RybmNweV9JRk5BTVNJWihyZXEuYXJwX2RldiwgZGV2aWNlKTsKLSAKLSAJLyogQ2FsbCB0aGUga2VybmVsLiAqLwotIAlpZiAob3B0aW9uX21hc2szMiAmIEFSUF9PUFRfdikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTEtNTMyNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTEtNTMyNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wOTI2MTA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxMS01MzI1LnBhdGNoCkBAIC0wLDAgKzEsNDgxIEBACitidXN5Ym94LTEuMjcuMjogRml4IENWRS0yMDExLTUzMjUKKworW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3MuYnVzeWJveC5uZXQvc2hvd19idWcuY2dpP2lkPTg0MTEKKworbGliYXJjaGl2ZTogZG8gbm90IGV4dHJhY3QgdW5zYWZlIHN5bWxpbmtzCisKK1ByZXZlbnQgdW5zYWZlIGxpbmtzIGV4dHJhY3RpbmcgdW5sZXNzIGVudiB2YXJpYWJsZSAkRVhUUkFDVF9VTlNBRkVfU1lNTElOS1M9MQoraXMgbm90IHNldC4gVW50YXJyaW5nIGZpbGUgd2l0aCAtQyBERVNURElSIHBhcmFtZXRlciBjb3VsZCBiZSBleHRyYWN0ZWQgd2l0aAordW53YW50ZWQgc3ltbGlua3MuIFRoaXMgZG9lc24ndCBmZWVsIHJpZ2h0LCBhbmQgSUlSQyBHTlUgdGFyIGRvZXNuJ3QgZG8gdGhhdC4KK0luY2x1ZGUgbmVjZXNzYXJ5IGNoYW5nZXMgZnJvbSBwcmV2aW91cyBjb21taXRzLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9YmM5YmJlYjJiODEwMDFlODczMWNkMmFlNTAxYzhmY2NjOGQ4N2NjN10KK0NWRTogQ1ZFLTIwMTEtNTMyNQorYnVnOiA4NDExCitTaWduZWQtb2ZmLWJ5OiBSYWRvdmFuIFNjYXNueSA8cmFkb3Zhbi5zY2FzbnlAc2llbWVucy5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KKworZGlmZiAtLWdpdCBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvS2J1aWxkLnNyYyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvS2J1aWxkLnNyYworaW5kZXggOTQyZTc1NS4uZTFhOGE3NSAxMDA2NDQKKy0tLSBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvS2J1aWxkLnNyYworKysrIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9LYnVpbGQuc3JjCitAQCAtMTIsNiArMTIsOCBAQCBDT01NT05fRklMRVM6PSBcCisgCWRhdGFfZXh0cmFjdF9hbGwubyBcCisgCWRhdGFfZXh0cmFjdF90b19zdGRvdXQubyBcCisgXAorKwl1bnNhZmVfc3ltbGlua190YXJnZXQubyBcCisrXAorIAlmaWx0ZXJfYWNjZXB0X2FsbC5vIFwKKyAJZmlsdGVyX2FjY2VwdF9saXN0Lm8gXAorIAlmaWx0ZXJfYWNjZXB0X3JlamVjdF9saXN0Lm8gXAorZGlmZiAtLWdpdCBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGF0YV9leHRyYWN0X2FsbC5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kYXRhX2V4dHJhY3RfYWxsLmMKK2luZGV4IDE4MzBmZmIuLmI4MjhiNjUgMTAwNjQ0CistLS0gYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RhdGFfZXh0cmFjdF9hbGwuYworKysrIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kYXRhX2V4dHJhY3RfYWxsLmMKK0BAIC0xMjgsMTAgKzEyOCw5IEBAIHZvaWQgRkFTVF9GVU5DIGRhdGFfZXh0cmFjdF9hbGwoYXJjaGl2ZV9oYW5kbGVfdCAqYXJjaGl2ZV9oYW5kbGUpCisgCQlyZXMgPSBsaW5rKGhhcmRfbGluaywgZHN0X25hbWUpOworIAkJaWYgKHJlcyAhPSAwICYmICEoYXJjaGl2ZV9oYW5kbGUtPmFoX2ZsYWdzICYgQVJDSElWRV9FWFRSQUNUX1FVSUVUKSkgeworIAkJCS8qIHNoYXJlZCBtZXNzYWdlICovCistCQkJYmJfcGVycm9yX21zZygiY2FuJ3QgY3JlYXRlICVzbGluayAiCistCQkJCQkiJXMgdG8gJXMiLCAiaGFyZCIsCistCQkJCQlkc3RfbmFtZSwKKy0JCQkJCWhhcmRfbGluayk7CisrCQkJYmJfcGVycm9yX21zZygiY2FuJ3QgY3JlYXRlICVzbGluayAnJXMnIHRvICclcyciLAorKwkJCQkJICJoYXJkIiwgZHN0X25hbWUsIGhhcmRfbGluaworKwkJCSk7CisgCQl9CisgCQkvKiBIYXJkbGlua3MgaGF2ZSBubyBzZXBhcmF0ZSBtb2RlL293bmVyc2hpcCwgc2tpcCBjaG93bi9jaG1vZCAqLworIAkJZ290byByZXQ7CitAQCAtMTc4LDE1ICsxNzcsMTcgQEAgdm9pZCBGQVNUX0ZVTkMgZGF0YV9leHRyYWN0X2FsbChhcmNoaXZlX2hhbmRsZV90ICphcmNoaXZlX2hhbmRsZSkKKyAJY2FzZSBTX0lGTE5LOgorIAkJLyogU3ltbGluayAqLworIC8vVE9ETzogd2hhdCBpZiBmaWxlX2hlYWRlci0+bGlua190YXJnZXQgPT0gTlVMTCAoc2F5LCBjb3JydXB0ZWQgdGFyYmFsbD8pCistCQlyZXMgPSBzeW1saW5rKGZpbGVfaGVhZGVyLT5saW5rX3RhcmdldCwgZHN0X25hbWUpOworLQkJaWYgKHJlcyAhPSAwCistCQkgJiYgIShhcmNoaXZlX2hhbmRsZS0+YWhfZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfUVVJRVQpCistCQkpIHsKKy0JCQkvKiBzaGFyZWQgbWVzc2FnZSAqLworLQkJCWJiX3BlcnJvcl9tc2coImNhbid0IGNyZWF0ZSAlc2xpbmsgIgorLQkJCQkiJXMgdG8gJXMiLCAic3ltIiwKKy0JCQkJZHN0X25hbWUsCistCQkJCWZpbGVfaGVhZGVyLT5saW5rX3RhcmdldCk7CisrCQlpZiAoIXVuc2FmZV9zeW1saW5rX3RhcmdldChmaWxlX2hlYWRlci0+bGlua190YXJnZXQpKSB7CisrCQkJcmVzID0gc3ltbGluayhmaWxlX2hlYWRlci0+bGlua190YXJnZXQsIGRzdF9uYW1lKTsKKysJCQlpZiAocmVzICE9IDAKKysJCQkJJiYgIShhcmNoaXZlX2hhbmRsZS0+YWhfZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfUVVJRVQpCisrCQkJKSB7CisrCQkJCQkJLyogc2hhcmVkIG1lc3NhZ2UgKi8KKysJCQkJCQliYl9wZXJyb3JfbXNnKCJjYW4ndCBjcmVhdGUgJXNsaW5rICclcycgdG8gJyVzJyIsCisrCQkJCQkJCSJzeW0iLAorKwkJCQkJCQlkc3RfbmFtZSwgZmlsZV9oZWFkZXItPmxpbmtfdGFyZ2V0CisrCQkJCQkJKTsKKysJCQl9CisgCQl9CisgCQlicmVhazsKKyAJY2FzZSBTX0lGU09DSzoKK2RpZmYgLS1naXQgYS9hcmNoaXZhbC9saWJhcmNoaXZlL3Vuc2FmZV9zeW1saW5rX3RhcmdldC5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS91bnNhZmVfc3ltbGlua190YXJnZXQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmVlNDZlMjgKKy0tLSAvZGV2L251bGwKKysrKyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvdW5zYWZlX3N5bWxpbmtfdGFyZ2V0LmMKK0BAIC0wLDAgKzEsNDggQEAKKysvKiB2aTogc2V0IHN3PTQgdHM9NDogKi8KKysvKgorKyAqIExpY2Vuc2VkIHVuZGVyIEdQTHYyIG9yIGxhdGVyLCBzZWUgZmlsZSBMSUNFTlNFIGluIHRoaXMgc291cmNlIHRyZWUuCisrICovCisrI2luY2x1ZGUgImxpYmJiLmgiCisrI2luY2x1ZGUgImJiX2FyY2hpdmUuaCIKKysKKytpbnQgRkFTVF9GVU5DIHVuc2FmZV9zeW1saW5rX3RhcmdldChjb25zdCBjaGFyICp0YXJnZXQpCisreworKwljb25zdCBjaGFyICpkb3Q7CisrCisrCWlmICh0YXJnZXRbMF0gPT0gJy8nKSB7CisrCQljb25zdCBjaGFyICp2YXI7CisrdW5zYWZlOgorKwkJdmFyID0gZ2V0ZW52KCJFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUyIpOworKwkJaWYgKHZhcikgeworKwkJCWlmIChMT05FX0NIQVIodmFyLCAnMScpKQorKwkJCQlyZXR1cm4gMDsgLyogcHJldGVuZCBpdCdzIHNhZmUgKi8KKysJCQlyZXR1cm4gMTsgLyogIlVOU0FGRSEiICovCisrCQl9CisrCQliYl9lcnJvcl9tc2coInNraXBwaW5nIHVuc2FmZSBzeW1saW5rIHRvICclcycgaW4gYXJjaGl2ZSwiCisrCQkJIiBzZXQgJXM9MSB0byBleHRyYWN0IiwKKysJCQl0YXJnZXQsCisrCQkJIkVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTIgorKwkJKTsKKysJCS8qIFByZXZlbnQgZnVydGhlciBtZXNzYWdlcyAqLworKwkJc2V0ZW52KCJFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUyIsICIwIiwgMCk7CisrCQlyZXR1cm4gMTsgLyogIlVOU0FGRSEiICovCisrCX0KKysKKysJZG90ID0gdGFyZ2V0OworKwlmb3IgKDs7KSB7CisrCQlkb3QgPSBzdHJjaHIoZG90LCAnLicpOworKwkJCWlmICghZG90KQorKwkJCQlyZXR1cm4gMDsgLyogc2FmZSB0YXJnZXQgKi8KKysKKysJCQkvKiBJcyBpdCBhIHBhdGggY29tcG9uZW50IHN0YXJ0aW5nIHdpdGggIi4uIj8gKi8KKysJCQlpZiAoKGRvdFsxXSA9PSAnLicpCisrCQkJCSYmIChkb3QgPT0gdGFyZ2V0IHx8IGRvdFstMV0gPT0gJy8nKQorKwkJCQkJLyogSXMgaXQgZXhhY3RseSAiLi4iPyAqLworKwkJCQkmJiAoZG90WzJdID09ICcvJyB8fCBkb3RbMl0gPT0gJ1wwJykKKysJCQkpIHsKKysJCQkJZ290byB1bnNhZmU7CisrCQkJfQorKwkJCS8qIE5COiBpdCBjYW4gZXZlbiBiZSB0cmFpbGluZyAiLiIsIHNob3VsZCBvbmx5IGFkZCAxICovCisrCQkJZG90ICs9IDE7CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9hcmNoaXZhbC91bnppcC5jIGIvYXJjaGl2YWwvdW56aXAuYworaW5kZXggOTAzNzI2Mi4uMjcwZTI2MSAxMDA2NDQKKy0tLSBhL2FyY2hpdmFsL3VuemlwLmMKKysrKyBiL2FyY2hpdmFsL3VuemlwLmMKK0BAIC0zMzUsNiArMzM1LDQ0IEBAIHN0YXRpYyB2b2lkIHVuemlwX2NyZWF0ZV9sZWFkaW5nX2RpcnMoY29uc3QgY2hhciAqZm4pCisgCWZyZWUobmFtZSk7CisgfQorIAorK3N0YXRpYyB2b2lkIHVuemlwX2V4dHJhY3Rfc3ltbGluayh6aXBfaGVhZGVyX3QgKnppcCwgY29uc3QgY2hhciAqZHN0X2ZuKQorK3sKKysJY2hhciAqdGFyZ2V0OworKworKwlpZiAoemlwLT5mbXQudWNtcHNpemUgPiAweGZmZikgLyogbm8gZnVubnkgYnVzaW5lc3MgcGxlYXNlICovCisrCQliYl9lcnJvcl9tc2dfYW5kX2RpZSgiYmFkIGFyY2hpdmUiKTsKKysKKysJaWYgKHppcC0+Zm10Lm1ldGhvZCA9PSAwKSB7CisrCQkvKiBNZXRob2QgMCAtIHN0b3JlZCAobm90IGNvbXByZXNzZWQpICovCisrCQl0YXJnZXQgPSB4emFsbG9jKHppcC0+Zm10LnVjbXBzaXplICsgMSk7CisrCQl4cmVhZCh6aXBfZmQsIHRhcmdldCwgemlwLT5mbXQudWNtcHNpemUpOworKwl9IGVsc2UgeworKyNpZiAxCisrCQliYl9lcnJvcl9tc2dfYW5kX2RpZSgiY29tcHJlc3NlZCBzeW1saW5rIGlzIG5vdCBzdXBwb3J0ZWQiKTsKKysjZWxzZQorKwkJdHJhbnNmb3JtZXJfc3RhdGVfdCB4c3RhdGU7CisrCQlpbml0X3RyYW5zZm9ybWVyX3N0YXRlKCZ4c3RhdGUpOworKwkJeHN0YXRlLm1lbV9vdXRwdXRfc2l6ZV9tYXggPSB6aXAtPmZtdC51Y21wc2l6ZTsKKysJCS8qIC4uLnVucGFjay4uLiAqLworKwkJaWYgKCF4c3RhdGUubWVtX291dHB1dF9idWYpCisrCQkJV1RGKCk7CisrCQl0YXJnZXQgPSB4c3RhdGUubWVtX291dHB1dF9idWY7CisrCQl0YXJnZXQgPSB4cmVhbGxvYyh0YXJnZXQsIHhzdGF0ZS5tZW1fb3V0cHV0X3NpemUgKyAxKTsKKysJCXRhcmdldFt4c3RhdGUubWVtX291dHB1dF9zaXplXSA9ICdcMCc7CisrI2VuZGlmCisrCX0KKysJaWYgKCF1bnNhZmVfc3ltbGlua190YXJnZXQodGFyZ2V0KSkgeworKy8vVE9ETzogbGliYmIgY2FuZGlkYXRlCisrCQlpZiAoc3ltbGluayh0YXJnZXQsIGRzdF9mbikpIHsKKysJCQkvKiBzaGFyZWQgbWVzc2FnZSAqLworKwkJCWJiX3BlcnJvcl9tc2dfYW5kX2RpZSgiY2FuJ3QgY3JlYXRlICVzbGluayAnJXMnIHRvICclcyciLAorKwkJCQkic3ltIiwgZHN0X2ZuLCB0YXJnZXQKKysJCQkpOworKwkJfQorKwl9CisrCWZyZWUodGFyZ2V0KTsKKyt9CisrCisgc3RhdGljIHZvaWQgdW56aXBfZXh0cmFjdCh6aXBfaGVhZGVyX3QgKnppcCwgaW50IGRzdF9mZCkKKyB7CisgCXRyYW5zZm9ybWVyX3N0YXRlX3QgeHN0YXRlOworQEAgLTgxMyw3ICs4NTEsNyBAQCBpbnQgdW56aXBfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl9CisgIGNoZWNrX2ZpbGU6CisgCQkvKiBFeHRyYWN0IGZpbGUgKi8KKy0JCWlmIChzdGF0KGRzdF9mbiwgJnN0YXRfYnVmKSA9PSAtMSkgeworKwkJaWYgKGxzdGF0KGRzdF9mbiwgJnN0YXRfYnVmKSA9PSAtMSkgeworIAkJCS8qIEZpbGUgZG9lcyBub3QgZXhpc3QgKi8KKyAJCQlpZiAoZXJybm8gIT0gRU5PRU5UKSB7CisgCQkJCWJiX3BlcnJvcl9tc2dfYW5kX2RpZSgiY2FuJ3Qgc3RhdCAnJXMnIiwgZHN0X2ZuKTsKK0BAIC04MzQsNiArODcyLDcgQEAgaW50IHVuemlwX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCWdvdG8gZG9fb3Blbl9hbmRfZXh0cmFjdDsKKyAJCXByaW50ZigicmVwbGFjZSAlcz8gW3ldZXMsIFtuXW8sIFtBXWxsLCBbTl1vbmUsIFtyXWVuYW1lOiAiLCBkc3RfZm4pOworIAkJbXlfZmdldHM4MChrZXlfYnVmKTsKKysvL1RPRE86IHJlZG8gbHN0YXQgKyBJU1JFRyBjaGVjayEgdXNlciBpbnB1dCBjb3VsZCBoYXZlIHRha2VuIGEgbG9uZyB0aW1lIQorIAorIAkJc3dpdGNoIChrZXlfYnVmWzBdKSB7CisgCQljYXNlICdBJzoKK0BAIC04NDIsNyArODgxLDggQEAgaW50IHVuemlwX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICBkb19vcGVuX2FuZF9leHRyYWN0OgorIAkJCXVuemlwX2NyZWF0ZV9sZWFkaW5nX2RpcnMoZHN0X2ZuKTsKKyAjaWYgRU5BQkxFX0ZFQVRVUkVfVU5aSVBfQ0RGCistCQkJZHN0X2ZkID0geG9wZW4zKGRzdF9mbiwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQywgZmlsZV9tb2RlKTsKKysJCQlpZiAoIVNfSVNMTksoZmlsZV9tb2RlKSkKKysJCQkJZHN0X2ZkID0geG9wZW4zKGRzdF9mbiwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQywgZmlsZV9tb2RlKTsKKyAjZWxzZQorIAkJCWRzdF9mZCA9IHhvcGVuKGRzdF9mbiwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CisgI2VuZGlmCitAQCAtODUyLDEwICs4OTIsMTggQEAgaW50IHVuemlwX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCQkJPyAiIGV4dHJhY3Rpbmc6ICVzXG4iCisgCQkJCQk6ICovICIgIGluZmxhdGluZzogJXNcbiIsIGRzdF9mbik7CisgCQkJfQorLQkJCXVuemlwX2V4dHJhY3QoJnppcCwgZHN0X2ZkKTsKKy0JCQlpZiAoZHN0X2ZkICE9IFNURE9VVF9GSUxFTk8pIHsKKy0JCQkJLyogY2xvc2luZyBTVERPVVQgaXMgcG90ZW50aWFsbHkgYmFkIGZvciBmdXR1cmUgYnVzaW5lc3MgKi8KKy0JCQkJY2xvc2UoZHN0X2ZkKTsKKysjaWYgRU5BQkxFX0ZFQVRVUkVfVU5aSVBfQ0RGCisrCQkJaWYgKFNfSVNMTksoZmlsZV9tb2RlKSkgeworKwkJCQlpZiAoZHN0X2ZkICE9IFNURE9VVF9GSUxFTk8pIC8qIG5vIC1wICovCisrCQkJCQl1bnppcF9leHRyYWN0X3N5bWxpbmsoJnppcCwgZHN0X2ZuKTsKKysJCQl9IGVsc2UKKysjZW5kaWYKKysJCQl7CisrCQkJCXVuemlwX2V4dHJhY3QoJnppcCwgZHN0X2ZkKTsKKysJCQkJaWYgKGRzdF9mZCAhPSBTVERPVVRfRklMRU5PKSB7CisrCQkJCQkvKiBjbG9zaW5nIFNURE9VVCBpcyBwb3RlbnRpYWxseSBiYWQgZm9yIGZ1dHVyZSBidXNpbmVzcyAqLworKwkJCQkJY2xvc2UoZHN0X2ZkKTsKKysJCQkJfTsKKyAJCQl9CisgCQkJYnJlYWs7CisgCitkaWZmIC0tZ2l0IGEvY29yZXV0aWxzL2xpbmsuYyBiL2NvcmV1dGlscy9saW5rLmMKK2luZGV4IGFjM2VmODUuLmFhYjI0OWQgMTAwNjQ0CistLS0gYS9jb3JldXRpbHMvbGluay5jCisrKysgYi9jb3JldXRpbHMvbGluay5jCitAQCAtMzIsOSArMzIsOCBAQCBpbnQgbGlua19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCisgCWFyZ3YgKz0gb3B0aW5kOworIAlpZiAobGluayhhcmd2WzBdLCBhcmd2WzFdKSAhPSAwKSB7CisgCQkvKiBzaGFyZWQgbWVzc2FnZSAqLworLQkJYmJfcGVycm9yX21zZ19hbmRfZGllKCJjYW4ndCBjcmVhdGUgJXNsaW5rICIKKy0JCQkJCSIlcyB0byAlcyIsICJoYXJkIiwKKy0JCQkJCWFyZ3ZbMV0sIGFyZ3ZbMF0KKysJCWJiX3BlcnJvcl9tc2dfYW5kX2RpZSgiY2FuJ3QgY3JlYXRlICVzbGluayAnJXMnIHRvICclcyciLAorKwkJCQkJImhhcmQiLAlhcmd2WzFdLCBhcmd2WzBdCisgCQkpOworIAl9CisgCXJldHVybiBFWElUX1NVQ0NFU1M7CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9iYl9hcmNoaXZlLmggYi9pbmNsdWRlL2JiX2FyY2hpdmUuaAoraW5kZXggMmI5YzVmMC4uMWU0ZGEzYyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvYmJfYXJjaGl2ZS5oCisrKysgYi9pbmNsdWRlL2JiX2FyY2hpdmUuaAorQEAgLTE5Niw2ICsxOTYsNyBAQCB2b2lkIHNlZWtfYnlfanVtcChpbnQgZmQsIG9mZl90IGFtb3VudCkgRkFTVF9GVU5DOworIHZvaWQgc2Vla19ieV9yZWFkKGludCBmZCwgb2ZmX3QgYW1vdW50KSBGQVNUX0ZVTkM7CisgCisgY29uc3QgY2hhciAqc3RyaXBfdW5zYWZlX3ByZWZpeChjb25zdCBjaGFyICpzdHIpIEZBU1RfRlVOQzsKKytpbnQgdW5zYWZlX3N5bWxpbmtfdGFyZ2V0KGNvbnN0IGNoYXIgKnRhcmdldCkgRkFTVF9GVU5DOworIAorIHZvaWQgZGF0YV9hbGlnbihhcmNoaXZlX2hhbmRsZV90ICphcmNoaXZlX2hhbmRsZSwgdW5zaWduZWQgYm91bmRhcnkpIEZBU1RfRlVOQzsKKyBjb25zdCBsbGlzdF90ICpmaW5kX2xpc3RfZW50cnkoY29uc3QgbGxpc3RfdCAqbGlzdCwgY29uc3QgY2hhciAqZmlsZW5hbWUpIEZBU1RfRlVOQzsKK2RpZmYgLS1naXQgYS9saWJiYi9jb3B5X2ZpbGUuYyBiL2xpYmJiL2NvcHlfZmlsZS5jCitpbmRleCAyM2MwZjgzLi5iZTkwMDY2IDEwMDY0NAorLS0tIGEvbGliYmIvY29weV9maWxlLmMKKysrKyBiL2xpYmJiL2NvcHlfZmlsZS5jCitAQCAtMzcxLDcgKzM3MSwxMCBAQCBpbnQgRkFTVF9GVU5DIGNvcHlfZmlsZShjb25zdCBjaGFyICpzb3VyY2UsIGNvbnN0IGNoYXIgKmRlc3QsIGludCBmbGFncykKKyAJCQlpbnQgciA9IHN5bWxpbmsobHBhdGgsIGRlc3QpOworIAkJCWZyZWUobHBhdGgpOworIAkJCWlmIChyIDwgMCkgeworLQkJCQliYl9wZXJyb3JfbXNnKCJjYW4ndCBjcmVhdGUgc3ltbGluayAnJXMnIiwgZGVzdCk7CisrCQkJCS8qIHNoYXJlZCBtZXNzYWdlICovCisrCQkJCWJiX3BlcnJvcl9tc2coImNhbid0IGNyZWF0ZSAlc2xpbmsgJyVzJyB0byAnJXMnIiwKKysJCQkJCSJzeW0iLCBkZXN0LCBscGF0aAorKwkJCQkpOworIAkJCQlyZXR1cm4gLTE7CisgCQkJfQorIAkJCWlmIChmbGFncyAmIEZJTEVVVElMU19QUkVTRVJWRV9TVEFUVVMpCitkaWZmIC0tZ2l0IGEvdGVzdHN1aXRlL3Rhci50ZXN0cyBiL3Rlc3RzdWl0ZS90YXIudGVzdHMKK2luZGV4IDlmN2NlMTUuLmI3Y2Q3NGMgMTAwNzU1CistLS0gYS90ZXN0c3VpdGUvdGFyLnRlc3RzCisrKysgYi90ZXN0c3VpdGUvdGFyLnRlc3RzCitAQCAtMTAsOSArMTAsNiBAQCB1bnNldCBMQ19DT0xMQVRFCisgdW5zZXQgTENfQUxMCisgdW1hc2sgMDIyCisgCistcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCistbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCistCisgIyB0ZXN0aW5nICJ0ZXN0IG5hbWUiICJzY3JpcHQiICJleHBlY3RlZCByZXN1bHQiICJmaWxlIGlucHV0IiAic3RkaW4iCisgCisgdGVzdGluZyAiRW1wdHkgZmlsZSBpcyBub3QgYSB0YXJiYWxsIiAnXAorQEAgLTUzLDYgKzUwLDcgQEAgZGQgaWY9L2Rldi96ZXJvIGJzPTUxMiBjb3VudD0yMCAyPi9kZXYvbnVsbCB8IHRhciB4dmYgLSAyPiYxOyBlY2hvICQ/CisgIiIgIiIKKyBTS0lQPQorIAorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorICMgInRhciBjZiB0ZXN0LnRhciBpbnB1dCBpbnB1dF9kaXIvIGlucHV0X2hhcmQxIGlucHV0X2hhcmQyIGlucHV0X2hhcmQxIGlucHV0X2Rpci8gaW5wdXQiOgorICMgR05VIHRhciAxLjI2IHJlY29yZHMgYXMgaGFyZGxpbmtzOgorICMgIGlucHV0X2hhcmQyIC0+IGlucHV0X2hhcmQxCitAQCAtNjQsNyArNjIsNiBAQCBTS0lQPQorICMgV2UgYWxzbyBkb24ndCB1c2UgImhydy1yLS1yLS0iIG5vdGF0aW9uIGZvciBoYXJkbGlua3MgaW4gInRhciB0diIgbGlzdGluZy4KKyBvcHRpb25hbCBGRUFUVVJFX1RBUl9DUkVBVEUgRkVBVFVSRV9MU19TT1JURklMRVMKKyB0ZXN0aW5nICJ0YXIgaGFyZGxpbmtzIGFuZCByZXBlYXRlZCBmaWxlcyIgJ1wKKy1ybSAtcmYgaW5wdXRfKiB0ZXN0LnRhciAyPi9kZXYvbnVsbAorID5pbnB1dF9oYXJkMQorIGxuIGlucHV0X2hhcmQxIGlucHV0X2hhcmQyCisgbWtkaXIgaW5wdXRfZGlyCitAQCAtOTUsMTAgKzkyLDExIEBAIGRyd3hyLXhyLXggaW5wdXRfZGlyCisgIiBcCisgIiIgIiIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgb3B0aW9uYWwgRkVBVFVSRV9UQVJfQ1JFQVRFIEZFQVRVUkVfTFNfU09SVEZJTEVTCisgdGVzdGluZyAidGFyIGhhcmRsaW5rcyBtb2RlIiAnXAorLXJtIC1yZiBpbnB1dF8qIHRlc3QudGFyIDI+L2Rldi9udWxsCisgPmlucHV0X2hhcmQxCisgY2htb2QgNzQxIGlucHV0X2hhcmQxCisgbG4gaW5wdXRfaGFyZDEgaW5wdXRfaGFyZDIKK0BAIC0xMjgsMTAgKzEyNiwxMSBAQCBPazogMAorICIgXAorICIiICIiCisgU0tJUD0KKytjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAorIAorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURSBGRUFUVVJFX0xTX1NPUlRGSUxFUworIHRlc3RpbmcgInRhciBzeW1saW5rcyBtb2RlIiAnXAorLXJtIC1yZiBpbnB1dF8qIHRlc3QudGFyIDI+L2Rldi9udWxsCisgPmlucHV0X2ZpbGUKKyBjaG1vZCA3NDEgaW5wdXRfZmlsZQorIGxuIC1zIGlucHV0X2ZpbGUgaW5wdXRfc29mdAorQEAgLTE1OSwxMCArMTU4LDExIEBAIGxyd3hyd3hyd3ggaW5wdXRfZmlsZQorICIgXAorICIiICIiCisgU0tJUD0KKytjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAorIAorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURSBGRUFUVVJFX1RBUl9MT05HX09QVElPTlMKKyB0ZXN0aW5nICJ0YXIgLS1vdmVyd3JpdGUiICJcCistcm0gLXJmIGlucHV0XyogdGVzdC50YXIgMj4vZGV2L251bGwKKyBsbiBpbnB1dCBpbnB1dF9oYXJkCisgdGFyIGNmIHRlc3QudGFyIGlucHV0X2hhcmQKKyBlY2hvIFdST05HID5pbnB1dAorQEAgLTE3NCwxMiArMTc0LDEzIEBAIE9rCisgIiBcCisgIk9rXG4iICIiCisgU0tJUD0KKytjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAorIAorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorIHRlc3QgeCIkU0tJUF9LTk9XTl9CVUdTIiA9IHgiIiAmJiB7CisgIyBOZWVkcyB0byBiZSBydW4gdW5kZXIgbm9uLXJvb3QgZm9yIG1lYW5pbmdmdWwgdGVzdAorIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURQorIHRlc3RpbmcgInRhciB3cml0aW5nIGludG8gcmVhZC1vbmx5IGRpciIgJ1wKKy1ybSAtcmYgaW5wdXRfKiB0ZXN0LnRhciAyPi9kZXYvbnVsbAorIG1rZGlyIGlucHV0X2RpcgorID5pbnB1dF9kaXIvaW5wdXRfZmlsZQorIGNobW9kIDU1MCBpbnB1dF9kaXIKK0BAIC0yMDEsNyArMjAyLDkgQEAgZHIteHIteC0tLSBpbnB1dF9kaXIKKyAiIiAiIgorIFNLSVA9CisgfQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgIyBIYWQgYSBidWcgd2hlcmUgb24gZXh0cmFjdCBhdXRvZGV0ZWN0IGZpcnN0ICJzd2l0Y2hlZCBvZmYiIC16CisgIyBhbmQgdGhlbiBmYWlsZWQgdG8gcmVjb2duaXplIC50Z3ogZXh0ZW5zaW9uCisgb3B0aW9uYWwgRkVBVFVSRV9UQVJfQ1JFQVRFIEZFQVRVUkVfU0VBTUxFU1NfR1ogR1VOWklQCitAQCAtMjE3LDcgKzIyMCw5IEBAIE9rCisgIiBcCisgIiIgIiIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgIyBEbyB3ZSBkZXRlY3QgWFotY29tcHJlc3NlZCBkYXRhIChldmVuIHcvbyAudGFyLnh6IG9yIHR4eiBleHRlbnNpb24pPworICMgKHRoZSB1dWVuY29kZWQgaGVsbG9fd29ybGQudHh6IGNvbnRhaW5zIG9uZSBlbXB0eSBmaWxlIG5hbWVkICJoZWxsb193b3JsZCIpCisgb3B0aW9uYWwgVVVERUNPREUgRkVBVFVSRV9UQVJfQVVUT0RFVEVDVCBGRUFUVVJFX1NFQU1MRVNTX1haCitAQCAtMjM2LDcgKzI0MSw5IEBAIEFBQUVXVm89CisgPT09PQorICIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgIyBPbiBleHRyYWN0LCBldmVyeXRoaW5nIHVwIHRvIGFuZCBpbmNsdWRpbmcgbGFzdCAiLi4iIGNvbXBvbmVudCBpcyBzdHJpcHBlZAorIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURQorIHRlc3RpbmcgInRhciBzdHJpcHMgLy4uLyBvbiBleHRyYWN0IiAiXAorQEAgLTI1NSw3ICsyNjIsOSBAQCBPaworICIgXAorICIiICIiCisgU0tJUD0KKytjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAorIAorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorICMgYXR0YWNrLnRhci5iejIgaGFzIHN5bWxpbmsgcG9pbnRpbmcgdG8gYSBzeXN0ZW0gZmlsZQorICMgZm9sbG93ZWQgYnkgYSByZWd1bGFyIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lCisgIyBjb250YWluaW5nICJyb290OjowOjA6Oi9yb290Oi9iaW4vc2giOgorQEAgLTI3MCw2ICsyNzksNyBAQCBvcHRpb25hbCBVVURFQ09ERSBGRUFUVVJFX1RBUl9BVVRPREVURUNUIEZFQVRVUkVfU0VBTUxFU1NfQloyCisgdGVzdGluZyAidGFyIGRvZXMgbm90IGV4dHJhY3QgaW50byBzeW1saW5rcyIgIlwKKyA+Pi90bXAvcGFzc3dkICYmIHV1ZGVjb2RlIC1vIGlucHV0ICYmIHRhciB4ZiBpbnB1dCAyPiYxICYmIHJtIHBhc3N3ZDsgY2F0IC90bXAvcGFzc3dkOyBlY2hvIFwkPworICIgIlwKKyt0YXI6IHNraXBwaW5nIHVuc2FmZSBzeW1saW5rIHRvICcvdG1wL3Bhc3N3ZCcgaW4gYXJjaGl2ZSwgc2V0IEVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTPTEgdG8gZXh0cmFjdAorIDAKKyAiIFwKKyAiIiAiXAorQEAgLTI4MSwxMiArMjkxLDE1IEBAIGw0L1Y4TERvZTkweWlXSmhPSnZJeXBnRWZ4ZHlSVGhRa0JWbi9iST0KKyA9PT09CisgIgorIFNLSVA9CisrY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKKysKKytta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKKyAjIEFuZCBzYW1lIHdpdGggLWsKKyBvcHRpb25hbCBVVURFQ09ERSBGRUFUVVJFX1RBUl9BVVRPREVURUNUIEZFQVRVUkVfU0VBTUxFU1NfQloyCisgdGVzdGluZyAidGFyIC1rIGRvZXMgbm90IGV4dHJhY3QgaW50byBzeW1saW5rcyIgIlwKKyA+Pi90bXAvcGFzc3dkICYmIHV1ZGVjb2RlIC1vIGlucHV0ICYmIHRhciB4ZiBpbnB1dCAtayAyPiYxICYmIHJtIHBhc3N3ZDsgY2F0IC90bXAvcGFzc3dkOyBlY2hvIFwkPworICIgIlwKKy10YXI6IGNhbid0IG9wZW4gJ3Bhc3N3ZCc6IEZpbGUgZXhpc3RzCisrdGFyOiBza2lwcGluZyB1bnNhZmUgc3ltbGluayB0byAnL3RtcC9wYXNzd2QnIGluIGFyY2hpdmUsIHNldCBFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUz0xIHRvIGV4dHJhY3QKKyAwCisgIiBcCisgIiIgIlwKK0BAIC0yOTgsNyArMzExLDkgQEAgbDQvVjhMRG9lOTB5aVdKaE9Kdkl5cGdFZnhkeVJUaFFrQlZuL2JJPQorID09PT0KKyAiCisgU0tJUD0KKytjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAorIAorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorIG9wdGlvbmFsIFVOSUNPREVfU1VQUE9SVCBGRUFUVVJFX1RBUl9HTlVfRVhURU5TSU9OUyBGRUFUVVJFX1NFQU1MRVNTX0JaMiBGRUFUVVJFX1RBUl9BVVRPREVURUNUCisgdGVzdGluZyAiUGF4LWVuY29kZWQgVVRGOCBuYW1lcyBhbmQgc3ltbGlua3MiICdcCisgdGFyIHh2ZiAuLi90YXIudXRmOC50YXIuYnoyIDI+JjE7IGVjaG8gJD8KK0BAIC0zMDksMTcgKzMyNCw0NSBAQCBybSAtcmYgZXRjIHVzcgorICcgIlwKKyBldGMvc3NsL2NlcnRzLzNiMjcxNmU1LjAKKyBldGMvc3NsL2NlcnRzL0VCR19FbGVrdHJvbmlrX1NlcnRpZmlrYV9IaXptZXRfU2HEn2xhecSxY8Sxc8SxLnBlbQorK3Rhcjogc2tpcHBpbmcgdW5zYWZlIHN5bWxpbmsgdG8gJy91c3Ivc2hhcmUvY2EtY2VydGlmaWNhdGVzL21vemlsbGEvRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEuY3J0JyBpbiBhcmNoaXZlLCBzZXQgRVhUUkFDVF9VTlNBRkVfU1lNTElOS1M9MSB0byBleHRyYWN0CisgZXRjL3NzbC9jZXJ0cy9mODBjYzdmNi4wCisgdXNyL3NoYXJlL2NhLWNlcnRpZmljYXRlcy9tb3ppbGxhL0VCR19FbGVrdHJvbmlrX1NlcnRpZmlrYV9IaXptZXRfU2HEn2xhecSxY8Sxc8SxLmNydAorIDAKKyBldGMvc3NsL2NlcnRzLzNiMjcxNmU1LjAgLT4gRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEucGVtCistZXRjL3NzbC9jZXJ0cy9FQkdfRWxla3Ryb25pa19TZXJ0aWZpa2FfSGl6bWV0X1NhxJ9sYXnEsWPEsXPEsS5wZW0gLT4gL3Vzci9zaGFyZS9jYS1jZXJ0aWZpY2F0ZXMvbW96aWxsYS9FQkdfRWxla3Ryb25pa19TZXJ0aWZpa2FfSGl6bWV0X1NhxJ9sYXnEsWPEsXPEsS5jcnQKKyBldGMvc3NsL2NlcnRzL2Y4MGNjN2Y2LjAgLT4gRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEucGVtCisgIiBcCisgIiIgIiIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCistCistY2QgLi4gJiYgcm0gLXJmIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorK29wdGlvbmFsIFVVREVDT0RFIEZFQVRVUkVfU0VBTUxFU1NfQloyIEZFQVRVUkVfVEFSX0FVVE9ERVRFQ1QKKyt0ZXN0aW5nICJTeW1saW5rIGF0dGFjazogY3JlYXRlIHN5bWxpbmsgYW5kIHRoZW4gd3JpdGUgdGhyb3VnaCBpdCIgJ1wKKytleGVjIDI+JjEKKyt1dWRlY29kZSAtbyBpbnB1dCAmJiB0YXIgeHZmIGlucHV0OyBlY2hvICQ/CisrbHMgL3RtcC9iYl90ZXN0X2V2aWxmaWxlCisrbHMgYmJfdGVzdF9ldmlsZmlsZQorK2xzIHN5bWxpbmsvYmJfdGVzdF9ldmlsZmlsZQorKycgIlwKKythbnl0aGluZy50eHQKKytzeW1saW5rCisrdGFyOiBza2lwcGluZyB1bnNhZmUgc3ltbGluayB0byAnL3RtcCcgaW4gYXJjaGl2ZSwgc2V0IEVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTPTEgdG8gZXh0cmFjdAorK3N5bWxpbmsvYmJfdGVzdF9ldmlsZmlsZQorKzAKKytsczogL3RtcC9iYl90ZXN0X2V2aWxmaWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CisrbHM6IGJiX3Rlc3RfZXZpbGZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKytzeW1saW5rL2JiX3Rlc3RfZXZpbGZpbGUKKysiIFwKKysiIiAiXAorK2JlZ2luLWJhc2U2NCA2NDQgdGFyX3N5bWxpbmtfYXR0YWNrLnRhci5iejIKKytRbHBvT1RGQldTWlRXWmdzN2JRQUFMVC9oTW1RQUZCQUFmK0FFTUFHSlBQdjMyQUFBSUFJTUFDNXRobFIKKytvbUFqQW1DTUFEUVQxQnFORTBBRXdBQWpBRXdFbFRLZW85TlRSNmg2Z2Flb0EwRFFOTFZkd1paNWlOVGsKKytBUXdDQVY2UzAwUUZKWWhybGZGa1ZDRURFR3RnTlZxWXJJMHVLM2dnbnQzMGdxazRlMVRUUW01UUlBS2EKKytTSnF6UkdTRkxNbU9sb0hTQWN2TGlGeHhSaVF0UVpGK3FQeGJvMTczWkRJU09Bb05vUE40UFFQaEJoS1MKKytuOGZZYUtsaW9DVHpMMm9YWWN6eVVVSVA0dTVJcHdvU0V3V2R0b0E9CisrPT09PQorKyIKKytTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisgZXhpdCAkRkFJTENPVU5UCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0Y2FlNmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNi0yMTQ3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSBkNDc0ZmZjNjgyOTBlMGE4MzY1MWM0NDMyZWVhYmZhNjJjZDUxZTg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFRodSwgMTAgTWFyIDIwMTYgMTE6NDc6NTggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdWRoY3A6IGZpeCBhIFNFR1Ygb24gbWFsZm9ybWVkIFJGQzEwMzUtZW5jb2RlZCBkb21haW4gbmFtZQotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTIxNDcKLQotaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWQ0NzRmZmMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBuZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jIHwgMTMgKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBidXN5Ym94LTEuMjMuMi9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYnVzeWJveC0xLjIzLjIub3JpZy9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jCi0rKysgYnVzeWJveC0xLjIzLjIvbmV0d29ya2luZy91ZGhjcC9kb21haW5fY29kZWMuYwotQEAgLTYzLDExICs2MywxMCBAQCBjaGFyKiBGQVNUX0ZVTkMgZG5hbWVfZGVjKGNvbnN0IHVpbnQ4X3QKLSAJCQkJaWYgKGNydHBvcyArICpjICsgMSA+IGNsZW4pIC8qIGxhYmVsIHRvbyBsb25nPyBhYm9ydCAqLwotIAkJCQkJcmV0dXJuIE5VTEw7Ci0gCQkJCWlmIChkc3QpCi0tCQkJCQltZW1jcHkoZHN0ICsgbGVuLCBjICsgMSwgKmMpOwotKwkJCQkJLyogXDNjb20gLS0tPiAiY29tLiIgKi8KLSsJCQkJCSgoY2hhciopbWVtcGNweShkc3QgKyBsZW4sIGMgKyAxLCAqYykpWzBdID0gJy4nOwotIAkJCQlsZW4gKz0gKmMgKyAxOwotIAkJCQljcnRwb3MgKz0gKmMgKyAxOwotLQkJCQlpZiAoZHN0KQotLQkJCQkJZHN0W2xlbiAtIDFdID0gJy4nOwotIAkJCX0gZWxzZSB7Ci0gCQkJCS8qIE5VTDogZW5kIG9mIGN1cnJlbnQgZG9tYWluIG5hbWUgKi8KLSAJCQkJaWYgKHJldHBvcyA9PSAwKSB7Ci1AQCAtNzgsNyArNzcsMTAgQEAgY2hhciogRkFTVF9GVU5DIGRuYW1lX2RlYyhjb25zdCB1aW50OF90Ci0gCQkJCQljcnRwb3MgPSByZXRwb3M7Ci0gCQkJCQlyZXRwb3MgPSBkZXB0aCA9IDA7Ci0gCQkJCX0KLS0JCQkJaWYgKGRzdCkKLSsJCQkJaWYgKGRzdCAmJiBsZW4gIT0gMCkKLSsJCQkJCS8qIFw0aG9zdFwzY29tXDBcNGhvc3QgYW5kIHdlIGFyZSBhdCBcMDoKLSsJCQkJCSAqIFwzY29tIHdhcyBjb252ZXJ0ZWQgdG8gImNvbS4iLCBjaGFuZ2UgZG90IHRvIHNwYWNlLgotKwkJCQkJICovCi0gCQkJCQlkc3RbbGVuIC0gMV0gPSAnICc7Ci0gCQkJfQotIAotQEAgLTIyOCw2ICsyMzAsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCWludCBsZW47Ci0gCXVpbnQ4X3QgKmVuY29kZWQ7Ci0gCi0rICAgICAgICB1aW50OF90IHN0cls2XSA9IHsgMHgwMCwgMHgwMCwgMHgwMiwgMHg2NSwgMHg2NSwgMHgwMCB9OwotKyAgICAgICAgcHJpbnRmKCJOVUw6JyVzJ1xuIiwgICBkbmFtZV9kZWMoc3RyLCA2LCAiIikpOwotKwotICNkZWZpbmUgRE5BTUVfREVDKGVuY29kZWQscHJlKSBkbmFtZV9kZWMoKHVpbnQ4X3QqKShlbmNvZGVkKSwgc2l6ZW9mKGVuY29kZWQpLCAocHJlKSkKLSAJcHJpbnRmKCInJXMnXG4iLCAgICAgICBETkFNRV9ERUMoIlw0aG9zdFwzY29tXDAiLCAidGVzdDE6IikpOwotIAlwcmludGYoInRlc3QyOiclcydcbiIsIEROQU1FX0RFQygiXDRob3N0XDNjb21cMFw0aG9zdFwzY29tXDAiLCAiIikpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNi0yMTQ3XzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDdfMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgzNDljMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDdfMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gMWI3YzE3MzkxZGU2NjUwMmRkN2E5N2M4NjZlMGEzMzY4MWVkYmIxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDExIE1hciAyMDE2IDAwOjI2OjU4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVkaGNwYzogZml4IGEgd2FybmluZyBpbiBkZWJ1ZyBjb2RlCi0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTIxNDcgcmVncmVzc2lvbiBmaXgKLQotaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTFiN2MxNwotCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gbmV0d29ya2luZy91ZGhjcC9kb21haW5fY29kZWMuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvbmV0d29ya2luZy91ZGhjcC9kb21haW5fY29kZWMuYyBiL25ldHdvcmtpbmcvdWRoY3AvZG9tYWluX2NvZGVjLmMKLWluZGV4IGNlZTMxZjEuLjVhOTIzY2MgMTAwNjQ0Ci0tLS0gYS9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jCi0rKysgYi9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jCi1AQCAtNyw2ICs3LDcgQEAKLSAgKiBMaWNlbnNlZCB1bmRlciBHUEx2MiBvciBsYXRlciwgc2VlIGZpbGUgTElDRU5TRSBpbiB0aGlzIHNvdXJjZSB0cmVlLgotICAqLwotICNpZmRlZiBETlNfQ09NUFJfVEVTVElORwotKyMgZGVmaW5lIF9HTlVfU09VUkNFCi0gIyBkZWZpbmUgRkFTVF9GVU5DIC8qIG5vdGhpbmcgKi8KLSAjIGRlZmluZSB4bWFsbG9jIG1hbGxvYwotICMgaW5jbHVkZSA8c3RkbGliLmg+Ci0tLSAKLTIuMy41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtMjE0OC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtMjE0OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYwNGE3Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1Gcm9tIDM1MmY3OWFjYmQ3NTljMTQzOTllMzliYWVmMjFmYzRmZmUxODBhYzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotRGF0ZTogRnJpLCAyNiBGZWIgMjAxNiAxNTo1NDo1NiArMDEwMAotU3ViamVjdDogW1BBVENIXSB1ZGhjcGM6IGZpeCBPUFRJT05fNlJEIHBhcnNpbmcgKGNvdWxkIG92ZXJmbG93IGl0cyBtYWxsb2NlZAotIGJ1ZmZlcikKLQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi0yMTQ4Ci1odHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9MzUyZjc5Ci0KLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBuZXR3b3JraW5nL3VkaGNwL2NvbW1vbi5jIHwgMTUgKysrKysrKysrKysrKy0tCi0gbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jICB8ICA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBidXN5Ym94LTEuMjMuMi9uZXR3b3JraW5nL3VkaGNwL2NvbW1vbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYnVzeWJveC0xLjIzLjIub3JpZy9uZXR3b3JraW5nL3VkaGNwL2NvbW1vbi5jCi0rKysgYnVzeWJveC0xLjIzLjIvbmV0d29ya2luZy91ZGhjcC9jb21tb24uYwotQEAgLTE0Miw3ICsxNDIsNyBAQCBjb25zdCBjaGFyIGRoY3Bfb3B0aW9uX3N0cmluZ3NbXSBBTElHTjEKLSAgKiB1ZGhjcF9zdHIyb3B0c2V0OiB0byBkZXRlcm1pbmUgaG93IG1hbnkgYnl0ZXMgdG8gYWxsb2NhdGUuCi0gICogeG1hbGxvY19vcHRuYW1lX29wdHZhbDogdG8gZXN0aW1hdGUgc3RyaW5nIGxlbmd0aAotICAqIGZyb20gYmluYXJ5IG9wdGlvbiBsZW5ndGg6IChvcHRpb25bTEVOXSAvIGRoY3Bfb3B0aW9uX2xlbmd0aHNbb3B0X3R5cGVdKQotLSAqIGlzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMsIG11bHRpcGx5IGluIGJ5IG9uZSBlbGVtZW50J3Mgc3RyaW5nIHdpZHRoCi0rICogaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cywgbXVsdGlwbHkgaXQgYnkgb25lIGVsZW1lbnQncyBzdHJpbmcgd2lkdGgKLSAgKiAobGVuX29mX29wdGlvbl9hc19zdHJpbmdbb3B0X3R5cGVdKSBhbmQgeW91IGtub3cgaG93IHdpZGUgc3RyaW5nIHlvdSBuZWVkLgotICAqLwotIGNvbnN0IHVpbnQ4X3QgZGhjcF9vcHRpb25fbGVuZ3Roc1tdIEFMSUdOMSA9IHsKLUBAIC0xNjIsNyArMTYyLDE4IEBAIGNvbnN0IHVpbnQ4X3QgZGhjcF9vcHRpb25fbGVuZ3Roc1tdIEFMSUcKLSAJW09QVElPTl9TMzJdID0gICAgIDQsCi0gCS8qIEp1c3QgbGlrZSBPUFRJT05fU1RSSU5HLCB3ZSB1c2UgbWluaW11bSBsZW5ndGggaGVyZSAqLwotIAlbT1BUSU9OX1NUQVRJQ19ST1VURVNdID0gNSwKLS0JW09QVElPTl82UkRdID0gICAgMjIsICAvKiBpZ25vcmVkIGJ5IHVkaGNwX3N0cjJvcHRzZXQgKi8KLSsJW09QVElPTl82UkRdID0gICAgMTIsICAvKiBpZ25vcmVkIGJ5IHVkaGNwX3N0cjJvcHRzZXQgKi8KLSsJLyogVGhlIGFib3ZlIHZhbHVlIHdhcyBjaG9zZW4gYXMgZm9sbG93czoKLSsJICogbGVuX29mX29wdGlvbl9hc19zdHJpbmdbXSBmb3IgdGhpcyBvcHRpb24gaXMgPjYwOiBpdCdzIGEgc3RyaW5nIG9mIHRoZSBmb3JtCi0rCSAqICIzMiAxMjggZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmIDI1NS4yNTUuMjU1LjI1NSAiLgotKwkgKiBFYWNoIGFkZGl0aW9uYWwgaXB2NCBhZGRyZXNzIHRha2VzIDQgYnl0ZXMgaW4gYmluYXJ5IG9wdGlvbiBhbmQgYXBwZW5kcwotKwkgKiBhbm90aGVyICIyNTUuMjU1LjI1NS4yNTUgIiAxNi1ieXRlIHN0cmluZy4gV2UgY2FuIHNldCBbT1BUSU9OXzZSRF0gPSA0Ci0rCSAqIGJ1dCB0aGlzIHNldmVyZWx5IG92ZXJlc3RpbWF0ZXMgc3RyaW5nIGxlbmd0aDogaW5zdGVhZCBvZiAxNiBieXRlcywKLSsJICogaXQgYWRkcyA+NjAgZm9yIGV2ZXJ5IDQgYnl0ZXMgaW4gYmluYXJ5IG9wdGlvbi4KLSsJICogV2UgY2hlYXQgYW5kIGRlY2xhcmUgaGVyZSB0aGF0IG9wdGlvbiBpcyBpbiB1bml0cyBvZiAxMiBieXRlcy4KLSsJICogVGhpcyBhZGRzIG1vcmUgdGhhbiA2MCBieXRlcyBmb3IgZXZlcnkgdGhyZWUgaXB2NCBhZGRyZXNzZXMgLSBtb3JlIHRoYW4gZW5vdWdoLgotKwkgKiAoRXZlbiAxNiBpbnN0ZWFkIG9mIDEyIHNob3VsZCB3b3JrLCBidXQgbGV0J3MgYmUgcGFyYW5vaWQpLgotKwkgKi8KLSB9OwotIAotIAotSW5kZXg6IGJ1c3lib3gtMS4yMy4yL25ldHdvcmtpbmcvdWRoY3AvZGhjcGMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGJ1c3lib3gtMS4yMy4yLm9yaWcvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCi0rKysgYnVzeWJveC0xLjIzLjIvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCi1AQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBjb25zdCB1aW50OF90IGxlbl9vZl9vcHRpb25fYXNfc3QKLSAJW09QVElPTl9JUCAgICAgICAgICAgICAgXSA9IHNpemVvZigiMjU1LjI1NS4yNTUuMjU1ICIpLAotIAlbT1BUSU9OX0lQX1BBSVIgICAgICAgICBdID0gc2l6ZW9mKCIyNTUuMjU1LjI1NS4yNTUgIikgKiAyLAotIAlbT1BUSU9OX1NUQVRJQ19ST1VURVMgICBdID0gc2l6ZW9mKCIyNTUuMjU1LjI1NS4yNTUvMzIgMjU1LjI1NS4yNTUuMjU1ICIpLAotLQlbT1BUSU9OXzZSRCAgICAgICAgICAgICBdID0gc2l6ZW9mKCIzMiAxMjggZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmIDI1NS4yNTUuMjU1LjI1NSAiKSwKLSsJW09QVElPTl82UkQgICAgICAgICAgICAgXSA9IHNpemVvZigiMTMyIDEyOCBmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmYgMjU1LjI1NS4yNTUuMjU1ICIpLAotIAlbT1BUSU9OX1NUUklORyAgICAgICAgICBdID0gMSwKLSAJW09QVElPTl9TVFJJTkdfSE9TVCAgICAgXSA9IDEsCi0gI2lmIEVOQUJMRV9GRUFUVVJFX1VESENQX1JGQzMzOTcKLUBAIC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIE5PSU5MSU5FIGNoYXIgKnhtYWxsb2Nfb3B0bmFtZV9vcAotIAl0eXBlID0gb3B0ZmxhZy0+ZmxhZ3MgJiBPUFRJT05fVFlQRV9NQVNLOwotIAlvcHRsZW4gPSBkaGNwX29wdGlvbl9sZW5ndGhzW3R5cGVdOwotIAl1cHBlcl9sZW5ndGggPSBsZW5fb2Zfb3B0aW9uX2FzX3N0cmluZ1t0eXBlXQotLQkJKiAoKHVuc2lnbmVkKShsZW4gKyBvcHRsZW4gLSAxKSAvICh1bnNpZ25lZClvcHRsZW4pOwotKwkJKiAoKHVuc2lnbmVkKShsZW4gKyBvcHRsZW4pIC8gKHVuc2lnbmVkKW9wdGxlbik7Ci0gCi0gCWRlc3QgPSByZXQgPSB4bWFsbG9jKHVwcGVyX2xlbmd0aCArIHN0cmxlbihvcHRfbmFtZSkgKyAyKTsKLSAJZGVzdCArPSBzcHJpbnRmKHJldCwgIiVzPSIsIG9wdF9uYW1lKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtNjMwMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtNjMwMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUxYmMyMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTYzMDEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1idXN5Ym94MS4yNC4xOiBGaXggQ1ZFLTIwMTYtNjMwMQotCi1bTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzcxMAotCi1udHBkOiBOVFAgc2VydmVyIGRlbmlhbCBvZiBzZXJ2aWNlIGZsYXcKLQotVGhlIGJ1c3lib3ggTlRQIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgY2hlY2sgdGhlIE5UUCBtb2RlIG9mIHBhY2tldHMKLXJlY2VpdmVkIG9uIHRoZSBzZXJ2ZXIgcG9ydCBhbmQgcmVzcG9uZHMgdG8gYW55IHBhY2tldCB3aXRoIHRoZSByaWdodAotc2l6ZS4gVGhpcyBpbmNsdWRlcyByZXNwb25zZXMgZnJvbSBhbm90aGVyIE5UUCBzZXJ2ZXIuIEFuIGF0dGFja2VyIGNhbgotc2VuZCBhIHBhY2tldCB3aXRoIGEgc3Bvb2ZlZCBzb3VyY2UgYWRkcmVzcyBpbiBvcmRlciB0byBjcmVhdGUgYW4KLWluZmluaXRlIGxvb3Agb2YgcmVzcG9uc2VzIGJldHdlZW4gdHdvIGJ1c3lib3ggTlRQIHNlcnZlcnMuIEFkZGluZwotbW9yZSBwYWNrZXRzIHRvIHRoZSBsb29wIGluY3JlYXNlcyB0aGUgdHJhZmZpYyBiZXR3ZWVuIHRoZSBzZXJ2ZXJzCi11bnRpbCBvbmUgb2YgdGhlbSBoYXMgYSBmdWxseSBsb2FkZWQgQ1BVIGFuZC9vciBuZXR3b3JrLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9MTUwZGM3YTJiNDgzYjgzMzhhM2UxODVjNDc4YjRiMjNlZTg4NGU3MV0KLUNWRTogQ1ZFLTIwMTYtNjMwMQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS9uZXR3b3JraW5nL250cGQuYyBiL25ldHdvcmtpbmcvbnRwZC5jCi1pbmRleCA5NzMyYzliLi4wZjZhNTVmIDEwMDY0NAotLS0tIGEvbmV0d29ya2luZy9udHBkLmMKLSsrKyBiL25ldHdvcmtpbmcvbnRwZC5jCi1AQCAtMTk4NSw2ICsxOTg1LDEzIEBAIHJlY3ZfYW5kX3Byb2Nlc3NfY2xpZW50X3BrdCh2b2lkIC8qaW50IGZkKi8pCi0gCQlnb3RvIGJhaWw7Ci0gCX0KLSAKLSsJLyogUmVzcG9uZCBvbmx5IHRvIGNsaWVudCBhbmQgc3ltbWV0cmljIGFjdGl2ZSBwYWNrZXRzICovCi0rCWlmICgobXNnLm1fc3RhdHVzICYgTU9ERV9NQVNLKSAhPSBNT0RFX0NMSUVOVAotKwkgJiYgKG1zZy5tX3N0YXR1cyAmIE1PREVfTUFTSykgIT0gTU9ERV9TWU1fQUNUCi0rCSkgewotKwkJZ290byBiYWlsOwotKwl9Ci0rCi0gCXF1ZXJ5X3N0YXR1cyA9IG1zZy5tX3N0YXR1czsKLSAJcXVlcnlfeG10dGltZSA9IG1zZy5tX3htdHRpbWU7Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE3LTE1ODczLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNy0xNTg3My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTAyN2M5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNy0xNTg3My5wYXRjaApAQCAtMCwwICsxLDk1IEBACitidXN5Ym94LTEuMjcuMjogRml4IENWRS0yMDE3LTE1ODczCisKK1tObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9idWdzLmJ1c3lib3gubmV0L3Nob3dfYnVnLmNnaT9pZD0xMDQzMQorCitidW56aXAyOiBmaXggcnVuQ250IG92ZXJmbG93CisKK1RoZSBnZXRfbmV4dF9ibG9jayBmdW5jdGlvbiBpbiBhcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfYnVuemlwMi5jCitpbiBCdXN5Qm94IDEuMjcuMiBoYXMgYW4gSW50ZWdlciBPdmVyZmxvdyB0aGF0IG1heSBsZWFkIHRvIGEgd3JpdGUgCithY2Nlc3MgdmlvbGF0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9MDQwMmNiMzJkZjAxNWQ5MzcyNTc4ZTNkYjI3ZGI0N2IzM2Q1YzdiMF0KK0NWRTogQ1ZFLTIwMTctMTU4NzMKK2J1ZzogMTA0MzEKK1NpZ25lZC1vZmYtYnk6IFJhZG92YW4gU2Nhc255IDxyYWRvdmFuLnNjYXNueUBzaWVtZW5zLmNvbT4KKworZGlmZiAtLWdpdCBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19idW56aXAyLmMgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfYnVuemlwMi5jCitpbmRleCA3Y2QxOGY1Li5iZWM4OWVkIDEwMDY0NAorLS0tIGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2J1bnppcDIuYworKysrIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2J1bnppcDIuYworQEAgLTE1NiwxNSArMTU2LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRfYml0cyhidW56aXBfZGF0YSAqYmQsIGludCBiaXRzX3dhbnRlZCkKKyBzdGF0aWMgaW50IGdldF9uZXh0X2Jsb2NrKGJ1bnppcF9kYXRhICpiZCkKKyB7CisgCXN0cnVjdCBncm91cF9kYXRhICpodWZHcm91cDsKKy0JaW50IGRidWZDb3VudCwgZGJ1ZlNpemUsIGdyb3VwQ291bnQsICpiYXNlLCAqbGltaXQsIHNlbGVjdG9yLAorLQkJaSwgaiwgcnVuUG9zLCBzeW1Db3VudCwgc3ltVG90YWwsIG5TZWxlY3RvcnMsIGJ5dGVDb3VudFsyNTZdOworLQlpbnQgcnVuQ250ID0gcnVuQ250OyAvKiBmb3IgY29tcGlsZXIgKi8KKysJaW50IGdyb3VwQ291bnQsICpiYXNlLCAqbGltaXQsIHNlbGVjdG9yLAorKwkJaSwgaiwgc3ltQ291bnQsIHN5bVRvdGFsLCBuU2VsZWN0b3JzLCBieXRlQ291bnRbMjU2XTsKKyAJdWludDhfdCB1Yywgc3ltVG9CeXRlWzI1Nl0sIG10ZlN5bWJvbFsyNTZdLCAqc2VsZWN0b3JzOworIAl1aW50MzJfdCAqZGJ1ZjsKKyAJdW5zaWduZWQgb3JpZ1B0ciwgdDsKKysJdW5zaWduZWQgZGJ1ZkNvdW50LCBydW5Qb3M7CisrCXVuc2lnbmVkIHJ1bkNudCA9IHJ1bkNudDsgLyogZm9yIGNvbXBpbGVyICovCisgCisgCWRidWYgPSBiZC0+ZGJ1ZjsKKy0JZGJ1ZlNpemUgPSBiZC0+ZGJ1ZlNpemU7CisgCXNlbGVjdG9ycyA9IGJkLT5zZWxlY3RvcnM7CisgCisgLyogSW4gYmJveCwgd2UgYXJlIG9rIHdpdGggYWJvcnRpbmcgdGhyb3VnaCBzZXRqbXAgd2hpY2ggaXMgc2V0IHVwIGluIHN0YXJ0X2J1bnppcCAqLworQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgaW50IGdldF9uZXh0X2Jsb2NrKGJ1bnppcF9kYXRhICpiZCkKKyAJICAgaXQgZGlkbid0IGFjdHVhbGx5IHdvcmsuICovCisgCWlmIChnZXRfYml0cyhiZCwgMSkpIHJldHVybiBSRVRWQUxfT0JTT0xFVEVfSU5QVVQ7CisgCW9yaWdQdHIgPSBnZXRfYml0cyhiZCwgMjQpOworLQlpZiAoKGludClvcmlnUHRyID4gZGJ1ZlNpemUpIHJldHVybiBSRVRWQUxfREFUQV9FUlJPUjsKKysJaWYgKG9yaWdQdHIgPiBiZC0+ZGJ1ZlNpemUpIHJldHVybiBSRVRWQUxfREFUQV9FUlJPUjsKKyAKKyAJLyogbWFwcGluZyB0YWJsZTogaWYgc29tZSBieXRlIHZhbHVlcyBhcmUgbmV2ZXIgdXNlZCAoZW5jb2RpbmcgdGhpbmdzCisgCSAgIGxpa2UgYXNjaWkgdGV4dCksIHRoZSBjb21wcmVzc2lvbiBjb2RlIHJlbW92ZXMgdGhlIGdhcHMgdG8gaGF2ZSBmZXdlcgorQEAgLTQzNSw3ICs0MzUsMTQgQEAgc3RhdGljIGludCBnZXRfbmV4dF9ibG9jayhidW56aXBfZGF0YSAqYmQpCisgCQkJICAgc3ltYm9scywgYnV0IGEgcnVuIG9mIGxlbmd0aCAwIGRvZXNuJ3QgbWVhbiBhbnl0aGluZyBpbiB0aGlzCisgCQkJICAgY29udGV4dCkuICBUaHVzIHNwYWNlIGlzIHNhdmVkLiAqLworIAkJCXJ1bkNudCArPSAocnVuUG9zIDw8IG5leHRTeW0pOyAvKiArcnVuUG9zIGlmIFJVTkE7ICsyKnJ1blBvcyBpZiBSVU5CICovCistCQkJaWYgKHJ1blBvcyA8IGRidWZTaXplKSBydW5Qb3MgPDw9IDE7CisrLy9UaGUgMzItYml0IG92ZXJmbG93IG9mIHJ1bkNudCB3YXNuJ3QgeWV0IHNlZW4sIGJ1dCBwcm9iYWJseSBjYW4gaGFwcGVuLgorKy8vVGhpcyB3b3VsZCBiZSB0aGUgZml4IChjYXRjaGVzIHRvbyBsYXJnZSBjb3VudCB3YXkgYmVmb3JlIGl0IGNhbiBvdmVyZmxvdyk6CisrLy8JCQlpZiAocnVuQ250ID4gYmQtPmRidWZTaXplKSB7CisrLy8JCQkJZGJnKCJydW5DbnQ6JXUgPiBkYnVmU2l6ZToldSBSRVRWQUxfREFUQV9FUlJPUiIsCisrLy8JCQkJCQlydW5DbnQsIGJkLT5kYnVmU2l6ZSk7CisrLy8JCQkJcmV0dXJuIFJFVFZBTF9EQVRBX0VSUk9SOworKy8vCQkJfQorKwkJCWlmIChydW5Qb3MgPCBiZC0+ZGJ1ZlNpemUpIHJ1blBvcyA8PD0gMTsKKyAJCQlnb3RvIGVuZF9vZl9odWZmbWFuX2xvb3A7CisgCQl9CisgCitAQCAtNDQ1LDE0ICs0NTIsMTUgQEAgc3RhdGljIGludCBnZXRfbmV4dF9ibG9jayhidW56aXBfZGF0YSAqYmQpCisgCQkgICBsaXRlcmFsIHVzZWQgaXMgdGhlIG9uZSBhdCB0aGUgaGVhZCBvZiB0aGUgbXRmU3ltYm9sIGFycmF5LikgKi8KKyAJCWlmIChydW5Qb3MgIT0gMCkgeworIAkJCXVpbnQ4X3QgdG1wX2J5dGU7CistCQkJaWYgKGRidWZDb3VudCArIHJ1bkNudCA+IGRidWZTaXplKSB7CistCQkJCWRiZygiZGJ1ZkNvdW50OiVkK3J1bkNudDolZCAlZCA+IGRidWZTaXplOiVkIFJFVFZBTF9EQVRBX0VSUk9SIiwKKy0JCQkJCQlkYnVmQ291bnQsIHJ1bkNudCwgZGJ1ZkNvdW50ICsgcnVuQ250LCBkYnVmU2l6ZSk7CisrCQkJaWYgKGRidWZDb3VudCArIHJ1bkNudCA+IGJkLT5kYnVmU2l6ZSkgeworKwkJCQlkYmcoImRidWZDb3VudDoldStydW5DbnQ6JXUgJXUgPiBkYnVmU2l6ZToldSBSRVRWQUxfREFUQV9FUlJPUiIsCisrCQkJCQkJZGJ1ZkNvdW50LCBydW5DbnQsIGRidWZDb3VudCArIHJ1bkNudCwgYmQtPmRidWZTaXplKTsKKyAJCQkJcmV0dXJuIFJFVFZBTF9EQVRBX0VSUk9SOworIAkJCX0KKyAJCQl0bXBfYnl0ZSA9IHN5bVRvQnl0ZVttdGZTeW1ib2xbMF1dOworIAkJCWJ5dGVDb3VudFt0bXBfYnl0ZV0gKz0gcnVuQ250OworLQkJCXdoaWxlICgtLXJ1bkNudCA+PSAwKSBkYnVmW2RidWZDb3VudCsrXSA9ICh1aW50MzJfdCl0bXBfYnl0ZTsKKysJCQl3aGlsZSAoKGludCktLXJ1bkNudCA+PSAwKQorKwkJCQlkYnVmW2RidWZDb3VudCsrXSA9ICh1aW50MzJfdCl0bXBfYnl0ZTsKKyAJCQlydW5Qb3MgPSAwOworIAkJfQorIAorQEAgLTQ2Niw3ICs0NzQsNyBAQCBzdGF0aWMgaW50IGdldF9uZXh0X2Jsb2NrKGJ1bnppcF9kYXRhICpiZCkKKyAJCSAgIGZpcnN0IHN5bWJvbCBpbiB0aGUgbXRmIGFycmF5LCBwb3NpdGlvbiAwLCB3b3VsZCBoYXZlIGJlZW4gaGFuZGxlZAorIAkJICAgYXMgcGFydCBvZiBhIHJ1biBhYm92ZS4gIFRoZXJlZm9yZSAxIHVudXNlZCBtdGYgcG9zaXRpb24gbWludXMKKyAJCSAgIDIgbm9uLWxpdGVyYWwgbmV4dFN5bSB2YWx1ZXMgZXF1YWxzIC0xLikgKi8KKy0JCWlmIChkYnVmQ291bnQgPj0gZGJ1ZlNpemUpIHJldHVybiBSRVRWQUxfREFUQV9FUlJPUjsKKysJCWlmIChkYnVmQ291bnQgPj0gYmQtPmRidWZTaXplKSByZXR1cm4gUkVUVkFMX0RBVEFfRVJST1I7CisgCQlpID0gbmV4dFN5bSAtIDE7CisgCQl1YyA9IG10ZlN5bWJvbFtpXTsKKyAKKy0tIAorY2dpdCB2MC4xMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LTEuMjQuMS10cnVuY2F0ZS1vcGVuLW1vZGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtMS4yNC4xLXRydW5jYXRlLW9wZW4tbW9kZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RjOTEwOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtMS4yNC4xLXRydW5jYXRlLW9wZW4tbW9kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotICBodHRwOi8vYnVzeWJveC5uZXQvZG93bmxvYWRzL2ZpeGVzLTEuMjQuMS8KLSAgaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWUxMTFhMTY0MDQ5NGZlODdmYzkxM2Y5NGZhZTNiYjgwNWRlMGZjOTkKLSAgaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2g9MV8yNF9zdGFibGUmaWQ9YmU3MjljMWQzYjVjOTIzZjEwODcxZGQ2OGVhOTQxNTZkMGY4YzgwMwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotCi1Gcm9tIGJlNzI5YzFkM2I1YzkyM2YxMDg3MWRkNjhlYTk0MTU2ZDBmOGM4MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmkgU3VuZGhvbG0gPGFyaUB0dXhlcmEuY29tPgotRGF0ZTogTW9uLCA0IEphbiAyMDE2IDE1OjQwOjM3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRydW5jYXRlOiBhbHdheXMgc2V0IG1vZGUgd2hlbiBvcGVuaW5nIGZpbGUgdG8gYXZvaWQgZm9ydGlmeQotIGVycm9ycwotCi1CdXN5Ym94IGNyYXNoZXMgZHVlIHRvIG5vIG1vZGUgYmVpbmcgZ2l2ZW4gd2hlbiBvcGVuaW5nOgotJCAuL2J1c3lib3ggdHJ1bmNhdGUgLXMgMU0gZm9vCi0qKiogaW52YWxpZCBvcGVuNjQgY2FsbDogT19DUkVBVCB3aXRob3V0IG1vZGUgKioqOiAuL2J1c3lib3ggdGVybWluYXRlZAotPT09PT09PSBCYWNrdHJhY2U6ID09PT09PT09PQotL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmMuc28uNigrMHg3MzM4ZilbMHg3ZjY2ZDkyMTMzOGZdCi0vbGliL3g4Nl82NC1saW51eC1nbnUvbGliYy5zby42KF9fZm9ydGlmeV9mYWlsKzB4NWMpWzB4N2Y2NmQ5MmFhYzljXQotL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmMuc28uNigrMHhlYjZhYSlbMHg3ZjY2ZDkyOGI2YWFdCi0uL2J1c3lib3hbMHg0ODk5ZjldCi09PT09PT09IE1lbW9yeSBtYXA6ID09PT09PT09Ci0wMDQwMDAwMC0wMDRkMDAwMCByLXhwIDAwMDAwMDAwIDAwOjFhIDEzNzU1OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL2hvbWUvYXJpL2J1c3lib3gvYnVzeWJveAotMDA2Y2YwMDAtMDA2ZDAwMDAgci0tcCAwMDBjZjAwMCAwMDoxYSAxMzc1NTkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9ob21lL2FyaS9idXN5Ym94L2J1c3lib3gKLTAwNmQwMDAwLTAwNmQxMDAwIHJ3LXAgMDAwZDAwMDAgMDA6MWEgMTM3NTU5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvaG9tZS9hcmkvYnVzeWJveC9idXN5Ym94Ci0wMDZkMTAwMC0wMDZkNDAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAKLTAxNGU3MDAwLTAxNTA4MDAwIHJ3LXAgMDAwMDAwMDAgMDA6MDAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVhcF0KLTdmNjZkOGY4YTAwMC03ZjY2ZDhmYTAwMDAgci14cCAwMDAwMDAwMCAwODowNyAxNTc5MDA4ICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGliZ2NjX3Muc28uMQotN2Y2NmQ4ZmEwMDAwLTdmNjZkOTE5ZjAwMCAtLS1wIDAwMDE2MDAwIDA4OjA3IDE1NzkwMDggICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJnY2Nfcy5zby4xCi03ZjY2ZDkxOWYwMDAtN2Y2NmQ5MWEwMDAwIHJ3LXAgMDAwMTUwMDAgMDg6MDcgMTU3OTAwOCAgICAgICAgICAgICAgICAgICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmdjY19zLnNvLjEKLTdmNjZkOTFhMDAwMC03ZjY2ZDkzNWIwMDAgci14cCAwMDAwMDAwMCAwODowNyAxNTc4OTk0ICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGliYy0yLjE5LnNvCi03ZjY2ZDkzNWIwMDAtN2Y2NmQ5NTVhMDAwIC0tLXAgMDAxYmIwMDAgMDg6MDcgMTU3ODk5NCAgICAgICAgICAgICAgICAgICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmMtMi4xOS5zbwotN2Y2NmQ5NTVhMDAwLTdmNjZkOTU1ZTAwMCByLS1wIDAwMWJhMDAwIDA4OjA3IDE1Nzg5OTQgICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJjLTIuMTkuc28KLTdmNjZkOTU1ZTAwMC03ZjY2ZDk1NjAwMDAgcnctcCAwMDFiZTAwMCAwODowNyAxNTc4OTk0ICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGliYy0yLjE5LnNvCi03ZjY2ZDk1NjAwMDAtN2Y2NmQ5NTY1MDAwIHJ3LXAgMDAwMDAwMDAgMDA6MDAgMAotN2Y2NmQ5NTY1MDAwLTdmNjZkOTY2YTAwMCByLXhwIDAwMDAwMDAwIDA4OjA3IDE1NzkwMjAgICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJtLTIuMTkuc28KLTdmNjZkOTY2YTAwMC03ZjY2ZDk4NjkwMDAgLS0tcCAwMDEwNTAwMCAwODowNyAxNTc5MDIwICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGlibS0yLjE5LnNvCi03ZjY2ZDk4NjkwMDAtN2Y2NmQ5ODZhMDAwIHItLXAgMDAxMDQwMDAgMDg6MDcgMTU3OTAyMCAgICAgICAgICAgICAgICAgICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xpYm0tMi4xOS5zbwotN2Y2NmQ5ODZhMDAwLTdmNjZkOTg2YjAwMCBydy1wIDAwMTA1MDAwIDA4OjA3IDE1NzkwMjAgICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJtLTIuMTkuc28KLTdmNjZkOTg2YjAwMC03ZjY2ZDk4OGUwMDAgci14cCAwMDAwMDAwMCAwODowNyAxNTc4OTgxICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGQtMi4xOS5zbwotN2Y2NmQ5YTY0MDAwLTdmNjZkOWE2NzAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAKLTdmNjZkOWE4YTAwMC03ZjY2ZDlhOGQwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwCi03ZjY2ZDlhOGQwMDAtN2Y2NmQ5YThlMDAwIHItLXAgMDAwMjIwMDAgMDg6MDcgMTU3ODk4MSAgICAgICAgICAgICAgICAgICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xkLTIuMTkuc28KLTdmNjZkOWE4ZTAwMC03ZjY2ZDlhOGYwMDAgcnctcCAwMDAyMzAwMCAwODowNyAxNTc4OTgxICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGQtMi4xOS5zbwotN2Y2NmQ5YThmMDAwLTdmNjZkOWE5MDAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAKLTdmZmM0Nzc2MTAwMC03ZmZjNDc3ODIwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhY2tdCi03ZmZjNDc3YWIwMDAtN2ZmYzQ3N2FkMDAwIHIteHAgMDAwMDAwMDAgMDA6MDAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgW3Zkc29dCi1mZmZmZmZmZmZmNjAwMDAwLWZmZmZmZmZmZmY2MDEwMDAgci14cCAwMDAwMDAwMCAwMDowMCAwICAgICAgICAgICAgICAgICAgW3ZzeXNjYWxsXQotQWJvcnRlZCAoY29yZSBkdW1wZWQpCi0kCi0KLUZpeCB0aGlzIGJ5IHNpbXBseSBhbHdheXMgc2V0dGluZyB0aGUgbW9kZSwgYXMgaXQgZG9lc24ndCBodXJ0IGV2ZW4KLXdoZW4gT19DUkVBVCBpcyBub3Qgc3BlY2lmaWVkLgotCi1UaGlzIGJ1ZyBpcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiBmYzNlNDBlLCBhcyB4b3BlbigpLCB3aGljaAotd2FzIG9yaWdpbmFsbHkgdXNlZCwgd291bGQgYXV0b21hdGljYWxseSBzZXQgdGhlIG1vZGUuCi0KLVNpZ25lZC1vZmYtYnk6IEFyaSBTdW5kaG9sbSA8YXJpQHR1eGVyYS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBlMTExYTE2NDA0OTRmZTg3ZmM5MTNmOTRmYWUzYmI4MDVkZTBmYzk5KQotLS0tCi0gY29yZXV0aWxzL3RydW5jYXRlLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb3JldXRpbHMvdHJ1bmNhdGUuYyBiL2NvcmV1dGlscy90cnVuY2F0ZS5jCi1pbmRleCBlNWZhNjU2Li40Yzk5N2JmIDEwMDY0NAotLS0tIGEvY29yZXV0aWxzL3RydW5jYXRlLmMKLSsrKyBiL2NvcmV1dGlscy90cnVuY2F0ZS5jCi1AQCAtNjQsNyArNjQsNyBAQCBpbnQgdHJ1bmNhdGVfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQotIAotIAlhcmd2ICs9IG9wdGluZDsKLSAJd2hpbGUgKCphcmd2KSB7Ci0tCQlpbnQgZmQgPSBvcGVuKCphcmd2LCBmbGFncyk7Ci0rCQlpbnQgZmQgPSBvcGVuKCphcmd2LCBmbGFncywgMDY2Nik7Ci0gCQlpZiAoZmQgPCAwKSB7Ci0gCQkJaWYgKGVycm5vICE9IEVOT0VOVCB8fCAhKG9wdHMgJiBPUFRfTk9DUkVBVEUpKSB7Ci0gCQkJCWJiX3BlcnJvcl9tc2coIiVzOiBvcGVuIiwgKmFyZ3YpOwotLS0gCi0yLjYuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtMS4yNC4xLXVuemlwLXJlZ3Jlc3Npb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtMS4yNC4xLXVuemlwLXJlZ3Jlc3Npb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzYzUwMjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LTEuMjQuMS11bnppcC1yZWdyZXNzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotICBodHRwOi8vYnVzeWJveC5uZXQvZG93bmxvYWRzL2ZpeGVzLTEuMjQuMS8KLSAgaHR0cDovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9MDkyZmFiY2YxZGY1ZDQ2Y2QyMmJlNGZmY2QzYjg3MWY2MTgwZWI5YwotICBodHRwOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9oPTFfMjRfc3RhYmxlJmlkPTA5MmZhYmNmMWRmNWQ0NmNkMjJiZTRmZmNkM2I4NzFmNjE4MGViOWMKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLQotRnJvbSAwOTJmYWJjZjFkZjVkNDZjZDIyYmU0ZmZjZDNiODcxZjYxODBlYjljIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzAgT2N0IDIwMTUgMjM6NDE6NTMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gW2dddW56aXA6IGZpeCByZWNlbnQgYnJlYWthZ2UuCi0KLUFsc28sIGRvIGVtaXQgZXJyb3IgbWVzc2FnZSB3ZSBzbyBwYWluc3Rha2luZ2x5IHBhc3MgZnJvbSBnemlwIGludGVybmFscwotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNmJkM2ZmZjUxYWE3NGUyZWUyZDg3ODg3YjEyMTgyYTNiMDk3OTJlZikKLVNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLS0tLQotIGFyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19ndW56aXAuYyB8IDMzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIHRlc3RzdWl0ZS91bnppcC50ZXN0cyAgICAgICAgICAgICAgICAgICB8ICAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jCi1pbmRleCBjNzZmZDMxLi4zNTdjOWJmIDEwMDY0NAotLS0tIGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jCi0rKysgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfZ3VuemlwLmMKLUBAIC0zMDksOCArMzA5LDcgQEAgc3RhdGljIGludCBodWZ0X2J1aWxkKGNvbnN0IHVuc2lnbmVkICpiLCBjb25zdCB1bnNpZ25lZCBuLAotIAlodWZ0X3QgKnE7ICAgICAgICAgICAgICAvKiBwb2ludHMgdG8gY3VycmVudCB0YWJsZSAqLwotIAlodWZ0X3QgcjsgICAgICAgICAgICAgICAvKiB0YWJsZSBlbnRyeSBmb3Igc3RydWN0dXJlIGFzc2lnbm1lbnQgKi8KLSAJaHVmdF90ICp1W0JNQVhdOyAgICAgICAgLyogdGFibGUgc3RhY2sgKi8KLS0JdW5zaWduZWQgdltOX01BWF07ICAgICAgLyogdmFsdWVzIGluIG9yZGVyIG9mIGJpdCBsZW5ndGggKi8KLS0JdW5zaWduZWQgdl9lbmQ7Ci0rCXVuc2lnbmVkIHZbTl9NQVggKyAxXTsgIC8qIHZhbHVlcyBpbiBvcmRlciBvZiBiaXQgbGVuZ3RoLiBsYXN0IHZbXSBpcyBuZXZlciB1c2VkICovCi0gCWludCB3c1tCTUFYICsgMV07ICAgICAgIC8qIGJpdHMgZGVjb2RlZCBzdGFjayAqLwotIAlpbnQgdzsgICAgICAgICAgICAgICAgICAvKiBiaXRzIGRlY29kZWQgKi8KLSAJdW5zaWduZWQgeFtCTUFYICsgMV07ICAgLyogYml0IG9mZnNldHMsIHRoZW4gY29kZSBzdGFjayAqLwotQEAgLTM2NSwxNSArMzY0LDE3IEBAIHN0YXRpYyBpbnQgaHVmdF9idWlsZChjb25zdCB1bnNpZ25lZCAqYiwgY29uc3QgdW5zaWduZWQgbiwKLSAJCSp4cCsrID0gajsKLSAJfQotIAotLQkvKiBNYWtlIGEgdGFibGUgb2YgdmFsdWVzIGluIG9yZGVyIG9mIGJpdCBsZW5ndGhzICovCi0rCS8qIE1ha2UgYSB0YWJsZSBvZiB2YWx1ZXMgaW4gb3JkZXIgb2YgYml0IGxlbmd0aHMuCi0rCSAqIFRvIGRldGVjdCBiYWQgaW5wdXQsIHVudXNlZCB2W2ldJ3MgYXJlIHNldCB0byBpbnZhbGlkIHZhbHVlIFVJTlRfTUFYLgotKwkgKiBJbiBwYXJ0aWN1bGFyLCBsYXN0IHZbaV0gaXMgbmV2ZXIgZmlsbGVkIGFuZCBtdXN0IG5vdCBiZSBhY2Nlc3NlZC4KLSsJICovCi0rCW1lbXNldCh2LCAweGZmLCBzaXplb2YodikpOwotIAlwID0gYjsKLSAJaSA9IDA7Ci0tCXZfZW5kID0gMDsKLSAJZG8gewotIAkJaiA9ICpwKys7Ci0gCQlpZiAoaiAhPSAwKSB7Ci0gCQkJdlt4W2pdKytdID0gaTsKLS0JCQl2X2VuZCA9IHhbal07Ci0gCQl9Ci0gCX0gd2hpbGUgKCsraSA8IG4pOwotIAotQEAgLTQzNSw3ICs0MzYsOSBAQCBzdGF0aWMgaW50IGh1ZnRfYnVpbGQoY29uc3QgdW5zaWduZWQgKmIsIGNvbnN0IHVuc2lnbmVkIG4sCi0gCi0gCQkJLyogc2V0IHVwIHRhYmxlIGVudHJ5IGluIHIgKi8KLSAJCQlyLmIgPSAodW5zaWduZWQgY2hhcikgKGsgLSB3KTsKLS0JCQlpZiAocCA+PSB2ICsgdl9lbmQpIHsgLy8gV2FzICJpZiAocCA+PSB2ICsgbikiIGJ1dCB2W10gY2FuIGJlIHNob3J0ZXIhCi0rCQkJaWYgKC8qcCA+PSB2ICsgbiB8fCAtLSByZWR1bmRhbnQsIGNhdWdodCBieSB0aGUgc2Vjb25kIGNoZWNrOiAqLwotKwkJCSAgICAqcCA9PSBVSU5UX01BWCAvKiBkbyB3ZSBhY2Nlc3MgdW5pbml0ZWQgdltpXT8gKHNlZSBtZW1zZXQodikpKi8KLSsJCQkpIHsKLSAJCQkJci5lID0gOTk7IC8qIG91dCBvZiB2YWx1ZXMtLWludmFsaWQgY29kZSAqLwotIAkJCX0gZWxzZSBpZiAoKnAgPCBzKSB7Ci0gCQkJCXIuZSA9ICh1bnNpZ25lZCBjaGFyKSAoKnAgPCAyNTYgPyAxNiA6IDE1KTsJLyogMjU2IGlzIEVPQiBjb2RlICovCi1AQCAtNTIwLDggKzUyMyw5IEBAIHN0YXRpYyBOT0lOTElORSBpbnQgaW5mbGF0ZV9jb2RlcyhTVEFURV9QQVJBTV9PTkxZKQotIAkJZSA9IHQtPmU7Ci0gCQlpZiAoZSA+IDE2KQotIAkJCWRvIHsKLS0JCQkJaWYgKGUgPT0gOTkpCi0tCQkJCQlhYm9ydF91bnppcChQQVNTX1NUQVRFX09OTFkpOzsKLSsJCQkJaWYgKGUgPT0gOTkpIHsKLSsJCQkJCWFib3J0X3VuemlwKFBBU1NfU1RBVEVfT05MWSk7Ci0rCQkJCX0KLSAJCQkJYmIgPj49IHQtPmI7Ci0gCQkJCWsgLT0gdC0+YjsKLSAJCQkJZSAtPSAxNjsKLUBAIC01NTcsOCArNTYxLDkgQEAgc3RhdGljIE5PSU5MSU5FIGludCBpbmZsYXRlX2NvZGVzKFNUQVRFX1BBUkFNX09OTFkpCi0gCQkJZSA9IHQtPmU7Ci0gCQkJaWYgKGUgPiAxNikKLSAJCQkJZG8gewotLQkJCQkJaWYgKGUgPT0gOTkpCi0rCQkJCQlpZiAoZSA9PSA5OSkgewotIAkJCQkJCWFib3J0X3VuemlwKFBBU1NfU1RBVEVfT05MWSk7Ci0rCQkJCQl9Ci0gCQkJCQliYiA+Pj0gdC0+YjsKLSAJCQkJCWsgLT0gdC0+YjsKLSAJCQkJCWUgLT0gMTY7Ci1AQCAtODI0LDggKzgyOSw5IEBAIHN0YXRpYyBpbnQgaW5mbGF0ZV9ibG9jayhTVEFURV9QQVJBTSBzbWFsbGludCAqZSkKLSAKLSAJCWJfZHluYW1pYyA+Pj0gNDsKLSAJCWtfZHluYW1pYyAtPSA0OwotLQkJaWYgKG5sID4gMjg2IHx8IG5kID4gMzApCi0rCQlpZiAobmwgPiAyODYgfHwgbmQgPiAzMCkgewotIAkJCWFib3J0X3VuemlwKFBBU1NfU1RBVEVfT05MWSk7CS8qIGJhZCBsZW5ndGhzICovCi0rCQl9Ci0gCi0gCQkvKiByZWFkIGluIGJpdC1sZW5ndGgtY29kZSBsZW5ndGhzICovCi0gCQlmb3IgKGogPSAwOyBqIDwgbmI7IGorKykgewotQEAgLTkwNiwxMiArOTEyLDE0IEBAIHN0YXRpYyBpbnQgaW5mbGF0ZV9ibG9jayhTVEFURV9QQVJBTSBzbWFsbGludCAqZSkKLSAJCWJsID0gbGJpdHM7Ci0gCi0gCQlpID0gaHVmdF9idWlsZChsbCwgbmwsIDI1NywgY3BsZW5zLCBjcGxleHQsICZpbmZsYXRlX2NvZGVzX3RsLCAmYmwpOwotLQkJaWYgKGkgIT0gMCkKLSsJCWlmIChpICE9IDApIHsKLSAJCQlhYm9ydF91bnppcChQQVNTX1NUQVRFX09OTFkpOwotKwkJfQotIAkJYmQgPSBkYml0czsKLSAJCWkgPSBodWZ0X2J1aWxkKGxsICsgbmwsIG5kLCAwLCBjcGRpc3QsIGNwZGV4dCwgJmluZmxhdGVfY29kZXNfdGQsICZiZCk7Ci0tCQlpZiAoaSAhPSAwKQotKwkJaWYgKGkgIT0gMCkgewotIAkJCWFib3J0X3VuemlwKFBBU1NfU1RBVEVfT05MWSk7Ci0rCQl9Ci0gCi0gCQkvKiBzZXQgdXAgZGF0YSBmb3IgaW5mbGF0ZV9jb2RlcygpICovCi0gCQlpbmZsYXRlX2NvZGVzX3NldHVwKFBBU1NfU1RBVEUgYmwsIGJkKTsKLUBAIC05OTksNiArMTAwNyw3IEBAIGluZmxhdGVfdW56aXBfaW50ZXJuYWwoU1RBVEVfUEFSQU0gdHJhbnNmb3JtZXJfc3RhdGVfdCAqeHN0YXRlKQotIAllcnJvcl9tc2cgPSAiY29ycnVwdGVkIGRhdGEiOwotIAlpZiAoc2V0am1wKGVycm9yX2ptcCkpIHsKLSAJCS8qIEVycm9yIGZyb20gZGVlcCBpbnNpZGUgemlwIG1hY2hpbmVyeSAqLwotKwkJYmJfZXJyb3JfbXNnKGVycm9yX21zZyk7Ci0gCQluID0gLTE7Ci0gCQlnb3RvIHJldDsKLSAJfQotZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS91bnppcC50ZXN0cyBiL3Rlc3RzdWl0ZS91bnppcC50ZXN0cwotaW5kZXggY2EwYTQ1OC4uZDg3MzhhMyAxMDA3NTUKLS0tLSBhL3Rlc3RzdWl0ZS91bnppcC50ZXN0cwotKysrIGIvdGVzdHN1aXRlL3VuemlwLnRlc3RzCi1AQCAtMzQsNiArMzQsNyBAQCBybSBmb28uemlwCi0gdGVzdGluZyAidW56aXAgKGJhZCBhcmNoaXZlKSIgInV1ZGVjb2RlOyB1bnppcCBiYWQuemlwIDI+JjE7IGVjaG8gXCQ/IiBcCi0gIkFyY2hpdmU6ICBiYWQuemlwCi0gICBpbmZsYXRpbmc6IF0zasK9csKrSRsSSy0lSXgKLSt1bnppcDogY29ycnVwdGVkIGRhdGEKLSB1bnppcDogaW5mbGF0ZSBlcnJvcgotIDEKLSAiIFwKLS0tIAotMi42LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LTEuMjQuMS11bnppcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC0xLjI0LjEtdW56aXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxODY3MjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LTEuMjQuMS11bnppcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSAgaHR0cDovL2J1c3lib3gubmV0L2Rvd25sb2Fkcy9maXhlcy0xLjI0LjEvCi0gIGh0dHA6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTFkZTI1YTZlODdlMGU2MjdhYTM0Mjk4MTA1YTNkMTdjNjBhMWY0NGUKLSAgaHR0cDovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aD0xXzI0X3N0YWJsZSZpZD02NzY3YWYxN2YxMTE0NGM3Y2QzY2ZlOWVmNzk5ZDdmODlhNzhmZTY1Ci0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0KLUZyb20gMWRlMjVhNmU4N2UwZTYyN2FhMzQyOTgxMDVhM2QxN2M2MGExZjQ0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI2IE9jdCAyMDE1IDE5OjMzOjA1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVuemlwOiB0ZXN0IGZvciBiYWQgYXJjaGl2ZSBTRUdWaW5nCi0KLWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkICAgICBuZXcgICBkZWx0YQotaHVmdF9idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyOTYgICAgMTMwMCAgICAgICs0Ci0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBhcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfZ3VuemlwLmMgfCAxMSArKysrKysrLS0tLQotIHRlc3RzdWl0ZS91bnppcC50ZXN0cyAgICAgICAgICAgICAgICAgICB8IDIzICsrKysrKysrKysrKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jCi1pbmRleCA3YjZmNDU5Li4zMGJmNDUxIDEwMDY0NAotLS0tIGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jCi0rKysgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfZ3VuemlwLmMKLUBAIC0zMDUsMTEgKzMwNSwxMiBAQCBzdGF0aWMgaW50IGh1ZnRfYnVpbGQoY29uc3QgdW5zaWduZWQgKmIsIGNvbnN0IHVuc2lnbmVkIG4sCi0gCXVuc2lnbmVkIGk7ICAgICAgICAgICAgIC8qIGNvdW50ZXIsIGN1cnJlbnQgY29kZSAqLwotIAl1bnNpZ25lZCBqOyAgICAgICAgICAgICAvKiBjb3VudGVyICovCi0gCWludCBrOyAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBiaXRzIGluIGN1cnJlbnQgY29kZSAqLwotLQl1bnNpZ25lZCAqcDsgICAgICAgICAgICAvKiBwb2ludGVyIGludG8gY1tdLCBiW10sIG9yIHZbXSAqLwotKwljb25zdCB1bnNpZ25lZCAqcDsgICAgICAvKiBwb2ludGVyIGludG8gY1tdLCBiW10sIG9yIHZbXSAqLwotIAlodWZ0X3QgKnE7ICAgICAgICAgICAgICAvKiBwb2ludHMgdG8gY3VycmVudCB0YWJsZSAqLwotIAlodWZ0X3QgcjsgICAgICAgICAgICAgICAvKiB0YWJsZSBlbnRyeSBmb3Igc3RydWN0dXJlIGFzc2lnbm1lbnQgKi8KLSAJaHVmdF90ICp1W0JNQVhdOyAgICAgICAgLyogdGFibGUgc3RhY2sgKi8KLSAJdW5zaWduZWQgdltOX01BWF07ICAgICAgLyogdmFsdWVzIGluIG9yZGVyIG9mIGJpdCBsZW5ndGggKi8KLSsJdW5zaWduZWQgdl9lbmQ7Ci0gCWludCB3c1tCTUFYICsgMV07ICAgICAgIC8qIGJpdHMgZGVjb2RlZCBzdGFjayAqLwotIAlpbnQgdzsgICAgICAgICAgICAgICAgICAvKiBiaXRzIGRlY29kZWQgKi8KLSAJdW5zaWduZWQgeFtCTUFYICsgMV07ICAgLyogYml0IG9mZnNldHMsIHRoZW4gY29kZSBzdGFjayAqLwotQEAgLTMyNCw3ICszMjUsNyBAQCBzdGF0aWMgaW50IGh1ZnRfYnVpbGQoY29uc3QgdW5zaWduZWQgKmIsIGNvbnN0IHVuc2lnbmVkIG4sCi0gCi0gCS8qIEdlbmVyYXRlIGNvdW50cyBmb3IgZWFjaCBiaXQgbGVuZ3RoICovCi0gCW1lbXNldChjLCAwLCBzaXplb2YoYykpOwotLQlwID0gKHVuc2lnbmVkICopIGI7IC8qIGNhc3QgYWxsb3dzIHVzIHRvIHJldXNlIHAgZm9yIHBvaW50aW5nIHRvIGIgKi8KLSsJcCA9IGI7Ci0gCWkgPSBuOwotIAlkbyB7Ci0gCQljWypwXSsrOyAvKiBhc3N1bWUgYWxsIGVudHJpZXMgPD0gQk1BWCAqLwotQEAgLTM2NSwxMiArMzY2LDE0IEBAIHN0YXRpYyBpbnQgaHVmdF9idWlsZChjb25zdCB1bnNpZ25lZCAqYiwgY29uc3QgdW5zaWduZWQgbiwKLSAJfQotIAotIAkvKiBNYWtlIGEgdGFibGUgb2YgdmFsdWVzIGluIG9yZGVyIG9mIGJpdCBsZW5ndGhzICovCi0tCXAgPSAodW5zaWduZWQgKikgYjsKLSsJcCA9IGI7Ci0gCWkgPSAwOwotKwl2X2VuZCA9IDA7Ci0gCWRvIHsKLSAJCWogPSAqcCsrOwotIAkJaWYgKGogIT0gMCkgewotIAkJCXZbeFtqXSsrXSA9IGk7Ci0rCQkJdl9lbmQgPSB4W2pdOwotIAkJfQotIAl9IHdoaWxlICgrK2kgPCBuKTsKLSAKLUBAIC00MzIsNyArNDM1LDcgQEAgc3RhdGljIGludCBodWZ0X2J1aWxkKGNvbnN0IHVuc2lnbmVkICpiLCBjb25zdCB1bnNpZ25lZCBuLAotIAotIAkJCS8qIHNldCB1cCB0YWJsZSBlbnRyeSBpbiByICovCi0gCQkJci5iID0gKHVuc2lnbmVkIGNoYXIpIChrIC0gdyk7Ci0tCQkJaWYgKHAgPj0gdiArIG4pIHsKLSsJCQlpZiAocCA+PSB2ICsgdl9lbmQpIHsgLy8gV2FzICJpZiAocCA+PSB2ICsgbikiIGJ1dCB2W10gY2FuIGJlIHNob3J0ZXIhCi0gCQkJCXIuZSA9IDk5OyAvKiBvdXQgb2YgdmFsdWVzLS1pbnZhbGlkIGNvZGUgKi8KLSAJCQl9IGVsc2UgaWYgKCpwIDwgcykgewotIAkJCQlyLmUgPSAodW5zaWduZWQgY2hhcikgKCpwIDwgMjU2ID8gMTYgOiAxNSk7CS8qIDI1NiBpcyBFT0IgY29kZSAqLwotZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS91bnppcC50ZXN0cyBiL3Rlc3RzdWl0ZS91bnppcC50ZXN0cwotaW5kZXggODY3N2EwMy4uY2EwYTQ1OCAxMDA3NTUKLS0tLSBhL3Rlc3RzdWl0ZS91bnppcC50ZXN0cwotKysrIGIvdGVzdHN1aXRlL3VuemlwLnRlc3RzCi1AQCAtNyw3ICs3LDcgQEAKLSAKLSAuIC4vdGVzdGluZy5zaAotIAotLSMgdGVzdGluZyAidGVzdCBuYW1lIiAib3B0aW9ucyIgImV4cGVjdGVkIHJlc3VsdCIgImZpbGUgaW5wdXQiICJzdGRpbiIKLSsjIHRlc3RpbmcgInRlc3QgbmFtZSIgImNvbW1hbmRzIiAiZXhwZWN0ZWQgcmVzdWx0IiAiZmlsZSBpbnB1dCIgInN0ZGluIgotICMgICBmaWxlIGlucHV0IHdpbGwgYmUgZmlsZSBjYWxsZWQgImlucHV0IgotICMgICB0ZXN0IGNhbiBjcmVhdGUgYSBmaWxlICJhY3R1YWwiIGluc3RlYWQgb2Ygd3JpdGluZyB0byBzdGRvdXQKLSAKLUBAIC0zMCw2ICszMCwyNyBAQCB0ZXN0aW5nICJ1bnppcCAoc3ViZGlyIG9ubHkpIiAidW56aXAgLXEgZm9vLnppcCBmb28vICYmIHRlc3QgLWQgZm9vICYmIHRlc3QgISAtZgotIHJtZGlyIGZvbwotIHJtIGZvby56aXAKLSAKLSsjIEZpbGUgY29udGFpbmluZyBzb21lIGRhbWFnZWQgZW5jcnlwdGVkIHN0cmVhbQotK3Rlc3RpbmcgInVuemlwIChiYWQgYXJjaGl2ZSkiICJ1dWRlY29kZTsgdW56aXAgYmFkLnppcCAyPiYxOyBlY2hvIFwkPyIgXAotKyJBcmNoaXZlOiAgYmFkLnppcAotKyAgaW5mbGF0aW5nOiBdM2rCvXLCq0kbEkstJUl4Ci0rdW56aXA6IGluZmxhdGUgZXJyb3IKLSsxCi0rIiBcCi0rIiIgIlwKLStiZWdpbi1iYXNlNjQgNjQ0IGJhZC56aXAKLStVRXNEQkJRQUFna0lBQUFBSVFBNUFBQUFOd0FBQUR3QUFBQVFBQWNBWFROcXdyMXl3cXRKR3hKTExTVkoKLStlQ2tCRDBBZEtCazhKelFzSWowMUpDMC9PUkpRU3dNRUZBRUNDQUFBQUFBaEFEb0FBQUFQQUFBQU5nQUEKLStBQXdBQVFBU3c3M0N0MURDb2tvaFBYUWlOam9VTlRVaUhSd2dMVDRXSGxCTEFRSVFBQlFBQWdnSUFBQUEKLStvUUE1QUFBQU53QUFBRHdBQUFBUVFBY0FEQUFBQUN3QU1nQ0FBQUFBQUFCZE0yckN2WExDcTBrYkVrc3QKLStKVWw0S1FFUFFCMG9HU1k0Q3o0UU5nRW5KU1lJUFZCTEFRSUFBQlFBQWdnQUFBQUFJUUFxQUFBQUR3QUEKLStCRFlBQUFBTUFBRUFEUUFBQURJQURRQUFBRUVBQUFBU3c3M0N0MURLb2tvaFBYUWlOekErRkFJMUhDY1cKLStOeklUTkZCTEJRVUtBQzRKQUEwNEN3MEVPaFpRU3dVR0FRQUFCQUlBQWdDWkFBQUFlUUFBQUFJQUxoTT0KLSs9PT09Ci0rIgotKwotK3JtICoKLSsKLSAjIENsZWFuIHVwIHNjcmF0Y2ggZGlyZWN0b3J5LgotIAotIGNkIC4uCi0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1DVkUtMjAxNy0xNjU0NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1DVkUtMjAxNy0xNjU0NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzE5ZWUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LUNWRS0yMDE3LTE2NTQ0LnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gYzM3OTdkNDBhMWM1NzM1MjE5MmM2MTA2Y2MwZjQzNWU3ZDljMTFlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+CitEYXRlOiBUdWUsIDcgTm92IDIwMTcgMTg6MDk6MjkgKzAxMDAKK1N1YmplY3Q6IGxpbmVlZGl0OiBkbyBub3QgdGFiLWNvbXBsZXRlIGFueSBzdHJpbmdzIHdoaWNoIGhhdmUgY29udHJvbAorIGNoYXJhY3RlcnMKKworZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgICAgIG5ldyAgIGRlbHRhCithZGRfbWF0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MSAgICAgIDY4ICAgICArMjcKKworQ1ZFOiBDVkUtMjAxNy0xNjU0NAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmJiL2xpbmVlZGl0LmMgfCAxMiArKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliYmIvbGluZWVkaXQuYyBiL2xpYmJiL2xpbmVlZGl0LmMKK2luZGV4IGMwZTM1YmIuLjU2ZTgxNDAgMTAwNjQ0CistLS0gYS9saWJiYi9saW5lZWRpdC5jCisrKysgYi9saWJiYi9saW5lZWRpdC5jCitAQCAtNjQ1LDYgKzY0NSwxOCBAQCBzdGF0aWMgdm9pZCBmcmVlX3RhYl9jb21wbGV0aW9uX2RhdGEodm9pZCkKKyAKKyBzdGF0aWMgdm9pZCBhZGRfbWF0Y2goY2hhciAqbWF0Y2hlZCkKKyB7CisrCXVuc2lnbmVkIGNoYXIgKnAgPSAodW5zaWduZWQgY2hhciopbWF0Y2hlZDsKKysJd2hpbGUgKCpwKSB7CisrCQkvKiBFU0MgYXR0YWNrIGZpeDogZHJvcCBhbnkgc3RyaW5nIHdpdGggY29udHJvbCBjaGFycyAqLworKwkJaWYgKCpwIDwgJyAnCisrCQkgfHwgKCFFTkFCTEVfVU5JQ09ERV9TVVBQT1JUICYmICpwID49IDB4N2YpCisrCQkgfHwgKEVOQUJMRV9VTklDT0RFX1NVUFBPUlQgJiYgKnAgPT0gMHg3ZikKKysJCSkgeworKwkJCWZyZWUobWF0Y2hlZCk7CisrCQkJcmV0dXJuOworKwkJfQorKwkJcCsrOworKwl9CisgCW1hdGNoZXMgPSB4cmVhbGxvY192ZWN0b3IobWF0Y2hlcywgNCwgbnVtX21hdGNoZXMpOworIAltYXRjaGVzW251bV9tYXRjaGVzXSA9IG1hdGNoZWQ7CisgCW51bV9tYXRjaGVzKys7CistLSAKK2NnaXQgdjAuMTIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1jcm9zcy1tZW51Y29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LWNyb3NzLW1lbnVjb25maWcucGF0Y2gKaW5kZXggYmRhODY4NS4uNmZhY2EyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LWNyb3NzLW1lbnVjb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LWNyb3NzLW1lbnVjb25maWcucGF0Y2gKQEAgLTMzLDcgKzMzLDcgQEAKICBzY3JpcHRzL2tjb25maWcvbHhkaWFsb2cvTWFrZWZpbGUgICAgICAgICAgfCAgICAyICstCiAgc2NyaXB0cy9rY29uZmlnL2x4ZGlhbG9nL2NoZWNrLWx4ZGlhbG9nLnNoIHwgICAgOCArKysrKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KKyAKIC0tLSBhL3NjcmlwdHMva2NvbmZpZy9seGRpYWxvZy9jaGVjay1seGRpYWxvZy5zaAogKysrIGIvc2NyaXB0cy9rY29uZmlnL2x4ZGlhbG9nL2NoZWNrLWx4ZGlhbG9nLnNoCiBAQCAtNCw2ICs0LDEwIEBACkBAIC00NCwxMCArNDQsMTAgQEAKICsJCWVjaG8gIiRDUk9TU19DVVJTRVNfTElCIgogKwkJZXhpdAogKwlmaQotIAlmb3IgZXh0IGluIHNvIGEgZHlsaWIgOyBkbwotIAkJZm9yIGxpYiBpbiBuY3Vyc2VzdyBuY3Vyc2VzIGN1cnNlcyA7IGRvCi0gCQkJJGNjIC1wcmludC1maWxlLW5hbWU9bGliJHtsaWJ9LiR7ZXh0fSB8IGdyZXAgLXEgLwotQEAgLTE5LDYgKzIzLDEwIEBAIGxkZmxhZ3MoKQorIAlwa2ctY29uZmlnIC0tbGlicyBuY3Vyc2VzdyAyPi9kZXYvbnVsbCAmJiBleGl0CisgCXBrZy1jb25maWcgLS1saWJzIG5jdXJzZXMgMj4vZGV2L251bGwgJiYgZXhpdAorIAlmb3IgZXh0IGluIHNvIGEgZGxsLmEgZHlsaWIgOyBkbworQEAgLTIxLDYgKzI1LDEwIEBACiAgIyBXaGVyZSBpcyBuY3Vyc2VzLmg/CiAgY2NmbGFncygpCiAgewpAQCAtNTUsMTIgKzU1LDEyIEBACiArCQllY2hvICIkQ1JPU1NfQ1VSU0VTX0lOQyIKICsJCWV4aXQKICsJZmkKLSAJaWYgWyAtZiAvdXNyL2luY2x1ZGUvbmN1cnNlc3cvbmN1cnNlcy5oIF07IHRoZW4KLSAJCWVjaG8gJy1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IC1EQ1VSU0VTX0xPQz0iPG5jdXJzZXMuaD4iJwotIAllbGlmIFsgLWYgL3Vzci9pbmNsdWRlL25jdXJzZXN3L2N1cnNlcy5oIF07IHRoZW4KKyAJaWYgcGtnLWNvbmZpZyAtLWNmbGFncyBuY3Vyc2VzdyAyPi9kZXYvbnVsbDsgdGhlbgorIAkJZWNobyAnLURDVVJTRVNfTE9DPSI8bmN1cnNlcy5oPiIgLUROQ1VSU0VTX1dJREVDSEFSPTEnCisgCWVsaWYgcGtnLWNvbmZpZyAtLWNmbGFncyBuY3Vyc2VzIDI+L2Rldi9udWxsOyB0aGVuCiAtLS0gYS9zY3JpcHRzL2tjb25maWcvbHhkaWFsb2cvTWFrZWZpbGUKICsrKyBiL3NjcmlwdHMva2NvbmZpZy9seGRpYWxvZy9NYWtlZmlsZQotQEAgLTUsNyArNSw3IEBAIGNoZWNrLWx4ZGlhbG9nICA6PSAkKHNyY3RyZWUpLyQoc3JjKS9jaGUKK0BAIC01LDcgKzUsNyBAQAogIAogICMgVXNlIHJldXJzaXZlbHkgZXhwYW5kZWQgdmFyaWFibGVzIHNvIHdlIGRvIG5vdCBjYWxsIGdjYyB1bmxlc3MKICAjIHdlIHJlYWxseSBuZWVkIHRvIGRvIHNvLiAoRG8gbm90IGNhbGwgZ2NjIGFzIHBhcnQgb2YgbWFrZSBtcnByb3BlcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1rYnVpbGQtcmFjZS1maXgtY29tbWl0LWQ4ZTYxYmIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gta2J1aWxkLXJhY2UtZml4LWNvbW1pdC1kOGU2MWJiLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODMwMmUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1rYnVpbGQtcmFjZS1maXgtY29tbWl0LWQ4ZTYxYmIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVBhdGNoIGFkZHJlc3NpbmcgYSBwYXJhbGxlbCBtYWtlIHJhY2UgaW4gQnVzeWJveAotCi0gIGh0dHA6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWQ4ZTYxYmJmMTNkMGNmMzhkNDc3MjU1Y2ZkNWRjNzFjNWQ1MWQ1NzUKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotRnJvbSBkOGU2MWJiZjEzZDBjZjM4ZDQ3NzI1NWNmZDVkYzcxYzVkNTFkNTc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFN1biwgMjEgQXVnIDIwMTYgMjI6MDA6MjAgKzAyMDAKLVN1YmplY3Q6IGJ1aWxkIHN5c3RlbTogZGlmZmVyZW50IGZpeCBmb3IKLSBpbmNsdWRlL2FwcGxldF90YWJsZXMuaC9pbmNsdWRlL05VTV9BUFBMRVRTLmgKLQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2FwcGxldHMvS2J1aWxkLnNyYyBiL2FwcGxldHMvS2J1aWxkLnNyYwotaW5kZXggNWNjMTgyNy4uM2FlZGJiZiAxMDA2NDQKLS0tLSBhL2FwcGxldHMvS2J1aWxkLnNyYwotKysrIGIvYXBwbGV0cy9LYnVpbGQuc3JjCi1AQCAtMjksNyArMjksNyBAQCBhcHBsZXRzL2FwcGxldHMubzogaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmggaW5jbHVkZS9hcHBsZXRfdGFibGVzLmgKLSAKLSBhcHBsZXRzL2FwcGxldF90YWJsZXM6IC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmgKLSBhcHBsZXRzL3VzYWdlOiAgICAgICAgIC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmgKLS1hcHBsZXRzL3VzYWdlX3BvZDogICAgIC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmggaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggaW5jbHVkZS9OVU1fQVBQTEVUUy5oCi0rYXBwbGV0cy91c2FnZV9wb2Q6ICAgICAuY29uZmlnIGluY2x1ZGUvYXBwbGV0cy5oIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oCi0gCi0gcXVpZXRfY21kX2dlbl91c2FnZV9jb21wcmVzc2VkID0gR0VOICAgICBpbmNsdWRlL3VzYWdlX2NvbXByZXNzZWQuaAotICAgICAgIGNtZF9nZW5fdXNhZ2VfY29tcHJlc3NlZCA9ICQoc3JjdHJlZV9zbGFzaClhcHBsZXRzL3VzYWdlX2NvbXByZXNzZWQgaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmggYXBwbGV0cwotQEAgLTM3LDggKzM3LDIxIEBAIHF1aWV0X2NtZF9nZW5fdXNhZ2VfY29tcHJlc3NlZCA9IEdFTiAgICAgaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmgKLSBpbmNsdWRlL3VzYWdlX2NvbXByZXNzZWQuaDogYXBwbGV0cy91c2FnZSAkKHNyY3RyZWVfc2xhc2gpYXBwbGV0cy91c2FnZV9jb21wcmVzc2VkCi0gCSQoY2FsbCBjbWQsZ2VuX3VzYWdlX2NvbXByZXNzZWQpCi0gCi0tcXVpZXRfY21kX2dlbl9hcHBsZXRfdGFibGVzID0gR0VOICAgICBpbmNsdWRlL2FwcGxldF90YWJsZXMuaAotK3F1aWV0X2NtZF9nZW5fYXBwbGV0X3RhYmxlcyA9IEdFTiAgICAgaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggaW5jbHVkZS9OVU1fQVBQTEVUUy5oCi0gICAgICAgY21kX2dlbl9hcHBsZXRfdGFibGVzID0gYXBwbGV0cy9hcHBsZXRfdGFibGVzIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGluY2x1ZGUvTlVNX0FQUExFVFMuaAotIAotLWluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGluY2x1ZGUvTlVNX0FQUExFVFMuaDogYXBwbGV0cy9hcHBsZXRfdGFibGVzCi0raW5jbHVkZS9OVU1fQVBQTEVUUy5oOiBhcHBsZXRzL2FwcGxldF90YWJsZXMKLSsJJChjYWxsIGNtZCxnZW5fYXBwbGV0X3RhYmxlcykKLSsKLSsjIEluIGZhY3QsIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGRlcGVuZHMgb25seSBvbiBhcHBsZXRzL2FwcGxldF90YWJsZXMsCi0rIyBhbmQgaXMgZ2VuZXJhdGVkIGJ5IGl0LiBCdXQgc3BlY2lmeWluZyBvbmx5IGl0IGNhbiBydW4KLSsjIGFwcGxldHMvYXBwbGV0X3RhYmxlcyB0d2ljZSwgcG9zc2libHkgaW4gcGFyYWxsZWwuCi0rIyBXZSBzYXkgdGhhdCBpdCBhbHNvIG5lZWRzIE5VTV9BUFBMRVRTLmgKLSsjCi0rIyBVbmZvcnR1bmF0ZWx5LCB3ZSBuZWVkIHRvIGxpc3QgdGhlIHNhbWUgY29tbWFuZCwKLSsjIGFuZCBpdCBjYW4gYmUgZXhlY3V0ZWQgdHdpY2UgKHNlcXVlbnRpYWxseSkuCi0rIyBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gbm90IGxpc3QgYW55IGNvbW1hbmQsCi0rIyBhbmQgdGhlbiBpZiBpbmNsdWRlL2FwcGxldF90YWJsZXMuaCBpcyBkZWxldGVkLCBpdCB3b24ndCBiZSByZWJ1aWx0LgotKyMKLStpbmNsdWRlL2FwcGxldF90YWJsZXMuaDogaW5jbHVkZS9OVU1fQVBQTEVUUy5oIGFwcGxldHMvYXBwbGV0X3RhYmxlcwotIAkkKGNhbGwgY21kLGdlbl9hcHBsZXRfdGFibGVzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LXRhci1hZGQtSUZfRkVBVFVSRV8tY2hlY2tzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LXRhci1hZGQtSUZfRkVBVFVSRV8tY2hlY2tzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzNjOWMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC10YXItYWRkLUlGX0ZFQVRVUkVfLWNoZWNrcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gZjk0NDEyZjZiYjQ5MTM2Njk0YzU0NzhkMGFlY2IxOTExOGQxYjA4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pbmcgTGl1IDxwZXRlci54LmxpdUBleHRlcm5hbC5hdGxhc2NvcGNvLmNvbT4KLURhdGU6IFdlZCwgMzEgTWF5IDIwMTcgMTE6NDg6MDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdGFyOiBhZGQgSUZfRkVBVFVSRV8qIGNoZWNrcwotCi1BIGZvbGxvd2luZyBsaW5raW5nIGVycm9yIHdhcyBvYnNlcnZlZDoKLXwgPT09PT09PT09PQotfCBhcmNoaXZhbC9saWIuYSh0YXIubyk6IEluIGZ1bmN0aW9uIGB0YXJfbWFpbic6Ci18IGFyY2hpdmFsL3Rhci5jOjExNjg6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHVucGFja19aX3N0cmVhbScKLXwgYXJjaGl2YWwvdGFyLmM6MTE2ODogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgdW5wYWNrX1pfc3RyZWFtJwotfCBsZDogYnVzeWJveF91bnN0cmlwcGVkOiBoaWRkZW4gc3ltYm9sIGB1bnBhY2tfWl9zdHJlYW0nIGlzbid0IGRlZmluZWQKLXwgbGQ6IGZpbmFsIGxpbmsgZmFpbGVkOiBCYWQgdmFsdWUKLQotdGhpcyBoYXBwZW5lZCB3aXRoIGNsYW5nIGNvbXBpbGVyLCB3aXRoIHRoZSBmb2xsb3dpbmcgY29uZmlnczoKLXwgQ09ORklHX1RBUj15Ci18ICMgQ09ORklHX0ZFQVRVUkVfU0VBTUxFU1NfWiBpcyBub3Qgc2V0Ci0KLXdoaWNoIGNhbiBiZSBmaXhlZCBieSBhZGRpbmcgSUZfRkVBVFVSRV8qIGNoZWNrcyBpbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFsgU2VudCB0byBidXN5Ym94IHVwc3RyZWFtIG9uIDIwMTctMDYtMDIgXQotCi1TaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8cGV0ZXIueC5saXVAZXh0ZXJuYWwuYXRsYXNjb3Bjby5jb20+Ci0tLS0KLSBhcmNoaXZhbC90YXIuYyB8IDI1ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hcmNoaXZhbC90YXIuYyBiL2FyY2hpdmFsL3Rhci5jCi1pbmRleCBiNzBlMDBhLi43NTk4YjcxIDEwMDY0NAotLS0tIGEvYXJjaGl2YWwvdGFyLmMKLSsrKyBiL2FyY2hpdmFsL3Rhci5jCi1AQCAtMTIxNiwyMSArMTIxNiwyNiBAQCBpbnQgdGFyX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKLSAJCVVTRV9GT1JfTU1VKElGX0RFU0tUT1AobG9uZyBsb25nKSBpbnQgRkFTVF9GVU5DICgqeGZvcm1lcikodHJhbnNmb3JtZXJfc3RhdGVfdCAqeHN0YXRlKTspCi0gCQlVU0VfRk9SX05PTU1VKGNvbnN0IGNoYXIgKnhmb3JtZXJfcHJvZzspCi0gCi0tCQlpZiAob3B0ICYgT1BUX0NPTVBSRVNTKQotLQkJCVVTRV9GT1JfTU1VKHhmb3JtZXIgPSB1bnBhY2tfWl9zdHJlYW07KQotKwkJaWYgKG9wdCAmIE9QVF9DT01QUkVTUykgewotKwkJCVVTRV9GT1JfTU1VKElGX0ZFQVRVUkVfU0VBTUxFU1NfWih4Zm9ybWVyID0gdW5wYWNrX1pfc3RyZWFtOykpCi0gCQkJVVNFX0ZPUl9OT01NVSh4Zm9ybWVyX3Byb2cgPSAidW5jb21wcmVzcyI7KQotLQkJaWYgKG9wdCAmIE9QVF9HWklQKQotLQkJCVVTRV9GT1JfTU1VKHhmb3JtZXIgPSB1bnBhY2tfZ3pfc3RyZWFtOykKLSsJCX0KLSsJCWlmIChvcHQgJiBPUFRfR1pJUCkgewotKwkJCVVTRV9GT1JfTU1VKElGX0ZFQVRVUkVfU0VBTUxFU1NfR1ooeGZvcm1lciA9IHVucGFja19nel9zdHJlYW07KSkKLSAJCQlVU0VfRk9SX05PTU1VKHhmb3JtZXJfcHJvZyA9ICJndW56aXAiOykKLS0JCWlmIChvcHQgJiBPUFRfQlpJUDIpCi0tCQkJVVNFX0ZPUl9NTVUoeGZvcm1lciA9IHVucGFja19iejJfc3RyZWFtOykKLSsJCX0KLSsJCWlmIChvcHQgJiBPUFRfQlpJUDIpIHsKLSsJCQlVU0VfRk9SX01NVShJRl9GRUFUVVJFX1NFQU1MRVNTX0JaMih4Zm9ybWVyID0gdW5wYWNrX2J6Ml9zdHJlYW07KSkKLSAJCQlVU0VfRk9SX05PTU1VKHhmb3JtZXJfcHJvZyA9ICJidW56aXAyIjspCi0tCQlpZiAob3B0ICYgT1BUX0xaTUEpCi0tCQkJVVNFX0ZPUl9NTVUoeGZvcm1lciA9IHVucGFja19sem1hX3N0cmVhbTspCi0rCQl9Ci0rCQlpZiAob3B0ICYgT1BUX0xaTUEpIHsKLSsJCQlVU0VfRk9SX01NVShJRl9GRUFUVVJFX1NFQU1MRVNTX0xaTUEoeGZvcm1lciA9IHVucGFja19sem1hX3N0cmVhbTspKQotIAkJCVVTRV9GT1JfTk9NTVUoeGZvcm1lcl9wcm9nID0gInVubHptYSI7KQotLQkJaWYgKG9wdCAmIE9QVF9YWikKLS0JCQlVU0VfRk9SX01NVSh4Zm9ybWVyID0gdW5wYWNrX3h6X3N0cmVhbTspCi0rCQl9Ci0rCQlpZiAob3B0ICYgT1BUX1haKSB7Ci0rCQkJVVNFX0ZPUl9NTVUoSUZfRkVBVFVSRV9TRUFNTEVTU19YWih4Zm9ybWVyID0gdW5wYWNrX3h6X3N0cmVhbTspKQotIAkJCVVTRV9GT1JfTk9NTVUoeGZvcm1lcl9wcm9nID0gInVueHoiOykKLSsJCX0KLSAKLSAJCWZvcmtfdHJhbnNmb3JtZXJfd2l0aF9zaWcodGFyX2hhbmRsZS0+c3JjX2ZkLCB4Zm9ybWVyLCB4Zm9ybWVyX3Byb2cpOwotIAkJLyogQ2FuJ3QgbHNlZWsgb3ZlciBwaXBlcyAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LXVkaGNwYy1ub19kZWNvbmZpZy5wYXRjaAppbmRleCA0YzljZTNiLi41ODJhMjU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2gKQEAgLTI4LDI0ICsyOCwyMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE9iZXJyaXR0ZXIgPG9iaUBvcGVuZHJlYW1ib3gub3JnPgogLS0tCi0gbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jIHwgICAyOSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKyBuZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMjkgKysrKysrKysrKysrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCi1JbmRleDogYnVzeWJveC0xLjIwLjIvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCitJbmRleDogYnVzeWJveC0xLjI3LjIvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYnVzeWJveC0xLjIwLjIub3JpZy9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKLSsrKyBidXN5Ym94LTEuMjAuMi9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKLUBAIC0yOSw2ICsyOSw5IEBACi0gI2luY2x1ZGUgPG5ldHBhY2tldC9wYWNrZXQuaD4KLSAjaW5jbHVkZSA8bGludXgvZmlsdGVyLmg+CistLS0gYnVzeWJveC0xLjI3LjIub3JpZy9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKKysrKyBidXN5Ym94LTEuMjcuMi9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKK0BAIC00OSw2ICs0OSw4IEBAIHN0cnVjdCB0cGFja2V0X2F1eGRhdGEgeworIH07CisgI2VuZGlmCiAgCiArLyogb3B0aW9uIHdoZXRoZXIgdG8gZG93biB0aGUgaW50ZXJmYWNlIHdoZW4gcmVjb25maWd1cmluZyAqLwogK3N0YXRpYyBpbnQgYWxsb3dfZGVjb25maWcgPSAxOwotKworIAogIC8qICJzdHJ1Y3QgY2xpZW50X2NvbmZpZ190IGNsaWVudF9jb25maWciIGlzIGluIGJiX2NvbW1vbl9idWZzaXoxICovCiAgCi0gCi1AQCAtODEsOCArODQsOSBAQCBlbnVtIHsKK0BAIC0xMDQsOCArMTA2LDkgQEAgZW51bSB7CiAgCU9QVF94ID0gMSA8PCAxOCwKICAJT1BUX2YgPSAxIDw8IDE5LAogIAlPUFRfQiA9IDEgPDwgMjAsCkBAIC01Niw3ICs1NSw3IEBACiAgCVVTRV9GT1JfTU1VKCAgICAgICAgICAgICBPUFRCSVRfYiwpCiAgCUlGX0ZFQVRVUkVfVURIQ1BDX0FSUElORyhPUFRCSVRfYSwpCiAgCUlGX0ZFQVRVUkVfVURIQ1BfUE9SVCggICBPUFRCSVRfUCwpCi1AQCAtMTA0MCw3ICsxMDQ0LDggQEAgc3RhdGljIHZvaWQgcGVyZm9ybV9yZW5ldyh2b2lkKQorQEAgLTExMTAsNyArMTExMyw4IEBAIHN0YXRpYyB2b2lkIHBlcmZvcm1fcmVuZXcodm9pZCkKICAJCXN0YXRlID0gUkVORVdfUkVRVUVTVEVEOwogIAkJYnJlYWs7CiAgCWNhc2UgUkVORVdfUkVRVUVTVEVEOiAvKiBpbXBhdGllbnQgYXJlIHdlPyBmaW5lLCBzcXVhcmUgMSAqLwpAQCAtNjYsMzYgKzY1LDM3IEBACiAgCWNhc2UgUkVRVUVTVElORzoKICAJY2FzZSBSRUxFQVNFRDoKICAJCWNoYW5nZV9saXN0ZW5fbW9kZShMSVNURU5fUkFXKTsKLUBAIC0xMDY0LDcgKzEwNjksOCBAQCBzdGF0aWMgdm9pZCBwZXJmb3JtX3JlbGVhc2UodWludDMyX3Qgc2VyCi0gCQliYl9pbmZvX21zZygiVW5pY2FzdGluZyBhIHJlbGVhc2Ugb2YgJXMgdG8gJXMiLAotIAkJCQlpbmV0X250b2EodGVtcF9hZGRyKSwgYnVmZmVyKTsKLSAJCXNlbmRfcmVsZWFzZShzZXJ2ZXJfYWRkciwgcmVxdWVzdGVkX2lwKTsgLyogdW5pY2FzdCAqLwotLQkJdWRoY3BfcnVuX3NjcmlwdChOVUxMLCAiZGVjb25maWciKTsKLSsJCWlmIChhbGxvd19kZWNvbmZpZykKLSsJCQl1ZGhjcF9ydW5fc2NyaXB0KE5VTEwsICJkZWNvbmZpZyIpOwotIAl9Ci0gCWJiX2luZm9fbXNnKCJFbnRlcmluZyByZWxlYXNlZCBzdGF0ZSIpOworQEAgLTExNDYsNyArMTE1MCw4IEBAIHN0YXRpYyB2b2lkIHBlcmZvcm1fcmVsZWFzZSh1aW50MzJfdCBzZXJ2ZXJfYWRkciwgdWludDMyX3QgcmVxdWVzdGVkX2lwKQorICAqIFVzZXJzIHJlcXVlc3RlZCB0byBiZSBub3RpZmllZCBpbiBhbGwgY2FzZXMsIGV2ZW4gaWYgbm90IGluIG9uZQorICAqIG9mIHRoZSBzdGF0ZXMgYWJvdmUuCisgICovCistCXVkaGNwX3J1bl9zY3JpcHQoTlVMTCwgImRlY29uZmlnIik7CisrCWlmIChhbGxvd19kZWNvbmZpZykKKysJCXVkaGNwX3J1bl9zY3JpcHQoTlVMTCwgImRlY29uZmlnIik7CiAgCi1AQCAtMTIxNSw3ICsxMjIxLDcgQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgYworIAljaGFuZ2VfbGlzdGVuX21vZGUoTElTVEVOX05PTkUpOworIAlzdGF0ZSA9IFJFTEVBU0VEOworQEAgLTEyOTgsNyArMTMwMyw3IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQogIAkvKiBPLHg6IGxpc3Q7IC1ULC10LC1BIHRha2UgbnVtZXJpYyBwYXJhbSAqLwotIAlvcHRfY29tcGxlbWVudGFyeSA9ICJPOjp4OjpUKzp0KzpBKyIgSUZfVURIQ1BfVkVSQk9TRSgiOnZ2IikgOworIAlJRl9VREhDUF9WRVJCT1NFKG9wdF9jb21wbGVtZW50YXJ5ID0gInZ2IjspCiAgCUlGX0xPTkdfT1BUUyhhcHBsZXRfbG9uZ19vcHRpb25zID0gdWRoY3BjX2xvbmdvcHRzOykKLS0Jb3B0ID0gZ2V0b3B0MzIoYXJndiwgIkNWOkg6aDpGOmk6bnA6cVJyOnM6VDp0OlNBOk86b3g6ZkIiCi0rCW9wdCA9IGdldG9wdDMyKGFyZ3YsICJDVjpIOmg6RjppOm5wOnFScjpzOlQ6dDpTQTpPOm94OmZCRCIKKy0Jb3B0ID0gZ2V0b3B0MzIoYXJndiwgIkNWOkg6aDpGOmk6bnA6cVJyOnM6VDordDorU0E6K086Km94OipmQiIKKysJb3B0ID0gZ2V0b3B0MzIoYXJndiwgIkNWOkg6aDpGOmk6bnA6cVJyOnM6VDordDorU0E6K086Km94OipmQkQiCiAgCQlVU0VfRk9SX01NVSgiYiIpCi0gCQlJRl9GRUFUVVJFX1VESENQQ19BUlBJTkcoImEiKQorIAkJSUZfRkVBVFVSRV9VREhDUENfQVJQSU5HKCJhOjoiKQogIAkJSUZfRkVBVFVSRV9VREhDUF9QT1JUKCJQOiIpCi1AQCAtMTMxNiw2ICsxMzIyLDkgQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgYworQEAgLTE0MDksNiArMTQxNCwxMCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKICAJCWxvZ21vZGUgfD0gTE9HTU9ERV9TWVNMT0c7CiAgCX0KICAKLSsJaWYgKG9wdCAmIE9QVF9EKQorKwlpZiAob3B0ICYgT1BUX0QpIHsKICsJCWFsbG93X2RlY29uZmlnID0gMDsKKysJfQogKwogIAkvKiBNYWtlIHN1cmUgZmQgMCwxLDIgYXJlIG9wZW4gKi8KICAJYmJfc2FuaXRpemVfc3RkaW8oKTsKICAJLyogRXF1aXZhbGVudCBvZiBkb2luZyBhIGZmbHVzaCBhZnRlciBldmVyeSBcbiAqLwotQEAgLTEzMzAsNyArMTMzOSw4IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGMKK0BAIC0xNDIzLDcgKzE0MzIsOCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKICAJc3JhbmQobW9ub3RvbmljX3VzKCkpOwogIAogIAlzdGF0ZSA9IElOSVRfU0VMRUNUSU5HOwpAQCAtMTA1LDE3ICsxMDUsMTcgQEAKICAJY2hhbmdlX2xpc3Rlbl9tb2RlKExJU1RFTl9SQVcpOwogIAlwYWNrZXRfbnVtID0gMDsKICAJdGltZW91dCA9IDA7Ci1AQCAtMTQ4NCw3ICsxNDk0LDggQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgYworQEAgLTE1NzcsNyArMTU4Nyw4IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQogIAkJCQl9CiAgCQkJCS8qIFRpbWVkIG91dCwgZW50ZXIgaW5pdCBzdGF0ZSAqLwotIAkJCQliYl9pbmZvX21zZygiTGVhc2UgbG9zdCwgZW50ZXJpbmcgaW5pdCBzdGF0ZSIpOworIAkJCQliYl9lcnJvcl9tc2coImxlYXNlIGxvc3QsIGVudGVyaW5nIGluaXQgc3RhdGUiKTsKIC0JCQkJdWRoY3BfcnVuX3NjcmlwdChOVUxMLCAiZGVjb25maWciKTsKICsJCQkJaWYgKGFsbG93X2RlY29uZmlnKQogKwkJCQkJdWRoY3BfcnVuX3NjcmlwdChOVUxMLCAiZGVjb25maWciKTsKICAJCQkJc3RhdGUgPSBJTklUX1NFTEVDVElORzsKICAJCQkJY2xpZW50X2NvbmZpZy5maXJzdF9zZWNzID0gMDsgLyogbWFrZSBzZWNzIGZpZWxkIGNvdW50IGZyb20gMCAqLwogIAkJCQkvKnRpbWVvdXQgPSAwOyAtIGFscmVhZHkgaXMgKi8KLUBAIC0xNjY3LDcgKzE2NzgsOCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjCitAQCAtMTc3MCw3ICsxNzgxLDggQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCiAgCQkJCQkJc2VuZF9kZWNsaW5lKC8qeGlkLCovIHNlcnZlcl9hZGRyLCBwYWNrZXQueWlhZGRyKTsKICAKICAJCQkJCQlpZiAoc3RhdGUgIT0gUkVRVUVTVElORykKQEAgLTEyNSw4ICsxMjUsOCBAQAogIAkJCQkJCWNoYW5nZV9saXN0ZW5fbW9kZShMSVNURU5fUkFXKTsKICAJCQkJCQlzdGF0ZSA9IElOSVRfU0VMRUNUSU5HOwogIAkJCQkJCWNsaWVudF9jb25maWcuZmlyc3Rfc2VjcyA9IDA7IC8qIG1ha2Ugc2VjcyBmaWVsZCBjb3VudCBmcm9tIDAgKi8KLUBAIC0xNzExLDcgKzE3MjMsOCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjCi0gCQkJCWJiX2luZm9fbXNnKCJSZWNlaXZlZCBESENQIE5BSyIpOworQEAgLTE4NDAsNyArMTg1Miw4IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQorIAkJCQliYl9lcnJvcl9tc2coInJlY2VpdmVkICVzIiwgIkRIQ1AgTkFLIik7CiAgCQkJCXVkaGNwX3J1bl9zY3JpcHQoJnBhY2tldCwgIm5hayIpOwogIAkJCQlpZiAoc3RhdGUgIT0gUkVRVUVTVElORykKIC0JCQkJCXVkaGNwX3J1bl9zY3JpcHQoTlVMTCwgImRlY29uZmlnIik7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2NvbW1pdC1hcHBsZXRfdGFibGVzLWZpeC1jb21taXQtMGRkZGJjMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvY29tbWl0LWFwcGxldF90YWJsZXMtZml4LWNvbW1pdC0wZGRkYmMxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjgwYTFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvY29tbWl0LWFwcGxldF90YWJsZXMtZml4LWNvbW1pdC0wZGRkYmMxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1QYXRjaCBhZGRyZXNzaW5nIGEgcGFyYWxsZWwgbWFrZSByYWNlIGluIEJ1c3lib3gKLQotICBodHRwOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD0wZGRkYmMxYTU5Nzk1YTc3Njc5ZDhjNWVmNDhhMjc5NWNiNDcwNTYzCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLUZyb20gMGRkZGJjMWE1OTc5NWE3NzY3OWQ4YzVlZjQ4YTI3OTVjYjQ3MDU2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIzIEF1ZyAyMDE2IDIwOjIxOjM2ICswMjAwCi1TdWJqZWN0OiBidWlsZCBzeXN0ZW06IGFsd2F5cyByZXdyaXRlIE5VTV9BUFBMRVRTLmgKLQotQ29uZGl0aW9uYWwgcmV3cml0ZSBjYW4ga2VlcCBOVU1fQVBQTEVUUy5oIG10aW1lIG9sZCwKLXRoaXMgY2F1c2VzIG1ha2UgdG8gdHJ5IHRvIHJlZ2VuZXJhdGUgaXQgYXQgZXZlcnkgaW52b2NhdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2FwcGxldHMvYXBwbGV0X3RhYmxlcy5jIGIvYXBwbGV0cy9hcHBsZXRfdGFibGVzLmMKLWluZGV4IDg0MDFhMTUuLmVmOTExYTQgMTAwNjQ0Ci0tLS0gYS9hcHBsZXRzL2FwcGxldF90YWJsZXMuYwotKysrIGIvYXBwbGV0cy9hcHBsZXRfdGFibGVzLmMKLUBAIC0xOTIsMjcgKzE5MiwyOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCXByaW50ZigifTtcbiIpOwotICNlbmRpZgotIAkvL3ByaW50ZigiI2VuZGlmIC8qIFNLSVBfZGVmaW5pdGlvbnMgKi9cbiIpOwotKwotIC8vCXByaW50ZigiXG4iKTsKLSAvLwlwcmludGYoIiNkZWZpbmUgTUFYX0FQUExFVF9OQU1FX0xFTiAldVxuIiwgTUFYX0FQUExFVF9OQU1FX0xFTik7Ci0gCi0gCWlmIChhcmd2WzJdKSB7Ci0tCQljaGFyIGxpbmVfb2xkWzgwXTsKLS0JCWNoYXIgbGluZV9uZXdbODBdOwotIAkJRklMRSAqZnA7Ci0rCQljaGFyIGxpbmVfbmV3WzgwXTsKLSsvLwkJY2hhciBsaW5lX29sZFs4MF07Ci0gCi0tCQlsaW5lX29sZFswXSA9IDA7Ci0tCQlmcCA9IGZvcGVuKGFyZ3ZbMl0sICJyIik7Ci0tCQlpZiAoZnApIHsKLS0JCQlmZ2V0cyhsaW5lX29sZCwgc2l6ZW9mKGxpbmVfb2xkKSwgZnApOwotLQkJCWZjbG9zZShmcCk7Ci0tCQl9Ci0gCQlzcHJpbnRmKGxpbmVfbmV3LCAiI2RlZmluZSBOVU1fQVBQTEVUUyAldVxuIiwgTlVNX0FQUExFVFMpOwotLQkJaWYgKHN0cmNtcChsaW5lX29sZCwgbGluZV9uZXcpICE9IDApIHsKLSsvLwkJbGluZV9vbGRbMF0gPSAwOwotKy8vCQlmcCA9IGZvcGVuKGFyZ3ZbMl0sICJyIik7Ci0rLy8JCWlmIChmcCkgewotKy8vCQkJZmdldHMobGluZV9vbGQsIHNpemVvZihsaW5lX29sZCksIGZwKTsKLSsvLwkJCWZjbG9zZShmcCk7Ci0rLy8JCX0KLSsvLwkJaWYgKHN0cmNtcChsaW5lX29sZCwgbGluZV9uZXcpICE9IDApIHsKLSAJCQlmcCA9IGZvcGVuKGFyZ3ZbMl0sICJ3Iik7Ci0gCQkJaWYgKCFmcCkKLSAJCQkJcmV0dXJuIDE7Ci0gCQkJZnB1dHMobGluZV9uZXcsIGZwKTsKLS0JCX0KLSsvLwkJfQotIAl9Ci0gCi0gCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9kZWZjb25maWcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZwppbmRleCBjYzY4YmVhLi5mYmI1ZmQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZwpAQCAtMSw0MyArMSwyNSBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBCdXN5Ym94IHZlcnNpb246IDEuMjQuMQotIyBUdWUgT2N0IDMxIDExOjAwOjAwIDIwMTUKKyMgQnVzeWJveCB2ZXJzaW9uOiAxLjI3LjIKKyMgV2VkIFNlcCAyNyAwODo1NjoxMyAyMDE3CiAjCiBDT05GSUdfSEFWRV9ET1RfQ09ORklHPXkKIAogIwogIyBCdXN5Ym94IFNldHRpbmdzCiAjCi0KLSMKLSMgR2VuZXJhbCBDb25maWd1cmF0aW9uCi0jCiAjIENPTkZJR19ERVNLVE9QIGlzIG5vdCBzZXQKICMgQ09ORklHX0VYVFJBX0NPTVBBVCBpcyBub3Qgc2V0CisjIENPTkZJR19GRURPUkFfQ09NUEFUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOQ0xVREVfU1VTdjIgaXMgbm90IHNldAogIyBDT05GSUdfVVNFX1BPUlRBQkxFX0NPREUgaXMgbm90IHNldAotQ09ORklHX1BMQVRGT1JNX0xJTlVYPXkKLUNPTkZJR19GRUFUVVJFX0JVRkZFUlNfVVNFX01BTExPQz15Ci0jIENPTkZJR19GRUFUVVJFX0JVRkZFUlNfR09fT05fU1RBQ0sgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9CVUZGRVJTX0dPX0lOX0JTUyBpcyBub3Qgc2V0CiBDT05GSUdfU0hPV19VU0FHRT15CiAjIENPTkZJR19GRUFUVVJFX1ZFUkJPU0VfVVNBR0UgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfQ09NUFJFU1NfVVNBR0U9eQorQ09ORklHX0JVU1lCT1g9eQogIyBDT05GSUdfRkVBVFVSRV9JTlNUQUxMRVIgaXMgbm90IHNldAogIyBDT05GSUdfSU5TVEFMTF9OT19VU1IgaXMgbm90IHNldAotIyBDT05GSUdfTE9DQUxFX1NVUFBPUlQgaXMgbm90IHNldAotIyBDT05GSUdfVU5JQ09ERV9TVVBQT1JUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VOSUNPREVfVVNJTkdfTE9DQUxFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfQ0hFQ0tfVU5JQ09ERV9JTl9FTlYgaXMgbm90IHNldAotQ09ORklHX1NVQlNUX1dDSEFSPTAKLUNPTkZJR19MQVNUX1NVUFBPUlRFRF9XQ0hBUj0wCi0jIENPTkZJR19VTklDT0RFX0NPTUJJTklOR19XQ0hBUlMgaXMgbm90IHNldAotIyBDT05GSUdfVU5JQ09ERV9XSURFX1dDSEFSUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VTklDT0RFX0JJRElfU1VQUE9SVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VTklDT0RFX05FVVRSQUxfVEFCTEUgaXMgbm90IHNldAotIyBDT05GSUdfVU5JQ09ERV9QUkVTRVJWRV9CUk9LRU4gaXMgbm90IHNldAogIyBDT05GSUdfUEFNIGlzIG5vdCBzZXQKLUNPTkZJR19GRUFUVVJFX1VTRV9TRU5ERklMRT15CiBDT05GSUdfTE9OR19PUFRTPXkKIENPTkZJR19GRUFUVVJFX0RFVlBUUz15CiAjIENPTkZJR19GRUFUVVJFX0NMRUFOX1VQIGlzIG5vdCBzZXQKQEAgLTUzLDYgKzM1LDcgQEAKIENPTkZJR19CVVNZQk9YX0VYRUNfUEFUSD0iL3Byb2Mvc2VsZi9leGUiCiBDT05GSUdfRkVBVFVSRV9TWVNMT0c9eQogIyBDT05GSUdfRkVBVFVSRV9IQVZFX1JQQyBpcyBub3Qgc2V0CitDT05GSUdfUExBVEZPUk1fTElOVVg9eQogCiAjCiAjIEJ1aWxkIE9wdGlvbnMKQEAgLTcxLDE3ICs1NCw2IEBACiBDT05GSUdfRVhUUkFfTERMSUJTPSIiCiAKICMKLSMgRGVidWdnaW5nIE9wdGlvbnMKLSMKLSMgQ09ORklHX0RFQlVHIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1BFU1NJTUlaRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VTklUX1RFU1QgaXMgbm90IHNldAotIyBDT05GSUdfV0VSUk9SIGlzIG5vdCBzZXQKLUNPTkZJR19OT19ERUJVR19MSUI9eQotIyBDT05GSUdfRE1BTExPQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19FRkVOQ0UgaXMgbm90IHNldAotCi0jCiAjIEluc3RhbGxhdGlvbiBPcHRpb25zICgibWFrZSBpbnN0YWxsIiBiZWhhdmlvcikKICMKIENPTkZJR19JTlNUQUxMX0FQUExFVF9TWU1MSU5LUz15CkBAIC05NCwxNiArNjYsMzAgQEAKIENPTkZJR19QUkVGSVg9Ii4vX2luc3RhbGwiCiAKICMKKyMgRGVidWdnaW5nIE9wdGlvbnMKKyMKKyMgQ09ORklHX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX1BFU1NJTUlaRSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19TQU5JVElaRSBpcyBub3Qgc2V0CisjIENPTkZJR19VTklUX1RFU1QgaXMgbm90IHNldAorIyBDT05GSUdfV0VSUk9SIGlzIG5vdCBzZXQKK0NPTkZJR19OT19ERUJVR19MSUI9eQorIyBDT05GSUdfRE1BTExPQyBpcyBub3Qgc2V0CisjIENPTkZJR19FRkVOQ0UgaXMgbm90IHNldAorCisjCiAjIEJ1c3lib3ggTGlicmFyeSBUdW5pbmcKICMKLUNPTkZJR19GRUFUVVJFX1NZU1RFTUQ9eQorIyBDT05GSUdfRkVBVFVSRV9VU0VfQlNTX1RBSUwgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfUlRNSU5NQVg9eQorQ09ORklHX0ZFQVRVUkVfQlVGRkVSU19VU0VfTUFMTE9DPXkKKyMgQ09ORklHX0ZFQVRVUkVfQlVGRkVSU19HT19PTl9TVEFDSyBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0JVRkZFUlNfR09fSU5fQlNTIGlzIG5vdCBzZXQKIENPTkZJR19QQVNTV09SRF9NSU5MRU49NgogQ09ORklHX01ENV9TTUFMTD0xCiBDT05GSUdfU0hBM19TTUFMTD0xCiBDT05GSUdfRkVBVFVSRV9GQVNUX1RPUD15CiAjIENPTkZJR19GRUFUVVJFX0VUQ19ORVRXT1JLUyBpcyBub3Qgc2V0Ci1DT05GSUdfRkVBVFVSRV9VU0VfVEVSTUlPUz15CiBDT05GSUdfRkVBVFVSRV9FRElUSU5HPXkKIENPTkZJR19GRUFUVVJFX0VESVRJTkdfTUFYX0xFTj0xMDI0CiAjIENPTkZJR19GRUFUVVJFX0VESVRJTkdfVkkgaXMgbm90IHNldApAQCAtMTE1LDggKzEwMSwyMCBAQAogQ09ORklHX0ZFQVRVUkVfVVNFUk5BTUVfQ09NUExFVElPTj15CiBDT05GSUdfRkVBVFVSRV9FRElUSU5HX0ZBTkNZX1BST01QVD15CiAjIENPTkZJR19GRUFUVVJFX0VESVRJTkdfQVNLX1RFUk1JTkFMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xPQ0FMRV9TVVBQT1JUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOSUNPREVfU1VQUE9SVCBpcyBub3Qgc2V0CisjIENPTkZJR19VTklDT0RFX1VTSU5HX0xPQ0FMRSBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0NIRUNLX1VOSUNPREVfSU5fRU5WIGlzIG5vdCBzZXQKK0NPTkZJR19TVUJTVF9XQ0hBUj0wCitDT05GSUdfTEFTVF9TVVBQT1JURURfV0NIQVI9MAorIyBDT05GSUdfVU5JQ09ERV9DT01CSU5JTkdfV0NIQVJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOSUNPREVfV0lERV9XQ0hBUlMgaXMgbm90IHNldAorIyBDT05GSUdfVU5JQ09ERV9CSURJX1NVUFBPUlQgaXMgbm90IHNldAorIyBDT05GSUdfVU5JQ09ERV9ORVVUUkFMX1RBQkxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOSUNPREVfUFJFU0VSVkVfQlJPS0VOIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX05PTl9QT1NJWF9DUD15CiAjIENPTkZJR19GRUFUVVJFX1ZFUkJPU0VfQ1BfTUVTU0FHRSBpcyBub3Qgc2V0CitDT05GSUdfRkVBVFVSRV9VU0VfU0VOREZJTEU9eQogQ09ORklHX0ZFQVRVUkVfQ09QWUJVRl9LQj00CiBDT05GSUdfRkVBVFVSRV9TS0lQX1JPT1RGUz15CiBDT05GSUdfTU9OT1RPTklDX1NZU0NBTEw9eQpAQCAtMTQwLDc2ICsxMzgsNTkgQEAKICMgQ09ORklHX0ZFQVRVUkVfQVJfQ1JFQVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX1VOQ09NUFJFU1MgaXMgbm90IHNldAogQ09ORklHX0dVTlpJUD15CitDT05GSUdfWkNBVD15CitDT05GSUdfRkVBVFVSRV9HVU5aSVBfTE9OR19PUFRJT05TPXkKIENPTkZJR19CVU5aSVAyPXkKK0NPTkZJR19CWkNBVD15CiAjIENPTkZJR19VTkxaTUEgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9MWk1BX0ZBU1QgaXMgbm90IHNldAorQ09ORklHX0xaQ0FUPXkKICMgQ09ORklHX0xaTUEgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9MWk1BX0ZBU1QgaXMgbm90IHNldAogIyBDT05GSUdfVU5YWiBpcyBub3Qgc2V0CitDT05GSUdfWFpDQVQ9eQogIyBDT05GSUdfWFogaXMgbm90IHNldAogIyBDT05GSUdfQlpJUDIgaXMgbm90IHNldAorQ09ORklHX0ZFQVRVUkVfQlpJUDJfREVDT01QUkVTUz15CiBDT05GSUdfQ1BJTz15CiAjIENPTkZJR19GRUFUVVJFX0NQSU9fTyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0NQSU9fUCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUEtHIGlzIG5vdCBzZXQKICMgQ09ORklHX0RQS0dfREVCIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfRFBLR19ERUJfRVhUUkFDVF9PTkxZIGlzIG5vdCBzZXQKIENPTkZJR19HWklQPXkKICMgQ09ORklHX0ZFQVRVUkVfR1pJUF9MT05HX09QVElPTlMgaXMgbm90IHNldAogQ09ORklHX0daSVBfRkFTVD0wCiAjIENPTkZJR19GRUFUVVJFX0daSVBfTEVWRUxTIGlzIG5vdCBzZXQKK0NPTkZJR19GRUFUVVJFX0daSVBfREVDT01QUkVTUz15CiAjIENPTkZJR19MWk9QIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOTFpPUCBpcyBub3Qgc2V0CisjIENPTkZJR19MWk9QQ0FUIGlzIG5vdCBzZXQKICMgQ09ORklHX0xaT1BfQ09NUFJfSElHSCBpcyBub3Qgc2V0CiAjIENPTkZJR19SUE0gaXMgbm90IHNldAogIyBDT05GSUdfUlBNMkNQSU8gaXMgbm90IHNldAogQ09ORklHX1RBUj15CisjIENPTkZJR19GRUFUVVJFX1RBUl9MT05HX09QVElPTlMgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfVEFSX0NSRUFURT15CiBDT05GSUdfRkVBVFVSRV9UQVJfQVVUT0RFVEVDVD15CiBDT05GSUdfRkVBVFVSRV9UQVJfRlJPTT15CiBDT05GSUdfRkVBVFVSRV9UQVJfT0xER05VX0NPTVBBVElCSUxJVFk9eQogIyBDT05GSUdfRkVBVFVSRV9UQVJfT0xEU1VOX0NPTVBBVElCSUxJVFkgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfVEFSX0dOVV9FWFRFTlNJT05TPXkKLSMgQ09ORklHX0ZFQVRVUkVfVEFSX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1RBUl9UT19DT01NQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVEFSX1VOQU1FX0dOQU1FIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX1RBUl9OT1BSRVNFUlZFX1RJTUU9eQogIyBDT05GSUdfRkVBVFVSRV9UQVJfU0VMSU5VWCBpcyBub3Qgc2V0CiBDT05GSUdfVU5aSVA9eQorQ09ORklHX0ZFQVRVUkVfVU5aSVBfQ0RGPXkKKyMgQ09ORklHX0ZFQVRVUkVfVU5aSVBfQlpJUDIgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9VTlpJUF9MWk1BIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVU5aSVBfWFogaXMgbm90IHNldAogCiAjCiAjIENvcmV1dGlscwogIwogQ09ORklHX0JBU0VOQU1FPXkKIENPTkZJR19DQVQ9eQotQ09ORklHX0RBVEU9eQotIyBDT05GSUdfRkVBVFVSRV9EQVRFX0lTT0ZNVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0RBVEVfTkFOTyBpcyBub3Qgc2V0Ci1DT05GSUdfRkVBVFVSRV9EQVRFX0NPTVBBVD15Ci1DT05GSUdfREQ9eQotQ09ORklHX0ZFQVRVUkVfRERfU0lHTkFMX0hBTkRMSU5HPXkKLSMgQ09ORklHX0ZFQVRVUkVfRERfVEhJUkRfU1RBVFVTX0xJTkUgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9ERF9JQlNfT0JTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfRERfU1RBVFVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hPU1RJRCBpcyBub3Qgc2V0Ci1DT05GSUdfSUQ9eQotQ09ORklHX0dST1VQUz15Ci1DT05GSUdfU0hVRj15Ci1DT05GSUdfU1lOQz15Ci0jIENPTkZJR19GRUFUVVJFX1NZTkNfRkFOQ1kgaXMgbm90IHNldAotQ09ORklHX1RFU1Q9eQotQ09ORklHX0ZFQVRVUkVfVEVTVF82ND15Ci1DT05GSUdfVE9VQ0g9eQotQ09ORklHX0ZFQVRVUkVfVE9VQ0hfTk9ERVJFRj15Ci1DT05GSUdfRkVBVFVSRV9UT1VDSF9TVVNWMz15Ci1DT05GSUdfVFI9eQotQ09ORklHX0ZFQVRVUkVfVFJfQ0xBU1NFUz15Ci0jIENPTkZJR19GRUFUVVJFX1RSX0VRVUlWIGlzIG5vdCBzZXQKLSMgQ09ORklHX1RSVU5DQVRFIGlzIG5vdCBzZXQKLUNPTkZJR19VTkxJTks9eQotIyBDT05GSUdfQkFTRTY0IGlzIG5vdCBzZXQKLUNPTkZJR19XSE89eQotQ09ORklHX1VTRVJTPXkKLSMgQ09ORklHX0NBTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DQVRWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfQ0FUViBpcyBub3Qgc2V0CiBDT05GSUdfQ0hHUlA9eQogQ09ORklHX0NITU9EPXkKIENPTkZJR19DSE9XTj15CkBAIC0yMjAsNiArMjAxLDE1IEBACiBDT05GSUdfQ1A9eQogIyBDT05GSUdfRkVBVFVSRV9DUF9MT05HX09QVElPTlMgaXMgbm90IHNldAogQ09ORklHX0NVVD15CitDT05GSUdfREFURT15CisjIENPTkZJR19GRUFUVVJFX0RBVEVfSVNPRk1UIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfREFURV9OQU5PIGlzIG5vdCBzZXQKK0NPTkZJR19GRUFUVVJFX0RBVEVfQ09NUEFUPXkKK0NPTkZJR19ERD15CitDT05GSUdfRkVBVFVSRV9ERF9TSUdOQUxfSEFORExJTkc9eQorIyBDT05GSUdfRkVBVFVSRV9ERF9USElSRF9TVEFUVVNfTElORSBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0REX0lCU19PQlMgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9ERF9TVEFUVVMgaXMgbm90IHNldAogQ09ORklHX0RGPXkKICMgQ09ORklHX0ZFQVRVUkVfREZfRkFOQ1kgaXMgbm90IHNldAogQ09ORklHX0RJUk5BTUU9eQpAQCAtMjMzLDM2ICsyMjMsNTcgQEAKIENPTkZJR19GRUFUVVJFX0VOVl9MT05HX09QVElPTlM9eQogIyBDT05GSUdfRVhQQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfRVhQQU5EX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VTkVYUEFORCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1VORVhQQU5EX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiBDT05GSUdfRVhQUj15CiBDT05GSUdfRVhQUl9NQVRIX1NVUFBPUlRfNjQ9eQorIyBDT05GSUdfRkFDVE9SIGlzIG5vdCBzZXQKIENPTkZJR19GQUxTRT15CiAjIENPTkZJR19GT0xEIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZTWU5DIGlzIG5vdCBzZXQKIENPTkZJR19IRUFEPXkKICMgQ09ORklHX0ZFQVRVUkVfRkFOQ1lfSEVBRCBpcyBub3Qgc2V0CisjIENPTkZJR19IT1NUSUQgaXMgbm90IHNldAorQ09ORklHX0lEPXkKK0NPTkZJR19HUk9VUFM9eQogIyBDT05GSUdfSU5TVEFMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0lOU1RBTExfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xJTksgaXMgbm90IHNldAogQ09ORklHX0xOPXkKIENPTkZJR19MT0dOQU1FPXkKIENPTkZJR19MUz15CiBDT05GSUdfRkVBVFVSRV9MU19GSUxFVFlQRVM9eQogQ09ORklHX0ZFQVRVUkVfTFNfRk9MTE9XTElOS1M9eQogQ09ORklHX0ZFQVRVUkVfTFNfUkVDVVJTSVZFPXkKK0NPTkZJR19GRUFUVVJFX0xTX1dJRFRIPXkKIENPTkZJR19GRUFUVVJFX0xTX1NPUlRGSUxFUz15CiBDT05GSUdfRkVBVFVSRV9MU19USU1FU1RBTVBTPXkKIENPTkZJR19GRUFUVVJFX0xTX1VTRVJOQU1FPXkKIENPTkZJR19GRUFUVVJFX0xTX0NPTE9SPXkKICMgQ09ORklHX0ZFQVRVUkVfTFNfQ09MT1JfSVNfREVGQVVMVCBpcyBub3Qgc2V0CiBDT05GSUdfTUQ1U1VNPXkKKyMgQ09ORklHX1NIQTFTVU0gaXMgbm90IHNldAorIyBDT05GSUdfU0hBMjU2U1VNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NIQTUxMlNVTSBpcyBub3Qgc2V0CisjIENPTkZJR19TSEEzU1VNIGlzIG5vdCBzZXQKKworIworIyBDb21tb24gb3B0aW9ucyBmb3IgbWQ1c3VtLCBzaGExc3VtLCBzaGEyNTZzdW0sIHNoYTUxMnN1bSwgc2hhM3N1bQorIworQ09ORklHX0ZFQVRVUkVfTUQ1X1NIQTFfU1VNX0NIRUNLPXkKIENPTkZJR19NS0RJUj15CiBDT05GSUdfRkVBVFVSRV9NS0RJUl9MT05HX09QVElPTlM9eQogQ09ORklHX01LRklGTz15CiBDT05GSUdfTUtOT0Q9eQorQ09ORklHX01LVEVNUD15CiBDT05GSUdfTVY9eQogIyBDT05GSUdfRkVBVFVSRV9NVl9MT05HX09QVElPTlMgaXMgbm90IHNldAogIyBDT05GSUdfTklDRSBpcyBub3Qgc2V0CisjIENPTkZJR19OTCBpcyBub3Qgc2V0CiBDT05GSUdfTk9IVVA9eQorQ09ORklHX05QUk9DPXkKIENPTkZJR19PRD15CisjIENPTkZJR19QQVNURSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUklOVEVOViBpcyBub3Qgc2V0CiBDT05GSUdfUFJJTlRGPXkKIENPTkZJR19QV0Q9eQpAQCAtMjczLDEwICsyODQsOCBAQAogQ09ORklHX1JNRElSPXkKICMgQ09ORklHX0ZFQVRVUkVfUk1ESVJfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKIENPTkZJR19TRVE9eQotIyBDT05GSUdfU0hBMVNVTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEEyNTZTVU0gaXMgbm90IHNldAotIyBDT05GSUdfU0hBNTEyU1VNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQTNTVU0gaXMgbm90IHNldAorIyBDT05GSUdfU0hSRUQgaXMgbm90IHNldAorQ09ORklHX1NIVUY9eQogQ09ORklHX1NMRUVQPXkKIENPTkZJR19GRUFUVVJFX0ZBTkNZX1NMRUVQPXkKIENPTkZJR19GRUFUVVJFX0ZMT0FUX1NMRUVQPXkKQEAgLTI4NiwyNSArMjk1LDQzIEBACiAjIENPTkZJR19GRUFUVVJFX1NQTElUX0ZBTkNZIGlzIG5vdCBzZXQKIENPTkZJR19TVEFUPXkKIENPTkZJR19GRUFUVVJFX1NUQVRfRk9STUFUPXkKK0NPTkZJR19GRUFUVVJFX1NUQVRfRklMRVNZU1RFTT15CiBDT05GSUdfU1RUWT15CiAjIENPTkZJR19TVU0gaXMgbm90IHNldAorQ09ORklHX1NZTkM9eQorIyBDT05GSUdfRkVBVFVSRV9TWU5DX0ZBTkNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBQyBpcyBub3Qgc2V0CiBDT05GSUdfVEFJTD15CiBDT05GSUdfRkVBVFVSRV9GQU5DWV9UQUlMPXkKIENPTkZJR19URUU9eQogIyBDT05GSUdfRkVBVFVSRV9URUVfVVNFX0JMT0NLX0lPIGlzIG5vdCBzZXQKK0NPTkZJR19URVNUPXkKK0NPTkZJR19URVNUMT15CitDT05GSUdfVEVTVDI9eQorQ09ORklHX0ZFQVRVUkVfVEVTVF82ND15CisjIENPTkZJR19USU1FT1VUIGlzIG5vdCBzZXQKK0NPTkZJR19UT1VDSD15CitDT05GSUdfRkVBVFVSRV9UT1VDSF9OT0RFUkVGPXkKK0NPTkZJR19GRUFUVVJFX1RPVUNIX1NVU1YzPXkKK0NPTkZJR19UUj15CitDT05GSUdfRkVBVFVSRV9UUl9DTEFTU0VTPXkKKyMgQ09ORklHX0ZFQVRVUkVfVFJfRVFVSVYgaXMgbm90IHNldAogQ09ORklHX1RSVUU9eQorIyBDT05GSUdfVFJVTkNBVEUgaXMgbm90IHNldAogQ09ORklHX1RUWT15CiBDT05GSUdfVU5BTUU9eQogQ09ORklHX1VOQU1FX09TTkFNRT0iR05VL0xpbnV4IgotIyBDT05GSUdfVU5FWFBBTkQgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9VTkVYUEFORF9MT05HX09QVElPTlMgaXMgbm90IHNldAogQ09ORklHX1VOSVE9eQorQ09ORklHX1VOTElOSz15CiBDT05GSUdfVVNMRUVQPXkKICMgQ09ORklHX1VVREVDT0RFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBU0U2NCBpcyBub3Qgc2V0CiAjIENPTkZJR19VVUVOQ09ERSBpcyBub3Qgc2V0CiBDT05GSUdfV0M9eQogIyBDT05GSUdfRkVBVFVSRV9XQ19MQVJHRSBpcyBub3Qgc2V0CitDT05GSUdfV0hPPXkKKyMgQ09ORklHX1cgaXMgbm90IHNldAorQ09ORklHX1VTRVJTPXkKIENPTkZJR19XSE9BTUk9eQogQ09ORklHX1lFUz15CiAKQEAgLTMxOSwzMCArMzQ2LDI5IEBACiAjIENPTkZJR19GRUFUVVJFX1BSRVNFUlZFX0hBUkRMSU5LUyBpcyBub3Qgc2V0CiAKICMKLSMgQ29tbW9uIG9wdGlvbnMgZm9yIGxzLCBtb3JlIGFuZCB0ZWxuZXQKLSMKLUNPTkZJR19GRUFUVVJFX0FVVE9XSURUSD15Ci0KLSMKICMgQ29tbW9uIG9wdGlvbnMgZm9yIGRmLCBkdSwgbHMKICMKIENPTkZJR19GRUFUVVJFX0hVTUFOX1JFQURBQkxFPXkKIAogIwotIyBDb21tb24gb3B0aW9ucyBmb3IgbWQ1c3VtLCBzaGExc3VtLCBzaGEyNTZzdW0sIHNoYTUxMnN1bSwgc2hhM3N1bQotIwotQ09ORklHX0ZFQVRVUkVfTUQ1X1NIQTFfU1VNX0NIRUNLPXkKLQotIwogIyBDb25zb2xlIFV0aWxpdGllcwogIwogQ09ORklHX0NIVlQ9eQotIyBDT05GSUdfRkdDT05TT0xFIGlzIG5vdCBzZXQKIENPTkZJR19DTEVBUj15CiBDT05GSUdfREVBTExPQ1ZUPXkKIENPTkZJR19EVU1QS01BUD15CisjIENPTkZJR19GR0NPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfS0JEX01PREUgaXMgbm90IHNldAogQ09ORklHX0xPQURGT05UPXkKKyMgQ09ORklHX1NFVEZPTlQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9TRVRGT05UX1RFWFRVQUxfTUFQIGlzIG5vdCBzZXQKK0NPTkZJR19ERUZBVUxUX1NFVEZPTlRfRElSPSIiCisKKyMKKyMgQ29tbW9uIG9wdGlvbnMgZm9yIGxvYWRmb250IGFuZCBzZXRmb250CisjCisjIENPTkZJR19GRUFUVVJFX0xPQURGT05UX1BTRjIgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9MT0FERk9OVF9SQVcgaXMgbm90IHNldAogQ09ORklHX0xPQURLTUFQPXkKIENPTkZJR19PUEVOVlQ9eQogQ09ORklHX1JFU0VUPXkKQEAgLTM1MCwzMCArMzc2LDIwIEBACiAjIENPTkZJR19GRUFUVVJFX1JFU0laRV9QUklOVCBpcyBub3Qgc2V0CiBDT05GSUdfU0VUQ09OU09MRT15CiAjIENPTkZJR19GRUFUVVJFX1NFVENPTlNPTEVfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFVEZPTlQgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9TRVRGT05UX1RFWFRVQUxfTUFQIGlzIG5vdCBzZXQKLUNPTkZJR19ERUZBVUxUX1NFVEZPTlRfRElSPSIiCiAjIENPTkZJR19TRVRLRVlDT0RFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVRMT0dDT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX1NIT1dLRVkgaXMgbm90IHNldAogCiAjCi0jIENvbW1vbiBvcHRpb25zIGZvciBsb2FkZm9udCBhbmQgc2V0Zm9udAotIwotIyBDT05GSUdfRkVBVFVSRV9MT0FERk9OVF9QU0YyIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfTE9BREZPTlRfUkFXIGlzIG5vdCBzZXQKLQotIwogIyBEZWJpYW4gVXRpbGl0aWVzCiAjCi1DT05GSUdfTUtURU1QPXkKICMgQ09ORklHX1BJUEVfUFJPR1JFU1MgaXMgbm90IHNldAogQ09ORklHX1JVTl9QQVJUUz15CiBDT05GSUdfRkVBVFVSRV9SVU5fUEFSVFNfTE9OR19PUFRJT05TPXkKICMgQ09ORklHX0ZFQVRVUkVfUlVOX1BBUlRTX0ZBTkNZIGlzIG5vdCBzZXQKIENPTkZJR19TVEFSVF9TVE9QX0RBRU1PTj15Ci1DT05GSUdfRkVBVFVSRV9TVEFSVF9TVE9QX0RBRU1PTl9GQU5DWT15CiBDT05GSUdfRkVBVFVSRV9TVEFSVF9TVE9QX0RBRU1PTl9MT05HX09QVElPTlM9eQorQ09ORklHX0ZFQVRVUkVfU1RBUlRfU1RPUF9EQUVNT05fRkFOQ1k9eQogQ09ORklHX1dISUNIPXkKIAogIwpAQCAtNDM2LDggKzQ1Miw4IEBACiAjIENPTkZJR19GRUFUVVJFX0ZJTkRfQ09OVEVYVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0ZJTkRfTElOS1MgaXMgbm90IHNldAogQ09ORklHX0dSRVA9eQotQ09ORklHX0ZFQVRVUkVfR1JFUF9FR1JFUF9BTElBUz15Ci1DT05GSUdfRkVBVFVSRV9HUkVQX0ZHUkVQX0FMSUFTPXkKK0NPTkZJR19FR1JFUD15CitDT05GSUdfRkdSRVA9eQogQ09ORklHX0ZFQVRVUkVfR1JFUF9DT05URVhUPXkKIENPTkZJR19YQVJHUz15CiAjIENPTkZJR19GRUFUVVJFX1hBUkdTX1NVUFBPUlRfQ09ORklSTUFUSU9OIGlzIG5vdCBzZXQKQEAgLTQ1Myw0MCArNDY5LDQ1IEBACiAjIENPTkZJR19GRUFUVVJFX0JPT1RDSEFSVERfQkxPQVRFRF9IRUFERVIgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9CT09UQ0hBUlREX0NPTkZJR19GSUxFIGlzIG5vdCBzZXQKIENPTkZJR19IQUxUPXkKK0NPTkZJR19QT1dFUk9GRj15CitDT05GSUdfUkVCT09UPXkKICMgQ09ORklHX0ZFQVRVUkVfQ0FMTF9URUxJTklUIGlzIG5vdCBzZXQKIENPTkZJR19URUxJTklUX1BBVEg9IiIKICMgQ09ORklHX0lOSVQgaXMgbm90IHNldAorIyBDT05GSUdfTElOVVhSQyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1VTRV9JTklUVEFCIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfS0lMTF9SRU1PVkVEIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX0tJTExfREVMQVk9MAogIyBDT05GSUdfRkVBVFVSRV9JTklUX1NDVFRZIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5JVF9TWVNMT0cgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9FWFRSQV9RVUlFVCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0lOSVRfUVVJRVQgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9JTklUX0NPUkVEVU1QUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0lOSVRSRCBpcyBub3Qgc2V0CiBDT05GSUdfSU5JVF9URVJNSU5BTF9UWVBFPSIiCi1DT05GSUdfTUVTRz15Ci0jIENPTkZJR19GRUFUVVJFX01FU0dfRU5BQkxFX09OTFlfR1JPVVAgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9JTklUX01PRElGWV9DTURMSU5FIGlzIG5vdCBzZXQKIAogIwogIyBMb2dpbi9QYXNzd29yZCBNYW5hZ2VtZW50IFV0aWxpdGllcwogIwotIyBDT05GSUdfQUREX1NIRUxMIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JFTU9WRV9TSEVMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1NIQURPV1BBU1NXRFMgaXMgbm90IHNldAogIyBDT05GSUdfVVNFX0JCX1BXRF9HUlAgaXMgbm90IHNldAogIyBDT05GSUdfVVNFX0JCX1NIQURPVyBpcyBub3Qgc2V0CiBDT05GSUdfVVNFX0JCX0NSWVBUPXkKICMgQ09ORklHX1VTRV9CQl9DUllQVF9TSEEgaXMgbm90IHNldAorIyBDT05GSUdfQUREX1NIRUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFTU9WRV9TSEVMTCBpcyBub3Qgc2V0CisjIENPTkZJR19BRERHUk9VUCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0FEREdST1VQX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0FERFVTRVJfVE9fR1JPVVAgaXMgbm90IHNldAogIyBDT05GSUdfQUREVVNFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0FERFVTRVJfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfQ0hFQ0tfTkFNRVMgaXMgbm90IHNldAogQ09ORklHX0xBU1RfSUQ9NjAwMDAKIENPTkZJR19GSVJTVF9TWVNURU1fSUQ9MTAwCiBDT05GSUdfTEFTVF9TWVNURU1fSUQ9OTk5Ci0jIENPTkZJR19BRERHUk9VUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0FEREdST1VQX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0FERFVTRVJfVE9fR1JPVVAgaXMgbm90IHNldAorIyBDT05GSUdfQ0hQQVNTV0QgaXMgbm90IHNldAorQ09ORklHX0ZFQVRVUkVfREVGQVVMVF9QQVNTV0RfQUxHTz0iIgorIyBDT05GSUdfQ1JZUFRQVyBpcyBub3Qgc2V0CisjIENPTkZJR19NS1BBU1NXRCBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUxVU0VSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFTEdST1VQIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfREVMX1VTRVJfRlJPTV9HUk9VUCBpcyBub3Qgc2V0CkBAIC00OTgsMTIgKzUxOSwxMCBAQAogIyBDT05GSUdfRkVBVFVSRV9TRUNVUkVUVFkgaXMgbm90IHNldAogIyBDT05GSUdfUEFTU1dEIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfUEFTU1dEX1dFQUtfQ0hFQ0sgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRQVyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DSFBBU1NXRCBpcyBub3Qgc2V0Ci1DT05GSUdfRkVBVFVSRV9ERUZBVUxUX1BBU1NXRF9BTEdPPSIiCiAjIENPTkZJR19TVSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1NVX1NZU0xPRyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1NVX0NIRUNLU19TSEVMTFMgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9TVV9CTEFOS19QV19ORUVEU19TRUNVUkVfVFRZIGlzIG5vdCBzZXQKICMgQ09ORklHX1NVTE9HSU4gaXMgbm90IHNldAogIyBDT05GSUdfVkxPQ0sgaXMgbm90IHNldAogCkBAIC01MTgsMjkgKzUzNywyOSBAQAogIwogIyBMaW51eCBNb2R1bGUgVXRpbGl0aWVzCiAjCi0jIENPTkZJR19NT0RJTkZPIGlzIG5vdCBzZXQKICMgQ09ORklHX01PRFBST0JFX1NNQUxMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfTU9EUFJPQkVfU01BTExfT1BUSU9OU19PTl9DTURMSU5FIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfTU9EUFJPQkVfU01BTExfQ0hFQ0tfQUxSRUFEWV9MT0FERUQgaXMgbm90IHNldAorQ09ORklHX0RFUE1PRD15CiBDT05GSUdfSU5TTU9EPXkKLUNPTkZJR19STU1PRD15CiBDT05GSUdfTFNNT0Q9eQogIyBDT05GSUdfRkVBVFVSRV9MU01PRF9QUkVUVFlfMl82X09VVFBVVCBpcyBub3Qgc2V0CisjIENPTkZJR19NT0RJTkZPIGlzIG5vdCBzZXQKIENPTkZJR19NT0RQUk9CRT15CiAjIENPTkZJR19GRUFUVVJFX01PRFBST0JFX0JMQUNLTElTVCBpcyBub3Qgc2V0Ci1DT05GSUdfREVQTU9EPXkKK0NPTkZJR19STU1PRD15CiAKICMKICMgT3B0aW9ucyBjb21tb24gdG8gbXVsdGlwbGUgbW9kdXRpbHMKICMKK0NPTkZJR19GRUFUVVJFX0NNRExJTkVfTU9EVUxFX09QVElPTlM9eQorIyBDT05GSUdfRkVBVFVSRV9NT0RQUk9CRV9TTUFMTF9DSEVDS19BTFJFQURZX0xPQURFRCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFXzJfNF9NT0RVTEVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfSU5TTU9EX1RSWV9NTUFQIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5TTU9EX1ZFUlNJT05fQ0hFQ0tJTkcgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9JTlNNT0RfS1NZTU9PUFNfU1lNQk9MUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0lOU01PRF9MT0FESU5LTUVNIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5TTU9EX0xPQURfTUFQIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5TTU9EX0xPQURfTUFQX0ZVTEwgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfQ0hFQ0tfVEFJTlRFRF9NT0RVTEU9eQorIyBDT05GSUdfRkVBVFVSRV9JTlNNT0RfVFJZX01NQVAgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfTU9EVVRJTFNfQUxJQVM9eQogQ09ORklHX0ZFQVRVUkVfTU9EVVRJTFNfU1lNQk9MUz15CiBDT05GSUdfREVGQVVMVF9NT0RVTEVTX0RJUj0iL2xpYi9tb2R1bGVzIgpAQCAtNTQ5LDE1ICs1NjgsNzEgQEAKICMKICMgTGludXggU3lzdGVtIFV0aWxpdGllcwogIworIyBDT05GSUdfQUNQSUQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9BQ1BJRF9DT01QQVQgaXMgbm90IHNldAorIyBDT05GSUdfQkxLRElTQ0FSRCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtJRCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0JMS0lEX1RZUEUgaXMgbm90IHNldAogIyBDT05GSUdfQkxPQ0tERVYgaXMgbm90IHNldAorIyBDT05GSUdfQ0FMIGlzIG5vdCBzZXQKK0NPTkZJR19ETUVTRz15CitDT05GSUdfRkVBVFVSRV9ETUVTR19QUkVUVFk9eQorIyBDT05GSUdfRkFMTE9DQVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVEFUVFIgaXMgbm90IHNldAorQ09ORklHX0ZCU0VUPXkKK0NPTkZJR19GRUFUVVJFX0ZCU0VUX0ZBTkNZPXkKK0NPTkZJR19GRUFUVVJFX0ZCU0VUX1JFQURNT0RFPXkKKyMgQ09ORklHX0ZERk9STUFUIGlzIG5vdCBzZXQKK0NPTkZJR19GRElTSz15CisjIENPTkZJR19GRElTS19TVVBQT1JUX0xBUkdFX0RJU0tTIGlzIG5vdCBzZXQKK0NPTkZJR19GRUFUVVJFX0ZESVNLX1dSSVRBQkxFPXkKKyMgQ09ORklHX0ZFQVRVUkVfQUlYX0xBQkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfU0dJX0xBQkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfU1VOX0xBQkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfT1NGX0xBQkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfR1BUX0xBQkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfRkRJU0tfQURWQU5DRUQgaXMgbm90IHNldAorIyBDT05GSUdfRklOREZTIGlzIG5vdCBzZXQKK0NPTkZJR19GTE9DSz15CisjIENPTkZJR19GREZMVVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZSRUVSQU1ESVNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZTQ0tfTUlOSVggaXMgbm90IHNldAorIyBDT05GSUdfRlNGUkVFWkUgaXMgbm90IHNldAogQ09ORklHX0ZTVFJJTT15CisjIENPTkZJR19HRVRPUFQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9HRVRPUFRfTE9ORyBpcyBub3Qgc2V0CitDT05GSUdfSEVYRFVNUD15CisjIENPTkZJR19GRUFUVVJFX0hFWERVTVBfUkVWRVJTRSBpcyBub3Qgc2V0CisjIENPTkZJR19IRCBpcyBub3Qgc2V0CisjIENPTkZJR19YWEQgaXMgbm90IHNldAorQ09ORklHX0hXQ0xPQ0s9eQorQ09ORklHX0ZFQVRVUkVfSFdDTE9DS19MT05HX09QVElPTlM9eQorQ09ORklHX0ZFQVRVUkVfSFdDTE9DS19BREpUSU1FX0ZIUz15CisjIENPTkZJR19JUENSTSBpcyBub3Qgc2V0CisjIENPTkZJR19JUENTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xBU1QgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9MQVNUX0ZBTkNZIGlzIG5vdCBzZXQKK0NPTkZJR19MT1NFVFVQPXkKKyMgQ09ORklHX0xTUENJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xTVVNCIGlzIG5vdCBzZXQKICMgQ09ORklHX01ERVYgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9NREVWX0NPTkYgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9NREVWX1JFTkFNRSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX01ERVZfUkVOQU1FX1JFR0VYUCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX01ERVZfRVhFQyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX01ERVZfTE9BRF9GSVJNV0FSRSBpcyBub3Qgc2V0CitDT05GSUdfTUVTRz15CisjIENPTkZJR19GRUFUVVJFX01FU0dfRU5BQkxFX09OTFlfR1JPVVAgaXMgbm90IHNldAorIyBDT05GSUdfTUtFMkZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01LRlNfRVhUMiBpcyBub3Qgc2V0CisjIENPTkZJR19NS0ZTX01JTklYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfTUlOSVgyIGlzIG5vdCBzZXQKKyMgQ09ORklHX01LRlNfUkVJU0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX01LRE9TRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUtGU19WRkFUIGlzIG5vdCBzZXQKK0NPTkZJR19NS1NXQVA9eQorIyBDT05GSUdfRkVBVFVSRV9NS1NXQVBfVVVJRCBpcyBub3Qgc2V0CitDT05GSUdfTU9SRT15CiBDT05GSUdfTU9VTlQ9eQogIyBDT05GSUdfRkVBVFVSRV9NT1VOVF9GQUtFIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTU9VTlRfVkVSQk9TRSBpcyBub3Qgc2V0CkBAIC01NjgsNjcgKzY0MywzMyBAQAogQ09ORklHX0ZFQVRVUkVfTU9VTlRfRkxBR1M9eQogQ09ORklHX0ZFQVRVUkVfTU9VTlRfRlNUQUI9eQogIyBDT05GSUdfRkVBVFVSRV9NT1VOVF9PVEhFUlRBQiBpcyBub3Qgc2V0Ci0jIENPTkZJR19SRVYgaXMgbm90IHNldAotIyBDT05GSUdfVUVWRU5UIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FDUElEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfQUNQSURfQ09NUEFUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JMS0lEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfQkxLSURfVFlQRSBpcyBub3Qgc2V0Ci1DT05GSUdfRE1FU0c9eQotQ09ORklHX0ZFQVRVUkVfRE1FU0dfUFJFVFRZPXkKLUNPTkZJR19GQlNFVD15Ci1DT05GSUdfRkVBVFVSRV9GQlNFVF9GQU5DWT15Ci1DT05GSUdfRkVBVFVSRV9GQlNFVF9SRUFETU9ERT15Ci0jIENPTkZJR19GREZMVVNIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZERk9STUFUIGlzIG5vdCBzZXQKLUNPTkZJR19GRElTSz15Ci1DT05GSUdfRkRJU0tfU1VQUE9SVF9MQVJHRV9ESVNLUz15Ci1DT05GSUdfRkVBVFVSRV9GRElTS19XUklUQUJMRT15Ci0jIENPTkZJR19GRUFUVVJFX0FJWF9MQUJFTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1NHSV9MQUJFTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1NVTl9MQUJFTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX09TRl9MQUJFTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0dQVF9MQUJFTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0ZESVNLX0FEVkFOQ0VEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZJTkRGUyBpcyBub3Qgc2V0Ci1DT05GSUdfRkxPQ0s9eQotIyBDT05GSUdfRlJFRVJBTURJU0sgaXMgbm90IHNldAotIyBDT05GSUdfRlNDS19NSU5JWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19NS0ZTX0VYVDIgaXMgbm90IHNldAotIyBDT05GSUdfTUtGU19NSU5JWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX01JTklYMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19NS0ZTX1JFSVNFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19NS0ZTX1ZGQVQgaXMgbm90IHNldAotIyBDT05GSUdfR0VUT1BUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfR0VUT1BUX0xPTkcgaXMgbm90IHNldAotQ09ORklHX0hFWERVTVA9eQotIyBDT05GSUdfRkVBVFVSRV9IRVhEVU1QX1JFVkVSU0UgaXMgbm90IHNldAotIyBDT05GSUdfSEQgaXMgbm90IHNldAotQ09ORklHX0hXQ0xPQ0s9eQotQ09ORklHX0ZFQVRVUkVfSFdDTE9DS19MT05HX09QVElPTlM9eQotQ09ORklHX0ZFQVRVUkVfSFdDTE9DS19BREpUSU1FX0ZIUz15Ci0jIENPTkZJR19JUENSTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUENTIGlzIG5vdCBzZXQKLUNPTkZJR19MT1NFVFVQPXkKLSMgQ09ORklHX0xTUENJIGlzIG5vdCBzZXQKLSMgQ09ORklHX0xTVVNCIGlzIG5vdCBzZXQKLUNPTkZJR19NS1NXQVA9eQotIyBDT05GSUdfRkVBVFVSRV9NS1NXQVBfVVVJRCBpcyBub3Qgc2V0Ci1DT05GSUdfTU9SRT15CisjIENPTkZJR19OU0VOVEVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfTlNFTlRFUl9MT05HX09QVFMgaXMgbm90IHNldAogQ09ORklHX1BJVk9UX1JPT1Q9eQogQ09ORklHX1JEQVRFPXkKICMgQ09ORklHX1JERVYgaXMgbm90IHNldAogIyBDT05GSUdfUkVBRFBST0ZJTEUgaXMgbm90IHNldAorQ09ORklHX1JFTklDRT15CisjIENPTkZJR19SRVYgaXMgbm90IHNldAogIyBDT05GSUdfUlRDV0FLRSBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1JJUFQgaXMgbm90IHNldAogIyBDT05GSUdfU0NSSVBUUkVQTEFZIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFVEFSQ0ggaXMgbm90IHNldAotQ09ORklHX1NXQVBPTk9GRj15CisjIENPTkZJR19MSU5VWDMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xJTlVYNjQgaXMgbm90IHNldAorIyBDT05GSUdfU0VUUFJJViBpcyBub3Qgc2V0CitDT05GSUdfU1dBUE9OPXkKIENPTkZJR19GRUFUVVJFX1NXQVBPTl9ESVNDQVJEPXkKIENPTkZJR19GRUFUVVJFX1NXQVBPTl9QUkk9eQorQ09ORklHX1NXQVBPRkY9eQogQ09ORklHX1NXSVRDSF9ST09UPXkKKyMgQ09ORklHX1RBU0tTRVQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9UQVNLU0VUX0ZBTkNZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VFVkVOVCBpcyBub3Qgc2V0CiBDT05GSUdfVU1PVU5UPXkKIENPTkZJR19GRUFUVVJFX1VNT1VOVF9BTEw9eQorIyBDT05GSUdfVU5TSEFSRSBpcyBub3Qgc2V0CisjIENPTkZJR19XQUxMIGlzIG5vdCBzZXQKIAogIwogIyBDb21tb24gb3B0aW9ucyBmb3IgbW91bnQvdW1vdW50CkBAIC02MzcsNiArNjc4LDcgQEAKIENPTkZJR19GRUFUVVJFX01PVU5UX0xPT1BfQ1JFQVRFPXkKICMgQ09ORklHX0ZFQVRVUkVfTVRBQl9TVVBQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZPTFVNRUlEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfQkNBQ0hFIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfQlRSRlMgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9FWEZBVCBpcyBub3Qgc2V0CkBAIC02NTYsMTcgKzY5OCwzMyBAQAogIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9ST01GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1ZPTFVNRUlEX1NRVUFTSEZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfU1lTViBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1ZPTFVNRUlEX1VCSUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfVURGIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfWEZTIGlzIG5vdCBzZXQKIAogIwogIyBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcwogIworIyBDT05GSUdfQkVFUCBpcyBub3Qgc2V0CitDT05GSUdfRkVBVFVSRV9CRUVQX0ZSRVE9MAorQ09ORklHX0ZFQVRVUkVfQkVFUF9MRU5HVEhfTVM9MAogIyBDT05GSUdfQ09OU1BZIGlzIG5vdCBzZXQKICMgQ09ORklHX0NST05EIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfQ1JPTkRfRCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0NST05EX0NBTExfU0VORE1BSUwgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfQ1JPTkRfRElSPSIiCisjIENPTkZJR19ERVZGU0QgaXMgbm90IHNldAorIyBDT05GSUdfREVWRlNEX01PRExPQUQgaXMgbm90IHNldAorIyBDT05GSUdfREVWRlNEX0ZHX05QIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFVkZTRF9WRVJCT1NFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfREVWRlMgaXMgbm90IHNldAorIyBDT05GSUdfSERQQVJNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSERQQVJNX0dFVF9JREVOVElUWSBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0hEUEFSTV9IRElPX1NDQU5fSFdJRiBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0hEUEFSTV9IRElPX1VOUkVHSVNURVJfSFdJRiBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0hEUEFSTV9IRElPX0RSSVZFX1JFU0VUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSERQQVJNX0hESU9fVFJJU1RBVEVfSFdJRiBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0hEUEFSTV9IRElPX0dFVFNFVF9ETUEgaXMgbm90IHNldAogIyBDT05GSUdfSTJDR0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ1NFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNEVU1QIGlzIG5vdCBzZXQKQEAgLTY4MiwxOSArNzQwLDE5IEBACiAjIENPTkZJR19GRUFUVVJFX0xFU1NfQVNLX1RFUk1JTkFMIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTEVTU19EQVNIQ01EIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTEVTU19MSU5FTlVNUyBpcyBub3Qgc2V0CisjIENPTkZJR19MU1NDU0kgaXMgbm90IHNldAogIyBDT05GSUdfTkFORFdSSVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX05BTkREVU1QIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBUlRQUk9CRSBpcyBub3Qgc2V0CiBDT05GSUdfUkZLSUxMPXkKICMgQ09ORklHX1NFVFNFUklBTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19UQVNLU0VUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfVEFTS1NFVF9GQU5DWSBpcyBub3Qgc2V0CiAjIENPTkZJR19VQklBVFRBQ0ggaXMgbm90IHNldAogIyBDT05GSUdfVUJJREVUQUNIIGlzIG5vdCBzZXQKICMgQ09ORklHX1VCSU1LVk9MIGlzIG5vdCBzZXQKICMgQ09ORklHX1VCSVJNVk9MIGlzIG5vdCBzZXQKICMgQ09ORklHX1VCSVJTVk9MIGlzIG5vdCBzZXQKICMgQ09ORklHX1VCSVVQREFURVZPTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19XQUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VCSVJFTkFNRSBpcyBub3Qgc2V0CiAjIENPTkZJR19BREpUSU1FWCBpcyBub3Qgc2V0CiAjIENPTkZJR19CQkNPTkZJRyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0NPTVBSRVNTX0JCQ09ORklHIGlzIG5vdCBzZXQKQEAgLTcyOSw3ICs3ODcsNiBAQAogIyBDT05GSUdfSU9OSUNFIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOT1RJRllEIGlzIG5vdCBzZXQKICMgQ09ORklHX0xBU1QgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9MQVNUX1NNQUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTEFTVF9GQU5DWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IRFBBUk0gaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9IRFBBUk1fR0VUX0lERU5USVRZIGlzIG5vdCBzZXQKQEAgLTc2MCwyNCArODE3LDYgQEAKICMKICMgTmV0d29ya2luZyBVdGlsaXRpZXMKICMKLSMgQ09ORklHX05BTUVJRiBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX05BTUVJRl9FWFRFTkRFRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQkRDTElFTlQgaXMgbm90IHNldAotQ09ORklHX05DPXkKLSMgQ09ORklHX05DX1NFUlZFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ19FWFRSQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ18xMTBfQ09NUEFUIGlzIG5vdCBzZXQKLUNPTkZJR19QSU5HPXkKLUNPTkZJR19QSU5HNj15Ci1DT05GSUdfRkVBVFVSRV9GQU5DWV9QSU5HPXkKLUNPTkZJR19XR0VUPXkKLUNPTkZJR19GRUFUVVJFX1dHRVRfU1RBVFVTQkFSPXkKLUNPTkZJR19GRUFUVVJFX1dHRVRfQVVUSEVOVElDQVRJT049eQotQ09ORklHX0ZFQVRVUkVfV0dFVF9MT05HX09QVElPTlM9eQotQ09ORklHX0ZFQVRVUkVfV0dFVF9USU1FT1VUPXkKLSMgQ09ORklHX0ZFQVRVUkVfV0dFVF9PUEVOU1NMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfV0dFVF9TU0xfSEVMUEVSIGlzIG5vdCBzZXQKLSMgQ09ORklHX1dIT0lTIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX0lQVjY9eQogIyBDT05GSUdfRkVBVFVSRV9VTklYX0xPQ0FMIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX1BSRUZFUl9JUFY0X0FERFJFU1M9eQpAQCAtNzg5LDE1ICs4MjgsMTUgQEAKICMgQ09ORklHX0ZFQVRVUkVfQlJDVExfU0hPVyBpcyBub3Qgc2V0CiAjIENPTkZJR19ETlNEIGlzIG5vdCBzZXQKICMgQ09ORklHX0VUSEVSX1dBS0UgaXMgbm90IHNldAotIyBDT05GSUdfRkFLRUlERU5URCBpcyBub3Qgc2V0CiAjIENPTkZJR19GVFBEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfRlRQX1dSSVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfRlRQRF9XUklURSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0ZUUERfQUNDRVBUX0JST0tFTl9MSVNUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfRlRQX0FVVEhFTlRJQ0FUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfRlRQRF9BVVRIRU5USUNBVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19GVFBHRVQgaXMgbm90IHNldAogIyBDT05GSUdfRlRQUFVUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfRlRQR0VUUFVUX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiBDT05GSUdfSE9TVE5BTUU9eQorQ09ORklHX0ROU0RPTUFJTk5BTUU9eQogIyBDT05GSUdfSFRUUEQgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9IVFRQRF9SQU5HRVMgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9IVFRQRF9TRVRVSUQgaXMgbm90IHNldApAQCAtODE4LDExICs4NTcsMTAgQEAKICMgQ09ORklHX0ZFQVRVUkVfSUZDT05GSUdfQlJPQURDQVNUX1BMVVMgaXMgbm90IHNldAogIyBDT05GSUdfSUZFTlNMQVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX0lGUExVR0QgaXMgbm90IHNldAotQ09ORklHX0lGVVBET1dOPXkKK0NPTkZJR19JRlVQPXkKK0NPTkZJR19JRkRPV049eQogQ09ORklHX0lGVVBET1dOX0lGU1RBVEVfUEFUSD0iL3Zhci9ydW4vaWZzdGF0ZSIKIENPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lQPXkKLUNPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lQX0JVSUxUSU49eQotIyBDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JRkNPTkZJR19CVUlMVElOIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lQVjQ9eQogQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSVBWNj15CiBDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9NQVBQSU5HPXkKQEAgLTgzNSwyMiArODczLDMxIEBACiAjIENPTkZJR19GRUFUVVJFX0lORVREX1NVUFBPUlRfQlVJTFRJTl9DSEFSR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5FVERfUlBDIGlzIG5vdCBzZXQKIENPTkZJR19JUD15CisjIENPTkZJR19JUEFERFIgaXMgbm90IHNldAorIyBDT05GSUdfSVBMSU5LIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQUk9VVEUgaXMgbm90IHNldAorIyBDT05GSUdfSVBUVU5ORUwgaXMgbm90IHNldAorIyBDT05GSUdfSVBSVUxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQTkVJR0ggaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfSVBfQUREUkVTUz15CiBDT05GSUdfRkVBVFVSRV9JUF9MSU5LPXkKIENPTkZJR19GRUFUVVJFX0lQX1JPVVRFPXkKIENPTkZJR19GRUFUVVJFX0lQX1JPVVRFX0RJUj0iL2V0Yy9pcHJvdXRlMiIKIENPTkZJR19GRUFUVVJFX0lQX1RVTk5FTD15CiAjIENPTkZJR19GRUFUVVJFX0lQX1JVTEUgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9JUF9TSE9SVF9GT1JNUyBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0lQX05FSUdIIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSVBfUkFSRV9QUk9UT0NPTFMgaXMgbm90IHNldAotIyBDT05GSUdfSVBBRERSIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQTElOSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUFJPVVRFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQVFVOTkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQUlVMRSBpcyBub3Qgc2V0CiAjIENPTkZJR19JUENBTEMgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9JUENBTENfRkFOQ1kgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9JUENBTENfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSVBDQUxDX0ZBTkNZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZBS0VJREVOVEQgaXMgbm90IHNldAorIyBDT05GSUdfTkFNRUlGIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfTkFNRUlGX0VYVEVOREVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05CRENMSUVOVCBpcyBub3Qgc2V0CitDT05GSUdfTkM9eQorIyBDT05GSUdfTkNfU0VSVkVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX05DX0VYVFJBIGlzIG5vdCBzZXQKKyMgQ09ORklHX05DXzExMF9DT01QQVQgaXMgbm90IHNldAogQ09ORklHX05FVFNUQVQ9eQogIyBDT05GSUdfRkVBVFVSRV9ORVRTVEFUX1dJREUgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9ORVRTVEFUX1BSRyBpcyBub3Qgc2V0CkBAIC04NTgsMTMgKzkwNSwxOSBAQAogIyBDT05GSUdfTlRQRCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX05UUERfU0VSVkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTlRQRF9DT05GIGlzIG5vdCBzZXQKK0NPTkZJR19QSU5HPXkKK0NPTkZJR19QSU5HNj15CitDT05GSUdfRkVBVFVSRV9GQU5DWV9QSU5HPXkKICMgQ09ORklHX1BTQ0FOIGlzIG5vdCBzZXQKIENPTkZJR19ST1VURT15CiAjIENPTkZJR19TTEFUVEFDSCBpcyBub3Qgc2V0CisjIENPTkZJR19TU0xfQ0xJRU5UIGlzIG5vdCBzZXQKICMgQ09ORklHX1RDUFNWRCBpcyBub3Qgc2V0CisjIENPTkZJR19VRFBTVkQgaXMgbm90IHNldAogQ09ORklHX1RFTE5FVD15CiAjIENPTkZJR19GRUFUVVJFX1RFTE5FVF9UVFlQRSBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9URUxORVRfQVVUT0xPR0lOPXkKK0NPTkZJR19GRUFUVVJFX1RFTE5FVF9XSURUSD15CiAjIENPTkZJR19URUxORVREIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVEVMTkVURF9TVEFOREFMT05FIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVEVMTkVURF9JTkVURF9XQUlUIGlzIG5vdCBzZXQKQEAgLTg3OSwzMyArOTMyLDQzIEBACiAjIENPTkZJR19GRUFUVVJFX1RGVFBfQkxPQ0tTSVpFIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVEZUUF9QUk9HUkVTU19CQVIgaXMgbm90IHNldAogIyBDT05GSUdfVEZUUF9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfVExTPXkKIENPTkZJR19UUkFDRVJPVVRFPXkKICMgQ09ORklHX1RSQUNFUk9VVEU2IGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVFJBQ0VST1VURV9WRVJCT1NFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfVFJBQ0VST1VURV9TT1VSQ0VfUk9VVEUgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9UUkFDRVJPVVRFX1VTRV9JQ01QIGlzIG5vdCBzZXQKICMgQ09ORklHX1RVTkNUTCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1RVTkNUTF9VRyBpcyBub3Qgc2V0CisjIENPTkZJR19WQ09ORklHIGlzIG5vdCBzZXQKK0NPTkZJR19XR0VUPXkKK0NPTkZJR19GRUFUVVJFX1dHRVRfTE9OR19PUFRJT05TPXkKK0NPTkZJR19GRUFUVVJFX1dHRVRfU1RBVFVTQkFSPXkKK0NPTkZJR19GRUFUVVJFX1dHRVRfQVVUSEVOVElDQVRJT049eQorQ09ORklHX0ZFQVRVUkVfV0dFVF9USU1FT1VUPXkKK0NPTkZJR19GRUFUVVJFX1dHRVRfSFRUUFM9eQorIyBDT05GSUdfRkVBVFVSRV9XR0VUX09QRU5TU0wgaXMgbm90IHNldAorIyBDT05GSUdfV0hPSVMgaXMgbm90IHNldAorIyBDT05GSUdfWkNJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19VREhDUEM2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVURIQ1BDNl9SRkMzNjQ2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVURIQ1BDNl9SRkM0NzA0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVURIQ1BDNl9SRkM0ODMzIGlzIG5vdCBzZXQKIENPTkZJR19VREhDUEQ9eQotIyBDT05GSUdfREhDUFJFTEFZIGlzIG5vdCBzZXQKLUNPTkZJR19EVU1QTEVBU0VTPXkKICMgQ09ORklHX0ZFQVRVUkVfVURIQ1BEX1dSSVRFX0xFQVNFU19FQVJMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1VESENQRF9CQVNFX0lQX09OX01BQyBpcyBub3Qgc2V0CiBDT05GSUdfREhDUERfTEVBU0VTX0ZJTEU9Ii92YXIvbGliL21pc2MvdWRoY3BkLmxlYXNlcyIKK0NPTkZJR19EVU1QTEVBU0VTPXkKKyMgQ09ORklHX0RIQ1BSRUxBWSBpcyBub3Qgc2V0CiBDT05GSUdfVURIQ1BDPXkKIENPTkZJR19GRUFUVVJFX1VESENQQ19BUlBJTkc9eQogQ09ORklHX0ZFQVRVUkVfVURIQ1BDX1NBTklUSVpFT1BUPXkKK0NPTkZJR19VREhDUENfREVGQVVMVF9TQ1JJUFQ9Ii91c3Ivc2hhcmUvdWRoY3BjL2RlZmF1bHQuc2NyaXB0IgogIyBDT05GSUdfRkVBVFVSRV9VREhDUF9QT1JUIGlzIG5vdCBzZXQKIENPTkZJR19VREhDUF9ERUJVRz0wCiAjIENPTkZJR19GRUFUVVJFX1VESENQX1JGQzMzOTcgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9VREhDUF84MDIxUSBpcyBub3Qgc2V0Ci1DT05GSUdfVURIQ1BDX0RFRkFVTFRfU0NSSVBUPSIvdXNyL3NoYXJlL3VkaGNwYy9kZWZhdWx0LnNjcmlwdCIKIENPTkZJR19VREhDUENfU0xBQ0tfRk9SX0JVR0dZX1NFUlZFUlM9ODAKLUNPTkZJR19JRlVQRE9XTl9VREhDUENfQ01EX09QVElPTlM9Ii1SIC1uIgotIyBDT05GSUdfVURQU1ZEIGlzIG5vdCBzZXQKLSMgQ09ORklHX1ZDT05GSUcgaXMgbm90IHNldAotIyBDT05GSUdfWkNJUCBpcyBub3Qgc2V0CitDT05GSUdfSUZVUERPV05fVURIQ1BDX0NNRF9PUFRJT05TPSItUiAtYiIKIAogIwogIyBQcmludCBVdGlsaXRpZXMKQEAgLTkxOCwyNiArOTgxLDQ1IEBACiAjIE1haWwgVXRpbGl0aWVzCiAjCiAjIENPTkZJR19NQUtFTUlNRSBpcyBub3Qgc2V0Ci1DT05GSUdfRkVBVFVSRV9NSU1FX0NIQVJTRVQ9IiIKICMgQ09ORklHX1BPUE1BSUxESVIgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9QT1BNQUlMRElSX0RFTElWRVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1JFRk9STUlNRSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1JFRk9STUlNRV9DT01QQVQgaXMgbm90IHNldAogIyBDT05GSUdfU0VORE1BSUwgaXMgbm90IHNldAorQ09ORklHX0ZFQVRVUkVfTUlNRV9DSEFSU0VUPSIiCiAKICMKICMgUHJvY2VzcyBVdGlsaXRpZXMKICMKK0NPTkZJR19GUkVFPXkKK0NPTkZJR19GVVNFUj15CiAjIENPTkZJR19JT1NUQVQgaXMgbm90IHNldAorQ09ORklHX0tJTEw9eQorQ09ORklHX0tJTExBTEw9eQorIyBDT05GSUdfS0lMTEFMTDUgaXMgbm90IHNldAogIyBDT05GSUdfTFNPRiBpcyBub3Qgc2V0CiAjIENPTkZJR19NUFNUQVQgaXMgbm90IHNldAogIyBDT05GSUdfTk1FVEVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BHUkVQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BLSUxMIGlzIG5vdCBzZXQKK0NPTkZJR19QSURPRj15CisjIENPTkZJR19GRUFUVVJFX1BJRE9GX1NJTkdMRSBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1BJRE9GX09NSVQgaXMgbm90IHNldAogIyBDT05GSUdfUE1BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19QT1dFUlRPUCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1BPV0VSVE9QX0lOVEVSQUNUSVZFIGlzIG5vdCBzZXQKK0NPTkZJR19QUz15CitDT05GSUdfRkVBVFVSRV9QU19XSURFPXkKK0NPTkZJR19GRUFUVVJFX1BTX0xPTkc9eQorIyBDT05GSUdfRkVBVFVSRV9QU19USU1FIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfUFNfVU5VU1VBTF9TWVNURU1TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfUFNfQURESVRJT05BTF9DT0xVTU5TIGlzIG5vdCBzZXQKICMgQ09ORklHX1BTVFJFRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QV0RYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NNRU1DQVAgaXMgbm90IHNldAorQ09ORklHX0JCX1NZU0NUTD15CiBDT05GSUdfVE9QPXkKKyMgQ09ORklHX0ZFQVRVUkVfVE9QX0lOVEVSQUNUSVZFIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX1RPUF9DUFVfVVNBR0VfUEVSQ0VOVEFHRT15CiBDT05GSUdfRkVBVFVSRV9UT1BfQ1BVX0dMT0JBTF9QRVJDRU5UUz15CiAjIENPTkZJR19GRUFUVVJFX1RPUF9TTVBfQ1BVIGlzIG5vdCBzZXQKQEAgLTk0Niw4NCArMTAyOCw2OSBAQAogIyBDT05GSUdfRkVBVFVSRV9UT1BNRU0gaXMgbm90IHNldAogQ09ORklHX1VQVElNRT15CiAjIENPTkZJR19GRUFUVVJFX1VQVElNRV9VVE1QX1NVUFBPUlQgaXMgbm90IHNldAotQ09ORklHX0ZSRUU9eQotQ09ORklHX0ZVU0VSPXkKLUNPTkZJR19LSUxMPXkKLUNPTkZJR19LSUxMQUxMPXkKLSMgQ09ORklHX0tJTExBTEw1IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BHUkVQIGlzIG5vdCBzZXQKLUNPTkZJR19QSURPRj15Ci0jIENPTkZJR19GRUFUVVJFX1BJRE9GX1NJTkdMRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1BJRE9GX09NSVQgaXMgbm90IHNldAotIyBDT05GSUdfUEtJTEwgaXMgbm90IHNldAotQ09ORklHX1BTPXkKLUNPTkZJR19GRUFUVVJFX1BTX1dJREU9eQotQ09ORklHX0ZFQVRVUkVfUFNfTE9ORz15Ci0jIENPTkZJR19GRUFUVVJFX1BTX1RJTUUgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9QU19BRERJVElPTkFMX0NPTFVNTlMgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9QU19VTlVTVUFMX1NZU1RFTVMgaXMgbm90IHNldAotQ09ORklHX1JFTklDRT15Ci1DT05GSUdfQkJfU1lTQ1RMPXkKLSMgQ09ORklHX0ZFQVRVUkVfU0hPV19USFJFQURTIGlzIG5vdCBzZXQKIENPTkZJR19XQVRDSD15CisjIENPTkZJR19GRUFUVVJFX1NIT1dfVEhSRUFEUyBpcyBub3Qgc2V0CiAKICMKICMgUnVuaXQgVXRpbGl0aWVzCiAjCi0jIENPTkZJR19SVU5TViBpcyBub3Qgc2V0Ci0jIENPTkZJR19SVU5TVkRJUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1JVTlNWRElSX0xPRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TViBpcyBub3Qgc2V0Ci1DT05GSUdfU1ZfREVGQVVMVF9TRVJWSUNFX0RJUj0iIgotIyBDT05GSUdfU1ZMT0dEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NIUFNUIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFVFVJREdJRCBpcyBub3Qgc2V0CiAjIENPTkZJR19FTlZVSURHSUQgaXMgbm90IHNldAogIyBDT05GSUdfRU5WRElSIGlzIG5vdCBzZXQKICMgQ09ORklHX1NPRlRMSU1JVCBpcyBub3Qgc2V0Ci0KLSMKLSMgIFNFTGludXggdXRpbGl0aWVzCi0jCisjIENPTkZJR19SVU5TViBpcyBub3Qgc2V0CisjIENPTkZJR19SVU5TVkRJUiBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1JVTlNWRElSX0xPRyBpcyBub3Qgc2V0CisjIENPTkZJR19TViBpcyBub3Qgc2V0CitDT05GSUdfU1ZfREVGQVVMVF9TRVJWSUNFX0RJUj0iIgorIyBDT05GSUdfU1ZDIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NWTE9HRCBpcyBub3Qgc2V0CiAjIENPTkZJR19DSENPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0NIQ09OX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRVRFTkZPUkNFIGlzIG5vdCBzZXQKICMgQ09ORklHX0dFVFNFQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19MT0FEX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19NQVRDSFBBVEhDT04gaXMgbm90IHNldAotIyBDT05GSUdfUkVTVE9SRUNPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19SVU5DT04gaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9SVU5DT05fTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTElOVVhFTkFCTEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFU1RBVFVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFVEVORk9SQ0UgaXMgbm90IHNldAogIyBDT05GSUdfU0VURklMRVMgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9TRVRGSUxFU19DSEVDS19PUFRJT04gaXMgbm90IHNldAorIyBDT05GSUdfUkVTVE9SRUNPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVRTRUJPT0wgaXMgbm90IHNldAotIyBDT05GSUdfU0VTVEFUVVMgaXMgbm90IHNldAogCiAjCiAjIFNoZWxscwogIworQ09ORklHX1NIX0lTX0FTSD15CisjIENPTkZJR19TSF9JU19IVVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NIX0lTX05PTkUgaXMgbm90IHNldAorIyBDT05GSUdfQkFTSF9JU19BU0ggaXMgbm90IHNldAorIyBDT05GSUdfQkFTSF9JU19IVVNIIGlzIG5vdCBzZXQKK0NPTkZJR19CQVNIX0lTX05PTkU9eQogQ09ORklHX0FTSD15CitDT05GSUdfQVNIX09QVElNSVpFX0ZPUl9TSVpFPXkKK0NPTkZJR19BU0hfSU5URVJOQUxfR0xPQj15CiBDT05GSUdfQVNIX0JBU0hfQ09NUEFUPXkKLSMgQ09ORklHX0FTSF9JRExFX1RJTUVPVVQgaXMgbm90IHNldAogQ09ORklHX0FTSF9KT0JfQ09OVFJPTD15CiBDT05GSUdfQVNIX0FMSUFTPXkKLUNPTkZJR19BU0hfR0VUT1BUUz15Ci1DT05GSUdfQVNIX0JVSUxUSU5fRUNITz15Ci1DT05GSUdfQVNIX0JVSUxUSU5fUFJJTlRGPXkKLUNPTkZJR19BU0hfQlVJTFRJTl9URVNUPXkKLUNPTkZJR19BU0hfSEVMUD15Ci1DT05GSUdfQVNIX0NNRENNRD15Ci0jIENPTkZJR19BU0hfTUFJTCBpcyBub3Qgc2V0Ci1DT05GSUdfQVNIX09QVElNSVpFX0ZPUl9TSVpFPXkKICMgQ09ORklHX0FTSF9SQU5ET01fU1VQUE9SVCBpcyBub3Qgc2V0CiBDT05GSUdfQVNIX0VYUEFORF9QUk1UPXkKKyMgQ09ORklHX0FTSF9JRExFX1RJTUVPVVQgaXMgbm90IHNldAorIyBDT05GSUdfQVNIX01BSUwgaXMgbm90IHNldAorQ09ORklHX0FTSF9FQ0hPPXkKK0NPTkZJR19BU0hfUFJJTlRGPXkKK0NPTkZJR19BU0hfVEVTVD15CitDT05GSUdfQVNIX0hFTFA9eQorQ09ORklHX0FTSF9HRVRPUFRTPXkKK0NPTkZJR19BU0hfQ01EQ01EPXkKICMgQ09ORklHX0NUVFlIQUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVU0ggaXMgbm90IHNldAogIyBDT05GSUdfSFVTSF9CQVNIX0NPTVBBVCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVVNIX0JSQUNFX0VYUEFOU0lPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19IVVNIX0hFTFAgaXMgbm90IHNldAogIyBDT05GSUdfSFVTSF9JTlRFUkFDVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19IVVNIX1NBVkVISVNUT1JZIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVU0hfSk9CIGlzIG5vdCBzZXQKQEAgLTEwMzQsMTcgKzExMDEsMzAgQEAKICMgQ09ORklHX0hVU0hfRlVOQ1RJT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVU0hfTE9DQUwgaXMgbm90IHNldAogIyBDT05GSUdfSFVTSF9SQU5ET01fU1VQUE9SVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19IVVNIX0VYUE9SVF9OIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVU0hfTU9ERV9YIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfRUNITyBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX1BSSU5URiBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX1RFU1QgaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9IRUxQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfRVhQT1JUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfRVhQT1JUX04gaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9LSUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfV0FJVCBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX1RSQVAgaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9UWVBFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfUkVBRCBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX1NFVCBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX1VOU0VUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfVUxJTUlUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfVU1BU0sgaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9NRU1MRUFLIGlzIG5vdCBzZXQKICMgQ09ORklHX01TSCBpcyBub3Qgc2V0Ci1DT05GSUdfRkVBVFVSRV9TSF9JU19BU0g9eQotIyBDT05GSUdfRkVBVFVSRV9TSF9JU19IVVNIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfU0hfSVNfTk9ORSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0JBU0hfSVNfQVNIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfQkFTSF9JU19IVVNIIGlzIG5vdCBzZXQKLUNPTkZJR19GRUFUVVJFX0JBU0hfSVNfTk9ORT15Ci1DT05GSUdfU0hfTUFUSF9TVVBQT1JUPXkKLSMgQ09ORklHX1NIX01BVEhfU1VQUE9SVF82NCBpcyBub3Qgc2V0CisKKyMKKyMgT3B0aW9ucyBjb21tb24gdG8gYWxsIHNoZWxscworIworQ09ORklHX0ZFQVRVUkVfU0hfTUFUSD15CisjIENPTkZJR19GRUFUVVJFX1NIX01BVEhfNjQgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfU0hfRVhUUkFfUVVJRVQ9eQogIyBDT05GSUdfRkVBVFVSRV9TSF9TVEFOREFMT05FIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfU0hfTk9GT1JLIGlzIG5vdCBzZXQKQEAgLTEwNTMsMTkgKzExMzMsMTcgQEAKICMKICMgU3lzdGVtIExvZ2dpbmcgVXRpbGl0aWVzCiAjCitDT05GSUdfS0xPR0Q9eQorQ09ORklHX0ZFQVRVUkVfS0xPR0RfS0xPR0NUTD15CitDT05GSUdfTE9HR0VSPXkKKyMgQ09ORklHX0xPR1JFQUQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9MT0dSRUFEX1JFRFVDRURfTE9DS0lORyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNMT0dEIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfUk9UQVRFX0xPR0ZJTEUgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9SRU1PVEVfTE9HIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfU1lTTE9HRF9EVVAgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9TWVNMT0dEX0NGRyBpcyBub3Qgc2V0CitDT05GSUdfRkVBVFVSRV9TWVNMT0dEX1JFQURfQlVGRkVSX1NJWkU9MAogIyBDT05GSUdfRkVBVFVSRV9JUENfU1lTTE9HIGlzIG5vdCBzZXQKLSMgQ09ORklHX0xPR1JFQUQgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9MT0dSRUFEX1JFRFVDRURfTE9DS0lORyBpcyBub3Qgc2V0CitDT05GSUdfRkVBVFVSRV9JUENfU1lTTE9HX0JVRkZFUl9TSVpFPTAKICMgQ09ORklHX0ZFQVRVUkVfS01TR19TWVNMT0cgaXMgbm90IHNldAotQ09ORklHX0tMT0dEPXkKLQotIwotIyBrbG9nZCBzaG91bGQgbm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBzeXNsb2cgdG8ga2VybmVsIHByaW50ayBidWZmZXIKLSMKLUNPTkZJR19GRUFUVVJFX0tMT0dEX0tMT0dDVEw9eQotQ09ORklHX0xPR0dFUj15CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2lwX2ZpeF9wcm9ibGVtX29uX21pcHM2NF9uNjRfYmlnX2VuZGlhbl9tdXNsX3N5c3RlbXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2lwX2ZpeF9wcm9ibGVtX29uX21pcHM2NF9uNjRfYmlnX2VuZGlhbl9tdXNsX3N5c3RlbXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxYzU2NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9pcF9maXhfcHJvYmxlbV9vbl9taXBzNjRfbjY0X2JpZ19lbmRpYW5fbXVzbF9zeXN0ZW1zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotRnJvbSA0YWIzNzJkNDlhNmU4MmIwYmYwOTdkZWRiOTZkMjYzMzBjNWYyZDVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3phYm9sY3MgTmFneSA8bnN6QHBvcnQ3MC5uZXQ+Ci1EYXRlOiBTdW4sIDI0IEFwciAyMDE2IDE3OjM5OjAyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlwOiBmaXggcHJvYmxlbSBvbiBtaXBzNjQgbjY0IGJpZyBlbmRpYW4gbXVzbCBzeXN0ZW1zCi0KLVVzZSBkZXNpZ25hdGVkIGluaXRpYWxpemVycyBmb3Igc3RydWN0IG1zZ2hkci4KLVRoZSBzdHJ1Y3QgbGF5b3V0IGlzIG5vbi1wb3J0YWJsZSBhbmQgbXVzbCBsaWJjIGRvZXMgbm90IG1hdGNoIHdoYXQgYnVzeWJveCBleHBlY3RzLgotCi1TaWduZWQtb2ZmLWJ5OiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KLVRlc3RlZC1ieTogV2FsZGVtYXIgQnJvZGtvcmIgPHdieEBvcGVuYWRrLm9yZz4KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTRhYjM3MmQ0OWE2ZTgyYjBiZjA5N2RlZGI5NmQyNjMzMGM1ZjJkNWYKLQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIG5ldHdvcmtpbmcvbGliaXByb3V0ZS9saWJuZXRsaW5rLmMgfCAzNyArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbmV0d29ya2luZy9saWJpcHJvdXRlL2xpYm5ldGxpbmsuYyBiL25ldHdvcmtpbmcvbGliaXByb3V0ZS9saWJuZXRsaW5rLmMKLWluZGV4IGM3NTMzYTQuLmNiYjVkYWYgMTAwNjQ0Ci0tLS0gYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvbGlibmV0bGluay5jCi0rKysgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvbGlibmV0bGluay5jCi1AQCAtNzEsMTEgKzcxLDE1IEBAIGludCBGQVNUX0ZVTkMgcnRubF9kdW1wX3JlcXVlc3Qoc3RydWN0IHJ0bmxfaGFuZGxlICpydGgsIGludCB0eXBlLCB2b2lkICpyZXEsIGluCi0gCXN0cnVjdCBubG1zZ2hkciBubGg7Ci0gCXN0cnVjdCBzb2NrYWRkcl9ubCBubGFkZHI7Ci0gCXN0cnVjdCBpb3ZlYyBpb3ZbMl0gPSB7IHsgJm5saCwgc2l6ZW9mKG5saCkgfSwgeyByZXEsIGxlbiB9IH07Ci0rCS8qIFVzZSBkZXNpZ25hdGVkIGluaXRpYWxpemVycywgc3RydWN0IGxheW91dCBpcyBub24tcG9ydGFibGUgKi8KLSAJc3RydWN0IG1zZ2hkciBtc2cgPSB7Ci0tCQkodm9pZCopJm5sYWRkciwgc2l6ZW9mKG5sYWRkciksCi0tCQlpb3YsICAyLAotLQkJTlVMTCwgMCwKLS0JCTAKLSsJCS5tc2dfbmFtZSA9ICh2b2lkKikmbmxhZGRyLAotKwkJLm1zZ19uYW1lbGVuID0gc2l6ZW9mKG5sYWRkciksCi0rCQkubXNnX2lvdiA9IGlvdiwKLSsJCS5tc2dfaW92bGVuID0gMiwKLSsJCS5tc2dfY29udHJvbCA9IE5VTEwsCi0rCQkubXNnX2NvbnRyb2xsZW4gPSAwLAotKwkJLm1zZ19mbGFncyA9IDAKLSAJfTsKLSAKLSAJbWVtc2V0KCZubGFkZHIsIDAsIHNpemVvZihubGFkZHIpKTsKLUBAIC0xMDQsMTIgKzEwOCwxNSBAQCBzdGF0aWMgaW50IHJ0bmxfZHVtcF9maWx0ZXIoc3RydWN0IHJ0bmxfaGFuZGxlICpydGgsCi0gCXdoaWxlICgxKSB7Ci0gCQlpbnQgc3RhdHVzOwotIAkJc3RydWN0IG5sbXNnaGRyICpoOwotLQotKwkJLyogVXNlIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXJzLCBzdHJ1Y3QgbGF5b3V0IGlzIG5vbi1wb3J0YWJsZSAqLwotIAkJc3RydWN0IG1zZ2hkciBtc2cgPSB7Ci0tCQkJKHZvaWQqKSZubGFkZHIsIHNpemVvZihubGFkZHIpLAotLQkJCSZpb3YsIDEsCi0tCQkJTlVMTCwgMCwKLS0JCQkwCi0rCQkJLm1zZ19uYW1lID0gKHZvaWQqKSZubGFkZHIsCi0rCQkJLm1zZ19uYW1lbGVuID0gc2l6ZW9mKG5sYWRkciksCi0rCQkJLm1zZ19pb3YgPSAmaW92LAotKwkJCS5tc2dfaW92bGVuID0gMSwKLSsJCQkubXNnX2NvbnRyb2wgPSBOVUxMLAotKwkJCS5tc2dfY29udHJvbGxlbiA9IDAsCi0rCQkJLm1zZ19mbGFncyA9IDAKLSAJCX07Ci0gCi0gCQlzdGF0dXMgPSByZWN2bXNnKHJ0aC0+ZmQsICZtc2csIDApOwotQEAgLTIxMSwxMSArMjE4LDE1IEBAIGludCBGQVNUX0ZVTkMgcnRubF90YWxrKHN0cnVjdCBydG5sX2hhbmRsZSAqcnRubCwgc3RydWN0IG5sbXNnaGRyICpuLAotIAlzdHJ1Y3Qgc29ja2FkZHJfbmwgbmxhZGRyOwotIAlzdHJ1Y3QgaW92ZWMgaW92ID0geyAodm9pZCopbiwgbi0+bmxtc2dfbGVuIH07Ci0gCWNoYXIgICAqYnVmID0geG1hbGxvYyg4KjEwMjQpOyAvKiBhdm9pZCBiaWcgc3RhY2sgYnVmZmVyICovCi0rCS8qIFVzZSBkZXNpZ25hdGVkIGluaXRpYWxpemVycywgc3RydWN0IGxheW91dCBpcyBub24tcG9ydGFibGUgKi8KLSAJc3RydWN0IG1zZ2hkciBtc2cgPSB7Ci0tCQkodm9pZCopJm5sYWRkciwgc2l6ZW9mKG5sYWRkciksCi0tCQkmaW92LCAxLAotLQkJTlVMTCwgMCwKLS0JCTAKLSsJCS5tc2dfbmFtZSA9ICh2b2lkKikmbmxhZGRyLAotKwkJLm1zZ19uYW1lbGVuID0gc2l6ZW9mKG5sYWRkciksCi0rCQkubXNnX2lvdiA9ICZpb3YsCi0rCQkubXNnX2lvdmxlbiA9IDEsCi0rCQkubXNnX2NvbnRyb2wgPSBOVUxMLAotKwkJLm1zZ19jb250cm9sbGVuID0gMCwKLSsJCS5tc2dfZmxhZ3MgPSAwCi0gCX07Ci0gCi0gCW1lbXNldCgmbmxhZGRyLCAwLCBzaXplb2YobmxhZGRyKSk7Ci0tLSAKLTIuMy41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvbWFrZWZpbGUtZml4LWJhY2twb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9tYWtlZmlsZS1maXgtYmFja3BvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlOTg0MmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9tYWtlZmlsZS1maXgtYmFja3BvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDllNTgyMGE4NjI3NzgxOGMyZjgzYzExYzJhYTc2ZDdmMGEzODI4M2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotRGF0ZTogU3VuLCAxNCBBdWcgMjAxNiAwMjo1NDoyNyArMDIwMAotU3ViamVjdDogYnVpbGQgc3lzdGVtOiBmaXggaW5jbHVkZS9OVU1fQVBQTEVUUy5oIGdlbmVyYXRpb24KLQotVEJILCBpdCdzIG1vcmUgbGlrZSAid29yayBhcm91bmQgbXkgYmFkIG1ha2VmaWxlLWZ1IiB0aGFuICJmaXgiLi4uCi0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBhcHBsZXRzL0tidWlsZC5zcmMgfCA3ICsrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLWRpZmYgLS1naXQgYS9hcHBsZXRzL0tidWlsZC5zcmMgYi9hcHBsZXRzL0tidWlsZC5zcmMKLWluZGV4IGI2MTIzOTkuLjVjYzE4MjcgMTAwNjQ0Ci0tLS0gYS9hcHBsZXRzL0tidWlsZC5zcmMKLSsrKyBiL2FwcGxldHMvS2J1aWxkLnNyYwotQEAgLTI5LDcgKzI5LDcgQEAgYXBwbGV0cy9hcHBsZXRzLm86IGluY2x1ZGUvdXNhZ2VfY29tcHJlc3NlZC5oIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oCi0gCi0gYXBwbGV0cy9hcHBsZXRfdGFibGVzOiAuY29uZmlnIGluY2x1ZGUvYXBwbGV0cy5oCi0gYXBwbGV0cy91c2FnZTogICAgICAgICAuY29uZmlnIGluY2x1ZGUvYXBwbGV0cy5oCi0tYXBwbGV0cy91c2FnZV9wb2Q6ICAgICAuY29uZmlnIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGluY2x1ZGUvYXBwbGV0cy5oCi0rYXBwbGV0cy91c2FnZV9wb2Q6ICAgICAuY29uZmlnIGluY2x1ZGUvYXBwbGV0cy5oIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGluY2x1ZGUvTlVNX0FQUExFVFMuaAotIAotIHF1aWV0X2NtZF9nZW5fdXNhZ2VfY29tcHJlc3NlZCA9IEdFTiAgICAgaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmgKLSAgICAgICBjbWRfZ2VuX3VzYWdlX2NvbXByZXNzZWQgPSAkKHNyY3RyZWVfc2xhc2gpYXBwbGV0cy91c2FnZV9jb21wcmVzc2VkIGluY2x1ZGUvdXNhZ2VfY29tcHJlc3NlZC5oIGFwcGxldHMKLUBAIC00MCw4ICs0MCw1IEBAIGluY2x1ZGUvdXNhZ2VfY29tcHJlc3NlZC5oOiBhcHBsZXRzL3VzYWdlICQoc3JjdHJlZV9zbGFzaClhcHBsZXRzL3VzYWdlX2NvbXByZXNzCi0gcXVpZXRfY21kX2dlbl9hcHBsZXRfdGFibGVzID0gR0VOICAgICBpbmNsdWRlL2FwcGxldF90YWJsZXMuaAotICAgICAgIGNtZF9nZW5fYXBwbGV0X3RhYmxlcyA9IGFwcGxldHMvYXBwbGV0X3RhYmxlcyBpbmNsdWRlL2FwcGxldF90YWJsZXMuaCBpbmNsdWRlL05VTV9BUFBMRVRTLmgKLSAKLS1pbmNsdWRlL2FwcGxldF90YWJsZXMuaDogYXBwbGV0cy9hcHBsZXRfdGFibGVzCi0tCSQoY2FsbCBjbWQsZ2VuX2FwcGxldF90YWJsZXMpCi0tCi0taW5jbHVkZS9OVU1fQVBQTEVUUy5oOiBhcHBsZXRzL2FwcGxldF90YWJsZXMKLStpbmNsdWRlL2FwcGxldF90YWJsZXMuaCBpbmNsdWRlL05VTV9BUFBMRVRTLmg6IGFwcGxldHMvYXBwbGV0X3RhYmxlcwotIAkkKGNhbGwgY21kLGdlbl9hcHBsZXRfdGFibGVzKQotLS0gCi1jZ2l0IHYwLjEyCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvbXVzbC5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L211c2wuY2ZnCmluZGV4IGZhY2ZlODUuLjZmZmZjOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvbXVzbC5jZmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9tdXNsLmNmZwpAQCAtMiw3ICsyLDYgQEAKICMgQ09ORklHX1NFTElOVVggaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9IQVZFX1JQQyBpcyBub3Qgc2V0CiAjIENPTkZJR19XRVJST1IgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9TWVNURU1EIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVklfUkVHRVhfU0VBUkNIIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBTSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0lORVREX1JQQyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzg1ODA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotcmVxdWlyZSBidXN5Ym94LmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuYnVzeWJveC5uZXQvZG93bmxvYWRzL2J1c3lib3gtJHtQVn0udGFyLmJ6MjtuYW1lPXRhcmJhbGwgXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZmluZC10b3VjaHNjcmVlbi5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWNyb24gXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1odHRwZCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwZCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0LnNjcmlwdCBcCi0gICAgICAgICAgIGZpbGU6Ly9zaW1wbGUuc2NyaXB0IFwKLSAgICAgICAgICAgZmlsZTovL2h3Y2xvY2suc2ggXAotICAgICAgICAgICBmaWxlOi8vbW91bnQuYnVzeWJveCBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2cgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLXN0YXJ0dXAuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5kZWZhdWx0IFwKLSAgICAgICAgICAgZmlsZTovL21kZXYgXAotICAgICAgICAgICBmaWxlOi8vbWRldi5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL21kZXYtbW91bnQuc2ggXAotICAgICAgICAgICBmaWxlOi8vdW1vdW50LmJ1c3lib3ggXAotICAgICAgICAgICBmaWxlOi8vZGVmY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLnNlcnZpY2UuaW4gXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1rbG9nZC5zZXJ2aWNlLmluIFwKLSAgICAgICAgICAgZmlsZTovL2ZhaWxfb25fbm9fbWVkaWEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2luZXRkLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vaW5ldGQgXAotICAgICAgICAgICBmaWxlOi8vbG9naW4tdXRpbGl0aWVzLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9yZWNvZ25pemVfY29ubm1hbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9zcy1tZW51Y29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLUNDLXdoZW4tbGlua2luZy1pbnN0ZWFkLW9mLUxELWFuZC11c2UtQ0ZMQUdTLWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LTEuMjQuMS11bnppcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LTEuMjQuMS11bnppcC1yZWdyZXNzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtMS4yNC4xLXRydW5jYXRlLW9wZW4tbW9kZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZsb2NrLXVwZGF0ZS10aGUtYmVoYXZpb3VyLW9mLWMtcGFyYW1ldGVyLXRvLW1hdGNoLXUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbW91bnQtdmlhLWxhYmVsLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zaGExc3VtLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zaGEyNTZzdW0uY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL2dldG9wdHMuY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3Jlc2l6ZS5jZmcgXAotICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vaW5pdC5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInKSA9PSAnYnVzeWJveCcpXX0gXAotICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vbWRldi5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlcicpID09ICdidXN5Ym94LW1kZXYnKV19IFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jZmcgXAotICAgICAgICAgICBmaWxlOi8vaW5pdHRhYiBcCi0gICAgICAgICAgIGZpbGU6Ly9yY1MgXAotICAgICAgICAgICBmaWxlOi8vcmNLIFwKLSAgICAgICAgICAgZmlsZTovL3J1bmxldmVsIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTIxNDgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMjE0Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0yMTQ3XzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNjMwMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pcF9maXhfcHJvYmxlbV9vbl9taXBzNjRfbjY0X2JpZ19lbmRpYW5fbXVzbF9zeXN0ZW1zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWZpeC1iYWNrcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNlZC1maXgtc2VkLW4tZmx1c2hlcy1wYXR0ZXJuLXNwYWNlLXRlcm1pbmF0ZXMtZWFybHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1rYnVpbGQtcmFjZS1maXgtY29tbWl0LWQ4ZTYxYmIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29tbWl0LWFwcGxldF90YWJsZXMtZml4LWNvbW1pdC0wZGRkYmMxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWxpYmJiLXJhY2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJpcHJvdXRlLWhhbmRsZS10YWJsZS1pZHMtbGFyZ2VyLXRoYW4tMjU1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2lmdXBkb3duLXBhc3MtaW50ZXJmYWNlLWRldmljZS1uYW1lLWZvci1pcHY2LXJvdXRlLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQlVHOTA3MV9idWZmZXJfb3ZlcmZsb3dfYXJwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdGFyLWFkZC1JRl9GRUFUVVJFXy1jaGVja3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pcHJvdXRlLXN1cHBvcnQtc2NvcGUtLi1DbG9zZXMtODU2MS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWlwLWZpeC1hbi1pbXByb3Blci1vcHRpbWl6YXRpb24tcmVxLnIucnRtX3Njb3BlLW1heS0ucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC5jZmcgIgotCi1TUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICJiZTk4YTQwY2FkZjg0Y2UyZDZiMDVmYTQxYTI3NWM2YSIKLVNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjM3ZDAzMTMyY2MwNzg5MzczNjBiMzkyMTcwYjdhMWQwZTViMzIyZWVlOWY1N2MwYjgyMjkyYThiMWYwYWZlM2QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjcuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YTYzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjcuMi5iYgpAQCAtMCwwICsxLDUyIEBACityZXF1aXJlIGJ1c3lib3guaW5jCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5idXN5Ym94Lm5ldC9kb3dubG9hZHMvYnVzeWJveC0ke1BWfS50YXIuYnoyO25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwYy1ub19kZWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maW5kLXRvdWNoc2NyZWVuLnNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtY3JvbiBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWh0dHBkIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdWRoY3BkIFwKKyAgICAgICAgICAgZmlsZTovL2RlZmF1bHQuc2NyaXB0IFwKKyAgICAgICAgICAgZmlsZTovL3NpbXBsZS5zY3JpcHQgXAorICAgICAgICAgICBmaWxlOi8vaHdjbG9jay5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9tb3VudC5idXN5Ym94IFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZyBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2ctc3RhcnR1cC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLmRlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vbWRldiBcCisgICAgICAgICAgIGZpbGU6Ly9tZGV2LmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbWRldi1tb3VudC5zaCBcCisgICAgICAgICAgIGZpbGU6Ly91bW91bnQuYnVzeWJveCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWZjb25maWcgXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1zeXNsb2cuc2VydmljZS5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWtsb2dkLnNlcnZpY2UuaW4gXAorICAgICAgICAgICBmaWxlOi8vZmFpbF9vbl9ub19tZWRpYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vaW5ldGQuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9pbmV0ZCBcCisgICAgICAgICAgIGZpbGU6Ly9sb2dpbi11dGlsaXRpZXMuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3JlY29nbml6ZV9jb25ubWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWNyb3NzLW1lbnVjb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtQ0Mtd2hlbi1saW5raW5nLWluc3RlYWQtb2YtTEQtYW5kLXVzZS1DRkxBR1MtYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21vdW50LXZpYS1sYWJlbC5jZmcgXAorICAgICAgICAgICBmaWxlOi8vc2hhMXN1bS5jZmcgXAorICAgICAgICAgICBmaWxlOi8vc2hhMjU2c3VtLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9nZXRvcHRzLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9yZXNpemUuY2ZnIFwKKyAgICAgICAgICAgJHtAWyIiLCAiZmlsZTovL2luaXQuY2ZnIl1bKGQuZ2V0VmFyKCdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyJykgPT0gJ2J1c3lib3gnKV19IFwKKyAgICAgICAgICAgJHtAWyIiLCAiZmlsZTovL21kZXYuY2ZnIl1bKGQuZ2V0VmFyKCdWSVJUVUFMLVJVTlRJTUVfZGV2X21hbmFnZXInKSA9PSAnYnVzeWJveC1tZGV2JyldfSBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL2luaXR0YWIgXAorICAgICAgICAgICBmaWxlOi8vcmNTIFwKKyAgICAgICAgICAgZmlsZTovL3JjSyBcCisgICAgICAgICAgIGZpbGU6Ly9ydW5sZXZlbCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1saWJiYi1yYWNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDExLTUzMjUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTU4NzMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1DVkUtMjAxNy0xNjU0NC5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLmNmZyAiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjQ3NjE4NmY0YmFiODE3ODFkYWIyMzY5YmZkNDI3MzRlIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiOWQ0YmU1MTZiNjFlNjQ4MGYxNTZiMTFlYjQyNTc3YTEzNTI5Zjc1ZDMzODM4NTBiYjc1YzUwYzI4NWRlNjNkZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL21hbi1kZWNvdXBsZS1tYW5wYWdlcy1mcm9tLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjODk2YTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIGI0ZDI1ODYyOWYwOTAwNjY3ODNjM2I0YzkxYjQwZjYzYjlkMGEyOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgOCBGZWIgMjAxNSAxNjo1MTo1NyAtMDUwMAotU3ViamVjdDogW1BBVENIXSBtYW46IGRlY291cGxlIG1hbnBhZ2VzIGZyb20gYnVpbGQKLQotVGhlIHVzZSBvZiAiaGVscDJtYW4iIGRvZXNuJ3Qgd29yayBhdCBhbGwgZm9yIGNyb3NzIGNvbXBpbGUsIGluCi1hZGRpdGlvbiB0byB0aGUgZXh0cmEgcmVxdWlyZW1lbnQgb2YgcGVybCBpdCBhZGRzLgotCi1KdXN0IGRlY291cGxlIHRoZSBtYW5wYWdlcyBmcm9tIHRoZSBidWlsZCBpbiBvcmRlciB0byBwYXZlIHRoZSB3YXkgZm9yCi1pbXBvcnRpbmcgcHJlYnVpbHQgbWFucGFnZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiBhIGNyb3NzIGJ1aWxkIHNpdHVhdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSBkb2Vzbid0IGNhcmUgYWJvdXQgeC1jb21waWxlIGNhc2UuXQotU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBmYjRhZjI3Li43NTc2YjJjIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjE0LDUgKzIxNCw0IEBAIEFNX0NQUEZMQUdTID0gLUlsaWIgLUkkKHRvcF9zcmNkaXIpL2xpYiAtSXNyYyAtSSQodG9wX3NyY2Rpcikvc3JjCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2xpYi9sb2NhbC5tawotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvbG9jYWwubWsKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvZG9jL2xvY2FsLm1rCi0taW5jbHVkZSAkKHRvcF9zcmNkaXIpL21hbi9sb2NhbC5tawotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS90ZXN0cy9sb2NhbC5tawotLS0gCi0yLjIuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE4NzQwYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIGJhc2ljIGZpbGUsIHNoZWxsIGFuZCB0ZXh0IG1hbmlwdWxhdGlvbiB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgR05VIENvcmUgVXRpbGl0aWVzIHByb3ZpZGUgdGhlIGJhc2ljIGZpbGUsIHNoZWxsIGFuZCB0ZXh0IFwKLW1hbmlwdWxhdGlvbiB1dGlsaXRpZXMuIFRoZXNlIGFyZSB0aGUgY29yZSB1dGlsaXRpZXMgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIGV4aXN0IG9uIFwKLWV2ZXJ5IHN5c3RlbS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvY29yZXV0aWxzLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2RlYmJ1Z3MuZ251Lm9yZy9jb3JldXRpbHMiCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2xzLmM7YmVnaW5saW5lPTU7ZW5kbGluZT0xNjttZDU9MzhiNzk3ODVjYTg4NTM3Yjc1ODcxNzgyYTJhM2M2YjgiCi1ERVBFTkRTID0gImdtcCBsaWJjYXAiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vY29yZXV0aWxzLyR7QlB9LnRhci54ejtuYW1lPXRhcmJhbGwgXAotICAgICAgICAgICBodHRwOi8vZGlzdGZpbGVzLmdlbnRvby5vcmcvZGlzdGZpbGVzLyR7QlB9LW1hbi50YXIueHo7bmFtZT1tYW5wYWdlcyBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tZGVjb3VwbGUtbWFucGFnZXMtZnJvbS1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtdXNyLWxvY2FsLWxpYi1mcm9tLW00LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1zZWxpbnV4LWZsYXNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1scy1vdXRwdXQtcXVvdGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxvY2FsLm1rLWZpeC1jcm9zcy1jb21waWxpbmctcHJvYmxlbS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICI1MDI3OTU3OTJjMjEyOTMyMzY1ZTA3Nzk0NmQzNTNhZSIKLVNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjg4OTFkMzQ5ZWU4N2I5ZmY3ODcwZjUyYjZkOTMxMmE5ZGI2NzJkMjQzOWQyODliYzU3MDg0NzcxY2EyMTY1NmIiCi1TUkNfVVJJW21hbnBhZ2VzLm1kNXN1bV0gPSAiMWIzMWE2ODhkMDY3NjRlMGU5NGFhMjBiN2VhMDgyMjIiCi1TUkNfVVJJW21hbnBhZ2VzLnNoYTI1NnN1bV0gPSAiMWY2MTU4MTllOTE2NzY0NmM3MzE2MzZiNmM1ZWNiZTc5ODM3ZTgyYTE4NjY2YmFjYzgyYzNmYjFkZmNmYWVhMyIKLQotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtZ21wIgotRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCA9ICItLWVuYWJsZS1pbnN0YWxsLXByb2dyYW09YXJjaCAtLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9IgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLWVuYWJsZS1pbnN0YWxsLXByb2dyYW09YXJjaCIKLQotIyBhY2wgYW5kIHhhdHRyIGFyZSBub3QgZGVmYXVsdCBmZWF0dXJlcwotIwotUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHhhdHRyJywgZCl9IFwKLSIKLQotIyBUaGUgbGliL29lL3BhdGgucHkgcmVxdWlyZXMgeGF0dHIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAieGF0dHIiCi0KLSMgd2l0aCwgd2l0aG91dCwgZGVwZW5kcywgcmRlcGVuZHMKLSMKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wsIgotUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgotCi0jIFsgZGYgbWt0ZW1wIGJhc2U2NCBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCi1iaW5kaXJfcHJvZ3MgPSAiYXJjaCBiYXNlbmFtZSBjaGNvbiBja3N1bSBjb21tIGNzcGxpdCBjdXQgZGlyIGRpcmNvbG9ycyBkaXJuYW1lIGR1IFwKLSAgICAgICAgICAgICAgICBlbnYgZXhwYW5kIGV4cHIgZmFjdG9yIGZtdCBmb2xkIGdyb3VwcyBoZWFkIGhvc3RpZCBpZCBpbnN0YWxsIFwKLSAgICAgICAgICAgICAgICBqb2luIGxpbmsgbG9nbmFtZSBtZDVzdW0gbWtmaWZvIG5pY2Ugbmwgbm9odXAgbnByb2Mgb2QgcGFzdGUgcGF0aGNoayBcCi0gICAgICAgICAgICAgICAgcGlua3kgcHIgcHJpbnRlbnYgcHJpbnRmIHB0eCByZWFkbGluayByZWFscGF0aCBydW5jb24gc2VxIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBcCi0gICAgICAgICAgICAgICAgc2hhMzg0c3VtIHNoYTUxMnN1bSBzaHJlZCBzaHVmIHNvcnQgc3BsaXQgc3RkYnVmIHN1bSB0YWMgdGFpbCB0ZWUgdGVzdCB0aW1lb3V0XAotICAgICAgICAgICAgICAgIHRyIHRydW5jYXRlIHRzb3J0IHR0eSB1bmV4cGFuZCB1bmlxIHVubGluayB1cHRpbWUgdXNlcnMgdmRpciB3YyB3aG8gd2hvYW1pIHllcyIKLQotIyBob3N0bmFtZSBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCi1iYXNlX2JpbmRpcl9wcm9ncyA9ICJjYXQgY2hncnAgY2htb2QgY2hvd24gY3AgZGF0ZSBkZCBlY2hvIGZhbHNlIGtpbGwgbG4gbHMgbWtkaXIgXAotICAgICAgICAgICAgICAgICAgICAgbWtub2QgbXYgcHdkIHJtIHJtZGlyIHNsZWVwIHN0dHkgc3luYyB0b3VjaCB0cnVlIHVuYW1lIHN0YXQiCi0KLXNiaW5kaXJfcHJvZ3M9ICJjaHJvb3QiCi0KLSMgTGV0IGFjbG9jYWwgdXNlIHRoZSByZWxhdGl2ZSBwYXRoIGZvciB0aGUgbTQgZmlsZSByYXRoZXIgdGhhbiB0aGUKLSMgYWJzb2x1dGUgc2luY2UgY29yZXV0aWxzIGhhcyBhIGxvdCBvZiBtNCBmaWxlcywgb3RoZXJ3aXNlIHRoZXJlIG1pZ2h0Ci0jIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGl0IGlzIGJ1aWx0IGluIGEgbG9uZy9kZWVwCi0jIGRpcmVjdG9yeS4KLWFjcGF0aHMgPSAiLUkgLi9tNCIKLQotIyBEZWFsIHdpdGggYSBzZXBhcmF0ZSBidWlsZGRpciBmYWlsdXJlIGlmIHNyYyBkb2Vzbid0IGV4aXN0IHdoZW4gY3JlYXRpbmcgdmVyc2lvbi5jL3ZlcnNpb24uaAotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLQlta2RpciAtcCAke0J9L3NyYwotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCSMgcmVtb3ZlIGdyb3VwcyB0byBmaXggY29uZmxpY3Qgd2l0aCBzaGFkb3ctbmF0aXZlCi0Jcm0gLWYgJHtEfSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9ncm91cHMKLQkjIFRoZSByZXR1cm4gaXMgYSBtdXN0IHNpbmNlIG5hdGl2ZSBkb2Vzbid0IG5lZWQgdGhlCi0JIyBkb19pbnN0YWxsX2FwcGVuZCgpIGluIHRoZSBiZWxvdy4KLQlyZXR1cm4KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JZm9yIGkgaW4gZGYgbWt0ZW1wIGJhc2U2NDsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQotCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQlbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2VfYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiYXNlX2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCi0KLQlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0JWyAiJHtzYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke3NiaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke3NiaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQotCi0JIyBbIHJlcXVpcmVzIHNwZWNpYWwgaGFuZGxpbmcgYmVjYXVzZSBbLmNvcmV1dGlscyB3aWxsIGNhdXNlIHRoZSBzZWQgc3R1ZmYKLQkjIGluIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgdG8gZmFpbCwgdGhlcmVmb3JlIHVzZSBsYnJhY2tldCAtIHRoZSBuYW1lIHVzZWQKLQkjIGZvciB0aGUgYWN0dWFsIHNvdXJjZSBmaWxlLgotCW12ICR7RH0ke2JpbmRpcn0vWyAke0R9JHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfQotCi0JIyBwcmVidWlsdCBtYW4gcGFnZXMKLQlpbnN0YWxsIC1kICR7RH0vJHttYW5kaXJ9L21hbjEKLQlpbnN0YWxsIC10ICR7RH0vJHttYW5kaXJ9L21hbjEgJHtTfS9tYW4vKi4xCi0JIyBwcmVidWlsdCBtYW4gcGFnZXMgZG9uJ3QgZG8gYSBzZXBhcmF0ZSBtYW4gcGFnZSBmb3IgWyB2cyB0ZXN0LgotCSMgc2VlIGNvbW1lbnQgYWJvdmUgci5lLiBzZWQgYW5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke0R9JHttYW5kaXJ9L21hbjEvdGVzdC4xICR7RH0ke21hbmRpcn0vbWFuMS9sYnJhY2tldC4xLiR7QlBOfQotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAibGJyYWNrZXQgJHtiaW5kaXJfcHJvZ3N9ICR7YmFzZV9iaW5kaXJfcHJvZ3N9ICR7c2JpbmRpcl9wcm9nc30gYmFzZTY0IG1rdGVtcCBkZiIKLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJiYXNlNjQuMSBta3RlbXAuMSBkZi4xIGxicmFja2V0LjEgZ3JvdXBzLjEga2lsbC4xIHVwdGltZS4xIHN0YXQuMSAgaG9zdG5hbWUuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2hvc3RuYW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL2hvc3RuYW1lLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtiYXNlNjRdID0gIiR7YmFzZV9iaW5kaXJ9L2Jhc2U2NCIKLUFMVEVSTkFUSVZFX1RBUkdFVFtiYXNlNjRdID0gIiR7YmluZGlyfS9iYXNlNjQuJHtCUE59IgotQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NC4xXSA9ICIke21hbmRpcn0vbWFuMS9iYXNlNjQuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW21rdGVtcF0gPSAiJHtiYXNlX2JpbmRpcn0vbWt0ZW1wIgotQUxURVJOQVRJVkVfVEFSR0VUW21rdGVtcF0gPSAiJHtiaW5kaXJ9L21rdGVtcC4ke0JQTn0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wLjFdID0gIiR7bWFuZGlyfS9tYW4xL21rdGVtcC4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZGZdID0gIiR7YmFzZV9iaW5kaXJ9L2RmIgotQUxURVJOQVRJVkVfVEFSR0VUW2RmXSA9ICIke2JpbmRpcn0vZGYuJHtCUE59IgotQUxURVJOQVRJVkVfTElOS19OQU1FW2RmLjFdID0gIiR7bWFuZGlyfS9tYW4xL2RmLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtsYnJhY2tldF0gPSAiJHtiaW5kaXJ9L1siCi1BTFRFUk5BVElWRV9UQVJHRVRbbGJyYWNrZXRdID0gIiR7YmluZGlyfS9sYnJhY2tldC4ke0JQTn0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbGJyYWNrZXQuMV0gPSAiJHttYW5kaXJ9L21hbjEvbGJyYWNrZXQuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2dyb3Vwcy4xXSA9ICIke21hbmRpcn0vbWFuMS9ncm91cHMuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt1cHRpbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXB0aW1lLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdC4xXSA9ICIke21hbmRpcn0vbWFuMS9zdGF0LjEiCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLQlmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9iaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgotCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2VfYmluZGlyJyksIHByb2cpKQotCi0JZm9yIHByb2cgaW4gZC5nZXRWYXIoJ3NiaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgotCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ3NiaW5kaXInKSwgcHJvZykpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiOGFjYzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI5LmJiCkBAIC0wLDAgKzEsMTMzIEBACitTVU1NQVJZID0gIlRoZSBiYXNpYyBmaWxlLCBzaGVsbCBhbmQgdGV4dCBtYW5pcHVsYXRpb24gdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiVGhlIEdOVSBDb3JlIFV0aWxpdGllcyBwcm92aWRlIHRoZSBiYXNpYyBmaWxlLCBzaGVsbCBhbmQgdGV4dCBcCittYW5pcHVsYXRpb24gdXRpbGl0aWVzLiBUaGVzZSBhcmUgdGhlIGNvcmUgdXRpbGl0aWVzIHdoaWNoIGFyZSBleHBlY3RlZCB0byBleGlzdCBvbiBcCitldmVyeSBzeXN0ZW0uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2NvcmV1dGlscy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9kZWJidWdzLmdudS5vcmcvY29yZXV0aWxzIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9scy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTU7bWQ1PTFjM2Y5NDExZTE4NDJhMDYyY2U1Y2U5MjEwYmVlZTBlIgorREVQRU5EUyA9ICJnbXAgbGliY2FwIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2NvcmV1dGlscy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXVzci1sb2NhbC1saWItZnJvbS1tNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtc2VsaW51eC1mbGFzay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdW5hbWUtcmVwb3J0LXByb2Nlc3Nvci1hbmQtaGFyZHdhcmUtY29ycmVjdGx5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtbHMtb3V0cHV0LXF1b3RpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sb2NhbC5tay1maXgtY3Jvc3MtY29tcGlsaW5nLXByb2JsZW0ucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjk2MGNmZTc1YTQyYzk5MDdjNzE0MzlmOGViNDM2MzAzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyZDBmYTFjMzExY2FjZWZhODk4NTNiZGI1M2M2MmY0MTEwY2RmZGEzODIwMzQ2YjU5Y2JkMDk4ZjQwZjk1NWUiCisKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWdtcCIKK0VYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgPSAiLS1lbmFibGUtaW5zdGFsbC1wcm9ncmFtPWFyY2gsaG9zdG5hbWUgLS1saWJleGVjZGlyPSR7bGliZGlyfSIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS1lbmFibGUtaW5zdGFsbC1wcm9ncmFtPWFyY2giCisKKyMgYWNsIGFuZCB4YXR0ciBhcmUgbm90IGRlZmF1bHQgZmVhdHVyZXMKKyMKK1BBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCB4YXR0cicsIGQpfSBcCisiCisKKyMgVGhlIGxpYi9vZS9wYXRoLnB5IHJlcXVpcmVzIHhhdHRyCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gInhhdHRyIgorCisjIHdpdGgsIHdpdGhvdXQsIGRlcGVuZHMsIHJkZXBlbmRzCisjCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKK1BBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKK1BBQ0tBR0VDT05GSUdbc2luZ2xlLWJpbmFyeV0gPSAiLS1lbmFibGUtc2luZ2xlLWJpbmFyeSwtLWRpc2FibGUtc2luZ2xlLWJpbmFyeSwsIgorCisjIFsgZGYgbWt0ZW1wIGJhc2U2NCBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCitiaW5kaXJfcHJvZ3MgPSAiYXJjaCBiYXNlbmFtZSBjaGNvbiBja3N1bSBjb21tIGNzcGxpdCBjdXQgZGlyIGRpcmNvbG9ycyBkaXJuYW1lIGR1IFwKKyAgICAgICAgICAgICAgICBlbnYgZXhwYW5kIGV4cHIgZmFjdG9yIGZtdCBmb2xkIGdyb3VwcyBoZWFkIGhvc3RpZCBpZCBpbnN0YWxsIFwKKyAgICAgICAgICAgICAgICBqb2luIGxpbmsgbG9nbmFtZSBtZDVzdW0gbWtmaWZvIG5pY2Ugbmwgbm9odXAgbnByb2Mgb2QgcGFzdGUgcGF0aGNoayBcCisgICAgICAgICAgICAgICAgcGlua3kgcHIgcHJpbnRlbnYgcHJpbnRmIHB0eCByZWFkbGluayByZWFscGF0aCBydW5jb24gc2VxIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBcCisgICAgICAgICAgICAgICAgc2hhMzg0c3VtIHNoYTUxMnN1bSBzaHJlZCBzaHVmIHNvcnQgc3BsaXQgc3RkYnVmIHN1bSB0YWMgdGFpbCB0ZWUgdGVzdCB0aW1lb3V0XAorICAgICAgICAgICAgICAgIHRyIHRydW5jYXRlIHRzb3J0IHR0eSB1bmV4cGFuZCB1bmlxIHVubGluayB1cHRpbWUgdXNlcnMgdmRpciB3YyB3aG8gd2hvYW1pIHllcyIKKworIyBob3N0bmFtZSBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCitiYXNlX2JpbmRpcl9wcm9ncyA9ICJjYXQgY2hncnAgY2htb2QgY2hvd24gY3AgZGF0ZSBkZCBlY2hvIGZhbHNlIGhvc3RuYW1lIGtpbGwgbG4gbHMgbWtkaXIgXAorICAgICAgICAgICAgICAgICAgICAgbWtub2QgbXYgcHdkIHJtIHJtZGlyIHNsZWVwIHN0dHkgc3luYyB0b3VjaCB0cnVlIHVuYW1lIHN0YXQiCisKK3NiaW5kaXJfcHJvZ3M9ICJjaHJvb3QiCisKKyMgTGV0IGFjbG9jYWwgdXNlIHRoZSByZWxhdGl2ZSBwYXRoIGZvciB0aGUgbTQgZmlsZSByYXRoZXIgdGhhbiB0aGUKKyMgYWJzb2x1dGUgc2luY2UgY29yZXV0aWxzIGhhcyBhIGxvdCBvZiBtNCBmaWxlcywgb3RoZXJ3aXNlIHRoZXJlIG1pZ2h0CisjIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGl0IGlzIGJ1aWx0IGluIGEgbG9uZy9kZWVwCisjIGRpcmVjdG9yeS4KK2FjcGF0aHMgPSAiLUkgLi9tNCIKKworIyBEZWFsIHdpdGggYSBzZXBhcmF0ZSBidWlsZGRpciBmYWlsdXJlIGlmIHNyYyBkb2Vzbid0IGV4aXN0IHdoZW4gY3JlYXRpbmcgdmVyc2lvbi5jL3ZlcnNpb24uaAorZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKKwlta2RpciAtcCAke0J9L3NyYworfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCSMgcmVtb3ZlIGdyb3VwcyB0byBmaXggY29uZmxpY3Qgd2l0aCBzaGFkb3ctbmF0aXZlCisJcm0gLWYgJHtEfSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9ncm91cHMKKwkjIFRoZSByZXR1cm4gaXMgYSBtdXN0IHNpbmNlIG5hdGl2ZSBkb2Vzbid0IG5lZWQgdGhlCisJIyBkb19pbnN0YWxsX2FwcGVuZCgpIGluIHRoZSBiZWxvdy4KKwlyZXR1cm4KK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJZm9yIGkgaW4gZGYgbWt0ZW1wIGJhc2U2NDsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQorCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwlbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2VfYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiYXNlX2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCisKKwlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisJWyAiJHtzYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke3NiaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke3NiaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQorCisJIyBbIHJlcXVpcmVzIHNwZWNpYWwgaGFuZGxpbmcgYmVjYXVzZSBbLmNvcmV1dGlscyB3aWxsIGNhdXNlIHRoZSBzZWQgc3R1ZmYKKwkjIGluIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgdG8gZmFpbCwgdGhlcmVmb3JlIHVzZSBsYnJhY2tldCAtIHRoZSBuYW1lIHVzZWQKKwkjIGZvciB0aGUgYWN0dWFsIHNvdXJjZSBmaWxlLgorCW12ICR7RH0ke2JpbmRpcn0vWyAke0R9JHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfQorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorIyBNYWtlIGhvc3RuYW1lJ3MgcHJpb3JpdHkgaGlnaGVyIHRoYW4gYnVzeWJveCBidXQgbG93ZXIgdGhhbiBuZXQtdG9vbHMKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW2hvc3RuYW1lXSA9ICI5MCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImxicmFja2V0ICR7YmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSAke3NiaW5kaXJfcHJvZ3N9IGJhc2U2NCBta3RlbXAgZGYiCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiYmFzZTY0LjEgbWt0ZW1wLjEgZGYuMSBncm91cHMuMSBraWxsLjEgdXB0aW1lLjEgc3RhdC4xICBob3N0bmFtZS4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaG9zdG5hbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvaG9zdG5hbWUuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NF0gPSAiJHtiYXNlX2JpbmRpcn0vYmFzZTY0IgorQUxURVJOQVRJVkVfVEFSR0VUW2Jhc2U2NF0gPSAiJHtiaW5kaXJ9L2Jhc2U2NC4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYmFzZTY0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2Jhc2U2NC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wXSA9ICIke2Jhc2VfYmluZGlyfS9ta3RlbXAiCitBTFRFUk5BVElWRV9UQVJHRVRbbWt0ZW1wXSA9ICIke2JpbmRpcn0vbWt0ZW1wLiR7QlBOfSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWt0ZW1wLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtkZl0gPSAiJHtiYXNlX2JpbmRpcn0vZGYiCitBTFRFUk5BVElWRV9UQVJHRVRbZGZdID0gIiR7YmluZGlyfS9kZi4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZGYuMV0gPSAiJHttYW5kaXJ9L21hbjEvZGYuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2xicmFja2V0XSA9ICIke2JpbmRpcn0vWyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtsYnJhY2tldF0gPSAiJHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2dyb3Vwcy4xXSA9ICIke21hbmRpcn0vbWFuMS9ncm91cHMuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1cHRpbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXB0aW1lLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdC4xXSA9ICIke21hbmRpcn0vbWFuMS9zdGF0LjEiCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKwlmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9iaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgorCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2VfYmluZGlyJyksIHByb2cpKQorCisJZm9yIHByb2cgaW4gZC5nZXRWYXIoJ3NiaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgorCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ3NiaW5kaXInKSwgcHJvZykpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzLXdhaXQvZGJ1cy13YWl0X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzLXdhaXQvZGJ1cy13YWl0X2dpdC5iYgppbmRleCA0YWZiOTBjLi5jMjQyOTViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy13YWl0L2RidXMtd2FpdF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMtd2FpdC9kYnVzLXdhaXRfZ2l0LmJiCkBAIC0xMSw3ICsxMSw3IEBACiBQUiA9ICJyMiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliL25vLWV4YW1wbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliL25vLWV4YW1wbGVzLnBhdGNoCmluZGV4IGZiYjQ5NjcuLjMyZTc2MTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYi9uby1leGFtcGxlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWIvbm8tZXhhbXBsZXMucGF0Y2gKQEAgLTUsMTEgKzUsMTMgQEAKIFNpZ25lZC1vZmYtYnk6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CiAKLS0tLSBkYnVzLWdsaWItMC43MC9kYnVzL01ha2VmaWxlLmFtLm9yaWcJMjAwNi0wNy0yMyAxNjowNDo0My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBkYnVzLWdsaWItMC43MC9kYnVzL01ha2VmaWxlLmFtCTIwMDYtMDctMjMgMTY6MDQ6NTIuMDAwMDAwMDAwICswMjAwCitJbmRleDogZGJ1cy1nbGliLTAuMTA4L2RidXMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBkYnVzLWdsaWItMC4xMDgub3JpZy9kYnVzL01ha2VmaWxlLmFtCisrKysgZGJ1cy1nbGliLTAuMTA4L2RidXMvTWFrZWZpbGUuYW0KIEBAIC0xLDQgKzEsNCBAQAogLVNVQkRJUlMgPSAuIGV4YW1wbGVzCiArU1VCRElSUyA9IC4KICAKLSBJTkNMVURFUz0tSSQodG9wX3NyY2RpcikgJChEQlVTX0NGTEFHUykgJChEQlVTX0dMSUJfQ0ZMQUdTKSAkKERCVVNfR0xJQl9UT09MX0NGTEFHUykgLUREQlVTX0NPTVBJTEFUSU9OPTEgLUREQlVTX0xPQ0FMRURJUj1cIiQocHJlZml4KS9AREFUQURJUk5BTUVAL2xvY2FsZVwiIAotIAorIEFNX0NQUEZMQUdTID0gXAorIAktSSQodG9wX3NyY2RpcikJCQkJCQlcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMC4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjIwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWFkYjdkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjIwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJELUJ1cyB0ZXN0IHBhY2thZ2UgKGZvciBELWJ1cyBmdW5jdGlvbmFsaXR5IHRlc3Rpbmcgb25seSkiCi1IT01FUEFHRSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkFGTC0yIHwgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTBkZGVkM2I1ODE0OGYzZjFmZDgwNGIyNjM1NGFmM2UgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGJ1cy9kYnVzLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yMDttZDU9Nzc1NWM5ZDdhYmNjZDVkYmQyNWE2YTk3NDUzOGJiM2MiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCIKLQotUkRFUEVORFNfJHtQTn0gKz0gIm1ha2UiCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbGVhci1ndWlkX2Zyb21fc2VydmVyLWlmLXNlbmRfbmVnb3RpYXRlX3VuaXhfZi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk0Yzk5MWU3NjNkNGY5ZjEzNjkwNDE2YjJkY2Q5NDExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU1NzRiOTc4MGI1NDI1ZmRlNGQ5NzNiYjU5NmU3ZWEwZjA5ZTAwZmUyZWRkNjYyZGE5MDE2ZTk3NmM0NjBiNDgiCi0KLVM9IiR7V09SS0RJUn0vZGJ1cy0ke1BWfSIKLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2RidXM6IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwdGVzdCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotRVhUUkFfT0VDT05GX1ggPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnLS13aXRoLXgnLCAnLS13aXRob3V0LXgnLCBkKX0iCi1FWFRSQV9PRUNPTkZfWF9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LXgiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbW9kdWxhci10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbGVkLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1jaGVja3MgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFzc2VydHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXZlcmJvc2UtbW9kZSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXhtbC1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZG94eWdlbi1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXVkaXQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIgXAotICAgICAgICAgICAgICAgIC0td2l0aC1kYnVzLXRlc3QtZGlyPSR7UFRFU1RfUEFUSH0gXAotICAgICAgICAgICAgICAgICR7RVhUUkFfT0VDT05GX1h9IgotCi1kb19pbnN0YWxsKCkgewotICAgIDoKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlsPSJzaGVsbCBwcmludGYgcmVmcyBzeXNsb2cgbWFyc2hhbCBzeW50YXggY29ycnVwdCBkYnVzLWRhZW1vbiBkYnVzLWRhZW1vbi1lYXZlc2Ryb3AgbG9vcGJhY2sgcmVsYXkiCi0JZm9yIGkgaW4gJGw7IGRvIGluc3RhbGwgJHtCfS90ZXN0Ly5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQotCWw9ImJ1cyBidXMtc3lzdGVtIGJ1cy1sYXVuY2gtaGVscGVyIgotCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vYnVzLy5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQotCWluc3RhbGwgJHtCfS9kYnVzLy5saWJzL3Rlc3QtZGJ1cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JY3AgLXIgJHtCfS90ZXN0L2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotfQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2UwNDdhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTIuMi5iYgpAQCAtMCwwICsxLDgyIEBACitTVU1NQVJZID0gIkQtQnVzIHRlc3QgcGFja2FnZSAoZm9yIEQtYnVzIGZ1bmN0aW9uYWxpdHkgdGVzdGluZyBvbmx5KSIKK0hPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgorCitSREVQRU5EU18ke1BOfSArPSAibWFrZSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzM2MTQ1NmNhZGI5OWFhNjYwMWJlZDViNDg5NjQyNTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjcyYmI1MDkxNzcwYjA0N2M4MTg4YjkyNmQ1ZTYwMzhmYTRmZTY3NDU0ODhiMmFkZDk2YjIzZTJkOWE4M2Q4OCIKKworUz0iJHtXT1JLRElSfS9kYnVzLSR7UFZ9IgorRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZGJ1czoiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHB0ZXN0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitFWFRSQV9PRUNPTkZfWCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICctLXdpdGgteCcsICctLXdpdGhvdXQteCcsIGQpfSIKK0VYVFJBX09FQ09ORl9YX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb2R1bGFyLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsZWQtdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNoZWNrcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtYXNzZXJ0cyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdmVyYm9zZS1tb2RlIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy10ZXN0LWRpcj0ke1BURVNUX1BBVEh9IFwKKyAgICAgICAgICAgICAgICAke0VYVFJBX09FQ09ORl9YfSIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFNZU1RFTUNUTD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kIHgxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0tZGlzYWJsZS1zeXN0ZW1kIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0tZW5hYmxlLXgxMS1hdXRvbGF1bmNoLC0td2l0aG91dC14IC0tZGlzYWJsZS14MTEtYXV0b2xhdW5jaCwgdmlydHVhbC9saWJ4MTEgbGlic20iCitQQUNLQUdFQ09ORklHW3VzZXItc2Vzc2lvbl0gPSAiLS1lbmFibGUtdXNlci1zZXNzaW9uIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0sLS1kaXNhYmxlLXVzZXItc2Vzc2lvbiIKKworZG9faW5zdGFsbCgpIHsKKyAgICA6Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJbD0ic2hlbGwgcHJpbnRmIHJlZnMgc3lzbG9nIG1hcnNoYWwgc3ludGF4IGNvcnJ1cHQgZGJ1cy1kYWVtb24gZGJ1cy1kYWVtb24tZWF2ZXNkcm9wIGxvb3BiYWNrIHJlbGF5IFwKKwkgICB2YXJpYW50IHVpZC1wZXJtaXNzaW9ucyBzeW50YXggc3Bhd24gc2QtYWN0aXZhdGlvbiBuYW1lcyBtb25pdG9yIG1lc3NhZ2UgZmRwYXNzICIKKwlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L3Rlc3QvLmxpYnMvdGVzdC0kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBkb25lCisKKwlsPSJidXMgYnVzLXN5c3RlbSBidXMtbGF1bmNoLWhlbHBlciIKKwlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L2J1cy8ubGlicy90ZXN0LSRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IGRvbmUKKworCWNwIC1yICR7Qn0vdGVzdC9kYXRhICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlpbnN0YWxsICR7Qn0vZGJ1cy8ubGlicy90ZXN0LWRidXMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ly5saWJzCisJY3AgLWEgJHtCfS9kYnVzLy5saWJzLyouc28qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvLmxpYnMKKworCSMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcy4uLgorCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvZGF0YSIgXCggLW5hbWUgKi5zZXJ2aWNlIC1vIC1uYW1lICouY29uZiAtbyAtbmFtZSAiKi5hYXByb2ZpbGUiIFwpIC10eXBlIGYgLWV4ZWMgXAorCQlzZWQgLWkgXAorCQkgLWUgJ3M6JHtCfToke1BURVNUX1BBVEh9OmcnIFwKKwkJIHt9ICsKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCisKK1BSSVZBVEVfTElCU18ke1BOfS1wdGVzdCA9ICJsaWJkYnVzLTEuc28uMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvMDAwMS1jb25maWd1cmUuYWMtZXhwbGljaXRlbHktY2hlY2stc3RkaW50LmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLzAwMDEtY29uZmlndXJlLmFjLWV4cGxpY2l0ZWx5LWNoZWNrLXN0ZGludC5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWFjYjdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvMDAwMS1jb25maWd1cmUuYWMtZXhwbGljaXRlbHktY2hlY2stc3RkaW50LmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDFiZmRlMjIyOTI2YmU2MjRhMzBhNmU0YjJjZGMyYzUwNjRhMzYyOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBJb2FuLUFkcmlhbiBSYXRpdSA8YWRyaWFuLnJhdGl1QG5pLmNvbT4KLURhdGU6IEZyaSwgMjkgSnVsIDIwMTYgMDE6MTk6MzcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBleHBsaWNpdGVseSBjaGVjayBzdGRpbnQuaAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1PdGhlcndpc2UgSEFWRV9TVERJTlRfSCB3aWxsIG5vdCBiZSBkZWZpbmVkIG9yIHRoZSB2YXIgd2lsbCBub3QgYmUKLXBpY2tlZCB1cCBmcm9tIGNhY2hlIHNvIGJ1aWxkcyBjb3VsZCBmYWlsIHdpdGggZXJyb3JzIGxpa2U6Ci18IC4uLy4uL2RidXMtMS4xMC44L2RidXMvZGJ1cy1pbnRlcm5hbHMuaDoyMzk6ODogZXJyb3I6IOKAmHVpbnRwdHJfdOKAmSB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLQotU2lnbmVkLW9mZi1ieTogSW9hbi1BZHJpYW4gUmF0aXUgPGFkcmlhbi5yYXRpdUBuaS5jb20+Ci1bc21jdjogZml4IEF1dG9jb25mIHVuZGVycXVvdGluZ10KLVJldmlld2VkLWJ5OiBTaW1vbiBNY1ZpdHRpZSA8c2ltb24ubWN2aXR0aWVAY29sbGFib3JhLmNvLnVrPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRidXMtMS4xMF0KLQotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggY2Y1YzViOS4uYTIyOGQ2MyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjk5LDYgKzY5OSw4IEBAIEFDX0NIRUNLX0hFQURFUlMoYnl0ZXN3YXAuaCkKLSAKLSBBQ19DSEVDS19IRUFERVJTKHVuaXN0ZC5oKQotIAotK0FDX0NIRUNLX0hFQURFUlMoW3N0ZGludC5oXSkKLSsKLSBBQ19DSEVDS19IRUFERVJTKHdzMnRjcGlwLmgpCi0gCi0gQUNfQ0hFQ0tfSEVBREVSUyhhbGxvY2EuaCkKLS0tIAotMi45LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9vcy10ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9vcy10ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGMyNTdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvb3MtdGVzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLWRidXM6IHJlbW92ZSBidWlsZCBob3N0IHRlc3QgaW4gY29uZmlndXJlIHNjcmlwdAotCi1UaGUgZGJ1cyBidWlsZCB0ZXN0cyB0aGUgYnVpbGQgaG9zdCB0byBkZXRlY3Qgd2hhdCBpbml0c2NyaXB0Ci1lbnZpcm9ubWVudCBpdCBleHBlY3RzLiAgUmVtb3ZlIHRoZSB0ZXN0IGFuZCBzZXQgaXQgdG8gInJlZGhhdCIKLXVuY29uZGl0aW9uYWxseSBhcyB0aGUgb2UtY29yZSBpbml0c2NyaXB0IGhhcyBhIHJlZGhhdC1zdHlsZSBwaWQgZmlsZQotcGF0aC4KLQotU2lnbmVkLW9mZi1ieTogQW5keSBSb3NzIDxhbmR5LnJvc3NAd2luZHJpdmVyLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWRdCi0KLWRpZmYgLXUgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLS0tLSBhL2NvbmZpZ3VyZS5hYwkyMDEyLTA4LTI4IDExOjIzOjQzLjA0MDYwOTg3NCAtMDcwMAotKysrIGIvY29uZmlndXJlLmFjCTIwMTItMDgtMjggMTE6NTQ6MjUuNjAyOTEzOTQ1IC0wNzAwCi1AQCAtMTM0OCwxOSArMTM0OCw4IEBACi0gQVNfQUNfRVhQQU5EKEVYUEFOREVEX0xJQkVYRUNESVIsICIkbGliZXhlY2RpciIpCi0gQVNfQUNfRVhQQU5EKEVYUEFOREVEX0RBVEFESVIsICIkZGF0YWRpciIpCi0gCi0tIyMjIyBDaGVjayBvdXIgb3BlcmF0aW5nIHN5c3RlbQotLW9wZXJhdGluZ19zeXN0ZW09dW5rbm93bgotLWlmIHRlc3QgLWYgL2V0Yy9yZWRoYXQtcmVsZWFzZSB8fCB0ZXN0IC1mICRFWFBBTkRFRF9TWVNDT05GRElSL3JlZGhhdC1yZWxlYXNlIDsgdGhlbgotLSAgIG9wZXJhdGluZ19zeXN0ZW09cmVkaGF0Ci0tZmkKLS0KLS1pZiB0ZXN0IC1mIC9ldGMvc2xhY2t3YXJlLXZlcnNpb24gfHwgdGVzdCAtZiAkRVhQQU5ERURfU1lTQ09ORkRJUi9zbGFja3dhcmUtdmVyc2lvbiA7IHRoZW4KLS0gICBvcGVyYXRpbmdfc3lzdGVtPXNsYWNrd2FyZQotLWZpCi0tCi0taWYgdGVzdCAtZiAvdXNyL2Jpbi9jeWd3aW4xLmRsbCB8fCB0ZXN0IC1mICRFWFBBTkRFRF9CSU5ESVIvY3lnd2luMS5kbGwgOyB0aGVuCi0tICAgb3BlcmF0aW5nX3N5c3RlbT1jeWd3aW4KLS1maQotKyMjIyMgQnVpbGQgaG9zdCB0ZXN0IHJlbW92ZWQgZnJvbSB1cHN0cmVhbSBjb2RlLCBvcGVuZW1iZWRkZWQgaW5pdHNjcmlwdCBpcyByZWRoYXQtbGlrZToKLStvcGVyYXRpbmdfc3lzdGVtPXJlZGhhdAotIAotICMjIyMgU29ydCBvdXQgaW5pdCBzY3JpcHRzCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0CmluZGV4IGM3MmQwODMuLjhhODk3MGUgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0CkBAIC0xLDEwICsxLDI0IEBACiAjIS9iaW4vc2gKIAogb3V0cHV0KCkgewotICBpZiBbICQ/IC1lcSAwIF0KKyAgcmV0Y29kZT0kPworICBpZiBbICRyZXRjb2RlIC1lcSAwIF0KICAgICB0aGVuIGVjaG8gIlBBU1M6ICRpIgotICAgIGVsc2UgZWNobyAiRkFJTDogJGkiCisgIGVsaWYgWyAkcmV0Y29kZSAtZXEgNzcgXQorICAgIHRoZW4gZWNobyAiU0tJUDogJGkiCisgIGVsc2UgZWNobyAiRkFJTDogJGkiCiAgIGZpCiB9CiAKLWZvciBpIGluIGBscyB0ZXN0L3Rlc3QtKmA7IGRvIC4vJGkgLi90ZXN0L2RhdGEgREJVU19URVNUX0hPTUVESVI9Li90ZXN0ID4vZGV2L251bGw7IG91dHB1dDsgZG9uZQorZXhwb3J0IERCVVNfVEVTVF9IT01FRElSPS4vdGVzdAorZXhwb3J0IFhER19SVU5USU1FX0RJUj0uL3Rlc3QKK2V4cG9ydCBMRF9MSUJSQVJZX1BBVEg9L3Vzci9saWIvZGJ1cy10ZXN0L3B0ZXN0L3Rlc3QvLmxpYnMKKworZmlsZXM9YGxzIHRlc3QvdGVzdC0qYAorCitmb3IgaSBpbiAkZmlsZXMKKwlkbworCQkuLyRpIC4vdGVzdC9kYXRhID4vZGV2L251bGwKKwkJb3V0cHV0CisJZG9uZQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZGVkYzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEwLjIwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLVNVTU1BUlkgPSAiRC1CdXMgbWVzc2FnZSBidXMiCi1ERVNDUklQVElPTiA9ICJELUJ1cyBpcyBhIG1lc3NhZ2UgYnVzIHN5c3RlbSwgYSBzaW1wbGUgd2F5IGZvciBhcHBsaWNhdGlvbnMgdG8gdGFsayB0byBvbmUgYW5vdGhlci4gSW4gYWRkaXRpb24gdG8gaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24sIEQtQnVzIGhlbHBzIGNvb3JkaW5hdGUgcHJvY2VzcyBsaWZlY3ljbGU7IGl0IG1ha2VzIGl0IHNpbXBsZSBhbmQgcmVsaWFibGUgdG8gY29kZSBhIFwic2luZ2xlIGluc3RhbmNlXCIgYXBwbGljYXRpb24gb3IgZGFlbW9uLCBhbmQgdG8gbGF1bmNoIGFwcGxpY2F0aW9ucyBhbmQgZGFlbW9ucyBvbiBkZW1hbmQgd2hlbiB0aGVpciBzZXJ2aWNlcyBhcmUgbmVlZGVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKLURFUEVORFMgPSAiZXhwYXQgdmlydHVhbC9saWJpbnRsIgotUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmUgPSAiIgotUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmVzZGsgPSAiIgotUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnJHtQTn0tcHRlc3QnLCAnJywgZCl9IgotQUxMT1dfRU1QVFlfZGJ1cy1wdGVzdCA9ICIxIgotUkRFUEVORFNfZGJ1cy1wdGVzdF9jbGFzcy10YXJnZXQgPSAiZGJ1cy10ZXN0LXB0ZXN0IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kYnVzLTEuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcy10ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWV4cGxpY2l0ZWx5LWNoZWNrLXN0ZGludC5oLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk0Yzk5MWU3NjNkNGY5ZjEzNjkwNDE2YjJkY2Q5NDExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU1NzRiOTc4MGI1NDI1ZmRlNGQ5NzNiYjU5NmU3ZWEwZjA5ZTAwZmUyZWRkNjYyZGE5MDE2ZTk3NmM0NjBiNDgiCi0KLWluaGVyaXQgdXNlcmFkZCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBkYXRlLXJjLmQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJkYnVzLTEiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwMiA1IDMgMiAuIHN0b3AgMjAgMCAxIDYgLiIKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKLX0KLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIG5ldGRldiIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMgXAotICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBtZXNzYWdlYnVzIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgJHtzeXNjb25mZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIgotCi1ERUJJQU5OQU1FXyR7UE59ID0gImRidXMtMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWxpYiIKLQotT0xEUEtHTkFNRSA9ICJkYnVzLXgxMSIKLU9MRFBLR05BTUVfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotIyBmb3IgY29tcGF0aWJpbGl0eQotUlBST1ZJREVTXyR7UE59ID0gIiR7T0xEUEtHTkFNRX0iCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7T0xEUEtHTkFNRX0iCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9kYnVzLWRhZW1vbiogXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXVpZGdlbiBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1jbGVhbnVwLXNvY2tldHMgXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtc2VuZCBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1tb25pdG9yIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWxhdW5jaCBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1ydW4tc2Vzc2lvbiBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11cGRhdGUtYWN0aXZhdGlvbi1lbnZpcm9ubWVudCBcCi0gICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2RidXMqIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0gXAotICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5kIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZCBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSIKLUZJTEVTXyR7UE59LWxpYiA9ICIke2xpYmRpcn0vbGliKi5zby4qIgotUlJFQ09NTUVORFNfJHtQTn0tbGliID0gIiR7UE59IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZGJ1cy0xLjAvaW5jbHVkZSAke2JpbmRpcn0vZGJ1cy10ZXN0LXRvb2wiCi0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCdzeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUnLCcnLGQpfSIKLXBrZ19wb3N0aW5zdF9kYnVzKCkgewotCSMgSWYgYm90aCBzeXN0ZW1kIGFuZCBzeXN2aW5pdCBhcmUgZW5hYmxlZCwgbWFzayB0aGUgZGJ1cy0xIGluaXQgc2NyaXB0Ci0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kIHN5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkJaWYgWyAtbiAiJEQiIF07IHRoZW4KLQkJCU9QVFM9Ii0tcm9vdD0kRCIKLQkJZmkKLQkJc3lzdGVtY3RsICRPUFRTIG1hc2sgZGJ1cy0xLnNlcnZpY2UKLQlmaQotCi0JaWYgWyAteiAiJEQiIF0gJiYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdIDsgdGhlbgotCQkvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLQlmaQotfQotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUteG1sLWRvY3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kb3h5Z2VuLWRvY3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhdWRpdCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGFyZ2VmaWxlIFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1DVEw9JHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZGlzYWJsZS1zZWxpbnV4IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCB4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLWVuYWJsZS14MTEtYXV0b2xhdW5jaCwtLXdpdGhvdXQteCAtLWRpc2FibGUteDExLWF1dG9sYXVuY2gsIHZpcnR1YWwvbGlieDExIGxpYnNtIgotUEFDS0FHRUNPTkZJR1t1c2VyLXNlc3Npb25dID0gIi0tZW5hYmxlLXVzZXItc2Vzc2lvbiAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0tZGlzYWJsZS11c2VyLXNlc3Npb24iCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCQlzZWQgJ3M6QGJpbmRpckA6JHtiaW5kaXJ9OicgPCAke1dPUktESVJ9L2RidXMtMS5pbml0ID4ke1dPUktESVJ9L2RidXMtMS5pbml0LnNoCi0JCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RidXMtMS5pbml0LnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kYnVzLTEKLQlmaQotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJZm9yIGkgaW4gZGJ1cy50YXJnZXQud2FudHMgc29ja2V0cy50YXJnZXQud2FudHMgbXVsdGktdXNlci50YXJnZXQud2FudHM7IGRvIFwKLQkJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vJGk7IGRvbmUKLQkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vYnVzL2RidXMuc2VydmljZSAke0J9L2J1cy9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KLQkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0Ci0JCWxuIC1mcyAuLi9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zb2NrZXRzLnRhcmdldC53YW50cy9kYnVzLnNvY2tldAotCQlsbiAtZnMgLi4vZGJ1cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L211bHRpLXVzZXIudGFyZ2V0LndhbnRzL2RidXMuc2VydmljZQotCWZpCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JZWNobyAiZCBtZXNzYWdlYnVzIG1lc3NhZ2VidXMgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L3J1bi9kYnVzIG5vbmUiIFwKLQkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfZGJ1cwotCi0KLQlta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cwotCi0JY2hvd24gbWVzc2FnZWJ1czptZXNzYWdlYnVzICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCi0KLQljaG93biByb290Om1lc3NhZ2VidXMgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgotCWNobW9kIDQ3NTUgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgotCi0JIyBSZW1vdmUgUmVkIEhhdCBpbml0c2NyaXB0Ci0Jcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQKLQotCSMgUmVtb3ZlIGVtcHR5IHRlc3RleGVjIGRpcmVjdG9yeSBhcyB3ZSBkb24ndCBidWlsZCB0ZXN0cwotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2RidXMtMS4wL3Rlc3QKLQotCSMgUmVtb3ZlIC92YXIvcnVuIGFzIGl0IGlzIGNyZWF0ZWQgb24gc3RhcnR1cAotCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgZm9yIGRidXMtZ2xpYi1uYXRpdmUgaW50cm9zcGVjdGlvbiBnZW5lcmF0aW9uCi0JaW5zdGFsbCAtZCAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzLwotCSMgTi5CLiBpcyBiZWxvdyBpbnN0YWxsIGFjdHVhbGx5IHJlcXVpcmVkPwotCWluc3RhbGwgLW0gMDY0NCBidXMvc2Vzc2lvbi5jb25mICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvc2Vzc2lvbi5jb25mCi0KLQkjIGRidXMtZ2xpYi1uYXRpdmUgYW5kIGRidXMtZ2xpYiBuZWVkIHRoaXMgeG1sIGZpbGUKLQkuL2J1cy9kYnVzLWRhZW1vbiAtLWludHJvc3BlY3QgPiAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzL2RidXMtYnVzLWludHJvc3BlY3QueG1sCi0JCi0JIyBkYnVzLWxhdW5jaCBoYXMgbm8gWCBzdXBwb3J0IHNvIGxldHMgbm90IGluc3RhbGwgaXQgaW4gY2FzZSB0aGUgaG9zdAotCSMgaGFzIGEgbW9yZSBmZWF0dXJlZCBhbmQgdXNlZnVsIHZlcnNpb24KLQlybSAtZiAke0R9JHtiaW5kaXJ9L2RidXMtbGF1bmNoCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlc2RrKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0Ci0JIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgotCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKLQotCSMgUmVtb3ZlIC92YXIvcnVuIHRvIGF2b2lkIFFBIGVycm9yCi0Jcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotfQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1JTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAiYnVpbGQtZGVwcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEyLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI1YjY5YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4yLmJiCkBAIC0wLDAgKzEsMTgxIEBACitTVU1NQVJZID0gIkQtQnVzIG1lc3NhZ2UgYnVzIgorREVTQ1JJUFRJT04gPSAiRC1CdXMgaXMgYSBtZXNzYWdlIGJ1cyBzeXN0ZW0sIGEgc2ltcGxlIHdheSBmb3IgYXBwbGljYXRpb25zIHRvIHRhbGsgdG8gb25lIGFub3RoZXIuIEluIGFkZGl0aW9uIHRvIGludGVycHJvY2VzcyBjb21tdW5pY2F0aW9uLCBELUJ1cyBoZWxwcyBjb29yZGluYXRlIHByb2Nlc3MgbGlmZWN5Y2xlOyBpdCBtYWtlcyBpdCBzaW1wbGUgYW5kIHJlbGlhYmxlIHRvIGNvZGUgYSBcInNpbmdsZSBpbnN0YW5jZVwiIGFwcGxpY2F0aW9uIG9yIGRhZW1vbiwgYW5kIHRvIGxhdW5jaCBhcHBsaWNhdGlvbnMgYW5kIGRhZW1vbnMgb24gZGVtYW5kIHdoZW4gdGhlaXIgc2VydmljZXMgYXJlIG5lZWRlZC4iCitIT01FUEFHRSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkFGTC0yIHwgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTBkZGVkM2I1ODE0OGYzZjFmZDgwNGIyNjM1NGFmM2UgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGJ1cy9kYnVzLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yMDttZDU9Nzc1NWM5ZDdhYmNjZDVkYmQyNWE2YTk3NDUzOGJiM2MiCitERVBFTkRTID0gImV4cGF0IHZpcnR1YWwvbGliaW50bCBhdXRvY29uZi1hcmNoaXZlIgorUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmVzZGsgPSAiIgorUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnJHtQTn0tcHRlc3QnLCAnJywgZCl9IgorQUxMT1dfRU1QVFlfZGJ1cy1wdGVzdCA9ICIxIgorUkRFUEVORFNfZGJ1cy1wdGVzdF9jbGFzcy10YXJnZXQgPSAiZGJ1cy10ZXN0LXB0ZXN0IgorCitTUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kYnVzLTEuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9jbGVhci1ndWlkX2Zyb21fc2VydmVyLWlmLXNlbmRfbmVnb3RpYXRlX3VuaXhfZi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMzYxNDU2Y2FkYjk5YWE2NjAxYmVkNWI0ODk2NDI1NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNzJiYjUwOTE3NzBiMDQ3YzgxODhiOTI2ZDVlNjAzOGZhNGZlNjc0NTQ4OGIyYWRkOTZiMjNlMmQ5YTgzZDg4IgorCitpbmhlcml0IHVzZXJhZGQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHVwZGF0ZS1yYy5kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitJTklUU0NSSVBUX05BTUUgPSAiZGJ1cy0xIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDIgNSAzIDIgLiBzdG9wIDIwIDAgMSA2IC4iCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKyAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCit9CisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBuZXRkZXYiCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgbWVzc2FnZWJ1cyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5jb25mICR7c3lzY29uZmRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiIKKworREVCSUFOTkFNRV8ke1BOfSA9ICJkYnVzLTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS1saWIiCisKK09MRFBLR05BTUUgPSAiZGJ1cy14MTEiCitPTERQS0dOQU1FX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKKyMgZm9yIGNvbXBhdGliaWxpdHkKK1JQUk9WSURFU18ke1BOfSA9ICIke09MRFBLR05BTUV9IgorUlJFUExBQ0VTXyR7UE59ICs9ICIke09MRFBLR05BTUV9IgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vZGJ1cy1kYWVtb24qIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXV1aWRnZW4gXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtY2xlYW51cC1zb2NrZXRzIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXNlbmQgXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtbW9uaXRvciBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1sYXVuY2ggXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtcnVuLXNlc3Npb24gXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXBkYXRlLWFjdGl2YXRpb24tZW52aXJvbm1lbnQgXAorICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9kYnVzKiBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9IFwKKyAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uZCBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXNzaW9uLmNvbmYgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS94bWwvZGJ1cy0xIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vc3lzdXNlcnMuZC9kYnVzLmNvbmYgXAorICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vdG1wZmlsZXMuZC9kYnVzLmNvbmYgXAorIgorRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWIqLnNvLioiCitSUkVDT01NRU5EU18ke1BOfS1saWIgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9kYnVzLTEuMC9pbmNsdWRlICR7bGliZGlyfS9jbWFrZS9EQnVzMSAke2JpbmRpcn0vZGJ1cy10ZXN0LXRvb2wiCisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCdzeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUnLCcnLGQpfSIKK3BrZ19wb3N0aW5zdF9kYnVzKCkgeworCSMgSWYgYm90aCBzeXN0ZW1kIGFuZCBzeXN2aW5pdCBhcmUgZW5hYmxlZCwgbWFzayB0aGUgZGJ1cy0xIGluaXQgc2NyaXB0CisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kIHN5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkJaWYgWyAtbiAiJEQiIF07IHRoZW4KKwkJCU9QVFM9Ii0tcm9vdD0kRCIKKwkJZmkKKwkJc3lzdGVtY3RsICRPUFRTIG1hc2sgZGJ1cy0xLnNlcnZpY2UKKwlmaQorCisJaWYgWyAteiAiJEQiIF0gJiYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdIDsgdGhlbgorCQkvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKKwlmaQorfQorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUteG1sLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kb3h5Z2VuLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhdWRpdCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbGFyZ2VmaWxlIFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1DVEw9JHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZGlzYWJsZS1zZWxpbnV4IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLWVuYWJsZS14MTEtYXV0b2xhdW5jaCwtLXdpdGhvdXQteCAtLWRpc2FibGUteDExLWF1dG9sYXVuY2gsIHZpcnR1YWwvbGlieDExIGxpYnNtIgorUEFDS0FHRUNPTkZJR1t1c2VyLXNlc3Npb25dID0gIi0tZW5hYmxlLXVzZXItc2Vzc2lvbiAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0tZGlzYWJsZS11c2VyLXNlc3Npb24iCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCQlzZWQgJ3M6QGJpbmRpckA6JHtiaW5kaXJ9OicgPCAke1dPUktESVJ9L2RidXMtMS5pbml0ID4ke1dPUktESVJ9L2RidXMtMS5pbml0LnNoCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RidXMtMS5pbml0LnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kYnVzLTEKKwlmaQorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJZm9yIGkgaW4gZGJ1cy50YXJnZXQud2FudHMgc29ja2V0cy50YXJnZXQud2FudHMgbXVsdGktdXNlci50YXJnZXQud2FudHM7IGRvIFwKKwkJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vJGk7IGRvbmUKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vYnVzL2RidXMuc2VydmljZSAke0J9L2J1cy9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KKwkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0CisJCWxuIC1mcyAuLi9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zb2NrZXRzLnRhcmdldC53YW50cy9kYnVzLnNvY2tldAorCQlsbiAtZnMgLi4vZGJ1cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L211bHRpLXVzZXIudGFyZ2V0LndhbnRzL2RidXMuc2VydmljZQorCWZpCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJZWNobyAiZCBtZXNzYWdlYnVzIG1lc3NhZ2VidXMgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L3J1bi9kYnVzIG5vbmUiIFwKKwkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfZGJ1cworCisKKwlta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cworCisJY2hvd24gbWVzc2FnZWJ1czptZXNzYWdlYnVzICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCisKKwljaG93biByb290Om1lc3NhZ2VidXMgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgorCWNobW9kIDQ3NTUgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgorCisJIyBSZW1vdmUgUmVkIEhhdCBpbml0c2NyaXB0CisJcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQKKworCSMgUmVtb3ZlIGVtcHR5IHRlc3RleGVjIGRpcmVjdG9yeSBhcyB3ZSBkb24ndCBidWlsZCB0ZXN0cworCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2RidXMtMS4wL3Rlc3QKKworCSMgUmVtb3ZlIC92YXIvcnVuIGFzIGl0IGlzIGNyZWF0ZWQgb24gc3RhcnR1cAorCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgZm9yIGRidXMtZ2xpYi1uYXRpdmUgaW50cm9zcGVjdGlvbiBnZW5lcmF0aW9uCisJaW5zdGFsbCAtZCAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzLworCSMgTi5CLiBpcyBiZWxvdyBpbnN0YWxsIGFjdHVhbGx5IHJlcXVpcmVkPworCWluc3RhbGwgLW0gMDY0NCBidXMvc2Vzc2lvbi5jb25mICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvc2Vzc2lvbi5jb25mCisKKwkjIGRidXMtZ2xpYi1uYXRpdmUgYW5kIGRidXMtZ2xpYiBuZWVkIHRoaXMgeG1sIGZpbGUKKwkuL2J1cy9kYnVzLWRhZW1vbiAtLWludHJvc3BlY3QgPiAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzL2RidXMtYnVzLWludHJvc3BlY3QueG1sCisJCisJIyBkYnVzLWxhdW5jaCBoYXMgbm8gWCBzdXBwb3J0IHNvIGxldHMgbm90IGluc3RhbGwgaXQgaW4gY2FzZSB0aGUgaG9zdAorCSMgaGFzIGEgbW9yZSBmZWF0dXJlZCBhbmQgdXNlZnVsIHZlcnNpb24KKwlybSAtZiAke0R9JHtiaW5kaXJ9L2RidXMtbGF1bmNoCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlc2RrKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0CisJIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgorCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKKworCSMgUmVtb3ZlIC92YXIvcnVuIHRvIGF2b2lkIFFBIGVycm9yCisJcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgorfQorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAiYnVpbGQtZGVwcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA0LWZpeC0ya2Ita2V5cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA0LWZpeC0ya2Ita2V5cy5wYXRjaAppbmRleCA3NTM5ZDIwLi42MGM2YTI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNC1maXgtMmtiLWtleXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDQtZml4LTJrYi1rZXlzLnBhdGNoCkBAIC01LDE4ICs1LDE1IEBACiAga2V4LmggfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9rZXguaCBiL2tleC5oCi1pbmRleCA3MjQzMGU5Li4zNzVjNjc3IDEwMDY0NAotLS0tIGEva2V4LmgKLSsrKyBiL2tleC5oCi1AQCAtNjcsNiArNjcsNiBAQCBzdHJ1Y3QgS0VYU3RhdGUgewotIH07CitJbmRleDogZHJvcGJlYXItMjAxNy43NS9rZXguaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRyb3BiZWFyLTIwMTcuNzUub3JpZy9rZXguaAorKysrIGRyb3BiZWFyLTIwMTcuNzUva2V4LmgKK0BAIC0xMDYsNiArMTA2LDYgQEAgaW50IGN1cnZlMjU1MTlfZG9ubmEodW5zaWduZWQgY2hhciAqb3V0LAorICNlbmRpZgogIAogIAogLSNkZWZpbmUgTUFYX0tFWEhBU0hCVUYgMjAwMAogKyNkZWZpbmUgTUFYX0tFWEhBU0hCVUYgMzAwMAogIAotICNlbmRpZiAvKiBfS0VYX0hfICovCi0tLSAKLTEuNy4xMS43Ci0KKyAjZW5kaWYgLyogRFJPUEJFQVJfS0VYX0hfICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVlNmMyNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHN0cmVhbS1vcmllbnRlZCBYTUwgcGFyc2VyIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJFeHBhdCBpcyBhbiBYTUwgcGFyc2VyIGxpYnJhcnkgd3JpdHRlbiBpbiBDLiBJdCBpcyBhIHN0cmVhbS1vcmllbnRlZCBwYXJzZXIgaW4gd2hpY2ggYW4gYXBwbGljYXRpb24gcmVnaXN0ZXJzIGhhbmRsZXJzIGZvciB0aGluZ3MgdGhlIHBhcnNlciBtaWdodCBmaW5kIGluIHRoZSBYTUwgZG9jdW1lbnQgKGxpa2Ugc3RhcnQgdGFncykiCi1IT01FUEFHRSA9ICJodHRwOi8vZXhwYXQuc291cmNlZm9yZ2UubmV0LyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTUlUIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9leHBhdC9leHBhdC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2F1dG90b29scy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ0b29sLXRhZy5wYXRjaCBcCi0JICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL25vX2dldHJhbmRvbS5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKLQotIyBUaGlzIHBhY2thZ2UgdXNlcyBhbiBhcmNoaXZlIGZvcm1hdCBrbm93biB0byBoYXZlIGlzc3VlIHdpdGggc29tZQotIyB2ZXJzaW9ucyBvZiBnemlwCi1ERVBFTkRTICs9ICJwaWd6LW5hdGl2ZSIKLWRvX3VucGFja1tkZXBlbmRzXSArPSAicGlnei1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXJtIC1mICR7U30vY29uZnRvb2xzL2xpYnRvb2wubTQKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L2F1dG90b29scy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9hdXRvdG9vbHMucGF0Y2gKaW5kZXggM2QzYzViYS4uMTA0NzE3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L2F1dG90b29scy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvYXV0b3Rvb2xzLnBhdGNoCkBAIC0xMCwxMSArMTAsMTIgQEAKIAogU2lnbmVkLW9mZi1ieTogTWFya28gTGluZHF2aXN0IDxjYXpmaTc0QGdtYWlsLmNvbT4KIAotZGlmZiAtTnVyZCBleHBhdC0yLjEuMC9jb25maWd1cmUuaW4gZXhwYXQtMi4xLjAvY29uZmlndXJlLmluCi0tLS0gZXhwYXQtMi4xLjAvY29uZmlndXJlLmFjCTIwMTItMDMtMDQgMDE6NDU6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZXhwYXQtMi4xLjAvY29uZmlndXJlLmFjCTIwMTItMDUtMTAgMjE6MDQ6NDQuMDAwMDAwMDAwICswMzAwCi1AQCAtNTEsOCArNTEsNiBAQAotIAorSW5kZXg6IGV4cGF0LTIuMi41L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGV4cGF0LTIuMi41Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZXhwYXQtMi4yLjUvY29uZmlndXJlLmFjCitAQCAtNTMsOCArNTMsNiBAQCBMSUJBR0U9NiAgICAgICAjIENNYWtlTGlzdHMudHh0IQorIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREhBVkVfRVhQQVRfQ09ORklHX0giCiAgQUNfQ09ORklHX0hFQURFUihleHBhdF9jb25maWcuaCkKICAKIC1zaW5jbHVkZShjb25mdG9vbHMvYWNfY19iaWdlbmRpYW5fY3Jvc3MubTQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbGlidG9vbC10YWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbGlidG9vbC10YWcucGF0Y2gKaW5kZXggM2VmNDE5Ny4uMGEwYWVkMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L2xpYnRvb2wtdGFnLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9saWJ0b29sLXRhZy5wYXRjaApAQCAtMSwxOCArMSwzMCBAQAorRnJvbSAxMDM0MmU2YjYwMDg1OGIwOTFiYzc3NzFlNDU0ZDllMDZhZjA2NDEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMiBOb3YgMjAxNyAxODoyMDo1NyArMDgwMAorU3ViamVjdDogW1BBVENIXSBBZGQgQ0MgdGFnIHRvIGJ1aWxkCisKIEFkZCBDQyB0YWcgdG8gYnVpbGQKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogZXhwYXQtMi4yLjIvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBleHBhdC0yLjIuMi5vcmlnL01ha2VmaWxlLmluCi0rKysgZXhwYXQtMi4yLjIvTWFrZWZpbGUuaW4KLUBAIC0xMDksNyArMTA5LDcgQEAgbWtkaXItaW5pdDoKLSAKLSBDQyA9IEBDQ0AKLSBDWFggPSBAQ1hYQAorZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDk1NjBhOTUuLmQ0NDRiZDYgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0zMTksNyArMzE5LDcgQEAgTElCQ1VSUkVOVCA9IEBMSUJDVVJSRU5UQAorIExJQk9CSlMgPSBATElCT0JKU0AKKyBMSUJSRVZJU0lPTiA9IEBMSUJSRVZJU0lPTkAKKyBMSUJTID0gQExJQlNACiAtTElCVE9PTCA9IEBMSUJUT09MQAogK0xJQlRPT0wgPSBATElCVE9PTEAgLS10YWcgQ0MKLSAKLSBJTkNMVURFUyA9IC1JJChzcmNkaXIpL2xpYiAtSS4KLSBMREZMQUdTID0gQExERkxBR1NACisgTElQTyA9IEBMSVBPQAorIExOX1MgPSBATE5fU0AKKyBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbm9fZ2V0cmFuZG9tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L25vX2dldHJhbmRvbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY0ZjFiZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbm9fZ2V0cmFuZG9tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIG5hdGl2ZSB2ZXJzaW9uIG9mIGV4cGF0IG1heSBiZSB1c2VkIG9uIG9sZGVyIHN5c3RlbXMgd2hpY2ggZG9udCBoYXZlIGdsaWJjIDIuMjUKLWFuZCBoZW5jZSBkb24ndCBoYXZlIGdldHJhbmRvbSgpIHRoYW5rcyB0byB1bmluYXRpdmUuIERpc2FibGUgdGhlIGxpYmMgY2FsbCBhbmQKLXVzZSB0aGUgc3lzY2FsbCBpbnN0ZWFkIHRvIGF2b2lkIGEgY29tcGF0aWJpbGl0eSBpc3N1ZSB1bnRpbCB3ZSBoYXZlIDIuMjUgZXZlcnl3aGVyZQotd2Ugc3VwcG9ydCB3aXRoIHVuaW5hdGl2ZS4KLQotUlAKLTIwMTcvOC8xNAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotSW5kZXg6IGV4cGF0LTIuMi4zL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGV4cGF0LTIuMi4zLm9yaWcvY29uZmlndXJlLmFjCi0rKysgZXhwYXQtMi4yLjMvY29uZmlndXJlLmFjCi1AQCAtMTUxLDcgKzE1MSw3IEBAIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbCi0gICAjaW5jbHVkZSA8c3RkbGliLmg+ICAvKiBmb3IgTlVMTCAqLwotICAgI2luY2x1ZGUgPHN5cy9yYW5kb20uaD4KLSAgIGludCBtYWluKCkgewotLSAgICByZXR1cm4gZ2V0cmFuZG9tKE5VTEwsIDBVLCAwVSk7Ci0rICAgIHJldHVybiBnZXRyYW5kb21CUkVBS01FKE5VTEwsIDBVLCAwVSk7Ci0gICB9Ci0gXSldLCBbCi0gICAgIEFDX0RFRklORShbSEFWRV9HRVRSQU5ET01dLCBbMV0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZjg0NTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1yZXF1aXJlIGV4cGF0LmluYwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWI4NjIwZDk4ZTQ5NzcyZDk1ZmMxZDI5MWMyNmFhNzkiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjA1M2FmNjNlZjVmMzliZDliNzhkMDFmYmMyMDMzMzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjMxODkwZmIwMmY4NWMwMDJhNjc0OTE5MjNmODliZGE1MDI4YTg4MGZkNmMzNzRmNzA3MTkzYWQ4MWFhY2U1ZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhhMmVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi41LmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiQSBzdHJlYW0tb3JpZW50ZWQgWE1MIHBhcnNlciBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiRXhwYXQgaXMgYW4gWE1MIHBhcnNlciBsaWJyYXJ5IHdyaXR0ZW4gaW4gQy4gSXQgaXMgYSBzdHJlYW0tb3JpZW50ZWQgcGFyc2VyIGluIHdoaWNoIGFuIGFwcGxpY2F0aW9uIHJlZ2lzdGVycyBoYW5kbGVycyBmb3IgdGhpbmdzIHRoZSBwYXJzZXIgbWlnaHQgZmluZCBpbiB0aGUgWE1MIGRvY3VtZW50IChsaWtlIHN0YXJ0IHRhZ3MpIgorSE9NRVBBR0UgPSAiaHR0cDovL2V4cGF0LnNvdXJjZWZvcmdlLm5ldC8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWI4NjIwZDk4ZTQ5NzcyZDk1ZmMxZDI5MWMyNmFhNzkiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4cGF0L2V4cGF0LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vYXV0b3Rvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnRvb2wtdGFnLnBhdGNoIFwKKwkgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjc4OWUyOTdmNTQ3OTgwZmM5ZWNjMDM2ZjlhMDcwZDQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5ZGMzMmVmYmE3ZTc0Zjc4OGZjYzRmMjEyYTQzMjE2ZmMzN2NmNWYyM2Y0YzIzMzk2NjRkNDczMzUzYWVkZjYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlybSAtZiAke1N9L2NvbmZ0b29scy9saWJ0b29sLm00Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvdXNlLXBrZ2NvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvdXNlLXBrZ2NvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTU2YTE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS91c2UtcGtnY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsMzIxIEBACitGb3IgcmVhc29ucyB3aGljaCBJIGp1c3QgY2FuJ3QgZmF0aG9tIGdudWxpYiBkb2Vzbid0IHVzZSB0aGUgZXhwZWN0ZWQgdG9vbHMgdG8KK2ZpbmQgbGlicmFyaWVzIGJ1dCBiYWRseSByZWludmVudHMgdGhlIHdoZWVsLiAgVGhpcyB3aWxsIHRyaXZpYWxseSBsZWFkIHRvIGhvc3QKK2NvbnRhbWluYXRpb24gKGV4cGxpY2l0IHNlYXJjaGVzIG9mIC91c3IvbGliKSBvciBpbmNvcnJlY3QgUlBBVEhzIChiYWQKK2Nhbm9uaWNhbGlzYXRpb24gcmVzdWx0aW5nIGluIHJlbGF0aXZlIHBhdGhzKS4KKworU2ltcGx5IGRlbGV0ZSBhbGwgdGhlIGNyYXp5LCBhbmQgcmVwbGFjZSB3aXRoIGEgc2luZ2xlIGNhbGwgdG8gcGtnLWNvbmZpZy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlICh1cHN0cmVhbSBzdGlsbCByZWZ1c2UgdG8gY29uc2lkZXIgcGtnLWNvbmZpZykKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9nbnVsaWItbG9jYWwvbTQvbGliY3JvY28ubTQgYi9nbnVsaWItbG9jYWwvbTQvbGliY3JvY28ubTQKK2luZGV4IGY3OWVhODJmMS4uMWY2NzI3NGRiIDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGliY3JvY28ubTQKKysrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYmNyb2NvLm00CitAQCAtOCw2ICs4LDcgQEAgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorIAorIEFDX0RFRlVOKFtnbF9MSUJDUk9DT10sCisgWworKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisgICBkbmwgbGliY3JvY28gZGVwZW5kcyBvbiBsaWJnbGliLgorICAgQUNfUkVRVUlSRShbZ2xfTElCR0xJQl0pCisgCitAQCAtMjMsNjUgKzI0LDEwIEBAIEFDX0RFRlVOKFtnbF9MSUJDUk9DT10sCisgICBMVExJQkNST0NPPQorICAgSU5DQ1JPQ089CisgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KKy0gICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYmNyb2NvLTAuNiwgb3IgaGF2ZSB0bworLSAgICBkbmwgdXNlIHRoZSBpbmNsdWRlZCBvbmUuCistICAgIEFDX0NBQ0hFX1ZBTChbZ2xfY3ZfbGliY3JvY29dLCBbCistICAgICAgZ2xfY3ZfbGliY3JvY289bm8KKy0gICAgICBnbF9jdl9MSUJDUk9DTz0KKy0gICAgICBnbF9jdl9MVExJQkNST0NPPQorLSAgICAgIGdsX2N2X0lOQ0NST0NPPQorLSAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgZG5sIFNlYXJjaCBmb3IgbGliY3JvY28gYW5kIGRlZmluZSBMSUJDUk9DT18wXzYsIExUTElCQ1JPQ09fMF82IGFuZAorLSAgICAgIGRubCBJTkNDUk9DT18wXzYgYWNjb3JkaW5nbHkuCistICAgICAgZG5sIERvbid0IHVzZSBjcm9jby0wLjYtY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgorLSAgICAgIGRubCBjcm9zcy1jb21waWxpbmcgb3Igd2hlbiB0aGUgQyBjb21waWxlciBpbiB1c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlCistICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbY3JvY28tMC42XSwgW2dsaWItMi4wXSkKKy0gICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJDUk9DT18wXzYiCistICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgIFtnbF9jdl9saWJjcm9jbz15ZXMKKy0gICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKKy0gICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICBdKQorLSAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jbyIgIT0geWVzOyB0aGVuCistICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNDUk9DT18wXzYiCistICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLWNvbmZpZy5oPl0sCistICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCistICAgICAgICAgIFtnbF9jdl9saWJjcm9jbz15ZXMKKy0gICAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgZ2xfY3ZfSU5DQ1JPQ089IiRJTkNDUk9DT18wXzYiCistICAgICAgICAgIF0pCistICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgorLSAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbgorLSAgICAgICAgICBkbmwgL3Vzci9pbmNsdWRlL2xpYmNyb2NvLTAuNi9saWJjcm9jby4KKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmg+XSwKKy0gICAgICAgICAgICBbY29uc3QgY2hhciAqdmVyc2lvbiA9IExJQkNST0NPX1ZFUlNJT047IHJldHVybiAhdmVyc2lvbjtdLAorLSAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYmNyb2NvLTAuNi9saWJjcm9jby9saWJjcm9jby1jb25maWcuaF0pCistICAgICAgICAgICAgIGxpYmNyb2NvX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGliY3JvY29fMF82X2xpYmNyb2NvX2xpYmNyb2NvX2NvbmZpZ19oIiB8IHNlZCAtZSAncywubGliY3JvY28tY29uZmlnXC5oJCwsJ2AKKy0gICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGxpYmNyb2NvX2luY2x1ZGVfZGlyIjsgdGhlbgorLSAgICAgICAgICAgICAgIGdsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICAgIGdsX2N2X0xUTElCQ1JPQ089IiRMVExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgICAgICBnbF9jdl9JTkNDUk9DTz0iLUkkbGliY3JvY29faW5jbHVkZV9kaXIiCistICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgXSkKKy0gICAgICAgIGZpCistICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgZmkKKy0gICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorLSAgICBdKQorLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsaWJjcm9jb10pCistICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJjcm9jb10pCistICAgIGlmIHRlc3QgJGdsX2N2X2xpYmNyb2NvID0geWVzOyB0aGVuCistICAgICAgTElCQ1JPQ089IiRnbF9jdl9MSUJDUk9DTyIKKy0gICAgICBMVExJQkNST0NPPSIkZ2xfY3ZfTFRMSUJDUk9DTyIKKy0gICAgICBJTkNDUk9DTz0iJGdsX2N2X0lOQ0NST0NPIgorLSAgICBlbHNlCistICAgICAgZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkPXllcworLSAgICBmaQorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbQ1JPQ09dLCBbbGliY3JvY28tMC42XSkKKysgICAgTElCQ1JPQ089JENST0NPX0xJQlMKKysgICAgTFRMSUJDUk9DTz0kQ1JPQ09fTElCUworKyAgICBJTkNDUk9DTz0kQ1JPQ09fQ0ZMQUdTCisgICBmaQorICAgQUNfU1VCU1QoW0xJQkNST0NPXSkKKyAgIEFDX1NVQlNUKFtMVExJQkNST0NPXSkKK2RpZmYgLS1naXQgYS9nbnVsaWItbG9jYWwvbTQvbGliZ2xpYi5tNCBiL2dudWxpYi1sb2NhbC9tNC9saWJnbGliLm00CitpbmRleCA0MmU1NWU2ZmQuLmFiMjVhNWIyMiAxMDA2NDQKKy0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYmdsaWIubTQKKysrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYmdsaWIubTQKK0BAIC04LDYgKzgsNyBAQCBkbmwgRnJvbSBCcnVubyBIYWlibGUuCisgCisgQUNfREVGVU4oW2dsX0xJQkdMSUJdLAorIFsKKysgIEFDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKQorICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGdsaWIgaXMgcmVxdWVzdGVkXSkKKyAgIEFDX0FSR19XSVRIKFtpbmNsdWRlZC1nbGliXSwKKyAgICAgWyAgLS13aXRoLWluY2x1ZGVkLWdsaWIgICAgdXNlIHRoZSBnbGliMiBpbmNsdWRlZCBoZXJlXSwKK0BAIC0yMCw3NiArMjEsMTAgQEAgQUNfREVGVU4oW2dsX0xJQkdMSUJdLAorICAgTFRMSUJHTElCPQorICAgSU5DR0xJQj0KKyAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCistICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJnbGliLTIuMCwgb3IgaGF2ZSB0byB1c2UKKy0gICAgZG5sIHRoZSBpbmNsdWRlZCBvbmUuCistICAgIEFDX0NBQ0hFX1ZBTChbZ2xfY3ZfbGliZ2xpYl0sIFsKKy0gICAgICBnbF9jdl9saWJnbGliPW5vCistICAgICAgZ2xfY3ZfTElCR0xJQj0KKy0gICAgICBnbF9jdl9MVExJQkdMSUI9CistICAgICAgZ2xfY3ZfSU5DR0xJQj0KKy0gICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgorLSAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmdsaWIyIGFuZCBkZWZpbmUgTElCR0xJQl8yXzAsIExUTElCR0xJQl8yXzAgYW5kCistICAgICAgZG5sIElOQ0dMSUJfMl8wIGFjY29yZGluZ2x5LgorLSAgICAgIGRubCBEb24ndCB1c2UgZ2xpYi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKy0gICAgICBkbmwgb25lIHRoYXQgYnVpbHQgdGhlIGxpYnJhcnkuCistICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtnbGliLTIuMF0pCistICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyAkTElCR0xJQl8yXzAiCistICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCistICAgICAgICBbZ2xfY3ZfbGliZ2xpYj15ZXMKKy0gICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKKy0gICAgICAgIF0pCistICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWIiICE9IHllczsgdGhlbgorLSAgICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorLSAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DR0xJQl8yXzAiCistICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KKy0jaWZuZGVmIEdfQkVHSU5fREVDTFMKKy1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAorLSNlbmRpZgorLV0sCistICAgICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAorLSAgICAgICAgICBbZ2xfY3ZfbGliZ2xpYj15ZXMKKy0gICAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCistICAgICAgICAgICBnbF9jdl9JTkNHTElCPSIkSU5DR0xJQl8yXzAiCistICAgICAgICAgIF0pCistICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYiIgIT0geWVzOyB0aGVuCistICAgICAgICAgIGRubCBPZnRlbiB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluIC91c3IvaW5jbHVkZS9nbGliLTIuMAorLSAgICAgICAgICBkbmwgYW5kIC91c3IvbGliL2dsaWItMi4wL2luY2x1ZGUuCistICAgICAgICAgIGlmIHRlc3QgLW4gIiRMSUJHTElCXzJfMF9QUkVGSVgiOyB0aGVuCistICAgICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIC1JJExJQkdMSUJfMl8wX1BSRUZJWC9pbmNsdWRlL2dsaWItMi4wIC1JJExJQkdMSUJfMl8wX1BSRUZJWC8kYWNsX2xpYmRpcnN0ZW0vZ2xpYi0yLjAvaW5jbHVkZSIKKy0gICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KKy0jaWZuZGVmIEdfQkVHSU5fREVDTFMKKy1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAorLSNlbmRpZgorLV0sCistICAgICAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKKy0gICAgICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgICAgIGdsX2N2X0lOQ0dMSUI9Ii1JJExJQkdMSUJfMl8wX1BSRUZJWC9pbmNsdWRlL2dsaWItMi4wIC1JJExJQkdMSUJfMl8wX1BSRUZJWC8kYWNsX2xpYmRpcnN0ZW0vZ2xpYi0yLjAvaW5jbHVkZSIKKy0gICAgICAgICAgICAgIF0pCistICAgICAgICAgIGZpCistICAgICAgICBmaQorLSAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgorLSAgICAgIGZpCistICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKKy0gICAgXSkKKy0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ2xpYl0pCistICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJnbGliXSkKKy0gICAgaWYgdGVzdCAkZ2xfY3ZfbGliZ2xpYiA9IHllczsgdGhlbgorLSAgICAgIExJQkdMSUI9IiRnbF9jdl9MSUJHTElCIgorLSAgICAgIExUTElCR0xJQj0iJGdsX2N2X0xUTElCR0xJQiIKKy0gICAgICBJTkNHTElCPSIkZ2xfY3ZfSU5DR0xJQiIKKy0gICAgZWxzZQorLSAgICAgIGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkPXllcworLSAgICBmaQorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR0xJQl0sIFtnbGliLTIuMF0pCisrICAgIExJQkdMSUI9IiRHTElCX0xJQlMiCisrICAgIExUTElCR0xJQj0iJEdMSUJfTElCUyIKKysgICAgSU5DR0xJQj0iJEdMSUJfQ0ZMQUdTIgorICAgZmkKKyAgIEFDX1NVQlNUKFtMSUJHTElCXSkKKyAgIEFDX1NVQlNUKFtMVExJQkdMSUJdKQorZGlmZiAtLWdpdCBhL2dudWxpYi1sb2NhbC9tNC9saWJ4bWwubTQgYi9nbnVsaWItbG9jYWwvbTQvbGlieG1sLm00CitpbmRleCA0ODBjNzAwZDIuLmNiMzkzMDlkNSAxMDA2NDQKKy0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYnhtbC5tNAorKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00CitAQCAtOCw2ICs4LDcgQEAgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorCisgQUNfREVGVU4oW2dsX0xJQlhNTF0sCisgWworKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisgICBBQ19SRVFVSVJFKFtBTV9JQ09OVl9MSU5LXSkKKworICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGxpYnhtbCBpcyByZXF1ZXN0ZWRdKQorQEAgLTIyLDEwMCArMjIsMTAgQEAgQUNfREVGVU4oW2dsX0xJQlhNTF0sCisgICBMVExJQlhNTD0KKyAgIElOQ1hNTD0KKyAgIGlmIHRlc3QgIiRnbF9jdl9saWJ4bWxfdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KKy0gICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYnhtbDIsIG9yIGhhdmUgdG8gdXNlCistICAgIGRubCB0aGUgaW5jbHVkZWQgb25lLgorLSAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYnhtbF0sIFsKKy0gICAgICBnbF9jdl9saWJ4bWw9bm8KKy0gICAgICBnbF9jdl9MSUJYTUw9CistICAgICAgZ2xfY3ZfTFRMSUJYTUw9CistICAgICAgZ2xfY3ZfSU5DWE1MPQorLSAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgTElCUz0iJExJQlMgJExJQklDT05WIgorLSAgICAgIGRubCBTZWFyY2ggZm9yIGxpYnhtbDIgYW5kIGRlZmluZSBMSUJYTUwyLCBMVExJQlhNTDIgYW5kIElOQ1hNTDIKKy0gICAgICBkbmwgYWNjb3JkaW5nbHkuCistICAgICAgZG5sIERvbid0IHVzZSB4bWwyLWNvbmZpZyBub3IgcGtnLWNvbmZpZywgc2luY2UgaXQgZG9lc24ndCB3b3JrIHdoZW4KKy0gICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KKy0gICAgICBkbmwgVXNlIGEgdGVzdCBwcm9ncmFtIHRoYXQgdHJpZXMgdG8gaW52b2tlIHhtbEZyZWUuIE9uIEN5Z3dpbiAxLjcueCwKKy0gICAgICBkbmwgbGlieG1sMiBpcyBidWlsdCBpbiBzdWNoIGEgd2F5IHRoYXQgdXNlcyBvZiB4bWxGcmVlIHdvcmsgZmluZSB3aXRoCistICAgICAgZG5sIC1XbCwtLWVuYWJsZS1hdXRvLWltcG9ydCBidXQgbGVhZCB0byBhIGxpbmsgZXJyb3Igd2l0aAorLSAgICAgIGRubCAtV2wsLS1kaXNhYmxlLWF1dG8taW1wb3J0LgorLSAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbeG1sMl0pCistICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyAkTElCWE1MMiAkTElCSUNPTlYiCistICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJ4bWwveG1sdmVyc2lvbi5oPgorLSAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3htbG1lbW9yeS5oPgorLSAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3hwYXRoLmg+CistICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgIFt4bWxDaGVja1ZlcnNpb24gKDApOworLSAgICAgICAgIHhtbEZyZWUgKCh2b2lkICopIDApOworLSAgICAgICAgIHhtbFhQYXRoU2V0Q29udGV4dE5vZGUgKCh2b2lkICopMCwgKHZvaWQgKikwKTsKKy0gICAgICAgIF0sCistICAgICAgICBbZ2xfY3ZfbGlieG1sPXllcworLSAgICAgICAgIGdsX2N2X0xJQlhNTD0iJExJQlhNTDIgJExJQklDT05WIgorLSAgICAgICAgIGdsX2N2X0xUTElCWE1MPSIkTFRMSUJYTUwyICRMVExJQklDT05WIgorLSAgICAgICAgXSkKKy0gICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKy0gICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ1hNTDIiCistICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYnhtbC94bWx2ZXJzaW9uLmg+CistICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KKy0gICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3hwYXRoLmg+CistICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKKy0gICAgICAgICAgIHhtbEZyZWUgKCh2b2lkICopIDApOworLSAgICAgICAgICAgeG1sWFBhdGhTZXRDb250ZXh0Tm9kZSAoKHZvaWQgKikwLCAodm9pZCAqKTApOworLSAgICAgICAgICBdLAorLSAgICAgICAgICBbZ2xfY3ZfbGlieG1sPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCWE1MPSIkTElCWE1MMiAkTElCSUNPTlYiCistICAgICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKKy0gICAgICAgICAgIGdsX2N2X0lOQ1hNTD0iJElOQ1hNTDIiCistICAgICAgICAgIF0pCistICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4gL3Vzci9pbmNsdWRlL2xpYnhtbDIuCistICAgICAgICAgIGRubCBJbiBsaWJ4bWwyLTIuNSwgPGxpYnhtbC94bWx2ZXJzaW9uLmg+IGlzIHNlbGYtY29udGFpbmVkLgorLSAgICAgICAgICBkbmwgSW4gbGlieG1sMi0yLjYsIGl0IGluY2x1ZGVzIDxsaWJ4bWwveG1sZXhwb3J0cy5oPiB3aGljaCBpcworLSAgICAgICAgICBkbmwgc2VsZi1jb250YWluZWQuCistICAgICAgICAgIGxpYnhtbDJfaW5jbHVkZV9kaXI9CistICAgICAgICAgIEFDX1RSWV9DUFAoWyNpbmNsdWRlIDxsaWJ4bWwyL2xpYnhtbC94bWxleHBvcnRzLmg+XSwKKy0gICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJ4bWwyL2xpYnhtbC94bWxleHBvcnRzLmhdKQorLSAgICAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGlieG1sMl9saWJ4bWxfeG1sZXhwb3J0c19oIiB8IHNlZCAtZSAncywubGlieG1sLnhtbGV4cG9ydHNcLmgkLCwnYAorLSAgICAgICAgICAgIF0pCistICAgICAgICAgIGlmIHRlc3QgLXogIiRsaWJ4bWwyX2luY2x1ZGVfZGlyIjsgdGhlbgorLSAgICAgICAgICAgIEFDX1RSWV9DUFAoWyNpbmNsdWRlIDxsaWJ4bWwyL2xpYnhtbC94bWx2ZXJzaW9uLmg+XSwKKy0gICAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYnhtbDIvbGlieG1sL3htbHZlcnNpb24uaF0pCistICAgICAgICAgICAgICAgbGlieG1sMl9pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYnhtbDJfbGlieG1sX3htbHZlcnNpb25faCIgfCBzZWQgLWUgJ3MsLmxpYnhtbC54bWx2ZXJzaW9uXC5oJCwsJ2AKKy0gICAgICAgICAgICAgIF0pCistICAgICAgICAgIGZpCistICAgICAgICAgIGlmIHRlc3QgLW4gIiRsaWJ4bWwyX2luY2x1ZGVfZGlyIiAmJiB0ZXN0IC1kICIkbGlieG1sMl9pbmNsdWRlX2RpciI7IHRoZW4KKy0gICAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MgLUkkbGlieG1sMl9pbmNsdWRlX2RpciIKKy0gICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYnhtbC94bWx2ZXJzaW9uLmg+CistICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveG1sbWVtb3J5Lmg+CistICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveHBhdGguaD4KKy0gICAgICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgW3htbENoZWNrVmVyc2lvbiAoMCk7CistICAgICAgICAgICAgICAgeG1sRnJlZSAoKHZvaWQgKikgMCk7CistICAgICAgICAgICAgICAgeG1sWFBhdGhTZXRDb250ZXh0Tm9kZSAoKHZvaWQgKikwLCAodm9pZCAqKTApOworLSAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgIFtnbF9jdl9saWJ4bWw9eWVzCistICAgICAgICAgICAgICAgZ2xfY3ZfTElCWE1MPSIkTElCWE1MMiAkTElCSUNPTlYiCistICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJYTUw9IiRMVExJQlhNTDIgJExUTElCSUNPTlYiCistICAgICAgICAgICAgICAgZ2xfY3ZfSU5DWE1MPSItSSRsaWJ4bWwyX2luY2x1ZGVfZGlyIgorLSAgICAgICAgICAgICAgXSkKKy0gICAgICAgICAgZmkKKy0gICAgICAgIGZpCistICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgZmkKKy0gICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorLSAgICBdKQorLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsaWJ4bWxdKQorLSAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGlieG1sXSkKKy0gICAgaWYgdGVzdCAkZ2xfY3ZfbGlieG1sID0geWVzOyB0aGVuCistICAgICAgTElCWE1MPSIkZ2xfY3ZfTElCWE1MIgorLSAgICAgIExUTElCWE1MPSIkZ2xfY3ZfTFRMSUJYTUwiCistICAgICAgSU5DWE1MPSIkZ2xfY3ZfSU5DWE1MIgorLSAgICBlbHNlCistICAgICAgZ2xfY3ZfbGlieG1sX3VzZV9pbmNsdWRlZD15ZXMKKy0gICAgZmkKKysgICAgUEtHX0NIRUNLX01PRFVMRVMoW1hNTF0sIFtsaWJ4bWwtMi4wXSkKKysgICAgTElCWE1MPSRYTUxfTElCUworKyAgICBMVExJQlhNTD0kWE1MX0xJQlMKKysgICAgSU5DWE1MPSRYTUxfQ0ZMQUdTCisgICBmaQorICAgQUNfU1VCU1QoW0xJQlhNTF0pCisgICBBQ19TVUJTVChbTFRMSUJYTUxdKQorZGlmZiAtLWdpdCBhL2dudWxpYi1sb2NhbC9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jIGIvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKK2luZGV4IDgxYTQwNzQ2Ny4uMjE4NTY1MzI5IDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworQEAgLTI1LDQgKzI1LDQgQEAKKy0jaW5jbHVkZSA8Y3Itb20tcGFyc2VyLmg+CistI2luY2x1ZGUgPGNyLXNlbC1lbmcuaD4KKy0jaW5jbHVkZSA8Y3Itc3R5bGUuaD4KKy0jaW5jbHVkZSA8Y3ItcmdiLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLW9tLXBhcnNlci5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zZWwtZW5nLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXN0eWxlLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXJnYi5oPgorQEAgLTMxICszMSBAQAorLSMgaW5jbHVkZSA8Y3ItZm9udHMuaD4KKysjIGluY2x1ZGUgPGxpYmNyb2NvL2NyLWZvbnRzLmg+CitAQCAtMzMgKzMzIEBACistI2luY2x1ZGUgPGNyLXN0cmluZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHJpbmcuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiCmluZGV4IGMyMDU5ZTYuLjY4ZjVjYzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYgpAQCAtOCw3ICs4LDcgQEAKIExJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTC0yLjErIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCiAKLURFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgdmlydHVhbC9saWJpY29udiBleHBhdCIKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgdmlydHVhbC9saWJpY29udiIKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gImdldHRleHQtbWluaW1hbC1uYXRpdmUiCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmludGwgdmlydHVhbC9nZXR0ZXh0IgogUFJPVklERVNfY2xhc3MtbmF0aXZlID0gInZpcnR1YWwvZ2V0dGV4dC1uYXRpdmUiCkBAIC0xNywxNCArMTcsMTMgQEAKIAkgICBmaWxlOi8vcGFyYWxsZWwucGF0Y2ggXAogCSAgIGZpbGU6Ly9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaCBcCiAJICAgZmlsZTovL2NyLXN0YXRlbWVudC5jLXRpbXNvcnQuaC1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2ggXAorCSAgIGZpbGU6Ly91c2UtcGtnY29uZmlnLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjk3ZTAzNGNmOGNlNWJhNzNhMjhmZjZjM2MwNjM4MDkyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmOTQyYWYwZTQzOGNlZDRhOGIwZWE0YjBiNmUwZDZkNjU3MTU3YzVlMjM2NGRlNTdiYWEyNzljMWMxMjVjNDMiCiAKLVBBQ0tBR0VDT05GSUdbbXNnY2F0LWN1cnNlc10gPSAiLS13aXRoLWxpYm5jdXJzZXMtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uLC0tZGlzYWJsZS1jdXJzZXMsbmN1cnNlcywiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gcGtnY29uZmlnCiAKIEVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpc3BkaXIgXAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUtY3NoYXJwIFwKQEAgLTMzLDE4ICszMiwyNiBAQAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmF0aXZlLWphdmEgXAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3Blbm1wIFwKICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWFjbCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1pbmNsdWRlZC1nbGliIFwKICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWVtYWNzIFwKICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyBcCiAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1naXQgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtaW5jbHVkZWQtbGlieG1sIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWluY2x1ZGVkLWxpYmNyb2NvIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWluY2x1ZGVkLWxpYnVuaXN0cmluZyBcCiAgICAgICAgICAgICAgICAgIgogRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKICAgICAgICAgICAgICAgICAgLS13aXRoLWJpc29ubG9jYWxlZGlyPSR7ZGF0YWRpcn0vbG9jYWxlIFwKICIKIAorUEFDS0FHRUNPTkZJRyA/Pz0gImNyb2NvIGdsaWIgbGlieG1sIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitQQUNLQUdFQ09ORklHW2Nyb2NvXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtbGliY3JvY28sLS13aXRoLWluY2x1ZGVkLWxpYmNyb2NvLGxpYmNyb2NvIgorUEFDS0FHRUNPTkZJR1tnbGliXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtZ2xpYiwtLXdpdGgtaW5jbHVkZWQtZ2xpYixnbGliLTIuMCIKK1BBQ0tBR0VDT05GSUdbbGlieG1sXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtbGlieG1sLC0td2l0aC1pbmNsdWRlZC1saWJ4bWwsbGlieG1sMiIKKyMgTmVlZCBwYXRocyBoZXJlIHRvIGF2b2lkIGhvc3QgY29udGFtaW5hdGlvbiBidXQgdGhpcyBjYW4gY2F1c2UgUlBBVEggd2FybmluZ3MKKyMgb3IgcHJvYmxlbXMgaWYgJGxpYmRpciBpc24ndCAkcHJlZml4L2xpYi4KK1BBQ0tBR0VDT05GSUdbbGlidW5pc3RyaW5nXSA9ICItLXdpdGgtbGlidW5pc3RyaW5nLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiwtLXdpdGgtaW5jbHVkZWQtbGlidW5pc3RyaW5nLGxpYnVuaXN0cmluZyIKK1BBQ0tBR0VDT05GSUdbbXNnY2F0LWN1cnNlc10gPSAiLS13aXRoLWxpYm5jdXJzZXMtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uLC0tZGlzYWJsZS1jdXJzZXMsbmN1cnNlcywiCisKIGFjcGF0aHMgPSAnLUkgJHtTfS9nZXR0ZXh0LXJ1bnRpbWUvbTQgXAogICAgICAgICAgICAtSSAke1N9L2dldHRleHQtdG9vbHMvbTQnCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLVJlbW92ZS10aGUtd2FybmluZy1hYm91dC1kZXByZWNhdGVkLXBhdGhzLWluLXNjaGVtYXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1SZW1vdmUtdGhlLXdhcm5pbmctYWJvdXQtZGVwcmVjYXRlZC1wYXRocy1pbi1zY2hlbWFzLnBhdGNoCmluZGV4IDQxYTE5MGUuLjY3Y2E2MjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLVJlbW92ZS10aGUtd2FybmluZy1hYm91dC1kZXByZWNhdGVkLXBhdGhzLWluLXNjaGVtYXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNDE1MzQyNTNiNmI2MWVkNDc2OWViNmEzOTY2Njk4YTUwZWU3M2I3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMmFjZjQwMzYxZWVjZDE3YzY5ODE3NDNkYWJkMDZlMjVhOTkzNDI1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAxMiBKdW4gMjAxNSAxNzowODo0NiArMDMwMAotU3ViamVjdDogW1BBVENIXSBSZW1vdmUgdGhlIHdhcm5pbmcgYWJvdXQgZGVwcmVjYXRlZCBwYXRocyBpbiBzY2hlbWFzCitTdWJqZWN0OiBbUEFUQ0ggMDUvMTBdIFJlbW92ZSB0aGUgd2FybmluZyBhYm91dCBkZXByZWNhdGVkIHBhdGhzIGluIHNjaGVtYXMKIAogU29tZSBzY2hlbWFzIGluIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgKHN1Y2ggYXMgcHJveHkgYW5kIGxvY2FsZSkKIGFyZSBzdGlsbCB1c2luZyBkZXByZWNhdGVkIHBhdGhzLCBhcyBvZiAzLjE2LjEuIFRoaXMgY2F1c2VzIHdhcm5pbmcKQEAgLTExLDI2ICsxMSwzMyBAQAogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKIC0tLQotIGdpby9nbGliLWNvbXBpbGUtc2NoZW1hcy5jIHwgNiAtLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBkZWxldGlvbnMoLSkKKyBnaW8vZ2xpYi1jb21waWxlLXNjaGVtYXMuYyB8IDEzIC0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9naW8vZ2xpYi1jb21waWxlLXNjaGVtYXMuYyBiL2dpby9nbGliLWNvbXBpbGUtc2NoZW1hcy5jCi1pbmRleCBlNDI5NDliLi5lYzc5ZDdjIDEwMDY0NAoraW5kZXggYjhkZTA5MC4uMTMwZjg5YiAxMDA2NDQKIC0tLSBhL2dpby9nbGliLWNvbXBpbGUtc2NoZW1hcy5jCiArKysgYi9naW8vZ2xpYi1jb21waWxlLXNjaGVtYXMuYwotQEAgLTEyMDIsMTIgKzEyMDIsNiBAQCBwYXJzZV9zdGF0ZV9zdGFydF9zY2hlbWEgKFBhcnNlU3RhdGUgICpzdGF0ZSwKK0BAIC0xMjE5LDE5ICsxMjE5LDYgQEAgcGFyc2Vfc3RhdGVfc3RhcnRfc2NoZW1hIChQYXJzZVN0YXRlICAqc3RhdGUsCiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgCiAtICBpZiAocGF0aCAmJiAoZ19zdHJfaGFzX3ByZWZpeCAocGF0aCwgIi9hcHBzLyIpIHx8CiAtICAgICAgICAgICAgICAgZ19zdHJfaGFzX3ByZWZpeCAocGF0aCwgIi9kZXNrdG9wLyIpIHx8CiAtICAgICAgICAgICAgICAgZ19zdHJfaGFzX3ByZWZpeCAocGF0aCwgIi9zeXN0ZW0vIikpKQotLSAgICBnX3ByaW50ZXJyICgid2FybmluZzogU2NoZW1hICclcycgaGFzIHBhdGggJyVzJy4gIFBhdGhzIHN0YXJ0aW5nIHdpdGggIgotLSAgICAgICAgICAgICAgICAiJy9hcHBzLycsICcvZGVza3RvcC8nIG9yICcvc3lzdGVtLycgYXJlIGRlcHJlY2F0ZWQuXG4iLCBpZCwgcGF0aCk7CistICAgIHsKKy0gICAgICBnY2hhciAqbWVzc2FnZSA9IE5VTEw7CistICAgICAgbWVzc2FnZSA9IGdfc3RyZHVwX3ByaW50ZiAoXygiV2FybmluZzogU2NoZW1hIOKAnCVz4oCdIGhhcyBwYXRoIOKAnCVz4oCdLiAgIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhdGhzIHN0YXJ0aW5nIHdpdGggIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIuKAnC9hcHBzL+KAnSwg4oCcL2Rlc2t0b3Av4oCdIG9yIOKAnC9zeXN0ZW0v4oCdIGFyZSBkZXByZWNhdGVkLiIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLCBwYXRoKTsKKy0gICAgICBnX3ByaW50ZXJyICgiJXNcbiIsIG1lc3NhZ2UpOworLSAgICAgIGdfZnJlZSAobWVzc2FnZSk7CistICAgIH0KIC0KICAgIHN0YXRlLT5zY2hlbWFfc3RhdGUgPSBzY2hlbWFfc3RhdGVfbmV3IChwYXRoLCBnZXR0ZXh0X2RvbWFpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmRzLCBleHRlbmRzX25hbWUsIGxpc3Rfb2YpOwogIAogLS0gCi0yLjEuNAorMi4xNC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEwLURvLW5vdC1oYXJkY29kZS1weXRob24tcGF0aC1pbnRvLXZhcmlvdXMtdG9vbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMC1Eby1ub3QtaGFyZGNvZGUtcHl0aG9uLXBhdGgtaW50by12YXJpb3VzLXRvb2xzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5N2Q2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMC1Eby1ub3QtaGFyZGNvZGUtcHl0aG9uLXBhdGgtaW50by12YXJpb3VzLXRvb2xzLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gYjkxNjBkOTUxYjlhZjY0N2I5Nzc2NmM1NzI5NWNhNGY0NWNmOTUyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAzIE9jdCAyMDE3IDEwOjQ1OjU1ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTBdIERvIG5vdCBoYXJkY29kZSBweXRob24gcGF0aCBpbnRvIHZhcmlvdXMgdG9vbHMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBnaW8vZ2RidXMtMi4wL2NvZGVnZW4vZ2RidXMtY29kZWdlbi5pbiB8IDIgKy0KKyBnb2JqZWN0L2dsaWItZ2VubWFyc2hhbC5pbiAgICAgICAgICAgICB8IDIgKy0KKyBnb2JqZWN0L2dsaWItbWtlbnVtcy5pbiAgICAgICAgICAgICAgICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dpby9nZGJ1cy0yLjAvY29kZWdlbi9nZGJ1cy1jb2RlZ2VuLmluIGIvZ2lvL2dkYnVzLTIuMC9jb2RlZ2VuL2dkYnVzLWNvZGVnZW4uaW4KK2luZGV4IDgwNTA5ODEuLmU2OTNlZjMgMTAwNjQ0CistLS0gYS9naW8vZ2RidXMtMi4wL2NvZGVnZW4vZ2RidXMtY29kZWdlbi5pbgorKysrIGIvZ2lvL2dkYnVzLTIuMC9jb2RlZ2VuL2dkYnVzLWNvZGVnZW4uaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IEBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorICMgR0RCdXMgLSBHTGliIEQtQnVzIExpYnJhcnkKKyAjCitkaWZmIC0tZ2l0IGEvZ29iamVjdC9nbGliLWdlbm1hcnNoYWwuaW4gYi9nb2JqZWN0L2dsaWItZ2VubWFyc2hhbC5pbgoraW5kZXggMDllODQwOC4uYjJmOWQ5OSAxMDA3NTUKKy0tLSBhL2dvYmplY3QvZ2xpYi1nZW5tYXJzaGFsLmluCisrKysgYi9nb2JqZWN0L2dsaWItZ2VubWFyc2hhbC5pbgorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgQFBZVEhPTkAKKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgIyBweWxpbnQ6IGRpc2FibGU9dG9vLW1hbnktbGluZXMsIG1pc3NpbmctZG9jc3RyaW5nLCBpbnZhbGlkLW5hbWUKKyAKK2RpZmYgLS1naXQgYS9nb2JqZWN0L2dsaWItbWtlbnVtcy5pbiBiL2dvYmplY3QvZ2xpYi1ta2VudW1zLmluCitpbmRleCBkNGJmZDExLi4wNTFmY2U0IDEwMDc1NQorLS0tIGEvZ29iamVjdC9nbGliLW1rZW51bXMuaW4KKysrKyBiL2dvYmplY3QvZ2xpYi1ta2VudW1zLmluCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAKKyAjIElmIHRoZSBjb2RlIGJlbG93IGxvb2tzIGhvcnJpYmxlIGFuZCB1bnB5dGhvbmljLCBkbyBub3QgcGFuaWMuCisgIworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2gKaW5kZXggOWI0ZGVkMS4uYjk4ZjkzMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAzMTBkZmUxYmRkMTZkNGIyNTQ3MzJmY2MyMDJjNjIxMTYyOWJjN2I2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkNzYyOTA3ZDMzYjgxY2Y3NDY5YjU2OTZjODdmMjE4OGQyMDUwYWZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IE1vbiwgOSBOb3YgMjAxNSAxMTowNzoyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBFbmFibGUgbW9yZSB0ZXN0cyB3aGlsZSBjcm9zcy1jb21waWxpbmcKK1N1YmplY3Q6IFtQQVRDSCAwNi8xMF0gRW5hYmxlIG1vcmUgdGVzdHMgd2hpbGUgY3Jvc3MtY29tcGlsaW5nCiAKIFVwc3RyZWFtIGRpc2FibGVzIGEgZmV3IHRlc3RzIHdoaWxlIGNyb3NzLWNvbXBpbGluZyBiZWNhdXNlIHRoZWlyIGJ1aWxkIHJlcXVpcmVzCiBydW5uaW5nIG90aGVyIGJ1aWx0IGJpbmFyaWVzLiBUaGlzIHVzdWFsbHkgbWFrZXMgc2Vuc2UgYnV0IGluIHRoZSBjcm9zcy1jb21waWxlCkBAIC05LDE2ICs5LDE3IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorCiAtLS0KLSBnaW8vdGVzdHMvTWFrZWZpbGUuYW0gICAgIHwgOCArKystLS0tLQotIHRlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0gfCA4ICsrKy0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorIGdpby90ZXN0cy9NYWtlZmlsZS5hbSAgICAgfCAxMCArKysrKystLS0tCisgdGVzdHMvZ29iamVjdC9NYWtlZmlsZS5hbSB8ICA4ICsrKysrLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2lvL3Rlc3RzL01ha2VmaWxlLmFtIGIvZ2lvL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA4Njg4NzNmLi41MzNlNDU0IDEwMDY0NAoraW5kZXggYWNjMWRhNC4uOTE3NjY0MCAxMDA2NDQKIC0tLSBhL2dpby90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvZ2lvL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtNTAzLDEwICs1MDMsOSBAQCB0ZXN0X3Byb2dyYW1zICs9IFwKK0BAIC01MTYsMTAgKzUxNiw5IEBAIHRlc3RfcHJvZ3JhbXMgKz0gXAogIGVuZGlmCiAgCiAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzEsNyArMzIsNyBAQAogIHRlc3RfcHJvZ3JhbXMgKz0gcmVzb3VyY2VzCiAgcmVzb3VyY2VzX1NPVVJDRVMgPSByZXNvdXJjZXMuYwogIG5vZGlzdF9yZXNvdXJjZXNfU09VUkNFUyA9IHRlc3RfcmVzb3VyY2VzLmMgdGVzdF9yZXNvdXJjZXMyLmMgdGVzdF9yZXNvdXJjZXMyLmgKLUBAIC01MjgsNyArNTI3LDExIEBAIGlmICFFTkFCTEVfSU5TVEFMTEVEX1RFU1RTCitAQCAtNTQzLDcgKzU0MiwxMSBAQCBpZiAhRU5BQkxFX0lOU1RBTExFRF9URVNUUwogIGxpYnJlc291cmNlcGx1Z2luX2xhX0xERkxBR1MgKz0gLXJwYXRoIC8KICBlbmRpZgogIApAQCAtNDEsMTggKzQyLDE4IEBACiArZ2xpYl9jb21waWxlX3Jlc291cmNlcz1nbGliLWNvbXBpbGUtcmVzb3VyY2VzCiArZW5kaWYKICAKLSByZXNvdXJjZXMubzogdGVzdF9yZXNvdXJjZXMyLmgKLSB0ZXN0X3Jlc291cmNlcy5jOiB0ZXN0Mi5ncmVzb3VyY2UueG1sIE1ha2VmaWxlICQoc2hlbGwgJChnbGliX2NvbXBpbGVfcmVzb3VyY2VzKSAtLXNvdXJjZWRpcj0kKHNyY2RpcikgLS1nZW5lcmF0ZS1kZXBlbmRlbmNpZXMgJChzcmNkaXIpL3Rlc3QyLmdyZXNvdXJjZS54bWwpCi1AQCAtNTQ1LDcgKzU0OCw2IEBAIHRlc3QuZ3Jlc291cmNlOiB0ZXN0LmdyZXNvdXJjZS54bWwgTWFrZWZpbGUgJChzaGVsbCAkKGdsaWJfY29tcGlsZV9yZXNvdXJjZXMpIC0tCisgdGVzdC1nZW5lcmF0ZWQudHh0OiB0ZXN0MS50eHQKKyAJJChBTV9WX0dFTikgZWNobyAiR2VuZXJhdGVkIiA+ICRAICYmIFwKK0BAIC01NjQsNyArNTY3LDYgQEAgdGVzdC5ncmVzb3VyY2U6IHRlc3QuZ3Jlc291cmNlLnhtbCBNYWtlZmlsZSAkKHNoZWxsICQoZ2xpYl9jb21waWxlX3Jlc291cmNlcykgLS0KICAKICBFWFRSQV9ESVNUICs9IHRlc3QuZ3Jlc291cmNlLnhtbCB0ZXN0MS50eHQgdGVzdDIuZ3Jlc291cmNlLnhtbCB0ZXN0Mi50eHQgdGVzdDMuZ3Jlc291cmNlLnhtbCB0ZXN0My50eHQgdGVzdDQuZ3Jlc291cmNlLnhtbAogIENMRUFORklMRVMgKz0gdGVzdC1nZW5lcmF0ZWQudHh0IHRlc3RfcmVzb3VyY2VzLmMgdGVzdF9yZXNvdXJjZXMyLltjaF0gcGx1Z2luX3Jlc291cmNlcy5jIHRlc3QuZ3Jlc291cmNlCiAtZW5kaWYgIyAhQ1JPU1NfQ09NUElMSU5HCiAgCi0gQlVJTFRfU09VUkNFUyArPSBnaW90eXBlZnVuY3MuYworIEJVSUxUX1NPVVJDRVMgKz0gZ2lvdHlwZWZ1bmNzLmluYwogIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0gYi90ZXN0cy9nb2JqZWN0L01ha2VmaWxlLmFtCi1pbmRleCAxNmYyODI3Li40YzIyMDhlIDEwMDY0NAoraW5kZXggNjU2OTQxZC4uNjg1NTVmZiAxMDA2NDQKIC0tLSBhL3Rlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0KIEBAIC00OCwxMCArNDgsMTMgQEAgaWYgRU5BQkxFX1RJTUVMT09QCkBAIC03OSwzICs4MCw2IEBACiAgCiAgZGlzdC1ob29rOiAkKEJVSUxUX0VYVFJBX0RJU1QpCiAgCWZpbGVzPSckKEJVSUxUX0VYVFJBX0RJU1QpJzsJCQkJXAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2NvbmZpZ3VyZS1saWJ0b29sLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2NvbmZpZ3VyZS1saWJ0b29sLnBhdGNoCmluZGV4IGFhNWRlMjcuLjU5Yjg5MTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9jb25maWd1cmUtbGlidG9vbC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvY29uZmlndXJlLWxpYnRvb2wucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGU4NzQwODMzMzM2YzU5ZDZmNjE2YTE3ODFiMjU2ZTY0OGUzMzhjMjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDFkZDFlNmRkY2E1ZGVhZGEwNDliYWMyZTFlZTFmZTRlY2M1MzQyYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDI4IEFwciAyMDEyIDE4OjI0OjUwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogdXNlICRob3N0X2FsaWFzLWxpYnRvb2wgaW5zdGVhZCBvZiBsaWJ0b29sCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTBdIGNvbmZpZ3VyZTogdXNlICRob3N0X2FsaWFzLWxpYnRvb2wgaW5zdGVhZCBvZiBsaWJ0b29sCiAgZGlyZWN0bHkKIAogUG9reSByZW5hbWVzIGxpYnRvb2wgdG8gJGhvc3RfYWxpYXMtbGlidG9vbC4KQEAgLTE4LDI0ICsxOCwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKIC0tLQotIGNvbmZpZ3VyZS5hYyB8IDEwICsrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFhZjkwYzUuLmY2YjdhNzMgMTAwNjQ0CitpbmRleCA2ZmE2ZWIwLi5iNmY3OGE2IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMzc4LDcgKzEzNzgsNyBAQCBpZiB0ZXN0IHgiJGdsaWJfbmF0aXZlX3dpbjMyIiA9IHh5ZXM7IHRoZW4KLSAgIEdfTU9EVUxFX0xERkxBR1M9Ci0gZWxzZQotICAgZXhwb3J0IFNFRAotLSAgR19NT0RVTEVfTERGTEFHUz1gKC4vbGlidG9vbCAtLWNvbmZpZzsgZWNobyBldmFsIGVjaG8gXFwkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjKSB8IHNoYAotKyAgR19NT0RVTEVfTERGTEFHUz1gKC4vJGhvc3RfYWxpYXMtbGlidG9vbCAtLWNvbmZpZzsgZWNobyBldmFsIGVjaG8gXFwkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjKSB8IHNoYAotIGZpCi0gZG5sIEdfTU9EVUxFX0lNUEw9IGRvbid0IHJlc2V0LCBzbyBjbWQtbGluZSBjYW4gb3ZlcnJpZGUKLSBHX01PRFVMRV9ORUVEX1VTQ09SRT0wCi1AQCAtMTQyNywxMyArMTQyNywxMyBAQCBBU19JRihbIHRlc3QgIiRHX01PRFVMRV9JTVBMIiA9ICJHX01PRFVMRV9JTVBMX0RMIiBdLCBbCitAQCAtMTQyOCw5ICsxNDI4LDkgQEAgQVNfSUYoWyB0ZXN0ICIkR19NT0RVTEVfSU1QTCIgPSAiR19NT0RVTEVfSU1QTF9ETCIgXSwgWwogIAlMREZMQUdTPSIkTERGTEFHUyAkR19NT0RVTEVfTERGTEFHUyIKICBkbmwgKioqIGNoZWNrIGZvciBPU0YxLzUuMCBSVExEX0dMT0JBTCBicm9rZW5uZXNzCiAgCWVjaG8gInZvaWQgZ2xpYl9wbHVnaW5fdGVzdCh2b2lkKSB7IH0iID4gcGx1Z2luLmMKQEAgLTQ3LDIwICszOSw2IEBACiAgCQkke0xERkxBR1N9IC1tb2R1bGUgLW8gcGx1Z2luLmxhIC1leHBvcnQtZHluYW1pYyBcCiAgCQktc2hyZXh0ICIubyIgLWF2b2lkLXZlcnNpb24gcGx1Z2luLmxvIFwKICAJCS1ycGF0aCAvZG9udC9jYXJlID4vZGV2L251bGwgMj4mMQotLQlldmFsIGAuL2xpYnRvb2wgLS1jb25maWcgfCBncmVwIF5vYmpkaXJgCi0rCWV2YWwgYC4vJGhvc3RfYWxpYXMtbGlidG9vbCAtLWNvbmZpZyB8IGdyZXAgXm9iamRpcmAKLSAJQUNfQ0FDSEVfQ0hFQ0soW2ZvciBSVExEX0dMT0JBTCBicm9rZW5uZXNzXSwKLSAJCWdsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW4sWwotIAkJQUNfVFJZX1JVTihbCi1AQCAtMTUwNiw3ICsxNTA2LDcgQEAgZmkKLSAKLSBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHRoZSBzdWZmaXggb2YgbW9kdWxlIHNoYXJlZCBsaWJyYXJpZXMpCi0gZXhwb3J0IFNFRAotLXNocmV4dF9jbWRzPWAuL2xpYnRvb2wgLS1jb25maWcgfCBncmVwICdec2hyZXh0X2NtZHM9J2AKLStzaHJleHRfY21kcz1gLi8kaG9zdF9hbGlhcy1saWJ0b29sIC0tY29uZmlnIHwgZ3JlcCAnXnNocmV4dF9jbWRzPSdgCi0gZXZhbCAkc2hyZXh0X2NtZHMKLSBtb2R1bGU9eWVzIGV2YWwgc3RkX3NocmV4dD0kc2hyZXh0X2NtZHMKLSAjIGNob3AgdGhlIGluaXRpYWwgZG90CiAtLSAKLTEuOS4xCisyLjE0LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTIuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjUyLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZmU2MDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLXJlcXVpcmUgZ2xpYi5pbmMKLQotUEUgPSAiMSIKLQotU0hSVF9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vZ2xpYi8ke1NIUlRfVkVSfS9nbGliLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHRlc3QtcGF0aHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWNsaWJjX211c2xfdHJhbnNsYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWxsb3ctcnVuLW1lZGlhLXNkWC1kcml2ZS1tb3VudC1pZi11c2VybmFtZS1yb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLWdpby1xdWVyeW1vZHVsZXMtYXMtbGliZXhlY19QUk9HUkFNLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UZXN0LWZvci1wdGhyZWFkX2dldG5hbWVfbnAtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODkyNjVkMDI4OWE0MzZlOTljYWQ1NDQ5MWViMjFlZjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjVlZTc2MzVhN2MwZmNkNGVjOTFjYmMzYWUwN2M3ZjhmNWNlNjIxZDgxODM1MTFmNDE0ZGVkMDllN2U0ZTEyOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjU0LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi41NC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZjU5NDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi41NC4zLmJiCkBAIC0wLDAgKzEsMjQgQEAKK3JlcXVpcmUgZ2xpYi5pbmMKKworUEUgPSAiMSIKKworU0hSVF9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vZ2xpYi8ke1NIUlRfVkVSfS9nbGliLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcHRlc3QtcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdWNsaWJjX211c2xfdHJhbnNsYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWxsb3ctcnVuLW1lZGlhLXNkWC1kcml2ZS1tb3VudC1pZi11c2VybmFtZS1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLWdpby1xdWVyeW1vZHVsZXMtYXMtbGliZXhlY19QUk9HUkFNLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1UZXN0LWZvci1wdGhyZWFkX2dldG5hbWVfbnAtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtRG8tbm90LWhhcmRjb2RlLXB5dGhvbi1wYXRoLWludG8tdmFyaW91cy10b29scy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vcmVsb2NhdGUtbW9kdWxlcy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjE2ZTg4NmFkNjc3YmYwN2I3ZDQ4ZWI4MTg4YmNmNzU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2M2ZkYzY2ODVkYzNkYThlNTM4MWRmYjlmMTVjYTRiNTcwOWIyOGJlODRkOWQwNWE5YmI4ZTQ0NmFiYWMwYTgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKaW5kZXggNGNkZjE0MS4uZjY0NWVkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYwpAQCAtMywxMiArMywxMiBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvIgogCiAjIHBjcmUgaXMgdW5kZXIgQlNEOwotIyBkb2NzL3JlZmVyZW5jZS9DT1BZSU5HIGlzIHdpdGggYSAncHVibGljIGRvbWFpJy1saWtlIGxpY2Vuc2UhCi1MSUNFTlNFID0gIkxHUEx2MisgJiBCU0QgJiBQRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsaWIvZ2xpYi5oO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWI0ZjBmNGEzOTljMTllNWViYjIwYzMxYjc5ZDZiYzMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dtb2R1bGUvQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ21vZHVsZS9nbW9kdWxlLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YjRmMGY0YTM5OWMxOWU1ZWJiMjBjMzFiNzlkNmJjMzIgXAorIyBkb2NzL3JlZmVyZW5jZS9DT1BZSU5HIGlzIHdpdGggYSAncHVibGljIGRvbWFpbictbGlrZSBsaWNlbnNlIQorTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBCU0QgJiBQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsaWIvZ2xpYi5oO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWI4OGFiYjdmM2FkMDk2MDdlNzFjYjlkNTMwMTU1OTA2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dtb2R1bGUvQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ21vZHVsZS9nbW9kdWxlLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9Yjg4YWJiN2YzYWQwOTYwN2U3MWNiOWQ1MzAxNTU5MDYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xpYi9wY3JlL0NPUFlJTkc7bWQ1PTI2NmViYzNmZjc0ZWU5Y2U2ZmFkNjU1Nzc2NjdjMGY0IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsaWIvcGNyZS9wY3JlLmg7YmVnaW5saW5lPTExO2VuZGxpbmU9MzU7bWQ1PWRlMjdmMmJmNjMzZDIwYTJiN2FmMGIxOTgzNDIzMjgzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvcmVmZXJlbmNlL0NPUFlJTkc7bWQ1PWY1MWE1MTAwYzE3YWY2YmFlMDA3MzVjZDc5MWUxZmNjIgpAQCAtMTksMTYgKzE5LDE4IEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IGxpYmZmaSB6bGliIGdsaWItMi4wLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJyBkYnVzJywgJycsIGQpfSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInBrZ2NvbmZpZy1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUgbGliZmZpLW5hdGl2ZSB6bGliLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIm5hdGl2ZXNkay1saWJ0b29sIG5hdGl2ZXNkay1nZXR0ZXh0IG5hdGl2ZXNkay1saWJmZmkgbmF0aXZlc2RrLXpsaWIgZ2xpYi0yLjAtbmF0aXZlIgorREVQRU5EUyA9ICJnbGliLTIuMC1uYXRpdmUgXAorICAgICAgICAgICB2aXJ0dWFsL2xpYmludGwgXAorICAgICAgICAgICB2aXJ0dWFsL2xpYmljb252IFwKKyAgICAgICAgICAgbGliZmZpIFwKKyAgICAgICAgICAgemxpYiBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnZGJ1cycsICcnLCBkKX0iCiAKIFBBQ0tBR0VTICs9ICIke1BOfS1jb2RlZ2VuICR7UE59LXV0aWxzIgogCiBMRUFEX1NPTkFNRSA9ICJsaWJnbGliLTIuMC4qIgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IGd0ay1kb2MgcGtnY29uZmlnIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBiYXNoLWNvbXBsZXRpb24gZ2lvLW1vZHVsZS1jYWNoZSBweXRob24zbmF0aXZlIG1hbnBhZ2VzCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IGd0ay1kb2MgcGtnY29uZmlnIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBiYXNoLWNvbXBsZXRpb24gZ2lvLW1vZHVsZS1jYWNoZSBtYW5wYWdlcwogCiBTID0gIiR7V09SS0RJUn0vZ2xpYi0ke1BWfSIKIApAQCAtNDcsNyArNDksNyBAQAogRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIke0NPUkVDT05GfSAtLWRpc2FibGUtc2VsaW51eCIKIAogIyBUZWxsIGNvbmZpZ3VyZSB0aGF0IHdlJ2xsIGhhdmUgZGJ1cy1kYWVtb24gb24gdGhlIHRhcmdldCBmb3IgdGhlIHRlc3RzCi1FWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICcgYWNfY3ZfcHJvZ19EQlVTX0RBRU1PTj1kYnVzLWRhZW1vbicsICcnLCBkKX0iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICcgYWNfY3ZfcHJvZ19EQlVTX0RBRU1PTj1kYnVzLWRhZW1vbicsICcnLCBkKX0iCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogCXNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L2dpby9nZGJ1cy0yLjAvY29kZWdlbi9nZGJ1cy1jb2RlZ2VuLmluCkBAIC04Myw3ICs4NSwxNCBAQAogIyBkb2Vzbid0IHN1cHBvcnQgbWlwczE2ZQogQ1BQRkxBR1NfYXBwZW5kX2NsYXNzLXRhcmdldF9taXBzMTZlID0gIiAtRE5WQUxHUklORD0xIgogCi1VU0VfTkxTID0gInllcyIKKyMgR0xpYiBnZW5lcmFsbHkgcmVxdWlyZXMgZ2V0dGV4dCB0byBiZSBwcmVzZW50IHNvIGZvciBVU0VfTkxTIHRvIHllcy4gIEZvcgorIyBuYXRpdmUgYnVpbGRzIGFzIGkxOG4gaXMgZGlzYWJsZWQgZ2xvYmFsbHkgd2UgY2FuIHRlbGwgaXQgdG8gdXNlIGEgZmFrZSBtc2dmbXQuCitVU0VfTkxTX2NsYXNzLXRhcmdldCA9ICJ5ZXMiCitVU0VfTkxTX2NsYXNzLW5hdGl2ZXNkayA9ICJ5ZXMiCitDQUNIRURfQ09ORklHVVJFVkFSU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBhY19jdl9wYXRoX01TR0ZNVD0vYmluL2ZhbHNlIgorCitFWEVFWFQgPSAiIgorRVhFRVhUX21pbmd3MzIgPSAiLmV4ZSIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogCWlmIFsgLWYgJHtEfSR7YmluZGlyfS9ndGVzdGVyLXJlcG9ydCBdOyB0aGVuCkBAIC05NSwxNSArMTA0LDE0IEBACiAJcm0gLWYgJHtEfSR7ZGF0YWRpcn0vZ2xpYi0yLjAvY29kZWdlbi8qLnB5YwogCXJtIC1mICR7RH0ke2RhdGFkaXJ9L2dsaWItMi4wL2NvZGVnZW4vKi5weW8KIAotCSMgU29tZSBkaXN0cm9zIGhhdmUgYm90aCAvYmluL3BlcmwgYW5kIC91c3IvYmluL3BlcmwsIGJ1dCB3ZSBzZXQgcGVybCBsb2NhdGlvbgotCSMgZm9yIHRhcmdldCBhcyAvdXNyL2Jpbi9wZXJsLCBzbyBmaXggaXQgdG8gL3Vzci9iaW4vcGVybC4KLQlpZiBbIC1mICR7RH0ke2JpbmRpcn0vZ2xpYi1ta2VudW1zIF07IHRoZW4KLQkJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgJHtEfSR7YmluZGlyfS9nbGliLW1rZW51bXMKLQlmaQotCiAJaWYgWyAtZSAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMgXTsgdGhlbgogCQlybSAtZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKIAlmaQorCisgICAgICAgICMgTWFrZSBzdXJlIGdpby1xdWVyeW1vZHVsZXMgaXMgdW5pcXVlIGFtb25nIG11bHRpbGlicworICAgICAgICBpZiB0ZXN0ICJ4JHtNTFBSRUZJWH0iICE9ICJ4IjsgdGhlbgorICAgICAgICAgICAgICAgIG12ICR7RH0ke2xpYmV4ZWNkaXJ9L2dpby1xdWVyeW1vZHVsZXMke0VYRUVYVH0gJHtEfSR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH1naW8tcXVlcnltb2R1bGVzJHtFWEVFWFR9CisgICAgICAgIGZpCiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CkBAIC0xMTQsMTggKzEyMiwxMiBAQAogCQkJcm0gJHtEfSR7ZGF0YWRpcn0vaW5zdGFsbGVkLXRlc3RzL2dsaWIvZ2RidXMtc2VyaWFsaXphdGlvbi50ZXN0CiAJCWZpCiAJZmkKLQotCSMgTWFrZSBzdXJlIGdpby1xdWVyeW1vZHVsZXMgaXMgdW5pcXVlIGFtb25nIG11bHRpbGlicwotCWlmIHRlc3QgIngke01MUFJFRklYfSIgIT0gIngiOyB0aGVuCi0JCW12ICR7RH0ke2xpYmV4ZWNkaXJ9L2dpby1xdWVyeW1vZHVsZXMgJHtEfSR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH1naW8tcXVlcnltb2R1bGVzCi0JZmkKIH0KIAotUkRFUEVORFNfJHtQTn0tY29kZWdlbiArPSAiXAotICAgICAgICAgICAgcHl0aG9uMyBcCi0gICAgICAgICAgICBweXRob24zLWRpc3R1dGlscyBcCi0gICAgICAgICAgICBweXRob24zLXhtbCBcCi0gICAgICAgICAgICIKK0NPREVHRU5fUFlUSE9OX1JERVBFTkRTID0gInB5dGhvbjMgcHl0aG9uMy1kaXN0dXRpbHMgcHl0aG9uMy14bWwiCitDT0RFR0VOX1BZVEhPTl9SREVQRU5EU19taW5ndzMyID0gIiIKKworUkRFUEVORFNfJHtQTn0tY29kZWdlbiArPSAiJHtDT0RFR0VOX1BZVEhPTl9SREVQRU5EU30iCiAKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJcCiAgICAgICAgICAgICBkYnVzIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc4MmJkOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjUwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIkdMaWIgbmV0d29ya2luZyBleHRlbnNpb25zIgotREVTQ1JJUFRJT04gPSAiZ2xpYi1uZXR3b3JraW5nIGNvbnRhaW5zIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgY2VydGFpbiBHTGliIG5ldHdvcmtpbmcgZmVhdHVyZXMgdGhhdCBjYW5ub3QgYmUgaW1wbGVtZW50ZWQgZGlyZWN0bHkgaW4gR0xpYiBpdHNlbGYgYmVjYXVzZSBvZiB0aGVpciBkZXBlbmRlbmNpZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2dsaWItbmV0d29ya2luZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCi0KLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjRkMDZkMDIyNDY0NmYyNzQ5MThiMWNiNmRhOWEwN2Y2IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiM2YxYTQ0MmYzYzJhNzM0OTQ2OTgzNTMyY2U1OWVkNDkxMjAzMTlmZGIxMGM5Mzg0NDdjMzczZDVlNTI4NmJlZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImNhLWNlcnRpZmljYXRlcyBnbnV0bHMiCi0KLSMgTm8gZXhwbGljaXQgZGVwZW5kZW5jeSBhcyBpdCB3b3JrcyB3aXRob3V0IGNhLWNlcnRpZmljYXRlcyBpbnN0YWxsZWQKLVBBQ0tBR0VDT05GSUdbY2EtY2VydGlmaWNhdGVzXSA9ICItLXdpdGgtY2EtY2VydGlmaWNhdGVzPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQsLS13aXRob3V0LWNhLWNlcnRpZmljYXRlcyIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLC0td2l0aG91dC1nbnV0bHMsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tsaWJwcm94eV0gPSAiLS13aXRoLWxpYnByb3h5LC0td2l0aG91dC1saWJwcm94eSxsaWJwcm94eSIKLVBBQ0tBR0VDT05GSUdbcGtjczExXSA9ICItLXdpdGgtcGtjczExLC0td2l0aG91dC1wa2NzMTEscDExLWtpdCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1nbm9tZS1wcm94eSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2lvLW1vZHVsZS1jYWNoZQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyouc28gJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyouYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNTQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTZmOGFmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi41NC4xLmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiR0xpYiBuZXR3b3JraW5nIGV4dGVuc2lvbnMiCitERVNDUklQVElPTiA9ICJnbGliLW5ldHdvcmtpbmcgY29udGFpbnMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBjZXJ0YWluIEdMaWIgbmV0d29ya2luZyBmZWF0dXJlcyB0aGF0IGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBpbiBHTGliIGl0c2VsZiBiZWNhdXNlIG9mIHRoZWlyIGRlcGVuZGVuY2llcy4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvZ2xpYi1uZXR3b3JraW5nLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKKworTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJnbGliLTIuMCIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTk4Njc0NjNmMTgyYzI3NjdiY2UwYzc0YmM5Y2M5ODEiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlYWE3ODdiNjUzMDE1YTBkZTMxYzkyOGU5YTE3ZWI1N2I0Y2UyM2M4Y2Y2ZjI3N2FmYWVjMGQ2ODUzMzUwMTJmIgorCitQQUNLQUdFQ09ORklHID8/PSAiY2EtY2VydGlmaWNhdGVzIGdudXRscyIKKworIyBObyBleHBsaWNpdCBkZXBlbmRlbmN5IGFzIGl0IHdvcmtzIHdpdGhvdXQgY2EtY2VydGlmaWNhdGVzIGluc3RhbGxlZAorUEFDS0FHRUNPTkZJR1tjYS1jZXJ0aWZpY2F0ZXNdID0gIi0td2l0aC1jYS1jZXJ0aWZpY2F0ZXM9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCwtLXdpdGhvdXQtY2EtY2VydGlmaWNhdGVzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2xpYnByb3h5XSA9ICItLXdpdGgtbGlicHJveHksLS13aXRob3V0LWxpYnByb3h5LGxpYnByb3h5IgorUEFDS0FHRUNPTkZJR1twa2NzMTFdID0gIi0td2l0aC1wa2NzMTEsLS13aXRob3V0LXBrY3MxMSxwMTEta2l0IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWdub21lLXByb3h5IgorCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnaW8tbW9kdWxlLWNhY2hlCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5zbyAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5hIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NDA4NWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiQ3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gdG9vbCBmb3IgZ2xpYmMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9saWJjLmh0bWwiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9ZTlhNTU4ZTI0M2IzNmQzMjA5ZjM4MGRlYjM5NGIyMTMgXAotICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCi0gICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi0jIFRlbGwgYXV0b3Rvb2xzIHRoYXQgd2UncmUgd29ya2luZyBpbiB0aGUgbG9jYWxlZGVmIGRpcmVjdG9yeQotIwotQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vbG9jYWxlZGVmIgotCi1pbmhlcml0IG5hdGl2ZQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06JHtGSUxFX0RJUk5BTUV9L2dsaWJjOiIKLQotU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKLUdMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSIKLQotU1JDUkVWX2dsaWJjID89ICJkMzAwMDQxYzUzM2EzZDgzN2M5ZjM3YTA5OWJjYzk1NDY2ODYwZTk4IgotU1JDUkVWX2xvY2FsZWRlZiA/PSAiZGZiNGFmZTU1MWM2YzZlOTRmOWNjODU0MTdiZDFmNTgyMTY4Yzg0MyIKLQotU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20va3Jhai9sb2NhbGVkZWY7YnJhbmNoPW1hc3RlcjtuYW1lPWxvY2FsZWRlZjtkZXN0c3VmZml4PWdpdC9sb2NhbGVkZWYgXAotICAgICAgICAgICBmaWxlOi8vMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcmNoaXZlLXBhdGgucGF0Y2ggXAotIgotIyBNYWtlcyBmb3IgYSByYXRoZXIgbG9uZyByZXYgKDIyIGNoYXJhY3RlcnMpLCBidXQuLi4KLSMKLVNSQ1JFVl9GT1JNQVQgPSAiZ2xpYmNfbG9jYWxlZGVmIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWdsaWJjPSR7U30iCi1DRkxBR1MgKz0gIi1mZ251ODktaW5saW5lIC1zdGQ9Z251OTkgLURJU19JTlwoeFwpPScwJyIKLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9sb2NhbGVkZWYgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlOTJlYjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI3LmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiQ3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gdG9vbCBmb3IgZ2xpYmMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9saWJjLmh0bWwiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9ZTlhNTU4ZTI0M2IzNmQzMjA5ZjM4MGRlYjM5NGIyMTMgXAorICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCisgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCisjIFRlbGwgYXV0b3Rvb2xzIHRoYXQgd2UncmUgd29ya2luZyBpbiB0aGUgbG9jYWxlZGVmIGRpcmVjdG9yeQorIworQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vbG9jYWxlZGVmIgorCitpbmhlcml0IG5hdGl2ZQoraW5oZXJpdCBhdXRvdG9vbHMKKworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06JHtGSUxFX0RJUk5BTUV9L2dsaWJjOiIKKworU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKK0dMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLig/ITkwKVxkKykqKSIKKworU1JDUkVWX2dsaWJjID89ICJkZjNmZjRlNDlkNGVlM2NiYmRhZWIwYjFjYjVkYzIzNDRjMDhiZTk4IgorU1JDUkVWX2xvY2FsZWRlZiA/PSAiZGU1YmRiZDVlNzZiNTQwM2E0MTUxYjliOWY5NThiNmNjYTM2YjNlNyIKKworU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCisgICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20va3Jhai9sb2NhbGVkZWY7YnJhbmNoPW1hc3RlcjtuYW1lPWxvY2FsZWRlZjtkZXN0c3VmZml4PWdpdC9sb2NhbGVkZWYgXAorICAgICAgICAgICBmaWxlOi8vMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcmNoaXZlLXBhdGgucGF0Y2ggXAorIgorIyBNYWtlcyBmb3IgYSByYXRoZXIgbG9uZyByZXYgKDIyIGNoYXJhY3RlcnMpLCBidXQuLi4KKyMKK1NSQ1JFVl9GT1JNQVQgPSAiZ2xpYmNfbG9jYWxlZGVmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWdsaWJjPSR7U30iCitDRkxBR1MgKz0gIi1mZ251ODktaW5saW5lIC1zdGQ9Z251OTkgLURJU19JTlwoeFwpPScwJyIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtCfS9sb2NhbGVkZWYgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb2xsYXRlcmFsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb2xsYXRlcmFsLmluYwppbmRleCBkZTg1OWQ1Li5hYTg3MWFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29sbGF0ZXJhbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbGxhdGVyYWwuaW5jCkBAIC03LDcgKzcsOCBAQAogIyBUaGlzIG5lZWRzIHRvIG1hdGNoIHdpdGggZ2xpYmMuaW5jLCBvdGhlcndpc2UgZ2xpYmMtc2NyaXB0cyBhbmQgZ2xpYmMtbG9jYWxlCiAjIHdpbGwgZmFpbCB0byBmaW5kIG1haW4gZ2xpYmMsIGZvciBkZXRhaWxzIHNlZQogIyBodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9waXBlcm1haWwvb3BlbmVtYmVkZGVkLWNvcmUvMjAxNS1KYW51YXJ5LzEwMDY3OS5odG1sCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCiAKIGRlbHRhc2sgZG9fZmV0Y2gKIGRlbHRhc2sgZG9fdW5wYWNrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWxfMi4yNy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWxfMi4yNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWxfMi4yNy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI3LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4yNy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI3LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMjYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4yNy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCmluZGV4IGI2ZDgwNzQuLjcyOGJjNTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKQEAgLTY2LDcgKzY2LDcgQEAKIAkJcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZXhlY2Rpcn0KIAlmaQogCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIGJpdHMvc3lzY2FsbC5oIGJpdHMvbG9uZy1kb3VibGUuaAorCW9lX211bHRpbGliX2hlYWRlciBiaXRzL3N5c2NhbGwuaCBiaXRzL2xvbmctZG91YmxlLmggYml0cy9mbG9hdG4uaAogCiAJaWYgWyAtZiAke0R9JHtiaW5kaXJ9L210cmFjZSBdOyB0aGVuCiAJCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnIC1lICcycyxleGVjLipwZXJsLGV4ZWMgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vbXRyYWNlCkBAIC05Nyw2ICs5Nyw3IEBACiAJaW5zdGFsbCAtbSAwNzU1ICR7U30vbnNjZC9uc2NkLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25zY2QKIAlpbnN0YWxsIC1tIDA3NTUgJHtTfS9uc2NkL25zY2QuY29uZiAke0R9JHtzeXNjb25mZGlyfS9uc2NkLmNvbmYKIAlzZWQgLWkgInMlZGFlbW9uJXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1leGVjJWciICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uc2NkCisJc2VkIC1pICJzfFwoZW5hYmxlLWNhY2hlXHRcK25ldGdyb3VwXHRcK1wpeWVzfFwxbm98IiAke0R9JHtzeXNjb25mZGlyfS9uc2NkLmNvbmYKIAogCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KIAlpbnN0YWxsIC1tIDA2NDQgJHtTfS9uc2NkL25zY2Quc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KQEAgLTExNywxMCArMTE4LDEwIEBACiAJCSMgVGhlIGFhcmNoNjQgQUJJIHNheXMgdGhlIGR5bmFtaWMgbGlua2VyIC1tdXN0LSBiZSAvbGliL2xkLWxpbnV4LWFhcmNoNjRbX2JlXS5zby4xCiAJCWluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0KIAkJaWYgWyAtZSAke0R9JHtiYXNlX2xpYmRpcn0vbGQtbGludXgtYWFyY2g2NC5zby4xIF07IHRoZW4KLQkJCWxuIC1zICR7QGJhc2VfcGF0aF9yZWxhdGl2ZSgnJHtub25hcmNoX2Jhc2VfbGliZGlyfScsICcke2Jhc2VfbGliZGlyfScpfS9sZC1saW51eC1hYXJjaDY0LnNvLjEgXAorCQkJbG4gLXMgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtub25hcmNoX2Jhc2VfbGliZGlyfScsICcke2Jhc2VfbGliZGlyfScpfS9sZC1saW51eC1hYXJjaDY0LnNvLjEgXAogCQkJCSR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2xkLWxpbnV4LWFhcmNoNjQuc28uMQogCQllbGlmIFsgLWUgJHtEfSR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LWFhcmNoNjRfYmUuc28uMSBdOyB0aGVuCi0JCQlsbiAtcyAke0BiYXNlX3BhdGhfcmVsYXRpdmUoJyR7bm9uYXJjaF9iYXNlX2xpYmRpcn0nLCAnJHtiYXNlX2xpYmRpcn0nKX0vbGQtbGludXgtYWFyY2g2NF9iZS5zby4xIFwKKwkJCWxuIC1zICR7QG9lLnBhdGgucmVsYXRpdmUoJyR7bm9uYXJjaF9iYXNlX2xpYmRpcn0nLCAnJHtiYXNlX2xpYmRpcn0nKX0vbGQtbGludXgtYWFyY2g2NF9iZS5zby4xIFwKIAkJCQkke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sZC1saW51eC1hYXJjaDY0X2JlLnNvLjEKIAkJZmkKIAlmaQpAQCAtMjA2LDggKzIwNywxMSBAQAogCXJtIC1yZiAke0R9LyR7bG9jYWxlZGlyfQogCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9sb2NhbGUKIAlpZiBbICIke2xpYmRpcn0iICE9ICIke2V4ZWNfcHJlZml4fS9saWIiIF07IHRoZW4KLQkJIyBUaGlzIGRpciBvbmx5IGV4aXN0cyB0byBob2xkIGxvY2FsZXMKLQkJcm0gLXJmICR7RH0ke2V4ZWNfcHJlZml4fS9saWIKKwkJaWYgWyAtZCAke0R9JHtleGVjX3ByZWZpeH0vbGliL2xvY2FsZSBdIDsgdGhlbgorCQkJcm0gLXJmICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbG9jYWxlCisJCQkjIGVycm9yIG91dCBpZiBkaXJlY3RvcnkgaXNuJ3QgZW1wdHkKKwkJCXJtIC1mICR7RH0ke2V4ZWNfcHJlZml4fS9saWIKKwkJZmkKIAlmaQogfQogYWRkdGFzayBkb19wb3N0c3Rhc2hfaW5zdGFsbF9jbGVhbnVwIGFmdGVyIGRvX3N0YXNoX2xvY2FsZSBkb19pbnN0YWxsIGJlZm9yZSBkb19wb3B1bGF0ZV9zeXNyb290IGRvX3BhY2thZ2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjI3LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjI2LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjI3LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLmluYwppbmRleCAyMWJiZGMyLi5jZTEyMjJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMKQEAgLTM1LDcgKzM1LDEwIEBACiBERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIGxpYmdjYy1pbml0aWFsIGxpbnV4LWxpYmMtaGVhZGVycyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1saWJjLWluaXRpYWwiCiAjIG5wdGwgbmVlZHMgbGliZ2NjIGJ1dCBkbG9wZW5zIGl0LCBzbyBvdXIgc2hsaWJzIGNvZGUgZG9lc24ndCBkZXRlY3QgdGhpcwogI1JERVBFTkRTXyR7UE59ICs9ICIke0BbJycsJ2xpYmdjYyddWyducHRsJyBpbiAnJHtHTElCQ19BRERPTlN9J119IgotUFJPVklERVMgPSAidmlydHVhbC9saWJjIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWxpYmMtZm9yLWdjYyIKKworQ1JZUFRQUk9WSURFUyA9ICJ2aXJ0dWFsL2NyeXB0IgorQ1JZUFRQUk9WSURFU19jbGFzcy1uYXRpdmVzZGsgPSAiIgorUFJPVklERVMgPSAidmlydHVhbC9saWJjIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWxpYmMtZm9yLWdjYyAke0NSWVBUUFJPVklERVN9IgogUFJPVklERVMgKz0gInZpcnR1YWwvbGliaW50bCB2aXJ0dWFsL2xpYmljb252IgogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgc3lzdGVtZAogCkBAIC00Nyw2ICs1MCw3IEBACiAgIGxpYmNfY3Zfcm9vdHNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKICAgbGliY19jdl9sb2NhbGVkaXI9JHtsb2NhbGVkaXJ9IFwKICAgbGliY19jdl9zc3Bfc3Ryb25nPW5vIFwKKyAgbGliY19jdl9zc3BfYWxsPW5vIFwKICAgbGliY19jdl9zc3A9bm8gXAogIgogCkBAIC01Nyw3ICs2MSw4IEBACiAjIFRoaXMgbmVlZHMgdG8gbWF0Y2ggd2l0aCBnbGliYy1jb2xsYXRlcmFsLmluYywgb3RoZXJ3aXNlIGdsaWJjLXNjcmlwdHMgYW5kIGdsaWJjLWxvY2FsZQogIyB3aWxsIGZhaWwgdG8gZmluZCBtYWluIGdsaWJjLCBmb3IgZGV0YWlscyBzZWUKICMgaHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvcGlwZXJtYWlsL29wZW5lbWJlZGRlZC1jb3JlLzIwMTUtSmFudWFyeS8xMDA2NzkuaHRtbAotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgogCiAjIGdsaWJjIHVzZXMgUEFSQUxMRUxNRkxBR1MgdmFyaWFibGUgdG8gcGFzcyBwYXJhbGxlbCBidWlsZCBpbmZvIHNvIHRyYW5zZmVyCiAjIFBBUkFMTEVMX01BS0UgaW50byBQQVJBTExFTE1GTEFHUyBhbmQgZW1wdHkgb3V0IFBBUkFMTEVMX01BS0UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoCmluZGV4IDE5YzFkOWIuLjg2MjM0YzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gODEzNDZiMmY3NzM1Njk4MDc4ZDViZjkxOWE3OGI2YzAyNjlkNmZlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmQ5MWI2MGNlNmZmMDFmNDliMTczYjZiNDVlMjNjZTk0OTExYjJhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjQ4OjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMjVdIG5hdGl2ZXNkay1nbGliYzogTG9vayBmb3IgaG9zdCBzeXN0ZW0gbGQuc28uY2FjaGUgYXMKK1N1YmplY3Q6IFtQQVRDSCAwMS8yN10gbmF0aXZlc2RrLWdsaWJjOiBMb29rIGZvciBob3N0IHN5c3RlbSBsZC5zby5jYWNoZSBhcwogIHdlbGwKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KQEAgLTMxLDEwICszMSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggYzFiNmQ0YmEwZi4uZDdhZjllYmNiYyAxMDA2NDQKK2luZGV4IDc1NTRhOTliNWEuLmE3M2QxMWE2MmYgMTAwNjQ0CiAtLS0gYS9lbGYvZGwtbG9hZC5jCiArKysgYi9lbGYvZGwtbG9hZC5jCi1AQCAtMjA1NCw2ICsyMDU0LDE0IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKK0BAIC0yMDA3LDYgKzIwMDcsMTQgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAKQEAgLTQ5LDcgKzQ5LDcgQEAKICAjaWZkZWYgVVNFX0xEQ09ORklHCiAgICAgICAgaWYgKGZkID09IC0xCiAgCSAgJiYgKF9fZ2xpYmNfbGlrZWx5ICgobW9kZSAmIF9fUlRMRF9TRUNVUkUpID09IDApCi1AQCAtMjExMiwxNCArMjEyMCw2IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKK0BAIC0yMDY1LDE0ICsyMDczLDYgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLAogIAl9CiAgI2VuZGlmCiAgCkBAIC02NSw1ICs2NSw1IEBACiAgICAgICAgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKEdMUk8oZGxfZGVidWdfbWFzaykgJiBETF9ERUJVR19MSUJTKSkKICAJX2RsX2RlYnVnX3ByaW50ZiAoIlxuIik7CiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCmluZGV4IDJjZTI0MGIuLjg5OTQ4MWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gODJmMmU5MTBlYzBlMmRlNmE5ZTJiMDA3ODI1YmRkZmM1ODUwNTc1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTA3MzZmN2ZjMWZkYzllMWY3YzA1ZjFmZWM3NWM5NzdkOWJlOTIyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUwOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMjVdIG5hdGl2ZXNkay1nbGliYzogRml4IGJ1ZmZlciBvdmVycnVuIHdpdGggYSByZWxvY2F0ZWQKK1N1YmplY3Q6IFtQQVRDSCAwMi8yN10gbmF0aXZlc2RrLWdsaWJjOiBGaXggYnVmZmVyIG92ZXJydW4gd2l0aCBhIHJlbG9jYXRlZAogIFNESwogCiBXaGVuIGxkLWxpbnV4LSouc28uMiBpcyByZWxvY2F0ZWQgdG8gYSBwYXRoIHRoYXQgaXMgbG9uZ2VyIHRoYW4gdGhlCkBAIC0yMiwxMCArMjIsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IGQ3YWY5ZWJjYmMuLjE5YzFkYjk5NDggMTAwNjQ0CitpbmRleCBhNzNkMTFhNjJmLi42MmUzZWVlNDc4IDEwMDY0NAogLS0tIGEvZWxmL2RsLWxvYWQuYwogKysrIGIvZWxmL2RsLWxvYWQuYwotQEAgLTE3NTMsNyArMTc1MywxOSBAQCBvcGVuX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgbW9kZSwKK0BAIC0xNzA3LDcgKzE3MDcsMTkgQEAgb3Blbl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwgaW50IG1vZGUsCiAgICAgICAgIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgd2hlbiBydGxkIGlzIHJ1biBkaXJlY3RseS4gICovCiAgICAgIHJldHVybiAtMTsKICAKQEAgLTQ2LDUgKzQ2LDUgQEAKICAgICAgewogICAgICAgIHN0cnVjdCByX3NlYXJjaF9wYXRoX2VsZW0gKnRoaXNfZGlyID0gKmRpcnM7CiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCmluZGV4IDM5N2U4YjMuLjAzZjk5OTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNDkwYTBlYjRkYTFhZjcyNmVhNWQ2OGUzZWZjMGQxOGJhOTRjNDA1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjk1ZTFjYmZmNmVlNmRiMzQzNWMzM2U1NTMxMWM2N2FkZjQ0NDc2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUxOjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMjVdIG5hdGl2ZXNkay1nbGliYzogUmFpc2UgdGhlIHNpemUgb2YgYXJyYXlzIGNvbnRhaW5pbmcgZGwKK1N1YmplY3Q6IFtQQVRDSCAwMy8yN10gbmF0aXZlc2RrLWdsaWJjOiBSYWlzZSB0aGUgc2l6ZSBvZiBhcnJheXMgY29udGFpbmluZyBkbAogIHBhdGhzCiAKIFRoaXMgcGF0Y2ggcHV0cyB0aGUgZHluYW1pYyBsb2FkZXIgcGF0aCBpbiB0aGUgYmluYXJpZXMsIFNZU1RFTV9ESVJTIHN0cmluZ3MKQEAgLTI2LDcgKzI2LDcgQEAKICA3IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWNhY2hlLmMgYi9lbGYvZGwtY2FjaGUuYwotaW5kZXggZTk2MzJkYTBiMy4uNGRlNTI5ZDJjZiAxMDA2NDQKK2luZGV4IDZlZTUxNTNmZjkuLjM3YTVmNzAxZmEgMTAwNjQ0CiAtLS0gYS9lbGYvZGwtY2FjaGUuYwogKysrIGIvZWxmL2RsLWNhY2hlLmMKIEBAIC0xMzMsNiArMTMzLDEwIEBAIGRvCQkJCQkJCQkJICAgICAgXApAQCAtMzgsMTQgKzM4LDE0IEBACiArCiArCiAgaW50Ci0gaW50ZXJuYWxfZnVuY3Rpb24KICBfZGxfY2FjaGVfbGliY21wIChjb25zdCBjaGFyICpwMSwgY29uc3QgY2hhciAqcDIpCisgewogZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCi1pbmRleCAxOWMxZGI5OTQ4Li43MGMyNTliNDAwIDEwMDY0NAoraW5kZXggNjJlM2VlZTQ3OC4uNmRkYmE3MzY1MCAxMDA2NDQKIC0tLSBhL2VsZi9kbC1sb2FkLmMKICsrKyBiL2VsZi9kbC1sb2FkLmMKLUBAIC0xMDYsOCArMTA2LDggQEAgc3RhdGljIHNpemVfdCBtYXhfY2Fwc3RybGVuIGF0dHJpYnV0ZV9yZWxybzsKLSAvKiBHZXQgdGhlIGdlbmVyYXRlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdHJ1c3RlZCBkaXJlY3Rvcmllcy4gICovCitAQCAtMTA5LDggKzEwOSw4IEBAIHN0YXRpYyBzaXplX3QgbWF4X2NhcHN0cmxlbiBhdHRyaWJ1dGVfcmVscm87CisgICAgZ2VuLXRydXN0ZWQtZGlycy5hd2suICAqLwogICNpbmNsdWRlICJ0cnVzdGVkLWRpcnMuaCIKICAKIC1zdGF0aWMgY29uc3QgY2hhciBzeXN0ZW1fZGlyc1tdID0gU1lTVEVNX0RJUlM7CkBAIC01Niw3ICs1Niw3IEBACiAgICBTWVNURU1fRElSU19MRU4KICB9OwogZGlmZiAtLWdpdCBhL2VsZi9pbnRlcnAuYyBiL2VsZi9pbnRlcnAuYwotaW5kZXggYjZlOGYwNDQ0NC4uNDdjMjA0MTViYyAxMDA2NDQKK2luZGV4IDljZDUwYzcyOTEuLmZjMmYzOWQ3M2MgMTAwNjQ0CiAtLS0gYS9lbGYvaW50ZXJwLmMKICsrKyBiL2VsZi9pbnRlcnAuYwogQEAgLTE4LDUgKzE4LDUgQEAKQEAgLTY3LDcgKzY3LDcgQEAKICtjb25zdCBjaGFyIF9faW52b2tlX2R5bmFtaWNfbGlua2VyX19bNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuaW50ZXJwIikpKQogICAgPSBSVU5USU1FX0xJTktFUjsKIGRpZmYgLS1naXQgYS9lbGYvbGRjb25maWcuYyBiL2VsZi9sZGNvbmZpZy5jCi1pbmRleCA5OWNhZjllOWJiLi4zNmVhNWRmNWYxIDEwMDY0NAoraW5kZXggZmJkZDgxNGVkZi4uOWY0ZDhkNjliMSAxMDA2NDQKIC0tLSBhL2VsZi9sZGNvbmZpZy5jCiArKysgYi9lbGYvbGRjb25maWcuYwogQEAgLTE2OCw2ICsxNjgsOSBAQCBzdGF0aWMgc3RydWN0IGFyZ3AgYXJncCA9CkBAIC04MSw3ICs4MSw3IEBACiAgICAgYSBwbGF0Zm9ybS4gICovCiAgc3RhdGljIGludAogZGlmZiAtLWdpdCBhL2VsZi9ydGxkLmMgYi9lbGYvcnRsZC5jCi1pbmRleCA2NTY0N2ZiMWM4Li5jZDgzODFjYjMzIDEwMDY0NAoraW5kZXggNDUzZjU2ZWIxNS4uMDhlMGM0Yzk0YiAxMDA2NDQKIC0tLSBhL2VsZi9ydGxkLmMKICsrKyBiL2VsZi9ydGxkLmMKIEBAIC0xMjgsNiArMTI4LDcgQEAgZHNvX25hbWVfdmFsaWRfZm9yX3N1aWQgKGNvbnN0IGNoYXIgKnApCkBAIC05Miw3ICs5Miw3IEBACiAgCiAgLyogTERfQVVESVQgdmFyaWFibGUgY29udGVudHMuICBNdXN0IGJlIHByb2Nlc3NlZCBiZWZvcmUgdGhlCiAgICAgYXVkaXRfbGlzdCBiZWxvdy4gICovCi1AQCAtOTk5LDEyICsxMDAwLDEyIEBAIG9mIHRoaXMgaGVscGVyIHByb2dyYW07IGNoYW5jZXMgYXJlIHlvdSBkaWQgbm90IGludGVuZCB0byBydW4gdGhpcyBwcm9ncmFtLlxuXAorQEAgLTEwMDAsMTIgKzEwMDEsMTIgQEAgb2YgdGhpcyBoZWxwZXIgcHJvZ3JhbTsgY2hhbmNlcyBhcmUgeW91IGRpZCBub3QgaW50ZW5kIHRvIHJ1biB0aGlzIHByb2dyYW0uXG5cCiAgICAtLWxpc3QgICAgICAgICAgICAgICAgbGlzdCBhbGwgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhleSBhcmUgcmVzb2x2ZWRcblwKICAgIC0tdmVyaWZ5ICAgICAgICAgICAgICB2ZXJpZnkgdGhhdCBnaXZlbiBvYmplY3QgcmVhbGx5IGlzIGEgZHluYW1pY2FsbHkgbGlua2VkXG5cCiAgCQkJb2JqZWN0IHdlIGNhbiBoYW5kbGVcblwKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgICAgICsrX2RsX3NraXBfYXJnczsKICAgICAgICAtLV9kbF9hcmdjOwogZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NvbmYuYyBiL2ljb252L2djb252X2NvbmYuYwotaW5kZXggNWFhMDU1ZGU2ZS4uYjlhMTRiOWJkMyAxMDA2NDQKK2luZGV4IGQ2Y2Y5ZDJhM2UuLjlmY2Y5NzAxNDQgMTAwNjQ0CiAtLS0gYS9pY29udi9nY29udl9jb25mLmMKICsrKyBiL2ljb252L2djb252X2NvbmYuYwogQEAgLTM2LDcgKzM2LDcgQEAKQEAgLTEyMSw3ICsxMjEsNyBAQAogIC8qIFRoZSBwYXRoIGVsZW1lbnRzLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBfX2djb252X2dldF9wYXRoIGZ1bmN0aW9uLgogICAgIEFsbCBwYXRoIGVsZW1lbnRzIGVuZCBpbiBhIHNsYXNoLiAgKi8KIGRpZmYgLS1naXQgYS9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaCBiL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCi1pbmRleCAxZjBiOGY2MjlkLi5hY2JlNjgzOTlkIDEwMDY0NAoraW5kZXggY2Y0M2YxY2YzYi4uN2YwN2FkZGU1MyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCiArKysgYi9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAogQEAgLTI3LDEwICsyNyw2IEBACkBAIC0xMzYsNSArMTM2LDUgQEAKICAjIGRlZmluZSBhZGRfc3lzdGVtX2RpcihkaXIpIGFkZF9kaXIgKGRpcikKICAjZW5kaWYKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaAppbmRleCA4ZGI0N2JjLi5mOWQ3MGMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gOGZlMWI1NjE4MGMzMGQyMzdjYzJhYjlhNWE5Yzk3YTAzMTFmNDFkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMmJhZmRiZDcwNjc3OTRjNmEyNGU1ZTg1NjA4YzBlYzQ2MzhjNTY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjM1OjM1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMjVdIG5hdGl2ZXNkay1nbGliYzogQWxsb3cgNjQgYml0IGF0b21pY3MgZm9yIHg4NgorU3ViamVjdDogW1BBVENIIDA0LzI3XSBuYXRpdmVzZGstZ2xpYmM6IEFsbG93IDY0IGJpdCBhdG9taWNzIGZvciB4ODYKIAogVGhlIGZpeCBjb25zaXN0IG9mIGFsbG93aW5nIDY0Yml0IGF0b21pYyBvcHMgZm9yIHg4Ni4KIFRoaXMgc2hvdWxkIGJlIHNhZmUgZm9yIGk1ODYgYW5kIG5ld2VyIENQVXMuCkBAIC0xNyw3ICsxNyw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL2kzODYvYXRvbWljLW1hY2hpbmUuaCBiL3N5c2RlcHMvaTM4Ni9hdG9taWMtbWFjaGluZS5oCi1pbmRleCAwZTI0MjAwNjE3Li4xNTMyZjUyZGVjIDEwMDY0NAoraW5kZXggMjcyZGE1ZGQ4Zi4uNDA5Yzc1OWYxNCAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvaTM4Ni9hdG9taWMtbWFjaGluZS5oCiArKysgYi9zeXNkZXBzL2kzODYvYXRvbWljLW1hY2hpbmUuaAogQEAgLTU0LDcgKzU0LDcgQEAgdHlwZWRlZiB1aW50bWF4X3QgdWF0b21pY19tYXhfdDsKQEAgLTMwLDUgKzMwLDUgQEAKICAjZGVmaW5lIEFUT01JQ19FWENIQU5HRV9VU0VTX0NBUyAwCiAgCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCmluZGV4IDk1NmIyYWEuLmFkOTEwNmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYjllZGNjODQ1NjQxOTU2YjcyODZjNjBjODMzZjA1YTlmNzBjZmFiOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjYxYWRmZTljMjIwZDEwNjE3YmY2YmIyODM4Mjc0NzFjMzk1NmIwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjAxOjUwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMjVdIGZzbCBlNTAwL2U1NTAwL2U2NTAwLzYwM2UgZnNxcnQgaW1wbGVtZW50YXRpb24KK1N1YmplY3Q6IFtQQVRDSCAwNS8yN10gZnNsIGU1MDAvZTU1MDAvZTY1MDAvNjAzZSBmc3FydCBpbXBsZW1lbnRhdGlvbgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEVkbWFyIFdpZW5za29za2kgPGVkbWFyQGZyZWVzY2FsZS5jb20+CkBAIC0xNTgwLDUgKzE1ODAsNSBAQAogQEAgLTAsMCArMSBAQAogK3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdQogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaAppbmRleCBjNzRmZWFkLi5hM2Q1MGZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDMyNDIwMjQ4OGExYzI0MzliZTM0NTc0NTcyMmY1Y2IwNGMwZTA4NDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDYxNTU5OGZjY2E2NDQ2MWE3MWQ4NGY3NTZkNzUzNzRmMDJkOTE0YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxMToyMiArMDAwMAotU3ViamVjdDogW1BBVENIIDA2LzI1XSByZWFkbGliOiBBZGQgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIHRvIGtub3duCitTdWJqZWN0OiBbUEFUQ0ggMDYvMjddIHJlYWRsaWI6IEFkZCBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMgdG8ga25vd24KICBuYW1lcwogCiBUaGlzIGJvbHRzIGluIGEgaG9vayBmb3IgT0UgdG8gcGFzcyBpdHMgb3duIHZlcnNpb24gb2YgaW50ZXJwcmV0ZXIKQEAgLTE3LDcgKzE3LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL2VsZi9yZWFkbGliLmMgYi9lbGYvcmVhZGxpYi5jCi1pbmRleCBkMjc4YTE4OWIyLi5hODRjYjg1MTU4IDEwMDY0NAoraW5kZXggNTczYzAxNDc2Yy4uZDhjNzQxMjI4NyAxMDA2NDQKIC0tLSBhL2VsZi9yZWFkbGliLmMKICsrKyBiL2VsZi9yZWFkbGliLmMKIEBAIC01MSw2ICs1MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMgaW50ZXJwcmV0ZXJzW10gPQpAQCAtMjksNSArMjksNSBAQAogIAogIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMga25vd25fbGlic1tdID0KIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKaW5kZXggYjY0MzI3Ni4uMTIzNGRmMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBjZjAwYmY5ZGU4MTI4MTcxZTc5YTAxOWRlODA5ZTM1ZjNhZWVkMjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4MDRiNzNhZTI5NWJkZmRhMjkzNDFlODlmMmQwYzFiOTk0OTJkYzlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTU6MDcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8yNV0gcHBjL3NxcnQ6IEZpeCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJworU3ViamVjdDogW1BBVENIIDA3LzI3XSBwcGMvc3FydDogRml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCiAKIG9uIHBwYyBmaXhlcyB0aGUgZXJyb3JzIGxpa2UgYmVsb3cKIHwgLi8ubGlicy9saWJwdWxzZWNvcmUtMS4xLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJwpAQCAtMjA0LDUgKzIwNCw1IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKaW5kZXggM2FlZWM1Mi4uMWI0MzY0NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBiYWJlMzExZGVjYTllZTI3MzAyNzhmMTNiMDYxYjkxNGI1Mjg2ZGMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxYTUzMDg0MjQ5ZDlkYWUxZWY0MjgxMjQ2ZWZjODk5YzhmOWQ2M2VkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTY6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8yNV0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbAorU3ViamVjdDogW1BBVENIIDA4LzI3XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCiAgb3V0IF9fc2xvdyB2ZXJzaW9ucwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKQEAgLTM4Myw1ICszODMsNSBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKaW5kZXggN2Q1YzJlMy4uZWE0OTg1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5M2I1ZDZiZWQxOTkzOTAzOTAzMWM0NWI3NzdkMjk2MTlkYjA2MTg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0ODI2MmI2ZGRhOTM1Mjc4YTQwMzc0ZGRmMDA4MGFiNmNjOTk5NTgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjA6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8yNV0gUXVvdGUgZnJvbSBidWcgMTQ0MyB3aGljaCBleHBsYWlucyB3aGF0IHRoZSBwYXRjaCBkb2VzCitTdWJqZWN0OiBbUEFUQ0ggMDkvMjddIFF1b3RlIGZyb20gYnVnIDE0NDMgd2hpY2ggZXhwbGFpbnMgd2hhdCB0aGUgcGF0Y2ggZG9lcwogIDoKIAogICBXZSBidWlsZCBzb21lIHJhbmRvbSBwcm9ncmFtIGFuZCBsaW5rIGl0IHdpdGggLWx1c3QuICBXaGVuIHdlIHJ1biBpdCwKQEAgLTQ1LDEwICs0NSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oIGIvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCi1pbmRleCA3MDUzZWFkMTZlLi4wYjFlMTcxNmIwIDEwMDY0NAoraW5kZXggOGEwMGVhYjVlMy4uNjIzZWRjYjFiZCAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAogKysrIGIvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCi1AQCAtNTAwLDcgKzUwMCw3IEBAIGVsZl9tYWNoaW5lX3JlbCAoc3RydWN0IGxpbmtfbWFwICptYXAsIGNvbnN0IEVsZjMyX1JlbCAqcmVsb2MsCitAQCAtNTEwLDcgKzUxMCw3IEBAIGVsZl9tYWNoaW5lX3JlbCAoc3RydWN0IGxpbmtfbWFwICptYXAsIGNvbnN0IEVsZjMyX1JlbCAqcmVsb2MsCiAgCiAgCWNhc2UgUl9BUk1fVExTX0RUUE9GRjMyOgogIAkgIGlmIChzeW0gIT0gTlVMTCkKQEAgLTU4LDUgKzU4LDUgQEAKICAKICAJY2FzZSBSX0FSTV9UTFNfVFBPRkYzMjoKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaAppbmRleCA3Mjc1YzNlLi4xNzUxMzE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMWE2ZTBmNGVlODU4NGIwNDIyNjE1NmRmMWEzZGUzZTQ2N2YwZWY2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzJlYTU0MTA5MDlhZWY2YjZhZWU3MGU3ZjlhODhkNTM0NTgzYWEwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KIERhdGU6IFdlZCwgMTkgRGVjIDIwMTIgMDQ6Mzk6NTcgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8yNV0gZWdsaWJjOiBydW4gbGlibS1lcnItdGFiLnBsIHdpdGggc3BlY2lmaWMgZGlycyBpbiAke1N9CitTdWJqZWN0OiBbUEFUQ0ggMTAvMjddIGVnbGliYzogcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMgaW4gJHtTfQogCiBsaWJtLWVyci10YWIucGwgd2lsbCBwYXJzZSBhbGwgdGhlIGZpbGVzIG5hbWVkICJsaWJtLXRlc3QtdWxwcyIKIGluIHRoZSBnaXZlbiBkaXIgcmVjdXJzaXZlbHkuIFRvIGF2b2lkIHBhcnNpbmcgdGhlIG9uZSBpbgpAQCAtMTgsMTAgKzE4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbWFudWFsL01ha2VmaWxlIGIvbWFudWFsL01ha2VmaWxlCi1pbmRleCA0ZWQ2M2E4ZWYzLi5lODk5MTllYjE5IDEwMDY0NAoraW5kZXggYzI3NTY2NDBhNy4uMWI1YmIxNmE5NiAxMDA2NDQKIC0tLSBhL21hbnVhbC9NYWtlZmlsZQogKysrIGIvbWFudWFsL01ha2VmaWxlCi1AQCAtMTA1LDcgKzEwNSw4IEBAICQob2JqcGZ4KWxpYm0tZXJyLnRleGk6ICQob2JqcGZ4KXN0YW1wLWxpYm0tZXJyCitAQCAtMTAyLDcgKzEwMiw4IEBAICQob2JqcGZ4KWxpYm0tZXJyLnRleGk6ICQob2JqcGZ4KXN0YW1wLWxpYm0tZXJyCiAgJChvYmpwZngpc3RhbXAtbGlibS1lcnI6IGxpYm0tZXJyLXRhYi5wbCAkKHdpbGRjYXJkICQoZm9yZWFjaCBkaXIsJChzeXNkaXJzKSxcCiAgCQkJCQkJICAgICAkKGRpcikvbGlibS10ZXN0LXVscHMpKQogIAlwd2Q9YHB3ZGA7IFwKQEAgLTMyLDUgKzMyLDUgQEAKICAJdG91Y2ggJEAKICAKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKaW5kZXggODRmMmNhNS4uMWU3MGIyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5YjJhZjZjYmY2OGQzMzUzZDcyNTE5ZTdmNmM0NmJlY2I3YmQxZDBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4YWU5OThhMTBiMjQ1NDVlMGMxMmYxZjNkOGJlOTdiMTkxMTc4MjA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjQ6NDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8yNV0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbAorU3ViamVjdDogW1BBVENIIDExLzI3XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCiAgb3V0IF9fc2xvdyB2ZXJzaW9ucwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKQEAgLTU3LDUgKzU3LDUgQEAKICAjZW5kaWYKICB7CiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCmluZGV4IDJiZjZiMjMuLmMzNWI3NTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZmZkM2M1YTA0ZDhmMmYyNmZlYTcxZmVkNGNlNDFlODhiNmY1MTA4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGY5ZjM5NzYxOTA5ZTY3YmQ2ZDI5Yjk3MGI3MTY1ODYzZTMzZTU2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI3OjEwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMjVdIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYzogaGFuZGxlIGNvcnJlY3RseQorU3ViamVjdDogW1BBVENIIDEyLzI3XSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWM6IGhhbmRsZSBjb3JyZWN0bHkKICAkbGliY19jdl9yb290c2JpbmRpcgogCiBVcHN0cmVhbS1TdGF0dXM6UGVuZGluZwpAQCAtMTQsNyArMTQsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCi1pbmRleCA3MTI0M2FkMGM2Li5mNTc4MTg3NTc2IDEwMDY0NAoraW5kZXggYzE1ZDEwODdlOC4uMzdjYzk4M2YyYSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQogKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCiBAQCAtMzIsNiArMzIsNiBAQCBjYXNlICIkcHJlZml4IiBpbgpAQCAtMzgsNSArMzgsNSBAQAogICAgOzsKICBlc2FjCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKaW5kZXggMDk5ZmU1MC4uNjJjNjUyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDA0OWNjZTgyZjM1ZTBkODY0ZDk4MDc1YjgzODg4ZGJiYTRkNjhhZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJiYTdhNjQ3YjYzNjYxOGQ1ZmQwODNlOTA0Zjk5NWY3NzM2YjkxNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyODo0MSArMDAwMAotU3ViamVjdDogW1BBVENIIDEzLzI1XSBBZGQgdW51c2VkIGF0dHJpYnV0ZQorU3ViamVjdDogW1BBVENIIDEzLzI3XSBBZGQgdW51c2VkIGF0dHJpYnV0ZQogCiBIZWxwcyBpbiBhdm9pZGluZyBnY2Mgd2FybmluZyB3aGVuIGhlYWRlciBpcyBpcyBpbmNsdWRlZCBpbgogYSBzb3VyY2UgZmlsZSB3aGljaCBkb2VzIG5vdCB1c2UgYm90aCBmdW5jdGlvbnMKQEAgLTE3LDcgKzE3LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NoYXJzZXQuaCBiL2ljb252L2djb252X2NoYXJzZXQuaAotaW5kZXggMThkOGJkNmFlNy4uZWI3MjlkYTVkMyAxMDA2NDQKK2luZGV4IDEyM2UyYTYyY2UuLjYzY2M4M2VjODQgMTAwNjQ0CiAtLS0gYS9pY29udi9nY29udl9jaGFyc2V0LmgKICsrKyBiL2ljb252L2djb252X2NoYXJzZXQuaAogQEAgLTIxLDcgKzIxLDcgQEAKQEAgLTMwLDUgKzMwLDUgQEAKICB7CiAgICBpbnQgc2xhc2hfY291bnQgPSAwOwogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCmluZGV4IGRkYzcwZTAuLjY2OTExMjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAzYjkwNGJlZTgxYTFjZmU4MWUzZjQzN2I1ZjMyOTZlZmQ1NGE1MWFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2MmY0NGNlM2RkMDFhMjU3Y2Y2NzExNmUzNTU0OTJjYjE2NTlhOTE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzE6MDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNC8yNV0gJ3llcycgd2l0aGluIHRoZSBwYXRoIHNldHMgd3JvbmcgY29uZmlnIHZhcmlhYmxlcworU3ViamVjdDogW1BBVENIIDE0LzI3XSAneWVzJyB3aXRoaW4gdGhlIHBhdGggc2V0cyB3cm9uZyBjb25maWcgdmFyaWFibGVzCiAKIEl0IHNlZW1zIHRoYXQgdGhlICdBQ19FR1JFUF9DUFAoeWVzLi4uJyBleGFtcGxlIGlzIHF1aXRlIHBvcHVsYXIKIGJ1dCBiZWluZyBzdWNoIGEgc2hvcnQgd29yZCB0byBncmVwIGl0IGlzIGxpa2VseSB0byBwcm9kdWNlCkBAIC0xNjUsNyArMTY1LDcgQEAKICAgIF0sIGxpYmNfY3ZfbmlvczJfYmU9eWVzLCBsaWJjX2N2X25pb3MyX2JlPW5vKV0pCiAgaWYgdGVzdCAkbGliY19jdl9uaW9zMl9iZSA9IHllczsgdGhlbgogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKLWluZGV4IGE1NTEzZmFkNDguLjI4M2IyOTNmZjMgMTAwNjQ0CitpbmRleCAxZWU3ZjQxYTM2Li43N2UzOGJlYmRlIDEwMDY0NAogLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCiBAQCAtNDE0LDExICs0MTQsMTEgQEAgZWxzZQpAQCAtMTk5LDcgKzE5OSw3IEBACiAgCiAgbGliY19taXBzX25hbj0KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLWluZGV4IDRlN2ZjZjFkOTcuLjQ0YTljYjM3OTEgMTAwNjQ0CitpbmRleCBhZTdmMjU0ZGE0Li44NzQ1MTkwMDBiIDEwMDY0NAogLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCiArKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKIEBAIC0xNTUsMTIgKzE1NSwxMiBAQCBlbHNlCkBAIC0yNTksNSArMjU5LDUgQEAKICAgICAgXSwgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9eWVzLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubyldKQogICAgaWYgdGVzdCAkbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGYgPSBubzsgdGhlbgogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaAppbmRleCBiNWZlZmZhLi42NmJmNGZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGI4Y2I4Y2IyNDJjYjc1MWQ4ODhmZWIxYWRhNWM0ZDBmMDVjYmMxZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGFjMjQwZmIwMWY2NDcwYWMyMDc5NjhhZGZiZTIwY2NjOTNiMTZmOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMzowMyArMDAwMAotU3ViamVjdDogW1BBVENIIDE1LzI1XSB0aW1lem9uZTogcmUtd3JpdHRlbiB0enNlbGVjdCBhcyBwb3NpeCBzaAorU3ViamVjdDogW1BBVENIIDE1LzI3XSB0aW1lem9uZTogcmUtd3JpdHRlbiB0enNlbGVjdCBhcyBwb3NpeCBzaAogCiBUbyBhdm9pZCB0aGUgYmFzaCBkZXBlbmRlbmN5LgogCkBAIC0xNSw3ICsxNSw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS90aW1lem9uZS9NYWtlZmlsZSBiL3RpbWV6b25lL01ha2VmaWxlCi1pbmRleCBkNmNjN2JhMzU3Li5lNGVhZDZlMWE3IDEwMDY0NAoraW5kZXggMDE5NGFiYTRhMS4uNThlNTQwNWEwNSAxMDA2NDQKIC0tLSBhL3RpbWV6b25lL01ha2VmaWxlCiArKysgYi90aW1lem9uZS9NYWtlZmlsZQogQEAgLTEyMiw3ICsxMjIsNyBAQCAkKHRlc3RkYXRhKS9YVCU6IHRlc3RkYXRhL1hUJQpAQCAtNDEsNSArNDEsNSBAQAogICMgT3V0cHV0IG9uZSBhcmd1bWVudCBhcy1pcyB0byBzdGFuZGFyZCBvdXRwdXQuCiAgIyBTYWZlciB0aGFuICdlY2hvJywgd2hpY2ggY2FuIG1pc2hhbmRsZSAnXCcgb3IgbGVhZGluZyAnLScuCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCmluZGV4IDFkOTk4M2IuLjBiMWVlOTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNjlkMzc4MDAxYWRmZTlhMzU5ZDJmNGIwNjljMWVkMmQzNmRlNDQ4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzkwYjEzM2ZmMmJjNWI3N2VkODUzM2I4OTk5YWJjNjVlZDBkYTAyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjMzOjAyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvMjVdIFJlbW92ZSBiYXNoIGRlcGVuZGVuY3kgZm9yIG5zY2QgaW5pdCBzY3JpcHQKK1N1YmplY3Q6IFtQQVRDSCAxNi8yN10gUmVtb3ZlIGJhc2ggZGVwZW5kZW5jeSBmb3IgbnNjZCBpbml0IHNjcmlwdAogCiBUaGUgbnNjZCBpbml0IHNjcmlwdCB1c2VzICMhIC9iaW4vYmFzaCBidXQgb25seSByZWFsbHkgdXNlcyBvbmUgYmFzaGlzbQogKHRyYW5zbGF0ZWQgc3RyaW5ncyksIHNvIHJlbW92ZSB0aGVtIGFuZCBzd2l0Y2ggdGhlIHNoZWxsIHRvICMhL2Jpbi9zaC4KQEAgLTcxLDUgKzcxLDUgQEAKICAJOzsKICBlc2FjCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCmluZGV4IDNlMzlkNzQuLmZkODIxMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gY2RjODhkZmZhMjI2ODE1ZTNhMjE4NjA0NjU1NDU5ZTMzZGM4NjQ4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODk3NDMwYmJiNjVhMGYyMjI4NGQ3OTU3MjA2YjVmZDRlZmQ2NjA3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjQyOjU4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvMjVdIGVnbGliYzogQ3Jvc3MgYnVpbGRpbmcgYW5kIHRlc3RpbmcgaW5zdHJ1Y3Rpb25zCitTdWJqZWN0OiBbUEFUQ0ggMTcvMjddIGVnbGliYzogQ3Jvc3MgYnVpbGRpbmcgYW5kIHRlc3RpbmcgaW5zdHJ1Y3Rpb25zCiAKIFBvcnRlZCBmcm9tIGVnbGliYwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCkBAIC02MTUsNSArNjE1LDUgQEAKICsgIHNpbXBseSBwbGFjZSBjb3BpZXMgb2YgdGhlc2UgbGlicmFyaWVzIGluIHRoZSB0b3AgR0xJQkMgYnVpbGQKICsgIGRpcmVjdG9yeS4KIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKaW5kZXggMDJmMzVmNC4uODBkNTQ3YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxMTYxY2QxYzY4MzU0N2QyOWEwMzYyNmQ5ZDdkZTdmOWNjMDNiNzRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmY2ZhMTliNjllODc0OTQ3NzAyMjE2MWE4MDhhMjAxODA3ZWY3MmVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDk6MjggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8yNV0gZWdsaWJjOiBIZWxwIGJvb3RzdHJhcCBjcm9zcyB0b29sY2hhaW4KK1N1YmplY3Q6IFtQQVRDSCAxOC8yN10gZWdsaWJjOiBIZWxwIGJvb3RzdHJhcCBjcm9zcyB0b29sY2hhaW4KIAogVGFrZW4gZnJvbSBFR0xJQkMsIHIxNDg0ICsgcjE1MjUKIApAQCAtMjksNyArMjksNyBAQAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAzZTBhZTZmNDNiLi4yNGRjNjZkMTdjIDEwMDY0NAoraW5kZXggYmVhNGUyN2Y4ZC4uOGM4M2NmYWRjNiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQogQEAgLTcwLDkgKzcwLDE4IEBAIHN1YmRpci1kaXJzID0gaW5jbHVkZQpAQCAtOTYsNSArOTYsNSBAQAogKyAgIEVHTElCQyBzdWJkaXIgJ3N0dWJzJyBtYWtlIHRhcmdldHMsIG9uIGV2ZXJ5IC5vIGZpbGUgaW4gRUdMSUJDLCBidXQKICsgICBhbiBlbXB0eSBzdHVicy5oIGxpa2UgdGhpcyB3aWxsIGRvIGZpbmUgZm9yIEdDQy4gICovCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoCmluZGV4IGFkYjI4Y2YuLjE3YmZlNGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMTczMmM3ZjI1NDUzYzg3OWMxNzcwMTgzOWVmMzQ4NzZhNzM1NzAwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzZmMmRiMGQ3YzVjNjViZmExOTc2NmEwZTFjZTgyMTAxMTFmOWM3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE1OjE1OjA5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvMjVdIGVnbGliYzogQ2xlYXIgY2FjaGUgbGluZXMgb24gcHBjOHh4CitTdWJqZWN0OiBbUEFUQ0ggMTkvMjddIGVnbGliYzogQ2xlYXIgY2FjaGUgbGluZXMgb24gcHBjOHh4CiAKIDIwMDctMDYtMTMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CiAgICAgICAgICAgICBNYXJrIFNoaW53ZWxsICA8c2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbT4KQEAgLTIxLDcgKzIxLDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotaW5kZXggMjNmNWQ1ZDM4OC4uN2U0NTI4OGRiNyAxMDA2NDQKK2luZGV4IDc4MDUxYmM3YmMuLmUyNGY0NDIzMjAgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCiArKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCiBAQCAtMjQsOSArMjQsMjEgQEAgaW50IF9fY2FjaGVfbGluZV9zaXplIGF0dHJpYnV0ZV9oaWRkZW47CkBAIC00OCw3ICs0OCw3IEBACiAgCWJyZWFrOwogIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLWluZGV4IGFkMDM2YzFlNGIuLmFmZWU1NmEzZGEgMTAwNjQ0CitpbmRleCBmMmFkMGMzNTVkLi4zZTY3NzM3OTVlIDEwMDY0NAogLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCiBAQCAtNzMsMTEgKzczLDI1IEBAIF9fbGliY19zdGFydF9tYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YsCkBAIC03OSw1ICs3OSw1IEBACiAgCWJyZWFrOwogICNpZm5kZWYgU0hBUkVECiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaAppbmRleCBmODM1ZDg3Li4wOWY3NjcwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxMDhiM2ExZGY5NmE4NTUyMmM1MmEwZGVjMDMyZmMyYzEwNmY1ZjJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1NzcwODUwMTZiYjkyNmE2ODdhYmVjMTQ1NTU3ZmU4Y2I4ZjVhZjBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NTU6NTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMC8yNV0gZWdsaWJjOiBSZXNvbHZlIF9fZnBzY3JfdmFsdWVzIG9uIFNINAorU3ViamVjdDogW1BBVENIIDIwLzI3XSBlZ2xpYmM6IFJlc29sdmUgX19mcHNjcl92YWx1ZXMgb24gU0g0CiAKIDIwMTAtMDktMjkgIE5vYnVoaXJvIEl3YW1hdHN1ICA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CiAgICAgICAgICAgICBBbmRyZXcgU3R1YmJzICA8YW1zQGNvZGVzb3VyY2VyeS5jb20+CkBAIC0zMyw3ICszMyw3IEBACiAgICAgICMgYSoKICAgICAgYWxwaGFzb3J0NjQ7CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUwotaW5kZXggNWYxMWJjNzM3Yi4uMmZkMjE3YjAwYiAxMDA2NDQKK2luZGV4IGM0ZTI4ZmZiOTguLjY0OGJhZTAzZDUgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUwogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKIEBAIC0zMCwzICszMCwxNCBAQCBFTlRSWSAoX19zeXNjYWxsX2Vycm9yKQpAQCAtNTIsNSArNTIsNSBAQAogK3dlYWtfYWxpYXMgKF9fX2Zwc2NyX3ZhbHVlcywgX19mcHNjcl92YWx1ZXMpCiArCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaAppbmRleCA2ZWUzOTdiLi41MzBmNGUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAzMzkyZWU4M2IwMTMyYzA4OWRmZmIxZTk4OTJiNGIyNTJjZTFlYzBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjMWJlYWI4YTExOTg1Zjk2ZjVlYjY0NGU3MTAzZDM0M2I3MDVhZmM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTc6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMS8yNV0gZWdsaWJjOiBJbnN0YWxsIFBJQyBhcmNoaXZlcworU3ViamVjdDogW1BBVENIIDIxLzI3XSBlZ2xpYmM6IEluc3RhbGwgUElDIGFyY2hpdmVzCiAKIEZvcndhcmQgcG9ydCBmcm9tIGVnbGliYwogCkBAIC0yOSwxMCArMjksMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VydWxlcyBiL01ha2VydWxlcwotaW5kZXggOWJiNzA3YzE2OC4uNzRjYmVmYjliYSAxMDA2NDQKK2luZGV4IGVmNmFiZWFjNmQuLmVlYWE2NjdmNDkgMTAwNjQ0CiAtLS0gYS9NYWtlcnVsZXMKICsrKyBiL01ha2VydWxlcwotQEAgLTc3NSw2ICs3NzUsOSBAQCBpZmVxICgkKGJ1aWxkLXNoYXJlZCkseWVzKQorQEAgLTc3OCw2ICs3NzgsOSBAQCBpZmVxICgkKGJ1aWxkLXNoYXJlZCkseWVzKQogICQoY29tbW9uLW9ianBmeClsaWJjLnNvOiAkKGNvbW1vbi1vYmpwZngpbGliYy5tYXAKICBlbmRpZgogIGNvbW1vbi1nZW5lcmF0ZWQgKz0gbGliYy5zbyBsaWJjX3BpYy5vcwpAQCAtNDIsNyArNDIsNyBAQAogIGlmZGVmIGxpYmMuc28tdmVyc2lvbgogICQoY29tbW9uLW9ianBmeClsaWJjLnNvJChsaWJjLnNvLXZlcnNpb24pOiAkKGNvbW1vbi1vYmpwZngpbGliYy5zbwogIAkkKG1ha2UtbGluaykKLUBAIC0xMDI2LDYgKzEwMjksNyBAQCBlbmRpZgorQEAgLTEwMjksNiArMTAzMiw3IEBAIGVuZGlmCiAgCiAgaW5zdGFsbDogY2hlY2staW5zdGFsbC1zdXBwb3J0ZWQKICAKQEAgLTUwLDcgKzUwLDcgQEAKICBpbnN0YWxsOiAkKGluc3RhbGxlZC1saWJjcykKICAkKGluc3RhbGxlZC1saWJjcyk6ICQoaW5zdF9saWJkaXIpL2xpYiQobGlicHJlZml4KSU6IGxpYiAkKCtmb3JjZSkKICAJJChtYWtlLXRhcmdldC1kaXJlY3RvcnkpCi1AQCAtMTA1NCw2ICsxMDU4LDIyIEBAIHZlcnNpb25lZCA6PSAkKHN0cmlwICQoZm9yZWFjaCBzbywkKGluc3RhbGwtbGliLnNvKSxcCitAQCAtMTA1Nyw2ICsxMDYxLDIyIEBAIHZlcnNpb25lZCA6PSAkKHN0cmlwICQoZm9yZWFjaCBzbywkKGluc3RhbGwtbGliLnNvKSxcCiAgaW5zdGFsbC1saWIuc28tdmVyc2lvbmVkIDo9ICQoZmlsdGVyICQodmVyc2lvbmVkKSwgJChpbnN0YWxsLWxpYi5zbykpCiAgaW5zdGFsbC1saWIuc28tdW52ZXJzaW9uZWQgOj0gJChmaWx0ZXItb3V0ICQodmVyc2lvbmVkKSwgJChpbnN0YWxsLWxpYi5zbykpCiAgCkBAIC03Myw3ICs3Myw3IEBACiAgIyBGb3IgdmVyc2lvbmVkIGxpYnJhcmllcywgd2UgaW5zdGFsbCB0aHJlZSBmaWxlczoKICAjCSQoaW5zdF9saWJkaXIpL2xpYmZvby5zbwktLSBmb3IgbGlua2luZywgc3ltbGluayBvciBsZCBzY3JpcHQKICAjCSQoaW5zdF9zbGliZGlyKS9saWJmb28uc28uTk4JLS0gZm9yIGxvYWRpbmcgYnkgU09OQU1FLCBzeW1saW5rCi1AQCAtMTI5OCw5ICsxMzE4LDIyIEBAICQoYWRkcHJlZml4ICQoaW5zdF9pbmNsdWRlZGlyKS8sJChoZWFkZXJzLW5vbmgpKTogJChpbnN0X2luY2x1ZGVkaXIpLyU6IFwKK0BAIC0xMzExLDkgKzEzMzEsMjIgQEAgJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMtbm9uaCkpOiAkKGluc3RfaW5jbHVkZWRpcikvJTogXAogIGVuZGlmCSMgaGVhZGVycy1ub25oCiAgZW5kaWYJIyBoZWFkZXJzCiAgCkBAIC05Nyw3ICs5Nyw3IEBACiAgaW5zdGFsbC1iaW4tbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9iaW5kaXIpLywkKGluc3RhbGwtYmluKSkKICBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9iaW5kaXIpLywkKGluc3RhbGwtYmluLXNjcmlwdCkpCiAgaW5zdGFsbC1yb290c2Jpbi1ub3N1YmRpcjogXAotQEAgLTEzMTMsNiArMTM0NiwxMCBAQCBpbnN0YWxsLWRhdGEtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9kYXRhZGlyKS8sJChpbnN0YWxsLWRhdGEpKQorQEAgLTEzMjYsNiArMTM1OSwxMCBAQCBpbnN0YWxsLWRhdGEtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9kYXRhZGlyKS8sJChpbnN0YWxsLWRhdGEpKQogIGluc3RhbGwtaGVhZGVycy1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMpKQogIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGwtb3RoZXJzKQogIGluc3RhbGwtb3RoZXJzLXByb2dyYW1zLW5vc3ViZGlyOiAkKGluc3RhbGwtb3RoZXJzLXByb2dyYW1zKQpAQCAtMTA4LDcgKzEwOCw3IEBACiAgCiAgIyBXZSBuZWVkIGFsbCB0aGUgYC1ub3N1YmRpcicgdGFyZ2V0cyBzbyB0aGF0IGBpbnN0YWxsJyBpbiB0aGUgcGFyZW50CiAgIyBkb2Vzbid0IGRlcGVuZCBvbiBzZXZlcmFsIHRoaW5ncyB3aGljaCBlYWNoIGl0ZXJhdGUgb3ZlciB0aGUgc3ViZGlycy4KLUBAIC0xMzIyLDcgKzEzNTksOCBAQCBpbnN0YWxsLSU6OiBpbnN0YWxsLSUtbm9zdWJkaXIgOworQEAgLTEzMzUsNyArMTM3Miw4IEBAIGluc3RhbGwtJTo6IGluc3RhbGwtJS1ub3N1YmRpciA7CiAgCiAgLlBIT05ZOiBpbnN0YWxsIGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyCiAgaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXI6IGluc3RhbGwtaGVhZGVycy1ub3N1YmRpciBpbnN0YWxsLWRhdGEtbm9zdWJkaXIgXApAQCAtMTE5LDUgKzExOSw1IEBACiAgaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXI6IGluc3RhbGwtYmluLW5vc3ViZGlyIGluc3RhbGwtYmluLXNjcmlwdC1ub3N1YmRpciBcCiAgCQkJICAgIGluc3RhbGwtcm9vdHNiaW4tbm9zdWJkaXIgaW5zdGFsbC1zYmluLW5vc3ViZGlyIFwKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCmluZGV4IDJhOGEyMGEuLmE2MjljZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGQ5NzUzM2RjMjAxY2ZkODYzNzY1YjFhNjdhMjdmZGUzZTI2MjJkYTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGUwMTlmZTZhMmI0MTBkYjYwNDNlMjE4MDNmNDk3YjVjYmRkOTBhODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTozMzo0OSArMDAwMAotU3ViamVjdDogW1BBVENIIDIyLzI1XSBlZ2xpYmM6IEZvcndhcmQgcG9ydCBjcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiBzdXBwb3J0CitTdWJqZWN0OiBbUEFUQ0ggMjIvMjddIGVnbGliYzogRm9yd2FyZCBwb3J0IGNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHN1cHBvcnQKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKQEAgLTIzLDcgKzIzLDcgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgbG9jYWxlL2NhdG5hbWVzLmMKIAogZGlmZiAtLWdpdCBhL2xvY2FsZS9NYWtlZmlsZSBiL2xvY2FsZS9NYWtlZmlsZQotaW5kZXggOThlZTc2MjcyZC4uYmMzYWZiMjI0OCAxMDA2NDQKK2luZGV4IGZkOTk3MjI3OWIuLjE3NmIzOTQ2ZGUgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvTWFrZWZpbGUKICsrKyBiL2xvY2FsZS9NYWtlZmlsZQogQEAgLTI2LDcgKzI2LDggQEAgaGVhZGVycwkJPSBsYW5naW5mby5oIGxvY2FsZS5oIGJpdHMvbG9jYWxlLmggXApAQCAtOTEsNyArOTEsNyBAQAogKyAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQogKyAgfTsKIGRpZmYgLS1naXQgYS9sb2NhbGUvbG9jYWxlaW5mby5oIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotaW5kZXggNGUxYzhjNTY4YS4uZjdlZDk0NmYxYyAxMDA2NDQKK2luZGV4IDY4ODIyYTYzMTkuLmZhMzYxMjM3NzYgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvbG9jYWxlaW5mby5oCiArKysgYi9sb2NhbGUvbG9jYWxlaW5mby5oCiBAQCAtMjI0LDcgKzIyNCw3IEBAIF9fbGliY190c2RfZGVmaW5lIChleHRlcm4sIGxvY2FsZV90LCBMT0NBTEUpCkBAIC0xMDQsMTEgKzEwNCwxMSBAQAogICMgZGVmaW5lIE5MX0NVUlJFTlRfSU5ESVJFQ1QJMQogICNlbmRpZgogZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLWluZGV4IGU1NWFiODZlMjguLjBmODdlNmRkMjggMTAwNjQ0CitpbmRleCAzNGE4ZDMyYzkyLi5jYmI5NDM2Y2QxIDEwMDY0NAogLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKICsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCi1AQCAtMTksNyArMTksOSBAQAotICNpbmNsdWRlIDxlcnJvci5oPgorQEAgLTE4LDcgKzE4LDkgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSA8bGliaW50bC5oPgogKyNpZm5kZWYgTk9fVU5DT01QUkVTUwpAQCAtMTE3LDcgKzExNyw3IEBACiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlIDxzdHJpbmcuaD4KLUBAIC0xNTYsNiArMTU4LDcgQEAgY2hhcm1hcF9jbG9zZWRpciAoQ0hBUk1BUF9ESVIgKmNkaXIpCitAQCAtMTU0LDYgKzE1Niw3IEBAIGNoYXJtYXBfY2xvc2VkaXIgKENIQVJNQVBfRElSICpjZGlyKQogICAgcmV0dXJuIGNsb3NlZGlyIChkaXIpOwogIH0KICAKQEAgLTEyNSw3ICsxMjUsNyBAQAogIC8qIENyZWF0ZXMgYSBzdWJwcm9jZXNzIGRlY29tcHJlc3NpbmcgdGhlIGdpdmVuIHBhdGhuYW1lLCBhbmQgcmV0dXJucwogICAgIGEgc3RyZWFtIHJlYWRpbmcgaXRzIG91dHB1dCAodGhlIGRlY29tcHJlc3NlZCBkYXRhKS4gICovCiAgc3RhdGljCi1AQCAtMjA0LDYgKzIwNyw3IEBAIGZvcGVuX3VuY29tcHJlc3NlZCAoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IGNoYXIgKmNvbXByZXNzb3IpCitAQCAtMjAyLDYgKzIwNSw3IEBAIGZvcGVuX3VuY29tcHJlc3NlZCAoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IGNoYXIgKmNvbXByZXNzb3IpCiAgICAgIH0KICAgIHJldHVybiBOVUxMOwogIH0KQEAgLTEzMyw3ICsxMzMsNyBAQAogIAogIC8qIE9wZW5zIGEgY2hhcm1hcCBmb3IgcmVhZGluZywgZ2l2ZW4gaXRzIG5hbWUgKG5vdCBhbiBhbGlhcyBuYW1lKS4gICovCiAgRklMRSAqCi1AQCAtMjI2LDYgKzIzMCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQorQEAgLTIyNCw2ICsyMjgsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKICAgIGlmIChzdHJlYW0gIT0gTlVMTCkKICAgICAgcmV0dXJuIHN0cmVhbTsKICAKQEAgLTE0MSw3ICsxNDEsNyBAQAogICAgbWVtY3B5IChwLCAiLmd6IiwgNCk7CiAgICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiZ3ppcCIpOwogICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotQEAgLTIzNSw2ICsyNDAsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKK0BAIC0yMzMsNiArMjM4LDcgQEAgY2hhcm1hcF9vcGVuIChjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKm5hbWUpCiAgICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiYnppcDIiKTsKICAgIGlmIChzdHJlYW0gIT0gTlVMTCkKICAgICAgcmV0dXJuIHN0cmVhbTsKQEAgLTE1MCwxMCArMTUwLDEwIEBACiAgICByZXR1cm4gTlVMTDsKICB9CiBkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKLWluZGV4IGNlYzg0OGNiN2MuLmZjZDc2OGViN2QgMTAwNjQ0CitpbmRleCBkMmVlYmNmZGJiLi5jMzcxOGQ2NTg5IDEwMDY0NAogLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwogKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotQEAgLTM1MCw3ICszNTAsNyBAQCBuZXdfZWxlbWVudCAoc3RydWN0IGxvY2FsZV9jb2xsYXRlX3QgKmNvbGxhdGUsIGNvbnN0IGNoYXIgKm1icywgc2l6ZV90IG1ic2xlbiwKK0BAIC0zNDksNyArMzQ5LDcgQEAgbmV3X2VsZW1lbnQgKHN0cnVjdCBsb2NhbGVfY29sbGF0ZV90ICpjb2xsYXRlLCBjb25zdCBjaGFyICptYnMsIHNpemVfdCBtYnNsZW4sCiAgICAgIH0KICAgIGlmICh3Y3MgIT0gTlVMTCkKICAgICAgewpAQCAtMTYyLDcgKzE2Miw3IEBACiAgICAgICAgdWludDMyX3QgemVybyA9IDA7CiAgICAgICAgLyogSGFuZGxlIDxVMDAwMD4gYXMgYSBzaW5nbGUgY2hhcmFjdGVyLiAgKi8KICAgICAgICBpZiAobndjcyA9PSAwKQotQEAgLTE3NzYsOCArMTc3Niw3IEBAIHN5bWJvbCBgJXMnIGhhcyB0aGUgc2FtZSBlbmNvZGluZyBhcyIpLCAoKmVwdHIpLT5uYW1lKTsKK0BAIC0xNzcyLDggKzE3NzIsNyBAQCBzeW1ib2wgYCVzJyBoYXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMiKSwgKCplcHRyKS0+bmFtZSk7CiAgCiAgCSAgICAgIGlmICgoKmVwdHIpLT5ud2NzID09IHJ1bnAtPm53Y3MpCiAgCQl7CkBAIC0xNzIsNyArMTcyLDcgQEAKICAKICAJCSAgaWYgKGMgPT0gMCkKICAJCSAgICB7Ci1AQCAtMjAxMCw5ICsyMDA5LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQorQEAgLTIwMDAsOSArMTk5OSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKICAJICAgICBvbmUgY29uc2VjdXRpdmUgZW50cnkuICAqLwogIAkgIGlmIChydW5wLT53Y25leHQgIT0gTlVMTAogIAkgICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcwpAQCAtMTg1LDcgKzE4NSw3IEBACiAgCSAgICAgICYmIChydW5wLT53Y3NbcnVucC0+bndjcyAtIDFdCiAgCQkgID09IHJ1bnAtPndjbmV4dC0+d2NzW3J1bnAtPm53Y3MgLSAxXSArIDEpKQogIAkgICAgewotQEAgLTIwMzYsOSArMjAzNSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKK0BAIC0yMDI2LDkgKzIwMjUsOSBAQCBhZGRfdG9fdGFibGV3YyAodWludDMyX3QgY2gsIHN0cnVjdCBlbGVtZW50X3QgKnJ1bnApCiAgCQlydW5wID0gcnVucC0+d2NuZXh0OwogIAkgICAgICB3aGlsZSAocnVucC0+d2NuZXh0ICE9IE5VTEwKICAJCSAgICAgJiYgcnVucC0+bndjcyA9PSBydW5wLT53Y25leHQtPm53Y3MKQEAgLTE5OSwxMCArMTk5LDEwIEBACiAgCQkJID09IHJ1bnAtPndjbmV4dC0+d2NzW3J1bnAtPm53Y3MgLSAxXSArIDEpKTsKICAKIGRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCi1pbmRleCBkZjI2NmMyMGQ2Li4wNWMwMTUyZWM5IDEwMDY0NAoraW5kZXggZjc5MWU2YjdlOS4uZDgwOWQ2ZGI3ZiAxMDA2NDQKIC0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCiArKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotQEAgLTkyNiw3ICs5MjYsNyBAQCBjdHlwZV9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorQEAgLTkxNSw3ICs5MTUsNyBAQCBjdHlwZV9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAogICAgYWxsb2NhdGVfYXJyYXlzIChjdHlwZSwgY2hhcm1hcCwgY3R5cGUtPnJlcGVydG9pcmUpOwogIAogICAgZGVmYXVsdF9taXNzaW5nX2xlbiA9IChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nCkBAIC0yMTEsNyArMjExLDcgQEAKICAJCQkgOiAwKTsKICAKICAgIGluaXRfbG9jYWxlX2RhdGEgKCZmaWxlLCBuZWxlbXMpOwotQEAgLTE5MzcsNyArMTkzNyw3IEBAIHJlYWRfdHJhbnNsaXRfZW50cnkgKHN0cnVjdCBsaW5lcmVhZGVyICpsZGZpbGUsIHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsCitAQCAtMTkyNiw3ICsxOTI2LDcgQEAgcmVhZF90cmFuc2xpdF9lbnRyeSAoc3RydWN0IGxpbmVyZWFkZXIgKmxkZmlsZSwgc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwKICAJICAgIGlnbm9yZSA9IDE7CiAgCSAgZWxzZQogIAkgICAgLyogVGhpcyB2YWx1ZSBpcyB1c2FibGUuICAqLwpAQCAtMjIwLDcgKzIyMCw3IEBACiAgCiAgCSAgZmlyc3QgPSAwOwogIAl9Ci1AQCAtMjQ3MSw4ICsyNDcxLDggQEAgd2l0aCBjaGFyYWN0ZXIgY29kZSByYW5nZSB2YWx1ZXMgb25lIG11c3QgdXNlIHRoZSBhYnNvbHV0ZSBlbGxpcHNpcyBgLi4uJyIpKTsKK0BAIC0yNDYwLDggKzI0NjAsOCBAQCB3aXRoIGNoYXJhY3RlciBjb2RlIHJhbmdlIHZhbHVlcyBvbmUgbXVzdCB1c2UgdGhlIGFic29sdXRlIGVsbGlwc2lzIGAuLi4nIikpOwogIAkgICAgfQogIAogIAloYW5kbGVfdG9rX2RpZ2l0OgpAQCAtMjMxLDcgKzIzMSw3IEBACiAgCSAgaGFuZGxlX2RpZ2l0cyA9IDE7CiAgCSAgZ290byByZWFkX2NoYXJjbGFzczsKICAKLUBAIC0zOTI5LDggKzM5MjksNyBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCitAQCAtMzkwMSw4ICszOTAxLDcgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAogIAogIAkgIHdoaWxlIChpZHggPCBudW1iZXIpCiAgCSAgICB7CkBAIC0yNDEsNyArMjQxLDcgQEAKICAJICAgICAgaWYgKHJlcyA9PSAwKQogIAkJewogIAkJICByZXBsYWNlID0gMTsKLUBAIC0zOTY3LDExICszOTY2LDExIEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKK0BAIC0zOTM5LDExICszOTM4LDExIEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKICAgICAgICBmb3IgKHNpemVfdCBjbnQgPSAwOyBjbnQgPCBudW1iZXI7ICsrY250KQogIAl7CiAgCSAgc3RydWN0IHRyYW5zbGl0X3RvX3QgKnNydW5wOwpAQCAtMjU1LDcgKzI1NSw3IEBACiAgCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7CiAgCSAgICB9CiAgCSAgLyogUGx1cyBvbmUgZm9yIHRoZSBleHRyYSBOVUwgY2hhcmFjdGVyIG1hcmtpbmcgdGhlIGVuZCBvZgotQEAgLTM5OTUsMTggKzM5OTQsMTggQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorQEAgLTM5NjcsMTggKzM5NjYsMTggQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAogIAkgIGN0eXBlLT50cmFuc2xpdF9mcm9tX2lkeFtjbnRdID0gZnJvbV9sZW47CiAgCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOwogIApAQCAtMjgxLDEwICsyODEsMTAgQEAKICAJICAgICAgc3J1bnAgPSBzcnVucC0+bmV4dDsKICAJICAgIH0KIGRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotaW5kZXggMzJlOWM0MWUzNS4uNmE2MWZjZWRlYiAxMDA2NDQKK2luZGV4IGE3NTU3OTIzNjMuLmU4YjJmODU1MjIgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCiArKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCi1AQCAtMjE1LDggKzIxNSwxMCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKK0BAIC0yMjAsOCArMjIwLDEwIEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7CiAgCX0KICAgICAgICBlbHNlCiAgCXsKQEAgLTI5Niw3ICsyOTYsNyBAQAogIAl9CiAgICAgIH0KICAKLUBAIC0yMjYsNyArMjI4LDcgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7CitAQCAtMjMxLDcgKzIzMyw3IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7CiAgICAgICAgY29uc3QgaW50IGRheXNfcGVyX21vbnRoWzEyXSA9IHsgMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwKICAJCQkJICAgICAgIDMxLCAzMSwgMzAsIDMxICwzMCwgMzEgfTsKICAgICAgICBzaXplX3QgaWR4OwpAQCAtMzA1LDcgKzMwNSw3IEBACiAgCiAgICAgICAgdGltZS0+ZXJhX2VudHJpZXMgPQogIAkoc3RydWN0IGVyYV9kYXRhICopIHhtYWxsb2MgKHRpbWUtPm51bV9lcmEKLUBAIC00NjQsMTggKzQ2NiwxOCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKK0BAIC00NTcsMTggKzQ1OSwxOCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOwogIAkgICAgfQogIAogIAkgIC8qIE5vdyBnZW5lcmF0ZSB0aGUgd2lkZSBjaGFyYWN0ZXIgbmFtZSBhbmQgZm9ybWF0LiAgKi8KQEAgLTMzMSw3ICszMzEsNyBAQAogIAkJfQogIAkgICAgICBlbHNlCiAgCQl0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0KLUBAIC01MzQsNyArNTM2LDE2IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOworQEAgLTUyNyw3ICs1MjksMTYgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKICAgIGlmICh0aW1lLT5kYXRlX2ZtdCA9PSBOVUxMKQogICAgICB0aW1lLT5kYXRlX2ZtdCA9ICIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7CiAgICBpZiAodGltZS0+d2RhdGVfZm10ID09IE5VTEwpCkBAIC0zNTAsNyArMzUwLDcgQEAKICAKICAKIGRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotaW5kZXggNTJiMzQwOTYzYS4uMWE4YmNlMTdiNCAxMDA2NDQKK2luZGV4IDM1MjVjOGE0M2QuLmY4YTdmZDljMjQgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCiArKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCiBAQCAtNTk1LDcgKzU5NSw3IEBAIGdldF9zdHJpbmcgKHN0cnVjdCBsaW5lcmVhZGVyICpsciwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKQEAgLTM2MywxOCArMzYzLDE4IEBACiAgICBzaXplX3QgYnVmbWF4ID0gNTY7CiAgCiBkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCi1pbmRleCA2YWNjMTM0MmM3Li5kZjg3NzQwZjhiIDEwMDY0NAoraW5kZXggZDcxOGQyZTlmNC4uZTBhM2FkNWE4MyAxMDA2NDQKIC0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwogKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCi1AQCAtMTA4LDYgKzEwOCw3IEBAIHZvaWQgKCphcmdwX3Byb2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqKSA9IHByaW50X3ZlcnNpb247Ci0gI2RlZmluZSBPUFRfTElTVF9BUkNISVZFIDMwOQotICNkZWZpbmUgT1BUX0xJVFRMRV9FTkRJQU4gNDAwCitAQCAtMTA1LDYgKzEwNSw3IEBAIHZvaWQgKCphcmdwX3Byb2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqKSA9IHByaW50X3ZlcnNpb247CiAgI2RlZmluZSBPUFRfQklHX0VORElBTiA0MDEKLSsjZGVmaW5lIE9QVF9VSU5UMzJfQUxJR04gNDAyCisgI2RlZmluZSBPUFRfTk9fV0FSTiA0MDIKKyAjZGVmaW5lIE9QVF9XQVJOIDQwMworKyNkZWZpbmUgT1BUX1VJTlQzMl9BTElHTiA0MDQKICAKICAvKiBEZWZpbml0aW9ucyBvZiBhcmd1bWVudHMgZm9yIGFyZ3AgZnVuY3Rpb25zLiAgKi8KICBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9Ci1AQCAtMTQzLDYgKzE0NCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0KK0BAIC0xNDcsNiArMTQ4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQogICAgICBOXygiR2VuZXJhdGUgbGl0dGxlLWVuZGlhbiBvdXRwdXQiKSB9LAogICAgeyAiYmlnLWVuZGlhbiIsIE9QVF9CSUdfRU5ESUFOLCBOVUxMLCAwLAogICAgICBOXygiR2VuZXJhdGUgYmlnLWVuZGlhbiBvdXRwdXQiKSB9LApAQCAtMzgzLDcgKzM4Myw3IEBACiAgICB7IE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwgfQogIH07CiAgCi1AQCAtMjMyLDEyICsyMzUsMTQgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK0BAIC0yMzYsMTIgKzIzOSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgY3R5cGUgbG9jYWxlLiAgKFAxMDAzLjIgNC4zNS41LjIpICAqLwogICAgc2V0bG9jYWxlIChMQ19DVFlQRSwgIlBPU0lYIik7CiAgCkBAIC0zOTIsMTUgKzM5MiwxNSBAQAogICAgICAgZGVmaW5lcyBlcnJvciBjb2RlIDMgZm9yIHRoaXMgc2l0dWF0aW9uIHNvIEkgdGhpbmsgaXQgbXVzdCBiZQogICAgICAgYSBmYXRhbCBlcnJvciAoc2VlIFAxMDAzLjIgNC4zNS44KS4gICovCiAgICBpZiAoc3lzY29uZiAoX1NDXzJfTE9DQUxFREVGKSA8IDApCi0gICAgIFdJVEhfQ1VSX0xPQ0FMRSAoZXJyb3IgKDMsIDAsIF8oIlwKLSBGQVRBTDogc3lzdGVtIGRvZXMgbm90IGRlZmluZSBgX1BPU0lYMl9MT0NBTEVERUYnIikpKTsKKyAgICAgcmVjb3JkX2Vycm9yICgzLCAwLCBfKCJcCisgRkFUQUw6IHN5c3RlbSBkb2VzIG5vdCBkZWZpbmUgYF9QT1NJWDJfTE9DQUxFREVGJyIpKTsKICsjZW5kaWYKICAKICAgIC8qIFByb2Nlc3MgY2hhcm1hcCBmaWxlLiAgKi8KICAgIGNoYXJtYXAgPSBjaGFybWFwX3JlYWQgKGNoYXJtYXBfZmlsZSwgdmVyYm9zZSwgMSwgYmVfcXVpZXQsIDEpOwotQEAgLTMyOCw2ICszMzMsOSBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKQotICAgICBjYXNlIE9QVF9CSUdfRU5ESUFOOgotICAgICAgIHNldF9iaWdfZW5kaWFuICh0cnVlKTsKK0BAIC0zODksNiArMzk0LDkgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSkKKyAgICAgICAvKiBFbmFibGUgdGhlIHdhcm5pbmdzLiAgKi8KKyAgICAgICBzZXRfd2FybmluZ3MgKGFyZywgdHJ1ZSk7CiAgICAgICAgYnJlYWs7CiArICAgIGNhc2UgT1BUX1VJTlQzMl9BTElHTjoKICsgICAgICB1aW50MzJfYWxpZ25fbWFzayA9IHN0cnRvbCAoYXJnLCBOVUxMLCAwKSAtIDE7CkBAIC00MDksNyArNDA5LDcgQEAKICAgICAgICBmb3JjZV9vdXRwdXQgPSAxOwogICAgICAgIGJyZWFrOwogZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCi1pbmRleCAwOTkwZWYxMWJlLi42ODM0MjJjOTA4IDEwMDY0NAoraW5kZXggMzJlNWY3NjFmMi4uYjQxZTc3YmQ4ZCAxMDA2NDQKIC0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKICsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKIEBAIC01NDQsNiArNTQ0LDkgQEAgY29tcGFyZV9maWxlcyAoY29uc3QgY2hhciAqZmlsZW5hbWUxLCBjb25zdCBjaGFyICpmaWxlbmFtZTIsIHNpemVfdCBzaXplLApAQCAtNDMyLDcgKzQzMiw3IEBACiAgCiAgLyogUmVjb3JkIHRoYXQgRklMRSdzIG5leHQgZWxlbWVudCBpcyB0aGUgMzItYml0IGludGVnZXIgVkFMVUUuICAqLwogZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmggYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCi1pbmRleCAzNDA3ZTEzYzEzLi4wYmI1NTZjYWY4IDEwMDY0NAoraW5kZXggODliMzQ3YzcyZC4uYTYzNmZjMjk2MCAxMDA2NDQKIC0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKICsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKIEBAIC03MSw2ICs3MSw4IEBAIGV4dGVybiB2b2lkIHdyaXRlX2FsbF9jYXRlZ29yaWVzIChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmRlZmluaXRpb25zLApAQCAtNTIxLDcgKzUyMSw3IEBACiArCiAgI2VuZGlmIC8qIGxvY2ZpbGUuaCAqLwogZGlmZiAtLWdpdCBhL2xvY2FsZS9zZXRsb2NhbGUuYyBiL2xvY2FsZS9zZXRsb2NhbGUuYwotaW5kZXggMTlhY2M0YjJjNy4uYzg5ZDNiODdhZCAxMDA2NDQKK2luZGV4IGU0ZGU5MDdlMWYuLmI1ZDhmNWMxN2QgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvc2V0bG9jYWxlLmMKICsrKyBiL2xvY2FsZS9zZXRsb2NhbGUuYwogQEAgLTY0LDM2ICs2NCw2IEBAIHN0YXRpYyBjaGFyICpjb25zdCBfbmxfY3VycmVudF91c2VkW10gPQpAQCAtNTYyLDUgKzU2Miw1IEBACiAgIyBkZWZpbmUgV0VBS19QT1NUTE9BRChwb3N0bG9hZCkgd2Vha19leHRlcm4gKHBvc3Rsb2FkKQogICNlbHNlCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaAppbmRleCA5ZTU4MGQ0Li5hZTcwOGVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBjYjRkMDBlYWM3Zjg0MDkyMzE0ZGU1OTM2MjZlZWE0MGY5NTI5MDM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5ZDcxNTI2YmUyMWFiZTY4ZGQ4Y2EzYTVhMjE5NDQ1ODUxYmJjMmY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMjAgQXByIDIwMTYgMjE6MTE6MDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyMy8yNV0gRGVmaW5lIERVTU1ZX0xPQ0FMRV9UIGlmIG5vdCBkZWZpbmVkCitTdWJqZWN0OiBbUEFUQ0ggMjMvMjddIERlZmluZSBEVU1NWV9MT0NBTEVfVCBpZiBub3QgZGVmaW5lZAogCiBUaGlzIGlzIGEgaGFjayB0byBmaXggYnVpbGRpbmcgdGhlIGxvY2FsZSBiaXRzIG9uIGFuIG9sZGVyCiBDZW50T3MgNS5YIG1hY2hpbmUKQEAgLTE0LDcgKzE0LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmggYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKLWluZGV4IDViNDE2YmUwZDguLjc5ZTY2ZWVkNWUgMTAwNjQ0CitpbmRleCA5OTU2Y2Q4NDQ2Li4wNDM0MmYzNjQ0IDEwMDY0NAogLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCiArKysgYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKIEBAIC0xOSw2ICsxOSw5IEBACkBAIC0yOCw1ICsyOCw1IEBACiAgI2RlZmluZSBQQUNLQUdFIF9saWJjX2ludGxfZG9tYWlubmFtZQogICNpZm5kZWYgVkVSU0lPTgogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaAppbmRleCAwYjU5MzUyLi40MmZmNjY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGE3ODQ3NDI3MzljOTBlZWEwZDRjY2JiZDA3M2EwNjdkNTVjYTk1ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDAzODczYWYyODZmMWRhYjEwNjJmNTk4ZDZkZWI3NzRjZTUxMzQyMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDE4IEF1ZyAyMDE2IDE0OjA3OjU4IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMjQvMjVdIGVsZi9kbC1kZXBzLmM6IE1ha2UgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIGJyZWFkdGggZmlyc3QKK1N1YmplY3Q6IFtQQVRDSCAyNC8yN10gZWxmL2RsLWRlcHMuYzogTWFrZSBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgYnJlYWR0aCBmaXJzdAogCiBBY2NvcmRpbmcgdG8gdGhlIEVMRiBzcGVjaWZpY2F0aW9uOgogCkBAIC0yNCwxMCArMjQsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2VsZi9kbC1kZXBzLmMgYi9lbGYvZGwtZGVwcy5jCi1pbmRleCAxYjhiYWM2NTkzLi5jNjE2ODA4ZjMxIDEwMDY0NAoraW5kZXggYzk3NWZjZmZkNy4uNmVlNThjNzRlMCAxMDA2NDQKIC0tLSBhL2VsZi9kbC1kZXBzLmMKICsrKyBiL2VsZi9kbC1kZXBzLmMKLUBAIC03MywxMyArNzMsMTkgQEAgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChzdHJ1Y3QgbGlua19tYXAgKipsaXN0LCBzdHJ1Y3QgbGlua19tYXAgKm1hcCkKK0BAIC03MiwxMyArNzIsMTkgQEAgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChzdHJ1Y3QgbGlua19tYXAgKipsaXN0LCBzdHJ1Y3QgbGlua19tYXAgKm1hcCkKICB7CiAgICBzdHJ1Y3QgbGlua19tYXAgKipwID0gbGlzdDsKICAgIHN0cnVjdCBsaW5rX21hcCAqKnE7CkBAIC01Miw1ICs1Miw1IEBACiAgfQogIAogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaAppbmRleCAwOWFkMDRhLi43ZjVkMTQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGYzYTY3MDQ5NmM4ZmU2ZDRhY2YwNDVmNWIxNjdhMTljZjQxYjA0NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU2ZGFiMDI0NzUxOTQxYzA3ZWI0NzlmNDdlZjY2ODJlMjE2OGM4NmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXI9QzM9QTlteT0yMFJvc2VuPz0gPGplcmVteS5yb3NlbkBzbWlsZS5mcj4KIERhdGU6IE1vbiwgMjIgQXVnIDIwMTYgMTY6MDk6MjUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyNS8yNV0gbG9jYWxlOiBmaXggaGFyZC1jb2RlZCByZWZlcmVuY2UgdG8gZ2NjIC1FCitTdWJqZWN0OiBbUEFUQ0ggMjUvMjddIGxvY2FsZTogZml4IGhhcmQtY29kZWQgcmVmZXJlbmNlIHRvIGdjYyAtRQogCiBXaGVuIG5ldyB2ZXJzaW9uIG9mIGNvbXBpbGVycyBhcmUgcHVibGlzaGVkLCB0aGV5IG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoCiBvbGRlciB2ZXJzaW9ucyBvZiBzb2Z0d2FyZS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgY29tbW9uIHdoZW4gc29mdHdhcmUgaXMgYnVpbHQKQEAgLTM0LDUgKzM0LDUgQEAKICAKICBzdWIgY3N0cmxlbiB7CiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWFzc2VydC1TdXBwcmVzcy1wZWRhbnRpYy13YXJuaW5nLWNhdXNlZC1ieS1zdGF0ZW1lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1hc3NlcnQtU3VwcHJlc3MtcGVkYW50aWMtd2FybmluZy1jYXVzZWQtYnktc3RhdGVtZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmJiOTZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWFzc2VydC1TdXBwcmVzcy1wZWRhbnRpYy13YXJuaW5nLWNhdXNlZC1ieS1zdGF0ZW1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1Gcm9tIDAzNzI4M2NiYzc0NzM5YjcyZjM2ZGZlYzgyN2QxMjBmYWEyNDM0MDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGbG9yaWFuIFdlaW1lciA8ZndlaW1lciBhdCByZWRoYXQgZG90IGNvbT4KLURhdGU6IFRodSwgNiBKdWwgMjAxNyAxMTo1MDo1NSArMDIwMAotU3ViamVjdDogW1BBVENIIDI2LzI2XSBhc3NlcnQ6IFN1cHByZXNzIHBlZGFudGljIHdhcm5pbmcgY2F1c2VkIGJ5IHN0YXRlbWVudAotIGV4cHJlc3Npb24gW0JaIyAyMTI0Ml0KLQotT24gMDcvMDUvMjAxNyAxMDoxNSBQTSwgWmFjayBXZWluYmVyZyB3cm90ZToKLT4gT24gV2VkLCBKdWwgNSwgMjAxNyBhdCAxMTo1MSBBTSwgRmxvcmlhbiBXZWltZXIgPGZ3ZWltZXJAcmVkaGF0LmNvbT4gd3JvdGU6Ci0+PiBPbiAwNy8wNS8yMDE3IDA1OjQ2IFBNLCBaYWNrIFdlaW5iZXJnIHdyb3RlOgotPj4+IEEgcHJvYmxlbSBvY2N1cnMgdG8gbWU6IGV4cHJlc3Npb25zIGludm9sdmluZyBWTEFzIF9hcmVfIGV2YWx1YXRlZAotPj4+IGluc2lkZSBzaXplb2YuCi0+PgotPj4gVGhlIHR5cGUgb2YgdGhlIHNpemVvZiBhcmd1bWVudCB3b3VsZCBzdGlsbCBiZSBpbnQgKGR1ZSB0byB0aGUKLT4+IGNvbXBhcmlzb24gYWdhaW5zdCAwKSwgc28gdGhpcyBkb2Vzbid0IGFjdHVhbGx5IG9jY3VyLgotPgotPiBJIHJlY2hlY2tlZCB3aGF0IEM5OSBzYXlzIGFib3V0IHNpemVvZiBhbmQgVkxBcywgYW5kIHlvdSdyZSByaWdodCAtCi0+IHRoZSBvcGVyYW5kIG9mIHNpemVvZiBpcyBvbmx5IGV2YWx1YXRlZCB3aGVuIHNpemVvZiBpcyBfZGlyZWN0bHlfCi0+IGFwcGxpZWQgdG8gYSBWTEEuICBTbyB0aGlzIGlzIGluZGVlZCBzYWZlLCBidXQgSSB0aGluayB0aGlzIHdyaW5rbGUKLT4gc2hvdWxkIGJlIG1lbnRpb25lZCBpbiB0aGUgY29tbWVudC4gIFBlcmhhcHMKLT4KLT4gLyogVGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgRVhQUiBpcyBub3QgZXZhbHVhdGVkIGR1ZSB0byB0aGUgc2l6ZW9mLAotPiAgICBidXQgd2lsbCB0cmlnZ2VyIGFueSBwZWRhbnRpYyB3YXJuaW5ncyBtYXNrZWQgYnkgdGhlIF9fZXh0ZW5zaW9uX18KLT4gICAgZm9yIHRoZSBzZWNvbmQgb2NjdXJyZW5jZS4gIFRoZSBleHBsaWNpdCBjb21wYXJpc29uIGFnYWluc3QgemVybwotPiAgICBlbnN1cmVzIHRoYXQgc2l6ZW9mIGlzIG5vdCBkaXJlY3RseSBhcHBsaWVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciBvcgotPiAgICBiaXQtZmllbGQgKHdoaWNoIHdvdWxkIGJlIGlsbC1mb3JtZWQpIG9yIFZMQSAod2hpY2ggd291bGQgYmUgZXZhbHVhdGVkKS4gICovCi0+Ci0+IHp3Ci0KLVdoYXQgYWJvdXQgdGhlIGF0dGFjaGVkIHBhdGNoPwotCi1TaWRkaGVzaCwgaXMgdGhpcyBva2F5IGR1cmluZyB0aGUgZnJlZXplPyAgSSdkIGxpa2UgdG8gYmFja3BvcnQgaXQgdG8KLTIuMjUgYXMgd2VsbC4KLQotVGhhbmtzLAotRmxvcmlhbgotCi1hc3NlcnQ6IFN1cHByZXNzIHBlZGFudGljIHdhcm5pbmcgY2F1c2VkIGJ5IHN0YXRlbWVudCBleHByZXNzaW9uCi0KLTIwMTctMDctMDYgIEZsb3JpYW4gV2VpbWVyICA8ZndlaW1lckByZWRoYXQuY29tPgotCi0JW0JaICMyMTI0Ml0KLQkqIGFzc2VydC9hc3NlcnQuaCBbX19HTlVDX18gJiYgIV9fU1RSSUNUX0FOU0lfX10gKGFzc2VydCk6Ci0JU3VwcHJlc3MgcGVkYW50aWMgd2FybmluZyByZXN1bHRpbmcgZnJvbSBzdGF0ZW1lbnQgZXhwcmVzc2lvbi4KLQkoX19BU1NFUlRfRlVOQ1RJT04pOiBBZGQgbWlzc2luZyBfX2V4dGVuZHNpb25fXy4KLS0tLQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGFzc2VydC9hc3NlcnQuaCB8IDEyICsrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hc3NlcnQvYXNzZXJ0LmggYi9hc3NlcnQvYXNzZXJ0LmgKLWluZGV4IDIyZjAxOTUzN2MuLjY4MDFjZmViMTAgMTAwNjQ0Ci0tLS0gYS9hc3NlcnQvYXNzZXJ0LmgKLSsrKyBiL2Fzc2VydC9hc3NlcnQuaAotQEAgLTkxLDEzICs5MSwxOSBAQCBfX0VORF9ERUNMUwotICAgICAgPyBfX0FTU0VSVF9WT0lEX0NBU1QgKDApCQkJCQkJXAotICAgICAgOiBfX2Fzc2VydF9mYWlsICgjZXhwciwgX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTikpCi0gIyBlbHNlCi0rLyogVGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgRVhQUiBpcyBub3QgZXZhbHVhdGVkIGR1ZSB0byB0aGUgc2l6ZW9mLAotKyAgIGJ1dCB3aWxsIHRyaWdnZXIgYW55IHBlZGFudGljIHdhcm5pbmdzIG1hc2tlZCBieSB0aGUgX19leHRlbnNpb25fXwotKyAgIGZvciB0aGUgc2Vjb25kIG9jY3VycmVuY2UuICBUaGUgZXhwbGljaXQgY29tcGFyaXNvbiBhZ2FpbnN0IHplcm8gaXMKLSsgICByZXF1aXJlZCB0byBzdXBwb3J0IGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBiaXQgZmllbGRzIGluIHRoaXMKLSsgICBjb250ZXh0LCBhbmQgdG8gc3VwcHJlc3MgdGhlIGV2YWx1YXRpb24gb2YgdmFyaWFibGUgbGVuZ3RoCi0rICAgYXJyYXlzLiAgKi8KLSAjICBkZWZpbmUgYXNzZXJ0KGV4cHIpCQkJCQkJCVwKLS0gICAgKHsJCQkJCQkJCQlcCi0rICAoKHZvaWQpIHNpemVvZiAoKGV4cHIpID09IDApLCBfX2V4dGVuc2lvbl9fICh7CQkJXAotICAgICAgIGlmIChleHByKQkJCQkJCQkJXAotICAgICAgICAgOyAvKiBlbXB0eSAqLwkJCQkJCQlcCi0gICAgICAgZWxzZQkJCQkJCQkJXAotICAgICAgICAgX19hc3NlcnRfZmFpbCAoI2V4cHIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19BU1NFUlRfRlVOQ1RJT04pOwlcCi0tICAgIH0pCi0rICAgIH0pKQotICMgZW5kaWYKLSAKLSAjIGlmZGVmCV9fVVNFX0dOVQotQEAgLTExMyw3ICsxMTksNyBAQCBfX0VORF9ERUNMUwotICAgIEM5eCBoYXMgYSBzaW1pbGFyIHZhcmlhYmxlIGNhbGxlZCBfX2Z1bmNfXywgYnV0IHByZWZlciB0aGUgR0NDIG9uZSBzaW5jZQotICAgIGl0IGRlbWFuZ2xlcyBDKysgZnVuY3Rpb24gbmFtZXMuICAqLwotICMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyA/IF9fR05VQ19QUkVSRVEgKDIsIDYpIDogX19HTlVDX1BSRVJFUSAoMiwgNCkKLS0jICAgZGVmaW5lIF9fQVNTRVJUX0ZVTkNUSU9OCV9fUFJFVFRZX0ZVTkNUSU9OX18KLSsjICAgZGVmaW5lIF9fQVNTRVJUX0ZVTkNUSU9OCV9fZXh0ZW5zaW9uX18gX19QUkVUVFlfRlVOQ1RJT05fXwotICMgZWxzZQotICMgIGlmIGRlZmluZWQgX19TVERDX1ZFUlNJT05fXyAmJiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwKLSAjICAgZGVmaW5lIF9fQVNTRVJUX0ZVTkNUSU9OCV9fZnVuY19fCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1yZXNldC1kbF9sb2FkX3dyaXRlX2xvY2stYWZ0ZXItZm9ya2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LXJlc2V0LWRsX2xvYWRfd3JpdGVfbG9jay1hZnRlci1mb3JraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjYTExOTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1yZXNldC1kbF9sb2FkX3dyaXRlX2xvY2stYWZ0ZXItZm9ya2luZy5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDg0N2QzN2Q1YTM0ZTRiZjI5NGRlNGJhOThkZTM2Njg5NTBlMjhiYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyNyBKYW4gMjAxOCAxMDowNTowNyAtMDgwMAorU3ViamVjdDogW1BBVENIIDI2LzI3XSByZXNldCBkbF9sb2FkX3dyaXRlX2xvY2sgYWZ0ZXIgZm9ya2luZworCitUaGUgcGF0Y2ggaW4gdGhpcyBCdWd6aWxsYSBlbnRyeSB3YXMgcmVxdWVzdGVkIGJ5IGEgY3VzdG9tZXI6CisKKyAgaHR0cHM6Ly93d3cuc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE5MjgyCisKK1RoZSBfX2xpYmNfZm9yaygpIGNvZGUgcmVzZXQgZGxfbG9hZF9sb2NrLCBidXQgaXQgYWxzbyBuZWVkZWQgdG8gcmVzZXQKK2RsX2xvYWRfd3JpdGVfbG9jay4gIFRoZSBwYXRjaCBoYXMgbm90IHlldCBiZWVuIGludGVncmF0ZWQgdXBzdHJlYW0uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbIE5vIEF1dGhvciBTZWUgYnVnemlsbGFdCisKK1NpZ25lZC1vZmYtYnk6IERhbW9kYXIgU29ub25lIDxkYW1vZGFyLnNvbm9uZUBrcGl0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL25wdGwvZm9yay5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvbnB0bC9mb3JrLmMgYi9zeXNkZXBzL25wdGwvZm9yay5jCitpbmRleCA4NDZmYTQ5ZWYyLi5mODc1MDZmMzk4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9ucHRsL2ZvcmsuYworKysrIGIvc3lzZGVwcy9ucHRsL2ZvcmsuYworQEAgLTE5NCw5ICsxOTQsOSBAQCBfX2xpYmNfZm9yayAodm9pZCkKKyAJICBfSU9fbGlzdF9yZXNldGxvY2sgKCk7CisgCX0KKyAKKy0gICAgICAvKiBSZXNldCB0aGUgbG9jayB0aGUgZHluYW1pYyBsb2FkZXIgdXNlcyB0byBwcm90ZWN0IGl0cyBkYXRhLiAgKi8KKysgICAgICAvKiBSZXNldCB0aGUgbG9ja3MgdGhlIGR5bmFtaWMgbG9hZGVyIHVzZXMgdG8gcHJvdGVjdCBpdHMgZGF0YS4gICovCisgICAgICAgX19ydGxkX2xvY2tfaW5pdGlhbGl6ZSAoR0woZGxfbG9hZF9sb2NrKSk7CistCisrICAgICAgX19ydGxkX2xvY2tfaW5pdGlhbGl6ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7CisgICAgICAgLyogUnVuIHRoZSBoYW5kbGVycyByZWdpc3RlcmVkIGZvciB0aGUgY2hpbGQuICAqLworICAgICAgIHdoaWxlIChhbGxwICE9IE5VTEwpCisgCXsKKy0tIAorMi4xNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LUFjcXVpcmUtbGQuc28tbG9jay1iZWZvcmUtc3dpdGNoaW5nLXRvLW1hbGxvY19hdGZvcmsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1BY3F1aXJlLWxkLnNvLWxvY2stYmVmb3JlLXN3aXRjaGluZy10by1tYWxsb2NfYXRmb3JrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYzIzNGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1BY3F1aXJlLWxkLnNvLWxvY2stYmVmb3JlLXN3aXRjaGluZy10by1tYWxsb2NfYXRmb3JrLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gOTQyMjVhYjRiY2MxNjEzNTMxNTU4YTYzMjI3MGI1ZWRjZTc3OWJjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI3IEphbiAyMDE4IDEwOjA4OjA0IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMjcvMjddIEFjcXVpcmUgbGQuc28gbG9jayBiZWZvcmUgc3dpdGNoaW5nIHRvIG1hbGxvY19hdGZvcmsKKworVGhlIHBhdGNoIGlzIGZyb20KKyAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDU3OAorCitJZiBhIHRocmVhZCBoYXBwZW5zIHRvIGhvbGQgZGxfbG9hZF9sb2NrIGFuZCBoYXZlIHJfc3RhdGUgc2V0IHRvIFJUX0FERCBvcgorUlRfREVMRVRFIGF0IHRoZSB0aW1lIGFub3RoZXIgdGhyZWFkIGNhbGxzIGZvcmsoKSwgdGhlbiB0aGUgY2hpbGQgZXhpdCBjb2RlCitmcm9tIGZvcmsgKGluIG5wdGwvc3lzZGVwcy91bml4L3N5c3YvbGludXgvZm9yay5jIGluIG91ciBjYXNlKSByZS1pbml0aWFsaXplcworZGxfbG9hZF9sb2NrIGJ1dCBkb2VzIG5vdCByZXN0b3JlIHJfc3RhdGUgdG8gUlRfQ09OU0lTVEVOVC4gSWYgdGhlIGNoaWxkCitzdWJzZXF1ZW50bHkgcmVxdWlyZXMgbGQuc28gZnVuY3Rpb25hbGl0eSBiZWZvcmUgY2FsbGluZyBleGVjKCksIHRoZW4gdGhlCithc3NlcnRpb24gd2lsbCBmaXJlLgorCitUaGUgcGF0Y2ggYWNxdWlyZXMgZGxfbG9hZF9sb2NrIG9uIGVudHJ5IHRvIGZvcmsoKSBhbmQgcmVsZWFzZXMgaXQgb24gZXhpdAorZnJvbSB0aGUgcGFyZW50IHBhdGguICBUaGUgY2hpbGQgcGF0aCBpcyBpbml0aWFsaXplZCBhcyBjdXJyZW50bHkgZG9uZS4KK1RoaXMgaXMgZXNzZW50aWFsbHkgcHRocmVhZHNfYXRmb3JrLCBidXQgZm9yY2VkIHRvIGJlIGZpcnN0IGJlY2F1c2UgdGhlCithY3F1aXNpdGlvbiBvZiBkbF9sb2FkX2xvY2sgbXVzdCBoYXBwZW4gYmVmb3JlIG1hbGxvY19hdGZvcmsgaXMgYWN0aXZlCit0byBhdm9pZCBhIGRlYWRsb2NrLgorCitUaGUgcGF0Y2ggaGFzIG5vdCB5ZXQgYmVlbiBpbnRlZ3JhdGVkIHVwc3RyZWFtLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWyBOb3QgQXV0aG9yIFNlZSBidWd6aWxsYV0KKworU2lnbmVkLW9mZi1ieTogUmFnaHVuYXRoIExvbHVyIDxSYWdodW5hdGguTG9sdXJAa3BpdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvbnB0bC9mb3JrLmMgfCA5ICsrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvbnB0bC9mb3JrLmMgYi9zeXNkZXBzL25wdGwvZm9yay5jCitpbmRleCBmODc1MDZmMzk4Li4yMjVlN2I1MWY4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9ucHRsL2ZvcmsuYworKysrIGIvc3lzZGVwcy9ucHRsL2ZvcmsuYworQEAgLTI1LDYgKzI1LDcgQEAKKyAjaW5jbHVkZSA8dGxzLmg+CisgI2luY2x1ZGUgPGhwLXRpbWluZy5oPgorICNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKyNpbmNsdWRlIDxsaWJjLWxvY2suaD4KKyAjaW5jbHVkZSA8c3RkaW8tbG9jay5oPgorICNpbmNsdWRlIDxhdG9taWMuaD4KKyAjaW5jbHVkZSA8bnB0bC9wdGhyZWFkUC5oPgorQEAgLTYwLDYgKzYxLDEwIEBAIF9fbGliY19mb3JrICh2b2lkKQorICAgICAgYnV0IG91ciBjdXJyZW50IGZvcmsgaW1wbGVtZW50YXRpb24gaXMgbm90LiAgKi8KKyAgIGJvb2wgbXVsdGlwbGVfdGhyZWFkcyA9IFRIUkVBRF9HRVRNRU0gKFRIUkVBRF9TRUxGLCBoZWFkZXIubXVsdGlwbGVfdGhyZWFkcyk7CisgCisrICAvKiBncmFiIGxkLnNvIGxvY2sgQkVGT1JFIHN3aXRjaGluZyB0byBtYWxsb2NfYXRmb3JrICovCisrICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF9sb2NrKSk7CisrICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7CisrCisgICAvKiBSdW4gYWxsIHRoZSByZWdpc3RlcmVkIHByZXBhcmF0aW9uIGhhbmRsZXJzLiAgSW4gcmV2ZXJzZSBvcmRlci4KKyAgICAgIFdoaWxlIGRvaW5nIHRoaXMgd2UgYnVpbGQgdXAgYSBsaXN0IG9mIGFsbCB0aGUgZW50cmllcy4gICovCisgICBzdHJ1Y3QgZm9ya19oYW5kbGVyICpydW5wOworQEAgLTI0Niw2ICsyNTEsMTAgQEAgX19saWJjX2ZvcmsgKHZvaWQpCisgCisgCSAgYWxscCA9IGFsbHAtPm5leHQ7CisgCX0KKysKKysgICAgICAvKiB1bmxvY2sgbGQuc28gbGFzdCwgYmVjYXVzZSB3ZSBsb2NrZWQgaXQgZmlyc3QgKi8KKysgICAgICBfX3J0bGRfbG9ja191bmxvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX3dyaXRlX2xvY2spKTsKKysgICAgICBfX3J0bGRfbG9ja191bmxvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX2xvY2spKTsKKyAgICAgfQorIAorICAgcmV0dXJuIHBpZDsKKy0tIAorMi4xNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWdsaWJjLXJlc2V0LWRsLWxvYWQtd3JpdGUtbG9jay1hZnRlci1mb3JraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctZ2xpYmMtcmVzZXQtZGwtbG9hZC13cml0ZS1sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3N2IyNTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctZ2xpYmMtcmVzZXQtZGwtbG9hZC13cml0ZS1sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGE2YmI3M2QxY2ZkMjBhNzNmYmJlNjA3NjAwODM3NmZiODc4NzlkMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE4IEF1ZyAyMDE2IDE3OjU5OjEzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlc2V0IGRsX2xvYWRfd3JpdGVfbG9jayBhZnRlciBmb3JraW5nCi0KLVRoZSBwYXRjaCBpbiB0aGlzIEJ1Z3ppbGxhIGVudHJ5IHdhcyByZXF1ZXN0ZWQgYnkgYSBjdXN0b21lcjoKLQotICBodHRwczovL3d3dy5zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTkyODIKLQotVGhlIF9fbGliY19mb3JrKCkgY29kZSByZXNldCBkbF9sb2FkX2xvY2ssIGJ1dCBpdCBhbHNvIG5lZWRlZCB0byByZXNldAotZGxfbG9hZF93cml0ZV9sb2NrLiAgVGhlIHBhdGNoIGhhcyBub3QgeWV0IGJlZW4gaW50ZWdyYXRlZCB1cHN0cmVhbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFsgTm90IEF1dGhvciBTZWUgYnVnemlsbGFdCi0KLVNpZ25lZC1vZmYtYnk6IERhbW9kYXIgU29ub25lIDxkYW1vZGFyLnNvbm9uZUBrcGl0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHN5c2RlcHMvbnB0bC9mb3JrLmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbnB0bC9mb3JrLmMgYi9zeXNkZXBzL25wdGwvZm9yay5jCi1pbmRleCAyYjlhZTRiLi4zZDBiOGRhIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9ucHRsL2ZvcmsuYwotKysrIGIvc3lzZGVwcy9ucHRsL2ZvcmsuYwotQEAgLTE3NCw4ICsxNzQsOSBAQCBfX2xpYmNfZm9yayAodm9pZCkKLSAgICAgICAvKiBSZXNldCBsb2NrcyBpbiB0aGUgSS9PIGNvZGUuICAqLwotICAgICAgIF9JT19saXN0X3Jlc2V0bG9jayAoKTsKLSAKLS0gICAgICAvKiBSZXNldCB0aGUgbG9jayB0aGUgZHluYW1pYyBsb2FkZXIgdXNlcyB0byBwcm90ZWN0IGl0cyBkYXRhLiAgKi8KLSsgICAgICAvKiBSZXNldCB0aGUgbG9ja3MgdGhlIGR5bmFtaWMgbG9hZGVyIHVzZXMgdG8gcHJvdGVjdCBpdHMgZGF0YS4gICovCi0gICAgICAgX19ydGxkX2xvY2tfaW5pdGlhbGl6ZSAoR0woZGxfbG9hZF9sb2NrKSk7Ci0rICAgICAgX19ydGxkX2xvY2tfaW5pdGlhbGl6ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7Ci0gCi0gICAgICAgLyogUnVuIHRoZSBoYW5kbGVycyByZWdpc3RlcmVkIGZvciB0aGUgY2hpbGQuICAqLwotICAgICAgIHdoaWxlIChhbGxwICE9IE5VTEwpCi0tLSAKLTEuOS4xCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1CdWctNDU3OC1hZGQtbGQuc28tbG9jay13aGlsZS1mb3JrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtQnVnLTQ1NzgtYWRkLWxkLnNvLWxvY2std2hpbGUtZm9yay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc2MjM3YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1CdWctNDU3OC1hZGQtbGQuc28tbG9jay13aGlsZS1mb3JrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotVGhlIHBhdGNoIGluIHRoaXMgQnVnemlsbGEgZW50cnkgd2FzIHJlcXVlc3RlZCBieSBhIGN1c3RvbWVyOgotICBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NTc4Ci0KLUlmIGEgdGhyZWFkIGhhcHBlbnMgdG8gaG9sZCBkbF9sb2FkX2xvY2sgYW5kIGhhdmUgcl9zdGF0ZSBzZXQgdG8gUlRfQUREIG9yCi1SVF9ERUxFVEUgYXQgdGhlIHRpbWUgYW5vdGhlciB0aHJlYWQgY2FsbHMgZm9yaygpLCB0aGVuIHRoZSBjaGlsZCBleGl0IGNvZGUKLWZyb20gZm9yayAoaW4gbnB0bC9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9mb3JrLmMgaW4gb3VyIGNhc2UpIHJlLWluaXRpYWxpemVzCi1kbF9sb2FkX2xvY2sgYnV0IGRvZXMgbm90IHJlc3RvcmUgcl9zdGF0ZSB0byBSVF9DT05TSVNURU5ULiBJZiB0aGUgY2hpbGQKLXN1YnNlcXVlbnRseSByZXF1aXJlcyBsZC5zbyBmdW5jdGlvbmFsaXR5IGJlZm9yZSBjYWxsaW5nIGV4ZWMoKSwgdGhlbiB0aGUKLWFzc2VydGlvbiB3aWxsIGZpcmUuCi0KLVRoZSBwYXRjaCBhY3F1aXJlcyBkbF9sb2FkX2xvY2sgb24gZW50cnkgdG8gZm9yaygpIGFuZCByZWxlYXNlcyBpdCBvbiBleGl0Ci1mcm9tIHRoZSBwYXJlbnQgcGF0aC4gIFRoZSBjaGlsZCBwYXRoIGlzIGluaXRpYWxpemVkIGFzIGN1cnJlbnRseSBkb25lLgotVGhpcyBpcyBlc3NlbnRpYWxseSBwdGhyZWFkc19hdGZvcmssIGJ1dCBmb3JjZWQgdG8gYmUgZmlyc3QgYmVjYXVzZSB0aGUKLWFjcXVpc2l0aW9uIG9mIGRsX2xvYWRfbG9jayBtdXN0IGhhcHBlbiBiZWZvcmUgbWFsbG9jX2F0Zm9yayBpcyBhY3RpdmUKLXRvIGF2b2lkIGEgZGVhZGxvY2suCi1UaGUgcGF0Y2ggaGFzIG5vdCB5ZXQgYmVlbiBpbnRlZ3JhdGVkIHVwc3RyZWFtLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWyBOb3QgQXV0aG9yIFNlZSBidWd6aWxsYV0KLQotU2lnbmVkLW9mZi1ieTogUmFnaHVuYXRoIExvbHVyIDxSYWdodW5hdGguTG9sdXJAa3BpdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogZ2l0L3N5c2RlcHMvbnB0bC9mb3JrLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9zeXNkZXBzL25wdGwvZm9yay5jICAgICAgIDIwMTctMDgtMDMgMTY6MDI6MTUuNjc0NzA0MDgwICswODAwCi0rKysgZ2l0L3N5c2RlcHMvbnB0bC9mb3JrLmMgICAgMjAxNy0wOC0wNCAxODoxNTowMi40NjMzNjIwMTUgKzA4MDAKLUBAIC0yNSw2ICsyNSw3IEBACi0gI2luY2x1ZGUgPHRscy5oPgotICNpbmNsdWRlIDxocC10aW1pbmcuaD4KLSAjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsjaW5jbHVkZSA8bGliYy1sb2NrLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLWxvY2suaD4KLSAjaW5jbHVkZSA8YXRvbWljLmg+Ci0gI2luY2x1ZGUgPG5wdGwvcHRocmVhZFAuaD4KLUBAIC02MCw2ICs2MSwxMCBAQAotICAgICAgYnV0IG91ciBjdXJyZW50IGZvcmsgaW1wbGVtZW50YXRpb24gaXMgbm90LiAgKi8KLSAgIGJvb2wgbXVsdGlwbGVfdGhyZWFkcyA9IFRIUkVBRF9HRVRNRU0gKFRIUkVBRF9TRUxGLCBoZWFkZXIubXVsdGlwbGVfdGhyZWFkcyk7Ci0gCi0rICAvKiBncmFiIGxkLnNvIGxvY2sgQkVGT1JFIHN3aXRjaGluZyB0byBtYWxsb2NfYXRmb3JrICovCi0rICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF9sb2NrKSk7Ci0rICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7Ci0rCi0gICAvKiBSdW4gYWxsIHRoZSByZWdpc3RlcmVkIHByZXBhcmF0aW9uIGhhbmRsZXJzLiAgSW4gcmV2ZXJzZSBvcmRlci4KLSAgICAgIFdoaWxlIGRvaW5nIHRoaXMgd2UgYnVpbGQgdXAgYSBsaXN0IG9mIGFsbCB0aGUgZW50cmllcy4gICovCi0gICBzdHJ1Y3QgZm9ya19oYW5kbGVyICpydW5wOwotQEAgLTI0Nyw2ICsyNTIsMTAgQEAKLSAKLSAJICBhbGxwID0gYWxscC0+bmV4dDsKLSAJfQotKwotKyAgICAgIC8qIHVubG9jayBsZC5zbyBsYXN0LCBiZWNhdXNlIHdlIGxvY2tlZCBpdCBmaXJzdCAqLwotKyAgICAgIF9fcnRsZF9sb2NrX3VubG9ja19yZWN1cnNpdmUgKEdMKGRsX2xvYWRfd3JpdGVfbG9jaykpOwotKyAgICAgIF9fcnRsZF9sb2NrX3VubG9ja19yZWN1cnNpdmUgKEdMKGRsX2xvYWRfbG9jaykpOwotICAgICB9Ci0gCi0gICByZXR1cm4gcGlkOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktYml0cy1zaWdpbmZvLWNvbnN0cy5oLWVudW0tZGVmaW5pdGlvbi1mb3ItVFJBUF9IV0JLUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZml4LVdzdHJpbmdvcC10cnVuY2EucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpeC1Xc3RyaW5nb3AtdHJ1bmNhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMjlmNDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpeC1Xc3RyaW5nb3AtdHJ1bmNhLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gMTEzZTA1MTZmYmQzY2UxODI1M2YwNDIzNzYyNDE2ZDRjNGIzOGZiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIyIE1hciAyMDE4IDE3OjU3OjM3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjkvMjldIFJlcGxhY2Ugc3RybmNweSB3aXRoIG1lbWNjcHkgdG8gZml4CisgLVdzdHJpbmdvcC10cnVuY2F0aW9uLgorCisJKiBuaXMvbnNzX25pc3BsdXMvbmlzcGx1cy1wYXJzZXIuYzogUmVwbGFjZSBzdHJuY3B5IHdpdGggbWVtY3B5IHRvCisJYXZvaWQgLVdzdHJpbmdvcC10cnVuY2F0aW9uLgorLS0tCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE4LTAzL21zZzAwNTMxLmh0bWxdCisKKyBuaXMvbnNzX25pc3BsdXMvbmlzcGx1cy1wYXJzZXIuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9uaXMvbnNzX25pc3BsdXMvbmlzcGx1cy1wYXJzZXIuYyBiL25pcy9uc3NfbmlzcGx1cy9uaXNwbHVzLXBhcnNlci5jCitpbmRleCA4ZGMwMjFlNzNkLi5iNTMyODRmODg5IDEwMDY0NAorLS0tIGEvbmlzL25zc19uaXNwbHVzL25pc3BsdXMtcGFyc2VyLmMKKysrKyBiL25pcy9uc3NfbmlzcGx1cy9uaXNwbHVzLXBhcnNlci5jCitAQCAtODcsNyArODcsNyBAQCBfbnNzX25pc3BsdXNfcGFyc2VfcHdlbnQgKG5pc19yZXN1bHQgKnJlc3VsdCwgc3RydWN0IHBhc3N3ZCAqcHcsCisgICAgICAgaWYgKGxlbiA+PSByb29tX2xlZnQpCisgCWdvdG8gbm9fbW9yZV9yb29tOworIAorLSAgICAgIHN0cm5jcHkgKGZpcnN0X3VudXNlZCwgbnVtc3RyLCBsZW4pOworKyAgICAgIG1lbWNweSAoZmlyc3RfdW51c2VkLCBudW1zdHIsIGxlbik7CisgICAgICAgZmlyc3RfdW51c2VkW2xlbl0gPSAnXDAnOworICAgICAgIG51bXN0ciA9IGZpcnN0X3VudXNlZDsKKyAgICAgfQorQEAgLTEwMyw3ICsxMDMsNyBAQCBfbnNzX25pc3BsdXNfcGFyc2VfcHdlbnQgKG5pc19yZXN1bHQgKnJlc3VsdCwgc3RydWN0IHBhc3N3ZCAqcHcsCisgICAgICAgaWYgKGxlbiA+PSByb29tX2xlZnQpCisgCWdvdG8gbm9fbW9yZV9yb29tOworIAorLSAgICAgIHN0cm5jcHkgKGZpcnN0X3VudXNlZCwgbnVtc3RyLCBsZW4pOworKyAgICAgIG1lbWNweSAoZmlyc3RfdW51c2VkLCBudW1zdHIsIGxlbik7CisgICAgICAgZmlyc3RfdW51c2VkW2xlbl0gPSAnXDAnOworICAgICAgIG51bXN0ciA9IGZpcnN0X3VudXNlZDsKKyAgICAgfQorLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktYXNzZXJ0LVN1cHBvcnQtdHlwZXMtd2l0aG91dC1vcGVyYXRvci1pbnQtQlotMjE5NzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1hc3NlcnQtU3VwcG9ydC10eXBlcy13aXRob3V0LW9wZXJhdG9yLWludC1CWi0yMTk3Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M3MDUwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1hc3NlcnQtU3VwcG9ydC10eXBlcy13aXRob3V0LW9wZXJhdG9yLWludC1CWi0yMTk3Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSogZml4ZXMgImxhbWJkYS1leHByZXNzaW9uIGluIHVuZXZhbHVhdGVkIGNvbnRleHQiIGNvbXBpbGUgZmFpbHVyZXMgc3VjaCBhcwotICBodHRwczovL2dpdGh1Yi5jb20vbmxvaG1hbm4vanNvbi9pc3N1ZXMvNzA1Ci0KLSogZml4ZXMgIm5vIG1hdGNoIGZvciAnb3BlcmF0b3I9PSIgY29tcGlsZSBmYWlsdXJlcyBzdWNoIGFzCi0gIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mjk5MAotCi0qIENoYW5nZWxvZyBlZGl0IHdhcyByZW1vdmVkIGZyb20gdXBzdHJlYW0gY29tbWl0IGJlY2F1c2UgaXQgY2F1c2VkIGNvbmZsaWN0Ci0KLVNpZ25lZC1vZmYtYnk6IFMuIExvY2t3b29kLUNoaWxkcyA8c2psQHZjdGxhYnMuY29tPgotCi1Gcm9tIGI1ODg5ZDI1ZTliZjk0NGE4OWZkZDdiY2FiZjNiNmM2ZjZiYjZmN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGbG9yaWFuIFdlaW1lciA8ZndlaW1lckByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyMSBBdWcgMjAxNyAxMzowMzoyOSArMDIwMAotU3ViamVjdDogW1BBVENIXSBhc3NlcnQ6IFN1cHBvcnQgdHlwZXMgd2l0aG91dCBvcGVyYXRvcj09IChpbnQpIFtCWiAjMjE5NzJdCi0KLS0tLQotIGFzc2VydC9NYWtlZmlsZSAgICAgICAgICB8IDExICsrKysrKy0KLSBhc3NlcnQvYXNzZXJ0LmggICAgICAgICAgfCAxNiArKysrKystLS0tCi0gYXNzZXJ0L3RzdC1hc3NlcnQtYysrLmNjIHwgNzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gYXNzZXJ0L3RzdC1hc3NlcnQtZysrLmNjIHwgMTkgKysrKysrKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYXNzZXJ0L3RzdC1hc3NlcnQtYysrLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGFzc2VydC90c3QtYXNzZXJ0LWcrKy5jYwotCi1kaWZmIC0tZ2l0IGEvYXNzZXJ0L01ha2VmaWxlIGIvYXNzZXJ0L01ha2VmaWxlCi1pbmRleCAxYzNiZTliLi45ZWMxYmU4IDEwMDY0NAotLS0tIGEvYXNzZXJ0L01ha2VmaWxlCi0rKysgYi9hc3NlcnQvTWFrZWZpbGUKLUBAIC0yNSw2ICsyNSwxNSBAQCBpbmNsdWRlIC4uL01ha2Vjb25maWcKLSBoZWFkZXJzCTo9IGFzc2VydC5oCi0gCi0gcm91dGluZXMgOj0gYXNzZXJ0IGFzc2VydC1wZXJyIF9fYXNzZXJ0Ci0tdGVzdHMgOj0gdGVzdC1hc3NlcnQgdGVzdC1hc3NlcnQtcGVycgotK3Rlc3RzIDo9IHRlc3QtYXNzZXJ0IHRlc3QtYXNzZXJ0LXBlcnIgdHN0LWFzc2VydC1jKysgdHN0LWFzc2VydC1nKysKLSAKLSBpbmNsdWRlIC4uL1J1bGVzCi0rCi0raWZlcSAoJChoYXZlLWN4eC10aHJlYWRfbG9jYWwpLHllcykKLStDRkxBR1MtdHN0LWFzc2VydC1jKysubyA9IC1zdGQ9YysrMTEKLStMRExJQlMtdHN0LWFzc2VydC1jKysgPSAtbHN0ZGMrKwotK0NGTEFHUy10c3QtYXNzZXJ0LWcrKy5vID0gLXN0ZD1nbnUrKzExCi0rTERMSUJTLXRzdC1hc3NlcnQtZysrID0gLWxzdGRjKysKLStlbHNlCi0rdGVzdHMtdW5zdXBwb3J0ZWQgKz0gdHN0LWFzc2VydC1jKysgdHN0LWFzc2VydC1nKysKLStlbmRpZgotZGlmZiAtLWdpdCBhL2Fzc2VydC9hc3NlcnQuaCBiL2Fzc2VydC9hc3NlcnQuaAotaW5kZXggNjgwMWNmZS4uNjQwYzk1YyAxMDA2NDQKLS0tLSBhL2Fzc2VydC9hc3NlcnQuaAotKysrIGIvYXNzZXJ0L2Fzc2VydC5oCi1AQCAtODUsNyArODUsMTIgQEAgX19FTkRfREVDTFMKLSAvKiBXaGVuIHBvc3NpYmxlLCBkZWZpbmUgYXNzZXJ0IHNvIHRoYXQgaXQgZG9lcyBub3QgYWRkIGV4dHJhCi0gICAgcGFyZW50aGVzZXMgYXJvdW5kIEVYUFIuICBPdGhlcndpc2UsIHRob3NlIGFkZGVkIHBhcmVudGhlc2VzIHdvdWxkCi0gICAgc3VwcHJlc3Mgd2FybmluZ3Mgd2UnZCBleHBlY3QgdG8gYmUgZGV0ZWN0ZWQgYnkgZ2NjJ3MgLVdwYXJlbnRoZXNlcy4gICovCi0tIyBpZiAhZGVmaW5lZCBfX0dOVUNfXyB8fCBkZWZpbmVkIF9fU1RSSUNUX0FOU0lfXwotKyMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cwotKyMgIGRlZmluZSBhc3NlcnQoZXhwcikJCQkJCQkJXAotKyAgICAgKHN0YXRpY19jYXN0IDxib29sPiAoZXhwcikJCQkJCQlcCi0rICAgICAgPyB2b2lkICgwKQkJCQkJCQlcCi0rICAgICAgOiBfX2Fzc2VydF9mYWlsICgjZXhwciwgX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTikpCi0rIyBlbGlmICFkZWZpbmVkIF9fR05VQ19fIHx8IGRlZmluZWQgX19TVFJJQ1RfQU5TSV9fCi0gIyAgZGVmaW5lIGFzc2VydChleHByKQkJCQkJCQlcCi0gICAgICgoZXhwcikJCQkJCQkJCVwKLSAgICAgID8gX19BU1NFUlRfVk9JRF9DQVNUICgwKQkJCQkJCVwKLUBAIC05MywxMiArOTgsMTEgQEAgX19FTkRfREVDTFMKLSAjIGVsc2UKLSAvKiBUaGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBFWFBSIGlzIG5vdCBldmFsdWF0ZWQgZHVlIHRvIHRoZSBzaXplb2YsCi0gICAgYnV0IHdpbGwgdHJpZ2dlciBhbnkgcGVkYW50aWMgd2FybmluZ3MgbWFza2VkIGJ5IHRoZSBfX2V4dGVuc2lvbl9fCi0tICAgZm9yIHRoZSBzZWNvbmQgb2NjdXJyZW5jZS4gIFRoZSBleHBsaWNpdCBjb21wYXJpc29uIGFnYWluc3QgemVybyBpcwotLSAgIHJlcXVpcmVkIHRvIHN1cHBvcnQgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIGJpdCBmaWVsZHMgaW4gdGhpcwotLSAgIGNvbnRleHQsIGFuZCB0byBzdXBwcmVzcyB0aGUgZXZhbHVhdGlvbiBvZiB2YXJpYWJsZSBsZW5ndGgKLS0gICBhcnJheXMuICAqLwotKyAgIGZvciB0aGUgc2Vjb25kIG9jY3VycmVuY2UuICBUaGUgdGVybmFyeSBvcGVyYXRvciBpcyByZXF1aXJlZCB0bwotKyAgIHN1cHBvcnQgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIGJpdCBmaWVsZHMgaW4gdGhpcyBjb250ZXh0LCBhbmQgdG8KLSsgICBzdXBwcmVzcyB0aGUgZXZhbHVhdGlvbiBvZiB2YXJpYWJsZSBsZW5ndGggYXJyYXlzLiAgKi8KLSAjICBkZWZpbmUgYXNzZXJ0KGV4cHIpCQkJCQkJCVwKLS0gICgodm9pZCkgc2l6ZW9mICgoZXhwcikgPT0gMCksIF9fZXh0ZW5zaW9uX18gKHsJCQlcCi0rICAoKHZvaWQpIHNpemVvZiAoKGV4cHIpID8gMSA6IDApLCBfX2V4dGVuc2lvbl9fICh7CQkJXAotICAgICAgIGlmIChleHByKQkJCQkJCQkJXAotICAgICAgICAgOyAvKiBlbXB0eSAqLwkJCQkJCQlcCi0gICAgICAgZWxzZQkJCQkJCQkJXAotZGlmZiAtLWdpdCBhL2Fzc2VydC90c3QtYXNzZXJ0LWMrKy5jYyBiL2Fzc2VydC90c3QtYXNzZXJ0LWMrKy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjEyYTVlNjkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2Fzc2VydC90c3QtYXNzZXJ0LWMrKy5jYwotQEAgLTAsMCArMSw3OCBAQAotKy8qIFRlc3RzIGZvciBpbnRlcmFjdGlvbnMgYmV0d2VlbiBDKysgYW5kIGFzc2VydC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKLSsgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLSsvKiBUaGUgQysrIHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQgaWYgdGhlIGFzc2VydCBhcmd1bWVudCBpcyBhIGNvbnN0YW50Ci0rICAgc3ViZXhwcmVzc2lvbiwgdGhlbiB0aGUgYXNzZXJ0IGl0c2VsZiBpcyBvbmUsIHRvby4gICovCi0rY29uc3RleHByIGludAotK2NoZWNrX2NvbnN0ZXhwciAoKQotK3sKLSsgIHJldHVybiAoYXNzZXJ0ICh0cnVlKSwgMSk7Ci0rfQotKwotKy8qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyBjYW4gYmUgY29udGV4dHVhbGx5IGNvbnZlcnRlZCB0byBib29sLCBidXQKLSsgICBjYW5ub3QgYmUgY29tcGFyZWQgdG8gaW50LiAgKi8KLStzdHJ1Y3Qgbm9faW50Ci0rewotKyAgbm9faW50ICgpID0gZGVmYXVsdDsKLSsgIG5vX2ludCAoY29uc3Qgbm9faW50ICYpID0gZGVsZXRlOwotKwotKyAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCAoKSBjb25zdAotKyAgewotKyAgICByZXR1cm4gdHJ1ZTsKLSsgIH0KLSsKLSsgIGJvb2wgb3BlcmF0b3IhICgpIGNvbnN0OyAvKiBObyBkZWZpbml0aW9uLiAgKi8KLSsgIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIG9wZXJhdG9yPT0gKFQpIGNvbnN0OyAvKiBObyBkZWZpbml0aW9uLiAgKi8KLSsgIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIG9wZXJhdG9yIT0gKFQpIGNvbnN0OyAvKiBObyBkZWZpbml0aW9uLiAgKi8KLSt9OwotKwotKy8qIFRoaXMgY2xhc3MgdGVzdHMgdGhhdCBvcGVyYXRvcj09IGlzIG5vdCB1c2VkIGJ5IGFzc2VydC4gICovCi0rc3RydWN0IGJvb2xfYW5kX2ludAotK3sKLSsgIGJvb2xfYW5kX2ludCAoKSA9IGRlZmF1bHQ7Ci0rICBib29sX2FuZF9pbnQgKGNvbnN0IG5vX2ludCAmKSA9IGRlbGV0ZTsKLSsKLSsgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wgKCkgY29uc3QKLSsgIHsKLSsgICAgcmV0dXJuIHRydWU7Ci0rICB9Ci0rCi0rICBib29sIG9wZXJhdG9yISAoKSBjb25zdDsgLyogTm8gZGVmaW5pdGlvbi4gICovCi0rICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCBvcGVyYXRvcj09IChUKSBjb25zdDsgLyogTm8gZGVmaW5pdGlvbi4gICovCi0rICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCBvcGVyYXRvciE9IChUKSBjb25zdDsgLyogTm8gZGVmaW5pdGlvbi4gICovCi0rfTsKLSsKLStzdGF0aWMgaW50Ci0rZG9fdGVzdCAoKQotK3sKLSsgIHsKLSsgICAgbm9faW50IHZhbHVlOwotKyAgICBhc3NlcnQgKHZhbHVlKTsKLSsgIH0KLSsKLSsgIHsKLSsgICAgYm9vbF9hbmRfaW50IHZhbHVlOwotKyAgICBhc3NlcnQgKHZhbHVlKTsKLSsgIH0KLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsjaW5jbHVkZSA8c3VwcG9ydC90ZXN0LWRyaXZlci5jPgotZGlmZiAtLWdpdCBhL2Fzc2VydC90c3QtYXNzZXJ0LWcrKy5jYyBiL2Fzc2VydC90c3QtYXNzZXJ0LWcrKy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjhjMDY0MDIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2Fzc2VydC90c3QtYXNzZXJ0LWcrKy5jYwotQEAgLTAsMCArMSwxOSBAQAotKy8qIFRlc3RzIGZvciBpbnRlcmFjdGlvbnMgYmV0d2VlbiBDKysgYW5kIGFzc2VydC4gIEdOVSBDKysxMSB2ZXJzaW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHNlZQotKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPHRzdC1hc3NlcnQtYysrLmNjPgotLS0gCi0xLjkuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMC1wbHVyYWxfY19ub19wcmVwcm9jZXNzb3JfbGluZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMC1wbHVyYWxfY19ub19wcmVwcm9jZXNzb3JfbGluZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwM2UxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLXBsdXJhbF9jX25vX3ByZXByb2Nlc3Nvcl9saW5lcy5wYXRjaApAQCAtMCwwICsxLDIxIEBACitJbXByb3ZlIHJlcHJvZHVjaWJpbGl0eToKK0RvIG5vdCBwdXQgYW55ICNsaW5lIHByZXByb2Nlc3NvciBjb21tYW5kcyBpbiBiaXNvbiBnZW5lcmF0ZWQgZmlsZXMuCitUaGVzZSBsaW5lcyBjb250YWluIGFic29sdXRlIHBhdGhzIGNvbnRhaW5pbmcgZmlsZSBsb2NhdGlvbnMgb24KK3RoZSBob3N0IGJ1aWxkIG1hY2hpbmUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL2ludGwvTWFrZWZpbGUgYi9pbnRsL01ha2VmaWxlCitpbmRleCAyMjE5NzE3Li5hMjAzNzgwIDEwMDY0NAorLS0tIGEvaW50bC9NYWtlZmlsZQorKysrIGIvaW50bC9NYWtlZmlsZQorQEAgLTE1MSw3ICsxNTEsNyBAQCAkKG9ianBmeCl0c3QtZ2V0dGV4dDYub3V0OiAkKG9ianBmeCl0c3QtZ2V0dGV4dC5vdXQKKyAKKyBDUFBGTEFHUyArPSAtRCdMT0NBTEVESVI9IiQobG9jYWxlZGlyKSInIFwKKyAJICAgIC1EJ0xPQ0FMRV9BTElBU19QQVRIPSIkKGxvY2FsZWRpcikiJworLUJJU09ORkxBR1MgPSAtLXlhY2MgLS1uYW1lLXByZWZpeD1fX2dldHRleHQgLS1vdXRwdXQKKytCSVNPTkZMQUdTID0gLS15YWNjIC0tbm8tbGluZXMgLS1uYW1lLXByZWZpeD1fX2dldHRleHQgLS1vdXRwdXQKKyAKKyAkKGluc3RfbG9jYWxlZGlyKS9sb2NhbGUuYWxpYXM6IGxvY2FsZS5hbGlhcyAkKCtmb3JjZSkKKyAJJChkby1pbnN0YWxsKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzEtbmF0aXZlc2RrLWRlcHJlY2F0ZS1saWJjcnlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLW5hdGl2ZXNkay1kZXByZWNhdGUtbGliY3J5cHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkxMzJlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLW5hdGl2ZXNkay1kZXByZWNhdGUtbGliY3J5cHQucGF0Y2gKQEAgLTAsMCArMSw0MTkgQEAKK0JhY2tncm91bmQgaW5mb3JtYXRpb246CisKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE3LTA4L21zZzAxMjU3Lmh0bWwKK2h0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9DaGFuZ2VzL1JlcGxhY2VfZ2xpYmNfbGliY3J5cHRfd2l0aF9saWJ4Y3J5cHQKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFAc291cmNld2FyZS5vcmddCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworRnJvbTogWmFjayBXZWluYmVyZyA8emFja3dAcGFuaXguY29tPgorU3ViamVjdDogW1BBVENIXSBEZXByZWNhdGUgbGliY3J5cHQgYW5kIGRvbid0IGJ1aWxkIGl0IGJ5IGRlZmF1bHQKKworQmFjayBpbiBKdW5lLCBCasO2cm4gRXNzZXIgcHJvcG9zZWQgdG8gYWRkIE9wZW5CU0QtY29tcGF0aWJsZSBiY3J5cHQKK3N1cHBvcnQgdG8gb3VyIGltcGxlbWVudGF0aW9uIG9mIGNyeXB0KDMpLCBhbmQgWmFjayBXZWluYmVyZyByZXBsaWVkCit0aGF0IGl0IG1pZ2h0IGFjdHVhbGx5IG1ha2UgbW9yZSBzZW5zZSB0byBfcmVtb3ZlXyBsaWJjcnlwdCBmcm9tCitnbGliYywgZnJlZWluZyB1cCBsaWJjcnlwdC5zby4xIGFuZCBjcnlwdC5oIHRvIGJlIHByb3ZpZGVkIGJ5IGEKK3NlcGFyYXRlIHByb2plY3QgdGhhdCBjb3VsZCBtb3ZlIGZhc3Rlci4gIChGb3IgaW5zdGFuY2UsIGxpYnhjcnlwdDoKK2h0dHBzOi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQpCisKK1RoaXMgcGF0Y2ggZGlzYWJsZXMgYnVpbGQgYW5kIGluc3RhbGxhdGlvbiBvZiBsaWJjcnlwdCBieSBkZWZhdWx0LiAgSXQKK2NhbiBiZSByZS1lbmFibGVkIHdpdGggLS1lbmFibGUtb2Jzb2xldGUtY3J5cHQgdG8gY29uZmlndXJlLiAgVW5saWtlCitsaWJuc2wsIHdlIGRvICpub3QqIGluc3RhbGwgYSBydW50aW1lIHNoYXJlZCBsaWJyYXJ5OyB0aGF0J3MgbGVmdCB0bwordGhlIHJlcGxhY2VtZW50LiAgKFVubGlrZSB0aGUgU3VuUlBDIHNpdHVhdGlvbiwgSSB0aGluayB3ZSBjYW4KK3Byb2JhYmx5IGRyb3AgdGhpcyBjb2RlIGFsdG9nZXRoZXIgaW4gYSByZWxlYXNlIG9yIHR3by4pCisKK1RoZSBmdW5jdGlvbiBwcm90b3R5cGVzIGZvciBjcnlwdCBhbmQgZW5jcnlwdCBhcmUgcmVtb3ZlZCBmcm9tCit1bmlzdGQuaCwgYW5kIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgZm9yIHNldGtleSBpcyByZW1vdmVkIGZyb20KK3N0ZGxpYi5oOyB0aGV5IGRvICpub3QqIGNvbWUgYmFjayB3aXRoIC0tZW5hYmxlLW9ic29sZXRlLWNyeXB0LiAgVGhpcworbWVhbnMgZ2xpYmMgbm8gbG9uZ2VyIHByb3ZpZGVzIHRoZSBQT1NJWCBDUllQVCBvcHRpb24sIGFuZCB0aGUgbWFjcm8KK19YT1BFTl9DUllQVCBpcyBhbHNvIHJlbW92ZWQgZnJvbSB1bmlzdGQuaCB0byBpbmRpY2F0ZSB0aGF0LgorKF9TQ19YT1BFTl9DUllQVCBpcyBzdGlsbCBkZWZpbmVkLCBidXQgc3lzY29uZihfU0NfWE9QRU5fQ1JZUFQpIHdpbGwKK3JldHVybiAtMSBhdCBydW50aW1lLikgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxzbyB1bmNvbmRpdGlvbmFsbHkKK3JlbW92ZWQgZnJvbSBjb25mb3JtL2RhdGEve3N0ZGxpYix1bmlzdGR9LmgtZGF0YS4KKworCSogcG9zaXgvdW5pc3RkLmggKF9YT1BFTl9DUllQVCwgY3J5cHQsIGVuY3J5cHQpOiBEb24ndCBkZWNsYXJlLgorCSogc3RkbGliL3N0ZGxpYi5oIChzZXRrZXkpOiBEb24ndCBkZWNsYXJlLgorCisJKiBjb25maWd1cmUuYWMgKC0tZW5hYmxlLW9ic29sZXRlLWNyeXB0KTogTmV3IGNvbmZpZ3VyZSBvcHRpb24uCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiBjb25maWcubWFrZS5pbiAoYnVpbGQtb2Jzb2xldGUtY3J5cHQpOiBOZXcgbWFrZWZpbGUgdmFyaWFibGUuCisJKiBjcnlwdC9CYW5uZXI6IERlbGV0ZSBmaWxlLgorCSogY3J5cHQvTWFrZWZpbGU6IERvbid0IGJ1aWxkIGFueXRoaW5nIHVubGVzcworCSQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpIGlzICd5ZXMnLgorCSogc3lzZGVwcy9zcGFyYy9zcGFyYzMyL3NwYXJjdjkvbXVsdGlhcmNoL01ha2VmaWxlOiBPbmx5IGFkZCB0aGluZ3MKKwl0byBsaWJjcnlwdC1zeXNkZXBfcm91dGluZXMgd2hlbiAkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSBpcyAneWVzJy4KKwkqIHN5c2RlcHMvc3BhcmMvc3BhcmM2NC9tdWx0aWFyY2gvTWFrZWZpbGU6IExpa2V3aXNlLgorCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL01ha2VmaWxlOiBMaWtld2lzZS4KKworCSogY29uZm9ybS9NYWtlZmlsZTogT25seSBpbmNsdWRlIGxpYmNyeXB0LmEgaW4gbGlua25hbWVzcGFjZSB0ZXN0cworCXdoZW4gJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkgaXMgJ3llcycuCisJKiBjb25mb3JtL2RhdGEvc3RkbGliLmgtZGF0YSAoc2V0a2V5KTogRG9uJ3QgZXhwZWN0LgorCSogY29uZm9ybS9kYXRhL3VuaXN0ZC5oLWRhdGEgKGNyeXB0LCBlbmNyeXB0KTogRG9uJ3QgZXhwZWN0LgorCSogZWxmL01ha2VmaWxlOiBPbmx5IHBlcmZvcm0gdmFyaW91cyB0ZXN0cyBvZiBsaWJjcnlwdC5zby9saWJjcnlwdC5hCisJd2hlbiAkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSBpcyAneWVzJy4KKwkqIGVsZi90c3QtbGlua2FsbC1zdGF0aWMuYzogRG9uJ3QgaW5jbHVkZSBjcnlwdC5oIHdoZW4gVVNFX0NSWVBUCisJaXMgZmFsc2UuCistLS0KKyBORVdTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKysrKysKKyBjb25maWcubWFrZS5pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrKysrKworIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKysrCisgY29uZm9ybS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQgKysrKysrKysrKy0tLS0KKyBjb25mb3JtL2RhdGEvc3RkbGliLmgtZGF0YSAgICAgICAgICAgICAgICAgICAgICAgfCAgMyAtLS0KKyBjb25mb3JtL2RhdGEvdW5pc3RkLmgtZGF0YSAgICAgICAgICAgICAgICAgICAgICAgfCAgNiAtLS0tLS0KKyBjcnlwdC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArKysrKworIGVsZi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrKysrKy0tLS0KKyBlbGYvdHN0LWxpbmthbGwtc3RhdGljLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArKworIHBvc2l4L3VuaXN0ZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2IC0tLS0tLS0tLS0tLS0tLS0KKyBzdGRsaWIvc3RkbGliLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiAtLS0tLS0KKyBzeXNkZXBzL3NwYXJjL3NwYXJjMzIvc3BhcmN2OS9tdWx0aWFyY2gvTWFrZWZpbGUgfCAgMiArKworIHN5c2RlcHMvc3BhcmMvc3BhcmM2NC9tdWx0aWFyY2gvTWFrZWZpbGUgICAgICAgICB8ICAyICsrCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL01ha2VmaWxlICAgICAgICAgICAgIHwgIDIgKysKKyAxNSBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZy5tYWtlLmluIGIvY29uZmlnLm1ha2UuaW4KK2luZGV4IDllNWUyNGIyYzYuLjhmZTYxMGQwNGQgMTAwNjQ0CistLS0gYS9jb25maWcubWFrZS5pbgorKysrIGIvY29uZmlnLm1ha2UuaW4KK0BAIC04Miw2ICs4Miw3IEBAIG1hY2gtaW50ZXJmYWNlLWxpc3QgPSBAbWFjaF9pbnRlcmZhY2VfbGlzdEAKKyAKKyBleHBlcmltZW50YWwtbWFsbG9jID0gQGV4cGVyaW1lbnRhbF9tYWxsb2NACisgCisrYnVpbGQtb2Jzb2xldGUtY3J5cHQgPSBAYnVpbGRfb2Jzb2xldGVfY3J5cHRACisgbnNzLWNyeXB0ID0gQGxpYmNfY3ZfbnNzX2NyeXB0QAorIHN0YXRpYy1uc3MtY3J5cHQgPSBAbGliY19jdl9zdGF0aWNfbnNzX2NyeXB0QAorIAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggN2E4YmQzZjgxNy4uNDZmNmJkN2Y4NiAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNjcyLDYgKzY3Miw3IEBAIGJhc2VfbWFjaGluZQorIGhhdmVfdHVuYWJsZXMKKyBidWlsZF9wdF9jaG93bgorIGJ1aWxkX25zY2QKKytidWlsZF9vYnNvbGV0ZV9jcnlwdAorIGJ1aWxkX29ic29sZXRlX25zbAorIGxpbmtfb2Jzb2xldGVfcnBjCisgbGliY19jdl9zdGF0aWNfbnNzX2NyeXB0CitAQCAtNzgyLDYgKzc4Myw3IEBAIGVuYWJsZV9leHBlcmltZW50YWxfbWFsbG9jCisgZW5hYmxlX25zc19jcnlwdAorIGVuYWJsZV9vYnNvbGV0ZV9ycGMKKyBlbmFibGVfb2Jzb2xldGVfbnNsCisrZW5hYmxlX29ic29sZXRlX2NyeXB0CisgZW5hYmxlX3N5c3RlbXRhcAorIGVuYWJsZV9idWlsZF9uc2NkCisgZW5hYmxlX25zY2QKK0BAIC0xNDUzLDYgKzE0NTUsNyBAQCBPcHRpb25hbCBGZWF0dXJlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmstdGltZSB1c2FnZQorICAgLS1lbmFibGUtb2Jzb2xldGUtbnNsICAgYnVpbGQgYW5kIGluc3RhbGwgdGhlIG9ic29sZXRlIGxpYm5zbCBsaWJyYXJ5IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kaW5nIE5TUyBtb2R1bGVzCisrICAtLWVuYWJsZS1vYnNvbGV0ZS1jcnlwdCBidWlsZCBhbmQgaW5zdGFsbCB0aGUgb2Jzb2xldGUgbGliY3J5cHQgbGlicmFyeQorICAgLS1lbmFibGUtc3lzdGVtdGFwICAgICAgZW5hYmxlIHN5c3RlbXRhcCBzdGF0aWMgcHJvYmUgcG9pbnRzIFtkZWZhdWx0PW5vXQorICAgLS1kaXNhYmxlLWJ1aWxkLW5zY2QgICAgZGlzYWJsZSBidWlsZGluZyBhbmQgaW5zdGFsbGluZyB0aGUgbnNjZCBkYWVtb24KKyAgIC0tZGlzYWJsZS1uc2NkICAgICAgICAgIGxpYnJhcnkgZnVuY3Rpb25zIHdpbGwgbm90IGNvbnRhY3QgdGhlIG5zY2QgZGFlbW9uCitAQCAtMzYzMiw2ICszNjM1LDE2IEBAIGlmIHRlc3QgIiRidWlsZF9vYnNvbGV0ZV9uc2wiID0geWVzOyB0aGVuCisgCisgZmkKKyAKKysjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtb2Jzb2xldGUtY3J5cHQgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7ZW5hYmxlX29ic29sZXRlX2NyeXB0K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGVuYWJsZXZhbD0kZW5hYmxlX29ic29sZXRlX2NyeXB0OyBidWlsZF9vYnNvbGV0ZV9jcnlwdD0kZW5hYmxldmFsCisrZWxzZQorKyAgYnVpbGRfb2Jzb2xldGVfY3J5cHQ9bm8KKytmaQorKworKworKworKworICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zeXN0ZW10YXAgd2FzIGdpdmVuLgorIGlmIHRlc3QgIiR7ZW5hYmxlX3N5c3RlbXRhcCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICBlbmFibGV2YWw9JGVuYWJsZV9zeXN0ZW10YXA7IHN5c3RlbXRhcD0kZW5hYmxldmFsCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjYTEyODJhNmIzLi4wMTQyMzUzNzQwIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zNzgsNiArMzc4LDE0IEBAIGlmIHRlc3QgIiRidWlsZF9vYnNvbGV0ZV9uc2wiID0geWVzOyB0aGVuCisgICBBQ19ERUZJTkUoTElOS19PQlNPTEVURV9OU0wpCisgZmkKKyAKKytBQ19BUkdfRU5BQkxFKFtvYnNvbGV0ZS1jcnlwdF0sCisrICAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtb2Jzb2xldGUtY3J5cHRdLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1aWxkIGFuZCBpbnN0YWxsIHRoZSBvYnNvbGV0ZSBsaWJjcnlwdCBsaWJyYXJ5XSksCisrICAgICAgICAgICAgICBbYnVpbGRfb2Jzb2xldGVfY3J5cHQ9JGVuYWJsZXZhbF0sCisrICAgICAgICAgICAgICBbYnVpbGRfb2Jzb2xldGVfY3J5cHQ9bm9dKQorK0FDX1NVQlNUKGJ1aWxkX29ic29sZXRlX2NyeXB0KQorKworKworIEFDX0FSR19FTkFCTEUoW3N5c3RlbXRhcF0sCisgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXN5c3RlbXRhcF0sCisgCSAgICAgICBbZW5hYmxlIHN5c3RlbXRhcCBzdGF0aWMgcHJvYmUgcG9pbnRzIEA8OkBkZWZhdWx0PW5vQDo+QF0pXSwKK2RpZmYgLS1naXQgYS9jb25mb3JtL01ha2VmaWxlIGIvY29uZm9ybS9NYWtlZmlsZQoraW5kZXggODY0ZmRlY2EyMS4uNWVmNDc0ZmIyNCAxMDA2NDQKKy0tLSBhL2NvbmZvcm0vTWFrZWZpbGUKKysrKyBiL2NvbmZvcm0vTWFrZWZpbGUKK0BAIC0xOTMsMjIgKzE5MywyOCBAQCBsaW5rbmFtZXNwYWNlLWxpYnMtdGhyID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtaXNvYykgXAorIAkJCSAkKGNvbW1vbi1vYmpwZngpcnQvbGlicnQuYSAkKHN0YXRpYy10aHJlYWQtbGlicmFyeSkKKyBsaW5rbmFtZXNwYWNlLWxpYnMtcG9zaXggPSAkKGxpbmtuYW1lc3BhY2UtbGlicy10aHIpIFwKKyAJCQkgICAkKGNvbW1vbi1vYmpwZngpZGxmY24vbGliZGwuYQorLWxpbmtuYW1lc3BhY2UtbGlicy14c2kgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1wb3NpeCkgXAorLQkJCSAkKGNvbW1vbi1vYmpwZngpY3J5cHQvbGliY3J5cHQuYQorK2xpbmtuYW1lc3BhY2UtbGlicy14c2kgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1wb3NpeCkKKyBsaW5rbmFtZXNwYWNlLWxpYnMtSVNPID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtaXNvYykKKyBsaW5rbmFtZXNwYWNlLWxpYnMtSVNPOTkgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1pc29jKQorIGxpbmtuYW1lc3BhY2UtbGlicy1JU08xMSA9ICQobGlua25hbWVzcGFjZS1saWJzLWlzb2MpCistbGlua25hbWVzcGFjZS1saWJzLVhQRzQgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1pc29jKSBcCistCQkJICAkKGNvbW1vbi1vYmpwZngpY3J5cHQvbGliY3J5cHQuYQorK2xpbmtuYW1lc3BhY2UtbGlicy1YUEc0ID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtaXNvYykKKyBsaW5rbmFtZXNwYWNlLWxpYnMtWFBHNDIgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1YUEc0KQorIGxpbmtuYW1lc3BhY2UtbGlicy1QT1NJWCA9ICQobGlua25hbWVzcGFjZS1saWJzLXRocikKKyBsaW5rbmFtZXNwYWNlLWxpYnMtVU5JWDk4ID0gJChsaW5rbmFtZXNwYWNlLWxpYnMteHNpKQorIGxpbmtuYW1lc3BhY2UtbGlicy1YT1BFTjJLID0gJChsaW5rbmFtZXNwYWNlLWxpYnMteHNpKQorIGxpbmtuYW1lc3BhY2UtbGlicy1QT1NJWDIwMDggPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1wb3NpeCkKKyBsaW5rbmFtZXNwYWNlLWxpYnMtWE9QRU4ySzggPSAkKGxpbmtuYW1lc3BhY2UtbGlicy14c2kpCisrCisraWZlcSAoJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkseWVzKQorK2xpbmtuYW1lc3BhY2UtbGlicy14c2kgKz0gJChjb21tb24tb2JqcGZ4KWNyeXB0L2xpYmNyeXB0LmEKKytsaW5rbmFtZXNwYWNlLWxpYnMtWFBHNCArPSAkKGNvbW1vbi1vYmpwZngpY3J5cHQvbGliY3J5cHQuYQorK2VuZGlmCisrCisgbGlua25hbWVzcGFjZS1saWJzID0gJChmb3JlYWNoIHN0ZCwkKGNvbmZvcm10ZXN0LXN0YW5kYXJkcyksXAorIAkJCQkgICAkKGxpbmtuYW1lc3BhY2UtbGlicy0kKHN0ZCkpKQorIAorKworKworICQobGlua25hbWVzcGFjZS1zeW1saXN0LXN0ZGxpYnMtdGVzdHMpOiAkKG9ianBmeClzeW1saXN0LXN0ZGxpYnMtJTogXAorIAkJCQkJJChsaW5rbmFtZXNwYWNlLWxpYnMpCisgCUxDX0FMTD1DICQoUkVBREVMRikgLVcgLXMgJChsaW5rbmFtZXNwYWNlLWxpYnMtJCopID4gJEA7IFwKK2RpZmYgLS1naXQgYS9jb25mb3JtL2RhdGEvc3RkbGliLmgtZGF0YSBiL2NvbmZvcm0vZGF0YS9zdGRsaWIuaC1kYXRhCitpbmRleCBkOGZjY2NjMmZiLi42OTEzODI4MTk2IDEwMDY0NAorLS0tIGEvY29uZm9ybS9kYXRhL3N0ZGxpYi5oLWRhdGEKKysrKyBiL2NvbmZvcm0vZGF0YS9zdGRsaWIuaC1kYXRhCitAQCAtMTQ5LDkgKzE0OSw2IEBAIGZ1bmN0aW9uIHt1bnNpZ25lZCBzaG9ydCBpbnQqfSBzZWVkNDggKHVuc2lnbmVkIHNob3J0IGludFszXSkKKyAjaWYgIWRlZmluZWQgSVNPICYmICFkZWZpbmVkIElTTzk5ICYmICFkZWZpbmVkIElTTzExICYmICFkZWZpbmVkIFBPU0lYICYmICFkZWZpbmVkIFhQRzQgJiYgIWRlZmluZWQgWFBHNDIgJiYgIWRlZmluZWQgVU5JWDk4CisgZnVuY3Rpb24gaW50IHNldGVudiAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBpbnQpCisgI2VuZGlmCistI2lmICFkZWZpbmVkIElTTyAmJiAhZGVmaW5lZCBJU085OSAmJiAhZGVmaW5lZCBJU08xMSAmJiAhZGVmaW5lZCBQT1NJWCAmJiAhZGVmaW5lZCBQT1NJWDIwMDgKKy1mdW5jdGlvbiB2b2lkIHNldGtleSAoY29uc3QgY2hhciopCistI2VuZGlmCisgI2lmICFkZWZpbmVkIElTTyAmJiAhZGVmaW5lZCBJU085OSAmJiAhZGVmaW5lZCBJU08xMSAmJiAhZGVmaW5lZCBYUEc0ICYmICFkZWZpbmVkIFBPU0lYICYmICFkZWZpbmVkIFBPU0lYMjAwOAorIGZ1bmN0aW9uIHtjaGFyKn0gc2V0c3RhdGUgKGNoYXIqKQorICNlbmRpZgorZGlmZiAtLWdpdCBhL2NvbmZvcm0vZGF0YS91bmlzdGQuaC1kYXRhIGIvY29uZm9ybS9kYXRhL3VuaXN0ZC5oLWRhdGEKK2luZGV4IGRkZjRmMjUxMzIuLmFhMDcwNTI4ZTggMTAwNjQ0CistLS0gYS9jb25mb3JtL2RhdGEvdW5pc3RkLmgtZGF0YQorKysrIGIvY29uZm9ybS9kYXRhL3VuaXN0ZC5oLWRhdGEKK0BAIC00MzcsOSArNDM3LDYgQEAgZnVuY3Rpb24gaW50IGNocm9vdCAoY29uc3QgY2hhciopCisgZnVuY3Rpb24gaW50IGNob3duIChjb25zdCBjaGFyKiwgdWlkX3QsIGdpZF90KQorIGZ1bmN0aW9uIGludCBjbG9zZSAoaW50KQorIGZ1bmN0aW9uIHNpemVfdCBjb25mc3RyIChpbnQsIGNoYXIqLCBzaXplX3QpCistI2lmICFkZWZpbmVkIFBPU0lYICYmICFkZWZpbmVkIFBPU0lYMjAwOAorLWZ1bmN0aW9uIHtjaGFyKn0gY3J5cHQgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKKy0jZW5kaWYKKyAjaWYgZGVmaW5lZCBYUEc0IHx8IGRlZmluZWQgWFBHNDIgfHwgZGVmaW5lZCBVTklYOTgKKyBmdW5jdGlvbiB7Y2hhcip9IGN0ZXJtaWQgKGNoYXIqKQorIGZ1bmN0aW9uIHtjaGFyKn0gY3VzZXJpZCAoY2hhciopCitAQCAtNDQ5LDkgKzQ0Niw2IEBAIGFsbG93IGN1c2VyaWQKKyAjZW5kaWYKKyBmdW5jdGlvbiBpbnQgZHVwIChpbnQpCisgZnVuY3Rpb24gaW50IGR1cDIgKGludCwgaW50KQorLSNpZiAhZGVmaW5lZCBQT1NJWCAmJiAhZGVmaW5lZCBQT1NJWDIwMDgKKy1mdW5jdGlvbiB2b2lkIGVuY3J5cHQgKGNoYXJbNjRdLCBpbnQpCistI2VuZGlmCisgZnVuY3Rpb24gaW50IGV4ZWNsIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIC4uLikKKyBmdW5jdGlvbiBpbnQgZXhlY2xlIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIC4uLikKKyBmdW5jdGlvbiBpbnQgZXhlY2xwIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIC4uLikKK2RpZmYgLS1naXQgYS9jcnlwdC9NYWtlZmlsZSBiL2NyeXB0L01ha2VmaWxlCitpbmRleCAzMDM4MDBkZjczLi4wMjRlYzJjNmFiIDEwMDY0NAorLS0tIGEvY3J5cHQvTWFrZWZpbGUKKysrKyBiL2NyeXB0L01ha2VmaWxlCitAQCAtMjIsNiArMjIsOCBAQCBzdWJkaXIJOj0gY3J5cHQKKyAKKyBpbmNsdWRlIC4uL01ha2Vjb25maWcKKyAKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisrCisgaGVhZGVycyA6PSBjcnlwdC5oCisgCisgZXh0cmEtbGlicyA6PSBsaWJjcnlwdAorQEAgLTUyLDkgKzU0LDExIEBAIHRlc3RzICs9IG1kNXRlc3Qgc2hhMjU2dGVzdCBzaGE1MTJ0ZXN0CisgIyBtYWNoaW5lIG92ZXIgYSBtaW51dGUuCisgeHRlc3RzID0gbWQ1dGVzdC1naWFudAorIGVuZGlmCisrZW5kaWYKKyAKKyBpbmNsdWRlIC4uL1J1bGVzCisgCisraWZlcSAoJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkseWVzKQorIGlmbmVxICgkKG5zcy1jcnlwdCkseWVzKQorIG1kNS1yb3V0aW5lcyA6PSBtZDUgJChmaWx0ZXIgbWQ1JSwkKGxpYmNyeXB0LXN5c2RlcF9yb3V0aW5lcykpCisgc2hhMjU2LXJvdXRpbmVzIDo9IHNoYTI1NiAkKGZpbHRlciBzaGEyNTYlLCQobGliY3J5cHQtc3lzZGVwX3JvdXRpbmVzKSkKK0BAIC03MSwzICs3NSw0IEBAICQoYWRkcHJlZml4ICQob2JqcGZ4KSwkKHRlc3RzKSk6ICQob2JqcGZ4KWxpYmNyeXB0LnNvCisgZWxzZQorICQoYWRkcHJlZml4ICQob2JqcGZ4KSwkKHRlc3RzKSk6ICQob2JqcGZ4KWxpYmNyeXB0LmEKKyBlbmRpZgorK2VuZGlmCitkaWZmIC0tZ2l0IGEvZWxmL01ha2VmaWxlIGIvZWxmL01ha2VmaWxlCitpbmRleCAyYTQzMmQ4YmVlLi4zNjZmN2I4MGVjIDEwMDY0NAorLS0tIGEvZWxmL01ha2VmaWxlCisrKysgYi9lbGYvTWFrZWZpbGUKK0BAIC0zODUsMTUgKzM4NSwxOSBAQCAkKG9ianBmeCl0c3QtX2RsX2FkZHJfaW5zaWRlX29iamVjdDogJChvYmpwZngpZGwtYWRkci1vYmoub3MKKyBDRkxBR1MtdHN0LV9kbF9hZGRyX2luc2lkZV9vYmplY3QuYyArPSAkKFBJRS1jY2ZsYWcpCisgZW5kaWYKKyAKKy0jIEJ5IGRlZmF1bHQgdHN0LWxpbmthbGwtc3RhdGljIHNob3VsZCB0cnkgdG8gdXNlIGNyeXB0IHJvdXRpbmVzIHRvIHRlc3QKKy0jIHN0YXRpYyBsaWJjcnlwdCB1c2UuCistQ0ZMQUdTLXRzdC1saW5rYWxsLXN0YXRpYy5jICs9IC1EVVNFX0NSWVBUPTEKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisrIyBJZiB0aGUgbGliY3J5cHQgbGlicmFyeSBpcyBiZWluZyBidWlsdCwgdHN0LWxpbmthbGwtc3RhdGljIHNob3VsZAorKyMgdHJ5IHRvIHVzZSBjcnlwdCByb3V0aW5lcyB0byB0ZXN0IHN0YXRpYyBsaWJjcnlwdCB1c2UuCisrQ0ZMQUdTLXRzdC1saW5rYWxsLXN0YXRpYy5jID0gLURVU0VfQ1JZUFQ9MQorICMgSG93ZXZlciwgaWYgd2UgYXJlIHVzaW5nIE5TUyBjcnlwdG8gYW5kIHdlIGRvbid0IGhhdmUgYSBzdGF0aWMKKyAjIGxpYnJhcnksIHRoZW4gd2UgZXhjbHVkZSB0aGUgdXNlIG9mIGNyeXB0IGZ1bmN0aW9ucyBpbiB0aGUgdGVzdC4KKyAjIFdlIHNpbWlsYXJseSBleGNsdWRlIGxpYmNyeXB0LmEgZnJvbSB0aGUgc3RhdGljIGxpbmsgKHNlZSBiZWxvdykuCisgaWZlcSAoeWVzbm8sJChuc3MtY3J5cHQpJChzdGF0aWMtbnNzLWNyeXB0KSkKKyBDRkxBR1MtdHN0LWxpbmthbGwtc3RhdGljLmMgKz0gLVVVU0VfQ1JZUFQgLURVU0VfQ1JZUFQ9MAorIGVuZGlmCisrZWxzZQorK0NGTEFHUy10c3QtbGlua2FsbC1zdGF0aWMuYyA9IC1EVVNFX0NSWVBUPTAKKytlbmRpZgorIAorIGluY2x1ZGUgLi4vUnVsZXMKKyAKK0BAIC0xMTEzLDggKzExMTcsMTAgQEAgbG9jYWxwbHQtYnVpbHQtZHNvIDo9ICQoYWRkcHJlZml4ICQoY29tbW9uLW9ianBmeCksXAorIAkJCQkgIHJ0L2xpYnJ0LnNvIFwKKyAJCQkJICBkbGZjbi9saWJkbC5zbyBcCisgCQkJCSAgcmVzb2x2L2xpYnJlc29sdi5zbyBcCistCQkJCSAgY3J5cHQvbGliY3J5cHQuc28gXAorIAkJICAgICAgICkKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisrbG9jYWxwbHQtYnVpbHQtZHNvICs9ICQoYWRkcHJlZml4ICQoY29tbW9uLW9ianBmeCksIGNyeXB0L2xpYmNyeXB0LnNvKQorK2VuZGlmCisgaWZlcSAoJChidWlsZC1tYXRodmVjKSx5ZXMpCisgbG9jYWxwbHQtYnVpbHQtZHNvICs9ICQoYWRkcHJlZml4ICQoY29tbW9uLW9ianBmeCksIG1hdGh2ZWMvbGlibXZlYy5zbykKKyBlbmRpZgorQEAgLTEzOTUsNiArMTQwMSw3IEBAICQob2JqcGZ4KXRzdC1saW5rYWxsLXN0YXRpYzogXAorICAgJChjb21tb24tb2JqcGZ4KXJlc29sdi9saWJhbmwuYSBcCisgICAkKHN0YXRpYy10aHJlYWQtbGlicmFyeSkKKyAKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisgIyBJZiB3ZSBhcmUgdXNpbmcgTlNTIGNyeXB0byBhbmQgd2UgaGF2ZSB0aGUgYWJpbGl0eSB0byBsaW5rIHN0YXRpY2FsbHkKKyAjIHRoZW4gd2UgaW5jbHVkZSBsaWJjcnlwdC5hLCBvdGhlcndpc2Ugd2UgbGVhdmUgb3V0IGxpYmNyeXB0LmEgYW5kCisgIyBsaW5rIGFzIG11Y2ggYXMgd2UgY2FuIGludG8gdGhlIHRzdC1saW5rYWxsLXN0YXRpYyB0ZXN0LiAgVGhpcyBhc3N1bWVzCitAQCAtMTQxMCw2ICsxNDE3LDcgQEAgaWZlcSAobm8sJChuc3MtY3J5cHQpKQorICQob2JqcGZ4KXRzdC1saW5rYWxsLXN0YXRpYzogXAorICAgJChjb21tb24tb2JqcGZ4KWNyeXB0L2xpYmNyeXB0LmEKKyBlbmRpZgorK2VuZGlmCisgCisgIyBUaGUgYXBwbGljYXRpb24gZGVwZW5kcyBvbiB0aGUgRFNPLCBhbmQgdGhlIERTTyBsb2FkcyB0aGUgcGx1Z2luLgorICMgVGhlIHBsdWdpbiBhbHNvIGRlcGVuZHMgb24gdGhlIERTTy4gVGhpcyBjcmVhdGVzIHRoZSBjaXJjdWxhcgorZGlmZiAtLWdpdCBhL2VsZi90c3QtbGlua2FsbC1zdGF0aWMuYyBiL2VsZi90c3QtbGlua2FsbC1zdGF0aWMuYworaW5kZXggZThkZjM4Zjc0ZS4uMGZmYWU3YzcyMyAxMDA2NDQKKy0tLSBhL2VsZi90c3QtbGlua2FsbC1zdGF0aWMuYworKysrIGIvZWxmL3RzdC1saW5rYWxsLXN0YXRpYy5jCitAQCAtMTgsNyArMTgsOSBAQAorIAorICNpbmNsdWRlIDxtYXRoLmg+CisgI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysjaWYgVVNFX0NSWVBUCisgI2luY2x1ZGUgPGNyeXB0Lmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHJlc29sdi5oPgorICNpbmNsdWRlIDxkbGZjbi5oPgorICNpbmNsdWRlIDx1dG1wLmg+CitkaWZmIC0tZ2l0IGEvcG9zaXgvdW5pc3RkLmggYi9wb3NpeC91bmlzdGQuaAoraW5kZXggNGQxNDlmOTk0NS4uZTc1Y2U0ZDRlYyAxMDA2NDQKKy0tLSBhL3Bvc2l4L3VuaXN0ZC5oCisrKysgYi9wb3NpeC91bmlzdGQuaAorQEAgLTEwNyw5ICsxMDcsNiBAQCBfX0JFR0lOX0RFQ0xTCisgLyogVGhlIFgvT3BlbiBVbml4IGV4dGVuc2lvbnMgYXJlIGF2YWlsYWJsZS4gICovCisgI2RlZmluZSBfWE9QRU5fVU5JWAkxCisgCistLyogRW5jcnlwdGlvbiBpcyBwcmVzZW50LiAgKi8KKy0jZGVmaW5lCV9YT1BFTl9DUllQVAkxCistCisgLyogVGhlIGVuaGFuY2VkIGludGVybmF0aW9uYWxpemF0aW9uIGNhcGFiaWxpdGllcyBhY2NvcmRpbmcgdG8gWFBHNC4yCisgICAgYXJlIHByZXNlbnQuICAqLworICNkZWZpbmUJX1hPUEVOX0VOSF9JMThOCTEKK0BAIC0xMTE4LDIwICsxMTE1LDcgQEAgc3NpemVfdCBjb3B5X2ZpbGVfcmFuZ2UgKGludCBfX2luZmQsIF9fb2ZmNjRfdCAqX19waW5vZmYsCisgZXh0ZXJuIGludCBmZGF0YXN5bmMgKGludCBfX2ZpbGRlcyk7CisgI2VuZGlmIC8qIFVzZSBQT1NJWDE5OTMwOSAqLworIAorLQorLS8qIFhQRzQuMiBzcGVjaWZpZXMgdGhhdCBwcm90b3R5cGVzIGZvciB0aGUgZW5jcnlwdGlvbiBmdW5jdGlvbnMgbXVzdAorLSAgIGJlIGRlZmluZWQgaGVyZS4gICovCisgI2lmZGVmCV9fVVNFX1hPUEVOCistLyogRW5jcnlwdCBhdCBtb3N0IDggY2hhcmFjdGVycyBmcm9tIEtFWSB1c2luZyBzYWx0IHRvIHBlcnR1cmIgREVTLiAgKi8KKy1leHRlcm4gY2hhciAqY3J5cHQgKGNvbnN0IGNoYXIgKl9fa2V5LCBjb25zdCBjaGFyICpfX3NhbHQpCistICAgICBfX1RIUk9XIF9fbm9ubnVsbCAoKDEsIDIpKTsKKy0KKy0vKiBFbmNyeXB0IGRhdGEgaW4gQkxPQ0sgaW4gcGxhY2UgaWYgRURGTEFHIGlzIHplcm87IG90aGVyd2lzZSBkZWNyeXB0CistICAgYmxvY2sgaW4gcGxhY2UuICAqLworLWV4dGVybiB2b2lkIGVuY3J5cHQgKGNoYXIgKl9fZ2xpYmNfYmxvY2ssIGludCBfX2VkZmxhZykKKy0gICAgIF9fVEhST1cgX19ub25udWxsICgoMSkpOworLQorLQorIC8qIFN3YWIgcGFpcnMgYnl0ZXMgaW4gdGhlIGZpcnN0IE4gYnl0ZXMgb2YgdGhlIGFyZWEgcG9pbnRlZCB0byBieQorICAgIEZST00gYW5kIGNvcHkgdGhlIHJlc3VsdCB0byBUTy4gIFRoZSB2YWx1ZSBvZiBUTyBtdXN0IG5vdCBiZSBpbiB0aGUKKyAgICByYW5nZSBbRlJPTSAtIE4gKyAxLCBGUk9NIC0gMV0uICBJZiBOIGlzIG9kZCB0aGUgZmlyc3QgYnl0ZSBpbiBGUk9NCitkaWZmIC0tZ2l0IGEvc3RkbGliL3N0ZGxpYi5oIGIvc3RkbGliL3N0ZGxpYi5oCitpbmRleCA2YjFlYWQzMWUwLi44ZTIzZTkzNTU3IDEwMDY0NAorLS0tIGEvc3RkbGliL3N0ZGxpYi5oCisrKysgYi9zdGRsaWIvc3RkbGliLmgKK0BAIC05NTgsMTIgKzk1OCw2IEBAIGV4dGVybiBpbnQgZ2V0c3Vib3B0IChjaGFyICoqX19yZXN0cmljdCBfX29wdGlvbnAsCisgI2VuZGlmCisgCisgCistI2lmZGVmIF9fVVNFX1hPUEVOCistLyogU2V0dXAgREVTIHRhYmxlcyBhY2NvcmRpbmcgS0VZLiAgKi8KKy1leHRlcm4gdm9pZCBzZXRrZXkgKGNvbnN0IGNoYXIgKl9fa2V5KSBfX1RIUk9XIF9fbm9ubnVsbCAoKDEpKTsKKy0jZW5kaWYKKy0KKy0KKyAvKiBYL09wZW4gcHNldWRvIHRlcm1pbmFsIGhhbmRsaW5nLiAgKi8KKyAKKyAjaWZkZWYgX19VU0VfWE9QRU4yS1hTSQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvc3BhcmMvc3BhcmMzMi9zcGFyY3Y5L211bHRpYXJjaC9NYWtlZmlsZSBiL3N5c2RlcHMvc3BhcmMvc3BhcmMzMi9zcGFyY3Y5L211bHRpYXJjaC9NYWtlZmlsZQoraW5kZXggYTZkMDhmM2EwMC4uZDhiODI5N2ZiMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvc3BhcmMvc3BhcmMzMi9zcGFyY3Y5L211bHRpYXJjaC9NYWtlZmlsZQorKysrIGIvc3lzZGVwcy9zcGFyYy9zcGFyYzMyL3NwYXJjdjkvbXVsdGlhcmNoL01ha2VmaWxlCitAQCAtMSw2ICsxLDggQEAKKyBpZmVxICgkKHN1YmRpciksY3J5cHQpCisraWZlcSAoJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkseWVzKQorIGxpYmNyeXB0LXN5c2RlcF9yb3V0aW5lcyArPSBtZDUtY3JvcCBzaGEyNTYtY3JvcCBzaGE1MTItY3JvcAorIGVuZGlmCisrZW5kaWYKKyAKKyBpZmVxICgkKHN1YmRpciksbG9jYWxlKQorIGxvY2FsZWRlZi1hdXggKz0gbWQ1LWNyb3AKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3NwYXJjL3NwYXJjNjQvbXVsdGlhcmNoL01ha2VmaWxlIGIvc3lzZGVwcy9zcGFyYy9zcGFyYzY0L211bHRpYXJjaC9NYWtlZmlsZQoraW5kZXggZWFmNzU4ZTdhYS4uMDE5OGY5ODg2ZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvc3BhcmMvc3BhcmM2NC9tdWx0aWFyY2gvTWFrZWZpbGUKKysrKyBiL3N5c2RlcHMvc3BhcmMvc3BhcmM2NC9tdWx0aWFyY2gvTWFrZWZpbGUKK0BAIC0xLDYgKzEsOCBAQAorIGlmZXEgKCQoc3ViZGlyKSxjcnlwdCkKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisgbGliY3J5cHQtc3lzZGVwX3JvdXRpbmVzICs9IG1kNS1jcm9wIHNoYTI1Ni1jcm9wIHNoYTUxMi1jcm9wCisgZW5kaWYKKytlbmRpZgorIAorIGlmZXEgKCQoc3ViZGlyKSxsb2NhbGUpCisgbG9jYWxlZGVmLWF1eCArPSBtZDUtY3JvcAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9NYWtlZmlsZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9NYWtlZmlsZQoraW5kZXggNGFkYzM1ZGUwNC4uNmNhYjRmM2EzMSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9NYWtlZmlsZQorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL01ha2VmaWxlCitAQCAtMTksOCArMTksMTAgQEAgZW5kaWYKKyAjIEFkZCBhIHN5c2NhbGwgZnVuY3Rpb24gdG8gZWFjaCBsaWJyYXJ5IHRoYXQgbmVlZHMgb25lLgorIAorIGlmZXEgKCQoc3ViZGlyKSxjcnlwdCkKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisgbGliY3J5cHQtc3lzZGVwX3JvdXRpbmVzICs9IGxpYmMtZG8tc3lzY2FsbAorIGVuZGlmCisrZW5kaWYKKyAKKyBpZmVxICgkKHN1YmRpcikscnQpCisgbGlicnQtc3lzZGVwX3JvdXRpbmVzICs9IGxpYmMtZG8tc3lzY2FsbAorLS0gCisyLjE2LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTA1MGE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNTY3MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gYTc2Mzc2ZGY3YzA3ZTU3N2E5NTE1YzNmYWE1ZGJkNTBiZGE1ZGEwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+Ci1EYXRlOiBGcmksIDIwIE9jdCAyMDE3IDE4OjQxOjE0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIENWRS0yMDE3LTE1NjcwOiBnbG9iOiBGaXggb25lLWJ5dGUgb3ZlcmZsb3cgW0JaICMyMjMyMF0KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYzM2OWQ2NmU1NDI2YTMwZTQ3MjViMTAwZDVjZDI4ZTM3Mjc1NGY5MCkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xNTY3MAotQWZmZWN0czogZ2xpYmMgPCAyLjI3Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gQ2hhbmdlTG9nICAgIHwgNiArKysrKysKLSBORVdTICAgICAgICAgfCA1ICsrKysrCi0gcG9zaXgvZ2xvYi5jIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9ORVdTCi0rKysgZ2l0L05FV1MKLUBAIC0yMDYsNiArMjA2LDExIEBAIFNlY3VyaXR5IHJlbGF0ZWQgY2hhbmdlczoKLSAqIEEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSBpbiBjbG50dWRwX2NhbGwgaW4gdGhlIFN1biBSUEMgc3lzdGVtIGhhcyBiZWVuCi0gICBmaXhlZCAoQ1ZFLTIwMTctMTIxMzMpLgotIAotKyAgQ1ZFLTIwMTctMTU2NzA6IFRoZSBnbG9iIGZ1bmN0aW9uLCB3aGVuIGludm9rZWQgd2l0aCBHTE9CX1RJTERFLAotKyAgc3VmZmVyZWQgZnJvbSBhIG9uZS1ieXRlIG92ZXJmbG93IGR1cmluZyB+IG9wZXJhdG9yIHByb2Nlc3NpbmcgKGVpdGhlcgotKyAgb24gdGhlIHN0YWNrIG9yIHRoZSBoZWFwLCBkZXBlbmRpbmcgb24gdGhlIGxlbmd0aCBvZiB0aGUgdXNlciBuYW1lKS4KLSsgIFJlcG9ydGVkIGJ5IFRpbSBSw7xoc2VuLgotKwotIFRoZSBmb2xsb3dpbmcgYnVncyBhcmUgcmVzb2x2ZWQgd2l0aCB0aGlzIHJlbGVhc2U6Ci0gCi0gICBbOTg0XSBuZXR3b3JrOiBSZXNwb25kIHRvIGNoYW5nZWQgcmVzb2x2LmNvbmYgaW4gZ2V0aG9zdGJ5bmFtZQotSW5kZXg6IGdpdC9wb3NpeC9nbG9iLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9wb3NpeC9nbG9iLmMKLSsrKyBnaXQvcG9zaXgvZ2xvYi5jCi1AQCAtODQzLDcgKzg0Myw3IEBAIGdsb2IgKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGludCBmbGFncywgaW4KLSAJCSAgKnAgPSAnXDAnOwotIAkJfQotIAkgICAgICBlbHNlCi0tCQkqKChjaGFyICopIG1lbXBjcHkgKG5ld3AsIGRpcm5hbWUgKyAxLCBlbmRfbmFtZSAtIGRpcm5hbWUpKQotKwkJKigoY2hhciAqKSBtZW1wY3B5IChuZXdwLCBkaXJuYW1lICsgMSwgZW5kX25hbWUgLSBkaXJuYW1lIC0gMSkpCi0gCQkgID0gJ1wwJzsKLSAJICAgICAgdXNlcl9uYW1lID0gbmV3cDsKLSAJICAgIH0KLUluZGV4OiBnaXQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvQ2hhbmdlTG9nCi0rKysgZ2l0L0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxNy0xMC0yMCAgUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KLSsKLSsgICAgICAgW0JaICMyMjMyMF0KLSsgICAgICAgQ1ZFLTIwMTctMTU2NzAKLSsgICAgICAgKiBwb3NpeC9nbG9iLmMgKF9fZ2xvYik6IEZpeCBvbmUtYnl0ZSBvdmVyZmxvdy4KLSsKLSAyMDE3LTA4LTAyICBTaWRkaGVzaCBQb3lhcmVrYXIgIDxzaWRkaGVzaEBzb3VyY2V3YXJlLm9yZz4KLSAKLSAJKiB2ZXJzaW9uLmggKFJFTEVBU0UpOiBTZXQgdG8gInN0YWJsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMWU2MzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotcmVxdWlyZSBnbGliYy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWU5YTU1OGUyNDNiMzZkMzIwOWYzODBkZWIzOTRiMjEzIFwKLSAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAotICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotREVQRU5EUyArPSAiZ3BlcmYtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotU1JDUkVWID89ICJkMzAwMDQxYzUzM2EzZDgzN2M5ZjM3YTA5OWJjYzk1NDY2ODYwZTk4IgotCi1TUkNCUkFOQ0ggPz0gInJlbGVhc2UvJHtQVn0vbWFzdGVyIgotCi1HTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikiCi0KLVNSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAotICAgICAgICAgICBmaWxlOi8vZXRjL2xkLnNvLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIFwKLSAgICAgICAgICAgXAotICAgICAgICAgICAke05BVElWRVNES0ZJWEVTfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctZ2xpYmMtcmVzZXQtZGwtbG9hZC13cml0ZS1sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1CdWctNDU3OC1hZGQtbGQuc28tbG9jay13aGlsZS1mb3JrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjktYml0cy1zaWdpbmZvLWNvbnN0cy5oLWVudW0tZGVmaW5pdGlvbi1mb3ItVFJBUF9IV0JLUC5wYXRjaCBcCi0iCi0KLU5BVElWRVNES0ZJWEVTID89ICIiCi1OQVRJVkVTREtGSVhFU19jbGFzcy1uYXRpdmVzZGsgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZWxvY2F0ZS1sb2NhbGVzLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtXT1JLRElSfS9idWlsZC0ke1RBUkdFVF9TWVN9IgotCi1QQUNLQUdFU19EWU5BTUlDID0gIiIKLQotIyB0aGUgLWlzeXN0ZW0gaW4gYml0YmFrZS5jb25mIHNjcmV3cyB1cCBnbGliYyBkb19zdGFnZQotQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCi1UQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IgotCi1HTElCQ19CUk9LRU5fTE9DQUxFUyA9ICIiCi0jCi0jIFdlIHdpbGwgc2tpcCBwYXJzaW5nIGdsaWJjIHdoZW4gdGFyZ2V0IHN5c3RlbSBDIGxpYnJhcnkgc2VsZWN0aW9uIGlzIG5vdCBnbGliYwotIyB0aGlzIGhlbHBzIGluIGVhc2luZyBvdXQgcGFyc2luZyBmb3Igbm9uLWdsaWJjIHN5c3RlbSBsaWJyYXJpZXMKLSMKLUNPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1rZXJuZWw9JHtPTERFU1RfS0VSTkVMfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyAtLWRpc2FibGUtcHJvZmlsZSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlYnVnIC0td2l0aG91dC1nZCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtY2xvY2FsZT1nbnUgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFkZC1vbnM9bGliaWRuIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9ic29sZXRlLXJwYyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtb2Jzb2xldGUtbnNsIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS10dW5hYmxlcyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtYmluZC1ub3cgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrLXByb3RlY3Rvcj1zdHJvbmcgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrZ3VhcmQtcmFuZG9taXphdGlvbiBcCi0gICAgICAgICAgICAgICAgJHtHTElCQ19FWFRSQV9PRUNPTkZ9IgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9saWJjX2ZwdV9zZXR0aW5nKGJiLCBkKX0iCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGliYy1pbmV0LWFubCcsICctLWVuYWJsZS1uc2NkJywgJy0tZGlzYWJsZS1uc2NkJywgZCl9IgotCi0KLWRvX3BhdGNoX2FwcGVuZCgpIHsKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2ZpeF9yZWFkbGliX2MnLCBkKQotfQotCi1kb19maXhfcmVhZGxpYl9jICgpIHsKLQlzZWQgLWkgLWUgJ3MjT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIyR7RUdMSUJDX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTfSMnICR7U30vZWxmL3JlYWRsaWIuYwotfQotCi1kb19jb25maWd1cmUgKCkgewotIyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIHRoZSBhdXRvY29uZi9hdXRvbWFrZS9hY2xvY2FsL2F1dG9oZWFkZXIKLSMgY2FsbHMgZm9yIG5vdwotIyBkb24ndCBwYXNzIENQUEZMQUdTIGludG8gY29uZmlndXJlLCBzaW5jZSBpdCB1cHNldHMgdGhlIGtlcm5lbC1oZWFkZXJzCi0jIHZlcnNpb24gY2hlY2sgYW5kIGRvZXNuJ3QgcmVhbGx5IGhlbHAgd2l0aCBhbnl0aGluZwotICAgICAgICAoY2QgJHtTfSAmJiBnbnUtY29uZmlnaXplKSB8fCBkaWUgImZhaWx1cmUgaW4gcnVubmluZyBnbnUtY29uZmlnaXplIgotICAgICAgICBmaW5kICR7U30gLW5hbWUgImNvbmZpZ3VyZSIgfCB4YXJncyB0b3VjaAotICAgICAgICAjICJwbHVyYWwuYyIgbWF5IG9yIG1heSBub3QgZ2V0IHJlZ2VuZXJhdGVkIGZyb20gInBsdXJhbC55IiBzbyB3ZQotICAgICAgICAjIHRvdWNoICJwbHVyYWwueSIgdG8gbWFrZSBzdXJlIGl0IGRvZXMuIChUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCi0gICAgICAgICMgZm9yIGdsaWJjIHZlcnNpb24gMi4yNispCi0gICAgICAgIGZpbmQgJHtTfS9pbnRsIC1uYW1lICJwbHVyYWwueSIgfCB4YXJncyB0b3VjaAotICAgICAgICBDUFBGTEFHUz0iIiBvZV9ydW5jb25mCi19Ci0KLXJwY3N2YyA9ICJib290cGFyYW1fcHJvdC54IG5sbV9wcm90LnggcnN0YXQueCBcCi0JICB5cHBhc3N3ZC54IGtsbV9wcm90LnggcmV4Lnggc21faW50ZXIueCBtb3VudC54IFwKLQkgIHJ1c2Vycy54IHNwcmF5LnggbmZzX3Byb3QueCBycXVvdGEueCBrZXlfcHJvdC54IgotCi1kb19jb21waWxlICgpIHsKLQkjIC1XbCwtcnBhdGgtbGluayA8c3RhZ2luZz4vbGliIGluIExERkxBR1MgY2FuIGNhdXNlIGJyZWFrYWdlIGlmIGFub3RoZXIgZ2xpYmMgaXMgaW4gc3RhZ2luZwotCXVuc2V0IExERkxBR1MKLQliYXNlX2RvX2NvbXBpbGUKLQkoCi0JCWNkICR7U30vc3VucnBjL3JwY3N2YwotCQlmb3IgciBpbiAke3JwY3N2Y307IGRvCi0JCQloPWBlY2hvICRyfHNlZCAtZSdzLFwueCQsLmgsJ2AKLQkJCXJtIC1mICRoCi0JCQkke0J9L3N1bnJwYy9jcm9zcy1ycGNnZW4gLWggJHIgLW8gJGggfHwgYmJ3YXJuICIke1BOfTogdW5hYmxlIHRvIGdlbmVyYXRlIGhlYWRlciBmb3IgJHIiCi0JCWRvbmUKLQkpCi0JZWNobyAiQWRqdXN0IGxkZCBzY3JpcHQiCi0JaWYgWyAtbiAiJHtSVExETElTVH0iIF0KLQl0aGVuCi0JCXByZXZydGxkPWBjYXQgJHtCfS9lbGYvbGRkIHwgZ3JlcCAiXlJUTERMSVNUPSIgfCBzZWQgJ3MjXlJUTERMSVNUPSJcP1woW14iXSpcKSJcPyQjXDEjJ2AKLQkJaWYgWyAiJHtwcmV2cnRsZH0iICE9ICIke1JUTERMSVNUfSIgXQotCQl0aGVuCi0JCQlzZWQgLWkgJHtCfS9lbGYvbGRkIC1lICJzI15SVExETElTVD0uKlwkI1JUTERMSVNUPVwiJHtwcmV2cnRsZH0gJHtSVExETElTVH1cIiMiCi0JCWZpCi0JZmkKLQotfQotCi1yZXF1aXJlIGdsaWJjLXBhY2thZ2UuaW5jCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODE0Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjcuYmIKQEAgLTAsMCArMSwxNDYgQEAKK3JlcXVpcmUgZ2xpYmMuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTO21kNT1lOWE1NThlMjQzYjM2ZDMyMDlmMzgwZGViMzk0YjIxMyBcCisgICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgZmlsZTovL3Bvc2l4L3J4c3BlbmNlci9DT1BZUklHSFQ7bWQ1PWRjNTQ4NWJiMzk0YTEzYjIzMzJlYzFjNzg1ZjVkODNhIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgKz0gImdwZXJmLW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKK1NSQ1JFViA/PSAiZGYzZmY0ZTQ5ZDRlZTNjYmJkYWViMGIxY2I1ZGMyMzQ0YzA4YmU5OCIKKworU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKKworR0xJQkNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2dsaWJjLmdpdCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKFwuKD8hOTApXGQrKSopIgorCitTUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKKyAgICAgICAgICAgZmlsZTovL2V0Yy9sZC5zby5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXN1cHBvcnRlZC5tayBcCisgICAgICAgICAgIFwKKyAgICAgICAgICAgJHtOQVRJVkVTREtGSVhFU30gXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjUtbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LXJlc2V0LWRsX2xvYWRfd3JpdGVfbG9jay1hZnRlci1mb3JraW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjctQWNxdWlyZS1sZC5zby1sb2NrLWJlZm9yZS1zd2l0Y2hpbmctdG8tbWFsbG9jX2F0Zm9yay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOS1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpeC1Xc3RyaW5nb3AtdHJ1bmNhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzAtcGx1cmFsX2Nfbm9fcHJlcHJvY2Vzc29yX2xpbmVzLnBhdGNoIFwKKyIKKworTkFUSVZFU0RLRklYRVMgPz0gIiIKK05BVElWRVNES0ZJWEVTX2NsYXNzLW5hdGl2ZXNkayA9ICJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLWxvY2FsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMS1uYXRpdmVzZGstZGVwcmVjYXRlLWxpYmNyeXB0LnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9idWlsZC0ke1RBUkdFVF9TWVN9IgorCitQQUNLQUdFU19EWU5BTUlDID0gIiIKKworIyB0aGUgLWlzeXN0ZW0gaW4gYml0YmFrZS5jb25mIHNjcmV3cyB1cCBnbGliYyBkb19zdGFnZQorQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCitUQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IgorCitHTElCQ19CUk9LRU5fTE9DQUxFUyA9ICIiCisjCisjIFdlIHdpbGwgc2tpcCBwYXJzaW5nIGdsaWJjIHdoZW4gdGFyZ2V0IHN5c3RlbSBDIGxpYnJhcnkgc2VsZWN0aW9uIGlzIG5vdCBnbGliYworIyB0aGlzIGhlbHBzIGluIGVhc2luZyBvdXQgcGFyc2luZyBmb3Igbm9uLWdsaWJjIHN5c3RlbSBsaWJyYXJpZXMKKyMKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCisKK0dMSUJDUElFID8/PSAiIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUta2VybmVsPSR7T0xERVNUX0tFUk5FTH0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdnMgLS1kaXNhYmxlLXByb2ZpbGUgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyAtLXdpdGhvdXQtZ2QgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNsb2NhbGU9Z251IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1hZGQtb25zPWxpYmlkbiBcCisgICAgICAgICAgICAgICAgLS13aXRoLWhlYWRlcnM9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1zZWxpbnV4IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1vYnNvbGV0ZS1ycGMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9ic29sZXRlLW5zbCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdHVuYWJsZXMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWJpbmQtbm93IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFjay1wcm90ZWN0b3I9c3Ryb25nIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFja2d1YXJkLXJhbmRvbWl6YXRpb24gXAorICAgICAgICAgICAgICAgICR7R0xJQkNQSUV9IFwKKyAgICAgICAgICAgICAgICAke0dMSUJDX0VYVFJBX09FQ09ORn0iCisKK0VYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpfSIKK0VYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsaWJjLWluZXQtYW5sJywgJy0tZW5hYmxlLW5zY2QnLCAnLS1kaXNhYmxlLW5zY2QnLCBkKX0iCisKKworZG9fcGF0Y2hfYXBwZW5kKCkgeworICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fZml4X3JlYWRsaWJfYycsIGQpCit9CisKK2RvX2ZpeF9yZWFkbGliX2MgKCkgeworCXNlZCAtaSAtZSAncyNPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMjJHtFR0xJQkNfS05PV05fSU5URVJQUkVURVJfTkFNRVN9IycgJHtTfS9lbGYvcmVhZGxpYi5jCit9CisKK2RvX2NvbmZpZ3VyZSAoKSB7CisjIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgdGhlIGF1dG9jb25mL2F1dG9tYWtlL2FjbG9jYWwvYXV0b2hlYWRlcgorIyBjYWxscyBmb3Igbm93CisjIGRvbid0IHBhc3MgQ1BQRkxBR1MgaW50byBjb25maWd1cmUsIHNpbmNlIGl0IHVwc2V0cyB0aGUga2VybmVsLWhlYWRlcnMKKyMgdmVyc2lvbiBjaGVjayBhbmQgZG9lc24ndCByZWFsbHkgaGVscCB3aXRoIGFueXRoaW5nCisgICAgICAgIChjZCAke1N9ICYmIGdudS1jb25maWdpemUpIHx8IGRpZSAiZmFpbHVyZSBpbiBydW5uaW5nIGdudS1jb25maWdpemUiCisgICAgICAgIGZpbmQgJHtTfSAtbmFtZSAiY29uZmlndXJlIiB8IHhhcmdzIHRvdWNoCisgICAgICAgIENQUEZMQUdTPSIiIG9lX3J1bmNvbmYKK30KKworcnBjc3ZjID0gImJvb3RwYXJhbV9wcm90LnggbmxtX3Byb3QueCByc3RhdC54IFwKKwkgIHlwcGFzc3dkLngga2xtX3Byb3QueCByZXgueCBzbV9pbnRlci54IG1vdW50LnggXAorCSAgcnVzZXJzLnggc3ByYXkueCBuZnNfcHJvdC54IHJxdW90YS54IGtleV9wcm90LngiCisKK2RvX2NvbXBpbGUgKCkgeworCSMgLVdsLC1ycGF0aC1saW5rIDxzdGFnaW5nPi9saWIgaW4gTERGTEFHUyBjYW4gY2F1c2UgYnJlYWthZ2UgaWYgYW5vdGhlciBnbGliYyBpcyBpbiBzdGFnaW5nCisJdW5zZXQgTERGTEFHUworCWJhc2VfZG9fY29tcGlsZQorCSgKKwkJY2QgJHtTfS9zdW5ycGMvcnBjc3ZjCisJCWZvciByIGluICR7cnBjc3ZjfTsgZG8KKwkJCWg9YGVjaG8gJHJ8c2VkIC1lJ3MsXC54JCwuaCwnYAorCQkJcm0gLWYgJGgKKwkJCSR7Qn0vc3VucnBjL2Nyb3NzLXJwY2dlbiAtaCAkciAtbyAkaCB8fCBiYndhcm4gIiR7UE59OiB1bmFibGUgdG8gZ2VuZXJhdGUgaGVhZGVyIGZvciAkciIKKwkJZG9uZQorCSkKKwllY2hvICJBZGp1c3QgbGRkIHNjcmlwdCIKKwlpZiBbIC1uICIke1JUTERMSVNUfSIgXQorCXRoZW4KKwkJcHJldnJ0bGQ9YGNhdCAke0J9L2VsZi9sZGQgfCBncmVwICJeUlRMRExJU1Q9IiB8IHNlZCAncyNeUlRMRExJU1Q9Ilw/XChbXiJdKlwpIlw/JCNcMSMnYAorCQlpZiBbICIke3ByZXZydGxkfSIgIT0gIiR7UlRMRExJU1R9IiBdCisJCXRoZW4KKwkJCXNlZCAtaSAke0J9L2VsZi9sZGQgLWUgInMjXlJUTERMSVNUPS4qXCQjUlRMRExJU1Q9XCIke3ByZXZydGxkfSAke1JUTERMSVNUfVwiIyIKKwkJZmkKKwlmaQorCit9CisKK3JlcXVpcmUgZ2xpYmMtcGFja2FnZS5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvc2l0ZV9jb25maWcvaGVhZGVycyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9zaXRlX2NvbmZpZy9oZWFkZXJzCmluZGV4IDYwOWFiNTMuLjY5ZmVkZWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9zaXRlX2NvbmZpZy9oZWFkZXJzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9zaXRlX2NvbmZpZy9oZWFkZXJzCkBAIC05LDcgKzksNiBAQAogYXNtL3R5cGVzLmgKIGFzc2VydC5oCiBieXRlc3dhcC5oCi1jcnlwdC5oCiBjdHlwZS5oCiBkaXJlbnQuaAogZGxmY24uaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMTYuYmIKaW5kZXggNTY1NDUyOC4uZTlmM2EyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4xNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vaWZ1cGRvd25fMC44LjE2LmJiCkBAIC02LDcgKzYsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgogCi1TUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9naXQvY29sbGFiLW1haW50L2lmdXBkb3duLmdpdCBcCitTUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL2lmdXBkb3duLmdpdDtwcm90b2NvbD1odHRwcyBcCiAJICAgZmlsZTovL2RlZm4yLWMtbWFuLWRvbi10LXJlbHktb24tZHBrZy1hcmNoaXRlY3R1cmUtdG8tc2V0LWEucGF0Y2ggXAogCSAgIGZpbGU6Ly9pbmV0LTYtLmRlZm4tZml4LWludmVydGVkLWNoZWNrcy1mb3ItbG9vcGJhY2sucGF0Y2ggXAogCSAgIGZpbGU6Ly85OV9uZXR3b3JrIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgppbmRleCBiZDQ0MWFlLi5kYjJmNThkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCkBAIC0yMiw4ICsyMiw4IEBACiAKIGluaGVyaXQgY29yZS1pbWFnZSBtb2R1bGUtYmFzZSBzZXR1cHRvb2xzMwogCi1TUkNSRVYgPz0gImE5NTg4NjQ2ZmNlYzE3ZTUzMTk5ZTFlYTdlN2I4ZGNjZjE0MDgxN2UiCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k7YnJhbmNoPXJvY2tvIFwKK1NSQ1JFViA/PSAiMTRkNjJkNWMxNGUzNTUyZjJhZWFiZGJkODBkMTUwNGJiMmM2ZWQ2NCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTticmFuY2g9c3VtbyBcCiAgICAgICAgICAgIGZpbGU6Ly9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm14IFwKICAgICAgICAgICAgZmlsZTovL1lvY3RvX0J1aWxkX0FwcGxpYW5jZS52bXhmIFwKICAgICAgICAgICAgZmlsZTovL1JFQURNRV9WaXJ0dWFsQm94X0d1ZXN0X0FkZGl0aW9ucy50eHQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiCmluZGV4IGM0NDZlODcuLjZkZTg2MGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmIKQEAgLTMsNyArMywxNSBAQAogdGhlIE1pbmltYWwgUkFNLWJhc2VkIEluaXRpYWwgUm9vdCBGaWxlc3lzdGVtIChpbml0cmFtZnMpLCB3aGljaCBmaW5kcyB0aGUgXAogZmlyc3QgJ2luaXQnIHByb2dyYW0gbW9yZSBlZmZpY2llbnRseS4iCiAKLVBBQ0tBR0VfSU5TVEFMTCA9ICJpbml0cmFtZnMtbGl2ZS1ib290IGluaXRyYW1mcy1saXZlLWluc3RhbGwgaW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmkgJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30gdWRldiBiYXNlLXBhc3N3ZCAke1JPT1RGU19CT09UU1RSQVBfSU5TVEFMTH0iCitJTklUUkFNRlNfU0NSSVBUUyA/PSAiXAorICAgICAgICAgICAgICAgICAgICAgIGluaXRyYW1mcy1mcmFtZXdvcmstYmFzZSBcCisgICAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1zZXR1cC1saXZlIFwKKyAgICAgICAgICAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLXVkZXYgXAorICAgICAgICAgICAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaSBcCisgICAgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VfSU5TVEFMTCA9ICIke0lOSVRSQU1GU19TQ1JJUFRTfSAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSB1ZGV2IGJhc2UtcGFzc3dkICR7Uk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMfSIKIAogIyBEbyBub3QgcG9sbHV0ZSB0aGUgaW5pdHJkIGltYWdlIHdpdGggcm9vdGZzIGZlYXR1cmVzCiBJTUFHRV9GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMuYmIKaW5kZXggMTY5OTVlNi4uNTFkMDhhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLXRpbnktaW5pdHJhbWZzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS10aW55LWluaXRyYW1mcy5iYgpAQCAtNSw3ICs1LDcgQEAKIGFjdHVhbGx5IGdlbmVyYXRlIGFuIGltYWdlIGJ1dCByYXRoZXIgZ2VuZXJhdGVzIGJvb3QgYW5kIHJvb3RmcyBhcnRpZmFjdHMgXAogdGhhdCBjYW4gc3Vic2VxdWVudGx5IGJlIHBpY2tlZCB1cCBieSBleHRlcm5hbCBpbWFnZSBnZW5lcmF0aW9uIHRvb2xzIHN1Y2ggYXMgd2ljLiIKIAotUEFDS0FHRV9JTlNUQUxMID0gImluaXRyYW1mcy1saXZlLWJvb3QgcGFja2FnZWdyb3VwLWNvcmUtYm9vdCBkcm9wYmVhciAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSB1ZGV2IGJhc2UtcGFzc3dkICR7Uk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMfSIKK1BBQ0tBR0VfSU5TVEFMTCA9ICJpbml0cmFtZnMtbGl2ZS1ib290LXRpbnkgcGFja2FnZWdyb3VwLWNvcmUtYm9vdCBkcm9wYmVhciAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSAke1ZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlcn0gYmFzZS1wYXNzd2QgJHtST09URlNfQk9PVFNUUkFQX0lOU1RBTEx9IgogCiAjIERvIG5vdCBwb2xsdXRlIHRoZSBpbml0cmQgaW1hZ2Ugd2l0aCByb290ZnMgZmVhdHVyZXMKIElNQUdFX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwtZWZpLnNoCmluZGV4IDcwNjQxOGYuLjgyYjBhYTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLWVmaS5zaApAQCAtOCw4ICs4LDE5IEBACiAKIFBBVEg9L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW4KIAotIyBXZSBuZWVkIDIwIE1iIGZvciB0aGUgYm9vdCBwYXJ0aXRpb24KLWJvb3Rfc2l6ZT0yMAorIyBmaWd1cmUgb3V0IGhvdyBiaWcgb2YgYSBib290IHBhcnRpdGlvbiB3ZSBuZWVkCitib290X3NpemU9JChkdSAtbXMgL3J1bi9tZWRpYS8kMS8gfCBhd2sgJ3twcmludCAkMX0nKQorIyByZW1vdmUgcm9vdGZzLmltZyAoJDIpIGZyb20gdGhlIHNpemUgaWYgaXQgZXhpc3RzLCBhcyBpdHMgbm90IGluc3RhbGxlZCB0byAvYm9vdAoraWYgWyAtZSAvcnVuL21lZGlhLyQxLyQyIF07IHRoZW4KKyAgICBib290X3NpemU9JCgoIGJvb3Rfc2l6ZSAtICQoIGR1IC1tcyAvcnVuL21lZGlhLyQxLyQyIHwgYXdrICd7cHJpbnQgJDF9JykgKSkKK2ZpCisjIHJlbW92ZSBpbml0cmQgZnJvbSBzaXplIHNpbmNlIGl0cyBub3QgY3VycmVudGx5IGluc3RhbGxlZAoraWYgWyAtZSAvcnVuL21lZGlhLyQxL2luaXRyZCBdOyB0aGVuCisgICAgYm9vdF9zaXplPSQoKCBib290X3NpemUgLSAkKCBkdSAtbXMgL3J1bi9tZWRpYS8kMS9pbml0cmQgfCBhd2sgJ3twcmludCAkMX0nKSApKQorZmkKKyMgYWRkIDEwTSB0byBwcm92aWRlIHNvbWUgZXh0cmEgc3BhY2UgZm9yIHVzZXJzIGFuZCBhY2NvdW50CisjIGZvciByb3VuZGluZyBpbiB0aGUgYWJvdmUgc3VidHJhY3Rpb25zCitib290X3NpemU9JCgoIGJvb3Rfc2l6ZSArIDEwICkpCiAKICMgNSUgZm9yIHN3YXAKIHN3YXBfcmF0aW89NQpAQCAtMTc5LDcgKzE5MCw3IEBACiBwYXJ0ZWQgJHtkZXZpY2V9IHNldCAxIGJvb3Qgb24KIAogZWNobyAiQ3JlYXRpbmcgcm9vdGZzIHBhcnRpdGlvbiBvbiAkcm9vdGZzIgotcGFydGVkICR7ZGV2aWNlfSBta3BhcnQgcm9vdCBleHQzICRyb290ZnNfc3RhcnQgJHJvb3Rmc19lbmQKK3BhcnRlZCAke2RldmljZX0gbWtwYXJ0IHJvb3QgZXh0NCAkcm9vdGZzX3N0YXJ0ICRyb290ZnNfZW5kCiAKIGVjaG8gIkNyZWF0aW5nIHN3YXAgcGFydGl0aW9uIG9uICRzd2FwIgogcGFydGVkICR7ZGV2aWNlfSBta3BhcnQgc3dhcCBsaW51eC1zd2FwICRzd2FwX3N0YXJ0IDEwMCUKQEAgLTE5Niw4ICsyMDcsOCBAQAogZWNobyAiRm9ybWF0dGluZyAkYm9vdGZzIHRvIHZmYXQuLi4iCiBta2ZzLnZmYXQgJGJvb3RmcwogCi1lY2hvICJGb3JtYXR0aW5nICRyb290ZnMgdG8gZXh0My4uLiIKLW1rZnMuZXh0MyAkcm9vdGZzCitlY2hvICJGb3JtYXR0aW5nICRyb290ZnMgdG8gZXh0NC4uLiIKK21rZnMuZXh0NCAkcm9vdGZzCiAKIGVjaG8gIkZvcm1hdHRpbmcgc3dhcCBwYXJ0aXRpb24uLi4oJHN3YXApIgogbWtzd2FwICRzd2FwCkBAIC0yNDQsMTAgKzI1NSw5IEBACiAgICAgc2VkIC1pICIvaW5pdHJkIC9kIiAkR1JVQkNGRwogICAgICMgRGVsZXRlIGFueSBMQUJFTD0gc3RyaW5ncwogICAgIHNlZCAtaSAicy8gTEFCRUw9W14gXSovIC8iICRHUlVCQ0ZHCi0gICAgIyBEZWxldGUgYW55IHJvb3Q9IHN0cmluZ3MKLSAgICBzZWQgLWkgInMvIHJvb3Q9W14gXSovIC9nIiAkR1JVQkNGRwotICAgICMgQWRkIHRoZSByb290PSBhbmQgb3RoZXIgc3RhbmRhcmQgYm9vdCBvcHRpb25zCi0gICAgc2VkIC1pICJzQGxpbnV4IC92bWxpbnV6ICpAbGludXggL3ZtbGludXogcm9vdD1QQVJUVVVJRD0kcm9vdF9wYXJ0X3V1aWQgcncgJHJvb3R3YWl0IHF1aWV0IEAiICRHUlVCQ0ZHCisgICAgIyBSZXBsYWNlIHJvb3Q9IGFuZCBhZGQgYWRkaXRpb25hbCBzdGFuZGFyZCBib290IG9wdGlvbnMKKyAgICAjIFdlIHVzZSByb290IGFzIGEgc2VudGluZWwgdmFsdWUsIGFzIHZtbGludXogaXMgbm8gbG9uZ2VyIGd1YXJhbnRlZWQKKyAgICBzZWQgLWkgInMvIHJvb3Q9W14gXSovIHJvb3Q9UEFSVFVVSUQ9JHJvb3RfcGFydF91dWlkIHJ3ICRyb290d2FpdCBxdWlldCAvZyIgJEdSVUJDRkcKIGZpCiAKIGlmIFsgLWQgL3J1bi9tZWRpYS8kMS9sb2FkZXIgXTsgdGhlbgpAQCAtMjY5LDcgKzI3OSwxMyBAQAogCiB1bW91bnQgL3RndF9yb290CiAKLWNwIC9ydW4vbWVkaWEvJDEvdm1saW51eiAvYm9vdAorIyBDb3B5IGtlcm5lbCBhcnRpZmFjdHMuIFRvIGFkZCBtb3JlIGFydGlmYWN0cyBqdXN0IGFkZCB0byB0eXBlcworIyBGb3Igbm93IGp1c3Qgc3VwcG9ydCBrZXJuZWwgdHlwZXMgYWxyZWFkeSBiZWluZyB1c2VkIGJ5IHNvbWV0aGluZyBpbiBPRS1jb3JlCitmb3IgdHlwZXMgaW4gYnpJbWFnZSB6SW1hZ2Ugdm1saW51eCB2bWxpbnV6IGZpdEltYWdlOyBkbworICAgIGZvciBrZXJuZWwgaW4gYGZpbmQgL3J1bi9tZWRpYS8kMS8gLW5hbWUgJHR5cGVzKmA7IGRvCisgICAgICAgIGNwICRrZXJuZWwgL2Jvb3QKKyAgICBkb25lCitkb25lCiAKIHVtb3VudCAvYm9vdAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwuc2gKaW5kZXggZGFkZTA1OS4uMjhlOGYwOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC5zaApAQCAtNyw4ICs3LDE5IEBACiAKIFBBVEg9L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW4KIAotIyBXZSBuZWVkIDIwIE1iIGZvciB0aGUgYm9vdCBwYXJ0aXRpb24KLWJvb3Rfc2l6ZT0yMAorIyBmaWd1cmUgb3V0IGhvdyBiaWcgb2YgYSBib290IHBhcnRpdGlvbiB3ZSBuZWVkCitib290X3NpemU9JChkdSAtbXMgL3J1bi9tZWRpYS8kMS8gfCBhd2sgJ3twcmludCAkMX0nKQorIyByZW1vdmUgcm9vdGZzLmltZyAoJDIpIGZyb20gdGhlIHNpemUgaWYgaXQgZXhpc3RzLCBhcyBpdHMgbm90IGluc3RhbGxlZCB0byAvYm9vdAoraWYgWyAtZSAvcnVuL21lZGlhLyQxLyQyIF07IHRoZW4KKyAgICBib290X3NpemU9JCgoIGJvb3Rfc2l6ZSAtICQoIGR1IC1tcyAvcnVuL21lZGlhLyQxLyQyIHwgYXdrICd7cHJpbnQgJDF9JykgKSkKK2ZpCisjIHJlbW92ZSBpbml0cmQgZnJvbSBzaXplIHNpbmNlIGl0cyBub3QgY3VycmVudGx5IGluc3RhbGxlZAoraWYgWyAtZSAvcnVuL21lZGlhLyQxL2luaXRyZCBdOyB0aGVuCisgICAgYm9vdF9zaXplPSQoKCBib290X3NpemUgLSAkKCBkdSAtbXMgL3J1bi9tZWRpYS8kMS9pbml0cmQgfCBhd2sgJ3twcmludCAkMX0nKSApKQorZmkKKyMgYWRkIDEwTSB0byBwcm92aWRlIHNvbWUgZXh0cmEgc3BhY2UgZm9yIHVzZXJzIGFuZCBhY2NvdW50CisjIGZvciByb3VuZGluZyBpbiB0aGUgYWJvdmUgc3VidHJhY3Rpb25zCitib290X3NpemU9JCgoIGJvb3Rfc2l6ZSArIDEwICkpCiAKICMgNSUgZm9yIHRoZSBzd2FwCiBzd2FwX3JhdGlvPTUKQEAgLTIwMyw3ICsyMTQsNyBAQAogCiBlY2hvICJDcmVhdGluZyByb290ZnMgcGFydGl0aW9uIG9uICRyb290ZnMiCiBbICRncnViX3ZlcnNpb24gLWVxIDAgXSAmJiBwbmFtZT0ncHJpbWFyeScgfHwgcG5hbWU9J3Jvb3QnCi1wYXJ0ZWQgJHtkZXZpY2V9IG1rcGFydCAkcG5hbWUgZXh0MyAkcm9vdGZzX3N0YXJ0ICRyb290ZnNfZW5kCitwYXJ0ZWQgJHtkZXZpY2V9IG1rcGFydCAkcG5hbWUgZXh0NCAkcm9vdGZzX3N0YXJ0ICRyb290ZnNfZW5kCiAKIGVjaG8gIkNyZWF0aW5nIHN3YXAgcGFydGl0aW9uIG9uICRzd2FwIgogWyAkZ3J1Yl92ZXJzaW9uIC1lcSAwIF0gJiYgcG5hbWU9J3ByaW1hcnknIHx8IHBuYW1lPSdzd2FwJwpAQCAtMjIxLDggKzIzMiw4IEBACiBlY2hvICJGb3JtYXR0aW5nICRib290ZnMgdG8gZXh0My4uLiIKIG1rZnMuZXh0MyAkYm9vdGZzCiAKLWVjaG8gIkZvcm1hdHRpbmcgJHJvb3RmcyB0byBleHQzLi4uIgotbWtmcy5leHQzICRyb290ZnMKK2VjaG8gIkZvcm1hdHRpbmcgJHJvb3RmcyB0byBleHQ0Li4uIgorbWtmcy5leHQ0ICRyb290ZnMKIAogZWNobyAiRm9ybWF0dGluZyBzd2FwIHBhcnRpdGlvbi4uLigkc3dhcCkiCiBta3N3YXAgJHN3YXAKQEAgLTI1Niw5ICsyNjcsMzQgQEAKIHVtb3VudCAvdGd0X3Jvb3QKIHVtb3VudCAvc3JjX3Jvb3QKIAorZWNobyAiTG9va2luZyBmb3Iga2VybmVscyB0byB1c2UgYXMgYm9vdCB0YXJnZXQuLiIKKyMgRmluZCBrZXJuZWwgdG8gYm9vdCB0bworIyBHaXZlIHVzZXIgb3B0aW9ucyBpZiBtdWx0aXBsZSBhcmUgZm91bmQKK2tlcm5lbHM9IiQoZmluZCAvcnVuL21lZGlhLyQxLyAtdHlwZSBmICBcCisgICAgICAgICAgIC1uYW1lIGJ6SW1hZ2UqIC1vIC1uYW1lIHpJbWFnZSogXAorICAgICAgICAgICAtbyAtbmFtZSB2bWxpbnV4KiAtbyAtbmFtZSB2bWxpbnV6KiBcCisgICAgICAgICAgIC1vIC1uYW1lIGZpdEltYWdlKiBcCisgICAgICAgICAgIHwgc2VkIHM6LiovOjopIgoraWYgWyAtbiAiJChlY2hvICRrZXJuZWxzKSIgXTsgdGhlbgorICAgICMgb25seSBvbmUga2VybmVsIGVudHJ5IGlmIG5vIHNwYWNlCisgICAgaWYgWyAteiAiJChlY2hvICRrZXJuZWxzIHwgZ3JlcCAiICIpIiBdOyB0aGVuCisgICAgICAgIGtlcm5lbD0ka2VybmVscworICAgICAgICBlY2hvICIka2VybmVsIHdpbGwgYmUgdXNlZCBhcyB0aGUgYm9vdCB0YXJnZXQiCisgICAgZWxzZQorICAgICAgICBlY2hvICJXaGljaCBrZXJuZWwgZG8gd2Ugd2FudCB0byBib290IGJ5IGRlZmF1bHQ/IFRoZSBmb2xsb3dpbmcga2VybmVscyB3ZXJlIGZvdW5kOiIKKyAgICAgICAgZWNobyAka2VybmVscworICAgICAgICByZWFkIGFuc3dlcgorICAgICAgICBrZXJuZWw9JGFuc3dlcgorICAgIGZpCitlbHNlCisgICAgZWNobyAiTm8ga2VybmVscyBmb3VuZCwgZXhpdGluZy4uLiIKKyAgICBleGl0IDEKK2ZpCisKICMgSGFuZGxpbmcgb2YgdGhlIHRhcmdldCBib290IHBhcnRpdGlvbgogbW91bnQgJGJvb3RmcyAvYm9vdAogZWNobyAiUHJlcGFyaW5nIGJvb3QgcGFydGl0aW9uLi4uIgorCiBpZiBbIC1mIC9ldGMvZ3J1Yi5kLzAwX2hlYWRlciAtYSAkZ3J1Yl92ZXJzaW9uIC1uZSAwIF0gOyB0aGVuCiAgICAgZWNobyAiUHJlcGFyaW5nIGN1c3RvbSBncnViMiBtZW51Li4uIgogICAgIHJvb3RfcGFydF91dWlkPSQoYmxraWQgLW8gdmFsdWUgLXMgUEFSVFVVSUQgJHtyb290ZnN9KQpAQCAtMjY4LDcgKzMwNCw3IEBACiAgICAgY2F0ID4kR1JVQkNGRyA8PF9FT0YKIG1lbnVlbnRyeSAiTGludXgiIHsKICAgICBzZWFyY2ggLS1uby1mbG9wcHkgLS1mcy11dWlkICRib290X3V1aWQgLS1zZXQgcm9vdAotICAgIGxpbnV4IC92bWxpbnV6IHJvb3Q9UEFSVFVVSUQ9JHJvb3RfcGFydF91dWlkICRyb290d2FpdCBydyAkNSAkMyAkNCBxdWlldAorICAgIGxpbnV4IC8ka2VybmVsIHJvb3Q9UEFSVFVVSUQ9JHJvb3RfcGFydF91dWlkICRyb290d2FpdCBydyAkNSAkMyAkNCBxdWlldAogfQogX0VPRgogICAgIGNobW9kIDA0NDQgJEdSVUJDRkcKQEAgLTI4MiwxMCArMzE4LDE2IEBACiAgICAgZWNobyAidGltZW91dCAzMCIgPj4gL2Jvb3QvZ3J1Yi9tZW51LmxzdAogICAgIGVjaG8gInRpdGxlIExpdmUgQm9vdC9JbnN0YWxsLUltYWdlIiA+PiAvYm9vdC9ncnViL21lbnUubHN0CiAgICAgZWNobyAicm9vdCAgKGhkMCwwKSIgPj4gL2Jvb3QvZ3J1Yi9tZW51LmxzdAotICAgIGVjaG8gImtlcm5lbCAvdm1saW51eiByb290PSRyb290ZnMgcncgJDMgJDQgcXVpZXQiID4+IC9ib290L2dydWIvbWVudS5sc3QKKyAgICBlY2hvICJrZXJuZWwgLyRrZXJuZWwgcm9vdD0kcm9vdGZzIHJ3ICQzICQ0IHF1aWV0IiA+PiAvYm9vdC9ncnViL21lbnUubHN0CiBmaQogCi1jcCAvcnVuL21lZGlhLyQxL3ZtbGludXogL2Jvb3QvCisjIENvcHkga2VybmVsIGFydGlmYWN0cy4gVG8gYWRkIG1vcmUgYXJ0aWZhY3RzIGp1c3QgYWRkIHRvIHR5cGVzCisjIEZvciBub3cganVzdCBzdXBwb3J0IGtlcm5lbCB0eXBlcyBhbHJlYWR5IGJlaW5nIHVzZWQgYnkgc29tZXRoaW5nIGluIE9FLWNvcmUKK2ZvciB0eXBlcyBpbiBiekltYWdlIHpJbWFnZSB2bWxpbnV4IHZtbGludXogZml0SW1hZ2U7IGRvCisgICAgZm9yIGtlcm5lbCBpbiBgZmluZCAvcnVuL21lZGlhLyQxLyAtbmFtZSAkdHlwZXMqYDsgZG8KKyAgICAgICAgY3AgJGtlcm5lbCAvYm9vdAorICAgIGRvbmUKK2RvbmUKIAogdW1vdW50IC9ib290CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvZXhlYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvZXhlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGUyNDMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9leGVjCkBAIC0wLDAgKzEsMjkgQEAKKyMhL2Jpbi9zaAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisjIExpY2Vuc2VkIG9uIE1JVAorCitFWEVDX0RJUj0vZXhlYy5kICAjIHBsYWNlIHRvIGxvb2sgZm9yIG1vZHVsZXMKKworZXhlY19lbmFibGVkKCkgeworCXJldHVybiAwCit9CisKK2V4ZWNfcnVuKCkgeworCWlmIFsgISAtZCAkRVhFQ19ESVIgXTsgdGhlbgorCQltc2cgIk5vIGNvbnRlbnRzIHRvIGV4ZWMgaW4gJEVYRUNfRElSLiBTdGFydGluZyBzaGVsbCAuLi4iCisJCXNoCisJZmkKKworCSMgTG9hZCBhbmQgcnVuIG1vZHVsZXMKKwlmb3IgbSBpbiAkRVhFQ19ESVIvKjsgZG8KKwkJIyBTa2lwIGJhY2t1cCBmaWxlcworCQlpZiBbICJgZWNobyAkbSB8IHNlZCAtZSAncy9cfiQvLydgIiAhPSAiJG0iIF07IHRoZW4KKwkJCWNvbnRpbnVlCisJCWZpCisKKwkJZGVidWcgIlN0YXJ0aW5nICRtIgorCisJCSMgcHJvY2VzcyBtb2R1bGUKKwkJLi8kbQorCWRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvcm9vdGZzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9yb290ZnMKaW5kZXggMTQ3NjhmMS4uNzZmYTg0ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9yb290ZnMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9yb290ZnMKQEAgLTMxLDYgKzMxLDExIEBACiAJCQkJYm9vdHBhcmFtX3Jvb3Q9Ii9kZXYvZGlzay9ieS1wYXJ0dXVpZC8kcm9vdF91dWlkIgogCQkJZmkKIAorCQkJaWYgWyAiYGVjaG8gJHtib290cGFyYW1fcm9vdH0gfCBjdXQgLWMxLTZgIiA9ICJMQUJFTD0iIF07IHRoZW4KKwkJCQlyb290X2xhYmVsPWBlY2hvICRib290cGFyYW1fcm9vdCB8IGN1dCAtYzctYAorCQkJCWJvb3RwYXJhbV9yb290PSIvZGV2L2Rpc2svYnktbGFiZWwvJHJvb3RfbGFiZWwiCisJCQlmaQorCiAJCQlpZiBbIC1lICIkYm9vdHBhcmFtX3Jvb3QiIF07IHRoZW4KIAkJCQlmbGFncz0iIgogCQkJCWlmIFsgLW4gIiRib290cGFyYW1fcm8iIF0gJiYgISBlY2hvICIkYm9vdHBhcmFtX3Jvb3RmbGFncyIgfCBncmVwIC13IC1xICJybyI7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmtfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29ya18xLjAuYmIKaW5kZXggMmFmYzM3ZS4uNzVkOTY1ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29ya18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29ya18xLjAuYmIKQEAgLTgsNiArOCw3IEBACiBpbmhlcml0IGFsbGFyY2gKIAogU1JDX1VSSSA9ICJmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9leGVjIFwKICAgICAgICAgICAgZmlsZTovL3Jvb3RmcyBcCiAgICAgICAgICAgIGZpbGU6Ly9maW5pc2ggXAogICAgICAgICAgICBmaWxlOi8vbWRldiBcCkBAIC0yNiw2ICsyNyw5IEBACiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcm9vdGZzICR7RH0vaW5pdC5kLzkwLXJvb3RmcwogICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2ZpbmlzaCAke0R9L2luaXQuZC85OS1maW5pc2gKIAorCSMgZXhlYworICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2V4ZWMgJHtEfS9pbml0LmQvODktZXhlYworCiAgICAgIyBtZGV2CiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbWRldiAke0R9L2luaXQuZC8wMS1tZGV2CiAKQEAgLTQ1LDYgKzQ5LDcgQEAKIH0KIAogUEFDS0FHRVMgPSAiJHtQTn0tYmFzZSBcCisgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLWV4ZWMgXAogICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1tZGV2IFwKICAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtdWRldiBcCiAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLWUyZnMgXApAQCAtNjIsNiArNjcsMTAgQEAKICMgYW5kIG1vdW50cyB0aGUgcm9vdGZzLiBUaGVuIDkwLXJvb3RmcyB3aWxsIHByb2NlZWQgaW1tZWRpYXRlbHkuCiBSUkVDT01NRU5EU18ke1BOfS1iYXNlICs9ICJpbml0cmFtZnMtbW9kdWxlLXJvb3RmcyIKIAorU1VNTUFSWV9pbml0cmFtZnMtbW9kdWxlLWV4ZWMgPSAiaW5pdHJhbWZzIHN1cHBvcnQgZm9yIGVhc3kgZXhlY3V0aW9uIG9mIGFwcGxpY2F0aW9ucyIKK1JERVBFTkRTX2luaXRyYW1mcy1tb2R1bGUtZXhlYyA9ICIke1BOfS1iYXNlIgorRklMRVNfaW5pdHJhbWZzLW1vZHVsZS1leGVjID0gIi9pbml0LmQvODktZXhlYyIKKwogU1VNTUFSWV9pbml0cmFtZnMtbW9kdWxlLW1kZXYgPSAiaW5pdHJhbWZzIHN1cHBvcnQgZm9yIG1kZXYiCiBSREVQRU5EU19pbml0cmFtZnMtbW9kdWxlLW1kZXYgPSAiJHtQTn0tYmFzZSBidXN5Ym94LW1kZXYiCiBGSUxFU19pbml0cmFtZnMtbW9kdWxlLW1kZXYgPSAiL2luaXQuZC8wMS1tZGV2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtYm9vdC10aW55XzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWJvb3QtdGlueV8xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E5YThlYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWJvb3QtdGlueV8xLjAuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJMaXZlIGltYWdlIGluaXQgc2NyaXB0IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKK0RFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCitSREVQRU5EU18ke1BOfSA9ICJidXN5Ym94LW1kZXYiCitTUkNfVVJJID0gImZpbGU6Ly9pbml0LWxpdmUuc2giCisKK1BSID0gInIxMiIKKworUyA9ICIke1dPUktESVJ9IgorCitkb19pbnN0YWxsKCkgeworICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LWxpdmUuc2ggJHtEfS9pbml0CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS9kZXYKKyAgICAgICAgbWtub2QgLW0gNjIyICR7RH0vZGV2L2NvbnNvbGUgYyA1IDEKK30KKworRklMRVNfJHtQTn0gKz0gIiAvaW5pdCAvZGV2ICIKKworIyBEdWUgdG8ga2VybmVsIGRlcGVuZGVuY3kKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIKaW5kZXggMmE3Zjg0ZC4uZjU4OGExMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmlfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpXzEuMC5iYgpAQCAtNSw3ICs1LDcgQEAKIAogUFIgPSAicjEiCiAKLVJERVBFTkRTXyR7UE59ID0gInBhcnRlZCBlMmZzcHJvZ3MtbWtlMmZzIGRvc2ZzdG9vbHMgdXRpbC1saW51eC1ibGtpZCIKK1JERVBFTkRTXyR7UE59ID0gInBhcnRlZCBlMmZzcHJvZ3MtbWtlMmZzIGRvc2ZzdG9vbHMgdXRpbC1saW51eC1ibGtpZCAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSIKIAogUyA9ICIke1dPUktESVJ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCmluZGV4IGE1NTNhMGQuLjkyMjJkNTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCkBAIC03LDcgKzcsNyBAQAogCiBTID0gIiR7V09SS0RJUn0iCiAKLVJERVBFTkRTXyR7UE59ID0gImdydWIgcGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgdXRpbC1saW51eC1ibGtpZCIKK1JERVBFTkRTXyR7UE59ID0gImdydWIgcGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgdXRpbC1saW51eC1ibGtpZCAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSIKIAogZG9faW5zdGFsbCgpIHsKICAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdC1pbnN0YWxsLnNoICR7RH0vaW5zdGFsbC5zaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpXzEuMC5iYgppbmRleCAxZTdmNzZmLi43OGE2MWNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpXzEuMC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiaW5pdHJhbWZzLWZyYW1ld29yayBtb2R1bGUgZm9yIEVGSSBpbnN0YWxsYXRpb24gb3B0aW9uIgogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKLVJERVBFTkRTXyR7UE59ID0gImluaXRyYW1mcy1mcmFtZXdvcmstYmFzZSBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyBkb3Nmc3Rvb2xzIHV0aWwtbGludXgtYmxraWQiCitSREVQRU5EU18ke1BOfSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrLWJhc2UgcGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgZG9zZnN0b29scyB1dGlsLWxpbnV4LWJsa2lkICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IgogCiBQUiA9ICJyNCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbF8xLjAuYmIKaW5kZXggMDJiNjlmMy4uMDRlOTBjZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGxfMS4wLmJiCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrIG1vZHVsZSBmb3IgaW5zdGFsbGF0aW9uIG9wdGlvbiIKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCi1SREVQRU5EU18ke1BOfSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrLWJhc2UgZ3J1YiBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyB1dGlsLWxpbnV4LWJsa2lkIgorUkRFUEVORFNfJHtQTn0gPSAiaW5pdHJhbWZzLWZyYW1ld29yay1iYXNlIGdydWIgcGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgdXRpbC1saW51eC1ibGtpZCAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSIKIAogIyBUaGUgc2FtZSByZXN0cmljdGlvbiBhcyBncnViCiBDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKnxhcm0uKnxhYXJjaDY0LiopLShsaW51eC4qfGZyZWVic2QuKiknCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvc2V0LXByb3Blci1wYXRoLW9mLXJlc291cmNlcy5wYXRjaAppbmRleCAyN2Q2ZjQyLi5hOWEzYWI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gKQEAgLTEzLDEwICsxMywxMCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KIAotZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDE5NzYzMzMuLmIzNmFlZjMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0luZGV4OiBrYmQtMi4wLjQvdGVzdHMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBrYmQtMi4wLjQub3JpZy90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGtiZC0yLjAuNC90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTEsNyArMSw3IEBACiAgQU1fQ1BQRkxBR1MgPSBcCiAgCS1JJChzcmNkaXIpLy4uL3NyYy9saWJrZXltYXAgXApAQCAtMjUsMTEgKzI1LDExIEBACiArCS1EREFUQURJUj1cIi5cIiAtREJVSUxERElSPVwiJChidWlsZGRpcilcIgogIAogIEFNX0NGTEFHUyA9ICQoQ0hFQ0tfQ0ZMQUdTKQotIExEQUREICA9ICQodG9wX2J1aWxkZGlyKS9zcmMvbGlia2V5bWFwL2xpYmtleW1hcC5sYSAkKENIRUNLX0xJQlMpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvYWx0LWlzLW1ldGEuaW4gYi90ZXN0cy9hbHQtaXMtbWV0YS5pbgotaW5kZXggZGRkNWVkOC4uNzcyZmI1MSAxMDA3NTUKLS0tLSBhL3Rlc3RzL2FsdC1pcy1tZXRhLmluCi0rKysgYi90ZXN0cy9hbHQtaXMtbWV0YS5pbgorIExEQUREICA9ICQodG9wX2J1aWxkZGlyKS9zcmMvbGlia2V5bWFwL2xpYmtleW1hcC5sYSAkKENIRUNLX0xJQlMpIEBJTlRMTElCU0AKK0luZGV4OiBrYmQtMi4wLjQvdGVzdHMvYWx0LWlzLW1ldGEuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBrYmQtMi4wLjQub3JpZy90ZXN0cy9hbHQtaXMtbWV0YS5pbgorKysrIGtiZC0yLjAuNC90ZXN0cy9hbHQtaXMtbWV0YS5pbgogQEAgLTcsOCArNyw4IEBAIGNkICIkY3dkIgogIHJjPTAKICB0ZW1wPSIkKG1rdGVtcCAiQEJVSUxERElSQC90ZW1wLlhYWFhYWFhYWCIpIgpAQCAtNDEsMTAgKzQxLDEwIEBACiAgCiAgaWYgWyAiJHJjIiAhPSAwIF07IHRoZW4KICAJcHJpbnRmICdmYWlsZWRcbicKLWRpZmYgLS1naXQgYS90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4gYi90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KLWluZGV4IDdjODU2ZTUuLjE0ZDkyYzEgMTAwNzU1Ci0tLS0gYS90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KLSsrKyBiL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgorSW5kZXg6IGtiZC0yLjAuNC90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBrYmQtMi4wLjQub3JpZy90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KKysrKyBrYmQtMi4wLjQvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCiBAQCAtNSw3ICs1LDcgQEAgY3dkPSIkKHJlYWRsaW5rIC1ldiAiJHswJS8qfSIpIgogIGNkICIkY3dkIgogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4wLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYgppbmRleCA0MjNiNDdhLi40YWYzMjU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYgpAQCAtMyw3ICszLDYgQEAKICMgZXZlcnl0aGluZyBtaW51cyBjb25zb2xlLWZvbnRzIGlzIEdQTHYyKwogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNWZjYzM2MTIxZDkzZTFmNjlkOTZhMzEzMDc4YzhiNSIKLURFUEVORFMgPSAibGliY2hlY2siCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QgcGtnY29uZmlnCiAKQEAgLTE5LDggKzE4LDEyIEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYzE2MzVhNWE4M2I2M2FjYTdmOTdhM2VhYjM5ZWJhYTYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWZkOTBhZjZiZWIyMjVhOWJiOWI5ZmI0MTRjMDkwZmJhNTNjOWE1NTc5M2UxNzJmNTA4Y2Q0MzY1MmU1OWE4OCIKIAotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IgorUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAndGVzdHMnLCcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIgorCiBQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtdmxvY2ssIC0tZGlzYWJsZS12bG9jaywgbGlicGFtLCIKK1BBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLCAtLWRpc2FibGUtdGVzdHMsIGxpYmNoZWNrIgogCiBkb19jb21waWxlX3B0ZXN0KCkgewogICAgIG9lX3J1bm1ha2UgLUMgJHtCfS90ZXN0cyBkdW1wa2V5cy1mdWxsdGFibGUgYWx0LWlzLW1ldGEKQEAgLTI5LDYgKzMyLDEzIEBACiBkb19pbnN0YWxsX3B0ZXN0KCkgewogICAgIGluc3RhbGwgLUQgJHtCfS90ZXN0cy9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQogICAgIHNlZCAtaSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIC1lICcvJTogJS5pbi8sL14kL2QnIFwKKwktZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyBcCisJLWUgJ3M6JHtERUJVR19QUkVGSVhfTUFQfTo6ZycgXAorCS1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwktZSAnczoke1N9L2NvbmZpZy9taXNzaW5nOjpnJyBcCisJLWUgJ3M6JHtXT1JLRElSfTo6ZycgXAogCS1lICcvbGlia2V5bWFwXy4qX1NPVVJDRVMgPS9kJyAtZSAnLyQoRVhFRVhUKTovLC9eJC9kJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQogCiAgICAgZmluZCAke0J9L3Rlc3RzIC1leGVjdXRhYmxlIC1leGVjIGluc3RhbGwge30gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgXDsKQEAgLTQ4LDcgKzU4LDcgQEAKIAogaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKLUFMVEVSTkFUSVZFXyR7UE59ID0gImNodnQgZGVhbGxvY3Z0IGZnY29uc29sZSBvcGVudnQiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJjaHZ0IGRlYWxsb2N2dCBmZ2NvbnNvbGUgb3BlbnZ0IHNob3drZXkiCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYmNncm91cC9saWJjZ3JvdXBfMC40MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJjZ3JvdXAvbGliY2dyb3VwXzAuNDEuYmIKaW5kZXggZTRiMTc4Mi4uN2RkYzgxZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYmNncm91cC9saWJjZ3JvdXBfMC40MS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGliY2dyb3VwL2xpYmNncm91cF8wLjQxLmJiCkBAIC05LDcgKzksNyBAQAogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAotREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2xpYmNnLyR7QlBOfS92MC40MS8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wtZGVjbHMtY29tcGF0LnBhdGNoIgpAQCAtMjAsOSArMjAsMTAgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmNnL2ZpbGVzL2xpYmNncm91cC8iCiAKIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZnRzICIKLUVYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIkxJQlM9LWxmdHMiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCUz0tbGZ0cyIKIAotRVhUUkFfT0VDT05GID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0tZW5hYmxlLXBhbS1tb2R1bGUtZGlyPSR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5IC0tZW5hYmxlLXBhbT15ZXMnLCAnLS1lbmFibGUtcGFtPW5vJywgZCl9IgorUEFDS0FHRUNPTkZJRyA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtcGFtLW1vZHVsZS1kaXI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkgLS1lbmFibGUtcGFtPXllcywtLWVuYWJsZS1wYW09bm8sbGlicGFtIgogCiBQQUNLQUdFUyA9KyAiY2dyb3Vwcy1wYW0tcGx1Z2luIgogRklMRVNfY2dyb3Vwcy1wYW0tcGx1Z2luID0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5L3BhbV9jZ3JvdXAuc28qIgpAQCAtMzMsOCArMzQsOCBAQAogCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgogCQlta2RpciAtcCAke0R9LyR7YmFzZV9saWJkaXJ9LwogCQltdiAtZiAke0R9JHtsaWJkaXJ9L2xpYmNncm91cC5zby4qICR7RH0ke2Jhc2VfbGliZGlyfS8KLQkJcmVsX2xpYl9wcmVmaXg9YGVjaG8gJHtsaWJkaXJ9IHwgc2VkICdzLFwoXi9cfFwpW14vXVteL10qLC4uLGcnYAotCQlsbiAtc2YgJHtyZWxfbGliX3ByZWZpeH0ke2Jhc2VfbGliZGlyfS9saWJjZ3JvdXAuc28uMSAke0R9JHtsaWJkaXJ9L2xpYmNncm91cC5zbworCQlybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmNncm91cC5zbworCQlsbnIgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYmNncm91cC5zby4xICR7RH0ke2xpYmRpcn0vbGliY2dyb3VwLnNvCiAJZmkKIAkjIHBhbSBtb2R1bGVzIGluICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LyBzaG91bGQgYmUgYmluYXJ5IC5zbyBmaWxlcywgbm90IHN5bWxpbmtzLgogCWlmIFsgLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5L3BhbV9jZ3JvdXAuc28uMC4wLjAgXTsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWQ2N2E2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC4wLjEuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJFeHRlbmRlZCBjcnlwdG9ncmFwaGljIGxpYnJhcnkgKGZyb20gZ2xpYmMpIgorREVTQ1JJUFRJT04gPSAiRm9ya2VkIGNvZGUgZnJvbSBnbGliYyBsaWJhcnkgdG8gZXh0cmFjdCBvbmx5IGNyeXB0byBwYXJ0LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA/PSAiZmlsZTovL0xJQ0VOU0lORzttZDU9ZDFjYzE4ZjUxMmRlZDNiZDYwMDBmMzcyOWYzMWJlMDggXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1NSQ1JFViA/PSAiMDg5NDc5YmIyNGFjZDE2ODYxMzc1N2E2ZjEyZDYzY2FhOTU0MTZiNCIKK1NSQ0JSQU5DSCA/PSAibWFzdGVyIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYmVzc2VyODIvbGlieGNyeXB0LmdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IFwKKyAgICAgICAgICAgIgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2NyeXB0IgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY3J5cHQqLnNvLiogJHtsaWJkaXJ9L2xpYmNyeXB0LSouc28gJHtsaWJkaXJ9L2xpYm93Y3J5cHQqLnNvLiogJHtsaWJkaXJ9L2xpYm93Y3J5cHQtKi5zbyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0gLXN0ZD1nbnU5OSIKK1RBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCisKK3B5dGhvbiAoKSB7CisgICAgaWYgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZXNkaycsIGQpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJSZWNpcGUgb25seSBhcHBsaWVzIGluIG5hdGl2ZXNkayBjYXNlIGZvciBub3ciKQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvMDAwMS1NYWtlLXB0ZXN0LXJ1bi10aGUtcHl0aG9uLXRlc3RzLWlmLXB5dGhvbi1pcy1lbmFibGVkLnBhdGNoCmluZGV4IGQxYWQ1NTEuLjJiOTJkYmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaApAQCAtMTUsMTIgKzE1LDEyIEBACiAgcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weSB8ICAyICstCiAgNCBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggZTE4MWVlMC4uNzk2MGU3ZCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQorSW5kZXg6IGxpYnhtbDItMi45LjcvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJ4bWwyLTIuOS43Lm9yaWcvTWFrZWZpbGUuYW0KKysrKyBsaWJ4bWwyLTIuOS43L01ha2VmaWxlLmFtCiBAQCAtMjA3LDkgKzIwNyw5IEBAIGluc3RhbGwtcHRlc3Q6Ci0gCWluc3RhbGwgJChub2luc3RfUFJPR1JBTVMpICQoREVTVERJUikpCisgCWluc3RhbGwgJChjaGVja19QUk9HUkFNUykgJChERVNURElSKSkKICAJY3AgLXIgJChzcmNkaXIpL3Rlc3QgJChERVNURElSKQogIAljcCAtciAkKHNyY2RpcikvcmVzdWx0ICQoREVTVERJUikKIC0JY3AgLXIgJChzcmNkaXIpL3B5dGhvbiAkKERFU1RESVIpCkBAIC0yOCwxMyArMjgsMTMgQEAKICAJc2VkIC1pIC1lICdzfF5NYWtlZmlsZTp8X01ha2VmaWxlOnwnICQoREVTVERJUikvTWFrZWZpbGUKICsJJChNQUtFKSAtQyBweXRob24gaW5zdGFsbC1wdGVzdAogIAotIHJ1bnRlc3RzOgotIAlbIC1kIHRlc3QgICBdIHx8ICQoTE5fUykgJChzcmNkaXIpL3Rlc3QgICAuCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL01ha2VmaWxlLmFtIGIvcHl0aG9uL01ha2VmaWxlLmFtCi1pbmRleCAzNGFlZDk2Li5iYTNlYzZhIDEwMDY0NAotLS0tIGEvcHl0aG9uL01ha2VmaWxlLmFtCi0rKysgYi9weXRob24vTWFrZWZpbGUuYW0KLUBAIC00OCw3ICs0OCwxNiBAQCBHRU5FUkFURUQgPSBsaWJ4bWwyY2xhc3MucHkgbGlieG1sMmNsYXNzLnR4dCAkKEJVSUxUX1NPVVJDRVMpCisgcnVudGVzdHM6IHJ1bnRlc3QkKEVYRUVYVCkgdGVzdHJlY3Vyc2UkKEVYRUVYVCkgdGVzdGFwaSQoRVhFRVhUKSBcCisgICAgICAgICAgIHRlc3RjaGFyJChFWEVFWFQpIHRlc3RkaWN0JChFWEVFWFQpIHJ1bnhtbGNvbmYkKEVYRUVYVCkKK0luZGV4OiBsaWJ4bWwyLTIuOS43L3B5dGhvbi9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYnhtbDItMi45Ljcub3JpZy9weXRob24vTWFrZWZpbGUuYW0KKysrKyBsaWJ4bWwyLTIuOS43L3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTQ4LDcgKzQ4LDE2IEBAIEdFTkVSQVRFRCA9IGxpYnhtbDJjbGFzcy5weSBsaWJ4bWwyY2xhc3MKICAKICAkKEdFTkVSQVRFRCk6ICQoc3JjZGlyKS9nZW5lcmF0b3IucHkgJChBUElfREVTQykKICAJJChQWVRIT04pICQoc3JjZGlyKS9nZW5lcmF0b3IucHkgJChzcmNkaXIpCkBAIC01MSwxMCArNTEsMTAgQEAKICsuUEhPTlk6IHRlc3RzIHRlc3QKICB0ZXN0cyB0ZXN0OiBhbGwKICAJY2QgdGVzdHMgJiYgJChNQUtFKSB0ZXN0cwotZGlmZiAtLWdpdCBhL3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBiL3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggOTVlYmVhZC4uNDE4ZTIxZSAxMDA2NDQKLS0tLSBhL3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCitJbmRleDogbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJ4bWwyLTIuOS43Lm9yaWcvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KIEBAIC01OSw2ICs1OSwxMSBAQCBYTUxTPQkJXAogIENMRUFORklMRVMgPSBjb3JlIHRtcC54bWwgKi5weWMKICAKQEAgLTgxLDEwICs4MSwxMCBAQAogKwogIHRlc3RzOgogIGVuZGlmCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weSBiL3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKLWluZGV4IGQ1ZjliZTcuLjNlNWJlZjggMTAwNzU1Ci0tLS0gYS9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5Ci0rKysgYi9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5CitJbmRleDogbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlieG1sMi0yLjkuNy5vcmlnL3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKKysrKyBsaWJ4bWwyLTIuOS43L3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKIEBAIC0yNSw3ICsyNSw3IEBAIGNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIHdoZW4gdGhlIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGNoZWNrIHRoZSBsaWJ4bWwyLmxhc3RFcnJvciBmb3IKICAgICAgICAgIGV4cGVjdGVkIHZhbHVlcy4iIiIKQEAgLTk0LDYgKzk0LDMgQEAKICAgICAgICAgIHRyeToKICAgICAgICAgICAgICBmKCphcmdzKQogICAgICAgICAgZXhjZXB0IGV4YzoKLS0tIAotMi4xMi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9maXgtZXhlY3V0aW9uLW9mLXB0ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9maXgtZXhlY3V0aW9uLW9mLXB0ZXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWE5ZTE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2ZpeC1leGVjdXRpb24tb2YtcHRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK01ha2Ugc3VyZSB0aGF0IE1ha2VmaWxlIGRvZXNuJ3QgdHJ5IHRvIGNvbXBpbGUgdGhlc2UgdGVzdHMgYWdhaW4KK29uIHRoZSB0YXJnZXQgd2hlcmUgdGhlIHNvdXJjZSBkZXBlbmRlbmNpZXMgd29uJ3QgYmUgYXZhaWxhYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Nyb3NzLWNvbXBpbGUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CisKK0luZGV4OiBsaWJ4bWwyLTIuOS43L01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlieG1sMi0yLjkuNy5vcmlnL01ha2VmaWxlLmFtCisrKysgbGlieG1sMi0yLjkuNy9NYWtlZmlsZS5hbQorQEAgLTIxMSw4ICsyMTEsNyBAQCBpbnN0YWxsLXB0ZXN0OgorIAlzZWQgLWkgLWUgJ3N8Xk1ha2VmaWxlOnxfTWFrZWZpbGU6fCcgJChERVNURElSKS9NYWtlZmlsZQorIAkkKE1BS0UpIC1DIHB5dGhvbiBpbnN0YWxsLXB0ZXN0CisgCistcnVudGVzdHM6IHJ1bnRlc3QkKEVYRUVYVCkgdGVzdHJlY3Vyc2UkKEVYRUVYVCkgdGVzdGFwaSQoRVhFRVhUKSBcCistICAgICAgICAgIHRlc3RjaGFyJChFWEVFWFQpIHRlc3RkaWN0JChFWEVFWFQpIHJ1bnhtbGNvbmYkKEVYRUVYVCkKKytydW50ZXN0czoKKyAJWyAtZCB0ZXN0ICAgXSB8fCAkKExOX1MpICQoc3JjZGlyKS90ZXN0ICAgLgorIAlbIC1kIHJlc3VsdCBdIHx8ICQoTE5fUykgJChzcmNkaXIpL3Jlc3VsdCAuCisgCSQoQ0hFQ0tFUikgLi9ydW50ZXN0JChFWEVFWFQpICYmIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaAppbmRleCAzMjc3MTY1Li5kOWVkMTUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sLW00LXVzZS1wa2djb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbC1tNC11c2UtcGtnY29uZmlnLnBhdGNoCkBAIC0xODMsNyArMTgzLDcgQEAKIC0gICAgICAgICAgZWNobyAiKioqIElmIHlvdSBoYXZlIGFuIG9sZCB2ZXJzaW9uIGluc3RhbGxlZCwgaXQgaXMgYmVzdCB0byByZW1vdmUgaXQsIGFsdGhvdWdoIgogLSAgICAgICAgICBlY2hvICIqKiogeW91IG1heSBhbHNvIGJlIGFibGUgdG8gZ2V0IHRoaW5ncyB0byB3b3JrIGJ5IG1vZGlmeWluZyBMRF9MSUJSQVJZX1BBVEgiIF0sCiAtICAgICAgICBbIGVjaG8gIioqKiBUaGUgdGVzdCBwcm9ncmFtIGZhaWxlZCB0byBjb21waWxlIG9yIGxpbmsuIFNlZSB0aGUgZmlsZSBjb25maWcubG9nIGZvciB0aGUiCi0tICAgICAgICAgIGVjaG8gIioqKiBleGFjdCBlcnJvciB0aGF0IG9jY3VyZWQuIFRoaXMgdXN1YWxseSBtZWFucyBMSUJYTUwgd2FzIGluY29ycmVjdGx5IGluc3RhbGxlZCIKKy0gICAgICAgICAgZWNobyAiKioqIGV4YWN0IGVycm9yIHRoYXQgb2NjdXJyZWQuIFRoaXMgdXN1YWxseSBtZWFucyBMSUJYTUwgd2FzIGluY29ycmVjdGx5IGluc3RhbGxlZCIKIC0gICAgICAgICAgZWNobyAiKioqIG9yIHRoYXQgeW91IGhhdmUgbW92ZWQgTElCWE1MIHNpbmNlIGl0IHdhcyBpbnN0YWxsZWQuIEluIHRoZSBsYXR0ZXIgY2FzZSwgeW91IgogLSAgICAgICAgICBlY2hvICIqKiogbWF5IHdhbnQgdG8gZWRpdCB0aGUgeG1sMi1jb25maWcgc2NyaXB0OiAkWE1MMl9DT05GSUciIF0pCiAtICAgICAgICAgIENQUEZMQUdTPSIkYWNfc2F2ZV9DUFBGTEFHUyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE2LTQ2NTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNi00NjU4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjU1ZWVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE2LTQ2NTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNjkgKzAsMCBAQAotbGlieG1sMi0yLjkuNDogRml4IENWRS0yMDE2LTQ2NTgKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPUNWRS0yMDE2LTQ2NTgKLQoteHBvaW50ZXI6IERpc2FsbG93IG5hbWVzcGFjZSBub2RlcyBpbiBYUG9pbnRlciBwb2ludHMgYW5kIHJhbmdlcwotCi1OYW1lc3BhY2Ugbm9kZXMgbXVzdCBiZSBjb3BpZWQgdG8gYXZvaWQgdXNlLWFmdGVyLWZyZWUgZXJyb3JzLgotQnV0IHRoZXkgZG9uJ3QgbmVjZXNzYXJpbHkgaGF2ZSBhIHBoeXNpY2FsIHJlcHJlc2VudGF0aW9uIGluIGEKLWRvY3VtZW50LCBzbyBzaW1wbHkgZGlzYWxsb3cgdGhlbSBpbiBYUG9pbnRlciByYW5nZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLSAtIFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD1jMWQxZjcxMjExOTQwMzY2MDhiZjU1NWYwOGQzMDYyYTM2ZmQzNDRiXQotIC0gW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPTNmOGE5MTAzNmQzMzhlNTFjMDU5ZDU0Mzk3YTQyZDY0NWYwMTljNjVdCi1DVkU6IENWRS0yMDE2LTQ2NTgKLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgotU2lnbmVkLW9mZi1ieTogUGFzY2FsIEJhY2ggPHBhc2NhbC5iYWNoQHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEveHBvaW50ZXIuYyBiL3hwb2ludGVyLmMKLWluZGV4IDY3NmM1MTAuLjkxMTY4MGQgMTAwNjQ0Ci0tLS0gYS94cG9pbnRlci5jCi0rKysgYi94cG9pbnRlci5jCi1AQCAtMzIwLDYgKzMyMCw0NSBAQCB4bWxYUHRyUmFuZ2VzRXF1YWwoeG1sWFBhdGhPYmplY3RQdHIgcmFuZ2UxLCB4bWxYUGF0aE9iamVjdFB0ciByYW5nZTIpIHsKLSB9Ci0gCi0gLyoqCi0rICogeG1sWFB0ck5ld1JhbmdlSW50ZXJuYWw6Ci0rICogQHN0YXJ0OiAgdGhlIHN0YXJ0aW5nIG5vZGUKLSsgKiBAc3RhcnRpbmRleDogIHRoZSBzdGFydCBpbmRleAotKyAqIEBlbmQ6ICB0aGUgZW5kaW5nIHBvaW50Ci0rICogQGVuZGluZGV4OiAgdGhlIGVuZGluZyBpbmRleAotKyAqCi0rICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IHhtbFhQYXRoT2JqZWN0UHRyIG9mIHR5cGUgcmFuZ2UKLSsgKgotKyAqIFJldHVybnMgdGhlIG5ld2x5IGNyZWF0ZWQgb2JqZWN0LgotKyAqLwotK3N0YXRpYyB4bWxYUGF0aE9iamVjdFB0cgotK3htbFhQdHJOZXdSYW5nZUludGVybmFsKHhtbE5vZGVQdHIgc3RhcnQsIGludCBzdGFydGluZGV4LAotKyAgICAgICAgICAgICAgICAgICAgICAgIHhtbE5vZGVQdHIgZW5kLCBpbnQgZW5kaW5kZXgpIHsKLSsgICAgeG1sWFBhdGhPYmplY3RQdHIgcmV0OwotKwotKyAgICAvKgotKyAgICAgKiBOYW1lc3BhY2Ugbm9kZXMgbXVzdCBiZSBjb3BpZWQgKHNlZSB4bWxYUGF0aE5vZGVTZXREdXBOcykuCi0rICAgICAqIERpc2FsbG93IHRoZW0gZm9yIG5vdy4KLSsgICAgICovCi0rICAgIGlmICgoc3RhcnQgIT0gTlVMTCkgJiYgKHN0YXJ0LT50eXBlID09IFhNTF9OQU1FU1BBQ0VfREVDTCkpCi0rCXJldHVybihOVUxMKTsKLSsgICAgaWYgKChlbmQgIT0gTlVMTCkgJiYgKGVuZC0+dHlwZSA9PSBYTUxfTkFNRVNQQUNFX0RFQ0wpKQotKwlyZXR1cm4oTlVMTCk7Ci0rCi0rICAgIHJldCA9ICh4bWxYUGF0aE9iamVjdFB0cikgeG1sTWFsbG9jKHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotKyAgICBpZiAocmV0ID09IE5VTEwpIHsKLSsgICAgICAgIHhtbFhQdHJFcnJNZW1vcnkoImFsbG9jYXRpbmcgcmFuZ2UiKTsKLSsJcmV0dXJuKE5VTEwpOwotKyAgICB9Ci0rICAgIG1lbXNldChyZXQsIDAsIHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotKyAgICByZXQtPnR5cGUgPSBYUEFUSF9SQU5HRTsKLSsgICAgcmV0LT51c2VyID0gc3RhcnQ7Ci0rICAgIHJldC0+aW5kZXggPSBzdGFydGluZGV4OwotKyAgICByZXQtPnVzZXIyID0gZW5kOwotKyAgICByZXQtPmluZGV4MiA9IGVuZGluZGV4OwotKyAgICByZXR1cm4ocmV0KTsKLSt9Ci0rCi0rLyoqCi0gICogeG1sWFB0ck5ld1JhbmdlOgotICAqIEBzdGFydDogIHRoZSBzdGFydGluZyBub2RlCi0gICogQHN0YXJ0aW5kZXg6ICB0aGUgc3RhcnQgaW5kZXgKLUBAIC0zNDQsMTcgKzM4Myw3IEBAIHhtbFhQdHJOZXdSYW5nZSh4bWxOb2RlUHRyIHN0YXJ0LCBpbnQgc3RhcnRpbmRleCwKLSAgICAgaWYgKGVuZGluZGV4IDwgMCkKLSAJcmV0dXJuKE5VTEwpOwotIAotLSAgICByZXQgPSAoeG1sWFBhdGhPYmplY3RQdHIpIHhtbE1hbGxvYyhzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgaWYgKHJldCA9PSBOVUxMKSB7Ci0tICAgICAgICB4bWxYUHRyRXJyTWVtb3J5KCJhbGxvY2F0aW5nIHJhbmdlIik7Ci0tCXJldHVybihOVUxMKTsKLS0gICAgfQotLSAgICBtZW1zZXQocmV0LCAwICwgKHNpemVfdCkgc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0tICAgIHJldC0+dHlwZSA9IFhQQVRIX1JBTkdFOwotLSAgICByZXQtPnVzZXIgPSBzdGFydDsKLS0gICAgcmV0LT5pbmRleCA9IHN0YXJ0aW5kZXg7Ci0tICAgIHJldC0+dXNlcjIgPSBlbmQ7Ci0tICAgIHJldC0+aW5kZXgyID0gZW5kaW5kZXg7Ci0rICAgIHJldCA9IHhtbFhQdHJOZXdSYW5nZUludGVybmFsKHN0YXJ0LCBzdGFydGluZGV4LCBlbmQsIGVuZGluZGV4KTsKLSAgICAgeG1sWFB0clJhbmdlQ2hlY2tPcmRlcihyZXQpOwotICAgICByZXR1cm4ocmV0KTsKLSB9Ci1AQCAtMzgxLDE3ICs0MTAsOCBAQCB4bWxYUHRyTmV3UmFuZ2VQb2ludHMoeG1sWFBhdGhPYmplY3RQdHIgc3RhcnQsIHhtbFhQYXRoT2JqZWN0UHRyIGVuZCkgewotICAgICBpZiAoZW5kLT50eXBlICE9IFhQQVRIX1BPSU5UKQotIAlyZXR1cm4oTlVMTCk7Ci0gCi0tICAgIHJldCA9ICh4bWxYUGF0aE9iamVjdFB0cikgeG1sTWFsbG9jKHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICBpZiAocmV0ID09IE5VTEwpIHsKLS0gICAgICAgIHhtbFhQdHJFcnJNZW1vcnkoImFsbG9jYXRpbmcgcmFuZ2UiKTsKLS0JcmV0dXJuKE5VTEwpOwotLSAgICB9Ci0tICAgIG1lbXNldChyZXQsIDAgLCAoc2l6ZV90KSBzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgcmV0LT50eXBlID0gWFBBVEhfUkFOR0U7Ci0tICAgIHJldC0+dXNlciA9IHN0YXJ0LT51c2VyOwotLSAgICByZXQtPmluZGV4ID0gc3RhcnQtPmluZGV4OwotLSAgICByZXQtPnVzZXIyID0gZW5kLT51c2VyOwotLSAgICByZXQtPmluZGV4MiA9IGVuZC0+aW5kZXg7Ci0rICAgIHJldCA9IHhtbFhQdHJOZXdSYW5nZUludGVybmFsKHN0YXJ0LT51c2VyLCBzdGFydC0+aW5kZXgsIGVuZC0+dXNlciwKLSsJCQkJICBlbmQtPmluZGV4KTsKLSAgICAgeG1sWFB0clJhbmdlQ2hlY2tPcmRlcihyZXQpOwotICAgICByZXR1cm4ocmV0KTsKLSB9Ci1AQCAtNDE2LDE3ICs0MzYsNyBAQCB4bWxYUHRyTmV3UmFuZ2VQb2ludE5vZGUoeG1sWFBhdGhPYmplY3RQdHIgc3RhcnQsIHhtbE5vZGVQdHIgZW5kKSB7Ci0gICAgIGlmIChzdGFydC0+dHlwZSAhPSBYUEFUSF9QT0lOVCkKLSAJcmV0dXJuKE5VTEwpOwotIAotLSAgICByZXQgPSAoeG1sWFBhdGhPYmplY3RQdHIpIHhtbE1hbGxvYyhzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgaWYgKHJldCA9PSBOVUxMKSB7Ci0tICAgICAgICB4bWxYUHRyRXJyTWVtb3J5KCJhbGxvY2F0aW5nIHJhbmdlIik7Ci0tCXJldHVybihOVUxMKTsKLS0gICAgfQotLSAgICBtZW1zZXQocmV0LCAwICwgKHNpemVfdCkgc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0tICAgIHJldC0+dHlwZSA9IFhQQVRIX1JBTkdFOwotLSAgICByZXQtPnVzZXIgPSBzdGFydC0+dXNlcjsKLS0gICAgcmV0LT5pbmRleCA9IHN0YXJ0LT5pbmRleDsKLS0gICAgcmV0LT51c2VyMiA9IGVuZDsKLS0gICAgcmV0LT5pbmRleDIgPSAtMTsKLSsgICAgcmV0ID0geG1sWFB0ck5ld1JhbmdlSW50ZXJuYWwoc3RhcnQtPnVzZXIsIHN0YXJ0LT5pbmRleCwgZW5kLCAtMSk7Ci0gICAgIHhtbFhQdHJSYW5nZUNoZWNrT3JkZXIocmV0KTsKLSAgICAgcmV0dXJuKHJldCk7Ci0gfQotQEAgLTQ1MywxNyArNDYzLDcgQEAgeG1sWFB0ck5ld1JhbmdlTm9kZVBvaW50KHhtbE5vZGVQdHIgc3RhcnQsIHhtbFhQYXRoT2JqZWN0UHRyIGVuZCkgewotICAgICBpZiAoZW5kLT50eXBlICE9IFhQQVRIX1BPSU5UKQotIAlyZXR1cm4oTlVMTCk7Ci0gCi0tICAgIHJldCA9ICh4bWxYUGF0aE9iamVjdFB0cikgeG1sTWFsbG9jKHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICBpZiAocmV0ID09IE5VTEwpIHsKLS0gICAgICAgIHhtbFhQdHJFcnJNZW1vcnkoImFsbG9jYXRpbmcgcmFuZ2UiKTsKLS0JcmV0dXJuKE5VTEwpOwotLSAgICB9Ci0tICAgIG1lbXNldChyZXQsIDAgLCAoc2l6ZV90KSBzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgcmV0LT50eXBlID0gWFBBVEhfUkFOR0U7Ci0tICAgIHJldC0+dXNlciA9IHN0YXJ0OwotLSAgICByZXQtPmluZGV4ID0gLTE7Ci0tICAgIHJldC0+dXNlcjIgPSBlbmQtPnVzZXI7Ci0tICAgIHJldC0+aW5kZXgyID0gZW5kLT5pbmRleDsKLSsgICAgcmV0ID0geG1sWFB0ck5ld1JhbmdlSW50ZXJuYWwoc3RhcnQsIC0xLCBlbmQtPnVzZXIsIGVuZC0+aW5kZXgpOwotICAgICB4bWxYUHRyUmFuZ2VDaGVja09yZGVyKHJldCk7Ci0gICAgIHJldHVybihyZXQpOwotIH0KLUBAIC00ODYsMTcgKzQ4Niw3IEBAIHhtbFhQdHJOZXdSYW5nZU5vZGVzKHhtbE5vZGVQdHIgc3RhcnQsIHhtbE5vZGVQdHIgZW5kKSB7Ci0gICAgIGlmIChlbmQgPT0gTlVMTCkKLSAJcmV0dXJuKE5VTEwpOwotIAotLSAgICByZXQgPSAoeG1sWFBhdGhPYmplY3RQdHIpIHhtbE1hbGxvYyhzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgaWYgKHJldCA9PSBOVUxMKSB7Ci0tICAgICAgICB4bWxYUHRyRXJyTWVtb3J5KCJhbGxvY2F0aW5nIHJhbmdlIik7Ci0tCXJldHVybihOVUxMKTsKLS0gICAgfQotLSAgICBtZW1zZXQocmV0LCAwICwgKHNpemVfdCkgc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0tICAgIHJldC0+dHlwZSA9IFhQQVRIX1JBTkdFOwotLSAgICByZXQtPnVzZXIgPSBzdGFydDsKLS0gICAgcmV0LT5pbmRleCA9IC0xOwotLSAgICByZXQtPnVzZXIyID0gZW5kOwotLSAgICByZXQtPmluZGV4MiA9IC0xOwotKyAgICByZXQgPSB4bWxYUHRyTmV3UmFuZ2VJbnRlcm5hbChzdGFydCwgLTEsIGVuZCwgLTEpOwotICAgICB4bWxYUHRyUmFuZ2VDaGVja09yZGVyKHJldCk7Ci0gICAgIHJldHVybihyZXQpOwotIH0KLUBAIC01MTYsMTcgKzUwNiw3IEBAIHhtbFhQdHJOZXdDb2xsYXBzZWRSYW5nZSh4bWxOb2RlUHRyIHN0YXJ0KSB7Ci0gICAgIGlmIChzdGFydCA9PSBOVUxMKQotIAlyZXR1cm4oTlVMTCk7Ci0gCi0tICAgIHJldCA9ICh4bWxYUGF0aE9iamVjdFB0cikgeG1sTWFsbG9jKHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICBpZiAocmV0ID09IE5VTEwpIHsKLS0gICAgICAgIHhtbFhQdHJFcnJNZW1vcnkoImFsbG9jYXRpbmcgcmFuZ2UiKTsKLS0JcmV0dXJuKE5VTEwpOwotLSAgICB9Ci0tICAgIG1lbXNldChyZXQsIDAgLCAoc2l6ZV90KSBzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgcmV0LT50eXBlID0gWFBBVEhfUkFOR0U7Ci0tICAgIHJldC0+dXNlciA9IHN0YXJ0OwotLSAgICByZXQtPmluZGV4ID0gLTE7Ci0tICAgIHJldC0+dXNlcjIgPSBOVUxMOwotLSAgICByZXQtPmluZGV4MiA9IC0xOwotKyAgICByZXQgPSB4bWxYUHRyTmV3UmFuZ2VJbnRlcm5hbChzdGFydCwgLTEsIE5VTEwsIC0xKTsKLSAgICAgcmV0dXJuKHJldCk7Ci0gfQotIAotQEAgLTU0MSw2ICs1MjEsOCBAQCB4bWxYUHRyTmV3Q29sbGFwc2VkUmFuZ2UoeG1sTm9kZVB0ciBzdGFydCkgewotICAqLwotIHhtbFhQYXRoT2JqZWN0UHRyCi0geG1sWFB0ck5ld1JhbmdlTm9kZU9iamVjdCh4bWxOb2RlUHRyIHN0YXJ0LCB4bWxYUGF0aE9iamVjdFB0ciBlbmQpIHsKLSsgICAgeG1sTm9kZVB0ciBlbmROb2RlOwotKyAgICBpbnQgZW5kSW5kZXg7Ci0gICAgIHhtbFhQYXRoT2JqZWN0UHRyIHJldDsKLSAKLSAgICAgaWYgKHN0YXJ0ID09IE5VTEwpCi1AQCAtNTQ5LDcgKzUzMSwxMiBAQCB4bWxYUHRyTmV3UmFuZ2VOb2RlT2JqZWN0KHhtbE5vZGVQdHIgc3RhcnQsIHhtbFhQYXRoT2JqZWN0UHRyIGVuZCkgewotIAlyZXR1cm4oTlVMTCk7Ci0gICAgIHN3aXRjaCAoZW5kLT50eXBlKSB7Ci0gCWNhc2UgWFBBVEhfUE9JTlQ6Ci0rCSAgICBlbmROb2RlID0gZW5kLT51c2VyOwotKwkgICAgZW5kSW5kZXggPSBlbmQtPmluZGV4OwotKwkgICAgYnJlYWs7Ci0gCWNhc2UgWFBBVEhfUkFOR0U6Ci0rCSAgICBlbmROb2RlID0gZW5kLT51c2VyMjsKLSsJICAgIGVuZEluZGV4ID0gZW5kLT5pbmRleDI7Ci0gCSAgICBicmVhazsKLSAJY2FzZSBYUEFUSF9OT0RFU0VUOgotIAkgICAgLyoKLUBAIC01NTcsMzkgKzU0NCwxNSBAQCB4bWxYUHRyTmV3UmFuZ2VOb2RlT2JqZWN0KHhtbE5vZGVQdHIgc3RhcnQsIHhtbFhQYXRoT2JqZWN0UHRyIGVuZCkgewotIAkgICAgICovCi0gCSAgICBpZiAoZW5kLT5ub2Rlc2V0dmFsLT5ub2RlTnIgPD0gMCkKLSAJCXJldHVybihOVUxMKTsKLSsJICAgIGVuZE5vZGUgPSBlbmQtPm5vZGVzZXR2YWwtPm5vZGVUYWJbZW5kLT5ub2Rlc2V0dmFsLT5ub2RlTnIgLSAxXTsKLSsJICAgIGVuZEluZGV4ID0gLTE7Ci0gCSAgICBicmVhazsKLSAJZGVmYXVsdDoKLSAJICAgIC8qIFRPRE8gKi8KLSAJICAgIHJldHVybihOVUxMKTsKLSAgICAgfQotIAotLSAgICByZXQgPSAoeG1sWFBhdGhPYmplY3RQdHIpIHhtbE1hbGxvYyhzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgaWYgKHJldCA9PSBOVUxMKSB7Ci0tICAgICAgICB4bWxYUHRyRXJyTWVtb3J5KCJhbGxvY2F0aW5nIHJhbmdlIik7Ci0tCXJldHVybihOVUxMKTsKLS0gICAgfQotLSAgICBtZW1zZXQocmV0LCAwICwgKHNpemVfdCkgc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0tICAgIHJldC0+dHlwZSA9IFhQQVRIX1JBTkdFOwotLSAgICByZXQtPnVzZXIgPSBzdGFydDsKLS0gICAgcmV0LT5pbmRleCA9IC0xOwotLSAgICBzd2l0Y2ggKGVuZC0+dHlwZSkgewotLQljYXNlIFhQQVRIX1BPSU5UOgotLQkgICAgcmV0LT51c2VyMiA9IGVuZC0+dXNlcjsKLS0JICAgIHJldC0+aW5kZXgyID0gZW5kLT5pbmRleDsKLS0JICAgIGJyZWFrOwotLQljYXNlIFhQQVRIX1JBTkdFOgotLQkgICAgcmV0LT51c2VyMiA9IGVuZC0+dXNlcjI7Ci0tCSAgICByZXQtPmluZGV4MiA9IGVuZC0+aW5kZXgyOwotLQkgICAgYnJlYWs7Ci0tCWNhc2UgWFBBVEhfTk9ERVNFVDogewotLQkgICAgcmV0LT51c2VyMiA9IGVuZC0+bm9kZXNldHZhbC0+bm9kZVRhYltlbmQtPm5vZGVzZXR2YWwtPm5vZGVOciAtIDFdOwotLQkgICAgcmV0LT5pbmRleDIgPSAtMTsKLS0JICAgIGJyZWFrOwotLQl9Ci0tCWRlZmF1bHQ6Ci0tCSAgICBTVFJBTkdFCi0tCSAgICByZXR1cm4oTlVMTCk7Ci0tICAgIH0KLSsgICAgcmV0ID0geG1sWFB0ck5ld1JhbmdlSW50ZXJuYWwoc3RhcnQsIC0xLCBlbmROb2RlLCBlbmRJbmRleCk7Ci0gICAgIHhtbFhQdHJSYW5nZUNoZWNrT3JkZXIocmV0KTsKLSAgICAgcmV0dXJuKHJldCk7Ci0gfQotQEAgLTE4MzUsOCArMTc5OCw4IEBAIHhtbFhQdHJTdGFydFBvaW50RnVuY3Rpb24oeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIGludCBuYXJncykgewotIAkJY2FzZSBYUEFUSF9SQU5HRTogewotIAkJICAgIHhtbE5vZGVQdHIgbm9kZSA9IHRtcC0+dXNlcjsKLSAJCSAgICBpZiAobm9kZSAhPSBOVUxMKSB7Ci0tCQkJaWYgKG5vZGUtPnR5cGUgPT0gWE1MX0FUVFJJQlVURV9OT0RFKSB7Ci0tCQkJICAgIC8qIFRPRE86IE5hbWVzcGFjZSBOb2RlcyA/Pz8gKi8KLSsJCQlpZiAoKG5vZGUtPnR5cGUgPT0gWE1MX0FUVFJJQlVURV9OT0RFKSB8fAotKwkJCSAgICAgKG5vZGUtPnR5cGUgPT0gWE1MX05BTUVTUEFDRV9ERUNMKSkgewotIAkJCSAgICB4bWxYUGF0aEZyZWVPYmplY3Qob2JqKTsKLSAJCQkgICAgeG1sWFB0ckZyZWVMb2NhdGlvblNldChuZXdzZXQpOwotIAkJCSAgICBYUF9FUlJPUihYUFRSX1NZTlRBWF9FUlJPUik7Ci1AQCAtMTkzMSw4ICsxODk0LDggQEAgeG1sWFB0ckVuZFBvaW50RnVuY3Rpb24oeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIGludCBuYXJncykgewotIAkJY2FzZSBYUEFUSF9SQU5HRTogewotIAkJICAgIHhtbE5vZGVQdHIgbm9kZSA9IHRtcC0+dXNlcjI7Ci0gCQkgICAgaWYgKG5vZGUgIT0gTlVMTCkgewotLQkJCWlmIChub2RlLT50eXBlID09IFhNTF9BVFRSSUJVVEVfTk9ERSkgewotLQkJCSAgICAvKiBUT0RPOiBOYW1lc3BhY2UgTm9kZXMgPz8/ICovCi0rCQkJaWYgKChub2RlLT50eXBlID09IFhNTF9BVFRSSUJVVEVfTk9ERSkgfHwKLSsJCQkgICAgIChub2RlLT50eXBlID09IFhNTF9OQU1FU1BBQ0VfREVDTCkpIHsKLSAJCQkgICAgeG1sWFBhdGhGcmVlT2JqZWN0KG9iaik7Ci0gCQkJICAgIHhtbFhQdHJGcmVlTG9jYXRpb25TZXQobmV3c2V0KTsKLSAJCQkgICAgWFBfRVJST1IoWFBUUl9TWU5UQVhfRVJST1IpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTYtNTEzMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE2LTUxMzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkNDdkMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTYtNTEzMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi1Gcm9tIDlhYjAxYTI3N2Q3MWY1NGQzMTQzYzJjZjMzM2M1YzJlOWFhZWRkOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIFdlbGxuaG9mZXIgPHdlbGxuaG9mZXJAYWV2dW0uZGU+Ci1EYXRlOiBUdWUsIDI4IEp1biAyMDE2IDE0OjIyOjIzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBYUG9pbnRlciBwYXRocyBiZWdpbm5pbmcgd2l0aCByYW5nZS10bwotCi1UaGUgb2xkIGNvZGUgd291bGQgaW52b2tlIHRoZSBicm9rZW4geG1sWFB0clJhbmdlVG9GdW5jdGlvbi4gcmFuZ2UtdG8KLWlzbid0IHJlYWxseSBhIGZ1bmN0aW9uIGJ1dCBhIHNwZWNpYWwga2luZCBvZiBsb2NhdGlvbiBzdGVwLiBSZW1vdmUKLXRoaXMgZnVuY3Rpb24gYW5kIGFsd2F5cyBoYW5kbGUgcmFuZ2UtdG8gaW4gdGhlIFhQYXRoIGNvZGUuCi0KLVRoZSBvbGQgeG1sWFB0clJhbmdlVG9GdW5jdGlvbiBjb3VsZCBhbHNvIGJlIGFidXNlZCB0byB0cmlnZ2VyIGEKLXVzZS1hZnRlci1mcmVlIGVycm9yIHdpdGggdGhlIHBvdGVudGlhbCBmb3IgcmVtb3RlIGNvZGUgZXhlY3V0aW9uLgotCi1Gb3VuZCB3aXRoIGFmbC1mdXp6LgotCi1GaXhlcyBDVkUtMjAxNi01MTMxLgotCi1DVkU6IENWRS0yMDE2LTUxMzEKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPTlhYjAxYTI3N2Q3MWY1NGQzMTQzYzJjZjMzM2M1YzJlOWFhZWRkOWUKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kaXJ2ZXIuY29tPgotLS0tCi0gcmVzdWx0L1hQYXRoL3hwdHIvdmlkYmFzZSB8IDEzICsrKysrKysrCi0gdGVzdC9YUGF0aC94cHRyL3ZpZGJhc2UgICB8ICAxICsKLSB4cGF0aC5jICAgICAgICAgICAgICAgICAgIHwgIDcgKysrKy0KLSB4cG9pbnRlci5jICAgICAgICAgICAgICAgIHwgNzYgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcmVzdWx0L1hQYXRoL3hwdHIvdmlkYmFzZSBiL3Jlc3VsdC9YUGF0aC94cHRyL3ZpZGJhc2UKLWluZGV4IDhiOWU5MmQuLmYxOTE5M2UgMTAwNjQ0Ci0tLS0gYS9yZXN1bHQvWFBhdGgveHB0ci92aWRiYXNlCi0rKysgYi9yZXN1bHQvWFBhdGgveHB0ci92aWRiYXNlCi1AQCAtMTcsMyArMTcsMTYgQEAgT2JqZWN0IGlzIGEgTG9jYXRpb24gU2V0OgotICAgVG8gbm9kZQotICAgICBFTEVNRU5UIHAKLSAKLSsKLSs9PT09PT09PT09PT09PT09PT09PT09PT0KLStFeHByZXNzaW9uOiB4cG9pbnRlcihyYW5nZS10byhpZCgnY2hhcHRlcjInKSkpCi0rT2JqZWN0IGlzIGEgTG9jYXRpb24gU2V0OgotKzEgOiAgIE9iamVjdCBpcyBhIHJhbmdlIDoKLSsgIEZyb20gbm9kZQotKyAgICAgLwotKyAgVG8gbm9kZQotKyAgICBFTEVNRU5UIGNoYXB0ZXIKLSsgICAgICBBVFRSSUJVVEUgaWQKLSsgICAgICAgIFRFWFQKLSsgICAgICAgICAgY29udGVudD1jaGFwdGVyMgotKwotZGlmZiAtLWdpdCBhL3Rlc3QvWFBhdGgveHB0ci92aWRiYXNlIGIvdGVzdC9YUGF0aC94cHRyL3ZpZGJhc2UKLWluZGV4IGIxNDYzODMuLjg4NGIxMDYgMTAwNjQ0Ci0tLS0gYS90ZXN0L1hQYXRoL3hwdHIvdmlkYmFzZQotKysrIGIvdGVzdC9YUGF0aC94cHRyL3ZpZGJhc2UKLUBAIC0xLDIgKzEsMyBAQAotIHhwb2ludGVyKGlkKCdjaGFwdGVyMScpL3ApCi0geHBvaW50ZXIoaWQoJ2NoYXB0ZXIxJykvcFsxXS9yYW5nZS10byhmb2xsb3dpbmctc2libGluZzo6cFsyXSkpCi0reHBvaW50ZXIocmFuZ2UtdG8oaWQoJ2NoYXB0ZXIyJykpKQotZGlmZiAtLWdpdCBhL3hwYXRoLmMgYi94cGF0aC5jCi1pbmRleCBkOTkyODQxLi41YTAxYjFiIDEwMDY0NAotLS0tIGEveHBhdGguYwotKysrIGIveHBhdGguYwotQEAgLTEwNjkxLDEzICsxMDY5MSwxOCBAQCB4bWxYUGF0aENvbXBQYXRoRXhwcih4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCkgewotIAkJICAgIGxjID0gMTsKLSAJCSAgICBicmVhazsKLSAJCX0gZWxzZSBpZiAoKE5YVChsZW4pID09ICcoJykpIHsKLS0JCSAgICAvKiBOb3RlIFR5cGUgb3IgRnVuY3Rpb24gKi8KLSsJCSAgICAvKiBOb2RlIFR5cGUgb3IgRnVuY3Rpb24gKi8KLSAJCSAgICBpZiAoeG1sWFBhdGhJc05vZGVUeXBlKG5hbWUpKSB7Ci0gI2lmZGVmIERFQlVHX1NURVAKLSAJCSAgICAgICAgeG1sR2VuZXJpY0Vycm9yKHhtbEdlbmVyaWNFcnJvckNvbnRleHQsCi0gCQkJCSJQYXRoRXhwcjogVHlwZSBzZWFyY2hcbiIpOwotICNlbmRpZgotIAkJCWxjID0gMTsKLSsjaWZkZWYgTElCWE1MX1hQVFJfRU5BQkxFRAotKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdHh0LT54cHRyICYmCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbFN0ckVxdWFsKG5hbWUsIEJBRF9DQVNUICJyYW5nZS10byIpKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbGMgPSAxOwotKyNlbmRpZgotIAkJICAgIH0gZWxzZSB7Ci0gI2lmZGVmIERFQlVHX1NURVAKLSAJCSAgICAgICAgeG1sR2VuZXJpY0Vycm9yKHhtbEdlbmVyaWNFcnJvckNvbnRleHQsCi1kaWZmIC0tZ2l0IGEveHBvaW50ZXIuYyBiL3hwb2ludGVyLmMKLWluZGV4IDY3NmM1MTAuLmQ3NDE3NGEgMTAwNjQ0Ci0tLS0gYS94cG9pbnRlci5jCi0rKysgYi94cG9pbnRlci5jCi1AQCAtMTMzMiw4ICsxMzMyLDYgQEAgeG1sWFB0ck5ld0NvbnRleHQoeG1sRG9jUHRyIGRvYywgeG1sTm9kZVB0ciBoZXJlLCB4bWxOb2RlUHRyIG9yaWdpbikgewotICAgICByZXQtPmhlcmUgPSBoZXJlOwotICAgICByZXQtPm9yaWdpbiA9IG9yaWdpbjsKLSAKLS0gICAgeG1sWFBhdGhSZWdpc3RlckZ1bmMocmV0LCAoeG1sQ2hhciAqKSJyYW5nZS10byIsCi0tCSAgICAgICAgICAgICAgICAgeG1sWFB0clJhbmdlVG9GdW5jdGlvbik7Ci0gICAgIHhtbFhQYXRoUmVnaXN0ZXJGdW5jKHJldCwgKHhtbENoYXIgKikicmFuZ2UiLAotIAkgICAgICAgICAgICAgICAgIHhtbFhQdHJSYW5nZUZ1bmN0aW9uKTsKLSAgICAgeG1sWFBhdGhSZWdpc3RlckZ1bmMocmV0LCAoeG1sQ2hhciAqKSJyYW5nZS1pbnNpZGUiLAotQEAgLTIyNDMsNzYgKzIyNDEsMTQgQEAgeG1sWFB0clJhbmdlSW5zaWRlRnVuY3Rpb24oeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIGludCBuYXJncykgewotICAqIEBuYXJnczogIHRoZSBudW1iZXIgb2YgYXJncwotICAqCi0gICogSW1wbGVtZW50IHRoZSByYW5nZS10bygpIFhQb2ludGVyIGZ1bmN0aW9uCi0rICoKLSsgKiBPYnNvbGV0ZS4gcmFuZ2UtdG8gaXMgbm90IGEgcmVhbCBmdW5jdGlvbiBidXQgYSBzcGVjaWFsIHR5cGUgb2YgbG9jYXRpb24KLSsgKiBzdGVwIHdoaWNoIGlzIGhhbmRsZWQgaW4geHBhdGguYy4KLSAgKi8KLSB2b2lkCi0teG1sWFB0clJhbmdlVG9GdW5jdGlvbih4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCwgaW50IG5hcmdzKSB7Ci0tICAgIHhtbFhQYXRoT2JqZWN0UHRyIHJhbmdlOwotLSAgICBjb25zdCB4bWxDaGFyICpjdXI7Ci0tICAgIHhtbFhQYXRoT2JqZWN0UHRyIHJlcywgb2JqOwotLSAgICB4bWxYUGF0aE9iamVjdFB0ciB0bXA7Ci0tICAgIHhtbExvY2F0aW9uU2V0UHRyIG5ld3NldCA9IE5VTEw7Ci0tICAgIHhtbE5vZGVTZXRQdHIgb2xkc2V0OwotLSAgICBpbnQgaTsKLS0KLS0gICAgaWYgKGN0eHQgPT0gTlVMTCkgcmV0dXJuOwotLSAgICBDSEVDS19BUklUWSgxKTsKLS0gICAgLyoKLS0gICAgICogU2F2ZSB0aGUgZXhwcmVzc2lvbiBwb2ludGVyIHNpbmNlIHdlIHdpbGwgaGF2ZSB0byBldmFsdWF0ZQotLSAgICAgKiBpdCBtdWx0aXBsZSB0aW1lcy4gSW5pdGlhbGl6ZSB0aGUgbmV3IHNldC4KLS0gICAgICovCi0tICAgIENIRUNLX1RZUEUoWFBBVEhfTk9ERVNFVCk7Ci0tICAgIG9iaiA9IHZhbHVlUG9wKGN0eHQpOwotLSAgICBvbGRzZXQgPSBvYmotPm5vZGVzZXR2YWw7Ci0tICAgIGN0eHQtPmNvbnRleHQtPm5vZGUgPSBOVUxMOwotLQotLSAgICBjdXIgPSBjdHh0LT5jdXI7Ci0tICAgIG5ld3NldCA9IHhtbFhQdHJMb2NhdGlvblNldENyZWF0ZShOVUxMKTsKLS0KLS0gICAgZm9yIChpID0gMDsgaSA8IG9sZHNldC0+bm9kZU5yOyBpKyspIHsKLS0JY3R4dC0+Y3VyID0gY3VyOwotLQotLQkvKgotLQkgKiBSdW4gdGhlIGV2YWx1YXRpb24gd2l0aCBhIG5vZGUgbGlzdCBtYWRlIG9mIGEgc2luZ2xlIGl0ZW0KLS0JICogaW4gdGhlIG5vZGVzZXQuCi0tCSAqLwotLQljdHh0LT5jb250ZXh0LT5ub2RlID0gb2xkc2V0LT5ub2RlVGFiW2ldOwotLQl0bXAgPSB4bWxYUGF0aE5ld05vZGVTZXQoY3R4dC0+Y29udGV4dC0+bm9kZSk7Ci0tCXZhbHVlUHVzaChjdHh0LCB0bXApOwotLQotLQl4bWxYUGF0aEV2YWxFeHByKGN0eHQpOwotLQlDSEVDS19FUlJPUjsKLS0KLS0JLyoKLS0JICogVGhlIHJlc3VsdCBvZiB0aGUgZXZhbHVhdGlvbiBuZWVkIHRvIGJlIHRlc3RlZCB0bwotLQkgKiBkZWNpZGVkIHdoZXRoZXIgdGhlIGZpbHRlciBzdWNjZWVkZWQgb3Igbm90Ci0tCSAqLwotLQlyZXMgPSB2YWx1ZVBvcChjdHh0KTsKLS0JcmFuZ2UgPSB4bWxYUHRyTmV3UmFuZ2VOb2RlT2JqZWN0KG9sZHNldC0+bm9kZVRhYltpXSwgcmVzKTsKLS0JaWYgKHJhbmdlICE9IE5VTEwpIHsKLS0JICAgIHhtbFhQdHJMb2NhdGlvblNldEFkZChuZXdzZXQsIHJhbmdlKTsKLS0JfQotLQotLQkvKgotLQkgKiBDbGVhbnVwCi0tCSAqLwotLQlpZiAocmVzICE9IE5VTEwpCi0tCSAgICB4bWxYUGF0aEZyZWVPYmplY3QocmVzKTsKLS0JaWYgKGN0eHQtPnZhbHVlID09IHRtcCkgewotLQkgICAgcmVzID0gdmFsdWVQb3AoY3R4dCk7Ci0tCSAgICB4bWxYUGF0aEZyZWVPYmplY3QocmVzKTsKLS0JfQotLQotLQljdHh0LT5jb250ZXh0LT5ub2RlID0gTlVMTDsKLS0gICAgfQotLQotLSAgICAvKgotLSAgICAgKiBUaGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ldyBldmFsdWF0aW9uIHNldC4KLS0gICAgICovCi0tICAgIHhtbFhQYXRoRnJlZU9iamVjdChvYmopOwotLSAgICBjdHh0LT5jb250ZXh0LT5ub2RlID0gTlVMTDsKLS0gICAgY3R4dC0+Y29udGV4dC0+Y29udGV4dFNpemUgPSAtMTsKLS0gICAgY3R4dC0+Y29udGV4dC0+cHJveGltaXR5UG9zaXRpb24gPSAtMTsKLS0gICAgdmFsdWVQdXNoKGN0eHQsIHhtbFhQdHJXcmFwTG9jYXRpb25TZXQobmV3c2V0KSk7Ci0reG1sWFB0clJhbmdlVG9GdW5jdGlvbih4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgIGludCBuYXJncyBBVFRSSUJVVEVfVU5VU0VEKSB7Ci0rICAgIFhQX0VSUk9SKFhQQVRIX0VYUFJfRVJST1IpOwotIH0KLSAKLSAvKioKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctMDY2My5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTA2NjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMDgyNjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctMDY2My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLWxpYnhtbDI6IEZpeCBDVkUtMjAxNy0wNjYzCi0KLVtObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MDIyOAotCi12YWxpZDogRml4IHR5cGUgY29uZnVzaW9uIGluIHhtbFZhbGlkYXRlT25lTmFtZXNwYWNlCi0KLUNvbW1lbnQgb3V0IGNvZGUgdGhhdCBjYXN0cyB4bWxOc1B0ciB0byB4bWxBdHRyUHRyLiBJRCB0eXBlcwotb24gbmFtZXNwYWNlIGRlY2xhcmF0aW9ucyBtYWtlIG5vIHByYWN0aWNhbCBzZW5zZSBhbnl3YXkuCi0KLUZpeGVzIGJ1ZyA3ODAyMjgKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9OTJiOWU4YzhiMzc4NzA2ODU2NWExODIwYmE1NzVkMDQyZjllZWM2Nl0KLUNWRTogQ1ZFLTIwMTctMDY2MwotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS92YWxpZC5jIGIvdmFsaWQuYwotaW5kZXggMTlmODRiOC4uZTAzZDM1ZSAxMDA2NDQKLS0tLSBhL3ZhbGlkLmMKLSsrKyBiL3ZhbGlkLmMKLUBAIC00NjIxLDYgKzQ2MjEsMTIgQEAgeG1sTm9kZVB0ciBlbGVtLCBjb25zdCB4bWxDaGFyICpwcmVmaXgsIHhtbE5zUHRyIG5zLCBjb25zdCB4bWxDaGFyICp2YWx1ZSkgewotIAl9Ci0gICAgIH0KLSAKLSsgICAgLyoKLSsgICAgICogQ2FzdGluZyBucyB0byB4bWxBdHRyUHRyIGlzIHdyb25nLiBXZSdkIG5lZWQgc2VwYXJhdGUgZnVuY3Rpb25zCi0rICAgICAqIHhtbEFkZElEIGFuZCB4bWxBZGRSZWYgZm9yIG5hbWVzcGFjZSBkZWNsYXJhdGlvbnMsIGJ1dCBpdCBtYWtlcwotKyAgICAgKiBubyBwcmFjdGljYWwgc2Vuc2UgdG8gdXNlIElEIHR5cGVzIGFueXdheS4KLSsgICAgICovCi0rI2lmIDAKLSAgICAgLyogVmFsaWRpdHkgQ29uc3RyYWludDogSUQgdW5pcXVlbmVzcyAqLwotICAgICBpZiAoYXR0ckRlY2wtPmF0eXBlID09IFhNTF9BVFRSSUJVVEVfSUQpIHsKLSAgICAgICAgIGlmICh4bWxBZGRJRChjdHh0LCBkb2MsIHZhbHVlLCAoeG1sQXR0clB0cikgbnMpID09IE5VTEwpCi1AQCAtNDYzMiw2ICs0NjM4LDcgQEAgeG1sTm9kZVB0ciBlbGVtLCBjb25zdCB4bWxDaGFyICpwcmVmaXgsIHhtbE5zUHRyIG5zLCBjb25zdCB4bWxDaGFyICp2YWx1ZSkgewotICAgICAgICAgaWYgKHhtbEFkZFJlZihjdHh0LCBkb2MsIHZhbHVlLCAoeG1sQXR0clB0cikgbnMpID09IE5VTEwpCi0gCSAgICByZXQgPSAwOwotICAgICB9Ci0rI2VuZGlmCi0gCi0gICAgIC8qIFZhbGlkaXR5IENvbnN0cmFpbnQ6IE5vdGF0aW9uIEF0dHJpYnV0ZXMgKi8KLSAgICAgaWYgKGF0dHJEZWNsLT5hdHlwZSA9PSBYTUxfQVRUUklCVVRFX05PVEFUSU9OKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy01OTY5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctNTk2OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcxYjA1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy01OTY5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotbGlieG1sMi0yLjkuNDogRml4IENWRS0yMDE3LTU5NjkKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4NDIyCi0KLXZhbGlkOiBGaXggTlVMTCBwb2ludGVyIGRlcmVmIGluIHhtbER1bXBFbGVtZW50Q29udGVudAotCi1DYW4gb25seSBiZSB0cmlnZ2VyZWQgaW4gcmVjb3ZlcnkgbW9kZS4KLQotRml4ZXMgYnVnIDc1ODQyMgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IC0gW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPTk0NjkxZGM4ODRkMWE4YWRhMzlmMDczNDA4YjRiYjkyZmU3ZmU4ODJdCi1DVkU6IENWRS0yMDE3LTU5NjkKLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEvdmFsaWQuYyBiL3ZhbGlkLmMKLWluZGV4IDE5Zjg0YjguLjBhOGU1OGEgMTAwNjQ0Ci0tLS0gYS92YWxpZC5jCi0rKysgYi92YWxpZC5jCi1AQCAtMTE3MiwyOSArMTE3MiwzMyBAQCB4bWxEdW1wRWxlbWVudENvbnRlbnQoeG1sQnVmZmVyUHRyIGJ1ZiwgeG1sRWxlbWVudENvbnRlbnRQdHIgY29udGVudCwgaW50IGdsb2IpCi0gCSAgICB4bWxCdWZmZXJXcml0ZUNIQVIoYnVmLCBjb250ZW50LT5uYW1lKTsKLSAJICAgIGJyZWFrOwotIAljYXNlIFhNTF9FTEVNRU5UX0NPTlRFTlRfU0VROgotLQkgICAgaWYgKChjb250ZW50LT5jMS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX09SKSB8fAotLQkgICAgICAgIChjb250ZW50LT5jMS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX1NFUSkpCi0rCSAgICBpZiAoKGNvbnRlbnQtPmMxICE9IE5VTEwpICYmCi0rCSAgICAgICAgKChjb250ZW50LT5jMS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX09SKSB8fAotKwkgICAgICAgICAoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9TRVEpKSkKLSAJCXhtbER1bXBFbGVtZW50Q29udGVudChidWYsIGNvbnRlbnQtPmMxLCAxKTsKLSAJICAgIGVsc2UKLSAJCXhtbER1bXBFbGVtZW50Q29udGVudChidWYsIGNvbnRlbnQtPmMxLCAwKTsKLSAgICAgICAgICAgICB4bWxCdWZmZXJXcml0ZUNoYXIoYnVmLCAiICwgIik7Ci0tCSAgICBpZiAoKGNvbnRlbnQtPmMyLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfT1IpIHx8Ci0tCSAgICAgICAgKChjb250ZW50LT5jMi0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX1NFUSkgJiYKLS0JCSAoY29udGVudC0+YzItPm9jdXIgIT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PTkNFKSkpCi0rCSAgICBpZiAoKGNvbnRlbnQtPmMyICE9IE5VTEwpICYmCi0rCSAgICAgICAgKChjb250ZW50LT5jMi0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX09SKSB8fAotKwkgICAgICAgICAoKGNvbnRlbnQtPmMyLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfU0VRKSAmJgotKwkJICAoY29udGVudC0+YzItPm9jdXIgIT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PTkNFKSkpKQotIAkJeG1sRHVtcEVsZW1lbnRDb250ZW50KGJ1ZiwgY29udGVudC0+YzIsIDEpOwotIAkgICAgZWxzZQotIAkJeG1sRHVtcEVsZW1lbnRDb250ZW50KGJ1ZiwgY29udGVudC0+YzIsIDApOwotIAkgICAgYnJlYWs7Ci0gCWNhc2UgWE1MX0VMRU1FTlRfQ09OVEVOVF9PUjoKLS0JICAgIGlmICgoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PUikgfHwKLS0JICAgICAgICAoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9TRVEpKQotKwkgICAgaWYgKChjb250ZW50LT5jMSAhPSBOVUxMKSAmJgotKwkgICAgICAgICgoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PUikgfHwKLSsJICAgICAgICAgKGNvbnRlbnQtPmMxLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfU0VRKSkpCi0gCQl4bWxEdW1wRWxlbWVudENvbnRlbnQoYnVmLCBjb250ZW50LT5jMSwgMSk7Ci0gCSAgICBlbHNlCi0gCQl4bWxEdW1wRWxlbWVudENvbnRlbnQoYnVmLCBjb250ZW50LT5jMSwgMCk7Ci0gICAgICAgICAgICAgeG1sQnVmZmVyV3JpdGVDaGFyKGJ1ZiwgIiB8ICIpOwotLQkgICAgaWYgKChjb250ZW50LT5jMi0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX1NFUSkgfHwKLS0JICAgICAgICAoKGNvbnRlbnQtPmMyLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfT1IpICYmCi0tCQkgKGNvbnRlbnQtPmMyLT5vY3VyICE9IFhNTF9FTEVNRU5UX0NPTlRFTlRfT05DRSkpKQotKwkgICAgaWYgKChjb250ZW50LT5jMiAhPSBOVUxMKSAmJgotKwkgICAgICAgICgoY29udGVudC0+YzItPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9TRVEpIHx8Ci0rCSAgICAgICAgICgoY29udGVudC0+YzItPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PUikgJiYKLSsJCSAgKGNvbnRlbnQtPmMyLT5vY3VyICE9IFhNTF9FTEVNRU5UX0NPTlRFTlRfT05DRSkpKSkKLSAJCXhtbER1bXBFbGVtZW50Q29udGVudChidWYsIGNvbnRlbnQtPmMyLCAxKTsKLSAJICAgIGVsc2UKLSAJCXhtbER1bXBFbGVtZW50Q29udGVudChidWYsIGNvbnRlbnQtPmMyLCAwKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTg4NzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy04ODcyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjc3OWFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTg4NzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGQyZjg3M2E1NDFjNzJiMGY2N2UxNTU2MjgxOWJmOThiODg0YjMwYjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDE2OjA0OjQ5ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBDVkUtMjAxNy04ODcyCi0KLXRoaXMgbWFrZXMgeG1sSGFsdFBhcnNlciAiZW1wdHkiIHRoZSBidWZmZXIsIGFzIGl0IHJlc2V0cyBjdXIgYW5kIGF2YQotaWwgdG9vIGhlcmUuCi0KLXRoaXMgc2VlbXMgdG8gY3VyZSB0aGlzIHNwZWNpZmljIGlzc3VlLCBhbmQgYWxzbyBwYXNzZXMgdGhlIHRlc3RzdWl0ZQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+Ci0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUyMDAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTM1NTUyNyZhY3Rpb249ZGlmZl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBhcnNlci5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvcGFyc2VyLmMgYi9wYXJzZXIuYwotaW5kZXggOTUwNmVhZC4uNmMwN2ZmZCAxMDA2NDQKLS0tLSBhL3BhcnNlci5jCi0rKysgYi9wYXJzZXIuYwotQEAgLTEyNjY0LDYgKzEyNjY0LDEwIEBAIHhtbEhhbHRQYXJzZXIoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0KSB7Ci0gCX0KLSAJY3R4dC0+aW5wdXQtPmN1ciA9IEJBRF9DQVNUIiI7Ci0gCWN0eHQtPmlucHV0LT5iYXNlID0gY3R4dC0+aW5wdXQtPmN1cjsKLSsJaWYgKGN0eHQtPmlucHV0LT5idWYpIHsKLSsJCXhtbEJ1ZkVtcHR5IChjdHh0LT5pbnB1dC0+YnVmLT5idWZmZXIpOwotKwl9IGVsc2UKLSsJCWN0eHQtPmlucHV0LT5sZW5ndGggPSAwOwotICAgICB9Ci0gfQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy05MDQ3X0NWRS0yMDE3LTkwNDgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy05MDQ3X0NWRS0yMDE3LTkwNDgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMDM0NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctOTA0N19DVkUtMjAxNy05MDQ4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLWxpYnhtbDItMi45LjQ6IEZpeCBDVkUtMjAxNy05MDQ3IGFuZCBDVkUtMjAxNy05MDQ4Ci0KLVtObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MTMzMwotIC0tIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODE3MDEKLQotdmFsaWQ6IEZpeCBidWZmZXIgc2l6ZSBjaGVja3MgaW4geG1sU25wcmludGZFbGVtZW50Q29udGVudAotCi14bWxTbnByaW50ZkVsZW1lbnRDb250ZW50IGZhaWxlZCB0byBjb3JyZWN0bHkgY2hlY2sgdGhlIGF2YWlsYWJsZQotYnVmZmVyIHNwYWNlIGluIHR3byBsb2NhdGlvbnMuCi0KLUZpeGVzIGJ1ZyA3ODEzMzMgYW5kIGJ1ZyA3ODE3MDEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9OTMyY2M5ODk2YWI0MTQ3NWQ0YWE0MjljMjdkOWFmZDE3NTk1OWQ3NF0KLUNWRTogQ1ZFLTIwMTctOTA0NyBDVkUtMjAxNy05MDQ4Ci1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLQotZGlmZiAtLWdpdCBhL3Jlc3VsdC92YWxpZC83ODEzMzMueG1sIGIvcmVzdWx0L3ZhbGlkLzc4MTMzMy54bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wMWJhZjExCi0tLS0gL2Rldi9udWxsCi0rKysgYi9yZXN1bHQvdmFsaWQvNzgxMzMzLnhtbAotQEAgLTAsMCArMSw1IEBACi0rPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci0rPCFET0NUWVBFIGEgWwotKzwhRUxFTUVOVCBhIChwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwOmxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsKT4KLStdPgotKzxhLz4KLWRpZmYgLS1naXQgYS9yZXN1bHQvdmFsaWQvNzgxMzMzLnhtbC5lcnIgYi9yZXN1bHQvdmFsaWQvNzgxMzMzLnhtbC5lcnIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yMTc2MjAwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9yZXN1bHQvdmFsaWQvNzgxMzMzLnhtbC5lcnIKLUBAIC0wLDAgKzEsMyBAQAotKy4vdGVzdC92YWxpZC83ODEzMzMueG1sOjQ6IGVsZW1lbnQgYTogdmFsaWRpdHkgZXJyb3IgOiBFbGVtZW50IGEgY29udGVudCBkb2VzIG5vdCBmb2xsb3cgdGhlIERURCwgZXhwZWN0aW5nICggLi4uLCBnb3QgCi0rPGEvPgotKyAgICBeCi1kaWZmIC0tZ2l0IGEvcmVzdWx0L3ZhbGlkLzc4MTMzMy54bWwuZXJyLnJkciBiL3Jlc3VsdC92YWxpZC83ODEzMzMueG1sLmVyci5yZHIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xMTk1YTA0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9yZXN1bHQvdmFsaWQvNzgxMzMzLnhtbC5lcnIucmRyCi1AQCAtMCwwICsxLDYgQEAKLSsuL3Rlc3QvdmFsaWQvNzgxMzMzLnhtbDo0OiBlbGVtZW50IGE6IHZhbGlkaXR5IGVycm9yIDogRWxlbWVudCBhIGNvbnRlbnQgZG9lcyBub3QgZm9sbG93IHRoZSBEVEQsIGV4cGVjdGluZyAoIC4uLiwgZ290IAotKzxhLz4KLSsgICAgXgotKy4vdGVzdC92YWxpZC83ODEzMzMueG1sOjU6IGVsZW1lbnQgYTogdmFsaWRpdHkgZXJyb3IgOiBFbGVtZW50IGEgY29udGVudCBkb2VzIG5vdCBmb2xsb3cgdGhlIERURCwgRXhwZWN0aW5nIG1vcmUgY2hpbGQKLSsKLSteCi1kaWZmIC0tZ2l0IGEvdGVzdC92YWxpZC83ODEzMzMueG1sIGIvdGVzdC92YWxpZC83ODEzMzMueG1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmNlYWM5YwotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdC92YWxpZC83ODEzMzMueG1sCi1AQCAtMCwwICsxLDQgQEAKLSs8IURPQ1RZUEUgYSBbCi0rICAgIDwhRUxFTUVOVCBhIChwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwOmxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsKT4KLStdPgotKzxhLz4KLWRpZmYgLS1naXQgYS92YWxpZC5jIGIvdmFsaWQuYwotaW5kZXggMTlmODRiOC4uYWFhMzBmNiAxMDA2NDQKLS0tLSBhL3ZhbGlkLmMKLSsrKyBiL3ZhbGlkLmMKLUBAIC0xMjYyLDIyICsxMjYyLDIzIEBAIHhtbFNucHJpbnRmRWxlbWVudENvbnRlbnQoY2hhciAqYnVmLCBpbnQgc2l6ZSwgeG1sRWxlbWVudENvbnRlbnRQdHIgY29udGVudCwgaW50Ci0gICAgICAgICBjYXNlIFhNTF9FTEVNRU5UX0NPTlRFTlRfUENEQVRBOgotICAgICAgICAgICAgIHN0cmNhdChidWYsICIjUENEQVRBIik7Ci0gCSAgICBicmVhazsKLS0JY2FzZSBYTUxfRUxFTUVOVF9DT05URU5UX0VMRU1FTlQ6Ci0rCWNhc2UgWE1MX0VMRU1FTlRfQ09OVEVOVF9FTEVNRU5UOiB7Ci0rICAgICAgICAgICAgaW50IHFuYW1lTGVuID0geG1sU3RybGVuKGNvbnRlbnQtPm5hbWUpOwotKwotKwkgICAgaWYgKGNvbnRlbnQtPnByZWZpeCAhPSBOVUxMKQotKyAgICAgICAgICAgICAgICBxbmFtZUxlbiArPSB4bWxTdHJsZW4oY29udGVudC0+cHJlZml4KSArIDE7Ci0rCSAgICBpZiAoc2l6ZSAtIGxlbiA8IHFuYW1lTGVuICsgMTApIHsKLSsJCXN0cmNhdChidWYsICIgLi4uIik7Ci0rCQlyZXR1cm47Ci0rCSAgICB9Ci0gCSAgICBpZiAoY29udGVudC0+cHJlZml4ICE9IE5VTEwpIHsKLS0JCWlmIChzaXplIC0gbGVuIDwgeG1sU3RybGVuKGNvbnRlbnQtPnByZWZpeCkgKyAxMCkgewotLQkJICAgIHN0cmNhdChidWYsICIgLi4uIik7Ci0tCQkgICAgcmV0dXJuOwotLQkJfQotIAkJc3RyY2F0KGJ1ZiwgKGNoYXIgKikgY29udGVudC0+cHJlZml4KTsKLSAJCXN0cmNhdChidWYsICI6Iik7Ci0gCSAgICB9Ci0tCSAgICBpZiAoc2l6ZSAtIGxlbiA8IHhtbFN0cmxlbihjb250ZW50LT5uYW1lKSArIDEwKSB7Ci0tCQlzdHJjYXQoYnVmLCAiIC4uLiIpOwotLQkJcmV0dXJuOwotLQkgICAgfQotIAkgICAgaWYgKGNvbnRlbnQtPm5hbWUgIT0gTlVMTCkKLSAJCXN0cmNhdChidWYsIChjaGFyICopIGNvbnRlbnQtPm5hbWUpOwotIAkgICAgYnJlYWs7Ci0rCX0KLSAJY2FzZSBYTUxfRUxFTUVOVF9DT05URU5UX1NFUToKLSAJICAgIGlmICgoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PUikgfHwKLSAJICAgICAgICAoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9TRVEpKQotQEAgLTEzMTksNiArMTMyMCw3IEBAIHhtbFNucHJpbnRmRWxlbWVudENvbnRlbnQoY2hhciAqYnVmLCBpbnQgc2l6ZSwgeG1sRWxlbWVudENvbnRlbnRQdHIgY29udGVudCwgaW50Ci0gCQl4bWxTbnByaW50ZkVsZW1lbnRDb250ZW50KGJ1Ziwgc2l6ZSwgY29udGVudC0+YzIsIDApOwotIAkgICAgYnJlYWs7Ci0gICAgIH0KLSsgICAgaWYgKHNpemUgLSBzdHJsZW4oYnVmKSA8PSAyKSByZXR1cm47Ci0gICAgIGlmIChlbmdsb2IpCi0gICAgICAgICBzdHJjYXQoYnVmLCAiKSIpOwotICAgICBzd2l0Y2ggKGNvbnRlbnQtPm9jdXIpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTkwNDlfQ1ZFLTIwMTctOTA1MC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTkwNDlfQ1ZFLTIwMTctOTA1MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkxMDc1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy05MDQ5X0NWRS0yMDE3LTkwNTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOTEgKzAsMCBAQAotbGlieG1sMi0yLjkuNDogRml4IENWRS0yMDE3LTkwNDkgYW5kIENWRS0yMDE3LTkwNTAKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgxMjA1Ci0gLS0gaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MTM2MQotCi1wYXJzZXI6IEZpeCBoYW5kbGluZyBvZiBwYXJhbWV0ZXItZW50aXR5IHJlZmVyZW5jZXMKLQotVGhlcmUgd2VyZSB0d28gYnVncyB3aGVyZSBwYXJhbWV0ZXItZW50aXR5IHJlZmVyZW5jZXMgY291bGQgbGVhZCB0byBhbgotdW5leHBlY3RlZCBjaGFuZ2Ugb2YgdGhlIGlucHV0IGJ1ZmZlciBpbiB4bWxQYXJzZU5hbWVDb21wbGV4IGFuZAoteG1sRGljdExvb2t1cCBiZWluZyBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHBvaW50ZXIuCi0KLVBlcmNlbnQgc2lnbiBpbiBEVEQgTmFtZXMKLT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVGhlIE5FWFRMIG1hY3JvIHVzZWQgdG8gY2FsbCB4bWxQYXJzZXJIYW5kbGVQRVJlZmVyZW5jZS4gV2hlbiBwYXJzaW5nCi0iY29tcGxleCIgbmFtZXMgaW5zaWRlIHRoZSBEVEQsIHRoaXMgY291bGQgcmVzdWx0IGluIGVudGl0eSBleHBhbnNpb24KLXdoaWNoIGNyZWF0ZWQgYSBuZXcgaW5wdXQgYnVmZmVyLiBUaGUgZml4IGlzIHRvIHNpbXBseSByZW1vdmUgdGhlIGNhbGwKLXRvIHhtbFBhcnNlckhhbmRsZVBFUmVmZXJlbmNlIGZyb20gdGhlIE5FWFRMIG1hY3JvLiBUaGlzIGlzIHNhZmUgYmVjYXVzZQotbm8gdXNlcnMgb2YgdGhlIG1hY3JvIHJlcXVpcmUgZXhwYW5zaW9uIG9mIHBhcmFtZXRlciBlbnRpdGllcy4KLQotLSB4bWxQYXJzZU5hbWVDb21wbGV4Ci0tIHhtbFBhcnNlTkNOYW1lQ29tcGxleAotLSB4bWxQYXJzZU5tdG9rZW4KLQotVGhlIHBlcmNlbnQgc2lnbiBpcyBub3QgYWxsb3dlZCBpbiBuYW1lcywgd2hpY2ggYXJlIGdyYW1tYXRpY2FsIHRva2Vucy4KLQotLSB4bWxQYXJzZUVudGl0eVZhbHVlCi0KLVBhcmFtZXRlci1lbnRpdHkgcmVmZXJlbmNlcyBpbiBlbnRpdHkgdmFsdWVzIGFyZSBleHBhbmRlZCBidXQgdGhpcwotaGFwcGVucyBpbiBhIHNlcGFyYXRlIHN0ZXAgaW4gdGhpcyBmdW5jdGlvbi4KLQotLSB4bWxQYXJzZVN5c3RlbUxpdGVyYWwKLQotUGFyYW1ldGVyLWVudGl0eSByZWZlcmVuY2VzIGFyZSBpZ25vcmVkIGluIHRoZSBzeXN0ZW0gbGl0ZXJhbC4KLQotLSB4bWxQYXJzZUF0dFZhbHVlQ29tcGxleAotLSB4bWxQYXJzZUNoYXJEYXRhQ29tcGxleAotLSB4bWxQYXJzZUNvbW1lbnRDb21wbGV4Ci0tIHhtbFBhcnNlUEkKLS0geG1sUGFyc2VDRFNlY3QKLQotUGFyYW1ldGVyLWVudGl0eSByZWZlcmVuY2VzIGFyZSBpZ25vcmVkIG91dHNpZGUgdGhlIERURC4KLQotLSB4bWxMb2FkRW50aXR5Q29udGVudAotCi1UaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGZyb20geG1sU3RyaW5nTGVuRGVjb2RlRW50aXRpZXMgYW5kCi1lbnRpdGllcyBhcmUgcmVwbGFjZWQgaW4gYSBzZXBhcmF0ZSBzdGVwIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBmdW5jdGlvbgotY2FsbC4KLQotVGhpcyBidWcgY291bGQgYWxzbyBiZSB0cmlnZ2VyZWQgd2l0aCBhbiBpbnRlcm5hbCBzdWJzZXQgYW5kIGRvdWJsZQotZW50aXR5IGV4cGFuc2lvbi4KLQotVGhpcyBmaXhlcyBidWcgNzY2OTU2IGluaXRpYWxseSByZXBvcnRlZCBieSBXZWkgTGVpIGFuZCBpbmRlcGVuZGVudGx5IGJ5Ci1DaHJvbWl1bSdzIENsdXN0ZXJGdXp6LCBIYW5ubyBCw7ZjaywgYW5kIE1hcmNvIEdyYXNzaS4gVGhhbmtzIHRvIGV2ZXJ5b25lCi1pbnZvbHZlZC4KLQoteG1sUGFyc2VOYW1lQ29tcGxleCB3aXRoIFhNTF9QQVJTRV9PTEQxMAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1XaGVuIHBhcnNpbmcgTmFtZXMgaW5zaWRlIGFuIGV4cGFuZGVkIHBhcmFtZXRlciBlbnRpdHkgd2l0aCB0aGUKLVhNTF9QQVJTRV9PTEQxMCBvcHRpb24sIHhtbFBhcnNlTmFtZUNvbXBsZXggd291bGQgY2FsbCB4bWxHUk9XIHZpYSB0aGUKLUdST1cgbWFjcm8gaWYgdGhlIGlucHV0IGJ1ZmZlciB3YXMgZXhoYXVzdGVkLiBBdCB0aGUgZW5kIG9mIHRoZQotcGFyYW1ldGVyIGVudGl0eSdzIHJlcGxhY2VtZW50IHRleHQsIHRoaXMgZnVuY3Rpb24gd291bGQgdGhlbiBjYWxsCi14bWxQb3BJbnB1dCB3aGljaCBpbnZhbGlkYXRlZCB0aGUgaW5wdXQgYnVmZmVyLgotCi1UaGVyZSBzaG91bGQgYmUgbm8gbmVlZCB0byBpbnZva2UgR1JPVyBpbiB0aGlzIHNpdHVhdGlvbiBiZWNhdXNlIHRoZQotYnVmZmVyIGlzIGdyb3duIHBlcmlvZGljYWxseSBldmVyeSBYTUxfUEFSU0VSX0NIVU5LX1NJWkUgY2hhcmFjdGVycyBhbmQsCi1hdCBsZWFzdCBmb3IgVVRGLTgsIGluIHhtbEN1cnJlbnRDaGFyLiBUaGlzIGFsc28gbWF0Y2hlcyB0aGUgY29kZSBwYXRoCi1leGVjdXRlZCB3aGVuIFhNTF9QQVJTRV9PTEQxMCBpcyBub3Qgc2V0LgotCi1UaGlzIGZpeGVzIGJ1Z3MgNzgxMjA1IChDVkUtMjAxNy05MDQ5KSBhbmQgNzgxMzYxIChDVkUtMjAxNy05MDUwKS4KLVRoYW5rcyB0byBNYXJjZWwgQsO2aG1lIGFuZCBUaHVhbiBQaGFtIGZvciB0aGUgcmVwb3J0LgotCi1BZGRpdGlvbmFsIGhhcmRlbmluZwotPT09PT09PT09PT09PT09PT09PT0KLQotQSBzZXBhcmF0ZSBjaGVjayB3YXMgYWRkZWQgaW4geG1sUGFyc2VOYW1lQ29tcGxleCB0byB2YWxpZGF0ZSB0aGUKLWJ1ZmZlciBzaXplLgotCi1GaXhlcyBidWcgNzgxMjA1IGFuZCBidWcgNzgxMzYxCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPTkzMmNjOTg5NmFiNDE0NzVkNGFhNDI5YzI3ZDlhZmQxNzU5NTlkNzRdCi1DVkU6IENWRS0yMDE3LTkwNDkgQ1ZFLTIwMTctOTA1MAotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA5Zjk4OGIwLi5kYWIxNWE0IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNDIyLDYgKzQyMiwyNCBAQCBFcnJ0ZXN0cyA6IHhtbGxpbnQkKEVYRUVYVCkKLSAJICAgICAgaWYgWyAtbiAiJCRsb2ciIF0gOyB0aGVuIGVjaG8gJCRuYW1lIHJlc3VsdCA7IGVjaG8gJCRsb2cgOyBmaSA7IFwKLSAJICAgICAgcm0gcmVzdWx0LiQkbmFtZSBlcnJvci4kJG5hbWUgOyBcCi0gCSAgZmkgOyBmaSA7IGRvbmUpCi0rCUBlY2hvICIjIyBFcnJvciBjYXNlcyByZWdyZXNzaW9uIHRlc3RzIChvbGQgMS4wKSIKLSsJLUAoZm9yIGkgaW4gJChzcmNkaXIpL3Rlc3QvZXJyb3JzMTAvKi54bWwgOyBkbyBcCi0rCSAgbmFtZT1gYmFzZW5hbWUgJCRpYDsgXAotKwkgIGlmIFsgISAtZCAkJGkgXSA7IHRoZW4gXAotKwkgIGlmIFsgISAtZiAkKHNyY2RpcikvcmVzdWx0L2Vycm9yczEwLyQkbmFtZSBdIDsgdGhlbiBcCi0rCSAgICAgIGVjaG8gTmV3IHRlc3QgZmlsZSAkJG5hbWUgOyBcCi0rCSAgICAgICQoQ0hFQ0tFUikgJCh0b3BfYnVpbGRkaXIpL3htbGxpbnQgLS1vbGR4bWwxMCAkJGkgXAotKwkgICAgICAgICAyPiAkKHNyY2RpcikvcmVzdWx0L2Vycm9yczEwLyQkbmFtZS5lcnIgXAotKwkJID4gJChzcmNkaXIpL3Jlc3VsdC9lcnJvcnMxMC8kJG5hbWUgOyBcCi0rCSAgICAgIGdyZXAgIk1PUlkgQUxMTyIgLm1lbWR1bXAgIHwgZ3JlcCAtdiAiTUVNT1JZIEFMTE9DQVRFRCA6IDAiOyBcCi0rCSAgZWxzZSBcCi0rCSAgICAgIGxvZz1gJChDSEVDS0VSKSAkKHRvcF9idWlsZGRpcikveG1sbGludCAtLW9sZHhtbDEwICQkaSAyPiBlcnJvci4kJG5hbWUgPiByZXN1bHQuJCRuYW1lIDsgXAotKwkgICAgICBncmVwICJNT1JZIEFMTE8iIC5tZW1kdW1wICB8IGdyZXAgLXYgIk1FTU9SWSBBTExPQ0FURUQgOiAwIjsgXAotKwkgICAgICBkaWZmICQoc3JjZGlyKS9yZXN1bHQvZXJyb3JzMTAvJCRuYW1lIHJlc3VsdC4kJG5hbWUgOyBcCi0rCSAgICAgIGRpZmYgJChzcmNkaXIpL3Jlc3VsdC9lcnJvcnMxMC8kJG5hbWUuZXJyIGVycm9yLiQkbmFtZWAgOyBcCi0rCSAgICAgIGlmIFsgLW4gIiQkbG9nIiBdIDsgdGhlbiBlY2hvICQkbmFtZSByZXN1bHQgOyBlY2hvICIkJGxvZyIgOyBmaSA7IFwKLSsJICAgICAgcm0gcmVzdWx0LiQkbmFtZSBlcnJvci4kJG5hbWUgOyBcCi0rCSAgZmkgOyBmaSA7IGRvbmUpCi0gCUBlY2hvICIjIyBFcnJvciBjYXNlcyBzdHJlYW0gcmVncmVzc2lvbiB0ZXN0cyIKLSAJLUAoZm9yIGkgaW4gJChzcmNkaXIpL3Rlc3QvZXJyb3JzLyoueG1sIDsgZG8gXAotIAkgIG5hbWU9YGJhc2VuYW1lICQkaWA7IFwKLWRpZmYgLS1naXQgYS9wYXJzZXIuYyBiL3BhcnNlci5jCi1pbmRleCA2MDlhMjcwLi44ZTExYzEyIDEwMDY0NAotLS0tIGEvcGFyc2VyLmMKLSsrKyBiL3BhcnNlci5jCi1AQCAtMjExNSw3ICsyMTE1LDYgQEAgc3RhdGljIHZvaWQgeG1sR1JPVyAoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0KSB7Ci0gCWN0eHQtPmlucHV0LT5saW5lKys7IGN0eHQtPmlucHV0LT5jb2wgPSAxOwkJCVwKLSAgICAgfSBlbHNlIGN0eHQtPmlucHV0LT5jb2wrKzsJCQkJCQlcCi0gICAgIGN0eHQtPmlucHV0LT5jdXIgKz0gbDsJCQkJXAotLSAgICBpZiAoKmN0eHQtPmlucHV0LT5jdXIgPT0gJyUnKSB4bWxQYXJzZXJIYW5kbGVQRVJlZmVyZW5jZShjdHh0KTsJXAotICAgfSB3aGlsZSAoMCkKLSAKLSAjZGVmaW5lIENVUl9DSEFSKGwpIHhtbEN1cnJlbnRDaGFyKGN0eHQsICZsKQotQEAgLTM0MDYsMTMgKzM0MDUsNiBAQCB4bWxQYXJzZU5hbWVDb21wbGV4KHhtbFBhcnNlckN0eHRQdHIgY3R4dCkgewotIAkgICAgbGVuICs9IGw7Ci0gCSAgICBORVhUTChsKTsKLSAJICAgIGMgPSBDVVJfQ0hBUihsKTsKLS0JICAgIGlmIChjID09IDApIHsKLS0JCWNvdW50ID0gMDsKLS0JCUdST1c7Ci0tICAgICAgICAgICAgICAgIGlmIChjdHh0LT5pbnN0YXRlID09IFhNTF9QQVJTRVJfRU9GKQotLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuKE5VTEwpOwotLQkJYyA9IENVUl9DSEFSKGwpOwotLQkgICAgfQotIAl9Ci0gICAgIH0KLSAgICAgaWYgKChsZW4gPiBYTUxfTUFYX05BTUVfTEVOR1RIKSAmJgotQEAgLTM0MjAsNiArMzQxMiwxNiBAQCB4bWxQYXJzZU5hbWVDb21wbGV4KHhtbFBhcnNlckN0eHRQdHIgY3R4dCkgewotICAgICAgICAgeG1sRmF0YWxFcnIoY3R4dCwgWE1MX0VSUl9OQU1FX1RPT19MT05HLCAiTmFtZSIpOwotICAgICAgICAgcmV0dXJuKE5VTEwpOwotICAgICB9Ci0rICAgIGlmIChjdHh0LT5pbnB1dC0+Y3VyIC0gY3R4dC0+aW5wdXQtPmJhc2UgPCBsZW4pIHsKLSsgICAgICAgIC8qCi0rICAgICAgICAgKiBUaGVyZSB3ZXJlIGEgY291cGxlIG9mIGJ1Z3Mgd2hlcmUgUEVSZWZzIGxlYWQgdG8gdG8gYSBjaGFuZ2UKLSsgICAgICAgICAqIG9mIHRoZSBidWZmZXIuIENoZWNrIHRoZSBidWZmZXIgc2l6ZSB0byBhdm9pZCBwYXNzaW5nIGFuIGludmFsaWQKLSsgICAgICAgICAqIHBvaW50ZXIgdG8geG1sRGljdExvb2t1cC4KLSsgICAgICAgICAqLwotKyAgICAgICAgeG1sRmF0YWxFcnIoY3R4dCwgWE1MX0VSUl9JTlRFUk5BTF9FUlJPUiwKLSsgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGNoYW5nZSBvZiBpbnB1dCBidWZmZXIiKTsKLSsgICAgICAgIHJldHVybiAoTlVMTCk7Ci0rICAgIH0KLSAgICAgaWYgKCgqY3R4dC0+aW5wdXQtPmN1ciA9PSAnXG4nKSAmJiAoY3R4dC0+aW5wdXQtPmN1clstMV0gPT0gJ1xyJykpCi0gICAgICAgICByZXR1cm4oeG1sRGljdExvb2t1cChjdHh0LT5kaWN0LCBjdHh0LT5pbnB1dC0+Y3VyIC0gKGxlbiArIDEpLCBsZW4pKTsKLSAgICAgcmV0dXJuKHhtbERpY3RMb29rdXAoY3R4dC0+ZGljdCwgY3R4dC0+aW5wdXQtPmN1ciAtIGxlbiwgbGVuKSk7Ci1kaWZmIC0tZ2l0IGEvcmVzdWx0L2Vycm9yczEwLzc4MTIwNS54bWwgYi9yZXN1bHQvZXJyb3JzMTAvNzgxMjA1LnhtbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLWRpZmYgLS1naXQgYS9yZXN1bHQvZXJyb3JzMTAvNzgxMjA1LnhtbC5lcnIgYi9yZXN1bHQvZXJyb3JzMTAvNzgxMjA1LnhtbC5lcnIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kYTE1YzNmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9yZXN1bHQvZXJyb3JzMTAvNzgxMjA1LnhtbC5lcnIKLUBAIC0wLDAgKzEsMjEgQEAKLStFbnRpdHk6IGxpbmUgMTogcGFyc2VyIGVycm9yIDogaW50ZXJuYWwgZXJyb3I6IHhtbFBhcnNlSW50ZXJuYWxTdWJzZXQ6IGVycm9yIGRldGVjdGVkIGluIE1hcmt1cCBkZWNsYXJhdGlvbgotKwotKyAlYTsgCi0rICAgIF4KLStFbnRpdHk6IGxpbmUgMTogCi0rPDowMDAwCi0rXgotK0VudGl0eTogbGluZSAxOiBwYXJzZXIgZXJyb3IgOiBET0NUWVBFIGltcHJvcGVybHkgdGVybWluYXRlZAotKyAlYTsgCi0rICAgIF4KLStFbnRpdHk6IGxpbmUgMTogCi0rPDowMDAwCi0rXgotK25hbWVzcGFjZSBlcnJvciA6IEZhaWxlZCB0byBwYXJzZSBRTmFtZSAnOjAwMDAnCi0rICVhOyAKLSsgICAgXgotKzw6MDAwMAotKyAgICAgIF4KLSsuL3Rlc3QvZXJyb3JzMTAvNzgxMjA1LnhtbDo0OiBwYXJzZXIgZXJyb3IgOiBDb3VsZG4ndCBmaW5kIGVuZCBvZiBTdGFydCBUYWcgOjAwMDAgbGluZSAxCi0rCi0rXgotZGlmZiAtLWdpdCBhL3Jlc3VsdC9lcnJvcnMxMC83ODEzNjEueG1sIGIvcmVzdWx0L2Vycm9yczEwLzc4MTM2MS54bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci1kaWZmIC0tZ2l0IGEvcmVzdWx0L2Vycm9yczEwLzc4MTM2MS54bWwuZXJyIGIvcmVzdWx0L2Vycm9yczEwLzc4MTM2MS54bWwuZXJyCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjU1ZjQxYQotLS0tIC9kZXYvbnVsbAotKysrIGIvcmVzdWx0L2Vycm9yczEwLzc4MTM2MS54bWwuZXJyCi1AQCAtMCwwICsxLDEzIEBACi0rLi90ZXN0L2Vycm9yczEwLzc4MTM2MS54bWw6NDogcGFyc2VyIGVycm9yIDogeG1sUGFyc2VFbGVtZW50RGVjbDogJ0VNUFRZJywgJ0FOWScgb3IgJygnIGV4cGVjdGVkCi0rCi0rXgotKy4vdGVzdC9lcnJvcnMxMC83ODEzNjEueG1sOjQ6IHBhcnNlciBlcnJvciA6IGludGVybmFsIGVycm9yOiB4bWxQYXJzZUludGVybmFsU3Vic2V0OiBlcnJvciBkZXRlY3RlZCBpbiBNYXJrdXAgZGVjbGFyYXRpb24KLSsKLSsKLSteCi0rLi90ZXN0L2Vycm9yczEwLzc4MTM2MS54bWw6NDogcGFyc2VyIGVycm9yIDogRE9DVFlQRSBpbXByb3Blcmx5IHRlcm1pbmF0ZWQKLSsKLSteCi0rLi90ZXN0L2Vycm9yczEwLzc4MTM2MS54bWw6NDogcGFyc2VyIGVycm9yIDogU3RhcnQgdGFnIGV4cGVjdGVkLCAnPCcgbm90IGZvdW5kCi0rCi0rXgotZGlmZiAtLWdpdCBhL3Jlc3VsdC92YWxpZC83NjY5NTYueG1sIGIvcmVzdWx0L3ZhbGlkLzc2Njk1Ni54bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci1kaWZmIC0tZ2l0IGEvcmVzdWx0L3ZhbGlkLzc2Njk1Ni54bWwuZXJyIGIvcmVzdWx0L3ZhbGlkLzc2Njk1Ni54bWwuZXJyCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMzRiMWRhZQotLS0tIC9kZXYvbnVsbAotKysrIGIvcmVzdWx0L3ZhbGlkLzc2Njk1Ni54bWwuZXJyCi1AQCAtMCwwICsxLDkgQEAKLSt0ZXN0L3ZhbGlkL2R0ZHMvNzY2OTU2LmR0ZDoyOiBwYXJzZXIgZXJyb3IgOiBQRVJlZmVyZW5jZTogZXhwZWN0aW5nICc7JwotKyXDpCVlbnQ7Ci0rICAgXgotK0VudGl0eTogbGluZSAxOiBwYXJzZXIgZXJyb3IgOiBDb250ZW50IGVycm9yIGluIHRoZSBleHRlcm5hbCBzdWJzZXQKLSsgJWVudDsgCi0rICAgICAgXgotK0VudGl0eTogbGluZSAxOiAKLSt2YWx1ZQotK14KLWRpZmYgLS1naXQgYS9yZXN1bHQvdmFsaWQvNzY2OTU2LnhtbC5lcnIucmRyIGIvcmVzdWx0L3ZhbGlkLzc2Njk1Ni54bWwuZXJyLnJkcgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjc3NjAzNDYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Jlc3VsdC92YWxpZC83NjY5NTYueG1sLmVyci5yZHIKLUBAIC0wLDAgKzEsMTAgQEAKLSt0ZXN0L3ZhbGlkL2R0ZHMvNzY2OTU2LmR0ZDoyOiBwYXJzZXIgZXJyb3IgOiBQRVJlZmVyZW5jZTogZXhwZWN0aW5nICc7JwotKyXDpCVlbnQ7Ci0rICAgXgotK0VudGl0eTogbGluZSAxOiBwYXJzZXIgZXJyb3IgOiBDb250ZW50IGVycm9yIGluIHRoZSBleHRlcm5hbCBzdWJzZXQKLSsgJWVudDsgCi0rICAgICAgXgotK0VudGl0eTogbGluZSAxOiAKLSt2YWx1ZQotK14KLSsuL3Rlc3QvdmFsaWQvNzY2OTU2LnhtbCA6IGZhaWxlZCB0byBwYXJzZQotZGlmZiAtLWdpdCBhL3J1bnRlc3QuYyBiL3J1bnRlc3QuYwotaW5kZXggYmI3NGQyYS4uNjNlOGMyMCAxMDA2NDQKLS0tLSBhL3J1bnRlc3QuYwotKysrIGIvcnVudGVzdC5jCi1AQCAtNDIwMiw2ICs0MjAyLDkgQEAgdGVzdERlc2MgdGVzdERlc2NyaXB0aW9uc1tdID0gewotICAgICB7ICJFcnJvciBjYXNlcyByZWdyZXNzaW9uIHRlc3RzIiwKLSAgICAgICBlcnJQYXJzZVRlc3QsICIuL3Rlc3QvZXJyb3JzLyoueG1sIiwgInJlc3VsdC9lcnJvcnMvIiwgIiIsICIuZXJyIiwKLSAgICAgICAwIH0sCi0rICAgIHsgIkVycm9yIGNhc2VzIHJlZ3Jlc3Npb24gdGVzdHMgKG9sZCAxLjApIiwKLSsgICAgICBlcnJQYXJzZVRlc3QsICIuL3Rlc3QvZXJyb3JzMTAvKi54bWwiLCAicmVzdWx0L2Vycm9yczEwLyIsICIiLCAiLmVyciIsCi0rICAgICAgWE1MX1BBUlNFX09MRDEwIH0sCi0gI2lmZGVmIExJQlhNTF9SRUFERVJfRU5BQkxFRAotICAgICB7ICJFcnJvciBjYXNlcyBzdHJlYW0gcmVncmVzc2lvbiB0ZXN0cyIsCi0gICAgICAgc3RyZWFtUGFyc2VUZXN0LCAiLi90ZXN0L2Vycm9ycy8qLnhtbCIsICJyZXN1bHQvZXJyb3JzLyIsIE5VTEwsICIuc3RyIiwKLWRpZmYgLS1naXQgYS90ZXN0L2Vycm9yczEwLzc4MTIwNS54bWwgYi90ZXN0L2Vycm9yczEwLzc4MTIwNS54bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kOWU5ZTgzCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0L2Vycm9yczEwLzc4MTIwNS54bWwKLUBAIC0wLDAgKzEsMyBAQAotKzwhRE9DVFlQRSBEIFsKLSsgIDwhRU5USVRZICUgYSAiPDowMDAwIj4KLSsgICVhOwotZGlmZiAtLWdpdCBhL3Rlc3QvZXJyb3JzMTAvNzgxMzYxLnhtbCBiL3Rlc3QvZXJyb3JzMTAvNzgxMzYxLnhtbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY3NDc2YmMKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3QvZXJyb3JzMTAvNzgxMzYxLnhtbAotQEAgLTAsMCArMSwzIEBACi0rPCFET0NUWVBFIGRvYyBbCi0rICA8IUVOVElUWSAlIGVsZW0gIjwhRUxFTUVOVCBlMDAwMDAwMDAwMCI+Ci0rICAlZWxlbTsKLWRpZmYgLS1naXQgYS90ZXN0L3ZhbGlkLzc2Njk1Ni54bWwgYi90ZXN0L3ZhbGlkLzc2Njk1Ni54bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xOWE5NWEwCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0L3ZhbGlkLzc2Njk1Ni54bWwKLUBAIC0wLDAgKzEsMiBAQAotKzwhRE9DVFlQRSB0ZXN0IFNZU1RFTSAiZHRkcy83NjY5NTYuZHRkIj4KLSs8dGVzdC8+Ci1kaWZmIC0tZ2l0IGEvdGVzdC92YWxpZC9kdGRzLzc2Njk1Ni5kdGQgYi90ZXN0L3ZhbGlkL2R0ZHMvNzY2OTU2LmR0ZAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmRkZGRlNjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3QvdmFsaWQvZHRkcy83NjY5NTYuZHRkCi1AQCAtMCwwICsxLDIgQEAKLSs8IUVOVElUWSAlIGVudCAidmFsdWUiPgotKyXDpCVlbnQ7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfTlVMTF9wb2ludGVyX2RlcmVmcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjBlMzJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotbGlieG1sMi0yLjkuNDogRml4IG1vcmUgTlVMTCBwb2ludGVyIGRlcmVmcwotCi14cG9pbnRlcjogRml4IG1vcmUgTlVMTCBwb2ludGVyIGRlcmVmcwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD1lOTA1ZjA4MTIzZTRhNmU3NzMxNTQ5ZTZmMDlkYWRmZjRjYWI2NWJkXQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS94cG9pbnRlci5jIGIveHBvaW50ZXIuYwotaW5kZXggNjc2YzUxMC4uMDc0ZGIyNCAxMDA2NDQKLS0tLSBhL3hwb2ludGVyLmMKLSsrKyBiL3hwb2ludGVyLmMKLUBAIC01NTUsNyArNTU1LDcgQEAgeG1sWFB0ck5ld1JhbmdlTm9kZU9iamVjdCh4bWxOb2RlUHRyIHN0YXJ0LCB4bWxYUGF0aE9iamVjdFB0ciBlbmQpIHsKLSAJICAgIC8qCi0gCSAgICAgKiBFbXB0eSBzZXQgLi4uCi0gCSAgICAgKi8KLS0JICAgIGlmIChlbmQtPm5vZGVzZXR2YWwtPm5vZGVOciA8PSAwKQotKwkgICAgaWYgKChlbmQtPm5vZGVzZXR2YWwgPT0gTlVMTCkgfHwgKGVuZC0+bm9kZXNldHZhbC0+bm9kZU5yIDw9IDApKQotIAkJcmV0dXJuKE5VTEwpOwotIAkgICAgYnJlYWs7Ci0gCWRlZmF1bHQ6Ci1AQCAtMTQwMCw3ICsxNDAwLDcgQEAgeG1sWFB0ckV2YWwoY29uc3QgeG1sQ2hhciAqc3RyLCB4bWxYUGF0aENvbnRleHRQdHIgY3R4KSB7Ci0gCQkgICAgICovCi0gCQkgICAgeG1sTm9kZVNldFB0ciBzZXQ7Ci0gCQkgICAgc2V0ID0gdG1wLT5ub2Rlc2V0dmFsOwotLQkJICAgIGlmICgoc2V0LT5ub2RlTnIgIT0gMSkgfHwKLSsJCSAgICBpZiAoKHNldCA9PSBOVUxMKSB8fCAoc2V0LT5ub2RlTnIgIT0gMSkgfHwKLSAJCQkoc2V0LT5ub2RlVGFiWzBdICE9ICh4bWxOb2RlUHRyKSBjdHgtPmRvYykpCi0gCQkJc3RhY2srKzsKLSAJCX0gZWxzZQotQEAgLTIwNzMsOSArMjA3MywxMSBAQCB4bWxYUHRyUmFuZ2VGdW5jdGlvbih4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCwgaW50IG5hcmdzKSB7Ci0gCXhtbFhQYXRoRnJlZU9iamVjdChzZXQpOwotICAgICAgICAgWFBfRVJST1IoWFBBVEhfTUVNT1JZX0VSUk9SKTsKLSAgICAgfQotLSAgICBmb3IgKGkgPSAwO2kgPCBvbGRzZXQtPmxvY05yO2krKykgewotLQl4bWxYUHRyTG9jYXRpb25TZXRBZGQobmV3c2V0LAotLQkJeG1sWFB0ckNvdmVyaW5nUmFuZ2UoY3R4dCwgb2xkc2V0LT5sb2NUYWJbaV0pKTsKLSsgICAgaWYgKG9sZHNldCAhPSBOVUxMKSB7Ci0rCWZvciAoaSA9IDA7aSA8IG9sZHNldC0+bG9jTnI7aSsrKSB7Ci0rCSAgeG1sWFB0ckxvY2F0aW9uU2V0QWRkKG5ld3NldCwKLSsJCSAgeG1sWFB0ckNvdmVyaW5nUmFuZ2UoY3R4dCwgb2xkc2V0LT5sb2NUYWJbaV0pKTsKLSsgICAgICB9Ci0gICAgIH0KLSAKLSAgICAgLyoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9hbmRfc2ltcGxpZnlfeG1sUGFyc2VTdGFydFRhZzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfYW5kX3NpbXBsaWZ5X3htbFBhcnNlU3RhcnRUYWcyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWE1NzcwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9hbmRfc2ltcGxpZnlfeG1sUGFyc2VTdGFydFRhZzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OTAgKzAsMCBAQAotbGlieG1sMi0yLjkuNDogQXZvaWQgcmVwYXJzaW5nIGFuZCBzaW1wbGlmeSBjb250cm9sIGZsb3cgaW4geG1sUGFyc2VTdGFydFRhZzIKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXQotCi1wYXJzZXI6IEF2b2lkIHJlcGFyc2luZyBpbiB4bWxQYXJzZVN0YXJ0VGFnMgotCi1UaGUgY29kZSBpbiB4bWxQYXJzZVN0YXJ0VGFnMiBtdXN0IGhhbmRsZSB0aGUgY2FzZSB0aGF0IHRoZSBpbnB1dAotYnVmZmVyIHdhcyBncm93biBhbmQgcmVhbGxvY2F0ZWQgd2hpY2ggY2FuIGludmFsaWRhdGUgcG9pbnRlcnMgdG8KLWF0dHJpYnV0ZSB2YWx1ZXMuIEJlZm9yZSwgdGhpcyB3YXMgaGFuZGxlZCBieSBkZXRlY3RpbmcgY2hhbmdlcyBvZgotdGhlIGlucHV0IGJ1ZmZlciAiYmFzZSIgcG9pbnRlciBhbmQsIGluIGNhc2Ugb2YgYSBjaGFuZ2UsIGp1bXBpbmcKLWJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24gYW5kIHJlcGFyc2luZyB0aGUgc3RhcnQgdGFnLgotCi1UaGUgbWFqb3IgcHJvYmxlbSBvZiB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgd2hldGhlciBhbiBpbnB1dCBidWZmZXIgaXMKLXJlYWxsb2NhdGVkIGlzIG5vbmRldGVybWluaXN0aWMsIHJlc3VsdGluZyBpbiBzZWVtaW5nbHkgcmFuZG9tIHRlc3QKLWZhaWx1cmVzLiBTZWUgdGhlIG1haWxpbmcgbGlzdCB0aHJlYWQgInJ1bnRlc3QgbXlzdGVyeSBidWc6IG5hbWUyLnhtbAotZXJyb3IgY2FzZSByZWdyZXNzaW9uIHRlc3QiIGZyb20gMjAxMiwgZm9yIGV4YW1wbGUuCi0KLUlmIGEgcmVhbGxvY2F0aW9uIHdhcyBkZXRlY3RlZCwgdGhlIGNvZGUgYWxzbyBtYWRlIG5vIGF0dGVtcHRzIHRvCi1jb250aW51ZSBwYXJzaW5nIGluIGNhc2Ugb2YgZXJyb3JzIHdoaWNoIG1ha2VzIGEgZGlmZmVyZW5jZSBpbgotdGhlIGxheCAicmVjb3ZlciIgbW9kZS4KLQotTm93IHdlIHN0b3JlIHRoZSBjdXJyZW50IGlucHV0IGJ1ZmZlciAiYmFzZSIgcG9pbnRlciBmb3IgZWFjaCAobm90Ci1zZXBhcmF0ZWx5IGFsbG9jYXRlZCkgYXR0cmlidXRlIGluIHRoZSBuYW1lc3BhY2UgVVJJIGZpZWxkLCB3aGljaCBpc24ndAotdXNlZCB1bnRpbCBsYXRlci4gQWZ0ZXIgdGhlIHdob2xlIHN0YXJ0IHRhZyB3YXMgcGFyc2VkLCB0aGUgcG9pbnRlcnMgdG8KLXRoZSBhdHRyaWJ1dGUgdmFsdWVzIGFyZSByZWNvbnN0cnVjdGVkIHVzaW5nIHRoZSBvZmZzZXQgYmV0d2VlbiB0aGUKLW5ldyBhbmQgdGhlIG9sZCBpbnB1dCBidWZmZXIuIFRoaXMgcmVsaWVzIG9uIGFyaXRobWV0aWMgb24gZGFuZ2xpbmcKLXBvaW50ZXJzIHdoaWNoIGlzIHRlY2huaWNhbGx5IHVuZGVmaW5lZCBiZWhhdmlvci4gQnV0IGl0IHNlZW1zIGxpa2UKLXRoZSBlYXNpZXN0IGFuZCBtb3N0IGVmZmljaWVudCBmaXggYW5kIGEgc2ltaWxhciBhcHByb2FjaCBpcyB1c2VkIGluCi14bWxQYXJzZXJJbnB1dEdyb3cuCi0KLVRoaXMgY2hhbmdlcyB0aGUgZXJyb3Igb3V0cHV0IG9mIHNldmVyYWwgdGVzdHMsIHR5cGljYWxseSBtYWtpbmcgaXQKLW1vcmUgdmVyYm9zZSBiZWNhdXNlIHdlIHRyeSBoYXJkZXIgdG8gY29udGludWUgcGFyc2luZyBpbiBjYXNlIG9mIGVycm9ycy4KLQotKEFub3RoZXIgcG9zc2libGUgc29sdXRpb24gaXMgdG8gY2hlY2sgbm90IG9ubHkgdGhlICJiYXNlIiBwb2ludGVyCi1idXQgdGhlIHNpemUgb2YgdGhlIGlucHV0IGJ1ZmZlciBhcyB3ZWxsLiBCdXQgdGhpcyB3b3VsZCByZXN1bHQgaW4KLWV2ZW4gbW9yZSByZXBhcnNpbmcuKQotCi1SZW1vdmUgc29tZSBnb3RvIGxhYmVscyBhbmQgZGVkdXBsaWNhdGUgYSBiaXQgb2YgY29kZSBhZnRlciBoYW5kbGluZwotbmFtZXNwYWNlcy4KLQotVGhlcmUgd2VyZSB0d28gYnVncyB3aGVyZSBwYXJhbWV0ZXItZW50aXR5IHJlZmVyZW5jZXMgY291bGQgbGVhZCB0byBhbgotdW5leHBlY3RlZCBjaGFuZ2Ugb2YgdGhlIGlucHV0IGJ1ZmZlciBpbiB4bWxQYXJzZU5hbWVDb21wbGV4IGFuZAoteG1sRGljdExvb2t1cCBiZWluZyBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHBvaW50ZXIuCi0KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotIC0gW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPTA3Yjc0MjhiNjljMzY4NjExZDIxNWExNDBmZTYzMGIyZDFlNjEzNDldCi0gLSBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9ODU1YzE5ZWZiN2NkMzBkOTI3ZDY3M2IzNjU4NTYzYzQ5NTljYTZmMF0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEvcGFyc2VyLmMgYi9wYXJzZXIuYwotaW5kZXggNjA5YTI3MC4uNzQwMTZlMyAxMDA2NDQKLS0tLSBhL3BhcnNlci5jCi0rKysgYi9wYXJzZXIuYwotQEAgLTQzLDYgKzQzLDcgQEAKLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KLSAjaW5jbHVkZSA8bGlieG1sL3RocmVhZHMuaD4KLSAjaW5jbHVkZSA8bGlieG1sL2dsb2JhbHMuaD4KLUBAIC05Mzc3LDggKzkzNzgsNyBAQCB4bWxQYXJzZVN0YXJ0VGFnMih4bWxQYXJzZXJDdHh0UHRyIGN0eHQsIGNvbnN0IHhtbENoYXIgKipwcmVmLAotICAgICBjb25zdCB4bWxDaGFyICoqYXR0cyA9IGN0eHQtPmF0dHM7Ci0gICAgIGludCBtYXhhdHRzID0gY3R4dC0+bWF4YXR0czsKLSAgICAgaW50IG5yYXR0cywgbmJhdHRzLCBuYmRlZjsKLS0gICAgaW50IGksIGosIG5iTnMsIGF0dHZhbCwgb2xkbGluZSwgb2xkY29sLCBpbnB1dE5yOwotLSAgICBjb25zdCB4bWxDaGFyICpiYXNlOwotKyAgICBpbnQgaSwgaiwgbmJOcywgYXR0dmFsOwotICAgICB1bnNpZ25lZCBsb25nIGN1cjsKLSAgICAgaW50IG5zTnIgPSBjdHh0LT5uc05yOwotIAotQEAgLTkzOTIsMTMgKzkzOTIsOCBAQCB4bWxQYXJzZVN0YXJ0VGFnMih4bWxQYXJzZXJDdHh0UHRyIGN0eHQsIGNvbnN0IHhtbENoYXIgKipwcmVmLAotICAgICAgKiAgICAgICBUaGUgU2hyaW5raW5nIGlzIG9ubHkgcG9zc2libGUgb25jZSB0aGUgZnVsbCBzZXQgb2YgYXR0cmlidXRlCi0gICAgICAqICAgICAgIGNhbGxiYWNrcyBoYXZlIGJlZW4gZG9uZS4KLSAgICAgICovCi0tcmVwYXJzZToKLSAgICAgU0hSSU5LOwotLSAgICBiYXNlID0gY3R4dC0+aW5wdXQtPmJhc2U7Ci0gICAgIGN1ciA9IGN0eHQtPmlucHV0LT5jdXIgLSBjdHh0LT5pbnB1dC0+YmFzZTsKLS0gICAgaW5wdXROciA9IGN0eHQtPmlucHV0TnI7Ci0tICAgIG9sZGxpbmUgPSBjdHh0LT5pbnB1dC0+bGluZTsKLS0gICAgb2xkY29sID0gY3R4dC0+aW5wdXQtPmNvbDsKLSAgICAgbmJhdHRzID0gMDsKLSAgICAgbnJhdHRzID0gMDsKLSAgICAgbmJkZWYgPSAwOwotQEAgLTk0MjIsOCArOTQxNyw2IEBAIHJlcGFyc2U6Ci0gICAgICAqLwotICAgICBTS0lQX0JMQU5LUzsKLSAgICAgR1JPVzsKLS0gICAgaWYgKChjdHh0LT5pbnB1dC0+YmFzZSAhPSBiYXNlKSB8fCAoaW5wdXROciAhPSBjdHh0LT5pbnB1dE5yKSkKLS0gICAgICAgIGdvdG8gYmFzZV9jaGFuZ2VkOwotIAotICAgICB3aGlsZSAoKChSQVcgIT0gJz4nKSAmJgotIAkgICAoKFJBVyAhPSAnLycpIHx8IChOWFQoMSkgIT0gJz4nKSkgJiYKLUBAIC05NDM0LDIwMyArOTQyNywxNzQgQEAgcmVwYXJzZToKLSAKLSAJYXR0bmFtZSA9IHhtbFBhcnNlQXR0cmlidXRlMihjdHh0LCBwcmVmaXgsIGxvY2FsbmFtZSwKLSAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXByZWZpeCwgJmF0dHZhbHVlLCAmbGVuLCAmYWxsb2MpOwotLQlpZiAoKGN0eHQtPmlucHV0LT5iYXNlICE9IGJhc2UpIHx8IChpbnB1dE5yICE9IGN0eHQtPmlucHV0TnIpKSB7Ci0tCSAgICBpZiAoKGF0dHZhbHVlICE9IE5VTEwpICYmIChhbGxvYyAhPSAwKSkKLS0JICAgICAgICB4bWxGcmVlKGF0dHZhbHVlKTsKLS0JICAgIGF0dHZhbHVlID0gTlVMTDsKLS0JICAgIGdvdG8gYmFzZV9jaGFuZ2VkOwotLQl9Ci0tICAgICAgICBpZiAoKGF0dG5hbWUgIT0gTlVMTCkgJiYgKGF0dHZhbHVlICE9IE5VTEwpKSB7Ci0tCSAgICBpZiAobGVuIDwgMCkgbGVuID0geG1sU3RybGVuKGF0dHZhbHVlKTsKLS0gICAgICAgICAgICBpZiAoKGF0dG5hbWUgPT0gY3R4dC0+c3RyX3htbG5zKSAmJiAoYXByZWZpeCA9PSBOVUxMKSkgewotLQkgICAgICAgIGNvbnN0IHhtbENoYXIgKlVSTCA9IHhtbERpY3RMb29rdXAoY3R4dC0+ZGljdCwgYXR0dmFsdWUsIGxlbik7Ci0tCQl4bWxVUklQdHIgdXJpOwotLQotLSAgICAgICAgICAgICAgICBpZiAoVVJMID09IE5VTEwpIHsKLS0JCSAgICB4bWxFcnJNZW1vcnkoY3R4dCwgImRpY3Rpb25hcnkgYWxsb2NhdGlvbiBmYWlsdXJlIik7Ci0tCQkgICAgaWYgKChhdHR2YWx1ZSAhPSBOVUxMKSAmJiAoYWxsb2MgIT0gMCkpCi0tCQkJeG1sRnJlZShhdHR2YWx1ZSk7Ci0tCQkgICAgcmV0dXJuKE5VTEwpOwotLQkJfQotLSAgICAgICAgICAgICAgICBpZiAoKlVSTCAhPSAwKSB7Ci0tCQkgICAgdXJpID0geG1sUGFyc2VVUkkoKGNvbnN0IGNoYXIgKikgVVJMKTsKLS0JCSAgICBpZiAodXJpID09IE5VTEwpIHsKLS0JCQl4bWxOc0VycihjdHh0LCBYTUxfV0FSX05TX1VSSSwKLS0JCQkgICAgICAgICAieG1sbnM6ICclcycgaXMgbm90IGEgdmFsaWQgVVJJXG4iLAotLQkJCQkJICAgVVJMLCBOVUxMLCBOVUxMKTsKLS0JCSAgICB9IGVsc2UgewotLQkJCWlmICh1cmktPnNjaGVtZSA9PSBOVUxMKSB7Ci0tCQkJICAgIHhtbE5zV2FybihjdHh0LCBYTUxfV0FSX05TX1VSSV9SRUxBVElWRSwKLS0JCQkJICAgICAgInhtbG5zOiBVUkkgJXMgaXMgbm90IGFic29sdXRlXG4iLAotLQkJCQkgICAgICBVUkwsIE5VTEwsIE5VTEwpOwotLQkJCX0KLS0JCQl4bWxGcmVlVVJJKHVyaSk7Ci0tCQkgICAgfQotLQkJICAgIGlmIChVUkwgPT0gY3R4dC0+c3RyX3htbF9ucykgewotLQkJCWlmIChhdHRuYW1lICE9IGN0eHQtPnN0cl94bWwpIHsKLS0JCQkgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotLQkJCSAieG1sIG5hbWVzcGFjZSBVUkkgY2Fubm90IGJlIHRoZSBkZWZhdWx0IG5hbWVzcGFjZVxuIiwKLS0JCQkJICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLS0JCQl9Ci0tCQkJZ290byBza2lwX2RlZmF1bHRfbnM7Ci0tCQkgICAgfQotLQkJICAgIGlmICgobGVuID09IDI5KSAmJgotLQkJCSh4bWxTdHJFcXVhbChVUkwsCi0tCQkJCSBCQURfQ0FTVCAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKSkpIHsKLS0JCQl4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0tCQkJICAgICAicmV1c2Ugb2YgdGhlIHhtbG5zIG5hbWVzcGFjZSBuYW1lIGlzIGZvcmJpZGRlblxuIiwKLS0JCQkJIE5VTEwsIE5VTEwsIE5VTEwpOwotLQkJCWdvdG8gc2tpcF9kZWZhdWx0X25zOwotLQkJICAgIH0KLS0JCX0KLS0JCS8qCi0tCQkgKiBjaGVjayB0aGF0IGl0J3Mgbm90IGEgZGVmaW5lZCBuYW1lc3BhY2UKLS0JCSAqLwotLQkJZm9yIChqID0gMTtqIDw9IG5iTnM7aisrKQotLQkJICAgIGlmIChjdHh0LT5uc1RhYltjdHh0LT5uc05yIC0gMiAqIGpdID09IE5VTEwpCi0tCQkJYnJlYWs7Ci0tCQlpZiAoaiA8PSBuYk5zKQotLQkJICAgIHhtbEVyckF0dHJpYnV0ZUR1cChjdHh0LCBOVUxMLCBhdHRuYW1lKTsKLS0JCWVsc2UKLS0JCSAgICBpZiAobnNQdXNoKGN0eHQsIE5VTEwsIFVSTCkgPiAwKSBuYk5zKys7Ci0tc2tpcF9kZWZhdWx0X25zOgotLQkJaWYgKChhdHR2YWx1ZSAhPSBOVUxMKSAmJiAoYWxsb2MgIT0gMCkpIHsKLS0JCSAgICB4bWxGcmVlKGF0dHZhbHVlKTsKLS0JCSAgICBhdHR2YWx1ZSA9IE5VTEw7Ci0tCQl9Ci0tCQlpZiAoKFJBVyA9PSAnPicpIHx8ICgoKFJBVyA9PSAnLycpICYmIChOWFQoMSkgPT0gJz4nKSkpKQotLQkJICAgIGJyZWFrOwotLQkJaWYgKCFJU19CTEFOS19DSChSQVcpKSB7Ci0tCQkgICAgeG1sRmF0YWxFcnJNc2coY3R4dCwgWE1MX0VSUl9TUEFDRV9SRVFVSVJFRCwKLS0JCQkJICAgImF0dHJpYnV0ZXMgY29uc3RydWN0IGVycm9yXG4iKTsKLS0JCSAgICBicmVhazsKLS0JCX0KLS0JCVNLSVBfQkxBTktTOwotLQkJaWYgKChjdHh0LT5pbnB1dC0+YmFzZSAhPSBiYXNlKSB8fCAoaW5wdXROciAhPSBjdHh0LT5pbnB1dE5yKSkKLS0JCSAgICBnb3RvIGJhc2VfY2hhbmdlZDsKLS0JCWNvbnRpbnVlOwotLQkgICAgfQotLSAgICAgICAgICAgIGlmIChhcHJlZml4ID09IGN0eHQtPnN0cl94bWxucykgewotLQkgICAgICAgIGNvbnN0IHhtbENoYXIgKlVSTCA9IHhtbERpY3RMb29rdXAoY3R4dC0+ZGljdCwgYXR0dmFsdWUsIGxlbik7Ci0tCQl4bWxVUklQdHIgdXJpOwotLQotLSAgICAgICAgICAgICAgICBpZiAoYXR0bmFtZSA9PSBjdHh0LT5zdHJfeG1sKSB7Ci0tCQkgICAgaWYgKFVSTCAhPSBjdHh0LT5zdHJfeG1sX25zKSB7Ci0tCQkgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLS0JCQkgICAgICAgICAieG1sIG5hbWVzcGFjZSBwcmVmaXggbWFwcGVkIHRvIHdyb25nIFVSSVxuIiwKLS0JCQkgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLS0JCSAgICB9Ci0tCQkgICAgLyoKLS0JCSAgICAgKiBEbyBub3Qga2VlcCBhIG5hbWVzcGFjZSBkZWZpbml0aW9uIG5vZGUKLS0JCSAgICAgKi8KLS0JCSAgICBnb3RvIHNraXBfbnM7Ci0tCQl9Ci0rICAgICAgICBpZiAoKGF0dG5hbWUgPT0gTlVMTCkgfHwgKGF0dHZhbHVlID09IE5VTEwpKQotKyAgICAgICAgICAgIGdvdG8gbmV4dF9hdHRyOwotKwlpZiAobGVuIDwgMCkgbGVuID0geG1sU3RybGVuKGF0dHZhbHVlKTsKLSsKLSsgICAgICAgIGlmICgoYXR0bmFtZSA9PSBjdHh0LT5zdHJfeG1sbnMpICYmIChhcHJlZml4ID09IE5VTEwpKSB7Ci0rICAgICAgICAgICAgY29uc3QgeG1sQ2hhciAqVVJMID0geG1sRGljdExvb2t1cChjdHh0LT5kaWN0LCBhdHR2YWx1ZSwgbGVuKTsKLSsgICAgICAgICAgICB4bWxVUklQdHIgdXJpOwotKwotKyAgICAgICAgICAgIGlmIChVUkwgPT0gTlVMTCkgewotKyAgICAgICAgICAgICAgICB4bWxFcnJNZW1vcnkoY3R4dCwgImRpY3Rpb25hcnkgYWxsb2NhdGlvbiBmYWlsdXJlIik7Ci0rICAgICAgICAgICAgICAgIGlmICgoYXR0dmFsdWUgIT0gTlVMTCkgJiYgKGFsbG9jICE9IDApKQotKyAgICAgICAgICAgICAgICAgICAgeG1sRnJlZShhdHR2YWx1ZSk7Ci0rICAgICAgICAgICAgICAgIHJldHVybihOVUxMKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgaWYgKCpVUkwgIT0gMCkgewotKyAgICAgICAgICAgICAgICB1cmkgPSB4bWxQYXJzZVVSSSgoY29uc3QgY2hhciAqKSBVUkwpOwotKyAgICAgICAgICAgICAgICBpZiAodXJpID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9XQVJfTlNfVVJJLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhtbG5zOiAnJXMnIGlzIG5vdCBhIHZhbGlkIFVSSVxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkwsIE5VTEwsIE5VTEwpOwotKyAgICAgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgaWYgKHVyaS0+c2NoZW1lID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICB4bWxOc1dhcm4oY3R4dCwgWE1MX1dBUl9OU19VUklfUkVMQVRJVkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWxuczogVVJJICVzIGlzIG5vdCBhYnNvbHV0ZVxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMLCBOVUxMLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgIHhtbEZyZWVVUkkodXJpKTsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBpZiAoVVJMID09IGN0eHQtPnN0cl94bWxfbnMpIHsKLS0JCSAgICBpZiAoYXR0bmFtZSAhPSBjdHh0LT5zdHJfeG1sKSB7Ci0tCQkgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLS0JCQkgICAgICAgICAieG1sIG5hbWVzcGFjZSBVUkkgbWFwcGVkIHRvIHdyb25nIHByZWZpeFxuIiwKLS0JCQkgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLS0JCSAgICB9Ci0tCQkgICAgZ290byBza2lwX25zOwotLQkJfQotLSAgICAgICAgICAgICAgICBpZiAoYXR0bmFtZSA9PSBjdHh0LT5zdHJfeG1sbnMpIHsKLS0JCSAgICB4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0tCQkJICAgICAicmVkZWZpbml0aW9uIG9mIHRoZSB4bWxucyBwcmVmaXggaXMgZm9yYmlkZGVuXG4iLAotLQkJCSAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0tCQkgICAgZ290byBza2lwX25zOwotLQkJfQotLQkJaWYgKChsZW4gPT0gMjkpICYmCi0tCQkgICAgKHhtbFN0ckVxdWFsKFVSTCwKLS0JCSAgICAgICAgICAgICAgICAgQkFEX0NBU1QgImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIikpKSB7Ci0tCQkgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotLQkJCSAgICAgInJldXNlIG9mIHRoZSB4bWxucyBuYW1lc3BhY2UgbmFtZSBpcyBmb3JiaWRkZW5cbiIsCi0tCQkJICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLS0JCSAgICBnb3RvIHNraXBfbnM7Ci0tCQl9Ci0tCQlpZiAoKFVSTCA9PSBOVUxMKSB8fCAoVVJMWzBdID09IDApKSB7Ci0tCQkgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotLQkJICAgICAgICAgICAgICJ4bWxuczolczogRW1wdHkgWE1MIG5hbWVzcGFjZSBpcyBub3QgYWxsb3dlZFxuIiwKLS0JCQkgICAgICAgICAgYXR0bmFtZSwgTlVMTCwgTlVMTCk7Ci0tCQkgICAgZ290byBza2lwX25zOwotLQkJfSBlbHNlIHsKLS0JCSAgICB1cmkgPSB4bWxQYXJzZVVSSSgoY29uc3QgY2hhciAqKSBVUkwpOwotLQkJICAgIGlmICh1cmkgPT0gTlVMTCkgewotLQkJCXhtbE5zRXJyKGN0eHQsIFhNTF9XQVJfTlNfVVJJLAotLQkJCSAgICAgInhtbG5zOiVzOiAnJXMnIGlzIG5vdCBhIHZhbGlkIFVSSVxuIiwKLS0JCQkJCSAgIGF0dG5hbWUsIFVSTCwgTlVMTCk7Ci0tCQkgICAgfSBlbHNlIHsKLS0JCQlpZiAoKGN0eHQtPnBlZGFudGljKSAmJiAodXJpLT5zY2hlbWUgPT0gTlVMTCkpIHsKLS0JCQkgICAgeG1sTnNXYXJuKGN0eHQsIFhNTF9XQVJfTlNfVVJJX1JFTEFUSVZFLAotLQkJCQkgICAgICAieG1sbnM6JXM6IFVSSSAlcyBpcyBub3QgYWJzb2x1dGVcbiIsCi0tCQkJCSAgICAgIGF0dG5hbWUsIFVSTCwgTlVMTCk7Ci0tCQkJfQotLQkJCXhtbEZyZWVVUkkodXJpKTsKLS0JCSAgICB9Ci0tCQl9Ci0tCi0tCQkvKgotLQkJICogY2hlY2sgdGhhdCBpdCdzIG5vdCBhIGRlZmluZWQgbmFtZXNwYWNlCi0tCQkgKi8KLS0JCWZvciAoaiA9IDE7aiA8PSBuYk5zO2orKykKLS0JCSAgICBpZiAoY3R4dC0+bnNUYWJbY3R4dC0+bnNOciAtIDIgKiBqXSA9PSBhdHRuYW1lKQotLQkJCWJyZWFrOwotLQkJaWYgKGogPD0gbmJOcykKLS0JCSAgICB4bWxFcnJBdHRyaWJ1dGVEdXAoY3R4dCwgYXByZWZpeCwgYXR0bmFtZSk7Ci0tCQllbHNlCi0tCQkgICAgaWYgKG5zUHVzaChjdHh0LCBhdHRuYW1lLCBVUkwpID4gMCkgbmJOcysrOwotLXNraXBfbnM6Ci0tCQlpZiAoKGF0dHZhbHVlICE9IE5VTEwpICYmIChhbGxvYyAhPSAwKSkgewotLQkJICAgIHhtbEZyZWUoYXR0dmFsdWUpOwotLQkJICAgIGF0dHZhbHVlID0gTlVMTDsKLS0JCX0KLS0JCWlmICgoUkFXID09ICc+JykgfHwgKCgoUkFXID09ICcvJykgJiYgKE5YVCgxKSA9PSAnPicpKSkpCi0tCQkgICAgYnJlYWs7Ci0tCQlpZiAoIUlTX0JMQU5LX0NIKFJBVykpIHsKLS0JCSAgICB4bWxGYXRhbEVyck1zZyhjdHh0LCBYTUxfRVJSX1NQQUNFX1JFUVVJUkVELAotLQkJCQkgICAiYXR0cmlidXRlcyBjb25zdHJ1Y3QgZXJyb3JcbiIpOwotLQkJICAgIGJyZWFrOwotLQkJfQotLQkJU0tJUF9CTEFOS1M7Ci0tCQlpZiAoKGN0eHQtPmlucHV0LT5iYXNlICE9IGJhc2UpIHx8IChpbnB1dE5yICE9IGN0eHQtPmlucHV0TnIpKQotLQkJICAgIGdvdG8gYmFzZV9jaGFuZ2VkOwotLQkJY29udGludWU7Ci0tCSAgICB9Ci0rICAgICAgICAgICAgICAgICAgICBpZiAoYXR0bmFtZSAhPSBjdHh0LT5zdHJfeG1sKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotKyAgICAgICAgICAgICAgICAgICAgICJ4bWwgbmFtZXNwYWNlIFVSSSBjYW5ub3QgYmUgdGhlIGRlZmF1bHQgbmFtZXNwYWNlXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotKyAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0X2F0dHI7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgaWYgKChsZW4gPT0gMjkpICYmCi0rICAgICAgICAgICAgICAgICAgICAoeG1sU3RyRXF1YWwoVVJMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFEX0NBU1QgImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIikpKSB7Ci0rICAgICAgICAgICAgICAgICAgICB4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJyZXVzZSBvZiB0aGUgeG1sbnMgbmFtZXNwYWNlIG5hbWUgaXMgZm9yYmlkZGVuXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRfYXR0cjsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAqIGNoZWNrIHRoYXQgaXQncyBub3QgYSBkZWZpbmVkIG5hbWVzcGFjZQotKyAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgIGZvciAoaiA9IDE7aiA8PSBuYk5zO2orKykKLSsgICAgICAgICAgICAgICAgaWYgKGN0eHQtPm5zVGFiW2N0eHQtPm5zTnIgLSAyICogal0gPT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIGlmIChqIDw9IG5iTnMpCi0rICAgICAgICAgICAgICAgIHhtbEVyckF0dHJpYnV0ZUR1cChjdHh0LCBOVUxMLCBhdHRuYW1lKTsKLSsgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgIGlmIChuc1B1c2goY3R4dCwgTlVMTCwgVVJMKSA+IDApIG5iTnMrKzsKLSsKLSsgICAgICAgIH0gZWxzZSBpZiAoYXByZWZpeCA9PSBjdHh0LT5zdHJfeG1sbnMpIHsKLSsgICAgICAgICAgICBjb25zdCB4bWxDaGFyICpVUkwgPSB4bWxEaWN0TG9va3VwKGN0eHQtPmRpY3QsIGF0dHZhbHVlLCBsZW4pOwotKyAgICAgICAgICAgIHhtbFVSSVB0ciB1cmk7Ci0rCi0rICAgICAgICAgICAgaWYgKGF0dG5hbWUgPT0gY3R4dC0+c3RyX3htbCkgewotKyAgICAgICAgICAgICAgICBpZiAoVVJMICE9IGN0eHQtPnN0cl94bWxfbnMpIHsKLSsgICAgICAgICAgICAgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWwgbmFtZXNwYWNlIHByZWZpeCBtYXBwZWQgdG8gd3JvbmcgVVJJXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgLyoKLSsgICAgICAgICAgICAgICAgICogRG8gbm90IGtlZXAgYSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBub2RlCi0rICAgICAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgICAgICBnb3RvIG5leHRfYXR0cjsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgaWYgKFVSTCA9PSBjdHh0LT5zdHJfeG1sX25zKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChhdHRuYW1lICE9IGN0eHQtPnN0cl94bWwpIHsKLSsgICAgICAgICAgICAgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWwgbmFtZXNwYWNlIFVSSSBtYXBwZWQgdG8gd3JvbmcgcHJlZml4XG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgZ290byBuZXh0X2F0dHI7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGlmIChhdHRuYW1lID09IGN0eHQtPnN0cl94bWxucykgewotKyAgICAgICAgICAgICAgICB4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJyZWRlZmluaXRpb24gb2YgdGhlIHhtbG5zIHByZWZpeCBpcyBmb3JiaWRkZW5cbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotKyAgICAgICAgICAgICAgICBnb3RvIG5leHRfYXR0cjsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgaWYgKChsZW4gPT0gMjkpICYmCi0rICAgICAgICAgICAgICAgICh4bWxTdHJFcXVhbChVUkwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCQURfQ0FTVCAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKSkpIHsKLSsgICAgICAgICAgICAgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAicmV1c2Ugb2YgdGhlIHhtbG5zIG5hbWVzcGFjZSBuYW1lIGlzIGZvcmJpZGRlblxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIGdvdG8gbmV4dF9hdHRyOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAoKFVSTCA9PSBOVUxMKSB8fCAoVVJMWzBdID09IDApKSB7Ci0rICAgICAgICAgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgInhtbG5zOiVzOiBFbXB0eSBYTUwgbmFtZXNwYWNlIGlzIG5vdCBhbGxvd2VkXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dG5hbWUsIE5VTEwsIE5VTEwpOwotKyAgICAgICAgICAgICAgICBnb3RvIG5leHRfYXR0cjsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICB1cmkgPSB4bWxQYXJzZVVSSSgoY29uc3QgY2hhciAqKSBVUkwpOwotKyAgICAgICAgICAgICAgICBpZiAodXJpID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9XQVJfTlNfVVJJLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAieG1sbnM6JXM6ICclcycgaXMgbm90IGEgdmFsaWQgVVJJXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dG5hbWUsIFVSTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICBpZiAoKGN0eHQtPnBlZGFudGljKSAmJiAodXJpLT5zY2hlbWUgPT0gTlVMTCkpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICB4bWxOc1dhcm4oY3R4dCwgWE1MX1dBUl9OU19VUklfUkVMQVRJVkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWxuczolczogVVJJICVzIGlzIG5vdCBhYnNvbHV0ZVxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0bmFtZSwgVVJMLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgIHhtbEZyZWVVUkkodXJpKTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSAKLS0JICAgIC8qCi0tCSAgICAgKiBBZGQgdGhlIHBhaXIgdG8gYXR0cwotLQkgICAgICovCi0tCSAgICBpZiAoKGF0dHMgPT0gTlVMTCkgfHwgKG5iYXR0cyArIDUgPiBtYXhhdHRzKSkgewotLQkgICAgICAgIGlmICh4bWxDdHh0R3Jvd0F0dHJzKGN0eHQsIG5iYXR0cyArIDUpIDwgMCkgewotLQkJICAgIGlmIChhdHR2YWx1ZVtsZW5dID09IDApCi0tCQkJeG1sRnJlZShhdHR2YWx1ZSk7Ci0tCQkgICAgZ290byBmYWlsZWQ7Ci0tCQl9Ci0tCSAgICAgICAgbWF4YXR0cyA9IGN0eHQtPm1heGF0dHM7Ci0tCQlhdHRzID0gY3R4dC0+YXR0czsKLS0JICAgIH0KLS0JICAgIGN0eHQtPmF0dGFsbG9jc1tucmF0dHMrK10gPSBhbGxvYzsKLS0JICAgIGF0dHNbbmJhdHRzKytdID0gYXR0bmFtZTsKLS0JICAgIGF0dHNbbmJhdHRzKytdID0gYXByZWZpeDsKLS0JICAgIGF0dHNbbmJhdHRzKytdID0gTlVMTDsgLyogdGhlIFVSSSB3aWxsIGJlIGZldGNoZWQgbGF0ZXIgKi8KLS0JICAgIGF0dHNbbmJhdHRzKytdID0gYXR0dmFsdWU7Ci0tCSAgICBhdHR2YWx1ZSArPSBsZW47Ci0tCSAgICBhdHRzW25iYXR0cysrXSA9IGF0dHZhbHVlOwotLQkgICAgLyoKLS0JICAgICAqIHRhZyBpZiBzb21lIGRlYWxsb2NhdGlvbiBpcyBuZWVkZWQKLS0JICAgICAqLwotLQkgICAgaWYgKGFsbG9jICE9IDApIGF0dHZhbCA9IDE7Ci0tCX0gZWxzZSB7Ci0tCSAgICBpZiAoKGF0dHZhbHVlICE9IE5VTEwpICYmIChhdHR2YWx1ZVtsZW5dID09IDApKQotLQkJeG1sRnJlZShhdHR2YWx1ZSk7Ci0tCX0KLSsgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAqIGNoZWNrIHRoYXQgaXQncyBub3QgYSBkZWZpbmVkIG5hbWVzcGFjZQotKyAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgIGZvciAoaiA9IDE7aiA8PSBuYk5zO2orKykKLSsgICAgICAgICAgICAgICAgaWYgKGN0eHQtPm5zVGFiW2N0eHQtPm5zTnIgLSAyICogal0gPT0gYXR0bmFtZSkKLSsgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIGlmIChqIDw9IG5iTnMpCi0rICAgICAgICAgICAgICAgIHhtbEVyckF0dHJpYnV0ZUR1cChjdHh0LCBhcHJlZml4LCBhdHRuYW1lKTsKLSsgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgIGlmIChuc1B1c2goY3R4dCwgYXR0bmFtZSwgVVJMKSA+IDApIG5iTnMrKzsKLSsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgLyoKLSsgICAgICAgICAgICAgKiBBZGQgdGhlIHBhaXIgdG8gYXR0cwotKyAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgIGlmICgoYXR0cyA9PSBOVUxMKSB8fCAobmJhdHRzICsgNSA+IG1heGF0dHMpKSB7Ci0rICAgICAgICAgICAgICAgIGlmICh4bWxDdHh0R3Jvd0F0dHJzKGN0eHQsIG5iYXR0cyArIDUpIDwgMCkgewotKyAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0X2F0dHI7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgbWF4YXR0cyA9IGN0eHQtPm1heGF0dHM7Ci0rICAgICAgICAgICAgICAgIGF0dHMgPSBjdHh0LT5hdHRzOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBjdHh0LT5hdHRhbGxvY3NbbnJhdHRzKytdID0gYWxsb2M7Ci0rICAgICAgICAgICAgYXR0c1tuYmF0dHMrK10gPSBhdHRuYW1lOwotKyAgICAgICAgICAgIGF0dHNbbmJhdHRzKytdID0gYXByZWZpeDsKLSsgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAqIFRoZSBuYW1lc3BhY2UgVVJJIGZpZWxkIGlzIHVzZWQgdGVtcG9yYXJpbHkgdG8gcG9pbnQgYXQgdGhlCi0rICAgICAgICAgICAgICogYmFzZSBvZiB0aGUgY3VycmVudCBpbnB1dCBidWZmZXIgZm9yIG5vbi1hbGxvY2VkIGF0dHJpYnV0ZXMuCi0rICAgICAgICAgICAgICogV2hlbiB0aGUgaW5wdXQgYnVmZmVyIGlzIHJlYWxsb2NhdGVkLCBhbGwgdGhlIHBvaW50ZXJzIGJlY29tZQotKyAgICAgICAgICAgICAqIGludmFsaWQsIGJ1dCB0aGV5IGNhbiBiZSByZWNvbnN0cnVjdGVkIGxhdGVyLgotKyAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgIGlmIChhbGxvYykKLSsgICAgICAgICAgICAgICAgYXR0c1tuYmF0dHMrK10gPSBOVUxMOwotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgYXR0c1tuYmF0dHMrK10gPSBjdHh0LT5pbnB1dC0+YmFzZTsKLSsgICAgICAgICAgICBhdHRzW25iYXR0cysrXSA9IGF0dHZhbHVlOwotKyAgICAgICAgICAgIGF0dHZhbHVlICs9IGxlbjsKLSsgICAgICAgICAgICBhdHRzW25iYXR0cysrXSA9IGF0dHZhbHVlOwotKyAgICAgICAgICAgIC8qCi0rICAgICAgICAgICAgICogdGFnIGlmIHNvbWUgZGVhbGxvY2F0aW9uIGlzIG5lZWRlZAotKyAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgIGlmIChhbGxvYyAhPSAwKSBhdHR2YWwgPSAxOwotKyAgICAgICAgICAgIGF0dHZhbHVlID0gTlVMTDsgLyogbW92ZWQgaW50byBhdHRzICovCi0rICAgICAgICB9Ci0gCi0tZmFpbGVkOgotK25leHRfYXR0cjoKLSsgICAgICAgIGlmICgoYXR0dmFsdWUgIT0gTlVMTCkgJiYgKGFsbG9jICE9IDApKSB7Ci0rICAgICAgICAgICAgeG1sRnJlZShhdHR2YWx1ZSk7Ci0rICAgICAgICAgICAgYXR0dmFsdWUgPSBOVUxMOwotKyAgICAgICAgfQotIAotIAlHUk9XCi0gICAgICAgICBpZiAoY3R4dC0+aW5zdGF0ZSA9PSBYTUxfUEFSU0VSX0VPRikKLSAgICAgICAgICAgICBicmVhazsKLS0JaWYgKChjdHh0LT5pbnB1dC0+YmFzZSAhPSBiYXNlKSB8fCAoaW5wdXROciAhPSBjdHh0LT5pbnB1dE5yKSkKLS0JICAgIGdvdG8gYmFzZV9jaGFuZ2VkOwotIAlpZiAoKFJBVyA9PSAnPicpIHx8ICgoKFJBVyA9PSAnLycpICYmIChOWFQoMSkgPT0gJz4nKSkpKQotIAkgICAgYnJlYWs7Ci0gCWlmICghSVNfQkxBTktfQ0goUkFXKSkgewotQEAgLTk2NDYsOCArOTYxMCwyMCBAQCBmYWlsZWQ6Ci0gCSAgICBicmVhazsKLSAJfQotICAgICAgICAgR1JPVzsKLS0JaWYgKChjdHh0LT5pbnB1dC0+YmFzZSAhPSBiYXNlKSB8fCAoaW5wdXROciAhPSBjdHh0LT5pbnB1dE5yKSkKLS0JICAgIGdvdG8gYmFzZV9jaGFuZ2VkOwotKyAgICB9Ci0rCi0rICAgIC8qIFJlY29uc3RydWN0IGF0dHJpYnV0ZSB2YWx1ZSBwb2ludGVycy4gKi8KLSsgICAgZm9yIChpID0gMCwgaiA9IDA7IGogPCBucmF0dHM7IGkgKz0gNSwgaisrKSB7Ci0rICAgICAgICBpZiAoYXR0c1tpKzJdICE9IE5VTEwpIHsKLSsgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAqIEFyaXRobWV0aWMgb24gZGFuZ2xpbmcgcG9pbnRlcnMgaXMgdGVjaG5pY2FsbHkgdW5kZWZpbmVkCi0rICAgICAgICAgICAgICogYmVoYXZpb3IsIGJ1dCB3ZWxsLi4uCi0rICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IGN0eHQtPmlucHV0LT5iYXNlIC0gYXR0c1tpKzJdOwotKyAgICAgICAgICAgIGF0dHNbaSsyXSAgPSBOVUxMOyAgICAvKiBSZXNldCByZXB1cnBvc2VkIG5hbWVzcGFjZSBVUkkgKi8KLSsgICAgICAgICAgICBhdHRzW2krM10gKz0gb2Zmc2V0OyAgLyogdmFsdWUgKi8KLSsgICAgICAgICAgICBhdHRzW2krNF0gKz0gb2Zmc2V0OyAgLyogdmFsdWVuZCAqLwotKyAgICAgICAgfQotICAgICB9Ci0gCi0gICAgIC8qCi1AQCAtOTgwNCwzNCArOTc4MCw2IEBAIGZhaWxlZDoKLSAgICAgfQotIAotICAgICByZXR1cm4obG9jYWxuYW1lKTsKLS0KLS1iYXNlX2NoYW5nZWQ6Ci0tICAgIC8qCi0tICAgICAqIHRoZSBhdHRyaWJ1dGUgc3RyaW5ncyBhcmUgdmFsaWQgaWlmIHRoZSBiYXNlIGRpZG4ndCBjaGFuZ2VkCi0tICAgICAqLwotLSAgICBpZiAoYXR0dmFsICE9IDApIHsKLS0JZm9yIChpID0gMyxqID0gMDsgaiA8IG5yYXR0cztpICs9IDUsaisrKQotLQkgICAgaWYgKChjdHh0LT5hdHRhbGxvY3Nbal0gIT0gMCkgJiYgKGF0dHNbaV0gIT0gTlVMTCkpCi0tCSAgICAgICAgeG1sRnJlZSgoeG1sQ2hhciAqKSBhdHRzW2ldKTsKLS0gICAgfQotLQotLSAgICAvKgotLSAgICAgKiBXZSBjYW4ndCBzd2l0Y2ggZnJvbSBvbmUgZW50aXR5IHRvIGFub3RoZXIgaW4gdGhlIG1pZGRsZQotLSAgICAgKiBvZiBhIHN0YXJ0IHRhZwotLSAgICAgKi8KLS0gICAgaWYgKGlucHV0TnIgIT0gY3R4dC0+aW5wdXROcikgewotLSAgICAgICAgeG1sRmF0YWxFcnJNc2coY3R4dCwgWE1MX0VSUl9FTlRJVFlfQk9VTkRBUlksCi0tCQkgICAgIlN0YXJ0IHRhZyBkb2Vzbid0IHN0YXJ0IGFuZCBzdG9wIGluIHRoZSBzYW1lIGVudGl0eVxuIik7Ci0tCXJldHVybihOVUxMKTsKLS0gICAgfQotLQotLSAgICBjdHh0LT5pbnB1dC0+Y3VyID0gY3R4dC0+aW5wdXQtPmJhc2UgKyBjdXI7Ci0tICAgIGN0eHQtPmlucHV0LT5saW5lID0gb2xkbGluZTsKLS0gICAgY3R4dC0+aW5wdXQtPmNvbCA9IG9sZGNvbDsKLS0gICAgaWYgKGN0eHQtPndlbGxGb3JtZWQgPT0gMSkgewotLQlnb3RvIHJlcGFyc2U7Ci0tICAgIH0KLS0gICAgcmV0dXJuKE5VTEwpOwotIH0KLSAKLSAvKioKLWRpZmYgLS1naXQgYS9yZXN1bHQvZXJyb3JzLzc1OTM5OC54bWwuZXJyIGIvcmVzdWx0L2Vycm9ycy83NTkzOTgueG1sLmVycgotaW5kZXggZTA4ZDliZi4uZjYwMzZhMyAxMDA2NDQKLS0tLSBhL3Jlc3VsdC9lcnJvcnMvNzU5Mzk4LnhtbC5lcnIKLSsrKyBiL3Jlc3VsdC9lcnJvcnMvNzU5Mzk4LnhtbC5lcnIKLUBAIC0xLDkgKzEsMTIgQEAKLSAuL3Rlc3QvZXJyb3JzLzc1OTM5OC54bWw6MjEwOiBwYXJzZXIgZXJyb3IgOiBTdGFydFRhZzogaW52YWxpZCBlbGVtZW50IG5hbWUKLSBuZWVkIHRvIHdvcnJ5IGFib3V0IHBhcnNlcnMgd2hpPCEgZG9uJ3QgZXhwYW5kIFBFcmVmcyBmaW5kaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi0tLi90ZXN0L2Vycm9ycy83NTkzOTgueG1sOjMwOTogcGFyc2VyIGVycm9yIDogT3BlbmluZyBhbmQgZW5kaW5nIHRhZyBtaXNtYXRjaDogc3BlYyBsaW5lIDUwIGFuZCB0ZXJtZGVmCi0rLi90ZXN0L2Vycm9ycy83NTkzOTgueG1sOjMwOTogcGFyc2VyIGVycm9yIDogT3BlbmluZyBhbmQgZW5kaW5nIHRhZyBtaXNtYXRjaDog4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSWbSBsaW5lIDMwOCBhbmQgdGVybWRlZgotIGFuZCBwcm92aWRlIGFjY2VzcyB0byB0aGVpciBjb250ZW50IGFuZCBzdHJ1Y3R1cmUuPC90ZXJtZGVmPiA8dGVybWRlZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLS0uL3Rlc3QvZXJyb3JzLzc1OTM5OC54bWw6MzA5OiBwYXJzZXIgZXJyb3IgOiBFeHRyYSBjb250ZW50IGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Ci0tYW5kIHByb3ZpZGUgYWNjZXNzIHRvIHRoZWlyIGNvbnRlbnQgYW5kIHN0cnVjdHVyZS48L3Rlcm1kZWY+IDx0ZXJtZGVmCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLSsuL3Rlc3QvZXJyb3JzLzc1OTM5OC54bWw6MzE0OiBwYXJzZXIgZXJyb3IgOiBPcGVuaW5nIGFuZCBlbmRpbmcgdGFnIG1pc21hdGNoOiBzcGVjIGxpbmUgNTAgYW5kIHAKLStkYXRhIGFuZCB0aGUgaW5mb3JtYXRpb24gaXQgbXVzdCBwcm92aWRlIHRvIHRoZSBhcHBsaWNhdGlvbi48L3A+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLSsuL3Rlc3QvZXJyb3JzLzc1OTM5OC54bWw6MzE2OiBwYXJzZXIgZXJyb3IgOiBFeHRyYSBjb250ZW50IGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Ci0rPGRpdjIgaWQ9J3NlYy1vcmlnaW4tZ29hbHMnPgotK14KLWRpZmYgLS1naXQgYS9yZXN1bHQvZXJyb3JzL2F0dHIxLnhtbC5lcnIgYi9yZXN1bHQvZXJyb3JzL2F0dHIxLnhtbC5lcnIKLWluZGV4IDRmMDg1MzguLmM0YzRmYzggMTAwNjQ0Ci0tLS0gYS9yZXN1bHQvZXJyb3JzL2F0dHIxLnhtbC5lcnIKLSsrKyBiL3Jlc3VsdC9lcnJvcnMvYXR0cjEueG1sLmVycgotQEAgLTEsNiArMSw5IEBACi0gLi90ZXN0L2Vycm9ycy9hdHRyMS54bWw6MjogcGFyc2VyIGVycm9yIDogQXR0VmFsdWU6ICcgZXhwZWN0ZWQKLSAKLSBeCi0tLi90ZXN0L2Vycm9ycy9hdHRyMS54bWw6MTogcGFyc2VyIGVycm9yIDogRXh0cmEgY29udGVudCBhdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudAotLTxmb28gZm9vPSJvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vCi0tIF4KLSsuL3Rlc3QvZXJyb3JzL2F0dHIxLnhtbDoyOiBwYXJzZXIgZXJyb3IgOiBhdHRyaWJ1dGVzIGNvbnN0cnVjdCBlcnJvcgotKwotK14KLSsuL3Rlc3QvZXJyb3JzL2F0dHIxLnhtbDoyOiBwYXJzZXIgZXJyb3IgOiBDb3VsZG4ndCBmaW5kIGVuZCBvZiBTdGFydCBUYWcgZm9vIGxpbmUgMQotKwotK14KLWRpZmYgLS1naXQgYS9yZXN1bHQvZXJyb3JzL2F0dHIyLnhtbC5lcnIgYi9yZXN1bHQvZXJyb3JzL2F0dHIyLnhtbC5lcnIKLWluZGV4IGM4YTljN2QuLjc3ZTM0MmUgMTAwNjQ0Ci0tLS0gYS9yZXN1bHQvZXJyb3JzL2F0dHIyLnhtbC5lcnIKLSsrKyBiL3Jlc3VsdC9lcnJvcnMvYXR0cjIueG1sLmVycgotQEAgLTEsNiArMSw5IEBACi0gLi90ZXN0L2Vycm9ycy9hdHRyMi54bWw6MjogcGFyc2VyIGVycm9yIDogQXR0VmFsdWU6ICcgZXhwZWN0ZWQKLSAKLSBeCi0tLi90ZXN0L2Vycm9ycy9hdHRyMi54bWw6MTogcGFyc2VyIGVycm9yIDogRXh0cmEgY29udGVudCBhdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudAotLTxmb28gZm9vPSI+b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vCi0tIF4KLSsuL3Rlc3QvZXJyb3JzL2F0dHIyLnhtbDoyOiBwYXJzZXIgZXJyb3IgOiBhdHRyaWJ1dGVzIGNvbnN0cnVjdCBlcnJvcgotKwotK14KLSsuL3Rlc3QvZXJyb3JzL2F0dHIyLnhtbDoyOiBwYXJzZXIgZXJyb3IgOiBDb3VsZG4ndCBmaW5kIGVuZCBvZiBTdGFydCBUYWcgZm9vIGxpbmUgMQotKwotK14KLWRpZmYgLS1naXQgYS9yZXN1bHQvZXJyb3JzL25hbWUyLnhtbC5lcnIgYi9yZXN1bHQvZXJyb3JzL25hbWUyLnhtbC5lcnIKLWluZGV4IGE2NjQ5YTEuLjhhNmFjZWUgMTAwNjQ0Ci0tLS0gYS9yZXN1bHQvZXJyb3JzL25hbWUyLnhtbC5lcnIKLSsrKyBiL3Jlc3VsdC9lcnJvcnMvbmFtZTIueG1sLmVycgotQEAgLTEsNiArMSw5IEBACi0gLi90ZXN0L2Vycm9ycy9uYW1lMi54bWw6MjogcGFyc2VyIGVycm9yIDogU3BlY2lmaWNhdGlvbiBtYW5kYXRlIHZhbHVlIGZvciBhdHRyaWJ1dGUgZm9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbwotIAotIF4KLS0uL3Rlc3QvZXJyb3JzL25hbWUyLnhtbDoxOiBwYXJzZXIgZXJyb3IgOiBFeHRyYSBjb250ZW50IGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Ci0tPGZvbyBmb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb28KLS0gXgotKy4vdGVzdC9lcnJvcnMvbmFtZTIueG1sOjI6IHBhcnNlciBlcnJvciA6IGF0dHJpYnV0ZXMgY29uc3RydWN0IGVycm9yCi0rCi0rXgotKy4vdGVzdC9lcnJvcnMvbmFtZTIueG1sOjI6IHBhcnNlciBlcnJvciA6IENvdWxkbid0IGZpbmQgZW5kIG9mIFN0YXJ0IFRhZyBmb28gbGluZSAxCi0rCi0rXgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X25vZGVfY29tcGFyaXNvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9ub2RlX2NvbXBhcmlzb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZjZiZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X25vZGVfY29tcGFyaXNvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLWxpYnhtbDItMi45LjQ6IEZpeCBjb21wYXJpc29uIHdpdGggcm9vdCBub2RlIGluIHhtbFhQYXRoQ21wTm9kZXMgYW5kIE5VTEwgcG9pbnRlciBkZXJlZiBpbiBYUG9pbnRlcgotCi14cGF0aDoKLSAtIENoZWNrIGZvciBlcnJvcnMgYWZ0ZXIgZXZhbHVhdGluZyBmaXJzdCBvcGVyYW5kLgotIC0gQWRkIHNhbml0eSBjaGVjayBmb3IgZW1wdHkgc3RhY2suCi0gLSBJbmNsdWRlIGNvbXBhcmF0aW9uIGluIGNoYW5nZXMgZnJvbSB4bWxYUGF0aENtcE5vZGVzRXh0IHRvIHhtbFhQYXRoQ21wTm9kZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotIC0gW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPWMxZDFmNzEyMTE5NDAzNjYwOGJmNTU1ZjA4ZDMwNjJhMzZmZDM0NGJdCi0gLSBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9YTAwNTE5OTMzMGI4NmRhZGExOWQxNjJjYWUxNWVmOWJkY2I2YmFhOF0KLUNWRTogQ1ZFLTIwMTYtNTEzMQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS9yZXN1bHQvWFBhdGgveHB0ci92aWRlcnJvciBiL3Jlc3VsdC9YUGF0aC94cHRyL3ZpZGVycm9yCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDU4OTg4MgotLS0tIC9kZXYvbnVsbAotKysrIGIvcmVzdWx0L1hQYXRoL3hwdHIvdmlkZXJyb3IKLUBAIC0wLDAgKzEsNCBAQAotKwotKz09PT09PT09PT09PT09PT09PT09PT09PQotK0V4cHJlc3Npb246IHhwb2ludGVyKG5vbi1leGlzdGluZy1mbigpL3JhbmdlLXRvKGlkKCdjaGFwdGVyMicpKSkKLStPYmplY3QgaXMgZW1wdHkgKE5VTEwpCi1kaWZmIC0tZ2l0IGEvdGVzdC9YUGF0aC94cHRyL3ZpZGVycm9yIGIvdGVzdC9YUGF0aC94cHRyL3ZpZGVycm9yCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGE4YzUzYgotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdC9YUGF0aC94cHRyL3ZpZGVycm9yCi1AQCAtMCwwICsxIEBACi0reHBvaW50ZXIobm9uLWV4aXN0aW5nLWZuKCkvcmFuZ2UtdG8oaWQoJ2NoYXB0ZXIyJykpKQotZGlmZiAtLWdpdCBhL3hwYXRoLmMgYi94cGF0aC5jCi1pbmRleCAxMTNiY2U2Li5kOTkyODQxIDEwMDY0NAotLS0tIGEveHBhdGguYwotKysrIGIveHBhdGguYwotQEAgLTMzNDIsMTMgKzMzNDIsMTMgQEAgeG1sWFBhdGhDbXBOb2Rlcyh4bWxOb2RlUHRyIG5vZGUxLCB4bWxOb2RlUHRyIG5vZGUyKSB7Ci0gICAgICAqIGNvbXB1dGUgZGVwdGggdG8gcm9vdAotICAgICAgKi8KLSAgICAgZm9yIChkZXB0aDIgPSAwLCBjdXIgPSBub2RlMjtjdXItPnBhcmVudCAhPSBOVUxMO2N1ciA9IGN1ci0+cGFyZW50KSB7Ci0tCWlmIChjdXIgPT0gbm9kZTEpCi0rCWlmIChjdXItPnBhcmVudCA9PSBub2RlMSkKLSAJICAgIHJldHVybigxKTsKLSAJZGVwdGgyKys7Ci0gICAgIH0KLSAgICAgcm9vdCA9IGN1cjsKLSAgICAgZm9yIChkZXB0aDEgPSAwLCBjdXIgPSBub2RlMTtjdXItPnBhcmVudCAhPSBOVUxMO2N1ciA9IGN1ci0+cGFyZW50KSB7Ci0tCWlmIChjdXIgPT0gbm9kZTIpCi0rCWlmIChjdXItPnBhcmVudCA9PSBub2RlMikKLSAJICAgIHJldHVybigtMSk7Ci0gCWRlcHRoMSsrOwotICAgICB9Ci1AQCAtMTQwMDUsOSArMTQwMDUsMTQgQEAgeG1sWFBhdGhDb21wT3BFdmFsKHhtbFhQYXRoUGFyc2VyQ29udGV4dFB0ciBjdHh0LCB4bWxYUGF0aFN0ZXBPcFB0ciBvcCkKLSAgICAgICAgICAgICAgICAgeG1sTm9kZVNldFB0ciBvbGRzZXQ7Ci0gICAgICAgICAgICAgICAgIGludCBpLCBqOwotIAotLSAgICAgICAgICAgICAgICBpZiAob3AtPmNoMSAhPSAtMSkKLSsgICAgICAgICAgICAgICAgaWYgKG9wLT5jaDEgIT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgIHRvdGFsICs9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgeG1sWFBhdGhDb21wT3BFdmFsKGN0eHQsICZjb21wLT5zdGVwc1tvcC0+Y2gxXSk7Ci0rICAgICAgICAgICAgICAgICAgICBDSEVDS19FUlJPUjA7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgaWYgKGN0eHQtPnZhbHVlID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgICAgIFhQX0VSUk9SMChYUEFUSF9JTlZBTElEX09QRVJBTkQpOwotKyAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGlmIChvcC0+Y2gyID09IC0xKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0b3RhbCk7Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvcnVudGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW50ZXN0LnBhdGNoCmluZGV4IDZlNTY4NTcuLmNiMTcxZDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW50ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW50ZXN0LnBhdGNoCkBAIC0yLDQ3ICsyLDI5IEBACiBQcmludCBhIHN0YW5kYXJkIHJlc3VsdCBsaW5lIGZvciBlYWNoIHRlc3QuCiAKIFNpZ25lZC1vZmYtYnk6IE1paGFlbGEgU2VuZHJlYSA8bWloYWVsYS5zZW5kcmVhQGVuZWEuY29tPgotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAZW5lYS5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKIAogZGlmZiAtdU5yIGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotLS0tIGEvTWFrZWZpbGUuYW0JMjAxNi0wNS0yMiAwMzo0OTowMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL01ha2VmaWxlLmFtCTIwMTctMDYtMTQgMTA6Mzg6NDMuMzgxMzA1Mzg1ICswMjAwCi1AQCAtMjAyLDEwICsyMDIsMjQgQEAKKy0tLSBhL01ha2VmaWxlLmFtCTIwMTctMDgtMjggMTU6MDE6MTQuMDAwMDAwMDAwICswMjAwCisrKysgYi9NYWtlZmlsZS5hbQkyMDE3LTA5LTA1IDA4OjA2OjA1Ljc1MjI4NzMyMyArMDIwMAorQEAgLTIwMiw2ICsyMDIsMTUgQEAKICAjdGVzdE9PTV9ERVBFTkRFTkNJRVMgPSAkKERFUFMpCiAgI3Rlc3RPT01fTERBREQ9ICQoTERBRERTKQogIAogK2luc3RhbGwtcHRlc3Q6CiArCUAoaWYgWyAtZCAubGlicyBdIDsgdGhlbiBjZCAubGliczsgZmk7IFwKLSsJaW5zdGFsbCAkKG5vaW5zdF9QUk9HUkFNUykgJChERVNURElSKSkKKysJaW5zdGFsbCAkKGNoZWNrX1BST0dSQU1TKSAkKERFU1RESVIpKQogKwljcCAtciAkKHNyY2RpcikvdGVzdCAkKERFU1RESVIpCiArCWNwIC1yICQoc3JjZGlyKS9yZXN1bHQgJChERVNURElSKQogKwljcCAtciAkKHNyY2RpcikvcHl0aG9uICQoREVTVERJUikKICsJY3AgTWFrZWZpbGUgJChERVNURElSKQogKwlzZWQgLWkgLWUgJ3N8Xk1ha2VmaWxlOnxfTWFrZWZpbGU6fCcgJChERVNURElSKS9NYWtlZmlsZQogKwotIHJ1bnRlc3RzOgorIHJ1bnRlc3RzOiBydW50ZXN0JChFWEVFWFQpIHRlc3RyZWN1cnNlJChFWEVFWFQpIHRlc3RhcGkkKEVYRUVYVCkgXAorICAgICAgICAgICB0ZXN0Y2hhciQoRVhFRVhUKSB0ZXN0ZGljdCQoRVhFRVhUKSBydW54bWxjb25mJChFWEVFWFQpCiAgCVsgLWQgdGVzdCAgIF0gfHwgJChMTl9TKSAkKHNyY2RpcikvdGVzdCAgIC4KLSAJWyAtZCByZXN1bHQgXSB8fCAkKExOX1MpICQoc3JjZGlyKS9yZXN1bHQgLgotLQkkKENIRUNLRVIpIC4vcnVudGVzdCQoRVhFRVhUKSAmJiAkKENIRUNLRVIpIC4vdGVzdHJlY3Vyc2UkKEVYRUVYVCkgJiYkKENIRUNLRVIpIC4vdGVzdGFwaSQoRVhFRVhUKSAmJiAkKENIRUNLRVIpIC4vdGVzdGNoYXIkKEVYRUVYVCkmJiAkKENIRUNLRVIpIC4vdGVzdGRpY3QkKEVYRUVYVCkgJiYgJChDSEVDS0VSKSAuL3J1bnhtbGNvbmYkKEVYRUVYVCkKLSsJJChDSEVDS0VSKSAuL3J1bnRlc3QkKEVYRUVYVCkgJiYgXAotKwkgICAgJChDSEVDS0VSKSAuL3Rlc3RyZWN1cnNlJChFWEVFWFQpICYmIFwKLSsJICAgIEFTQU5fT1BUSU9OUz0iJCRBU0FOX09QVElPTlM6ZGV0ZWN0X2xlYWtzPTAiICQoQ0hFQ0tFUikgLi90ZXN0YXBpJChFWEVFWFQpICYmIFwKLSsJICAgICQoQ0hFQ0tFUikgLi90ZXN0Y2hhciQoRVhFRVhUKSAmJiBcCi0rCSAgICAkKENIRUNLRVIpIC4vdGVzdGRpY3QkKEVYRUVYVCkgJiYgXAotKwkgICAgJChDSEVDS0VSKSAuL3J1bnhtbGNvbmYkKEVYRUVYVCkKLSAJQChpZiBbICIkKFBZVEhPTl9TVUJESVIpIiAhPSAiIiBdIDsgdGhlbiBjZCBweXRob24gOyBcCi0gCSAgICAkKE1BS0UpIHRlc3RzIDsgZmkpCi0gCi1AQCAtMjI5LDcgKzI0Myw3IEBACi0gCi0gQVBJdGVzdHM6IHRlc3RhcGkkKEVYRUVYVCkKLSAJQGVjaG8gIiMjIFJ1bm5pbmcgdGhlIEFQSSByZWdyZXNzaW9uIHRlc3RzIHRoaXMgbWF5IHRha2UgYSBsaXR0bGUgd2hpbGUiCi0tCS1AKCQoQ0hFQ0tFUikgJCh0b3BfYnVpbGRkaXIpL3Rlc3RhcGkgLXEpCi0rCS1AKEFTQU5fT1BUSU9OUz0iJCRBU0FOX09QVElPTlM6ZGV0ZWN0X2xlYWtzPTAiICQoQ0hFQ0tFUikgJCh0b3BfYnVpbGRkaXIpL3Rlc3RhcGkgLXEpCi0gCi0gSFRNTHRlc3RzIDogdGVzdEhUTUwkKEVYRUVYVCkKLSAJQChlY2hvID4gLm1lbWR1bXApCisKIGRpZmYgLXVOciBhL3J1bnN1aXRlLmMgYi9ydW5zdWl0ZS5jCiAtLS0gYS9ydW5zdWl0ZS5jCTIwMTMtMDQtMTIgMTY6MTc6MTEuNDYyODIzMjM4ICswMjAwCiArKysgYi9ydW5zdWl0ZS5jCTIwMTMtMDQtMTcgMTQ6MDc6MjQuMzUyNjkzMjExICswMjAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZGIyOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLVNVTU1BUlkgPSAiWE1MIEMgUGFyc2VyIExpYnJhcnkgYW5kIFRvb2xraXQiCi1ERVNDUklQVElPTiA9ICJUaGUgWE1MIFBhcnNlciBMaWJyYXJ5IGFsbG93cyBmb3IgbWFuaXB1bGF0aW9uIG9mIFhNTCBmaWxlcy4gIExpYnhtbDIgZXhwb3J0cyBQdXNoIGFuZCBQdWxsIHR5cGUgcGFyc2VyIGludGVyZmFjZXMgZm9yIGJvdGggWE1MIGFuZCBIVE1MLiAgSXQgY2FuIGRvIERURCB2YWxpZGF0aW9uIGF0IHBhcnNlIHRpbWUsIG9uIGEgcGFyc2VkIGRvY3VtZW50IGluc3RhbmNlIG9yIHdpdGggYW4gYXJiaXRyYXJ5IERURC4gIExpYnhtbDIgaW5jbHVkZXMgY29tcGxldGUgWFBhdGgsIFhQb2ludGVyIGFuZCBYaW5jbHVkZSBpbXBsZW1lbnRhdGlvbnMuICBJdCBhbHNvIGhhcyBhIFNBWCBsaWtlIGludGVyZmFjZSwgd2hpY2ggaXMgZGVzaWduZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIEV4cGF0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cueG1sc29mdC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9bGlieG1sMiIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0yMDQ0NDE3ZTJlNTAwNmI2NWE4YjkwNjdiNjgzZmNmMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9oYXNoLmM7YmVnaW5saW5lPTY7ZW5kbGluZT0xNTttZDU9OTZmNzI5NjYwNWVhZTgwNzY3MGZiMDg5NDc4Mjk5NjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlzdC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTM7bWQ1PWNkYmZhM2RlZTUxYzA5OWVkYjA0ZTM5Zjc2MmVlOTA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyaW8uYztiZWdpbmxpbmU9NTtlbmRsaW5lPTE0O21kNT02YzAyNTc1M2M4NmQ5NTg3MjJlYzc2ZTk0Y2FlOTMyZSIKLQotREVQRU5EUyA9ICJ6bGliIHZpcnR1YWwvbGliaWNvbnYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy9zb3VyY2VzL2xpYnhtbDItJHtQVn0udGFyLmd6O25hbWU9bGlidGFyIFwKLSAgICAgICAgICAgaHR0cDovL3d3dy53My5vcmcvWE1ML1Rlc3QveG1sdHMyMDA4MDgyNy50YXIuZ3o7bmFtZT10ZXN0dGFyIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbC02NGJpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbnNpZGVjbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW50ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24tc2l0ZXBhY2thZ2VzLWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLWZpeF9ub2RlX2NvbXBhcmlzb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlieG1sMi1DVkUtMjAxNi01MTMxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbDItQ1ZFLTIwMTYtNDY1OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbDItZml4X2FuZF9zaW1wbGlmeV94bWxQYXJzZVN0YXJ0VGFnMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLUNWRS0yMDE3LTkwNDdfQ1ZFLTIwMTctOTA0OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLUNWRS0yMDE3LTkwNDlfQ1ZFLTIwMTctOTA1MC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLUNWRS0yMDE3LTU5NjkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlieG1sMi1DVkUtMjAxNy0wNjYzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbDItQ1ZFLTIwMTctODg3Mi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbGlidGFyLm1kNXN1bV0gPSAiYWUyNDkxNjVjMTczYjFmZjM4NmVlOGFkNjc2ODE1ZjUiCi1TUkNfVVJJW2xpYnRhci5zaGEyNTZzdW1dID0gImZmYjkxMTE5MWU1MDliOTY2ZGViNTVkZTcwNTM4N2YxNDE1NmUxYTU2YjIxODI0MzU3Y2RmMDA1MzIzMzYzM2MiCi1TUkNfVVJJW3Rlc3R0YXIubWQ1c3VtXSA9ICJhZTNkMWViZTAwMGEzOTcyYWZhMTA0Y2E3ZjBlMWI0YSIKLVNSQ19VUklbdGVzdHRhci5zaGEyNTZzdW1dID0gIjk2MTUxNjg1Y2VjOTk3ZTFmOWYzMzg3ZTM2MjZkNjFlNjI4NGQ0ZDZlNjZlMGU0NDBjMjA5Mjg2YzAzZTljYzciCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0veG1sMi1jb25maWciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24gXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtQWVRIT059LC0td2l0aG91dC1weXRob24scHl0aG9uMyIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgcHRlc3QKLQotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ2xpYmdjYyBweXRob24zLWNvcmUgcHl0aG9uMy1hcmdwYXJzZSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zaGVsbCBweXRob24zLXNpZ25hbCBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXVuaXR0ZXN0ICR7UE59LXB5dGhvbicsICcnLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59LXB5dGhvbiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjMtY29yZScsICcnLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1nY29udi1lYmNkaWMtdXMgZ2xpYmMtZ2NvbnYtaWJtMTE0MSBnbGliYy1nY29udi1pc284ODU5LTUiCi0KLWV4cG9ydCBQWVRIT05fU0lURV9QQUNLQUdFUz0iJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLSMgV0FSTklORzogemxpYiBpcyByZXF1aXJlZCBmb3IgUlBNIHVzZQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbGVnYWN5IC0td2l0aC1jYXRhbG9nIC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC1mZXhjZXB0aW9ucyIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLUVYVFJBX09FQ09ORl9saW51eHN0ZGJhc2UgPSAiLS13aXRoLWRlYnVnIC0td2l0aC1sZWdhY3kgLS13aXRoLWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICAjIGF1dG9uYW1lciB3b3VsZCBjYWxsIHRoaXMgbGlieG1sMi0yLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0Ci0gICAgaWYgZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpOgotICAgICAgICBkLnNldFZhcignUEtHX2xpYnhtbDInLCAnJHtNTFBSRUZJWH1saWJ4bWwyJykKLX0KLQotUEFDS0FHRVMgKz0gIiR7UE59LXV0aWxzICR7UE59LXB5dGhvbiIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94bWwyQ29uZi5zaCAke2xpYmRpcn0vY21ha2UvKiIKLUZJTEVTXyR7UE59LXV0aWxzICs9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIGV4ZWN1dGFibGVzIHRha2UgbG9uZ2VyIHRvIHBhY2thZ2U6IHRoZXNlIHNob3VsZCBub3QgYmUgZXhlY3V0YWJsZQotCWZpbmQgJHtXT1JLRElSfS94bWxjb25mLyAtdHlwZSBmIC1leGVjIGNobW9kIC14IHt9IFwrCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCWNwIC1yICR7V09SS0RJUn0veG1sY29uZiAke0R9JHtQVEVTVF9QQVRIfQotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdweXRob24nLCBkKX0iIF07IHRoZW4KLQkJc2VkIC1pIC1lICdzfF5cKFBZVEhPTiA9IFwpLip8XDEke1VTUkJJTlBBVEh9LyR7UFlUSE9OX1BOfXwnIFwKLQkJICAgICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbi90ZXN0cy9NYWtlZmlsZQotCQlncmVwIC1sclogJyMhL3Vzci9iaW4vcHl0aG9uJyAke0R9JHtQVEVTVF9QQVRIfS9weXRob24gfAotCQkJeGFyZ3MgLTAgc2VkIC1pIC1lICdzfC91c3IvYmluL3B5dGhvbnwke1VTUkJJTlBBVEh9LyR7UFlUSE9OX1BOfXwnCi0JZmkKLQkjUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBmcm9tIHZhcmlvdXMgTWFrZWZpbGVzCi0JZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAotCSAgICBzZWQgLWkgXAotCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCSAgICAtZSAnL15SRUxEQVRFL2QnIFwKLQkgICAge30gKwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotCSMgRG9jcyBhcmUgbm90IG5lZWRlZCBpbiB0aGUgbmF0aXZlIGNhc2UKLQlybSAke0R9JHtkYXRhZGlyfS9ndGstZG9jIC1yZgotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZiOTBhNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNy5iYgpAQCAtMCwwICsxLDEwNSBAQAorU1VNTUFSWSA9ICJYTUwgQyBQYXJzZXIgTGlicmFyeSBhbmQgVG9vbGtpdCIKK0RFU0NSSVBUSU9OID0gIlRoZSBYTUwgUGFyc2VyIExpYnJhcnkgYWxsb3dzIGZvciBtYW5pcHVsYXRpb24gb2YgWE1MIGZpbGVzLiAgTGlieG1sMiBleHBvcnRzIFB1c2ggYW5kIFB1bGwgdHlwZSBwYXJzZXIgaW50ZXJmYWNlcyBmb3IgYm90aCBYTUwgYW5kIEhUTUwuICBJdCBjYW4gZG8gRFREIHZhbGlkYXRpb24gYXQgcGFyc2UgdGltZSwgb24gYSBwYXJzZWQgZG9jdW1lbnQgaW5zdGFuY2Ugb3Igd2l0aCBhbiBhcmJpdHJhcnkgRFRELiAgTGlieG1sMiBpbmNsdWRlcyBjb21wbGV0ZSBYUGF0aCwgWFBvaW50ZXIgYW5kIFhpbmNsdWRlIGltcGxlbWVudGF0aW9ucy4gIEl0IGFsc28gaGFzIGEgU0FYIGxpa2UgaW50ZXJmYWNlLCB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlIHdpdGggRXhwYXQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD1saWJ4bWwyIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTIwNDQ0MTdlMmU1MDA2YjY1YThiOTA2N2I2ODNmY2YxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2hhc2guYztiZWdpbmxpbmU9NjtlbmRsaW5lPTE1O21kNT05NmY3Mjk2NjA1ZWFlODA3NjcwZmIwODk0NzgyOTk2OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saXN0LmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xMzttZDU9Y2RiZmEzZGVlNTFjMDk5ZWRiMDRlMzlmNzYyZWU5MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJpby5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTQ7bWQ1PTZjMDI1NzUzYzg2ZDk1ODcyMmVjNzZlOTRjYWU5MzJlIgorCitERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpY29udiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnL3NvdXJjZXMvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAorICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC94bWx0czIwMDgwODI3LnRhci5nejtuYW1lPXRlc3R0YXIgXAorICAgICAgICAgICBmaWxlOi8vbGlieG1sLTY0Yml0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Fuc2lkZWNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bnRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbi1zaXRlcGFja2FnZXMtZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnhtbC1tNC11c2UtcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtZXhlY3V0aW9uLW9mLXB0ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVtsaWJ0YXIubWQ1c3VtXSA9ICI4OTY2MDg2NDFhMDhiNDY1MDk4YTQwZGRmNTFjZWZiYSIKK1NSQ19VUklbbGlidGFyLnNoYTI1NnN1bV0gPSAiZjYzYzVlN2QzMDM2MmVkMjhiMzhiZmExYWM2MzEzZjlhODAyMzA3MjBiN2ZiNmM4MDU3NWVlYWIzZmY1OTAwYyIKK1NSQ19VUklbdGVzdHRhci5tZDVzdW1dID0gImFlM2QxZWJlMDAwYTM5NzJhZmExMDRjYTdmMGUxYjRhIgorU1JDX1VSSVt0ZXN0dGFyLnNoYTI1NnN1bV0gPSAiOTYxNTE2ODVjZWM5OTdlMWY5ZjMzODdlMzYyNmQ2MWU2Mjg0ZDRkNmU2NmUwZTQ0MGMyMDkyODZjMDNlOWNjNyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS94bWwyLWNvbmZpZyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbj0ke1BZVEhPTn0sLS13aXRob3V0LXB5dGhvbixweXRob24zIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBwdGVzdAorCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zbmF0aXZlJywgJycsIGQpfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAnbGliZ2NjIHB5dGhvbjMtY29yZSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zaGVsbCAgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy11bml0dGVzdCAke1BOfS1weXRob24nLCAnJywgZCl9IgorCitSREVQRU5EU18ke1BOfS1weXRob24gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zLWNvcmUnLCAnJywgZCl9IgorCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtZWJjZGljLXVzIGdsaWJjLWdjb252LWlibTExNDEgZ2xpYmMtZ2NvbnYtaXNvODg1OS01IgorCitleHBvcnQgUFlUSE9OX1NJVEVfUEFDS0FHRVM9IiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCisjIFdBUk5JTkc6IHpsaWIgaXMgcmVxdWlyZWQgZm9yIFJQTSB1c2UKK0VYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtZGVidWcgLS13aXRob3V0LWxlZ2FjeSAtLXdpdGgtY2F0YWxvZyAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtZmV4Y2VwdGlvbnMiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1sZWdhY3kgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0td2l0aG91dC1sZWdhY3kgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCitFWFRSQV9PRUNPTkZfbGludXhzdGRiYXNlID0gIi0td2l0aC1kZWJ1ZyAtLXdpdGgtbGVnYWN5IC0td2l0aC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgIyBhdXRvbmFtZXIgd291bGQgY2FsbCB0aGlzIGxpYnhtbDItMiwgYnV0IHdlIGRvbid0IHdhbnQgdGhhdAorICAgIGlmIGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnKToKKyAgICAgICAgZC5zZXRWYXIoJ1BLR19saWJ4bWwyJywgJyR7TUxQUkVGSVh9bGlieG1sMicpCit9CisKK1BBQ0tBR0VTICs9ICIke1BOfS11dGlscyAke1BOfS1weXRob24iCisKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veG1sMkNvbmYuc2ggJHtsaWJkaXJ9L2NtYWtlLyoiCitGSUxFU18ke1BOfS11dGlscyArPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfS1weXRob24gKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBleGVjdXRhYmxlcyB0YWtlIGxvbmdlciB0byBwYWNrYWdlOiB0aGVzZSBzaG91bGQgbm90IGJlIGV4ZWN1dGFibGUKKwlmaW5kICR7V09SS0RJUn0veG1sY29uZi8gLXR5cGUgZiAtZXhlYyBjaG1vZCAteCB7fSBcKworfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgY2hlY2stYW0KK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJY3AgLXIgJHtXT1JLRElSfS94bWxjb25mICR7RH0ke1BURVNUX1BBVEh9CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsIGQpfSIgXTsgdGhlbgorCQlzZWQgLWkgLWUgJ3N8XlwoUFlUSE9OID0gXCkuKnxcMSR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcgXAorCQkgICAgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uL3Rlc3RzL01ha2VmaWxlCisJCWdyZXAgLWxyWiAnIyEvdXNyL2Jpbi9weXRob24nICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbiB8CisJCQl4YXJncyAtMCBzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcKKwlmaQorCSNSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzIGZyb20gdmFyaW91cyBNYWtlZmlsZXMKKwlmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisJICAgIHNlZCAtaSBcCisJICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1lICcvXlJFTERBVEUvZCcgXAorCSAgICB7fSArCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisJIyBEb2NzIGFyZSBub3QgbmVlZGVkIGluIHRoZSBuYXRpdmUgY2FzZQorCXJtICR7RH0ke2RhdGFkaXJ9L2d0ay1kb2MgLXJmCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDgzZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvZHVtbXktc2RrLXBhY2thZ2UuaW5jCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiRHVtbXkgcGFja2FnZXMgd2hpY2ggaGFuZGxlIGV4Y2x1ZGluZyBwYWNrYWdlcyBmcm9tIHRoZSBzZGssIGUuZy4gZW5zdXJpbmcgcGVybCBpcyBleGNsdWRlZCBmcm9tIGJ1aWxkdG9vbHMiCitMSUNFTlNFID0gIk1JVCIKKworaW5oZXJpdCBhbGxhcmNoCisKK3B5dGhvbigpIHsKKyAgICAjIFB1dCB0aGUgcGFja2FnZSBzb21ld2hlcmUgc2VwYXJhdGUgdG8gZW5zdXJlIGl0J3MgbmV2ZXIgdXNlZCBleGNlcHQKKyAgICAjIHdoZW4gd2Ugd2FudCBpdAorICAgICMgKG5vdGUgdGhhdCB3ZSBoYXZlIHRvIGRvIHRoaXMgaW4gYW5vbnltb3VzIHB5dGhvbiBoZXJlIHRvIGF2b2lkCisgICAgIyBhbGxhcmNoLmJiY2xhc3MgZGlzYWJsaW5nIGl0c2VsZikKKyAgICBkLnNldFZhcignUEFDS0FHRV9BUkNIJywgJyR7RFVNTVlBUkNIfScpCit9CisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK1BSW3ZhcmRlcHNdICs9ICJEVU1NWVBST1ZJREVTIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBwID0gZC5nZXRWYXIoIlBOIikKKyAgICBkLmFwcGVuZFZhcigiUlBST1ZJREVTXyVzIiAlIHAsICIke0RVTU1ZUFJPVklERVN9IikKKyAgICAjZC5hcHBlbmRWYXIoIlJDT05GTElDVFNfJXMiICUgcCwgIiR7RFVNTVlQUk9WSURFU30iKQorICAgICNkLmFwcGVuZFZhcigiUlJFUExBQ0VTXyVzIiAlIHAsICIke0RVTU1ZUFJPVklERVN9IikKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1lbnZpcm9ubWVudC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZW52aXJvbm1lbnQuYmIKaW5kZXggMjlkYTEyMS4uMDlmNzU3YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1lbnZpcm9ubWVudC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWVudmlyb25tZW50LmJiCkBAIC01NSw2ICs1NSw4IEBACiAKIAkjIEFkZCB2ZXJzaW9uIGluZm9ybWF0aW9uCiAJdG9vbGNoYWluX2NyZWF0ZV9zZGtfdmVyc2lvbiAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vdmVyc2lvbi0ke1JFQUxfTVVMVElNQUNIX1RBUkdFVF9TWVN9CisKKwl0b29sY2hhaW5fY3JlYXRlX3Bvc3RfcmVsb2NhdGVfc2NyaXB0ICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9wb3N0LXJlbG9jYXRlLXNldHVwLnNoCiB9CiAKIGRvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLXdvcmxkLXBrZ2RhdGEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLXdvcmxkLXBrZ2RhdGEuYmIKaW5kZXggMDJhYmQ4YS4uYjI5OTg2MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS13b3JsZC1wa2dkYXRhLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtd29ybGQtcGtnZGF0YS5iYgpAQCAtMyw2ICszLDggQEAKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIAorUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKwogYWRkdGFzayBkb19hbGxwYWNrYWdlZGF0YSBiZWZvcmUgZG9fYnVpbGQKIGRvX2FsbHBhY2thZ2VkYXRhKCkgewogCToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15LmJiCmluZGV4IDBiNThhMDIuLmY1YmNiODIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLWJ1aWxkdG9vbHMtcGVybC1kdW1teS5iYgpAQCAtMSwyNiArMSwxMSBAQAotU1VNTUFSWSA9ICJEdW1teSBwYWNrYWdlIHdoaWNoIGVuc3VyZXMgcGVybCBpcyBleGNsdWRlZCBmcm9tIGJ1aWxkdG9vbHMiCi1MSUNFTlNFID0gIk1JVCIKK0RVTU1ZQVJDSCA9ICJidWlsZHRvb2xzLWR1bW15LSR7U0RLUEtHU1VGRklYfSIKIAotaW5oZXJpdCBhbGxhcmNoCitEVU1NWVBST1ZJREVTID0gIlwKKyAgICBuYXRpdmVzZGstcGVybCBcCisgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtcGF0aCIKIAogUFIgPSAicjIiCiAKLXB5dGhvbigpIHsKLSAgICAjIFB1dCB0aGUgcGFja2FnZSBzb21ld2hlcmUgc2VwYXJhdGUgdG8gZW5zdXJlIGl0J3MgbmV2ZXIgdXNlZCBleGNlcHQKLSAgICAjIHdoZW4gd2Ugd2FudCBpdAotICAgICMgKG5vdGUgdGhhdCB3ZSBoYXZlIHRvIGRvIHRoaXMgaW4gYW5vbnltb3VzIHB5dGhvbiBoZXJlIHRvIGF2b2lkCi0gICAgIyBhbGxhcmNoLmJiY2xhc3MgZGlzYWJsaW5nIGl0c2VsZikKLSAgICBkLnNldFZhcignUEFDS0FHRV9BUkNIJywgJ2J1aWxkdG9vbHMtZHVtbXktJHtTREtQS0dTVUZGSVh9JykKLX0KK3JlcXVpcmUgZHVtbXktc2RrLXBhY2thZ2UuaW5jCiAKLVBFUkxQQUNLQUdFUyA9ICJuYXRpdmVzZGstcGVybCBcCi0gICAgICAgICAgICAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtcGF0aCIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7Ci0gICAgZC5hcHBlbmRWYXIoZC5leHBhbmQoJ1JQUk9WSURFU18ke1BOfScpLCAnJHtQRVJMUEFDS0FHRVN9JykKLSAgICBkLmFwcGVuZFZhcihkLmV4cGFuZCgnUkNPTkZMSUNUU18ke1BOfScpLCAnJHtQRVJMUEFDS0FHRVN9JykKLSAgICBkLmFwcGVuZFZhcihkLmV4cGFuZCgnUlJFUExBQ0VTXyR7UE59JyksICcke1BFUkxQQUNLQUdFU30nKQotfQotCitpbmhlcml0IG5hdGl2ZXNkawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1zZGstcHJvdmlkZXMtZHVtbXkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFhNzI3ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1zZGstcHJvdmlkZXMtZHVtbXkuYmIKQEAgLTAsMCArMSwxNSBAQAorRFVNTVlBUkNIID0gInNkay1wcm92aWRlcy1kdW1teS0ke1NES1BLR1NVRkZJWH0iCisKKyMgQWRkIC9iaW4vc2g/CitEVU1NWVBST1ZJREVTID0gIlwKKyAgICAvYmluL2Jhc2ggXAorICAgIC91c3IvYmluL2VudiBcCisgICAgL3Vzci9iaW4vcGVybCBcCisgICAgcGtnY29uZmlnIFwKKyAgICBsaWJHTC5zbygpKDY0Yml0KSBcCisgICAgbGliR0wuc28gXAorIgorCityZXF1aXJlIGR1bW15LXNkay1wYWNrYWdlLmluYworCitpbmhlcml0IG5hdGl2ZXNkawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvc2lnbmluZy1rZXlzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvc2lnbmluZy1rZXlzLmJiCmluZGV4IDJjMWNjMzguLjFlMWM3ZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3NpZ25pbmcta2V5cy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9zaWduaW5nLWtleXMuYmIKQEAgLTQxLDYgKzQxLDcgQEAKIH0KIGRvX2dldF9wdWJsaWNfa2V5c1tjbGVhbmRpcnNdID0gIiR7Qn0iCiBhZGR0YXNrIGdldF9wdWJsaWNfa2V5cyBiZWZvcmUgZG9faW5zdGFsbAorZG9fZ2V0X3B1YmxpY19rZXlzW2RlcGVuZHNdICs9ICJnbnVwZy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAogZG9faW5zdGFsbCAoKSB7CiAgICAgaWYgWyAtZiAiJHtCfS9ycG0ta2V5IiBdOyB0aGVuCkBAIC02OCw3ICs2OSw4IEBACiBkb19kZXBsb3lbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7REVQTE9ZX0RJUl9SUE19IgogIyBjbGVhbmRpcnMgc2hvdWxkIHBvc3NpYmx5IGJlIGluIGRlcGxveS5iYmNsYXNzIGJ1dCB3ZSBuZWVkIGl0CiBkb19kZXBsb3lbY2xlYW5kaXJzXSA9ICIke0RFUExPWURJUn0iCi0jIGNsZWFyIHN0YW1wLWV4dHJhLWluZm8gc2luY2UgTUFDSElORSBpcyBub3JtYWxseSBwdXQgdGhlcmUgYnkgZGVwbG95LmJiY2xhc3MKKyMgY2xlYXIgc3RhbXAtZXh0cmEtaW5mbyBzaW5jZSBNQUNISU5FX0FSQ0ggaXMgbm9ybWFsbHkgcHV0IHRoZXJlIGJ5CisjIGRlcGxveS5iYmNsYXNzCiBkb19kZXBsb3lbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogYWRkdGFzayBkZXBsb3kgYWZ0ZXIgZG9fZ2V0X3B1YmxpY19rZXlzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS90YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNGQxNWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS90YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15LmJiCkBAIC0wLDAgKzEsMTEgQEAKK0RVTU1ZQVJDSCA9ICJzZGstcHJvdmlkZXMtZHVtbXktdGFyZ2V0IgorCitEVU1NWVBST1ZJREVTID0gIlwKKyAgICAvYmluL3NoIFwKKyAgICAvYmluL2Jhc2ggXAorICAgIC91c3IvYmluL2VudiBcCisgICAgL3Vzci9iaW4vcGVybCBcCisgICAgcGtnY29uZmlnIFwKKyIKKworcmVxdWlyZSBkdW1teS1zZGstcGFja2FnZS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3Rlc3RleHBvcnQtdGFyYmFsbC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3Rlc3RleHBvcnQtdGFyYmFsbC5iYgppbmRleCA3MmY1NTMxLi5jMzhhYzkwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS90ZXN0ZXhwb3J0LXRhcmJhbGwuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdGVzdGV4cG9ydC10YXJiYWxsLmJiCkBAIC0xMCw3ICsxMCwxMyBAQAogCiBUT09MQ0hBSU5fSE9TVF9UQVNLID89ICIke1RFU1RfRVhQT1JUX1NES19QQUNLQUdFU30iCiAKLVNES19QQUNLQUdFX0FSQ0hTICs9ICJ0ZXNleHBvcnQtdG9vbHMtJHtTREtQS0dTVUZGSVh9IgorTVVMVElNQUNIX1RBUkdFVF9TWVMgPSAiJHtTREtfQVJDSH0tbmF0aXZlc2RrJHtTREtfVkVORE9SfS0ke1NES19PU30iCitQQUNLQUdFX0FSQ0ggPSAiJHtTREtfQVJDSH1fJHtTREtfT1N9IgorUEFDS0FHRV9BUkNIUyA9ICIiCitUQVJHRVRfQVJDSCA9ICJub25lIgorVEFSR0VUX09TID0gIm5vbmUiCisKK1NES19QQUNLQUdFX0FSQ0hTICs9ICJ0ZXN0ZXhwb3J0LXRvb2xzLSR7U0RLUEtHU1VGRklYfSIKIAogVE9PTENIQUlOX09VVFBVVE5BTUUgPz0gIiR7VEVTVF9FWFBPUlRfU0RLX05BTUV9IgogCkBAIC0yMiw3ICsyOCwxNSBAQAogCiBpbmhlcml0IG1ldGEKIGluaGVyaXQgcG9wdWxhdGVfc2RrCi1pbmhlcml0IHRvb2xjaGFpbi1zY3JpcHRzCitpbmhlcml0IHRvb2xjaGFpbi1zY3JpcHRzLWJhc2UKK2luaGVyaXQgbm9wYWNrYWdlcworCitkZWx0YXNrIGluc3RhbGwKK2RlbHRhc2sgcG9wdWxhdGVfc3lzcm9vdAorCitkb19wb3B1bGF0ZV9zZGtbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtQQUNLQUdFX0FSQ0h9IgorCitSRUFMX01VTFRJTUFDSF9UQVJHRVRfU1lTID0gIm5vbmUiCiAKIGNyZWF0ZV9zZGtfZmlsZXNfYXBwZW5kICgpIHsKIAlybSAtZiAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vc2l0ZS1jb25maWctKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS91bmluYXRpdmUtdGFyYmFsbC5iYgppbmRleCA1ZmFiZjdmLi4zOGMzYTMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS91bmluYXRpdmUtdGFyYmFsbC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS91bmluYXRpdmUtdGFyYmFsbC5iYgpAQCAtMTMsNiArMTMsNyBAQAogICAgIG5hdGl2ZXNkay1nbGliYy1nY29udi11dGYtMTYgXAogICAgIG5hdGl2ZXNkay1nbGliYy1nY29udi1jcDEyNTIgXAogICAgIG5hdGl2ZXNkay1wYXRjaGVsZiBcCisgICAgbmF0aXZlc2RrLWxpYnhjcnlwdCBcCiAgICAgIgogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2JzZC1oZWFkZXJzL2JzZC1oZWFkZXJzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvYnNkLWhlYWRlcnMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9ic2QtaGVhZGVycy9ic2QtaGVhZGVycy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvYnNkLWhlYWRlcnMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9ic2QtaGVhZGVycy9ic2QtaGVhZGVycy9zeXMtY2RlZnMuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2JzZC1oZWFkZXJzL3N5cy1jZGVmcy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnNkLWhlYWRlcnMvYnNkLWhlYWRlcnMvc3lzLWNkZWZzLmgKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2JzZC1oZWFkZXJzL3N5cy1jZGVmcy5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnNkLWhlYWRlcnMvYnNkLWhlYWRlcnMvc3lzLXF1ZXVlLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9ic2QtaGVhZGVycy9zeXMtcXVldWUuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2JzZC1oZWFkZXJzL2JzZC1oZWFkZXJzL3N5cy1xdWV1ZS5oCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9ic2QtaGVhZGVycy9zeXMtcXVldWUuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2JzZC1oZWFkZXJzL2JzZC1oZWFkZXJzL3N5cy10cmVlLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9ic2QtaGVhZGVycy9zeXMtdHJlZS5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnNkLWhlYWRlcnMvYnNkLWhlYWRlcnMvc3lzLXRyZWUuaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvYnNkLWhlYWRlcnMvc3lzLXRyZWUuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC11dGlscy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wtdXRpbHMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRiODQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wtdXRpbHMuYmIKQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTggS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworREVTQ1JJUFRJT04gPSAiZ2V0Y29uZiwgZ2V0ZW50IGFuZCBpY29udiBpbXBsZW1lbnRhdGlvbnMgZm9yIG11c2wiCitIT01FUEFHRSA9ICJodHRwczovL2dpdC5hbHBpbmVsaW51eC5vcmcvY2dpdC9hcG9ydHMvdHJlZS9tYWluL211c2wiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSAmIEdQTC0yLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OWQwODIxNWU2MTFkYjg3YjM1N2U4Njc0YjRiNDI1NjQiCitTRUNUSU9OID0gInV0aWxzIgorCisjIERhdGUgb2YgdGhlIGNvbW1pdCBpbiBTUkNSRVYKK1BWID0gIjIwMTcwNDIxIgorCitTUkNSRVYgPSAiZmI1NjMwMTM4Y2NhYmJiYzE0YTE5ZDM3MjA5NmEwNGU0MjU3M2M3ZCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ib2x0bGludXgvbXVzbC11dGlscyIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUEFDS0FHRVMgPSsgIiR7UE59LWljb252IgorCitGSUxFU18ke1BOfS1pY29udiA9ICIke2JpbmRpcn0vaWNvbnYiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIuKi1tdXNsLioiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKaW5kZXggOWFmMTE3Mi4uYmE5YjFhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKQEAgLTksNyArOSw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm11c2wtbGliYy5vcmcvIgogTElDRU5TRSA9ICJNSVQiCiBTRUNUSU9OID0gImxpYnMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTc5MjhiN2FkMzJjZWRhMDQ5MzI0NzhlMzMwZTUyZjdmIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0yYjkwMzIwOTNjNDc2NWU0OWFlODVkZGViYTI5YWZmZiIKIAogUEFUSF9wcmVwZW5kID0gIiR7U1RBR0lOR19CSU5ESVJfVE9PTENIQUlOfS4ke1NUQUdJTkdDQ306IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9maWxlcy8wMDAxLU1ha2UtZHluYW1pYy1saW5rZXItYS1yZWxhdGl2ZS1zeW1saW5rLXRvLWxpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLzAwMDEtTWFrZS1keW5hbWljLWxpbmtlci1hLXJlbGF0aXZlLXN5bWxpbmstdG8tbGliYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvZmlsZXMvMDAwMS1NYWtlLWR5bmFtaWMtbGlua2VyLWEtcmVsYXRpdmUtc3ltbGluay10by1saWJjLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLzAwMDEtTWFrZS1keW5hbWljLWxpbmtlci1hLXJlbGF0aXZlLXN5bWxpbmstdG8tbGliYy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgppbmRleCBkYjI2YjRmLi45ZjhjNTEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgpAQCAtMyw5ICszLDkgQEAKIAogcmVxdWlyZSBtdXNsLmluYwogCi1TUkNSRVYgPSAiZWIwM2JkZTJmMjQ1ODI4NzRjYjcyYjU2Yzc4MTFiZjUxZGEwYzgxNyIKK1NSQ1JFViA9ICI1NWRmMDliZmNjYmZlMjFmYzlkZDdkOGY5NDU1MGMwZmYyNWFjZTA0IgogCi1QViA9ICIxLjEuMTgrZ2l0JHtTUkNQVn0iCitQViA9ICIxLjEuMTkrZ2l0JHtTUkNQVn0iCiAKICMgbWlycm9yIGlzIGF0IGdpdDovL2dpdGh1Yi5jb20va3Jhai9tdXNsLmdpdAogCkBAIC0xNSw3ICsxNSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLVBST1ZJREVTICs9ICJ2aXJ0dWFsL2xpYmMgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1mb3ItZ2NjIHZpcnR1YWwvbGliaWNvbnYgdmlydHVhbC9saWJpbnRsIgorUFJPVklERVMgKz0gInZpcnR1YWwvbGliYyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1saWJjLWZvci1nY2MgdmlydHVhbC9saWJpY29udiB2aXJ0dWFsL2xpYmludGwgdmlydHVhbC9jcnlwdCIKIAogREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscyBcCiAgICAgICAgICAgIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL0NWRS0yMDE3LTEzNzMyLUNWRS0yMDE3LTEzNzM0LUNWRS0yMDE3LTEzNzMwLUNWRS0yMDE3LTEzNzI5LUNWRS0yMDE3LTEzNzI4LUNWRS0yMDE3LTEzNzMxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExOTMzMmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NDEgKzAsMCBAQAotRnJvbSA0YmY3MmNiOGYxZDNhYTVmMzNjMzFlYjgxN2E1ZjAzMzhmNGFhZjZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyMCBTZXAgMjAxNyAwNTowMjowMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBJbXBvcnQgdXBzdHJlYW0gcGF0Y2ggMjAxNzA4MjYKLQotMjAxNzA4MjYKLQkrIGZpeGVzIGZvciAiaXRlcm0yIiAocmVwb3J0IGJ5IExlb25hcmRvIEJyb25kYW5pIFNjaGVua2VsKSAtVEQKLQkrIGNvcnJlY3RlZCBhIHdhcm5pbmcgZnJvbSB0aWMgYWJvdXQga2V5cyB3aGljaCBhcmUgdGhlIHNhbWUsIHRvIHNraXAKLQkgIG92ZXIgbWlzc2luZy9jYW5jZWxsZWQgdmFsdWVzLgotCSsgYWRkIGNoZWNrIGluIHRpYyBmb3IgdW5uZWNlc3NhcnkgdXNlIG9mICIyIiB0byBkZW5vdGUgYSBzaGlmdGVkCi0JICBzcGVjaWFsIGtleS4KLQkrIGltcHJvdmUgY2hlY2tzIGluIHRyaW1fc2dyMCwgY29tcF9wYXJzZS5jIGFuZCBwYXJzZV9lbnRyeS5jLCBmb3IKLQkgIGNhbmNlbGxlZCBzdHJpbmcgY2FwYWJpbGl0aWVzLgotCSsgYWRkIGNoZWNrIGluIF9uY19wYXJzZV9lbnRyeSgpIGZvciBpbnZhbGlkIGVudHJ5IG5hbWUsIHNldHRpbmcgdGhlCi0JICBuYW1lIHRvICJpbnZhbGlkIiB0byBhdm9pZCBwcm9ibGVtcyBzdG9yaW5nIGVudHJpZXMuCi0JKyBhZGQvaW1wcm92ZSBjaGVja3MgaW4gdGljJ3MgcGFyc2VyIHRvIGFkZHJlc3MgaW52YWxpZCBpbnB1dAotCSAgKyBhZGQgYSBjaGVjayBpbiBjb21wX3NjYW4uYyB0byBoYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSBhCi0JICAgIG5vbnRleHQgZmlsZSBlbmRpbmcgd2l0aCBhIE5VTCByYXRoZXIgdGhhbiBuZXdsaW5lIGlzIGdpdmVuIHRvIHRpYwotCSAgICBhcyBpbnB1dCAoUmVkaGF0ICMxNDg0Mjc0KS4KLQkgICsgYWxsb3cgZm9yIGNhbmNlbGxlZCBjYXBhYmlsaXRpZXMgaW4gX25jX3NhdmVfc3RyIChSZWRoYXQgIzE0ODQyNzYpLgotCSAgKyBhZGQgdmFsaWRpdHkgY2hlY2tzIGZvciAidXNlPSIgdGFyZ2V0IGluIF9uY19wYXJzZV9lbnRyeSAoUmVkaGF0Ci0JICAgICMxNDg0Mjg0KS4KLQkgICsgY2hlY2sgZm9yIGludmFsaWQgc3RyaW5ncyBpbiBwb3N0cHJvY2Vzc190ZXJtY2FwIChSZWRoYXQgIzE0ODQyODUpCi0JICArIHJlc2V0IHNlY29uZGFyeSBwb2ludGVycyBvbiBFT0YgaW4gbmV4dF9jaGFyKCkgKFJlZGhhdCAjMTQ4NDI4NykuCi0JICArIGd1YXJkIF9uY19zYWZlX3N0cmNweSgpIGFuZCBfbmNfc2FmZV9zdHJjYXQoKSBhZ2FpbnN0IGNhbGxzIHVzaW5nCi0JICAgIGNhbmNlbGxlZCBzdHJpbmdzIChSZWRoYXQgIzE0ODQyOTEpLgotCSsgY29ycmVjdCB0eXBvIGluIGN1cnNfbWVtbGVha3MuM3ggKFN2ZW4gSm9hY2hpbSkuCi0JKyBpbXByb3ZlIHRlc3QvY29uZmlndXJlIGNoZWNrcyBmb3Igc29tZSBjdXJzZXMgdmFyaWFudHMgbm90IGJhc2VkIG9uCi0JICBYL09wZW4gQ3Vyc2VzLgotCSsgYWRkIG9wdGlvbnMgZm9yIHRlc3QvY29uZmlndXJlIHRvIGRpc2FibGUgY2hlY2tzIGZvciBmb3JtLCBtZW51IGFuZAotCSAgcGFuZWwgbGlicmFyaWVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTEzNzMyLCBDVkUtMjAxNy0xMzczNCwgQ1ZFLTIwMTctMTM3MzAsIENWRS0yMDE3LTEzNzI5LCBDVkUtMjAxNy0xMzcyOCwgQ1ZFLTIwMTctMTM3MzEKLSAKLQotQXV0aG9yOiBTdmVuIEpvYWNoaW0gPHN2ZW5qb2FjQGdteC5kZT4KLVNpZ25lZC1vZmYtYnk6IE92aWRpdSBQYW5haXQgPG92aWRpdS5wYW5haXRAd2luZHJpdmVyLmNvbT4KLS0tLQotIGRpc3QubWsgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCi0gaW5jbHVkZS9uY3Vyc2VzX2RlZnMgICAgICAgIHwgIDQgKy0KLSBuY3Vyc2VzL3RpbmZvL2FsbG9jX2VudHJ5LmMgfCAgNCArLQotIG5jdXJzZXMvdGluZm8vY29tcF9wYXJzZS5jICB8IDEwICsrLS0tCi0gbmN1cnNlcy90aW5mby9jb21wX3NjYW4uYyAgIHwgIDYgKystCi0gbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jIHwgOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCi0gbmN1cnNlcy90aW5mby9zdHJpbmdzLmMgICAgIHwgIDkgKysrLS0KLSBuY3Vyc2VzL3RpbmZvL3RyaW1fc2dyMC5jICAgfCAgNCArLQotIHByb2dzL3RpYy5jICAgICAgICAgICAgICAgICB8IDc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSA5IGZpbGVzIGNoYW5nZWQsIDE1NyBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Rpc3QubWsgYi9kaXN0Lm1rCi1pbmRleCA5YWYyNjk5Li4yYzcwNDcyIDEwMDY0NAotLS0tIGEvZGlzdC5tawotKysrIGIvZGlzdC5tawotQEAgLTI1LDcgKzI1LDcgQEAKLSAjIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAgICAgICAgICMKLSAjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLS0jICRJZDogZGlzdC5tayx2IDEuMTE3MiAyMDE3LzA3LzEzIDAwOjE1OjI3IHRvbSBFeHAgJAotKyMgJElkOiBkaXN0Lm1rLHYgMS4xMTc5IDIwMTcvMDgvMjAgMTU6MzM6NDEgdG9tIEV4cCAkCi0gIyBNYWtlZmlsZSBmb3IgY3JlYXRpbmcgbmN1cnNlcyBkaXN0cmlidXRpb25zLgotICMKLSAjIFRoaXMgb25seSBuZWVkcyB0byBiZSB1c2VkIGRpcmVjdGx5IGFzIGEgbWFrZWZpbGUgYnkgZGV2ZWxvcGVycywgYnV0Ci1AQCAtMzcsNyArMzcsNyBAQCBTSEVMTCA9IC9iaW4vc2gKLSAjIFRoZXNlIGRlZmluZSB0aGUgbWFqb3IvbWlub3IvcGF0Y2ggdmVyc2lvbnMgb2YgbmN1cnNlcy4KLSBOQ1VSU0VTX01BSk9SID0gNgotIE5DVVJTRVNfTUlOT1IgPSAwCi0tTkNVUlNFU19QQVRDSCA9IDIwMTcwNzE1Ci0rTkNVUlNFU19QQVRDSCA9IDIwMTcwODI2Ci0gCi0gIyBXZSBkb24ndCBhcHBlbmQgdGhlIHBhdGNoIHRvIHRoZSB2ZXJzaW9uLCBzaW5jZSB0aGlzIG9ubHkgYXBwbGllcyB0byByZWxlYXNlcwotIFZFUlNJT04gPSAkKE5DVVJTRVNfTUFKT1IpLiQoTkNVUlNFU19NSU5PUikKLWRpZmYgLS1naXQgYS9pbmNsdWRlL25jdXJzZXNfZGVmcyBiL2luY2x1ZGUvbmN1cnNlc19kZWZzCi1pbmRleCBlNjYxMWI3Li5kMjM3ZGIxIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9uY3Vyc2VzX2RlZnMKLSsrKyBiL2luY2x1ZGUvbmN1cnNlc19kZWZzCi1AQCAtMSw0ICsxLDQgQEAKLS0jICRJZDogbmN1cnNlc19kZWZzLHYgMS43MyAyMDE3LzA2LzI0IDE0OjIwOjU3IHRvbSBFeHAgJAotKyMgJElkOiBuY3Vyc2VzX2RlZnMsdiAxLjc1IDIwMTcvMDgvMjAgMTY6NTA6MDQgdG9tIEV4cCAkCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxNiwyMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCi0gIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi1AQCAtNTAsNyArNTAsOSBAQCBIQVZFX0JTRF9TVFJJTkdfSAotIEhBVkVfQlRPV0MgCi0gSEFWRV9CVUlMVElOX0gKLSBIQVZFX0NIR0FUCTEKLStIQVZFX0NPTE9SX0NPTlRFTlQJMQotIEhBVkVfQ09MT1JfU0VUCTEKLStIQVZFX0NVUlNDUgkxCi0gSEFWRV9ESVJFTlRfSAotIEhBVkVfRVJSTk8KLSBIQVZFX0ZDTlRMX0gKLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2FsbG9jX2VudHJ5LmMgYi9uY3Vyc2VzL3RpbmZvL2FsbG9jX2VudHJ5LmMKLWluZGV4IDVkZTA5ZjEuLjA5Mzc0ZDYgMTAwNjQ0Ci0tLS0gYS9uY3Vyc2VzL3RpbmZvL2FsbG9jX2VudHJ5LmMKLSsrKyBiL25jdXJzZXMvdGluZm8vYWxsb2NfZW50cnkuYwotQEAgLTQ3LDcgKzQ3LDcgQEAKLSAKLSAjaW5jbHVkZSA8dGljLmg+Ci0gCi0tTU9EVUxFX0lEKCIkSWQ6IGFsbG9jX2VudHJ5LmMsdiAxLjYwIDIwMTcvMDYvMjcgMjM6NDg6NTUgdG9tIEV4cCAkIikKLStNT0RVTEVfSUQoIiRJZDogYWxsb2NfZW50cnkuYyx2IDEuNjEgMjAxNy8wOC8yNSAwOTowOTowOCB0b20gRXhwICQiKQotIAotICNkZWZpbmUgQUJTRU5UX09GRlNFVCAgICAtMQotICNkZWZpbmUgQ0FOQ0VMTEVEX09GRlNFVCAtMgotQEAgLTk4LDcgKzk4LDcgQEAgX25jX3NhdmVfc3RyKGNvbnN0IGNoYXIgKmNvbnN0IHN0cmluZykKLSAgICAgc2l6ZV90IG9sZF9uZXh0X2ZyZWUgPSBuZXh0X2ZyZWU7Ci0gICAgIHNpemVfdCBsZW47Ci0gCi0tICAgIGlmIChzdHJpbmcgPT0gMCkKLSsgICAgaWYgKCFWQUxJRF9TVFJJTkcoc3RyaW5nKSkKLSAJcmV0dXJuIF9uY19zYXZlX3N0cigiIik7Ci0gICAgIGxlbiA9IHN0cmxlbihzdHJpbmcpICsgMTsKLSAKLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYyBiL25jdXJzZXMvdGluZm8vY29tcF9wYXJzZS5jCi1pbmRleCAzNGU2MjE2Li41ODBkNGRmIDEwMDY0NAotLS0tIGEvbmN1cnNlcy90aW5mby9jb21wX3BhcnNlLmMKLSsrKyBiL25jdXJzZXMvdGluZm8vY29tcF9wYXJzZS5jCi1AQCAtNDcsNyArNDcsNyBAQAotIAotICNpbmNsdWRlIDx0aWMuaD4KLSAKLS1NT0RVTEVfSUQoIiRJZDogY29tcF9wYXJzZS5jLHYgMS45NiAyMDE3LzA0LzE1IDE1OjM2OjU4IHRvbSBFeHAgJCIpCi0rTU9EVUxFX0lEKCIkSWQ6IGNvbXBfcGFyc2UuYyx2IDEuOTkgMjAxNy8wOC8yNiAxNjoxNTo1MCB0b20gRXhwICQiKQotIAotIHN0YXRpYyB2b2lkIHNhbml0eV9jaGVjazIoVEVSTVRZUEUyICosIGJvb2wpOwotIE5DVVJTRVNfSU1QRVhQIHZvaWQgTkNVUlNFU19BUEkoKl9uY19jaGVja190ZXJtdHlwZTIpIChURVJNVFlQRTIgKiwgYm9vbCkgPSBzYW5pdHlfY2hlY2syOwotQEAgLTUxMCw5ICs1MTAsOSBAQCBzdGF0aWMgdm9pZAotIGZpeHVwX2Fjc2MoVEVSTVRZUEUyICp0cCwgaW50IGxpdGVyYWwpCi0gewotICAgICBpZiAoIWxpdGVyYWwpIHsKLS0JaWYgKGFjc19jaGFycyA9PSAwCi0tCSAgICAmJiBlbnRlcl9hbHRfY2hhcnNldF9tb2RlICE9IDAKLS0JICAgICYmIGV4aXRfYWx0X2NoYXJzZXRfbW9kZSAhPSAwKQotKwlpZiAoYWNzX2NoYXJzID09IEFCU0VOVF9TVFJJTkcKLSsJICAgICYmIFBSRVNFTlQoZW50ZXJfYWx0X2NoYXJzZXRfbW9kZSkKLSsJICAgICYmIFBSRVNFTlQoZXhpdF9hbHRfY2hhcnNldF9tb2RlKSkKLSAJICAgIGFjc19jaGFycyA9IHN0cmR1cChWVF9BQ1NDKTsKLSAgICAgfQotIH0KLUBAIC01NjgsOSArNTY4LDcgQEAgc2FuaXR5X2NoZWNrMihURVJNVFlQRTIgKnRwLCBib29sIGxpdGVyYWwpCi0gICAgIFBBSVJFRChlbnRlcl94b25fbW9kZSwgZXhpdF94b25fbW9kZSk7Ci0gICAgIFBBSVJFRChlbnRlcl9hbV9tb2RlLCBleGl0X2FtX21vZGUpOwotICAgICBBTkRNSVNTSU5HKGxhYmVsX29mZiwgbGFiZWxfb24pOwotLSNpZmRlZiByZW1vdmVfY2xvY2sKLSAgICAgUEFJUkVEKGRpc3BsYXlfY2xvY2ssIHJlbW92ZV9jbG9jayk7Ci0tI2VuZGlmCi0gICAgIEFORE1JU1NJTkcoc2V0X2NvbG9yX3BhaXIsIGluaXRpYWxpemVfcGFpcik7Ci0gfQotIAotZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vY29tcF9zY2FuLmMgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfc2Nhbi5jCi1pbmRleCA0MGQ3ZjZhLi5iMjA3MjU3IDEwMDY0NAotLS0tIGEvbmN1cnNlcy90aW5mby9jb21wX3NjYW4uYwotKysrIGIvbmN1cnNlcy90aW5mby9jb21wX3NjYW4uYwotQEAgLTUwLDcgKzUwLDcgQEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8dGljLmg+Ci0gCi0tTU9EVUxFX0lEKCIkSWQ6IGNvbXBfc2Nhbi5jLHYgMS4xMDYgMjAxNy8wNC8yMiAxMTo0MToxMiB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiBjb21wX3NjYW4uYyx2IDEuMTA4IDIwMTcvMDgvMjUgMjI6NTc6MjEgdG9tIEV4cCAkIikKLSAKLSAvKgotICAqIE1heGltdW0gbGVuZ3RoIG9mIHN0cmluZyBjYXBhYmlsaXR5IHdlJ2xsIGFjY2VwdCBiZWZvcmUgcmFpc2luZyBhbiBlcnJvci4KLUBAIC0xNjgsNiArMTY4LDggQEAgbmV4dF9jaGFyKHZvaWQpCi0gCWlmIChyZXN1bHQgIT0gMCkgewotIAkgICAgRnJlZUFuZE51bGwocmVzdWx0KTsKLSAJICAgIEZyZWVBbmROdWxsKHB1c2huYW1lKTsKLSsJICAgIGJ1ZnB0ciA9IDA7Ci0rCSAgICBidWZzdGFydCA9IDA7Ci0gCSAgICBhbGxvY2F0ZWQgPSAwOwotIAl9Ci0gCS8qCi1AQCAtMjIyLDYgKzIyNCw4IEBAIG5leHRfY2hhcih2b2lkKQotIAkJfQotIAkJaWYgKChidWZwdHIgPSBidWZzdGFydCkgIT0gMCkgewotIAkJICAgIHVzZWQgPSBzdHJsZW4oYnVmcHRyKTsKLSsJCSAgICBpZiAodXNlZCA9PSAwKQotKwkJCXJldHVybiAoRU9GKTsKLSAJCSAgICB3aGlsZSAoaXN3aGl0ZSgqYnVmcHRyKSkgewotIAkJCWlmICgqYnVmcHRyID09ICdcdCcpIHsKLSAJCQkgICAgX25jX2N1cnJfY29sID0gKF9uY19jdXJyX2NvbCB8IDcpICsgMTsKLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMgYi9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMKLWluZGV4IDNmYTJmMjUuLmJiYmZjYjIgMTAwNjQ0Ci0tLS0gYS9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMKLSsrKyBiL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYwotQEAgLTQ3LDcgKzQ3LDcgQEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8dGljLmg+Ci0gCi0tTU9EVUxFX0lEKCIkSWQ6IHBhcnNlX2VudHJ5LmMsdiAxLjg2IDIwMTcvMDYvMjggMDA6NTM6MTIgdG9tIEV4cCAkIikKLStNT0RVTEVfSUQoIiRJZDogcGFyc2VfZW50cnkuYyx2IDEuOTEgMjAxNy8wOC8yNiAxNjoxMzozNCB0b20gRXhwICQiKQotIAotICNpZmRlZiBMSU5UCi0gc3RhdGljIHNob3J0IGNvbnN0IHBhcmFtZXRyaXplZFtdID0KLUBAIC0xODAsNiArMTgwLDIwIEBAIF9uY19leHRlbmRfbmFtZXMoRU5UUlkgKiBlbnRyeXAsIGNoYXIgKm5hbWUsIGludCB0b2tlbl90eXBlKQotIH0KLSAjZW5kaWYgLyogTkNVUlNFU19YTkFNRVMgKi8KLSAKLStzdGF0aWMgYm9vbAotK3ZhbGlkX2VudHJ5bmFtZShjb25zdCBjaGFyICpuYW1lKQotK3sKLSsgICAgYm9vbCByZXN1bHQgPSBUUlVFOwotKyAgICBpbnQgY2g7Ci0rICAgIHdoaWxlICgoY2ggPSBVQ2hhcigqbmFtZSsrKSkgIT0gJ1wwJykgewotKwlpZiAoY2ggPD0gJyAnIHx8IGNoID4gJ34nIHx8IGNoID09ICcvJykgewotKwkgICAgcmVzdWx0ID0gRkFMU0U7Ci0rCSAgICBicmVhazsKLSsJfQotKyAgICB9Ci0rICAgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotIC8qCi0gICoJaW50Ci0gICoJX25jX3BhcnNlX2VudHJ5KGVudHJ5LCBsaXRlcmFsLCBzaWxlbnQpCi1AQCAtMjExLDYgKzIyNSw3IEBAIF9uY19wYXJzZV9lbnRyeShFTlRSWSAqIGVudHJ5cCwgaW50IGxpdGVyYWwsIGJvb2wgc2lsZW50KQotICAgICBpbnQgdG9rZW5fdHlwZTsKLSAgICAgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKmVudHJ5X3B0cjsKLSAgICAgY2hhciAqcHRyLCAqYmFzZTsKLSsgICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICAgYm9vbCBiYWRfdGNfdXNhZ2UgPSBGQUxTRTsKLSAKLSAgICAgdG9rZW5fdHlwZSA9IF9uY19nZXRfdG9rZW4oc2lsZW50KTsKLUBAIC0yNjEsNyArMjc2LDEyIEBAIF9uY19wYXJzZV9lbnRyeShFTlRSWSAqIGVudHJ5cCwgaW50IGxpdGVyYWwsIGJvb2wgc2lsZW50KQotICAgICAgKiByZXN1bHRzIGluIHRoZSB0ZXJtaW5hbCB0eXBlIGdldHRpbmcgcHJlbWF0dXJlbHkgc2V0IHRvIGNvcnJlc3BvbmQKLSAgICAgICogdG8gdGhhdCBvZiB0aGUgbmV4dCBlbnRyeS4KLSAgICAgICovCi0tICAgIF9uY19zZXRfdHlwZShfbmNfZmlyc3RfbmFtZShlbnRyeXAtPnR0ZXJtLnRlcm1fbmFtZXMpKTsKLSsgICAgbmFtZSA9IF9uY19maXJzdF9uYW1lKGVudHJ5cC0+dHRlcm0udGVybV9uYW1lcyk7Ci0rICAgIGlmICghdmFsaWRfZW50cnluYW1lKG5hbWUpKSB7Ci0rCV9uY193YXJuaW5nKCJpbnZhbGlkIGVudHJ5IG5hbWUgXCIlc1wiIiwgbmFtZSk7Ci0rCW5hbWUgPSAiaW52YWxpZCI7Ci0rICAgIH0KLSsgICAgX25jX3NldF90eXBlKG5hbWUpOwotIAotICAgICAvKiBjaGVjayBmb3Igb3Zlcmx5LWxvbmcgbmFtZXMgYW5kIGFsaWFzZXMgKi8KLSAgICAgZm9yIChiYXNlID0gZW50cnlwLT50dGVybS50ZXJtX25hbWVzOyAocHRyID0gc3RyY2hyKGJhc2UsICd8JykpICE9IDA7Ci1AQCAtMjgzLDEzICszMDMsMjQgQEAgX25jX3BhcnNlX2VudHJ5KEVOVFJZICogZW50cnlwLCBpbnQgbGl0ZXJhbCwgYm9vbCBzaWxlbnQpCi0gCWJvb2wgaXNfdXNlID0gKHN0cmNtcChfbmNfY3Vycl90b2tlbi50a19uYW1lLCAidXNlIikgPT0gMCk7Ci0gCWJvb2wgaXNfdGMgPSAhaXNfdXNlICYmIChzdHJjbXAoX25jX2N1cnJfdG9rZW4udGtfbmFtZSwgInRjIikgPT0gMCk7Ci0gCWlmIChpc191c2UgfHwgaXNfdGMpIHsKLSsJICAgIGlmICghVkFMSURfU1RSSU5HKF9uY19jdXJyX3Rva2VuLnRrX3ZhbHN0cmluZykKLSsJCXx8IF9uY19jdXJyX3Rva2VuLnRrX3ZhbHN0cmluZ1swXSA9PSAnXDAnKSB7Ci0rCQlfbmNfd2FybmluZygibWlzc2luZyBuYW1lIGZvciB1c2UtY2xhdXNlIik7Ci0rCQljb250aW51ZTsKLSsJICAgIH0gZWxzZSBpZiAoIXZhbGlkX2VudHJ5bmFtZShfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmcpKSB7Ci0rCQlfbmNfd2FybmluZygiaW52YWxpZCBuYW1lIGZvciB1c2UtY2xhdXNlIFwiJXNcIiIsCi0rCQkJICAgIF9uY19jdXJyX3Rva2VuLnRrX3ZhbHN0cmluZyk7Ci0rCQljb250aW51ZTsKLSsJICAgIH0gZWxzZSBpZiAoZW50cnlwLT5udXNlcyA+PSBNQVhfVVNFUykgewotKwkJX25jX3dhcm5pbmcoInRvbyBtYW55IHVzZS1jbGF1c2VzLCBpZ25vcmVkIFwiJXNcIiIsCi0rCQkJICAgIF9uY19jdXJyX3Rva2VuLnRrX3ZhbHN0cmluZyk7Ci0rCQljb250aW51ZTsKLSsJICAgIH0KLSAJICAgIGVudHJ5cC0+dXNlc1tlbnRyeXAtPm51c2VzXS5uYW1lID0gX25jX3NhdmVfc3RyKF9uY19jdXJyX3Rva2VuLnRrX3ZhbHN0cmluZyk7Ci0gCSAgICBlbnRyeXAtPnVzZXNbZW50cnlwLT5udXNlc10ubGluZSA9IF9uY19jdXJyX2xpbmU7Ci0tCSAgICBpZiAoVkFMSURfU1RSSU5HKGVudHJ5cC0+dXNlc1tlbnRyeXAtPm51c2VzXS5uYW1lKSkgewotLQkJZW50cnlwLT5udXNlcysrOwotLQkJaWYgKGVudHJ5cC0+bnVzZXMgPiAxICYmIGlzX3RjKSB7Ci0tCQkgICAgQkFEX1RDX1VTQUdFCi0tCQl9Ci0rCSAgICBlbnRyeXAtPm51c2VzKys7Ci0rCSAgICBpZiAoZW50cnlwLT5udXNlcyA+IDEgJiYgaXNfdGMpIHsKLSsJCUJBRF9UQ19VU0FHRQotIAkgICAgfQotIAl9IGVsc2UgewotIAkgICAgLyogbm9ybWFsIHRva2VuIGxvb2t1cCAqLwotQEAgLTY0MSwxMyArNjcyLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgQ19CU1tdID0gIlxiIjsKLSBzdGF0aWMgY29uc3QgY2hhciBDX0hUW10gPSAiXHQiOwotIAotIC8qCi0tICogTm90ZSB0aGF0IFdBTlRFRCBhbmQgUFJFU0VOVCBhcmUgbm90IHNpbXBsZSBpbnZlcnNlcyEgIElmIGEgY2FwYWJpbGl0eQotLSAqIGhhcyBiZWVuIGV4cGxpY2l0bHkgY2FuY2VsbGVkLCBpdCdzIG5vdCBjb25zaWRlcmVkIFdBTlRFRC4KLS0gKi8KLS0jZGVmaW5lIFdBTlRFRChzKQkoKHMpID09IEFCU0VOVF9TVFJJTkcpCi0tI2RlZmluZSBQUkVTRU5UKHMpCSgoKHMpICE9IEFCU0VOVF9TVFJJTkcpICYmICgocykgIT0gQ0FOQ0VMTEVEX1NUUklORykpCi0tCi0tLyoKLSAgKiBUaGlzIGJpdCBvZiBsZWdlcmRlbWFpbiB0dXJucyBhbGwgdGhlIHRlcm1pbmZvIHZhcmlhYmxlIG5hbWVzIGludG8KLSAgKiByZWZlcmVuY2VzIHRvIGxvY2F0aW9ucyBpbiB0aGUgYXJyYXlzIEJvb2xlYW5zLCBOdW1iZXJzLCBhbmQgU3RyaW5ncyAtLS0KLSAgKiBwcmVjaXNlbHkgd2hhdCdzIG5lZWRlZC4KLUBAIC02NzIsMTAgKzY5NiwxMCBAQCBwb3N0cHJvY2Vzc190ZXJtY2FwKFRFUk1UWVBFMiAqdHAsIGJvb2wgaGFzX2Jhc2UpCi0gCi0gICAgIC8qIGlmIHRoZXJlIHdhcyBhIHRjIGVudHJ5LCBhc3N1bWUgd2UgcGlja2VkIHVwIGRlZmF1bHRzIHZpYSB0aGF0ICovCi0gICAgIGlmICghaGFzX2Jhc2UpIHsKLS0JaWYgKFdBTlRFRChpbml0XzNzdHJpbmcpICYmIHRlcm1jYXBfaW5pdDIpCi0rCWlmIChXQU5URUQoaW5pdF8zc3RyaW5nKSAmJiBQUkVTRU5UKHRlcm1jYXBfaW5pdDIpKQotIAkgICAgaW5pdF8zc3RyaW5nID0gX25jX3NhdmVfc3RyKHRlcm1jYXBfaW5pdDIpOwotIAotLQlpZiAoV0FOVEVEKHJlc2V0XzJzdHJpbmcpICYmIHRlcm1jYXBfcmVzZXQpCi0rCWlmIChXQU5URUQocmVzZXRfMnN0cmluZykgJiYgUFJFU0VOVCh0ZXJtY2FwX3Jlc2V0KSkKLSAJICAgIHJlc2V0XzJzdHJpbmcgPSBfbmNfc2F2ZV9zdHIodGVybWNhcF9yZXNldCk7Ci0gCi0gCWlmIChXQU5URUQoY2FycmlhZ2VfcmV0dXJuKSkgewotQEAgLTc5MCw3ICs4MTQsNyBAQCBwb3N0cHJvY2Vzc190ZXJtY2FwKFRFUk1UWVBFMiAqdHAsIGJvb2wgaGFzX2Jhc2UpCi0gCWlmIChpbml0X3RhYnMgIT0gOCAmJiBpbml0X3RhYnMgIT0gQUJTRU5UX05VTUVSSUMpCi0gCSAgICBfbmNfd2FybmluZygiaGFyZHdhcmUgdGFicyB3aXRoIGEgd2lkdGggb3RoZXIgdGhhbiA4OiAlZCIsIGluaXRfdGFicyk7Ci0gCWVsc2UgewotLQkgICAgaWYgKHRhYiAmJiBfbmNfY2FwY21wKHRhYiwgQ19IVCkpCi0rCSAgICBpZiAoUFJFU0VOVCh0YWIpICYmIF9uY19jYXBjbXAodGFiLCBDX0hUKSkKLSAJCV9uY193YXJuaW5nKCJoYXJkd2FyZSB0YWJzIHdpdGggYSBub24tXkkgdGFiIHN0cmluZyAlcyIsCi0gCQkJICAgIF9uY192aXNidWYodGFiKSk7Ci0gCSAgICBlbHNlIHsKLUBAIC04NjcsMTcgKzg5MSwyMiBAQCBwb3N0cHJvY2Vzc190ZXJtY2FwKFRFUk1UWVBFMiAqdHAsIGJvb2wgaGFzX2Jhc2UpCi0gCSAgICAgKiBUaGUgbWFnaWMgbW9tZW50IC0tIGNvcHkgdGhlIG1hcHBlZCBrZXkgc3RyaW5nIG92ZXIsCi0gCSAgICAgKiBzdHJpcHBpbmcgb3V0IHBhZGRpbmcuCi0gCSAgICAgKi8KLS0JICAgIGZvciAoZHAgPSBidWYyLCBicCA9IHRwLT5TdHJpbmdzW2Zyb21fcHRyLT5udGVfaW5kZXhdOyAqYnA7IGJwKyspIHsKLS0JCWlmIChicFswXSA9PSAnJCcgJiYgYnBbMV0gPT0gJzwnKSB7Ci0tCQkgICAgd2hpbGUgKCpicCAmJiAqYnAgIT0gJz4nKSB7Ci0tCQkJKyticDsKLS0JCSAgICB9Ci0tCQl9IGVsc2UKLS0JCSAgICAqZHArKyA9ICpicDsKLS0JICAgIH0KLS0JICAgICpkcCA9ICdcMCc7Ci0rCSAgICBicCA9IHRwLT5TdHJpbmdzW2Zyb21fcHRyLT5udGVfaW5kZXhdOwotKwkgICAgaWYgKFZBTElEX1NUUklORyhicCkpIHsKLSsJCWZvciAoZHAgPSBidWYyOyAqYnA7IGJwKyspIHsKLSsJCSAgICBpZiAoYnBbMF0gPT0gJyQnICYmIGJwWzFdID09ICc8JykgewotKwkJCXdoaWxlICgqYnAgJiYgKmJwICE9ICc+JykgewotKwkJCSAgICArK2JwOwotKwkJCX0KLSsJCSAgICB9IGVsc2UKLSsJCQkqZHArKyA9ICpicDsKLSsJCX0KLSsJCSpkcCA9ICdcMCc7Ci0gCi0tCSAgICB0cC0+U3RyaW5nc1t0b19wdHItPm50ZV9pbmRleF0gPSBfbmNfc2F2ZV9zdHIoYnVmMik7Ci0rCQl0cC0+U3RyaW5nc1t0b19wdHItPm50ZV9pbmRleF0gPSBfbmNfc2F2ZV9zdHIoYnVmMik7Ci0rCSAgICB9IGVsc2UgewotKwkJdHAtPlN0cmluZ3NbdG9fcHRyLT5udGVfaW5kZXhdID0gYnA7Ci0rCSAgICB9Ci0gCX0KLSAKLSAJLyoKLUBAIC04ODYsNyArOTE1LDcgQEAgcG9zdHByb2Nlc3NfdGVybWNhcChURVJNVFlQRTIgKnRwLCBib29sIGhhc19iYXNlKQotIAkgKiBnb3QgbWFwcGVkIHRvIGtpY2gxIGFuZCBpbSB0byBrSUMgdG8gYXZvaWQgYSBjb2xsaXNpb24uCi0gCSAqIElmIHRoZSBkZXNjcmlwdGlvbiBoYXMgaW0gYnV0IG5vdCBpYywgaGFjayBrSUMgYmFjayB0byBraWNoMS4KLSAJICovCi0tCWlmIChmb3VuZGltICYmIFdBTlRFRChrZXlfaWMpICYmIGtleV9zaWMpIHsKLSsJaWYgKGZvdW5kaW0gJiYgV0FOVEVEKGtleV9pYykgJiYgUFJFU0VOVChrZXlfc2ljKSkgewotIAkgICAga2V5X2ljID0ga2V5X3NpYzsKLSAJICAgIGtleV9zaWMgPSBBQlNFTlRfU1RSSU5HOwotIAl9Ci1AQCAtOTM4LDkgKzk2Nyw5IEBAIHBvc3Rwcm9jZXNzX3Rlcm1jYXAoVEVSTVRZUEUyICp0cCwgYm9vbCBoYXNfYmFzZSkKLSAJICAgIGFjc19jaGFycyA9IF9uY19zYXZlX3N0cihidWYyKTsKLSAJICAgIF9uY193YXJuaW5nKCJhY3NjIHN0cmluZyBzeW50aGVzaXplZCBmcm9tIFhFTklYIGNhcGFiaWxpdGllcyIpOwotIAl9Ci0tICAgIH0gZWxzZSBpZiAoYWNzX2NoYXJzID09IDAKLS0JICAgICAgICYmIGVudGVyX2FsdF9jaGFyc2V0X21vZGUgIT0gMAotLQkgICAgICAgJiYgZXhpdF9hbHRfY2hhcnNldF9tb2RlICE9IDApIHsKLSsgICAgfSBlbHNlIGlmIChhY3NfY2hhcnMgPT0gQUJTRU5UX1NUUklORwotKwkgICAgICAgJiYgUFJFU0VOVChlbnRlcl9hbHRfY2hhcnNldF9tb2RlKQotKwkgICAgICAgJiYgUFJFU0VOVChleGl0X2FsdF9jaGFyc2V0X21vZGUpKSB7Ci0gCWFjc19jaGFycyA9IF9uY19zYXZlX3N0cihWVF9BQ1NDKTsKLSAgICAgfQotIH0KLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL3N0cmluZ3MuYyBiL25jdXJzZXMvdGluZm8vc3RyaW5ncy5jCi1pbmRleCAzOTNkOGU3Li4xMGVjNmM4IDEwMDY0NAotLS0tIGEvbmN1cnNlcy90aW5mby9zdHJpbmdzLmMKLSsrKyBiL25jdXJzZXMvdGluZm8vc3RyaW5ncy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLSAqIENvcHlyaWdodCAoYykgMjAwMC0yMDA3LDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCi0rICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMTIsMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCi0gICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKLUBAIC0zNSw4ICszNSw5IEBACi0gKiovCi0gCi0gI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0rI2luY2x1ZGUgPHRpYy5oPgotIAotLU1PRFVMRV9JRCgiJElkOiBzdHJpbmdzLmMsdiAxLjggMjAxMi8wMi8yMiAyMjozNDozMSB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiBzdHJpbmdzLmMsdiAxLjkgMjAxNy8wOC8yNiAxMzoxNjoxMSB0b20gRXhwICQiKQotIAotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogVXNlZnVsIHN0cmluZyBmdW5jdGlvbnMgKGVzcGVjaWFsbHkgZm9yIG12Y3VyKQotQEAgLTEwNSw3ICsxMDYsNyBAQCBfbmNfc3RyX2NvcHkoc3RyaW5nX2Rlc2MgKiBkc3QsIHN0cmluZ19kZXNjICogc3JjKQotIE5DVVJTRVNfRVhQT1JUKGJvb2wpCi0gX25jX3NhZmVfc3RyY2F0KHN0cmluZ19kZXNjICogZHN0LCBjb25zdCBjaGFyICpzcmMpCi0gewotLSAgICBpZiAoc3JjICE9IDApIHsKLSsgICAgaWYgKFBSRVNFTlQoc3JjKSkgewotIAlzaXplX3QgbGVuID0gc3RybGVuKHNyYyk7Ci0gCi0gCWlmIChsZW4gPCBkc3QtPnNfc2l6ZSkgewotQEAgLTEyNiw3ICsxMjcsNyBAQCBfbmNfc2FmZV9zdHJjYXQoc3RyaW5nX2Rlc2MgKiBkc3QsIGNvbnN0IGNoYXIgKnNyYykKLSBOQ1VSU0VTX0VYUE9SVChib29sKQotIF9uY19zYWZlX3N0cmNweShzdHJpbmdfZGVzYyAqIGRzdCwgY29uc3QgY2hhciAqc3JjKQotIHsKLS0gICAgaWYgKHNyYyAhPSAwKSB7Ci0rICAgIGlmIChQUkVTRU5UKHNyYykpIHsKLSAJc2l6ZV90IGxlbiA9IHN0cmxlbihzcmMpOwotIAotIAlpZiAobGVuIDwgZHN0LT5zX3NpemUpIHsKLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL3RyaW1fc2dyMC5jIGIvbmN1cnNlcy90aW5mby90cmltX3NncjAuYwotaW5kZXggNGNiY2I2NS4uNGQ5MmQxNSAxMDA2NDQKLS0tLSBhL25jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMKLSsrKyBiL25jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMKLUBAIC0zNiw3ICszNiw3IEBACi0gCi0gI2luY2x1ZGUgPHRpYy5oPgotIAotLU1PRFVMRV9JRCgiJElkOiB0cmltX3NncjAuYyx2IDEuMTYgMjAxNy8wNC8wNSAyMjozMzowNyB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiB0cmltX3NncjAuYyx2IDEuMTcgMjAxNy8wOC8yNiAxNDo1NDoxNiB0b20gRXhwICQiKQotIAotICN1bmRlZiBDVVIKLSAjZGVmaW5lIENVUiB0cC0+Ci1AQCAtMjYzLDcgKzI2Myw3IEBAIF9uY190cmltX3NncjAoVEVSTVRZUEUyICp0cCkKLSAJICAgIC8qCi0gCSAgICAgKiBJZiBybWFjcyBpcyBhIHN1YnN0cmluZyBvZiBzZ3IoMCksIHJlbW92ZSB0aGF0IGNodW5rLgotIAkgICAgICovCi0tCSAgICBpZiAoZXhpdF9hbHRfY2hhcnNldF9tb2RlICE9IDApIHsKLSsJICAgIGlmIChQUkVTRU5UKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSkpIHsKLSAJCVRSKFRSQUNFX0RBVEFCQVNFLCAoInNjYW4gZm9yIHJtYWNzICVzIiwgX25jX3Zpc2J1ZihleGl0X2FsdF9jaGFyc2V0X21vZGUpKSk7Ci0gCQlqID0gc3RybGVuKG9mZik7Ci0gCQlrID0gc3RybGVuKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSk7Ci1kaWZmIC0tZ2l0IGEvcHJvZ3MvdGljLmMgYi9wcm9ncy90aWMuYwotaW5kZXggYzVkNzhlNS4uNmRkNDY3OCAxMDA2NDQKLS0tLSBhL3Byb2dzL3RpYy5jCi0rKysgYi9wcm9ncy90aWMuYwotQEAgLTQ4LDcgKzQ4LDcgQEAKLSAjaW5jbHVkZSA8cGFyYW1ldHJpemVkLmg+Ci0gI2luY2x1ZGUgPHRyYW5zZm9ybS5oPgotIAotLU1PRFVMRV9JRCgiJElkOiB0aWMuYyx2IDEuMjMzIDIwMTcvMDcvMTUgMTc6NDA6MTkgdG9tIEV4cCAkIikKLStNT0RVTEVfSUQoIiRJZDogdGljLmMsdiAxLjI0MyAyMDE3LzA4LzI2IDIwOjU2OjU1IHRvbSBFeHAgJCIpCi0gCi0gI2RlZmluZSBTVERJTl9OQU1FICI8c3RkaW4+IgotIAotQEAgLTYyLDYgKzYyLDEwIEBAIHN0YXRpYyBib29sIHNob3dzdW1tYXJ5ID0gRkFMU0U7Ci0gc3RhdGljIGNoYXIgKipuYW1lbHN0ID0gMDsKLSBzdGF0aWMgY29uc3QgY2hhciAqdG9fcmVtb3ZlOwotIAotKyNpZiBOQ1VSU0VTX1hOQU1FUwotK3N0YXRpYyBib29sIHVzaW5nX2V4dGVuc2lvbnMgPSBGQUxTRTsKLSsjZW5kaWYKLSsKLSBzdGF0aWMgdm9pZCAoKnNhdmVfY2hlY2tfdGVybXR5cGUpIChURVJNVFlQRTIgKiwgYm9vbCk7Ci0gc3RhdGljIHZvaWQgY2hlY2tfdGVybXR5cGUoVEVSTVRZUEUyICp0dCwgYm9vbCk7Ci0gCi1AQCAtODUwLDYgKzg1NCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICAgIC8qIEZBTExUSFJVICovCi0gCWNhc2UgJ3gnOgotIAkgICAgdXNlX2V4dGVuZGVkX25hbWVzKFRSVUUpOwotKwkgICAgdXNpbmdfZXh0ZW5zaW9ucyA9IFRSVUU7Ci0gCSAgICBicmVhazsKLSAjZW5kaWYKLSAJZGVmYXVsdDoKLUBAIC0yNDA1LDEwICsyNDEwLDE3IEBAIGNoZWNrX2NvbmZsaWN0KFRFUk1UWVBFMiAqdHApCi0gCSAgICBjb25zdCBjaGFyICphID0gZ2l2ZW5bal0udmFsdWU7Ci0gCSAgICBib29sIGZpcnN0ID0gVFJVRTsKLSAKLSsJICAgIGlmICghVkFMSURfU1RSSU5HKGEpKQotKwkJY29udGludWU7Ci0rCi0gCSAgICBmb3IgKGsgPSBqICsgMTsgZ2l2ZW5ba10ua2V5Y29kZTsgaysrKSB7Ci0gCQljb25zdCBjaGFyICpiID0gZ2l2ZW5ba10udmFsdWU7Ci0rCi0rCQlpZiAoIVZBTElEX1NUUklORyhiKSkKLSsJCSAgICBjb250aW51ZTsKLSAJCWlmIChjaGVja1trXSkKLSAJCSAgICBjb250aW51ZTsKLSsKLSAJCWlmICghX25jX2NhcGNtcChhLCBiKSkgewotIAkJICAgIGNoZWNrW2pdID0gMTsKLSAJCSAgICBjaGVja1trXSA9IDE7Ci1AQCAtMjQzMSw2ICsyNDQzLDY3IEBAIGNoZWNrX2NvbmZsaWN0KFRFUk1UWVBFMiAqdHApCi0gCSAgICBpZiAoIWZpcnN0KQotIAkJZnByaW50ZihzdGRlcnIsICJcbiIpOwotIAl9Ci0rI2lmIE5DVVJTRVNfWE5BTUVTCi0rCWlmICh1c2luZ19leHRlbnNpb25zKSB7Ci0rCSAgICAvKiAqSU5ERU5ULU9GRiogKi8KLSsJICAgIHN0YXRpYyBzdHJ1Y3QgewotKwkJY29uc3QgY2hhciAqeGN1cnNlczsKLSsJCWNvbnN0IGNoYXIgKnNoaWZ0ZWQ7Ci0rCSAgICB9IHRhYmxlW10gPSB7Ci0rCQl7ICJrREMiLCAgTlVMTCB9LAotKwkJeyAia0ROIiwgICJraW5kIiB9LAotKwkJeyAia0VORCIsIE5VTEwgfSwKLSsJCXsgImtIT00iLCBOVUxMIH0sCi0rCQl7ICJrTEZUIiwgTlVMTCB9LAotKwkJeyAia05YVCIsIE5VTEwgfSwKLSsJCXsgImtQUlYiLCBOVUxMIH0sCi0rCQl7ICJrUklUIiwgTlVMTCB9LAotKwkJeyAia1VQIiwgICJrcmkiIH0sCi0rCQl7IE5VTEwsICAgTlVMTCB9LAotKwkgICAgfTsKLSsJICAgIC8qICpJTkRFTlQtT04qICovCi0rCi0rCSAgICAvKgotKwkgICAgICogU1ZyNCBjdXJzZXMgZGVmaW5lcyB0aGUgInhjdXJzZXMiIG5hbWVzIGxpc3RlZCBhYm92ZSBleGNlcHQgZm9yCi0rCSAgICAgKiB0aGUgc3BlY2lhbCBjYXNlcyBpbiB0aGUgInNoaWZ0ZWQiIGNvbHVtbi4gIFdoZW4gdXNpbmcgdGhlc2UKLSsJICAgICAqIG5hbWVzIGZvciB4dGVybSdzIGV4dGVuc2lvbnMsIHRoYXQgd2FzIGNvbmZ1c2luZywgYW5kIHJlc3VsdGVkCi0rCSAgICAgKiBpbiBhZGRpbmcgZXh0ZW5kZWQgY2FwYWJpbGl0aWVzIHdpdGggIjIiIChzaGlmdCkgc3VmZml4LiAgVGhpcwotKwkgICAgICogY2hlY2sgd2FybnMgYWJvdXQgdW5uZWNlc3NhcnkgdXNlIG9mIGV4dGVuc2lvbnMgZm9yIHRoaXMgcXVpcmsuCi0rCSAgICAgKi8KLSsJICAgIGZvciAoaiA9IDA7IGdpdmVuW2pdLmtleWNvZGU7ICsraikgewotKwkJY29uc3QgY2hhciAqZmluZCA9IGdpdmVuW2pdLm5hbWU7Ci0rCQlpbnQgdmFsdWU7Ci0rCQljaGFyIGNoOwotKwotKwkJaWYgKCFWQUxJRF9TVFJJTkcoZ2l2ZW5bal0udmFsdWUpKQotKwkJICAgIGNvbnRpbnVlOwotKwotKwkJZm9yIChrID0gMDsgdGFibGVba10ueGN1cnNlczsgKytrKSB7Ci0rCQkgICAgY29uc3QgY2hhciAqdGVzdCA9IHRhYmxlW2tdLnhjdXJzZXM7Ci0rCQkgICAgc2l6ZV90IHNpemUgPSBzdHJsZW4odGVzdCk7Ci0rCi0rCQkgICAgaWYgKCFzdHJuY21wKGZpbmQsIHRlc3QsIHNpemUpICYmIHN0cmNtcChmaW5kLCB0ZXN0KSkgewotKwkJCXN3aXRjaCAoc3NjYW5mKGZpbmQgKyBzaXplLCAiJWQlYyIsICZ2YWx1ZSwgJmNoKSkgewotKwkJCWNhc2UgMToKLSsJCQkgICAgaWYgKHZhbHVlID09IDIpIHsKLSsJCQkJX25jX3dhcm5pbmcoImV4cGVjdGVkICclcycgcmF0aGVyIHRoYW4gJyVzJyIsCi0rCQkJCQkgICAgKHRhYmxlW2tdLnNoaWZ0ZWQKLSsJCQkJCSAgICAgPyB0YWJsZVtrXS5zaGlmdGVkCi0rCQkJCQkgICAgIDogdGVzdCksIGZpbmQpOwotKwkJCSAgICB9IGVsc2UgaWYgKHZhbHVlIDwgMiB8fCB2YWx1ZSA+IDE1KSB7Ci0rCQkJCV9uY193YXJuaW5nKCJleHBlY3RlZCBudW1lcmljIDIuLjE1ICclcyciLCBmaW5kKTsKLSsJCQkgICAgfQotKwkJCSAgICBicmVhazsKLSsJCQlkZWZhdWx0OgotKwkJCSAgICBfbmNfd2FybmluZygiZXhwZWN0ZWQgbnVtZXJpYyBzdWZmaXggZm9yICclcyciLCBmaW5kKTsKLSsJCQkgICAgYnJlYWs7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgIH0KLSsJCX0KLSsJICAgIH0KLSsJfQotKyNlbmRpZgotIAlmcmVlKGdpdmVuKTsKLSAJZnJlZShjaGVjayk7Ci0gICAgIH0KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMKaW5kZXggMWYyMWNkNC4uMDFlNDFkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMKQEAgLTEzLDcgKzEzLDcgQEAKIGluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIgcGtnY29uZmlnCiAKICMgVXBzdHJlYW0gaGFzIHVzZWZ1bCBwYXRjaGVzIGF0IHRpbWVzIGF0IGZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvCi1TUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9jb2xsYWItbWFpbnQvbmN1cnNlcy5naXQiCitTUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL25jdXJzZXMuZ2l0O3Byb3RvY29sPWh0dHBzIgogCiBFWFRSQV9BVVRPUkVDT05GID0gIi1JIG00IgogQ09ORklHX1NJVEUgPSsgIiR7V09SS0RJUn0vY29uZmlnLmNhY2hlIgpAQCAtNTksNiArNTksNyBAQAogRVhfVEVSTUlORk8gPSAiIgogRVhfVEVSTUlORk9fY2xhc3MtbmF0aXZlID0gIjovZXRjL3Rlcm1pbmZvOi91c3Ivc2hhcmUvdGVybWluZm86L3Vzci9zaGFyZS9taXNjL3Rlcm1pbmZvOi9saWIvdGVybWluZm8iCiBFWF9URVJNSU5GT19jbGFzcy1uYXRpdmVzZGsgPSAiOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbyIKK0VYX1RFUk1MSUIgPz0gInRpbmZvIgogCiAjIEhlbHBlciBmdW5jdGlvbiBmb3IgZG9fY29uZmlndXJlIHRvIGFsbG93IG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zCiAjICQxIHRoZSBkaXJlY3RvcnkgdG8gcnVuIGNvbmZpZ3VyZSBpbgpAQCAtODAsNyArODEsNyBAQAogCSAgICAgICAgLS1kaXNhYmxlLWJpZy1jb3JlIFwKIAkgICAgICAgIC0tcHJvZ3JhbS1wcmVmaXg9IFwKIAkgICAgICAgIC0td2l0aC10aWNsaWIgXAotCSAgICAgICAgLS13aXRoLXRlcm1saWI9dGluZm8gXAorCSAgICAgICAgLS13aXRoLXRlcm1saWI9JHtFWF9URVJNTElCfSBcCiAJICAgICAgICAtLWVuYWJsZS1zaWd3aW5jaCBcCiAJICAgICAgICAtLWVuYWJsZS1wYy1maWxlcyBcCiAJICAgICAgICAtLWRpc2FibGUtcnBhdGgtaGFjayBcCkBAIC0yMDEsNyArMjAyLDEwIEBACiAgICAgICAgICAgICAgICAgbG4gLXNmIHh0ZXJtLWNvbG9yICR7RH0ke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvL3gveHRlcm0KICAgICAgICAgZmkKIAotICAgICAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3Rlcm1pbmZvCisgICAgICAgICMgV2hlbiBjaGFuZ2luZyAke2xpYmRpcn0gdG8gZS5nLiAvdXNyL2xpYi9teWF3ZXNvbWVsaWIvIG5jdXJzZXMgCisgICAgICAgICMgc3RpbGwgaW5zdGFsbHMgJy91c3IvbGliL3Rlcm1pbmZvJywgc28gdHJ5IHRvIHJtIGJvdGggCisgICAgICAgICMgdGhlIHByb3BlciBwYXRoIGFuZCBhIHNsaWdodGx5IGhhcmRjb2RlZCBvbmUKKyAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS90ZXJtaW5mbyAke0R9JHtwcmVmaXh9L2xpYi90ZXJtaW5mbwogCiAgICAgICAgICMgY3JlYXRlIGxpbmtlciBzY3JpcHRzIGZvciBsaWJjdXJzZXMuc28gYW5kIGxpYm5jdXJzZXMgdG8KICAgICAgICAgIyBsaW5rIGFnYWluc3QgLWx0aW5mbyB3aGVuIG5lZWRlZC4gU29tZSBidWlsZHMgbWlnaHQgYnJlYWsKQEAgLTIyNyw3ICsyMzEsNyBAQAogICAgICAgICBpZiBbICEgLWQgIiR7RH0ke2Jhc2VfbGliZGlyfSIgXTsgdGhlbgogICAgICAgICAgICAgIyBTZXR0aW5nIGJhc2VfbGliZGlyIHRvIGxpYmRpciBhcyBpcyBkb25lIGluIHRoZSAtbmF0aXZlCiAgICAgICAgICAgICAjIGNhc2Ugd2lsbCBza2lwIHRoaXMgY29kZQotICAgICAgICAgICAgbWtkaXIgJHtEfSR7YmFzZV9saWJkaXJ9CisgICAgICAgICAgICBta2RpciAtcCAke0R9JHtiYXNlX2xpYmRpcn0KICAgICAgICAgICAgIG12ICR7RH0ke2xpYmRpcn0vbGlibmN1cnNlcy5zby4qICR7RH0ke2Jhc2VfbGliZGlyfQogICAgICAgICAgICAgISAke0VOQUJMRV9XSURFQ30gfHwgXAogICAgICAgICAgICAgICAgIG12ICR7RH0ke2xpYmRpcn0vbGlibmN1cnNlc3cuc28uKiAke0R9JHtiYXNlX2xpYmRpcn0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTcwNzE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzA3MTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxZGE1ZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzA3MTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1yZXF1aXJlIG5jdXJzZXMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXRpYy1oYW5nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS1yZXByb2R1Y2libGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZy5jYWNoZSBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2ggXAotIgotIyBjb21taXQgaWQgY29ycmVzcG9uZHMgdG8gdGhlIHJldmlzaW9uIGluIHBhY2thZ2UgdmVyc2lvbgotU1JDUkVWID0gIjUyNjgxYTZhMWExOGI0ZDZlYjFhNzE2NTEyZDBkZDgyN2JkNzFjODciCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtYWJpLXZlcnNpb249NSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKFwrXGQrKSopIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzExMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE3MTEyNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzRiOTZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzExMjUuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBuY3Vyc2VzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS10aWMtaGFuZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25maWcuY2FjaGUgXAorIgorIyBjb21taXQgaWQgY29ycmVzcG9uZHMgdG8gdGhlIHJldmlzaW9uIGluIHBhY2thZ2UgdmVyc2lvbgorU1JDUkVWID0gIjVkODQ5ZTgzNjA1MjQ1OTkwMWNmZTBiODVhMGIyOTM5ZmY4ZDJiMmEiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorRVhUUkFfT0VDT05GICs9ICItLXdpdGgtYWJpLXZlcnNpb249NSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKFwrXGQrKSopIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoCmluZGV4IDk1OWIxYzYuLjI1ZTViNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvbm8tc3RhY2stcHJvdGVjdG9yLWFsbC1hcmNocy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2gKQEAgLTE3LDQgKzE3LDQgQEAKICtERUZJTkUgR0NDNDRfQUxMX0NDX0ZMQUdTICAgICAgICAgICAgPSAtZyAtZnNob3J0LXdjaGFyIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tYXJyYXktYm91bmRzIC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1pbmNsdWRlIEF1dG9HZW4uaCAtZm5vLWNvbW1vbiAtRFNUUklOR19BUlJBWV9OQU1FPSQoQkFTRV9OQU1FKVN0cmluZ3MNCiAgREVGSU5FIEdDQzQ0X0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQzQ0X0FMTF9DQ19GTEFHUykgLW0zMiAtbWFyY2g9aTU4NiAtbWFsaWduLWRvdWJsZSAtZm5vLXN0YWNrLXByb3RlY3RvciAtRCBFRkkzMiAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1mbm8tUElFIC1uby1waWUNCiAgREVGSU5FIEdDQzQ0X1g2NF9DQ19GTEFHUyAgICAgICAgICAgID0gREVGKEdDQzQ0X0FMTF9DQ19GTEFHUykgLW02NCAtZm5vLXN0YWNrLXByb3RlY3RvciAiLURFRklBUEk9X19hdHRyaWJ1dGVfXygobXNfYWJpKSkiIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUgLVduby1hZGRyZXNzIC1tY21vZGVsPXNtYWxsIC1mcGllIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMNCi0gREVGSU5FIEdDQzQ0X0lBMzJfWDY0X0RMSU5LX0NPTU1PTiAgID0gLW5vc3RkbGliIC1XbCwtbiwtcSwtLWdjLXNlY3Rpb25zIC16IGNvbW1vbi1wYWdlLXNpemU9MHgyMA0KKyBERUZJTkUgR0NDNDRfSUEzMl9YNjRfRExJTktfQ09NTU9OICAgPSAtbm9zdGRsaWIgLVdsLC1uLC1xLC0tZ2Mtc2VjdGlvbnMgLXogY29tbW9uLXBhZ2Utc2l6ZT0weDIwIC1uby1waWUNCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCmluZGV4IGZhMGQ2NjIuLjg3NTBiM2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCkBAIC0xNTEsNyArMTUxLDcgQEAKIAogZG9fY29tcGlsZV9jbGFzcy10YXJnZXQoKSB7CiAgICAgZXhwb3J0IExGTEFHUz0iJHtMREZMQUdTfSIKLSAgICBQQVJBTExFTF9KT0JTPSIke0AgJyR7UEFSQUxMRUxfTUFLRX0nLnJlcGxhY2UoJy1qJywgJy1uICcpfSIKKyAgICBQQVJBTExFTF9KT0JTPSIke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsICctbiAlZCcpfSIKICAgICBPVk1GX0FSQ0g9Ilg2NCIKICAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgIT0gIng4Nl82NCIgXSA7IHRoZW4KICAgICAgICAgT1ZNRl9BUkNIPSJJQTMyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL25hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QuYmIKaW5kZXggYWVlNGEwMy4uZTJmNjE2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9uYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0LmJiCkBAIC0yMyw4ICsyMyw4IEBACiAgICAgbmF0aXZlc2RrLW1ha2VkZXZzIFwKICAgICBuYXRpdmVzZGstZG5mIFwKICAgICBuYXRpdmVzZGstY21ha2UgXAotICAgIG5hdGl2ZXNkay1wb3N0aW5zdC1pbnRlcmNlcHQgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICduYXRpdmVzZGstd2F5bGFuZCcsICcnLCBkKX0gXAorICAgIG5hdGl2ZXNkay1zZGstcHJvdmlkZXMtZHVtbXkgXAogICAgICIKIAogUkRFUEVORFNfJHtQTn1fZGFyd2luID0gIlwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNlLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKaW5kZXggZjllNmUyZS4uYmIxOTJhZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKQEAgLTU0LDcgKzU0LDYgQEAKICAgICBwYWNrYWdlZ3JvdXAtZGlzdHJvLWJhc2UgXAogICAgIHBhY2thZ2Vncm91cC1tYWNoaW5lLWJhc2UgXAogICAgIFwKLSAgICBzeXNmc3V0aWxzIFwKICAgICBtb2R1bGUtaW5pdC10b29scyBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAnYXBtJywgJ3BhY2thZ2Vncm91cC1iYXNlLWFwbScsICcnLGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAnYWNwaScsICdwYWNrYWdlZ3JvdXAtYmFzZS1hY3BpJywgJycsZCl9IFwKQEAgLTE1Miw4ICsxNTEsNyBAQAogCiBTVU1NQVJZX3BhY2thZ2Vncm91cC1iYXNlLWFjcGkgPSAiQUNQSSBzdXBwb3J0IgogUkRFUEVORFNfcGFja2FnZWdyb3VwLWJhc2UtYWNwaSA9ICJcCi0gICAgYWNwaWQgXAotICAgIGxpYmFjcGkgIgorICAgIGFjcGlkIgogCiBTVU1NQVJZX3BhY2thZ2Vncm91cC1iYXNlLWFwbSA9ICJBUE0gc3VwcG9ydCIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1iYXNlLWFwbSA9ICJcCkBAIC0yOTIsOCArMjkwLDYgQEAKIFNVTU1BUllfcGFja2FnZWdyb3VwLWJhc2Utd2lmaSA9ICJXaUZpIHN1cHBvcnQiCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtYmFzZS13aWZpID0gIlwKICAgICAke1ZJUlRVQUwtUlVOVElNRV93aXJlbGVzcy10b29sc30gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdDT01CSU5FRF9GRUFUVVJFUycsICdwY21jaWEnLCAnaG9zdGFwLXV0aWxzJywgJycsZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnQ09NQklORURfRkVBVFVSRVMnLCAncGNpJywgJ2hvc3RhcC11dGlscycsICcnLGQpfSBcCiAgICAgd3BhLXN1cHBsaWNhbnQiCiAKIFJSRUNPTU1FTkRTX3BhY2thZ2Vncm91cC1iYXNlLXdpZmkgPSAiXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWJvb3QuYmIKaW5kZXggMDRiYzBmMi4uNzZjZDdmYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1ib290LmJiCkBAIC0yMyw2ICsyMyw4IEBACiBWSVJUVUFMLVJVTlRJTUVfaW5pdHNjcmlwdHMgPz0gImluaXRzY3JpcHRzIgogVklSVFVBTC1SVU5USU1FX2tleW1hcHMgPz0gImtleW1hcHMiCiAKK0VGSV9QUk9WSURFUiA/Pz0gImdydWItZWZpIgorCiBTWVNWSU5JVF9TQ1JJUFRTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3J0YycsICcke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzLWh3Y2xvY2t9JywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgIG1vZHV0aWxzLWluaXRzY3JpcHRzIFwKICAgICAgICAgICAgICAgICAgICAgaW5pdC1pZnVwZG93biBcCkBAIC0zNSw2ICszNyw3IEBACiAgICAgJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAic3lzdmluaXQiLCAiJHtTWVNWSU5JVF9TQ1JJUFRTfSIsICIiLCBkKX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgImtleWJvYXJkIiwgIiR7VklSVFVBTC1SVU5USU1FX2tleW1hcHN9IiwgIiIsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAiZWZpIiwgIiR7RUZJX1BST1ZJREVSfSBrZXJuZWwiLCAiIiwgZCl9IFwKICAgICBuZXRiYXNlIFwKICAgICAke1ZJUlRVQUwtUlVOVElNRV9sb2dpbl9tYW5hZ2VyfSBcCiAgICAgJHtWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyfSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIKaW5kZXggYWYwY2UyMC4uNDVlOGMxMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYgpAQCAtMjcsMTEgKzI3LDEwIEBACiAgICAgdGNsIgogCiBTQU5JVElaRVJTID0gImxpYmFzYW4tZGV2IGxpYnVic2FuLWRldiIKLVNBTklUSVpFUlNfYWFyY2g2NCA9ICIiCitTQU5JVElaRVJTX21pY3JvYmxhemUgPSAiIgogU0FOSVRJWkVSU19taXBzYXJjaCA9ICIiCiBTQU5JVElaRVJTX25pb3MyID0gIiIKLVNBTklUSVpFUlNfcG93ZXJwYzY0ID0gIiIKLVNBTklUSVpFUlNfc3BhcmMgPSAiIgorU0FOSVRJWkVSU19yaXNjdjY0ID0gIiIKIFNBTklUSVpFUlNfbGliYy1tdXNsID0gIiIKIAogUlJFQ09NTUVORFNfcGFja2FnZWdyb3VwLWNvcmUtc2RrID0gIlwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiCmluZGV4IGE4ZTQ3ZGEuLmZhMGUzNjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgpAQCAtMjYsNyArMjYsNiBAQAogCiBQUk9GSUxFVE9PTFMgPSAiXAogICAgIHBvd2VydG9wIFwKLSAgICBsYXRlbmN5dG9wIFwKICAgICAiCiBQRVJGID0gInBlcmYiCiBQRVJGX2xpYmMtbXVzbCA9ICIiCkBAIC0zNCwxNiArMzMsMTYgQEAKICMgc3lzdGVtdGFwIG5lZWRzIGVsZnV0aWxzIHdoaWNoIGlzIG5vdCBmdWxseSBidWlsZGFibGUgb24gc29tZSBhcmNoZXMvbGliY3MKIFNZU1RFTVRBUCA9ICJzeXN0ZW10YXAiCiBTWVNURU1UQVBfbGliYy1tdXNsID0gIiIKLVNZU1RFTVRBUF9taXBzYXJjaCA9ICIiCiBTWVNURU1UQVBfbmlvczIgPSAiIgotU1lTVEVNVEFQX2FhcmNoNjQgPSAiIgogCiAjIGx0dG5nLXVzdCB1c2VzIHNjaGVkX2dldGNwdSgpIHdoaWNoIGlzIG5vdCB0aGVyZSBvbiBmb3Igc29tZSBwbGF0Zm9ybXMuCiBMVFROR1VTVCA9ICJsdHRuZy11c3QiCiBMVFROR1VTVF9saWJjLW11c2wgPSAiIgorTFRUTkdVU1RfcmlzY3Y2NCA9ICIiCiAKIExUVE5HVE9PTFMgPSAibHR0bmctdG9vbHMiCiBMVFROR1RPT0xTX2xpYmMtbXVzbCA9ICIiCitMVFROR1RPT0xTX3Jpc2N2NjQgPSAiIgogCiBMVFROR01PRFVMRVMgPSAibHR0bmctbW9kdWxlcyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtdGVzdGFwcHMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy10ZXN0YXBwcy5iYgppbmRleCAzMTcwOTc4Li5iOGU1MDcwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy10ZXN0YXBwcy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy10ZXN0YXBwcy5iYgpAQCAtMTAsOSArMTAsMTAgQEAKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAKIAotIyBrZXhlYy10b29scyBkb2Vzbid0IHdvcmsgb24gZTU1MDAtNjRiIGFuZCBuaW9zMiB5ZXQKKyMga2V4ZWMtdG9vbHMgZG9lc24ndCB3b3JrIG9uIGU1NTAwLTY0YiwgbWljcm9ibGF6ZSBhbmQgbmlvczIgeWV0CiBLRVhFQ1RPT0xTID89ICJrZXhlYyIKIEtFWEVDVE9PTFNfZTU1MDAtNjRiID89ICIiCitLRVhFQ1RPT0xTX21pY3JvYmxhemUgPz0gIiIKIEtFWEVDVE9PTFNfbmlvczIgPz0gIiIKIAogWDExR0xUT09MUyA9ICJcCkBAIC0yNSw3ICsyNiw3IEBACiAKIFgxMVRPT0xTID0gIlwKICAgICBmc3Rlc3RzIFwKLSAgICBnc3QtcGxheWVyIFwKKyAgICBnc3QtZXhhbXBsZXMgXAogICAgIHgxMXBlcmYgXAogICAgIHhyZXN0b3AgXAogICAgIHh3aW5pbmZvIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKaW5kZXggM2UxOTA3Ny4uN2QyY2NiZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKQEAgLTUsNCArNSw1IEBACiBSREVQRU5EU18ke1BOfSA9ICIgXAogICAgIGdvLXJ1bnRpbWUgXAogICAgIGdvLXJ1bnRpbWUtZGV2IFwKKyAgICBnby1ydW50aW1lLXN0YXRpY2RldiBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKaW5kZXggZmY0Mjg2Ni4uYWRiMGM1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgpAQCAtMTM2LDcgKzEzNiw2IEBACiAgICAgbXRvb2xzIFwKICAgICBuY3Vyc2VzIFwKICAgICBuY3Vyc2VzLXRlcm1pbmZvLWJhc2UgXAotICAgIG5lb24gXAogICAgIG5mcy11dGlscyBcCiAgICAgbmZzLXV0aWxzLWNsaWVudCBcCiAgICAgb3BlbnNzbCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCmluZGV4IDNiN2Y4MTguLmFhYjJjMDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCkBAIC0xMiw3ICsxMiw3IEBACiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSBcCiAgICAgICAgICAgIGZpbGU6Ly9wc3BsYXNoLWluaXQgXAogICAgICAgICAgICAke1NQTEFTSF9JTUFHRVN9IgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKIFNQTEFTSF9JTUFHRVMgPSAiZmlsZTovL3BzcGxhc2gtcG9reS1pbWcuaDtvdXRzdWZmaXg9ZGVmYXVsdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMThiMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLXJlcXVpcmUgc3lzdGVtZC5pbmMKLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L3N5c3RlbWQ6IgotCi1ERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCBnbnUtZWZpIGdwZXJmLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLWluaGVyaXQgZGVwbG95Ci0KLUVGSV9DQyA/PSAiJHtDQ30iCi0jIE1hbiBwYWdlcyBhcmUgcGFja2FnZWQgdGhyb3VnaCB0aGUgbWFpbiBzeXN0ZW1kIHJlY2lwZQotRVhUUkFfT0VDT05GID0gIiAtLWVuYWJsZS1nbnVlZmkgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZWZpLWluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZWZpLWxkc2Rpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1lZmktbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW1hbnBhZ2VzIFwKLSAgICAgICAgICAgICAgICAgRUZJX0NDPScke0VGSV9DQ30nIFwKLSAgICAgICAgICAgICAgICIKLQotIyBJbXBvcnRlZCBmcm9tIHRoZSBvbGQgZ3VtbWlib290IHJlY2lwZQotVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qKS1saW51eCIKLUNPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAibnVsbCIKLQotZG9fY29tcGlsZSgpIHsKLQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9ImlhMzIiCi0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgotCQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9Ing2NCIKLQlmaQotCi0Jb2VfcnVubWFrZSBzeXN0ZW1kLWJvb3Qke1NZU1RFTURfQk9PVF9FRklfQVJDSH0uZWZpCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JIyBCeXBhc3Mgc3lzdGVtZCBpbnN0YWxsYXRpb24gd2l0aCBhIE5PUAotCToKLX0KLQotZG9fZGVwbG95ICgpIHsKLQlpbnN0YWxsICR7Qn0vc3lzdGVtZC1ib290Ki5lZmkgJHtERVBMT1lESVJ9Ci19Ci1hZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZkMzg0OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzcuYmIKQEAgLTAsMCArMSw3MCBAQAorcmVxdWlyZSBzeXN0ZW1kLmluYworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vc3lzdGVtZDoiCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IGdudS1lZmkgZ3BlcmYtbmF0aXZlIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDI3LXJlbW92ZS1ub2JvZHktdXNlci1ncm91cC1jaGVja2luZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1BbHNvLWNoZWNrLWkzODYtaTU4Ni1hbmQtaTY4Ni1mb3ItaWEzMi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtdG8tcnVuLWVmaV9jYy1hbmQtZWZpX2xkLWNvcnJlY3RseS13aGVuLWNyb3NzLWNvLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZ2V0dGV4dAoraW5oZXJpdCBkZXBsb3kKKworRUZJX0NDID89ICIke0NDfSIKK0VYVFJBX09FTUVTT04gKz0gIi1EZWZpPXRydWUgXAorICAgICAgICAgICAgICAgICAgLURnbnUtZWZpPXRydWUgXAorICAgICAgICAgICAgICAgICAgLURlZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfS9lZmkgXAorICAgICAgICAgICAgICAgICAgLURlZmktbGRzZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCisgICAgICAgICAgICAgICAgICAtRG1hbj1mYWxzZSBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1jYz0nJHtFRklfQ0N9JyBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1sZD0nJHtMRH0nIFwKKyAgICAgICAgICAgICAgICAgICIKKworIyBpbnN0YWxsIHRvIHRoZSBpbWFnZSBhcyBib290Ki5lZmkgaWYgaXRzIHRoZSBFRklfUFJPVklERVIsCisjIG90aGVyd2lzZSBpbnN0YWxsIGFzIHRoZSBmdWxsIG5hbWUuCisjIFRoaXMgYWxsb3dzIG11bHRpcGxlIGJvb3Rsb2FkZXJzIHRvIGNvZXhpc3QgaW4gYSBzaW5nbGUgaW1hZ2UuCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgIGltcG9ydCByZQorICAgIHRhcmdldCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpCisgICAgcHJlZml4ID0gIiIgaWYgZC5nZXRWYXIoJ0VGSV9QUk9WSURFUicsIFRydWUpID09ICJzeXN0ZW1kLWJvb3QiIGVsc2UgInN5c3RlbWQtIgorICAgIGlmIHRhcmdldCA9PSAieDg2XzY0IjoKKyAgICAgICAgc3lzdGVtZGltYWdlID0gcHJlZml4ICsgImJvb3R4NjQuZWZpIgorICAgIGVsc2U6CisgICAgICAgIHN5c3RlbWRpbWFnZSA9IHByZWZpeCArICJib290aWEzMi5lZmkiCisgICAgZC5zZXRWYXIoIlNZU1RFTURfQk9PVF9JTUFHRSIsIHN5c3RlbWRpbWFnZSkKKyAgICBwcmVmaXggPSAic3lzdGVtZC0iIGlmIHByZWZpeCA9PSAiIiBlbHNlICIiCisgICAgZC5zZXRWYXIoIlNZU1RFTURfQk9PVF9JTUFHRV9QUkVGSVgiLCBwcmVmaXgpCit9CisKK0ZJTEVTXyR7UE59ID0gIi9ib290L0VGSS9CT09ULyR7U1lTVEVNRF9CT09UX0lNQUdFfSIKKworUkRFUEVORFNfJHtQTn0gKz0gInZpcnR1YWwvc3lzdGVtZC1ib290Y29uZiIKKworIyBJbXBvcnRlZCBmcm9tIHRoZSBvbGQgZ3VtbWlib290IHJlY2lwZQorVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qKS1saW51eCIKK0NPTVBBVElCTEVfSE9TVF94ODYteDMyID0gIm51bGwiCisKK2RvX2NvbXBpbGUoKSB7CisJU1lTVEVNRF9CT09UX0VGSV9BUkNIPSJpYTMyIgorCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KKwkJU1lTVEVNRF9CT09UX0VGSV9BUkNIPSJ4NjQiCisJZmkKKworCW5pbmphIHNyYy9ib290L2VmaS8ke1NZU1RFTURfQk9PVF9JTUFHRV9QUkVGSVh9JHtTWVNURU1EX0JPT1RfSU1BR0V9Cit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9L2Jvb3QKKwlpbnN0YWxsIC1kICR7RH0vYm9vdC9FRkkKKwlpbnN0YWxsIC1kICR7RH0vYm9vdC9FRkkvQk9PVAorCWluc3RhbGwgJHtCfS9zcmMvYm9vdC9lZmkvc3lzdGVtZC1ib290Ki5lZmkgJHtEfS9ib290L0VGSS9CT09ULyR7U1lTVEVNRF9CT09UX0lNQUdFfQorfQorCitkb19kZXBsb3kgKCkgeworCWluc3RhbGwgJHtCfS9zcmMvYm9vdC9lZmkvc3lzdGVtZC1ib290Ki5lZmkgJHtERVBMT1lESVJ9Cit9CithZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290Y29uZl8xLjAwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290Y29uZl8xLjAwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YzI0NjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3Rjb25mXzEuMDAuYmIKQEAgLTAsMCArMSwzMSBAQAorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKK1NVTU1BUlkgPSAiQmFzaWMgc3lzdGVtZC1ib290IGNvbmZpZ3VyYXRpb24gZmlsZXMiCisKK1JQUk9WSURFU18ke1BOfSArPSAidmlydHVhbC9zeXN0ZW1kLWJvb3Rjb25mIgorCitpbmhlcml0IHN5c3RlbWQtYm9vdC1jZmcKKworUyA9ICIke1dPUktESVJ9IgorCitMQUJFTFMgPSAiYm9vdCIKKworUk9PVCA/PSAicm9vdD0vZGV2L3NkYTIiCitBUFBFTkRfYXBwZW5kID0gIiAke1JPT1R9IgorCitweXRob24gZG9fY29uZmlndXJlKCkgeworICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnYnVpbGRfZWZpX2NmZycsIGQpCit9CisKK2RvX2NvbmZpZ3VyZVt2YXJkZXBzXSArPSAiQVBQRU5EIgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfS9ib290CisJaW5zdGFsbCAtZCAke0R9L2Jvb3QvbG9hZGVyCisJaW5zdGFsbCAtZCAke0R9L2Jvb3QvbG9hZGVyL2VudHJpZXMKKwlpbnN0YWxsIGxvYWRlci5jb25mICR7RH0vYm9vdC9sb2FkZXIvCisJcm0gbG9hZGVyLmNvbmYKKwlpbnN0YWxsICouY29uZiAke0R9L2Jvb3QvbG9hZGVyL2VudHJpZXMvCit9CisKK0ZJTEVTXyR7UE59ID0gIi9ib290L2xvYWRlci8qIC9ib290L2xvYWRlci9lbnRyaWVzLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXNlcmlhbGdldHR5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS5iYgppbmRleCBkOTM0NzE2Li5kNjdhM2M5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXNlcmlhbGdldHR5LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkuYmIKQEAgLTExLDYgKzExLDEwIEBACiAKIFMgPSAiJHtXT1JLRElSfSIKIAorIyBBcyB0aGlzIHBhY2thZ2UgaXMgdGllZCB0byBzeXN0ZW1kLCBvbmx5IGJ1aWxkIGl0IHdoZW4gd2UncmUgYWxzbyBidWlsZGluZyBzeXN0ZW1kLgoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCiBkb19pbnN0YWxsKCkgewogCWlmIFsgISAteiAiJHtTRVJJQUxfQ09OU09MRVN9IiBdIDsgdGhlbgogCQlkZWZhdWx0X2JhdWRyYXRlPWBlY2hvICIke1NFUklBTF9DT05TT0xFU30iIHwgc2VkICdzL1w7LiovLydgCkBAIC00MywxMCArNDcsNCBAQAogRklMRVNfJHtQTn0gPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UgJHtzeXNjb25mZGlyfSIKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCiAKLSMgQXMgdGhpcyBwYWNrYWdlIGlzIHRpZWQgdG8gc3lzdGVtZCwgb25seSBidWlsZCBpdCB3aGVuIHdlJ3JlIGFsc28gYnVpbGRpbmcgc3lzdGVtZC4KLXB5dGhvbiAoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zICgnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInc3lzdGVtZCcgbm90IGluIERJU1RST19GRUFUVVJFUyIpCi19Ci0KIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCmluZGV4IGQ5OWQxNTAuLjVmYTQ4ZTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCkBAIC0xNCw3ICsxNCw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkdQTDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuTEdQTDIuMTttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCiAKLVNSQ1JFViA9ICJjMWVkYWI3YWQxZTdjY2M5YmU2OTNiZWRmZDQ2NGNkMWNiZmZiMzk1IgorU1JDUkVWID0gIjQ2NjU5ZjdkZWI5NjJmNTVjNzI4ZTcwNTk3ZTM3YzJhM2FiNjMyNmQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQuZ2l0O3Byb3RvY29sPWdpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUFsc28tY2hlY2staTM4Ni1pNTg2LWFuZC1pNjg2LWZvci1pYTMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUFsc28tY2hlY2staTM4Ni1pNTg2LWFuZC1pNjg2LWZvci1pYTMyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3N2JiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtQWxzby1jaGVjay1pMzg2LWk1ODYtYW5kLWk2ODYtZm9yLWlhMzIucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSAzZThjMTliYjFiYmM0NDkzYzU5MWY3NWMwMGMxZmVmZTNiMWM4YTY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAyMDo0Mjo0MSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBBbHNvIGNoZWNrIGkzODYsIGk1ODYgYW5kIGk2ODYgZm9yIGlhMzIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggMjhjYjhiNjBlLi40ODk1MzFhNDMgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0xMjE3LDcgKzEyMTcsNyBAQCBjb25mLnNldDEwKCdTWVNURU1EX1NMT1dfVEVTVFNfREVGQVVMVCcsIHNsb3dfdGVzdHMpCisgaWYgZ2V0X29wdGlvbignZWZpJykKKyAgICAgICAgIGVmaV9hcmNoID0gaG9zdF9tYWNoaW5lLmNwdV9mYW1pbHkoKQorIAorLSAgICAgICAgaWYgZWZpX2FyY2ggPT0gJ3g4NicKKysgICAgICAgIGlmIGVmaV9hcmNoID09ICd4ODYnIG9yIGVmaV9hcmNoID09ICdpMzg2JyBvciBlZmlfYXJjaCA9PSAnaTU4Nicgb3IgZWZpX2FyY2ggPT0gJ2k2ODYnCisgICAgICAgICAgICAgICAgIEVGSV9NQUNISU5FX1RZUEVfTkFNRSA9ICdpYTMyJworICAgICAgICAgICAgICAgICBnbnVfZWZpX2FyY2ggPSAnaWEzMicKKyAgICAgICAgIGVsaWYgZWZpX2FyY2ggPT0gJ3g4Nl82NCcKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1EZWZpbmUtX1BBVEhfV1RNUFgtYW5kLV9QQVRIX1VUTVBYLWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1NTk5ZDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDNjYTUzMjY0ODVjYjE5ZTc3NWFmNmRlNjE1YzE3YmU2NmU0NGU0NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyNCBPY3QgMjAxNyAyMzowODoyNCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBEZWZpbmUgX1BBVEhfV1RNUFggYW5kIF9QQVRIX1VUTVBYIGlmIG5vdCBkZWZpbmVkCi0KLU11c2wgbmVlZHMgdGhlc2UgZGVmaW5lcwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9zaGFyZWQvdXRtcC13dG1wLmMgfCA4ICsrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91dG1wLXd0bXAuYyBiL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKLWluZGV4IDk3NTBkY2Q4MS4uYmQ1NWQ3NGExIDEwMDY0NAotLS0tIGEvc3JjL3NoYXJlZC91dG1wLXd0bXAuYwotKysrIGIvc3JjL3NoYXJlZC91dG1wLXd0bXAuYwotQEAgLTI3LDYgKzI3LDcgQEAKLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHV0bXAuaD4KLSAjaW5jbHVkZSA8dXRtcHguaD4KLSAKLSAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgotQEAgLTQxLDYgKzQyLDEzIEBACi0gI2luY2x1ZGUgInV0aWwuaCIKLSAjaW5jbHVkZSAidXRtcC13dG1wLmgiCi0gCi0rI2lmIGRlZmluZWQgX1BBVEhfVVRNUCAmJiAhZGVmaW5lZCBfUEFUSF9VVE1QWAotKyMgZGVmaW5lIF9QQVRIX1VUTVBYIF9QQVRIX1VUTVAKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZCBfUEFUSF9XVE1QICYmICFkZWZpbmVkIF9QQVRIX1dUTVBYCi0rIyBkZWZpbmUgX1BBVEhfV1RNUFggX1BBVEhfV1RNUAotKyNlbmRpZgotKwotIGludCB1dG1wX2dldF9ydW5sZXZlbChpbnQgKnJ1bmxldmVsLCBpbnQgKnByZXZpb3VzKSB7Ci0gICAgICAgICBzdHJ1Y3QgdXRtcHggKmZvdW5kLCBsb29rdXAgPSB7IC51dF90eXBlID0gUlVOX0xWTCB9OwotICAgICAgICAgaW50IHI7Ci0tLSAKLTIuMTQuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRml4LXRvLXJ1bi1lZmlfY2MtYW5kLWVmaV9sZC1jb3JyZWN0bHktd2hlbi1jcm9zcy1jby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1GaXgtdG8tcnVuLWVmaV9jYy1hbmQtZWZpX2xkLWNvcnJlY3RseS13aGVuLWNyb3NzLWNvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZTE5YmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRml4LXRvLXJ1bi1lZmlfY2MtYW5kLWVmaV9sZC1jb3JyZWN0bHktd2hlbi1jcm9zcy1jby5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIDUyNzQxM2VjMjQzNTY0YTg5ZmZhYWQ2MzY4ZDQ0NmRlNDQ0MTU5NzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDIxOjQyOjIzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCB0byBydW4gZWZpX2NjIGFuZCBlZmlfbGQgY29ycmVjdGx5IHdoZW4gY3Jvc3MtY29tcGlsaW5nCisKK1doZW4gY3Jvc3MtY29tcGlsaW5nLCBlZmlfY2MgYW5kIGVmaV9sZCBtYXkgdGFrZSB0aGUgZm9ybSBvZgorJ3h4eC1nY2MgLS1zeXNyb290PXh4eCcsIGFuZCB0aGlzIHdvdWxkIGNhdXNlIHJ1bl9jb21tYW5kIGFuZAordGhlIGFsaWtlIGZhaWwuCisKK0ZpeCB0byBzcGxpdCB0aGVtIHRvIG1ha2UgY29tbWFuZHMgcnVuIGNvcnJlY3RseS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9ib290L2VmaS9tZXNvbi5idWlsZCB8IDE2ICsrKysrKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZCBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAoraW5kZXggOTkyYTNiYTRjLi45ZjllYzQ5MTEgMTAwNjQ0CistLS0gYS9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQKKysrKyBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAorQEAgLTE1Nyw3ICsxNTcsNyBAQCBpZiBoYXZlX2dudV9lZmkKKyAgICAgICAgICAgICAgICAgb19maWxlID0gY3VzdG9tX3RhcmdldChmaWxlICsgJy5vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA6IGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IDogZmlsZSArICcubycsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IFtlZmlfY2MsICctYycsICdASU5QVVRAJywgJy1vJywgJ0BPVVRQVVRAJ10KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogZWZpX2NjLnNwbGl0KCkgKyBbJy1jJywgJ0BJTlBVVEAnLCAnLW8nLCAnQE9VVFBVVEAnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGNvbXBpbGVfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRfZmlsZXMgOiBlZmlfaGVhZGVycykKKyAgICAgICAgICAgICAgICAgaWYgKGNvbW1vbl9zb3VyY2VzICsgc3lzdGVtZF9ib290X3NvdXJjZXMpLmNvbnRhaW5zKGZpbGUpCitAQCAtMTY4LDcgKzE2OCwxNyBAQCBpZiBoYXZlX2dudV9lZmkKKyAgICAgICAgICAgICAgICAgZW5kaWYKKyAgICAgICAgIGVuZGZvcmVhY2gKKyAKKy0gICAgICAgIGxpYmdjY19maWxlX25hbWUgPSBydW5fY29tbWFuZChlZmlfY2MsICctcHJpbnQtbGliZ2NjLWZpbGUtbmFtZScpLnN0ZG91dCgpLnN0cmlwKCkKKysgICAgICAgIGZpbmRfbGliZ2NjX2NtZF9hbGwgPSBlZmlfY2MgKyAnIC1wcmludC1saWJnY2MtZmlsZS1uYW1lJworKyAgICAgICAgZmluZF9saWJnY2NfY21kID0gZmluZF9saWJnY2NfY21kX2FsbC5zcGxpdCgpWzBdCisrICAgICAgICBmaW5kX2xpYmdjY19hcmdzID0gW10KKysgICAgICAgIGNtZF9hcmdzX2FsbCA9IGZpbmRfbGliZ2NjX2NtZF9hbGwuc3BsaXQoKQorKyAgICAgICAgZm9yZWFjaCBhcmcgOiBjbWRfYXJnc19hbGwKKysgICAgICAgICAgICAgICAgaWYgYXJnICE9IGZpbmRfbGliZ2NjX2NtZAorKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfbGliZ2NjX2FyZ3MgKz0gYXJnCisrICAgICAgICAgICAgICAgIGVuZGlmCisrICAgICAgICBlbmRmb3JlYWNoCisrCisrICAgICAgICBsaWJnY2NfZmlsZV9uYW1lID0gcnVuX2NvbW1hbmQoZmluZF9saWJnY2NfY21kLCBmaW5kX2xpYmdjY19hcmdzKS5zdGRvdXQoKS5zdHJpcCgpCisgICAgICAgICBzeXN0ZW1kX2Jvb3RfZWZpX25hbWUgPSAnc3lzdGVtZC1ib290QDBALmVmaScuZm9ybWF0KEVGSV9NQUNISU5FX1RZUEVfTkFNRSkKKyAgICAgICAgIHN0dWJfZWZpX25hbWUgPSAnbGludXhAMEAuZWZpLnN0dWInLmZvcm1hdChFRklfTUFDSElORV9UWVBFX05BTUUpCisgICAgICAgICBub191bmRlZmluZWRfc3ltYm9scyA9IGZpbmRfcHJvZ3JhbSgnbm8tdW5kZWZpbmVkLXN5bWJvbHMuc2gnKQorQEAgLTE3OSw3ICsxODksNyBAQCBpZiBoYXZlX2dudV9lZmkKKyAgICAgICAgICAgICAgICAgICAgICAgICB0dXBsZVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA6IHR1cGxlWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA6IHR1cGxlWzBdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgOiBbZWZpX2xkLCAnLW8nLCAnQE9VVFBVVEAnXSArCisrICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IGVmaV9sZC5zcGxpdCgpICsgWyctbycsICdAT1VUUFVUQCddICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZpX2xkZmxhZ3MgKyB0dXBsZVsyXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnLWxlZmknLCAnLWxnbnVlZmknLCBsaWJnY2NfZmlsZV9uYW1lXSkKKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZmZjNDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gNjg3YTVhZjhkYzVkMzhmOTE4YTZjZTA4ZmVkNTI5NzIzNGJmODM0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIgTWFyIDIwMTggMTg6MDA6MTcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gSGlkZSBfX3N0YXJ0X0JVU19FUlJPUl9NQVAgYW5kIF9fc3RvcF9CVVNfRVJST1JfTUFQCisKK2ZvciBjdXJyZW50bHkgdW5rbm93biByZWFzb25zIHRoZXkgZ2V0IGV4cG9ydGVkIHRvIHRoZSBzaGFyZWQgbGlicmllcworZXZlbiB3aXRob3V0IGJlaW5nIGxpc3RlZCBpbiB0aGUgc3ltIGZpbGUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWyBDb25kaXRpb25hbCBvbiBtYXN0ZXIgbmVlZGluZyB0aGlzLCAyMzQgZG9lcyBuZWVkIGl0IF0KKworIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKK2luZGV4IDM3OGY3YTM3Ny4uNDlkNzk3YWJkIDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCisrKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKK0BAIC03MSw4ICs3MSw4IEBAIEJVU19FUlJPUl9NQVBfRUxGX1JFR0lTVEVSIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgYnVzX3N0YW5kYXJkX2Vycm9yc1tdID0geworIH07CisgCisgLyogR0NDIG1hcHMgdGhpcyBtYWdpY2FsbHkgdG8gdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSBCVVNfRVJST1JfTUFQIHNlY3Rpb24gKi8KKy1leHRlcm4gY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBfX3N0YXJ0X0JVU19FUlJPUl9NQVBbXTsKKy1leHRlcm4gY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBfX3N0b3BfQlVTX0VSUk9SX01BUFtdOworK2V4dGVybiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIF9fc3RhcnRfQlVTX0VSUk9SX01BUFtdIF9oaWRkZW5fOworK2V4dGVybiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIF9fc3RvcF9CVVNfRVJST1JfTUFQW10gX2hpZGRlbl87CisgCisgLyogQWRkaXRpb25hbCBtYXBzIHJlZ2lzdGVyZWQgd2l0aCBzZF9idXNfZXJyb3JfYWRkX21hcCgpIGFyZSBpbiB0aGlzCisgICogTlVMTCB0ZXJtaW5hdGVkIGFycmF5ICovCistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3ItZmxhZ3MtdG8td29ya2Fyb3VuZC1tdXNsLWJ1aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1mbGFncy10by13b3JrYXJvdW5kLW11c2wtYnVpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MTNlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3ItZmxhZ3MtdG8td29ya2Fyb3VuZC1tdXNsLWJ1aS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGUzNjFmNmI0YWVmYWU1N2VmZmY3ZTQ1N2RmOGRiNGQxMDY3YmVjMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjUwOjIzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBmc3RhY2stcHJvdGVjdG9yIGZsYWdzIHRvIHdvcmthcm91bmQgbXVzbCBidWlsZAorCitSZW1vdmUgZnN0YWNrLXByb3RlY3RvciBhbmQgZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgZmxhZ3MgdG8gZml4Cit0aGUgZm9sbG93aW5nIGJ1aWxkIGZhaWx1cmUgZm9yIHFlbXV4ODYgYW5kIHFlbXVwcGMgd2l0aCBtdXNsLgorCisgIHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3RhY2tfY2hrX2ZhaWxfbG9jYWwnCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiAtLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggNzYxMGFiMTJiLi41OTFiOWNiYWIgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0zMjksOCArMzI5LDYgQEAgZm9yZWFjaCBhcmcgOiBbJy1XZXh0cmEnLAorICAgICAgICAgICAgICAgICctZmRpYWdub3N0aWNzLXNob3ctb3B0aW9uJywKKyAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcnLAorICAgICAgICAgICAgICAgICctZnZpc2liaWxpdHk9aGlkZGVuJywKKy0gICAgICAgICAgICAgICAnLWZzdGFjay1wcm90ZWN0b3InLAorLSAgICAgICAgICAgICAgICctZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcnLAorICAgICAgICAgICAgICAgICctLXBhcmFtPXNzcC1idWZmZXItc2l6ZT00JywKKyAgICAgICAgICAgICAgIF0KKyAgICAgICAgIGlmIGNjLmhhc19hcmd1bWVudChhcmcpCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YzE1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGIxMTkyYTZlMTcxNDEzMjkxZDlkNjRmYWZjMDQ3NzNjNmJiYzljYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDIzIEZlYiAyMDE4IDEwOjA0OjQ4ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMzFdIFVzZSBnZXRlbnYgd2hlbiBzZWN1cmUgdmVyc2lvbnMgYXJlIG5vdCBhdmFpbGFibGUKKworbXVzbCBkb2VzbnQgaW1wbGVtZW50IHNlY3VyZSB2ZXJzaW9uLCBzbyB3ZSBkZWZhdWx0Cit0byBpdCBpZiBjb25maWd1cmUgZG9lcyBub3QgZGV0ZWN0IGEgc2VjdXJlIGltcGxlbWVudGF0aW9uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9taXNzaW5nLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAoraW5kZXggMTI4MGU2YzQxLi4zOWMxZmI3MDAgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCitAQCAtNjA1LDcgKzYwNSw3IEBAIHN0cnVjdCBidHJmc19pb2N0bF9xdW90YV9jdGxfYXJncyB7CisgIyAgaWYgSEFWRV9fX1NFQ1VSRV9HRVRFTlYKKyAjICAgIGRlZmluZSBzZWN1cmVfZ2V0ZW52IF9fc2VjdXJlX2dldGVudgorICMgIGVsc2UKKy0jICAgIGVycm9yICJuZWl0aGVyIHNlY3VyZV9nZXRlbnYgbm9yIF9fc2VjdXJlX2dldGVudiBhcmUgYXZhaWxhYmxlIgorKyMgICAgZGVmaW5lIHNlY3VyZV9nZXRlbnYgZ2V0ZW52CisgIyAgZW5kaWYKKyAjZW5kaWYKKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzlkYzc4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi1Gcm9tIGIyZDQxNzFjNmU1MjFjZjFlNzAzMzFmYjc2OTIzNGQ2M2E0YTZkNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAxMzowMDo0MSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVc2UgdWludG1heF90IGZvciBoYW5kbGluZyBybGltX3QKLQotUFJJdXszMiw2NH0gaXMgbm90IHJpZ2h0IGZvcm1hdCB0byByZXByZXNlbnQgcmxpbV90IHR5cGUKLXRoZXJlZm9yZSB1c2UgJWp1IGFuZCB0eXBlY2FzdCB0aGUgcmxpbV90IHZhcmlhYmxlcyB0bwotdWludG1heF90LgotCi1GaXhlcyBwb3J0YWJsaWxpdHkgZXJyb3JzIGxpa2UKLQotZXhlY3V0ZS5jOjM0NDY6MzY6IGVycm9yOiBmb3JtYXQgJyVsdScgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCA1IGhhcyB0eXBlICdybGltX3Qge2FrYSBsb25nIGxvbmcgdW5zaWduZWQgaW50fScgWy1XZXJyb3I9Zm9ybWF0PV0KLXwgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICIgUkxJTV9GTVQgIlxuIiwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCBjLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvNzE5OV0KLQotIHNyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIHwgOCAtLS0tLS0tLQotIHNyYy9iYXNpYy9ybGltaXQtdXRpbC5jIHwgOCArKysrLS0tLQotIHNyYy9jb3JlL2V4ZWN1dGUuYyAgICAgIHwgOCArKysrLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIGIvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKLWluZGV4IGFlNDJhOGY4OS4uMTQ0MjQ5Y2Q2IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKLSsrKyBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCi1AQCAtNjAsMTQgKzYwLDYgQEAKLSAjICBkZWZpbmUgUFJJX1RJTUVYICJsaSIKLSAjZW5kaWYKLSAKLS0jaWYgU0laRU9GX1JMSU1fVCA9PSA4Ci0tIyAgZGVmaW5lIFJMSU1fRk1UICIlIiBQUkl1NjQKLS0jZWxpZiBTSVpFT0ZfUkxJTV9UID09IDQKLS0jICBkZWZpbmUgUkxJTV9GTVQgIiUiIFBSSXUzMgotLSNlbHNlCi0tIyAgZXJyb3IgVW5rbm93biBybGltX3Qgc2l6ZQotLSNlbmRpZgotLQotICNpZiBTSVpFT0ZfREVWX1QgPT0gOAotICMgIGRlZmluZSBERVZfRk1UICIlIiBQUkl1NjQKLSAjZWxpZiBTSVpFT0ZfREVWX1QgPT0gNAotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jIGIvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKLWluZGV4IGNhODM0ZGY2Mi4uNDFmY2ViYjc0IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCi1AQCAtMjg0LDEzICsyODQsMTMgQEAgaW50IHJsaW1pdF9mb3JtYXQoY29uc3Qgc3RydWN0IHJsaW1pdCAqcmwsIGNoYXIgKipyZXQpIHsKLSAgICAgICAgIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSAmJiBybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKLSAgICAgICAgICAgICAgICAgcyA9IHN0cmR1cCgiaW5maW5pdHkiKTsKLSAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX2N1ciA+PSBSTElNX0lORklOSVRZKQotLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICJpbmZpbml0eToiIFJMSU1fRk1ULCBybC0+cmxpbV9tYXgpOwotKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICJpbmZpbml0eTolanUiLCAodWludG1heF90KXJsLT5ybGltX21heCk7Ci0gICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKLS0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCAiOmluZmluaXR5IiwgcmwtPnJsaW1fY3VyKTsKLSsgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1OmluZmluaXR5IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIpOwotICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fY3VyID09IHJsLT5ybGltX21heCkKLS0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCwgcmwtPnJsaW1fY3VyKTsKLSsgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIpOwotICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsIFJMSU1fRk1UICI6IiBSTElNX0ZNVCwgcmwtPnJsaW1fY3VyLCBybC0+cmxpbV9tYXgpOwotKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICIlanU6JWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIsICh1aW50bWF4X3QpcmwtPnJsaW1fbWF4KTsKLSAKLSAgICAgICAgIGlmICghcykKLSAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXhlY3V0ZS5jIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCi1pbmRleCBkNzJlNWJmMDguLmQzODk0NjAwMiAxMDA2NDQKLS0tLSBhL3NyYy9jb3JlL2V4ZWN1dGUuYwotKysrIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCi1AQCAtMzQ0MywxMCArMzQ0MywxMCBAQCB2b2lkIGV4ZWNfY29udGV4dF9kdW1wKEV4ZWNDb250ZXh0ICpjLCBGSUxFKiBmLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKLSAKLSAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBSTElNX05MSU1JVFM7IGkrKykKLSAgICAgICAgICAgICAgICAgaWYgKGMtPnJsaW1pdFtpXSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICIgUkxJTV9GTVQgIlxuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX21heCk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlc1NvZnQ6ICIgUkxJTV9GTVQgIlxuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX2N1cik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlczogJWp1XG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCAodWludG1heF90KWMtPnJsaW1pdFtpXS0+cmxpbV9tYXgpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXNTb2Z0OiAlanVcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksICh1aW50bWF4X3QpYy0+cmxpbWl0W2ldLT5ybGltX2N1cik7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgIGlmIChjLT5pb3ByaW9fc2V0KSB7Ci0tLSAKLTIuMTQuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZjc0NTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMzICswLDAgQEAKLUZyb20gMDkzM2NhNjI1MTgwOGY4NTZiOTJiMGNlOGRhODY5NmQ1ZmViYzMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMDo0MTozOSAtMDcwMAotU3ViamVjdDogW1BBVENIIDAxLzEyXSBhZGQgZmFsbGJhY2sgcGFyc2VfcHJpbnRmX2Zvcm1hdCBpbXBsZW1lbnRhdGlvbgotCi1TaWduZWQtb2ZmLWJ5OiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICB8ICAgNCArCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICB8ICAgMiArCi0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyB8IDI3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaCB8ICA1NyArKysrKysrKysKLSBzcmMvYmFzaWMvc3RkaW8tdXRpbC5oICAgICAgICAgIHwgICAyICstCi0gc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgICAgICB8ICAgMiArLQotIDYgZmlsZXMgY2hhbmdlZCwgMzM4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggNjkyZDdiYjk1Li4zY2M4ZjM0NTEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC05OTcsNiArOTk3LDEwIEBAIGxpYmJhc2ljX2xhX1NPVVJDRVMgPSBcCi0gCXNyYy9iYXNpYy9qb3VybmFsLWltcG9ydGVyLmggXAotIAlzcmMvYmFzaWMvam91cm5hbC1pbXBvcnRlci5jCi0gCi0raWYgIUhBVkVfUFJJTlRGX0gKLStsaWJiYXNpY19sYV9TT1VSQ0VTICs9IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKLStlbmRpZgotKwotIG5vZGlzdF9saWJiYXNpY19sYV9TT1VSQ0VTID0gXAotIAlzcmMvYmFzaWMvZXJybm8tZnJvbS1uYW1lLmggXAotIAlzcmMvYmFzaWMvZXJybm8tdG8tbmFtZS5oIFwKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDYwZTdkZjVlZS4uZWZjZGM2YzE2IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMDgsOCArMzA4LDEwIEBAIEFDX0NIRUNLX0hFQURFUlMoW3VjaGFyLmhdLCBbXSwgW10pCi0gQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL2NhcGFiaWxpdHkuaF0sIFtdLCBbQUNfTVNHX0VSUk9SKFsqKiogUE9TSVggY2FwcyBoZWFkZXJzIG5vdCBmb3VuZF0pXSkKLSBBQ19DSEVDS19IRUFERVJTKFtsaW51eC9idHJmcy5oXSwgW10sIFtdKQotIEFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L21lbWZkLmhdLCBbXSwgW10pCi0rQUNfQ0hFQ0tfSEVBREVSUyhbcHJpbnRmLmhdLCBbXSwgW10pCi0gQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvdm1fc29ja2V0cy5oXSwgW10sIFtdLCBbI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD5dKQotIAotK0FNX0NPTkRJVElPTkFMKEhBVkVfUFJJTlRGX0gsIFt0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9wcmludGZfaCIgPSB4eWVzXSkKLSAjIHVuY29uZGl0aW9uYWxseSBwdWxsLWluIGxpYnJ0IHdpdGggb2xkIGdsaWJjIHZlcnNpb25zCi0gQUNfU0VBUkNIX0xJQlMoW2Nsb2NrX2dldHRpbWVdLCBbcnRdLCBbXSwgW10pCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLjQ5NDM3ZTU0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYwotQEAgLTAsMCArMSwyNzMgQEAKLSsvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCi0rCi0rLyoqKgotKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KLSsKLSsgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotKwotKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBtdXNsIEMgbGlicmFyeQotKyAgQ29weXJpZ2h0IDIwMDUtMjAxNCBSaWNoIEZlbGtlciwgZXQgYWwuCi0rCi0rICBzeXN0ZW1kIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgIHN5c3RlbWQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCi0rICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqKiovCi0rCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSsjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgotKwotK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX25vbmFyZyhjb25zdCBjaGFyICpmbXQpCi0rewotKyAgICAgICAgZG8gewotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7Ci0rICAgICAgICB9IHdoaWxlICgqZm10KysgIT0gJyUnKTsKLSsgICAgICAgIHJldHVybiBmbXQ7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX251bShjb25zdCBjaGFyICpmbXQpCi0rewotKyAgICAgICAgZm9yICg7KmZtdCA+PSAnMCcgJiYgKmZtdCA8PSAnOSc7IGZtdCsrKQotKyAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nICovOwotKyAgICAgICAgcmV0dXJuIGZtdDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfYXJnbihjb25zdCBjaGFyICpmbXQsIHNpemVfdCAqYXJnKQotK3sKLSsgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBmbXQ7Ci0rICAgICAgICBzaXplX3QgdmFsID0gMDsKLSsKLSsgICAgICAgIGlmICgqcCA8ICcxJyB8fCAqcCA+ICc5JykKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKLSsgICAgICAgIGRvIHsKLSsgICAgICAgICAgICAgICAgdmFsID0gMTAqdmFsICsgKCpwKysgLSAnMCcpOwotKyAgICAgICAgfSB3aGlsZSAoKnAgPj0gJzAnICYmICpwIDw9ICc5Jyk7Ci0rCi0rICAgICAgICBpZiAoKnAgIT0gJyQnKQotKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OwotKyAgICAgICAgKmFyZyA9IHZhbDsKLSsgICAgICAgIHJldHVybiBwKzE7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX2ZsYWdzKGNvbnN0IGNoYXIgKmZtdCkKLSt7Ci0rICAgICAgICB3aGlsZSAoMSkgewotKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpmbXQpIHsKLSsgICAgICAgICAgICAgICAgY2FzZSAnIyc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJzAnOgotKyAgICAgICAgICAgICAgICBjYXNlICctJzoKLSsgICAgICAgICAgICAgICAgY2FzZSAnICc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJysnOgotKyAgICAgICAgICAgICAgICBjYXNlICdcJyc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJ0knOgotKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7Ci0rICAgICAgICB9Ci0rfQotKwotK2VudW0gc3RhdGUgewotKyAgICAgICAgQkFSRSwKLSsgICAgICAgIExQUkUsCi0rICAgICAgICBMTFBSRSwKLSsgICAgICAgIEhQUkUsCi0rICAgICAgICBISFBSRSwKLSsgICAgICAgIEJJR0xQUkUsCi0rICAgICAgICBaVFBSRSwKLSsgICAgICAgIEpQUkUsCi0rICAgICAgICBTVE9QCi0rfTsKLSsKLStlbnVtIHR5cGUgewotKyAgICAgICAgTk9ORSwKLSsgICAgICAgIFBUUiwKLSsgICAgICAgIElOVCwKLSsgICAgICAgIFVJTlQsCi0rICAgICAgICBVTExPTkcsCi0rICAgICAgICBMT05HLAotKyAgICAgICAgVUxPTkcsCi0rICAgICAgICBTSE9SVCwKLSsgICAgICAgIFVTSE9SVCwKLSsgICAgICAgIENIQVIsCi0rICAgICAgICBVQ0hBUiwKLSsgICAgICAgIExMT05HLAotKyAgICAgICAgU0laRVQsCi0rICAgICAgICBJTUFYLAotKyAgICAgICAgVU1BWCwKLSsgICAgICAgIFBESUZGLAotKyAgICAgICAgVUlQVFIsCi0rICAgICAgICBEQkwsCi0rICAgICAgICBMREJMLAotKyAgICAgICAgTUFYVFlQRQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHNob3J0IHBhX3R5cGVzW01BWFRZUEVdID0gewotKyAgICAgICAgW05PTkVdICAgPSBQQV9JTlQsCi0rICAgICAgICBbUFRSXSAgICA9IFBBX1BPSU5URVIsCi0rICAgICAgICBbSU5UXSAgICA9IFBBX0lOVCwKLSsgICAgICAgIFtVSU5UXSAgID0gUEFfSU5ULAotKyAgICAgICAgW1VMTE9OR10gPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKLSsgICAgICAgIFtMT05HXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAotKyAgICAgICAgW1VMT05HXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCi0rICAgICAgICBbU0hPUlRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCi0rICAgICAgICBbVVNIT1JUXSA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCi0rICAgICAgICBbQ0hBUl0gICA9IFBBX0NIQVIsCi0rICAgICAgICBbVUNIQVJdICA9IFBBX0NIQVIsCi0rICAgICAgICBbTExPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAotKyAgICAgICAgW1NJWkVUXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCi0rICAgICAgICBbSU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAotKyAgICAgICAgW1VNQVhdICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKLSsgICAgICAgIFtQRElGRl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCi0rICAgICAgICBbVUlQVFJdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKLSsgICAgICAgIFtEQkxdICAgID0gUEFfRE9VQkxFLAotKyAgICAgICAgW0xEQkxdICAgPSBQQV9ET1VCTEUgfCBQQV9GTEFHX0xPTkdfRE9VQkxFCi0rfTsKLSsKLSsjZGVmaW5lIFMoeCkgWyh4KS0nQSddCi0rI2RlZmluZSBFKHgpIChTVE9QICsgKHgpKQotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN0YXRlc1tdWyd6Jy0nQScrMV0gPSB7Ci0rICAgICAgICB7IC8qIDA6IGJhcmUgdHlwZXMgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTlQpLCBTKCdpJykgPSBFKElOVCksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUlOVCksUygndScpID0gRShVSU5UKSxTKCd4JykgPSBFKFVJTlQpLCBTKCdYJykgPSBFKFVJTlQpLAotKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKERCTCksIFMoJ2YnKSA9IEUoREJMKSwgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAotKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksIFMoJ0YnKSA9IEUoREJMKSwgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAotKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKENIQVIpLFMoJ0MnKSA9IEUoSU5UKSwKLSsgICAgICAgICAgICAgICAgUygncycpID0gRShQVFIpLCBTKCdTJykgPSBFKFBUUiksIFMoJ3AnKSA9IEUoVUlQVFIpLFMoJ24nKSA9IEUoUFRSKSwKLSsgICAgICAgICAgICAgICAgUygnbScpID0gRShOT05FKSwKLSsgICAgICAgICAgICAgICAgUygnbCcpID0gTFBSRSwgICBTKCdoJykgPSBIUFJFLCBTKCdMJykgPSBCSUdMUFJFLAotKyAgICAgICAgICAgICAgICBTKCd6JykgPSBaVFBSRSwgIFMoJ2onKSA9IEpQUkUsIFMoJ3QnKSA9IFpUUFJFCi0rICAgICAgICB9LCB7IC8qIDE6IGwtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShMT05HKSwgUygnaScpID0gRShMT05HKSwKLSsgICAgICAgICAgICAgICAgUygnbycpID0gRShVTE9ORyksUygndScpID0gRShVTE9ORyksUygneCcpID0gRShVTE9ORyksUygnWCcpID0gRShVTE9ORyksCi0rICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgIFMoJ2YnKSA9IEUoREJMKSwgIFMoJ2cnKSA9IEUoREJMKSwgIFMoJ2EnKSA9IEUoREJMKSwKLSsgICAgICAgICAgICAgICAgUygnRScpID0gRShEQkwpLCAgUygnRicpID0gRShEQkwpLCAgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAotKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKElOVCksICBTKCdzJykgPSBFKFBUUiksICBTKCduJykgPSBFKFBUUiksCi0rICAgICAgICAgICAgICAgIFMoJ2wnKSA9IExMUFJFCi0rICAgICAgICB9LCB7IC8qIDI6IGxsLXByZWZpeGVkICovCi0rICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoTExPTkcpLCBTKCdpJykgPSBFKExMT05HKSwKLSsgICAgICAgICAgICAgICAgUygnbycpID0gRShVTExPTkcpLFMoJ3UnKSA9IEUoVUxMT05HKSwKLSsgICAgICAgICAgICAgICAgUygneCcpID0gRShVTExPTkcpLFMoJ1gnKSA9IEUoVUxMT05HKSwKLSsgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCi0rICAgICAgICB9LCB7IC8qIDM6IGgtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShTSE9SVCksIFMoJ2knKSA9IEUoU0hPUlQpLAotKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVTSE9SVCksUygndScpID0gRShVU0hPUlQpLAotKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVTSE9SVCksUygnWCcpID0gRShVU0hPUlQpLAotKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUiksCi0rICAgICAgICAgICAgICAgIFMoJ2gnKSA9IEhIUFJFCi0rICAgICAgICB9LCB7IC8qIDQ6IGhoLXByZWZpeGVkICovCi0rICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoQ0hBUiksIFMoJ2knKSA9IEUoQ0hBUiksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUNIQVIpLFMoJ3UnKSA9IEUoVUNIQVIpLAotKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVDSEFSKSxTKCdYJykgPSBFKFVDSEFSKSwKLSsgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCi0rICAgICAgICB9LCB7IC8qIDU6IEwtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZScpID0gRShMREJMKSxTKCdmJykgPSBFKExEQkwpLFMoJ2cnKSA9IEUoTERCTCksIFMoJ2EnKSA9IEUoTERCTCksCi0rICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoTERCTCksUygnRicpID0gRShMREJMKSxTKCdHJykgPSBFKExEQkwpLCBTKCdBJykgPSBFKExEQkwpLAotKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKLSsgICAgICAgIH0sIHsgLyogNjogei0gb3IgdC1wcmVmaXhlZCAoYXNzdW1lZCB0byBiZSBzYW1lIHNpemUpICovCi0rICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoUERJRkYpLFMoJ2knKSA9IEUoUERJRkYpLAotKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFNJWkVUKSxTKCd1JykgPSBFKFNJWkVUKSwKLSsgICAgICAgICAgICAgICAgUygneCcpID0gRShTSVpFVCksUygnWCcpID0gRShTSVpFVCksCi0rICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQotKyAgICAgICAgfSwgeyAvKiA3OiBqLXByZWZpeGVkICovCi0rICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoSU1BWCksIFMoJ2knKSA9IEUoSU1BWCksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVU1BWCksIFMoJ3UnKSA9IEUoVU1BWCksCi0rICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVU1BWCksIFMoJ1gnKSA9IEUoVU1BWCksCi0rICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQotKyAgICAgICAgfQotK307Ci0rCi0rc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcykKLSt7Ci0rICAgICAgICBzaXplX3QgaSA9IDA7Ci0rICAgICAgICBzaXplX3QgbGFzdCA9IDA7Ci0rCi0rICAgICAgICBtZW1zZXQodHlwZXMsIDAsIG4pOwotKwotKyAgICAgICAgd2hpbGUgKDEpIHsKLSsgICAgICAgICAgICAgICAgc2l6ZV90IGFyZzsKLSsgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXRlOwotKwotKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX25vbmFyZyhmbXQpOwotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnJScpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKLSsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBhcmcgPSAwOwotKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10LCAmYXJnKTsKLSsgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KLSsgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9mbGFncyhmbXQpOwotKyAgICAgICAgICAgICAgICAvKiB3aWR0aCAqLwotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd2FyZyA9IDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCsxLCAmd2FyZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPT0gMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcmcgPSArK2k7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPiBsYXN0KQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHdhcmc7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPD0gbiAmJiB0eXBlc1t3YXJnLTFdID09IE5PTkUpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1t3YXJnLTFdID0gSU5UOwotKyAgICAgICAgICAgICAgICB9IGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOwotKyAgICAgICAgICAgICAgICAvKiBwcmVjaXNpb24gKi8KLSsgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy4nKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyonKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFyZyA9IDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZwYXJnKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID09IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmcgPSArK2k7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA+IGxhc3QpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJnOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPD0gbiAmJiB0eXBlc1twYXJnLTFdID09IE5PTkUpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3BhcmctMV0gPSBJTlQ7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICctJykKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAvKiBsZW5ndGggbW9kaWZpZXIgYW5kIGNvbnZlcnNpb24gc3BlY2lmaWVyICovCi0rICAgICAgICAgICAgICAgIHN0YXRlID0gQkFSRTsKLSsgICAgICAgICAgICAgICAgZG8gewotKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpmbXQrKzsKLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICdBJyB8fCBjID4gJ3onKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZXNbc3RhdGVdUyhjKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICB9IHdoaWxlIChzdGF0ZSA8IFNUT1ApOwotKwotKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gRShOT05FKSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZyA9PSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9ICsraTsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZyA+IGxhc3QpCi0rICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGFyZzsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZyA8PSBuKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW2FyZy0xXSA9IHN0YXRlIC0gU1RPUDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmIChsYXN0ID4gbikKLSsgICAgICAgICAgICAgICAgbGFzdCA9IG47Ci0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGFzdDsgaSsrKQotKyAgICAgICAgICAgICAgICB0eXBlc1tpXSA9IHBhX3R5cGVzW3R5cGVzW2ldXTsKLSsKLSsgICAgICAgIHJldHVybiBsYXN0OwotK30KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uNDM3MTE3N2IwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCi1AQCAtMCwwICsxLDU3IEBACi0rLyotKi0gTW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDg7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0qLwotKwotKy8qKioKLSsgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHN5c3RlbWQuCi0rCi0rICBDb3B5cmlnaHQgMjAxNCBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KLSsKLSsgIFdpdGggcGFydHMgZnJvbSB0aGUgR05VIEMgTGlicmFyeQotKyAgQ29weXJpZ2h0IDE5OTEtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgIHN5c3RlbWQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgc3lzdGVtZCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKLSsgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyoqKi8KLSsKLSsjcHJhZ21hIG9uY2UKLSsKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rCi0rI2lmZGVmIEhBVkVfUFJJTlRGX0gKLSsjaW5jbHVkZSA8cHJpbnRmLmg+Ci0rI2Vsc2UKLSsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rZW51bSB7CQkJCS8qIEMgdHlwZTogKi8KLSsgIFBBX0lOVCwJCQkvKiBpbnQgKi8KLSsgIFBBX0NIQVIsCQkJLyogaW50LCBjYXN0IHRvIGNoYXIgKi8KLSsgIFBBX1dDSEFSLAkJCS8qIHdpZGUgY2hhciAqLwotKyAgUEFfU1RSSU5HLAkJCS8qIGNvbnN0IGNoYXIgKiwgYSAnXDAnLXRlcm1pbmF0ZWQgc3RyaW5nICovCi0rICBQQV9XU1RSSU5HLAkJCS8qIGNvbnN0IHdjaGFyX3QgKiwgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nICovCi0rICBQQV9QT0lOVEVSLAkJCS8qIHZvaWQgKiAqLwotKyAgUEFfRkxPQVQsCQkJLyogZmxvYXQgKi8KLSsgIFBBX0RPVUJMRSwJCQkvKiBkb3VibGUgKi8KLSsgIFBBX0xBU1QKLSt9OwotKwotKy8qIEZsYWcgYml0cyB0aGF0IGNhbiBiZSBzZXQgaW4gYSB0eXBlIHJldHVybmVkIGJ5IGBwYXJzZV9wcmludGZfZm9ybWF0Jy4gICovCi0rI2RlZmluZQlQQV9GTEFHX01BU0sJCTB4ZmYwMAotKyNkZWZpbmUJUEFfRkxBR19MT05HX0xPTkcJKDEgPDwgOCkKLSsjZGVmaW5lCVBBX0ZMQUdfTE9OR19ET1VCTEUJUEFfRkxBR19MT05HX0xPTkcKLSsjZGVmaW5lCVBBX0ZMQUdfTE9ORwkJKDEgPDwgOSkKLSsjZGVmaW5lCVBBX0ZMQUdfU0hPUlQJCSgxIDw8IDEwKQotKyNkZWZpbmUJUEFfRkxBR19QVFIJCSgxIDw8IDExKQotKwotK3NpemVfdCBwYXJzZV9wcmludGZfZm9ybWF0KGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90IG4sIGludCAqdHlwZXMpOwotKwotKyNlbmRpZiAvKiBIQVZFX1BSSU5URl9IICovCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCBiL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKLWluZGV4IGJkMTE0NGI0Yy4uYzljOTVlYjU0IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAotKysrIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAotQEAgLTE5LDEyICsxOSwxMiBAQAotICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKioqLwotIAotLSNpbmNsdWRlIDxwcmludGYuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotICNpbmNsdWRlICJtYWNyby5oIgotKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCi0gCi0gI2RlZmluZSB4c3ByaW50ZihidWYsIGZtdCwgLi4uKSBcCi0gICAgICAgICBhc3NlcnRfbWVzc2FnZV9zZSgoc2l6ZV90KSBzbnByaW50ZihidWYsIEVMRU1FTlRTT0YoYnVmKSwgZm10LCBfX1ZBX0FSR1NfXykgPCBFTEVNRU5UU09GKGJ1ZiksICJ4c3ByaW50ZjogIiAjYnVmICJbXSBtdXN0IGJlIGJpZyBlbm91Z2giKQotZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKLWluZGV4IDQ0MGZiYTY3Yy4uMDIzNmM0M2M0IDEwMDY0NAotLS0tIGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKLSsrKyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCi1AQCAtMTksNyArMTksNiBAQAotIAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotLSNpbmNsdWRlIDxwcmludGYuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8c3lzL3VuLmg+Ci1AQCAtMzgsNiArMzcsNyBAQAotICNpbmNsdWRlICJzdGRpby11dGlsLmgiCi0gI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgotIAotICNkZWZpbmUgU05EQlVGX1NJWkUgKDgqMTAyNCoxMDI0KQotIAotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtZGV2aWNlLmMtQ2hhbmdlLXRoZS1kZWZhdWx0LWRldmljZS10aW1lb3V0LXRvLTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaAppbmRleCA3ZjFiYzQ0Li45OGM4MzYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaApAQCAtMSw4ICsxLDcgQEAKLUZyb20gZjFiNWE2ZjcxN2JkYTZmODBhNmI1ZTNlNGQ1MGI0NTBmNmNjN2IwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzg0NGUwNzA3NDU2MTFhNTJlMzU1YjczZTc4OTBmMzYwZGQ1NDBkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDE0IERlYyAyMDE1IDA0OjA5OjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMTRdIGNvcmUvZGV2aWNlLmM6IENoYW5nZSB0aGUgZGVmYXVsdCBkZXZpY2UgdGltZW91dCB0byAyNDAKLSBzZWMuCitTdWJqZWN0OiBbUEFUQ0hdIGNvcmUvZGV2aWNlLmM6IENoYW5nZSB0aGUgZGVmYXVsdCBkZXZpY2UgdGltZW91dCB0byAyNDAgc2VjLgogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdApAQCAtMTcsMTAgKzE2LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvY29yZS9kZXZpY2UuYyBiL3NyYy9jb3JlL2RldmljZS5jCi1pbmRleCA3NzYwMWM1NTIuLjk4YmY0OWJhMiAxMDA2NDQKK2luZGV4IGE0MzY2NGQzYi4uNGIxNmE4YWVjIDEwMDY0NAogLS0tIGEvc3JjL2NvcmUvZGV2aWNlLmMKICsrKyBiL3NyYy9jb3JlL2RldmljZS5jCi1AQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyB2b2lkIGRldmljZV9pbml0KFVuaXQgKnUpIHsKK0BAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2luaXQoVW5pdCAqdSkgewogICAgICAgICAgICogaW5kZWZpbml0ZWx5IGZvciBwbHVnZ2VkIGluIGRldmljZXMsIHNvbWV0aGluZyB3aGljaCBjYW5ub3QKICAgICAgICAgICAqIGhhcHBlbiBmb3IgdGhlIG90aGVyIHVuaXRzIHNpbmNlIHRoZWlyIG9wZXJhdGlvbnMgdGltZSBvdXQKICAgICAgICAgICAqIGFueXdheS4gKi8KQEAgLTI5LDYgKzI4LDMgQEAKICAKICAgICAgICAgIHUtPmlnbm9yZV9vbl9pc29sYXRlID0gdHJ1ZTsKICB9Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1ldmFsdWF0ZS1wcmVzZXRzLWFmdGVyLWdlbmVyYXRvcnMtaGF2ZS1ydW4tNjUyNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWV2YWx1YXRlLXByZXNldHMtYWZ0ZXItZ2VuZXJhdG9ycy1oYXZlLXJ1bi02NTI2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjEwMGU1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWV2YWx1YXRlLXByZXNldHMtYWZ0ZXItZ2VuZXJhdG9ycy1oYXZlLXJ1bi02NTI2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotRnJvbSAyOGRkNjZlY2ZjZTc0M2IxZWE5MDQ2YzdiYjUwMWUwZmNhZWZmNzI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTHVjYSBCcnVubyA8bHVjYS5icnVub0Bjb3Jlb3MuY29tPgotRGF0ZTogU3VuLCA2IEF1ZyAyMDE3IDEzOjI0OjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvcmU6IGV2YWx1YXRlIHByZXNldHMgYWZ0ZXIgZ2VuZXJhdG9ycyBoYXZlIHJ1biAoIzY1MjYpCi0KLVRoaXMgY29tbWl0IG1vdmVzIHRoZSBmaXJzdC1ib290IHN5c3RlbSBwcmVzZXQtc2V0dGluZ3MgZXZhbHVhdGlvbiBvdXQKLW9mIG1haW4gYW5kIGludG8gdGhlIG1hbmFnZXIgc3RhcnR1cCBsb2dpYyBpdHNlbGYuIE5vdGFibHksIGl0IHJldmVyc2VzCi10aGUgb3JkZXIgYmV0d2VlbiBnZW5lcmF0b3JzIGFuZCBwcmVzZXRzIGV2YWx1YXRpb24sIHNvIHRoYXQgYW55IGNoYW5nZXMKLXBlcmZvcm1lZCBieSBmaXJzdC1ib290IGdlbmVyYXRvcnMgYXJlIHRha2VuIGludG8gdGhlIGFjY291bnQgYnkgcHJlc2V0cwotbG9naWMuCi0KLUFmdGVyIHRoaXMgY2hhbmdlLCB1bml0cyBjcmVhdGVkIGJ5IGEgZ2VuZXJhdG9yIGNhbiBiZSBlbmFibGVkIGFzIHBhcnQKLW9mIGEgcHJlc2V0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2NvcmUvbWFpbi5jICAgIHwgMTIgKystLS0tLS0tLS0tCi0gc3JjL2NvcmUvbWFuYWdlci5jIHwgIDggKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFpbi5jIGIvc3JjL2NvcmUvbWFpbi5jCi1pbmRleCBkZmVkYzNkLi4xMWFjOWNmIDEwMDY0NAotLS0tIGEvc3JjL2NvcmUvbWFpbi5jCi0rKysgYi9zcmMvY29yZS9tYWluLmMKLUBAIC0xODA5LDE4ICsxODA5LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKLSAgICAgICAgICAgICAgICAgaWYgKHByY3RsKFBSX1NFVF9DSElMRF9TVUJSRUFQRVIsIDEpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfd2FybmluZ19lcnJubyhlcnJubywgIkZhaWxlZCB0byBtYWtlIHVzIGEgc3VicmVhcGVyOiAlbSIpOwotIAotLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0pIHsKLSsgICAgICAgIGlmIChhcmdfc3lzdGVtKQotKyAgICAgICAgICAgICAgICAvKiBCdW1wIHVwIFJMSU1JVF9OT0ZJTEUgZm9yIHN5c3RlbWQgaXRzZWxmICovCi0gICAgICAgICAgICAgICAgICh2b2lkKSBidW1wX3JsaW1pdF9ub2ZpbGUoJnNhdmVkX3JsaW1pdF9ub2ZpbGUpOwotIAotLSAgICAgICAgICAgICAgICBpZiAoZW1wdHlfZXRjKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgciA9IHVuaXRfZmlsZV9wcmVzZXRfYWxsKFVOSVRfRklMRV9TWVNURU0sIDAsIE5VTEwsIFVOSVRfRklMRV9QUkVTRVRfRU5BQkxFX09OTFksIE5VTEwsIDApOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19mdWxsX2Vycm5vKHIgPT0gLUVFWElTVCA/IExPR19OT1RJQ0UgOiBMT0dfV0FSTklORywgciwgIkZhaWxlZCB0byBwb3B1bGF0ZSAvZXRjIHdpdGggcHJlc2V0IHVuaXQgc2V0dGluZ3MsIGlnbm9yaW5nOiAlbSIpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvKCJQb3B1bGF0ZWQgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLiIpOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tCi0gICAgICAgICByID0gbWFuYWdlcl9uZXcoYXJnX3N5c3RlbSA/IFVOSVRfRklMRV9TWVNURU0gOiBVTklUX0ZJTEVfVVNFUiwgYXJnX2FjdGlvbiA9PSBBQ1RJT05fVEVTVCwgJm0pOwotICAgICAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBhbGxvY2F0ZSBtYW5hZ2VyIG9iamVjdDogJW0iKTsKLWRpZmYgLS1naXQgYS9zcmMvY29yZS9tYW5hZ2VyLmMgYi9zcmMvY29yZS9tYW5hZ2VyLmMKLWluZGV4IDFhYWRiNzAuLmZiNWUyYjUgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS9tYW5hZ2VyLmMKLSsrKyBiL3NyYy9jb3JlL21hbmFnZXIuYwotQEAgLTEzMjgsNiArMTMyOCwxNCBAQCBpbnQgbWFuYWdlcl9zdGFydHVwKE1hbmFnZXIgKm0sIEZJTEUgKnNlcmlhbGl6YXRpb24sIEZEU2V0ICpmZHMpIHsKLSAgICAgICAgIGlmIChyIDwgMCkKLSAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0gCi0rICAgICAgICBpZiAobS0+Zmlyc3RfYm9vdCAmJiBtLT51bml0X2ZpbGVfc2NvcGUgPT0gVU5JVF9GSUxFX1NZU1RFTSkgewotKyAgICAgICAgICAgICAgICBxID0gdW5pdF9maWxlX3ByZXNldF9hbGwoVU5JVF9GSUxFX1NZU1RFTSwgMCwgTlVMTCwgVU5JVF9GSUxFX1BSRVNFVF9FTkFCTEVfT05MWSwgTlVMTCwgMCk7Ci0rICAgICAgICAgICAgICAgIGlmIChxIDwgMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZnVsbF9lcnJubyhxID09IC1FRVhJU1QgPyBMT0dfTk9USUNFIDogTE9HX1dBUk5JTkcsIHEsICJGYWlsZWQgdG8gcG9wdWxhdGUgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLCBpZ25vcmluZzogJW0iKTsKLSsgICAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvKCJQb3B1bGF0ZWQgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLiIpOwotKyAgICAgICAgfQotKwotICAgICAgICAgbG9va3VwX3BhdGhzX3JlZHVjZSgmbS0+bG9va3VwX3BhdGhzKTsKLSAgICAgICAgIG1hbmFnZXJfYnVpbGRfdW5pdF9wYXRoX2NhY2hlKG0pOwotIAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLW1haW4tc2tpcC1tYW55LWluaXRpYWxpemF0aW9uLXN0ZXBzLXdoZW4tcnVubmluZy1pbi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbWFpbi1za2lwLW1hbnktaW5pdGlhbGl6YXRpb24tc3RlcHMtd2hlbi1ydW5uaW5nLWluLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAzM2IwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbWFpbi1za2lwLW1hbnktaW5pdGlhbGl6YXRpb24tc3RlcHMtd2hlbi1ydW5uaW5nLWluLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi1Gcm9tIGRlYTM3NGU4OThhNzQ5YTA0NzRiNzJiMjAxNWNjYTkwMDliMTQzMmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMZW5uYXJ0IFBvZXR0ZXJpbmcgPGxlbm5hcnRAcG9ldHRlcmluZy5uZXQ+Ci1EYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDEwOjMxOjQwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1haW46IHNraXAgbWFueSBpbml0aWFsaXphdGlvbiBzdGVwcyB3aGVuIHJ1bm5pbmcgaW4gLS10ZXN0Ci0gbW9kZQotCi1Nb3N0IGltcG9ydGFudGx5LCBkb24ndCBjb2xsZWN0IG9wZW4gc29ja2V0IGFjdGl2YXRpb24gZmRzIHdoZW4gaW4KLS0tdGVzdCBtb2RlLiBUaGlzIHNwZWNpZmljYWxseSBjcmVhdGVkIGEgcHJvYmxlbSBiZWNhdXNlIHdlIGludm9rZQotcGFnZXJfb3BlbigpIGJlZm9yZWhhbmQgKHdoaWNoIHRoZXNlIGRheXMgbWFrZXMgY29waWVzIG9mIHRoZSBvcmlnaW5hbAotc3Rkb3V0L3N0ZGVyciBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJlc3RvcmUgdGhlbSB3aGVuIHRoZSBwYWdlciBnb2VzCi1hd2F5KSBhbmQgd2UgbWlnaHQgbWlzdGFrZW5seSB0aGUgZmQgY29waWVzIGl0IGNyZWF0ZXMgYXMgc29ja2V0Ci1hY3RpdmF0aW9uIGZkcy4KLQotRml4ZXM6ICM2MzgzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvY29yZS9tYWluLmMgfCAxMDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY29yZS9tYWluLmMgYi9zcmMvY29yZS9tYWluLmMKLWluZGV4IDExYWM5Y2YuLmQxYTUzYTUgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS9tYWluLmMKLSsrKyBiL3NyYy9jb3JlL21haW4uYwotQEAgLTE2NzksMjAgKzE2NzksMjIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewotICAgICAgICAgbG9nX2Nsb3NlKCk7Ci0gCi0gICAgICAgICAvKiBSZW1lbWJlciBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgZm9yIGxhdGVyIGRlc2VyaWFsaXphdGlvbiAqLwotLSAgICAgICAgciA9IGZkc2V0X25ld19maWxsKCZmZHMpOwotLSAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBhbGxvY2F0ZSBmZCBzZXQ6ICVtIik7Ci0tICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGFsbG9jYXRlIGZkIHNldCI7Ci0tICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOwotLSAgICAgICAgfSBlbHNlCi0tICAgICAgICAgICAgICAgIGZkc2V0X2Nsb2V4ZWMoZmRzLCB0cnVlKTsKLSsgICAgICAgIGlmIChhcmdfYWN0aW9uID09IEFDVElPTl9SVU4pIHsKLSsgICAgICAgICAgICAgICAgciA9IGZkc2V0X25ld19maWxsKCZmZHMpOwotKyAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gYWxsb2NhdGUgZmQgc2V0OiAlbSIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGFsbG9jYXRlIGZkIHNldCI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZQotKyAgICAgICAgICAgICAgICAgICAgICAgIGZkc2V0X2Nsb2V4ZWMoZmRzLCB0cnVlKTsKLSAKLS0gICAgICAgIGlmIChhcmdfc2VyaWFsaXphdGlvbikKLS0gICAgICAgICAgICAgICAgYXNzZXJ0X3NlKGZkc2V0X3JlbW92ZShmZHMsIGZpbGVubyhhcmdfc2VyaWFsaXphdGlvbikpID49IDApOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnX3NlcmlhbGl6YXRpb24pCi0rICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3NlKGZkc2V0X3JlbW92ZShmZHMsIGZpbGVubyhhcmdfc2VyaWFsaXphdGlvbikpID49IDApOwotIAotLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCi0tICAgICAgICAgICAgICAgIC8qIEJlY29tZSBhIHNlc3Npb24gbGVhZGVyIGlmIHdlIGFyZW4ndCBvbmUgeWV0LiAqLwotLSAgICAgICAgICAgICAgICBzZXRzaWQoKTsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCi0rICAgICAgICAgICAgICAgICAgICAgICAgLyogQmVjb21lIGEgc2Vzc2lvbiBsZWFkZXIgaWYgd2UgYXJlbid0IG9uZSB5ZXQuICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgc2V0c2lkKCk7Ci0rICAgICAgICB9Ci0gCi0gICAgICAgICAvKiBNb3ZlIG91dCBvZiB0aGUgd2F5LCBzbyB0aGF0IHdlIHdvbid0IGJsb2NrIHVubW91bnRzICovCi0gICAgICAgICBhc3NlcnRfc2UoY2hkaXIoIi8iKSA9PSAwKTsKLUBAIC0xNzYyLDU2ICsxNzY0LDU4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19hY3Rpb24gPT0gQUNUSU9OX1RFU1QgPyAiIHRlc3QiIDogIiIsIGdldHVpZCgpLCB0KTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIGlmIChhcmdfc3lzdGVtICYmICFza2lwX3NldHVwKSB7Ci0tICAgICAgICAgICAgICAgIGlmIChhcmdfc2hvd19zdGF0dXMgPiAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c193ZWxjb21lKCk7Ci0rICAgICAgICBpZiAoYXJnX2FjdGlvbiA9PSBBQ1RJT05fUlVOKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChhcmdfc3lzdGVtICYmICFza2lwX3NldHVwKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ19zaG93X3N0YXR1cyA+IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfd2VsY29tZSgpOwotIAotLSAgICAgICAgICAgICAgICBob3N0bmFtZV9zZXR1cCgpOwotLSAgICAgICAgICAgICAgICBtYWNoaW5lX2lkX3NldHVwKE5VTEwsIGFyZ19tYWNoaW5lX2lkLCBOVUxMKTsKLS0gICAgICAgICAgICAgICAgbG9vcGJhY2tfc2V0dXAoKTsKLS0gICAgICAgICAgICAgICAgYnVtcF91bml4X21heF9kZ3JhbV9xbGVuKCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaG9zdG5hbWVfc2V0dXAoKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lX2lkX3NldHVwKE5VTEwsIGFyZ19tYWNoaW5lX2lkLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb29wYmFja19zZXR1cCgpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1bXBfdW5peF9tYXhfZGdyYW1fcWxlbigpOwotIAotLSAgICAgICAgICAgICAgICB0ZXN0X3VzcigpOwotLSAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXNyKCk7Ci0rICAgICAgICAgICAgICAgIH0KLSAKLS0gICAgICAgIGlmIChhcmdfc3lzdGVtICYmIGFyZ19ydW50aW1lX3dhdGNoZG9nID4gMCAmJiBhcmdfcnVudGltZV93YXRjaGRvZyAhPSBVU0VDX0lORklOSVRZKQotLSAgICAgICAgICAgICAgICB3YXRjaGRvZ19zZXRfdGltZW91dCgmYXJnX3J1bnRpbWVfd2F0Y2hkb2cpOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnX3N5c3RlbSAmJiBhcmdfcnVudGltZV93YXRjaGRvZyA+IDAgJiYgYXJnX3J1bnRpbWVfd2F0Y2hkb2cgIT0gVVNFQ19JTkZJTklUWSkKLSsgICAgICAgICAgICAgICAgICAgICAgICB3YXRjaGRvZ19zZXRfdGltZW91dCgmYXJnX3J1bnRpbWVfd2F0Y2hkb2cpOwotIAotLSAgICAgICAgaWYgKGFyZ190aW1lcl9zbGFja19uc2VjICE9IE5TRUNfSU5GSU5JVFkpCi0tICAgICAgICAgICAgICAgIGlmIChwcmN0bChQUl9TRVRfVElNRVJTTEFDSywgYXJnX3RpbWVyX3NsYWNrX25zZWMpIDwgMCkKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gYWRqdXN0IHRpbWVyIHNsYWNrOiAlbSIpOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnX3RpbWVyX3NsYWNrX25zZWMgIT0gTlNFQ19JTkZJTklUWSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJjdGwoUFJfU0VUX1RJTUVSU0xBQ0ssIGFyZ190aW1lcl9zbGFja19uc2VjKSA8IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gYWRqdXN0IHRpbWVyIHNsYWNrOiAlbSIpOwotIAotLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0gJiYgIWNhcF90ZXN0X2FsbChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQpKSB7Ci0tICAgICAgICAgICAgICAgIHIgPSBjYXBhYmlsaXR5X2JvdW5kaW5nX3NldF9kcm9wX3VzZXJtb2RlKGFyZ19jYXBhYmlsaXR5X2JvdW5kaW5nX3NldCk7Ci0tICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnM6ICVtIik7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldCBvZiB1c2VybW9kZSBoZWxwZXJzIjsKLS0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAgICByID0gY2FwYWJpbGl0eV9ib3VuZGluZ19zZXRfZHJvcChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQsIHRydWUpOwotLSAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldDogJW0iKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IjsKLS0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0gJiYgIWNhcF90ZXN0X2FsbChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQpKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgciA9IGNhcGFiaWxpdHlfYm91bmRpbmdfc2V0X2Ryb3BfdXNlcm1vZGUoYXJnX2NhcGFiaWxpdHlfYm91bmRpbmdfc2V0KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnM6ICVtIik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnMiOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBjYXBhYmlsaXR5X2JvdW5kaW5nX3NldF9kcm9wKGFyZ19jYXBhYmlsaXR5X2JvdW5kaW5nX3NldCwgdHJ1ZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldDogJW0iKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGRyb3AgY2FwYWJpbGl0eSBib3VuZGluZyBzZXQiOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0gCi0tICAgICAgICBpZiAoYXJnX3N5c2NhbGxfYXJjaHMpIHsKLS0gICAgICAgICAgICAgICAgciA9IGVuZm9yY2Vfc3lzY2FsbF9hcmNocyhhcmdfc3lzY2FsbF9hcmNocyk7Ci0tICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIHNldCBzeXNjYWxsIGFyY2hpdGVjdHVyZXMiOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnX3N5c2NhbGxfYXJjaHMpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICByID0gZW5mb3JjZV9zeXNjYWxsX2FyY2hzKGFyZ19zeXNjYWxsX2FyY2hzKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIHNldCBzeXNjYWxsIGFyY2hpdGVjdHVyZXMiOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0gCi0tICAgICAgICBpZiAoIWFyZ19zeXN0ZW0pCi0tICAgICAgICAgICAgICAgIC8qIEJlY29tZSByZWFwZXIgb2Ygb3VyIGNoaWxkcmVuICovCi0tICAgICAgICAgICAgICAgIGlmIChwcmN0bChQUl9TRVRfQ0hJTERfU1VCUkVBUEVSLCAxKSA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3dhcm5pbmdfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gbWFrZSB1cyBhIHN1YnJlYXBlcjogJW0iKTsKLSsgICAgICAgICAgICAgICAgaWYgKCFhcmdfc3lzdGVtKQotKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJlY29tZSByZWFwZXIgb2Ygb3VyIGNoaWxkcmVuICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByY3RsKFBSX1NFVF9DSElMRF9TVUJSRUFQRVIsIDEpIDwgMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ193YXJuaW5nX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG1ha2UgdXMgYSBzdWJyZWFwZXI6ICVtIik7Ci0gCi0tICAgICAgICBpZiAoYXJnX3N5c3RlbSkKLS0gICAgICAgICAgICAgICAgLyogQnVtcCB1cCBSTElNSVRfTk9GSUxFIGZvciBzeXN0ZW1kIGl0c2VsZiAqLwotLSAgICAgICAgICAgICAgICAodm9pZCkgYnVtcF9ybGltaXRfbm9maWxlKCZzYXZlZF9ybGltaXRfbm9maWxlKTsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCi0rICAgICAgICAgICAgICAgICAgICAgICAgLyogQnVtcCB1cCBSTElNSVRfTk9GSUxFIGZvciBzeXN0ZW1kIGl0c2VsZiAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBidW1wX3JsaW1pdF9ub2ZpbGUoJnNhdmVkX3JsaW1pdF9ub2ZpbGUpOwotKyAgICAgICAgfQotIAotICAgICAgICAgciA9IG1hbmFnZXJfbmV3KGFyZ19zeXN0ZW0gPyBVTklUX0ZJTEVfU1lTVEVNIDogVU5JVF9GSUxFX1VTRVIsIGFyZ19hY3Rpb24gPT0gQUNUSU9OX1RFU1QsICZtKTsKLSAgICAgICAgIGlmIChyIDwgMCkgewotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2Y0YjM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2gKQEAgLTAsMCArMSw4MSBAQAorRnJvbSBjOTNlYjZjZGVjMDNmNWUyNDNlNTllOTVkYzQ5MjczZmNiOTBlN2MxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyMyBGZWIgMjAxOCAxMDoyMzo0MCArMDgwMAorU3ViamVjdDogW1BBVENIIDAyLzMxXSBiaW5mbXQ6IERvbid0IGluc3RhbGwgZGVwZW5kZW5jeSBsaW5rcyBhdCBpbnN0YWxsIHRpbWUKKyBmb3IgdGhlIGJpbmZtdCBzZXJ2aWNlcworCit1c2UgW0luc3RhbGxdIGJsb2NrcyBzbyB0aGF0IHRoZXkgZ2V0IGNyZWF0ZWQgd2hlbiB0aGUgc2VydmljZSBpcyBlbmFibGVkCitsaWtlIGEgdHJhZGl0aW9uYWwgc2VydmljZS4KKworVGhlIFtJbnN0YWxsXSBibG9ja3Mgd2VyZSByZWplY3RlZCB1cHN0cmVhbSBhcyB0aGV5IGRvbid0IGhhdmUgYSB3YXkgdG8KKyJlbmFibGUiIGl0IG9uIGluc3RhbGwgd2l0aG91dCBzdGF0aWMgc3ltbGlua3Mgd2hpY2ggY2FuJ3QgYmUgZGlzYWJsZWQsCitvbmx5IG1hc2tlZC4gV2UgaG93ZXZlciBjYW4gZG8gdGhhdCBpbiBhIHBvc3RpbnN0LgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZAorCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHVuaXRzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8IDYgKystLS0tCisgdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50IHwgMyArKysKKyB1bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluICAgICAgICAgfCA0ICsrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3VuaXRzL21lc29uLmJ1aWxkIGIvdW5pdHMvbWVzb24uYnVpbGQKK2luZGV4IDgxNGVlNzg4NS4uNDlhY2UwZDBmIDEwMDY0NAorLS0tIGEvdW5pdHMvbWVzb24uYnVpbGQKKysrKyBiL3VuaXRzL21lc29uLmJ1aWxkCitAQCAtNjAsOCArNjAsNyBAQCB1bml0cyA9IFsKKyAgICAgICAgIFsncG93ZXJvZmYudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAnJywKKyAgICAgICAgICAncnVubGV2ZWwwLnRhcmdldCddLAorICAgICAgICAgWydwcmludGVyLnRhcmdldCcsICAgICAgICAgICAgICAgICAgICAgICcnXSwKKy0gICAgICAgIFsncHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50JywgICAnRU5BQkxFX0JJTkZNVCcsCistICAgICAgICAgJ3N5c2luaXQudGFyZ2V0LndhbnRzLyddLAorKyAgICAgICAgWydwcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQnLCAgICdFTkFCTEVfQklORk1UJ10sCisgICAgICAgICBbJ3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLm1vdW50JywgICAgICAgJ0VOQUJMRV9CSU5GTVQnXSwKKyAgICAgICAgIFsncmVib290LnRhcmdldCcsICAgICAgICAgICAgICAgICAgICAgICAnJywKKyAgICAgICAgICAncnVubGV2ZWw2LnRhcmdldCBjdHJsLWFsdC1kZWwudGFyZ2V0J10sCitAQCAtMTQ0LDggKzE0Myw3IEBAIGluX3VuaXRzID0gWworICAgICAgICAgWydzeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UnLCAnJ10sCisgICAgICAgICBbJ3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwuc2VydmljZScsICAgICcnXSwKKyAgICAgICAgIFsnc3lzdGVtZC1iYWNrbGlnaHRALnNlcnZpY2UnLCAgICAgICAgICAgJ0VOQUJMRV9CQUNLTElHSFQnXSwKKy0gICAgICAgIFsnc3lzdGVtZC1iaW5mbXQuc2VydmljZScsICAgICAgICAgICAgICAgJ0VOQUJMRV9CSU5GTVQnLAorLSAgICAgICAgICdzeXNpbml0LnRhcmdldC53YW50cy8nXSwKKysgICAgICAgIFsnc3lzdGVtZC1iaW5mbXQuc2VydmljZScsICAgICAgICAgICAgICAgJ0VOQUJMRV9CSU5GTVQnXSwKKyAgICAgICAgIFsnc3lzdGVtZC1jb3JlZHVtcEAuc2VydmljZScsICAgICAgICAgICAgJ0VOQUJMRV9DT1JFRFVNUCddLAorICAgICAgICAgWydzeXN0ZW1kLWV4aXQuc2VydmljZScsICAgICAgICAgICAgICAgICAnJ10sCisgICAgICAgICBbJ3N5c3RlbWQtZmlyc3Rib290LnNlcnZpY2UnLCAgICAgICAgICAgICdFTkFCTEVfRklSU1RCT09UJywKK2RpZmYgLS1naXQgYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQgYi91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKK2luZGV4IDMwYTZiYzk5MS4uNDIzMWYzYjcwIDEwMDY0NAorLS0tIGEvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50CisrKysgYi91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKK0BAIC0xOCwzICsxOCw2IEBAIENvbmRpdGlvblBhdGhJc1JlYWRXcml0ZT0vcHJvYy9zeXMvCisgCisgW0F1dG9tb3VudF0KKyBXaGVyZT0vcHJvYy9zeXMvZnMvYmluZm10X21pc2MKKysKKytbSW5zdGFsbF0KKytXYW50ZWRCeT1zeXNpbml0LnRhcmdldAorZGlmZiAtLWdpdCBhL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4gYi91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCitpbmRleCBkZjkzOTZkODkuLjA2ODdmNDY0OCAxMDA2NDQKKy0tLSBhL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KKysrKyBiL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KK0BAIC0xMyw2ICsxMyw3IEBAIERvY3VtZW50YXRpb249bWFuOnN5c3RlbWQtYmluZm10LnNlcnZpY2UoOCkgbWFuOmJpbmZtdC5kKDUpCisgRG9jdW1lbnRhdGlvbj1odHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9Eb2N1bWVudGF0aW9uL2JpbmZtdF9taXNjLnR4dAorIERlZmF1bHREZXBlbmRlbmNpZXM9bm8KKyBDb25mbGljdHM9c2h1dGRvd24udGFyZ2V0CisrV2FudHM9cHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50CisgQWZ0ZXI9cHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50CisgQmVmb3JlPXN5c2luaXQudGFyZ2V0IHNodXRkb3duLnRhcmdldAorIENvbmRpdGlvblBhdGhJc1JlYWRXcml0ZT0vcHJvYy9zeXMvCitAQCAtMjcsMyArMjgsNiBAQCBUeXBlPW9uZXNob3QKKyBSZW1haW5BZnRlckV4aXQ9eWVzCisgRXhlY1N0YXJ0PUByb290bGliZXhlY2RpckAvc3lzdGVtZC1iaW5mbXQKKyBUaW1lb3V0U2VjPTkwcworKworK1tJbnN0YWxsXQorK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGMxMzZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLUZyb20gNTg1YWJkODkxYTU2NDA5OTE1MzE0MzA0MTAxY2FjMjZiNDJjMDc2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMDo0NTo0NiAtMDcwMAotU3ViamVjdDogW1BBVENIIDAyLzEyXSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBzdHJuZHVwYQotCi1pbmNsdWRlIG1pc3NpbmcuaCAgZm9yIGRlZmluaXRpb24gb2Ygc3RybmR1cGEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBjb25maWd1cmUuYWMgICAgICAgICAgIHwgIDEgKwotIHNyYy9iYXNpYy9taXNzaW5nLmggICAgfCAxMSArKysrKysrKysrKwotIHNyYy9iYXNpYy9ta2Rpci5jICAgICAgfCAgMSArCi0gc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyB8ICAxICsKLSBzcmMvc2hhcmVkL3BhZ2VyLmMgICAgIHwgIDEgKwotIHNyYy9zaGFyZWQvdWlkLXJhbmdlLmMgfCAgMSArCi0gNiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGVmY2RjNmMxNi4uY2QwMzVhOTcxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMjksNiArMzI5LDcgQEAgQUNfQ0hFQ0tfREVDTFMoWwotICAgICAgICAgcGl2b3Rfcm9vdCwKLSAgICAgICAgIG5hbWVfdG9faGFuZGxlX2F0LAotICAgICAgICAgc2V0bnMsCi0rICAgICAgICBzdHJuZHVwYSwKLSAgICAgICAgIHJlbmFtZWF0MiwKLSAgICAgICAgIGtjbXAsCi0gICAgICAgICBrZXljdGwsCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLWluZGV4IDA0OTEyYmY1Mi4uODAwOTg4OGFkIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAotKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotQEAgLTExMDQsNiArMTEwNCwxNyBAQCB0eXBlZGVmIGludDMyX3Qga2V5X3NlcmlhbF90OwotICNkZWZpbmUgS0VZQ1RMX0RFU0NSSUJFIDYKLSAjZW5kaWYKLSAKLSsjaWYgIUhBVkVfREVDTF9TVFJORFVQQQotKyNkZWZpbmUgc3RybmR1cGEocywgbikgXAotKyAgKHsgXAotKyAgICBjb25zdCBjaGFyICpfX29sZCA9IChzKTsgXAotKyAgICBzaXplX3QgX19sZW4gPSBzdHJubGVuKF9fb2xkLCAobikpOyBcCi0rICAgIGNoYXIgKl9fbmV3ID0gKGNoYXIgKilhbGxvY2EoX19sZW4gKyAxKTsgXAotKyAgICBfX25ld1tfX2xlbl0gPSAnXDAnOyBcCi0rICAgIChjaGFyICopbWVtY3B5KF9fbmV3LCBfX29sZCwgX19sZW4pOyBcCi0rICB9KQotKyNlbmRpZgotKwotICNpZm5kZWYgS0VZQ1RMX1JFQUQKLSAjZGVmaW5lIEtFWUNUTF9SRUFEIDExCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21rZGlyLmMgYi9zcmMvYmFzaWMvbWtkaXIuYwotaW5kZXggNmIxYTk4NDAyLi5kMTM4OGRmNDggMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWtkaXIuYwotKysrIGIvc3JjL2Jhc2ljL21rZGlyLmMKLUBAIC0yOCw2ICsyOCw3IEBACi0gI2luY2x1ZGUgInBhdGgtdXRpbC5oIgotICNpbmNsdWRlICJzdGF0LXV0aWwuaCIKLSAjaW5jbHVkZSAidXNlci11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKLSAKLSBpbnQgbWtkaXJfc2FmZV9pbnRlcm5hbChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIG1rZGlyX2Z1bmNfdCBfbWtkaXIpIHsKLSAgICAgICAgIHN0cnVjdCBzdGF0IHN0OwotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCi1pbmRleCA0NTMyZjIyMmMuLjdhMzBhMGUwNiAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKLUBAIC0zMCw2ICszMCw3IEBACi0gI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKLSAjaW5jbHVkZSAicHJvY2Vzcy11dGlsLmgiCi0gI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKLSAKLSBpbnQgcGFyc2VfYm9vbGVhbihjb25zdCBjaGFyICp2KSB7Ci0gICAgICAgICBhc3NlcnQodik7Ci1kaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9wYWdlci5jIGIvc3JjL3NoYXJlZC9wYWdlci5jCi1pbmRleCA0ZDdiMDJjNjMuLjg1NGVmYzBjOSAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvcGFnZXIuYwotKysrIGIvc3JjL3NoYXJlZC9wYWdlci5jCi1AQCAtMzgsNiArMzgsNyBAQAotICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotICNpbmNsdWRlICJzdHJ2LmgiCi0gI2luY2x1ZGUgInRlcm1pbmFsLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIHN0YXRpYyBwaWRfdCBwYWdlcl9waWQgPSAwOwotIAotZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCi1pbmRleCBiNmVjNDc0MzkuLjkxY2U5ZmI3ZiAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKLSsrKyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKLUBAIC0yNCw2ICsyNCw3IEBACi0gI2luY2x1ZGUgIm1hY3JvLmgiCi0gI2luY2x1ZGUgInVpZC1yYW5nZS5oIgotICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIHN0YXRpYyBib29sIHVpZF9yYW5nZV9pbnRlcnNlY3QoVWlkUmFuZ2UgKnJhbmdlLCB1aWRfdCBzdGFydCwgdWlkX3QgbnIpIHsKLSAgICAgICAgIGFzc2VydChyYW5nZSk7Ci0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTJkMmM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLUZyb20gNWJiYmMyYTA4YTNiNDI4M2VjMDRhZjBlNzdlMjVmYjIwNWFhOGI4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMDo1MDoxNCAtMDcwMAotU3ViamVjdDogW1BBVENIIDAzLzEyXSBkb24ndCBmYWlsIGlmIEdMT0JfQlJBQ0UgYW5kIEdMT0JfQUxURElSRlVOQyBpcyBub3QKLSBkZWZpbmVkCi0KLUlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXNuJ3QgcHJvdmlkZSBicmFjZQotZXhwYW5zaW9uIHVzZXJzIGp1c3Qgd29uJ3QgZ2V0IGl0LgotCi1Eb250IHVzZSBHTlUgR0xPQiBleHRlbnRpb25zIG9uIG5vbi1nbGliYyBzeXN0ZW1zCi0KLUNvbmRpdGlvbmFsaXplIHVzZSBvZiBHTE9CX0FMVERJUkZVTkMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvYmFzaWMvZ2xvYi11dGlsLmMgICAgIHwgMjAgKysrKysrKysrKysrKysrKystLS0KLSBzcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jIHwgMTcgKysrKysrKysrKysrKysrLS0KLSBzcmMvdG1wZmlsZXMvdG1wZmlsZXMuYyAgIHwgIDggKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMgYi9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKLWluZGV4IGY2MTFjNDJlNC4uYWQ2ZTJiZThkIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCi0rKysgYi9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKLUBAIC0yNywxMyArMjcsMTggQEAKLSAjaW5jbHVkZSAibWFjcm8uaCIKLSAjaW5jbHVkZSAicGF0aC11dGlsLmgiCi0gI2luY2x1ZGUgInN0cnYuaCIKLSsvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci0rICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLwotKyNpZm5kZWYgR0xPQl9CUkFDRQotKyNkZWZpbmUgR0xPQl9CUkFDRSAwCi0rI2VuZGlmCi0gCi0gaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKLSAgICAgICAgIGludCBrOwotIAotKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKLSAgICAgICAgIC8qIFdlIHdhbnQgdG8gc2V0IEdMT0JfQUxURElSRlVOQyBvdXJzZWx2ZXMsIGRvbid0IGFsbG93IGl0IHRvIGJlIHNldC4gKi8KLSAgICAgICAgIGFzc2VydCghKGZsYWdzICYgR0xPQl9BTFRESVJGVU5DKSk7Ci0tCi0gICAgICAgICBpZiAoIXBnbG9iLT5nbF9jbG9zZWRpcikKLSAgICAgICAgICAgICAgICAgcGdsb2ItPmdsX2Nsb3NlZGlyID0gKHZvaWQgKCopKHZvaWQgKikpIGNsb3NlZGlyOwotICAgICAgICAgaWYgKCFwZ2xvYi0+Z2xfcmVhZGRpcikKLUBAIC00NCwxMCArNDksMTMgQEAgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKLSAgICAgICAgICAgICAgICAgcGdsb2ItPmdsX2xzdGF0ID0gbHN0YXQ7Ci0gICAgICAgICBpZiAoIXBnbG9iLT5nbF9zdGF0KQotICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfc3RhdCA9IHN0YXQ7Ci0tCi0rI2VuZGlmCi0gICAgICAgICBlcnJubyA9IDA7Ci0rI2lmZGVmIEdMT0JfQUxURElSRlVOQwotICAgICAgICAgayA9IGdsb2IocGF0aCwgZmxhZ3MgfCBHTE9CX0FMVERJUkZVTkMsIE5VTEwsIHBnbG9iKTsKLS0KLSsjZWxzZQotKyAgICAgICAgayA9IGdsb2IocGF0aCwgZmxhZ3MsIE5VTEwsIHBnbG9iKTsKLSsjZW5kaWYKLSAgICAgICAgIGlmIChrID09IEdMT0JfTk9NQVRDSCkKLSAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7Ci0gICAgICAgICBpZiAoayA9PSBHTE9CX05PU1BBQ0UpCi1AQCAtNjAsNiArNjgsMTIgQEAgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKLSAgICAgICAgIHJldHVybiAwOwotIH0KLSAKLSsvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci0rICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLwotKyNpZm5kZWYgR0xPQl9CUkFDRQotKyNkZWZpbmUgR0xPQl9CUkFDRSAwCi0rI2VuZGlmCi0rCi0gaW50IGdsb2JfZXhpc3RzKGNvbnN0IGNoYXIgKnBhdGgpIHsKLSAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHt9OwotICAgICAgICAgaW50IGs7Ci1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYyBiL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKLWluZGV4IGFmODY2ZTAwNC4uM2FmYTA5YWRhIDEwMDY0NAotLS0tIGEvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYwotKysrIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYwotQEAgLTI5LDYgKzI5LDExIEBACi0gI2luY2x1ZGUgImdsb2ItdXRpbC5oIgotICNpbmNsdWRlICJtYWNyby5oIgotICNpbmNsdWRlICJybS1yZi5oIgotKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKLSsgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCi0rI2lmbmRlZiBHTE9CX0JSQUNFCi0rI2RlZmluZSBHTE9CX0JSQUNFIDAKLSsjZW5kaWYKLSAKLSBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JfZXhpc3RzKHZvaWQpIHsKLSAgICAgICAgIGNoYXIgbmFtZVtdID0gIi90bXAvdGVzdC1nbG9iX2V4aXN0cy5YWFhYWFgiOwotQEAgLTUxLDI1ICs1NiwzMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JfZXhpc3RzKHZvaWQpIHsKLSBzdGF0aWMgdm9pZCB0ZXN0X2dsb2Jfbm9fZG90KHZvaWQpIHsKLSAgICAgICAgIGNoYXIgdGVtcGxhdGVbXSA9ICIvdG1wL3Rlc3QtZ2xvYi11dGlsLlhYWFhYWFgiOwotICAgICAgICAgY29uc3QgY2hhciAqZm47Ci0tCi0gICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7Ci0rI2lmZGVmIEdMT0JfQUxURElSRlVOQwotICAgICAgICAgICAgICAgICAuZ2xfY2xvc2VkaXIgPSAodm9pZCAoKikodm9pZCAqKSkgY2xvc2VkaXIsCi0gICAgICAgICAgICAgICAgIC5nbF9yZWFkZGlyID0gKHN0cnVjdCBkaXJlbnQgKigqKSh2b2lkICopKSByZWFkZGlyX25vX2RvdCwKLSAgICAgICAgICAgICAgICAgLmdsX29wZW5kaXIgPSAodm9pZCAqKCopKGNvbnN0IGNoYXIgKikpIG9wZW5kaXIsCi0gICAgICAgICAgICAgICAgIC5nbF9sc3RhdCA9IGxzdGF0LAotICAgICAgICAgICAgICAgICAuZ2xfc3RhdCA9IHN0YXQsCi0rI2VuZGlmCi0gICAgICAgICB9OwotLQotICAgICAgICAgaW50IHI7Ci0gCi0gICAgICAgICBhc3NlcnRfc2UobWtkdGVtcCh0ZW1wbGF0ZSkpOwotIAotICAgICAgICAgZm4gPSBzdHJqb2luYSh0ZW1wbGF0ZSwgIi8qIik7Ci0rI2lmZGVmIEdMT0JfQUxURElSRlVOQwotICAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0V8R0xPQl9BTFRESVJGVU5DLCBOVUxMLCAmZyk7Ci0rI2Vsc2UKLSsgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFLCBOVUxMLCAmZyk7Ci0rI2VuZGlmCi0gICAgICAgICBhc3NlcnRfc2UociA9PSBHTE9CX05PTUFUQ0gpOwotIAotICAgICAgICAgZm4gPSBzdHJqb2luYSh0ZW1wbGF0ZSwgIi8uKiIpOwotKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKLSAgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFfEdMT0JfQUxURElSRlVOQywgTlVMTCwgJmcpOwotKyNlbHNlCi0rICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRSwgTlVMTCwgJmcpOwotKyNlbmRpZgotICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gR0xPQl9OT01BVENIKTsKLSAKLSAgICAgICAgICh2b2lkKSBybV9yZih0ZW1wbGF0ZSwgUkVNT1ZFX1JPT1R8UkVNT1ZFX1BIWVNJQ0FMKTsKLWRpZmYgLS1naXQgYS9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCi1pbmRleCA5NDE5Yzk5ZTIuLjA3MDI3YTc2NSAxMDA2NDQKLS0tLSBhL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCi0rKysgYi9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYwotQEAgLTcxLDYgKzcxLDEyIEBACi0gI2luY2x1ZGUgInVtYXNrLXV0aWwuaCIKLSAjaW5jbHVkZSAidXNlci11dGlsLmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKLSsvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci0rICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLwotKyNpZm5kZWYgR0xPQl9CUkFDRQotKyNkZWZpbmUgR0xPQl9CUkFDRSAwCi0rI2VuZGlmCi0rCi0gCi0gLyogVGhpcyByZWFkcyBhbGwgZmlsZXMgbGlzdGVkIGluIC9ldGMvdG1wZmlsZXMuZC8/Ki5jb25mIGFuZCBjcmVhdGVzCi0gICogdGhlbSBpbiB0aGUgZmlsZSBzeXN0ZW0uIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBjcmVhdGUKLUBAIC0xMDkyLDcgKzEwOTgsOSBAQCBzdGF0aWMgaW50IGl0ZW1fZG9fY2hpbGRyZW4oSXRlbSAqaSwgY29uc3QgY2hhciAqcGF0aCwgYWN0aW9uX3QgYWN0aW9uKSB7Ci0gCi0gc3RhdGljIGludCBnbG9iX2l0ZW0oSXRlbSAqaSwgYWN0aW9uX3QgYWN0aW9uLCBib29sIHJlY3Vyc2l2ZSkgewotICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0gewotKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKLSAgICAgICAgICAgICAgICAgLmdsX29wZW5kaXIgPSAodm9pZCAqKCopKGNvbnN0IGNoYXIgKikpIG9wZW5kaXJfbm9tb2QsCi0rI2VuZGlmCi0gICAgICAgICB9OwotICAgICAgICAgaW50IHIgPSAwLCBrOwotICAgICAgICAgY2hhciAqKmZuOwotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGYxYjIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSA4YjlkMTk0ZTk1Njg0OGUwZDFmYjM1ZWYyZmJhNzE0YjI2OTFlYmU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMDo0Nzo0OSAtMDgwMAorU3ViamVjdDogW1BBVENIIDAzLzMxXSB1c2UgbG5yIHdyYXBwZXIgaW5zdGVhZCBvZiBsb29raW5nIGZvciAtLXJlbGF0aXZlCisgb3B0aW9uIGZvciBsbgorCitSZW1vdmUgZmlsZSBtYW51YWxseSB0byBhdm9pZCB0aGUgJ0ZpbGUgRXhpc3RzJyBlcnJvciB3aGVuIGNyZWF0aW5nCitzeW1saW5rLiBUaGlzIGlzIGJlY2F1c2UgdGhlIG9yaWdpbmFsICdsbicgY29tbWFuZCB1c2VzICctZicgb3B0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgIHwgNCAtLS0tCisgdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoIHwgMyArKy0KKyB1bml0cy9tZXNvbi1hZGQtd2FudHMuc2ggICAgfCA3ICsrKysrKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDM2YTYyZDI4MC4uNzM0N2VhODgwIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNTcwLDEwICs1NzAsNiBAQCBlbmRmb3JlYWNoCisgCisgY29uZi5zZXRfcXVvdGVkKCdURUxJTklUJywgZ2V0X29wdGlvbigndGVsaW5pdC1wYXRoJykpCisgCistaWYgcnVuX2NvbW1hbmQoJ2xuJywgJy0tcmVsYXRpdmUnLCAnLS1oZWxwJykucmV0dXJuY29kZSgpICE9IDAKKy0gICAgICAgIGVycm9yKCdsbiBkb2VzIG5vdCBzdXBwb3J0IC0tcmVsYXRpdmUnKQorLWVuZGlmCistCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgCisgZ3BlcmYgPSBmaW5kX3Byb2dyYW0oJ2dwZXJmJykKK2RpZmYgLS1naXQgYS90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2ggYi90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKK2luZGV4IDUwMWNkNDNkNC4uZjRlNGFjOWFjIDEwMDc1NQorLS0tIGEvdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoCisrKysgYi90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKK0BAIC04LDUgKzgsNiBAQCBta2RpciAtdnAgIiQoZGlybmFtZSAiJHtERVNURElSOi19JDIiKSIKKyBpZiBbICIkKGRpcm5hbWUgJDEpIiA9IC4gXTsgdGhlbgorICAgICAgICAgbG4gLXZmcyAtVCAiJDEiICIke0RFU1RESVI6LX0kMiIKKyBlbHNlCistICAgICAgICBsbiAtdmZzIC1UIC0tcmVsYXRpdmUgIiR7REVTVERJUjotfSQxIiAiJHtERVNURElSOi19JDIiCisrICAgICAgICBybSAtZiAiJHtERVNURElSOi19JDIiCisrICAgICAgICBsbnIgIiR7REVTVERJUjotfSQxIiAiJHtERVNURElSOi19JDIiCisgZmkKK2RpZmYgLS1naXQgYS91bml0cy9tZXNvbi1hZGQtd2FudHMuc2ggYi91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKK2luZGV4IDcwZjcxNzJhZS4uYTQyNjY2YWFjIDEwMDc1NQorLS0tIGEvdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoCisrKysgYi91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKK0BAIC0yNSw0ICsyNSw5IEBAIGNhc2UgIiR0YXJnZXQiIGluCisgICAgICAgICAgICAgICAgIDs7CisgZXNhYworIAorLWxuIC12ZnMgLS1yZWxhdGl2ZSAiJHVuaXRwYXRoIiAiJGRpciIKKytpZiBbIC1kICIkZGlyIiBdOyB0aGVuCisrICAgICAgICBybSAtZiAiJGRpci8kdW5pdCIKKysgICAgICAgIGxuciAiJHVuaXRwYXRoIiAiJGRpci8kdW5pdCIKKytlbHNlCisrICAgICAgICBsbnIgIiR1bml0cGF0aCIgIiRkaXIiCisrZmkKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMmNiZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDU3NjVjZGE0ZjcyNDNlMjQwYjFlODcyM2RjNTM2ZmIyMDUwM2Q1NDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjI4OjMyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMTldIFVzZSBnZXRlbnYgd2hlbiBzZWN1cmUgdmVyc2lvbnMgYXJlIG5vdCBhdmFpbGFibGUKLQotbXVzbCBkb2VzbnQgaW1wbGVtZW50IHNlY3VyZSB2ZXJzaW9uLCBzbyB3ZSBkZWZhdWx0Ci10byBpdCBpZiBjb25maWd1cmUgZG9lcyBub3QgZGV0ZWN0IGEgc2VjdXJlIGltZXBsZW1lbnRhdGlvbgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKLS0tLQotIHNyYy9iYXNpYy9taXNzaW5nLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotaW5kZXggNGEzZmQ5Yy4uNDkzNjg3MyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC01MjksNyArNTI5LDcgQEAgc3RydWN0IGJ0cmZzX2lvY3RsX3F1b3RhX2N0bF9hcmdzIHsKLSAjICBpZmRlZiBIQVZFX19fU0VDVVJFX0dFVEVOVgotICMgICAgZGVmaW5lIHNlY3VyZV9nZXRlbnYgX19zZWN1cmVfZ2V0ZW52Ci0gIyAgZWxzZQotLSMgICAgZXJyb3IgIm5laXRoZXIgc2VjdXJlX2dldGVudiBub3IgX19zZWN1cmVfZ2V0ZW52IGFyZSBhdmFpbGFibGUiCi0rIyAgICBkZWZpbmUgc2VjdXJlX2dldGVudiBnZXRlbnYKLSAjICBlbmRpZgotICNlbmRpZgotIAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmZGI1MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSA3MGQ0NTZmYjIxZGUyYTgwNjk3ZmEzNjRmMDg0NzUzMzlkNjM5NmMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgNSBTZXAgMjAxNSAwNjozMTo0NyArMDAwMAorU3ViamVjdDogW1BBVENIIDA0LzMxXSBpbXBsbWVudCBzeXN0ZW1kLXN5c3YtaW5zdGFsbCBmb3IgT0UKKworVXNlIHVwZGF0ZS1yYy5kIGZvciBlbmFibGluZy9kaXNhYmxpbmcgYW5kIHN0YXR1cyBjb21tYW5kCit0byBjaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzeXN2IHNlcnZpY2UKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OIGIvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTgoraW5kZXggYTUzYTNlNjIyLi41ZDg3N2IwNmUgMTAwNzU1CistLS0gYS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCisrKysgYi9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCitAQCAtMzAsMTcgKzMwLDE3IEBAIGNhc2UgIiQxIiBpbgorICAgICBlbmFibGUpCisgICAgICAgICAjIGNhbGwgdGhlIGNvbW1hbmQgdG8gZW5hYmxlIFN5c1YgaW5pdCBzY3JpcHQgJE5BTUUgaGVyZQorICAgICAgICAgIyAoY29uc2lkZXIgb3B0aW9uYWwgJFJPT1QpCistICAgICAgICBlY2hvICJJTVBMRU1FTlQgTUU6IGVuYWJsaW5nIFN5c1YgaW5pdC5kIHNjcmlwdCAkTkFNRSIKKysgICAgICAgIHVwZGF0ZS1yYy5kIC1mICROQU1FIGRlZmF1bHRzCisgICAgICAgICA7OworICAgICBkaXNhYmxlKQorICAgICAgICAgIyBjYWxsIHRoZSBjb21tYW5kIHRvIGRpc2FibGUgU3lzViBpbml0IHNjcmlwdCAkTkFNRSBoZXJlCisgICAgICAgICAjIChjb25zaWRlciBvcHRpb25hbCAkUk9PVCkKKy0gICAgICAgIGVjaG8gIklNUExFTUVOVCBNRTogZGlzYWJsaW5nIFN5c1YgaW5pdC5kIHNjcmlwdCAkTkFNRSIKKysgICAgICAgIHVwZGF0ZS1yYy5kIC1mICROQU1FIHJlbW92ZQorICAgICAgICAgOzsKKyAgICAgaXMtZW5hYmxlZCkKKyAgICAgICAgICMgZXhpdCB3aXRoIDAgaWYgJE5BTUUgaXMgZW5hYmxlZCwgbm9uLXplcm8gaWYgaXQgaXMgZGlzYWJsZWQKKyAgICAgICAgICMgKGNvbnNpZGVyIG9wdGlvbmFsICRST09UKQorLSAgICAgICAgZWNobyAiSU1QTEVNRU5UIE1FOiBjaGVja2luZyBTeXNWIGluaXQuZCBzY3JpcHQgJE5BTUUiCisrICAgICAgICAvZXRjL2luaXQuZC8kTkFNRSBzdGF0dXMKKyAgICAgICAgIDs7CisgICAgICopCisgICAgICAgICB1c2FnZSA7OworLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I1YWU5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gYzg1MGI2NTRlNzE2NzdlMGQ2MjkyZjEzNDUyMDdiOWI1YWNmZmMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMTozMTowMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDA0LzEyXSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBfX2NvbXBhcl9mbl90Ci0gdHlwZWRlZgotCi1pbmNsdWRlIG1pc3NpbmcuaCBmb3IgbWlzc2luZyBfX2NvbXBhcl9mbl90Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDUgKysrKysKLSBzcmMvYmFzaWMvc3RyYnVmLmMgIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1pbmRleCA4MDA5ODg4YWQuLjY3MWYzNDFjNiAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC0xMDYzLDYgKzEwNjMsMTEgQEAgc3RydWN0IGlucHV0X21hc2sgewotICNkZWZpbmUgUkVOQU1FX05PUkVQTEFDRSAoMSA8PCAwKQotICNlbmRpZgotIAotKyNpZm5kZWYgX19DT01QQVJfRk5fVAotKyNkZWZpbmUgX19DT01QQVJfRk5fVAotK3R5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwotKyNlbmRpZgotKwotICNpZm5kZWYgS0NNUF9GSUxFCi0gI2RlZmluZSBLQ01QX0ZJTEUgMAotICNlbmRpZgotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zdHJidWYuYyBiL3NyYy9iYXNpYy9zdHJidWYuYwotaW5kZXggMDBhYWY5ZTYyLi45ZGM0YTU4NGEgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvc3RyYnVmLmMKLSsrKyBiL3NyYy9iYXNpYy9zdHJidWYuYwotQEAgLTIzLDYgKzIzLDcgQEAKLSAKLSAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgotICNpbmNsdWRlICJzdHJidWYuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIC8qCi0gICogU3RyYnVmIHN0b3JlcyBnaXZlbiBzdHJpbmdzIGluIGEgc2luZ2xlIGNvbnRpbnVvdXMgYWxsb2NhdGVkIG1lbW9yeQotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAxNmU5OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLUZyb20gNzQ0NTBmMGRiYWQyZjg0NzhjMjZlZWFhNDZkNGU0YTk4Nzg1OGY0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA1OjAzOjQ0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMTldIGJpbmZtdDogRG9uJ3QgaW5zdGFsbCBkZXBlbmRlbmN5IGxpbmtzIGF0IGluc3RhbGwgdGltZQotIGZvciB0aGUgYmluZm10IHNlcnZpY2VzCi0KLXVzZSBbSW5zdGFsbF0gYmxvY2tzIHNvIHRoYXQgdGhleSBnZXQgY3JlYXRlZCB3aGVuIHRoZSBzZXJ2aWNlIGlzIGVuYWJsZWQKLWxpa2UgYSB0cmFkaXRpb25hbCBzZXJ2aWNlLgotCi1UaGUgW0luc3RhbGxdIGJsb2NrcyB3ZXJlIHJlamVjdGVkIHVwc3RyZWFtIGFzIHRoZXkgZG9uJ3QgaGF2ZSBhIHdheSB0bwotImVuYWJsZSIKLWl0IG9uIGluc3RhbGwgd2l0aG91dCBzdGF0aWMgc3ltbGlua3Mgd2hpY2ggY2FuJ3QgYmUgZGlzYWJsZWQsIG9ubHkKLW1hc2tlZC4gIFdlCi1ob3dldmVyIGNhbiBkbyB0aGF0IGluIGEgcG9zdGluc3QuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCAtLS0tCi0gdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50IHwgMyArKysKLSB1bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluICAgICAgICAgfCA1ICsrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA1MGRhNDU4Li4yOWVkMWRkIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNDYzNSwxMCArNDYzNSw2IEBAIElOU1RBTExfRElSUyArPSBcCi0gCSQocHJlZml4KS9saWIvYmluZm10LmQgXAotIAkkKHN5c2NvbmZkaXIpL2JpbmZtdC5kCi0gCi0tU1lTSU5JVF9UQVJHRVRfV0FOVFMgKz0gXAotLQlzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIFwKLS0JcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50Ci0tCi0gZW5kaWYKLSAKLSBFWFRSQV9ESVNUICs9IFwKLWRpZmYgLS1naXQgYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQgYi91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKLWluZGV4IDZiZTM4OTMuLjcwOWFkZWYgMTAwNjQ0Ci0tLS0gYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKLSsrKyBiL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotQEAgLTE2LDMgKzE2LDYgQEAgQ29uZGl0aW9uUGF0aElzUmVhZFdyaXRlPS9wcm9jL3N5cy8KLSAKLSBbQXV0b21vdW50XQotIFdoZXJlPS9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYwotKwotK1tJbnN0YWxsXQotK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0Ci1kaWZmIC0tZ2l0IGEvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbiBiL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KLWluZGV4IGQ1MzA3M2UuLjhjNTdlZTAgMTAwNjQ0Ci0tLS0gYS91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCi0rKysgYi91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCi1AQCAtMTEsNiArMTEsOCBAQCBEb2N1bWVudGF0aW9uPW1hbjpzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlKDgpIG1hbjpiaW5mbXQuZCg1KQotIERvY3VtZW50YXRpb249aHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvRG9jdW1lbnRhdGlvbi9iaW5mbXRfbWlzYy50eHQKLSBEZWZhdWx0RGVwZW5kZW5jaWVzPW5vCi0gQ29uZmxpY3RzPXNodXRkb3duLnRhcmdldAotK1dhbnRzPXByb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotKwotIEFmdGVyPXByb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotIEJlZm9yZT1zeXNpbml0LnRhcmdldCBzaHV0ZG93bi50YXJnZXQKLSBDb25kaXRpb25QYXRoSXNSZWFkV3JpdGU9L3Byb2Mvc3lzLwotQEAgLTI1LDMgKzI3LDYgQEAgVHlwZT1vbmVzaG90Ci0gUmVtYWluQWZ0ZXJFeGl0PXllcwotIEV4ZWNTdGFydD1Acm9vdGxpYmV4ZWNkaXJAL3N5c3RlbWQtYmluZm10Ci0gVGltZW91dFNlYz05MHMKLSsKLStbSW5zdGFsbF0KLStXYW50ZWRCeT1zeXNpbml0LnRhcmdldAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NDIxYzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA3YjViMzQ5OTMwMDJiNDQxOGJhOGEzYzJhZTY2MWE3MzM3ZmQ4ZWQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgOSBOb3YgMjAxNiAxOTo0MToxMyAtMDgwMAorU3ViamVjdDogW1BBVENIIDA1LzMxXSBydWxlczogd2hpdGVsaXN0IGhkKiBkZXZpY2VzCisKK3FlbXUgYnkgZGVmYXVsdCBlbXVsYXRlcyBJREUgYW5kIHRoZSBsaW51eC15b2N0byBrZXJuZWwocykgdXNlCitDT05GSUdfSURFIGluc3RlYWQgb2YgdGhlIG1vcmUgbW9kZXJuIGxpYnNhdGEsIHNvIGRpc2tzIGFwcGVhciBhcworL2Rldi9oZCouIFBhdGNoIHJlamVjdGVkIHVwc3RyZWFtIGJlY2F1c2UgQ09ORklHX0lERSBpcyBkZXByZWNhdGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzEyNzZdCisKK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKK2luZGV4IDBkZThjZjNhMS4uZDNmNThmMTUzIDEwMDY0NAorLS0tIGEvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCisrKysgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKK0BAIC03LDcgKzcsNyBAQCBBQ1RJT049PSJyZW1vdmUiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgorIEVOVntVREVWX0RJU0FCTEVfUEVSU0lTVEVOVF9TVE9SQUdFX1JVTEVTX0ZMQUd9PT0iMSIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCisgCisgU1VCU1lTVEVNIT0iYmxvY2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgorLUtFUk5FTCE9Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHNyKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHNjbSp8cG1lbSp8bmJkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCisrS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKnxuYmQqfGhkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCisgCisgIyBpZ25vcmUgcGFydGl0aW9ucyB0aGF0IHNwYW4gdGhlIGVudGlyZSBkaXNrCisgVEVTVD09Indob2xlX2Rpc2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTg4N2VlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLUZyb20gMjEwODBiNmE0MGQwYTRkZGQyZGI4ZjBmYTM3Njg2ZjZmYTg4NWQxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjM4OjMzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTJdIEluY2x1ZGUgbmV0aW5ldC9pZl9ldGhlci5oCi0KLUZpeGVzCi0vbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvbWlwczMycjItYmVjLWxpbnV4LW11c2wvc3lzdGVtZC8xXzIzNC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9uZXRpbmV0L2lmX2V0aGVyLmg6MTAxOjg6IGVycm9yOiByZWRlZmluaXRpb24gb2YgJ3N0cnVjdCBldGhoZHInCi0gc3RydWN0IGV0aGhkciB7Ci0gICAgICAgIF5+fn5+fgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jIHwgMSArCi0gc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jICAgICAgICAgICAgICAgfCAxICsKLSBzcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyAgICAgICAgICAgICB8IDEgKwotIHNyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYyAgICAgICAgICAgICAgIHwgMiArLQotIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jICAgIHwgMiArLQotIDUgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYwotaW5kZXggOTIzZjdkZDEwLi5iOTViMWU0YjIgMTAwNjQ0Ci0tLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYwotKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKLUBAIC0xOSw2ICsxOSw3IEBACi0gCi0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0rI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KLSAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgotICNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KLSAjaW5jbHVkZSA8bGludXgvY2FuL25ldGxpbmsuaD4KLWRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMgYi9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKLWluZGV4IDNkNjI4MDg4NC4uNDBlNThjMzhmIDEwMDY0NAotLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCi0rKysgYi9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKLUBAIC0xOCw2ICsxOCw3IEBACi0gKioqLwotIAotICNpbmNsdWRlIDxmY250bC5oPgotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgotICNpbmNsdWRlIDxuZXQvaWYuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgotZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKLWluZGV4IGZhNWQzZWU3Zi4uZTA4Mjg5NjJhIDEwMDY0NAotLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKLSsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCi1AQCAtMTgsNiArMTgsNyBAQAotICoqKi8KLSAKLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX2JyaWRnZS5oPgotICNpbmNsdWRlIDxzdGRib29sLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCi1pbmRleCAyMDFmYzIzNDMuLjVmN2NjMmEwYSAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYwotKysrIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCi1AQCAtMTYsNyArMTYsNyBAQAotICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAqKiovCi0tCi0rI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KLSAjaW5jbHVkZSA8bmV0L2lmLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxsaW51eC9ldGh0b29sLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYwotaW5kZXggOGU0Nzc3NTEzLi5kMDFmZmYyYTQgMTAwNjQ0Ci0tLS0gYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYwotKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKLUBAIC0xNiw3ICsxNiw3IEBACi0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotICoqKi8KLS0KLSsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgotICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCi0gI2luY2x1ZGUgImxpbmstY29uZmlnLmgiCi0gI2luY2x1ZGUgImxvZy5oIgotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJhOTY2MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKQEAgLTAsMCArMSw3OCBAQAorRnJvbSA5ZDYzMjI3NDIwZjBjNGYwOTNjMWMyMDY2ZWFmZTJiNjE1MjA3MGNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyMyBGZWIgMjAxOCAxMzo0NzozNyArMDgwMAorU3ViamVjdDogW1BBVENIIDA2LzMxXSBNYWtlIHJvb3QncyBob21lIGRpcmVjdG9yeSBjb25maWd1cmFibGUKKworT3BlbkVtYmVkZGVkIGhhcyBhIGNvbmZpZ3VyYWJsZSBob21lIGRpcmVjdG9yeSBmb3Igcm9vdC4gQWxsb3cKK3N5c3RlbWQgdG8gYmUgYnVpbHQgdXNpbmcgaXRzIGlkZWEgb2Ygd2hhdCByb290J3MgaG9tZSBkaXJlY3RvcnkKK3Nob3VsZCBiZS4KKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKK1Vwc3RyZWFtIHdhbnRzIHRvIGhhdmUgYSB1bmlmaWVkIGhpZXJhcmNoeSB3aGVyZSBldmVyeW9uZSBpcwordXNpbmcgdGhlIHNhbWUgcm9vdCBmb2xkZXIuCitodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2lzc3Vlcy81NDEKKworU2lnbmVkLW9mZi1ieTogRGFuIE1jR3JlZ29yIDxkYW4ubWNncmVnb3JAdXNhc2suY2E+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgICAgICAgfCA4ICsrKysrKysrCisgbWVzb25fb3B0aW9ucy50eHQgfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA3MzQ3ZWE4ODAuLjkxODEwMWQ2YiAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTk0LDYgKzk0LDExIEBAIGlmIHJvb3RsaWJkaXIgPT0gJycKKyAgICAgICAgIHJvb3RsaWJkaXIgPSBqb2luX3BhdGhzKHJvb3RwcmVmaXhkaXIsIGxpYmRpci5zcGxpdCgnLycpWy0xXSkKKyBlbmRpZgorIAorK3Jvb3Rob21lZGlyID0gZ2V0X29wdGlvbigncm9vdGhvbWVkaXInKQorK2lmIHJvb3Rob21lZGlyID09ICcnCisrICAgICAgICByb290aG9tZWRpciA9ICcvcm9vdCcKKytlbmRpZgorKworICMgRGlycyBvZiBleHRlcm5hbCBwYWNrYWdlcworIHBrZ2NvbmZpZ2RhdGFkaXIgPSBqb2luX3BhdGhzKGRhdGFkaXIsICdwa2djb25maWcnKQorIHBrZ2NvbmZpZ2xpYmRpciA9IGpvaW5fcGF0aHMobGliZGlyLCAncGtnY29uZmlnJykKK0BAIC0yMDUsNiArMjEwLDcgQEAgY29uZi5zZXRfcXVvdGVkKCdVREVWTElCRVhFQ0RJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZGV2bGliZXhlY2RpcikKKyBjb25mLnNldF9xdW90ZWQoJ1BPTEtJVF9BR0VOVF9CSU5BUllfUEFUSCcsICAgICAgICAgICAgICAgICAgIGpvaW5fcGF0aHMoYmluZGlyLCAncGt0dHlhZ2VudCcpKQorIGNvbmYuc2V0X3F1b3RlZCgnTElCRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliZGlyKQorIGNvbmYuc2V0X3F1b3RlZCgnUk9PVExJQkRJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGxpYmRpcikKKytjb25mLnNldF9xdW90ZWQoJ1JPT1RIT01FRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Rob21lZGlyKQorIGNvbmYuc2V0X3F1b3RlZCgnUk9PVExJQkVYRUNESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGxpYmV4ZWNkaXIpCisgY29uZi5zZXRfcXVvdGVkKCdCT09UTElCRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290bGliZGlyKQorIGNvbmYuc2V0X3F1b3RlZCgnU1lTVEVNRF9QVUxMX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyhyb290bGliZXhlY2RpciwgJ3N5c3RlbWQtcHVsbCcpKQorQEAgLTIyMSw2ICsyMjcsNyBAQCBzdWJzdHMuc2V0KCdwcmVmaXgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGRpcikKKyBzdWJzdHMuc2V0KCdleGVjX3ByZWZpeCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGRpcikKKyBzdWJzdHMuc2V0KCdsaWJkaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYmRpcikKKyBzdWJzdHMuc2V0KCdyb290bGliZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RsaWJkaXIpCisrc3Vic3RzLnNldCgncm9vdGhvbWVkaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290aG9tZWRpcikKKyBzdWJzdHMuc2V0KCdpbmNsdWRlZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVkaXIpCisgc3Vic3RzLnNldCgncGtnc3lzY29uZmRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dzeXNjb25mZGlyKQorIHN1YnN0cy5zZXQoJ2JpbmRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGlyKQorQEAgLTI3MDUsNiArMjcxMiw3IEBAIHN0YXR1cyA9IFsKKyAgICAgICAgICdpbmNsdWRlIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KGluY2x1ZGVkaXIpLAorICAgICAgICAgJ2xpYiBkaXJlY3Rvcnk6ICAgICAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQobGliZGlyKSwKKyAgICAgICAgICdyb290bGliIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KHJvb3RsaWJkaXIpLAorKyAgICAgICAgJ3Jvb3Rob21lIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQocm9vdGhvbWVkaXIpLAorICAgICAgICAgJ1N5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoc3lzdmluaXRfcGF0aCksCisgICAgICAgICAnU3lzViByYz8uZCBkaXJlY3RvcmllczogICAgICAgICAgICBAMEAnLmZvcm1hdChzeXN2cmNuZF9wYXRoKSwKKyAgICAgICAgICdQQU0gbW9kdWxlcyBkaXJlY3Rvcnk6ICAgICAgICAgICAgIEAwQCcuZm9ybWF0KHBhbWxpYmRpciksCitkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAoraW5kZXggMzk4MjJkNmNkLi4wYjI0ZjBlMGYgMTAwNjQ0CistLS0gYS9tZXNvbl9vcHRpb25zLnR4dAorKysrIGIvbWVzb25fb3B0aW9ucy50eHQKK0BAIC0yMiw2ICsyMiw4IEBAIG9wdGlvbigncm9vdGxpYmRpcicsIHR5cGUgOiAnc3RyaW5nJywKKyAgICAgICAgZGVzY3JpcHRpb24gOiAnJydbL3Vzcl0vbGliL3g4Nl82NC1saW51eC1nbnUgb3Igc3VjaCcnJykKKyBvcHRpb24oJ3Jvb3RwcmVmaXgnLCB0eXBlIDogJ3N0cmluZycsCisgICAgICAgIGRlc2NyaXB0aW9uIDogJycnb3ZlcnJpZGUgdGhlIHJvb3QgcHJlZml4JycnKQorK29wdGlvbigncm9vdGhvbWVkaXInLCB0eXBlIDogJ3N0cmluZycsCisrICAgICAgIGRlc2NyaXB0aW9uIDogJycnb3ZlcnJpZGUgdGhlIHJvb3QgaG9tZSBkaXJlY3RvcnknJycpCisgb3B0aW9uKCdsaW5rLXVkZXYtc2hhcmVkJywgdHlwZSA6ICdib29sZWFuJywKKyAgICAgICAgZGVzY3JpcHRpb24gOiAnbGluayBzeXN0ZW1kLXVkZXYgYW5kIGl0cyBoZWxwZXJzIHRvIGxpYnN5c3RlbWQtc2hhcmVkLnNvJykKKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMTJkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gMzVkNmQzODRlODNhYzM4MDc3NjAzNjExYmI3OTE5NjllZjk1ZmU2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTkgTWFyIDIwMTUgMTU6MDE6MjkgKzExMDAKK1N1YmplY3Q6IFtQQVRDSCAwNy8zMV0gUmV2ZXJ0ICJydWxlczogcmVtb3ZlIGZpcm13YXJlIGxvYWRpbmcgcnVsZXMiCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgNzBlN2Q3NTRkZGIzNTZmYjFhMjk0MmIyNjJmOGNlZTk2NTBlMmExOS4KK1VzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBMaW51eCA8IDMuNy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgorLS0tCisgcnVsZXMvNTAtZmlybXdhcmUucnVsZXMgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKKworZGlmZiAtLWdpdCBhL3J1bGVzLzUwLWZpcm13YXJlLnJ1bGVzIGIvcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLmYwYWU2ODQ1MQorLS0tIC9kZXYvbnVsbAorKysrIGIvcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKK0BAIC0wLDAgKzEsMyBAQAorKyMgZG8gbm90IGVkaXQgdGhpcyBmaWxlLCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuIG9uIHVwZGF0ZQorKworK1NVQlNZU1RFTT09ImZpcm13YXJlIiwgQUNUSU9OPT0iYWRkIiwgUlVOe2J1aWx0aW59PSJmaXJtd2FyZSIKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMzRjNTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1Gcm9tIDA1ZGZmZTY3OTE5ZmZjNzJiZTVjMDE3YmM2Y2Y4MmYxNjRiMmU4ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTE6NDI6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xMl0gY2hlY2sgZm9yIG1pc3NpbmcgY2Fub25pY2FsaXplX2ZpbGVfbmFtZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICB8IDIgKysKLSBzcmMvYmFzaWMvbWlzc2luZy5oICAgICAgICAgfCAxICsKLSBzcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmggfCA2ICsrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGNkMDM1YTk3MS4uMzY3NDE5MGZiIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMzMsNiArMzMzLDcgQEAgQUNfQ0hFQ0tfREVDTFMoWwotICAgICAgICAgcmVuYW1lYXQyLAotICAgICAgICAga2NtcCwKLSAgICAgICAgIGtleWN0bCwKLSsgICAgICAgIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUsCi0gICAgICAgICBMT19GTEFHU19QQVJUU0NBTiwKLSAgICAgICAgIGNvcHlfZmlsZV9yYW5nZSwKLSAgICAgICAgIGV4cGxpY2l0X2J6ZXJvXSwKLUBAIC0zNDMsNiArMzQ0LDcgQEAgQUNfQ0hFQ0tfREVDTFMoWwotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzY2hlZC5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2xvb3AuaD4KLSBdXSkKLSAKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotaW5kZXggNjcxZjM0MWM2Li44YWU0OTY0ZTEgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCi0rKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1AQCAtMTI0NiwzICsxMjQ2LDQgQEAgc3RydWN0IGV0aHRvb2xfbGlua19zZXR0aW5ncyB7Ci0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgIm1pc3Npbmdfc3lzY2FsbC5oIgotKwotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaCBiL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAotaW5kZXggODk4MTE2YzdiLi40ZDQ0ZWU0ZmEgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAotQEAgLTI4LDYgKzI4LDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHBpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpIHsKLSB9Ci0gI2VuZGlmCi0gCi0rI2lmICFIQVZFX0RFQ0xfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRQotK3N0YXRpYyBpbmxpbmUgY2hhciAqY2Fub25pY2FsaXplX2ZpbGVfbmFtZShjb25zdCBjaGFyICpwYXRoKSB7Ci0rICAgICAgICByZXR1cm4gcmVhbHBhdGgocGF0aCwgTlVMTCk7Ci0rfQotKyNlbmRpZgotKwotIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0gCi0gI2lmICFIQVZFX0RFQ0xfTUVNRkRfQ1JFQVRFCi0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzkyZGI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBhMzQ4MmM5MTY0MmNmNTY4YjNhYzI3ZmE2YzBjYjNjNmIzMDY2OWI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgOSBOb3YgMjAxNiAxOTozMjoxNCAtMDgwMAotU3ViamVjdDogW1BBVENIIDA3LzE5XSB1c2UgbG5yIHdyYXBwZXIgaW5zdGVhZCBvZiBsb29raW5nIGZvciAtLXJlbGF0aXZlCi0gb3B0aW9uIGZvciBsbgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gIHwgMiArLQotIGNvbmZpZ3VyZS5hYyB8IDIgLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBnaXQvTWFrZWZpbGUuYW0KLUBAIC0zMjAsNyArMzIwLDcgQEAgZGVmaW5lIGluc3RhbGwtcmVsYXRpdmUtYWxpYXNlcwotIAl3aGlsZSBbIC1uICIkJDEiIF07IGRvIFwKLSAJCSQoTUtESVJfUCkgYGRpcm5hbWUgJChERVNURElSKSQkZGlyLyQkMmAgJiYgXAotIAkJcm0gLWYgJChERVNURElSKSQkZGlyLyQkMiAmJiBcCi0tCQkkKExOX1MpIC0tcmVsYXRpdmUgJChERVNURElSKSQkMSAkKERFU1RESVIpJCRkaXIvJCQyICYmIFwKLSsJCWxuciAkKERFU1RESVIpJCQxICQoREVTVERJUikkJGRpci8kJDIgJiYgXAotIAkJc2hpZnQgMiB8fCBleGl0ICQkPzsgXAotIAlkb25lCi0gZW5kZWYKLUluZGV4OiBnaXQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ2l0L2NvbmZpZ3VyZS5hYwotQEAgLTExMCw4ICsxMTAsNiBAQCBBQ19QQVRIX1BST0coW1NVTE9HSU5dLCBbc3Vsb2dpbl0sIFsvdXNyCi0gQUNfUEFUSF9QUk9HKFtNT1VOVF9QQVRIXSwgW21vdW50XSwgWy91c3IvYmluL21vdW50XSwgWyRQQVRIOi91c3Ivc2Jpbjovc2Jpbl0pCi0gQUNfUEFUSF9QUk9HKFtVTU9VTlRfUEFUSF0sIFt1bW91bnRdLCBbL3Vzci9iaW4vdW1vdW50XSwgWyRQQVRIOi91c3Ivc2Jpbjovc2Jpbl0pCi0gCi0tQVNfSUYoWyEgbG4gLS1yZWxhdGl2ZSAtLWhlbHAgPiAvZGV2L251bGwgMj4mMV0sIFtBQ19NU0dfRVJST1IoWyoqKiBsbiBkb2Vzbid0IHN1cHBvcnQgLS1yZWxhdGl2ZSAqKipdKV0pCi0tCi0gTTRfREVGSU5FUz0KLSAKLSBBQ19DSEVDS19UT09MKE9CSkNPUFksIG9iamNvcHkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YTRmOGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA0OGU3YzBmNWIyZjVkNzc3YTE2YWM1NTg0ZGM0ZjUwZjFkZmE4MzJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTI6Mjc6NTMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xMl0gRG8gbm90IGVuYWJsZSBuc3MgdGVzdHMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBNYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDNjYzhmMzQ1MS4uZGYyMGE5YTExIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNTI5MCw2ICs1MjkwLDcgQEAgRVhUUkFfRElTVCArPSBcCi0gCXNyYy90aW1lc3luYy90aW1lc3luY2QuY29uZi5pbgotIAotICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0raWYgRU5BQkxFX05TU19TWVNURU1ECi0gdGVzdF9uc3NfU09VUkNFUyA9IFwKLSAJc3JjL3Rlc3QvdGVzdC1uc3MuYwotIAotQEAgLTUzMDIsNyArNTMwMyw2IEBAIG1hbnVhbF90ZXN0cyArPSBcCi0gCXRlc3QtbnNzCi0gCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1pZiBFTkFCTEVfTlNTX1NZU1RFTUQKLSBsaWJuc3Nfc3lzdGVtZF9sYV9TT1VSQ0VTID0gXAotIAlzcmMvbnNzLXN5c3RlbWQvbnNzLXN5c3RlbWQuc3ltIFwKLSAJc3JjL25zcy1zeXN0ZW1kL25zcy1zeXN0ZW1kLmMKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVkN2UwMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoCkBAIC0wLDAgKzEsMzc3IEBACitGcm9tIDVjY2U3NjI2ZjMzZTkyZjYyNGFjMDZiNjEzMTI1ODEzZmI0N2Q0NDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjA1OjM5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMDgvMzFdIFJldmVydCAidWRldjogcmVtb3ZlIHVzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nCisgc3VwcG9ydCIKKworVGhpcyByZXZlcnRzIGNvbW1pdCBiZTJlYTcyM2IxZDAyM2IzZDM4NWQzYjc5MWVlNDYwN2NiZmIyMGNhLgorVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgc3VwcG9ydCBpcyBuZWVkZWQgZm9yIExpbnV4IDwgMy43LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgUkVBRE1FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KKyBUT0RPICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCisgbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKysrCisgbWVzb25fb3B0aW9ucy50eHQgICAgICAgICAgICAgICAgfCAgIDIgKworIHJ1bGVzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgIHwgICA0ICsKKyBzcmMvdWRldi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgNCArCisgc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMgfCAxNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgc3JjL3VkZXYvdWRldi1idWlsdGluLmMgICAgICAgICAgfCAgIDMgKworIHNyYy91ZGV2L3VkZXYuaCAgICAgICAgICAgICAgICAgIHwgICA2ICsrCisgc3JjL3VkZXYvdWRldmQuYyAgICAgICAgICAgICAgICAgfCAgMTIgKysrCisgMTAgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCisKK2RpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKK2luZGV4IDg4MDdlNWNmZS4uYmZkN2EzNWRlIDEwMDY0NAorLS0tIGEvUkVBRE1FCisrKysgYi9SRUFETUUKK0BAIC01OCw4ICs1OCw4IEBAIFJFUVVJUkVNRU5UUzoKKyAgICAgICAgIExlZ2FjeSBob3RwbHVnIHNsb3dzIGRvd24gdGhlIHN5c3RlbSBhbmQgY29uZnVzZXMgdWRldjoKKyAgICAgICAgICAgQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iIgorIAorLSAgICAgICAgVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBhbmQgc2hvdWxkCistICAgICAgICBiZSBkaXNhYmxlZCBpbiB0aGUga2VybmVsOgorKyAgICAgICAgVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgaXMgZGVwcmVjYXRlZCwgd2lsbCBnbyBhd2F5LCBhbmQKKysgICAgICAgIHNvbWV0aW1lcyBjYXVzZXMgcHJvYmxlbXM6CisgICAgICAgICAgIENPTkZJR19GV19MT0FERVJfVVNFUl9IRUxQRVI9bgorIAorICAgICAgICAgU29tZSB1ZGV2IHJ1bGVzIGFuZCB2aXJ0dWFsaXphdGlvbiBkZXRlY3Rpb24gcmVsaWVzIG9uIGl0OgorZGlmZiAtLWdpdCBhL1RPRE8gYi9UT0RPCitpbmRleCBhNzcwMjhjN2IuLjM5ZTcyZDdlYyAxMDA2NDQKKy0tLSBhL1RPRE8KKysrKyBiL1RPRE8KK0BAIC03ODMsNiArNzgzLDcgQEAgRmVhdHVyZXM6CisgKiBpbml0aWFsaXplIHRoZSBob3N0bmFtZSBmcm9tIHRoZSBmcyBsYWJlbCBvZiAvLCBpZiAvZXRjL2hvc3RuYW1lIGRvZXMgbm90IGV4aXN0PworIAorICogdWRldjoKKysgIC0gcmVtb3ZlIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jIChDT05GSUdfRldfTE9BREVSX1VTRVJfSEVMUEVSPW4pCisgICAtIG1vdmUgdG8gTEdQTAorICAgLSBraWxsIHNjc2lfaWQKKyAgIC0gYWRkIHRyaWdnZXIgLS1zdWJzeXN0ZW0tbWF0Y2g9dXNiL3VzYl9kZXZpY2UgZGV2aWNlCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggOTE4MTAxZDZiLi45YzI1MDIyYTQgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC03Miw2ICs3MiwxMiBAQCBjb25mLnNldDEwKCdIQVZFX1NZU1ZfQ09NUEFUJywgaGF2ZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIDogJ1N5c1YgaW5pdCBzY3JpcHRzIGFuZCByY04uZCBsaW5rcyBhcmUgc3VwcG9ydGVkJykKKyBtNF9kZWZpbmVzICs9IGhhdmUgPyBbJy1ESEFWRV9TWVNWX0NPTVBBVCddIDogW10KKyAKKytmaXJtd2FyZV9wYXRoID0gZ2V0X29wdGlvbignZmlybXdhcmUtcGF0aCcpCisraGF2ZSA9IGZpcm13YXJlX3BhdGggIT0gJycKKytjb25mLnNldDEwKCdIQVZFX0ZJUk1XQVJFJywgaGF2ZSwKKysgICAgICAgICAgIGRlc2NyaXB0aW9uIDogJ1VzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nIGlzIHN1cHBvcnRlZCcpCisrbTRfZGVmaW5lcyArPSBoYXZlID8gWyctREhBVkVfRklSTVdBUkUnXSA6IFtdCisrCisgIyBqb2luX3BhdGhzIGlnbm9yZSB0aGUgcHJlY2VkaW5nIGFyZ3VtZW50cyBpZiBhbiBhYnNvbHV0ZSBjb21wb25lbnQgaXMKKyAjIGVuY291bnRlcmVkLCBzbyB0aGlzIHNob3VsZCBjYW5vbmljYWxpemUgdmFyaW91cyBwYXRocyB3aGVuIHRoZXkgYXJlCisgIyBhYnNvbHV0ZSBvciByZWxhdGl2ZS4KK0BAIC0xNzgsNiArMTg0LDcgQEAgY29uZi5zZXRfcXVvdGVkKCdTWVNURU1fQ09ORklHX1VOSVRfUEFUSCcsICAgICAgICAgICAgICAgICAgICBqb2luX3BhdGhzKHBrZ3N5c2MKKyBjb25mLnNldF9xdW90ZWQoJ1NZU1RFTV9EQVRBX1VOSVRfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbXVuaXRkaXIpCisgY29uZi5zZXRfcXVvdGVkKCdTWVNURU1fU1lTVklOSVRfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICBzeXN2aW5pdF9wYXRoKQorIGNvbmYuc2V0X3F1b3RlZCgnU1lTVEVNX1NZU1ZSQ05EX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgc3lzdnJjbmRfcGF0aCkKKytjb25mLnNldF9xdW90ZWQoJ0ZJUk1XQVJFX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcm13YXJlX3BhdGgpCisgY29uZi5zZXRfcXVvdGVkKCdSQ19MT0NBTF9TQ1JJUFRfUEFUSF9TVEFSVCcsICAgICAgICAgICAgICAgICBnZXRfb3B0aW9uKCdyYy1sb2NhbCcpKQorIGNvbmYuc2V0X3F1b3RlZCgnUkNfTE9DQUxfU0NSSVBUX1BBVEhfU1RPUCcsICAgICAgICAgICAgICAgICAgZ2V0X29wdGlvbignaGFsdC1sb2NhbCcpKQorIGNvbmYuc2V0X3F1b3RlZCgnVVNFUl9DT05GSUdfVU5JVF9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyhwa2dzeXNjb25mZGlyLCAndXNlcicpKQorQEAgLTI1OCw2ICsyNjUsNyBAQCBzdWJzdHMuc2V0KCdTWVNURU1DVEwnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW5fcGF0aHMocm9vdGJpbgorIHN1YnN0cy5zZXQoJ1JBTkRPTV9TRUVEJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyhyYW5kb21zZWVkZGlyLCAncmFuZG9tLXNlZWQnKSkKKyBzdWJzdHMuc2V0KCdTWVNURU1fU1lTVklOSVRfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3Zpbml0X3BhdGgpCisgc3Vic3RzLnNldCgnU1lTVEVNX1NZU1ZSQ05EX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN2cmNuZF9wYXRoKQorK3N1YnN0cy5zZXQoJ0ZJUk1XQVJFX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlybXdhcmVfcGF0aCkKKyBzdWJzdHMuc2V0KCdSQ19MT0NBTF9TQ1JJUFRfUEFUSF9TVEFSVCcsICAgICAgICAgICAgICAgICAgICAgIGdldF9vcHRpb24oJ3JjLWxvY2FsJykpCisgc3Vic3RzLnNldCgnUkNfTE9DQUxfU0NSSVBUX1BBVEhfU1RPUCcsICAgICAgICAgICAgICAgICAgICAgICBnZXRfb3B0aW9uKCdoYWx0LWxvY2FsJykpCisgCitAQCAtMjcxNSw2ICsyNzIzLDcgQEAgc3RhdHVzID0gWworICAgICAgICAgJ3Jvb3Rob21lIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQocm9vdGhvbWVkaXIpLAorICAgICAgICAgJ1N5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoc3lzdmluaXRfcGF0aCksCisgICAgICAgICAnU3lzViByYz8uZCBkaXJlY3RvcmllczogICAgICAgICAgICBAMEAnLmZvcm1hdChzeXN2cmNuZF9wYXRoKSwKKysgICAgICAgICdmaXJtd2FyZSBwYXRoOiAgICAgICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KGZpcm13YXJlX3BhdGgpLAorICAgICAgICAgJ1BBTSBtb2R1bGVzIGRpcmVjdG9yeTogICAgICAgICAgICAgQDBAJy5mb3JtYXQocGFtbGliZGlyKSwKKyAgICAgICAgICdQQU0gY29uZmlndXJhdGlvbiBkaXJlY3Rvcnk6ICAgICAgIEAwQCcuZm9ybWF0KHBhbWNvbmZkaXIpLAorICAgICAgICAgJ1JQTSBtYWNyb3MgZGlyZWN0b3J5OiAgICAgICAgICAgICAgQDBAJy5mb3JtYXQocnBtbWFjcm9zZGlyKSwKK2RpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0CitpbmRleCAwYjI0ZjBlMGYuLjkyZDI1ZmEzNSAxMDA2NDQKKy0tLSBhL21lc29uX29wdGlvbnMudHh0CisrKysgYi9tZXNvbl9vcHRpb25zLnR4dAorQEAgLTEwOCw2ICsxMDgsOCBAQCBvcHRpb24oJ3RtcGZpbGVzJywgdHlwZSA6ICdib29sZWFuJywKKyAgICAgICAgZGVzY3JpcHRpb24gOiAnc3VwcG9ydCBmb3IgdG1wZmlsZXMuZCcpCisgb3B0aW9uKCdpbXBvcnRkJywgdHlwZSA6ICdjb21ibycsIGNob2ljZXMgOiBbJ2F1dG8nLCAndHJ1ZScsICdmYWxzZSddLAorICAgICAgICBkZXNjcmlwdGlvbiA6ICdpbnN0YWxsIHRoZSBzeXN0ZW1kLWltcG9ydGQgZGFlbW9uJykKKytvcHRpb24oJ2Zpcm13YXJlLXBhdGgnLCB0eXBlIDogJ3N0cmluZycsIHZhbHVlIDogJycsCisrICAgICAgIGRlc2NyaXB0aW9uIDogJ0Zpcm13YXJlIHNlYXJjaCBwYXRoJykKKyBvcHRpb24oJ2h3ZGInLCB0eXBlIDogJ2Jvb2xlYW4nLAorICAgICAgICBkZXNjcmlwdGlvbiA6ICdzdXBwb3J0IGZvciB0aGUgaGFyZHdhcmUgZGF0YWJhc2UnKQorIG9wdGlvbigncmZraWxsJywgdHlwZSA6ICdib29sZWFuJywKK2RpZmYgLS1naXQgYS9ydWxlcy9tZXNvbi5idWlsZCBiL3J1bGVzL21lc29uLmJ1aWxkCitpbmRleCBlMjUzYjlmNTkuLjVlZWU1ZmJjYSAxMDA2NDQKKy0tLSBhL3J1bGVzL21lc29uLmJ1aWxkCisrKysgYi9ydWxlcy9tZXNvbi5idWlsZAorQEAgLTQxLDYgKzQxLDEwIEBAIHJ1bGVzID0gZmlsZXMoJycnCisgaW5zdGFsbF9kYXRhKHJ1bGVzLAorICAgICAgICAgICAgICBpbnN0YWxsX2RpciA6IHVkZXZydWxlc2RpcikKKyAKKytpZiBjb25mLmdldCgnSEFWRV9GSVJNV0FSRScpID09IDEKKysgICAgICAgIGluc3RhbGxfZGF0YSgnNTAtZmlybXdhcmUucnVsZXMnLCBpbnN0YWxsX2RpciA6IHVkZXZydWxlc2RpcikKKytlbmRpZgorKworIGFsbF9ydWxlcyA9IHJ1bGVzCisgCisgcnVsZXNfaW4gPSAnJycKK2RpZmYgLS1naXQgYS9zcmMvdWRldi9tZXNvbi5idWlsZCBiL3NyYy91ZGV2L21lc29uLmJ1aWxkCitpbmRleCBkZTJmZDJkOWMuLmI2YjBjYTAwNiAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L21lc29uLmJ1aWxkCisrKysgYi9zcmMvdWRldi9tZXNvbi5idWlsZAorQEAgLTY3LDYgKzY3LDEwIEBAIGlmIGNvbmYuZ2V0KCdIQVZFX0FDTCcpID09IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZF9sb2dpbl9jXQorIGVuZGlmCisgCisraWYgY29uZi5nZXQoJ0hBVkVfRklSTVdBUkUnKSA9PSAxCisrICAgICAgICBsaWJ1ZGV2X2NvcmVfc291cmNlcyArPSBbJ3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jJ10KKytlbmRpZgorKworICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIAorIGdlbmVyYXRlX2tleWJvYXJkX2tleXNfbGlzdCA9IGZpbmRfcHJvZ3JhbSgnZ2VuZXJhdGUta2V5Ym9hcmQta2V5cy1saXN0LnNoJykKK2RpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi5iZDhjMmZiOTYKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCitAQCAtMCwwICsxLDE1NCBAQAorKy8qCisrICogZmlybXdhcmUgLSBLZXJuZWwgZmlybXdhcmUgbG9hZGVyCisrICoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMDkgUGl0ZXIgUHVuayA8cGl0ZXJwdW5rQHNsYWNrd2FyZS5jb20+CisrICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgS2F5IFNpZXZlcnMgPGtheUB2cmZ5Lm9yZz4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZQorKyAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzOioKKysgKi8KKysKKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8Z2V0b3B0Lmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKysjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKysjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKysKKysjaW5jbHVkZSAidWRldi5oIgorKworK3N0YXRpYyBib29sIHNldF9sb2FkaW5nKHN0cnVjdCB1ZGV2ICp1ZGV2LCBjaGFyICpsb2FkcGF0aCwgY29uc3QgY2hhciAqc3RhdGUpIHsKKysgICAgICAgIEZJTEUgKmxkZmlsZTsKKysKKysgICAgICAgIGxkZmlsZSA9IGZvcGVuKGxvYWRwYXRoLCAid2UiKTsKKysgICAgICAgIGlmIChsZGZpbGUgPT0gTlVMTCkgeworKyAgICAgICAgICAgICAgICBsb2dfZXJyb3IoImVycm9yOiBjYW4gbm90IG9wZW4gJyVzJyIsIGxvYWRwYXRoKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgfTsKKysgICAgICAgIGZwcmludGYobGRmaWxlLCAiJXNcbiIsIHN0YXRlKTsKKysgICAgICAgIGZjbG9zZShsZGZpbGUpOworKyAgICAgICAgcmV0dXJuIHRydWU7CisrfQorKworK3N0YXRpYyBib29sIGNvcHlfZmlybXdhcmUoc3RydWN0IHVkZXYgKnVkZXYsIGNvbnN0IGNoYXIgKnNvdXJjZSwgY29uc3QgY2hhciAqdGFyZ2V0LCBzaXplX3Qgc2l6ZSkgeworKyAgICAgICAgY2hhciAqYnVmOworKyAgICAgICAgRklMRSAqZnNvdXJjZSA9IE5VTEwsICpmdGFyZ2V0ID0gTlVMTDsKKysgICAgICAgIGJvb2wgcmV0ID0gZmFsc2U7CisrCisrICAgICAgICBidWYgPSBtYWxsb2Moc2l6ZSk7CisrICAgICAgICBpZiAoYnVmID09IE5VTEwpIHsKKysgICAgICAgICAgICAgICAgbG9nX2Vycm9yKCJObyBtZW1vcnkgYXZhaWxhYmxlIHRvIGxvYWQgZmlybXdhcmUgZmlsZSIpOworKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9CisrCisrICAgICAgICBsb2dfZGVidWcoIndyaXRpbmcgJyVzJyAoJXppKSB0byAnJXMnIiwgc291cmNlLCBzaXplLCB0YXJnZXQpOworKworKyAgICAgICAgZnNvdXJjZSA9IGZvcGVuKHNvdXJjZSwgInJlIik7CisrICAgICAgICBpZiAoZnNvdXJjZSA9PSBOVUxMKQorKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisrICAgICAgICBmdGFyZ2V0ID0gZm9wZW4odGFyZ2V0LCAid2UiKTsKKysgICAgICAgIGlmIChmdGFyZ2V0ID09IE5VTEwpCisrICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysgICAgICAgIGlmIChmcmVhZChidWYsIHNpemUsIDEsIGZzb3VyY2UpICE9IDEpCisrICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysgICAgICAgIGlmIChmd3JpdGUoYnVmLCBzaXplLCAxLCBmdGFyZ2V0KSA9PSAxKQorKyAgICAgICAgICAgICAgICByZXQgPSB0cnVlOworK2V4aXQ6CisrICAgICAgICBpZiAoZnRhcmdldCAhPSBOVUxMKQorKyAgICAgICAgICAgICAgICBmY2xvc2UoZnRhcmdldCk7CisrICAgICAgICBpZiAoZnNvdXJjZSAhPSBOVUxMKQorKyAgICAgICAgICAgICAgICBmY2xvc2UoZnNvdXJjZSk7CisrICAgICAgICBmcmVlKGJ1Zik7CisrICAgICAgICByZXR1cm4gcmV0OworK30KKysKKytzdGF0aWMgaW50IGJ1aWx0aW5fZmlybXdhcmUoc3RydWN0IHVkZXZfZGV2aWNlICpkZXYsIGludCBhcmdjLCBjaGFyICphcmd2W10sIGJvb2wgdGVzdCkgeworKyAgICAgICAgc3RydWN0IHVkZXYgKnVkZXYgPSB1ZGV2X2RldmljZV9nZXRfdWRldihkZXYpOworKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgKnNlYXJjaHBhdGhbXSA9IHsgRklSTVdBUkVfUEFUSCB9OworKyAgICAgICAgY2hhciBsb2FkcGF0aFtVVElMX1BBVEhfU0laRV07CisrICAgICAgICBjaGFyIGRhdGFwYXRoW1VUSUxfUEFUSF9TSVpFXTsKKysgICAgICAgIGNoYXIgZndwYXRoW1VUSUxfUEFUSF9TSVpFXTsKKysgICAgICAgIGNvbnN0IGNoYXIgKmZpcm13YXJlOworKyAgICAgICAgRklMRSAqZndmaWxlID0gTlVMTDsKKysgICAgICAgIHN0cnVjdCB1dHNuYW1lIGtlcm5lbDsKKysgICAgICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7CisrICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKysgICAgICAgIGludCByYyA9IEVYSVRfU1VDQ0VTUzsKKysKKysgICAgICAgIGZpcm13YXJlID0gdWRldl9kZXZpY2VfZ2V0X3Byb3BlcnR5X3ZhbHVlKGRldiwgIkZJUk1XQVJFIik7CisrICAgICAgICBpZiAoZmlybXdhcmUgPT0gTlVMTCkgeworKyAgICAgICAgICAgICAgICBsb2dfZXJyb3IoImZpcm13YXJlIHBhcmFtZXRlciBtaXNzaW5nIik7CisrICAgICAgICAgICAgICAgIHJjID0gRVhJVF9GQUlMVVJFOworKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisrICAgICAgICB9CisrCisrICAgICAgICAvKiBsb29rdXAgZmlybXdhcmUgZmlsZSAqLworKyAgICAgICAgdW5hbWUoJmtlcm5lbCk7CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRUxFTUVOVFNPRihzZWFyY2hwYXRoKTsgaSsrKSB7CisrICAgICAgICAgICAgICAgIHN0cnNjcHlsKGZ3cGF0aCwgc2l6ZW9mKGZ3cGF0aCksIHNlYXJjaHBhdGhbaV0sIGtlcm5lbC5yZWxlYXNlLCAiLyIsIGZpcm13YXJlLCBOVUxMKTsKKysgICAgICAgICAgICAgICAgZndmaWxlID0gZm9wZW4oZndwYXRoLCAicmUiKTsKKysgICAgICAgICAgICAgICAgaWYgKGZ3ZmlsZSAhPSBOVUxMKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAgICAgICAgICBzdHJzY3B5bChmd3BhdGgsIHNpemVvZihmd3BhdGgpLCBzZWFyY2hwYXRoW2ldLCBmaXJtd2FyZSwgTlVMTCk7CisrICAgICAgICAgICAgICAgIGZ3ZmlsZSA9IGZvcGVuKGZ3cGF0aCwgInJlIik7CisrICAgICAgICAgICAgICAgIGlmIChmd2ZpbGUgIT0gTlVMTCkKKysgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKysKKysgICAgICAgIHN0cnNjcHlsKGxvYWRwYXRoLCBzaXplb2YobG9hZHBhdGgpLCB1ZGV2X2RldmljZV9nZXRfc3lzcGF0aChkZXYpLCAiL2xvYWRpbmciLCBOVUxMKTsKKysKKysgICAgICAgIGlmIChmd2ZpbGUgPT0gTlVMTCkgeworKyAgICAgICAgICAgICAgICBsb2dfZGVidWcoImRpZCBub3QgZmluZCBmaXJtd2FyZSBmaWxlICclcyciLCBmaXJtd2FyZSk7CisrICAgICAgICAgICAgICAgIHJjID0gRVhJVF9GQUlMVVJFOworKyAgICAgICAgICAgICAgICAvKgorKyAgICAgICAgICAgICAgICAgKiBEbyBub3QgY2FuY2VsIHRoZSByZXF1ZXN0IGluIHRoZSBpbml0cmQsIHRoZSByZWFsIHJvb3QgbWlnaHQgaGF2ZQorKyAgICAgICAgICAgICAgICAgKiB0aGUgZmlybXdhcmUgZmlsZSBhbmQgdGhlICdjb2xkcGx1ZycgcnVuIGluIHRoZSByZWFsIHJvb3Qgd2lsbCBmaW5kCisrICAgICAgICAgICAgICAgICAqIHRoaXMgcGVuZGluZyByZXF1ZXN0IGFuZCBmdWxmaWxsIG9yIGNhbmNlbCBpdC4KKysgICAgICAgICAgICAgICAgICogKi8KKysgICAgICAgICAgICAgICAgaWYgKCFpbl9pbml0cmQoKSkKKysgICAgICAgICAgICAgICAgICAgICAgICBzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIi0xIik7CisrICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmIChzdGF0KGZ3cGF0aCwgJnN0YXRidWYpIDwgMCB8fCBzdGF0YnVmLnN0X3NpemUgPT0gMCkgeworKyAgICAgICAgICAgICAgICBpZiAoIWluX2luaXRyZCgpKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiLTEiKTsKKysgICAgICAgICAgICAgICAgcmMgPSBFWElUX0ZBSUxVUkU7CisrICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICghc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICIxIikpCisrICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysKKysgICAgICAgIHN0cnNjcHlsKGRhdGFwYXRoLCBzaXplb2YoZGF0YXBhdGgpLCB1ZGV2X2RldmljZV9nZXRfc3lzcGF0aChkZXYpLCAiL2RhdGEiLCBOVUxMKTsKKysgICAgICAgIGlmICghY29weV9maXJtd2FyZSh1ZGV2LCBmd3BhdGgsIGRhdGFwYXRoLCBzdGF0YnVmLnN0X3NpemUpKSB7CisrICAgICAgICAgICAgICAgIGxvZ19lcnJvcigiZXJyb3Igc2VuZGluZyBmaXJtd2FyZSAnJXMnIHRvIGRldmljZSIsIGZpcm13YXJlKTsKKysgICAgICAgICAgICAgICAgc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICItMSIpOworKyAgICAgICAgICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKKysgICAgICAgICAgICAgICAgZ290byBleGl0OworKyAgICAgICAgfTsKKysKKysgICAgICAgIHNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiMCIpOworK2V4aXQ6CisrICAgICAgICBpZiAoZndmaWxlKQorKyAgICAgICAgICAgICAgICBmY2xvc2UoZndmaWxlKTsKKysgICAgICAgIHJldHVybiByYzsKKyt9CisrCisrY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fZmlybXdhcmUgPSB7CisrICAgICAgICAubmFtZSA9ICJmaXJtd2FyZSIsCisrICAgICAgICAuY21kID0gYnVpbHRpbl9maXJtd2FyZSwKKysgICAgICAgIC5oZWxwID0gImtlcm5lbCBmaXJtd2FyZSBsb2FkZXIiLAorKyAgICAgICAgLnJ1bl9vbmNlID0gdHJ1ZSwKKyt9OworZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLmMKK2luZGV4IGRiMmI2ODc0Zi4uY2NkODg2MzhjIDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLmMKKysrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jCitAQCAtMzIsNiArMzIsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiAqYnVpbHRpbnNbXSA9IHsKKyAgICAgICAgIFtVREVWX0JVSUxUSU5fQkxLSURdID0gJnVkZXZfYnVpbHRpbl9ibGtpZCwKKyAjZW5kaWYKKyAgICAgICAgIFtVREVWX0JVSUxUSU5fQlRSRlNdID0gJnVkZXZfYnVpbHRpbl9idHJmcywKKysjaWYgSEFWRV9GSVJNV0FSRQorKyAgICAgICAgW1VERVZfQlVJTFRJTl9GSVJNV0FSRV0gPSAmdWRldl9idWlsdGluX2Zpcm13YXJlLAorKyNlbmRpZgorICAgICAgICAgW1VERVZfQlVJTFRJTl9IV0RCXSA9ICZ1ZGV2X2J1aWx0aW5faHdkYiwKKyAgICAgICAgIFtVREVWX0JVSUxUSU5fSU5QVVRfSURdID0gJnVkZXZfYnVpbHRpbl9pbnB1dF9pZCwKKyAgICAgICAgIFtVREVWX0JVSUxUSU5fS0VZQk9BUkRdID0gJnVkZXZfYnVpbHRpbl9rZXlib2FyZCwKK2RpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LmggYi9zcmMvdWRldi91ZGV2LmgKK2luZGV4IGVhMTFjMmQyOS4uYzQ3ZGQzZDg4IDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvdWRldi5oCisrKysgYi9zcmMvdWRldi91ZGV2LmgKK0BAIC0xNTEsNiArMTUxLDkgQEAgZW51bSB1ZGV2X2J1aWx0aW5fY21kIHsKKyAgICAgICAgIFVERVZfQlVJTFRJTl9CTEtJRCwKKyAjZW5kaWYKKyAgICAgICAgIFVERVZfQlVJTFRJTl9CVFJGUywKKysjaWYgSEFWRV9GSVJNV0FSRQorKyAgICAgICAgVURFVl9CVUlMVElOX0ZJUk1XQVJFLAorKyNlbmRpZgorICAgICAgICAgVURFVl9CVUlMVElOX0hXREIsCisgICAgICAgICBVREVWX0JVSUxUSU5fSU5QVVRfSUQsCisgICAgICAgICBVREVWX0JVSUxUSU5fS0VZQk9BUkQsCitAQCAtMTc5LDYgKzE4Miw5IEBAIHN0cnVjdCB1ZGV2X2J1aWx0aW4geworIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9ibGtpZDsKKyAjZW5kaWYKKyBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fYnRyZnM7CisrI2lmIEhBVkVfRklSTVdBUkUKKytleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fZmlybXdhcmU7CisrI2VuZGlmCisgZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2h3ZGI7CisgZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2lucHV0X2lkOworIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9rZXlib2FyZDsKK2RpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2ZC5jIGIvc3JjL3VkZXYvdWRldmQuYworaW5kZXggNWM3NTdkNTEzLi4yZjMzMTMwMDcgMTAwNjQ0CistLS0gYS9zcmMvdWRldi91ZGV2ZC5jCisrKysgYi9zcmMvdWRldi91ZGV2ZC5jCitAQCAtMTI3LDYgKzEyNyw5IEBAIHN0cnVjdCBldmVudCB7CisgICAgICAgICBib29sIGlzX2Jsb2NrOworICAgICAgICAgc2RfZXZlbnRfc291cmNlICp0aW1lb3V0X3dhcm5pbmc7CisgICAgICAgICBzZF9ldmVudF9zb3VyY2UgKnRpbWVvdXQ7CisrI2lmIEhBVkVfRklSTVdBUkUKKysgICAgICAgIGJvb2wgbm9kZWxheTsKKysjZW5kaWYKKyB9OworIAorIHN0YXRpYyB2b2lkIGV2ZW50X3F1ZXVlX2NsZWFudXAoTWFuYWdlciAqbWFuYWdlciwgZW51bSBldmVudF9zdGF0ZSB0eXBlKTsKK0BAIC02MDksNiArNjEyLDEwIEBAIHN0YXRpYyBpbnQgZXZlbnRfcXVldWVfaW5zZXJ0KE1hbmFnZXIgKm1hbmFnZXIsIHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2KSB7CisgICAgICAgICBldmVudC0+ZGV2bnVtID0gdWRldl9kZXZpY2VfZ2V0X2Rldm51bShkZXYpOworICAgICAgICAgZXZlbnQtPmlzX2Jsb2NrID0gc3RyZXEoImJsb2NrIiwgdWRldl9kZXZpY2VfZ2V0X3N1YnN5c3RlbShkZXYpKTsKKyAgICAgICAgIGV2ZW50LT5pZmluZGV4ID0gdWRldl9kZXZpY2VfZ2V0X2lmaW5kZXgoZGV2KTsKKysjaWYgSEFWRV9GSVJNV0FSRQorKyAgICAgICAgaWYgKHN0cmVxKHVkZXZfZGV2aWNlX2dldF9zdWJzeXN0ZW0oZGV2KSwgImZpcm13YXJlIikpCisrICAgICAgICAgICAgICAgIGV2ZW50LT5ub2RlbGF5ID0gdHJ1ZTsKKysjZW5kaWYKKyAKKyAgICAgICAgIGxvZ19kZWJ1Zygic2VxICVsbHUgcXVldWVkLCAnJXMnICclcyciLCB1ZGV2X2RldmljZV9nZXRfc2VxbnVtKGRldiksCisgICAgICAgICAgICAgIHVkZXZfZGV2aWNlX2dldF9hY3Rpb24oZGV2KSwgdWRldl9kZXZpY2VfZ2V0X3N1YnN5c3RlbShkZXYpKTsKK0BAIC02OTIsNiArNjk5LDExIEBAIHN0YXRpYyBib29sIGlzX2RldnBhdGhfYnVzeShNYW5hZ2VyICptYW5hZ2VyLCBzdHJ1Y3QgZXZlbnQgKmV2ZW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgIH0KKyAKKysjaWYgSEFWRV9GSVJNV0FSRQorKyAgICAgICAgICAgICAgICAvKiBhbGxvdyB0byBieXBhc3MgdGhlIGRlcGVuZGVuY3kgdHJhY2tpbmcgKi8KKysgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5ub2RlbGF5KQorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyNlbmRpZgorICAgICAgICAgICAgICAgICAvKiBwYXJlbnQgZGV2aWNlIGV2ZW50IGZvdW5kICovCisgICAgICAgICAgICAgICAgIGlmIChldmVudC0+ZGV2cGF0aFtjb21tb25dID09ICcvJykgeworICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5kZWxheWluZ19zZXFudW0gPSBsb29wX2V2ZW50LT5zZXFudW07CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIxNDM2OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGZmZGY5Y2I2YmEwZDkzMmI4MTkzM2Q4MjRmMjNhODc4YzMxM2E4ZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMiBGZWIgMjAxNiAwNTo1OTowMSArMDAwMAorU3ViamVjdDogW1BBVENIIDA5LzMxXSByZW1vdmUgZHVwbGljYXRlIGluY2x1ZGUgdWNoYXIuaAorCittaXNzaW5nLmggYWxyZWFkeSBpbmNsdWRlcyBpdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBzcmMvYmFzaWMvZXNjYXBlLmggfCAxIC0KKyBzcmMvYmFzaWMvdXRmOC5oICAgfCAxIC0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvZXNjYXBlLmggYi9zcmMvYmFzaWMvZXNjYXBlLmgKK2luZGV4IGRlODlmNDNhOC4uOTkyMWNjYmJkIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2VzY2FwZS5oCisrKysgYi9zcmMvYmFzaWMvZXNjYXBlLmgKK0BAIC0yNCw3ICsyNCw2IEBACisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHVjaGFyLmg+CisgCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgIm1pc3NpbmcuaCIKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRmOC5oIGIvc3JjL2Jhc2ljL3V0ZjguaAoraW5kZXggYjBhNzQ4NWFlLi5mYTA2ZDI5MDYgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvdXRmOC5oCisrKysgYi9zcmMvYmFzaWMvdXRmOC5oCitAQCAtMjMsNyArMjMsNiBAQAorICNpbmNsdWRlIDxzdGRib29sLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKy0jaW5jbHVkZSA8dWNoYXIuaD4KKyAKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAjaW5jbHVkZSAibWlzc2luZy5oIgorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvcm0tc3RybmR1cGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNjk0ZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gNzVmNGU3ZjE2N2RlNTMzYTE2MGVlMWFmMmEwM2ZiYTRjNWE1ZmZjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEyOjMzOjIyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTJdIHRlc3QtaGV4ZGVjb2N0LmM6IEluY2x1ZGUgbWlzc2luZy5oIGZvcm0gc3RybmR1cGEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYwotaW5kZXggZmNhZTQyN2U3Li41ZWI1ZTJlZDcgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCi0rKysgYi9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCi1AQCAtMjEsNiArMjEsNyBAQAotICNpbmNsdWRlICJoZXhkZWNvY3QuaCIKLSAjaW5jbHVkZSAibWFjcm8uaCIKLSAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIHN0YXRpYyB2b2lkIHRlc3RfaGV4Y2hhcih2b2lkKSB7Ci0gICAgICAgICBhc3NlcnRfc2UoaGV4Y2hhcigweGEpID09ICdhJyk7Ci0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtY2hlY2stZm9yLXVjaGFyLmgtaW4tbWVzb24uYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtY2hlY2stZm9yLXVjaGFyLmgtaW4tbWVzb24uYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE0NGI1NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1jaGVjay1mb3ItdWNoYXIuaC1pbi1tZXNvbi5idWlsZC5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIGVhNGNhYWExYzZhNmRjNjgyYmIwNDU0OGFiMDVjNWM3M2QwYjQ1ZDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE1OjM0OjUyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMzFdIGNoZWNrIGZvciB1Y2hhci5oIGluIG1lc29uLmJ1aWxkCisKK1VzZSAjaWYgSEFWRV9VQ0hBUl9IIHRvIGluY2x1ZGUgdWNoYXIuaCBjb25kaXRpb25hbGx5LgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkICAgICAgICAgfCAxICsKKyBzcmMvYmFzaWMvbWlzc2luZy5oIHwgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA5YzI1MDIyYTQuLjk0YTE2NzEyYiAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTYyMyw2ICs2MjMsNyBAQCBmb3JlYWNoIGhlYWRlciA6IFsnY3J5cHQuaCcsCisgICAgICAgICAgICAgICAgICAgJ3N5cy9hdXh2LmgnLAorICAgICAgICAgICAgICAgICAgICd2YWxncmluZC9tZW1jaGVjay5oJywKKyAgICAgICAgICAgICAgICAgICAndmFsZ3JpbmQvdmFsZ3JpbmQuaCcsCisrICAgICAgICAgICAgICAgICAgJ3VjaGFyLmgnLAorICAgICAgICAgICAgICAgICAgXQorIAorICAgICAgICAgY29uZi5zZXQxMCgnSEFWRV8nICsgaGVhZGVyLnVuZGVyc2NvcmlmeSgpLnRvX3VwcGVyKCksCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDM5YzFmYjcwMC4uODRkNmQ5MTY3IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTM4LDcgKzM4LDkgQEAKKyAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKysjaWYgSEFWRV9VQ0hBUl9ICisgI2luY2x1ZGUgPHVjaGFyLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorIAorICNpZiBIQVZFX0FVRElUCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgyOGQ2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSA1MjcyNmJlOTJlMmI4NDFmNzQ0YTk2YzM3OGNjODcyYWUwMDMzYTJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgNSBTZXAgMjAxNSAwNjozMTo0NyArMDAwMAotU3ViamVjdDogW1BBVENIIDEwLzE5XSBpbXBsbWVudCBzeXN0ZW1kLXN5c3YtaW5zdGFsbCBmb3IgT0UKLQotVXNlIHVwZGF0ZS1yYy5kIGZvciBlbmFibGluZy9kaXNhYmxpbmcgYW5kIHN0YXR1cyBjb21tYW5kCi10byBjaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzeXN2IHNlcnZpY2UKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gfCA2ICsrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OIGIvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTgotaW5kZXggYTUzYTNlNi4uNWQ4NzdiMCAxMDA3NTUKLS0tLSBhL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KLSsrKyBiL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KLUBAIC0zMCwxNyArMzAsMTcgQEAgY2FzZSAiJDEiIGluCi0gICAgIGVuYWJsZSkKLSAgICAgICAgICMgY2FsbCB0aGUgY29tbWFuZCB0byBlbmFibGUgU3lzViBpbml0IHNjcmlwdCAkTkFNRSBoZXJlCi0gICAgICAgICAjIChjb25zaWRlciBvcHRpb25hbCAkUk9PVCkKLS0gICAgICAgIGVjaG8gIklNUExFTUVOVCBNRTogZW5hYmxpbmcgU3lzViBpbml0LmQgc2NyaXB0ICROQU1FIgotKyAgICAgICAgdXBkYXRlLXJjLmQgLWYgJE5BTUUgZGVmYXVsdHMKLSAgICAgICAgIDs7Ci0gICAgIGRpc2FibGUpCi0gICAgICAgICAjIGNhbGwgdGhlIGNvbW1hbmQgdG8gZGlzYWJsZSBTeXNWIGluaXQgc2NyaXB0ICROQU1FIGhlcmUKLSAgICAgICAgICMgKGNvbnNpZGVyIG9wdGlvbmFsICRST09UKQotLSAgICAgICAgZWNobyAiSU1QTEVNRU5UIE1FOiBkaXNhYmxpbmcgU3lzViBpbml0LmQgc2NyaXB0ICROQU1FIgotKyAgICAgICAgdXBkYXRlLXJjLmQgLWYgJE5BTUUgcmVtb3ZlCi0gICAgICAgICA7OwotICAgICBpcy1lbmFibGVkKQotICAgICAgICAgIyBleGl0IHdpdGggMCBpZiAkTkFNRSBpcyBlbmFibGVkLCBub24temVybyBpZiBpdCBpcyBkaXNhYmxlZAotICAgICAgICAgIyAoY29uc2lkZXIgb3B0aW9uYWwgJFJPT1QpCi0tICAgICAgICBlY2hvICJJTVBMRU1FTlQgTUU6IGNoZWNraW5nIFN5c1YgaW5pdC5kIHNjcmlwdCAkTkFNRSIKLSsgICAgICAgIC9ldGMvaW5pdC5kLyROQU1FIHN0YXR1cwotICAgICAgICAgOzsKLSAgICAgKikKLSAgICAgICAgIHVzYWdlIDs7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDhjODNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA2ZTlkMmJjYWE2Zjg4NmIyMzg0YzFjMzVhMDRlNGViYzE0OGFlYTY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTI6NDA6MjUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xMl0gdGVzdC1zaXplb2YuYzogRGlzYWJsZSB0ZXN0cyBmb3IgbWlzc2luZyB0eXBlZGVmcyBpbgotIG11c2wKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvdGVzdC90ZXN0LXNpemVvZi5jIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCi1pbmRleCAyNjlhZGZkMTguLmJhNzg1NWRmZiAxMDA2NDQKLS0tLSBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKLSsrKyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKLUBAIC0xOCw3ICsxOCw2IEBACi0gKioqLwotIAotICNpbmNsdWRlIDxzdGRpby5oPgotLQotICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKLSAKLSAvKiBQcmludCBpbmZvcm1hdGlvbiBhYm91dCB2YXJpb3VzIHR5cGVzLiBVc2VmdWwgd2hlbiBkaWFnbm9zaW5nCi1AQCAtNDgsOCArNDcsMTAgQEAgaW50IG1haW4odm9pZCkgewotICAgICAgICAgaW5mbyh1bnNpZ25lZCk7Ci0gICAgICAgICBpbmZvKGxvbmcgdW5zaWduZWQpOwotICAgICAgICAgaW5mbyhsb25nIGxvbmcgdW5zaWduZWQpOwotKyNpZmRlZiBfX0dMSUJDX18KLSAgICAgICAgIGluZm8oX19zeXNjYWxsX3Vsb25nX3QpOwotICAgICAgICAgaW5mbyhfX3N5c2NhbGxfc2xvbmdfdCk7Ci0rI2VuZGlmCi0gCi0gICAgICAgICBpbmZvKGZsb2F0KTsKLSAgICAgICAgIGluZm8oZG91YmxlKTsKLUBAIC01OSw3ICs2MCw5IEBAIGludCBtYWluKHZvaWQpIHsKLSAgICAgICAgIGluZm8oc3NpemVfdCk7Ci0gICAgICAgICBpbmZvKHRpbWVfdCk7Ci0gICAgICAgICBpbmZvKHVzZWNfdCk7Ci0rI2lmZGVmIF9fR0xJQkNfXwotICAgICAgICAgaW5mbyhfX3RpbWVfdCk7Ci0rI2VuZGlmCi0gCi0gICAgICAgICBpbmZvKGVudW0gRW51bSk7Ci0gICAgICAgICBpbmZvKGVudW0gQmlnRW51bSk7Ci0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZmU4MjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLUZyb20gMmViNDVmNWEwYThiZmI4YmRjYTA4NDU4N2FkMjhlNTAwMWYzY2M0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogVGh1LCAxOCBTZXAgMjAxNCAxNToyNDo1NiArMDIwMAotU3ViamVjdDogW1BBVENIIDExLzEyXSBkb24ndCB1c2UgZ2xpYmMtc3BlY2lmaWMgcXNvcnRfcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9od2RiL2h3ZGIuYyAgICAgICAgIHwgMTggKysrKysrKysrKystLS0tLS0tCi0gc3JjL3VkZXYvdWRldmFkbS1od2RiLmMgfCAxNiArKysrKysrKysrLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9od2RiL2h3ZGIuYyBiL3NyYy9od2RiL2h3ZGIuYwotaW5kZXggNzkzMzk4Y2E2Li42NjliMDA4MTggMTAwNjQ0Ci0tLS0gYS9zcmMvaHdkYi9od2RiLmMKLSsrKyBiL3NyYy9od2RiL2h3ZGIuYwotQEAgLTE1MSwxMyArMTUxLDEyIEBAIHN0YXRpYyB2b2lkIHRyaWVfZnJlZShzdHJ1Y3QgdHJpZSAqdHJpZSkgewotIAotIERFRklORV9UUklWSUFMX0NMRUFOVVBfRlVOQyhzdHJ1Y3QgdHJpZSosIHRyaWVfZnJlZSk7Ci0gCi0tc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKLStzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKLStzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKLSAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7Ci0gICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOwotLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7Ci0tCi0tICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCi0tICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOwotKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCi0rICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7Ci0gfQotIAotIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKLUBAIC0xODIsNyArMTgxLDEwIEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVfb2ZmID0gdiwKLSAgICAgICAgICAgICAgICAgfTsKLSAKLS0gICAgICAgICAgICAgICAgdmFsID0geGJzZWFyY2hfcigmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKLSsgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKLSsgICAgICAgICAgICAgICAgdmFsID0gYnNlYXJjaCgmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKLSsgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKLSsKLSAgICAgICAgICAgICAgICAgaWYgKHZhbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSAyIGlkZW50aWNhbCBwcm9wZXJ0aWVzIG9uIHRoZSBzYW1lIG1hdGNoLXN0cmluZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTaW5jZSB3ZSBwcm9jZXNzIGZpbGVzIGluIG9yZGVyLCB3ZSBqdXN0IHJlcGxhY2UgdGhlIHByZXZpb3VzIHZhbHVlLgotQEAgLTIwNyw3ICsyMDksOSBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCi0gICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5maWxlX3ByaW9yaXR5ID0gZmlsZV9wcmlvcml0eTsKLSAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmxpbmVfbnVtYmVyID0gbGluZV9udW1iZXI7Ci0gICAgICAgICBub2RlLT52YWx1ZXNfY291bnQrKzsKLS0gICAgICAgIHFzb3J0X3Iobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7Ci0rICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOwotKyAgICAgICAgcXNvcnQobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7Ci0rICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOwotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jIGIvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKLWluZGV4IDY5YjBiOTAyNS4uZmJkMjEzMzAwIDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKLSsrKyBiL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCi1AQCAtMTI4LDEzICsxMjgsMTMgQEAgc3RhdGljIHZvaWQgdHJpZV9ub2RlX2NsZWFudXAoc3RydWN0IHRyaWVfbm9kZSAqbm9kZSkgewotICAgICAgICAgZnJlZShub2RlKTsKLSB9Ci0gCi0tc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKLStzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKLStzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKLSAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7Ci0gICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOwotLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7Ci0gCi0tICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCi0tICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOwotKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCi0rICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7Ci0gfQotIAotIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKLUBAIC0xNTUsNyArMTU1LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZV9vZmYgPSB2LAotICAgICAgICAgICAgICAgICB9OwotIAotLSAgICAgICAgICAgICAgICB2YWwgPSB4YnNlYXJjaF9yKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOwotKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOwotKyAgICAgICAgICAgICAgICB2YWwgPSBic2VhcmNoKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOwotKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOwotICAgICAgICAgICAgICAgICBpZiAodmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVwbGFjZSBleGlzdGluZyBlYXJsaWVyIGtleSB3aXRoIG5ldyB2YWx1ZSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC0+dmFsdWVfb2ZmID0gdjsKLUBAIC0xNzIsNyArMTc0LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAotICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0ua2V5X29mZiA9IGs7Ci0gICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS52YWx1ZV9vZmYgPSB2OwotICAgICAgICAgbm9kZS0+dmFsdWVzX2NvdW50Kys7Ci0tICAgICAgICBxc29ydF9yKG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOwotKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKLSsgICAgICAgIHFzb3J0KG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOwotKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKLSAgICAgICAgIHJldHVybiAwOwotIH0KLSAKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1uc3MtbXltYWNoaW5lcy1CdWlsZC1jb25kaXRpb25hbGx5LXdoZW4tSEFWRV9NWUhPU1ROLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1IQVZFX01ZSE9TVE4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMWFlOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1IQVZFX01ZSE9TVE4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDNmNmY0NTU3OGI4MjhlNDE0ZjUwYzY4MjIzNzUwNzNlNzE3NDIzNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxNCBEZWMgMjAxNSAwMDo1MDowMSArMDAwMAotU3ViamVjdDogW1BBVENIIDExLzE5XSBuc3MtbXltYWNoaW5lczogQnVpbGQgY29uZGl0aW9uYWxseSB3aGVuCi0gSEFWRV9NWUhPU1ROQU1FIGlzIHNldAotCi1GaXhlcyBidWlsZCBmYWlsdXJlcyB3aGVuIGJ1aWxkaW5nIHdpdGggLS1kaXNhYmxlLW15aG9zdG5hbWUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAwMmY0MDE3Li40MjBlMGUwIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNTE0Niw2ICs1MTQ2LDcgQEAgU1lTVEVNX1VOSVRfQUxJQVNFUyArPSBcCi0gQlVTTkFNRVNfVEFSR0VUX1dBTlRTICs9IFwKLSAJb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUKLSAKLStpZiBIQVZFX01ZSE9TVE5BTUUKLSBsaWJuc3NfbXltYWNoaW5lc19sYV9TT1VSQ0VTID0gXAotIAlzcmMvbnNzLW15bWFjaGluZXMvbnNzLW15bWFjaGluZXMuc3ltIFwKLSAJc3JjL25zcy1teW1hY2hpbmVzL25zcy1teW1hY2hpbmVzLmMKLUBAIC01MTY3LDYgKzUxNjgsNyBAQCByb290bGliX0xUTElCUkFSSUVTICs9IFwKLSAJbGlibnNzX215bWFjaGluZXMubGEKLSAKLSBlbmRpZgotK2VuZGlmCi0gCi0gcG9sa2l0cG9saWN5X2luX2ZpbGVzICs9IFwKLSAJc3JjL21hY2hpbmUvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnBvbGljeS5pbgotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwOTIzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA2MGRkNDExZTk3NTZmYzJiMTRjMGUwNjFhZDgwMzc4MmI0YWVlODc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxNTo0NjowNSArMDgwMAorU3ViamVjdDogW1BBVENIIDExLzMxXSBzb2NrZXQtdXRpbDogZG9uJ3QgZmFpbCBpZiBsaWJjIGRvZXNuJ3Qgc3VwcG9ydCBJRE4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMgfCAxMCArKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jIGIvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKK2luZGV4IDJjNzBjYWRlMS4uNjdhZWRhZGQ0IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jCitAQCAtNTAsNiArNTAsMTYgQEAKKyAjaW5jbHVkZSAidXRmOC5oIgorICNpbmNsdWRlICJ1dGlsLmgiCisgCisrLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQorKyAqIGRvZXNuJ3Qgc3VwcG9ydCBJRE4gKi8KKysjaWZuZGVmIE5JX0lETgorKyNkZWZpbmUgTklfSUROIDAKKysjZW5kaWYKKysKKysjaWZuZGVmIE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUworKyNkZWZpbmUgTklfSUROX1VTRV9TVEQzX0FTQ0lJX1JVTEVTIDAKKysjZW5kaWYKKysKKyAjaWYgRU5BQkxFX0lETgorICMgIGRlZmluZSBJRE5fRkxBR1MgKE5JX0lETnxOSV9JRE5fVVNFX1NURDNfQVNDSUlfUlVMRVMpCisgI2Vsc2UKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTZkYjY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1Gcm9tIDk2MjE2MThjNzAxYTJkNWViM2UyNmY0MGM2ODM1NGQ0ZGZiOGY4NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotRGF0ZTogVHVlLCAxMCBPY3QgMjAxNyAxNDozMzozMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDEyLzEyXSBkb24ndCBwYXNzIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZyB0byBmYWNjZXNzYXQoKQotCi1Bdm9pZCB1c2luZyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcuIEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSByaWdodAotdGhpbmcgdG8gZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6Ci0KLSAgaHR0cDovL2xpc3RzLmxhbmRsZXkubmV0L3BpcGVybWFpbC90b3lib3gtbGFuZGxleS5uZXQvMjAxNC1TZXB0ZW1iZXIvMDAzNjEwLmh0bWwKLSAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKLQotTm90ZSB0aGF0IGxhY2Nlc3MoKSBpcyBuZXZlciBwYXNzaW5nIEFUX0VBQ0NFU1Mgc28gYSBsb3Qgb2YgdGhlCi1kaXNjdXNzaW9uIGluIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdAotKGN1cnJlbnRseSkgYWxsIHN5c3RlbWQgY2FsbGVycyBvZiBsYWNjZXNzKCkgcGFzcyBtb2RlIGFzIEZfT0ssIHNvCi1vbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QgYWNjZXNzIHBlcm1pc3Npb25zLgotVGhlcmVmb3JlLCBpbiB0aGlzIGNhc2UsIHRoZSBvbmx5IGRpc3RpY3Rpb24gYmV0d2VlbiBmYWNjZXNzYXQoKQotd2l0aCAoZmxhZyA9PSAwKSBhbmQgKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgaXMgdGhlIGJlaGF2aW91cgotZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkIHdpdGgKLShmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGFuZCBmYWlsIChmbGFnID09IDApLgotCi1UaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdAotY2xlYXIgaWYgb3Igd2h5IGl0IG5lZWRzIHRvIHJldHVybiBzdWNjZXNzIGZvciBicm9rZW4gc3ltbGlua3MuIE1heWJlCi1qdXN0IGhpc3RvcmljYWwgYW5kIG5vdCBhY3R1YWxseSBuZWNlc3Nhcnkgb3IgZGVzaXJlZCBiZWhhdmlvdXI/Ci0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL2Jhc2ljL2ZzLXV0aWwuaCAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKy0KLSBzcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIHwgIDYgKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaCBiL3NyYy9iYXNpYy9mcy11dGlsLmgKLWluZGV4IDA5NGFjZjE3OS4uY2RiYzBhZTcyIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaAotKysrIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAotQEAgLTQ4LDcgKzQ4LDI3IEBAIGludCBmY2htb2RfdW1hc2soaW50IGZkLCBtb2RlX3QgbW9kZSk7Ci0gCi0gaW50IGZkX3dhcm5fcGVybWlzc2lvbnMoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkKTsKLSAKLS0jZGVmaW5lIGxhY2Nlc3MocGF0aCwgbW9kZSkgZmFjY2Vzc2F0KEFUX0ZEQ1dELCAocGF0aCksIChtb2RlKSwgQVRfU1lNTElOS19OT0ZPTExPVykKLSsvKgotKyAgIEF2b2lkIHVzaW5nIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZy4gSXQgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0IHRoaW5nIHRvCi0rICAgZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6Ci0rCi0rICAgICBodHRwOi8vbGlzdHMubGFuZGxleS5uZXQvcGlwZXJtYWlsL3RveWJveC1sYW5kbGV5Lm5ldC8yMDE0LVNlcHRlbWJlci8wMDM2MTAuaHRtbAotKyAgICAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKLSsKLSsgICBOb3RlIHRoYXQgbGFjY2VzcygpIGlzIG5ldmVyIHBhc3NpbmcgQVRfRUFDQ0VTUyBzbyBhIGxvdCBvZiB0aGUgZGlzY3Vzc2lvbiBpbgotKyAgIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdCAoY3VycmVudGx5KSBhbGwgc3lzdGVtZCBjYWxsZXJzCi0rICAgb2YgbGFjY2VzcygpIHBhc3MgbW9kZSBhcyBGX09LLCBzbyBvbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QKLSsgICBhY2Nlc3MgcGVybWlzc2lvbnMuIFRoZXJlZm9yZSwgaW4gdGhpcyBjYXNlLCB0aGUgb25seSBkaXN0aWN0aW9uIGJldHdlZW4KLSsgICBmYWNjZXNzYXQoKSB3aXRoIChmbGFnID09IDApIGFuZCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBpcyB0aGUKLSsgICBiZWhhdmlvdXIgZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkCi0rICAgd2l0aCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBhbmQgZmFpbCAoZmxhZyA9PSAwKS4KLSsKLSsgICBUaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdCBjbGVhciBpZgotKyAgIG9yIHdoeSBpdCBuZWVkcyB0byByZXR1cm4gc3VjY2VzcyBmb3IgYnJva2VuIHN5bWxpbmtzLiBNYXliZSBqdXN0IGhpc3RvcmljYWwKLSsgICBhbmQgbm90IGFjdHVhbGx5IG5lY2Vzc2FyeSBvciBkZXNpcmVkIGJlaGF2aW91cj8KLSsqLwotKwotKyNkZWZpbmUgbGFjY2VzcyhwYXRoLCBtb2RlKSBmYWNjZXNzYXQoQVRfRkRDV0QsIChwYXRoKSwgKG1vZGUpLCAwKQotIAotIGludCB0b3VjaF9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wgcGFyZW50cywgdXNlY190IHN0YW1wLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgbW9kZV90IG1vZGUpOwotIGludCB0b3VjaChjb25zdCBjaGFyICpwYXRoKTsKLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIGIvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYwotaW5kZXggOTAzYTE4Nzg2Li4yZjYwNTJlZTcgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCi0rKysgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCi1AQCAtNzAsNyArNzAsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgewotICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG9wZW4gcm9vdCBmaWxlIHN5c3RlbTogJW0iKTsKLSAKLSAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFTEVNRU5UU09GKHRhYmxlKTsgaSArKykgewotLSAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCB0YWJsZVtpXS5kaXIsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpID49IDApCi0rICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHRhYmxlW2ldLmRpciwgRl9PSywgMCkgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAKLSAgICAgICAgICAgICAgICAgaWYgKHRhYmxlW2ldLnRhcmdldCkgewotQEAgLTc4LDcgKzc4LDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKLSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBvbmUgb2YgdGhlIHRhcmdldHMgZXhpc3RzICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgTlVMU1RSX0ZPUkVBQ0gocywgdGFibGVbaV0udGFyZ2V0KSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBzLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBzLCBGX09LLCAwKSA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgYSBzcGVjaWZpYyBmaWxlIGV4aXN0cyBhdCB0aGUgdGFyZ2V0IHBhdGggKi8KLUBAIC04OSw3ICs4OSw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX29vbSgpOwotIAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBwLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHAsIEZfT0ssIDApIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIwNzg2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNDA2YTRjODY5MjMxNmU4YzdlMTRjNzhmOWE4MDI2ODliZTMwNGE5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMTcgTm92IDIwMTcgMDk6NDY6MDAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxMi8zMV0gcnVsZXM6IHdhdGNoIG1ldGFkYXRhIGNoYW5nZXMgaW4gaWRlIGRldmljZXMKKworRm9ybWF0dGluZyBJREUgc3RvcmFnZSBkb2VzIG5vdCB0cmlnZ2VyICJjaGFuZ2UiIHVldmVudHMuIEFzIGEgcmVzdWx0CitjbGllbnRzIHVzaW5nIHVkZXYgQVBJIGRvbid0IGdldCBhbnkgdXBkYXRlcyBhZnRlcndhcmRzIGFuZCBnZXQgb3V0ZGF0ZWQKK2luZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UuCisuLi4KK3Jvb3RAcWVtdXg4Ni02NDp+IyBta2ZzLmV4dDQgLUYgL2Rldi9oZGExCitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMjYyMTQ0IDRrIGJsb2NrcyBhbmQgNjU1MzYgaW5vZGVzCitGaWxlc3lzdGVtIFVVSUQ6IDk4NzkxZWIyLTJiZjMtNDdhZC1iNGQ4LTRjZjdlOTE0ZWVlMgorCityb290QHFlbXV4ODYtNjQ6fiMgbHMgL2Rldi9kaXNrL2J5LXV1aWQvOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyCitsczogY2Fubm90IGFjY2VzcyAnL2Rldi9kaXNrL2J5LXV1aWQvOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorLi4uCitJbmNsdWRlIGhkKiBpbiBhIG1hdGNoIGZvciB3YXRjaCBvcHRpb24gYXNzaWdubWVudC4KKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKKworcWVtdSBieSBkZWZhdWx0IGVtdWxhdGVzIElERSBhbmQgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbChzKSB1c2UKK0NPTkZJR19JREUgaW5zdGVhZCBvZiB0aGUgbW9yZSBtb2Rlcm4gbGlic2F0YSwgc28gZGlza3MgYXBwZWFyIGFzCisvZGV2L2hkKi4gQSBzaW1pbGFyIHBhdGNoIHJlamVjdGVkIGJ5IHVwc3RyZWFtIGJlY2F1c2UgQ09ORklHX0lERQoraXMgZGVwcmVjYXRlZC4KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgcnVsZXMvNjAtYmxvY2sucnVsZXMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ydWxlcy82MC1ibG9jay5ydWxlcyBiL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCitpbmRleCAzNDNmYzA2ZjguLmI1MjM3ZGFjNCAxMDA2NDQKKy0tLSBhL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCisrKysgYi9ydWxlcy82MC1ibG9jay5ydWxlcworQEAgLTgsNCArOCw0IEBAIEFDVElPTj09ImFkZCIsIFNVQlNZU1RFTT09Im1vZHVsZSIsIEtFUk5FTD09ImJsb2NrIiwgQVRUUntwYXJhbWV0ZXJzL2V2ZW50c19kZmxfCisgQUNUSU9OPT0iY2hhbmdlIiwgU1VCU1lTVEVNPT0ic2NzaSIsIEVOVntERVZUWVBFfT09InNjc2lfZGV2aWNlIiwgVEVTVD09ImJsb2NrIiwgQVRUUntibG9jay8qL3VldmVudH09ImNoYW5nZSIKKyAKKyAjIHdhdGNoIG1ldGFkYXRhIGNoYW5nZXMsIGNhdXNlZCBieSB0b29scyBjbG9zaW5nIHRoZSBkZXZpY2Ugbm9kZSB3aGljaCB3YXMgb3BlbmVkIGZvciB3cml0aW5nCistQUNUSU9OIT0icmVtb3ZlIiwgU1VCU1lTVEVNPT0iYmxvY2siLCBLRVJORUw9PSJsb29wKnxudm1lKnxzZCp8dmQqfHh2ZCp8cG1lbSp8bW1jYmxrKiIsIE9QVElPTlMrPSJ3YXRjaCIKKytBQ1RJT04hPSJyZW1vdmUiLCBTVUJTWVNURU09PSJibG9jayIsIEtFUk5FTD09Imxvb3AqfG52bWUqfHNkKnx2ZCp8eHZkKnxwbWVtKnxtbWNibGsqfGhkKiIsIE9QVElPTlMrPSJ3YXRjaCIKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIzODBjZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGFiNWEyNzA0MDEzM2Y3Y2RmMDYyYWM4Y2ZlYjk0ZTA4MWQzNTY3YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjQxOjEzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTRdIHJ1bGVzOiB3aGl0ZWxpc3QgaGQqIGRldmljZXMKLQotcWVtdSBieSBkZWZhdWx0IGVtdWxhdGVzIElERSBhbmQgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbChzKSB1c2UKLUNPTkZJR19JREUgaW5zdGVhZCBvZiB0aGUgbW9yZSBtb2Rlcm4gbGlic2F0YSwgc28gZGlza3MgYXBwZWFyIGFzCi0vZGV2L2hkKi4gUGF0Y2ggcmVqZWN0ZWQgdXBzdHJlYW0gYmVjYXVzZSBDT05GSUdfSURFIGlzIGRlcHJlY2F0ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvMTI3Nl0KLQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotLS0tCi0gcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzIGIvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCi1pbmRleCBkMjc0NWY2NWYuLjYzZjQ3MmJlOCAxMDA2NDQKLS0tLSBhL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcwotKysrIGIvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCi1AQCAtNyw3ICs3LDcgQEAgQUNUSU9OPT0icmVtb3ZlIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLSBFTlZ7VURFVl9ESVNBQkxFX1BFUlNJU1RFTlRfU1RPUkFHRV9SVUxFU19GTEFHfT09IjEiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotIAotIFNVQlNZU1RFTSE9ImJsb2NrIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLS1LRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnxzcip8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnxzY20qfHBtZW0qfG5iZCoiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotK0tFUk5FTCE9Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHNyKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHNjbSp8cG1lbSp8bmJkKnxoZCoiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotIAotICMgaWdub3JlIHBhcnRpdGlvbnMgdGhhdCBzcGFuIHRoZSBlbnRpcmUgZGlzawotIFRFU1Q9PSJ3aG9sZV9kaXNrIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWViYmZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotRnJvbSA0NzllMWY0YWEyYjlmMWM5MTFhNGQwZGQxOGUyMjJkMjQxYTk3OGVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgOSBOb3YgMjAxNiAyMDozNTozMCAtMDgwMAotU3ViamVjdDogW1BBVENIIDQyLzQ4XSBNYWtlIHJvb3QncyBob21lIGRpcmVjdG9yeSBjb25maWd1cmFibGUKLQotT3BlbkVtYmVkZGVkIGhhcyBhIGNvbmZpZ3VyYWJsZSBob21lIGRpcmVjdG9yeSBmb3Igcm9vdC4gQWxsb3cKLXN5c3RlbWQgdG8gYmUgYnVpbHQgdXNpbmcgaXRzIGlkZWEgb2Ygd2hhdCByb290J3MgaG9tZSBkaXJlY3RvcnkKLXNob3VsZCBiZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKLVVwc3RyZWFtIHdhbnRzIHRvIGhhdmUgYSB1bmlmaWVkIGhpZXJhcmNoeSB3aGVyZSBldmVyeW9uZSBpcwotdXNpbmcgdGhlIHNhbWUgcm9vdCBmb2xkZXIuCi1odHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2lzc3Vlcy81NDEKLQotU2lnbmVkLW9mZi1ieTogRGFuIE1jR3JlZ29yIDxkYW4ubWNncmVnb3JAdXNhc2suY2E+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICB8IDIgKysKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICB8IDcgKysrKysrKwotIHNyYy9iYXNpYy91c2VyLXV0aWwuYyAgICAgIHwgNCArKy0tCi0gc3JjL25zcGF3bi9uc3Bhd24uYyAgICAgICAgfCA0ICsrLS0KLSB1bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbiB8IDQgKystLQotIHVuaXRzL3Jlc2N1ZS5zZXJ2aWNlLmluICAgIHwgNCArKy0tCi0gNiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMWJjZDkzMmMyLi5jMmI0YTk5ZDIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yMjYsNiArMjI2LDcgQEAgQU1fQ1BQRkxBR1MgPSBcCi0gCS1ETElCRElSPVwiJChsaWJkaXIpXCIgXAotIAktRFJPT1RMSUJESVI9XCIkKHJvb3RsaWJkaXIpXCIgXAotIAktRFJPT1RMSUJFWEVDRElSPVwiJChyb290bGliZXhlY2RpcilcIiBcCi0rCS1EUk9PVEhPTUVESVI9XCIkKHJvb3Rob21lZGlyKVwiIFwKLSAJLUkgJCh0b3Bfc3JjZGlyKS9zcmMgXAotIAktSSAkKHRvcF9idWlsZGRpcikvc3JjL2Jhc2ljIFwKLSAJLUkgJCh0b3Bfc3JjZGlyKS9zcmMvYmFzaWMgXAotQEAgLTYzNTYsNiArNjM1Nyw3IEBAIHN1YnN0aXR1dGlvbnMgPSBcCi0gICAgICAgICd8cm9vdGxpYmRpcj0kKHJvb3RsaWJkaXIpfCcgXAotICAgICAgICAnfHJvb3RsaWJleGVjZGlyPSQocm9vdGxpYmV4ZWNkaXIpfCcgXAotICAgICAgICAnfHJvb3RiaW5kaXI9JChyb290YmluZGlyKXwnIFwKLSsgICAgICAgJ3xyb290aG9tZWRpcj0kKHJvb3Rob21lZGlyKXwnIFwKLSAgICAgICAgJ3xiaW5kaXI9JChiaW5kaXIpfCcgXAotICAgICAgICAnfFNZU1RFTUNUTD0kKHJvb3RiaW5kaXIpL3N5c3RlbWN0bHwnIFwKLSAgICAgICAgJ3xTWVNURU1EX05PVElGWT0kKHJvb3RiaW5kaXIpL3N5c3RlbWQtbm90aWZ5fCcgXAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMDM1NGZmZTZhLi5iNTNjYTFmMWEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE2NDEsNiArMTY0MSwxMSBAQCBBQ19BUkdfV0lUSChbcm9vdGxpYmRpcl0sCi0gICAgICAgICBbd2l0aF9yb290bGliZGlyPSR7bGliZGlyfV0pCi0gQVhfTk9STUFMSVpFX1BBVEgoW3dpdGhfcm9vdGxpYmRpcl0pCi0gCi0rQUNfQVJHX1dJVEgoW3Jvb3Rob21lZGlyXSwKLSsgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcm9vdGhvbWVkaXI9RElSXSwgW0hvbWUgZGlyZWN0b3J5IGZvciB0aGUgcm9vdCB1c2VyXSksCi0rICAgICAgICBbXSwKLSsgICAgICAgIFt3aXRoX3Jvb3Rob21lZGlyPS9yb290XSkKLSsKLSBBQ19BUkdfV0lUSChbcGFtbGliZGlyXSwKLSAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGFtbGliZGlyPURJUl0sIFtkaXJlY3RvcnkgZm9yIFBBTSBtb2R1bGVzXSksCi0gICAgICAgICBbXSwKLUBAIC0xNzMzLDYgKzE3MzgsNyBAQCBBQ19TVUJTVChbcGFtY29uZmRpcl0sIFskd2l0aF9wYW1jb25mZGlyXSkKLSBBQ19TVUJTVChbcnBtbWFjcm9zZGlyXSwgWyR3aXRoX3JwbW1hY3Jvc2Rpcl0pCi0gQUNfU1VCU1QoW3Jvb3RwcmVmaXhdLCBbJHdpdGhfcm9vdHByZWZpeF0pCi0gQUNfU1VCU1QoW3Jvb3RsaWJkaXJdLCBbJHdpdGhfcm9vdGxpYmRpcl0pCi0rQUNfU1VCU1QoW3Jvb3Rob21lZGlyXSwgWyR3aXRoX3Jvb3Rob21lZGlyXSkKLSAKLSBBQ19DT05GSUdfRklMRVMoWwotICAgICAgICAgTWFrZWZpbGUKLUBAIC0xODI5LDYgKzE4MzUsNyBAQCBBQ19NU0dfUkVTVUxUKFsKLSAgICAgICAgIGluY2x1ZGVkaXI6ICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfQotICAgICAgICAgbGliIGRpcjogICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0KLSAgICAgICAgIHJvb3RsaWIgZGlyOiAgICAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3Jvb3RsaWJkaXJ9Ci0rICAgICAgICByb290IGhvbWUgZGlyOiAgICAgICAgICAgICAgICAgICAgICR7d2l0aF9yb290aG9tZWRpcn0KLSAgICAgICAgIFN5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgJHtTWVNURU1fU1lTVklOSVRfUEFUSH0KLSAgICAgICAgIFN5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAgICAgICAgICAgJHtTWVNURU1fU1lTVlJDTkRfUEFUSH0KLSAgICAgICAgIGJ1aWxkIFB5dGhvbjogICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT059Ci1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3VzZXItdXRpbC5jIGIvc3JjL2Jhc2ljL3VzZXItdXRpbC5jCi1pbmRleCBjNjE5ZGFkNTIuLjY2MjY4MmFkZiAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy91c2VyLXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL3VzZXItdXRpbC5jCi1AQCAtMTI5LDcgKzEyOSw3IEBAIGludCBnZXRfdXNlcl9jcmVkcygKLSAgICAgICAgICAgICAgICAgICAgICAgICAqZ2lkID0gMDsKLSAKLSAgICAgICAgICAgICAgICAgaWYgKGhvbWUpCi0tICAgICAgICAgICAgICAgICAgICAgICAgKmhvbWUgPSAiL3Jvb3QiOwotKyAgICAgICAgICAgICAgICAgICAgICAgICpob21lID0gUk9PVEhPTUVESVI7Ci0gCi0gICAgICAgICAgICAgICAgIGlmIChzaGVsbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAqc2hlbGwgPSAiL2Jpbi9zaCI7Ci1AQCAtMzg5LDcgKzM4OSw3IEBAIGludCBnZXRfaG9tZV9kaXIoY2hhciAqKl9oKSB7Ci0gICAgICAgICAvKiBIYXJkY29kZSBob21lIGRpcmVjdG9yeSBmb3Igcm9vdCB0byBhdm9pZCBOU1MgKi8KLSAgICAgICAgIHUgPSBnZXR1aWQoKTsKLSAgICAgICAgIGlmICh1ID09IDApIHsKLS0gICAgICAgICAgICAgICAgaCA9IHN0cmR1cCgiL3Jvb3QiKTsKLSsgICAgICAgICAgICAgICAgaCA9IHN0cmR1cChST09USE9NRURJUik7Ci0gICAgICAgICAgICAgICAgIGlmICghaCkKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvbnNwYXduL25zcGF3bi5jIGIvc3JjL25zcGF3bi9uc3Bhd24uYwotaW5kZXggOGE1ZmVkZDRiLi43YjAxZWMwNzggMTAwNjQ0Ci0tLS0gYS9zcmMvbnNwYXduL25zcGF3bi5jCi0rKysgYi9zcmMvbnNwYXduL25zcGF3bi5jCi1AQCAtMjI5MSw3ICsyMjkxLDcgQEAgc3RhdGljIGludCBpbm5lcl9jaGlsZCgKLSAgICAgICAgIGlmIChlbnZwW25fZW52XSkKLSAgICAgICAgICAgICAgICAgbl9lbnYrKzsKLSAKLS0gICAgICAgIGlmICgoYXNwcmludGYoKGNoYXIqKikoZW52cCArIG5fZW52KyspLCAiSE9NRT0lcyIsIGhvbWUgPyBob21lOiAiL3Jvb3QiKSA8IDApIHx8Ci0rICAgICAgICBpZiAoKGFzcHJpbnRmKChjaGFyKiopKGVudnAgKyBuX2VudisrKSwgIkhPTUU9JXMiLCBob21lID8gaG9tZTogUk9PVEhPTUVESVIpIDwgMCkgfHwKLSAgICAgICAgICAgICAoYXNwcmludGYoKGNoYXIqKikoZW52cCArIG5fZW52KyspLCAiVVNFUj0lcyIsIGFyZ191c2VyID8gYXJnX3VzZXIgOiAicm9vdCIpIDwgMCkgfHwKLSAgICAgICAgICAgICAoYXNwcmludGYoKGNoYXIqKikoZW52cCArIG5fZW52KyspLCAiTE9HTkFNRT0lcyIsIGFyZ191c2VyID8gYXJnX3VzZXIgOiAicm9vdCIpIDwgMCkpCi0gICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7Ci1AQCAtMjM3Myw3ICsyMzczLDcgQEAgc3RhdGljIGludCBpbm5lcl9jaGlsZCgKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgIGlmICghYXJnX2NoZGlyKQotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHdlIGNhbm5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSwgd2UnbGwgZW5kIHVwIGluIC8sIHRoYXQgaXMgZXhwZWN0ZWQuICovCi0tICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGNoZGlyKGhvbWUgPzogIi9yb290Iik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGNoZGlyKGhvbWUgPzogUk9PVEhPTUVESVIpOwotIAotICAgICAgICAgICAgICAgICBleGVjbGUoIi9iaW4vYmFzaCIsICItYmFzaCIsIE5VTEwsIGVudl91c2UpOwotICAgICAgICAgICAgICAgICBleGVjbGUoIi9iaW4vc2giLCAiLXNoIiwgTlVMTCwgZW52X3VzZSk7Ci1kaWZmIC0tZ2l0IGEvdW5pdHMvZW1lcmdlbmN5LnNlcnZpY2UuaW4gYi91bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbgotaW5kZXggZTllYjIzOGI5Li4zMjU4OGU0OGEgMTAwNjQ0Ci0tLS0gYS91bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbgotKysrIGIvdW5pdHMvZW1lcmdlbmN5LnNlcnZpY2UuaW4KLUBAIC0xNSw4ICsxNSw4IEBAIENvbmZsaWN0cz1zeXNsb2cuc29ja2V0Ci0gQmVmb3JlPXNodXRkb3duLnRhcmdldAotIAotIFtTZXJ2aWNlXQotLUVudmlyb25tZW50PUhPTUU9L3Jvb3QKLS1Xb3JraW5nRGlyZWN0b3J5PS0vcm9vdAotK0Vudmlyb25tZW50PUhPTUU9QHJvb3Rob21lZGlyQAotK1dvcmtpbmdEaXJlY3Rvcnk9LUByb290aG9tZWRpckAKLSBFeGVjU3RhcnQ9LUByb290bGliZXhlY2RpckAvc3lzdGVtZC1zdWxvZ2luLXNoZWxsIGVtZXJnZW5jeQotIFR5cGU9aWRsZQotIFN0YW5kYXJkSW5wdXQ9dHR5LWZvcmNlCi1kaWZmIC0tZ2l0IGEvdW5pdHMvcmVzY3VlLnNlcnZpY2UuaW4gYi91bml0cy9yZXNjdWUuc2VydmljZS5pbgotaW5kZXggNGFiNjZmNDg1Li5iZDk4OThmMmMgMTAwNjQ0Ci0tLS0gYS91bml0cy9yZXNjdWUuc2VydmljZS5pbgotKysrIGIvdW5pdHMvcmVzY3VlLnNlcnZpY2UuaW4KLUBAIC0xNCw4ICsxNCw4IEBAIEFmdGVyPXN5c2luaXQudGFyZ2V0IHBseW1vdXRoLXN0YXJ0LnNlcnZpY2UKLSBCZWZvcmU9c2h1dGRvd24udGFyZ2V0Ci0gCi0gW1NlcnZpY2VdCi0tRW52aXJvbm1lbnQ9SE9NRT0vcm9vdAotLVdvcmtpbmdEaXJlY3Rvcnk9LS9yb290Ci0rRW52aXJvbm1lbnQ9SE9NRT1Acm9vdGhvbWVkaXJACi0rV29ya2luZ0RpcmVjdG9yeT0tQHJvb3Rob21lZGlyQAotIEV4ZWNTdGFydD0tQHJvb3RsaWJleGVjZGlyQC9zeXN0ZW1kLXN1bG9naW4tc2hlbGwgcmVzY3VlCi0gVHlwZT1pZGxlCi0gU3RhbmRhcmRJbnB1dD10dHktZm9yY2UKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzkyNzhkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNDMxIEBACitGcm9tIDU4MGQyM2NmMGIzMmUzNmE4ZmI5NjcxMDMzNmZmZWY0MzJiM2M3Y2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjEwOjU4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFkZCBmYWxsYmFjayBwYXJzZV9wcmludGZfZm9ybWF0IGltcGxlbWVudGF0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKKyBzcmMvYmFzaWMvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICA0ICsKKyBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIHwgIDU3ICsrKysrKysrKworIHNyYy9iYXNpYy9zdGRpby11dGlsLmggICAgICAgICAgfCAgIDIgKy0KKyBzcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyAgICAgIHwgICAyICstCisgNiBmaWxlcyBjaGFuZ2VkLCAzMzcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA5NGExNjcxMmIuLjRlYWJhYWZlOCAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTYyMCw2ICs2MjAsNyBAQCBmb3JlYWNoIGhlYWRlciA6IFsnY3J5cHQuaCcsCisgICAgICAgICAgICAgICAgICAgJ2xpbnV4L2J0cmZzLmgnLAorICAgICAgICAgICAgICAgICAgICdsaW51eC9tZW1mZC5oJywKKyAgICAgICAgICAgICAgICAgICAnbGludXgvdm1fc29ja2V0cy5oJywKKysgICAgICAgICAgICAgICAgICAncHJpbnRmLmgnLAorICAgICAgICAgICAgICAgICAgICdzeXMvYXV4di5oJywKKyAgICAgICAgICAgICAgICAgICAndmFsZ3JpbmQvbWVtY2hlY2suaCcsCisgICAgICAgICAgICAgICAgICAgJ3ZhbGdyaW5kL3ZhbGdyaW5kLmgnLAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9tZXNvbi5idWlsZCBiL3NyYy9iYXNpYy9tZXNvbi5idWlsZAoraW5kZXggNDRjZDMxZWNiLi40MzVjNmVlMDIgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWVzb24uYnVpbGQKKysrKyBiL3NyYy9iYXNpYy9tZXNvbi5idWlsZAorQEAgLTMxMCw2ICszMTAsMTAgQEAgZW5kZm9yZWFjaAorIAorIGJhc2ljX3NvdXJjZXMgKz0gW21pc3NpbmdfaF0gKyBnZW5lcmF0ZWRfZ3BlcmZfaGVhZGVycworIAorK2lmIGNvbmYuZ2V0KCdIQVZFX1BSSU5URl9IJykgIT0gMQorKyAgICAgICAgYmFzaWNfc291cmNlcyArPSBbZmlsZXMoJ3BhcnNlLXByaW50Zi1mb3JtYXQuYycpXQorK2VuZGlmCisrCisgbGliYmFzaWMgPSBzdGF0aWNfbGlicmFyeSgKKyAgICAgICAgICdiYXNpYycsCisgICAgICAgICBiYXNpY19zb3VyY2VzLAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi40OTQzN2U1NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKK0BAIC0wLDAgKzEsMjczIEBACisrLyotKi0gTW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDg7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0qLworKworKy8qKioKKysgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHN5c3RlbWQuCisrCisrICBDb3B5cmlnaHQgMjAxNCBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KKysKKysgIFdpdGggcGFydHMgZnJvbSB0aGUgbXVzbCBDIGxpYnJhcnkKKysgIENvcHlyaWdodCAyMDA1LTIwMTQgUmljaCBGZWxrZXIsIGV0IGFsLgorKworKyAgc3lzdGVtZCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKKysgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICBzeXN0ZW1kIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorKyAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKioqLworKworKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKKysKKytzdGF0aWMgY29uc3QgY2hhciAqY29uc3VtZV9ub25hcmcoY29uc3QgY2hhciAqZm10KQorK3sKKysgICAgICAgIGRvIHsKKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJ1wwJykKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgfSB3aGlsZSAoKmZtdCsrICE9ICclJyk7CisrICAgICAgICByZXR1cm4gZm10OworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciAqY29uc3VtZV9udW0oY29uc3QgY2hhciAqZm10KQorK3sKKysgICAgICAgIGZvciAoOypmbXQgPj0gJzAnICYmICpmbXQgPD0gJzknOyBmbXQrKykKKysgICAgICAgICAgICAgICAgLyogZG8gbm90aGluZyAqLzsKKysgICAgICAgIHJldHVybiBmbXQ7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX2FyZ24oY29uc3QgY2hhciAqZm10LCBzaXplX3QgKmFyZykKKyt7CisrICAgICAgICBjb25zdCBjaGFyICpwID0gZm10OworKyAgICAgICAgc2l6ZV90IHZhbCA9IDA7CisrCisrICAgICAgICBpZiAoKnAgPCAnMScgfHwgKnAgPiAnOScpCisrICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICBkbyB7CisrICAgICAgICAgICAgICAgIHZhbCA9IDEwKnZhbCArICgqcCsrIC0gJzAnKTsKKysgICAgICAgIH0gd2hpbGUgKCpwID49ICcwJyAmJiAqcCA8PSAnOScpOworKworKyAgICAgICAgaWYgKCpwICE9ICckJykKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgICphcmcgPSB2YWw7CisrICAgICAgICByZXR1cm4gcCsxOworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciAqY29uc3VtZV9mbGFncyhjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgd2hpbGUgKDEpIHsKKysgICAgICAgICAgICAgICAgc3dpdGNoICgqZm10KSB7CisrICAgICAgICAgICAgICAgIGNhc2UgJyMnOgorKyAgICAgICAgICAgICAgICBjYXNlICcwJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnLSc6CisrICAgICAgICAgICAgICAgIGNhc2UgJyAnOgorKyAgICAgICAgICAgICAgICBjYXNlICcrJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnXCcnOgorKyAgICAgICAgICAgICAgICBjYXNlICdJJzoKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgfQorK30KKysKKytlbnVtIHN0YXRlIHsKKysgICAgICAgIEJBUkUsCisrICAgICAgICBMUFJFLAorKyAgICAgICAgTExQUkUsCisrICAgICAgICBIUFJFLAorKyAgICAgICAgSEhQUkUsCisrICAgICAgICBCSUdMUFJFLAorKyAgICAgICAgWlRQUkUsCisrICAgICAgICBKUFJFLAorKyAgICAgICAgU1RPUAorK307CisrCisrZW51bSB0eXBlIHsKKysgICAgICAgIE5PTkUsCisrICAgICAgICBQVFIsCisrICAgICAgICBJTlQsCisrICAgICAgICBVSU5ULAorKyAgICAgICAgVUxMT05HLAorKyAgICAgICAgTE9ORywKKysgICAgICAgIFVMT05HLAorKyAgICAgICAgU0hPUlQsCisrICAgICAgICBVU0hPUlQsCisrICAgICAgICBDSEFSLAorKyAgICAgICAgVUNIQVIsCisrICAgICAgICBMTE9ORywKKysgICAgICAgIFNJWkVULAorKyAgICAgICAgSU1BWCwKKysgICAgICAgIFVNQVgsCisrICAgICAgICBQRElGRiwKKysgICAgICAgIFVJUFRSLAorKyAgICAgICAgREJMLAorKyAgICAgICAgTERCTCwKKysgICAgICAgIE1BWFRZUEUKKyt9OworKworK3N0YXRpYyBjb25zdCBzaG9ydCBwYV90eXBlc1tNQVhUWVBFXSA9IHsKKysgICAgICAgIFtOT05FXSAgID0gUEFfSU5ULAorKyAgICAgICAgW1BUUl0gICAgPSBQQV9QT0lOVEVSLAorKyAgICAgICAgW0lOVF0gICAgPSBQQV9JTlQsCisrICAgICAgICBbVUlOVF0gICA9IFBBX0lOVCwKKysgICAgICAgIFtVTExPTkddID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbTE9OR10gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtVTE9OR10gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW1NIT1JUXSAgPSBQQV9JTlQgfCBQQV9GTEFHX1NIT1JULAorKyAgICAgICAgW1VTSE9SVF0gPSBQQV9JTlQgfCBQQV9GTEFHX1NIT1JULAorKyAgICAgICAgW0NIQVJdICAgPSBQQV9DSEFSLAorKyAgICAgICAgW1VDSEFSXSAgPSBQQV9DSEFSLAorKyAgICAgICAgW0xMT05HXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtTSVpFVF0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW0lNQVhdICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtVTUFYXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbUERJRkZdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1VJUFRSXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbREJMXSAgICA9IFBBX0RPVUJMRSwKKysgICAgICAgIFtMREJMXSAgID0gUEFfRE9VQkxFIHwgUEFfRkxBR19MT05HX0RPVUJMRQorK307CisrCisrI2RlZmluZSBTKHgpIFsoeCktJ0EnXQorKyNkZWZpbmUgRSh4KSAoU1RPUCArICh4KSkKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzdGF0ZXNbXVsneictJ0EnKzFdID0geworKyAgICAgICAgeyAvKiAwOiBiYXJlIHR5cGVzICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoSU5UKSwgUygnaScpID0gRShJTlQpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVJTlQpLFMoJ3UnKSA9IEUoVUlOVCksUygneCcpID0gRShVSU5UKSwgUygnWCcpID0gRShVSU5UKSwKKysgICAgICAgICAgICAgICAgUygnZScpID0gRShEQkwpLCBTKCdmJykgPSBFKERCTCksIFMoJ2cnKSA9IEUoREJMKSwgIFMoJ2EnKSA9IEUoREJMKSwKKysgICAgICAgICAgICAgICAgUygnRScpID0gRShEQkwpLCBTKCdGJykgPSBFKERCTCksIFMoJ0cnKSA9IEUoREJMKSwgIFMoJ0EnKSA9IEUoREJMKSwKKysgICAgICAgICAgICAgICAgUygnYycpID0gRShDSEFSKSxTKCdDJykgPSBFKElOVCksCisrICAgICAgICAgICAgICAgIFMoJ3MnKSA9IEUoUFRSKSwgUygnUycpID0gRShQVFIpLCBTKCdwJykgPSBFKFVJUFRSKSxTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ20nKSA9IEUoTk9ORSksCisrICAgICAgICAgICAgICAgIFMoJ2wnKSA9IExQUkUsICAgUygnaCcpID0gSFBSRSwgUygnTCcpID0gQklHTFBSRSwKKysgICAgICAgICAgICAgICAgUygneicpID0gWlRQUkUsICBTKCdqJykgPSBKUFJFLCBTKCd0JykgPSBaVFBSRQorKyAgICAgICAgfSwgeyAvKiAxOiBsLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoTE9ORyksIFMoJ2knKSA9IEUoTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUxPTkcpLFMoJ3UnKSA9IEUoVUxPTkcpLFMoJ3gnKSA9IEUoVUxPTkcpLFMoJ1gnKSA9IEUoVUxPTkcpLAorKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKERCTCksICBTKCdmJykgPSBFKERCTCksICBTKCdnJykgPSBFKERCTCksICBTKCdhJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoREJMKSwgIFMoJ0YnKSA9IEUoREJMKSwgIFMoJ0cnKSA9IEUoREJMKSwgIFMoJ0EnKSA9IEUoREJMKSwKKysgICAgICAgICAgICAgICAgUygnYycpID0gRShJTlQpLCAgUygncycpID0gRShQVFIpLCAgUygnbicpID0gRShQVFIpLAorKyAgICAgICAgICAgICAgICBTKCdsJykgPSBMTFBSRQorKyAgICAgICAgfSwgeyAvKiAyOiBsbC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKExMT05HKSwgUygnaScpID0gRShMTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUxMT05HKSxTKCd1JykgPSBFKFVMTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVUxMT05HKSxTKCdYJykgPSBFKFVMTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiAzOiBoLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoU0hPUlQpLCBTKCdpJykgPSBFKFNIT1JUKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVU0hPUlQpLFMoJ3UnKSA9IEUoVVNIT1JUKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVU0hPUlQpLFMoJ1gnKSA9IEUoVVNIT1JUKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpLAorKyAgICAgICAgICAgICAgICBTKCdoJykgPSBISFBSRQorKyAgICAgICAgfSwgeyAvKiA0OiBoaC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKENIQVIpLCBTKCdpJykgPSBFKENIQVIpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVDSEFSKSxTKCd1JykgPSBFKFVDSEFSKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVQ0hBUiksUygnWCcpID0gRShVQ0hBUiksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiA1OiBMLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoTERCTCksUygnZicpID0gRShMREJMKSxTKCdnJykgPSBFKExEQkwpLCBTKCdhJykgPSBFKExEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKExEQkwpLFMoJ0YnKSA9IEUoTERCTCksUygnRycpID0gRShMREJMKSwgUygnQScpID0gRShMREJMKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDY6IHotIG9yIHQtcHJlZml4ZWQgKGFzc3VtZWQgdG8gYmUgc2FtZSBzaXplKSAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKFBESUZGKSxTKCdpJykgPSBFKFBESUZGKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShTSVpFVCksUygndScpID0gRShTSVpFVCksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoU0laRVQpLFMoJ1gnKSA9IEUoU0laRVQpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogNzogai1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKElNQVgpLCBTKCdpJykgPSBFKElNQVgpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVNQVgpLCBTKCd1JykgPSBFKFVNQVgpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVNQVgpLCBTKCdYJykgPSBFKFVNQVgpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0KKyt9OworKworK3NpemVfdCBwYXJzZV9wcmludGZfZm9ybWF0KGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90IG4sIGludCAqdHlwZXMpCisreworKyAgICAgICAgc2l6ZV90IGkgPSAwOworKyAgICAgICAgc2l6ZV90IGxhc3QgPSAwOworKworKyAgICAgICAgbWVtc2V0KHR5cGVzLCAwLCBuKTsKKysKKysgICAgICAgIHdoaWxlICgxKSB7CisrICAgICAgICAgICAgICAgIHNpemVfdCBhcmc7CisrICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGF0ZTsKKysKKysgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9ub25hcmcoZm10KTsKKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJ1wwJykKKysgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyUnKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgYXJnID0gMDsKKysgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCwgJmFyZyk7CisrICAgICAgICAgICAgICAgIC8qIGZsYWdzICovCisrICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfZmxhZ3MoZm10KTsKKysgICAgICAgICAgICAgICAgLyogd2lkdGggKi8KKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyonKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHdhcmcgPSAwOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQrMSwgJndhcmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3YXJnID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJnID0gKytpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3YXJnID4gbGFzdCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSB3YXJnOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3YXJnIDw9IG4gJiYgdHlwZXNbd2FyZy0xXSA9PSBOT05FKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbd2FyZy0xXSA9IElOVDsKKysgICAgICAgICAgICAgICAgfSBlbHNlCisrICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9udW0oZm10KTsKKysgICAgICAgICAgICAgICAgLyogcHJlY2lzaW9uICovCisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcuJykgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcqJykgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhcmcgPSAwOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCsxLCAmcGFyZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJnID0gKytpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPiBsYXN0KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gcGFyZzsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnIDw9IG4gJiYgdHlwZXNbcGFyZy0xXSA9PSBOT05FKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1twYXJnLTFdID0gSU5UOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnLScpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9udW0oZm10KTsKKysgICAgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG1vZGlmaWVyIGFuZCBjb252ZXJzaW9uIHNwZWNpZmllciAqLworKyAgICAgICAgICAgICAgICBzdGF0ZSA9IEJBUkU7CisrICAgICAgICAgICAgICAgIGRvIHsKKysgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAqZm10Kys7CisrCisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPCAnQScgfHwgYyA+ICd6JykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gc3RhdGVzW3N0YXRlXVMoYyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfSB3aGlsZSAoc3RhdGUgPCBTVE9QKTsKKysKKysgICAgICAgICAgICAgICAgaWYgKHN0YXRlID09IEUoTk9ORSkpCisrICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrCisrICAgICAgICAgICAgICAgIGlmIChhcmcgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgIGlmIChhcmcgPiBsYXN0KQorKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBhcmc7CisrICAgICAgICAgICAgICAgIGlmIChhcmcgPD0gbikKKysgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1thcmctMV0gPSBzdGF0ZSAtIFNUT1A7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAobGFzdCA+IG4pCisrICAgICAgICAgICAgICAgIGxhc3QgPSBuOworKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxhc3Q7IGkrKykKKysgICAgICAgICAgICAgICAgdHlwZXNbaV0gPSBwYV90eXBlc1t0eXBlc1tpXV07CisrCisrICAgICAgICByZXR1cm4gbGFzdDsKKyt9CitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaCBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLjQ3YmU3NTIyZAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAorQEAgLTAsMCArMSw1NyBAQAorKy8qLSotIE1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA4OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotKi8KKysKKysvKioqCisrICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzeXN0ZW1kLgorKworKyAgQ29weXJpZ2h0IDIwMTQgRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CisrCisrICBXaXRoIHBhcnRzIGZyb20gdGhlIEdOVSBDIExpYnJhcnkKKysgIENvcHlyaWdodCAxOTkxLTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICBzeXN0ZW1kIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgIHN5c3RlbWQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisrICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqKiovCisrCisrI3ByYWdtYSBvbmNlCisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKworKyNpZiBIQVZFX1BSSU5URl9ICisrI2luY2x1ZGUgPHByaW50Zi5oPgorKyNlbHNlCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKworK2VudW0gewkJCQkvKiBDIHR5cGU6ICovCisrICBQQV9JTlQsCQkJLyogaW50ICovCisrICBQQV9DSEFSLAkJCS8qIGludCwgY2FzdCB0byBjaGFyICovCisrICBQQV9XQ0hBUiwJCQkvKiB3aWRlIGNoYXIgKi8KKysgIFBBX1NUUklORywJCQkvKiBjb25zdCBjaGFyICosIGEgJ1wwJy10ZXJtaW5hdGVkIHN0cmluZyAqLworKyAgUEFfV1NUUklORywJCQkvKiBjb25zdCB3Y2hhcl90ICosIHdpZGUgY2hhcmFjdGVyIHN0cmluZyAqLworKyAgUEFfUE9JTlRFUiwJCQkvKiB2b2lkICogKi8KKysgIFBBX0ZMT0FULAkJCS8qIGZsb2F0ICovCisrICBQQV9ET1VCTEUsCQkJLyogZG91YmxlICovCisrICBQQV9MQVNUCisrfTsKKysKKysvKiBGbGFnIGJpdHMgdGhhdCBjYW4gYmUgc2V0IGluIGEgdHlwZSByZXR1cm5lZCBieSBgcGFyc2VfcHJpbnRmX2Zvcm1hdCcuICAqLworKyNkZWZpbmUJUEFfRkxBR19NQVNLCQkweGZmMDAKKysjZGVmaW5lCVBBX0ZMQUdfTE9OR19MT05HCSgxIDw8IDgpCisrI2RlZmluZQlQQV9GTEFHX0xPTkdfRE9VQkxFCVBBX0ZMQUdfTE9OR19MT05HCisrI2RlZmluZQlQQV9GTEFHX0xPTkcJCSgxIDw8IDkpCisrI2RlZmluZQlQQV9GTEFHX1NIT1JUCQkoMSA8PCAxMCkKKysjZGVmaW5lCVBBX0ZMQUdfUFRSCQkoMSA8PCAxMSkKKysKKytzaXplX3QgcGFyc2VfcHJpbnRmX2Zvcm1hdChjb25zdCBjaGFyICpmbXQsIHNpemVfdCBuLCBpbnQgKnR5cGVzKTsKKysKKysjZW5kaWYgLyogSEFWRV9QUklOVEZfSCAqLworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zdGRpby11dGlsLmggYi9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCitpbmRleCBkYmZhZmJhMjYuLjgwMzgzODBkNiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKKysrKyBiL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKK0BAIC0yMCwxMiArMjAsMTIgQEAKKyAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoqKi8KKyAKKy0jaW5jbHVkZSA8cHJpbnRmLmg+CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKKyAjaW5jbHVkZSAibWFjcm8uaCIKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorIAorICNkZWZpbmUgeHNwcmludGYoYnVmLCBmbXQsIC4uLikgXAorICAgICAgICAgYXNzZXJ0X21lc3NhZ2Vfc2UoKHNpemVfdCkgc25wcmludGYoYnVmLCBFTEVNRU5UU09GKGJ1ZiksIGZtdCwgX19WQV9BUkdTX18pIDwgRUxFTUVOVFNPRihidWYpLCAieHNwcmludGY6ICIgI2J1ZiAiW10gbXVzdCBiZSBiaWcgZW5vdWdoIikKK2RpZmYgLS1naXQgYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCitpbmRleCA3MzMyOWJhMDIuLjcwYmI5ZTBlOCAxMDA2NDQKKy0tLSBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCisrKysgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYworQEAgLTIwLDcgKzIwLDYgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKy0jaW5jbHVkZSA8cHJpbnRmLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgI2luY2x1ZGUgPHN5cy91bi5oPgorQEAgLTM5LDYgKzM4LDcgQEAKKyAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJ1dGlsLmgiCisrI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKKyAKKyAjZGVmaW5lIFNOREJVRl9TSVpFICg4KjEwMjQqMTAyNCkKKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMTk5ODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDRiNjczMzU0NGJlYjY2MmEwZjc3MzEwMzAyZmFlMWZiN2I3NmQxNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxMiBTZXAgMjAxNSAxODo1MzozMSArMDAwMAotU3ViamVjdDogW1BBVENIIDEzLzEzXSBjb21wYXJpc29uX2ZuX3QgaXMgZ2xpYmMgc3BlY2lmaWMsIHVzZSByYXcgc2lnbmF0dXJlIGluCi0gZnVuY3Rpb24gcG9pbnRlcgotCi1tYWtlIGl0IHdvcmsgd2l0aCBtdXNsIHdoZXJlIGNvbXBhcmlzb25fZm5fdCBpcyBub3QgcHJvdmlkZWQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvYmFzaWMvdXRpbC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3V0aWwuaCBiL3NyYy9iYXNpYy91dGlsLmgKLWluZGV4IGM3ZGE2YzM5Yi4uODdmNjJiODkxIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3V0aWwuaAotKysrIGIvc3JjL2Jhc2ljL3V0aWwuaAotQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCAqeGJzZWFyY2hfcihjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsCi0gICogTm9ybWFsIHFzb3J0IHJlcXVpcmVzIGJhc2UgdG8gYmUgbm9ubnVsbC4gSGVyZSB3ZXJlIHJlcXVpcmUKLSAgKiB0aGF0IG9ubHkgaWYgbm1lbWIgPiAwLgotICAqLwotLXN0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGNvbXBhcmlzb25fZm5fdCBjb21wYXIpIHsKLStzdGF0aWMgaW5saW5lIHZvaWQgcXNvcnRfc2FmZSh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBpbnQgKCpjb21wYXIpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgewotICAgICAgICAgaWYgKG5tZW1iIDw9IDEpCi0gICAgICAgICAgICAgICAgIHJldHVybjsKLSAKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDdjNjhmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDBmNDdjZmNiMTZlOGU0MGE5MGE5MjIxZjk5OTVmOGNkOGE5MTVjMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDE5IE1hciAyMDE1IDE1OjAxOjI5ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMTldIFJldmVydCAicnVsZXM6IHJlbW92ZSBmaXJtd2FyZSBsb2FkaW5nIHJ1bGVzIgotCi1UaGlzIHJldmVydHMgY29tbWl0IDcwZTdkNzU0ZGRiMzU2ZmIxYTI5NDJiMjYyZjhjZWU5NjUwZTJhMTkuCi1Vc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgTGludXggPCAzLjcuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KLS0tLQotIHJ1bGVzLzUwLWZpcm13YXJlLnJ1bGVzIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1bGVzLzUwLWZpcm13YXJlLnJ1bGVzCi0KLWRpZmYgLS1naXQgYS9ydWxlcy81MC1maXJtd2FyZS5ydWxlcyBiL3J1bGVzLzUwLWZpcm13YXJlLnJ1bGVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjBhZTY4NAotLS0tIC9kZXYvbnVsbAotKysrIGIvcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKLUBAIC0wLDAgKzEsMyBAQAotKyMgZG8gbm90IGVkaXQgdGhpcyBmaWxlLCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuIG9uIHVwZGF0ZQotKwotK1NVQlNZU1RFTT09ImZpcm13YXJlIiwgQUNUSU9OPT0iYWRkIiwgUlVOe2J1aWx0aW59PSJmaXJtd2FyZSIKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY2MmNiYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCkBAIC0wLDAgKzEsMTE4IEBACitGcm9tIDMzYmU5MDUyMzE1Y2M0ZWM4ZTkyOWZhMjM4ZTFmMGNjMDE2MWFkMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjE1OjI4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNyYy9iYXNpYy9taXNzaW5nLmg6IGNoZWNrIGZvciBtaXNzaW5nIHN0cm5kdXBhCisKK2luY2x1ZGUgbWlzc2luZy5oICBmb3IgZGVmaW5pdGlvbiBvZiBzdHJuZHVwYQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkICAgICAgICAgICAgIHwgIDEgKworIHNyYy9iYXNpYy9taXNzaW5nLmggICAgIHwgMTEgKysrKysrKysrKysKKyBzcmMvYmFzaWMvbWtkaXIuYyAgICAgICB8ICAxICsKKyBzcmMvYmFzaWMvcGFyc2UtdXRpbC5jICB8ICAxICsKKyBzcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYyB8ICAxICsKKyBzcmMvc2hhcmVkL3BhZ2VyLmMgICAgICB8ICAxICsKKyBzcmMvc2hhcmVkL3VpZC1yYW5nZS5jICB8ICAxICsKKyA3IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDRlYWJhYWZlOC4uMTI4MTFiM2YzIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNTI1LDYgKzUyNSw3IEBAIGZvcmVhY2ggaWRlbnQgOiBbCisgICAgICAgICBbJ2JwZicsICAgICAgICAgICAgICAgJycnI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHVuaXN0ZC5oPicnJ10sCisgICAgICAgICBbJ2V4cGxpY2l0X2J6ZXJvJyAsICAgJycnI2luY2x1ZGUgPHN0cmluZy5oPicnJ10sCisrICAgICAgICBbJ3N0cm5kdXBhJyAsICAgICAgICAgJycnI2luY2x1ZGUgPHN0cmluZy5oPicnJ10sCisgXQorIAorICAgICAgICAgaGF2ZSA9IGNjLmhhc19mdW5jdGlvbihpZGVudFswXSwgcHJlZml4IDogaWRlbnRbMV0sIGFyZ3MgOiAnLURfR05VX1NPVVJDRScpCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDg0ZDZkOTE2Ny4uMDdhOGM4MzY0IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTExODcsNiArMTE4NywxNyBAQCBzdHJ1Y3QgaW5wdXRfbWFzayB7CisgdHlwZWRlZiBpbnQzMl90IGtleV9zZXJpYWxfdDsKKyAjZW5kaWYKKyAKKysjaWYgISBIQVZFX1NUUk5EVVBBCisrI2RlZmluZSBzdHJuZHVwYShzLCBuKSBcCisrICAoeyBcCisrICAgIGNvbnN0IGNoYXIgKl9fb2xkID0gKHMpOyBcCisrICAgIHNpemVfdCBfX2xlbiA9IHN0cm5sZW4oX19vbGQsIChuKSk7IFwKKysgICAgY2hhciAqX19uZXcgPSAoY2hhciAqKWFsbG9jYShfX2xlbiArIDEpOyBcCisrICAgIF9fbmV3W19fbGVuXSA9ICdcMCc7IFwKKysgICAgKGNoYXIgKiltZW1jcHkoX19uZXcsIF9fb2xkLCBfX2xlbik7IFwKKysgIH0pCisrI2VuZGlmCisrCisgI2lmbmRlZiBLRVlDVExfSk9JTl9TRVNTSU9OX0tFWVJJTkcKKyAjZGVmaW5lIEtFWUNUTF9KT0lOX1NFU1NJT05fS0VZUklORyAxCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21rZGlyLmMgYi9zcmMvYmFzaWMvbWtkaXIuYworaW5kZXggZGU0NzQ2Yzg2Li5kNTE1MThhNWEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWtkaXIuYworKysrIGIvc3JjL2Jhc2ljL21rZGlyLmMKK0BAIC0zMCw2ICszMCw3IEBACisgI2luY2x1ZGUgInBhdGgtdXRpbC5oIgorICNpbmNsdWRlICJzdGF0LXV0aWwuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBpbnQgbWtkaXJfc2FmZV9pbnRlcm5hbChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIGJvb2wgZm9sbG93X3N5bWxpbmssIG1rZGlyX2Z1bmNfdCBfbWtkaXIpIHsKKyAgICAgICAgIHN0cnVjdCBzdGF0IHN0OworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCitpbmRleCAyYzIyNzUzZGUuLjk3NTMzNzIxZCAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKK0BAIC0zMyw2ICszMyw3IEBACisgI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKKyAjaW5jbHVkZSAicHJvY2Vzcy11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBpbnQgcGFyc2VfYm9vbGVhbihjb25zdCBjaGFyICp2KSB7CisgICAgICAgICBhc3NlcnQodik7CitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYworaW5kZXggOWJiNDJjYzdiLi4yM2JiZDllNjcgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKK0BAIC05LDYgKzksNyBAQAorICNpbmNsdWRlICJwcm9jZnMtdXRpbC5oIgorICNpbmNsdWRlICJzdGRpby11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBpbnQgcHJvY2ZzX3Rhc2tzX2dldF9saW1pdCh1aW50NjRfdCAqcmV0KSB7CisgICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICp2YWx1ZSA9IE5VTEw7CitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9wYWdlci5jIGIvc3JjL3NoYXJlZC9wYWdlci5jCitpbmRleCA3NWRiM2M5ODUuLjg0ZjA2YmY3ZCAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvcGFnZXIuYworKysrIGIvc3JjL3NoYXJlZC9wYWdlci5jCitAQCAtMzksNiArMzksNyBAQAorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJzdHJ2LmgiCisgI2luY2x1ZGUgInRlcm1pbmFsLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIHN0YXRpYyBwaWRfdCBwYWdlcl9waWQgPSAwOworIAorZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCitpbmRleCBjMzhiN2NjOTguLjhlYzZiZjA4ZCAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKKysrKyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKK0BAIC0yNSw2ICsyNSw3IEBACisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInVpZC1yYW5nZS5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIHN0YXRpYyBib29sIHVpZF9yYW5nZV9pbnRlcnNlY3QoVWlkUmFuZ2UgKnJhbmdlLCB1aWRfdCBzdGFydCwgdWlkX3QgbnIpIHsKKyAgICAgICAgIGFzc2VydChyYW5nZSk7CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTg3MWJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUxICswLDAgQEAKLUZyb20gNzg4Mzk4NWEzYTc4Njc3ZTlhMWQ1ZDYxZmU3ZmE4YmFkZjM5ZjU2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMjA6NDU6MjMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xNF0gUmV2ZXJ0ICJ1ZGV2OiByZW1vdmUgdXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcKLSBzdXBwb3J0IgotCi1UaGlzIHJldmVydHMgY29tbWl0IGJlMmVhNzIzYjFkMDIzYjNkMzg1ZDNiNzkxZWU0NjA3Y2JmYjIwY2EuCi1Vc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgTGludXggPCAzLjcuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLQotIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsrKwotIFJFQURNRSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCi0gVE9ETyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgIHwgIDE4ICsrKysrCi0gc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMgfCAxNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL3VkZXYvdWRldi1idWlsdGluLmMgICAgICAgICAgfCAgIDMgKwotIHNyYy91ZGV2L3VkZXYuaCAgICAgICAgICAgICAgICAgIHwgICA2ICsrCi0gc3JjL3VkZXYvdWRldmQuYyAgICAgICAgICAgICAgICAgfCAgMTMgKysrKwotIDggZmlsZXMgY2hhbmdlZCwgMjA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBjMmI0YTk5ZDIuLjY5MmQ3YmI5NSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTM5ODUsNiArMzk4NSwxOCBAQCBsaWJ1ZGV2X2NvcmVfbGFfTElCQUREID0gXAotIAkkKEJMS0lEX0xJQlMpIFwKLSAJJChLTU9EX0xJQlMpCi0gCi0rbGlidWRldl9jb3JlX2xhX0NQUEZMQUdTID0gXAotKwkkKEFNX0NQUEZMQUdTKSBcCi0rCS1ERklSTVdBUkVfUEFUSD0iJChGSVJNV0FSRV9QQVRIKSIKLSsKLStpZiBFTkFCTEVfRklSTVdBUkUKLStsaWJ1ZGV2X2NvcmVfbGFfU09VUkNFUyArPSBcCi0rCXNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCi0rCi0rZGlzdF91ZGV2cnVsZXNfREFUQSArPSBcCi0rCXJ1bGVzLzUwLWZpcm13YXJlLnJ1bGVzCi0rZW5kaWYKLSsKLSBpZiBIQVZFX0tNT0QKLSBsaWJ1ZGV2X2NvcmVfbGFfU09VUkNFUyArPSBcCi0gCXNyYy91ZGV2L3VkZXYtYnVpbHRpbi1rbW9kLmMKLWRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKLWluZGV4IDYwMzg4ZWViZS4uZTIxOTc2MzkzIDEwMDY0NAotLS0tIGEvUkVBRE1FCi0rKysgYi9SRUFETUUKLUBAIC02MSw4ICs2MSw4IEBAIFJFUVVJUkVNRU5UUzoKLSAgICAgICAgIExlZ2FjeSBob3RwbHVnIHNsb3dzIGRvd24gdGhlIHN5c3RlbSBhbmQgY29uZnVzZXMgdWRldjoKLSAgICAgICAgICAgQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iIgotIAotLSAgICAgICAgVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBhbmQgc2hvdWxkCi0tICAgICAgICBiZSBkaXNhYmxlZCBpbiB0aGUga2VybmVsOgotKyAgICAgICAgVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgaXMgZGVwcmVjYXRlZCwgd2lsbCBnbyBhd2F5LCBhbmQKLSsgICAgICAgIHNvbWV0aW1lcyBjYXVzZXMgcHJvYmxlbXM6Ci0gICAgICAgICAgIENPTkZJR19GV19MT0FERVJfVVNFUl9IRUxQRVI9bgotIAotICAgICAgICAgU29tZSB1ZGV2IHJ1bGVzIGFuZCB2aXJ0dWFsaXphdGlvbiBkZXRlY3Rpb24gcmVsaWVzIG9uIGl0OgotZGlmZiAtLWdpdCBhL1RPRE8gYi9UT0RPCi1pbmRleCA2MWVmYTVlOWYuLjY3Y2NhYzIyNCAxMDA2NDQKLS0tLSBhL1RPRE8KLSsrKyBiL1RPRE8KLUBAIC03NDAsNiArNzQwLDcgQEAgRmVhdHVyZXM6Ci0gKiBpbml0aWFsaXplIHRoZSBob3N0bmFtZSBmcm9tIHRoZSBmcyBsYWJlbCBvZiAvLCBpZiAvZXRjL2hvc3RuYW1lIGRvZXMgbm90IGV4aXN0PwotIAotICogdWRldjoKLSsgIC0gcmVtb3ZlIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jIChDT05GSUdfRldfTE9BREVSX1VTRVJfSEVMUEVSPW4pCi0gICAtIG1vdmUgdG8gTEdQTAotICAgLSBraWxsIHNjc2lfaWQKLSAgIC0gYWRkIHRyaWdnZXIgLS1zdWJzeXN0ZW0tbWF0Y2g9dXNiL3VzYl9kZXZpY2UgZGV2aWNlCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiNTNjYTFmMWEuLjExNTBjYTUwZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTUyMiw2ICsxNTIyLDIzIEBAIEFNX0NPTkRJVElPTkFMKEhBVkVfTVlIT1NUTkFNRSwgW3Rlc3QgIiRoYXZlX215aG9zdG5hbWUiID0gInllcyJdKQotIEFDX0FSR19FTkFCTEUoaHdkYiwgW0FTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtaHdkYl0sIFtkaXNhYmxlIGhhcmR3YXJlIGRhdGFiYXNlIHN1cHBvcnRdKV0sCi0gICAgICAgIGVuYWJsZV9od2RiPSRlbmFibGV2YWwsIGVuYWJsZV9od2RiPXllcykKLSBBTV9DT05ESVRJT05BTChFTkFCTEVfSFdEQiwgW3Rlc3QgeCRlbmFibGVfaHdkYiA9IHh5ZXNdKQotK0FDX0FSR19XSVRIKGZpcm13YXJlLXBhdGgsCi0rICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtZmlybXdhcmUtcGF0aD1ESVJbW1s6RElSWy4uLl1dXV1dLAotKyAgICAgICAgICBbRmlybXdhcmUgc2VhcmNoIHBhdGggKGRlZmF1bHQ9IiIpXSksCi0rICAgICAgIFtdLCBbd2l0aF9maXJtd2FyZV9wYXRoPSIiXSkKLStPTERfSUZTPSRJRlMKLStJRlM9OgotK2ZvciBpIGluICR3aXRoX2Zpcm13YXJlX3BhdGg7IGRvCi0rICAgICAgIGlmIHRlc3QgIngke0ZJUk1XQVJFX1BBVEh9IiA9ICJ4IjsgdGhlbgotKyAgICAgICAgICAgICAgRklSTVdBUkVfUEFUSD0iXFxcIiR7aX0vXFxcIiIKLSsgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgRklSTVdBUkVfUEFUSD0iJHtGSVJNV0FSRV9QQVRIfSwgXFxcIiR7aX0vXFxcIiIKLSsgICAgICAgZmkKLStkb25lCi0rSUZTPSRPTERfSUZTCi0rQUNfU1VCU1QoRklSTVdBUkVfUEFUSCkKLStBU19JRihbdGVzdCAieCR7RklSTVdBUkVfUEFUSH0iICE9ICJ4Il0sIFsgQUNfREVGSU5FKEhBVkVfRklSTVdBUkUsIDEsIFtEZWZpbmUgaWYgRklSTVdBUkUgaXMgYXZhaWxhYmxlXSkgXSkKLStBTV9DT05ESVRJT05BTChFTkFCTEVfRklSTVdBUkUsIFt0ZXN0ICJ4JHtGSVJNV0FSRV9QQVRIfSIgIT0gIngiXSkKLSAKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGhhdmVfbWFucGFnZXM9bm8KLUBAIC0xODM5LDYgKzE4NTYsNyBAQCBBQ19NU0dfUkVTVUxUKFsKLSAgICAgICAgIFN5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgJHtTWVNURU1fU1lTVklOSVRfUEFUSH0KLSAgICAgICAgIFN5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAgICAgICAgICAgJHtTWVNURU1fU1lTVlJDTkRfUEFUSH0KLSAgICAgICAgIGJ1aWxkIFB5dGhvbjogICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT059Ci0rICAgICAgICBmaXJtd2FyZSBwYXRoOiAgICAgICAgICAgICAgICAgICAgICR7RklSTVdBUkVfUEFUSH0KLSAgICAgICAgIFBBTSBtb2R1bGVzIGRpcjogICAgICAgICAgICAgICAgICAgJHt3aXRoX3BhbWxpYmRpcn0KLSAgICAgICAgIFBBTSBjb25maWd1cmF0aW9uIGRpcjogICAgICAgICAgICAgJHt3aXRoX3BhbWNvbmZkaXJ9Ci0gICAgICAgICBSUE0gbWFjcm9zIGRpcjogICAgICAgICAgICAgICAgICAgICR7d2l0aF9ycG1tYWNyb3NkaXJ9Ci1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uYmQ4YzJmYjk2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYwotQEAgLTAsMCArMSwxNTQgQEAKLSsvKgotKyAqIGZpcm13YXJlIC0gS2VybmVsIGZpcm13YXJlIGxvYWRlcgotKyAqCi0rICogQ29weXJpZ2h0IChDKSAyMDA5IFBpdGVyIFB1bmsgPHBpdGVycHVua0BzbGFja3dhcmUuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDExIEtheSBTaWV2ZXJzIDxrYXlAdnJmeS5vcmc+Ci0rICoKLSsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKLSsgKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlsczoqCi0rICovCi0rCi0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPGdldG9wdC5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxzdGRib29sLmg+Ci0rI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0rI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0rCi0rI2luY2x1ZGUgInVkZXYuaCIKLSsKLStzdGF0aWMgYm9vbCBzZXRfbG9hZGluZyhzdHJ1Y3QgdWRldiAqdWRldiwgY2hhciAqbG9hZHBhdGgsIGNvbnN0IGNoYXIgKnN0YXRlKSB7Ci0rICAgICAgICBGSUxFICpsZGZpbGU7Ci0rCi0rICAgICAgICBsZGZpbGUgPSBmb3Blbihsb2FkcGF0aCwgIndlIik7Ci0rICAgICAgICBpZiAobGRmaWxlID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgbG9nX2Vycm9yKCJlcnJvcjogY2FuIG5vdCBvcGVuICclcyciLCBsb2FkcGF0aCk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICAgIH07Ci0rICAgICAgICBmcHJpbnRmKGxkZmlsZSwgIiVzXG4iLCBzdGF0ZSk7Ci0rICAgICAgICBmY2xvc2UobGRmaWxlKTsKLSsgICAgICAgIHJldHVybiB0cnVlOwotK30KLSsKLStzdGF0aWMgYm9vbCBjb3B5X2Zpcm13YXJlKHN0cnVjdCB1ZGV2ICp1ZGV2LCBjb25zdCBjaGFyICpzb3VyY2UsIGNvbnN0IGNoYXIgKnRhcmdldCwgc2l6ZV90IHNpemUpIHsKLSsgICAgICAgIGNoYXIgKmJ1ZjsKLSsgICAgICAgIEZJTEUgKmZzb3VyY2UgPSBOVUxMLCAqZnRhcmdldCA9IE5VTEw7Ci0rICAgICAgICBib29sIHJldCA9IGZhbHNlOwotKwotKyAgICAgICAgYnVmID0gbWFsbG9jKHNpemUpOwotKyAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgIGxvZ19lcnJvcigiTm8gbWVtb3J5IGF2YWlsYWJsZSB0byBsb2FkIGZpcm13YXJlIGZpbGUiKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgICAgfQotKwotKyAgICAgICAgbG9nX2RlYnVnKCJ3cml0aW5nICclcycgKCV6aSkgdG8gJyVzJyIsIHNvdXJjZSwgc2l6ZSwgdGFyZ2V0KTsKLSsKLSsgICAgICAgIGZzb3VyY2UgPSBmb3Blbihzb3VyY2UsICJyZSIpOwotKyAgICAgICAgaWYgKGZzb3VyY2UgPT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgZ290byBleGl0OwotKyAgICAgICAgZnRhcmdldCA9IGZvcGVuKHRhcmdldCwgIndlIik7Ci0rICAgICAgICBpZiAoZnRhcmdldCA9PSBOVUxMKQotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICBpZiAoZnJlYWQoYnVmLCBzaXplLCAxLCBmc291cmNlKSAhPSAxKQotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICBpZiAoZndyaXRlKGJ1Ziwgc2l6ZSwgMSwgZnRhcmdldCkgPT0gMSkKLSsgICAgICAgICAgICAgICAgcmV0ID0gdHJ1ZTsKLStleGl0OgotKyAgICAgICAgaWYgKGZ0YXJnZXQgIT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgZmNsb3NlKGZ0YXJnZXQpOwotKyAgICAgICAgaWYgKGZzb3VyY2UgIT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgZmNsb3NlKGZzb3VyY2UpOwotKyAgICAgICAgZnJlZShidWYpOwotKyAgICAgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIGludCBidWlsdGluX2Zpcm13YXJlKHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2LCBpbnQgYXJnYywgY2hhciAqYXJndltdLCBib29sIHRlc3QpIHsKLSsgICAgICAgIHN0cnVjdCB1ZGV2ICp1ZGV2ID0gdWRldl9kZXZpY2VfZ2V0X3VkZXYoZGV2KTsKLSsgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICpzZWFyY2hwYXRoW10gPSB7IEZJUk1XQVJFX1BBVEggfTsKLSsgICAgICAgIGNoYXIgbG9hZHBhdGhbVVRJTF9QQVRIX1NJWkVdOwotKyAgICAgICAgY2hhciBkYXRhcGF0aFtVVElMX1BBVEhfU0laRV07Ci0rICAgICAgICBjaGFyIGZ3cGF0aFtVVElMX1BBVEhfU0laRV07Ci0rICAgICAgICBjb25zdCBjaGFyICpmaXJtd2FyZTsKLSsgICAgICAgIEZJTEUgKmZ3ZmlsZSA9IE5VTEw7Ci0rICAgICAgICBzdHJ1Y3QgdXRzbmFtZSBrZXJuZWw7Ci0rICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotKyAgICAgICAgdW5zaWduZWQgaW50IGk7Ci0rICAgICAgICBpbnQgcmMgPSBFWElUX1NVQ0NFU1M7Ci0rCi0rICAgICAgICBmaXJtd2FyZSA9IHVkZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1ZShkZXYsICJGSVJNV0FSRSIpOwotKyAgICAgICAgaWYgKGZpcm13YXJlID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgbG9nX2Vycm9yKCJmaXJtd2FyZSBwYXJhbWV0ZXIgbWlzc2luZyIpOwotKyAgICAgICAgICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKLSsgICAgICAgICAgICAgICAgZ290byBleGl0OwotKyAgICAgICAgfQotKwotKyAgICAgICAgLyogbG9va3VwIGZpcm13YXJlIGZpbGUgKi8KLSsgICAgICAgIHVuYW1lKCZrZXJuZWwpOwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IEVMRU1FTlRTT0Yoc2VhcmNocGF0aCk7IGkrKykgewotKyAgICAgICAgICAgICAgICBzdHJzY3B5bChmd3BhdGgsIHNpemVvZihmd3BhdGgpLCBzZWFyY2hwYXRoW2ldLCBrZXJuZWwucmVsZWFzZSwgIi8iLCBmaXJtd2FyZSwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIGZ3ZmlsZSA9IGZvcGVuKGZ3cGF0aCwgInJlIik7Ci0rICAgICAgICAgICAgICAgIGlmIChmd2ZpbGUgIT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsKLSsgICAgICAgICAgICAgICAgc3Ryc2NweWwoZndwYXRoLCBzaXplb2YoZndwYXRoKSwgc2VhcmNocGF0aFtpXSwgZmlybXdhcmUsIE5VTEwpOwotKyAgICAgICAgICAgICAgICBmd2ZpbGUgPSBmb3Blbihmd3BhdGgsICJyZSIpOwotKyAgICAgICAgICAgICAgICBpZiAoZndmaWxlICE9IE5VTEwpCi0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBzdHJzY3B5bChsb2FkcGF0aCwgc2l6ZW9mKGxvYWRwYXRoKSwgdWRldl9kZXZpY2VfZ2V0X3N5c3BhdGgoZGV2KSwgIi9sb2FkaW5nIiwgTlVMTCk7Ci0rCi0rICAgICAgICBpZiAoZndmaWxlID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgbG9nX2RlYnVnKCJkaWQgbm90IGZpbmQgZmlybXdhcmUgZmlsZSAnJXMnIiwgZmlybXdhcmUpOwotKyAgICAgICAgICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKLSsgICAgICAgICAgICAgICAgLyoKLSsgICAgICAgICAgICAgICAgICogRG8gbm90IGNhbmNlbCB0aGUgcmVxdWVzdCBpbiB0aGUgaW5pdHJkLCB0aGUgcmVhbCByb290IG1pZ2h0IGhhdmUKLSsgICAgICAgICAgICAgICAgICogdGhlIGZpcm13YXJlIGZpbGUgYW5kIHRoZSAnY29sZHBsdWcnIHJ1biBpbiB0aGUgcmVhbCByb290IHdpbGwgZmluZAotKyAgICAgICAgICAgICAgICAgKiB0aGlzIHBlbmRpbmcgcmVxdWVzdCBhbmQgZnVsZmlsbCBvciBjYW5jZWwgaXQuCi0rICAgICAgICAgICAgICAgICAqICovCi0rICAgICAgICAgICAgICAgIGlmICghaW5faW5pdHJkKCkpCi0rICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICItMSIpOwotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoc3RhdChmd3BhdGgsICZzdGF0YnVmKSA8IDAgfHwgc3RhdGJ1Zi5zdF9zaXplID09IDApIHsKLSsgICAgICAgICAgICAgICAgaWYgKCFpbl9pbml0cmQoKSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIi0xIik7Ci0rICAgICAgICAgICAgICAgIHJjID0gRVhJVF9GQUlMVVJFOwotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoIXNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiMSIpKQotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rCi0rICAgICAgICBzdHJzY3B5bChkYXRhcGF0aCwgc2l6ZW9mKGRhdGFwYXRoKSwgdWRldl9kZXZpY2VfZ2V0X3N5c3BhdGgoZGV2KSwgIi9kYXRhIiwgTlVMTCk7Ci0rICAgICAgICBpZiAoIWNvcHlfZmlybXdhcmUodWRldiwgZndwYXRoLCBkYXRhcGF0aCwgc3RhdGJ1Zi5zdF9zaXplKSkgewotKyAgICAgICAgICAgICAgICBsb2dfZXJyb3IoImVycm9yIHNlbmRpbmcgZmlybXdhcmUgJyVzJyB0byBkZXZpY2UiLCBmaXJtd2FyZSk7Ci0rICAgICAgICAgICAgICAgIHNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiLTEiKTsKLSsgICAgICAgICAgICAgICAgcmMgPSBFWElUX0ZBSUxVUkU7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSsgICAgICAgIH07Ci0rCi0rICAgICAgICBzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIjAiKTsKLStleGl0OgotKyAgICAgICAgaWYgKGZ3ZmlsZSkKLSsgICAgICAgICAgICAgICAgZmNsb3NlKGZ3ZmlsZSk7Ci0rICAgICAgICByZXR1cm4gcmM7Ci0rfQotKwotK2NvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2Zpcm13YXJlID0gewotKyAgICAgICAgLm5hbWUgPSAiZmlybXdhcmUiLAotKyAgICAgICAgLmNtZCA9IGJ1aWx0aW5fZmlybXdhcmUsCi0rICAgICAgICAuaGVscCA9ICJrZXJuZWwgZmlybXdhcmUgbG9hZGVyIiwKLSsgICAgICAgIC5ydW5fb25jZSA9IHRydWUsCi0rfTsKLWRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jCi1pbmRleCBlNmIzNmYxMjQuLmNkOTk0N2UyYSAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jCi0rKysgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYwotQEAgLTMxLDYgKzMxLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gKmJ1aWx0aW5zW10gPSB7Ci0gICAgICAgICBbVURFVl9CVUlMVElOX0JMS0lEXSA9ICZ1ZGV2X2J1aWx0aW5fYmxraWQsCi0gI2VuZGlmCi0gICAgICAgICBbVURFVl9CVUlMVElOX0JUUkZTXSA9ICZ1ZGV2X2J1aWx0aW5fYnRyZnMsCi0rI2lmZGVmIEhBVkVfRklSTVdBUkUKLSsgICAgICAgIFtVREVWX0JVSUxUSU5fRklSTVdBUkVdID0gJnVkZXZfYnVpbHRpbl9maXJtd2FyZSwKLSsjZW5kaWYKLSAgICAgICAgIFtVREVWX0JVSUxUSU5fSFdEQl0gPSAmdWRldl9idWlsdGluX2h3ZGIsCi0gICAgICAgICBbVURFVl9CVUlMVElOX0lOUFVUX0lEXSA9ICZ1ZGV2X2J1aWx0aW5faW5wdXRfaWQsCi0gICAgICAgICBbVURFVl9CVUlMVElOX0tFWUJPQVJEXSA9ICZ1ZGV2X2J1aWx0aW5fa2V5Ym9hcmQsCi1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi5oIGIvc3JjL3VkZXYvdWRldi5oCi1pbmRleCBjMGNiN2VhZTguLjlmMGYxY2YxMyAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L3VkZXYuaAotKysrIGIvc3JjL3VkZXYvdWRldi5oCi1AQCAtMTUwLDYgKzE1MCw5IEBAIGVudW0gdWRldl9idWlsdGluX2NtZCB7Ci0gICAgICAgICBVREVWX0JVSUxUSU5fQkxLSUQsCi0gI2VuZGlmCi0gICAgICAgICBVREVWX0JVSUxUSU5fQlRSRlMsCi0rI2lmZGVmIEhBVkVfRklSTVdBUkUKLSsgICAgICAgIFVERVZfQlVJTFRJTl9GSVJNV0FSRSwKLSsjZW5kaWYKLSAgICAgICAgIFVERVZfQlVJTFRJTl9IV0RCLAotICAgICAgICAgVURFVl9CVUlMVElOX0lOUFVUX0lELAotICAgICAgICAgVURFVl9CVUlMVElOX0tFWUJPQVJELAotQEAgLTE3OCw2ICsxODEsOSBAQCBzdHJ1Y3QgdWRldl9idWlsdGluIHsKLSBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fYmxraWQ7Ci0gI2VuZGlmCi0gZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2J0cmZzOwotKyNpZmRlZiBIQVZFX0ZJUk1XQVJFCi0rZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2Zpcm13YXJlOwotKyNlbmRpZgotIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9od2RiOwotIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9pbnB1dF9pZDsKLSBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fa2V5Ym9hcmQ7Ci1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldmQuYyBiL3NyYy91ZGV2L3VkZXZkLmMKLWluZGV4IGFjYmRkZDQxOC4uMjAzNDdiNDAyIDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvdWRldmQuYwotKysrIGIvc3JjL3VkZXYvdWRldmQuYwotQEAgLTEyNSw2ICsxMjUsOSBAQCBzdHJ1Y3QgZXZlbnQgewotICAgICAgICAgYm9vbCBpc19ibG9jazsKLSAgICAgICAgIHNkX2V2ZW50X3NvdXJjZSAqdGltZW91dF93YXJuaW5nOwotICAgICAgICAgc2RfZXZlbnRfc291cmNlICp0aW1lb3V0OwotKyNpZmRlZiBIQVZFX0ZJUk1XQVJFCi0rICAgICAgICBib29sIG5vZGVsYXk7Ci0rI2VuZGlmCi0gfTsKLSAKLSBzdGF0aWMgaW5saW5lIHN0cnVjdCBldmVudCAqbm9kZV90b19ldmVudChzdHJ1Y3QgdWRldl9saXN0X25vZGUgKm5vZGUpIHsKLUBAIC02MTMsNiArNjE2LDEwIEBAIHN0YXRpYyBpbnQgZXZlbnRfcXVldWVfaW5zZXJ0KE1hbmFnZXIgKm1hbmFnZXIsIHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2KSB7Ci0gICAgICAgICBldmVudC0+ZGV2bnVtID0gdWRldl9kZXZpY2VfZ2V0X2Rldm51bShkZXYpOwotICAgICAgICAgZXZlbnQtPmlzX2Jsb2NrID0gc3RyZXEoImJsb2NrIiwgdWRldl9kZXZpY2VfZ2V0X3N1YnN5c3RlbShkZXYpKTsKLSAgICAgICAgIGV2ZW50LT5pZmluZGV4ID0gdWRldl9kZXZpY2VfZ2V0X2lmaW5kZXgoZGV2KTsKLSsjaWZkZWYgSEFWRV9GSVJNV0FSRQotKyAgICAgICAgaWYgKHN0cmVxKHVkZXZfZGV2aWNlX2dldF9zdWJzeXN0ZW0oZGV2KSwgImZpcm13YXJlIikpCi0rICAgICAgICAgICAgICAgIGV2ZW50LT5ub2RlbGF5ID0gdHJ1ZTsKLSsjZW5kaWYKLSAKLSAgICAgICAgIGxvZ19kZWJ1Zygic2VxICVsbHUgcXVldWVkLCAnJXMnICclcyciLCB1ZGV2X2RldmljZV9nZXRfc2VxbnVtKGRldiksCi0gICAgICAgICAgICAgIHVkZXZfZGV2aWNlX2dldF9hY3Rpb24oZGV2KSwgdWRldl9kZXZpY2VfZ2V0X3N1YnN5c3RlbShkZXYpKTsKLUBAIC02OTgsNiArNzA1LDEyIEBAIHN0YXRpYyBib29sIGlzX2RldnBhdGhfYnVzeShNYW5hZ2VyICptYW5hZ2VyLCBzdHJ1Y3QgZXZlbnQgKmV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSsjaWZkZWYgSEFWRV9GSVJNV0FSRQotKyAgICAgICAgICAgICAgICAvKiBhbGxvdyB0byBieXBhc3MgdGhlIGRlcGVuZGVuY3kgdHJhY2tpbmcgKi8KLSsgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5ub2RlbGF5KQotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyNlbmRpZgotKwotICAgICAgICAgICAgICAgICAvKiBwYXJlbnQgZGV2aWNlIGV2ZW50IGZvdW5kICovCi0gICAgICAgICAgICAgICAgIGlmIChldmVudC0+ZGV2cGF0aFtjb21tb25dID09ICcvJykgewotICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5kZWxheWluZ19zZXFudW0gPSBsb29wX2V2ZW50LT5zZXFudW07Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MDk0NzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaApAQCAtMCwwICsxLDE1NyBAQAorRnJvbSBiNDVjZjQ5MjNjN2UxZjExNjU5MjVlOWI0ZDdkYjIxMDhmYWYyZWFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEwOjUwOjE0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMTUvMzFdIGRvbid0IGZhaWwgaWYgR0xPQl9CUkFDRSBhbmQgR0xPQl9BTFRESVJGVU5DIGlzIG5vdAorIGRlZmluZWQKKworSWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lc24ndCBwcm92aWRlIGJyYWNlCitleHBhbnNpb24gdXNlcnMganVzdCB3b24ndCBnZXQgaXQuCisKK0RvbnQgdXNlIEdOVSBHTE9CIGV4dGVudGlvbnMgb24gbm9uLWdsaWJjIHN5c3RlbXMKKworQ29uZGl0aW9uYWxpemUgdXNlIG9mIEdMT0JfQUxURElSRlVOQworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9nbG9iLXV0aWwuYyAgICAgfCAyMCArKysrKysrKysrKysrKysrKy0tLQorIHNyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMgfCAxNyArKysrKysrKysrKysrKystLQorIHNyYy90bXBmaWxlcy90bXBmaWxlcy5jICAgfCAgOCArKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9nbG9iLXV0aWwuYyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYworaW5kZXggNmU4MGExZTIzLi4zMTJiYjNmZDEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYworQEAgLTI4LDEzICsyOCwxOCBAQAorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKKyAjaW5jbHVkZSAic3Rydi5oIgorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKyAKKyBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgaW50IGs7CisgCisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgLyogV2Ugd2FudCB0byBzZXQgR0xPQl9BTFRESVJGVU5DIG91cnNlbHZlcywgZG9uJ3QgYWxsb3cgaXQgdG8gYmUgc2V0LiAqLworICAgICAgICAgYXNzZXJ0KCEoZmxhZ3MgJiBHTE9CX0FMVERJUkZVTkMpKTsKKy0KKyAgICAgICAgIGlmICghcGdsb2ItPmdsX2Nsb3NlZGlyKQorICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfY2xvc2VkaXIgPSAodm9pZCAoKikodm9pZCAqKSkgY2xvc2VkaXI7CisgICAgICAgICBpZiAoIXBnbG9iLT5nbF9yZWFkZGlyKQorQEAgLTQ1LDEwICs1MCwxMyBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfbHN0YXQgPSBsc3RhdDsKKyAgICAgICAgIGlmICghcGdsb2ItPmdsX3N0YXQpCisgICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9zdGF0ID0gc3RhdDsKKy0KKysjZW5kaWYKKyAgICAgICAgIGVycm5vID0gMDsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICBrID0gZ2xvYihwYXRoLCBmbGFncyB8IEdMT0JfQUxURElSRlVOQywgTlVMTCwgcGdsb2IpOworLQorKyNlbHNlCisrICAgICAgICBrID0gZ2xvYihwYXRoLCBmbGFncywgTlVMTCwgcGdsb2IpOworKyNlbmRpZgorICAgICAgICAgaWYgKGsgPT0gR0xPQl9OT01BVENIKQorICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKKyAgICAgICAgIGlmIChrID09IEdMT0JfTk9TUEFDRSkKK0BAIC02MSw2ICs2OSwxMiBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgcmV0dXJuIDA7CisgfQorIAorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKysKKyBpbnQgZ2xvYl9leGlzdHMoY29uc3QgY2hhciAqcGF0aCkgeworICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0ge307CisgICAgICAgICBpbnQgazsKK2RpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYworaW5kZXggYmQyZjhmY2ZkLi5hMTBjNzc0MjcgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCisrKysgYi9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCitAQCAtMzAsNiArMzAsMTEgQEAKKyAjaW5jbHVkZSAiZ2xvYi11dGlsLmgiCisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInJtLXJmLmgiCisrLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQorKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KKysjaWZuZGVmIEdMT0JfQlJBQ0UKKysjZGVmaW5lIEdMT0JfQlJBQ0UgMAorKyNlbmRpZgorIAorIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgeworICAgICAgICAgY2hhciBuYW1lW10gPSAiL3RtcC90ZXN0LWdsb2JfZXhpc3RzLlhYWFhYWCI7CitAQCAtNTIsMjUgKzU3LDMzIEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgeworIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9ub19kb3Qodm9pZCkgeworICAgICAgICAgY2hhciB0ZW1wbGF0ZVtdID0gIi90bXAvdGVzdC1nbG9iLXV0aWwuWFhYWFhYWCI7CisgICAgICAgICBjb25zdCBjaGFyICpmbjsKKy0KKyAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICAgICAgICAgIC5nbF9jbG9zZWRpciA9ICh2b2lkICgqKSh2b2lkICopKSBjbG9zZWRpciwKKyAgICAgICAgICAgICAgICAgLmdsX3JlYWRkaXIgPSAoc3RydWN0IGRpcmVudCAqKCopKHZvaWQgKikpIHJlYWRkaXJfbm9fZG90LAorICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpciwKKyAgICAgICAgICAgICAgICAgLmdsX2xzdGF0ID0gbHN0YXQsCisgICAgICAgICAgICAgICAgIC5nbF9zdGF0ID0gc3RhdCwKKysjZW5kaWYKKyAgICAgICAgIH07CistCisgICAgICAgICBpbnQgcjsKKyAKKyAgICAgICAgIGFzc2VydF9zZShta2R0ZW1wKHRlbXBsYXRlKSk7CisgCisgICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLyoiKTsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRXxHTE9CX0FMVERJUkZVTkMsIE5VTEwsICZnKTsKKysjZWxzZQorKyAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0UsIE5VTEwsICZnKTsKKysjZW5kaWYKKyAgICAgICAgIGFzc2VydF9zZShyID09IEdMT0JfTk9NQVRDSCk7CisgCisgICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLy4qIik7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0V8R0xPQl9BTFRESVJGVU5DLCBOVUxMLCAmZyk7CisrI2Vsc2UKKysgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFLCBOVUxMLCAmZyk7CisrI2VuZGlmCisgICAgICAgICBhc3NlcnRfc2UociA9PSBHTE9CX05PTUFUQ0gpOworIAorICAgICAgICAgKHZvaWQpIHJtX3JmKHRlbXBsYXRlLCBSRU1PVkVfUk9PVHxSRU1PVkVfUEhZU0lDQUwpOworZGlmZiAtLWdpdCBhL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jIGIvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKK2luZGV4IDM4Y2JiNzM5Yy4uODhjYzU0M2YwIDEwMDY0NAorLS0tIGEvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKKysrKyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCitAQCAtNzYsNiArNzYsMTIgQEAKKyAjaW5jbHVkZSAidW1hc2stdXRpbC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRpbC5oIgorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKysKKyAKKyAvKiBUaGlzIHJlYWRzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gL2V0Yy90bXBmaWxlcy5kLz8qLmNvbmYgYW5kIGNyZWF0ZXMKKyAgKiB0aGVtIGluIHRoZSBmaWxlIHN5c3RlbS4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGNyZWF0ZQorQEAgLTEyODgsNyArMTI5NCw5IEBAIHN0YXRpYyBpbnQgaXRlbV9kb19jaGlsZHJlbihJdGVtICppLCBjb25zdCBjaGFyICpwYXRoLCBhY3Rpb25fdCBhY3Rpb24pIHsKKyAKKyBzdGF0aWMgaW50IGdsb2JfaXRlbShJdGVtICppLCBhY3Rpb25fdCBhY3Rpb24sIGJvb2wgcmVjdXJzaXZlKSB7CisgICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpcl9ub21vZCwKKysjZW5kaWYKKyAgICAgICAgIH07CisgICAgICAgICBpbnQgciA9IDAsIGs7CisgICAgICAgICBjaGFyICoqZm47CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMDM3ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIGVmYzU3ODU2Zjk2MWMxZjNiZjAxNmM1MTFjNTNkOTkwZGI4YWJkZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0RhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTE6MzE6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxNi8zMV0gc3JjL2Jhc2ljL21pc3NpbmcuaDogY2hlY2sgZm9yIG1pc3NpbmcgX19jb21wYXJfZm5fdAorIHR5cGVkZWYKKworaW5jbHVkZSBtaXNzaW5nLmggZm9yIG1pc3NpbmcgX19jb21wYXJfZm5fdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9taXNzaW5nLmggfCA1ICsrKysrCisgc3JjL2Jhc2ljL3N0cmJ1Zi5jICB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAoraW5kZXggMDdhOGM4MzY0Li4xYWVlMzM0NmEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCitAQCAtMTE2Miw2ICsxMTYyLDExIEBAIHN0cnVjdCBpbnB1dF9tYXNrIHsKKyAjZGVmaW5lIFJFTkFNRV9OT1JFUExBQ0UgKDEgPDwgMCkKKyAjZW5kaWYKKyAKKysjaWZuZGVmIF9fQ09NUEFSX0ZOX1QKKysjZGVmaW5lIF9fQ09NUEFSX0ZOX1QKKyt0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKKysjZW5kaWYKKysKKyAjaWZuZGVmIEtDTVBfRklMRQorICNkZWZpbmUgS0NNUF9GSUxFIDAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvc3RyYnVmLmMgYi9zcmMvYmFzaWMvc3RyYnVmLmMKK2luZGV4IDhiZWZmZmE2Ni4uYmNiODYwZjk1IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3N0cmJ1Zi5jCisrKysgYi9zcmMvYmFzaWMvc3RyYnVmLmMKK0BAIC0yNCw2ICsyNCw3IEBACisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyYnVmLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyAvKgorICAqIFN0cmJ1ZiBzdG9yZXMgZ2l2ZW4gc3RyaW5ncyBpbiBhIHNpbmdsZSBjb250aW51b3VzIGFsbG9jYXRlZCBtZW1vcnkKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDljZmRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCkBAIC0wLDAgKzEsODUgQEAKK0Zyb20gZjJiMDE3M2NkOTgwNzg2NGRiMWVmM2IxMDJhYmFhNzZlZjM3ZTUwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MTk6MTIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxNy8zMV0gSW5jbHVkZSBuZXRpbmV0L2lmX2V0aGVyLmgKKworRml4ZXMKKy9wYXRoL3RvL3N5c3RlbWQvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvbmV0aW5ldC9pZl9ldGhlci5oOjEwMTo4OiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QgZXRoaGRyJworIHN0cnVjdCBldGhoZHIgeworICAgICAgICBefn5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYyB8IDEgKworIHNyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYyAgICAgICAgICAgICAgIHwgMSArCisgc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMgICAgICAgICAgICAgfCAxICsKKyBzcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMgICAgICAgICAgICAgICB8IDEgKworIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jICAgIHwgMSArCisgNSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKK2luZGV4IDBlZTdkNmYwZC4uZWY3NTg5M2E2IDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKKysrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCitAQCAtMjEsNiArMjEsNyBAQAorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgorICNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KKyAjaW5jbHVkZSA8bGludXgvZ2VuZXRsaW5rLmg+CitkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jIGIvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCitpbmRleCA0ZmM5YjYxMGEuLjYyOGM2MWM1NyAxMDA2NDQKKy0tLSBhL3NyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYworKysrIGIvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCitAQCAtMjAsNiArMjAsNyBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgorICNpbmNsdWRlIDxuZXQvaWYuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKK2luZGV4IDk5ZGQ0MTYyOS4uOTA0MDdjOWQ4IDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKKysrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCitAQCAtMTksNiArMTksNyBAQAorICoqKi8KKyAKKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX2JyaWRnZS5oPgorICNpbmNsdWRlIDxzdGRib29sLmg+CisgCitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCitpbmRleCA5YmRhZWY4ZDkuLjk0OGY4OWNmOCAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYworKysrIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCitAQCAtMTgsNiArMTgsNyBAQAorICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKioqLworIAorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPG5ldC9pZi5oPgorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKK2luZGV4IDQwMTU4ZTBhZi4uYjI0YjNmY2U4IDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKKysrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCitAQCAtMTgsNiArMTgsNyBAQAorICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKioqLworIAorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAibGluay1jb25maWcuaCIKKyAjaW5jbHVkZSAibG9nLmgiCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMDA2MzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSBlNzhhZjg3NGZjOWYzZDNhZjQ5NDk4YjgyMDcxMDk5OTNkOTNhNTk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjIgRmViIDIwMTYgMDU6NTk6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNy8xOV0gcmVtb3ZlIGR1cGxpY2F0ZSBpbmNsdWRlIHVjaGFyLmgKLQotbWlzc2luZy5oIGFscmVhZHkgaW5jbHVkZXMgaXQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gc3JjL2Jhc2ljL2VzY2FwZS5oIHwgMSAtCi0gc3JjL2Jhc2ljL3V0ZjguaCAgIHwgMSAtCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2VzY2FwZS5oIGIvc3JjL2Jhc2ljL2VzY2FwZS5oCi1pbmRleCBkZWFhNGRlLi4zNmQ0MzdjIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL2VzY2FwZS5oCi0rKysgYi9zcmMvYmFzaWMvZXNjYXBlLmgKLUBAIC0yMyw3ICsyMyw2IEBACi0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2luY2x1ZGUgPHVjaGFyLmg+Ci0gCi0gI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0gI2luY2x1ZGUgIm1pc3NpbmcuaCIKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRmOC5oIGIvc3JjL2Jhc2ljL3V0ZjguaAotaW5kZXggZjliOWM5NC4uNmFjOWEzYyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy91dGY4LmgKLSsrKyBiL3NyYy9iYXNpYy91dGY4LmgKLUBAIC0yMiw3ICsyMiw2IEBACi0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotLSNpbmNsdWRlIDx1Y2hhci5oPgotIAotICNpbmNsdWRlICJtYWNyby5oIgotICNpbmNsdWRlICJtaXNzaW5nLmgiCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiN2VkZjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIDY5MGVlZWY5NTkwYzdlZjFkOWQyYzMxZDhjMWQ1ZDgwNzFkYThjNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE3OjIxOjExICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTgvMzFdIGNoZWNrIGZvciBtaXNzaW5nIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCAyICsrCisgc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oIHwgNiArKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggMTI4MTFiM2YzLi5mNjUxNWU5N2MgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC01MjAsNiArNTIwLDggQEAgZm9yZWFjaCBpZGVudCA6IFsKKyAgICAgICAgIFsna2NtcCcsICAgICAgICAgICAgICAnJycjaW5jbHVkZSA8bGludXgva2NtcC5oPicnJ10sCisgICAgICAgICBbJ2tleWN0bCcsICAgICAgICAgICAgJycnI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxrZXl1dGlscy5oPicnJ10sCisrICAgICAgICBbJ2Nhbm9uaWNhbGl6ZV9maWxlX25hbWUnLCAnJycjZGVmaW5lIF9HTlVfU09VUkNFCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+JycnXSwKKyAgICAgICAgIFsnY29weV9maWxlX3JhbmdlJywgICAnJycjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+JycnXSwKKyAgICAgICAgIFsnYnBmJywgICAgICAgICAgICAgICAnJycjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmggYi9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKK2luZGV4IGM5MzhkMGQ5Ny4uMzA4Yjk0NzJiIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKK0BAIC0zMSw2ICszMSwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBwaXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFyICpwdXRfb2xkKSB7CisgfQorICNlbmRpZgorIAorKyNpZiAhSEFWRV9DQU5PTklDQUxJWkVfRklMRV9OQU1FCisrc3RhdGljIGlubGluZSBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lKGNvbnN0IGNoYXIgKnBhdGgpIHsKKysgICAgICAgIHJldHVybiByZWFscGF0aChwYXRoLCBOVUxMKTsKKyt9CisrI2VuZGlmCisrCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KKyAKKyAjaWYgIUhBVkVfTUVNRkRfQ1JFQVRFCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLXVjaGFyLmgtaW4tY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWNoZWNrLWZvci11Y2hhci5oLWluLWNvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY3YjczZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLXVjaGFyLmgtaW4tY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSAxMzU1NDU3MDkyYjAyYTE1YzY0NmZjMWM3MmU2OGI2OTRhODZkZDk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjIgRmViIDIwMTYgMDY6MDI6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8xNF0gY2hlY2sgZm9yIHVjaGFyLmggaW4gY29uZmlndXJlCi0KLVVzZSBpZmRlZiB0byBpbmNsdWRlIHVjaGFyLmgKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgIHwgMSArCi0gc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAxMTUwY2E1MGUuLjYwZTdkZjVlZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzA0LDYgKzMwNCw3IEBAIEFNX0NPTkRJVElPTkFMKFtIQVZFX1BZVEhPTl0sIFt0ZXN0ICJ4JGhhdmVfcHl0aG9uIiA9ICJ4eWVzIl0pCi0gCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLStBQ19DSEVDS19IRUFERVJTKFt1Y2hhci5oXSwgW10sIFtdKQotIEFDX0NIRUNLX0hFQURFUlMoW3N5cy9jYXBhYmlsaXR5LmhdLCBbXSwgW0FDX01TR19FUlJPUihbKioqIFBPU0lYIGNhcHMgaGVhZGVycyBub3QgZm91bmRdKV0pCi0gQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvYnRyZnMuaF0sIFtdLCBbXSkKLSBBQ19DSEVDS19IRUFERVJTKFtsaW51eC9tZW1mZC5oXSwgW10sIFtdKQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1pbmRleCAyNWExMWYzNTEuLmQ2MzFiN2UzZSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC0zNyw3ICszNyw5IEBACi0gI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0rI2lmZGVmIEhBVkVfVUNIQVJfSAotICNpbmNsdWRlIDx1Y2hhci5oPgotKyNlbmRpZgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjaWZkZWYgSEFWRV9BVURJVAotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLWlmLW5zcy1zeXN0ZW1kLWlzLW5vdC1lbmFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMtaWYtbnNzLXN5c3RlbWQtaXMtbm90LWVuYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmIyMWEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLWlmLW5zcy1zeXN0ZW1kLWlzLW5vdC1lbmFibGUucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBmNWYzMTM5MTVkNzhiYzQzZWI5NmUyYWFmYjhjZTNjZGEzMDRjMjc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxNzoyNzo1NiArMDgwMAorU3ViamVjdDogW1BBVENIIDE5LzMxXSBEbyBub3QgZW5hYmxlIG5zcyB0ZXN0cyBpZiBuc3Mtc3lzdGVtZCBpcyBub3QgZW5hYmxlZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy90ZXN0L21lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tZXNvbi5idWlsZAoraW5kZXggMWRiOGFhMTA3Li5kZjNhMWY1YzUgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC9tZXNvbi5idWlsZAorKysrIGIvc3JjL3Rlc3QvbWVzb24uYnVpbGQKK0BAIC02NDYsNyArNjQ2LDcgQEAgdGVzdHMgKz0gWworICAgICAgICAgW1snc3JjL3Rlc3QvdGVzdC1uc3MuYyddLAorICAgICAgICAgIFtdLAorICAgICAgICAgIFtsaWJkbF0sCistICAgICAgICAgJycsICdtYW51YWwnXSwKKysgICAgICAgICAnRU5BQkxFX05TU19TWVNURU1EJywgJ21hbnVhbCddLAorIF0KKyAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYwOTI3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGI3YzZiZmUyZWM1YWU0MjZlNTg2ZTFkNmVjYWRiNTJhOTcxMjhhM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDIwOjQ5OjUzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMTRdIHNvY2tldC11dGlsOiBkb24ndCBmYWlsIGlmIGxpYmMgZG9lc24ndCBzdXBwb3J0IElETgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBzcmMvYmFzaWMvc29ja2V0LXV0aWwuYyB8IDkgKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMgYi9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYwotaW5kZXggMDE2ZTY0YWEwLi5kNDY1ODgyNmUgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKLUBAIC00Nyw2ICs0NywxNSBAQAotICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSAjaW5jbHVkZSAidXRmOC5oIgotICNpbmNsdWRlICJ1dGlsLmgiCi0rLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQotKyAqIGRvZXNuJ3Qgc3VwcG9ydCBJRE4gKi8KLSsjaWZuZGVmIE5JX0lETgotKyNkZWZpbmUgTklfSUROIDAKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUwotKyNkZWZpbmUgTklfSUROX1VTRV9TVEQzX0FTQ0lJX1JVTEVTIDAKLSsjZW5kaWYKLSAKLSAjaWZkZWYgRU5BQkxFX0lETgotICMgIGRlZmluZSBJRE5fRkxBR1MgKE5JX0lETnxOSV9JRE5fVVNFX1NURDNfQVNDSUlfUlVMRVMpCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3Itc3RybmR1cGEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3Itc3RybmR1cGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ0OWNmZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvci1zdHJuZHVwYS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGQ2M2QyZmVkY2Q4MGU1OGVlNTM2NTVhZWFmMjgzNmQ0YjBhMTQ2NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMjozMzoyMiAtMDcwMAorU3ViamVjdDogW1BBVENIIDIwLzMxXSB0ZXN0LWhleGRlY29jdC5jOiBJbmNsdWRlIG1pc3NpbmcuaCBmb3Igc3RybmR1cGEKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYworaW5kZXggM2UyNWEwYmFjLi5hYjNlNTA4ZjEgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCisrKysgYi9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCitAQCAtMjQsNiArMjQsNyBAQAorICNpbmNsdWRlICJoZXhkZWNvY3QuaCIKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIHN0YXRpYyB2b2lkIHRlc3RfaGV4Y2hhcih2b2lkKSB7CisgICAgICAgICBhc3NlcnRfc2UoaGV4Y2hhcigweGEpID09ICdhJyk7CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOGFlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGRmZWE0Yjk4ODQ0Nzk1YTBjZDE0ZmRhZjQwYzY3ZGYzODlkYmQyN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjI1OjIyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMjEvMzFdIHRlc3Qtc2l6ZW9mLmM6IERpc2FibGUgdGVzdHMgZm9yIG1pc3NpbmcgdHlwZWRlZnMgaW4KKyBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCitpbmRleCBhZWQ2ZGI4NDIuLjBkZTZmYTYzYyAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKKysrKyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKK0BAIC01MCw4ICs1MCwxMCBAQCBpbnQgbWFpbih2b2lkKSB7CisgICAgICAgICBpbmZvKHVuc2lnbmVkKTsKKyAgICAgICAgIGluZm8obG9uZyB1bnNpZ25lZCk7CisgICAgICAgICBpbmZvKGxvbmcgbG9uZyB1bnNpZ25lZCk7CisrI2lmZGVmIF9fR0xJQkNfXworICAgICAgICAgaW5mbyhfX3N5c2NhbGxfdWxvbmdfdCk7CisgICAgICAgICBpbmZvKF9fc3lzY2FsbF9zbG9uZ190KTsKKysjZW5kaWYKKyAKKyAgICAgICAgIGluZm8oZmxvYXQpOworICAgICAgICAgaW5mbyhkb3VibGUpOworQEAgLTYxLDcgKzYzLDkgQEAgaW50IG1haW4odm9pZCkgeworICAgICAgICAgaW5mbyhzc2l6ZV90KTsKKyAgICAgICAgIGluZm8odGltZV90KTsKKyAgICAgICAgIGluZm8odXNlY190KTsKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICBpbmZvKF9fdGltZV90KTsKKysjZW5kaWYKKyAgICAgICAgIGluZm8ocGlkX3QpOworICAgICAgICAgaW5mbyh1aWRfdCk7CisgICAgICAgICBpbmZvKGdpZF90KTsKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWY3NDQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCkBAIC0wLDAgKzEsMTA1IEBACitGcm9tIGQzNDM3NTdkNjI5NDAyYzcwY2E4ZTVlYWE1NTFkZWFmMTc1Yzk2ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0RhdGU6IFRodSwgMTggU2VwIDIwMTQgMTU6MjQ6NTYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyMi8zMV0gZG9uJ3QgdXNlIGdsaWJjLXNwZWNpZmljIHFzb3J0X3IKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvaHdkYi9od2RiLmMgICAgICAgICB8IDE4ICsrKysrKysrKysrLS0tLS0tLQorIHNyYy91ZGV2L3VkZXZhZG0taHdkYi5jIHwgMTYgKysrKysrKysrKy0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaHdkYi9od2RiLmMgYi9zcmMvaHdkYi9od2RiLmMKK2luZGV4IDQ1NDAyNjBmOS4uODFhY2E3YTliIDEwMDY0NAorLS0tIGEvc3JjL2h3ZGIvaHdkYi5jCisrKysgYi9zcmMvaHdkYi9od2RiLmMKK0BAIC0xNTIsMTMgKzE1MiwxMiBAQCBzdGF0aWMgdm9pZCB0cmllX2ZyZWUoc3RydWN0IHRyaWUgKnRyaWUpIHsKKyAKKyBERUZJTkVfVFJJVklBTF9DTEVBTlVQX0ZVTkMoc3RydWN0IHRyaWUqLCB0cmllX2ZyZWUpOworIAorLXN0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2Miwgdm9pZCAqYXJnKSB7Cisrc3RhdGljIHN0cnVjdCB0cmllICp0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWU7Cisrc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyKSB7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMSA9IHYxOworICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDIgPSB2MjsKKy0gICAgICAgIHN0cnVjdCB0cmllICp0cmllID0gYXJnOworLQorLSAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorLSAgICAgICAgICAgICAgICAgICAgICB0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKKysgICAgICAgIHJldHVybiBzdHJjbXAodHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorKyAgICAgICAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworIH0KKyAKKyBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCitAQCAtMTgzLDcgKzE4MiwxMCBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlX29mZiA9IHYsCisgICAgICAgICAgICAgICAgIH07CisgCistICAgICAgICAgICAgICAgIHZhbCA9IHhic2VhcmNoX3IoJnNlYXJjaCwgbm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7CisrICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7CisrICAgICAgICAgICAgICAgIHZhbCA9IGJzZWFyY2goJnNlYXJjaCwgbm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7CisrICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7CisrCisgICAgICAgICAgICAgICAgIGlmICh2YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdCB0aGlzIHBvaW50IHdlIGhhdmUgMiBpZGVudGljYWwgcHJvcGVydGllcyBvbiB0aGUgc2FtZSBtYXRjaC1zdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICogU2luY2Ugd2UgcHJvY2VzcyBmaWxlcyBpbiBvcmRlciwgd2UganVzdCByZXBsYWNlIHRoZSBwcmV2aW91cyB2YWx1ZS4KK0BAIC0yMDgsNyArMjEwLDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAorICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0uZmlsZV9wcmlvcml0eSA9IGZpbGVfcHJpb3JpdHk7CisgICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyOworICAgICAgICAgbm9kZS0+dmFsdWVzX2NvdW50Kys7CistICAgICAgICBxc29ydF9yKG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOworKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgIHFzb3J0KG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOworKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKyAgICAgICAgIHJldHVybiAwOworIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYyBiL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCitpbmRleCBhYjVkYzdhYjYuLmM3NzdlMzBhYiAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCisrKysgYi9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYworQEAgLTEzMCwxMyArMTMwLDEzIEBAIHN0YXRpYyB2b2lkIHRyaWVfbm9kZV9jbGVhbnVwKHN0cnVjdCB0cmllX25vZGUgKm5vZGUpIHsKKyAgICAgICAgIGZyZWUobm9kZSk7CisgfQorIAorLXN0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2Miwgdm9pZCAqYXJnKSB7Cisrc3RhdGljIHN0cnVjdCB0cmllICp0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWU7Cisrc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyKSB7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMSA9IHYxOworICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDIgPSB2MjsKKy0gICAgICAgIHN0cnVjdCB0cmllICp0cmllID0gYXJnOworIAorLSAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorLSAgICAgICAgICAgICAgICAgICAgICB0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKKysgICAgICAgIHJldHVybiBzdHJjbXAodHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorKyAgICAgICAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworIH0KKyAKKyBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCitAQCAtMTU3LDcgKzE1Nyw5IEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVfb2ZmID0gdiwKKyAgICAgICAgICAgICAgICAgfTsKKyAKKy0gICAgICAgICAgICAgICAgdmFsID0geGJzZWFyY2hfcigmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgICAgICAgICAgdmFsID0gYnNlYXJjaCgmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgaWYgKHZhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlcGxhY2UgZXhpc3RpbmcgZWFybGllciBrZXkgd2l0aCBuZXcgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWwtPnZhbHVlX29mZiA9IHY7CitAQCAtMTc0LDcgKzE3Niw5IEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmtleV9vZmYgPSBrOworICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0udmFsdWVfb2ZmID0gdjsKKyAgICAgICAgIG5vZGUtPnZhbHVlc19jb3VudCsrOworLSAgICAgICAgcXNvcnRfcihub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7CisrICAgICAgICBxc29ydChub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7CisgICAgICAgICByZXR1cm4gMDsKKyB9CisgCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjMtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIzLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWMyYjVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIzLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaApAQCAtMCwwICsxLDk5IEBACitGcm9tIDdiODAyYWRhMTIwN2VkMDBlZDM4NjdiOTgwNGRkMGYzMTY2NDFiOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMCBPY3QgMjAxNyAxNDozMzozMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDIzLzMxXSBkb24ndCBwYXNzIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZyB0byBmYWNjZXNzYXQoKQorCitBdm9pZCB1c2luZyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcuIEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSByaWdodAordGhpbmcgdG8gZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6CisKKyAgaHR0cDovL2xpc3RzLmxhbmRsZXkubmV0L3BpcGVybWFpbC90b3lib3gtbGFuZGxleS5uZXQvMjAxNC1TZXB0ZW1iZXIvMDAzNjEwLmh0bWwKKyAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKKworTm90ZSB0aGF0IGxhY2Nlc3MoKSBpcyBuZXZlciBwYXNzaW5nIEFUX0VBQ0NFU1Mgc28gYSBsb3Qgb2YgdGhlCitkaXNjdXNzaW9uIGluIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdAorKGN1cnJlbnRseSkgYWxsIHN5c3RlbWQgY2FsbGVycyBvZiBsYWNjZXNzKCkgcGFzcyBtb2RlIGFzIEZfT0ssIHNvCitvbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QgYWNjZXNzIHBlcm1pc3Npb25zLgorVGhlcmVmb3JlLCBpbiB0aGlzIGNhc2UsIHRoZSBvbmx5IGRpc3RpY3Rpb24gYmV0d2VlbiBmYWNjZXNzYXQoKQord2l0aCAoZmxhZyA9PSAwKSBhbmQgKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgaXMgdGhlIGJlaGF2aW91cgorZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkIHdpdGgKKyhmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGFuZCBmYWlsIChmbGFnID09IDApLgorCitUaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdAorY2xlYXIgaWYgb3Igd2h5IGl0IG5lZWRzIHRvIHJldHVybiBzdWNjZXNzIGZvciBicm9rZW4gc3ltbGlua3MuIE1heWJlCitqdXN0IGhpc3RvcmljYWwgYW5kIG5vdCBhY3R1YWxseSBuZWNlc3Nhcnkgb3IgZGVzaXJlZCBiZWhhdmlvdXI/CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorLS0tCisgc3JjL2Jhc2ljL2ZzLXV0aWwuaCAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKy0KKyBzcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIHwgIDYgKysrLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaCBiL3NyYy9iYXNpYy9mcy11dGlsLmgKK2luZGV4IDRkYmExZWE1Ni4uOWM0YjAyZWNjIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaAorKysrIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAorQEAgLTUwLDcgKzUwLDI3IEBAIGludCBmY2htb2RfdW1hc2soaW50IGZkLCBtb2RlX3QgbW9kZSk7CisgCisgaW50IGZkX3dhcm5fcGVybWlzc2lvbnMoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkKTsKKyAKKy0jZGVmaW5lIGxhY2Nlc3MocGF0aCwgbW9kZSkgZmFjY2Vzc2F0KEFUX0ZEQ1dELCAocGF0aCksIChtb2RlKSwgQVRfU1lNTElOS19OT0ZPTExPVykKKysvKgorKyAgIEF2b2lkIHVzaW5nIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZy4gSXQgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0IHRoaW5nIHRvCisrICAgZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6CisrCisrICAgICBodHRwOi8vbGlzdHMubGFuZGxleS5uZXQvcGlwZXJtYWlsL3RveWJveC1sYW5kbGV5Lm5ldC8yMDE0LVNlcHRlbWJlci8wMDM2MTAuaHRtbAorKyAgICAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKKysKKysgICBOb3RlIHRoYXQgbGFjY2VzcygpIGlzIG5ldmVyIHBhc3NpbmcgQVRfRUFDQ0VTUyBzbyBhIGxvdCBvZiB0aGUgZGlzY3Vzc2lvbiBpbgorKyAgIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdCAoY3VycmVudGx5KSBhbGwgc3lzdGVtZCBjYWxsZXJzCisrICAgb2YgbGFjY2VzcygpIHBhc3MgbW9kZSBhcyBGX09LLCBzbyBvbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QKKysgICBhY2Nlc3MgcGVybWlzc2lvbnMuIFRoZXJlZm9yZSwgaW4gdGhpcyBjYXNlLCB0aGUgb25seSBkaXN0aWN0aW9uIGJldHdlZW4KKysgICBmYWNjZXNzYXQoKSB3aXRoIChmbGFnID09IDApIGFuZCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBpcyB0aGUKKysgICBiZWhhdmlvdXIgZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkCisrICAgd2l0aCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBhbmQgZmFpbCAoZmxhZyA9PSAwKS4KKysKKysgICBUaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdCBjbGVhciBpZgorKyAgIG9yIHdoeSBpdCBuZWVkcyB0byByZXR1cm4gc3VjY2VzcyBmb3IgYnJva2VuIHN5bWxpbmtzLiBNYXliZSBqdXN0IGhpc3RvcmljYWwKKysgICBhbmQgbm90IGFjdHVhbGx5IG5lY2Vzc2FyeSBvciBkZXNpcmVkIGJlaGF2aW91cj8KKysqLworKworKyNkZWZpbmUgbGFjY2VzcyhwYXRoLCBtb2RlKSBmYWNjZXNzYXQoQVRfRkRDV0QsIChwYXRoKSwgKG1vZGUpLCAwKQorIAorIGludCB0b3VjaF9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wgcGFyZW50cywgdXNlY190IHN0YW1wLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgbW9kZV90IG1vZGUpOworIGludCB0b3VjaChjb25zdCBjaGFyICpwYXRoKTsKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIGIvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYworaW5kZXggM2MyNWFhNTM0Li41NzRjYTcxYzcgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCisrKysgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCitAQCAtNzEsNyArNzEsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG9wZW4gcm9vdCBmaWxlIHN5c3RlbTogJW0iKTsKKyAKKyAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFTEVNRU5UU09GKHRhYmxlKTsgaSArKykgeworLSAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCB0YWJsZVtpXS5kaXIsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpID49IDApCisrICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHRhYmxlW2ldLmRpciwgRl9PSywgMCkgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAKKyAgICAgICAgICAgICAgICAgaWYgKHRhYmxlW2ldLnRhcmdldCkgeworQEAgLTc5LDcgKzc5LDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBvbmUgb2YgdGhlIHRhcmdldHMgZXhpc3RzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMU1RSX0ZPUkVBQ0gocywgdGFibGVbaV0udGFyZ2V0KSB7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBzLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBzLCBGX09LLCAwKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgYSBzcGVjaWZpYyBmaWxlIGV4aXN0cyBhdCB0aGUgdGFyZ2V0IHBhdGggKi8KK0BAIC05MCw3ICs5MCw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX29vbSgpOworIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBwLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHAsIEZfT0ssIDApIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNC1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI0LWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU3ZTYyMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNC1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNzZjNzFhYTg4OTE1NWYyOWJlMWQ1ZDJiNzRhMmM0ZmFhNTkwOWM4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEyIFNlcCAyMDE1IDE4OjUzOjMxICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjQvMzFdIGNvbXBhcmlzb25fZm5fdCBpcyBnbGliYyBzcGVjaWZpYywgdXNlIHJhdyBzaWduYXR1cmUgaW4KKyBmdW5jdGlvbiBwb2ludGVyCisKK21ha2UgaXQgd29yayB3aXRoIG11c2wgd2hlcmUgY29tcGFyaXNvbl9mbl90IGlzIG5vdCBwcm92aWRlZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNpYy91dGlsLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRpbC5oIGIvc3JjL2Jhc2ljL3V0aWwuaAoraW5kZXggOWQxYjEwNzU2Li4xMmRiNTNhOTMgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvdXRpbC5oCitAQCAtOTUsNyArOTUsNyBAQCB2b2lkICp4YnNlYXJjaF9yKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwKKyAgKiBOb3JtYWwgcXNvcnQgcmVxdWlyZXMgYmFzZSB0byBiZSBub25udWxsLiBIZXJlIHdlcmUgcmVxdWlyZQorICAqIHRoYXQgb25seSBpZiBubWVtYiA+IDAuCisgICovCistc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgY29tcGFyaXNvbl9mbl90IGNvbXBhcikgeworK3N0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGludCAoKmNvbXBhcikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSB7CisgICAgICAgICBpZiAobm1lbWIgPD0gMSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworIAorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI1LURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjUtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mzc2YThmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI1LURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBhMGIxNDk2MzIyZjRkN2NlODNmNGZiZmQyYTkwYjkxZDA3MjFmNjQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjQgT2N0IDIwMTcgMjM6MDg6MjQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyNS8zMV0gRGVmaW5lIF9QQVRIX1dUTVBYIGFuZCBfUEFUSF9VVE1QWCBpZiBub3QgZGVmaW5lZAorCitNdXNsIG5lZWRzIHRoZXNlIGRlZmluZXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvc2hhcmVkL3V0bXAtd3RtcC5jIHwgOCArKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMgYi9zcmMvc2hhcmVkL3V0bXAtd3RtcC5jCitpbmRleCBjYWIxY2Q2YTIuLmY1ZWVkYWMxOCAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKKysrKyBiL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDx1dG1wLmg+CisgI2luY2x1ZGUgPHV0bXB4Lmg+CisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKK0BAIC00Miw2ICs0MywxMyBAQAorICNpbmNsdWRlICJ1dGlsLmgiCisgI2luY2x1ZGUgInV0bXAtd3RtcC5oIgorIAorKyNpZiBkZWZpbmVkIF9QQVRIX1VUTVAgJiYgIWRlZmluZWQgX1BBVEhfVVRNUFgKKysjIGRlZmluZSBfUEFUSF9VVE1QWCBfUEFUSF9VVE1QCisrI2VuZGlmCisrI2lmIGRlZmluZWQgX1BBVEhfV1RNUCAmJiAhZGVmaW5lZCBfUEFUSF9XVE1QWAorKyMgZGVmaW5lIF9QQVRIX1dUTVBYIF9QQVRIX1dUTVAKKysjZW5kaWYKKysKKyBpbnQgdXRtcF9nZXRfcnVubGV2ZWwoaW50ICpydW5sZXZlbCwgaW50ICpwcmV2aW91cykgeworICAgICAgICAgc3RydWN0IHV0bXB4ICpmb3VuZCwgbG9va3VwID0geyAudXRfdHlwZSA9IFJVTl9MVkwgfTsKKyAgICAgICAgIGludCByOworLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI2LVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNi1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZkNzVhZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNi1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKQEAgLTAsMCArMSw4OSBAQAorRnJvbSA4OGM0OGVhODRkYjZmZGExOWRmYWViNjQ1NDVmY2NmOGZhMDUyNWVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMTM6MDA6NDEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyNi8zMV0gVXNlIHVpbnRtYXhfdCBmb3IgaGFuZGxpbmcgcmxpbV90CisKK1BSSXV7MzIsNjR9IGlzIG5vdCByaWdodCBmb3JtYXQgdG8gcmVwcmVzZW50IHJsaW1fdCB0eXBlCit0aGVyZWZvcmUgdXNlICVqdSBhbmQgdHlwZWNhc3QgdGhlIHJsaW1fdCB2YXJpYWJsZXMgdG8KK3VpbnRtYXhfdC4KKworRml4ZXMgcG9ydGFibGlsaXR5IGVycm9ycyBsaWtlCisKK2V4ZWN1dGUuYzozNDQ2OjM2OiBlcnJvcjogZm9ybWF0ICclbHUnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgNSBoYXMgdHlwZSAncmxpbV90IHtha2EgbG9uZyBsb25nIHVuc2lnbmVkIGludH0nIFstV2Vycm9yPWZvcm1hdD1dCit8ICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzOiAiIFJMSU1fRk1UICJcbiIsCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX21heCk7Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzcxOTldCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvYmFzaWMvZm9ybWF0LXV0aWwuaCB8IDggLS0tLS0tLS0KKyBzcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyB8IDggKysrKy0tLS0KKyBzcmMvY29yZS9leGVjdXRlLmMgICAgICB8IDggKysrKy0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaCBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCitpbmRleCBkOWE3OGY3ODEuLjlhMWJjMjFkNyAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAorQEAgLTYxLDE0ICs2MSw2IEBACisgIyAgZGVmaW5lIFBSSV9USU1FWCAibGkiCisgI2VuZGlmCisgCistI2lmIFNJWkVPRl9STElNX1QgPT0gOAorLSMgIGRlZmluZSBSTElNX0ZNVCAiJSIgUFJJdTY0CistI2VsaWYgU0laRU9GX1JMSU1fVCA9PSA0CistIyAgZGVmaW5lIFJMSU1fRk1UICIlIiBQUkl1MzIKKy0jZWxzZQorLSMgIGVycm9yIFVua25vd24gcmxpbV90IHNpemUKKy0jZW5kaWYKKy0KKyAjaWYgU0laRU9GX0RFVl9UID09IDgKKyAjICBkZWZpbmUgREVWX0ZNVCAiJSIgUFJJdTY0CisgI2VsaWYgU0laRU9GX0RFVl9UID09IDQKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCitpbmRleCAwMDY0ODIxMWQuLmRmM2Q5ZWNjMSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYworQEAgLTI4NiwxMyArMjg2LDEzIEBAIGludCBybGltaXRfZm9ybWF0KGNvbnN0IHN0cnVjdCBybGltaXQgKnJsLCBjaGFyICoqcmV0KSB7CisgICAgICAgICBpZiAocmwtPnJsaW1fY3VyID49IFJMSU1fSU5GSU5JVFkgJiYgcmwtPnJsaW1fbWF4ID49IFJMSU1fSU5GSU5JVFkpCisgICAgICAgICAgICAgICAgIHMgPSBzdHJkdXAoImluZmluaXR5Iik7CisgICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSkKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiaW5maW5pdHk6IiBSTElNX0ZNVCwgcmwtPnJsaW1fbWF4KTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiaW5maW5pdHk6JWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9tYXgpOworICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fbWF4ID49IFJMSU1fSU5GSU5JVFkpCistICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgUkxJTV9GTVQgIjppbmZpbml0eSIsIHJsLT5ybGltX2N1cik7CisrICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgIiVqdTppbmZpbml0eSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyKTsKKyAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX2N1ciA9PSBybC0+cmxpbV9tYXgpCistICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgUkxJTV9GTVQsIHJsLT5ybGltX2N1cik7CisrICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgIiVqdSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyKTsKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCAiOiIgUkxJTV9GTVQsIHJsLT5ybGltX2N1ciwgcmwtPnJsaW1fbWF4KTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1OiVqdSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyLCAodWludG1heF90KXJsLT5ybGltX21heCk7CisgCisgICAgICAgICBpZiAoIXMpCisgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4ZWN1dGUuYyBiL3NyYy9jb3JlL2V4ZWN1dGUuYworaW5kZXggMGRmMzk3MWRmLi5hYWJkZGRiNjggMTAwNjQ0CistLS0gYS9zcmMvY29yZS9leGVjdXRlLmMKKysrKyBiL3NyYy9jb3JlL2V4ZWN1dGUuYworQEAgLTM5OTEsMTAgKzM5OTEsMTAgQEAgdm9pZCBleGVjX2NvbnRleHRfZHVtcChFeGVjQ29udGV4dCAqYywgRklMRSogZiwgY29uc3QgY2hhciAqcHJlZml4KSB7CisgCisgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUkxJTV9OTElNSVRTOyBpKyspCisgICAgICAgICAgICAgICAgIGlmIChjLT5ybGltaXRbaV0pIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzOiAiIFJMSU1fRk1UICJcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksIGMtPnJsaW1pdFtpXS0+cmxpbV9tYXgpOworLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXNTb2Z0OiAiIFJMSU1fRk1UICJcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksIGMtPnJsaW1pdFtpXS0+cmxpbV9jdXIpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICVqdVxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgKHVpbnRtYXhfdCljLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzU29mdDogJWp1XG4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCAodWludG1heF90KWMtPnJsaW1pdFtpXS0+cmxpbV9jdXIpOworICAgICAgICAgICAgICAgICB9CisgCisgICAgICAgICBpZiAoYy0+aW9wcmlvX3NldCkgeworLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI3LXJlbW92ZS1ub2JvZHktdXNlci1ncm91cC1jaGVja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNy1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJmNTliMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNy1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSA1MzU0ZWI3NjdkMWViYTJlYzQxZWIyNzNmNmI2NTdmNGE2MzBjYThhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCA5IEphbiAyMDE4IDE0OjQ1OjQ2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMjcvMzFdIHJlbW92ZSBub2JvZHkgdXNlci9ncm91cCBjaGVja2luZworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBtZXNvbi5idWlsZCB8IDM3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCBmNjUxNWU5N2MuLjFiOTQ3YWRhYyAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTcwMCw0MyArNzAwLDYgQEAgc3Vic3RzLnNldCgnY29udGFpbmVydWlkYmFzZW1heCcsIGNvbnRhaW5lcl91aWRfYmFzZV9tYXgpCisgbm9ib2R5X3VzZXIgPSBnZXRfb3B0aW9uKCdub2JvZHktdXNlcicpCisgbm9ib2R5X2dyb3VwID0gZ2V0X29wdGlvbignbm9ib2R5LWdyb3VwJykKKyAKKy1nZXRlbnRfcmVzdWx0ID0gcnVuX2NvbW1hbmQoJ2dldGVudCcsICdwYXNzd2QnLCAnNjU1MzQnKQorLWlmIGdldGVudF9yZXN1bHQucmV0dXJuY29kZSgpID09IDAKKy0gICAgICAgIG5hbWUgPSBnZXRlbnRfcmVzdWx0LnN0ZG91dCgpLnNwbGl0KCc6JylbMF0KKy0gICAgICAgIGlmIG5hbWUgIT0gbm9ib2R5X3VzZXIKKy0gICAgICAgICAgICAgICAgbWVzc2FnZSgnV0FSTklORzpcbicgKworLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFRoZSBsb2NhbCB1c2VyIHdpdGggdGhlIFVJRCA2NTUzNCBkb2VzIG5vdCBtYXRjaCB0aGUgY29uZmlndXJlZCB1c2VyIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSB1c2VyIChpdHMgbmFtZSBpcyBAMUApLlxuJy5mb3JtYXQobm9ib2R5X3VzZXIsIG5hbWUpICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBZb3VyIGJ1aWxkIHdpbGwgcmVzdWx0IGluIGFuIHVzZXIgdGFibGUgc2V0dXAgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbG9jYWwgc3lzdGVtLicpCistICAgICAgICBlbmRpZgorLWVuZGlmCistaWRfcmVzdWx0ID0gcnVuX2NvbW1hbmQoJ2lkJywgJy11Jywgbm9ib2R5X3VzZXIpCistaWYgaWRfcmVzdWx0LnJldHVybmNvZGUoKSA9PSAwCistICAgICAgICBpZCA9IGlkX3Jlc3VsdC5zdGRvdXQoKS50b19pbnQoKQorLSAgICAgICAgaWYgaWQgIT0gNjU1MzQKKy0gICAgICAgICAgICAgICAgbWVzc2FnZSgnV0FSTklORzpcbicgKworLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFRoZSBsb2NhbCB1c2VyIHdpdGggdGhlIGNvbmZpZ3VyZWQgdXNlciBuYW1lICJAMEAiIG9mIHRoZSBub2JvZHkgdXNlciBkb2VzIG5vdCBoYXZlIFVJRCA2NTUzNCAoaXQgaGFzIEAxQCkuXG4nLmZvcm1hdChub2JvZHlfdXNlciwgaWQpICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBZb3VyIGJ1aWxkIHdpbGwgcmVzdWx0IGluIGFuIHVzZXIgdGFibGUgc2V0dXAgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbG9jYWwgc3lzdGVtLicpCistICAgICAgICBlbmRpZgorLWVuZGlmCistCistZ2V0ZW50X3Jlc3VsdCA9IHJ1bl9jb21tYW5kKCdnZXRlbnQnLCAnZ3JvdXAnLCAnNjU1MzQnKQorLWlmIGdldGVudF9yZXN1bHQucmV0dXJuY29kZSgpID09IDAKKy0gICAgICAgIG5hbWUgPSBnZXRlbnRfcmVzdWx0LnN0ZG91dCgpLnNwbGl0KCc6JylbMF0KKy0gICAgICAgIGlmIG5hbWUgIT0gbm9ib2R5X2dyb3VwCistICAgICAgICAgICAgICAgIG1lc3NhZ2UoJ1dBUk5JTkc6XG4nICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBUaGUgbG9jYWwgZ3JvdXAgd2l0aCB0aGUgR0lEIDY1NTM0IGRvZXMgbm90IG1hdGNoIHRoZSBjb25maWd1cmVkIGdyb3VwIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSBncm91cCAoaXRzIG5hbWUgaXMgQDFAKS5cbicuZm9ybWF0KG5vYm9keV9ncm91cCwgbmFtZSkgKworLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFlvdXIgYnVpbGQgd2lsbCByZXN1bHQgaW4gYW4gZ3JvdXAgdGFibGUgc2V0dXAgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbG9jYWwgc3lzdGVtLicpCistICAgICAgICBlbmRpZgorLWVuZGlmCistaWRfcmVzdWx0ID0gcnVuX2NvbW1hbmQoJ2lkJywgJy1nJywgbm9ib2R5X2dyb3VwKQorLWlmIGlkX3Jlc3VsdC5yZXR1cm5jb2RlKCkgPT0gMAorLSAgICAgICAgaWQgPSBpZF9yZXN1bHQuc3Rkb3V0KCkudG9faW50KCkKKy0gICAgICAgIGlmIGlkICE9IDY1NTM0CistICAgICAgICAgICAgICAgIG1lc3NhZ2UoJ1dBUk5JTkc6XG4nICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBUaGUgbG9jYWwgZ3JvdXAgd2l0aCB0aGUgY29uZmlndXJlZCBncm91cCBuYW1lICJAMEAiIG9mIHRoZSBub2JvZHkgZ3JvdXAgZG9lcyBub3QgaGF2ZSBVSUQgNjU1MzQgKGl0IGhhcyBAMUApLlxuJy5mb3JtYXQobm9ib2R5X2dyb3VwLCBpZCkgKworLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFlvdXIgYnVpbGQgd2lsbCByZXN1bHQgaW4gYW4gZ3JvdXAgdGFibGUgc2V0dXAgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbG9jYWwgc3lzdGVtLicpCistICAgICAgICBlbmRpZgorLWVuZGlmCisgaWYgbm9ib2R5X3VzZXIgIT0gbm9ib2R5X2dyb3VwIGFuZCBub3QgKG5vYm9keV91c2VyID09ICdub2JvZHknIGFuZCBub2JvZHlfZ3JvdXAgPT0gJ25vZ3JvdXAnKQorICAgICAgICAgbWVzc2FnZSgnV0FSTklORzpcbicgKworICAgICAgICAgICAgICAgICAnICAgICAgICBUaGUgY29uZmlndXJlZCB1c2VyIG5hbWUgIkAwQCIgYW5kIGdyb3VwIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSB1c2VyL2dyb3VwIGFyZSBub3QgZXF1aXZhbGVudC5cbicuZm9ybWF0KG5vYm9keV91c2VyLCBub2JvZHlfZ3JvdXApICsKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWMzMTM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gMDNjZGQzM2JlNjJkYjRjNzJhN2ZjZjIxYjYxZDBkMDU2YzIzYzZhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MzY6MzIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyOC8zMV0gYWRkIG1pc3NpbmcgRlRXXyBtYWNyb3MgZm9yIG11c2wKKworVGhpcyBpcyB0byBhdm9pZCBidWlsZCBmYWlsdXJlcyBsaWtlIGJlbG93IGZvciBtdXNsLgorCisgIGxvY2FsZS11dGlsLmM6Mjk2OjI0OiBlcnJvcjogJ0ZUV19TVE9QJyB1bmRlY2xhcmVkCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvYmFzaWMvbWlzc2luZy5oIHwgMjAgKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDFhZWUzMzQ2YS4uNWI5ZmRlNjkyIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTIwNyw2ICsyMDcsMjYgQEAgc3RydWN0IHNvY2thZGRyX3ZtIHsKKyAjZGVmaW5lIEJUUkZTX1FHUk9VUF9MRVZFTF9TSElGVCA0OAorICNlbmRpZgorIAorKyNpZm5kZWYgRlRXX0FDVElPTlJFVFZBTAorKyNkZWZpbmUgRlRXX0FDVElPTlJFVFZBTCAxNgorKyNlbmRpZgorKworKyNpZm5kZWYgRlRXX0NPTlRJTlVFCisrI2RlZmluZSBGVFdfQ09OVElOVUUgMAorKyNlbmRpZgorKworKyNpZm5kZWYgRlRXX1NUT1AKKysjZGVmaW5lIEZUV19TVE9QIDEKKysjZW5kaWYKKysKKysjaWZuZGVmIEZUV19TS0lQX1NVQlRSRUUKKysjZGVmaW5lIEZUV19TS0lQX1NVQlRSRUUgMgorKyNlbmRpZgorKworKyNpZm5kZWYgRlRXX1NLSVBfU0lCTElOR1MKKysjZGVmaW5lIEZUV19TS0lQX1NJQkxJTkdTIDMKKysjZW5kaWYKKysKKyAjaWYgISBIQVZFX0xJTlVYX0JUUkZTX0gKKyAjZGVmaW5lIEJUUkZTX0lPQ19RR1JPVVBfQVNTSUdOIF9JT1coQlRSRlNfSU9DVExfTUFHSUMsIDQxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidHJmc19pb2N0bF9xZ3JvdXBfYXNzaWduX2FyZ3MpCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjktbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUVOQUJMRV9NWUhPUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyOS1uc3MtbXltYWNoaW5lcy1CdWlsZC1jb25kaXRpb25hbGx5LXdoZW4tRU5BQkxFX01ZSE9TLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNzI0OWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjktbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUVOQUJMRV9NWUhPUy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDU4NDVjODJkMTAxNmEzZTNmMjY5NjE4MGQ1YWM5MWI0Njk1MDU0MGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDEyOjU2OjIxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMjkvMzFdIG5zcy1teW1hY2hpbmVzOiBCdWlsZCBjb25kaXRpb25hbGx5IHdoZW4KKyBFTkFCTEVfTVlIT1NUTkFNRSBpcyBzZXQKKworRml4ZXMgYnVpbGQgZmFpbHVyZXMgd2hlbiBidWlsZGluZyB3aXRoIC0tZGlzYWJsZS1teWhvc3RuYW1lCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgfCAxMSArKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAxYjk0N2FkYWMuLjFlZDRkZGU3MiAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTEzNTEsMTIgKzEzNTEsMTUgQEAgdGVzdF9kbG9wZW4gPSBleGVjdXRhYmxlKAorICAgICAgICAgbGlua193aXRoIDogW2xpYmJhc2ljXSwKKyAgICAgICAgIGRlcGVuZGVuY2llcyA6IFtsaWJkbF0pCisgCistZm9yZWFjaCB0dXBsZSA6IFtbJ215aG9zdG5hbWUnLCAnRU5BQkxFX01ZSE9TVE5BTUUnXSwKKy0gICAgICAgICAgICAgICAgIFsnc3lzdGVtZCcsICAgICdFTkFCTEVfTlNTX1NZU1RFTUQnXSwKKy0gICAgICAgICAgICAgICAgIFsnbXltYWNoaW5lcycsICdFTkFCTEVfTUFDSElORUQnXSwKKy0gICAgICAgICAgICAgICAgIFsncmVzb2x2ZScsICAgICdFTkFCTEVfUkVTT0xWRSddXQorK2ZvcmVhY2ggdHVwbGUgOiBbWydteWhvc3RuYW1lJywgJ0VOQUJMRV9NWUhPU1ROQU1FJywgICcnXSwKKysgICAgICAgICAgICAgICAgIFsnc3lzdGVtZCcsICAgICdFTkFCTEVfTlNTX1NZU1RFTUQnLCAnJ10sCisrICAgICAgICAgICAgICAgICBbJ215bWFjaGluZXMnLCAnRU5BQkxFX01BQ0hJTkVEJywgICAgJ0VOQUJMRV9NWUhPU1ROQU1FJ10sCisrICAgICAgICAgICAgICAgICBbJ3Jlc29sdmUnLCAgICAnRU5BQkxFX1JFU09MVkUnLCAgICAgJyddXQorIAorICAgICAgICAgY29uZGl0aW9uID0gdHVwbGVbMV0gPT0gJycgb3IgY29uZi5nZXQodHVwbGVbMV0pID09IDEKKysgICAgICAgIGlmIHR1cGxlWzJdICE9ICcnIGFuZCBjb25kaXRpb24KKysgICAgICAgICAgICAgICAgY29uZGl0aW9uID0gY29uZi5nZXQodHVwbGVbMl0pID09IDEKKysgICAgICAgIGVuZGlmCisgICAgICAgICBpZiBjb25kaXRpb24KKyAgICAgICAgICAgICAgICAgbW9kdWxlID0gdHVwbGVbMF0KKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YwYjRiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gYjdlYWNkZjAzODhmOTMwZmM1MjcxYmRlY2ZhNDY2MTJjNzFkZDY1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjcgRmViIDIwMTggMTM6Mjc6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzMC8zMV0gZml4IG1pc3Npbmcgb2YgX19yZWdpc3Rlcl9hdGZvcmsgZm9yIG5vbi1nbGliYyBidWlsZHMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyB8IDcgKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworaW5kZXggZGM3YzllZjllLi44NWNlOGEwY2MgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworQEAgLTM5LDYgKzM5LDkgQEAKKyAjaWYgSEFWRV9WQUxHUklORF9WQUxHUklORF9ICisgI2luY2x1ZGUgPHZhbGdyaW5kL3ZhbGdyaW5kLmg+CisgI2VuZGlmCisrI2lmbmRlZiBfX0dMSUJDX18KKysjaW5jbHVkZSA8cHRocmVhZC5oPgorKyNlbmRpZgorIAorICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgImFyY2hpdGVjdHVyZS5oIgorQEAgLTExMTIsMTEgKzExMTUsMTUgQEAgdm9pZCByZXNldF9jYWNoZWRfcGlkKHZvaWQpIHsKKyAgICAgICAgIGNhY2hlZF9waWQgPSBDQUNIRURfUElEX1VOU0VUOworIH0KKyAKKysjaWZkZWYgX19HTElCQ19fCisgLyogV2UgdXNlIGdsaWJjIF9fcmVnaXN0ZXJfYXRmb3JrKCkgKyBfX2Rzb19oYW5kbGUgZGlyZWN0bHkgaGVyZSwgYXMgdGhleSBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBnbGliYworICAqIGhlYWRlcnMuIF9fcmVnaXN0ZXJfYXRmb3JrKCkgaXMgbW9zdGx5IGVxdWl2YWxlbnQgdG8gcHRocmVhZF9hdGZvcmsoKSwgYnV0IGRvZXNuJ3QgcmVxdWlyZSB1cyB0byBsaW5rIGFnYWluc3QKKyAgKiBsaWJwdGhyZWFkLCBhcyBpdCBpcyBwYXJ0IG9mIGdsaWJjIGFueXdheS4gKi8KKyBleHRlcm4gaW50IF9fcmVnaXN0ZXJfYXRmb3JrKHZvaWQgKCpwcmVwYXJlKSAodm9pZCksIHZvaWQgKCpwYXJlbnQpICh2b2lkKSwgdm9pZCAoKmNoaWxkKSAodm9pZCksIHZvaWQgKiBfX2Rzb19oYW5kbGUpOworIGV4dGVybiB2b2lkKiBfX2Rzb19oYW5kbGUgX19hdHRyaWJ1dGVfXyAoKF9fd2Vha19fKSk7CisrI2Vsc2UKKysjZGVmaW5lIF9fcmVnaXN0ZXJfYXRmb3JrKHByZXBhcmUscGFyZW50LGNoaWxkLGRzbykgcHRocmVhZF9hdGZvcmsocHJlcGFyZSxwYXJlbnQsY2hpbGQpCisrI2VuZGlmCisgCisgcGlkX3QgZ2V0cGlkX2NhY2hlZCh2b2lkKSB7CisgICAgICAgICBwaWRfdCBjdXJyZW50X3ZhbHVlOworLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMxLWZpeC1taXNzaW5nLVVMT05HX0xPTkdfTUFYLWRlZmluaXRpb24taW4tY2FzZS1vZi1tdXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzEtZml4LW1pc3NpbmctVUxPTkdfTE9OR19NQVgtZGVmaW5pdGlvbi1pbi1jYXNlLW9mLW11cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTljNGI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMxLWZpeC1taXNzaW5nLVVMT05HX0xPTkdfTUFYLWRlZmluaXRpb24taW4tY2FzZS1vZi1tdXMucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBhZGNkN2U0MjZmY2Q4MGU3NTQyNzRhNzMwMjIxZDFhMWY0OWRiYzIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAxNDowMTozMCArMDgwMAorU3ViamVjdDogW1BBVENIIDMxLzMxXSBmaXggbWlzc2luZyBVTE9OR19MT05HX01BWCBkZWZpbml0aW9uIGluIGNhc2Ugb2YgbXVzbAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCitpbmRleCA1YjlmZGU2OTIuLmE5MjJmMTM0NiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKKysrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK0BAIC03Miw2ICs3MiwxMCBAQCBzdHJ1Y3Qgc29ja2FkZHJfdm0geworIH07CisgI2VuZGlmIC8qICFIQVZFX0xJTlVYX1ZNX1NPQ0tFVFNfSCAqLworIAorKyNpZm5kZWYgVUxPTkdfTE9OR19NQVgKKysjZGVmaW5lIFVMT05HX0xPTkdfTUFYIFVMTE9OR19NQVgKKysjZW5kaWYKKysKKyAjaWZuZGVmIFJMSU1JVF9SVFRJTUUKKyAjZGVmaW5lIFJMSU1JVF9SVFRJTUUgMTUKKyAjZW5kaWYKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMi1tZW1mZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMi1tZW1mZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2NmZDYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMyLW1lbWZkLnBhdGNoCkBAIC0wLDAgKzEsMjcyIEBACittaXNzaW5nX3N5c2NhbGw6IHdoZW4gYWRkaW5nIHN5c2NhbGwgcmVwbGFjZW1lbnRzLCB1c2UgZGlmZmVyZW50IG5hbWVzICgKKworIzgyMjkpCisKK0luIG1lc29uLmJ1aWxkIHdlIGNoZWNrIHRoYXQgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgdXNpbmc6CisgICAgbWVzb24uZ2V0X2NvbXBpbGVyKCdjJykuaGFzX2Z1bmN0aW9uKCdmb28nKQord2hpY2ggY2hlY2tzIHRoZSBmb2xsb3dpbmc6CistIGlmIF9fc3R1Yl9mb28gb3IgX19zdHViX19fZm9vIGFyZSBkZWZpbmVkLCByZXR1cm4gZmFsc2UKKy0gaWYgZm9vIGlzIGRlY2xhcmVkIChhIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIGNhbiBiZSB0YWtlbiksIHJldHVybiB0cnVlCistIG90aGVyd2lzZSBjaGVjayBmb3IgX19idWlsdGluX21lbWZkX2NyZWF0ZQorCitfc3R1YiBpcyBkb2N1bWVudGVkIGJ5IGdsaWJjIGFzCisgICBJdCBkZWZpbmVzIGEgc3ltYm9sICdfX3N0dWJfRlVOQ1RJT04nIGZvciBlYWNoIGZ1bmN0aW9uCisgICBpbiB0aGUgQyBsaWJyYXJ5IHdoaWNoIGlzIGEgc3R1YiwgbWVhbmluZyBpdCB3aWxsIGZhaWwKKyAgIGV2ZXJ5IHRpbWUgY2FsbGVkLCB1c3VhbGx5IHNldHRpbmcgZXJybm8gdG8gRU5PU1lTLgorCitTbyBpZiBfX3N0dWIgaXMgZGVmaW5lZCwgd2Uga25vdyB3ZSBkb24ndCB3YW50IHRvIHVzZSB0aGUgZ2xpYmMgdmVyc2lvbiwgYnV0Cit0aGlzIGRvZXNuJ3QgdGVsbCB1cyBpZiB0aGUgbmFtZSBpdHNlbGYgaXMgZGVmaW5lZCBvciBub3QuIElmIGl0IF9pc18gZGVmaW5lZCwKK2FuZCB3ZSBkZWZpbmUgb3VyIHJlcGxhY2VtZW50IGFzIGFuIGlubGluZSBzdGF0aWMgZnVuY3Rpb24sIHdlIGdldCBhbiBlcnJvcjoKKworSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3NyYy9iYXNpYy9taXNzaW5nLmg6MTM1ODowLAorICAgICAgICAgICAgICAgICBmcm9tIC4uL3NyYy9iYXNpYy91dGlsLmg6NDcsCisgICAgICAgICAgICAgICAgIGZyb20gLi4vc3JjL2Jhc2ljL2NhbGVuZGFyc3BlYy5oOjI5LAorICAgICAgICAgICAgICAgICBmcm9tIC4uL3NyYy9iYXNpYy9jYWxlbmRhcnNwZWMuYzozNDoKKy4uL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaDo2NToxOTogZXJyb3I6IHN0YXRpYyBkZWNsYXJhdGlvbiBvZiAnbWVtZmRfY3JlYXRlJyBmb2xsb3dzIG5vbi1zdGF0aWMgZGVjbGFyYXRpb24KKyBzdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKSB7CisgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+CisuLi4vdXNyL2luY2x1ZGUvYml0cy9tbWFuLXNoYXJlZC5oOjQ2OjU6IG5vdGU6IHByZXZpb3VzIGRlY2xhcmF0aW9uIG9mICdtZW1mZF9jcmVhdGUnIHdhcyBoZXJlCisgaW50IG1lbWZkX2NyZWF0ZSAoY29uc3QgY2hhciAqX19uYW1lLCB1bnNpZ25lZCBpbnQgX19mbGFncykgX19USFJPVzsKKyAgICAgXn5+fn5+fn5+fn5+CisKK1RvIGF2b2lkIHRoaXMgcHJvYmxlbSwgY2FsbCBvdXIgaW5saW5lIGZ1bmN0aW9ucyBkaWZmZXJlbnQgdGhhbiBnbGliYywKK2FuZCB1c2UgYSAjZGVmaW5lIHRvIG1hcCB0aGUgb2ZmaWNpYWwgbmFtZSB0byBvdXIgcmVwbGFjZW1lbnQuCisKK0ZpeGVzICM4MDk5LgorCit2MjoKKy0gdXNlICJtaXNzaW5nXyIgYXMgdGhlIHByZWZpeCBpbnN0ZWFkIG9mICJfIgorCit2MzoKKy0gcmViYXNlIGFuZCB1cGRhdGUgZm9yIHN0YXR4KCkKKworICBVbmZvcnR1bmF0ZWx5ICJzdGF0eCIgaXMgYWxzbyBwcmVzZW50IGluICJzdHJ1Y3Qgc3RhdHgiLCBzbyB0aGUgZGVmaW5lCisgIGNhdXNlcyBpc3N1ZXMuIFdvcmsgYXJvdW5kIHRoaXMgYnkgdXNpbmcgYSB0eXBlZGVmLgorCitJIGNoZWNrZWQgdGhhdCBzeXN0ZW1kIGNvbXBpbGVzIHdpdGggY3VycmVudCBnbGliYworKGdsaWJjLWRldmVsLTIuMjYtMjQuZmMyNy54ODZfNjQpIGlmIEhBVkVfTUVNRkRfQ1JFQVRFLCBIQVZFX0dFVFRJRCwKK0hBVkVfUElWT1RfUk9PVCwgSEFWRV9TRVROUywgSEFWRV9SRU5BTUVBVDIsIEhBVkVfS0NNUCwgSEFWRV9LRVlDVEwsCitIQVZFX0NPUFlfRklMRV9SQU5HRSwgSEFWRV9CUEYsIEhBVkVfU1RBVFggYXJlIGZvcmNlZCB0byAwLgorCitTZXR0aW5nIEhBVkVfTkFNRV9UT19IQU5ETEVfQVQgdG8gMCBjYXVzZXMgYW4gaXNzdWUsIGJ1dCBpdCdzIG5vdCBiZWNhdXNlIG9mCit0aGUgZGVmaW5lLCBidXQgYmVjYXVzZSBvZiBzdHJ1Y3QgZmlsZV9oYW5kbGUuCisKKworYmFja3BvcnQgaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9jb21taXQvNTE4N2RkMmM0MDNjYWY5MmQwOWYzNDkxZTQxZjFjZWIzZjEwNDkxZgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9pc3N1ZXMvODA5OV0KK0luZGV4OiBnaXQvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCisrKysgZ2l0L3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAorQEAgLTI2LDkgKzI2LDExIEBACisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorICNpZiAhSEFWRV9QSVZPVF9ST09UCistc3RhdGljIGlubGluZSBpbnQgcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkgeworK3N0YXRpYyBpbmxpbmUgaW50IG1pc3NpbmdfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkgeworICAgICAgICAgcmV0dXJuIHN5c2NhbGwoU1lTX3Bpdm90X3Jvb3QsIG5ld19yb290LCBwdXRfb2xkKTsKKyB9CisrCisrIyAgZGVmaW5lIHBpdm90X3Jvb3QgbWlzc2luZ19waXZvdF9yb290CisgI2VuZGlmCisgCisgI2lmICFIQVZFX0NBTk9OSUNBTElaRV9GSUxFX05BTUUKK0BAIC02OCw3ICs3MCw3IEBAIHN0YXRpYyBpbmxpbmUgY2hhciAqY2Fub25pY2FsaXplX2ZpbGVfbmEKKyAjICAgIGVuZGlmCisgIyAgZW5kaWYKKyAKKy1zdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKSB7Cisrc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19tZW1mZF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKSB7CisgIyAgaWZkZWYgX19OUl9tZW1mZF9jcmVhdGUKKyAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfbWVtZmRfY3JlYXRlLCBuYW1lLCBmbGFncyk7CisgIyAgZWxzZQorQEAgLTc2LDYgKzc4LDggQEAgc3RhdGljIGlubGluZSBpbnQgbWVtZmRfY3JlYXRlKGNvbnN0IGNoYQorICAgICAgICAgcmV0dXJuIC0xOworICMgIGVuZGlmCisgfQorKworKyMgIGRlZmluZSBtZW1mZF9jcmVhdGUgbWlzc2luZ19tZW1mZF9jcmVhdGUKKyAjZW5kaWYKKyAKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworQEAgLTExNSw3ICsxMTksNyBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhCisgIyAgICBlbmRpZgorICMgIGVuZGlmCisgCistc3RhdGljIGlubGluZSBpbnQgZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBmbGFncykgeworK3N0YXRpYyBpbmxpbmUgaW50IG1pc3NpbmdfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBmbGFncykgeworICMgIGlmZGVmIF9fTlJfZ2V0cmFuZG9tCisgICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX2dldHJhbmRvbSwgYnVmZmVyLCBjb3VudCwgZmxhZ3MpOworICMgIGVsc2UKK0BAIC0xMjMsMTQgKzEyNywxOCBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRyYW5kb20odm9pZCAqYnVmZmVyCisgICAgICAgICByZXR1cm4gLTE7CisgIyAgZW5kaWYKKyB9CisrCisrIyAgZGVmaW5lIGdldHJhbmRvbSBtaXNzaW5nX2dldHJhbmRvbQorICNlbmRpZgorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCisgCisgI2lmICFIQVZFX0dFVFRJRAorLXN0YXRpYyBpbmxpbmUgcGlkX3QgZ2V0dGlkKHZvaWQpIHsKKytzdGF0aWMgaW5saW5lIHBpZF90IG1pc3NpbmdfZ2V0dGlkKHZvaWQpIHsKKyAgICAgICAgIHJldHVybiAocGlkX3QpIHN5c2NhbGwoU1lTX2dldHRpZCk7CisgfQorKworKyMgIGRlZmluZSBnZXR0aWQgbWlzc2luZ19nZXR0aWQKKyAjZW5kaWYKKyAKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworQEAgLTE1OCw3ICsxNjYsNyBAQCBzdHJ1Y3QgZmlsZV9oYW5kbGUgeworICAgICAgICAgdW5zaWduZWQgY2hhciBmX2hhbmRsZVswXTsKKyB9OworIAorLXN0YXRpYyBpbmxpbmUgaW50IG5hbWVfdG9faGFuZGxlX2F0KGludCBmZCwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGVfaGFuZGxlICpoYW5kbGUsIGludCAqbW50X2lkLCBpbnQgZmxhZ3MpIHsKKytzdGF0aWMgaW5saW5lIGludCBtaXNzaW5nX25hbWVfdG9faGFuZGxlX2F0KGludCBmZCwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGVfaGFuZGxlICpoYW5kbGUsIGludCAqbW50X2lkLCBpbnQgZmxhZ3MpIHsKKyAjICBpZmRlZiBfX05SX25hbWVfdG9faGFuZGxlX2F0CisgICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX25hbWVfdG9faGFuZGxlX2F0LCBmZCwgbmFtZSwgaGFuZGxlLCBtbnRfaWQsIGZsYWdzKTsKKyAjICBlbHNlCitAQCAtMTY2LDYgKzE3NCw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5hbWVfdG9faGFuZGxlX2F0KGludAorICAgICAgICAgcmV0dXJuIC0xOworICMgIGVuZGlmCisgfQorKworKyMgIGRlZmluZSBuYW1lX3RvX2hhbmRsZV9hdCBtaXNzaW5nX25hbWVfdG9faGFuZGxlX2F0CisgI2VuZGlmCisgCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK0BAIC0xODMsNyArMTkzLDcgQEAgc3RhdGljIGlubGluZSBpbnQgbmFtZV90b19oYW5kbGVfYXQoaW50CisgIyAgICBlbmRpZgorICMgIGVuZGlmCisgCistc3RhdGljIGlubGluZSBpbnQgc2V0bnMoaW50IGZkLCBpbnQgbnN0eXBlKSB7Cisrc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19zZXRucyhpbnQgZmQsIGludCBuc3R5cGUpIHsKKyAjICBpZmRlZiBfX05SX3NldG5zCisgICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX3NldG5zLCBmZCwgbnN0eXBlKTsKKyAjICBlbHNlCitAQCAtMTkxLDYgKzIwMSw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNldG5zKGludCBmZCwgaW50IG5zdHkKKyAgICAgICAgIHJldHVybiAtMTsKKyAjICBlbmRpZgorIH0KKysKKysjICBkZWZpbmUgc2V0bnMgbWlzc2luZ19zZXRucworICNlbmRpZgorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitAQCAtMjM2LDcgKzI0OCw3IEBAIHN0YXRpYyBpbmxpbmUgcGlkX3QgcmF3X2dldHBpZCh2b2lkKSB7CisgIyAgICBlbmRpZgorICMgIGVuZGlmCisgCistc3RhdGljIGlubGluZSBpbnQgcmVuYW1lYXQyKGludCBvbGRmZCwgY29uc3QgY2hhciAqb2xkbmFtZSwgaW50IG5ld2ZkLCBjb25zdCBjaGFyICpuZXduYW1lLCB1bnNpZ25lZCBmbGFncykgeworK3N0YXRpYyBpbmxpbmUgaW50IG1pc3NpbmdfcmVuYW1lYXQyKGludCBvbGRmZCwgY29uc3QgY2hhciAqb2xkbmFtZSwgaW50IG5ld2ZkLCBjb25zdCBjaGFyICpuZXduYW1lLCB1bnNpZ25lZCBmbGFncykgeworICMgIGlmZGVmIF9fTlJfcmVuYW1lYXQyCisgICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX3JlbmFtZWF0Miwgb2xkZmQsIG9sZG5hbWUsIG5ld2ZkLCBuZXduYW1lLCBmbGFncyk7CisgIyAgZWxzZQorQEAgLTI0NCwxMiArMjU2LDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJlbmFtZWF0MihpbnQgb2xkZmQsIGMKKyAgICAgICAgIHJldHVybiAtMTsKKyAjICBlbmRpZgorIH0KKysKKysjICBkZWZpbmUgcmVuYW1lYXQyIG1pc3NpbmdfcmVuYW1lYXQyCisgI2VuZGlmCisgCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KKyAKKyAjaWYgIUhBVkVfS0NNUAorLXN0YXRpYyBpbmxpbmUgaW50IGtjbXAocGlkX3QgcGlkMSwgcGlkX3QgcGlkMiwgaW50IHR5cGUsIHVuc2lnbmVkIGxvbmcgaWR4MSwgdW5zaWduZWQgbG9uZyBpZHgyKSB7Cisrc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19rY21wKHBpZF90IHBpZDEsIHBpZF90IHBpZDIsIGludCB0eXBlLCB1bnNpZ25lZCBsb25nIGlkeDEsIHVuc2lnbmVkIGxvbmcgaWR4MikgeworICMgIGlmZGVmIF9fTlJfa2NtcAorICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9rY21wLCBwaWQxLCBwaWQyLCB0eXBlLCBpZHgxLCBpZHgyKTsKKyAjICBlbHNlCitAQCAtMjU3LDM2ICsyNzEsNDQgQEAgc3RhdGljIGlubGluZSBpbnQga2NtcChwaWRfdCBwaWQxLCBwaWRfdAorICAgICAgICAgcmV0dXJuIC0xOworICMgIGVuZGlmCisgfQorKworKyMgIGRlZmluZSBrY21wIG1pc3Npbmdfa2NtcAorICNlbmRpZgorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCisgCisgI2lmICFIQVZFX0tFWUNUTAorLXN0YXRpYyBpbmxpbmUgbG9uZyBrZXljdGwoaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcyLCB1bnNpZ25lZCBsb25nIGFyZzMsIHVuc2lnbmVkIGxvbmcgYXJnNCx1bnNpZ25lZCBsb25nIGFyZzUpIHsKKytzdGF0aWMgaW5saW5lIGxvbmcgbWlzc2luZ19rZXljdGwoaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcyLCB1bnNpZ25lZCBsb25nIGFyZzMsIHVuc2lnbmVkIGxvbmcgYXJnNCx1bnNpZ25lZCBsb25nIGFyZzUpIHsKKyAjICBpZmRlZiBfX05SX2tleWN0bAorICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9rZXljdGwsIGNtZCwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgIyAgZWxzZQorICAgICAgICAgZXJybm8gPSBFTk9TWVM7CisgICAgICAgICByZXR1cm4gLTE7CisgIyAgZW5kaWYKKysKKysjICBkZWZpbmUga2V5Y3RsIG1pc3Npbmdfa2V5Y3RsCisgfQorIAorLXN0YXRpYyBpbmxpbmUga2V5X3NlcmlhbF90IGFkZF9rZXkoY29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sIGNvbnN0IHZvaWQgKnBheWxvYWQsIHNpemVfdCBwbGVuLCBrZXlfc2VyaWFsX3QgcmluZ2lkKSB7Cisrc3RhdGljIGlubGluZSBrZXlfc2VyaWFsX3QgbWlzc2luZ19hZGRfa2V5KGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLCBjb25zdCB2b2lkICpwYXlsb2FkLCBzaXplX3QgcGxlbiwga2V5X3NlcmlhbF90IHJpbmdpZCkgeworICMgIGlmZGVmIF9fTlJfYWRkX2tleQorICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9hZGRfa2V5LCB0eXBlLCBkZXNjcmlwdGlvbiwgcGF5bG9hZCwgcGxlbiwgcmluZ2lkKTsKKyAjICBlbHNlCisgICAgICAgICBlcnJubyA9IEVOT1NZUzsKKyAgICAgICAgIHJldHVybiAtMTsKKyAjICBlbmRpZgorKworKyMgIGRlZmluZSBhZGRfa2V5IG1pc3NpbmdfYWRkX2tleQorIH0KKyAKKy1zdGF0aWMgaW5saW5lIGtleV9zZXJpYWxfdCByZXF1ZXN0X2tleShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwgY29uc3QgY2hhciAqIGNhbGxvdXRfaW5mbywga2V5X3NlcmlhbF90IGRlc3RyaW5naWQpIHsKKytzdGF0aWMgaW5saW5lIGtleV9zZXJpYWxfdCBtaXNzaW5nX3JlcXVlc3Rfa2V5KGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLCBjb25zdCBjaGFyICogY2FsbG91dF9pbmZvLCBrZXlfc2VyaWFsX3QgZGVzdHJpbmdpZCkgeworICMgIGlmZGVmIF9fTlJfcmVxdWVzdF9rZXkKKyAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfcmVxdWVzdF9rZXksIHR5cGUsIGRlc2NyaXB0aW9uLCBjYWxsb3V0X2luZm8sIGRlc3RyaW5naWQpOworICMgIGVsc2UKKyAgICAgICAgIGVycm5vID0gRU5PU1lTOworICAgICAgICAgcmV0dXJuIC0xOworICMgIGVuZGlmCisrCisrIyAgZGVmaW5lIHJlcXVlc3Rfa2V5IG1pc3NpbmdfcmVxdWVzdF9rZXkKKyB9CisgI2VuZGlmCisgCitAQCAtMzEzLDEwICszMzUsMTAgQEAgc3RhdGljIGlubGluZSBrZXlfc2VyaWFsX3QgcmVxdWVzdF9rZXkoYworICMgICAgZW5kaWYKKyAjICBlbmRpZgorIAorLXN0YXRpYyBpbmxpbmUgc3NpemVfdCBjb3B5X2ZpbGVfcmFuZ2UoaW50IGZkX2luLCBsb2ZmX3QgKm9mZl9pbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmZF9vdXQsIGxvZmZfdCAqb2ZmX291dCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpIHsKKytzdGF0aWMgaW5saW5lIHNzaXplX3QgbWlzc2luZ19jb3B5X2ZpbGVfcmFuZ2UoaW50IGZkX2luLCBsb2ZmX3QgKm9mZl9pbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZkX291dCwgbG9mZl90ICpvZmZfb3V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpIHsKKyAjICBpZmRlZiBfX05SX2NvcHlfZmlsZV9yYW5nZQorICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9jb3B5X2ZpbGVfcmFuZ2UsIGZkX2luLCBvZmZfaW4sIGZkX291dCwgb2ZmX291dCwgbGVuLCBmbGFncyk7CisgIyAgZWxzZQorQEAgLTMyNCw2ICszNDYsOCBAQCBzdGF0aWMgaW5saW5lIHNzaXplX3QgY29weV9maWxlX3JhbmdlKGluCisgICAgICAgICByZXR1cm4gLTE7CisgIyAgZW5kaWYKKyB9CisrCisrIyAgZGVmaW5lIGNvcHlfZmlsZV9yYW5nZSBtaXNzaW5nX2NvcHlfZmlsZV9yYW5nZQorICNlbmRpZgorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitAQCAtMzUxLDcgKzM3NSw3IEBAIHN0YXRpYyBpbmxpbmUgc3NpemVfdCBjb3B5X2ZpbGVfcmFuZ2UoaW4KKyAKKyB1bmlvbiBicGZfYXR0cjsKKyAKKy1zdGF0aWMgaW5saW5lIGludCBicGYoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHNpemVfdCBzaXplKSB7Cisrc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19icGYoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHNpemVfdCBzaXplKSB7CisgI2lmZGVmIF9fTlJfYnBmCisgICAgICAgICByZXR1cm4gKGludCkgc3lzY2FsbChfX05SX2JwZiwgY21kLCBhdHRyLCBzaXplKTsKKyAjZWxzZQorQEAgLTM2MCw2ICszODQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBicGYoaW50IGNtZCwgdW5pb24gYnBmCisgI2VuZGlmCisgfQorIAorKyMgIGRlZmluZSBicGYgbWlzc2luZ19icGYKKyAjZW5kaWYKKyAKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMzLWJhc2ljLW1hY3Jvcy1yZW5hbWUtbm9yZXR1cm4taW50by1fbm9yZXR1cm5fLTg0NTYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzMtYmFzaWMtbWFjcm9zLXJlbmFtZS1ub3JldHVybi1pbnRvLV9ub3JldHVybl8tODQ1Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTY0N2IyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMzLWJhc2ljLW1hY3Jvcy1yZW5hbWUtbm9yZXR1cm4taW50by1fbm9yZXR1cm5fLTg0NTYucGF0Y2gKQEAgLTAsMCArMSwyMDMgQEAKK0Zyb20gODQ4ZTg2M2FjYzUxZWNmYjBmMzk1NWM0OTg4NzQ1ODgyMDFkOTEzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZyYW5jayBCdWkgPGZidWlAc3VzZS5jb20+CitEYXRlOiBUaHUsIDE1IE1hciAyMDE4IDA2OjIzOjQ2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGJhc2ljL21hY3JvczogcmVuYW1lIG5vcmV0dXJuIGludG8gX25vcmV0dXJuXyAoIzg0NTYpCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKKyJub3JldHVybiIgaXMgcmVzZXJ2ZWQgYW5kIGNhbiBiZSB1c2VkIGluIG90aGVyIGhlYWRlciBmaWxlcyB3ZSBpbmNsdWRlOgorCisgIFsgICAxNnNdIEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvdXNyL2luY2x1ZGUvZ2NyeXB0Lmg6MzA6MCwKKyAgWyAgIDE2c10gICAgICAgICAgICAgICAgICBmcm9tIC4uL3NyYy9qb3VybmFsL2pvdXJuYWwtZmlsZS5oOjI2LAorICBbICAgMTZzXSAgICAgICAgICAgICAgICAgIGZyb20gLi4vc3JjL2pvdXJuYWwvam91cm5hbC12YWN1dW0uYzozMToKKyAgWyAgIDE2c10gL3Vzci9pbmNsdWRlL2dwZy1lcnJvci5oOjE1NDQ6NDY6IGVycm9yOiBleHBlY3RlZCDigJgs4oCZIG9yIOKAmDvigJkgYmVmb3JlIOKAmCnigJkgdG9rZW4KKyAgWyAgIDE2c10gIHZvaWQgZ3BncnRfbG9nX2J1ZyAoY29uc3QgY2hhciAqZm10LCAuLi4pICAgIEdQR1JUX0FUVFJfTlJfUFJJTlRGKDEsMik7CisKK0hlcmUgd2UgaW5jbHVkZSBncmNyeXB0LmggKHdoaWNoIGluIHR1cm5zIGluY2x1ZGUgZ3BnLWVycm9yLmgpICphZnRlciogd2UKKyJub3JldHVybiIgd2FzIGRlZmluZWQgaW4gbWFjcm8uaC4KKy0tLQorIHNyYy9iYXNpYy9sb2cuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KKyBzcmMvYmFzaWMvbG9nLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCisgc3JjL2Jhc2ljL21hY3JvLmggICAgICAgICAgICAgICAgICAgICAgIHwgMTkgKysrKysrKysrLS0tLS0tLS0tLQorIHNyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5oICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvY29yZS9tYWluLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCisgc3JjL2pvdXJuYWwvdGVzdC1qb3VybmFsLWludGVybGVhdmluZy5jIHwgIDIgKy0KKyBzcmMvc2hhcmVkL3BhZ2VyLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy91ZGV2L2NvbGxlY3QvY29sbGVjdC5jICAgICAgICAgICAgICB8ICAyICstCisgOSBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzg0NTZdCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbG9nLmMgYi9zcmMvYmFzaWMvbG9nLmMKK2luZGV4IDdhN2YyY2JlYy4uMTZhMjQzMWM1IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2xvZy5jCisrKysgYi9zcmMvYmFzaWMvbG9nLmMKK0BAIC04MTQsNyArODE0LDcgQEAgc3RhdGljIHZvaWQgbG9nX2Fzc2VydCgKKyAgICAgICAgIGxvZ19kaXNwYXRjaF9pbnRlcm5hbChsZXZlbCwgMCwgZmlsZSwgbGluZSwgZnVuYywgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgYnVmZmVyKTsKKyB9CisgCistbm9yZXR1cm4gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF9yZWFsbSgKKytfbm9yZXR1cm5fIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfcmVhbG0oCisgICAgICAgICAgICAgICAgIExvZ1JlYWxtIHJlYWxtLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZXh0LAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLAorQEAgLTgyNiw3ICs4MjYsNyBAQCBub3JldHVybiB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3JlYWxtKAorICAgICAgICAgYWJvcnQoKTsKKyB9CisgCistbm9yZXR1cm4gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF91bnJlYWNoYWJsZV9yZWFsbSgKKytfbm9yZXR1cm5fIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfdW5yZWFjaGFibGVfcmVhbG0oCisgICAgICAgICAgICAgICAgIExvZ1JlYWxtIHJlYWxtLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZXh0LAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9sb2cuaCBiL3NyYy9iYXNpYy9sb2cuaAoraW5kZXggZWZjZjBmMWJmLi4zMTRiZTEyOGEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbG9nLmgKKysrKyBiL3NyYy9iYXNpYy9sb2cuaAorQEAgLTE4Niw3ICsxODYsNyBAQCBpbnQgbG9nX2R1bXBfaW50ZXJuYWwoCisgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZmZlcik7CisgCisgLyogTG9nZ2luZyBmb3IgdmFyaW91cyBhc3NlcnRpb25zICovCistbm9yZXR1cm4gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF9yZWFsbSgKKytfbm9yZXR1cm5fIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfcmVhbG0oCisgICAgICAgICAgICAgICAgIExvZ1JlYWxtIHJlYWxtLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZXh0LAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLAorQEAgLTE5NSw3ICsxOTUsNyBAQCBub3JldHVybiB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3JlYWxtKAorICNkZWZpbmUgbG9nX2Fzc2VydF9mYWlsZWQodGV4dCwgLi4uKSBcCisgICAgICAgICBsb2dfYXNzZXJ0X2ZhaWxlZF9yZWFsbShMT0dfUkVBTE0sICh0ZXh0KSwgX19WQV9BUkdTX18pCisgCistbm9yZXR1cm4gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF91bnJlYWNoYWJsZV9yZWFsbSgKKytfbm9yZXR1cm5fIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfdW5yZWFjaGFibGVfcmVhbG0oCisgICAgICAgICAgICAgICAgIExvZ1JlYWxtIHJlYWxtLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZXh0LAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9tYWNyby5oIGIvc3JjL2Jhc2ljL21hY3JvLmgKK2luZGV4IDk1YmU2M2EyMC4uODkxMWVkZmM0IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21hY3JvLmgKKysrKyBiL3NyYy9iYXNpYy9tYWNyby5oCitAQCAtNTMsNiArNTMsMTUgQEAKKyAjZWxzZQorICNkZWZpbmUgX2ZhbGx0aHJvdWdoXworICNlbmRpZgorKy8qIERlZmluZSBDMTEgbm9yZXR1cm4gd2l0aG91dCA8c3Rkbm9yZXR1cm4uaD4gYW5kIGV2ZW4gb24gb2xkZXIgZ2NjCisrICogY29tcGlsZXIgdmVyc2lvbnMgKi8KKysjaWZuZGVmIF9ub3JldHVybl8KKysjaWYgX19TVERDX1ZFUlNJT05fXyA+PSAyMDExMTJMCisrI2RlZmluZSBfbm9yZXR1cm5fIF9Ob3JldHVybgorKyNlbHNlCisrI2RlZmluZSBfbm9yZXR1cm5fIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSkKKysjZW5kaWYKKysjZW5kaWYKKyAKKyAvKiBUZW1wb3JhcmlseSBkaXNhYmxlIHNvbWUgd2FybmluZ3MgKi8KKyAjZGVmaW5lIERJU0FCTEVfV0FSTklOR19ERUNMQVJBVElPTl9BRlRFUl9TVEFURU1FTlQgICAgICAgICAgICAgICAgICAgICBcCitAQCAtNDE0LDE2ICs0MjMsNiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgQUxJR05fUE9XRVIyKHVuc2lnbmVkIGxvbmcgdSkgeworICNlbmRpZgorICNlbmRpZgorIAorLS8qIERlZmluZSBDMTEgbm9yZXR1cm4gd2l0aG91dCA8c3Rkbm9yZXR1cm4uaD4gYW5kIGV2ZW4gb24gb2xkZXIgZ2NjCistICogY29tcGlsZXIgdmVyc2lvbnMgKi8KKy0jaWZuZGVmIG5vcmV0dXJuCistI2lmIF9fU1REQ19WRVJTSU9OX18gPj0gMjAxMTEyTAorLSNkZWZpbmUgbm9yZXR1cm4gX05vcmV0dXJuCistI2Vsc2UKKy0jZGVmaW5lIG5vcmV0dXJuIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSkKKy0jZW5kaWYKKy0jZW5kaWYKKy0KKyAjZGVmaW5lIERFRklORV9UUklWSUFMX0NMRUFOVVBfRlVOQyh0eXBlLCBmdW5jKSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIGZ1bmMjI3AodHlwZSAqcCkgeyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIGlmICgqcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKK2luZGV4IGFhOTg0NmRiNS4uZTYxMjBhZjViIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKK0BAIC05ODcsNyArOTg3LDcgQEAgYm9vbCBpc19tYWluX3RocmVhZCh2b2lkKSB7CisgICAgICAgICByZXR1cm4gY2FjaGVkID4gMDsKKyB9CisgCistbm9yZXR1cm4gdm9pZCBmcmVlemUodm9pZCkgeworK19ub3JldHVybl8gdm9pZCBmcmVlemUodm9pZCkgeworIAorICAgICAgICAgbG9nX2Nsb3NlKCk7CisgCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5oIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5oCitpbmRleCA5MzAyOWUzNmUuLjUxNzBhZGVjNyAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuaAorKysrIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5oCitAQCAtOTEsNyArOTEsNyBAQCBpbnQgcGlkX2Zyb21fc2FtZV9yb290X2ZzKHBpZF90IHBpZCk7CisgCisgYm9vbCBpc19tYWluX3RocmVhZCh2b2lkKTsKKyAKKy1ub3JldHVybiB2b2lkIGZyZWV6ZSh2b2lkKTsKKytfbm9yZXR1cm5fIHZvaWQgZnJlZXplKHZvaWQpOworIAorIGJvb2wgb29tX3Njb3JlX2FkanVzdF9pc192YWxpZChpbnQgb2EpOworIAorZGlmZiAtLWdpdCBhL3NyYy9jb3JlL21haW4uYyBiL3NyYy9jb3JlL21haW4uYworaW5kZXggMDc2ODQ2YTQxLi40YjJkMTQ5MjMgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9tYWluLmMKKysrKyBiL3NyYy9jb3JlL21haW4uYworQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgdWludDY0X3QgYXJnX2RlZmF1bHRfdGFza3NfbWF4ID0gVUlOVDY0X01BWDsKKyBzdGF0aWMgc2RfaWQxMjhfdCBhcmdfbWFjaGluZV9pZCA9IHt9OworIHN0YXRpYyBFbWVyZ2VuY3lBY3Rpb24gYXJnX2NhZF9idXJzdF9hY3Rpb24gPSBFTUVSR0VOQ1lfQUNUSU9OX1JFQk9PVF9GT1JDRTsKKyAKKy1ub3JldHVybiBzdGF0aWMgdm9pZCBmcmVlemVfb3JfcmVib290KHZvaWQpIHsKKytfbm9yZXR1cm5fIHN0YXRpYyB2b2lkIGZyZWV6ZV9vcl9yZWJvb3Qodm9pZCkgeworIAorICAgICAgICAgaWYgKGFyZ19jcmFzaF9yZWJvb3QpIHsKKyAgICAgICAgICAgICAgICAgbG9nX25vdGljZSgiUmVib290aW5nIGluIDEwcy4uLiIpOworQEAgLTE1Niw3ICsxNTYsNyBAQCBub3JldHVybiBzdGF0aWMgdm9pZCBmcmVlemVfb3JfcmVib290KHZvaWQpIHsKKyAgICAgICAgIGZyZWV6ZSgpOworIH0KKyAKKy1ub3JldHVybiBzdGF0aWMgdm9pZCBjcmFzaChpbnQgc2lnKSB7CisrX25vcmV0dXJuXyBzdGF0aWMgdm9pZCBjcmFzaChpbnQgc2lnKSB7CisgICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhOworICAgICAgICAgcGlkX3QgcGlkOworIAorZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL3Rlc3Qtam91cm5hbC1pbnRlcmxlYXZpbmcuYyBiL3NyYy9qb3VybmFsL3Rlc3Qtam91cm5hbC1pbnRlcmxlYXZpbmcuYworaW5kZXggNWE4OGIyNzc0Li5kODdiZGJkZDMgMTAwNjQ0CistLS0gYS9zcmMvam91cm5hbC90ZXN0LWpvdXJuYWwtaW50ZXJsZWF2aW5nLmMKKysrKyBiL3NyYy9qb3VybmFsL3Rlc3Qtam91cm5hbC1pbnRlcmxlYXZpbmcuYworQEAgLTM3LDcgKzM3LDcgQEAKKyAKKyBzdGF0aWMgYm9vbCBhcmdfa2VlcCA9IGZhbHNlOworIAorLW5vcmV0dXJuIHN0YXRpYyB2b2lkIGxvZ19hc3NlcnRfZXJybm8oY29uc3QgY2hhciAqdGV4dCwgaW50IGVycm9yLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZnVuYykgeworK19ub3JldHVybl8gc3RhdGljIHZvaWQgbG9nX2Fzc2VydF9lcnJubyhjb25zdCBjaGFyICp0ZXh0LCBpbnQgZXJyb3IsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmdW5jKSB7CisgICAgICAgICBsb2dfaW50ZXJuYWwoTE9HX0NSSVQsIGVycm9yLCBmaWxlLCBsaW5lLCBmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICInJXMnIGZhaWxlZCBhdCAlczoldSAoJXMpOiAlbSIsIHRleHQsIGZpbGUsIGxpbmUsIGZ1bmMpOworICAgICAgICAgYWJvcnQoKTsKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3BhZ2VyLmMgYi9zcmMvc2hhcmVkL3BhZ2VyLmMKK2luZGV4IDc1ZGIzYzk4NS4uNjgxYWY5YzQwIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9wYWdlci5jCisrKysgYi9zcmMvc2hhcmVkL3BhZ2VyLmMKK0BAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBpbnQgc3RvcmVkX3N0ZGVyciA9IC0xOworIHN0YXRpYyBib29sIHN0ZG91dF9yZWRpcmVjdGVkID0gZmFsc2U7Cisgc3RhdGljIGJvb2wgc3RkZXJyX3JlZGlyZWN0ZWQgPSBmYWxzZTsKKyAKKy1ub3JldHVybiBzdGF0aWMgdm9pZCBwYWdlcl9mYWxsYmFjayh2b2lkKSB7CisrX25vcmV0dXJuXyBzdGF0aWMgdm9pZCBwYWdlcl9mYWxsYmFjayh2b2lkKSB7CisgICAgICAgICBpbnQgcjsKKyAKKyAgICAgICAgIHIgPSBjb3B5X2J5dGVzKFNURElOX0ZJTEVOTywgU1RET1VUX0ZJTEVOTywgKHVpbnQ2NF90KSAtMSwgMCk7CitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvY29sbGVjdC9jb2xsZWN0LmMgYi9zcmMvdWRldi9jb2xsZWN0L2NvbGxlY3QuYworaW5kZXggMjgyMTY0MGU5Li5jOGZhNDdiM2QgMTAwNjQ0CistLS0gYS9zcmMvdWRldi9jb2xsZWN0L2NvbGxlY3QuYworKysrIGIvc3JjL3VkZXYvY29sbGVjdC9jb2xsZWN0LmMKK0BAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IF9tYXRlICpub2RlX3RvX21hdGUoc3RydWN0IHVkZXZfbGlzdF9ub2RlICpub2RlKQorICAgICAgICAgcmV0dXJuIGNvbnRhaW5lcl9vZihub2RlLCBzdHJ1Y3QgX21hdGUsIG5vZGUpOworIH0KKyAKKy1ub3JldHVybiBzdGF0aWMgdm9pZCBzaWdfYWxybShpbnQgc2lnbm8pCisrX25vcmV0dXJuXyBzdGF0aWMgdm9pZCBzaWdfYWxybShpbnQgc2lnbm8pCisgeworICAgICAgICAgZXhpdCg0KTsKKyB9CistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzQtRml4LWZvcm1hdC10cnVuY2F0aW9uLWNvbXBpbGUtZmFpbHVyZS1ieS10eXBlY2FzdGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzNC1GaXgtZm9ybWF0LXRydW5jYXRpb24tY29tcGlsZS1mYWlsdXJlLWJ5LXR5cGVjYXN0aW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NjA2MWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzQtRml4LWZvcm1hdC10cnVuY2F0aW9uLWNvbXBpbGUtZmFpbHVyZS1ieS10eXBlY2FzdGluZy5wYXRjaApAQCAtMCwwICsxLDE3MyBAQAorRnJvbSBjMmIzZWJlMTEyZWJmZDlmOWU4MmZiMTUzMWVlMjI1YzMxNTJjYTgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF0cmljayBVaXRlcndpamsgPHBhdHJpY2tAcHVpdGVyd2lqay5vcmc+CitEYXRlOiBUaHUsIDIyIEZlYiAyMDE4IDE5OjQxOjMwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBmb3JtYXQtdHJ1bmNhdGlvbiBjb21waWxlIGZhaWx1cmUgYnkgdHlwZWNhc3RpbmcgVVNCIElEcworICgjODI1MCkKKworVGhpcyBwYXRjaCBhZGRzIHNhZmVfYXRvdXgxNiBmb3IgcGFyc2luZyBhbiB1bnNpZ25lZCBoZXhhZGVjaW1hbCAxNmJpdCBpbnQsIGFuZAordXNlcyB0aGF0IGZvciBwYXJzaW5nIFVTQiBkZXZpY2UgYW5kIHZlbmRvciBJRHMuCisKK1RoaXMgZml4ZXMgYSBjb21waWxlIGVycm9yIHdpdGggZ2NjLTggYmVjYXVzZSB3aGlsZSB3ZSBrbm93IHRoYXQgVVNCIElEcyBhcmUgMiBieXRlcywKK3RoZSBjb21waWxlciBkb2VzIG5vdCBrbm93IHRoYXQuCisKKy4uL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmM6ODA6Mzg6IGVycm9yOiAnJTA0WCcgZGlyZWN0aXZlIG91dHB1dCBtYXkgYmUKK3RydW5jYXRlZCB3cml0aW5nIGJldHdlZW4gNCBhbmQgOCBieXRlcyBpbnRvIGEgcmVnaW9uIG9mIHNpemUgYmV0d2VlbiAyIGFuZCA2CitbLVdlcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbj1dCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvY29tbWl0LzU1NDdjMTI1MDNhNjgzMjkwZWFlZDQ3OTU0ZmZjZmIyZDFiYzAzY2RdCisKK1NpZ25lZC1vZmYtYnk6IEFkYW0gV2lsbGlhbXNvbiA8YXdpbGxpYW1AcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgVWl0ZXJ3aWprIDxwdWl0ZXJ3aWprQHJlZGhhdC5jb20+CistLS0KKyBzcmMvYmFzaWMvcGFyc2UtdXRpbC5jICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9iYXNpYy9wYXJzZS11dGlsLmggICAgICAgfCAgMiArKworIHNyYy90ZXN0L3Rlc3QtcGFyc2UtdXRpbC5jICAgfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvdWRldi91ZGV2LWJ1aWx0aW4taHdkYi5jIHwgMTMgKysrKysrLS0tLS0tCisgNCBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKK2luZGV4IDk3NTMzNzIxZC4uZmYzZmMyOThhIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYworQEAgLTUzMiw2ICs1MzIsMzAgQEAgaW50IHNhZmVfYXRvaTE2KGNvbnN0IGNoYXIgKnMsIGludDE2X3QgKnJldCkgeworICAgICAgICAgcmV0dXJuIDA7CisgfQorIAorK2ludCBzYWZlX2F0b3V4MTYoY29uc3QgY2hhciAqcywgdWludDE2X3QgKnJldCkgeworKyAgICAgICAgY2hhciAqeCA9IE5VTEw7CisrICAgICAgICB1bnNpZ25lZCBsb25nIGw7CisrCisrICAgICAgICBhc3NlcnQocyk7CisrICAgICAgICBhc3NlcnQocmV0KTsKKysKKysgICAgICAgIHMgKz0gc3Ryc3BuKHMsIFdISVRFU1BBQ0UpOworKworKyAgICAgICAgZXJybm8gPSAwOworKyAgICAgICAgbCA9IHN0cnRvdWwocywgJngsIDE2KTsKKysgICAgICAgIGlmIChlcnJubyA+IDApCisrICAgICAgICAgICAgICAgIHJldHVybiAtZXJybm87CisrICAgICAgICBpZiAoIXggfHwgeCA9PSBzIHx8ICp4ICE9IDApCisrICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworKyAgICAgICAgaWYgKHNbMF0gPT0gJy0nKQorKyAgICAgICAgICAgICAgICByZXR1cm4gLUVSQU5HRTsKKysgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgKHVpbnQxNl90KSBsICE9IGwpCisrICAgICAgICAgICAgICAgIHJldHVybiAtRVJBTkdFOworKworKyAgICAgICAgKnJldCA9ICh1aW50MTZfdCkgbDsKKysgICAgICAgIHJldHVybiAwOworK30KKysKKyBpbnQgc2FmZV9hdG9kKGNvbnN0IGNoYXIgKnMsIGRvdWJsZSAqcmV0X2QpIHsKKyAgICAgICAgIF9jbGVhbnVwXyhmcmVlbG9jYWxlcCkgbG9jYWxlX3QgbG9jID0gKGxvY2FsZV90KSAwOworICAgICAgICAgY2hhciAqeCA9IE5VTEw7CitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaCBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmgKK2luZGV4IDFlZGExZDdmOS4uNzI3NDIyMDU2IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaAorKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaAorQEAgLTU0LDYgKzU0LDggQEAgaW50IHNhZmVfYXRvdTgoY29uc3QgY2hhciAqcywgdWludDhfdCAqcmV0KTsKKyBpbnQgc2FmZV9hdG91MTYoY29uc3QgY2hhciAqcywgdWludDE2X3QgKnJldCk7CisgaW50IHNhZmVfYXRvaTE2KGNvbnN0IGNoYXIgKnMsIGludDE2X3QgKnJldCk7CisgCisraW50IHNhZmVfYXRvdXgxNihjb25zdCBjaGFyICpzLCB1aW50MTZfdCAqcmV0KTsKKysKKyBzdGF0aWMgaW5saW5lIGludCBzYWZlX2F0b3UzMihjb25zdCBjaGFyICpzLCB1aW50MzJfdCAqcmV0X3UpIHsKKyAgICAgICAgIGFzc2VydF9jYyhzaXplb2YodWludDMyX3QpID09IHNpemVvZih1bnNpZ25lZCkpOworICAgICAgICAgcmV0dXJuIHNhZmVfYXRvdShzLCAodW5zaWduZWQqKSByZXRfdSk7CitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1wYXJzZS11dGlsLmMgYi9zcmMvdGVzdC90ZXN0LXBhcnNlLXV0aWwuYworaW5kZXggOTM3NTAwMjEzLi5hOTljZWE1YTEgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC90ZXN0LXBhcnNlLXV0aWwuYworKysrIGIvc3JjL3Rlc3QvdGVzdC1wYXJzZS11dGlsLmMKK0BAIC00NjgsNiArNDY4LDQ0IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2FmZV9hdG9pMTYodm9pZCkgeworICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVJTlZBTCk7CisgfQorIAorK3N0YXRpYyB2b2lkIHRlc3Rfc2FmZV9hdG91eDE2KHZvaWQpIHsKKysgICAgICAgIGludCByOworKyAgICAgICAgdWludDE2X3QgbDsKKysKKysgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIjEyMzQiLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKKysgICAgICAgIGFzc2VydF9zZShsID09IDB4MTIzNCk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCJhYmNkIiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gMCk7CisrICAgICAgICBhc3NlcnRfc2UobCA9PSAweGFiY2QpOworKworKyAgICAgICAgciA9IHNhZmVfYXRvdXgxNigiICAxMjM0IiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gMCk7CisrICAgICAgICBhc3NlcnRfc2UobCA9PSAweDEyMzQpOworKworKyAgICAgICAgciA9IHNhZmVfYXRvdXgxNigiMTIzNDUiLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAtRVJBTkdFKTsKKysKKysgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIi0xIiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVSQU5HRSk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCIgIC0xIiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVSQU5HRSk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCJqdW5rIiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVJTlZBTCk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCIxMjN4IiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVJTlZBTCk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCIxMi4zIiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVJTlZBTCk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCIiLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAtRUlOVkFMKTsKKyt9CisrCisgc3RhdGljIHZvaWQgdGVzdF9zYWZlX2F0b3U2NCh2b2lkKSB7CisgICAgICAgICBpbnQgcjsKKyAgICAgICAgIHVpbnQ2NF90IGw7CitAQCAtNzQ1LDYgKzc4Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgICAgICAgIHRlc3Rfc2FmZV9hdG9sbGkoKTsKKyAgICAgICAgIHRlc3Rfc2FmZV9hdG91MTYoKTsKKyAgICAgICAgIHRlc3Rfc2FmZV9hdG9pMTYoKTsKKysgICAgICAgIHRlc3Rfc2FmZV9hdG91eDE2KCk7CisgICAgICAgICB0ZXN0X3NhZmVfYXRvdTY0KCk7CisgICAgICAgICB0ZXN0X3NhZmVfYXRvaTY0KCk7CisgICAgICAgICB0ZXN0X3NhZmVfYXRvZCgpOworZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4taHdkYi5jCitpbmRleCBjYTdmN2MyMzAuLmRiZmUwMjQyOSAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMKKysrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMKK0BAIC0yNyw2ICsyNyw3IEBACisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAiaHdkYi11dGlsLmgiCisrI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAidWRldi11dGlsLmgiCisgI2luY2x1ZGUgInVkZXYuaCIKK0BAIC02Myw3ICs2NCw3IEBAIGludCB1ZGV2X2J1aWx0aW5faHdkYl9sb29rdXAoc3RydWN0IHVkZXZfZGV2aWNlICpkZXYsCisgCisgc3RhdGljIGNvbnN0IGNoYXIgKm1vZGFsaWFzX3VzYihzdHJ1Y3QgdWRldl9kZXZpY2UgKmRldiwgY2hhciAqcywgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgIGNvbnN0IGNoYXIgKnYsICpwOworLSAgICAgICAgaW50IHZuLCBwbjsKKysgICAgICAgIHVpbnQxNl90IHZuLCBwbjsKKyAKKyAgICAgICAgIHYgPSB1ZGV2X2RldmljZV9nZXRfc3lzYXR0cl92YWx1ZShkZXYsICJpZFZlbmRvciIpOworICAgICAgICAgaWYgKCF2KQorQEAgLTcxLDEyICs3MiwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqbW9kYWxpYXNfdXNiKHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2LCBjaGFyICpzLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICAgcCA9IHVkZXZfZGV2aWNlX2dldF9zeXNhdHRyX3ZhbHVlKGRldiwgImlkUHJvZHVjdCIpOworICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKy0gICAgICAgIHZuID0gc3RydG9sKHYsIE5VTEwsIDE2KTsKKy0gICAgICAgIGlmICh2biA8PSAwKQorLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKy0gICAgICAgIHBuID0gc3RydG9sKHAsIE5VTEwsIDE2KTsKKy0gICAgICAgIGlmIChwbiA8PSAwKQorLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgICAgIGlmIChzYWZlX2F0b3V4MTYodiwgJnZuKSA8IDApCisrCQlyZXR1cm4gTlVMTDsKKysgICAgICAgIGlmIChzYWZlX2F0b3V4MTYocCwgJnBuKSA8IDApCisrCQlyZXR1cm4gTlVMTDsKKyAgICAgICAgIHNucHJpbnRmKHMsIHNpemUsICJ1c2I6diUwNFhwJTA0WCoiLCB2biwgcG4pOworICAgICAgICAgcmV0dXJuIHM7CisgfQorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDM1LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzUtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzZkNTI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDM1LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA1ZjFmMDY0YzgxZWEzMGFjZjkzY2ZhMGZiNDY2YjM4ZjA5NGY0ODhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjcgTWF5IDIwMTggMDg6MzY6NDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRGVmaW5lIGdsaWJjIGNvbXBhdGlibGUgYmFzZW5hbWUoKSBmb3Igbm9uLWdsaWJjIHN5c3RlbXMKKworRml4ZXMgYnVpbGRzIHdpdGggbXVzbCwgZXZlbiB0aG91Z2ggc3lzdGVtZCBpcyBhZGFtYW50IGFib3V0Cit1c2luZyBub24tcG9zaXggYmFzZW5hbWUgaW1wbGVtZW50YXRpb24sIHdlIGhhdmUgYSB3YXkgb3V0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYworaW5kZXggMmQ3ODA2NDkxYi4uOWEzYmRiMWQ3NiAxMDA2NDQKKy0tLSBhL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCisrKysgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYworQEAgLTI5LDYgKzI5LDEwIEBACisgI2luY2x1ZGUgPGxpYmdlbi5oPgorICN1bmRlZiBiYXNlbmFtZQorIAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrI2RlZmluZSBiYXNlbmFtZShzcmMpIChzdHJyY2hyKHNyYywnLycpID8gc3RycmNocihzcmMsJy8nKSsxIDogc3JjKQorKyNlbmRpZgorKworICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgImJ1cy1jb21tb24tZXJyb3JzLmgiCisgI2luY2x1ZGUgImJ1cy1pbnRlcm5hbC5oIgorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC9saWJtb3VudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvbGlibW91bnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU5ZDViNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvbGlibW91bnQucGF0Y2gKQEAgLTAsMCArMSw3NSBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSAyMjdiOGE3NjJmZWExNDU4NTQ3YmUyY2RmMGU2ZTRhYWMwMDc5NzMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+CitEYXRlOiBNb24sIDI2IE1hciAyMDE4IDE3OjM0OjUzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvcmU6IGRvbid0IGluY2x1ZGUgbGlibW91bnQuaCBpbiBhIGhlYWRlciBmaWxlICgjODU4MCkKKworbGludXgvZnMuaCBzeXMvbW91bnQuaCwgbGlibW91bnQuaCBhbmQgbWlzc2luZy5oIGFsbCBpbmNsdWRlIE1TXyoKK2RlZmluaXRpb25zLgorCitUbyBhdm9pZCBwcm9ibGVtcywgb25seSBvbmUgb2YgbGludXgvZnMuaCwgc3lzL21vdW50LmggYW5kIGxpYm1vdW50LmgKK3Nob3VsZCBiZSBpbmNsdWRlZC4gQW5kIG1pc3NpbmcuaCBtdXN0IGJlIGluY2x1ZGVkIGxhc3QuCisKK1dpdGhvdXQgdGhpcywgYnVpbGRpbmcgc3lzdGVtZCBtYXkgZmFpbCB3aXRoOgorCitJbiBmaWxlIGluY2x1ZGVkIGZyb20gWy4uLl0vbGlibW91bnQvbGlibW91bnQuaDozMTowLAorICAgICAgICAgICAgICAgICBmcm9tIC4uL3N5c3RlbWQtMjM4L3NyYy9jb3JlL21hbmFnZXIuaDoyMywKKyAgICAgICAgICAgICAgICAgZnJvbSAuLi9zeXN0ZW1kLTIzOC9zcmMvY29yZS9lbWVyZ2VuY3ktYWN0aW9uLmg6MzcsCisgICAgICAgICAgICAgICAgIGZyb20gLi4vc3lzdGVtZC0yMzgvc3JjL2NvcmUvdW5pdC5oOjM0LAorICAgICAgICAgICAgICAgICBmcm9tIC4uL3N5c3RlbWQtMjM4L3NyYy9jb3JlL2RidXMtdGltZXIuaDoyNSwKKyAgICAgICAgICAgICAgICAgZnJvbSAuLi9zeXN0ZW1kLTIzOC9zcmMvY29yZS90aW1lci5jOjI2OgorWy4uLl0vc3lzL21vdW50Lmg6NTc6MjogZXJyb3I6IGV4cGVjdGVkIGlkZW50aWZpZXIgYmVmb3JlIG51bWVyaWMgY29uc3RhbnQKKy0tLQorIHNyYy9jb3JlL2RidXMtZXhlY3V0ZS5jIHwgMSArCisgc3JjL2NvcmUvbWFuYWdlci5oICAgICAgfCAzICsrLQorIHNyYy9jb3JlL21vdW50LmMgICAgICAgIHwgMiArKworIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYyBiL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jCitpbmRleCA3MzQ0NjIzZWJmNi4uYzM0MjA5M2JjYTQgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYworKysrIGIvc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMKK0BAIC0xOCw2ICsxOCw3IEBACisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCisgCisrI2luY2x1ZGUgPHN5cy9tb3VudC5oPgorICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFuYWdlci5oIGIvc3JjL2NvcmUvbWFuYWdlci5oCitpbmRleCAyOGM1ZGEyMjViMS4uZTA5ZTBjZGY1ZTkgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9tYW5hZ2VyLmgKKysrKyBiL3NyYy9jb3JlL21hbmFnZXIuaAorQEAgLTIwLDcgKzIwLDYgQEAKKyAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoqKi8KKyAKKy0jaW5jbHVkZSA8bGlibW91bnQuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorIAorQEAgLTM0LDYgKzMzLDggQEAKKyAjaW5jbHVkZSAibGlzdC5oIgorICNpbmNsdWRlICJyYXRlbGltaXQuaCIKKyAKKytzdHJ1Y3QgbGlibW50X21vbml0b3I7CisrCisgLyogRW5mb3JjZSB1cHBlciBsaW1pdCBob3cgbWFueSBuYW1lcyB3ZSBhbGxvdyAqLworICNkZWZpbmUgTUFOQUdFUl9NQVhfTkFNRVMgMTMxMDcyIC8qIDEyOEsgKi8KKyAKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9tb3VudC5jIGIvc3JjL2NvcmUvbW91bnQuYworaW5kZXggMGU3NTVkYTVjMDIuLjAxNTRlYmRhNWQ2IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvbW91bnQuYworKysrIGIvc3JjL2NvcmUvbW91bnQuYworQEAgLTIzLDYgKzIzLDggQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3lzL2Vwb2xsLmg+CisgCisrI2luY2x1ZGUgPGxpYm1vdW50Lmg+CisrCisgI2luY2x1ZGUgInNkLW1lc3NhZ2VzLmgiCisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC9ydW4tcHRlc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZTc2ZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC9ydW4tcHRlc3QKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLSMhL2Jpbi9zaAotCi1jZCB0ZXN0cwotdGFyIC1DIHRlc3QgLXhKZiB0ZXN0L3N5cy50YXIueHoKLW1ha2UgY2hlY2stVEVTVFMKLWNkIC4uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjM0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2UyN2JmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjM0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjQxICswLDAgQEAKLXJlcXVpcmUgc3lzdGVtZC5pbmMKLQotUFJPVklERVMgPSAidWRldiIKLQotUEUgPSAiMSIKLQotREVQRU5EUyA9ICJrbW9kIGludGx0b29sLW5hdGl2ZSBncGVyZi1uYXRpdmUgYWNsIHJlYWRsaW5lIGxpYmNhcCBsaWJjZ3JvdXAgdXRpbC1saW51eCIKLQotU0VDVElPTiA9ICJiYXNlL3NoZWxsIgotCi1pbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIGF1dG90b29scyBwZXJsbmF0aXZlIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcWVtdSBzeXN0ZW1kIHB0ZXN0IGdldHRleHQgYmFzaC1jb21wbGV0aW9uIG1hbnBhZ2VzCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQuZ2l0O3Byb3RvY29sPWdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly90b3VjaHNjcmVlbi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1IQVZFX01ZSE9TVE4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWNoZWNrLWZvci11Y2hhci5oLWluLWNvbmZpZ3VyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE5LXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EZWZpbmUtX1BBVEhfV1RNUFgtYW5kLV9QQVRIX1VUTVBYLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29yZS1ldmFsdWF0ZS1wcmVzZXRzLWFmdGVyLWdlbmVyYXRvcnMtaGF2ZS1ydW4tNjUyNi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1haW4tc2tpcC1tYW55LWluaXRpYWxpemF0aW9uLXN0ZXBzLXdoZW4tcnVubmluZy1pbi0ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9xZW11YWxsID0gIiBmaWxlOi8vMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoIgotCi1QQU1fUExVR0lOUyA9ICIgXAotICAgIHBhbS1wbHVnaW4tdW5peCBcCi0gICAgcGFtLXBsdWdpbi1sb2dpbnVpZCBcCi0gICAgcGFtLXBsdWdpbi1rZXlpbml0IFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZWZpIGxkY29uZmlnIHBhbSBzZWxpbnV4IHVzcm1lcmdlJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCAncmZraWxsJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCi0gICAgYmFja2xpZ2h0IFwKLSAgICBiaW5mbXQgXAotICAgIGZpcnN0Ym9vdCBcCi0gICAgaGliZXJuYXRlIFwKLSAgICBob3N0bmFtZWQgXAotICAgIGltYSBcCi0gICAgbG9jYWxlZCBcCi0gICAgbG9naW5kIFwKLSAgICBtYWNoaW5lZCBcCi0gICAgbXlob3N0bmFtZSBcCi0gICAgbmV0d29ya2QgXAotICAgIG5zcyBcCi0gICAgcG9sa2l0IFwKLSAgICBxdW90YWNoZWNrIFwKLSAgICByYW5kb21zZWVkIFwKLSAgICByZXNvbHZlZCBcCi0gICAgc21hY2sgXAotICAgIHN5c3VzZXJzIFwKLSAgICB0aW1lZGF0ZWQgXAotICAgIHRpbWVzeW5jZCBcCi0gICAgdXRtcCBcCi0gICAgdmNvbnNvbGUgXAotICAgIHh6IFwKLSIKLQotUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gIiBcCi0gICAgbG9jYWxlZCBcCi0gICAgbXlob3N0bmFtZSBcCi0gICAgbnNzIFwKLSAgICByZXNvbHZlZCBcCi0gICAgc2VsaW51eCBcCi0gICAgc21hY2sgXAotICAgIHN5c3VzZXJzIFwKLSAgICB1dG1wIFwKLSIKLQotIyBVc2UgdGhlIHVwc3RyZWFtIHN5c3RlbWQgc2VyaWFsLWdldHR5QC5zZXJ2aWNlIGFuZCByZWx5IG9uCi0jIHN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yIGluc3RlYWQgb2YgdXNpbmcgdGhlIE9FLWNvcmUgc3BlY2lmaWMKLSMgc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiAtIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQuCi1QQUNLQUdFQ09ORklHW3NlcmlhbC1nZXR0eS1nZW5lcmF0b3JdID0gIiIKLQotUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS1lbmFibGUtYXVkaXQsLS1kaXNhYmxlLWF1ZGl0LGF1ZGl0IgotUEFDS0FHRUNPTkZJR1tiYWNrbGlnaHRdID0gIi0tZW5hYmxlLWJhY2tsaWdodCwtLWRpc2FibGUtYmFja2xpZ2h0IgotUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi0tZW5hYmxlLWJpbmZtdCwtLWRpc2FibGUtYmluZm10IgotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS1lbmFibGUtYnppcDIsLS1kaXNhYmxlLWJ6aXAyLGJ6aXAyIgotUEFDS0FHRUNPTkZJR1tjb3JlZHVtcF0gPSAiLS1lbmFibGUtY29yZWR1bXAsLS1kaXNhYmxlLWNvcmVkdW1wIgotUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItLWVuYWJsZS1saWJjcnlwdHNldHVwLC0tZGlzYWJsZS1saWJjcnlwdHNldHVwLGNyeXB0c2V0dXAiCi1QQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyIKLVBBQ0tBR0VDT05GSUdbZWZpXSA9ICItLWVuYWJsZS1lZmksLS1kaXNhYmxlLWVmaSIKLVBBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi0tZW5hYmxlLWVsZnV0aWxzLC0tZGlzYWJsZS1lbGZ1dGlscyxlbGZ1dGlscyIKLVBBQ0tBR0VDT05GSUdbZmlyc3Rib290XSA9ICItLWVuYWJsZS1maXJzdGJvb3QsLS1kaXNhYmxlLWZpcnN0Ym9vdCIKLSMgU2lnbiB0aGUgam91cm5hbCBmb3IgYW50aS10YW1wZXJpbmcKLVBBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLWVuYWJsZS1nY3J5cHQsLS1kaXNhYmxlLWdjcnlwdCxsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLS1lbmFibGUtaGliZXJuYXRlLC0tZGlzYWJsZS1oaWJlcm5hdGUiCi1QQUNLQUdFQ09ORklHW2hvc3RuYW1lZF0gPSAiLS1lbmFibGUtaG9zdG5hbWVkLC0tZGlzYWJsZS1ob3N0bmFtZWQiCi1QQUNLQUdFQ09ORklHW2ltYV0gPSAiLS1lbmFibGUtaW1hLC0tZGlzYWJsZS1pbWEiCi0jIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAotUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItLWVuYWJsZS1pbXBvcnRkLC0tZGlzYWJsZS1pbXBvcnRkIgotIyBVcGRhdGUgTkFUIGZpcmV3YWxsIHJ1bGVzCi1QQUNLQUdFQ09ORklHW2lwdGNdID0gIi0tZW5hYmxlLWxpYmlwdGMsLS1kaXNhYmxlLWxpYmlwdGMsaXB0YWJsZXMiCi1QQUNLQUdFQ09ORklHW2pvdXJuYWwtdXBsb2FkXSA9ICItLWVuYWJsZS1saWJjdXJsLC0tZGlzYWJsZS1saWJjdXJsLGN1cmwiCi1QQUNLQUdFQ09ORklHW2xkY29uZmlnXSA9ICItLWVuYWJsZS1sZGNvbmZpZywtLWRpc2FibGUtbGRjb25maWciCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS1lbmFibGUtbGliaWRuLC0tZGlzYWJsZS1saWJpZG4sbGliaWRuIgotUEFDS0FHRUNPTkZJR1tsb2NhbGVkXSA9ICItLWVuYWJsZS1sb2NhbGVkLC0tZGlzYWJsZS1sb2NhbGVkIgotUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi0tZW5hYmxlLWxvZ2luZCwtLWRpc2FibGUtbG9naW5kIgotUEFDS0FHRUNPTkZJR1tsejRdID0gIi0tZW5hYmxlLWx6NCwtLWRpc2FibGUtbHo0LGx6NCIKLVBBQ0tBR0VDT05GSUdbbWFjaGluZWRdID0gIi0tZW5hYmxlLW1hY2hpbmVkLC0tZGlzYWJsZS1tYWNoaW5lZCIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLC0tZGlzYWJsZS1tYW5wYWdlcyxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgotUEFDS0FHRUNPTkZJR1ttaWNyb2h0dHBkXSA9ICItLWVuYWJsZS1taWNyb2h0dHBkLC0tZGlzYWJsZS1taWNyb2h0dHBkLGxpYm1pY3JvaHR0cGQiCi1QQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi0tZW5hYmxlLW15aG9zdG5hbWUsLS1kaXNhYmxlLW15aG9zdG5hbWUiCi1QQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItLWVuYWJsZS1uZXR3b3JrZCwtLWRpc2FibGUtbmV0d29ya2QiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLS1lbmFibGUtbnNzLXN5c3RlbWQsLS1kaXNhYmxlLW5zcy1zeXN0ZW1kIgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSwtLWRpc2FibGUtcGFtLGxpYnBhbSwke1BBTV9QTFVHSU5TfSIKLVBBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItLWVuYWJsZS1wb2xraXQsLS1kaXNhYmxlLXBvbGtpdCIKLVBBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi0tZW5hYmxlLXFyZW5jb2RlLC0tZGlzYWJsZS1xcmVuY29kZSxxcmVuY29kZSIKLVBBQ0tBR0VDT05GSUdbcXVvdGFjaGVja10gPSAiLS1lbmFibGUtcXVvdGFjaGVjaywtLWRpc2FibGUtcXVvdGFjaGVjayIKLVBBQ0tBR0VDT05GSUdbcmFuZG9tc2VlZF0gPSAiLS1lbmFibGUtcmFuZG9tc2VlZCwtLWRpc2FibGUtcmFuZG9tc2VlZCIKLVBBQ0tBR0VDT05GSUdbcmVzb2x2ZWRdID0gIi0tZW5hYmxlLXJlc29sdmVkLC0tZGlzYWJsZS1yZXNvbHZlZCIKLVBBQ0tBR0VDT05GSUdbcmZraWxsXSA9ICItLWVuYWJsZS1yZmtpbGwsLS1kaXNhYmxlLXJma2lsbCIKLSMgbGlic2VjY29tcCBpcyBmb3VuZCBpbiBtZXRhLXNlY3VyaXR5Ci1QQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi0tZW5hYmxlLXNlY2NvbXAsLS1kaXNhYmxlLXNlY2NvbXAsbGlic2VjY29tcCIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCwtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4LGluaXRzY3JpcHRzLXN1c2hlbGwiCi1QQUNLQUdFQ09ORklHW3NtYWNrXSA9ICItLWVuYWJsZS1zbWFjaywtLWRpc2FibGUtc21hY2siCi1QQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItLWVuYWJsZS1zeXN1c2VycywtLWRpc2FibGUtc3lzdXNlcnMiCi1QQUNLQUdFQ09ORklHW3RpbWVkYXRlZF0gPSAiLS1lbmFibGUtdGltZWRhdGVkLC0tZGlzYWJsZS10aW1lZGF0ZWQiCi1QQUNLQUdFQ09ORklHW3RpbWVzeW5jZF0gPSAiLS1lbmFibGUtdGltZXN5bmNkLC0tZGlzYWJsZS10aW1lc3luY2QiCi1QQUNLQUdFQ09ORklHW3Vzcm1lcmdlXSA9ICItLWRpc2FibGUtc3BsaXQtdXNyLC0tZW5hYmxlLXNwbGl0LXVzciIKLVBBQ0tBR0VDT05GSUdbdXRtcF0gPSAiLS1lbmFibGUtdXRtcCwtLWRpc2FibGUtdXRtcCIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gImFjX2N2X2hlYWRlcl92YWxncmluZF9tZW1jaGVja19oPXllcyBhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD15ZXMsYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX21lbWNoZWNrX2g9bm8gYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX3ZhbGdyaW5kX2g9bm8sdmFsZ3JpbmQiCi1QQUNLQUdFQ09ORklHW3Zjb25zb2xlXSA9ICItLWVuYWJsZS12Y29uc29sZSwtLWRpc2FibGUtdmNvbnNvbGUsLCR7UE59LXZjb25zb2xlLXNldHVwIgotIyBWZXJpZnkga2V5bWFwcyBvbiBsb2NhbGUgY2hhbmdlCi1QQUNLQUdFQ09ORklHW3hrYmNvbW1vbl0gPSAiLS1lbmFibGUteGtiY29tbW9uLC0tZGlzYWJsZS14a2Jjb21tb24sbGlieGtiY29tbW9uIgotUEFDS0FHRUNPTkZJR1t4el0gPSAiLS1lbmFibGUteHosLS1kaXNhYmxlLXh6LHh6IgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCi0KLSMgSGFyZGNvZGUgdGFyZ2V0IGJpbmFyeSBwYXRocyB0byBhdm9pZCBBQ19QUk9HX1BBVEggaW4gdGhlIHN5c3RlbWQKLSMgY29uZmlndXJlIHNjcmlwdCBkZXRlY3RpbmcgYW5kIHNldHRpbmcgcGF0aHMgZnJvbSBzeXNyb290IG9yIGhvc3QuCi1DQUNIRURfQ09ORklHVVJFVkFSU19jbGFzcy10YXJnZXQgPSAiIFwKLSAgICBhY19jdl9wYXRoX0tFWEVDPSR7c2JpbmRpcn0va2V4ZWMgXAotICAgIGFjX2N2X3BhdGhfS0lMTD0ke2Jhc2VfYmluZGlyfS9raWxsIFwKLSAgICBhY19jdl9wYXRoX0tNT0Q9JHtiYXNlX2JpbmRpcn0va21vZCBcCi0gICAgYWNfY3ZfcGF0aF9NT1VOVF9QQVRIPSR7YmFzZV9iaW5kaXJ9L21vdW50IFwKLSAgICBhY19jdl9wYXRoX1FVT1RBQ0hFQ0s9JHtzYmluZGlyfS9xdW90YWNoZWNrIFwKLSAgICBhY19jdl9wYXRoX1FVT1RBT049JHtzYmluZGlyfS9xdW90YW9uIFwKLSAgICBhY19jdl9wYXRoX1NVTE9HSU49JHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4gXAotICAgIGFjX2N2X3BhdGhfVU1PVU5UX1BBVEg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IFwKLSIKLQotIyBIZWxwZXIgdmFyaWFibGVzIHRvIGNsYXJpZnkgbG9jYXRpb25zLiAgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiBzeXN0ZW1kJ3MKLSMgYnVpbGQgc3lzdGVtLgotcm9vdHByZWZpeCA/PSAiJHtyb290X3ByZWZpeH0iCi1yb290bGliZGlyID89ICIke2Jhc2VfbGliZGlyfSIKLXJvb3RsaWJleGVjZGlyID0gIiR7cm9vdHByZWZpeH0vbGliIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXdpdGhvdXQtcHl0aG9uIFwKLSAgICAtLXdpdGgtcm9vdGhvbWVkaXI9JHtST09UX0hPTUV9IFwKLSAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke3Jvb3RsaWJkaXJ9IFwKLSAgICAtLXdpdGgtcm9vdHByZWZpeD0ke3Jvb3RwcmVmaXh9IFwKLSAgICAtLXdpdGgtc3lzdnJjbmQtcGF0aD0ke3N5c2NvbmZkaXJ9IFwKLSAgICAtLXdpdGgtZmlybXdhcmUtcGF0aD0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlIFwKLSIKLQotIyBwZXIgdGhlIHN5c3RlbWQgUkVBRE1FLCBkZWZpbmUgVkFMR1JJTkQ9MSB0byBydW4gdW5kZXIgdmFsZ3JpbmQKLUNGTEFHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsZ3JpbmQnLCAnIC1EVkFMR1JJTkQ9MScsICcnLCBkKX0iCi0KLSMgZGlzYWJsZSBwcm9ibGVtYXRpYyBHQ0MgNS4yIG9wdGltaXphdGlvbnMgW1lPQ1RPICM4MjkxXQotRlVMTF9PUFRJTUlaQVRJT05fYXBwZW5kX2FybSA9ICIgLWZuby1zY2hlZHVsZS1pbnNucyAtZm5vLXNjaGVkdWxlLWluc25zMiIKLQotQ09NUElMRVJfTk0gPz0gIiR7SE9TVF9QUkVGSVh9Z2NjLW5tIgotQ09NUElMRVJfQVIgPz0gIiR7SE9TVF9QUkVGSVh9Z2NjLWFyIgotQ09NUElMRVJfUkFOTElCID89ICIke0hPU1RfUFJFRklYfWdjYy1yYW5saWIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCWV4cG9ydCBOTT0iJHtDT01QSUxFUl9OTX0iCi0JZXhwb3J0IEFSPSIke0NPTVBJTEVSX0FSfSIKLQlleHBvcnQgUkFOTElCPSIke0NPTVBJTEVSX1JBTkxJQn0iCi0JZXhwb3J0IEtNT0Q9IiR7YmFzZV9iaW5kaXJ9L2ttb2QiCi0JaWYgWyAtZCAke1N9L3VuaXRzLnByZV9zZWQgXSA7IHRoZW4KLQkJY3AgLXIgJHtTfS91bml0cy5wcmVfc2VkICR7U30vdW5pdHMKLQllbHNlCi0JCWNwIC1yICR7U30vdW5pdHMgJHtTfS91bml0cy5wcmVfc2VkCi0JZmkKLQlzZWQgLWkgLWUgJ3M6LURURVNUX0RJUj1cXFwiLipcXFwiOi1EVEVTVF9ESVI9XFxcIiR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdFxcXCI6JyAke1N9L01ha2VmaWxlLmFtCi0Jc2VkIC1pIC1lICdzOi1EQ0FUQUxPR19ESVI9XFxcIi4qXFxcIjotRENBVEFMT0dfRElSPVxcXCIke1BURVNUX1BBVEh9L3Rlc3RzL2NhdGFsb2dcXFwiOicgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgotCQkjIFByb3ZpZGVkIGJ5IGEgc2VwYXJhdGUgcmVjaXBlCi0JCXJtICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NlcmlhbC1nZXR0eSogLWYKLQlmaQotCi0JIyBQcm92aWRlIHN1cHBvcnQgZm9yIGluaXRyYW1mcwotCVsgISAtZSAke0R9L2luaXQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQgJHtEfS9pbml0Ci0JWyAhIC1lICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkCi0KLQkjIENyZWF0ZSBtYWNoaW5lLWlkCi0JIyAyMDoxMiA8IG1lemNhbGVybz4ga29lbjogeW91IGhhdmUgdGhyZWUgb3B0aW9uczogYSkgcnVuIHN5c3RlbWQtbWFjaGluZS1pZC1zZXR1cCBhdCBpbnN0YWxsIHRpbWUsIGIpIGhhdmUgLyByZWFkLW9ubHkgYW5kIGFuIGVtcHR5IGZpbGUgdGhlcmUgKGZvciBzdGF0ZWxlc3MpIGFuZCBjKSBib290IHdpdGggLyB3cml0YWJsZQotCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvdWRldi91ZGV2LnBjICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLwotCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKLQkJc2VkIC1pIHMlQFVERVZEQCUke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCi0JZmkKLQotCWNob3duIHJvb3Q6c3lzdGVtZC1qb3VybmFsICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvam91cm5hbAotCi0JIyBEZWxldGUgam91cm5hbCBSRUFETUUsIGFzIGxvZyBjYW4gYmUgc3ltbGlua2VkIGluc2lkZSB2b2xhdGlsZS4KLQlybSAtZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL1JFQURNRQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzCi0KLQkjIENyZWF0ZSBzeW1saW5rcyBmb3Igc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXRtcCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCWZpCi0KLQkjIEVuYWJsZSBqb3VybmFsIHRvIGZvcndhcmQgbWVzc2FnZSB0byBzeXNsb2cgZGFlbW9uCi0Jc2VkIC1pIC1lICdzLy4qRm9yd2FyZFRvU3lzbG9nLiovRm9yd2FyZFRvU3lzbG9nPXllcy8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgotCSMgU2V0IHRoZSBtYXhpbWl1bSBzaXplIG9mIHJ1bnRpbWUgam91cm5hbCB0byA2NE0gYXMgZGVmYXVsdAotCXNlZCAtaSAtZSAncy8uKlJ1bnRpbWVNYXhVc2UuKi9SdW50aW1lTWF4VXNlPTY0TS8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgotCi0JIyB0aGlzIGZpbGUgaXMgbmVlZGVkIHRvIGV4aXN0IGlmIG5ldHdvcmtkIGlzIGRpc2FibGVkIGJ1dCB0aW1lc3luY2QgaXMgc3RpbGwgaW4gdXNlIHNpbmNlIHRpbWVzeW5jZCBjaGVja3MgaXQKLQkjIGZvciBleGlzdGVuY2UgZWxzZSBpdCBmYWlscwotCWlmIFsgLXMgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZiBdOyB0aGVuCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJzonLCAnc2VkIC1pIC1lICJcJGFkIC9ydW4vc3lzdGVtZC9uZXRpZi9saW5rcyAwNzU1IHJvb3Qgcm9vdCAtIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mJywgZCl9Ci0JZmkKLQlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJZWNobyAnTCEgJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCi0JCWVjaG8gJ2QgL3J1bi9zeXN0ZW1kL3Jlc29sdmUgMDc1NSByb290IHJvb3QgLScgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCi0JCWVjaG8gJ2YgL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgMDY0NCByb290IHJvb3QnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgotCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKLQllbHNlCi0JCXNlZCAtaSAtZSAicyVeTCEgL2V0Yy9yZXNvbHYuY29uZi4qJCVMISAvZXRjL3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiVnIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCi0JZmkKLQlpbnN0YWxsIC1EbSAwNzU1ICR7U30vc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQtc3lzdi1pbnN0YWxsCi0KLQkjIElmIHBvbGtpdCBpcyBzZXR1cCBmaXh1cCBwZXJtaXNzaW9ucyBhbmQgb3duZXJzaGlwCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJaWYgWyAtZCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kIF07IHRoZW4KLQkJCWNobW9kIDcwMCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCi0JCQljaG93biBwb2xraXRkOnJvb3QgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAotCQlmaQotCWZpCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCSMgaW5zdGFsbCBkYXRhIGZpbGVzIG5lZWRlZCBmb3IgdGVzdHMKLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKLQljcCAtcmZMICR7U30vdGVzdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKLQkjIHB5dGhvbiBpcyBkaXNhYmxlZCBmb3Igc3lzdGVtZCwgdGh1cyByZW1vdmluZyB0aGVzZSBweXRob24gdGVzdGluZyBzY3JpcHRzCi0Jcm0gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdC8qLnB5Ci0Jc2VkIC1pICdzLyJ0cmVlIi8ibHMiLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdC91ZGV2LXRlc3QucGwKLQotCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY2F0YWxvZwotCWluc3RhbGwgJHtTfS9jYXRhbG9nLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY2F0YWxvZy8KLQotCWluc3RhbGwgLUQgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYnVpbGQtYXV4L3Rlc3QtZHJpdmVyCi0KLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3J1bGVzCi0JaW5zdGFsbCAke0J9L3J1bGVzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcnVsZXMvCi0KLQkjIFRoaXMgZGlyZWN0b3J5IG5lZWRzIHRvIGJlIHRoZXJlIGZvciB1ZGV2LXRlc3QucGwgdG8gd29yay4KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vdWRldi9ydWxlcy5kCi0KLQkjIGluc3RhbGwgYWN0dWFsIHRlc3QgYmluYXJpZXMKLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS90ZXN0LSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vLmxpYnMvdGVzdC0qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLwotCi0JaW5zdGFsbCAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLwotfQotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKXsKLSAgICBzeXN0ZW1kbGliZGlyID0gZC5nZXRWYXIoInJvb3RsaWJkaXIiKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c3RlbWRsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnU3lzdGVtZCAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLX0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWIodWRldnxzeXN0ZW1kfG5zcykuKiIKLQotUEFDS0FHRVMgPSsgIlwKLSAgICAke1BOfS1ndWkgXAotICAgICR7UE59LXZjb25zb2xlLXNldHVwIFwKLSAgICAke1BOfS1pbml0cmFtZnMgXAotICAgICR7UE59LWFuYWx5emUgXAotICAgICR7UE59LWtlcm5lbC1pbnN0YWxsIFwKLSAgICAke1BOfS1ycG0tbWFjcm9zIFwKLSAgICAke1BOfS1iaW5mbXQgXAotICAgICR7UE59LXpzaC1jb21wbGV0aW9uIFwKLSAgICAke1BOfS14b3JnLXhpbml0cmMgXAotICAgICR7UE59LWNvbnRhaW5lciBcCi0gICAgJHtQTn0tZXh0cmEtdXRpbHMgXAotIgotCi1TVU1NQVJZXyR7UE59LWNvbnRhaW5lciA9ICJUb29scyBmb3IgY29udGFpbmVycyBhbmQgVk1zIgotREVTQ1JJUFRJT05fJHtQTn0tY29udGFpbmVyID0gIlN5c3RlbWQgdG9vbHMgdG8gc3Bhd24gYW5kIG1hbmFnZSBjb250YWluZXJzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLiIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiaW5mbXQnLCAnJHtQTn0tYmluZm10JywgJycsIGQpfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1iaW5mbXQgPSAic3lzdGVtZC1iaW5mbXQuc2VydmljZSIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1leHRyYS11dGlscyIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheTsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1yZW1vdGU7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXVwbG9hZDsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGltZXN5bmNkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC10aW1lc3luYzsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLW5ldHdvcms7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2NvcmVkdW1wJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1jb3JlZHVtcDsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXJlc29sdmU7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICctLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tdXNlci1ncm91cCAtLWhvbWUtZGlyICR7c3lzY29uZmRpcn0vcG9sa2l0LTEgcG9sa2l0ZDsnLCAnJywgZCl9IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbG9jazsgLXIgc3lzdGVtZC1qb3VybmFsIgotVVNFUkFERF9QQVJBTV8ke1BOfS1leHRyYS11dGlscyArPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWJ1cy1wcm94eTsiCi0KLUZJTEVTXyR7UE59LWFuYWx5emUgPSAiJHtiaW5kaXJ9L3N5c3RlbWQtYW5hbHl6ZSIKLQotRklMRVNfJHtQTn0taW5pdHJhbWZzID0gIi9pbml0IgotUkRFUEVORFNfJHtQTn0taW5pdHJhbWZzID0gIiR7UE59IgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZ2F3ayBtYWtlIHBlcmwgYmFzaCB4eiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYXNpYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhLWV1cm9wZSB0emRhdGEtYWZyaWNhIHR6ZGF0YS1hbnRhcmN0aWNhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtYXJjdGljIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtcGFjaWZpYyB0emRhdGEtcG9zaXgiCi0KLUZJTEVTXyR7UE59LXB0ZXN0ICs9ICIke2xpYmRpcn0vdWRldi9ydWxlcy5kIgotCi1GSUxFU18ke1BOfS1ndWkgPSAiJHtiaW5kaXJ9L3N5c3RlbWFkbSIKLQotRklMRVNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXZjb25zb2xlLXNldHVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIgotCi1SREVQRU5EU18ke1BOfS1rZXJuZWwtaW5zdGFsbCArPSAiYmFzaCIKLUZJTEVTXyR7UE59LWtlcm5lbC1pbnN0YWxsID0gIiR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2tlcm5lbC8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2tlcm5lbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLUZJTEVTXyR7UE59LXJwbS1tYWNyb3MgPSAiJHtleGVjX3ByZWZpeH0vbGliL3JwbSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS14b3JnLXhpbml0cmMgPSAiJHtzeXNjb25mZGlyfS9YMTEveGluaXQveGluaXRyYy5kLyoiCi0KLUZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uID0gIiR7ZGF0YWRpcn0venNoL3NpdGUtZnVuY3Rpb25zIgotCi1GSUxFU18ke1BOfS1iaW5mbXQgPSAiJHtzeXNjb25mZGlyfS9iaW5mbXQuZC8gXAotICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9iaW5mbXQuZCBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJpbmZtdCBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYmluZm10LnNlcnZpY2UiCi1SUkVDT01NRU5EU18ke1BOfS1iaW5mbXQgPSAia2VybmVsLW1vZHVsZS1iaW5mbXQtbWlzYyIKLQotUlJFQ09NTUVORFNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAia2JkIGtiZC1jb25zb2xlZm9udHMga2JkLWtleW1hcHMiCi0KLUZJTEVTXyR7UE59LWNvbnRhaW5lciA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vbWFjaGluZWN0bCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtbnNwYXduIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL2ltcG9ydC1wdWJyaW5nLmdwZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9jYWwtZnMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZS5zbGljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lcy50YXJnZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWltcG9ydGQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW1hY2hpbmVkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy1vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXJlbW90ZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1wdWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLW5zcGF3bi5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbnNwYXduQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX215bWFjaGluZXMuc28uMiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5wb2xpY3kgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEucG9saWN5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZXh0cmEtdXRpbHMgPSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1lc2NhcGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1pbmhpYml0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRldGVjdC12aXJ0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcnVuIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNhdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZWx0YSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ2xzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNndG9wIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXN0ZGlvLWJyaWRnZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWFzay1wYXNzd29yZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlc29sdmUtaG9zdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWMtcG93ZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjdGl2YXRlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1idXMtcHJveHlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zb2NrZXQtcHJveHlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXBseS1wYXNzd29yZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc2xlZXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tc2xlZXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWhpYmVybmF0ZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oeWJyaWQtc2xlZXAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtc3VzcGVuZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2xlZXAudGFyZ2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbml0Y3RsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1nZW5lcmF0b3JzL3N5c3RlbWQtZ3B0LWF1dG8tZ2VuZXJhdG9yIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1jZ3JvdXBzLWFnZW50IFwKLSIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2NvcmVkdW1wLmNvbmYgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbG9naW5kLmNvbmYgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZiIKLQotRklMRVNfJHtQTn0gPSAiICR7YmFzZV9iaW5kaXJ9LyogXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59IFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ZhY3RvcnkgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wYW0uZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY3RsLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3hkZy8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL1JFQURNRSBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kLyogXAotICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKLSAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIFwKLSAgICAgICAgICAgICAgICAvY2dyb3VwIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZCogXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9idXNjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9jb3JlZHVtcGN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2FsZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2hvc3RuYW1lY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGltZWRhdGVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ib290Y3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kLyouY29uZiBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3RlbWQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9tb2R1bGVzLWxvYWQuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c2N0bC5kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdXNlcnMuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2Vudmlyb25tZW50LmQgXAotICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcwLXVhY2Nlc3MucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzczLXNlYXQtbGF0ZS5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvOTktc3lzdGVtZC5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVkYXRlMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9jYWxlMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubmV0d29yazEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnJlc29sdmUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaG9zdG5hbWUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2dpbjEuY29uZiBcCi0gICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzLyAke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3Muc3lzdGVtZCIKLQotUkRFUEVORFNfJHtQTn0gKz0gImttb2QgZGJ1cyB1dGlsLWxpbnV4LW1vdW50IHVkZXYgKD0gJHtFWFRFTkRQS0dWfSkgdXRpbC1saW51eC1hZ2V0dHkiCi1SREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICcnLCAnc3lzdGVtZC1zZXJpYWxnZXR0eScsIGQpfSIKLVJERVBFTkRTXyR7UE59ICs9ICJ2b2xhdGlsZS1iaW5kcyB1cGRhdGUtcmMuZCIKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gInN5c3RlbWQtZXh0cmEtdXRpbHMgXAotICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWQtY29tcGF0LXVuaXRzIHVkZXYtaHdkYiBcCi0gICAgICAgICAgICAgICAgICAgICAgdXRpbC1saW51eC1mc2NrIGUyZnNwcm9ncy1lMmZzY2sgXAotICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtYXV0b2ZzNCBrZXJuZWwtbW9kdWxlLXVuaXgga2VybmVsLW1vZHVsZS1pcHY2IFwKLSAgICAgICAgICAgICAgICAgICAgICBvcy1yZWxlYXNlIFwKLSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKLUlOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKLQotUEFDS0FHRVMgPSsgInVkZXYgdWRldi1od2RiIgotCi1SUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgotCi1SREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCi0KLUZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmluZGtleWJvYXJkcyBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleWJvYXJkLWZvcmNlLXJlbGVhc2Uuc2ggXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXAgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9tdGRfcHJvYmUgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9zY3NpX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvdjRsX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwcyBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKLSAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvdWRldmFkbSBcCi0gICAgICAgICAgICAgICIKLQotRklMRVNfdWRldi1od2RiID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvaHdkYi5kIgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCi1JTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgotSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCi19Ci0KLSMgVE9ETzoKLSMgdS1hIGZvciBydW5sZXZlbCBhbmQgdGVsaW5pdAotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IGhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsIHJlc29sdi1jb25mIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbaW5pdF0gPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2luaXRdID0gIiR7YmFzZV9zYmluZGlyfS9pbml0IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbaW5pdF0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW2hhbHRdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW2hhbHRdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtyZWJvb3RdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCi1BTFRFUk5BVElWRV9QUklPUklUWVtyZWJvb3RdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtzaHV0ZG93bl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCi1BTFRFUk5BVElWRV9QUklPUklUWVtzaHV0ZG93bl0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2Vyb2ZmXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3Bvd2Vyb2ZmXSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcnVubGV2ZWxdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcnVubGV2ZWxdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVzb2x2LWNvbmZdID89ICI1MCIKLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAotCQktZSAncy9cKF5ob3N0czouKlwpXChcPGZpbGVzXD5cKVwoLipcKVwoXDxkbnNcPlwpXCguKlwpL1wxXDIgbXlob3N0bmFtZSBcM1w0XDUvJyBcCi0JCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCi19Ci0KLXBrZ19wcmVybV8ke1BOfSAoKSB7Ci0Jc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKLQkJLWUgJy9eaG9zdHM6L3MvXHMqbXlob3N0bmFtZS8vJyBcCi0JCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCi19Ci0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCi1wa2dfcG9zdGluc3RfdWRldi1od2RiICgpIHsKLQlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KLQkJJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2Jhc2VfYmluZGlyfS91ZGV2YWRtJyl9IGh3ZGIgLS11cGRhdGUgXAotCQkJLS1yb290ICRECi0JCWNob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotCWVsc2UKLQkJdWRldmFkbSBod2RiIC0tdXBkYXRlCi0JZmkKLX0KLQotcGtnX3ByZXJtX3VkZXYtaHdkYiAoKSB7Ci0Jcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLX0KLQotIyBBcyB0aGlzIHJlY2lwZSBidWlsZHMgdWRldiwgcmVzcGVjdCBzeXN0ZW1kIGJlaW5nIGluIERJU1RST19GRUFUVVJFUyBzbwotIyB0aGF0IHdlIGRvbid0IGJ1aWxkIGJvdGggdWRldiBhbmQgc3lzdGVtZCBpbiB3b3JsZCBidWlsZHMuCi1weXRob24gKCkgewotICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucyAoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ3N5c3RlbWQnIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMiKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTY1NThkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzcuYmIKQEAgLTAsMCArMSw1OTUgQEAKK3JlcXVpcmUgc3lzdGVtZC5pbmMKKworUFJPVklERVMgPSAidWRldiIKKworUEUgPSAiMSIKKworREVQRU5EUyA9ICJrbW9kIGludGx0b29sLW5hdGl2ZSBncGVyZi1uYXRpdmUgYWNsIHJlYWRsaW5lIGxpYmNhcCBsaWJjZ3JvdXAgdXRpbC1saW51eCIKKworU0VDVElPTiA9ICJiYXNlL3NoZWxsIgorCitpbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIG1lc29uIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBxZW11IHN5c3RlbWQgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gbWFucGFnZXMgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKKyMgQXMgdGhpcyByZWNpcGUgYnVpbGRzIHVkZXYsIHJlc3BlY3Qgc3lzdGVtZCBiZWluZyBpbiBESVNUUk9fRkVBVFVSRVMgc28KKyMgdGhhdCB3ZSBkb24ndCBidWlsZCBib3RoIHVkZXYgYW5kIHN5c3RlbWQgaW4gd29ybGQgYnVpbGRzLgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly90b3VjaHNjcmVlbi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1jaGVjay1mb3ItdWNoYXIuaC1pbi1tZXNvbi5idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE1LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTctSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMtaWYtbnNzLXN5c3RlbWQtaXMtbm90LWVuYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9yLXN0cm5kdXBhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNi1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNy1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI5LW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1FTkFCTEVfTVlIT1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzEtZml4LW1pc3NpbmctVUxPTkdfTE9OR19NQVgtZGVmaW5pdGlvbi1pbi1jYXNlLW9mLW11cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMyLW1lbWZkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzMtYmFzaWMtbWFjcm9zLXJlbmFtZS1ub3JldHVybi1pbnRvLV9ub3JldHVybl8tODQ1Ni5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJtb3VudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM0LUZpeC1mb3JtYXQtdHJ1bmNhdGlvbi1jb21waWxlLWZhaWx1cmUtYnktdHlwZWNhc3RpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNS1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfcWVtdWFsbCA9ICIgZmlsZTovLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaCIKKworIyBXb3JrYXJvdW5kIHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3RhY2tfY2hrX2ZhaWxfbG9jYWwnIG9uIHFlbXV4ODYgYW5kIHFlbXVwcGMgZm9yIG11c2wKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbF9xZW11eDg2ID0gIiBmaWxlOi8vMDAwMS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1mbGFncy10by13b3JrYXJvdW5kLW11c2wtYnVpLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsX3FlbXVwcGMgPSAiIGZpbGU6Ly8wMDAxLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLWZsYWdzLXRvLXdvcmthcm91bmQtbXVzbC1idWkucGF0Y2giCisKK1BBTV9QTFVHSU5TID0gIiBcCisgICAgcGFtLXBsdWdpbi11bml4IFwKKyAgICBwYW0tcGx1Z2luLWxvZ2ludWlkIFwKKyAgICBwYW0tcGx1Z2luLWtleWluaXQgXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdlZmkgbGRjb25maWcgcGFtIHNlbGludXggdXNybWVyZ2UnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsICdyZmtpbGwnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4a2Jjb21tb24nLCAnJywgZCl9IFwKKyAgICBiYWNrbGlnaHQgXAorICAgIGJpbmZtdCBcCisgICAgZmlyc3Rib290IFwKKyAgICBoaWJlcm5hdGUgXAorICAgIGhvc3RuYW1lZCBcCisgICAgaW1hIFwKKyAgICBsb2NhbGVkIFwKKyAgICBsb2dpbmQgXAorICAgIG1hY2hpbmVkIFwKKyAgICBteWhvc3RuYW1lIFwKKyAgICBuZXR3b3JrZCBcCisgICAgbnNzIFwKKyAgICBwb2xraXQgXAorICAgIHF1b3RhY2hlY2sgXAorICAgIHJhbmRvbXNlZWQgXAorICAgIHJlc29sdmVkIFwKKyAgICBzbWFjayBcCisgICAgc3lzdXNlcnMgXAorICAgIHRpbWVkYXRlZCBcCisgICAgdGltZXN5bmNkIFwKKyAgICB1dG1wIFwKKyAgICB2Y29uc29sZSBcCisgICAgeHogXAorIgorCitQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAiIFwKKyAgICBsb2NhbGVkIFwKKyAgICBteWhvc3RuYW1lIFwKKyAgICBuc3MgXAorICAgIHJlc29sdmVkIFwKKyAgICBzZWxpbnV4IFwKKyAgICBzbWFjayBcCisgICAgc3lzdXNlcnMgXAorICAgIHV0bXAgXAorIgorCisjIFVzZSB0aGUgdXBzdHJlYW0gc3lzdGVtZCBzZXJpYWwtZ2V0dHlALnNlcnZpY2UgYW5kIHJlbHkgb24KKyMgc3lzdGVtZC1nZXR0eS1nZW5lcmF0b3IgaW5zdGVhZCBvZiB1c2luZyB0aGUgT0UtY29yZSBzcGVjaWZpYworIyBzeXN0ZW1kLXNlcmlhbGdldHR5LmJiIC0gbm90IGVuYWJsZWQgYnkgZGVmYXVsdC4KK1BBQ0tBR0VDT05GSUdbc2VyaWFsLWdldHR5LWdlbmVyYXRvcl0gPSAiIgorCitQQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItRGF1ZGl0PXRydWUsLURhdWRpdD1mYWxzZSxhdWRpdCIKK1BBQ0tBR0VDT05GSUdbYmFja2xpZ2h0XSA9ICItRGJhY2tsaWdodD10cnVlLC1EYmFja2xpZ2h0PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi1EYmluZm10PXRydWUsLURiaW5mbXQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItRGJ6aXAyPXRydWUsLURiemlwMj1mYWxzZSxiemlwMiIKK1BBQ0tBR0VDT05GSUdbY29yZWR1bXBdID0gIi1EY29yZWR1bXA9dHJ1ZSwtRGNvcmVkdW1wPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItRGxpYmNyeXB0c2V0dXA9dHJ1ZSwtRGxpYmNyeXB0c2V0dXA9ZmFsc2UsY3J5cHRzZXR1cCIKK1BBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLURkYnVzPXRydWUsLURkYnVzPWZhbHNlLGRidXMiCitQQUNLQUdFQ09ORklHW2VmaV0gPSAiLURlZmk9dHJ1ZSwtRGVmaT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi1EZWxmdXRpbHM9dHJ1ZSwtRGVsZnV0aWxzPWZhbHNlLGVsZnV0aWxzIgorUEFDS0FHRUNPTkZJR1tmaXJzdGJvb3RdID0gIi1EZmlyc3Rib290PXRydWUsLURmaXJzdGJvb3Q9ZmFsc2UiCisjIFNpZ24gdGhlIGpvdXJuYWwgZm9yIGFudGktdGFtcGVyaW5nCitQQUNLQUdFQ09ORklHW2djcnlwdF0gPSAiLURnY3J5cHQ9dHJ1ZSwtRGdjcnlwdD1mYWxzZSxsaWJnY3J5cHQiCitQQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLURoaWJlcm5hdGU9dHJ1ZSwtRGhpYmVybmF0ZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbaG9zdG5hbWVkXSA9ICItRGhvc3RuYW1lZD10cnVlLC1EaG9zdG5hbWVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tpbWFdID0gIi1EaW1hPXRydWUsLURpbWE9ZmFsc2UiCisjIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAorUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItRGltcG9ydGQ9dHJ1ZSwtRGltcG9ydGQ9ZmFsc2UiCisjIFVwZGF0ZSBOQVQgZmlyZXdhbGwgcnVsZXMKK1BBQ0tBR0VDT05GSUdbaXB0Y10gPSAiLURsaWJpcHRjPXRydWUsLURsaWJpcHRjPWZhbHNlLGlwdGFibGVzIgorUEFDS0FHRUNPTkZJR1tqb3VybmFsLXVwbG9hZF0gPSAiLURsaWJjdXJsPXRydWUsLURsaWJjdXJsPWZhbHNlLGN1cmwiCitQQUNLQUdFQ09ORklHW2xkY29uZmlnXSA9ICItRGxkY29uZmlnPXRydWUsLURsZGNvbmZpZz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItRGxpYmlkbj10cnVlLC1EbGliaWRuPWZhbHNlLGxpYmlkbiIKK1BBQ0tBR0VDT05GSUdbbG9jYWxlZF0gPSAiLURsb2NhbGVkPXRydWUsLURsb2NhbGVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi1EbG9naW5kPXRydWUsLURsb2dpbmQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiLURsejQ9dHJ1ZSwtRGx6ND1mYWxzZSxsejQiCitQQUNLQUdFQ09ORklHW21hY2hpbmVkXSA9ICItRG1hY2hpbmVkPXRydWUsLURtYWNoaW5lZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuPXRydWUsLURtYW49ZmFsc2UsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbWljcm9odHRwZF0gPSAiLURtaWNyb2h0dHBkPXRydWUsLURtaWNyb2h0dHBkPWZhbHNlLGxpYm1pY3JvaHR0cGQiCitQQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi1EbXlob3N0bmFtZT10cnVlLC1EbXlob3N0bmFtZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbmV0d29ya2RdID0gIi1EbmV0d29ya2Q9dHJ1ZSwtRG5ldHdvcmtkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi1EbnNzLXN5c3RlbWQ9dHJ1ZSwtRG5zcy1zeXN0ZW1kPWZhbHNlIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi1EcGFtPXRydWUsLURwYW09ZmFsc2UsbGlicGFtLCR7UEFNX1BMVUdJTlN9IgorUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi1EcG9sa2l0PXRydWUsLURwb2xraXQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItRHFyZW5jb2RlPXRydWUsLURxcmVuY29kZT1mYWxzZSxxcmVuY29kZSIKK1BBQ0tBR0VDT05GSUdbcXVvdGFjaGVja10gPSAiLURxdW90YWNoZWNrPXRydWUsLURxdW90YWNoZWNrPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tyYW5kb21zZWVkXSA9ICItRHJhbmRvbXNlZWQ9dHJ1ZSwtRHJhbmRvbXNlZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Jlc29sdmVkXSA9ICItRHJlc29sdmU9dHJ1ZSwtRHJlc29sdmU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Jma2lsbF0gPSAiLURyZmtpbGw9dHJ1ZSwtRHJma2lsbD1mYWxzZSIKKyMgbGlic2VjY29tcCBpcyBmb3VuZCBpbiBtZXRhLXNlY3VyaXR5CitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi1Ec2VjY29tcD10cnVlLC1Ec2VjY29tcD1mYWxzZSxsaWJzZWNjb21wIgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItRHNlbGludXg9dHJ1ZSwtRHNlbGludXg9ZmFsc2UsbGlic2VsaW51eCxpbml0c2NyaXB0cy1zdXNoZWxsIgorUEFDS0FHRUNPTkZJR1tzbWFja10gPSAiLURzbWFjaz10cnVlLC1Ec21hY2s9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItRHN5c3VzZXJzPXRydWUsLURzeXN1c2Vycz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdGltZWRhdGVkXSA9ICItRHRpbWVkYXRlZD10cnVlLC1EdGltZWRhdGVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t0aW1lc3luY2RdID0gIi1EdGltZXN5bmNkPXRydWUsLUR0aW1lc3luY2Q9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Vzcm1lcmdlXSA9ICItRHNwbGl0LXVzcj1mYWxzZSwtRHNwbGl0LXVzcj10cnVlIgorUEFDS0FHRUNPTkZJR1t1dG1wXSA9ICItRHV0bXA9dHJ1ZSwtRHV0bXA9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItRFZBTEdSSU5EPTEsLHZhbGdyaW5kIgorUEFDS0FHRUNPTkZJR1t2Y29uc29sZV0gPSAiLUR2Y29uc29sZT10cnVlLC1EdmNvbnNvbGU9ZmFsc2UsLCR7UE59LXZjb25zb2xlLXNldHVwIgorIyBWZXJpZnkga2V5bWFwcyBvbiBsb2NhbGUgY2hhbmdlCitQQUNLQUdFQ09ORklHW3hrYmNvbW1vbl0gPSAiLUR4a2Jjb21tb249dHJ1ZSwtRHhrYmNvbW1vbj1mYWxzZSxsaWJ4a2Jjb21tb24iCitQQUNLQUdFQ09ORklHW3h6XSA9ICItRHh6PXRydWUsLUR4ej1mYWxzZSx4eiIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLUR6bGliPXRydWUsLUR6bGliPWZhbHNlLHpsaWIiCisKKyMgSGVscGVyIHZhcmlhYmxlcyB0byBjbGFyaWZ5IGxvY2F0aW9ucy4gIFRoaXMgbWlycm9ycyB0aGUgbG9naWMgaW4gc3lzdGVtZCdzCisjIGJ1aWxkIHN5c3RlbS4KK3Jvb3RwcmVmaXggPz0gIiR7cm9vdF9wcmVmaXh9Igorcm9vdGxpYmRpciA/PSAiJHtiYXNlX2xpYmRpcn0iCityb290bGliZXhlY2RpciA9ICIke3Jvb3RwcmVmaXh9L2xpYiIKKworIyBUaGlzIGxpbmtzIHVkZXYgc3RhdGljYWxseSB3aXRoIHN5c3RlbWQgaGVscGVyIGxpYnJhcnkuCisjIE90aGVyd2lzZSB1ZGV2IHBhY2thZ2Ugd291bGQgZGVwZW5kIG9uIHN5c3RlbWQgcGFja2FnZSAod2hpY2ggaGFzIHRoZSBuZWVkZWQgc2hhcmVkIGxpYnJhcnkpLAorIyBhbmQgYWx3YXlzIHB1bGwgaXQgaW50byBpbWFnZXMuCitFWFRSQV9PRU1FU09OICs9ICItRGxpbmstdWRldi1zaGFyZWQ9ZmFsc2UiCisKK0VYVFJBX09FTUVTT04gKz0gIi1Ebm9ib2R5LXVzZXI9bm9ib2R5IFwKKyAgICAgICAgICAgICAgICAgIC1Ebm9ib2R5LWdyb3VwPW5vYm9keSBcCisgICAgICAgICAgICAgICAgICAtRHJvb3Rob21lZGlyPSR7Uk9PVEhPTUV9IFwKKyAgICAgICAgICAgICAgICAgIC1Ecm9vdGxpYmRpcj0ke3Jvb3RsaWJkaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1Ecm9vdHByZWZpeD0ke3Jvb3RwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAgIC1Ec3lzdnJjbmQtcGF0aD0ke3N5c2NvbmZkaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EZmlybXdhcmUtcGF0aD0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlIFwKKyAgICAgICAgICAgICAgICAgICIKKworIyBIYXJkY29kZSB0YXJnZXQgYmluYXJ5IHBhdGhzIHRvIGF2b2lkIHVzaW5nIHBhdGhzIGZyb20gc3lzcm9vdAorRVhUUkFfT0VNRVNPTiArPSAiLURrZXhlYy1wYXRoPSR7c2JpbmRpcn0va2V4ZWMgXAorICAgICAgICAgICAgICAgICAgLURraWxsLXBhdGg9JHtiYXNlX2JpbmRpcn0va2lsbCBcCisgICAgICAgICAgICAgICAgICAtRGttb2QtcGF0aD0ke2Jhc2VfYmluZGlyfS9rbW9kIFwKKyAgICAgICAgICAgICAgICAgIC1EbW91bnQtcGF0aD0ke2Jhc2VfYmluZGlyfS9tb3VudCBcCisgICAgICAgICAgICAgICAgICAtRHF1b3RhY2hlY2stcGF0aD0ke3NiaW5kaXJ9L3F1b3RhY2hlY2sgXAorICAgICAgICAgICAgICAgICAgLURxdW90YW9uLXBhdGg9JHtzYmluZGlyfS9xdW90YW9uIFwKKyAgICAgICAgICAgICAgICAgIC1Ec3Vsb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIFwKKyAgICAgICAgICAgICAgICAgIC1EdW1vdW50LXBhdGg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IgorCitkb19pbnN0YWxsKCkgeworCW1lc29uX2RvX2luc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9CisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCisJCSMgUHJvdmlkZWQgYnkgYSBzZXBhcmF0ZSByZWNpcGUKKwkJcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2VyaWFsLWdldHR5KiAtZgorCWZpCisKKwkjIFByb3ZpZGUgc3VwcG9ydCBmb3IgaW5pdHJhbWZzCisJWyAhIC1lICR7RH0vaW5pdCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCAke0R9L2luaXQKKwlbICEgLWUgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQKKworCSMgQ3JlYXRlIG1hY2hpbmUtaWQKKwkjIDIwOjEyIDwgbWV6Y2FsZXJvPiBrb2VuOiB5b3UgaGF2ZSB0aHJlZSBvcHRpb25zOiBhKSBydW4gc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIGF0IGluc3RhbGwgdGltZSwgYikgaGF2ZSAvIHJlYWQtb25seSBhbmQgYW4gZW1wdHkgZmlsZSB0aGVyZSAoZm9yIHN0YXRlbGVzcykgYW5kIGMpIGJvb3Qgd2l0aCAvIHdyaXRhYmxlCisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbWFjaGluZS1pZAorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZworCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy91ZGV2L3VkZXYucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCisKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLworCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAorCQlzZWQgLWkgcyVAVURFVkRAJSR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKKwlmaQorCisJY2hvd24gcm9vdDpzeXN0ZW1kLWpvdXJuYWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsCisKKwkjIERlbGV0ZSBqb3VybmFsIFJFQURNRSwgYXMgbG9nIGNhbiBiZSBzeW1saW5rZWQgaW5zaWRlIHZvbGF0aWxlLgorCXJtIC1mICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvUkVBRE1FCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMKKworCSMgQ3JlYXRlIHN5bWxpbmtzIGZvciBzeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1dG1wJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJZmkKKworCSMgRW5hYmxlIGpvdXJuYWwgdG8gZm9yd2FyZCBtZXNzYWdlIHRvIHN5c2xvZyBkYWVtb24KKwlzZWQgLWkgLWUgJ3MvLipGb3J3YXJkVG9TeXNsb2cuKi9Gb3J3YXJkVG9TeXNsb2c9eWVzLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCisJIyBTZXQgdGhlIG1heGltaXVtIHNpemUgb2YgcnVudGltZSBqb3VybmFsIHRvIDY0TSBhcyBkZWZhdWx0CisJc2VkIC1pIC1lICdzLy4qUnVudGltZU1heFVzZS4qL1J1bnRpbWVNYXhVc2U9NjRNLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCisKKwkjIHRoaXMgZmlsZSBpcyBuZWVkZWQgdG8gZXhpc3QgaWYgbmV0d29ya2QgaXMgZGlzYWJsZWQgYnV0IHRpbWVzeW5jZCBpcyBzdGlsbCBpbiB1c2Ugc2luY2UgdGltZXN5bmNkIGNoZWNrcyBpdAorCSMgZm9yIGV4aXN0ZW5jZSBlbHNlIGl0IGZhaWxzCisJaWYgWyAtcyAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mIF07IHRoZW4KKwkJJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnOicsICdzZWQgLWkgLWUgIlwkYWQgL3J1bi9zeXN0ZW1kL25ldGlmL2xpbmtzIDA3NTUgcm9vdCByb290IC0iICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYnLCBkKX0KKwlmaQorCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQllY2hvICdMISAke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZicgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKKwkJZWNobyAnZCAvcnVuL3N5c3RlbWQvcmVzb2x2ZSAwNzU1IHJvb3Qgcm9vdCAtJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKKwkJZWNobyAnZiAvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAwNjQ0IHJvb3Qgcm9vdCcgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCisJCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAorCWVsc2UKKwkJc2VkIC1pIC1lICJzJV5MISAvZXRjL3Jlc29sdi5jb25mLiokJUwhIC9ldGMvcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJWciICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgorCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKKwlmaQorCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKKworCSMgSWYgcG9sa2l0IGlzIHNldHVwIGZpeHVwIHBlcm1pc3Npb25zIGFuZCBvd25lcnNoaXAKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpZiBbIC1kICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQgXTsgdGhlbgorCQkJY2htb2QgNzAwICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKKwkJCWNob3duIHBvbGtpdGQ6cm9vdCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCisJCWZpCisJZmkKK30KKworCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKXsKKyAgICBzeXN0ZW1kbGliZGlyID0gZC5nZXRWYXIoInJvb3RsaWJkaXIiKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c3RlbWRsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnU3lzdGVtZCAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKK30KK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWIodWRldnxzeXN0ZW1kfG5zcykuKiIKKworUEFDS0FHRVMgPSsgIlwKKyAgICAke1BOfS1ndWkgXAorICAgICR7UE59LXZjb25zb2xlLXNldHVwIFwKKyAgICAke1BOfS1pbml0cmFtZnMgXAorICAgICR7UE59LWFuYWx5emUgXAorICAgICR7UE59LWtlcm5lbC1pbnN0YWxsIFwKKyAgICAke1BOfS1ycG0tbWFjcm9zIFwKKyAgICAke1BOfS1iaW5mbXQgXAorICAgICR7UE59LXpzaC1jb21wbGV0aW9uIFwKKyAgICAke1BOfS14b3JnLXhpbml0cmMgXAorICAgICR7UE59LWNvbnRhaW5lciBcCisgICAgJHtQTn0tZXh0cmEtdXRpbHMgXAorIgorCitTVU1NQVJZXyR7UE59LWNvbnRhaW5lciA9ICJUb29scyBmb3IgY29udGFpbmVycyBhbmQgVk1zIgorREVTQ1JJUFRJT05fJHtQTn0tY29udGFpbmVyID0gIlN5c3RlbWQgdG9vbHMgdG8gc3Bhd24gYW5kIG1hbmFnZSBjb250YWluZXJzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLiIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiaW5mbXQnLCAnJHtQTn0tYmluZm10JywgJycsIGQpfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1iaW5mbXQgPSAic3lzdGVtZC1iaW5mbXQuc2VydmljZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1leHRyYS11dGlscyIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheTsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1yZW1vdGU7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXVwbG9hZDsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGltZXN5bmNkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC10aW1lc3luYzsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLW5ldHdvcms7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2NvcmVkdW1wJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1jb3JlZHVtcDsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXJlc29sdmU7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICctLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tdXNlci1ncm91cCAtLWhvbWUtZGlyICR7c3lzY29uZmRpcn0vcG9sa2l0LTEgcG9sa2l0ZDsnLCAnJywgZCl9IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbG9jazsgLXIgc3lzdGVtZC1qb3VybmFsIgorVVNFUkFERF9QQVJBTV8ke1BOfS1leHRyYS11dGlscyArPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWJ1cy1wcm94eTsiCisKK0ZJTEVTXyR7UE59LWFuYWx5emUgPSAiJHtiaW5kaXJ9L3N5c3RlbWQtYW5hbHl6ZSIKKworRklMRVNfJHtQTn0taW5pdHJhbWZzID0gIi9pbml0IgorUkRFUEVORFNfJHtQTn0taW5pdHJhbWZzID0gIiR7UE59IgorCitGSUxFU18ke1BOfS1ndWkgPSAiJHtiaW5kaXJ9L3N5c3RlbWFkbSIKKworRklMRVNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXZjb25zb2xlLXNldHVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIgorCitSREVQRU5EU18ke1BOfS1rZXJuZWwtaW5zdGFsbCArPSAiYmFzaCIKK0ZJTEVTXyR7UE59LWtlcm5lbC1pbnN0YWxsID0gIiR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2tlcm5lbC8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2tlcm5lbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LXJwbS1tYWNyb3MgPSAiJHtleGVjX3ByZWZpeH0vbGliL3JwbSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS14b3JnLXhpbml0cmMgPSAiJHtzeXNjb25mZGlyfS9YMTEveGluaXQveGluaXRyYy5kLyoiCisKK0ZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uID0gIiR7ZGF0YWRpcn0venNoL3NpdGUtZnVuY3Rpb25zIgorCitGSUxFU18ke1BOfS1iaW5mbXQgPSAiJHtzeXNjb25mZGlyfS9iaW5mbXQuZC8gXAorICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9iaW5mbXQuZCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJpbmZtdCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYmluZm10LnNlcnZpY2UiCitSUkVDT01NRU5EU18ke1BOfS1iaW5mbXQgPSAia2VybmVsLW1vZHVsZS1iaW5mbXQtbWlzYyIKKworUlJFQ09NTUVORFNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAia2JkIGtiZC1jb25zb2xlZm9udHMga2JkLWtleW1hcHMiCisKK0ZJTEVTXyR7UE59LWNvbnRhaW5lciA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vbWFjaGluZWN0bCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtbnNwYXduIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL2ltcG9ydC1wdWJyaW5nLmdwZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9jYWwtZnMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZS5zbGljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lcy50YXJnZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWltcG9ydGQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW1hY2hpbmVkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy1vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXJlbW90ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1wdWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLW5zcGF3bi5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbnNwYXduQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX215bWFjaGluZXMuc28uMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5wb2xpY3kgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEucG9saWN5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0tZXh0cmEtdXRpbHMgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1lc2NhcGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1pbmhpYml0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRldGVjdC12aXJ0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcnVuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNhdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZWx0YSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ2xzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNndG9wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXN0ZGlvLWJyaWRnZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWFzay1wYXNzd29yZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlc29sdmUtaG9zdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWMtcG93ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjdGl2YXRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1idXMtcHJveHlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zb2NrZXQtcHJveHlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXBseS1wYXNzd29yZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc2xlZXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tc2xlZXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWhpYmVybmF0ZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oeWJyaWQtc2xlZXAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtc3VzcGVuZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2xlZXAudGFyZ2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbml0Y3RsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1nZW5lcmF0b3JzL3N5c3RlbWQtZ3B0LWF1dG8tZ2VuZXJhdG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1jZ3JvdXBzLWFnZW50IFwKKyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2NvcmVkdW1wLmNvbmYgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbG9naW5kLmNvbmYgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZiBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZiIKKworRklMRVNfJHtQTn0gPSAiICR7YmFzZV9iaW5kaXJ9LyogXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ZhY3RvcnkgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wYW0uZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY3RsLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3hkZy8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL1JFQURNRSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kLyogXAorICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKKyAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIFwKKyAgICAgICAgICAgICAgICAvY2dyb3VwIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZCogXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9idXNjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9jb3JlZHVtcGN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2FsZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2hvc3RuYW1lY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGltZWRhdGVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ib290Y3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kLyouY29uZiBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3RlbWQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9tb2R1bGVzLWxvYWQuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c2N0bC5kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdXNlcnMuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2Vudmlyb25tZW50LmQgXAorICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcwLXVhY2Nlc3MucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzczLXNlYXQtbGF0ZS5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvOTktc3lzdGVtZC5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2Rwcm9iZS5kL3N5c3RlbWQuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVkYXRlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9jYWxlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubmV0d29yazEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnJlc29sdmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaG9zdG5hbWUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2dpbjEuY29uZiBcCisgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzLyAke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3Muc3lzdGVtZCIKKworUkRFUEVORFNfJHtQTn0gKz0gImttb2QgZGJ1cyB1dGlsLWxpbnV4LW1vdW50IHVkZXYgKD0gJHtFWFRFTkRQS0dWfSkgdXRpbC1saW51eC1hZ2V0dHkiCitSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICcnLCAnc3lzdGVtZC1zZXJpYWxnZXR0eScsIGQpfSIKK1JERVBFTkRTXyR7UE59ICs9ICJ2b2xhdGlsZS1iaW5kcyB1cGRhdGUtcmMuZCIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gInN5c3RlbWQtZXh0cmEtdXRpbHMgXAorICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWQtY29tcGF0LXVuaXRzIHVkZXYtaHdkYiBcCisgICAgICAgICAgICAgICAgICAgICAgdXRpbC1saW51eC1mc2NrIGUyZnNwcm9ncy1lMmZzY2sgXAorICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtYXV0b2ZzNCBrZXJuZWwtbW9kdWxlLXVuaXgga2VybmVsLW1vZHVsZS1pcHY2IFwKKyAgICAgICAgICAgICAgICAgICAgICBvcy1yZWxlYXNlIFwKKyIKKworSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCitJTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKK0lOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKKworUEFDS0FHRVMgPSsgInVkZXYgdWRldi1od2RiIgorCitSUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgorCitSREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCisKK0ZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmluZGtleWJvYXJkcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleWJvYXJkLWZvcmNlLXJlbGVhc2Uuc2ggXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXAgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9tdGRfcHJvYmUgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9zY3NpX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvdjRsX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKKyAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvdWRldmFkbSBcCisgICAgICAgICAgICAgICIKKworRklMRVNfdWRldi1od2RiID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvaHdkYi5kIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCitJTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgorSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKyAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCit9CisKKyMgVE9ETzoKKyMgdS1hIGZvciBydW5sZXZlbCBhbmQgdGVsaW5pdAorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IGhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsIHJlc29sdi1jb25mIgorCitBTFRFUk5BVElWRV9UQVJHRVRbaW5pdF0gPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2luaXRdID0gIiR7YmFzZV9zYmluZGlyfS9pbml0IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbaW5pdF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW2hhbHRdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW2hhbHRdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZWJvb3RdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCitBTFRFUk5BVElWRV9QUklPUklUWVtyZWJvb3RdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtzaHV0ZG93bl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCitBTFRFUk5BVElWRV9QUklPUklUWVtzaHV0ZG93bl0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2Vyb2ZmXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3Bvd2Vyb2ZmXSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcnVubGV2ZWxdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcnVubGV2ZWxdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVzb2x2LWNvbmZdID89ICI1MCIKKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKwlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAorCQktZSAncy9cKF5ob3N0czouKlwpXChcPGZpbGVzXD5cKVwoLipcKVwoXDxkbnNcPlwpXCguKlwpL1wxXDIgbXlob3N0bmFtZSBcM1w0XDUvJyBcCisJCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK3BrZ19wcmVybV8ke1BOfSAoKSB7CisJc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKKwkJLWUgJy9eaG9zdHM6L3MvXHMqbXlob3N0bmFtZS8vJyBcCisJCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCitwa2dfcG9zdGluc3RfdWRldi1od2RiICgpIHsKKwlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKwkJJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2Jhc2VfYmluZGlyfS91ZGV2YWRtJyl9IGh3ZGIgLS11cGRhdGUgXAorCQkJLS1yb290ICRECisJCWNob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgorCWVsc2UKKwkJdWRldmFkbSBod2RiIC0tdXBkYXRlCisJZmkKK30KKworcGtnX3ByZXJtX3VkZXYtaHdkYiAoKSB7CisJcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC1pbml0dGFiXzIuODhkc2YuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtaW5pdHRhYl8yLjg4ZHNmLmJiCmluZGV4IDViOWM0MjIuLjg1ODVhNDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC1pbml0dGFiXzIuODhkc2YuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWJfMi44OGRzZi5iYgpAQCAtNTMsOCArNTMsMTUgQEAKIH0KIAogcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyMgcnVuIHRoaXMgb24gaG9zdCBhbmQgb24gdGFyZ2V0CitpZiBbICIke1NFUklBTF9DT05TT0xFU19DSEVDS30iID0gIiIgXTsgdGhlbgorICAgICAgIGV4aXQgMAorZmkKK30KKworcGtnX3Bvc3RpbnN0X29udGFyZ2V0XyR7UE59ICgpIHsKICMgcnVuIHRoaXMgb24gdGhlIHRhcmdldAotaWYgWyAieCREIiA9ICJ4IiBdICYmIFsgLWUgL3Byb2MvY29uc29sZXMgXTsgdGhlbgoraWYgWyAtZSAvcHJvYy9jb25zb2xlcyBdOyB0aGVuCiAJdG1wPSIke1NFUklBTF9DT05TT0xFU19DSEVDS30iCiAJZm9yIGkgaW4gJHRtcAogCWRvCkBAIC02OCwxMSArNzUsNyBAQAogCWRvbmUKIAlraWxsIC1IVVAgMQogZWxzZQotCWlmIFsgIiR7U0VSSUFMX0NPTlNPTEVTX0NIRUNLfSIgPSAiIiBdOyB0aGVuCi0JCWV4aXQgMAotCWVsc2UKLQkJZXhpdCAxCi0JZmkKKwlleGl0IDEKIGZpCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKaW5kZXggMjJhMGVjZi4uYWQ2NTgxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKQEAgLTI4LDkgKzI4LDExIEBACiBTID0gIiR7V09SS0RJUn0vc3lzdmluaXQtJHtQVn0iCiBCID0gIiR7U30vc3JjIgogCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIERFUEVORFNfYXBwZW5kID0gIiB1cGRhdGUtcmMuZC1uYXRpdmUgYmFzZS1wYXNzd2QiCiAKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN2aW5pdCIKKwogQUxURVJOQVRJVkVfJHtQTn0gPSAiaW5pdCBtb3VudHBvaW50IGhhbHQgcmVib290IHJ1bmxldmVsIHNodXRkb3duIHBvd2Vyb2ZmIGxhc3QgbGFzdGIgbWVzZyB1dG1wZHVtcCB3YWxsIgogCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMDAiCkBAIC0xMDUsOCArMTA3LDMgQEAKIAljaG93biByb290LnNodXRkb3duICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaGFsdCAke0R9JHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duCiAJY2htb2Qgby14LHUrcyAke0R9JHtiYXNlX3NiaW5kaXJ9L2hhbHQgJHtEfSR7YmFzZV9zYmluZGlyfS9zaHV0ZG93bgogfQotCi1weXRob24gKCkgewotICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ3N5c3Zpbml0JyBub3QgaW4gRElTVFJPX0ZFQVRVUkVTIikKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZmIyM2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1TVU1NQVJZID0gImV1ZGV2IGlzIGEgZm9yayBvZiBzeXN0ZW1kJ3MgdWRldiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nZW50b28ub3JnL3dpa2kvRXVkZXYiCi1MSUNFTlNFID0gIkdQTHYyLjArICYgTEdQTC0yLjErIgotTElDRU5TRV9saWJ1ZGV2ID0gIkxHUEwtMi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBncGVyZi1uYXRpdmUga21vZCBsaWJ4c2x0LW5hdGl2ZSB1dGlsLWxpbnV4IgotCi1QUk9WSURFUyA9ICJ1ZGV2IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kZXYuZ2VudG9vLm9yZy9+Ymx1ZW5lc3MvJHtCUE59LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RldmZzLXVkZXYucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rcy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2xvY2FsLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3Blcm1pc3Npb25zLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly91ZGV2LnJ1bGVzIFwKLSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2VudG9vL2V1ZGV2L3JlbGVhc2VzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDFlMTliNzA0NjI2OTJmZWZkMDcyYTNmMzg4MThiNmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2U0YzU2ZWMyZmMxODU0YWZkMGEzMWYzYWZmYTQ4ZjkyMmM2MmQ0MGVlMTJhMGMxYTRiNGYxNTJlZjViMGY2MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcWVtdSBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCi0gICAgLS13aXRoLXJvb3RsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAotICAgIC0td2l0aC1yb290cHJlZml4PSBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJod2RiIgotUEFDS0FHRUNPTkZJR1tod2RiXSA9ICItLWVuYWJsZS1od2RiLC0tZGlzYWJsZS1od2RiIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKLQlzZWQgLWkgcyVAVURFVkRAJSR7YmFzZV9zYmluZGlyfS91ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbG9jYWwucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kL2xvY2FsLnJ1bGVzCi0KLQkjIFVzZSBjbGFzc2ljIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWluZyBzY2hlbWUKLQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvODAtbmV0LW5hbWUtc2xvdC5ydWxlcwotCi0JIyBoaWQyaGNpIGhhcyBtb3ZlZCB0byBibHVlejQuIHJlbW92ZWQgaW4gdWRldiBhcyBvZiB2ZXJzaW9uIDE2OQotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2L2hpZDJoY2kKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0JIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUKLQlzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JCSR7Qn0vc3JjL3VkZXYva2V5Ym9hcmQta2V5cy1mcm9tLW5hbWUuaAotfQotCi1JTklUU0NSSVBUX05BTUUgPSAidWRldiIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDA0IFMgLiIKLQotUEFDS0FHRVMgPSsgImxpYnVkZXYiCi1QQUNLQUdFUyA9KyAiZXVkZXYtaHdkYiIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfSAke2Jhc2VfbGliZGlyfS91ZGV2ICR7YmluZGlyfS91ZGV2YWRtIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3VkZXYucGMgXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbGlidWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LnNvIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L3VkZXYuaCAke2xpYmRpcn0vbGlidWRldi5sYSBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnVkZXYuYSAke2xpYmRpcn0vcGtnY29uZmlnL2xpYnVkZXYucGMiCi1GSUxFU19saWJ1ZGV2ID0gIiR7YmFzZV9saWJkaXJ9L2xpYnVkZXYuc28uKiIKLUZJTEVTX2V1ZGV2LWh3ZGIgPSAiJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuZCIKLQotUkRFUEVORFNfZXVkZXYtaHdkYiArPSAiZXVkZXYiCi0KLVJQUk9WSURFU18ke1BOfSA9ICJob3RwbHVnIHVkZXYiCi1SUFJPVklERVNfZXVkZXYtaHdkYiArPSAidWRldi1od2RiIgotCi1weXRob24gKCkgewotICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zICgnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInc3lzdGVtZCcgaW4gRElTVFJPX0ZFQVRVUkVTIikKLX0KLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKLXBrZ19wb3N0aW5zdF9ldWRldi1od2RiICgpIHsKLSAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KLSAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIC0tcm9vdCAkRAotICAgICAgICBjaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLSAgICBlbHNlCi0gICAgICAgIHVkZXZhZG0gaHdkYiAtLXVwZGF0ZQotICAgIGZpCi19Ci0KLXBrZ19wcmVybV9ldWRldi1od2RiICgpIHsKLSAgICAgICAgcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhhZDhmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi41LmJiCkBAIC0wLDAgKzEsOTIgQEAKK1NVTU1BUlkgPSAiZXVkZXYgaXMgYSBmb3JrIG9mIHN5c3RlbWQncyB1ZGV2IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdlbnRvby5vcmcvd2lraS9FdWRldiIKK0xJQ0VOU0UgPSAiR1BMdjIuMCsgJiBMR1BMLTIuMSsiCitMSUNFTlNFX2xpYnVkZXYgPSAiTEdQTC0yLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGdwZXJmLW5hdGl2ZSBrbW9kIGxpYnhzbHQtbmF0aXZlIHV0aWwtbGludXgiCisKK1BST1ZJREVTID0gInVkZXYiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rldi5nZW50b28ub3JnL35ibHVlbmVzcy8ke0JQTn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1JldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGV2ZnMtdWRldi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2xpbmtzLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbG9jYWwucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vcGVybWlzc2lvbnMucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vcnVuLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL3VkZXYucnVsZXMgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmNhMDhjMGUxNDM4MGY4N2RmOGU4YWNlYWMxMjM2NzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDljMmQwNDEwNWNhZDI1MjYzMDI2MjdlMDQwZmEyNGIxOTE2YTlhM2UwNTk1MzliYzhiYjkxOWI5NzM4OTBhZiIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcWVtdSBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK0NPTkZMSUNUX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKKyAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCisgICAgLS13aXRoLXJvb3RwcmVmaXg9IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImh3ZGIiCitQQUNLQUdFQ09ORklHW2h3ZGJdID0gIi0tZW5hYmxlLWh3ZGIsLS1kaXNhYmxlLWh3ZGIiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgorCXNlZCAtaSBzJUBVREVWREAlJHtiYXNlX3NiaW5kaXJ9L3VkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sb2NhbC5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvbG9jYWwucnVsZXMKKworCSMgVXNlIGNsYXNzaWMgbmV0d29yayBpbnRlcmZhY2UgbmFtaW5nIHNjaGVtZQorCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC84MC1uZXQtbmFtZS1zbG90LnJ1bGVzCisKKwkjIGhpZDJoY2kgaGFzIG1vdmVkIHRvIGJsdWV6NC4gcmVtb3ZlZCBpbiB1ZGV2IGFzIG9mIHZlcnNpb24gMTY5CisJcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvaGlkMmhjaQorfQorCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZQorCXNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkJJHtCfS9zcmMvdWRldi9rZXlib2FyZC1rZXlzLWZyb20tbmFtZS5oCit9CisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJ1ZGV2IgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDQgUyAuIgorCitQQUNLQUdFUyA9KyAibGlidWRldiIKK1BBQ0tBR0VTID0rICJldWRldi1od2RiIgorCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmV4ZWNkaXJ9ICR7YmFzZV9saWJkaXJ9L3VkZXYgJHtiaW5kaXJ9L3VkZXZhZG0iCitGSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS9wa2djb25maWcvdWRldi5wYyBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9saWJ1ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYuc28gXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vdWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LmxhIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlidWRldi5hICR7bGliZGlyfS9wa2djb25maWcvbGlidWRldi5wYyIKK0ZJTEVTX2xpYnVkZXYgPSAiJHtiYXNlX2xpYmRpcn0vbGlidWRldi5zby4qIgorRklMRVNfZXVkZXYtaHdkYiA9ICIke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5kIgorCitSREVQRU5EU19ldWRldi1od2RiICs9ICJldWRldiIKKworUlBST1ZJREVTXyR7UE59ID0gImhvdHBsdWcgdWRldiIKK1JQUk9WSURFU19ldWRldi1od2RiICs9ICJ1ZGV2LWh3ZGIiCisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCitwa2dfcG9zdGluc3RfZXVkZXYtaHdkYiAoKSB7CisgICAgaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisgICAgICAgICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L3VkZXZhZG0nKX0gaHdkYiAtLXVwZGF0ZSAtLXJvb3QgJEQKKyAgICAgICAgY2hvd24gcm9vdDpyb290ICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCisgICAgZWxzZQorICAgICAgICB1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKKyAgICBmaQorfQorCitwa2dfcHJlcm1fZXVkZXYtaHdkYiAoKSB7CisgICAgICAgIHJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kXzAuNy5iYgppbmRleCA2ZmM2ZjZlLi43NmQ0MzEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjcuYmIKQEAgLTE2LDcgKzE2LDcgQEAKICAgICAgICAgICAgZmlsZTovL2NoZWNrLWlmLXN5bWxpbmtzLWFyZS12YWxpZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtdG8taGFuZGxlLXByaW9yaXR5LW51bWJlcnMtY29ycmVjdGx5LnBhdGNoIFwKICAgICAgICAgICAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYwppbmRleCBmMGZmZDI1Li4wYjdkYjUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYwpAQCAtMjAsNyArMjAsNyBAQAogCiAjZ3RrLWRvYyBpcyBub3QgZW5hYmxlZCBhcyBpdCByZXF1aXJlcyB4bWx0byB3aGljaCByZXF1aXJlcyB1dGlsLWxpbnV4CiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcHl0aG9uMy1kaXIgYmFzaC1jb21wbGV0aW9uIHB0ZXN0Ci1ERVBFTkRTID0gInpsaWIgbmN1cnNlcyIKK0RFUEVORFMgPSAiemxpYiBuY3Vyc2VzIHZpcnR1YWwvY3J5cHQiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGx6by1uYXRpdmUiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIGx6by1uYXRpdmUiCiAKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgICAgICB1dGlsLWxpbnV4LXN3YXBvbm9mZiB1dGlsLWxpbnV4LWxvc2V0dXAgdXRpbC1saW51eC11bW91bnQgXAogICAgICAgICAgICAgIHV0aWwtbGludXgtbW91bnQgdXRpbC1saW51eC1yZWFkcHJvZmlsZSB1dGlsLWxpbnV4LXV1aWRkIFwKICAgICAgICAgICAgICB1dGlsLWxpbnV4LXV1aWRnZW4gdXRpbC1saW51eC1sc2NwdSB1dGlsLWxpbnV4LWZzY2suY3JhbWZzIHV0aWwtbGludXgtZnNjayBcCi0gICAgICAgICAgICAgdXRpbC1saW51eC1ibGtpZCB1dGlsLWxpbnV4LW1rZnMgdXRpbC1saW51eC1tY29va2llIHV0aWwtbGludXgtcmVzZXQgXAorICAgICAgICAgICAgIHV0aWwtbGludXgtYmxraWQgdXRpbC1saW51eC1ta2ZzIHV0aWwtbGludXgtbWNvb2tpZSB1dGlsLWxpbnV4LXJma2lsbCBcCiAgICAgICAgICAgICAgdXRpbC1saW51eC1sc2JsayB1dGlsLWxpbnV4LW1rZnMuY3JhbWZzIHV0aWwtbGludXgtZnN0cmltIFwKICAgICAgICAgICAgICB1dGlsLWxpbnV4LXBhcnR4IHV0aWwtbGludXgtaHdjbG9jayB1dGlsLWxpbnV4LW1vdW50cG9pbnQgXAogICAgICAgICAgICAgIHV0aWwtbGludXgtZmluZGZzIHV0aWwtbGludXgtZ2V0b3B0IHV0aWwtbGludXgtc3Vsb2dpbiB1dGlsLWxpbnV4LXBybGltaXQgXApAQCAtNDQsNyArNDQsNyBAQAogU0hBUkVEX0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdXNlLXR0eS1ncm91cCBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1tYWtlaW5zdGFsbC1jaG93biBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWtpbGwgLS1lbmFibGUtbGFzdCAtLWVuYWJsZS1tZXNnIC0tZW5hYmxlLXBhcnR4IFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtcmF3IC0tZW5hYmxlLXJlc2V0IC0tZGlzYWJsZS1sb2dpbiBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXJhdyAtLWVuYWJsZS1yZmtpbGwgLS1kaXNhYmxlLWxvZ2luIFwKICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZpcHcgLS1kaXNhYmxlLW5ld2dycCAtLWRpc2FibGUtY2hmbi1jaHNoIFwKICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtd3JpdGUgLS1lbmFibGUtbW91bnQgXAogICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJ1dWlkIC0tZW5hYmxlLWxpYmJsa2lkIC0tZW5hYmxlLWZzY2sgXApAQCAtODYsNyArODYsNyBAQAogRklMRVNfdXRpbC1saW51eC1yZWFkcHJvZmlsZSA9ICIke3NiaW5kaXJ9L3JlYWRwcm9maWxlLiR7QlBOfSIKIEZJTEVTX3V0aWwtbGludXgtdXVpZGdlbiA9ICIke2JpbmRpcn0vdXVpZGdlbiIKIEZJTEVTX3V0aWwtbGludXgtdXVpZGQgPSAiJHtzYmluZGlyfS91dWlkZCIKLUZJTEVTX3V0aWwtbGludXgtcmVzZXQgPSAiJHtiYXNlX2JpbmRpcn0vcmVzZXQqIgorRklMRVNfdXRpbC1saW51eC1yZmtpbGwgPSAiJHtzYmluZGlyfS9yZmtpbGwqIgogRklMRVNfdXRpbC1saW51eC1wYXJ0eCA9ICIke3NiaW5kaXJ9L3BhcnR4IgogRklMRVNfdXRpbC1saW51eC1od2Nsb2NrID0gIiR7YmFzZV9zYmluZGlyfS9od2Nsb2NrLiR7QlBOfSIKIEZJTEVTX3V0aWwtbGludXgtZmluZGZzID0gIiR7c2JpbmRpcn0vZmluZGZzIgpAQCAtMTE5LDkgKzExOSw2IEBACiBSQ09ORkxJQ1RTX3V0aWwtbGludXgtYmxraWQgPSAiZTJmc3Byb2dzLWJsa2lkIgogUlJFUExBQ0VTX3V0aWwtbGludXgtYmxraWQgPSAiZTJmc3Byb2dzLWJsa2lkIgogCi0jIHJlc2V0IGNhbGxzICd0cHV0JwotUkRFUEVORFNfdXRpbC1saW51eC1yZXNldCArPSAibmN1cnNlcyIKLQogUkRFUEVORFNfdXRpbC1saW51eC1ydW51c2VyICs9ICJsaWJwYW0iCiBSREVQRU5EU191dGlsLWxpbnV4LXN1ICs9ICJsaWJwYW0iCiAKQEAgLTE2MCw3ICsxNTcsNyBAQAogCiAgICAgICAgIHNiaW5wcm9ncz0iYWdldHR5IGN0cmxhbHRkZWwgY2ZkaXNrIHZpcHcgdmlnciIKICAgICAgICAgc2JpbnByb2dzX2E9InBpdm90X3Jvb3QgaHdjbG9jayBta3N3YXAgbWtmcy5taW5peCBmc2NrLm1pbml4IGxvc2V0dXAgc3dhcG9uIHN3YXBvZmYgZmRpc2sgZnNjayBibGtpZCBibG9ja2RldiBmc3RyaW0gc3Vsb2dpbiBzd2l0Y2hfcm9vdCBub2xvZ2luIgotICAgICAgICBiaW5wcm9nc19hPSJkbWVzZyBnZXRvcHQga2lsbCBtb3JlIHVtb3VudCBtb3VudCBsb2dpbiByZXNldCBzdSBtb3VudHBvaW50IgorICAgICAgICBiaW5wcm9nc19hPSJkbWVzZyBnZXRvcHQga2lsbCBtb3JlIHVtb3VudCBtb3VudCBsb2dpbiBzdSBtb3VudHBvaW50IgogCiAgICAgICAgIGlmIFsgIiR7YmFzZV9zYmluZGlyfSIgIT0gIiR7c2JpbmRpcn0iIF07IHRoZW4KICAgICAgICAgCW1rZGlyIC1wICR7RH0ke2Jhc2Vfc2JpbmRpcn0KQEAgLTE5OCwxNyArMTk1LDE4IEBACiAJZmkKIH0KIAotIyByZXNldCBhbmQgbm9sb2dpbiBjYXVzZXMgYSBjb25mbGljdCB3aXRoIG5jdXJzZXMtbmF0aXZlIGFuZCBzaGFkb3ctbmF0aXZlCisjIG5vbG9naW4gY2F1c2VzIGEgY29uZmxpY3Qgd2l0aCBzaGFkb3ctbmF0aXZlCisjIGtpbGwgY2F1c2VzIGEgY29uZmxpY3Qgd2l0aCBjb3JldXRpbHMtbmF0aXZlIChpZiAke2JpbmRpcn09PSR7YmFzZV9iaW5kaXJ9KQogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQlybSAtZiAke0R9JHtiYXNlX2JpbmRpcn0vcmVzZXQKIAlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L25vbG9naW4KKwlybSAtZiAke0R9JHtiYXNlX2JpbmRpcn0va2lsbAogfQogCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICI4MCIKIAogQUxURVJOQVRJVkVfJHtQTn0gID0gImRtZXNnIGtpbGwgbW9yZSBta3N3YXAgYmxvY2tkZXYgcGl2b3Rfcm9vdCBzd2l0Y2hfcm9vdCIKIEFMVEVSTkFUSVZFXyR7UE59ICs9ICJoZXhkdW1wIGxhc3QgbGFzdGIgbG9nZ2VyIG1lc2cgcmVuaWNlIHdhbGwiCi1BTFRFUk5BVElWRV8ke1BOfSArPSAic2V0c2lkIGNocnQgZmxvY2sgdXRtcGR1bXAgZWplY3Qgbm9sb2dpbiIKK0FMVEVSTkFUSVZFXyR7UE59ICs9ICJzZXRzaWQgY2hydCBmbG9jayB1dG1wZHVtcCBlamVjdCBub2xvZ2luIHRhc2tzZXQiCiAKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtkbWVzZ10gPSAiJHtiYXNlX2JpbmRpcn0vZG1lc2ciCiBBTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbF0gPSAiJHtiYXNlX2JpbmRpcn0va2lsbCIKQEAgLTIyMCwxNCArMjE4LDE0IEBACiBBTFRFUk5BVElWRV9MSU5LX05BTUVbZWplY3RdID0gIiR7YmluZGlyfS9lamVjdCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtub2xvZ2luXSA9ICIke2Jhc2Vfc2JpbmRpcn0vbm9sb2dpbiIKIAotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIm1vdW50cG9pbnQuMSBsYXN0LjEgbGFzdGIuMSBtZXNnLjEgd2FsbC4xIG5vbG9naW4uOCBzdWxvZ2luLjggdXRtcGR1bXAuMSByZXNldC4xIGtpbGwuMSBsaWJibGtpZC4zIGJsa2lkLjggZmluZGZzLjggZnNjay44IHV1aWQuMyBlamVjdC4xIGxvZ2dlci4xIgorQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIm1vdW50cG9pbnQuMSBsYXN0LjEgbGFzdGIuMSBtZXNnLjEgd2FsbC4xIG5vbG9naW4uOCBzdWxvZ2luLjggdXRtcGR1bXAuMSByZmtpbGwuOCBraWxsLjEgbGliYmxraWQuMyBibGtpZC44IGZpbmRmcy44IGZzY2suOCB1dWlkLjMgZWplY3QuMSBsb2dnZXIuMSIKIAogQUxURVJOQVRJVkVfTElOS19OQU1FW2xhc3QuMV0gPSAiJHttYW5kaXJ9L21hbjEvbGFzdC4xIgogQUxURVJOQVRJVkVfTElOS19OQU1FW2xhc3RiLjFdID0gIiR7bWFuZGlyfS9tYW4xL2xhc3RiLjEiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbbWVzZy4xXSA9ICIke21hbmRpcn0vbWFuMS9tZXNnLjEiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbbW91bnRwb2ludC4xXSA9ICIke21hbmRpcn0vbWFuMS9tb3VudHBvaW50LjEiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbbm9sb2dpbi44XSA9ICIke21hbmRpcn0vbWFuOC9ub2xvZ2luLjgiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzZXQuMV0gPSAiJHttYW5kaXJ9L21hbjEvcmVzZXQuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZmtpbGwuOF0gPSAiJHttYW5kaXJ9L21hbjgvcmZraWxsLjgiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbc3Vsb2dpbi44XSA9ICIke21hbmRpcn0vbWFuOC9zdWxvZ2luLjgiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbdXRtcGR1bXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXRtcGR1bXAuMSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVt3YWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL3dhbGwuMSIKQEAgLTI3Miw5ICsyNzAsOCBAQAogQUxURVJOQVRJVkVfdXRpbC1saW51eC1ibGtpZCA9ICJibGtpZCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtibGtpZF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2Jsa2lkIgogCi1BTFRFUk5BVElWRV91dGlsLWxpbnV4LXJlc2V0ID0gInJlc2V0IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Jlc2V0XSA9ICIke2JpbmRpcn0vcmVzZXQiCi1BTFRFUk5BVElWRV9UQVJHRVRbcmVzZXRdID0gIiR7YmFzZV9iaW5kaXJ9L3Jlc2V0IgorQUxURVJOQVRJVkVfdXRpbC1saW51eC1yZmtpbGwgPSAicmZraWxsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Jma2lsbF0gPSAiJHtzYmluZGlyfS9yZmtpbGwiCiAKIEFMVEVSTkFUSVZFX3V0aWwtbGludXgtZ2V0b3B0ID0gImdldG9wdCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRvcHRdID0gIiR7YmFzZV9iaW5kaXJ9L2dldG9wdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCmluZGV4IDQ2ZDRkMzcuLjc0OGI2ZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaApAQCAtNSwxNSArNSwxNiBAQAogU2lnbmVkLW9mZi1ieTogVHVkb3IgRmxvcmVhICA8dHVkb3IuZmxvcmVhQGVuZWEuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIAogCi1kaWZmIC1ydU4gYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLS0tLSBhL2NvbmZpZ3VyZS5hYwkyMDE0LTA1LTI3IDEyOjM3OjQyLjExOTc3MjY1OCArMDIwMAotKysrIGIvY29uZmlndXJlLmFjCTIwMTQtMDUtMjcgMTI6NDE6NDYuMjI1NTczMjcyICswMjAwCi1AQCAtMTAsNyArMTAsNyBAQAorSW5kZXg6IHV0aWwtbGludXgtMi4zMi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB1dGlsLWxpbnV4LTIuMzIub3JpZy9jb25maWd1cmUuYWMKKysrKyB1dGlsLWxpbnV4LTIuMzIvY29uZmlndXJlLmFjCitAQCAtMTEsNyArMTEsNyBAQCBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCiAgZG5sIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG1hY3JvcyB0aGF0IHJ1bgogIGRubCB0aGUgY29tcGlsZXIgKGxpa2UgQUNfUFJPR19MSUJUT09MKSB0byBhdm9pZCBhdXRvY29uZiBlcnJvcnMuCiAgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCi0tQU1fSU5JVF9BVVRPTUFLRShbLVdhbGwgZm9yZWlnbiAxLjEwIHRhci1wYXggZGlzdC1iemlwMiBuby1kaXN0LWd6aXAgZGlzdC14eiAtV25vLXBvcnRhYmlsaXR5IHN1YmRpci1vYmplY3RzXSkKLStBTV9JTklUX0FVVE9NQUtFKFstV2FsbCBmb3JlaWduIDEuMTAgdGFyLXBheCBkaXN0LWJ6aXAyIG5vLWRpc3QtZ3ppcCBkaXN0LXh6IC1Xbm8tcG9ydGFiaWxpdHkgc3ViZGlyLW9iamVjdHMgc2VyaWFsLXRlc3RzXSkKLQorLUFNX0lOSVRfQVVUT01BS0UoWy1XYWxsIGZvcmVpZ24gMS4xMCB0YXItcGF4IG5vLWRpc3QtZ3ppcCBkaXN0LXh6IHN1YmRpci1vYmplY3RzXSkKKytBTV9JTklUX0FVVE9NQUtFKFstV2FsbCBmb3JlaWduIDEuMTAgdGFyLXBheCBuby1kaXN0LWd6aXAgZGlzdC14eiBzdWJkaXItb2JqZWN0cyBzZXJpYWwtdGVzdHNdKQorIAogIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0sCiAgCQkJICAgIFtBQ19TVUJTVChbQU1fREVGQVVMVF9WRVJCT1NJVFldLCBbMV0pXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvY29uZmlndXJlLXNiaW5kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L2NvbmZpZ3VyZS1zYmluZGlyLnBhdGNoCmluZGV4IGE1YjFmZjEuLmU0NzUyODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvY29uZmlndXJlLXNiaW5kaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9jb25maWd1cmUtc2JpbmRpci5wYXRjaApAQCAtNSwxMSArNSwxMSBAQAogU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKLUluZGV4OiB1dGlsLWxpbnV4LTIuMjIuMS9jb25maWd1cmUuYWMKK0luZGV4OiB1dGlsLWxpbnV4LTIuMzEvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdXRpbC1saW51eC0yLjIyLjEub3JpZy9jb25maWd1cmUuYWMKLSsrKyB1dGlsLWxpbnV4LTIuMjIuMS9jb25maWd1cmUuYWMKLUBAIC03Myw3ICs3MywxMCBAQCBBQ19TVUJTVChbbG9jYWxzdGF0ZWRpcl0pCistLS0gdXRpbC1saW51eC0yLjMxLm9yaWcvY29uZmlndXJlLmFjCisrKysgdXRpbC1saW51eC0yLjMxL2NvbmZpZ3VyZS5hYworQEAgLTg5LDcgKzg5LDEwIEBAIEFDX1NVQlNUKFtydW5zdGF0ZWRpcl0pCiAgdXNyYmluX2V4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2JpbicKICBBQ19TVUJTVChbdXNyYmluX2V4ZWNkaXJdKQogIApAQCAtMjAsNCArMjAsNCBAQAogK2ZpCiAgQUNfU1VCU1QoW3VzcnNiaW5fZXhlY2Rpcl0pCiAgCi0gY2FzZSAkbGliZGlyIGluCisgQVNfQ0FTRShbJGxpYmRpcl0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L25vX2dldHJhbmRvbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvbm9fZ2V0cmFuZG9tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWZhMWNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvbm9fZ2V0cmFuZG9tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotZ2V0cmFuZG9tKCkgaXMgb25seSBhdmFpbGFibGUgaW4gZ2xpYmMgMi4yNSsgYW5kIHVuaW5hdGl2ZSBtYXkgcmVsb2NhdGUgCi1iaW5hcmllcyBvbnRvIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHRoaXMgZnVuY3Rpb24uIEZvciBub3csIGZvcmNlIHRoZSAKLWNvZGUgdG8gdGhlIG9sZGVyIGNvZGVwYXRoIHVudGlsIHdlIGNhbiBjb21lIHVwIHdpdGggYSBiZXR0ZXIgc29sdXRpb24gCi1mb3IgdGhpcyBraW5kIG9mIGlzc3VlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVJQCi0yMDE2LzgvMTUKLQotSW5kZXg6IHV0aWwtbGludXgtMi4zMC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB1dGlsLWxpbnV4LTIuMzAub3JpZy9jb25maWd1cmUuYWMKLSsrKyB1dGlsLWxpbnV4LTIuMzAvY29uZmlndXJlLmFjCi1AQCAtMzk5LDcgKzM5OSw2IEBAIEFDX0NIRUNLX0ZVTkNTKFsgXAotIAlnZXRkdGFibGVzaXplIFwKLSAJZ2V0ZXhlY25hbWUgXAotIAlnZXRtbnRpbmZvIFwKLS0JZ2V0cmFuZG9tIFwKLSAJZ2V0cmxpbWl0IFwKLSAJZ2V0c2duYW0gXAotIAlpbm90aWZ5X2luaXQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTQ0OWQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLU1BSk9SX1ZFUlNJT04gPSAiMi4zMCIKLXJlcXVpcmUgdXRpbC1saW51eC5pbmMKLQotIyBUbyBzdXBwb3J0IG9sZGVyIGhvc3RzLCB3ZSBuZWVkIHRvIHBhdGNoIGFuZC9vciByZXZlcnQKLSMgc29tZSB1cHN0cmVhbSBjaGFuZ2VzLiAgT25seSBkbyB0aGlzIGZvciBuYXRpdmUgcGFja2FnZXMuCi1PTERIT1NUID0gIiIKLU9MREhPU1RfY2xhc3MtbmF0aXZlID0gImZpbGU6Ly91dGlsLWxpbnV4LW5hdGl2ZS1xc29ydC5wYXRjaCIKLQotU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS1zYmluZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLnBhbWQgXAotICAgICAgICAgICAgZmlsZTovL3J1bnVzZXItbC5wYW1kIFwKLSAgICAgICAgICAgICR7T0xESE9TVH0gXAotICAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgZmlsZTovL2Rpc3BsYXlfdGVzdG5hbWVfZm9yX3N1YnRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL25vX2dldHJhbmRvbS5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlYWEzNDI5MTUwMjY4MDI3OTA4YTFiOGFlNmVlOWE2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMjA4YTRmZjY5MDZjYjdmNTc5NDBhYTViYzNhNmVlZDE0NmU1MGE3Y2MwYTA5MmY1MmVmMmFiNjUwNTdhMDhkIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAic2NhbmZfY3ZfYWxsb2NfbW9kaWZpZXI9bXMiCi0KLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiJHtTSEFSRURfRVhUUkFfT0VDT05GfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mYWxsb2NhdGUgXAotCQkJICAgICAtLWRpc2FibGUtdXNlLXR0eS1ncm91cCBcCi0iCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIiR7U0hBUkVEX0VYVFJBX09FQ09ORn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZmFsbG9jYXRlIFwKLQkJCQktLWRpc2FibGUtdXNlLXR0eS1ncm91cCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVjYzk4YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zMi5iYgpAQCAtMCwwICsxLDMwIEBACitNQUpPUl9WRVJTSU9OID0gIjIuMzIiCityZXF1aXJlIHV0aWwtbGludXguaW5jCisKKyMgVG8gc3VwcG9ydCBvbGRlciBob3N0cywgd2UgbmVlZCB0byBwYXRjaCBhbmQvb3IgcmV2ZXJ0CisjIHNvbWUgdXBzdHJlYW0gY2hhbmdlcy4gIE9ubHkgZG8gdGhpcyBmb3IgbmF0aXZlIHBhY2thZ2VzLgorT0xESE9TVCA9ICIiCitPTERIT1NUX2NsYXNzLW5hdGl2ZSA9ICJmaWxlOi8vdXRpbC1saW51eC1uYXRpdmUtcXNvcnQucGF0Y2giCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUtc2JpbmRpci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVudXNlci5wYW1kIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLWwucGFtZCBcCisgICAgICAgICAgICAke09MREhPU1R9IFwKKyAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly9kaXNwbGF5X3Rlc3RuYW1lX2Zvcl9zdWJ0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZTBkOGEyNTg1M2Y4OGNkMTVmZjU1N2U1ZDhjYjRlYTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmM3Mzk3YWJjNzY0ZTMyZTgxNTljMmU5NjA0Mjg3NGExOTAzMDNlNzdhZGNlYjRhYzViZDUwMmEyNzJhNDczNCIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gInNjYW5mX2N2X2FsbG9jX21vZGlmaWVyPW1zIgorCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIiR7U0hBUkVEX0VYVFJBX09FQ09ORn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZmFsbG9jYXRlIFwKKwkJCSAgICAgLS1kaXNhYmxlLXVzZS10dHktZ3JvdXAgXAorIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICIke1NIQVJFRF9FWFRSQV9PRUNPTkZ9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZhbGxvY2F0ZSBcCisJCQkJLS1kaXNhYmxlLXVzZS10dHktZ3JvdXAgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3ZvbGF0aWxlLWJpbmRzL3ZvbGF0aWxlLWJpbmRzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3ZvbGF0aWxlLWJpbmRzL3ZvbGF0aWxlLWJpbmRzLmJiCmluZGV4IGE2ZTMyNTQuLmQ4NjFhNzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS92b2xhdGlsZS1iaW5kcy92b2xhdGlsZS1iaW5kcy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdm9sYXRpbGUtYmluZHMvdm9sYXRpbGUtYmluZHMuYmIKQEAgLTY3LDcgKzY3LDcgQEAKICAgICBpbnN0YWxsIC1tIDA3NTUgbW91bnQtY29weWJpbmQgJHtEfSR7YmFzZV9zYmluZGlyfS8KIAogICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBmb3Igc2VydmljZSBpbiAke1NZU1RFTURfU0VSVklDRV92b2xhdGlsZS1iaW5kc307IGRvCisgICAgZm9yIHNlcnZpY2UgaW4gJHtTWVNURU1EX1NFUlZJQ0VfJHtQTn19OyBkbwogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCiAgICAgZG9uZQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvemxpYi96bGliLTEuMi4xMS9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWItMS4yLjExL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoCmluZGV4IDQwM2I0ODIuLjdjY2JlMWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWItMS4yLjExL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWItMS4yLjExL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoCkBAIC03LDE0ICs3LDE1IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzYWJsZSBmZWF0dXJlXQogCi1kaWZmIC11TnIgemxpYi0xLjIuNi5vcmlnL01ha2VmaWxlLmluIHpsaWItMS4yLjYvTWFrZWZpbGUuaW4KLS0tLSB6bGliLTEuMi42Lm9yaWcvTWFrZWZpbGUuaW4JMjAxMi0wMS0yOCAyMzo0ODo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyB6bGliLTEuMi42L01ha2VmaWxlLmluCTIwMTItMDItMTMgMTU6Mzg6MjAuNTc3NzAwNzIzICswMTAwCi1AQCAtMTk5LDcgKzE5OSw2IEBACitJbmRleDogemxpYi0xLjIuMTEvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB6bGliLTEuMi4xMS5vcmlnL01ha2VmaWxlLmluCisrKysgemxpYi0xLjIuMTEvTWFrZWZpbGUuaW4KK0BAIC0zMjIsNyArMzIyLDYgQEAgaW5zdGFsbC1saWJzOiAkKExJQlMpCiAgCSAgcm0gLWYgJChERVNURElSKSQoc2hhcmVkbGliZGlyKS8kKFNIQVJFRExJQikgJChERVNURElSKSQoc2hhcmVkbGliZGlyKS8kKFNIQVJFRExJQk0pOyBcCiAgCSAgbG4gLXMgJChTSEFSRURMSUJWKSAkKERFU1RESVIpJChzaGFyZWRsaWJkaXIpLyQoU0hBUkVETElCKTsgXAogIAkgIGxuIC1zICQoU0hBUkVETElCVikgJChERVNURElSKSQoc2hhcmVkbGliZGlyKS8kKFNIQVJFRExJQk0pOyBcCiAtCSAgKCQoTERDT05GSUcpIHx8IHRydWUpICA+L2Rldi9udWxsIDI+JjE7IFwKICAJZmkKLSAJY3AgemxpYi4zICQoREVTVERJUikkKG1hbjNkaXIpCi0gCWNobW9kIDY0NCAkKERFU1RESVIpJChtYW4zZGlyKS96bGliLjMKKyAJcm0gLWYgJChERVNURElSKSQobWFuM2RpcikvemxpYi4zCisgCWNwICQoU1JDRElSKXpsaWIuMyAkKERFU1RESVIpJChtYW4zZGlyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQtbmF0aXZlLmluYwppbmRleCA2OGYxYjNjLi5lZjIzMmMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQtbmF0aXZlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQtbmF0aXZlLmluYwpAQCAtNjcsNCArNjcsMTAgQEAKIAlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2FwdC9hcmNoaXZlcy9wYXJ0aWFsCiAKIAlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9hcHQvCisKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2FwdC1wa2cKKwlmb3IgaCBpbiBgZmluZCAke1N9L2FwdC1wa2cgJHtTfS9hcHQtaW5zdCAtbmFtZSAnKi5oJ2AKKwlkbworCQlpbnN0YWxsIC1tIDA2NDQgJGggJHtEfSR7aW5jbHVkZWRpcn0vYXB0LXBrZworCWRvbmUKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9kaXNhYmxlLXRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZGlzYWJsZS10ZXN0LnBhdGNoCmluZGV4IDA1MzI2NzEuLmQxNmI1YzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9kaXNhYmxlLXRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2Rpc2FibGUtdGVzdC5wYXRjaApAQCAtMTcsMTAgKzE3LDEwIEBACiAgY29uZmlndXJlLmFjIHwgNyAtLS0tLS0tCiAgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNzY4MGYwOC4uNjk1MjdhNSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQorSW5kZXg6IGFwdC0xLjIuMjQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhcHQtMS4yLjI0Lm9yaWcvTWFrZWZpbGUKKysrKyBhcHQtMS4yLjI0L01ha2VmaWxlCiBAQCAtOSw4ICs5LDggQEAgZW5kaWYKICAuUEhPTlk6IGRlZmF1bHQKICBkZWZhdWx0OiBzdGFydHVwIGFsbApAQCAtMzIsOSArMzIsOSBAQAogIAkkKE1BS0UpIC1DIHZlbmRvciAkQAogIAkkKE1BS0UpIC1DIGFwdC1wa2cgJEAKICAJJChNQUtFKSAtQyBhcHQtaW5zdCAkQAotQEAgLTIxLDggKzIxLDYgQEAgYWxsIGhlYWRlcnMgbGlicmFyeSBjbGVhbiB2ZXJ5Y2xlYW4gYmluYXJ5IHByb2dyYW0gZG9jIG1hbnBhZ2VzIGRvY2Jvb2sgdGVzdCB1cGQKK0BAIC0yMSw4ICsyMSw2IEBAIGFsbCBoZWFkZXJzIGxpYnJhcnkgY2xlYW4gdmVyeWNsZWFuIGJpbmEKICAJJChNQUtFKSAtQyBkc2VsZWN0ICRACi0gCSQoTUFLRSkgLUMgZG9jICRACisgIwkkKE1BS0UpIC1DIGRvYyAkQAogIAkkKE1BS0UpIC1DIHBvICRACiAtCSMgRklYTUU6IC1DIHRlc3QgaGFzIGlzc3VlIHN3aXRoIHBhcmFsbGVsIGJ1aWxkcywgaW52ZXN0aWdhdGUhCiAtCS0kKE1BS0UpIC1DIHRlc3QgJEAKQEAgLTUyLDEwICs1MiwxMCBAQAogIAogIGRpcnM6IHN0YXJ0dXAKICAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFmMDVkYTUuLmU0N2Y0NTkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYworSW5kZXg6IGFwdC0xLjIuMjQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYXB0LTEuMi4yNC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGFwdC0xLjIuMjQvY29uZmlndXJlLmFjCiBAQCAtOTAsMTMgKzkwLDYgQEAgQUNfQ0hFQ0tfTElCKGN1cmwsIGN1cmxfZWFzeV9pbml0LAogICAgICAgQUNfTVNHX0VSUk9SKFtmYWlsZWQ6IEkgbmVlZCBDVVJMIGR1ZSBodHRwcyBzdXBwb3J0XSksCiAgKQpAQCAtNzAsNiArNzAsMyBAQAogIEFDX1NVQlNUKEJEQkxJQikKICAKICBIQVZFX1pMSUI9bm8KLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2ZpeC1nY2MtNC42LW51bGwtbm90LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZml4LWdjYy00LjYtbnVsbC1ub3QtZGVmaW5lZC5wYXRjaAppbmRleCA4MDFhZTZkLi44OTljNmVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZml4LWdjYy00LjYtbnVsbC1ub3QtZGVmaW5lZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZml4LWdjYy00LjYtbnVsbC1ub3QtZGVmaW5lZC5wYXRjaApAQCAtMSwxMiArMSwxNCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLS0tLSBhL2FwdC1wa2cvY29udHJpYi93ZWFrcHRyLmgKLSsrKyBiL2FwdC1wa2cvY29udHJpYi93ZWFrcHRyLmgKK0luZGV4OiBhcHQtMS4yLjI0L2FwdC1wa2cvY29udHJpYi93ZWFrcHRyLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhcHQtMS4yLjI0Lm9yaWcvYXB0LXBrZy9jb250cmliL3dlYWtwdHIuaAorKysrIGFwdC0xLjIuMjQvYXB0LXBrZy9jb250cmliL3dlYWtwdHIuaAogQEAgLTIxLDYgKzIxLDcgQEAKICAjaWZuZGVmIFdFQUtfUE9JTlRFUl9ICiAgI2RlZmluZSBXRUFLX1BPSU5URVJfSAogIAogKyNpbmNsdWRlIDxjc3RkbGliPgogICNpbmNsdWRlIDxzZXQ+Ci0gLyoqCi0gICogQ2xhc3MgZm9yIG9iamVjdHMgcHJvdmlkaW5nIHN1cHBvcnQgZm9yIHdlYWsgcG9pbnRlcnMuCisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L21ha2VyYWNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L21ha2VyYWNlLnBhdGNoCmluZGV4IDQ2ZTMxNjEuLjBjNjg2ZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9tYWtlcmFjZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvbWFrZXJhY2UucGF0Y2gKQEAgLTgsMTYgKzgsMTYgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLUluZGV4OiBhcHQtMC45LjkuNC9idWlsZGxpYi9saWJyYXJ5Lm1haworSW5kZXg6IGFwdC0xLjIuMjQvYnVpbGRsaWIvbGlicmFyeS5tYWsKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhcHQtMC45LjkuNC5vcmlnL2J1aWxkbGliL2xpYnJhcnkubWFrCTIwMTMtMDctMzEgMTU6NDU6MDcuMzIwNDQwNTc1ICswMzAwCi0rKysgYXB0LTAuOS45LjQvYnVpbGRsaWIvbGlicmFyeS5tYWsJMjAxMy0wNy0zMSAxNTo0Njo0OS40NDA0NDA1NjEgKzAzMDAKLUBAIC02MSw3ICs2MSw3IEBACistLS0gYXB0LTEuMi4yNC5vcmlnL2J1aWxkbGliL2xpYnJhcnkubWFrCisrKysgYXB0LTEuMi4yNC9idWlsZGxpYi9saWJyYXJ5Lm1haworQEAgLTY1LDcgKzY1LDcgQEAgJChMSUIpL2xpYiQoTElCUkFSWSkuc28uJChNQUpPUikuJChNSU5PUgogIAogICMgQ29tcGlsYXRpb24gcnVsZXMKICB2cGF0aCAlLmNjICQoU1VCRElSUykKIC0kKE9CSikvJS5vcGljOiAlLmNjICQoTElCUkFSWURFUEVORFMpCiArJChPQkopLyUub3BpYzogJS5jYyAkKExJQlJBUllERVBFTkRTKSAkKCQoTE9DQUwpLUhFQURFUlMpCiAgCWVjaG8gQ29tcGlsaW5nICQ8IHRvICRACi0gCSQoQ1hYKSAtYyAkKElOTElORURFUEZMQUcpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpICQoUElDRkxBR1MpIC1vICRAICQ8CisgCSQoQ1hYKSAtYyAkKElOTElORURFUEZMQUcpICQoQ1BQRkxBR1MpICQoQ1hYU1REKSAkKENYWEZMQUdTKSAkKFBJQ0ZMQUdTKSAtbyAkQCAnJChhYnNwYXRoICQ8KScKICAJJChEb0RlcCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9uby1ubHMtZHBrZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9uby1ubHMtZHBrZy5wYXRjaAppbmRleCBhMDk5NmQ0Li45OGI2Yzk2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvbm8tbmxzLWRwa2cucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L25vLW5scy1kcGtnLnBhdGNoCkBAIC0xLDggKzEsMTAgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi0tLS0gYS9hcHQtcGtnL2RlYi9kcGtncG0uY2MKLSsrKyBiL2FwdC1wa2cvZGViL2Rwa2dwbS5jYwotQEAgLTQyLDYgKzQyLDEyIEBACitJbmRleDogYXB0LTEuMi4yNC9hcHQtcGtnL2RlYi9kcGtncG0uY2MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhcHQtMS4yLjI0Lm9yaWcvYXB0LXBrZy9kZWIvZHBrZ3BtLmNjCisrKysgYXB0LTEuMi4yNC9hcHQtcGtnL2RlYi9kcGtncG0uY2MKK0BAIC01NCw2ICs1NCwxMiBAQAogICNpbmNsdWRlIDxhcHRpMThuLmg+CiAgCQkJCQkJCQkJLyp9fX0qLwogIApAQCAtMTQsOCArMTYsOCBAQAogKwogIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgCi0gbmFtZXNwYWNlCi1AQCAtMTI3OSw3ICsxMjg1LDcgQEAgdm9pZCBwa2dEUGtnUE06OldyaXRlQXBwb3J0UmVwb3J0KGNvbnN0CisgQVBUX1BVUkUgc3RhdGljIHN0cmluZworQEAgLTE3MDMsNyArMTcwOSw3IEBAIHZvaWQgcGtnRFBrZ1BNOjpXcml0ZUFwcG9ydFJlcG9ydChjb25zdAogICAgIH0KICAKICAgICAvLyBjaGVjayBpZiBpdHMgbm90IGEgZm9sbG93IHVwIGVycm9yIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L25vZG9jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L25vZG9jLnBhdGNoCmluZGV4IDQ0OWU0MmQuLjc4Y2Y1MzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9ub2RvYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvbm9kb2MucGF0Y2gKQEAgLTMsMTYgKzMsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIFNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KIAotSW5kZXg6IGFwdC0wLjkuNy43L01ha2VmaWxlCitJbmRleDogYXB0LTEuMi4yNC9NYWtlZmlsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFwdC0wLjkuNy43Lm9yaWcvTWFrZWZpbGUKLSsrKyBhcHQtMC45LjcuNy9NYWtlZmlsZQotQEAgLTE3LDcgKzE3LDcgQEAgYWxsIGhlYWRlcnMgbGlicmFyeSBjbGVhbiB2ZXJ5Y2xlYW4gYmluYQorLS0tIGFwdC0xLjIuMjQub3JpZy9NYWtlZmlsZQorKysrIGFwdC0xLjIuMjQvTWFrZWZpbGUKK0BAIC0xOSw3ICsxOSw3IEBAIGFsbCBoZWFkZXJzIGxpYnJhcnkgY2xlYW4gdmVyeWNsZWFuIGJpbmEKICAJJChNQUtFKSAtQyBjbWRsaW5lICRACiAgCSQoTUFLRSkgLUMgZnRwYXJjaGl2ZSAkQAogIAkkKE1BS0UpIC1DIGRzZWxlY3QgJEAKIC0JJChNQUtFKSAtQyBkb2MgJEAKICsjCSQoTUFLRSkgLUMgZG9jICRACiAgCSQoTUFLRSkgLUMgcG8gJEAKLSAJJChNQUtFKSAtQyB0ZXN0ICRACi0gCisgCSMgRklYTUU6IC1DIHRlc3QgaGFzIGlzc3VlIHN3aXRoIHBhcmFsbGVsIGJ1aWxkcywgaW52ZXN0aWdhdGUhCisgCS0kKE1BS0UpIC1DIHRlc3QgJEAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZV8yMDE2LjA5LjE2LmJiCmluZGV4IDEwNGRjMzguLjg5ZDU3YWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxNi4wOS4xNi5iYgpAQCAtOSw2ICs5LDEwIEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYmYxOWQ0Y2RkY2UyNjBiM2MzZTFkNTFkNDI1MDkwNzEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZThmMmVmZDIzNWY4NDJiYWQyZjY5MzhiZjRhNzIyNDBhNWU1ZmNkMjQ4ZTg0NDQzMzVlNjNiZWI2MGZhYmQ4MiIKIAotaW5oZXJpdCBhdXRvdG9vbHMKK2luaGVyaXQgYXV0b3Rvb2xzIGFsbGFyY2gKKworUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZG9jIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hY2xvY2FsIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCmluZGV4IGVhNjJkZjguLmRmODFiYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCkBAIC00MSw2ICs0MSwxMCBAQAogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nJHtQRVJMfSciCiAKIGRvX2NvbmZpZ3VyZSgpIHsKKwkjIG1hbnVhbGx5IGluc3RhbGwgYSBuZXdlciBjb25maWcuZ3Vlc3MvLnN1YgorCWluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30vYnVpbGQtYXV4CisJaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuc3ViICR7U30vYnVpbGQtYXV4CisKIAlvZV9ydW5jb25mCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvYXV0b21ha2UtcmVwbGFjZS13LW9wdGlvbi1pbi1zaGViYW5ncy13aXRoLW1vZGVybi11c2Utd2FybmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2F1dG9tYWtlLXJlcGxhY2Utdy1vcHRpb24taW4tc2hlYmFuZ3Mtd2l0aC1tb2Rlcm4tdXNlLXdhcm5pbmdzLnBhdGNoCmluZGV4IDY0ZWIyNTMuLjk2YjVhM2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvYXV0b21ha2UtcmVwbGFjZS13LW9wdGlvbi1pbi1zaGViYW5ncy13aXRoLW1vZGVybi11c2Utd2FybmluZ3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9hdXRvbWFrZS1yZXBsYWNlLXctb3B0aW9uLWluLXNoZWJhbmdzLXdpdGgtbW9kZXJuLXVzZS13YXJuaW5ncy5wYXRjaApAQCAtMjIsMTAgKzIyLDEwIEBACiAgdC93cmFwL2F1dG9tYWtlLmluIHwgMyArKy0KICA0IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2Jpbi9hY2xvY2FsLmluIGIvYmluL2FjbG9jYWwuaW4KLWluZGV4IDM0OWYyNGEuLjUwY2I4ZDMgMTAwNjQ0Ci0tLS0gYS9iaW4vYWNsb2NhbC5pbgotKysrIGIvYmluL2FjbG9jYWwuaW4KK0luZGV4OiBhdXRvbWFrZS0xLjE1LjEvYmluL2FjbG9jYWwuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdXRvbWFrZS0xLjE1LjEub3JpZy9iaW4vYWNsb2NhbC5pbgorKysrIGF1dG9tYWtlLTEuMTUuMS9iaW4vYWNsb2NhbC5pbgogQEAgLTEsNCArMSw0IEBACiAtIyFAUEVSTEAgLXcKICsjIUBQRVJMQApAQCAtNDAsMTcgKzQwLDE3IEBACiAgCiAgdXNlIEF1dG9tYWtlOjpDb25maWc7CiAgdXNlIEF1dG9tYWtlOjpHZW5lcmFsOwotZGlmZiAtLWdpdCBhL2Jpbi9hdXRvbWFrZS5pbiBiL2Jpbi9hdXRvbWFrZS5pbgotaW5kZXggZWVkYzhiYy4uZTBhMDFjZiAxMDA2NDQKLS0tLSBhL2Jpbi9hdXRvbWFrZS5pbgotKysrIGIvYmluL2F1dG9tYWtlLmluCitJbmRleDogYXV0b21ha2UtMS4xNS4xL2Jpbi9hdXRvbWFrZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF1dG9tYWtlLTEuMTUuMS5vcmlnL2Jpbi9hdXRvbWFrZS5pbgorKysrIGF1dG9tYWtlLTEuMTUuMS9iaW4vYXV0b21ha2UuaW4KIEBAIC0xLDQgKzEsNCBAQAogLSMhQFBFUkxAIC13CiArIyFAUEVSTEAKICAjIC0qLSBwZXJsIC0qLQogICMgQGNvbmZpZ3VyZV9pbnB1dEAKICAKLUBAIC0yOCw2ICsyOCw3IEBAIGV2YWwgJ2Nhc2UgJCMgaW4gMCkgZXhlYyBAUEVSTEAgLVMgIiQwIjs7ICopIGV4ZWMgQFBFUkxAIC1TICIkMCIgIiRAIjs7IGVzYWMnCitAQCAtMjgsNiArMjgsNyBAQCBldmFsICdjYXNlICQjIGluIDApIGV4ZWMgQFBFUkxAIC1TICIkMCI7CiAgcGFja2FnZSBBdXRvbWFrZTsKICAKICB1c2Ugc3RyaWN0OwpAQCAtNTgsMTYgKzU4LDE2IEBACiAgCiAgQkVHSU4KICB7Ci1kaWZmIC0tZ2l0IGEvdC93cmFwL2FjbG9jYWwuaW4gYi90L3dyYXAvYWNsb2NhbC5pbgotaW5kZXggZTY0YjU0Ni4uOTk5Njg5OSAxMDA2NDQKLS0tLSBhL3Qvd3JhcC9hY2xvY2FsLmluCi0rKysgYi90L3dyYXAvYWNsb2NhbC5pbgorSW5kZXg6IGF1dG9tYWtlLTEuMTUuMS90L3dyYXAvYWNsb2NhbC5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF1dG9tYWtlLTEuMTUuMS5vcmlnL3Qvd3JhcC9hY2xvY2FsLmluCisrKysgYXV0b21ha2UtMS4xNS4xL3Qvd3JhcC9hY2xvY2FsLmluCiBAQCAtMSw0ICsxLDQgQEAKIC0jIUBQRVJMQCAtdwogKyMhQFBFUkxACiAgIyBAY29uZmlndXJlX2lucHV0QAogIAotICMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIEBAIC0xOSw2ICsxOSw3IEBACiAgQkVHSU4KICB7CkBAIC03NiwxNiArNzYsMTYgQEAKICAgIEBBY2xvY2FsOjpwZXJsX2xpYmRpcnMgPSAoJ0BhYnNfdG9wX3NyY2RpckAvbGliJyk7CiAgICB1bnNoaWZ0IEBBY2xvY2FsOjpwZXJsX2xpYmRpcnMsICdAYWJzX3RvcF9idWlsZGRpckAvbGliJwogICAgICBpZiAnQHNyY2RpckAnIG5lICcuJzsKLWRpZmYgLS1naXQgYS90L3dyYXAvYXV0b21ha2UuaW4gYi90L3dyYXAvYXV0b21ha2UuaW4KLWluZGV4IDhiOTQzYjEuLmJlNjEyMjYgMTAwNjQ0Ci0tLS0gYS90L3dyYXAvYXV0b21ha2UuaW4KLSsrKyBiL3Qvd3JhcC9hdXRvbWFrZS5pbgorSW5kZXg6IGF1dG9tYWtlLTEuMTUuMS90L3dyYXAvYXV0b21ha2UuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdXRvbWFrZS0xLjE1LjEub3JpZy90L3dyYXAvYXV0b21ha2UuaW4KKysrKyBhdXRvbWFrZS0xLjE1LjEvdC93cmFwL2F1dG9tYWtlLmluCiBAQCAtMSw0ICsxLDQgQEAKIC0jIUBQRVJMQCAtdwogKyMhQFBFUkxACiAgIyBAY29uZmlndXJlX2lucHV0QAogIAotICMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIEBAIC0xOSw2ICsxOSw3IEBACiAgQkVHSU4KICB7CkBAIC05NCw2ICs5NCwzIEBACiAgICBAQXV0b21ha2U6OnBlcmxfbGliZGlycyA9ICgnQGFic190b3Bfc3JjZGlyQC9saWInKTsKICAgIHVuc2hpZnQgQEF1dG9tYWtlOjpwZXJsX2xpYmRpcnMsICdAYWJzX3RvcF9idWlsZGRpckAvbGliJwogICAgICBpZiAnQHNyY2RpckAnIG5lICcuJzsKLS0tIAotMi4zLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9idWlsZHRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2J1aWxkdGVzdC5wYXRjaAppbmRleCAxZGQ1MzM3Li5jMzJjZDFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2J1aWxkdGVzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2J1aWxkdGVzdC5wYXRjaApAQCAtNCwyMSArNCwyMyBAQAogU2lnbmVkLW9mZi1ieTogQmrDtnJuIFN0ZW5iZXJnIDxianN0QGVuZWEuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLS0tLSBhL2xpYi9hbS9jaGVjay5hbQkyMDEyLTExLTE0IDEzOjQ2OjE2LjMzNTQ3NTk5NSArMDEwMAotKysrIGIvbGliL2FtL2NoZWNrLmFtCTIwMTItMDgtMTMgMTg6NDA6MTIuMDAwMDAwMDAwICswMjAwCi1AQCAtNDQsNyArNDQsNyBAQAotIGFtX190dHlfY29sb3JzID0gJChhbV9fdHR5X2NvbG9yc19kdW1teSkKLSBlbmRpZiAhJT9DT0xPUiUKLQorSW5kZXg6IGF1dG9tYWtlLTEuMTUuMS9saWIvYW0vY2hlY2suYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdXRvbWFrZS0xLjE1LjEub3JpZy9saWIvYW0vY2hlY2suYW0KKysrKyBhdXRvbWFrZS0xLjE1LjEvbGliL2FtL2NoZWNrLmFtCitAQCAtNDEsNyArNDEsNyBAQCBhbV9fdHR5X2NvbG9ycyA9IHsgXAorICAgZmk7IFwKKyB9CisgCiAtLlBIT05ZOiBjaGVjay1URVNUUwogKy5QSE9OWTogY2hlY2stVEVTVFMgYnVpbGR0ZXN0LVRFU1RTIHJ1bnRlc3QtVEVTVFMKLQotIGlmICU/UEFSQUxMRUxfVEVTVFMlCi0KLUBAIC00NjUsNyArNDY1LDE0IEBACi0KLSBlbHNlICElP1BBUkFMTEVMX1RFU1RTJQotCisgCisgaWYgISU/U0VSSUFMX1RFU1RTJQorIAorQEAgLTQ2Niw3ICs0NjYsMTQgQEAgZWxzZSAlP1NFUklBTF9URVNUUyUKKyAKKyAjIyBPYnNvbGVzY2VudCBzZXJpYWwgdGVzdHN1aXRlIGRyaXZlci4KKyAKIC1jaGVjay1URVNUUzogJChURVNUUykKICtBTV9SRUNVUlNJVkVfVEFSR0VUUyArPSBidWlsZHRlc3QgcnVudGVzdAogKwpAQCAtMjgsNiArMzAsNiBAQAogKwkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBydW50ZXN0LVRFU1RTCiArCiArcnVudGVzdC1URVNUUzoKLQlAZmFpbGVkPTA7IGFsbD0wOyB4ZmFpbD0wOyB4cGFzcz0wOyBza2lwPTA7IFwKLQlzcmNkaXI9JChzcmNkaXIpOyBleHBvcnQgc3JjZGlyOyBcCisgCUBmYWlsZWQ9MDsgYWxsPTA7IHhmYWlsPTA7IHhwYXNzPTA7IHNraXA9MDsgXAorIAlzcmNkaXI9JChzcmNkaXIpOyBleHBvcnQgc3JjZGlyOyBcCiAgIyMgTWFrZSBzdXJlIFNvbGFyaXMgVlBBVEgtZXhwYW5kcyBhbGwgbWVtYmVycyBvZiB0aGlzIGxpc3QsIGV2ZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4yOS4xLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4yOS4xLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdhNzJlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMjkuMS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1MSUNfRklMRVNfQ0hLU1VNPSJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzRcCi0gICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNlwKLSAgICBmaWxlOi8vZ2FzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAotICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICBmaWxlOi8vbGliaWJlcnR5L0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljN1wKLSAgICBmaWxlOi8vYmZkL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgICIKLQotZGVmIGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpOgotICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCi0gICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCi0KLUJJTlVQViA9ICIke0BiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKX0iCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImJpbnV0aWxzLSg/UDxwdmVyPlxkK18oXGRfPykqKSIKLQotU1JDUkVWID89ICI5MDI3NmYxNTM3OWQzODA3NjFmYzQ5OWRhMmJhMjRjZmIzYzEyYTk0IgotQklOVVRJTFNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2JpbnV0aWxzLWdkYi5naXQ7YnJhbmNoPWJpbnV0aWxzLSR7QklOVVBWfS1icmFuY2g7cHJvdG9jb2w9Z2l0IgotU1JDX1VSSSA9ICJcCi0gICAgICR7QklOVVRJTFNfR0lUX1VSSX0gXAotICAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBcCi0iCi1TICA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICAgICBybSAtcmYgJHtTfS9nZGIgJHtTfS9saWJkZWNudW1iZXIgJHtTfS9yZWFkbGluZSAke1N9L3NpbQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zMC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM4ODNhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zMC5pbmMKQEAgLTAsMCArMSw0MyBAQAorTElDX0ZJTEVTX0NIS1NVTT0iXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0XAorICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjZcCisgICAgZmlsZTovL2dhcy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKKyAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgZmlsZTovL2xpYmliZXJ0eS9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzdcCisgICAgZmlsZTovL2JmZC9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICAiCisKK2RlZiBiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKToKKyAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKQorICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQorCitCSU5VUFYgPSAiJHtAYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCl9IgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJiaW51dGlscy0oP1A8cHZlcj5cZCtfKFxkXz8pKikiCisKK1NSQ1JFViA/PSAiY2FhODM5ZmJhNjY2MDBhNmMzNmQzNjM5OTA2ZWQ5MTEwYjc5YzMwNyIKK0JJTlVUSUxTX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9iaW51dGlscy1nZGIuZ2l0O2JyYW5jaD1iaW51dGlscy0ke0JJTlVQVn0tYnJhbmNoO3Byb3RvY29sPWdpdCIKK1NSQ19VUkkgPSAiXAorICAgICAke0JJTlVUSUxTX0dJVF9VUkl9IFwKKyAgICAgZmlsZTovLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2ggXAorIgorUyAgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICAgICAgcm0gLXJmICR7U30vZ2RiICR7U30vbGliZGVjbnVtYmVyICR7U30vcmVhZGxpbmUgJHtTfS9zaW0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4yOS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjMwLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMjkuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjMwLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMjkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjI5LjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjI5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4yOS4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1iaW51dGlscy1jcm9zc3Nkay1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKaW5kZXggMGI1MTVkOC4uMmRmODM2MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDU4YWM5Zjk1YTNkODNjMjllZmFmN2E4OTA2ZmI2YWVmZWE4YzhlNzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDJlMWI1ZTI0YTY3NTlkZTdmNzNhYTYwNjBhNTc0ODQ4ZDkxMzFiNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjU4OjU0ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDEvMTVdIGJpbnV0aWxzLWNyb3Nzc2RrOiBHZW5lcmF0ZSByZWxvY2F0YWJsZSBTREtzCkBAIC0xOCw3ICsxOCw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sZC9nZW5zY3JpcHRzLnNoIGIvbGQvZ2Vuc2NyaXB0cy5zaAotaW5kZXggYjY5NDBkMzc2ZC4uYTQyYzRkN2E0YiAxMDA3NTUKK2luZGV4IDg3MzI0MjJiM2EuLjFmMjU3ZTk5Y2EgMTAwNzU1CiAtLS0gYS9sZC9nZW5zY3JpcHRzLnNoCiArKysgYi9sZC9nZW5zY3JpcHRzLnNoCiBAQCAtMjc3LDYgKzI3Nyw3IEBAIERBVEFfQUxJR05NRU5UX3U9IiR7REFUQV9BTElHTk1FTlRfdS0ke0RBVEFfQUxJR05NRU5UX3J9fSIKQEAgLTM3LDE2ICszNywxNiBAQAogICggZWNobyAiLyogU2NyaXB0IGZvciBsZCAtVXI6IGxpbmsgdy9vdXQgcmVsb2NhdGlvbiwgZG8gY3JlYXRlIGNvbnN0cnVjdG9ycyAqLyIKICAgIC4gJHtDVVNUT01JWkVSX1NDUklQVH0KICAgIC4gJHtzcmNkaXJ9L3NjcmlwdHRlbXBsLyR7U0NSSVBUX05BTUV9LnNjCi0gKSB8IHNlZCAtZSAnL14gKiQvZDtzL1sgCV0qJC8vJyA+IGxkc2NyaXB0cy8ke0VNVUxBVElPTl9OQU1FfS54dQorICkgfCBzZWQgLWUgJy9eICokL2Q7cy9bCSBdKiQvLycgPiBsZHNjcmlwdHMvJHtFTVVMQVRJT05fTkFNRX0ueHUKICt1bnNldCBQQVJUSUFMX0xJTktJTkcKICAKLSBMRF9GTEFHPQogIERBVEFfQUxJR05NRU5UPSR7REFUQV9BTElHTk1FTlRffQorIFJFTE9DQVRJTkc9IiAiCiBkaWZmIC0tZ2l0IGEvbGQvc2NyaXB0dGVtcGwvZWxmLnNjIGIvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCi1pbmRleCBkOTEzOGJjMDU5Li5lNDhmYWVjYTQzIDEwMDY0NAoraW5kZXggOTc4N2FiNWRhYy4uMGM4YTkzYzJjOCAxMDA2NDQKIC0tLSBhL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwogKysrIGIvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCi1AQCAtMTM4LDggKzEzOCw4IEBAIGlmIHRlc3QgLXogIiREQVRBX1NFR01FTlRfQUxJR04iOyB0aGVuCitAQCAtMTM5LDggKzEzOSw4IEBAIGlmIHRlc3QgLXogIiREQVRBX1NFR01FTlRfQUxJR04iOyB0aGVuCiAgICAgIERBVEFfU0VHTUVOVF9SRUxST19FTkQ9Ii4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgke1NFUEFSQVRFX0dPVFBMVC0wfSwgLik7IgogICAgZmkKICBmaQpAQCAtNTgsNSArNTgsNSBAQAogIGlmIHRlc3QgLXogIiRQTFQiOyB0aGVuCiAgICBJUExUPSIuaXBsdCAgICAgICAgICR7UkVMT0NBVElORy0wfSA6IHsgKiguaXBsdCkgfSIKIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAppbmRleCAzNzAzMzNkLi5iYWM3ZmIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOGY5MjljNjE2MjA4MzUxZDA5NzFkN2RmZDc1NzRkNDhkMzE0NDYwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNThkZGYzOGZhNTNhYmI0OGI2OWRkNzZlMzk4YzczNDUxYWQxYTVlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDYgTWFyIDIwMTcgMjM6Mzc6MDUgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSCAwMi8xNV0gYmludXRpbHMtY3Jvc3M6IERvIG5vdCBnZW5lcmF0ZSBsaW5rZXIgc2NyaXB0CkBAIC0yMyw3ICsyMyw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGQvZ2Vuc2NyaXB0cy5zaCBiL2xkL2dlbnNjcmlwdHMuc2gKLWluZGV4IGE0MmM0ZDdhNGIuLmQ3MjdiNGQwN2UgMTAwNzU1CitpbmRleCAxZjI1N2U5OWNhLi4xNTgzYjczYTJiIDEwMDc1NQogLS0tIGEvbGQvZ2Vuc2NyaXB0cy5zaAogKysrIGIvbGQvZ2Vuc2NyaXB0cy5zaAogQEAgLTE4OSwyOSArMTg5LDYgQEAgYXBwZW5kX3RvX2xpYl9wYXRoKCkKQEAgLTU3LDUgKzU3LDUgQEAKICAgIGxpYnM9JHtOQVRJVkVfTElCX0RJUlN9CiAgICBpZiBbICJ4JHtOQVRJVkV9IiA9ICJ4eWVzIiBdIDsgdGhlbgogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKaW5kZXggYjZjMDljYy4uMzA2YWZlNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTVhODA2YWFlMDJhMTAyOTBjNzFkZWI3MmY2Mjk0Yzk4MDY4MzY4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTA4OWJlODhmNjcwYmNhZGY3ZGIwZTc3ODg5NGY5MDBiMmMwNWQ3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDc6MzMgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwMy8xNV0gY29uZmlndXJlOiB3aWRlbiB0aGUgcmVnZXhwIGZvciBTSCBhcmNoaXRlY3R1cmVzCkBAIC0xNCwxMiArMTQsMTIgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBiZTlkZDg5ZDliLi5kOGFmMTU1YWI1IDEwMDc1NQoraW5kZXggMmQ2MTVhOTk5Ni4uYzRhZDQ1YzA2YyAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtMzg0NCw3ICszODQ0LDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgotICAgb3IxayotKi0qKQotICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgZ2RiIgorQEAgLTM4MzUsNyArMzgzNSw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KKyAgIG52cHR4Ki0qLSopCisgICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbGlic3NwIHRhcmdldC1saWJzdGRjKystdjMgdGFyZ2V0LWxpYm9iamMiCiAgICAgIDs7CiAtICBzaC0qLSopCiArICBzaCotKi0qIHwgc2g2NC0qLSopCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgc2gqLSotZWxmKQogICAgICAgICAgIDs7CiBkaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCi1pbmRleCBlNzFmZThiOWU0Li42NzllMGRjZTc3IDEwMDc1NQoraW5kZXggMWUyNTEwMjk3Ni4uNmI0M2JmMmIxOCAxMDA3NTUKIC0tLSBhL2dwcm9mL2NvbmZpZ3VyZQogKysrIGIvZ3Byb2YvY29uZmlndXJlCiBAQCAtNTg3NCw2ICs1ODc0LDExIEBAIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKQEAgLTQzLDUgKzQzLDUgQEAKICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW14vXSsoXC5zb1wuWzAtOV0rXC5bMC05XSt8X3BpY1wuYSkkJwogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKaW5kZXggMzhlZWUzMC4uM2UyOWM1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMzYzNGVjMzU0N2JjMGY4YTVkMWI4YWQxNTM2NWUyZjgzNmNkYTY0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTBlODkzZWEwOTRjNDhmYTgwMzA0NmZmYTg5ZTMxOTA3YWVlMDU5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDk6NTggKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNC8xNV0gUG9pbnQgc2NyaXB0cyBsb2NhdGlvbiB0byBsaWJkaXIKQEAgLTEyLDcgKzEyLDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmFtIGIvbGQvTWFrZWZpbGUuYW0KLWluZGV4IDYyNTM0N2ZmNjIuLmQ1MzM0ZDI2ODEgMTAwNjQ0CitpbmRleCA2MjQzYzEyNTI4Li4zYzVkNmM4MjAyIDEwMDY0NAogLS0tIGEvbGQvTWFrZWZpbGUuYW0KICsrKyBiL2xkL01ha2VmaWxlLmFtCiBAQCAtNTcsNyArNTcsNyBAQCBlbmRpZgpAQCAtMjUsNyArMjUsNyBAQAogIEVNVUwgPSBARU1VTEAKICBFTVVMQVRJT05fT0ZJTEVTID0gQEVNVUxBVElPTl9PRklMRVNACiBkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuaW4gYi9sZC9NYWtlZmlsZS5pbgotaW5kZXggYmEyNTE3NzdiMC4uYTJjZjIyODJiNSAxMDA2NDQKK2luZGV4IDc2MGMwMzdmOWQuLjZkZWE2OTI4NjkgMTAwNjQ0CiAtLS0gYS9sZC9NYWtlZmlsZS5pbgogKysrIGIvbGQvTWFrZWZpbGUuaW4KIEBAIC00NDYsNyArNDQ2LDcgQEAgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykgJChFTEZfQ0xGQUdTKQpAQCAtMzgsNSArMzgsNSBAQAogIEJGRERJUiA9ICQoQkFTRURJUikvYmZkCiAgSU5DRElSID0gJChCQVNFRElSKS9pbmNsdWRlCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKaW5kZXggNTkxNTBhMi4uMmY0OTk2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDlkMzdjOGY2OGMwN2RhNjMxODZjYjk5M2YxMjIxZjZjMTFlY2E0MjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDUxOGFiYjE5NWQwZWI0N2Q4ZWVmNTgxZDdmZDBhNWZkOWZhNzNmN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjI3OjE3ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDUvMTVdIE9ubHkgZ2VuZXJhdGUgYW4gUlBBVEggZW50cnkgaWYgTERfUlVOX1BBVEggaXMgbm90CkBAIC0xNSwxMCArMTUsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9sZC9lbXVsdGVtcGwvZWxmMzIuZW0gYi9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KLWluZGV4IDlhYzE4NDAzMTYuLjlkYzRjMTQ5YmMgMTAwNjQ0CitpbmRleCBjMDkyNWZjOWI5Li43ZDc2NzBhODlmIDEwMDY0NAogLS0tIGEvbGQvZW11bHRlbXBsL2VsZjMyLmVtCiArKysgYi9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KLUBAIC0xNDYzLDYgKzE0NjMsOCBAQCBmcmFnbWVudCA8PEVPRgorQEAgLTE0NzAsNiArMTQ3MCw4IEBAIGZyYWdtZW50IDw8RU9GCiAgCSAgICAgICYmIGNvbW1hbmRfbGluZS5ycGF0aCA9PSBOVUxMKQogIAkgICAgewogIAkgICAgICBwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKQEAgLTI3LDcgKzI3LDcgQEAKICAJICAgICAgaWYgKHBhdGgKICAJCSAgJiYgZ2xkJHtFTVVMQVRJT05fTkFNRX1fc2VhcmNoX25lZWRlZCAocGF0aCwgJm4sIGZvcmNlKSkKICAJCWJyZWFrOwotQEAgLTE3NDAsNiArMTc0Miw4IEBAIGdsZCR7RU1VTEFUSU9OX05BTUV9X2JlZm9yZV9hbGxvY2F0aW9uICh2b2lkKQorQEAgLTE3NTAsNiArMTc1Miw4IEBAIGdsZCR7RU1VTEFUSU9OX05BTUV9X2JlZm9yZV9hbGxvY2F0aW9uICh2b2lkKQogICAgcnBhdGggPSBjb21tYW5kX2xpbmUucnBhdGg7CiAgICBpZiAocnBhdGggPT0gTlVMTCkKICAgICAgcnBhdGggPSAoY29uc3QgY2hhciAqKSBnZXRlbnYgKCJMRF9SVU5fUEFUSCIpOwpAQCAtMzcsNSArMzcsNSBAQAogICAgZm9yIChhYmZkID0gbGlua19pbmZvLmlucHV0X2JmZHM7IGFiZmQ7IGFiZmQgPSBhYmZkLT5saW5rLm5leHQpCiAgICAgIGlmIChiZmRfZ2V0X2ZsYXZvdXIgKGFiZmQpID09IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoCmluZGV4IGU4N2VmZTYuLjMzM2UyZWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNzFjNzM0YmIzNzU0MzE5MDI5ZGNmYzg5OGNlZGJhZGU0MjI3NGRjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZmFkMDUzY2M1OWJhYTYyNzcxODJiMGZjOTA0MTVhMjE0MDYwYmE5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDE0IEZlYiAyMDE2IDE3OjA0OjA3ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDYvMTVdIFVzZSBsaWJ0b29sIDIuNApAQCAtMTIsNyArMTIsNiBAQAogIGJmZC9jb25maWd1cmUgICAgICAgIHwgMTMxOCArKysrKysrKysrKysrKysrKy0tLS0tLQogIGJmZC9jb25maWd1cmUuYWMgICAgIHwgICAgMiArLQogIGJpbnV0aWxzL2NvbmZpZ3VyZSAgIHwgMTMxNiArKysrKysrKysrKysrKysrKy0tLS0tLQotIGNvbmZpZ3VyZSAgICAgICAgICAgIHwgICAgMiArLQogIGdhcy9jb25maWd1cmUgICAgICAgIHwgMTMxNCArKysrKysrKysrKysrKysrKy0tLS0tLQogIGdwcm9mL2NvbmZpZ3VyZSAgICAgIHwgMTMyMSArKysrKysrKysrKysrKysrKy0tLS0tLQogIGxkL2NvbmZpZ3VyZSAgICAgICAgIHwgMTY5MSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQpAQCAtMjQsMTAgKzIzLDEwIEBACiAgb3Bjb2Rlcy9jb25maWd1cmUgICAgfCAxMzE4ICsrKysrKysrKysrKysrKysrLS0tLS0tCiAgb3Bjb2Rlcy9jb25maWd1cmUuYWMgfCAgICAyICstCiAgemxpYi9jb25maWd1cmUgICAgICAgfCAxMzE2ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gMTUgZmlsZXMgY2hhbmdlZCwgOTkyNyBpbnNlcnRpb25zKCspLCAzNjk0IGRlbGV0aW9ucygtKQorIDE0IGZpbGVzIGNoYW5nZWQsIDk5MjYgaW5zZXJ0aW9ucygrKSwgMzY5MyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUgYi9iZmQvY29uZmlndXJlCi1pbmRleCA0ODI3NjU5NGVkLi4zZWNlODk0M2YzIDEwMDc1NQoraW5kZXggNmMyYjI0ZWJlMy4uNWZkZDcyM2I3ZiAxMDA3NTUKIC0tLSBhL2JmZC9jb25maWd1cmUKICsrKyBiL2JmZC9jb25maWd1cmUKIEBAIC02NzIsNiArNjcyLDkgQEAgT1RPT0wKQEAgLTE5MzEsNyArMTkzMCw3IEBACiAgICBjaG1vZCAreCAiJG9maWxlIgogIAogZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUuYWMgYi9iZmQvY29uZmlndXJlLmFjCi1pbmRleCA4ZmQwM2E3ZWE4Li44ODE2YzMyODZjIDEwMDY0NAoraW5kZXggMjM0MmYzZmFlYS4uYTY0NTFmY2NkYSAxMDA2NDQKIC0tLSBhL2JmZC9jb25maWd1cmUuYWMKICsrKyBiL2JmZC9jb25maWd1cmUuYWMKIEBAIC0yNTQsNyArMjU0LDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKQEAgLTE5NDQsNyArMTk0Myw3IEBACiAgCiAgIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KIGRpZmYgLS1naXQgYS9iaW51dGlscy9jb25maWd1cmUgYi9iaW51dGlscy9jb25maWd1cmUKLWluZGV4IDIyZTFiMTczNmUuLjMyMWI2MzUzNWIgMTAwNzU1CitpbmRleCA1ZDljOTEwNWE3Li5hNjViMmI0NTE4IDEwMDc1NQogLS0tIGEvYmludXRpbHMvY29uZmlndXJlCiArKysgYi9iaW51dGlscy9jb25maWd1cmUKIEBAIC02NTksOCArNjU5LDExIEBAIE9UT09MCkBAIC0zODQxLDIxICszODQwLDggQEAKICAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBkOGFmMTU1YWI1Li4wMDVlZDgyN2FiIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC0zODQ0LDcgKzM4NDQsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gICBvcjFrKi0qLSopCi0gICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyBnZGIiCi0gICAgIDs7Ci0tICBzaCotKi0qIHwgc2g2NC0qLSopCi0rICBzaC0qLSogfCBzaDY0LSotKikKLSAgICAgY2FzZSAiJHt0YXJnZXR9IiBpbgotICAgICAgIHNoKi0qLWVsZikKLSAgICAgICAgICA7OwogZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCi1pbmRleCA5M2FmYjIwYzhmLi44MWRkNGNiZDk3IDEwMDc1NQoraW5kZXggZmJhYzhmNDRkNS4uYTQwYWMyMTQ0ZiAxMDA3NTUKIC0tLSBhL2dhcy9jb25maWd1cmUKICsrKyBiL2dhcy9jb25maWd1cmUKIEBAIC02NTAsOCArNjUwLDExIEBAIE9UT09MCkBAIC01MTU2LDcgKzUxNDIsNyBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTU0MzYsMTMgKzE2MDg5LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTQzNywxMyArMTYwOTAsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTE3Nyw3ICs1MTYzLDcgQEAKICBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NDU3LDE0ICsxNjExNywxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorQEAgLTE1NDU4LDE0ICsxNjExOCwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTUxOTYsNyArNTE4Miw3IEBACiAgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU0OTcsMTIgKzE2MTYwLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCitAQCAtMTU0OTgsMTIgKzE2MTYxLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCiAgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTIxMCw3ICs1MTk2LDcgQEAKICBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NTU3LDggKzE2MjIwLDEzIEBAIHJlbG9hZF9mbGFnIFwKK0BAIC0xNTU1OCw4ICsxNjIyMSwxMyBAQCByZWxvYWRfZmxhZyBcCiAgT0JKRFVNUCBcCiAgZGVwbGlic19jaGVja19tZXRob2QgXAogIGZpbGVfbWFnaWNfY21kIFwKQEAgLTUyMjQsNyArNTIxMCw3IEBACiAgU1RSSVAgXAogIFJBTkxJQiBcCiAgQ0MgXAotQEAgLTE1NTY4LDEyICsxNjIzNiwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKK0BAIC0xNTU2OSwxMiArMTYyMzcsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKQEAgLTUyNDAsNyArNTIyNiw3IEBACiAgRFNZTVVUSUwgXAogIE5NRURJVCBcCiAgTElQTyBcCi1AQCAtMTU1ODksNyArMTYyNTksNiBAQCBub191bmRlZmluZWRfZmxhZyBcCitAQCAtMTU1OTAsNyArMTYyNjAsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCiAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCkBAIC01MjQ4LDcgKzUyMzQsNyBAQAogIGV4Y2x1ZGVfZXhwc3ltcyBcCiAgaW5jbHVkZV9leHBzeW1zIFwKICBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTU2MjUsNiArMTYyOTQsNyBAQCBtb2R1bGVfY21kcyBcCitAQCAtMTU2MjYsNiArMTYyOTUsNyBAQCBtb2R1bGVfY21kcyBcCiAgbW9kdWxlX2V4cHN5bV9jbWRzIFwKICBleHBvcnRfc3ltYm9sc19jbWRzIFwKICBwcmVsaW5rX2NtZHMgXApAQCAtNTI1Niw3ICs1MjQyLDcgQEAKICBwb3N0aW5zdGFsbF9jbWRzIFwKICBwb3N0dW5pbnN0YWxsX2NtZHMgXAogIGZpbmlzaF9jbWRzIFwKLUBAIC0xNjM4OSw3ICsxNzA1OSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKK0BAIC0xNjM5MCw3ICsxNzA2MCw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKICAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KICAjCiAgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKQEAgLTUyNjYsNyArNTI1Miw3IEBACiAgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICAjCiAgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE2NDkyLDE5ICsxNzE2Myw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKK0BAIC0xNjQ5MywxOSArMTcxNjQsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCiAgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgogIE5MMlNQPSRsdF9sdF9OTDJTUAogIApAQCAtNTMxMCw3ICs1Mjk2LDcgQEAKICAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgogIFNUUklQPSRsdF9TVFJJUAogIAotQEAgLTE2NTM0LDYgKzE3MjI4LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCitAQCAtMTY1MzUsNiArMTcyMjksMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKICAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgogIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogIApAQCAtNTMyMyw3ICs1MzA5LDcgQEAKICAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KICBvYmpkaXI9JG9iamRpcgogIAotQEAgLTE2NTQzLDYgKzE3MjQzLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKK0BAIC0xNjU0NCw2ICsxNzI0NCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECiAgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KICBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCiAgCkBAIC01MzMzLDcgKzUzMTksNyBAQAogICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KICBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKICAKLUBAIC0xNjY1NywxMiArMTczNjAsMTIgQEAgd2l0aF9nY2M9JEdDQworQEAgLTE2NjU4LDEyICsxNzM2MSwxMiBAQCB3aXRoX2djYz0kR0NDCiAgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgogIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKICAKQEAgLTUzNDksNyArNTMzNSw3IEBACiAgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgogIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCiAgCi1AQCAtMTY3NDksOSArMTc0NTIsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCitAQCAtMTY3NTAsOSArMTc0NTMsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCiAgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCiAgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwogIApAQCAtNTM1OSw3ICs1MzQ1LDcgQEAKICAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwogIAotQEAgLTE2NzY3LDYgKzE3NDY3LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKK0BAIC0xNjc2OCw2ICsxNzQ2OCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCiAgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KICBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwogIApAQCAtNTM2OSw3ICs1MzU1LDcgQEAKICAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KICBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKICAKLUBAIC0xNjc5OSwyMTAgKzE3NTAyLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKK0BAIC0xNjgwMCwyMTAgKzE3NTAzLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKICAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KICAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwpAQCAtNTc0NCw3ICs1NzMwLDcgQEAKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCiBkaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCi1pbmRleCA2NzllMGRjZTc3Li5hYzRjMDE2YTYzIDEwMDc1NQoraW5kZXggNmI0M2JmMmIxOC4uMjQ1ZWU0OGJjMyAxMDA3NTUKIC0tLSBhL2dwcm9mL2NvbmZpZ3VyZQogKysrIGIvZ3Byb2YvY29uZmlndXJlCiBAQCAtNjMxLDggKzYzMSwxMSBAQCBPVE9PTApAQCAtNzY1NCw3ICs3NjQwLDcgQEAKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCiBkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCi1pbmRleCBkN2Y2NmY4Y2RjLi40ZTcxNTExYmQxIDEwMDc1NQoraW5kZXggMGNjNmU4YTUwZi4uZGI4Yjk5ODcyMiAxMDA3NTUKIC0tLSBhL2xkL2NvbmZpZ3VyZQogKysrIGIvbGQvY29uZmlndXJlCiBAQCAtNjU1LDggKzY1NSwxMSBAQCBPVE9PTApAQCAtMTczMzYsNyArMTczMjIsNyBAQAogICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgogICMKIGRpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZSBiL29wY29kZXMvY29uZmlndXJlCi1pbmRleCAxNzUzMGY1NGI5Li43OWIzOTYxMWMyIDEwMDc1NQoraW5kZXggNGYyOTg4NzA5OC4uMjEyN2QzOTI4OCAxMDA3NTUKIC0tLSBhL29wY29kZXMvY29uZmlndXJlCiArKysgYi9vcGNvZGVzL2NvbmZpZ3VyZQogQEAgLTY1MCw2ICs2NTAsOSBAQCBPVE9PTApAQCAtMTkyNDAsNyArMTkyMjYsNyBAQAogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKIGRpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZS5hYyBiL29wY29kZXMvY29uZmlndXJlLmFjCi1pbmRleCBhOWZiZmQ2MWYxLi5jNDM3ODBmNjRkIDEwMDY0NAoraW5kZXggYjA3ZjNmMzYyOS4uNWEzMmQ5YjFmYyAxMDA2NDQKIC0tLSBhL29wY29kZXMvY29uZmlndXJlLmFjCiArKysgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYwogQEAgLTE2Nyw3ICsxNjcsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubApAQCAtMjExNTMsNSArMjExMzksNSBAQAogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2gKaW5kZXggODgwMTk2MC4uNGE1MTI3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyYjg3YWFkMTc0MWJjNDgxZGQwOTgyZjEwMGFkNWVhN2Y5MzdiYjYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2OTc5MDMyNTZlMDk1MzM3NzhiYWE4YWY2NjQwMmM0NGQ3MDIxOWQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozNzoxMCArMDAwMAogU3ViamVjdDogW1BBVENIIDA3LzE1XSBBZGQgdGhlIGFybXY1ZSBhcmNoaXRlY3R1cmUgdG8gYmludXRpbHMKQEAgLTE5LDEwICsxOSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1hcm0uYyBiL2dhcy9jb25maWcvdGMtYXJtLmMKLWluZGV4IGE4ODVlZmU0ZmMuLjczNWVhYTc0NDcgMTAwNjQ0CitpbmRleCBlYzUwNDIwNTE4Li5hMjVkMTcyMWFmIDEwMDY0NAogLS0tIGEvZ2FzL2NvbmZpZy90Yy1hcm0uYwogKysrIGIvZ2FzL2NvbmZpZy90Yy1hcm0uYwotQEAgLTI1OTkwLDYgKzI1OTkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1fYXJjaF9vcHRpb25fdGFibGUgYXJtX2FyY2hzW10gPQorQEAgLTI2MTk1LDYgKzI2MTk1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1fYXJjaF9vcHRpb25fdGFibGUgYXJtX2FyY2hzW10gPQogICAgQVJNX0FSQ0hfT1BUICgiYXJtdjR0IiwJQVJNX0FSQ0hfVjRULAkgRlBVX0FSQ0hfRlBBKSwKICAgIEFSTV9BUkNIX09QVCAoImFybXY0dHhtIiwJQVJNX0FSQ0hfVjRUeE0sCSBGUFVfQVJDSF9GUEEpLAogICAgQVJNX0FSQ0hfT1BUICgiYXJtdjUiLAlBUk1fQVJDSF9WNSwJIEZQVV9BUkNIX1ZGUCksCkBAIC0zMSw1ICszMSw1IEBACiAgICBBUk1fQVJDSF9PUFQgKCJhcm12NXR4bSIsCUFSTV9BUkNIX1Y1VHhNLAkgRlBVX0FSQ0hfVkZQKSwKICAgIEFSTV9BUkNIX09QVCAoImFybXY1dGUiLAlBUk1fQVJDSF9WNVRFLAkgRlBVX0FSQ0hfVkZQKSwKIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaAppbmRleCAzMGEyMmI1Li45MzliZTY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMzMxNDQzYTg3YTMxZWM1MDRlNTY1MmZjMDk5ZDkxMjlhOWE0ZGViOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjIyZDY2NjM0ZWIyZTUwOWQ0MTI2ZjViZGNhYjI2ZGUzNjcyNDFhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mzk6MDEgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwOC8xNV0gZG9uJ3QgbGV0IHRoZSBkaXN0cm8gY29tcGlsZXIgcG9pbnQgdG8gdGhlIHdyb25nCkBAIC0xNyw3ICsxNyw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L01ha2VmaWxlLmluIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCi1pbmRleCAyNWNmYTI5YWQ1Li5jZTY3YTcxMGUzIDEwMDY0NAoraW5kZXggZWQxYjMzNGMzNi4uZDRmZmQ4YjU3YiAxMDA2NDQKIC0tLSBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgogKysrIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCiBAQCAtMzY0LDcgKzM2NCw4IEBAIGluc3RhbGwtc3RyaXA6IGluc3RhbGwKQEAgLTMxLDUgKzMxLDUgQEAKICAJaWYgdGVzdCAtbiAiJHt0YXJnZXRfaGVhZGVyX2Rpcn0iOyB0aGVuIFwKICAJCSR7bWtpbnN0YWxsZGlyc30gJChERVNURElSKSQobGliZGlyKS8kKE1VTFRJT1NESVIpOyBcCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKaW5kZXggZTBlMjU3OC4uZTc1MTA0NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDBhNGFmZGNmMDcwMGVmZDQ1OTYzNTY4ZTJkMDA0OTEyN2NkZjQ0MzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDI3ZTM4ZWU5MmMyNGZjYTg2YjFjM2Y2ZWYxNTZhMTg5MmRkMDZiZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogRnJpLCAxNSBKYW4gMjAxNiAwNjozMTowOSArMDAwMAogU3ViamVjdDogW1BBVENIIDA5LzE1XSB3YXJuIGZvciB1c2VzIG9mIHN5c3RlbSBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcKQEAgLTc3LDcgKzc3LDcgQEAKICAjdW5kZWYgRVhUUkFfU0hMSUJfRVhURU5TSU9OCiAgCiBkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCi1pbmRleCA0ZTcxNTExYmQxLi43MWM2YWQxZmQxIDEwMDc1NQoraW5kZXggZGI4Yjk5ODcyMi4uNDg5ZWFkNWMxMyAxMDA3NTUKIC0tLSBhL2xkL2NvbmZpZ3VyZQogKysrIGIvbGQvY29uZmlndXJlCiBAQCAtNzg5LDYgKzc4OSw3IEBAIHdpdGhfbGliX3BhdGgKQEAgLTExOCw3ICsxMTgsNyBAQAogIGlmIHRlc3QgIiR7ZW5hYmxlX2dvbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgogICAgZW5hYmxldmFsPSRlbmFibGVfZ29sZDsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbgogZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS5hYyBiL2xkL2NvbmZpZ3VyZS5hYwotaW5kZXggMDAwODBmODVmZC4uM2FhOThlMzdmYiAxMDA2NDQKK2luZGV4IGJhZGExYjUwYjAuLmQwNzRhMzgyMGIgMTAwNjQ0CiAtLS0gYS9sZC9jb25maWd1cmUuYWMKICsrKyBiL2xkL2NvbmZpZ3VyZS5hYwogQEAgLTk1LDYgKzk1LDE2IEBAIEFDX1NVQlNUKHVzZV9zeXNyb290KQpAQCAtMTM5LDEwICsxMzksMTAgQEAKICBkbmwgImluc3RhbGxfYXNfZGVmYXVsdCIgaXMgc2V0IHRvIGZhbHNlIGlmIGdvbGQgaXMgdGhlIGRlZmF1bHQgbGlua2VyLgogIGRubCAiaW5zdGFsbGVkX2xpbmtlciIgaXMgdGhlIGluc3RhbGxlZCBCRkQgbGlua2VyIG5hbWUuCiBkaWZmIC0tZ2l0IGEvbGQvbGQuaCBiL2xkL2xkLmgKLWluZGV4IGM2ZmExMjQ3ZjAuLjAxYzM3MzQ5OGYgMTAwNjQ0CitpbmRleCBiYTkxNGI5MjFlLi45ZGYxN2RhYjZjIDEwMDY0NAogLS0tIGEvbGQvbGQuaAogKysrIGIvbGQvbGQuaAotQEAgLTE3NCw2ICsxNzQsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKK0BAIC0xODAsNiArMTgwLDE0IEBAIHR5cGVkZWYgc3RydWN0CiAgICAgICBpbiB0aGUgbGlua2VyIHNjcmlwdC4gICovCiAgICBiZmRfYm9vbGVhbiBmb3JjZV9ncm91cF9hbGxvY2F0aW9uOwogIApAQCAtMTU4LDEwICsxNTgsMTAgQEAKICAgIGVudW0gZW5kaWFuX2VudW0gZW5kaWFuOwogIAogZGlmZiAtLWdpdCBhL2xkL2xkLnRleGluZm8gYi9sZC9sZC50ZXhpbmZvCi1pbmRleCBlYmU3ZTdiN2JkLi4zM2FhMmM2MmZhIDEwMDY0NAoraW5kZXggYzg5OTE1ZjFhYS4uZGY0MzA4MzdlMiAxMDA2NDQKIC0tLSBhL2xkL2xkLnRleGluZm8KICsrKyBiL2xkL2xkLnRleGluZm8KLUBAIC0yNDgwLDYgKzI0ODAsMTggQEAgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBvcmlnaW5hbCBsaW5rZWQgZmlsZSBkb2VzIG5vdCBjaGFuZ2UuCitAQCAtMjQ5OCw2ICsyNDk4LDE4IEBAIHN0cmluZyBpZGVudGlmeWluZyB0aGUgb3JpZ2luYWwgbGlua2VkIGZpbGUgZG9lcyBub3QgY2hhbmdlLgogIAogIFBhc3NpbmcgQGNvZGV7bm9uZX0gZm9yIEB2YXJ7c3R5bGV9IGRpc2FibGVzIHRoZSBzZXR0aW5nIGZyb20gYW55CiAgQGNvZGV7LS1idWlsZC1pZH0gb3B0aW9ucyBlYXJsaWVyIG9uIHRoZSBjb21tYW5kIGxpbmUuCkBAIC0xODEsNyArMTgxLDcgQEAKICAKICBAYyBtYW4gZW5kCiBkaWZmIC0tZ2l0IGEvbGQvbGRmaWxlLmMgYi9sZC9sZGZpbGUuYwotaW5kZXggM2IzN2EwYTNlMi4uNWM4NWIwMTg0OSAxMDA2NDQKK2luZGV4IDY1MzJhNTdkOTYuLmY5NDNmMGIyZTUgMTAwNjQ0CiAtLS0gYS9sZC9sZGZpbGUuYwogKysrIGIvbGQvbGRmaWxlLmMKIEBAIC0xMTYsNiArMTE2LDIzIEBAIGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBiZmRfYm9vbGVhbiBjbWRsaW5lKQpAQCAtMjA5LDcgKzIwOSw3IEBACiAgCiAgLyogVHJ5IHRvIG9wZW4gYSBCRkQgZm9yIGEgbGFuZ19pbnB1dF9zdGF0ZW1lbnQuICAqLwogZGlmZiAtLWdpdCBhL2xkL2xkbGV4LmggYi9sZC9sZGxleC5oCi1pbmRleCA1YWE3ZjZiYzNlLi5jYjY1NWUwMzk5IDEwMDY0NAoraW5kZXggMTQwZWQxZDlkYS4uOTk2NWNiYzA0ZiAxMDA2NDQKIC0tLSBhL2xkL2xkbGV4LmgKICsrKyBiL2xkL2xkbGV4LmgKIEBAIC0xNDcsNiArMTQ3LDggQEAgZW51bSBvcHRpb25fdmFsdWVzCkBAIC0yMjIsNyArMjIyLDcgQEAKICAKICAvKiBUaGUgaW5pdGlhbCBwYXJzZXIgc3RhdGVzLiAgKi8KIGRpZmYgLS1naXQgYS9sZC9sZG1haW4uYyBiL2xkL2xkbWFpbi5jCi1pbmRleCAyYjA5ZjIwNDEzLi44OWUyYTNhODA1IDEwMDY0NAoraW5kZXggYzQ3M2VkMjRjMy4uYWRhZTBiNDYxMCAxMDA2NDQKIC0tLSBhL2xkL2xkbWFpbi5jCiArKysgYi9sZC9sZG1haW4uYwogQEAgLTI2MSw2ICsyNjEsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCkBAIC0yMzUsNyArMjM1LDcgQEAKICAgIC8qIFdlIGluaXRpYWxpemUgREVNQU5HTElORyBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKICAgICAgIENPTExFQ1RfTk9fREVNQU5HTEUuICBUaGUgZ2NjIGNvbGxlY3QyIHByb2dyYW0gd2lsbCBkZW1hbmdsZSB0aGUKIGRpZmYgLS1naXQgYS9sZC9sZXhzdXAuYyBiL2xkL2xleHN1cC5jCi1pbmRleCBlZmZhMjc3YjE2Li5lNDkyOTYwN2U5IDEwMDY0NAoraW5kZXggZjIxOTE2MDJkNC4uYmNjYjNiZGVlZiAxMDA2NDQKIC0tLSBhL2xkL2xleHN1cC5jCiArKysgYi9sZC9sZXhzdXAuYwogQEAgLTUzOCw2ICs1MzgsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsZF9vcHRpb24gbGRfb3B0aW9uc1tdID0KQEAgLTI2OSw1ICsyNjksNSBAQAogICAgICB9CiAgCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaAppbmRleCA0OTYyNDJlLi4zM2RmZmY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4OGZhYzA4ZjFjNDcyYzYxMmYzODFjYmI5NDA4NzU2ZjJmNThiNGZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlMjA1YWUwNWM0MWE4Y2M4ZDQ3NzA4ZjBhM2I2Zjc0MGUyYmYyNTI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0MjozOCArMDAwMAogU3ViamVjdDogW1BBVENIIDEwLzE1XSBGaXggcnBhdGggaW4gbGlidG9vbCB3aGVuIHN5c3Jvb3QgaXMgZW5hYmxlZApAQCAtNDgsNSArNDgsNSBAQAogIAkgICAgaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCiAgCSAgICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaAppbmRleCBhYzg3YTJkLi44MGZjYmMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA0OTc2NjBiZGJlYjY3ODg3ODY1NTNhNWQ3MzMxMDVmN2Y4OThkYzYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3OTc4YzEyOTkwMjEwMzNjMzVjMjljOTRlMDk5NzIzNWY3ZWRlMjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0NDoxNCArMDAwMAogU3ViamVjdDogW1BBVENIIDExLzE1XSBDaGFuZ2UgZGVmYXVsdCBlbXVsYXRpb24gZm9yIG1pcHM2NCotKi1saW51eApAQCAtMTQsMTAgKzE0LDEwIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCi1pbmRleCBkYzI0YWFiYWQ1Li40NTExMDI0ZjIyIDEwMDY0NAoraW5kZXggZjA0YTk5M2YwNi4uODc3N2Y5NmJkMiAxMDA2NDQKIC0tLSBhL2JmZC9jb25maWcuYmZkCiArKysgYi9iZmQvY29uZmlnLmJmZAotQEAgLTExODYsMTIgKzExODYsMTIgQEAgY2FzZSAiJHt0YXJnfSIgaW4KK0BAIC0xMTg5LDEyICsxMTg5LDEyIEBAIGNhc2UgIiR7dGFyZ30iIGluCiAgICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9sZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMgbWlwc19lY29mZl9iZV92ZWMgbWlwc19lY29mZl9sZV92ZWMiCiAgICAgIDs7CiAgICBtaXBzNjQqZWwtKi1saW51eCopCkBAIC0zNSwxMiArMzUsMTIgQEAKICAgIG1pcHMqZWwtKi1saW51eCopCiAgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9sZV92ZWMKIGRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAotaW5kZXggNDdjNzE5Y2QwNS4uZmU3YjkyMzhiMiAxMDA2NDQKK2luZGV4IDYxODNhODViM2QuLjFkNzg0NjU1OTAgMTAwNjQ0CiAtLS0gYS9sZC9jb25maWd1cmUudGd0CiArKysgYi9sZC9jb25maWd1cmUudGd0Ci1AQCAtNTMwLDExICs1MzAsMTEgQEAgbWlwcyplbC0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlbG1pcHZ4d29ya3MKK0BAIC01MzUsMTEgKzUzNSwxMSBAQCBtaXBzKmVsLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVsbWlwdnh3b3JrcwogIG1pcHMqLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVibWlwdnh3b3JrcwotIAkJICAgICAgICB0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmVsbWlwdnh3b3JrcyIgOzsKKyAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmVsbWlwdnh3b3JrcyIgOzsKICBtaXBzKi0qLXdpbmRpc3MpCXRhcmdfZW11bD1lbGYzMm1pcHN3aW5kaXNzIDs7CiAtbWlwczY0KmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwbjMyCiAtCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXAgZWxmMzJidHNtaXAgZWxmNjRsdHNtaXAgZWxmNjRidHNtaXAiCkBAIC01NSw1ICs1NSw1IEBACiAgbWlwcyplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcAogIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwIGVsZjMybHRzbWlwbjMyIGVsZjY0bHRzbWlwIGVsZjMyYnRzbWlwbjMyIGVsZjY0YnRzbWlwIgogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCmluZGV4IGRjNWU1ODAuLjFmZWZiNjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4YzYwYTU1ZDM2Nzg1ODlkOTM3MzliZDI3ZmVjMjE2OTExZDgwOTY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzYjQwYmY1ODQ2MTVmNzk0Yjg1ZmQ1MGQ0ZDBhNWMwYTFkMmVlN2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDY6MTkgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAxMi8xNV0gQWRkIHN1cHBvcnQgZm9yIE5ldGxvZ2ljIFhMUApAQCAtMzQsNyArMzQsNyBAQAogIDE0IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmZkL2FvdXR4LmggYi9iZmQvYW91dHguaAotaW5kZXggM2QzOGZkYTE0Yi4uMGFlYzQ5YmJiMyAxMDA2NDQKK2luZGV4IGVlYzljNGFkMmEuLjNiZjBhNzFlNjMgMTAwNjQ0CiAtLS0gYS9iZmQvYW91dHguaAogKysrIGIvYmZkL2FvdXR4LmgKIEBAIC04MTQsNiArODE0LDcgQEAgTkFNRSAoYW91dCwgbWFjaGluZV90eXBlKSAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2gsCkBAIC00NiwzNCArNDYsMzQgQEAKICAJICBhcmNoX2ZsYWdzID0gTV9NSVBTMjsKICAJICBicmVhazsKIGRpZmYgLS1naXQgYS9iZmQvYXJjaHVyZXMuYyBiL2JmZC9hcmNodXJlcy5jCi1pbmRleCA0MzNiOTVmYTA4Li4wNjNiNzk0M2ExIDEwMDY0NAoraW5kZXggZTgzYzU3YTJmMy4uMzAxNmVhMWJhZSAxMDA2NDQKIC0tLSBhL2JmZC9hcmNodXJlcy5jCiArKysgYi9iZmQvYXJjaHVyZXMuYwogQEAgLTIwMSw2ICsyMDEsNyBAQCBERVNDUklQVElPTgotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIgICAgICAgICAgICAgIDg4NzY4MiAgIHsqIGRlY2ltYWwgJ1hMUicgICp9Ci0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiAgIDczNjU1MCAgIHsqIGRlY2ltYWwgJ0lBMicgICp9Ci0rLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIHsqIGRlY2ltYWwgJ1hMUCcgICp9Ci0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMyICAgICAgICAgICAgIDMyCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIgICAgICAgICAgIDMzCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0CisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zCQk2NTAzCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIJCTg4NzY4MgkgeyogZGVjaW1hbCAnWExSJy4gICp9CisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMgk3MzY1NTAJIHsqIGRlY2ltYWwgJ0lBMicuICAqfQorKy4jZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxwICAgICAgICAgICAgICA4ODc2ODAgICB7KiBkZWNpbWFsICdYTFAnLiAgKn0KKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIJCTMyCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIJCTMzCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMJCTM0CiBkaWZmIC0tZ2l0IGEvYmZkL2JmZC1pbjIuaCBiL2JmZC9iZmQtaW4yLmgKLWluZGV4IGQxMjZhZWQwODYuLjJiNzUzYjNhOTMgMTAwNjQ0CitpbmRleCA0Mjk5MWU3ODQ4Li4yN2FiYzVkNWE4IDEwMDY0NAogLS0tIGEvYmZkL2JmZC1pbjIuaAogKysrIGIvYmZkL2JmZC1pbjIuaAotQEAgLTIwNjAsNiArMjA2MCw3IEBAIGVudW0gYmZkX2FyY2hpdGVjdHVyZQorQEAgLTIwNjIsNiArMjA2Miw3IEBAIGVudW0gYmZkX2FyY2hpdGVjdHVyZQogICNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zICAgICAgICAgIDY1MDMKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyICAgICAgICAgICAgICA4ODc2ODIgICAvKiBkZWNpbWFsICdYTFInICAqLwotICNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiAgIDczNjU1MCAgIC8qIGRlY2ltYWwgJ0lBMicgICovCi0rI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscCAgICAgICAgICAgICAgODg3NjgwICAgLyogZGVjaW1hbCAnWExQJyAgKi8KKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyICAgICAgICAgICAgICA4ODc2ODIgICAvKiBkZWNpbWFsICdYTFInLiAgKi8KKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIgICA3MzY1NTAgICAvKiBkZWNpbWFsICdJQTInLiAgKi8KKysjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxwICAgICAgICAgICAgICA4ODc2ODAgICAvKiBkZWNpbWFsICdYTFAnLiAgKi8KICAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMiAgICAgICAgICAgICAzMgogICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIgICAgICAgICAgIDMzCiAgI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMyAgICAgICAgICAgMzQKIGRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCi1pbmRleCA0NTExMDI0ZjIyLi5mMGY5MDcyZjEwIDEwMDY0NAoraW5kZXggODc3N2Y5NmJkMi4uN2I4MGJkYThjOSAxMDA2NDQKIC0tLSBhL2JmZC9jb25maWcuYmZkCiArKysgYi9iZmQvY29uZmlnLmJmZAotQEAgLTExNjksNiArMTE2OSwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgorQEAgLTExNzIsNiArMTE3MiwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgogICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2xlX3ZlYwogICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfYmVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgogICAgICA7OwpAQCAtODYsNyArODYsNyBAQAogICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2JlX3ZlYwogICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbGVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgogZGlmZiAtLWdpdCBhL2JmZC9jcHUtbWlwcy5jIGIvYmZkL2NwdS1taXBzLmMKLWluZGV4IDI0OTMwOTRiZWYuLjgzNzVkMWFlOTYgMTAwNjQ0CitpbmRleCBjYjUwYzY0MzcxLi4yYjlkMWQ2ZWNmIDEwMDY0NAogLS0tIGEvYmZkL2NwdS1taXBzLmMKICsrKyBiL2JmZC9jcHUtbWlwcy5jCiBAQCAtMTA1LDcgKzEwNSw4IEBAIGVudW0KQEAgLTEwMCw3ICsxMDAsNyBAQAogIAogICNkZWZpbmUgTk4oaW5kZXgpICgmYXJjaF9pbmZvX3N0cnVjdFsoaW5kZXgpICsgMV0pCiBAQCAtMTU4LDcgKzE1OSw4IEBAIHN0YXRpYyBjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgYXJjaF9pbmZvX3N0cnVjdFtdID0KLSAgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc194bHIsICJtaXBzOnhsciIsICAgICAgIEZBTFNFLCBOTihJX3hscikpLAorICAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hsciwgIm1pcHM6eGxyIiwJICBGQUxTRSwgTk4oSV94bHIpKSwKICAgIE4gKDMyLCAzMiwgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiwgIm1pcHM6aW50ZXJhcHRpdi1tcjIiLCBGQUxTRSwKICAgICAgIE5OKElfaW50ZXJhcHRpdl9tcjIpKSwKIC0gIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsIm1pcHM6bWljcm9taXBzIixGQUxTRSwwKQpAQCAtMTEwLDEwICsxMTAsMTAgQEAKICAKICAvKiBUaGUgZGVmYXVsdCBhcmNoaXRlY3R1cmUgaXMgbWlwczozMDAwLCBidXQgd2l0aCBhIG1hY2hpbmUgbnVtYmVyIG9mCiBkaWZmIC0tZ2l0IGEvYmZkL2VsZnh4LW1pcHMuYyBiL2JmZC9lbGZ4eC1taXBzLmMKLWluZGV4IGZkZGY2OGM4MTYuLjM1NGM4NWQwMGIgMTAwNjQ0CitpbmRleCAyODU0MDEzNjdkLi4xNGViYjVmMTc1IDEwMDY0NAogLS0tIGEvYmZkL2VsZnh4LW1pcHMuYwogKysrIGIvYmZkL2VsZnh4LW1pcHMuYwotQEAgLTY3OTYsNiArNjc5Niw5IEBAIF9iZmRfZWxmX21pcHNfbWFjaCAoZmxhZ3dvcmQgZmxhZ3MpCitAQCAtNjgwNiw2ICs2ODA2LDkgQEAgX2JmZF9lbGZfbWlwc19tYWNoIChmbGFnd29yZCBmbGFncykKICAgICAgY2FzZSBFX01JUFNfTUFDSF9JQU1SMjoKICAgICAgICByZXR1cm4gYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMjsKICAKQEAgLTEyMyw3ICsxMjMsNyBAQAogICAgICBkZWZhdWx0OgogICAgICAgIHN3aXRjaCAoZmxhZ3MgJiBFRl9NSVBTX0FSQ0gpCiAgCXsKLUBAIC0xMTk1Niw2ICsxMTk1OSwxMCBAQCBtaXBzX3NldF9pc2FfZmxhZ3MgKGJmZCAqYWJmZCkKK0BAIC0xMTk2Myw2ICsxMTk2NiwxMCBAQCBtaXBzX3NldF9pc2FfZmxhZ3MgKGJmZCAqYWJmZCkKICAgICAgICB2YWwgPSBFX01JUFNfQVJDSF82NFIyIHwgRV9NSVBTX01BQ0hfT0NURU9OMjsKICAgICAgICBicmVhazsKICAKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgICBjYXNlIGJmZF9tYWNoX21pcHNpc2EzMjoKICAgICAgICB2YWwgPSBFX01JUFNfQVJDSF8zMjsKICAgICAgICBicmVhazsKLUBAIC0xMzk4OSw2ICsxMzk5Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19tYWNoX2V4dGVuc2lvbiBtaXBzX21hY2hfZXh0ZW5zaW9uc1tdID0KK0BAIC0xMzkzNiw2ICsxMzk0Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19tYWNoX2V4dGVuc2lvbiBtaXBzX21hY2hfZXh0ZW5zaW9uc1tdID0KICAgIHsgYmZkX21hY2hfbWlwc19vY3Rlb25wLCBiZmRfbWFjaF9taXBzX29jdGVvbiB9LAogICAgeyBiZmRfbWFjaF9taXBzX29jdGVvbiwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKICAgIHsgYmZkX21hY2hfbWlwc19sb29uZ3Nvbl8zYSwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKQEAgLTE0MywxMCArMTQzLDEwIEBACiAgICAvKiBNSVBTNjQgZXh0ZW5zaW9ucy4gICovCiAgICB7IGJmZF9tYWNoX21pcHNpc2E2NHIyLCBiZmRfbWFjaF9taXBzaXNhNjQgfSwKIGRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKLWluZGV4IDJiMTVmMGYyY2IuLjA5Mjc0NDcwOGUgMTAwNjQ0CitpbmRleCBhZTFjZGE5YTdiLi5mZWQwMzg3YTk0IDEwMDY0NAogLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCiArKysgYi9iaW51dGlscy9yZWFkZWxmLmMKLUBAIC0zMzM1LDYgKzMzMzUsNyBAQCBnZXRfbWFjaGluZV9mbGFncyAodW5zaWduZWQgZV9mbGFncywgdW5zaWduZWQgZV9tYWNoaW5lKQorQEAgLTMzNzAsNiArMzM3MCw3IEBAIGdldF9tYWNoaW5lX2ZsYWdzIChGaWxlZGF0YSAqIGZpbGVkYXRhLCB1bnNpZ25lZCBlX2ZsYWdzLCB1bnNpZ25lZCBlX21hY2hpbmUpCiAgCSAgICBjYXNlIEVfTUlQU19NQUNIX09DVEVPTjM6IHN0cmNhdCAoYnVmLCAiLCBvY3Rlb24zIik7IGJyZWFrOwogIAkgICAgY2FzZSBFX01JUFNfTUFDSF9YTFI6ICBzdHJjYXQgKGJ1ZiwgIiwgeGxyIik7IGJyZWFrOwogIAkgICAgY2FzZSBFX01JUFNfTUFDSF9JQU1SMjogIHN0cmNhdCAoYnVmLCAiLCBpbnRlcmFwdGl2LW1yMiIpOyBicmVhazsKQEAgLTE1NSw3ICsxNTUsNyBAQAogIAkgICAgLyogV2Ugc2ltcGx5IGlnbm9yZSB0aGUgZmllbGQgaW4gdGhpcyBjYXNlIHRvIGF2b2lkIGNvbmZ1c2lvbjoKICAJICAgICAgIE1JUFMgRUxGIGRvZXMgbm90IHNwZWNpZnkgRUZfTUlQU19NQUNILCBpdCBpcyBhIEdOVQogZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtbWlwcy5jIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKLWluZGV4IDM4MDRkZjI5NTguLjk1NzZjOTg2ZGIgMTAwNjQ0CitpbmRleCBjMTM1MTMxYjU5Li5kOGZiZGE4ZTMxIDEwMDY0NAogLS0tIGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMKICsrKyBiL2dhcy9jb25maWcvdGMtbWlwcy5jCiBAQCAtNTUyLDYgKzU1Miw3IEBAIHN0YXRpYyBpbnQgbWlwc18zMmJpdG1vZGUgPSAwOwpAQCAtMTc0LDcgKzE3NCw3IEBACiAgICAgKQogIAogIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcwotQEAgLTE5NzM4LDcgKzE5NzQwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX2NwdV9pbmZvIG1pcHNfY3B1X2luZm9fdGFibGVbXSA9CitAQCAtMTk3MzcsNyArMTk3MzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfY3B1X2luZm8gbWlwc19jcHVfaW5mb190YWJsZVtdID0KICAgIC8qIEJyb2FkY29tIFhMUC4KICAgICAgIFhMUCBpcyBtb3N0bHkgbGlrZSBYTFIsIHdpdGggdGhlIHByb21pbmVudCBleGNlcHRpb24gdGhhdCBpdCBpcwogICAgICAgTUlQUzY0UjIgcmF0aGVyIHRoYW4gTUlQUzY0LiAgKi8KQEAgLTE4NCw3ICsxODQsNyBAQAogICAgLyogTUlQUyA2NCBSZWxlYXNlIDYgKi8KICAgIHsgImk2NDAwIiwJICAgICAgMCwgQVNFX01TQSwJCUlTQV9NSVBTNjRSNiwgQ1BVX01JUFM2NFI2fSwKIGRpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlIGIvZ2FzL2NvbmZpZ3VyZQotaW5kZXggODFkZDRjYmQ5Ny4uOTViZGYzYjE5YiAxMDA3NTUKK2luZGV4IGE0MGFjMjE0NGYuLjY1YTY5OTUyNDMgMTAwNzU1CiAtLS0gYS9nYXMvY29uZmlndXJlCiArKysgYi9nYXMvY29uZmlndXJlCiBAQCAtMTI5ODksNiArMTI5ODksOSBAQCBfQUNFT0YKQEAgLTE5OCw3ICsxOTgsNyBAQAogIAkgICAgbWlwc19jcHU9cjM5MDAKICAJICAgIDs7CiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbGYvbWlwcy5oIGIvaW5jbHVkZS9lbGYvbWlwcy5oCi1pbmRleCBhNGJlYTQzZmY4Li43M2Q5MDRlMjVmIDEwMDY0NAoraW5kZXggOWRlMGI0ZTE3NS4uNzRmYzRmN2U1NSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvZWxmL21pcHMuaAogKysrIGIvaW5jbHVkZS9lbGYvbWlwcy5oCiBAQCAtMjkwLDYgKzI5MCw3IEBAIEVORF9SRUxPQ19OVU1CRVJTIChSX01JUFNfbWF4ZXh0KQpAQCAtMjEwLDcgKzIxMCw3IEBACiAgI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04zCTB4MDA4ZTAwMDAKICAjZGVmaW5lIEVfTUlQU19NQUNIXzU0MDAJMHgwMDkxMDAwMAogZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaCBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAotaW5kZXggY2VhZTllYzUwYS4uMjc2ZWUzYzZjMSAxMDA2NDQKK2luZGV4IDVlZWE3MmYxMzkuLjkwZjZkNTdlMTUgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL29wY29kZS9taXBzLmgKICsrKyBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAogQEAgLTEyNTksNiArMTI1OSw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKQEAgLTI0MSwxMCArMjQxLDEwIEBACiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICB9CiBkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKLWluZGV4IGZlN2I5MjM4YjIuLjJhZGYxMDhiMTcgMTAwNjQ0CitpbmRleCAxZDc4NDY1NTkwLi4zMDdlNzg3YjY0IDEwMDY0NAogLS0tIGEvbGQvY29uZmlndXJlLnRndAogKysrIGIvbGQvY29uZmlndXJlLnRndAotQEAgLTUxNiw2ICs1MTYsOCBAQCBtaXBzKmVsLXNkZS1lbGYqIHwgbWlwcyplbC1tdGktZWxmKiB8IG1pcHMqZWwtaW1nLWVsZiopCitAQCAtNTIxLDYgKzUyMSw4IEBAIG1pcHMqZWwtc2RlLWVsZiogfCBtaXBzKmVsLW10aS1lbGYqIHwgbWlwcyplbC1pbWctZWxmKikKICBtaXBzKi1zZGUtZWxmKiB8IG1pcHMqLW10aS1lbGYqIHwgbWlwcyotaW1nLWVsZiopCiAgCQkJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCiAgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAiIDs7CkBAIC0yNTQsNyArMjU0LDcgQEAKICAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmxyNTkwMCIKICAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKIGRpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtZGlzLmMgYi9vcGNvZGVzL21pcHMtZGlzLmMKLWluZGV4IDQ1MTk1MDA3YzEuLjRhODBhMDVkMTkgMTAwNjQ0CitpbmRleCA5ODRmY2JiODAyLi45NWIxMDdkMjE2IDEwMDY0NAogLS0tIGEvb3Bjb2Rlcy9taXBzLWRpcy5jCiArKysgYi9vcGNvZGVzL21pcHMtZGlzLmMKIEBAIC02NTUsMTMgKzY1NSwxMSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19hcmNoX2Nob2ljZSBtaXBzX2FyY2hfY2hvaWNlc1tdID0KQEAgLTI3Nyw3ICsyNzcsNyBAQAogICAgLyogVGhpcyBlbnRyeSwgbWlwczE2LCBpcyBoZXJlIG9ubHkgZm9yIElTQS9wcm9jZXNzb3Igc2VsZWN0aW9uOyBkbwogICAgICAgbm90IHByaW50IGl0cyBuYW1lLiAgKi8KIGRpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtb3BjLmMgYi9vcGNvZGVzL21pcHMtb3BjLmMKLWluZGV4IDE5ZmNhNDA4YzkuLmQwMjA2OWM1MjggMTAwNjQ0CitpbmRleCAxODBkNjEzYzkzLi42NWI3YjhjYzIzIDEwMDY0NAogLS0tIGEvb3Bjb2Rlcy9taXBzLW9wYy5jCiArKysgYi9vcGNvZGVzL21pcHMtb3BjLmMKIEBAIC0zMjgsNiArMzI4LDcgQEAgZGVjb2RlX21pcHNfb3BlcmFuZCAoY29uc3QgY2hhciAqcCkKQEAgLTM4OSw1ICszODksNSBAQAogIHsic3djMCIsCQkiRSxBKGIpIiwJMCwgICAgKGludCkgTV9TV0MwX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKICB7InN3YzEiLAkJIlQsbyhiKSIsCTB4ZTQwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTXxGUF9TLAkwLAkJSTEsCQkwLAkwIH0sCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaAppbmRleCAyNDczNzZiLi5jM2UxYjEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBlNDYyMDJiZWNhYjYyNWM2YzA4Y2FmOTFlMDhjY2JiYzFiZjc5OWM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyN2VjMjJjYTNjZDU2Y2ZkZjA2MGQyZTFmNDE0YmVkY2UyNjliMzIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQG54cC5jb20+CiBEYXRlOiBTYXQsIDExIEp1biAyMDE2IDIyOjA4OjI5IC0wNTAwCiBTdWJqZWN0OiBbUEFUQ0ggMTMvMTVdIGZpeCB0aGUgaW5jb3JyZWN0IGFzc2VtYmxpbmcgZm9yIHBwYyB3YWl0IG1uZW1vbmljCkBAIC0xMSwxMCArMTEsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9vcGNvZGVzL3BwYy1vcGMuYyBiL29wY29kZXMvcHBjLW9wYy5jCi1pbmRleCA0MjYyNjFhYjIxLi4wZDM1OTE2Y2RkIDEwMDY0NAoraW5kZXggYmIxN2YyNmMyZS4uZGJkZDc2MmI0ZSAxMDA2NDQKIC0tLSBhL29wY29kZXMvcHBjLW9wYy5jCiArKysgYi9vcGNvZGVzL3BwYy1vcGMuYwotQEAgLTQ4ODEsNyArNDg4MSw2IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKK0BAIC01MzM4LDcgKzUzMzgsNiBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7CiAgeyJsZGVweCIsCVgoMzEsMjkpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCiAgCiAgeyJ3YWl0YXNlYyIsCVgoMzEsMzApLCAgICAgIFhSVFJBUkJfTUFTSywgUE9XRVI4LAlQT1dFUjksCQl7MH19LApAQCAtMjIsNyArMjIsNyBAQAogIAogIHsibHdlcHgiLAlYKDMxLDMxKSwJWF9NQVNLLAkgIEU1MDBNQ3xQUENBMiwgMCwJCXtSVCwgUkEwLCBSQn19LAogIAotQEAgLTQ5MzUsNyArNDkzNCw3IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKK0BAIC01MzkyLDcgKzUzOTEsNyBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7CiAgCiAgeyJ3YWl0cnN2IiwJWCgzMSw2Mil8KDE8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKICB7IndhaXRpbXBsIiwJWCgzMSw2Mil8KDI8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKQEAgLTMyLDUgKzMyLDUgQEAKICB7ImRjYnN0ZXAiLAlYUlQoMzEsNjMsMCksCVhSVF9NQVNLLCAgICBFNTAwTUN8UFBDQTIsIDAsCQl7UkEwLCBSQn19LAogIAogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKaW5kZXggNDJiMTA2NS4uY2YzNjkwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYmYyMGQ1ODIzNjYyZDFmMmViNDdkZTJjZGZkMTczNjI3YTIwNWIxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2RmYmQ2ODg5ZDg2OGEwOWQ2OTVkZDI3MzYxMDQ4NDhjMWE5YzljMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDMxIE1hciAyMDE3IDExOjQyOjAzIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMTQvMTVdIERldGVjdCA2NC1iaXQgTUlQUyB0YXJnZXRzCkBAIC0xNCw3ICsxNCw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2dvbGQvY29uZmlndXJlLnRndCBiL2dvbGQvY29uZmlndXJlLnRndAotaW5kZXggM2Q2MzAyNzI5Ny4uYzFmOTJhMTM2MCAxMDA2NDQKK2luZGV4IDhhZWYyMmEzMTguLjcwMzAwMjZmZmEgMTAwNjQ0CiAtLS0gYS9nb2xkL2NvbmZpZ3VyZS50Z3QKICsrKyBiL2dvbGQvY29uZmlndXJlLnRndAogQEAgLTE1Myw2ICsxNTMsMTMgQEAgYWFyY2g2NCotKikKQEAgLTQ2LDUgKzQ2LDUgQEAKICAgdGFyZ19vYmo9bWlwcwogICB0YXJnX21hY2hpbmU9RU1fTUlQUwogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCmluZGV4IDJjODkwMGMuLjhjOWZkMjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA5YjQ1NmEwZTRmMjg0ZmQ0MWFjMzY1OTUxNDRlZDQ0ZGM4MjQxMGVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyOTg4MDRmNDMwOTM5ZDZjYzk0YjA5NzMyZWU5M2U2NGM1ZTZiZTE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIERhdGU6IE1vbiwgNiBNYXIgMjAxNyAyMzozMzoyNyAtMDgwMAogU3ViamVjdDogW1BBVENIIDE1LzE1XSBzeW5jIHdpdGggT0UgbGlidG9vbCBjaGFuZ2VzCkBAIC04NSw1ICs4NSw1IEBACiAgCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgogIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjI5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4yOS4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb24vbTQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uL200LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTM5ZGE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb24vbTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MTQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSMKLSMgUGF0Y2ggbWFuYWdlZCBieSBodHRwOi8vd3d3Lm1uLWxvZ2lzdGlrLmRlL3Vuc3VwcG9ydGVkL3B4YTI1MC9wYXRjaGVyCi0jCi0KLUluZGV4OiBiaXNvbi0yLjQuMi9tNC9sY21lc3NhZ2UubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBiaXNvbi0yLjQuMi9tNC9sY21lc3NhZ2UubTQKLUBAIC0wLDAgKzEsMzIgQEAKLSsjIGxjbWVzc2FnZS5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjExLjMpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KLSsKLStkbmwgQXV0aG9yczoKLStkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS4KLSsKLSsjIENoZWNrIHdoZXRoZXIgTENfTUVTU0FHRVMgaXMgYXZhaWxhYmxlIGluIDxsb2NhbGUuaD4uCi0rCi0rQUNfREVGVU4oW0FNX0xDX01FU1NBR0VTXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIExDX01FU1NBR0VTXSwgYW1fY3ZfdmFsX0xDX01FU1NBR0VTLAotKyAgICBbQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsb2NhbGUuaD5dLCBbcmV0dXJuIExDX01FU1NBR0VTXSwKLSsgICAgICAgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPXllcywgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPW5vKV0pCi0rICBpZiB0ZXN0ICRhbV9jdl92YWxfTENfTUVTU0FHRVMgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfTENfTUVTU0FHRVMsIDEsCi0rICAgICAgW0RlZmluZSBpZiB5b3VyIDxsb2NhbGUuaD4gZmlsZSBkZWZpbmVzIExDX01FU1NBR0VTLl0pCi0rICBmaQotK10pCi1JbmRleDogYmlzb24tMi40LjIvbTQvdWludG1heF90Lm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYmlzb24tMi40LjIvbTQvdWludG1heF90Lm00Ci1AQCAtMCwwICsxLDI5IEBACi0rIyB1aW50bWF4X3QubTQgc2VyaWFsIDYgKGdldHRleHQtMC4xMSkKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBQYXVsIEVnZ2VydC4KLSsKLStBQ19QUkVSRVEoMi4xMykKLSsKLSsjIERlZmluZSB1aW50bWF4X3QgdG8gYHVuc2lnbmVkIGxvbmcnIG9yIGB1bnNpZ25lZCBsb25nIGxvbmcnCi0rIyBpZiA8aW50dHlwZXMuaD4gZG9lcyBub3QgZXhpc3QuCi0rCi0rQUNfREVGVU4oW2ptX0FDX1RZUEVfVUlOVE1BWF9UXSwKLStbCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfSU5UVFlQRVNfSF0pCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfU1RESU5UX0hdKQotKyAgaWYgdGVzdCAkam1fYWNfY3ZfaGVhZGVyX2ludHR5cGVzX2ggPSBubyAmJiB0ZXN0ICRqbV9hY19jdl9oZWFkZXJfc3RkaW50X2ggPSBubzsgdGhlbgotKyAgICBBQ19SRVFVSVJFKFtqbV9BQ19UWVBFX1VOU0lHTkVEX0xPTkdfTE9OR10pCi0rICAgIHRlc3QgJGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nID0geWVzIFwKLSsgICAgICAmJiBhY190eXBlPSd1bnNpZ25lZCBsb25nIGxvbmcnIFwKLSsgICAgICB8fCBhY190eXBlPSd1bnNpZ25lZCBsb25nJwotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQodWludG1heF90LCAkYWNfdHlwZSwKLSsgIFtEZWZpbmUgdG8gdW5zaWduZWQgbG9uZyBvciB1bnNpZ25lZCBsb25nIGxvbmcKLSsgICBpZiA8aW50dHlwZXMuaD4gYW5kIDxzdGRpbnQuaD4gZG9uJ3QgZGVmaW5lLl0pCi0rICBmaQotK10pCi1JbmRleDogYmlzb24tMi40LjIvbTQvdWxvbmdsb25nLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYmlzb24tMi40LjIvbTQvdWxvbmdsb25nLm00Ci1AQCAtMCwwICsxLDIzIEBACi0rIyB1bG9uZ2xvbmcubTQgc2VyaWFsIDIgKGZpbGV1dGlscy00LjAuMzIsIGdldHRleHQtMC4xMC40MCkKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBQYXVsIEVnZ2VydC4KLSsKLStBQ19ERUZVTihbam1fQUNfVFlQRV9VTlNJR05FRF9MT05HX0xPTkddLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgdW5zaWduZWQgbG9uZyBsb25nXSwgYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmcsCi0rICBbQUNfVFJZX0xJTksoW3Vuc2lnbmVkIGxvbmcgbG9uZyB1bGwgPSAxOyBpbnQgaSA9IDYzO10sCi0rICAgIFt1bnNpZ25lZCBsb25nIGxvbmcgdWxsbWF4ID0gKHVuc2lnbmVkIGxvbmcgbG9uZykgLTE7Ci0rICAgICByZXR1cm4gdWxsIDw8IGkgfCB1bGwgPj4gaSB8IHVsbG1heCAvIHVsbCB8IHVsbG1heCAlIHVsbDtdLAotKyAgICBhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZz15ZXMsCi0rICAgIGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nPW5vKV0pCi0rICBpZiB0ZXN0ICRhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZyA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9VTlNJR05FRF9MT05HX0xPTkcsIDEsCi0rICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdW5zaWduZWQgbG9uZyBsb25nIHR5cGUuXSkKLSsgIGZpCi0rXSkKLUluZGV4OiBiaXNvbi0yLjQuMi9tNC9pbnRkaXYwLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYmlzb24tMi40LjIvbTQvaW50ZGl2MC5tNAotQEAgLTAsMCArMSw3MiBAQAotKyMgaW50ZGl2MC5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjExLjMpCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStBQ19ERUZVTihbZ3RfSU5URElWMF0sCi0rWwotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCi0rCi0rICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIFNJR0ZQRV0sCi0rICAgIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlLAotKyAgICBbCi0rICAgICAgQUNfVFJZX1JVTihbCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzaWduYWwuaD4KLSsKLStzdGF0aWMgdm9pZAotKyNpZmRlZiBfX2NwbHVzcGx1cwotK3NpZ2ZwZV9oYW5kbGVyIChpbnQgc2lnKQotKyNlbHNlCi0rc2lnZnBlX2hhbmRsZXIgKHNpZykgaW50IHNpZzsKLSsjZW5kaWYKLSt7Ci0rICAvKiBFeGl0IHdpdGggY29kZSAwIGlmIFNJR0ZQRSwgd2l0aCBjb2RlIDEgaWYgYW55IG90aGVyIHNpZ25hbC4gICovCi0rICBleGl0IChzaWcgIT0gU0lHRlBFKTsKLSt9Ci0rCi0raW50IHggPSAxOwotK2ludCB5ID0gMDsKLStpbnQgejsKLStpbnQgbmFuOwotKwotK2ludCBtYWluICgpCi0rewotKyAgc2lnbmFsIChTSUdGUEUsIHNpZ2ZwZV9oYW5kbGVyKTsKLSsvKiBJUklYIGFuZCBBSVggKHdoZW4gInhsYyAtcWNoZWNrIiBpcyB1c2VkKSB5aWVsZCBzaWduYWwgU0lHVFJBUC4gICovCi0rI2lmIChkZWZpbmVkIChfX3NnaSkgfHwgZGVmaW5lZCAoX0FJWCkpICYmIGRlZmluZWQgKFNJR1RSQVApCi0rICBzaWduYWwgKFNJR1RSQVAsIHNpZ2ZwZV9oYW5kbGVyKTsKLSsjZW5kaWYKLSsvKiBMaW51eC9TUEFSQyB5aWVsZHMgc2lnbmFsIFNJR0lMTC4gICovCi0rI2lmIGRlZmluZWQgKF9fc3BhcmNfXykgJiYgZGVmaW5lZCAoX19saW51eF9fKQotKyAgc2lnbmFsIChTSUdJTEwsIHNpZ2ZwZV9oYW5kbGVyKTsKLSsjZW5kaWYKLSsKLSsgIHogPSB4IC8geTsKLSsgIG5hbiA9IHkgLyB5OwotKyAgZXhpdCAoMSk7Ci0rfQotK10sIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPXllcywgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9bm8sCi0rICAgICAgICBbCi0rICAgICAgICAgICMgR3Vlc3MgYmFzZWQgb24gdGhlIENQVS4KLSsgICAgICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotKyAgICAgICAgICAgIGFscGhhKiB8IGlbMzQ1NjddODYgfCBtNjhrIHwgczM5MCopCi0rICAgICAgICAgICAgICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT0iZ3Vlc3NpbmcgeWVzIjs7Ci0rICAgICAgICAgICAgKikKLSsgICAgICAgICAgICAgIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPSJndWVzc2luZyBubyI7OwotKyAgICAgICAgICBlc2FjCi0rICAgICAgICBdKQotKyAgICBdKQotKyAgY2FzZSAiJGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlIiBpbgotKyAgICAqeWVzKSB2YWx1ZT0xOzsKLSsgICAgKikgdmFsdWU9MDs7Ci0rICBlc2FjCi0rICBBQ19ERUZJTkVfVU5RVU9URUQoSU5URElWMF9SQUlTRVNfU0lHRlBFLCAkdmFsdWUsCi0rICAgIFtEZWZpbmUgaWYgaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyBzaWduYWwgU0lHRlBFLl0pCi0rXSkKLUluZGV4OiBiaXNvbi0yLjQuMi9tNC9nbGliLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYmlzb24tMi40LjIvbTQvZ2xpYi5tNAotQEAgLTAsMCArMSwxOTYgQEAKLSsjIENvbmZpZ3VyZSBwYXRocyBmb3IgR0xJQgotKyMgT3dlbiBUYXlsb3IgICAgIDk3LTExLTMKLSsKLStkbmwgQU1fUEFUSF9HTElCKFtNSU5JTVVNLVZFUlNJT04sIFtBQ1RJT04tSUYtRk9VTkQgWywgQUNUSU9OLUlGLU5PVC1GT1VORCBbLCBNT0RVTEVTXV1dXSkKLStkbmwgVGVzdCBmb3IgR0xJQiwgYW5kIGRlZmluZSBHTElCX0NGTEFHUyBhbmQgR0xJQl9MSUJTLCBpZiAiZ21vZHVsZSIgb3IgCi0rZG5sIGd0aHJlYWQgaXMgc3BlY2lmaWVkIGluIE1PRFVMRVMsIHBhc3MgdG8gZ2xpYi1jb25maWcKLStkbmwKLStBQ19ERUZVTihBTV9QQVRIX0dMSUIsCi0rW2RubCAKLStkbmwgR2V0IHRoZSBjZmxhZ3MgYW5kIGxpYnJhcmllcyBmcm9tIHRoZSBnbGliLWNvbmZpZyBzY3JpcHQKLStkbmwKLStBQ19BUkdfV0lUSChnbGliLXByZWZpeCxbICAtLXdpdGgtZ2xpYi1wcmVmaXg9UEZYICAgUHJlZml4IHdoZXJlIEdMSUIgaXMgaW5zdGFsbGVkIChvcHRpb25hbCldLAotKyAgICAgICAgICAgIGdsaWJfY29uZmlnX3ByZWZpeD0iJHdpdGh2YWwiLCBnbGliX2NvbmZpZ19wcmVmaXg9IiIpCi0rQUNfQVJHX1dJVEgoZ2xpYi1leGVjLXByZWZpeCxbICAtLXdpdGgtZ2xpYi1leGVjLXByZWZpeD1QRlggRXhlYyBwcmVmaXggd2hlcmUgR0xJQiBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0sCi0rICAgICAgICAgICAgZ2xpYl9jb25maWdfZXhlY19wcmVmaXg9IiR3aXRodmFsIiwgZ2xpYl9jb25maWdfZXhlY19wcmVmaXg9IiIpCi0rQUNfQVJHX0VOQUJMRShnbGlidGVzdCwgWyAgLS1kaXNhYmxlLWdsaWJ0ZXN0ICAgICAgIERvIG5vdCB0cnkgdG8gY29tcGlsZSBhbmQgcnVuIGEgdGVzdCBHTElCIHByb2dyYW1dLAotKwkJICAgICwgZW5hYmxlX2dsaWJ0ZXN0PXllcykKLSsKLSsgIGlmIHRlc3QgeCRnbGliX2NvbmZpZ19leGVjX3ByZWZpeCAhPSB4IDsgdGhlbgotKyAgICAgZ2xpYl9jb25maWdfYXJncz0iJGdsaWJfY29uZmlnX2FyZ3MgLS1leGVjLXByZWZpeD0kZ2xpYl9jb25maWdfZXhlY19wcmVmaXgiCi0rICAgICBpZiB0ZXN0IHgke0dMSUJfQ09ORklHK3NldH0gIT0geHNldCA7IHRoZW4KLSsgICAgICAgIEdMSUJfQ09ORklHPSRnbGliX2NvbmZpZ19leGVjX3ByZWZpeC9iaW4vZ2xpYi1jb25maWcKLSsgICAgIGZpCi0rICBmaQotKyAgaWYgdGVzdCB4JGdsaWJfY29uZmlnX3ByZWZpeCAhPSB4IDsgdGhlbgotKyAgICAgZ2xpYl9jb25maWdfYXJncz0iJGdsaWJfY29uZmlnX2FyZ3MgLS1wcmVmaXg9JGdsaWJfY29uZmlnX3ByZWZpeCIKLSsgICAgIGlmIHRlc3QgeCR7R0xJQl9DT05GSUcrc2V0fSAhPSB4c2V0IDsgdGhlbgotKyAgICAgICAgR0xJQl9DT05GSUc9JGdsaWJfY29uZmlnX3ByZWZpeC9iaW4vZ2xpYi1jb25maWcKLSsgICAgIGZpCi0rICBmaQotKwotKyAgZm9yIG1vZHVsZSBpbiAuICQ0Ci0rICBkbwotKyAgICAgIGNhc2UgIiRtb2R1bGUiIGluCi0rICAgICAgICAgZ21vZHVsZSkgCi0rICAgICAgICAgICAgIGdsaWJfY29uZmlnX2FyZ3M9IiRnbGliX2NvbmZpZ19hcmdzIGdtb2R1bGUiCi0rICAgICAgICAgOzsKLSsgICAgICAgICBndGhyZWFkKSAKLSsgICAgICAgICAgICAgZ2xpYl9jb25maWdfYXJncz0iJGdsaWJfY29uZmlnX2FyZ3MgZ3RocmVhZCIKLSsgICAgICAgICA7OwotKyAgICAgIGVzYWMKLSsgIGRvbmUKLSsKLSsgIEFDX1BBVEhfUFJPRyhHTElCX0NPTkZJRywgZ2xpYi1jb25maWcsIG5vKQotKyAgbWluX2dsaWJfdmVyc2lvbj1pZmVsc2UoWyQxXSwgLDAuOTkuNywkMSkKLSsgIEFDX01TR19DSEVDS0lORyhmb3IgR0xJQiAtIHZlcnNpb24gPj0gJG1pbl9nbGliX3ZlcnNpb24pCi0rICBub19nbGliPSIiCi0rICBpZiB0ZXN0ICIkR0xJQl9DT05GSUciID0gIm5vIiA7IHRoZW4KLSsgICAgbm9fZ2xpYj15ZXMKLSsgIGVsc2UKLSsgICAgR0xJQl9DRkxBR1M9YCRHTElCX0NPTkZJRyAkZ2xpYl9jb25maWdfYXJncyAtLWNmbGFnc2AKLSsgICAgR0xJQl9MSUJTPWAkR0xJQl9DT05GSUcgJGdsaWJfY29uZmlnX2FyZ3MgLS1saWJzYAotKyAgICBnbGliX2NvbmZpZ19tYWpvcl92ZXJzaW9uPWAkR0xJQl9DT05GSUcgJGdsaWJfY29uZmlnX2FyZ3MgLS12ZXJzaW9uIHwgXAotKyAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKS5cKFtbMC05XV0qXCkuXChbWzAtOV1dKlwpL1wxLydgCi0rICAgIGdsaWJfY29uZmlnX21pbm9yX3ZlcnNpb249YCRHTElCX0NPTkZJRyAkZ2xpYl9jb25maWdfYXJncyAtLXZlcnNpb24gfCBcCi0rICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpLlwoW1swLTldXSpcKS5cKFtbMC05XV0qXCkvXDIvJ2AKLSsgICAgZ2xpYl9jb25maWdfbWljcm9fdmVyc2lvbj1gJEdMSUJfQ09ORklHICRnbGliX2NvbmZpZ19hcmdzIC0tdmVyc2lvbiB8IFwKLSsgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXCkuXChbWzAtOV1dKlwpLlwoW1swLTldXSpcKS9cMy8nYAotKyAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9nbGlidGVzdCIgPSAieHllcyIgOyB0aGVuCi0rICAgICAgYWNfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rICAgICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKLSsgICAgICBDRkxBR1M9IiRDRkxBR1MgJEdMSUJfQ0ZMQUdTIgotKyAgICAgIExJQlM9IiRHTElCX0xJQlMgJExJQlMiCi0rZG5sCi0rZG5sIE5vdyBjaGVjayBpZiB0aGUgaW5zdGFsbGVkIEdMSUIgaXMgc3VmZmljaWVudGx5IG5ldy4gKEFsc28gc2FuaXR5Ci0rZG5sIGNoZWNrcyB0aGUgcmVzdWx0cyBvZiBnbGliLWNvbmZpZyB0byBzb21lIGV4dGVudAotK2RubAotKyAgICAgIHJtIC1mIGNvbmYuZ2xpYnRlc3QKLSsgICAgICBBQ19UUllfUlVOKFsKLSsjaW5jbHVkZSA8Z2xpYi5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsKLStpbnQgCi0rbWFpbiAoKQotK3sKLSsgIGludCBtYWpvciwgbWlub3IsIG1pY3JvOwotKyAgY2hhciAqdG1wX3ZlcnNpb247Ci0rCi0rICBzeXN0ZW0gKCJ0b3VjaCBjb25mLmdsaWJ0ZXN0Iik7Ci0rCi0rICAvKiBIUC9VWCA5ICglQCMhKSB3cml0ZXMgdG8gc3NjYW5mIHN0cmluZ3MgKi8KLSsgIHRtcF92ZXJzaW9uID0gZ19zdHJkdXAoIiRtaW5fZ2xpYl92ZXJzaW9uIik7Ci0rICBpZiAoc3NjYW5mKHRtcF92ZXJzaW9uLCAiJWQuJWQuJWQiLCAmbWFqb3IsICZtaW5vciwgJm1pY3JvKSAhPSAzKSB7Ci0rICAgICBwcmludGYoIiVzLCBiYWQgdmVyc2lvbiBzdHJpbmdcbiIsICIkbWluX2dsaWJfdmVyc2lvbiIpOwotKyAgICAgZXhpdCgxKTsKLSsgICB9Ci0rCi0rICBpZiAoKGdsaWJfbWFqb3JfdmVyc2lvbiAhPSAkZ2xpYl9jb25maWdfbWFqb3JfdmVyc2lvbikgfHwKLSsgICAgICAoZ2xpYl9taW5vcl92ZXJzaW9uICE9ICRnbGliX2NvbmZpZ19taW5vcl92ZXJzaW9uKSB8fAotKyAgICAgIChnbGliX21pY3JvX3ZlcnNpb24gIT0gJGdsaWJfY29uZmlnX21pY3JvX3ZlcnNpb24pKQotKyAgICB7Ci0rICAgICAgcHJpbnRmKCJcbioqKiAnZ2xpYi1jb25maWcgLS12ZXJzaW9uJyByZXR1cm5lZCAlZC4lZC4lZCwgYnV0IEdMSUIgKCVkLiVkLiVkKVxuIiwgCi0rICAgICAgICAgICAgICRnbGliX2NvbmZpZ19tYWpvcl92ZXJzaW9uLCAkZ2xpYl9jb25maWdfbWlub3JfdmVyc2lvbiwgJGdsaWJfY29uZmlnX21pY3JvX3ZlcnNpb24sCi0rICAgICAgICAgICAgIGdsaWJfbWFqb3JfdmVyc2lvbiwgZ2xpYl9taW5vcl92ZXJzaW9uLCBnbGliX21pY3JvX3ZlcnNpb24pOwotKyAgICAgIHByaW50ZiAoIioqKiB3YXMgZm91bmQhIElmIGdsaWItY29uZmlnIHdhcyBjb3JyZWN0LCB0aGVuIGl0IGlzIGJlc3RcbiIpOwotKyAgICAgIHByaW50ZiAoIioqKiB0byByZW1vdmUgdGhlIG9sZCB2ZXJzaW9uIG9mIEdMSUIuIFlvdSBtYXkgYWxzbyBiZSBhYmxlIHRvIGZpeCB0aGUgZXJyb3JcbiIpOwotKyAgICAgIHByaW50ZigiKioqIGJ5IG1vZGlmeWluZyB5b3VyIExEX0xJQlJBUllfUEFUSCBlbnZpcm9tZW50IHZhcmlhYmxlLCBvciBieSBlZGl0aW5nXG4iKTsKLSsgICAgICBwcmludGYoIioqKiAvZXRjL2xkLnNvLmNvbmYuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBydW4gbGRjb25maWcgaWYgdGhhdCBpc1xuIik7Ci0rICAgICAgcHJpbnRmKCIqKiogcmVxdWlyZWQgb24geW91ciBzeXN0ZW0uXG4iKTsKLSsgICAgICBwcmludGYoIioqKiBJZiBnbGliLWNvbmZpZyB3YXMgd3JvbmcsIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgR0xJQl9DT05GSUdcbiIpOwotKyAgICAgIHByaW50ZigiKioqIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IGNvcHkgb2YgZ2xpYi1jb25maWcsIGFuZCByZW1vdmUgdGhlIGZpbGUgY29uZmlnLmNhY2hlXG4iKTsKLSsgICAgICBwcmludGYoIioqKiBiZWZvcmUgcmUtcnVubmluZyBjb25maWd1cmVcbiIpOwotKyAgICB9IAotKyAgZWxzZSBpZiAoKGdsaWJfbWFqb3JfdmVyc2lvbiAhPSBHTElCX01BSk9SX1ZFUlNJT04pIHx8Ci0rCSAgIChnbGliX21pbm9yX3ZlcnNpb24gIT0gR0xJQl9NSU5PUl9WRVJTSU9OKSB8fAotKyAgICAgICAgICAgKGdsaWJfbWljcm9fdmVyc2lvbiAhPSBHTElCX01JQ1JPX1ZFUlNJT04pKQotKyAgICB7Ci0rICAgICAgcHJpbnRmKCIqKiogR0xJQiBoZWFkZXIgZmlsZXMgKHZlcnNpb24gJWQuJWQuJWQpIGRvIG5vdCBtYXRjaFxuIiwKLSsJICAgICBHTElCX01BSk9SX1ZFUlNJT04sIEdMSUJfTUlOT1JfVkVSU0lPTiwgR0xJQl9NSUNST19WRVJTSU9OKTsKLSsgICAgICBwcmludGYoIioqKiBsaWJyYXJ5ICh2ZXJzaW9uICVkLiVkLiVkKVxuIiwKLSsJICAgICBnbGliX21ham9yX3ZlcnNpb24sIGdsaWJfbWlub3JfdmVyc2lvbiwgZ2xpYl9taWNyb192ZXJzaW9uKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgaWYgKChnbGliX21ham9yX3ZlcnNpb24gPiBtYWpvcikgfHwKLSsgICAgICAgICgoZ2xpYl9tYWpvcl92ZXJzaW9uID09IG1ham9yKSAmJiAoZ2xpYl9taW5vcl92ZXJzaW9uID4gbWlub3IpKSB8fAotKyAgICAgICAgKChnbGliX21ham9yX3ZlcnNpb24gPT0gbWFqb3IpICYmIChnbGliX21pbm9yX3ZlcnNpb24gPT0gbWlub3IpICYmIChnbGliX21pY3JvX3ZlcnNpb24gPj0gbWljcm8pKSkKLSsgICAgICB7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgfQotKyAgICAgZWxzZQotKyAgICAgIHsKLSsgICAgICAgIHByaW50ZigiXG4qKiogQW4gb2xkIHZlcnNpb24gb2YgR0xJQiAoJWQuJWQuJWQpIHdhcyBmb3VuZC5cbiIsCi0rICAgICAgICAgICAgICAgZ2xpYl9tYWpvcl92ZXJzaW9uLCBnbGliX21pbm9yX3ZlcnNpb24sIGdsaWJfbWljcm9fdmVyc2lvbik7Ci0rICAgICAgICBwcmludGYoIioqKiBZb3UgbmVlZCBhIHZlcnNpb24gb2YgR0xJQiBuZXdlciB0aGFuICVkLiVkLiVkLiBUaGUgbGF0ZXN0IHZlcnNpb24gb2ZcbiIsCi0rCSAgICAgICBtYWpvciwgbWlub3IsIG1pY3JvKTsKLSsgICAgICAgIHByaW50ZigiKioqIEdMSUIgaXMgYWx3YXlzIGF2YWlsYWJsZSBmcm9tIGZ0cDovL2Z0cC5ndGsub3JnLlxuIik7Ci0rICAgICAgICBwcmludGYoIioqKlxuIik7Ci0rICAgICAgICBwcmludGYoIioqKiBJZiB5b3UgaGF2ZSBhbHJlYWR5IGluc3RhbGxlZCBhIHN1ZmZpY2llbnRseSBuZXcgdmVyc2lvbiwgdGhpcyBlcnJvclxuIik7Ci0rICAgICAgICBwcmludGYoIioqKiBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB3cm9uZyBjb3B5IG9mIHRoZSBnbGliLWNvbmZpZyBzaGVsbCBzY3JpcHQgaXNcbiIpOwotKyAgICAgICAgcHJpbnRmKCIqKiogYmVpbmcgZm91bmQuIFRoZSBlYXNpZXN0IHdheSB0byBmaXggdGhpcyBpcyB0byByZW1vdmUgdGhlIG9sZCB2ZXJzaW9uXG4iKTsKLSsgICAgICAgIHByaW50ZigiKioqIG9mIEdMSUIsIGJ1dCB5b3UgY2FuIGFsc28gc2V0IHRoZSBHTElCX0NPTkZJRyBlbnZpcm9ubWVudCB0byBwb2ludCB0byB0aGVcbiIpOwotKyAgICAgICAgcHJpbnRmKCIqKiogY29ycmVjdCBjb3B5IG9mIGdsaWItY29uZmlnLiAoSW4gdGhpcyBjYXNlLCB5b3Ugd2lsbCBoYXZlIHRvXG4iKTsKLSsgICAgICAgIHByaW50ZigiKioqIG1vZGlmeSB5b3VyIExEX0xJQlJBUllfUEFUSCBlbnZpcm9tZW50IHZhcmlhYmxlLCBvciBlZGl0IC9ldGMvbGQuc28uY29uZlxuIik7Ci0rICAgICAgICBwcmludGYoIioqKiBzbyB0aGF0IHRoZSBjb3JyZWN0IGxpYnJhcmllcyBhcmUgZm91bmQgYXQgcnVuLXRpbWUpKVxuIik7Ci0rICAgICAgfQotKyAgICB9Ci0rICByZXR1cm4gMTsKLSt9Ci0rXSwsIG5vX2dsaWI9eWVzLFtlY2hvICRhY19uICJjcm9zcyBjb21waWxpbmc7IGFzc3VtZWQgT0suLi4gJGFjX2MiXSkKLSsgICAgICAgQ0ZMQUdTPSIkYWNfc2F2ZV9DRkxBR1MiCi0rICAgICAgIExJQlM9IiRhY19zYXZlX0xJQlMiCi0rICAgICBmaQotKyAgZmkKLSsgIGlmIHRlc3QgIngkbm9fZ2xpYiIgPSB4IDsgdGhlbgotKyAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0rICAgICBpZmVsc2UoWyQyXSwgLCA6LCBbJDJdKSAgICAgCi0rICBlbHNlCi0rICAgICBBQ19NU0dfUkVTVUxUKG5vKQotKyAgICAgaWYgdGVzdCAiJEdMSUJfQ09ORklHIiA9ICJubyIgOyB0aGVuCi0rICAgICAgIGVjaG8gIioqKiBUaGUgZ2xpYi1jb25maWcgc2NyaXB0IGluc3RhbGxlZCBieSBHTElCIGNvdWxkIG5vdCBiZSBmb3VuZCIKLSsgICAgICAgZWNobyAiKioqIElmIEdMSUIgd2FzIGluc3RhbGxlZCBpbiBQUkVGSVgsIG1ha2Ugc3VyZSBQUkVGSVgvYmluIGlzIGluIgotKyAgICAgICBlY2hvICIqKiogeW91ciBwYXRoLCBvciBzZXQgdGhlIEdMSUJfQ09ORklHIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSIKLSsgICAgICAgZWNobyAiKioqIGZ1bGwgcGF0aCB0byBnbGliLWNvbmZpZy4iCi0rICAgICBlbHNlCi0rICAgICAgIGlmIHRlc3QgLWYgY29uZi5nbGlidGVzdCA7IHRoZW4KLSsgICAgICAgIDoKLSsgICAgICAgZWxzZQotKyAgICAgICAgICBlY2hvICIqKiogQ291bGQgbm90IHJ1biBHTElCIHRlc3QgcHJvZ3JhbSwgY2hlY2tpbmcgd2h5Li4uIgotKyAgICAgICAgICBDRkxBR1M9IiRDRkxBR1MgJEdMSUJfQ0ZMQUdTIgotKyAgICAgICAgICBMSUJTPSIkTElCUyAkR0xJQl9MSUJTIgotKyAgICAgICAgICBBQ19UUllfTElOSyhbCi0rI2luY2x1ZGUgPGdsaWIuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLStdLCAgICAgIFsgcmV0dXJuICgoZ2xpYl9tYWpvcl92ZXJzaW9uKSB8fCAoZ2xpYl9taW5vcl92ZXJzaW9uKSB8fCAoZ2xpYl9taWNyb192ZXJzaW9uKSk7IF0sCi0rICAgICAgICBbIGVjaG8gIioqKiBUaGUgdGVzdCBwcm9ncmFtIGNvbXBpbGVkLCBidXQgZGlkIG5vdCBydW4uIFRoaXMgdXN1YWxseSBtZWFucyIKLSsgICAgICAgICAgZWNobyAiKioqIHRoYXQgdGhlIHJ1bi10aW1lIGxpbmtlciBpcyBub3QgZmluZGluZyBHTElCIG9yIGZpbmRpbmcgdGhlIHdyb25nIgotKyAgICAgICAgICBlY2hvICIqKiogdmVyc2lvbiBvZiBHTElCLiBJZiBpdCBpcyBub3QgZmluZGluZyBHTElCLCB5b3UnbGwgbmVlZCB0byBzZXQgeW91ciIKLSsgICAgICAgICAgZWNobyAiKioqIExEX0xJQlJBUllfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgb3IgZWRpdCAvZXRjL2xkLnNvLmNvbmYgdG8gcG9pbnQiCi0rICAgICAgICAgIGVjaG8gIioqKiB0byB0aGUgaW5zdGFsbGVkIGxvY2F0aW9uICBBbHNvLCBtYWtlIHN1cmUgeW91IGhhdmUgcnVuIGxkY29uZmlnIGlmIHRoYXQiCi0rICAgICAgICAgIGVjaG8gIioqKiBpcyByZXF1aXJlZCBvbiB5b3VyIHN5c3RlbSIKLSsJICBlY2hvICIqKioiCi0rICAgICAgICAgIGVjaG8gIioqKiBJZiB5b3UgaGF2ZSBhbiBvbGQgdmVyc2lvbiBpbnN0YWxsZWQsIGl0IGlzIGJlc3QgdG8gcmVtb3ZlIGl0LCBhbHRob3VnaCIKLSsgICAgICAgICAgZWNobyAiKioqIHlvdSBtYXkgYWxzbyBiZSBhYmxlIHRvIGdldCB0aGluZ3MgdG8gd29yayBieSBtb2RpZnlpbmcgTERfTElCUkFSWV9QQVRIIgotKyAgICAgICAgICBlY2hvICIqKioiCi0rICAgICAgICAgIGVjaG8gIioqKiBJZiB5b3UgaGF2ZSBhIFJlZEhhdCA1LjAgc3lzdGVtLCB5b3Ugc2hvdWxkIHJlbW92ZSB0aGUgR1RLIHBhY2thZ2UgdGhhdCIKLSsgICAgICAgICAgZWNobyAiKioqIGNhbWUgd2l0aCB0aGUgc3lzdGVtIHdpdGggdGhlIGNvbW1hbmQiCi0rICAgICAgICAgIGVjaG8gIioqKiIKLSsgICAgICAgICAgZWNobyAiKioqICAgIHJwbSAtLWVyYXNlIC0tbm9kZXBzIGd0ayBndGstZGV2ZWwiIF0sCi0rICAgICAgICBbIGVjaG8gIioqKiBUaGUgdGVzdCBwcm9ncmFtIGZhaWxlZCB0byBjb21waWxlIG9yIGxpbmsuIFNlZSB0aGUgZmlsZSBjb25maWcubG9nIGZvciB0aGUiCi0rICAgICAgICAgIGVjaG8gIioqKiBleGFjdCBlcnJvciB0aGF0IG9jY3VyZWQuIFRoaXMgdXN1YWxseSBtZWFucyBHTElCIHdhcyBpbmNvcnJlY3RseSBpbnN0YWxsZWQiCi0rICAgICAgICAgIGVjaG8gIioqKiBvciB0aGF0IHlvdSBoYXZlIG1vdmVkIEdMSUIgc2luY2UgaXQgd2FzIGluc3RhbGxlZC4gSW4gdGhlIGxhdHRlciBjYXNlLCB5b3UiCi0rICAgICAgICAgIGVjaG8gIioqKiBtYXkgd2FudCB0byBlZGl0IHRoZSBnbGliLWNvbmZpZyBzY3JpcHQ6ICRHTElCX0NPTkZJRyIgXSkKLSsgICAgICAgICAgQ0ZMQUdTPSIkYWNfc2F2ZV9DRkxBR1MiCi0rICAgICAgICAgIExJQlM9IiRhY19zYXZlX0xJQlMiCi0rICAgICAgIGZpCi0rICAgICBmaQotKyAgICAgR0xJQl9DRkxBR1M9IiIKLSsgICAgIEdMSUJfTElCUz0iIgotKyAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKLSsgIGZpCi0rICBBQ19TVUJTVChHTElCX0NGTEFHUykKLSsgIEFDX1NVQlNUKEdMSUJfTElCUykKLSsgIHJtIC1mIGNvbmYuZ2xpYnRlc3QKLStdKQotSW5kZXg6IGJpc29uLTIuNC4yL200L2lzYy1wb3NpeC5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGJpc29uLTIuNC4yL200L2lzYy1wb3NpeC5tNAotQEAgLTAsMCArMSwyNiBAQAotKyMgaXNjLXBvc2l4Lm00IHNlcmlhbCAyIChnZXR0ZXh0LTAuMTEuMikKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLSsjIFRoaXMgZmlsZSBpcyBub3QgbmVlZGVkIHdpdGggYXV0b2NvbmYtMi41MyBhbmQgbmV3ZXIuICBSZW1vdmUgaXQgaW4gMjAwNS4KLSsKLSsjIFRoaXMgdGVzdCByZXBsYWNlcyB0aGUgb25lIGluIGF1dG9jb25mLgotKyMgQ3VycmVudGx5IHRoaXMgbWFjcm8gc2hvdWxkIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyB0aGUgYXV0b2NvbmYgbWFjcm8KLSsjIGJlY2F1c2UgZ2V0dGV4dCdzIGdldHRleHQubTQgKGRpc3RyaWJ1dGVkIGluIHRoZSBhdXRvbWFrZSBwYWNrYWdlKQotKyMgc3RpbGwgdXNlcyBpdC4gIE90aGVyd2lzZSwgdGhlIHVzZSBpbiBnZXR0ZXh0Lm00IG1ha2VzIGF1dG9oZWFkZXIKLSsjIGdpdmUgdGhlc2UgZGlhZ25vc3RpY3M6Ci0rIyAgIGNvbmZpZ3VyZS5pbjo1NTY6IEFDX1RSWV9DT01QSUxFIHdhcyBjYWxsZWQgYmVmb3JlIEFDX0lTQ19QT1NJWAotKyMgICBjb25maWd1cmUuaW46NTU2OiBBQ19UUllfUlVOIHdhcyBjYWxsZWQgYmVmb3JlIEFDX0lTQ19QT1NJWAotKwotK3VuZGVmaW5lKFtBQ19JU0NfUE9TSVhdKQotKwotK0FDX0RFRlVOKFtBQ19JU0NfUE9TSVhdLAotKyAgWwotKyAgICBkbmwgVGhpcyB0ZXN0IHJlcGxhY2VzIHRoZSBvYnNvbGVzY2VudCBBQ19JU0NfUE9TSVgga2x1ZGdlLgotKyAgICBBQ19DSEVDS19MSUIoY3Bvc2l4LCBzdHJlcnJvciwgW0xJQlM9IiRMSUJTIC1sY3Bvc2l4Il0pCi0rICBdCi0rKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy4wLjQuYmIKaW5kZXggN2QwNjZiZS4uNTg3MjhmNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjAuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuMC40LmJiCkBAIC0xMCw3ICsxMCw2IEBACiBERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKIAogU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2Jpc29uL2Jpc29uLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9tNC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtc3JjLWxvY2FsLm1rLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaCBcCkBAIC0yMyw5ICsyMiw5IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYzM0MjIwMWRlMTA0Y2M5Y2UwYTIxZTBhZDEwZDQwMjEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTcyNDI4Yzc5MTdiZGY5ZmE5M2NiODE4MWM5NzFiNmUyMjgzNDEyNTg0OGNmMWQwM2NlMTBiMWJiMDcxNmZlMSIKIAotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSIKLQogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCisKKyMgVGhlIGF1dG9tYXRpYyBtNCBwYXRoIGRldGVjdGlvbiBnZXRzIGNvbmZ1c2VkLCBzbyBmb3JjZSB0aGUgcmlnaHQgdmFsdWUKIGFjcGF0aHMgPSAiLUkgJHtTfS9tNCIKIAogZG9fY29tcGlsZV9wcmVwZW5kKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiCmluZGV4IGEzMTAxMzUuLmIzYzg4OWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIKQEAgLTkwLDcgKzkwLDcgQEAKIAogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tbWVla3MvYm9vdGNoYXJ0LmdpdCBcCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20veHJteC9ib290Y2hhcnQuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2Jvb3RjaGFydGRfc3RvcC5zaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLU1pc3NpbmctZGVmYXVsdC12YWx1ZS1mb3ItQk9PVExPR19ERVNULnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29sbGVjdG9yLUFsbG9jYXRlLXNwYWNlLW9uLWhlYXAtZm9yLWNodW5rcy5wYXRjaCBcCkBAIC0xMzksNyArMTM5LDcgQEAKIAogUEFDS0FHRVMgPSsgInB5Ym9vdGNoYXJ0Z3VpIgogRklMRVNfcHlib290Y2hhcnRndWkgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5Ym9vdGNoYXJ0Z3VpICR7YmluZGlyfS9weWJvb3RjaGFydGd1aSIKLVJERVBFTkRTX3B5Ym9vdGNoYXJ0Z3VpID0gInB5dGhvbjMtcHljYWlybyBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtaW1hZ2UgcHl0aG9uMy10ZXh0dXRpbHMgcHl0aG9uMy1zaGVsbCBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtY29kZWNzIgorUkRFUEVORFNfcHlib290Y2hhcnRndWkgPSAicHl0aG9uMy1weWNhaXJvIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1pbWFnZSBweXRob24zLXNoZWxsIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1jb2RlY3MiCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAnc3lzdmluaXQtcGlkb2YnLCAncHJvY3BzJywgZCl9IgogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJsc2IiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHB5dGhvbjMtcHljYWlyby1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1taXNzaW5nLWhlYWRlci1pbmNsdWRlLWZvci1kZXZfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLW1pc3NpbmctaGVhZGVyLWluY2x1ZGUtZm9yLWRldl90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MDY3NmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1taXNzaW5nLWhlYWRlci1pbmNsdWRlLWZvci1kZXZfdC5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIGJjMzVjNGNhZWJiNTdjYzhiOTZjMzBjMjU0MzJiMTJjYThkYzE4ZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNiBPY3QgMjAxNyAxNTowMzo0OSArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBtdXNsIChtaXNzaW5nIGhlYWRlciBpbmNsdWRlIGZvciBkZXZfdCkuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjb252ZXJ0L3NvdXJjZS1mcy5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9jb252ZXJ0L3NvdXJjZS1mcy5oIGIvY29udmVydC9zb3VyY2UtZnMuaAoraW5kZXggMjNmMzM1Ni4uNmZkNzcwZiAxMDA2NDQKKy0tLSBhL2NvbnZlcnQvc291cmNlLWZzLmgKKysrKyBiL2NvbnZlcnQvc291cmNlLWZzLmgKK0BAIC0yMCw2ICsyMCw3IEBACisgI2luY2x1ZGUgImtlcm5jb21wYXQuaCIKKyAjaW5jbHVkZSA8bGludXgva2Rldl90Lmg+CisgI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisgI2RlZmluZSBDT05WX0lNQUdFX1NVQlZPTF9PQkpFQ1RJRCBCVFJGU19GSVJTVF9GUkVFX09CSkVDVElECisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtTWFrZWZpbGUtYnVpbGQtbWt0YWJsZXMtdXNpbmctbmF0aXZlLWdjYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoCmluZGV4IGE4MTkwMGUuLjQ2N2RlMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoCkBAIC0xMiwxOSArMTIsMTYgQEAKICBNYWtlZmlsZSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IGIzZTJiNjMuLjM0N2FhZjEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0zMjMsNyArMzIzLDcgQEAgdmVyc2lvbi5oOiB2ZXJzaW9uLnNoIHZlcnNpb24uaC5pbiBjb25maWd1cmUuYWMKK0luZGV4OiBnaXQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9NYWtlZmlsZQorKysrIGdpdC9NYWtlZmlsZQorQEAgLTM0Myw3ICszNDMsNyBAQCB2ZXJzaW9uLmg6IHZlcnNpb24uc2ggdmVyc2lvbi5oLmluIGNvbmZpCiAgCiAgbWt0YWJsZXM6IGtlcm5lbC1saWIvbWt0YWJsZXMuYwogIAlAZWNobyAiICAgIFtDQ10gICAgICRAIgogLQkkKFEpJChDQykgJChDRkxBR1MpICQ8IC1vICRACiArCSQoUSkkKEJVSUxEX0NDKSAkKEJVSUxEX0NGTEFHUykgJDwgLW8gJEAKICAKLSBrZXJuZWwtbGliL3RhYmxlcy5jOiBta3RhYmxlcwotIAlAZWNobyAiICAgIFtUQUJMRV0gICRAIgotLS0gCi0yLjEzLjIKLQorICMgdGhlIHRhcmdldCBjYW4gYmUgcmVnZW5lcmF0ZWQgbWFudWFsbHkgdXNpbmcgbWt0YWJsZXMsIGJ1dCBhIGxvY2FsIGNvcHkgaXMKKyAjIGtlcHQgc28gdGhlIGJ1aWxkIHByb2Nlc3MgaXMgc2ltcGxlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2NjODljLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiQ2hlY2tzdW1taW5nIENvcHkgb24gV3JpdGUgRmlsZXN5c3RlbSB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJCdHJmcyBpcyBhIG5ldyBjb3B5IG9uIHdyaXRlIGZpbGVzeXN0ZW0gZm9yIExpbnV4IGFpbWVkIGF0IFwKLWltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcyB3aGlsZSBmb2N1c2luZyBvbiBmYXVsdCB0b2xlcmFuY2UsIHJlcGFpciBhbmQgXAotZWFzeSBhZG1pbmlzdHJhdGlvbi4gXAotVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHV0aWxpdGllcyAobWtmcywgZnNjaywgYnRyZnNjdGwpIHVzZWQgdG8gd29yayB3aXRoIFwKLWJ0cmZzIGFuZCBhbiB1dGlsaXR5IChidHJmcy1jb252ZXJ0KSB0byBtYWtlIGEgYnRyZnMgZmlsZXN5c3RlbSBmcm9tIGFuIGV4dDMuIgotCi1IT01FUEFHRSA9ICJodHRwczovL2J0cmZzLndpa2kua2VybmVsLm9yZyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IgotU0VDVElPTiA9ICJiYXNlIgotREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGF0dHIgZTJmc3Byb2dzIGx6byBhY2wiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVkZXYiCi1SREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCi0KLVNSQ1JFViA9ICIwNjA3MTMyYzMyMDBiY2VhZDE0MjZlNmRjNjg1NDMyMDA4ZGU5NWRlIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva2RhdmUvYnRyZnMtcHJvZ3MuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtYnVpbGQtbWt0YWJsZXMtdXNpbmctbmF0aXZlLWdjYy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBtYW5wYWdlcwotCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1kb2N1bWVudGF0aW9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtYmFja3RyYWNlICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBVcHN0cmVhbSBkb2Vzbid0IHNoaXAgdGhpcyBhbmQgYXV0b3JlY29uZiB3b24ndCBpbnN0YWxsIGl0IGFzIGF1dG9tYWtlIGlzbid0IHVzZWQuCi0JbWtkaXIgLXAgJHtTfS9jb25maWcKLQljcCAtZiAkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKS9pbnN0YWxsLXNoICR7U30vY29uZmlnLwotfQotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMy4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEzLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMxNTdlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMy4zLmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiQ2hlY2tzdW1taW5nIENvcHkgb24gV3JpdGUgRmlsZXN5c3RlbSB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICJCdHJmcyBpcyBhIG5ldyBjb3B5IG9uIHdyaXRlIGZpbGVzeXN0ZW0gZm9yIExpbnV4IGFpbWVkIGF0IFwKK2ltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcyB3aGlsZSBmb2N1c2luZyBvbiBmYXVsdCB0b2xlcmFuY2UsIHJlcGFpciBhbmQgXAorZWFzeSBhZG1pbmlzdHJhdGlvbi4gXAorVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHV0aWxpdGllcyAobWtmcywgZnNjaywgYnRyZnNjdGwpIHVzZWQgdG8gd29yayB3aXRoIFwKK2J0cmZzIGFuZCBhbiB1dGlsaXR5IChidHJmcy1jb252ZXJ0KSB0byBtYWtlIGEgYnRyZnMgZmlsZXN5c3RlbSBmcm9tIGFuIGV4dDMuIgorCitIT01FUEFHRSA9ICJodHRwczovL2J0cmZzLndpa2kua2VybmVsLm9yZyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IgorU0VDVElPTiA9ICJiYXNlIgorREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGF0dHIgZTJmc3Byb2dzIGx6byBhY2wiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVkZXYiCitSREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCisKK1NSQ1JFViA9ICJhN2ExZWEwZjRmMmExZDZlZWViM2QxMDZlMDYyYzdmMTAzNGYxNmQ0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva2RhdmUvYnRyZnMtcHJvZ3MuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtYnVpbGQtbWt0YWJsZXMtdXNpbmctbmF0aXZlLWdjYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtbWlzc2luZy1oZWFkZXItaW5jbHVkZS1mb3ItZGV2X3QucGF0Y2ggXAorICAgICAgICAgICAiCisKK1JFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIldhaXRpbmcgZm9yIHJlc29sdXRpb24gb2YgaHR0cHM6Ly9naXRodWIuY29tL2tkYXZlL2J0cmZzLXByb2dzL2lzc3Vlcy8xMDkiCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIG1hbnBhZ2VzCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLWRvY3VtZW50YXRpb24sIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1iYWNrdHJhY2UgIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwkjIFVwc3RyZWFtIGRvZXNuJ3Qgc2hpcCB0aGlzIGFuZCBhdXRvcmVjb25mIHdvbid0IGluc3RhbGwgaXQgYXMgYXV0b21ha2UgaXNuJ3QgdXNlZC4KKwlta2RpciAtcCAke1N9L2NvbmZpZworCWNwIC1mICQoYXV0b21ha2UgLS1wcmludC1saWJkaXIpL2luc3RhbGwtc2ggJHtTfS9jb25maWcvCit9CisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2J1aWxkLWNvbXBhcmVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2J1aWxkLWNvbXBhcmVfZ2l0LmJiCmluZGV4IDg0ZDA0Y2YuLmVmY2Y2YjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9idWlsZC1jb21wYXJlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvYnVpbGQtY29tcGFyZV9naXQuYmIKQEAgLTIyLDcgKzIyLDcgQEAKIFNSQ1JFViA9ICJjNTM1MmMwNTRjNmVmMTU3MzVkYTMxYjc2ZDZkODg2MjBmNGFmZjBhIgogUEUgPSAiMSIKIFBWID0gIjIwMTUuMDIuMTArZ2l0JHtTUkNQVn0iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTUzNWIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgY2NhY2hlLmluYwotCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT03ZmUyMWY5NDcwZjIzMDVlOTVlN2Q4YTYzMjI1NTA3OSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk1YWIzYzU2Mjg0MTI5Y2MyYTMyNDYwYzIzMDY5NTE2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI0ZjE1YmYzODllMzhjNDE1NDhjOWMyNTk1MzIxODc3NzRlYzBjYjk2ODZjMzQ5N2JiYjc1NTA0YzhkYzQwNGYiCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LUNyZWF0ZS1tYW4tcGFnZS1pbi10aGUtbWFrZS1pbnN0YWxsLWZyb20tZ2l0LS5wYXRjaCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy4zLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy4zLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI5ZjBmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjMuNS5iYgpAQCAtMCwwICsxLDEyIEBACityZXF1aXJlIGNjYWNoZS5pbmMKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZGFlMzc5YTg1YmI2ZTlkNTk0NzczZTBhYTY0ODc2ZjYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZWU1OGRiN2NjZTg5MmZlYmRkYjk4OTMwOGRjNTY4ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxOTA1NzZhNmU5Mzg3NjBlYzgxMTM1MjNlNmZkMzgwMTQxMTE3MzAzZTkwNzY2Y2M0ODAyZTc3MDQyMmIzMGM2IgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICAgZmlsZTovLzAwMDItZGV2Lm1rLmluLWZpeC1maWxlLW5hbWUtdG9vLWxvbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL1JldmVydC1DcmVhdGUtbWFuLXBhZ2UtaW4tdGhlLW1ha2UtaW5zdGFsbC1mcm9tLWdpdC0ucGF0Y2ggXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvZmlsZXMvMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2ZpbGVzLzAwMDItZGV2Lm1rLmluLWZpeC1maWxlLW5hbWUtdG9vLWxvbmcucGF0Y2gKaW5kZXggODM3Y2ZhZC4uM2YwMWM2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvZmlsZXMvMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9maWxlcy8wMDAyLWRldi5tay5pbi1maXgtZmlsZS1uYW1lLXRvby1sb25nLnBhdGNoCkBAIC0xNCwxMCArMTQsMTAgQEAKICBkZXYubWsuaW4gfCAgICAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9kZXYubWsuaW4gYi9kZXYubWsuaW4KLWluZGV4IDEyNjFhZDMuLmVjNTVhYzQgMTAwNjQ0Ci0tLS0gYS9kZXYubWsuaW4KLSsrKyBiL2Rldi5tay5pbgorSW5kZXg6IGNjYWNoZS0zLjMuNC9kZXYubWsuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjY2FjaGUtMy4zLjQub3JpZy9kZXYubWsuaW4KKysrKyBjY2FjaGUtMy4zLjQvZGV2Lm1rLmluCiBAQCAtMSw3ICsxLDcgQEAKICAjIEdOVSBtYWtlIHN5bnRheCByZWlnbnMgaW4gdGhpcyBmaWxlLgogIApAQCAtMjYsNyArMjYsNCBAQAogK2FsbF9jcHBmbGFncyArPSAtTUQgLU1QIC1NRiAuZGVwcy8kKHN1YnN0IC4uXywsJChzdWJzdCAvLF8sJChzdWJzdCAkKHNyY2RpcikvLCwkPCkpKS5kCiAgCiAgQVNDSUlET0MgPSBhc2NpaWRvYwotIEdQRVJGID0gZ3BlcmYKLS0tIAotMS43LjkuNQotCisgQ1BQQ0hFQ0sgPSBjcHBjaGVjawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jZHJ0b29scy9jZHJ0b29scy1uYXRpdmVfMy4wMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2RydG9vbHMvY2RydG9vbHMtbmF0aXZlXzMuMDEuYmIKaW5kZXggMGUwYmU2Mi4uNzhlMTU2NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jZHJ0b29scy9jZHJ0b29scy1uYXRpdmVfMy4wMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NkcnRvb2xzL2NkcnRvb2xzLW5hdGl2ZV8zLjAxLmJiCkBAIC04LDYgKzgsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzJmNjgxNzBiZTQyNGMyY2Q2NDgwNDMzNzcyNmIzMTIiCiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvY2RydG9vbHMvY2RydG9vbHMtJHtSRUFMUFZ9LnRhci5iejIiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogU1JDX1VSSVttZDVzdW1dID0gIjdkNDVjNWI3ZTFmNzhkODVkMTU4M2IzNjFhZWU2ZThiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkMjgyZWI2Mjc2YzQxNTRjZTZhMGI1ZGVlMGJkYjgxOTQwZDBjYmJmYzdkMDNmNzY5YzQ3MzVlZjVmNTg2MGYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTAuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy44LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTAuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYwppbmRleCA2YWViMjVmLi4zOTRjOWViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYwpAQCAtNiw0MSArNiwyMyBAQAogQlVHVFJBQ0tFUiA9ICJodHRwOi8vcHVibGljLmtpdHdhcmUuY29tL0J1Zy9teV92aWV3X3BhZ2UucGhwIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgogTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQudHh0O21kNT04ZDhjN2JjMzJmODc5N2QyM2Y1Y2Y2MDVkOTMzOWQyZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Tb3VyY2UvY21ha2UuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTM7bWQ1PTQ0OTRkZWUxODQyMTJmYzg5YzQ2OWMzYWNkNTU1YTE0IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0LnR4dDttZDU9NzliNWI3ODE5N2M3NGQ1YzVmOWM3Y2NhZGVlZTRlOGMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vU291cmNlL2NtYWtlLmg7bWQ1PTQ0OTRkZWUxODQyMTJmYzg5YzQ2OWMzYWNkNTU1YTE0O2JlZ2lubGluZT0xO2VuZGxpbmU9MyBcCisgICAgICAgICAgICAgICAgICAgICIKIAogQ01BS0VfTUFKT1JfVkVSU0lPTiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6Ml0pfSIKIAogU1JDX1VSSSA9ICJodHRwczovL2NtYWtlLm9yZy9maWxlcy92JHtDTUFLRV9NQUpPUl9WRVJTSU9OfS9jbWFrZS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vc3VwcG9ydC1vZS1xdDQtdG9vbHMtbmFtZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcXQ0LWZhaWwtc2lsZW50LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZENVREEtVXNlLWZpbmRfcHJvZ3JhbS1pZi1maW5kX2hvc3RfcHJvZ3JhbS1pcy1uby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEJvb3N0LUJvb3N0LTEuNjYuMC1kZXBlbmRlbmN5LWFuZC1yZWxlYXNlLXVwZGF0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRCb29zdC1GaXgtaW5jb3JyZWN0LWFscGhhYmV0aXNhdGlvbi1vZi1oZWFkZXJzLWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1GaW5kQm9vc3QtSW1wbGVtZW50LUFyY2hpdGVjdHVyZS1hbmQtQWRkcmVzcy1Nb2RlbC10LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtRmluZEJvb3N0LVNlYXJjaC1mb3ItdXBzdHJlYW0tcGFja2FnZWQtbGlicy1uZXh0LXRvLS5wYXRjaCBcCiAgICAgICAgICAgICIKIAotU1JDX1VSSVttZDVzdW1dID0gImI1ZGZmNjFmNmE3ZjEzMDUyNzFhYjNmNmFlMjYxNDE5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhMzA3Mjc5NGViNGMwOWYyZDc4MmZjZWUwNDM4NDdiOTliYjRjZjhkNDU3Mzk3OGQ5YjIwMjQyMTRkNmU5MmQiCitTUkNfVVJJW21kNXN1bV0gPSAiMWMzOGM2NzI5NWNhNjk2YWVhZmQ4YzA1OWQ3NDhiMzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGMzYTFkY2YwYmUwM2U0MGNmNGYzNDFkZGE3OWM5NmZmYjZjMzVhZTM1ZjJmOTExODQ1YjcyZGFiMzU1OWNmOCIKIAogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiY21ha2UtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLSMgVWdseSBoYWNrIHRvIHdvcmsgYXJvdW5kIHVuZGVmaW5lZCBPRV9RTUFLRV9QQVRIX0VYVEVSTkFMX0hPU1RfQklOUyB2YXJpYWJsZQotIyBhbmQgcG9zc2libHkgbWlzc2luZyBxbWFrZSBiaW5hcnkgKHF0YmFzZS1uYXRpdmUgY2FuIGJlIHJlbW92ZWQgZnJvbSBzeXNyb290Ci0jIGUuZy4gaW4gb3JkZXIgdG8gdXBncmFkZSBpdCwgZXZlbiB3aGVuIHRoZXJlIGlzIHRhcmdldCBxdGJhc2UpCi0KLSMgRml4ZXMgZXJyb3JzIGxpa2UgdGhpcyBpbiBjbWFrZSgtbmF0aXZlKS5kb19jb25maWd1cmU6Ci0jfCAtLSBQZXJmb3JtaW5nIFRlc3QgcnVuX3BpY190ZXN0IC0gU3VjY2VzcwotI3wgQ01ha2UgRXJyb3IgYXQgdG1wLWVnbGliYy9zeXNyb290cy9xZW11YXJtL3Vzci9saWIvY21ha2UvUXQ1Q29yZS9RdDVDb3JlQ29uZmlnLmNtYWtlOjI3IChtZXNzYWdlKToKLSN8ICAgVGhlIGltcG9ydGVkIHRhcmdldCAiUXQ1OjpDb3JlIiByZWZlcmVuY2VzIHRoZSBmaWxlCi0jfAotI3wgICAgICAiL3FtYWtlIgotI3wKLSN8ICAgYnV0IHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdC4gIFBvc3NpYmxlIHJlYXNvbnMgaW5jbHVkZToKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0Jc2VkIC1pICdzL15maW5kX3BhY2thZ2UoUXQ1Q29yZSBRVUlFVCkkLyNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBRVUlFVCkvZycgJHtTfS9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAotCXNlZCAtaSAncy9eICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkvIyAgZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpL2cnICR7U30vVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQKLQlzZWQgLWkgJ3MvXiAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQgTk9fTU9EVUxFKS8jICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCBOT19NT0RVTEUpL2cnICR7U30vVGVzdHMvQ01ha2VMaXN0cy50eHQKLQlzZWQgLWkgJ3MvXmZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUKS8jZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQpL2cnICR7U30vU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0Ci0Jc2VkIC1pICdzL14gIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKS8jICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkvZycgJHtTfS9UZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQKLQlzZWQgLWkgJ3MvXiAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpLyMgIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKS9nJyAke1N9L1Rlc3RzL1F0QXV0b2dlbi9DTWFrZUxpc3RzLnR4dAotCXNlZCAtaSAncy9eICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkvIyAgZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpL2cnICR7U30vVGVzdHMvUXRBdXRvZ2VuL2F1dG9yY2NfZGVwZW5kcy9DTWFrZUxpc3RzLnR4dAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRCb29zdC1Cb29zdC0xLjY2LjAtZGVwZW5kZW5jeS1hbmQtcmVsZWFzZS11cGRhdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZEJvb3N0LUJvb3N0LTEuNjYuMC1kZXBlbmRlbmN5LWFuZC1yZWxlYXNlLXVwZGF0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGE2MGUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRCb29zdC1Cb29zdC0xLjY2LjAtZGVwZW5kZW5jeS1hbmQtcmVsZWFzZS11cGRhdGUucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorRnJvbSA0MzNhMmQ0OTVhMjQ4MWM2M2I4MmMxMWEzMGY3YzY0MmQ2YWJlNjNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIlBhdWwgXCJUQkJsZVwiIEhhbXBzb24iIDxQYXVsLkhhbXBzb25AUG9ib3guY29tPgorRGF0ZTogRnJpLCAyOSBEZWMgMjAxNyAxOTo1NTo0OSArMTEwMAorU3ViamVjdDogW1BBVENIXSBGaW5kQm9vc3Q6IEJvb3N0IDEuNjYuMCBkZXBlbmRlbmN5IGFuZCByZWxlYXNlIHVwZGF0ZQorCitSZWxlYXNlIG5vdGVzOiBodHRwOi8vd3d3LmJvb3N0Lm9yZy91c2Vycy9oaXN0b3J5L3ZlcnNpb25fMV82Nl8wLmh0bWwKKworKiBBbGwgbmV3IGxpYnJhcmllcyBhcmUgaGVhZGVyLW9ubHkuCisqIF9Cb29zdF9DT01QT05FTlRfREVQRU5ERU5DSUVTIGlzIHVuY2hhbmdlZCBmcm9tIDEuNjUuMQorKiBfQm9vc3RfRklCRVJfQ09NUElMRVJfRkVBVFVSRVMgaXMgdW5jaGFuZ2VkIGZyb20gMS42NC4wCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1tZb2N0byAxMjc2Ml0KK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CisKKy0tLQorIE1vZHVsZXMvRmluZEJvb3N0LmNtYWtlIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK0luZGV4OiBjbWFrZS0zLjEwLjMvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjbWFrZS0zLjEwLjMub3JpZy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorKysrIGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorQEAgLTc5Nyw3ICs3OTcsNyBAQCBmdW5jdGlvbihfQm9vc3RfQ09NUE9ORU5UX0RFUEVOREVOQ0lFUyBjCisgICAgICAgc2V0KF9Cb29zdF9XQVZFX0RFUEVOREVOQ0lFUyBmaWxlc3lzdGVtIHN5c3RlbSBzZXJpYWxpemF0aW9uIHRocmVhZCBjaHJvbm8gZGF0ZV90aW1lIGF0b21pYykKKyAgICAgICBzZXQoX0Jvb3N0X1dTRVJJQUxJWkFUSU9OX0RFUEVOREVOQ0lFUyBzZXJpYWxpemF0aW9uKQorICAgICBlbmRpZigpCistICAgIGlmKE5PVCBCb29zdF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxMDY2MDApCisrICAgIGlmKE5PVCBCb29zdF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxMDY3MDApCisgICAgICAgbWVzc2FnZShXQVJOSU5HICJOZXcgQm9vc3QgdmVyc2lvbiBtYXkgaGF2ZSBpbmNvcnJlY3Qgb3IgbWlzc2luZyBkZXBlbmRlbmNpZXMgYW5kIGltcG9ydGVkIHRhcmdldHMiKQorICAgICAgIHNldChfQm9vc3RfSU1QT1JURURfVEFSR0VUUyBGQUxTRSkKKyAgICAgZW5kaWYoKQorQEAgLTkzMSw4ICs5MzEsOCBAQCBlbmRmdW5jdGlvbigpCisgIyBgJHtCb29zdF9ST09UfS9saWJzL2ZpYmVyL2J1aWxkL0phbWZpbGUudjJgLgorICMKKyBmdW5jdGlvbihfQm9vc3RfQ09NUElMRVJfRkVBVFVSRVMgY29tcG9uZW50IF9yZXQpCistICAjIEJvb3N0ID49IDEuNjIgYW5kIDwgMS42NQorLSAgaWYoTk9UIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjIwMCBBTkQgQm9vc3RfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMTA2NTAwKQorKyAgIyBCb29zdCA+PSAxLjYyIGFuZCA8IDEuNjcKKysgIGlmKE5PVCBCb29zdF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxMDYyMDAgQU5EIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjcwMCkKKyAgICAgc2V0KF9Cb29zdF9GSUJFUl9DT01QSUxFUl9GRUFUVVJFUworICAgICAgICAgY3h4X2FsaWFzX3RlbXBsYXRlcworICAgICAgICAgY3h4X2F1dG9fdHlwZQorQEAgLTEwMzgsNyArMTAzOCw3IEBAIGVsc2UoKQorICAgIyBfQm9vc3RfQ09NUE9ORU5UX0hFQURFUlMuICBTZWUgdGhlIGluc3RydWN0aW9ucyBhdCB0aGUgdG9wIG9mCisgICAjIF9Cb29zdF9DT01QT05FTlRfREVQRU5ERU5DSUVTLgorICAgc2V0KF9Cb29zdF9LTk9XTl9WRVJTSU9OUyAke0Jvb3N0X0FERElUSU9OQUxfVkVSU0lPTlN9CistICAgICIxLjY1LjEiICIxLjY1LjAiICIxLjY1IgorKyAgICAiMS42Ni4wIiAiMS42NiIgIjEuNjUuMSIgIjEuNjUuMCIgIjEuNjUiCisgICAgICIxLjY0LjAiICIxLjY0IiAiMS42My4wIiAiMS42MyIgIjEuNjIuMCIgIjEuNjIiICIxLjYxLjAiICIxLjYxIiAiMS42MC4wIiAiMS42MCIKKyAgICAgIjEuNTkuMCIgIjEuNTkiICIxLjU4LjAiICIxLjU4IiAiMS41Ny4wIiAiMS41NyIgIjEuNTYuMCIgIjEuNTYiICIxLjU1LjAiICIxLjU1IgorICAgICAiMS41NC4wIiAiMS41NCIgIjEuNTMuMCIgIjEuNTMiICIxLjUyLjAiICIxLjUyIiAiMS41MS4wIiAiMS41MSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1GaW5kQm9vc3QtRml4LWluY29ycmVjdC1hbHBoYWJldGlzYXRpb24tb2YtaGVhZGVycy1sLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRCb29zdC1GaXgtaW5jb3JyZWN0LWFscGhhYmV0aXNhdGlvbi1vZi1oZWFkZXJzLWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ1ZWRhNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1GaW5kQm9vc3QtRml4LWluY29ycmVjdC1hbHBoYWJldGlzYXRpb24tb2YtaGVhZGVycy1sLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gYjFlOWY2NzEzNzczM2JjMTA5ZDM1NTQ1MGZjZDA2ZWRkYTQ3ODRjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJQYXVsIFwiVEJCbGVcIiBIYW1wc29uIiA8UGF1bC5IYW1wc29uQFBvYm94LmNvbT4KK0RhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMjA6MDc6MzEgKzExMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzZdIEZpbmRCb29zdDogRml4IGluY29ycmVjdCBhbHBoYWJldGlzYXRpb24gb2YgaGVhZGVycyBsaXN0CisKK0FmZmVjdHMgY21ha2UgPCAzLjExLjAKKworVXBzdGVhbS1TdGF0dXM6IEJhY2twb3J0CitbWW9jdG8gMTI3NjJdCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorCistLS0KKyBNb2R1bGVzL0ZpbmRCb29zdC5jbWFrZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNtYWtlLTMuMTAuMy5vcmlnL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCisrKysgY21ha2UtMy4xMC4zL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCitAQCAtODMxLDggKzgzMSw4IEBAIGZ1bmN0aW9uKF9Cb29zdF9DT01QT05FTlRfSEVBREVSUyBjb21wb24KKyAgIHNldChfQm9vc3RfQ09OVEFJTkVSX0hFQURFUlMgICAgICAgICAgICJib29zdC9jb250YWluZXIvY29udGFpbmVyX2Z3ZC5ocHAiKQorICAgc2V0KF9Cb29zdF9DT05URVhUX0hFQURFUlMgICAgICAgICAgICAgImJvb3N0L2NvbnRleHQvYWxsLmhwcCIpCisgICBzZXQoX0Jvb3N0X0NPUk9VVElORV9IRUFERVJTICAgICAgICAgICAiYm9vc3QvY29yb3V0aW5lL2FsbC5ocHAiKQorLSAgc2V0KF9Cb29zdF9FWENFUFRJT05fSEVBREVSUyAgICAgICAgICAgImJvb3N0L2V4Y2VwdGlvbi9leGNlcHRpb24uaHBwIikKKyAgIHNldChfQm9vc3RfREFURV9USU1FX0hFQURFUlMgICAgICAgICAgICJib29zdC9kYXRlX3RpbWUvZGF0ZS5ocHAiKQorKyAgc2V0KF9Cb29zdF9FWENFUFRJT05fSEVBREVSUyAgICAgICAgICAgImJvb3N0L2V4Y2VwdGlvbi9leGNlcHRpb24uaHBwIikKKyAgIHNldChfQm9vc3RfRklCRVJfSEVBREVSUyAgICAgICAgICAgICAgICJib29zdC9maWJlci9hbGwuaHBwIikKKyAgIHNldChfQm9vc3RfRklMRVNZU1RFTV9IRUFERVJTICAgICAgICAgICJib29zdC9maWxlc3lzdGVtL3BhdGguaHBwIikKKyAgIHNldChfQm9vc3RfR1JBUEhfSEVBREVSUyAgICAgICAgICAgICAgICJib29zdC9ncmFwaC9hZGphY2VuY3lfbGlzdC5ocHAiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRDVURBLVVzZS1maW5kX3Byb2dyYW0taWYtZmluZF9ob3N0X3Byb2dyYW0taXMtbm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZENVREEtVXNlLWZpbmRfcHJvZ3JhbS1pZi1maW5kX2hvc3RfcHJvZ3JhbS1pcy1uby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI4MjBkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZENVREEtVXNlLWZpbmRfcHJvZ3JhbS1pZi1maW5kX2hvc3RfcHJvZ3JhbS1pcy1uby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gNDZkMjVlNzgyZWJkOWI2YzUwNzcxYjZmMzA0MzNjNThmYWUwM2E1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1heGltZSBSb3Vzc2luLULDqWxhbmdlciA8bWF4aW1lLnJvdXNzaW5iZWxhbmdlckBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI2IEp1biAyMDE3IDExOjMwOjA3IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNtYWtlOiBVc2UgZmluZF9wcm9ncmFtIGlmIGZpbmRfaG9zdF9wcm9ncmFtIGlzIG5vdAotIGF2YWlsYWJsZQotCi1DTWFrZSBkb2VzIG5vdCBkZWZpbmUgdGhlIGBmaW5kX2hvc3RfcHJvZ3JhbWAgY29tbWFuZCB3ZSd2ZSBiZWVuIHVzaW5nCi1pbiB0aGUgY3Jvc3MtY29tcGlsaW5nIGNvZGUgcGF0aC4gIEl0IHdhcyBwcm92aWRlZCBieSBhIHdpZGVseSB1c2VkCi1BbmRyb2lkIHRvb2xjaGFpbiBmaWxlLiAgRm9yIGNvbXBhdGliaWxpdHksIGNvbnRpbnVlIHRvIHVzZQotYGZpbmRfaG9zdF9wcm9ncmFtYCBpZiBhdmFpbGFibGUsIGJ1dCBvdGhlcndpc2UgdXNlIGp1c3QgYGZpbmRfcHJvZ3JhbWAuCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLVtodHRwczovL2dpdGxhYi5raXR3YXJlLmNvbS9jbWFrZS9jbWFrZS9tZXJnZV9yZXF1ZXN0cy8xMDA5XQotICAgICAgICAtIFdpbGwgYmUgaW4gMy4xMAotCi1TaWduZWQtb2ZmLWJ5OiBNYXhpbWUgUm91c3Npbi1Cw6lsYW5nZXIgPG1heGltZS5yb3Vzc2luYmVsYW5nZXJAZ21haWwuY29tPgotLS0tCi0gTW9kdWxlcy9GaW5kQ1VEQS5jbWFrZSB8IDYgKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTW9kdWxlcy9GaW5kQ1VEQS5jbWFrZSBiL01vZHVsZXMvRmluZENVREEuY21ha2UKLWluZGV4IGE0ZGNhNTQuLjc3Y2EzNTEgMTAwNjQ0Ci0tLS0gYS9Nb2R1bGVzL0ZpbmRDVURBLmNtYWtlCi0rKysgYi9Nb2R1bGVzL0ZpbmRDVURBLmNtYWtlCi1AQCAtNjc5LDcgKzY3OSwxMSBAQCBpZihDTUFLRV9DUk9TU0NPTVBJTElORykKLSAgICMgYWRkIGtub3duIENVREEgdGFyZ2V0ciByb290IHBhdGggdG8gdGhlIHNldCBvZiBkaXJlY3RvcmllcyB3ZSBzZWFyY2ggZm9yIHByb2dyYW1zLCBsaWJyYXJpZXMgYW5kIGhlYWRlcnMKLSAgIHNldCggQ01BS0VfRklORF9ST09UX1BBVEggIiR7Q1VEQV9UT09MS0lUX1RBUkdFVF9ESVJ9OyR7Q01BS0VfRklORF9ST09UX1BBVEh9IikKLSAgIG1hY3JvKCBjdWRhX2ZpbmRfaG9zdF9wcm9ncmFtICkKLS0gICAgZmluZF9ob3N0X3Byb2dyYW0oICR7QVJHTn0gKQotKyAgICBpZiAoQ09NTUFORCBmaW5kX2hvc3RfcHJvZ3JhbSkKLSsgICAgICBmaW5kX2hvc3RfcHJvZ3JhbSggJHtBUkdOfSApCi0rICAgIGVsc2UoKQotKyAgICAgIGZpbmRfcHJvZ3JhbSggJHtBUkdOfSApCi0rICAgIGVuZGlmKCkKLSAgIGVuZG1hY3JvKCkKLSBlbHNlKCkKLSAgICMgZm9yIG5vbi1jcm9zcy1jb21waWxlLCBmaW5kX2hvc3RfcHJvZ3JhbSA9PSBmaW5kX3Byb2dyYW0gYW5kIENVREFfVE9PTEtJVF9UQVJHRVRfRElSID09IENVREFfVE9PTEtJVF9ST09UX0RJUgotLS0KLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1GaW5kQm9vc3QtSW1wbGVtZW50LUFyY2hpdGVjdHVyZS1hbmQtQWRkcmVzcy1Nb2RlbC10LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLUZpbmRCb29zdC1JbXBsZW1lbnQtQXJjaGl0ZWN0dXJlLWFuZC1BZGRyZXNzLU1vZGVsLXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgzMDFjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1GaW5kQm9vc3QtSW1wbGVtZW50LUFyY2hpdGVjdHVyZS1hbmQtQWRkcmVzcy1Nb2RlbC10LnBhdGNoCkBAIC0wLDAgKzEsMTMyIEBACitGcm9tIGIwNDRmNjlhNDEzMTIzZjE1YTA1MDM0YzAwYThlMzc2Mzc2NGExZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiUGF1bCBcIlRCQmxlXCIgSGFtcHNvbiIgPFBhdWwuSGFtcHNvbkBQb2JveC5jb20+CitEYXRlOiBGcmksIDI5IERlYyAyMDE3IDIxOjUwOjU0ICsxMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi82XSBGaW5kQm9vc3Q6IEltcGxlbWVudCAiQXJjaGl0ZWN0dXJlIGFuZCBBZGRyZXNzIE1vZGVsIiB0YWcKKworVGhpcyB0YWcgaXMgbmV3IGluIEJvb3N0IDEuNjYuMCwgYW5kIGlzIHByZXNlbnQgaW4gdGhlICd2ZXJzaW9uZWQnCitsaWJyYXJ5IGZpbGUgbmFtZSBsYXlvdXQuCisKK0FmZmVjdHMgY21ha2UgPCAzLjExLjAKKworVXBzdGVhbS1TdGF0dXM6IEJhY2twb3J0CitbWW9jdG8gMTI3NjJdCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorCistLS0KKyBNb2R1bGVzL0ZpbmRCb29zdC5jbWFrZSB8IDUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK0luZGV4OiBjbWFrZS0zLjEwLjMvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjbWFrZS0zLjEwLjMub3JpZy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorKysrIGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorQEAgLTEzODUsOCArMTM4NSwxMSBAQCBpZihCb29zdF9ERUJVRykKKyBlbmRpZigpCisgCisgIz09PT09PT09PT09PT09PT09PT09PT0KKy0jIFN5c3RlbWF0aWNhbGx5IGJ1aWxkIHVwIHRoZSBCb29zdCBBQkkgdGFnCistIyBodHRwOi8vYm9vc3Qub3JnL2RvYy9saWJzLzFfNDFfMC9tb3JlL2dldHRpbmdfc3RhcnRlZC93aW5kb3dzLmh0bWwjbGlicmFyeS1uYW1pbmcKKysjIFN5c3RlbWF0aWNhbGx5IGJ1aWxkIHVwIHRoZSBCb29zdCBBQkkgdGFnIGZvciB0aGUgJ3RhZ2dlZCcgYW5kICd2ZXJzaW9uZWQnIGxheW91dHMKKysjIGh0dHA6Ly9ib29zdC5vcmcvZG9jL2xpYnMvMV82Nl8wL21vcmUvZ2V0dGluZ19zdGFydGVkL3dpbmRvd3MuaHRtbCNsaWJyYXJ5LW5hbWluZworKyMgaHR0cDovL2Jvb3N0Lm9yZy9kb2MvbGlicy8xXzY2XzAvYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHAKKysjIGh0dHA6Ly9ib29zdC5vcmcvZG9jL2xpYnMvMV82Nl8wL3Rvb2xzL2J1aWxkL3NyYy90b29scy9jb21tb24uamFtCisrIyBodHRwOi8vYm9vc3Qub3JnL2RvYy9saWJzLzFfNjZfMC9ib29zdGNwcC5qYW0KKyBzZXQoIF9ib29zdF9SRUxFQVNFX0FCSV9UQUcgIi0iKQorIHNldCggX2Jvb3N0X0RFQlVHX0FCSV9UQUcgICAiLSIpCisgIyBLZXkgICAgICAgVXNlIHRoaXMgbGlicmFyeSB3aGVuOgorQEAgLTE0MTgsMTEgKzE0MjEsNDAgQEAgaWYoQm9vc3RfVVNFX1NUTFBPUlQpCisgICBzdHJpbmcoQVBQRU5EIF9ib29zdF9ERUJVR19BQklfVEFHICJwIikKKyBlbmRpZigpCisgIyAgbiAgICAgICAgdXNpbmcgdGhlIFNUTHBvcnQgZGVwcmVjYXRlZCAibmF0aXZlIGlvc3RyZWFtcyIgZmVhdHVyZQorKyMgICAgICAgICAgIHJlbW92ZWQgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbiBpbiAxLjQzLjAgYnV0IHN0aWxsIHByZXNlbnQgaW4KKysjICAgICAgICAgICBib29zdC9jb25maWcvYXV0b19saW5rLmhwcAorIGlmKEJvb3N0X1VTRV9TVExQT1JUX0RFUFJFQ0FURURfTkFUSVZFX0lPU1RSRUFNUykKKyAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X1JFTEVBU0VfQUJJX1RBRyAibiIpCisgICBzdHJpbmcoQVBQRU5EIF9ib29zdF9ERUJVR19BQklfVEFHICJuIikKKyBlbmRpZigpCisgCisrIyAgLXg4NiAgICAgQXJjaGl0ZWN0dXJlIGFuZCBhZGRyZXNzIG1vZGVsIHRhZworKyMgICAgICAgICAgIEZpcnN0IGNoYXJhY3RlciBpcyB0aGUgYXJjaGl0ZWN0dXJlLCB0aGVuIHdvcmQtc2l6ZSwgZWl0aGVyIDMyIG9yIDY0CisrIyAgICAgICAgICAgT25seSB1c2VkIGluICd2ZXJzaW9uZWQnIGxheW91dCwgYWRkZWQgaW4gQm9vc3QgMS42Ni4wCisrc2V0KF9ib29zdF9BUkNISVRFQ1RVUkVfVEFHICIiKQorKyMge0NNQUtFX0NYWF9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUR9IGlzIG5vdCBjdXJyZW50bHkgc2V0IGZvciBhbGwgY29tcGlsZXJzCisraWYoTk9UICJ4JHtDTUFLRV9DWFhfQ09NUElMRVJfQVJDSElURUNUVVJFX0lEfSIgU1RSRVFVQUwgIngiIEFORCBOT1QgQm9vc3RfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMTA2NjAwKQorKyAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAiLSIpCisrICAjIFRoaXMgbmVlZHMgdG8gYmUga2VwdCBpbi1zeW5jIHdpdGggdGhlIHNlY3Rpb24gb2YgQ01ha2VQbGF0Zm9ybUlkLmguaW4KKysgICMgaW5zaWRlICdkZWZpbmVkKF9XSU4zMikgJiYgZGVmaW5lZChfTVNDX1ZFUiknCisrICBpZigke0NNQUtFX0NYWF9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUR9IFNUUkVRVUFMICJJQTY0IikKKysgICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAiaSIpCisrICBlbHNlaWYoJHtDTUFLRV9DWFhfQ09NUElMRVJfQVJDSElURUNUVVJFX0lEfSBTVFJFUVVBTCAiWDg2IgorKyAgICAgICAgICAgIE9SICR7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0gU1RSRVFVQUwgIng2NCIpCisrICAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgIngiKQorKyAgZWxzZWlmKCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0gTUFUQ0hFUyAiXkFSTSIpCisrICAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgImEiKQorKyAgZWxzZWlmKCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0gU1RSRVFVQUwgIk1JUFMiKQorKyAgICBzdHJpbmcoQVBQRU5EIF9ib29zdF9BUkNISVRFQ1RVUkVfVEFHICJtIikKKysgIGVuZGlmKCkKKysKKysgIGlmKENNQUtFX1NJWkVPRl9WT0lEX1AgRVFVQUwgOCkKKysgICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAiNjQiKQorKyAgZWxzZSgpCisrICAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgIjMyIikKKysgIGVuZGlmKCkKKytlbmRpZigpCisrCisgaWYoQm9vc3RfREVCVUcpCisgICBtZXNzYWdlKFNUQVRVUyAiWyAke0NNQUtFX0NVUlJFTlRfTElTVF9GSUxFfToke0NNQUtFX0NVUlJFTlRfTElTVF9MSU5FfSBdICIKKyAgICAgIl9ib29zdF9SRUxFQVNFX0FCSV9UQUcgPSAke19ib29zdF9SRUxFQVNFX0FCSV9UQUd9IikKK0BAIC0xNjE2LDIyICsxNjQ4LDIyIEBAIGZvcmVhY2goQ09NUE9ORU5UICR7Qm9vc3RfRklORF9DT01QT05FTlQKKyAgIHVuc2V0KF9ib29zdF9SRUxFQVNFX05BTUVTKQorICAgZm9yZWFjaChjb21waWxlciBJTiBMSVNUUyBfYm9vc3RfQ09NUElMRVIpCisgICAgIGxpc3QoQVBQRU5EIF9ib29zdF9SRUxFQVNFX05BTUVTCistICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfQUJJX1RBR30gKQorICAgZW5kZm9yZWFjaCgpCisgICBsaXN0KEFQUEVORCBfYm9vc3RfUkVMRUFTRV9OQU1FUworLSAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfSR7X2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX0FCSV9UQUd9CisgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9ICkKKyAgIGlmKF9ib29zdF9TVEFUSUNfUlVOVElNRV9XT1JLQVJPVU5EKQorICAgICBzZXQoX2Jvb3N0X1JFTEVBU0VfU1RBVElDX0FCSV9UQUcgIi1zJHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfSIpCisgICAgIGZvcmVhY2goY29tcGlsZXIgSU4gTElTVFMgX2Jvb3N0X0NPTVBJTEVSKQorICAgICAgIGxpc3QoQVBQRU5EIF9ib29zdF9SRUxFQVNFX05BTUVTCistICAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX1NUQVRJQ19BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorICAgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30gKQorICAgICBlbmRmb3JlYWNoKCkKKyAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X1JFTEVBU0VfTkFNRVMKKy0gICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KKysgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX1NUQVRJQ19BQklfVEFHfSApCisgICBlbmRpZigpCisgICBpZihCb29zdF9USFJFQURBUEkgQU5EICR7Q09NUE9ORU5UfSBTVFJFUVVBTCAidGhyZWFkIikKK0BAIC0xNjY2LDExICsxNjk4LDExIEBAIGZvcmVhY2goQ09NUE9ORU5UICR7Qm9vc3RfRklORF9DT01QT05FTlQKKyAgIHVuc2V0KF9ib29zdF9ERUJVR19OQU1FUykKKyAgIGZvcmVhY2goY29tcGlsZXIgSU4gTElTVFMgX2Jvb3N0X0NPTVBJTEVSKQorICAgICBsaXN0KEFQUEVORCBfYm9vc3RfREVCVUdfTkFNRVMKKy0gICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9JHtfYm9vc3RfQVJDSElURUNUVVJFX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KKyAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19BQklfVEFHfSApCisgICBlbmRmb3JlYWNoKCkKKyAgIGxpc3QoQVBQRU5EIF9ib29zdF9ERUJVR19OQU1FUworLSAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KKysgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9JHtfYm9vc3RfQVJDSElURUNUVVJFX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KKyAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9CisgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0KKyAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0gKQorQEAgLTE2NzgsMTEgKzE3MTAsMTEgQEAgZm9yZWFjaChDT01QT05FTlQgJHtCb29zdF9GSU5EX0NPTVBPTkVOVAorICAgICBzZXQoX2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHICItcyR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9IikKKyAgICAgZm9yZWFjaChjb21waWxlciBJTiBMSVNUUyBfYm9vc3RfQ09NUElMRVIpCisgICAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X0RFQlVHX05BTUVTCistICAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KKysgICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHfSR7X2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisgICAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30gKQorICAgICBlbmRmb3JlYWNoKCkKKyAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X0RFQlVHX05BTUVTCistICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30gKQorICAgZW5kaWYoKQorICAgaWYoQm9vc3RfVEhSRUFEQVBJIEFORCAke0NPTVBPTkVOVH0gU1RSRVFVQUwgInRocmVhZCIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtRmluZEJvb3N0LVNlYXJjaC1mb3ItdXBzdHJlYW0tcGFja2FnZWQtbGlicy1uZXh0LXRvLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMy1GaW5kQm9vc3QtU2VhcmNoLWZvci11cHN0cmVhbS1wYWNrYWdlZC1saWJzLW5leHQtdG8tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNzhmNWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtRmluZEJvb3N0LVNlYXJjaC1mb3ItdXBzdHJlYW0tcGFja2FnZWQtbGlicy1uZXh0LXRvLS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGQ1NmRlZmY3ZDEyN2IwMzA3MzliZDAwMzQ2MDlkMDA0NjEyMWQ4Y2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiUGF1bCBcIlRCQmxlXCIgSGFtcHNvbiIgPFBhdWwuSGFtcHNvbkBQb2JveC5jb20+CitEYXRlOiBGcmksIDI5IERlYyAyMDE3IDIyOjM4OjM2ICsxMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy82XSBGaW5kQm9vc3Q6IFNlYXJjaCBmb3IgdXBzdHJlYW0tcGFja2FnZWQgbGlicyBuZXh0IHRvCisgaW5jbHVkZXMKKworVXBzdHJlYW0gcGFja2FnZXMgQm9vc3QgYmluYXJpZXMgZm9yIFdpbmRvd3Mgd2l0aCB0aGUgJ2Jvb3N0JyBkaXJlY3RvcnkKKyh0aGUgSU5DTFVERV9ESVIpIG5leHQgdG8gdGhlIGxpYi0uLi4gZGlyZWN0b3J5ICh0aGUgTElCUkFSWV9ESVIpLgorCitBZmZlY3RzIGNtYWtlIDwgMy4xMS4wCisKK1Vwc3RlYW0tU3RhdHVzOiBCYWNrcG9ydAorW1lvY3RvIDEyNzYyXQorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KKworLS0tCisgTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworSW5kZXg6IGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNtYWtlLTMuMTAuMy5vcmlnL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCisrKysgY21ha2UtMy4xMC4zL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCitAQCAtMTUwMiw2ICsxNTAyLDcgQEAgZm9yZWFjaChjIERFQlVHIFJFTEVBU0UpCisgICAgICAgJHtCb29zdF9JTkNMVURFX0RJUn0vc3RhZ2UvbGliCisgICAgICAgKQorICAgICBfQm9vc3RfVVBEQVRFX1dJTkRPV1NfTElCUkFSWV9TRUFSQ0hfRElSU19XSVRIX1BSRUJVSUxUX1BBVEhTKF9ib29zdF9MSUJSQVJZX1NFQVJDSF9ESVJTXyR7Y30gIiR7Qm9vc3RfSU5DTFVERV9ESVJ9Ly4uIikKKysgICAgX0Jvb3N0X1VQREFURV9XSU5ET1dTX0xJQlJBUllfU0VBUkNIX0RJUlNfV0lUSF9QUkVCVUlMVF9QQVRIUyhfYm9vc3RfTElCUkFSWV9TRUFSQ0hfRElSU18ke2N9ICIke0Jvb3N0X0lOQ0xVREVfRElSfSIpCisgICAgIGlmKCBCb29zdF9OT19TWVNURU1fUEFUSFMgKQorICAgICAgIGxpc3QoQVBQRU5EIF9ib29zdF9MSUJSQVJZX1NFQVJDSF9ESVJTXyR7Y30gTk9fQ01BS0VfU1lTVEVNX1BBVEggTk9fU1lTVEVNX0VOVklST05NRU5UX1BBVEgpCisgICAgIGVsc2UoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YjdlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL2NtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2gKQEAgLTAsMCArMSwyMTUgQEAKK0Zyb20gODc1YzExZGJmODdkMTI1OGFkN2QzNjk3YTQwZDYwNWQ1MDNlNTY3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBXZWQsIDE3IEphbiAyMDE4IDEwOjAyOjE0IC0wMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNtYWtlOiBQcmV2ZW50IHRoZSBkZXRlY3Rpb24gb2YgUXQ1CitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitDTWFrZSBkb2Vzbid0IGhhdmUgZGVwZW5kZW5jeSBvbiBxdDQvcXQ1LCBzbyB0aGVzZSB0ZXN0cyB1c3VhbGx5IGZhaWwKK2J1dCBzdGlsbCBjYW4gY2F1c2UgdW5kZXRlcm1pbmlzdGljIHJlc3VsdHMgb3IgYnVpbGQgZmFpbHVyZXMgKHdoZW4KK09FX1FNQUtFX1BBVEhfRVhURVJOQUxfSE9TVF9CSU5TIGlzIHVuZGVmaW5lZCBvciBuYXRpdmUgcW1ha2UgcmVtb3ZlZAord2hpbGUgcnVubmluZyB0aGUgdGVzdCBpbiBjbWFrZSkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgVGVzdHMvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBUZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9RdEF1dG9nZW4vQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9RdEF1dG9nZW4vbWFjb3NGVy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9RdEF1dG9nZW4vbW9jRGVwZW5kcy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9RdEF1dG9nZW5SZXJ1bi9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICB8IDQgKystLQorIFRlc3RzL1F0QXV0b2dlblJlcnVuL21vY1BsdWdpbi9DTWFrZUxpc3RzLnR4dCAgICAgIHwgMiArLQorIFRlc3RzL1F0QXV0b2dlblJlcnVuL21vY1JlcnVuL0NNYWtlTGlzdHMudHh0ICAgICAgIHwgMiArLQorIFRlc3RzL1F0QXV0b2dlblJlcnVuL3JjY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQgICAgIHwgMiArLQorIFRlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIFRlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlIHwgMiArLQorIDEzIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0CitpbmRleCBiMzg3OTdiY2EuLmI1ZmJmYzVmYSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9RdERpYWxvZy9DTWFrZUxpc3RzLnR4dAorKysrIGIvU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0CitAQCAtNiw3ICs2LDcgQEAgaWYoUE9MSUNZIENNUDAwMjApCisgICBjbWFrZV9wb2xpY3koU0VUIENNUDAwMjAgTkVXKSAjIERyb3Agd2hlbiBDTWFrZSA+PSAyLjguMTEgcmVxdWlyZWQKKyBlbmRpZigpCisgQ01ha2VfT1BUSU9OQUxfQ09NUE9ORU5UKGNtYWtlLWd1aSkKKy1maW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCkKKysjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQpCisgaWYgKFF0NVdpZGdldHNfRk9VTkQpCisgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7UXQ1V2lkZ2V0c19JTkNMVURFX0RJUlN9KQorICAgYWRkX2RlZmluaXRpb25zKCR7UXQ1V2lkZ2V0c19ERUZJTklUT05TfSkKK2RpZmYgLS1naXQgYS9UZXN0cy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL0NNYWtlTGlzdHMudHh0CitpbmRleCA1MzM3ODhhNDQuLjMyZWYwM2M1NSAxMDA2NDQKKy0tLSBhL1Rlc3RzL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9DTWFrZUxpc3RzLnR4dAorQEAgLTEyNjAsNyArMTI2MCw3IEBAICR7Q01ha2VfQklOQVJZX0RJUn0vYmluL2NtYWtlIC1ERElSPWRldiAtUCAke0NNYWtlX1NPVVJDRV9ESVJ9L1V0aWxpdGllcy9SZWxlYXNlCisgICAgIHNldChDTWFrZV9URVNUX1F0NSAxKQorICAgZW5kaWYoKQorICAgaWYoQ01ha2VfVEVTVF9RdDUpCistICAgIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUIE5PX01PRFVMRSkKKysgICAgI2ZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUIE5PX01PRFVMRSkKKyAgIGVuZGlmKCkKKyAgIGlmKENNYWtlX1RFU1RfUXQ1IEFORCBRdDVXaWRnZXRzX0ZPVU5EKQorICAgICBhZGRfdGVzdChOQU1FIFF0NUF1dG9nZW4gQ09NTUFORCAke0NNQUtFX0NURVNUX0NPTU1BTkR9CitkaWZmIC0tZ2l0IGEvVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdDRBbmQ1QXV0b21vYy9DTWFrZUxpc3RzLnR4dAoraW5kZXggYWQ3NDk2MWQ5Li5hOWRkNzRiMTUgMTAwNjQ0CistLS0gYS9UZXN0cy9RdDRBbmQ1QXV0b21vYy9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQKK0BAIC0zLDExICszLDExIEBAIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjguMTIpCisgcHJvamVjdChRdDRBbmQ1QXV0b21vYykKKyAKKyBpZiAoUVRfUkVWRVJTRV9GSU5EX09SREVSKQorLSAgZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisrICAjZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisgICBmaW5kX3BhY2thZ2UoUXQ0IFJFUVVJUkVEKQorIGVsc2UoKQorICAgZmluZF9wYWNrYWdlKFF0NCBSRVFVSVJFRCkKKy0gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorKyAgI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorIGVuZGlmKCkKKyAKKyBzZXQoQ01BS0VfQVVUT01PQyBPTikKK2RpZmYgLS1naXQgYS9UZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQKK2luZGV4IGE1YzJkOTliMi4uMmQ2NDBlNGEzIDEwMDY0NAorLS0tIGEvVGVzdHMvUXRBdXRvVWljSW50ZXJmYWNlL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQKK0BAIC0xNCw3ICsxNCw3IEBAIGVsc2UoKQorICAgaWYgKE5PVCBRVF9URVNUX1ZFUlNJT04gU1RSRVFVQUwgNSkKKyAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCisgICBlbmRpZigpCistICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKKysgICNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKKyAKKyAgIHNldChRVF9DT1JFX1RBUkdFVCBRdDU6OkNvcmUpCisgICBzZXQoUVRfR1VJX1RBUkdFVCBRdDU6OldpZGdldHMpCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0CitpbmRleCBkZmY5ZDBjNjYuLmM2ZThmYzNmNSAxMDA2NDQKKy0tLSBhL1Rlc3RzL1F0QXV0b2dlbi9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0CitAQCAtMjMsNyArMjMsNyBAQCBlbHNlKCkKKyAgIGlmIChOT1QgUVRfVEVTVF9WRVJTSU9OIFNUUkVRVUFMIDUpCisgICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiSW52YWxpZCBRdCB2ZXJzaW9uIHNwZWNpZmllZC4iKQorICAgZW5kaWYoKQorLSAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCisrICAjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCisgCisgICBzZXQoUVRfUVRDT1JFX1RBUkdFVCBRdDU6OkNvcmUpCisgCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuL21hY29zRlcvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9nZW4vbWFjb3NGVy9DTWFrZUxpc3RzLnR4dAoraW5kZXggMTE0ZDliYWMwLi4xNTdmZTBhYWEgMTAwNjQ0CistLS0gYS9UZXN0cy9RdEF1dG9nZW4vbWFjb3NGVy9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuL21hY29zRlcvQ01ha2VMaXN0cy50eHQKK0BAIC0xLDcgKzEsNyBAQAorIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjgpCisgcHJvamVjdChtYWNvcy1mdy10ZXN0KQorIAorLWZpbmRfcGFja2FnZShRdDVUZXN0IFJFUVVJUkVEKQorKyNmaW5kX3BhY2thZ2UoUXQ1VGVzdCBSRVFVSVJFRCkKKyAKKyBzZXQoQ01BS0VfQ1hYX1NUQU5EQVJEIDExKQorIHNldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9vdXRwdXQvYmluKQorZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b2dlbi9tb2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuL21vY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQKK2luZGV4IDgyMTdiOGRiZi4uODZiYjdiYzdmIDEwMDY0NAorLS0tIGEvVGVzdHMvUXRBdXRvZ2VuL21vY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQKKysrKyBiL1Rlc3RzL1F0QXV0b2dlbi9tb2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0CitAQCAtMTAsNyArMTAsNyBAQCBlbHNlKCkKKyAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCisgICBlbmRpZigpCisgCistICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKysgICNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKyAgIHNldChRVF9DT1JFX1RBUkdFVCBRdDU6OkNvcmUpCisgZW5kaWYoKQorIAorZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b2dlblJlcnVuL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vQ01ha2VMaXN0cy50eHQKK2luZGV4IGU3MmMxOTEyZS4uZDdlNjg4NGNlIDEwMDY0NAorLS0tIGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vQ01ha2VMaXN0cy50eHQKKysrKyBiL1Rlc3RzL1F0QXV0b2dlblJlcnVuL0NNYWtlTGlzdHMudHh0CitAQCAtMiw3ICsyLDcgQEAgY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuOSkKKyBjbWFrZV9wb2xpY3koU0VUIENNUDAwNzEgTkVXKQorIHByb2plY3QoUXRBdXRvZ2VuUmVydW4pCisgCistIyBUZWxsIGZpbmRfcGFja2FnZShRdDUpIHdoZXJlIHRvIGZpbmQgUXQuCisrIyBUZWxsICNmaW5kX3BhY2thZ2UoUXQ1KSB3aGVyZSB0byBmaW5kIFF0LgorIGlmKFFUX1FNQUtFX0VYRUNVVEFCTEUpCisgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KFF0X0JJTl9ESVIgIiR7UVRfUU1BS0VfRVhFQ1VUQUJMRX0iIFBBVEgpCisgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KFF0X1BSRUZJWF9ESVIgIiR7UXRfQklOX0RJUn0iIFBBVEgpCitAQCAtMjMsNyArMjMsNyBAQCBlbHNlKCkKKyAgIGlmIChOT1QgUVRfVEVTVF9WRVJTSU9OIFNUUkVRVUFMIDUpCisgICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiSW52YWxpZCBRdCB2ZXJzaW9uIHNwZWNpZmllZC4iKQorICAgZW5kaWYoKQorLSAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCisrICAjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCisgCisgICBzZXQoUVRfUVRDT1JFX1RBUkdFVCBRdDU6OkNvcmUpCisgCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUGx1Z2luL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUGx1Z2luL0NNYWtlTGlzdHMudHh0CitpbmRleCBiN2NjNWU5ZmYuLmUxZDEwOTk1MyAxMDA2NDQKKy0tLSBhL1Rlc3RzL1F0QXV0b2dlblJlcnVuL21vY1BsdWdpbi9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUGx1Z2luL0NNYWtlTGlzdHMudHh0CitAQCAtOSw3ICs5LDcgQEAgc2V0KENNQUtFX0FVVE9NT0NfREVQRU5EX0ZJTFRFUlMKKyBpZiAoTk9UIFFUX1RFU1RfVkVSU0lPTiBTVFJFUVVBTCA1KQorICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCisgZW5kaWYoKQorLWZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKQorKyNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKKyAKKyBpZihRdDVfUE9TSVRJT05fSU5ERVBFTkRFTlRfQ09ERSBBTkQgQ01BS0VfQ1hYX0NPTVBJTEVfT1BUSU9OU19QSUMpCisgICBhZGRfZGVmaW5pdGlvbnMoJHtDTUFLRV9DWFhfQ09NUElMRV9PUFRJT05TX1BJQ30pCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUmVydW4vQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NSZXJ1bi9DTWFrZUxpc3RzLnR4dAoraW5kZXggYmFmZDljZjQ4Li40M2VjOTMzZDIgMTAwNjQ0CistLS0gYS9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NSZXJ1bi9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUmVydW4vQ01ha2VMaXN0cy50eHQKK0BAIC0xMCw3ICsxMCw3IEBAIGVsc2UoKQorICAgICBtZXNzYWdlKFNFTkRfRVJST1IgIkludmFsaWQgUXQgdmVyc2lvbiBzcGVjaWZpZWQuIikKKyAgIGVuZGlmKCkKKyAKKy0gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorKyAgI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorICAgc2V0KFFUX0NPUkVfVEFSR0VUIFF0NTo6Q29yZSkKKyBlbmRpZigpCisgCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vcmNjRGVwZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0QXV0b2dlblJlcnVuL3JjY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQKK2luZGV4IDI5MTU5MmU3ZC4uNDBjZDUyODY4IDEwMDY0NAorLS0tIGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vcmNjRGVwZW5kcy9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vcmNjRGVwZW5kcy9DTWFrZUxpc3RzLnR4dAorQEAgLTksNyArOSw3IEBAIGVsc2UoKQorICAgICBtZXNzYWdlKFNFTkRfRVJST1IgIkludmFsaWQgUXQgdmVyc2lvbiBzcGVjaWZpZWQuIikKKyAgIGVuZGlmKCkKKyAKKy0gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorKyAgI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorICAgc2V0KFFUX0NPUkVfVEFSR0VUIFF0NTo6Q29yZSkKKyBlbmRpZigpCisgCitkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAoraW5kZXggMjkzMjVmZjBhLi5kMzBkMDFlNzggMTAwNjQ0CistLS0gYS9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQKK0BAIC0yNzQsNyArMjc0LDcgQEAgYWRkX1J1bkNNYWtlX3Rlc3QoY29uZmlndXJlX2ZpbGUpCisgYWRkX1J1bkNNYWtlX3Rlc3QoQ1Rlc3RUaW1lb3V0QWZ0ZXJNYXRjaCkKKyAKKyBmaW5kX3BhY2thZ2UoUXQ0IFFVSUVUKQorLWZpbmRfcGFja2FnZShRdDVDb3JlIFFVSUVUKQorKyNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBRVUlFVCkKKyBpZiAoUVQ0X0ZPVU5EIEFORCBRdDVDb3JlX0ZPVU5EIEFORCBOT1QgUXQ1Q29yZV9WRVJTSU9OIFZFUlNJT05fTEVTUyA1LjEuMCkKKyAgIGFkZF9SdW5DTWFrZV90ZXN0KEluY29tcGF0aWJsZVF0KQorIGVuZGlmKCkKK2RpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlCitpbmRleCA0ZmNjZGM0MTguLmI3NmUxZTUzMSAxMDA2NDQKKy0tLSBhL1Rlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlCisrKysgYi9UZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZQorQEAgLTEsNiArMSw2IEBACisgCisgZmluZF9wYWNrYWdlKFF0NCBSRVFVSVJFRCkKKy1maW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKysjZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisgCisgYWRkX2V4ZWN1dGFibGUobWFpbmV4ZSBtYWluLmNwcCkKKyB0YXJnZXRfbGlua19saWJyYXJpZXMobWFpbmV4ZSBRdDQ6OlF0Q29yZSBRdDU6OkNvcmUpCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL3N1cHBvcnQtb2UtcXQ0LXRvb2xzLW5hbWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9zdXBwb3J0LW9lLXF0NC10b29scy1uYW1lcy5wYXRjaAppbmRleCAxNWNiY2E4Li42ODQxNTU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL3N1cHBvcnQtb2UtcXQ0LXRvb2xzLW5hbWVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2Uvc3VwcG9ydC1vZS1xdDQtdG9vbHMtbmFtZXMucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1jbWFrZTogc3VwcG9ydCBPcGVuRW1iZWRkZWQgUXQ0IHRvb2wgYmluYXJ5IG5hbWVzCitGcm9tIDEwYjhiNTIzODY5MTI0ZDJmYzhjZDk4ZDllMDI4YzBiY2ZmZDYxYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorRGF0ZTogVGh1LCAxMiBNYXkgMjAxMSAxNTozNjowMyArMDAwMAorU3ViamVjdDogW1BBVENIIDEvMl0gY21ha2U6IHN1cHBvcnQgT3BlbkVtYmVkZGVkIFF0NCB0b29sIGJpbmFyeSBuYW1lcwogCiBUaGUgRmluZFF0NCBtb2R1bGUgbG9va3MgZm9yIFF0NCBiaW5hcmllcyB0byBiZSBhYmxlIHRvIGdhdGhlciB0aGUKIHBhdGhzIHVzZWQgZm9yIGNvbXBpbGF0aW9uIGFuZCBhbHNvIHRvIGJlIHVzaW5nIGR1cmluZyBvdGhlciBwcm9jZXNzZXMKQEAgLTE1LDE1ICsxOCwxNiBAQAogSW5zdGVhZCBvZiBmaW5kX3Byb2dyYW0sIF9maW5kX3F0NF9wcm9ncmFtIGlzIG5vdyB1c2VkLgogCiBTaWduZWQtb2ZmLWJ5OiBNb3JpdHogQmx1bWUgPG1vcml0ei5ibHVtZUBibXctY2FyaXQuZGU+CisKIC0tLQogIE1vZHVsZXMvRmluZFF0NC5jbWFrZSB8IDEwICsrKysrLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlIGIvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCi1pbmRleCAxMTA5MWI1Li42NzA0NzY5IDEwMDY0NAoraW5kZXggYzY3ZDBiZS4uMGNmMTY5YiAxMDA2NDQKIC0tLSBhL01vZHVsZXMvRmluZFF0NC5jbWFrZQogKysrIGIvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCi1AQCAtNTIyLDcgKzUyMiw3IEBAIGVuZGZ1bmN0aW9uKCkKK0BAIC01MTYsNyArNTE2LDcgQEAgZW5kZnVuY3Rpb24oKQogIAogIHNldChRVDRfSU5TVEFMTEVEX1ZFUlNJT05fVE9PX09MRCBGQUxTRSkKICAKQEAgLTMyLDcgKzM2LDcgQEAKICBfcXQ0X2ZpbmRfcW1ha2UoIiR7X1FUNF9RTUFLRV9OQU1FU30iIFFUX1FNQUtFX0VYRUNVVEFCTEUgUVRWRVJTSU9OKQogIAogIGlmIChRVF9RTUFLRV9FWEVDVVRBQkxFIEFORAotQEAgLTExNDgsMTIgKzExNDgsMTIgQEAgaWYgKFFUX1FNQUtFX0VYRUNVVEFCTEUgQU5ECitAQCAtMTE0MiwxMiArMTE0MiwxMiBAQCBpZiAoUVRfUU1BS0VfRVhFQ1VUQUJMRSBBTkQKICAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX01PQ19FWEVDVVRBQkxFIFF0NDo6bW9jIG1vYy1xdDQgbW9jNCBtb2MpCiAgICBfZmluZF9xdDRfcHJvZ3JhbShRVF9VSUNfRVhFQ1VUQUJMRSBRdDQ6OnVpYyB1aWMtcXQ0IHVpYzQgdWljKQogICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfVUlDM19FWEVDVVRBQkxFIFF0NDo6dWljMyB1aWMzKQpAQCAtNTAsNSArNTQsNSBAQAogICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfTElOR1VJU1RfRVhFQ1VUQUJMRSBRdDQ6Omxpbmd1aXN0IGxpbmd1aXN0LXF0NCBsaW5ndWlzdDQgbGluZ3Vpc3QpCiAgCiAtLSAKLTEuOS4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjEwLjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy44LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy4xMC4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2N2ZS1jaGVjay10b29sXzUuNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9jdmUtY2hlY2stdG9vbF81LjYuNC5iYgppbmRleCA3YjcwZGFhLi4xYzg0ZmIxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2N2ZS1jaGVjay10b29sXzUuNi40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvY3ZlLWNoZWNrLXRvb2xfNS42LjQuYmIKQEAgLTQxLDYgKzQxLDcgQEAKICAgICBbIC16ICIke2N2ZV9kaXJ9IiBdICYmIGN2ZV9kaXI9IiR7RExfRElSfS9DVkVfQ0hFQ0siCiAgICAgWyAteiAiJHtjdmVfZmlsZX0iIF0gJiYgY3ZlX2ZpbGU9IiR7VE1QRElSfS9jdmVfY2hlY2siCiAKKyAgICB1bnVzZWQ9IiR7QGJiLnV0aWxzLmV4cG9ydF9wcm94aWVzKGQpfSIKICAgICBiYmRlYnVnIDIgIlVwZGF0aW5nIGN2ZS1jaGVjay10b29sIGRhdGFiYXNlIGxvY2F0ZWQgaW4gJGN2ZV9kaXIiCiAgICAgIyAtLWNhY2VydCB3b3JrcyBhcm91bmQgY3VybC1uYXRpdmUgbm90IGZpbmRpbmcgdGhlIENBIGJ1bmRsZQogICAgIGlmIGN2ZS1jaGVjay11cGRhdGUgLS1jYWNlcnQgJHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCAtZCAiJGN2ZV9kaXIiIDsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2Rpc3RjY18zLjIuYmIKaW5kZXggZTZmMTU5Yy4uNjYwNDY0OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiCkBAIC0yMyw3ICsyMyw2IEBACiAgICAgICAgICAgIGZpbGU6Ly9kaXN0Y2Muc2VydmljZSIKIFNSQ1JFViA9ICJkOGIxOGRmM2U5ZGNiZTRmMDkyYmVkNTY1ODM1ZDM5NzVlOTk0MzJjIgogUyA9ICIke1dPUktESVJ9L2dpdCIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kCiAKQEAgLTQxLDcgKzQwLDkgQEAKIFNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZGlzdGNjLnNlcnZpY2UiCiAKLWRvX2luc3RhbGxfYXBwZW5kKCkgeworZG9faW5zdGFsbCgpIHsKKyAgICAjIEltcHJvdmUgcmVwcm9kdWNpYmlsaXR5OiBjb21wcmVzcyB3L28gdGltZXN0YW1wcworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgICJHWklQX0JJTj1nemlwIC1uIiBpbnN0YWxsCiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGlzdGNjICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLUNoZWNrLWNvbmYucmVsZWFzZXZlci1pbnN0ZWFkLW9mLXJlbGVhc2V2ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1DaGVjay1jb25mLnJlbGVhc2V2ZXItaW5zdGVhZC1vZi1yZWxlYXNldmVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWYzMTQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLUNoZWNrLWNvbmYucmVsZWFzZXZlci1pbnN0ZWFkLW9mLXJlbGVhc2V2ZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDE2NjgzM2E4OGE5MjhhNTc0YmY5MTQzYjliNjVmNTQ0YmU0ODJjNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTggQXVnIDIwMTcgMTU6NTU6MTUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgY29uZi5yZWxlYXNldmVyIGluc3RlYWQgb2YgcmVsZWFzZXZlcgotCi1UaGUgc3Vic3RpdHV0aW9ucyBtYXkgYWN0dWFsbHkgc2V0IHRoZSBjb25mLnJlbGVhc2V2ZXIgY29ycmVjdGx5LAotYW5kIHNvIHRoZSBjaGVjayBzaG91bGQgdXNlIHRoYXQgaW5zdGVhZCBvZiB0aGUgcGFzc2VkLWluIGZ1bmN0aW9uCi1wYXJhbWV0ZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvZG5mL3B1bGwvOTAxXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBkbmYvY2xpL2NsaS5weSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2RuZi9jbGkvY2xpLnB5IGIvZG5mL2NsaS9jbGkucHkKLWluZGV4IDJkNjM0MjBjLi4xNjc5NDNiOCAxMDA2NDQKLS0tLSBhL2RuZi9jbGkvY2xpLnB5Ci0rKysgYi9kbmYvY2xpL2NsaS5weQotQEAgLTkxNCw3ICs5MTQsNyBAQCBjbGFzcyBDbGkob2JqZWN0KToKLSAgICAgICAgIGNvbmYucmVsZWFzZXZlciA9IHJlbGVhc2V2ZXIKLSAgICAgICAgIHN1YnN0ID0gY29uZi5zdWJzdGl0dXRpb25zCi0gICAgICAgICBzdWJzdC51cGRhdGVfZnJvbV9ldGMoY29uZi5pbnN0YWxscm9vdCkKLS0gICAgICAgIGlmIHJlbGVhc2V2ZXIgaXMgTm9uZToKLSsgICAgICAgIGlmIGNvbmYucmVsZWFzZXZlciBpcyBOb25lOgotICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKF8oIlVuYWJsZSB0byBkZXRlY3QgcmVsZWFzZSB2ZXJzaW9uICh1c2UgJy0tcmVsZWFzZXZlcicgdG8gc3BlY2lmeSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVsZWFzZSB2ZXJzaW9uKSIpKQotIAotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtQ29ycmV0bHktaW5zdGFsbC10bXBmaWxlcy5kLWNvbmZpZ3VyYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Db3JyZXRseS1pbnN0YWxsLXRtcGZpbGVzLmQtY29uZmlndXJhdGlvbi5wYXRjaAppbmRleCBjOWRmNDU4Li42NjkyYjQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Db3JyZXRseS1pbnN0YWxsLXRtcGZpbGVzLmQtY29uZmlndXJhdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Db3JyZXRseS1pbnN0YWxsLXRtcGZpbGVzLmQtY29uZmlndXJhdGlvbi5wYXRjaApAQCAtMSwxMCArMSwxMSBAQAotRnJvbSA4Y2UxODE3MTQ2NDAzMTVkMmRkMzdlZTc5NGFjYmIyMjA2M2NkNjY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwNWUwNTljZDRlOTkxMGMwMGIzMmQzNzdmNGY5OGUzYzhkZGU2YmM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDI2IEphbiAyMDE3IDE2OjM2OjIwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIENvcnJldGx5IGluc3RhbGwgdG1wZmlsZXMuZCBjb25maWd1cmF0aW9uCitTdWJqZWN0OiBbUEFUQ0ggNC81XSBDb3JyZXRseSBpbnN0YWxsIHRtcGZpbGVzLmQgY29uZmlndXJhdGlvbgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgZXRjL3RtcGZpbGVzLmQvQ01ha2VMaXN0cy50eHQgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCkBAIC0xNyw1ICsxOCw1IEBACiAtSU5TVEFMTCAoRklMRVMgZG5mLmNvbmYgREVTVElOQVRJT04gL3Vzci9saWIvdG1wZmlsZXMuZC8pCiArSU5TVEFMTCAoRklMRVMgZG5mLmNvbmYgREVTVElOQVRJT04gJHtTWVNDT05GRElSfS90bXBmaWxlcy5kLykKIC0tIAotMi4xMS4wCisyLjE0LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtRG8tbm90LWhhcmRjb2RlLWV0Yy1hbmQtc3lzdGVtZC11bml0LWRpcmVjdG9yaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtRG8tbm90LWhhcmRjb2RlLWV0Yy1hbmQtc3lzdGVtZC11bml0LWRpcmVjdG9yaWVzLnBhdGNoCmluZGV4IDBmMjYxZTUuLjE1YTdiZmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLURvLW5vdC1oYXJkY29kZS1ldGMtYW5kLXN5c3RlbWQtdW5pdC1kaXJlY3Rvcmllcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Eby1ub3QtaGFyZGNvZGUtZXRjLWFuZC1zeXN0ZW1kLXVuaXQtZGlyZWN0b3JpZXMucGF0Y2gKQEAgLTEsMTYgKzEsMTcgQEAKLUZyb20gNDMxM2NlZDEzMjA1OTQwMTM3OTVmMTFmNmRiMDAzODFlM2Y0Y2M0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYThlZjgxYzExNWE0NWYwNWRhZDE0NWM5OGUxMGYzYzQ5NDBlNGUyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVGh1LCAyNiBKYW4gMjAxNyAxNjoyNTo0NyArMDIwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgaGFyZGNvZGUgL2V0YyBhbmQgc3lzdGVtZCB1bml0IGRpcmVjdG9yaWVzCitTdWJqZWN0OiBbUEFUQ0ggMy81XSBEbyBub3QgaGFyZGNvZGUgL2V0YyBhbmQgc3lzdGVtZCB1bml0IGRpcmVjdG9yaWVzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBDTWFrZUxpc3RzLnR4dCB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA2YTMxOTkzNS4uZGIyMGNjZDQgMTAwNjQ0CitpbmRleCA2NTBiNjI0YS4uMTAxOTk2MTggMTAwNjQ0CiAtLS0gYS9DTWFrZUxpc3RzLnR4dAogKysrIGIvQ01ha2VMaXN0cy50eHQKIEBAIC03LDggKzcsOCBAQCBpZiAoTk9UIFBZVEhPTl9ERVNJUkVEKQpAQCAtMjUsNSArMjYsNSBAQAogIGlmICgke1BZVEhPTl9ERVNJUkVEfSBTVFJFUVVBTCAiMiIpCiAgCUZJTkRfUEFDS0FHRSAoUHl0aG9uSW50ZXJwIFJFUVVJUkVEKQogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MGU3N2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtRG8tbm90LXByZXBlbmQtaW5zdGFsbHJvb3QtdG8tbG9nZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAzMTY1M2QzMjRjZjhjN2IxZjJmOWU0OWQyMjY3NmJkMmFjNTQ2MzMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDExIEphbiAyMDE3IDE1OjEwOjEzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBwcmVwZW5kIGluc3RhbGxyb290IHRvIGxvZ2Rpci4KLQotVGhpcyB3b3VsZCBvdGhlcndpc2Ugd3JpdGUgdGhlIGxvZ3MgaW50byByb290ZnMvdmFyL2xvZwotKHdoZXJlYXMgd2Ugd2FudCB0aGVtIGluICRUKSwKLWFuZCB3aWxsIGJyZWFrIGluc3RhbGxhdGlvbiBvZiBiYXNlLWZpbGVzIHJwbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBkbmYvY2xpL2NsaS5weSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2RuZi9jbGkvY2xpLnB5IGIvZG5mL2NsaS9jbGkucHkKLWluZGV4IGI3NjQ4MDFhLi44OTNmNGJkYSAxMDA2NDQKLS0tLSBhL2RuZi9jbGkvY2xpLnB5Ci0rKysgYi9kbmYvY2xpL2NsaS5weQotQEAgLTg4MSw3ICs4ODEsNyBAQCBjbGFzcyBDbGkob2JqZWN0KToKLSAgICAgICAgIHN1YnN0ID0gY29uZi5zdWJzdGl0dXRpb25zCi0gICAgICAgICBzdWJzdC51cGRhdGVfZnJvbV9ldGMoY29uZi5pbnN0YWxscm9vdCkKLSAKLS0gICAgICAgIGZvciBvcHQgaW4gKCdjYWNoZWRpcicsICdsb2dkaXInLCAncGVyc2lzdGRpcicpOgotKyAgICAgICAgZm9yIG9wdCBpbiAoJ2NhY2hlZGlyJywgJ3BlcnNpc3RkaXInKToKLSAgICAgICAgICAgICBjb25mLnByZXBlbmRfaW5zdGFsbHJvb3Qob3B0KQotIAotICAgICAgICAgc2VsZi5iYXNlLl9sb2dnaW5nLl9zZXR1cF9mcm9tX2RuZl9jb25mKGNvbmYpCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwNS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwNS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEyMDAwOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDA1LURvLW5vdC1wcmVwZW5kLWluc3RhbGxyb290LXRvLWxvZ2Rpci5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDYzNjUzODkwNzRhMWI4Njk2MmYzZDhiMjJhMmVhZDIyMDIwMjZhOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTEgSmFuIDIwMTcgMTU6MTA6MTMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIERvIG5vdCBwcmVwZW5kIGluc3RhbGxyb290IHRvIGxvZ2Rpci4KKworVGhpcyB3b3VsZCBvdGhlcndpc2Ugd3JpdGUgdGhlIGxvZ3MgaW50byByb290ZnMvdmFyL2xvZworKHdoZXJlYXMgd2Ugd2FudCB0aGVtIGluICRUKSwKK2FuZCB3aWxsIGJyZWFrIGluc3RhbGxhdGlvbiBvZiBiYXNlLWZpbGVzIHJwbS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBkbmYvY2xpL2NsaS5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2RuZi9jbGkvY2xpLnB5IGIvZG5mL2NsaS9jbGkucHkKK2luZGV4IGQyZDljMDgyLi44MjI3MGVjZiAxMDA2NDQKKy0tLSBhL2RuZi9jbGkvY2xpLnB5CisrKysgYi9kbmYvY2xpL2NsaS5weQorQEAgLTkyMCw3ICs5MjAsNyBAQCBjbGFzcyBDbGkob2JqZWN0KToKKyAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhfKCJVbmFibGUgdG8gZGV0ZWN0IHJlbGVhc2UgdmVyc2lvbiAodXNlICctLXJlbGVhc2V2ZXInIHRvIHNwZWNpZnkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlbGVhc2UgdmVyc2lvbikiKSkKKyAKKy0gICAgICAgIGZvciBvcHQgaW4gKCdjYWNoZWRpcicsICdsb2dkaXInLCAncGVyc2lzdGRpcicpOgorKyAgICAgICAgZm9yIG9wdCBpbiAoJ2NhY2hlZGlyJywgJ3BlcnNpc3RkaXInKToKKyAgICAgICAgICAgICBjb25mLnByZXBlbmRfaW5zdGFsbHJvb3Qob3B0KQorIAorICAgICAgICAgc2VsZi5iYXNlLl9sb2dnaW5nLl9zZXR1cF9mcm9tX2RuZl9jb25mKGNvbmYpCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAyOS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDI5LURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCmluZGV4IDhjNTlmOWYuLjZlMDExOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDI5LURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDI5LURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCkBAIC0xLDE2ICsxLDE3IEBACi1Gcm9tIDNkZGFhOTMwY2RhNTdhNjJhMjE3NGZhZWJjYzg3YWViYzU5NTkxZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDcyMDUwMzNlNDRkOGZiYTFkM2IxOGI0OTBlN2VhYWI4MmRhMWZmYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMzAgRGVjIDIwMTYgMTg6Mjk6MDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyOS8zMF0gRG8gbm90IHNldCBQWVRIT05fSU5TVEFMTF9ESVIgYnkgcnVubmluZyBweXRob24KK1N1YmplY3Q6IFtQQVRDSCAxLzVdIERvIG5vdCBzZXQgUFlUSE9OX0lOU1RBTExfRElSIGJ5IHJ1bm5pbmcgcHl0aG9uCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBDTWFrZUxpc3RzLnR4dCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDZhMzE5OTM1Li40NjZjYTFlNiAxMDA2NDQKK2luZGV4IDIzZTVmODg5Li42NTBiNjI0YSAxMDA2NDQKIC0tLSBhL0NNYWtlTGlzdHMudHh0CiArKysgYi9DTWFrZUxpc3RzLnR4dAogQEAgLTE4LDcgKzE4LDcgQEAgZWxzZSgpCkBAIC0yMyw1ICsyNCw1IEBACiAgTUVTU0FHRShTVEFUVVMgIlB5dGhvbiBpbnN0YWxsIGRpciBpcyAke1BZVEhPTl9JTlNUQUxMX0RJUn0iKQogIAogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMzAtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaAppbmRleCAxYWJkODgwLi5lZWRiYjU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDMwLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2gKQEAgLTEsMTkgKzEsMjAgQEAKLUZyb20gOWM4ZDU0NTE1MmIzNWQ4OTQzYmU3MmI5NTAzNDE0YTUzZTFlYmY3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGQ5N2I3MmExZDc3MTQ5ZTJmOTA0OGQxY2E2Y2VmNjZkYTFhOGFhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoyOTozNyArMDIwMAotU3ViamVjdDogW1BBVENIIDMwLzMwXSBSdW4gcHl0aG9uIHNjcmlwdHMgdXNpbmcgZW52CitTdWJqZWN0OiBbUEFUQ0ggMi81XSBSdW4gcHl0aG9uIHNjcmlwdHMgdXNpbmcgZW52CiAKIE90aGVyd2lzZSB0aGUgYnVpbGQgdG9vbHMgaGFyZGNvZGUgdGhlIHB5dGhvbiBwYXRoIGludG8gdGhlbS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIGJpbi9kbmYtYXV0b21hdGljLmluIHwgMiArLQogIGJpbi9kbmYuaW4gICAgICAgICAgIHwgMiArLQogIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmluL2RuZi1hdXRvbWF0aWMuaW4gYi9iaW4vZG5mLWF1dG9tYXRpYy5pbgotaW5kZXggNWIwNmFhMjYuLjlmNmY3MDNlIDEwMDc1NQoraW5kZXggNWIwNmFhMjYuLjg5MWI0YzI0IDEwMDc1NQogLS0tIGEvYmluL2RuZi1hdXRvbWF0aWMuaW4KICsrKyBiL2Jpbi9kbmYtYXV0b21hdGljLmluCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTIzLDcgKzI0LDcgQEAKICAjCiAgIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBSZWQgSGF0LCBJbmMuCiBkaWZmIC0tZ2l0IGEvYmluL2RuZi5pbiBiL2Jpbi9kbmYuaW4KLWluZGV4IDY0NWQwZjA2Li5hYjE0MWFiZCAxMDA3NTUKK2luZGV4IDY0NWQwZjA2Li5iZGY3YjNjNCAxMDA3NTUKIC0tLSBhL2Jpbi9kbmYuaW4KICsrKyBiL2Jpbi9kbmYuaW4KIEBAIC0xLDQgKzEsNCBAQApAQCAtMzMsNSArMzQsNSBAQAogICMKICAjIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IFJlZCBIYXQsIEluYy4KIC0tIAotMi4xMS4wCisyLjE0LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzIuNi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzIuNi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWQ2YTc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl8yLjYuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiUGFja2FnZSBtYW5hZ2VyIGZvcmtlZCBmcm9tIFl1bSwgdXNpbmcgbGlic29sdiBhcyBhIGRlcGVuZGVuY3kgcmVzb2x2ZXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFDS0FHRS1MSUNFTlNJTkc7bWQ1PWJmYzI5OTE2ZTExMzIxYmUwNjkyNGM0ZmIwOTZmZGNjIFwKLSAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9kbmYuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMjktRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXByZXBlbmQtaW5zdGFsbHJvb3QtdG8tbG9nZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWV0Yy1hbmQtc3lzdGVtZC11bml0LWRpcmVjdG9yaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ29ycmV0bHktaW5zdGFsbC10bXBmaWxlcy5kLWNvbmZpZ3VyYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1DaGVjay1jb25mLnJlbGVhc2V2ZXItaW5zdGVhZC1vZi1yZWxlYXNldmVyLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNSRVYgPSAiYmUyNTg1MTgzZWM0NDg1ZWU0ZDVlMTIxZjI0MmQ4NjY5Mjk2ZjA2NSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZSBnZXR0ZXh0IGJhc2gtY29tcGxldGlvbiBkaXN0dXRpbHMzLWJhc2Ugc3lzdGVtZAotCi1ERVBFTkRTICs9ICJsaWJkbmYgbGlicmVwbyBsaWJjb21wcyBweXRob24zLWluaXBhcnNlIgotCi0jIG1hbnBhZ2VzIGdlbmVyYXRpb24gcmVxdWlyZXMgaHR0cDovL3d3dy5zcGhpbngtZG9jLm9yZy8KLUVYVFJBX09FQ01BS0UgPSAiIC1EV0lUSF9NQU49MCAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFBZVEhPTl9ERVNJUkVEPTMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtY29kZWNzIHB5dGhvbjMtbmV0Y2xpZW50IHB5dGhvbjMtZW1haWwgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy1kaXN0dXRpbHMgbGlicmVwbyBweXRob24zLXNoZWxsIHB5dGhvbjMtc3VicHJvY2VzcyBsaWJjb21wcyBsaWJkbmYgcHl0aG9uMy1zcWxpdGUzIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1ycG0gcHl0aG9uMy1pbmlwYXJzZSBweXRob24zLWpzb24gcHl0aG9uMy1pbXBvcnRsaWIgcHl0aG9uMy1jdXJzZXMgcHl0aG9uMy1hcmdwYXJzZSBweXRob24zLW1pc2MgcHl0aG9uMy1ncGciCi0jIFJlY29tbWVuZCBnbnVwZyBzbyB0aGF0IEdQRyBzaWduYXR1cmUgY2hlY2sgb24gcmVwb3NpdG9yeSBtZXRhZGF0YSBpcyBwb3NzaWJsZQotUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJnbnVwZyIKLQotIyBDcmVhdGUgYSBzeW1saW5rIGNhbGxlZCAnZG5mJyBhcyAnbWFrZSBpbnN0YWxsJyBkb2VzIG5vdCBkbyBpdCwgYnV0Ci0jIC5zcGVjIGZpbGUgaW4gZG5mIHNvdXJjZSB0cmVlIGRvZXMgKGFuZCB0aGVuIEZlZG9yYSBhbmQgZG5mIGRvY3VtZW50YXRpb24KLSMgc2F5cyB0aGF0IGRuZiBiaW5hcnkgaXMgcGxhaW4gJ2RuZicpLgotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgICAgIGxuciAke0R9LyR7YmluZGlyfS9kbmYtMyAke0R9LyR7YmluZGlyfS9kbmYKLSAgICAgICAgbG5yICR7RH0vJHtiaW5kaXJ9L2RuZi1hdXRvbWF0aWMtMyAke0R9LyR7YmluZGlyfS9kbmYtYXV0b21hdGljCi19Ci0KLSMgRGlyZWN0IGRuZi1uYXRpdmUgdG8gcmVhZCBycG0gY29uZmlndXJhdGlvbiBmcm9tIG91ciBzeXNyb290LCBub3QgdGhlIG9uZSBpdCB3YXMgY29tcGlsZWQgaW4KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZG5mIFwKLSAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0gXAotICAgICAgICAgICAgICAgIFJQTV9OT19DSFJPT1RfRk9SX1NDUklQVFM9MQotfQotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZG5mLW1ha2VjYWNoZS5zZXJ2aWNlIGRuZi1tYWtlY2FjaGUudGltZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtZG93bmxvYWQuc2VydmljZSBkbmYtYXV0b21hdGljLWRvd25sb2FkLnRpbWVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLWluc3RhbGwuc2VydmljZSBkbmYtYXV0b21hdGljLWluc3RhbGwudGltZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtbm90aWZ5b25seS5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtbm90aWZ5b25seS50aW1lciBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi43LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi43LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg4ZGRiNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl8yLjcuNS5iYgpAQCAtMCwwICsxLDc0IEBACitTVU1NQVJZID0gIlBhY2thZ2UgbWFuYWdlciBmb3JrZWQgZnJvbSBZdW0sIHVzaW5nIGxpYnNvbHYgYXMgYSBkZXBlbmRlbmN5IHJlc29sdmVyIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBQ0tBR0UtTElDRU5TSU5HO21kNT1iZmMyOTkxNmUxMTMyMWJlMDY5MjRjNGZiMDk2ZmRjYyBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvZG5mLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJldGx5LWluc3RhbGwtdG1wZmlsZXMuZC1jb25maWd1cmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWV0Yy1hbmQtc3lzdGVtZC11bml0LWRpcmVjdG9yaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtRG8tbm90LXByZXBlbmQtaW5zdGFsbHJvb3QtdG8tbG9nZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiNTY0YzQ0NjY3YzcwMTQ4NDNmYTZmMTczMjYyMTA5MzExNGVjNTliMiIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBnZXR0ZXh0IGJhc2gtY29tcGxldGlvbiBkaXN0dXRpbHMzLWJhc2Ugc3lzdGVtZAorCitERVBFTkRTICs9ICJsaWJkbmYgbGlicmVwbyBsaWJjb21wcyBweXRob24zLWluaXBhcnNlIgorCisjIG1hbnBhZ2VzIGdlbmVyYXRpb24gcmVxdWlyZXMgaHR0cDovL3d3dy5zcGhpbngtZG9jLm9yZy8KK0VYVFJBX09FQ01BS0UgPSAiIC1EV0lUSF9NQU49MCAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFBZVEhPTl9ERVNJUkVEPTMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAorICBweXRob24zLWNvcmUgXAorICBweXRob24zLWNvZGVjcyBcCisgIHB5dGhvbjMtbmV0Y2xpZW50IFwKKyAgcHl0aG9uMy1lbWFpbCBcCisgIHB5dGhvbjMtdGhyZWFkaW5nIFwKKyAgcHl0aG9uMy1kaXN0dXRpbHMgXAorICBweXRob24zLWxvZ2dpbmcgXAorICBweXRob24zLWZjbnRsIFwKKyAgbGlicmVwbyBcCisgIHB5dGhvbjMtc2hlbGwgXAorICBsaWJjb21wcyBcCisgIGxpYmRuZiBcCisgIHB5dGhvbjMtc3FsaXRlMyBcCisgIHB5dGhvbjMtY29tcHJlc3Npb24gXAorICBweXRob24zLXJwbSBcCisgIHB5dGhvbjMtaW5pcGFyc2UgXAorICBweXRob24zLWpzb24gXAorICBweXRob24zLWN1cnNlcyBcCisgIHB5dGhvbjMtbWlzYyBcCisgIHB5dGhvbjMtZ3BnIFwKKyAgIgorCitSUkVDT01NRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gImdudXBnIgorCisjIENyZWF0ZSBhIHN5bWxpbmsgY2FsbGVkICdkbmYnIGFzICdtYWtlIGluc3RhbGwnIGRvZXMgbm90IGRvIGl0LCBidXQKKyMgLnNwZWMgZmlsZSBpbiBkbmYgc291cmNlIHRyZWUgZG9lcyAoYW5kIHRoZW4gRmVkb3JhIGFuZCBkbmYgZG9jdW1lbnRhdGlvbgorIyBzYXlzIHRoYXQgZG5mIGJpbmFyeSBpcyBwbGFpbiAnZG5mJykuCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgbG5yICR7RH0vJHtiaW5kaXJ9L2RuZi0zICR7RH0vJHtiaW5kaXJ9L2RuZgorICAgICAgICBsbnIgJHtEfS8ke2JpbmRpcn0vZG5mLWF1dG9tYXRpYy0zICR7RH0vJHtiaW5kaXJ9L2RuZi1hdXRvbWF0aWMKK30KKworIyBEaXJlY3QgZG5mLW5hdGl2ZSB0byByZWFkIHJwbSBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9kbmYgXAorICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3JwbSBcCisgICAgICAgICAgICAgICAgUlBNX05PX0NIUk9PVF9GT1JfU0NSSVBUUz0xCit9CisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkbmYtbWFrZWNhY2hlLnNlcnZpY2UgZG5mLW1ha2VjYWNoZS50aW1lciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMudGltZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtZG93bmxvYWQuc2VydmljZSBkbmYtYXV0b21hdGljLWRvd25sb2FkLnRpbWVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLWluc3RhbGwuc2VydmljZSBkbmYtYXV0b21hdGljLWluc3RhbGwudGltZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtbm90aWZ5b25seS5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtbm90aWZ5b25seS50aW1lciBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDAxLWFyY2gtQWRkLXN1cHBvcnQtZm9yLXJpc2N2NjQtQ1BVLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMS1hcmNoLUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LUNQVS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWM2MDZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMS1hcmNoLUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LUNQVS5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDMxOWYzMmQ3NDNmNWI1ZTcyNTAxMjY1NGQxMjRlNDkyMjZkNWRlOTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNiBNYXIgMjAxOCAyMDoyODoyNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBhcmNoOiBBZGQgc3VwcG9ydCBmb3IgcmlzY3Y2NCBDUFUKKworICAqIEFyY2hpdGVjdHVyZSBzdXBwb3J0OgorICAgIC0gQWRkIHN1cHBvcnQgZm9yIHJpc2N2NjQgQ1BVLiBDbG9zZXM6ICM4MjI5MTQKKyAgICAgIFRoYW5rcyB0byBNYW51ZWwgQS4gRmVybmFuZGV6IE1vbnRlY2VsbyA8bWFmbUBkZWJpYW4ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL3BsdWdpbnMvc2NtZ2l0L2NnaS1iaW4vZ2l0d2ViLmNnaT9wPWRwa2clMkZkcGtnLmdpdDthPWNvbW1pdGRpZmZfcGxhaW47aD1lZTA4NTVjYzY2MDc2NjkxZGU0Nzk2YmU0OGY4YTBkODg5ZmRlMDAxO2hwPTJmNTgxNmQ4YmU0MGI0NDlkMjQ3M2IyMmY5ZTBjMzNiMzJmM2JkNzhdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBkYXRhL2NwdXRhYmxlICAgICAgICAgfCAxICsKKyBzY3JpcHRzL3QvRHBrZ19BcmNoLnQgfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RhdGEvY3B1dGFibGUgYi9kYXRhL2NwdXRhYmxlCitpbmRleCBhMmJkN2Q2Li45ZjJhOGUwIDEwMDY0NAorLS0tIGEvZGF0YS9jcHV0YWJsZQorKysrIGIvZGF0YS9jcHV0YWJsZQorQEAgLTQxLDYgKzQxLDcgQEAgcG93ZXJwYwkJcG93ZXJwYwkJKHBvd2VycGN8cHBjKQkJMzIJYmlnCisgcG93ZXJwY2VsCXBvd2VycGNsZQlwb3dlcnBjbGUJCTMyCWxpdHRsZQorIHBwYzY0CQlwb3dlcnBjNjQJKHBvd2VycGN8cHBjKTY0CQk2NAliaWcKKyBwcGM2NGVsCQlwb3dlcnBjNjRsZQlwb3dlcnBjNjRsZQkJNjQJbGl0dGxlCisrcmlzY3Y2NAkJcmlzY3Y2NAkJcmlzY3Y2NAkJCTY0CWxpdHRsZQorIHMzOTAJCXMzOTAJCXMzOTAJCQkzMgliaWcKKyBzMzkweAkJczM5MHgJCXMzOTB4CQkJNjQJYmlnCisgc2gzCQlzaDMJCXNoMwkJCTMyCWxpdHRsZQorZGlmZiAtLWdpdCBhL3NjcmlwdHMvdC9EcGtnX0FyY2gudCBiL3NjcmlwdHMvdC9EcGtnX0FyY2gudAoraW5kZXggZDQ3OGI0OS4uZWNkNWQ2NiAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvdC9EcGtnX0FyY2gudAorKysrIGIvc2NyaXB0cy90L0Rwa2dfQXJjaC50CitAQCAtMTYsNyArMTYsNyBAQAorIHVzZSBzdHJpY3Q7CisgdXNlIHdhcm5pbmdzOworIAorLXVzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDE2MzY3OworK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDE2ODMyOworIAorIHVzZV9vaygnRHBrZzo6QXJjaCcsIHF3KGRlYmFyY2hfdG9fZGVidHVwbGUgZGViYXJjaF90b19tdWx0aWFyY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICBkZWJhcmNoX2VxIGRlYmFyY2hfaXMgZGViYXJjaF9pc193aWxkY2FyZAorQEAgLTE2Miw3ICsxNjIsNyBAQCBpcyhnbnV0cmlwbGV0X3RvX2RlYmFyY2godW5kZWYpLCB1bmRlZiwgJ3VuZGVmIGdudXRyaXBsZXQnKTsKKyBpcyhnbnV0cmlwbGV0X3RvX2RlYmFyY2goJ3Vua25vd24tdW5rbm93bi11bmtub3duJyksIHVuZGVmLCAndW5rbm93biBnbnV0cmlwbGV0Jyk7CisgaXMoZ251dHJpcGxldF90b19kZWJhcmNoKCd4ODZfNjQtbGludXgtZ251JyksICdhbWQ2NCcsICdrbm93biBnbnV0cmlwbGV0Jyk7CisgCistaXMoc2NhbGFyIGdldF92YWxpZF9hcmNoZXMoKSwgNTI0LCAnZXhwZWN0ZWQgYW1vdW50IG9mIGtub3duIGFyY2hpdGVjdHVyZXMnKTsKKytpcyhzY2FsYXIgZ2V0X3ZhbGlkX2FyY2hlcygpLCA1MzksICdleHBlY3RlZCBhbW91bnQgb2Yga25vd24gYXJjaGl0ZWN0dXJlcycpOworIAorIHsKKyAgICAgbG9jYWwgJEVOVntDQ30gPSAnZmFsc2UnOworLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwNi1hZGQtbXVzbGVhYmktdG8ta25vd24tdGFyZ2V0LXRyaXBldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaAppbmRleCBkOTI5NDY2Li44Nzk3ZWE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaApAQCAtNSw2ICs1LDcgQEAKIAogaGVscHMgY29tcGlsaW5nIGRwa2cgZm9yIG11c2wvYXJtLXNvZnRmbG9hdAogCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KIC0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvZ2xpYmMyLjUtc3luY19maWxlX3JhbmdlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvZ2xpYmMyLjUtc3luY19maWxlX3JhbmdlLnBhdGNoCmluZGV4IGQ1NmI4YTYuLmQ0ODM4NjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2dsaWJjMi41LXN5bmNfZmlsZV9yYW5nZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9nbGliYzIuNS1zeW5jX2ZpbGVfcmFuZ2UucGF0Y2gKQEAgLTEsMTIgKzEsMTcgQEAKK0Zyb20gOWQyNjBkNDA4ZjllMTdhYmQxZDFkY2NkNjg1YmQ3ZTgwYTM2NTVhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERvbm4gU2VlbGV5IDxkb25uLnNlZWxleUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNSBGZWIgMjAxNCAxNzo0NDowNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBkcGtnOiBmaXggYSBsaW5rIHByb2JsZW0gZm9yIGRwa2ctbmF0aXZlIG9uIENlbnRPUyA1LjgKKwogQ2VudE9TIDUuOCBrZXJuZWxzIGFuZCBoZWFkZXJzIHN1cHBvcnQgdGhlIHN5bmNfZmlsZV9yYW5nZSgpIHN5c3RlbSBjYWxsLAogYnV0IGdsaWJjIDIuNSBkb2Vzbid0IHByb3ZpZGUgdGhlIHN5c2NhbGwgc3R1Yi4gIEl0IGFwcGVhcnMgdGhhdCB0aGlzCiBwcm9ibGVtIGlzIGtub3duIGJ1dCB3aWxsIG5ldmVyIGJlIGZpeGVkOgogCiAgIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTE4NTgxCiAKLSAgQnVnIDUxODU4MSAtIFtSSEVMNV0gZ2xpYmMgbWlzc2VzIHN5bmNfZmlsZV9yYW5nZSBzeXNjYWxsIGludGVyZmFjZSAKKyAgQnVnIDUxODU4MSAtIFtSSEVMNV0gZ2xpYmMgbWlzc2VzIHN5bmNfZmlsZV9yYW5nZSBzeXNjYWxsIGludGVyZmFjZQogCi0gIFN0YXR1czogICAgICAgQ0xPU0VEIENBTlRGSVggCisgIFN0YXR1czogICAgICAgQ0xPU0VEIENBTlRGSVgKICAgTGFzdCBDbG9zZWQ6ICAyMDA5LTExLTIyIDIyOjE5OjU1CiAKICAgS2lyYnkgWmhvdSAyMDA5LTA4LTIwIDIzOjM3OjU1IEVEVApAQCAtNjAsMTMgKzY1LDE2IEBACiAKIFNpZ25lZC1vZmYtYnk6IERvbm4gU2VlbGV5IDxkb25uLnNlZWxleUB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogTGVpIExpdSA8bGVpLmxpdTJAd2luZHJpdmVyLmNvbT4KKwogLS0tCi0gc3JjL2FyY2hpdmVzLmMgfCAgICA0ICsrLS0KKyBzcmMvYXJjaGl2ZXMuYyB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKK2RpZmYgLS1naXQgYS9zcmMvYXJjaGl2ZXMuYyBiL3NyYy9hcmNoaXZlcy5jCitpbmRleCA0YjJmYzkyLi5hOTJiNzk1IDEwMDY0NAogLS0tIGEvc3JjL2FyY2hpdmVzLmMKICsrKyBiL3NyYy9hcmNoaXZlcy5jCi1AQCAtNzUsNyArNzUsNyBAQAorQEAgLTY5LDcgKzY5LDcgQEAgZmRfd3JpdGViYWNrX2luaXQoaW50IGZkKQogICAgLyogSWdub3JlIHRoZSByZXR1cm4gY29kZSBhcyBpdCBzaG91bGQgYmUgY29uc2lkZXJlZCBlcXVpdmFsZW50IHRvIGFuCiAgICAgKiBhc3luY2hyb25vdXMgaGludCBmb3IgdGhlIGtlcm5lbCwgd2UgYXJlIGRvaW5nIGFuIGZzeW5jKCkgbGF0ZXIgb24KICAgICAqIGFueXdheS4gKi8KQEAgLTc1LDcgKzgzLDcgQEAKICAgIHN5bmNfZmlsZV9yYW5nZShmZCwgMCwgMCwgU1lOQ19GSUxFX1JBTkdFX1dSSVRFKTsKICAjZWxpZiBkZWZpbmVkKEhBVkVfUE9TSVhfRkFEVklTRSkKICAgIHBvc2l4X2ZhZHZpc2UoZmQsIDAsIDAsIFBPU0lYX0ZBRFZfRE9OVE5FRUQpOwotQEAgLTExNzksNyArMTE3OSw3IEBACitAQCAtMTA3OCw3ICsxMDc4LDcgQEAgdGFyb2JqZWN0KHZvaWQgKmN0eCwgc3RydWN0IHRhcl9lbnRyeSAqdGkpCiAgICByZXR1cm4gMDsKICB9CiAgCkBAIC04NCwzICs5Miw2IEBACiAgc3RhdGljIHZvaWQKICB0YXJfd3JpdGViYWNrX2JhcnJpZXIoc3RydWN0IGZpbGVpbmxpc3QgKmZpbGVzLCBzdHJ1Y3QgcGtnaW5mbyAqcGtnKQogIHsKKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnXzEuMTguMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZ18xLjE4LjI0LmJiCmluZGV4IGMwYzU5ZjEuLjZkOGVjMzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnXzEuMTguMjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4yNC5iYgpAQCAtMTQsNiArMTQsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNi1hZGQtbXVzbGVhYmktdG8ta25vd24tdGFyZ2V0LXRyaXBldHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNy1kcGtnLWRlYi1idWlsZC5jLVJlbW92ZS11c2FnZS1vZi1jbGFtcC1tdGltZS1pbi10YXIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1kcGtnLVN1cHBvcnQtbXVzbHgzMi1idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFyY2gtQWRkLXN1cHBvcnQtZm9yLXJpc2N2NjQtQ1BVLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZ2xpYmMyLjUtc3luY19maWxlX3JhbmdlLnBhdGNoICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kd2FyZnNyY2ZpbGVzL2R3YXJmc3JjZmlsZXMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2R3YXJmc3JjZmlsZXMvZHdhcmZzcmNmaWxlcy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTlhMDA2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kd2FyZnNyY2ZpbGVzL2R3YXJmc3JjZmlsZXMuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIHByaW50aW5nIGRlYmlnIHNvdXJjZSBmaWxlIGxvY2F0aW9ucyBlbWJlZGRlZCBpbiBiaW5hcmllcyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vZHdhcmZzcmNmaWxlcy5jO21kNT0zMTQ4Mzg5NGU0NTNhNzdhY2JiNjc4NDc1NjVmMWI1YztiZWdpbmxpbmU9MTtlbmRsaW5lPTgiCisKK1NSQ19VUkkgPSAiZmlsZTovL2R3YXJmc3JjZmlsZXMuYyIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorREVQRU5EUyA9ICJlbGZ1dGlscyIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgorCitkb19jb21waWxlICgpIHsKKwkke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSAtbyBkd2FyZnNyY2ZpbGVzIC4uL2R3YXJmc3JjZmlsZXMuYyAtbGVsZiAtbGR3Cit9CisKK2RvX2NvbXBpbGVfbGliYy1tdXNsICgpIHsKKwkke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSAtbyBkd2FyZnNyY2ZpbGVzIC4uL2R3YXJmc3JjZmlsZXMuYyAtbGVsZiAtbGR3IC1sYXJncCAKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtdCAke0R9JHtiaW5kaXJ9IGR3YXJmc3JjZmlsZXMKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kd2FyZnNyY2ZpbGVzL2ZpbGVzL2R3YXJmc3JjZmlsZXMuYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHdhcmZzcmNmaWxlcy9maWxlcy9kd2FyZnNyY2ZpbGVzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3YWY1MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHdhcmZzcmNmaWxlcy9maWxlcy9kd2FyZnNyY2ZpbGVzLmMKQEAgLTAsMCArMSwxMTEgQEAKKy8vIGR3YXJmc3JjZmlsZXMuYyAtIEdldCBzb3VyY2UgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkd2FyZiBpbiBhIGVsZiBmaWxlLgorLy8gZ2NjIC1XYWxsIC1nIC1PMiAtbGVsZiAtbGR3IC1vIGR3YXJmc3JjZmlsZXMgZHdhcmZzcmNmaWxlcy5jIAorLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMSwgTWFyayBXaWVsYWFyZCA8bWp3QHJlZGhhdC5jb20+CisvLworLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUuICBZb3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisvLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpOyBlaXRoZXIKKy8vIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworI2luY2x1ZGUgPGFyZ3AuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSA8ZHdhcmYuaD4KKyNpbmNsdWRlIDxlbGZ1dGlscy9saWJkdy5oPgorI2luY2x1ZGUgPGVsZnV0aWxzL2xpYmR3ZmwuaD4KKworc3RhdGljIGludAorcHJvY2Vzc19jdSAoRHdhcmZfRGllICpjdV9kaWUpCit7CisgIER3YXJmX0F0dHJpYnV0ZSBhdHRyOworICBjb25zdCBjaGFyICpuYW1lOworICBjb25zdCBjaGFyICpkaXIgPSBOVUxMOworICAKKyAgRHdhcmZfRmlsZXMgKmZpbGVzOworICBzaXplX3QgbjsKKyAgaW50IGk7CisgIAorICBpZiAoZHdhcmZfdGFnIChjdV9kaWUpICE9IERXX1RBR19jb21waWxlX3VuaXQpCisgICAgeworICAgICAgZnByaW50ZiAoc3RkZXJyLCAiRElFIGlzbid0IGEgY29tcGlsZSB1bml0Iik7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAKKyAgaWYgKGR3YXJmX2F0dHIgKGN1X2RpZSwgRFdfQVRfbmFtZSwgJmF0dHIpID09IE5VTEwpCisgICAgeworICAgICAgZnByaW50ZihzdGRlcnIsICJDVSBkb2Vzbid0IGhhdmUgYSBEV19BVF9uYW1lIik7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAKKyAgbmFtZSA9IGR3YXJmX2Zvcm1zdHJpbmcgKCZhdHRyKTsKKyAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IGdldCBEV19BVF9uYW1lIGFzIHN0cmluZywgJXMiLAorCSAgICAgZHdhcmZfZXJybXNnICgtMSkpOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgCisgIGlmIChkd2FyZl9hdHRyIChjdV9kaWUsIERXX0FUX2NvbXBfZGlyLCAmYXR0cikgIT0gTlVMTCkKKyAgICB7CisgICAgICBkaXIgPSBkd2FyZl9mb3Jtc3RyaW5nICgmYXR0cik7CisgICAgICBpZiAoZGlyID09IE5VTEwpCisJeworCSAgZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBnZXQgRFdfQVRfY29tcF9kaWUgYXMgc3RyaW5nLCAlcyIsCisJCSBkd2FyZl9lcnJtc2cgKC0xKSk7CisJICByZXR1cm4gLTE7CisJfQorICAgIH0KKyAgCisgIGlmIChkaXIgPT0gTlVMTCkKKyAgICBwcmludGYgKCIlc1xuIiwgbmFtZSk7CisgIGVsc2UKKyAgICBwcmludGYgKCIlcy8lc1xuIiwgZGlyLCBuYW1lKTsKKyAgCisgIGlmIChkd2FyZl9nZXRzcmNmaWxlcyAoY3VfZGllLCAmZmlsZXMsICZuKSAhPSAwKQorICAgIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGRuJ3QgZ2V0IENVIGZpbGUgdGFibGUsICVzIiwKKwkgICAgIGR3YXJmX2Vycm1zZyAoLTEpKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIAorICBmb3IgKGkgPSAxOyBpIDwgbjsgaSsrKQorICAgIHsKKyAgICAgIGNvbnN0IGNoYXIgKmZpbGUgPSBkd2FyZl9maWxlc3JjIChmaWxlcywgaSwgTlVMTCwgTlVMTCk7CisgICAgICBpZiAoZGlyICE9IE5VTEwgJiYgZmlsZVswXSAhPSAnLycpCisJcHJpbnRmICgiXHQlcy8lc1xuIiwgZGlyLCBmaWxlKTsKKyAgICAgIGVsc2UKKwlwcmludGYgKCJcdCVzXG4iLCBmaWxlKTsKKyAgICB9CisgIAorICByZXR1cm4gMDsKK30KKworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgIGNoYXIqIGFyZ3NbM107CisgIGludCByZXMgPSAwOworICBEd2ZsICpkd2ZsOworICBEd2FyZl9BZGRyIGJpYXM7CisgIAorICBpZiAoYXJnYyAhPSAyKQorICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2UgJXMgPGZpbGU+IiwgYXJndlswXSk7CisgIAorICAvLyBQcmV0ZW5kICJkd2FyZnNyY2ZpbGVzIC1lIDxmaWxlPiIgd2FzIGdpdmVuLCBzbyB3ZSBjYW4gdXNlIHN0YW5kYXJkCisgIC8vIGR3ZmwgYXJncCBwYXJzZXIgdG8gb3BlbiB0aGUgZmlsZSBmb3IgdXMgYW5kIGdldCBvdXIgRHdmbC4gVXNlZnVsCisgIC8vIGluIGNhc2UgYXJndW1lbnQgaXMgYW4gRVRfUkVMIGZpbGUgKGxpa2Uga2VybmVsIG1vZHVsZXMpLiBsaWJkd2ZsCisgIC8vIHdpbGwgZml4IHVwIHJlbG9jYXRpb25zIGZvciB1cy4KKyAgYXJnc1swXSA9IGFyZ3ZbMF07CisgIGFyZ3NbMV0gPSAiLWUiOworICBhcmdzWzJdID0gYXJndlsxXTsKKyAgCisgIGFyZ3BfcGFyc2UgKGR3Zmxfc3RhbmRhcmRfYXJncCAoKSwgMywgYXJncywgMCwgTlVMTCwgJmR3ZmwpOworICAKKyAgRHdhcmZfRGllICpjdSA9IE5VTEw7CisgIHdoaWxlICgoY3UgPSBkd2ZsX25leHRjdSAoZHdmbCwgY3UsICZiaWFzKSkgIT0gTlVMTCkKKyAgICByZXMgfD0gcHJvY2Vzc19jdSAoY3UpOworICAKKyAgZHdmbF9lbmQgKGR3ZmwpOworCisgIHJldHVybiByZXM7Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1saWJleHQyZnMtZml4LWJ1aWxkLWZhaWx1cmUtaW4tc3dhcGZzLmMtb24tYmlnLWVuZGlhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbGliZXh0MmZzLWZpeC1idWlsZC1mYWlsdXJlLWluLXN3YXBmcy5jLW9uLWJpZy1lbmRpYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjEyODRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbGliZXh0MmZzLWZpeC1idWlsZC1mYWlsdXJlLWluLXN3YXBmcy5jLW9uLWJpZy1lbmRpYS5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIGFlNjYwMzIwNjE3NmI3NzFjOWVkMWY4MjU2OWY2OGZjMTI1N2YwMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorRGF0ZTogV2VkLCAzIEphbiAyMDE4IDAxOjMyOjAyIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmV4dDJmczogZml4IGJ1aWxkIGZhaWx1cmUgaW4gc3dhcGZzLmMgb24gYmlnLWVuZGlhbgorIHN5c3RlbXMKKworQWRkcmVzc2VzLURlYmlhbi1CdWc6ICM4ODYxMTkKKworUmVwb3J0ZWQtYnk6IEphbWVzIENsYXJrZSA8anJ0YzI3QGRlYmlhbi5vcmc+CitTaWduZWQtb2ZmLWJ5OiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyBsaWIvZXh0MmZzL3N3YXBmcy5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWIvZXh0MmZzL3N3YXBmcy5jIGIvbGliL2V4dDJmcy9zd2FwZnMuYworaW5kZXggNmU1Y2ZmOTcuLmIxM2RjNDIyIDEwMDY0NAorLS0tIGEvbGliL2V4dDJmcy9zd2FwZnMuYworKysrIGIvbGliL2V4dDJmcy9zd2FwZnMuYworQEAgLTE5LDYgKzE5LDcgQEAKKyAKKyAjaW5jbHVkZSAiZXh0Ml9mcy5oIgorICNpbmNsdWRlICJleHQyZnMuaCIKKysjaW5jbHVkZSAiZXh0MmZzUC5oIgorICNpbmNsdWRlIDxleHQyZnMvZXh0Ml9leHRfYXR0ci5oPgorIAorICNpZmRlZiBXT1JEU19CSUdFTkRJQU4KK0BAIC0zNTgsNyArMzU5LDcgQEAgdm9pZCBleHQyZnNfc3dhcF9pbm9kZV9mdWxsKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqdCwKKyAJaWYgKGlub2RlX2luY2x1ZGVzKGlub2RlX3NpemUsIGlfcHJvamlkKSkKKyAgICAgICAgICAgICAgICAgdC0+aV9wcm9qaWQgPSBleHQyZnNfc3dhYjE2KGYtPmlfcHJvamlkKTsKKyAJLyogY2F0Y2ggbmV3IHN0YXRpYyBmaWVsZHMgYWRkZWQgYWZ0ZXIgaV9wcm9qaWQgKi8KKy0JRVhUMkZTX0JVSUxEX0JVR19PTihzaXplb2YoZXh0Ml9pbm9kZV9sYXJnZSkgIT0gMTYwKTsKKysJRVhUMkZTX0JVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UpICE9IDE2MCk7CisgCisgCWkgPSBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpICsgZXh0cmFfaXNpemUgKyBzaXplb2YoX191MzIpOworIAlpZiAoYnVmc2l6ZSA8IChpbnQpIGkpCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1taXNjLXJlbmFtZS1jb3B5X2ZpbGVfcmFuZ2UtdG8tY29weV9maWxlX2NodW5rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbWlzYy1yZW5hbWUtY29weV9maWxlX3JhbmdlLXRvLWNvcHlfZmlsZV9jaHVuay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA4ZmUwZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1taXNjLXJlbmFtZS1jb3B5X2ZpbGVfcmFuZ2UtdG8tY29weV9maWxlX2NodW5rLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSA2NDczNTNmN2MzZmQyOWUxZmZkNDY4ZDdmZjU2ZDk2NDMwNDdhYjM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGFsbWVyIERhYmJlbHQgPHBhbG1lckBkYWJiZWx0LmNvbT4KLURhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMTA6MTk6NTEgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWlzYzogcmVuYW1lIGNvcHlfZmlsZV9yYW5nZSB0byBjb3B5X2ZpbGVfY2h1bmsKLQotQXMgb2YgMi4yNywgZ2xpYmMgd2lsbCBoYXZlIGEgY29weV9maWxlX3JhbmdlIGxpYnJhcnkgY2FsbCB0byB3cmFwIHRoZQotbmV3IGNvcHlfZmlsZV9yYW5nZSBzeXN0ZW0gY2FsbC4gIFRoaXMgY29uZmxpY3RzIHdpdGggdGhlIGZ1bmN0aW9uIGluCi1taXNjL2NyZWF0ZV9pbm9kZS5jLCB3aGljaCB0aGlzIHBhdGNoIHJlbmFtZXMgX2NvcHlfZmlsZV9yYW5nZS4KLQotU2lnbmVkLW9mZi1ieTogUGFsbWVyIERhYmJlbHQgPHBhbG1lckBkYWJiZWx0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgotLS0tCi0gbWlzYy9jcmVhdGVfaW5vZGUuYyB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWlzYy9jcmVhdGVfaW5vZGUuYyBiL21pc2MvY3JlYXRlX2lub2RlLmMKLWluZGV4IDhjZTNmYWZhLi5jZDg5MTQ2ZiAxMDA2NDQKLS0tLSBhL21pc2MvY3JlYXRlX2lub2RlLmMKLSsrKyBiL21pc2MvY3JlYXRlX2lub2RlLmMKLUBAIC0zOTYsNyArMzk2LDcgQEAgc3RhdGljIHNzaXplX3QgbXlfcHJlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCwgb2ZmX3Qgb2Zmc2V0KQotIH0KLSAjZW5kaWYgLyogIWRlZmluZWQgSEFWRV9QUkVBRDY0ICYmICFkZWZpbmVkIEhBVkVfUFJFQUQgKi8KLSAKLS1zdGF0aWMgZXJyY29kZV90IGNvcHlfZmlsZV9yYW5nZShleHQyX2ZpbHN5cyBmcywgaW50IGZkLCBleHQyX2ZpbGVfdCBlMl9maWxlLAotK3N0YXRpYyBlcnJjb2RlX3QgY29weV9maWxlX2NodW5rKGV4dDJfZmlsc3lzIGZzLCBpbnQgZmQsIGV4dDJfZmlsZV90IGUyX2ZpbGUsCi0gCQkJCSBvZmZfdCBzdGFydCwgb2ZmX3QgZW5kLCBjaGFyICpidWYsCi0gCQkJCSBjaGFyICp6ZXJvYnVmKQotIHsKLUBAIC00NzAsNyArNDcwLDcgQEAgc3RhdGljIGVycmNvZGVfdCB0cnlfbHNlZWtfY29weShleHQyX2ZpbHN5cyBmcywgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1ZiwKLSAKLSAJCWRhdGFfYmxrID0gZGF0YSAmIH4oZnMtPmJsb2Nrc2l6ZSAtIDEpOwotIAkJaG9sZV9ibGsgPSAoaG9sZSArIChmcy0+YmxvY2tzaXplIC0gMSkpICYgfihmcy0+YmxvY2tzaXplIC0gMSk7Ci0tCQllcnIgPSBjb3B5X2ZpbGVfcmFuZ2UoZnMsIGZkLCBlMl9maWxlLCBkYXRhX2JsaywgaG9sZV9ibGssIGJ1ZiwKLSsJCWVyciA9IGNvcHlfZmlsZV9jaHVuayhmcywgZmQsIGUyX2ZpbGUsIGRhdGFfYmxrLCBob2xlX2JsaywgYnVmLAotIAkJCQkgICAgICB6ZXJvYnVmKTsKLSAJCWlmIChlcnIpCi0gCQkJcmV0dXJuIGVycjsKLUBAIC01MjEsNyArNTIxLDcgQEAgc3RhdGljIGVycmNvZGVfdCB0cnlfZmllbWFwX2NvcHkoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgZXh0Ml9maWxlX3QgZTJfZmlsZSwKLSAJCQlnb3RvIG91dDsKLSAJCWZvciAoaSA9IDAsIGV4dCA9IGV4dF9idWY7IGkgPCBmaWVtYXBfYnVmLT5mbV9tYXBwZWRfZXh0ZW50czsKLSAJCSAgICAgaSsrLCBleHQrKykgewotLQkJCWVyciA9IGNvcHlfZmlsZV9yYW5nZShmcywgZmQsIGUyX2ZpbGUsIGV4dC0+ZmVfbG9naWNhbCwKLSsJCQllcnIgPSBjb3B5X2ZpbGVfY2h1bmsoZnMsIGZkLCBlMl9maWxlLCBleHQtPmZlX2xvZ2ljYWwsCi0gCQkJCQkgICAgICBleHQtPmZlX2xvZ2ljYWwgKyBleHQtPmZlX2xlbmd0aCwKLSAJCQkJCSAgICAgIGJ1ZiwgemVyb2J1Zik7Ci0gCQkJaWYgKGVycikKLUBAIC01NzQsNyArNTc0LDcgQEAgc3RhdGljIGVycmNvZGVfdCBjb3B5X2ZpbGUoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0YXRidWYsCi0gCQlnb3RvIG91dDsKLSAjZW5kaWYKLSAKLS0JZXJyID0gY29weV9maWxlX3JhbmdlKGZzLCBmZCwgZTJfZmlsZSwgMCwgc3RhdGJ1Zi0+c3Rfc2l6ZSwgYnVmLAotKwllcnIgPSBjb3B5X2ZpbGVfY2h1bmsoZnMsIGZkLCBlMl9maWxlLCAwLCBzdGF0YnVmLT5zdF9zaXplLCBidWYsCi0gCQkJICAgICAgemVyb2J1Zik7Ci0gb3V0OgotIAlleHQyZnNfZnJlZV9tZW0oJnplcm9idWYpOwotLS0gCi0yLjE2LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaAppbmRleCAzOGZiMDdlLi4zOGUxYmRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaApAQCAtMTksMTAgKzE5LDEwIEBACiAgbWlzYy9ta2UyZnMuY29uZi5pbiB8IDMgKystCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvbWlzYy9ta2UyZnMuY29uZi5pbiBiL21pc2MvbWtlMmZzLmNvbmYuaW4KLWluZGV4IDgxMmY3YzcuLjAyODAzOTggMTAwNjQ0Ci0tLS0gYS9taXNjL21rZTJmcy5jb25mLmluCi0rKysgYi9taXNjL21rZTJmcy5jb25mLmluCitJbmRleDogZ2l0L21pc2MvbWtlMmZzLmNvbmYuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9taXNjL21rZTJmcy5jb25mLmluCisrKysgZ2l0L21pc2MvbWtlMmZzLmNvbmYuaW4KIEBAIC0xMSw4ICsxMSw5IEBACiAgCQlmZWF0dXJlcyA9IGhhc19qb3VybmFsCiAgCX0KQEAgLTMyLDUgKzMyLDUgQEAKICAJCWlub2RlX3NpemUgPSAyNTYKICsJCWF1dG9fNjQtYml0X3N1cHBvcnQgPSAxCiAgCX0KLSAJZXh0NGRldiA9IHsKLSAJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxpbmxpbmVfZGF0YSw2NGJpdCxkaXJfbmxpbmssZXh0cmFfaXNpemUKKyAJc21hbGwgPSB7CisgCQlibG9ja3NpemUgPSAxMDI0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvYWNpbmNsdWRlLm00IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2FjaW5jbHVkZS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBiZDdkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvYWNpbmNsdWRlLm00CisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLSMgRXh0cmFjdGVkIGZyb20gdGhlIHBhY2thZ2UncyBzaGlwcGVkIGFjbG9jYWwubTQuIEN1c3RvbSBtYWNyb3Mgc2hvdWxkIGJlIGluCi0jIGFjaW5jbHVkZS5tNCBzbyBydW5uaW5nIGFjbG9jYWwgZG9lc24ndCBibG93IHRoZW0gYXdheS4KLSMKLSMgU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotIyBmcm9tIGh0dHA6Ly9hdXRvY29uZi1hcmNoaXZlLmNyeXAudG8vYXhfdGxzLmh0bWwKLSMKLSMgVGhpcyB3YXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTCB3aXRoIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOgotIwotIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodAotIyBvd25lciBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlCi0jIGNvbmZpZ3VyZSBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nCi0jIHRoZSBNYWNyby4gWW91IG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIHdoZW4gdXNpbmcgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2gKLSMgcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwKLSMgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4gYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdAotIyBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCi0jCi0jIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZQotIyBBdXRvY29uZiBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgTWFjcm8gQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZQotIyBhbmQgZGlzdHJpYnV0ZSBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5Ci0jIGV4dGVuZCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZAotIyB2ZXJzaW9uIGFzIHdlbGwuCi0jCi1BQ19ERUZVTihbQVhfVExTXSwgWwotICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHRocmVhZCBsb2NhbCBzdG9yYWdlIChUTFMpIGNsYXNzKQotICBBQ19DQUNIRV9WQUwoYWNfY3ZfdGxzLCBbCi0gICAgYXhfdGxzX2tleXdvcmRzPSJfX3RocmVhZCBfX2RlY2xzcGVjKHRocmVhZCkgbm9uZSIKLSAgICBmb3IgYXhfdGxzX2tleXdvcmQgaW4gJGF4X3Rsc19rZXl3b3JkczsgZG8KLSAgICAgICBjYXNlICRheF90bHNfa2V5d29yZCBpbgotICAgICAgICAgIG5vbmUpIGFjX2N2X3Rscz1ub25lIDsgYnJlYWsgOzsKLSAgICAgICAgICAqKQotICAgICAgICAgICAgIEFDX1RSWV9DT01QSUxFKAotICAgICAgICAgICAgICAgIFsjaW5jbHVkZSA8c3RkbGliLmg+Ci0gICAgICAgICAgICAgICAgIHN0YXRpYyB2b2lkCi0gICAgICAgICAgICAgICAgIGZvbyh2b2lkKSB7Ci0gICAgICAgICAgICAgICAgIHN0YXRpYyBdICRheF90bHNfa2V5d29yZCBbIGludCBiYXI7Ci0gICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICAgICAgW2FjX2N2X3Rscz0kYXhfdGxzX2tleXdvcmQgOyBicmVha10sCi0gICAgICAgICAgICAgICAgIGFjX2N2X3Rscz1ub25lCi0gICAgICAgICAgICAgKQotICAgICAgICAgIGVzYWMKLSAgICBkb25lCi1dKQotCi0gIGlmIHRlc3QgIiRhY19jdl90bHMiICE9ICJub25lIjsgdGhlbgotICAgIGRubCBBQ19ERUZJTkUoW1RMU10sIFtdLCBbSWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGEgVExTIHN0b3JhZ2UgY2xhc3MgZGVmaW5lIGl0IHRvIHRoYXQgaGVyZV0pCi0gICAgQUNfREVGSU5FX1VOUVVPVEVEKFtUTFNdLCAkYWNfY3ZfdGxzLCBbSWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGEgVExTIHN0b3JhZ2UgY2xhc3MgZGVmaW5lIGl0IHRvIHRoYXQgaGVyZV0pCi0gIGZpCi0gIEFDX01TR19SRVNVTFQoJGFjX2N2X3RscykKLV0pCi0KLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jICAgICAgICAgaHR0cDovL3d3dy5ub25nbnUub3JnL2F1dG9jb25mLWFyY2hpdmUvY2hlY2tfZ251X21ha2UuaHRtbAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMKLSMgU1lOT1BTSVMKLSMKLSMgICBDSEVDS19HTlVfTUFLRSgpCi0jCi0jIERFU0NSSVBUSU9OCi0jCi0jICAgVGhpcyBtYWNybyBzZWFyY2hlcyBmb3IgYSBHTlUgdmVyc2lvbiBvZiBtYWtlLiBJZiBhIG1hdGNoIGlzIGZvdW5kLCB0aGUKLSMgICBtYWtlZmlsZSB2YXJpYWJsZSBgaWZHTlVtYWtlJyBpcyBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZywgb3RoZXJ3aXNlIGl0Ci0jICAgaXMgc2V0IHRvICIjIi4gVGhpcyBpcyB1c2VmdWwgZm9yIGluY2x1ZGluZyBhIHNwZWNpYWwgZmVhdHVyZXMgaW4gYQotIyAgIE1ha2VmaWxlLCB3aGljaCBjYW5ub3QgYmUgaGFuZGxlZCBieSBvdGhlciB2ZXJzaW9ucyBvZiBtYWtlLiBUaGUKLSMgICB2YXJpYWJsZSBfY3ZfZ251X21ha2VfY29tbWFuZCBpcyBzZXQgdG8gdGhlIGNvbW1hbmQgdG8gaW52b2tlIEdOVSBtYWtlCi0jICAgaWYgaXQgZXhpc3RzLCB0aGUgZW1wdHkgc3RyaW5nIG90aGVyd2lzZS4KLSMKLSMgICBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgaXRzIHVzZToKLSMKLSMgICBNYWtlZmlsZS5pbiBtaWdodCBjb250YWluOgotIwotIyAgICAgICAjIEEgZmFpbHNhZmUgd2F5IG9mIHB1dHRpbmcgYSBkZXBlbmRlbmN5IHJ1bGUgaW50byBhIG1ha2VmaWxlCi0jICAgICAgICQoREVQRU5EKToKLSMgICAgICAgICAgICAgICAkKENDKSAtTU0gJChzcmNkaXIpLyouYyA+ICQoREVQRU5EKQotIwotIyAgICAgICBAaWZHTlVtYWtlQCBpZmVxICgkKERFUEVORCksJCh3aWxkY2FyZCAkKERFUEVORCkpKQotIyAgICAgICBAaWZHTlVtYWtlQCBpbmNsdWRlICQoREVQRU5EKQotIyAgICAgICBAaWZHTlVtYWtlQCBlbmRpZgotIwotIyAgIFRoZW4gY29uZmlndXJlLmluIHdvdWxkIG5vcm1hbGx5IGNvbnRhaW46Ci0jCi0jICAgICAgIENIRUNLX0dOVV9NQUtFKCkKLSMgICAgICAgQUNfT1VUUFVUKE1ha2VmaWxlKQotIwotIyAgIFRoZW4gcGVyaGFwcyB0byBjYXVzZSBnbnUgbWFrZSB0byBvdmVycmlkZSBhbnkgb3RoZXIgbWFrZSwgd2UgY291bGQgZG8KLSMgICBzb21ldGhpbmcgbGlrZSB0aGlzIChub3RlIHRoYXQgR05VIG1ha2UgYWx3YXlzIGxvb2tzIGZvciBHTlVtYWtlZmlsZQotIyAgIGZpcnN0KToKLSMKLSMgICAgICAgaWYgICEgdGVzdCB4JF9jdl9nbnVfbWFrZV9jb21tYW5kID0geCA7IHRoZW4KLSMgICAgICAgICAgICAgICBtdiBNYWtlZmlsZSBHTlVtYWtlZmlsZQotIyAgICAgICAgICAgICAgIGVjaG8gLkRFRkFVTFQ6ID4gTWFrZWZpbGUgOwotIyAgICAgICAgICAgICAgIGVjaG8gXCAgJF9jdl9nbnVfbWFrZV9jb21tYW5kIFwkQCA+PiBNYWtlZmlsZTsKLSMgICAgICAgZmkKLSMKLSMgICBUaGVuLCBpZiBhbnkgKHdlbGwgYWxtb3N0IGFueSkgb3RoZXIgbWFrZSBpcyBjYWxsZWQsIGFuZCBHTlUgbWFrZSBhbHNvCi0jICAgZXhpc3RzLCB0aGVuIHRoZSBvdGhlciBtYWtlIHdyYXBzIHRoZSBHTlUgbWFrZS4KLSMKLSMgTElDRU5TRQotIwotIyAgIENvcHlyaWdodCAoYykgMjAwOCBKb2huIERhcnJpbmd0b24gPGouZGFycmluZ3RvbkBlbHZpcy5tdXJkb2NoLmVkdS5hdT4KLSMKLSMgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKLSMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKLSMgICBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4KLSMKLSMgTm90ZTogTW9kaWZpZWQgYnkgVGVkIFRzJ28gdG8gYWRkIEBpZk5vdEdOVU1ha2VACi0KLUFDX0RFRlVOKAotICAgICAgICBbQ0hFQ0tfR05VX01BS0VdLCBbIEFDX0NBQ0hFX0NIRUNLKCBmb3IgR05VIG1ha2UsX2N2X2dudV9tYWtlX2NvbW1hbmQsCi0gICAgICAgICAgICAgICAgX2N2X2dudV9tYWtlX2NvbW1hbmQ9JycgOwotZG5sIFNlYXJjaCBhbGwgdGhlIGNvbW1vbiBuYW1lcyBmb3IgR05VIG1ha2UKLSAgICAgICAgICAgICAgICBmb3IgYSBpbiAiJE1BS0UiIG1ha2UgZ21ha2UgZ251bWFrZSA7IGRvCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkYSIgOyB0aGVuIGNvbnRpbnVlIDsgZmkgOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgICggc2ggLWMgIiRhIC0tdmVyc2lvbiIgMj4gL2Rldi9udWxsIHwgZ3JlcCBHTlUgIDI+JjEgPiAvZGV2L251bGwgKSA7ICB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jdl9nbnVfbWFrZV9jb21tYW5kPSRhIDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgIGRvbmUgOwotICAgICAgICApIDsKLWRubCBJZiB0aGVyZSB3YXMgYSBHTlUgdmVyc2lvbiwgdGhlbiBzZXQgQGlmR05VbWFrZUAgdG8gdGhlIGVtcHR5IHN0cmluZywgJyMnIG90aGVyd2lzZQotICAgICAgICBpZiB0ZXN0ICAieCRfY3ZfZ251X21ha2VfY29tbWFuZCIgIT0gIngiICA7IHRoZW4KLSAgICAgICAgICAgICAgICBpZkdOVW1ha2U9JycgOwotICAgICAgICAgICAgICAgIGlmTm90R05VbWFrZT0nIycgOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaWZHTlVtYWtlPScjJyA7Ci0gICAgICAgICAgICAgICAgaWZOb3RHTlVtYWtlPScnIDsKLSAgICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKCJOb3QgZm91bmQiKTsKLSAgICAgICAgZmkKLSAgICAgICAgQUNfU1VCU1QoaWZHTlVtYWtlKQotICAgICAgICBBQ19TVUJTVChpZk5vdEdOVW1ha2UpCi1dICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2gKaW5kZXggMzMwNTRjNi4uNjljMDliYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2gKQEAgLTEsMyArMSw2IEBACitGcm9tIGM3OTE0MzA5YWVlZTYyMDlkZGI2OTk1YzA4NDgwNWE5MTFkOWNjODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMCBBdWcgMjAxNiAxMToxOTo0NCArMDgwMAogU3ViamVjdDogW1BBVENIXSBGaXggbWlzc2luZyBjaGVjayBmb3IgcGVybWlzc2lvbiBkZW5pZWQuCiAKIElmIHRoZSBwYXRoIHRvICJST09UX1NZU0NPTkZESVIvbWtlMmZzLmNvbmYiIGhhcyBhIHBlcm1pc3Npb24gZGVuaWVkIHByb2JsZW0sCkBAIC0xMCwxNSArMTMsMTYgQEAKIFdyaXR0ZW4tYnk6IEhlbnJpayBXYWxsaW4gPGhlbnJpay5iLndhbGxpbkBlcmljc3Nvbi5jb20+CiAKIFNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CisKIC0tLQogIGxpYi9zdXBwb3J0L3Byb2ZpbGUuYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYyBiL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYwotaW5kZXggNTFhMzMxNC4uMWMxMDM5ZiAxMDA2NDQKK2luZGV4IDllOTY2NzNiLi4zMmQ4MzAwMiAxMDA2NDQKIC0tLSBhL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYwogKysrIGIvbGliL3N1cHBvcnQvcHJvZmlsZS5jCi1AQCAtMzM1LDcgKzMzNSw3IEBAIHByb2ZpbGVfaW5pdChjb25zdCBjaGFyICoqZmlsZXMsIHByb2ZpbGVfdCAqcmV0X3Byb2ZpbGUpCitAQCAtMzM1LDcgKzMzNSw3IEBAIHByb2ZpbGVfaW5pdChjb25zdCBjaGFyICogY29uc3QgKmZpbGVzLCBwcm9maWxlX3QgKnJldF9wcm9maWxlKQogIAkJCQkqbGFzdCA9IG5ld19maWxlOwogIAkJCQlsYXN0ID0gJm5ld19maWxlLT5uZXh0OwogIAkJCX0KQEAgLTI4LDUgKzMyLDUgQEAKICAJCQlnb3RvIGVycm91dDsKICAKIC0tIAotMi43LjQKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvbWtkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvbWtkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhM2FlZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL21rZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBNZWkgTGVpIDxsZWkubWVpQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzFmZTIyNC4uZjVhYzYyOCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTM3NCw3ICsxMzc0LDggQEAgaWYgdGVzdCAtbiAiJFdJVEhfRElFVF9MSUJDIiA7IHRoZW4KLSAJSU5DTFVERVM9IiRJTkNMVURFUyAtRF9SRUVOVFJBTlQiCi0gZmkKLSBBQ19TVUJTVChJTkNMVURFUykKLS1BTV9NS0lOU1RBTExESVJTCi0rTUtJTlNUQUxMRElSUz0ibWtkaXIgLXAiCi0rQUNfU1VCU1QoTUtJTlNUQUxMRElSUykKLSBkbmwKLSBkbmwgQnVpbGQgQ0ZMQUdTCi0gZG5sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcHRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcHRlc3QucGF0Y2gKaW5kZXggN2RmMDk2Ny4uN2M0YmIzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3B0ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9wdGVzdC5wYXRjaApAQCAtMSwxMCArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiAKLWRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5pbiBiL3Rlc3RzL01ha2VmaWxlLmluCi1pbmRleCBjMTMwZjRhLi5kMmFkZTAzIDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUuaW4KLSsrKyBiL3Rlc3RzL01ha2VmaWxlLmluCi1AQCAtMTgsNyArMTgsNyBAQCB0ZXN0X29uZTogJChzcmNkaXIpL3Rlc3Rfb25lLmluIE1ha2VmaWxlIG1rZTJmcy5jb25mCitJbmRleDogZ2l0L3Rlc3RzL01ha2VmaWxlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdHMvTWFrZWZpbGUuaW4KKysrKyBnaXQvdGVzdHMvTWFrZWZpbGUuaW4KK0BAIC0xOCw3ICsxOCw3IEBAIHRlc3Rfb25lOiAkKHNyY2RpcikvdGVzdF9vbmUuaW4gTWFrZWZpbGUKICAJQGVjaG8gIiMhL2Jpbi9zaCIgPiB0ZXN0X29uZQogIAlAZWNobyAiSFRSRUU9eSIgPj4gdGVzdF9vbmUKICAJQGVjaG8gIlFVT1RBPXkiID4+IHRlc3Rfb25lCkBAIC0xMiw4ICsxMiw4IEBACiArCUBlY2hvICJTUkNESVI9JHtwcmVmaXh9JHtsaWJkaXJ9L2UyZnNwcm9ncy9wdGVzdC90ZXN0IiA+PiB0ZXN0X29uZQogIAlAZWNobyAiRElGRl9PUFRTPUBVTklfRElGRl9PUFRTQCIgPj4gdGVzdF9vbmUKICAJQGVjaG8gIlNJWkVPRl9USU1FX1Q9QFNJWkVPRl9USU1FX1RAIiA+PiB0ZXN0X29uZQotIAlAY2F0ICQoc3JjZGlyKS90ZXN0X29uZS5pbiA+PiB0ZXN0X29uZQotQEAgLTI3LDcgKzI3LDcgQEAgdGVzdF9vbmU6ICQoc3JjZGlyKS90ZXN0X29uZS5pbiBNYWtlZmlsZSBta2UyZnMuY29uZgorIAlAZWNobyAiREQ9QEREQCIgPj50ZXN0X29uZQorQEAgLTI4LDcgKzI4LDcgQEAgdGVzdF9vbmU6ICQoc3JjZGlyKS90ZXN0X29uZS5pbiBNYWtlZmlsZQogIHRlc3Rfc2NyaXB0OiB0ZXN0X29uZSB0ZXN0X3NjcmlwdC5pbiBNYWtlZmlsZSBta2UyZnMuY29uZgogIAlAZWNobyAiQ3JlYXRpbmcgdGVzdF9zY3JpcHQuLi4iCiAgCUBlY2hvICIjIS9iaW4vc2giID4gdGVzdF9zY3JpcHQKQEAgLTIyLDEwICsyMiwxMCBAQAogIAlAY2F0ICQoc3JjZGlyKS90ZXN0X3NjcmlwdC5pbiA+PiB0ZXN0X3NjcmlwdAogIAlAY2htb2QgK3ggdGVzdF9zY3JpcHQKICAKLWRpZmYgLS1naXQgYS90ZXN0cy90ZXN0X2NvbmZpZyBiL3Rlc3RzL3Rlc3RfY29uZmlnCi1pbmRleCA1NDdlZjRjLi5lMTFlNmY0IDEwMDY0NAotLS0tIGEvdGVzdHMvdGVzdF9jb25maWcKLSsrKyBiL3Rlc3RzL3Rlc3RfY29uZmlnCitJbmRleDogZ2l0L3Rlc3RzL3Rlc3RfY29uZmlnCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdHMvdGVzdF9jb25maWcKKysrKyBnaXQvdGVzdHMvdGVzdF9jb25maWcKIEBAIC0zLDI0ICszLDI0IEBACiAgIwogIApAQCAtNjcsMTAgKzY3LDEwIEBACiAgQ0xFQU5fT1VUUFVUPSJzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCIKICBMRF9MSUJSQVJZX1BBVEg9Li4vbGliOi4uL2xpYi9leHQyZnM6Li4vbGliL2UycDouLi9saWIvZXQ6Li4vbGliL3NzOiR7TERfTElCUkFSWV9QQVRIfQogIERZTERfTElCUkFSWV9QQVRIPS4uL2xpYjouLi9saWIvZXh0MmZzOi4uL2xpYi9lMnA6Li4vbGliL2V0Oi4uL2xpYi9zczoke0RZTERfTElCUkFSWV9QQVRIfQotZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3Rfc2NyaXB0LmluIGIvdGVzdHMvdGVzdF9zY3JpcHQuaW4KLWluZGV4IDk5NTllMzAuLjQ0Mjk5OWQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90ZXN0X3NjcmlwdC5pbgotKysrIGIvdGVzdHMvdGVzdF9zY3JpcHQuaW4KK0luZGV4OiBnaXQvdGVzdHMvdGVzdF9zY3JpcHQuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90ZXN0cy90ZXN0X3NjcmlwdC5pbgorKysrIGdpdC90ZXN0cy90ZXN0X3NjcmlwdC5pbgogQEAgLTM5LDcgKzM5LDcgQEAgZm9yIGk7IGRvCiAgZG9uZQogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3JlcHJvZHVjaWJsZS1kb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcmVwcm9kdWNpYmxlLWRvYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU1ZDFkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcmVwcm9kdWNpYmxlLWRvYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotU3VwcHBvcnQgZm9yIGJpbmFyeSByZXByb2R1Y2liaWxpdHkuCi1XaGVuIGNvbXByZXNzaW5nLCBkbyBub3Qgc2F2ZSB0aGUgb3JpZ2luYWwgZmlsZSBuYW1lIGFuZCB0aW1lIHN0YW1wLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbVGhlb2RvcmUgVHMnbyB0eXRzb0BtaXQuZWR1IChtYWludGFpbmVyKV0KLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2RvYy9NYWtlZmlsZS5pbiBiL2RvYy9NYWtlZmlsZS5pbgotaW5kZXggOWNiNTg0Yy4uMGJlZTRlNCAxMDA2NDQKLS0tLSBhL2RvYy9NYWtlZmlsZS5pbgotKysrIGIvZG9jL01ha2VmaWxlLmluCi1AQCAtMjgsNyArMjgsNyBAQCBpbnN0YWxsLWRvYy1saWJzOiBsaWJleHQyZnMuaW5mbyBsaWJleHQyZnMuZHZpCi0gCQkkKElOU1RBTExfREFUQSkgJCRpICQoREVTVERJUikkKGluZm9kaXIpLyQkaSA7IFwKLSAJZG9uZQotIAkkKEUpICIJR1pJUCAkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKiIKLS0JLSQoUSkgZ3ppcCAtOSAkKERFU1RESVIpJChpbmZvZGlyKS9saWJleHQyZnMuaW5mbyoKLSsJLSQoUSkgZ3ppcCAtOSAtbiAkKERFU1RESVIpJChpbmZvZGlyKS9saWJleHQyZnMuaW5mbyoKLSAKLSB1bmluc3RhbGwtZG9jLWxpYnM6Ci0gCSQoUk0pIC1yZiAkKERFU1RESVIpJChpbmZvZGlyKS9saWJleHQyZnMuaW5mbyoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWQ3YzA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotcmVxdWlyZSBlMmZzcHJvZ3MuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9hY2luY2x1ZGUubTQgXAotICAgICAgICAgICAgZmlsZTovL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9xdWlldC1kZWJ1Z2ZzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ta2Rpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbWtkaXJfcC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLWRvYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1taXNjLWNyZWF0ZV9pbm9kZS5jLXNldC1kaXItcy1tb2RlLWNvcnJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1taXNjLXJlbmFtZS1jb3B5X2ZpbGVfcmFuZ2UtdG8tY29weV9maWxlX2NodW5rLnBhdGNoIFwKLSIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaCIKLQotU1JDUkVWID0gIjJhMTNjODRiNTEzYWEwOTRkMWNkYTcyN2U5MmQzNWE4OWRkNzc3ZGEiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikkIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWVsZi1zaGxpYnMgLS1kaXNhYmxlLWxpYnV1aWQgLS1kaXNhYmxlLXV1aWRkIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYmxraWQgLS1lbmFibGUtdmVyYm9zZS1tYWtlY21kcyIKLQotRVhUUkFfT0VDT05GX2RhcndpbiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IC0tZW5hYmxlLWJzZC1zaGxpYnMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2Z1c2VdID0gJy0tZW5hYmxlLWZ1c2UyZnMsLS1kaXNhYmxlLWZ1c2UyZnMsZnVzZScKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWNwICR7V09SS0RJUn0vYWNpbmNsdWRlLm00ICR7U30vCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC1saWJzCi0JIyBXZSB1c2UgYmxraWQgZnJvbSB1dGlsLWxpbnV4IG5vdyBzbyByZW1vdmUgZnJvbSBoZXJlCi0Jcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYmJsa2lkKgotCXJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfS9ibGtpZAotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcvYmxraWQucGMKLQlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Jsa2lkCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9mc2NrCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9maW5kZnMKLQotCSMgZTJpbml0cmRfaGVscGVyIGFuZCB0aGUgcGtnY29uZmlnIGZpbGVzIGJlbG9uZyBpbiBsaWJkaXIKLQlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0JCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9lMmluaXRyZF9oZWxwZXIgJHtEfSR7bGliZGlyfQotCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnICR7RH0ke2xpYmRpcn0KLQlmaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIGV4dDJmcy9leHQyX3R5cGVzLmgKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCW12ICR7RH0ke2JpbmRpcn0vY2hhdHRyICR7RH0ke2Jhc2VfYmluZGlyfS9jaGF0dHIuZTJmc3Byb2dzCi0KLQlpbnN0YWxsIC12IC1tIDc1NSAke1N9L2NvbnRyaWIvcG9wdWxhdGUtZXh0ZnMuc2ggJHtEfSR7YmFzZV9zYmluZGlyfS8KLQotCSMgQ2xlYW4gaG9zdCBwYXRoIChidWlsZCBkaXJlY3RvcnkpIGluIGNvbXBpbGVfZXQsIG1rX2NtZHMKLQlzZWQgLWkgLWUgInMsXChFVF9ESVI9LipcKSR7U30vbGliL2V0XCguKlwpLFwxJHtkYXRhZGlyfS9ldFwyLGciICR7RH0ke2JpbmRpcn0vY29tcGlsZV9ldAotCXNlZCAtaSAtZSAicyxcKFNTX0RJUj0uKlwpJHtTfS9saWIvc3NcKC4qXCksXDEke2RhdGFkaXJ9L3NzXDIsZyIgJHtEfSR7YmluZGlyfS9ta19jbWRzCi19Ci0KLSMgTmVlZCB0byBmaW5kIHRoZSByaWdodCBta2UyZnMuY29uZiBmaWxlCi1lMmZzcHJvZ3NfY29uZl9maXh1cCAoKSB7Ci0JZm9yIGkgaW4gbWtlMmZzIG1rZnMuZXh0MiBta2ZzLmV4dDMgbWtmcy5leHQ0OyBkbwotCQljcmVhdGVfd3JhcHBlciAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpIE1LRTJGU19DT05GSUc9JHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZgotCWRvbmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWUyZnNwcm9nc19jb25mX2ZpeHVwCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQllMmZzcHJvZ3NfY29uZl9maXh1cAotfQotCi1SREVQRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyIKLVJSRUNPTU1FTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1lMmZzY2siCi0KLVBBQ0tBR0VTID0rICJlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXR1bmUyZnMgZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtcmVzaXplMmZzIgotUEFDS0FHRVMgPSsgImxpYmNvbWVyciBsaWJzcyBsaWJlMnAgbGliZXh0MmZzIgotCi1GSUxFU19lMmZzcHJvZ3MtcmVzaXplMmZzID0gIiR7YmFzZV9zYmluZGlyfS9yZXNpemUyZnMqIgotRklMRVNfZTJmc3Byb2dzLWUyZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJmc2NrICR7YmFzZV9zYmluZGlyfS9mc2NrLmV4dCoiCi1GSUxFU19lMmZzcHJvZ3MtbWtlMmZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2UyZnMgJHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0KiAke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mIgotRklMRVNfZTJmc3Byb2dzLXR1bmUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMgJHtiYXNlX3NiaW5kaXJ9L2UybGFiZWwiCi1GSUxFU19lMmZzcHJvZ3MtYmFkYmxvY2tzID0gIiR7YmFzZV9zYmluZGlyfS9iYWRibG9ja3MiCi1GSUxFU19saWJjb21lcnIgPSAiJHtiYXNlX2xpYmRpcn0vbGliY29tX2Vyci5zby4qIgotRklMRVNfbGlic3MgPSAiJHtiYXNlX2xpYmRpcn0vbGlic3Muc28uKiIKLUZJTEVTX2xpYmUycCA9ICIke2Jhc2VfbGliZGlyfS9saWJlMnAuc28uKiIKLUZJTEVTX2xpYmV4dDJmcyA9ICIke2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7YmFzZV9saWJkaXJ9L2xpYmV4dDJmcy5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9LyovKi5hd2sgJHtkYXRhZGlyfS8qLyouc2VkICR7YmFzZV9saWJkaXJ9Lyouc28gJHtiaW5kaXJ9L2NvbXBpbGVfZXQgJHtiaW5kaXJ9L21rX2NtZHMiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImNoYXR0ciIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ciIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJmc2NrLjgiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZnNjay44XSA9ICIke21hbmRpcn0vbWFuOC9mc2NrLjgiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfSAke1BOfS10dW5lMmZzIGNvcmV1dGlscyBwcm9jcHMgYmFzaCIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrIWUyZnNjayFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LyovZXhwZWN0KgotCi0JIyBSZW1vdmUgdmFyaW91cyBmaWxlcwotCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtdHlwZSBmIFwKLQkgICAgXCggLW5hbWUgJ01ha2VmaWxlJyAtbyAtbmFtZSAnTWFrZWZpbGUuaW4nIC1vIC1uYW1lICcqLm8nIC1vIC1uYW1lICcqLmMnIC1vIC1uYW1lICcqLmgnIFwpXAotCSAgICAtZXhlYyAgcm0gLWYge30gKwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZhYmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjguYmIKQEAgLTAsMCArMSwxMjAgQEAKK3JlcXVpcmUgZTJmc3Byb2dzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL21rZGlyX3AucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtbGliZXh0MmZzLWZpeC1idWlsZC1mYWlsdXJlLWluLXN3YXBmcy5jLW9uLWJpZy1lbmRpYS5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcXVpZXQtZGVidWdmcy5wYXRjaCBcCisiCisKK1NSQ1JFViA9ICJhZjJlYWM0ODFjZjQyNmMwNWFlMTJiOTQ2Mzk2OTgwZTE2YzhhYjE5IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKSopJCIKKworRVhUUkFfT0VDT05GICs9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1lbGYtc2hsaWJzIC0tZGlzYWJsZS1saWJ1dWlkIC0tZGlzYWJsZS11dWlkZCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmJsa2lkIC0tZW5hYmxlLXZlcmJvc2UtbWFrZWNtZHMiCisKK0VYVFJBX09FQ09ORl9kYXJ3aW4gPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSAtLWVuYWJsZS1ic2Qtc2hsaWJzIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tmdXNlXSA9ICctLWVuYWJsZS1mdXNlMmZzLC0tZGlzYWJsZS1mdXNlMmZzLGZ1c2UnCisKKyMgbWFrZSBsb2NhbGUgcnVsZXMgc29tZXRpbWVzIGZpcmUsIHNvbWV0aW1lcyBkb24ndCBhcyBnaXQgZG9lc24ndCBwcmVzZXJ2ZQorIyBmaWxlIG1rdGltZS4gVG91Y2ggdGhlIGZpbGVzIGludHJvZHVjaW5nIG5vbi1kZXRlcm1pbmlzbSB0byB0aGUgYnVpbGQKK2RvX2NvbXBpbGVfcHJlcGVuZCAoKXsKKwlmaW5kICR7U30vcG8gLXR5cGUgZiAtbmFtZSAiKi5wbyIgLWV4ZWMgdG91Y2gge30gKworfQorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtbGlicworCSMgV2UgdXNlIGJsa2lkIGZyb20gdXRpbC1saW51eCBub3cgc28gcmVtb3ZlIGZyb20gaGVyZQorCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9saWJibGtpZCoKKwlybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0vYmxraWQKKwlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnL2Jsa2lkLnBjCisJcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9ibGtpZAorCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZnNjaworCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZmluZGZzCisKKwkjIGUyaW5pdHJkX2hlbHBlciBhbmQgdGhlIHBrZ2NvbmZpZyBmaWxlcyBiZWxvbmcgaW4gbGliZGlyCisJaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQorCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7RH0ke2xpYmRpcn0KKwkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyAke0R9JHtsaWJkaXJ9CisJZmkKKworCW9lX211bHRpbGliX2hlYWRlciBleHQyZnMvZXh0Ml90eXBlcy5oCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwltdiAke0R9JHtiaW5kaXJ9L2NoYXR0ciAke0R9JHtiYXNlX2JpbmRpcn0vY2hhdHRyLmUyZnNwcm9ncworCisJaW5zdGFsbCAtdiAtbSA3NTUgJHtTfS9jb250cmliL3BvcHVsYXRlLWV4dGZzLnNoICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCisKKwkjIENsZWFuIGhvc3QgcGF0aCAoYnVpbGQgZGlyZWN0b3J5KSBpbiBjb21waWxlX2V0LCBta19jbWRzCisJc2VkIC1pIC1lICJzLFwoRVRfRElSPS4qXCkke1N9L2xpYi9ldFwoLipcKSxcMSR7ZGF0YWRpcn0vZXRcMixnIiAke0R9JHtiaW5kaXJ9L2NvbXBpbGVfZXQKKwlzZWQgLWkgLWUgInMsXChTU19ESVI9LipcKSR7U30vbGliL3NzXCguKlwpLFwxJHtkYXRhZGlyfS9zc1wyLGciICR7RH0ke2JpbmRpcn0vbWtfY21kcworfQorCisjIE5lZWQgdG8gZmluZCB0aGUgcmlnaHQgbWtlMmZzLmNvbmYgZmlsZQorZTJmc3Byb2dzX2NvbmZfZml4dXAgKCkgeworCWZvciBpIGluIG1rZTJmcyBta2ZzLmV4dDIgbWtmcy5leHQzIG1rZnMuZXh0NDsgZG8KKwkJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmFzZV9zYmluZGlyfS8kaSBNS0UyRlNfQ09ORklHPSR7c3lzY29uZmRpcn0vbWtlMmZzLmNvbmYKKwlkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwllMmZzcHJvZ3NfY29uZl9maXh1cAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJZTJmc3Byb2dzX2NvbmZfZml4dXAKK30KKworUkRFUEVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1iYWRibG9ja3MiCitSUkVDT01NRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtZTJmc2NrIgorCitQQUNLQUdFUyA9KyAiZTJmc3Byb2dzLWUyZnNjayBlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy10dW5lMmZzIGUyZnNwcm9ncy1iYWRibG9ja3MgZTJmc3Byb2dzLXJlc2l6ZTJmcyIKK1BBQ0tBR0VTID0rICJsaWJjb21lcnIgbGlic3MgbGliZTJwIGxpYmV4dDJmcyIKKworRklMRVNfZTJmc3Byb2dzLXJlc2l6ZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVzaXplMmZzKiIKK0ZJTEVTX2UyZnNwcm9ncy1lMmZzY2sgPSAiJHtiYXNlX3NiaW5kaXJ9L2UyZnNjayAke2Jhc2Vfc2JpbmRpcn0vZnNjay5leHQqIgorRklMRVNfZTJmc3Byb2dzLW1rZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vbWtlMmZzICR7YmFzZV9zYmluZGlyfS9ta2ZzLmV4dCogJHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZiIKK0ZJTEVTX2UyZnNwcm9ncy10dW5lMmZzID0gIiR7YmFzZV9zYmluZGlyfS90dW5lMmZzICR7YmFzZV9zYmluZGlyfS9lMmxhYmVsIgorRklMRVNfZTJmc3Byb2dzLWJhZGJsb2NrcyA9ICIke2Jhc2Vfc2JpbmRpcn0vYmFkYmxvY2tzIgorRklMRVNfbGliY29tZXJyID0gIiR7YmFzZV9saWJkaXJ9L2xpYmNvbV9lcnIuc28uKiIKK0ZJTEVTX2xpYnNzID0gIiR7YmFzZV9saWJkaXJ9L2xpYnNzLnNvLioiCitGSUxFU19saWJlMnAgPSAiJHtiYXNlX2xpYmRpcn0vbGliZTJwLnNvLioiCitGSUxFU19saWJleHQyZnMgPSAiJHtsaWJkaXJ9L2UyaW5pdHJkX2hlbHBlciAke2Jhc2VfbGliZGlyfS9saWJleHQyZnMuc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS8qLyouYXdrICR7ZGF0YWRpcn0vKi8qLnNlZCAke2Jhc2VfbGliZGlyfS8qLnNvICR7YmluZGlyfS9jb21waWxlX2V0ICR7YmluZGlyfS9ta19jbWRzIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJjaGF0dHIiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY2hhdHRyXSA9ICIke2Jhc2VfYmluZGlyfS9jaGF0dHIiCitBTFRFUk5BVElWRV9UQVJHRVRbY2hhdHRyXSA9ICIke2Jhc2VfYmluZGlyfS9jaGF0dHIuZTJmc3Byb2dzIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiZnNjay44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZzY2suOF0gPSAiJHttYW5kaXJ9L21hbjgvZnNjay44IgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0gJHtQTn0tdHVuZTJmcyBjb3JldXRpbHMgcHJvY3BzIGJhc2giCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtCfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlzZWQgLWUgJ3MhLi4vZTJmc2NrL2UyZnNjayFlMmZzY2shZycgXAorCSAgICAtZSAncyEuLi9taXNjL3R1bmUyZnMhdHVuZTJmcyFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LyovZXhwZWN0KgorCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrISR7YmFzZV9zYmluZGlyfS9lMmZzY2shZycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8qL3NjcmlwdAorCisJIyBSZW1vdmUgdmFyaW91cyBmaWxlcworCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtdHlwZSBmIFwKKwkgICAgXCggLW5hbWUgJ01ha2VmaWxlJyAtbyAtbmFtZSAnTWFrZWZpbGUuaW4nIC1vIC1uYW1lICcqLm8nIC1vIC1uYW1lICcqLmMnIC1vIC1uYW1lICcqLmgnIFwpXAorCSAgICAtZXhlYyAgcm0gLWYge30gKworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzAuYmIKaW5kZXggM2I4MWUyOC4uMTRhYzIyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLmJiCkBAIC01LDQwICs1LDMxIEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKIERFUEVORFMgPSAibGlidG9vbCBiemlwMiB6bGliIHZpcnR1YWwvbGliaW50bCIKIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIGZ0cyAiCi1TUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMvZnRwLyR7UFZ9LyR7QlB9LnRhci5iejIiCisjIFRoZSBEZWJpYW4gcGF0Y2hlcyBiZWxvdyBhcmUgZnJvbToKKyMgaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE2OC0wLjIuZGViaWFuLnRhci54egorU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzL2Z0cC8ke1BWfS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX2JhY2tlbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1mYWxsdGhyb3VnaC1hdHRyaWJ1dGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1FbnN1cmUtdGhhdC1wYWNrZWQtc3RydWN0cy1mb2xsb3ctdGhlLWdjYy1tZW1vcnktbGF5LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoIgogU1JDX1VSSVttZDVzdW1dID0gIjAzNTk5YWVlOThjOWI3MjZjN2E3MzJhMmRkMDI0NWQ1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmODQ0Nzc1NTc2Yjc5YmRjOWY5YzcxN2E1MDA1OGQwODYyMDMyM2MxZTkzNTQ1ODIyM2ExMmYyNDljOWUwNjYiCiAKLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgZmlsZTovLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwNS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoIgotCi0jIFBpY2sgcGF0Y2hlcyBmcm9tIGRlYmlhbgotIyBodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9lL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTY4LTAuMi5kZWJpYW4udGFyLnh6Ci1TUkNfVVJJICs9ICJcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgXAotICAgICAgICBmaWxlOi8vZGViaWFuL2FybV9iYWNrZW5kLmRpZmYgXAotICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfYmFja2VuZC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoIFwKLSIKLSMgRml4IHRoZSBwYXRjaGVzIGZyb20gRGViaWFuIHdpdGggR0NDNwotU1JDX1VSSSArPSAiZmlsZTovL2RlYmlhbi9mYWxsdGhyb3VnaC5wYXRjaCIKLQotIyBUaGUgYnVpbGRzeXN0ZW0gd2FudHMgdG8gZ2VuZXJhdGUgMiAuaCBmaWxlcyBmcm9tIHNvdXJjZSB1c2luZyBhIGJpbmFyeSBpdCBqdXN0IGJ1aWx0LAotIyB3aGljaCBjYW4gbm90IHBhc3MgdGhlIGNyb3NzIGNvbXBpbGluZywgc28gbGV0J3Mgd29yayBhcm91bmQgaXQgYnkgYWRkaW5nIDIgLmggZmlsZXMKLSMgYWxvbmcgd2l0aCB0aGUgZG9fY29uZmlndXJlX3ByZXBlbmQoKQotCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0CiAKIEVYVFJBX09FQ09ORiA9ICItLXByb2dyYW0tcHJlZml4PWV1LSAtLXdpdGhvdXQtbHptYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1FbnN1cmUtdGhhdC1wYWNrZWQtc3RydWN0cy1mb2xsb3ctdGhlLWdjYy1tZW1vcnktbGF5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLUVuc3VyZS10aGF0LXBhY2tlZC1zdHJ1Y3RzLWZvbGxvdy10aGUtZ2NjLW1lbW9yeS1sYXkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0ZDFkZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1FbnN1cmUtdGhhdC1wYWNrZWQtc3RydWN0cy1mb2xsb3ctdGhlLWdjYy1tZW1vcnktbGF5LnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gNzMyOTEzYThjMzVjN2IyNWMwY2JmNjkwM2NhYjFhZDZiNjAyYjUyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIyIE1hciAyMDE4IDIyOjQ0OjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEVuc3VyZSB0aGF0IHBhY2tlZCBzdHJ1Y3RzIGZvbGxvdyB0aGUgZ2NjIG1lbW9yeSBsYXlvdXQKKworUGFydGlhbCBiYWNrcG9ydCBvZgoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9ZWxmdXRpbHMuZ2l0O2E9Y29tbWl0O2g9MTdkNzE5NGQyOTFiZjkxZDEzMGI3OGUwNmNiZTI3YjI5MGUwMzc2ZAorCitIZWxwcyBmaXhpbmcgYWxpZ25tZW50IGVycm9ycyBlLmcuCitsaW51eC1jb3JlLW5vdGUuYzoxMTY6MTogZXJyb3I6IGFsaWdubWVudCAyIG9mICdzdHJ1Y3QgbTY4a19wcnN0YXR1cworJyBpcyBsZXNzIHRoYW4gNCBbLVdlcnJvcj1wYWNrZWQtbm90LWFsaWduZWRdCisgOworIF4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9ZWxmdXRpbHMuZ2l0O2E9Y29tbWl0O2g9MTdkNzE5NGQyOTFiZjkxZDEzMGI3OGUwNmNiZTI3YjI5MGUwMzc2ZF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGJhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMgYi9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYworaW5kZXggNWYwNmM4OTYuLjlmYWFlNGMzIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMKKysrKyBiL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jCitAQCAtMTExLDcgKzExMSw3IEBAIHN0cnVjdCBFQkxIT09LKHByc3RhdHVzKQorICAgRklFTEQgKElOVCwgcHJfZnB2YWxpZCk7CisgfQorICNpZmRlZiBBTElHTl9QUlNUQVRVUworLSAgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25lZCAoQUxJR05fUFJTVEFUVVMpKSkKKysgIGF0dHJpYnV0ZV9wYWNrZWQgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKEFMSUdOX1BSU1RBVFVTKSkpCisgI2VuZGlmCisgOworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLVVzZS1mYWxsdGhyb3VnaC1hdHRyaWJ1dGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtVXNlLWZhbGx0aHJvdWdoLWF0dHJpYnV0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTIxNTViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLVVzZS1mYWxsdGhyb3VnaC1hdHRyaWJ1dGUucGF0Y2gKQEAgLTAsMCArMSw3OTEgQEAKK0Zyb20gNWNiODgzZjY3ZDAwYTYzNTMxZWYxOTVjMjQyNzYzZDM2YjE5MDVjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKb3NodWEuV2F0dEBnYXJtaW4uY29tPgorRGF0ZTogRnJpLCA5IEZlYiAyMDE4IDEyOjQ2OjM4IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBmYWxsdGhyb3VnaCBhdHRyaWJ1dGUKKworVXNlIF9fYXR0cmlidXRlX18gKChmYWxsdGhyb3VnaCkpIHRvIGluZGljYXRlIHN3aXRjaCBjYXNlIGZhbGwgdGhyb3VnaAoraW5zdGVhZCBvZiBhIGNvbW1lbnQuIFRoaXMgZW5zdXJlIHRoYXQgdGhlIGZhbGx0aHJvdWdoIHdhcm5pbmcgaXMgbm90Cit0cmlnZ2VyZWQgZXZlbiBpZiB0aGUgZmlsZSBpcyBwcmUtcHJvY2Vzc2VkIChoZW5jZSBzdHJpcHBpbmcgdGhlCitjb21tZW50cykgYmVmb3JlIGl0IGlzIGNvbXBpbGVkLgorCitUaGUgYWN0dWFsIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlzIGhpZGRlbiBiZWhpbmQgYSBGQUxMQkFDSyBtYWNybyBpbgorY2FzZSB0aGUgY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0IGl0LgorCitGaW5hbGx5LCB0aGUgLVdpbXBsaWN0LWZhbGx0aHJvdWdoIHdhcm5pbmcgd2FzIHVwZ3JhZGVkIHRvIG9ubHkgYWxsb3cKK3RoZSBhdHRyaWJ1dGUgdG8gc2F0aXNmeSBpdDsgYSBjb21tZW50IGFsb25lIGlzIG5vIGxvbmdlciBzdWZmaWNpZW50LgorCitTaWduZWQtb2ZmLWJ5OiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsxXQorCitbMV0gaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9lbGZ1dGlscy1kZXZlbC8yMDE4LXExL21zZzAwMDI3Lmh0bWwKKy0tLQorIGJhY2tlbmRzL2FhcmNoNjRfcmV0dmFsLmMgICAgfCAyICstCisgYmFja2VuZHMvYWxwaGFfcmV0dmFsLmMgICAgICB8IDQgKystLQorIGJhY2tlbmRzL2FybV9yZWdzLmMgICAgICAgICAgfCAyICstCisgYmFja2VuZHMvYXJtX3JldHZhbC5jICAgICAgICB8IDIgKy0KKyBiYWNrZW5kcy9pMzg2X3JlZ3MuYyAgICAgICAgIHwgMiArLQorIGJhY2tlbmRzL2kzODZfcmV0dmFsLmMgICAgICAgfCA0ICsrLS0KKyBiYWNrZW5kcy9pYTY0X3JldHZhbC5jICAgICAgIHwgMiArLQorIGJhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jICAgfCAyICstCisgYmFja2VuZHMvbTY4a19yZXR2YWwuYyAgICAgICB8IDQgKystLQorIGJhY2tlbmRzL21pcHNfcmV0dmFsLmMgICAgICAgfCA0ICsrLS0KKyBiYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMgICAgIHwgNSArKystLQorIGJhY2tlbmRzL3BwYzY0X3JldHZhbC5jICAgICAgfCA2ICsrKy0tLQorIGJhY2tlbmRzL3BwY19yZWdzLmMgICAgICAgICAgfCAyICstCisgYmFja2VuZHMvcHBjX3JldHZhbC5jICAgICAgICB8IDQgKystLQorIGJhY2tlbmRzL3MzOTBfcmV0dmFsLmMgICAgICAgfCA0ICsrLS0KKyBiYWNrZW5kcy9zaF9yZXR2YWwuYyAgICAgICAgIHwgMiArLQorIGJhY2tlbmRzL3NwYXJjX3JldHZhbC5jICAgICAgfCAyICstCisgYmFja2VuZHMvdGlsZWd4X3JldHZhbC5jICAgICB8IDQgKystLQorIGJhY2tlbmRzL3g4Nl82NF9yZWdzLmMgICAgICAgfCAyICstCisgYmFja2VuZHMveDg2XzY0X3JldHZhbC5jICAgICB8IDIgKy0KKyBjb25maWcvZXUuYW0gICAgICAgICAgICAgICAgIHwgNCArKystCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICB8IDYgKysrKysrCisgbGliL2V1LWNvbmZpZy5oICAgICAgICAgICAgICB8IDcgKysrKysrKworIGxpYmNwdS9pMzg2X2Rpc2FzbS5jICAgICAgICAgfCAyICstCisgbGliY3B1L2kzODZfcGFyc2UuYyAgICAgICAgICB8IDQgKystLQorIGxpYmR3L2NmaS5jICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBsaWJkdy9kd2FyZl9mcmFtZV9yZWdpc3Rlci5jIHwgMiArLQorIGxpYmR3ZmwvZHdmbF9yZXBvcnRfZWxmLmMgICAgfCAyICstCisgbGliZHdmbC9mcmFtZV91bndpbmQuYyAgICAgICB8IDIgKy0KKyBsaWJlYmwvZWJsb2Jqbm90ZS5jICAgICAgICAgIHwgMiArLQorIGxpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMgICAgfCAyICstCisgbGliZWxmL2VsZl9iZWdpbi5jICAgICAgICAgICB8IDQgKystLQorIGxpYmVsZi9lbGZfY250bC5jICAgICAgICAgICAgfCAyICstCisgc3JjL2FkZHIybGluZS5jICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvZWxmY29tcHJlc3MuYyAgICAgICAgICAgIHwgMiArLQorIHNyYy9lbGZsaW50LmMgICAgICAgICAgICAgICAgfCA4ICsrKystLS0tCisgc3JjL29iamR1bXAuYyAgICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvcmVhZGVsZi5jICAgICAgICAgICAgICAgIHwgOCArKysrLS0tLQorIHNyYy9zdHJpbmdzLmMgICAgICAgICAgICAgICAgfCAyICstCisgdGVzdHMvYmFja3RyYWNlLmMgICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy9lbGZzdHJtZXJnZS5jICAgICAgICAgIHwgMyArKy0KKyA0MSBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FhcmNoNjRfcmV0dmFsLmMgYi9iYWNrZW5kcy9hYXJjaDY0X3JldHZhbC5jCitpbmRleCA2OGRlMzA3Li4xMzA4MzQwIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvYWFyY2g2NF9yZXR2YWwuYworKysrIGIvYmFja2VuZHMvYWFyY2g2NF9yZXR2YWwuYworQEAgLTI5Miw3ICsyOTIsNyBAQCBhYXJjaDY0X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgIGFzc2VydCAoY291bnQgPiAwKTsKKyAJICBpZiAoY291bnQgPD0gNCkKKyAJICAgIHJldHVybiBwYXNzX2hmYSAobG9jcCwgYmFzZV9zaXplLCBjb3VudCk7CistCSAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysJICBGQUxMVEhST1VHSDsKKyAKKyAJY2FzZSAxOgorIAkgIC8qIE5vdCBhIEhGQS4gICovCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvYWxwaGFfcmV0dmFsLmMgYi9iYWNrZW5kcy9hbHBoYV9yZXR2YWwuYworaW5kZXggNTNkYmZhNC4uZDliYWUzYiAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2FscGhhX3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9hbHBoYV9yZXR2YWwuYworQEAgLTg1LDcgKzg1LDcgQEAgYWxwaGFfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitAQCAtMTMxLDcgKzEzMSw3IEBAIGFscGhhX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgIH0KKyAgICAgICB9CisgCistICAgICAgLyogRWxzZSBmYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9hcm1fcmVncy5jIGIvYmFja2VuZHMvYXJtX3JlZ3MuYworaW5kZXggNGVlMTAzOS4uNDE4YzkzMSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2FybV9yZWdzLmMKKysrKyBiL2JhY2tlbmRzL2FybV9yZWdzLmMKK0BAIC04MSw3ICs4MSw3IEBAIGFybV9yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgICAgICAgICogYnV0IGdjYyBtYXBzIEZQQSByZWdpc3RlcnMgaGVyZQorICAgICAgICAqLworICAgICAgIHJlZ25vICs9IDk2IC0gMTY7CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSA5NiArIDAgLi4uIDk2ICsgNzoKKyAgICAgICAqc2V0bmFtZSA9ICJGUEEiOworICAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FybV9yZXR2YWwuYyBiL2JhY2tlbmRzL2FybV9yZXR2YWwuYworaW5kZXggODY4N2VhYi4uMzEzZTRlYiAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2FybV9yZXR2YWwuYworKysrIGIvYmFja2VuZHMvYXJtX3JldHZhbC5jCitAQCAtOTAsNyArOTAsNyBAQCBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwLAorIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOworIAl9CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgorICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2kzODZfcmVncy5jIGIvYmFja2VuZHMvaTM4Nl9yZWdzLmMKK2luZGV4IGZkOTYzYTYuLjdlYzkzYmIgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9pMzg2X3JlZ3MuYworKysrIGIvYmFja2VuZHMvaTM4Nl9yZWdzLmMKK0BAIC05Miw3ICs5Miw3IEBAIGkzODZfcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorICAgICBjYXNlIDU6CisgICAgIGNhc2UgODoKKyAgICAgICAqdHlwZSA9IERXX0FURV9hZGRyZXNzOworLSAgICAgIC8qIEZhbGx0aHJvdWdoICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgICAgIGNhc2UgMCAuLi4gMzoKKyAgICAgY2FzZSA2IC4uLiA3OgorICAgICAgIG5hbWVbMF0gPSAnZSc7CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvaTM4Nl9yZXR2YWwuYyBiL2JhY2tlbmRzL2kzODZfcmV0dmFsLmMKK2luZGV4IDRhYTY0NmYuLjMyZmVjNzIgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9pMzg2X3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9pMzg2X3JldHZhbC5jCitAQCAtODUsNyArODUsNyBAQCBpMzg2X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOworIAl9CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgorICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorQEAgLTEyMyw3ICsxMjMsNyBAQCBpMzg2X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAlpZiAoc2l6ZSA8PSA4KQorIAkgIHJldHVybiBubG9jX2ludHJlZ3BhaXI7CisgICAgICAgfQorLSAgICAvKiBGYWxsdGhyb3VnaCAqLworKyAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvaWE2NF9yZXR2YWwuYyBiL2JhY2tlbmRzL2lhNjRfcmV0dmFsLmMKK2luZGV4IGRjZDVmMjguLjAzZWE0ZDggMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9pYTY0X3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9pYTY0X3JldHZhbC5jCitAQCAtMjYwLDcgKzI2MCw3IEBAIGlhNjRfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMgYi9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYworaW5kZXggNjc2MzhkNy4uNWYwNmM4OSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jCisrKysgYi9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYworQEAgLTIyNiw3ICsyMjYsNyBAQCBFQkxIT09LKGNvcmVfbm90ZSkgKGNvbnN0IEdFbGZfTmhkciAqbmhkciwgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICBpZiAobWVtY21wIChuYW1lLCAiQ09SRSIsIG5oZHItPm5fbmFtZXN6KSA9PSAwKQorIAlicmVhazsKKyAgICAgICAvKiBCdWdneSBvbGQgTGludXgga2VybmVscyBkaWRuJ3QgdGVybWluYXRlICJMSU5VWCIuICAqLworLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBzaXplb2YgIkxJTlVYIjoKKyAgICAgICBpZiAobWVtY21wIChuYW1lLCAiTElOVVgiLCBuaGRyLT5uX25hbWVzeikgPT0gMCkKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9tNjhrX3JldHZhbC5jIGIvYmFja2VuZHMvbTY4a19yZXR2YWwuYworaW5kZXggYzY4ZWQwMi4uYTY1M2JhMyAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL202OGtfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL202OGtfcmV0dmFsLmMKK0BAIC05Miw3ICs5Miw3IEBAIG02OGtfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitAQCAtMTM1LDcgKzEzNSw3IEBAIG02OGtfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCWlmIChzaXplIDw9IDgpCisgCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKKyAgICAgICB9CistICAgICAgLyogRmFsbHRocm91Z2ggKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19yZXR2YWwuYyBiL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKK2luZGV4IDU3NDg3YmIuLmM2ZTFmZmUgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9taXBzX3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCitAQCAtMzA2LDcgKzMwNiw3IEBAIG1pcHNfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK0BAIC0zODksNyArMzg5LDcgQEAgbWlwc19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCistICAgICAgLyogRmFsbHRocm91Z2ggdG8gaGFuZGxlIGxhcmdlIHR5cGVzICovCisrICAgICAgRkFMTFRIUk9VR0g7IC8qIEZhbGx0aHJvdWdoIHRvIGhhbmRsZSBsYXJnZSB0eXBlcyAqLworIAorICAgICBjYXNlIERXX1RBR19hcnJheV90eXBlOgorICAgICBsYXJnZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMgYi9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKK2luZGV4IGRmN2VjM2EuLjFmMWU5MWEgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYworQEAgLTExNiw3ICsxMTYsNyBAQCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwLCBpbgorIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworIAkgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitAQCAtMTY3LDYgKzE2Nyw3IEBAIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsIGluCisgCisgCS8qIEVsc2UgZmFsbCB0aHJvdWdoLiAgKi8KKyAgICAgICB9CisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgorICAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgorQEAgLTE4OSw3ICsxOTAsNyBAQCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwLCBpbgorICAgICAgICAgKmxvY3AgPSBsb2NfYWdncmVnYXRlOworICAgICAgICAgcmV0dXJuIG5sb2NfYWdncmVnYXRlOworICNlbmRpZgorLQkvKiBmYWxsIHRocm91Z2guICAqLworKwlGQUxMVEhST1VHSDsKKyAgICAgICB9CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9wcGM2NF9yZXR2YWwuYyBiL2JhY2tlbmRzL3BwYzY0X3JldHZhbC5jCitpbmRleCBhMjUxOTgzLi5lYjFjMTFlIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvcHBjNjRfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL3BwYzY0X3JldHZhbC5jCitAQCAtOTYsNyArOTYsNyBAQCBwcGM2NF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK0BAIC0xNDEsNyArMTQxLDcgQEAgcHBjNjRfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgcmV0dXJuIG5sb2NfaW50cmVnOworIAl9CisgCistICAgICAgLyogRWxzZSBmYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZToKK0BAIC0xNjEsNyArMTYxLDcgQEAgcHBjNjRfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgICByZXR1cm4gbmxvY192bXhyZWc7CisgCSAgfQorICAgICAgIH0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19zdHJpbmdfdHlwZToKKyAgICAgICBpZiAoZHdhcmZfYWdncmVnYXRlX3NpemUgKHR5cGVkaWUsICZzaXplKSA9PSAwICYmIHNpemUgPD0gOCkKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9wcGNfcmVncy5jIGIvYmFja2VuZHMvcHBjX3JlZ3MuYworaW5kZXggYzJkNTAxMS4uNDNkMjUzNCAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3BwY19yZWdzLmMKKysrKyBiL2JhY2tlbmRzL3BwY19yZWdzLmMKK0BAIC0xNDAsNyArMTQwLDcgQEAgcHBjX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKyAgICAgY2FzZSAxMDA6CisgICAgICAgaWYgKCpiaXRzID09IDMyKQorIAlyZXR1cm4gc3RwY3B5IChuYW1lLCAibXEiKSArIDEgLSBuYW1lOworLSAgICAgIC8qIEZhbGx0aHJvdWdoICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgICAgIGNhc2UgMTAyIC4uLiAxMDc6CisgICAgICAgbmFtZVswXSA9ICdzJzsKKyAgICAgICBuYW1lWzFdID0gJ3AnOworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BwY19yZXR2YWwuYyBiL2JhY2tlbmRzL3BwY19yZXR2YWwuYworaW5kZXggYjE0YTk5Zi4uMzliNDJkYSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3BwY19yZXR2YWwuYworKysrIGIvYmFja2VuZHMvcHBjX3JldHZhbC5jCitAQCAtMTA4LDcgKzEwOCw3IEBAIHBwY19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK0BAIC0xNzIsNyArMTcyLDcgQEAgcHBjX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgICAgICByZXR1cm4gbmxvY19pbnRyZWdxdWFkOworIAkgICAgfQorICAgICAgIH0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9zMzkwX3JldHZhbC5jIGIvYmFja2VuZHMvczM5MF9yZXR2YWwuYworaW5kZXggYTkyN2Q0Ni4uMjA0M2Y5OCAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3MzOTBfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL3MzOTBfcmV0dmFsLmMKK0BAIC04Nyw3ICs4Nyw3IEBAIHMzOTBfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitAQCAtMTI3LDcgKzEyNyw3IEBAIHMzOTBfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgICByZXR1cm4gc2l6ZSA8PSBhc2l6ZSA/IG5sb2NfaW50cmVnIDogbmxvY19pbnRyZWdwYWlyOworIAkgIH0KKyAgICAgICB9CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvc2hfcmV0dmFsLmMgYi9iYWNrZW5kcy9zaF9yZXR2YWwuYworaW5kZXggZDQ0ZjI2MC4uMzNkN2Q5NiAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3NoX3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9zaF9yZXR2YWwuYworQEAgLTg0LDcgKzg0LDcgQEAgc2hfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvc3BhcmNfcmV0dmFsLmMgYi9iYWNrZW5kcy9zcGFyY19yZXR2YWwuYworaW5kZXggZTFiMTc3NS4uZmI4MWNkYyAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3NwYXJjX3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9zcGFyY19yZXR2YWwuYworQEAgLTkxLDcgKzkxLDcgQEAgc3BhcmNfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvdGlsZWd4X3JldHZhbC5jIGIvYmFja2VuZHMvdGlsZWd4X3JldHZhbC5jCitpbmRleCBkYjgxYTIwLi43ZjdkMjRiIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvdGlsZWd4X3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy90aWxlZ3hfcmV0dmFsLmMKK0BAIC03OSw3ICs3OSw3IEBAIHRpbGVneF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK0BAIC0xMTMsNyArMTEzLDcgQEAgdGlsZWd4X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgIHJldHVybiBubG9jX2ludHJlZzsKKyAJfQorIAorLSAgICAgIC8qIEVsc2UgZmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMveDg2XzY0X3JlZ3MuYyBiL2JhY2tlbmRzL3g4Nl82NF9yZWdzLmMKK2luZGV4IDg0MzA0NDAuLmVmOTg3ZGEgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy94ODZfNjRfcmVncy5jCisrKysgYi9iYWNrZW5kcy94ODZfNjRfcmVncy5jCitAQCAtODcsNyArODcsNyBAQCB4ODZfNjRfcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorIAorICAgICBjYXNlIDYgLi4uIDc6CisgICAgICAgKnR5cGUgPSBEV19BVEVfYWRkcmVzczsKKy0gICAgICAvKiBGYWxsdGhyb3VnaCAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBjYXNlIDAgLi4uIDU6CisgICAgICAgbmFtZVswXSA9ICdyJzsKKyAgICAgICBuYW1lWzFdID0gYmFzZXJlZ3NbcmVnbm9dWzBdOworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3g4Nl82NF9yZXR2YWwuYyBiL2JhY2tlbmRzL3g4Nl82NF9yZXR2YWwuYworaW5kZXggYjM3OTlhZS4uZjkxMTRjYiAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3g4Nl82NF9yZXR2YWwuYworKysrIGIvYmFja2VuZHMveDg2XzY0X3JldHZhbC5jCitAQCAtMTAwLDcgKzEwMCw3IEBAIHg4Nl82NF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK2RpZmYgLS1naXQgYS9jb25maWcvZXUuYW0gYi9jb25maWcvZXUuYW0KK2luZGV4IDhmZTFlMjUuLmI2ZWM1ODEgMTAwNjQ0CistLS0gYS9jb25maWcvZXUuYW0KKysrKyBiL2NvbmZpZy9ldS5hbQorQEAgLTYyLDcgKzYyLDkgQEAgTlVMTF9ERVJFRkVSRU5DRV9XQVJOSU5HPQorIGVuZGlmCisgCisgaWYgSEFWRV9JTVBMSUNJVF9GQUxMVEhST1VHSF9XQVJOSU5HCistSU1QTElDSVRfRkFMTFRIUk9VR0hfV0FSTklORz0tV2ltcGxpY2l0LWZhbGx0aHJvdWdoCisrIyBVc2Ugc3RyaWN0IGZhbGx0aHJvdWdoLiBPbmx5IF9fYXR0cmlidXRlX18oKGZhbGx0aHJvdWdoKSkgd2lsbCBwcmV2ZW50IHRoZQorKyMgd2FybmluZworK0lNUExJQ0lUX0ZBTExUSFJPVUdIX1dBUk5JTkc9LVdpbXBsaWNpdC1mYWxsdGhyb3VnaD01CisgZWxzZQorIElNUExJQ0lUX0ZBTExUSFJPVUdIX1dBUk5JTkc9CisgZW5kaWYKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDFmMTg1NmQuLjY5OGVmYmIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTM2MCw2ICszNjAsMTIgQEAgQ0ZMQUdTPSIkb2xkX0NGTEFHUyJdKQorIEFNX0NPTkRJVElPTkFMKEhBVkVfSU1QTElDSVRfRkFMTFRIUk9VR0hfV0FSTklORywKKyAJICAgICAgIFt0ZXN0ICJ4JGFjX2N2X2ltcGxpY2l0X2ZhbGx0aHJvdWdoIiAhPSAieG5vIl0pCisgCisrIyBBc3N1bWUgdGhlIGZhbGx0aHJvdWdoIGF0dHJpYnV0ZSBpcyBzdXBwb3J0ZWQgaWYgLVdpbXBsaWN0LWZhbGx0aHJvdWdoIGlzIHN1cHBvcnRlZAorK2lmIHRlc3QgIiRhY19jdl9pbXBsaWNpdF9mYWxsdGhyb3VnaCIgPSAieWVzIjsgdGhlbgorKwlBQ19ERUZJTkUoW0hBVkVfRkFMTFRIUk9VR0hdLCBbMV0sCisrCQkgIFtEZWZpbmVkIGlmIF9fYXR0cmlidXRlX18oKGZhbGx0aHJvdWdoKSkgaXMgc3VwcG9ydGVkXSkKKytmaQorKworIGRubCBDaGVjayBpZiB3ZSBoYXZlIGFyZ3AgYXZhaWxhYmxlIGZyb20gb3VyIGxpYmMKKyBBQ19MSU5LX0lGRUxTRSgKKyAJW0FDX0xBTkdfUFJPR1JBTSgKK2RpZmYgLS1naXQgYS9saWIvZXUtY29uZmlnLmggYi9saWIvZXUtY29uZmlnLmgKK2luZGV4IDQwMGNkYzYuLmU4ZDRlYzIgMTAwNjQ0CistLS0gYS9saWIvZXUtY29uZmlnLmgKKysrKyBiL2xpYi9ldS1jb25maWcuaAorQEAgLTE4Niw1ICsxODYsMTIgQEAgYXNtICgiLnNlY3Rpb24gcHJlZGljdF9kYXRhLCBcImF3XCI7IC5wcmV2aW91c1xuIgorICMgZGVmaW5lIENPTVBBVF9WRVJTSU9OKG5hbWUsIHZlcnNpb24sIHByZWZpeCkgZXJyb3IgInNob3VsZCB1c2UgI2lmZGVmIFNZTUJPTF9WRVJTSU9OSU5HIgorICNlbmRpZgorIAorKyNpZm5kZWYgRkFMTFRIUk9VR0gKKysjIGlmZGVmIEhBVkVfRkFMTFRIUk9VR0gKKysjICBkZWZpbmUgRkFMTFRIUk9VR0ggX19hdHRyaWJ1dGVfXyAoKGZhbGx0aHJvdWdoKSkKKysjIGVsc2UKKysjICBkZWZpbmUgRkFMTFRIUk9VR0ggKCh2b2lkKSAwKQorKyMgZW5kaWYKKysjZW5kaWYKKyAKKyAjZW5kaWYJLyogZXUtY29uZmlnLmggKi8KK2RpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9kaXNhc20uYyBiL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCitpbmRleCA2MGZkNmQ0Li44MzdhM2E4IDEwMDY0NAorLS0tIGEvbGliY3B1L2kzODZfZGlzYXNtLmMKKysrKyBiL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCitAQCAtODE5LDcgKzgxOSw3IEBAIGkzODZfZGlzYXNtIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKyAJCQkgICAgICArK3BhcmFtX3N0YXJ0OworIAkJCSAgICAgIGJyZWFrOworIAkJCSAgICB9CistCQkJICAvKiBGYWxsdGhyb3VnaCAqLworKwkJCSAgRkFMTFRIUk9VR0g7CisgCQkJZGVmYXVsdDoKKyAJCQkgIHN0ciA9ICIiOworIAkJCSAgYXNzZXJ0ICghICJJTlZBTElEIG5vdCBoYW5kbGVkIik7CitkaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfcGFyc2UuYyBiL2xpYmNwdS9pMzg2X3BhcnNlLmMKK2luZGV4IGVmMWFjMzUuLjZmYTdjZTMgMTAwNjQ0CistLS0gYS9saWJjcHUvaTM4Nl9wYXJzZS5jCisrKysgYi9saWJjcHUvaTM4Nl9wYXJzZS5jCitAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgeXl0bmFtZXJyIChjaGFyICp5eXJlcywgY29uc3QgY2hhciAqeXlzdHIpCisgICAgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgICAgICBpZiAoKisreXlwICE9ICdcXCcpCisgICAgICAgICAgICAgICBnb3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7CistICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICBpZiAoeXlyZXMpCisgICAgICAgICAgICAgICB5eXJlc1t5eW5dID0gKnl5cDsKK0BAIC0yMDQyLDcgKzIwNDIsNyBAQCB5eWFib3J0bGFiOgorIHl5ZXhoYXVzdGVkbGFiOgorICAgeXllcnJvciAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOworICAgeXlyZXN1bHQgPSAyOworLSAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgIEZBTExUSFJPVUdIOworICNlbmRpZgorIAorIHl5cmV0dXJuOgorZGlmZiAtLWdpdCBhL2xpYmR3L2NmaS5jIGIvbGliZHcvY2ZpLmMKK2luZGV4IGRhYTg0NWYuLjM0MWUwNTUgMTAwNjQ0CistLS0gYS9saWJkdy9jZmkuYworKysrIGIvbGliZHcvY2ZpLmMKK0BAIC0xMzgsNyArMTM4LDcgQEAgZXhlY3V0ZV9jZmkgKER3YXJmX0NGSSAqY2FjaGUsCisgCisgCWNhc2UgRFdfQ0ZBX2FkdmFuY2VfbG9jMToKKyAJICBvcGVyYW5kID0gKnByb2dyYW0rKzsKKy0JICAvKiBGYWxsdGhyb3VnaCAqLworKwkgIEZBTExUSFJPVUdIOworIAljYXNlIERXX0NGQV9hZHZhbmNlX2xvYyArIDAgLi4uIERXX0NGQV9hZHZhbmNlX2xvYyArIENGSV9QUklNQVJZX01BWDoKKyAJYWR2YW5jZV9sb2M6CisgCSAgbG9jICs9IG9wZXJhbmQgKiBjaWUtPmNvZGVfYWxpZ25tZW50X2ZhY3RvcjsKK0BAIC0zMDEsNyArMzAxLDcgQEAgZXhlY3V0ZV9jZmkgKER3YXJmX0NGSSAqY2FjaGUsCisgCisgCWNhc2UgRFdfQ0ZBX3Jlc3RvcmVfZXh0ZW5kZWQ6CisgCSAgZ2V0X3VsZWIxMjggKG9wZXJhbmQsIHByb2dyYW0sIGVuZCk7CistCSAgLyogRmFsbHRocm91Z2ggKi8KKysJICBGQUxMVEhST1VHSDsKKyAJY2FzZSBEV19DRkFfcmVzdG9yZSArIDAgLi4uIERXX0NGQV9yZXN0b3JlICsgQ0ZJX1BSSU1BUllfTUFYOgorIAorIAkgIGlmICh1bmxpa2VseSAoYWJpX2NmaSkgJiYgbGlrZWx5IChvcGNvZGUgPT0gRFdfQ0ZBX3Jlc3RvcmUpKQorZGlmZiAtLWdpdCBhL2xpYmR3L2R3YXJmX2ZyYW1lX3JlZ2lzdGVyLmMgYi9saWJkdy9kd2FyZl9mcmFtZV9yZWdpc3Rlci5jCitpbmRleCAzN2U4ZTkxLi5kMDE1OWZiIDEwMDY0NAorLS0tIGEvbGliZHcvZHdhcmZfZnJhbWVfcmVnaXN0ZXIuYworKysrIGIvbGliZHcvZHdhcmZfZnJhbWVfcmVnaXN0ZXIuYworQEAgLTYyLDcgKzYyLDcgQEAgZHdhcmZfZnJhbWVfcmVnaXN0ZXIgKER3YXJmX0ZyYW1lICpmcywgaW50IHJlZ25vLCBEd2FyZl9PcCAqb3BzX21lbSwKKyAgICAgICAvKiBVc2UgdGhlIGRlZmF1bHQgcnVsZSBmb3IgcmVnaXN0ZXJzIG5vdCB5ZXQgbWVudGlvbmVkIGluIENGSS4gICovCisgICAgICAgaWYgKGZzLT5jYWNoZS0+ZGVmYXVsdF9zYW1lX3ZhbHVlKQorIAlnb3RvIHNhbWVfdmFsdWU7CistICAgICAgLypGQUxMVEhST1VHSCovCisrICAgICAgRkFMTFRIUk9VR0g7CisgICAgIGNhc2UgcmVnX3VuZGVmaW5lZDoKKyAgICAgICAvKiBUaGUgdmFsdWUgaXMga25vd24gdG8gYmUgdW5hdmFpbGFibGUuICAqLworICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9yZXBvcnRfZWxmLmMgYi9saWJkd2ZsL2R3ZmxfcmVwb3J0X2VsZi5jCitpbmRleCA2OTUwYTM3Li4zZmM5Mzg0IDEwMDY0NAorLS0tIGEvbGliZHdmbC9kd2ZsX3JlcG9ydF9lbGYuYworKysrIGIvbGliZHdmbC9kd2ZsX3JlcG9ydF9lbGYuYworQEAgLTE3NCw3ICsxNzQsNyBAQCBfX2xpYmR3ZmxfZWxmX2FkZHJlc3NfcmFuZ2UgKEVsZiAqZWxmLCBHRWxmX0FkZHIgYmFzZSwgYm9vbCBhZGRfcF92YWRkciwKKyAgICAgICAvKiBBbiBhc3NpZ25lZCBiYXNlIGFkZHJlc3MgaXMgbWVhbmluZ2xlc3MgZm9yIHRoZXNlLiAgKi8KKyAgICAgICBiYXNlID0gMDsKKyAgICAgICBhZGRfcF92YWRkciA9IHRydWU7CistICAgICAgLyogRmFsbHRocm91Z2guICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgICAgIGNhc2UgRVRfRFlOOgorICAgICBkZWZhdWx0OjsKKyAgICAgICBzaXplX3QgcGhudW07CitkaWZmIC0tZ2l0IGEvbGliZHdmbC9mcmFtZV91bndpbmQuYyBiL2xpYmR3ZmwvZnJhbWVfdW53aW5kLmMKK2luZGV4IDRkYzljNDMuLmVhZWE0OTUgMTAwNjQ0CistLS0gYS9saWJkd2ZsL2ZyYW1lX3Vud2luZC5jCisrKysgYi9saWJkd2ZsL2ZyYW1lX3Vud2luZC5jCitAQCAtNDQyLDcgKzQ0Miw3IEBAIGV4cHJfZXZhbCAoRHdmbF9GcmFtZSAqc3RhdGUsIER3YXJmX0ZyYW1lICpmcmFtZSwgY29uc3QgRHdhcmZfT3AgKm9wcywKKyAJICAgIH0KKyAJICBpZiAodmFsMSA9PSAwKQorIAkgICAgYnJlYWs7CistCSAgLyogRkFMTFRIUlUgKi8KKysJICBGQUxMVEhST1VHSDsKKyAJY2FzZSBEV19PUF9za2lwOjsKKyAJICBEd2FyZl9Xb3JkIG9mZnNldCA9IG9wLT5vZmZzZXQgKyAxICsgMiArIChpbnQxNl90KSBvcC0+bnVtYmVyOworIAkgIGNvbnN0IER3YXJmX09wICpmb3VuZCA9IGJzZWFyY2ggKCh2b2lkICopICh1aW50cHRyX3QpIG9mZnNldCwgb3BzLCBub3BzLAorZGlmZiAtLWdpdCBhL2xpYmVibC9lYmxvYmpub3RlLmMgYi9saWJlYmwvZWJsb2Jqbm90ZS5jCitpbmRleCBmODBhMWE1Li5jYTRmMTU1IDEwMDY0NAorLS0tIGEvbGliZWJsL2VibG9iam5vdGUuYworKysrIGIvbGliZWJsL2VibG9iam5vdGUuYworQEAgLTIyMyw3ICsyMjMsNyBAQCBlYmxfb2JqZWN0X25vdGUgKEVibCAqZWJsLCBjb25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCB0eXBlLAorIAkJZnJlZSAoYnVmKTsKKyAJICAgICAgYnJlYWs7CisgCSAgICB9CistCSAgLyogRkFMTFRIUk9VR0ggKi8KKysJICBGQUxMVEhST1VHSDsKKyAKKyAJZGVmYXVsdDoKKyAJICAvKiBVbmtub3duIHR5cGUuICAqLworZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMgYi9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCitpbmRleCBhNTFiZjcwLi41MzUxNTE4IDEwMDY0NAorLS0tIGEvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYworKysrIGIvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYworQEAgLTIzMiw3ICsyMzIsNyBAQCBfX2VsZncyKExJQkVMRkJJVFMsdXBkYXRlbnVsbF93cmxvY2spIChFbGYgKmVsZiwgaW50ICpjaGFuZ2VfYm9wLCBzaXplX3Qgc2hudW0pCisgCQkgICAgICBfX2xpYmVsZl9zZXRlcnJubyAoRUxGX0VfR1JPVVBfTk9UX1JFTCk7CisgCQkgICAgICByZXR1cm4gLTE7CisgCQkgICAgfQorLQkJICAvKiBGQUxMVEhST1VHSCAqLworKwkJICBGQUxMVEhST1VHSDsKKyAJCWNhc2UgU0hUX1NZTVRBQl9TSE5EWDoKKyAJCSAgc2hfZW50c2l6ZSA9IGVsZl90eXBlc2l6ZSAoMzIsIEVMRl9UX1dPUkQsIDEpOworIAkJICBicmVhazsKK2RpZmYgLS1naXQgYS9saWJlbGYvZWxmX2JlZ2luLmMgYi9saWJlbGYvZWxmX2JlZ2luLmMKK2luZGV4IDZmODUwMzguLjZkZTIwNmEgMTAwNjQ0CistLS0gYS9saWJlbGYvZWxmX2JlZ2luLmMKKysrKyBiL2xpYmVsZi9lbGZfYmVnaW4uYworQEAgLTU4Miw3ICs1ODIsNyBAQCByZWFkX3VubW1hcGVkX2ZpbGUgKGludCBmaWxkZXMsIG9mZl90IG9mZnNldCwgc2l6ZV90IG1heHNpemUsIEVsZl9DbWQgY21kLAorIAkJCSAgICAgPyBzaXplb2YgKEVsZjMyX0VoZHIpIDogc2l6ZW9mIChFbGY2NF9FaGRyKSkpCisgCXJldHVybiBmaWxlX3JlYWRfZWxmIChmaWxkZXMsIE5VTEwsIG1lbS5oZWFkZXIsIG9mZnNldCwgbWF4c2l6ZSwgY21kLAorIAkJCSAgICAgIHBhcmVudCk7CistICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgZGVmYXVsdDoKKyAgICAgICBicmVhazsKK0BAIC0xMDk3LDcgKzEwOTcsNyBAQCBlbGZfYmVnaW4gKGludCBmaWxkZXMsIEVsZl9DbWQgY21kLCBFbGYgKnJlZikKKyAJICByZXR2YWwgPSBOVUxMOworIAkgIGJyZWFrOworIAl9CistICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBFTEZfQ19SRUFEOgorICAgICBjYXNlIEVMRl9DX1JFQURfTU1BUDoKK2RpZmYgLS1naXQgYS9saWJlbGYvZWxmX2NudGwuYyBiL2xpYmVsZi9lbGZfY250bC5jCitpbmRleCBhYjEzZmZiLi5mZDY4MTc4IDEwMDY0NAorLS0tIGEvbGliZWxmL2VsZl9jbnRsLmMKKysrKyBiL2xpYmVsZi9lbGZfY250bC5jCitAQCAtNjIsNyArNjIsNyBAQCBlbGZfY250bCAoRWxmICplbGYsIEVsZl9DbWQgY21kKQorIAkgIHJlc3VsdCA9IC0xOworIAkgIGJyZWFrOworIAl9CistICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBFTEZfQ19GRERPTkU6CisgICAgICAgLyogTWFyayB0aGUgZmlsZSBkZXNjcmlwdG9yIGFzIG5vdCB1c2FibGUuICAqLworZGlmZiAtLWdpdCBhL3NyYy9hZGRyMmxpbmUuYyBiL3NyYy9hZGRyMmxpbmUuYworaW5kZXggYmE0MTRhNy4uNDQ0ZWU1MiAxMDA2NDQKKy0tLSBhL3NyYy9hZGRyMmxpbmUuYworKysrIGIvc3JjL2FkZHIybGluZS5jCitAQCAtNjE4LDcgKzYxOCw3IEBAIGhhbmRsZV9hZGRyZXNzIChjb25zdCBjaGFyICpzdHJpbmcsIER3ZmwgKmR3ZmwpCisgCWNhc2UgMToKKyAJICBhZGRyID0gMDsKKyAJICBqID0gaTsKKy0JICAvKiBGYWxsdGhyb3VnaCAqLworKwkgIEZBTExUSFJPVUdIOworIAljYXNlIDI6CisgCSAgaWYgKHN0cmluZ1tqXSAhPSAnXDAnKQorIAkgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvc3JjL2VsZmNvbXByZXNzLmMgYi9zcmMvZWxmY29tcHJlc3MuYworaW5kZXggOGUwZDVjNS4uMjUzNzhhNCAxMDA2NDQKKy0tLSBhL3NyYy9lbGZjb21wcmVzcy5jCisrKysgYi9zcmMvZWxmY29tcHJlc3MuYworQEAgLTE0OSw3ICsxNDksNyBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgCQkgICAgTl8oIk9ubHkgb25lIGlucHV0IGZpbGUgYWxsb3dlZCB0b2dldGhlciB3aXRoICctbyciKSk7CisgICAgICAgLyogV2Ugb25seSB1c2UgdGhpcyBmb3IgY2hlY2tpbmcgdGhlIG51bWJlciBvZiBhcmd1bWVudHMsIHdlIGRvbid0CisgCSBhY3R1YWxseSB3YW50IHRvIGNvbnN1bWUgdGhlbS4gICovCistICAgICAgLyogRmFsbHRocm91Z2ggKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgZGVmYXVsdDoKKyAgICAgICByZXR1cm4gQVJHUF9FUlJfVU5LTk9XTjsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3NyYy9lbGZsaW50LmMgYi9zcmMvZWxmbGludC5jCitpbmRleCA1MWU1M2MyLi5kZjFiM2EwIDEwMDY0NAorLS0tIGEvc3JjL2VsZmxpbnQuYworKysrIGIvc3JjL2VsZmxpbnQuYworQEAgLTE3NjQsNyArMTc2NCw3IEBAIHNlY3Rpb24gWyUyZF0gJyVzJzogZW50cnkgJXp1OiBwb2ludGVyIGRvZXMgbm90IG1hdGNoIGFkZHJlc3Mgb2Ygc2VjdGlvbiBbJTJkXSAnCisgCSAgaWYgKGR5bi0+ZF90YWcgPCBEVF9BRERSUk5HTE8gfHwgZHluLT5kX3RhZyA+IERUX0FERFJSTkdISSkKKyAJICAgIC8qIFZhbHVlIGlzIG5vIHBvaW50ZXIuICAqLworIAkgICAgYnJlYWs7CistCSAgLyogRkFMTFRIUk9VR0ggKi8KKysJICBGQUxMVEhST1VHSDsKKyAKKyAJY2FzZSBEVF9BVVhJTElBUlk6CisgCWNhc2UgRFRfRklMVEVSOgorQEAgLTM5OTMsNyArMzk5Myw3IEBAIHNlY3Rpb24gWyUyenVdICclcyc6IG1lcmdlIGZsYWcgc2V0IGJ1dCBlbnRyeSBzaXplIGlzIHplcm9cbiIpLAorIAkgICAgY2FzZSBTSFRfTk9CSVRTOgorIAkgICAgICBpZiAoaXNfZGVidWdpbmZvKQorIAkJYnJlYWs7CistCSAgICAgIC8qIEZhbGx0aHJvdWdoICovCisrCSAgICAgIEZBTExUSFJPVUdIOworIAkgICAgZGVmYXVsdDoKKyAJICAgICAgRVJST1IgKGdldHRleHQgKCJcCisgc2VjdGlvbiBbJTJ6dV0gJyVzJyBoYXMgdW5leHBlY3RlZCB0eXBlICVkIGZvciBhbiBleGVjdXRhYmxlIHNlY3Rpb25cbiIpLAorQEAgLTQxMzcsNyArNDEzNyw3IEBAIHNlY3Rpb24gWyUyenVdICclcyc6IEVMRiBoZWFkZXIgc2F5cyB0aGlzIGlzIHRoZSBzZWN0aW9uIGhlYWRlciBzdHJpbmcgdGFibGUgYnV0CisgCSAgICBFUlJPUiAoZ2V0dGV4dCAoIlwKKyBzZWN0aW9uIFslMnp1XSAnJXMnOiByZWxvY2F0YWJsZSBmaWxlcyBjYW5ub3QgaGF2ZSBkeW5hbWljIHN5bWJvbCB0YWJsZXNcbiIpLAorIAkJICAgY250LCBzZWN0aW9uX25hbWUgKGVibCwgY250KSk7CistCSAgLyogRkFMTFRIUk9VR0ggKi8KKysJICBGQUxMVEhST1VHSDsKKyAJY2FzZSBTSFRfU1lNVEFCOgorIAkgIGNoZWNrX3N5bXRhYiAoZWJsLCBlaGRyLCBzaGRyLCBjbnQpOworIAkgIGJyZWFrOworQEAgLTQzMzYsNyArNDMzNiw3IEBAIHNlY3Rpb24gWyUyZF0gJyVzJzogdW5rbm93biBjb3JlIGZpbGUgbm90ZSB0eXBlICUiIFBSSXUzMgorIAkgICAgaWYgKG5oZHIubl9uYW1lc3ogPT0gc2l6ZW9mICJMaW51eCIKKyAJCSYmICFtZW1jbXAgKGRhdGEtPmRfYnVmICsgbmFtZV9vZmZzZXQsICJMaW51eCIsIHNpemVvZiAiTGludXgiKSkKKyAJICAgICAgYnJlYWs7CistCSAgICAvKiBGYWxsdGhyb3VnaCAqLworKwkgICAgRkFMTFRIUk9VR0g7CisgCSAgZGVmYXVsdDoKKyAJICAgIGlmIChzaG5keCA9PSAwKQorIAkgICAgICBFUlJPUiAoZ2V0dGV4dCAoIlwKK2RpZmYgLS1naXQgYS9zcmMvb2JqZHVtcC5jIGIvc3JjL29iamR1bXAuYworaW5kZXggODYwY2ZhYy4uMGRkOWE2YSAxMDA2NDQKKy0tLSBhL3NyYy9vYmpkdW1wLmMKKysrKyBiL3NyYy9vYmpkdW1wLmMKK0BAIC0yMjMsNyArMjIzLDcgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsCisgCX0KKyAgICAgICAvKiBXZSBvbmx5IHVzZSB0aGlzIGZvciBjaGVja2luZyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cywgd2UgZG9uJ3QKKyAJIGFjdHVhbGx5IHdhbnQgdG8gY29uc3VtZSB0aGVtLiAgKi8KKy0gICAgICAvKiBGYWxsdGhyb3VnaCAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBkZWZhdWx0OgorICAgICAgIHJldHVybiBBUkdQX0VSUl9VTktOT1dOOworICAgICB9CitkaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9yZWFkZWxmLmMKK2luZGV4IDM0NmVjY2QuLjZhMjdlN2UgMTAwNjQ0CistLS0gYS9zcmMvcmVhZGVsZi5jCisrKysgYi9zcmMvcmVhZGVsZi5jCitAQCAtNDY1LDcgKzQ2NSw3IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnLAorIAkgIHByaW50X3N0cmluZ19zZWN0aW9ucyA9IHRydWU7CisgCSAgYnJlYWs7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBjYXNlICd4JzoKKyAgICAgICBhZGRfZHVtcF9zZWN0aW9uIChhcmcsIGZhbHNlKTsKKyAgICAgICBhbnlfY29udHJvbF9vcHRpb24gPSB0cnVlOworQEAgLTYwMjksNyArNjAyOSw3IEBAIGF0dHJfY2FsbGJhY2sgKER3YXJmX0F0dHJpYnV0ZSAqYXR0cnAsIHZvaWQgKmFyZykKKyAJCQlkd2FyZl9mb3JtX25hbWUgKGZvcm0pLCAodWludG1heF90KSBudW0pOworIAkgICAgICByZXR1cm4gRFdBUkZfQ0JfT0s7CisgCSAgICB9CistCSAgLyogZWxzZSBmYWxsdGhyb3VnaCAqLworKwkgIEZBTExUSFJPVUdIOworIAorIAkvKiBUaGVzZSBjYXNlcyBhbHdheXMgdGFrZSBhIGxvY2xpc3RwdHIgYW5kIG5vIGNvbnN0YW50LiAqLworIAljYXNlIERXX0FUX2xvY2F0aW9uOgorQEAgLTYxOTUsNyArNjE5NSw3IEBAIGF0dHJfY2FsbGJhY2sgKER3YXJmX0F0dHJpYnV0ZSAqYXR0cnAsIHZvaWQgKmFyZykKKyAJICAgICAgcHJpbnRfYmxvY2sgKGJsb2NrLmxlbmd0aCwgYmxvY2suZGF0YSk7CisgCSAgICAgIGJyZWFrOworIAkgICAgfQorLQkgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrCSAgRkFMTFRIUk9VR0g7CisgCisgCWNhc2UgRFdfQVRfbG9jYXRpb246CisgCWNhc2UgRFdfQVRfZGF0YV9sb2NhdGlvbjoKK0BAIC05MjI3LDcgKzkyMjcsNyBAQCBoYW5kbGVfYXV4dl9ub3RlIChFYmwgKmVibCwgRWxmICpjb3JlLCBHRWxmX1dvcmQgZGVzY3N6LCBHRWxmX09mZiBkZXNjX3BvcykKKyAJCXByaW50ZiAoIiAgICAlc1xuIiwgbmFtZSk7CisgCQlicmVhazsKKyAJICAgICAgfQorLQkgICAgLyogRmFsbCB0aHJvdWdoICovCisrCSAgICBGQUxMVEhST1VHSDsKKyAJICBjYXNlICd4JzoJCS8qIGhleCAqLworIAkgIGNhc2UgJ3AnOgkJLyogYWRkcmVzcyAqLworIAkgIGNhc2UgJ3MnOgkJLyogYWRkcmVzcyBvZiBzdHJpbmcgKi8KK2RpZmYgLS1naXQgYS9zcmMvc3RyaW5ncy5jIGIvc3JjL3N0cmluZ3MuYworaW5kZXggZDIxNDM1Ni4uMDNkMGYxMyAxMDA2NDQKKy0tLSBhL3NyYy9zdHJpbmdzLmMKKysrKyBiL3NyYy9zdHJpbmdzLmMKK0BAIC0yNDYsNyArMjQ2LDcgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsCisgCWNhc2UgJ2InOgorIAljYXNlICdCJzoKKyAJICBiaWdfZW5kaWFuID0gdHJ1ZTsKKy0JICAvKiBGQUxMVEhST1VHSCAqLworKwkgIEZBTExUSFJPVUdIOworIAorIAljYXNlICdsJzoKKyAJY2FzZSAnTCc6CitkaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLmMgYi90ZXN0cy9iYWNrdHJhY2UuYworaW5kZXggMjFhYmU4YS4uZjVkZDc2MSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2JhY2t0cmFjZS5jCisrKysgYi90ZXN0cy9iYWNrdHJhY2UuYworQEAgLTEyNyw3ICsxMjcsNyBAQCBjYWxsYmFja192ZXJpZnkgKHBpZF90IHRpZCwgdW5zaWduZWQgZnJhbWVubywgRHdhcmZfQWRkciBwYywKKyAJICBhc3NlcnQgKHN5bW5hbWUyID09IE5VTEwgfHwgc3RyY21wIChzeW1uYW1lMiwgImptcCIpICE9IDApOworIAkgIGJyZWFrOworIAl9CistICAgICAgLyogRkFMTFRIUlUgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSA0OgorICAgICAgIC8qIFNvbWUgc2ltcGxlIGZyYW1lIHVud2luZGVycyBnZXQgdGhpcyB3cm9uZyBhbmQgdGhpbmsgc2lndXNyMgorIAkgaXMgY2FsbGluZyBpdHNlbGYgYWdhaW4uIEFsbG93IGl0IGFuZCBqdXN0IHByZXRlbmQgdGhlcmUgaXMKK2RpZmYgLS1naXQgYS90ZXN0cy9lbGZzdHJtZXJnZS5jIGIvdGVzdHMvZWxmc3RybWVyZ2UuYworaW5kZXggOGQ1YjUzYy4uNjJjNTQ5ZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2VsZnN0cm1lcmdlLmMKKysrKyBiL3Rlc3RzL2VsZnN0cm1lcmdlLmMKK0BAIC01NzgsNyArNTc4LDggQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkgICAgICBicmVhazsKKyAKKyAJICAgIGNhc2UgU0hUX0RZTkFNSUM6CistCSAgICAgIC8qIEZhbGx0aHJvdWdoLiAgVGhlcmUgYXJlIHN0cmluZyBpbmRleGVzIGluIGhlcmUsIGJ1dAorKwkgICAgICBGQUxMVEhST1VHSDsKKysJICAgICAgLyogVGhlcmUgYXJlIHN0cmluZyBpbmRleGVzIGluIGhlcmUsIGJ1dAorIAkJIHRoZXkgKHNob3VsZCkgcG9pbnQgdG8gYSBhbGxvY2F0ZWQgc3RyaW5nIHRhYmxlLAorIAkJIHdoaWNoIHdlIGRvbid0IGFsdGVyLiAgKi8KKyAJICAgIGRlZmF1bHQ6CistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDgtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCmluZGV4IDg4NjRkNDQuLmE0MmNlN2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwMTBiMGM1N2U3NDg0NDBlYjFjZWIzZDk3Nzg3NWYyNDg4ZDJiNGNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlZjA5ODE3NDQ2NjkxNDlhMDBkZDA0MzlhNTRkYWMzMGRlN2I1NmE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTA6MDY6MjYgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IFByb3ZpZGUgYWx0ZXJuYXRpdmVzIGZvciBnbGliYyBhc3N1bXB0aW9ucyBoZWxwcwpAQCAtMTAsNiArMTAsNyBAQAogUmViYXNlIHRvIDAuMTcwCiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogIGxpYi9jb2xvci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKystCkBAIC04Myw3ICs4NCw3IEBACiAgNjkgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAyZmY0NDRlLi40MWY3N2RmIDEwMDY0NAoraW5kZXggMmZmNDQ0ZTcuLjQxZjc3ZGY4IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuYW0KICsrKyBiL01ha2VmaWxlLmFtCiBAQCAtMjgsNyArMjgsNyBAQCBwa2dpbmNsdWRlX0hFQURFUlMgPSB2ZXJzaW9uLmgKQEAgLTk2LDcgKzk3LDcgQEAKICBFWFRSQV9ESVNUID0gZWxmdXRpbHMuc3BlYyBHUEctS0VZIE5PVEVTIENPTlRSSUJVVElORyBcCiAgCSAgICAgQ09QWUlORyBDT1BZSU5HLUdQTFYyIENPUFlJTkctTEdQTFYzCiBkaWZmIC0tZ2l0IGEvbGliL2NvbG9yLmMgYi9saWIvY29sb3IuYwotaW5kZXggZjYyMzg5ZC4uYTJhODRiNCAxMDA2NDQKK2luZGV4IGY2MjM4OWQ1Li5hMmE4NGI0NiAxMDA2NDQKIC0tLSBhL2xpYi9jb2xvci5jCiArKysgYi9saWIvY29sb3IuYwogQEAgLTMyLDEzICszMiwxNCBAQApAQCAtMTE2LDcgKzExNyw3IEBACiAgLyogUHJvdG90eXBlIGZvciBvcHRpb24gaGFuZGxlci4gICovCiAgc3RhdGljIGVycm9yX3QgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSk7CiBkaWZmIC0tZ2l0IGEvbGliL2ZpeGVkc2l6ZWhhc2guaCBiL2xpYi9maXhlZHNpemVoYXNoLmgKLWluZGV4IGRhYzJhNWYuLjQzMDE2ZmMgMTAwNjQ0CitpbmRleCBkYWMyYTVmNS4uNDMwMTZmYzMgMTAwNjQ0CiAtLS0gYS9saWIvZml4ZWRzaXplaGFzaC5oCiArKysgYi9saWIvZml4ZWRzaXplaGFzaC5oCiBAQCAtMzAsNyArMzAsNiBAQApAQCAtMTI4LDcgKzEyOSw3IEBACiAgI2luY2x1ZGUgPHN5c3RlbS5oPgogIAogZGlmZiAtLWdpdCBhL2xpYi9zeXN0ZW0uaCBiL2xpYi9zeXN0ZW0uaAotaW5kZXggOTIwMzMzNS4uMWE2MDEzMSAxMDA2NDQKK2luZGV4IDkyMDMzMzU1Li4xYTYwMTMxOSAxMDA2NDQKIC0tLSBhL2xpYi9zeXN0ZW0uaAogKysrIGIvbGliL3N5c3RlbS5oCiBAQCAtNTAsNiArNTAsMTYgQEAKQEAgLTE0OSw3ICsxNTAsNyBAQAogICNpZm5kZWYgTUFYCiAgI2RlZmluZSBNQVgobSwgbikgKChtKSA8IChuKSA/IChuKSA6IChtKSkKIGRpZmYgLS1naXQgYS9saWIveG1hbGxvYy5jIGIvbGliL3htYWxsb2MuYwotaW5kZXggMGNkZTM4NC4uMjE3YjA1NCAxMDA2NDQKK2luZGV4IDBjZGUzODRmLi4yMTdiMDU0MSAxMDA2NDQKIC0tLSBhL2xpYi94bWFsbG9jLmMKICsrKyBiL2xpYi94bWFsbG9jLmMKIEBAIC0zMCw3ICszMCw3IEBACkBAIC0xNjIsNyArMTYzLDcgQEAKICAjaW5jbHVkZSA8c3RkZGVmLmg+CiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogZGlmZiAtLWdpdCBhL2xpYmFzbS9hc21fZW5kLmMgYi9saWJhc20vYXNtX2VuZC5jCi1pbmRleCBjZWQyNGY1Li40YWQ5MThjIDEwMDY0NAoraW5kZXggY2VkMjRmNTAuLjRhZDkxOGM0IDEwMDY0NAogLS0tIGEvbGliYXNtL2FzbV9lbmQuYwogKysrIGIvbGliYXNtL2FzbV9lbmQuYwogQEAgLTMyLDcgKzMyLDcgQEAKQEAgLTE3NSw3ICsxNzYsNyBAQAogICNpbmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KIGRpZmYgLS1naXQgYS9saWJhc20vYXNtX25ld3Njbi5jIGIvbGliYXNtL2FzbV9uZXdzY24uYwotaW5kZXggZGRiYjI1ZC4uNzRhNTk4ZCAxMDA2NDQKK2luZGV4IGRkYmIyNWRmLi43NGE1OThkOSAxMDA2NDQKIC0tLSBhL2xpYmFzbS9hc21fbmV3c2NuLmMKICsrKyBiL2xpYmFzbS9hc21fbmV3c2NuLmMKIEBAIC0zMiw3ICszMiw3IEBACkBAIC0xODgsNyArMTg5LDcgQEAKICAjaW5jbHVkZSA8c3RkbGliLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2dlbmRpcy5jIGIvbGliY3B1L2kzODZfZ2VuZGlzLmMKLWluZGV4IGFhZTVlYWUuLjZkNzYwMTYgMTAwNjQ0CitpbmRleCBhYWU1ZWFlNi4uNmQ3NjAxNjUgMTAwNjQ0CiAtLS0gYS9saWJjcHUvaTM4Nl9nZW5kaXMuYwogKysrIGIvbGliY3B1L2kzODZfZ2VuZGlzLmMKIEBAIC0zMSw3ICszMSw3IEBACkBAIC0yMDEsNyArMjAyLDcgQEAKICAjaW5jbHVkZSA8c3RkaW8uaD4KICAjaW5jbHVkZSA8c3RkbGliLmg+CiBkaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfbGV4LmMgYi9saWJjcHUvaTM4Nl9sZXguYwotaW5kZXggYmE1ZjRhYS4uYjFlNDE5MSAxMDA2NDQKK2luZGV4IGJhNWY0YWE1Li5iMWU0MTkxNiAxMDA2NDQKIC0tLSBhL2xpYmNwdS9pMzg2X2xleC5jCiArKysgYi9saWJjcHUvaTM4Nl9sZXguYwogQEAgLTU3Nyw3ICs1NzcsNyBAQCBjaGFyICppMzg2X3RleHQ7CkBAIC0yMTQsNyArMjE1LDcgQEAKICAKICAjaW5jbHVkZSA8bGliZXUuaD4KIGRpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9wYXJzZS5jIGIvbGliY3B1L2kzODZfcGFyc2UuYwotaW5kZXggZWYxYWMzNS4uNDhmMmU2NCAxMDA2NDQKK2luZGV4IDZmYTdjZTNkLi5iYjI3MDA2MSAxMDA2NDQKIC0tLSBhL2xpYmNwdS9pMzg2X3BhcnNlLmMKICsrKyBiL2xpYmNwdS9pMzg2X3BhcnNlLmMKIEBAIC0xMDcsNyArMTA3LDcgQEAKQEAgLTIyNyw3ICsyMjgsNyBAQAogICNpbmNsdWRlIDxsaWJpbnRsLmg+CiAgI2luY2x1ZGUgPG1hdGguaD4KIGRpZmYgLS1naXQgYS9saWJkdy9NYWtlZmlsZS5hbSBiL2xpYmR3L01ha2VmaWxlLmFtCi1pbmRleCBmZjhjMjkxLi44OWU3OTJhIDEwMDY0NAoraW5kZXggZmY4YzI5MWUuLjg5ZTc5MmFhIDEwMDY0NAogLS0tIGEvbGliZHcvTWFrZWZpbGUuYW0KICsrKyBiL2xpYmR3L01ha2VmaWxlLmFtCiBAQCAtMTA1LDcgKzEwNSw4IEBAIGFtX2xpYmR3X3BpY19hX09CSkVDVFMgPSAkKGxpYmR3X2FfU09VUkNFUzouYz0ub3MpCkBAIC0yNDEsNyArMjQyLDcgQEAKICBsaWJkdy5zbyQoRVhFRVhUKTogJChzcmNkaXIpL2xpYmR3Lm1hcCAkKGxpYmR3X3NvX0xJQlMpICQobGliZHdfc29fREVQUykKICAjIFRoZSBycGF0aCBpcyBuZWNlc3NhcnkgZm9yIGxpYmVibCBiZWNhdXNlIGl0cyAkT1JJR0lOIHVzZSB3aWxsCiBkaWZmIC0tZ2l0IGEvbGliZHcvbGliZHdfYWxsb2MuYyBiL2xpYmR3L2xpYmR3X2FsbG9jLmMKLWluZGV4IDI4YThjZjYuLjI5YWViM2YgMTAwNjQ0CitpbmRleCAyOGE4Y2Y2ZS4uMjlhZWIzZjcgMTAwNjQ0CiAtLS0gYS9saWJkdy9saWJkd19hbGxvYy5jCiArKysgYi9saWJkdy9saWJkd19hbGxvYy5jCiBAQCAtMzEsNyArMzEsNyBAQApAQCAtMjU0LDcgKzI1NSw3IEBACiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlICJsaWJkd1AuaCIKIGRpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYyBiL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCi1pbmRleCBlZTBjMTY0Li5iMDZhYjU5IDEwMDY0NAoraW5kZXggZWUwYzE2NDYuLmIwNmFiNTk2IDEwMDY0NAogLS0tIGEvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKICsrKyBiL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCiBAQCAtMzEsNiArMzEsNyBAQApAQCAtMjc1LDcgKzI3Niw3IEBACiAgCSAgICB7CiAgCSAgICAgICpmaWxlX25hbWUgPSBuYW1lOwogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLWluZGV4IDdiY2Y2MWMuLmMzNDU3OTcgMTAwNjQ0CitpbmRleCA3YmNmNjFjYy4uYzM0NTc5N2EgMTAwNjQ0CiAtLS0gYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYwogKysrIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKIEBAIC0xNDAsNiArMTQwLDcgQEAgX19saWJkd2ZsX3NldGVycm5vIChEd2ZsX0Vycm9yIGVycm9yKQpAQCAtMjk3LDcgKzI5OCw3IEBACiAgICAgICAgcmV0dXJuIGVsZl9lcnJtc2cgKGVycm9yICYgMHhmZmZmKTsKICAgICAgY2FzZSBPVEhFUl9FUlJPUiAoTElCRFcpOgogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYyBiL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwotaW5kZXggOTc3NWFjZS4uNTExYzRhNiAxMDA2NDQKK2luZGV4IDk3NzVhY2VkLi41MTFjNGE2YSAxMDA2NDQKIC0tLSBhL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwogKysrIGIvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jCiBAQCAtMzUsNiArMzUsNyBAQApAQCAtMzA5LDcgKzMxMCw3IEBACiAgI2luY2x1ZGUgIi4uL2xpYmVsZi9saWJlbGZQLmgiCiAgI2luY2x1ZGUgInN5c3RlbS5oIgogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYyBiL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYwotaW5kZXggNmQ1YTQyYS4uOTI2Nzc4OCAxMDA2NDQKK2luZGV4IDZkNWE0MmE2Li45MjY3Nzg4ZCAxMDA2NDQKIC0tLSBhL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYwogKysrIGIvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCiBAQCAtMzg5LDcgKzM4OSw3IEBAIGR3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm8gKER3ZmxfTW9kdWxlICptb2QsCkBAIC0zMjIsNyArMzIzLDcgQEAKICAJZmQgPSBmaW5kX2RlYnVnaW5mb19pbl9wYXRoIChtb2QsIGNhbm9uLAogIAkJCQkgICAgIGRlYnVnbGlua19maWxlLCBkZWJ1Z2xpbmtfY3JjLAogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMgYi9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jCi1pbmRleCBmODQ5MTI4Li42ZjBhY2ExIDEwMDY0NAoraW5kZXggZjg0OTEyOGQuLjZmMGFjYTFiIDEwMDY0NAogLS0tIGEvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYwogKysrIGIvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYwogQEAgLTI5LDYgKzI5LDE1IEBACkBAIC0zNDIsNyArMzQzLDcgQEAKICAjZGVmaW5lIGNyYzMyIF9fbGliZHdmbF9jcmMzMgogICNpbmNsdWRlIDxsaWJkd2ZsUC5oPgogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYyBiL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYwotaW5kZXggOWQwZmVmMi4uOWZjMDliOCAxMDA2NDQKK2luZGV4IDlkMGZlZjJjLi45ZmMwOWI4OCAxMDA2NDQKIC0tLSBhL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYwogKysrIGIvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCiBAQCAtNDAsNiArNDAsNyBAQApAQCAtMzU0LDcgKzM1NSw3IEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiBkaWZmIC0tZ2l0IGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotaW5kZXggNTM3MTM5Ni4uMmU2NmRmZCAxMDA2NDQKK2luZGV4IDUzNzEzOTYzLi4yZTY2ZGZkZCAxMDA2NDQKIC0tLSBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCiArKysgYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwogQEAgLTMyLDcgKzMyLDcgQEAKQEAgLTM2Nyw3ICszNjgsNyBAQAogICNpbmNsdWRlIDxkd2FyZi5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KIGRpZmYgLS1naXQgYS9saWJlbGYvZWxmLmggYi9saWJlbGYvZWxmLmgKLWluZGV4IDVjZjJiOTMuLjk5MGIzYWYgMTAwNjQ0CitpbmRleCA1Y2YyYjkzNC4uOTkwYjNhZmIgMTAwNjQ0CiAtLS0gYS9saWJlbGYvZWxmLmgKICsrKyBiL2xpYmVsZi9lbGYuaAogQEAgLTIxLDcgKzIxLDkgQEAKQEAgLTM5Miw3ICszOTMsNyBAQAogIAogICNlbmRpZgkvKiBlbGYuaCAqLwogZGlmZiAtLWdpdCBhL2xpYmVsZi9saWJlbGYuaCBiL2xpYmVsZi9saWJlbGYuaAotaW5kZXggNTQ3YzBmNS4uZGQ3ODc5OSAxMDA2NDQKK2luZGV4IDU0N2MwZjUwLi5kZDc4Nzk5ZSAxMDA2NDQKIC0tLSBhL2xpYmVsZi9saWJlbGYuaAogKysrIGIvbGliZWxmL2xpYmVsZi5oCiBAQCAtMjksNiArMjksNyBAQApAQCAtNDA0LDcgKzQwNSw3IEBACiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogIAogZGlmZiAtLWdpdCBhL2xpYmVsZi9saWJlbGZQLmggYi9saWJlbGYvbGliZWxmUC5oCi1pbmRleCA3ZWU2NjI1Li41ODQwODk5IDEwMDY0NAoraW5kZXggN2VlNjYyNWEuLjU4NDA4OTk3IDEwMDY0NAogLS0tIGEvbGliZWxmL2xpYmVsZlAuaAogKysrIGIvbGliZWxmL2xpYmVsZlAuaAogQEAgLTMyLDYgKzMyLDcgQEAKQEAgLTQxNiw3ICs0MTcsNyBAQAogICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDxzdGRib29sLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2FkZHIybGluZS5jIGIvc3JjL2FkZHIybGluZS5jCi1pbmRleCBiYTQxNGE3Li4wNGI3MTE2IDEwMDY0NAoraW5kZXggNDQ0ZWU1MmMuLjk1OTZmYTY3IDEwMDY0NAogLS0tIGEvc3JjL2FkZHIybGluZS5jCiArKysgYi9zcmMvYWRkcjJsaW5lLmMKIEBAIC0yMyw3ICsyMyw3IEBACkBAIC00MjksNyArNDMwLDcgQEAKICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICAjaW5jbHVkZSA8bGliZHdmbC5oPgogZGlmZiAtLWdpdCBhL3NyYy9hci5jIGIvc3JjL2FyLmMKLWluZGV4IGVjMzJjZWUuLjRlZmQ3MjkgMTAwNjQ0CitpbmRleCBlYzMyY2VlNS4uNGVmZDcyOWMgMTAwNjQ0CiAtLS0gYS9zcmMvYXIuYwogKysrIGIvc3JjL2FyLmMKIEBAIC0yMiw3ICsyMiw3IEBACkBAIC00NDIsNyArNDQzLDcgQEAKICAjaW5jbHVkZSA8Z2VsZi5oPgogICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2FybGliLmMgYi9zcmMvYXJsaWIuYwotaW5kZXggZTA4MzlhYS4uMTE0MzY1OCAxMDA2NDQKK2luZGV4IGUwODM5YWFiLi4xMTQzNjU4ZiAxMDA2NDQKIC0tLSBhL3NyYy9hcmxpYi5jCiArKysgYi9zcmMvYXJsaWIuYwogQEAgLTIxLDcgKzIxLDcgQEAKQEAgLTQ1NSw3ICs0NTYsNyBAQAogICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2FybGliMi5jIGIvc3JjL2FybGliMi5jCi1pbmRleCA1NTNmYzU3Li40NjQ0M2QwIDEwMDY0NAoraW5kZXggNTUzZmM1N2IuLjQ2NDQzZDBlIDEwMDY0NAogLS0tIGEvc3JjL2FybGliMi5jCiArKysgYi9zcmMvYXJsaWIyLmMKIEBAIC0yMCw3ICsyMCw3IEBACkBAIC00NjgsNyArNDY5LDcgQEAKICAjaW5jbHVkZSA8bGltaXRzLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogZGlmZiAtLWdpdCBhL3NyYy9lbGZjbXAuYyBiL3NyYy9lbGZjbXAuYwotaW5kZXggNTA0NjQyMC4uY2ZmMTgzZiAxMDA2NDQKK2luZGV4IDUwNDY0MjA3Li5jZmYxODNmYSAxMDA2NDQKIC0tLSBhL3NyYy9lbGZjbXAuYwogKysrIGIvc3JjL2VsZmNtcC5jCiBAQCAtMjMsNyArMjMsNyBAQApAQCAtNDgxLDcgKzQ4Miw3IEBACiAgI2luY2x1ZGUgPGxvY2FsZS5oPgogICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2VsZmxpbnQuYyBiL3NyYy9lbGZsaW50LmMKLWluZGV4IDUxZTUzYzIuLmRhMGIwZGMgMTAwNjQ0CitpbmRleCBkZjFiM2EwMy4uNjdkOGQxMzQgMTAwNjQ0CiAtLS0gYS9zcmMvZWxmbGludC5jCiArKysgYi9zcmMvZWxmbGludC5jCiBAQCAtMjQsNyArMjQsNyBAQApAQCAtNDk0LDcgKzQ5NSw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KIGRpZmYgLS1naXQgYS9zcmMvZmluZHRleHRyZWwuYyBiL3NyYy9maW5kdGV4dHJlbC5jCi1pbmRleCA4ZjFlMjM5Li43MTQ2M2FmIDEwMDY0NAoraW5kZXggOGYxZTIzOWEuLjcxNDYzYWYzIDEwMDY0NAogLS0tIGEvc3JjL2ZpbmR0ZXh0cmVsLmMKICsrKyBiL3NyYy9maW5kdGV4dHJlbC5jCiBAQCAtMjMsNyArMjMsNyBAQApAQCAtNTA3LDcgKzUwOCw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8bGliZHcuaD4KIGRpZmYgLS1naXQgYS9zcmMvbm0uYyBiL3NyYy9ubS5jCi1pbmRleCA5NjljNmQzLi4zMTEzYzA0IDEwMDY0NAoraW5kZXggOTY5YzZkMzUuLjMxMTNjMDRjIDEwMDY0NAogLS0tIGEvc3JjL25tLmMKICsrKyBiL3NyYy9ubS5jCiBAQCAtMjYsNyArMjYsNyBAQApAQCAtNTIwLDcgKzUyMSw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KIGRpZmYgLS1naXQgYS9zcmMvb2JqZHVtcC5jIGIvc3JjL29iamR1bXAuYwotaW5kZXggODYwY2ZhYy4uNjFlNjdiZiAxMDA2NDQKK2luZGV4IDBkZDlhNmFhLi45YzhiZjE0OSAxMDA2NDQKIC0tLSBhL3NyYy9vYmpkdW1wLmMKICsrKyBiL3NyYy9vYmpkdW1wLmMKIEBAIC0yMSw3ICsyMSw3IEBACkBAIC01MzMsNyArNTM0LDcgQEAKICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICAjaW5jbHVkZSA8bGliaW50bC5oPgogZGlmZiAtLWdpdCBhL3NyYy9yYW5saWIuYyBiL3NyYy9yYW5saWIuYwotaW5kZXggY2MwZWUyMy4uYWU4NTFlNCAxMDA2NDQKK2luZGV4IGNjMGVlMjMzLi5hZTg1MWU0MCAxMDA2NDQKIC0tLSBhL3NyYy9yYW5saWIuYwogKysrIGIvc3JjL3JhbmxpYi5jCiBAQCAtMjQsNyArMjQsNyBAQApAQCAtNTQ2LDcgKzU0Nyw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8bGliaW50bC5oPgogZGlmZiAtLWdpdCBhL3NyYy9yZWFkZWxmLmMgYi9zcmMvcmVhZGVsZi5jCi1pbmRleCAzNDZlY2NkLi5jODMxYWE4IDEwMDY0NAoraW5kZXggNmEyN2U3ZTAuLjQ3NTlhOTY1IDEwMDY0NAogLS0tIGEvc3JjL3JlYWRlbGYuYwogKysrIGIvc3JjL3JlYWRlbGYuYwogQEAgLTI1LDcgKzI1LDcgQEAKQEAgLTU1OSw3ICs1NjAsNyBAQAogICNpbmNsdWRlIDxnZWxmLmg+CiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3NpemUuYyBiL3NyYy9zaXplLmMKLWluZGV4IGFkOGRiY2IuLmZkODNiZTAgMTAwNjQ0CitpbmRleCBhZDhkYmNiYi4uZmQ4M2JlMDYgMTAwNjQ0CiAtLS0gYS9zcmMvc2l6ZS5jCiArKysgYi9zcmMvc2l6ZS5jCiBAQCAtMjEsNyArMjEsNyBAQApAQCAtNTcyLDcgKzU3Myw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KIGRpZmYgLS1naXQgYS9zcmMvc3RhY2suYyBiL3NyYy9zdGFjay5jCi1pbmRleCA2ZjJmZjY5Li42ZGEwMjQzIDEwMDY0NAoraW5kZXggNmYyZmY2OWYuLjZkYTAyNDNkIDEwMDY0NAogLS0tIGEvc3JjL3N0YWNrLmMKICsrKyBiL3NyYy9zdGFjay5jCiBAQCAtMTgsNyArMTgsNyBAQApAQCAtNTg1LDcgKzU4Niw3IEBACiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3N0cmluZ3MuYyBiL3NyYy9zdHJpbmdzLmMKLWluZGV4IGQyMTQzNTYuLjc2Y2IyNmIgMTAwNjQ0CitpbmRleCAwM2QwZjEzMy4uNWMzMTFjYmQgMTAwNjQ0CiAtLS0gYS9zcmMvc3RyaW5ncy5jCiArKysgYi9zcmMvc3RyaW5ncy5jCiBAQCAtMjUsNyArMjUsNyBAQApAQCAtNTk4LDcgKzU5OSw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KIGRpZmYgLS1naXQgYS9zcmMvc3RyaXAuYyBiL3NyYy9zdHJpcC5jCi1pbmRleCBjNzgzMGVjLi4wZDdmMTQ4IDEwMDY0NAoraW5kZXggYzc4MzBlYzYuLjBkN2YxNDhkIDEwMDY0NAogLS0tIGEvc3JjL3N0cmlwLmMKICsrKyBiL3NyYy9zdHJpcC5jCiBAQCAtMjQsNyArMjQsNyBAQApAQCAtNjExLDcgKzYxMiw3IEBACiAgI2luY2x1ZGUgPGZubWF0Y2guaD4KICAjaW5jbHVkZSA8Z2VsZi5oPgogZGlmZiAtLWdpdCBhL3NyYy91bnN0cmlwLmMgYi9zcmMvdW5zdHJpcC5jCi1pbmRleCA1MDc0OTA5Li4zZDRmOTUyIDEwMDY0NAoraW5kZXggNTA3NDkwOTMuLjNkNGY5NTI1IDEwMDY0NAogLS0tIGEvc3JjL3Vuc3RyaXAuYwogKysrIGIvc3JjL3Vuc3RyaXAuYwogQEAgLTMxLDcgKzMxLDcgQEAKQEAgLTYyNCw3ICs2MjUsNyBAQAogICNpbmNsdWRlIDxmbm1hdGNoLmg+CiAgI2luY2x1ZGUgPGxpYmludGwuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9hZGRyc2NvcGVzLmMgYi90ZXN0cy9hZGRyc2NvcGVzLmMKLWluZGV4IDc5MTU2OWYuLjU0ZjQzMTEgMTAwNjQ0CitpbmRleCA3OTE1NjlmNS4uNTRmNDMxMWIgMTAwNjQ0CiAtLS0gYS90ZXN0cy9hZGRyc2NvcGVzLmMKICsrKyBiL3Rlc3RzL2FkZHJzY29wZXMuYwogQEAgLTI1LDcgKzI1LDcgQEAKQEAgLTYzNyw3ICs2MzgsNyBAQAogIAogIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2FsbHJlZ3MuYyBiL3Rlc3RzL2FsbHJlZ3MuYwotaW5kZXggMjg2ZjdlMy4uYzlkZTA4OSAxMDA2NDQKK2luZGV4IDI4NmY3ZTNjLi5jOWRlMDg5NyAxMDA2NDQKIC0tLSBhL3Rlc3RzL2FsbHJlZ3MuYwogKysrIGIvdGVzdHMvYWxscmVncy5jCiBAQCAtMjEsNyArMjEsNyBAQApAQCAtNjUwLDcgKzY1MSw3IEBACiAgI2luY2x1ZGUgPGFyZ3AuaD4KICAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLWRhdGEuYyBiL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMKLWluZGV4IGEzODdkOGYuLjk1NWMyN2QgMTAwNjQ0CitpbmRleCBhMzg3ZDhmZi4uOTU1YzI3ZDEgMTAwNjQ0CiAtLS0gYS90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCiArKysgYi90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCiBAQCAtMjcsNyArMjcsNyBAQApAQCAtNjYzLDcgKzY2NCw3IEBACiAgI2luY2x1ZGUgPGR3YXJmLmg+CiAgI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCiBkaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMgYi90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYwotaW5kZXggMmRjOGE5YS4uMjRjYTdmYiAxMDA2NDQKK2luZGV4IDJkYzhhOWEyLi4yNGNhN2ZiMCAxMDA2NDQKIC0tLSBhL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCiArKysgYi90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYwogQEAgLTIyLDcgKzIyLDcgQEAKQEAgLTY3Niw3ICs2NzcsNyBAQAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UuYyBiL3Rlc3RzL2JhY2t0cmFjZS5jCi1pbmRleCAyMWFiZThhLi5kNzMzMjQ4IDEwMDY0NAoraW5kZXggZjVkZDc2MWYuLmE5M2E4ZjAzIDEwMDY0NAogLS0tIGEvdGVzdHMvYmFja3RyYWNlLmMKICsrKyBiL3Rlc3RzL2JhY2t0cmFjZS5jCiBAQCAtMjQsNyArMjQsNyBAQApAQCAtNjg5LDcgKzY5MCw3IEBACiAgI2luY2x1ZGUgPGR3YXJmLmg+CiAgI2lmZGVmIF9fbGludXhfXwogZGlmZiAtLWdpdCBhL3Rlc3RzL2J1aWxkaWQuYyBiL3Rlc3RzL2J1aWxkaWQuYwotaW5kZXggODdjMTg3Ny4uMjk1M2U2YiAxMDA2NDQKK2luZGV4IDg3YzE4NzczLi4yOTUzZTZiYiAxMDA2NDQKIC0tLSBhL3Rlc3RzL2J1aWxkaWQuYwogKysrIGIvdGVzdHMvYnVpbGRpZC5jCiBAQCAtMjMsNyArMjMsNyBAQApAQCAtNzAyLDcgKzcwMyw3IEBACiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9kZWJ1Z2FsdGxpbmsuYyBiL3Rlc3RzL2RlYnVnYWx0bGluay5jCi1pbmRleCA2ZDk3ZDUwLi5lZTdlNTU5IDEwMDY0NAoraW5kZXggNmQ5N2Q1MDAuLmVlN2U1NTllIDEwMDY0NAogLS0tIGEvdGVzdHMvZGVidWdhbHRsaW5rLmMKICsrKyBiL3Rlc3RzL2RlYnVnYWx0bGluay5jCiBAQCAtMjMsNyArMjMsNyBAQApAQCAtNzE1LDcgKzcxNiw3IEBACiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9kZWJ1Z2xpbmsuYyBiL3Rlc3RzL2RlYnVnbGluay5jCi1pbmRleCA5MzVkMTAyLi43NDFjYjgxIDEwMDY0NAoraW5kZXggOTM1ZDEwMjkuLjc0MWNiODE0IDEwMDY0NAogLS0tIGEvdGVzdHMvZGVidWdsaW5rLmMKICsrKyBiL3Rlc3RzL2RlYnVnbGluay5jCiBAQCAtMjEsNyArMjEsNyBAQApAQCAtNzI4LDcgKzcyOSw3IEBACiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9kZWxldGVkLmMgYi90ZXN0cy9kZWxldGVkLmMKLWluZGV4IDZiZTM1YmMuLjAxOTA3MTEgMTAwNjQ0CitpbmRleCA2YmUzNWJjMi4uMDE5MDcxMTMgMTAwNjQ0CiAtLS0gYS90ZXN0cy9kZWxldGVkLmMKICsrKyBiL3Rlc3RzL2RlbGV0ZWQuYwogQEAgLTIxLDcgKzIxLDcgQEAKQEAgLTc0MSw3ICs3NDIsNyBAQAogICNpZmRlZiBfX2xpbnV4X18KICAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYyBiL3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMKLWluZGV4IDIxZTQ3MGEuLjFlYTFlM2IgMTAwNjQ0CitpbmRleCAyMWU0NzBhMy4uMWVhMWUzYjIgMTAwNjQ0CiAtLS0gYS90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCiArKysgYi90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCiBAQCAtMjMsNyArMjMsNyBAQApAQCAtNzU0LDcgKzc1NSw3IEBACiAgI2luY2x1ZGUgPGFyZ3AuaD4KICAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKIGRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMgYi90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKLWluZGV4IGFhODAzMGUuLjAyYzhiZWYgMTAwNjQ0CitpbmRleCBhYTgwMzBlMS4uMDJjOGJlZjkgMTAwNjQ0CiAtLS0gYS90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKICsrKyBiL3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYwogQEAgLTIwLDcgKzIwLDcgQEAKQEAgLTc2Nyw3ICs3NjgsNyBAQAogICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQogIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYyBiL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYwotaW5kZXggNjg5Y2RkNy4uNTk3M2RhMyAxMDA2NDQKK2luZGV4IDY4OWNkZDc5Li41OTczZGEzOSAxMDA2NDQKIC0tLSBhL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYwogKysrIGIvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCiBAQCAtMjQsNyArMjQsNyBAQApAQCAtNzgwLDcgKzc4MSw3IEBACiAgI2luY2x1ZGUgPGR3YXJmLmg+CiAgCiBkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jIGIvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCi1pbmRleCAxZWU5ODlmLi5mZDYyZTY1IDEwMDY0NAoraW5kZXggMWVlOTg5ZjguLmZkNjJlNjUzIDEwMDY0NAogLS0tIGEvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCiArKysgYi90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMKIEBAIC0xOCw3ICsxOCw3IEBACkBAIC03OTMsNyArNzk0LDcgQEAKICBzdGF0aWMgY29uc3QgRHdmbF9DYWxsYmFja3MgY2FsbGJhY2tzID0KICAgIHsKIGRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYyBiL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCi1pbmRleCBhNGU5N2QzLi5mNDcxNTg3IDEwMDY0NAoraW5kZXggYTRlOTdkM2MuLmY0NzE1ODdjIDEwMDY0NAogLS0tIGEvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKICsrKyBiL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCiBAQCAtMjAsNyArMjAsNyBAQApAQCAtODA2LDcgKzgwNyw3IEBACiAgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsbGluZXMuYyBiL3Rlc3RzL2R3ZmxsaW5lcy5jCi1pbmRleCA5MDM3OWRkLi5jYmRmNmM0IDEwMDY0NAoraW5kZXggOTAzNzlkZDIuLmNiZGY2YzRjIDEwMDY0NAogLS0tIGEvdGVzdHMvZHdmbGxpbmVzLmMKICsrKyBiL3Rlc3RzL2R3ZmxsaW5lcy5jCiBAQCAtMjcsNyArMjcsNyBAQApAQCAtODE5LDcgKzgyMCw3IEBACiAgaW50CiAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIGRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsbW9kdGVzdC5jIGIvdGVzdHMvZHdmbG1vZHRlc3QuYwotaW5kZXggMDAyN2Y5Ni4uZTY4ZDNiYyAxMDA2NDQKK2luZGV4IDAwMjdmOTZiLi5lNjhkM2JjYSAxMDA2NDQKIC0tLSBhL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKICsrKyBiL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKIEBAIC0yMyw3ICsyMyw3IEBACkBAIC04MzIsNyArODMzLDcgQEAKICAjaW5jbHVkZSA8YXJncC5oPgogICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQogZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmxzeW1zLmMgYi90ZXN0cy9kd2Zsc3ltcy5jCi1pbmRleCA0OWFjMzM0Li5jZjA3ODMwIDEwMDY0NAoraW5kZXggNDlhYzMzNDYuLmNmMDc4MzAxIDEwMDY0NAogLS0tIGEvdGVzdHMvZHdmbHN5bXMuYwogKysrIGIvdGVzdHMvZHdmbHN5bXMuYwogQEAgLTI1LDcgKzI1LDcgQEAKQEAgLTg0NSw3ICs4NDYsNyBAQAogIAogIHN0YXRpYyBjb25zdCBjaGFyICoKIGRpZmYgLS1naXQgYS90ZXN0cy9lYXJseS1vZmZzY24uYyBiL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCi1pbmRleCA5MjRjYjllLi42ZjYwZDVhIDEwMDY0NAoraW5kZXggOTI0Y2I5ZWYuLjZmNjBkNWEzIDEwMDY0NAogLS0tIGEvdGVzdHMvZWFybHktb2Zmc2NuLmMKICsrKyBiL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCiBAQCAtMTksNyArMTksNyBAQApAQCAtODU4LDcgKzg1OSw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8c3RkaW8uaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9lY3AuYyBiL3Rlc3RzL2VjcC5jCi1pbmRleCAzOGE2ODU5Li43NDNjZWE1IDEwMDY0NAoraW5kZXggMzhhNjg1OWUuLjc0M2NlYTVkIDEwMDY0NAogLS0tIGEvdGVzdHMvZWNwLmMKICsrKyBiL3Rlc3RzL2VjcC5jCiBAQCAtMjAsNyArMjAsNyBAQApAQCAtODcxLDcgKzg3Miw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8c3RkbGliLmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYyBiL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKLWluZGV4IGJhOGFlMzcuLjc2ZjVmMDQgMTAwNjQ0CitpbmRleCBiYThhZTM3MS4uNzZmNWYwNDcgMTAwNjQ0CiAtLS0gYS90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCiArKysgYi90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCiBAQCAtMjUsNyArMjUsNyBAQApAQCAtODg0LDcgKzg4NSw3IEBACiAgI2luY2x1ZGUgPGZubWF0Y2guaD4KICAKIGRpZmYgLS1naXQgYS90ZXN0cy9mdW5jcmV0dmFsLmMgYi90ZXN0cy9mdW5jcmV0dmFsLmMKLWluZGV4IDhkMTlkMTEuLmM4YWFhOTMgMTAwNjQ0CitpbmRleCA4ZDE5ZDExNy4uYzhhYWE5M2QgMTAwNjQ0CiAtLS0gYS90ZXN0cy9mdW5jcmV0dmFsLmMKICsrKyBiL3Rlc3RzL2Z1bmNyZXR2YWwuYwogQEAgLTI1LDcgKzI1LDcgQEAKQEAgLTg5Nyw3ICs4OTgsNyBAQAogICNpbmNsdWRlIDxmbm1hdGNoLmg+CiAgCiBkaWZmIC0tZ2l0IGEvdGVzdHMvZnVuY3Njb3Blcy5jIGIvdGVzdHMvZnVuY3Njb3Blcy5jCi1pbmRleCA5YzkwMTg1Li5kYmNjYjg5IDEwMDY0NAoraW5kZXggOWM5MDE4NTguLmRiY2NiODllIDEwMDY0NAogLS0tIGEvdGVzdHMvZnVuY3Njb3Blcy5jCiArKysgYi90ZXN0cy9mdW5jc2NvcGVzLmMKIEBAIC0yNSw3ICsyNSw3IEBACkBAIC05MTAsNyArOTExLDcgQEAKICAjaW5jbHVkZSA8Zm5tYXRjaC5oPgogIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2dldHNyY19kaWUuYyBiL3Rlc3RzL2dldHNyY19kaWUuYwotaW5kZXggMDU1YWVkZS4uOWMzOTRkZCAxMDA2NDQKK2luZGV4IDA1NWFlZGUwLi45YzM5NGRkMCAxMDA2NDQKIC0tLSBhL3Rlc3RzL2dldHNyY19kaWUuYwogKysrIGIvdGVzdHMvZ2V0c3JjX2RpZS5jCiBAQCAtMTksNyArMTksNyBAQApAQCAtOTIzLDcgKzkyNCw3IEBACiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CiAgI2luY2x1ZGUgPGxpYmVsZi5oPgogZGlmZiAtLWdpdCBhL3Rlc3RzL2xpbmUyYWRkci5jIGIvdGVzdHMvbGluZTJhZGRyLmMKLWluZGV4IGUwZDY1ZDMuLjliZjAwMjMgMTAwNjQ0CitpbmRleCBlMGQ2NWQzZC4uOWJmMDAyM2IgMTAwNjQ0CiAtLS0gYS90ZXN0cy9saW5lMmFkZHIuYwogKysrIGIvdGVzdHMvbGluZTJhZGRyLmMKIEBAIC0yNiw3ICsyNiw3IEBACkBAIC05MzYsNyArOTM3LDcgQEAKICAKICBzdGF0aWMgdm9pZAogZGlmZiAtLWdpdCBhL3Rlc3RzL2xvd19oaWdoX3BjLmMgYi90ZXN0cy9sb3dfaGlnaF9wYy5jCi1pbmRleCBkMGY0MzAyLi44ZGE0ZmJkIDEwMDY0NAoraW5kZXggZDBmNDMwMjMuLjhkYTRmYmRmIDEwMDY0NAogLS0tIGEvdGVzdHMvbG93X2hpZ2hfcGMuYwogKysrIGIvdGVzdHMvbG93X2hpZ2hfcGMuYwogQEAgLTI1LDcgKzI1LDcgQEAKQEAgLTk0OSw3ICs5NTAsNyBAQAogICNpbmNsdWRlIDxmbm1hdGNoLmg+CiAgCiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jIGIvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCi1pbmRleCBkNTAzNTVlLi4zYzQxZjQwIDEwMDY0NAoraW5kZXggZDUwMzU1ZTkuLjNjNDFmNDBiIDEwMDY0NAogLS0tIGEvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCiArKysgYi90ZXN0cy9tZDUtc2hhMS10ZXN0LmMKIEBAIC0xOSw3ICsxOSw3IEBACkBAIC05NjIsNyArOTYzLDcgQEAKICAjaW5jbHVkZSAibWQ1LmgiCiAgI2luY2x1ZGUgInNoYTEuaCIKIGRpZmYgLS1naXQgYS90ZXN0cy9yZHdybW1hcC5jIGIvdGVzdHMvcmR3cm1tYXAuYwotaW5kZXggNmYwMjdkZi4uMWNlNWU2ZSAxMDA2NDQKK2luZGV4IDZmMDI3ZGZlLi4xY2U1ZTZlZCAxMDA2NDQKIC0tLSBhL3Rlc3RzL3Jkd3JtbWFwLmMKICsrKyBiL3Rlc3RzL3Jkd3JtbWFwLmMKIEBAIC0xOSw3ICsxOSw3IEBACkBAIC05NzUsNyArOTc2LDcgQEAKICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSA8dW5pc3RkLmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvc2FyaWR4LmMgYi90ZXN0cy9zYXJpZHguYwotaW5kZXggOGE0NTBkOC4uYjM4NzgwMSAxMDA2NDQKK2luZGV4IDhhNDUwZDgyLi5iMzg3ODAxMyAxMDA2NDQKIC0tLSBhL3Rlc3RzL3NhcmlkeC5jCiArKysgYi90ZXN0cy9zYXJpZHguYwogQEAgLTE3LDcgKzE3LDcgQEAKQEAgLTk4OCw3ICs5ODksNyBAQAogICNpbmNsdWRlIDxnZWxmLmg+CiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvc2VjdGlvbmR1bXAuYyBiL3Rlc3RzL3NlY3Rpb25kdW1wLmMKLWluZGV4IDMwMzNmZWQuLjhlODg4ZGIgMTAwNjQ0CitpbmRleCAzMDMzZmVkYy4uOGU4ODhkYjMgMTAwNjQ0CiAtLS0gYS90ZXN0cy9zZWN0aW9uZHVtcC5jCiArKysgYi90ZXN0cy9zZWN0aW9uZHVtcC5jCiBAQCAtMTgsNyArMTgsNyBAQApAQCAtMTAwMSw3ICsxMDAyLDcgQEAKICAjaW5jbHVkZSA8Z2VsZi5oPgogICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogZGlmZiAtLWdpdCBhL3Rlc3RzL3ZhcmxvY3MuYyBiL3Rlc3RzL3ZhcmxvY3MuYwotaW5kZXggYzNmYmE4OS4uZTA0M2VhMiAxMDA2NDQKK2luZGV4IGMzZmJhODllLi5lMDQzZWEyYyAxMDA2NDQKIC0tLSBhL3Rlc3RzL3ZhcmxvY3MuYwogKysrIGIvdGVzdHMvdmFybG9jcy5jCiBAQCAtMjUsNyArMjUsNyBAQApAQCAtMTAxNCw3ICsxMDE1LDcgQEAKICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvdmRzb3N5bXMuYyBiL3Rlc3RzL3Zkc29zeW1zLmMKLWluZGV4IGI4NzZjMTAuLmFmYjI4MjMgMTAwNjQ0CitpbmRleCBiODc2YzEwYi4uYWZiMjgyMzIgMTAwNjQ0CiAtLS0gYS90ZXN0cy92ZHNvc3ltcy5jCiArKysgYi90ZXN0cy92ZHNvc3ltcy5jCiBAQCAtMTgsNyArMTgsNyBAQApAQCAtMTAyNiw2ICsxMDI3LDMgQEAKICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICAjaW5jbHVkZSA8c3RkaW8uaD4KICAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vZmFsbHRocm91Z2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9mYWxsdGhyb3VnaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI2MjNmOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9mYWxsdGhyb3VnaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUdDQzcgYWRkcyAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoIHRvIHdhcm4gd2hlbiBhIHN3aXRjaCBjYXNlIGZhbGxzIHRocm91Z2gsCi1ob3dldmVyIHRoaXMgY2F1c2VzIHdhcm5pbmdzICh3aGljaCBhcmUgcHJvbW90ZWQgdG8gZXJyb3JzKSB3aXRoIHRoZSBlbGZ1dGlscwotcGF0Y2hlcyBmcm9tIERlYmlhbiBmb3IgbWlwcyBhbmQgcGFyaXNjLCB3aGljaCB1c2UgZmFsbHRocm91Z2gncyBieSBkZXNpZ24uCi0KLUV4cGxpY2l0bHkgbWFyayB0aGUgaW50ZW50aW9uYWwgZmFsbHRocm91Z2ggc3dpdGNoIGNhc2VzIHdpdGggYSBjb21tZW50IHRvCi1kaXNhYmxlIHRoZSB3YXJuaW5ncyB3aGVyZSB0aGUgZmFsbHRocm91Z2ggYmVoYXZpb3VyIGlzIGRlc2lyZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZGViaWFuXQotU2lnbmVkLW9mZi1ieTogSm9zaHVhIExvY2sgPGpvc2h1YS5nLmxvY2tAaW50ZWwuY29tPgotCi1JbmRleDogZWxmdXRpbHMtMC4xNjgvYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjgub3JpZy9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKLSsrKyBlbGZ1dGlscy0wLjE2OC9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKLUBAIC0xNjYsNyArMTY2LDcgQEAgcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKER3YXJmX0RpZQotIAkgIHJldHVybiBubG9jX2ludHJlZ3BhaXI7Ci0gCi0gCS8qIEVsc2UgZmFsbCB0aHJvdWdoLiAgKi8KLS0gICAgICB9Ci0rICAgICAgfSAvLyBmYWxsdGhyb3VnaAotIAotICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKLUluZGV4OiBlbGZ1dGlscy0wLjE2OC9iYWNrZW5kcy9taXBzX3JldHZhbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjgub3JpZy9iYWNrZW5kcy9taXBzX3JldHZhbC5jCi0rKysgZWxmdXRpbHMtMC4xNjgvYmFja2VuZHMvbWlwc19yZXR2YWwuYwotQEAgLTM4Nyw3ICszODcsNyBAQCBtaXBzX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmCi0gICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgIHJldHVybiBubG9jX2ludHJlZ3BhaXI7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgfQotKyAgICAgICAgfSAvLyBmYWxsdGhyb3VnaAotIAotICAgICAgIC8qIEZhbGx0aHJvdWdoIHRvIGhhbmRsZSBsYXJnZSB0eXBlcyAqLwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgppbmRleCA0NGZkYTdmLi41NmY4NTJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgpAQCAtMSwxMCArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBkZWJpYW5dCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAKLUluZGV4OiBiL2JhY2tlbmRzL3BhcmlzY19pbml0LmMKK0luZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfaW5pdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9wYXJpc2NfaW5pdC5jCisrKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX2luaXQuYwogQEAgLTAsMCArMSw3MyBAQAogKy8qIEluaXRpYWxpemF0aW9uIG9mIFBBLVJJU0Mgc3BlY2lmaWMgYmFja2VuZCBsaWJyYXJ5LgogKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNSwgMjAwNiBSZWQgSGF0LCBJbmMuCkBAIC03OSwxMCArNzksMTAgQEAKICsKICsgIHJldHVybiBNT0RWRVJTSU9OOwogK30KLUluZGV4OiBiL2JhY2tlbmRzL3BhcmlzY19yZWdzLmMKK0luZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfcmVncy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9wYXJpc2NfcmVncy5jCisrKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3JlZ3MuYwogQEAgLTAsMCArMSwxNTkgQEAKICsvKiBSZWdpc3RlciBuYW1lcyBhbmQgbnVtYmVycyBmb3IgUEEtUklTQyBEV0FSRi4KICsgICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgUmVkIEhhdCwgSW5jLgpAQCAtMjQzLDEwICsyNDMsMTAgQEAKICsgIG5hbWVbbmFtZWxlbisrXSA9ICdcMCc7CiArICByZXR1cm4gbmFtZWxlbjsKICt9Ci1JbmRleDogYi9iYWNrZW5kcy9wYXJpc2NfcmVsb2MuZGVmCitJbmRleDogZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAotKysrIGIvYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZgorKysrIGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19yZWxvYy5kZWYKIEBAIC0wLDAgKzEsMTI4IEBACiArLyogTGlzdCB0aGUgcmVsb2NhdGlvbiB0eXBlcyBmb3IgUEEtUklTQy4gIC0qLSBDIC0qLQogKyAgIENvcHlyaWdodCAoQykgMjAwNSBSZWQgSGF0LCBJbmMuCkBAIC0zNzYsMTAgKzM3NiwxMCBAQAogK1JFTE9DX1RZUEUgKFRMU19EVFBNT0Q2NCwJRFlOKQogKwogKyNkZWZpbmUgTk9fUkVMQVRJVkVfUkVMT0MgICAgICAgMQotSW5kZXg6IGIvYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jCitJbmRleDogZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKKysrKyBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKIEBAIC0wLDAgKzEsMjEzIEBACiArLyogRnVuY3Rpb24gcmV0dXJuIHZhbHVlIGxvY2F0aW9uIGZvciBMaW51eC9QQS1SSVNDIEFCSS4KICsgICBDb3B5cmlnaHQgKEMpIDIwMDUgUmVkIEhhdCwgSW5jLgpAQCAtNTk0LDEwICs1OTQsMTAgQEAKICsgIHJldHVybiBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoZnVuY3R5cGVkaWUsIGxvY3AsIDEpOwogK30KICsKLUluZGV4OiBiL2JhY2tlbmRzL3BhcmlzY19zeW1ib2wuYworSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19zeW1ib2wuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAotKysrIGIvYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jCisrKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jCiBAQCAtMCwwICsxLDExMiBAQAogKy8qIFBBLVJJU0Mgc3BlY2lmaWMgc3ltYm9saWMgbmFtZSBoYW5kbGluZy4KICsgICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDUgUmVkIEhhdCwgSW5jLgpAQCAtNzExLDEwICs3MTEsMTAgQEAKICsgICAgICByZXR1cm4gRUxGX1RfTlVNOwogKyAgICB9CiArfQotSW5kZXg6IGIvYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oCitJbmRleDogZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9saWJlYmxfcGFyaXNjLmgKKysrKyBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9saWJlYmxfcGFyaXNjLmgKIEBAIC0wLDAgKzEsOSBAQAogKyNpZm5kZWYgX0xJQkVCTF9IUFBBX0gKICsjZGVmaW5lIF9MSUJFQkxfSFBQQV9IIDEKQEAgLTcyNSwxMCArNzI1LDEwIEBACiArZXh0ZXJuIGludCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXzY0KER3YXJmX0RpZSAqLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApOwogKwogKyNlbmRpZgotSW5kZXg6IGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KK0luZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9NYWtlZmlsZS5hbQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvYmFja2VuZHMvTWFrZWZpbGUuYW0KLSsrKyBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCistLS0gZWxmdXRpbHMtMC4xNzAub3JpZy9iYWNrZW5kcy9NYWtlZmlsZS5hbQorKysrIGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL01ha2VmaWxlLmFtCiBAQCAtMzMsMTIgKzMzLDEyIEBAIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJlYmwgLUkKICAKICAKQEAgLTc0NCw3ICs3NDQsNyBAQAogIG5vaW5zdF9MSUJSQVJJRVMgPSAkKGxpYmVibF9waWMpCiAgbm9pbnN0X0RBVEEgPSAkKGxpYmVibF9waWM6X3BpYy5hPS5zbykKICAKLUBAIC0xMjgsNiArMTI4LDkgQEAgZW5kaWYKK0BAIC0xMjQsNiArMTI0LDkgQEAgY3B1X2JwZiA9IC4uL2xpYmNwdS9saWJjcHVfYnBmLmEKICBsaWJlYmxfYnBmX3BpY19hX1NPVVJDRVMgPSAkKGJwZl9TUkNTKQogIGFtX2xpYmVibF9icGZfcGljX2FfT0JKRUNUUyA9ICQoYnBmX1NSQ1M6LmM9Lm9zKQogIApAQCAtNzUyLDEzICs3NTIsMTMgQEAKICtsaWJlYmxfcGFyaXNjX3BpY19hX1NPVVJDRVMgPSAkKHBhcmlzY19TUkNTKQogK2FtX2xpYmVibF9wYXJpc2NfcGljX2FfT0JKRUNUUyA9ICQocGFyaXNjX1NSQ1M6LmM9Lm9zKQogIAotIGxpYmVibF8lLnNvIGxpYmVibF8lLm1hcDogbGliZWJsXyVfcGljLmEgJChsaWJlbGYpICQobGliZHcpCisgbGliZWJsXyUuc28gbGliZWJsXyUubWFwOiBsaWJlYmxfJV9waWMuYSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkKICAJQHJtIC1mICQoQDouc289Lm1hcCkKLUluZGV4OiBiL2xpYmVsZi9lbGYuaAorSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2xpYmVsZi9lbGYuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvbGliZWxmL2VsZi5oCi0rKysgYi9saWJlbGYvZWxmLmgKLUBAIC0yMDU1LDE2ICsyMDU1LDI0IEBAIGVudW0KKy0tLSBlbGZ1dGlscy0wLjE3MC5vcmlnL2xpYmVsZi9lbGYuaAorKysrIGVsZnV0aWxzLTAuMTcwL2xpYmVsZi9lbGYuaAorQEAgLTIwNTYsMTYgKzIwNTYsMjQgQEAgZW51bQogICNkZWZpbmUgUl9QQVJJU0NfUENSRUwxN0YJMTIJLyogMTcgYml0cyBvZiByZWwuIGFkZHJlc3MuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfUENSRUwxNFIJMTQJLyogUmlnaHQgMTQgYml0cyBvZiByZWwuIGFkZHJlc3MuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfRFBSRUwyMUwJMTgJLyogTGVmdCAyMSBiaXRzIG9mIHJlbC4gYWRkcmVzcy4gICovCkBAIC03ODMsNyArNzgzLDcgQEAKICAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGX0ZQVFIzMgk1NwkvKiAzMiBiaXRzIExULXJlbC4gZnVuY3Rpb24gcG9pbnRlci4gKi8KICAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGX0ZQVFIyMUwJNTgJLyogTFQtcmVsLiBmY3QgcHRyLCBsZWZ0IDIxIGJpdHMuICovCiAgI2RlZmluZSBSX1BBUklTQ19MVE9GRl9GUFRSMTRSCTYyCS8qIExULXJlbC4gZmN0IHB0ciwgcmlnaHQgMTQgYml0cy4gKi8KLUBAIC0yMDczLDYgKzIwODEsNyBAQCBlbnVtCitAQCAtMjA3NCw2ICsyMDgyLDcgQEAgZW51bQogICNkZWZpbmUgUl9QQVJJU0NfUExBQkVMMjFMCTY2CS8qIExlZnQgMjEgYml0cyBvZiBmZGVzYyBhZGRyZXNzLiAgKi8KICAjZGVmaW5lIFJfUEFSSVNDX1BMQUJFTDE0Ugk3MAkvKiBSaWdodCAxNCBiaXRzIG9mIGZkZXNjIGFkZHJlc3MuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfUENSRUw2NAk3MgkvKiA2NCBiaXRzIFBDLXJlbC4gYWRkcmVzcy4gICovCkBAIC03OTEsNyArNzkxLDcgQEAKICAjZGVmaW5lIFJfUEFSSVNDX1BDUkVMMjJGCTc0CS8qIDIyIGJpdHMgUEMtcmVsLiBhZGRyZXNzLiAgKi8KICAjZGVmaW5lIFJfUEFSSVNDX1BDUkVMMTRXUgk3NQkvKiBQQy1yZWwuIGFkZHJlc3MsIHJpZ2h0IDE0IGJpdHMuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfUENSRUwxNERSCTc2CS8qIFBDIHJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCi1AQCAtMjA5OCw2ICsyMTA3LDggQEAgZW51bQorQEAgLTIwOTksNiArMjEwOCw4IEBAIGVudW0KICAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGMTZXRgkxMDIJLyogMTYgYml0cyBMVC1yZWwuIGFkZHJlc3MuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfTFRPRkYxNkRGCTEwMwkvKiAxNiBiaXRzIExULXJlbC4gYWRkcmVzcy4gICovCiAgI2RlZmluZSBSX1BBUklTQ19TRUNSRUw2NAkxMDQJLyogNjQgYml0cyBzZWN0aW9uIHJlbC4gYWRkcmVzcy4gICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2V4cGVjdC9leHBlY3QvMDAwMS1leHBlY3QtRml4LXNlZ2ZhdWx0cy1pZi1UY2wtaXMtYnVpbHQtd2l0aC1zdHVicy1hbmQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0LzAwMDEtZXhwZWN0LUZpeC1zZWdmYXVsdHMtaWYtVGNsLWlzLWJ1aWx0LXdpdGgtc3R1YnMtYW5kLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWQzMjJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0LzAwMDEtZXhwZWN0LUZpeC1zZWdmYXVsdHMtaWYtVGNsLWlzLWJ1aWx0LXdpdGgtc3R1YnMtYW5kLS5wYXRjaApAQCAtMCwwICsxLDkxIEBACitGcm9tIGYwMDQ5YjRiMmVhNTViM2IzYzUzYmY2ZjAyNzU2NTQ4MDFjNzU1ZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI4IFNlcCAyMDE3IDE1OjU0OjU1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGV4cGVjdDogRml4IHNlZ2ZhdWx0cyBpZiBUY2wgaXMgYnVpbHQgd2l0aCBzdHVicyBhbmQgRXhwZWN0CisgaXMgdXNlZCBkaXJlY3RseSBmcm9tIEMgcHJvZ3JhbQorCitEZXNjcmlwdGlvbjogVGhpcyBkaXJ0eSBoYWNrIGZpeGVzIHNlZ2ZhdWx0cyBpZiBUY2wgaXMgYnVpbHQgd2l0aCBzdHVicworIGFuZCBFeHBlY3QgaXMgdXNlZCBkaXJlY3RseSBmcm9tIEMgcHJvZ3JhbS4KK0J1ZzogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTU4ODgxNworRXhhbXBsZToKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8dGNsOC41L2V4cGVjdC5oPgorIGludCBtYWluKCkKKyB7CisgICAgIEZJTEUgKnBpcGU7CisgICAgIGNoYXIgKnNvbWVfY29tbWFuZCA9ICJ1bmFtZSI7CisgICAgIGNoYXIgZGF0dW07CisgICAgIHBpcGUgPSBleHBfcG9wZW4oc29tZV9jb21tYW5kKTsKKyAgICAgaWYgKHBpcGUgPT0gTlVMTCkgcmV0dXJuIDE7CisgICAgIHdoaWxlICgoZGF0dW0gPSBnZXRjIChwaXBlKSkgIT0gRU9GKQorIAlwcmludGYoIiVjIixkYXR1bSk7CisgfQorRXhhbXBsZToKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSAiZXhwZWN0LmgiCisgbWFpbigpCisgeworICAgICBpbnQgZmQgPSAwOworICAgICBmZCA9IGV4cF9zcGF3bmwoImVjaG8iLCAiZWNobyIsICJIZWxsbyBVc2VyOiBXaGF0cyB1cD8iLCAoY2hhciopIDApOworICAgICBzd2l0Y2ggKGV4cF9leHBlY3RsKGZkLCBleHBfcmVnZXhwLCAic2VyOiIsIDEsIGV4cF9lbmQpKSB7CisgCWNhc2UgMTogeworIAkgICAgcHJpbnRmKCJHT1Qgc2VyOlxuIik7CisgCSAgICBicmVhazsKKyAJfQorIAlkZWZhdWx0OiB7CisgCSAgICBwcmludGYoIkRFRkFVTFRcbiIpOworIAkgICAgcmV0dXJuIDE7CisgCX0KKyAgICAgfQorICAgICBwcmludGYoIk5vcm1hbCBFeGl0XG4iKTsKKyAgICAgcmV0dXJuIDA7CisgfQorQXV0aG9yOiBTZXJnZWkgR29sb3ZhbiA8c2dvbG92YW5AZGViaWFuLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitUaGlzIHBhdGNoIGlzIGJhY2twb3J0ZWQgZnJvbSBmZWRvcmEgY2hhbmdlcyBmb3IgZXhwZWN0OgoraHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvY2dpdC9ycG1zL2V4cGVjdC5naXQvY29tbWl0LworP2g9bWFzdGVyJmlkPWI2NzM3ZWVkNTUwYmU5MzE4MmYyZWQxOTRlODM2YTZjYmJjZjRmYTMKK1NpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KKy0tLQorIGV4cF9jbGliLmMgfCAxMCArKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4cF9jbGliLmMgYi9leHBfY2xpYi5jCitpbmRleCAxNzJjMDVlLi4xOTM0MWQ1IDEwMDY0NAorLS0tIGEvZXhwX2NsaWIuYworKysrIGIvZXhwX2NsaWIuYworQEAgLTExNCw3ICsxMTQsMTEgQEAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcJc3RydG91bCBfQU5TSV9BUkdTXygoQ09OU1QgY2hhciAqc3RyaW5nLAorICNpbmNsdWRlIDxzdGRsaWIuaD4JCS8qIGZvciBtYWxsb2MgKi8KKyAjZW5kaWYKKyAKKy0jaW5jbHVkZSA8dGNsLmg+CisrI2RlZmluZSBja2FsbG9jKHgpIFRjbF9BbGxvYyh4KQorKyNkZWZpbmUgY2tmcmVlKHgpIFRjbF9GcmVlKHgpCisrZXh0ZXJuIGNoYXIgKlRjbF9FcnJub01zZyhpbnQgZXJyKTsKKytleHRlcm4gY2hhciAqVGNsX0FsbG9jKHVuc2lnbmVkIGludCBzaXplKTsKKytleHRlcm4gdm9pZCBUY2xfRnJlZShjaGFyICpwdHIpOworICNpbmNsdWRlICJleHBlY3QuaCIKKyAjZGVmaW5lIFRjbFJlZ0Vycm9yIGV4cF9UY2xSZWdFcnJvcgorIAorQEAgLTM4OSw3ICszOTMsNyBAQCBjaGFyICpleHA7CisgCQlGQUlMKCJyZWdleHAgdG9vIGJpZyIpOworIAorIAkvKiBBbGxvY2F0ZSBzcGFjZS4gKi8KKy0JciA9IChyZWdleHAgKilja2FsbG9jKHNpemVvZihyZWdleHApICsgKHVuc2lnbmVkKXJjc3RhdGUtPnJlZ3NpemUpOworKwlyID0gKHJlZ2V4cCAqKW1hbGxvYyhzaXplb2YocmVnZXhwKSArICh1bnNpZ25lZClyY3N0YXRlLT5yZWdzaXplKTsKKyAJaWYgKHIgPT0gTlVMTCkKKyAJCUZBSUwoIm91dCBvZiBzcGFjZSIpOworIAorQEAgLTM5OSw3ICs0MDMsNyBAQCBjaGFyICpleHA7CisgCXJjc3RhdGUtPnJlZ2NvZGUgPSByLT5wcm9ncmFtOworIAlyZWdjKE1BR0lDLCByY3N0YXRlKTsKKyAJaWYgKHJlZygwLCAmZmxhZ3MsIHJjc3RhdGUpID09IE5VTEwpIHsKKy0JICBja2ZyZWUgKChjaGFyKikgcik7CisrCSAgZnJlZSgoY2hhciopIHIpOworIAkgIHJldHVybihOVUxMKTsKKyAJfQorIAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2V4cGVjdC9leHBlY3RfNS40NS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0XzUuNDUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmVhY2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0XzUuNDUuNC5iYgpAQCAtMCwwICsxLDc2IEBACitTVU1NQVJZID0gInRvb2wgZm9yIGF1dG9tYXRpbmcgaW50ZXJhY3RpdmUgYXBwbGljYXRpb25zIGFjY29yZGluZyB0byBhIHNjcmlwdCIKK0RFU0NSSVBUSU9OID0gIkV4cGVjdCBpcyBhIHRvb2wgZm9yIGF1dG9tYXRpbmcgaW50ZXJhY3RpdmUgYXBwbGljYXRpb25zIGFjY29yZGluZyB0byBhIHNjcmlwdC4gXAorRm9sbG93aW5nIHRoZSBzY3JpcHQsIEV4cGVjdCBrbm93cyB3aGF0IGNhbiBiZSBleHBlY3RlZCBmcm9tIGEgcHJvZ3JhbSBhbmQgd2hhdCBcCit0aGUgY29ycmVjdCByZXNwb25zZSBzaG91bGQgYmUuIEV4cGVjdCBpcyBhbHNvIHVzZWZ1bCBmb3IgdGVzdGluZyB0aGVzZSBzYW1lIFwKK2FwcGxpY2F0aW9ucy4gQW5kIGJ5IGFkZGluZyBUaywgeW91IGNhbiBhbHNvIHdyYXAgaW50ZXJhY3RpdmUgYXBwbGljYXRpb25zIGluIFwKK1gxMSBHVUlzLiBBbiBpbnRlcnByZXRlZCBsYW5ndWFnZSBwcm92aWRlcyBicmFuY2hpbmcgYW5kIGhpZ2gtbGV2ZWwgY29udHJvbCBcCitzdHJ1Y3R1cmVzIHRvIGRpcmVjdCB0aGUgZGlhbG9ndWUuIEluIGFkZGl0aW9uLCB0aGUgdXNlciBjYW4gdGFrZSBjb250cm9sIGFuZCBcCitpbnRlcmFjdCBkaXJlY3RseSB3aGVuIGRlc2lyZWQsIGFmdGVyd2FyZCByZXR1cm5pbmcgY29udHJvbCB0byB0aGUgc2NyaXB0LiBcCisiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2V4cGVjdC8iCitMSUNFTlNFID0gIlBEIgorU0VDVElPTiA9ICJkZXZlbCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGljZW5zZS50ZXJtczttZDU9ZmJmMmRlN2U5MTAyNTA1YjE0MzlkYjA2ZmMzNmNlNWMiCisKK0RFUEVORFMgKz0gInRjbCIKK1JERVBFTkRTXyR7UE59ID0gInRjbCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9leHBlY3QvRXhwZWN0LyR7UFZ9LyR7QlBOfSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5pbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXRjbC5tNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMS1leGFtcGxlLXNoZWJhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1leHBlY3QtaW5zdGFsbC1zY3JpcHRzLXdpdGhvdXQtdXNpbmctdGhlLWZpeGxpbmUxLXRjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVzb2x2ZS1zdHJpbmctZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1leHBlY3QtRml4LXNlZ2ZhdWx0cy1pZi1UY2wtaXMtYnVpbHQtd2l0aC1zdHVicy1hbmQtLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDBmY2U4ZGUxNTg0MjJmNWNjZDI2NjY1MTIzMjliZDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDlhN2RhODNiMGJkZDlmNDZkMDRhMDRkZWVjMTljNzc2N2JiOWEzMjNlNDBjNDc4MWY4OWNhZjc2MGI5MmMzNCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZXhwZWN0L2ZpbGVzL0V4cGVjdC8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvRXhwZWN0Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0ke1BWfSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0R9JHtsaWJkaXJ9L2V4cGVjdCR7UFZ9L2xpYmV4cGVjdCouc28gICAke0R9JHtsaWJkaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9maXhsaW5lMSAgICAgICAgICAgJHtEfSR7bGliZGlyfS9leHBlY3Qke1BWfS8KKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vZXhhbXBsZS8qICAgICAgICAgICR7RH0ke2xpYmRpcn0vZXhwZWN0JHtQVn0vCisgICAgICAgIHJtICR7RH0ke2xpYmRpcn0vZXhwZWN0JHtQVn0vbGliZXhwZWN0Ki5zbworICAgICAgICBzZWQgLWUgJ3N8JGRpcnwke2xpYmRpcn18JyAtaSAke0R9JHtsaWJkaXJ9L2V4cGVjdCR7UFZ9L3BrZ0luZGV4LnRjbAorfQorCisjIEFwcGFyZW50bHkgdGhlIHB1YmxpYyBUY2wgaGVhZGVycyBhcmUgb25seSBpbiAvdXNyL2luY2x1ZGUvdGNsOC42CisjIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSB0YXJnZXQuCitUQ0xfSU5DTFVERV9QQVRIID0gIiIKK1RDTF9JTkNMVURFX1BBVEhfY2xhc3MtdGFyZ2V0ID0gIi0td2l0aC10Y2xpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9L3RjbDguNiIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdGNsPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtdGhyZWFkcyBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgICR7VENMX0lOQ0xVREVfUEFUSH0gXAorICAgICAgICAgICAgICAgICIKK0VYVFJBX09FTUFLRV9pbnN0YWxsID0gIiAnU0NSSVBUUz0nICIKKworQUxURVJOQVRJVkVfJHtQTn0gID0gIm1rcGFzc3dkIgorQUxURVJOQVRJVkVfTElOS19OQU1FW21rcGFzc3dkXSA9ICIke2JpbmRpcn0vbWtwYXNzd2QiCisjIFVzZSBsb3dlciBwcmlvcml0eSB0aGFuIGJ1c3lib3gncyBta3Bhc3N3ZCAoY3JlYXRlZCB3aGVuIGJ1aWx0IHdpdGggQ09ORklHX0NSWVBUUFcpCitBTFRFUk5BVElWRV9QUklPUklUWVtta3Bhc3N3ZF0gPSAiNDAiCisKK0ZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcl9uYXRpdmV9L2V4cGVjdCR7UFZ9L2xpYmV4cGVjdCouc28gXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXhwZWN0LmggXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXhwZWN0X3RjbC5oIFwKKyAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V4cGVjdF9jb21tLmggXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vdGNsZGJnLmggXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKi5oIFwKKyAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJleHBlY3Qke1BWfS5zbyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V4cGVjdCR7UFZ9LyogXAorICAgICAgICAgICAgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2V4cGVjdC9leHBlY3RfNS40NS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZXhwZWN0L2V4cGVjdF81LjQ1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmQyNGU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZXhwZWN0L2V4cGVjdF81LjQ1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotU1VNTUFSWSA9ICJ0b29sIGZvciBhdXRvbWF0aW5nIGludGVyYWN0aXZlIGFwcGxpY2F0aW9ucyBhY2NvcmRpbmcgdG8gYSBzY3JpcHQiCi1ERVNDUklQVElPTiA9ICJFeHBlY3QgaXMgYSB0b29sIGZvciBhdXRvbWF0aW5nIGludGVyYWN0aXZlIGFwcGxpY2F0aW9ucyBhY2NvcmRpbmcgdG8gYSBzY3JpcHQuIFwKLUZvbGxvd2luZyB0aGUgc2NyaXB0LCBFeHBlY3Qga25vd3Mgd2hhdCBjYW4gYmUgZXhwZWN0ZWQgZnJvbSBhIHByb2dyYW0gYW5kIHdoYXQgXAotdGhlIGNvcnJlY3QgcmVzcG9uc2Ugc2hvdWxkIGJlLiBFeHBlY3QgaXMgYWxzbyB1c2VmdWwgZm9yIHRlc3RpbmcgdGhlc2Ugc2FtZSBcCi1hcHBsaWNhdGlvbnMuIEFuZCBieSBhZGRpbmcgVGssIHlvdSBjYW4gYWxzbyB3cmFwIGludGVyYWN0aXZlIGFwcGxpY2F0aW9ucyBpbiBcCi1YMTEgR1VJcy4gQW4gaW50ZXJwcmV0ZWQgbGFuZ3VhZ2UgcHJvdmlkZXMgYnJhbmNoaW5nIGFuZCBoaWdoLWxldmVsIGNvbnRyb2wgXAotc3RydWN0dXJlcyB0byBkaXJlY3QgdGhlIGRpYWxvZ3VlLiBJbiBhZGRpdGlvbiwgdGhlIHVzZXIgY2FuIHRha2UgY29udHJvbCBhbmQgXAotaW50ZXJhY3QgZGlyZWN0bHkgd2hlbiBkZXNpcmVkLCBhZnRlcndhcmQgcmV0dXJuaW5nIGNvbnRyb2wgdG8gdGhlIHNjcmlwdC4gXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9leHBlY3QvIgotTElDRU5TRSA9ICJQRCIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpY2Vuc2UudGVybXM7bWQ1PWZiZjJkZTdlOTEwMjUwNWIxNDM5ZGIwNmZjMzZjZTVjIgotCi1ERVBFTkRTICs9ICJ0Y2wiCi1SREVQRU5EU18ke1BOfSA9ICJ0Y2wiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4cGVjdC9FeHBlY3QvJHtQVn0vJHtCUE59JHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdGNsLm00LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAxLWV4YW1wbGUtc2hlYmFuZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWV4cGVjdC1pbnN0YWxsLXNjcmlwdHMtd2l0aG91dC11c2luZy10aGUtZml4bGluZTEtdGMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXNvbHZlLXN0cmluZy1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjQ0ZTFhNGY0Yzg3N2U5ZGRjNWE1NDJkZmE3ZWNjOTJiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyOGRjYTkwNDI4YTNiMzBlNjUwNTI1Y2RjMTYyNTVkNzZiYjZjY2Q2NWQ0NDhiZTUzZTYyMGQ5NWQ1Y2MwNDAiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2V4cGVjdC9maWxlcy9FeHBlY3QvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL0V4cGVjdC8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59JHtQVn0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtEfSR7bGliZGlyfS9leHBlY3Qke1BWfS9saWJleHBlY3QqLnNvICAgJHtEfSR7bGliZGlyfS8KLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vZml4bGluZTEgICAgICAgICAgICR7RH0ke2xpYmRpcn0vZXhwZWN0JHtQVn0vCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2V4YW1wbGUvKiAgICAgICAgICAke0R9JHtsaWJkaXJ9L2V4cGVjdCR7UFZ9LwotICAgICAgICBybSAke0R9JHtsaWJkaXJ9L2V4cGVjdCR7UFZ9L2xpYmV4cGVjdCouc28KLSAgICAgICAgc2VkIC1lICdzfCRkaXJ8JHtsaWJkaXJ9fCcgLWkgJHtEfSR7bGliZGlyfS9leHBlY3Qke1BWfS9wa2dJbmRleC50Y2wKLX0KLQotIyBBcHBhcmVudGx5IHRoZSBwdWJsaWMgVGNsIGhlYWRlcnMgYXJlIG9ubHkgaW4gL3Vzci9pbmNsdWRlL3RjbDguNgotIyB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgdGFyZ2V0LgotVENMX0lOQ0xVREVfUEFUSCA9ICIiCi1UQ0xfSU5DTFVERV9QQVRIX2NsYXNzLXRhcmdldCA9ICItLXdpdGgtdGNsaW5jbHVkZT0ke1NUQUdJTkdfSU5DRElSfS90Y2w4LjYiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXRjbD0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLXRocmVhZHMgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGggXAotICAgICAgICAgICAgICAgICAke1RDTF9JTkNMVURFX1BBVEh9IFwKLSAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRU1BS0VfaW5zdGFsbCA9ICIgJ1NDUklQVFM9JyAiCi0KLUFMVEVSTkFUSVZFXyR7UE59ICA9ICJta3Bhc3N3ZCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtta3Bhc3N3ZF0gPSAiJHtiaW5kaXJ9L21rcGFzc3dkIgotIyBVc2UgbG93ZXIgcHJpb3JpdHkgdGhhbiBidXN5Ym94J3MgbWtwYXNzd2QgKGNyZWF0ZWQgd2hlbiBidWlsdCB3aXRoIENPTkZJR19DUllQVFBXKQotQUxURVJOQVRJVkVfUFJJT1JJVFlbbWtwYXNzd2RdID0gIjQwIgotCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJfbmF0aXZlfS9leHBlY3Qke1BWfS9saWJleHBlY3QqLnNvIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V4cGVjdC5oIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V4cGVjdF90Y2wuaCBcCi0gICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9leHBlY3RfY29tbS5oIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L3RjbGRiZy5oIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9LyouaCBcCi0gICAgICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGliZXhwZWN0JHtQVn0uc28gXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9leHBlY3Qke1BWfS8qIFwKLSAgICAgICAgICAgICAgICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvZGViaWFuLTc0MjI2Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlL2RlYmlhbi03NDIyNjIucGF0Y2gKaW5kZXggZDMxYWM1OS4uMzE5ZjlkYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvZGViaWFuLTc0MjI2Mi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZS9kZWJpYW4tNzQyMjYyLnBhdGNoCkBAIC0xNCwxNyArMTQsMTQgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL21hZ2ljL01hZ2Rpci9jb21tYW5kcyBiL21hZ2ljL01hZ2Rpci9jb21tYW5kcwotaW5kZXggMWE0NmVmZC4uMjU1YzA0YiAxMDA2NDQKK2luZGV4IGY2YWQxYzguLmY3OWU3ZGQgMTAwNjQ0CiAtLS0gYS9tYWdpYy9NYWdkaXIvY29tbWFuZHMKICsrKyBiL21hZ2ljL01hZ2Rpci9jb21tYW5kcwogQEAgLTU3LDYgKzU3LDcgQEAKICAwCXN0cmluZy93dAkjIVwgL3Vzci9iaW4vYXdrCWF3ayBzY3JpcHQgdGV4dCBleGVjdXRhYmxlCiAgITptaW1lCXRleHQveC1hd2sKLSAwCXJlZ2V4LzQwOTYJPV5bQS1aYS16MC05X117MCwxMDB9QkVHSU5bQS1aYS16MC05X117MCwxMDB9W3tdCWF3ayBvciBwZXJsIHNjcmlwdCB0ZXh0CisgMAlyZWdleC80MDk2CT1eW1wwNDBcdFxmXHJcbl17MCwxMDB9QkVHSU5bXDA0MFx0XGZcclxuXXswLDEwMH1be10JYXdrIG9yIHBlcmwgc2NyaXB0IHRleHQKICshOnN0cmVuZ3RoIC0gMTIKICAKICAjIEFUJlQgQmVsbCBMYWJzJyBQbGFuIDkgc2hlbGwKICAwCXN0cmluZy93dAkjIVwgL2Jpbi9yYwlQbGFuIDkgcmMgc2hlbGwgc2NyaXB0IHRleHQgZXhlY3V0YWJsZQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIxZjUwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJGaWxlIGNsYXNzaWZpY2F0aW9uIHRvb2wiCi1ERVNDUklQVElPTiA9ICJGaWxlIGF0dGVtcHRzIHRvIGNsYXNzaWZ5IGZpbGVzIGRlcGVuZGluZyBcCi1vbiB0aGVpciBjb250ZW50cyBhbmQgcHJpbnRzIGEgZGVzY3JpcHRpb24gaWYgYSBtYXRjaCBpcyBmb3VuZC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmRhcndpbnN5cy5jb20vZmlsZS8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLSMgdHdvIGNsYXVzZSBCU0QKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9MjttZDU9NmE3MzgyODcyZWRiNjhkMzNlMWE5Mzk4YjZlMDMxODgiCi0KLURFUEVORFMgPSAiemxpYiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgotCi0jIEJsYWNrbGlzdCBhIGJvZ3VzIHRhZyBpbiB1cHN0cmVhbSBjaGVjawotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiRklMRSg/UDxwdmVyPig/ITZfMjMpLispIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmlsZS9maWxlLmdpdCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4tNzQyMjYyLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtQWRkLVAtcHJvbXB0LWludG8tVXNhZ2UtaW5mby5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDUkVWID0gIjcwYzVmMTUwNjBjN2FkODExNTAxNzdkZTgzYTNlNjQ1MDBhNTRjOWYiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scwotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1zdGQ9Yzk5IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taXNjLyoubWdjIgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKLQkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCi0JCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLVBST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotIyBEb24ndCB1c2UgTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggYXMgdGhhdCBoaWRlcyBsaWJtYWdpYyBmcm9tIGFueW9uZSB3aG8KLSMgZGVwZW5kcyBvbiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZS4KLWJpbmRpcl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIi9maWxlLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMTU5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMyLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiRmlsZSBjbGFzc2lmaWNhdGlvbiB0b29sIgorREVTQ1JJUFRJT04gPSAiRmlsZSBhdHRlbXB0cyB0byBjbGFzc2lmeSBmaWxlcyBkZXBlbmRpbmcgXAorb24gdGhlaXIgY29udGVudHMgYW5kIHByaW50cyBhIGRlc2NyaXB0aW9uIGlmIGEgbWF0Y2ggaXMgZm91bmQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kYXJ3aW5zeXMuY29tL2ZpbGUvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCisjIHR3byBjbGF1c2UgQlNECitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTI7bWQ1PTZhNzM4Mjg3MmVkYjY4ZDMzZTFhOTM5OGI2ZTAzMTg4IgorCitERVBFTkRTID0gInpsaWIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSIKKworIyBCbGFja2xpc3QgYSBib2d1cyB0YWcgaW4gdXBzdHJlYW0gY2hlY2sKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIkZJTEUoP1A8cHZlcj4oPyE2XzIzKS4rKSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZpbGUvZmlsZS5naXQgXAorICAgICAgICBmaWxlOi8vZGViaWFuLTc0MjI2Mi5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1QLXByb21wdC1pbnRvLVVzYWdlLWluZm8ucGF0Y2ggXAorICAgICAgICAiCisKK1NSQ1JFViA9ICJkNDc0ZTM1NTEzOTQwZGJjYTAzOWI1MTBiNGRlNzA1YjQ0ZjViZDljIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgorRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgorCitDRkxBR1NfYXBwZW5kID0gIiAtc3RkPWM5OSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWlzYy8qLm1nYyIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCisJCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAorCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKKyMgRG9uJ3QgdXNlIE5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYIGFzIHRoYXQgaGlkZXMgbGlibWFnaWMgZnJvbSBhbnlvbmUgd2hvCisjIGRlcGVuZHMgb24gZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUuCitiaW5kaXJfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIvZmlsZS1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9kb19ub3RfY3JlYXRlX3BkZl9kb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9kb19ub3RfY3JlYXRlX3BkZl9kb2MucGF0Y2gKaW5kZXggMDMyODMzYS4uMjk3OTJlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvZG9fbm90X2NyZWF0ZV9wZGZfZG9jLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L2RvX25vdF9jcmVhdGVfcGRmX2RvYy5wYXRjaApAQCAtMiwxMSArMiwxMSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50aXUgUGFsY3UgPGxhdXJlbnRpdS5wYWxjdUBpbnRlbC5jb20+CiAKLUluZGV4OiBmbGV4LTIuNS4zNy9kb2MvTWFrZWZpbGUuYW0KK0luZGV4OiBmbGV4LTIuNi4wL2RvYy9NYWtlZmlsZS5hbQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsZXgtMi41LjM3Lm9yaWcvZG9jL01ha2VmaWxlLmFtCTIwMTItMDctMjEgMDQ6MTg6MjcuMDAwMDAwMDAwICswMzAwCi0rKysgZmxleC0yLjUuMzcvZG9jL01ha2VmaWxlLmFtCTIwMTMtMDctMzAgMTc6NTc6MDkuODM0ODM0NTMxICswMzAwCi1AQCAtMiw3ICsyLDcgQEAKKy0tLSBmbGV4LTIuNi4wLm9yaWcvZG9jL01ha2VmaWxlLmFtCisrKysgZmxleC0yLjYuMC9kb2MvTWFrZWZpbGUuYW0KK0BAIC0yLDcgKzIsNyBAQCBoZWxwMm1hbiA9IEBIRUxQMk1BTkAKICAKICBpbmZvX1RFWElORk9TID0JZmxleC50ZXhpCiAgZGlzdF9tYW5fTUFOUyA9IGZsZXguMQpAQCAtMTQsNCArMTQsNCBAQAogK0VYVFJBX0RJU1Q9IGZsZXgucGRmCiAgCiAgQ0xFQU5GSUxFUyA9IFwKLSAJZmxleC5oa3MgXAorIAlmbGV4LmF1eCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleF8yLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiCmluZGV4IGE5MDZmZTguLmI4OWI3NTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiCkBAIC00Myw2ICs0MywxMCBAQAogCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZsZXggTTQ9JHtNNH0KIH0KIAorUEFDS0FHRVMgPSsgIiR7UE59LWxpYmZsIgorCitGSUxFU18ke1BOfS1saWJmbCA9ICIke2xpYmRpcn0vbGliZmwuc28uKiAke2xpYmRpcn0vbGliZmxfcGljLnNvLioiCisKIFJERVBFTkRTXyR7UE59ICs9ICJtNCIKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIGdhd2siCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyZWFiZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotcmVxdWlyZSBnY2MtY29tbW9uLmluYwotCi0jIFRoaXJkIGRpZ2l0IGluIFBWIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBhZnRlciBhIG1pbm9yIHJlbGVhc2UKLQotUFYgPSAiNi40LjAiCi0KLSMgQklOViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgdG8gYSByZXZpc2lvbiBhZnRlciBhIG1pbm9yIGdjYyByZWxlYXNlCi0KLUJJTlYgPSAiNi40LjAiCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2djYy02LjQ6JHtGSUxFX0RJUk5BTUV9L2djYy02LjQvYmFja3BvcnQ6IgotCi1ERVBFTkRTID0rICJtcGZyIGdtcCBsaWJtcGMgemxpYiIKLU5BVElWRURFUFMgPSAibXBmci1uYXRpdmUgZ21wLW5hdGl2ZSBsaWJtcGMtbmF0aXZlIHpsaWItbmF0aXZlIgotCi1MSUNFTlNFID0gIkdQTC0zLjAtd2l0aC1HQ0MtZXhjZXB0aW9uICYgR1BMdjMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgIGZpbGU6Ly9DT1BZSU5HLlJVTlRJTUU7bWQ1PWZlNjBkODcwNDg1NjdkNGZlOGM4YTBlZDI0NDhiY2M4IFwKLSIKLQotCi1CQVNFVVJJID89ICIke0dOVV9NSVJST1J9L2djYy9nY2MtJHtQVn0vZ2NjLSR7UFZ9LnRhci54eiIKLSNTUkNSRVYgPSAiYmQ5YTgyNmQ1NDQ4ZGIxMWQyOWQyZWM1ODg0ZTdlNjc5MDY2ZjE0MCIKLSNCQVNFVVJJID89ICJnaXQ6Ly9naXRodWIuY29tL2djYy1taXJyb3IvZ2NjO2JyYW5jaD1nY2MtNi1icmFuY2g7cHJvdG9jb2w9Z2l0IgotI0JBU0VVUkkgPz0gImZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nY2Mvc25hcHNob3RzLzYuMi4wLVJDLTIwMTYwODE1L2djYy02LjIuMC1SQy0yMDE2MDgxNS50YXIuYnoyIgotCi1TUkNfVVJJID0gIlwKLSAgICAgICAgICAgJHtCQVNFVVJJfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1jOTktc25wcmludGYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtRGlzYWJsZS1zZHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjgtZXhwb3J0LUNQUC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI5LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMC1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzEtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMi1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzMtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM0LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNS1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNi1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNy1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzgtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM5LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDAtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0MS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDItZ2NjLWxpYmNwcC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAtb2xkLW5ldy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQzLVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQ0LWdjYy1maW5hbC5jLWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtc291cmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0NS1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQ2LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQ3LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0OC1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1NF9hbGxfbm9waWUtYWxsLWZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTUtdW53aW5kX2gtZ2xpYmMyNi5wYXRjaCBcCi0gICAgICAgICAgICR7QkFDS1BPUlRTfSBcCi0iCi1CQUNLUE9SVFMgPSAiXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNjEzMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDU3LUFSTS1QUi04MjQ0NS1zdXBwcmVzcy0zMi1iaXQtYWxpZ25lZC1sZHJkLXN0cmQtcGVlcGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1lbmFibGUtRkxfTFBBRS1mbGFnLWZvci1hcm12N3ZlLWNvcmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaTM4Ni1Nb3ZlLXN0cnVjdC1peDg2X2ZyYW1lLXRvLW1hY2hpbmVfZnVuY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1pMzg2LVVzZS1yZWZlcmVuY2Utb2Ytc3RydWN0LWl4ODZfZnJhbWUtdG8tYXZvaWQtY29wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtaTM4Ni1Vc2UtY29uc3QtcmVmZXJlbmNlLW9mLXN0cnVjdC1peDg2X2ZyYW1lLXRvLWF2by5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXg4Ni1BZGQtbWluZGlyZWN0LWJyYW5jaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXg4Ni1BZGQtbWZ1bmN0aW9uLXJldHVybi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXg4Ni1BZGQtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3Rlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXg4Ni1BZGQtVi1yZWdpc3Rlci1vcGVyYW5kLW1vZGlmaWVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgteDg2LURpc2FsbG93LW1pbmRpcmVjdC1icmFuY2gtbWZ1bmN0aW9uLXJldHVybi13aXRoLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LVVzZS1JTlZBTElEX1JFR05VTS1pbi1pbmRpcmVjdC10aHVuay1wcm9jZXNzaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtaTM4Ni1QYXNzLUlOVkFMSURfUkVHTlVNLWFzLWludmFsaWQtcmVnaXN0ZXItbnVtYmVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtaTM4Ni1VcGRhdGUtbWZ1bmN0aW9uLXJldHVybi1mb3ItcmV0dXJuLXdpdGgtcG9wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItaTM4Ni1BZGQtVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLWdjYy1zYW5pdGl6ZXJzLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjExYmE1MWEwY2ZiODQ3MTkyN2YzODdjODg5NWZlMjMyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg1MGJmMjFlYWZkZmU1Y2Q1ZjY4MjcxNDgxODRjMDhjNGEwODUyYTM3Y2NmMzZjZTY5ODU1MzM0ZDJjOTE0ZDQiCi0KLVMgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtQVn0iCi0jUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2dpdCIKLUIgPSAiJHtXT1JLRElSfS9nY2MtJHtQVn0vYnVpbGQuJHtIT1NUX1NZU30uJHtUQVJHRVRfU1lTfSIKLQotIyBMYW5ndWFnZSBPdmVycmlkZXMKLUZPUlRSQU4gPSAiIgotSkFWQSA9ICIiCi0KLUxUTyA9ICItLWVuYWJsZS1sdG8iCi0KLUVYVFJBX09FQ09ORl9CQVNFID0gIlwKLSAgICAke0xUT30gXAotICAgIC0tZW5hYmxlLWxpYnNzcCBcCi0gICAgLS1lbmFibGUtbGliaXRtIFwKLSAgICAtLWRpc2FibGUtYm9vdHN0cmFwIFwKLSAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0gICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAtLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9JHtMSU5LRVJfSEFTSF9TVFlMRX0gXAotICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCi0gICAgLS13aXRoLXBwbD1ubyBcCi0gICAgLS13aXRoLWNsb29nPW5vIFwKLSAgICAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIFwKLSAgICAtLWVuYWJsZS1jaGVhZGVycz1jX2dsb2JhbCBcCi0gICAgLS13aXRob3V0LWlzbCBcCi0iCi0KLUVYVFJBX09FQ09ORl9JTklUSUFMID0gIlwKLSAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0gICAgLS1kaXNhYmxlLWxpYmdvbXAgXAotICAgIC0tZGlzYWJsZS1saWJpdG0gXAotICAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCi0gICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAtLWRpc2FibGUtbHRvIFwKLSAgICAtLWRpc2FibGUtcGx1Z2luIFwKLSAgICAtLWVuYWJsZS1kZWNpbWFsLWZsb2F0PW5vIFwKLSAgICAtLXdpdGhvdXQtaXNsIFwKLSAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzIFwKLSIKLQotRVhUUkFfT0VDT05GX1BBVEhTID0gIlwKLSAgICAtLXdpdGgtZ3h4LWluY2x1ZGUtZGlyPS9ub3QvZXhpc3R7dGFyZ2V0X2luY2x1ZGVkaXJ9L2MrKy8ke0JJTlZ9IFwKLSAgICAtLXdpdGgtc3lzcm9vdD0vbm90L2V4aXN0IFwKLSAgICAtLXdpdGgtYnVpbGQtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE1ZjA5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gOTJlZDMwZGExNmI3NDg3YjMzNGY3MzliZTE3N2ViMzk4ODVhYjc3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM3OjExICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvNDZdIGdjYy00LjMuMTogQVJDSF9GTEFHU19GT1JfVEFSR0VUCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBjb25maWd1cmUgICAgfCAyICstCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCAzNWYyMzFlLi5iZmFkYzMzIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC03NTUwLDcgKzc1NTAsNyBAQCBmaQotICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KLSB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgotIAotLUZMQUdTX0ZPUl9UQVJHRVQ9Ci0rRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKLSBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KLSAgKiIgbmV3bGliICIqKQotICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3NGJmNThhLi4xOTdkNjFiIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMTQ5LDcgKzMxNDksNyBAQCBmaQotICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KLSB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgotIAotLUZMQUdTX0ZPUl9UQVJHRVQ9Ci0rRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKLSBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KLSAgKiIgbmV3bGliICIqKQotICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMDgtbWlzc2luZy1leGVjaW5mb19oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWU3Yzk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDZkZGUzZGEyNGVmNGI5YjM1N2JjYTY3MGQ4NTUxY2FiM2ZkZGE4NDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0ODoxMCArMDQwMAotU3ViamVjdDogW1BBVENIIDA4LzQ2XSBtaXNzaW5nLWV4ZWNpbmZvX2gKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBib2VobS1nYy9pbmNsdWRlL2djLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ib2VobS1nYy9pbmNsdWRlL2djLmggYi9ib2VobS1nYy9pbmNsdWRlL2djLmgKLWluZGV4IDZiMzhmMmQuLmZjYTk4ZmYgMTAwNjQ0Ci0tLS0gYS9ib2VobS1nYy9pbmNsdWRlL2djLmgKLSsrKyBiL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaAotQEAgLTUwMyw3ICs1MDMsNyBAQCBHQ19BUEkgR0NfUFRSIEdDX21hbGxvY19hdG9taWNfaWdub3JlX29mZl9wYWdlIEdDX1BST1RPKChzaXplX3QgbGIpKTsKLSAjaWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19HTElCQ19fKQotICMgaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAjIGlmIChfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMSB8fCBfX0dMSUJDX18gPiAyKSBcCi0tICAgICAmJiAhZGVmaW5lZChfX2lhNjRfXykKLSsgICAgICYmICFkZWZpbmVkKF9faWE2NF9fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKQotICMgICBpZm5kZWYgR0NfSEFWRV9CVUlMVElOX0JBQ0tUUkFDRQotICMgICAgIGRlZmluZSBHQ19IQVZFX0JVSUxUSU5fQkFDS1RSQUNFCi0gIyAgIGVuZGlmCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAwOS1jOTktc25wcmludGYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMDktYzk5LXNucHJpbnRmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjIzNDFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAwOS1jOTktc25wcmludGYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGI3OTRmMWYxYzFjN2MwNmYzZjBkNzhjZjc2YzRmYjkwYzJhYjhkZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0OTowMyArMDQwMAotU3ViamVjdDogW1BBVENIIDA5LzQ2XSBjOTktc25wcmludGYKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KLWluZGV4IGE0MTE5YmEuLjgzOTZmNDMgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KLSsrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotQEAgLTE0NCw3ICsxNDQsNyBAQCBuYW1lc3BhY2Ugc3RkCi0gICB1c2luZyA6OnZzcHJpbnRmOwotIH0gLy8gbmFtZXNwYWNlIHN0ZAotIAotLSNpZiBfR0xJQkNYWF9VU0VfQzk5X1NURElPCi0rI2lmIF9HTElCQ1hYX1VTRV9DOTlfU1RESU8gfHwgZGVmaW5lZChfX1VDTElCQ19fKQotIAotICN1bmRlZiBzbnByaW50ZgotICN1bmRlZiB2ZnNjYW5mCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM0Y2Y0NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTAtZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotRnJvbSBkNzYyNTAzMjNkYWQ2OTIxMmM5NThlNDg1N2E5OGQ5OWFiNTFhMzllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NTk6MDAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC80Nl0gZ2NjOiBwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uOiBjb2Rlc291cmNlcnldCi0tLS0KLSBnY2MvY29tbW9uLm9wdCAgICAgIHwgIDQgKysrKwotIGdjYy9jb25maWcuaW4gICAgICAgfCAgNiArKysrKysKLSBnY2MvY29uZmlndXJlICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKwotIGdjYy9jb25maWd1cmUuYWMgICAgfCAxMCArKysrKysrKysrCi0gZ2NjL2RvYy9pbnZva2UudGV4aSB8ICA5ICsrKysrKysrKwotIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMiArKwotIGdjYy9pbmNwYXRoLmMgICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCi0gNyBmaWxlcyBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29tbW9uLm9wdCBiL2djYy9jb21tb24ub3B0Ci1pbmRleCA2NzA0OGRiLi43MzMxODVjIDEwMDY0NAotLS0tIGEvZ2NjL2NvbW1vbi5vcHQKLSsrKyBiL2djYy9jb21tb24ub3B0Ci1AQCAtNjU5LDYgKzY1OSwxMCBAQCBXcmV0dXJuLWxvY2FsLWFkZHIKLSBDb21tb24gVmFyKHdhcm5fcmV0dXJuX2xvY2FsX2FkZHIpIEluaXQoMSkgV2FybmluZwotIFdhcm4gYWJvdXQgcmV0dXJuaW5nIGEgcG9pbnRlci9yZWZlcmVuY2UgdG8gYSBsb2NhbCBvciB0ZW1wb3JhcnkgdmFyaWFibGUuCi0gCi0rV3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStDb21tb24gVmFyKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykgSW5pdCgxKSBXYXJuaW5nCi0rV2FybiBmb3IgLUkgYW5kIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIGlmIGNyb3NzIGNvbXBpbGluZwotKwotIFdzaGFkb3cKLSBDb21tb24gVmFyKHdhcm5fc2hhZG93KSBXYXJuaW5nCi0gV2FybiB3aGVuIG9uZSBsb2NhbCB2YXJpYWJsZSBzaGFkb3dzIGFub3RoZXIuCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5pbiBiL2djYy9jb25maWcuaW4KLWluZGV4IDExNWNiNjEuLjEwNWIzMGYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnLmluCi0rKysgYi9nY2MvY29uZmlnLmluCi1AQCAtMTg3LDYgKzE4NywxMiBAQAotICNlbmRpZgotIAotIAotKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMgKi8KLSsjaWZuZGVmIFVTRURfRk9SX1RBUkdFVAotKyN1bmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUwotKyNlbmRpZgotKwotKwotIC8qIERlZmluZSBpZiB5b3Ugd2FudCBhbGwgb3BlcmF0aW9ucyBvbiBSVEwgKHRoZSBiYXNpYyBkYXRhIHN0cnVjdHVyZSBvZiB0aGUKLSAgICBvcHRpbWl6ZXIgYW5kIGJhY2sgZW5kKSB0byBiZSBjaGVja2VkIGZvciBkeW5hbWljIHR5cGUgc2FmZXR5IGF0IHJ1bnRpbWUuCi0gICAgVGhpcyBpcyBxdWl0ZSBleHBlbnNpdmUuICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDFjNmUzNDAuLjhmODMxNTIgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtOTQyLDYgKzk0Miw3IEBAIHdpdGhfc3lzdGVtX3psaWIKLSBlbmFibGVfbWFpbnRhaW5lcl9tb2RlCi0gZW5hYmxlX2xpbmtfbXV0ZXgKLSBlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMKLStlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcwotIGVuYWJsZV9wbHVnaW4KLSBlbmFibGVfaG9zdF9zaGFyZWQKLSBlbmFibGVfbGlicXVhZG1hdGhfc3VwcG9ydAotQEAgLTE2ODEsNiArMTY4Miw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgotICAgLS1lbmFibGUtdmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeQotKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzCi0gICAtLWVuYWJsZS1wbHVnaW4gICAgICAgICBlbmFibGUgcGx1Z2luIHN1cHBvcnQKLSAgIC0tZW5hYmxlLWhvc3Qtc2hhcmVkICAgIGJ1aWxkIGhvc3QgY29kZSBhcyBzaGFyZWQgbGlicmFyaWVzCi0gICAtLWRpc2FibGUtbGlicXVhZG1hdGgtc3VwcG9ydAotQEAgLTI4OTA4LDYgKzI4OTExLDE5IEBAIGlmIHRlc3QgIiR7ZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzK3NldH0iID0gc2V0OyB0aGVuIDoKLSBmaQotIAotIAotKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rZWxzZQotKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KLStmaQotKwotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotIAotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCA2YzFkY2Q5Li4wZmNjYWVmIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTU4NjEsNiArNTg2MSwxNiBAQCBBQ19BUkdfRU5BQkxFKHZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzLAotICAgICAgICAgICAgICAgICBbc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZQotICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5XSldKQotIAotK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKSwsCi0rICAgICAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCi0raWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgotKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCi0rICAgICAgICAgICBbMV0sCi0rICAgICAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pCi0rZmkKLSsKLSAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSBBQ19TVUJTVChzdWJkaXJzKQotIEFDX1NVQlNUKHNyY2RpcikKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggODIxZjhmZC4uOGJiNDllNyAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0yODQsNiArMjg0LDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgotIC1XcGFyZW50aGVzZXMgLVduby1wZWRhbnRpYy1tcy1mb3JtYXQgQGdvbAotIC1XcGxhY2VtZW50LW5ldyAtV3BsYWNlbWVudC1uZXc9QHZhcntufSBAZ29sCi0gLVdwb2ludGVyLWFyaXRoICAtV25vLXBvaW50ZXItdG8taW50LWNhc3QgQGdvbAotKy1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyBAZ29sCi0gLVduby1wcmFnbWFzIC1XcmVkdW5kYW50LWRlY2xzICAtV25vLXJldHVybi1sb2NhbC1hZGRyIEBnb2wKLSAtV3JldHVybi10eXBlICAtV3NlcXVlbmNlLXBvaW50ICAtV3NoYWRvdyAgLVduby1zaGFkb3ctaXZhciBAZ29sCi0gLVdzaGlmdC1vdmVyZmxvdyAtV3NoaWZ0LW92ZXJmbG93PUB2YXJ7bn0gQGdvbAotQEAgLTQ3MjMsNiArNDcyNCwxNCBAQCBtYWRlIHVwIG9mIGRhdGEgb25seSBhbmQgdGh1cyByZXF1aXJlcyBubyBzcGVjaWFsIHRyZWF0bWVudC4gIEJ1dCwgZm9yCi0gbW9zdCB0YXJnZXRzLCBpdCBpcyBtYWRlIHVwIG9mIGNvZGUgYW5kIHRodXMgcmVxdWlyZXMgdGhlIHN0YWNrIHRvIGJlCi0gbWFkZSBleGVjdXRhYmxlIGluIG9yZGVyIGZvciB0aGUgcHJvZ3JhbSB0byB3b3JrIHByb3Blcmx5LgotIAotK0BpdGVtIC1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0BvcGluZGV4IFduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUl9IG9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtCi0rZGlyZWN0b3JpZXMgc3VjaCBhcyBAZmlsZXsvdXNyL2luY2x1ZGV9IHdoZW4gY3Jvc3MgY29tcGlsaW5nLiAgVGhpcwotK29wdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoCi0rZGlyZWN0b3JpZXMgY29udGFpbiB0aGUgY29ycmVjdCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQKLStzeXN0ZW0gcmF0aGVyIHRoYW4gdGhlIGhvc3QuCi0rCi0gQGl0ZW0gLVdmbG9hdC1lcXVhbAotIEBvcGluZGV4IFdmbG9hdC1lcXVhbAotIEBvcGluZGV4IFduby1mbG9hdC1lcXVhbAotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggMWFmNTkyMC4uNGNmZWY3ZiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTAxNyw2ICsxMDE3LDggQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLwotICAgICIle2Z1c2UtbGQ9KjotZnVzZS1sZD0lKn0gIiBMSU5LX0NPTVBSRVNTX0RFQlVHX1NQRUMgXAotICAgICIlWCAle28qfSAle2UqfSAle059ICV7bn0gJXtyfVwKLSAgICAgJXtzfSAle3R9ICV7dSp9ICV7en0gJXtafSAleyFub3N0ZGxpYjoleyFub3N0YXJ0ZmlsZXM6JVN9fSBcCi0rICAgICV7V25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCi0rICAgICV7V2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCi0gICAgICV7c3RhdGljOn0gJXtMKn0gJShtZndyYXApICUobGlua19saWJnY2MpICIgXAotICAgICBWVEFCTEVfVkVSSUZJQ0FUSU9OX1NQRUMgIiAiIFNBTklUSVpFUl9FQVJMWV9TUEVDICIgJW8gIiBDSEtQX1NQRUMgIiBcCi0gICAgICV7Zm9wZW5hY2N8Zm9wZW5tcHwlOmd0KCV7ZnRyZWUtcGFyYWxsZWxpemUtbG9vcHM9KjolKn0gMSk6XAotZGlmZiAtLWdpdCBhL2djYy9pbmNwYXRoLmMgYi9nY2MvaW5jcGF0aC5jCi1pbmRleCBlYTQwZjRhLi44NTZkYTQxIDEwMDY0NAotLS0tIGEvZ2NjL2luY3BhdGguYwotKysrIGIvZ2NjL2luY3BhdGguYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSAiaW50bC5oIgotICNpbmNsdWRlICJpbmNwYXRoLmgiCi0gI2luY2x1ZGUgImNwcGRlZmF1bHQuaCIKLSsjaW5jbHVkZSAiZGlhZ25vc3RpYy1jb3JlLmgiCi0gCi0gLyogTWljcm9zb2Z0IFdpbmRvd3MgZG9lcyBub3QgbmF0aXZlbHkgc3VwcG9ydCBpbm9kZXMuCi0gICAgVk1TIGhhcyBub24tbnVtZXJpYyBpbm9kZXMuICAqLwotQEAgLTM4MSw2ICszODIsMjQgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKLSAJfQotICAgICAgIGZwcmludGYgKHN0ZGVyciwgXygiRW5kIG9mIHNlYXJjaCBsaXN0LlxuIikpOwotICAgICB9Ci0rCi0rI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rICBpZiAoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQotKyAgICB7Ci0rICAgICAgIHN0cnVjdCBjcHBfZGlyICpwOwotKwotKyAgICAgICBmb3IgKHAgPSBoZWFkc1tRVU9URV07IHA7IHAgPSBwLT5uZXh0KQotKyAgICAgICAgIHsKLSsgICAgICAgICAgaWYgKCghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvaW5jbHVkZSIsIDEyKSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvbG9jYWwvaW5jbHVkZSIsIDE4KSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkpCi0rICAgICAgICAgICAgd2FybmluZyAoT1BUX1dwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLAotKyAgICAgICAgICAgICAgICAgICAgICJpbmNsdWRlIGxvY2F0aW9uIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKLSsgICAgICAgICAgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb24iLAotKyAgICAgICAgICAgICAgICAgICAgIHAtPm5hbWUpOwotKyAgICAgICAgIH0KLSsgICAgfQotKyNlbmRpZgotIH0KLSAKLSAvKiBVc2UgZ2l2ZW4gLUkgcGF0aHMgZm9yICNpbmNsdWRlICIuLi4iIGJ1dCBub3QgI2luY2x1ZGUgPC4uLj4sIGFuZAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDExLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE3MzZhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSBhMWMyNGI1OWRlZjM5M2U0M2NkNTBiNjc2ODYwNGEyMTJjNzg4ZWQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDA6MzQgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMS80Nl0gZ2NjLXBvaXNvbi1kaXItZXh0ZW5kCi0KLUFkZCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAotemVja2Utbm8taG9zdC1pbmNsdWRlcy5wYXRjaCBwYXRjaC4gIFRoZSBvcmlnaW5hbCBwYXRjaCBjaGVja2VkIGZvcgotL3Vzci9pbmNsdWRlLCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGFuZCB0aGVuIHRyaWdnZXJlZCBhIGZhaWx1cmUgYW5kCi1hYm9ydGVkLgotCi1JbnN0ZWFkLCB3ZSBhZGQgdGhlIHR3byBtaXNzaW5nIGl0ZW1zIHRvIHRoZSBjdXJyZW50IHNjYW4uICBJZiB0aGUgdXNlcgotd2FudHMgdGhpcyB0byBiZSBhIGZhaWx1cmUsIHRoZXkgY2FuIGFkZCAiLVdlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIi4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvaW5jcGF0aC5jIHwgNCArKystCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2luY3BhdGguYyBiL2djYy9pbmNwYXRoLmMKLWluZGV4IDg1NmRhNDEuLmQyZmM4MmMgMTAwNjQ0Ci0tLS0gYS9nY2MvaW5jcGF0aC5jCi0rKysgYi9nY2MvaW5jcGF0aC5jCi1AQCAtMzkyLDcgKzM5Miw5IEBAIG1lcmdlX2luY2x1ZGVfY2hhaW5zIChjb25zdCBjaGFyICpzeXNyb290LCBjcHBfcmVhZGVyICpwZmlsZSwgaW50IHZlcmJvc2UpCi0gICAgICAgICAgewotICAgICAgICAgICBpZiAoKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9pbmNsdWRlIiwgMTIpKQotICAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9sb2NhbC9pbmNsdWRlIiwgMTgpKQotLSAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9zdy9pbmNsdWRlIiwgMTEpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL29wdC9pbmNsdWRlIiwgMTIpKSkKLSAgICAgICAgICAgICB3YXJuaW5nIChPUFRfV3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgImluY2x1ZGUgbG9jYXRpb24gXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvbiIsCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMi1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMi1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM5YjA3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTItZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1Gcm9tIDAwZWY1ZjBmMmE4ZDNiMzNhZWIxZTU1YzBkMjM0MzlmNGRkNDk1YWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTowODozMSArMDQwMAotU3ViamVjdDogW1BBVENIIDEyLzQ2XSBnY2MtNC4zLjM6IFNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQKLQotQmVmb3JlIGNvbW1pdHRpbmcsIEkgbm90aWNlZCB0aGF0IFBSLzMyMTYxIHdhcyBtYXJrZWQgYXMgYSBkdXAgb2YgUFIvMzIwMDksIGJ1dCBteSBwcmV2aW91cyBwYXRjaCBkaWQgbm90IGZpeCBpdC4KLQotVGhpcyBhbHRlcm5hdGl2ZSBwYXRjaCBpcyBiZXR0ZXIgYmVjYXVzZSBpdCBsZXRzIHlvdSBqdXN0IHVzZSBDRkxBR1NfRk9SX1RBUkdFVCB0byBzZXQgdGhlIGNvbXBpbGF0aW9uIGZsYWdzIGZvciBsaWJnY2MuIFNpbmNlIGJvb3RzdHJhcHBlZCB0YXJnZXQgbGlicmFyaWVzIGFyZSBuZXZlciBjb21waWxlZCB3aXRoIHRoZSBuYXRpdmUgY29tcGlsZXIsIGl0IG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgZGlmZmVyZW50IGZsYWdzIGZvciBzdGFnZTEgYW5kIGxhdGVyIHN0YWdlcy4gQW5kIGl0IGFsc28gbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBhIGRpZmZlcmVudCB2YXJpYWJsZSB0aGFuIENGTEFHU19GT1JfVEFSR0VULgotCi1PdGhlciBjaGFuZ2VzIEkgaGFkIHRvIGRvIGluY2x1ZGU6Ci0KLS0gbW92aW5nIHRoZSBjcmVhdGlvbiBvZiBkZWZhdWx0IENGTEFHU19GT1JfVEFSR0VUIGZyb20gTWFrZWZpbGUuYW0gdG8gY29uZmlndXJlLmFjLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgQk9PVF9DRkxBR1MgYXJlIHN1YnN0aXR1dGVkIGludG8gQ0ZMQUdTX0ZPUl9UQVJHRVQgKHdoaWNoIGlzICItTzIgLWcgJChDRkxBR1MpIikgdmlhICQoQ0ZMQUdTKS4gSXQgaXMgYWxzbyBjbGVhbmVyIHRoaXMgd2F5IHRob3VnaC4KLQotLSBwYXNzaW5nIHRoZSByaWdodCBDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgYXMgZXhwb3J0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0KLUkgYWxzbyBzdG9wcGVkIHBhc3NpbmcgTElCQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIHNpbmNlIHRoZXkgYXJlIHVudXNlZCBpbiB0aGUgd2hvbGUgc3JjIHRyZWUuIEFuZCBJIHVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gYXMgSC1QIHJlbWluZGVkIG1lIHRvIGRvLgotCi1Cb290c3RyYXBwZWQvcmVndGVzdGVkIGk2ODYtcGMtbGludXgtZ251LCB3aWxsIGNvbW1pdCB0byA0LjQgc2hvcnRseS4gT2sgZm9yIDQuMz8KLQotU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gY29uZmlndXJlIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBiZmFkYzMzLi43NTVkMzgyIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC02ODE5LDYgKzY4MTksMzggQEAgZmkKLSAKLSAKLSAKLSsjIER1cmluZyBnY2MgYm9vdHN0cmFwLCBpZiB3ZSB1c2Ugc29tZSByYW5kb20gY2MgZm9yIHN0YWdlMSB0aGVuIENGTEFHUwotKyMgbWlnaHQgYmUgZW1wdHkgb3IgIi1nIi4gIFdlIGRvbid0IHJlcXVpcmUgYSBDKysgY29tcGlsZXIsIHNvIENYWEZMQUdTCi0rIyBtaWdodCBhbHNvIGJlIGVtcHR5IChvciAiLWciLCBpZiBhIG5vbi1HQ0MgQysrIGNvbXBpbGVyIGlzIGluIHRoZSBwYXRoKS4KLSsjIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgVEFSR0VUIGxpYnJhcmllcyAod2hpY2ggd2Uga25vdyBhcmUgYnVpbHQgd2l0aAotKyMgZ2NjKSBhcmUgYnVpbHQgd2l0aCAiLU8yIC1nIiwgc28gaW5jbHVkZSB0aG9zZSBvcHRpb25zIHdoZW4gc2V0dGluZwotKyMgQ0ZMQUdTX0ZPUl9UQVJHRVQgYW5kIENYWEZMQUdTX0ZPUl9UQVJHRVQuCi0raWYgdGVzdCAieCRDRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCi0rICBDRkxBR1NfRk9SX1RBUkdFVD0kQ0ZMQUdTCi0rICBjYXNlICIgJENGTEFHUyAiIGluCi0rICAgICoiIC1PMiAiKikgOzsKLSsgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ0ZMQUdTIiA7OwotKyAgZXNhYwotKyAgY2FzZSAiICRDRkxBR1MgIiBpbgotKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKLSsgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDRkxBR1MiIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsKLStpZiB0ZXN0ICJ4JENYWEZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgotKyAgQ1hYRkxBR1NfRk9SX1RBUkdFVD0kQ1hYRkxBR1MKLSsgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgotKyAgICAqIiAtTzIgIiopIDs7Ci0rICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ1hYRkxBR1MiIDs7Ci0rICBlc2FjCi0rICBjYXNlICIgJENYWEZMQUdTICIgaW4KLSsgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7Ci0rICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDWFhGTEFHUyIgOzsKLSsgIGVzYWMKLStmaQotKwotKwotICMgSGFuZGxlIC0td2l0aC1oZWFkZXJzPVhYWC4gIElmIHRoZSB2YWx1ZSBpcyBub3QgInllcyIsIHRoZSBjb250ZW50cyBvZgotICMgdGhlIG5hbWVkIGRpcmVjdG9yeSBhcmUgY29waWVkIHRvICQodG9vbGRpcikvc3lzLWluY2x1ZGUuCi0gaWYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geCAmJiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4bm8gOyB0aGVuCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMy02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMy02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMxY2RlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1Gcm9tIDdmYzdhMDcwYWM1M2E1NTk1MGExZWFjNzZmMDI4NzdkNDEwNmI0YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMDowNiArMDQwMAotU3ViamVjdDogW1BBVENIIDEzLzQ2XSA2NC1iaXQgbXVsdGlsaWIgaGFjay4KLQotR0NDIGhhcyBpbnRlcm5hbCBtdWx0aWxpYiBoYW5kbGluZyBjb2RlIGJ1dCBpdCBhc3N1bWVzIGEgdmVyeSBzcGVjaWZpYyByaWdpZCBkaXJlY3RvcnkKLWxheW91dC4gVGhlIGJ1aWxkIHN5c3RlbSBpbXBsZW1lbnRhdGlvbiBvZiBtdWx0aWxpYiBsYXlvdXQgaXMgdmVyeSBnZW5lcmljIGFuZCBhbGxvd3MKLWNvbXBsZXRlIGN1c3RvbWlzYXRpb24gb2YgdGhlIGxpYnJhcnkgZGlyZWN0b3JpZXMuCi0KLVRoaXMgcGF0Y2ggaXMgYSBwYXJ0aWFsIHNvbHV0aW9uIHRvIGFsbG93IGFueSBjdXN0b20gZGlyZWN0b3JpZXMgdG8gYmUgcGFzc2VkIGludG8gZ2NjCi1hbmQgaGFuZGxlZCBjb3JyZWN0bHkuIEl0IGZvcmNlcyBnY2MgdG8gdXNlIHRoZSBiYXNlX2xpYmRpciAod2hpY2ggaXMgdGhlIGN1cnJlbnQKLWRpcmVjdG9yeSwgIi4iKS4gV2UgbmVlZCB0byBkbyB0aGlzIGZvciBlYWNoIG11bHRpbGliIHRoYXQgaXMgY29uZmlndXJlZCBhcyB3ZSBkb24ndAota25vdyB3aGljaCBjb21waWxlciBvcHRpb25zIG1heSBiZSBiZWluZyBwYXNzZWQgaW50byB0aGUgY29tcGlsZXIuIFNpbmNlIHdlIGhhdmUgYSBjb21waWxlcgotcGVyIG11bGl0bGliIGF0IHRoaXMgcG9pbnQgdGhhdCBpc24ndCBhbiBpc3N1ZS4KLQotVGhlIG9uZSBwcm9ibGVtIGlzIHRoZSB0YXJnZXQgY29tcGlsZXIgaXMgb25seSBnb2luZyB0byB3b3JrIGZvciB0aGUgZGVmYXVsdCBtdWx0bGlsaWIgYXQKLXRoaXMgcG9pbnQuIElkZWFsbHkgd2UnZCBmaWd1cmUgb3V0IHdoaWNoIG11bHRpbGlicyB3ZXJlIGJlaW5nIGVuYWJsZWQgd2l0aCB3aGljaCBwYXRocwotYW5kIGJlIGFibGUgdG8gcGF0Y2ggdGhlc2UgZW50cmllcyB3aXRoIGEgY29tcGxldGUgc2V0IG9mIGNvcnJlY3QgcGF0aHMgYnV0IHRoaXMgd2UKLWRvbid0IGhhdmUgc3VjaCBjb2RlIGF0IHRoaXMgcG9pbnQuIFRoaXMgaXMgc29tZXRoaW5nIHRoZSB0YXJnZXQgZ2NjIHJlY2lwZSBzaG91bGQgZG8KLWFuZCBvdmVycmlkZSB0aGVzZSBwbGF0Zm9ybSBkZWZhdWx0cyBpbiBpdHMgYnVpbGQgY29uZmlnLgotCi1SUCAxNS84LzExCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBFbHZpcyBEb3dzb24gPGVsdmlzLmRvd3NvbkBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NCAgIHwgIDYgKystLS0tCi0gZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCAgIHwgMTAgKysrLS0tLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCB8ICA1ICsrLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NCBiL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKLWluZGV4IGMwY2M4YTMuLjM2NWE1ZDYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci1AQCAtMzIsNyArMzIsNSBAQAotICMKLSBjb21tYT0sCi0gTVVMVElMSUJfT1BUSU9OUyAgICA9ICQoc3Vic3QgJChjb21tYSksLywkKFRNX01VTFRJTElCX0NPTkZJRykpCi0tTVVMVElMSUJfRElSTkFNRVMgICA9ICQocGF0c3Vic3QgbSUsICUsICQoc3Vic3QgLywgLCQoTVVMVElMSUJfT1BUSU9OUykpKQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMrPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6aTM4Ni1saW51eC1nbnUpCi0tTVVMVElMSUJfT1NESVJOQU1FUys9IG14MzI9Li4vbGlieDMyJChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudXgzMikKLStNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLgotK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci1pbmRleCAxNmM4YWRmLi5iOTMyYWNlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotQEAgLTE3LDEwICsxNyw2IEBACi0gIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gCi0gTVVMVElMSUJfT1BUSU9OUyA9IG1hYmk9bjMyL21hYmk9MzIvbWFiaT02NAotLU1VTFRJTElCX0RJUk5BTUVTID0gbjMyIDMyIDY0Ci0tTUlQU19FTCA9ICQoaWYgJChmaWx0ZXIgJWVsLCAkKGZpcnN0d29yZCAkKHN1YnN0IC0sICwkKHRhcmdldCkpKSksZWwpCi0tTUlQU19TT0ZUID0gJChpZiAkKHN0cmlwICQoZmlsdGVyIE1BU0tfU09GVF9GTE9BVF9BQkksICQodGFyZ2V0X2NwdV9kZWZhdWx0KSkgJChmaWx0ZXIgc29mdCwgJCh3aXRoX2Zsb2F0KSkpLHNvZnQpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IFwKLS0JLi4vbGliMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaW4zMiQoTUlQU19TT0ZUKSkgXAotLQkuLi9saWIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzJChNSVBTX0VMKS1saW51eC1nbnUkKE1JUFNfU09GVCkpIFwKLS0JLi4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaTY0JChNSVBTX1NPRlQpKQotK01VTFRJTElCX0RJUk5BTUVTID0gLiAuIC4KLStNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLSsKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKLWluZGV4IGZhNzU1MGIuLjliNWQ5ZWYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotQEAgLTI2LDEwICsyNiw5IEBACi0gIyBNVUxUSUxJQl9PU0RJUk5BTUVTIGFjY29yZGluZyB0byB3aGF0IGlzIGZvdW5kIG9uIHRoZSB0YXJnZXQuCi0gCi0gTVVMVElMSUJfT1BUSU9OUyAgICA6PSBtNjQvbTMyCi0tTVVMVElMSUJfRElSTkFNRVMgICA6PSA2NCAzMgotK01VTFRJTElCX0RJUk5BTUVTICAgOj0gLiAuCi0gTVVMVElMSUJfRVhUUkFfT1BUUyA6PSAKLS1NVUxUSUxJQl9PU0RJUk5BTUVTIDo9IG02ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGM2NC1saW51eC1nbnUpCi0tTVVMVElMSUJfT1NESVJOQU1FUyArPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYy1saW51eC1nbnUpCi0rTVVMVElMSUJfT1NESVJOQU1FUyA6PSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotIAotIHJzNjAwMC1saW51eC5vOiAkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9yczYwMDAtbGludXguYwotIAkkKENPTVBJTEUpICQ8Ci0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE0LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YjBjYzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE0LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotRnJvbSAzNjI3NWY3OTgxYmRhZjkxOWJiYzliNTFhN2M3ZmFlMWUxOTJhZGIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTI6NTYgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNC80Nl0gb3B0aW9uYWwgbGlic3RkYwotCi1nY2MtcnVudGltZSBidWlsZHMgbGlic3RkYysrIHNlcGFyYXRlbHkgZnJvbSBnY2MtY3Jvc3MtKi4gSXRzIGNvbmZpZ3VyZSB0ZXN0cyB1c2luZyBnKysKLXdpbGwgbm90IHJ1biBjb3JyZWN0bHkgc2luY2UgYnkgZGVmYXVsdCB0aGUgbGlua2VyIHdpbGwgdHJ5IHRvIGxpbmsgYWdhaW5zdCBsaWJzdGRjKysKLXdoaWNoIHNob3VsZG4ndCBleGlzdCB5ZXQuIFdlIG5lZWQgYW4gb3B0aW9uIHRvIGRpc2FibGUgLWxzdGRjKysKLW9wdGlvbiB3aGlsc3QgbGVhdmluZyAtbGMsIC1sZ2NjIGFuZCBvdGhlciBhdXRvbWF0aWMgbGlicmFyeSBkZXBlbmRlbmNpZXMgYWRkZWQgYnkgZ2NjCi1kcml2ZXIuIFRoaXMgcGF0Y2ggYWRkcyBzdWNoIGFuIG9wdGlvbiB3aGljaCBvbmx5IGRpc2FibGVzIHRoZSAtbHN0ZGMrKy4KLQotQSAic3RhbmRhcmQiIGdjYyBidWlsZCB1c2VzIHhnY2MgYW5kIGhlbmNlIGF2b2lkcyB0aGlzLiBXZSBzaG91bGQgYXNrIHVwc3RyZWFtIGhvdyB0bwotZG8gdGhpcyBvZmZpY2lhbGx5LCB0aGUgbGlrZWx5IGFuc3dlciBpcyBkb24ndCBidWlsZCBsaWJzdGRjKysgc2VwYXJhdGVseS4KLQotUlAgMjkvNi8xMAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gZ2NjL2MtZmFtaWx5L2Mub3B0ICB8ICA0ICsrKysKLSBnY2MvY3AvZysrc3BlYy5jICAgIHwgIDEgKwotIGdjYy9kb2MvaW52b2tlLnRleGkgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMSArCi0gNCBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLWluZGV4IDRmODY4NzYuLjY2MGRhNmMgMTAwNjQ0Ci0tLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKLSsrKyBiL2djYy9jLWZhbWlseS9jLm9wdAotQEAgLTE2NDcsNiArMTY0NywxMCBAQCBub3N0ZGluYysrCi0gQysrIE9iakMrKwotIERvIG5vdCBzZWFyY2ggc3RhbmRhcmQgc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3JpZXMgZm9yIEMrKy4KLSAKLStub3N0ZGxpYisrCi0rRHJpdmVyCi0rRG8gbm90IGxpbmsgc3RhbmRhcmQgQysrIHJ1bnRpbWUgbGlicmFyeQotKwotIG8KLSBDIE9iakMgQysrIE9iakMrKyBKb2luZWQgU2VwYXJhdGUKLSA7IERvY3VtZW50ZWQgaW4gY29tbW9uLm9wdAotZGlmZiAtLWdpdCBhL2djYy9jcC9nKytzcGVjLmMgYi9nY2MvY3AvZysrc3BlYy5jCi1pbmRleCAwM2NiZGUwLi4zNjQyNTQwIDEwMDY0NAotLS0tIGEvZ2NjL2NwL2crK3NwZWMuYwotKysrIGIvZ2NjL2NwL2crK3NwZWMuYwotQEAgLTEzNyw2ICsxMzcsNyBAQCBsYW5nX3NwZWNpZmljX2RyaXZlciAoc3RydWN0IGNsX2RlY29kZWRfb3B0aW9uICoqaW5fZGVjb2RlZF9vcHRpb25zLAotICAgICAgIHN3aXRjaCAoZGVjb2RlZF9vcHRpb25zW2ldLm9wdF9pbmRleCkKLSAJewotIAljYXNlIE9QVF9ub3N0ZGxpYjoKLSsJY2FzZSBPUFRfbm9zdGRsaWJfXzoKLSAJY2FzZSBPUFRfbm9kZWZhdWx0bGliczoKLSAJICBsaWJyYXJ5ID0gLTE7Ci0gCSAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKLWluZGV4IDhiYjQ5ZTcuLjg0ZDY4YWEgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCi0rKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1AQCAtMjA3LDYgKzIwNyw5IEBAIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCi0gLWZuby13ZWFrICAtbm9zdGRpbmMrKyBAZ29sCi0gLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIEBnb2wKLSAtZnZpc2liaWxpdHktbXMtY29tcGF0IEBnb2wKLSstZnZ0YWJsZS12ZXJpZnk9QHJ7W31zdGRAcnt8fXByZWluaXRAcnt8fW5vbmVAcntdfSBAZ29sCi0rLWZ2dHYtY291bnRzIC1mdnR2LWRlYnVnIEBnb2wKLSstbm9zdGRsaWIrKyBAZ29sCi0gLWZleHQtbnVtZXJpYy1saXRlcmFscyBAZ29sCi0gLVdhYmk9QHZhcntufSAgLVdhYmktdGFnICAtV2NvbnZlcnNpb24tbnVsbCAgLVdjdG9yLWR0b3ItcHJpdmFjeSBAZ29sCi0gLVdkZWxldGUtbm9uLXZpcnR1YWwtZHRvciAtV2xpdGVyYWwtc3VmZml4IC1XbXVsdGlwbGUtaW5oZXJpdGFuY2UgQGdvbAotQEAgLTQ3MCw3ICs0NzMsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCi0gLXMgIC1zdGF0aWMgLXN0YXRpYy1saWJnY2MgLXN0YXRpYy1saWJzdGRjKysgQGdvbAotIC1zdGF0aWMtbGliYXNhbiAtc3RhdGljLWxpYnRzYW4gLXN0YXRpYy1saWJsc2FuIC1zdGF0aWMtbGlidWJzYW4gQGdvbAotIC1zdGF0aWMtbGlibXB4IC1zdGF0aWMtbGlibXB4d3JhcHBlcnMgQGdvbAotLS1zaGFyZWQgLXNoYXJlZC1saWJnY2MgIC1zeW1ib2xpYyBAZ29sCi0rLXNoYXJlZCAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIC1ub3N0ZGxpYisrIEBnb2wKLSAtVCBAdmFye3NjcmlwdH0gIC1XbCxAdmFye29wdGlvbn0gIC1YbGlua2VyIEB2YXJ7b3B0aW9ufSBAZ29sCi0gLXUgQHZhcntzeW1ib2x9IC16IEB2YXJ7a2V5d29yZH19Ci0gCi1AQCAtMTA2MDEsNiArMTA2MDQsMzMgQEAgbGlicmFyeSBzdWJyb3V0aW5lcy4KLSBjb25zdHJ1Y3RvcnMgYXJlIGNhbGxlZDsgQHB4cmVme0NvbGxlY3QyLCxAY29kZXtjb2xsZWN0Mn0sIGdjY2ludCwKLSBHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LikKLSAKLStAaXRlbSAtbm9zdGRsaWIrKwotK0BvcGluZGV4IG5vc3RkbGliKysKLStEbyBub3QgdXNlIHRoZSBzdGFuZGFyZCBzeXN0ZW0gQysrIHJ1bnRpbWUgbGlicmFyaWVzIHdoZW4gbGlua2luZy4KLStPbmx5IHRoZSBsaWJyYXJpZXMgeW91IHNwZWNpZnkgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGxpbmtlci4KLSsKLStAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub3N0ZGxpYn0KLStAY2luZGV4IEBvcHRpb257LW5vc3RkbGlifSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCi0rQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vc3RkbGlifQotK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9Ci0rQGNpbmRleCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCi0rQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9Ci0rT25lIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMgYnlwYXNzZWQgYnkgQG9wdGlvbnstbm9zdGRsaWJ9IGFuZAotK0BvcHRpb257LW5vZGVmYXVsdGxpYnN9IGlzIEBmaWxle2xpYmdjYy5hfSwgYSBsaWJyYXJ5IG9mIGludGVybmFsIHN1YnJvdXRpbmVzCi0rd2hpY2ggR0NDIHVzZXMgdG8gb3ZlcmNvbWUgc2hvcnRjb21pbmdzIG9mIHBhcnRpY3VsYXIgbWFjaGluZXMsIG9yIHNwZWNpYWwKLStuZWVkcyBmb3Igc29tZSBsYW5ndWFnZXMuCi0rKEB4cmVme0ludGVyZmFjZSwsSW50ZXJmYWNpbmcgdG8gR0NDIE91dHB1dCxnY2NpbnQsR05VIENvbXBpbGVyCi0rQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LAotK2ZvciBtb3JlIGRpc2N1c3Npb24gb2YgQGZpbGV7bGliZ2NjLmF9LikKLStJbiBtb3N0IGNhc2VzLCB5b3UgbmVlZCBAZmlsZXtsaWJnY2MuYX0gZXZlbiB3aGVuIHlvdSB3YW50IHRvIGF2b2lkCi0rb3RoZXIgc3RhbmRhcmQgbGlicmFyaWVzLiAgSW4gb3RoZXIgd29yZHMsIHdoZW4geW91IHNwZWNpZnkgQG9wdGlvbnstbm9zdGRsaWJ9Ci0rb3IgQG9wdGlvbnstbm9kZWZhdWx0bGlic30geW91IHNob3VsZCB1c3VhbGx5IHNwZWNpZnkgQG9wdGlvbnstbGdjY30gYXMgd2VsbC4KLStUaGlzIGVuc3VyZXMgdGhhdCB5b3UgaGF2ZSBubyB1bnJlc29sdmVkIHJlZmVyZW5jZXMgdG8gaW50ZXJuYWwgR0NDCi0rbGlicmFyeSBzdWJyb3V0aW5lcy4KLSsoQW4gZXhhbXBsZSBvZiBzdWNoIGFuIGludGVybmFsIHN1YnJvdXRpbmUgaXMgQGNvZGV7X19tYWlufSwgdXNlZCB0byBlbnN1cmUgQysrCi0rY29uc3RydWN0b3JzIGFyZSBjYWxsZWQ7IEBweHJlZntDb2xsZWN0MiwsQGNvZGV7Y29sbGVjdDJ9LCBnY2NpbnQsCi0rR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfS4pCi0rCi0gQGl0ZW0gLXBpZQotIEBvcGluZGV4IHBpZQotIFByb2R1Y2UgYSBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlIG9uIHRhcmdldHMgdGhhdCBzdXBwb3J0IGl0LgotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggNGNmZWY3Zi4uZGEwYjQ4MiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTAyOCw2ICsxMDI4LDcgQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLwotICAgICAlKG1mbGliKSAiIFNUQUNLX1NQTElUX1NQRUMgIlwKLSAgICAgJXtmcHJvZmlsZS1hcmNzfGZwcm9maWxlLWdlbmVyYXRlKnxjb3ZlcmFnZTotbGdjb3Z9ICIgU0FOSVRJWkVSX1NQRUMgIiBcCi0gICAgICV7IW5vc3RkbGliOiV7IW5vZGVmYXVsdGxpYnM6JShsaW5rX3NzcCkgJShsaW5rX2djY19jX3NlcXVlbmNlKX19XAotKyAgICAleyFub3N0ZGxpYisrOn1cCi0gICAgICV7IW5vc3RkbGliOiV7IW5vc3RhcnRmaWxlczolRX19ICV7VCp9ICBcbiUocG9zdF9saW5rKSB9fX19fX0iCi0gI2VuZGlmCi0gCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmM3MzQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIDkzNDZmNjA0MmQ4ZjdmODVhNzVjYTJhZjE1ZjNiOGQyMzQ5ODUxNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNDoyMCArMDQwMAotU3ViamVjdDogW1BBVENIIDE1LzQ2XSBnY2M6IGRpc2FibGUgTUFTS19SRUxBWF9QSUNfQ0FMTFMgYml0Ci0KLVRoZSBuZXcgZmVhdHVyZSBhZGRlZCBhZnRlciA0LjMuMwotImh0dHA6Ly93d3cucHViYnMubmV0LzIwMDkwOS9nY2MvOTQwNDgtcGF0Y2gtYWRkLXN1cHBvcnQtZm9yLXJtaXBzamFsci5odG1sIgotd2lsbCBjYXVzZSBjYzFwbHVzIGVhdCB1cCBhbGwgdGhlIHN5c3RlbSBtZW1vcnkgd2hlbiBidWlsZCB3ZWJraXQtZ3RrLgotVGhlIGZ1bmN0aW9uIG1pcHNfZ2V0X3BpY19jYWxsX3N5bWJvbCBrZWVwcyBvbiByZWN1cnNpdmVseSBjYWxsaW5nIGl0c2VsZi4KLURpc2FibGUgdGhpcyBmZWF0dXJlIHRvIHdhbGsgYXNpZGUgdGhlIGJ1Zy4KLQotU2lnbmVkLW9mZi1ieTogRG9uZ3hpYW8gWHUgPGRvbmd4aWFvLnh1QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLS0tLQotIGdjYy9jb25maWd1cmUgICAgfCA3IC0tLS0tLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgNyAtLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA4ZjgzMTUyLi41ZTcyZjE3IDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTI3MDE4LDEzICsyNzAxOCw2IEBAICRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciBhbmQgbGlua2VyIGZvciBleHBsaWNpdCBKQUxSIHJlbG9jYXRpb24uLi4gIiA+JjY7Ci0gICAgICAgICBybSAtZiBjb25mdGVzdC4qCi0gICAgICAgZmkKLSAgICAgZmkKLS0gICAgaWYgdGVzdCAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MgPSB5ZXM7IHRoZW4KLS0gICAgICBpZiB0ZXN0IHgkdGFyZ2V0X2NwdV9kZWZhdWx0ID0geDsgdGhlbgotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfUkVMQVhfUElDX0NBTExTCi0tICAgICAgZWxzZQotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PSIoJHRhcmdldF9jcHVfZGVmYXVsdCl8TUFTS19SRUxBWF9QSUNfQ0FMTFMiCi0tICAgICAgZmkKLS0gICAgZmkKLSAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyIgPiY1Ci0gJGFzX2VjaG8gIiRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyIgPiY2OyB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDBmY2NhZWYuLmRkOGY2ZmEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNDUyMiwxMyArNDUyMiw2IEBAIHg6Ci0gICAgICAgICBybSAtZiBjb25mdGVzdC4qCi0gICAgICAgZmkKLSAgICAgZmkKLS0gICAgaWYgdGVzdCAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MgPSB5ZXM7IHRoZW4KLS0gICAgICBpZiB0ZXN0IHgkdGFyZ2V0X2NwdV9kZWZhdWx0ID0geDsgdGhlbgotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfUkVMQVhfUElDX0NBTExTCi0tICAgICAgZWxzZQotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PSIoJHRhcmdldF9jcHVfZGVmYXVsdCl8TUFTS19SRUxBWF9QSUNfQ0FMTFMiCi0tICAgICAgZmkKLS0gICAgZmkKLSAgICAgQUNfTVNHX1JFU1VMVCgkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MpCi0gCi0gICAgIEFDX0NBQ0hFX0NIRUNLKFtsaW5rZXIgZm9yIC5laF9mcmFtZSBwZXJzb25hbGl0eSByZWxheGF0aW9uXSwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE1NDg2NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gMTAzM2JjMmQ0ZWZjNWMzMDFiYjgyMmI2MDdhNjczZjViMTBjYzY5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE2OjI4ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvNDZdIENPTExFQ1RfR0NDX09QVElPTlMKLQotVGhpcyBwYXRjaCBhZGRzIC0tc3lzcm9vdCBpbnRvIENPTExFQ1RfR0NDX09QVElPTlMgd2hpY2ggaXMgdXNlZCB0bwotaW52b2tlIGNvbGxlY3QyLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9nY2MuYyB8IDkgKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBkYTBiNDgyLi43Y2ExMjlmIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC00NTkxLDYgKzQ1OTEsMTUgQEAgc2V0X2NvbGxlY3RfZ2NjX29wdGlvbnMgKHZvaWQpCi0gCQlzaXplb2YgKCJDT0xMRUNUX0dDQ19PUFRJT05TPSIpIC0gMSk7Ci0gCi0gICBmaXJzdF90aW1lID0gVFJVRTsKLSsjaWZkZWYgSEFWRV9MRF9TWVNST09UCi0rICBpZiAodGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQgJiYgdGFyZ2V0X3N5c3RlbV9yb290KQotKyAgICB7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJy0tc3lzcm9vdD0iLCBzaXplb2YoIictLXN5c3Jvb3Q9IiktMSk7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCB0YXJnZXRfc3lzdGVtX3Jvb3Qsc3RybGVuKHRhcmdldF9zeXN0ZW1fcm9vdCkpOwotKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIiciLCAxKTsKLSsgICAgICBmaXJzdF90aW1lID0gRkFMU0U7Ci0rICAgIH0KLSsjZW5kaWYKLSAgIGZvciAoaSA9IDA7IChpbnQpIGkgPCBuX3N3aXRjaGVzOyBpKyspCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFyICpjb25zdCAqYXJnczsKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZGJhYmQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLUZyb20gNjcxMjNhMzA2ODgwYWY5OTdhOTlhZTUxNDY3N2MyZGE0OTczYmQxYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE3OjI1ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvNDZdIFVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4KLSAke0J9Ci0KLVVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4gJHtCfSwgc28gdGhhdAotdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCi1nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotV2hpbGUgY29tcGlsaW5nIGdjYy1jcm9zc3Nkay1pbml0aWFsLXg4Nl82NCBvbiBzb21lIGhvc3QsIHRoZXJlIGlzCi1vY2Nhc2lvbmFsbHkgZmFpbHVyZSB0aGF0IHRlc3QgdGhlIGV4aXN0YW5jZSBvZiBkZWZhdWx0LmggZG9lc24ndAotd29yaywgdGhlIHJlYXNvbiBpcyB0bV9pbmNsdWRlX2xpc3Q9JyoqIGRlZmF1bHRzLmgnIHJhdGhlciB0aGFuCi10bV9pbmNsdWRlX2xpc3Q9JyoqIC4vZGVmYXVsdHMuaCcKLQotU28gd2UgYWRkIHRoZSB0ZXN0IGNvbmRpdGlvbiBmb3IgdGhpcyBzaXR1YXRpb24uCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQotIGdjYy9jb25maWd1cmUgICAgfCA0ICsrLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgNCArKy0tCi0gZ2NjL21rY29uZmlnLnNoICB8IDQgKystLQotIDQgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCA2YzVhZGMwLi45YTFkNDY2IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC01MTcsNyArNTE3LDcgQEAgVEFSR0VUX1NZU1RFTV9ST09UID0gQFRBUkdFVF9TWVNURU1fUk9PVEAKLSBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FID0gQFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkVACi0gCi0geG1ha2VfZmlsZT1AeG1ha2VfZmlsZUAKLS10bWFrZV9maWxlPUB0bWFrZV9maWxlQAotK3RtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVAIC4vdC1vZQotIFRNX0VORElBTl9DT05GSUc9QFRNX0VORElBTl9DT05GSUdACi0gVE1fTVVMVElMSUJfQ09ORklHPUBUTV9NVUxUSUxJQl9DT05GSUdACi0gVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUc9QFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHQAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA1ZTcyZjE3Li4zODliNmQ1IDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTEyMTMwLDggKzEyMTMwLDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotICAgICAgICA7OwotICAgICBkZWZhdWx0cy5oICkKLS0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKLS0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCi0gICAgICAgIDs7Ci0gICAgICogKQotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggZGQ4ZjZmYS4uOTFhYzgwMCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xODgzLDggKzE4ODMsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0gICAgICAgIDs7Ci0gICAgIGRlZmF1bHRzLmggKQotLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgotLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKLSAgICAgICAgOzsKLSAgICAgKiApCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgotZGlmZiAtLWdpdCBhL2djYy9ta2NvbmZpZy5zaCBiL2djYy9ta2NvbmZpZy5zaAotaW5kZXggNjdkZmFjNi4uYjczZTA4ZCAxMDA2NDQKLS0tLSBhL2djYy9ta2NvbmZpZy5zaAotKysrIGIvZ2NjL21rY29uZmlnLnNoCi1AQCAtNzcsNyArNzcsNyBAQCBpZiBbIC1uICIkSEVBREVSUyIgXTsgdGhlbgotICAgICBpZiBbICQjIC1nZSAxIF07IHRoZW4KLSAJZWNobyAnI2lmZGVmIElOX0dDQycgPj4gJHtvdXRwdXR9VAotIAlmb3IgZmlsZSBpbiAiJEAiOyBkbwotLQkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KLSsJICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4Ii4vZGVmYXVsdHMuaCIgLW8geCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCi0gCQlwb3N0cG9uZV9kZWZhdWx0c19oPSJ5ZXMiCi0gCSAgICBlbHNlCi0gCQllY2hvICIjIGluY2x1ZGUgXCIkZmlsZVwiIiA+PiAke291dHB1dH1UCi1AQCAtMTA5LDcgKzEwOSw3IEBAIGVzYWMKLSAKLSAjIElmIHdlIHBvc3Rwb25lZCBpbmNsdWRpbmcgZGVmYXVsdHMuaCwgYWRkIHRoZSAjaW5jbHVkZSBub3cuCi0gaWYgdGVzdCB4IiRwb3N0cG9uZV9kZWZhdWx0c19oIiA9IHgieWVzIjsgdGhlbgotLSAgICBlY2hvICIjIGluY2x1ZGUgXCJkZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSsgICAgZWNobyAiIyBpbmNsdWRlIFwiLi9kZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSBmaQotIAotICMgQWRkIG11bHRpcGxlIGluY2x1c2lvbiBwcm90ZWN0aW9uIGd1YXJkLCBwYXJ0IHR3by4KLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDNkODllLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gZTM2MGRjM2UwZjFlMGI5YjAwMWVmNzIyZmNmNjZmODEyMGEwM2RiYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIwOjAxICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTgvNDZdIGZvcnRyYW4gY3Jvc3MtY29tcGlsZSBoYWNrLgotCi0qIEZvcnRyYW4gd291bGQgaGF2ZSBzZWFyY2hlZCBmb3IgYXJtLWFuZ3N0cm9tLWdudWVhYmktZ2ZvcnRyYW4gYnV0IHdvdWxkIGhhdmUgdXNlZAotdXNlZCBnZm9ydGFuLiBGb3IgZ2NjXzQuMi4yLmJiIHdlIHdhbnQgdG8gdXNlIHRoZSBnZm9ydHJhbiBjb21waWxlciBmcm9tIG91ciBjcm9zcwotZGlyZWN0b3J5LgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gbGliZ2ZvcnRyYW4vY29uZmlndXJlICAgIHwgMiArLQotIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZSBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotaW5kZXggZjc0NmY2Zi4uYjRmMzI3OCAxMDA3NTUKLS0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi1AQCAtMTI3MzQsNyArMTI3MzQsNyBAQCBlc2FjCi0gCi0gIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKLSAjQUNfUFJPR19GQyhnZm9ydHJhbikKLS1GQz0iJEdGT1JUUkFOIgotKyNGQz0iJEdGT1JUUkFOIgotIGFjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQotIGFjX2NvbXBpbGU9JyRGQyAtYyAkRkNGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0gYWNfbGluaz0nJEZDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkRkNGTEFHUyAkTERGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi1pbmRleCA4ZjM3N2JiLi42NzcxMGI1IDEwMDY0NAotLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi0rKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLUBAIC0yNDAsNyArMjQwLDcgQEAgQUNfU1VCU1QoZW5hYmxlX3N0YXRpYykKLSAKLSAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQotICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQotLUZDPSIkR0ZPUlRSQU4iCi0rI0ZDPSIkR0ZPUlRSQU4iCi0gQUNfUFJPR19GQyhnZm9ydHJhbikKLSAKLSAjIGV4dHJhIExEIEZsYWdzIHdoaWNoIGFyZSByZXF1aXJlZCBmb3IgdGFyZ2V0cwotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxN2E1ZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE5LWNwcC1ob25vci1zeXNyb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSA5OGQ5YzBjMWI1NTUyMjk0YjIxMzBmNzMwNGJmYjUyMmRhMzIzNDQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjI6MDAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxOS80Nl0gY3BwOiBob25vciBzeXNyb290LgotCi1DdXJyZW50bHksIGlmIHRoZSBnY2MgdG9vbGNoYWluIGlzIHJlbG9jYXRlZCBhbmQgaW5zdGFsbGVkIGZyb20gc3N0YXRlLCB0aGVuIHlvdSB0cnkgYW5kIGNvbXBpbGUKLXByZXByb2Nlc3NlZCBzb3VyY2UgKC5pIG9yIC5paSBmaWxlcyksIHRoZSBjb21waWxlciB3aWxsIHRyeSBhbmQgYWNjZXNzIHRoZSBidWlsdGluIHN5c3Jvb3QgbG9jYXRpb24KLXJhdGhlciB0aGFuIHRoZSAtLXN5c3Jvb3Qgb3B0aW9uIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZGxpbmUuIElmIGFjY2VzcyB0byB0aGF0IGRpcmVjdG9yeSBpcwotcGVybWlzc2lvbiBkZW5pZWQgKHVucmVhZGFibGUpLCBnY2Mgd2lsbCBlcnJvci4KLQotVGhpcyBoYXBwZW5zIHdoZW4gY2NhY2hlIGlzIGluIHVzZSBkdWUgdG8gdGhlIGZhY3QgaXQgdXNlcyBwcmVwcm9jZXNzZWQgc291cmNlIGZpbGVzLgotCi1UaGUgZml4IGJlbG93IGFkZHMgJUkgdG8gdGhlIGNwcC1vdXRwdXQgc3BlYyBtYWNybyBzbyB0aGUgZGVmYXVsdCBzdWJzdGl0dXRpb25zIGZvciAtaXByZWZpeCwKLS1pc3lzdGVtLCAtaXN5c3Jvb3QgaGFwcGVuIGFuZCB0aGUgY29ycmVjdCBzeXNyb290IGlzIHVzZWQuCi0KLVtZT0NUTyAjMjA3NF0KLQotUlAgMjAxMi8wNC8xMwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jcC9sYW5nLXNwZWNzLmggfCAyICstCi0gZ2NjL2djYy5jICAgICAgICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jcC9sYW5nLXNwZWNzLmggYi9nY2MvY3AvbGFuZy1zcGVjcy5oCi1pbmRleCA5NzA3ZmFjLi5mZTQ4N2EyIDEwMDY0NAotLS0tIGEvZ2NjL2NwL2xhbmctc3BlY3MuaAotKysrIGIvZ2NjL2NwL2xhbmctc3BlY3MuaAotQEAgLTY0LDUgKzY0LDUgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAgIHsiLmlpIiwgIkBjKystY3BwLW91dHB1dCIsIDAsIDAsIDB9LAotICAgeyJAYysrLWNwcC1vdXRwdXQiLAotICAgICIleyFNOiV7IU1NOiV7IUU6XAotLSAgICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICUoY2MxX29wdGlvbnMpICUyXAotKyAgICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICUyXAotICAgICAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggN2NhMTI5Zi4uMDRmYTgxZCAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTMyOSw3ICsxMzI5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb21waWxlciBkZWZhdWx0X2NvbXBpbGVyc1tdID0KLSAJCQkJCSAgICVXe28qOi0tb3V0cHV0LXBjaD0lKn19JVZ9fX19fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5pIiwgIkBjcHAtb3V0cHV0IiwgMCwgMCwgMH0sCi0gICB7IkBjcHAtb3V0cHV0IiwKLS0gICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotKyAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5zIiwgIkBhc3NlbWJsZXIiLCAwLCAwLCAwfSwKLSAgIHsiQGFzc2VtYmxlciIsCi0gICAgIiV7IU06JXshTU06JXshRToleyFTOmFzICUoYXNtX2RlYnVnKSAlKGFzbV9vcHRpb25zKSAlaSAlQSB9fX19IiwgMCwgMCwgMH0sCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNjEyZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDFmMTU0NDdmYmNmNjUxNDI2MjdhZjhhOTY5NDc2MTUzNGRhOGQwZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMzowOCArMDQwMAotU3ViamVjdDogW1BBVENIIDIwLzQ2XSBNSVBTNjQ6IERlZmF1bHQgdG8gTjY0IEFCSQotCi1NSVBTNjQgZGVmYXVsdHMgdG8gbjMyIEFCSSwgdGhpcyBwYXRjaCBtYWtlcyBpdAotc28gdGhhdCBpdCBkZWZhdWx0cyB0byBONjQgQUJJCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQotLS0tCi0gZ2NjL2NvbmZpZy5nY2MgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKLWluZGV4IGY2NmU0OGMuLjljNmQxNTYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnLmdjYwotKysrIGIvZ2NjL2NvbmZpZy5nY2MKLUBAIC0yMDY1LDI5ICsyMDY1LDI5IEBAIG1pcHMqLSotbGludXgqKQkJCQkjIExpbnV4IE1JUFMsIGVpdGhlciBlbmRpYW4uCi0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczMyCi0gCQkJOzsKLSAJCW1pcHM2NGVsLXN0LWxpbnV4LWdudSkKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQl0bV9maWxlPSIke3RtX2ZpbGV9IG1pcHMvc3QuaCIKLSAJCQl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IG1pcHMvdC1zdCIKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwczY0b2N0ZW9uKi0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQl0bV9kZWZpbmVzPSIke3RtX2RlZmluZXN9IE1JUFNfQ1BVX1NUUklOR19ERUZBVUxUPVxcXCJvY3Rlb25cXFwiIgotIAkJCXRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1NPRlRfRkxPQVRfQUJJCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHNpc2E2NHI2Ki0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyNgotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzaXNhNjRyMiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjIKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwczY0Ki0qLWxpbnV4KiB8IG1pcHNpc2E2NCotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJZXNhYwotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Njc1Y2UzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLUZyb20gOWY3M2M4OTE4YjYzZTZhMWM5Yjc5Mzg0ZmFjNDExZDEwNTZlZWMxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI0OjUwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjEvNDZdIERlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCi0gcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIKLQotVGhpcyBwYXRjaCBkZWZpbmVzIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKLXJlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSIHdoaWNoIGNhbiBiZSBzZXQgaW4gZ2VuZXJhdGVkIGhlYWRlcnMKLVRoaXMgYnJlYWtzIHRoZSBhc3N1bXB0aW9uIG9mIGhhcmRjb2RlZCBtdWx0aWxpYiBpbiBnY2MKLUNoYW5nZSBpcyBvbmx5IGZvciB0aGUgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMgaW4gT0UgaW5jbHVkaW5nCi1TSCwgc3BhcmMsIGFscGhhIGZvciBwb3NzaWJsZSBmdXR1cmUgc3VwcG9ydCAoaWYgYW55KQotCi1SZW1vdmVzIHRoZSBkb19oZWFkZXJmaXggdGFzayBpbiBtZXRhZGF0YQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCi0tLS0KLSBnY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIHwgIDQgKystLQotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCAgfCAgNCArKy0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggICB8ICAyICstCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCAgICB8ICA2ICsrKy0tLQotIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICAgfCAgOCArKysrLS0tLQotIGdjYy9jb25maWcvbWlwcy9saW51eC5oICAgICAgfCAxMiArKysrKystLS0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggIHwgMTYgKysrKysrLS0tLS0tLS0tLQotIGdjYy9jb25maWcvc2gvbGludXguaCAgICAgICAgfCAgMiArLQotIGdjYy9jb25maWcvc3BhcmMvbGludXguaCAgICAgfCAgMiArLQotIGdjYy9jb25maWcvc3BhcmMvbGludXg2NC5oICAgfCAgNCArKy0tCi0gMTEgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAotaW5kZXggYTA3NjRkMy4uMDJmN2E3YyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLSsrKyBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLUBAIC0yMyw4ICsyMyw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBFWFRSQV9TUEVDUyBcCi0geyAiZWxmX2R5bmFtaWNfbGlua2VyIiwgRUxGX0RZTkFNSUNfTElOS0VSIH0sCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUgkiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCi0gI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSkgIiV7bWdsaWJjOiIgRyAiOzoiIFUgIn0iCi0gI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IGFjZTg0ODEuLjQwMTA0MzUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTY4LDggKzY4LDggQEAKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIGFuZCBUQVJHRVRfREVGQVVMVF9GTE9BVF9BQkkuICAqLwotIAotICN1bmRlZiAgR0xJQkNfRFlOQU1JQ19MSU5LRVIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgIi9saWIvbGQtbGludXguc28uMyIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgIi9saWIvbGQtbGludXgtYXJtaGYuc28uMyIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjMiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hcm1oZi5zby4zIgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotaW5kZXggYTk0YmQyZC4uMDIyMDYyOCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotQEAgLTYyLDcgKzYyLDcgQEAKLSAKLSAjZGVmaW5lIExJQkdDQ19TUEVDICIle21mbG9hdC1hYmk9c29mdCo6LWxmbG9hdH0gLWxnY2MiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2RlZmluZSBMSU5VWF9UQVJHRVRfTElOS19TUEVDICAiJXtoKn0gXAotICAgICV7c3RhdGljOi1Cc3RhdGljfSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotaW5kZXggZDM3YTg3NS4uZWRkZTU4NiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotQEAgLTIwLDcgKzIwLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04gImVsZl9pMzg2IgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmggYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi1pbmRleCA3M2QyMmUzLi5mNGI1NjE1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotQEAgLTI3LDkgKzI3LDkgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGZfeDg2XzY0IgotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82NCIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGlieDMyL2xkLWxpbnV4LXgzMi5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKLWluZGV4IDlhZWViOTQuLmIwNTU2NTIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbGludXguaAotQEAgLTgxLDEwICs4MSwxMCBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUiBtdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggdGFyZ2V0IHVzaW5nIHRoZW0sIG9yCi0gICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBhbmQgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBmb3IgdGFyZ2V0cwotICAgIHN1cHBvcnRpbmcgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBjb21waWxhdGlvbi4gICovCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWIvbGR4MzItdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkeDMyLXVDbGliYy5zby4wIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSICIvc3lzdGVtL2Jpbi9saW5rZXIiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMiAiL3N5c3RlbS9iaW4vbGlua2VyIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSNjQgIi9zeXN0ZW0vYmluL2xpbmtlcjY0IgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy9saW51eC5oIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLWluZGV4IGZhMjUzYjYuLmRhMDJjOGQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL21pcHMvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLUBAIC0yMiwyMCArMjIsMjAgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OTjMyICJlbGYzMiV7RUI6Yn0le0VMOmx9dHNtaXBuMzIiCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIle21uYW49MjAwODovbGliL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliL2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWI2NC9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjY0L2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKLS0gICIle21uYW49MjAwODovbGliMzIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIzMi9sZC5zby4xfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCi0gCi0gI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgotICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NAotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQ2NC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjB9IgotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKLS0gICIle21uYW49MjAwODovbGliMzIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliMzIvbGQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1tdXNsLW1pcHMle0VMOmVsfSV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotaW5kZXggZmVmYTBjNC4uNzE3MzkzOCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1AQCAtNDEyLDE2ICs0MTIsMTEgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKLSAjdW5kZWYJTElOS19PU19ERUZBVUxUX1NQRUMKLSAjZGVmaW5lIExJTktfT1NfREVGQVVMVF9TUEVDICIlKGxpbmtfb3NfbGludXgpIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiJShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYi9sZC5zby4xIgotLQotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQuc28uMSIKLSAjaWZkZWYgTElOVVg2NF9ERUZBVUxUX0FCSV9FTEZ2MgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tIiV7bWFiaT1lbGZ2MTolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xOyIgXAotLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMn0iCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjE6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjJ9IgotICNlbHNlCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLS0iJXttYWJpPWVsZnYyOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjI7IiBcCi0tIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xfSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MjoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjI7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMX0iCi0gI2VuZGlmCi0gCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAotQEAgLTQyOSw4ICs0MjQsOSBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOwotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjY0IFwKLSAgICIvbGliL2xkLW11c2wtcG93ZXJwYzY0IiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotIAotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYi9sZDY0LXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCi0rCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pIFwKLSAgICIle21nbGliYzoiIEcgIjs6JXttbXVzbDoiIE0gIjs6IiBVICJ9fSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NoL2xpbnV4LmggYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLWluZGV4IDJhMDM2YWMuLjUwZmI3MzUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvc2gvbGludXguaAotQEAgLTY0LDcgKzY0LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAgICIvbGliL2xkLW11c2wtc2giIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSBNVVNMX0RZTkFNSUNfTElOS0VSX0ZQIFwKLSAgICIle21mZHBpYzotZmRwaWN9LnNvLjEiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYCi0gI2RlZmluZSBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWCAiJXttZmRwaWM6X2ZkOzpfbGludXh9IgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXguaCBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAotaW5kZXggOWIzMjU3Ny4uN2JkNjZkZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCi1AQCAtODMsNyArODMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqaG9zdF9kZXRlY3RfbG9jYWxfY3B1IChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpOwotICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCi0gICAgZG9uZS4gICovCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmICBMSU5LX1NQRUMKLSAjZGVmaW5lIExJTktfU1BFQyAiLW0gZWxmMzJfc3BhcmMgJXtzaGFyZWQ6LXNoYXJlZH0gXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLWluZGV4IGExZWYzMjUuLjNiYWUzZDUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLUBAIC04NCw4ICs4NCw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKLSAgICBkb25lLiAgKi8KLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2lmZGVmIFNQQVJDX0JJX0FSQ0gKLSAKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYjZlNGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gYWNjZTUxNTdmNmIzYTFkYzlhMzY3NmI3MTE4YWM4ODdkYzU2OTNiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI2OjM3ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjIvNDZdIGdjYzogRml4IGFyZ3VtZW50IGxpc3QgdG9vIGxvbmcgZXJyb3IuCi0KLVRoZXJlIHdvdWxkIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIHRoZQotYnVpbGQgZGlyZWN0b3J5IGlzIGxvbmdlciB0aGFuIDIwMCwgdGhpcyBpcyBjYXVzZWQgYnk6Ci0KLWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWAKLQotVGhlIFBMVUdJTl9IRUFERVJTIGlzIHRvbyBsb25nIGJlZm9yZSBzb3J0LCBzbyB0aGUgImVjaG8iIGNhbid0IGhhbmRsZQotaXQsIHVzZSB0aGUgJChzb3J0IGxpc3QpIG9mIEdOVSBtYWtlIHdoaWNoIGNhbiBoYW5kbGUgdGhlIHRvbyBsb25nIGxpc3QKLXdvdWxkIGZpeCB0aGUgcHJvYmxlbSwgdGhlIGhlYWRlciB3b3VsZCBiZSBzaG9ydCBlbm91Z2ggYWZ0ZXIgc29ydGVkLgotVGhlICJ0ciAnICcgJ1wwMTInIiB3YXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdGhlIHNwYWNlIHRvICJcbiIsIHRoZQotJChzb3J0IGxpc3QpIGRvZXNuJ3QgbmVlZCB0aGlzLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL01ha2VmaWxlLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCA5YTFkNDY2Li40NTBjYjc5IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC0zMzQ5LDcgKzMzNDksNyBAQCBpbnN0YWxsLXBsdWdpbjogaW5zdGFsbGRpcnMgbGFuZy5pbnN0YWxsLXBsdWdpbiBzLWhlYWRlci12YXJzIGluc3RhbGwtZ2VuZ3R5cGUKLSAjIFdlIGtlZXAgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGZpbGVzIGluIGNvbmZpZyBvciBjLWZhbWlseSBhbmQgLmRlZgotICMgZmlsZXMuIEFsbCBvdGhlciBmaWxlcyBhcmUgZmxhdHRlbmVkIHRvIGEgc2luZ2xlIGRpcmVjdG9yeS4KLSAJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChwbHVnaW5faW5jbHVkZWRpcikKLS0JaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YDsgXAotKwloZWFkZXJzPSIkKHNvcnQgJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikpIjsgXAotIAlzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgOyBcCi0gCWZvciBmaWxlIGluICQkaGVhZGVyczsgZG8gXAotIAkgIGlmIFsgLWYgJCRmaWxlIF0gOyB0aGVuIFwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIzLURpc2FibGUtc2R0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIzLURpc2FibGUtc2R0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWZkODkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyMy1EaXNhYmxlLXNkdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIDY1NzNhZWMwMGFkYTM1YzQ4YzE4MzhjODQ5MWNlOGY3Nzk4YWU5OTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyODoxMCArMDQwMAotU3ViamVjdDogW1BBVENIIDIzLzQ2XSBEaXNhYmxlIHNkdC4KLQotV2UgZG9uJ3QgbGlzdCBkdHJhY2UgaW4gREVQRU5EUyBzbyB3ZSBzaG91bGRuJ3QgYmUgZGVwZW5kaW5nIG9uIHRoaXMgaGVhZGVyLgotSXQgbWF5IG9yIG1heSBub3QgZXhpc3QgZnJvbSBwcmVpdm91cyBidWlsZHMgdGhvdWdoLiBUbyBiZSBkZXRlcm1pbnN0aWMsIGRpc2FibGUKLXNkdC5oIHVzYWdlIGFsd2F5cy4gVGhpcyBhdm9pZHMgYnVpbGQgZmFpbHVyZXMgaWYgdGhlIGhlYWRlciBpcyByZW1vdmVkIGFmdGVyIGNvbmZpZ3VyZQotYnV0IGJlZm9yZSBsaWJnY2MgaXMgY29tcGlsZWQgZm9yIGV4YW1wbGUuCi0KLVJQIDIwMTIvOC83Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLURpc2FibGUgc2R0IGZvciBsaWJzdGRjKystdjMuCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2hhY2tdCi0tLS0KLSBnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWd1cmUgICAgfCAgNiArKystLS0KLSBsaWJzdGRjKystdjMvY29uZmlndXJlLmFjIHwgIDIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDM4OWI2ZDUuLjczYzI2NGQgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjg1MjgsMTIgKzI4NTI4LDEyIEBAIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQotIGhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0KLS0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLS0KLS1maQotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjCi0rIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMKLSsjZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3lzX3NkdF9oIiA+JjUKLSAkYXNfZWNobyAiJGhhdmVfc3lzX3NkdF9oIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggOTFhYzgwMC4uY2VjZjEyMSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC01NTE0LDE1ICs1NTE0LDE1IEBAIGZpCi0gQUNfU1VCU1QoW2VuYWJsZV9kZWZhdWx0X3NzcF0pCi0gCi0gIyBUZXN0IGZvciA8c3lzL3NkdC5oPiBvbiB0aGUgdGFyZ2V0LgotLUdDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKLS1BQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQotLWhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0gIEFDX0RFRklORShIQVZFX1NZU19TRFRfSCwgMSwKLS0gICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQotLWZpCi0tQUNfTVNHX1JFU1VMVCgkaGF2ZV9zeXNfc2R0X2gpCi0rI0dDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKLSsjQUNfTVNHX0NIRUNLSU5HKHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSkKLSsjaGF2ZV9zeXNfc2R0X2g9bm8KLSsjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0rIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCi0rIyAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAotKyMgICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQotKyNmaQotKyNBQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKLSAKLSAjIENoZWNrIGlmIFRGbW9kZSBsb25nIGRvdWJsZSBzaG91bGQgYmUgdXNlZCBieSBkZWZhdWx0IG9yIG5vdC4KLSAjIFNvbWUgZ2xpYmMgdGFyZ2V0cyB1c2VkIERGbW9kZSBsb25nIGRvdWJsZSwgYnV0IHdpdGggZ2xpYmMgMi40Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLWluZGV4IDhhNTQ4MWMuLjZhNDBlOTIgMTAwNzU1Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1AQCAtMjE3MzUsMTEgKzIxNzM1LDExIEBAIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLSBhY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLSAKLS0gIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCi0rIyAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KLSAKLS0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSsjJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCi0gCi0tICBmaQotKyMgIGZpCi0gICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsaWJjeHhfY3Zfc3lzX3NkdF9oIiA+JjUKLSAkYXNfZWNobyAiJGdsaWJjeHhfY3Zfc3lzX3NkdF9oIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlLmFjIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotaW5kZXggOWUxOWU5OS4uMDA3N2ZmZCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLUBAIC0yMzAsNyArMjMwLDcgQEAgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ0VTU09SU19PTkxOCi0gR0xJQkNYWF9DSEVDS19TQ19OUFJPQ19PTkxOCi0gR0xJQkNYWF9DSEVDS19QVEhSRUFEU19OVU1fUFJPQ0VTU09SU19OUAotIEdMSUJDWFhfQ0hFQ0tfU1lTQ1RMX0hXX05DUFUKLS1HTElCQ1hYX0NIRUNLX1NEVF9ICi0rI0dMSUJDWFhfQ0hFQ0tfU0RUX0gKLSAKLSAjIENoZWNrIGZvciBhdmFpbGFibGUgaGVhZGVycy4KLSBBQ19DSEVDS19IRUFERVJTKFtlbmRpYW4uaCBleGVjaW5mby5oIGZsb2F0LmggZnAuaCBpZWVlZnAuaCBpbnR0eXBlcy5oIFwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI0LWxpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjQtbGlidG9vbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY3M2I1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjQtbGlidG9vbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gNmMwYWE1YzI1Mzg4MjkyNDg1NDcxOTc3MTgwMzdmZjBiOTc4ODY3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI5OjExICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjQvNDZdIGxpYnRvb2wKLQotbGlic3RkYysrIGZyb20gZ2NjLXJ1bnRpbWUgZ2V0cyBjcmVhdGVkIHdpdGggLXJwYXRoPS91c3IvbGliLy4uL2xpYiBmb3IgcWVtdXg4Ni02NAotd2hlbiBydW5uaW5nIG9uIGFtIHg4Nl82NCBidWlsZCBob3N0LgotCi1UaGlzIHBhdGNoIHN0b3BzIHRoaXMgc3BlYWRpbmcgdG8gbGliZGlyIGluIHRoZSBsaWJzdGRjKysubGEgZmlsZSB3aXRoaW4gbGlidG9vbC4KLUFyZ3VhYmx5LCBpdCBzaG91bGRuJ3QgYmUgcGFzc2luZyB0aGlzIGludG8gbGlidG9vbCBpbiB0aGUgZmlyc3QgcGxhY2UgYnV0Ci1mb3Igbm93IHRoaXMgcmVzb2x2ZXMgdGhlIG5hc3RpZXN0IHByb2JsZW1zIHRoaXMgY2F1c2VzLgotCi1mdW5jX25vcm1hbF9hYnNwYXRoIHdvdWxkIHJlc29sdmUgYW4gZW1wdHkgcGF0aCB0byBgcHdkYCBzbyB3ZSBuZWVkCi10byBmaWx0ZXIgdGhlIHplcm8gY2FzZS4KLQotUlAgMjAxMi84LzI0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbHRtYWluLnNoIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA5NTAzZWM4Li4wMTIxZmJhIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC02MzU5LDYgKzYzNTksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZnVuY193YXJuaW5nICJpZ25vcmluZyBtdWx0aXBsZSBcYC1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIKLSAKLSAgICAgICBpbnN0YWxsX2xpYmRpcj0iJDEiCi0rICAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfbGliZGlyIjsgdGhlbgotKwlmdW5jX25vcm1hbF9hYnNwYXRoICIkaW5zdGFsbF9saWJkaXIiCi0rCWluc3RhbGxfbGliZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAotKyAgICAgIGZpCi0gCi0gICAgICAgb2xkbGlicz0KLSAgICAgICBpZiB0ZXN0IC16ICIkcnBhdGgiOyB0aGVuCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiN2VlNDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIGIxMjYzYTQ4NTUzY2U3NWY4YzNiZWQ0ZmUxMjEyMmFmNTc4NDU1NjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMDozMiArMDQwMAotU3ViamVjdDogW1BBVENIIDI1LzQ2XSBnY2M6IGFybXY0OiBwYXNzIGZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkuCi0KLVRoZSBMSU5LX1NQRUMgZm9yIGxpbnV4IGdldHMgb3ZlcndyaXR0ZW4gYnkgbGludXgtZWFiaS5oIHdoaWNoCi1tZWFucyB0aGUgdmFsdWUgb2YgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgZ2V0cyBsb3N0IGFuZCBhcyBhIHJlc3VsdAotdGhlIG9wdGlvbiBpcyBub3QgcGFzc2VkIHRvIGxpbmtlciB3aGVuIGNob3NpbmcgbWFyY2g9YXJtdjQKLVRoaXMgcGF0Y2ggcmVkZWZpbmVzIHRoaXMgaW4gbGludXgtZWFiaS5oIGFuZCByZWluc2VydHMgaXQKLWZvciBlYWJpIGRlZmF1bHRpbmcgdG9vbGNoYWlucy4KLQotV2UgbWlnaHQgd2FudCB0byBzZW5kIGl0IHVwc3RyZWFtLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCB8IDYgKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1pbmRleCA0MDEwNDM1Li5hYWVhMWM5IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLUBAIC05NCwxMCArOTQsMTQgQEAKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgXAotICAgIi9saWIvbGQtbXVzbC1hcm0iIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttZmxvYXQtYWJpPWhhcmQ6aGZ9LnNvLjEiCi0gCi0rLyogRm9yIGFybXY0IHdlIHBhc3MgLS1maXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJICovCi0rI3VuZGVmIFRBUkdFVF9GSVhfVjRCWF9TUEVDCi0rI2RlZmluZSBUQVJHRVRfRklYX1Y0QlhfU1BFQyAiJXttY3B1PWFybTh8bWNwdT1hcm04MTB8bWNwdT1zdHJvbmdhcm0qfG1hcmNoPWFybXY0OiAtLWZpeC12NGJ4fSIKLSsKLSAvKiBBdCB0aGlzIHBvaW50LCBicGFiaS5oIHdpbGwgaGF2ZSBjbG9iYmVyZWQgTElOS19TUEVDLiAgV2Ugd2FudCB0bwotICAgIHVzZSB0aGUgR05VL0xpbnV4IHZlcnNpb24sIG5vdCB0aGUgZ2VuZXJpYyBCUEFCSSB2ZXJzaW9uLiAgKi8KLSAjdW5kZWYgIExJTktfU1BFQwotLSNkZWZpbmUgTElOS19TUEVDIEVBQklfTElOS19TUEVDCQkJCQlcCi0rI2RlZmluZSBMSU5LX1NQRUMgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQlcCi0gICBMSU5VWF9PUl9BTkRST0lEX0xEIChMSU5VWF9UQVJHRVRfTElOS19TUEVDLAkJCQlcCi0gCQkgICAgICAgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAiICIgQU5EUk9JRF9MSU5LX1NQRUMpCi0gCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlMjViZTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotRnJvbSBiNWMzMDVmYzI1MTI5OWYyZTMyODQxMGIxOGNmYjU1Yzc1YjVmMDM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MzM6MDQgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyNi80Nl0gVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YKLSB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KLQotVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YgdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9Ci1zbyB0aGF0IHRoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAotZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA3M2MyNjRkLi4zNzcyNTNlIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTEyMTEwLDEwICsxMjExMCwyMCBAQCBkb25lCi0gdG1ha2VfZmlsZV89Ci0gZm9yIGYgaW4gJHt0bWFrZV9maWxlfQotIGRvCi0tCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotLQl0aGVuCi0tCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0tCWZpCi0rICBjYXNlICRmIGluCi0rICAgICovdC1saW51eDY0ICkKLSsgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAqICkKLSsgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICBlc2FjCi0gZG9uZQotIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgotIAotQEAgLTEyMTI0LDYgKzEyMTM0LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgotIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCi0gZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICBjYXNlICRmIGluCi0rICAgICovbGludXg2NC5oICkKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICA7OwotICAgICAuLyogKQotICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IGNlY2YxMjEuLjU0ZTc2MTkgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTg2MywxMCArMTg2MywyMCBAQCBkb25lCi0gdG1ha2VfZmlsZV89Ci0gZm9yIGYgaW4gJHt0bWFrZV9maWxlfQotIGRvCi0tCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotLQl0aGVuCi0tCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0tCWZpCi0rICBjYXNlICRmIGluCi0rICAgICovdC1saW51eDY0ICkKLSsgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAqICkKLSsgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICBlc2FjCi0gZG9uZQotIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgotIAotQEAgLTE4NzcsNiArMTg4NywxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKLSB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgotIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgY2FzZSAkZiBpbgotKyAgICAqL2xpbnV4NjQuaCApCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgOzsKLSAgICAgLi8qICkKLSAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWJiZWJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSBlYjYxNzhiN2ZiNDY2YWU0MjljNTYzODBjNmRiYzU2NGExNmQ5MDBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6Mzk6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyNy80Nl0gQXZvaWQgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEKLSBob3N0IHBhdGgKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCAwMTIxZmJhLi41MmJkYmRiIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC01NjI4LDYgKzU2MjgsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgIGVsc2UKLSsJICAgICMgSW5zdGVhZCBvZiB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYSBob3N0IHBhdGgsCi0rCSAgICAjIHVzZSB0aGUgcGF0aCB0aGUgLmxhIGlzIGNvbnRhaW5lZCBpbi4KLSsJICAgIGxpYmRpcj0iJGFic19sYWRpciIKLSAJICAgIGRpcj0iJGxpYmRpciIKLSAJICAgIGFic2Rpcj0iJGxpYmRpciIKLSAJICBmaQotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjgtZXhwb3J0LUNQUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyOC1leHBvcnQtQ1BQLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjEyNTM5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyOC1leHBvcnQtQ1BQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSA2MTcxODRmMzVlOTc5MzRkOWU2MjY4ZTcxMzc4NTc0ZTJiNzc2YzJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6NDA6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyOC80Nl0gZXhwb3J0IENQUAotCi1UaGUgT0UgZW52aXJvbm1lbnQgc2V0cyBhbmQgZXhwb3J0cyBDUFAgYXMgYmVpbmcgdGhlIHRhcmdldCBnY2MuIFdoZW4KLWJ1aWxkaW5nIGdjYy1jcm9zcy1jYW5hZGlhbiBmb3IgYSBtaW5ndyB0YXJnZXR0ZWQgc2RrLCB0aGUgZm9sbG93aW5nIGNhbiBiZSBmb3VuZAotaW4gYnVpbGQueDg2XzY0LXBva3lzZGstbWluZ3czMi5pNTg2LXBva3ktbGludXgvYnVpbGQteDg2XzY0LWxpbnV4L2xpYmliZXJ0eS9jb25maWcubG9nOgotCi1jb25maWd1cmU6MzY0MTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMKLWNvbmZpZ3VyZTozNjY2OiBnY2MgIC1jIC1pc3lzdGVtL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUgLU8yIC1waXBlICBjb25mdGVzdC5jID4mNQotY29uZmlndXJlOjM2NjY6ICQ/ID0gMAotY29uZmlndXJlOjM2OTg6IHJlc3VsdDogbm8KLWNvbmZpZ3VyZTozNzg2OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvcgotY29uZmlndXJlOjM4NTY6IHJlc3VsdDogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMgotY29uZmlndXJlOjM4NzY6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIgY29uZnRlc3QuYwotY29uZmlndXJlOjM4NzY6ICQ/ID0gMAotCi1Ob3RlIHRoaXMgaXMgYSAqYnVpbGQqIHRhcmdldCAoaW4gYnVpbGQteDg2XzY0LWxpbnV4KSBzbyBpdCBzaG91bGQgYmUKLXVzaW5nIHRoZSBob3N0ICJnY2MiLCBub3QgeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MuIFNpbmNlIHRoZSBtaW5ndzMyCi1oZWFkZXJzIGFyZSB2ZXJ5IGRpZmZlcmVudCwgdXNpbmcgdGhlIHdyb25nIGNwcCBpcyBhIHJlYWwgcHJvYmxlbS4gSXQgaXMgbGVha2luZwotaW50byBjb25maWd1cmUgdGhyb3VnaCB0aGUgQ1BQIHZhcmlhYmxlLiBVbHRpbWF0ZWx5IHRoaXMgbGVhZHMgdG8gYnVpbGQKLWZhaWx1cmVzIHJlbGF0ZWQgdG8gbm90IGJlaW5nIGFibGUgdG8gaW5jbHVkZSBhIHByb2Nlc3MuaCBmaWxlIGZvciBwZW0tdW5peC5jLgotCi1UaGUgZml4IGlzIHRvIGVuc3VyZSB3ZSBleHBvcnQgYSBzYW5lIENQUCB2YWx1ZSBpbnRvIHRoZSBidWlsZAotZW52aXJvbm1lbnQgd2hlbiB1c2luZyBidWlsZCB0YXJnZXRzLiBXZSBjb3VsZCBkZWZpbmUgYSBDUFBfRk9SX0JVSUxEIHZhbHVlIHdoaWNoIG1heSBiZQotdGhlIHZlcnNpb24gd2hpY2ggbmVlZHMgdG8gYmUgdXBzdHJlYW1lZCBidXQgZm9yIG5vdywgdGhpcyBmaXggaXMgZ29vZCBlbm91Z2ggdG8KLWF2b2lkIHRoZSBwcm9ibGVtLgotCi1SUCAyMi8wOC8yMDEzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDE1MjJlMzkuLmJlYjliOWEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC0xNDksNiArMTQ5LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQVI9IiQoQVJfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUjsgXAotIAlBUz0iJChBU19GT1JfQlVJTEQpIjsgZXhwb3J0IEFTOyBcCi0gCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjktRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyOS1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2I5YzBkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyOS1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBlMTQwNzAwOTc2ZTNiN2ViNDI1MGIxZmZkZTliYzE2NDk0NDU2OTAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZHJ1LUNlemFyIFNhcmRhbiA8YWxleGFuZHJ1LnNhcmRhbkBmcmVlc2NhbGUuY29tPgotRGF0ZTogV2VkLCA1IEZlYiAyMDE0IDE2OjUyOjMxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMjkvNDZdIEVuYWJsZSBTUEUgJiBBbHRpVmVjIGdlbmVyYXRpb24gb24gcG93ZXBjKmxpbnV4IHRhcmdldAotCi1XaGVuIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4LCB0aGUgcmVzdWx0aW5nIEdDQyB3aWxsCi1ub3QgYmUgYWJsZSB0byBnZW5lcmF0ZSBjb2RlIGZvciBTUEUgdGFyZ2V0cyAoZTUwMHYxL3YyKS4KLUdDQyBjb25maWd1cmVkIHdpdGggLS10YXJnZXQ9cG93ZXJwYy1saW51eHNwZSB3aWxsIG5vdCBiZSBhYmxlIHRvCi1nZW5lcmF0ZSBBbHRpVmVjIGluc3RydWN0aW9ucyAoZm9yIGU2NTAwKS4KLVRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmZpZ3VyZWQgZmlsZSBzdWNoIHRoYXQgU1BFIG9yIEFsdGlWZWMgY29kZQotY2FuIGJlIGdlbmVyYXRlZCB3aGVuIGdjYyBpcyBjb25maWd1cmVkIHdpdGggLS10YXJnZXQ9cG93ZXJwYy1saW51eC4KLVRoZSBBQkkgYW5kIHNwZWNpZmZpYyBpbnN0cnVjdGlvbnMgY2FuIGJlIHNlbGVjdGVkIHRocm91Z2ggdGhlCi0iLW1hYmk9c3BlIG9yIC1tYWJpPWFsdGl2ZWMiIGFuZCB0aGUgIi1tc3BlIG9yIC1tYWx0aXZlYyIgcGFyYW1ldGVycy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcnUtQ2V6YXIgU2FyZGFuIDxhbGV4YW5kcnUuc2FyZGFuQGZyZWVzY2FsZS5jb20+Ci0tLS0KLSBnY2MvY29uZmlnLmdjYyAgICAgICAgICAgICAgIHwgOSArKysrKysrKy0KLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oIHwgMyAtLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKLWluZGV4IDljNmQxNTYuLjE4Y2ZmNWEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnLmdjYwotKysrIGIvZ2NjL2NvbmZpZy5nY2MKLUBAIC0yMzkyLDcgKzIzOTIsMTQgQEAgcG93ZXJwYy0qLXJ0ZW1zKikKLSAJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSByczYwMDAvdC1mcHJ1bGVzIHJzNjAwMC90LXJ0ZW1zIHJzNjAwMC90LXBwY2NvbW0iCi0gCTs7Ci0gcG93ZXJwYyotKi1saW51eCopCi0tCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIgotKwljYXNlICR7dGFyZ2V0fSBpbgotKwkgICAgcG93ZXJwYyotKi1saW51eCpzcGUqIHwgcG93ZXJwYyotKi1saW51eCphbHRpdmVjKikKLSsJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIgotKwkJOzsKLSsJICAgICopCi0rCQl0bV9maWxlPSIke3RtX2ZpbGV9IGRieGVsZi5oIGVsZm9zLmggZ251LXVzZXIuaCBmcmVlYnNkLXNwZWMuaCByczYwMDAvc3lzdjQuaCByczYwMDAvbGludXhhbHRpdmVjLmggcnM2MDAwL2xpbnV4c3BlLmggcnM2MDAwL2U1MDAuaCIKLSsJCTs7Ci0rCWVzYWMKLSAJZXh0cmFfb3B0aW9ucz0iJHtleHRyYV9vcHRpb25zfSByczYwMDAvc3lzdjQub3B0IgotIAl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IHJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtcHBjY29tbSIKLSAJZXh0cmFfb2Jqcz0iJGV4dHJhX29ianMgcnM2MDAwLWxpbnV4Lm8iCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKLWluZGV4IDM1NjIzY2QuLmY3NGUwMGQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oCi1AQCAtMjcsNiArMjcsMyBAQAotICN1bmRlZglUQVJHRVRfREVGQVVMVAotICNkZWZpbmUgVEFSR0VUX0RFRkFVTFQgTUFTS19TVFJJQ1RfQUxJR04KLSAjZW5kaWYKLS0KLS0jdW5kZWYgIEFTTV9ERUZBVUxUX1NQRUMKLS0jZGVmaW5lCUFTTV9ERUZBVUxUX1NQRUMgIi1tcHBjIC1tc3BlIC1tZTUwMCIKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDMwLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzAtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA5ZDAxOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzAtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gMGRkY2I5NWE4NjgzMDc2NmZkMDIxMjJmMTkzODRmYzkyOWIzNzdjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDEwOjIxOjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzAvNDZdIERpc2FibGUgdGhlIE1VTFRJTElCX09TRElSTkFNRVMgYW5kIG90aGVyIG11bHRpbGliCi0gb3B0aW9ucy4KLQotSGFyZCBjb2RpbmcgdGhlIE1VTFRJTElCX09TRElSTkFNRVMgd2l0aCAuLi9saWI2NCBpcyBjYXVzaW5nIHByb2JsZW1zIG9uCi1zeXN0ZW1zIHdoZXJlIHRoZSBsaWJkaXIgaXMgTk9UIHNldCB0byAvbGliNjQuICBUaGlzIGlzIGFsbG93ZWQgYnkgdGhlCi1BQkksIGFzCi1sb25nIGFzIHRoZSBkeW5hbWljIGxvYWRlciBpcyBwcmVzZW50IGluIC9saWIuCi0KLVdlIHNpbXBseSB3YW50IHRvIHVzZSB0aGUgZGVmYXVsdCBydWxlcyBpbiBnY2MgdG8gZmluZCBhbmQgY29uZmlndXJlIHRoZQotbm9ybWFsIGxpYmRpci4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLWluZGV4IDFjZmU5ZjMuLmQ2ODhhYzkgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci1AQCAtMjEsOCArMjEsOCBAQAotIExJQjFBU01TUkMgICA9IGFhcmNoNjQvbGliMWZ1bmNzLmFzbQotIExJQjFBU01GVU5DUyA9IF9hYXJjaDY0X3N5bmNfY2FjaGVfcmFuZ2UKLSAKLS1BQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotLU1VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotKyNBQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQotKyNNVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSsjTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0gCi0tTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyCi0rI01VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMgotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzEtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzEtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMWNkMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDMxLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotRnJvbSBmYzY2MjE0MzVhNjRhOWQ2OWFhMjUxYjcwMzYxZGE5NGNmMmRiNmJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjU6MTEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzMS80Nl0gRW5zdXJlIHRhcmdldCBnY2MgaGVhZGVycyBjYW4gYmUgaW5jbHVkZWQKLQotVGhlcmUgYXJlIGEgZmV3IGhlYWRlcnMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgdGhlIE9wZW5FbWJlZGRlZAotZ2NjLXJ1bnRpbWUgdGFyZ2V0IChvbXAuaCwgc3NwLyouaCkuIEJlaW5nIGluc3RhbGxlZCBmcm9tIGEgcmVjaXBlCi1idWlsdCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHRoZXNlIGFyZSB3aXRoaW4gdGhlIHRhcmdldAotc3lzcm9vdCBhbmQgbm90IGNyb3NzL25hdGl2ZXNkazsgdGh1cyB0aGV5IHdlcmVuJ3QgYWJsZSB0byBiZQotZm91bmQgYnkgZ2NjIHdpdGggdGhlIGV4aXN0aW5nIHNlYXJjaCBwYXRocy4gQWRkIHN1cHBvcnQgZm9yCi1waWNraW5nIHVwIHRoZXNlIGhlYWRlcnMgdW5kZXIgdGhlIHN5c3Jvb3Qgc3VwcGxpZWQgb24gdGhlIGdjYwotY29tbWFuZCBsaW5lIGluIG9yZGVyIHRvIHJlc29sdmUgdGhpcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9NYWtlZmlsZS5pbiAgfCAyICsrCi0gZ2NjL2NwcGRlZmF1bHQuYyB8IDQgKysrKwotIGdjYy9kZWZhdWx0cy5oICAgfCA5ICsrKysrKysrKwotIGdjYy9nY2MuYyAgICAgICAgfCA3IC0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDQ1MGNiNzkuLmNjNzU1MzYgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTU5Myw2ICs1OTMsNyBAQCBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACi0gCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGxpYnJhcmllcyBldGMuCi0gbGlic3ViZGlyID0gJChsaWJkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKLStsaWJzdWJkaXJfdGFyZ2V0ID0gZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKQotICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBleGVjdXRhYmxlcwotIGxpYmV4ZWNzdWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKLSAjIERpcmVjdG9yeSBpbiB3aGljaCBhbGwgcGx1Z2luIHJlc291cmNlcyBhcmUgaW5zdGFsbGVkCi1AQCAtMjY4OCw2ICsyNjg5LDcgQEAgQ0ZMQUdTLWludGwubyArPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiCi0gCi0gUFJFUFJPQ0VTU09SX0RFRklORVMgPSBcCi0gICAtREdDQ19JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlXCIgXAotKyAgLURHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUPVwiJChsaWJzdWJkaXJfdGFyZ2V0KS9pbmNsdWRlXCIgXAotICAgLURGSVhFRF9JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlLWZpeGVkXCIgXAotICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVI9XCIkKGdjY19neHhfaW5jbHVkZV9kaXIpXCIgXAotICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1Q9JChnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290KSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuYyBiL2djYy9jcHBkZWZhdWx0LmMKLWluZGV4IDU0YWFmMDYuLjdiNGRkNTEgMTAwNjQ0Ci0tLS0gYS9nY2MvY3BwZGVmYXVsdC5jCi0rKysgYi9nY2MvY3BwZGVmYXVsdC5jCi1AQCAtNTksNiArNTksMTAgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KLSAgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0rI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKLSsgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KLSsgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSsjZW5kaWYKLSAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLSAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KLSAgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAotZGlmZiAtLWdpdCBhL2djYy9kZWZhdWx0cy5oIGIvZ2NjL2RlZmF1bHRzLmgKLWluZGV4IDNlMTgzMzguLjBmMzE3ZjIgMTAwNjQ0Ci0tLS0gYS9nY2MvZGVmYXVsdHMuaAotKysrIGIvZ2NjL2RlZmF1bHRzLmgKLUBAIC0xNDkyLDQgKzE0OTIsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gI2RlZmluZSBEV0FSRl9HTkFUX0VOQ09ESU5HU19ERUZBVUxUIERXQVJGX0dOQVRfRU5DT0RJTkdTX0dEQgotICNlbmRpZgotIAotKy8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLwotKwotKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCi0rI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgotKyNlbmRpZgotKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCi0rI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKLSsjZW5kaWYKLSsKLSAjZW5kaWYgIC8qICEgR0NDX0RFRkFVTFRTX0ggKi8KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDA0ZmE4MWQuLjk3NTBjYzIgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTE0NTAsMTMgKzE0NTAsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OwotIAotIC8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLwotIAotLSNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCi0tI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgotLSNlbmRpZgotLSNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCi0tI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKLS0jZW5kaWYKLS0KLSAjaWZkZWYgQ1JPU1NfRElSRUNUT1JZX1NUUlVDVFVSRSAgLyogRG9uJ3QgdXNlIHRoZXNlIHByZWZpeGVzIGZvciBhIGNyb3NzIGNvbXBpbGVyLiAgKi8KLSAjdW5kZWYgTURfRVhFQ19QUkVGSVgKLSAjdW5kZWYgTURfU1RBUlRGSUxFX1BSRUZJWAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzItZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMi1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGIwMDFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMi1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSBmZjkzOWM1MDYzZDhmOGQ0NDRiZGIyNTY1MWEwYTQ4ZTYwOGVmYWE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTE6MTc6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzMi80Nl0gZ2NjIDQuOCsgd29uJ3QgYnVpbGQgd2l0aCAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZwotCi1zaW5jZSB0aGUgKi5QcG8gZmlsZXMgZG9uJ3QgZ2V0IGNyZWF0ZWQgdW5sZXNzIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgaXMgdHJ1ZS4KLQotVGhpcyBwYXRjaCBlbnN1cmVzIHdlIG9ubHkgdXNlIHRob3NlIGNvbXBpbGVyIG9wdGlvbnMgd2hlbiBpdHMgZW5hYmxlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotKFByb2JsZW0gd2FzIGFscmVhZHkgcmVwb3J0ZWQgdXBzdHJlYW0sIGF0dGFjaGVkIHRoaXMgcGF0Y2ggdGhlcmUKLWh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NTU5MzApCi0KLVJQCi0yMDEyLzA5LzIyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJhdG9taWMvTWFrZWZpbGUuYW0gfCAzICsrLQotIGxpYmF0b21pYy9NYWtlZmlsZS5pbiB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdG9taWMvTWFrZWZpbGUuYW0gYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KLWluZGV4IGIzNTEyNDQuLjM5OWNlMTggMTAwNjQ0Ci0tLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotQEAgLTEwMSw3ICsxMDEsOCBAQCBQQVRfUwkJPSAkKHdvcmQgMywkKFBBVF9TUExJVCkpCi0gSUZVTkNfREVGCT0gLURJRlVOQ19BTFQ9JChQQVRfUykKLSBJRlVOQ19PUFQJPSAkKHdvcmQgJChQQVRfUyksJChJRlVOQ19PUFRJT05TKSkKLSAKLS1NX0RFUFMJCT0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfVFJVRUBNX0RFUFMJCT0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfRkFMU0VATV9ERVBTCQk9Ci0gTV9TSVpFCQk9IC1ETj0kKFBBVF9OKQotIE1fSUZVTkMJCT0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQotIE1fRklMRQkJPSAkKFBBVF9CQVNFKV9uLmMKLWRpZmYgLS1naXQgYS9saWJhdG9taWMvTWFrZWZpbGUuaW4gYi9saWJhdG9taWMvTWFrZWZpbGUuaW4KLWluZGV4IGEwODNkODcuLmE5MmNmY2UgMTAwNjQ0Ci0tLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgotQEAgLTMzMCw3ICszMzAsOCBAQCBQQVRfTiA9ICQod29yZCAyLCQoUEFUX1NQTElUKSkKLSBQQVRfUyA9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKLSBJRlVOQ19ERUYgPSAtRElGVU5DX0FMVD0kKFBBVF9TKQotIElGVU5DX09QVCA9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQotLU1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX1RSVUVATV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfRkFMU0VATV9ERVBTID0KLSBNX1NJWkUgPSAtRE49JChQQVRfTikKLSBNX0lGVU5DID0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQotIE1fRklMRSA9ICQoUEFUX0JBU0UpX24uYwotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzMtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMy1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDI1ZDcxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMy1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSA1MDkyZjUzODlkMDJlNzhjZDU5NjkwY2YzZmNhMjRiNTZhOTdhZmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMyBNYXIgMjAxNSAwODoyMToxOSArMDAwMAotU3ViamVjdDogW1BBVENIIDMzLzQ2XSBEb24ndCBzZWFyY2ggaG9zdCBkaXJlY3RvcnkgZHVyaW5nICJyZWxpbmsiIGlmCi0gJGluc3RfcHJlZml4IGlzIHByb3ZpZGVkCi0KLWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9saWJ0b29sLXBhdGNoZXMvMjAxMS0wMS9tc2cwMDAyNi5odG1sCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsdG1haW4uc2ggfCA1ICsrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggNTJiZGJkYi4uODJiY2VjMyAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtNjAwNCwxMiArNjAwNCwxMyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICBmaQotIAkgICAgZWxzZQotIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgotKwkgICAgICAjIERlZmF1bHQgaWYgJGxpYmRpciBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHByZWZpeDoKLSAJICAgICAgYWRkX2Rpcj0iLUwkbGliZGlyIgotLQkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCi0rCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCi0gCQljYXNlICRsaWJkaXIgaW4KLSAJCSAgW1xcL10qKQotLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0rCQkgICAgYWRkX2Rpcj0iLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSAJCSAgICA7OwotIAkJZXNhYwotIAkgICAgICBmaQotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzQtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNC1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjJhODU1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNC1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSAxZmFhNmY2OWY5M2JiOTVhZjJiMmIyYmQyNGUxODFiNTBmYjViMzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTU6MjcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzNC80Nl0gVXNlIFNZU1RFTUxJQlNfRElSIHJlcGxhY2VtZW50IGluc3RlYWQgb2YgaGFyZGNvZGluZwotIGJhc2VfbGliZGlyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgQ29uZmlndXJhdGlvbl0KLQotIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotaW5kZXggNWZjYWE1OS4uODU4OGFjMCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2lmbmRlZiBHQ0NfQUFSQ0g2NF9MSU5VWF9ICi0gI2RlZmluZSBHQ0NfQUFSQ0g2NF9MSU5VWF9ICi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM1LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNS1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZmM0NzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM1LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gMzc2ODQ2OGMxYTZjYzE3MGZmZjg4YzAzYjgwOGM5NzVhYzY1MzgxMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE4OjM5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzUvNDZdIGFhcmNoNjQ6IEFkZCBzdXBwb3J0IGZvciBtdXNsIGxkc28KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBDb25maWd1cmF0aW9uXQotCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1pbmRleCA4NTg4YWMwLi45NDZiM2NhIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotQEAgLTI0LDcgKzI0LDcgQEAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKLS0jZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotIAotICN1bmRlZiAgQVNBTl9DQzFfU1BFQwotICNkZWZpbmUgQVNBTl9DQzFfU1BFQyAiJXslOnNhbml0aXplKGFkZHJlc3MpOi1mdW53aW5kLXRhYmxlc30iCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNi1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzYtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODlhODg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNi1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGY0ZDNjOGU5NzBkNDJhNDNjZDNkMmY3NTFlMTMzMjRlZmE5MzZmZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgNSBKdWwgMjAxNSAyMDoyNToxOCAtMDcwMAotU3ViamVjdDogW1BBVENIIDM2LzQ2XSBsaWJjYzE6IGZpeCBsaWJjYzEncyBpbnN0YWxsIHBhdGggYW5kIHJwYXRoCi0KLSogSW5zdGFsbCBsaWJjYzEuc28gYW5kIGxpYmNjMXBsdWdpbi5zbyBpbnRvCi0gICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbiksIGFzIHdoYXQgd2UKLSAgaGFkIGRvbmUgdG8gbHRvLXBsdWdpbi4KLSogRml4IGJhZCBSUEFUSCBpdXNzdWU6Ci0gIGdjYy01LjIuMDogcGFja2FnZSBnY2MtcGx1Z2lucyBjb250YWlucyBiYWQgUlBBVEggL3BhdGh0L3RvL3RtcC9zeXNyb290cy9xZW11eDg2LTY0L3Vzci9saWI2NC8uLi9saWI2NCBpbiBmaWxlCi0gL3BhdGgvdG8vZ2NjLzUuMi4wLXIwL3BhY2thZ2VzLXNwbGl0L2djYy1wbHVnaW5zL3Vzci9saWI2NC9nY2MveDg2XzY0LXBva3ktbGludXgvNS4yLjAvcGx1Z2luL2xpYmNjMXBsdWdpbi5zby4wLjAuMAotIFtycGF0aHNdCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJjYzEvTWFrZWZpbGUuYW0gfCA0ICsrLS0KLSBsaWJjYzEvTWFrZWZpbGUuaW4gfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5hbSBiL2xpYmNjMS9NYWtlZmlsZS5hbQotaW5kZXggYjQwODIwYi4uMzI5MzBjNSAxMDA2NDQKLS0tLSBhL2xpYmNjMS9NYWtlZmlsZS5hbQotKysrIGIvbGliY2MxL01ha2VmaWxlLmFtCi1AQCAtMzUsOCArMzUsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCi0gCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQotIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKLSAKLS1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCi0tY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQotK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKLStwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKLSAKLSBpZiBFTkFCTEVfUExVR0lOCi0gcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhCi1kaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmluIGIvbGliY2MxL01ha2VmaWxlLmluCi1pbmRleCA3OWQzOWQzLi4yMjdlYzIyIDEwMDY0NAotLS0tIGEvbGliY2MxL01ha2VmaWxlLmluCi0rKysgYi9saWJjYzEvTWFrZWZpbGUuaW4KLUBAIC0yOTEsOCArMjkxLDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAotIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKLSAKLSBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCi0tcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgotLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKLStjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCi0rcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCi0gQEVOQUJMRV9QTFVHSU5fVFJVRUBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEKLSBARU5BQkxFX1BMVUdJTl9UUlVFQGNjMWxpYl9MVExJQlJBUklFUyA9IGxpYmNjMS5sYQotIEJVSUxUX1NPVVJDRVMgPSBjb21waWxlci1uYW1lLmgKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM3LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzctaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTVlZmNiMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzctaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi1Gcm9tIDE0NzViOTQxZDdhOWM5ODc0YjBmYjA1NThkMDE4MDU5NDU0NjczMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjM5OjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzcvNDZdIGhhbmRsZSBzeXNyb290IHN1cHBvcnQgZm9yIG5hdGl2ZXNkay1nY2MKLQotQmVpbmcgYWJsZSB0byBidWlsZCBhIG5hdGl2ZXNkayBnY2MgaXMgdXNlZnVsLCBwYXJ0aWN1bGFybHkgaW4gY2FzZXMKLXdoZXJlIHRoZSBob3N0IGNvbXBpbGVyIG1heSBiZSBvZiBhbiBpbmNvbXBhdGlibGUgdmVyc2lvbiAob3IgYSAzMgotYml0IGNvbXBpbGVyIGlzIG5lZWRlZCkuCi0KLVNhZGx5LCBidWlsZGluZyBuYXRpdmVzZGstZ2NjIGlzIG5vdCBzdHJhaWdodCBmb3J3YXJkLiBXZSBpbnN0YWxsCi1uYXRpdmVzZGstZ2NjIGludG8gYSByZWxvY2F0YWJsZSBsb2NhdGlvbiBhbmQgdGhpcyBtZWFucyB0aGF0IGl0cwotbGlicmFyeSBsb2NhdGlvbnMgY2FuIGNoYW5nZS4gIk5vcm1hbCIgc3lzcm9vdCBzdXBwb3J0IGRvZXNuJ3QgaGVscAotaW4gdGhpcyBjYXNlIHNpbmNlIHRoZSB2YWx1ZXMgb2YgcGF0aHMgbGlrZSAibGliZGlyIiBjaGFuZ2UsIG5vdCBqdXN0Ci1iYXNlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBzeXN0ZW0uCi0KLUluIG9yZGVyIHRvIGhhbmRsZSB0aGlzIHdlIGRvIHR3byB0aGluZ3M6Ci0KLWEpIEFkZCAlciBpbnRvIHNwZWMgZmlsZSBtYXJrdXAgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGluamVjdGVkIHBhdGhzCi0gICBzdWNoIGFzIFNZU1RFTUxJQlNfRElSIChzZWUgZ2NjX211bHRpbGliX3NldHVwKCkpLgotYikgQWRkIG90aGVyIHBhdGhzIHdoaWNoIG5lZWQgcmVsb2NhdGlvbiBpbnRvIGEgLmdjY3JlbG9jcHJlZml4IHNlY3Rpb24KLSAgIHdoaWNoIHRoZSByZWxvY2F0aW9uIGNvZGUgd2lsbCBub3RpY2UgYW5kIGFkanVzdCBhdXRvbWF0aWNhbGx5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVJQIDIwMTUvNy8yOAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NwcGRlZmF1bHQuYyB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gZ2NjL2NwcGRlZmF1bHQuaCB8ICAzICsrLQotIGdjYy9nY2MuYyAgICAgICAgfCAyMCArKysrKysrKysrKysrKy0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYwotaW5kZXggN2I0ZGQ1MS4uOWQxMTY2YyAxMDA2NDQKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmMKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmMKLUBAIC0zNSw2ICszNSwzMCBAQAotICMgdW5kZWYgQ1JPU1NfSU5DTFVERV9ESVIKLSAjZW5kaWYKLSAKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIEdDQ19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHQ0NfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ7Ci0rI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgTE9DQUxfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTE9DQUxfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIFBSRUZJWF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBQUkVGSVhfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgRklYRURfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gRklYRURfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgQ1JPU1NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ1JPU1NfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBUT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFRPT0xfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgotK3N0YXRpYyBjaGFyIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVI7Ci0rI2VuZGlmCi0rCi0gY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gI2lmZGVmIElOQ0xVREVfREVGQVVMVFMKLSA9IElOQ0xVREVfREVGQVVMVFM7Ci1AQCAtNDIsMzggKzY2LDM4IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotID0gewotICNpZmRlZiBHUExVU1BMVVNfSU5DTFVERV9ESVIKLSAgICAgLyogUGljayB1cCBHTlUgQysrIGdlbmVyaWMgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgdGFyZ2V0LWRlcGVuZGVudCBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCi0rICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMSB9LAotICNlbmRpZgotICNpZmRlZiBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIKLSAgICAgLyogUGljayB1cCBHTlUgQysrIGJhY2t3YXJkIGFuZCBkZXByZWNhdGVkIGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCi0rICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKLSAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgR0NDX0lOQ0xVREVfRElSCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KLS0gICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0rICAgIHsgR0NDX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCi0tICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0rICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSLCAiR0NDIiwgMCwgMCwgMSwgMCB9LAotICNlbmRpZgotICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLwotLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCi0tICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDAgfSwKLSsgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMiB9LAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotLSAgICB7IFBSRUZJWF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMCwgMCB9LAotKyAgICB7IFBSRUZJWF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgotICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGZpeGluY2x1ZGVzLiAgKi8KLS0gICAgeyBGSVhFRF9JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsCi0rICAgIHsgRklYRURfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLAotICAgICAgIC8qIEEgbXVsdGlsaWIgc3VmZml4IG5lZWRzIGFkZGluZyBpZiBkaWZmZXJlbnQgbXVsdGlsaWJzIHVzZQotIAkgZGlmZmVyZW50IGhlYWRlcnMuICAqLwotICNpZmRlZiBTWVNST09UX0hFQURFUlNfU1VGRklYX1NQRUMKLUBAIC04NSwxNiArMTA5LDE2IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotICNlbmRpZgotICNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgotICAgICAvKiBPbmUgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KLS0gICAgeyBDUk9TU19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSsgICAgeyBDUk9TU19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgotICAgICAvKiBBbm90aGVyIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCi0tICAgIHsgVE9PTF9JTkNMVURFX0RJUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAotKyAgICB7IFRPT0xfSU5DTFVERV9ESVJWQVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0gICAgIC8qIC91c3IvaW5jbHVkZSBjb21lcyBkZWFkIGxhc3QuICAqLwotLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCi0tICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKLSsgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCi0gI2VuZGlmCi0gICAgIHsgMCwgMCwgMCwgMCwgMCwgMCB9Ci0gICB9OwotZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmggYi9nY2MvY3BwZGVmYXVsdC5oCi1pbmRleCA4YTgxYjQ1Li45NzU5ZWZkIDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuaAotKysrIGIvZ2NjL2NwcGRlZmF1bHQuaAotQEAgLTMzLDcgKzMzLDggQEAKLSAKLSBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlCi0gewotLSAgY29uc3QgY2hhciAqY29uc3QgZm5hbWU7CS8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLwotKyAgY29uc3QgY2hhciAqZm5hbWU7ICAgICAvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KLSsKLSAgIGNvbnN0IGNoYXIgKmNvbnN0IGNvbXBvbmVudDsJLyogVGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBkaXJlY3RvcnkKLSAJCQkJICAgKHNlZSB1cGRhdGVfcGF0aCBpbiBwcmVmaXguYykgKi8KLSAgIGNvbnN0IGNoYXIgY3BsdXNwbHVzOwkJLyogT25seSBsb29rIGhlcmUgaWYgd2UncmUgY29tcGlsaW5nIEMrKy4gICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCA5NzUwY2MyLi45NGMyNDBlIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0yNDcsNiArMjQ3LDggQEAgRklMRSAqcmVwb3J0X3RpbWVzX3RvX2ZpbGUgPSBOVUxMOwotICNlbmRpZgotIHN0YXRpYyBjb25zdCBjaGFyICp0YXJnZXRfc3lzdGVtX3Jvb3QgPSBERUZBVUxUX1RBUkdFVF9TWVNURU1fUk9PVDsKLSAKLStzdGF0aWMgY2hhciB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNZU1RFTUxJQlNfRElSOwotKwotIC8qIE5vbnplcm8gbWVhbnMgcGFzcyB0aGUgdXBkYXRlZCB0YXJnZXRfc3lzdGVtX3Jvb3QgdG8gdGhlIGNvbXBpbGVyLiAgKi8KLSAKLSBzdGF0aWMgaW50IHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkOwotQEAgLTUxNyw2ICs1MTksNyBAQCBvciB3aXRoIGNvbnN0YW50IHRleHQgaW4gYSBzaW5nbGUgYXJndW1lbnQuCi0gICVHICAgICBwcm9jZXNzIExJQkdDQ19TUEVDIGFzIGEgc3BlYy4KLSAgJVIgICAgIE91dHB1dCB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0YXJnZXRfc3lzdGVtX3Jvb3QgYW5kCi0gICAgICAgICB0YXJnZXRfc3lzcm9vdF9zdWZmaXguCi0rICVyICAgICBPdXRwdXQgdGhlIGJhc2UgcGF0aCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4Ci0gICVTICAgICBwcm9jZXNzIFNUQVJURklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBTIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUUgICAgIHByb2Nlc3MgRU5ERklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBFIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUMgICAgIHByb2Nlc3MgQ1BQX1NQRUMgYXMgYSBzcGVjLgotQEAgLTE0NzMsMTAgKzE0NzYsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKLSAgICBnY2NfZXhlY19wcmVmaXggaXMgc2V0IGJlY2F1c2UsIGluIHRoYXQgY2FzZSwgd2Uga25vdyB3aGVyZSB0aGUKLSAgICBjb21waWxlciBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB1c2UgcGF0aHMgcmVsYXRpdmUgdG8gdGhhdAotICAgIGxvY2F0aW9uIGluc3RlYWQuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9leGVjX3ByZWZpeCA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9saWJleGVjX3ByZWZpeCA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9iaW5kaXJfcHJlZml4ID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfbGliZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfYmluZGlyX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOwotK3N0YXRpYyBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSAKLSAvKiBGb3IgbmF0aXZlIGNvbXBpbGVycywgdGhlc2UgYXJlIHdlbGwta25vd24gcGF0aHMgY29udGFpbmluZwotICAgIGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4gIEZvciBjcm9zcwotQEAgLTE0ODQsOSArMTQ4Nyw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfZXhlY19wcmVmaXggPSBNRF9FWEVDX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeCA9IE1EX1NUQVJURklMRV9QUkVGSVg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSA9IE1EX1NUQVJURklMRV9QUkVGSVhfMTsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xCi0rc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQotICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzE7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMgotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKLSAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yOwotIAotIC8qIEEgcmVsYXRpdmUgcGF0aCB0byBiZSB1c2VkIGluIGZpbmRpbmcgdGhlIGxvY2F0aW9uIG9mIHRvb2xzCi1AQCAtNTc2Miw2ICs1NzY1LDExIEBAIGRvX3NwZWNfMSAoY29uc3QgY2hhciAqc3BlYywgaW50IGluc3dpdGNoLCBjb25zdCBjaGFyICpzb2Z0X21hdGNoZWRfcGFydCkKLSAJICAgICAgfQotIAkgICAgYnJlYWs7Ci0gCi0rICAgICAgICAgIGNhc2UgJ3InOgotKyAgICAgICAgICAgICAgb2JzdGFja19ncm93ICgmb2JzdGFjaywgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCwKLSsJCSAgICAgIHN0cmxlbiAodGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCkpOwotKyAgICAgICAgICAgIGJyZWFrOwotKwotIAkgIGNhc2UgJ1MnOgotIAkgICAgdmFsdWUgPSBkb19zcGVjXzEgKHN0YXJ0ZmlsZV9zcGVjLCAwLCBOVUxMKTsKLSAJICAgIGlmICh2YWx1ZSAhPSAwKQotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzgtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWVlNzlkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLUZyb20gNDJlNGNkY2FhZDU5MDUzNjI0Njg2NmIwODQ2ZWMyNzllMTI0ZmExNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDE6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzOC80Nl0gU2VhcmNoIHRhcmdldCBzeXNyb290IGdjYyB2ZXJzaW9uIHNwZWNpZmljIGRpcnMgd2l0aAotIG11bHRpbGliLgotCi1XZSBpbnN0YWxsIHRoZSBnY2MgbGlicmFyaWVzIChzdWNoIGFzIGNydGJlZ2luLnApIGludG8KLTxzeXNyb290PjxsaWJkaXI+Lzx0YXJnZXQtc3lzPi81LjIuMC8KLXdoaWNoIGlzIGEgZGVmYXVsdCBzZWFyY2ggcGF0aCBmb3IgR0NDIChha2EgbXVsdGlfc3VmZml4IGluIHRoZQotY29kZSBiZWxvdykuIDx0YXJnZXQtc3lzPiBpcyAnbWFjaGluZScgaW4gZ2NjJ3MgdGVybWlub2xvZ3kuIFdlIHVzZQotdGhlc2UgZGlyZWN0b3JpZXMgc28gdGhhdCBtdWx0aXBsZSBnY2MgdmVyc2lvbnMgY291bGQgaW4gdGhlb3J5Ci1jby1leGlzdCBvbiB0YXJnZXQuCi0KLVdlIG9ubHkgd2FudCB0byBidWlsZCBvbmUgZ2NjLWNyb3NzLWNhbmFkaWFuIHBlciBhcmNoIGFuZCBoYXZlIHRoaXMgd29yawotZm9yIGFsbCBtdWx0aWxpYnMuIDx0YXJnZXQtc3lzPiBjYW4gYmUgaGFuZGxlZCBieSBtYXBwaW5nIHRoZSBtdWx0aWxpYgotPHRhcmdldC1zeXM+IHRvIHRoZSBvbmUgdXNlZCBieSBnY2MtY3Jvc3MtY2FuYWRpYW4sIGUuZy4KLW1pcHM2NC1wb2xrbWxsaWIzMi1saW51eAotaXMgc3ltbGlua2VkIHRvIGJ5IG1pcHM2NC1wb2t5LWxpbnV4LgotCi1UaGUgZGVmYXVsdCBnY2Mgc2VhcmNoIHBhdGggaW4gdGhlIHRhcmdldCBzeXNyb290IGZvciBhICJsaWI2NCIgbXV0bGlsaWIKLWlzOgotCi08c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi9saWIzMi8KLTxzeXNyb290Pi91c3IvbGliMzIvCi0KLXdoaWNoIG1lYW5zIHRoYXQgdGhlIGxpYjMyIGNydGJlZ2luLm8gd2lsbCBiZSBmb3VuZCBhbmQgdGhlIGxpYjY0IG9uZXMKLXdpbGwgbm90IHdoaWNoIGxlYWRzIHRvIGNvbXBpbGVyIGZhaWx1cmVzLgotCi1UaGlzIHBhdGNoIGluamVjdHMgYSBtdWx0aWxpYiB2ZXJzaW9uIG9mIHRoYXQgcGF0aCBmaXJzdCBzbyB0aGUgbGliNjQKLWJpbmFyaWVzIGNhbiBiZSBmb3VuZCBmaXJzdC4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgc2VhcmNoIHBhdGggYmVjb21lczoKLQotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L2xpYjMyLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1SUCAyMDE1LzcvMzEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9nY2MuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggOTRjMjQwZS4uMjgxMjgxOSAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMjUwNyw3ICsyNTA3LDcgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAgICAgICBpZiAocGF0aCA9PSBOVUxMKQotIAl7Ci0gCSAgbGVuID0gcGF0aHMtPm1heF9sZW4gKyBleHRyYV9zcGFjZSArIDE7Ci0tCSAgbGVuICs9IE1BWCAoTUFYIChzdWZmaXhfbGVuLCBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0rCSAgbGVuICs9IE1BWCAoKHN1ZmZpeF9sZW4gKyBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0gCSAgcGF0aCA9IFhORVdWRUMgKGNoYXIsIGxlbik7Ci0gCX0KLSAKLUBAIC0yNTE5LDYgKzI1MTksMzMgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAJICAvKiBMb29rIGZpcnN0IGluIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkuICAqLwotIAkgIGlmICghc2tpcF9tdWx0aV9kaXIpCi0gCSAgICB7Ci0rCSAgICAgIGlmICghKHBsLT5vc19tdWx0aWxpYiA/IHNraXBfbXVsdGlfb3NfZGlyIDogc2tpcF9tdWx0aV9kaXIpKQotKwkgICAgICAgIHsKLSsJICAgICAgICAgIGNvbnN0IGNoYXIgKnRoaXNfbXVsdGk7Ci0rCSAgICAgICAgICBzaXplX3QgdGhpc19tdWx0aV9sZW47Ci0rCi0rCSAgICAgICAgICBpZiAocGwtPm9zX211bHRpbGliKQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9vc19kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX29zX2Rpcl9sZW47Ci0rCQkgICAgfQotKwkgICAgICAgICAgZWxzZQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX2Rpcl9sZW47Ci0rCQkgICAgfQotKwotKwkgICAgICAgICAgLyogTG9vayBpbiBtdWx0aWxpYiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5IGZpcnN0ICovCi0rCSAgICAgICAgICBpZiAodGhpc19tdWx0aV9sZW4pCi0rCSAgICAgICAgICAgIHsKLSsJCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgdGhpc19tdWx0aSwgdGhpc19tdWx0aV9sZW4gKyAxKTsKLSsJICAgICAgICAgICAgICBtZW1jcHkgKHBhdGggKyBsZW4gKyB0aGlzX211bHRpX2xlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7Ci0rCSAgICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotKwkgICAgICAgICAgICAgICAgaWYgKHJldCkKLSsJCSAgICAgICAgICBicmVhazsKLSsJICAgICAgICAgICAgfQotKwkgICAgICAgIH0KLSsKLSAJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKLSAJICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotIAkgICAgICBpZiAocmV0KQotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzktRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzktRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZTdhZWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM5LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLUZyb20gOWNlZDQ5ZTQ1OWNjZjE4ODdmZWI1OGFkZjFlODgzNmRjYjRiMWJkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDI6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzOS80Nl0gRml4IHZhcmlvdXMgX0ZPUl9CVUlMRCBhbmQgcmVsYXRlZCB2YXJpYWJsZXMKLQotV2hlbiBkb2luZyBhIEZPUl9CVUlMRCB0aGluZywgeW91IGhhdmUgdG8gb3ZlcnJpZGUgQ0ZMQUdTIHdpdGgKLUNGTEFHU19GT1JfQlVJTEQuIEFuZCBpZiB5b3UgdXNlIEMrKywgeW91IGFsc28gaGF2ZSB0byBvdmVycmlkZQotQ1hYRkxBR1Mgd2l0aCBDWFhGTEFHU19GT1JfQlVJTEQuCi1XaXRob3V0IHRoaXMsIHdoZW4gYnVpbGRpbmcgZm9yIG1pbmd3LCB5b3UgZW5kIHVwIHRyeWluZyB0byB1c2UKLXRoZSBtaW5ndyBoZWFkZXJzIGZvciBhIGhvc3QgYnVpbGQuCi0KLVRoZSBzYW1lIGdvZXMgZm9yIG90aGVyIHZhcmlhYmxlcyBhcyB3ZWxsLCBzdWNoIGFzIENQUEZMQUdTLAotQ1BQLCBhbmQgR01QSU5DLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluICAgICAgfCA2ICsrKysrKwotIE1ha2VmaWxlLnRwbCAgICAgfCA1ICsrKysrCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KLSBnY2MvY29uZmlndXJlICAgIHwgMiArLQotIGdjYy9jb25maWd1cmUuYWMgfCAyICstCi0gNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggYmViOWI5YS4uM2UxYzZiYyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE1Miw2ICsxNTIsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCi0gCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKLSAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAotIAlHQ0o9IiQoR0NKX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0NKOyBcCi1AQCAtMTcwLDYgKzE3MSw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCi0gRVhUUkFfQlVJTERfRkxBR1MgPSBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCi0gCi0gIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCi1AQCAtMTg3LDYgKzE5MSw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAotIEhPU1RfRVhQT1JUUyA9IFwKLSAJJChCQVNFX0VYUE9SVFMpIFwKLSAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCi0rCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLUBAIC03MTMsNiArNzE4LDcgQEAgQkFTRV9GTEFHU19UT19QQVNTID0gXAotIAkiQ0NfRk9SX0JVSUxEPSQoQ0NfRk9SX0JVSUxEKSIgXAotIAkiQ0ZMQUdTX0ZPUl9CVUlMRD0kKENGTEFHU19GT1JfQlVJTEQpIiBcCi0gCSJDWFhfRk9SX0JVSUxEPSQoQ1hYX0ZPUl9CVUlMRCkiIFwKLSsJIkNYWEZMQUdTX0ZPUl9CVUlMRD0kKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJIkVYUEVDVD0kKEVYUEVDVCkiIFwKLSAJIkZMRVg9JChGTEVYKSIgXAotIAkiSU5TVEFMTD0kKElOU1RBTEwpIiBcCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUudHBsIGIvTWFrZWZpbGUudHBsCi1pbmRleCA2YjJlYjZhLi4xMTRlNDYyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUudHBsCi0rKysgYi9NYWtlZmlsZS50cGwKLUBAIC0xNTQsNiArMTU0LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCi0gCUdDSj0iJChHQ0pfRk9SX0JVSUxEKSI7IGV4cG9ydCBHQ0o7IFwKLUBAIC0xNzIsNiArMTczLDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KLSBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAotIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKLSAKLSAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KLUBAIC0xODksNiArMTkzLDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACi0gSE9TVF9FWFBPUlRTID0gXAotIAkkKEJBU0VfRVhQT1JUUykgXAotIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCi0gCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggY2M3NTUzNi4uMGFkMmRjOCAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNzgwLDcgKzc4MCw3IEBAIEJVSUxEX0xERkxBR1M9QEJVSUxEX0xERkxBR1NACi0gQlVJTERfTk9fUElFX0ZMQUcgPSBAQlVJTERfTk9fUElFX0ZMQUdACi0gQlVJTERfTERGTEFHUyArPSAkKEJVSUxEX05PX1BJRV9GTEFHKQotIEJVSUxEX0NQUEZMQUdTPSAtSS4gLUkkKEBEKSAtSSQoc3JjZGlyKSAtSSQoc3JjZGlyKS8kKEBEKSBcCi0tCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHUykKLSsJCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTX0ZPUl9CVUlMRCkKLSAKLSAjIEFjdHVhbCBuYW1lIHRvIHVzZSB3aGVuIGluc3RhbGxpbmcgYSBuYXRpdmUgY29tcGlsZXIuCi0gR0NDX0lOU1RBTExfTkFNRSA6PSAkKHNoZWxsIGVjaG8gZ2NjfHNlZCAnJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKScpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDM3NzI1M2UuLjc4ZmM2NGEgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTE3OTksNyArMTE3OTksNyBAQCBlbHNlCi0gCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKLS0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0rCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAotIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKLSAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCA1NGU3NjE5Li5hOTQ2NjZlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTE2ODIsNyArMTY4Miw3IEBAIGVsc2UKLSAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCi0gCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAotLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSsJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAotIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCi0gCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAotIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0MC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0MC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhNmZkMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDAtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGIwNDEyYzAxYzI3NWFhZWI2YjQ1ODQ2MWNkMjQyNTEyMGM4YmNlYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyIEZlYiAyMDE2IDEwOjI2OjEwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggNDAvNDZdIG5pb3MyOiBEZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmggYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLWluZGV4IDRlZjU1YjUuLjYyYmMxZTcgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbmlvczIvbGludXguaAotQEAgLTMwLDYgKzMwLDcgQEAKLSAjZGVmaW5lIENQUF9TUEVDICIle3Bvc2l4Oi1EX1BPU0lYX1NPVVJDRX0gJXtwdGhyZWFkOi1EX1JFRU5UUkFOVH0iCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1uaW9zMi5zby4xIgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgIi9saWIvbGQtbXVzbC1uaW9zMi5zby4xIgotIAotICN1bmRlZiBMSU5LX1NQRUMKLSAjZGVmaW5lIExJTktfU1BFQyBMSU5LX1NQRUNfRU5ESUFOIFwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQxLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDEtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjliN2NlNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDEtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLUZyb20gMjEwZjZiM2I4MjA4NGNjNzU2ZTAyYjhiYzEyZjkwOWE0M2IxNGVlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI3IEp1biAyMDE3IDE4OjEwOjU0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNDAvNDldIEFkZCBzc3Bfbm9uc2hhcmVkIHRvIGxpbmsgY29tbWFuZGxpbmUgZm9yIG11c2wgdGFyZ2V0cwotCi13aGVuIC1mc3RhY2stcHJvdGVjdG9yIG9wdGlvbnMgYXJlIGVuYWJsZWQgd2UgbmVlZCB0bwotbGluayB3aXRoIHNzcF9zaGFyZWQgb24gbXVzbCBzaW5jZSBpdCBkb2VzIG5vdCBwcm92aWRlCi10aGUgX19zdGFja19jaGtfZmFpbF9sb2NhbCgpIHNvIGVzc2VudGlhbGx5IGl0IHByb3ZpZGVzCi1saWJzc3AgYnV0IG5vdCBsaWJzc3Bfbm9uc2hhcmVkIHNvbWV0aGluZyBsaWtlCi1UQVJHRVRfTElCQ19QUk9WSURFU19TU1BfQlVUX05PVF9TU1BfTk9OU0hBUkVECi0gd2hlcmUtYXMgZm9yIGdsaWJjIHRoZSBuZWVkZWQgc3ltYm9scwotYXJlIGFscmVhZHkgcHJlc2VudCBpbiBsaWJjX25vbnNoYXJlZCBsaWJyYXJ5IHRoZXJlZm9yZQotd2UgZG8gbm90IG5lZWQgYW55IGxpYnJhcnkgaGVscGVyIG9uIGdsaWJjIGJhc2VkIHN5c3RlbXMKLWJ1dCBtdXNsIG5lZWRzIHRoZSBsaWJzc3Bfbm9zaGFyZWQgZnJvbSBnY2MKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgfCAgNyArKysrKysrCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCAgIHwgMTAgKysrKysrKysrKwotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCB8IDEwICsrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAotaW5kZXggMmU2ODNkMGM0MzAuLjFiNGRmNzk4NjcxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKLUBAIC0xODIsNiArMTgyLDEzIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDEsIDAsIDAgfSwJCVwKLSAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0JCQkJXAotICAgfQotKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKLSsjdW5kZWYgTElOS19TU1BfU1BFQwotKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCi0rCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCi0rCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgotKyNlbmRpZgotKwotICNlbmRpZgotIAotICNpZiAoREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDKSAmJiBkZWZpbmVkIChTSU5HTEVfTElCQykgLyogdUNsaW51eCAqLwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi1pbmRleCA2ODRhZmQ2YzE5MC4uMjJjZmEzOTFiODkgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi1AQCAtOTEsNiArOTEsMTYgQEAKLSAJCQkJCSAiIC1tIGVsZjMycHBjbGludXgiKQotICNlbmRpZgotIAotKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLwotKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotKyN1bmRlZiBMSU5LX1NTUF9TUEVDCi0rI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0gI3VuZGVmIExJTktfT1NfTElOVVhfU1BFQwotICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDIExJTktfT1NfTElOVVhfRU1VTCAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCi0gICAle3JkeW5hbWljOi1leHBvcnQtZHluYW1pY30gXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotaW5kZXggM2IwMGVjMGZjZjAuLjgzNzFmOGQ3YjZiIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLUBAIC00NjUsNiArNDY1LDE2IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gCQkJCQkgICAiIC1tIGVsZjY0cHBjIikKLSAjZW5kaWYKLSAKLSsvKiBsaW5rIGxpYnNzcF9ub25zaGFyZWQuYSB3aXRoIG11c2wgKi8KLSsjaWYgREVGQVVMVF9MSUJDID09IExJQkNfTVVTTAotKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKLSsjdW5kZWYgTElOS19TU1BfU1BFQwotKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCi0rCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCi0rCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgotKyNlbmRpZgotKyNlbmRpZgotKwotICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDMzIgTElOS19PU19MSU5VWF9FTVVMMzIgIiAleyFzaGFyZWQ6ICV7IXN0YXRpYzogXAotICAgJXtyZHluYW1pYzotZXhwb3J0LWR5bmFtaWN9IFwKLSAgIC1keW5hbWljLWxpbmtlciAiIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSMzIgIn19IFwKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0Mi1nY2MtbGliY3BwLXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC1vbGQtbmV3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQyLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2MWYwZmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQyLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAsMCBAQAotRnJvbSBiYTczOGNjNDExYzlhNTRlMzg5ZTMzNmJjYWEwYTI0MjhkZDRhOWQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxNiBNYXIgMjAxNiAwMjoyNzo0MyAtMDQwMAotU3ViamVjdDogW1BBVENIIDQyLzQ2XSBnY2MvbGliY3BwOiBzdXBwb3J0IC1mZmlsZS1wcmVmaXgtbWFwPTxvbGQ+PTxuZXc+Ci0KLVNpbWlsYXIgLWZkZWJ1Zy1wcmVmaXgtbWFwLCBhZGQgb3B0aW9uIC1mZmlsZS1wcmVmaXgtbWFwIHRvIG1hcCBvbmUKLWRpcmVjdG9yeSBuYW1lIChvbGQpIHRvIGFub3RoZXIgKG5ldykgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18gYW5kCi1fX2J1aWx0aW5fRklMRSAoKS4KLQotaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NzAyNjgKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2djYy1wYXRjaGVzQGdjYy5nbnUub3JnXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jICAgICB8IDEzICsrKysrKysKLSBnY2MvYy1mYW1pbHkvYy5vcHQgICAgICAgIHwgIDQgKysrCi0gZ2NjL2R3YXJmMm91dC5jICAgICAgICAgICB8ICAxICsKLSBnY2MvZ2ltcGxpZnkuYyAgICAgICAgICAgIHwgIDMgKysKLSBsaWJjcHAvTWFrZWZpbGUuaW4gICAgICAgIHwgMTAgKysrLS0tCi0gbGliY3BwL2ZpbGUtbWFwLmMgICAgICAgICB8IDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaCB8IDMwICsrKysrKysrKysrKysrKysKLSBsaWJjcHAvbWFjcm8uYyAgICAgICAgICAgIHwgIDIgKysKLSA4IGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJjcHAvZmlsZS1tYXAuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oCi0KLWRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy1vcHRzLmMgYi9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKLWluZGV4IGZlYzU4YmMuLjdhMGFmNDMgMTAwNjQ0Ci0tLS0gYS9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKLSsrKyBiL2djYy9jLWZhbWlseS9jLW9wdHMuYwotQEAgLTM4LDYgKzM4LDE0IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2luY2x1ZGUgIm9wdHMuaCIKLSAjaW5jbHVkZSAicGx1Z2luLmgiCQkvKiBGb3IgUExVR0lOX0lOQ0xVREVfRklMRSBldmVudC4gICovCi0gI2luY2x1ZGUgIm1rZGVwcy5oIgotKyNpbmNsdWRlICJmaWxlLW1hcC5oIgotKyNpbmNsdWRlICJjLXRhcmdldC5oIgotKyNpbmNsdWRlICJ0bS5oIgkJCS8qIEZvciBCWVRFU19CSUdfRU5ESUFOLAotKwkJCQkgICBET0xMQVJTX0lOX0lERU5USUZJRVJTLAotKwkJCQkgICBTVERDXzBfSU5fU1lTVEVNX0hFQURFUlMsCi0rCQkJCSAgIFRBUkdFVF9GTFRfRVZBTF9NRVRIT0RfTk9OX0RFRkFVTFQgYW5kCi0rCQkJCSAgIFRBUkdFVF9PUFRGLiAgKi8KLSsjaW5jbHVkZSAidG1fcC5oIgkJLyogRm9yIENfQ09NTU9OX09WRVJSSURFX09QVElPTlMuICAqLwotICNpbmNsdWRlICJkdW1wZmlsZS5oIgotIAotICNpZm5kZWYgRE9MTEFSU19JTl9JREVOVElGSUVSUwotQEAgLTUwMyw2ICs1MTEsMTEgQEAgY19jb21tb25faGFuZGxlX29wdGlvbiAoc2l6ZV90IHNjb2RlLCBjb25zdCBjaGFyICphcmcsIGludCB2YWx1ZSwKLSAgICAgICBjcHBfb3B0cy0+bmFycm93X2NoYXJzZXQgPSBhcmc7Ci0gICAgICAgYnJlYWs7Ci0gCi0rICAgIGNhc2UgT1BUX2ZmaWxlX3ByZWZpeF9tYXBfOgotKyAgICAgIGlmIChhZGRfZmlsZV9wcmVmaXhfbWFwIChhcmcpIDwgMCkKLSsgICAgICAgIGVycm9yICgiaW52YWxpZCBhcmd1bWVudCAlcXMgdG8gLWZmaWxlLXByZWZpeC1tYXAiLCBhcmcpOwotKyAgICAgIGJyZWFrOwotKwotICAgICBjYXNlIE9QVF9md2lkZV9leGVjX2NoYXJzZXRfOgotICAgICAgIGNwcF9vcHRzLT53aWRlX2NoYXJzZXQgPSBhcmc7Ci0gICAgICAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mub3B0Ci1pbmRleCA2NjBkYTZjLi4zMWY3YjM0IDEwMDY0NAotLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0Ci0rKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLUBAIC0xMjA4LDYgKzEyMDgsMTAgQEAgZmV4ZWMtY2hhcnNldD0KLSBDIE9iakMgQysrIE9iakMrKyBKb2luZWQgUmVqZWN0TmVnYXRpdmUKLSAtZmV4ZWMtY2hhcnNldD08Y3NldD4JQ29udmVydCBhbGwgc3RyaW5ncyBhbmQgY2hhcmFjdGVyIGNvbnN0YW50cyB0byBjaGFyYWN0ZXIgc2V0IDxjc2V0Pi4KLSAKLStmZmlsZS1wcmVmaXgtbWFwPQotK0MgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQotKy1mZmlsZS1wcmVmaXgtbWFwPTxvbGQ9bmV3PglNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18gYW5kIF9fYnVpbHRpbl9GSUxFICgpCi0rCi0gZmV4dGVuZGVkLWlkZW50aWZpZXJzCi0gQyBPYmpDIEMrKyBPYmpDKysKLSBQZXJtaXQgdW5pdmVyc2FsIGNoYXJhY3RlciBuYW1lcyAoXFx1IGFuZCBcXFUpIGluIGlkZW50aWZpZXJzLgotZGlmZiAtLWdpdCBhL2djYy9kd2FyZjJvdXQuYyBiL2djYy9kd2FyZjJvdXQuYwotaW5kZXggODBmMmRmNS4uYTJiZmNjMCAxMDA2NDQKLS0tLSBhL2djYy9kd2FyZjJvdXQuYwotKysrIGIvZ2NjL2R3YXJmMm91dC5jCi1AQCAtMjE2NzIsNiArMjE2NzIsNyBAQCBnZW5fcHJvZHVjZXJfc3RyaW5nICh2b2lkKQotICAgICAgIGNhc2UgT1BUX2ZsdHJhbnNfb3V0cHV0X2xpc3RfOgotICAgICAgIGNhc2UgT1BUX2ZyZXNvbHV0aW9uXzoKLSAgICAgICBjYXNlIE9QVF9mZGVidWdfcHJlZml4X21hcF86Ci0rICAgICAgY2FzZSBPUFRfZmZpbGVfcHJlZml4X21hcF86Ci0gCS8qIElnbm9yZSB0aGVzZS4gICovCi0gCWNvbnRpbnVlOwotICAgICAgIGRlZmF1bHQ6Ci1kaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsaWZ5LmMgYi9nY2MvZ2ltcGxpZnkuYwotaW5kZXggZTIyM2U1OS4uMTQzM2MyNSAxMDA2NDQKLS0tLSBhL2djYy9naW1wbGlmeS5jCi0rKysgYi9nY2MvZ2ltcGxpZnkuYwotQEAgLTU3LDYgKzU3LDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjaW5jbHVkZSAiZ29tcC1jb25zdGFudHMuaCIKLSAjaW5jbHVkZSAidHJlZS1kdW1wLmgiCi0gI2luY2x1ZGUgImdpbXBsZS13YWxrLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0rCi0gI2luY2x1ZGUgImxhbmdob29rcy1kZWYuaCIJLyogRklYTUU6IGZvciBsaGRfc2V0X2RlY2xfYXNzZW1ibGVyX25hbWUgKi8KLSAjaW5jbHVkZSAiYnVpbHRpbnMuaCIKLSAKLUBAIC0yNDMyLDYgKzI0MzQsNyBAQCBnaW1wbGlmeV9jYWxsX2V4cHIgKHRyZWUgKmV4cHJfcCwgZ2ltcGxlX3NlcSAqcHJlX3AsIGJvb2wgd2FudF92YWx1ZSkKLSAgICAgICBjYXNlIEJVSUxUX0lOX0ZJTEU6Ci0gCXsKLSAJICBjb25zdCBjaGFyICpsb2NmaWxlID0gTE9DQVRJT05fRklMRSAoRVhQUl9MT0NBVElPTiAoKmV4cHJfcCkpOwotKwkgIGxvY2ZpbGUgPSByZW1hcF9maWxlX2ZpbGVuYW1lIChsb2NmaWxlKTsKLSAJICAqZXhwcl9wID0gYnVpbGRfc3RyaW5nX2xpdGVyYWwgKHN0cmxlbiAobG9jZmlsZSkgKyAxLCBsb2NmaWxlKTsKLSAJICByZXR1cm4gR1NfT0s7Ci0gCX0KLWRpZmYgLS1naXQgYS9saWJjcHAvTWFrZWZpbGUuaW4gYi9saWJjcHAvTWFrZWZpbGUuaW4KLWluZGV4IGE3ZDc4MjguLjNkMjk1NzIgMTAwNjQ0Ci0tLS0gYS9saWJjcHAvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmNwcC9NYWtlZmlsZS5pbgotQEAgLTg0LDEyICs4NCwxMiBAQCBERVBNT0RFID0gJChDWFhERVBNT0RFKQotIAotIAotIGxpYmNwcF9hX09CSlMgPSBjaGFyc2V0Lm8gZGlyZWN0aXZlcy5vIGRpcmVjdGl2ZXMtb25seS5vIGVycm9ycy5vIFwKLS0JZXhwci5vIGZpbGVzLm8gaWRlbnRpZmllcnMubyBpbml0Lm8gbGV4Lm8gbGluZS1tYXAubyBtYWNyby5vIFwKLS0JbWtkZXBzLm8gcGNoLm8gc3ltdGFiLm8gdHJhZGl0aW9uYWwubwotKwlleHByLm8gZmlsZS1tYXAubyBmaWxlcy5vIGlkZW50aWZpZXJzLm8gaW5pdC5vIGxleC5vIGxpbmUtbWFwLm8gXAotKwltYWNyby5vIG1rZGVwcy5vIHBjaC5vIHN5bXRhYi5vIHRyYWRpdGlvbmFsLm8KLSAKLSBsaWJjcHBfYV9TT1VSQ0VTID0gY2hhcnNldC5jIGRpcmVjdGl2ZXMuYyBkaXJlY3RpdmVzLW9ubHkuYyBlcnJvcnMuYyBcCi0tCWV4cHIuYyBmaWxlcy5jIGlkZW50aWZpZXJzLmMgaW5pdC5jIGxleC5jIGxpbmUtbWFwLmMgbWFjcm8uYyBcCi0tCW1rZGVwcy5jIHBjaC5jIHN5bXRhYi5jIHRyYWRpdGlvbmFsLmMKLSsJZXhwci5jIGZpbGUtbWFwLmMgZmlsZXMuYyBpZGVudGlmaWVycy5jIGluaXQuYyBsZXguYyBsaW5lLW1hcC5jIFwKLSsJbWFjcm8uYyBta2RlcHMuYyBwY2guYyBzeW10YWIuYyB0cmFkaXRpb25hbC5jCi0gCi0gYWxsOiBsaWJjcHAuYSAkKFVTRURfQ0FUQUxPR1MpCi0gCi1AQCAtMjYzLDcgKzI2Myw3IEBAIHBvLyQoUEFDS0FHRSkucG90OiAkKGxpYmNwcF9hX1NPVVJDRVMpCi0gCi0gVEFHU19TT1VSQ0VTID0gJChsaWJjcHBfYV9TT1VSQ0VTKSBpbnRlcm5hbC5oIHVjbmlkLmggXAotICAgICBpbmNsdWRlL2xpbmUtbWFwLmggaW5jbHVkZS9zeW10YWIuaCBpbmNsdWRlL2NwcC1pZC1kYXRhLmggXAotLSAgICBpbmNsdWRlL2NwcGxpYi5oIGluY2x1ZGUvbWtkZXBzLmggc3lzdGVtLmgKLSsgICAgaW5jbHVkZS9jcHBsaWIuaCBpbmNsdWRlL21rZGVwcy5oIHN5c3RlbS5oIGluY2x1ZGUvZmlsZS1tYXAuaAotIAotIFRBR1M6ICQoVEFHU19TT1VSQ0VTKQotIAljZCAkKHNyY2RpcikgJiYgZXRhZ3MgJChUQUdTX1NPVVJDRVMpCi1kaWZmIC0tZ2l0IGEvbGliY3BwL2ZpbGUtbWFwLmMgYi9saWJjcHAvZmlsZS1tYXAuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE4MDM1ZWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYmNwcC9maWxlLW1hcC5jCi1AQCAtMCwwICsxLDkyIEBACi0rLyogTWFwIG9uZSBkaXJlY3RvcnkgbmFtZSB0byBhbm90aGVyIGluIF9fRklMRV9fLCBfX0JBU0VfRklMRV9fCi0rICAgYW5kIF9fYnVpbHRpbl9GSUxFICgpLgotKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQotK2xhdGVyIHZlcnNpb24uCi0rCi0rVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLStNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLStZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0rPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyBJbiBvdGhlciB3b3JkcywgeW91IGFyZSB3ZWxjb21lIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUgdGhpcyBwcm9ncmFtLgotKyBZb3UgYXJlIGZvcmJpZGRlbiB0byBmb3JiaWQgYW55b25lIGVsc2UgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZQotKyB3aGF0IHlvdSBnaXZlIHRoZW0uICAgSGVscCBzdGFtcCBvdXQgc29mdHdhcmUtaG9hcmRpbmchICAqLwotKwotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjaW5jbHVkZSAic3lzdGVtLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0rCi0rLyogU3RydWN0dXJlIHJlY29yZGluZyB0aGUgbWFwcGluZyBmcm9tIHNvdXJjZSBmaWxlIGFuZCBkaXJlY3RvcnkKLSsgICBuYW1lcyBhdCBjb21waWxlIHRpbWUgdG8gX19GSUxFX18gKi8KLSt0eXBlZGVmIHN0cnVjdCBmaWxlX3ByZWZpeF9tYXAKLSt7Ci0rICBjb25zdCBjaGFyICpvbGRfcHJlZml4OwotKyAgY29uc3QgY2hhciAqbmV3X3ByZWZpeDsKLSsgIHNpemVfdCBvbGRfbGVuOwotKyAgc2l6ZV90IG5ld19sZW47Ci0rICBzdHJ1Y3QgZmlsZV9wcmVmaXhfbWFwICpuZXh0OwotK30gZmlsZV9wcmVmaXhfbWFwOwotKwotKy8qIExpbmtlZCBsaXN0IG9mIHN1Y2ggc3RydWN0dXJlcy4gICovCi0rc3RhdGljIGZpbGVfcHJlZml4X21hcCAqZmlsZV9wcmVmaXhfbWFwczsKLSsKLSsvKiBSZWNvcmQgcHJlZml4IG1hcHBpbmcgb2YgX19GSUxFX18uICBBUkcgaXMgdGhlIGFyZ3VtZW50IHRvCi0rICAgLWZmaWxlLXByZWZpeC1tYXAgYW5kIG11c3QgYmUgb2YgdGhlIGZvcm0gT0xEPU5FVy4gICovCi0raW50Ci0rYWRkX2ZpbGVfcHJlZml4X21hcCAoY29uc3QgY2hhciAqYXJnKQotK3sKLSsgIGZpbGVfcHJlZml4X21hcCAqbWFwOwotKyAgY29uc3QgY2hhciAqcDsKLSsKLSsgIHAgPSBzdHJjaHIgKGFyZywgJz0nKTsKLSsgIGlmICghcCkKLSsgIHsKLSsgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgYXJndW1lbnQgJXFzIHRvIC1mZmlsZS1wcmVmaXgtbWFwIiwgYXJnKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICB9Ci0rICBtYXAgPSBYTkVXIChmaWxlX3ByZWZpeF9tYXApOwotKyAgbWFwLT5vbGRfcHJlZml4ID0geHN0cm5kdXAgKGFyZywgcCAtIGFyZyk7Ci0rICBtYXAtPm9sZF9sZW4gPSBwIC0gYXJnOwotKyAgcCsrOwotKyAgbWFwLT5uZXdfcHJlZml4ID0geHN0cmR1cCAocCk7Ci0rICBtYXAtPm5ld19sZW4gPSBzdHJsZW4gKHApOwotKyAgbWFwLT5uZXh0ID0gZmlsZV9wcmVmaXhfbWFwczsKLSsgIGZpbGVfcHJlZml4X21hcHMgPSBtYXA7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogUGVyZm9ybSB1c2VyLXNwZWNpZmllZCBtYXBwaW5nIG9mIF9fRklMRV9fIHByZWZpeGVzLiAgUmV0dXJuCi0rICAgdGhlIG5ldyBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gZmlsZW5hbWUuICAqLwotKwotK2NvbnN0IGNoYXIgKgotK3JlbWFwX2ZpbGVfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIGZpbGVfcHJlZml4X21hcCAqbWFwOwotKyAgY2hhciAqczsKLSsgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICBzaXplX3QgbmFtZV9sZW47Ci0rCi0rICBmb3IgKG1hcCA9IGZpbGVfcHJlZml4X21hcHM7IG1hcDsgbWFwID0gbWFwLT5uZXh0KQotKyAgICBpZiAoZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQotKyAgICAgIGJyZWFrOwotKyAgaWYgKCFtYXApCi0rICAgIHJldHVybiBmaWxlbmFtZTsKLSsgIG5hbWUgPSBmaWxlbmFtZSArIG1hcC0+b2xkX2xlbjsKLSsgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKSArIDE7Ci0rICBzID0gKGNoYXIgKikgYWxsb2NhIChuYW1lX2xlbiArIG1hcC0+bmV3X2xlbik7Ci0rICBtZW1jcHkgKHMsIG1hcC0+bmV3X3ByZWZpeCwgbWFwLT5uZXdfbGVuKTsKLSsgIG1lbWNweSAocyArIG1hcC0+bmV3X2xlbiwgbmFtZSwgbmFtZV9sZW4pOwotKwotKyAgcmV0dXJuIHhzdHJkdXAgKHMpOwotK30KLSsKLSsKLWRpZmYgLS1naXQgYS9saWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oIGIvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjg3NTAzMTUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKLUBAIC0wLDAgKzEsMzAgQEAKLSsvKiBNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18KLSsgICBhbmQgX19idWlsdGluX0ZJTEUgKCkuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSt1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLStGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55Ci0rbGF0ZXIgdmVyc2lvbi4KLSsKLStUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLStidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLStHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSs8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIEluIG90aGVyIHdvcmRzLCB5b3UgYXJlIHdlbGNvbWUgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZSB0aGlzIHByb2dyYW0uCi0rIFlvdSBhcmUgZm9yYmlkZGVuIHRvIGZvcmJpZCBhbnlvbmUgZWxzZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlCi0rIHdoYXQgeW91IGdpdmUgdGhlbS4gICBIZWxwIHN0YW1wIG91dCBzb2Z0d2FyZS1ob2FyZGluZyEgICovCi0rCi0rI2lmbmRlZiBMSUJDUFBfRklMRV9NQVBfSAotKyNkZWZpbmUgTElCQ1BQX0ZJTEVfTUFQX0gKLSsKLStjb25zdCBjaGFyICogcmVtYXBfZmlsZV9maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwotKwotK2ludCBhZGRfZmlsZV9wcmVmaXhfbWFwIChjb25zdCBjaGFyICphcmcpOwotKwotKyNlbmRpZiAvKiAhTElCQ1BQX0ZJTEVfTUFQX0ggICovCi1kaWZmIC0tZ2l0IGEvbGliY3BwL21hY3JvLmMgYi9saWJjcHAvbWFjcm8uYwotaW5kZXggYzI1MTU1My4uM2NlZWMzZCAxMDA2NDQKLS0tLSBhL2xpYmNwcC9tYWNyby5jCi0rKysgYi9saWJjcHAvbWFjcm8uYwotQEAgLTI2LDYgKzI2LDcgQEAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjaW5jbHVkZSAic3lzdGVtLmgiCi0gI2luY2x1ZGUgImNwcGxpYi5oIgotICNpbmNsdWRlICJpbnRlcm5hbC5oIgotKyNpbmNsdWRlICJmaWxlLW1hcC5oIgotIAotIHR5cGVkZWYgc3RydWN0IG1hY3JvX2FyZyBtYWNyb19hcmc7Ci0gLyogVGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyB0aGUgdG9rZW5zIG9mIGEgbWFjcm8gYXJndW1lbnQuICBUaGVzZQotQEAgLTMwMSw2ICszMDIsNyBAQCBfY3BwX2J1aWx0aW5fbWFjcm9fdGV4dCAoY3BwX3JlYWRlciAqcGZpbGUsIGNwcF9oYXNobm9kZSAqbm9kZSwKLSAJICAgIGlmICghbmFtZSkKLSAJICAgICAgYWJvcnQgKCk7Ci0gCSAgfQotKwluYW1lID0gcmVtYXBfZmlsZV9maWxlbmFtZSAobmFtZSk7Ci0gCWxlbiA9IHN0cmxlbiAobmFtZSk7Ci0gCWJ1ZiA9IF9jcHBfdW5hbGlnbmVkX2FsbG9jIChwZmlsZSwgbGVuICogMiArIDMpOwotIAlyZXN1bHQgPSBidWY7Ci0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0My1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDMtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDc3ZjgwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0My1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDI1Yzg3YzZjYzQwZWM1Y2M2OTY1ZjhiZmIyMTViZWMwMWFiZDZkODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE2IE1hciAyMDE2IDA1OjM5OjU5IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDMvNDZdIFJldXNlIC1mZGVidWctcHJlZml4LW1hcCB0byByZXBsYWNlIC1mZmlsZS1wcmVmaXgtbWFwCi0KLVRoZSBvZS1jb3JlIG1heSB1c2UgZXh0ZXJuYWwgdG9vbGNoYWluIHRvIGNvbXBpbGUsCi13aGljaCBtYXkgbm90IHN1cHBvcnQgLWZmaWxlLXByZWZpeC1tYXAuCi0KLVNpbmNlIHdlIHVzZSAtZmRlYnVnLXByZWZpeC1tYXAgdG8gZG8gdGhlIHNhbWUgdGhpbmcsCi1zbyB3ZSBjb3VsZCByZXVzZSBpdCB0byByZXBsYWNlIC1mZmlsZS1wcmVmaXgtbWFwLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbb2UtY29yZSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL29wdHMtZ2xvYmFsLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2Mvb3B0cy1nbG9iYWwuYyBiL2djYy9vcHRzLWdsb2JhbC5jCi1pbmRleCBiN2U1MjMyLi4xMjFkN2I5IDEwMDY0NAotLS0tIGEvZ2NjL29wdHMtZ2xvYmFsLmMKLSsrKyBiL2djYy9vcHRzLWdsb2JhbC5jCi1AQCAtMzEsNiArMzEsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNpbmNsdWRlICJsYW5naG9va3MuaCIKLSAjaW5jbHVkZSAiZGJnY250LmgiCi0gI2luY2x1ZGUgImRlYnVnLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0gI2luY2x1ZGUgIm91dHB1dC5oIgotICNpbmNsdWRlICJwbHVnaW4uaCIKLSAjaW5jbHVkZSAidG9wbGV2LmgiCi1AQCAtMzU3LDYgKzM1OCw5IEBAIGhhbmRsZV9jb21tb25fZGVmZXJyZWRfb3B0aW9ucyAodm9pZCkKLSAKLSAJY2FzZSBPUFRfZmRlYnVnX3ByZWZpeF9tYXBfOgotIAkgIGFkZF9kZWJ1Z19wcmVmaXhfbWFwIChvcHQtPmFyZyk7Ci0rCi0rCSAgLyogUmV1c2UgLWZkZWJ1Zy1wcmVmaXgtbWFwIHRvIHJlcGxhY2UgLWZmaWxlLXByZWZpeC1tYXAgKi8KLSsJICBhZGRfZmlsZV9wcmVmaXhfbWFwIChvcHQtPmFyZyk7Ci0gCSAgYnJlYWs7Ci0gCi0gCWNhc2UgT1BUX2ZkdW1wXzoKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ0LWdjYy1maW5hbC5jLWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtc291cmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDQtZ2NjLWZpbmFsLmMtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1zb3VyYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ0MWFmNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDQtZ2NjLWZpbmFsLmMtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1zb3VyYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gNmFiMjNlODhhZWYyMmJiYWJlZTdiOTYwMGM0NTlmZjM5NTQ3YmI2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjQgTWFyIDIwMTYgMTE6MjM6MTQgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCA0NC80Nl0gZ2NjL2ZpbmFsLmM6IC1mZGVidWctcHJlZml4LW1hcCBzdXBwb3J0IHRvIHJlbWFwCi0gc291cmNlcyB3aXRoIHJlbGF0aXZlIHBhdGgKLQotUFIgb3RoZXIvNzA0MjgKLSogZmluYWwuYyAocmVtYXBfZGVidWdfZmlsZW5hbWUpOiBVc2UgbHJlYWxwYXRoIHRvIHRyYW5zbGF0ZQotcmVsYXRpdmUgcGF0aCBiZWZvcmUgcmVtYXBwaW5nCi0KLWh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTcwNDI4Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmddCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9maW5hbC5jIHwgMTUgKysrKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvZmluYWwuYyBiL2djYy9maW5hbC5jCi1pbmRleCA1NWNmNTA5Li4yMzI5M2U1IDEwMDY0NAotLS0tIGEvZ2NjL2ZpbmFsLmMKLSsrKyBiL2djYy9maW5hbC5jCi1AQCAtMTU1NCwxNiArMTU1NCwyNSBAQCByZW1hcF9kZWJ1Z19maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0gICBjb25zdCBjaGFyICpuYW1lOwotICAgc2l6ZV90IG5hbWVfbGVuOwotIAotKyAgLyogU3VwcG9ydCB0byByZW1hcCBmaWxlbmFtZSB3aXRoIHJlbGF0aXZlIHBhdGggICovCi0rICBjaGFyICpyZWFscGF0aCA9IGxyZWFscGF0aCAoZmlsZW5hbWUpOwotKyAgaWYgKHJlYWxwYXRoID09IE5VTEwpCi0rICAgIHJldHVybiBmaWxlbmFtZTsKLSsKLSAgIGZvciAobWFwID0gZGVidWdfcHJlZml4X21hcHM7IG1hcDsgbWFwID0gbWFwLT5uZXh0KQotLSAgICBpZiAoZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQotKyAgICBpZiAoZmlsZW5hbWVfbmNtcCAocmVhbHBhdGgsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQotICAgICAgIGJyZWFrOwotICAgaWYgKCFtYXApCi0tICAgIHJldHVybiBmaWxlbmFtZTsKLS0gIG5hbWUgPSBmaWxlbmFtZSArIG1hcC0+b2xkX2xlbjsKLSsgICAgewotKyAgICAgIGZyZWUgKHJlYWxwYXRoKTsKLSsgICAgICByZXR1cm4gZmlsZW5hbWU7Ci0rICAgIH0KLSsgIG5hbWUgPSByZWFscGF0aCArIG1hcC0+b2xkX2xlbjsKLSAgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKSArIDE7Ci0gICBzID0gKGNoYXIgKikgYWxsb2NhIChuYW1lX2xlbiArIG1hcC0+bmV3X2xlbik7Ci0gICBtZW1jcHkgKHMsIG1hcC0+bmV3X3ByZWZpeCwgbWFwLT5uZXdfbGVuKTsKLSAgIG1lbWNweSAocyArIG1hcC0+bmV3X2xlbiwgbmFtZSwgbmFtZV9sZW4pOwotKyAgZnJlZSAocmVhbHBhdGgpOwotICAgcmV0dXJuIGdnY19zdHJkdXAgKHMpOwotIH0KLSAMCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0NS1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0NS1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYyYjcyNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDUtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotRnJvbSA1YTQ3ZDQwNGVhMjllMjU0NzI2OWUzZGRmMzg3NTQ0NjJkOTNmOTAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgQXByIDIwMTYgMjA6MDM6MjggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0NS80Nl0gbGliZ2NjOiBBZGQga25vYiB0byB1c2UgbGRibC0xMjggb24gcHBjCi0KLW11c2wgZG9lcyBub3Qgc3VwcG9ydCBsZGJsIDEyOCBzbyB3ZSBjYW4gbm90IGFzc3VtZQotdGhhdCBsaW51eCBhcyBhIHdob2xlIHN1cHBvcnRzIGxkYmwtMTI4IGJpdHMsIGluc3RlYWQKLWFjdCB1cG9uIGNvbmZpZ3VyZSBvcHRpb24gcGFzc2VkIHRvIGdjYyBhbmQgYXNzdW1lIG5vCi1vbiBtdXNsIGFuZCB5ZXMgb3RoZXJ3aXNlIGlmIG5vIG9wdGlvbiBpcyBwYXNzZWQgc2luY2UKLWRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGFzc3VtZSBsZGJsMTI4IGl0IGRvZXMgbm90Ci1jaGFuZ2UgdGhlIGRlZmF1bHRzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gbGliZ2NjL01ha2VmaWxlLmluICAgICAgICAgICB8ICAxICsKLSBsaWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IHwgIDUgKysrKy0KLSBsaWJnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrKysrKysrCi0gbGliZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDEyICsrKysrKysrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgbGliZ2NjL2NvbmZpZ3VyZQotCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL01ha2VmaWxlLmluIGIvbGliZ2NjL01ha2VmaWxlLmluCi1pbmRleCBmMDliMzliLi4yOTZjZjBmIDEwMDY0NAotLS0tIGEvbGliZ2NjL01ha2VmaWxlLmluCi0rKysgYi9saWJnY2MvTWFrZWZpbGUuaW4KLUBAIC00Myw2ICs0Myw3IEBAIGVuYWJsZV92dGFibGVfdmVyaWZ5ID0gQGVuYWJsZV92dGFibGVfdmVyaWZ5QAotIGVuYWJsZV9kZWNpbWFsX2Zsb2F0ID0gQGVuYWJsZV9kZWNpbWFsX2Zsb2F0QAotIGZpeGVkX3BvaW50ID0gQGZpeGVkX3BvaW50QAotIHdpdGhfYWl4X3NvbmFtZSA9IEB3aXRoX2FpeF9zb25hbWVACi0rd2l0aF9sZGJsMTI4ID0gQHdpdGhfbGRibDEyOEAKLSAKLSBob3N0X25vbmNhbm9uaWNhbCA9IEBob3N0X25vbmNhbm9uaWNhbEAKLSByZWFsX2hvc3Rfbm9uY2Fub25pY2FsID0gQHJlYWxfaG9zdF9ub25jYW5vbmljYWxACi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eCBiL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKLWluZGV4IDRmNmQ0YzQuLmM1MGRkOTQgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4Ci0rKysgYi9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4Ci1AQCAtMSwzICsxLDYgQEAKLSBTSExJQl9NQVBGSUxFUyArPSAkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9saWJnY2MtZ2xpYmMudmVyCi0gCi0tSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTEyOCAtbW5vLW1pbmltYWwtdG9jCi0raWZlcSAoJCh3aXRoX2xkYmwxMjgpLHllcykKLStIT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbG9uZy1kb3VibGUtMTI4Ci0rZW5kaWYKLStIT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbm8tbWluaW1hbC10b2MKLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlndXJlIGIvbGliZ2NjL2NvbmZpZ3VyZQotb2xkIG1vZGUgMTAwNjQ0Ci1uZXcgbW9kZSAxMDA3NTUKLWluZGV4IGU3ZDZjNzUuLmU5YTkwMTkKLS0tLSBhL2xpYmdjYy9jb25maWd1cmUKLSsrKyBiL2xpYmdjYy9jb25maWd1cmUKLUBAIC02MTQsNiArNjE0LDcgQEAgYnVpbGRfdmVuZG9yCi0gYnVpbGRfY3B1Ci0gYnVpbGQKLSB3aXRoX2FpeF9zb25hbWUKLSt3aXRoX2xkYmwxMjgKLSBlbmFibGVfdnRhYmxlX3ZlcmlmeQotIGVuYWJsZV9zaGFyZWQKLSBsaWJnY2NfdG9wZGlyCi1AQCAtNjYzLDYgKzY2NCw3IEBAIHdpdGhfY3Jvc3NfaG9zdAotIHdpdGhfbGQKLSBlbmFibGVfc2hhcmVkCi0gZW5hYmxlX3Z0YWJsZV92ZXJpZnkKLSt3aXRoX2xvbmdfZG91YmxlXzEyOAotIHdpdGhfYWl4X3NvbmFtZQotIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicwotIHdpdGhfc2xpYmRpcgotQEAgLTEzMTksNiArMTMyMSw3IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXRhcmdldC1zdWJkaXI9U1VCRElSICAgICAgQ29uZmlndXJpbmcgaW4gYSBzdWJkaXJlY3RvcnkgZm9yIHRhcmdldAotICAgLS13aXRoLWNyb3NzLWhvc3Q9SE9TVCAgICAgICAgICAgQ29uZmlndXJpbmcgd2l0aCBhIGNyb3NzIGNvbXBpbGVyCi0gICAtLXdpdGgtbGQgICAgICAgICAgICAgICBhcnJhbmdlIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGxkIChmdWxsIHBhdGhuYW1lKQotKyAgLS13aXRoLWxvbmctZG91YmxlLTEyOCAgdXNlIDEyOC1iaXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdAotICAgLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlIG9uIEFJWAotQEAgLTIyMDEsNiArMjIwNCwyMSBAQCBmaQotIAotIAotIAotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbG9uZy1kb3VibGUtMTI4IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbG9uZ19kb3VibGVfMTI4K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbG9uZ19kb3VibGVfMTI4OyB3aXRoX2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIKLStlbHNlCi0rICBjYXNlICIke2hvc3R9IiBpbgotKyBwb3dlciotKi1tdXNsKikKLSsgICB3aXRoX2xkYmwxMjg9Im5vIjs7Ci0rICopIHdpdGhfbGRibDEyOD0ieWVzIjs7Ci0rIGVzYWMKLSsKLStmaQotKwotKwotKwotKwotICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYWl4LXNvbmFtZSB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHt3aXRoX2FpeF9zb25hbWUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgd2l0aHZhbD0kd2l0aF9haXhfc29uYW1lOyBjYXNlICIke2hvc3R9OiR7ZW5hYmxlX3NoYXJlZH0iIGluCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZS5hYyBiL2xpYmdjYy9jb25maWd1cmUuYWMKLWluZGV4IDI2OTk5N2YuLjgxZGMzYmEgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlndXJlLmFjCi0rKysgYi9saWJnY2MvY29uZmlndXJlLmFjCi1AQCAtNzcsNiArNzcsMTggQEAgQUNfQVJHX0VOQUJMRSh2dGFibGUtdmVyaWZ5LAotIFtlbmFibGVfdnRhYmxlX3ZlcmlmeT1ub10pCi0gQUNfU1VCU1QoZW5hYmxlX3Z0YWJsZV92ZXJpZnkpCi0gCi0rQUNfQVJHX1dJVEgobG9uZy1kb3VibGUtMTI4LAotK1tBU19IRUxQX1NUUklORyhbLS13aXRoLWxvbmctZG91YmxlLTEyOF0sCi0rICAgIFt1c2UgMTI4LWJpdCBsb25nIGRvdWJsZSBieSBkZWZhdWx0XSldLAotKyAgICAgIHdpdGhfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IiwKLStbY2FzZSAiJHtob3N0fSIgaW4KLSsgcG93ZXIqLSotbXVzbCopCi0rICAgd2l0aF9sZGJsMTI4PSJubyI7OwotKyAqKSB3aXRoX2xkYmwxMjg9InllcyI7OwotKyBlc2FjCi0rXSkKLStBQ19TVUJTVCh3aXRoX2xkYmwxMjgpCi0rCi0gQUNfQVJHX1dJVEgoYWl4LXNvbmFtZSwKLSBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1haXgtc29uYW1lPWFpeHxzdnI0fGJvdGhdLAotICAgICBbc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvIHByb3ZpZGUgb24gQUlYXSldLAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDYtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ2LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkwMDM3Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDYtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSA1MTNiZjNjMzNlMmY1NTFmMDhiZDU3NjA1MDkxZDVkZGViYTM1MzZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNCBNYXkgMjAxNiAyMToxMTozNCAtMDcwMAotU3ViamVjdDogW1BBVENIIDQ2LzQ2XSBMaW5rIGxpYmdjYyB1c2luZyBMREZMQUdTLCBub3QganVzdCBTSExJQl9MREZMQUdTCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmdjYy9jb25maWcvdC1zbGliZ2NjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgYi9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYwotaW5kZXggOGM1Zjg5MC4uMjliZTkwOSAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi0rKysgYi9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYwotQEAgLTMyLDcgKzMyLDcgQEAgU0hMSUJfSU5TVEFMTF9TT0xJTksgPSAkKExOX1MpICQoU0hMSUJfU09OQU1FKSBcCi0gCSQoREVTVERJUikkKHNsaWJkaXIpJChTSExJQl9TTElCRElSX1FVQUwpLyQoU0hMSUJfU09MSU5LKQotIAotIFNITElCX0xJTksgPSAkKENDKSAkKExJQkdDQzJfQ0ZMQUdTKSAtc2hhcmVkIC1ub2RlZmF1bHRsaWJzIFwKLS0JJChTSExJQl9MREZMQUdTKSBcCi0rCSQoTERGTEFHUykgJChTSExJQl9MREZMQUdTKSBcCi0gCS1vICQoU0hMSUJfRElSKS8kKFNITElCX1NPTkFNRSkudG1wIEBtdWx0aWxpYl9mbGFnc0AgXAotIAkkKFNITElCX09CSlMpICQoU0hMSUJfTEMpICYmIFwKLSAJcm0gLWYgJChTSExJQl9ESVIpLyQoU0hMSUJfU09MSU5LKSAmJiBcCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0Ny1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ3LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNWRhMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ3LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1Gcm9tIDBhOWVkMDQ3OTIwM2NiN2U2OWMzNzQ1YjBjMjU5MDA3NDEwZjM5YmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KLURhdGU6IFNhdCwgMjQgT2N0IDIwMTUgMjA6MDk6NTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0Ny80N10gbGliZ2NjX3M6IFVzZSBhbGlhcyBmb3IgX19jcHVfaW5kaWNhdG9yX2luaXQgaW5zdGVhZCBvZgotIHN5bXZlcgotCi1BZGFwdGVyIGZyb20KLQotaHR0cHM6Ly9nY2MuZ251Lm9yZy9tbC9nY2MtcGF0Y2hlcy8yMDE1LTA1L21zZzAwODk5Lmh0bWwKLQotVGhpcyBmaXggd2FzIGRlYmF0ZWQgYnV0IGhhc250IGJlZW4gYXBwbGllZCBnY2MgdXBzdHJlYW0gc2luY2UKLXRoZXkgZXhwZWN0IG11c2wgdG8gc3VwcG9ydCAnQCcgaW4gc3ltYm9sIHZlcnNpb25pbmcgd2hpY2ggaXMKLWEgc3VuL2dudSB2ZXJzaW9uaW5nIGV4dGVudGlvbi4gVGhpcyBwYXRjaCBob3dldmVyIGF2b2lkcyB0aGUKLW5lZWQgZm9yIHRoZSAnQCcgc3ltYm9scyBhdCBhbGwKLQotbGliZ2NjL0NoYW5nZWxvZzoKLQotMjAxNS0wNS0xMSAgU3phYm9sY3MgTmFneSAgPHN6YWJvbGNzLm5hZ3lAYXJtLmNvbT4KLQotCSogY29uZmlnL2kzODYvY3B1aW5mby5jIChfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCk6IEFkZC4KLQkoX19jcHVfaW5kaWNhdG9yX2luaXRAR0NDXzQuOC4wLCBfX2NwdV9tb2RlbEBHQ0NfNC44LjApOiBSZW1vdmUuCi0KLQkqIGNvbmZpZy9pMzg2L3QtbGludXggKEhPU1RfTElCR0NDMl9DRkxBR1MpOiBSZW1vdmUgLURVU0VfRUxGX1NZTVZFUi4KLQotZ2NjL0NoYW5nZWxvZzoKLQotMjAxNS0wNS0xMSAgU3phYm9sY3MgTmFneSAgPHN6YWJvbGNzLm5hZ3lAYXJtLmNvbT4KLQotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9idWlsdGluKTogTWFrZSBfX2J1aWx0aW5fY3B1X2luaXQKLQljYWxsIF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIGluc3RlYWQgb2YgX19jcHVfaW5kaWNhdG9yX2luaXQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkCi0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgIHwgNCArKy0tCi0gbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyB8IDYgKysrLS0tCi0gbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1pbmRleCA4NjFhMDI5Li4xYzk3ZDcyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotQEAgLTQwMzIzLDEwICs0MDMyMywxMCBAQCBpeDg2X2V4cGFuZF9idWlsdGluICh0cmVlIGV4cCwgcnR4IHRhcmdldCwgcnR4IHN1YnRhcmdldCwKLSAgICAgewotICAgICBjYXNlIElYODZfQlVJTFRJTl9DUFVfSU5JVDoKLSAgICAgICB7Ci0tCS8qIE1ha2UgaXQgY2FsbCBfX2NwdV9pbmRpY2F0b3JfaW5pdCBpbiBsaWJnY2MuICovCi0rCS8qIE1ha2UgaXQgY2FsbCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCBpbiBsaWJnY2MuYS4gKi8KLSAJdHJlZSBjYWxsX2V4cHIsIGZuZGVjbCwgdHlwZTsKLSAgICAgICAgIHR5cGUgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKGludGVnZXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOyAKLS0JZm5kZWNsID0gYnVpbGRfZm5fZGVjbCAoIl9fY3B1X2luZGljYXRvcl9pbml0IiwgdHlwZSk7Ci0rCWZuZGVjbCA9IGJ1aWxkX2ZuX2RlY2wgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCIsIHR5cGUpOwotIAljYWxsX2V4cHIgPSBidWlsZF9jYWxsX2V4cHIgKGZuZGVjbCwgMCk7IAotIAlyZXR1cm4gZXhwYW5kX2V4cHIgKGNhbGxfZXhwciwgdGFyZ2V0LCBtb2RlLCBFWFBBTkRfTk9STUFMKTsKLSAgICAgICB9Ci1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyBiL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMKLWluZGV4IDhjMjI0OGQuLjZjODJmMTUgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCi0rKysgYi9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCi1AQCAtNDg1LDcgKzQ4NSw3IEBAIF9fY3B1X2luZGljYXRvcl9pbml0ICh2b2lkKQotICAgcmV0dXJuIDA7Ci0gfQotIAotLSNpZiBkZWZpbmVkIFNIQVJFRCAmJiBkZWZpbmVkIFVTRV9FTEZfU1lNVkVSCi0tX19hc21fXyAoIi5zeW12ZXIgX19jcHVfaW5kaWNhdG9yX2luaXQsIF9fY3B1X2luZGljYXRvcl9pbml0QEdDQ180LjguMCIpOwotLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X21vZGVsLCBfX2NwdV9tb2RlbEBHQ0NfNC44LjAiKTsKLSsjaWZuZGVmIFNIQVJFRAotK2ludCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCAodm9pZCkKLSsgIF9fYXR0cmlidXRlX18gKCh3ZWFrLCBhbGlhcyAoIl9fY3B1X2luZGljYXRvcl9pbml0IikpKTsKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eCBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4Ci1pbmRleCAxMWJiNDZlLi40ZjQ3ZjdiIDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKLSsrKyBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4Ci1AQCAtMyw0ICszLDQgQEAKLSAjIHQtc2xpYmdjYy1lbGYtdmVyIGFuZCB0LWxpbnV4Ci0gU0hMSUJfTUFQRklMRVMgPSBsaWJnY2Mtc3RkLnZlciAkKHNyY2RpcikvY29uZmlnL2kzODYvbGliZ2NjLWdsaWJjLnZlcgotIAotLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAtRFVTRV9FTEZfU1lNVkVSCi0rSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwCi0tLSAKLTIuOS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0OC1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDgtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGMxNThkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0OC1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1Gcm9tIDEwNTk1YzAzYzM5YjRlOTgwZDJhMDBlMTZmYzg0ZTljYWY4MjI5MmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzIEZlYiAyMDE3IDEyOjU2OjAwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggNDgvNDhdIHN5bmMgZ2NjIHN0ZGRlZi5oIHdpdGggbXVzbAotCi1tdXNsIGRlZmluZXMgcHRyZGlmZl90IHNpemVfdCBhbmQgd2NoYXJfdAotc28gZG9udCBkZWZpbmUgdGhlbSBoZXJlIGlmIG11c2wgaXMgZGVmaW5pbmluZyB0aGVtCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2luY2x1ZGUvc3RkZGVmLmggYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKLWluZGV4IGQ3MTE1MzBkMDUzLi5jMzE1YjdhOTdjMSAxMDA2NDQKLS0tLSBhL2djYy9naW5jbHVkZS9zdGRkZWYuaAotKysrIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi1AQCAtMTM0LDYgKzEzNCw3IEBAIF9UWVBFX3djaGFyX3Q7Ci0gI2lmbmRlZiBfX19pbnRfcHRyZGlmZl90X2gKLSAjaWZuZGVmIF9HQ0NfUFRSRElGRl9UCi0gI2lmbmRlZiBfUFRSRElGRl9UX0RFQ0xBUkVEIC8qIERyYWdvbkZseSAqLwotKyNpZm5kZWYgX19ERUZJTkVEX3B0cmRpZmZfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfUFRSRElGRl9UCi0gI2RlZmluZSBfVF9QVFJESUZGXwotICNkZWZpbmUgX1RfUFRSRElGRgotQEAgLTE0MywxMCArMTQ0LDEyIEBAIF9UWVBFX3djaGFyX3Q7Ci0gI2RlZmluZSBfX19pbnRfcHRyZGlmZl90X2gKLSAjZGVmaW5lIF9HQ0NfUFRSRElGRl9UCi0gI2RlZmluZSBfUFRSRElGRl9UX0RFQ0xBUkVECi0rI2RlZmluZSBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KLSAjaWZuZGVmIF9fUFRSRElGRl9UWVBFX18KLSAjZGVmaW5lIF9fUFRSRElGRl9UWVBFX18gbG9uZyBpbnQKLSAjZW5kaWYKLSB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OwotKyNlbmRpZiAvKiBfX0RFRklORURfcHRyZGlmZl90ICovCi0gI2VuZGlmIC8qIF9QVFJESUZGX1RfREVDTEFSRUQgKi8KLSAjZW5kaWYgLyogX0dDQ19QVFJESUZGX1QgKi8KLSAjZW5kaWYgLyogX19faW50X3B0cmRpZmZfdF9oICovCi1AQCAtMTg0LDYgKzE4Nyw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0gI2lmbmRlZiBfR0NDX1NJWkVfVAotICNpZm5kZWYgX1NJWkVUXwotICNpZm5kZWYgX19zaXplX3QKLSsjaWZuZGVmIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLwotICNkZWZpbmUgX19zaXplX3RfXwkvKiBCZU9TICovCi0gI2RlZmluZSBfX1NJWkVfVF9fCS8qIENyYXkgVW5pY29zL01rICovCi0gI2RlZmluZSBfU0laRV9UCi1AQCAtMjAwLDYgKzIwNCw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0gI2RlZmluZSBfX19pbnRfc2l6ZV90X2gKLSAjZGVmaW5lIF9HQ0NfU0laRV9UCi0gI2RlZmluZSBfU0laRVRfCi0rI2RlZmluZSBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KLSAjaWYgKGRlZmluZWQgKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNEX18gPj0gNSkpIFwKLSAgIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgXAotICAgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCi1AQCAtMjM1LDYgKzI0MCw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OwotICNlbmRpZiAvKiBfU0laRV9UICovCi0gI2VuZGlmIC8qIF9fU0laRV9UX18gKi8KLSAjZW5kaWYgLyogX19zaXplX3RfXyAqLwotKyNlbmRpZiAvKiBfX0RFRklORURfc2l6ZV90ICovCi0gI3VuZGVmCV9fbmVlZF9zaXplX3QKLSAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF9zaXplX3QuICAqLwotIAotQEAgLTI2NCw2ICsyNzAsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKLSAjaWZuZGVmIF9fX2ludF93Y2hhcl90X2gKLSAjaWZuZGVmIF9fSU5UX1dDSEFSX1RfSAotICNpZm5kZWYgX0dDQ19XQ0hBUl9UCi0rI2lmbmRlZiBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfX3djaGFyX3RfXwkvKiBCZU9TICovCi0gI2RlZmluZSBfX1dDSEFSX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLwotICNkZWZpbmUgX1dDSEFSX1QKLUBAIC0yNzksNiArMjg2LDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7Ci0gI2RlZmluZSBfX0lOVF9XQ0hBUl9UX0gKLSAjZGVmaW5lIF9HQ0NfV0NIQVJfVAotICNkZWZpbmUgX1dDSEFSX1RfREVDTEFSRUQKLSsjZGVmaW5lIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KLSAKLSAvKiBPbiBCU0QvMzg2IDEuMSwgYXQgbGVhc3QsIG1hY2hpbmUvYW5zaS5oIGRlZmluZXMgX0JTRF9XQ0hBUl9UXwotICAgIGluc3RlYWQgb2YgX1dDSEFSX1RfLCBhbmQgX0JTRF9SVU5FX1RfICh3aGljaCwgdW5saWtlIHRoZSBvdGhlcgotQEAgLTM0NCw2ICszNTIsNyBAQCB0eXBlZGVmIF9fV0NIQVJfVFlQRV9fIHdjaGFyX3Q7Ci0gI2VuZGlmCi0gI2VuZGlmIC8qIF9fV0NIQVJfVF9fICovCi0gI2VuZGlmIC8qIF9fd2NoYXJfdF9fICovCi0rI2VuZGlmIC8qIF9fREVGSU5FRF93Y2hhcl90IG11c2wgKi8KLSAjdW5kZWYJX19uZWVkX3djaGFyX3QKLSAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF93Y2hhcl90LiAgKi8KLSAKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA1NF9hbGxfbm9waWUtYWxsLWZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDU0X2FsbF9ub3BpZS1hbGwtZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczYWI5NTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDU0X2FsbF9ub3BpZS1hbGwtZmxhZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1OZWVkIHRvIHBhc3MgTk9fUElFX0NGTEFHUyB0byBBTExfKiBzbyBnY2MgZG9lc24ndCBmYWlsIHdoZW4KLXdlIGNvbXBpbGUgaXQgd2l0aCBvbGRlciBnY2MgYW5kIHBpZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1NYWludGFpbmVkIGJ5OiBHZW50b28gVG9vbGNoYWluIFByb2plY3QgPHRvb2xjaGFpbkBnZW50b28ub3JnPgotU2lnbmVkLW9mZi1ieTogU3RlcGhlbiBBcm5vbGQgPHN0ZXBoZW4uYXJub2xkNDJAZ21haWwuY29tPgotCi0tLS0gYS9nY2MvTWFrZWZpbGUuaW4JMjAxNS0wNi0yNSAxOToxODoxMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL2djYy9NYWtlZmlsZS5pbgkyMDE2LTA0LTIyIDAwOjEyOjU0LjAyOTE3ODg2MCArMDIwMAotQEAgLTk5MSwxMCArOTkxLDEwIEBAIEFMTF9DWFhGTEFHUyA9ICQoVF9DRkxBR1MpICQoQ0ZMQUdTLSRAKQotIEFMTF9DUFBGTEFHUyA9ICQoSU5DTFVERVMpICQoQ1BQRkxBR1MpCi0KLSAjIFRoaXMgaXMgdGhlIHZhcmlhYmxlIHRvIHVzZSB3aGVuIHVzaW5nICQoQ09NUElMRVIpLgotLUFMTF9DT01QSUxFUkZMQUdTID0gJChBTExfQ1hYRkxBR1MpCi0rQUxMX0NPTVBJTEVSRkxBR1MgPSAkKE5PX1BJRV9DRkxBR1MpICQoQUxMX0NYWEZMQUdTKQotCi0gIyBUaGlzIGlzIHRoZSB2YXJpYWJsZSB0byB1c2Ugd2hlbiB1c2luZyAkKExJTktFUikuCi0tQUxMX0xJTktFUkZMQUdTID0gJChBTExfQ1hYRkxBR1MpCi0rQUxMX0xJTktFUkZMQUdTID0gJChOT19QSUVfQ0ZMQUdTKSAkKEFMTF9DWFhGTEFHUykKLQotICMgQnVpbGQgYW5kIGhvc3Qgc3VwcG9ydCBsaWJyYXJpZXMuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNTUtdW53aW5kX2gtZ2xpYmMyNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA1NS11bndpbmRfaC1nbGliYzI2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjY2Y2ZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA1NS11bndpbmRfaC1nbGliYzI2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLUJhY2twb3J0IGFuZCBlZGl0IG9mIHBhdGNoZXMgZnJvbToKLWh0dHBzOi8vZ2NjLmdudS5vcmcvdmlld2N2cy9nY2M/bGltaXRfY2hhbmdlcz0wJnZpZXc9cmV2aXNpb24mcmV2aXNpb249MjQ5OTU3Ci1ieSBqc20yOCAoSm9zZXBoIE15ZXJzKQotCi1DdXJyZW50IGdsaWJjIG5vIGxvbmdlciBnaXZlcyB0aGUgdWNvbnRleHRfdCB0eXBlIHRoZSB0YWcgc3RydWN0Ci11Y29udGV4dCwgdG8gY29uZm9ybSB3aXRoIFBPU0lYIG5hbWVzcGFjZSBydWxlcy4gIFRoaXMgcmVxdWlyZXMKLXZhcmlvdXMgbGludXgtdW53aW5kLmggZmlsZXMgaW4gbGliZ2NjLCB0aGF0IHdlcmUgcHJldmlvdXNseSB1c2luZwotc3RydWN0IHVjb250ZXh0LCB0byBiZSBmaXhlZCB0byB1c2UgdWNvbnRleHRfdCBpbnN0ZWFkLiAgVGhpcyBpcwotc2ltaWxhciB0byB0aGUgcmVtb3ZhbCBvZiB0aGUgc3RydWN0IHNpZ2luZm8gdGFnIGZyb20gc2lnaW5mb190IHNvbWUKLXllYXJzIGFnby4KLQotVGhpcyBwYXRjaCBjaGFuZ2VzIHRob3NlIGZpbGVzIHRvIHVzZSB1Y29udGV4dF90IGluc3RlYWQuICBBcyB0aGUKLXN0YW5kYXJkIG5hbWUgdGhhdCBzaG91bGQgYmUgdW5jb25kaXRpb25hbGx5IHNhZmUsIHNvIHRoaXMgaXMgbm90Ci1yZXN0cmljdGVkIHRvIGFyY2hpdGVjdHVyZXMgc3VwcG9ydGVkIGJ5IGdsaWJjLCBvciBjb25kaXRpb25lZCBvbiB0aGUKLWdsaWJjIHZlcnNpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL2FhcmNoNjQvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcvYWFyY2g2NC9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTUyLDcgKzUyLDcgQEAKLSAgIHN0cnVjdCBydF9zaWdmcmFtZQotICAgewotICAgICBzaWdpbmZvX3QgaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0IHVjOwotKyAgICB1Y29udGV4dF90IHVjOwotICAgfTsKLSAKLSAgIHN0cnVjdCBydF9zaWdmcmFtZSAqcnRfOwotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL2FscGhhL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjI6NTYJMjQ5OTU2Ci0tLS0gYi9saWJnY2MvY29uZmlnL2FscGhhL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjM6NTcJMjQ5OTU3Ci1AQCAtNTEsNyArNTEsNyBAQAotICAgICB7Ci0gICAgICAgc3RydWN0IHJ0X3NpZ2ZyYW1lIHsKLSAJc2lnaW5mb190IGluZm87Ci0tCXN0cnVjdCB1Y29udGV4dCB1YzsKLSsJdWNvbnRleHRfdCB1YzsKLSAgICAgICB9ICpydF8gPSBjb250ZXh0LT5jZmE7Ci0gICAgICAgc2MgPSAmcnRfLT51Yy51Y19tY29udGV4dDsKLSAgICAgfQotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL2JmaW4vbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcvYmZpbi9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTUyLDcgKzUyLDcgQEAKLSAJdm9pZCAqcHVjOwotIAljaGFyIHJldGNvZGVbOF07Ci0gCXNpZ2luZm9fdCBpbmZvOwotLQlzdHJ1Y3QgdWNvbnRleHQgdWM7Ci0rCXVjb250ZXh0X3QgdWM7Ci0gICAgICAgfSAqcnRfID0gY29udGV4dC0+Y2ZhOwotIAotICAgICAgIC8qIFRoZSB2b2lkICogY2FzdCBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgYW4gYWxpYXNpbmcgd2FybmluZy4KLS0tLSBicmFuY2hlcy9nY2MtNi1icmFuY2gvbGliZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjI6NTYJMjQ5OTU2Ci0tLS0gYi9saWJnY2MvY29uZmlnL2kzODYvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMzo1NwkyNDk5NTcKLUBAIC01OCw3ICs1OCw3IEBACi0gICBpZiAoKih1bnNpZ25lZCBjaGFyICopKHBjKzApID09IDB4NDgKLSAgICAgICAmJiAqKHVuc2lnbmVkIGxvbmcgbG9uZyAqKShwYysxKSA9PSBSVF9TSUdSRVRVUk5fU1lTQ0FMTCkKLSAgICAgewotLSAgICAgIHN0cnVjdCB1Y29udGV4dCAqdWNfID0gY29udGV4dC0+Y2ZhOwotKyAgICAgIHVjb250ZXh0X3QgKnVjXyA9IGNvbnRleHQtPmNmYTsKLSAgICAgICAvKiBUaGUgdm9pZCAqIGNhc3QgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGFuIGFsaWFzaW5nIHdhcm5pbmcuCi0gICAgICAgICAgVGhlIGFsaWFzaW5nIHdhcm5pbmcgaXMgY29ycmVjdCwgYnV0IHNob3VsZCBub3QgYmUgYSBwcm9ibGVtCi0gICAgICAgICAgYmVjYXVzZSBpdCBkb2VzIG5vdCBhbGlhcyBhbnl0aGluZy4gICovCi1AQCAtMTM4LDcgKzEzOCw3IEBACi0gCXNpZ2luZm9fdCAqcGluZm87Ci0gCXZvaWQgKnB1YzsKLSAJc2lnaW5mb190IGluZm87Ci0tCXN0cnVjdCB1Y29udGV4dCB1YzsKLSsJdWNvbnRleHRfdCB1YzsKLSAgICAgICB9ICpydF8gPSBjb250ZXh0LT5jZmE7Ci0gICAgICAgLyogVGhlIHZvaWQgKiBjYXN0IGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhbiBhbGlhc2luZyB3YXJuaW5nLgotICAgICAgICAgIFRoZSBhbGlhc2luZyB3YXJuaW5nIGlzIGNvcnJlY3QsIGJ1dCBzaG91bGQgbm90IGJlIGEgcHJvYmxlbQotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL202OGsvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcvbTY4ay9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTMzLDcgKzMzLDcgQEAKLSAvKiA8c3lzL3Vjb250ZXh0Lmg+IGlzIHVuZm9ydHVuYXRlbHkgYnJva2VuIHJpZ2h0IG5vdy4gICovCi0gc3RydWN0IHV3X3Vjb250ZXh0IHsKLSAJdW5zaWduZWQgbG9uZwkgIHVjX2ZsYWdzOwotLQlzdHJ1Y3QgdWNvbnRleHQgICp1Y19saW5rOwotKwl1Y29udGV4dF90CSAqdWNfbGluazsKLSAJc3RhY2tfdAkJICB1Y19zdGFjazsKLSAJbWNvbnRleHRfdAkgIHVjX21jb250ZXh0OwotIAl1bnNpZ25lZCBsb25nCSAgdWNfZmlsbGVyWzgwXTsKLS0tLSBicmFuY2hlcy9nY2MtNi1icmFuY2gvbGliZ2NjL2NvbmZpZy9uaW9zMi9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIyOjU2CTI0OTk1NgotLS0tIGIvbGliZ2NjL2NvbmZpZy9uaW9zMi9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTM4LDcgKzM4LDcgQEAKLSAKLSBzdHJ1Y3QgbmlvczJfdWNvbnRleHQgewotICAgdW5zaWduZWQgbG9uZyB1Y19mbGFnczsKLS0gIHN0cnVjdCB1Y29udGV4dCAqdWNfbGluazsKLSsgIHVjb250ZXh0X3QgKnVjX2xpbms7Ci0gICBzdGFja190IHVjX3N0YWNrOwotICAgc3RydWN0IG5pb3MyX21jb250ZXh0IHVjX21jb250ZXh0OwotICAgc2lnc2V0X3QgdWNfc2lnbWFzazsJLyogbWFzayBsYXN0IGZvciBleHRlbnNpYmlsaXR5ICovCi0tLS0gYnJhbmNoZXMvZ2NjLTYtYnJhbmNoL2xpYmdjYy9jb25maWcvcGEvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcvcGEvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMzo1NwkyNDk5NTcKLUBAIC04MCw3ICs4MCw3IEBACi0gICBzdHJ1Y3Qgc2lnY29udGV4dCAqc2M7Ci0gICBzdHJ1Y3QgcnRfc2lnZnJhbWUgewotICAgICBzaWdpbmZvX3QgaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0IHVjOwotKyAgICB1Y29udGV4dF90IHVjOwotICAgfSAqZnJhbWU7Ci0gCi0gICAvKiBydF9zaWdyZXR1cm4gdHJhbXBvbGluZToKLS0tLSBicmFuY2hlcy9nY2MtNi1icmFuY2gvbGliZ2NjL2NvbmZpZy9zaC9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIyOjU2CTI0OTk1NgotLS0tIGIvbGliZ2NjL2NvbmZpZy9zaC9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTE4MCw3ICsxODAsNyBAQAotICAgICB7Ci0gICAgICAgc3RydWN0IHJ0X3NpZ2ZyYW1lIHsKLSAJc2lnaW5mb190IGluZm87Ci0tCXN0cnVjdCB1Y29udGV4dCB1YzsKLSsJdWNvbnRleHRfdCB1YzsKLSAgICAgICB9ICpydF8gPSBjb250ZXh0LT5jZmE7Ci0gICAgICAgLyogVGhlIHZvaWQgKiBjYXN0IGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhbiBhbGlhc2luZyB3YXJuaW5nLgotICAgICAgICAgIFRoZSBhbGlhc2luZyB3YXJuaW5nIGlzIGNvcnJlY3QsIGJ1dCBzaG91bGQgbm90IGJlIGEgcHJvYmxlbQotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL3RpbGVwcm8vbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcvdGlsZXByby9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTYxLDcgKzYxLDcgQEAKLSAgIHN0cnVjdCBydF9zaWdmcmFtZSB7Ci0gICAgIHVuc2lnbmVkIGNoYXIgc2F2ZV9hcmVhW0NfQUJJX1NBVkVfQVJFQV9TSVpFXTsKLSAgICAgc2lnaW5mb190IGluZm87Ci0tICAgIHN0cnVjdCB1Y29udGV4dCB1YzsKLSsgICAgdWNvbnRleHRfdCB1YzsKLSAgIH0gKnJ0XzsKLSAKLSAgIC8qIFJldHVybiBpZiB0aGlzIGlzIG5vdCBhIHNpZ25hbCBoYW5kbGVyLiAgKi8KLS0tLSBicmFuY2hlcy9nY2MtNi1icmFuY2gvbGliZ2NjL2NvbmZpZy94dGVuc2EvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcveHRlbnNhL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjM6NTcJMjQ5OTU3Ci1AQCAtNjcsNyArNjcsNyBAQAotIAotICAgc3RydWN0IHJ0X3NpZ2ZyYW1lIHsKLSAgICAgc2lnaW5mb190IGluZm87Ci0tICAgIHN0cnVjdCB1Y29udGV4dCB1YzsKLSsgICAgdWNvbnRleHRfdCB1YzsKLSAgIH0gKnJ0XzsKLSAKLSAgIC8qIG1vdmkgYTIsIF9fTlJfcnRfc2lncmV0dXJuOyBzeXNjYWxsICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNTctQVJNLVBSLTgyNDQ1LXN1cHByZXNzLTMyLWJpdC1hbGlnbmVkLWxkcmQtc3RyZC1wZWVwaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA1Ny1BUk0tUFItODI0NDUtc3VwcHJlc3MtMzItYml0LWFsaWduZWQtbGRyZC1zdHJkLXBlZXBoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjE0YWI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA1Ny1BUk0tUFItODI0NDUtc3VwcHJlc3MtMzItYml0LWFsaWduZWQtbGRyZC1zdHJkLXBlZXBoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLUZyb20gYWQ1YmY0NTBhZWYyZmZlZTZkNTdlZDE5M2ZhYmM1ZjcyZjhlYWE2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHJlYXJuc2hhIDxyZWFybnNoYUAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBUaHUsIDE5IE9jdCAyMDE3IDEzOjE2OjQyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFtBUk1dIFBSIDgyNDQ1IC0gc3VwcHJlc3MgMzItYml0IGFsaWduZWQgbGRyZC9zdHJkIHBlZXBob2xpbmcKLSB3aXRoIC1tbm8tdW5hbGlnbmVkLWFjY2VzcwotCi1QZWVwaG9sZSBwYXR0ZXJucyBleGlzdCBpbiB0aGUgYXJtIGJhY2tlbmQgdG8gc3BvdCBsb2FkL3N0b3JlCi1vcGVyYXRpb25zIHRvIGFkamFjZW50IG1lbW9yeSBvcGVyYXRpb25zIGluIG9yZGVyIHRvIGNvbnZlcnQgdGhlbSBpbnRvCi1sZHJkL3N0cmQgaW5zdHJ1Y3Rpb25zLiAgSG93ZXZlciwgd2hlbiB3ZSBoYXZlIHN0cmljdCBhbGlnbm1lbnQKLWVuZm9yY2VkLCB0aGVuIHdlIGNhbiBvbmx5IGRvIHRoaXMgaWYgdGhlIGFjY2Vzc2VzIGFyZSBrbm93biB0byBiZQotNjQtYml0IGFsaWduZWQ7IHRoaXMgaXMgdW5saWtlbHkgdG8gYmUgdGhlIGNhc2UgZm9yIG1vc3QgbG9hZHMuICBUaGUKLXBhdGNoIGFkZHMgc29tZSBhbGlnbm1lbnQgY2hlY2tpbmcgdG8gdGhlIGNvZGUgdGhhdCB2YWxpZGF0ZXMgdGhlCi1hZGRyZXNzZXMgZm9yIHVzZSBpbiB0aGUgcGVlcGhvbGUgcGF0dGVybnMuICBUaGlzIHNob3VsZCBhbHNvIGZpeAotaW5jb3JyZWN0IGdlbmVyYXRpb24gb2YgbGRyZC9zdHJkIHdpdGggdW5hbGlnbmVkIGFjY2Vzc2VzIHRoYXQgY291bGQKLXByZXZpb3VzbHkgaGF2ZSBvY2N1cnJlZCBvbiBBUk12NWUgd2hlcmUgYWxsIHN1Y2ggb3BlcmF0aW9ucyBtdXN0IGJlCi02NC1iaXQgYWxpZ25lZC4KLQotSSd2ZSBhZGRlZCBzb21lIG5ldyB0ZXN0cyBhcyB3ZWxsLiAgSW4gZG9pbmcgc28gSSBkaXNjb3ZlcmVkIHRoYXQgdGhlCi1sZHJkL3N0cmQgcGVlcGhvbGUgdGVzdHMgY291bGQgbmV2ZXIgZmFpbCBzaW5jZSB0aGV5IHdvdWxkIG1hdGNoIHRoZQotc291cmNlIGZpbGUgbmFtZSBpbiB0aGUgc2Nhbm5lZCBhc3NlbWJseSBhcyB3ZWxsIGFzIGFueSBpbnN0cnVjdGlvbnMKLW9mIHRoZSBpbnRlbmRlZCB0eXBlLiAgSSd2ZSBmaXhlZCB0aG9zZSBieSB0aWdodGVuaW5nIHRoZSBzY2FuIHJlc3VsdHMKLXNsaWdodGx5LgotCi1nY2M6Ci0KLSogY29uZmlnL2FybS9hcm0uYyAoYWxpZ25fb2tfbGRyZF9zdHJkKTogTmV3IGZ1bmN0aW9uLgotKG1lbV9va19mb3JfbGRyZF9zdHJkKTogTmV3IHBhcmFtZXRlciBhbGlnbi4gIEV4dHJhY3QgdGhlIGFsaWdubWVudCBvZiB0aGUKLW1lbSBpbnRvIGl0LgotKGdlbl9vcGVyYW5kc19sZHJkX3N0cmQpOiBWYWxpZGF0ZSB0aGUgYWxpZ25tZW50IG9mIHRoZSBhY2Nlc3Nlcy4KLQotdGVzdHN1aXRlOgotCi0qIGdjYy50YXJnZXQvYXJtL3BlZXAtbGRyZC0xLmM6IFRpZ2h0ZW4gdGVzdCBzY2FuIHBhdHRlcm4uCi0qIGdjYy50YXJnZXQvYXJtL3BlZXAtc3RyZC0xLmM6IExpa2V3aXNlLgotKiBnY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMi5jOiBOZXcgdGVzdC4KLSogZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTIuYzogTmV3IHRlc3QuCi0KLQotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtNi1icmFuY2hAMjUzODkyIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZ2NjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKysrCi0gZ2NjL2NvbmZpZy9hcm0vYXJtLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNyArKysrKysrKysrKysrKysrKystLS0tCi0gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMS5jICAgICAgICAgfCAgMiArLQotIC4uLi9hcm0ve3BlZXAtbGRyZC0xLmMgPT4gcGVlcC1sZHJkLTIuY30gICAgICAgICAgIHwgIDQgKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTEuYyAgICAgICAgIHwgIDIgKy0KLSAuLi4vYXJtL3twZWVwLXN0cmQtMS5jID0+IHBlZXAtc3RyZC0yLmN9ICAgICAgICAgICB8ICA0ICsrLS0KLSA3IGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotIGNvcHkgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS97cGVlcC1sZHJkLTEuYyA9PiBwZWVwLWxkcmQtMi5jfSAoNjMlKQotIGNvcHkgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS97cGVlcC1zdHJkLTEuYyA9PiBwZWVwLXN0cmQtMi5jfSAoNTglKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmMgYi9nY2MvY29uZmlnL2FybS9hcm0uYwotaW5kZXggOWMwODEzZDU5OGQuLmUzZGE5Zjc3ZmI2IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmMKLSsrKyBiL2djYy9jb25maWcvYXJtL2FybS5jCi1AQCAtMTU5MjYsMTIgKzE1OTI2LDIzIEBAIG9wZXJhbmRzX29rX2xkcmRfc3RyZCAocnR4IHJ0LCBydHggcnQyLCBydHggcm4sIEhPU1RfV0lERV9JTlQgb2Zmc2V0LAotICAgcmV0dXJuIHRydWU7Ci0gfQotIAotKy8qIFJldHVybiB0cnVlIGlmIGEgNjQtYml0IGFjY2VzcyB3aXRoIGFsaWdubWVudCBBTElHTiBhbmQgd2l0aCBhCi0rICAgY29uc3RhbnQgb2Zmc2V0IE9GRlNFVCBmcm9tIHRoZSBiYXNlIHBvaW50ZXIgaXMgcGVybWl0dGVkIG9uIHRoaXMKLSsgICBhcmNoaXRlY3R1cmUuICAqLwotK3N0YXRpYyBib29sCi0rYWxpZ25fb2tfbGRyZF9zdHJkIChIT1NUX1dJREVfSU5UIGFsaWduLCBIT1NUX1dJREVfSU5UIG9mZnNldCkKLSt7Ci0rICByZXR1cm4gKHVuYWxpZ25lZF9hY2Nlc3MKLSsJICA/IChhbGlnbiA+PSBCSVRTX1BFUl9XT1JEICYmIChvZmZzZXQgJiAzKSA9PSAwKQotKwkgIDogKGFsaWduID49IDIgKiBCSVRTX1BFUl9XT1JEICYmIChvZmZzZXQgJiA3KSA9PSAwKSk7Ci0rfQotKwotIC8qIEhlbHBlciBmb3IgZ2VuX29wZXJhbmRzX2xkcmRfc3RyZC4gIFJldHVybnMgdHJ1ZSBpZmYgdGhlIG1lbW9yeQotICAgIG9wZXJhbmQgTUVNJ3MgYWRkcmVzcyBjb250YWlucyBhbiBpbW1lZGlhdGUgb2Zmc2V0IGZyb20gdGhlIGJhc2UKLS0gICByZWdpc3RlciBhbmQgaGFzIG5vIHNpZGUgZWZmZWN0cywgaW4gd2hpY2ggY2FzZSBpdCBzZXRzIEJBU0UgYW5kCi0tICAgT0ZGU0VUIGFjY29yZGluZ2x5LiAgKi8KLSsgICByZWdpc3RlciBhbmQgaGFzIG5vIHNpZGUgZWZmZWN0cywgaW4gd2hpY2ggY2FzZSBpdCBzZXRzIEJBU0UsCi0rICAgT0ZGU0VUIGFuZCBBTElHTiBhY2NvcmRpbmdseS4gICovCi0gc3RhdGljIGJvb2wKLS1tZW1fb2tfZm9yX2xkcmRfc3RyZCAocnR4IG1lbSwgcnR4ICpiYXNlLCBydHggKm9mZnNldCkKLSttZW1fb2tfZm9yX2xkcmRfc3RyZCAocnR4IG1lbSwgcnR4ICpiYXNlLCBydHggKm9mZnNldCwgSE9TVF9XSURFX0lOVCAqYWxpZ24pCi0gewotICAgcnR4IGFkZHI7Ci0gCi1AQCAtMTU5NTAsNiArMTU5NjEsNyBAQCBtZW1fb2tfZm9yX2xkcmRfc3RyZCAocnR4IG1lbSwgcnR4ICpiYXNlLCBydHggKm9mZnNldCkKLSAgIGdjY19hc3NlcnQgKE1FTV9QIChtZW0pKTsKLSAKLSAgICpvZmZzZXQgPSBjb25zdDBfcnR4OwotKyAgKmFsaWduID0gTUVNX0FMSUdOIChtZW0pOwotIAotICAgYWRkciA9IFhFWFAgKG1lbSwgMCk7Ci0gCi1AQCAtMTU5OTAsNyArMTYwMDIsNyBAQCBnZW5fb3BlcmFuZHNfbGRyZF9zdHJkIChydHggKm9wZXJhbmRzLCBib29sIGxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb25zdF9zdG9yZSwgYm9vbCBjb21tdXRlKQotIHsKLSAgIGludCBub3BzID0gMjsKLS0gIEhPU1RfV0lERV9JTlQgb2Zmc2V0c1syXSwgb2Zmc2V0OwotKyAgSE9TVF9XSURFX0lOVCBvZmZzZXRzWzJdLCBvZmZzZXQsIGFsaWduWzJdOwotICAgcnR4IGJhc2UgPSBOVUxMX1JUWDsKLSAgIHJ0eCBjdXJfYmFzZSwgY3VyX29mZnNldCwgdG1wOwotICAgaW50IGksIGdhcDsKLUBAIC0xNjAwMiw3ICsxNjAxNCw4IEBAIGdlbl9vcGVyYW5kc19sZHJkX3N0cmQgKHJ0eCAqb3BlcmFuZHMsIGJvb2wgbG9hZCwKLSAgICAgIHJlZ2lzdGVycywgYW5kIHRoZSBjb3JyZXNwb25kaW5nIG1lbW9yeSBvZmZzZXRzLiAgKi8KLSAgIGZvciAoaSA9IDA7IGkgPCBub3BzOyBpKyspCi0gICAgIHsKLS0gICAgICBpZiAoIW1lbV9va19mb3JfbGRyZF9zdHJkIChvcGVyYW5kc1tub3BzK2ldLCAmY3VyX2Jhc2UsICZjdXJfb2Zmc2V0KSkKLSsgICAgICBpZiAoIW1lbV9va19mb3JfbGRyZF9zdHJkIChvcGVyYW5kc1tub3BzK2ldLCAmY3VyX2Jhc2UsICZjdXJfb2Zmc2V0LAotKwkJCQkgJmFsaWduW2ldKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAKLSAgICAgICBpZiAoaSA9PSAwKQotQEAgLTE2MTE0LDYgKzE2MTI3LDcgQEAgZ2VuX29wZXJhbmRzX2xkcmRfc3RyZCAocnR4ICpvcGVyYW5kcywgYm9vbCBsb2FkLAotICAgICAgIC8qIFN3YXAgdGhlIGluc3RydWN0aW9ucyBzdWNoIHRoYXQgbG93ZXIgbWVtb3J5IGlzIGFjY2Vzc2VkIGZpcnN0LiAgKi8KLSAgICAgICBzdGQ6OnN3YXAgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7Ci0gICAgICAgc3RkOjpzd2FwIChvcGVyYW5kc1syXSwgb3BlcmFuZHNbM10pOwotKyAgICAgIHN0ZDo6c3dhcCAoYWxpZ25bMF0sIGFsaWduWzFdKTsKLSAgICAgICBpZiAoY29uc3Rfc3RvcmUpCi0gICAgICAgICBzdGQ6OnN3YXAgKG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSk7Ci0gICAgIH0KLUBAIC0xNjEyNyw2ICsxNjE0MSw5IEBAIGdlbl9vcGVyYW5kc19sZHJkX3N0cmQgKHJ0eCAqb3BlcmFuZHMsIGJvb2wgbG9hZCwKLSAgIGlmIChnYXAgIT0gNCkKLSAgICAgcmV0dXJuIGZhbHNlOwotIAotKyAgaWYgKCFhbGlnbl9va19sZHJkX3N0cmQgKGFsaWduWzBdLCBvZmZzZXQpKQotKyAgICByZXR1cm4gZmFsc2U7Ci0rCi0gICAvKiBNYWtlIHN1cmUgd2UgZ2VuZXJhdGUgbGVnYWwgaW5zdHJ1Y3Rpb25zLiAgKi8KLSAgIGlmIChvcGVyYW5kc19va19sZHJkX3N0cmQgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgYmFzZSwgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGxvYWQpKQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTEuYwotaW5kZXggZWIyYjg2ZWU3YjYuLmQ0OWVmZjZiODdlIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtbGRyZC0xLmMKLUBAIC04LDQgKzgsNCBAQCBpbnQgZm9vKGludCBhLCBpbnQgYiwgaW50KiBwLCBpbnQgKnEpCi0gICAqcCA9IGE7Ci0gICByZXR1cm4gYTsKLSB9Ci0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsZHJkIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxkcmRcXHQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTIuYwotc2ltaWxhcml0eSBpbmRleCA2MyUKLWNvcHkgZnJvbSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtbGRyZC0xLmMKLWNvcHkgdG8gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMi5jCi1pbmRleCBlYjJiODZlZTdiNi4uNjgyMmMyYjE0NTQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtbGRyZC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTIuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhcm1fcHJlZmVyX2xkcmRfc3RyZCB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIiIH0gICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby11bmFsaWduZWQtYWNjZXNzIiB9ICAqLwotIGludCBmb28oaW50IGEsIGludCBiLCBpbnQqIHAsIGludCAqcSkKLSB7Ci0gICBhID0gcFsyXSArIHBbM107Ci1AQCAtOCw0ICs4LDQgQEAgaW50IGZvbyhpbnQgYSwgaW50IGIsIGludCogcCwgaW50ICpxKQotICAgKnAgPSBhOwotICAgcmV0dXJuIGE7Ci0gfQotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibGRyZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAibGRyZFxcdCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLXN0cmQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLXN0cmQtMS5jCi1pbmRleCBiZDMzMDc2OTU5OS4uZmUxYmVhYzcyMjkgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtc3RyZC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTEuYwotQEAgLTYsNCArNiw0IEBAIHZvaWQgZm9vKGludCBhLCBpbnQgYiwgaW50KiBwKQotICAgcFsyXSA9IGE7Ci0gICBwWzNdID0gYjsKLSB9Ci0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJzdHJkIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInN0cmRcXHQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTIuYwotc2ltaWxhcml0eSBpbmRleCA1OCUKLWNvcHkgZnJvbSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtc3RyZC0xLmMKLWNvcHkgdG8gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLXN0cmQtMi5jCi1pbmRleCBiZDMzMDc2OTU5OS4uYmZjNWViZTllZWMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtc3RyZC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTIuYwotQEAgLTEsOSArMSw5IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhcm1fcHJlZmVyX2xkcmRfc3RyZCB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIiIH0gICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby11bmFsaWduZWQtYWNjZXNzIiB9ICAqLwotIHZvaWQgZm9vKGludCBhLCBpbnQgYiwgaW50KiBwKQotIHsKLSAgIHBbMl0gPSBhOwotICAgcFszXSA9IGI7Ci0gfQotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAic3RyZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAic3RyZFxcdCIgfSB9ICovCi0tLSAKLTIuMTUuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDEtZW5hYmxlLUZMX0xQQUUtZmxhZy1mb3ItYXJtdjd2ZS1jb3Jlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMS1lbmFibGUtRkxfTFBBRS1mbGFnLWZvci1hcm12N3ZlLWNvcmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjY2NGM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMS1lbmFibGUtRkxfTFBBRS1mbGFnLWZvci1hcm12N3ZlLWNvcmVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotRnJvbSAyMmZjYzEyNmZhZDYxYThlOWRkYWFhYmJjODAzNjY0NDI3MzY0MmRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbToga3RrYWNob3YgPGt0a2FjaG92QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFRodSwgOSBOb3YgMjAxNyAxNDozNDoyOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBlbmFibGUgRkxfTFBBRSBmbGFnIGZvciBhcm12N3ZlIGNvcmVzCi0KLVRoZSBmb2xsb3dpbmcgY29tbWl0IGFkZGVkIHRoZSBGTF9MUEFFIGZsYWcgdG8gRkxfRk9SX0FSQ0g3VkUsIGJ1dAotbmVnbGVjdGVkIHRvIGFsc28gYWRkIGl0IHRvIHRoZSBhcm12N3ZlIGNvbXBhdGlibGUgY29yZXMgZGVmaW5lZCBpbgotYXJtLWNvcmVzLmRlZi4KLQotICBodHRwczovL2dpdGh1Yi5jb20vZ2NjLW1pcnJvci9nY2MvY29tbWl0L2FmMmQ5YjllNThlOGJlNTc2YzUzZDk0ZjMwYzQ4YzY4MTQ2YjBjOTgKLQotVGhlIHJlc3VsdCBpcyB0aGF0IGdjYyA2LjQgbm93IHJlZnVzZXMgdG8gYWxsb3cgLW1hcmNoPWFybXY3dmUgYW5kCi0tbWNwdT1YWFggdG8gYmUgdXNlZCB0b2dldGhlciwgZXZlbiB3aGVuIC1tY3B1IGlzIHNldCB0byBhbiBhcm12N3ZlCi1jb21wYXRpYmxlIGNvcmU6Ci0KLSAgYXJtLWxpbnV4LWdudWVhYmktZ2NjIC1tYXJjaD1hcm12N3ZlIC1tY3B1PWNvcnRleC1hNyAtV2Vycm9yIC4uLgotICBlcnJvcjogc3dpdGNoIC1tY3B1PWNvcnRleC1hNyBjb25mbGljdHMgd2l0aCAtbWFyY2g9YXJtdjd2ZSBzd2l0Y2ggWy1XZXJyb3JdCi0KLUZpeCBieSBkZWZpbmluZyBmbGFncyBmb3IgYXJtdjd2ZSBjb21wYXRpYmxlIGNvcmVzIGRpcmVjdGx5IGZyb20KLUZMX0ZPUl9BUkNIN1ZFLCByYXRoZXIgdGhhbiByZS1jcmVhdGluZyB0aGUgYXJtdjd2ZSBmbGFncwotaW5kZXBlbmRlbnRseSBieSBjb21iaW5pbmcgRkxfRk9SX0FSQ0g3QSB3aXRoIHRoZSBhcm12N3ZlIHNwZWNpZmljCi1GTF9USFVNQl9ESVYgYW5kIEZMX0FSTV9ESVYgZmxhZ3MuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTYtYnJhbmNoQDI1NDU4NCAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYXJtL2FybS1jb3Jlcy5kZWYgfCAxMiArKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLWNvcmVzLmRlZiBiL2djYy9jb25maWcvYXJtL2FybS1jb3Jlcy5kZWYKLWluZGV4IDgyOWI4MzkuLmNhMzdlNmYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9hcm0tY29yZXMuZGVmCi0rKysgYi9nY2MvY29uZmlnL2FybS9hcm0tY29yZXMuZGVmCi1AQCAtMTQ1LDEyICsxNDUsMTIgQEAgQVJNX0NPUkUoImNvcnRleC1tMHBsdXMuc21hbGwtbXVsdGlwbHkiLGNvcnRleG0wcGx1c3NtYWxsbXVsdGlwbHksIGNvcnRleG0wcGx1cywKLSAvKiBWNyBBcmNoaXRlY3R1cmUgUHJvY2Vzc29ycyAqLwotIEFSTV9DT1JFKCJnZW5lcmljLWFybXY3LWEiLAlnZW5lcmljdjdhLCBnZW5lcmljdjdhLAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN0EpLCBjb3J0ZXgpCi0gQVJNX0NPUkUoImNvcnRleC1hNSIsCQljb3J0ZXhhNSwgY29ydGV4YTUsCQk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfRk9SX0FSQ0g3QSksIGNvcnRleF9hNSkKLS1BUk1fQ09SRSgiY29ydGV4LWE3IiwJCWNvcnRleGE3LCBjb3J0ZXhhNywJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9USFVNQl9ESVYgfCBGTF9BUk1fRElWIHwgRkxfRk9SX0FSQ0g3QSksIGNvcnRleF9hNykKLStBUk1fQ09SRSgiY29ydGV4LWE3IiwJCWNvcnRleGE3LCBjb3J0ZXhhNywJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdWRSksIGNvcnRleF9hNykKLSBBUk1fQ09SRSgiY29ydGV4LWE4IiwJCWNvcnRleGE4LCBjb3J0ZXhhOCwJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdBKSwgY29ydGV4X2E4KQotIEFSTV9DT1JFKCJjb3J0ZXgtYTkiLAkJY29ydGV4YTksIGNvcnRleGE5LAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN0EpLCBjb3J0ZXhfYTkpCi0tQVJNX0NPUkUoImNvcnRleC1hMTIiLAkJY29ydGV4YTEyLCBjb3J0ZXhhMTcsCQk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfVEhVTUJfRElWIHwgRkxfQVJNX0RJViB8IEZMX0ZPUl9BUkNIN0EpLCBjb3J0ZXhfYTEyKQotLUFSTV9DT1JFKCJjb3J0ZXgtYTE1IiwJCWNvcnRleGExNSwgY29ydGV4YTE1LAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX1RIVU1CX0RJViB8IEZMX0FSTV9ESVYgfCBGTF9GT1JfQVJDSDdBKSwgY29ydGV4X2ExNSkKLS1BUk1fQ09SRSgiY29ydGV4LWExNyIsCQljb3J0ZXhhMTcsIGNvcnRleGExNywJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9USFVNQl9ESVYgfCBGTF9BUk1fRElWIHwgRkxfRk9SX0FSQ0g3QSksIGNvcnRleF9hMTIpCi0rQVJNX0NPUkUoImNvcnRleC1hMTIiLAkJY29ydGV4YTEyLCBjb3J0ZXhhMTcsCQk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfRk9SX0FSQ0g3VkUpLCBjb3J0ZXhfYTEyKQotK0FSTV9DT1JFKCJjb3J0ZXgtYTE1IiwJCWNvcnRleGExNSwgY29ydGV4YTE1LAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN1ZFKSwgY29ydGV4X2ExNSkKLStBUk1fQ09SRSgiY29ydGV4LWExNyIsCQljb3J0ZXhhMTcsIGNvcnRleGExNywJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdWRSksIGNvcnRleF9hMTIpCi0gQVJNX0NPUkUoImNvcnRleC1yNCIsCQljb3J0ZXhyNCwgY29ydGV4cjQsCQk3UiwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfRk9SX0FSQ0g3UiksIGNvcnRleCkKLSBBUk1fQ09SRSgiY29ydGV4LXI0ZiIsCQljb3J0ZXhyNGYsIGNvcnRleHI0ZiwJCTdSLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdSKSwgY29ydGV4KQotIEFSTV9DT1JFKCJjb3J0ZXgtcjUiLAkJY29ydGV4cjUsIGNvcnRleHI1LAkJN1IsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0FSTV9ESVYgfCBGTF9GT1JfQVJDSDdSKSwgY29ydGV4KQotQEAgLTE2Miw4ICsxNjIsOCBAQCBBUk1fQ09SRSgiY29ydGV4LW0zIiwJCWNvcnRleG0zLCBjb3J0ZXhtMywJCTdNLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfAotIEFSTV9DT1JFKCJtYXJ2ZWxsLXBqNCIsCQltYXJ2ZWxsX3BqNCwgbWFydmVsbF9wajQsCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdBKSwgbWFydmVsbF9wajQpCi0gCi0gLyogVjcgYmlnLkxJVFRMRSBpbXBsZW1lbnRhdGlvbnMgKi8KLS1BUk1fQ09SRSgiY29ydGV4LWExNS5jb3J0ZXgtYTciLCBjb3J0ZXhhMTVjb3J0ZXhhNywgY29ydGV4YTcsCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9USFVNQl9ESVYgfCBGTF9BUk1fRElWIHwgRkxfRk9SX0FSQ0g3QSksIGNvcnRleF9hMTUpCi0tQVJNX0NPUkUoImNvcnRleC1hMTcuY29ydGV4LWE3IiwgY29ydGV4YTE3Y29ydGV4YTcsIGNvcnRleGE3LAk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfVEhVTUJfRElWIHwgRkxfQVJNX0RJViB8IEZMX0ZPUl9BUkNIN0EpLCBjb3J0ZXhfYTEyKQotK0FSTV9DT1JFKCJjb3J0ZXgtYTE1LmNvcnRleC1hNyIsIGNvcnRleGExNWNvcnRleGE3LCBjb3J0ZXhhNywJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN1ZFKSwgY29ydGV4X2ExNSkKLStBUk1fQ09SRSgiY29ydGV4LWExNy5jb3J0ZXgtYTciLCBjb3J0ZXhhMTdjb3J0ZXhhNywgY29ydGV4YTcsCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdWRSksIGNvcnRleF9hMTIpCi0gCi0gLyogVjggQXJjaGl0ZWN0dXJlIFByb2Nlc3NvcnMgKi8KLSBBUk1fQ09SRSgiY29ydGV4LWEzMiIsCWNvcnRleGEzMiwgY29ydGV4YTUzLAk4QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfQ1JDMzIgfCBGTF9GT1JfQVJDSDhBKSwgY29ydGV4X2EzNSkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAxLWkzODYtTW92ZS1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1tYWNoaW5lX2Z1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAxLWkzODYtTW92ZS1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1tYWNoaW5lX2Z1bmN0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGIwZmZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMS1pMzg2LU1vdmUtc3RydWN0LWl4ODZfZnJhbWUtdG8tbWFjaGluZV9mdW5jdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi1Gcm9tIGMyYzc3NzVjNTU4N2RjNTliNjc1NjE2MmQzOTBkODlkNjA5NzFhMTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBoamwgPGhqbEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBNb24sIDE1IEphbiAyMDE4IDExOjI3OjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMTJdIGkzODY6IE1vdmUgc3RydWN0IGl4ODZfZnJhbWUgdG8gbWFjaGluZV9mdW5jdGlvbgotCi1NYWtlIGl4ODZfZnJhbWUgYXZhaWxhYmxlIHRvIGkzODYgY29kZSBnZW5lcmF0aW9uLiAgVGhpcyBpcyBuZWVkZWQgdG8KLWJhY2twb3J0IHRoZSBwYXRjaCBzZXQgb2YgLW1pbmRpcmVjdC1icmFuY2g9IHRvIG1pdGlnYXRlIHZhcmlhbnQgIzIgb2YKLXRoZSBzcGVjdWxhdGl2ZSBleGVjdXRpb24gdnVsbmVyYWJpbGl0aWVzIG9uIHg4NiBwcm9jZXNzb3JzIGlkZW50aWZpZWQKLWJ5IENWRS0yMDE3LTU3MTUsIGFrYSBTcGVjdHJlLgotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTctMDYtMDEgIEJlcm5kIEVkbGluZ2VyICA8YmVybmQuZWRsaW5nZXJAaG90bWFpbC5kZT4KLQotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2ZyYW1lKTogTW92ZWQgdG8gLi4uCi0JKiBjb25maWcvaTM4Ni9pMzg2LmggKGl4ODZfZnJhbWUpOiBIZXJlLgotCShtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIGZyYW1lLgotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0KTogUmVwYWNlIHRoZQotCWZyYW1lIGFyZ3VtZW50IHdpdGggJmNmdW4tPm1hY2hpbmUtPmZyYW1lLgotCShpeDg2X2Nhbl91c2VfcmV0dXJuX2luc25fcCk6IERvbid0IHBhc3MgJmZyYW1lIHRvCi0JaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dC4gIENvcHkgZnJhbWUgZnJvbSBjZnVuLT5tYWNoaW5lLT5mcmFtZS4KLQkoaXg4Nl9jYW5fZWxpbWluYXRlKTogTGlrZXdpc2UuCi0JKGl4ODZfZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuCi0JKGl4ODZfZXhwYW5kX2VwaWxvZ3VlKTogTGlrZXdpc2UuCi0JKGl4ODZfZXhwYW5kX3NwbGl0X3N0YWNrX3Byb2xvZ3VlKTogTGlrZXdpc2UuCi0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgfCA2OCArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmggfCA1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IDhiNWZhYWMuLmExZmYzMmIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMjQzNCw1MyArMjQzNCw2IEBAIHN0cnVjdCBHVFkoKCkpIHN0YWNrX2xvY2FsX2VudHJ5IHsKLSAgIHN0cnVjdCBzdGFja19sb2NhbF9lbnRyeSAqbmV4dDsKLSB9OwotIAotLS8qIFN0cnVjdHVyZSBkZXNjcmliaW5nIHN0YWNrIGZyYW1lIGxheW91dC4KLS0gICBTdGFjayBncm93cyBkb3dud2FyZDoKLS0KLS0gICBbYXJndW1lbnRzXQotLQkJCQkJPC0gQVJHX1BPSU5URVIKLS0gICBzYXZlZCBwYwotLQotLSAgIHNhdmVkIHN0YXRpYyBjaGFpbgkJCWlmIGl4ODZfc3RhdGljX2NoYWluX29uX3N0YWNrCi0tCi0tICAgc2F2ZWQgZnJhbWUgcG9pbnRlcgkJCWlmIGZyYW1lX3BvaW50ZXJfbmVlZGVkCi0tCQkJCQk8LSBIQVJEX0ZSQU1FX1BPSU5URVIKLS0gICBbc2F2ZWQgcmVnc10KLS0JCQkJCTwtIHJlZ3Nfc2F2ZV9vZmZzZXQKLS0gICBbcGFkZGluZzBdCi0tCi0tICAgW3NhdmVkIFNTRSByZWdzXQotLQkJCQkJPC0gc3NlX3JlZ3Nfc2F2ZV9vZmZzZXQKLS0gICBbcGFkZGluZzFdICAgICAgICAgIHwKLS0JCSAgICAgICB8CQk8LSBGUkFNRV9QT0lOVEVSCi0tICAgW3ZhX2FyZyByZWdpc3RlcnNdICB8Ci0tCQkgICAgICAgfAotLSAgIFtmcmFtZV0JICAgICAgIHwKLS0JCSAgICAgICB8Ci0tICAgW3BhZGRpbmcyXQkgICAgICAgfCA9IHRvX2FsbG9jYXRlCi0tCQkJCQk8LSBTVEFDS19QT0lOVEVSCi0tICAqLwotLXN0cnVjdCBpeDg2X2ZyYW1lCi0tewotLSAgaW50IG5zc2VyZWdzOwotLSAgaW50IG5yZWdzOwotLSAgaW50IHZhX2FyZ19zaXplOwotLSAgaW50IHJlZF96b25lX3NpemU7Ci0tICBpbnQgb3V0Z29pbmdfYXJndW1lbnRzX3NpemU7Ci0tCi0tICAvKiBUaGUgb2Zmc2V0cyByZWxhdGl2ZSB0byBBUkdfUE9JTlRFUi4gICovCi0tICBIT1NUX1dJREVfSU5UIGZyYW1lX3BvaW50ZXJfb2Zmc2V0OwotLSAgSE9TVF9XSURFX0lOVCBoYXJkX2ZyYW1lX3BvaW50ZXJfb2Zmc2V0OwotLSAgSE9TVF9XSURFX0lOVCBzdGFja19wb2ludGVyX29mZnNldDsKLS0gIEhPU1RfV0lERV9JTlQgaGZwX3NhdmVfb2Zmc2V0OwotLSAgSE9TVF9XSURFX0lOVCByZWdfc2F2ZV9vZmZzZXQ7Ci0tICBIT1NUX1dJREVfSU5UIHNzZV9yZWdfc2F2ZV9vZmZzZXQ7Ci0tCi0tICAvKiBXaGVuIHNhdmVfcmVnc191c2luZ19tb3YgaXMgc2V0LCBlbWl0IHByb2xvZ3VlIHVzaW5nCi0tICAgICBtb3ZlIGluc3RlYWQgb2YgcHVzaCBpbnN0cnVjdGlvbnMuICAqLwotLSAgYm9vbCBzYXZlX3JlZ3NfdXNpbmdfbW92OwotLX07Ci0tCi0gLyogV2hpY2ggY3B1IGFyZSB3ZSBzY2hlZHVsaW5nIGZvci4gICovCi0gZW51bSBhdHRyX2NwdSBpeDg2X3NjaGVkdWxlOwotIAotQEAgLTI1NzIsNyArMjUyNSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXg4Nl9mdW5jdGlvbl9hcmdfYm91bmRhcnkgKG1hY2hpbmVfbW9kZSwKLSAJCQkJCQljb25zdF90cmVlKTsKLSBzdGF0aWMgcnR4IGl4ODZfc3RhdGljX2NoYWluIChjb25zdF90cmVlLCBib29sKTsKLSBzdGF0aWMgaW50IGl4ODZfZnVuY3Rpb25fcmVncGFybSAoY29uc3RfdHJlZSwgY29uc3RfdHJlZSk7Ci0tc3RhdGljIHZvaWQgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoc3RydWN0IGl4ODZfZnJhbWUgKik7Ci0rc3RhdGljIHZvaWQgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAodm9pZCk7Ci0gc3RhdGljIGJvb2wgaXg4Nl9leHBhbmRfdmVjdG9yX2luaXRfb25lX25vbnplcm8gKGJvb2wsIG1hY2hpbmVfbW9kZSwKLSAJCQkJCQkgcnR4LCBydHgsIGludCk7Ci0gc3RhdGljIHZvaWQgaXg4Nl9hZGRfbmV3X2J1aWx0aW5zIChIT1NUX1dJREVfSU5UKTsKLUBAIC0xMDk0NCw3ICsxMDg5Nyw4IEBAIGl4ODZfY2FuX3VzZV9yZXR1cm5faW5zbl9wICh2b2lkKQotICAgaWYgKGNydGwtPmFyZ3MucG9wc19hcmdzICYmIGNydGwtPmFyZ3Muc2l6ZSA+PSAzMjc2OCkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgmZnJhbWUpOwotKyAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsKLSsgIGZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0gICByZXR1cm4gKGZyYW1lLnN0YWNrX3BvaW50ZXJfb2Zmc2V0ID09IFVOSVRTX1BFUl9XT1JECi0gCSAgJiYgKGZyYW1lLm5yZWdzICsgZnJhbWUubnNzZXJlZ3MpID09IDApOwotIH0KLUBAIC0xMTM1NSw4ICsxMTMwOSw4IEBAIGl4ODZfY2FuX2VsaW1pbmF0ZSAoY29uc3QgaW50IGZyb20sIGNvbnN0IGludCB0bykKLSBIT1NUX1dJREVfSU5UCi0gaXg4Nl9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCAoaW50IGZyb20sIGludCB0bykKLSB7Ci0tICBzdHJ1Y3QgaXg4Nl9mcmFtZSBmcmFtZTsKLS0gIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCZmcmFtZSk7Ci0rICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgpOwotKyAgc3RydWN0IGl4ODZfZnJhbWUgZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsKLSAKLSAgIGlmIChmcm9tID09IEFSR19QT0lOVEVSX1JFR05VTSAmJiB0byA9PSBIQVJEX0ZSQU1FX1BPSU5URVJfUkVHTlVNKQotICAgICByZXR1cm4gZnJhbWUuaGFyZF9mcmFtZV9wb2ludGVyX29mZnNldDsKLUBAIC0xMTM5NSw4ICsxMTM0OSw5IEBAIGl4ODZfYnVpbHRpbl9zZXRqbXBfZnJhbWVfdmFsdWUgKHZvaWQpCi0gLyogRmlsbCBzdHJ1Y3R1cmUgaXg4Nl9mcmFtZSBhYm91dCBmcmFtZSBvZiBjdXJyZW50bHkgY29tcHV0ZWQgZnVuY3Rpb24uICAqLwotIAotIHN0YXRpYyB2b2lkCi0taXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoc3RydWN0IGl4ODZfZnJhbWUgKmZyYW1lKQotK2l4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKHZvaWQpCi0gewotKyAgc3RydWN0IGl4ODZfZnJhbWUgKmZyYW1lID0gJmNmdW4tPm1hY2hpbmUtPmZyYW1lOwotICAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBzdGFja19hbGlnbm1lbnRfbmVlZGVkOwotICAgSE9TVF9XSURFX0lOVCBvZmZzZXQ7Ci0gICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIHByZWZlcnJlZF9hbGlnbm1lbnQ7Ci1AQCAtMTI3MDIsNyArMTI2NTcsOCBAQCBpeDg2X2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkKLSAgIG0tPmZzLnNwX29mZnNldCA9IElOQ09NSU5HX0ZSQU1FX1NQX09GRlNFVDsKLSAgIG0tPmZzLnNwX3ZhbGlkID0gdHJ1ZTsKLSAKLS0gIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCZmcmFtZSk7Ci0rICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgpOwotKyAgZnJhbWUgPSBtLT5mcmFtZTsKLSAKLSAgIGlmICghVEFSR0VUXzY0QklUICYmIGl4ODZfZnVuY3Rpb25fbXNfaG9va19wcm9sb2d1ZSAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkKLSAgICAgewotQEAgLTEzMzc5LDcgKzEzMzM1LDggQEAgaXg4Nl9leHBhbmRfZXBpbG9ndWUgKGludCBzdHlsZSkKLSAgIGJvb2wgdXNpbmdfZHJhcDsKLSAKLSAgIGl4ODZfZmluYWxpemVfc3RhY2tfcmVhbGlnbl9mbGFncyAoKTsKLS0gIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCZmcmFtZSk7Ci0rICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgpOwotKyAgZnJhbWUgPSBtLT5mcmFtZTsKLSAKLSAgIG0tPmZzLnNwX3ZhbGlkID0gKCFmcmFtZV9wb2ludGVyX25lZWRlZAotIAkJICAgIHx8IChjcnRsLT5zcF9pc191bmNoYW5naW5nCi1AQCAtMTM4NzYsNyArMTM4MzMsOCBAQCBpeDg2X2V4cGFuZF9zcGxpdF9zdGFja19wcm9sb2d1ZSAodm9pZCkKLSAgIGdjY19hc3NlcnQgKGZsYWdfc3BsaXRfc3RhY2sgJiYgcmVsb2FkX2NvbXBsZXRlZCk7Ci0gCi0gICBpeDg2X2ZpbmFsaXplX3N0YWNrX3JlYWxpZ25fZmxhZ3MgKCk7Ci0tICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgmZnJhbWUpOwotKyAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsKLSsgIGZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0gICBhbGxvY2F0ZSA9IGZyYW1lLnN0YWNrX3BvaW50ZXJfb2Zmc2V0IC0gSU5DT01JTkdfRlJBTUVfU1BfT0ZGU0VUOwotIAotICAgLyogVGhpcyBpcyB0aGUgbGFiZWwgd2Ugd2lsbCBicmFuY2ggdG8gaWYgd2UgaGF2ZSBlbm91Z2ggc3RhY2sKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotaW5kZXggODExM2Y4My4uNTQxNDQxNiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLUBAIC0yNDI3LDkgKzI0MjcsNTYgQEAgZW51bSBhdnhfdTEyOF9zdGF0ZQotIAwKLSAjZGVmaW5lIEZBU1RDQUxMX1BSRUZJWCAnQCcKLSAMCi0rI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKLSsvKiBTdHJ1Y3R1cmUgZGVzY3JpYmluZyBzdGFjayBmcmFtZSBsYXlvdXQuCi0rICAgU3RhY2sgZ3Jvd3MgZG93bndhcmQ6Ci0rCi0rICAgW2FyZ3VtZW50c10KLSsJCQkJCTwtIEFSR19QT0lOVEVSCi0rICAgc2F2ZWQgcGMKLSsKLSsgICBzYXZlZCBzdGF0aWMgY2hhaW4JCQlpZiBpeDg2X3N0YXRpY19jaGFpbl9vbl9zdGFjawotKwotKyAgIHNhdmVkIGZyYW1lIHBvaW50ZXIJCQlpZiBmcmFtZV9wb2ludGVyX25lZWRlZAotKwkJCQkJPC0gSEFSRF9GUkFNRV9QT0lOVEVSCi0rICAgW3NhdmVkIHJlZ3NdCi0rCQkJCQk8LSByZWdzX3NhdmVfb2Zmc2V0Ci0rICAgW3BhZGRpbmcwXQotKwotKyAgIFtzYXZlZCBTU0UgcmVnc10KLSsJCQkJCTwtIHNzZV9yZWdzX3NhdmVfb2Zmc2V0Ci0rICAgW3BhZGRpbmcxXSAgICAgICAgICB8Ci0rCQkgICAgICAgfAkJPC0gRlJBTUVfUE9JTlRFUgotKyAgIFt2YV9hcmcgcmVnaXN0ZXJzXSAgfAotKwkJICAgICAgIHwKLSsgICBbZnJhbWVdCSAgICAgICB8Ci0rCQkgICAgICAgfAotKyAgIFtwYWRkaW5nMl0JICAgICAgIHwgPSB0b19hbGxvY2F0ZQotKwkJCQkJPC0gU1RBQ0tfUE9JTlRFUgotKyAgKi8KLStzdHJ1Y3QgR1RZKCgpKSBpeDg2X2ZyYW1lCi0rewotKyAgaW50IG5zc2VyZWdzOwotKyAgaW50IG5yZWdzOwotKyAgaW50IHZhX2FyZ19zaXplOwotKyAgaW50IHJlZF96b25lX3NpemU7Ci0rICBpbnQgb3V0Z29pbmdfYXJndW1lbnRzX3NpemU7Ci0rCi0rICAvKiBUaGUgb2Zmc2V0cyByZWxhdGl2ZSB0byBBUkdfUE9JTlRFUi4gICovCi0rICBIT1NUX1dJREVfSU5UIGZyYW1lX3BvaW50ZXJfb2Zmc2V0OwotKyAgSE9TVF9XSURFX0lOVCBoYXJkX2ZyYW1lX3BvaW50ZXJfb2Zmc2V0OwotKyAgSE9TVF9XSURFX0lOVCBzdGFja19wb2ludGVyX29mZnNldDsKLSsgIEhPU1RfV0lERV9JTlQgaGZwX3NhdmVfb2Zmc2V0OwotKyAgSE9TVF9XSURFX0lOVCByZWdfc2F2ZV9vZmZzZXQ7Ci0rICBIT1NUX1dJREVfSU5UIHNzZV9yZWdfc2F2ZV9vZmZzZXQ7Ci0rCi0rICAvKiBXaGVuIHNhdmVfcmVnc191c2luZ19tb3YgaXMgc2V0LCBlbWl0IHByb2xvZ3VlIHVzaW5nCi0rICAgICBtb3ZlIGluc3RlYWQgb2YgcHVzaCBpbnN0cnVjdGlvbnMuICAqLwotKyAgYm9vbCBzYXZlX3JlZ3NfdXNpbmdfbW92OwotK307Ci0rCi0gLyogTWFjaGluZSBzcGVjaWZpYyBmcmFtZSB0cmFja2luZyBkdXJpbmcgcHJvbG9ndWUvZXBpbG9ndWUgZ2VuZXJhdGlvbi4gICovCi0gCi0tI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKLSBzdHJ1Y3QgR1RZKCgpKSBtYWNoaW5lX2ZyYW1lX3N0YXRlCi0gewotICAgLyogVGhpcyBwYWlyIHRyYWNrcyB0aGUgY3VycmVudGx5IGFjdGl2ZSBDRkEgYXMgcmVnK29mZnNldC4gIFdoZW4gcmVnCi1AQCAtMjQ3NSw2ICsyNTIyLDkgQEAgc3RydWN0IEdUWSgoKSkgbWFjaGluZV9mdW5jdGlvbiB7Ci0gICBpbnQgdmFyYXJnc19mcHJfc2l6ZTsKLSAgIGludCBvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZ1tNQVhfMzg2X0VOVElUSUVTXTsKLSAKLSsgIC8qIENhY2hlZCBpbml0aWFsIGZyYW1lIGxheW91dCBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24uICAqLwotKyAgc3RydWN0IGl4ODZfZnJhbWUgZnJhbWU7Ci0rCi0gICAvKiBOdW1iZXIgb2Ygc2F2ZWQgcmVnaXN0ZXJzIFVTRV9GQVNUX1BST0xPR1VFX0VQSUxPR1VFCi0gICAgICBoYXMgYmVlbiBjb21wdXRlZCBmb3IuICAqLwotICAgaW50IHVzZV9mYXN0X3Byb2xvZ3VlX2VwaWxvZ3VlX25yZWdzOwotQEAgLTI1NTQsNiArMjYwNCw3IEBAIHN0cnVjdCBHVFkoKCkpIG1hY2hpbmVfZnVuY3Rpb24gewotICNkZWZpbmUgaXg4Nl9jdXJyZW50X2Z1bmN0aW9uX2NhbGxzX3Rsc19kZXNjcmlwdG9yIFwKLSAgIChpeDg2X3Rsc19kZXNjcmlwdG9yX2NhbGxzX2V4cGFuZGVkX2luX2NmdW4gJiYgZGZfcmVnc19ldmVyX2xpdmVfcCAoU1BfUkVHKSkKLSAjZGVmaW5lIGl4ODZfc3RhdGljX2NoYWluX29uX3N0YWNrIChjZnVuLT5tYWNoaW5lLT5zdGF0aWNfY2hhaW5fb25fc3RhY2spCi0rI2RlZmluZSBpeDg2X3JlZF96b25lX3NpemUgKGNmdW4tPm1hY2hpbmUtPmZyYW1lLnJlZF96b25lX3NpemUpCi0gCi0gLyogQ29udHJvbCBiZWhhdmlvciBvZiB4ODZfZmlsZV9zdGFydC4gICovCi0gI2RlZmluZSBYODZfRklMRV9TVEFSVF9WRVJTSU9OX0RJUkVDVElWRSBmYWxzZQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDItaTM4Ni1Vc2UtcmVmZXJlbmNlLW9mLXN0cnVjdC1peDg2X2ZyYW1lLXRvLWF2b2lkLWNvcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMi1pMzg2LVVzZS1yZWZlcmVuY2Utb2Ytc3RydWN0LWl4ODZfZnJhbWUtdG8tYXZvaWQtY29wLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjY1YjA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMi1pMzg2LVVzZS1yZWZlcmVuY2Utb2Ytc3RydWN0LWl4ODZfZnJhbWUtdG8tYXZvaWQtY29wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotRnJvbSBmZTJiM2JlM2Y0YjZlYzZiM2E2Zjg5YzI2MDE2YTM5ODNiN2NiMzUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogaGpsIDxoamxAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogTW9uLCAxNSBKYW4gMjAxOCAxMToyODo0NCArMDAwMAotU3ViamVjdDogW1BBVENIIDAyLzEyXSBpMzg2OiBVc2UgcmVmZXJlbmNlIG9mIHN0cnVjdCBpeDg2X2ZyYW1lIHRvIGF2b2lkIGNvcHkKLQotV2hlbiB0aGVyZSBpcyBubyBuZWVkIHRvIG1ha2UgYSBjb3B5IG9mIGl4ODZfZnJhbWUsIHdlIGNhbiB1c2UgcmVmZXJlbmNlCi1vZiBzdHJ1Y3QgaXg4Nl9mcmFtZSB0byBhdm9pZCBjb3B5LgotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTctMTEtMDYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2Nhbl91c2VfcmV0dXJuX2luc25fcCk6IFVzZSByZWZlcmVuY2UKLQlvZiBzdHJ1Y3QgaXg4Nl9mcmFtZS4KLQkoaXg4Nl9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IExpa2V3aXNlLgotCShpeDg2X2V4cGFuZF9zcGxpdF9zdGFja19wcm9sb2d1ZSk6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyB8IDggKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IGExZmYzMmIuLjEzZWJmMTAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMTA4ODcsNyArMTA4ODcsNiBAQCBzeW1ib2xpY19yZWZlcmVuY2VfbWVudGlvbmVkX3AgKHJ0eCBvcCkKLSBib29sCi0gaXg4Nl9jYW5fdXNlX3JldHVybl9pbnNuX3AgKHZvaWQpCi0gewotLSAgc3RydWN0IGl4ODZfZnJhbWUgZnJhbWU7Ci0gCi0gICBpZiAoISByZWxvYWRfY29tcGxldGVkIHx8IGZyYW1lX3BvaW50ZXJfbmVlZGVkKQotICAgICByZXR1cm4gMDsKLUBAIC0xMDg5OCw3ICsxMDg5Nyw3IEBAIGl4ODZfY2FuX3VzZV9yZXR1cm5faW5zbl9wICh2b2lkKQotICAgICByZXR1cm4gMDsKLSAKLSAgIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCk7Ci0tICBmcmFtZSA9IGNmdW4tPm1hY2hpbmUtPmZyYW1lOwotKyAgc3RydWN0IGl4ODZfZnJhbWUgJmZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0gICByZXR1cm4gKGZyYW1lLnN0YWNrX3BvaW50ZXJfb2Zmc2V0ID09IFVOSVRTX1BFUl9XT1JECi0gCSAgJiYgKGZyYW1lLm5yZWdzICsgZnJhbWUubnNzZXJlZ3MpID09IDApOwotIH0KLUBAIC0xMTMxMCw3ICsxMTMwOSw3IEBAIEhPU1RfV0lERV9JTlQKLSBpeDg2X2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0IChpbnQgZnJvbSwgaW50IHRvKQotIHsKLSAgIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCk7Ci0tICBzdHJ1Y3QgaXg4Nl9mcmFtZSBmcmFtZSA9IGNmdW4tPm1hY2hpbmUtPmZyYW1lOwotKyAgc3RydWN0IGl4ODZfZnJhbWUgJmZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0gCi0gICBpZiAoZnJvbSA9PSBBUkdfUE9JTlRFUl9SRUdOVU0gJiYgdG8gPT0gSEFSRF9GUkFNRV9QT0lOVEVSX1JFR05VTSkKLSAgICAgcmV0dXJuIGZyYW1lLmhhcmRfZnJhbWVfcG9pbnRlcl9vZmZzZXQ7Ci1AQCAtMTM4MjEsNyArMTM4MjAsNiBAQCBzdGF0aWMgR1RZKCgpKSBydHggc3BsaXRfc3RhY2tfZm5fbGFyZ2U7Ci0gdm9pZAotIGl4ODZfZXhwYW5kX3NwbGl0X3N0YWNrX3Byb2xvZ3VlICh2b2lkKQotIHsKLS0gIHN0cnVjdCBpeDg2X2ZyYW1lIGZyYW1lOwotICAgSE9TVF9XSURFX0lOVCBhbGxvY2F0ZTsKLSAgIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgYXJnc19zaXplOwotICAgcnR4X2NvZGVfbGFiZWwgKmxhYmVsOwotQEAgLTEzODM0LDcgKzEzODMyLDcgQEAgaXg4Nl9leHBhbmRfc3BsaXRfc3RhY2tfcHJvbG9ndWUgKHZvaWQpCi0gCi0gICBpeDg2X2ZpbmFsaXplX3N0YWNrX3JlYWxpZ25fZmxhZ3MgKCk7Ci0gICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgpOwotLSAgZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsKLSsgIHN0cnVjdCBpeDg2X2ZyYW1lICZmcmFtZSA9IGNmdW4tPm1hY2hpbmUtPmZyYW1lOwotICAgYWxsb2NhdGUgPSBmcmFtZS5zdGFja19wb2ludGVyX29mZnNldCAtIElOQ09NSU5HX0ZSQU1FX1NQX09GRlNFVDsKLSAKLSAgIC8qIFRoaXMgaXMgdGhlIGxhYmVsIHdlIHdpbGwgYnJhbmNoIHRvIGlmIHdlIGhhdmUgZW5vdWdoIHN0YWNrCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMy1pMzg2LVVzZS1jb25zdC1yZWZlcmVuY2Utb2Ytc3RydWN0LWl4ODZfZnJhbWUtdG8tYXZvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAzLWkzODYtVXNlLWNvbnN0LXJlZmVyZW5jZS1vZi1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1hdm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1ZmZkODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAzLWkzODYtVXNlLWNvbnN0LXJlZmVyZW5jZS1vZi1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1hdm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotRnJvbSA4MjI0MzczMmRjNjNlOWI5MDM5NmE1YWU0YWQ5OWNhMzZhZjgxMzU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogaGpsIDxoamxAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogU2F0LCAyNyBKYW4gMjAxOCAxMzoxMDoyNCArMDAwMAotU3ViamVjdDogW1BBVENIIDAzLzEyXSBpMzg2OiBVc2UgY29uc3QgcmVmZXJlbmNlIG9mIHN0cnVjdCBpeDg2X2ZyYW1lIHRvIGF2b2lkCi0gY29weQotCi1XZSBjYW4gdXNlIGNvbnN0IHJlZmVyZW5jZSBvZiBzdHJ1Y3QgaXg4Nl9mcmFtZSB0byBhdm9pZCBtYWtpbmcgYSBsb2NhbAotY29weSBvZiBpeDg2X2ZyYW1lLiAgaXg4Nl9leHBhbmRfZXBpbG9ndWUgbWFrZXMgYSBsb2NhbCBjb3B5IG9mIHN0cnVjdAotaXg4Nl9mcmFtZSBhbmQgdXNlcyB0aGUgcmVnX3NhdmVfb2Zmc2V0IGZpZWxkIGFzIGEgbG9jYWwgdmFyaWFibGUuICBUaGlzCi1wYXRjaCB1c2VzIGEgc2VwYXJhdGUgbG9jYWwgdmFyaWFibGUgZm9yIHJlZ19zYXZlX29mZnNldC4KLQotVGVzdGVkIG9uIHg4Ni02NCB3aXRoIGFkYS4KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQlQUiB0YXJnZXQvODM5MDUKLQkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiBVc2UgY29zdCByZWZlcmVuY2UKLQlvZiBzdHJ1Y3QgaXg4Nl9mcmFtZS4KLQkoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4gIEFkZCBhIGxvY2FsIHZhcmlhYmxlIGZvcgotCXRoZSByZWdfc2F2ZV9vZmZzZXQgZmllbGQgaW4gc3RydWN0IGl4ODZfZnJhbWUuCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy03LWJyYW5jaEAyNTcxMjMgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IDEzZWJmMTAuLjZjOThmNzUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMTI2MzMsNyArMTI2MzMsNiBAQCBpeDg2X2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkKLSB7Ci0gICBzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbiAqbSA9IGNmdW4tPm1hY2hpbmU7Ci0gICBydHggaW5zbiwgdDsKLS0gIHN0cnVjdCBpeDg2X2ZyYW1lIGZyYW1lOwotICAgSE9TVF9XSURFX0lOVCBhbGxvY2F0ZTsKLSAgIGJvb2wgaW50X3JlZ2lzdGVyc19zYXZlZDsKLSAgIGJvb2wgc3NlX3JlZ2lzdGVyc19zYXZlZDsKLUBAIC0xMjY1Nyw3ICsxMjY1Niw3IEBAIGl4ODZfZXhwYW5kX3Byb2xvZ3VlICh2b2lkKQotICAgbS0+ZnMuc3BfdmFsaWQgPSB0cnVlOwotIAotICAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsKLS0gIGZyYW1lID0gbS0+ZnJhbWU7Ci0rICBjb25zdCBzdHJ1Y3QgaXg4Nl9mcmFtZSAmZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsKLSAKLSAgIGlmICghVEFSR0VUXzY0QklUICYmIGl4ODZfZnVuY3Rpb25fbXNfaG9va19wcm9sb2d1ZSAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkKLSAgICAgewotQEAgLTEzMzI5LDEzICsxMzMyOCwxMiBAQCBpeDg2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQotIHsKLSAgIHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uICptID0gY2Z1bi0+bWFjaGluZTsKLSAgIHN0cnVjdCBtYWNoaW5lX2ZyYW1lX3N0YXRlIGZyYW1lX3N0YXRlX3NhdmUgPSBtLT5mczsKLS0gIHN0cnVjdCBpeDg2X2ZyYW1lIGZyYW1lOwotICAgYm9vbCByZXN0b3JlX3JlZ3NfdmlhX21vdjsKLSAgIGJvb2wgdXNpbmdfZHJhcDsKLSAKLSAgIGl4ODZfZmluYWxpemVfc3RhY2tfcmVhbGlnbl9mbGFncyAoKTsKLSAgIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCk7Ci0tICBmcmFtZSA9IG0tPmZyYW1lOwotKyAgY29uc3Qgc3RydWN0IGl4ODZfZnJhbWUgJmZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0gCi0gICBtLT5mcy5zcF92YWxpZCA9ICghZnJhbWVfcG9pbnRlcl9uZWVkZWQKLSAJCSAgICB8fCAoY3J0bC0+c3BfaXNfdW5jaGFuZ2luZwotQEAgLTEzMzc3LDExICsxMzM3NSwxMyBAQCBpeDg2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQotIAkJCQkgICsgVU5JVFNfUEVSX1dPUkQpOwotICAgICB9Ci0gCi0rICBIT1NUX1dJREVfSU5UIHJlZ19zYXZlX29mZnNldCA9IGZyYW1lLnJlZ19zYXZlX29mZnNldDsKLSsKLSAgIC8qIFNwZWNpYWwgY2FyZSBtdXN0IGJlIHRha2VuIGZvciB0aGUgbm9ybWFsIHJldHVybiBjYXNlIG9mIGEgZnVuY3Rpb24KLSAgICAgIHVzaW5nIGVoX3JldHVybjogdGhlIGVheCBhbmQgZWR4IHJlZ2lzdGVycyBhcmUgbWFya2VkIGFzIHNhdmVkLCBidXQKLSAgICAgIG5vdCByZXN0b3JlZCBhbG9uZyB0aGlzIHBhdGguICBBZGp1c3QgdGhlIHNhdmUgbG9jYXRpb24gdG8gbWF0Y2guICAqLwotICAgaWYgKGNydGwtPmNhbGxzX2VoX3JldHVybiAmJiBzdHlsZSAhPSAyKQotLSAgICBmcmFtZS5yZWdfc2F2ZV9vZmZzZXQgLT0gMiAqIFVOSVRTX1BFUl9XT1JEOwotKyAgICByZWdfc2F2ZV9vZmZzZXQgLT0gMiAqIFVOSVRTX1BFUl9XT1JEOwotIAotICAgLyogRUhfUkVUVVJOIHJlcXVpcmVzIHRoZSB1c2Ugb2YgbW92ZXMgdG8gZnVuY3Rpb24gcHJvcGVybHkuICAqLwotICAgaWYgKGNydGwtPmNhbGxzX2VoX3JldHVybikKLUBAIC0xMzM5NywxMSArMTMzOTcsMTEgQEAgaXg4Nl9leHBhbmRfZXBpbG9ndWUgKGludCBzdHlsZSkKLSAgIGVsc2UgaWYgKFRBUkdFVF9FUElMT0dVRV9VU0lOR19NT1ZFCi0gCSAgICYmIGNmdW4tPm1hY2hpbmUtPnVzZV9mYXN0X3Byb2xvZ3VlX2VwaWxvZ3VlCi0gCSAgICYmIChmcmFtZS5ucmVncyA+IDEKLS0JICAgICAgIHx8IG0tPmZzLnNwX29mZnNldCAhPSBmcmFtZS5yZWdfc2F2ZV9vZmZzZXQpKQotKwkgICAgICAgfHwgbS0+ZnMuc3Bfb2Zmc2V0ICE9IHJlZ19zYXZlX29mZnNldCkpCi0gICAgIHJlc3RvcmVfcmVnc192aWFfbW92ID0gdHJ1ZTsKLSAgIGVsc2UgaWYgKGZyYW1lX3BvaW50ZXJfbmVlZGVkCi0gCSAgICYmICFmcmFtZS5ucmVncwotLQkgICAmJiBtLT5mcy5zcF9vZmZzZXQgIT0gZnJhbWUucmVnX3NhdmVfb2Zmc2V0KQotKwkgICAmJiBtLT5mcy5zcF9vZmZzZXQgIT0gcmVnX3NhdmVfb2Zmc2V0KQotICAgICByZXN0b3JlX3JlZ3NfdmlhX21vdiA9IHRydWU7Ci0gICBlbHNlIGlmIChmcmFtZV9wb2ludGVyX25lZWRlZAotIAkgICAmJiBUQVJHRVRfVVNFX0xFQVZFCi1AQCAtMTM0MzksNyArMTM0MzksNyBAQCBpeDg2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQotICAgICAgIHJ0eCB0OwotIAotICAgICAgIGlmIChmcmFtZS5ucmVncykKLS0JaXg4Nl9lbWl0X3Jlc3RvcmVfcmVnc191c2luZ19tb3YgKGZyYW1lLnJlZ19zYXZlX29mZnNldCwgc3R5bGUgPT0gMik7Ci0rCWl4ODZfZW1pdF9yZXN0b3JlX3JlZ3NfdXNpbmdfbW92IChyZWdfc2F2ZV9vZmZzZXQsIHN0eWxlID09IDIpOwotIAotICAgICAgIC8qIGVoX3JldHVybiBlcGlsb2d1ZXMgbmVlZCAlZWN4IGFkZGVkIHRvIHRoZSBzdGFjayBwb2ludGVyLiAgKi8KLSAgICAgICBpZiAoc3R5bGUgPT0gMikKLUBAIC0xMzUyOSwxOSArMTM1MjksMTkgQEAgaXg4Nl9leHBhbmRfZXBpbG9ndWUgKGludCBzdHlsZSkKLSAJIGVwaWxvZ3Vlcy4gICovCi0gICAgICAgaWYgKCFtLT5mcy5zcF92YWxpZAotICAJICB8fCAoVEFSR0VUX1NFSAotLQkgICAgICAmJiAobS0+ZnMuc3Bfb2Zmc2V0IC0gZnJhbWUucmVnX3NhdmVfb2Zmc2V0Ci0rCSAgICAgICYmIChtLT5mcy5zcF9vZmZzZXQgLSByZWdfc2F2ZV9vZmZzZXQKLSAJCSAgPj0gU0VIX01BWF9GUkFNRV9TSVpFKSkpCi0gCXsKLSAJICBwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrIChzdGFja19wb2ludGVyX3J0eCwgaGFyZF9mcmFtZV9wb2ludGVyX3J0eCwKLSAJCQkJICAgICBHRU5fSU5UIChtLT5mcy5mcF9vZmZzZXQKLS0JCQkJCSAgICAgIC0gZnJhbWUucmVnX3NhdmVfb2Zmc2V0KSwKLSsJCQkJCSAgICAgIC0gcmVnX3NhdmVfb2Zmc2V0KSwKLSAJCQkJICAgICBzdHlsZSwgZmFsc2UpOwotIAl9Ci0tICAgICAgZWxzZSBpZiAobS0+ZnMuc3Bfb2Zmc2V0ICE9IGZyYW1lLnJlZ19zYXZlX29mZnNldCkKLSsgICAgICBlbHNlIGlmIChtLT5mcy5zcF9vZmZzZXQgIT0gcmVnX3NhdmVfb2Zmc2V0KQotIAl7Ci0gCSAgcHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFjayAoc3RhY2tfcG9pbnRlcl9ydHgsIHN0YWNrX3BvaW50ZXJfcnR4LAotIAkJCQkgICAgIEdFTl9JTlQgKG0tPmZzLnNwX29mZnNldAotLQkJCQkJICAgICAgLSBmcmFtZS5yZWdfc2F2ZV9vZmZzZXQpLAotKwkJCQkJICAgICAgLSByZWdfc2F2ZV9vZmZzZXQpLAotIAkJCQkgICAgIHN0eWxlLAotIAkJCQkgICAgIG0tPmZzLmNmYV9yZWcgPT0gc3RhY2tfcG9pbnRlcl9ydHgpOwotIAl9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwNC14ODYtQWRkLW1pbmRpcmVjdC1icmFuY2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDQteDg2LUFkZC1taW5kaXJlY3QtYnJhbmNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWQ2ZTVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwNC14ODYtQWRkLW1pbmRpcmVjdC1icmFuY2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTU0ICswLDAgQEAKLUZyb20gNjE0MGMyYzBiYjJiNjFlNjlkMGRhODQzMTVlMDQzM2ZmMzUyMGFhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJILkouIEx1IiA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgNiBKYW4gMjAxOCAyMjoyOTo1NSAtMDgwMAotU3ViamVjdDogW1BBVENIIDA0LzEyXSB4ODY6IEFkZCAtbWluZGlyZWN0LWJyYW5jaD0KLQotQWRkIC1taW5kaXJlY3QtYnJhbmNoPSBvcHRpb24gdG8gY29udmVydCBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGNhbGwKLWFuZCByZXR1cm4gdGh1bmtzLiAgVGhlIGRlZmF1bHQgaXMgJ2tlZXAnLCB3aGljaCBrZWVwcyBpbmRpcmVjdCBjYWxsIGFuZAotanVtcCB1bm1vZGlmaWVkLiAgJ3RodW5rJyBjb252ZXJ0cyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGNhbGwgYW5kCi1yZXR1cm4gdGh1bmsuICAndGh1bmstaW5saW5lJyBjb252ZXJ0cyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGlubGluZWQKLWNhbGwgYW5kIHJldHVybiB0aHVuay4gICd0aHVuay1leHRlcm4nIGNvbnZlcnRzIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8KLWV4dGVybmFsIGNhbGwgYW5kIHJldHVybiB0aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBmaWxlLiAgWW91Ci1jYW4gY29udHJvbCB0aGlzIGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5IHVzaW5nIHRoZSBmdW5jdGlvbgotYXR0cmlidXRlIGluZGlyZWN0X2JyYW5jaC4KLQotMiBraW5kcyBvZiB0aHVua3MgYXJlIGdlbmVhdGVkLiAgTWVtb3J5IHRodW5rIHdoZXJlIHRoZSBmdW5jdGlvbiBhZGRyZXNzCi1pcyBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjazoKLQotX194ODZfaW5kaXJlY3RfdGh1bms6Ci0JY2FsbCBMMgotTDE6Ci0JcGF1c2UKLQlsZmVuY2UKLQlqbXAgTDEKLUwyOgotCWxlYSA4KCVyc3ApLCAlcnNwfGxlYSA0KCVlc3ApLCAlZXNwCi0JcmV0Ci0KLUluZGlyZWN0IGptcCB2aWEgbWVtb3J5LCAiam1wIG1lbSIsIGlzIGNvbnZlcnRlZCB0bwotCi0JcHVzaCBtZW1vcnkKLQlqbXAgX194ODZfaW5kaXJlY3RfdGh1bmsKLQotSW5kaXJlY3QgY2FsbCB2aWEgbWVtb3J5LCAiY2FsbCBtZW0iLCBpcyBjb252ZXJ0ZWQgdG8KLQotCWptcCBMMgotTDE6Ci0JcHVzaCBbbWVtXQotCWptcCBfX3g4Nl9pbmRpcmVjdF90aHVuawotTDI6Ci0JY2FsbCBMMQotCi1SZWdpc3RlciB0aHVuayB3aGVyZSB0aGUgZnVuY3Rpb24gYWRkcmVzcyBpcyBpbiBhIHJlZ2lzdGVyLCByZWc6Ci0KLV9feDg2X2luZGlyZWN0X3RodW5rX3JlZzoKLQljYWxsCUwyCi1MMToKLQlwYXVzZQotCWxmZW5jZQotCWptcAlMMQotTDI6Ci0JbW92cQklcmVnLCAoJXJzcCl8bW92bCAgICAlcmVnLCAoJWVzcCkKLQlyZXQKLQotd2hlcmUgcmVnIGlzIG9uZSBvZiAocnxlKWF4LCAocnxlKWR4LCAocnxlKWN4LCAocnxlKWJ4LCAocnxlKXNpLCAocnxlKWRpLAotKHJ8ZSlicCwgcjgsIHI5LCByMTAsIHIxMSwgcjEyLCByMTMsIHIxNCBhbmQgcjE1LgotCi1JbmRpcmVjdCBqbXAgdmlhIHJlZ2lzdGVyLCAiam1wIHJlZyIsIGlzIGNvbnZlcnRlZCB0bwotCi0Jam1wIF9feDg2X2luZGlyZWN0X3RodW5rX3JlZwotCi1JbmRpcmVjdCBjYWxsIHZpYSByZWdpc3RlciwgImNhbGwgcmVnIiwgaXMgY29udmVydGVkIHRvCi0KLQljYWxsIF9feDg2X2luZGlyZWN0X3RodW5rX3JlZwotCi1nY2MvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LW9wdHMuaCAoaW5kaXJlY3RfYnJhbmNoKTogTmV3LgotCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wKTogTGlrZXdpc2UuCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfdXNpbmdfcmVkX3pvbmUpOiBEaXNhbGxvdyByZWQtem9uZQotCXdpdGggbG9jYWwgaW5kaXJlY3QganVtcCB3aGVuIGNvbnZlcnRpbmcgaW5kaXJlY3QgY2FsbCBhbmQganVtcC4KLQkoaXg4Nl9zZXRfaW5kaXJlY3RfYnJhbmNoX3R5cGUpOiBOZXcuCi0JKGl4ODZfc2V0X2N1cnJlbnRfZnVuY3Rpb24pOiBDYWxsIGl4ODZfc2V0X2luZGlyZWN0X2JyYW5jaF90eXBlLgotCShpbmRpcmVjdGxhYmVsbm8pOiBOZXcuCi0JKGluZGlyZWN0X3RodW5rX25lZWRlZCk6IExpa2V3aXNlLgotCShpbmRpcmVjdF90aHVua19ibmRfbmVlZGVkKTogTGlrZXdpc2UuCi0JKGluZGlyZWN0X3RodW5rc191c2VkKTogTGlrZXdpc2UuCi0JKGluZGlyZWN0X3RodW5rc19ibmRfdXNlZCk6IExpa2V3aXNlLgotCShJTkRJUkVDVF9MQUJFTCk6IExpa2V3aXNlLgotCShpbmRpcmVjdF90aHVua19uYW1lKTogTGlrZXdpc2UuCi0JKG91dHB1dF9pbmRpcmVjdF90aHVuayk6IExpa2V3aXNlLgotCShvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24pOiBMaWtld2lzZS4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9yZWcpOiBMaWtld2lzZS4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9wdXNoKTogTGlrZXdpc2UuCi0JKGl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaCk6IExpa2V3aXNlLgotCShpeDg2X291dHB1dF9pbmRpcmVjdF9qbXApOiBMaWtld2lzZS4KLQkoaXg4Nl9jb2RlX2VuZCk6IENhbGwgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIGlmIG5lZWRlZC4KLQkoaXg4Nl9vdXRwdXRfY2FsbF9pbnNuKTogQ2FsbCBpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2ggaWYKLQluZWVkZWQuCi0JKGl4ODZfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUpOiBIYW5kbGUgaW5kaXJlY3RfYnJhbmNoLgotCShpeDg2X2F0dHJpYnV0ZV90YWJsZSk6IEFkZCBpbmRpcmVjdF9icmFuY2guCi0JKiBjb25maWcvaTM4Ni9pMzg2LmggKG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgaW5kaXJlY3RfYnJhbmNoX3R5cGUKLQlhbmQgaGFzX2xvY2FsX2luZGlyZWN0X2p1bXAuCi0JKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChpbmRpcmVjdF9qdW1wKTogU2V0IGhhc19sb2NhbF9pbmRpcmVjdF9qdW1wCi0JdG8gdHJ1ZS4KLQkodGFibGVqdW1wKTogTGlrZXdpc2UuCi0JKCppbmRpcmVjdF9qdW1wKTogVXNlIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcC4KLQkoKnRhYmxlanVtcF8xKTogTGlrZXdpc2UuCi0JKHNpbXBsZV9yZXR1cm5faW5kaXJlY3RfaW50ZXJuYWwpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChtaW5kaXJlY3QtYnJhbmNoPSk6IE5ldyBvcHRpb24uCi0JKGluZGlyZWN0X2JyYW5jaCk6IE5ldy4KLQkoa2VlcCk6IExpa2V3aXNlLgotCSh0aHVuayk6IExpa2V3aXNlLgotCSh0aHVuay1pbmxpbmUpOiBMaWtld2lzZS4KLQkodGh1bmstZXh0ZXJuKTogTGlrZXdpc2UuCi0JKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IGluZGlyZWN0X2JyYW5jaCBmdW5jdGlvbiBhdHRyaWJ1dGUuCi0JKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IC1taW5kaXJlY3QtYnJhbmNoPSBvcHRpb24uCi0KLWdjYy90ZXN0c3VpdGUvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jOiBOZXcgdGVzdC4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmM6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYtb3B0cy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKwotIGdjYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDYzOSArKysrKysrKysrKysrKysrKysrKy0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjYgKy0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArCi0gZ2NjL2RvYy9leHRlbmQudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKwotIGdjYy9kb2MvaW52b2tlLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jICAgfCAgMjAgKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYyAgIHwgIDIwICsKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMgICB8ICAyMSArCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jICAgfCAgMjEgKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYyAgIHwgIDE3ICsKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMgICB8ICAxOCArCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jICAgfCAgNDQgKysKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jICAgICAgICB8ICAyMyArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYyAgICAgICAgfCAgMjEgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMgICAgICAgIHwgIDIzICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jICAgICAgICB8ICAyMiArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYyAgICAgICAgfCAgMjIgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMgICAgICAgIHwgIDIxICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jICAgICAgICB8ICA0NCArKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmMgICAgICAgIHwgIDQyICsrCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jICAgICAgICAgfCAgMjAgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYyAgICAgICAgIHwgIDIxICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgICAgICAgICB8ICAxOSArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jICAgICAgICAgfCAgMjAgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyAgICAgIHwgIDE5ICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMgICAgICB8ICAxOSArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jICAgICAgfCAgMjAgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYyAgICAgIHwgIDIwICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMgICAgICB8ICAxNiArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jICAgICAgfCAgMTcgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYyAgICAgIHwgIDQzICsrCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jICAgICAgfCAgMjAgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYyAgICAgIHwgIDIwICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMgICAgICB8ICAyMSArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jICAgICAgfCAgMjEgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYyAgICAgIHwgIDE3ICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMgICAgICB8ICAxOCArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jICAgICAgfCAgNDQgKysKLSA0MSBmaWxlcyBjaGFuZ2VkLCAxNDg2IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LW9wdHMuaCBiL2djYy9jb25maWcvaTM4Ni9pMzg2LW9wdHMuaAotaW5kZXggYjdmOTJlMy4uY2MyMTE1MiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LW9wdHMuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtb3B0cy5oCi1AQCAtOTksNCArOTksMTcgQEAgZW51bSBzdGFja19wcm90ZWN0b3JfZ3VhcmQgewotICAgU1NQX0dMT0JBTCAgICAvKiBnbG9iYWwgY2FuYXJ5ICovCi0gfTsKLSAKLSsvKiBUaGlzIGlzIHVzZWQgdG8gbWl0aWdhdGUgdmFyaWFudCAjMiBvZiB0aGUgc3BlY3VsYXRpdmUgZXhlY3V0aW9uCi0rICAgdnVsbmVyYWJpbGl0aWVzIG9uIHg4NiBwcm9jZXNzb3JzIGlkZW50aWZpZWQgYnkgQ1ZFLTIwMTctNTcxNSwgYWthCi0rICAgU3BlY3RyZS4gIFRoZXkgY29udmVydCBpbmRpcmVjdCBicmFuY2hlcyBhbmQgZnVuY3Rpb24gcmV0dXJucyB0bwotKyAgIGNhbGwgYW5kIHJldHVybiB0aHVua3MgdG8gYXZvaWQgc3BlY3VsYXRpdmUgZXhlY3V0aW9uIHZpYSBpbmRpcmVjdAotKyAgIGNhbGwsIGptcCBhbmQgcmV0LiAgKi8KLStlbnVtIGluZGlyZWN0X2JyYW5jaCB7Ci0rICBpbmRpcmVjdF9icmFuY2hfdW5zZXQgPSAwLAotKyAgaW5kaXJlY3RfYnJhbmNoX2tlZXAsCi0rICBpbmRpcmVjdF9icmFuY2hfdGh1bmssCi0rICBpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lLAotKyAgaW5kaXJlY3RfYnJhbmNoX3RodW5rX2V4dGVybgotK307Ci0rCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAotaW5kZXggZmY0N2JjMS4uZWNhNGNiZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAotQEAgLTMxMSw2ICszMTEsNyBAQCBleHRlcm4gZW51bSBhdHRyX2NwdSBpeDg2X3NjaGVkdWxlOwotICNlbmRpZgotIAotIGV4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChydHhfaW5zbiAqaW5zbiwgcnR4IGNhbGxfb3ApOwotK2V4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChydHggY2FsbF9vcCwgYm9vbCByZXRfcCk7Ci0gZXh0ZXJuIGJvb2wgaXg4Nl9vcGVyYW5kc19va19mb3JfbW92ZV9tdWx0aXBsZSAocnR4ICpvcGVyYW5kcywgYm9vbCBsb2FkLAotIAkJCQkJCWVudW0gbWFjaGluZV9tb2RlIG1vZGUpOwotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1pbmRleCA2Yzk4Zjc1Li4wYjlmYzRkIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotQEAgLTM2NjIsMTIgKzM2NjIsMjMgQEAgbWFrZV9wYXNzX3N0diAoZ2NjOjpjb250ZXh0ICpjdHh0KQotICAgcmV0dXJuIG5ldyBwYXNzX3N0diAoY3R4dCk7Ci0gfQotIAotLS8qIFJldHVybiB0cnVlIGlmIGEgcmVkLXpvbmUgaXMgaW4gdXNlLiAgKi8KLSsvKiBSZXR1cm4gdHJ1ZSBpZiBhIHJlZC16b25lIGlzIGluIHVzZS4gIFdlIGNhbid0IHVzZSByZWQtem9uZSB3aGVuCi0rICAgdGhlcmUgYXJlIGxvY2FsIGluZGlyZWN0IGp1bXBzLCBsaWtlICJpbmRpcmVjdF9qdW1wIiBvciAidGFibGVqdW1wIiwKLSsgICB3aGljaCBqdW1wcyB0byBhbm90aGVyIHBsYWNlIGluIHRoZSBmdW5jdGlvbiwgc2luY2UgImNhbGwiIGluIHRoZQotKyAgIGluZGlyZWN0IHRodW5rIHB1c2hlcyB0aGUgcmV0dXJuIGFkZHJlc3Mgb250byBzdGFjaywgZGVzdHJveWluZwotKyAgIHJlZC16b25lLgotKwotKyAgIFRPRE86IElmIHdlIGNhbiByZXNlcnZlIHRoZSBmaXJzdCAyIFdPUkRzLCBmb3IgUFVTSCBhbmQsIGFub3RoZXIKLSsgICBmb3IgQ0FMTCwgaW4gcmVkLXpvbmUsIHdlIGNhbiBhbGxvdyBsb2NhbCBpbmRpcmVjdCBqdW1wcyB3aXRoCi0rICAgaW5kaXJlY3QgdGh1bmsuICAqLwotIAotIGJvb2wKLSBpeDg2X3VzaW5nX3JlZF96b25lICh2b2lkKQotIHsKLS0gIHJldHVybiBUQVJHRVRfUkVEX1pPTkUgJiYgIVRBUkdFVF82NEJJVF9NU19BQkk7Ci0rICByZXR1cm4gKFRBUkdFVF9SRURfWk9ORQotKwkgICYmICFUQVJHRVRfNjRCSVRfTVNfQUJJCi0rCSAgJiYgKCFjZnVuLT5tYWNoaW5lLT5oYXNfbG9jYWxfaW5kaXJlY3RfanVtcAotKwkgICAgICB8fCBjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9PSBpbmRpcmVjdF9icmFuY2hfa2VlcCkpOwotIH0KLSAMCi0gLyogUmV0dXJuIGEgc3RyaW5nIHRoYXQgZG9jdW1lbnRzIHRoZSBjdXJyZW50IC1tIG9wdGlvbnMuICBUaGUgY2FsbGVyIGlzCi1AQCAtNjM1MCw2ICs2MzYxLDM3IEBAIGl4ODZfcmVzZXRfcHJldmlvdXNfZm5kZWNsICh2b2lkKQotICAgaXg4Nl9wcmV2aW91c19mbmRlY2wgPSBOVUxMX1RSRUU7Ci0gfQotIAotKy8qIFNldCB0aGUgaW5kaXJlY3RfYnJhbmNoX3R5cGUgZmllbGQgZnJvbSB0aGUgZnVuY3Rpb24gRk5ERUNMLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2l4ODZfc2V0X2luZGlyZWN0X2JyYW5jaF90eXBlICh0cmVlIGZuZGVjbCkKLSt7Ci0rICBpZiAoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgPT0gaW5kaXJlY3RfYnJhbmNoX3Vuc2V0KQotKyAgICB7Ci0rICAgICAgdHJlZSBhdHRyID0gbG9va3VwX2F0dHJpYnV0ZSAoImluZGlyZWN0X2JyYW5jaCIsCi0rCQkJCSAgICBERUNMX0FUVFJJQlVURVMgKGZuZGVjbCkpOwotKyAgICAgIGlmIChhdHRyICE9IE5VTEwpCi0rCXsKLSsJICB0cmVlIGFyZ3MgPSBUUkVFX1ZBTFVFIChhdHRyKTsKLSsJICBpZiAoYXJncyA9PSBOVUxMKQotKwkgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotKwkgIHRyZWUgY3N0ID0gVFJFRV9WQUxVRSAoYXJncyk7Ci0rCSAgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgImtlZXAiKSA9PSAwKQotKwkgICAgY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgPSBpbmRpcmVjdF9icmFuY2hfa2VlcDsKLSsJICBlbHNlIGlmIChzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuayIpID09IDApCi0rCSAgICBjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9IGluZGlyZWN0X2JyYW5jaF90aHVuazsKLSsJICBlbHNlIGlmIChzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuay1pbmxpbmUiKSA9PSAwKQotKwkgICAgY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgPSBpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lOwotKwkgIGVsc2UgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rLWV4dGVybiIpID09IDApCi0rCSAgICBjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9IGluZGlyZWN0X2JyYW5jaF90aHVua19leHRlcm47Ci0rCSAgZWxzZQotKwkgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotKwl9Ci0rICAgICAgZWxzZQotKwljZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9IGl4ODZfaW5kaXJlY3RfYnJhbmNoOwotKyAgICB9Ci0rfQotKwotIC8qIEVzdGFibGlzaCBhcHByb3ByaWF0ZSBiYWNrLWVuZCBjb250ZXh0IGZvciBwcm9jZXNzaW5nIHRoZSBmdW5jdGlvbgotICAgIEZOREVDTC4gIFRoZSBhcmd1bWVudCBtaWdodCBiZSBOVUxMIHRvIGluZGljYXRlIHByb2Nlc3NpbmcgYXQgdG9wCi0gICAgbGV2ZWwsIG91dHNpZGUgb2YgYW55IGZ1bmN0aW9uIHNjb3BlLiAgKi8KLUBAIC02MzYwLDcgKzY0MDIsMTMgQEAgaXg4Nl9zZXRfY3VycmVudF9mdW5jdGlvbiAodHJlZSBmbmRlY2wpCi0gICAgICBzZXZlcmFsIHRpbWVzIGluIHRoZSBjb3Vyc2Ugb2YgY29tcGlsaW5nIGEgZnVuY3Rpb24sIGFuZCB3ZSBkb24ndCB3YW50IHRvCi0gICAgICBzbG93IHRoaW5ncyBkb3duIHRvbyBtdWNoIG9yIGNhbGwgdGFyZ2V0X3JlaW5pdCB3aGVuIGl0IGlzbid0IHNhZmUuICAqLwotICAgaWYgKGZuZGVjbCA9PSBpeDg2X3ByZXZpb3VzX2ZuZGVjbCkKLS0gICAgcmV0dXJuOwotKyAgICB7Ci0rICAgICAgLyogVGhlcmUgbWF5IGJlIDIgZnVuY3Rpb24gYm9kaWVzIGZvciB0aGUgc2FtZSBmdW5jdGlvbiBGTkRFQ0wsCi0rCSBvbmUgaXMgZXh0ZXJuIGlubGluZSBhbmQgb25lIGlzbid0LiAgKi8KLSsgICAgICBpZiAoZm5kZWNsICE9IE5VTExfVFJFRSkKLSsJaXg4Nl9zZXRfaW5kaXJlY3RfYnJhbmNoX3R5cGUgKGZuZGVjbCk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0gCi0gICB0cmVlIG9sZF90cmVlOwotICAgaWYgKGl4ODZfcHJldmlvdXNfZm5kZWNsID09IE5VTExfVFJFRSkKLUBAIC02Mzc3LDYgKzY0MjUsOCBAQCBpeDg2X3NldF9jdXJyZW50X2Z1bmN0aW9uICh0cmVlIGZuZGVjbCkKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSsgIGl4ODZfc2V0X2luZGlyZWN0X2JyYW5jaF90eXBlIChmbmRlY2wpOwotKwotICAgdHJlZSBuZXdfdHJlZSA9IERFQ0xfRlVOQ1RJT05fU1BFQ0lGSUNfVEFSR0VUIChmbmRlY2wpOwotICAgaWYgKG5ld190cmVlID09IE5VTExfVFJFRSkKLSAgICAgbmV3X3RyZWUgPSB0YXJnZXRfb3B0aW9uX2RlZmF1bHRfbm9kZTsKLUBAIC0xMDk2Miw2ICsxMTAxMiwyMjAgQEAgaXg4Nl9zZXR1cF9mcmFtZV9hZGRyZXNzZXMgKHZvaWQpCi0gIyBlbmRpZgotICNlbmRpZgotIAotKy8qIExhYmVsIGNvdW50IGZvciBjYWxsIGFuZCByZXR1cm4gdGh1bmtzLiAgSXQgaXMgdXNlZCB0byBtYWtlIHVuaXF1ZQotKyAgIGxhYmVscyBpbiBjYWxsIGFuZCByZXR1cm4gdGh1bmtzLiAgKi8KLStzdGF0aWMgaW50IGluZGlyZWN0bGFiZWxubzsKLSsKLSsvKiBUcnVlIGlmIGNhbGwgYW5kIHJldHVybiB0aHVuayBmdW5jdGlvbnMgYXJlIG5lZWRlZC4gICovCi0rc3RhdGljIGJvb2wgaW5kaXJlY3RfdGh1bmtfbmVlZGVkID0gZmFsc2U7Ci0rLyogVHJ1ZSBpZiBjYWxsIGFuZCByZXR1cm4gdGh1bmsgZnVuY3Rpb25zIHdpdGggdGhlIEJORCBwcmVmaXggYXJlCi0rICAgbmVlZGVkLiAgKi8KLStzdGF0aWMgYm9vbCBpbmRpcmVjdF90aHVua19ibmRfbmVlZGVkID0gZmFsc2U7Ci0rCi0rLyogQml0IG1hc2tzIG9mIGludGVnZXIgcmVnaXN0ZXJzLCB3aGljaCBjb250YWluIGJyYW5jaCB0YXJnZXQsIHVzZWQKLSsgICBieSBjYWxsIGFuZCByZXR1cm4gdGh1bmtzIGZ1bmN0aW9ucy4gICovCi0rc3RhdGljIGludCBpbmRpcmVjdF90aHVua3NfdXNlZDsKLSsvKiBCaXQgbWFza3Mgb2YgaW50ZWdlciByZWdpc3RlcnMsIHdoaWNoIGNvbnRhaW4gYnJhbmNoIHRhcmdldCwgdXNlZAotKyAgIGJ5IGNhbGwgYW5kIHJldHVybiB0aHVua3MgZnVuY3Rpb25zIHdpdGggdGhlIEJORCBwcmVmaXguICAqLwotK3N0YXRpYyBpbnQgaW5kaXJlY3RfdGh1bmtzX2JuZF91c2VkOwotKwotKyNpZm5kZWYgSU5ESVJFQ1RfTEFCRUwKLSsjIGRlZmluZSBJTkRJUkVDVF9MQUJFTCAiTElORCIKLSsjZW5kaWYKLSsKLSsvKiBGaWxscyBpbiB0aGUgbGFiZWwgbmFtZSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB0aGUgaW5kaXJlY3QgdGh1bmsuICAqLwotKwotK3N0YXRpYyB2b2lkCi0raW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgaW50IHJlZ25vLCBib29sIG5lZWRfYm5kX3ApCi0rewotKyAgaWYgKFVTRV9ISURERU5fTElOS09OQ0UpCi0rICAgIHsKLSsgICAgICBjb25zdCBjaGFyICpibmQgPSBuZWVkX2JuZF9wID8gIl9ibmQiIDogIiI7Ci0rICAgICAgaWYgKHJlZ25vID49IDApCi0rCXsKLSsJICBjb25zdCBjaGFyICpyZWdfcHJlZml4OwotKwkgIGlmIChMRUdBQ1lfSU5UX1JFR05PX1AgKHJlZ25vKSkKLSsJICAgIHJlZ19wcmVmaXggPSBUQVJHRVRfNjRCSVQgPyAiciIgOiAiZSI7Ci0rCSAgZWxzZQotKwkgICAgcmVnX3ByZWZpeCA9ICIiOwotKwkgIHNwcmludGYgKG5hbWUsICJfX3g4Nl9pbmRpcmVjdF90aHVuayVzXyVzJXMiLAotKwkJICAgYm5kLCByZWdfcHJlZml4LCByZWdfbmFtZXNbcmVnbm9dKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJc3ByaW50ZiAobmFtZSwgIl9feDg2X2luZGlyZWN0X3RodW5rJXMiLCBibmQpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBpZiAocmVnbm8gPj0gMCkKLSsJewotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChuYW1lLCAiTElUQlIiLCByZWdubyk7Ci0rCSAgZWxzZQotKwkgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChuYW1lLCAiTElUUiIsIHJlZ25vKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChuYW1lLCAiTElUQiIsIDApOwotKwkgIGVsc2UKLSsJICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobmFtZSwgIkxJVCIsIDApOwotKwl9Ci0rICAgIH0KLSt9Ci0rCi0rLyogT3V0cHV0IGEgY2FsbCBhbmQgcmV0dXJuIHRodW5rIGZvciBpbmRpcmVjdCBicmFuY2guICBJZiBCTkRfUCBpcwotKyAgIHRydWUsIHRoZSBCTkQgcHJlZml4IGlzIG5lZWRlZC4gICBJZiBSRUdOTyAhPSAtMSwgIHRoZSBmdW5jdGlvbgotKyAgIGFkZHJlc3MgaXMgaW4gUkVHTk8gYW5kIHRoZSBjYWxsIGFuZCByZXR1cm4gdGh1bmsgbG9va3MgbGlrZToKLSsKLSsJY2FsbAlMMgotKyAgIEwxOgotKwlwYXVzZQotKwlqbXAJTDEKLSsgICBMMjoKLSsJbW92CSVSRUcsICglc3ApCi0rCXJldAotKwotKyAgIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIGFkZHJlc3MgaXMgb24gdGhlIHRvcCBvZiBzdGFjayBhbmQgdGhlCi0rICAgY2FsbCBhbmQgcmV0dXJuIHRodW5rIGxvb2tzIGxpa2U6Ci0rCi0rCWNhbGwgTDIKLSsgIEwxOgotKwlwYXVzZQotKwlqbXAgTDEKLSsgIEwyOgotKwlsZWEgV09SRF9TSVpFKCVzcCksICVzcAotKwlyZXQKLSsgKi8KLSsKLStzdGF0aWMgdm9pZAotK291dHB1dF9pbmRpcmVjdF90aHVuayAoYm9vbCBuZWVkX2JuZF9wLCBpbnQgcmVnbm8pCi0rewotKyAgY2hhciBpbmRpcmVjdGxhYmVsMVszMl07Ci0rICBjaGFyIGluZGlyZWN0bGFiZWwyWzMyXTsKLSsKLSsgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAoaW5kaXJlY3RsYWJlbDEsIElORElSRUNUX0xBQkVMLAotKwkJCSAgICAgICBpbmRpcmVjdGxhYmVsbm8rKyk7Ci0rICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKGluZGlyZWN0bGFiZWwyLCBJTkRJUkVDVF9MQUJFTCwKLSsJCQkgICAgICAgaW5kaXJlY3RsYWJlbG5vKyspOwotKwotKyAgLyogQ2FsbCAqLwotKyAgaWYgKG5lZWRfYm5kX3ApCi0rICAgIGZwdXRzICgiXHRibmQgY2FsbFx0IiwgYXNtX291dF9maWxlKTsKLSsgIGVsc2UKLSsgICAgZnB1dHMgKCJcdGNhbGxcdCIsIGFzbV9vdXRfZmlsZSk7Ci0rICBhc3NlbWJsZV9uYW1lX3JhdyAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMik7Ci0rICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsKLSsgIEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwgKGFzbV9vdXRfZmlsZSwgaW5kaXJlY3RsYWJlbDEpOwotKwotKyAgLyogUGF1c2UgKyBsZmVuY2UuICAqLwotKyAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRwYXVzZVxuXHRsZmVuY2VcbiIpOwotKwotKyAgLyogSnVtcC4gICovCi0rICBmcHV0cyAoIlx0am1wXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgYXNzZW1ibGVfbmFtZV9yYXcgKGFzbV9vdXRfZmlsZSwgaW5kaXJlY3RsYWJlbDEpOwotKyAgZnB1dGMgKCdcbicsIGFzbV9vdXRfZmlsZSk7Ci0rCi0rICBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMIChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwyKTsKLSsKLSsgIGlmIChyZWdubyA+PSAwKQotKyAgICB7Ci0rICAgICAgLyogTU9WLiAgKi8KLSsgICAgICBydHggeG9wc1syXTsKLSsgICAgICB4b3BzWzBdID0gZ2VuX3J0eF9NRU0gKHdvcmRfbW9kZSwgc3RhY2tfcG9pbnRlcl9ydHgpOwotKyAgICAgIHhvcHNbMV0gPSBnZW5fcnR4X1JFRyAod29yZF9tb2RlLCByZWdubyk7Ci0rICAgICAgb3V0cHV0X2FzbV9pbnNuICgibW92XHR7JTEsICUwfCUwLCAlMX0iLCB4b3BzKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogTEVBLiAgKi8KLSsgICAgICBydHggeG9wc1syXTsKLSsgICAgICB4b3BzWzBdID0gc3RhY2tfcG9pbnRlcl9ydHg7Ci0rICAgICAgeG9wc1sxXSA9IHBsdXNfY29uc3RhbnQgKFBtb2RlLCBzdGFja19wb2ludGVyX3J0eCwgVU5JVFNfUEVSX1dPUkQpOwotKyAgICAgIG91dHB1dF9hc21faW5zbiAoImxlYVx0eyVFMSwgJTB8JTAsICVFMX0iLCB4b3BzKTsKLSsgICAgfQotKwotKyAgaWYgKG5lZWRfYm5kX3ApCi0rICAgIGZwdXRzICgiXHRibmQgcmV0XG4iLCBhc21fb3V0X2ZpbGUpOwotKyAgZWxzZQotKyAgICBmcHV0cyAoIlx0cmV0XG4iLCBhc21fb3V0X2ZpbGUpOwotK30KLSsKLSsvKiBPdXRwdXQgYSBmdW50aW9uIHdpdGggYSBjYWxsIGFuZCByZXR1cm4gdGh1bmsgZm9yIGluZGlyZWN0IGJyYW5jaC4KLSsgICBJZiBCTkRfUCBpcyB0cnVlLCB0aGUgQk5EIHByZWZpeCBpcyBuZWVkZWQuICAgSWYgUkVHTk8gIT0gLTEsICB0aGUKLSsgICBmdW5jdGlvbiBhZGRyZXNzIGlzIGluIFJFR05PLiAgT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gYWRkcmVzcyBpcwotKyAgIG9uIHRoZSB0b3Agb2Ygc3RhY2suICAqLwotKwotK3N0YXRpYyB2b2lkCi0rb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChib29sIG5lZWRfYm5kX3AsIGludCByZWdubykKLSt7Ci0rICBjaGFyIG5hbWVbMzJdOwotKyAgdHJlZSBkZWNsOwotKwotKyAgLyogQ3JlYXRlIF9feDg2X2luZGlyZWN0X3RodW5rL19feDg2X2luZGlyZWN0X3RodW5rX2JuZC4gICovCi0rICBpbmRpcmVjdF90aHVua19uYW1lIChuYW1lLCByZWdubywgbmVlZF9ibmRfcCk7Ci0rICBkZWNsID0gYnVpbGRfZGVjbCAoQlVJTFRJTlNfTE9DQVRJT04sIEZVTkNUSU9OX0RFQ0wsCi0rCQkgICAgIGdldF9pZGVudGlmaWVyIChuYW1lKSwKLSsJCSAgICAgYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0ICh2b2lkX3R5cGVfbm9kZSwgTlVMTF9UUkVFKSk7Ci0rICBERUNMX1JFU1VMVCAoZGVjbCkgPSBidWlsZF9kZWNsIChCVUlMVElOU19MT0NBVElPTiwgUkVTVUxUX0RFQ0wsCi0rCQkJCSAgIE5VTExfVFJFRSwgdm9pZF90eXBlX25vZGUpOwotKyAgVFJFRV9QVUJMSUMgKGRlY2wpID0gMTsKLSsgIFRSRUVfU1RBVElDIChkZWNsKSA9IDE7Ci0rICBERUNMX0lHTk9SRURfUCAoZGVjbCkgPSAxOwotKwotKyNpZiBUQVJHRVRfTUFDSE8KLSsgIGlmIChUQVJHRVRfTUFDSE8pCi0rICAgIHsKLSsgICAgICBzd2l0Y2hfdG9fc2VjdGlvbiAoZGFyd2luX3NlY3Rpb25zW3BpY2Jhc2VfdGh1bmtfc2VjdGlvbl0pOwotKyAgICAgIGZwdXRzICgiXHQud2Vha19kZWZpbml0aW9uXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGFzc2VtYmxlX25hbWUgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0rICAgICAgZnB1dHMgKCJcblx0LnByaXZhdGVfZXh0ZXJuXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGFzc2VtYmxlX25hbWUgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0rICAgICAgcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsgICAgICBBU01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIG5hbWUpOwotKyAgICAgIERFQ0xfV0VBSyAoZGVjbCkgPSAxOwotKyAgICB9Ci0rICBlbHNlCi0rI2VuZGlmCi0rICAgIGlmIChVU0VfSElEREVOX0xJTktPTkNFKQotKyAgICAgIHsKLSsJY2dyYXBoX25vZGU6OmNyZWF0ZSAoZGVjbCktPnNldF9jb21kYXRfZ3JvdXAgKERFQ0xfQVNTRU1CTEVSX05BTUUgKGRlY2wpKTsKLSsKLSsJdGFyZ2V0bS5hc21fb3V0LnVuaXF1ZV9zZWN0aW9uIChkZWNsLCAwKTsKLSsJc3dpdGNoX3RvX3NlY3Rpb24gKGdldF9uYW1lZF9zZWN0aW9uIChkZWNsLCBOVUxMLCAwKSk7Ci0rCi0rCXRhcmdldG0uYXNtX291dC5nbG9iYWxpemVfbGFiZWwgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0rCWZwdXRzICgiXHQuaGlkZGVuXHQiLCBhc21fb3V0X2ZpbGUpOwotKwlhc3NlbWJsZV9uYW1lIChhc21fb3V0X2ZpbGUsIG5hbWUpOwotKwlwdXRjICgnXG4nLCBhc21fb3V0X2ZpbGUpOwotKwlBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FIChhc21fb3V0X2ZpbGUsIG5hbWUsIGRlY2wpOwotKyAgICAgIH0KLSsgICAgZWxzZQotKyAgICAgIHsKLSsJc3dpdGNoX3RvX3NlY3Rpb24gKHRleHRfc2VjdGlvbik7Ci0rCUFTTV9PVVRQVVRfTEFCRUwgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0rICAgICAgfQotKwotKyAgREVDTF9JTklUSUFMIChkZWNsKSA9IG1ha2Vfbm9kZSAoQkxPQ0spOwotKyAgY3VycmVudF9mdW5jdGlvbl9kZWNsID0gZGVjbDsKLSsgIGFsbG9jYXRlX3N0cnVjdF9mdW5jdGlvbiAoZGVjbCwgZmFsc2UpOwotKyAgaW5pdF9mdW5jdGlvbl9zdGFydCAoZGVjbCk7Ci0rICAvKiBXZSdyZSBhYm91dCB0byBoaWRlIHRoZSBmdW5jdGlvbiBib2R5IGZyb20gY2FsbGVlcyBvZiBmaW5hbF8qIGJ5Ci0rICAgICBlbWl0dGluZyBpdCBkaXJlY3RseTsgdGVsbCB0aGVtIHdlJ3JlIGEgdGh1bmssIGlmIHRoZXkgY2FyZS4gICovCi0rICBjZnVuLT5pc190aHVuayA9IHRydWU7Ci0rICBmaXJzdF9mdW5jdGlvbl9ibG9ja19pc19jb2xkID0gZmFsc2U7Ci0rICAvKiBNYWtlIHN1cmUgdW53aW5kIGluZm8gaXMgZW1pdHRlZCBmb3IgdGhlIHRodW5rIGlmIG5lZWRlZC4gICovCi0rICBmaW5hbF9zdGFydF9mdW5jdGlvbiAoZW1pdF9iYXJyaWVyICgpLCBhc21fb3V0X2ZpbGUsIDEpOwotKwotKyAgb3V0cHV0X2luZGlyZWN0X3RodW5rIChuZWVkX2JuZF9wLCByZWdubyk7Ci0rCi0rICBmaW5hbF9lbmRfZnVuY3Rpb24gKCk7Ci0rICBpbml0X2luc25fbGVuZ3RocyAoKTsKLSsgIGZyZWVfYWZ0ZXJfY29tcGlsYXRpb24gKGNmdW4pOwotKyAgc2V0X2NmdW4gKE5VTEwpOwotKyAgY3VycmVudF9mdW5jdGlvbl9kZWNsID0gTlVMTDsKLSt9Ci0rCi0gc3RhdGljIGludCBwaWNfbGFiZWxzX3VzZWQ7Ci0gCi0gLyogRmlsbHMgaW4gdGhlIGxhYmVsIG5hbWUgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgYSBwYyB0aHVuayBmb3IKLUBAIC0xMDk4OCwxMSArMTEyNTIsMzIgQEAgaXg4Nl9jb2RlX2VuZCAodm9pZCkKLSAgIHJ0eCB4b3BzWzJdOwotICAgaW50IHJlZ25vOwotIAotKyAgaWYgKGluZGlyZWN0X3RodW5rX25lZWRlZCkKLSsgICAgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChmYWxzZSwgLTEpOwotKyAgaWYgKGluZGlyZWN0X3RodW5rX2JuZF9uZWVkZWQpCi0rICAgIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAodHJ1ZSwgLTEpOwotKwotKyAgZm9yIChyZWdubyA9IEZJUlNUX1JFWF9JTlRfUkVHOyByZWdubyA8PSBMQVNUX1JFWF9JTlRfUkVHOyByZWdubysrKQotKyAgICB7Ci0rICAgICAgaW50IGkgPSByZWdubyAtIEZJUlNUX1JFWF9JTlRfUkVHICsgTEFTVF9JTlRfUkVHICsgMTsKLSsgICAgICBpZiAoKGluZGlyZWN0X3RodW5rc191c2VkICYgKDEgPDwgaSkpKQotKwlvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKGZhbHNlLCByZWdubyk7Ci0rCi0rICAgICAgaWYgKChpbmRpcmVjdF90aHVua3NfYm5kX3VzZWQgJiAoMSA8PCBpKSkpCi0rCW91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAodHJ1ZSwgcmVnbm8pOwotKyAgICB9Ci0rCi0gICBmb3IgKHJlZ25vID0gQVhfUkVHOyByZWdubyA8PSBTUF9SRUc7IHJlZ25vKyspCi0gICAgIHsKLSAgICAgICBjaGFyIG5hbWVbMzJdOwotICAgICAgIHRyZWUgZGVjbDsKLSAKLSsgICAgICBpZiAoKGluZGlyZWN0X3RodW5rc191c2VkICYgKDEgPDwgcmVnbm8pKSkKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChmYWxzZSwgcmVnbm8pOwotKwotKyAgICAgIGlmICgoaW5kaXJlY3RfdGh1bmtzX2JuZF91c2VkICYgKDEgPDwgcmVnbm8pKSkKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uICh0cnVlLCByZWdubyk7Ci0rCi0gICAgICAgaWYgKCEocGljX2xhYmVsc191c2VkICYgKDEgPDwgcmVnbm8pKSkKLSAJY29udGludWU7Ci0gCi1AQCAtMjczNjksMTIgKzI3NjU0LDI5MiBAQCBpeDg2X25vcGljX25vcGx0X2F0dHJpYnV0ZV9wIChydHggY2FsbF9vcCkKLSAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0rLyogT3V0cHV0IGluZGlyZWN0IGJyYW5jaCB2aWEgYSBjYWxsIGFuZCByZXR1cm4gdGh1bmsuICBDQUxMX09QIGlzIGEKLSsgICByZWdpc3RlciB3aGljaCBjb250YWlucyB0aGUgYnJhbmNoIHRhcmdldC4gIFhBU00gaXMgdGhlIGFzc2VtYmx5Ci0rICAgdGVtcGxhdGUgZm9yIENBTExfT1AuICBCcmFuY2ggaXMgYSB0YWlsIGNhbGwgaWYgU0lCQ0FMTF9QIGlzIHRydWUuCi0rICAgQSBub3JtYWwgY2FsbCBpcyBjb252ZXJ0ZWQgdG86Ci0rCi0rCWNhbGwgX194ODZfaW5kaXJlY3RfdGh1bmtfcmVnCi0rCi0rICAgYW5kIGEgdGFpbCBjYWxsIGlzIGNvbnZlcnRlZCB0bzoKLSsKLSsJam1wIF9feDg2X2luZGlyZWN0X3RodW5rX3JlZwotKyAqLwotKwotK3N0YXRpYyB2b2lkCi0raXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9yZWcgKHJ0eCBjYWxsX29wLCBib29sIHNpYmNhbGxfcCkKLSt7Ci0rICBjaGFyIHRodW5rX25hbWVfYnVmWzMyXTsKLSsgIGNoYXIgKnRodW5rX25hbWU7Ci0rICBib29sIG5lZWRfYm5kX3AgPSBpeDg2X2JuZF9wcmVmaXhlZF9pbnNuX3AgKGN1cnJlbnRfb3V0cHV0X2luc24pOwotKyAgaW50IHJlZ25vID0gUkVHTk8gKGNhbGxfb3ApOwotKwotKyAgaWYgKGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlCi0rICAgICAgIT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rX2lubGluZSkKLSsgICAgewotKyAgICAgIGlmIChjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmspCi0rCXsKLSsJICBpbnQgaSA9IHJlZ25vOwotKwkgIGlmIChpID49IEZJUlNUX1JFWF9JTlRfUkVHKQotKwkgICAgaSAtPSAoRklSU1RfUkVYX0lOVF9SRUcgLSBMQVNUX0lOVF9SRUcgLSAxKTsKLSsJICBpZiAobmVlZF9ibmRfcCkKLSsJICAgIGluZGlyZWN0X3RodW5rc19ibmRfdXNlZCB8PSAxIDw8IGk7Ci0rCSAgZWxzZQotKwkgICAgaW5kaXJlY3RfdGh1bmtzX3VzZWQgfD0gMSA8PCBpOwotKwl9Ci0rICAgICAgaW5kaXJlY3RfdGh1bmtfbmFtZSAodGh1bmtfbmFtZV9idWYsIHJlZ25vLCBuZWVkX2JuZF9wKTsKLSsgICAgICB0aHVua19uYW1lID0gdGh1bmtfbmFtZV9idWY7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgdGh1bmtfbmFtZSA9IE5VTEw7Ci0rCi0rICBpZiAoc2liY2FsbF9wKQotKyAgICB7Ci0rICAgICAgaWYgKHRodW5rX25hbWUgIT0gTlVMTCkKLSsJewotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRibmQgam1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCSAgZWxzZQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rIChuZWVkX2JuZF9wLCByZWdubyk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGlmICh0aHVua19uYW1lICE9IE5VTEwpCi0rCXsKLSsJICBpZiAobmVlZF9ibmRfcCkKLSsJICAgIGZwcmludGYgKGFzbV9vdXRfZmlsZSwgIlx0Ym5kIGNhbGxcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJICBlbHNlCi0rCSAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGNhbGxcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJICByZXR1cm47Ci0rCX0KLSsKLSsgICAgICBjaGFyIGluZGlyZWN0bGFiZWwxWzMyXTsKLSsgICAgICBjaGFyIGluZGlyZWN0bGFiZWwyWzMyXTsKLSsKLSsgICAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKGluZGlyZWN0bGFiZWwxLAotKwkJCQkgICBJTkRJUkVDVF9MQUJFTCwKLSsJCQkJICAgaW5kaXJlY3RsYWJlbG5vKyspOwotKyAgICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAoaW5kaXJlY3RsYWJlbDIsCi0rCQkJCSAgIElORElSRUNUX0xBQkVMLAotKwkJCQkgICBpbmRpcmVjdGxhYmVsbm8rKyk7Ci0rCi0rICAgICAgLyogSnVtcC4gICovCi0rICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCWZwdXRzICgiXHRibmQgam1wXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGVsc2UKLSsJZnB1dHMgKCJcdGptcFx0IiwgYXNtX291dF9maWxlKTsKLSsgICAgICBhc3NlbWJsZV9uYW1lX3JhdyAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMik7Ci0rICAgICAgZnB1dGMgKCdcbicsIGFzbV9vdXRfZmlsZSk7Ci0rCi0rICAgICAgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMSk7Ci0rCi0rICAgICAgaWYgKHRodW5rX25hbWUgIT0gTlVMTCkKLSsJewotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRibmQgam1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCSAgZWxzZQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rIChuZWVkX2JuZF9wLCByZWdubyk7Ci0rCi0rICAgICAgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMik7Ci0rCi0rICAgICAgLyogQ2FsbC4gICovCi0rICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCWZwdXRzICgiXHRibmQgY2FsbFx0IiwgYXNtX291dF9maWxlKTsKLSsgICAgICBlbHNlCi0rCWZwdXRzICgiXHRjYWxsXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGFzc2VtYmxlX25hbWVfcmF3IChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwxKTsKLSsgICAgICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsgICAgfQotK30KLSsKLSsvKiBPdXRwdXQgaW5kaXJlY3QgYnJhbmNoIHZpYSBhIGNhbGwgYW5kIHJldHVybiB0aHVuay4gIENBTExfT1AgaXMKLSsgICB0aGUgYnJhbmNoIHRhcmdldC4gIFhBU00gaXMgdGhlIGFzc2VtYmx5IHRlbXBsYXRlIGZvciBDQUxMX09QLgotKyAgIEJyYW5jaCBpcyBhIHRhaWwgY2FsbCBpZiBTSUJDQUxMX1AgaXMgdHJ1ZS4gIEEgbm9ybWFsIGNhbGwgaXMKLSsgICBjb252ZXJ0ZWQgdG86Ci0rCi0rCWptcCBMMgotKyAgIEwxOgotKwlwdXNoIENBTExfT1AKLSsJam1wIF9feDg2X2luZGlyZWN0X3RodW5rCi0rICAgTDI6Ci0rCWNhbGwgTDEKLSsKLSsgICBhbmQgYSB0YWlsIGNhbGwgaXMgY29udmVydGVkIHRvOgotKwotKwlwdXNoIENBTExfT1AKLSsJam1wIF9feDg2X2luZGlyZWN0X3RodW5rCi0rICovCi0rCi0rc3RhdGljIHZvaWQKLStpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2hfdmlhX3B1c2ggKHJ0eCBjYWxsX29wLCBjb25zdCBjaGFyICp4YXNtLAotKwkJCQkgICAgICBib29sIHNpYmNhbGxfcCkKLSt7Ci0rICBjaGFyIHRodW5rX25hbWVfYnVmWzMyXTsKLSsgIGNoYXIgKnRodW5rX25hbWU7Ci0rICBjaGFyIHB1c2hfYnVmWzY0XTsKLSsgIGJvb2wgbmVlZF9ibmRfcCA9IGl4ODZfYm5kX3ByZWZpeGVkX2luc25fcCAoY3VycmVudF9vdXRwdXRfaW5zbik7Ci0rICBpbnQgcmVnbm8gPSAtMTsKLSsKLSsgIGlmIChjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotKyAgICAgICE9IGluZGlyZWN0X2JyYW5jaF90aHVua19pbmxpbmUpCi0rICAgIHsKLSsgICAgICBpZiAoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgPT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rKQotKwl7Ci0rCSAgaWYgKG5lZWRfYm5kX3ApCi0rCSAgICBpbmRpcmVjdF90aHVua19ibmRfbmVlZGVkID0gdHJ1ZTsKLSsJICBlbHNlCi0rCSAgICBpbmRpcmVjdF90aHVua19uZWVkZWQgPSB0cnVlOwotKwl9Ci0rICAgICAgaW5kaXJlY3RfdGh1bmtfbmFtZSAodGh1bmtfbmFtZV9idWYsIHJlZ25vLCBuZWVkX2JuZF9wKTsKLSsgICAgICB0aHVua19uYW1lID0gdGh1bmtfbmFtZV9idWY7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgdGh1bmtfbmFtZSA9IE5VTEw7Ci0rCi0rICBzbnByaW50ZiAocHVzaF9idWYsIHNpemVvZiAocHVzaF9idWYpLCAicHVzaHslY31cdCVzIiwKLSsJICAgIFRBUkdFVF82NEJJVCA/ICdxJyA6ICdsJywgeGFzbSk7Ci0rCi0rICBpZiAoc2liY2FsbF9wKQotKyAgICB7Ci0rICAgICAgb3V0cHV0X2FzbV9pbnNuIChwdXNoX2J1ZiwgJmNhbGxfb3ApOwotKyAgICAgIGlmICh0aHVua19uYW1lICE9IE5VTEwpCi0rCXsKLSsJICBpZiAobmVlZF9ibmRfcCkKLSsJICAgIGZwcmludGYgKGFzbV9vdXRfZmlsZSwgIlx0Ym5kIGptcFx0JXNcbiIsIHRodW5rX25hbWUpOwotKwkgIGVsc2UKLSsJICAgIGZwcmludGYgKGFzbV9vdXRfZmlsZSwgIlx0am1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCW91dHB1dF9pbmRpcmVjdF90aHVuayAobmVlZF9ibmRfcCwgcmVnbm8pOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBjaGFyIGluZGlyZWN0bGFiZWwxWzMyXTsKLSsgICAgICBjaGFyIGluZGlyZWN0bGFiZWwyWzMyXTsKLSsKLSsgICAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKGluZGlyZWN0bGFiZWwxLAotKwkJCQkgICBJTkRJUkVDVF9MQUJFTCwKLSsJCQkJICAgaW5kaXJlY3RsYWJlbG5vKyspOwotKyAgICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAoaW5kaXJlY3RsYWJlbDIsCi0rCQkJCSAgIElORElSRUNUX0xBQkVMLAotKwkJCQkgICBpbmRpcmVjdGxhYmVsbm8rKyk7Ci0rCi0rICAgICAgLyogSnVtcC4gICovCi0rICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCWZwdXRzICgiXHRibmQgam1wXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGVsc2UKLSsJZnB1dHMgKCJcdGptcFx0IiwgYXNtX291dF9maWxlKTsKLSsgICAgICBhc3NlbWJsZV9uYW1lX3JhdyAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMik7Ci0rICAgICAgZnB1dGMgKCdcbicsIGFzbV9vdXRfZmlsZSk7Ci0rCi0rICAgICAgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMSk7Ci0rCi0rICAgICAgLyogQW4gZXh0ZXJuYWwgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCB2aWEgR09ULCBpbnN0ZWFkIG9mIFBMVC4gICovCi0rICAgICAgaWYgKE1FTV9QIChjYWxsX29wKSkKLSsJewotKwkgIHN0cnVjdCBpeDg2X2FkZHJlc3MgcGFydHM7Ci0rCSAgcnR4IGFkZHIgPSBYRVhQIChjYWxsX29wLCAwKTsKLSsJICBpZiAoaXg4Nl9kZWNvbXBvc2VfYWRkcmVzcyAoYWRkciwgJnBhcnRzKQotKwkgICAgICAmJiBwYXJ0cy5iYXNlID09IHN0YWNrX3BvaW50ZXJfcnR4KQotKwkgICAgewotKwkgICAgICAvKiBTaW5jZSBjYWxsIHdpbGwgYWRqdXN0IHN0YWNrIGJ5IC1VTklUU19QRVJfV09SRCwKLSsJCSB3ZSBtdXN0IGNvbnZlcnQgImRpc3Aoc3RhY2ssIGluZGV4LCBzY2FsZSkiIHRvCi0rCQkgImRpc3ArVU5JVFNfUEVSX1dPUkQoc3RhY2ssIGluZGV4LCBzY2FsZSkiLiAgKi8KLSsJICAgICAgaWYgKHBhcnRzLmluZGV4KQotKwkJewotKwkJICBhZGRyID0gZ2VuX3J0eF9NVUxUIChQbW9kZSwgcGFydHMuaW5kZXgsCi0rCQkJCSAgICAgICBHRU5fSU5UIChwYXJ0cy5zY2FsZSkpOwotKwkJICBhZGRyID0gZ2VuX3J0eF9QTFVTIChQbW9kZSwgc3RhY2tfcG9pbnRlcl9ydHgsCi0rCQkJCSAgICAgICBhZGRyKTsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJYWRkciA9IHN0YWNrX3BvaW50ZXJfcnR4OwotKwotKwkgICAgICBydHggZGlzcDsKLSsJICAgICAgaWYgKHBhcnRzLmRpc3AgIT0gTlVMTF9SVFgpCi0rCQlkaXNwID0gcGx1c19jb25zdGFudCAoUG1vZGUsIHBhcnRzLmRpc3AsCi0rCQkJCSAgICAgIFVOSVRTX1BFUl9XT1JEKTsKLSsJICAgICAgZWxzZQotKwkJZGlzcCA9IEdFTl9JTlQgKFVOSVRTX1BFUl9XT1JEKTsKLSsKLSsJICAgICAgYWRkciA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIGFkZHIsIGRpc3ApOwotKwkgICAgICBjYWxsX29wID0gZ2VuX3J0eF9NRU0gKEdFVF9NT0RFIChjYWxsX29wKSwgYWRkcik7Ci0rCSAgICB9Ci0rCX0KLSsKLSsgICAgICBvdXRwdXRfYXNtX2luc24gKHB1c2hfYnVmLCAmY2FsbF9vcCk7Ci0rCi0rICAgICAgaWYgKHRodW5rX25hbWUgIT0gTlVMTCkKLSsJewotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRibmQgam1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCSAgZWxzZQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rIChuZWVkX2JuZF9wLCByZWdubyk7Ci0rCi0rICAgICAgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMik7Ci0rCi0rICAgICAgLyogQ2FsbC4gICovCi0rICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCWZwdXRzICgiXHRibmQgY2FsbFx0IiwgYXNtX291dF9maWxlKTsKLSsgICAgICBlbHNlCi0rCWZwdXRzICgiXHRjYWxsXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGFzc2VtYmxlX25hbWVfcmF3IChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwxKTsKLSsgICAgICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsgICAgfQotK30KLSsKLSsvKiBPdXRwdXQgaW5kaXJlY3QgYnJhbmNoIHZpYSBhIGNhbGwgYW5kIHJldHVybiB0aHVuay4gIENBTExfT1AgaXMKLSsgICB0aGUgYnJhbmNoIHRhcmdldC4gIFhBU00gaXMgdGhlIGFzc2VtYmx5IHRlbXBsYXRlIGZvciBDQUxMX09QLgotKyAgIEJyYW5jaCBpcyBhIHRhaWwgY2FsbCBpZiBTSUJDQUxMX1AgaXMgdHJ1ZS4gICAqLwotKwotK3N0YXRpYyB2b2lkCi0raXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoIChydHggY2FsbF9vcCwgY29uc3QgY2hhciAqeGFzbSwKLSsJCQkgICAgIGJvb2wgc2liY2FsbF9wKQotK3sKLSsgIGlmIChSRUdfUCAoY2FsbF9vcCkpCi0rICAgIGl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaF92aWFfcmVnIChjYWxsX29wLCBzaWJjYWxsX3ApOwotKyAgZWxzZQotKyAgICBpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2hfdmlhX3B1c2ggKGNhbGxfb3AsIHhhc20sIHNpYmNhbGxfcCk7Ci0rfQotKy8qIE91dHB1dCBpbmRpcmVjdCBqdW1wLiAgQ0FMTF9PUCBpcyB0aGUganVtcCB0YXJnZXQuICBKdW1wIGlzIGEKLSsgICBmdW5jdGlvbiByZXR1cm4gaWYgUkVUX1AgaXMgdHJ1ZS4gICovCi0rCi0rY29uc3QgY2hhciAqCi0raXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChydHggY2FsbF9vcCwgYm9vbCByZXRfcCkKLSt7Ci0rICBpZiAoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rICAgIHsKLSsgICAgICAvKiBXZSBjYW4ndCBoYXZlIHJlZC16b25lIGlmIHRoaXMgaXNuJ3QgYSBmdW5jdGlvbiByZXR1cm4gc2luY2UKLSsJICJjYWxsIiBpbiB0aGUgaW5kaXJlY3QgdGh1bmsgcHVzaGVzIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvCi0rCSBzdGFjaywgZGVzdHJveWluZyByZWQtem9uZS4gICovCi0rICAgICAgaWYgKCFyZXRfcCAmJiBpeDg2X3JlZF96b25lX3NpemUgIT0gMCkKLSsJZ2NjX3VucmVhY2hhYmxlICgpOwotKwotKyAgICAgIGl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaCAoY2FsbF9vcCwgIiUwIiwgdHJ1ZSk7Ci0rICAgICAgcmV0dXJuICIiOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHJldHVybiAiJSFqbXBcdCVBMCI7Ci0rfQotKwotIC8qIE91dHB1dCB0aGUgYXNzZW1ibHkgZm9yIGEgY2FsbCBpbnN0cnVjdGlvbi4gICovCi0gCi0gY29uc3QgY2hhciAqCi0gaXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChydHhfaW5zbiAqaW5zbiwgcnR4IGNhbGxfb3ApCi0gewotICAgYm9vbCBkaXJlY3RfcCA9IGNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kIChjYWxsX29wLCBWT0lEbW9kZSk7Ci0rICBib29sIG91dHB1dF9pbmRpcmVjdF9wCi0rICAgID0gKCFUQVJHRVRfU0VICi0rICAgICAgICYmIGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwKTsKLSAgIGJvb2wgc2VoX25vcF9wID0gZmFsc2U7Ci0gICBjb25zdCBjaGFyICp4YXNtOwotIAotQEAgLTI3MzgzLDcgKzI3OTQ4LDEzIEBAIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAocnR4X2luc24gKmluc24sIHJ0eCBjYWxsX29wKQotICAgICAgIGlmIChkaXJlY3RfcCkKLSAJewotIAkgIGlmIChpeDg2X25vcGljX25vcGx0X2F0dHJpYnV0ZV9wIChjYWxsX29wKSkKLS0JICAgIHhhc20gPSAiJSFqbXBcdHsqJXAwQEdPVFBDUkVMKCUlcmlwKXxbUVdPUkQgUFRSICVwMEBHT1RQQ1JFTFtyaXBdXX0iOwotKwkgICAgewotKwkgICAgICBkaXJlY3RfcCA9IGZhbHNlOwotKwkgICAgICBpZiAob3V0cHV0X2luZGlyZWN0X3ApCi0rCQl4YXNtID0gInslcDBAR09UUENSRUwoJSVyaXApfFtRV09SRCBQVFIgJXAwQEdPVFBDUkVMW3JpcF1dfSI7Ci0rCSAgICAgIGVsc2UKLSsJCXhhc20gPSAiJSFqbXBcdHsqJXAwQEdPVFBDUkVMKCUlcmlwKXxbUVdPUkQgUFRSICVwMEBHT1RQQ1JFTFtyaXBdXX0iOwotKwkgICAgfQotIAkgIGVsc2UKLSAJICAgIHhhc20gPSAiJSFqbXBcdCVQMCI7Ci0gCX0KLUBAIC0yNzM5Miw5ICsyNzk2MywxNyBAQCBpeDg2X291dHB1dF9jYWxsX2luc24gKHJ0eF9pbnNuICppbnNuLCBydHggY2FsbF9vcCkKLSAgICAgICBlbHNlIGlmIChUQVJHRVRfU0VIKQotIAl4YXNtID0gIiUhcmV4Llcgam1wXHQlQTAiOwotICAgICAgIGVsc2UKLS0JeGFzbSA9ICIlIWptcFx0JUEwIjsKLSsJewotKwkgIGlmIChvdXRwdXRfaW5kaXJlY3RfcCkKLSsJICAgIHhhc20gPSAiJTAiOwotKwkgIGVsc2UKLSsJICAgIHhhc20gPSAiJSFqbXBcdCVBMCI7Ci0rCX0KLSAKLS0gICAgICBvdXRwdXRfYXNtX2luc24gKHhhc20sICZjYWxsX29wKTsKLSsgICAgICBpZiAob3V0cHV0X2luZGlyZWN0X3AgJiYgIWRpcmVjdF9wKQotKwlpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2ggKGNhbGxfb3AsIHhhc20sIHRydWUpOwotKyAgICAgIGVsc2UKLSsJb3V0cHV0X2FzbV9pbnNuICh4YXNtLCAmY2FsbF9vcCk7Ci0gICAgICAgcmV0dXJuICIiOwotICAgICB9Ci0gCi1AQCAtMjc0MzEsMTQgKzI4MDEwLDI4IEBAIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAocnR4X2luc24gKmluc24sIHJ0eCBjYWxsX29wKQotICAgaWYgKGRpcmVjdF9wKQotICAgICB7Ci0gICAgICAgaWYgKGl4ODZfbm9waWNfbm9wbHRfYXR0cmlidXRlX3AgKGNhbGxfb3ApKQotLQl4YXNtID0gIiUhY2FsbFx0eyolcDBAR09UUENSRUwoJSVyaXApfFtRV09SRCBQVFIgJXAwQEdPVFBDUkVMW3JpcF1dfSI7Ci0rCXsKLSsJICBkaXJlY3RfcCA9IGZhbHNlOwotKwkgIGlmIChvdXRwdXRfaW5kaXJlY3RfcCkKLSsJICAgIHhhc20gPSAieyVwMEBHT1RQQ1JFTCglJXJpcCl8W1FXT1JEIFBUUiAlcDBAR09UUENSRUxbcmlwXV19IjsKLSsJICBlbHNlCi0rCSAgICB4YXNtID0gIiUhY2FsbFx0eyolcDBAR09UUENSRUwoJSVyaXApfFtRV09SRCBQVFIgJXAwQEdPVFBDUkVMW3JpcF1dfSI7Ci0rCX0KLSAgICAgICBlbHNlCi0gCXhhc20gPSAiJSFjYWxsXHQlUDAiOwotICAgICB9Ci0gICBlbHNlCi0tICAgIHhhc20gPSAiJSFjYWxsXHQlQTAiOwotKyAgICB7Ci0rICAgICAgaWYgKG91dHB1dF9pbmRpcmVjdF9wKQotKwl4YXNtID0gIiUwIjsKLSsgICAgICBlbHNlCi0rCXhhc20gPSAiJSFjYWxsXHQlQTAiOwotKyAgICB9Ci0gCi0tICBvdXRwdXRfYXNtX2luc24gKHhhc20sICZjYWxsX29wKTsKLSsgIGlmIChvdXRwdXRfaW5kaXJlY3RfcCAmJiAhZGlyZWN0X3ApCi0rICAgIGl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaCAoY2FsbF9vcCwgeGFzbSwgZmFsc2UpOwotKyAgZWxzZQotKyAgICBvdXRwdXRfYXNtX2luc24gKHhhc20sICZjYWxsX29wKTsKLSAKLSAgIGlmIChzZWhfbm9wX3ApCi0gICAgIHJldHVybiAibm9wIjsKLUBAIC00NDgzNiw3ICs0NTQyOSw3IEBAIGl4ODZfaGFuZGxlX3N0cnVjdF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSwgaW50LAotIH0KLSAKLSBzdGF0aWMgdHJlZQotLWl4ODZfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSwgaW50LAotK2l4ODZfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSBhcmdzLCBpbnQsCi0gCQkJICAgICAgYm9vbCAqbm9fYWRkX2F0dHJzKQotIHsKLSAgIGlmIChUUkVFX0NPREUgKCpub2RlKSAhPSBGVU5DVElPTl9ERUNMKQotQEAgLTQ0ODQ1LDYgKzQ1NDM4LDI5IEBAIGl4ODZfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSwgaW50LAotICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwotICAgICB9Ci0rCi0rICBpZiAoaXNfYXR0cmlidXRlX3AgKCJpbmRpcmVjdF9icmFuY2giLCBuYW1lKSkKLSsgICAgewotKyAgICAgIHRyZWUgY3N0ID0gVFJFRV9WQUxVRSAoYXJncyk7Ci0rICAgICAgaWYgKFRSRUVfQ09ERSAoY3N0KSAhPSBTVFJJTkdfQ1NUKQotKwl7Ci0rCSAgd2FybmluZyAoT1BUX1dhdHRyaWJ1dGVzLAotKwkJICAgIiVxRSBhdHRyaWJ1dGUgcmVxdWlyZXMgYSBzdHJpbmcgY29uc3RhbnQgYXJndW1lbnQiLAotKwkJICAgbmFtZSk7Ci0rCSAgKm5vX2FkZF9hdHRycyA9IHRydWU7Ci0rCX0KLSsgICAgICBlbHNlIGlmIChzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJrZWVwIikgIT0gMAotKwkgICAgICAgJiYgc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChjc3QpLCAidGh1bmsiKSAhPSAwCi0rCSAgICAgICAmJiBzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuay1pbmxpbmUiKSAhPSAwCi0rCSAgICAgICAmJiBzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuay1leHRlcm4iKSAhPSAwKQotKwl7Ci0rCSAgd2FybmluZyAoT1BUX1dhdHRyaWJ1dGVzLAotKwkJICAgImFyZ3VtZW50IHRvICVxRSBhdHRyaWJ1dGUgaXMgbm90ICIKLSsJCSAgICIoa2VlcHx0aHVua3x0aHVuay1pbmxpbmV8dGh1bmstZXh0ZXJuKSIsIG5hbWUpOwotKwkgICpub19hZGRfYXR0cnMgPSB0cnVlOwotKwl9Ci0rICAgIH0KLSsKLSAgIHJldHVybiBOVUxMX1RSRUU7Ci0gfQotIAotQEAgLTQ5MDcyLDYgKzQ5Njg4LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYyBpeDg2X2F0dHJpYnV0ZV90YWJsZVtdID0KLSAgICAgZmFsc2UgfSwKLSAgIHsgImNhbGxlZV9wb3BfYWdncmVnYXRlX3JldHVybiIsIDEsIDEsIGZhbHNlLCB0cnVlLCB0cnVlLAotICAgICBpeDg2X2hhbmRsZV9jYWxsZWVfcG9wX2FnZ3JlZ2F0ZV9yZXR1cm4sIHRydWUgfSwKLSsgIHsgImluZGlyZWN0X2JyYW5jaCIsIDEsIDEsIHRydWUsIGZhbHNlLCBmYWxzZSwKLSsgICAgaXg4Nl9oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSwgZmFsc2UgfSwKLSsKLSAgIC8qIEVuZCBlbGVtZW50LiAgKi8KLSAgIHsgTlVMTCwgICAgICAgIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIE5VTEwsIGZhbHNlIH0KLSB9OwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmggYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5oCi1pbmRleCA1NDE0NDE2Li45ZGNjZGIwIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotQEAgLTI1NzIsNiArMjU3MiwxMyBAQCBzdHJ1Y3QgR1RZKCgpKSBtYWNoaW5lX2Z1bmN0aW9uIHsKLSAgIC8qIElmIHRydWUsIGl0IGlzIHNhZmUgdG8gbm90IHNhdmUvcmVzdG9yZSBEUkFQIHJlZ2lzdGVyLiAgKi8KLSAgIEJPT0xfQklURklFTEQgbm9fZHJhcF9zYXZlX3Jlc3RvcmUgOiAxOwotIAotKyAgLyogSG93IHRvIGdlbmVyYXRlIGluZGlyZWMgYnJhbmNoLiAgKi8KLSsgIEVOVU1fQklURklFTEQoaW5kaXJlY3RfYnJhbmNoKSBpbmRpcmVjdF9icmFuY2hfdHlwZSA6IDM7Ci0rCi0rICAvKiBJZiB0cnVlLCB0aGUgY3VycmVudCBmdW5jdGlvbiBoYXMgbG9jYWwgaW5kaXJlY3QganVtcHMsIGxpa2UKLSsgICAgICJpbmRpcmVjdF9qdW1wIiBvciAidGFibGVqdW1wIi4gICovCi0rICBCT09MX0JJVEZJRUxEIGhhc19sb2NhbF9pbmRpcmVjdF9qdW1wIDogMTsKLSsKLSAgIC8qIElmIHRydWUsIHRoZXJlIGlzIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgYXJndW1lbnQgcGFzc2luZy4gIFRoaXMKLSAgICAgIGlzIHVzZWQgb25seSBpbiBpeDg2X2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsIGJ5IDMyLWJpdCB0byBkZXRlcm1pbmUKLSAgICAgIGlmIHRoZXJlIGlzIHNjcmF0Y2ggcmVnaXN0ZXIgYXZhaWxhYmxlIGZvciBpbmRpcmVjdCBzaWJjYWxsLiAgSW4KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1pbmRleCBkMmJmZTMxLi4xNTNlMTYyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1AQCAtMTE4MDcsMTMgKzExODA3LDE4IEBACi0gewotICAgaWYgKFRBUkdFVF9YMzIpCi0gICAgIG9wZXJhbmRzWzBdID0gY29udmVydF9tZW1vcnlfYWRkcmVzcyAod29yZF9tb2RlLCBvcGVyYW5kc1swXSk7Ci0rICBjZnVuLT5tYWNoaW5lLT5oYXNfbG9jYWxfaW5kaXJlY3RfanVtcCA9IHRydWU7Ci0gfSkKLSAKLSAoZGVmaW5lX2luc24gIippbmRpcmVjdF9qdW1wIgotICAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZDpXIDAgImluZGlyZWN0X2JyYW5jaF9vcGVyYW5kIiAickJ3IikpXQotICAgIiIKLS0gICIlIWptcFx0JUEwIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImliciIpCi0rICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChvcGVyYW5kc1swXSwgZmFsc2UpOyIKLSsgIFsoc2V0IChhdHRyICJ0eXBlIikKLSsgICAgIChpZl90aGVuX2Vsc2UgKG1hdGNoX3Rlc3QgIihjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotKwkJCQkgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApIikKLSsJKGNvbnN0X3N0cmluZyAibXVsdGkiKQotKwkoY29uc3Rfc3RyaW5nICJpYnIiKSkpCi0gICAgKHNldF9hdHRyICJsZW5ndGhfaW1tZWRpYXRlIiAiMCIpCi0gICAgKHNldF9hdHRyICJtYXliZV9wcmVmaXhfYm5kIiAiMSIpXSkKLSAKLUBAIC0xMTg1NiwxNCArMTE4NjEsMTkgQEAKLSAKLSAgIGlmIChUQVJHRVRfWDMyKQotICAgICBvcGVyYW5kc1swXSA9IGNvbnZlcnRfbWVtb3J5X2FkZHJlc3MgKHdvcmRfbW9kZSwgb3BlcmFuZHNbMF0pOwotKyAgY2Z1bi0+bWFjaGluZS0+aGFzX2xvY2FsX2luZGlyZWN0X2p1bXAgPSB0cnVlOwotIH0pCi0gCi0gKGRlZmluZV9pbnNuICIqdGFibGVqdW1wXzEiCi0gICBbKHNldCAocGMpIChtYXRjaF9vcGVyYW5kOlcgMCAiaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQiICJyQnciKSkKLSAgICAodXNlIChsYWJlbF9yZWYgKG1hdGNoX29wZXJhbmQgMSkpKV0KLSAgICIiCi0tICAiJSFqbXBcdCVBMCIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJpYnIiKQotKyAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAob3BlcmFuZHNbMF0sIGZhbHNlKTsiCi0rICBbKHNldCAoYXR0ciAidHlwZSIpCi0rICAgICAoaWZfdGhlbl9lbHNlIChtYXRjaF90ZXN0ICIoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSsJCQkJICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwKSIpCi0rCShjb25zdF9zdHJpbmcgIm11bHRpIikKLSsJKGNvbnN0X3N0cmluZyAiaWJyIikpKQotICAgIChzZXRfYXR0ciAibGVuZ3RoX2ltbWVkaWF0ZSIgIjAiKQotICAgIChzZXRfYXR0ciAibWF5YmVfcHJlZml4X2JuZCIgIjEiKV0pCi0gDAotQEAgLTEyNTIwLDggKzEyNTMwLDEyIEBACi0gICBbKHNpbXBsZV9yZXR1cm4pCi0gICAgKHVzZSAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpKV0KLSAgICJyZWxvYWRfY29tcGxldGVkIgotLSAgIiUham1wXHQlQTAiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiaWJyIikKLSsgICIqIHJldHVybiBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKG9wZXJhbmRzWzBdLCB0cnVlKTsiCi0rICBbKHNldCAoYXR0ciAidHlwZSIpCi0rICAgICAoaWZfdGhlbl9lbHNlIChtYXRjaF90ZXN0ICIoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSsJCQkJICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwKSIpCi0rCShjb25zdF9zdHJpbmcgIm11bHRpIikKLSsJKGNvbnN0X3N0cmluZyAiaWJyIikpKQotICAgIChzZXRfYXR0ciAibGVuZ3RoX2ltbWVkaWF0ZSIgIjAiKQotICAgIChzZXRfYXR0ciAibWF5YmVfcHJlZml4X2JuZCIgIjEiKV0pCi0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0IGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0Ci1pbmRleCBmMzA0YjYyLi41ZmZhMzM0IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0Ci0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQKLUBAIC04OTcsMyArODk3LDIzIEBAIEVudW0oc3RhY2tfcHJvdGVjdG9yX2d1YXJkKSBTdHJpbmcoZ2xvYmFsKSBWYWx1ZShTU1BfR0xPQkFMKQotIG1taXRpZ2F0ZS1yb3AKLSBUYXJnZXQgVmFyKGZsYWdfbWl0aWdhdGVfcm9wKSBJbml0KDApCi0gQXR0ZW1wdCB0byBhdm9pZCBnZW5lcmF0aW5nIGluc3RydWN0aW9uIHNlcXVlbmNlcyBjb250YWluaW5nIHJldCBieXRlcy4KLSsKLSttaW5kaXJlY3QtYnJhbmNoPQotK1RhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkIEVudW0oaW5kaXJlY3RfYnJhbmNoKSBWYXIoaXg4Nl9pbmRpcmVjdF9icmFuY2gpIEluaXQoaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rQ29udmVydCBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGNhbGwgYW5kIHJldHVybiB0aHVua3MuCi0rCi0rRW51bQotK05hbWUoaW5kaXJlY3RfYnJhbmNoKSBUeXBlKGVudW0gaW5kaXJlY3RfYnJhbmNoKQotK0tub3duIGluZGlyZWN0IGJyYW5jaCBjaG9pY2VzIChmb3IgdXNlIHdpdGggdGhlIC1taW5kaXJlY3QtYnJhbmNoPSBvcHRpb24pOgotKwotK0VudW1WYWx1ZQotK0VudW0oaW5kaXJlY3RfYnJhbmNoKSBTdHJpbmcoa2VlcCkgVmFsdWUoaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rCi0rRW51bVZhbHVlCi0rRW51bShpbmRpcmVjdF9icmFuY2gpIFN0cmluZyh0aHVuaykgVmFsdWUoaW5kaXJlY3RfYnJhbmNoX3RodW5rKQotKwotK0VudW1WYWx1ZQotK0VudW0oaW5kaXJlY3RfYnJhbmNoKSBTdHJpbmcodGh1bmstaW5saW5lKSBWYWx1ZShpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lKQotKwotK0VudW1WYWx1ZQotK0VudW0oaW5kaXJlY3RfYnJhbmNoKSBTdHJpbmcodGh1bmstZXh0ZXJuKSBWYWx1ZShpbmRpcmVjdF9icmFuY2hfdGh1bmtfZXh0ZXJuKQotZGlmZiAtLWdpdCBhL2djYy9kb2MvZXh0ZW5kLnRleGkgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCi1pbmRleCA4Y2M0ZjdlLi44NjY4ZGFlIDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9leHRlbmQudGV4aQotKysrIGIvZ2NjL2RvYy9leHRlbmQudGV4aQotQEAgLTU0MTksNiArNTQxOSwxNiBAQCBTcGVjaWZ5IHdoaWNoIGZsb2F0aW5nLXBvaW50IHVuaXQgdG8gdXNlLiAgWW91IG11c3Qgc3BlY2lmeSB0aGUKLSBAY29kZXt0YXJnZXQoImZwbWF0aD1zc2UsMzg3Iil9IG9wdGlvbiBhcwotIEBjb2Rle3RhcmdldCgiZnBtYXRoPXNzZSszODciKX0gYmVjYXVzZSB0aGUgY29tbWEgd291bGQgc2VwYXJhdGUKLSBkaWZmZXJlbnQgb3B0aW9ucy4KLSsKLStAaXRlbSBpbmRpcmVjdF9icmFuY2goIkB2YXJ7Y2hvaWNlfSIpCi0rQGNpbmRleCBAY29kZXtpbmRpcmVjdF9icmFuY2h9IGZ1bmN0aW9uIGF0dHJpYnV0ZSwgeDg2Ci0rT24geDg2IHRhcmdldHMsIHRoZSBAY29kZXtpbmRpcmVjdF9icmFuY2h9IGF0dHJpYnV0ZSBjYXVzZXMgdGhlIGNvbXBpbGVyCi0rdG8gY29udmVydCBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHdpdGggQHZhcntjaG9pY2V9LiAgQHNhbXB7a2VlcH0KLStrZWVwcyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHVubW9kaWZpZWQuICBAc2FtcHt0aHVua30gY29udmVydHMgaW5kaXJlY3QKLStjYWxsIGFuZCBqdW1wIHRvIGNhbGwgYW5kIHJldHVybiB0aHVuay4gIEBzYW1we3RodW5rLWlubGluZX0gY29udmVydHMKLStpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGlubGluZWQgY2FsbCBhbmQgcmV0dXJuIHRodW5rLgotK0BzYW1we3RodW5rLWV4dGVybn0gY29udmVydHMgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB0byBleHRlcm5hbCBjYWxsCi0rYW5kIHJldHVybiB0aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBmaWxlLgotIEBlbmQgdGFibGUKLSAKLSBPbiB0aGUgeDg2LCB0aGUgaW5saW5lciBkb2VzIG5vdCBpbmxpbmUgYQotZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1pbmRleCBiMDY2ZjdiLi5mZjlhMTk0IDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQotKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotQEAgLTExNjksNyArMTE2OSw3IEBAIFNlZSBSUy82MDAwIGFuZCBQb3dlclBDIE9wdGlvbnMuCi0gLW1zc2UyYXZ4IC1tZmVudHJ5IC1tcmVjb3JkLW1jb3VudCAtbW5vcC1tY291bnQgLW04Yml0LWlkaXYgQGdvbAotIC1tYXZ4MjU2LXNwbGl0LXVuYWxpZ25lZC1sb2FkIC1tYXZ4MjU2LXNwbGl0LXVuYWxpZ25lZC1zdG9yZSBAZ29sCi0gLW1hbGlnbi1kYXRhPUB2YXJ7dHlwZX0gLW1zdGFjay1wcm90ZWN0b3ItZ3VhcmQ9QHZhcntndWFyZH0gQGdvbAotLS1tbWl0aWdhdGUtcm9wfQotKy1tbWl0aWdhdGUtcm9wIC1taW5kaXJlY3QtYnJhbmNoPUB2YXJ7Y2hvaWNlfX0KLSAKLSBAZW1waHt4ODYgV2luZG93cyBPcHRpb25zfQotIEBnY2NvcHRsaXN0ey1tY29uc29sZSAtbWN5Z3dpbiAtbW5vLWN5Z3dpbiAtbWRsbCBAZ29sCi1AQCAtMjQyMTgsNiArMjQyMTgsMTcgQEAgb3Bjb2RlcywgdG8gbWl0aWdhdGUgYWdhaW5zdCBjZXJ0YWluIGZvcm1zIG9mIGF0dGFjay4gQXQgdGhlIG1vbWVudCwKLSB0aGlzIG9wdGlvbiBpcyBsaW1pdGVkIGluIHdoYXQgaXQgY2FuIGRvIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZAotIG9uIHRvIHByb3ZpZGUgc2VyaW91cyBwcm90ZWN0aW9uLgotIAotK0BpdGVtIC1taW5kaXJlY3QtYnJhbmNoPUB2YXJ7Y2hvaWNlfQotK0BvcGluZGV4IC1taW5kaXJlY3QtYnJhbmNoCi0rQ29udmVydCBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHdpdGggQHZhcntjaG9pY2V9LiAgVGhlIGRlZmF1bHQgaXMKLStAc2FtcHtrZWVwfSwgd2hpY2gga2VlcHMgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB1bm1vZGlmaWVkLgotK0BzYW1we3RodW5rfSBjb252ZXJ0cyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGNhbGwgYW5kIHJldHVybiB0aHVuay4KLStAc2FtcHt0aHVuay1pbmxpbmV9IGNvbnZlcnRzIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gaW5saW5lZCBjYWxsCi0rYW5kIHJldHVybiB0aHVuay4gIEBzYW1we3RodW5rLWV4dGVybn0gY29udmVydHMgaW5kaXJlY3QgY2FsbCBhbmQganVtcAotK3RvIGV4dGVybmFsIGNhbGwgYW5kIHJldHVybiB0aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBmaWxlLgotK1lvdSBjYW4gY29udHJvbCB0aGlzIGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5IHVzaW5nIHRoZQotK2Z1bmN0aW9uIGF0dHJpYnV0ZSBAY29kZXtpbmRpcmVjdF9icmFuY2h9LiAgQHhyZWZ7RnVuY3Rpb24gQXR0cmlidXRlc30uCi0rCi0gQGVuZCB0YWJsZQotIAotIFRoZXNlIEBzYW1wey1tfSBzd2l0Y2hlcyBhcmUgc3VwcG9ydGVkIGluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ5ODNlMWMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotQEAgLTAsMCArMSwyMCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaDsKLSsKLSt2b2lkCi0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaChvZmZzZXQpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41OGYwOWI0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2hbMjU2XTsKLSsKLSt2b2lkCi0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmYyMGQzNWMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotQEAgLTAsMCArMSwyMSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaDsKLSsKLStpbnQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjBlZmY4ZmIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotQEAgLTAsMCArMSwyMSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK2ludAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hMjViMjBkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLUBAIC0wLDAgKzEsMTcgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotKwotK2V4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uY2ZmMTE0YQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi1AQCAtMCwwICsxLDE4IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsiIH0gKi8KLSsKLStleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYWZkYjYwMAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi1AQCAtMCwwICsxLDQ0IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKwotK3ZvaWQgZnVuYzAgKHZvaWQpOwotK3ZvaWQgZnVuYzEgKHZvaWQpOwotK3ZvaWQgZnVuYzIgKHZvaWQpOwotK3ZvaWQgZnVuYzMgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzUgKHZvaWQpOwotKwotK3ZvaWQKLStiYXIgKGludCBpKQotK3sKLSsgIHN3aXRjaCAoaSkKLSsgICAgewotKyAgICBkZWZhdWx0OgotKyAgICAgIGZ1bmMwICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDE6Ci0rICAgICAgZnVuYzEgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMjoKLSsgICAgICBmdW5jMiAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAzOgotKyAgICAgIGZ1bmMzICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDQ6Ci0rICAgICAgZnVuYzQgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgNToKLSsgICAgICBmdW5jNSAoKTsKLSsgICAgICBicmVhazsKLSsgICAgfQotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDY0ZDk3OAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLUBAIC0wLDAgKzEsMjMgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2g7Ci0rCi0rZXh0ZXJuIHZvaWQgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nKQotKyAgX19hdHRyaWJ1dGVfXyAoKGluZGlyZWN0X2JyYW5jaCgidGh1bmsiKSkpOwotKwotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45MzA2NzQ1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotQEAgLTAsMCArMSwyMSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK19fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goInRodW5rIikpKQotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjk3NzQ0ZDYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jCi1AQCAtMCwwICsxLDIzIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoOwotK2V4dGVybiBpbnQgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nKQotKyAgX19hdHRyaWJ1dGVfXyAoKGluZGlyZWN0X2JyYW5jaCgidGh1bmstaW5saW5lIikpKTsKLSsKLStpbnQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmZjZTNlYQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2hbMjU2XTsKLSsKLStfX2F0dHJpYnV0ZV9fICgoaW5kaXJlY3RfYnJhbmNoKCJ0aHVuay1pbmxpbmUiKSkpCi0raW50Ci0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMDgzMzYwNgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2g7Ci0rZXh0ZXJuIGludCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcpCi0rICBfX2F0dHJpYnV0ZV9fICgoaW5kaXJlY3RfYnJhbmNoKCJ0aHVuay1leHRlcm4iKSkpOwotKwotK2ludAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMmViYTBmYgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLUBAIC0wLDAgKzEsMjEgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2hbMjU2XTsKLSsKLStfX2F0dHJpYnV0ZV9fICgoaW5kaXJlY3RfYnJhbmNoKCJ0aHVuay1leHRlcm4iKSkpCi0raW50Ci0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmY1ODQyN2UKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1AQCAtMCwwICsxLDQ0IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXBpYyIgfSAqLwotKwotK3ZvaWQgZnVuYzAgKHZvaWQpOwotK3ZvaWQgZnVuYzEgKHZvaWQpOwotK3ZvaWQgZnVuYzIgKHZvaWQpOwotK3ZvaWQgZnVuYzMgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzUgKHZvaWQpOwotKwotK19fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goInRodW5rLWV4dGVybiIpKSkKLSt2b2lkCi0rYmFyIChpbnQgaSkKLSt7Ci0rICBzd2l0Y2ggKGkpCi0rICAgIHsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBmdW5jMCAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAxOgotKyAgICAgIGZ1bmMxICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDI6Ci0rICAgICAgZnVuYzIgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMzoKLSsgICAgICBmdW5jMyAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSA0OgotKyAgICAgIGZ1bmM0ICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDU6Ci0rICAgICAgZnVuYzUgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjU2NGVkMzkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOC5jCi1AQCAtMCwwICsxLDQyIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKwotK3ZvaWQgZnVuYzAgKHZvaWQpOwotK3ZvaWQgZnVuYzEgKHZvaWQpOwotK3ZvaWQgZnVuYzIgKHZvaWQpOwotK3ZvaWQgZnVuYzMgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzUgKHZvaWQpOwotKwotK19fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goImtlZXAiKSkpCi0rdm9pZAotK2JhciAoaW50IGkpCi0rewotKyAgc3dpdGNoIChpKQotKyAgICB7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgZnVuYzAgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMToKLSsgICAgICBmdW5jMSAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAyOgotKyAgICAgIGZ1bmMyICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDM6Ci0rICAgICAgZnVuYzMgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgNDoKLSsgICAgICBmdW5jNCAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSA1OgotKyAgICAgIGZ1bmM1ICgpOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjUwZmJlZTIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZuby1waWMiIH0gKi8KLSsKLSt2b2lkICgqZGlzcGF0Y2gpIChjaGFyICopOwotK2NoYXIgYnVmWzEwXTsKLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSsgIGRpc3BhdGNoIChidWYpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIHJldCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI5NzZlNjcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMKLUBAIC0wLDAgKzEsMjEgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZuby1waWMiIH0gKi8KLSsKLSt2b2lkICgqZGlzcGF0Y2gpIChjaGFyICopOwotK2NoYXIgYnVmWzEwXTsKLSsKLStpbnQKLStmb28gKHZvaWQpCi0rewotKyAgZGlzcGF0Y2ggKGJ1Zik7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgcmV0IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGE0YmM5OAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotQEAgLTAsMCArMSwxOSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICotKi1saW51eCogJiYgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZnBpYyAtZm5vLXBsdCIgfSAqLwotKwotK3ZvaWQgYmFyIChjaGFyICopOwotK2NoYXIgYnVmWzEwXTsKLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoYnVmKTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgcmV0IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYzY0ZDEyZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotQEAgLTAsMCArMSwyMCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICotKi1saW51eCogJiYgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZnBpYyAtZm5vLXBsdCIgfSAqLwotKwotK3ZvaWQgYmFyIChjaGFyICopOwotK2NoYXIgYnVmWzEwXTsKLSsKLStpbnQKLStmb28gKHZvaWQpCi0rewotKyAgYmFyIChidWYpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImJuZCBjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgcmV0IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDlmMjdiNAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYwotQEAgLTAsMCArMSwxOSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2g7Ci0rCi0rdm9pZAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hMWUzZWI2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jCi1AQCAtMCwwICsxLDE5IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zOTU2MzRlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jCi1AQCAtMCwwICsxLDIwIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaDsKLSsKLStpbnQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mZDNmNjMzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi1AQCAtMCwwICsxLDIwIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK2ludAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmEyZjkyYgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYwotQEAgLTAsMCArMSwxNiBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiIgfSAqLwotKwotK2V4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wYzVhMmQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jCi1AQCAtMCwwICsxLDE3IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSsKLStpbnQKLStmb28gKHZvaWQpCi0rewotKyAgYmFyICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY2NTI1MjMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMKLUBAIC0wLDAgKzEsNDMgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotKwotK3ZvaWQgZnVuYzAgKHZvaWQpOwotK3ZvaWQgZnVuYzEgKHZvaWQpOwotK3ZvaWQgZnVuYzIgKHZvaWQpOwotK3ZvaWQgZnVuYzMgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzUgKHZvaWQpOwotKwotK3ZvaWQKLStiYXIgKGludCBpKQotK3sKLSsgIHN3aXRjaCAoaSkKLSsgICAgewotKyAgICBkZWZhdWx0OgotKyAgICAgIGZ1bmMwICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDE6Ci0rICAgICAgZnVuYzEgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMjoKLSsgICAgICBmdW5jMiAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAzOgotKyAgICAgIGZ1bmMzICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDQ6Ci0rICAgICAgZnVuYzQgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgNToKLSsgICAgICBmdW5jNSAoKTsKLSsgICAgICBicmVhazsKLSsgICAgfQotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY4YzBmZjcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoOwotKwotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmUyZGExZmMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoWzI1Nl07Ci0rCi0rdm9pZAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yNDRmZWM3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi1AQCAtMCwwICsxLDIxIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaDsKLSsKLStpbnQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xMDdlYmUzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jCi1AQCAtMCwwICsxLDIxIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK2ludAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMTdiMDRlZgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYwotQEAgLTAsMCArMSwxNyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSIgfSAqLwotKwotK2V4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ5ZWIxMTIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMKLUBAIC0wLDAgKzEsMTggQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUiIH0gKi8KLSsKLStleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kMDJiMWRjCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jCi1AQCAtMCwwICsxLDQ0IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsKLSt2b2lkIGZ1bmMwICh2b2lkKTsKLSt2b2lkIGZ1bmMxICh2b2lkKTsKLSt2b2lkIGZ1bmMyICh2b2lkKTsKLSt2b2lkIGZ1bmMzICh2b2lkKTsKLSt2b2lkIGZ1bmM0ICh2b2lkKTsKLSt2b2lkIGZ1bmM0ICh2b2lkKTsKLSt2b2lkIGZ1bmM1ICh2b2lkKTsKLSsKLSt2b2lkCi0rYmFyIChpbnQgaSkKLSt7Ci0rICBzd2l0Y2ggKGkpCi0rICAgIHsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBmdW5jMCAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAxOgotKyAgICAgIGZ1bmMxICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDI6Ci0rICAgICAgZnVuYzIgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMzoKLSsgICAgICBmdW5jMyAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSA0OgotKyAgICAgIGZ1bmM0ICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDU6Ci0rICAgICAgZnVuYzUgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDUteDg2LUFkZC1tZnVuY3Rpb24tcmV0dXJuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA1LXg4Ni1BZGQtbWZ1bmN0aW9uLXJldHVybi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM1NGM3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDUteDg2LUFkZC1tZnVuY3Rpb24tcmV0dXJuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU3MCArMCwwIEBACi1Gcm9tIGUzMjcwODE0YjllMGNhYWQ2M2ZiY2RmZDdhZTlkYTJkNTJjOTc0OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDYgSmFuIDIwMTggMjI6Mjk6NTYgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8xMl0geDg2OiBBZGQgLW1mdW5jdGlvbi1yZXR1cm49Ci0KLUFkZCAtbWZ1bmN0aW9uLXJldHVybj0gb3B0aW9uIHRvIGNvbnZlcnQgZnVuY3Rpb24gcmV0dXJuIHRvIGNhbGwgYW5kCi1yZXR1cm4gdGh1bmtzLiAgVGhlIGRlZmF1bHQgaXMgJ2tlZXAnLCB3aGljaCBrZWVwcyBmdW5jdGlvbiByZXR1cm4KLXVubW9kaWZpZWQuICAndGh1bmsnIGNvbnZlcnRzIGZ1bmN0aW9uIHJldHVybiB0byBjYWxsIGFuZCByZXR1cm4gdGh1bmsuCi0ndGh1bmstaW5saW5lJyBjb252ZXJ0cyBmdW5jdGlvbiByZXR1cm4gdG8gaW5saW5lZCBjYWxsIGFuZCByZXR1cm4gdGh1bmsuCi0ndGh1bmstZXh0ZXJuJyBjb252ZXJ0cyBmdW5jdGlvbiByZXR1cm4gdG8gZXh0ZXJuYWwgY2FsbCBhbmQgcmV0dXJuCi10aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBmaWxlLiAgWW91IGNhbiBjb250cm9sIHRoaXMgYmVoYXZpb3IKLWZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5IHVzaW5nIHRoZSBmdW5jdGlvbiBhdHRyaWJ1dGUgZnVuY3Rpb25fcmV0dXJuLgotCi1GdW5jdGlvbiByZXR1cm4gdGh1bmsgaXMgdGhlIHNhbWUgYXMgbWVtb3J5IHRodW5rIGZvciAtbWluZGlyZWN0LWJyYW5jaD0KLXdoZXJlIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjazoKLQotX194ODZfcmV0dXJuX3RodW5rOgotCWNhbGwgTDIKLUwxOgotCXBhdXNlCi0JbGZlbmNlCi0Jam1wIEwxCi1MMjoKLQlsZWEgOCglcnNwKSwgJXJzcHxsZWEgNCglZXNwKSwgJWVzcAotCXJldAotCi1hbmQgZnVuY3Rpb24gcmV0dXJuIGJlY29tZXMKLQotCWptcCBfX3g4Nl9yZXR1cm5fdGh1bmsKLQotLW1pbmRpcmVjdC1icmFuY2g9IHRlc3RzIGFyZSB1cGRhdGVkIHdpdGggLW1mdW5jdGlvbi1yZXR1cm49a2VlcCB0bwotYXZvaWQgZmFsc2UgdGVzdCBmYWlsdXJlcyB3aGVuIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIGlzIGFkZGVkIHRvCi1SVU5URVNURkxBR1MgZm9yICJtYWtlIGNoZWNrIi4KLQotZ2NjLwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9vdXRwdXRfZnVuY3Rpb25fcmV0dXJuKTogTmV3LgotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3NldF9pbmRpcmVjdF9icmFuY2hfdHlwZSk6IEFsc28KLQlzZXQgZnVuY3Rpb25fcmV0dXJuX3R5cGUuCi0JKGluZGlyZWN0X3RodW5rX25hbWUpOiBBZGQgcmV0X3AgdG8gaW5kaWNhdGUgdGh1bmsgZm9yIGZ1bmN0aW9uCi0JcmV0dXJuLgotCShvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24pOiBQYXNzIGZhbHNlIHRvCi0JaW5kaXJlY3RfdGh1bmtfbmFtZS4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9yZWcpOiBMaWtld2lzZS4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9wdXNoKTogTGlrZXdpc2UuCi0JKG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbik6IENyZWF0ZSBhbGlhcyBmb3IgZnVuY3Rpb24KLQlyZXR1cm4gdGh1bmsgaWYgcmVnbm8gPCAwLgotCShpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4pOiBOZXcgZnVuY3Rpb24uCi0JKGl4ODZfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUpOiBIYW5kbGUgZnVuY3Rpb25fcmV0dXJuLgotCShpeDg2X2F0dHJpYnV0ZV90YWJsZSk6IEFkZCBmdW5jdGlvbl9yZXR1cm4uCi0JKiBjb25maWcvaTM4Ni9pMzg2LmggKG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQKLQlmdW5jdGlvbl9yZXR1cm5fdHlwZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHNpbXBsZV9yZXR1cm5faW50ZXJuYWwpOiBVc2UKLQlpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4uCi0JKHNpbXBsZV9yZXR1cm5faW50ZXJuYWxfbG9uZyk6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvaTM4Ni5vcHQgKG1mdW5jdGlvbi1yZXR1cm49KTogTmV3IG9wdGlvbi4KLQkoaW5kaXJlY3RfYnJhbmNoKTogTWVudGlvbiAtbWZ1bmN0aW9uLXJldHVybj0uCi0JKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IGZ1bmN0aW9uX3JldHVybiBmdW5jdGlvbiBhdHRyaWJ1dGUuCi0JKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IC1tZnVuY3Rpb24tcmV0dXJuPSBvcHRpb24uCi0KLWdjYy90ZXN0c3VpdGUvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jIChkZy1vcHRpb25zKTogQWRkCi0JLW1mdW5jdGlvbi1yZXR1cm49a2VlcC4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xLmM6IE5ldyB0ZXN0LgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jOiBMaWtld2lzZS4KLQotaTM4NjogRG9uJ3QgdXNlIEFTTV9PVVRQVVRfREVGIGZvciBUQVJHRVRfTUFDSE8KLQotQVNNX09VVFBVVF9ERUYgaXNuJ3QgZGVmaW5lZCBmb3IgVEFSR0VUX01BQ0hPLiAgVXNlIEFTTV9PVVRQVVRfTEFCRUwgdG8KLWdlbmVyYXRlIHRoZSBfX3g4Nl9yZXR1cm5fdGh1bmsgbGFiZWwsIGluc3RlYWQgb2YgdGhlIHNldCBkaXJlY3RpdmUuCi1VcGRhdGUgdGVzdGNhc2UgdG8gcmVtb3ZlIHRoZSBfX3g4Nl9yZXR1cm5fdGh1bmsgbGFiZWwgY2hlY2suICBTaW5jZQotLWZuby1waWMgaXMgaWdub3JlZCBvbiBEYXJ3aW4sIHVwZGF0ZSB0ZXN0Y2FzZXMgdG8gc3NjYW4gb3IgInB1c2giCi1vbmx5IG9uIExpbnV4LgotCi1nY2MvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JUFIgdGFyZ2V0LzgzODM5Ci0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbik6IFVzZQotCUFTTV9PVVRQVVRfTEFCRUwsIGluc3RlYWQgb2YgQVNNX09VVFBVVF9ERUYsIGZvciBUQVJHRVRfTUFDSE8KLQlmb3IgIF9feDg2LnJldHVybl90aHVuay4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQlQUiB0YXJnZXQvODM4MzkKLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmM6IFNjYW4gZm9yICJwdXNoIiBvbmx5IG9uCi0JTGludXguCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmM6IERvbid0IGNoZWNrIHRoZQotCV9feDg2X3JldHVybl90aHVuayBsYWJlbC4KLQlTY2FuIGZvciAicHVzaCIgb25seSBmb3IgTGludXguCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNTIgKysrKysrKysrKysrKysrKysrKy0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwotIGdjYy9jb25maWcvaTM4Ni9pMzg2Lm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICstCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KLSBnY2MvZG9jL2V4dGVuZC50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArKwotIGdjYy9kb2MvaW52b2tlLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jICAgfCAgIDQgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMgICB8ICAgNCArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYyAgIHwgICA0ICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jICAgfCAgIDQgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMgICB8ICAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYyAgIHwgICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jICAgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMgICAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYyAgICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jICAgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMgICAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYyAgICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jICAgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmMgICAgICAgIHwgICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jICAgICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMgICAgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYyAgICAgICAgIHwgICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jICAgICAgICAgfCAgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYyAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYyAgICAgIHwgICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jICAgICAgfCAgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYyAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYyAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jICAgICAgfCAgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMgICAgICB8ICAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYyAgICAgIHwgICA0ICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEuYyAgICAgICAgfCAgMTMgKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYyAgICAgICB8ICAyMyArKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMgICAgICAgfCAgMjMgKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jICAgICAgIHwgIDIyICsrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jICAgICAgIHwgIDIyICsrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jICAgICAgIHwgIDIyICsrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jICAgICAgIHwgIDIyICsrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNi5jICAgICAgIHwgIDE4ICsrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yLmMgICAgICAgIHwgIDEzICsrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTMuYyAgICAgICAgfCAgMTIgKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNC5jICAgICAgICB8ICAxMiArKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay01LmMgICAgICAgIHwgIDE1ICsrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTYuYyAgICAgICAgfCAgMTQgKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNy5jICAgICAgICB8ICAxMyArKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay04LmMgICAgICAgIHwgIDE0ICsrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYyAgICAgICAgfCAgMjQgKysrKwotIDU2IGZpbGVzIGNoYW5nZWQsIDUxNiBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0zLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay02LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTcuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgKLWluZGV4IGVjYTRjYmYuLjYyMGQ3MGUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgKLUBAIC0zMTIsNiArMzEyLDcgQEAgZXh0ZXJuIGVudW0gYXR0cl9jcHUgaXg4Nl9zY2hlZHVsZTsKLSAKLSBleHRlcm4gY29uc3QgY2hhciAqIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAocnR4X2luc24gKmluc24sIHJ0eCBjYWxsX29wKTsKLSBleHRlcm4gY29uc3QgY2hhciAqIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAocnR4IGNhbGxfb3AsIGJvb2wgcmV0X3ApOwotK2V4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfZnVuY3Rpb25fcmV0dXJuIChib29sIGxvbmdfcCk7Ci0gZXh0ZXJuIGJvb2wgaXg4Nl9vcGVyYW5kc19va19mb3JfbW92ZV9tdWx0aXBsZSAocnR4ICpvcGVyYW5kcywgYm9vbCBsb2FkLAotIAkJCQkJCWVudW0gbWFjaGluZV9tb2RlIG1vZGUpOwotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1pbmRleCAwYjlmYzRkLi4zNGUyNmEzIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotQEAgLTYzOTAsNiArNjM5MCwzMSBAQCBpeDg2X3NldF9pbmRpcmVjdF9icmFuY2hfdHlwZSAodHJlZSBmbmRlY2wpCi0gICAgICAgZWxzZQotIAljZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9IGl4ODZfaW5kaXJlY3RfYnJhbmNoOwotICAgICB9Ci0rCi0rICBpZiAoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUgPT0gaW5kaXJlY3RfYnJhbmNoX3Vuc2V0KQotKyAgICB7Ci0rICAgICAgdHJlZSBhdHRyID0gbG9va3VwX2F0dHJpYnV0ZSAoImZ1bmN0aW9uX3JldHVybiIsCi0rCQkJCSAgICBERUNMX0FUVFJJQlVURVMgKGZuZGVjbCkpOwotKyAgICAgIGlmIChhdHRyICE9IE5VTEwpCi0rCXsKLSsJICB0cmVlIGFyZ3MgPSBUUkVFX1ZBTFVFIChhdHRyKTsKLSsJICBpZiAoYXJncyA9PSBOVUxMKQotKwkgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotKwkgIHRyZWUgY3N0ID0gVFJFRV9WQUxVRSAoYXJncyk7Ci0rCSAgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgImtlZXAiKSA9PSAwKQotKwkgICAgY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUgPSBpbmRpcmVjdF9icmFuY2hfa2VlcDsKLSsJICBlbHNlIGlmIChzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuayIpID09IDApCi0rCSAgICBjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZSA9IGluZGlyZWN0X2JyYW5jaF90aHVuazsKLSsJICBlbHNlIGlmIChzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuay1pbmxpbmUiKSA9PSAwKQotKwkgICAgY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUgPSBpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lOwotKwkgIGVsc2UgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rLWV4dGVybiIpID09IDApCi0rCSAgICBjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZSA9IGluZGlyZWN0X2JyYW5jaF90aHVua19leHRlcm47Ci0rCSAgZWxzZQotKwkgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotKwl9Ci0rICAgICAgZWxzZQotKwljZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZSA9IGl4ODZfZnVuY3Rpb25fcmV0dXJuOwotKyAgICB9Ci0gfQotIAotIC8qIEVzdGFibGlzaCBhcHByb3ByaWF0ZSBiYWNrLWVuZCBjb250ZXh0IGZvciBwcm9jZXNzaW5nIHRoZSBmdW5jdGlvbgotQEAgLTExMDM2LDggKzExMDYxLDEyIEBAIHN0YXRpYyBpbnQgaW5kaXJlY3RfdGh1bmtzX2JuZF91c2VkOwotIC8qIEZpbGxzIGluIHRoZSBsYWJlbCBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBpbmRpcmVjdCB0aHVuay4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1pbmRpcmVjdF90aHVua19uYW1lIChjaGFyIG5hbWVbMzJdLCBpbnQgcmVnbm8sIGJvb2wgbmVlZF9ibmRfcCkKLStpbmRpcmVjdF90aHVua19uYW1lIChjaGFyIG5hbWVbMzJdLCBpbnQgcmVnbm8sIGJvb2wgbmVlZF9ibmRfcCwKLSsJCSAgICAgYm9vbCByZXRfcCkKLSB7Ci0rICBpZiAocmVnbm8gPj0gMCAmJiByZXRfcCkKLSsgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotKwotICAgaWYgKFVTRV9ISURERU5fTElOS09OQ0UpCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFyICpibmQgPSBuZWVkX2JuZF9wID8gIl9ibmQiIDogIiI7Ci1AQCAtMTEwNTIsNyArMTEwODEsMTAgQEAgaW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgaW50IHJlZ25vLCBib29sIG5lZWRfYm5kX3ApCi0gCQkgICBibmQsIHJlZ19wcmVmaXgsIHJlZ19uYW1lc1tyZWdub10pOwotIAl9Ci0gICAgICAgZWxzZQotLQlzcHJpbnRmIChuYW1lLCAiX194ODZfaW5kaXJlY3RfdGh1bmslcyIsIGJuZCk7Ci0rCXsKLSsJICBjb25zdCBjaGFyICpyZXQgPSByZXRfcCA/ICJyZXR1cm4iIDogImluZGlyZWN0IjsKLSsJICBzcHJpbnRmIChuYW1lLCAiX194ODZfJXNfdGh1bmslcyIsIHJldCwgYm5kKTsKLSsJfQotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLUBAIC0xMTA2NSwxMCArMTEwOTcsMjAgQEAgaW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgaW50IHJlZ25vLCBib29sIG5lZWRfYm5kX3ApCi0gCX0KLSAgICAgICBlbHNlCi0gCXsKLS0JICBpZiAobmVlZF9ibmRfcCkKLS0JICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobmFtZSwgIkxJVEIiLCAwKTsKLSsJICBpZiAocmV0X3ApCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuZWVkX2JuZF9wKQotKwkJQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChuYW1lLCAiTFJUQiIsIDApOwotKwkgICAgICBlbHNlCi0rCQlBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKG5hbWUsICJMUlQiLCAwKTsKLSsJICAgIH0KLSAJICBlbHNlCi0tCSAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKG5hbWUsICJMSVQiLCAwKTsKLSsJICAgIHsKLSsJICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCQlBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKG5hbWUsICJMSVRCIiwgMCk7Ci0rCSAgICAgIGVsc2UKLSsJCUFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobmFtZSwgIkxJVCIsIDApOwotKwkgICAgfQotIAl9Ci0gICAgIH0KLSB9Ci1AQCAtMTExNjMsNyArMTEyMDUsNyBAQCBvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKGJvb2wgbmVlZF9ibmRfcCwgaW50IHJlZ25vKQotICAgdHJlZSBkZWNsOwotIAotICAgLyogQ3JlYXRlIF9feDg2X2luZGlyZWN0X3RodW5rL19feDg2X2luZGlyZWN0X3RodW5rX2JuZC4gICovCi0tICBpbmRpcmVjdF90aHVua19uYW1lIChuYW1lLCByZWdubywgbmVlZF9ibmRfcCk7Ci0rICBpbmRpcmVjdF90aHVua19uYW1lIChuYW1lLCByZWdubywgbmVlZF9ibmRfcCwgZmFsc2UpOwotICAgZGVjbCA9IGJ1aWxkX2RlY2wgKEJVSUxUSU5TX0xPQ0FUSU9OLCBGVU5DVElPTl9ERUNMLAotIAkJICAgICBnZXRfaWRlbnRpZmllciAobmFtZSksCi0gCQkgICAgIGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAodm9pZF90eXBlX25vZGUsIE5VTExfVFJFRSkpOwotQEAgLTExMjA2LDYgKzExMjQ4LDM2IEBAIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAoYm9vbCBuZWVkX2JuZF9wLCBpbnQgcmVnbm8pCi0gCUFTTV9PVVRQVVRfTEFCRUwgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0gICAgICAgfQotIAotKyAgaWYgKHJlZ25vIDwgMCkKLSsgICAgewotKyAgICAgIC8qIENyZWF0ZSBhbGlhcyBmb3IgX194ODYucmV0dXJuX3RodW5rL19feDg2LnJldHVybl90aHVua19ibmQuICAqLwotKyAgICAgIGNoYXIgYWxpYXNbMzJdOwotKwotKyAgICAgIGluZGlyZWN0X3RodW5rX25hbWUgKGFsaWFzLCByZWdubywgbmVlZF9ibmRfcCwgdHJ1ZSk7Ci0rI2lmIFRBUkdFVF9NQUNITwotKyAgICAgIGlmIChUQVJHRVRfTUFDSE8pCi0rCXsKLSsJICBmcHV0cyAoIlx0LndlYWtfZGVmaW5pdGlvblx0IiwgYXNtX291dF9maWxlKTsKLSsJICBhc3NlbWJsZV9uYW1lIChhc21fb3V0X2ZpbGUsIGFsaWFzKTsKLSsJICBmcHV0cyAoIlxuXHQucHJpdmF0ZV9leHRlcm5cdCIsIGFzbV9vdXRfZmlsZSk7Ci0rCSAgYXNzZW1ibGVfbmFtZSAoYXNtX291dF9maWxlLCBhbGlhcyk7Ci0rCSAgcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsJICBBU01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIGFsaWFzKTsKLSsJfQotKyNlbHNlCi0rICAgICAgQVNNX09VVFBVVF9ERUYgKGFzbV9vdXRfZmlsZSwgYWxpYXMsIG5hbWUpOwotKyAgICAgIGlmIChVU0VfSElEREVOX0xJTktPTkNFKQotKwl7Ci0rCSAgZnB1dHMgKCJcdC5nbG9ibFx0IiwgYXNtX291dF9maWxlKTsKLSsJICBhc3NlbWJsZV9uYW1lIChhc21fb3V0X2ZpbGUsIGFsaWFzKTsKLSsJICBwdXRjICgnXG4nLCBhc21fb3V0X2ZpbGUpOwotKwkgIGZwdXRzICgiXHQuaGlkZGVuXHQiLCBhc21fb3V0X2ZpbGUpOwotKwkgIGFzc2VtYmxlX25hbWUgKGFzbV9vdXRfZmlsZSwgYWxpYXMpOwotKwkgIHB1dGMgKCdcbicsIGFzbV9vdXRfZmlsZSk7Ci0rCX0KLSsjZW5kaWYKLSsgICAgfQotKwotICAgREVDTF9JTklUSUFMIChkZWNsKSA9IG1ha2Vfbm9kZSAoQkxPQ0spOwotICAgY3VycmVudF9mdW5jdGlvbl9kZWNsID0gZGVjbDsKLSAgIGFsbG9jYXRlX3N0cnVjdF9mdW5jdGlvbiAoZGVjbCwgZmFsc2UpOwotQEAgLTI3Njg3LDcgKzI3NzU5LDcgQEAgaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9yZWcgKHJ0eCBjYWxsX29wLCBib29sIHNpYmNhbGxfcCkKLSAJICBlbHNlCi0gCSAgICBpbmRpcmVjdF90aHVua3NfdXNlZCB8PSAxIDw8IGk7Ci0gCX0KLS0gICAgICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lX2J1ZiwgcmVnbm8sIG5lZWRfYm5kX3ApOwotKyAgICAgIGluZGlyZWN0X3RodW5rX25hbWUgKHRodW5rX25hbWVfYnVmLCByZWdubywgbmVlZF9ibmRfcCwgZmFsc2UpOwotICAgICAgIHRodW5rX25hbWUgPSB0aHVua19uYW1lX2J1ZjsKLSAgICAgfQotICAgZWxzZQotQEAgLTI3Nzk2LDcgKzI3ODY4LDcgQEAgaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9wdXNoIChydHggY2FsbF9vcCwgY29uc3QgY2hhciAqeGFzbSwKLSAJICBlbHNlCi0gCSAgICBpbmRpcmVjdF90aHVua19uZWVkZWQgPSB0cnVlOwotIAl9Ci0tICAgICAgaW5kaXJlY3RfdGh1bmtfbmFtZSAodGh1bmtfbmFtZV9idWYsIHJlZ25vLCBuZWVkX2JuZF9wKTsKLSsgICAgICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lX2J1ZiwgcmVnbm8sIG5lZWRfYm5kX3AsIGZhbHNlKTsKLSAgICAgICB0aHVua19uYW1lID0gdGh1bmtfbmFtZV9idWY7Ci0gICAgIH0KLSAgIGVsc2UKLUBAIC0yNzkzMSw2ICsyODAwMyw0NiBAQCBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKHJ0eCBjYWxsX29wLCBib29sIHJldF9wKQotICAgICByZXR1cm4gIiUham1wXHQlQTAiOwotIH0KLSAKLSsvKiBPdXRwdXQgZnVuY3Rpb24gcmV0dXJuLiAgQ0FMTF9PUCBpcyB0aGUganVtcCB0YXJnZXQuICBBZGQgYSBSRVAKLSsgICBwcmVmaXggdG8gUkVUIGlmIExPTkdfUCBpcyB0cnVlIGFuZCBmdW5jdGlvbiByZXR1cm4gaXMga2VwdC4gICovCi0rCi0rY29uc3QgY2hhciAqCi0raXg4Nl9vdXRwdXRfZnVuY3Rpb25fcmV0dXJuIChib29sIGxvbmdfcCkKLSt7Ci0rICBpZiAoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rICAgIHsKLSsgICAgICBjaGFyIHRodW5rX25hbWVbMzJdOwotKyAgICAgIGJvb2wgbmVlZF9ibmRfcCA9IGl4ODZfYm5kX3ByZWZpeGVkX2luc25fcCAoY3VycmVudF9vdXRwdXRfaW5zbik7Ci0rCi0rICAgICAgaWYgKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlCi0rCSAgIT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rX2lubGluZSkKLSsJewotKwkgIGJvb2wgbmVlZF90aHVuayA9IChjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZQotKwkJCSAgICAgPT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rKTsKLSsJICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lLCAtMSwgbmVlZF9ibmRfcCwgdHJ1ZSk7Ci0rCSAgaWYgKG5lZWRfYm5kX3ApCi0rCSAgICB7Ci0rCSAgICAgIGluZGlyZWN0X3RodW5rX2JuZF9uZWVkZWQgfD0gbmVlZF90aHVuazsKLSsJICAgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRibmQgam1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBpbmRpcmVjdF90aHVua19uZWVkZWQgfD0gbmVlZF90aHVuazsKLSsJICAgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJICAgIH0KLSsJfQotKyAgICAgIGVsc2UKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rIChuZWVkX2JuZF9wLCAtMSk7Ci0rCi0rICAgICAgcmV0dXJuICIiOwotKyAgICB9Ci0rCi0rICBpZiAoIWxvbmdfcCB8fCBpeDg2X2JuZF9wcmVmaXhlZF9pbnNuX3AgKGN1cnJlbnRfb3V0cHV0X2luc24pKQotKyAgICByZXR1cm4gIiUhcmV0IjsKLSsKLSsgIHJldHVybiAicmVwJTsgcmV0IjsKLSt9Ci0rCi0gLyogT3V0cHV0IHRoZSBhc3NlbWJseSBmb3IgYSBjYWxsIGluc3RydWN0aW9uLiAgKi8KLSAKLSBjb25zdCBjaGFyICoKLUBAIC00NTQ2MSw2ICs0NTU3MywyOCBAQCBpeDg2X2hhbmRsZV9mbmRlY2xfYXR0cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUsIHRyZWUgYXJncywgaW50LAotIAl9Ci0gICAgIH0KLSAKLSsgIGlmIChpc19hdHRyaWJ1dGVfcCAoImZ1bmN0aW9uX3JldHVybiIsIG5hbWUpKQotKyAgICB7Ci0rICAgICAgdHJlZSBjc3QgPSBUUkVFX1ZBTFVFIChhcmdzKTsKLSsgICAgICBpZiAoVFJFRV9DT0RFIChjc3QpICE9IFNUUklOR19DU1QpCi0rCXsKLSsJICB3YXJuaW5nIChPUFRfV2F0dHJpYnV0ZXMsCi0rCQkgICAiJXFFIGF0dHJpYnV0ZSByZXF1aXJlcyBhIHN0cmluZyBjb25zdGFudCBhcmd1bWVudCIsCi0rCQkgICBuYW1lKTsKLSsJICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKLSsJfQotKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgImtlZXAiKSAhPSAwCi0rCSAgICAgICAmJiBzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuayIpICE9IDAKLSsJICAgICAgICYmIHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rLWlubGluZSIpICE9IDAKLSsJICAgICAgICYmIHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rLWV4dGVybiIpICE9IDApCi0rCXsKLSsJICB3YXJuaW5nIChPUFRfV2F0dHJpYnV0ZXMsCi0rCQkgICAiYXJndW1lbnQgdG8gJXFFIGF0dHJpYnV0ZSBpcyBub3QgIgotKwkJICAgIihrZWVwfHRodW5rfHRodW5rLWlubGluZXx0aHVuay1leHRlcm4pIiwgbmFtZSk7Ci0rCSAgKm5vX2FkZF9hdHRycyA9IHRydWU7Ci0rCX0KLSsgICAgfQotKwotICAgcmV0dXJuIE5VTExfVFJFRTsKLSB9Ci0gCi1AQCAtNDk2OTAsNiArNDk4MjQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGl4ODZfYXR0cmlidXRlX3RhYmxlW10gPQotICAgICBpeDg2X2hhbmRsZV9jYWxsZWVfcG9wX2FnZ3JlZ2F0ZV9yZXR1cm4sIHRydWUgfSwKLSAgIHsgImluZGlyZWN0X2JyYW5jaCIsIDEsIDEsIHRydWUsIGZhbHNlLCBmYWxzZSwKLSAgICAgaXg4Nl9oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSwgZmFsc2UgfSwKLSsgIHsgImZ1bmN0aW9uX3JldHVybiIsIDEsIDEsIHRydWUsIGZhbHNlLCBmYWxzZSwKLSsgICAgaXg4Nl9oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSwgZmFsc2UgfSwKLSAKLSAgIC8qIEVuZCBlbGVtZW50LiAgKi8KLSAgIHsgTlVMTCwgICAgICAgIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIE5VTEwsIGZhbHNlIH0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotaW5kZXggOWRjY2RiMC4uYjM0YmMxMSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLUBAIC0yNTc5LDYgKzI1NzksOSBAQCBzdHJ1Y3QgR1RZKCgpKSBtYWNoaW5lX2Z1bmN0aW9uIHsKLSAgICAgICJpbmRpcmVjdF9qdW1wIiBvciAidGFibGVqdW1wIi4gICovCi0gICBCT09MX0JJVEZJRUxEIGhhc19sb2NhbF9pbmRpcmVjdF9qdW1wIDogMTsKLSAKLSsgIC8qIEhvdyB0byBnZW5lcmF0ZSBmdW5jdGlvbiByZXR1cm4uICAqLwotKyAgRU5VTV9CSVRGSUVMRChpbmRpcmVjdF9icmFuY2gpIGZ1bmN0aW9uX3JldHVybl90eXBlIDogMzsKLSsKLSAgIC8qIElmIHRydWUsIHRoZXJlIGlzIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgYXJndW1lbnQgcGFzc2luZy4gIFRoaXMKLSAgICAgIGlzIHVzZWQgb25seSBpbiBpeDg2X2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsIGJ5IDMyLWJpdCB0byBkZXRlcm1pbmUKLSAgICAgIGlmIHRoZXJlIGlzIHNjcmF0Y2ggcmVnaXN0ZXIgYXZhaWxhYmxlIGZvciBpbmRpcmVjdCBzaWJjYWxsLiAgSW4KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1pbmRleCAxNTNlMTYyLi4yZGE2NzFlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1AQCAtMTI0ODksNyArMTI0ODksNyBAQAotIChkZWZpbmVfaW5zbiAic2ltcGxlX3JldHVybl9pbnRlcm5hbCIKLSAgIFsoc2ltcGxlX3JldHVybildCi0gICAicmVsb2FkX2NvbXBsZXRlZCIKLS0gICIlIXJldCIKLSsgICIqIHJldHVybiBpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4gKGZhbHNlKTsiCi0gICBbKHNldF9hdHRyICJsZW5ndGgiICIxIikKLSAgICAoc2V0X2F0dHIgImF0b21fdW5pdCIgImpldSIpCi0gICAgKHNldF9hdHRyICJsZW5ndGhfaW1tZWRpYXRlIiAiMCIpCi1AQCAtMTI1MDMsMTIgKzEyNTAzLDcgQEAKLSAgIFsoc2ltcGxlX3JldHVybikKLSAgICAodW5zcGVjIFsoY29uc3RfaW50IDApXSBVTlNQRUNfUkVQKV0KLSAgICJyZWxvYWRfY29tcGxldGVkIgotLXsKLS0gIGlmIChpeDg2X2JuZF9wcmVmaXhlZF9pbnNuX3AgKGluc24pKQotLSAgICByZXR1cm4gIiUhcmV0IjsKLS0KLS0gIHJldHVybiAicmVwJTsgcmV0IjsKLS19Ci0rICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfZnVuY3Rpb25fcmV0dXJuICh0cnVlKTsiCi0gICBbKHNldF9hdHRyICJsZW5ndGgiICIyIikKLSAgICAoc2V0X2F0dHIgImF0b21fdW5pdCIgImpldSIpCi0gICAgKHNldF9hdHRyICJsZW5ndGhfaW1tZWRpYXRlIiAiMCIpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0IGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0Ci1pbmRleCA1ZmZhMzM0Li5hZDU5MTZmIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0Ci0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQKLUBAIC05MDIsOSArOTAyLDEzIEBAIG1pbmRpcmVjdC1icmFuY2g9Ci0gVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBKb2luZWQgRW51bShpbmRpcmVjdF9icmFuY2gpIFZhcihpeDg2X2luZGlyZWN0X2JyYW5jaCkgSW5pdChpbmRpcmVjdF9icmFuY2hfa2VlcCkKLSBDb252ZXJ0IGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gY2FsbCBhbmQgcmV0dXJuIHRodW5rcy4KLSAKLSttZnVuY3Rpb24tcmV0dXJuPQotK1RhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkIEVudW0oaW5kaXJlY3RfYnJhbmNoKSBWYXIoaXg4Nl9mdW5jdGlvbl9yZXR1cm4pIEluaXQoaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rQ29udmVydCBmdW5jdGlvbiByZXR1cm4gdG8gY2FsbCBhbmQgcmV0dXJuIHRodW5rLgotKwotIEVudW0KLSBOYW1lKGluZGlyZWN0X2JyYW5jaCkgVHlwZShlbnVtIGluZGlyZWN0X2JyYW5jaCkKLS1Lbm93biBpbmRpcmVjdCBicmFuY2ggY2hvaWNlcyAoZm9yIHVzZSB3aXRoIHRoZSAtbWluZGlyZWN0LWJyYW5jaD0gb3B0aW9uKToKLStLbm93biBpbmRpcmVjdCBicmFuY2ggY2hvaWNlcyAoZm9yIHVzZSB3aXRoIHRoZSAtbWluZGlyZWN0LWJyYW5jaD0vLW1mdW5jdGlvbi1yZXR1cm49IG9wdGlvbnMpOgotIAotIEVudW1WYWx1ZQotIEVudW0oaW5kaXJlY3RfYnJhbmNoKSBTdHJpbmcoa2VlcCkgVmFsdWUoaW5kaXJlY3RfYnJhbmNoX2tlZXApCi1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9leHRlbmQudGV4aSBiL2djYy9kb2MvZXh0ZW5kLnRleGkKLWluZGV4IDg2NjhkYWUuLjJjYjZiZDEgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2V4dGVuZC50ZXhpCi0rKysgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCi1AQCAtNTQyOSw2ICs1NDI5LDE1IEBAIGNhbGwgYW5kIGp1bXAgdG8gY2FsbCBhbmQgcmV0dXJuIHRodW5rLiAgQHNhbXB7dGh1bmstaW5saW5lfSBjb252ZXJ0cwotIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gaW5saW5lZCBjYWxsIGFuZCByZXR1cm4gdGh1bmsuCi0gQHNhbXB7dGh1bmstZXh0ZXJufSBjb252ZXJ0cyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGV4dGVybmFsIGNhbGwKLSBhbmQgcmV0dXJuIHRodW5rIHByb3ZpZGVkIGluIGEgc2VwYXJhdGUgb2JqZWN0IGZpbGUuCi0rCi0rQGl0ZW0gZnVuY3Rpb25fcmV0dXJuKCJAdmFye2Nob2ljZX0iKQotK0BjaW5kZXggQGNvZGV7ZnVuY3Rpb25fcmV0dXJufSBmdW5jdGlvbiBhdHRyaWJ1dGUsIHg4NgotK09uIHg4NiB0YXJnZXRzLCB0aGUgQGNvZGV7ZnVuY3Rpb25fcmV0dXJufSBhdHRyaWJ1dGUgY2F1c2VzIHRoZSBjb21waWxlcgotK3RvIGNvbnZlcnQgZnVuY3Rpb24gcmV0dXJuIHdpdGggQHZhcntjaG9pY2V9LiAgQHNhbXB7a2VlcH0ga2VlcHMgZnVuY3Rpb24KLStyZXR1cm4gdW5tb2RpZmllZC4gIEBzYW1we3RodW5rfSBjb252ZXJ0cyBmdW5jdGlvbiByZXR1cm4gdG8gY2FsbCBhbmQKLStyZXR1cm4gdGh1bmsuICBAc2FtcHt0aHVuay1pbmxpbmV9IGNvbnZlcnRzIGZ1bmN0aW9uIHJldHVybiB0byBpbmxpbmVkCi0rY2FsbCBhbmQgcmV0dXJuIHRodW5rLiAgQHNhbXB7dGh1bmstZXh0ZXJufSBjb252ZXJ0cyBmdW5jdGlvbiByZXR1cm4gdG8KLStleHRlcm5hbCBjYWxsIGFuZCByZXR1cm4gdGh1bmsgcHJvdmlkZWQgaW4gYSBzZXBhcmF0ZSBvYmplY3QgZmlsZS4KLSBAZW5kIHRhYmxlCi0gCi0gT24gdGhlIHg4NiwgdGhlIGlubGluZXIgZG9lcyBub3QgaW5saW5lIGEKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggZmY5YTE5NC4uZmE2M2RjNSAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0xMTY5LDcgKzExNjksOCBAQCBTZWUgUlMvNjAwMCBhbmQgUG93ZXJQQyBPcHRpb25zLgotIC1tc3NlMmF2eCAtbWZlbnRyeSAtbXJlY29yZC1tY291bnQgLW1ub3AtbWNvdW50IC1tOGJpdC1pZGl2IEBnb2wKLSAtbWF2eDI1Ni1zcGxpdC11bmFsaWduZWQtbG9hZCAtbWF2eDI1Ni1zcGxpdC11bmFsaWduZWQtc3RvcmUgQGdvbAotIC1tYWxpZ24tZGF0YT1AdmFye3R5cGV9IC1tc3RhY2stcHJvdGVjdG9yLWd1YXJkPUB2YXJ7Z3VhcmR9IEBnb2wKLS0tbW1pdGlnYXRlLXJvcCAtbWluZGlyZWN0LWJyYW5jaD1AdmFye2Nob2ljZX19Ci0rLW1taXRpZ2F0ZS1yb3AgLW1pbmRpcmVjdC1icmFuY2g9QHZhcntjaG9pY2V9IEBnb2wKLSstbWZ1bmN0aW9uLXJldHVybj1AdmFye2Nob2ljZX19Ci0gCi0gQGVtcGh7eDg2IFdpbmRvd3MgT3B0aW9uc30KLSBAZ2Njb3B0bGlzdHstbWNvbnNvbGUgLW1jeWd3aW4gLW1uby1jeWd3aW4gLW1kbGwgQGdvbAotQEAgLTI0MjI5LDYgKzI0MjMwLDE3IEBAIHRvIGV4dGVybmFsIGNhbGwgYW5kIHJldHVybiB0aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBmaWxlLgotIFlvdSBjYW4gY29udHJvbCB0aGlzIGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5IHVzaW5nIHRoZQotIGZ1bmN0aW9uIGF0dHJpYnV0ZSBAY29kZXtpbmRpcmVjdF9icmFuY2h9LiAgQHhyZWZ7RnVuY3Rpb24gQXR0cmlidXRlc30uCi0gCi0rQGl0ZW0gLW1mdW5jdGlvbi1yZXR1cm49QHZhcntjaG9pY2V9Ci0rQG9waW5kZXggLW1mdW5jdGlvbi1yZXR1cm4KLStDb252ZXJ0IGZ1bmN0aW9uIHJldHVybiB3aXRoIEB2YXJ7Y2hvaWNlfS4gIFRoZSBkZWZhdWx0IGlzIEBzYW1we2tlZXB9LAotK3doaWNoIGtlZXBzIGZ1bmN0aW9uIHJldHVybiB1bm1vZGlmaWVkLiAgQHNhbXB7dGh1bmt9IGNvbnZlcnRzIGZ1bmN0aW9uCi0rcmV0dXJuIHRvIGNhbGwgYW5kIHJldHVybiB0aHVuay4gIEBzYW1we3RodW5rLWlubGluZX0gY29udmVydHMgZnVuY3Rpb24KLStyZXR1cm4gdG8gaW5saW5lZCBjYWxsIGFuZCByZXR1cm4gdGh1bmsuICBAc2FtcHt0aHVuay1leHRlcm59IGNvbnZlcnRzCi0rZnVuY3Rpb24gcmV0dXJuIHRvIGV4dGVybmFsIGNhbGwgYW5kIHJldHVybiB0aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlCi0rb2JqZWN0IGZpbGUuICBZb3UgY2FuIGNvbnRyb2wgdGhpcyBiZWhhdmlvciBmb3IgYSBzcGVjaWZpYyBmdW5jdGlvbiBieQotK3VzaW5nIHRoZSBmdW5jdGlvbiBhdHRyaWJ1dGUgQGNvZGV7ZnVuY3Rpb25fcmV0dXJufS4KLStAeHJlZntGdW5jdGlvbiBBdHRyaWJ1dGVzfS4KLSsKLSBAZW5kIHRhYmxlCi0gCi0gVGhlc2UgQHNhbXB7LW19IHN3aXRjaGVzIGFyZSBzdXBwb3J0ZWQgaW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jCi1pbmRleCBkOTgzZTFjLi5lMzY1ZWY1IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTExLDcgKzExLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotaW5kZXggNThmMDliNC4uMDVhNTFhZCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMSw3ICsxMSw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotaW5kZXggZjIwZDM1Yy4uM2MwZDRjMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMiw3ICsxMiw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotaW5kZXggMGVmZjhmYi4uMTRkNGVmNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMiw3ICsxMiw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYwotaW5kZXggYTI1YjIwZC4uYjQ4MzZjMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYwotaW5kZXggY2ZmMTE0YS4uMWYwNmJkMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYwotaW5kZXggYWZkYjYwMC4uYmM2YjQ3YSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHZvaWQgZnVuYzAgKHZvaWQpOwotIHZvaWQgZnVuYzEgKHZvaWQpOwotQEAgLTM1LDcgKzM1LDcgQEAgYmFyIChpbnQgaSkKLSAgICAgfQotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1pbmRleCBkNjRkOTc4Li4yMjU3YmUzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xNCw3ICsxNCw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaChvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jCi1pbmRleCA5MzA2NzQ1Li5lOWNmZGM1IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMiw3ICsxMiw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMKLWluZGV4IDk3NzQ0ZDYuLmY5MzhkYjAgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTE0LDcgKzE0LDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYwotaW5kZXggYmZjZTNlYS4uNGU1ODU5OSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTMsNyArMTMsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jCi1pbmRleCAwODMzNjA2Li5iOGQ1MDI0IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xNCw3ICsxNCw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLWluZGV4IDJlYmEwZmIuLjQ1NWFkYWIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTEzLDcgKzEzLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYwotaW5kZXggZjU4NDI3ZS4uNDU5NWI4NCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLUBAIC0zNiw3ICszNiw3IEBAIGJhciAoaW50IGkpCi0gICAgIH0KLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYwotaW5kZXggNTY0ZWQzOS4uZDczMGQzMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotaW5kZXggNTBmYmVlMi4uNWUzZTExOCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZm5vLXBpYyIgfSAqLwotIAotIHZvaWQgKCpkaXNwYXRjaCkgKGNoYXIgKik7Ci0gY2hhciBidWZbMTBdOwotQEAgLTEwLDcgKzEwLDcgQEAgZm9vICh2b2lkKQotICAgZGlzcGF0Y2ggKGJ1Zik7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi1pbmRleCAyOTc2ZTY3Li4yODAxYWE0IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mbm8tcGljIiB9ICovCi0gCi0gdm9pZCAoKmRpc3BhdGNoKSAoY2hhciAqKTsKLSBjaGFyIGJ1ZlsxMF07Ci1AQCAtMTEsNyArMTEsNyBAQCBmb28gKHZvaWQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jCi1pbmRleCBkYTRiYzk4Li43MGI0ZmIzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgKi0qLWxpbnV4KiAmJiB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0gCi0gdm9pZCBiYXIgKGNoYXIgKik7Ci0gY2hhciBidWZbMTBdOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi1pbmRleCBjNjRkMTJlLi4zYmFmMDNlIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgKi0qLWxpbnV4KiAmJiB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0gCi0gdm9pZCBiYXIgKGNoYXIgKik7Ci0gY2hhciBidWZbMTBdOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi1pbmRleCA0OWYyN2I0Li5lZGViMjY0IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMSw3ICsxMSw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaChvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYwotaW5kZXggYTFlM2ViNi4uMWQwMDQxMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTEsNyArMTEsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYwotaW5kZXggMzk1NjM0ZS4uMDZlYmYxYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTIsNyArMTIsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYwotaW5kZXggZmQzZjYzMy4uMWM4Zjk0NCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTIsNyArMTIsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYwotaW5kZXggYmEyZjkyYi4uMjE3NDBhYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotaW5kZXggMGM1YTJkNC4uYTc3YzFmNCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYwotaW5kZXggNjY1MjUyMy4uODZlOWZkMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLUBAIC0zNSw3ICszNSw3IEBAIGJhciAoaW50IGkpCi0gICAgIH0KLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLWluZGV4IDY4YzBmZjcuLjNlY2RlODcgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTExLDcgKzExLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jCi1pbmRleCBlMmRhMWZjLi5kZjMyYTE5IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMSw3ICsxMSw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi1pbmRleCAyNDRmZWM3Li45NTQwOTk2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMiw3ICsxMiw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLWluZGV4IDEwN2ViZTMuLmYzZGI2ZTIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTEyLDcgKzEyLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYwotaW5kZXggMTdiMDRlZi4uMGY2ODdjMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotaW5kZXggZDllYjExMi4uYjI3YzZmYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYwotaW5kZXggZDAyYjFkYy4uNzY0YTM3NSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLUBAIC0zNSw3ICszNSw3IEBAIGJhciAoaW50IGkpCi0gICAgIH0KLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzIyM2Y2NwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEuYwotQEAgLTAsMCArMSwxMyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsiIH0gKi8KLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjNhNjcyN2IKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jCi1AQCAtMCwwICsxLDIzIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1pbmxpbmUgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLStleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVuazoiIHsgdGFyZ2V0IHsgISB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4OiIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjhmNjgxOAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMKLUBAIC0wLDAgKzEsMjMgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKwotK2V4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0rCi0raW50Ci0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVuazoiIHsgdGFyZ2V0IHsgISB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4OiIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMDFiMGEwMgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLStleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bms6IiB7IHRhcmdldCB7ICEgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheDoiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjRiNDk3YjUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jCi1AQCAtMCwwICsxLDIyIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKwotK2V4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0rZXh0ZXJuIGludCBmb28gKHZvaWQpIF9fYXR0cmlidXRlX18gKChmdW5jdGlvbl9yZXR1cm4oInRodW5rIikpKTsKLSsKLStpbnQKLStmb28gKHZvaWQpCi0rewotKyAgYmFyICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAzIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAzIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjRhZTRjNDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jCi1AQCAtMCwwICsxLDIyIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotKwotK2V4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0rCi0rX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3JldHVybigidGh1bmstaW5saW5lIikpKQotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjViNWJjNzYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jCi1AQCAtMCwwICsxLDIyIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPWtlZXAgLWZuby1waWMiIH0gKi8KLSsKLStleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotKwotK19fYXR0cmlidXRlX18gKChmdW5jdGlvbl9yZXR1cm4oInRodW5rLWV4dGVybiIpLCBpbmRpcmVjdF9icmFuY2goInRodW5rIikpKQotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmExNmNhZDEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNi5jCi1AQCAtMCwwICsxLDE4IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1pbmxpbmUgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSsKLStfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJrZWVwIiksIGluZGlyZWN0X2JyYW5jaCgia2VlcCIpKSkKLStpbnQKLStmb28gKHZvaWQpCi0rewotKyAgYmFyICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYzY2NTllMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIuYwotQEAgLTAsMCArMSwxMyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstaW5saW5lIiB9ICovCi0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjBmN2YzODgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0zLmMKLUBAIC0wLDAgKzEsMTIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybiIgfSAqLwotKwotK3ZvaWQKLStmb28gKHZvaWQpCi0rewotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjlhZTM3ZTgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay00LmMKLUBAIC0wLDAgKzEsMTIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAiIH0gKi8KLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNGJkMGQyYQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTUuYwotQEAgLTAsMCArMSwxNSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCIgfSAqLwotKwotK2V4dGVybiB2b2lkIGZvbyAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3JldHVybigidGh1bmsiKSkpOwotKwotK3ZvaWQKLStmb28gKHZvaWQpCi0rewotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjA1Mzg0MWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay02LmMKLUBAIC0wLDAgKzEsMTQgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAiIH0gKi8KLSsKLStfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJ0aHVuay1pbmxpbmUiKSkpCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTcuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI2MmU2NzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay03LmMKLUBAIC0wLDAgKzEsMTMgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAiIH0gKi8KLSsKLStfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJ0aHVuay1leHRlcm4iKSkpCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYzE2NThlOQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTguYwotQEAgLTAsMCArMSwxNCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstaW5saW5lIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgZm9vICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJrZWVwIikpKTsKLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZmEyNGExZgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYwotQEAgLTAsMCArMSwyNCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLStleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bms6IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDIgeyB0YXJnZXQgeyB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDIgeyB0YXJnZXQgeyB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDYteDg2LUFkZC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA2LXg4Ni1BZGQtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3Rlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ3MzY5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDYteDg2LUFkZC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTQ2ICswLDAgQEAKLUZyb20gM2YxYzM5ZmI1NDM4ODRkMzZlNzU5YTZkYzE5NmE4ZTkxNGViNGY3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJILkouIEx1IiA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgNiBKYW4gMjAxOCAyMjoyOTo1NiAtMDgwMAotU3ViamVjdDogW1BBVENIIDA2LzEyXSB4ODY6IEFkZCAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlcgotCi1BZGQgLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgdG8gZm9yY2UgaW5kaXJlY3QgYnJhbmNoIHZpYSByZWdpc3Rlci4KLVRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgZGlzYWJsaW5nIHBhdHRlcm5zIG9mIGluZGlyZWN0IGJyYW5jaCB2aWEgbWVtb3J5LAotc2ltaWxhciB0byBUQVJHRVRfWDMyLgotCi0tbWluZGlyZWN0LWJyYW5jaD0gYW5kIC1tZnVuY3Rpb24tcmV0dXJuPSB0ZXN0cyBhcmUgdXBkYXRlZCB3aXRoCi0tbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciB0byBhdm9pZCBmYWxzZSB0ZXN0IGZhaWx1cmVzIHdoZW4KLS1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIGlzIGFkZGVkIHRvIFJVTlRFU1RGTEFHUyBmb3IgIm1ha2UgY2hlY2siLgotCi1nY2MvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZCAoQnMpOiBEaXNhbGxvdyBtZW1vcnkgb3BlcmFuZCBmb3IKLQktbWluZGlyZWN0LWJyYW5jaC1yZWdpc3Rlci4KLQkoQncpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKGluZGlyZWN0X2JyYW5jaF9vcGVyYW5kKTogTGlrZXdpc2UuCi0JKEdPVF9tZW1vcnlfb3BlcmFuZCk6IExpa2V3aXNlLgotCShjYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgotCShzaWJjYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgotCShHT1QzMl9zeW1ib2xfb3BlcmFuZCk6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoaW5kaXJlY3RfanVtcCk6IENhbGwgY29udmVydF9tZW1vcnlfYWRkcmVzcwotCWZvciAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3Rlci4KLQkodGFibGVqdW1wKTogTGlrZXdpc2UuCi0JKCpzaWJjYWxsX21lbW9yeSk6IExpa2V3aXNlLgotCSgqc2liY2FsbF92YWx1ZV9tZW1vcnkpOiBMaWtld2lzZS4KLQlEaXNhbGxvdyBwZWVwaG9sZXMgb2YgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB2aWEgbWVtb3J5IGZvcgotCS1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyLgotCSgqY2FsbF9wb3ApOiBSZXBsYWNlIG0gd2l0aCBCdy4KLQkoKmNhbGxfdmFsdWVfcG9wKTogTGlrZXdpc2UuCi0JKCpzaWJjYWxsX3BvcF9tZW1vcnkpOiBSZXBsYWNlIG0gd2l0aCBCcy4KLQkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChtaW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyKTogTmV3IG9wdGlvbi4KLQkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgb3B0aW9uLgotCi1nY2MvdGVzdHN1aXRlLwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYyAoZGctb3B0aW9ucyk6IEFkZAotCS1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0xLmM6IE5ldyB0ZXN0LgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMy5jOiBMaWtld2lzZS4KLQotaTM4NjogUmVuYW1lIHRvIGl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0KLVJlbmFtZSB0aGUgdmFyaWFibGUgZm9yIC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIHRvCi1peDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciB0byBtYXRjaCB0aGUgY29tbWFuZC1saW5lIG9wdGlvbiBuYW1lLgotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogY29uZmlnL2kzODYvY29uc3RyYWludHMubWQgKEJzKTogUmVwbGFjZQotCWl4ODZfaW5kaXJlY3RfYnJhbmNoX3RodW5rX3JlZ2lzdGVyIHdpdGgKLQlpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3Rlci4KLQkoQncpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGluZGlyZWN0X2p1bXApOiBMaWtld2lzZS4KLQkodGFibGVqdW1wKTogTGlrZXdpc2UuCi0JKCpzaWJjYWxsX21lbW9yeSk6IExpa2V3aXNlLgotCSgqc2liY2FsbF92YWx1ZV9tZW1vcnkpOiBMaWtld2lzZS4KLQlQZWVwaG9sZXMgb2YgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB2aWEgbWVtb3J5OiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYub3B0OiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKGluZGlyZWN0X2JyYW5jaF9vcGVyYW5kKTogTGlrZXdpc2UuCi0JKEdPVF9tZW1vcnlfb3BlcmFuZCk6IExpa2V3aXNlLgotCShjYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgotCShzaWJjYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgotCShHT1QzMl9zeW1ib2xfb3BlcmFuZCk6IExpa2V3aXNlLgotCi14ODY6IFJld3JpdGUgaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIgbG9naWMKLQotUmV3cml0ZSBpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciBsb2dpYyB3aXRoCi0KLShhbmQgKG5vdCAobWF0Y2hfdGVzdCAiaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiKSkKLSAgICAgKG9yaWdpbmFsIGNvbmRpdGlvbiBiZWZvcmUgcjI1NjY2MikpCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIChjb25zdGFudF9jYWxsX2FkZHJlc3Nfb3BlcmFuZCk6Ci0JUmV3cml0ZSBpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciBsb2dpYy4KLQkoc2liY2FsbF9pbnNuX29wZXJhbmQpOiBMaWtld2lzZS4KLQotRG9uJ3QgY2hlY2sgaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIgZm9yIEdPVCBvcGVyYW5kCi0KLVNpbmNlIEdPVF9tZW1vcnlfb3BlcmFuZCBhbmQgR09UMzJfc3ltYm9sX29wZXJhbmQgYXJlIHNpbXBsZSBwYXR0ZXJuCi1tYXRjaGVzLCBkb24ndCBjaGVjayBpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciBoZXJlLiAgSWYgbmVlZGVkLAotLW1pbmRpcmVjdC1icmFuY2g9IHdpbGwgY29udmVydCBpbmRpcmVjdCBicmFuY2ggdmlhIEdPVCBzbG90IHRvIGEgY2FsbAotYW5kIHJldHVybiB0aHVuay4KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQkqIGNvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kIChCcyk6IFVwZGF0ZQotCWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIGNoZWNrLiAgRG9uJ3QgY2hlY2sKLQlpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciB3aXRoIEdPVF9tZW1vcnlfb3BlcmFuZC4KLQkoQncpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKEdPVF9tZW1vcnlfb3BlcmFuZCk6IERvbid0IGNoZWNrCi0JaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIgaGVyZS4KLQkoR09UMzJfc3ltYm9sX29wZXJhbmQpOiBMaWtld2lzZS4KLQotaTM4NjogUmV3cml0ZSBpbmRpcmVjdF9icmFuY2hfb3BlcmFuZCBsb2dpYwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCAoaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQpOiBSZXdyaXRlCi0JaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIgbG9naWMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvY29uc3RyYWludHMubWQgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5tZCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM0ICsrKysrKysrKysrKysrLS0tLS0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKwotIGdjYy9jb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kICAgICAgICAgICAgICAgICAgICAgIHwgMjEgKysrKysrKy0tLS0tLQotIGdjYy9kb2MvaW52b2tlLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYyAgIHwgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMgICB8ICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jICAgfCAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYyAgIHwgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMgICB8ICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jICAgfCAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYyAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jICAgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYyAgICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMgICAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jICAgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYyAgICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMgICAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jICAgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jICAgICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYyAgICAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgICAgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jICAgICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0xLmMgICAgfCAyMiArKysrKysrKysrKysrKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMi5jICAgIHwgMjAgKysrKysrKysrKysrKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMy5jICAgIHwgMTkgKysrKysrKysrKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMgICAgICAgfCAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jICAgICAgIHwgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYyAgICAgICB8ICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmMgICAgICAgfCAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jICAgICAgIHwgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYyAgICAgICB8ICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYyAgICAgICAgfCAgMiArLQotIDQ3IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTIuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0zLmMKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZCBiL2djYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZAotaW5kZXggMWE0YzcwMS4uOTIwNGM4ZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kCi1AQCAtMTcyLDE0ICsxNzIsMTYgQEAKLSAKLSAoZGVmaW5lX2NvbnN0cmFpbnQgIkJzIgotICAgIkBpbnRlcm5hbCBTaWJjYWxsIG1lbW9yeSBvcGVyYW5kLiIKLS0gIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0rICAoaW9yIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiKSkKLSsJICAgIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSAJICAgIChtYXRjaF9vcGVyYW5kIDAgInNpYmNhbGxfbWVtb3J5X29wZXJhbmQiKSkKLSAgICAgICAgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiAmJiBQbW9kZSA9PSBESW1vZGUiKQotIAkgICAgKG1hdGNoX29wZXJhbmQgMCAiR09UX21lbW9yeV9vcGVyYW5kIikpKSkKLSAKLSAoZGVmaW5lX2NvbnN0cmFpbnQgIkJ3IgotICAgIkBpbnRlcm5hbCBDYWxsIG1lbW9yeSBvcGVyYW5kLiIKLS0gIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0rICAoaW9yIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiKSkKLSsJICAgIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSAJICAgIChtYXRjaF9vcGVyYW5kIDAgIm1lbW9yeV9vcGVyYW5kIikpCi0gICAgICAgIChhbmQgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIgJiYgUG1vZGUgPT0gREltb2RlIikKLSAJICAgIChtYXRjaF9vcGVyYW5kIDAgIkdPVF9tZW1vcnlfb3BlcmFuZCIpKSkpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAotaW5kZXggMmRhNjcxZS4uMDVhODhmZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAotQEAgLTExODA1LDcgKzExODA1LDcgQEAKLSAgIFsoc2V0IChwYykgKG1hdGNoX29wZXJhbmQgMCAiaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQiKSldCi0gICAiIgotIHsKLS0gIGlmIChUQVJHRVRfWDMyKQotKyAgaWYgKFRBUkdFVF9YMzIgfHwgaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIpCi0gICAgIG9wZXJhbmRzWzBdID0gY29udmVydF9tZW1vcnlfYWRkcmVzcyAod29yZF9tb2RlLCBvcGVyYW5kc1swXSk7Ci0gICBjZnVuLT5tYWNoaW5lLT5oYXNfbG9jYWxfaW5kaXJlY3RfanVtcCA9IHRydWU7Ci0gfSkKLUBAIC0xMTg1OSw3ICsxMTg1OSw3IEBACi0gCQkJCQkgT1BUQUJfRElSRUNUKTsKLSAgICAgfQotIAotLSAgaWYgKFRBUkdFVF9YMzIpCi0rICBpZiAoVEFSR0VUX1gzMiB8fCBpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcikKLSAgICAgb3BlcmFuZHNbMF0gPSBjb252ZXJ0X21lbW9yeV9hZGRyZXNzICh3b3JkX21vZGUsIG9wZXJhbmRzWzBdKTsKLSAgIGNmdW4tPm1hY2hpbmUtPmhhc19sb2NhbF9pbmRpcmVjdF9qdW1wID0gdHJ1ZTsKLSB9KQotQEAgLTEyMDQ4LDcgKzEyMDQ4LDcgQEAKLSAgIFsoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlcgMCAibWVtb3J5X29wZXJhbmQiICJtIikpCi0gCSAobWF0Y2hfb3BlcmFuZCAxKSkKLSAgICAodW5zcGVjIFsoY29uc3RfaW50IDApXSBVTlNQRUNfUEVFUFNJQildCi0tICAiIVRBUkdFVF9YMzIiCi0rICAiIVRBUkdFVF9YMzIgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIgotICAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAoaW5zbiwgb3BlcmFuZHNbMF0pOyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJjYWxsIildKQotIAotQEAgLTEyMDU3LDcgKzEyMDU3LDkgQEAKLSAJKG1hdGNoX29wZXJhbmQ6VyAxICJtZW1vcnlfb3BlcmFuZCIpKQotICAgIChjYWxsIChtZW06UUkgKG1hdGNoX2R1cCAwKSkKLSAJIChtYXRjaF9vcGVyYW5kIDMpKV0KLS0gICIhVEFSR0VUX1gzMiAmJiBTSUJMSU5HX0NBTExfUCAocGVlcDJfbmV4dF9pbnNuICgxKSkKLSsgICIhVEFSR0VUX1gzMgotKyAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDEpKQotICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLAotIAkJCUNBTExfSU5TTl9GVU5DVElPTl9VU0FHRSAocGVlcDJfbmV4dF9pbnNuICgxKSkpIgotICAgWyhwYXJhbGxlbCBbKGNhbGwgKG1lbTpRSSAobWF0Y2hfZHVwIDEpKQotQEAgLTEyMDcwLDcgKzEyMDcyLDkgQEAKLSAgICAodW5zcGVjX3ZvbGF0aWxlIFsoY29uc3RfaW50IDApXSBVTlNQRUNWX0JMT0NLQUdFKQotICAgIChjYWxsIChtZW06UUkgKG1hdGNoX2R1cCAwKSkKLSAJIChtYXRjaF9vcGVyYW5kIDMpKV0KLS0gICIhVEFSR0VUX1gzMiAmJiBTSUJMSU5HX0NBTExfUCAocGVlcDJfbmV4dF9pbnNuICgyKSkKLSsgICIhVEFSR0VUX1gzMgotKyAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDIpKQotICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLAotIAkJCUNBTExfSU5TTl9GVU5DVElPTl9VU0FHRSAocGVlcDJfbmV4dF9pbnNuICgyKSkpIgotICAgWyh1bnNwZWNfdm9sYXRpbGUgWyhjb25zdF9pbnQgMCldIFVOU1BFQ1ZfQkxPQ0tBR0UpCi1AQCAtMTIwOTIsNyArMTIwOTYsNyBAQAotIH0pCi0gCi0gKGRlZmluZV9pbnNuICIqY2FsbF9wb3AiCi0tICBbKGNhbGwgKG1lbTpRSSAobWF0Y2hfb3BlcmFuZDpTSSAwICJjYWxsX2luc25fb3BlcmFuZCIgImxtQnoiKSkKLSsgIFsoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlNJIDAgImNhbGxfaW5zbl9vcGVyYW5kIiAibEJ3QnoiKSkKLSAJIChtYXRjaF9vcGVyYW5kIDEpKQotICAgIChzZXQgKHJlZzpTSSBTUF9SRUcpCi0gCShwbHVzOlNJIChyZWc6U0kgU1BfUkVHKQotQEAgLTEyMTEyLDcgKzEyMTE2LDcgQEAKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJjYWxsIildKQotIAotIChkZWZpbmVfaW5zbiAiKnNpYmNhbGxfcG9wX21lbW9yeSIKLS0gIFsoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlNJIDAgIm1lbW9yeV9vcGVyYW5kIiAibSIpKQotKyAgWyhjYWxsIChtZW06UUkgKG1hdGNoX29wZXJhbmQ6U0kgMCAibWVtb3J5X29wZXJhbmQiICJCcyIpKQotIAkgKG1hdGNoX29wZXJhbmQgMSkpCi0gICAgKHNldCAocmVnOlNJIFNQX1JFRykKLSAJKHBsdXM6U0kgKHJlZzpTSSBTUF9SRUcpCi1AQCAtMTIxNjYsNyArMTIxNzAsOSBAQAotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VyAwICJyZWdpc3Rlcl9vcGVyYW5kIikKLSAgICAgICAgIChtYXRjaF9vcGVyYW5kOlcgMSAibWVtb3J5X29wZXJhbmQiKSkKLSAgICAoc2V0IChwYykgKG1hdGNoX2R1cCAwKSldCi0tICAiIVRBUkdFVF9YMzIgJiYgcGVlcDJfcmVnX2RlYWRfcCAoMiwgb3BlcmFuZHNbMF0pIgotKyAgIiFUQVJHRVRfWDMyCi0rICAgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0rICAgJiYgcGVlcDJfcmVnX2RlYWRfcCAoMiwgb3BlcmFuZHNbMF0pIgotICAgWyhzZXQgKHBjKSAobWF0Y2hfZHVwIDEpKV0pCi0gCi0gOzsgQ2FsbCBzdWJyb3V0aW5lLCByZXR1cm5pbmcgdmFsdWUgaW4gb3BlcmFuZCAwCi1AQCAtMTIyNDQsNyArMTIyNTAsNyBAQAotICAJKGNhbGwgKG1lbTpRSSAobWF0Y2hfb3BlcmFuZDpXIDEgIm1lbW9yeV9vcGVyYW5kIiAibSIpKQotIAkgICAgICAobWF0Y2hfb3BlcmFuZCAyKSkpCi0gICAgKHVuc3BlYyBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX1BFRVBTSUIpXQotLSAgIiFUQVJHRVRfWDMyIgotKyAgIiFUQVJHRVRfWDMyICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIKLSAgICIqIHJldHVybiBpeDg2X291dHB1dF9jYWxsX2luc24gKGluc24sIG9wZXJhbmRzWzFdKTsiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiY2FsbHYiKV0pCi0gCi1AQCAtMTIyNTQsNyArMTIyNjAsOSBAQAotICAgIChzZXQgKG1hdGNoX29wZXJhbmQgMikKLSAgICAoY2FsbCAobWVtOlFJIChtYXRjaF9kdXAgMCkpCi0gCQkgKG1hdGNoX29wZXJhbmQgMykpKV0KLS0gICIhVEFSR0VUX1gzMiAmJiBTSUJMSU5HX0NBTExfUCAocGVlcDJfbmV4dF9pbnNuICgxKSkKLSsgICIhVEFSR0VUX1gzMgotKyAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDEpKQotICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLAotIAkJCUNBTExfSU5TTl9GVU5DVElPTl9VU0FHRSAocGVlcDJfbmV4dF9pbnNuICgxKSkpIgotICAgWyhwYXJhbGxlbCBbKHNldCAobWF0Y2hfZHVwIDIpCi1AQCAtMTIyNjksNyArMTIyNzcsOSBAQAotICAgIChzZXQgKG1hdGNoX29wZXJhbmQgMikKLSAJKGNhbGwgKG1lbTpRSSAobWF0Y2hfZHVwIDApKQotIAkgICAgICAobWF0Y2hfb3BlcmFuZCAzKSkpXQotLSAgIiFUQVJHRVRfWDMyICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDIpKQotKyAgIiFUQVJHRVRfWDMyCi0rICAgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0rICAgJiYgU0lCTElOR19DQUxMX1AgKHBlZXAyX25leHRfaW5zbiAoMikpCi0gICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sCi0gCQkJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFIChwZWVwMl9uZXh0X2luc24gKDIpKSkiCi0gICBbKHVuc3BlY192b2xhdGlsZSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDVl9CTE9DS0FHRSkKLUBAIC0xMjI5NCw3ICsxMjMwNCw3IEBACi0gCi0gKGRlZmluZV9pbnNuICIqY2FsbF92YWx1ZV9wb3AiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZCAwKQotLQkoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlNJIDEgImNhbGxfaW5zbl9vcGVyYW5kIiAibG1CeiIpKQotKwkoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlNJIDEgImNhbGxfaW5zbl9vcGVyYW5kIiAibEJ3QnoiKSkKLSAJICAgICAgKG1hdGNoX29wZXJhbmQgMikpKQotICAgIChzZXQgKHJlZzpTSSBTUF9SRUcpCi0gCShwbHVzOlNJIChyZWc6U0kgU1BfUkVHKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdAotaW5kZXggYWQ1OTE2Zi4uYTk3Zjg0ZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0Ci1AQCAtOTIxLDMgKzkyMSw3IEBAIEVudW0oaW5kaXJlY3RfYnJhbmNoKSBTdHJpbmcodGh1bmstaW5saW5lKSBWYWx1ZShpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lKQotIAotIEVudW1WYWx1ZQotIEVudW0oaW5kaXJlY3RfYnJhbmNoKSBTdHJpbmcodGh1bmstZXh0ZXJuKSBWYWx1ZShpbmRpcmVjdF9icmFuY2hfdGh1bmtfZXh0ZXJuKQotKwotK21pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIKLStUYXJnZXQgUmVwb3J0IFZhcihpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcikgSW5pdCgwKQotK0ZvcmNlIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdmlhIHJlZ2lzdGVyLgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIGIvZ2NjL2NvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQKLWluZGV4IDkzZGRhN2IuLmQxZjBhN2QgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQKLUBAIC01OTMsNyArNTkzLDggQEAKLSA7OyBUZXN0IGZvciBhIHZhbGlkIG9wZXJhbmQgZm9yIGluZGlyZWN0IGJyYW5jaC4KLSAoZGVmaW5lX3ByZWRpY2F0ZSAiaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQiCi0gICAoaW9yIChtYXRjaF9vcGVyYW5kIDAgInJlZ2lzdGVyX29wZXJhbmQiKQotLSAgICAgICAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSsgICAgICAgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKwkgICAgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiIpKQotIAkgICAgKG1hdGNoX29wZXJhbmQgMCAibWVtb3J5X29wZXJhbmQiKSkpKQotIAotIDs7IFJldHVybiB0cnVlIGlmIE9QIGlzIGEgbWVtb3J5IG9wZXJhbmRzIHRoYXQgY2FuIGJlIHVzZWQgaW4gc2liY2FsbHMuCi1AQCAtNjM2LDIwICs2MzcsMjIgQEAKLSAgIChpb3IgKG1hdGNoX3Rlc3QgImNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kCi0gCQkgICAgIChvcCwgbW9kZSA9PSBWT0lEbW9kZSA/IG1vZGUgOiBQbW9kZSkiKQotICAgICAgICAobWF0Y2hfb3BlcmFuZCAwICJjYWxsX3JlZ2lzdGVyX25vX2VsaW1fb3BlcmFuZCIpCi0tICAgICAgIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0tCQkgKG1hdGNoX29wZXJhbmQgMCAibWVtb3J5X29wZXJhbmQiKSkKLS0JICAgIChhbmQgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIgJiYgUG1vZGUgPT0gREltb2RlIikKLS0JCSAobWF0Y2hfb3BlcmFuZCAwICJHT1RfbWVtb3J5X29wZXJhbmQiKSkpKSkKLSsgICAgICAgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKwkgICAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSsJCSAgICAgIChtYXRjaF9vcGVyYW5kIDAgIm1lbW9yeV9vcGVyYW5kIikpCi0rCQkgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiAmJiBQbW9kZSA9PSBESW1vZGUiKQotKwkJICAgICAgKG1hdGNoX29wZXJhbmQgMCAiR09UX21lbW9yeV9vcGVyYW5kIikpKSkpKQotIAotIDs7IFNpbWlsYXJseSwgYnV0IGZvciB0YWlsIGNhbGxzLCBpbiB3aGljaCB3ZSBjYW5ub3QgYWxsb3cgbWVtb3J5IHJlZmVyZW5jZXMuCi0gKGRlZmluZV9zcGVjaWFsX3ByZWRpY2F0ZSAic2liY2FsbF9pbnNuX29wZXJhbmQiCi0gICAoaW9yIChtYXRjaF90ZXN0ICJjb25zdGFudF9jYWxsX2FkZHJlc3Nfb3BlcmFuZAotIAkJICAgICAob3AsIG1vZGUgPT0gVk9JRG1vZGUgPyBtb2RlIDogUG1vZGUpIikKLSAgICAgICAgKG1hdGNoX29wZXJhbmQgMCAicmVnaXN0ZXJfbm9fZWxpbV9vcGVyYW5kIikKLS0gICAgICAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLS0JCSAobWF0Y2hfb3BlcmFuZCAwICJzaWJjYWxsX21lbW9yeV9vcGVyYW5kIikpCi0tCSAgICAoYW5kIChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyICYmIFBtb2RlID09IERJbW9kZSIpCi0tCQkgKG1hdGNoX29wZXJhbmQgMCAiR09UX21lbW9yeV9vcGVyYW5kIikpKSkpCi0rICAgICAgIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiKSkKLSsJICAgIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0rCQkgICAgICAobWF0Y2hfb3BlcmFuZCAwICJzaWJjYWxsX21lbW9yeV9vcGVyYW5kIikpCi0rCQkgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiAmJiBQbW9kZSA9PSBESW1vZGUiKQotKwkJICAgICAgKG1hdGNoX29wZXJhbmQgMCAiR09UX21lbW9yeV9vcGVyYW5kIikpKSkpKQotIAotIDs7IFJldHVybiB0cnVlIGlmIE9QIGlzIGEgMzItYml0IEdPVCBzeW1ib2wgb3BlcmFuZC4KLSAoZGVmaW5lX3ByZWRpY2F0ZSAiR09UMzJfc3ltYm9sX29wZXJhbmQiCi1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKLWluZGV4IGZhNjNkYzUuLmFkOWYyOTUgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCi0rKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1AQCAtMTE3MCw3ICsxMTcwLDcgQEAgU2VlIFJTLzYwMDAgYW5kIFBvd2VyUEMgT3B0aW9ucy4KLSAtbWF2eDI1Ni1zcGxpdC11bmFsaWduZWQtbG9hZCAtbWF2eDI1Ni1zcGxpdC11bmFsaWduZWQtc3RvcmUgQGdvbAotIC1tYWxpZ24tZGF0YT1AdmFye3R5cGV9IC1tc3RhY2stcHJvdGVjdG9yLWd1YXJkPUB2YXJ7Z3VhcmR9IEBnb2wKLSAtbW1pdGlnYXRlLXJvcCAtbWluZGlyZWN0LWJyYW5jaD1AdmFye2Nob2ljZX0gQGdvbAotLS1tZnVuY3Rpb24tcmV0dXJuPUB2YXJ7Y2hvaWNlfX0KLSstbWZ1bmN0aW9uLXJldHVybj1AdmFye2Nob2ljZX0gLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXJ9Ci0gCi0gQGVtcGh7eDg2IFdpbmRvd3MgT3B0aW9uc30KLSBAZ2Njb3B0bGlzdHstbWNvbnNvbGUgLW1jeWd3aW4gLW1uby1jeWd3aW4gLW1kbGwgQGdvbAotQEAgLTI0MjQxLDYgKzI0MjQxLDEwIEBAIG9iamVjdCBmaWxlLiAgWW91IGNhbiBjb250cm9sIHRoaXMgYmVoYXZpb3IgZm9yIGEgc3BlY2lmaWMgZnVuY3Rpb24gYnkKLSB1c2luZyB0aGUgZnVuY3Rpb24gYXR0cmlidXRlIEBjb2Rle2Z1bmN0aW9uX3JldHVybn0uCi0gQHhyZWZ7RnVuY3Rpb24gQXR0cmlidXRlc30uCi0gCi0rQGl0ZW0gLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIKLStAb3BpbmRleCAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlcgotK0ZvcmNlIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdmlhIHJlZ2lzdGVyLgotKwotIEBlbmQgdGFibGUKLSAKLSBUaGVzZSBAc2FtcHstbX0gc3dpdGNoZXMgYXJlIHN1cHBvcnRlZCBpbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMKLWluZGV4IGUzNjVlZjUuLjYwZDA5ODggMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMKLWluZGV4IDA1YTUxYWQuLmFhYzc1MTYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMKLWluZGV4IDNjMGQ0YzMuLjllMjRhMzggMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMKLWluZGV4IDE0ZDRlZjYuLjEyN2I1ZDkgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLWluZGV4IGI0ODM2YzMuLmZjYWExOGQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYwotaW5kZXggMWYwNmJkMS4uZTQ2NDkyOCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotIAotIGV4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi1pbmRleCBiYzZiNDdhLi4xN2MyZDBmIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1pbmRleCAyMjU3YmUzLi45MTk0Y2NmIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLWluZGV4IGU5Y2ZkYzUuLmU1MWYyNjEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYwotaW5kZXggZjkzOGRiMC4uNGFlZWMxOCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jCi1pbmRleCA0ZTU4NTk5Li5hYzBlNTk5IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLWluZGV4IGI4ZDUwMjQuLjU3M2NmMWUgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotaW5kZXggNDU1YWRhYi4uYjJiMzdmYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1pbmRleCA0NTk1Yjg0Li40YTQzZTE5IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdm9pZCBmdW5jMCAodm9pZCk7Ci0gdm9pZCBmdW5jMSAodm9pZCk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLWluZGV4IDVlM2UxMTguLmFjODRhYjYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZm5vLXBpYyIgfSAqLwotIAotIHZvaWQgKCpkaXNwYXRjaCkgKGNoYXIgKik7Ci0gY2hhciBidWZbMTBdOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi1pbmRleCAyODAxYWE0Li5jZTY1NWU4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkICgqZGlzcGF0Y2gpIChjaGFyICopOwotIGNoYXIgYnVmWzEwXTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotaW5kZXggNzBiNGZiMy4uZDM0NDg1YSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICotKi1saW51eCogJiYgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0gCi0gdm9pZCBiYXIgKGNoYXIgKik7Ci0gY2hhciBidWZbMTBdOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi1pbmRleCAzYmFmMDNlLi4wZTE5ODMwIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgKi0qLWxpbnV4KiAmJiB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZwaWMgLWZuby1wbHQiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZwaWMgLWZuby1wbHQiIH0gKi8KLSAKLSB2b2lkIGJhciAoY2hhciAqKTsKLSBjaGFyIGJ1ZlsxMF07Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMKLWluZGV4IGVkZWIyNjQuLjU3OTQ0MWYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLWluZGV4IDFkMDA0MTMuLmM5MmU2ZjIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMKLWluZGV4IDA2ZWJmMWMuLmQ5OTY0YzIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLWluZGV4IDFjOGY5NDQuLmQ0ZGNhNGQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMKLWluZGV4IDIxNzQwYWMuLjVjMDdlMDIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotaW5kZXggYTc3YzFmNC4uM2ViNDQwNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4iIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jCi1pbmRleCA4NmU5ZmQxLi5hZWNlOTM4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0gCi0gdm9pZCBmdW5jMCAodm9pZCk7Ci0gdm9pZCBmdW5jMSAodm9pZCk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLWluZGV4IDNlY2RlODcuLjNhYmE1ZTggMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMKLWluZGV4IGRmMzJhMTkuLjBmMDE4MWQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMKLWluZGV4IDk1NDA5OTYuLjJlZWY2ZjMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLWluZGV4IGYzZGI2ZTIuLmU4MjVhMTAgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLWluZGV4IDBmNjg3YzMuLmM2ZDc3ZTEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotaW5kZXggYjI3YzZmYy4uNjQ1NDgyNyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jCi1pbmRleCA3NjRhMzc1Li5jNjcwNjZjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0gCi0gdm9pZCBmdW5jMCAodm9pZCk7Ci0gdm9pZCBmdW5jMSAodm9pZCk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uN2QzOTZhMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMS5jCi1AQCAtMCwwICsxLDIyIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoOwotKwotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcWyBcdFxdKCVlYXh8JXJheCksIFxcKCglZXNwfCVyc3ApXFwpIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmtcbiIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kXG4iIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU3ZTYxNmIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTIuYwotQEAgLTAsMCArMSwyMCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2g7Ci0rCi0rdm9pZAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92XFsgXHRcXSglZWF4fCVyYXgpLCBcXCgoJWVzcHwlcnNwKVxcKSIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0zLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41MzIwZTkyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0zLmMKLUBAIC0wLDAgKzEsMTkgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoOwotKwotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KHBhdXNlfHBhdXNlfG5vcCl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMKLWluZGV4IDNhNjcyN2IuLmU2ZmVhODQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstaW5saW5lIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstaW5saW5lIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jCi1pbmRleCBiOGY2ODE4Li5lMjM5ZWM0IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIGV4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYwotaW5kZXggMDFiMGEwMi4uZmEzMTgxMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIGV4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYwotaW5kZXggNGI0OTdiNS4uZmQ1YjQxZiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSBleHRlcm4gaW50IGZvbyAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3JldHVybigidGh1bmsiKSkpOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMKLWluZGV4IDRhZTRjNDQuLmQ2MDYzNzMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotIAotIGV4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYwotaW5kZXggNWI1YmM3Ni4uNzVlNDVlMiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPWtlZXAgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jCi1pbmRleCBmYTI0YTFmLi5kMWRiNDFjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuayAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA3LXg4Ni1BZGQtVi1yZWdpc3Rlci1vcGVyYW5kLW1vZGlmaWVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA3LXg4Ni1BZGQtVi1yZWdpc3Rlci1vcGVyYW5kLW1vZGlmaWVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWM4NGZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwNy14ODYtQWRkLVYtcmVnaXN0ZXItb3BlcmFuZC1tb2RpZmllci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi1Gcm9tIDhmMGVmZDY5MmViOGRiMDZkNmMwMGI3NTljODcyYmQyMTcwYjdmN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDYgSmFuIDIwMTggMjI6Mjk6NTYgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xMl0geDg2OiBBZGQgJ1YnIHJlZ2lzdGVyIG9wZXJhbmQgbW9kaWZpZXIKLQotQWRkICdWJywgYSBzcGVjaWFsIG1vZGlmaWVyIHdoaWNoIHByaW50cyB0aGUgbmFtZSBvZiB0aGUgZnVsbCBpbnRlZ2VyCi1yZWdpc3RlciB3aXRob3V0ICclJy4gIEZvcgotCi1leHRlcm4gdm9pZCAoKmZ1bmNfcCkgKHZvaWQpOwotCi12b2lkCi1mb28gKHZvaWQpCi17Ci0gIGFzbSAoImNhbGwgX194ODZfaW5kaXJlY3RfdGh1bmtfJVYwIiA6IDogImEiIChmdW5jX3ApKTsKLX0KLQotaXQgZ2VuZXJhdGVzOgotCi1mb286Ci0JbW92cQlmdW5jX3AoJXJpcCksICVyYXgKLQljYWxsCV9feDg2X2luZGlyZWN0X3RodW5rX3JheAotCXJldAotCi1nY2MvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKHByaW50X3JlZyk6IFByaW50IHRoZSBuYW1lIG9mIHRoZSBmdWxsCi0JaW50ZWdlciByZWdpc3RlciB3aXRob3V0ICclJy4KLQkoaXg4Nl9wcmludF9vcGVyYW5kKTogSGFuZGxlICdWJy4KLQkgKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50ICdWJyBtb2RpZmllci4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci00LmM6IE5ldyB0ZXN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrKysrLQotIGdjYy9kb2MvZXh0ZW5kLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTQuYyB8IDEzICsrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItNC5jCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotaW5kZXggMzRlMjZhMy4uZWVjYTdlNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC0xNjg2OSw2ICsxNjg2OSw3IEBAIHB1dF9jb25kaXRpb25fY29kZSAoZW51bSBydHhfY29kZSBjb2RlLCBtYWNoaW5lX21vZGUgbW9kZSwgYm9vbCByZXZlcnNlLAotICAgIElmIENPREUgaXMgJ2gnLCBwcmV0ZW5kIHRoZSByZWcgaXMgdGhlICdoaWdoJyBieXRlIHJlZ2lzdGVyLgotICAgIElmIENPREUgaXMgJ3knLCBwcmludCAic3QoMCkiIGluc3RlYWQgb2YgInN0IiwgaWYgdGhlIHJlZyBpcyBzdGFjayBvcC4KLSAgICBJZiBDT0RFIGlzICdkJywgZHVwbGljYXRlIHRoZSBvcGVyYW5kIGZvciBBVlggaW5zdHJ1Y3Rpb24uCi0rICAgSWYgQ09ERSBpcyAnVicsIHByaW50IG5ha2VkIGZ1bGwgaW50ZWdlciByZWdpc3RlciBuYW1lIHdpdGhvdXQgJS4KLSAgKi8KLSAKLSB2b2lkCi1AQCAtMTY4NzksNyArMTY4ODAsNyBAQCBwcmludF9yZWcgKHJ0eCB4LCBpbnQgY29kZSwgRklMRSAqZmlsZSkKLSAgIHVuc2lnbmVkIGludCByZWdubzsKLSAgIGJvb2wgZHVwbGljYXRlZDsKLSAKLS0gIGlmIChBU1NFTUJMRVJfRElBTEVDVCA9PSBBU01fQVRUKQotKyAgaWYgKEFTU0VNQkxFUl9ESUFMRUNUID09IEFTTV9BVFQgJiYgY29kZSAhPSAnVicpCi0gICAgIHB1dGMgKCclJywgZmlsZSk7Ci0gCi0gICBpZiAoeCA9PSBwY19ydHgpCi1AQCAtMTY5MjIsNiArMTY5MjMsMTQgQEAgcHJpbnRfcmVnIChydHggeCwgaW50IGNvZGUsIEZJTEUgKmZpbGUpCi0gCSAgICAgICYmIHJlZ25vICE9IEZQU1JfUkVHCi0gCSAgICAgICYmIHJlZ25vICE9IEZQQ1JfUkVHKTsKLSAKLSsgIGlmIChjb2RlID09ICdWJykKLSsgICAgewotKyAgICAgIGlmIChHRU5FUkFMX1JFR05PX1AgKHJlZ25vKSkKLSsJbXNpemUgPSBHRVRfTU9ERV9TSVpFICh3b3JkX21vZGUpOwotKyAgICAgIGVsc2UKLSsJZXJyb3IgKCInVicgbW9kaWZpZXIgb24gbm9uLWludGVnZXIgcmVnaXN0ZXIiKTsKLSsgICAgfQotKwotICAgZHVwbGljYXRlZCA9IGNvZGUgPT0gJ2QnICYmIFRBUkdFVF9BVlg7Ci0gCi0gICBzd2l0Y2ggKG1zaXplKQotQEAgLTE3MDM1LDYgKzE3MDQ0LDcgQEAgcHJpbnRfcmVnIChydHggeCwgaW50IGNvZGUsIEZJTEUgKmZpbGUpCi0gICAgJiAtLSBwcmludCBzb21lIGluLXVzZSBsb2NhbC1keW5hbWljIHN5bWJvbCBuYW1lLgotICAgIEggLS0gcHJpbnQgYSBtZW1vcnkgYWRkcmVzcyBvZmZzZXQgYnkgODsgdXNlZCBmb3Igc3NlIGhpZ2gtcGFydHMKLSAgICBZIC0tIHByaW50IGNvbmRpdGlvbiBmb3IgWE9QIHBjb20qIGluc3RydWN0aW9uLgotKyAgIFYgLS0gcHJpbnQgbmFrZWQgZnVsbCBpbnRlZ2VyIHJlZ2lzdGVyIG5hbWUgd2l0aG91dCAlLgotICAgICsgLS0gcHJpbnQgYSBicmFuY2ggaGludCBhcyAnY3MnIG9yICdkcycgcHJlZml4Ci0gICAgOyAtLSBwcmludCBhIHNlbWljb2xvbiAoYWZ0ZXIgcHJlZml4ZXMgZHVlIHRvIGJ1ZyBpbiBvbGRlciBnYXMpLgotICAgIH4gLS0gcHJpbnQgImkiIGlmIFRBUkdFVF9BVlgyLCAiZiIgb3RoZXJ3aXNlLgotQEAgLTE3MjU5LDYgKzE3MjY5LDcgQEAgaXg4Nl9wcmludF9vcGVyYW5kIChGSUxFICpmaWxlLCBydHggeCwgaW50IGNvZGUpCi0gCWNhc2UgJ1gnOgotIAljYXNlICdQJzoKLSAJY2FzZSAncCc6Ci0rCWNhc2UgJ1YnOgotIAkgIGJyZWFrOwotIAotIAljYXNlICdzJzoKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2V4dGVuZC50ZXhpIGIvZ2NjL2RvYy9leHRlbmQudGV4aQotaW5kZXggMmNiNmJkMS4uNzZiYTFkNCAxMDA2NDQKLS0tLSBhL2djYy9kb2MvZXh0ZW5kLnRleGkKLSsrKyBiL2djYy9kb2MvZXh0ZW5kLnRleGkKLUBAIC04NTExLDYgKzg1MTEsOSBAQCBUaGUgdGFibGUgYmVsb3cgc2hvd3MgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIG1vZGlmaWVycyBhbmQgdGhlaXIgZWZmZWN0cy4KLSBAdGFiIEBjb2RlezJ9Ci0gQGVuZCBtdWx0aXRhYmxlCi0gCi0rQGNvZGV7Vn0gaXMgYSBzcGVjaWFsIG1vZGlmaWVyIHdoaWNoIHByaW50cyB0aGUgbmFtZSBvZiB0aGUgZnVsbCBpbnRlZ2VyCi0rcmVnaXN0ZXIgd2l0aG91dCBAY29kZXslfS4KLSsKLSBAYW5jaG9ye3g4NmZsb2F0aW5ncG9pbnRhc21vcGVyYW5kc30KLSBAc3Vic3Vic2VjdGlvbiB4ODYgRmxvYXRpbmctUG9pbnQgQGNvZGV7YXNtfSBPcGVyYW5kcwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmYwY2Q5YjcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTQuYwotQEAgLTAsMCArMSwxMyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9a2VlcCAtZm5vLXBpYyIgfSAqLwotKwotK2V4dGVybiB2b2lkICgqZnVuY19wKSAodm9pZCk7Ci0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rICBhc20oImNhbGwgX194ODZfaW5kaXJlY3RfdGh1bmtfJVYwIiA6IDogImEiIChmdW5jX3ApKTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19lYXgiIHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX3JheCIgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDgteDg2LURpc2FsbG93LW1pbmRpcmVjdC1icmFuY2gtbWZ1bmN0aW9uLXJldHVybi13aXRoLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwOC14ODYtRGlzYWxsb3ctbWluZGlyZWN0LWJyYW5jaC1tZnVuY3Rpb24tcmV0dXJuLXdpdGgtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGE1ODEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwOC14ODYtRGlzYWxsb3ctbWluZGlyZWN0LWJyYW5jaC1tZnVuY3Rpb24tcmV0dXJuLXdpdGgtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzA0ICswLDAgQEAKLUZyb20gOGUwZDliZjkzZTJlMmVjMDNjNTQ0NTcyYWVmNGIwM2E4ZTcwOTBmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJILkouIEx1IiA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTMgSmFuIDIwMTggMTg6MDE6NTQgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xMl0geDg2OiBEaXNhbGxvdyAtbWluZGlyZWN0LWJyYW5jaD0vLW1mdW5jdGlvbi1yZXR1cm49Ci0gd2l0aCAtbWNtb2RlbD1sYXJnZQotCi1TaW5jZSB0aGUgdGh1bmsgZnVuY3Rpb24gbWF5IG5vdCBiZSByZWFjaGFibGUgaW4gbGFyZ2UgY29kZSBtb2RlbCwKLS1tY21vZGVsPWxhcmdlIGlzIGluY29tcGF0aWJsZSB3aXRoIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLAotLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuLCAtbWZ1bmN0aW9uLXJldHVybj10aHVuayBhbmQKLS1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybi4gIElzc3VlIGFuIGVycm9yIHdoZW4gdGhleSBhcmUgdXNlZCB3aXRoCi0tbWNtb2RlbD1sYXJnZS4KLQotZ2NjLwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3NldF9pbmRpcmVjdF9icmFuY2hfdHlwZSk6IERpc2FsbG93Ci0JLW1jbW9kZWw9bGFyZ2Ugd2l0aCAtbWluZGlyZWN0LWJyYW5jaD10aHVuaywKLQktbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4sIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIGFuZAotCS1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybi4KLQkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW1jbW9kZWw9bGFyZ2UgaXMgaW5jb21wYXRpYmxlIHdpdGgKLQktbWluZGlyZWN0LWJyYW5jaD10aHVuaywgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuLAotCS1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIGFuZCAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1leHRlcm4uCi0KLWdjYy90ZXN0c3VpdGUvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMTAuYzogTmV3IHRlc3QuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstOC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay05LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMTAuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTkuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE3LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTkuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIwLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMS5jOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKwotIGdjYy9kb2MvaW52b2tlLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEgKysrKysrKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMTAuYyAgfCAgNyArKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay04LmMgICB8ICA3ICsrKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTkuYyAgIHwgIDcgKysrKysrCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEwLmMgICAgICAgfCAgOSArKysrKysrKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMS5jICAgICAgIHwgIDkgKysrKysrKysKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOS5jICAgICAgICB8ICA5ICsrKysrKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE3LmMgICAgICAgfCAgNyArKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTguYyAgICAgICB8ICA4ICsrKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTkuYyAgICAgICB8ICA4ICsrKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjAuYyAgICAgICB8ICA5ICsrKysrKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIxLmMgICAgICAgfCAgOSArKysrKysrKwotIDEzIGZpbGVzIGNoYW5nZWQsIDEyNiBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEwLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstOC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTkuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEwLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMS5jCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotaW5kZXggZWVjYTdlNS4uOWMwMzhiZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC02Mzg5LDYgKzYzODksMTkgQEAgaXg4Nl9zZXRfaW5kaXJlY3RfYnJhbmNoX3R5cGUgKHRyZWUgZm5kZWNsKQotIAl9Ci0gICAgICAgZWxzZQotIAljZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9IGl4ODZfaW5kaXJlY3RfYnJhbmNoOwotKwotKyAgICAgIC8qIC1tY21vZGVsPWxhcmdlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsKLSsJIG5vciAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4uICAqLwotKyAgICAgIGlmICgoaXg4Nl9jbW9kZWwgPT0gQ01fTEFSR0UgfHwgaXg4Nl9jbW9kZWwgPT0gQ01fTEFSR0VfUElDKQotKwkgICYmICgoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSsJICAgICAgID09IGluZGlyZWN0X2JyYW5jaF90aHVua19leHRlcm4pCi0rCSAgICAgIHx8IChjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotKwkJICA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmspKSkKLSsJZXJyb3IgKCIlPC1taW5kaXJlY3QtYnJhbmNoPSVzJT4gYW5kICU8LW1jbW9kZWw9bGFyZ2UlPiBhcmUgbm90ICIKLSsJICAgICAgICJjb21wYXRpYmxlIiwKLSsJICAgICAgICgoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSsJCSA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmtfZXh0ZXJuKQotKwkJPyAidGh1bmstZXh0ZXJuIiA6ICJ0aHVuayIpKTsKLSAgICAgfQotIAotICAgaWYgKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlID09IGluZGlyZWN0X2JyYW5jaF91bnNldCkKLUBAIC02NDE0LDYgKzY0MjcsMTkgQEAgaXg4Nl9zZXRfaW5kaXJlY3RfYnJhbmNoX3R5cGUgKHRyZWUgZm5kZWNsKQotIAl9Ci0gICAgICAgZWxzZQotIAljZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZSA9IGl4ODZfZnVuY3Rpb25fcmV0dXJuOwotKwotKyAgICAgIC8qIC1tY21vZGVsPWxhcmdlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsKLSsJIG5vciAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1leHRlcm4uICAqLwotKyAgICAgIGlmICgoaXg4Nl9jbW9kZWwgPT0gQ01fTEFSR0UgfHwgaXg4Nl9jbW9kZWwgPT0gQ01fTEFSR0VfUElDKQotKwkgICYmICgoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUKLSsJICAgICAgID09IGluZGlyZWN0X2JyYW5jaF90aHVua19leHRlcm4pCi0rCSAgICAgIHx8IChjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZQotKwkJICA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmspKSkKLSsJZXJyb3IgKCIlPC1tZnVuY3Rpb24tcmV0dXJuPSVzJT4gYW5kICU8LW1jbW9kZWw9bGFyZ2UlPiBhcmUgbm90ICIKLSsJICAgICAgICJjb21wYXRpYmxlIiwKLSsJICAgICAgICgoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUKLSsJCSA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmtfZXh0ZXJuKQotKwkJPyAidGh1bmstZXh0ZXJuIiA6ICJ0aHVuayIpKTsKLSAgICAgfQotIH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggYWQ5ZjI5NS4uNDhlODI3ZiAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0yNDIzMCw2ICsyNDIzMCwxMSBAQCB0byBleHRlcm5hbCBjYWxsIGFuZCByZXR1cm4gdGh1bmsgcHJvdmlkZWQgaW4gYSBzZXBhcmF0ZSBvYmplY3QgZmlsZS4KLSBZb3UgY2FuIGNvbnRyb2wgdGhpcyBiZWhhdmlvciBmb3IgYSBzcGVjaWZpYyBmdW5jdGlvbiBieSB1c2luZyB0aGUKLSBmdW5jdGlvbiBhdHRyaWJ1dGUgQGNvZGV7aW5kaXJlY3RfYnJhbmNofS4gIEB4cmVme0Z1bmN0aW9uIEF0dHJpYnV0ZXN9LgotIAotK05vdGUgdGhhdCBAb3B0aW9uey1tY21vZGVsPWxhcmdlfSBpcyBpbmNvbXBhdGlibGUgd2l0aAotK0BvcHRpb257LW1pbmRpcmVjdC1icmFuY2g9dGh1bmt9IG5vcgotK0BvcHRpb257LW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJufSBzaW5jZSB0aGUgdGh1bmsgZnVuY3Rpb24gbWF5Ci0rbm90IGJlIHJlYWNoYWJsZSBpbiBsYXJnZSBjb2RlIG1vZGVsLgotKwotIEBpdGVtIC1tZnVuY3Rpb24tcmV0dXJuPUB2YXJ7Y2hvaWNlfQotIEBvcGluZGV4IC1tZnVuY3Rpb24tcmV0dXJuCi0gQ29udmVydCBmdW5jdGlvbiByZXR1cm4gd2l0aCBAdmFye2Nob2ljZX0uICBUaGUgZGVmYXVsdCBpcyBAc2FtcHtrZWVwfSwKLUBAIC0yNDI0MSw2ICsyNDI0NiwxMiBAQCBvYmplY3QgZmlsZS4gIFlvdSBjYW4gY29udHJvbCB0aGlzIGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5Ci0gdXNpbmcgdGhlIGZ1bmN0aW9uIGF0dHJpYnV0ZSBAY29kZXtmdW5jdGlvbl9yZXR1cm59LgotIEB4cmVme0Z1bmN0aW9uIEF0dHJpYnV0ZXN9LgotIAotK05vdGUgdGhhdCBAb3B0aW9uey1tY21vZGVsPWxhcmdlfSBpcyBpbmNvbXBhdGlibGUgd2l0aAotK0BvcHRpb257LW1mdW5jdGlvbi1yZXR1cm49dGh1bmt9IG5vcgotK0BvcHRpb257LW1mdW5jdGlvbi1yZXR1cm49dGh1bmstZXh0ZXJufSBzaW5jZSB0aGUgdGh1bmsgZnVuY3Rpb24gbWF5Ci0rbm90IGJlIHJlYWNoYWJsZSBpbiBsYXJnZSBjb2RlIG1vZGVsLgotKwotKwotIEBpdGVtIC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyCi0gQG9waW5kZXggLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIKLSBGb3JjZSBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHZpYSByZWdpc3Rlci4KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMTAuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmEwNjc0YmQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEwLmMKLUBAIC0wLDAgKzEsNyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWNtb2RlbD1sYXJnZSIgfSAqLwotKwotK3ZvaWQKLStiYXIgKHZvaWQpCi0rewotK30KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay04LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43YTgwYTg5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay04LmMKLUBAIC0wLDAgKzEsNyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWluZGlyZWN0LWJyYW5jaD10aHVuaycgYW5kICctbWNtb2RlbD1sYXJnZScgYXJlIG5vdCBjb21wYXRpYmxlIiB9ICovCi0rfQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTkuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ0ZDQ1YzUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTkuYwotQEAgLTAsMCArMSw3IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4nIGFuZCAnLW1jbW9kZWw9bGFyZ2UnIGFyZSBub3QgY29tcGF0aWJsZSIgfSAqLwotK30KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEwLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zYTJhZWFkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEwLmMKLUBAIC0wLDAgKzEsOSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD1rZWVwIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1jbW9kZWw9bGFyZ2UiIH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZQSUMiIHsgdGFyZ2V0IGZwaWMgfSB9ICovCi0rCi0rX19hdHRyaWJ1dGVfXyAoKGluZGlyZWN0X2JyYW5jaCgidGh1bmstZXh0ZXJuIikpKQotK3ZvaWQKLStiYXIgKHZvaWQpCi0reyAvKiB7IGRnLWVycm9yICInLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuJyBhbmQgJy1tY21vZGVsPWxhcmdlJyBhcmUgbm90IGNvbXBhdGlibGUiIH0gKi8KLSt9Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOGU1MmYwMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMS5jCi1AQCAtMCwwICsxLDkgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9a2VlcCAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mUElDIiB7IHRhcmdldCBmcGljIH0gfSAqLwotKwotK19fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goInRodW5rLWlubGluZSIpKSkKLSt2b2lkCi0rYmFyICh2b2lkKQotK3sKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTkuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmJkYWE0ZjYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOS5jCi1AQCAtMCwwICsxLDkgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9a2VlcCAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mUElDIiB7IHRhcmdldCBmcGljIH0gfSAqLwotKwotK19fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goInRodW5rIikpKQotK3ZvaWQKLStiYXIgKHZvaWQpCi0reyAvKiB7IGRnLWVycm9yICInLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsnIGFuZCAnLW1jbW9kZWw9bGFyZ2UnIGFyZSBub3QgY29tcGF0aWJsZSIgfSAqLwotK30KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMDYwNWUyYwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE3LmMKLUBAIC0wLDAgKzEsNyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuayAtbWluZGlyZWN0LWJyYW5jaD1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWZ1bmN0aW9uLXJldHVybj10aHVuaycgYW5kICctbWNtb2RlbD1sYXJnZScgYXJlIG5vdCBjb21wYXRpYmxlIiB9ICovCi0rfQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE4LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zMDcwMTlkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTguYwotQEAgLTAsMCArMSw4IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybiAtbWluZGlyZWN0LWJyYW5jaD1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mUElDIiB7IHRhcmdldCBmcGljIH0gfSAqLwotKwotK3ZvaWQKLStiYXIgKHZvaWQpCi0reyAvKiB7IGRnLWVycm9yICInLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstZXh0ZXJuJyBhbmQgJy1tY21vZGVsPWxhcmdlJyBhcmUgbm90IGNvbXBhdGlibGUiIH0gKi8KLSt9Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE5LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTkuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjc3MjYxN2YKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOS5jCi1AQCAtMCwwICsxLDggQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rCi0rX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3JldHVybigidGh1bmsiKSkpCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWZ1bmN0aW9uLXJldHVybj10aHVuaycgYW5kICctbWNtb2RlbD1sYXJnZScgYXJlIG5vdCBjb21wYXRpYmxlIiB9ICovCi0rfQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIwLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xZTlmOWJkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjAuYwotQEAgLTAsMCArMSw5IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9a2VlcCAtbWNtb2RlbD1sYXJnZSIgfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZlBJQyIgeyB0YXJnZXQgZnBpYyB9IH0gKi8KLSsKLStfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJ0aHVuay1leHRlcm4iKSkpCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWZ1bmN0aW9uLXJldHVybj10aHVuay1leHRlcm4nIGFuZCAnLW1jbW9kZWw9bGFyZ2UnIGFyZSBub3QgY29tcGF0aWJsZSIgfSAqLwotK30KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZWVhMDdmNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIxLmMKLUBAIC0wLDAgKzEsOSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPWtlZXAgLW1jbW9kZWw9bGFyZ2UiIH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZQSUMiIHsgdGFyZ2V0IGZwaWMgfSB9ICovCi0rCi0rX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3JldHVybigidGh1bmstaW5saW5lIikpKQotK3ZvaWQKLStiYXIgKHZvaWQpCi0rewotK30KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA5LVVzZS1JTlZBTElEX1JFR05VTS1pbi1pbmRpcmVjdC10aHVuay1wcm9jZXNzaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA5LVVzZS1JTlZBTElEX1JFR05VTS1pbi1pbmRpcmVjdC10aHVuay1wcm9jZXNzaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzY0YTJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwOS1Vc2UtSU5WQUxJRF9SRUdOVU0taW4taW5kaXJlY3QtdGh1bmstcHJvY2Vzc2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi1Gcm9tIDNlZmYyYWRhZGEyYjE2NjdiMGU3NjQ5NmZhNTU5ZTBjMjQ4ZWNkODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiB1cm9zIDx1cm9zQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFRodSwgMjUgSmFuIDIwMTggMTk6Mzk6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8xMl0gVXNlIElOVkFMSURfUkVHTlVNIGluIGluZGlyZWN0IHRodW5rIHByb2Nlc3NpbmcKLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE3ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGluZGlyZWN0X3RodW5rX25hbWUpOiBEZWNsYXJlIHJlZ25vCi0JYXMgdW5zaWduZWQgaW50LiAgQ29tcGFyZSByZWdubyB3aXRoIElOVkFMSURfUkVHTlVNLgotCShvdXRwdXRfaW5kaXJlY3RfdGh1bmspOiBEaXR0by4KLQkob3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uKTogRGl0dG8uCi0JKGl4ODZfY29kZV9lbmQpOiBEZWNsYXJlIHJlZ25vIGFzIHVuc2lnbmVkIGludC4gIFVzZSBJTlZBTElEX1JFR05VTQotCWluIHRoZSBjYWxsIHRvIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbi4KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTctYnJhbmNoQDI1NzA2NyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgfCAzMCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotaW5kZXggOWMwMzhiZS4uNDAxMjY1NyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC0xMTA4NywxNiArMTEwODcsMTYgQEAgc3RhdGljIGludCBpbmRpcmVjdF90aHVua3NfYm5kX3VzZWQ7Ci0gLyogRmlsbHMgaW4gdGhlIGxhYmVsIG5hbWUgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGluZGlyZWN0IHRodW5rLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLWluZGlyZWN0X3RodW5rX25hbWUgKGNoYXIgbmFtZVszMl0sIGludCByZWdubywgYm9vbCBuZWVkX2JuZF9wLAotLQkJICAgICBib29sIHJldF9wKQotK2luZGlyZWN0X3RodW5rX25hbWUgKGNoYXIgbmFtZVszMl0sIHVuc2lnbmVkIGludCByZWdubywKLSsJCSAgICAgYm9vbCBuZWVkX2JuZF9wLCBib29sIHJldF9wKQotIHsKLS0gIGlmIChyZWdubyA+PSAwICYmIHJldF9wKQotKyAgaWYgKHJlZ25vICE9IElOVkFMSURfUkVHTlVNICYmIHJldF9wKQotICAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0gCi0gICBpZiAoVVNFX0hJRERFTl9MSU5LT05DRSkKLSAgICAgewotICAgICAgIGNvbnN0IGNoYXIgKmJuZCA9IG5lZWRfYm5kX3AgPyAiX2JuZCIgOiAiIjsKLS0gICAgICBpZiAocmVnbm8gPj0gMCkKLSsgICAgICBpZiAocmVnbm8gIT0gSU5WQUxJRF9SRUdOVU0pCi0gCXsKLSAJICBjb25zdCBjaGFyICpyZWdfcHJlZml4OwotIAkgIGlmIChMRUdBQ1lfSU5UX1JFR05PX1AgKHJlZ25vKSkKLUBAIC0xMTExNCw3ICsxMTExNCw3IEBAIGluZGlyZWN0X3RodW5rX25hbWUgKGNoYXIgbmFtZVszMl0sIGludCByZWdubywgYm9vbCBuZWVkX2JuZF9wLAotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBpZiAocmVnbm8gPj0gMCkKLSsgICAgICBpZiAocmVnbm8gIT0gSU5WQUxJRF9SRUdOVU0pCi0gCXsKLSAJICBpZiAobmVlZF9ibmRfcCkKLSAJICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobmFtZSwgIkxJVEJSIiwgcmVnbm8pOwotQEAgLTExMTY2LDcgKzExMTY2LDcgQEAgaW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgaW50IHJlZ25vLCBib29sIG5lZWRfYm5kX3AsCi0gICovCi0gCi0gc3RhdGljIHZvaWQKLS1vdXRwdXRfaW5kaXJlY3RfdGh1bmsgKGJvb2wgbmVlZF9ibmRfcCwgaW50IHJlZ25vKQotK291dHB1dF9pbmRpcmVjdF90aHVuayAoYm9vbCBuZWVkX2JuZF9wLCB1bnNpZ25lZCBpbnQgcmVnbm8pCi0gewotICAgY2hhciBpbmRpcmVjdGxhYmVsMVszMl07Ci0gICBjaGFyIGluZGlyZWN0bGFiZWwyWzMyXTsKLUBAIC0xMTE5Niw3ICsxMTE5Niw3IEBAIG91dHB1dF9pbmRpcmVjdF90aHVuayAoYm9vbCBuZWVkX2JuZF9wLCBpbnQgcmVnbm8pCi0gCi0gICBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMIChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwyKTsKLSAKLS0gIGlmIChyZWdubyA+PSAwKQotKyAgaWYgKHJlZ25vICE9IElOVkFMSURfUkVHTlVNKQotICAgICB7Ci0gICAgICAgLyogTU9WLiAgKi8KLSAgICAgICBydHggeG9wc1syXTsKLUBAIC0xMTIyMCwxMiArMTEyMjAsMTIgQEAgb3V0cHV0X2luZGlyZWN0X3RodW5rIChib29sIG5lZWRfYm5kX3AsIGludCByZWdubykKLSB9Ci0gCi0gLyogT3V0cHV0IGEgZnVudGlvbiB3aXRoIGEgY2FsbCBhbmQgcmV0dXJuIHRodW5rIGZvciBpbmRpcmVjdCBicmFuY2guCi0tICAgSWYgQk5EX1AgaXMgdHJ1ZSwgdGhlIEJORCBwcmVmaXggaXMgbmVlZGVkLiAgIElmIFJFR05PICE9IC0xLCAgdGhlCi0tICAgZnVuY3Rpb24gYWRkcmVzcyBpcyBpbiBSRUdOTy4gIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIGFkZHJlc3MgaXMKLSsgICBJZiBCTkRfUCBpcyB0cnVlLCB0aGUgQk5EIHByZWZpeCBpcyBuZWVkZWQuICBJZiBSRUdOTyAhPSBJTlZBTElEX1JFR05VTSwKLSsgICB0aGUgZnVuY3Rpb24gYWRkcmVzcyBpcyBpbiBSRUdOTy4gIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIGFkZHJlc3MgaXMKLSAgICBvbiB0aGUgdG9wIG9mIHN0YWNrLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLW91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAoYm9vbCBuZWVkX2JuZF9wLCBpbnQgcmVnbm8pCi0rb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChib29sIG5lZWRfYm5kX3AsIHVuc2lnbmVkIGludCByZWdubykKLSB7Ci0gICBjaGFyIG5hbWVbMzJdOwotICAgdHJlZSBkZWNsOwotQEAgLTExMjc0LDcgKzExMjc0LDcgQEAgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChib29sIG5lZWRfYm5kX3AsIGludCByZWdubykKLSAJQVNNX09VVFBVVF9MQUJFTCAoYXNtX291dF9maWxlLCBuYW1lKTsKLSAgICAgICB9Ci0gCi0tICBpZiAocmVnbm8gPCAwKQotKyAgaWYgKHJlZ25vID09IElOVkFMSURfUkVHTlVNKQotICAgICB7Ci0gICAgICAgLyogQ3JlYXRlIGFsaWFzIGZvciBfX3g4Ni5yZXR1cm5fdGh1bmsvX194ODYucmV0dXJuX3RodW5rX2JuZC4gICovCi0gICAgICAgY2hhciBhbGlhc1szMl07Ci1AQCAtMTEzNDgsMTYgKzExMzQ4LDE2IEBAIHN0YXRpYyB2b2lkCi0gaXg4Nl9jb2RlX2VuZCAodm9pZCkKLSB7Ci0gICBydHggeG9wc1syXTsKLS0gIGludCByZWdubzsKLSsgIHVuc2lnbmVkIGludCByZWdubzsKLSAKLSAgIGlmIChpbmRpcmVjdF90aHVua19uZWVkZWQpCi0tICAgIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAoZmFsc2UsIC0xKTsKLSsgICAgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChmYWxzZSwgSU5WQUxJRF9SRUdOVU0pOwotICAgaWYgKGluZGlyZWN0X3RodW5rX2JuZF9uZWVkZWQpCi0tICAgIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAodHJ1ZSwgLTEpOwotKyAgICBvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKHRydWUsIElOVkFMSURfUkVHTlVNKTsKLSAKLSAgIGZvciAocmVnbm8gPSBGSVJTVF9SRVhfSU5UX1JFRzsgcmVnbm8gPD0gTEFTVF9SRVhfSU5UX1JFRzsgcmVnbm8rKykKLSAgICAgewotLSAgICAgIGludCBpID0gcmVnbm8gLSBGSVJTVF9SRVhfSU5UX1JFRyArIExBU1RfSU5UX1JFRyArIDE7Ci0rICAgICAgdW5zaWduZWQgaW50IGkgPSByZWdubyAtIEZJUlNUX1JFWF9JTlRfUkVHICsgTEFTVF9JTlRfUkVHICsgMTsKLSAgICAgICBpZiAoKGluZGlyZWN0X3RodW5rc191c2VkICYgKDEgPDwgaSkpKQotIAlvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKGZhbHNlLCByZWdubyk7Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAxMC1pMzg2LVBhc3MtSU5WQUxJRF9SRUdOVU0tYXMtaW52YWxpZC1yZWdpc3Rlci1udW1iZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTAtaTM4Ni1QYXNzLUlOVkFMSURfUkVHTlVNLWFzLWludmFsaWQtcmVnaXN0ZXItbnVtYmVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODBkNzQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAxMC1pMzg2LVBhc3MtSU5WQUxJRF9SRUdOVU0tYXMtaW52YWxpZC1yZWdpc3Rlci1udW1iZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGM0MzAwZDlhZDY4M2U2OTNjOTBkMDJkNGYxYjEzMTgzYmYyZDRhY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBoamwgPGhqbEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBGcmksIDIgRmViIDIwMTggMTY6NDc6MDIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xMl0gaTM4NjogUGFzcyBJTlZBTElEX1JFR05VTSBhcyBpbnZhbGlkIHJlZ2lzdGVyIG51bWJlcgotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4pOiBQYXNzCi0JSU5WQUxJRF9SRUdOVU0sIGluc3RlYWQgb2YgLTEsIGFzIGludmFsaWQgcmVnaXN0ZXIgbnVtYmVyIHRvCi0JaW5kaXJlY3RfdGh1bmtfbmFtZSBhbmQgb3V0cHV0X2luZGlyZWN0X3RodW5rLgotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtNy1icmFuY2hAMjU3MzQxIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IDQwMTI2NTcuLjY2NTAyZWUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMjgwNTYsNyArMjgwNTYsOCBAQCBpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4gKGJvb2wgbG9uZ19wKQotIAl7Ci0gCSAgYm9vbCBuZWVkX3RodW5rID0gKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlCi0gCQkJICAgICA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmspOwotLQkgIGluZGlyZWN0X3RodW5rX25hbWUgKHRodW5rX25hbWUsIC0xLCBuZWVkX2JuZF9wLCB0cnVlKTsKLSsJICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lLCBJTlZBTElEX1JFR05VTSwgbmVlZF9ibmRfcCwKLSsJCQkgICAgICAgdHJ1ZSk7Ci0gCSAgaWYgKG5lZWRfYm5kX3ApCi0gCSAgICB7Ci0gCSAgICAgIGluZGlyZWN0X3RodW5rX2JuZF9uZWVkZWQgfD0gbmVlZF90aHVuazsKLUBAIC0yODA2OSw3ICsyODA3MCw3IEBAIGl4ODZfb3V0cHV0X2Z1bmN0aW9uX3JldHVybiAoYm9vbCBsb25nX3ApCi0gCSAgICB9Ci0gCX0KLSAgICAgICBlbHNlCi0tCW91dHB1dF9pbmRpcmVjdF90aHVuayAobmVlZF9ibmRfcCwgLTEpOwotKwlvdXRwdXRfaW5kaXJlY3RfdGh1bmsgKG5lZWRfYm5kX3AsIElOVkFMSURfUkVHTlVNKTsKLSAKLSAgICAgICByZXR1cm4gIiI7Ci0gICAgIH0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDExLWkzODYtVXBkYXRlLW1mdW5jdGlvbi1yZXR1cm4tZm9yLXJldHVybi13aXRoLXBvcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAxMS1pMzg2LVVwZGF0ZS1tZnVuY3Rpb24tcmV0dXJuLWZvci1yZXR1cm4td2l0aC1wb3AucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiMDM2ZmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDExLWkzODYtVXBkYXRlLW1mdW5jdGlvbi1yZXR1cm4tZm9yLXJldHVybi13aXRoLXBvcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1MyArMCwwIEBACi1Gcm9tIGIzYTIyNjljNzg4NDM3OGE5YWZkMzk0YWM3ZTY2OWFhYjA0NDNiNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBoamwgPGhqbEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE1OjI5OjMwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTJdIGkzODY6IFVwZGF0ZSAtbWZ1bmN0aW9uLXJldHVybj0gZm9yIHJldHVybiB3aXRoIHBvcAotCi1XaGVuIC1tZnVuY3Rpb24tcmV0dXJuPSBpcyB1c2VkLCBzaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCBzaG91bGQgcG9wCi1yZXR1cm4gYWRkcmVzcyBpbnRvIEVDWCByZWdpc3RlciwgYWRqdXN0IHN0YWNrIGJ5IGJ5dGVzIHRvIHBvcCBmcm9tIHN0YWNrCi1hbmQganVtcCB0byB0aGUgcmV0dXJuIHRodW5rIHZpYSBFQ1ggcmVnaXN0ZXIuCi0KLVJldmlzaW9uIDI1Nzk5MiByZW1vdmVkIHRoZSBib29sIGFyZ3VtZW50IGZyb20gaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wLgotVXBkYXRlIGNvbW1lbnRzIHRvIHJlZmxlY3QgaXQuCi0KLVRlc3RlZCBvbiBpNjg2IGFuZCB4ODYtNjQuCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCk6IFVwZGF0ZSBjb21tZW50cy4KLQotCVBSIHRhcmdldC84NDUzMAotCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wKTogUmVtb3ZlCi0JdGhlIGJvb2wgYXJndW1lbnQuCi0JKGl4ODZfb3V0cHV0X2luZGlyZWN0X2Z1bmN0aW9uX3JldHVybik6IE5ldyBwcm90b3R5cGUuCi0JKGl4ODZfc3BsaXRfc2ltcGxlX3JldHVybl9wb3BfaW50ZXJuYWwpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaW5kaXJlY3RfcmV0dXJuX3ZpYV9jeCk6IE5ldy4KLQkoaW5kaXJlY3RfcmV0dXJuX3ZpYV9jeF9ibmQpOiBMaWtld2lzZS4KLQkoaW5kaXJlY3RfdGh1bmtfbmFtZSk6IEhhbmRsZSByZXR1cm4gdmEgQ1hfUkVHLgotCShvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24pOiBDcmVhdGUgYWxpYXMgZm9yCi0JX194ODZfcmV0dXJuX3RodW5rX1tyZV1jeCBhbmQgX194ODZfcmV0dXJuX3RodW5rX1tyZV1jeF9ibmQuCi0JKGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCk6IFJlbW92ZSB0aGUgYm9vbCBhcmd1bWVudC4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3RfZnVuY3Rpb25fcmV0dXJuKTogTmV3IGZ1bmN0aW9uLgotCShpeDg2X3NwbGl0X3NpbXBsZV9yZXR1cm5fcG9wX2ludGVybmFsKTogTGlrZXdpc2UuCi0JKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqaW5kaXJlY3RfanVtcCk6IERvbid0IHBhc3MgZmFsc2UKLQl0byBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAuCi0JKCp0YWJsZWp1bXBfMSk6IExpa2V3aXNlLgotCShzaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCk6IENoYW5nZSBpdCB0byBkZWZpbmVfaW5zbl9hbmRfc3BsaXQuCi0JQ2FsbCBpeDg2X3NwbGl0X3NpbXBsZV9yZXR1cm5fcG9wX2ludGVybmFsIHRvIHNwbGl0IGl0IGZvcgotCS1tZnVuY3Rpb24tcmV0dXJuPS4KLQkoc2ltcGxlX3JldHVybl9pbmRpcmVjdF9pbnRlcm5hbCk6IENhbGwKLQlpeDg2X291dHB1dF9pbmRpcmVjdF9mdW5jdGlvbl9yZXR1cm4gaW5zdGVhZCBvZgotCWl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcC4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQlQUiB0YXJnZXQvODQ1MzAKLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjIuYzogTmV3IHRlc3QuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIzLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI2LmM6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggICAgICAgICAgICAgICAgfCAgIDQgKy0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgICAgICAgICAgICAgICAgICB8IDEyNyArKysrKysrKysrKysrKysrKysrKysrKy0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5tZCAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjIuYyB8ICAxNSArKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIzLmMgfCAgMTUgKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNC5jIHwgIDE1ICsrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjUuYyB8ICAxNSArKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI2LmMgfCAgNDAgKysrKysrKysrCi0gOCBmaWxlcyBjaGFuZ2VkLCAyMjIgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNi5jCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCBiL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oCi1pbmRleCA2MjBkNzBlLi5jN2EwY2NiNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAotQEAgLTMxMSw4ICszMTEsMTAgQEAgZXh0ZXJuIGVudW0gYXR0cl9jcHUgaXg4Nl9zY2hlZHVsZTsKLSAjZW5kaWYKLSAKLSBleHRlcm4gY29uc3QgY2hhciAqIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAocnR4X2luc24gKmluc24sIHJ0eCBjYWxsX29wKTsKLS1leHRlcm4gY29uc3QgY2hhciAqIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAocnR4IGNhbGxfb3AsIGJvb2wgcmV0X3ApOwotK2V4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChydHggY2FsbF9vcCk7Ci0gZXh0ZXJuIGNvbnN0IGNoYXIgKiBpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4gKGJvb2wgbG9uZ19wKTsKLStleHRlcm4gY29uc3QgY2hhciAqIGl4ODZfb3V0cHV0X2luZGlyZWN0X2Z1bmN0aW9uX3JldHVybiAocnR4IHJldF9vcCk7Ci0rZXh0ZXJuIHZvaWQgaXg4Nl9zcGxpdF9zaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCAocnR4KTsKLSBleHRlcm4gYm9vbCBpeDg2X29wZXJhbmRzX29rX2Zvcl9tb3ZlX211bHRpcGxlIChydHggKm9wZXJhbmRzLCBib29sIGxvYWQsCi0gCQkJCQkJZW51bSBtYWNoaW5lX21vZGUgbW9kZSk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IDY2NTAyZWUuLjIxYzNjMTggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMTEwODAsNiArMTEwODAsMTIgQEAgc3RhdGljIGludCBpbmRpcmVjdF90aHVua3NfdXNlZDsKLSAgICBieSBjYWxsIGFuZCByZXR1cm4gdGh1bmtzIGZ1bmN0aW9ucyB3aXRoIHRoZSBCTkQgcHJlZml4LiAgKi8KLSBzdGF0aWMgaW50IGluZGlyZWN0X3RodW5rc19ibmRfdXNlZDsKLSAKLSsvKiBUcnVlIGlmIHJldHVybiB0aHVuayBmdW5jdGlvbiB2aWEgQ1ggaXMgbmVlZGVkLiAgKi8KLStzdGF0aWMgYm9vbCBpbmRpcmVjdF9yZXR1cm5fdmlhX2N4OwotKy8qIFRydWUgaWYgcmV0dXJuIHRodW5rIGZ1bmN0aW9uIHZpYSBDWCB3aXRoIHRoZSBCTkQgcHJlZml4IGlzCi0rICAgbmVlZGVkLiAgKi8KLStzdGF0aWMgYm9vbCBpbmRpcmVjdF9yZXR1cm5fdmlhX2N4X2JuZDsKLSsKLSAjaWZuZGVmIElORElSRUNUX0xBQkVMCi0gIyBkZWZpbmUgSU5ESVJFQ1RfTEFCRUwgIkxJTkQiCi0gI2VuZGlmCi1AQCAtMTEwOTAsMTIgKzExMDk2LDEzIEBAIHN0YXRpYyB2b2lkCi0gaW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgdW5zaWduZWQgaW50IHJlZ25vLAotIAkJICAgICBib29sIG5lZWRfYm5kX3AsIGJvb2wgcmV0X3ApCi0gewotLSAgaWYgKHJlZ25vICE9IElOVkFMSURfUkVHTlVNICYmIHJldF9wKQotKyAgaWYgKHJlZ25vICE9IElOVkFMSURfUkVHTlVNICYmIHJlZ25vICE9IENYX1JFRyAmJiByZXRfcCkKLSAgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotIAotICAgaWYgKFVTRV9ISURERU5fTElOS09OQ0UpCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFyICpibmQgPSBuZWVkX2JuZF9wID8gIl9ibmQiIDogIiI7Ci0rICAgICAgY29uc3QgY2hhciAqcmV0ID0gcmV0X3AgPyAicmV0dXJuIiA6ICJpbmRpcmVjdCI7Ci0gICAgICAgaWYgKHJlZ25vICE9IElOVkFMSURfUkVHTlVNKQotIAl7Ci0gCSAgY29uc3QgY2hhciAqcmVnX3ByZWZpeDsKLUBAIC0xMTEwMywxNCArMTExMTAsMTEgQEAgaW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgdW5zaWduZWQgaW50IHJlZ25vLAotIAkgICAgcmVnX3ByZWZpeCA9IFRBUkdFVF82NEJJVCA/ICJyIiA6ICJlIjsKLSAJICBlbHNlCi0gCSAgICByZWdfcHJlZml4ID0gIiI7Ci0tCSAgc3ByaW50ZiAobmFtZSwgIl9feDg2X2luZGlyZWN0X3RodW5rJXNfJXMlcyIsCi0tCQkgICBibmQsIHJlZ19wcmVmaXgsIHJlZ19uYW1lc1tyZWdub10pOwotKwkgIHNwcmludGYgKG5hbWUsICJfX3g4Nl8lc190aHVuayVzXyVzJXMiLAotKwkJICAgcmV0LCBibmQsIHJlZ19wcmVmaXgsIHJlZ19uYW1lc1tyZWdub10pOwotIAl9Ci0gICAgICAgZWxzZQotLQl7Ci0tCSAgY29uc3QgY2hhciAqcmV0ID0gcmV0X3AgPyAicmV0dXJuIiA6ICJpbmRpcmVjdCI7Ci0tCSAgc3ByaW50ZiAobmFtZSwgIl9feDg2XyVzX3RodW5rJXMiLCByZXQsIGJuZCk7Ci0tCX0KLSsJc3ByaW50ZiAobmFtZSwgIl9feDg2XyVzX3RodW5rJXMiLCByZXQsIGJuZCk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotQEAgLTExMjc0LDkgKzExMjc4LDIzIEBAIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAoYm9vbCBuZWVkX2JuZF9wLCB1bnNpZ25lZCBpbnQgcmVnbm8pCi0gCUFTTV9PVVRQVVRfTEFCRUwgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0gICAgICAgfQotIAotKyAgLyogQ3JlYXRlIGFsaWFzIGZvciBfX3g4Nl9yZXR1cm5fdGh1bmsvX194ODZfcmV0dXJuX3RodW5rX2JuZCBvcgotKyAgICAgX194ODZfcmV0dXJuX3RodW5rX2VjeC9fX3g4Nl9yZXR1cm5fdGh1bmtfZWN4X2JuZC4gICovCi0rICBib29sIG5lZWRfYWxpYXM7Ci0gICBpZiAocmVnbm8gPT0gSU5WQUxJRF9SRUdOVU0pCi0rICAgIG5lZWRfYWxpYXMgPSB0cnVlOwotKyAgZWxzZSBpZiAocmVnbm8gPT0gQ1hfUkVHKQotKyAgICB7Ci0rICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCW5lZWRfYWxpYXMgPSBpbmRpcmVjdF9yZXR1cm5fdmlhX2N4X2JuZDsKLSsgICAgICBlbHNlCi0rCW5lZWRfYWxpYXMgPSBpbmRpcmVjdF9yZXR1cm5fdmlhX2N4OwotKyAgICB9Ci0rICBlbHNlCi0rICAgIG5lZWRfYWxpYXMgPSBmYWxzZTsKLSsKLSsgIGlmIChuZWVkX2FsaWFzKQotICAgICB7Ci0tICAgICAgLyogQ3JlYXRlIGFsaWFzIGZvciBfX3g4Ni5yZXR1cm5fdGh1bmsvX194ODYucmV0dXJuX3RodW5rX2JuZC4gICovCi0gICAgICAgY2hhciBhbGlhc1szMl07Ci0gCi0gICAgICAgaW5kaXJlY3RfdGh1bmtfbmFtZSAoYWxpYXMsIHJlZ25vLCBuZWVkX2JuZF9wLCB0cnVlKTsKLUBAIC0yODAxOSwxOCArMjgwMzcsMTcgQEAgaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoIChydHggY2FsbF9vcCwgY29uc3QgY2hhciAqeGFzbSwKLSAgIGVsc2UKLSAgICAgaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9wdXNoIChjYWxsX29wLCB4YXNtLCBzaWJjYWxsX3ApOwotIH0KLS0vKiBPdXRwdXQgaW5kaXJlY3QganVtcC4gIENBTExfT1AgaXMgdGhlIGp1bXAgdGFyZ2V0LiAgSnVtcCBpcyBhCi0tICAgZnVuY3Rpb24gcmV0dXJuIGlmIFJFVF9QIGlzIHRydWUuICAqLwotKwotKy8qIE91dHB1dCBpbmRpcmVjdCBqdW1wLiAgQ0FMTF9PUCBpcyB0aGUganVtcCB0YXJnZXQuICAqLwotIAotIGNvbnN0IGNoYXIgKgotLWl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAocnR4IGNhbGxfb3AsIGJvb2wgcmV0X3ApCi0raXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChydHggY2FsbF9vcCkKLSB7Ci0gICBpZiAoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0gICAgIHsKLS0gICAgICAvKiBXZSBjYW4ndCBoYXZlIHJlZC16b25lIGlmIHRoaXMgaXNuJ3QgYSBmdW5jdGlvbiByZXR1cm4gc2luY2UKLS0JICJjYWxsIiBpbiB0aGUgaW5kaXJlY3QgdGh1bmsgcHVzaGVzIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvCi0tCSBzdGFjaywgZGVzdHJveWluZyByZWQtem9uZS4gICovCi0tICAgICAgaWYgKCFyZXRfcCAmJiBpeDg2X3JlZF96b25lX3NpemUgIT0gMCkKLSsgICAgICAvKiBXZSBjYW4ndCBoYXZlIHJlZC16b25lIHNpbmNlICJjYWxsIiBpbiB0aGUgaW5kaXJlY3QgdGh1bmsKLSsgICAgICAgICBwdXNoZXMgdGhlIHJldHVybiBhZGRyZXNzIG9udG8gc3RhY2ssIGRlc3Ryb3lpbmcgcmVkLXpvbmUuICAqLwotKyAgICAgIGlmIChpeDg2X3JlZF96b25lX3NpemUgIT0gMCkKLSAJZ2NjX3VucmVhY2hhYmxlICgpOwotIAotICAgICAgIGl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaCAoY2FsbF9vcCwgIiUwIiwgdHJ1ZSk7Ci1AQCAtMjgwODEsNiArMjgwOTgsODYgQEAgaXg4Nl9vdXRwdXRfZnVuY3Rpb25fcmV0dXJuIChib29sIGxvbmdfcCkKLSAgIHJldHVybiAicmVwJTsgcmV0IjsKLSB9Ci0gCi0rLyogT3V0cHV0IGluZGlyZWN0IGZ1bmN0aW9uIHJldHVybi4gIFJFVF9PUCBpcyB0aGUgZnVuY3Rpb24gcmV0dXJuCi0rICAgdGFyZ2V0LiAgKi8KLSsKLStjb25zdCBjaGFyICoKLStpeDg2X291dHB1dF9pbmRpcmVjdF9mdW5jdGlvbl9yZXR1cm4gKHJ0eCByZXRfb3ApCi0rewotKyAgaWYgKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwKQotKyAgICB7Ci0rICAgICAgY2hhciB0aHVua19uYW1lWzMyXTsKLSsgICAgICBib29sIG5lZWRfYm5kX3AgPSBpeDg2X2JuZF9wcmVmaXhlZF9pbnNuX3AgKGN1cnJlbnRfb3V0cHV0X2luc24pOwotKyAgICAgIHVuc2lnbmVkIGludCByZWdubyA9IFJFR05PIChyZXRfb3ApOwotKyAgICAgIGdjY19hc3NlcnQgKHJlZ25vID09IENYX1JFRyk7Ci0rCi0rICAgICAgaWYgKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlCi0rCSAgIT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rX2lubGluZSkKLSsJewotKwkgIGJvb2wgbmVlZF90aHVuayA9IChjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZQotKwkJCSAgICAgPT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rKTsKLSsJICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lLCByZWdubywgbmVlZF9ibmRfcCwgdHJ1ZSk7Ci0rCSAgaWYgKG5lZWRfYm5kX3ApCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuZWVkX3RodW5rKQotKwkJewotKwkJICBpbmRpcmVjdF9yZXR1cm5fdmlhX2N4X2JuZCA9IHRydWU7Ci0rCQkgIGluZGlyZWN0X3RodW5rc19ibmRfdXNlZCB8PSAxIDw8IENYX1JFRzsKLSsJCX0KLSsJICAgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRibmQgam1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBpZiAobmVlZF90aHVuaykKLSsJCXsKLSsJCSAgaW5kaXJlY3RfcmV0dXJuX3ZpYV9jeCA9IHRydWU7Ci0rCQkgIGluZGlyZWN0X3RodW5rc191c2VkIHw9IDEgPDwgQ1hfUkVHOwotKwkJfQotKwkgICAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGptcFx0JXNcbiIsIHRodW5rX25hbWUpOwotKwkgICAgfQotKwl9Ci0rICAgICAgZWxzZQotKwlvdXRwdXRfaW5kaXJlY3RfdGh1bmsgKG5lZWRfYm5kX3AsIHJlZ25vKTsKLSsKLSsgICAgICByZXR1cm4gIiI7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgcmV0dXJuICIlIWptcFx0JUEwIjsKLSt9Ci0rCi0rLyogU3BsaXQgc2ltcGxlIHJldHVybiB3aXRoIHBvcHBpbmcgUE9QQyBieXRlcyBmcm9tIHN0YWNrIHRvIGluZGlyZWN0Ci0rICAgYnJhbmNoIHdpdGggc3RhY2sgYWRqdXN0bWVudCAuICAqLwotKwotK3ZvaWQKLStpeDg2X3NwbGl0X3NpbXBsZV9yZXR1cm5fcG9wX2ludGVybmFsIChydHggcG9wYykKLSt7Ci0rICBzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbiAqbSA9IGNmdW4tPm1hY2hpbmU7Ci0rICBydHggZWN4ID0gZ2VuX3J0eF9SRUcgKFNJbW9kZSwgQ1hfUkVHKTsKLSsgIHJ0eF9pbnNuICppbnNuOwotKwotKyAgLyogVGhlcmUgaXMgbm8gInBhc2NhbCIgY2FsbGluZyBjb252ZW50aW9uIGluIGFueSA2NGJpdCBBQkkuICAqLwotKyAgZ2NjX2Fzc2VydCAoIVRBUkdFVF82NEJJVCk7Ci0rCi0rICBpbnNuID0gZW1pdF9pbnNuIChnZW5fcG9wIChlY3gpKTsKLSsgIG0tPmZzLmNmYV9vZmZzZXQgLT0gVU5JVFNfUEVSX1dPUkQ7Ci0rICBtLT5mcy5zcF9vZmZzZXQgLT0gVU5JVFNfUEVSX1dPUkQ7Ci0rCi0rICBydHggeCA9IHBsdXNfY29uc3RhbnQgKFBtb2RlLCBzdGFja19wb2ludGVyX3J0eCwgVU5JVFNfUEVSX1dPUkQpOwotKyAgeCA9IGdlbl9ydHhfU0VUIChzdGFja19wb2ludGVyX3J0eCwgeCk7Ci0rICBhZGRfcmVnX25vdGUgKGluc24sIFJFR19DRkFfQURKVVNUX0NGQSwgeCk7Ci0rICBhZGRfcmVnX25vdGUgKGluc24sIFJFR19DRkFfUkVHSVNURVIsIGdlbl9ydHhfU0VUIChlY3gsIHBjX3J0eCkpOwotKyAgUlRYX0ZSQU1FX1JFTEFURURfUCAoaW5zbikgPSAxOwotKwotKyAgeCA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIHN0YWNrX3BvaW50ZXJfcnR4LCBwb3BjKTsKLSsgIHggPSBnZW5fcnR4X1NFVCAoc3RhY2tfcG9pbnRlcl9ydHgsIHgpOwotKyAgaW5zbiA9IGVtaXRfaW5zbiAoeCk7Ci0rICBhZGRfcmVnX25vdGUgKGluc24sIFJFR19DRkFfQURKVVNUX0NGQSwgeCk7Ci0rICBSVFhfRlJBTUVfUkVMQVRFRF9QIChpbnNuKSA9IDE7Ci0rCi0rICAvKiBOb3cgcmV0dXJuIGFkZHJlc3MgaXMgaW4gRUNYLiAgKi8KLSsgIGVtaXRfanVtcF9pbnNuIChnZW5fc2ltcGxlX3JldHVybl9pbmRpcmVjdF9pbnRlcm5hbCAoZWN4KSk7Ci0rfQotKwotIC8qIE91dHB1dCB0aGUgYXNzZW1ibHkgZm9yIGEgY2FsbCBpbnN0cnVjdGlvbi4gICovCi0gCi0gY29uc3QgY2hhciAqCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAotaW5kZXggMDVhODhmZi4uODU3NDY2YSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAotQEAgLTExODEzLDcgKzExODEzLDcgQEAKLSAoZGVmaW5lX2luc24gIippbmRpcmVjdF9qdW1wIgotICAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZDpXIDAgImluZGlyZWN0X2JyYW5jaF9vcGVyYW5kIiAickJ3IikpXQotICAgIiIKLS0gICIqIHJldHVybiBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKG9wZXJhbmRzWzBdLCBmYWxzZSk7IgotKyAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAob3BlcmFuZHNbMF0pOyIKLSAgIFsoc2V0IChhdHRyICJ0eXBlIikKLSAgICAgIChpZl90aGVuX2Vsc2UgKG1hdGNoX3Rlc3QgIihjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotIAkJCQkgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApIikKLUBAIC0xMTg2OCw3ICsxMTg2OCw3IEBACi0gICBbKHNldCAocGMpIChtYXRjaF9vcGVyYW5kOlcgMCAiaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQiICJyQnciKSkKLSAgICAodXNlIChsYWJlbF9yZWYgKG1hdGNoX29wZXJhbmQgMSkpKV0KLSAgICIiCi0tICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChvcGVyYW5kc1swXSwgZmFsc2UpOyIKLSsgICIqIHJldHVybiBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKG9wZXJhbmRzWzBdKTsiCi0gICBbKHNldCAoYXR0ciAidHlwZSIpCi0gICAgICAoaWZfdGhlbl9lbHNlIChtYXRjaF90ZXN0ICIoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSAJCQkJICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwKSIpCi1AQCAtMTI1MjAsMTEgKzEyNTIwLDE0IEBACi0gICAgKHNldF9hdHRyICJwcmVmaXhfcmVwIiAiMSIpCi0gICAgKHNldF9hdHRyICJtb2RybSIgIjAiKV0pCi0gCi0tKGRlZmluZV9pbnNuICJzaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCIKLSsoZGVmaW5lX2luc25fYW5kX3NwbGl0ICJzaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCIKLSAgIFsoc2ltcGxlX3JldHVybikKLSAgICAodXNlIChtYXRjaF9vcGVyYW5kOlNJIDAgImNvbnN0X2ludF9vcGVyYW5kIikpXQotICAgInJlbG9hZF9jb21wbGV0ZWQiCi0gICAiJSFyZXRcdCUwIgotKyAgIiYmIGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwIgotKyAgWyhjb25zdF9pbnQgMCldCi0rICAiaXg4Nl9zcGxpdF9zaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCAob3BlcmFuZHNbMF0pOyBET05FOyIKLSAgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjMiKQotICAgIChzZXRfYXR0ciAiYXRvbV91bml0IiAiamV1IikKLSAgICAoc2V0X2F0dHIgImxlbmd0aF9pbW1lZGlhdGUiICIyIikKLUBAIC0xMjUzNSw3ICsxMjUzOCw3IEBACi0gICBbKHNpbXBsZV9yZXR1cm4pCi0gICAgKHVzZSAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpKV0KLSAgICJyZWxvYWRfY29tcGxldGVkIgotLSAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAob3BlcmFuZHNbMF0sIHRydWUpOyIKLSsgICIqIHJldHVybiBpeDg2X291dHB1dF9pbmRpcmVjdF9mdW5jdGlvbl9yZXR1cm4gKG9wZXJhbmRzWzBdKTsiCi0gICBbKHNldCAoYXR0ciAidHlwZSIpCi0gICAgICAoaWZfdGhlbl9lbHNlIChtYXRjaF90ZXN0ICIoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSAJCQkJICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwKSIpCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjg5ZTA4NmQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMi5jCi1AQCAtMCwwICsxLDE1IEBACi0rLyogUFIgdGFyZ2V0L3I4NDUzMCAqLwotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBpYTMyIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIiB9ICovCi0rCi0rc3RydWN0IHMgeyBfQ29tcGxleCB1bnNpZ25lZCBzaG9ydCB4OyB9OwotK3N0cnVjdCBzIGdzID0geyAxMDAgKyAyMDBpIH07Ci0rc3RydWN0IHMgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBmb28gKHZvaWQpIHsgcmV0dXJuIGdzOyB9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwb3BsXFtcXHQgXF0qJWVjeCIgMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxlYVxbbFxdP1xbXFx0IFxdKjRcXCglZXNwXFwpLCAlZXNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rX2VjeCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjQzZjBjY2EKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMy5jCi1AQCAtMCwwICsxLDE1IEBACi0rLyogUFIgdGFyZ2V0L3I4NDUzMCAqLwotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBpYTMyIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybiIgfSAqLwotKwotK3N0cnVjdCBzIHsgX0NvbXBsZXggdW5zaWduZWQgc2hvcnQgeDsgfTsKLStzdHJ1Y3QgcyBncyA9IHsgMTAwICsgMjAwaSB9OwotK3N0cnVjdCBzIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgZm9vICh2b2lkKSB7IHJldHVybiBnczsgfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicG9wbFxbXFx0IFxdKiVlY3giIDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsZWFcW2xcXT9cW1xcdCBcXSo0XFwoJWVzcFxcKSwgJWVzcCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVua19lY3giIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uODcyOWUzNQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI0LmMKLUBAIC0wLDAgKzEsMTUgQEAKLSsvKiBQUiB0YXJnZXQvcjg0NTMwICovCi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGlhMzIgfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstaW5saW5lIiB9ICovCi0rCi0rc3RydWN0IHMgeyBfQ29tcGxleCB1bnNpZ25lZCBzaG9ydCB4OyB9OwotK3N0cnVjdCBzIGdzID0geyAxMDAgKyAyMDBpIH07Ci0rc3RydWN0IHMgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBmb28gKHZvaWQpIHsgcmV0dXJuIGdzOyB9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwb3BsXFtcXHQgXF0qJWVjeCIgMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxlYVxbbFxdP1xbXFx0IFxdKjRcXCglZXNwXFwpLCAlZXNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVua19lY3giIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI1LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mNzM1NTNjCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjUuYwotQEAgLTAsMCArMSwxNSBAQAotKy8qIFBSIHRhcmdldC9yODQ1MzAgKi8KLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgaWEzMiB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mbm8tcGljIiB9ICovCi0rCi0rc3RydWN0IHMgeyBfQ29tcGxleCB1bnNpZ25lZCBzaG9ydCB4OyB9OwotK3N0cnVjdCBzIGdzID0geyAxMDAgKyAyMDBpIH07Ci0rc3RydWN0IHMgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBmb28gKHZvaWQpIHsgcmV0dXJuIGdzOyB9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwb3BsXFtcXHQgXF0qJWVjeCIgMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxlYVxbbFxdP1xbXFx0IFxdKjRcXCglZXNwXFwpLCAlZXNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rX2JuZF9lY3giIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI2LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45MTQ0ZTk4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjYuYwotQEAgLTAsMCArMSw0MCBAQAotKy8qIFBSIHRhcmdldC9yODQ1MzAgKi8KLSsvKiB7IGRnLWRvIHJ1biB9ICovCi0rLyogeyBkZy1vcHRpb25zICItT3MgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsiIH0gKi8KLSsKLStzdHJ1Y3QgUyB7IGludCBpOyB9OwotK19fYXR0cmlidXRlX18oKGNvbnN0LCBub2lubGluZSwgbm9jbG9uZSkpCi0rc3RydWN0IFMgZm9vIChpbnQgeCkKLSt7Ci0rICBzdHJ1Y3QgUyBzOwotKyAgcy5pID0geDsKLSsgIHJldHVybiBzOwotK30KLSsKLStpbnQgYVsyMDQ4XSwgYlsyMDQ4XSwgY1syMDQ4XSwgZFsyMDQ4XTsKLStzdHJ1Y3QgUyBlWzIwNDhdOwotKwotK19fYXR0cmlidXRlX18oKG5vaW5saW5lLCBub2Nsb25lKSkgdm9pZAotK2JhciAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsgIGZvciAoaSA9IDA7IGkgPCAxMDI0OyBpKyspCi0rICAgIHsKLSsgICAgICBlW2ldID0gZm9vIChpKTsKLSsgICAgICBhW2krMl0gPSBhW2ldICsgYVtpKzFdOwotKyAgICAgIGJbMTBdID0gYlsxMF0gKyBpOwotKyAgICAgIGNbaV0gPSBjWzIwNDcgLSBpXTsKLSsgICAgICBkW2ldID0gZFtpICsgMV07Ci0rICAgIH0KLSt9Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsgIGludCBpOwotKyAgYmFyICgpOwotKyAgZm9yIChpID0gMDsgaSA8IDEwMjQ7IGkrKykKLSsgICAgaWYgKGVbaV0uaSAhPSBpKQotKyAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKLSsgIHJldHVybiAwOwotK30KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDEyLWkzODYtQWRkLVRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTItaTM4Ni1BZGQtVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUwYWM1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTItaTM4Ni1BZGQtVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMDQgKzAsMCBAQAotRnJvbSA3YmExOTJkMTFhNDNkMjRjZTQyN2EzZGZjZTBhZDA1OTJiZDUyODMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogaGpsIDxoamxAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxNzowMDo0NiArMDAwMAotU3ViamVjdDogW1BBVENIIDEyLzEyXSBpMzg2OiBBZGQgVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUgotCi1Gb3IKLQotLS0tCi1zdHJ1Y3QgQyB7Ci0gIHZpcnR1YWwgfkMoKTsKLSAgdmlydHVhbCB2b2lkIGYoKTsKLX07Ci0KLXZvaWQKLWYgKEMgKnApCi17Ci0gIHAtPmYoKTsKLSAgcC0+ZigpOwotfQotLS0tCi0KLS1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtTzIgb24geDg2LTY0IEdOVS9MaW51eCBnZW5lcmF0ZXM6Ci0KLV9aMWZQMUM6Ci0uTEZCMDoKLSAgICAgICAgLmNmaV9zdGFydHByb2MKLSAgICAgICAgcHVzaHEgICAlcmJ4Ci0gICAgICAgIC5jZmlfZGVmX2NmYV9vZmZzZXQgMTYKLSAgICAgICAgLmNmaV9vZmZzZXQgMywgLTE2Ci0gICAgICAgIG1vdnEgICAgKCVyZGkpLCAlcmF4Ci0gICAgICAgIG1vdnEgICAgJXJkaSwgJXJieAotICAgICAgICBqbXAgICAgIC5MSU5EMQotLkxJTkQwOgotICAgICAgICBwdXNocSAgIDE2KCVyYXgpCi0gICAgICAgIGptcCAgICAgX194ODZfaW5kaXJlY3RfdGh1bmsKLS5MSU5EMToKLSAgICAgICAgY2FsbCAgICAuTElORDAKLSAgICAgICAgbW92cSAgICAoJXJieCksICVyYXgKLSAgICAgICAgbW92cSAgICAlcmJ4LCAlcmRpCi0gICAgICAgIHBvcHEgICAgJXJieAotICAgICAgICAuY2ZpX2RlZl9jZmFfb2Zmc2V0IDgKLSAgICAgICAgbW92cSAgICAxNiglcmF4KSwgJXJheAotICAgICAgICBqbXAgICAgIF9feDg2X2luZGlyZWN0X3RodW5rX3JheAotICAgICAgICAuY2ZpX2VuZHByb2MKLQoteDg2LTY0IGlzIHN1cHBvc2VkIHRvIGhhdmUgYXN5bmNocm9ub3VzIHVud2luZCB0YWJsZXMgYnkgZGVmYXVsdCwgYnV0Ci10aGVyZSBpcyBub3RoaW5nIHRoYXQgcmVmbGVjdHMgdGhlIGNoYW5nZSBpbiB0aGUgKHJlbGF0aXZlKSBmcmFtZQotYWRkcmVzcyBhZnRlciAuTElORDAuICBUaGF0IHJlZ2lvbiByZWFsbHkgaGFzIHRvIGJlIG1vdmVkIG91dHNpZGUgb2YKLXRoZSAuY2ZpX3N0YXJ0cHJvYy8uY2ZpX2VuZHByb2MgYnJhY2tldC4KLQotVGhpcyBwYXRjaCBhZGRzIFRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIgdG8gZm9yY2UgaW5kaXJlY3QKLWJyYW5jaCB2aWEgcmVnaXN0ZXIgd2hlbmV2ZXIgLW1pbmRpcmVjdC1icmFuY2g9IGlzIHVzZWQuICBOb3csCi0tbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLU8yIG9uIHg4Ni02NCBHTlUvTGludXggZ2VuZXJhdGVzOgotCi1fWjFmUDFDOgotLkxGQjA6Ci0JLmNmaV9zdGFydHByb2MKLQlwdXNocQklcmJ4Ci0JLmNmaV9kZWZfY2ZhX29mZnNldCAxNgotCS5jZmlfb2Zmc2V0IDMsIC0xNgotCW1vdnEJKCVyZGkpLCAlcmF4Ci0JbW92cQklcmRpLCAlcmJ4Ci0JbW92cQkxNiglcmF4KSwgJXJheAotCWNhbGwJX194ODZfaW5kaXJlY3RfdGh1bmtfcmF4Ci0JbW92cQkoJXJieCksICVyYXgKLQltb3ZxCSVyYngsICVyZGkKLQlwb3BxCSVyYngKLQkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDgKLQltb3ZxCTE2KCVyYXgpLCAlcmF4Ci0Jam1wCV9feDg2X2luZGlyZWN0X3RodW5rX3JheAotCS5jZmlfZW5kcHJvYwotCi1zbyB0aGF0ICItbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4iIGlzIGVxdWl2YWxlbnQgdG8KLSItbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIiLCB3aGljaCBpcwotdXNlZCBieSBMaW51eCBrZXJuZWwuCi0KLWdjYy8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQlQUiB0YXJnZXQvODQwMzkKLQkqIGNvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kIChCcyk6IFJlcGxhY2UKLQlpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciB3aXRoCi0JVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUi4KLQkoQncpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGluZGlyZWN0X2p1bXApOiBMaWtld2lzZS4KLQkodGFibGVqdW1wKTogTGlrZXdpc2UuCi0JKCpzaWJjYWxsX21lbW9yeSk6IExpa2V3aXNlLgotCSgqc2liY2FsbF92YWx1ZV9tZW1vcnkpOiBMaWtld2lzZS4KLQlQZWVwaG9sZXMgb2YgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB2aWEgbWVtb3J5OiBMaWtld2lzZS4KLQkoKnNpYmNhbGxfR09UXzMyKTogRGlzYWxsb3dlZCBmb3IgVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUi4KLQkoKnNpYmNhbGxfdmFsdWVfR09UXzMyKTogTGlrZXdpc2UuCi0JKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIChpbmRpcmVjdF9icmFuY2hfb3BlcmFuZCk6IExpa2V3aXNlLgotCShHT1RfbWVtb3J5X29wZXJhbmQpOiBMaWtld2lzZS4KLQkoY2FsbF9pbnNuX29wZXJhbmQpOiBMaWtld2lzZS4KLQkoc2liY2FsbF9pbnNuX29wZXJhbmQpOiBMaWtld2lzZS4KLQkoR09UMzJfc3ltYm9sX29wZXJhbmQpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYuaCAoVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUik6IE5ldy4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQlQUiB0YXJnZXQvODQwMzkKLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmM6IFVwZGF0ZWQuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmM6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArKysrCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyOCArKysrKysrKysrKysrLS0tLS0tLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKy0tLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYyAgIHwgIDUgKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYyAgIHwgIDUgKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYyAgIHwgIDUgKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYyAgIHwgIDUgKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYyAgIHwgIDYgKysrLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMgICB8IDEyICsrKysrKy0tLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMgICB8ICA1ICsrLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jICAgICAgICB8ICA1ICsrLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jICAgICAgICB8ICA1ICsrLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jICAgICAgICB8ICAzICstLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMgICAgICAgIHwgIDMgKy0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYyAgICAgICAgfCAgOSArKysrLS0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYyAgICAgICAgfCAgOSArKysrLS0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYyAgICAgICAgfCAgNSArKy0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jICAgICAgICAgfCAgNiArKy0tLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYyAgICAgICAgIHwgIDYgKystLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgICAgICAgICB8ICA1ICsrLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgICAgICAgICB8ICA3ICsrKy0tLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyAgICAgIHwgIDUgKystLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYyAgICAgIHwgIDUgKystLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYyAgICAgIHwgIDkgKysrKy0tLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYyAgICAgIHwgIDYgKystLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMgICAgICB8ICA2ICsrKy0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jICAgICAgfCAgOCArKystLS0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jICAgICAgfCAgNSArKy0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYyAgICAgIHwgIDMgKystCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jICAgICAgfCAgMyArKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMgICAgICB8ICA0ICsrLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYyAgICAgICB8ICA5ICsrKy0tLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYyAgICAgICB8ICA5ICsrKy0tLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYyAgICAgICB8ICA4ICsrKy0tLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYyAgICAgICB8ICA1ICsrLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYyAgICAgICB8ICA3ICsrKy0tLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jICAgICAgIHwgIDcgKysrLS0tCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYyAgICAgICAgfCAxMyArKysrLS0tLS0tCi0gNDMgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKyksIDE0MSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZCBiL2djYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZAotaW5kZXggOTIwNGM4ZS4uZWY2ODRhOSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kCi1AQCAtMTcyLDcgKzE3Miw3IEBACi0gCi0gKGRlZmluZV9jb25zdHJhaW50ICJCcyIKLSAgICJAaW50ZXJuYWwgU2liY2FsbCBtZW1vcnkgb3BlcmFuZC4iCi0tICAoaW9yIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiKSkKLSsgIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSIikpCi0gCSAgICAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0gCSAgICAobWF0Y2hfb3BlcmFuZCAwICJzaWJjYWxsX21lbW9yeV9vcGVyYW5kIikpCi0gICAgICAgIChhbmQgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIgJiYgUG1vZGUgPT0gREltb2RlIikKLUBAIC0xODAsNyArMTgwLDcgQEAKLSAKLSAoZGVmaW5lX2NvbnN0cmFpbnQgIkJ3IgotICAgIkBpbnRlcm5hbCBDYWxsIG1lbW9yeSBvcGVyYW5kLiIKLS0gIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKyAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIiKSkKLSAJICAgIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSAJICAgIChtYXRjaF9vcGVyYW5kIDAgIm1lbW9yeV9vcGVyYW5kIikpCi0gICAgICAgIChhbmQgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIgJiYgUG1vZGUgPT0gREltb2RlIikKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotaW5kZXggYjM0YmMxMS4uMTgxNmQ3MSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLUBAIC0yNjc2LDYgKzI2NzYsMTEgQEAgZXh0ZXJuIHZvaWQgZGVidWdfZGlzcGF0Y2hfd2luZG93IChpbnQpOwotICNkZWZpbmUgVEFSR0VUX1JFQ0lQX1ZFQ19ESVYJKChyZWNpcF9tYXNrICYgUkVDSVBfTUFTS19WRUNfRElWKSAhPSAwKQotICNkZWZpbmUgVEFSR0VUX1JFQ0lQX1ZFQ19TUVJUCSgocmVjaXBfbWFzayAmIFJFQ0lQX01BU0tfVkVDX1NRUlQpICE9IDApCi0gCi0rCi0rI2RlZmluZSBUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSIFwKLSsgIChpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciBcCi0rICAgfHwgY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rCi0gI2RlZmluZSBJWDg2X0hMRV9BQ1FVSVJFICgxIDw8IDE2KQotICNkZWZpbmUgSVg4Nl9ITEVfUkVMRUFTRSAoMSA8PCAxNykKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1pbmRleCA4NTc0NjZhLi42YTZkYzI2IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1AQCAtMTE4MDUsNyArMTE4MDUsNyBAQAotICAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZCAwICJpbmRpcmVjdF9icmFuY2hfb3BlcmFuZCIpKV0KLSAgICIiCi0gewotLSAgaWYgKFRBUkdFVF9YMzIgfHwgaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIpCi0rICBpZiAoVEFSR0VUX1gzMiB8fCBUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSKQotICAgICBvcGVyYW5kc1swXSA9IGNvbnZlcnRfbWVtb3J5X2FkZHJlc3MgKHdvcmRfbW9kZSwgb3BlcmFuZHNbMF0pOwotICAgY2Z1bi0+bWFjaGluZS0+aGFzX2xvY2FsX2luZGlyZWN0X2p1bXAgPSB0cnVlOwotIH0pCi1AQCAtMTE4NTksNyArMTE4NTksNyBAQAotIAkJCQkJIE9QVEFCX0RJUkVDVCk7Ci0gICAgIH0KLSAKLS0gIGlmIChUQVJHRVRfWDMyIHx8IGl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyKQotKyAgaWYgKFRBUkdFVF9YMzIgfHwgVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUikKLSAgICAgb3BlcmFuZHNbMF0gPSBjb252ZXJ0X21lbW9yeV9hZGRyZXNzICh3b3JkX21vZGUsIG9wZXJhbmRzWzBdKTsKLSAgIGNmdW4tPm1hY2hpbmUtPmhhc19sb2NhbF9pbmRpcmVjdF9qdW1wID0gdHJ1ZTsKLSB9KQotQEAgLTEyMDI5LDcgKzEyMDI5LDEwIEBACi0gCQkgICAgIChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX25vX2VsaW1fb3BlcmFuZCIgIlUiKQotIAkJICAgICAobWF0Y2hfb3BlcmFuZDpTSSAxICJHT1QzMl9zeW1ib2xfb3BlcmFuZCIpKSkpCi0gCSAobWF0Y2hfb3BlcmFuZCAyKSldCi0tICAiIVRBUkdFVF9NQUNITyAmJiAhVEFSR0VUXzY0QklUICYmIFNJQkxJTkdfQ0FMTF9QIChpbnNuKSIKLSsgICIhVEFSR0VUX01BQ0hPCi0rICAmJiAhVEFSR0VUXzY0QklUCi0rICAmJiAhVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUgotKyAgJiYgU0lCTElOR19DQUxMX1AgKGluc24pIgotIHsKLSAgIHJ0eCBmbmFkZHIgPSBnZW5fcnR4X1BMVVMgKFBtb2RlLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pOwotICAgZm5hZGRyID0gZ2VuX2NvbnN0X21lbSAoUG1vZGUsIGZuYWRkcik7Ci1AQCAtMTIwNDgsNyArMTIwNTEsNyBAQAotICAgWyhjYWxsIChtZW06UUkgKG1hdGNoX29wZXJhbmQ6VyAwICJtZW1vcnlfb3BlcmFuZCIgIm0iKSkKLSAJIChtYXRjaF9vcGVyYW5kIDEpKQotICAgICh1bnNwZWMgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19QRUVQU0lCKV0KLS0gICIhVEFSR0VUX1gzMiAmJiAhaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiCi0rICAiIVRBUkdFVF9YMzIgJiYgIVRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIiCi0gICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChpbnNuLCBvcGVyYW5kc1swXSk7IgotICAgWyhzZXRfYXR0ciAidHlwZSIgImNhbGwiKV0pCi0gCi1AQCAtMTIwNTgsNyArMTIwNjEsNyBAQAotICAgIChjYWxsIChtZW06UUkgKG1hdGNoX2R1cCAwKSkKLSAJIChtYXRjaF9vcGVyYW5kIDMpKV0KLSAgICIhVEFSR0VUX1gzMgotLSAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmICFUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSCi0gICAgJiYgU0lCTElOR19DQUxMX1AgKHBlZXAyX25leHRfaW5zbiAoMSkpCi0gICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sCi0gCQkJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFIChwZWVwMl9uZXh0X2luc24gKDEpKSkiCi1AQCAtMTIwNzMsNyArMTIwNzYsNyBAQAotICAgIChjYWxsIChtZW06UUkgKG1hdGNoX2R1cCAwKSkKLSAJIChtYXRjaF9vcGVyYW5kIDMpKV0KLSAgICIhVEFSR0VUX1gzMgotLSAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmICFUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSCi0gICAgJiYgU0lCTElOR19DQUxMX1AgKHBlZXAyX25leHRfaW5zbiAoMikpCi0gICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sCi0gCQkJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFIChwZWVwMl9uZXh0X2luc24gKDIpKSkiCi1AQCAtMTIxNzEsNyArMTIxNzQsNyBAQAotICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VyAxICJtZW1vcnlfb3BlcmFuZCIpKQotICAgIChzZXQgKHBjKSAobWF0Y2hfZHVwIDApKV0KLSAgICIhVEFSR0VUX1gzMgotLSAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmICFUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSCi0gICAgJiYgcGVlcDJfcmVnX2RlYWRfcCAoMiwgb3BlcmFuZHNbMF0pIgotICAgWyhzZXQgKHBjKSAobWF0Y2hfZHVwIDEpKV0pCi0gCi1AQCAtMTIyMjksNyArMTIyMzIsMTAgQEAKLSAJCQkgIChtYXRjaF9vcGVyYW5kOlNJIDEgInJlZ2lzdGVyX25vX2VsaW1fb3BlcmFuZCIgIlUiKQotIAkJCSAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiR09UMzJfc3ltYm9sX29wZXJhbmQiKSkpKQotIAkgKG1hdGNoX29wZXJhbmQgMykpKV0KLS0gICIhVEFSR0VUX01BQ0hPICYmICFUQVJHRVRfNjRCSVQgJiYgU0lCTElOR19DQUxMX1AgKGluc24pIgotKyAgIiFUQVJHRVRfTUFDSE8KLSsgICAmJiAhVEFSR0VUXzY0QklUCi0rICAgJiYgIVRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIKLSsgICAmJiBTSUJMSU5HX0NBTExfUCAoaW5zbikiCi0gewotICAgcnR4IGZuYWRkciA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7Ci0gICBmbmFkZHIgPSBnZW5fY29uc3RfbWVtIChQbW9kZSwgZm5hZGRyKTsKLUBAIC0xMjI1MCw3ICsxMjI1Niw3IEBACi0gIAkoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlcgMSAibWVtb3J5X29wZXJhbmQiICJtIikpCi0gCSAgICAgIChtYXRjaF9vcGVyYW5kIDIpKSkKLSAgICAodW5zcGVjIFsoY29uc3RfaW50IDApXSBVTlNQRUNfUEVFUFNJQildCi0tICAiIVRBUkdFVF9YMzIgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIgotKyAgIiFUQVJHRVRfWDMyICYmICFUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSIgotICAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAoaW5zbiwgb3BlcmFuZHNbMV0pOyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJjYWxsdiIpXSkKLSAKLUBAIC0xMjI2MSw3ICsxMjI2Nyw3IEBACi0gICAgKGNhbGwgKG1lbTpRSSAobWF0Y2hfZHVwIDApKQotIAkJIChtYXRjaF9vcGVyYW5kIDMpKSldCi0gICAiIVRBUkdFVF9YMzIKLS0gICAmJiAhaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIKLSsgICAmJiAhVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUgotICAgICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDEpKQotICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLAotIAkJCUNBTExfSU5TTl9GVU5DVElPTl9VU0FHRSAocGVlcDJfbmV4dF9pbnNuICgxKSkpIgotQEAgLTEyMjc4LDcgKzEyMjg0LDcgQEAKLSAJKGNhbGwgKG1lbTpRSSAobWF0Y2hfZHVwIDApKQotIAkgICAgICAobWF0Y2hfb3BlcmFuZCAzKSkpXQotICAgIiFUQVJHRVRfWDMyCi0tICAgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0rICAgJiYgIVRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIKLSAgICAmJiBTSUJMSU5HX0NBTExfUCAocGVlcDJfbmV4dF9pbnNuICgyKSkKLSAgICAmJiAhcmVnX21lbnRpb25lZF9wIChvcGVyYW5kc1swXSwKLSAJCQlDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UgKHBlZXAyX25leHRfaW5zbiAoMikpKSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCBiL2djYy9jb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kCi1pbmRleCBkMWYwYTdkLi41ZjhhOThmIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kCi1AQCAtNTkzLDcgKzU5Myw3IEBACi0gOzsgVGVzdCBmb3IgYSB2YWxpZCBvcGVyYW5kIGZvciBpbmRpcmVjdCBicmFuY2guCi0gKGRlZmluZV9wcmVkaWNhdGUgImluZGlyZWN0X2JyYW5jaF9vcGVyYW5kIgotICAgKGlvciAobWF0Y2hfb3BlcmFuZCAwICJyZWdpc3Rlcl9vcGVyYW5kIikKLS0gICAgICAgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKyAgICAgICAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIiKSkKLSAJICAgIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSAJICAgIChtYXRjaF9vcGVyYW5kIDAgIm1lbW9yeV9vcGVyYW5kIikpKSkKLSAKLUBAIC02MzcsNyArNjM3LDcgQEAKLSAgIChpb3IgKG1hdGNoX3Rlc3QgImNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kCi0gCQkgICAgIChvcCwgbW9kZSA9PSBWT0lEbW9kZSA/IG1vZGUgOiBQbW9kZSkiKQotICAgICAgICAobWF0Y2hfb3BlcmFuZCAwICJjYWxsX3JlZ2lzdGVyX25vX2VsaW1fb3BlcmFuZCIpCi0tICAgICAgIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiKSkKLSsgICAgICAgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSIikpCi0gCSAgICAoaW9yIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiIpKQotIAkJICAgICAgKG1hdGNoX29wZXJhbmQgMCAibWVtb3J5X29wZXJhbmQiKSkKLSAJCSAoYW5kIChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyICYmIFBtb2RlID09IERJbW9kZSIpCi1AQCAtNjQ4LDcgKzY0OCw3IEBACi0gICAoaW9yIChtYXRjaF90ZXN0ICJjb25zdGFudF9jYWxsX2FkZHJlc3Nfb3BlcmFuZAotIAkJICAgICAob3AsIG1vZGUgPT0gVk9JRG1vZGUgPyBtb2RlIDogUG1vZGUpIikKLSAgICAgICAgKG1hdGNoX29wZXJhbmQgMCAicmVnaXN0ZXJfbm9fZWxpbV9vcGVyYW5kIikKLS0gICAgICAgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKyAgICAgICAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIiKSkKLSAJICAgIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0gCQkgICAgICAobWF0Y2hfb3BlcmFuZCAwICJzaWJjYWxsX21lbW9yeV9vcGVyYW5kIikpCi0gCQkgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiAmJiBQbW9kZSA9PSBESW1vZGUiKQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotaW5kZXggNjBkMDk4OC4uNmU5NGQyYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jCi1AQCAtMTEsOSArMTEsOCBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2gob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotaW5kZXggYWFjNzUxNi4uM2M0NjcwNyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jCi1AQCAtMTEsOSArMTEsOCBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jCi1pbmRleCA5ZTI0YTM4Li4yYzdmYjUyIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMKLUBAIC0xMiw5ICsxMiw4IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jCi1pbmRleCAxMjdiNWQ5Li4wZDNmODk1IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMKLUBAIC0xMiw5ICsxMiw4IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jCi1pbmRleCBmY2FhMThkLi5mYjI2YzAwIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLUBAIC05LDggKzksMTAgQEAgZm9vICh2b2lkKQotICAgYmFyICgpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi1pbmRleCBlNDY0OTI4Li5hYTAzZmJkIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMKLUBAIC0xMCw5ICsxMCwxMyBAQCBmb28gKHZvaWQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYwotaW5kZXggMTdjMmQwZi4uM2M3MjAzNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi1AQCAtMzUsOSArMzUsOCBAQCBiYXIgKGludCBpKQotICAgICB9Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKlwuTFxbMC05XF0rXFwoLCUiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1pbmRleCA5MTk0Y2NmLi43MTA2NDA3IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1AQCAtMTQsOSArMTQsOCBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2gob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLWluZGV4IGU1MWYyNjEuLjI3YzdlNWIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLUBAIC0xMiw5ICsxMiw4IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jCi1pbmRleCA0YWVlYzE4Li44OWEyYmFjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jCi1AQCAtMTQsMTAgKzE0LDkgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLWluZGV4IGFjMGU1OTkuLjNlYjgzYzMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLUBAIC0xMywxMCArMTMsOSBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYwotaW5kZXggNTczY2YxZS4uMDA5OGRkMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYwotQEAgLTE0LDkgKzE0LDggQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLWluZGV4IGIyYjM3ZmMuLmVjZThkZTEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLUBAIC0xMyw5ICsxMyw4IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1pbmRleCA0YTQzZTE5Li5kNTNmYzg4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1AQCAtMzYsOSArMzYsOCBAQCBiYXIgKGludCBpKQotICAgICB9Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKlwuTFxbMC05XF0rXFwoLCUiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotaW5kZXggYWM4NGFiNi4uNzNkMTZiYSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLUBAIC0xMCw5ICsxMCw5IEBAIGZvbyAodm9pZCkKLSAgIGRpc3BhdGNoIChidWYpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZF9yYXgiIHsgdGFyZ2V0IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmRfZWF4IiB7IHRhcmdldCBpYTMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCByZXQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi1pbmRleCBjZTY1NWU4Li44NTY3NTFhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotQEAgLTExLDEwICsxMSw4IEBAIGZvbyAodm9pZCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgcmV0IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jCi1pbmRleCBkMzQ0ODVhLi40MjMxMmY2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotQEAgLTEwLDggKzEwLDkgQEAgZm9vICh2b2lkKQotICAgYmFyIChidWYpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZF9yYXgiIHsgdGFyZ2V0IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmRfZWF4IiB7IHRhcmdldCBpYTMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCByZXQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi1pbmRleCAwZTE5ODMwLi5jOGNhMTAyIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotQEAgLTExLDEwICsxMSw5IEBAIGZvbyAodm9pZCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJibmQgY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kXyhyfGUpYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiYm5kIGNhbGxcWyBcdFxdKlwuTElORCIgMSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCByZXQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMKLWluZGV4IDU3OTQ0MWYuLmMwOWRkMGEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi1AQCAtMTEsOSArMTEsOCBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2gob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jCi1pbmRleCBjOTJlNmYyLi44MjY0MjVhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYwotQEAgLTExLDkgKzExLDggQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jCi1pbmRleCBkOTk2NGMyLi4zODU2MjY4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYwotQEAgLTEyLDkgKzEyLDggQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi1pbmRleCBkNGRjYTRkLi4xYWU0OWIxIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYwotQEAgLTEyLDkgKzEyLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jCi1pbmRleCA1YzA3ZTAyLi41MzI4MjM5IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYwotQEAgLTksOCArOSwxMCBAQCBmb28gKHZvaWQpCi0gICBiYXIgKCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotaW5kZXggM2ViNDQwNi4uOGFlNDM0OCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLUBAIC0xMCw4ICsxMCw4IEBAIGZvbyAodm9pZCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMKLWluZGV4IGFlY2U5MzguLjJiOWEzM2UgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jCi1AQCAtMzUsOSArMzUsOCBAQCBiYXIgKGludCBpKQotICAgICB9Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKlwuTFxbMC05XF0rXFwoLCUiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYwotaW5kZXggM2FiYTVlOC4uODY5ZDkwNCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLUBAIC0xMSw3ICsxMSw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaChvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotaW5kZXggMGYwMTgxZC4uYzVjMTZlZCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMKLUBAIC0xMSw3ICsxMSw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi1pbmRleCAyZWVmNmYzLi40YTYzZWJlIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYwotQEAgLTEyLDcgKzEyLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYwotaW5kZXggZTgyNWExMC4uYTM5NWZmYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLUBAIC0xMiw3ICsxMiw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLWluZGV4IGM2ZDc3ZTEuLjIxY2JmZDMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi1AQCAtOSw3ICs5LDggQEAgZm9vICh2b2lkKQotICAgYmFyICgpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jCi1pbmRleCA2NDU0ODI3Li5kMTMwMGYxIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotQEAgLTEwLDcgKzEwLDggQEAgZm9vICh2b2lkKQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLWluZGV4IGM2NzA2NmMuLmVhMDA5MjQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jCi1AQCAtMzUsOCArMzUsOCBAQCBiYXIgKGludCBpKQotICAgICB9Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKlwuTFxbMC05XF0rXFwoLCUiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSUocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jCi1pbmRleCBlNmZlYTg0Li5hZjkwMjNhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jCi1AQCAtMTUsOSArMTUsNiBAQCBmb28gKHZvaWQpCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAyIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9ICB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rOiIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXg6IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4OiIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYwotaW5kZXggZTIzOWVjNC4uYmE0NjdjNSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYwotQEAgLTE1LDkgKzE1LDYgQEAgZm9vICh2b2lkKQotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDEgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bms6IiB7IHRhcmdldCB7ICEgeDMyIH0gfSAgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheDoiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXg6IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jCi1pbmRleCBmYTMxODEzLi40M2U1N2NhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jCi1AQCAtMTUsOCArMTUsNiBAQCBmb28gKHZvaWQpCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rOiIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXg6IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4OiIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYwotaW5kZXggZmQ1YjQxZi4uNTVmMTU2YyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYwotQEAgLTE0LDkgKzE0LDggQEAgZm9vICh2b2lkKQotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAyIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAzIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAzIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYwotaW5kZXggZDYwNjM3My4uMWM3OTA0MyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYwotQEAgLTE2LDcgKzE2LDYgQEAgZm9vICh2b2lkKQotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMKLWluZGV4IDc1ZTQ1ZTIuLjU4YWJhMzEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMKLUBAIC0xNiw3ICsxNiw2IEBAIGZvbyAodm9pZCkKLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAxIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDEgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYwotaW5kZXggZDFkYjQxYy4uZDJkZjhiOCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMKLUBAIC0xNCwxMSArMTQsOCBAQCBmb28gKHZvaWQpCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bms6IiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDIgeyB0YXJnZXQgeyB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDIgeyB0YXJnZXQgeyB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIH0gfSAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTMtZ2NjLXNhbml0aXplcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTMtZ2NjLXNhbml0aXplcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YmNkOGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDEzLWdjYy1zYW5pdGl6ZXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotRnJvbSAwZmE3MTAyZDc2Mzc2YjI3YWU0YmJjMTA4NDg2MDBhYWM2ZWQ3MWQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogamFrdWIgPGpha3ViQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IE1vbiwgMTcgSnVsIDIwMTcgMTk6NDE6MDggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gCUJhY2twb3J0ZWQgZnJvbSBtYWlubGluZSAJMjAxNy0wNy0xNCAgSmFrdWIKLSBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIHNhbml0aXplci84MTA2NgotCSogc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguaDogQ2hlcnJ5LXBpY2sgdXBzdHJlYW0gcjMwNzk2OS4KLQkqIHNhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNjOiBMaWtld2lzZS4KLQkqIHNhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3N0b3B0aGV3b3JsZF9saW51eF9saWJjZGVwLmNjOiBMaWtld2lzZS4KLQkqIHRzYW4vdHNhbl9wbGF0Zm9ybV9saW51eC5jYzogTGlrZXdpc2UuCi0KLVtSb21haW4gY2hlcnJ5LXBpY2sgb24gZ2NjLTYtYnJhbmNoIGZyb20gZ2NjLTctYnJhbmNoXQotU2lnbmVkLW9mZi1ieTogUm9tYWluIE5hb3VyIDxyb21haW4ubmFvdXJAZ21haWwuY29tPgotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTctYnJhbmNoQDI1MDI4NyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotLS0tCi0gbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNjICAgICAgICAgICAgICAgICAgICAgIHwgMyArLS0KLSBsaWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguaCAgICAgICAgICAgICAgICAgICAgICAgfCA0ICstLS0KLSBsaWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY2MgfCAyICstCi0gbGlic2FuaXRpemVyL3RzYW4vdHNhbl9wbGF0Zm9ybV9saW51eC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNjIGIvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNjCi1pbmRleCAyY2VmYTIwLi4yMjNkOWM2IDEwMDY0NAotLS0tIGEvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNjCi0rKysgYi9saWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY2MKLUBAIC01NDYsOCArNTQ2LDcgQEAgdXB0ciBpbnRlcm5hbF9wcmN0bChpbnQgb3B0aW9uLCB1cHRyIGFyZzIsIHVwdHIgYXJnMywgdXB0ciBhcmc0LCB1cHRyIGFyZzUpIHsKLSB9Ci0gI2VuZGlmCi0gCi0tdXB0ciBpbnRlcm5hbF9zaWdhbHRzdGFjayhjb25zdCBzdHJ1Y3Qgc2lnYWx0c3RhY2sgKnNzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2lnYWx0c3RhY2sgKm9zcykgewotK3VwdHIgaW50ZXJuYWxfc2lnYWx0c3RhY2soY29uc3Qgdm9pZCAqc3MsIHZvaWQgKm9zcykgewotICAgcmV0dXJuIGludGVybmFsX3N5c2NhbGwoU1lTQ0FMTChzaWdhbHRzdGFjayksICh1cHRyKXNzLCAodXB0cilvc3MpOwotIH0KLSAKLWRpZmYgLS1naXQgYS9saWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguaCBiL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5oCi1pbmRleCA0NDk3NzAyLi4xNTk0MDU4IDEwMDY0NAotLS0tIGEvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmgKLSsrKyBiL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5oCi1AQCAtMTksNyArMTksNiBAQAotICNpbmNsdWRlICJzYW5pdGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bvc2l4LmgiCi0gCi0gc3RydWN0IGxpbmtfbWFwOyAgLy8gT3BhcXVlIHR5cGUgcmV0dXJuZWQgYnkgZGxvcGVuKCkuCi0tc3RydWN0IHNpZ2FsdHN0YWNrOwotIAotIG5hbWVzcGFjZSBfX3Nhbml0aXplciB7Ci0gLy8gRGlyZW50IHN0cnVjdHVyZSBmb3IgZ2V0ZGVudHMoKS4gTm90ZSB0aGF0IHRoaXMgc3RydWN0dXJlIGlzIGRpZmZlcmVudCBmcm9tCi1AQCAtMjgsOCArMjcsNyBAQCBzdHJ1Y3QgbGludXhfZGlyZW50OwotIAotIC8vIFN5c2NhbGwgd3JhcHBlcnMuCi0gdXB0ciBpbnRlcm5hbF9nZXRkZW50cyhmZF90IGZkLCBzdHJ1Y3QgbGludXhfZGlyZW50ICpkaXJwLCB1bnNpZ25lZCBpbnQgY291bnQpOwotLXVwdHIgaW50ZXJuYWxfc2lnYWx0c3RhY2soY29uc3Qgc3RydWN0IHNpZ2FsdHN0YWNrKiBzcywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdhbHRzdGFjayogb3NzKTsKLSt1cHRyIGludGVybmFsX3NpZ2FsdHN0YWNrKGNvbnN0IHZvaWQqIHNzLCB2b2lkKiBvc3MpOwotIHVwdHIgaW50ZXJuYWxfc2lncHJvY21hc2soaW50IGhvdywgX19zYW5pdGl6ZXJfc2lnc2V0X3QgKnNldCwKLSAgICAgX19zYW5pdGl6ZXJfc2lnc2V0X3QgKm9sZHNldCk7Ci0gdm9pZCBpbnRlcm5hbF9zaWdmaWxsc2V0KF9fc2FuaXRpemVyX3NpZ3NldF90ICpzZXQpOwotZGlmZiAtLWdpdCBhL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9zdG9wdGhld29ybGRfbGludXhfbGliY2RlcC5jYyBiL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9zdG9wdGhld29ybGRfbGludXhfbGliY2RlcC5jYwotaW5kZXggYzkxOWU0Zi4uMDE0MTYyYWYgMTAwNjQ0Ci0tLS0gYS9saWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY2MKLSsrKyBiL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9zdG9wdGhld29ybGRfbGludXhfbGliY2RlcC5jYwotQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0aWMgaW50IFRyYWNlclRocmVhZCh2b2lkKiBhcmd1bWVudCkgewotIAotICAgLy8gQWx0ZXJuYXRlIHN0YWNrIGZvciBzaWduYWwgaGFuZGxpbmcuCi0gICBJbnRlcm5hbFNjb3BlZEJ1ZmZlcjxjaGFyPiBoYW5kbGVyX3N0YWNrX21lbW9yeShrSGFuZGxlclN0YWNrU2l6ZSk7Ci0tICBzdHJ1Y3Qgc2lnYWx0c3RhY2sgaGFuZGxlcl9zdGFjazsKLSsgIHN0YWNrX3QgaGFuZGxlcl9zdGFjazsKLSAgIGludGVybmFsX21lbXNldCgmaGFuZGxlcl9zdGFjaywgMCwgc2l6ZW9mKGhhbmRsZXJfc3RhY2spKTsKLSAgIGhhbmRsZXJfc3RhY2suc3Nfc3AgPSBoYW5kbGVyX3N0YWNrX21lbW9yeS5kYXRhKCk7Ci0gICBoYW5kbGVyX3N0YWNrLnNzX3NpemUgPSBrSGFuZGxlclN0YWNrU2l6ZTsKLWRpZmYgLS1naXQgYS9saWJzYW5pdGl6ZXIvdHNhbi90c2FuX3BsYXRmb3JtX2xpbnV4LmNjIGIvbGlic2FuaXRpemVyL3RzYW4vdHNhbl9wbGF0Zm9ybV9saW51eC5jYwotaW5kZXggMDljZWM1Zi4uOTA4ZjRmZSAxMDA2NDQKLS0tLSBhL2xpYnNhbml0aXplci90c2FuL3RzYW5fcGxhdGZvcm1fbGludXguY2MKLSsrKyBiL2xpYnNhbml0aXplci90c2FuL3RzYW5fcGxhdGZvcm1fbGludXguY2MKLUBAIC0yOTEsNyArMjkxLDcgQEAgYm9vbCBJc0dsb2JhbFZhcih1cHRyIGFkZHIpIHsKLSBpbnQgRXh0cmFjdFJlc29sdkZEcyh2b2lkICpzdGF0ZSwgaW50ICpmZHMsIGludCBuZmQpIHsKLSAjaWYgU0FOSVRJWkVSX0xJTlVYCi0gICBpbnQgY250ID0gMDsKLS0gIF9fcmVzX3N0YXRlICpzdGF0cCA9IChfX3Jlc19zdGF0ZSopc3RhdGU7Ci0rICBzdHJ1Y3QgX19yZXNfc3RhdGUgKnN0YXRwID0gKHN0cnVjdCBfX3Jlc19zdGF0ZSopc3RhdGU7Ci0gICBmb3IgKGludCBpID0gMDsgaSA8IE1BWE5TICYmIGNudCA8IG5mZDsgaSsrKSB7Ci0gICAgIGlmIChzdGF0cC0+X3UuX2V4dC5uc2FkZHJzW2ldICYmIHN0YXRwLT5fdS5fZXh0Lm5zc29ja3NbaV0gIT0gLTEpCi0gICAgICAgZmRzW2NudCsrXSA9IHN0YXRwLT5fdS5fZXh0Lm5zc29ja3NbaV07Ci0tLSAKLTIuOS40CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0L0NWRS0yMDE2LTYxMzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0L0NWRS0yMDE2LTYxMzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZGJiMmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC9DVkUtMjAxNi02MTMxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIzICswLDAgQEAKLUZyb20gNTlhMGU0YmQ4MzkxOTYyZjYyNjAwYWUzYWM5NWFiMGZiYTc0ZDQ2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGxhdyA8bGF3QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFRodSwgNCBBdWcgMjAxNiAxNjo1MzoxOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggZm9yIFBSNzE2OTYgaW4gTGliaWJlcnR5IERlbWFuZ2xlcgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1bQlogIzcxNjk2XSAtLSBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03MTY5NgotCi0yMDE2LTA4LTA0ICBNYXJjZWwgQsO2aG1lICA8Ym9laG1lLm1hcmNlbEBnbWFpbC5jb20+Ci0KLQlQUiBjKysvNzE2OTYKLQkqIGNwbHVzLWRlbS5jOiBQcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbiB3aGVuIHRoZXJlIGlzIGEgY3ljbGUKLQlpbiB0aGUgcmVmZXJlbmNpbmcgb2YgcmVtZW1iZXJlZCBtYW5nbGVkIHR5cGVzLgotCSh3b3JrX3N0dWZmKTogTmV3IHN0YWNrIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHJlbWVtYmVyZWQgbWFuZ2xlZAotCXR5cGVzIHRoYXQgYXJlIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQuCi0JKHB1c2hfcHJvY2Vzc2VkX3R5cGUpOiBOZXcgbWV0aG9kIHRvIHB1c2ggY3VycmVudGx5IHByb2Nlc3NlZAotCXJlbWVtYmVyZWQgdHlwZSBvbnRvIHRoZSBzdGFjay4KLQkocG9wX3Byb2Nlc3NlZF90eXBlKTogTmV3IG1ldGhvZCB0byBwb3AgY3VycmVudGx5IHByb2Nlc3NlZAotCXJlbWVtYmVyZWQgdHlwZSBmcm9tIHRoZSBzdGFjay4KLQkod29ya19zdHVmZl9jb3B5X3RvX2Zyb20pOiBDb3B5IHZhbHVlcyBvZiBuZXcgdmFyaWFibGVzLgotCShkZWxldGVfbm9uX0JfS193b3JrX3N0dWZmKTogRnJlZSBzdGFjayBtZW1vcnkuCi0JKGRlbWFuZ2xlX2FyZ3MpOiBQdXNoL1BvcCBjdXJyZW50bHkgcHJvY2Vzc2VkIHJlbWVtYmVyZWQgdHlwZS4KLQkoZG9fdHlwZSk6IERvIG5vdCBkZW1hbmdsZSBhIGN5Y2xpYyByZWZlcmVuY2UgYW5kIHB1c2gvcG9wCi0JcmVmZXJlbmNlZCByZW1lbWJlcmVkIHR5cGUuCi0KLWNoZXJyeS1waWNrZWQgZnJvbSBjb21taXQgb2YKLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDIzOTE0MyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbbWFzdGVyXQotQ1ZFOiBDVkUtMjAxNi02MTMxCi1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJpYmVydHkvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgMTcgKysrKysrKysKLSBsaWJpYmVydHkvY3BsdXMtZGVtLmMgICAgICAgICAgICAgICAgIHwgNzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KLSBsaWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkIHwgMTggKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2NjLTYuNC4wL2xpYmliZXJ0eS9jcGx1cy1kZW0uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy02LjQuMC5vcmlnL2xpYmliZXJ0eS9jcGx1cy1kZW0uYwotKysrIGdjYy02LjQuMC9saWJpYmVydHkvY3BsdXMtZGVtLmMKLUBAIC0xNDQsNiArMTQ0LDkgQEAgc3RydWN0IHdvcmtfc3R1ZmYKLSAgIHN0cmluZyogcHJldmlvdXNfYXJndW1lbnQ7IC8qIFRoZSBsYXN0IGZ1bmN0aW9uIGFyZ3VtZW50IGRlbWFuZ2xlZC4gICovCi0gICBpbnQgbnJlcGVhdHM7ICAgICAgICAgLyogVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHByZXZpb3VzCi0gCQkJICAgYXJndW1lbnQuICAqLwotKyAgaW50ICpwcm9jdHlwZXZlYzsgICAgIC8qIEluZGljZXMgb2YgY3VycmVudGx5IHByb2Nlc3NlZCByZW1lbWJlcmVkIHR5cGV2ZWNzLiAgKi8KLSsgIGludCBwcm9jdHlwZXZlY19zaXplOwotKyAgaW50IG5wcm9jdHlwZXM7Ci0gfTsKLSAKLSAjZGVmaW5lIFBSSU5UX0FOU0lfUVVBTElGSUVSUyAod29yayAtPiBvcHRpb25zICYgRE1HTF9BTlNJKQotQEAgLTQzNSw2ICs0MzgsMTAgQEAgaXRlcmF0ZV9kZW1hbmdsZV9mdW5jdGlvbiAoc3RydWN0IHdvcmtfcwotIAotIHN0YXRpYyB2b2lkIHJlbWVtYmVyX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSAKLStzdGF0aWMgdm9pZCBwdXNoX3Byb2Nlc3NlZF90eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqLCBpbnQpOwotKwotK3N0YXRpYyB2b2lkIHBvcF9wcm9jZXNzZWRfdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKik7Ci0rCi0gc3RhdGljIHZvaWQgcmVtZW1iZXJfQnR5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICosIGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwotIAotIHN0YXRpYyBpbnQgcmVnaXN0ZXJfQnR5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICopOwotQEAgLTEzMDEsNiArMTMwOCwxMCBAQCB3b3JrX3N0dWZmX2NvcHlfdG9fZnJvbSAoc3RydWN0IHdvcmtfc3R1Ci0gICAgICAgbWVtY3B5ICh0by0+YnR5cGV2ZWNbaV0sIGZyb20tPmJ0eXBldmVjW2ldLCBsZW4pOwotICAgICB9Ci0gCi0rICBpZiAoZnJvbS0+cHJvY3R5cGV2ZWMpCi0rICAgIHRvLT5wcm9jdHlwZXZlYyA9Ci0rICAgICAgWERVUFZFQyAoaW50LCBmcm9tLT5wcm9jdHlwZXZlYywgZnJvbS0+cHJvY3R5cGV2ZWNfc2l6ZSk7Ci0rCi0gICBpZiAoZnJvbS0+bnRtcGxfYXJncykKLSAgICAgdG8tPnRtcGxfYXJndmVjID0gWE5FV1ZFQyAoY2hhciAqLCBmcm9tLT5udG1wbF9hcmdzKTsKLSAKLUBAIC0xMzI5LDExICsxMzQwLDE3IEBAIGRlbGV0ZV9ub25fQl9LX3dvcmtfc3R1ZmYgKHN0cnVjdCB3b3JrX3MKLSAgIC8qIERpc2NhcmQgdGhlIHJlbWVtYmVyZWQgdHlwZXMsIGlmIGFueS4gICovCi0gCi0gICBmb3JnZXRfdHlwZXMgKHdvcmspOwotLSAgaWYgKHdvcmsgLT4gdHlwZXZlYyAhPSBOVUxMKQotKyAgaWYgKHdvcmstPnR5cGV2ZWMgIT0gTlVMTCkKLSAgICAgewotLSAgICAgIGZyZWUgKChjaGFyICopIHdvcmsgLT4gdHlwZXZlYyk7Ci0tICAgICAgd29yayAtPiB0eXBldmVjID0gTlVMTDsKLS0gICAgICB3b3JrIC0+IHR5cGV2ZWNfc2l6ZSA9IDA7Ci0rICAgICAgZnJlZSAoKGNoYXIgKikgd29yay0+dHlwZXZlYyk7Ci0rICAgICAgd29yay0+dHlwZXZlYyA9IE5VTEw7Ci0rICAgICAgd29yay0+dHlwZXZlY19zaXplID0gMDsKLSsgICAgfQotKyAgaWYgKHdvcmstPnByb2N0eXBldmVjICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBmcmVlICh3b3JrLT5wcm9jdHlwZXZlYyk7Ci0rICAgICAgd29yay0+cHJvY3R5cGV2ZWMgPSBOVUxMOwotKyAgICAgIHdvcmstPnByb2N0eXBldmVjX3NpemUgPSAwOwotICAgICB9Ci0gICBpZiAod29yay0+dG1wbF9hcmd2ZWMpCi0gICAgIHsKLUBAIC0zNTUyLDYgKzM1NjksOCBAQCBzdGF0aWMgaW50Ci0gZG9fdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGNoYXIgKiptYW5nbGVkLCBzdHJpbmcgKnJlc3VsdCkKLSB7Ci0gICBpbnQgbjsKLSsgIGludCBpOwotKyAgaW50IGlzX3Byb2N0eXBldmVjOwotICAgaW50IGRvbmU7Ci0gICBpbnQgc3VjY2VzczsKLSAgIHN0cmluZyBkZWNsOwotQEAgLTM1NjQsNiArMzU4Myw3IEBAIGRvX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdAotIAotICAgZG9uZSA9IDA7Ci0gICBzdWNjZXNzID0gMTsKLSsgIGlzX3Byb2N0eXBldmVjID0gMDsKLSAgIHdoaWxlIChzdWNjZXNzICYmICFkb25lKQotICAgICB7Ci0gICAgICAgaW50IG1lbWJlcjsKLUBAIC0zNjE2LDggKzM2MzYsMTUgQEAgZG9fdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0Ci0gCSAgICAgIHN1Y2Nlc3MgPSAwOwotIAkgICAgfQotIAkgIGVsc2UKLSsJICAgIGZvciAoaSA9IDA7IGkgPCB3b3JrLT5ucHJvY3R5cGVzOyBpKyspCi0rCSAgICAgIGlmICh3b3JrIC0+IHByb2N0eXBldmVjIFtpXSA9PSBuKQotKwkgICAgICAgIHN1Y2Nlc3MgPSAwOwotKwotKwkgIGlmIChzdWNjZXNzKQotIAkgICAgewotLQkgICAgICByZW1lbWJlcmVkX3R5cGUgPSB3b3JrIC0+IHR5cGV2ZWNbbl07Ci0rCSAgICAgIGlzX3Byb2N0eXBldmVjID0gMTsKLSsJICAgICAgcHVzaF9wcm9jZXNzZWRfdHlwZSAod29yaywgbik7Ci0rCSAgICAgIHJlbWVtYmVyZWRfdHlwZSA9IHdvcmstPnR5cGV2ZWNbbl07Ci0gCSAgICAgIG1hbmdsZWQgPSAmcmVtZW1iZXJlZF90eXBlOwotIAkgICAgfQotIAkgIGJyZWFrOwotQEAgLTM4NDAsNiArMzg2Nyw5IEBAIGRvX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdAotICAgICBzdHJpbmdfZGVsZXRlIChyZXN1bHQpOwotICAgc3RyaW5nX2RlbGV0ZSAoJmRlY2wpOwotIAotKyAgaWYgKGlzX3Byb2N0eXBldmVjKQotKyAgICBwb3BfcHJvY2Vzc2VkX3R5cGUgKHdvcmspOwotKwotICAgaWYgKHN1Y2Nlc3MpCi0gICAgIC8qIEFzc3VtZSBhbiBpbnRlZ3JhbCB0eXBlLCBpZiB3ZSdyZSBub3Qgc3VyZS4gICovCi0gICAgIHJldHVybiAoaW50KSAoKHRrID09IHRrX25vbmUpID8gdGtfaW50ZWdyYWwgOiB0ayk7Ci1AQCAtNDI1Miw2ICs0MjgyLDQxIEBAIGRvX2FyZyAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGMKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLStwdXNoX3Byb2Nlc3NlZF90eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgaW50IHR5cGV2ZWNfaW5kZXgpCi0rewotKyAgaWYgKHdvcmstPm5wcm9jdHlwZXMgPj0gd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSkKLSsgICAgewotKyAgICAgIGlmICghd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSkKLSsJewotKwkgIHdvcmstPnByb2N0eXBldmVjX3NpemUgPSA0OwotKwkgIHdvcmstPnByb2N0eXBldmVjID0gWE5FV1ZFQyAoaW50LCB3b3JrLT5wcm9jdHlwZXZlY19zaXplKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIGlmICh3b3JrLT5wcm9jdHlwZXZlY19zaXplIDwgMTYpCi0rCSAgICAvKiBEb3VibGUgd2hlbiBzbWFsbC4gICovCi0rCSAgICB3b3JrLT5wcm9jdHlwZXZlY19zaXplICo9IDI7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICAvKiBHcm93IHNsb3dlciB3aGVuIGxhcmdlLiAgKi8KLSsJICAgICAgaWYgKHdvcmstPnByb2N0eXBldmVjX3NpemUgPiAoSU5UX01BWCAvIDMpICogMikKLSsgICAgICAgICAgICAgICAgeG1hbGxvY19mYWlsZWQgKElOVF9NQVgpOwotKyAgICAgICAgICAgICAgd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSA9ICh3b3JrLT5wcm9jdHlwZXZlY19zaXplICogMyAvIDIpOwotKwkgICAgfQotKyAgICAgICAgICB3b3JrLT5wcm9jdHlwZXZlYwotKyAgICAgICAgICAgID0gWFJFU0laRVZFQyAoaW50LCB3b3JrLT5wcm9jdHlwZXZlYywgd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSk7Ci0rCX0KLSsgICAgfQotKyAgICB3b3JrLT5wcm9jdHlwZXZlYyBbd29yay0+bnByb2N0eXBlcysrXSA9IHR5cGV2ZWNfaW5kZXg7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rcG9wX3Byb2Nlc3NlZF90eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaykKLSt7Ci0rICB3b3JrLT5ucHJvY3R5cGVzLS07Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0gcmVtZW1iZXJfdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGNoYXIgKnN0YXJ0LCBpbnQgbGVuKQotIHsKLSAgIGNoYXIgKnRlbTsKLUBAIC00NTE1LDEwICs0NTgwLDEzIEBAIGRlbWFuZ2xlX2FyZ3MgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLAotIAkJewotIAkJICBzdHJpbmdfYXBwZW5kIChkZWNscCwgIiwgIik7Ci0gCQl9Ci0rCSAgICAgIHB1c2hfcHJvY2Vzc2VkX3R5cGUgKHdvcmssIHQpOwotIAkgICAgICBpZiAoIWRvX2FyZyAod29yaywgJnRlbSwgJmFyZykpCi0gCQl7Ci0rCQkgIHBvcF9wcm9jZXNzZWRfdHlwZSAod29yayk7Ci0gCQkgIHJldHVybiAoMCk7Ci0gCQl9Ci0rCSAgICAgIHBvcF9wcm9jZXNzZWRfdHlwZSAod29yayk7Ci0gCSAgICAgIGlmIChQUklOVF9BUkdfVFlQRVMpCi0gCQl7Ci0gCQkgIHN0cmluZ19hcHBlbmRzIChkZWNscCwgJmFyZyk7Ci1JbmRleDogZ2NjLTYuNC4wL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNi40LjAub3JpZy9saWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkCi0rKysgZ2NjLTYuNC4wL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLUBAIC00NDkxLDMgKzQ0OTEsMjEgQEAgdm9pZCBlYXQ8aW50KiwgRm9vKCk6OntsYW1iZGEoYXV0bzoxKiwgYQotIAotIF9aM2VhdElQaVozQmFySXNFdnZFVWxQc1BUX1BUMF9FMF9FdlJTM19SUzVfCi0gdm9pZCBlYXQ8aW50Kiwgdm9pZCBCYXI8c2hvcnQ+KCk6OntsYW1iZGEoc2hvcnQqLCBhdXRvOjEqLCBhdXRvOjIqKSMyfT4oaW50KiYsIHZvaWQgQmFyPHNob3J0PigpOjp7bGFtYmRhKHNob3J0KiwgYXV0bzoxKiwgYXV0bzoyKikjMn0mKQotKyMKLSsjIFRlc3RzIHdyaXRlIGFjY2VzcyB2aW9sYXRpb24gUFI3MDkyNgotKwotKzBfX090Mm0wMlI1VDAwMDA1MDAwMDAKLSswX19PdDJtMDJSNVQwMDAwNTAwMDAwCi0rIwotKwotKzBfX0dUNTAwMDAwMDAwMDBfCi0rMF9fR1Q1MDAwMDAwMDAwMF8KLSsjCi0rCi0rX190Mm0wNUI1MDAwMDAwMDAwMDAwMDAwMDBfCi0rX190Mm0wNUI1MDAwMDAwMDAwMDAwMDAwMDBfCi0rIwotKyMgVGVzdHMgc3RhY2sgb3ZlcmZsb3cgUFI3MTY5NgotKwotK19fMTAlMF9fUzRfMFQwVDAKLSslMDw+OjolMCglMDw+KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYwppbmRleCAyZGMzZGI4Li5kOTY4YzMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYwpAQCAtMTAsOCArMTAsOCBAQAogCiBGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9nY2MtNy4zOiR7RklMRV9ESVJOQU1FfS9nY2MtNy4zL2JhY2twb3J0OiIKIAotREVQRU5EUyA9KyAibXBmciBnbXAgbGlibXBjIHpsaWIiCi1OQVRJVkVERVBTID0gIm1wZnItbmF0aXZlIGdtcC1uYXRpdmUgbGlibXBjLW5hdGl2ZSB6bGliLW5hdGl2ZSIKK0RFUEVORFMgPSsgIm1wZnIgZ21wIGxpYm1wYyB6bGliIGZsZXgtbmF0aXZlIgorTkFUSVZFREVQUyA9ICJtcGZyLW5hdGl2ZSBnbXAtbmF0aXZlIGxpYm1wYy1uYXRpdmUgemxpYi1uYXRpdmUgZmxleC1uYXRpdmUiCiAKIExJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24gJiBHUEx2MyIKIApAQCAtNzMsMTIgKzczLDEyIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDQ3LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDQ4LWdjYy1FbmFibGUtc3RhdGljLVBJRS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtc2VnbWVudGF0aW9uLWZhdWx0LXByZWNvbXBpbGVkLWhkci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDUwLVJJU0MtVi1IYW5kbGUtbm9uLWxlZ2l0aW1hdGUtYWRkcmVzcy1pbi1yaXNjdl9sZWdpdGkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbm8tc3NlLWZpeC10ZXN0LWNhc2UtZmFpbHVyZXMucGF0Y2ggXAogICAgICAgICAgICAke0JBQ0tQT1JUU30gXAogIgogQkFDS1BPUlRTID0gIlwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWludGVybmFsLWNvbXBpbGVyLWVycm9yLWluLXRlc3RjYXNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUFItcnRsLW9wdGltaXphdGlvbi04MzAzMC5wYXRjaCBcCiAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJiZTJkYTIxNjgwZjI3NjI0ZjNhODcwNTVjNGJhNWFmMiIKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgIC0tZGlzYWJsZS1ib290c3RyYXAgXAogICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKICAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgIC0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfSBcCisgICAgJHtAJy0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfScgaWYgJyR7TElOS0VSX0hBU0hfU1RZTEV9JyBlbHNlICcnfSBcCiAgICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKICAgICAtLXdpdGgtcHBsPW5vIFwKICAgICAtLXdpdGgtY2xvb2c9bm8gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDAxLVBSLXJ0bC1vcHRpbWl6YXRpb24tODMwMzAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMDEtUFItcnRsLW9wdGltaXphdGlvbi04MzAzMC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWY3OTg4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDAxLVBSLXJ0bC1vcHRpbWl6YXRpb24tODMwMzAucGF0Y2gKQEAgLTAsMCArMSwyNzIgQEAKK0Zyb20gZjVjNGE5NDQwZjE1Y2NmNjc3NTY1OTkxMGEyMDE0YTU0OTRlZTg2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGVib3RjYXpvdSA8ZWJvdGNhem91QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KK0RhdGU6IFdlZCwgMjIgTm92IDIwMTcgMjE6NDM6MjIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gCVBSIHJ0bC1vcHRpbWl6YXRpb24vODMwMzAgCSogZG9jL3J0bC50ZXhpIChGbGFncworIGluIGFuIFJUTCBFeHByZXNzaW9uKTogQWxwaGFiZXRpemUsIGFkZCBlbnRyeSAJZm9yIENST1NTSU5HX0pVTVBfUCBhbmQKKyBtZW50aW9uIHVzYWdlIG9mICdqdW1wJyBmb3IgSlVNUF9JTlNOcy4gCShJbnNucyk6IERlbGV0ZSBlbnRyeSBmb3IKKyBSRUdfQ1JPU1NJTkdfSlVNUCBpbiByZWdpc3RlciBub3Rlcy4gCSogYmItcmVvcmRlci5jCisgKHVwZGF0ZV9jcm9zc2luZ19qdW1wX2ZsYWdzKTogRG8gbm90IHRlc3Qgd2hldGhlciB0aGUgCUNST1NTSU5HX0pVTVBfUCBmbGFnCisgaXMgYWxyZWFkeSBzZXQgYmVmb3JlIHNldHRpbmcgaXQuIAkqIGNmZ3J0bC5jIChmaXh1cF9wYXJ0aXRpb25fY3Jvc3NpbmcpOgorIExpa2V3aXNlLiAJKiByZW9yZy5jIChyZWxheF9kZWxheV9zbG90cyk6IERvIG5vdCBjb25zaWRlciBhCisgQ1JPU1NJTkdfSlVNUF9QIGluc24gCWFzIHVzZWxlc3MuCisKK2dpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDI1NTA4MyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitUaGlzIHBhdGNoIHJlbW92ZXMgY2hhbmdlcyB0byBDaGFuZ2Vsb2cgZnJvbSB0aGUgb3JpZ2luYWwgdXBzdHJlYW0gcGF0Y2guCitUaGlzIHdpbGwgaGVscCB1cyBhdm9pZCBjb25mbGljdHMuCisKK09yaWdpbmFsIGJhY2twb3J0IHRvIEdDQyA3LnggYnkgQW1ydXRhIFBhd2FyIDxBbXJ1dGEuUGF3YXJAa3BpdC5jb20+CisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KKworLS0tCisgZ2NjL2JiLXJlb3JkZXIuYyB8ICAgNSArLS0KKyBnY2MvY2ZncnRsLmMgICAgIHwgICAzICstCisgZ2NjL2RvYy9ydGwudGV4aSB8IDEyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZ2NjL3Jlb3JnLmMgICAgICB8ICAgNyArLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2JiLXJlb3JkZXIuYyBiL2djYy9iYi1yZW9yZGVyLmMKK2luZGV4IDU1ZTZkYzYuLjc5NDI4M2MgMTAwNjQ0CistLS0gYS9nY2MvYmItcmVvcmRlci5jCisrKysgYi9nY2MvYmItcmVvcmRlci5jCitAQCAtMjIzNiwxMCArMjIzNiw3IEBAIHVwZGF0ZV9jcm9zc2luZ19qdW1wX2ZsYWdzICh2b2lkKQorICAgICBGT1JfRUFDSF9FREdFIChlLCBlaSwgYmItPnN1Y2NzKQorICAgICAgIGlmIChlLT5mbGFncyAmIEVER0VfQ1JPU1NJTkcpCisgCXsKKy0JICBpZiAoSlVNUF9QIChCQl9FTkQgKGJiKSkKKy0JICAgICAgLyogU29tZSBmbGFncyB3ZXJlIGFkZGVkIGR1cmluZyBmaXhfdXBfZmFsbF90aHJ1X2VkZ2VzLCB2aWEKKy0JCSBmb3JjZV9ub25mYWxsdGhydV9hbmRfcmVkaXJlY3QuICAqLworLQkgICAgICAmJiAhQ1JPU1NJTkdfSlVNUF9QIChCQl9FTkQgKGJiKSkpCisrCSAgaWYgKEpVTVBfUCAoQkJfRU5EIChiYikpKQorIAkgICAgQ1JPU1NJTkdfSlVNUF9QIChCQl9FTkQgKGJiKSkgPSAxOworIAkgIGJyZWFrOworIAl9CitkaWZmIC0tZ2l0IGEvZ2NjL2NmZ3J0bC5jIGIvZ2NjL2NmZ3J0bC5jCitpbmRleCBkNmU1YWMwLi5hMmFkMDc1IDEwMDY0NAorLS0tIGEvZ2NjL2NmZ3J0bC5jCisrKysgYi9nY2MvY2ZncnRsLmMKK0BAIC0xMzM0LDggKzEzMzQsNyBAQCBmaXh1cF9wYXJ0aXRpb25fY3Jvc3NpbmcgKGVkZ2UgZSkKKyAgIGlmIChCQl9QQVJUSVRJT04gKGUtPnNyYykgIT0gQkJfUEFSVElUSU9OIChlLT5kZXN0KSkKKyAgICAgeworICAgICAgIGUtPmZsYWdzIHw9IEVER0VfQ1JPU1NJTkc7CistICAgICAgaWYgKEpVTVBfUCAoQkJfRU5EIChlLT5zcmMpKQorLQkgICYmICFDUk9TU0lOR19KVU1QX1AgKEJCX0VORCAoZS0+c3JjKSkpCisrICAgICAgaWYgKEpVTVBfUCAoQkJfRU5EIChlLT5zcmMpKSkKKyAJQ1JPU1NJTkdfSlVNUF9QIChCQl9FTkQgKGUtPnNyYykpID0gMTsKKyAgICAgfQorICAgZWxzZSBpZiAoQkJfUEFSVElUSU9OIChlLT5zcmMpID09IEJCX1BBUlRJVElPTiAoZS0+ZGVzdCkpCitkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9ydGwudGV4aSBiL2djYy9kb2MvcnRsLnRleGkKK2luZGV4IDIxNTI0ZjUuLmE1OGVlZGMgMTAwNjQ0CistLS0gYS9nY2MvZG9jL3J0bC50ZXhpCisrKysgYi9nY2MvZG9jL3J0bC50ZXhpCitAQCAtNTY1LDYgKzU2NSwxNiBAQCB0aGF0IGFyZSB1c2VkIGluIGNlcnRhaW4gdHlwZXMgb2YgZXhwcmVzc2lvbi4gIE1vc3Qgb2Z0ZW4gdGhleQorIGFyZSBhY2Nlc3NlZCB3aXRoIHRoZSBmb2xsb3dpbmcgbWFjcm9zLCB3aGljaCBleHBhbmQgaW50byBsdmFsdWVzLgorIAorIEB0YWJsZSBAY29kZQorK0BmaW5kZXggQ1JPU1NJTkdfSlVNUF9QCisrQGNpbmRleCBAY29kZXtqdW1wX2luc259IGFuZCBAc2FtcHsvan0KKytAaXRlbSBDUk9TU0lOR19KVU1QX1AgKEB2YXJ7eH0pCisrTm9uemVybyBpbiBhIEBjb2Rle2p1bXBfaW5zbn0gaWYgaXQgY3Jvc3NlcyBiZXR3ZWVuIGhvdCBhbmQgY29sZCBzZWN0aW9ucywKKyt3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBiZSB2ZXJ5IGZhciBhcGFydCBpbiB0aGUgZXhlY3V0YWJsZS4gIFRoZSBwcmVzZW5jZQorK29mIHRoaXMgZmxhZyBpbmRpY2F0ZXMgdG8gb3RoZXIgb3B0aW1pemF0aW9ucyB0aGF0IHRoaXMgYnJhbmNoaW5nIGluc3RydWN0aW9uCisrc2hvdWxkIG5vdCBiZSBgYGNvbGxhcHNlZCcnIGludG8gYSBzaW1wbGVyIGJyYW5jaGluZyBjb25zdHJ1Y3QuICBJdCBpcyB1c2VkCisrd2hlbiB0aGUgb3B0aW1pemF0aW9uIHRvIHBhcnRpdGlvbiBiYXNpYyBibG9ja3MgaW50byBob3QgYW5kIGNvbGQgc2VjdGlvbnMKKytpcyB0dXJuZWQgb24uCisrCisgQGZpbmRleCBDT05TVEFOVF9QT09MX0FERFJFU1NfUAorIEBjaW5kZXggQGNvZGV7c3ltYm9sX3JlZn0gYW5kIEBzYW1wey91fQorIEBjaW5kZXggQGNvZGV7dW5jaGFuZ2luZ30sIGluIEBjb2Rle3N5bWJvbF9yZWZ9CitAQCAtNTc3LDM3ICs1ODcsNiBAQCBJbiBlaXRoZXIgY2FzZSBHQ0MgYXNzdW1lcyB0aGVzZSBhZGRyZXNzZXMgY2FuIGJlIGFkZHJlc3NlZCBkaXJlY3RseSwKKyBwZXJoYXBzIHdpdGggdGhlIGhlbHAgb2YgYmFzZSByZWdpc3RlcnMuCisgU3RvcmVkIGluIHRoZSBAY29kZXt1bmNoYW5naW5nfSBmaWVsZCBhbmQgcHJpbnRlZCBhcyBAc2FtcHsvdX0uCisgCistQGZpbmRleCBSVExfQ09OU1RfQ0FMTF9QCistQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvdX0KKy1AY2luZGV4IEBjb2Rle3VuY2hhbmdpbmd9LCBpbiBAY29kZXtjYWxsX2luc259CistQGl0ZW0gUlRMX0NPTlNUX0NBTExfUCAoQHZhcnt4fSkKKy1JbiBhIEBjb2Rle2NhbGxfaW5zbn0gaW5kaWNhdGVzIHRoYXQgdGhlIGluc24gcmVwcmVzZW50cyBhIGNhbGwgdG8gYQorLWNvbnN0IGZ1bmN0aW9uLiAgU3RvcmVkIGluIHRoZSBAY29kZXt1bmNoYW5naW5nfSBmaWVsZCBhbmQgcHJpbnRlZCBhcworLUBzYW1wey91fS4KKy0KKy1AZmluZGV4IFJUTF9QVVJFX0NBTExfUAorLUBjaW5kZXggQGNvZGV7Y2FsbF9pbnNufSBhbmQgQHNhbXB7L2l9CistQGNpbmRleCBAY29kZXtyZXR1cm5fdmFsfSwgaW4gQGNvZGV7Y2FsbF9pbnNufQorLUBpdGVtIFJUTF9QVVJFX0NBTExfUCAoQHZhcnt4fSkKKy1JbiBhIEBjb2Rle2NhbGxfaW5zbn0gaW5kaWNhdGVzIHRoYXQgdGhlIGluc24gcmVwcmVzZW50cyBhIGNhbGwgdG8gYQorLXB1cmUgZnVuY3Rpb24uICBTdG9yZWQgaW4gdGhlIEBjb2Rle3JldHVybl92YWx9IGZpZWxkIGFuZCBwcmludGVkIGFzCistQHNhbXB7L2l9LgorLQorLUBmaW5kZXggUlRMX0NPTlNUX09SX1BVUkVfQ0FMTF9QCistQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvdX0gb3IgQHNhbXB7L2l9CistQGl0ZW0gUlRMX0NPTlNUX09SX1BVUkVfQ0FMTF9QIChAdmFye3h9KQorLUluIGEgQGNvZGV7Y2FsbF9pbnNufSwgdHJ1ZSBpZiBAY29kZXtSVExfQ09OU1RfQ0FMTF9QfSBvcgorLUBjb2Rle1JUTF9QVVJFX0NBTExfUH0gaXMgdHJ1ZS4KKy0KKy1AZmluZGV4IFJUTF9MT09QSU5HX0NPTlNUX09SX1BVUkVfQ0FMTF9QCistQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvY30KKy1AY2luZGV4IEBjb2Rle2NhbGx9LCBpbiBAY29kZXtjYWxsX2luc259CistQGl0ZW0gUlRMX0xPT1BJTkdfQ09OU1RfT1JfUFVSRV9DQUxMX1AgKEB2YXJ7eH0pCistSW4gYSBAY29kZXtjYWxsX2luc259IGluZGljYXRlcyB0aGF0IHRoZSBpbnNuIHJlcHJlc2VudHMgYSBwb3NzaWJseQorLWluZmluaXRlIGxvb3BpbmcgY2FsbCB0byBhIGNvbnN0IG9yIHB1cmUgZnVuY3Rpb24uICBTdG9yZWQgaW4gdGhlCistQGNvZGV7Y2FsbH0gZmllbGQgYW5kIHByaW50ZWQgYXMgQHNhbXB7L2N9LiAgT25seSB0cnVlIGlmIG9uZSBvZgorLUBjb2Rle1JUTF9DT05TVF9DQUxMX1B9IG9yIEBjb2Rle1JUTF9QVVJFX0NBTExfUH0gaXMgdHJ1ZS4KKy0KKyBAZmluZGV4IElOU05fQU5OVUxMRURfQlJBTkNIX1AKKyBAY2luZGV4IEBjb2Rle2p1bXBfaW5zbn0gYW5kIEBzYW1wey91fQorIEBjaW5kZXggQGNvZGV7Y2FsbF9pbnNufSBhbmQgQHNhbXB7L3V9CitAQCAtNzAyLDYgKzY4MSwyOSBAQCBTdG9yZWQgaW4gdGhlIEBjb2Rle2NhbGx9IGZpZWxkIGFuZCBwcmludGVkIGFzIEBzYW1wey9jfS4KKyBOb256ZXJvIGluIGEgQGNvZGV7bWVtfSBpZiB0aGUgbWVtb3J5IHJlZmVyZW5jZSBob2xkcyBhIHBvaW50ZXIuCisgU3RvcmVkIGluIHRoZSBAY29kZXtmcmFtZV9yZWxhdGVkfSBmaWVsZCBhbmQgcHJpbnRlZCBhcyBAc2FtcHsvZn0uCisgCisrQGZpbmRleCBNRU1fUkVBRE9OTFlfUAorK0BjaW5kZXggQGNvZGV7bWVtfSBhbmQgQHNhbXB7L3V9CisrQGNpbmRleCBAY29kZXt1bmNoYW5naW5nfSwgaW4gQGNvZGV7bWVtfQorK0BpdGVtIE1FTV9SRUFET05MWV9QIChAdmFye3h9KQorK05vbnplcm8gaW4gYSBAY29kZXttZW19LCBpZiB0aGUgbWVtb3J5IGlzIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGFuZCByZWFkLW9ubHkuCisrCisrUmVhZC1vbmx5IGluIHRoaXMgY29udGV4dCBtZWFucyBuZXZlciBtb2RpZmllZCBkdXJpbmcgdGhlIGxpZmV0aW1lIG9mIHRoZQorK3Byb2dyYW0sIG5vdCBuZWNlc3NhcmlseSBpbiBST00gb3IgaW4gd3JpdGUtZGlzYWJsZWQgcGFnZXMuICBBIGNvbW1vbgorK2V4YW1wbGUgb2YgdGhlIGxhdGVyIGlzIGEgc2hhcmVkIGxpYnJhcnkncyBnbG9iYWwgb2Zmc2V0IHRhYmxlLiAgVGhpcworK3RhYmxlIGlzIGluaXRpYWxpemVkIGJ5IHRoZSBydW50aW1lIGxvYWRlciwgc28gdGhlIG1lbW9yeSBpcyB0ZWNobmljYWxseQorK3dyaXRhYmxlLCBidXQgYWZ0ZXIgY29udHJvbCBpcyB0cmFuc2ZlcnJlZCBmcm9tIHRoZSBydW50aW1lIGxvYWRlciB0byB0aGUKKythcHBsaWNhdGlvbiwgdGhpcyBtZW1vcnkgd2lsbCBuZXZlciBiZSBzdWJzZXF1ZW50bHkgbW9kaWZpZWQuCisrCisrU3RvcmVkIGluIHRoZSBAY29kZXt1bmNoYW5naW5nfSBmaWVsZCBhbmQgcHJpbnRlZCBhcyBAc2FtcHsvdX0uCisrCisrQGZpbmRleCBQUkVGRVRDSF9TQ0hFRFVMRV9CQVJSSUVSX1AKKytAY2luZGV4IEBjb2Rle3ByZWZldGNofSBhbmQgQHNhbXB7L3Z9CisrQGNpbmRleCBAY29kZXt2b2xhdGlsZX0sIGluIEBjb2Rle3ByZWZldGNofQorK0BpdGVtIFBSRUZFVENIX1NDSEVEVUxFX0JBUlJJRVJfUCAoQHZhcnt4fSkKKytJbiBhIEBjb2Rle3ByZWZldGNofSwgaW5kaWNhdGVzIHRoYXQgdGhlIHByZWZldGNoIGlzIGEgc2NoZWR1bGluZyBiYXJyaWVyLgorK05vIG90aGVyIElOU05zIHdpbGwgYmUgbW92ZWQgb3ZlciBpdC4KKytTdG9yZWQgaW4gdGhlIEBjb2Rle3ZvbGF0aWx9IGZpZWxkIGFuZCBwcmludGVkIGFzIEBzYW1wey92fS4KKysKKyBAZmluZGV4IFJFR19GVU5DVElPTl9WQUxVRV9QCisgQGNpbmRleCBAY29kZXtyZWd9IGFuZCBAc2FtcHsvaX0KKyBAY2luZGV4IEBjb2Rle3JldHVybl92YWx9LCBpbiBAY29kZXtyZWd9CitAQCAtNzMxLDYgKzczMywzNyBAQCBUaGUgc2FtZSBoYXJkIHJlZ2lzdGVyIG1heSBiZSB1c2VkIGFsc28gZm9yIGNvbGxlY3RpbmcgdGhlIHZhbHVlcyBvZgorIGZ1bmN0aW9ucyBjYWxsZWQgYnkgdGhpcyBvbmUsIGJ1dCBAY29kZXtSRUdfRlVOQ1RJT05fVkFMVUVfUH0gaXMgemVybworIGluIHRoaXMga2luZCBvZiB1c2UuCisgCisrQGZpbmRleCBSVExfQ09OU1RfQ0FMTF9QCisrQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvdX0KKytAY2luZGV4IEBjb2Rle3VuY2hhbmdpbmd9LCBpbiBAY29kZXtjYWxsX2luc259CisrQGl0ZW0gUlRMX0NPTlNUX0NBTExfUCAoQHZhcnt4fSkKKytJbiBhIEBjb2Rle2NhbGxfaW5zbn0gaW5kaWNhdGVzIHRoYXQgdGhlIGluc24gcmVwcmVzZW50cyBhIGNhbGwgdG8gYQorK2NvbnN0IGZ1bmN0aW9uLiAgU3RvcmVkIGluIHRoZSBAY29kZXt1bmNoYW5naW5nfSBmaWVsZCBhbmQgcHJpbnRlZCBhcworK0BzYW1wey91fS4KKysKKytAZmluZGV4IFJUTF9QVVJFX0NBTExfUAorK0BjaW5kZXggQGNvZGV7Y2FsbF9pbnNufSBhbmQgQHNhbXB7L2l9CisrQGNpbmRleCBAY29kZXtyZXR1cm5fdmFsfSwgaW4gQGNvZGV7Y2FsbF9pbnNufQorK0BpdGVtIFJUTF9QVVJFX0NBTExfUCAoQHZhcnt4fSkKKytJbiBhIEBjb2Rle2NhbGxfaW5zbn0gaW5kaWNhdGVzIHRoYXQgdGhlIGluc24gcmVwcmVzZW50cyBhIGNhbGwgdG8gYQorK3B1cmUgZnVuY3Rpb24uICBTdG9yZWQgaW4gdGhlIEBjb2Rle3JldHVybl92YWx9IGZpZWxkIGFuZCBwcmludGVkIGFzCisrQHNhbXB7L2l9LgorKworK0BmaW5kZXggUlRMX0NPTlNUX09SX1BVUkVfQ0FMTF9QCisrQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvdX0gb3IgQHNhbXB7L2l9CisrQGl0ZW0gUlRMX0NPTlNUX09SX1BVUkVfQ0FMTF9QIChAdmFye3h9KQorK0luIGEgQGNvZGV7Y2FsbF9pbnNufSwgdHJ1ZSBpZiBAY29kZXtSVExfQ09OU1RfQ0FMTF9QfSBvcgorK0Bjb2Rle1JUTF9QVVJFX0NBTExfUH0gaXMgdHJ1ZS4KKysKKytAZmluZGV4IFJUTF9MT09QSU5HX0NPTlNUX09SX1BVUkVfQ0FMTF9QCisrQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvY30KKytAY2luZGV4IEBjb2Rle2NhbGx9LCBpbiBAY29kZXtjYWxsX2luc259CisrQGl0ZW0gUlRMX0xPT1BJTkdfQ09OU1RfT1JfUFVSRV9DQUxMX1AgKEB2YXJ7eH0pCisrSW4gYSBAY29kZXtjYWxsX2luc259IGluZGljYXRlcyB0aGF0IHRoZSBpbnNuIHJlcHJlc2VudHMgYSBwb3NzaWJseQorK2luZmluaXRlIGxvb3BpbmcgY2FsbCB0byBhIGNvbnN0IG9yIHB1cmUgZnVuY3Rpb24uICBTdG9yZWQgaW4gdGhlCisrQGNvZGV7Y2FsbH0gZmllbGQgYW5kIHByaW50ZWQgYXMgQHNhbXB7L2N9LiAgT25seSB0cnVlIGlmIG9uZSBvZgorK0Bjb2Rle1JUTF9DT05TVF9DQUxMX1B9IG9yIEBjb2Rle1JUTF9QVVJFX0NBTExfUH0gaXMgdHJ1ZS4KKysKKyBAZmluZGV4IFJUWF9GUkFNRV9SRUxBVEVEX1AKKyBAY2luZGV4IEBjb2Rle2luc259IGFuZCBAc2FtcHsvZn0KKyBAY2luZGV4IEBjb2Rle2NhbGxfaW5zbn0gYW5kIEBzYW1wey9mfQorQEAgLTc2NSwyMSArNzk4LDYgQEAgY29tcHV0YXRpb24gcGVyZm9ybWVkIGJ5IHRoaXMgaW5zdHJ1Y3Rpb24sIGkuZS4sIG9uZSB0aGF0CisgVGhpcyBmbGFnIGlzIHJlcXVpcmVkIGZvciBleGNlcHRpb24gaGFuZGxpbmcgc3VwcG9ydCBvbiB0YXJnZXRzIHdpdGggUlRMCisgcHJvbG9ndWVzLgorIAorLUBmaW5kZXggTUVNX1JFQURPTkxZX1AKKy1AY2luZGV4IEBjb2Rle21lbX0gYW5kIEBzYW1wey91fQorLUBjaW5kZXggQGNvZGV7dW5jaGFuZ2luZ30sIGluIEBjb2Rle21lbX0KKy1AaXRlbSBNRU1fUkVBRE9OTFlfUCAoQHZhcnt4fSkKKy1Ob256ZXJvIGluIGEgQGNvZGV7bWVtfSwgaWYgdGhlIG1lbW9yeSBpcyBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgcmVhZC1vbmx5LgorLQorLVJlYWQtb25seSBpbiB0aGlzIGNvbnRleHQgbWVhbnMgbmV2ZXIgbW9kaWZpZWQgZHVyaW5nIHRoZSBsaWZldGltZSBvZiB0aGUKKy1wcm9ncmFtLCBub3QgbmVjZXNzYXJpbHkgaW4gUk9NIG9yIGluIHdyaXRlLWRpc2FibGVkIHBhZ2VzLiAgQSBjb21tb24KKy1leGFtcGxlIG9mIHRoZSBsYXRlciBpcyBhIHNoYXJlZCBsaWJyYXJ5J3MgZ2xvYmFsIG9mZnNldCB0YWJsZS4gIFRoaXMKKy10YWJsZSBpcyBpbml0aWFsaXplZCBieSB0aGUgcnVudGltZSBsb2FkZXIsIHNvIHRoZSBtZW1vcnkgaXMgdGVjaG5pY2FsbHkKKy13cml0YWJsZSwgYnV0IGFmdGVyIGNvbnRyb2wgaXMgdHJhbnNmZXJyZWQgZnJvbSB0aGUgcnVudGltZSBsb2FkZXIgdG8gdGhlCistYXBwbGljYXRpb24sIHRoaXMgbWVtb3J5IHdpbGwgbmV2ZXIgYmUgc3Vic2VxdWVudGx5IG1vZGlmaWVkLgorLQorLVN0b3JlZCBpbiB0aGUgQGNvZGV7dW5jaGFuZ2luZ30gZmllbGQgYW5kIHByaW50ZWQgYXMgQHNhbXB7L3V9LgorLQorIEBmaW5kZXggU0NIRURfR1JPVVBfUAorIEBjaW5kZXggQGNvZGV7aW5zbn0gYW5kIEBzYW1wey9zfQorIEBjaW5kZXggQGNvZGV7Y2FsbF9pbnNufSBhbmQgQHNhbXB7L3N9CitAQCAtODc5LDE0ICs4OTcsNiBAQCBTdG9yZWQgaW4gdGhlIEBjb2Rle3ZvbGF0aWx9IGZpZWxkIGFuZCBwcmludGVkIGFzIEBzYW1wey92fS4KKyBNb3N0IHVzZXMgb2YgQGNvZGV7U1lNQk9MX1JFRl9GTEFHfSBhcmUgaGlzdG9yaWMgYW5kIG1heSBiZSBzdWJzdW1lZAorIGJ5IEBjb2Rle1NZTUJPTF9SRUZfRkxBR1N9LiAgQ2VydGFpbmx5IHVzZSBvZiBAY29kZXtTWU1CT0xfUkVGX0ZMQUdTfQorIGlzIG1hbmRhdG9yeSBpZiB0aGUgdGFyZ2V0IHJlcXVpcmVzIG1vcmUgdGhhbiBvbmUgYml0IG9mIHN0b3JhZ2UuCistCistQGZpbmRleCBQUkVGRVRDSF9TQ0hFRFVMRV9CQVJSSUVSX1AKKy1AY2luZGV4IEBjb2Rle3ByZWZldGNofSBhbmQgQHNhbXB7L3Z9CistQGNpbmRleCBAY29kZXt2b2xhdGlsZX0sIGluIEBjb2Rle3ByZWZldGNofQorLUBpdGVtIFBSRUZFVENIX1NDSEVEVUxFX0JBUlJJRVJfUCAoQHZhcnt4fSkKKy1JbiBhIEBjb2Rle3ByZWZldGNofSwgaW5kaWNhdGVzIHRoYXQgdGhlIHByZWZldGNoIGlzIGEgc2NoZWR1bGluZyBiYXJyaWVyLgorLU5vIG90aGVyIElOU05zIHdpbGwgYmUgbW92ZWQgb3ZlciBpdC4KKy1TdG9yZWQgaW4gdGhlIEBjb2Rle3ZvbGF0aWx9IGZpZWxkIGFuZCBwcmludGVkIGFzIEBzYW1wey92fS4KKyBAZW5kIHRhYmxlCisgCisgVGhlc2UgYXJlIHRoZSBmaWVsZHMgdG8gd2hpY2ggdGhlIGFib3ZlIG1hY3JvcyByZWZlcjoKK0BAIC05NzQsNiArOTg1LDggQEAgSW4gYSBAY29kZXtzZXR9LCAxIG1lYW5zIGl0IGlzIGZvciBhIHJldHVybi4KKyAKKyBJbiBhIEBjb2Rle2NhbGxfaW5zbn0sIDEgbWVhbnMgaXQgaXMgYSBzaWJsaW5nIGNhbGwuCisgCisrSW4gYSBAY29kZXtqdW1wX2luc259LCAxIG1lYW5zIGl0IGlzIGEgY3Jvc3NpbmcganVtcC4KKysKKyBJbiBhbiBSVEwgZHVtcCwgdGhpcyBmbGFnIGlzIHJlcHJlc2VudGVkIGFzIEBzYW1wey9qfS4KKyAKKyBAZmluZGV4IHVuY2hhbmdpbmcKK0BAIC0zODg3LDE2ICszOTAwLDYgQEAgbXVsdGlwbGUgdGFyZ2V0czsgdGhlIGxhc3QgbGFiZWwgaW4gdGhlIGluc24gKGluIHRoZSBoaWdoZXN0IG51bWJlcmVkCisgaW5zbi1maWVsZCkgZ29lcyBpbnRvIHRoZSBAY29kZXtKVU1QX0xBQkVMfSBmaWVsZCBhbmQgZG9lcyBub3QgaGF2ZSBhCisgQGNvZGV7UkVHX0xBQkVMX1RBUkdFVH0gbm90ZS4gIEB4cmVme0luc25zLCBKVU1QX0xBQkVMfS4KKyAKKy1AZmluZGV4IFJFR19DUk9TU0lOR19KVU1QCistQGl0ZW0gUkVHX0NST1NTSU5HX0pVTVAKKy1UaGlzIGluc24gaXMgYSBicmFuY2hpbmcgaW5zdHJ1Y3Rpb24gKGVpdGhlciBhbiB1bmNvbmRpdGlvbmFsIGp1bXAgb3IKKy1hbiBpbmRpcmVjdCBqdW1wKSB3aGljaCBjcm9zc2VzIGJldHdlZW4gaG90IGFuZCBjb2xkIHNlY3Rpb25zLCB3aGljaAorLWNvdWxkIHBvdGVudGlhbGx5IGJlIHZlcnkgZmFyIGFwYXJ0IGluIHRoZSBleGVjdXRhYmxlLiAgVGhlIHByZXNlbmNlCistb2YgdGhpcyBub3RlIGluZGljYXRlcyB0byBvdGhlciBvcHRpbWl6YXRpb25zIHRoYXQgdGhpcyBicmFuY2hpbmcKKy1pbnN0cnVjdGlvbiBzaG91bGQgbm90IGJlIGBgY29sbGFwc2VkJycgaW50byBhIHNpbXBsZXIgYnJhbmNoaW5nCistY29uc3RydWN0LiAgSXQgaXMgdXNlZCB3aGVuIHRoZSBvcHRpbWl6YXRpb24gdG8gcGFydGl0aW9uIGJhc2ljIGJsb2NrcworLWludG8gaG90IGFuZCBjb2xkIHNlY3Rpb25zIGlzIHR1cm5lZCBvbi4KKy0KKyBAZmluZGV4IFJFR19TRVRKTVAKKyBAaXRlbSBSRUdfU0VUSk1QCisgQXBwZWFycyBhdHRhY2hlZCB0byBlYWNoIEBjb2Rle0NBTExfSU5TTn0gdG8gQGNvZGV7c2V0am1wfSBvciBhCitkaWZmIC0tZ2l0IGEvZ2NjL3Jlb3JnLmMgYi9nY2MvcmVvcmcuYworaW5kZXggNTkxNGFmNi4uNzdmM2ZlNyAxMDA2NDQKKy0tLSBhL2djYy9yZW9yZy5jCisrKysgYi9nY2MvcmVvcmcuYworQEAgLTMzNjAsMTAgKzMzNjAsMTEgQEAgcmVsYXhfZGVsYXlfc2xvdHMgKHJ0eF9pbnNuICpmaXJzdCkKKyAJfQorIAorICAgICAgIC8qIFNlZSBpZiB3ZSBoYXZlIGEgc2ltcGxlIChjb25kaXRpb25hbCkganVtcCB0aGF0IGlzIHVzZWxlc3MuICAqLworLSAgICAgIGlmICghIElOU05fQU5OVUxMRURfQlJBTkNIX1AgKGRlbGF5X2p1bXBfaW5zbikKKy0JICAmJiAhIGNvbmRqdW1wX2luX3BhcmFsbGVsX3AgKGRlbGF5X2p1bXBfaW5zbikKKysgICAgICBpZiAoIUNST1NTSU5HX0pVTVBfUCAoZGVsYXlfanVtcF9pbnNuKQorKwkgICYmICFJTlNOX0FOTlVMTEVEX0JSQU5DSF9QIChkZWxheV9qdW1wX2luc24pCisrCSAgJiYgIWNvbmRqdW1wX2luX3BhcmFsbGVsX3AgKGRlbGF5X2p1bXBfaW5zbikKKyAJICAmJiBwcmV2X2FjdGl2ZV9pbnNuIChhc19hPHJ0eF9pbnNuICo+ICh0YXJnZXRfbGFiZWwpKSA9PSBpbnNuCistCSAgJiYgISBCQVJSSUVSX1AgKHByZXZfbm9ubm90ZV9pbnNuIChhc19hPHJ0eF9pbnNuICo+ICh0YXJnZXRfbGFiZWwpKSkKKysJICAmJiAhQkFSUklFUl9QIChwcmV2X25vbm5vdGVfaW5zbiAoYXNfYTxydHhfaW5zbiAqPiAodGFyZ2V0X2xhYmVsKSkpCisgCSAgLyogSWYgdGhlIGxhc3QgaW5zbiBpbiB0aGUgZGVsYXkgc2xvdCBzZXRzIENDMCBmb3Igc29tZSBpbnNuLAorIAkgICAgIHZhcmlvdXMgY29kZSBhc3N1bWVzIHRoYXQgaXQgaXMgaW4gYSBkZWxheSBzbG90LiAgV2UgY291bGQKKyAJICAgICBwdXQgaXQgYmFjayB3aGVyZSBpdCBiZWxvbmdlZCBhbmQgZGVsZXRlIHRoZSByZWdpc3RlciBub3RlcywKKy0tIAorMS44LjUuNgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNTAtUklTQy1WLUhhbmRsZS1ub24tbGVnaXRpbWF0ZS1hZGRyZXNzLWluLXJpc2N2X2xlZ2l0aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA1MC1SSVNDLVYtSGFuZGxlLW5vbi1sZWdpdGltYXRlLWFkZHJlc3MtaW4tcmlzY3ZfbGVnaXRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTE0ZDA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA1MC1SSVNDLVYtSGFuZGxlLW5vbi1sZWdpdGltYXRlLWFkZHJlc3MtaW4tcmlzY3ZfbGVnaXRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAxNjIxMGU2MjcwZTIwMGNkNDg5MmE5MGVjZWY2MDg5MDZiZTNhMTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2l0byBDaGVuZyA8a2l0by5jaGVuZ0BnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDQgTWF5IDIwMTcgMDI6MTE6MTMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gUklTQy1WOiBIYW5kbGUgbm9uLWxlZ2l0aW1hdGUgYWRkcmVzcyBpbgotIHJpc2N2X2xlZ2l0aW1pemVfbW92ZQotCi1HQ0MgbWF5IGdlbmVyYXRlIG5vbi1sZWdpdGltYXRlIGFkZHJlc3MgZHVlIHRvIHdlIGFsbG93IHNvbWUKLWxvYWQvc3RvcmUgd2l0aCBub24tbGVnaXRpbWF0ZSBhZGRyZXNzIGluIHBpYy5tZC4KLQotICAyMDE3LTA1LTEyICBLaXRvIENoZW5nICA8a2l0by5jaGVuZ0BnbWFpbC5jb20+Ci0KLSAgICAgICogY29uZmlnL3Jpc2N2L3Jpc2N2LmMgKHJpc2N2X2xlZ2l0aW1pemVfbW92ZSk6IEhhbmRsZQotICAgICAgbm9uLWxlZ2l0aW1hdGUgYWRkcmVzcy4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGdjYy9DaGFuZ2VMb2cgICAgICAgICAgICB8ICA1ICsrKysrCi0gZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jIHwgMTYgKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jCi1pbmRleCBmN2ZlYzRiZmNmOC4uZDUxOWJlMTY1OWEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmMKLSsrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuYwotQEAgLTEzODUsNiArMTM4NSwyMiBAQCByaXNjdl9sZWdpdGltaXplX21vdmUgKGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIHJ0eCBkZXN0LCBydHggc3JjKQotICAgICAgIHJldHVybiB0cnVlOwotICAgICB9Ci0gCi0rICAvKiBSSVNDLVYgR0NDIG1heSBnZW5lcmF0ZSBub24tbGVnaXRpbWF0ZSBhZGRyZXNzIGR1ZSB0byB3ZSBwcm92aWRlIHNvbWUKLSsgICAgIHBhdHRlcm4gZm9yIG9wdGltaXplIGFjY2VzcyBQSUMgbG9jYWwgc3ltYm9sIGFuZCBpdCdzIG1ha2UgR0NDIGdlbmVyYXRlCi0rICAgICB1bnJlY29nbml6YWJsZSBpbnN0cnVjdGlvbiBkdXJpbmcgb3B0bWl6aW5nLiAgKi8KLSsKLSsgIGlmIChNRU1fUCAoZGVzdCkgJiYgIXJpc2N2X2xlZ2l0aW1hdGVfYWRkcmVzc19wIChtb2RlLCBYRVhQIChkZXN0LCAwKSwKLSsJCQkJCQkgICByZWxvYWRfY29tcGxldGVkKSkKLSsgICAgewotKyAgICAgIFhFWFAgKGRlc3QsIDApID0gcmlzY3ZfZm9yY2VfYWRkcmVzcyAoWEVYUCAoZGVzdCwgMCksIG1vZGUpOwotKyAgICB9Ci0rCi0rICBpZiAoTUVNX1AgKHNyYykgJiYgIXJpc2N2X2xlZ2l0aW1hdGVfYWRkcmVzc19wIChtb2RlLCBYRVhQIChzcmMsIDApLAotKwkJCQkJCSAgcmVsb2FkX2NvbXBsZXRlZCkpCi0rICAgIHsKLSsgICAgICBYRVhQIChzcmMsIDApID0gcmlzY3ZfZm9yY2VfYWRkcmVzcyAoWEVYUCAoc3JjLCAwKSwgbW9kZSk7Ci0rICAgIH0KLSsKLSAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwppbmRleCA2ZDc3NjIwLi5iZGQ2ZjdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTMsNyArMyw3IEBACiBTVU1NQVJZID0gIkdOVSBjYyBhbmQgZ2NjIEMgY29tcGlsZXJzIChjcm9zcy1jYW5hZGlhbiBmb3IgJHtUQVJHRVRfQVJDSH0gdGFyZ2V0KSIKIFBOID0gImdjYy1jcm9zcy1jYW5hZGlhbi0ke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9IgogCi1ERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyB2aXJ0dWFsLyR7SE9TVF9QUkVGSVh9Z2NjLWNyb3Nzc2RrIHZpcnR1YWwvJHtIT1NUX1BSRUZJWH1iaW51dGlscy1jcm9zc3NkayB2aXJ0dWFsL25hdGl2ZXNkay0ke0hPU1RfUFJFRklYfWxpYmMtZm9yLWdjYyBuYXRpdmVzZGstZ2V0dGV4dCIKK0RFUEVORFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIHZpcnR1YWwvJHtIT1NUX1BSRUZJWH1nY2MtY3Jvc3NzZGsgdmlydHVhbC8ke0hPU1RfUFJFRklYfWJpbnV0aWxzLWNyb3Nzc2RrIHZpcnR1YWwvbmF0aXZlc2RrLSR7SE9TVF9QUkVGSVh9bGliYy1mb3ItZ2NjIG5hdGl2ZXNkay1nZXR0ZXh0IGZsZXgtbmF0aXZlIgogCiBHQ0NNVUxUSUxJQiA9ICItLWVuYWJsZS1tdWx0aWxpYiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl82LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNTNjNWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGdjYy1jcm9zcy1jYW5hZGlhbi5pbmMKLQotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM3M2U1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF82LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXyR7UFZ9LmJiCi1yZXF1aXJlIGdjYy1jcm9zcy1pbml0aWFsLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc182LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0M2NjYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGdjYy1jcm9zcy5pbmMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDkwZTExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay1pbml0aWFsXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF8ke1BWfS5iYgotcmVxdWlyZSBnY2MtY3Jvc3NzZGstaW5pdGlhbC5pbmMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka182LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYTZjNGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfJHtQVn0uYmIKLXJlcXVpcmUgZ2NjLWNyb3Nzc2RrLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCmluZGV4IGQzZDRiZDMuLjc2MjlmYTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKQEAgLTM0LDYgKzM0LDE4IEBACiAjIGxpYm11ZGZsYXAKICMgbGliZ2ZvcnRyYW4gbmVlZHMgc2VwYXJhdGUgcmVjaXBlIGR1ZSB0byBsaWJxdWFkbWF0aCBkZXBlbmRlbmN5CiAKK1NMSUIgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtQVn0iCitTTElCX05FVyA9ICIvdXNyL3NyYy9kZWJ1Zy8ke1BOfS8ke0VYVEVORFBFfSR7UFZ9LSR7UFJ9IgorCitERUJVR19QUkVGSVhfTUFQX2NsYXNzLXRhcmdldCA9ICIgXAorICAgLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7V09SS0RJUn0vcmVjaXBlLXN5c3Jvb3Q9IFwKKyAgIC1mZGVidWctcHJlZml4LW1hcD0ke1dPUktESVJ9L3JlY2lwZS1zeXNyb290LW5hdGl2ZT0gXAorICAgLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7U0xJQn09JHtTTElCX05FV30gXAorICAgLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7U0xJQn0vaW5jbHVkZT0ke1NMSUJfTkVXfS9saWJzdGRjKystdjMvLi4vaW5jbHVkZSBcCisgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTTElCfS9saWJpYmVydHk9JHtTTElCX05FV30vbGlic3RkYysrLXYzLy4uL2xpYmliZXJ0eSBcCisgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtCfT0ke1NMSUJfTkVXfSBcCisgICAiCisKIGRvX2NvbmZpZ3VyZSAoKSB7CiAJZXhwb3J0IENYWD0iJHtDWFh9IC1ub3N0ZGluYysrIC1ub3N0ZGxpYisrIgogCWZvciBkIGluIGxpYmdjYyAke1JVTlRJTUVUQVJHRVR9OyBkbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjMxZTc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGdjYy1ydW50aW1lLmluYwotCi1GSUxFU19saWJnb21wLWRldiArPSAiXAotICAgICR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2luY2x1ZGUvb3BlbmFjYy5oIFwKLSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCmluZGV4IDMxODNiMjkuLjNiN2UwMDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKQEAgLTYxLDE1ICs2MSwxOSBAQAogUkRFUEVORFNfbGlibHNhbi1kZXYgKz0gIiR7UE59IgogUkRFUEVORFNfbGlidHNhbi1kZXYgKz0gIiR7UE59IgogUlJFQ09NTUVORFNfJHtQTn0gKz0gImxpYmFzYW4gbGlidWJzYW4iCi1SUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfeDg2LTY0ID0gIiBsaWJsc2FuIGxpYnRzYW4iCiBSUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfeDg2ID0gIiBsaWJsc2FuIgorUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kX3g4Ni02NCA9ICIgbGlibHNhbiBsaWJ0c2FuIgorUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kX3Bvd2VycGM2NCA9ICIgbGlibHNhbiBsaWJ0c2FuIgorUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kX2FhcmNoNjQgPSAiIGxpYmxzYW4gbGlidHNhbiIKIAogZG9fcGFja2FnZV93cml0ZV9pcGtbZGVwZW5kc10gKz0gInZpcnR1YWwvJHtNTFBSRUZJWH0ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzOmRvX3BhY2thZ2VkYXRhIgogZG9fcGFja2FnZV93cml0ZV9kZWJbZGVwZW5kc10gKz0gInZpcnR1YWwvJHtNTFBSRUZJWH0ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzOmRvX3BhY2thZ2VkYXRhIgogZG9fcGFja2FnZV93cml0ZV9ycG1bZGVwZW5kc10gKz0gInZpcnR1YWwvJHtNTFBSRUZJWH0ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzOmRvX3BhY2thZ2VkYXRhIgogCi0jIE1JUFMsIGFhcmNoNjQsIGFuZCBTUEFSQyBhcmUgYnJva2VuLgotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44Nnxwb3dlcnBjfGFybSkuKi1saW51eCcKKyMgT25seSB4ODYsIHBvd2VycGMsIHNwYXJjLCBzMzkwLCBhcm0sIGFuZCBhYXJjaDY0IGFyZSBzdXBwb3J0ZWQKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xzcGFyY3xzMzkwfGFybXxhYXJjaDY0KS4qLWxpbnV4JworIyBtdXNsIGlzIGN1cnJlbnRseSBicm9rZW4gZW50aXJlbHkKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKIAogRklMRVNfbGliYXNhbiArPSAiJHtsaWJkaXJ9L2xpYmFzYW4uc28uKiIKIEZJTEVTX2xpYmFzYW4tZGV2ICs9ICJcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc182LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc182LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMWY2NjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLXNhbml0aXplcnMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODkwZmEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZS5pbmMKLQotRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM2MThkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLXRhcmdldC5pbmMKLQotIyBCdWlsZGluZyB3aXRoIHRodW1iIGVuYWJsZWQgb24gYXJtdjR0IGZhaWxzIHdpdGgKLSMgfCBnY2MtNC44LjEtcjAvZ2NjLTQuOC4xL2djYy9jcC9kZWNsLmM6NzQzODooLnRleHQudW5saWtlbHkrMHgyZmEpOiByZWxvY2F0aW9uIHRydW5jYXRlZCB0byBmaXQ6IFJfQVJNX1RITV9DQUxMIGFnYWluc3Qgc3ltYm9sIGBmYW5jeV9hYm9ydChjaGFyIGNvbnN0KiwgaW50LCBjaGFyIGNvbnN0KiknIGRlZmluZWQgaW4gLmdsdWVfNyBzZWN0aW9uIGluIGxpbmtlciBzdHVicwotIyB8IGdjYy00LjguMS1yMC9nY2MtNC44LjEvZ2NjL2NwL2RlY2wuYzo3NDQyOigudGV4dC51bmxpa2VseSsweDMxOCk6IGFkZGl0aW9uYWwgcmVsb2NhdGlvbiBvdmVyZmxvd3Mgb21pdHRlZCBmcm9tIHRoZSBvdXRwdXQKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTlmMjUzZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF82LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBsaWJnY2MtaW5pdGlhbC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MuaW5jCmluZGV4IDE1MDBmYjUuLjVmMWRmZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYwpAQCAtMjgsNyArMjgsNyBAQAogCiBGSUxFU18ke1BOfS1kZXYgPSAiXAogICAgICR7YmFzZV9saWJkaXJ9L2xpYmdjYyouc28gXAotICAgICR7QGJhc2VfY29uZGl0aW9uYWwoJ0JBU0VUQVJHRVRfU1lTJywgJyR7VEFSR0VUX1NZU30nLCAnJywgJyR7bGliZGlyfS8ke0JBU0VUQVJHRVRfU1lTfScsIGQpfSBcCisgICAgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ0JBU0VUQVJHRVRfU1lTJywgJyR7VEFSR0VUX1NZU30nLCAnJywgJyR7bGliZGlyfS8ke0JBU0VUQVJHRVRfU1lTfScsIGQpfSBcCiAgICAgJHtsaWJkaXJ9LyR7VEFSR0VUX1NZU30vJHtCSU5WfSogXAogICAgICR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0qIFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY182LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTE1MmYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY182LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBsaWJnY2MuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbi5pbmMKaW5kZXggNWY1ZDRhZi4uMDUyMzc2NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW4uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuLmluYwpAQCAtNiwyMiArNiwyOCBAQAogIgogCiBkb19jb25maWd1cmUgKCkgewotCXJtIC1yZiAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2ZvcnRyYW4vCi0JbWtkaXIgLXAgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdmb3J0cmFuLwotCWNkICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnZm9ydHJhbi8KLQljaG1vZCBhK3ggJHtTfS9saWJnZm9ydHJhbi9jb25maWd1cmUKLQlyZWxwYXRoPSR7QG9zLnBhdGgucmVscGF0aCgiJHtTfS9saWJnZm9ydHJhbiIsICIke0J9LyR7VEFSR0VUX1NZU30vbGliZ2ZvcnRyYW4iKX0KLQkkcmVscGF0aC9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0KLQkjIEVhc2llc3Qgd2F5IHRvIHN0b3AgYmFkIFJQQVRIcyBnZXR0aW5nIGludG8gdGhlIGxpYnJhcnkgc2luY2Ugd2UgaGF2ZSBhCi0JIyBicm9rZW4gbGlidG9vbCBoZXJlCi0Jc2VkIC1pIC1lICdzL2hhcmRjb2RlX2ludG9fbGlicz15ZXMvaGFyZGNvZGVfaW50b19saWJzPW5vLycgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdmb3J0cmFuL2xpYnRvb2wKKwlmb3IgdGFyZ2V0IGluIGxpYmJhY2t0cmFjZSBsaWJnZm9ydHJhbgorCWRvCisJCXJtIC1yZiAke0J9LyR7VEFSR0VUX1NZU30vJHRhcmdldC8KKwkJbWtkaXIgLXAgJHtCfS8ke1RBUkdFVF9TWVN9LyR0YXJnZXQvCisJCWNkICR7Qn0vJHtUQVJHRVRfU1lTfS8kdGFyZ2V0LworCQljaG1vZCBhK3ggJHtTfS8kdGFyZ2V0L2NvbmZpZ3VyZQorCQlyZWxwYXRoPSR7QG9zLnBhdGgucmVscGF0aCgiJHtTfSIsICIke0J9LyR7VEFSR0VUX1NZU30iKX0KKwkJLi4vJHJlbHBhdGgvJHRhcmdldC9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0KKwkJIyBFYXNpZXN0IHdheSB0byBzdG9wIGJhZCBSUEFUSHMgZ2V0dGluZyBpbnRvIHRoZSBsaWJyYXJ5IHNpbmNlIHdlIGhhdmUgYQorCQkjIGJyb2tlbiBsaWJ0b29sIGhlcmUKKwkJc2VkIC1pIC1lICdzL2hhcmRjb2RlX2ludG9fbGlicz15ZXMvaGFyZGNvZGVfaW50b19saWJzPW5vLycgJHtCfS8ke1RBUkdFVF9TWVN9LyR0YXJnZXQvbGlidG9vbAorCWRvbmUKIH0KIEVYVFJBQ09ORkZVTkNTICs9ICJleHRyYWN0X3N0YXNoZWRfYnVpbGRkaXIiCiBkb19jb25maWd1cmVbZGVwZW5kc10gKz0gIiR7Q09NUElMRVJERVB9IgogCiBkb19jb21waWxlICgpIHsKLQljZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2ZvcnRyYW4vCi0Jb2VfcnVubWFrZSBNVUxUSUJVSUxEVE9QPSR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnZm9ydHJhbi8KKwlmb3IgdGFyZ2V0IGluIGxpYmJhY2t0cmFjZSBsaWJnZm9ydHJhbgorCWRvCisJCWNkICR7Qn0vJHtUQVJHRVRfU1lTfS8kdGFyZ2V0LworCQlvZV9ydW5tYWtlIE1VTFRJQlVJTERUT1A9JHtCfS8ke1RBUkdFVF9TWVN9LyR0YXJnZXQvCisJZG9uZQogfQogCiBkb19pbnN0YWxsICgpIHsKQEAgLTY3LDUgKzczLDUgQEAKIHB5dGhvbiBfX2Fub255bW91cyAoKSB7CiAgICAgZiA9IGQuZ2V0VmFyKCJGT1JUUkFOIikKICAgICBpZiAiZm9ydHJhbiIgbm90IGluIGY6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJsaWJnZm9ydHJhbiBuZWVkcyBmb3J0cmFuIHN1cHBvcnQgdG8gYmUgZW5hYmxlZCBpbiB0aGUgY29tcGlsZXIiKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJsaWJnZm9ydHJhbiBuZWVkcyBmb3J0cmFuIHN1cHBvcnQgdG8gYmUgZW5hYmxlZCBpbiB0aGUgY29tcGlsZXIiKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWRkOGI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGxpYmdmb3J0cmFuLmluYwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLjEuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMC4xLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTUyOTliCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMC4xLmluYwpAQCAtMCwwICsxLDI0IEBACitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjMgJiBMR1BMdjIgJiBMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisJCSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzQiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS9nZGIvZ2RiLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGFja2FnZV9kZXZlbF9nZGJfcGF0Y2hlc18xMjAtc2lncHJvY21hc2staW52YWxpZC1jYWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItVW5icmVhay1HREJzZXJ2ZXItYnVpbGQtZm9yLXgzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nZGItRml4LWlhNjQtZGVmaW5pbmctVFJBUF9IV0JLUFQtYmVmb3JlLWluY2x1ZGluZy1nLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0OGNhYzUyN2U2ZjMwMThiODY1ZWNlMDIxZTk3MjNhYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGJkNWY5M2UzNmJhMjgxNWFkMGVmYWIwMzBkY2QwYzdiMjExZDdiMzUzYTQwYTUzZjRjMDJkN2Q1NjI5NWUzIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjdhYmQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjAuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYzICYgTEdQTHYyICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotCQkgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0JCSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0JCSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUvZ2RiL2dkYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BhY2thZ2VfZGV2ZWxfZ2RiX3BhdGNoZXNfMTIwLXNpZ3Byb2NtYXNrLWludmFsaWQtY2FsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nZGItRml4LWlhNjQtZGVmaW5pbmctVFJBUF9IV0JLUFQtYmVmb3JlLWluY2x1ZGluZy1nLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjM2QzNWNkOTQ5MDg0YmU1M2I5MmNjMWUwMzQ4NWY4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmEyNGZmZTQ5MTdlNjcwMTRlZjkyNzNlYjhiNTQ3Y2I5NmExM2U1Y2E3NDg5NWIwNmQ2ODNiMzkxZjNmNGVlIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCmluZGV4IDkxNjRhMmIuLjAzOTU3N2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCkBAIC01LDYgKzUsNyBAQAogCiBMVFROR1VTVCA9ICJsdHRuZy11c3QiCiBMVFROR1VTVF9hYXJjaDY0ID0gIiIKK0xUVE5HVVNUX3Jpc2N2NjQgPSAiIgogTFRUTkdVU1RfbWlwc2FyY2ggPSAiIgogTFRUTkdVU1Rfc2g0ID0gIiIKIExUVE5HVVNUX2xpYmMtbXVzbCA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW4uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuLmluYwppbmRleCAzZmYxOTg5Li40ZmM2NzQ3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW4uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTEzLDkgKzEzLDkgQEAKICMgT3ZlcnJpZGVzIFBBQ0tBR0VDT05GSUcgdmFyaWFibGVzIGluIGdkYi1jb21tb24uaW5jCiBQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIHJlYWRsaW5lIgogUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtXT1JLRElSfS9weXRob24sLS13aXRob3V0LXB5dGhvbixuYXRpdmVzZGstcHl0aG9uMywgXAotICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZXNkay1weXRob24zLWNvcmUgbmF0aXZlc2RrLXB5dGhvbjMtbGFuZyBuYXRpdmVzZGstcHl0aG9uMy1yZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlc2RrLXB5dGhvbjMtY29yZSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlc2RrLXB5dGhvbjMtY29kZWNzIG5hdGl2ZXNkay1weXRob24zLW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlc2RrLXB5dGhvbjMtaW1wb3J0bGliIgorICAgICAgICAgICAgICAgICAgICAgICAgICIKIFBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1zeXN0ZW0tcmVhZGxpbmUsLS13aXRob3V0LXN5c3RlbS1yZWFkbGluZSxuYXRpdmVzZGstcmVhZGxpbmUiCiAKIFNTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7U1RBR0lOR19EQVRBRElSfS9nZGIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuXzguMC4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4wLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc184LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4wLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc184LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc184LjAuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTItVW5icmVhay1HREJzZXJ2ZXItYnVpbGQtZm9yLXgzMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEyLVVuYnJlYWstR0RCc2VydmVyLWJ1aWxkLWZvci14MzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThhM2NlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEyLVVuYnJlYWstR0RCc2VydmVyLWJ1aWxkLWZvci14MzIucGF0Y2gKQEAgLTAsMCArMSwxMDEgQEAKK0Zyb20gM2UxZTQwMTA1M2VhNWYwMmE5ZTljNjVhYmRkZDMxYTAzYmFhMWJkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFlhbyBRaSA8eWFvLnFpQGxpbmFyby5vcmc+CitEYXRlOiBGcmksIDI5IERlYyAyMDE3IDEyOjU3OjI1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFVuYnJlYWsgR0RCc2VydmVyIGJ1aWxkIGZvciB4MzIKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworV2hlbiBJIHZlcmlmeSBteSB0YXJnZXQgZGVzY3JpcHRpb24gY2hhbmdlcywgSSBidWlsZCBHREIgYW5kIEdEQnNlcnZlciBmb3IKK3gzMiwgYnV0IGl0IGZhaWxlZC4KKworLy4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jCisuLi8uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYzogSW4gZnVuY3Rpb24g4oCYY29uc3QgdGFyZ2V0X2Rlc2MqIGdldF9pcGFfdGRlc2MoaW50KeKAmToKKy4uLy4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jOjE4NDoxMDogZXJyb3I6IOKAmFg4Nl9UREVTQ19BVlg1MTLigJkgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCisgICAgIGNhc2UgWDg2X1RERVNDX0FWWDUxMjoKKyAgICAgICAgICBeCisuLi8uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYzoxODU6MTQ6IGVycm9yOiDigJh0ZGVzY194MzJfYXZ4NTEyX2xpbnV44oCZIHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZQorICAgICAgIHJldHVybiB0ZGVzY194MzJfYXZ4NTEyX2xpbnV4OworICAgICAgICAgICAgICBeCisuLi8uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYzogSW4gZnVuY3Rpb24g4oCYdm9pZCBpbml0aWFsaXplX2xvd190cmFjZXBvaW50KCnigJk6CisuLi8uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYzoyODI6MzY6IGVycm9yOiDigJhpbml0X3JlZ2lzdGVyc194MzJfYXZ4NTEyX2xpbnV44oCZIHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZQorICAgaW5pdF9yZWdpc3RlcnNfeDMyX2F2eDUxMl9saW51eCAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKworaXBhX3gzMl9saW51eF9yZWdvYmogdXNlIHRvIGJlIHRoZXJlLCBidXQgcmVtb3ZlZCBieQorMjIwNDk0MjVjZTQwMzI0MTM5YmU4MmQ5YTZlYzUxOGM0NmI2NTgxNSBieSBtaXN0YWtlLgorCitnZGIvZ2Ric2VydmVyOgorCisyMDE3LTA4LTA0ICBZYW8gUWkgIDx5YW8ucWlAbGluYXJvLm9yZz4KKworICAgICAgICAqIGNvbmZpZ3VyZS5zcnYgKGlwYV94MzJfbGludXhfcmVnb2JqKTogTmV3LgorICAgICAgICAqIGxpbnV4LWFtZDY0LWlwYS5jIChnZXRfaXBhX3RkZXNjKTogVXNlIFg4Nl9UREVTQ19BVlhfQVZYNTEyCisgICAgICAgIGluc3RlYWQgb2YgWDg2X1RERVNDX0FWWDUxMi4KKyAgICAgICAgKGluaXRpYWxpemVfbG93X3RyYWNlcG9pbnQpOiBDYWxsCisgICAgICAgIGluaXRfcmVnaXN0ZXJzX3gzMl9hdnhfYXZ4NTEyX2xpbnV4LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC9naXR3ZWIuY2dpP3A9YmludXRpbHMtZ2RiLmdpdDthPWNvbW1pdGRpZmY7aD1mMDJmZDc3NDVkMDAzZDY1ZmQzYjk4MTYxOGUwN2I4NzRiNzIxZDc5XQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICB8IDggKysrKysrKysKKyBnZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYgICAgIHwgMSArCisgZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYyB8IDYgKysrLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCitpbmRleCA0YWMyZDYzLi5iNWI4MjI4IDEwMDY0NAorLS0tIGEvQ2hhbmdlTG9nCisrKysgYi9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsMTEgQEAKKysgMjAxNy0wOC0wNCAgWWFvIFFpICA8eWFvLnFpQGxpbmFyby5vcmc+CisrCisrCSogY29uZmlndXJlLnNydiAoaXBhX3gzMl9saW51eF9yZWdvYmopOiBOZXcuCisrCSogbGludXgtYW1kNjQtaXBhLmMgKGdldF9pcGFfdGRlc2MpOiBVc2UgWDg2X1RERVNDX0FWWF9BVlg1MTIKKysJaW5zdGVhZCBvZiBYODZfVERFU0NfQVZYNTEyLgorKwkoaW5pdGlhbGl6ZV9sb3dfdHJhY2Vwb2ludCk6IENhbGwKKysJaW5pdF9yZWdpc3RlcnNfeDMyX2F2eF9hdng1MTJfbGludXguCisrCisgMjAxNy0wNC0xMyAgQW5kcmV3IEplbm5lciAgPGFuZHJld0Bjb2Rlc291cmNlcnkuY29tPgorIAorIAkqIGNvbmZpZy5zdWI6IFN5bmMgd2l0aCBtYXN0ZXIgdmVyc2lvbiBpbiBjb25maWcgcHJvamVjdC4KK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYgYi9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYKK2luZGV4IGQwMGQ5ZTIuLjU2OTUxYzggMTAwNjQ0CistLS0gYS9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydgorQEAgLTMxLDYgKzMxLDcgQEAgc3J2X2FtZDY0X2xpbnV4X3JlZ29iaj0iYW1kNjQtbGludXgubyBhbWQ2NC1hdngtbGludXgubyBhbWQ2NC1hdngtYXZ4NTEyLWxpbnV4Lm8KKyAKKyBpcGFfaTM4Nl9saW51eF9yZWdvYmo9ImkzODYtbGludXgtaXBhLm8gaTM4Ni1hdngtbGludXgtaXBhLm8gIGkzODYtYXZ4LW1weC1saW51eC1pcGEubyBpMzg2LWF2eC1hdng1MTItbGludXgtaXBhLm8gaTM4Ni1hdngtbXB4LWF2eDUxMi1wa3UtbGludXgtaXBhLm8gaTM4Ni1tcHgtbGludXgtaXBhLm8gaTM4Ni1tbXgtbGludXgtaXBhLm8iCisgaXBhX2FtZDY0X2xpbnV4X3JlZ29iaj0iYW1kNjQtbGludXgtaXBhLm8gYW1kNjQtYXZ4LWxpbnV4LWlwYS5vIGFtZDY0LWF2eC1tcHgtbGludXgtaXBhLm8gYW1kNjQtYXZ4LWF2eDUxMi1saW51eC1pcGEubyBhbWQ2NC1hdngtbXB4LWF2eDUxMi1wa3UtbGludXgtaXBhLm8gYW1kNjQtbXB4LWxpbnV4LWlwYS5vIgorK2lwYV94MzJfbGludXhfcmVnb2JqPSJ4MzItbGludXgtaXBhLm8geDMyLWF2eC1saW51eC1pcGEubyB4MzItYXZ4LWF2eDUxMi1saW51eC1pcGEubyIKKyBpcGFfcHBjX2xpbnV4X3JlZ29iaj0icG93ZXJwYy0zMmwtaXBhLm8gcG93ZXJwYy1hbHRpdmVjMzJsLWlwYS5vIHBvd2VycGMtY2VsbDMybC1pcGEubyBwb3dlcnBjLXZzeDMybC1pcGEubyBwb3dlcnBjLWlzYTIwNS0zMmwtaXBhLm8gcG93ZXJwYy1pc2EyMDUtYWx0aXZlYzMybC1pcGEubyBwb3dlcnBjLWlzYTIwNS12c3gzMmwtaXBhLm8gcG93ZXJwYy1lNTAwbC1pcGEubyBwb3dlcnBjLTY0bC1pcGEubyBwb3dlcnBjLWFsdGl2ZWM2NGwtaXBhLm8gcG93ZXJwYy1jZWxsNjRsLWlwYS5vIHBvd2VycGMtdnN4NjRsLWlwYS5vIHBvd2VycGMtaXNhMjA1LTY0bC1pcGEubyBwb3dlcnBjLWlzYTIwNS1hbHRpdmVjNjRsLWlwYS5vIHBvd2VycGMtaXNhMjA1LXZzeDY0bC1pcGEubyIKKyAKKyBzcnZfaTM4Nl8zMmJpdF94bWxmaWxlcz0iaTM4Ni8zMmJpdC1jb3JlLnhtbCBpMzg2LzMyYml0LXNzZS54bWwgaTM4Ni8zMmJpdC1hdngueG1sIGkzODYvMzJiaXQtYXZ4NTEyLnhtbCBpMzg2LzMyYml0LW1weC54bWwgaTM4Ni8zMmJpdC1wa2V5cy54bWwiCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmMKK2luZGV4IDY3ZjM2YzIuLjY4MzMzOWIgMTAwNjQ0CistLS0gYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jCisrKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jCitAQCAtMTgxLDggKzE4MSw4IEBAIGdldF9pcGFfdGRlc2MgKGludCBpZHgpCisgICAgICAgcmV0dXJuIHRkZXNjX3gzMl9saW51eDsKKyAgICAgY2FzZSBYODZfVERFU0NfQVZYOgorICAgICAgIHJldHVybiB0ZGVzY194MzJfYXZ4X2xpbnV4OworLSAgICBjYXNlIFg4Nl9UREVTQ19BVlg1MTI6CistICAgICAgcmV0dXJuIHRkZXNjX3gzMl9hdng1MTJfbGludXg7CisrICAgIGNhc2UgWDg2X1RERVNDX0FWWF9BVlg1MTI6CisrICAgICAgcmV0dXJuIHRkZXNjX3gzMl9hdnhfYXZ4NTEyX2xpbnV4OworICAgICBkZWZhdWx0OgorICAgICAgIGJyZWFrOworICAgICB9CitAQCAtMjc5LDcgKzI3OSw3IEBAIGluaXRpYWxpemVfbG93X3RyYWNlcG9pbnQgKHZvaWQpCisgI2lmIGRlZmluZWQgX19JTFAzMl9fCisgICBpbml0X3JlZ2lzdGVyc194MzJfbGludXggKCk7CisgICBpbml0X3JlZ2lzdGVyc194MzJfYXZ4X2xpbnV4ICgpOworLSAgaW5pdF9yZWdpc3RlcnNfeDMyX2F2eDUxMl9saW51eCAoKTsKKysgIGluaXRfcmVnaXN0ZXJzX3gzMl9hdnhfYXZ4NTEyX2xpbnV4ICgpOworICNlbHNlCisgICBpbml0X3JlZ2lzdGVyc19hbWQ2NF9saW51eCAoKTsKKyAgIGluaXRfcmVnaXN0ZXJzX2FtZDY0X2F2eF9saW51eCAoKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl84LjAuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMC4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0LmluYwppbmRleCA5YjRjMTI4Li5kZDlkNzkyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKQEAgLTExNiw2ICsxMTYsNyBAQAogICAgICR7ZGF0YWRpcn0vZ2l0d2ViL2dpdHdlYi5jZ2kgXAogICAgICR7ZGF0YWRpcn0vZ2l0LWNvcmUvdGVtcGxhdGVzL2hvb2tzL3ByZXBhcmUtY29tbWl0LW1zZy5zYW1wbGUgXAogICAgICR7ZGF0YWRpcn0vZ2l0LWNvcmUvdGVtcGxhdGVzL2hvb2tzL3ByZS1yZWJhc2Uuc2FtcGxlIFwKKyAgICAke2RhdGFkaXJ9L2dpdC1jb3JlL3RlbXBsYXRlcy9ob29rcy9mc21vbml0b3Itd2F0Y2htYW4uc2FtcGxlIFwKICIKIAogIyBHaXQgdG9vbHMgcmVxdWlyaW5nIHBlcmwKQEAgLTEyNSw2ICsxMjYsNyBAQAogICAgICR7bGliZGlyfS9wZXJsIFwKICAgICAke2RhdGFkaXJ9L3BlcmwgXAogIgorCiBSREVQRU5EU18ke1BOfS1wZXJsdG9vbHMgPSAiJHtQTn0gcGVybCBwZXJsLW1vZHVsZS1maWxlLXBhdGggZmluZHV0aWxzIgogCiAjIGdpdC10ayBwYWNrYWdlIHdpdGggZ2l0ayBhbmQgZ2l0LWd1aQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjEzLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZTM4ODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgZ2l0LmluYwotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3NucHJpbnRmX3JldHVybnNfYm9ndXM9bm8gXAotICAgICAgICAgICAgICAgICBhY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz0ke2FjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPXllc30gXAotICAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRU1BS0UgKz0gIk5PX0dFVFRFWFQ9MSIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiZDJkYzU1MGY2NjkzYmE3ZTViMTYyMTJiMjcxNGY1OWYiCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICIxNDk3MDAxNzcyZjYzMGQ0OTgwOWU5ODE2NzJlZGZlM2UzY2UxYTFkMThlOTA1Y2Q1MzljNGQyZjRkYmNkNzVhIgotU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gIjMwMzdkMTFhNGY0Y2RkMTk0MzU4NzFjMjY3Y2E0OGI0IgotU1JDX1VSSVttYW5wYWdlcy5zaGEyNTZzdW1dID0gImY5YjMwMmVlYjA4Y2UwODkzNGU3YWZiNDIyODBjZTkyOTQ0MTFmYmY1ZjdiNmFjM2ZjYzIzNmU4MDMxZjEwYzUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4xNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGM0ZWJhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTYuMS5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGdpdC5pbmMKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9zbnByaW50Zl9yZXR1cm5zX2JvZ3VzPW5vIFwKKyAgICAgICAgICAgICAgICAgYWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9JHthY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz15ZXN9IFwKKyAgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VNQUtFICs9ICJOT19HRVRURVhUPTEiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjM3NDY3ZGE4ZTc5ZTcyZjI4NTk4ZDY2N2YyMTlmNzVlIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiNTZjZmE0OGFmMmIyODliYmExNzJjYTBhNDdjMjlmMDA4M2Y1ODQ2Y2Y0NzU5OTc4YjcwOTg4ZTRmMDdmYzlmZCIKK1NSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICI1NTg3NDA3ZjNjMjg0NDZhZjEyZmRlM2YzMTMxYmEzNCIKK1NSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICJkNDk5ZTgyNWY0MjlkNzY4NjJiZTQxNWY1NzljMjBjYzI2YjA0NjU3M2EzYTM5MjM3YWNhZjk2ODJjYjcxYmU3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTViMTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjEuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJWZW5kb3IgUGFja2FnZSBNYW5hZ2VtZW50IGZvciBHb2xhbmciCitIT01FUEFHRSA9ICJodHRwczovL2dsaWRlLnNoIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvJHtHT19JTVBPUlR9L0xJQ0VOU0U7bWQ1PTU0OTA1Y2Y4OTRmOGNjNDE2YTkyZjRmYzM1MGMzNWIyIgorCitHT19JTVBPUlQgPSAiZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZSIKK1NSQ19VUkkgPSAiZ2l0Oi8vJHtHT19JTVBPUlR9IgorU1JDUkVWID0gIjY3NzkwYjNkYmVkZTcyY2ZkYzU0YWE1M2JlNDcwNjMyMmM5NDk5ZTAiCisKK2luaGVyaXQgZ28KKworUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYgppbmRleCA0ZmRlZDYwLi44ZGU4MTM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiCkBAIC0xNCw3ICsxNCw3IEBACiBTUkNfVVJJID0gImdpdDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NvbmZpZy5naXQgXAogICAgICAgICAgICBmaWxlOi8vZ251LWNvbmZpZ2l6ZS5pbiIKIFMgPSAiJHtXT1JLRElSfS9naXQiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogQ0xFQU5CUk9LRU4gPSAiMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ExMzViZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC5pbmMKQEAgLTAsMCArMSwyNCBAQAorcmVxdWlyZSBnby1jb21tb24uaW5jCisKK0dPX0JBU0VWRVJTSU9OID0gIjEuMTAiCitHT19NSU5PUiA9ICIuMiIKK1BWIC49ICIke0dPX01JTk9SfSIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKKworU1JDX1VSSSArPSAiXAorICAgIGZpbGU6Ly8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDgtY21kLWludGVybmFsLW9iai1hcm02NC1maXgtYnJhbmNoLXRvby1mYXItd2l0aC1UQlotbC5wYXRjaCBcCisiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2giCisKK1NSQ19VUklbbWFpbi5tZDVzdW1dID0gImM2M2IzNTA3NWJlZDY5M2JiZmM4NGQ0YTYyNjI5NDhhIgorU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiNjI2NDYwOWM2YjljZDhlZDhlMDJjYTg0NjA1ZDcyN2NlMTg5OGQ3NGVmYTc5ODQxNjYwYjJlM2U5ODVhOThiZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmIzM2IwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gN2E3ZGU0NjEyOWZhNjg1OWZiNjMxMTA5NmViOWY1NGM1M2M3ZmUyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBNb24sIDE5IEZlYiAyMDE4IDA4OjQ5OjMzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMS85XSBhbGxvdyBDQyBhbmQgQ1hYIHRvIGhhdmUgbXVsdGlwbGUgd29yZHMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK2luZGV4IDYwM2Y3YjUwNjAuLmY4OTExMjNmOWMgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworQEAgLTgyLDExICs4MiwxMSBAQCBmdW5jIE1rRW52KCkgW11jZmcuRW52VmFyIHsKKyAKKyAJY2MgOj0gY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkKKyAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKG9zLkdldGVudigiQ0MiKSk7IGxlbihlbnYpID4gMCB7CistCQljYyA9IGVudlswXQorKwkJY2MgPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCisgCX0KKyAJY3h4IDo9IGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKQorIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMob3MuR2V0ZW52KCJDWFgiKSk7IGxlbihlbnYpID4gMCB7CistCQljeHggPSBlbnZbMF0KKysJCWN4eCA9IHN0cmluZ3MuSm9pbihlbnYsICIgIikKKyAJfQorIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDQyIsIFZhbHVlOiBjY30pCisgCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNYWCIsIFZhbHVlOiBjeHh9KQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRmMzdhOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2gKQEAgLTAsMCArMSwyMjAgQEAKK0Zyb20gOGIyZmVhZWU4MWQ3YTE2YWRjNTllNjFkMDZjMWU3MzE0ZDNhNTQwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBNb24sIDE5IEZlYiAyMDE4IDA4OjUwOjU5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMi85XSBjbWQvZ286IG1ha2UgY29udGVudC1iYXNlZCBoYXNoIGdlbmVyYXRpb24gbGVzcyBwZWRhbnRpYworCitHbyAxLjEwJ3MgYnVpbGQgdG9vbCBub3cgdXNlcyBjb250ZW50LWJhc2VkIGhhc2hlcyB0bworZGV0ZXJtaW5lIHdoZW4gc29tZXRoaW5nIHNob3VsZCBiZSBidWlsdCBvciByZS1idWlsdC4KK1RoaXMgc2FtZSBtZWNoYW5pc20gaXMgdXNlZCB0byBtYWludGFpbiBhIGJ1aWx0LWFydGlmYWN0CitjYWNoZSBmb3Igc3BlZWRpbmcgdXAgYnVpbGRzLgorCitIb3dldmVyLCB0aGUgaGFzaGVzIGl0IGdlbmVyYXRlcyBpbmNsdWRlIGluZm9ybWF0aW9uIHRoYXQKK2RvZXNuJ3Qgd29yayB3ZWxsIHdpdGggT0UsIG5vciB3aXRoIHVzaW5nIGEgc2hhcmVkIHJ1bnRpbWUKK2xpYnJhcnkuCisKK0ZpcnN0LCBpdCBlbWJlZHMgcGF0aCBuYW1lcyB0byBzb3VyY2UgZmlsZXMsIHVubGVzcworYnVpbGRpbmcgd2l0aGluIEdPUk9PVC4gIFRoaXMgcHJldmVudHMgdGhlIGJ1aWxkaW5nCitvZiBhIHBhY2thZ2UgaW4gR09QQVRIIGZvciBsYXRlciBzdGFnaW5nIGludG8gR09ST09ULgorCitUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCitHT1BBVEhfT01JVF9JTl9BQ1RJT05JRC4gIElmIHByZXNlbnQsIHBhdGggbmFtZQorZW1iZWRkaW5nIGlzIGRpc2FibGVkLgorCitTZWNvbmQsIGlmIGNnbyBpcyBlbmFibGVkLCB0aGUgYnVpbGQgSUQgZm9yIGNnby1yZWxhdGVkCitwYWNrYWdlcyB3aWxsIGluY2x1ZGUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50Cit2YXJpYWJsZXMgZm9yIGludm9raW5nIHRoZSBjb21waWxlciAoQ0MsIENYWCwgRkMpIGFuZAorYW55IENHT194eEZMQUdTIHZhcmlhYmxlcy4gIE9ubHkgaWYgdGhlIHNldHRpbmdzIHVzZWQKK2R1cmluZyBhIGNvbXBpbGF0aW9uIGV4YWN0bHkgbWF0Y2gsIGNoYXJhY3RlciBmb3IgY2hhcmFjdGVyLAordGhlIHZhbHVlcyB1c2VkIGZvciBjb21waWxpbmcgcnVudGltZS9jZ28gb3IgYW55IG90aGVyCitjZ28tZW5hYmxlZCBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLCB3aWxsIHRoZSB0b29sCitkZWNpZGUgdGhhdCB0aGUgaW1wb3J0ZWQgcGFja2FnZSBpcyB1cC10by1kYXRlLgorCitUaGlzIGlzIGRvbmUgdG8gaGVscCBlbnN1cmUgY29ycmVjdG5lc3MsIGJ1dCBpcyBvdmVybHkKK3NpbXBsaXN0aWMgYW5kIGVmZmVjdGl2ZWx5IHByZXZlbnRzIHRoZSByZXVzZSBvZiBidWlsdAorYXJ0aWZhY3RzIHRoYXQgdXNlIGNnbyAob3Igc2hhcmVkIHJ1bnRpbWUsIHdoaWNoIGluY2x1ZGVzCitydW50aW1lL2NnbykuCisKK1RoaXMgcGF0Y2ggZmlsdGVycyBvdXQgYWxsIGNvbXBpbGVyIGZsYWdzIGV4Y2VwdCB0aG9zZQorYmVnaW5uaW5nIHdpdGggJy1tJy4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGNhbiBiZSByZXN0b3JlZAorYnkgc2V0dGluZyB0aGUgQ0dPX1BFREFOVElDIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgIDIgKy0KKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyAgfCA2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCitpbmRleCBmODkxMTIzZjljLi5lYmFjZmJmZGJjIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK0BAIC0xMTMsNyArMTEzLDcgQEAgZnVuYyBmaW5kRW52KGVudiBbXWNmZy5FbnZWYXIsIG5hbWUgc3RyaW5nKSBzdHJpbmcgeworIGZ1bmMgRXh0cmFFbnZWYXJzKCkgW11jZmcuRW52VmFyIHsKKyAJdmFyIGIgd29yay5CdWlsZGVyCisgCWIuSW5pdCgpCistCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30pCisrCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30sIGZhbHNlKQorIAlpZiBlcnIgIT0gbmlsIHsKKyAJCS8vIFNob3VsZCBub3QgaGFwcGVuIC0gYi5DRmxhZ3Mgd2FzIGdpdmVuIGFuIGVtcHR5IHBhY2thZ2UuCisgCQlmbXQuRnByaW50Zihvcy5TdGRlcnIsICJnbzogaW52YWxpZCBjZmxhZ3M6ICV2XG4iLCBlcnIpCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworaW5kZXggYzRjMTUwMGViMi4uYjBmNmI0NTY0NyAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworQEAgLTE3Myw2ICsxNzMsOCBAQCBmdW5jIChiICpCdWlsZGVyKSBEbyhyb290ICpBY3Rpb24pIHsKKyAJd2cuV2FpdCgpCisgfQorIAorK3ZhciBvbWl0R29wYXRoID0gb3MuR2V0ZW52KCJHT1BBVEhfT01JVF9JTl9BQ1RJT05JRCIpICE9ICIiCisrCisgLy8gYnVpbGRBY3Rpb25JRCBjb21wdXRlcyB0aGUgYWN0aW9uIElEIGZvciBhIGJ1aWxkIGFjdGlvbi4KKyBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgeworIAlwIDo9IGEuUGFja2FnZQorQEAgLTE4OSw3ICsxOTEsNyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgeworIAkvLyBidXQgaXQgZG9lcyBub3QgaGlkZSB0aGUgZXhhY3QgdmFsdWUgb2YgJEdPUEFUSC4KKyAJLy8gSW5jbHVkZSB0aGUgZnVsbCBkaXIgaW4gdGhhdCBjYXNlLgorIAkvLyBBc3N1bWUgYi5Xb3JrRGlyIGlzIGJlaW5nIHRyaW1tZWQgcHJvcGVybHkuCistCWlmICFwLkdvcm9vdCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgeworKwlpZiAhcC5Hb3Jvb3QgJiYgIW9taXRHb3BhdGggJiYgIXN0cmluZ3MuSGFzUHJlZml4KHAuRGlyLCBiLldvcmtEaXIpIHsKKyAJCWZtdC5GcHJpbnRmKGgsICJkaXIgJXNcbiIsIHAuRGlyKQorIAl9CisgCWZtdC5GcHJpbnRmKGgsICJnb29zICVzIGdvYXJjaCAlc1xuIiwgY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCitAQCAtMTk3LDEzICsxOTksMTMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGRBY3Rpb25JRChhICpBY3Rpb24pIGNhY2hlLkFjdGlvbklEIHsKKyAJZm10LkZwcmludGYoaCwgIm9taXRkZWJ1ZyAldiBzdGFuZGFyZCAldiBsb2NhbCAldiBwcmVmaXggJXFcbiIsIHAuSW50ZXJuYWwuT21pdERlYnVnLCBwLlN0YW5kYXJkLCBwLkludGVybmFsLkxvY2FsLCBwLkludGVybmFsLkxvY2FsUHJlZml4KQorIAlpZiBsZW4ocC5DZ29GaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgeworIAkJZm10LkZwcmludGYoaCwgImNnbyAlcVxuIiwgYi50b29sSUQoImNnbyIpKQorLQkJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgXywgXyA6PSBiLkNGbGFncyhwKQorLQkJZm10LkZwcmludGYoaCwgIkNDPSVxICVxICVxXG4iLCBiLmNjRXhlKCksIGNwcGZsYWdzLCBjZmxhZ3MpCisrCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBfLCBfIDo9IGIuQ0ZsYWdzKHAsIHRydWUpCisrCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXFcbiIsIGIuY2NFeGUodHJ1ZSksIGNwcGZsYWdzLCBjZmxhZ3MpCisgCQlpZiBsZW4ocC5DWFhGaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgeworLQkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKCksIGN4eGZsYWdzKQorKwkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKHRydWUpLCBjeHhmbGFncykKKyAJCX0KKyAJCWlmIGxlbihwLkZGaWxlcykgPiAwIHsKKy0JCQlmbXQuRnByaW50ZihoLCAiRkM9JXEgJXFcbiIsIGIuZmNFeGUoKSwgZmZsYWdzKQorKwkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSh0cnVlKSwgZmZsYWdzKQorIAkJfQorIAkJLy8gVE9ETyhyc2MpOiBTaG91bGQgd2UgaW5jbHVkZSB0aGUgU1dJRyB2ZXJzaW9uIG9yIEZvcnRyYW4vR0NDL0crKy9PYmplY3RpdmUtQyBjb21waWxlciB2ZXJzaW9ucz8KKyAJfQorQEAgLTE3MzEsMzMgKzE3MzMsMzMgQEAgdmFyICgKKyAvLyBnY2NDbWQgcmV0dXJucyBhIGdjYyBjb21tYW5kIGxpbmUgcHJlZml4CisgLy8gZGVmYXVsdENDIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KKyBmdW5jIChiICpCdWlsZGVyKSBHY2NDbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKCksIGluY2Rpciwgd29ya2RpcikKKysJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKKyB9CisgCisgLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAorIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgorIGZ1bmMgKGIgKkJ1aWxkZXIpIEd4eENtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY3h4RXhlKCksIGluY2Rpciwgd29ya2RpcikKKysJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCisgfQorIAorIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgorIGZ1bmMgKGIgKkJ1aWxkZXIpIGdmb3J0cmFuQ21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCisrCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuZmNFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCisgfQorIAorIC8vIGNjRXhlIHJldHVybnMgdGhlIENDIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKCkgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpKQorK2Z1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NDLCBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKSwgZmlsdGVyZWQpCisgfQorIAorIC8vIGN4eEV4ZSByZXR1cm5zIHRoZSBDWFggY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCistZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKCkgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkpCisrZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NYWCwgY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKKyB9CisgCisgLy8gZmNFeGUgcmV0dXJucyB0aGUgRkMgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCistZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIikKKytmdW5jIChiICpCdWlsZGVyKSBmY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7CisrCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIiwgZmlsdGVyZWQpCisgfQorIAorIC8vIGNvbXBpbGVyRXhlIHJldHVybnMgdGhlIGNvbXBpbGVyIHRvIHVzZSBnaXZlbiBhbgorQEAgLTE3NjYsMTEgKzE3NjgsMTQgQEAgZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7CisgLy8gb2YgdGhlIGNvbXBpbGVyIGJ1dCBjYW4gaGF2ZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBpZiB0aGV5CisgLy8gd2VyZSBwcmVzZW50IGluIHRoZSBlbnZpcm9ubWVudCB2YWx1ZS4KKyAvLyBGb3IgZXhhbXBsZSBpZiBDQz0iZ2NjIC1ER09QSEVSIiB0aGVuIHRoZSByZXN1bHQgaXMgWyJnY2MiLCAiLURHT1BIRVIiXS4KKy1mdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKKytmdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcsIGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKyAJY29tcGlsZXIgOj0gc3RyaW5ncy5GaWVsZHMoZW52VmFsdWUpCisgCWlmIGxlbihjb21waWxlcikgPT0gMCB7CisgCQljb21waWxlciA9IFtdc3RyaW5ne2RlZn0KKyAJfQorKwlpZiBmaWx0ZXJlZCB7CisrCQlyZXR1cm4gYXBwZW5kKGNvbXBpbGVyWzA6MV0sIGZpbHRlckNvbXBpbGVyRmxhZ3MoY29tcGlsZXJbMTpdKS4uLikKKysJfQorIAlyZXR1cm4gY29tcGlsZXIKKyB9CisgCitAQCAtMTkyMCw4ICsxOTI1LDIzIEBAIGZ1bmMgZW52TGlzdChrZXksIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKKyAJcmV0dXJuIHN0cmluZ3MuRmllbGRzKHYpCisgfQorIAorK3ZhciBmaWx0ZXJGbGFncyA9IG9zLkdldGVudigiQ0dPX1BFREFOVElDIikgPT0gIiIKKysKKytmdW5jIGZpbHRlckNvbXBpbGVyRmxhZ3MoZmxhZ3MgW11zdHJpbmcpIFtdc3RyaW5nIHsKKysJdmFyIG5ld2ZsYWdzIFtdc3RyaW5nCisrCWlmICFmaWx0ZXJGbGFncyB7CisrCQlyZXR1cm4gZmxhZ3MKKysJfQorKwlmb3IgXywgZmxhZyA6PSByYW5nZSBmbGFncyB7CisrCQlpZiBzdHJpbmdzLkhhc1ByZWZpeChmbGFnLCAiLW0iKSB7CisrCQkJbmV3ZmxhZ3MgPSBhcHBlbmQobmV3ZmxhZ3MsIGZsYWcpCisrCQl9CisrCX0KKysJcmV0dXJuIG5ld2ZsYWdzCisrfQorKworIC8vIENGbGFncyByZXR1cm5zIHRoZSBmbGFncyB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQywgQysrIG9yIEZvcnRyYW4gY29tcGlsZXJzLCBvciBjZ28uCistZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgeworK2Z1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UsIGZpbHRlcmVkIGJvb2wpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKKyAJZGVmYXVsdHMgOj0gIi1nIC1PMiIKKyAKKyAJaWYgY3BwZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkNQUEZMQUdTIiwgIiIsIHAuQ2dvQ1BQRkxBR1MsIGNoZWNrQ29tcGlsZXJGbGFncyk7IGVyciAhPSBuaWwgeworQEAgLTE5MzksNiArMTk1OSwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbAorIAlpZiBsZGZsYWdzLCBlcnIgPSBidWlsZEZsYWdzKCJMREZMQUdTIiwgZGVmYXVsdHMsIHAuQ2dvTERGTEFHUywgY2hlY2tMaW5rZXJGbGFncyk7IGVyciAhPSBuaWwgeworIAkJcmV0dXJuCisgCX0KKysJaWYgZmlsdGVyZWQgeworKwkJY3BwZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNwcGZsYWdzKQorKwkJY2ZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjZmxhZ3MpCisrCQljeHhmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3h4ZmxhZ3MpCisrCQlmZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGZmbGFncykKKysJCWxkZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGxkZmxhZ3MpCisrCX0KKyAKKyAJcmV0dXJuCisgfQorQEAgLTE5NTQsNyArMTk4MSw3IEBAIHZhciBjZ29SZSA9IHJlZ2V4cC5NdXN0Q29tcGlsZShgWy9cXDpdYCkKKyAKKyBmdW5jIChiICpCdWlsZGVyKSBjZ28oYSAqQWN0aW9uLCBjZ29FeGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgZ3h4ZmlsZXMsIG1maWxlcywgZmZpbGVzIFtdc3RyaW5nKSAob3V0R28sIG91dE9iaiBbXXN0cmluZywgZXJyIGVycm9yKSB7CisgCXAgOj0gYS5QYWNrYWdlCistCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwKQorKwljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgY2dvRkZMQUdTLCBjZ29MREZMQUdTLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCisgCWlmIGVyciAhPSBuaWwgeworIAkJcmV0dXJuIG5pbCwgbmlsLCBlcnIKKyAJfQorQEAgLTIzMDYsNyArMjMzMyw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdJbnRTaXplKG9iamRpciBzdHJpbmcpIChpbnRzaXplIHN0cmluZywgZXJyIGVycm9yKSB7CisgCisgLy8gUnVuIFNXSUcgb24gb25lIFNXSUcgaW5wdXQgZmlsZS4KKyBmdW5jIChiICpCdWlsZGVyKSBzd2lnT25lKGEgKkFjdGlvbiwgcCAqbG9hZC5QYWNrYWdlLCBmaWxlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUyBbXXN0cmluZywgY3h4IGJvb2wsIGludGdvc2l6ZSBzdHJpbmcpIChvdXRHbywgb3V0QyBzdHJpbmcsIGVyciBlcnJvcikgeworLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgXywgXywgZXJyIDo9IGIuQ0ZsYWdzKHApCisrCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCisgCWlmIGVyciAhPSBuaWwgeworIAkJcmV0dXJuICIiLCAiIiwgZXJyCisgCX0KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MThmZTY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gYWNkMTc5YjQ5ZjFmYzhkNmY3ZjY5ZTU2OWZiNGE1NjAzOWM3MjVhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA1OjI0OjIwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMy85XSBhbGxvdyBHT1RPT0xESVIgdG8gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgZW52aXJvbm1lbnQKKwordG8gYWxsb3cgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGJ1aWxkIHJvb3RzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvY21kL2Rpc3QvYnVpbGQuZ28gICAgICAgICAgfCA0ICsrKy0KKyBzcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28gfCA2ICsrKysrLQorIHNyYy9nby9idWlsZC9idWlsZC5nbyAgICAgICAgICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbworaW5kZXggNDllZDgwMDMzZS4uYWZjNjE1YjVjMiAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbworKysrIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCitAQCAtMjIwLDcgKzIyMCw5IEBAIGZ1bmMgeGluaXQoKSB7CisgCXdvcmtkaXIgPSB4d29ya2RpcigpCisgCXhhdGV4aXQocm13b3JrZGlyKQorIAorLQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKKysJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgeworKwkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCisrCX0KKyB9CisgCisgLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCitpbmRleCAxZGU0ZjBkYzc5Li40ZjYwMTBkNjYwIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KK0BAIC05Niw3ICs5NiwxMSBAQCBmdW5jIGluaXQoKSB7CisgCS8vIGFzIHRoZSB0b29sIGRpcmVjdG9yeSBkb2VzIG5vdCBtb3ZlIGJhc2VkIG9uIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyAJLy8gVGhpcyBtYXRjaGVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBUb29sRGlyIGluIGdvL2J1aWxkLAorIAkvLyBleGNlcHQgZm9yIHVzaW5nIEdPUk9PVCByYXRoZXIgdGhhbiBydW50aW1lLkdPUk9PVCgpLgorLQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihHT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCisrCWlmIHMgOj0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgcyAhPSAiIiB7CisrCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguQ2xlYW4ocykKKysJfSBlbHNlIHsKKysJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKysJfQorIH0KKyAKKyBmdW5jIGZpbmRHT1JPT1QoKSBzdHJpbmcgeworZGlmZiAtLWdpdCBhL3NyYy9nby9idWlsZC9idWlsZC5nbyBiL3NyYy9nby9idWlsZC9idWlsZC5nbworaW5kZXggNjhmYjQyMzk4My4uODFiMWIzMjI3MCAxMDA2NDQKKy0tLSBhL3NyYy9nby9idWlsZC9idWlsZC5nbworKysrIGIvc3JjL2dvL2J1aWxkL2J1aWxkLmdvCitAQCAtMTU5NCw3ICsxNTk0LDcgQEAgZnVuYyBpbml0KCkgeworIH0KKyAKKyAvLyBUb29sRGlyIGlzIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBidWlsZCB0b29scy4KKy12YXIgVG9vbERpciA9IGZpbGVwYXRoLkpvaW4ocnVudGltZS5HT1JPT1QoKSwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKyt2YXIgVG9vbERpciA9IGVudk9yKCJHT1RPT0xESVIiLCBmaWxlcGF0aC5Kb2luKHJ1bnRpbWUuR09ST09UKCksICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpKQorIAorIC8vIElzTG9jYWxJbXBvcnQgcmVwb3J0cyB3aGV0aGVyIHRoZSBpbXBvcnQgcGF0aCBpcworIC8vIGEgbG9jYWwgaW1wb3J0IHBhdGgsIGxpa2UgIi4iLCAiLi4iLCAiLi9mb28iLCBvciAiLi4vZm9vIi4KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyM2NhOTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gODUyNTJmMGJkODc0MzIyM2ViNzc4ZWRiZTlmYjMxZGZmMTdhMjNkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA2OjI2OjEwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggNC85XSBsZDogYWRkIHNvbmFtZSB0byBzaGFyZWFibGUgb2JqZWN0cworCitzbyB0aGF0IE9FJ3Mgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jeSBoYW5kbGluZworY2FuIGZpbmQgdGhlbS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbworaW5kZXggNmRjYWY2NDEyMi4uMTFjYmI4YThiYiAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KK0BAIC0xMTM0LDYgKzExMzQsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKKyAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKKyAJCQl9CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCisrCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorIAkJCWlmIGN0eHQuSGVhZFR5cGUgIT0gb2JqYWJpLkh3aW5kb3dzIHsKKyAJCQkJLy8gUGFzcyAteiBub2RlbGV0ZSB0byBtYXJrIHRoZSBzaGFyZWQgbGlicmFyeSBhcworIAkJCQkvLyBub24tY2xvc2VhYmxlOiBhIGRsY2xvc2Ugd2lsbCBkbyBub3RoaW5nLgorQEAgLTExNDUsNiArMTE0Niw4IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgeworIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQl9CisgCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKKysJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKysKKyAJY2FzZSBCdWlsZE1vZGVQbHVnaW46CisgCQlpZiBjdHh0LkhlYWRUeXBlID09IG9iamFiaS5IZGFyd2luIHsKKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItZHluYW1pY2xpYiIpCitAQCAtMTE1Myw2ICsxMTU2LDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7CisgCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQkJfQorIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJCX0KKyAJfQorIAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdhOTM5MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSAxNjEyNGQ4NDY0OGY0ZGZkZmE0NzM4YzU2NjBiNTQwMGIzMGJmOWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFNhdCwgMTcgRmViIDIwMTggMDY6MzI6NDUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCA1LzldIG1ha2UuYmFzaDogb3ZlcnJpZGUgQ0Mgd2hlbiBidWlsZGluZyBkaXN0IGFuZAorIGdvX2Jvb3RzdHJhcAorCitmb3IgaGFuZGxpbmcgT0UgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL21ha2UuYmFzaCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFrZS5iYXNoIGIvc3JjL21ha2UuYmFzaAoraW5kZXggOTNhNWM0M2QxMS4uM2E2MzY4MmJjNCAxMDA3NTUKKy0tLSBhL3NyYy9tYWtlLmJhc2gKKysrKyBiL3NyYy9tYWtlLmJhc2gKK0BAIC0xNjIsNyArMTYyLDcgQEAgaWYgWyAiJEdPUk9PVF9CT09UU1RSQVAiID0gIiRHT1JPT1QiIF07IHRoZW4KKyAJZXhpdCAxCisgZmkKKyBybSAtZiBjbWQvZGlzdC9kaXN0CistR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisrQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisgCisgIyAtZSBkb2Vzbid0IHByb3BhZ2F0ZSBvdXQgb2YgZXZhbCwgc28gY2hlY2sgc3VjY2VzcyBieSBoYW5kLgorIGV2YWwgJCguL2NtZC9kaXN0L2Rpc3QgZW52IC1wIHx8IGVjaG8gRkFJTD10cnVlKQorQEAgLTE5Myw3ICsxOTMsNyBAQCBmaQorICMgUnVuIGRpc3QgYm9vdHN0cmFwIHRvIGNvbXBsZXRlIG1ha2UuYmFzaC4KKyAjIEJvb3RzdHJhcCBpbnN0YWxscyBhIHByb3BlciBjbWQvZGlzdCwgYnVpbHQgd2l0aCB0aGUgbmV3IHRvb2xjaGFpbi4KKyAjIFRocm93IG91cnMsIGJ1aWx0IHdpdGggR28gMS40LCBhd2F5IGFmdGVyIGJvb3RzdHJhcC4KKy0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCisrQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJHZmbGFnICRHT19ESVNURkxBR1MgIiRAIgorIHJtIC1mIC4vY21kL2Rpc3QvZGlzdAorIAorICMgRE8gTk9UIEFERCBBTlkgTkVXIENPREUgSEVSRS4KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZTY5OTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoCkBAIC0wLDAgKzEsMjc3IEBACitGcm9tIDJmMDdhZjM0Njk3YzYxZGVjZGNmYTViMTE0MzQ0NTFmYmNmMzc3MDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAxMDowMzo0OCAtMDgwMAorU3ViamVjdDogW1BBVENIIDYvOV0gY21kL2Rpc3Q6IHNlcGFyYXRlIGhvc3QgYW5kIHRhcmdldCBidWlsZHMKKworQ2hhbmdlIHRoZSBkaXN0IHRvb2wgdG8gYWxsb3cgZm9yIE9FLXN0eWxlIGNyb3NzLQorYW5kIGNyb3NzLWNhbmFkaWFuIGJ1aWxkczoKKworIC0gY29tbWFuZCBmbGFncyAtLWhvc3Qtb25seSBhbmQgLS10YXJnZXQgb25seSBhcmUgYWRkZWQ7CisgICBpZiBvbmUgaXMgcHJlc2VudCwgdGhlIG90aGVyIGNoYW5nZXMgbWVudGlvbmVkIGJlbG93CisgICB0YWtlIGVmZmVjdCwgYW5kIGFyZ3VtZW50cyBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgb24KKyAgIHRoZSBjb21tYW5kIGxpbmUgdG8gZW51bWVyYXRlIHRoZSBwYWNrYWdlKHMpIHRvIGJlCisgICBidWlsdC4KKworIC0gZm9yIE9FIGNyb3NzIGJ1aWxkcywgZ29fYm9vdHN0cmFwIGlzIGFsd2F5cyBidWlsdCBmb3IKKyAgIHRoZSBjdXJyZW50IGJ1aWxkIGhvc3QsIGFuZCBpcyBtb3ZlZCwgYWxvbmcgd2l0aCB0aGUgc3VwcG9ydGluZworICAgdG9vbGNoYWluIChhc20sIGNvbXBpbGUsIGV0Yy4pIHRvIGEgc2VwYXJhdGUgJ25hdGl2ZV9uYXRpdmUnCisgICBkaXJlY3RvcnkgdW5kZXIgR09ST09UL3BrZy90b29sLgorCisgLSBnb19ib290c3RyYXAgaXMgbm90IGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCBhZnRlciB0aGUgYnVpbGQsCisgICBzbyBpdCBjYW4gYmUgcmV1c2VkIGxhdGVyIChlLmcuLCBidWlsZGluZyBib3RoIHN0YXRpYyBhbmQKKyAgIHNoYXJlZCBydW50aW1lKS4KKworTm90ZSB0aGF0IGZvciAtLWhvc3Qtb25seSBidWlsZHMsIGl0IHdvdWxkIGJlIG5pY2UgdG8gc3BlY2lmeQoranVzdCB0aGUgImNtZCIgcGFja2FnZSB0byBidWlsZCBvbmx5IHRoZSBnbyBjb21tYW5kcy90b29scywKK3RoZSBzdGFsZW5lc3MgY2hlY2tzIGluIHRoZSBkaXN0IHRvb2wgd2lsbCBmYWlsIGlmIHRoZSAic3RkIgorbGlicmFyeSBoYXMgbm90IGFsc28gYmVlbiBidWlsdC4gIFNvIGhvc3Qtb25seSBidWlsZHMgaGF2ZSB0bworYnVpbGQgZXZlcnl0aGluZyBhbnl3YXkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CisKK21vcmUgZGlzdCBjbGVhbnVwCistLS0KKyBzcmMvY21kL2Rpc3QvYnVpbGQuZ28gfCAxNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9kaXN0L2J1aWxkLmdvIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCitpbmRleCBhZmM2MTViNWMyLi4zNjI2MjY2NWIyIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCisrKysgYi9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KK0BAIC0zOCw2ICszOCw3IEBAIHZhciAoCisgCWdvbGRmbGFncyAgICAgICAgc3RyaW5nCisgCXdvcmtkaXIgICAgICAgICAgc3RyaW5nCisgCXRvb2xkaXIgICAgICAgICAgc3RyaW5nCisrCWJ1aWxkX3Rvb2xkaXIJIHN0cmluZworIAlvbGRnb29zICAgICAgICAgIHN0cmluZworIAlvbGRnb2FyY2ggICAgICAgIHN0cmluZworIAlleGUgICAgICAgICAgICAgIHN0cmluZworQEAgLTQ5LDYgKzUwLDcgQEAgdmFyICgKKyAKKyAJcmVidWlsZGFsbCAgIGJvb2wKKyAJZGVmYXVsdGNsYW5nIGJvb2wKKysJY3Jvc3NCdWlsZCAgIGJvb2wKKyAKKyAJdmZsYWcgaW50IC8vIHZlcmJvc2l0eQorICkKK0BAIC0yMjMsNiArMjI1LDggQEAgZnVuYyB4aW5pdCgpIHsKKyAJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgeworIAkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCisgCX0KKysJYnVpbGRfdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC9uYXRpdmVfbmF0aXZlIiwgZ29yb290KQorKworIH0KKyAKKyAvLyBjb21waWxlckVudiByZXR1cm5zIGEgbWFwIGZyb20gImdvb3MvZ29hcmNoIiB0byB0aGUKK0BAIC0yNTIsNyArMjU2LDYgQEAgZnVuYyBjb21waWxlckVudihlbnZOYW1lLCBkZWYgc3RyaW5nKSBtYXBbc3RyaW5nXXN0cmluZyB7CisgCQlpZiBnb2hvc3RvcyAhPSBnb29zIHx8IGdvaG9zdGFyY2ggIT0gZ29hcmNoIHsKKyAJCQltW2dvaG9zdG9zKyIvIitnb2hvc3RhcmNoXSA9IG1bIiJdCisgCQl9CistCQltWyIiXSA9IGVudgorIAl9CisgCisgCWZvciBfLCBnb29zIDo9IHJhbmdlIG9rZ29vcyB7CitAQCAtNDc5LDggKzQ4MiwxMCBAQCBmdW5jIHNldHVwKCkgeworIAkvLyBXZSBrZWVwIGl0IGluIHBrZy8sIGp1c3QgbGlrZSB0aGUgb2JqZWN0IGRpcmVjdG9yeSBhYm92ZS4KKyAJaWYgcmVidWlsZGFsbCB7CisgCQl4cmVtb3ZlYWxsKHRvb2xkaXIpCisrCQl4cmVtb3ZlYWxsKGJ1aWxkX3Rvb2xkaXIpCisgCX0KKyAJeG1rZGlyYWxsKHRvb2xkaXIpCisrCXhta2RpcmFsbChidWlsZF90b29sZGlyKQorIAorIAkvLyBSZW1vdmUgdG9vbCBiaW5hcmllcyBmcm9tIGJlZm9yZSB0aGUgdG9vbC9nb2hvc3Rvc19nb2hvc3RhcmNoCisgCXhyZW1vdmVhbGwocGF0aGYoIiVzL2Jpbi90b29sIiwgZ29yb290KSkKK0BAIC0xMTMwLDExICsxMTM1LDI5IEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgeworIAorIAl2YXIgbm9CYW5uZXIgYm9vbAorIAl2YXIgZGVidWcgYm9vbAorKwl2YXIgaG9zdE9ubHkgYm9vbAorKwl2YXIgdGFyZ2V0T25seSBib29sCisrCXZhciB0b0J1aWxkID0gW11zdHJpbmcgeyAic3RkIiwgImNtZCIgfQorKworIAlmbGFnLkJvb2xWYXIoJnJlYnVpbGRhbGwsICJhIiwgcmVidWlsZGFsbCwgInJlYnVpbGQgYWxsIikKKyAJZmxhZy5Cb29sVmFyKCZkZWJ1ZywgImQiLCBkZWJ1ZywgImVuYWJsZSBkZWJ1Z2dpbmcgb2YgYm9vdHN0cmFwIHByb2Nlc3MiKQorIAlmbGFnLkJvb2xWYXIoJm5vQmFubmVyLCAibm8tYmFubmVyIiwgbm9CYW5uZXIsICJkbyBub3QgcHJpbnQgYmFubmVyIikKKysJZmxhZy5Cb29sVmFyKCZob3N0T25seSwgImhvc3Qtb25seSIsIGhvc3RPbmx5LCAiYnVpbGQgb25seSBob3N0IGJpbmFyaWVzLCBub3QgdGFyZ2V0IikKKysJZmxhZy5Cb29sVmFyKCZ0YXJnZXRPbmx5LCAidGFyZ2V0LW9ubHkiLCB0YXJnZXRPbmx5LCAiYnVpbGQgb25seSB0YXJnZXQgYmluYXJpZXMsIG5vdCBob3N0IikKKyAKKy0JeGZsYWdwYXJzZSgwKQorKwl4ZmxhZ3BhcnNlKC0xKQorKworKwlpZiAoaG9zdE9ubHkgJiYgdGFyZ2V0T25seSkgeworKwkJZmF0YWxmKCJzcGVjaWZ5IG9ubHkgb25lIG9mIC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCisrCX0KKysJY3Jvc3NCdWlsZCA9IGhvc3RPbmx5IHx8IHRhcmdldE9ubHkKKysJaWYgZmxhZy5OQXJnKCkgPiAwIHsKKysJCWlmIGNyb3NzQnVpbGQgeworKwkJCXRvQnVpbGQgPSBmbGFnLkFyZ3MoKQorKwkJfSBlbHNlIHsKKysJCQlmYXRhbGYoInBhY2thZ2UgbmFtZXMgbm90IHBlcm1pdHRlZCB3aXRob3V0IC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCisrCQl9CisrCX0KKyAKKyAJaWYgZGVidWcgeworIAkJLy8gY21kL2J1aWxkaWQgaXMgdXNlZCBpbiBkZWJ1ZyBtb2RlLgorQEAgLTExODIsOCArMTIwNSwxMyBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJCXhwcmludGYoIlxuIikKKyAJfQorIAorLQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0dDRkxBR1MgdW50aWwgbm93CistCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCisrCS8vIEZvciBzcGxpdCBob3N0L3RhcmdldCBjcm9zcy9jcm9zcy1jYW5hZGlhbiBidWlsZHMsIHdlIGRvbid0CisrCS8vIHdhbnQgdG8gYmUgc2V0dGluZyB0aGVzZSBmbGFncyB1bnRpbCBhZnRlciB3ZSBoYXZlIGNvbXBpbGVkCisrCS8vIHRoZSB0b29sY2hhaW4gdGhhdCBydW5zIG9uIHRoZSBidWlsZCBob3N0LgorKwlpZiAhIGNyb3NzQnVpbGQgeworKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdworKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikKKysJfQorIAlnb0Jvb3RzdHJhcCA6PSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikKKyAJY21kR28gOj0gcGF0aGYoIiVzL2dvIiwgZ29iaW4pCisgCWlmIGRlYnVnIHsKK0BAIC0xMjEyLDcgKzEyNDAsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7CisgCQl4cHJpbnRmKCJcbiIpCisgCX0KKyAJeHByaW50ZigiQnVpbGRpbmcgR28gdG9vbGNoYWluMiB1c2luZyBnb19ib290c3RyYXAgYW5kIEdvIHRvb2xjaGFpbjEuXG4iKQorLQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwlpZiBjcm9zc0J1aWxkIHsKKysJCW9zLlNldGVudigiQ0MiLCBkZWZhdWx0Y2NbIiJdKQorKwl9IGVsc2UgeworKwkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKKysJfQorIAlnb0luc3RhbGwoZ29Cb290c3RyYXAsIGFwcGVuZChbXXN0cmluZ3siLWkifSwgdG9vbGNoYWluLi4uKS4uLikKKyAJaWYgZGVidWcgeworIAkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQorQEAgLTEyNDksNDUgKzEyODEsODIgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7CisgCX0KKyAJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCisgCistCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKKy0JCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgorLQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKKy0JCWlmIHZmbGFnID4gMCB7CistCQkJeHByaW50ZigiXG4iKQorKwlpZiBjcm9zc0J1aWxkIHsKKysJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpCisrCQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQorKwkJdG9vbF9maWxlcywgXyA6PSBmaWxlcGF0aC5HbG9iKHBhdGhmKCIlcy8qIiwgdG9vbGRpcikpCisrCQlmb3IgXywgZiA6PSByYW5nZSB0b29sX2ZpbGVzIHsKKysJCQljb3B5ZmlsZShwYXRoZigiJXMvJXMiLCBidWlsZF90b29sZGlyLCBmaWxlcGF0aC5CYXNlKGYpKSwgZiwgd3JpdGVFeGVjKQorKwkJCXhyZW1vdmUoZikKKysJCX0KKysJCW9zLlNldGVudigiR09UT09MRElSIiwgYnVpbGRfdG9vbGRpcikKKysJCWdvQm9vdHN0cmFwID0gcGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIGJ1aWxkX3Rvb2xkaXIpCisrCQlpZiBob3N0T25seSB7CisrCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIGhvc3QsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKKysJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgbmVjZXNzYXJpbHkgcnVuIHRoZSBjbWRHbyBiaW5hcnkKKysKKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJfSBlbHNlIGlmIHRhcmdldE9ubHkgeworKwkJCWdvb3MgPSBvbGRnb29zCisrCQkJZ29hcmNoID0gb2xkZ29hcmNoCisrCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKKysJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKKysJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwkJCXhwcmludGYoIkJ1aWxkaW5nICVzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKKysJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgcnVuIHRoZSB0YXJnZXQncyBjbWRHbyBiaW5hcnkKKyAJCX0KKy0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisgCX0gZWxzZSB7CistCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgorLQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCistCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgorLQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCisrCQlpZiBnb29zID09IG9sZGdvb3MgJiYgZ29hcmNoID09IG9sZGdvYXJjaCB7CisrCQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCisrCQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisrCQl9IGVsc2UgeworKwkJCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCisrCQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCisrCQkJLy8gcnVuIEdPT1MvR09BUkNIIGluc3RhbGxhdGlvbi4KKysJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQorKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKysJCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCisrCisrCQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCQlnb29zID0gb2xkZ29vcworKwkJCWdvYXJjaCA9IG9sZGdvYXJjaAorKwkJCW9zLlNldGVudigiR09PUyIsIGdvb3MpCisrCQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCisrCQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKKysJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisgCQl9CistCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorIAkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCisgCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCisgCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCistCistCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKKy0JCWlmIHZmbGFnID4gMCB7CistCQkJeHByaW50ZigiXG4iKQorKwkJaWYgZGVidWcgeworKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKKysJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCisrCQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKKyAJCX0KKy0JCWdvb3MgPSBvbGRnb29zCistCQlnb2FyY2ggPSBvbGRnb2FyY2gKKy0JCW9zLlNldGVudigiR09PUyIsIGdvb3MpCistCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKKy0JCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCistCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCistCX0KKy0JZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCistCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKy0JY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQorLQlpZiBkZWJ1ZyB7CistCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCistCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCistCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKKy0JCWNvcHlmaWxlKHBhdGhmKCIlcy9jb21waWxlNCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCB3cml0ZUV4ZWMpCisgCX0KKyAKKyAJLy8gQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbmV3IGZpbGVzIGluICRHT1JPT1QvYmluIG90aGVyIHRoYW4KK0BAIC0xMzA1LDcgKzEzNzQsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7CisgCX0KKyAKKyAJLy8gUmVtb3ZlIGdvX2Jvb3RzdHJhcCBub3cgdGhhdCB3ZSdyZSBkb25lLgorLQl4cmVtb3ZlKHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKSkKKysJLy8gRXhjZXB0IHRoYXQgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGNyb3NzLWJ1aWxkcywgd2UgbmVlZCB0bworKwkvLyBrZWVwIGl0LgorKwlpZiAhIGNyb3NzQnVpbGQgeworKwkJeHJlbW92ZShwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikpCisrCX0KKyAKKyAJLy8gUHJpbnQgdHJhaWxpbmcgYmFubmVyIHVubGVzcyBpbnN0cnVjdGVkIG90aGVyd2lzZS4KKyAJaWYgIW5vQmFubmVyIHsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI0Mjc2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCkBAIC0wLDAgKzEsMTA4IEBACitGcm9tIGY5OGFhMjg3OTQxNDE3MjI2YTZlNGY3ODc1OWY4YTVlMTk3MzJjZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogRnJpLCAyIE1hciAyMDE4IDA2OjAwOjIwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggNy85XSBjbWQvZ286IG1ha2UgR09ST09UIHByZWNpb3VzIGJ5IGRlZmF1bHQKKworVGhlIGdvIGJ1aWxkIHRvb2wgbm9ybWFsbHkgcmVidWlsZHMgd2hhdGV2ZXIgaXQgZGV0ZWN0cyBpcworc3RhbGUuICBUaGlzIGNhbiBiZSBhIHByb2JsZW0gd2hlbiBHT1JPT1QgaXMgaW50ZW5kZWQgdG8KK2JlIHJlYWQtb25seSBhbmQgdGhlIGdvIHJ1bnRpbWUgaGFzIGJlZW4gYnVpbHQgYXMgYSBzaGFyZWQKK2xpYnJhcnksIHNpbmNlIHdlIGRvbid0IHdhbnQgZXZlcnkgYXBwbGljYXRpb24gdG8gYmUgcmVidWlsZGluZwordGhlIHNoYXJlZCBydW50aW1lIC0gcGFydGljdWxhcmx5IGluIGNyb3NzLWJ1aWxkL3BhY2thZ2luZworc2V0dXBzLCBzaW5jZSB0aGF0IHdvdWxkIGxlYWQgdG8gJ2FiaSBtaXNtYXRjaCcgcnVudGltZSBlcnJvcnMuCisKK1RoaXMgcGF0Y2ggcHJldmVudHMgdGhlIGluc3RhbGwgYW5kIGxpbmtzaGFyZWQgYWN0aW9ucyBmcm9tCitpbnN0YWxsaW5nIHRvIEdPUk9PVCB1bmxlc3Mgb3ZlcnJpZGRlbiB3aXRoIHRoZSBHT1JPT1RfT1ZFUlJJREUKK2Vudmlyb25tZW50IHZhcmlhYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbyB8ICAzICsrKworIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyAgfCAgNSArKysrKworIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbworaW5kZXggOWYxZjhmOGE1MC4uYTM4Mjg4MDQ3NCAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KK0BAIC01NjMsNiArNTYzLDkgQEAgZnVuYyAoYiAqQnVpbGRlcikgYWRkVHJhbnNpdGl2ZUxpbmtEZXBzKGEsIGExICpBY3Rpb24sIHNobGliIHN0cmluZykgeworIAkJCWlmIHAxID09IG5pbCB8fCBwMS5TaGxpYiA9PSAiIiB8fCBoYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildIHsKKyAJCQkJY29udGludWUKKyAJCQl9CisrCQkJaWYgZ29Sb290UHJlY2lvdXMgJiYgKHAxLlN0YW5kYXJkIHx8IHAxLkdvcm9vdCkgeworKwkJCQljb250aW51ZQorKwkJCX0KKyAJCQloYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildID0gdHJ1ZQorIAkJCS8vIFRPRE8ocnNjKTogVGhlIHVzZSBvZiBNb2RlSW5zdGFsbCBoZXJlIGlzIHN1c3BlY3QsIGJ1dCBpZiB3ZSBvbmx5IGRvIE1vZGVCdWlsZCwKKyAJCQkvLyB3ZSdsbCBlbmQgdXAgYnVpbGRpbmcgYW4gb3ZlcmFsbCBsaWJyYXJ5IG9yIGV4ZWN1dGFibGUgdGhhdCBkZXBlbmRzIGF0IHJ1bnRpbWUKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KK2luZGV4IDU3YjdiMDA4NzkuLmUyYmE5NTQyMGUgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworQEAgLTE0Myw2ICsxNDMsNyBAQCBTZWUgYWxzbzogZ28gaW5zdGFsbCwgZ28gZ2V0LCBnbyBjbGVhbi4KKyB9CisgCisgY29uc3QgY29uY3VycmVudEdDQmFja2VuZENvbXBpbGF0aW9uRW5hYmxlZEJ5RGVmYXVsdCA9IHRydWUKKyt2YXIgZ29Sb290UHJlY2lvdXMgYm9vbCA9IHRydWUKKyAKKyBmdW5jIGluaXQoKSB7CisgCS8vIGJyZWFrIGluaXQgY3ljbGUKK0BAIC0xNTYsNiArMTU3LDEwIEBAIGZ1bmMgaW5pdCgpIHsKKyAKKyAJQWRkQnVpbGRGbGFncyhDbWRCdWlsZCkKKyAJQWRkQnVpbGRGbGFncyhDbWRJbnN0YWxsKQorKworKwlpZiB4IDo9IG9zLkdldGVudigiR09ST09UX09WRVJSSURFIik7IHggIT0gIiIgeworKwkJZ29Sb290UHJlY2lvdXMgPSBmYWxzZQorKwl9CisgfQorIAorIC8vIE5vdGUgdGhhdCBmbGFncyBjb25zdWx0ZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitpbmRleCBiMGY2YjQ1NjQ3Li5jOGYyNjZhOGFkIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitAQCAtMzcxLDYgKzM3MSwyMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZChhICpBY3Rpb24pIChlcnIgZXJyb3IpIHsKKyAJCXJldHVybiBmbXQuRXJyb3JmKCJtaXNzaW5nIG9yIGludmFsaWQgYmluYXJ5LW9ubHkgcGFja2FnZSIpCisgCX0KKyAKKysJaWYgZ29Sb290UHJlY2lvdXMgJiYgKGEuUGFja2FnZS5TdGFuZGFyZCB8fCBhLlBhY2thZ2UuR29yb290KSB7CisrCQlfLCBlcnIgOj0gb3MuU3RhdChhLlBhY2thZ2UuVGFyZ2V0KQorKwkJaWYgZXJyID09IG5pbCB7CisrCQkJYS5idWlsdCA9IGEuUGFja2FnZS5UYXJnZXQKKysJCQlhLlRhcmdldCA9IGEuUGFja2FnZS5UYXJnZXQKKysJCQlhLmJ1aWxkSUQgPSBiLmZpbGVIYXNoKGEuUGFja2FnZS5UYXJnZXQpCisrCQkJYS5QYWNrYWdlLlN0YWxlID0gZmFsc2UKKysJCQlhLlBhY2thZ2UuU3RhbGVSZWFzb24gPSAiR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCisrCQkJcmV0dXJuIG5pbAorKwkJfQorKwkJaWYgYi5Db21wdXRlU3RhbGVPbmx5IHsKKysJCQlhLlBhY2thZ2UuU3RhbGUgPSB0cnVlCisrCQkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIm1pc3Npbmcgb3IgaW52YWxpZCBHT1JPT1QtcmVzaWRlbnQgcGFja2FnZSIKKysJCQlyZXR1cm4gbmlsCisrCQl9CisrCX0KKysKKyAJaWYgZXJyIDo9IGIuTWtkaXIoYS5PYmpkaXIpOyBlcnIgIT0gbmlsIHsKKyAJCXJldHVybiBlcnIKKyAJfQorQEAgLTEwOTcsNiArMTExNCwxNCBAQCBmdW5jIEJ1aWxkSW5zdGFsbEZ1bmMoYiAqQnVpbGRlciwgYSAqQWN0aW9uKSAoZXJyIGVycm9yKSB7CisgCQlyZXR1cm4gbmlsCisgCX0KKyAKKysJaWYgZ29Sb290UHJlY2lvdXMgJiYgYS5QYWNrYWdlICE9IG5pbCB7CisrCQlwIDo9IGEuUGFja2FnZQorKwkJaWYgcC5TdGFuZGFyZCB8fCBwLkdvcm9vdCB7CisrCQkJZXJyIDo9IGZtdC5FcnJvcmYoImF0dGVtcHRpbmcgdG8gaW5zdGFsbCBwYWNrYWdlICVzIGludG8gcmVhZC1vbmx5IEdPUk9PVCIsIHAuSW1wb3J0UGF0aCkKKysJCQlyZXR1cm4gZXJyCisrCQl9CisrCX0KKysKKyAJaWYgZXJyIDo9IGIuTWtkaXIoYS5PYmpkaXIpOyBlcnIgIT0gbmlsIHsKKyAJCXJldHVybiBlcnIKKyAJfQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDgtY21kLWludGVybmFsLW9iai1hcm02NC1maXgtYnJhbmNoLXRvby1mYXItd2l0aC1UQlotbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA4LWNtZC1pbnRlcm5hbC1vYmotYXJtNjQtZml4LWJyYW5jaC10b28tZmFyLXdpdGgtVEJaLWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU3NTQxNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA4LWNtZC1pbnRlcm5hbC1vYmotYXJtNjQtZml4LWJyYW5jaC10b28tZmFyLXdpdGgtVEJaLWwucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSA0MWI5MGVkN2FmMTBhMDcxY2NmZWVkZTZhNDI5ZTBkODA1MTg0MzZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlcnJ5IFpoYW5nIDxjaGVycnl5ekBnb29nbGUuY29tPgorRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAxMDozMTozOSAtMDUwMAorU3ViamVjdDogW1BBVENIIDgvOV0gY21kL2ludGVybmFsL29iai9hcm02NDogZml4IGJyYW5jaC10b28tZmFyIHdpdGggVEJaIGxpa2UKKyBpbnN0cnVjdGlvbnMKKworVGhlIGNvbXBpbGVyIG5vdyBlbWl0cyBUQlogbGlrZSBpbnN0cnVjdGlvbnMsIGJ1dCB0aGUgYXNzZW1ibGVyJ3MKK3Rvby1mYXItYnJhbmNoIHBhdGNoIGNvZGUgZGlkbid0IGluY2x1ZGUgdGhhdCBjYXNlLiBBZGQgaXQuCisKK0ZpeGVzICMyMzg4OS4KKworQ2hhbmdlLUlkOiBJYjc1ZjkyNTBjNjYwYjlmYjY1MjgzNWZiYzgzMjYzYTVkNTA3M2RjNQorLS0tCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtNy5nbyAgICAgfCAxMSArKysrKysrKystLQorIHNyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbV90ZXN0LmdvIHwgIDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbTcuZ28gYi9zcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc203LmdvCitpbmRleCBjYTgxMjM4YzkzLi5iMWVlNTUyNDg5IDEwMDY0NAorLS0tIGEvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtNy5nbworKysrIGIvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtNy5nbworQEAgLTY5Niw5ICs2OTYsMTYgQEAgZnVuYyBzcGFuNyhjdHh0ICpvYmouTGluaywgY3Vyc3ltICpvYmouTFN5bSwgbmV3cHJvZyBvYmouUHJvZ0FsbG9jKSB7CisgCQkJbyA9IGMub3Bsb29rKHApCisgCisgCQkJLyogdmVyeSBsYXJnZSBicmFuY2hlcyAqLworLQkJCWlmIChvLnR5cGVfID09IDcgfHwgby50eXBlXyA9PSAzOSkgJiYgcC5QY29uZCAhPSBuaWwgeyAvLyA3OiBCRVEgYW5kIGxpa2UsIDM5OiBDQlogYW5kIGxpa2UKKysJCQlpZiAoby50eXBlXyA9PSA3IHx8IG8udHlwZV8gPT0gMzkgfHwgby50eXBlXyA9PSA0MCkgJiYgcC5QY29uZCAhPSBuaWwgeyAvLyA3OiBCRVEgYW5kIGxpa2UsIDM5OiBDQlogYW5kIGxpa2UsIDQwOiBUQlogYW5kIGxpa2UKKyAJCQkJb3R4dCA6PSBwLlBjb25kLlBjIC0gcGMKKy0JCQkJaWYgb3R4dCA8PSAtKDE8PDE4KSsxMCB8fCBvdHh0ID49ICgxPDwxOCktMTAgeworKwkJCQl2YXIgdG9vZmFyIGJvb2wKKysJCQkJc3dpdGNoIG8udHlwZV8geworKwkJCQljYXNlIDcsIDM5OiAvLyBicmFuY2ggaW5zdHJ1Y3Rpb24gZW5jb2RlcyAxOSBiaXRzCisrCQkJCQl0b29mYXIgPSBvdHh0IDw9IC0oMTw8MjApKzEwIHx8IG90eHQgPj0gKDE8PDIwKS0xMAorKwkJCQljYXNlIDQwOiAvLyBicmFuY2ggaW5zdHJ1Y3Rpb24gZW5jb2RlcyAxNCBiaXRzCisrCQkJCQl0b29mYXIgPSBvdHh0IDw9IC0oMTw8MTUpKzEwIHx8IG90eHQgPj0gKDE8PDE1KS0xMAorKwkJCQl9CisrCQkJCWlmIHRvb2ZhciB7CisgCQkJCQlxIDo9IGMubmV3cHJvZygpCisgCQkJCQlxLkxpbmsgPSBwLkxpbmsKKyAJCQkJCXAuTGluayA9IHEKK2RpZmYgLS1naXQgYS9zcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc21fdGVzdC5nbyBiL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbV90ZXN0LmdvCitpbmRleCAzNjljNDhmNTEwLi4zZTBjOWMxM2E2IDEwMDY0NAorLS0tIGEvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtX3Rlc3QuZ28KKysrKyBiL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbV90ZXN0LmdvCitAQCAtNTIsNiArNTIsNyBAQCBmdW5jIFRlc3RMYXJnZSh0ICp0ZXN0aW5nLlQpIHsKKyAvLyBnZW4gZ2VuZXJhdGVzIGEgdmVyeSBsYXJnZSBwcm9ncmFtLCB3aXRoIGEgdmVyeSBmYXIgY29uZGl0aW9uYWwgYnJhbmNoLgorIGZ1bmMgZ2VuKGJ1ZiAqYnl0ZXMuQnVmZmVyKSB7CisgCWZtdC5GcHJpbnRsbihidWYsICJURVhUIGYoU0IpLDAsJDAtMCIpCisrCWZtdC5GcHJpbnRsbihidWYsICJUQlogJDUsIFIwLCBsYWJlbCIpCisgCWZtdC5GcHJpbnRsbihidWYsICJDQlogUjAsIGxhYmVsIikKKyAJZm10LkZwcmludGxuKGJ1ZiwgIkJFUSBsYWJlbCIpCisgCWZvciBpIDo9IDA7IGkgPCAxPDwxOTsgaSsrIHsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZiMDBiMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMTMwIEBACitGcm9tIGY1NzVkODVjNGJkOWIyOTAzMjIzZDZjMGRjYzM4YTEyNzc1ZDU4MmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogU3VuLCAxOCBGZWIgMjAxOCAwODoyNDowNSAtMDgwMAorU3ViamVjdDogW1BBVENIIDkvOV0gbGQ6IHJlcGxhY2UgZ2xpYmMgZHluYW1pYyBsaW5rZXIgd2l0aCBtdXNsCisKK1Jld29yayBvZiBwYXRjaCBieSBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorZm9yIGdvIDEuMTAuICBTaG91bGQgYmUgYXBwbGllZCBjb25kaXRpb25hbGx5IG9uCittdXNsIGJlaW5nIHRoZSBzeXN0ZW0gQyBsaWJyYXJ5LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1JlYWwgZml4IHNob3VsZCBiZSBwb3J0YWJsZSBhY3Jvc3MgbGliY3NdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbyAgICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28gICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbyB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbyAgICB8IDIgKy0KKyA4IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCitpbmRleCA4N2U4MDkxNjZhLi5mNTIyYTYzMDM0IDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbworQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCisgCQlUTFNJRXRvTEU6ICAgICAgICB0bHNJRXRvTEUsCisgCistCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIsCisrCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLXg4Ni02NC5zby4xIiwKKyAJCUZyZWVic2RkeW5sZDogICAiL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAorIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAorIAkJTmV0YnNkZHlubGQ6ICAgICIvbGliZXhlYy9sZC5lbGZfc28iLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KK2luZGV4IGRhMTZmOTIzNDUuLmZkMTQ5NDBlZGUgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KK0BAIC01OCw3ICs1OCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1saW51eC5zby4zIiwgLy8gMiBmb3IgT0FCSSwgMyBmb3IgRUFCSQorKwkJTGludXhkeW5sZDogICAgICIvbGliL2xkLW11c2wtYXJtaGYuc28uMSIsCisgCQlGcmVlYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCisgCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KK2luZGV4IDZiMzg2YWQ3MzcuLjk5ODYzNzEyY2MgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCitAQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1saW51eC1hYXJjaDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1hYXJjaDY0LnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworaW5kZXggYzVkMzQ1MWMzOS4uZmQ4NWU2MzY4ZCAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCitAQCAtNjAsNyArNjAsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYi9sZC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KK2luZGV4IDgzOTc0ZTViNTYuLjA5NzIyNGY2ZGEgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KK0BAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLW1pcHM2NGxlLnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorIAkJTmV0YnNkZHlubGQ6ICAgICJYWFgiLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCitpbmRleCAyNzNkOWI0MmNiLi5hNTAzYWJlOGVhIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCisgCQkvLyBUT0RPKGF1c3Rpbik6IEFCSSB2MSB1c2VzIC91c3IvbGliL2xkLnNvLjEsCistCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtcG93ZXJwYzY0bGUuc28uMSIsCisgCisgCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28KK2luZGV4IDlhYzdlYjgyMTcuLjM4MjVmZjdhYmUgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCitAQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtczM5MHguc28uMSIsCisgCisgCQkvLyBub3QgcmVsZXZhbnQgZm9yIHMzOTB4CisgCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbworaW5kZXggNmE3NDRkYzA0ZS4uZDgxZjM5MjU0OSAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbworQEAgLTU4LDcgKzU4LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbGludXguc28uMiIsCisrCQlMaW51eGR5bmxkOiAgICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIiwKKyAJCUZyZWVic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCisgCQlPcGVuYnNkZHlubGQ6ICIvdXNyL2xpYmV4ZWMvbGQuc28iLAorIAkJTmV0YnNkZHlubGQ6ICAiL3Vzci9saWJleGVjL2xkLmVsZl9zbyIsCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS5pbmMKaW5kZXggMjgyMzMwNC4uYTk0MmY2ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LmluYwpAQCAtMSw3ICsxLDcgQEAKIHJlcXVpcmUgZ28tY29tbW9uLmluYwogCiBHT19CQVNFVkVSU0lPTiA9ICIxLjkiCi1HT19NSU5PUiA9ICIuNCIKK0dPX01JTk9SID0gIi42IgogUFYgLj0gIiR7R09fTUlOT1J9IgogCiBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKQEAgLTIyLDUgKzIyLDUgQEAKICIKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL3NldC1leHRlcm5hbC1saW5rZXIucGF0Y2giCiAKLVNSQ19VUklbbWFpbi5tZDVzdW1dID0gIjY4MTY0NDFmZDY2ODBjNjM4NjVjZGQ1Y2I4YmMxOTYwIgotU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiMDU3M2E4ZGYzMzE2ODk3NzE4NWFhNDQxNzMzMDVlNWEwNDUwZjU1MjEzNjAwZTk0NTQxNjA0Yjc1ZDQ2ZGMwNiIKK1NSQ19VUklbbWFpbi5tZDVzdW1dID0gIjUyYzFhMzA2MzI5MTAzNjU5NzU1MmQzZmVkMGIyOTE3IgorU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiMzZmNDA1OWJlNjU4ZjdmMDcwOTFlMjdmZTA0YmI5ZTk3YTBjNDgzNmViNDQ2ZTRjNWJhYzNjOTBmZjllNTgyOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYwppbmRleCA5YWY2ODczLi4xMWQ1NWM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jb21tb24uaW5jCkBAIC0xNywxMCArMTcsMTcgQEAKIFNSQ19VUkkgPSAiaHR0cDovL2dvbGFuZy5vcmcvZGwvZ28ke1BWfS5zcmMudGFyLmd6O25hbWU9bWFpbiIKIFMgPSAiJHtXT1JLRElSfS9nbyIKIEIgPSAiJHtTfSIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwuc3JjXC50YXIiCiAKIElOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCA9ICIxIgogU1NUQVRFX1NDQU5fQ01EID0gInRydWUiCiAKK2V4cG9ydCBHT1JPT1RfT1ZFUlJJREUgPSAiMSIKK2V4cG9ydCBHT1RNUERJUiA/PSAiJHtXT1JLRElSfS9nby10bXAiCitHT1RNUERJUlt2YXJkZXB2YWx1ZV0gPSAiIgorZXhwb3J0IEdPQ0FDSEUgPSAib2ZmIgorZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCisKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKIAlCVUlMRF9DQz0ke0JVSUxEX0NDfQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYwppbmRleCA4YWZkYTZiLi5lYTY4Yjg4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYwpAQCAtNywzNCArNywyOSBAQAogCiBleHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKIGV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT0hPU1RPU19DUk9TUyA9ICIke0hPU1RfR09PU30iCi1leHBvcnQgR09IT1NUQVJDSF9DUk9TUyA9ICIke0hPU1RfR09BUkNIfSIKIGV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKIGV4cG9ydCBHT1RPT0xESVJfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke0hPU1RfU1lTfS9nby9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9IgogZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCi1leHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKLWV4cG9ydCBDQ19GT1JfVEFSR0VUID0gIiR7VEFSR0VUX1BSRUZJWH1nY2MiCi1leHBvcnQgQ1hYX0ZPUl9UQVJHRVQgPSAiJHtUQVJHRVRfUFJFRklYfWcrKyIKLUNDID0gIiR7SE9TVF9QUkVGSVh9Z2NjIgotZXhwb3J0IENHT19DRkxBR1MgPSAiLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSAke0hPU1RfQ0NfQVJDSH0gJHtDRkxBR1N9IgotZXhwb3J0IENHT19MREZMQUdTID0gIi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gJHtIT1NUX0NDX0FSQ0h9ICR7TERGTEFHU30iCi1leHBvcnQgR09fTERGTEFHUyA9ICctbGlua21vZGUgZXh0ZXJuYWwgLWV4dGxkICR7SE9TVF9QUkVGSVh9Z2NjIC1leHRsZGZsYWdzICItLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9ICR7SE9TVF9DQ19BUkNIfSAke0xERkxBR1N9IicKK2V4cG9ydCBDR09fQ0ZMQUdTID0gIiR7Q0ZMQUdTfSIKK2V4cG9ydCBDR09fTERGTEFHUyA9ICIke0xERkxBR1N9IgorZXhwb3J0IEdPX0xERkxBR1MgPSAnLWxpbmttb2RlIGV4dGVybmFsIC1leHRsZCAke0hPU1RfUFJFRklYfWdjYyAtZXh0bGRmbGFncyAiLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSAke0xERkxBR1N9IicKIAogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIAogZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgR09CSU49IiR7Qn0vYmluIgotCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZwotCW1rZGlyICR7R09CSU59CisJZXhwb3J0IENDX0ZPUl8ke0hPU1RfR09PU31fJHtIT1NUX0dPQVJDSH09IiR7SE9TVF9QUkVGSVh9Z2NjIC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9JHtTREtQQVRITkFUSVZFfSAke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCisJZXhwb3J0IENYWF9GT1JfJHtIT1NUX0dPT1N9XyR7SE9TVF9HT0FSQ0h9PSIke0hPU1RfUFJFRklYfWd4eCAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSR7U0RLUEFUSE5BVElWRX0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgogCWNkIHNyYwogCS4vbWFrZS5iYXNoIC0taG9zdC1vbmx5IC0tbm8tYmFubmVyCiAJY2QgJHtCfQogfQorZG9fY29tcGlsZVtkaXJzXSA9KyAiJHtHT1RNUERJUn0gJHtCfS9iaW4gJHtCfS9wa2ciCitkb19jb21waWxlW2NsZWFuZGlyc10gKz0gIiR7R09UTVBESVJ9ICR7Qn0vYmluICR7Qn0vcGtnIgogCiAKIG1ha2Vfd3JhcHBlcigpIHsKLSAgICBybSAtZiAke0R9JHtiaW5kaXJ9LyQyCi0gICAgY2F0IDw8RU5EID4ke0R9JHtiaW5kaXJ9LyQyCisJcm0gLWYgJHtEfSR7YmluZGlyfS8kMgorCWNhdCA8PEVORCA+JHtEfSR7YmluZGlyfS8kMgogIyEvYmluL3NoCiBoZXJlPVxgZGlybmFtZSBcJDBcYAogbmF0aXZlX2dvcm9vdD1cYHJlYWRsaW5rIC1mIFwkaGVyZS8uLi8uLi9saWIvJHtUQVJHRVRfU1lTfS9nb1xgCkBAIC00MiwxMSArMzcsMTIgQEAKIGV4cG9ydCBHT09TPSIke1RBUkdFVF9HT09TfSIKIHRlc3QgLW4gIlwkR09BUk0iIHx8IGV4cG9ydCBHT0FSTT0iJHtUQVJHRVRfR09BUk19IgogdGVzdCAtbiAiXCRHTzM4NiIgfHwgZXhwb3J0IEdPMzg2PSIke1RBUkdFVF9HTzM4Nn0iCit0ZXN0IC1uICJcJEdPTUlQUyIgfHwgZXhwb3J0IEdPTUlQUz0iJHtUQVJHRVRfR09NSVBTfSIKIGV4cG9ydCBHT1RPT0xESVI9IlwkbmF0aXZlX2dvcm9vdC9wa2cvdG9vbC8ke0hPU1RfR09UVVBMRX0iCiB0ZXN0IC1uICJcJEdPUk9PVCIgfHwgZXhwb3J0IEdPUk9PVD0iXCRPRUNPUkVfVEFSR0VUX1NZU1JPT1QvJHt0YXJnZXRfbGliZGlyfS9nbyIKIFwkaGVyZS8uLi8uLi9saWIvJHtUQVJHRVRfU1lTfS9nby9iaW4vJDEgIlwkQCIKIEVORAotICAgIGNobW9kICt4ICR7RH0ke2JpbmRpcn0vJDIKKwljaG1vZCAreCAke0R9JHtiaW5kaXJ9LyQyCiB9CiAKIGRvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FjOTQ0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xMC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCityZXF1aXJlIGdvLSR7UFZ9LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbl8xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuOS5iYgppbmRleCA3YWM5NDQ5Li4zNjdhOTY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuOS5iYgpAQCAtMSwyICsxLDEyIEBACiByZXF1aXJlIGdvLWNyb3NzLWNhbmFkaWFuLmluYwogcmVxdWlyZSBnby0ke1BWfS5pbmMKKworZXhwb3J0IEdPSE9TVE9TX0NST1NTID0gIiR7SE9TVF9HT09TfSIKK2V4cG9ydCBHT0hPU1RBUkNIX0NST1NTID0gIiR7SE9TVF9HT0FSQ0h9IgorZXhwb3J0IENDX0ZPUl9UQVJHRVQgPSAiJHtIT1NUX1BSRUZJWH1nY2MgLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0ke1NES1BBVEhOQVRJVkV9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKK2V4cG9ydCBDWFhfRk9SX1RBUkdFVCA9ICIke0hPU1RfUFJFRklYfWcrKyAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSR7U0RLUEFUSE5BVElWRX0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlleHBvcnQgVE1QRElSPSIkR09UTVBESVIiCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCmluZGV4IDNhYzcyMTEuLjQ0ZjIzMGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCkBAIC0xLDcgKzEsNyBAQAogaW5oZXJpdCBjcm9zcwogCiBQUk9WSURFUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyIKLURFUEVORFMgKz0gImdvLW5hdGl2ZSIKK0RFUEVORFMgPSAiZ28tbmF0aXZlIgogCiBQTiA9ICJnby1jcm9zcy0ke1RBUkdFVF9BUkNIfSIKIApAQCAtMTEsNTIgKzExLDUyIEBACiBleHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCiBleHBvcnQgR09BUk0gPSAiJHtUQVJHRVRfR09BUk19IgogZXhwb3J0IEdPMzg2ID0gIiR7VEFSR0VUX0dPMzg2fSIKK2V4cG9ydCBHT01JUFMgPSAiJHtUQVJHRVRfR09NSVBTfSIKIGV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKIGV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgotZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCi1leHBvcnQgQ0NfRk9SX1RBUkdFVD0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgotZXhwb3J0IENYWF9GT1JfVEFSR0VUPSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCitleHBvcnQgR09DQUNIRSA9ICJvZmYiCiBDQyA9ICIke0BkLmdldFZhcignQlVJTERfQ0MnKS5zdHJpcCgpfSIKIAogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIAogZG9fY29tcGlsZSgpIHsKLSAgICBleHBvcnQgR09CSU49IiR7Qn0vYmluIgotICAgIHJtIC1yZiAke0dPQklOfSAke0J9L3BrZwotICAgIG1rZGlyICR7R09CSU59Ci0gICAgY2Qgc3JjCi0gICAgLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkKLSAgICBjZCAke0J9CisJZXhwb3J0IENDX0ZPUl8ke0dPT1N9XyR7R09BUkNIfT0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCWV4cG9ydCBDWFhfRk9SXyR7R09PU31fJHtHT0FSQ2h9PSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJY2Qgc3JjCisJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKKwljZCAke0J9CiB9Ci0KK2RvX2NvbXBpbGVbZGlyc10gPSsgIiR7R09UTVBESVJ9ICR7Qn0vYmluICR7Qn0vcGtnIgorZG9fY29tcGlsZVtjbGVhbmRpcnNdICs9ICIke0dPVE1QRElSfSAke0J9L2JpbiAke0J9L3BrZyIKIAogbWFrZV93cmFwcGVyKCkgewotICAgIHJtIC1mICR7RH0ke2JpbmRpcn0vJDIKLSAgICBjYXQgPDxFTkQgPiR7RH0ke2JpbmRpcn0vJDIKKwlybSAtZiAke0R9JHtiaW5kaXJ9LyQyCisJY2F0IDw8RU5EID4ke0R9JHtiaW5kaXJ9LyQyCiAjIS9iaW4vYmFzaAogaGVyZT1cYGRpcm5hbWUgXCQwXGAKIGV4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCiBleHBvcnQgR09PUz0iJHtUQVJHRVRfR09PU30iCiBleHBvcnQgR09BUk09Ilwke0dPQVJNOi0ke1RBUkdFVF9HT0FSTX19IgogZXhwb3J0IEdPMzg2PSJcJHtHTzM4NjotJHtUQVJHRVRfR08zODZ9fSIKK2V4cG9ydCBHT01JUFM9Ilwke0dPTUlQUzotJHtUQVJHRVRfR09NSVBTfX0iCiBcJGhlcmUvLi4vLi4vbGliLyR7Q1JPU1NfVEFSR0VUX1NZU19ESVJ9L2dvL2Jpbi8kMSAiXCRAIgogRU5ECi0gICAgY2htb2QgK3ggJHtEfSR7YmluZGlyfS8kMgorCWNobW9kICt4ICR7RH0ke2JpbmRpcn0vJDIKIH0KIAogZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28KLSAgICBjcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke0J9L3BrZyAke0R9JHtsaWJkaXJ9L2dvLwotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMKLSAgICAoY2QgJHtTfS9zcmM7IGZvciBkIGluICo7IGRvIFwKLSAgICAgICAgWyAhIC1kICRkIF0gfHwgY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtTfS9zcmMvJGQgJHtEfSR7bGliZGlyfS9nby9zcmMvOyBcCi0gICAgZG9uZSkKLSAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9nby9zcmMvcnVudGltZS9wcHJvZi90ZXN0ZGF0YQotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtsaWJkaXJ9L2dvL2JpbgotICAgIGZvciBmIGluICR7Qn0vYmluLyoKLSAgICBkbwotICAgICAgICBiYXNlPWBiYXNlbmFtZSAkZmAKLSAgICAgICAgaW5zdGFsbCAtbTc1NSAkZiAke0R9JHtsaWJkaXJ9L2dvL2JpbgotICAgICAgICBtYWtlX3dyYXBwZXIgJGJhc2UgJHtUQVJHRVRfUFJFRklYfSRiYXNlCi0gICAgZG9uZQorCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nbworCWNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7Qn0vcGtnICR7RH0ke2xpYmRpcn0vZ28vCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3NyYworCShjZCAke1N9L3NyYzsgZm9yIGQgaW4gKjsgZG8gXAorCQlbICEgLWQgJGQgXSB8fCBjcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke1N9L3NyYy8kZCAke0R9JHtsaWJkaXJ9L2dvL3NyYy87IFwKKwlkb25lKQorCWZpbmQgJHtEfSR7bGliZGlyfS9nby9zcmMgLWRlcHRoIC10eXBlIGQgLW5hbWUgdGVzdGRhdGEgLWV4ZWMgcm0gLXJmIHt9IFw7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0vZ28vYmluCisJZm9yIGYgaW4gJHtCfS9iaW4vKgorCWRvCisJCWJhc2U9YGJhc2VuYW1lICRmYAorCQlpbnN0YWxsIC1tNzU1ICRmICR7RH0ke2xpYmRpcn0vZ28vYmluCisJCW1ha2Vfd3JhcHBlciAkYmFzZSAke1RBUkdFVF9QUkVGSVh9JGJhc2UKKwlkb25lCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBiNWEwMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xMC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tY3Jvc3MuaW5jCityZXF1aXJlIGdvLSR7UFZ9LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOS5iYgppbmRleCA4MGI1YTAzLi40NzM5YzdkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOS5iYgpAQCAtMSwyICsxLDEwIEBACiByZXF1aXJlIGdvLWNyb3NzLmluYwogcmVxdWlyZSBnby0ke1BWfS5pbmMKKworZXhwb3J0IENDX0ZPUl9UQVJHRVQgPSAiJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorZXhwb3J0IENYWF9GT1JfVEFSR0VUID0gIiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCisJZXhwb3J0IFRNUERJUj0iJEdPVE1QRElSIgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nkay5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYwppbmRleCBmNjdlNGI5Li40MzkxYjMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYwpAQCAtMTAsMjIgKzEwLDE4IEBACiBleHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCiBleHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCiBleHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKLWV4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgotZXhwb3J0IENDX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCi1leHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCi1leHBvcnQgR09fSU5TVEFMTCA9ICJjbWQiCi1DQyA9ICIke0BkLmdldFZhcignQlVJTERfQ0MnKS5zdHJpcCgpfSIKIAogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIAogZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgR09CSU49IiR7Qn0vYmluIgotCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZwotCW1rZGlyICR7R09CSU59CisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke1NES1BBVEhOQVRJVkV9IgorCWV4cG9ydCBDWFhfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH09IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCiAJY2Qgc3JjCi0JLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkKKwkuL21ha2UuYmFzaCAtLWhvc3Qtb25seSAtLW5vLWJhbm5lcgogCWNkICR7Qn0KIH0KK2RvX2NvbXBpbGVbZGlyc10gPSsgIiR7R09UTVBESVJ9ICR7Qn0vYmluICR7Qn0vcGtnIgorZG9fY29tcGlsZVtjbGVhbmRpcnNdICs9ICIke0dPVE1QRElSfSAke0J9L2JpbiAke0J9L3BrZyIKIAogbWFrZV93cmFwcGVyKCkgewogICAgIHJtIC1mICR7RH0ke2JpbmRpcn0vJDIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODU3YzhhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjEwLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby1jcm9zc3Nkay5pbmMKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS45LmJiCmluZGV4IDE4NTdjOGEuLjNhYzYyOWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS45LmJiCkBAIC0xLDIgKzEsMTEgQEAKIHJlcXVpcmUgZ28tY3Jvc3NzZGsuaW5jCiByZXF1aXJlIGdvLSR7UFZ9LmluYworCitleHBvcnQgQ0NfRk9SX1RBUkdFVCA9ICIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQgPSAiJHtUQVJHRVRfUFJFRklYfWcrKyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorZXhwb3J0IEdPX0lOU1RBTEwgPSAiY21kIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlleHBvcnQgVE1QRElSPSIkR09UTVBESVIiCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcC8wMDAxLUFkZC1zdXBwb3J0LWZvci1taXBzLW1pcHM2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwLzAwMDEtQWRkLXN1cHBvcnQtZm9yLW1pcHMtbWlwczY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZWM5ODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcC8wMDAxLUFkZC1zdXBwb3J0LWZvci1taXBzLW1pcHM2NC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGYwZmI4MDYwNDM4NWFlMzI2NmE0NzI2MDFlZjY4NTg5NmI0Y2MwYWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWbGFkaW1pciBTdGVmYW5vdmljIDx2bGFkaW1pci5zdGVmYW5vdmljQGltZ3RlYy5jb20+CitEYXRlOiBGcmksIDE3IEZlYiAyMDE3IDIwOjQ0OjQzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBtaXBzLCBtaXBzNjQKKworLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIHZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfbWlwczY0eC5nbyB8IDEyICsrKysrKysrKysrKworIHZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfbWlwc3guZ28gICB8IDEyICsrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCB2ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X21pcHM2NHguZ28KKyBjcmVhdGUgbW9kZSAxMDA2NDQgdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9taXBzeC5nbworCitkaWZmIC0tZ2l0IGEvdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9taXBzNjR4LmdvIGIvdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9taXBzNjR4LmdvCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjEzNGI1NzhiCistLS0gL2Rldi9udWxsCisrKysgYi92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X21pcHM2NHguZ28KK0BAIC0wLDAgKzEsMTIgQEAKKysvLyArYnVpbGQgbWlwczY0IG1pcHM2NGxlCisrCisrcGFja2FnZSBib2x0CisrCisrLy8gbWF4TWFwU2l6ZSByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1tYXAgc2l6ZSBzdXBwb3J0ZWQgYnkgQm9sdC4KKytjb25zdCBtYXhNYXBTaXplID0gMHg4MDAwMDAwMDAwIC8vIDUxMkdCCisrCisrLy8gbWF4QWxsb2NTaXplIGlzIHRoZSBzaXplIHVzZWQgd2hlbiBjcmVhdGluZyBhcnJheSBwb2ludGVycy4KKytjb25zdCBtYXhBbGxvY1NpemUgPSAweDdGRkZGRkZGCisrCisrLy8gQXJlIHVuYWxpZ25lZCBsb2FkL3N0b3JlcyBicm9rZW4gb24gdGhpcyBhcmNoPworK3ZhciBicm9rZW5VbmFsaWduZWQgPSBmYWxzZQorZGlmZiAtLWdpdCBhL3ZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfbWlwc3guZ28gYi92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X21pcHN4LmdvCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLmQ1ZWNiMDU5CistLS0gL2Rldi9udWxsCisrKysgYi92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X21pcHN4LmdvCitAQCAtMCwwICsxLDEyIEBACisrLy8gK2J1aWxkIG1pcHMgbWlwc2xlCisrCisrcGFja2FnZSBib2x0CisrCisrLy8gbWF4TWFwU2l6ZSByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1tYXAgc2l6ZSBzdXBwb3J0ZWQgYnkgQm9sdC4KKytjb25zdCBtYXhNYXBTaXplID0gMHg0MDAwMDAwMCAvLyAxR0IKKysKKysvLyBtYXhBbGxvY1NpemUgaXMgdGhlIHNpemUgdXNlZCB3aGVuIGNyZWF0aW5nIGFycmF5IHBvaW50ZXJzLgorK2NvbnN0IG1heEFsbG9jU2l6ZSA9IDB4RkZGRkZGRgorKworKy8vIEFyZSB1bmFsaWduZWQgbG9hZC9zdG9yZXMgYnJva2VuIG9uIHRoaXMgYXJjaD8KKyt2YXIgYnJva2VuVW5hbGlnbmVkID0gZmFsc2UKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuMy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZmViNDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIkRlcGVuZGVuY3kgbWFuYWdlbWVudCB0b29sIGZvciBHb2xhbmciCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nL2RlcCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjLyR7R09fSU1QT1JUfS9MSUNFTlNFO21kNT0xYmFkMzE1NjQ3NzUxZmFiMDAwNzgxMmY3MGQ0MmMwZCIKLQotR09fSU1QT1JUID0gImdpdGh1Yi5jb20vZ29sYW5nL2RlcCIKLVNSQ19VUkkgPSAiZ2l0Oi8vJHtHT19JTVBPUlR9IgotCi0jIFBvaW50cyB0byAwLjMuMCB0YWcKLVNSQ1JFViA9ICI3YTkxYjc5NGJiZmJmMWYzYjhiNzk4MjM3OTkzMTY0NTExMjc4MDFiIgotCi1pbmhlcml0IGdvCi0KLUdPX0lOU1RBTEwgPSAiJHtHT19JTVBPUlR9L2NtZC9kZXAiCi0KLVJERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgyZTYzNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNC4xLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiRGVwZW5kZW5jeSBtYW5hZ2VtZW50IHRvb2wgZm9yIEdvbGFuZyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmcvZGVwIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvJHtHT19JTVBPUlR9L0xJQ0VOU0U7bWQ1PTFiYWQzMTU2NDc3NTFmYWIwMDA3ODEyZjcwZDQyYzBkIgorCitHT19JTVBPUlQgPSAiZ2l0aHViLmNvbS9nb2xhbmcvZGVwIgorU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtc3VwcG9ydC1mb3ItbWlwcy1taXBzNjQucGF0Y2g7cGF0Y2hkaXI9c3JjL2dpdGh1Yi5jb20vZ29sYW5nL2RlcCBcCisgICAgICAgICAgIgorCisjIFBvaW50cyB0byAwLjQuMSB0YWcKK1NSQ1JFViA9ICIzN2Q5ZWEwYWMxNmYwZTBhMDVhZmMzYjYwZTFhYzhjMzY0YjZjMzI5IgorCitpbmhlcml0IGdvCisKK0dPX0lOU1RBTEwgPSAiJHtHT19JTVBPUlR9L2NtZC9kZXAiCisKK1JERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmUuaW5jCmluZGV4IDk1ZGIxYzIuLmI3NmZiMDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZS5pbmMKQEAgLTQsMzQgKzQsMzEgQEAKIAogaW5oZXJpdCBuYXRpdmUKIAotU1JDX1VSSV9hcHBlbmQgPSAiIGh0dHA6Ly9nb2xhbmcub3JnL2RsL2dvMS40LjMuc3JjLnRhci5nejtuYW1lPWJvb3RzdHJhcDtzdWJkaXI9Z28xLjQiCi1TUkNfVVJJW2Jvb3RzdHJhcC5tZDVzdW1dID0gImRmYjYwNDUxMTExNWRkNDAyYTc3YTU1M2E1OTIzYTA0IgotU1JDX1VSSVtib290c3RyYXAuc2hhMjU2c3VtXSA9ICI5OTQ3ZmM3MDViMGI4NDFiNTkzOGM0OGIyMmRjMzNlOTY0N2VjMDc1MmJhZTY2ZTUwMjc4ZGY0ZjIzZjY0OTU5IgorU1JDX1VSSV9hcHBlbmQgPSAiIGh0dHBzOi8vZGwuZ29vZ2xlLmNvbS9nby9nbzEuNC1ib290c3RyYXAtMjAxNzEwMDMudGFyLmd6O25hbWU9Ym9vdHN0cmFwO3N1YmRpcj1nbzEuNCIKK1NSQ19VUklbYm9vdHN0cmFwLm1kNXN1bV0gPSAiZGJmNzI3YTRiMGUzNjViZjg4ZDk3Y2JmZGU1OTAwMTYiCitTUkNfVVJJW2Jvb3RzdHJhcC5zaGEyNTZzdW1dID0gImY0ZmY1YjVlYjNhM2NhZTFjOTkzNzIzZjNlYWI1MTljNWJhZTE4ODY2YjVlNWY5NmZlMTEwMmYwY2I1YzNlNTIiCiAKIGV4cG9ydCBHT09TID0gIiR7QlVJTERfR09PU30iCiBleHBvcnQgR09BUkNIID0gIiR7QlVJTERfR09BUkNIfSIKIENDID0gIiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgogCi1leHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKK0dPTUFLRUFSR1MgPz0gIi0tbm8tYmFubmVyIgogCiBkb19jb25maWd1cmUoKSB7Ci0gICAgY2QgJHtXT1JLRElSfS9nbzEuNC9nby9zcmMKLSAgICBDR09fRU5BQkxFRD0wIEdPUk9PVD0ke1dPUktESVJ9L2dvMS40L2dvIC4vbWFrZS5iYXNoCisJY2QgJHtXT1JLRElSfS9nbzEuNC9nby9zcmMKKwlDR09fRU5BQkxFRD0wIEdPUk9PVD0ke1dPUktESVJ9L2dvMS40L2dvIC4vbWFrZS5iYXNoCiB9CiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKIAlleHBvcnQgR09ST09UX0ZJTkFMPSIke25vbnN0YWdpbmdfbGliZGlyfS9nbyIKIAlleHBvcnQgR09ST09UX0JPT1RTVFJBUD0iJHtXT1JLRElSfS9nbzEuNC9nbyIKLQlybSAtcmYgJHtHT0JJTn0KLQlta2RpciAke0dPQklOfQotCi0JZXhwb3J0IFRNUERJUj0ke1dPUktESVJ9L2J1aWxkLXRtcAotCW1rZGlyIC1wICR7V09SS0RJUn0vYnVpbGQtdG1wCiAKIAljZCBzcmMKLQkuL21ha2UuYmFzaCAtLWhvc3Qtb25seQorCS4vbWFrZS5iYXNoICR7R09NQUtFQVJHU30KKwljZCAke0J9CiB9Citkb19jb21waWxlW2RpcnNdID0rICIke0dPVE1QRElSfSAke0J9L2JpbiIKK2RvX2NvbXBpbGVbY2xlYW5kaXJzXSArPSAiJHtHT1RNUERJUn0gJHtCfS9iaW4iCiAKIG1ha2Vfd3JhcHBlcigpIHsKIAlybSAtZiAke0R9JHtiaW5kaXJ9LyQyJDMKQEAgLTUxLDcgKzQ4LDcgQEAKIAkoY2QgJHtTfS9zcmM7IGZvciBkIGluICo7IGRvIFwKIAkJWyAtZCAkZCBdICYmIGNwIC1hICR7U30vc3JjLyRkICR7RH0ke2xpYmRpcn0vZ28vc3JjLzsgXAogCWRvbmUpCi0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vZ28vc3JjL3J1bnRpbWUvcHByb2YvdGVzdGRhdGEKKwlmaW5kICR7RH0ke2xpYmRpcn0vZ28vc3JjIC1kZXB0aCAtdHlwZSBkIC1uYW1lIHRlc3RkYXRhIC1leGVjIHJtIC1yZiB7fSBcOwogCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtsaWJkaXJ9L2dvL2JpbgogCWZvciBmIGluICR7Qn0vYmluLyoKIAlkbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJmM2MwZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuMTAuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlICR7UE59LmluYworcmVxdWlyZSBnby0ke1BWfS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOS5iYgppbmRleCBiYmYzYzBkLi44NjIxZTFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS45LmJiCkBAIC0xLDIgKzEsNCBAQAogcmVxdWlyZSAke1BOfS5pbmMKIHJlcXVpcmUgZ28tJHtQVn0uaW5jCisKK0dPTUFLRUFSR1MgPSAiLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lLmluYwppbmRleCAyOWFlODZlLi4wMDQxZThhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKQEAgLTgsMTMgKzgsMTYgQEAKIGV4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKIGV4cG9ydCBHT0FSTSA9ICIke1RBUkdFVF9HT0FSTX0iCiBleHBvcnQgR08zODYgPSAiJHtUQVJHRVRfR08zODZ9IgorZXhwb3J0IEdPTUlQUyA9ICIke1RBUkdFVF9HT01JUFN9IgogZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgogZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCi1leHBvcnQgR09fVEFSR0VUX0lOU1RBTEwgPSAic3RkIgotZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCi1leHBvcnQgQ0NfRk9SX1RBUkdFVD0iJHtDQ30iCi1leHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7Q1hYfSIKLWV4cG9ydCBHT1JPT1RfT1ZFUlJJREUgPSAiMSIKK2V4cG9ydCBDR09fQ0ZMQUdTID0gIiR7Q0ZMQUdTfSIKK2V4cG9ydCBDR09fQ1BQRkxBR1MgPSAiJHtDUFBGTEFHU30iCitleHBvcnQgQ0dPX0NYWEZMQUdTID0gIiR7Q1hYRkxBR1N9IgorZXhwb3J0IENHT19MREZMQUdTID0gIiR7TERGTEFHU30iCisKK0dPX0VYVExERkxBR1MgPz0gIiR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9ICR7TERGTEFHU30iCitHT19TSExJQl9MREZMQUdTID89ICctbGRmbGFncz0iLS1saW5rbW9kZT1leHRlcm5hbCAtZXh0bGRmbGFncyAnJHtHT19FWFRMREZMQUdTfSciJwogCiBkb19jb25maWd1cmUoKSB7CiAJOgpAQCAtMjUsMjEgKzI4LDIwIEBACiB9CiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKLQlleHBvcnQgQ0M9IiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgotCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZwotCW1rZGlyICR7R09CSU59CisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NDfSIKKwlleHBvcnQgQ1hYX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NYWH0iCisKIAljZCBzcmMKLQkuL21ha2UuYmFzaCAtLWhvc3Qtb25seQotCWNwICR7Qn0vcGtnL3Rvb2wvJHtCVUlMRF9HT1RVUExFfS9nb19ib290c3RyYXAgJHtCfQotCXJtIC1yZiAke0J9L3BrZy8ke1RBUkdFVF9HT1RVUExFfQotCS4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkKKwkuL21ha2UuYmFzaCAtLXRhcmdldC1vbmx5IC0tbm8tYmFubmVyIHN0ZAogCWlmIFsgLW4gIiR7R09fRFlOTElOS30iIF07IHRoZW4KLQkJY3AgJHtCfS9nb19ib290c3RyYXAgJHtCfS9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9Ci0JCUdPX0ZMQUdTPSItYnVpbGRtb2RlPXNoYXJlZCIgR09fTERGTEFHUz0iLWV4dGxkZmxhZ3MgXCIke0xERkxBR1N9XCIiIC4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkKKwkJZXhwb3J0IEdPVE9PTERJUj0iJHtCfS9wa2cvdG9vbC9uYXRpdmVfbmF0aXZlIgorCQlDQz0iJENDX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9IiBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iIEdPT1M9IiR7VEFSR0VUX0dPT1N9IiBHT1JPT1Q9JHtCfSBcCisJCQkkR09UT09MRElSL2dvX2Jvb3RzdHJhcCBpbnN0YWxsIC1saW5rc2hhcmVkIC1idWlsZG1vZGU9c2hhcmVkICR7R09fU0hMSUJfTERGTEFHU30gc3RkCiAJZmkKIAljZCAke0J9CiB9Citkb19jb21waWxlW2RpcnNdID0rICIke0dPVE1QRElSfSAke0J9L2JpbiAke0J9L3BrZyIKK2RvX2NvbXBpbGVbY2xlYW5kaXJzXSArPSAiJHtHT1RNUERJUn0gJHtCfS9iaW4gJHtCfS9wa2ciCiAKIGRvX2luc3RhbGwoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3NyYwpAQCAtNTQsMjAgKzU2LDEwIEBACiAJZmluZCBzcmMgLW1pbmRlcHRoIDEgLW1heGRlcHRoIDEgLXR5cGUgZCB8IHdoaWxlIHJlYWQgc3JjZGlyOyBkbwogCQljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAkc3JjZGlyICR7RH0ke2xpYmRpcn0vZ28vc3JjLwogCWRvbmUKKwlmaW5kICR7RH0ke2xpYmRpcn0vZ28vc3JjIC1kZXB0aCAtdHlwZSBkIC1uYW1lIHRlc3RkYXRhIC1leGVjIHJtIC1yZiB7fSBcOwogCXJtIC1mICR7RH0ke2xpYmRpcn0vZ28vc3JjL2NtZC9kaXN0L2Rpc3QKIH0KIAotIyBSZW1vdmUgdGVzdCBiaW5hcmllcyB0aGF0IGNhbm5vdCBiZSByZWxvY2F0ZWQKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9zcmMvcnVudGltZS9wcHJvZi90ZXN0ZGF0YQotfQotCi0jIFRoZXNlIHRlc3RkYXRhIGRpcmVjdG9yaWVzIGFyZW4ndCBuZWVkZWQgZm9yIGJ1aWxkcyBhbmQgY29udGFpbiBiaW5hcmllcwotIyB0aGF0IGNhbiBjYXVzZSBlcnJvcnMgaW4gc3lzcm9vdF9zdHJpcCgpLCBzbyBqdXN0IHJlbW92ZSB0aGVtLgotc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kKCkgewotCWZpbmQgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L2dvL3NyYyAtZGVwdGggLXR5cGUgZCAtbmFtZSAndGVzdGRhdGEnIC1leGVjIHJtIC1yZiB7fSBcOwotfQotCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgogRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyoke1NPTElCU0RFVn0iCiBGSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJ9L2dvL3NyYyAke2xpYmRpcn0vZ28vcGtnL2luY2x1ZGUgXApAQCAtNzgsOCArNzAsNiBAQAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyouc2hsaWJuYW1lIFwKICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyovKi8qLyouc2hsaWJuYW1lIFwKICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyovKi8qLyovKi5zaGxpYm5hbWUgXAotIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX0gXAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLmEgXAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyouYSBcCiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLmEgXApAQCAtODgsMTEgKzc4LDE1IEBACiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyovKi8qLmEgXAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyovKi8qLmEgXAogIgotIyBUaGUgdGVzdGRhdGEgZGlyZWN0b3JpZXMgaW4gdGhlIHNvdXJjZSB0cmVlIGluY2x1ZGUgc29tZSBiaW5hcmllcyBmb3IgdmFyaW91cwotIyBhcmNoaXRlY3R1cmVzLCBzY3JpcHRzLCBhbmQgLmEgZmlsZXMKLUlOU0FORV9TS0lQXyR7UE59LWRldiA9ICJzdGF0aWNkZXYgbGRmbGFncyBmaWxlLXJkZXBzIGFyY2giCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfSIKKworIyBHbyBzb3VyY2VzIGluY2x1ZGUgc29tZSBzY3JpcHRzIGFuZCBwcmUtYnVpbHQgYmluYXJpZXMgZm9yCisjIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMuICBUaGUgc3RhdGljIC5hIGZpbGVzIGZvciBkeW5hbWljYWxseS1saW5rZWQKKyMgcnVudGltZSBhcmUgYWxzbyByZXF1aXJlZCBpbiAtZGV2LgorSU5TQU5FX1NLSVBfJHtQTn0tZGV2ID0gInN0YXRpY2RldiBmaWxlLXJkZXBzIGFyY2giCiAKIElOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgogSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUID0gIjEiCitJTkhJQklUX1NZU1JPT1RfU1RSSVAgPSAiMSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYjY4YjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xMC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCityZXF1aXJlIGdvLXJ1bnRpbWUuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuOS5iYgppbmRleCA0M2I2OGI0Li5kNTI3OWVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjkuYmIKQEAgLTEsMiArMSwyMyBAQAogcmVxdWlyZSBnby0ke1BWfS5pbmMKIHJlcXVpcmUgZ28tcnVudGltZS5pbmMKKworZXhwb3J0IEdPX1RBUkdFVF9JTlNUQUxMID0gInN0ZCIKK2V4cG9ydCBDQ19GT1JfVEFSR0VUID0gIiR7Q0N9IgorZXhwb3J0IENYWF9GT1JfVEFSR0VUID0gIiR7Q1hYfSIKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgR09CSU49IiR7Qn0vYmluIgorCWV4cG9ydCBUTVBESVI9IiRHT1RNUERJUiIKKwlleHBvcnQgQ0M9JEJVSUxEX0NDCisKKwljZCBzcmMKKwlDR09fQ0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iIENHT19MREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IiAuL21ha2UuYmFzaCAtLWhvc3Qtb25seQorCWNwICR7Qn0vcGtnL3Rvb2wvJHtCVUlMRF9HT1RVUExFfS9nb19ib290c3RyYXAgJHtCfQorCXJtIC1yZiAke0J9L3BrZy8ke1RBUkdFVF9HT1RVUExFfQorCS4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkKKwlpZiBbIC1uICIke0dPX0RZTkxJTkt9IiBdOyB0aGVuCisJCWNwICR7Qn0vZ29fYm9vdHN0cmFwICR7Qn0vcGtnL3Rvb2wvJHtCVUlMRF9HT1RVUExFfQorCQlHT19GTEFHUz0iLWJ1aWxkbW9kZT1zaGFyZWQiIEdPX0xERkxBR1M9Ii1leHRsZGZsYWdzIFwiJHtMREZMQUdTfVwiIiAuL21ha2UuYmFzaCAtLXRhcmdldC1vbmx5CisJZmkKKwljZCAke0J9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMKaW5kZXggY2FjNWQ3OC4uMjlhMTM0NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby10YXJnZXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYwpAQCAtMSw0ICsxLDMgQEAKLWluaGVyaXQgZ29hcmNoCiBERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvIGdvLW5hdGl2ZSIKIERFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIGdvLW5hdGl2ZSIKIApAQCAtOCw0MSArNywzNCBAQAogZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgogZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKIGV4cG9ydCBHTzM4NiA9ICIke1RBUkdFVF9HTzM4Nn0iCitleHBvcnQgR09NSVBTID0gIiR7VEFSR0VUX0dPTUlQU30iCiBleHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCiBleHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKLWV4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgotZXhwb3J0IENDX0ZPUl9UQVJHRVQgPSAiJHtDQ30iCi1leHBvcnQgQ1hYX0ZPUl9UQVJHRVQgPSAiJHtDWFh9IgotZXhwb3J0IEdPX1RBUkdFVF9JTlNUQUxMID0gImNtZCIKLWV4cG9ydCBHT19GTEFHUyA9ICItYSIKIEdPX0xERkxBR1MgPSAiIgogR09fTERGTEFHU19jbGFzcy1uYXRpdmVzZGsgPSAiLWxpbmttb2RlIGV4dGVybmFsIgogZXhwb3J0IEdPX0xERkxBR1MKIAotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0xERkxBR1MgPSAiIgorQ0NfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgogCiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCiBkb19jb21waWxlKCkgewotCWV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCi0JZXhwb3J0IENDPSIke0BkLmdldFZhcignQlVJTERfQ0MnKS5zdHJpcCgpfSIKLQlybSAtcmYgJHtHT0JJTn0gJHtCfS9wa2cKLQlta2RpciAke0dPQklOfQotCi0JZXhwb3J0IFRNUERJUj0ke1dPUktESVJ9L2J1aWxkLXRtcAotCW1rZGlyIC1wICR7V09SS0RJUn0vYnVpbGQtdG1wCisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NDfSIKKwlleHBvcnQgQ1hYX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NYWH0iCiAKIAljZCBzcmMKLQkuL21ha2UuYmFzaAorCS4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkgLS1uby1iYW5uZXIKIAljZCAke0J9CiB9Citkb19jb21waWxlW2RpcnNdID0rICIke0dPVE1QRElSfSAke0J9L2JpbiAke0J9L3BrZyIKK2RvX2NvbXBpbGVbY2xlYW5kaXJzXSArPSAiJHtHT1RNUERJUn0gJHtCfS9iaW4gJHtCfS9wa2ciCiAKIGRvX2luc3RhbGwoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3BrZy90b29sCiAJY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtCfS9wa2cvdG9vbC8ke1RBUkdFVF9HT1RVUExFfSAke0R9JHtsaWJkaXJ9L2dvL3BrZy90b29sLwogCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMKIAljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke1N9L3NyYy9jbWQgJHtEfSR7bGliZGlyfS9nby9zcmMvCisJZmluZCAke0R9JHtsaWJkaXJ9L2dvL3NyYyAtZGVwdGggLXR5cGUgZCAtbmFtZSB0ZXN0ZGF0YSAtZXhlYyBybSAtcmYge30gXDsKIAlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vYmluCiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CiAJZm9yIGYgaW4gJHtCfS8ke0dPX0JVSUxEX0JJTkRJUn0vKjsgZG8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjdlMmNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjEwLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby0ke1BWfS5pbmMKK3JlcXVpcmUgZ28tdGFyZ2V0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuOS5iYgppbmRleCBjNjdlMmNiLi5lYzVhMzE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuOS5iYgpAQCAtMSwyICsxLDE3IEBACiByZXF1aXJlIGdvLSR7UFZ9LmluYwogcmVxdWlyZSBnby10YXJnZXQuaW5jCisKK2V4cG9ydCBHT19UQVJHRVRfSU5TVEFMTCA9ICJjbWQiCitleHBvcnQgR09fRkxBR1MgPSAiLWEiCitleHBvcnQgQ0NfRk9SX1RBUkdFVCA9ICIke0NDfSIKK2V4cG9ydCBDWFhfRk9SX1RBUkdFVCA9ICIke0NYWH0iCisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlleHBvcnQgVE1QRElSPSIkR09UTVBESVIiCisJZXhwb3J0IENDPSRCVUlMRF9DQworCisJY2Qgc3JjCisJLi9tYWtlLmJhc2gKKwljZCAke0J9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZGMzMmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9oZWxwMm1hbi9oZWxwMm1hbi1uYXRpdmVfMS40Ny40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm9ncmFtIGZvciBjcmVhdGluZyBzaW1wbGUgbWFuIHBhZ2VzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLURFUEVORFMgPSAiYXV0b2NvbmYtbmF0aXZlIGF1dG9tYWtlLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTQ0YWNhNDk2YTdkODlkZTNlNWQ5OWU1NmEyZjAzZDMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDRlY2Y2OTdkMTNmMTRkZDFhNzhjNTk5NWYwNjQ1OWJmZjcwNmZkMWNlNTkzZDFjMDJkODE2NjdjMDIwNzc1MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbmF0aXZlCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbmxzIgotCi0jIFdlIGRvbid0IHdhbnQgdG8gcmVjb25maWd1cmUgdGhpbmdzIGFzIGl0IHdvdWxkIHJlcXVpcmUgJ3BlcmxuYXRpdmUnIHRvIGJlCi0jIHVzZWQuCi1kb19jb25maWd1cmUoKSB7Ci0Jb2VfcnVuY29uZgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBwZXJsCi0Jc2VkIC1pIC1lICIxczojIS4qOiMhIC91c3IvYmluL2VudiBwZXJsOiIgJHtEfSR7YmluZGlyfS9oZWxwMm1hbgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9oZWxwMm1hbi9oZWxwMm1hbi1uYXRpdmVfMS40Ny41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9oZWxwMm1hbi9oZWxwMm1hbi1uYXRpdmVfMS40Ny41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZDZkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjUuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJQcm9ncmFtIGZvciBjcmVhdGluZyBzaW1wbGUgbWFuIHBhZ2VzIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK0RFUEVORFMgPSAiYXV0b2NvbmYtbmF0aXZlIGF1dG9tYWtlLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWM4ODYwNjNjOWUwYWI0NjM5MDZkZTgwNDU5NmFhMmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2NhNjBiMjUxOWZkYmU5N2Y0NjNmZTJkZjY2YTYxODhkMThiNTE0YmZkNDQxMjdkOTg1ZjAyMzRlZTI0NjFiMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbmF0aXZlCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbmxzIgorCisjIFdlIGRvbid0IHdhbnQgdG8gcmVjb25maWd1cmUgdGhpbmdzIGFzIGl0IHdvdWxkIHJlcXVpcmUgJ3BlcmxuYXRpdmUnIHRvIGJlCisjIHVzZWQuCitkb19jb25maWd1cmUoKSB7CisJb2VfcnVuY29uZgorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBwZXJsCisJc2VkIC1pIC1lICIxczojIS4qOiMhIC91c3IvYmluL2VudiBwZXJsOiIgJHtEfSR7YmluZGlyfS9oZWxwMm1hbgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvMDAwMS1pMmMtdG9vbHMtZWVwcm9nLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmN5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvMDAwMS1pMmMtdG9vbHMtZWVwcm9nLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmN5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMWE1MzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy8wMDAxLWkyYy10b29scy1lZXByb2ctTW9kdWxlLm1rLUFkZC1taXNzaW5nLWRlcGVuZGVuY3kucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAwMTY3NGZlZmUzYmQyNGZkOTM0MTJmYmIzZWI0ZTg1ZmU3MGM4MGFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMTggRGVjIDIwMTcgMTY6MDE6MzkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gaTJjLXRvb2xzOiBlZXByb2cvTW9kdWxlLm1rOiBBZGQgbWlzc2luZyBkZXBlbmRlbmN5CisKK0Fic2VuY2Ugb2YgdGhpcyBkZXBlbmRlbmN5IGNhdXNlZCBwYXJhbGxlbCBidWlsZCB0byBydW4gaW50byBhIHJhY2UKK2FuZCBicmVhay4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAoraHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2kyYy10b29scy9pMmMtdG9vbHMuZ2l0L2NvbW1pdC8/aWQ9Zjg3Yzk3MzE3MDEyYTNiOTZiNjcyMzc5MjU4OTNiOGZmZDVmNGY1MAorCitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIGVlcHJvZy9Nb2R1bGUubWsgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9lZXByb2cvTW9kdWxlLm1rIGIvZWVwcm9nL01vZHVsZS5taworaW5kZXggOWQzNjg2OS4uZDIxNTg1NSAxMDA2NDQKKy0tLSBhL2VlcHJvZy9Nb2R1bGUubWsKKysrKyBiL2VlcHJvZy9Nb2R1bGUubWsKK0BAIC0yMCw3ICsyMCw3IEBAIEVFUFJPR19UQVJHRVRTCTo9IGVlcHJvZworICMgUHJvZ3JhbXMKKyAjCisgCistJChFRVBST0dfRElSKS9lZXByb2c6ICQoRUVQUk9HX0RJUikvZWVwcm9nLm8gJChFRVBST0dfRElSKS8yNGNYWC5vCisrJChFRVBST0dfRElSKS9lZXByb2c6ICQoRUVQUk9HX0RJUikvZWVwcm9nLm8gJChFRVBST0dfRElSKS8yNGNYWC5vICQoTElCX0RFUFMpCisgCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4gJChFRVBST0dfTERGTEFHUykKKyAKKyAjCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2ZpbGVzLzAwMDEtbGliLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy8wMDAxLWxpYi1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNmI0MzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy8wMDAxLWxpYi1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gYTZhNTk2OTMwNjZmZDhkYTgxZjcxMDc0NzlkZjNlMzJhMTI5MjQ3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KK0RhdGU6IFdlZCwgNiBEZWMgMjAxNyAwOTo1NTowNCArMDEwMAorU3ViamVjdDogW1BBVENIXSBsaWIvTW9kdWxlLm1rOiBBZGQgbWlzc2luZyBkZXBlbmRlbmNpZXMKKworVGhlIGxpYiBzeW1saW5rcyBsYWNrZWQgYSBkZXBlbmRlbmN5IHRvIHRoZSBhY3R1YWwgbGlicmFyeSBmaWxlLCBzbworcGFyYWxsZWwgYnVpbGRzIGNvdWxkIHJ1biBpbnRvIGEgcmFjZSBhbmQgYnJlYWsuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBsaWIvTW9kdWxlLm1rIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9Nb2R1bGUubWsgYi9saWIvTW9kdWxlLm1rCitpbmRleCA0MzJhMDUxLi5mZDJjOGM0IDEwMDY0NAorLS0tIGEvbGliL01vZHVsZS5taworKysrIGIvbGliL01vZHVsZS5taworQEAgLTQyLDExICs0MiwxMSBAQCBlbmRpZgorICQoTElCX0RJUikvJChMSUJfU0hMSUJOQU1FKTogJChMSUJfRElSKS9zbWJ1cy5vCisgCSQoQ0MpIC1zaGFyZWQgJChMREZMQUdTKSAtV2wsLS12ZXJzaW9uLXNjcmlwdD0kKExJQl9ESVIpL2xpYmkyYy5tYXAgLVdsLC1zb25hbWUsJChMSUJfU0hTT05BTUUpIC1vICRAICReIC1sYworIAorLSQoTElCX0RJUikvJChMSUJfU0hTT05BTUUpOgorKyQoTElCX0RJUikvJChMSUJfU0hTT05BTUUpOiAkKExJQl9ESVIpLyQoTElCX1NITElCTkFNRSkKKyAJJChSTSkgJEAKKyAJJChMTikgJChMSUJfU0hMSUJOQU1FKSAkQAorIAorLSQoTElCX0RJUikvJChMSUJfU0hCQVNFTkFNRSk6CisrJChMSUJfRElSKS8kKExJQl9TSEJBU0VOQU1FKTogJChMSUJfRElSKS8kKExJQl9TSExJQk5BTUUpCisgCSQoUk0pICRACisgCSQoTE4pICQoTElCX1NITElCTkFNRSkgJEAKKyAKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvMDAwMS10b29scy1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvMDAwMS10b29scy1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzY2YyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy8wMDAxLXRvb2xzLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMucGF0Y2gKQEAgLTAsMCArMSw2NiBAQAorRnJvbSAwOGIwZDY3YmE3ZWNlYjg2MmNiMTdmNTJlYjE5MTFlOTU3OTcyNmVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorRGF0ZTogVGh1LCAxNCBEZWMgMjAxNyAwODo1MjoyNiArMDEwMAorU3ViamVjdDogW1BBVENIXSB0b29scy9Nb2R1bGUubWs6IEFkZCBtaXNzaW5nIGRlcGVuZGVuY2llcworCitCZXR0ZXIgYnVpbGQgdGhlIGxpYnJhcnkgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0b29scyB3aGljaCBsaW5rIGFnYWluc3QKK2l0LCBvdGhlcndpc2UgcGFyYWxsZWwgYnVpbGRzIGNvdWxkIHJ1biBpbnRvIGEgcmFjZSBhbmQgYnJlYWsuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorVGVzdGVkLWJ5OiBBbmdlbG8gQ29tcGFnbnVjY2kgPGFuZ2Vsb0BhbWFydWxhc29sdXRpb25zLmNvbT4KK0Fja2VkLWJ5OiBBbmdlbG8gQ29tcGFnbnVjY2kgPGFuZ2Vsb0BhbWFydWxhc29sdXRpb25zLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgbGliL01vZHVsZS5tayAgIHwgIDcgKysrKysrKworIHRvb2xzL01vZHVsZS5tayB8IDEwICsrKysrLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK0luZGV4OiBpMmMtdG9vbHMtNC4wL2xpYi9Nb2R1bGUubWsKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpMmMtdG9vbHMtNC4wLm9yaWcvbGliL01vZHVsZS5taworKysrIGkyYy10b29scy00LjAvbGliL01vZHVsZS5taworQEAgLTM1LDYgKzM1LDEzIEBAIExJQl9UQVJHRVRTCSs9ICQoTElCX1NUTElCTkFNRSkKKyBMSUJfT0JKRUNUUwkrPSBzbWJ1cy5hbworIGVuZGlmCisgCisrIyBMaWJyYXJ5IGZpbGUgdG8gbGluayBhZ2FpbnN0IChzdGF0aWMgb3IgZHluYW1pYykKKytpZmVxICgkKFVTRV9TVEFUSUNfTElCKSwxKQorK0xJQl9ERVBTCTo9ICQoTElCX0RJUikvJChMSUJfU1RMSUJOQU1FKQorK2Vsc2UKKytMSUJfREVQUwk6PSAkKExJQl9ESVIpLyQoTElCX1NIQkFTRU5BTUUpCisrZW5kaWYKKysKKyAjCisgIyBMaWJyYXJpZXMKKyAjCitJbmRleDogaTJjLXRvb2xzLTQuMC90b29scy9Nb2R1bGUubWsKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpMmMtdG9vbHMtNC4wLm9yaWcvdG9vbHMvTW9kdWxlLm1rCisrKysgaTJjLXRvb2xzLTQuMC90b29scy9Nb2R1bGUubWsKK0BAIC0yNCwxOSArMjQsMTkgQEAgVE9PTFNfVEFSR0VUUwk6PSBpMmNkZXRlY3QgaTJjZHVtcCBpMmNzZQorICMgUHJvZ3JhbXMKKyAjCisgCistJChUT09MU19ESVIpL2kyY2RldGVjdDogJChUT09MU19ESVIpL2kyY2RldGVjdC5vICQoVE9PTFNfRElSKS9pMmNidXNzZXMubworKyQoVE9PTFNfRElSKS9pMmNkZXRlY3Q6ICQoVE9PTFNfRElSKS9pMmNkZXRlY3QubyAkKFRPT0xTX0RJUikvaTJjYnVzc2VzLm8gJChMSUJfREVQUykKKyAJJChDQykgJChMREZMQUdTKSAtbyAkQCAkXiAkKFRPT0xTX0xERkxBR1MpCisgCistJChUT09MU19ESVIpL2kyY2R1bXA6ICQoVE9PTFNfRElSKS9pMmNkdW1wLm8gJChUT09MU19ESVIpL2kyY2J1c3Nlcy5vICQoVE9PTFNfRElSKS91dGlsLm8KKyskKFRPT0xTX0RJUikvaTJjZHVtcDogJChUT09MU19ESVIpL2kyY2R1bXAubyAkKFRPT0xTX0RJUikvaTJjYnVzc2VzLm8gJChUT09MU19ESVIpL3V0aWwubyAkKExJQl9ERVBTKQorIAkkKENDKSAkKExERkxBR1MpIC1vICRAICReICQoVE9PTFNfTERGTEFHUykKKyAKKy0kKFRPT0xTX0RJUikvaTJjc2V0OiAkKFRPT0xTX0RJUikvaTJjc2V0Lm8gJChUT09MU19ESVIpL2kyY2J1c3Nlcy5vICQoVE9PTFNfRElSKS91dGlsLm8KKyskKFRPT0xTX0RJUikvaTJjc2V0OiAkKFRPT0xTX0RJUikvaTJjc2V0Lm8gJChUT09MU19ESVIpL2kyY2J1c3Nlcy5vICQoVE9PTFNfRElSKS91dGlsLm8gJChMSUJfREVQUykKKyAJJChDQykgJChMREZMQUdTKSAtbyAkQCAkXiAkKFRPT0xTX0xERkxBR1MpCisgCistJChUT09MU19ESVIpL2kyY2dldDogJChUT09MU19ESVIpL2kyY2dldC5vICQoVE9PTFNfRElSKS9pMmNidXNzZXMubyAkKFRPT0xTX0RJUikvdXRpbC5vCisrJChUT09MU19ESVIpL2kyY2dldDogJChUT09MU19ESVIpL2kyY2dldC5vICQoVE9PTFNfRElSKS9pMmNidXNzZXMubyAkKFRPT0xTX0RJUikvdXRpbC5vICQoTElCX0RFUFMpCisgCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4gJChUT09MU19MREZMQUdTKQorIAorLSQoVE9PTFNfRElSKS9pMmN0cmFuc2ZlcjogJChUT09MU19ESVIpL2kyY3RyYW5zZmVyLm8gJChUT09MU19ESVIpL2kyY2J1c3Nlcy5vICQoVE9PTFNfRElSKS91dGlsLm8KKyskKFRPT0xTX0RJUikvaTJjdHJhbnNmZXI6ICQoVE9PTFNfRElSKS9pMmN0cmFuc2Zlci5vICQoVE9PTFNfRElSKS9pMmNidXNzZXMubyAkKFRPT0xTX0RJUikvdXRpbC5vICQoTElCX0RFUFMpCisgCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4gJChUT09MU19MREZMQUdTKQorIAorICMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2ZpbGVzL01vZHVsZS5tayBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2ZpbGVzL01vZHVsZS5tawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNhZjcyZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy9Nb2R1bGUubWsKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0jIEVFUFJPTUVSCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLQotRUVQUk9NRVJfRElSCTo9IGVlcHJvbWVyCi0KLUVFUFJPTUVSX0NGTEFHUwk6PSAtV3N0cmljdC1wcm90b3R5cGVzIC1Xc2hhZG93IC1XcG9pbnRlci1hcml0aCAtV2Nhc3QtcXVhbCBcCi0JCSAgIC1XY2FzdC1hbGlnbiAtV3dyaXRlLXN0cmluZ3MgLVduZXN0ZWQtZXh0ZXJucyAtV2lubGluZSBcCi0JCSAgIC1XIC1XdW5kZWYgLVdtaXNzaW5nLXByb3RvdHlwZXMgLUlpbmNsdWRlCi0KLUVFUFJPTUVSX1RBUkdFVFMJOj0gZWVwcm9tZXIgZWVwcm9tIGVlcHJvZwotCi0jCi0jIFByb2dyYW1zCi0jCi0KLSQoRUVQUk9NRVJfRElSKS9lZXByb21lcjogJChFRVBST01FUl9ESVIpL2VlcHJvbWVyLm8KLQkkKENDKSAkKExERkxBR1MpIC1vICRAICReCi0KLSQoRUVQUk9NRVJfRElSKS9lZXByb206ICQoRUVQUk9NRVJfRElSKS9lZXByb20ubwotCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4KLQotJChFRVBST01FUl9ESVIpL2VlcHJvZzogJChFRVBST01FUl9ESVIpL2VlcHJvZy5vICQoRUVQUk9NRVJfRElSKS8yNGNYWC5vIAotCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4KLQotIwotIyBPYmplY3RzCi0jCi0KLSQoRUVQUk9NRVJfRElSKS9lZXByb21lci5vOiAkKEVFUFJPTUVSX0RJUikvZWVwcm9tZXIuYwotCSQoQ0MpICQoQ0ZMQUdTKSAkKEVFUFJPTUVSX0NGTEFHUykgLWMgJDwgLW8gJEAKLQotJChFRVBST01FUl9ESVIpL2VlcHJvbS5vOiAkKEVFUFJPTUVSX0RJUikvZWVwcm9tLmMKLQkkKENDKSAkKENGTEFHUykgJChFRVBST01FUl9DRkxBR1MpIC1jICQ8IC1vICRACi0KLSQoRUVQUk9NRVJfRElSKS9lZXByb2cubzogJChFRVBST01FUl9ESVIpL2VlcHJvZy5jCi0JJChDQykgJChDRkxBR1MpICQoRUVQUk9NRVJfQ0ZMQUdTKSAtYyAkPCAtbyAkQAotCi0kKEVFUFJPTUVSX0RJUikvMjRjWFgubzogJChFRVBST01FUl9ESVIpLzI0Y1hYLmMKLQkkKENDKSAkKENGTEFHUykgJChFRVBST01FUl9DRkxBR1MpIC1jICQ8IC1vICRACi0KLSMKLSMgQ29tbWFuZHMKLSMKLQotYWxsLWVlcHJvbWVyOiAkKGFkZHByZWZpeCAkKEVFUFJPTUVSX0RJUikvLCQoRUVQUk9NRVJfVEFSR0VUUykpCi0KLXN0cmlwLWVlcHJvbWVyOiAkKGFkZHByZWZpeCAkKEVFUFJPTUVSX0RJUikvLCQoRUVQUk9NRVJfVEFSR0VUUykpCi0Jc3RyaXAgJChhZGRwcmVmaXggJChFRVBST01FUl9ESVIpLywkKEVFUFJPTUVSX1RBUkdFVFMpKQotCi1jbGVhbi1lZXByb21lcjoKLQkkKFJNKSAkKGFkZHByZWZpeCAkKEVFUFJPTUVSX0RJUikvLCoubyAkKEVFUFJPTUVSX1RBUkdFVFMpKQotCi1pbnN0YWxsLWVlcHJvbWVyOiAkKGFkZHByZWZpeCAkKEVFUFJPTUVSX0RJUikvLCQoRUVQUk9NRVJfVEFSR0VUUykpCi0JJChJTlNUQUxMX0RJUikgJChERVNURElSKSQoc2JpbmRpcikgJChERVNURElSKSQobWFuOGRpcikKLQlmb3IgcHJvZ3JhbSBpbiAkKEVFUFJPTUVSX1RBUkdFVFMpIDsgZG8gXAotCSQoSU5TVEFMTF9QUk9HUkFNKSAkKEVFUFJPTUVSX0RJUikvJCRwcm9ncmFtICQoREVTVERJUikkKHNiaW5kaXIpIDsgZG9uZQotCi11bmluc3RhbGwtZWVwcm9tZXI6Ci0JZm9yIHByb2dyYW0gaW4gJChFRVBST01FUl9UQVJHRVRTKSA7IGRvIFwKLQkkKFJNKSAkKERFU1RESVIpJChzYmluZGlyKS8kJHByb2dyYW0gOyBcCi0JJChSTSkgJChERVNURElSKSQobWFuOGRpcikvJCRwcm9ncmFtLjggOyBkb25lCi0KLWFsbDogYWxsLWVlcHJvbWVyCi0KLXN0cmlwOiBzdHJpcC1lZXByb21lcgotCi1jbGVhbjogY2xlYW4tZWVwcm9tZXIKLQotaW5zdGFsbDogaW5zdGFsbC1lZXByb21lcgotCi11bmluc3RhbGw6IHVuaW5zdGFsbC1lZXByb21lcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvcmVtb3ZlLWkyYy1kZXYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy9yZW1vdmUtaTJjLWRldi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDM2ODhkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvcmVtb3ZlLWkyYy1kZXYucGF0Y2gKQEAgLTAsMCArMSw5OCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSAyMjZiYzAzYWNjYTQ0Y2Y0YjMwMDU5NzMwODA2NGM0NDY3NmI2ZjRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorRGF0ZTogVHVlLCAyMyBKYW4gMjAxOCAxNDoyNDoxNiArMDEwMAorU3ViamVjdDogRGVsZXRlIGR1cGxpY2F0ZSBpMmMtZGV2LmgKKworVGhlIDxsaW51eC9pMmMtZGV2Lmg+IGhlYWRlciBmaWxlIGlzIHByb3ZpZGVkIGJ5IHRoZSBrZXJuZWwsIHNvIGRyb3AKK291ciBvd24gY29weSBvZiB0aGlzIGZpbGUuCisKK1NpZ25lZC1vZmYtYnk6IEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KK0Fja2VkLWJ5OiBXb2xmcmFtIFNhbmcgPHdzYUB0aGUtZHJlYW1zLmRlPgorLS0tCisgaW5jbHVkZS9saW51eC9pMmMtZGV2LmggfCA3MiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcyIGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L2kyYy1kZXYuaAorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pMmMtZGV2LmggYi9pbmNsdWRlL2xpbnV4L2kyYy1kZXYuaAorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCA4MzlkMjVhLi4wMDAwMDAwCistLS0gYS9pbmNsdWRlL2xpbnV4L2kyYy1kZXYuaAorKysrIC9kZXYvbnVsbAorQEAgLTEsNzIgKzAsMCBAQAorLS8qCistICAgIGkyYy1kZXYuaCAtIGkyYy1idXMgZHJpdmVyLCBjaGFyIGRldmljZSBpbnRlcmZhY2UKKy0KKy0gICAgQ29weXJpZ2h0IChDKSAxOTk1LTk3IFNpbW9uIEcuIFZvZ2wKKy0gICAgQ29weXJpZ2h0IChDKSAxOTk4LTk5IEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4KKy0KKy0gICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLAorLSAgICBNQSAwMjExMC0xMzAxIFVTQS4KKy0qLworLQorLSNpZm5kZWYgX0xJTlVYX0kyQ19ERVZfSAorLSNkZWZpbmUgX0xJTlVYX0kyQ19ERVZfSAorLQorLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorLQorLQorLS8qIC9kZXYvaTJjLVggaW9jdGwgY29tbWFuZHMuICBUaGUgaW9jdGwncyBwYXJhbWV0ZXIgaXMgYWx3YXlzIGFuCistICogdW5zaWduZWQgbG9uZywgZXhjZXB0IGZvcjoKKy0gKgktIEkyQ19GVU5DUywgdGFrZXMgcG9pbnRlciB0byBhbiB1bnNpZ25lZCBsb25nCistICoJLSBJMkNfUkRXUiwgdGFrZXMgcG9pbnRlciB0byBzdHJ1Y3QgaTJjX3Jkd3JfaW9jdGxfZGF0YQorLSAqCS0gSTJDX1NNQlVTLCB0YWtlcyBwb2ludGVyIHRvIHN0cnVjdCBpMmNfc21idXNfaW9jdGxfZGF0YQorLSAqLworLSNkZWZpbmUgSTJDX1JFVFJJRVMJMHgwNzAxCS8qIG51bWJlciBvZiB0aW1lcyBhIGRldmljZSBhZGRyZXNzIHNob3VsZAorLQkJCQkgICBiZSBwb2xsZWQgd2hlbiBub3QgYWNrbm93bGVkZ2luZyAqLworLSNkZWZpbmUgSTJDX1RJTUVPVVQJMHgwNzAyCS8qIHNldCB0aW1lb3V0IGluIHVuaXRzIG9mIDEwIG1zICovCistCistLyogTk9URTogU2xhdmUgYWRkcmVzcyBpcyA3IG9yIDEwIGJpdHMsIGJ1dCAxMC1iaXQgYWRkcmVzc2VzCistICogYXJlIE5PVCBzdXBwb3J0ZWQhIChkdWUgdG8gY29kZSBicm9rZW5uZXNzKQorLSAqLworLSNkZWZpbmUgSTJDX1NMQVZFCTB4MDcwMwkvKiBVc2UgdGhpcyBzbGF2ZSBhZGRyZXNzICovCistI2RlZmluZSBJMkNfU0xBVkVfRk9SQ0UJMHgwNzA2CS8qIFVzZSB0aGlzIHNsYXZlIGFkZHJlc3MsIGV2ZW4gaWYgaXQKKy0JCQkJICAgaXMgYWxyZWFkeSBpbiB1c2UgYnkgYSBkcml2ZXIhICovCistI2RlZmluZSBJMkNfVEVOQklUCTB4MDcwNAkvKiAwIGZvciA3IGJpdCBhZGRycywgIT0gMCBmb3IgMTAgYml0ICovCistCistI2RlZmluZSBJMkNfRlVOQ1MJMHgwNzA1CS8qIEdldCB0aGUgYWRhcHRlciBmdW5jdGlvbmFsaXR5IG1hc2sgKi8KKy0KKy0jZGVmaW5lIEkyQ19SRFdSCTB4MDcwNwkvKiBDb21iaW5lZCBSL1cgdHJhbnNmZXIgKG9uZSBTVE9QIG9ubHkpICovCistCistI2RlZmluZSBJMkNfUEVDCQkweDA3MDgJLyogIT0gMCB0byB1c2UgUEVDIHdpdGggU01CdXMgKi8KKy0jZGVmaW5lIEkyQ19TTUJVUwkweDA3MjAJLyogU01CdXMgdHJhbnNmZXIgKi8KKy0KKy0KKy0vKiBUaGlzIGlzIHRoZSBzdHJ1Y3R1cmUgYXMgdXNlZCBpbiB0aGUgSTJDX1NNQlVTIGlvY3RsIGNhbGwgKi8KKy1zdHJ1Y3QgaTJjX3NtYnVzX2lvY3RsX2RhdGEgeworLQlfX3U4IHJlYWRfd3JpdGU7CistCV9fdTggY29tbWFuZDsKKy0JX191MzIgc2l6ZTsKKy0JdW5pb24gaTJjX3NtYnVzX2RhdGEgKmRhdGE7CistfTsKKy0KKy0vKiBUaGlzIGlzIHRoZSBzdHJ1Y3R1cmUgYXMgdXNlZCBpbiB0aGUgSTJDX1JEV1IgaW9jdGwgY2FsbCAqLworLXN0cnVjdCBpMmNfcmR3cl9pb2N0bF9kYXRhIHsKKy0Jc3RydWN0IGkyY19tc2cgKm1zZ3M7CS8qIHBvaW50ZXJzIHRvIGkyY19tc2dzICovCistCV9fdTMyIG5tc2dzOwkJCS8qIG51bWJlciBvZiBpMmNfbXNncyAqLworLX07CistCistI2RlZmluZSAgSTJDX1JEUldfSU9DVExfTUFYX01TR1MJNDIKKy0KKy0KKy0jZW5kaWYgLyogX0xJTlVYX0kyQ19ERVZfSCAqLworLS0gCitjZ2l0IHYxLjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc18zLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc18zLjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAxNzI1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfMy4xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIlNldCBvZiBpMmMgdG9vbHMgZm9yIGxpbnV4IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9pMmMud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9JMkNfVG9vbHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL01vZHVsZS5tayBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNzEwNGExMDQzZDExYTVlMmM3YjEzMTYxNGViMWI5NjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGI1ZTY5ZjJlMmE2ZTNhYTJlY2RmZTZhNWY0OTBiMTQ5YzUwNDQ2ODc3MGY1ODkyMWM4YzViOGE3ODYwYTQ0MSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBjcCAke1dPUktESVJ9L01vZHVsZS5tayAke1N9L2VlcHJvbWVyLwotICAgIHNlZCAtaSAncyMvdXNyL2xvY2FsIy91c3IjJyAke1N9L01ha2VmaWxlCi0gICAgZWNobyAiaW5jbHVkZSBlZXByb21lci9Nb2R1bGUubWsiID4+ICR7U30vTWFrZWZpbGUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9saW51eAotICAgIGluc3RhbGwgLW0gMDY0NCBpbmNsdWRlL2xpbnV4L2kyYy1kZXYuaCAke0R9JHtpbmNsdWRlZGlyfS9saW51eC9pMmMtZGV2LXVzZXIuaAotICAgIHJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpbnV4L2kyYy1kZXYuaAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbWlzYyIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtzYmluZGlyfS9pMmMtc3R1Yi1mcm9tLWR1bXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RkY21vbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZGVjb2RlLWVkaWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RlY29kZS1kaW1tcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZGVjb2RlLXZhaW8gXAotICAgICAgICAgICAgICAgICAgICAgICAiCi1SREVQRU5EU18ke1BOfS1taXNjID0gIiR7UE59IHBlcmwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvaTJjLXRvb2xzXzQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWFjNDdmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvaTJjLXRvb2xzXzQuMC5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIlNldCBvZiBpMmMgdG9vbHMgZm9yIGxpbnV4IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9pMmMud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9JMkNfVG9vbHMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvaTJjLXRvb2xzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYi1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdG9vbHMtTW9kdWxlLm1rLUFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWkyYy10b29scy1lZXByb2ctTW9kdWxlLm1rLUFkZC1taXNzaW5nLWRlcGVuZGVuY3kucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWkyYy1kZXYucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDkyYTI4OGQ3MGYzMDZkMzg5NWUzYTdlOWMxNGM5YWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWI2MGRhZjZmMDExZGUwYWNiNjFkZTU3ZGJhNjJmMjA1NGJiMzlmMTk5NjFkNjdlMGM5MTYxMGYwNzFjYTQwMyIKKworRVhUUkFfT0VNQUtFID0gImJpbmRpcj0ke2JpbmRpcn0gc2JpbmRpcj0ke3NiaW5kaXJ9IFwKKyAgICAgICAgICAgICAgICBpbmNkaXI9JHtpbmNsdWRlZGlyfSBsaWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAgICAgICAgICAgICBtYW5kaXI9JHttYW5kaXJ9IFwKKyAgICAgICAgICAgICAgICBFWFRSQT1lZXByb2ciCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1taXNjIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke3NiaW5kaXJ9L2kyYy1zdHViLWZyb20tZHVtcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZGRjbW9uIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9kZWNvZGUtZWRpZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZGVjb2RlLWRpbW1zIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9kZWNvZGUtdmFpbyBcCisgICAgICAgICAgICAgICAgICAgICAgICIKK1JERVBFTkRTXyR7UE59LW1pc2MgPSAiJHtQTn0gcGVybCBwZXJsLW1vZHVsZS1wb3NpeCBcCisgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNvbnN0YW50IHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1mY250bCBwZXJsLW1vZHVsZS1zdHJpY3QgcGVybC1tb2R1bGUtdmFycyBcCisgICAgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZjRhZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiaWNlY2MgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBhIHZlcnNpb24gb2YgdGhlIGljZWNjLWNyZWF0ZS1lbnYgc2NyaXB0IHRoYXQgaGFzIFwKLWJlZW4gbW9kaWZpZWQgaW4gb3JkZXIgdG8gbWFrZSBpdCB3b3JrIHdpdGggT0UuIgotU0VDVElPTiA9ICJiYXNlIgotIyBzb3VyY2UgZmlsZSBoYXMganVzdCBhICJHUEwiIHdvcmQsIGJ1dCB1cHN0cmVhbSBpcyBHUEx2MisuCi0jIG1vc3QgcHJvYmFibHkganVzdCBHUEwgd291bGQgYmUgYSBtaXN0YWtlCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2ljZWNjLWNyZWF0ZS1lbnY7YmVnaW5saW5lPTI7ZW5kbGluZT01O21kNT1hZTFkZjNkNmEwNThiZmRhNDBiNjYwOTRjNWY2MDY1ZiIKLQotUFIgPSAicjIiCi0KLURFUEVORFMgPSAiIgotSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKLQotaW5oZXJpdCBuYXRpdmUKLQotIyBUaGlzIGlzIG5lZWRlZCwgYmVjYXVzZSBvdGhlcndpc2UgdGhlcmUgaXMgZGVwZW5kZW5jeSBsb29wIGZyb20gcXVpbHQtbmF0aXZlCi0jIERlcGVuZGVuY3kgbG9vcCAjMSBmb3VuZDoKLSMgIFRhc2sgMTA5MDcgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC1uYXRpdmVfMC42MC5iYiwgZG9faW5zdGFsbCkgKGRlcGVuZGVudCBUYXNrcyBbJ3F1aWx0LW5hdGl2ZSwgZG9fY29tcGlsZSddKQotIyAgVGFzayAxMDkwOCAobWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0LW5hdGl2ZV8wLjYwLmJiLCBkb19wb3B1bGF0ZV9zeXNyb290KSAoZGVwZW5kZW50IFRhc2tzIFsncXVpbHQtbmF0aXZlLCBkb19pbnN0YWxsJ10pCi0jICBUYXNrIDEwOTk3IChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIsIGRvX3BhdGNoKSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX3VucGFjaycsICdxdWlsdC1uYXRpdmUsIGRvX3BvcHVsYXRlX3N5c3Jvb3QnXSkKLSMgIFRhc2sgMTEwMDEgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYiwgZG9fY29uZmlndXJlKSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX3BhdGNoJ10pCi0jICBUYXNrIDExMDAyIChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIsIGRvX2NvbXBpbGUpIChkZXBlbmRlbnQgVGFza3MgWydpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSwgZG9fY29uZmlndXJlJ10pCi0jICBUYXNrIDEwOTk4IChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIsIGRvX2luc3RhbGwpIChkZXBlbmRlbnQgVGFza3MgWydpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSwgZG9fY29tcGlsZSddKQotIyAgVGFzayAxMDk5OSAobWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi1uYXRpdmVfMC4xLmJiLCBkb19wb3B1bGF0ZV9zeXNyb290KSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX2luc3RhbGwnXSkKLSMgIFRhc2sgMTA5MTAgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC1uYXRpdmVfMC42MC5iYiwgZG9fY29uZmlndXJlKSAoZGVwZW5kZW50IFRhc2tzIFsncXVpbHQtbmF0aXZlLCBkb19wYXRjaCcsICdpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSwgZG9fcG9wdWxhdGVfc3lzcm9vdCddKQotIyAgVGFzayAxMDkxMSAobWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0LW5hdGl2ZV8wLjYwLmJiLCBkb19jb21waWxlKSAoZGVwZW5kZW50IFRhc2tzIFsncXVpbHQtbmF0aXZlLCBkb19jb25maWd1cmUnXSkKLVBBVENIVE9PTCA9ICJwYXRjaCIKLVNSQ19VUkkgPSAiZmlsZTovL2ljZWNjLWNyZWF0ZS1lbnYiCi0KLVMgPSAiJHtXT1JLRElSfSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaWNlY2MtY3JlYXRlLWVudiAke0R9LyR7YmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYKaW5kZXggN2U0ZGJjNC4uNjRiNWUyMCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52CkBAIC00LDY5ICs0LDIwOCBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDQgYnkgdGhlIEljZWNyZWFtIEF1dGhvcnMKICMgR1BMCiAKLXRhcmdldF9maWxlcz0KK3RhcmdldF9wYXRocz0KK3RhcmdldF9hbGlhc2VzPQogCi1pc19jb250YWluZWQgKCkKKyMgQWx3YXlzIHByaW50cywgb3B0aW9uYWxseSB0byBhIGxvZyBmaWxlCitwcmludF9vdXRwdXQgKCkKIHsKLSAgY2FzZSAiICR0YXJnZXRfZmlsZXMgIiBpbgotICAgICoiICQxICIqICkgcmV0dXJuIDAgOzsKLSAgICAqIj0kMSAiKiApIHJldHVybiAwOzsKLSAgICAqICkgcmV0dXJuIDEgOzsKLSAgZXNhYworICAgIGlmIHRlc3QgLW4gIiRsb2dfcGF0aCI7IHRoZW4KKyAgICAgICAgZWNobyAiJEAiIHwgdGVlIC1hICIkbG9nX3BhdGgiCisgICAgZWxzZQorICAgICAgICBlY2hvICIkQCIKKyAgICBmaQorfQorCisjIE9ubHkgcHJpbnRzIGlmIHRoZSBkZWJ1ZyBmbGFnIGlzIHNwZWNpZmllZAorcHJpbnRfZGVidWcgKCkKK3sKKyAgICBpZiB0ZXN0IC1uICIkZGVidWciOyB0aGVuCisgICAgICAgIHByaW50X291dHB1dCAiJEAiCisgICAgZmkKK30KKworaXNfZHluYW1pY19lbGYgKCkKK3sKKyAgICAjIElzIHRoZSBmaWxlIGFuIGR5bmFtaWNhbGx5IGxpbmtlZCBFTEYgZXhlY3V0YWJsZT8KKyAgICAoZmlsZSAtTCAiJDEiIHwgZ3JlcCAnRUxGJyA+IC9kZXYvbnVsbCAyPiYxKSAmJiAoISBmaWxlIC1MICIkMSIgfCBncmVwICdzdGF0aWMnID4gL2Rldi9udWxsIDI+JjEpCit9CisKK2ZpeF9ycGF0aCAoKQoreworICAgICMgUGF0Y2hlcyB0aGUgUlBBVEggZm9yIGEgZmlsZS4gV2hlbiB0aGUgcHJvZ3JhbSBpcyBleGVjdXRlZCBpbiB0aGUgY2hyb290CisgICAgIyBiZSBpY2VjY2QsIC9wcm9jIGlzIG5vdCBtb3VudGVkLiBBcyBzdWNoLCAkT1JJR0lOIGNhbid0IGJlIHJlc29sdmVkLiBUbworICAgICMgd29yayBhcm91bmQgdGhpcywgcmVwbGFjZSBhbGwgaW5zdGFuY2VzIG9mICRPUklHSU4gaW4gUlBBVEggd2l0aCB0aGUKKyAgICAjIGtub3duIGNocm9vdCBwYXRoIHRvIHRoZSBleGVjdXRhYmxlcyBkaXJlY3RvcnkKKyAgICBsb2NhbCBwYXRoPSIkMSIKKyAgICBsb2NhbCBvcmlnaW49IiQyIgorICAgIGlmICEgaXNfZHluYW1pY19lbGYgIiRwYXRoIjsgdGhlbgorICAgICAgICByZXR1cm4KKyAgICBmaQorICAgIGxvY2FsIG9sZF9ycGF0aD0iYCRQQVRDSEVMRiAtLXByaW50LXJwYXRoICIkcGF0aCJgIgorICAgIGxvY2FsIG5ld19ycGF0aD0iYGVjaG8gIiRvbGRfcnBhdGgiIHwgXAorICAgICAgICBzZWQgJ3MvLipcW1woLipcKVxdL1wxL2cnIHwgXAorICAgICAgICBzZWQgInMsXFxcJE9SSUdJTiwvJG9yaWdpbixnImAiCisKKyAgICBpZiB0ZXN0IC1uICIkbmV3X3JwYXRoIjsgdGhlbgorICAgICAgICBwcmludF9kZWJ1ZyAiQ29udmVydGluZyBSUEFUSCAnJG9sZF9ycGF0aCcgLT4gJyRuZXdfcnBhdGgnIgorICAgICAgICAkUEFUQ0hFTEYgLS1zZXQtcnBhdGggIiRuZXdfcnBhdGgiICIkcGF0aCIKKyAgICBmaQorfQorCithZGRfcGF0aCAoKQoreworICAgIGNhc2UgIiAkdGFyZ2V0X3BhdGhzICIgaW4KKyAgICAgICAgKiIgJDEgIiopCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICAgIHRhcmdldF9wYXRocz0iJHRhcmdldF9wYXRocyAkMSIKKyAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICA7OworICAgIGVzYWMKK30KKworYWRkX2FsaWFzICgpCit7CisgICAgaWYgdGVzdCAiJDEiICE9ICIkMiI7IHRoZW4KKyAgICAgICAgbG9jYWwgYWxpYXM9IiQxPSQyIgorICAgICAgICBjYXNlICIgJHRhcmdldF9hbGlhc2VzICIgaW4KKyAgICAgICAgICAgICoiICRhbGlhcyAiKikKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICBwcmludF9kZWJ1ZyAiQWRkaW5nIGFsaWFzICckMicgLT4gJyQxJyIKKyAgICAgICAgICAgICAgICB0YXJnZXRfYWxpYXNlcz0iJHRhcmdldF9hbGlhc2VzICRhbGlhcyIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgZmkKK30KKworbm9ybWFsaXplX3BhdGggKCkKK3sKKyAgICAjIE5vcm1hbGl6ZXMgdGhlIHBhdGggdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSwgcmVtb3ZpbmcgYWxsICIuIiBhbmQgIi4uIgorICAgICMgZW50cmllcy4gVXNlIHB3ZCAtTCB0byBleHBsaWNpdGx5IHByZXZlbnQgc3ltbGluayBleHBhbnNpb24KKyAgICBsb2NhbCBwYXRoPSQxCisgICAgaWYgdGVzdCAtZiAiJHBhdGgiOyB0aGVuCisgICAgICAgIHB1c2hkICQoZGlybmFtZSAkcGF0aCkgPiAvZGV2L251bGwgMj4mMQorICAgICAgICBkaXJfcGF0aD0kKHB3ZCAtTCkKKyAgICAgICAgcGF0aD0kZGlyX3BhdGgvJChiYXNlbmFtZSAkcGF0aCkKKyAgICAgICAgcG9wZCA+IC9kZXYvbnVsbCAyPiYxCisgICAgZWxpZiB0ZXN0IC1kICIkcGF0aCI7IHRoZW4KKyAgICAgICAgcHVzaGQgJHBhdGggPiAvZGV2L251bGwgMj4mMQorICAgICAgICBwYXRoPSQocHdkIC1MKQorICAgICAgICBwb3BkID4gL2Rldi9udWxsIDI+JjEKKyAgICBmaQorICAgIGVjaG8gJHBhdGgKK30KKworYWRkX2ZpbGVfY29tbW9uKCkKK3sKKyAgICBsb2NhbCBwPSIkMSIKKyAgICBsb2NhbCBwYXRoPSIkMiIKKyAgICBsb2NhbCBhbGlhcz0iJDMiCisKKyAgICBhZGRfYWxpYXMgIiRwYXRoIiAiJHAiCisgICAgaWYgdGVzdCAtbiAiJGFsaWFzIjsgdGhlbgorICAgICAgICBhZGRfYWxpYXMgIiRwYXRoIiAiJGFsaWFzIgorICAgIGZpCisKKyAgICBhZGRfcGF0aCAiJHBhdGgiIHx8IHJldHVybiAxCisgICAgcHJpbnRfZGVidWcgIkFkZGluZyBmaWxlICckcGF0aCciCisKKyAgICByZXR1cm4gMAorfQorCithZGRfZGVwcygpCit7CisgICAgbG9jYWwgcGF0aD0iJDEiCisgICAgbG9jYWwgaW50ZXJwPSIkMiIKKworICAgIGlmIHRlc3QgLW4gIiRpbnRlcnAiICYmIHRlc3QgLXggIiRpbnRlcnAiOyB0aGVuCisgICAgICAgICMgVXNlIHRoZSBkeW5hbWljIGxvYWRlcnMgLS1saXN0IGFyZ3VtZW50IHRvIGxpc3QgdGhlCisgICAgICAgICMgZGVwZW5kZW5jaWVzLiBUaGUgcHJvZ3JhbSBtYXkgaGF2ZSBhIGRpZmZlcmVudCBwcm9ncmFtCisgICAgICAgICMgaW50ZXJwcmV0ZXIgKHR5cGljYWwgd2hlbiB1c2luZyB1bmluYXRpdmUgdGFyYmFsbHMpLCB3aGljaCBpcworICAgICAgICAjIHdoeSB3ZSBjYW4ndCBqdXN0IGNhbGwgbGRkLgorICAgICAgICBkZXBzPSJgJGludGVycCAtLWxpc3QgIiRwYXRoImAiCisgICAgZWxzZQorICAgICAgICBkZXBzPSJgbGRkICIkcGF0aCJgIgorICAgIGZpCisKKyAgICBwcmludF9kZWJ1ZyAiRGVwZW5kZW5jaWVzIGFyZToiCisgICAgcHJpbnRfZGVidWcgIiRkZXBzIgorICAgIGlmIHRlc3QgLW4gIiRkZXBzIjsgdGhlbgorICAgICAgICBmb3IgbGliIGluICRkZXBzOyBkbworICAgICAgICAgICAgIyBsZGQgbm93IG91dHB1dHMgbGQgYXMgL2xpYi9sZC1saW51eC5zby54eCBvbiBjdXJyZW50IG5wdGwKKyAgICAgICAgICAgICMgYmFzZWQgZ2xpYmMgdGhpcyByZWdleHAgcGFyc2UgdGhlIG91dHB1dHMgbGlrZToKKyAgICAgICAgICAgICMgbGRkIC91c3IvYmluL2djYworICAgICAgICAgICAgIyAgICAgICAgIGxpbnV4LWdhdGUuc28uMSA9PiAgKDB4ZmZmZmUwMDApCisgICAgICAgICAgICAjICAgICAgICAgbGliYy5zby42ID0+IC9saWIvdGxzL2xpYmMuc28uNiAoMHhiN2U4MTAwMCkKKyAgICAgICAgICAgICMgICAgICAgICAvbGliL2xkLWxpbnV4LnNvLjIgKDB4YjdmZTgwMDApCisgICAgICAgICAgICAjIGNvdmVyaW5nIGJvdGggc2l0dWF0aW9ucyAoIHdpdGggPT4gYW5kIHdpdGhvdXQgKQorICAgICAgICAgICAgbGliPSJgZWNobyAiJGxpYiIgfCBzZWQgLW4gJ3MsXlteL10qXCgvW14gXSpcKS4qLFwxLHAnYCIKKworICAgICAgICAgICAgdGVzdCAtZiAiJGxpYiIgfHwgY29udGludWUKKyAgICAgICAgICAgICMgQ2hlY2sgd2hldGhlciB0aGUgc2FtZSBsaWJyYXJ5IGFsc28gZXhpc3RzIGluIHRoZSBwYXJlbnQKKyAgICAgICAgICAgICMgZGlyZWN0b3J5LCBhbmQgcHJlZmVyIHRoYXQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBpdCBpcyBhCisgICAgICAgICAgICAjIG1vcmUgZ2VuZXJpYyBvbmUuCisgICAgICAgICAgICBsb2NhbCBiYXNlbGliPWBlY2hvICIkbGliIiB8IHNlZCAncyxcKC9bXi9dKlwpLy4qXCgvW14vXSpcKSQsXDFcMiwnYAorICAgICAgICAgICAgdGVzdCAtZiAiJGJhc2VsaWIiICYmIGxpYj0kYmFzZWxpYgorICAgICAgICAgICAgYWRkX2RlcGVuZGVuY3kgIiRsaWIiICIkaW50ZXJwIgorICAgICAgICBkb25lCisgICAgZmkKK30KKworYWRkX2RlcGVuZGVuY3koKQoreworICAgIGxvY2FsIHA9YG5vcm1hbGl6ZV9wYXRoICQxYAorICAgICMgcmVhZGxpbmsgaXMgcmVxdWlyZWQgZm9yIFlvY3RvLCBzbyB3ZSBjYW4gdXNlIGl0CisgICAgbG9jYWwgcGF0aD1gcmVhZGxpbmsgLWYgIiRwImAKKyAgICBsb2NhbCBpbnRlcnA9IiQyIgorCisgICAgYWRkX2ZpbGVfY29tbW9uICIkcCIgIiRwYXRoIiB8fCByZXR1cm4KKworICAgIGlmIHRlc3QgLXggIiRwYXRoIiAmJiBpc19keW5hbWljX2VsZiAiJHBhdGgiOyB0aGVuCisgICAgICAgIGFkZF9kZXBzICIkcGF0aCIgIiRpbnRlcnAiCisgICAgZmkKIH0KIAogYWRkX2ZpbGUgKCkKIHsKLSAgbG9jYWwgbmFtZT0iJDEiCi0gIGxvY2FsIHBhdGg9IiQxIjsKLSAgaWYgdGVzdCAtbiAiJDIiOyB0aGVuCi0gICAgbmFtZT0iJDIiCi0gIGZpCi0gIHRlc3QgLXogIiRuYW1lIiAmJiByZXR1cm4KLSAgIyBscyAtSCBpc24ndCByZWFsbHkgdGhlIHNhbWUgYXMgcmVhZGxpbmssIGJ1dAotICAjIHJlYWRsaW5rIGlzIG5vdCBwb3J0YWJsZSBlbm91Z2guCi0gIHBhdGg9YGxzIC1IICRwYXRoYAotICB0b2FkZD0iJG5hbWU9JHBhdGgiCi0gIGlzX2NvbnRhaW5lZCAiJHRvYWRkIiAmJiByZXR1cm4KLSAgaWYgdGVzdCAteiAiJHNpbGVudCI7IHRoZW4KLSAgZWNobyAiYWRkaW5nIGZpbGUgJHRvYWRkIgotICBmaQotICB0YXJnZXRfZmlsZXM9IiR0YXJnZXRfZmlsZXMgJHRvYWRkIgotICBpZiB0ZXN0IC14ICIkcGF0aCI7IHRoZW4KLSAgICAjIE9ubHkgY2FsbCBsZGQgd2hlbiBpdCBtYWtlcyBzZW5zZQotICAgIGlmIGZpbGUgLUwgIiRwYXRoIiB8IGdyZXAgJ0VMRicgPiAvZGV2L251bGwgMj4mMTsgdGhlbgotCWlmICEgZmlsZSAtTCAiJHBhdGgiIHwgZ3JlcCAnc3RhdGljJyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICAgIyBsZGQgbm93IG91dHB1dHMgbGQgYXMgL2xpYi9sZC1saW51eC5zby54eCBvbiBjdXJyZW50IG5wdGwgYmFzZWQgZ2xpYmMKLQkJIyB0aGlzIHJlZ2V4cCBwYXJzZSB0aGUgb3V0cHV0cyBsaWtlOgotCQkjIGxkZCAvdXNyL2Jpbi9nY2MKLQkJIyAgICAgICAgIGxpbnV4LWdhdGUuc28uMSA9PiAgKDB4ZmZmZmUwMDApCi0JCSMgICAgICAgICBsaWJjLnNvLjYgPT4gL2xpYi90bHMvbGliYy5zby42ICgweGI3ZTgxMDAwKQotCQkjICAgICAgICAgL2xpYi9sZC1saW51eC5zby4yICgweGI3ZmU4MDAwKQotCQkjIGNvdmVyaW5nIGJvdGggc2l0dWF0aW9ucyAoIHdpdGggPT4gYW5kIHdpdGhvdXQgKQotICAgICAgICAgIGZvciBsaWIgaW4gYGxkZCAiJHBhdGgiIHwgc2VkIC1uICdzLF5bXi9dKlwoL1teIF0qXCkuKixcMSxwJ2A7IGRvCi0JICAgIHRlc3QgLWYgIiRsaWIiIHx8IGNvbnRpbnVlCi0JICAgICMgQ2hlY2sgd2V0aGVyIHRoZSBzYW1lIGxpYnJhcnkgYWxzbyBleGlzdHMgaW4gdGhlIHBhcmVudCBkaXJlY3RvcnksCi0JICAgICMgYW5kIHByZWZlciB0aGF0IG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgaXQgaXMgYSBtb3JlIGdlbmVyaWMgb25lLgotCSAgICBsb2NhbCBiYXNlbGliPWBlY2hvICIkbGliIiB8IHNlZCAncyxcKC9bXi9dKlwpLy4qXCgvW14vXSpcKSQsXDFcMiwnYAotCSAgICB0ZXN0IC1mICIkYmFzZWxpYiIgJiYgbGliPSRiYXNlbGliCi0JICBhZGRfZmlsZSAiJGxpYiIKLSAgICAgICAgZG9uZQotICAgICAgZmkKKyAgICBsb2NhbCBwPWBub3JtYWxpemVfcGF0aCAkMWAKKyAgICAjIHJlYWRsaW5rIGlzIHJlcXVpcmVkIGZvciBZb2N0bywgc28gd2UgY2FuIHVzZSBpdAorICAgIGxvY2FsIHBhdGg9YHJlYWRsaW5rIC1mICIkcCJgCisKKyAgICBhZGRfZmlsZV9jb21tb24gIiRwIiAiJHBhdGgiICIkMiIgfHwgcmV0dXJuCisKKyAgICBpZiB0ZXN0IC14ICIkcGF0aCIgJiYgaXNfZHluYW1pY19lbGYgIiRwYXRoIjsgdGhlbgorICAgICAgICAjIFJlcXVlc3QgdGhlIHByb2dyYW0gaW50ZXJwZXRlciAoZHluYW1pYyBsb2FkZXIpCisgICAgICAgIGludGVycD1gcmVhZGVsZiAtVyAtbCAiJHBhdGgiIHwgZ3JlcCAiUmVxdWVzdGluZyBwcm9ncmFtIGludGVycHJldGVyOiIgfCBzZWQgInMvXHMqXFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6XHMqXCguKlwpXF0vXDEvZyJgCisgICAgICAgIHByaW50X2RlYnVnICJJbnRlcnByZXRlciBpcyAnJGludGVycCciCisKKyAgICAgICAgYWRkX2RlcHMgIiRwYXRoIiAiJGludGVycCIKICAgICBmaQotICBmaQogfQogCi0jIGJhY2t3YXJkIGNvbXBhdAotaWYgdGVzdCAiJDEiID0gIi0tcmVzcGVjdC1wYXRoIjsgdGhlbgotICBzaGlmdAotZmkKLQotI2FkZCBhIC0tc2lsZW50IHN3aXRjaCB0byBhdm9pZCAiYnJva2VuIHBpcGUiIGVycm9ycyB3aGVuIGNhbGxpbmcgdGhpcyBzY2lwdCBmcm9tIHdpdGhpbiBPRQotaWYgdGVzdCAiJDEiID0gIi0tc2lsZW50IjsgdGhlbgotIHNpbGVudD0xCi0gc2hpZnQKLWZpCi0KK3doaWxlIHRlc3QgLW4gIiQxIjsgZG8KKyAgICBjYXNlICIkMSIgaW4KKyAgICAgICAgLS1yZXNwZWN0LXBhdGgpCisgICAgICAgICAgICAjIElnbm9yZSBmb3IgYmFja3dhcmQgY29tcGF0YWJpbGl0eQorICAgICAgICAgICAgOzsKKyAgICAgICAgLS1kZWJ1ZykKKyAgICAgICAgICAgIGRlYnVnPTEKKyAgICAgICAgICAgIDs7CisgICAgICAgIC0tbG9nKQorICAgICAgICAgICAgZG9fbG9nPTEKKyAgICAgICAgICAgIDs7CisgICAgICAgIC0tZXh0cmE9KikKKyAgICAgICAgICAgIGV4dHJhX3Rvb2xzPSIkZXh0cmFfdG9vbHMgJHsxIy0tZXh0cmE9fSIKKyAgICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgOzsKKyAgICBlc2FjCisgICAgc2hpZnQKK2RvbmUKIAogYWRkZWRfZ2NjPSQxCiBzaGlmdApAQCAtNzYsMTkgKzIxNSwzNSBAQAogc2hpZnQKIGFyY2hpdmVfbmFtZT0kMQogCitpZiB0ZXN0IC1uICIkZG9fbG9nIjsgdGhlbgorICAgIGxvZ19wYXRoPSIkYXJjaGl2ZV9uYW1lLmxvZyIKKyAgICBybSAtZiAiJGxvZ19wYXRoIgorZmkKKworaWYgdGVzdCAteiAiJFBBVENIRUxGIjsgdGhlbgorICAgIFBBVENIRUxGPWB3aGljaCBwYXRjaGVsZiAyPiAvZGV2L251bGxgCitmaQoraWYgdGVzdCAteiAiJFBBVENIRUxGIjsgdGhlbgorICAgIFBBVENIRUxGPWB3aGljaCBwYXRjaGVsZi11bmluYXRpdmUgMj4gL2Rldi9udWxsYAorZmkKK2lmIHRlc3QgLXogIiRQQVRDSEVMRiI7IHRoZW4KKyAgICBwcmludF9vdXRwdXQgInBhdGNoZWxmIGlzIHJlcXVpcmVkIgorICAgIGV4aXQgMQorZmkKKwogaWYgdGVzdCAteiAiJGFkZGVkX2djYyIgfHwgdGVzdCAteiAiJGFkZGVkX2d4eCIgOyB0aGVuCi0JZWNobyAidXNhZ2U6ICQwIDxnY2NfcGF0aD4gPGcrK19wYXRoPiIKLQlleGl0IDEKKyAgICBwcmludF9vdXRwdXQgInVzYWdlOiAkMCA8Z2NjX3BhdGg+IDxnKytfcGF0aD4iCisgICAgZXhpdCAxCiBmaQogCiBpZiAhIHRlc3QgLXggIiRhZGRlZF9nY2MiIDsgdGhlbgotICBlY2hvICInJGFkZGVkX2djYycgaXMgbm8gZXhlY3V0YWJsZS4iCi0gIGV4aXQgMQorICAgIHByaW50X291dHB1dCAiJyRhZGRlZF9nY2MnIGlzIG5vdCBleGVjdXRhYmxlLiIKKyAgICBleGl0IDEKIGZpCiAKIGlmICEgdGVzdCAteCAiJGFkZGVkX2d4eCIgOyB0aGVuCi0gIGVjaG8gIickYWRkZWRfZ2NjJyBpcyBubyBleGVjdXRhYmxlLiIKLSAgZXhpdCAxCisgICAgcHJpbnRfb3V0cHV0ICInJGFkZGVkX2djYycgaXMgbm90IGV4ZWN1dGFibGUuIgorICAgIGV4aXQgMQogZmkKIAogCkBAIC05Nyw5NiArMjUyLDEzMSBAQAogYWRkX2ZpbGUgJGFkZGVkX2d4eCAvdXNyL2Jpbi9nKysKIAogaWYgdGVzdCAteiAiJGFkZGVkX2FzIiA7IHRoZW4KLSBhZGRfZmlsZSAvdXNyL2Jpbi9hcyAvdXNyL2Jpbi9hcworICAgIGFkZF9maWxlIC91c3IvYmluL2FzIC91c3IvYmluL2FzCiBlbHNlCi0gaWYgISB0ZXN0IC14ICIkYWRkZWRfYXMiIDsgdGhlbgotICBlY2hvICInJGFkZGVkX2FzJyBpcyBubyBleGVjdXRhYmxlLiIKLSAgZXhpdCAxCi0gZmkKKyAgICBpZiAhIHRlc3QgLXggIiRhZGRlZF9hcyIgOyB0aGVuCisgICAgICAgIHByaW50X291dHB1dCAiJyRhZGRlZF9hcycgaXMgbm90IGV4ZWN1dGFibGUuIgorICAgICAgICBleGl0IDEKKyAgICBmaQogCi0gYWRkX2ZpbGUgJGFkZGVkX2FzICAvdXNyL2Jpbi9hcworICAgIGFkZF9maWxlICRhZGRlZF9hcyAgL3Vzci9iaW4vYXMKIGZpCiAKIGFkZF9maWxlIGAkYWRkZWRfZ2NjIC1wcmludC1wcm9nLW5hbWU9Y2MxYCAvdXNyL2Jpbi9jYzEKIGFkZF9maWxlIGAkYWRkZWRfZ3h4IC1wcmludC1wcm9nLW5hbWU9Y2MxcGx1c2AgL3Vzci9iaW4vY2MxcGx1cwogc3BlY2ZpbGU9YCRhZGRlZF9nY2MgLXByaW50LWZpbGUtbmFtZT1zcGVjc2AKIGlmIHRlc3QgLW4gIiRzcGVjZmlsZSIgJiYgdGVzdCAtZSAiJHNwZWNmaWxlIjsgdGhlbgotICBhZGRfZmlsZSAiJHNwZWNmaWxlIgorICAgIGFkZF9maWxlICIkc3BlY2ZpbGUiCiBmaQogCiBsdG9maWxlPWAkYWRkZWRfZ2NjIC1wcmludC1wcm9nLW5hbWU9bHRvMWAKLXBsdWdpbmZpbGU9IiR7bHRvZmlsZSVsdG8xfWxpYmx0b19wbHVnaW4uc28iCitwbHVnaW5maWxlPWBub3JtYWxpemVfcGF0aCAiJHtsdG9maWxlJWx0bzF9bGlibHRvX3BsdWdpbi5zbyJgCiBpZiB0ZXN0IC1yICIkcGx1Z2luZmlsZSIKIHRoZW4KLSAgYWRkX2ZpbGUgJHBsdWdpbmZpbGUgICR7cGx1Z2luZmlsZSMqdXNyfQotICBhZGRfZmlsZSAkcGx1Z2luZmlsZSAgL3VzciR7cGx1Z2luZmlsZSMqdXNyfQorICAgIGFkZF9maWxlICRwbHVnaW5maWxlICAke3BsdWdpbmZpbGUjKnVzcn0KKyAgICBhZGRfZmlsZSAkcGx1Z2luZmlsZSAgL3VzciR7cGx1Z2luZmlsZSMqdXNyfQogZmkKIAorIyBmb3IgdGVzdGluZyB0aGUgZW52aXJvbm1lbnQgaXMgdXNhYmxlIGF0IGFsbAoraWYgdGVzdCAteCAvYmluL3RydWU7IHRoZW4KKyAgICBhZGRfZmlsZSAvYmluL3RydWUKK2VsaWYgdGVzdCAteCAvdXNyL2Jpbi90cnVlOyB0aGVuCisgICAgYWRkX2ZpbGUgL3Vzci9iaW4vdHJ1ZSAvYmluL3RydWUKK2Vsc2UKKyAgICBwcmludF9vdXRwdXQgIid0cnVlJyBub3QgZm91bmQiCisgICAgZXhpdCAxCitmaQorCitmb3IgZXh0cmEgaW4gJGV4dHJhX3Rvb2xzOyBkbworICAgIGlmIHRlc3QgLXggIiRleHRyYSI7IHRoZW4KKyAgICAgICAgYWRkX2ZpbGUgIiRleHRyYSIKKyAgICBlbHNlCisgICAgICAgIHByaW50X291dHB1dCAiJyRleHRyYScgbm90IGZvdW5kIgorICAgICAgICBleGl0IDEKKyAgICBmaQorZG9uZQorCitsaW5rX3JlbCAoKQoreworICAgIGxvY2FsIHRhcmdldD0iJDEiCisgICAgbG9jYWwgbmFtZT0iJDIiCisgICAgbG9jYWwgYmFzZT0iJDMiCisKKyAgICBsb2NhbCBwcmVmaXg9YGRpcm5hbWUgJG5hbWVgCisKKyAgICBwcmVmaXg9YGVjaG8gJHByZWZpeCB8IHNlZCAncyxbXi9dXCssLi4sZycgfCBzZWQgJ3MsXi8qLCxnJ2AKKworICAgIGxuIC1zICRwcmVmaXgvJHRhcmdldCAkYmFzZS8kbmFtZQorfQorCiB0ZW1wZGlyPWBta3RlbXAgLWQgL3RtcC9pY2VjY2VudlhYWFhYWGAKLW5ld190YXJnZXRfZmlsZXM9Ci1mb3IgaSBpbiAkdGFyZ2V0X2ZpbGVzOyBkbwotIGNhc2UgJGkgaW4KLSAgICo9LyopCit0YXJnZXRfZmlsZXM9Citmb3IgcGF0aCBpbiAkdGFyZ2V0X3BhdGhzOyBkbworICAgIG1rZGlyIC1wICR0ZW1wZGlyL2BkaXJuYW1lICRwYXRoYAorICAgIGNwIC1wSCAkcGF0aCAkdGVtcGRpci8kcGF0aAorCisgICAgaWYgdGVzdCAtZiAkdGVtcGRpci8kcGF0aCAtYSAteCAkdGVtcGRpci8kcGF0aDsgdGhlbgorICAgICAgICBzdHJpcCAtcyAkdGVtcGRpci8kcGF0aCAyPi9kZXYvbnVsbAorICAgIGZpCisKKyAgICBmaXhfcnBhdGggJHRlbXBkaXIvJHBhdGggYGRpcm5hbWUgJHBhdGhgCisgICAgdGFyZ2V0X2ZpbGVzPSIkdGFyZ2V0X2ZpbGVzICRwYXRoIgorZG9uZQorCitmb3IgaSBpbiAkdGFyZ2V0X2FsaWFzZXM7IGRvCiAgICAgdGFyZ2V0PWBlY2hvICRpIHwgY3V0IC1kPSAtZjFgCi0gICAgcGF0aD1gZWNobyAkaSB8IGN1dCAtZD0gLWYyYAotICAgIDs7Ci0gICAqKQotICAgIHBhdGg9JGkKLSAgICB0YXJnZXQ9JGkKLSAgICA7OwotICBlc2FjCi0gIG1rZGlyIC1wICR0ZW1wZGlyL2BkaXJuYW1lICR0YXJnZXRgCi0gIGNwIC1wICRwYXRoICR0ZW1wZGlyLyR0YXJnZXQKLSAgaWYgdGVzdCAtZiAkdGVtcGRpci8kdGFyZ2V0IC1hIC14ICR0ZW1wZGlyLyR0YXJnZXQ7IHRoZW4KLSAgICBzdHJpcCAtcyAkdGVtcGRpci8kdGFyZ2V0IDI+L2Rldi9udWxsCi0gIGZpCi0gIHRhcmdldD1gZWNobyAkdGFyZ2V0IHwgY3V0IC1iMi1gCi0gIG5ld190YXJnZXRfZmlsZXM9IiRuZXdfdGFyZ2V0X2ZpbGVzICR0YXJnZXQiCisgICAgbGlua19uYW1lPWBlY2hvICRpIHwgY3V0IC1kPSAtZjJgCisKKyAgICBta2RpciAtcCAkdGVtcGRpci9gZGlybmFtZSAkbGlua19uYW1lYAorICAgICMgUmVsYXRpdmUgbGlua3MgYXJlIHVzZWQgYmVjYXVzZSB0aGUgZmlsZXMgYXJlIGNoZWNrZWQgZm9yIGJlaW5nCisgICAgIyBleGVjdXRhYmxlIG91dHNpZGUgdGhlIGNocm9vdAorICAgIGxpbmtfcmVsICR0YXJnZXQgJGxpbmtfbmFtZSAkdGVtcGRpcgorCisgICAgbGlua19uYW1lPWBlY2hvICRsaW5rX25hbWUgfCBjdXQgLWIyLWAKKyAgICB0YXJnZXRfZmlsZXM9IiR0YXJnZXRfZmlsZXMgJGxpbmtfbmFtZSIKIGRvbmUKIAogI3NvcnQgdGhlIGZpbGVzCi10YXJnZXRfZmlsZXM9YGZvciBpIGluICRuZXdfdGFyZ2V0X2ZpbGVzOyBkbyBlY2hvICRpOyBkb25lIHwgc29ydGAKK3RhcmdldF9maWxlcz1gZm9yIGkgaW4gJHRhcmdldF9maWxlczsgZG8gZWNobyAkaTsgZG9uZSB8IHNvcnRgCiAKICN0ZXN0IGlmIGFuIGFyY2hpdmUgbmFtZSB3YXMgc3VwcGxpZWQKICNpZiBub3QgdXNlIHRoZSBtZDUgb2YgYWxsIGZpbGVzIGFzIHRoZSBhcmNoaXZlIG5hbWUKIGlmIHRlc3QgLXogIiRhcmNoaXZlX25hbWUiOyB0aGVuCi0gIG1kNXN1bT1OT05FCi0gIGZvciBmaWxlIGluIC91c3IvYmluL21kNXN1bSAvYmluL21kNSAvdXNyL2Jpbi9tZDU7IGRvCi0gICAgaWYgdGVzdCAteCAkZmlsZTsgdGhlbgotICAgICAgbWQ1c3VtPSRmaWxlCi0gICAgICBicmVhawotICAgIGZpCi0gIGRvbmUKKyAgICBtZDVzdW09Tk9ORQorICAgIGZvciBmaWxlIGluIC91c3IvYmluL21kNXN1bSAvYmluL21kNSAvdXNyL2Jpbi9tZDU7IGRvCisgICAgICAgIGlmIHRlc3QgLXggJGZpbGU7IHRoZW4KKyAgICAgICAgICAgIG1kNXN1bT0kZmlsZQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmkKKyAgICBkb25lCiAKLSAgI2NhbGN1bGF0ZSBtZDUgYW5kIHVzZSBpdCBhcyB0aGUgYXJjaGl2ZSBuYW1lCi0gIGFyY2hpdmVfbmFtZT1gZm9yIGkgaW4gJHRhcmdldF9maWxlczsgZG8gdGVzdCAtZiAkdGVtcGRpci8kaSAmJiAkbWQ1c3VtICR0ZW1wZGlyLyRpOyBkb25lIHwgc2VkIC1lICdzLyAuKiQvLycgfCAkbWQ1c3VtIHwgc2VkIC1lICdzLyAuKiQvLydgLnRhci5neiB8fCB7Ci0gICAgaWYgdGVzdCAteiAiJHNpbGVudCI7IHRoZW4KLSAgICAgZWNobyAiQ291bGRuJ3QgY29tcHV0ZSBNRDUgc3VtLiIKLSAgICBmaQotICAgIGV4aXQgMgotICB9Ci0gIG15ZGlyPWBwd2RgCi1lbHNlCi0gIG15ZGlyPSJgZGlybmFtZSAiJGFyY2hpdmVfbmFtZSJgIgotCi0gICNjaGVjayBpZiB3ZSBoYXZlIGEgZnVsbCBwYXRoIG9yIG9ubHkgYSBmaWxlbmFtZQotICBpZiB0ZXN0ICIkbXlkaXIiID0gIi4iIDsgdGhlbgorICAgICNjYWxjdWxhdGUgbWQ1IGFuZCB1c2UgaXQgYXMgdGhlIGFyY2hpdmUgbmFtZQorICAgIGFyY2hpdmVfbmFtZT1gZm9yIGkgaW4gJHRhcmdldF9maWxlczsgZG8gdGVzdCAtZiAkdGVtcGRpci8kaSAmJiAkbWQ1c3VtICR0ZW1wZGlyLyRpOyBkb25lIHwgc2VkIC1lICdzLyAuKiQvLycgfCAkbWQ1c3VtIHwgc2VkIC1lICdzLyAuKiQvLydgLnRhci5neiB8fCB7CisgICAgICAgIHByaW50X291dHB1dCAiQ291bGRuJ3QgY29tcHV0ZSBNRDUgc3VtLiIKKyAgICAgICAgZXhpdCAyCisgICAgfQogICAgIG15ZGlyPWBwd2RgCi0gIGVsc2UKLSAgICBteWRpcj0iIgotICBmaQorZWxzZQorICAgIG15ZGlyPSJgZGlybmFtZSAiJGFyY2hpdmVfbmFtZSJgIgorCisgICAgI2NoZWNrIGlmIHdlIGhhdmUgYSBmdWxsIHBhdGggb3Igb25seSBhIGZpbGVuYW1lCisgICAgaWYgdGVzdCAiJG15ZGlyIiA9ICIuIiA7IHRoZW4KKyAgICAgICAgbXlkaXI9YHB3ZGAKKyAgICBlbHNlCisgICAgICAgIG15ZGlyPSIiCisgICAgZmkKIGZpCiAKLWlmIHRlc3QgLXogIiRzaWxlbnQiOyB0aGVuCi1lY2hvICJjcmVhdGluZyAkYXJjaGl2ZV9uYW1lIgotZmkKK3ByaW50X291dHB1dCAiY3JlYXRpbmcgJGFyY2hpdmVfbmFtZSIKIAogY2QgJHRlbXBkaXIKLXRhciAtY3poZiAiJG15ZGlyLyRhcmNoaXZlX25hbWUiICR0YXJnZXRfZmlsZXMgfHwgewotIGlmIHRlc3QgLXogIiRzaWxlbnQiOyB0aGVuCi0gIGVjaG8gIkNvdWxkbid0IGNyZWF0ZSBhcmNoaXZlIgotIGZpCi0gIGV4aXQgMworIyBBZGQgZXZlcnl0aGluZyBpbiB0aGUgdGVtcCBkaXJlY3RvcnkuIFRhciBkb2Vzbid0IGxpa2UgdG8gYmUgZ2l2ZW4gZmlsZXMgd2l0aAorIyAiLi4iIGluIHRoZW0sIHdoaWNoIGZyZXF1ZW50bHkgaGFwcGVucyBpbiAkdGFyZ2V0X2ZpbGVzLCBhbmQgd2lsbCBzdHJpcCBvZmYKKyMgdGhlIHBhdGggcHJlZml4IHBhc3QgdGhlIG9mZmVuZGluZyAiLi4iLiBUaGlzIG1ha2VzIHRoZSBhcmNoaXZlIGdlbmVyYXRlCisjIGluY29ycmVjdGx5Cit0YXIgLWN6ZiAiJG15ZGlyLyRhcmNoaXZlX25hbWUiIC4gfHwgeworICAgIHByaW50X291dHB1dCAiQ291bGRuJ3QgY3JlYXRlIGFyY2hpdmUiCisgICAgZXhpdCAzCiB9CiBjZCAuLgogcm0gLXJmICR0ZW1wZGlyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudl8wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudl8wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUzOTQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52XzAuMS5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gImljZWNjIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgaXMgYSB2ZXJzaW9uIG9mIHRoZSBpY2VjYy1jcmVhdGUtZW52IHNjcmlwdCB0aGF0IGhhcyBcCitiZWVuIG1vZGlmaWVkIGluIG9yZGVyIHRvIG1ha2UgaXQgd29yayB3aXRoIE9FLiIKK1NFQ1RJT04gPSAiYmFzZSIKKyMgc291cmNlIGZpbGUgaGFzIGp1c3QgYSAiR1BMIiB3b3JkLCBidXQgdXBzdHJlYW0gaXMgR1BMdjIrLgorIyBtb3N0IHByb2JhYmx5IGp1c3QgR1BMIHdvdWxkIGJlIGEgbWlzdGFrZQorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pY2VjYy1jcmVhdGUtZW52O2JlZ2lubGluZT0yO2VuZGxpbmU9NTttZDU9YWUxZGYzZDZhMDU4YmZkYTQwYjY2MDk0YzVmNjA2NWYiCisKK1BSID0gInIyIgorCitERVBFTkRTID0gIiIKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKKyMgVGhpcyBpcyBuZWVkZWQsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZXJlIGlzIGRlcGVuZGVuY3kgbG9vcCBmcm9tIHF1aWx0LW5hdGl2ZQorIyBEZXBlbmRlbmN5IGxvb3AgIzEgZm91bmQ6CisjICBUYXNrIDEwOTA3IChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQtbmF0aXZlXzAuNjAuYmIsIGRvX2luc3RhbGwpIChkZXBlbmRlbnQgVGFza3MgWydxdWlsdC1uYXRpdmUsIGRvX2NvbXBpbGUnXSkKKyMgIFRhc2sgMTA5MDggKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC1uYXRpdmVfMC42MC5iYiwgZG9fcG9wdWxhdGVfc3lzcm9vdCkgKGRlcGVuZGVudCBUYXNrcyBbJ3F1aWx0LW5hdGl2ZSwgZG9faW5zdGFsbCddKQorIyAgVGFzayAxMDk5NyAobWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi1uYXRpdmVfMC4xLmJiLCBkb19wYXRjaCkgKGRlcGVuZGVudCBUYXNrcyBbJ2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlLCBkb191bnBhY2snLCAncXVpbHQtbmF0aXZlLCBkb19wb3B1bGF0ZV9zeXNyb290J10pCisjICBUYXNrIDExMDAxIChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIsIGRvX2NvbmZpZ3VyZSkgKGRlcGVuZGVudCBUYXNrcyBbJ2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlLCBkb19wYXRjaCddKQorIyAgVGFzayAxMTAwMiAobWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi1uYXRpdmVfMC4xLmJiLCBkb19jb21waWxlKSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX2NvbmZpZ3VyZSddKQorIyAgVGFzayAxMDk5OCAobWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi1uYXRpdmVfMC4xLmJiLCBkb19pbnN0YWxsKSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX2NvbXBpbGUnXSkKKyMgIFRhc2sgMTA5OTkgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYiwgZG9fcG9wdWxhdGVfc3lzcm9vdCkgKGRlcGVuZGVudCBUYXNrcyBbJ2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlLCBkb19pbnN0YWxsJ10pCisjICBUYXNrIDEwOTEwIChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQtbmF0aXZlXzAuNjAuYmIsIGRvX2NvbmZpZ3VyZSkgKGRlcGVuZGVudCBUYXNrcyBbJ3F1aWx0LW5hdGl2ZSwgZG9fcGF0Y2gnLCAnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX3BvcHVsYXRlX3N5c3Jvb3QnXSkKKyMgIFRhc2sgMTA5MTEgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC1uYXRpdmVfMC42MC5iYiwgZG9fY29tcGlsZSkgKGRlcGVuZGVudCBUYXNrcyBbJ3F1aWx0LW5hdGl2ZSwgZG9fY29uZmlndXJlJ10pCitQQVRDSFRPT0wgPSAicGF0Y2giCitTUkNfVVJJID0gImZpbGU6Ly9pY2VjYy1jcmVhdGUtZW52IgorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2ljZWNjLWNyZWF0ZS1lbnYgJHtEfS8ke2JpbmRpcn0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy10b29sY2hhaW4vaWNlY2MtdG9vbGNoYWluL2ljZWNjLWVudi5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy1lbnYuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ3NjAwNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy1lbnYuc2gKQEAgLTAsMCArMSw0OSBAQAorIyEgL2Jpbi9zaAorIyBDb3B5cmlnaHQgKGMpIDIwMTggSm9zaHVhIFdhdHQsIEdhcm1pbiBJbnRlcm5hdGlvbmFsLEluYy4KKyMKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorIyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorIyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisjIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisjIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyMgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyMgU09GVFdBUkUuCisjCisKK2lmIFsgLXogIiRJQ0VDQ19QQVRIIiBdOyB0aGVuCisgICAgSUNFQ0NfUEFUSD0kKHdoaWNoIGljZWNjIDI+IC9kZXYvbnVsbCkKK2ZpCisKK2lmIFsgLW4gIiRJQ0VDQ19QQVRIIiBdOyB0aGVuCisgICAgIyBEZWZhdWx0IHRvIGRpc2FibGluZyB0aGUgY2FyZXQgd29ya2Fyb3VuZC4gSWYgc2V0IHRvICIxIiwgaWNlY2Mgd2lsbAorICAgICMgbG9jYWxseSByZWNvbXBpbGUgYW55IGZpbGVzIHRoYXQgaGF2ZSB3YXJuaW5ncywgd2hpY2ggY2FuIGFkdmVyc2VseQorICAgICMgYWZmZWN0IHBlcmZvcm1hbmNlLgorICAgICMKKyAgICAjIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ljZWNjL2ljZWNyZWFtL2lzc3Vlcy8xOTAKKyAgICBpZiBbIC16ICIkSUNFQ0NfQ0FSRVRfV09SS0FST1VORCIgXTsgdGhlbgorICAgICAgICBJQ0VDQ19DQVJFVF9XT1JLQVJPVU5EPSIwIgorICAgIGZpCisgICAgaWYgWyAiJElDRUNDX0NBUkVUX1dPUktBUk9VTkQiICE9ICIxIiBdOyB0aGVuCisgICAgICAgIENGTEFHUz0iJENGTEFHUyAtZm5vLWRpYWdub3N0aWNzLXNob3ctY2FyZXQiCisgICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgLWZuby1kaWFnbm9zdGljcy1zaG93LWNhcmV0IgorICAgIGZpCisgICAgZXhwb3J0IElDRUNDX1BBVEggSUNFQ0NfQ0FSRVRfV09SS0FST1VORAorICAgIGV4cG9ydCBJQ0VDQ19WRVJTSU9OPSIkT0VDT1JFX05BVElWRV9TWVNST09UL3Vzci9zaGFyZS9pY2VjcmVhbS9AVE9PTENIQUlOX0VOVkAiCisgICAgZXhwb3J0IElDRUNDPSIkKHdoaWNoICR7Q1JPU1NfQ09NUElMRX1nY2MpIgorICAgIGV4cG9ydCBJQ0VDWFg9IiQod2hpY2ggJHtDUk9TU19DT01QSUxFfWcrKykiCisgICAgZXhwb3J0IElDRUFTPSIkKHdoaWNoICR7Q1JPU1NfQ09NUElMRX1hcykiCisgICAgZXhwb3J0IFBBVEg9IiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvdXNyL3NoYXJlL2ljZWNyZWFtL2JpbjokUEFUSCIKK2Vsc2UKKyAgICBlY2hvICJJY2VjYyBub3QgZm91bmQuIERpc2FibGluZyBkaXN0cmlidXRlZCBjb21waWxpbmciCitmaQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy10b29sY2hhaW4vaWNlY2Mtc2V0dXAuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy10b29sY2hhaW4vaWNlY2Mtc2V0dXAuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ4MDgyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy1zZXR1cC5zaApAQCAtMCwwICsxLDQzIEBACisjISAvYmluL3NoCisjIENvcHlyaWdodCAoYykgMjAxOCBKb3NodWEgV2F0dCwgR2FybWluIEludGVybmF0aW9uYWwsSW5jLgorIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisjIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisjIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKyMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisjIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyMgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorIyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorIyBTT0ZUV0FSRS4KKyMKKworIyBTZXR1cCBlbnZpcm9ubWVudAorZm9yIGVudl9zZXR1cF9zY3JpcHQgaW4gYGxzICQxL2Vudmlyb25tZW50LXNldHVwLSpgOyBkbworCS4gJGVudl9zZXR1cF9zY3JpcHQKK2RvbmUKKworIyBJQ0VDQ19QQVRIIHdpbGwgaGF2ZSBiZWVuIGZvdW5kIGljZWNjLWVudi5zaAoraWYgWyAteiAiJElDRUNDX1BBVEgiIF07IHRoZW4KKyAgICBleGl0IDAKK2ZpCisKK2VjaG8gIlNldHRpbmcgdXAgSWNlQ3JlYW0gZGlzdHJpYnV0ZWQgY29tcGlsaW5nLi4uIgorCisjIENyZWF0ZSB0aGUgZW52aXJvbm1lbnQKK21rZGlyIC1wICJgZGlybmFtZSAkSUNFQ0NfVkVSU0lPTmAiCitpY2VjYy1jcmVhdGUtZW52ICRJQ0VDQyAkSUNFQ1hYICRJQ0VBUyAkSUNFQ0NfVkVSU0lPTiB8fCBleGl0ICQ/CisKKyMgQ3JlYXRlIHN5bWJvbGljIGxpbmtzCitkPSIkT0VDT1JFX05BVElWRV9TWVNST09UL3Vzci9zaGFyZS9pY2VjcmVhbS9iaW4iCitta2RpciAtcCAiJGQiCitsbiAtcyAiJElDRUNDX1BBVEgiICIkZC8ke0NST1NTX0NPTVBJTEV9Z2NjIgorbG4gLXMgIiRJQ0VDQ19QQVRIIiAiJGQvJHtDUk9TU19DT01QSUxFfWcrKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL25hdGl2ZXNkay1pY2VjYy10b29sY2hhaW5fMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy10b29sY2hhaW4vbmF0aXZlc2RrLWljZWNjLXRvb2xjaGFpbl8wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQyNzUwZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL25hdGl2ZXNkay1pY2VjYy10b29sY2hhaW5fMC4xLmJiCkBAIC0wLDAgKzEsMzggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE4IEpvc2h1YSBXYXR0LCBHYXJtaW4gSW50ZXJuYXRpb25hbCxJbmMuCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCitTVU1NQVJZID0gIkdlbmVyYXRlcyBJY2VjcmVhbSB0b29sY2hhaW4gZm9yIFNESyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS9pY2VjYy1lbnYuc2g7YmVnaW5saW5lPTI7ZW5kbGluZT0yMDttZDU9ZGQ2YjY4YzFlZmVkOGE5ZmIwNGU0MDliM2IyODdkNDciCisKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKK1NSQ19VUkkgPSAiXAorICAgIGZpbGU6Ly9pY2VjYy1lbnYuc2ggXAorICAgIGZpbGU6Ly9pY2VjYy1zZXR1cC5zaCBcCisgICAgIgorCitpbmhlcml0IG5hdGl2ZXNkaworCitFTlZfTkFNRT0iJHtESVNUUk99LSR7VENMSUJDfS0ke1NES19BUkNIfS0ke1RVTkVfUEtHQVJDSH0tJHtESVNUUk9fVkVSU0lPTn0udGFyLmd6IgorCitkb19jb21waWxlKCkgeworfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7U0RLUEFUSE5BVElWRX0ke2RhdGFkaXJ9L2ljZWNyZWFtL2JpbgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2ljZWNjLWVudi5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kLworICAgIHNlZCAtaSAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL2ljZWNjLWVudi5zaCBcCisgICAgICAgIC1lICJzLEBUT09MQ0hBSU5fRU5WQCwke0VOVl9OQU1FfSxnIgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtTREtQQVRITkFUSVZFfS9wb3N0LXJlbG9jYXRlLXNldHVwLmQvCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaWNlY2Mtc2V0dXAuc2ggJHtEfSR7U0RLUEFUSE5BVElWRX0vcG9zdC1yZWxvY2F0ZS1zZXR1cC5kLworICAgIHNlZCAtaSAke0R9JHtTREtQQVRITkFUSVZFfS9wb3N0LXJlbG9jYXRlLXNldHVwLmQvaWNlY2Mtc2V0dXAuc2ggXAorICAgICAgICAtZSAicyxAVE9PTENIQUlOX0VOVkAsJHtFTlZfTkFNRX0sZyIKK30KKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSA9ICIke1NES1BBVEhOQVRJVkV9IgorUkRFUEVORFNfJHtQTn0gKz0gIm5hdGl2ZXNkay1pY2VjYy1jcmVhdGUtZW52IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ludGx0b29sL2ludGx0b29sL3BlcmwtNTIyLWRlcHJlY2F0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2wvcGVybC01MjItZGVwcmVjYXRpb25zLnBhdGNoCmluZGV4IGViNTIxNzIuLmYxMDQ5ZTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2wvcGVybC01MjItZGVwcmVjYXRpb25zLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2wvcGVybC01MjItZGVwcmVjYXRpb25zLnBhdGNoCkBAIC0xMCw5ICsxMCwxMSBAQAogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgKGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L2ludGx0b29sLytidWcvMTQ2NTAxMCkKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiAKLS0tLSBpbnRsdG9vbC0wLjUxLjAtT1JJRy9pbnRsdG9vbC11cGRhdGUuaW4JMjAxNS0wNS0yNyAwMDoyMDo0My4wMzgzNzk5NjMgKzAyMDAKLSsrKyBpbnRsdG9vbC0wLjUxLjAvaW50bHRvb2wtdXBkYXRlLmluCTIwMTUtMDUtMjcgMDA6MjM6NTMuMzA5MDc4MDUyICswMjAwCi1AQCAtMTA2Miw3ICsxMDYyLDcgQEAKK0luZGV4OiBpbnRsdG9vbC0wLjUxLjAvaW50bHRvb2wtdXBkYXRlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gaW50bHRvb2wtMC41MS4wLm9yaWcvaW50bHRvb2wtdXBkYXRlLmluCisrKysgaW50bHRvb2wtMC41MS4wL2ludGx0b29sLXVwZGF0ZS5pbgorQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN1YiBTdWJzdGl0dXRlVmFyaWFibGUKICAJfQogICAgICB9CiAgCkBAIC0yMSw3ICsyMyw3IEBACiAgICAgIHsKICAJbXkgJHJlc3QgPSAkMzsKICAJbXkgJHVudG91Y2hlZCA9ICQxOwotQEAgLTExOTAsMTAgKzExOTAsMTAgQEAKK0BAIC0xMTkwLDEwICsxMTkwLDEwIEBAIHN1YiBGaW5kUGFja2FnZU5hbWUKICAJJG5hbWUgICAgPX4gcy9cKCskLy9nOwogIAkkdmVyc2lvbiA9fiBzL1woKyQvL2c7CiAgCkBAIC0zNiw3ICszOCw3IEBACiAgICAgIH0KICAKICAgICAgaWYgKCRjb25mX3NvdXJjZSA9fiAvXkFDX0lOSVRcKChbXixcKV0rKSwoW14sXCldKylbLF0/KFteLFwpXSspPy9tKQotQEAgLTEyMTksMTEgKzEyMTksMTEgQEAKK0BAIC0xMjE5LDExICsxMjE5LDExIEBAIHN1YiBGaW5kUGFja2FnZU5hbWUKICAJJHZlcnNpb24gPX4gcy9cKCskLy9nOwogICAgICAgICAgJGJ1Z3VybCAgPX4gcy9cKCskLy9nIGlmIChkZWZpbmVkICRidWd1cmwpOwogIApAQCAtNTIsNCArNTQsNCBAQAogKyAgICAgICAgJHZhcmhhc2h7IlBBQ0tBR0VfQlVHUkVQT1JUIn0gPSAkYnVndXJsIGlmIChkZWZpbmVkICRidWd1cmwgYW5kIG5vdCAkYnVndXJsID1+IC9cJFx7P1x3K1x9Py8pOwogICAgICB9CiAgCi0gICAgICMgXHMgbWFrZXMgdGhpcyBub3Qgd29yaywgd2h5PwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgIyBccyBtYWtlcyB0aGlzIG5vdCB3b3JrLCB3aHk/CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWMvMDAwMS1BZGQtRkFMTFRIUlUtY29tbWVudC10by1oYW5kbGUtR0NDNy13YXJuaW5ncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUFkZC1GQUxMVEhSVS1jb21tZW50LXRvLWhhbmRsZS1HQ0M3LXdhcm5pbmdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzdiZTVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUFkZC1GQUxMVEhSVS1jb21tZW50LXRvLWhhbmRsZS1HQ0M3LXdhcm5pbmdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotRnJvbSA3YjI0ZjhiZDk1YWQ0ZjdkMDBjOTNjYTJhZDk5OGMxNGEwMjY2ZGJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogbWFyeGluIDxtbGlza2FAc3VzZS5jej4KLURhdGU6IFR1ZSwgMjEgTWFyIDIwMTcgMDg6NDI6MTEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIEZBTExUSFJVIGNvbW1lbnQgdG8gaGFuZGxlIEdDQzcgd2FybmluZ3MuCi0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGpzb25fb2JqZWN0LmMgIHwgIDEgKwotIGpzb25fdG9rZW5lci5jIHwgIDEgKwotIGxpbmtoYXNoLmMgICAgIHwgMjIgKysrKysrKysrKystLS0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9qc29uX29iamVjdC5jIGIvanNvbl9vYmplY3QuYwotaW5kZXggNmNjNzNiYy4uNzdlOGIyMSAxMDA2NDQKLS0tLSBhL2pzb25fb2JqZWN0LmMKLSsrKyBiL2pzb25fb2JqZWN0LmMKLUBAIC01NTIsNiArNTUyLDcgQEAgaW50NjRfdCBqc29uX29iamVjdF9nZXRfaW50NjQoc3RydWN0IGpzb25fb2JqZWN0ICpqc28pCi0gICAgIHJldHVybiBqc28tPm8uY19ib29sZWFuOwotICAgY2FzZSBqc29uX3R5cGVfc3RyaW5nOgotIAlpZiAoanNvbl9wYXJzZV9pbnQ2NChqc28tPm8uY19zdHJpbmcuc3RyLCAmY2ludCkgPT0gMCkgcmV0dXJuIGNpbnQ7Ci0rCS8qIEZBTExUSFJVICovCi0gICBkZWZhdWx0OgotICAgICByZXR1cm4gMDsKLSAgIH0KLWRpZmYgLS1naXQgYS9qc29uX3Rva2VuZXIuYyBiL2pzb25fdG9rZW5lci5jCi1pbmRleCA5YTc2MjkzLi5hZTdiMWFlIDEwMDY0NAotLS0tIGEvanNvbl90b2tlbmVyLmMKLSsrKyBiL2pzb25fdG9rZW5lci5jCi1AQCAtMzA1LDYgKzMwNSw3IEBAIHN0cnVjdCBqc29uX29iamVjdCoganNvbl90b2tlbmVyX3BhcnNlX2V4KHN0cnVjdCBqc29uX3Rva2VuZXIgKnRvaywKLSAgICAgICAgICAgICB0b2stPmVyciA9IGpzb25fdG9rZW5lcl9lcnJvcl9wYXJzZV91bmV4cGVjdGVkOwotICAgICAgICAgICAgIGdvdG8gb3V0OwotICAgICAgICAgfQotKwkvKiBGQUxMVEhSVSAqLwotICAgICAgIGNhc2UgJyInOgotIAlzdGF0ZSA9IGpzb25fdG9rZW5lcl9zdGF0ZV9zdHJpbmc7Ci0gCXByaW50YnVmX3Jlc2V0KHRvay0+cGIpOwotZGlmZiAtLWdpdCBhL2xpbmtoYXNoLmMgYi9saW5raGFzaC5jCi1pbmRleCA3MTJjMzg3Li43NGUzYjBmIDEwMDY0NAotLS0tIGEvbGlua2hhc2guYwotKysrIGIvbGlua2hhc2guYwotQEAgLTM3NiwxNyArMzc2LDE3IEBAIHN0YXRpYyB1aW50MzJfdCBoYXNobGl0dGxlKCBjb25zdCB2b2lkICprZXksIHNpemVfdCBsZW5ndGgsIHVpbnQzMl90IGluaXR2YWwpCi0gICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbGFzdCBibG9jazogYWZmZWN0IGFsbCAzMiBiaXRzIG9mIChjKSAqLwotICAgICBzd2l0Y2gobGVuZ3RoKSAgICAgICAgICAgICAgICAgICAvKiBhbGwgdGhlIGNhc2Ugc3RhdGVtZW50cyBmYWxsIHRocm91Z2ggKi8KLSAgICAgewotLSAgICBjYXNlIDEyOiBjKz0oKHVpbnQzMl90KWtbMTFdKTw8MjQ7Ci0tICAgIGNhc2UgMTE6IGMrPSgodWludDMyX3Qpa1sxMF0pPDwxNjsKLS0gICAgY2FzZSAxMDogYys9KCh1aW50MzJfdClrWzldKTw8ODsKLS0gICAgY2FzZSA5IDogYys9a1s4XTsKLS0gICAgY2FzZSA4IDogYis9KCh1aW50MzJfdClrWzddKTw8MjQ7Ci0tICAgIGNhc2UgNyA6IGIrPSgodWludDMyX3Qpa1s2XSk8PDE2OwotLSAgICBjYXNlIDYgOiBiKz0oKHVpbnQzMl90KWtbNV0pPDw4OwotLSAgICBjYXNlIDUgOiBiKz1rWzRdOwotLSAgICBjYXNlIDQgOiBhKz0oKHVpbnQzMl90KWtbM10pPDwyNDsKLS0gICAgY2FzZSAzIDogYSs9KCh1aW50MzJfdClrWzJdKTw8MTY7Ci0tICAgIGNhc2UgMiA6IGErPSgodWludDMyX3Qpa1sxXSk8PDg7Ci0rICAgIGNhc2UgMTI6IGMrPSgodWludDMyX3Qpa1sxMV0pPDwyNDsgLyogRkFMTFRIUlUgKi8KLSsgICAgY2FzZSAxMTogYys9KCh1aW50MzJfdClrWzEwXSk8PDE2OyAvKiBGQUxMVEhSVSAqLwotKyAgICBjYXNlIDEwOiBjKz0oKHVpbnQzMl90KWtbOV0pPDw4OyAvKiBGQUxMVEhSVSAqLwotKyAgICBjYXNlIDkgOiBjKz1rWzhdOyAvKiBGQUxMVEhSVSAqLwotKyAgICBjYXNlIDggOiBiKz0oKHVpbnQzMl90KWtbN10pPDwyNDsgLyogRkFMTFRIUlUgKi8KLSsgICAgY2FzZSA3IDogYis9KCh1aW50MzJfdClrWzZdKTw8MTY7IC8qIEZBTExUSFJVICovCi0rICAgIGNhc2UgNiA6IGIrPSgodWludDMyX3Qpa1s1XSk8PDg7IC8qIEZBTExUSFJVICovCi0rICAgIGNhc2UgNSA6IGIrPWtbNF07IC8qIEZBTExUSFJVICovCi0rICAgIGNhc2UgNCA6IGErPSgodWludDMyX3Qpa1szXSk8PDI0OyAvKiBGQUxMVEhSVSAqLwotKyAgICBjYXNlIDMgOiBhKz0oKHVpbnQzMl90KWtbMl0pPDwxNjsgLyogRkFMTFRIUlUgKi8KLSsgICAgY2FzZSAyIDogYSs9KCh1aW50MzJfdClrWzFdKTw8ODsgLyogRkFMTFRIUlUgKi8KLSAgICAgY2FzZSAxIDogYSs9a1swXTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgMCA6IHJldHVybiBjOwotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tY18wLjEyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMWNmMTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiQyBiaW5kaW5ncyBmb3IgYXBwcyB3aGljaCB3aWxsIG1hbmlwdWxhdGUgSlNPTiBkYXRhIgotREVTQ1JJUFRJT04gPSAiSlNPTi1DIGltcGxlbWVudHMgYSByZWZlcmVuY2UgY291bnRpbmcgb2JqZWN0IG1vZGVsIHRoYXQgYWxsb3dzIHlvdSB0byBlYXNpbHkgY29uc3RydWN0IEpTT04gb2JqZWN0cyBpbiBDLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qc29uLWMvanNvbi1jL3dpa2kiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRlNTRiNjBmYmJjMzUxMjNiYTE5M2ZlYThlZTIxNmYyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTVmNzg1M2Y3ZDhjZjY2NDU1NGNlM2ZhNzFiZjFjN2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmExMzY0NTFhNzkzMmQ4MGI3ZDE5N2IxMDQ0MWUyNmUzOTQyOGQ2N2IxNDQzZWM0M2JiYmE4MjQ3MDVlMTEyMyIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAianNvbi1jLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0jIGpzb24tYyByZWxlYXNlcyBwYWdlIGlzIGZldGNoaW5nIHRoZSBsaXN0IG9mIHJlbGVhc2VzIGluIHNvbWUgd2VpcmQgWE1MIGZvcm1hdAotIyBmcm9tIGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMgYW5kIHByb2Nlc3NlcyBpdCB3aXRoIGphdmFzY3JpcHQgOi0vCi0jVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvaW5kZXguaHRtbCIKLVJFQ0lQRV9VUFNUUkVBTV9WRVJTSU9OID0gIjAuMTIuMSIKLVJFQ0lQRV9VUFNUUkVBTV9EQVRFID0gIkp1biAwNywgMjAxNiIKLUNIRUNLX0RBVEUgPSAiQXByIDE5LCAyMDE3IgotCi1SUFJPVklERVNfJHtQTn0gPSAibGlianNvbiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXJkcmFuZCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBDbGVhbiB1cCBhdXRvY29uZiBjcnVmdCB0aGF0IHNob3VsZCBub3QgYmUgaW4gdGhlIHRhcmJhbGwKLSAgICBybSAtZiAke1N9L2NvbmZpZy5zdGF0dXMKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjMxOWRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTMuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJDIGJpbmRpbmdzIGZvciBhcHBzIHdoaWNoIHdpbGwgbWFuaXB1bGF0ZSBKU09OIGRhdGEiCitERVNDUklQVElPTiA9ICJKU09OLUMgaW1wbGVtZW50cyBhIHJlZmVyZW5jZSBjb3VudGluZyBvYmplY3QgbW9kZWwgdGhhdCBhbGxvd3MgeW91IHRvIGVhc2lseSBjb25zdHJ1Y3QgSlNPTiBvYmplY3RzIGluIEMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2pzb24tYy9qc29uLWMvd2lraSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGU1NGI2MGZiYmMzNTEyM2JhMTkzZmVhOGVlMjE2ZjIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2pzb24tY19yZWxlYXNlcy9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMTFmYzVkOTBjNzczNzVlNWZjODQwMWU4YjllZmJmMjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDMxNjc4MGJlOWFkMTZjNDJkN2MyNmIwMTVhNzg0ZmQ1ZGY0YjA5MDlmZWYwYWJhNTFjZmIxM2U0OTJhYzI0ZCIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAianNvbi1jLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisjIGpzb24tYyByZWxlYXNlcyBwYWdlIGlzIGZldGNoaW5nIHRoZSBsaXN0IG9mIHJlbGVhc2VzIGluIHNvbWUgd2VpcmQgWE1MIGZvcm1hdAorIyBmcm9tIGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMgYW5kIHByb2Nlc3NlcyBpdCB3aXRoIGphdmFzY3JpcHQgOi0vCisjVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvaW5kZXguaHRtbCIKK1JFQ0lQRV9VUFNUUkVBTV9WRVJTSU9OID0gIjAuMTMiCitSRUNJUEVfVVBTVFJFQU1fREFURSA9ICJEZWMgMDcsIDIwMTciCitDSEVDS19EQVRFID0gIkphbiAzMSwgMjAxOCIKKworUlBST1ZJREVTXyR7UE59ID0gImxpYmpzb24iCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1yZHJhbmQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgQ2xlYW4gdXAgYXV0b2NvbmYgY3J1ZnQgdGhhdCBzaG91bGQgbm90IGJlIGluIHRoZSB0YXJiYWxsCisgICAgcm0gLWYgJHtTfS9jb25maWcuc3RhdHVzCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLUdldC1wYXJhbWV0ZXJzLWZvci1ib3RoLWxpYnNvbHYtYW5kLWxpYnNvbHZleHQtbGliZG4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoCmluZGV4IDI4MGVkYjcuLmNiZDAzNjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLUdldC1wYXJhbWV0ZXJzLWZvci1ib3RoLWxpYnNvbHYtYW5kLWxpYnNvbHZleHQtbGliZG4ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaApAQCAtMSw3ICsxLDggQEAKLUZyb20gMzAxMmE5Mzc0NTIyMzc1MWNjOTc5ZTM3NzAyMDdhMDlhMDc1YmVjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMmJmMDY2NjU0NDI5M2RjZmFjMmY2N2I2NzhlMjQzNTNhY2RjZDRlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVHVlLCA3IEZlYiAyMDE3IDEyOjE2OjAzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNS81XSBHZXQgcGFyYW1ldGVycyBmb3IgYm90aCBsaWJzb2x2IGFuZCBsaWJzb2x2ZXh0IChsaWJkbmYgaXMKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIEdldCBwYXJhbWV0ZXJzIGZvciBib3RoIGxpYnNvbHYgYW5kIGxpYnNvbHZleHQgKGxpYmRuZiBpcworCiAgdXNpbmcgYm90aCkKIAogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJkbmYvcHVsbC8zMTJdCkBAIC0xMiwxMiArMTMsMTIgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDhiMmFiOWEuLmUyZDMzZDcgMTAwNjQ0CitpbmRleCBjYTI4MGYzLi42YWI5ODI3IDEwMDY0NAogLS0tIGEvQ01ha2VMaXN0cy50eHQKICsrKyBiL0NNYWtlTGlzdHMudHh0CiBAQCAtMjksNyArMjksNyBAQCBmaW5kX3BhY2thZ2UgKFBrZ0NvbmZpZyBSRVFVSVJFRCkKICBTRVQgKENNQUtFX01PRFVMRV9QQVRIICR7Q01BS0VfU09VUkNFX0RJUn0vY21ha2UvbW9kdWxlcykKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhHTElCIGdpby11bml4LTIuMD49Mi40NC4wIFJFUVVJUkVEKQorIFBLR19DSEVDS19NT0RVTEVTKEdMSUIgZ2lvLXVuaXgtMi4wPj0yLjQ2LjAgUkVRVUlSRUQpCiAgRklORF9MSUJSQVJZIChSUE1EQl9MSUJSQVJZIE5BTUVTIHJwbWRiKQogLVBLR19DSEVDS19NT0RVTEVTIChMSUJTT0xWIFJFUVVJUkVEIGxpYnNvbHYpCiArUEtHX0NIRUNLX01PRFVMRVMgKExJQlNPTFYgUkVRVUlSRUQgbGlic29sdiBsaWJzb2x2ZXh0KQpAQCAtMjUsNSArMjYsNSBAQAogIGlmIChFTkFCTEVfUkhTTV9TVVBQT1JUKQogICAgICBwa2dfY2hlY2tfbW9kdWxlcyAoUkhTTSBSRVFVSVJFRCBsaWJyaHNtKQogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDQtU2V0LWxpYnNvbHYtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1jbWFrZS1zLW93bi1tby5wYXRjaAppbmRleCAxZWE5MzEwLi42Y2Y0OGE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDA0LVNldC1saWJzb2x2LXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctY21ha2Utcy1vd24tbW8ucGF0Y2gKQEAgLTEsNyArMSw4IEBACi1Gcm9tIDU1Y2JlNmY0MGZlMDgzNjM4NWUxYTcyNDFlYzgxMWNiZTk5ZTU4NDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJjZWE1YzUwNjNhMmQ1ZjA3ZGJlNmY0MGFlZTMwMzcwZmM0YmE2NTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMzAgRGVjIDIwMTYgMTg6MjQ6NTAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzVdIFNldCBsaWJzb2x2IHZhcmlhYmxlcyB3aXRoIHBrZy1jb25maWcgKGNtYWtlJ3Mgb3duIG1vZHVsZQorU3ViamVjdDogW1BBVENIIDEvMl0gU2V0IGxpYnNvbHYgdmFyaWFibGVzIHdpdGggcGtnLWNvbmZpZyAoY21ha2UncyBvd24gbW9kdWxlCisKICBkb2Vzbid0IHdvcmsgcHJvcGVybHkpLgogCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi9wdWxsLzMxMl0KQEAgLTEyLDEyICsxMywxMiBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IGE3NWRmMDQuLjhiMmFiOWEgMTAwNjQ0CitpbmRleCA4ODc1YmJmLi5jYTI4MGYzIDEwMDY0NAogLS0tIGEvQ01ha2VMaXN0cy50eHQKICsrKyBiL0NNYWtlTGlzdHMudHh0CiBAQCAtMjksNyArMjksOCBAQCBmaW5kX3BhY2thZ2UgKFBrZ0NvbmZpZyBSRVFVSVJFRCkKICBTRVQgKENNQUtFX01PRFVMRV9QQVRIICR7Q01BS0VfU09VUkNFX0RJUn0vY21ha2UvbW9kdWxlcykKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhHTElCIGdpby11bml4LTIuMD49Mi40NC4wIFJFUVVJUkVEKQorIFBLR19DSEVDS19NT0RVTEVTKEdMSUIgZ2lvLXVuaXgtMi4wPj0yLjQ2LjAgUkVRVUlSRUQpCiAgRklORF9MSUJSQVJZIChSUE1EQl9MSUJSQVJZIE5BTUVTIHJwbWRiKQogLWZpbmRfcGFja2FnZSAoTGliU29sdiAwLjYuMjEgUkVRVUlSRUQgQ09NUE9ORU5UUyBleHQpCiArUEtHX0NIRUNLX01PRFVMRVMgKExJQlNPTFYgUkVRVUlSRUQgbGlic29sdikKQEAgLTI2LDUgKzI3LDUgQEAKICAgICAgcGtnX2NoZWNrX21vZHVsZXMgKFJIU00gUkVRVUlSRUQgbGlicmhzbSkKICAgICAgaW5jbHVkZV9kaXJlY3RvcmllcyAoJHtSSFNNX0lOQ0xVREVfRElSU30pCiAtLSAKLTIuMTEuMAorMi4xNC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjExLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC4xMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYzFkNmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC4xMS4xLmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBwcm92aWRpbmcgc2ltcGxpZmllZCBDIGFuZCBQeXRob24gQVBJIHRvIGxpYnNvbHYiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJkbmYgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kR3RrRG9jLmNtYWtlLWRyb3AtdGhlLXJlcXVpcmVtZW50LWZvci1HVEtET0NfU0NBLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUHJlZml4LXN5c3Jvb3QtcGF0aC10by1pbnRyb3NwZWN0aW9uLXRvb2xzLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1TZXQtdGhlLWxpYnJhcnktaW5zdGFsbGF0aW9uLWRpcmVjdG9yeS1jb3JyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDUkVWID0gIjYwZjk3OWJkOGRiNjUxMjI5YzU1OWMxNDEyZjFlYjg4MDI1NzEyN2QiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgbGlic29sdiBsaWJjaGVjayBsaWJyZXBvIHJwbSBndGstZG9jIgorCitpbmhlcml0IGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGNtYWtlIHBrZ2NvbmZpZyBkaXN0dXRpbHMzLWJhc2UKKworRVhUUkFfT0VDTUFLRSA9ICIgLURQWVRIT05fSU5TVEFMTF9ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLURXSVRIX01BTj1PRkYgLURQWVRIT05fREVTSVJFRD0zIFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctRFdJVEhfR0lSPU9OJywgJy1EV0lUSF9HSVI9T0ZGJywgZCl9IFwKKyAgICAgICAgICAgICAgICAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1EV0lUSF9HSVI9T0ZGIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtRFdJVEhfR0lSPU9GRiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC45LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC45LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxZDkzNDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mXzAuOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IHByb3ZpZGluZyBzaW1wbGlmaWVkIEMgYW5kIFB5dGhvbiBBUEkgdG8gbGlic29sdiIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHdGtEb2MuY21ha2UtZHJvcC10aGUtcmVxdWlyZW1lbnQtZm9yLUdUS0RPQ19TQ0EucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1QcmVmaXgtc3lzcm9vdC1wYXRoLXRvLWludHJvc3BlY3Rpb24tdG9vbHMtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLVNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LWNvcnJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LVNldC1saWJzb2x2LXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctY21ha2Utcy1vd24tbW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNSRVYgPSAiMWIxOTk1MGU4MmQ4OGVlYzI4ZDAxYjRlN2MxZGE3MTJjOTQxMjAxZCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBsaWJzb2x2IGxpYmNoZWNrIGxpYnJlcG8gcnBtIGd0ay1kb2MiCi0KLWluaGVyaXQgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24gY21ha2UgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZQotCi1FWFRSQV9PRUNNQUtFID0gIiAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFdJVEhfTUFOPU9GRiAtRFBZVEhPTl9ERVNJUkVEPTMgXAotICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1EV0lUSF9HSVI9T04nLCAnLURXSVRIX0dJUj1PRkYnLCBkKX0gXAotICAgICAgICAgICAgICAgICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURXSVRIX0dJUj1PRkYiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1EV0lUSF9HSVI9T0ZGIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDEtQ29ycmVjdGx5LXNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4YTU4ZjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDM2ZDg3OTE5MjIzZGI5YjA1NDg2MmFkMzhjZGRhOGQ5MjIyYTJiYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzAgRGVjIDIwMTYgMTg6MDQ6MzUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIENvcnJlY3RseSBzZXQgdGhlIGxpYnJhcnkgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYnJlcG8vcHVsbC8xMTBdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGxpYnJlcG8vQ01ha2VMaXN0cy50eHQgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYnJlcG8vQ01ha2VMaXN0cy50eHQgYi9saWJyZXBvL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAyZmU3NmQ4Li41MDI2ZGVmIDEwMDY0NAotLS0tIGEvbGlicmVwby9DTWFrZUxpc3RzLnR4dAotKysrIGIvbGlicmVwby9DTWFrZUxpc3RzLnR4dAotQEAgLTYwLDcgKzYwLDggQEAgQ09ORklHVVJFX0ZJTEUoInZlcnNpb24uaC5pbiIgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS92ZXJzaW9uLmgiIEBPTkxZKQotIElGIChDTUFLRV9TSVpFT0ZfVk9JRF9QIE1BVENIRVMgIjgiKQotICAgU0VUIChMSUJfU1VGRklYICI2NCIpCi0gRU5ESUYgKENNQUtFX1NJWkVPRl9WT0lEX1AgTUFUQ0hFUyAiOCIpCi0tU0VUIChMSUJfSU5TVEFMTF9ESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2xpYiR7TElCX1NVRkZJWH0iKQotKyNTRVQgKExJQl9JTlNUQUxMX0RJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vbGliJHtMSUJfU1VGRklYfSIpCi0rU0VUIChMSUJfSU5TVEFMTF9ESVIgIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9IikKLSAKLSBJTlNUQUxMKEZJTEVTICR7bGlicmVwb19IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlL2xpYnJlcG8pCi0gSU5TVEFMTChUQVJHRVRTIGxpYnJlcG8gTElCUkFSWSBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxMX0RJUn0pCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAyLURvLW5vdC10cnktdG8tb2J0YWluLVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAyLURvLW5vdC10cnktdG8tb2J0YWluLVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXAucGF0Y2gKaW5kZXggNzEzOGRmYy4uZDY5ZGViNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMi1Eby1ub3QtdHJ5LXRvLW9idGFpbi1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1wLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDItRG8tbm90LXRyeS10by1vYnRhaW4tUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcC5wYXRjaApAQCAtMSw0MSArMSw2MiBAQAotRnJvbSAxNTcwYWQzM2RkN2U1ZDgzZjNlZTgwYmQxMDRiMTE0NzA5YWMxZTM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1YjY4NDlkOWQ3ZTAzMGMzYTUyMWI1MjQ1ZDg2Zjg1M2IwMjcxYTYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDMwIERlYyAyMDE2IDE4OjA1OjM2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSBEbyBub3QgdHJ5IHRvIG9idGFpbiBQWVRIT05fSU5TVEFMTF9ESVIgYnkgcnVubmluZworU3ViamVjdDogW1BBVENIIDEvMl0gRG8gbm90IHRyeSB0byBvYnRhaW4gUFlUSE9OX0lOU1RBTExfRElSIGJ5IHJ1bm5pbmcKICBweXRob24uCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KLSBsaWJyZXBvL3B5dGhvbi9weXRob24yL0NNYWtlTGlzdHMudHh0IHwgMiArLQotIGxpYnJlcG8vcHl0aG9uL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgbGlicmVwby9weXRob24vcHl0aG9uMi9DTWFrZUxpc3RzLnR4dCB8IDEyICsrKysrKy0tLS0tLQorIGxpYnJlcG8vcHl0aG9uL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQgfCAxMiArKysrKystLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGlicmVwby9weXRob24vcHl0aG9uMi9DTWFrZUxpc3RzLnR4dCBiL2xpYnJlcG8vcHl0aG9uL3B5dGhvbjIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDM2MTVlMTcuLmNmZmE5OWYgMTAwNjQ0CitpbmRleCA1ZmZiZDYyLi45MGQzYzIyIDEwMDY0NAogLS0tIGEvbGlicmVwby9weXRob24vcHl0aG9uMi9DTWFrZUxpc3RzLnR4dAogKysrIGIvbGlicmVwby9weXRob24vcHl0aG9uMi9DTWFrZUxpc3RzLnR4dAotQEAgLTEsNiArMSw2IEBACitAQCAtMSwxMSArMSwxMSBAQAogIEZJTkRfUEFDS0FHRSAoUHl0aG9uTGlicyAyICkKICBGSU5EX1BBQ0tBR0UgKFB5dGhvbkludGVycCAyIFJFUVVJUkVEKQotLUVYRUNVVEVfUFJPQ0VTUyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICJmcm9tIHN5cyBpbXBvcnQgc3Rkb3V0OyBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnOyBzdGRvdXQud3JpdGUoc3lzY29uZmlnLmdldF9weXRob25fbGliKFRydWUpKSIgT1VUUFVUX1ZBUklBQkxFIFBZVEhPTl9JTlNUQUxMX0RJUikKLSsjRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQorLUVYRUNVVEVfUFJPQ0VTUyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICIKKy1mcm9tIHN5cyBpbXBvcnQgc3Rkb3V0CistZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZworLXBhdGg9c3lzY29uZmlnLmdldF9weXRob25fbGliKFRydWUsIHByZWZpeD0nJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0nKQorLXN0ZG91dC53cml0ZShwYXRoKSIKKy1PVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQorKyNFWEVDVVRFX1BST0NFU1MoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiCisrI2Zyb20gc3lzIGltcG9ydCBzdGRvdXQKKysjZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZworKyNwYXRoPXN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlLCBwcmVmaXg9JyR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9JykKKysjc3Rkb3V0LndyaXRlKHBhdGgpIgorKyNPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQogIElOQ0xVREVfRElSRUNUT1JJRVMgKCR7UFlUSE9OX0lOQ0xVREVfUEFUSH0pCiAgCiAgTUVTU0FHRShTVEFUVVMgIlB5dGhvbiBpbnN0YWxsIGRpciBpcyAke1BZVEhPTl9JTlNUQUxMX0RJUn0iKQogZGlmZiAtLWdpdCBhL2xpYnJlcG8vcHl0aG9uL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQgYi9saWJyZXBvL3B5dGhvbi9weXRob24zL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBkZmVjYWM5Li4zOGJjYzcyIDEwMDY0NAoraW5kZXggNDc1NTlmNy4uYjM5YWRjMiAxMDA2NDQKIC0tLSBhL2xpYnJlcG8vcHl0aG9uL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQKICsrKyBiL2xpYnJlcG8vcHl0aG9uL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQKLUBAIC0xMCw3ICsxMCw3IEBAIG1lc3NhZ2UoIi0tLSAke1BZVEhPTl9JTkNMVURFX0RJUn0iKQorQEAgLTEwLDEyICsxMCwxMiBAQCBtZXNzYWdlKCItLS0gJHtQWVRIT05fSU5DTFVERV9ESVJ9IikKICAKICBGSU5EX1BBQ0tBR0UoUHl0aG9uTGlicyAzLjApCiAgRklORF9QQUNLQUdFKFB5dGhvbkludGVycCAzLjAgUkVRVUlSRUQpCi0tRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQotKyNFWEVDVVRFX1BST0NFU1MoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCistRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgIgorLWZyb20gc3lzIGltcG9ydCBzdGRvdXQKKy1mcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCistcGF0aD1zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSwgcHJlZml4PScke0NNQUtFX0lOU1RBTExfUFJFRklYfScpCistc3Rkb3V0LndyaXRlKHBhdGgpIgorLU9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCisrI0VYRUNVVEVfUFJPQ0VTUyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICIKKysjZnJvbSBzeXMgaW1wb3J0IHN0ZG91dAorKyNmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCisrI3BhdGg9c3lzY29uZmlnLmdldF9weXRob25fbGliKFRydWUsIHByZWZpeD0nJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0nKQorKyNzdGRvdXQud3JpdGUocGF0aCkiCisrI09VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCiAgSU5DTFVERV9ESVJFQ1RPUklFUyAoJHtQWVRIT05fSU5DTFVERV9QQVRIfSkKICAKICBNRVNTQUdFKFNUQVRVUyAiUHl0aG9uMyBpbnN0YWxsIGRpciBpcyAke1BZVEhPTl9JTlNUQUxMX0RJUn0iKQogLS0gCi0yLjExLjAKKzIuMTQuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAzLXRlc3RzLWZpeC1hLXJhY2Utd2hlbi1kZWxldGluZy10ZW1wb3JhcnktZGlyZWN0b3JpZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAzLXRlc3RzLWZpeC1hLXJhY2Utd2hlbi1kZWxldGluZy10ZW1wb3JhcnktZGlyZWN0b3JpZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5Y2E2MGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMy10ZXN0cy1maXgtYS1yYWNlLXdoZW4tZGVsZXRpbmctdGVtcG9yYXJ5LWRpcmVjdG9yaWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSBiMWE1YzkyZGJkMWQxMWYxYWZkYzA5NGZjY2VhNjRkZTMzNGQyNzgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMwIERlYyAyMDE2IDE4OjA2OjI0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSB0ZXN0czogZml4IGEgcmFjZSB3aGVuIGRlbGV0aW5nIHRlbXBvcmFyeSBkaXJlY3RvcmllcwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYnJlcG8vcHVsbC8xMTBdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIHRlc3RzL3B5dGhvbi90ZXN0cy90ZXN0X3l1bV9yZXBvX2Rvd25sb2FkaW5nLnB5IHwgMiArLQotIHRlc3RzL3B5dGhvbi90ZXN0cy90ZXN0X3l1bV9yZXBvX2xvY2F0aW5nLnB5ICAgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcHl0aG9uL3Rlc3RzL3Rlc3RfeXVtX3JlcG9fZG93bmxvYWRpbmcucHkgYi90ZXN0cy9weXRob24vdGVzdHMvdGVzdF95dW1fcmVwb19kb3dubG9hZGluZy5weQotaW5kZXggYWQ1OTdkYy4uNGEzMjUxOSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3B5dGhvbi90ZXN0cy90ZXN0X3l1bV9yZXBvX2Rvd25sb2FkaW5nLnB5Ci0rKysgYi90ZXN0cy9weXRob24vdGVzdHMvdGVzdF95dW1fcmVwb19kb3dubG9hZGluZy5weQotQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgVGVzdENhc2VZdW1SZXBvRG93bmxvYWRpbmcoVGVzdENhc2VXaXRoRmxhc2spOgotICAgICAgICAgICAgIG9zLmVudmlyb24ucG9wKCdHTlVQR0hPTUUnKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBvcy5lbnZpcm9uWydHTlVQR0hPTUUnXSA9IHNlbGYuX2dudXBnaG9tZQotLSAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnRtcGRpcikKLSsgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi50bXBkaXIsIFRydWUpCi0gCi0gICAgIGRlZiB0ZXN0X2Rvd25sb2FkX3JlcG9fMDEoc2VsZik6Ci0gICAgICAgICBoID0gbGlicmVwby5IYW5kbGUoKQotZGlmZiAtLWdpdCBhL3Rlc3RzL3B5dGhvbi90ZXN0cy90ZXN0X3l1bV9yZXBvX2xvY2F0aW5nLnB5IGIvdGVzdHMvcHl0aG9uL3Rlc3RzL3Rlc3RfeXVtX3JlcG9fbG9jYXRpbmcucHkKLWluZGV4IDhmNGJlYTUuLmRiNDI5NGMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9weXRob24vdGVzdHMvdGVzdF95dW1fcmVwb19sb2NhdGluZy5weQotKysrIGIvdGVzdHMvcHl0aG9uL3Rlc3RzL3Rlc3RfeXVtX3JlcG9fbG9jYXRpbmcucHkKLUBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFRlc3RDYXNlWXVtUmVwb0xvY2F0aW5nKFRlc3RDYXNlKToKLSAgICAgICAgICAgICBvcy5lbnZpcm9uLnBvcCgnR05VUEdIT01FJykKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgb3MuZW52aXJvblsnR05VUEdIT01FJ10gPSBzZWxmLl9nbnVwZ2hvbWUKLS0gICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi50bXBkaXIpCi0rICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYudG1wZGlyLCBUcnVlKQotIAotICAgICBkZWYgdGVzdF9yZWFkX21pcnJvcmxpc3Qoc2VsZik6Ci0gICAgICAgICBoID0gbGlicmVwby5IYW5kbGUoKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwNS1GaXgtdHlwby1jb3JyZWN0LUxST19TU0xWRVJJRllIT1NULXdpdGgtQ1VSTE9QVF9TU0xfLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwNS1GaXgtdHlwby1jb3JyZWN0LUxST19TU0xWRVJJRllIT1NULXdpdGgtQ1VSTE9QVF9TU0xfLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGM3ZDFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDUtRml4LXR5cG8tY29ycmVjdC1MUk9fU1NMVkVSSUZZSE9TVC13aXRoLUNVUkxPUFRfU1NMXy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gYTRiYmJjY2NlNmVkYzFhMmQxYmQ0NzU1MDZlMjk3NWZkNzY5NmM4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgOCBKdW4gMjAxNyAxNjozMTozMCArMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggdHlwbzogY29ycmVjdCBMUk9fU1NMVkVSSUZZSE9TVCB3aXRoCi0gQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVAotCi1JbiBjb21taXQgNTFkMzJjNmNkODhiYTAxMzljMzI3OTMxODNmZDZhMjM2YzFlZjQ1NgotLS0tCi1BdXRob3I6IFRvbWFzIE1sY29jaCA8dG1sY29jaEByZWRoYXQuY29tPgotRGF0ZTogICBNb24gTWF5IDUgMTQ6MzE6MzUgMjAxNCArMDIwMAotCi0gICAgQWRkIExST19TU0xWRVJJRllQRUVSIGFuZCBMUk9fU1NMVkVSSUZZSE9TVCBvcHRpb25zIChSaEJ1ZzogMTA5MzAxNCkKLS0tLQotCi1JdCBpbmNvcnJlY3RseSBzZXRvcHQgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiBmb3IgTFJPX1NTTFZFUklGWUhPU1QuCi1Vc2UgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCB0byBjb3JyZWN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJyZXBvL2hhbmRsZS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGlicmVwby9oYW5kbGUuYyBiL2xpYnJlcG8vaGFuZGxlLmMKLWluZGV4IGNjZWE3OWIuLmZmMzlkYjQgMTAwNjQ0Ci0tLS0gYS9saWJyZXBvL2hhbmRsZS5jCi0rKysgYi9saWJyZXBvL2hhbmRsZS5jCi1AQCAtNjI5LDcgKzYyOSw3IEBAIGxyX2hhbmRsZV9zZXRvcHQoTHJIYW5kbGUgKmhhbmRsZSwKLSAKLSAgICAgY2FzZSBMUk9fU1NMVkVSSUZZSE9TVDoKLSAgICAgICAgIGhhbmRsZS0+c3NsdmVyaWZ5aG9zdCA9IHZhX2FyZyhhcmcsIGxvbmcpID8gMiA6IDA7Ci0tICAgICAgICBjX3JjID0gY3VybF9lYXN5X3NldG9wdChjX2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGhhbmRsZS0+c3NsdmVyaWZ5aG9zdCk7Ci0rICAgICAgICBjX3JjID0gY3VybF9lYXN5X3NldG9wdChjX2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIGhhbmRsZS0+c3NsdmVyaWZ5aG9zdCk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBMUk9fU1NMQ0xJRU5UQ0VSVDoKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fMS44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTY5ODg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fMS44LjEuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICIgQSBsaWJyYXJ5IHByb3ZpZGluZyBDIGFuZCBQeXRob24gKGxpYmNVUkwgbGlrZSkgQVBJIGZvciBkb3dubG9hZGluZyBsaW51eCByZXBvc2l0b3J5IG1ldGFkYXRhIGFuZCBwYWNrYWdlcy4iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJyZXBvLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8tb2J0YWluLVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtZ3BnbWUtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1ub3Qtd2l0aC1jbWFrZS1tLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiN2I5YjdiZjM4OGYzZjA1OTUyOWM2ZjUwYzQwYjMwOTE5ZmVmMzBmOSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJjdXJsIGV4cGF0IGdsaWItMi4wIG9wZW5zc2wgYXR0ciBncGdtZSIKKworaW5oZXJpdCBjbWFrZSBkaXN0dXRpbHMzLWJhc2UgcGtnY29uZmlnCisKK0VYVFJBX09FQ01BS0UgPSAiIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyAtREVOQUJMRV9URVNUUz1PRkYgLURFTkFCTEVfRE9DUz1PRkYiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjM4YjE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiIEEgbGlicmFyeSBwcm92aWRpbmcgQyBhbmQgUHl0aG9uIChsaWJjVVJMIGxpa2UpIEFQSSBmb3IgZG93bmxvYWRpbmcgbGludXggcmVwb3NpdG9yeSBtZXRhZGF0YSBhbmQgcGFja2FnZXMuIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGlicmVwby5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLW9idGFpbi1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtZml4LWEtcmFjZS13aGVuLWRlbGV0aW5nLXRlbXBvcmFyeS1kaXJlY3Rvcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LVNldC1ncGdtZS12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLW5vdC13aXRoLWNtYWtlLW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1GaXgtdHlwby1jb3JyZWN0LUxST19TU0xWRVJJRllIT1NULXdpdGgtQ1VSTE9QVF9TU0xfLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QViA9ICIxLjcuMjArZ2l0JHtTUkNQVn0iCi1TUkNSRVYgPSAiZTExMzdjYmJkYTc4ZmVjYjE5MjE0NjMwMDc5MDY4MGE1YmM4MTFiMSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJjdXJsIGV4cGF0IGdsaWItMi4wIG9wZW5zc2wgYXR0ciBsaWJjaGVjayBncGdtZSIKLQotaW5oZXJpdCBjbWFrZSBkaXN0dXRpbHMzLWJhc2UgcGtnY29uZmlnCi0KLUVYVFJBX09FQ01BS0UgPSAiIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLURpc2FibGUtZ2VuZXJhdGluZy1hLW5hdGl2ZS1sbHZtLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtRGlzYWJsZS1nZW5lcmF0aW5nLWEtbmF0aXZlLWxsdm0tY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MDllNGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLURpc2FibGUtZ2VuZXJhdGluZy1hLW5hdGl2ZS1sbHZtLWNvbmZpZy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDdmNzc0M2NlMjMzZmNkNzM1ZWM1ODBjNzUyNzA0MTM0OTM2NThhYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxOSBBcHIgMjAxOCAxODowODozMSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIGdlbmVyYXRpbmcgYSBuYXRpdmUgbGx2bS1jb25maWcKKworT3BlbkVtYmVkZGVkIGFscmVhZHkgYnVpbGRzIHRoaXMgYXMgcGFydCBvZiBsbHZtLW5hdGl2ZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdG9vbHMvbGx2bS1jb25maWcvQ01ha2VMaXN0cy50eHQgfCAxNiAtLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdG9vbHMvbGx2bS1jb25maWcvQ01ha2VMaXN0cy50eHQgYi90b29scy9sbHZtLWNvbmZpZy9DTWFrZUxpc3RzLnR4dAoraW5kZXggMjVmOTljZWM5NzguLmM0NWU5YjY0MmE4IDEwMDY0NAorLS0tIGEvdG9vbHMvbGx2bS1jb25maWcvQ01ha2VMaXN0cy50eHQKKysrKyBiL3Rvb2xzL2xsdm0tY29uZmlnL0NNYWtlTGlzdHMudHh0CitAQCAtNjMsMTkgKzYzLDMgQEAgZW5kaWYoKQorIAorICMgQWRkIHRoZSBkZXBlbmRlbmN5IG9uIHRoZSBnZW5lcmF0aW9uIHN0ZXAuCisgYWRkX2ZpbGVfZGVwZW5kZW5jaWVzKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9sbHZtLWNvbmZpZy5jcHAgJHtCVUlMRFZBUklBQkxFU19PQkpQQVRIfSkKKy0KKy1pZihDTUFLRV9DUk9TU0NPTVBJTElORykKKy0gIHNldCgke3Byb2plY3R9X0xMVk1fQ09ORklHX0VYRSAiJHtMTFZNX05BVElWRV9CVUlMRH0vYmluL2xsdm0tY29uZmlnIikKKy0gIHNldCgke3Byb2plY3R9X0xMVk1fQ09ORklHX0VYRSAkeyR7cHJvamVjdH1fTExWTV9DT05GSUdfRVhFfSBQQVJFTlRfU0NPUEUpCistCistICBhZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICIkeyR7cHJvamVjdH1fTExWTV9DT05GSUdfRVhFfSIKKy0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC0tYnVpbGQgLiAtLXRhcmdldCBsbHZtLWNvbmZpZyAtLWNvbmZpZyAkPENPTkZJR1VSQVRJT04+CistICAgIERFUEVORFMgJHtMTFZNX05BVElWRV9CVUlMRH0vQ01ha2VDYWNoZS50eHQKKy0gICAgV09SS0lOR19ESVJFQ1RPUlkgJHtMTFZNX05BVElWRV9CVUlMRH0KKy0gICAgQ09NTUVOVCAiQnVpbGRpbmcgbmF0aXZlIGxsdm0tY29uZmlnLi4uIgorLSAgICBVU0VTX1RFUk1JTkFMKQorLSAgYWRkX2N1c3RvbV90YXJnZXQoJHtwcm9qZWN0fU5hdGl2ZUxMVk1Db25maWcgREVQRU5EUyAkeyR7cHJvamVjdH1fTExWTV9DT05GSUdfRVhFfSkKKy0gIGFkZF9kZXBlbmRlbmNpZXMoJHtwcm9qZWN0fU5hdGl2ZUxMVk1Db25maWcgQ09ORklHVVJFX0xMVk1fTkFUSVZFKQorLQorLSAgYWRkX2RlcGVuZGVuY2llcyhsbHZtLWNvbmZpZyAke3Byb2plY3R9TmF0aXZlTExWTUNvbmZpZykKKy1lbmRpZihDTUFLRV9DUk9TU0NPTVBJTElORykKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtbGx2bS1UYXJnZXRMaWJyYXJ5SW5mby1VbmRlZmluZS1saWJjLWZ1bmN0aW9ucy1pZi10aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtbGx2bS1UYXJnZXRMaWJyYXJ5SW5mby1VbmRlZmluZS1saWJjLWZ1bmN0aW9ucy1pZi10aC5wYXRjaAppbmRleCBlMjUxNzk5Li4yMDk3NjRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMS1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyODI5M2U0OGNmMWE1MjAwNGM2YTc4ZGU0NDg3MTg0NDFmOWUwNWY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5NjU1OGM0ZjI1ZDUxMzI5MzYwMTRmNmYyZDYyNTJjZmRmZGY0NzhhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMjEgTWF5IDIwMTYgMDA6MzM6MjAgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAxLzJdIGxsdm06IFRhcmdldExpYnJhcnlJbmZvOiBVbmRlZmluZSBsaWJjIGZ1bmN0aW9ucyBpZiB0aGV5CkBAIC0xNSwxMCArMTUsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmRlZiBiL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5kZWYKLWluZGV4IDljYmU5MTdjMTQ2Li5hZmY4NDE5Y2Y1NCAxMDA2NDQKK2luZGV4IGE0NjFlZDgxM2I5Li5mOWZkOWZhZWVlMCAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5kZWYKICsrKyBiL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5kZWYKLUBAIC02NTYsNiArNjU2LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZtb2RsIikKK0BAIC02NjUsNiArNjY1LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZtb2RsIikKICBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZm9wZW4pCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZvcGVuIikKICAvLy8gRklMRSAqZm9wZW42NChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqb3BlbnR5cGUpCkBAIC0yOCw3ICsyOCw3IEBACiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZvcGVuNjQpCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZvcGVuNjQiKQogIC8vLyBpbnQgZnByaW50ZihGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKLUBAIC02OTEsNiArNjk0LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZWVrIikKK0BAIC03MDAsNiArNzAzLDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZWVrIikKICAvLy8gaW50IGZzZWVrbyhGSUxFICpzdHJlYW0sIG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSk7CiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZzZWVrbykKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnNlZWtvIikKQEAgLTM4LDcgKzM4LDcgQEAKICAvLy8gaW50IGZzZWVrbzY0KEZJTEUgKnN0cmVhbSwgb2ZmNjRfdCBvZmZzZXQsIGludCB3aGVuY2UpCiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZzZWVrbzY0KQogIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmc2Vla282NCIpCi1AQCAtNzAxLDYgKzcwNyw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmc2V0cG9zIikKK0BAIC03MTAsNiArNzE2LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZXRwb3MiKQogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChmc3RhdCkKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnN0YXQiKQogIC8vLyBpbnQgZnN0YXQ2NChpbnQgZmlsZWRlcywgc3RydWN0IHN0YXQ2NCAqYnVmKQpAQCAtNDgsNyArNDgsNyBAQAogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChmc3RhdDY0KQogIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmc3RhdDY0IikKICAvLy8gaW50IGZzdGF0dmZzKGludCBmaWxkZXMsIHN0cnVjdCBzdGF0dmZzICpidWYpOwotQEAgLTcxNiw2ICs3MjUsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnRlbGwiKQorQEAgLTcyNSw2ICs3MzQsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnRlbGwiKQogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChmdGVsbG8pCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZ0ZWxsbyIpCiAgLy8vIG9mZjY0X3QgZnRlbGxvNjQoRklMRSAqc3RyZWFtKQpAQCAtNTgsNyArNTgsNyBAQAogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChmdGVsbG82NCkKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnRlbGxvNjQiKQogIC8vLyBpbnQgZnRyeWxvY2tmaWxlKEZJTEUgKmZpbGUpOwotQEAgLTgzNiw2ICs4NDgsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgibG9nbCIpCitAQCAtODQ1LDYgKzg1Nyw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJsb2dsIikKICBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwobHN0YXQpCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImxzdGF0IikKICAvLy8gaW50IGxzdGF0NjQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQ2NCAqYnVmKTsKQEAgLTY4LDcgKzY4LDcgQEAKICBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwobHN0YXQ2NCkKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgibHN0YXQ2NCIpCiAgLy8vIHZvaWQgKm1hbGxvYyhzaXplX3Qgc2l6ZSk7Ci1AQCAtMTA1NSw2ICsxMDcwLDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInNzY2FuZiIpCitAQCAtMTA2NCw2ICsxMDc5LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInNzY2FuZiIpCiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKHN0YXQpCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInN0YXQiKQogIC8vLyBpbnQgc3RhdDY0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0NjQgKmJ1Zik7CkBAIC03OCw3ICs3OCw3IEBACiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKHN0YXQ2NCkKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgic3RhdDY0IikKICAvLy8gaW50IHN0YXR2ZnMoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXR2ZnMgKmJ1Zik7Ci1AQCAtMTE4NCw2ICsxMjAyLDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInRpbWVzIikKK0BAIC0xMTkzLDYgKzEyMTEsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgidGltZXMiKQogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTCh0bXBmaWxlKQogIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJ0bXBmaWxlIikKICAvLy8gRklMRSAqdG1wZmlsZTY0KHZvaWQpCkBAIC04OSw1ICs4OSw1IEBACiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInRtcGZpbGU2NCIpCiAgLy8vIGludCB0b2FzY2lpKGludCBjKTsKIC0tIAotMi4xMy4xCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDItbGx2bS1hbGxvdy1lbnYtb3ZlcnJpZGUtb2YtZXhlLXBhdGgucGF0Y2gKaW5kZXggODMyYmQ3Mi4uMjFkMmY4MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAyLWxsdm0tYWxsb3ctZW52LW92ZXJyaWRlLW9mLWV4ZS1wYXRoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBkNzc2NDg3YmFjMTc2NTA3MDQ2MTQyNDhkMTlkMWU2YjM1Nzc1MDAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyZjhlYTc2N2FmZGFhNDQwYzYzNjgwNDA2MzBlMWIzZWE2YTA5NzdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEtlbGx5IDxta2VsbHlAeGV2by5jb20+CiBEYXRlOiBGcmksIDE5IE1heSAyMDE3IDAwOjIyOjU3IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMi8yXSBsbHZtOiBhbGxvdyBlbnYgb3ZlcnJpZGUgb2YgZXhlIHBhdGgKQEAgLTM1LDUgKzM1LDUgQEAKICAgIC8vIGFsbG93IHRha2luZyB0aGUgYWRkcmVzcyBvZiA6Om1haW4gaG93ZXZlci4KICAgIHZvaWQgKlAgPSAodm9pZCAqKShpbnRwdHJfdClHZXRFeGVjdXRhYmxlUGF0aDsKIC0tIAotMi4xMy4xCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCmluZGV4IGYwNmZhNDkuLmNiM2JiYTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKQEAgLTgsNyArOCw3IEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuVFhUO21kNT1lODI1ZTAxN2VkYzM1Y2ZkNThlMjYxMTZlNTI1MTc3MSIKIAotREVQRU5EUyA9ICJsaWJmZmkgbGlieG1sMi1uYXRpdmUgemxpYiBuaW5qYS1uYXRpdmUgbGx2bS1uYXRpdmUiCitERVBFTkRTID0gImxpYmZmaSBsaWJ4bWwyIHpsaWIgbmluamEtbmF0aXZlIGxsdm0tbmF0aXZlIgogCiBSREVQRU5EU18ke1BOfV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBuY3Vyc2VzLXRlcm1pbmZvIgogCkBAIC0xOSwxNCArMTksMTYgQEAKIExMVk1fUkVMRUFTRSA9ICIke1BWfSIKIExMVk1fRElSID0gImxsdm0ke0xMVk1fUkVMRUFTRX0iCiAKLVNSQ1JFViA9ICI5YTVjMzMzMzg4Y2JiNTRhMGNlM2E2N2M0ZjUzOWY1ZTU5MGEwODliIgotUFYgPSAiNS4wIgorU1JDUkVWID0gIjA4OWQ0YzBjNDkwNjg3ZGI2Yzc1ZjFkMDc0ZTk5YzRkNDI5MzZhNTAiCitQViA9ICI2LjAiCitCUkFOQ0ggPSAicmVsZWFzZV82MCIKIFBBVENIX1ZFUlNJT04gPSAiMCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9sbHZtLW1pcnJvci9sbHZtLmdpdDticmFuY2g9cmVsZWFzZV81MDtwcm90b2NvbD1odHRwIFwKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9sbHZtLW1pcnJvci9sbHZtLmdpdDticmFuY2g9JHtCUkFOQ0h9O3Byb3RvY29sPWh0dHAgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItbGx2bS1hbGxvdy1lbnYtb3ZlcnJpZGUtb2YtZXhlLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWdlbmVyYXRpbmctYS1uYXRpdmUtbGx2bS1jb25maWcucGF0Y2ggXAogICAgICAgICAgICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogTExWTV9JTlNUQUxMX0RJUiA9ICIke1dPUktESVJ9L2xsdm0taW5zdGFsbCIKQEAgLTg0LDE1ICs4NiwxNSBAQAogfQogCiBkb19jb21waWxlKCkgewotCU5JTkpBX1NUQVRVUz0iWyVwXSAiIG5pbmphIC12ICR7UEFSQUxMRUxfTUFLRX0KKwluaW5qYSAtdiAke1BBUkFMTEVMX01BS0V9CiB9CiAKIGRvX2NvbXBpbGVfY2xhc3MtbmF0aXZlKCkgewotCU5JTkpBX1NUQVRVUz0iWyVwXSAiIG5pbmphIC12ICR7UEFSQUxMRUxfTUFLRX0gbGx2bS1jb25maWcgbGx2bS10YmxnZW4KKwluaW5qYSAtdiAke1BBUkFMTEVMX01BS0V9IGxsdm0tY29uZmlnIGxsdm0tdGJsZ2VuCiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0JTklOSkFfU1RBVFVTPSJbJXBdICIgREVTVERJUj0ke0xMVk1fSU5TVEFMTF9ESVJ9IG5pbmphIC12IGluc3RhbGwKKwlERVNURElSPSR7TExWTV9JTlNUQUxMX0RJUn0gbmluamEgLXYgaW5zdGFsbAogCWluc3RhbGwgLUQgLW0gMDc1NSAke0J9L2Jpbi9sbHZtLWNvbmZpZyAke0R9JHtsaWJkaXJ9LyR7TExWTV9ESVJ9L2xsdm0tY29uZmlnCiAKIAlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vJHtMTFZNX0RJUn0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQtMS40LjE4LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQtMS40LjE4LmluYwppbmRleCBkN2M4NjQ4Li5lZThiZWU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200LTEuNC4xOC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC0xLjQuMTguaW5jCkBAIC0xLDIyICsxLDI5IEBACi1yZXF1aXJlIG00LmluYworU1VNTUFSWSA9ICJUcmFkaXRpb25hbCBVbml4IG1hY3JvIHByb2Nlc3NvciIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbTQvbTQuaHRtbCIKK0RFU0NSSVBUSU9OID0gIkdOVSBtNCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdHJhZGl0aW9uYWwgVW5peCBtYWNybyBwcm9jZXNzb3IuICBJdCBpcyBtb3N0bHkgU1ZSNCBcCitjb21wYXRpYmxlIGFsdGhvdWdoIGl0IGhhcyBzb21lIGV4dGVuc2lvbnMgKGZvciBleGFtcGxlLCBoYW5kbGluZyBtb3JlIHRoYW4gOSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgdG8gbWFjcm9zKS4gXAorR05VIE00IGFsc28gaGFzIGJ1aWx0LWluIGZ1bmN0aW9ucyBmb3IgaW5jbHVkaW5nIGZpbGVzLCBydW5uaW5nIHNoZWxsIGNvbW1hbmRzLCBkb2luZyBhcml0aG1ldGljLCBldGMuIgogCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saWJzaWdzZWd2LXByZWZpeCIKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L200L200LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9hY19jb25maWdfbGlua3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWdldHMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMDc3Nzc5ZGIyODdhZGY0ZTEyYTAzNTAyOTAwMmQyOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYjI2MzM5MjFhNWNkMzhlNDg3OTdiZjU1MjFhZDI1OWJkYzRiOTc5MDc4MDM0YTNiNzkwZDdmZWM1NDkzZmFiIgogCiBMSUNFTlNFID0gIkdQTHYzIgogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKIAkgICAgICAgICAgICBmaWxlOi8vZXhhbXBsZXMvQ09QWUlORzttZDU9NDAzMTU5M2IyMTY2ZDZjNDdjYWUyODJkOTQ0YTdlZGUiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly9hY19jb25maWdfbGlua3MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3JlbW92ZS1nZXRzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0JICAgIgotCiAjIEZpeCAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBsZW4oVE1QRElSKSA9IDQxMAogYWNwYXRocyA9ICItSSAuL200IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYTA3Nzc3OWRiMjg3YWRmNGUxMmEwMzUwMjkwMDJkMjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWIyNjMzOTIxYTVjZDM4ZTQ4Nzk3YmY1NTIxYWQyNTliZGM0Yjk3OTA3ODAzNGEzYjc5MGQ3ZmVjNTQ5M2ZhYiIKK0VYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpYnNpZ3NlZ3YtcHJlZml4IgorCitFWFRSQV9PRU1BS0UgKz0gIidpbmZvZGlyPSR7aW5mb2Rpcn0nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC1uYXRpdmVfMS40LjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC1uYXRpdmVfMS40LjE4LmJiCmluZGV4IDA2ZDhhYTIuLjQwN2FkODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQtbmF0aXZlXzEuNC4xOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200LW5hdGl2ZV8xLjQuMTguYmIKQEAgLTExLDMgKzExLDQgQEAKIAlvZV9ydW5jb25mCiB9CiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0dOVV9NSVJST1J9L200LyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMDI1OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIlRyYWRpdGlvbmFsIFVuaXggbWFjcm8gcHJvY2Vzc29yIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9tNC9tNC5odG1sIgotREVTQ1JJUFRJT04gPSAiR05VIG00IGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSB0cmFkaXRpb25hbCBVbml4IG1hY3JvIHByb2Nlc3Nvci4gIEl0IGlzIG1vc3RseSBTVlI0IFwKLWNvbXBhdGlibGUgYWx0aG91Z2ggaXQgaGFzIHNvbWUgZXh0ZW5zaW9ucyAoZm9yIGV4YW1wbGUsIGhhbmRsaW5nIG1vcmUgdGhhbiA5IHBvc2l0aW9uYWwgcGFyYW1ldGVycyB0byBtYWNyb3MpLiBcCi1HTlUgTTQgYWxzbyBoYXMgYnVpbHQtaW4gZnVuY3Rpb25zIGZvciBpbmNsdWRpbmcgZmlsZXMsIHJ1bm5pbmcgc2hlbGwgY29tbWFuZHMsIGRvaW5nIGFyaXRobWV0aWMsIGV0Yy4iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KLQotRVhUUkFfT0VNQUtFICs9ICInaW5mb2Rpcj0ke2luZm9kaXJ9JyIKLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9tNC9tNC0ke1BWfS50YXIuZ3oiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200L2FjX2NvbmZpZ19saW5rcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQvYWNfY29uZmlnX2xpbmtzLnBhdGNoCmluZGV4IDI3NWMwYjIuLjcxZWRmNTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQvYWNfY29uZmlnX2xpbmtzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQvYWNfY29uZmlnX2xpbmtzLnBhdGNoCkBAIC0xNCwxMCArMTQsMTEgQEAKIAogMjAwOS0xMS0xMAlFc2JlbiBIYWFiZW5kYWwJICAgIDxlaGFAZG9yZWRldmVsb3BtZW50LmRrPgogCi1kaWZmIC11ck4gbTQtMS40LjEzLm9yaWcvY29uZmlndXJlIG00LTEuNC4xMy9jb25maWd1cmUKLS0tLSBtNC0xLjQuMTMub3JpZy9jb25maWd1cmUJMjAwOS0xMS0xMCAxMDo1NDowMC4zMDE3MDcwOTcgKzAxMDAKLSsrKyBtNC0xLjQuMTMvY29uZmlndXJlCTIwMDktMTEtMTAgMTA6NTQ6MTcuMzE0MjA2Mzc5ICswMTAwCi1AQCAtMTQ4NjAsOCArMTQ4NjAsOCBAQAorSW5kZXg6IG00LTEuNC4xOC9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtNC0xLjQuMTgub3JpZy9jb25maWd1cmUKKysrKyBtNC0xLjQuMTgvY29uZmlndXJlCitAQCAtMjQ0MTUsOCArMjQ0MTUsOCBAQCAkYXNfZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9HRVRUSU1FT0ZECiAgICAjIG9ubHksIGl0IGRvZXMgbm90IG1hdHRlciBpZiB3ZSBza2lwIHRoZSBsaW5rIHdpdGggb2xkZXIgYXV0b2NvbmYuCiAgICAjIEF1dG9tYWtlIDEuMTAuMSBhbmQgZWFybGllciB0cnkgdG8gcmVtb3ZlIEdOVW1ha2VmaWxlIGluIG5vbi1WUEFUSAogICAgIyBidWlsZHMsIHNvIHVzZSBhIHNoZWxsIHZhcmlhYmxlIHRvIGJ5cGFzcyB0aGlzLgpAQCAtMjcsNCArMjgsNCBAQAogKyAjIGFjX2NvbmZpZ19saW5rcz0iJGFjX2NvbmZpZ19saW5rcyAkR05VbWFrZWZpbGU6JEdOVW1ha2VmaWxlIgogIAogIAotIAorICAgOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UuaW5jCmluZGV4IDg0OWI3NDIuLmI4OTA1YmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS5pbmMKQEAgLTUsNyArNSwxMCBAQAogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL21ha2UvIgogU0VDVElPTiA9ICJkZXZlbCIKIAotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L21ha2UvbWFrZS0ke1BWfS50YXIuYnoyIgorU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L21ha2UvbWFrZS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB0ZXhpbmZvCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI2ZTRkNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gYzkwYTdkZGE2YzU3MmY3OWI4ZTc4ZGE0NGI2ZWJmODcwNGVkZWY2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+CitEYXRlOiBTdW4sIDI0IFNlcCAyMDE3IDA5OjEyOjU4IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBnbG9iOiBEbyBub3QgYXNzdW1lIGdsaWJjIGdsb2IgaW50ZXJuYWxzLgorCitJdCBoYXMgYmVlbiBwcm9wb3NlZCB0aGF0IGdsaWJjIGdsb2Igc3RhcnQgdXNpbmcgZ2xfbHN0YXQsCit3aGljaCB0aGUgQVBJIGFsbG93cyBpdCB0byBkby4gIEdOVSAnbWFrZScgc2hvdWxkIG5vdCBnZXQgaW4KK3RoZSB3YXkgb2YgdGhpcy4gIFNlZToKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE3LTA5L21zZzAwNDA5Lmh0bWwKKworKiBkaXIuYyAobG9jYWxfbHN0YXQpOiBOZXcgZnVuY3Rpb24sIGxpa2UgbG9jYWxfc3RhdC4KKyhkaXJfc2V0dXBfZ2xvYik6IFVzZSBpdCB0byBpbml0aWFsaXplIGdsX2xzdGF0IHRvbywgYXMgdGhlIEFQSQorcmVxdWlyZXMuCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBkaXIuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kaXIuYyBiL2Rpci5jCitpbmRleCBmMzRiYmY1Li4xMmVlZjMwIDEwMDY0NAorLS0tIGEvZGlyLmMKKysrKyBiL2Rpci5jCitAQCAtMTI5OSwxNSArMTI5OSw0MCBAQCBsb2NhbF9zdGF0IChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqYnVmKQorIH0KKyAjZW5kaWYKKyAKKysvKiBTaW1pbGFybHkgZm9yIGxzdGF0LiAgKi8KKysjaWYgIWRlZmluZWQobHN0YXQpICYmICFkZWZpbmVkKFdJTkRPV1MzMikgfHwgZGVmaW5lZChWTVMpCisrIyBpZm5kZWYgVk1TCisrIyAgaWZuZGVmIEhBVkVfU1lTX1NUQVRfSAorK2ludCBsc3RhdCAoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnNidWYpOworKyMgIGVuZGlmCisrIyBlbHNlCisrICAgIC8qIFdlIGFyZSBkb25lIHdpdGggdGhlIGZha2UgbHN0YXQuICBHbyBiYWNrIHRvIHRoZSByZWFsIGxzdGF0ICovCisrIyAgIGlmZGVmIGxzdGF0CisrIyAgICAgdW5kZWYgbHN0YXQKKysjICAgZW5kaWYKKysjIGVuZGlmCisrIyBkZWZpbmUgbG9jYWxfbHN0YXQgbHN0YXQKKysjZWxpZiBkZWZpbmVkKFdJTkRPV1MzMikKKysvKiBXaW5kb3dzIGRvZXNuJ3Qgc3VwcG9ydCBsc3RhdCgpLiAgKi8KKysjIGRlZmluZSBsb2NhbF9sc3RhdCBsb2NhbF9zdGF0CisrI2Vsc2UKKytzdGF0aWMgaW50CisrbG9jYWxfbHN0YXQgKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpidWYpCisreworKyAgaW50IGU7CisrICBFSU5UUkxPT1AgKGUsIGxzdGF0IChwYXRoLCBidWYpKTsKKysgIHJldHVybiBlOworK30KKysjZW5kaWYKKysKKyB2b2lkCisgZGlyX3NldHVwX2dsb2IgKGdsb2JfdCAqZ2wpCisgeworICAgZ2wtPmdsX29wZW5kaXIgPSBvcGVuX2RpcnN0cmVhbTsKKyAgIGdsLT5nbF9yZWFkZGlyID0gcmVhZF9kaXJzdHJlYW07CisgICBnbC0+Z2xfY2xvc2VkaXIgPSBmcmVlOworKyAgZ2wtPmdsX2xzdGF0ID0gbG9jYWxfbHN0YXQ7CisgICBnbC0+Z2xfc3RhdCA9IGxvY2FsX3N0YXQ7CistICAvKiBXZSBkb24ndCBib3RoZXIgc2V0dGluZyBnbF9sc3RhdCwgc2luY2UgZ2xvYiBuZXZlciBjYWxscyBpdC4KKy0gICAgIFRoZSBzbG90IGlzIG9ubHkgdGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCA0LjQgQlNELiAgKi8KKyB9CisgCisgdm9pZAorLS0gCisyLjE2LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDlhY2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSA5ODU4NzAyZGJkMWUxMzcyNjJjMDY3NjU5MTk5Mzc2NjA4NzlmNjNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KK0RhdGU6IFN1biwgMjQgU2VwIDIwMTcgMDk6MTI6NTggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGdsb2I6IERvIG5vdCBhc3N1bWUgZ2xpYmMgZ2xvYiBpbnRlcm5hbHMuCisKK0l0IGhhcyBiZWVuIHByb3Bvc2VkIHRoYXQgZ2xpYmMgZ2xvYiBzdGFydCB1c2luZyBnbF9sc3RhdCwKK3doaWNoIHRoZSBBUEkgYWxsb3dzIGl0IHRvIGRvLiAgR05VICdtYWtlJyBzaG91bGQgbm90IGdldCBpbgordGhlIHdheSBvZiB0aGlzLiAgU2VlOgoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTctMDkvbXNnMDA0MDkuaHRtbAorCisqIGRpci5jIChsb2NhbF9sc3RhdCk6IE5ldyBmdW5jdGlvbiwgbGlrZSBsb2NhbF9zdGF0LgorKGRpcl9zZXR1cF9nbG9iKTogVXNlIGl0IHRvIGluaXRpYWxpemUgZ2xfbHN0YXQgdG9vLCBhcyB0aGUgQVBJCityZXF1aXJlcy4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgY29uZmlndXJlLmFjIHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDY0ZWM4NzAuLmU4NzkwMWMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTM5OSwxMCArMzk5LDkgQEAgQUNfQ0FDSEVfQ0hFQ0soW2lmIHN5c3RlbSBsaWJjIGhhcyBHTlUgZ2xvYl0sIFttYWtlX2N2X3N5c19nbnVfZ2xvYl0sCisgI2luY2x1ZGUgPGdsb2IuaD4KKyAjaW5jbHVkZSA8Zm5tYXRjaC5oPgorIAorLSNkZWZpbmUgR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTiAxCisgI2lmICFkZWZpbmVkIF9MSUJDICYmIGRlZmluZWQgX19HTlVfTElCUkFSWV9fICYmIF9fR05VX0xJQlJBUllfXyA+IDEKKyAjIGluY2x1ZGUgPGdudS12ZXJzaW9ucy5oPgorLSMgaWYgX0dOVV9HTE9CX0lOVEVSRkFDRV9WRVJTSU9OID09IEdMT0JfSU5URVJGQUNFX1ZFUlNJT04KKytpZiBfR05VX0dMT0JfSU5URVJGQUNFX1ZFUlNJT04gPT0gMSB8fCBfR05VX0dMT0JfSU5URVJGQUNFX1ZFUlNJT04gPT0gMgorICAgIGdudSBnbG9iCisgIyBlbmRpZgorICNlbmRpZl0sCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtTGlua2VyLXJ1bGVzLW1vdmUtY3Jvc3NfYXJncy1pbi1mcm9udC1vZi1vdXRwdXRfYXJncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1MaW5rZXItcnVsZXMtbW92ZS1jcm9zc19hcmdzLWluLWZyb250LW9mLW91dHB1dF9hcmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3Nzc4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtTGlua2VyLXJ1bGVzLW1vdmUtY3Jvc3NfYXJncy1pbi1mcm9udC1vZi1vdXRwdXRfYXJncy5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDQ2NzYyMjRkYmRmZjBmNzEwN2U4Y2JkYmUwZWFiMTljODU1ZjE0NTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTcgTm92IDIwMTcgMTM6MTg6MjggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gTGlua2VyIHJ1bGVzOiBtb3ZlIHtjcm9zc19hcmdzfSBpbiBmcm9udCBvZiB7b3V0cHV0X2FyZ3N9CisKK1RoZSBwcmV2aW91cyBvcmRlciB3YXMgZm91bmQgdG8gYnJlYWsgbGlua2luZyBpbiBzb21lIGNhc2VzCisoZS5nLiB3aGVuIC1uby1waWMgLWZuby1QSUMgd2FzIHByZXNlbnQgaW4ge2Nyb3NzX2FyZ3N9LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbWVzb25idWlsZC9iYWNrZW5kL25pbmphYmFja2VuZC5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvYmFja2VuZC9uaW5qYWJhY2tlbmQucHkgYi9tZXNvbmJ1aWxkL2JhY2tlbmQvbmluamFiYWNrZW5kLnB5CitpbmRleCBiYjI4MWUxLi45NjliNzBlIDEwMDY0NAorLS0tIGEvbWVzb25idWlsZC9iYWNrZW5kL25pbmphYmFja2VuZC5weQorKysrIGIvbWVzb25idWlsZC9iYWNrZW5kL25pbmphYmFja2VuZC5weQorQEAgLTE1MDEsNyArMTUwMSw3IEBAIGludCBkdW1teTsKKyAgcnNwZmlsZV9jb250ZW50ID0gJEFSR1MgIHtvdXRwdXRfYXJnc30gJGluICRMSU5LX0FSR1Mge2Nyb3NzX2FyZ3N9ICRhbGlhc2luZworICcnJworICAgICAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZF90ZW1wbGF0ZSA9ICcgY29tbWFuZCA9IHtleGVjdXRhYmxlfSAkQVJHUyB7b3V0cHV0X2FyZ3N9ICRpbiAkTElOS19BUkdTIHtjcm9zc19hcmdzfSAkYWxpYXNpbmdcbicKKysgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfdGVtcGxhdGUgPSAnIGNvbW1hbmQgPSB7ZXhlY3V0YWJsZX0gJEFSR1Mge2Nyb3NzX2FyZ3N9IHtvdXRwdXRfYXJnc30gJGluICRMSU5LX0FSR1MgJGFsaWFzaW5nXG4nCisgICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kX3RlbXBsYXRlLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGU9JyAnLmpvaW4oY29tcGlsZXIuZ2V0X2xpbmtlcl9leGVsaXN0KCkpLAorICAgICAgICAgICAgICAgICAgICAgY3Jvc3NfYXJncz0nICcuam9pbihjcm9zc19hcmdzKSwKKy0tIAorMi4xNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1ndGtkb2MtZml4LWlzc3Vlcy10aGF0LWFyaXNlLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLWd0a2RvYy1maXgtaXNzdWVzLXRoYXQtYXJpc2Utd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkxMmU5NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1ndGtkb2MtZml4LWlzc3Vlcy10aGF0LWFyaXNlLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoCkBAIC0wLDAgKzEsMTEzIEBACitGcm9tIGM1NjkyY2FjOWM1NTU2NjQyODEzNzdhODJiZjhiMWU0NjkzNGY0MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNCBBdWcgMjAxNyAxNjoxNjo0MSArMDMwMAorU3ViamVjdDogW1BBVENIIDEvM10gZ3RrZG9jOiBmaXggaXNzdWVzIHRoYXQgYXJpc2Ugd2hlbiBjcm9zcy1jb21waWxpbmcKKworU3BlY2lmaWNhbGx5OgorMSkgTWFrZSBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgd3JhcHBlciBmb3IgZXhlY3V0aW5nIGJpbmFyaWVzCisodXN1YWxseSwgc29tZSBraW5kIG9mIHRhcmdldCBoYXJkd2FyZSBlbXVsYXRvciwgc3VjaCBhcyBxZW11KQorMikgRXhwbGljaXRseSBwcm92aWRlIENDIGFuZCBMRCB2aWEgY29tbWFuZCBsaW5lLCBhcyBvdGhlcndpc2UgZ3RrLWRvYyB3aWxsCit0cnkgdG8gZ3Vlc3MgdGhlbSwgaW5jb3JyZWN0bHkuCiszKSBJZiB0aGluZ3MgYnJlYWsgZG93biwgcHJpbnQgdGhlIGZ1bGwgY29tbWFuZCB3aXRoIGFyZ3VtZW50cywKK25vdCBqdXN0IHRoZSBiaW5hcnkgbmFtZS4KKzQpIENvcnJlY3RseSBkZXRlcm1pbmUgdGhlIGNvbXBpbGVyL2xpbmtlciBleGVjdXRhYmxlcyBhbmQgY3Jvc3Mtb3B0aW9ucyB3aGVuIGNyb3NzLWNvbXBpbGluZworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCistLS0KKyBtZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkgICAgICAgIHwgMTggKysrKysrKysrKysrKysrLS0tCisgbWVzb25idWlsZC9zY3JpcHRzL2d0a2RvY2hlbHBlci5weSB8ICA5ICsrKysrKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weSBiL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQoraW5kZXggNTY3NjVhNS4uNGY3ZmUzMCAxMDA2NDQKKy0tLSBhL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQorKysrIGIvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CitAQCAtNzY5LDYgKzc2OSwxMCBAQCBUaGlzIHdpbGwgYmVjb21lIGEgaGFyZCBlcnJvciBpbiB0aGUgZnV0dXJlLicnJykKKyAgICAgICAgICAgICAgICAgJy0tbW9kZT0nICsgbW9kZV0KKyAgICAgICAgIGlmIG5hbWVzcGFjZToKKyAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1uYW1lc3BhY2U9JyArIG5hbWVzcGFjZSkKKysgICAgICAgIGd0a2RvY19leGVfd3JhcHBlciA9IHN0YXRlLmVudmlyb25tZW50LmNyb3NzX2luZm8uY29uZmlnWyJwcm9wZXJ0aWVzIl0uZ2V0KCdndGtkb2NfZXhlX3dyYXBwZXInLCBOb25lKQorKyAgICAgICAgaWYgZ3RrZG9jX2V4ZV93cmFwcGVyIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWd0a2RvYy1leGUtd3JhcHBlcj0nICsgZ3RrZG9jX2V4ZV93cmFwcGVyKQorKworICAgICAgICAgYXJncyArPSBzZWxmLl91bnBhY2tfYXJncygnLS1odG1sYXJncz0nLCAnaHRtbF9hcmdzJywga3dhcmdzKQorICAgICAgICAgYXJncyArPSBzZWxmLl91bnBhY2tfYXJncygnLS1zY2FuYXJncz0nLCAnc2Nhbl9hcmdzJywga3dhcmdzKQorICAgICAgICAgYXJncyArPSBzZWxmLl91bnBhY2tfYXJncygnLS1zY2Fub2Jqc2FyZ3M9JywgJ3NjYW5vYmpzX2FyZ3MnLCBrd2FyZ3MpCitAQCAtNzk2LDE0ICs4MDAsMjIgQEAgVGhpcyB3aWxsIGJlY29tZSBhIGhhcmQgZXJyb3IgaW4gdGhlIGZ1dHVyZS4nJycpCisgICAgICAgICAgICAgICAgIHJhaXNlIE1lc29uRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgJ0dpciBpbmNsdWRlIGRpcnMgc2hvdWxkIGJlIGluY2x1ZGVfZGlyZWN0b3JpZXMoKS4nKQorICAgICAgICAgY2ZsYWdzLnVwZGF0ZShnZXRfaW5jbHVkZV9hcmdzKGluY19kaXJzKSkKKysKKysgICAgICAgIGNyb3NzX2NfYXJncyA9ICIgIi5qb2luKHN0YXRlLmVudmlyb25tZW50LmNyb3NzX2luZm8uY29uZmlnWyJwcm9wZXJ0aWVzIl0uZ2V0KCdjX2FyZ3MnLCAiIikpCisrICAgICAgICBjcm9zc19saW5rX2FyZ3MgPSAiICIuam9pbihzdGF0ZS5lbnZpcm9ubWVudC5jcm9zc19pbmZvLmNvbmZpZ1sicHJvcGVydGllcyJdLmdldCgnY19saW5rX2FyZ3MnLCAiIikpCisrCisgICAgICAgICBpZiBjZmxhZ3M6CistICAgICAgICAgICAgYXJncyArPSBbJy0tY2ZsYWdzPSVzJyAlICcgJy5qb2luKGNmbGFncyldCisrICAgICAgICAgICAgYXJncyArPSBbJy0tY2ZsYWdzPSVzICVzJyAlIChjcm9zc19jX2FyZ3MsJyAnLmpvaW4oY2ZsYWdzKSldCisgICAgICAgICBpZiBsZGZsYWdzOgorLSAgICAgICAgICAgIGFyZ3MgKz0gWyctLWxkZmxhZ3M9JXMnICUgJyAnLmpvaW4obGRmbGFncyldCisrICAgICAgICAgICAgYXJncyArPSBbJy0tbGRmbGFncz0lcyAlcycgJSAoY3Jvc3NfbGlua19hcmdzLCAnICcuam9pbihsZGZsYWdzKSldCisgICAgICAgICBjb21waWxlciA9IHN0YXRlLmVudmlyb25tZW50LmNvcmVkYXRhLmNvbXBpbGVycy5nZXQoJ2MnKQorLSAgICAgICAgaWYgY29tcGlsZXI6CisrICAgICAgICBjcm9zc19jb21waWxlciA9IHN0YXRlLmVudmlyb25tZW50LmNvcmVkYXRhLmNyb3NzX2NvbXBpbGVycy5nZXQoJ2MnKQorKyAgICAgICAgaWYgY29tcGlsZXIgYW5kIG5vdCBzdGF0ZS5lbnZpcm9ubWVudC5pc19jcm9zc19idWlsZCgpOgorICAgICAgICAgICAgIGFyZ3MgKz0gWyctLWNjPSVzJyAlICcgJy5qb2luKGNvbXBpbGVyLmdldF9leGVsaXN0KCkpXQorICAgICAgICAgICAgIGFyZ3MgKz0gWyctLWxkPSVzJyAlICcgJy5qb2luKGNvbXBpbGVyLmdldF9saW5rZXJfZXhlbGlzdCgpKV0KKysgICAgICAgIGVsaWYgY3Jvc3NfY29tcGlsZXIgYW5kIHN0YXRlLmVudmlyb25tZW50LmlzX2Nyb3NzX2J1aWxkKCk6CisrICAgICAgICAgICAgYXJncyArPSBbJy0tY2M9JXMnICUgJyAnLmpvaW4oY3Jvc3NfY29tcGlsZXIuZ2V0X2V4ZWxpc3QoKSldCisrICAgICAgICAgICAgYXJncyArPSBbJy0tbGQ9JXMnICUgJyAnLmpvaW4oY3Jvc3NfY29tcGlsZXIuZ2V0X2xpbmtlcl9leGVsaXN0KCkpXQorIAorICAgICAgICAgcmV0dXJuIGFyZ3MKKyAKK2RpZmYgLS1naXQgYS9tZXNvbmJ1aWxkL3NjcmlwdHMvZ3RrZG9jaGVscGVyLnB5IGIvbWVzb25idWlsZC9zY3JpcHRzL2d0a2RvY2hlbHBlci5weQoraW5kZXggNDQwNmIyOC4uYjg0NjgyNyAxMDA2NDQKKy0tLSBhL21lc29uYnVpbGQvc2NyaXB0cy9ndGtkb2NoZWxwZXIucHkKKysrKyBiL21lc29uYnVpbGQvc2NyaXB0cy9ndGtkb2NoZWxwZXIucHkKK0BAIC00NCwxMyArNDQsMTQgQEAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pZ25vcmUtaGVhZGVycycsIGRlc3Q9J2lnbm9yZV9oZWFkZXJzJywgZGVmYXVsdD0nJykKKyBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5hbWVzcGFjZScsIGRlc3Q9J25hbWVzcGFjZScsIGRlZmF1bHQ9JycpCisgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1tb2RlJywgZGVzdD0nbW9kZScsIGRlZmF1bHQ9JycpCisgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pbnN0YWxsZGlyJywgZGVzdD0naW5zdGFsbF9kaXInKQorK3BhcnNlci5hZGRfYXJndW1lbnQoJy0tZ3RrZG9jLWV4ZS13cmFwcGVyJywgZGVzdD0nZ3RrZG9jX2V4ZV93cmFwcGVyJykKKyAKKyBkZWYgZ3RrZG9jX3J1bl9jaGVjayhjbWQsIGN3ZCk6CisgICAgICMgUHV0IHN0ZGVyciBpbnRvIHN0ZG91dCBzaW5jZSB3ZSB3YW50IHRvIHByaW50IGl0IG91dCBhbnl3YXkuCisgICAgICMgVGhpcyBwcmVzZXJ2ZXMgdGhlIG9yZGVyIG9mIG1lc3NhZ2VzLgorICAgICBwLCBvdXQgPSBQb3Blbl9zYWZlKGNtZCwgY3dkPWN3ZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKVswOjJdCisgICAgIGlmIHAucmV0dXJuY29kZSAhPSAwOgorLSAgICAgICAgZXJyX21zZyA9IFsieyFyfSBmYWlsZWQgd2l0aCBzdGF0dXMgezpkfSIuZm9ybWF0KGNtZFswXSwgcC5yZXR1cm5jb2RlKV0KKysgICAgICAgIGVycl9tc2cgPSBbInshcn0gZmFpbGVkIHdpdGggc3RhdHVzIHs6ZH0iLmZvcm1hdChjbWQsIHAucmV0dXJuY29kZSldCisgICAgICAgICBpZiBvdXQ6CisgICAgICAgICAgICAgZXJyX21zZy5hcHBlbmQob3V0KQorICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oJ1xuJy5qb2luKGVycl9tc2cpKQorQEAgLTU4LDcgKzU5LDcgQEAgZGVmIGd0a2RvY19ydW5fY2hlY2soY21kLCBjd2QpOgorIGRlZiBidWlsZF9ndGtkb2Moc291cmNlX3Jvb3QsIGJ1aWxkX3Jvb3QsIGRvY19zdWJkaXIsIHNyY19zdWJkaXJzLAorICAgICAgICAgICAgICAgICAgbWFpbl9maWxlLCBtb2R1bGUsCisgICAgICAgICAgICAgICAgICBodG1sX2FyZ3MsIHNjYW5fYXJncywgZml4eHJlZl9hcmdzLCBta2RiX2FyZ3MsCistICAgICAgICAgICAgICAgICBnb2JqZWN0X3R5cGVzZmlsZSwgc2Nhbm9ianNfYXJncywgbGQsIGNjLCBsZGZsYWdzLCBjZmxhZ3MsCisrICAgICAgICAgICAgICAgICBnb2JqZWN0X3R5cGVzZmlsZSwgc2Nhbm9ianNfYXJncywgZ3RrZG9jX2V4ZV93cmFwcGVyLCBsZCwgY2MsIGxkZmxhZ3MsIGNmbGFncywKKyAgICAgICAgICAgICAgICAgIGh0bWxfYXNzZXRzLCBjb250ZW50X2ZpbGVzLCBpZ25vcmVfaGVhZGVycywgbmFtZXNwYWNlLAorICAgICAgICAgICAgICAgICAgZXhwYW5kX2NvbnRlbnRfZmlsZXMsIG1vZGUpOgorICAgICBwcmludCgiQnVpbGRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgJXMiICUgbW9kdWxlKQorQEAgLTExMSw2ICsxMTIsOSBAQCBkZWYgYnVpbGRfZ3RrZG9jKHNvdXJjZV9yb290LCBidWlsZF9yb290LCBkb2Nfc3ViZGlyLCBzcmNfc3ViZGlycywKKyAgICAgaWYgZ29iamVjdF90eXBlc2ZpbGU6CisgICAgICAgICBzY2Fub2Jqc19jbWQgPSBbJ2d0a2RvYy1zY2FuZ29iaiddICsgc2Nhbm9ianNfYXJncyArIFsnLS10eXBlcz0nICsgZ29iamVjdF90eXBlc2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1tb2R1bGU9JyArIG1vZHVsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXJ1bj0nICsgZ3RrZG9jX2V4ZV93cmFwcGVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2M9JyArIGNjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbGQ9JyArIGxkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2ZsYWdzPScgKyBjZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1sZGZsYWdzPScgKyBsZGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbGQ9JyArIGxkXQorQEAgLTIwNyw2ICsyMTEsNyBAQCBkZWYgcnVuKGFyZ3MpOgorICAgICAgICAgbWtkYmFyZ3MsCisgICAgICAgICBvcHRpb25zLmdvYmplY3RfdHlwZXNmaWxlLAorICAgICAgICAgc2Nhbm9ianNhcmdzLAorKyAgICAgICAgb3B0aW9ucy5ndGtkb2NfZXhlX3dyYXBwZXIsCisgICAgICAgICBvcHRpb25zLmxkLAorICAgICAgICAgb3B0aW9ucy5jYywKKyAgICAgICAgIG9wdGlvbnMubGRmbGFncywKKy0tIAorMi4xNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1nb2JqZWN0LWludHJvc3BlY3Rpb24tZGV0ZXJtaW5lLWctaXItc2Nhbm5lci1hbmQtZy1pLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLWdvYmplY3QtaW50cm9zcGVjdGlvbi1kZXRlcm1pbmUtZy1pci1zY2FubmVyLWFuZC1nLWkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVkNDJkMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1nb2JqZWN0LWludHJvc3BlY3Rpb24tZGV0ZXJtaW5lLWctaXItc2Nhbm5lci1hbmQtZy1pLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gOTcyNjY3ZTBkNzg5YTY5NjlhNWQ3OTI0OTQwNGYzNTM5Zjg5MTgxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCA0IEF1ZyAyMDE3IDE2OjE4OjQ3ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBnb2JqZWN0LWludHJvc3BlY3Rpb246IGRldGVybWluZSBnLWlyLXNjYW5uZXIgYW5kCisgZy1pci1jb21waWxlciBwYXRocyBmcm9tIHBrZ2NvbmZpZworCitEbyBub3QgaGFyZGNvZGUgdGhlIG5hbWUgb2YgdGhvc2UgYmluYXJpZXM7IGdvYmplY3QtaW50cm9zcGVjdGlvbgorcHJvdmlkZXMgdGhlbSB2aWEgcGtnY29uZmlnLCBhbmQgdGhleSBjYW4gYmUgc2V0IHRvIHNvbWV0aGluZyBlbHNlCisoZm9yIGV4YW1wbGUgd2hlbiBjcm9zcy1jb21waWxpbmcpLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCistLS0KKyBtZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5IGIvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CitpbmRleCA0ZjdmZTMwLi45NjEwY2Y2IDEwMDY0NAorLS0tIGEvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CisrKysgYi9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkKK0BAIC0zOTAsOCArMzkwLDYgQEAgY2xhc3MgR25vbWVNb2R1bGUoRXh0ZW5zaW9uTW9kdWxlKToKKyAgICAgICAgICAgICByYWlzZSBNZXNvbkV4Y2VwdGlvbignR2lyIHRha2VzIG9uZSBhcmd1bWVudCcpCisgICAgICAgICBpZiBrd2FyZ3MuZ2V0KCdpbnN0YWxsX2RpcicpOgorICAgICAgICAgICAgIHJhaXNlIE1lc29uRXhjZXB0aW9uKCdpbnN0YWxsX2RpciBpcyBub3Qgc3VwcG9ydGVkIHdpdGggZ2VuZXJhdGVfZ2lyKCksIHNlZSAiaW5zdGFsbF9kaXJfZ2lyIiBhbmQgImluc3RhbGxfZGlyX3R5cGVsaWIiJykKKy0gICAgICAgIGdpc2Nhbm5lciA9IGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgJ0dpcicpCistICAgICAgICBnaWNvbXBpbGVyID0gZmluZF9wcm9ncmFtKCdnLWlyLWNvbXBpbGVyJywgJ0dpcicpCisgICAgICAgICBnaXJ0YXJnZXQgPSBhcmdzWzBdCisgICAgICAgICB3aGlsZSBoYXNhdHRyKGdpcnRhcmdldCwgJ2hlbGRfb2JqZWN0Jyk6CisgICAgICAgICAgICAgZ2lydGFyZ2V0ID0gZ2lydGFyZ2V0LmhlbGRfb2JqZWN0CitAQCAtNDAyLDYgKzQwMCw4IEBAIGNsYXNzIEdub21lTW9kdWxlKEV4dGVuc2lvbk1vZHVsZSk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2lyX2RlcCA9IFBrZ0NvbmZpZ0RlcGVuZGVuY3koJ2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmVudmlyb25tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbmF0aXZlJzogVHJ1ZX0pCisrICAgICAgICAgICAgZ2lzY2FubmVyID0gb3MuZW52aXJvblsnUEtHX0NPTkZJR19TWVNST09UX0RJUiddICsgc2VsZi5naXJfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2dfaXJfc2Nhbm5lcicsIHt9KQorKyAgICAgICAgICAgIGdpY29tcGlsZXIgPSBvcy5lbnZpcm9uWydQS0dfQ09ORklHX1NZU1JPT1RfRElSJ10gKyBzZWxmLmdpcl9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnZ19pcl9jb21waWxlcicsIHt9KQorICAgICAgICAgICAgIHBrZ2FyZ3MgPSBzZWxmLmdpcl9kZXAuZ2V0X2NvbXBpbGVfYXJncygpCisgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgIHJhaXNlIE1lc29uRXhjZXB0aW9uKCdnb2JqZWN0LWludHJvc3BlY3Rpb24gZGVwZW5kZW5jeSB3YXMgbm90IGZvdW5kLCBnaXIgY2Fubm90IGJlIGdlbmVyYXRlZC4nKQorLS0gCisyLjE1LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjVlNmExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2gKQEAgLTAsMCArMSwxMTQgQEAKK0Zyb20gZmZhNzJlYWM1NjU1OGFhNDE3MWRkNzBhYzFlOWMyN2EwNzMzOGZhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgorRGF0ZTogV2VkLCAxNSBOb3YgMjAxNyAxNTowNTowMSArMDEwMAorU3ViamVjdDogW1BBVENIIDQvNF0gbmF0aXZlX2JpbmRpcgorCitTb21lIGxpYnJhcmllcywgbGlrZSBRVCwgaGF2ZSBwcmUtcHJvY2Vzc29ycyB0aGF0IGNvbnZlcnQgdGhlaXIgaW5wdXQKK2ZpbGVzIGludG8gc29tZXRoaW5nIHRoYXQgdGhlIGNyb3NzLWNvbXBpbGVyIGNhbiBwcm9jZXNzLiBXZSBmaW5kIHRoZQorcGF0aCBvZiB0aG9zZSBwcmUtcHJvY2Vzc29ycyB2aWEgcGtnLWNvbmZpZy1uYXRpdmUgaW5zdGVhZCBvZgorcGtnLWNvbmZpZy4KKworVGhpcyBwYXRoIGZvcmNlcyB0aGUgdXNlIG9mIHBrZy1jb25maWctbmF0aXZlIGZvciBob3N0X2JpbnMgYXJndW1lbnRzLgorCitUaGVyZSBhcmUgc29tZSBkaXNjdXNzaW9ucyB1cHN0cmVhbSB0byBtZXJnZSB0aGlzIHBhdGNoLCBidXQgSSBwcmVzb25hbHkgYmVsaWV2ZQordGhhdCBpcyBpcyBPRSBvbmx5LiBodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9pc3N1ZXMvMTg0OSNpc3N1ZWNvbW1lbnQtMzAzNzMwMzIzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQGdtYWlsLmNvbT4KKworLS0tCisgbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvYmFzZS5weSB8IDE2ICsrKysrKysrKystLS0tLS0KKyBtZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy91aS5weSAgIHwgIDYgKysrLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvYmFzZS5weSBiL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzL2Jhc2UucHkKK2luZGV4IGJmNzliYzUuLmM5ZmQwOGMgMTAwNjQ0CistLS0gYS9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy9iYXNlLnB5CisrKysgYi9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy9iYXNlLnB5CitAQCAtMTMxLDcgKzEzMSw3IEBAIGNsYXNzIERlcGVuZGVuY3k6CisgICAgIGRlZiBuZWVkX3RocmVhZHMoc2VsZik6CisgICAgICAgICByZXR1cm4gRmFsc2UKKyAKKy0gICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwga3dhcmdzKToKKysgICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwga3dhcmdzLCB1c2VfbmF0aXZlPUZhbHNlKToKKyAgICAgICAgIHJhaXNlIERlcGVuZGVuY3lFeGNlcHRpb24oJ3shcn0gaXMgbm90IGEgcGtnY29uZmlnIGRlcGVuZGVuY3knLmZvcm1hdChzZWxmLm5hbWUpKQorIAorICAgICBkZWYgZ2V0X2NvbmZpZ3Rvb2xfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSk6CitAQCAtMTUwLDcgKzE1MCw3IEBAIGNsYXNzIEludGVybmFsRGVwZW5kZW5jeShEZXBlbmRlbmN5KToKKyAgICAgICAgIHNlbGYuc291cmNlcyA9IHNvdXJjZXMKKyAgICAgICAgIHNlbGYuZXh0X2RlcHMgPSBleHRfZGVwcworIAorLSAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MpOgorKyAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MsIHVzZV9uYXRpdmU9RmFsc2UpOgorICAgICAgICAgcmFpc2UgRGVwZW5kZW5jeUV4Y2VwdGlvbignTWV0aG9kICJnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCkiIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZm9yIGFuIGludGVybmFsIGRlcGVuZGVuY3knKQorIAorQEAgLTQyNSwxMCArNDI1LDE0IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKKyAgICAgICAgIHJldHVybiBzLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lLCBzZWxmLmlzX2ZvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyc2lvbl9yZXFzKQorIAorLSAgICBkZWYgX2NhbGxfcGtnYmluKHNlbGYsIGFyZ3MsIGVudj1Ob25lKToKKysgICAgZGVmIF9jYWxsX3BrZ2JpbihzZWxmLCBhcmdzLCBlbnY9Tm9uZSwgdXNlX25hdGl2ZT1GYWxzZSk6CisgICAgICAgICBpZiBub3QgZW52OgorICAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24KKy0gICAgICAgIHAsIG91dCA9IFBvcGVuX3NhZmUoW3NlbGYucGtnYmluXSArIGFyZ3MsIGVudj1lbnYpWzA6Ml0KKysgICAgICAgIGlmIHVzZV9uYXRpdmU6CisrICAgICAgICAgICAgcGtnYmluID0gW3NlbGYucGtnYmluICsgIi1uYXRpdmUiXQorKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBwa2diaW4gPSBbc2VsZi5wa2diaW5dCisrICAgICAgICBwLCBvdXQgPSBQb3Blbl9zYWZlKHBrZ2JpbiArIGFyZ3MsIGVudj1lbnYpWzA6Ml0KKyAgICAgICAgIHJldHVybiBwLnJldHVybmNvZGUsIG91dC5zdHJpcCgpCisgCisgICAgIGRlZiBfY29udmVydF9taW5nd19wYXRocyhzZWxmLCBhcmdzKToKK0BAIC01MjIsNyArNTI2LDcgQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgorICAgICAgICAgICAgICMgbGlua2VycyBzdWNoIGFzIE1TVkMsIHNvIHByZXBlbmQgdGhlbS4KKyAgICAgICAgICAgICBzZWxmLmxpbmtfYXJncyA9IFsnLUwnICsgbHAgZm9yIGxwIGluIGxpYnBhdGhzXSArIHNlbGYubGlua19hcmdzCisgCistICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncyk6CisrICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncywgdXNlX25hdGl2ZT1GYWxzZSk6CisgICAgICAgICBvcHRpb25zID0gWyctLXZhcmlhYmxlPScgKyB2YXJpYWJsZV9uYW1lLCBzZWxmLm5hbWVdCisgCisgICAgICAgICBpZiAnZGVmaW5lX3ZhcmlhYmxlJyBpbiBrd2FyZ3M6CitAQCAtNTM1LDcgKzUzOSw3IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKKyAKKyAgICAgICAgICAgICBvcHRpb25zID0gWyctLWRlZmluZS12YXJpYWJsZT0nICsgJz0nLmpvaW4oZGVmaW5pdGlvbildICsgb3B0aW9ucworIAorLSAgICAgICAgcmV0LCBvdXQgPSBzZWxmLl9jYWxsX3BrZ2JpbihvcHRpb25zKQorKyAgICAgICAgcmV0LCBvdXQgPSBzZWxmLl9jYWxsX3BrZ2JpbihvcHRpb25zLCB1c2VfbmF0aXZlPXVzZV9uYXRpdmUpCisgICAgICAgICB2YXJpYWJsZSA9ICcnCisgICAgICAgICBpZiByZXQgIT0gMDoKKyAgICAgICAgICAgICBpZiBzZWxmLnJlcXVpcmVkOgorZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzL3VpLnB5IGIvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvdWkucHkKK2luZGV4IDFkYjUxOGMuLjRlZDFkMDQgMTAwNjQ0CistLS0gYS9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy91aS5weQorKysrIGIvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvdWkucHkKK0BAIC0yMzksNyArMjM5LDcgQEAgY2xhc3MgUXRCYXNlRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgorICAgICAgICAgc2VsZi5iaW5kaXIgPSBzZWxmLmdldF9wa2djb25maWdfaG9zdF9iaW5zKGNvcmUpCisgICAgICAgICBpZiBub3Qgc2VsZi5iaW5kaXI6CisgICAgICAgICAgICAgIyBJZiBleGVjX3ByZWZpeCBpcyBub3QgZGVmaW5lZCwgdGhlIHBrZy1jb25maWcgZmlsZSBpcyBicm9rZW4KKy0gICAgICAgICAgICBwcmVmaXggPSBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2V4ZWNfcHJlZml4Jywge30pCisrICAgICAgICAgICAgcHJlZml4ID0gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdleGVjX3ByZWZpeCcsIHt9LCB1c2VfbmF0aXZlPVRydWUpCisgICAgICAgICAgICAgaWYgcHJlZml4OgorICAgICAgICAgICAgICAgICBzZWxmLmJpbmRpciA9IG9zLnBhdGguam9pbihwcmVmaXgsICdiaW4nKQorIAorQEAgLTM1OSw3ICszNTksNyBAQCBjbGFzcyBRdDREZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgorICAgICAgICAgYXBwbGljYXRpb25zID0gWydtb2MnLCAndWljJywgJ3JjYycsICdsdXBkYXRlJywgJ2xyZWxlYXNlJ10KKyAgICAgICAgIGZvciBhcHBsaWNhdGlvbiBpbiBhcHBsaWNhdGlvbnM6CisgICAgICAgICAgICAgdHJ5OgorLSAgICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnJXNfbG9jYXRpb24nICUgYXBwbGljYXRpb24sIHt9KSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJyVzX2xvY2F0aW9uJyAlIGFwcGxpY2F0aW9uLCB7fSwgdXNlX25hdGl2ZT1UcnVlKSkKKyAgICAgICAgICAgICBleGNlcHQgTWVzb25FeGNlcHRpb246CisgICAgICAgICAgICAgICAgIHBhc3MKKyAKK0BAIC0zNjksNyArMzY5LDcgQEAgY2xhc3MgUXQ1RGVwZW5kZW5jeShRdEJhc2VEZXBlbmRlbmN5KToKKyAgICAgICAgIFF0QmFzZURlcGVuZGVuY3kuX19pbml0X18oc2VsZiwgJ3F0NScsIGVudiwga3dhcmdzKQorIAorICAgICBkZWYgZ2V0X3BrZ2NvbmZpZ19ob3N0X2JpbnMoc2VsZiwgY29yZSk6CistICAgICAgICByZXR1cm4gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdob3N0X2JpbnMnLCB7fSkKKysgICAgICAgIHJldHVybiBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycsIHt9LCB1c2VfbmF0aXZlPVRydWUpCisgCisgCisgIyBUaGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IHdheXMgb2YgZGVwZW5kaW5nIG9uIFNETDI6CistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNDQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC40NC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhODFkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNDQuMS5iYgpAQCAtMCwwICsxLDIxIEBACitIT01FUEFHRSA9ICJodHRwOi8vbWVzb25idWlsZC5jb20iCitTVU1NQVJZID0gIkEgaGlnaCBwZXJmb3JtYW5jZSBidWlsZCBzeXN0ZW0iCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWd0a2RvYy1maXgtaXNzdWVzLXRoYXQtYXJpc2Utd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1nb2JqZWN0LWludHJvc3BlY3Rpb24tZGV0ZXJtaW5lLWctaXItc2Nhbm5lci1hbmQtZy1pLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTGlua2VyLXJ1bGVzLW1vdmUtY3Jvc3NfYXJncy1pbi1mcm9udC1vZi1vdXRwdXRfYXJncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODJiMTE5OGJmNzE0YjVhNGRhODRiZmU4Mzc2Yzc5Y2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmVhMWE3MjE1NzRhZGIyMzE2MGI2NDgxMTkxYmNjMTE3M2YzNzRlMDJiMGZmM2JiMGFlODVkOTg4ZDk3ZTRmYSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9yZWxlYXNlcyIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICJuaW5qYSBweXRob24zLWNvcmUgcHl0aG9uMy1tb2R1bGVzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlL2NvbnZlcnQuYmluLmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZS9jb252ZXJ0LmJpbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjZmYWE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlL2NvbnZlcnQuYmluLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNDggKzAsMCBAQAotMHhmYywgMHhmYSwgMHhhMywgMHg5YywgMHgwMiwgMHgwMSwgMHgwMCwgMHg4OSwgMHgxZCwgMHhhMCwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MywgMHhmYywgMHgwMCwKLTB4NzQsIDB4MDksIDB4OGIsIDB4NDQsIDB4MjQsIDB4MDQsIDB4YTMsIDB4YTQsIDB4MDIsIDB4MDEsIDB4MDAsIDB4OGIsIDB4MjUsIDB4ODAsIDB4MTQsIDB4MDEsCi0weDAwLCAweDZhLCAweDAwLCAweDlkLCAweDMxLCAweGMwLCAweGJmLCAweGI4LCAweDE1LCAweDAxLCAweDAwLCAweGI5LCAweDQ0LCAweDU4LCAweDAxLCAweDAwLAotMHgyOSwgMHhmOSwgMHhmYywgMHhmMywgMHhhYSwgMHhiZSwgMHhiYSwgMHgwMiwgMHgwMSwgMHgwMCwgMHhiZiwgMHgwMCwgMHgxMCwgMHgwMiwgMHgwMCwgMHhiOSwKLTB4NzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4YTQsIDB4MGYsIDB4MDEsIDB4MTUsIDB4YjQsIDB4MDIsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDEsIDB4MWQsCi0weGFlLCAweDAyLCAweDAxLCAweDAwLCAweGI4LCAweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDhlLCAweGQ4LCAweDhlLCAweGMwLCAweDhlLCAweGUwLCAweDhlLAotMHhlOCwgMHg4ZSwgMHhkMCwgMHg2OCwgMHg5MCwgMHgxNCwgMHgwMSwgMHgwMCwgMHhmZiwgMHgzNSwgMHhhNCwgMHgwMiwgMHgwMSwgMHgwMCwgMHhmZiwgMHgzNSwKLTB4YTAsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MzUsIDB4OWMsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4ZTMsIDB4MDgsIDB4MDAsIDB4MDAsIDB4ODksCi0weGM2LCAweDgzLCAweGM0LCAweDEwLCAweDZhLCAweDAwLCAweDlkLCAweDMxLCAweGRiLCAweGExLCAweGFjLCAweDE0LCAweDAxLCAweDAwLCAweDgzLCAweGY4LAotMHgwMSwgMHg3NCwgMHgxMywgMHgzMSwgMHhjMCwgMHgzMSwgMHhjOSwgMHgzMSwgMHhkMiwgMHgzMSwgMHhmZiwgMHgzMSwgMHhlZCwgMHg2YSwgMHgxMCwgMHhhMSwKLTB4YTgsIDB4MTQsIDB4MDEsIDB4MDAsIDB4NTAsIDB4Y2IsIDB4ODksIDB4ZjAsIDB4YmUsIDB4MmEsIDB4MDMsIDB4MDEsIDB4MDAsIDB4YmYsIDB4MDAsIDB4MjAsCi0weDAyLCAweDAwLCAweGI5LCAweDIwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLCAweGE0LCAweDg5LCAweGM2LCAweDBmLCAweDAxLCAweDE1LCAweDJhLCAweDAzLAotMHgwMSwgMHgwMCwgMHgzMSwgMHhjMCwgMHgwZiwgMHhiYSwgMHhlOCwgMHgwNSwgMHgwZiwgMHgyMiwgMHhlMCwgMHhiZiwgMHgwMCwgMHgzMCwgMHgwMiwgMHgwMCwKLTB4MzEsIDB4YzAsIDB4YjksIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4YWIsIDB4YmYsIDB4MDAsIDB4MzAsIDB4MDIsIDB4MDAsIDB4OGQsIDB4ODcsCi0weDA3LCAweDEwLCAweDAwLCAweDAwLCAweDg5LCAweDA3LCAweGJmLCAweDAwLCAweDQwLCAweDAyLCAweDAwLCAweDhkLCAweDg3LCAweDA3LCAweDEwLCAweDAwLAotMHgwMCwgMHhiOSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHgwNywgMHgwNSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg4MywgMHhjNywgMHgwOCwKLTB4NDksIDB4NzUsIDB4ZjMsIDB4YmYsIDB4MDAsIDB4NTAsIDB4MDIsIDB4MDAsIDB4YjgsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YjksIDB4MDAsIDB4MDgsCi0weDAwLCAweDAwLCAweDg5LCAweDA3LCAweDA1LCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDgzLCAweGM3LCAweDA4LCAweDQ5LCAweDc1LCAweGYzLCAweGI4LAotMHgwMCwgMHgzMCwgMHgwMiwgMHgwMCwgMHgwZiwgMHgyMiwgMHhkOCwgMHhiOSwgMHg4MCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwZiwgMHgzMiwgMHgwZiwgMHhiYSwKLTB4ZTgsIDB4MDgsIDB4MGYsIDB4MzAsIDB4NmEsIDB4MTAsIDB4YTEsIDB4YTgsIDB4MTQsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MzEsIDB4YzAsIDB4MGYsIDB4YmEsCi0weGU4LCAweDFmLCAweDBmLCAweGJhLCAweGU4LCAweDAwLCAweDBmLCAweDIyLCAweGMwLCAweGNiLCAweDU1LCAweDg5LCAweGU1LCAweDUzLCAweDU2LCAweDU3LAotMHg4YiwgMHg3ZCwgMHgwOCwgMHg4MSwgMHhlZiwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4YiwgMHg3NSwgMHgwYywgMHg1NiwgMHhlOCwgMHhmYywgMHgwMCwKLTB4MDAsIDB4MDAsIDB4NjYsIDB4MzEsIDB4ZGIsIDB4NjYsIDB4YjgsIDB4MjAsIDB4ZTgsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YmEsIDB4NTAsIDB4NDEsIDB4NGQsCi0weDUzLCAweDY2LCAweGI5LCAweDE0LCAweDAwLCAweDAwLCAweDAwLCAweGNkLCAweDE1LCAweDcyLCAweDE4LCAweDY2LCAweDNkLCAweDUwLCAweDQxLCAweDRkLAotMHg1MywgMHg3NSwgMHgxMCwgMHg2NiwgMHg0ZSwgMHg2NiwgMHg4NSwgMHhmNiwgMHg3NCwgMHgwOSwgMHg4MywgMHhjNywgMHgxNCwgMHg2NiwgMHg4MywgMHhmYiwKLTB4MDAsIDB4NzUsIDB4ZDIsIDB4NjYsIDB4ZTgsIDB4ODIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MjksIDB4ZjAsIDB4NWYsIDB4NWUsIDB4NWIsIDB4ODksCi0weGVjLCAweDVkLCAweGMzLCAweDUzLCAweDU2LCAweDU3LCAweGU4LCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweGY5LCAweDMxLCAweGM5LCAweDMxLCAweGQyLAotMHhiOCwgMHgwMSwgMHhlOCwgMHhjZCwgMHgxNSwgMHg3MiwgMHgyOCwgMHg4MywgMHhmOSwgMHgwMCwgMHg3NSwgMHgwOSwgMHg4MywgMHhmYSwgMHgwMCwgMHg3NSwKLTB4MDQsIDB4ODksIDB4YzEsIDB4ODksIDB4ZGEsIDB4NjYsIDB4ODEsIDB4ZTIsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YzEsIDB4ZTIsIDB4MDYsCi0weDY2LCAweDg5LCAweGQwLCAweDY2LCAweDgxLCAweGUxLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDY2LCAweDAxLCAweGM4LCAweGViLCAweDAzLCAweDY2LAotMHgzMSwgMHhjMCwgMHg2NiwgMHhlOCwgMHgzMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg1ZSwgMHg1YiwgMHhjMywgMHg1MywgMHg1NiwgMHg1NywgMHhlOCwKLTB4NmEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjQsIDB4ODgsIDB4Y2QsIDB4MTUsIDB4NjYsIDB4MjUsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NjYsIDB4ZTgsCi0weDE3LCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDVlLCAweDViLCAweGMzLCAweGU4LCAweDUxLCAweDAwLCAweDAwLCAweDAwLCAweGNkLCAweDEyLCAweDg5LAotMHhjMSwgMHg2NiwgMHhlOCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHg4OSwgMHhjOCwgMHhjMywgMHhmYSwgMHgyZSwgMHg2NywgMHgwZiwgMHgwMSwKLTB4MTUsIDB4YjQsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MGYsIDB4MjAsIDB4YzAsIDB4NjYsIDB4ODMsIDB4YzgsIDB4MDEsIDB4MGYsIDB4MjIsIDB4YzAsIDB4NjYsCi0weGVhLCAweDM3LCAweDAyLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweGI4LCAweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDhlLCAweGQ4LCAweDhlLCAweGMwLAotMHg4ZSwgMHhkMCwgMHg4MSwgMHhjNCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzMSwgMHhjMCwgMHg4ZSwgMHhlMCwgMHg4ZSwgMHhlOCwgMHg1OCwgMHgwNSwKLTB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MmUsIDB4MGYsIDB4MDEsIDB4MWQsIDB4YWUsIDB4MDIsIDB4MDEsIDB4MDAsIDB4YzMsIDB4NTgsIDB4MmQsCi0weDAwLCAweDAwLCAweDAxLCAweDAwLCAweDUwLCAweDgxLCAweGVjLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGVhLCAweDcyLCAweDAyLCAweDAwLCAweDAwLAotMHgwOCwgMHgwMCwgMHgwZiwgMHgyMCwgMHhjMCwgMHg2NiwgMHg4MywgMHhlMCwgMHhmZSwgMHgwZiwgMHgyMiwgMHhjMCwgMHg2NiwgMHhlYSwgMHg4NCwgMHgwMiwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4OGMsIDB4YzgsIDB4OGUsIDB4ZDgsIDB4OGUsIDB4YzAsIDB4OGUsIDB4ZDAsIDB4OGUsIDB4ZTAsIDB4OGUsIDB4ZTgsCi0weDJlLCAweDY3LCAweDBmLCAweDAxLCAweDFkLCAweGE4LCAweDAyLCAweDAwLCAweDAwLCAweGZiLCAweDY2LCAweGMzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAxLCAweDliLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDlhLAotMHhjZiwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MiwgMHhjZiwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMSwgMHg5MywKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWEsCi0weGNmLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDkyLCAweGNmLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDIwLCAweDAyLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YSwKLTB4YWYsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTIsIDB4Y2YsIDB4MDAsIDB4NTUsIDB4ODksIDB4YzEsIDB4ODksIDB4ZTUsIDB4YmEsCi0weGZkLCAweDAzLCAweDAwLCAweDAwLCAweGVjLCAweGE4LCAweDIwLCAweDc0LCAweGZiLCAweGJhLCAweGY4LCAweDAzLCAweDAwLCAweDAwLCAweDg4LCAweGM4LAotMHhlZSwgMHhiYSwgMHhmZCwgMHgwMywgMHgwMCwgMHgwMCwgMHhlYywgMHhhOCwgMHg0MCwgMHg3NCwgMHhmYiwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4MywgMHhmOCwKLTB4MGEsIDB4ODksIDB4ZTUsIDB4NTMsIDB4ODksIDB4YzMsIDB4NzUsIDB4MGEsIDB4YjgsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4YzgsIDB4ZmYsCi0weGZmLCAweGZmLCAweDg5LCAweGQ4LCAweDViLCAweDVkLCAweGViLCAweGMyLCAweDU1LCAweDg5LCAweGU1LCAweDU3LCAweDU2LCAweDUzLCAweDgzLCAweGVjLAotMHg0NCwgMHg4ZCwgMHg1ZCwgMHgwYywgMHg4YiwgMHg3ZCwgMHgwOCwgMHgwZiwgMHhiZSwgMHgwNywgMHg4NCwgMHhjMCwgMHgwZiwgMHg4NCwgMHg2OCwgMHgwMSwKLTB4MDAsIDB4MDAsIDB4M2MsIDB4MjUsIDB4NzQsIDB4MGQsIDB4ZTgsIDB4YzIsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4N2QsIDB4YmMsIDB4ZTksIDB4NGUsCi0weDAxLCAweDAwLCAweDAwLCAweDhkLCAweDQ3LCAweDAxLCAweDg5LCAweDQ1LCAweGJjLCAweDhhLCAweDQ3LCAweDAxLCAweDNjLCAweDczLCAweDc1LCAweDFhLAotMHg4OSwgMHhkOCwgMHg4MywgMHhjMywgMHgwNCwgMHg4YiwgMHgzMCwgMHgwZiwgMHhiZSwgMHgwNiwgMHg4NCwgMHhjMCwgMHgwZiwgMHg4NCwgMHgyZiwgMHgwMSwKLTB4MDAsIDB4MDAsIDB4ZTgsIDB4OTYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NDYsIDB4ZWIsIDB4ZWQsIDB4M2MsIDB4NGMsIDB4NzUsIDB4MGQsIDB4OGQsIDB4NDcsCi0weDAyLCAweGJlLCAweDNjLCAweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDQ1LCAweGJjLCAweGViLCAweDM4LCAweDNjLCAweDZjLCAweDc1LCAweDBkLCAweDhkLAotMHg0NywgMHgwMiwgMHhiZSwgMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHg0NSwgMHhiYywgMHhlYiwgMHgyNywgMHhiZSwgMHgxYywgMHgwMCwgMHgwMCwKLTB4MDAsIDB4M2MsIDB4NjgsIDB4NzUsIDB4MWUsIDB4ODAsIDB4N2YsIDB4MDIsIDB4NjgsIDB4NzQsIDB4MGQsIDB4OGQsIDB4NDcsIDB4MDIsIDB4YmUsIDB4MGMsCi0weDAwLCAweDAwLCAweDAwLCAweDg5LCAweDQ1LCAweGJjLCAweGViLCAweDBiLCAweDhkLCAweDQ3LCAweDAzLCAweGJlLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAotMHg4OSwgMHg0NSwgMHhiYywgMHg4YiwgMHg0NSwgMHhiYywgMHg4YSwgMHgwMCwgMHg4OCwgMHhjMiwgMHg4MywgMHhjYSwgMHgyMCwgMHg4MCwgMHhmYSwgMHg3OCwKLTB4NzUsIDB4NWIsIDB4OGIsIDB4MTMsIDB4ODMsIDB4ZmUsIDB4MWMsIDB4N2UsIDB4MGUsIDB4OGIsIDB4NGIsIDB4MDQsIDB4ODksIDB4NTUsIDB4YjAsIDB4ODksCi0weDRkLCAweGI0LCAweDgzLCAweGMzLCAweDA4LCAweGViLCAweDBiLCAweDMxLCAweGM5LCAweDg5LCAweDU1LCAweGIwLCAweDg5LCAweDRkLCAweGI0LCAweDgzLAotMHhjMywgMHgwNCwgMHg4MywgMHhlMCwgMHgyMCwgMHg4ZCwgMHg3ZCwgMHhjOCwgMHg4OCwgMHg0NSwgMHhiYiwgMHg4OSwgMHhmMSwgMHg4YiwgMHg1NSwgMHhiNCwKLTB4OGIsIDB4NDUsIDB4YjAsIDB4MGYsIDB4YWQsIDB4ZDAsIDB4ZDMsIDB4ZWEsIDB4ZjYsIDB4YzEsIDB4MjAsIDB4NzQsIDB4MDIsIDB4ODksIDB4ZDAsIDB4ODMsCi0weGUwLCAweDBmLCAweDhhLCAweDU1LCAweGJiLCAweDQ3LCAweDBhLCAweDkwLCAweDE0LCAweDEwLCAweDAxLCAweDAwLCAweDg4LCAweDU3LCAweGZmLCAweDgzLAotMHhlOSwgMHgwNCwgMHg3OSwgMHhkOSwgMHhjMSwgMHhlZSwgMHgwMiwgMHg4ZCwgMHg3NCwgMHgzNSwgMHhjOSwgMHhlYiwgMHg2MiwgMHgzYywgMHg2NCwgMHg3NSwKLTB4NGEsIDB4OGIsIDB4MDMsIDB4ODMsIDB4ZmUsIDB4MWMsIDB4N2UsIDB4MDUsIDB4ODMsIDB4YzMsIDB4MDgsIDB4ZWIsIDB4MDMsIDB4ODMsIDB4YzMsIDB4MDQsCi0weDhkLCAweDRkLCAweGM4LCAweDg1LCAweGMwLCAweDc5LCAweDA5LCAweGM2LCAweDQ1LCAweGM4LCAweDJkLCAweDhkLCAweDRkLCAweGM5LCAweGY3LCAweGQ4LAotMHg4OSwgMHhjZSwgMHhiZiwgMHgwYSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OSwgMHg0NiwgMHhmNywgMHhmZiwgMHg4MywgMHhjMiwgMHgzMCwgMHg4NSwgMHhjMCwKLTB4ODgsIDB4NTYsIDB4ZmYsIDB4NzUsIDB4ZjIsIDB4ODksIDB4ZjAsIDB4NDgsIDB4MzksIDB4YzEsIDB4NzMsIDB4MjMsIDB4MGYsIDB4YjYsIDB4MzgsIDB4OGEsCi0weDExLCAweDQxLCAweDg4LCAweDEwLCAweDg5LCAweGZhLCAweDg4LCAweDUxLCAweGZmLCAweGViLCAweGVjLCAweDNjLCAweDYzLCAweDc1LCAweDBhLCAweDhiLAotMHgwMywgMHg4MywgMHhjMywgMHgwNCwgMHg4OCwgMHg0NSwgMHhjOCwgMHhlYiwgMHgwMywgMHg4OCwgMHg0NSwgMHhjOCwgMHg4ZCwgMHg3NSwgMHhjOSwgMHg4ZCwKLTB4N2QsIDB4YzgsIDB4MzksIDB4ZjcsIDB4NzMsIDB4MGIsIDB4MGYsIDB4YmUsIDB4MDcsIDB4NDcsIDB4ZTgsIDB4NmUsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4ZWIsCi0weGYxLCAweDhiLCAweDdkLCAweGJjLCAweDQ3LCAweGU5LCAweDhkLCAweGZlLCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDQ0LCAweDViLCAweDVlLCAweDVmLAotMHg1ZCwgMHhjMywgMHg1NSwgMHgzMSwgMHhjOSwgMHg4OSwgMHhlNSwgMHg1NiwgMHg1MywgMHgzMSwgMHhkYiwgMHg4MywgMHhlYywgMHgxMCwgMHgzOSwgMHhkMywKLTB4NzQsIDB4MjMsIDB4MGYsIDB4YjYsIDB4MzQsIDB4MTgsIDB4ZjYsIDB4YzMsIDB4MDEsIDB4NzQsIDB4MDMsIDB4YzEsIDB4ZTYsIDB4MDgsIDB4MDEsIDB4ZjEsCi0weDgxLCAweGY5LCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDc2LCAweDBhLCAweDg5LCAweGNlLCAweGMxLCAweGVlLCAweDEwLCAweDAxLCAweGYxLCAweDBmLAotMHhiNywgMHhjOSwgMHg0MywgMHhlYiwgMHhkOSwgMHg4OCwgMHg0ZCwgMHhmNiwgMHhjMSwgMHhlOSwgMHgwOCwgMHg4OCwgMHg0ZCwgMHhmNywgMHgwZiwgMHhiNywKLTB4NDUsIDB4ZjYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4NWIsIDB4NWUsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4NTcsIDB4NTYsIDB4NTMsIDB4ODksCi0weGMzLCAweDUxLCAweDg5LCAweDU1LCAweGYwLCAweDNiLCAweDVkLCAweGYwLCAweDczLCAweDVmLCAweDgxLCAweDNiLCAweDRjLCAweDQyLCAweDQ5LCAweDRmLAotMHg3NCwgMHgwNSwgMHg4MywgMHhjMywgMHgxMCwgMHhlYiwgMHhlZSwgMHg4MywgMHg3YiwgMHgwNCwgMHgxOCwgMHg3NSwgMHhmNSwgMHhiYSwgMHgxOCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4ODksIDB4ZDgsIDB4ZTgsIDB4ODksIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZjcsIDB4ZDAsIDB4NjYsIDB4ODUsIDB4YzAsIDB4NzUsIDB4ZTIsCi0weDhkLCAweDczLCAweDE4LCAweDhiLCAweDUzLCAweDBjLCAweDg5LCAweGYwLCAweGU4LCAweDc1LCAweGZmLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDBmLAotMHhiNywgMHhjMCwgMHgzOSwgMHg0MywgMHgxMCwgMHg3NSwgMHhjYiwgMHg4YiwgMHg0YiwgMHgwYywgMHgzMSwgMHhjMCwgMHgwMSwgMHhmMSwgMHgzOSwgMHhmMSwKLTB4NzYsIDB4MTAsIDB4ODksIDB4Y2YsIDB4OGIsIDB4NTYsIDB4MDQsIDB4MjksIDB4ZjcsIDB4MzksIDB4ZmEsIDB4NzcsIDB4MDUsIDB4NDAsIDB4MDEsIDB4ZDYsCi0weGViLCAweGVjLCAweDM5LCAweDQzLCAweDE0LCAweDc1LCAweGFiLCAweGViLCAweDAyLCAweDMxLCAweGRiLCAweDVhLCAweDg5LCAweGQ4LCAweDViLCAweDVlLAotMHg1ZiwgMHg1ZCwgMHhjMywgMHg1NSwgMHhiYSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4OSwgMHhjMywKLTB4MzEsIDB4YzAsIDB4NTEsIDB4ZTgsIDB4NzEsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODUsIDB4YzAsIDB4NzUsIDB4MTcsIDB4YmEsIDB4MDAsIDB4MDAsIDB4MTAsCi0weDAwLCAweGI4LCAweDAwLCAweDAwLCAweDBmLCAweDAwLCAweGU4LCAweDVlLCAweGZmLCAweGZmLCAweGZmLCAweDg1LCAweGMwLCAweDc1LCAweDA0LCAweDMxLAotMHhjMCwgMHhlYiwgMHgyZiwgMHg4YiwgMHg1MCwgMHgwNCwgMHgwMSwgMHhjMiwgMHg4MywgMHgzYSwgMHgxMSwgMHg3NSwgMHgxNiwgMHg4YiwgMHg3MiwgMHgwOCwKLTB4ODksIDB4ZjIsIDB4ODksIDB4ZjAsIDB4ODEsIDB4YzIsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4M2EsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODUsCi0weGMwLCAweDc0LCAweGRjLCAweDg5LCAweDQzLCAweDI4LCAweGM3LCAweDQzLCAweDI0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGI4LCAweDAxLCAweDAwLAotMHgwMCwgMHgwMCwgMHg1YSwgMHg1YiwgMHg1ZSwgMHg1ZiwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4MywgMHhlYywKLTB4MTQsIDB4ODksIDB4NTUsIDB4ZTgsIDB4OGIsIDB4NzUsIDB4MGMsIDB4OGIsIDB4NWQsIDB4MDgsIDB4ODksIDB4NzUsIDB4ZTQsIDB4ODksIDB4NGQsIDB4ZWMsCi0weDBmLCAweGI2LCAweGIwLCAweGU4LCAweDAxLCAweDAwLCAweDAwLCAweDg5LCAweDVkLCAweGUwLCAweDhiLCAweDdkLCAweDEwLCAweDgzLCAweGZlLCAweDFmLAotMHg3ZiwgMHgzMiwgMHg4OSwgMHhmMywgMHg2YiwgMHhmNiwgMHgxNCwgMHgwMSwgMHhjNiwgMHg0MywgMHg4OSwgMHg5NiwgMHhkMCwgMHgwMiwgMHgwMCwgMHgwMCwKLTB4ODksIDB4OGUsIDB4ZDQsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NTUsIDB4ZTAsIDB4OGIsIDB4NGQsIDB4ZTQsIDB4ODksIDB4OTYsIDB4ZDgsIDB4MDIsCi0weDAwLCAweDAwLCAweDg5LCAweDhlLCAweGRjLCAweDAyLCAweDAwLCAweDAwLCAweDg5LCAweGJlLCAweGUwLCAweDAyLCAweDAwLCAweDAwLCAweDg4LCAweDk4LAotMHhlOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg3NSwgMHg2NSwgMHg4YiwgMHg1ZCwgMHhlMCwgMHg4YiwgMHg3NSwgMHhlNCwgMHgwMywgMHg1ZCwgMHhlOCwKLTB4MTMsIDB4NzUsIDB4ZWMsIDB4ODksIDB4ZDksIDB4ODksIDB4ZjMsIDB4YmUsIDB4ZmYsIDB4ZmYsIDB4M2YsIDB4MDAsIDB4ODEsIDB4ZmIsIDB4ZmYsIDB4MDMsCi0weDAwLCAweDAwLCAweDc3LCAweDEzLCAweDBmLCAweGFjLCAweGQ5LCAweDBhLCAweDg5LCAweGNlLCAweDgxLCAweGY5LCAweGZmLCAweGZmLCAweDNmLCAweDAwLAotMHg3NiwgMHgwNSwgMHhiZSwgMHhmZiwgMHhmZiwgMHgzZiwgMHgwMCwgMHg4YiwgMHhiOCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4ZCwgMHg5NywgMHgwMCwKLTB4MDQsIDB4MDAsIDB4MDAsIDB4MzksIDB4ZjIsIDB4NzMsIDB4MjUsIDB4OGQsIDB4OTYsIDB4MDAsIDB4ZmMsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4OTAsIDB4ZTAsCi0weDAxLCAweDAwLCAweDAwLCAweDgxLCAweGZhLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDc3LCAweDBiLCAweDY2LCAweDgxLCAweGVlLCAweDAwLCAweDA0LAotMHg2NiwgMHg4OSwgMHg3MCwgMHgwMiwgMHhlYiwgMHgwNiwgMHg2NiwgMHhjNywgMHg0MCwgMHgwMiwgMHgwMCwgMHhmYywgMHg4MywgMHhjNCwgMHgxNCwgMHg1YiwKLTB4NWUsIDB4NWYsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4OGIsIDB4NTUsIDB4MDgsIDB4ZWMsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsCi0weDhiLCAweDU1LCAweDA4LCAweDY2LCAweGVkLCAweDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LCAweDhiLCAweDU1LCAweDA4LCAweGVkLCAweDVkLCAweGMzLAotMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwgMHg0NSwgMHgwOCwgMHg4YiwgMHg1NSwgMHgwYywgMHhlZSwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwKLTB4NDUsIDB4MDgsIDB4OGIsIDB4NTUsIDB4MGMsIDB4NjYsIDB4ZWYsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4OGIsIDB4NDUsIDB4MDgsIDB4OGIsCi0weDU1LCAweDBjLCAweGVmLCAweDVkLCAweGMzLCAweDU1LCAweDMxLCAweGMwLCAweDg5LCAweGU1LCAweDhiLCAweDU1LCAweDA4LCAweDNiLCAweDQ1LCAweDBjLAotMHg3NCwgMHgwOSwgMHg4MCwgMHgzYywgMHgwMiwgMHgwMCwgMHg3NCwgMHgwMywgMHg0MCwgMHhlYiwgMHhmMiwgMHg1ZCwgMHhjMywgMHg1NSwgMHgzMSwgMHhkMiwKLTB4ODksIDB4ZTUsIDB4OGIsIDB4NDUsIDB4MDgsIDB4OGIsIDB4NGQsIDB4MGMsIDB4M2IsIDB4NTUsIDB4MTAsIDB4NzQsIDB4MDYsIDB4ODgsIDB4MGMsIDB4MTAsCi0weDQyLCAweGViLCAweGY1LCAweDVkLCAweGMzLCAweDU1LCAweDMxLCAweGQyLCAweDg5LCAweGU1LCAweDUzLCAweDhiLCAweDQ1LCAweDA4LCAweDhiLCAweDRkLAotMHgwYywgMHgzYiwgMHg1NSwgMHgxMCwgMHg3NCwgMHgwOSwgMHg4YSwgMHgxYywgMHgxMSwgMHg4OCwgMHgxYywgMHgxMCwgMHg0MiwgMHhlYiwgMHhmMiwgMHg1YiwKLTB4NWQsIDB4YzMsIDB4NTUsIDB4MzEsIDB4YzksIDB4ODksIDB4ZTUsIDB4M2IsIDB4NGQsIDB4MTAsIDB4NzQsIDB4MTcsIDB4OGIsIDB4NDUsIDB4MDgsIDB4MGYsCi0weGI2LCAweDEwLCAweDhiLCAweDQ1LCAweDBjLCAweDBmLCAweGI2LCAweDAwLCAweDM4LCAweGMyLCAweDc0LCAweDA0LCAweDI5LCAweGQwLCAweGViLCAweDA1LAotMHg0MSwgMHhlYiwgMHhlNCwgMHgzMSwgMHhjMCwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4YiwgMHg0NSwgMHgwOCwKLTB4NjgsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NGQsIDB4MTAsIDB4OGQsIDB4OTgsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NTMsIDB4ZTgsCi0weDcxLCAweGZmLCAweGZmLCAweGZmLCAweDAxLCAweGMzLCAweDVlLCAweDgxLCAweGY5LCAweGZlLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDhkLCAweDczLAotMHgwMSwgMHhjNiwgMHgwMywgMHgyMCwgMHg3ZSwgMHgwNSwgMHhiOSwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHhmZiwgMHg3NSwgMHgwYywgMHhlOCwKLTB4NTEsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NWEsIDB4NTksIDB4NTAsIDB4ZmYsIDB4NzUsIDB4MGMsIDB4ODksIDB4YzcsIDB4NTYsIDB4ZTgsIDB4NzMsIDB4ZmYsCi0weGZmLCAweGZmLCAweDgzLCAweGM0LCAweDBjLCAweGM2LCAweDQ0LCAweDNiLCAweDAxLCAweDAwLCAweDhkLCAweDY1LCAweGY0LCAweDViLCAweDVlLCAweDVmLAotMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwgMHg0NSwgMHgxMCwgMHg4YiwgMHg1NSwgMHgwYywgMHg4OSwgMHg0NSwgMHgwYywgMHg4YiwgMHg0NSwKLTB4MDgsIDB4ODksIDB4NTUsIDB4MTAsIDB4OGIsIDB4NDAsIDB4MTAsIDB4ODksIDB4NDUsIDB4MDgsIDB4NWQsIDB4ZWIsIDB4OGEsIDB4NTUsIDB4ODksIDB4ZTUsCi0weDU3LCAweDU2LCAweDUzLCAweDhiLCAweDVkLCAweDA4LCAweDY4LCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDZhLCAweDAwLCAweGZmLCAweDczLCAweDEwLAotMHhlOCwgMHgxOCwgMHhmZiwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0MywgMHgxMCwgMHhjNywgMHg0MCwgMHgwZSwgMHgxOSwgMHgwMSwgMHgxMCwgMHgwMCwgMHhjNywKLTB4MDAsIDB4MDAsIDB4MTksIDB4MDAsIDB4MDAsIDB4YzcsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4YzYsIDB4ODAsIDB4ZTgsIDB4MDEsCi0weDAwLCAweDAwLCAweDAwLCAweDhkLCAweGI4LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDY2LCAweGM3LCAweDQwLCAweDBhLCAweDAwLCAweDAwLCAweGM3LAotMHg0MCwgMHgyMCwgMHgzZiwgMHhhMywgMHgwMCwgMHgwOCwgMHg4OSwgMHhiOCwgMHgyOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg4YiwgMHg0MywgMHgwYywgMHg2OCwKLTB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGQsIDB4NDgsIDB4MjgsIDB4NTEsIDB4ZTgsIDB4YjgsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4NWEsIDB4NWUsIDB4ODksCi0weGM2LCAweDUwLCAweDUxLCAweDU3LCAweGU4LCAweGRjLCAweGZlLCAweGZmLCAweGZmLCAweDhiLCAweDQzLCAweDEwLCAweDgzLCAweGMwLCAweDQwLCAweGM2LAotMHg4NCwgMHgzMCwgMHhjMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHg2YSwgMHg0MCwgMHg2YSwgMHgwMCwgMHg1MCwgMHhlOCwgMHhhYywgMHhmZSwgMHhmZiwKLTB4ZmYsIDB4ODMsIDB4YzQsIDB4MjQsIDB4OGIsIDB4NDMsIDB4MTAsIDB4ODMsIDB4ZTgsIDB4ODAsIDB4NmEsIDB4MjAsIDB4NmEsIDB4MDAsIDB4NTAsIDB4ZTgsCi0weDk5LCAweGZlLCAweGZmLCAweGZmLCAweDhiLCAweDUzLCAweDBjLCAweDhiLCAweDQzLCAweDEwLCAweDA1LCAweDAyLCAweDAyLCAweDAwLCAweDAwLCAweDhiLAotMHg0YSwgMHgxNCwgMHg2NiwgMHg4YiwgMHg1MiwgMHgxNiwgMHg2NiwgMHg4OSwgMHg0OCwgMHhmNiwgMHg2NiwgMHg4OSwgMHg1MCwgMHhmYSwgMHg2NiwgMHhjNywKLTB4ODAsIDB4OWUsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4YzcsIDB4NDAsIDB4ZGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YzcsCi0weDgwLCAweDAwLCAweGZlLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDY2LCAweGM3LCAweDQwLCAweGYwLCAweGZmLCAweGZmLCAweGM2LCAweDQwLCAweGZkLAotMHgwMCwgMHg2YSwgMHgwNCwgMHg2OCwgMHgyNSwgMHgxMCwgMHgwMSwgMHgwMCwgMHg1MCwgMHhlOCwgMHg2NywgMHhmZSwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0MywKLTB4MTAsIDB4NjYsIDB4YzcsIDB4ODAsIDB4MTAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDAsIDB4ODMsIDB4YzQsIDB4MTgsIDB4OGIsIDB4NGIsIDB4MGMsCi0weDY2LCAweGM3LCAweDgwLCAweDA2LCAweDAyLCAweDAwLCAweDAwLCAweDAxLCAweDAyLCAweGM3LCAweDgwLCAweDE4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHhjNywgMHg4MCwgMHgxYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4YiwgMHg1MSwgMHgyNCwKLTB4ODUsIDB4ZDIsIDB4NzQsIDB4MGYsIDB4OGIsIDB4NDksIDB4MjAsIDB4ODksIDB4OTAsIDB4MWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODksIDB4ODgsIDB4MTgsCi0weDAyLCAweDAwLCAweDAwLCAweGM3LCAweDQzLCAweDJjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDhkLCAweDY1LCAweGY0LCAweDViLCAweDVlLCAweDVmLAotMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4MywgMHhlYywgMHg0YywgMHhjNywgMHg0NSwgMHhjOCwgMHgwMCwgMHgwMCwKLTB4MDIsIDB4MDAsIDB4OGIsIDB4NDUsIDB4MDgsIDB4ODksIDB4NDUsIDB4YjgsIDB4OGIsIDB4NDUsIDB4MGMsIDB4ODksIDB4NDUsIDB4YmMsIDB4OGIsIDB4NDUsCi0weDEwLCAweDg5LCAweDQ1LCAweGMwLCAweDhiLCAweDQ1LCAweDE0LCAweDg5LCAweDQ1LCAweGM0LCAweDhkLCAweDQ1LCAweGI4LCAweDUwLCAweGU4LCAweDlhLAotMHhmZSwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0NSwgMHhiOCwgMHg1OSwgMHgzZCwgMHgwMiwgMHhiMCwgMHhhZCwgMHgyYiwgMHg3NSwgMHgwOSwgMHhjNywgMHg0NSwKLTB4Y2MsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZWIsIDB4MjEsIDB4MzEsIDB4ZjYsIDB4M2QsIDB4MDcsIDB4YjAsIDB4MTEsIDB4MGEsIDB4NzUsIDB4MmMsCi0weDhiLCAweDQ1LCAweGJjLCAweDhiLCAweDEwLCAweGU4LCAweDU4LCAweGZiLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDY2LCAweDg1LCAweGMwLCAweDc1LAotMHgwZSwgMHhjNywgMHg0NSwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiZSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlYiwgMHgwZCwgMHg1MCwKLTB4NjgsIDB4MmEsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4YWUsIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4NTgsIDB4NWEsIDB4MzEsIDB4ZGIsIDB4ODEsIDB4N2QsCi0weGI4LCAweDA3LCAweGIwLCAweDFmLCAweDBlLCAweDc1LCAweDAzLCAweDhiLCAweDVkLCAweGJjLCAweDhiLCAweDQ1LCAweGMwLCAweDg1LCAweGMwLCAweDc0LAotMHgwYSwgMHg4MSwgMHgzOCwgMHgwNywgMHhiMCwgMHgxZiwgMHgwZSwgMHg3NSwgMHgwMiwgMHg4OSwgMHhjMywgMHg4NSwgMHhmNiwgMHgwZiwgMHg4NSwgMHhjZSwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4ODUsIDB4ZGIsIDB4MGYsIDB4ODQsIDB4YzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4ODMsIDB4N2IsIDB4MDgsIDB4MDAsCi0weDc0LCAweDBmLCAweDhiLCAweDUzLCAweDA0LCAweDg5LCAweGQ4LCAweGU4LCAweGY2LCAweGZhLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDBmLCAweGI3LAotMHhmMCwgMHg4YiwgMHg0YiwgMHgwNCwgMHg4ZCwgMHg0MywgMHgwYywgMHgwMSwgMHhkOSwgMHgzMSwgMHhmZiwgMHg4OSwgMHg0ZCwgMHhiNCwgMHgzOSwgMHg0NSwKLTB4YjQsIDB4NzYsIDB4MWYsIDB4OGIsIDB4MDgsIDB4OGIsIDB4NTAsIDB4MDQsIDB4ODMsIDB4YzEsIDB4MDMsIDB4ODMsIDB4YzIsIDB4MDMsIDB4ODMsIDB4ZTEsCi0weGZjLCAweDgzLCAweGUyLCAweGZjLCAweDhkLCAweDU0LCAweDExLCAweDBjLCAweDAxLCAweGQwLCAweDM5LCAweDQ1LCAweGI0LCAweDcyLCAweDAzLCAweDQ3LAotMHhlYiwgMHhkYywgMHg4MSwgMHgzYiwgMHgwNywgMHhiMCwgMHgxZiwgMHgwZSwgMHg3NSwgMHgxYiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgxNywgMHgwZiwgMHhiNywKLTB4NDMsIDB4MGEsIDB4MzksIDB4ZjgsIDB4NzUsIDB4MGYsIDB4YzcsIDB4NDUsIDB4ZDQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODksIDB4NWQsIDB4YzAsCi0weGU5LCAweDk1LCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDY4LCAweDRkLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweDA4LCAweGY5LCAweGZmLCAweGZmLAotMHg1NiwgMHg2OCwgMHg2NywgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhmZCwgMHhmOCwgMHhmZiwgMHhmZiwgMHg1NywgMHg2OCwgMHg3OSwgMHgxMCwgMHgwMSwKLTB4MDAsIDB4ZTgsIDB4ZjIsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4NTMsIDB4NjgsIDB4OGIsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4ZTcsIDB4ZjgsIDB4ZmYsCi0weGZmLCAweDgzLCAweGM0LCAweDIwLCAweGZmLCAweDczLCAweDA0LCAweDY4LCAweDlkLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGQ3LCAweGY4LCAweGZmLAotMHhmZiwgMHhmZiwgMHgzMywgMHg2OCwgMHhhZiwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhjYiwgMHhmOCwgMHhmZiwgMHhmZiwgMHgwZiwgMHhiNywgMHg0MywKLTB4MGEsIDB4NTAsIDB4NjgsIDB4YzEsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4YmMsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTgsIDB4ZWIsCi0weDA0LCAweDg1LCAweGY2LCAweDc1LCAweDM1LCAweDUxLCAweDY4LCAweGQzLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGE4LCAweGY4LCAweGZmLCAweGZmLAotMHhmZiwgMHg3NSwgMHhiOCwgMHg2OCwgMHhlZSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHg5YiwgMHhmOCwgMHhmZiwgMHhmZiwgMHhmZiwgMHg3NSwgMHhiYywKLTB4NjgsIDB4ZjcsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4OGUsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NzUsIDB4YzAsIDB4NjgsIDB4MDAsIDB4MTEsCi0weDAxLCAweDAwLCAweGU4LCAweDgxLCAweGY4LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDIwLCAweGM3LCAweDQ1LCAweGQ4LCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHhjNywgMHg0NSwgMHhkYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MywgMHg3ZCwgMHhkNCwgMHgwMCwgMHgwZiwgMHg4NCwgMHhmYywgMHgwMCwKLTB4MDAsIDB4MDAsIDB4OGIsIDB4N2QsIDB4YzAsIDB4OGQsIDB4NTcsIDB4MGMsIDB4MDMsIDB4N2YsIDB4MDQsIDB4MzksIDB4ZDcsIDB4NzYsIDB4NTEsIDB4OGIsCi0weDMyLCAweDhiLCAweDVhLCAweDA0LCAweDg5LCAweDVkLCAweGI0LCAweDgzLCAweGMzLCAweDAzLCAweDhkLCAweDRlLCAweDAzLCAweDgzLCAweGUzLCAweGZjLAotMHg4MywgMHhlMSwgMHhmYywgMHg4ZCwgMHg0MiwgMHgwYywgMHgwMSwgMHhjYiwgMHgwMSwgMHhjMywgMHgzOSwgMHhkZiwgMHg3MiwgMHgzMiwgMHg4MywgMHg3YSwKLTB4MDgsIDB4MDEsIDB4NzUsIDB4MjgsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MjQsIDB4ODksIDB4NTUsIDB4YjAsIDB4ODksIDB4NGQsIDB4YWMsIDB4NTIsIDB4NmEsCi0weDAwLCAweDZhLCAweDAwLCAweDUwLCAweGU4LCAweDI5LCAweGZjLCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDg5LCAweGM2LCAweDg1LCAweGMwLAotMHg4YiwgMHg1NSwgMHhiMCwgMHg4YiwgMHg0ZCwgMHhhYywgMHgwZiwgMHg4NCwgMHgxZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4OSwgMHhkYSwgMHhlYiwgMHhhYiwKLTB4MzEsIDB4ZDIsIDB4MzEsIDB4ZmYsIDB4MzEsIDB4ZjYsIDB4ODUsIDB4ZDIsIDB4MGYsIDB4OTUsIDB4YzMsIDB4ZjcsIDB4YzYsIDB4MDEsIDB4MDAsIDB4MDAsCi0weDAwLCAweDc1LCAweDM0LCAweDg0LCAweGRiLCAweDc0LCAweDMwLCAweDMxLCAweGY2LCAweDgzLCAweDdhLCAweDA0LCAweDBhLCAweDc1LCAweDI4LCAweDg5LAotMHg1NSwgMHhiNCwgMHg1MCwgMHg2YSwgMHgwYSwgMHg2OCwgMHgzNSwgMHgxMSwgMHgwMSwgMHgwMCwgMHg1NywgMHhlOCwgMHhlMiwgMHhmYiwgMHhmZiwgMHhmZiwKLTB4ODMsIDB4YzQsIDB4MTAsIDB4OGIsIDB4NTUsIDB4YjQsIDB4ODUsIDB4YzAsIDB4NzUsIDB4MGQsIDB4OGQsIDB4NDUsIDB4YjgsIDB4ZTgsIDB4MTEsIDB4ZmEsCi0weGZmLCAweGZmLCAweDhiLCAweDU1LCAweGI0LCAweDg5LCAweGM2LCAweDg1LCAweGY2LCAweDc1LCAweDBmLCAweDg0LCAweGRiLCAweDc0LCAweDBiLCAweDMxLAotMHhjMCwgMHg4MywgMHg3YSwgMHgwNCwgMHgwMCwgMHgwZiwgMHg5NCwgMHhjMCwgMHg4OSwgMHhjNiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgyNSwgMHg4NCwgMHhkYiwKLTB4NzQsIDB4MjEsIDB4ODMsIDB4N2EsIDB4MDQsIDB4MDEsIDB4NzUsIDB4MWIsIDB4NTAsIDB4NmEsIDB4MDEsIDB4NjgsIDB4NjYsIDB4MTAsIDB4MDEsIDB4MDAsCi0weDU3LCAweGU4LCAweDljLCAweGZiLCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDg1LCAweGMwLCAweDBmLCAweDk0LCAweGMwLCAweDBmLCAweGI2LAotMHhjMCwgMHg4OSwgMHhjNiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgxMywgMHg4NCwgMHhkYiwgMHg3NCwgMHgwZiwgMHg1NywgMHg2OCwgMHgwYSwgMHgxMSwgMHgwMSwKLTB4MDAsIDB4ZTgsIDB4NzIsIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4NWYsIDB4NTgsIDB4ZWIsIDB4MDQsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MTMsIDB4OGQsIDB4NDUsCi0weGI4LCAweGU4LCAweGFkLCAweGY5LCAweGZmLCAweGZmLCAweDg1LCAweGMwLCAweDc1LCAweDA3LCAweGM3LCAweDQ1LCAweGQ4LCAweDAxLCAweDAwLCAweDAwLAotMHgwMCwgMHg1MSwgMHg2OCwgMHgyNSwgMHgxMSwgMHgwMSwgMHgwMCwgMHhlOCwgMHg0YywgMHhmNywgMHhmZiwgMHhmZiwgMHg1YiwgMHg4MywgMHg3ZCwgMHhkYywKLTB4MDAsIDB4NWUsIDB4NzQsIDB4MGQsIDB4NTAsIDB4NjgsIDB4MzQsIDB4MTEsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4MzksIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4NTgsCi0weDVhLCAweDgzLCAweDdkLCAweGQ4LCAweDAwLCAweDc0LCAweDBkLCAweDUzLCAweDY4LCAweDNmLCAweDExLCAweDAxLCAweDAwLCAweGU4LCAweDI2LCAweGY3LAotMHhmZiwgMHhmZiwgMHg1ZSwgMHg1ZiwgMHg1MCwgMHg2OCwgMHg2NSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHgxOSwgMHhmNywgMHhmZiwgMHhmZiwgMHg1YSwKLTB4ODMsIDB4N2QsIDB4ZGMsIDB4MDAsIDB4NTksIDB4NzUsIDB4MzEsIDB4ODMsIDB4N2QsIDB4ZDgsIDB4MDAsIDB4MGYsIDB4ODQsIDB4MTYsIDB4MDEsIDB4MDAsCi0weDAwLCAweDUwLCAweDUwLCAweDZhLCAweDIwLCAweDY4LCAweGM0LCAweDU1LCAweDAxLCAweDAwLCAweGU4LCAweGJiLCAweGY0LCAweGZmLCAweGZmLCAweGJiLAotMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHhhMywgMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHg4MywgMHhjNCwgMHgxMCwgMHhjNywgMHg0NSwgMHhiNCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4ZTksIDB4YWEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NDUsIDB4ZTAsIDB4OGQsIDB4NTgsIDB4MTgsIDB4OGIsIDB4NDgsCi0weDBjLCAweDAxLCAweGQ5LCAweDg5LCAweDRkLCAweGI0LCAweDM5LCAweDVkLCAweGI0LCAweDc2LCAweGJjLCAweDhiLCAweDU1LCAweGI0LCAweDhiLCAweDQzLAotMHgwNCwgMHgyOSwgMHhkYSwgMHgzOSwgMHhkMCwgMHg3NywgMHhiMCwgMHg4MywgMHgzYiwgMHgwMSwgMHg3NSwgMHg0ZiwgMHg4MywgMHhlOCwgMHgwOCwgMHhiOSwKLTB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzEsIDB4ZDIsIDB4OGQsIDB4NzMsIDB4MDgsIDB4ZjcsIDB4ZjEsIDB4ODksIDB4NDUsIDB4YjAsIDB4MzEsIDB4ZmYsCi0weDM5LCAweDdkLCAweGIwLCAweDdlLCAweDJmLCAweDgzLCAweGZmLCAweDFmLCAweDdmLCAweDJhLCAweDMxLCAweGMwLCAweDhiLCAweDE2LCAweDgzLCAweDdlLAotMHgxMCwgMHgwMSwgMHgwZiwgMHg5NSwgMHhjMCwgMHg4MywgMHhlYywgMHgwNCwgMHg0MCwgMHg4YiwgMHg0ZSwgMHgwNCwgMHg0NywgMHg1MCwgMHg4YiwgMHg0NSwKLTB4YzgsIDB4ZmYsIDB4NzYsIDB4MGMsIDB4ZmYsIDB4NzYsIDB4MDgsIDB4ODMsIDB4YzYsIDB4MTQsIDB4ZTgsIDB4MjksIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4ODMsCi0weGM0LCAweDEwLCAweGViLCAweGNjLCAweGM3LCAweDQ1LCAweGU0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDViLCAweDA0LCAweGViLCAweDk2LAotMHg4YiwgMHg0MywgMHgxNCwgMHg4YiwgMHg1MywgMHgwNCwgMHg4YiwgMHg0YiwgMHgwOCwgMHg4YiwgMHg3MywgMHgwYywgMHg4YiwgMHg3YiwgMHgxMCwgMHg4MywKLTB4ZjgsIDB4MDEsIDB4NzUsIDB4MDcsIDB4YzcsIDB4NDUsIDB4ZTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4ZWMsIDB4MDQsIDB4ODMsIDB4YzMsCi0weDE0LCAweDUwLCAweDhiLCAweDQ1LCAweGIwLCAweDU3LCAweDU2LCAweGU4LCAweGVjLCAweGY4LCAweGZmLCAweGZmLCAweGZmLCAweDQ1LCAweGI0LCAweDgzLAotMHhjNCwgMHgxMCwgMHg4YiwgMHg0NSwgMHhiNCwgMHgzYiwgMHgwNSwgMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHg4YiwgMHg0NSwgMHhjOCwgMHg4OSwgMHg0NSwKLTB4YjAsIDB4N2MsIDB4YmQsIDB4ZTgsIDB4M2IsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4OGIsIDB4N2QsIDB4YjAsIDB4ODksIDB4ODcsIDB4ZTAsIDB4MDEsIDB4MDAsCi0weDAwLCAweDhiLCAweDVkLCAweGM4LCAweGU4LCAweDczLCAweGY0LCAweGZmLCAweGZmLCAweDY2LCAweDg5LCAweDQzLCAweDAyLCAweDhiLCAweDQ1LCAweGM4LAotMHg4MywgMHhiOCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NSwgMHgwNywgMHg2NiwgMHg4MywgMHg3OCwgMHgwMiwgMHgwMCwgMHg3NCwgMHgwNywKLTB4YzcsIDB4NDUsIDB4ZTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4N2QsIDB4Y2MsIDB4MDAsIDB4MGYsIDB4ODQsIDB4YjksIDB4MDAsIDB4MDAsCi0weDAwLCAweDhiLCAweDc1LCAweGJjLCAweDhiLCAweDU1LCAweGM4LCAweDgzLCAweDdkLCAweGU0LCAweDAwLCAweDhiLCAweDFlLCAweDc0LCAweDRkLCAweGY2LAotMHhjMywgMHgwMSwgMHg3NCwgMHg0OCwgMHg4YiwgMHg0NiwgMHgwOCwgMHgwNSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzZCwgMHhmZiwgMHhmZiwgMHgzZiwKLTB4MDAsIDB4NzYsIDB4MDUsIDB4YjgsIDB4ZmYsIDB4ZmYsIDB4M2YsIDB4MDAsIDB4OGIsIDB4YmEsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OGQsIDB4OGYsCi0weDAwLCAweDA0LCAweDAwLCAweDAwLCAweDM5LCAweGMxLCAweDczLCAweDI0LCAweDhkLCAweDg4LCAweDAwLCAweGZjLCAweGZmLCAweGZmLCAweDg5LCAweDhhLAotMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MSwgMHhmOSwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHg3NywgMHgwYSwgMHg2NiwgMHgyZCwgMHgwMCwgMHgwNCwKLTB4NjYsIDB4ODksIDB4NDIsIDB4MDIsIDB4ZWIsIDB4MDYsIDB4NjYsIDB4YzcsIDB4NDIsIDB4MDIsIDB4MDAsIDB4ZmMsIDB4ODAsIDB4ZTMsIDB4MDQsIDB4NzQsCi0weDBmLCAweDUwLCAweDZhLCAweGZmLCAweGZmLCAweDc2LCAweDEwLCAweDUyLCAweGU4LCAweGFhLCAweGY5LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLAotMHg4MywgMHg3ZCwgMHhlNCwgMHgwMCwgMHgwZiwgMHg4NCwgMHhiZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhmNiwgMHgwNiwgMHg0MCwgMHgwZiwgMHg4NCwgMHhiNCwKLTB4MDEsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NWUsIDB4MzAsIDB4OGIsIDB4NDYsIDB4MmMsIDB4MDEsIDB4ZDgsIDB4OGIsIDB4N2QsIDB4YzgsIDB4ODksIDB4NDUsCi0weGI0LCAweDhiLCAweDczLCAweGZjLCAweDM5LCAweDVkLCAweGI0LCAweDBmLCAweDg2LCAweDlhLCAweDAxLCAweDAwLCAweDAwLCAweDhiLCAweDEzLCAweDhiLAotMHg0YiwgMHgwNCwgMHg1MCwgMHg4OSwgMHhmOCwgMHhmZiwgMHg3MywgMHgxMCwgMHhmZiwgMHg3MywgMHgwYywgMHhmZiwgMHg3MywgMHgwOCwgMHgwMSwgMHhmMywKLTB4ZTgsIDB4ZTMsIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4ZWIsIDB4ZGEsIDB4ODMsIDB4N2QsIDB4ZDAsIDB4MDAsIDB4MGYsIDB4ODQsCi0weGFhLCAweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDc1LCAweGJjLCAweDhiLCAweDQ2LCAweDBjLCAweDg1LCAweGMwLCAweDc0LCAweDEwLCAweDUyLCAweDUwLAotMHhmZiwgMHg3NiwgMHgwOCwgMHhmZiwgMHg3NSwgMHhjOCwgMHhlOCwgMHgzYywgMHhmOSwgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgxMCwgMHg4YiwgMHg0NiwKLTB4MTQsIDB4OGIsIDB4NWUsIDB4MTAsIDB4ODksIDB4NDUsIDB4YjQsIDB4ODMsIDB4N2QsIDB4YjQsIDB4MDAsIDB4MGYsIDB4ODQsIDB4NDYsIDB4MDEsIDB4MDAsCi0weDAwLCAweDgzLCAweDNiLCAweDAxLCAweDc1LCAweDZiLCAweDgzLCAweDdkLCAweGU0LCAweDAwLCAweDc0LCAweDY1LCAweDhiLCAweDQ1LCAweGM4LCAweGI5LAotMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHg0NSwgMHhiMCwgMHg4YiwgMHg0MywgMHgwNCwgMHg4MywgMHhlOCwgMHgwOCwgMHgzMSwgMHhkMiwgMHhmNywKLTB4ZjEsIDB4ODksIDB4NDUsIDB4YWMsIDB4OGQsIDB4NzMsIDB4MDgsIDB4MzEsIDB4ZmYsIDB4MzksIDB4N2QsIDB4YWMsIDB4N2UsIDB4M2MsIDB4ODMsIDB4ZmYsCi0weDFmLCAweDdmLCAweDM3LCAweDhiLCAweDQ2LCAweDEwLCAweDhkLCAweDUwLCAweGZmLCAweGI4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDgzLCAweGZhLAotMHgwMywgMHg3NywgMHgwNywgMHgwZiwgMHhiNiwgMHg4MiwgMHgxMCwgMHgxMCwgMHgwMSwgMHgwMCwgMHg4MywgMHhlYywgMHgwNCwgMHg4YiwgMHgxNiwgMHg4YiwKLTB4NGUsIDB4MDQsIDB4NDcsIDB4NTAsIDB4OGIsIDB4NDUsIDB4YjAsIDB4ZmYsIDB4NzYsIDB4MGMsIDB4ZmYsIDB4NzYsIDB4MDgsIDB4ODMsIDB4YzYsIDB4MTQsCi0weGU4LCAweDQzLCAweGY3LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweGViLCAweGJmLCAweGM3LCAweDQ1LCAweGU0LCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg4YiwgMHg0MywgMHgwNCwgMHgwMSwgMHhjMywgMHgyOSwgMHg0NSwgMHhiNCwgMHhlOSwgMHg3OSwgMHhmZiwgMHhmZiwgMHhmZiwgMHg4MywgMHg3ZCwKLTB4ZDQsIDB4MDAsIDB4MGYsIDB4ODQsIDB4YmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NTUsIDB4YzAsIDB4OGIsIDB4N2EsIDB4MDQsIDB4OGQsIDB4NDIsCi0weDBjLCAweDAxLCAweGQ3LCAweDM5LCAweGM3LCAweDBmLCAweDg2LCAweGFjLCAweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDEwLCAweDhkLCAweDQ4LCAweDBjLAotMHg4ZCwgMHg1YSwgMHgwMywgMHg4MywgMHhlMywgMHhmYywgMHg4ZCwgMHgzNCwgMHgxOSwgMHg4YiwgMHg1OCwgMHgwNCwgMHg4OSwgMHg3NSwgMHhiNCwgMHg4ZCwKLTB4NzMsIDB4MDMsIDB4ODMsIDB4ZTYsIDB4ZmMsIDB4MDMsIDB4NzUsIDB4YjQsIDB4ODksIDB4NzUsIDB4YjAsIDB4MzksIDB4ZjcsIDB4MGYsIDB4ODIsIDB4ODQsCi0weDAwLCAweDAwLCAweDAwLCAweDhiLCAweDM1LCAweDcwLCAweDE0LCAweDAxLCAweDAwLCAweDhiLCAweDQwLCAweDA4LCAweDg5LCAweDc1LCAweGFjLCAweDM5LAotMHgwNSwgMHg3OCwgMHgxNCwgMHgwMSwgMHgwMCwgMHg4YiwgMHgzNSwgMHg3NCwgMHgxNCwgMHgwMSwgMHgwMCwgMHg3NSwgMHgyNywgMHgzYiwgMHg1NSwgMHhhYywKLTB4NzUsIDB4MjIsIDB4NTAsIDB4NTIsIDB4NTYsIDB4NTEsIDB4ZTgsIDB4MTcsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4ODUsIDB4YzAsCi0weDc1LCAweDEyLCAweDUyLCAweDhkLCAweDQ1LCAweGI4LCAweGZmLCAweDc1LCAweGI0LCAweDUzLCAweDUwLCAweGZmLCAweDE1LCAweDdjLCAweDE0LCAweDAxLAotMHgwMCwgMHg4MywgMHhjNCwgMHgxMCwgMHg4YiwgMHg0NSwgMHhiMCwgMHhlYiwgMHg4YSwgMHg4ZCwgMHg3YywgMHgwYSwgMHgwYywgMHg4MywgMHg3ZCwgMHhiNCwKLTB4MDcsIDB4MGYsIDB4ODUsIDB4ZGYsIDB4ZmIsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4NTUsIDB4YjQsIDB4NTAsIDB4NmEsIDB4MDcsIDB4NjgsIDB4NDAsIDB4MTEsCi0weDAxLCAweDAwLCAweDU3LCAweGU4LCAweGRhLCAweGY3LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDhiLCAweDU1LCAweGI0LCAweDg1LCAweGMwLAotMHgwZiwgMHg4NSwgMHhjMCwgMHhmYiwgMHhmZiwgMHhmZiwgMHhjNywgMHg0NSwgMHhkOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiZSwgMHgwMSwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4ZTksIDB4YWYsIDB4ZmIsIDB4ZmYsIDB4ZmYsIDB4YjAsIDB4ODAsIDB4ZTYsIDB4NzAsIDB4MzEsIDB4YzAsIDB4ZTYsIDB4ZjAsIDB4ZTYsCi0weGYxLCAweGIwLCAweDExLCAweGU2LCAweDIwLCAweGU2LCAweGEwLCAweGIwLCAweDIwLCAweGU2LCAweDIxLCAweGIwLCAweDI4LCAweGU2LCAweGExLCAweGIwLAotMHgwNCwgMHhlNiwgMHgyMSwgMHhiMCwgMHgwMiwgMHhlNiwgMHhhMSwgMHhiMCwgMHgwMSwgMHhlNiwgMHgyMSwgMHhlNiwgMHhhMSwgMHhiMCwgMHhmZiwgMHhlNiwKLTB4YTEsIDB4YjAsIDB4ZmIsIDB4ZTYsIDB4MjEsIDB4OGIsIDB4NDUsIDB4YzgsIDB4OGQsIDB4NjUsIDB4ZjQsIDB4NWIsIDB4NWUsIDB4NWYsIDB4NWQsIDB4YzMsCi0weDAxLCAweDAyLCAweDAzLCAweDA0LCAweDMwLCAweDMxLCAweDMyLCAweDMzLCAweDM0LCAweDM1LCAweDM2LCAweDM3LCAweDM4LCAweDM5LCAweDQxLCAweDQyLAotMHg0MywgMHg0NCwgMHg0NSwgMHg0NiwgMHgwMCwgMHg0OCwgMHg2NCwgMHg3MiwgMHg1MywgMHgwMCwgMHg0MiwgMHg2MSwgMHg2NCwgMHgyMCwgMHg3NSwgMHg2ZSwKLTB4NjksIDB4NjYsIDB4NmYsIDB4NzIsIDB4NmQsIDB4MjAsIDB4NjIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4MjAsIDB4NjgsIDB4NjUsIDB4NjEsIDB4NjQsIDB4NjUsCi0weDcyLCAweDIwLCAweDYzLCAweDY4LCAweDY1LCAweDYzLCAweDZiLCAweDczLCAweDc1LCAweDZkLCAweDIxLCAweDBhLCAweDAwLCAweDQyLCAweDYxLCAweDY0LAotMHgyMCwgMHg0NSwgMHg0YywgMHg0NiwgMHgyMCwgMHg3MCwgMHg2MSwgMHg3MiwgMHg2MSwgMHg2ZCwgMHg2NSwgMHg3NCwgMHg2NSwgMHg3MiwgMHgyMCwgMHg3NCwKLTB4NjEsIDB4NjIsIDB4NmMsIDB4NjUsIDB4MjEsIDB4MGEsIDB4MDAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4NjMsIDB4NjgsIDB4NjUsIDB4NjMsIDB4NmIsIDB4NzMsCi0weDc1LCAweDZkLCAweDIwLCAweDNkLCAweDIwLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDYzLAotMHg2ZiwgMHg3NSwgMHg2ZSwgMHg3NCwgMHgyMCwgMHgzZCwgMHgyMCwgMHgyNSwgMHg3OCwgMHgwYSwgMHgwMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKLTB4MjAsIDB4MjAsIDB4MjAsIDB4NjgsIDB4NjQsIDB4NzIsIDB4MjAsIDB4M2QsIDB4MjAsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsIDB4MjAsIDB4MjAsIDB4MjAsCi0weDIwLCAweDIwLCAweDYyLCAweDVmLCAweDczLCAweDY5LCAweDdhLCAweDY1LCAweDIwLCAweDNkLCAweDIwLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDYyLAotMHg1ZiwgMHg3MywgMHg2OSwgMHg2NywgMHg2ZSwgMHg2MSwgMHg3NCwgMHg3NSwgMHg3MiwgMHg2NSwgMHgyMCwgMHgzZCwgMHgyMCwgMHgyNSwgMHg3OCwgMHgwYSwKLTB4MDAsIDB4MjAsIDB4MjAsIDB4NjIsIDB4NWYsIDB4NzIsIDB4NjUsIDB4NjMsIDB4NmYsIDB4NzIsIDB4NjQsIDB4NzMsIDB4MjAsIDB4M2QsIDB4MjAsIDB4MjUsCi0weDc4LCAweDBhLCAweDAwLCAweDU1LCAweDZlLCAweDZiLCAweDZlLCAweDZmLCAweDc3LCAweDZlLCAweDIwLCAweDYyLCAweDZmLCAweDZmLCAweDc0LCAweDZjLAotMHg2ZiwgMHg2MSwgMHg2NCwgMHg2NSwgMHg3MiwgMHgyMCwgMHg2MywgMHg2YywgMHg2MSwgMHg3MywgMHg3MywgMHgyMSwgMHgwYSwgMHgwMCwgMHg3NCwgMHg3OSwKLTB4NzAsIDB4NjUsIDB4M2QsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsIDB4NjQsIDB4NjEsIDB4NzQsIDB4NjEsIDB4M2QsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsCi0weDcwLCAweDYxLCAweDcyLCAweDYxLCAweDZkLCAweDNkLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDU1LCAweDZlLCAweDZiLCAweDZlLCAweDZmLCAweDc3LAotMHg2ZSwgMHgyMCwgMHg2NiwgMHg2OSwgMHg3MiwgMHg2ZCwgMHg3NywgMHg2MSwgMHg3MiwgMHg2NSwgMHgyMCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHgzYSwKLTB4MjAsIDB4MjUsIDB4NzMsIDB4MGEsIDB4MDAsIDB4NDYsIDB4NjksIDB4NzIsIDB4NmQsIDB4NzcsIDB4NjEsIDB4NzIsIDB4NjUsIDB4MjAsIDB4NzQsIDB4NzksCi0weDcwLCAweDY1LCAweDNhLCAweDAwLCAweDIwLCAweDRjLCAweDY5LCAweDZlLCAweDc1LCAweDc4LCAweDQyLCAweDQ5LCAweDRmLCAweDUzLCAweDAwLCAweDIwLAotMHg1MCwgMHg0MywgMHg0MiwgMHg0OSwgMHg0ZiwgMHg1MywgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDEsIDB4N2EsIDB4NTIsIDB4MDAsIDB4MDEsIDB4N2MsIDB4MDgsIDB4MDEsIDB4MWIsIDB4MGMsIDB4MDQsIDB4MDQsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsCi0weDFjLCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDAwLCAweGUyLCAweGYxLCAweGZmLCAweGZmLCAweDIzLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1ZCwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKLTB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTUsIDB4ZjEsIDB4ZmYsIDB4ZmYsIDB4MWIsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ1LCAweDBkLCAweDA1LCAweDQxLCAweDgzLCAweDAzLCAweDUxLCAweGMzLCAweDQxLCAweGM1LAotMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYywgMHhmMSwgMHhmZiwgMHhmZiwKLTB4OGEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDYsIDB4ODcsIDB4MDMsCi0weDg2LCAweDA0LCAweDgzLCAweDA1LCAweDAzLCAweDdkLCAweDAxLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LAotMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzNiwgMHhmMywgMHhmZiwgMHhmZiwKLTB4NDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDQsIDB4MGQsIDB4MDUsIDB4NDIsIDB4ODYsIDB4MDMsCi0weDgzLCAweDA0LCAweDdkLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDAwLAotMHhiOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHhmMywgMHhmZiwgMHhmZiwgMHg3YSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwKLTB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4NzAsIDB4YzMsIDB4NDEsCi0weGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDI4LCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAwLCAweDAwLCAweDAwLAotMHhhMywgMHhmMywgMHhmZiwgMHhmZiwgMHg2NSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NywgMHgwZCwKLTB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4NTYsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsCi0weGM1LCAweDBjLCAweDA0LCAweDA0LCAweDI4LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweDAwLCAweDAwLCAweGRjLCAweGYzLCAweGZmLCAweGZmLAotMHhjYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0NiwgMHg4NywgMHgwMywKLTB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4YmYsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsCi0weDFjLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDAxLCAweDAwLCAweDAwLCAweDdjLCAweGY0LCAweGZmLCAweGZmLCAweDA5LCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0NSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKLTB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NjUsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MGEsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ2LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAotMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg3YywgMHgwMSwgMHgwMCwgMHgwMCwgMHg0ZiwgMHhmNCwgMHhmZiwgMHhmZiwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDUsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCi0weDFjLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDAxLCAweDAwLCAweDAwLCAweDM4LCAweGY0LCAweGZmLCAweGZmLCAweDBjLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0OCwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKLTB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YmMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MjQsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ5LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAotMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMSwgMHhmNCwgMHhmZiwgMHhmZiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDgsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCi0weDFjLCAweDAwLCAweDAwLCAweDAwLCAweGZjLCAweDAxLCAweDAwLCAweDAwLCAweGZkLCAweGYzLCAweGZmLCAweGZmLCAweDE4LCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1MiwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKLTB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjUsIDB4ZjMsIDB4ZmYsIDB4ZmYsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ0LCAweDBkLCAweDA1LCAweDUyLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAotMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMiwgMHgwMCwgMHgwMCwgMHhlZCwgMHhmMywgMHhmZiwgMHhmZiwgMHgxZCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDQsIDB4MGQsIDB4MDUsIDB4NDEsIDB4ODMsIDB4MDMsIDB4NTUsIDB4YzMsIDB4NDEsIDB4YzUsCi0weDBjLCAweDA0LCAweDA0LCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDAyLCAweDAwLCAweDAwLCAweGU2LCAweGYzLCAweGZmLCAweGZmLAotMHgyNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1ZiwgMHhjNSwgMHgwYywKLTB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZWIsIDB4ZjMsIDB4ZmYsIDB4ZmYsCi0weDViLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQzLCAweDg3LCAweDAzLAotMHg4NiwgMHgwNCwgMHg4MywgMHgwNSwgMHgwMiwgMHg1MSwgMHhjMywgMHg0MSwgMHhjNiwgMHg0MSwgMHhjNywgMHg0MSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwKLTB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MWEsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MWIsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDU2LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAotMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgxNSwgMHhmNCwgMHhmZiwgMHhmZiwgMHgzNSwgMHgwMSwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsCi0weDAzLCAweDJiLCAweDAxLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLAotMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgxYSwgMHhmNSwgMHhmZiwgMHhmZiwgMHhhZSwgMHgwNiwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDYsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsCi0weDAzLCAweGExLCAweDA2LCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgxMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwOCwgMHgwMSwgMHgwMCwKLTB4YzAsIDB4NTUsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weGE1LCAweGE1LCAweGE1LCAweGE1LCAweDcwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDAwLCAweDAwLAotMHg4YywgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NGYsIDB4NGYsIDB4NTQsIDB4NWYsIDB4NDksIDB4NGQsIDB4NDEsCi0weDQ3LCAweDQ1LCAweDNkLCAweDY4LCAweDY1LCAweDYxLCAweDY0LCAweDJlLCAweDUzLCAweDIwLCAweDYzLCAweDZmLCAweDZlLCAweDczLCAweDZmLCAweDZjLAotMHg2NSwgMHgzZCwgMHg3NCwgMHg3NCwgMHg3OSwgMHg1MywgMHgzMCwgMHgyMCwgMHg2OSwgMHg3MCwgMHgzZCwgMHg2NCwgMHg2OCwgMHg2MywgMHg3MCwgMHgyMCwKLTB4NzIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4M2QsIDB4MmYsIDB4NjQsIDB4NjUsIDB4NzYsIDB4MmYsIDB4NmUsIDB4NjYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY3Jvc3MtY29tcGlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlL2Nyb3NzLWNvbXBpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExNjJlYjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi1Gcm9tIGRjMjcxMjExOWQ2ODMyZTI0YTliN2JlZDllZDRjZTVhZTAzY2UwYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxNCBKdWwgMjAxMiAxNDoxNDowNyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBta2VsZmltYWdlOiBGaXggY3Jvc3MgYnVpbGQKLQotTWFrZSB0aGUgdG9vbCB0byBiZSBjcm9zcyBjb21waWxhYmxlLCBieSBzZXBhcmF0aW5nIHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkCi10b29scyBmcm9tIHRob3NlIGZvciB0aGUgdGFyZ2V0LiBBbHNvIG1vZGlmaWVkIHRvIG9iZXkgTERGTEFHUy4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0KLSBNYWtlZmlsZS5jb25mLmluICAgIHwgMyArKysKLSBjb25maWd1cmUuYWMgICAgICAgIHwgNyArKysrKy0tCi0gbGludXgtaTM4Ni9NYWtlZmlsZSB8IDIgKy0KLSBsaW51eC1pYTY0L01ha2VmaWxlIHwgMiArLQotIG1haW4vTWFrZWZpbGUgICAgICAgfCA0ICsrLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5jb25mLmluIGIvTWFrZWZpbGUuY29uZi5pbgotaW5kZXggNDY0NWU0NC4uZGNiNmNmMiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmNvbmYuaW4KLSsrKyBiL01ha2VmaWxlLmNvbmYuaW4KLUBAIC0xNyw2ICsxNyw5IEBAIERFRlM9QERFRlNACi0gTElCUz1ATElCU0AKLSBIT1NUX0NDPUBIT1NUX0NDQAotIEhPU1RfQ0ZMQUdTPUBIT1NUX0NGTEFHU0AgICQoREVGUykKLStDQz1AQ0NACi0rQ0ZMQUdTPUBDRkxBR1NAICQoREVGUykKLStMREZMQUdTPUBMREZMQUdTQAotCi0gSTM4Nl9DQyAgICAgPUBJMzg2X0NDQAotIEkzODZfTEQgICAgID1ASTM4Nl9MREAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDY1MmI5NTIuLjBmMmFjNzIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTcwLDYgKzcwLDkgQEAgaWYgdGVzdCAid2l0aF9kZWZhdWx0IiAhPSBubyA7IHRoZW4KLSAJCUFDX01TR19FUlJPUihbY2Mgbm90IGZvdW5kXSkKLSAJZmkKLSAJZXZhbCAiJHt3aXRoX2RlZmF1bHR9X0NDPSckQ0MnIgotKwlpZiB0ZXN0ICJ4JEhPU1RfQ0MiID0gJ3gnOyB0aGVuCi0rCQlBQ19DSEVDS19QUk9HKFtIT1NUX0NDXSwgWyRDQ10sIFskQ0NdLCBbZ2NjXSwgWyRQQVRIXSkKLSsJZmkKLSAJQUNfUFJPR19DUFAKLSAJaWYgdGVzdCAiJENQUCIgPSBubzsgdGhlbgotIAkJQUNfTVNHX0VSUk9SKFtjcHAgbm90IGZvdW5kXSkKLUBAIC0xNzIsOCArMTc1LDggQEAgZmkKLSAKLSBkbmwgLS0tT3V0cHV0IHZhcmlhYmxlcy4uLgotIAotLUhPU1RfQ0M9JENDCi0tSE9TVF9DRkxBR1M9IiRIT1NUX0NGTEFHUyAtTzIgLVdhbGwgXCQoSE9TVF9DUFBGTEFHUykiCi0rQ0ZMQUdTPSIke0NGTEFHUzotLU8yfSAtV2FsbCBcJChDUFBGTEFHUykiCi0rSE9TVF9DRkxBR1M9IiR7SE9TVF9DRkxBR1M6LS1PMn0gLVdhbGwgXCQoSE9TVF9DUFBGTEFHUykiCi0gCi0gZG5sIFRPRE86IGZpZ3VyZSBvdXQgaG93IHRvIHNldCB0aGVzZSBhcHByb3ByaWF0ZWx5IGZvciBjb21waWxlcnMgb3RoZXIgdGhhbiBnY2MKLSBJMzg2X0NGTEFHUz0iJEkzODZfQ0ZMQUdTIC1PcyAtZmZyZWVzdGFuZGluZyAtV2FsbCAtVyAtV25vLWZvcm1hdCBcJChJMzg2X0NQUEZMQUdTKSIKLWRpZmYgLS1naXQgYS9saW51eC1pMzg2L01ha2VmaWxlIGIvbGludXgtaTM4Ni9NYWtlZmlsZQotaW5kZXggNTE1MzFkNi4uN2U4YWEzYyAxMDA2NDQKLS0tLSBhL2xpbnV4LWkzODYvTWFrZWZpbGUKLSsrKyBiL2xpbnV4LWkzODYvTWFrZWZpbGUKLUBAIC00LDcgKzQsNyBAQCBMSTM4Nl9ERVA9TWFrZWZpbGUgTWFrZWZpbGUuY29uZiAkKExJMzg2X0RJUikvTWFrZWZpbGUKLSAKLSAkKExJMzg2X09CSikvbWtlbGYtbGludXgtaTM4Ni5vOiAkKExJMzg2X0RJUikvbWtlbGYtbGludXgtaTM4Ni5jICQoTEkzODZfRElSKS9jb252ZXJ0LmJpbi5jICQoTEkzODZfREVQKQotIAkkKE1LRElSKSAtcCAkKEBEKQotLQkkKEhPU1RfQ0MpICQoSE9TVF9DRkxBR1MpIC1jIC1nICQ8IC1vICRACi0rCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtZyAkPCAtbyAkQAotIAotIAotIGlmZGVmIEkzODZfQ0MKLWRpZmYgLS1naXQgYS9saW51eC1pYTY0L01ha2VmaWxlIGIvbGludXgtaWE2NC9NYWtlZmlsZQotaW5kZXggMzhmNWQ4Yy4uNWRmODg3MCAxMDA2NDQKLS0tLSBhL2xpbnV4LWlhNjQvTWFrZWZpbGUKLSsrKyBiL2xpbnV4LWlhNjQvTWFrZWZpbGUKLUBAIC00LDcgKzQsNyBAQCBMSUE2NF9ERVA9TWFrZWZpbGUgTWFrZWZpbGUuY29uZiAkKExJQTY0X0RJUikvTWFrZWZpbGUKLSAKLSAkKExJQTY0X09CSikvbWtlbGYtbGludXgtaWE2NC5vOiAkKExJQTY0X0RJUikvbWtlbGYtbGludXgtaWE2NC5jICQoTElBNjRfRElSKS9jb252ZXJ0LmJpbi5jICQoTElBNjRfREVQKQotIAkkKE1LRElSKSAtcCAkKEBEKQotLQkkKEhPU1RfQ0MpICQoSE9TVF9DRkxBR1MpIC1jIC1nICQ8IC1vICRACi0rCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtZyAkPCAtbyAkQAotIAotIGlmZGVmIElBNjRfQ0MKLSAKLWRpZmYgLS1naXQgYS9tYWluL01ha2VmaWxlIGIvbWFpbi9NYWtlZmlsZQotaW5kZXggNDAzYjBhNC4uY2Q1MzYxMyAxMDA2NDQKLS0tLSBhL21haW4vTWFrZWZpbGUKLSsrKyBiL21haW4vTWFrZWZpbGUKLUBAIC00LDExICs0LDExIEBAIE1LRUxGX09CSlM9JChPQkpESVIpL21haW4vbWtlbGZJbWFnZS5vIFwKLSAKLSAkKE9CSkRJUikvc2Jpbi9ta2VsZkltYWdlOiAkKE1LRUxGX09CSlMpICQoREVQUykKLSAJJChNS0RJUikgLXAgJChARCkKLS0JJChIT1NUX0NDKSAkKEhPU1RfQ0ZMQUdTKSAkKE1LRUxGX09CSlMpIC1vICRAICQoTElCUykKLSsJJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChNS0VMRl9PQkpTKSAtbyAkQCAkKExJQlMpCi0gCi0gJChPQkpESVIpL21haW4vbWtlbGZJbWFnZS5vOiBtYWluL21rZWxmSW1hZ2UuYyBpbmNsdWRlL21rZWxmSW1hZ2UuaCAkKERFUFMpCi0gCSQoTUtESVIpIC1wICQoQEQpCi0tCSQoSE9TVF9DQykgJChIT1NUX0NGTEFHUykgLWMgJDwgLW8gJEAKLSsJJChDQykgJChDRkxBR1MpIC1jICQ8IC1vICRACi0gCi0gJChPQkpESVIpL21hbi9tYW44L21rZWxmSW1hZ2UuODogbWFpbi9ta2VsZkltYWdlLm1hbgotIAkkKE1LRElSKSAtcCAkKEBEKQotLS0KLTIuOC4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZS9maXgtbWFrZWZpbGUtdG8tZmluZC1saWJ6LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvZml4LW1ha2VmaWxlLXRvLWZpbmQtbGliei5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU1NDc1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZS9maXgtbWFrZWZpbGUtdG8tZmluZC1saWJ6LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotTGV0IG1ha2VmaWxlIGZpbmQgbGlieiBhbmQgemxpYi5oIGJ5IENGTEFHUyBhbmQgTERGTEFHUy4KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAwZjJhYzcyLi5mOTA5OWEyIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02Miw3ICs2Miw3IEBAIEFDX0NIRUNLX1BST0coW1JQTV0sICAgcnBtLCAgIHJwbSwgICBbXSwgWyRQQVRIXSkKLSBBQ19DSEVDS19QUk9HKFtTRURdLCAgIHNlZCwgICBzZWQsICAgW10sIFskUEFUSF0pCi0gQUNfQ0hFQ0tfUFJPRyhbRklORF0sICBmaW5kLCAgZmluZCwgIFtdLCBbJFBBVEhdKQotIAotLUFDX0NIRUNLX0hFQURFUih6bGliLmgsIEFDX0NIRUNLX0xJQih6LCBpbmZsYXRlSW5pdF8sIFtBQ19ERUZJTkUoSEFWRV9aTElCX0gsIDEpIExJQlM9IiRMSUJTIC1seiJdKSkKLStBQ19DSEVDS19IRUFERVIoemxpYi5oLCBBQ19DSEVDS19MSUIoeiwgaW5mbGF0ZUluaXRfLCBbQUNfREVGSU5FKEhBVkVfWkxJQl9ILCAxKSBMSUJTPSIkTElCUyAkTERGTEFHUyAtbHoiXSkpCi0gCi0gZG5sIEZpbmQgdGhlIGRlZmF1bHQgcHJvZ3JhbXMKLSBpZiB0ZXN0ICJ3aXRoX2RlZmF1bHQiICE9IG5vIDsgdGhlbgotQEAgLTE3Niw3ICsxNzYsNyBAQCBmaQotIGRubCAtLS1PdXRwdXQgdmFyaWFibGVzLi4uCi0gCi0gQ0ZMQUdTPSIke0NGTEFHUzotLU8yfSAtV2FsbCBcJChDUFBGTEFHUykiCi0tSE9TVF9DRkxBR1M9IiR7SE9TVF9DRkxBR1M6LS1PMn0gLVdhbGwgXCQoSE9TVF9DUFBGTEFHUykiCi0rSE9TVF9DRkxBR1M9IiR7SE9TVF9DRkxBR1M6LS1PMn0gLVdhbGwgXCQoSE9TVF9DUFBGTEFHUykgJENGTEFHUyIKLSAKLSBkbmwgVE9ETzogZmlndXJlIG91dCBob3cgdG8gc2V0IHRoZXNlIGFwcHJvcHJpYXRlbHkgZm9yIGNvbXBpbGVycyBvdGhlciB0aGFuIGdjYwotIEkzODZfQ0ZMQUdTPSIkSTM4Nl9DRkxBR1MgLU9zIC1mZnJlZXN0YW5kaW5nIC1XYWxsIC1XIC1Xbm8tZm9ybWF0IFwkKEkzODZfQ1BQRkxBR1MpIgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZV9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzMGZhN2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2VfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXR5IGZvciBjcmVhdGluZyBFTEYgYm9vdCBpbWFnZXMgZm9yIEVMRi1iYXNlZCBMaW51eCBrZXJuZWwgaW1hZ2VzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jb3JlYm9vdC5vcmcvTWtlbGZpbWFnZSIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE1YmVkMmY2MGQzNTc2MThjYTE2MWFkNTM5ZjdjMGEiCi0KLVNSQ1JFViA9ICI2ODZhNDhhMzM5YjMyMDAxODRjMjdlN2Y5OGQ0YzAzMTgwYjJiZTZjIgotUFYgPSAiNC4wK2dpdCR7U1JDUFZ9IgotUkVDSVBFX05PX1VQREFURV9SRUFTT04gPSAibWtlbGZpbWFnZSBoYXMgYmVlbiByZW1vdmVkIGluIGNvcmVib290IDQuMSByZWxlYXNlOiBcCi1odHRwOi8vcmV2aWV3LmNvcmVib290Lm9yZy9naXR3ZWI/cD1jb3JlYm9vdC5naXQ7YT1jb21taXQ7aD0zNGZjNGFiODBiNTA3NzM5ZTI1ODBkNDkwZGZmNjdmY2ZkZGUxMWVhIgotCi0KLURFUEVORFMgKz0gInpsaWIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vcmV2aWV3LmNvcmVib290Lm9yZy9wL2NvcmVib290O3Byb3RvY29sPWh0dHAgXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAotICAgICAgICAgICBmaWxlOi8vZml4LW1ha2VmaWxlLXRvLWZpbmQtbGliei5wYXRjaCAgIFwKLSAgICAgICAgICAgZmlsZTovL2NvbnZlcnQuYmluLmMgXAotIgotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0L3V0aWwvbWtlbGZJbWFnZSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIlwKLSAgICBIT1NUX0NDPScke0JVSUxEX0NDfScgXAotICAgIEhPU1RfQ0ZMQUdTPScke0JVSUxEX0NGTEFHU30nIFwKLSAgICBIT1NUX0NQUEZMQUdTPScke0JVSUxEX0NQUEZMQUdTfScgXAotICAgIEkzODZfQ0ZMQUdTPSctZm5vLXN0YWNrLXByb3RlY3RvcicgXAotICAgIElBNjRfQ0ZMQUdTPSctZm5vLXN0YWNrLXByb3RlY3RvcicgXAotIgotRVhUUkFfT0VDT05GX2FwcGVuZF94ODYtNjQgPSAiIC0td2l0aC1pMzg2PSR7SE9TVF9TWVN9IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotZG9fY29uZmlndXJlX3ByZXBlbmQtY2xhc3MtbmF0aXZlKCkgewotCWNwICR7V09SS0RJUn0vY29udmVydC5iaW4uYyAke1N9L2xpbnV4LWkzODYvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtZGlyICR7RH0ke2RhdGFkaXJ9L21rZWxmSW1hZ2UvZWxmMzItaTM4NgotCXJtZGlyICR7RH0ke2RhdGFkaXJ9L21rZWxmSW1hZ2UKLQljaG93biByb290OnJvb3QgJHtEfS8ke3NiaW5kaXJ9L21rZWxmSW1hZ2UKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rbGlicy9maWxlcy9hdm9pZC1mYWlsdXJlLW9uLXN5bWJvbC1wcm92aWRlZC1ieS1hcHBsaWNhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtsaWJzL2ZpbGVzL2F2b2lkLWZhaWx1cmUtb24tc3ltYm9sLXByb3ZpZGVkLWJ5LWFwcGxpY2F0aW9uLnBhdGNoCmluZGV4IDdkNmQ2MmUuLjE3ZDlhZjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtsaWJzL2ZpbGVzL2F2b2lkLWZhaWx1cmUtb24tc3ltYm9sLXByb3ZpZGVkLWJ5LWFwcGxpY2F0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtsaWJzL2ZpbGVzL2F2b2lkLWZhaWx1cmUtb24tc3ltYm9sLXByb3ZpZGVkLWJ5LWFwcGxpY2F0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBmMTcyMTAxMTMwNjA0ZTRhOWVmYTU3NDZmNGQ4ZDMwZGU5OWEwZmRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkY2I0NTI1Njk3MGIxNWI2NzJkMDAwNDUzMzgyNmM5NDA4MzM1NmU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogRnJpLCAxNyBBcHIgMjAxNSAxNDo0ODoyMCArMDgwMAotU3ViamVjdDogW1BBVENIXSBhdm9pZCBmYWlsdXJlIG9uIHN5bWJvbCBwcm92aWRlZCBieSBhcHBsaWNhdGlvbgorU3ViamVjdDogW1BBVENIIDQvNl0gYXZvaWQgZmFpbHVyZSBvbiBzeW1ib2wgcHJvdmlkZWQgYnkgYXBwbGljYXRpb24KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKQEAgLTEzLDEyICsxMywxMyBAQAogb2Ygc3ltYm9scy4KIAogU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvbWtsaWJzIHwgMjggKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL21rbGlicyBiL3NyYy9ta2xpYnMKLWluZGV4IGM1NjE0ZWEuLmIwZDkwMzQgMTAwNzU1CitpbmRleCBhMzUzM2MwLi42NmI3YTA5IDEwMDc1NQogLS0tIGEvc3JjL21rbGlicwogKysrIGIvc3JjL21rbGlicwogQEAgLTEzMyw5ICsxMzMsOSBAQCBjbGFzcyBTeW1ib2wob2JqZWN0KToKQEAgLTMxLDkgKzMyLDkgQEAKIC0gICAgICAgIHNlbGYud2Vhaywgc2VsZi5saWJyYXJ5ID0gd2VhaywgbGlicmFyeQogKyAgICAgICAgc2VsZi53ZWFrLCBzZWxmLmxpYnJhcnksIHNlbGYub2JqZWN0ID0gd2VhaywgbGlicmFyeSwgb2JqZWN0CiAgCi0gIyBSZXR1cm4gdW5kZWZpbmVkIHN5bWJvbHMgaW4gYW4gb2JqZWN0IGFzIGEgc2V0IG9mIHR1cGxlcyAobmFtZSwgd2Vha25lc3MpCi0gZGVmIHVuZGVmaW5lZF9zeW1ib2xzKG9iaik6Ci1AQCAtMTQ0LDYgKzE0NCwxMSBAQCBkZWYgdW5kZWZpbmVkX3N5bWJvbHMob2JqKToKKyBkZWYgc3ltYm9sX2lzX2JsYWNrbGlzdGVkKG5hbWUpOgorICAgICAjIFRoZSBBUk0gRW1iZWRkZWQgQUJJIHNwZWMgc3RhdGVzIHN5bWJvbHMgdW5kZXIgdGhpcyBuYW1lc3BhY2UgYXMKK0BAIC0xNTIsNiArMTUyLDExIEBAIGRlZiB1bmRlZmluZWRfc3ltYm9scyhvYmopOgogIAogICAgICBvdXRwdXQgPSBjb21tYW5kKCJta2xpYnMtcmVhZGVsZiIsICItLXByaW50LXN5bWJvbHMtdW5kZWZpbmVkIiwgb2JqKQogIApAQCAtNDUsNyArNDYsNyBAQAogICAgICByZXN1bHQgPSBbXQogICAgICBmb3IgbGluZSBpbiBvdXRwdXQ6CiAgICAgICAgICBuYW1lLCB3ZWFrX3N0cmluZywgdmVyc2lvbl9zdHJpbmcsIGxpYnJhcnlfc3RyaW5nID0gbGluZS5zcGxpdCgpWzo0XQotQEAgLTE2MCw3ICsxNjUsNyBAQCBkZWYgdW5kZWZpbmVkX3N5bWJvbHMob2JqKToKK0BAIC0xNzEsNyArMTc2LDcgQEAgZGVmIHVuZGVmaW5lZF9zeW1ib2xzKG9iaik6CiAgICAgICAgICBpZiBsaWJyYXJ5X3N0cmluZy5sb3dlcigpICE9ICdub25lJzoKICAgICAgICAgICAgICBsaWJyYXJ5ID0gbGlicmFyeV9zdHJpbmcKICAKQEAgLTU0LDcgKzU1LDcgQEAKICAKICAgICAgcmV0dXJuIHJlc3VsdAogIAotQEAgLTQ5NSwxMiArNTAwLDEzIEBAIHdoaWxlIDE6CitAQCAtNDk4LDEyICs1MDMsMTMgQEAgd2hpbGUgMToKICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmUuc2VhcmNoKCJecHNfIiwgc3RyKHN5bWJvbCkpKQogICAgICAgICAgICAgICAgICBhbmQgbm90IChyZS5zZWFyY2goImxkLWxpbnV4LnNvLjMkIiwgc3RyKHN5bWJvbCkpKQogICAgICAgICAgICAgICAgICBhbmQgbm90IChyZS5zZWFyY2goIl5fX2dudV9sb2NhbF9ncCIsIHN0cihzeW1ib2wpKSkpOgpAQCAtNjgsOCArNjksOCBAQAogKyAgICBwcmVzZW50X3N5bWJvbF9wcm9ncyA9IHt9CiAgICAgIGNoZWNrZWRfbGlicyA9IHNtYWxsX2xpYnMKICAgICAgY2hlY2tlZF9saWJzLmV4dGVuZChhdmFpbGFibGVfbGlicykKLSAgICAgY2hlY2tlZF9saWJzLmFwcGVuZChsZGxpYikKLUBAIC01MTAsNiArNTE2LDEyIEBAIHdoaWxlIDE6CisgICAgIGNoZWNrZWRfbGlicy5hcHBlbmQoc3lzcm9vdCArIGxkbGliKQorQEAgLTUxMyw2ICs1MTksMTIgQEAgd2hpbGUgMToKICAgICAgICAgICAgICBuYW1lcyA9IHN5bWJvbC5iYXNlX25hbWVzKCkKICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKICAgICAgICAgICAgICAgICAgcHJlc2VudF9zeW1ib2xzW25hbWVdID0gc3ltYm9sCkBAIC04Miw3ICs4Myw3IEBACiAgCiAgICAgICMgYXJlIHdlIGZpbmlzaGVkPwogICAgICBudW1fdW5yZXNvbHZlZCA9IDAKLUBAIC01NjUsNiArNTc3LDE0IEBAIHdoaWxlIDE6CitAQCAtNTY4LDYgKzU4MCwxNCBAQCB3aGlsZSAxOgogICAgICBmb3IgbmFtZSBpbiBuZWVkZWRfc3ltYm9sczoKICAgICAgICAgIGlmIG5vdCBuYW1lIGluIHN5bWJvbF9wcm92aWRlcjoKICAgICAgICAgICAgICBpZiBub3QgbmVlZGVkX3N5bWJvbHNbbmFtZV0ud2VhazoKQEAgLTk4LDUgKzk5LDUgQEAKICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgbGliID0gc3ltYm9sX3Byb3ZpZGVyW25hbWVdCiAtLSAKLTEuOC41LjIuMjMzLmc5MzJmN2U0CisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzLzAwMDEtbHNtbWMtcmVwbGFjZS1zdHJuY3B5LXdpdGgtbWVtbW92ZS1vbi1vdmVybGFwcGluZy1tZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlscy8wMDAxLWxzbW1jLXJlcGxhY2Utc3RybmNweS13aXRoLW1lbW1vdmUtb24tb3ZlcmxhcHBpbmctbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJlMjVmZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlscy8wMDAxLWxzbW1jLXJlcGxhY2Utc3RybmNweS13aXRoLW1lbW1vdmUtb24tb3ZlcmxhcHBpbmctbWUucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAxNzVhYzBmMzYyYmY2MTIxYzM1MzdlMmYxNzYwYWQ0MWM4ZjgxMzY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjkgTWFyIDIwMTggMDE6MDQ6NTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbHNtbWM6IHJlcGxhY2Ugc3RybmNweSB3aXRoIG1lbW1vdmUgb24gb3ZlcmxhcHBpbmcgbWVtb3J5CisgY29weQorCitoZXJlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzc2VzIGFyZSBvdmVybGFwcGluZyBzbyB1c2luZyBtZW1tb3ZlIGlzCitnb2luZyB0byBiZSBtb3JlIGVmZmljaWVudC4KKworQWRkaXRpb25hbGx5LCB0aGUgYm91bmRlZCBzaXplIGZvciBjb3B5IGlzIG92ZXJmbG93aW5nIGZvciBmaXJzdCBjb3B5CisKK0luIGZ1bmN0aW9uICdzdHJuY3B5JywKKyAgICBpbmxpbmVkIGZyb20gJ3JlYWRfZmlsZScgYXQgbHNtbWMuYzozNTY6MzoKKy9tbnQvYS9vZS9idWlsZC90bXAvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC1iZWMtbGludXgtZ251ZWFiaS9tbWMtdXRpbHMvMC4xLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nX2ZvcnRpZmllZC5oOjEwNjoxMDogZXJyb3I6ICdfX2J1aWx0aW5fc3RybmNweScgYWNjZXNzaW5nIDQwOTYgYnl0ZXMgYXQgb2Zmc2V0cyAwIGFuZCAxIG92ZXJsYXBzIDQwOTUgYnl0ZXMgYXQgb2Zmc2V0IDEgWy1XZXJyb3I9cmVzdHJpY3RdCisgICByZXR1cm4gX19idWlsdGluX19fc3RybmNweV9jaGsgKF9fZGVzdCwgX19zcmMsIF9fbGVuLCBfX2JvcyAoX19kZXN0KSk7CisgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTAzMTQ3MjMvXQorIGxzbW1jLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9sc21tYy5jIGIvbHNtbWMuYworaW5kZXggYzRmYWEwMC4uYmNiODU0ZCAxMDA2NDQKKy0tLSBhL2xzbW1jLmMKKysrKyBiL2xzbW1jLmMKK0BAIC0zNTMsNyArMzUzLDcgQEAgY2hhciAqcmVhZF9maWxlKGNoYXIgKm5hbWUpCisgCQlsaW5lW3N0cmxlbihsaW5lKSAtIDFdID0gJ1wwJzsKKyAKKyAJd2hpbGUgKGlzc3BhY2UobGluZVswXSkpCistCQlzdHJuY3B5KCZsaW5lWzBdLCAmbGluZVsxXSwgc2l6ZW9mKGxpbmUpKTsKKysJCW1lbW1vdmUoJmxpbmVbMF0sICZsaW5lWzFdLCBzaXplb2YobGluZSktMSk7CisgCisgCXJldHVybiBzdHJkdXAobGluZSk7CisgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIKaW5kZXggNTBhY2RiMS4uMzdhNDc1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCkBAIC00LDEyICs0LDE0IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9tbWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mYWUzMjc5MmUyMGY0ZDI3YWRlMWM1YTc2MmQxNmI3ZCIKIAogU1JDQlJBTkNIID89ICJtYXN0ZXIiCi1TUkNSRVYgPSAiMzdjODZlNjBjMDQ0MmZlZjU3MGI3NWNkODFhZWIxZGI0ZDBjYmFmZCIKK1NSQ1JFViA9ICJiNGZlMGM4YzBlNTdhNzRjMDE3NTVmYTkzNjI3MDNiNjBkN2VlNDlkIgogCiBQViA9ICIwLjEiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2NqYi9tbWMtdXRpbHMuZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2NqYi9tbWMtdXRpbHMuZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sc21tYy1yZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1tb3ZlLW9uLW92ZXJsYXBwaW5nLW1lLnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYzZjk4Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA0ZGFiOWJlZDEwMzNmNzk3ZWY5YjQ4MmM3NzM0MmZlM2ZlMjZkMGJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgNiBPY3QgMjAxNSAyMzo1MTozNCArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBtdXNsCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IERhdmlkIE9iZXJob2xsZW56ZXIgPGRhdmlkLm9iZXJob2xsZW56ZXJAc2lnbWEtc3Rhci5hdD4KLS0tLQotIGpmZnNYLXV0aWxzL21rZnMuamZmczIuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jIGIvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jCi1pbmRleCA1NDQ2YTE2Li5jYTVlMGQ1IDEwMDY0NAotLS0tIGEvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jCi0rKysgYi9qZmZzWC11dGlscy9ta2ZzLmpmZnMyLmMKLUBAIC03Miw2ICs3Miw3IEBACi0gI2luY2x1ZGUgPGJ5dGVzd2FwLmg+Ci0gI2luY2x1ZGUgPGNyYzMyLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotIAotICNpbmNsdWRlICJyYnRyZWUuaCIKLSAjaW5jbHVkZSAiY29tbW9uLmgiCi0tLSAKLTIuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy8wMTAtZml4LXJwbWF0Y2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvMDEwLWZpeC1ycG1hdGNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTNkZTZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy8wMTAtZml4LXJwbWF0Y2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1Gcm9tIDgyODM5YzNjMDM3MWNhMmExNjQzYTk5ZDdkMDFmNWJjMWM4NTBiMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYXZpZCBPYmVyaG9sbGVuemVyIDxkYXZpZC5vYmVyaG9sbGVuemVyQHNpZ21hLXN0YXIuYXQ+Ci1EYXRlOiBUaHUsIDIgTWFyIDIwMTcgMTE6NDA6MzYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVwbGFjZSBycG1hdGNoKCkgdXNhZ2Ugd2l0aCBjaGVja2luZyBmaXJzdCBjaGFyYWN0ZXIgb2YgbGluZQotCi1UaGlzIGlzIGJhc2VkIG9uIHRoZSBwYXRjaCBmcm9tIEtoZW0gUmFqIHVzZWQgYnkgb3BlbmVtYmVkZGVkLiBJbgotYWRkaXRpb24gdG8gdGhlIG9yaWdpbmFsIHBhdGNoLCB0aGlzIGFsc28gcmVtb3ZlcyB0aGUgZmFsbGJhY2sKLWltcGxlbWVudGF0aW9uIHRoYXQgd2FzIHByb3ZpZGVkIGZvciBDIGxpYnJhcmllcyB0aGF0IGRvbid0IGltcGxlbWVudAotcnBtYXRjaC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRGF2aWQgT2JlcmhvbGxlbnplciA8ZGF2aWQub2JlcmhvbGxlbnplckBzaWdtYS1zdGFyLmF0PgotLS0tCi0gaW5jbHVkZS9jb21tb24uaCB8IDI1ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29tbW9uLmggYi9pbmNsdWRlL2NvbW1vbi5oCi1pbmRleCBkMGM3MDZkLi5kNjA5MjU3IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9jb21tb24uaAotKysrIGIvaW5jbHVkZS9jb21tb24uaAotQEAgLTEyOSwyMSArMTI5LDYgQEAgZXh0ZXJuICJDIiB7Ci0gCWZwcmludGYoc3RkZXJyLCAiJXM6IHdhcm5pbmchOiAiIGZtdCAiXG4iLCBQUk9HUkFNX05BTUUsICMjX19WQV9BUkdTX18pOyBcCi0gfSB3aGlsZSgwKQotIAotLS8qIHVDbGliYyB2ZXJzaW9ucyBiZWZvcmUgMC45LjM0IGFuZCBtdXNsIGRvbid0IGhhdmUgcnBtYXRjaCgpICovCi0tI2lmIGRlZmluZWQoX19VQ0xJQkNfXykgJiYgXAotLQkJKF9fVUNMSUJDX01BSk9SX18gPT0gMCAmJiBcCi0tCQkoX19VQ0xJQkNfTUlOT1JfXyA8IDkgfHwgXAotLQkJKF9fVUNMSUJDX01JTk9SX18gPT0gOSAmJiBfX1VDTElCQ19TVUJMRVZFTF9fIDwgMzQpKSkgfHwgXAotLQkhZGVmaW5lZChfX0dMSUJDX18pCi0tI3VuZGVmIHJwbWF0Y2gKLS0jZGVmaW5lIHJwbWF0Y2ggX19ycG1hdGNoCi0tc3RhdGljIGlubGluZSBpbnQgX19ycG1hdGNoKGNvbnN0IGNoYXIgKnJlc3ApCi0tewotLSAgICByZXR1cm4gKHJlc3BbMF0gPT0gJ3knIHx8IHJlc3BbMF0gPT0gJ1knKSA/IDEgOgotLQkocmVzcFswXSA9PSAnbicgfHwgcmVzcFswXSA9PSAnTicpID8gMCA6IC0xOwotLX0KLS0jZW5kaWYKLS0KLSAvKioKLSAgKiBwcm9tcHQgdGhlIHVzZXIgZm9yIGNvbmZpcm1hdGlvbgotICAqLwotQEAgLTE2NCwxMCArMTQ5LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwcm9tcHQoY29uc3QgY2hhciAqbXNnLCBib29sIGRlZikKLSAJCX0KLSAKLSAJCWlmIChzdHJjbXAoIlxuIiwgbGluZSkgIT0gMCkgewotLQkJCXN3aXRjaCAocnBtYXRjaChsaW5lKSkgewotLQkJCWNhc2UgMDogcmV0ID0gZmFsc2U7IGJyZWFrOwotLQkJCWNhc2UgMTogcmV0ID0gdHJ1ZTsgYnJlYWs7Ci0tCQkJY2FzZSAtMToKLSsJCQlzd2l0Y2ggKGxpbmVbMF0pIHsKLSsJCQljYXNlICdOJzoKLSsJCQljYXNlICduJzogcmV0ID0gZmFsc2U7IGJyZWFrOwotKwkJCWNhc2UgJ1knOgotKwkJCWNhc2UgJ3knOiByZXQgPSB0cnVlOyBicmVhazsKLSsJCQlkZWZhdWx0OgotIAkJCQlwdXRzKCJ1bmtub3duIHJlc3BvbnNlOyBwbGVhc2UgdHJ5IGFnYWluIik7Ci0gCQkJCWNvbnRpbnVlOwotIAkJCX0KLS0tIAotMi42LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy9hZGQtZXhjbHVzaW9uLXRvLW1rZnMtamZmczItZ2l0LTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvYWRkLWV4Y2x1c2lvbi10by1ta2ZzLWpmZnMyLWdpdC0yLnBhdGNoCmluZGV4IDBlMzc3NmEuLjVkODc0ZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy9hZGQtZXhjbHVzaW9uLXRvLW1rZnMtamZmczItZ2l0LTIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzL2FkZC1leGNsdXNpb24tdG8tbWtmcy1qZmZzMi1naXQtMi5wYXRjaApAQCAtMSw4ICsxLDEwIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotLS0tIC90bXAvbWtmcy5qZmZzMi5jCTIwMDktMDEtMTEgMTU6Mjg6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2l0L2pmZnNYLXV0aWxzL21rZnMuamZmczIuYwkyMDA5LTAxLTExIDE1OjU5OjI5LjAwMDAwMDAwMCArMDEwMAotQEAgLTEwMCw2ICsxMDAsMTEgQEAKK0luZGV4OiBnaXQvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jCisrKysgZ2l0L2pmZnNYLXV0aWxzL21rZnMuamZmczIuYworQEAgLTEwMCw2ICsxMDAsMTEgQEAgc3RydWN0IGZpbGVzeXN0ZW1fZW50cnkgewogIAlzdHJ1Y3QgcmJfbm9kZSBoYXJkbGlua19yYjsKICB9OwogIApAQCAtMTQsNyArMTYsNyBAQAogIHN0cnVjdCByYl9yb290IGhhcmRsaW5rczsKICBzdGF0aWMgaW50IG91dF9mZCA9IC0xOwogIHN0YXRpYyBpbnQgaW5fZmQgPSAtMTsKLUBAIC00MDgsNyArNDEzLDcgQEAKK0BAIC0zMDksNyArMzE0LDcgQEAgc3RhdGljIHN0cnVjdCBmaWxlc3lzdGVtX2VudHJ5ICpyZWN1cnNpdgogIAljaGFyICpocGF0aCwgKnRwYXRoOwogIAlzdHJ1Y3QgZGlyZW50ICpkcCwgKipuYW1lbGlzdDsKICAJc3RydWN0IGZpbGVzeXN0ZW1fZW50cnkgKmVudHJ5OwpAQCAtMjIsOCArMjQsOCBAQAogKwlzdHJ1Y3QgaWdub3JlcGF0aF9lbnRyeSogZWxlbWVudCA9IGlnbm9yZXBhdGg7CiAgCiAgCWlmIChsc3RhdChob3N0cGF0aCwgJnNiKSkgewotIAkJcGVycm9yX21zZ19hbmRfZGllKCIlcyIsIGhvc3RwYXRoKTsKLUBAIC00MTcsNiArNDIyLDE1IEBACisgCQlzeXNfZXJybXNnX2RpZSgiJXMiLCBob3N0cGF0aCk7CitAQCAtMzE4LDYgKzMyMywxNSBAQCBzdGF0aWMgc3RydWN0IGZpbGVzeXN0ZW1fZW50cnkgKnJlY3Vyc2l2CiAgCWVudHJ5ID0gYWRkX2hvc3RfZmlsZXN5c3RlbV9lbnRyeSh0YXJnZXRwYXRoLCBob3N0cGF0aCwKICAJCQlzYi5zdF91aWQsIHNiLnN0X2dpZCwgc2Iuc3RfbW9kZSwgMCwgcGFyZW50KTsKICAKQEAgLTM4LDggKzQwLDggQEAKICsKICAJbiA9IHNjYW5kaXIoaG9zdHBhdGgsICZuYW1lbGlzdCwgMCwgYWxwaGFzb3J0KTsKICAJaWYgKG4gPCAwKSB7Ci0gCQlwZXJyb3JfbXNnX2FuZF9kaWUoIm9wZW5pbmcgZGlyZWN0b3J5ICVzIiwgaG9zdHBhdGgpOwotQEAgLTE0NTMsNiArMTQ2Nyw3IEBACisgCQlzeXNfZXJybXNnX2RpZSgib3BlbmluZyBkaXJlY3RvcnkgJXMiLCBob3N0cGF0aCk7CitAQCAtMTM1OSw2ICsxMzczLDcgQEAgc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10gPSB7CiAgCXsicm9vdCIsIDEsIE5VTEwsICdyJ30sCiAgCXsicGFnZXNpemUiLCAxLCBOVUxMLCAncyd9LAogIAl7ImVyYXNlYmxvY2siLCAxLCBOVUxMLCAnZSd9LApAQCAtNDcsMTUgKzQ5LDE1IEBACiAgCXsib3V0cHV0IiwgMSwgTlVMTCwgJ28nfSwKICAJeyJoZWxwIiwgMCwgTlVMTCwgJ2gnfSwKICAJeyJ2ZXJib3NlIiwgMCwgTlVMTCwgJ3YnfSwKLUBAIC0xNTAwLDYgKzE1MTUsNyBAQAotICIgIC1MLCAtLWxpc3QtY29tcHJlc3NvcnMgIFNob3cgdGhlIGxpc3Qgb2YgdGhlIGF2YWlhYmxlIGNvbXByZXNzb3JzXG4iCitAQCAtMTQwOSw2ICsxNDI0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgaGVscHRleHRbXSA9CisgIiAgLUwsIC0tbGlzdC1jb21wcmVzc29ycyAgU2hvdyB0aGUgbGlzdCBvZiB0aGUgYXZhaWxhYmxlIGNvbXByZXNzb3JzXG4iCiAgIiAgLXQsIC0tdGVzdC1jb21wcmVzc2lvbiAgQ2FsbCBkZWNvbXByZXNzIGFuZCBjb21wYXJlIHdpdGggdGhlIG9yaWdpbmFsIChmb3IgdGVzdClcbiIKICAiICAtbiwgLS1uby1jbGVhbm1hcmtlcnMgICBEb24ndCBhZGQgYSBjbGVhbm1hcmtlciB0byBldmVyeSBlcmFzZWJsb2NrXG4iCiArIiAgLUksIC0taWdub3JlPVBBVEggICAgICAgSWdub3JlIHN1YiBkaXJlY3RvcnkgYW5kIGZpbGUgdHJlZSBiZWxvdyBQQVRIIHdoZW4gcmVjdXJzaW5nIG92ZXIgdGhlIGZpbGUgc3lzdGVtXG4iCiAgIiAgLW8sIC0tb3V0cHV0PUZJTEUgICAgICAgT3V0cHV0IHRvIEZJTEUgKGRlZmF1bHQ6IHN0ZG91dClcbiIKICAiICAtbCwgLS1saXR0bGUtZW5kaWFuICAgICBDcmVhdGUgYSBsaXR0bGUtZW5kaWFuIGZpbGVzeXN0ZW1cbiIKICAiICAtYiwgLS1iaWctZW5kaWFuICAgICAgICBDcmVhdGUgYSBiaWctZW5kaWFuIGZpbGVzeXN0ZW1cbiIKLUBAIC0xNjY2LDYgKzE2ODIsNyBAQAorQEAgLTE1NjYsNiArMTU4Miw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJY2hhciAqY29tcHJfbmFtZSA9IE5VTEw7CiAgCWludCBjb21wcl9wcmlvciAgPSAtMTsKICAJaW50IHdhcm5fcGFnZV9zaXplID0gMDsKQEAgLTYzLDcgKzY1LDcgQEAKICAKICAJcGFnZV9zaXplID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOwogIAlpZiAocGFnZV9zaXplIDwgMCkgLyogU3lzdGVtIGRvZXNuJ3Qga25vdyBzbyAuLi4gKi8KLUBAIC0xNjc2LDcgKzE2OTMsNyBAQAorQEAgLTE1NzYsNyArMTU5Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJamZmczJfY29tcHJlc3NvcnNfaW5pdCgpOwogIAogIAl3aGlsZSAoKG9wdCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsCkBAIC03Miw3ICs3NCw3IEBACiAgCXsKICAJCXN3aXRjaCAob3B0KSB7CiAgCQkJY2FzZSAnRCc6Ci1AQCAtMTcwMCw2ICsxNzE3LDI4IEBACitAQCAtMTYwMCw2ICsxNjE3LDI4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJCQkJd2Fybl9wYWdlX3NpemUgPSAwOyAvKiBzZXQgYnkgdXNlciwgc28gZG9uJ3QgbmVlZCB0byB3YXJuICovCiAgCQkJCWJyZWFrOwogIApAQCAtMTAwLDQgKzEwMiw0IEBACiArCiAgCQkJY2FzZSAnbyc6CiAgCQkJCWlmIChvdXRfZmQgIT0gLTEpIHsKLSAJCQkJCWVycm9yX21zZ19hbmRfZGllKCJvdXRwdXQgZmlsZW5hbWUgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIik7CisgCQkJCQllcnJtc2dfZGllKCJvdXRwdXQgZmlsZW5hbWUgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIik7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvZml4LWFybXY3LW5lb24tYWxpZ25tZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzL2ZpeC1hcm12Ny1uZW9uLWFsaWdubWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZjNTk0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvZml4LWFybXY3LW5lb24tYWxpZ25tZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotRnJvbSA3ZDAyNmE4NTk0NmEwOGI4MTY3ZGNkNzkyZWE2NjYwYmY2YTQ5ZTA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWXVhbmppZSBIdWFuZyA8WXVhbmppZS5IdWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyIE1hciAyMDE3IDEwOjQzOjU2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhbGlnbm1lbnQgdHJhcCB0cmlnZ2VyZWQgYnkgTkVPTiBpbnN0cnVjdGlvbnMKLQotTkVPTiBpbnN0cnVjdGlvbiBWTEQxLjY0IHdhcyB1c2VkIHRvIGNvcHkgNjQgYml0cyBkYXRhIGFmdGVyIHR5cGUKLWNhc3RpbmcsIGFuZCB0aGV5IHdpbGwgdHJpZ2dlciBhbGlnbm1lbnQgdHJhcC4KLVRoaXMgcGF0Y2ggdXNlcyBtZW1jcHkgdG8gYXZvaWQgYWxpZ25tZW50IHByb2JsZW0uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8WXVhbmppZS5IdWFuZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogRGF2aWQgT2JlcmhvbGxlbnplciA8ZGF2aWQub2JlcmhvbGxlbnplckBzaWdtYS1zdGFyLmF0PgotLS0tCi0gdWJpZnMtdXRpbHMvbWtmcy51Ymlmcy9rZXkuaCB8IDE2ICsrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3ViaWZzLXV0aWxzL21rZnMudWJpZnMva2V5LmggYi91Ymlmcy11dGlscy9ta2ZzLnViaWZzL2tleS5oCi1pbmRleCAzOTM3OWZkLi4xMTg4NThiIDEwMDY0NAotLS0tIGEvdWJpZnMtdXRpbHMvbWtmcy51Ymlmcy9rZXkuaAotKysrIGIvdWJpZnMtdXRpbHMvbWtmcy51Ymlmcy9rZXkuaAotQEAgLTE1OSwxMCArMTU5LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkYXRhX2tleV9pbml0KHVuaW9uIHViaWZzX2tleSAqa2V5LCBpbm9fdCBpbnVtLAotICAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZCBrZXlfd3JpdGUoY29uc3QgdW5pb24gdWJpZnNfa2V5ICpmcm9tLCB2b2lkICp0bykKLSB7Ci0tCXVuaW9uIHViaWZzX2tleSAqdCA9IHRvOwotKwlfX2xlMzIgeFsyXTsKLSAKLS0JdC0+ajMyWzBdID0gY3B1X3RvX2xlMzIoZnJvbS0+dTMyWzBdKTsKLS0JdC0+ajMyWzFdID0gY3B1X3RvX2xlMzIoZnJvbS0+dTMyWzFdKTsKLSsJeFswXSA9IGNwdV90b19sZTMyKGZyb20tPnUzMlswXSk7Ci0rCXhbMV0gPSBjcHVfdG9fbGUzMihmcm9tLT51MzJbMV0pOwotKwotKwltZW1jcHkodG8sICZ4LCA4KTsKLSAJbWVtc2V0KHRvICsgOCwgMCwgVUJJRlNfTUFYX0tFWV9MRU4gLSA4KTsKLSB9Ci0gCi1AQCAtMTc0LDEwICsxNzYsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGtleV93cml0ZShjb25zdCB1bmlvbiB1Ymlmc19rZXkgKmZyb20sIHZvaWQgKnRvKQotICAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZCBrZXlfd3JpdGVfaWR4KGNvbnN0IHVuaW9uIHViaWZzX2tleSAqZnJvbSwgdm9pZCAqdG8pCi0gewotLQl1bmlvbiB1Ymlmc19rZXkgKnQgPSB0bzsKLSsJX19sZTMyIHhbMl07Ci0rCi0rCXhbMF0gPSBjcHVfdG9fbGUzMihmcm9tLT51MzJbMF0pOwotKwl4WzFdID0gY3B1X3RvX2xlMzIoZnJvbS0+dTMyWzFdKTsKLSAKLS0JdC0+ajMyWzBdID0gY3B1X3RvX2xlMzIoZnJvbS0+dTMyWzBdKTsKLS0JdC0+ajMyWzFdID0gY3B1X3RvX2xlMzIoZnJvbS0+dTMyWzFdKTsKLSsJbWVtY3B5KHRvLCAmeCwgOCk7Ci0gfQotIAotIC8qKgotLS0gCi0yLjYuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzL210ZC11dGlscy1maXgtY29ycnVwdC1jbGVhbm1hcmtlci13aXRoLWZsYXNoX2VyYXNlLS1qLWNvbW1hbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvbXRkLXV0aWxzLWZpeC1jb3JydXB0LWNsZWFubWFya2VyLXdpdGgtZmxhc2hfZXJhc2UtLWotY29tbWFuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY0MmU3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvbXRkLXV0aWxzLWZpeC1jb3JydXB0LWNsZWFubWFya2VyLXdpdGgtZmxhc2hfZXJhc2UtLWotY29tbWFuZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUZyb20gcGF0Y2h3b3JrIE1vbiBBdWcgIDggMDg6MTY6NDMgMjAxMQotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0Ci1TdWJqZWN0OiBtdGQtdXRpbHM6IGZpeCBjb3JydXB0IGNsZWFubWFya2VyIHdpdGggZmxhc2hfZXJhc2UgLWogY29tbWFuZAotRGF0ZTogU3VuLCAwNyBBdWcgMjAxMSAyMjoxNjo0MyAtMDAwMAotRnJvbTogYjM1MzYyQGZyZWVzY2FsZS5jb20KLVgtUGF0Y2h3b3JrLUlkOiAxMDg4NzMKLU1lc3NhZ2UtSWQ6IDwxMzEyNzkxNDAzLTEzNDczLTEtZ2l0LXNlbmQtZW1haWwtYjM1MzYyQGZyZWVzY2FsZS5jb20+Ci1UbzogPGR3bXcyQGluZnJhZGVhZC5vcmc+Ci1DYzogTGl1IFNodW8gPGIzNTM2MkBmcmVlc2NhbGUuY29tPiwgQXJ0ZW0uQml0eXV0c2tpeUBub2tpYS5jb20sCi0gTGkgWWFuZyA8bGVvbGlAZnJlZXNjYWxlLmNvbT4sIGxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCi0KLUZyb206IExpdSBTaHVvIDxiMzUzNjJAZnJlZXNjYWxlLmNvbT4KLQotRmxhc2hfZXJhc2UgLWogc2hvdWxkIGZpbGwgZGlzY3JldGUgZnJlZW9vYiBhcmVhcyB3aXRoIHJlcXVpcmVkIGJ5dGVzCi1vZiBKRkZTMiBjbGVhbm1hcmtlciBpbiBqZmZzMl9jaGVja19uYW5kX2NsZWFubWFya2VyKCkuIE5vdCBqdXN0IGZpbGwKLXRoZSBmaXJzdCBmcmVlb29iIGFyZWEuCi0KLVRoZSBiZWxvdyBpcyB0aGUgcmVzdWx0IHdpdGhvdXQgdGhpcyB3b3JrYXJvdW5kOgotCi1KRkZTMjogRXJhc2UgYmxvY2sgYXQgMHgwMDAwMDAwMCBpcyBub3QgZm9ybWF0dGVkLiBJdCB3aWxsIGJlIGVyYXNlZAotSkZGUzI6IEVyYXNlIGJsb2NrIGF0IDB4MDAwMDQwMDAgaXMgbm90IGZvcm1hdHRlZC4gSXQgd2lsbCBiZSBlcmFzZWQKLUpGRlMyOiBFcmFzZSBibG9jayBhdCAweDAwMDA4MDAwIGlzIG5vdCBmb3JtYXR0ZWQuIEl0IHdpbGwgYmUgZXJhc2VkCi1KRkZTMjogRXJhc2UgYmxvY2sgYXQgMHgwMDAwYzAwMCBpcyBub3QgZm9ybWF0dGVkLiBJdCB3aWxsIGJlIGVyYXNlZAotSkZGUzI6IEVyYXNlIGJsb2NrIGF0IDB4MDAwMTAwMDAgaXMgbm90IGZvcm1hdHRlZC4gSXQgd2lsbCBiZSBlcmFzZWQKLUpGRlMyOiBFcmFzZSBibG9jayBhdCAweDAwMDE0MDAwIGlzIG5vdCBmb3JtYXR0ZWQuIEl0IHdpbGwgYmUgZXJhc2VkCi1KRkZTMjogRXJhc2UgYmxvY2sgYXQgMHgwMDAxODAwMCBpcyBub3QgZm9ybWF0dGVkLiBJdCB3aWxsIGJlIGVyYXNlZAotSkZGUzI6IEVyYXNlIGJsb2NrIGF0IDB4MDAwMWMwMDAgaXMgbm90IGZvcm1hdHRlZC4gSXQgd2lsbCBiZSBlcmFzZWQKLUpGRlMyOiBFcmFzZSBibG9jayBhdCAweDAwMDIwMDAwIGlzIG5vdCBmb3JtYXR0ZWQuIEl0IHdpbGwgYmUgZXJhc2VkCi1KRkZTMjogRXJhc2UgYmxvY2sgYXQgMHgwMDAyNDAwMCBpcyBub3QgZm9ybWF0dGVkLiBJdCB3aWxsIGJlIGVyYXNlZAotSkZGUzI6IEVyYXNlIGJsb2NrIGF0IDB4MDAwMjgwMDAgaXMgbm90IGZvcm1hdHRlZC4gSXQgd2lsbCBiZSBlcmFzZWQKLS4uLgotCi1TaWduZWQtb2ZmLWJ5OiBMaXUgU2h1byA8YjM1MzYyQGZyZWVzY2FsZS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPgotCi1VcGRhdGVkIGZvciB0aGUgbmV3IHZlcnNpb24KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotdjIgOiBnZXQgbGVuZ3RoIG9mIGF2YWlsYmxlIGZyZWVvb2IgYnl0ZXMgZnJvbSBvb2JpbmZvIGluZm9ybWF0aW9uLAotICAgICAgbm90IHVzZSB0aGUgaW9jdGwgRUNDR0VUTEFZT1VUIHdoaWNoIGlzIGJlaW5nIGRlcHJlY2F0ZWQuCi0KLSBmbGFzaF9lcmFzZS5jIHwgICA0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZmxhc2hfZXJhc2UuYyBiL2ZsYXNoX2VyYXNlLmMKLWluZGV4IDkzMzM3M2EuLjRiOWQ4NGIgMTAwNjQ0Ci0tLS0gYS9taXNjLXV0aWxzL2ZsYXNoX2VyYXNlLmMKLSsrKyBiL21pc2MtdXRpbHMvZmxhc2hfZXJhc2UuYwotQEAgLTk5LDYgKzk5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJYm9vbCBpc05BTkQ7Ci0gCWludCBlcnJvciA9IDA7Ci0gCW9mZl90IG9mZnNldCA9IDA7Ci0rCXZvaWQgKm9vYl9kYXRhID0gTlVMTDsKLSAKLSAJLyoKLSAJICogUHJvY2VzcyB1c2VyIGFyZ3VtZW50cwotQEAgLTIwMSwxNSArMjAyLDQzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCQkJaWYgKGlvY3RsKGZkLCBNRU1HRVRPT0JTRUwsICZvb2JpbmZvKSAhPSAwKQotIAkJCQlyZXR1cm4gc3lzX2Vycm1zZygiJXM6IHVuYWJsZSB0byBnZXQgTkFORCBvb2JpbmZvIiwgbXRkX2RldmljZSk7Ci0gCi0rCQkJY2xlYW5tYXJrZXIudG90bGVuID0gY3B1X3RvX2plMzIoOCk7Ci0gCQkJLyogQ2hlY2sgZm9yIGF1dG9wbGFjZW1lbnQgKi8KLSAJCQlpZiAob29iaW5mby51c2VlY2MgPT0gTVREX05BTkRFQ0NfQVVUT1BMQUNFKSB7Ci0tCQkJCS8qIEdldCB0aGUgcG9zaXRpb24gb2YgdGhlIGZyZWUgYnl0ZXMgKi8KLS0JCQkJaWYgKCFvb2JpbmZvLm9vYmZyZWVbMF1bMV0pCi0rCQkJCXN0cnVjdCBuYW5kX2VjY2xheW91dF91c2VyIGVjY2xheW91dDsKLSsJCQkJaW50IGksIG9vYmF2YWlsOwotKwotKwkJCQlmb3IgKGkgPSAwLCBvb2JhdmFpbCA9IDA7IG9vYmluZm8ub29iZnJlZVtpXVsxXTsgaSsrKQotKwkJCQkJb29iYXZhaWwgKz0gb29iaW5mby5vb2JmcmVlW2ldWzFdOwotKwotKwkJCQlpZiAoIW9vYmF2YWlsKQotIAkJCQkJcmV0dXJuIGVycm1zZygiIEVlZXAuIEF1dG9wbGFjZW1lbnQgc2VsZWN0ZWQgYW5kIG5vIGVtcHR5IHNwYWNlIGluIG9vYiIpOwotKwotKwkJCQkvKiBHZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBmcmVlIGJ5dGVzICovCi0gCQkJCWNsbXBvcyA9IG9vYmluZm8ub29iZnJlZVswXVswXTsKLS0JCQkJY2xtbGVuID0gb29iaW5mby5vb2JmcmVlWzBdWzFdOwotLQkJCQlpZiAoY2xtbGVuID4gOCkKLS0JCQkJCWNsbWxlbiA9IDg7Ci0rCQkJCWNsbWxlbiA9IE1JTihvb2JhdmFpbCwgOCk7Ci0rCi0rCQkJCWlmIChvb2JpbmZvLm9vYmZyZWVbMF1bMV0gPCA4ICYmIG9vYmF2YWlsID49IDgpIHsKLSsJCQkJCWludCBsZWZ0LCBuLCBsYXN0ID0gMDsKLSsJCQkJCXZvaWQgKmNtOwotKwotKwkJCQkJb29iX2RhdGEgPSBtYWxsb2MobXRkLm9vYl9zaXplKTsKLSsJCQkJCWlmICghb29iX2RhdGEpCi0rCQkJCQkJcmV0dXJuIC1FTk9NRU07Ci0rCi0rCQkJCQltZW1zZXQob29iX2RhdGEsIDB4ZmYsIG10ZC5vb2Jfc2l6ZSk7Ci0rCQkJCQljbSA9ICZjbGVhbm1hcmtlcjsKLSsJCQkJCWZvciAoaSA9IDAsIGxlZnQgPSBjbG1sZW47IGxlZnQgOyBpKyspIHsKLSsJCQkJCQluID0gTUlOKGxlZnQsIG9vYmluZm8ub29iZnJlZVtpXVsxXSk7Ci0rCQkJCQkJbWVtY3B5KG9vYl9kYXRhICsgb29iaW5mby5vb2JmcmVlW2ldWzBdLAotKwkJCQkJCQkJY20sIG4pOwotKwkJCQkJCWxlZnQgLT0gbjsKLSsJCQkJCQljbSAgICs9IG47Ci0rCQkJCQkJbGFzdCA9IG9vYmluZm8ub29iZnJlZVtpXVswXSArIG47Ci0rCQkJCQl9Ci0rCi0rCQkJCQljbG1sZW4gPSBsYXN0IC0gY2xtcG9zOwotKwkJCQl9Ci0gCQkJfSBlbHNlIHsKLSAJCQkJLyogTGVnYWN5IG1vZGUgKi8KLSAJCQkJc3dpdGNoIChtdGQub29iX3NpemUpIHsKLUBAIC0yMjcsNyArMjU2LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJCQkJCQlicmVhazsKLSAJCQkJfQotIAkJCX0KLS0JCQljbGVhbm1hcmtlci50b3RsZW4gPSBjcHVfdG9famUzMig4KTsKLSAJCX0KLSAJCWNsZWFubWFya2VyLmhkcl9jcmMgPSBjcHVfdG9famUzMihtdGRfY3JjMzIoMCwgJmNsZWFubWFya2VyLCBzaXplb2YoY2xlYW5tYXJrZXIpIC0gNCkpOwotIAl9Ci1AQCAtMjc2LDcgKzMwNCw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCi0gCQkvKiB3cml0ZSBjbGVhbm1hcmtlciAqLwotIAkJaWYgKGlzTkFORCkgewotLQkJCWlmIChtdGRfd3JpdGVfb29iKG10ZF9kZXNjLCAmbXRkLCBmZCwgKHVpbnQ2NF90KW9mZnNldCArIGNsbXBvcywgY2xtbGVuLCAmY2xlYW5tYXJrZXIpICE9IDApIHsKLSsJCQl2b2lkICpkYXRhID0gb29iX2RhdGEgPyBvb2JfZGF0YSArIGNsbXBvcyA6ICZjbGVhbm1hcmtlcjsKLSsJCQlpZiAobXRkX3dyaXRlX29vYihtdGRfZGVzYywgJm10ZCwgZmQsICh1aW50NjRfdClvZmZzZXQgKyBjbG1wb3MsIGNsbWxlbiwgZGF0YSkgIT0gMCkgewotIAkJCQlzeXNfZXJybXNnKCIlczogTVREIHdyaXRlb29iIGZhaWx1cmUiLCBtdGRfZGV2aWNlKTsKLSAJCQkJY29udGludWU7Ci0gCQkJfQotQEAgLTI5MSw1ICszMjAsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAlzaG93X3Byb2dyZXNzKCZtdGQsIG9mZnNldCwgZWIsIGViX3N0YXJ0LCBlYl9jbnQpOwotIAliYXJldmVyYm9zZSghcXVpZXQsICJcbiIpOwotIAotKwlpZiAob29iX2RhdGEpCi0rCQlmcmVlKG9vYl9kYXRhKTsKLSsKLSAJcmV0dXJuIDA7Ci0gfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIKaW5kZXggNDhiYTJlZS4uYTBlMWNmNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiCkBAIC04LDQyICs4LDYxIEBACiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLWFsdGVybmF0aXZlcwogCiBERVBFTkRTID0gInpsaWIgbHpvIGUyZnNwcm9ncyB1dGlsLWxpbnV4IgorUkRFUEVORFNfbXRkLXV0aWxzLXRlc3RzICs9ICJiYXNoIgogCi1QViA9ICIyLjAuMCIKK1BWID0gIjIuMC4xKyR7U1JDUFZ9IgogCi1TUkNSRVYgPSAiMWJmZWU4NjYwMTMxZmNhN2ExOGY2OGU5NTQ4YTE4Y2E2YjMzNzhhMCIKK1NSQ1JFViA9ICI5YzYxNzM1NTlmOTVlOTM5ZTY2ZWZiMmVjMzE5M2Q2ZjM2MThjZjY5IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy9tdGQtdXRpbHMuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2FkZC1leGNsdXNpb24tdG8tbWtmcy1qZmZzMi1naXQtMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtYXJtdjctbmVvbi1hbGlnbm1lbnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbXRkLXV0aWxzLWZpeC1jb3JydXB0LWNsZWFubWFya2VyLXdpdGgtZmxhc2hfZXJhc2UtLWotY29tbWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDEwLWZpeC1ycG1hdGNoLnBhdGNoIFwKICIKIAogUyA9ICIke1dPUktESVJ9L2dpdC8iCiAKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtaW5zdGFsbC10ZXN0cyIKKwogIyB4YXR0ciBzdXBwb3J0IGNyZWF0ZXMgYW4gYWRkaXRpb25hbCBjb21waWxlLXRpbWUgZGVwZW5kZW5jeSBvbiBhY2wgYmVjYXVzZQogIyB0aGUgc3lzL2FjbC5oIGhlYWRlciBpcyBuZWVkZWQuIGxpYmFjbCBpcyBub3QgbmVlZGVkIGFuZCB0aHVzIGVuYWJsaW5nIHhhdHRyCiAjIHJlZ2FyZGxlc3Mgd2hldGhlciBhY2wgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBpbiB0aGUgZGlzdHJvIHNob3VsZCBiZSBva2F5LgogUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCBkKX0iCiBQQUNLQUdFQ09ORklHW3hhdHRyXSA9ICIsLGFjbCwiCiAKK0NQUEZMQUdTX2FwcGVuZF9yaXNjdjY0ICA9ICIgLXB0aHJlYWQgLURfUkVFTlRSQU5UIgorCiBFWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9JyAnUkFOTElCPSR7UkFOTElCfScgJ0FSPSR7QVJ9JyAnQ0ZMQUdTPSR7Q0ZMQUdTfSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4YXR0cicsICcnLCAnLURXSVRIT1VUX1hBVFRSJywgZCl9IC1JJHtTfS9pbmNsdWRlJyAnQlVJTERESVI9JHtTfSciCiAKLUFMVEVSTkFUSVZFXyR7UE59ID0gImZsYXNoX2VyYXNlYWxsIgorIyBVc2UgaGlnaGVyIHByaW9yaXR5IHRoYW4gY29ycmVzcG9uZGluZyBCdXN5Qm94LXByb3ZpZGVkIGFwcGxldHMKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiZmxhc2hjcCBmbGFzaF9lcmFzZWFsbCBmbGFzaF9sb2NrIGZsYXNoX3VubG9jayBuYW5kZHVtcCBuYW5kd3JpdGUiCitBTFRFUk5BVElWRV8ke1BOfS11YmlmcyA9ICJ1YmlhdHRhY2ggdWJpZGV0YWNoIHViaW1rdm9sIHViaXJlbmFtZSB1YmlybXZvbCB1Ymlyc3ZvbCB1Yml1cGRhdGV2b2wiCisKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtmbGFzaF9lcmFzZWFsbF0gPSAiJHtzYmluZGlyfS9mbGFzaF9lcmFzZWFsbCIKLSMgVXNlIGhpZ2hlciBwcmlvcml0eSB0aGFuIGJ1c3lib3gncyBmbGFzaF9lcmFzZWFsbCAoY3JlYXRlZCB3aGVuIGJ1aWx0IHdpdGggQ09ORklHX0ZMQVNIX0VSQVNFQUxMKQotQUxURVJOQVRJVkVfUFJJT1JJVFlbZmxhc2hfZXJhc2VhbGxdID0gIjEwMCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtuYW5kd3JpdGVdID0gIiR7c2JpbmRpcn0vbmFuZHdyaXRlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW25hbmRkdW1wXSA9ICIke3NiaW5kaXJ9L25hbmRkdW1wIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3ViaWF0dGFjaF0gPSAiJHtzYmluZGlyfS91YmlhdHRhY2giCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdWJpYXR0YWNoXSA9ICIke3NiaW5kaXJ9L3ViaWF0dGFjaCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1YmlkZXRhY2hdID0gIiR7c2JpbmRpcn0vdWJpZGV0YWNoIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3ViaW1rdm9sXSA9ICIke3NiaW5kaXJ9L3ViaW1rdm9sIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3ViaXJlbmFtZV0gPSAiJHtzYmluZGlyfS91YmlyZW5hbWUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdWJpcm12b2xdID0gIiR7c2JpbmRpcn0vdWJpcm12b2wiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdWJpcnN2b2xdID0gIiR7c2JpbmRpcn0vdWJpcnN2b2wiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdWJpdXBkYXRldm9sXSA9ICIke3NiaW5kaXJ9L3ViaXVwZGF0ZXZvbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmbGFzaF9lcmFzZWFsbF0gPSAiJHtzYmluZGlyfS9mbGFzaF9lcmFzZWFsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmbGFzaF9sb2NrXSA9ICIke3NiaW5kaXJ9L2ZsYXNoX2xvY2siCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZmxhc2hfdW5sb2NrXSA9ICIke3NiaW5kaXJ9L2ZsYXNoX3VubG9jayIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmbGFzaGNwXSA9ICIke3NiaW5kaXJ9L2ZsYXNoY3AiCiAKIGRvX2luc3RhbGwgKCkgewogCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gU0JJTkRJUj0ke3NiaW5kaXJ9IE1BTkRJUj0ke21hbmRpcn0gSU5DTFVERURJUj0ke2luY2x1ZGVkaXJ9CiB9CiAKLVBBQ0tBR0VTID0rICJtdGQtdXRpbHMtamZmczIgbXRkLXV0aWxzLXViaWZzIG10ZC11dGlscy1taXNjIgorUEFDS0FHRVMgPSsgIm10ZC11dGlscy1qZmZzMiBtdGQtdXRpbHMtdWJpZnMgbXRkLXV0aWxzLW1pc2MgbXRkLXV0aWxzLXRlc3RzIgogCiBGSUxFU19tdGQtdXRpbHMtamZmczIgPSAiJHtzYmluZGlyfS9ta2ZzLmpmZnMyICR7c2JpbmRpcn0vamZmczJkdW1wICR7c2JpbmRpcn0vamZmczJyZWFkZXIgJHtzYmluZGlyfS9zdW10b29sIgogRklMRVNfbXRkLXV0aWxzLXViaWZzID0gIiR7c2JpbmRpcn0vbWtmcy51YmlmcyAke3NiaW5kaXJ9L3ViaSoiCiBGSUxFU19tdGQtdXRpbHMtbWlzYyA9ICIke3NiaW5kaXJ9L25mdGwqICR7c2JpbmRpcn0vZnRsKiAke3NiaW5kaXJ9L3JmZCogJHtzYmluZGlyfS9kb2MqICR7c2JpbmRpcn0vc2VydmVfaW1hZ2UgJHtzYmluZGlyfS9yZWN2X2ltYWdlIgorRklMRVNfbXRkLXV0aWxzLXRlc3RzID0gIiR7bGliZXhlY2Rpcn0vbXRkLXV0aWxzLyoiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzL210b29scy1tYWtlaW5mby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29scy9tdG9vbHMtbWFrZWluZm8ucGF0Y2gKaW5kZXggMmUyODczYS4uOGNlYjBhZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzL210b29scy1tYWtlaW5mby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHMvbXRvb2xzLW1ha2VpbmZvLnBhdGNoCkBAIC0xLDggKzEsMTAgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbGljZW5zaW5nXQogCi0tLS0gbXRvb2xzLTMuOS45L2NvbmZpZ3VyZS5pbi5vcmlnCTIwMDYtMDQtMTQgMTY6MDU6NTQuMzM3NjU1MTkyIC0wNjAwCi0rKysgbXRvb2xzLTMuOS45L2NvbmZpZ3VyZS5pbgkyMDA2LTA0LTE0IDE2OjEyOjI5LjczNjU0NTQyNCAtMDYwMAotQEAgLTIxLDYgKzIxLDMzIEBACitJbmRleDogbXRvb2xzLTQuMC4xOC9jb25maWd1cmUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtdG9vbHMtNC4wLjE4Lm9yaWcvY29uZmlndXJlLmluCisrKysgbXRvb2xzLTQuMC4xOC9jb25maWd1cmUuaW4KK0BAIC0zNSw2ICszNSwzMyBAQCBBQ19DQU5PTklDQUxfU1lTVEVNCiAgQUNfQ19DT05TVAogIEFDX0NfSU5MSU5FCiAgCkBAIC0zNiw5ICszOCwxMSBAQAogIAogIGRubCBDaGVjayBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zCiAgZG5sIEVuYWJsZSBPUy8yIGV4dGVuZGVkIGRlbnNpdHkgZm9ybWF0IGRpc2tzCi0tLS0gbXRvb2xzLTMuOS45L01ha2VmaWxlLmluLnNhdgkyMDA2LTA0LTE0IDE1OjU2OjE5LjAwMDAwMDAwMCAtMDYwMAotKysrIG10b29scy0zLjkuOS9NYWtlZmlsZS5pbgkyMDA2LTA0LTE0IDE2OjE1OjI5LjMxNTI0NTMxMiAtMDYwMAotQEAgLTExLDEwICsxMSwxMSBAQAorSW5kZXg6IG10b29scy00LjAuMTgvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtdG9vbHMtNC4wLjE4Lm9yaWcvTWFrZWZpbGUuaW4KKysrKyBtdG9vbHMtNC4wLjE4L01ha2VmaWxlLmluCitAQCAtMjYsMTAgKzI2LDExIEBAIFVTRVJDRkxBR1MgPQogIFVTRVJMREZMQUdTID0KICBVU0VSTERMSUJTID0KICAKQEAgLTU0LDcgKzU4LDcgQEAKICAKICAKICAjIGRvIG5vdCBlZGl0IGJlbG93IHRoaXMgbGluZQotQEAgLTE4MSw3ICsxODIsNyBAQAorQEAgLTE5OCw3ICsxOTksNyBAQCBkdmk6IG10b29scy5kdmkKICAKICBwczogbXRvb2xzLnBzCiAgJS5wczogJS5kdmkKQEAgLTYyLDQgKzY2LDQgQEAKICsJJChEVkkyUFMpIC1mIDwgJDwgPiAkQAogIAogIHBkZjogbXRvb2xzLnBkZgotICUucGRmOiAlLnRleGkKKyAlLnBkZjogJS50ZXhpIHN5c2NvbmZkaXIudGV4aQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMS1hc21saWItRHJvcC1wdXJlLWZ1bmN0aW9uLWF0dHJpYnV0ZS1mcm9tLXNlZ19pbml0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMS1hc21saWItRHJvcC1wdXJlLWZ1bmN0aW9uLWF0dHJpYnV0ZS1mcm9tLXNlZ19pbml0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYWUzYTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS8wMDAxLWFzbWxpYi1Ecm9wLXB1cmUtZnVuY3Rpb24tYXR0cmlidXRlLWZyb20tc2VnX2luaXQucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA3N2MzYTc3MjEwZDhjYThiOTRlOTk5YzcxMTE1NmU5ODRhOGRjNzM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzEgTWFyIDIwMTggMTE6MDU6MzMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXNtbGliOiBEcm9wIHB1cmUgZnVuY3Rpb24gYXR0cmlidXRlIGZyb20gc2VnX2luaXQKKworc2VnX2luaXQgcmV0dXJucyB2b2lkLCBzbyBpdCBpcyBpbXB1cmUgZnVuY3Rpb24KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIGluY2x1ZGUvbmFzbWxpYi5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uYXNtbGliLmggYi9pbmNsdWRlL25hc21saWIuaAoraW5kZXggNzllODY2Yi4uYjgwYjdlMiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbmFzbWxpYi5oCisrKysgYi9pbmNsdWRlL25hc21saWIuaAorQEAgLTE5MSw3ICsxOTEsNyBAQCBpbnQ2NF90IHJlYWRzdHJudW0oY2hhciAqc3RyLCBpbnQgbGVuZ3RoLCBib29sICp3YXJuKTsKKyAgKiBzZWdfaW5pdDogSW5pdGlhbGlzZSB0aGUgc2VnbWVudC1udW1iZXIgYWxsb2NhdG9yLgorICAqIHNlZ19hbGxvYzogYWxsb2NhdGUgYSBoaXRoZXJ0byB1bnVzZWQgc2VnbWVudCBudW1iZXIuCisgICovCistdm9pZCBwdXJlX2Z1bmMgc2VnX2luaXQodm9pZCk7Cisrdm9pZCBzZWdfaW5pdCh2b2lkKTsKKyBpbnQzMl90IHB1cmVfZnVuYyBzZWdfYWxsb2Modm9pZCk7CisgCisgLyoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTMuMDEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEzLjAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjE4Y2Q2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTMuMDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyYWwtcHVycG9zZSB4ODYgYXNzZW1ibGVyIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTA5MDQ0ODZmOGZiZjE4NjFjZjQyNzUyZTFhMzllZmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5uYXNtLnVzL3B1Yi9uYXNtL3JlbGVhc2VidWlsZHMvJHtQVn0vbmFzbS0ke1BWfS50YXIuYnoyICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFmN2Q0NjYyMDQwZDI0MzUxZGY3ZDY3MTllZDRmOTdhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA4Zjk3YmFmMGE3Zjg5MjEyOGM2NDEzY2ZhOTNiNjlkYzU4MjVmYmJkMDZjNzA5MjhhZWEwMjg4MzVkMTk4ZmEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JaWYgWyAtZiAke1N9L2FjbG9jYWwubTQgXSAmJiBbICEgLWYgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgotCQltdiAke1N9L2FjbG9jYWwubTQgJHtTfS9hY2luY2x1ZGUubTQKLQlmaQotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW4xCi0KLQlvZV9ydW5tYWtlICdJTlNUQUxMUk9PVD0ke0R9JyBpbnN0YWxsCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1ERVBFTkRTID0gImdyb2ZmLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTMuMDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEzLjAzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNmQ3ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEzLjAzLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiR2VuZXJhbC1wdXJwb3NlIHg4NiBhc3NlbWJsZXIiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MDkwNDQ4NmY4ZmJmMTg2MWNmNDI3NTJlMWEzOWVmZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5hc20udXMvcHViL25hc20vcmVsZWFzZWJ1aWxkcy8ke1BWfS9uYXNtLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hc21saWItRHJvcC1wdXJlLWZ1bmN0aW9uLWF0dHJpYnV0ZS1mcm9tLXNlZ19pbml0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGM1ODFkNDgyZjM5ZDUxMTE4NzljYTk2MDE5MzhmNzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjNlYzg2NDc3YWQzZjBmNjI5MjMyNWZkODllMWQ5M2FlYTJlMmZkNDkwMDcwODYzZjE3ZDQ4ZjdjZDM4NzAxMSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlpZiBbIC1mICR7U30vYWNsb2NhbC5tNCBdICYmIFsgISAtZiAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCisJCW12ICR7U30vYWNsb2NhbC5tNCAke1N9L2FjaW5jbHVkZS5tNAorCWZpCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjEKKworCW9lX3J1bm1ha2UgJ0lOU1RBTExST09UPSR7RH0nIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0RFUEVORFMgPSAiZ3JvZmYtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjcuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS43LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkM2IyNzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjcuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiTmluamEgaXMgYSBzbWFsbCBidWlsZCBzeXN0ZW0gd2l0aCBhIGZvY3VzIG9uIHNwZWVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYXJ0aW5lLmdpdGh1Yi5jb20vbmluamEvIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTgxNTg2YTY0YWQ0ZTQ3NmM3OTFjZGE3ZTJmMmM1MmUiCi0KLURFUEVORFMgPSAicmUyYy1uYXRpdmUgbmluamEtbmF0aXZlIgotCi1TUkNSRVYgPSAiNzE3YjdiNGEzMWRiNjAyNzIwNzU4OGMwZmI4OWMzZWFkMzg0NzQ3YiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21hcnRpbmUvbmluamEuZ2l0O2JyYW5jaD1yZWxlYXNlIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPi4qKSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLQotZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7Ci0JLi9jb25maWd1cmUucHkgLS1ib290c3RyYXAKLX0KLQotZG9fY29tcGlsZSgpIHsKLQkuL2NvbmZpZ3VyZS5weQotCW5pbmphCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtRCAtbSAwNzU1ICAke1N9L25pbmphICR7RH0ke2JpbmRpcn0vbmluamEKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS44LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZmY2ZlZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS44LjIuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJOaW5qYSBpcyBhIHNtYWxsIGJ1aWxkIHN5c3RlbSB3aXRoIGEgZm9jdXMgb24gc3BlZWQuIgorSE9NRVBBR0UgPSAiaHR0cDovL21hcnRpbmUuZ2l0aHViLmNvbS9uaW5qYS8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hODE1ODZhNjRhZDRlNDc2Yzc5MWNkYTdlMmYyYzUyZSIKKworREVQRU5EUyA9ICJyZTJjLW5hdGl2ZSBuaW5qYS1uYXRpdmUiCisKK1NSQ1JFViA9ICIyNTNlOTRjMWZhNTExNzA0YmFlYjYxY2Y2OTk5NWJiZjA5YmE0MzVlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbmluamEtYnVpbGQvbmluamEuZ2l0O2JyYW5jaD1yZWxlYXNlIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPi4qKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7CisJLi9jb25maWd1cmUucHkgLS1ib290c3RyYXAKK30KKworZG9fY29tcGlsZSgpIHsKKwkuL2NvbmZpZ3VyZS5weQorCW5pbmphCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtRCAtbSAwNzU1ICAke1N9L25pbmphICR7RH0ke2JpbmRpcn0vbmluamEKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1Pbmx5LXVzZS1zb3J0LW5hbWUtb24tdmVyc2lvbnMtb2YtdGFyLXdoaWNoLXN1cHBvcnQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1Pbmx5LXVzZS1zb3J0LW5hbWUtb24tdmVyc2lvbnMtb2YtdGFyLXdoaWNoLXN1cHBvcnQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiN2NhN2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLU9ubHktdXNlLXNvcnQtbmFtZS1vbi12ZXJzaW9ucy1vZi10YXItd2hpY2gtc3VwcG9ydC0ucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSBlZjVkYjA2MmI3ZDI1ZTYwNzBhY2M2OTIyZWE0OGY1MDQ5MTMxM2I1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBIYW5zZW4gPG1pY2hhZWwuai5oYW5zZW5AaHAuY29tPgorRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAwOTo0Mjo1NiAtMDgwMAorU3ViamVjdDogW1BBVENIIDEvMl0gT25seSB1c2UgLS1zb3J0PW5hbWUgb24gdmVyc2lvbnMgb2YgdGFyIHdoaWNoIHN1cHBvcnQgaXQuCisgVGhpcyBmaXhlcyBjb21wYXRpYmlsaXR5IHdpdGggYnNkdGFyIGFuZCBvbGQgdmVyc2lvbnMgb2YgR05VIHRhciAoZS5nLgorIFJIRUw2KS4KKworU2lnbmVkLW9mZi1ieTogTWljaGFlbCBIYW5zZW4gPG1pY2hhZWwuai5oYW5zZW5AaHAuY29tPgorU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworLS0tCisgb3BrZy1idWlsZCB8IDExICsrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworSW5kZXg6IG9wa2ctdXRpbHMtMC4zLjYvb3BrZy1idWlsZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wa2ctdXRpbHMtMC4zLjYub3JpZy9vcGtnLWJ1aWxkCisrKysgb3BrZy11dGlscy0wLjMuNi9vcGtnLWJ1aWxkCitAQCAtMjMyLDYgKzIzMiwxMSBAQCBpZiBbICRjb21wcmVzc29yID0gImd6aXAiIF0gOyB0aGVuCisgCWNvbXByZXNzb3JhcmdzPSR6aXBhcmdzCisgZmkKKyAKKyt0c29ydGFyZ3M9CisraWYgdGFyIC0taGVscCAyPiYxIHwgZ3JlcCAtLSAiLS1zb3J0PSIgPiAvZGV2L251bGw7IHRoZW4KKysJdHNvcnRhcmdzPSItLXNvcnQ9bmFtZSIKKytmaQorKworIHNoaWZ0ICQoKCRPUFRJTkQgLSAxKSkKKyAKKyAjIGNvbnRpbnVlIG9uIHRvIHByb2Nlc3MgYWRkaXRpb25hbCBhcmd1bWVudHMKK0BAIC0yODAsOCArMjg1LDggQEAgbWtkaXIgJHRtcF9kaXIKKyBidWlsZF9kYXRlPSIkKGRhdGUgLS11dGMgLS1kYXRlPSJAJHtTT1VSQ0VfREFURV9FUE9DSDotJChkYXRlICslcyl9IiArJVktJW0tJWQpIgorIAorIGVjaG8gJENPTlRST0wgPiAkdG1wX2Rpci90YXJYCistKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAtLXNvcnQ9bmFtZSAtLW10aW1lPSRidWlsZF9kYXRlIC1YICR0bXBfZGlyL3RhclggLWMgJHRhcmZvcm1hdCAuIHwgJGNvbXByZXNzb3IgJGNvbXByZXNzb3JhcmdzID4gJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgKQorLSggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgLS1zb3J0PW5hbWUgLS1tdGltZT0kYnVpbGRfZGF0ZSAtYyAkdGFyZm9ybWF0IC4gfCBnemlwICR6aXBhcmdzID4gJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogKQorKyggY2QgJHBrZ19kaXIgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSRidWlsZF9kYXRlIC1YICR0bXBfZGlyL3RhclggLWMgJHRhcmZvcm1hdCAuIHwgJGNvbXByZXNzb3IgJGNvbXByZXNzb3JhcmdzID4gJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgKQorKyggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSRidWlsZF9kYXRlIC1jICR0YXJmb3JtYXQgLiB8IGd6aXAgJHppcGFyZ3MgPiAkdG1wX2Rpci9jb250cm9sLnRhci5neiApCisgcm0gJHRtcF9kaXIvdGFyWAorIAorIGVjaG8gIjIuMCIgPiAkdG1wX2Rpci9kZWJpYW4tYmluYXJ5CitAQCAtMjk2LDcgKzMwMSw3IEBAIHJtIC1mICRwa2dfZmlsZQorIGlmIFsgIiRvdXRlciIgPSAiYXIiIF0gOyB0aGVuCisgICAoIGNkICR0bXBfZGlyICYmIGFyIC1jcmYgJHBrZ19maWxlIC4vZGViaWFuLWJpbmFyeSAuL2NvbnRyb2wudGFyLmd6IC4vZGF0YS50YXIuJGNleHQgKQorIGVsc2UKKy0gICggY2QgJHRtcF9kaXIgJiYgdGFyIC1jIC0tc29ydD1uYW1lIC0tbXRpbWU9JGJ1aWxkX2RhdGUgJHRhcmZvcm1hdCAuL2RlYmlhbi1iaW5hcnkgLi9jb250cm9sLnRhci5neiAuL2RhdGEudGFyLiRjZXh0IHwgZ3ppcCAkemlwYXJncyA+ICRwa2dfZmlsZSApCisrICAoIGNkICR0bXBfZGlyICYmIHRhciAtYyAkdHNvcnRhcmdzIC0tbXRpbWU9JGJ1aWxkX2RhdGUgJHRhcmZvcm1hdCAuL2RlYmlhbi1iaW5hcnkgLi9jb250cm9sLnRhci5neiAuL2RhdGEudGFyLiRjZXh0IHwgZ3ppcCAkemlwYXJncyA+ICRwa2dfZmlsZSApCisgZmkKKyAKKyBybSAkdG1wX2Rpci9kZWJpYW4tYmluYXJ5ICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0ICR0bXBfZGlyL2NvbnRyb2wudGFyLmd6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAyLW9wa2ctYnVpbGQtVXNlLWxvY2FsLXRpbWUtZm9yLWJ1aWxkX2RhdGUtc2luY2Utb3BrZy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAyLW9wa2ctYnVpbGQtVXNlLWxvY2FsLXRpbWUtZm9yLWJ1aWxkX2RhdGUtc2luY2Utb3BrZy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMzODkxNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDItb3BrZy1idWlsZC1Vc2UtbG9jYWwtdGltZS1mb3ItYnVpbGRfZGF0ZS1zaW5jZS1vcGtnLS5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDU3Mjc4MjZiNTFjZjk5ZmVhZmYzNDgzYTlkZjhhZjIwNDNlN2VmYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIEhhbnNlbiA8bWljaGFlbC5qLmhhbnNlbkBocC5jb20+CitEYXRlOiBNb24sIDI2IEZlYiAyMDE4IDEwOjE3OjAxIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBvcGtnLWJ1aWxkOiBVc2UgbG9jYWwgdGltZSBmb3IgYnVpbGRfZGF0ZSwgc2luY2Ugb3BrZworIGV4dHJhY3RzIGZpbGVzIGFzc3VtaW5nIGxvY2FsIHRpbWUgcmF0aGVyIHRoYW4gVVRDLiBBbHNvIGluY3JlYXNlIHJlc29sdXRpb24KKyBvZiBidWlsZCBkYXRlIGRvd24gdG8gdGhlIHNlY29uZCwgcmF0aGVyIHRoYW4gY2xhbXBpbmcgdG8gbWlkbmlnaHQgb2YgdGhlCisgY3VycmVudCBkYXRlLgorCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEhhbnNlbiA8bWljaGFlbC5qLmhhbnNlbkBocC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCistLS0KKyBvcGtnLWJ1aWxkIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK0luZGV4OiBvcGtnLXV0aWxzLTAuMy42L29wa2ctYnVpbGQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGtnLXV0aWxzLTAuMy42Lm9yaWcvb3BrZy1idWlsZAorKysrIG9wa2ctdXRpbHMtMC4zLjYvb3BrZy1idWlsZAorQEAgLTI4MiwxMSArMjgyLDExIEBAIGZpCisgdG1wX2Rpcj0kZGVzdF9kaXIvSVBLR19CVUlMRC4kJAorIG1rZGlyICR0bXBfZGlyCisgCistYnVpbGRfZGF0ZT0iJChkYXRlIC0tdXRjIC0tZGF0ZT0iQCR7U09VUkNFX0RBVEVfRVBPQ0g6LSQoZGF0ZSArJXMpfSIgKyVZLSVtLSVkKSIKKytidWlsZF9kYXRlPSIkKGRhdGUgLS1kYXRlPSJAJHtTT1VSQ0VfREFURV9FUE9DSDotJChkYXRlICslcyl9IiAiKyVZLSVtLSVkICVIOiVNOiVTIikiCisgCisgZWNobyAkQ09OVFJPTCA+ICR0bXBfZGlyL3RhclgKKy0oIGNkICRwa2dfZGlyICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1tdGltZT0kYnVpbGRfZGF0ZSAtWCAkdG1wX2Rpci90YXJYIC1jICR0YXJmb3JtYXQgLiB8ICRjb21wcmVzc29yICRjb21wcmVzc29yYXJncyA+ICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0ICkKKy0oIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1tdGltZT0kYnVpbGRfZGF0ZSAtYyAkdGFyZm9ybWF0IC4gfCBnemlwICR6aXBhcmdzID4gJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogKQorKyggY2QgJHBrZ19kaXIgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSIkYnVpbGRfZGF0ZSIgLVggJHRtcF9kaXIvdGFyWCAtYyAkdGFyZm9ybWF0IC4gfCAkY29tcHJlc3NvciAkY29tcHJlc3NvcmFyZ3MgPiAkdG1wX2Rpci9kYXRhLnRhci4kY2V4dCApCisrKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbXRpbWU9IiRidWlsZF9kYXRlIiAtYyAkdGFyZm9ybWF0IC4gfCBnemlwICR6aXBhcmdzID4gJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogKQorIHJtICR0bXBfZGlyL3RhclgKKyAKKyBlY2hvICIyLjAiID4gJHRtcF9kaXIvZGViaWFuLWJpbmFyeQorQEAgLTMwMSw3ICszMDEsNyBAQCBybSAtZiAkcGtnX2ZpbGUKKyBpZiBbICIkb3V0ZXIiID0gImFyIiBdIDsgdGhlbgorICAgKCBjZCAkdG1wX2RpciAmJiBhciAtY3JmICRwa2dfZmlsZSAuL2RlYmlhbi1iaW5hcnkgLi9jb250cm9sLnRhci5neiAuL2RhdGEudGFyLiRjZXh0ICkKKyBlbHNlCistICAoIGNkICR0bXBfZGlyICYmIHRhciAtYyAkdHNvcnRhcmdzIC0tbXRpbWU9JGJ1aWxkX2RhdGUgJHRhcmZvcm1hdCAuL2RlYmlhbi1iaW5hcnkgLi9jb250cm9sLnRhci5neiAuL2RhdGEudGFyLiRjZXh0IHwgZ3ppcCAkemlwYXJncyA+ICRwa2dfZmlsZSApCisrICAoIGNkICR0bXBfZGlyICYmIHRhciAtYyAkdHNvcnRhcmdzIC0tbXRpbWU9IiRidWlsZF9kYXRlIiAkdGFyZm9ybWF0IC4vZGViaWFuLWJpbmFyeSAuL2NvbnRyb2wudGFyLmd6IC4vZGF0YS50YXIuJGNleHQgfCBnemlwICR6aXBhcmdzID4gJHBrZ19maWxlICkKKyBmaQorIAorIHJtICR0bXBfZGlyL2RlYmlhbi1iaW5hcnkgJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgJHRtcF9kaXIvY29udHJvbC50YXIuZ3oKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy90YXJfaWdub3JlX2Vycm9yLnBhdGNoCmluZGV4IDM4MjRlYjMuLmQ4OTMxYjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvdGFyX2lnbm9yZV9lcnJvci5wYXRjaApAQCAtMTgsMjYgKzE4LDI3IEBACiAKIAogSW5kZXg6IGdpdC9vcGtnLWJ1aWxkCisKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9vcGtnLWJ1aWxkCiArKysgZ2l0L29wa2ctYnVpbGQKLUBAIC0yNTAsOCArMjUwLDIxIEBAIHRtcF9kaXI9JGRlc3RfZGlyL0lQS0dfQlVJTEQuJCQKLSBta2RpciAkdG1wX2RpcgorQEAgLTI4NSw4ICsyODUsMjEgQEAgbWtkaXIgJHRtcF9kaXIKKyBidWlsZF9kYXRlPSIkKGRhdGUgLS1kYXRlPSJAJHtTT1VSQ0VfREFURV9FUE9DSDotJChkYXRlICslcyl9IiAiKyVZLSVtLSVkICVIOiVNOiVTIikiCiAgCiAgZWNobyAkQ09OVFJPTCA+ICR0bXBfZGlyL3RhclgKLS0oIGNkICRwa2dfZGlyICYmIHRhciAkb2dhcmdzIC1YICR0bXBfZGlyL3RhclggLWMgLS0kY29tcHJlc3NvciAkdGFyZm9ybWF0IC1mICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0IC4gKQotLSggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgLWN6ICR0YXJmb3JtYXQgLWYgJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogLiApCistKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbXRpbWU9IiRidWlsZF9kYXRlIiAtWCAkdG1wX2Rpci90YXJYIC1jICR0YXJmb3JtYXQgLiB8ICRjb21wcmVzc29yICRjb21wcmVzc29yYXJncyA+ICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0ICkKKy0oIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1tdGltZT0iJGJ1aWxkX2RhdGUiIC1jICR0YXJmb3JtYXQgLiB8IGd6aXAgJHppcGFyZ3MgPiAkdG1wX2Rpci9jb250cm9sLnRhci5neiApCiArCiArCiArIyBJZ25vcmUgZXJyb3IgY29kZSAxLCBjYXVzZWQgYnkgbW9kaWZ5aW5nIHRoZSBudW1iZXIgb2YgaGFyZCBsaW5rcyB3aGlsZSBjcmVhdGluZyB0aGUgdGFyIGZpbGUKICtyYz0wCi0rKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAtWCAkdG1wX2Rpci90YXJYIC1jeiAkdGFyZm9ybWF0IC1mICR0bXBfZGlyL2RhdGEudGFyLmd6IC4gKSB8fCByYz0kPworKyggY2QgJHBrZ19kaXIgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSIkYnVpbGRfZGF0ZSIgLVggJHRtcF9kaXIvdGFyWCAtYyAkdGFyZm9ybWF0IC4gfCAkY29tcHJlc3NvciAkY29tcHJlc3NvcmFyZ3MgPiAkdG1wX2Rpci9kYXRhLnRhci4kY2V4dCApIHx8IHJjPSQ/CiAraWYgWyAkcmMgLW5lIDEgXSAmJiBbICRyYyAtbmUgMCBdOyB0aGVuCiArICAgICAgICBleGl0ICRyYyAKICtmaQogKwogK3JjPTAKLSsoIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIHRhciAkb2dhcmdzIC1jeiAkdGFyZm9ybWF0IC1mICR0bXBfZGlyL2NvbnRyb2wudGFyLmd6IC4gKSB8fCByYz0kPworKyggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSIkYnVpbGRfZGF0ZSIgLWMgJHRhcmZvcm1hdCAuIHwgZ3ppcCAkemlwYXJncyA+ICR0bXBfZGlyL2NvbnRyb2wudGFyLmd6ICkgfHwgcmM9JD8KICtpZiBbICRyYyAtbmUgMSBdICYmIFsgJHJjIC1uZSAwIF07IHRoZW4KICsgICAgICAgIGV4aXQgJHJjCiArZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3RocmVhZGVkLXh6LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvdGhyZWFkZWQteHoucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNhNDlmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3RocmVhZGVkLXh6LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1Bhc3MgLS10aHJlYWRzPTAgdG8geHogc28gdGhhdCBpdCB3aWxsIHVzZSBhcyBtYW55IHRocmVhZHMgYXMgdGhlcmUgYXJlIGNvcmVzIHRvIGNvbXByZXNzIHRoZSBwYWNrYWdlcy4gIFRoaXMgbWFrZXMgcWVtdSdzIGRvX3BhY2thZ2VfaXBrIHJ1biBpbiAzNHMgaW5zdGVhZCBvZiAyNzVzIG9uIG15IG1hY2hpbmUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAodWdseSBidXQgd29ya3MsIGRpc2N1c3Npbmcgd2l0aCB1cHN0cmVhbSBub3cpCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvb3BrZy1idWlsZCBiL29wa2ctYnVpbGQKK2luZGV4IDAwNTBjMmIuLjkzYTc5NTYgMTAwNzU1CistLS0gYS9vcGtnLWJ1aWxkCisrKysgYi9vcGtnLWJ1aWxkCitAQCAtMjMwLDYgKzIzMCw4IEBAIGlmIGd6aXAgLS1oZWxwIDI+JjEgfCBncmVwIC0tICItVCIgPiAvZGV2L251bGw7IHRoZW4KKyBmaQorIGlmIFsgJGNvbXByZXNzb3IgPSAiZ3ppcCIgXSA7IHRoZW4KKyAJY29tcHJlc3NvcmFyZ3M9JHppcGFyZ3MKKytlbGlmIFsgJGNvbXByZXNzb3IgPSAieHoiIF0gOyB0aGVuCisrCWNvbXByZXNzb3JhcmdzPSItLXRocmVhZHMgMCIKKyBmaQorIAorIHRzb3J0YXJncz0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuMy41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC4zLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NmNjOGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC4zLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1TVU1NQVJZID0gIkFkZGl0aW9uYWwgdXRpbGl0aWVzIGZvciB0aGUgb3BrZyBwYWNrYWdlIG1hbmFnZXIiCi1TVU1NQVJZX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJVdGlsaXR5IGZvciBtYW5hZ2luZyB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSIKLVNFQ1RJT04gPSAiYmFzZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL29wa2ctdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL29wa2cucHk7YmVnaW5saW5lPTI7ZW5kbGluZT0xODttZDU9NjNjZTllNmJjYzQ0NTE4MWNkOWU0YmFmNGI0Y2NjMzUiCi1QUk9WSURFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAnJywgZCl9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpLyR7QlBOfS9zbmFwc2hvdC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMTllMDljNzliZjExNTJhYWM2MmU4YTEyMGQ2NzlmZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjRiMDg5MTJlMjZhM2Y0ZjZmNDIzZjNiNGU3MTU3YTczYjFmM2E3NDgzZmM1OWIyMTZkMWE4MGI1MGIwYzM4IgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotIyBGb3IgbmF0aXZlIGJ1aWxkcyB3ZSB1c2UgdGhlIGhvc3QgUHl0aG9uCi1QWVRIT05SREVQUyA9ICJweXRob24zIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1pbyBweXRob24zLW1hdGggcHl0aG9uMy1jcnlwdCBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1mY250bCBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1waWNrbGUgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLXRleHR1dGlscyBweXRob24zLXN0cmluZ29sZCIKLVBZVEhPTlJERVBTX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPSAicHl0aG9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLCwsJHtQWVRIT05SREVQU30iCi1QQUNLQUdFQ09ORklHW3VwZGF0ZS1hbHRlcm5hdGl2ZXNdID0gIiwsLCIKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKLQlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlybSAtZiAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgotCWZpCi0KLSAgICBpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGdyZXAgLWxaICIvdXNyL2Jpbi9lbnYuKnB5dGhvbiIgJHtEfSR7YmluZGlyfS8qIHwgeGFyZ3MgLTAgcm0KLSAgICBmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0JaWYgWyAtZSAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIiBdOyB0aGVuCi0JCXNlZCAtaSAke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMgLWUgJ3MsL3Vzci9iaW4sJHtiaW5kaXJ9LGc7IHMsL3Vzci9saWIsJHtub25hcmNoX2xpYmRpcn0sZycKLQlmaQotfQotCi0jIFRoZXNlIGFyZSBlbXB0eSBhbmQgd2lsbCBwdWxsIHB5dGhvbjMtZGV2IGludG8gaW1hZ2VzIHdoZXJlIGl0IHdvdWxkbid0Ci0jIGhhdmUgYmVlbiBvdGhlcndpc2UsIHNvIGRvbid0IGdlbmVyYXRlIHRoZW0uCi1QQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiIKLQotUEFDS0FHRVMgPSsgInVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyIKLUZJTEVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICIke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKLVJQUk9WSURFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcyB1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKLVJSRVBMQUNFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCi1SQ09ORkxJQ1RTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKLQotcGtnX3Bvc3RybV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2coKSB7Ci0Jcm0gLXJmICREJHtub25hcmNoX2xpYmRpcn0vb3BrZy9hbHRlcm5hdGl2ZXMKLQlybWRpciAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cgfHwgdHJ1ZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUNMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuMy42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0ODdjNWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNi5iYgpAQCAtMCwwICsxLDY3IEBACitTVU1NQVJZID0gIkFkZGl0aW9uYWwgdXRpbGl0aWVzIGZvciB0aGUgb3BrZyBwYWNrYWdlIG1hbmFnZXIiCitTVU1NQVJZX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJVdGlsaXR5IGZvciBtYW5hZ2luZyB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSIKK1NFQ1RJT04gPSAiYmFzZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL29wa2ctdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL29wa2cucHk7YmVnaW5saW5lPTI7ZW5kbGluZT0xODttZDU9NjNjZTllNmJjYzQ0NTE4MWNkOWU0YmFmNGI0Y2NjMzUiCitQUk9WSURFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAnJywgZCl9IgorCitTUkNfVVJJID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpLyR7QlBOfS9zbmFwc2hvdC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtT25seS11c2Utc29ydC1uYW1lLW9uLXZlcnNpb25zLW9mLXRhci13aGljaC1zdXBwb3J0LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW9wa2ctYnVpbGQtVXNlLWxvY2FsLXRpbWUtZm9yLWJ1aWxkX2RhdGUtc2luY2Utb3BrZy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGhyZWFkZWQteHoucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vdGFyX2lnbm9yZV9lcnJvci5wYXRjaCIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9vcGtnLXV0aWxzL3JlZnMvIgorCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzOTFjMWM4MGFjYTI2OTYxMzc1ZGQyMmUxZDJkMGNiZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNmIzZjRkZDFjMWVmNjVmNTE5ZDRjZGRmYjM1ZWJlYTQxYWU4YWY5ODlhZWEyNjk5YTM5NzgzNTk4YzMzNzY5IgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworIyBGb3IgbmF0aXZlIGJ1aWxkcyB3ZSB1c2UgdGhlIGhvc3QgUHl0aG9uCitQWVRIT05SREVQUyA9ICJweXRob24zIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1pbyBweXRob24zLW1hdGggcHl0aG9uMy1jcnlwdCBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1mY250bCBweXRob24zLXBpY2tsZSBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtc3RyaW5nb2xkIgorUFlUSE9OUkRFUFNfY2xhc3MtbmF0aXZlID0gIiIKKworUEFDS0FHRUNPTkZJRyA9ICJweXRob24gdXBkYXRlLWFsdGVybmF0aXZlcyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICIsLCwke1BZVEhPTlJERVBTfSIKK1BBQ0tBR0VDT05GSUdbdXBkYXRlLWFsdGVybmF0aXZlc10gPSAiLCwsIgorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgUFJFRklYPSR7cHJlZml4fSBERVNURElSPSR7RH0gaW5zdGFsbAorCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCXJtIC1mICIke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCisJZmkKKworICAgIGlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgZ3JlcCAtbFogIi91c3IvYmluL2Vudi4qcHl0aG9uIiAke0R9JHtiaW5kaXJ9LyogfCB4YXJncyAtMCBybQorICAgIGZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwlpZiBbIC1lICIke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiIF07IHRoZW4KKwkJc2VkIC1pICR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyAtZSAncywvdXNyL2Jpbiwke2JpbmRpcn0sZzsgcywvdXNyL2xpYiwke25vbmFyY2hfbGliZGlyfSxnJworCWZpCit9CisKKyMgVGhlc2UgYXJlIGVtcHR5IGFuZCB3aWxsIHB1bGwgcHl0aG9uMy1kZXYgaW50byBpbWFnZXMgd2hlcmUgaXQgd291bGRuJ3QKKyMgaGF2ZSBiZWVuIG90aGVyd2lzZSwgc28gZG9uJ3QgZ2VuZXJhdGUgdGhlbS4KK1BBQ0tBR0VTX3JlbW92ZSA9ICIke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2IgorCitQQUNLQUdFUyA9KyAidXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnIgorRklMRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIiR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgorUlBST1ZJREVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgorUlJFUExBQ0VTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKK1JDT05GTElDVFNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgorCitwa2dfcG9zdHJtX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZygpIHsKKwlybSAtcmYgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnL2FsdGVybmF0aXZlcworCXJtZGlyICREJHtub25hcmNoX2xpYmRpcn0vb3BrZyB8fCB0cnVlCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuMy41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNTExYjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1TVU1NQVJZID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIgotU1VNTUFSWV9saWJvcGtnID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcnkiCi1TRUNUSU9OID0gImJhc2UiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnL2lzc3Vlcy9saXN0IgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvb3BrZy5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MjE7bWQ1PTkwNDM1YTUxOWM2ZWE2OWVmMjJlNGE4OGJjYzUyZmEwIgotCi1ERVBFTkRTID0gImxpYmFyY2hpdmUiCi0KLVBFID0gIjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL29wa2ctY29uZmlndXJlLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vb3BrZy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZ19jb25mLWNyZWF0ZS1vcGtnLmxvY2staW4tcnVuLWluc3RlYWQtb2YtdmFyLXJ1bi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkMjAyZDA5ZWEwOTMyOTQzMDcxYjg0MjYyNmNhYjEzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MzRiYzIxZGVhMTEyNjIxMTNmYTg2YjkyOGQwOTgxMjYxOGIzOTY2ZjM1MjM1MGNmOTE2YTZhZTBkMzQzZjMyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BrZy1jb25maWd1cmUuc2VydmljZSIKLQotdGFyZ2V0X2xvY2Fsc3RhdGVkaXIgOj0gIiR7bG9jYWxzdGF0ZWRpcn0iCi1PUEtHTElCRElSID0gIiR7dGFyZ2V0X2xvY2Fsc3RhdGVkaXJ9L2xpYiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnNvbHYiCi0KLVBBQ0tBR0VDT05GSUdbZ3BnXSA9ICItLWVuYWJsZS1ncGcsLS1kaXNhYmxlLWdwZyxncGdtZSBsaWJncGctZXJyb3IsZ251cGciCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKLVBBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKLVBBQ0tBR0VDT05GSUdbcGF0aGZpbmRlcl0gPSAiLS1lbmFibGUtcGF0aGZpbmRlciwtLWRpc2FibGUtcGF0aGZpbmRlcixwYXRoZmluZGVyIgotUEFDS0FHRUNPTkZJR1tsaWJzb2x2XSA9ICItLXdpdGgtbGlic29sdiwtLXdpdGhvdXQtbGlic29sdixsaWJzb2x2IgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tbG9jYWxzdGF0ZWRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke2xvY2Fsc3RhdGVkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSAtLXN5c2NvbmZkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtzeXNjb25mZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKLQllY2hvICJvcHRpb24gbGlzdHNfZGlyICR7T1BLR0xJQkRJUn0vb3BrZy9saXN0cyIgPj4ke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgotCi0JIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKLQlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07dGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2ctY29uZmlndXJlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCi0JCQktZSAncyxAU1lTVEVNRF9VTklURElSQCwke3N5c3RlbWRfdW5pdGRpcn0sZycgXAotCQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BrZy1jb25maWd1cmUuc2VydmljZQotCWZpCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9IG9wa2ctYXJjaC1jb25maWcgbGliYXJjaGl2ZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgotUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCi1SUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgotCi1QQUNLQUdFUyA9KyAibGlib3BrZyIKLQotRklMRVNfbGlib3BrZyA9ICIke2xpYmRpcn0vKi5zby4qICR7T1BLR0xJQkRJUn0vb3BrZy8iCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuMy42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwZjIwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNi5iYgpAQCAtMCwwICsxLDc1IEBACitTVU1NQVJZID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIgorU1VNTUFSWV9saWJvcGtnID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcnkiCitTRUNUSU9OID0gImJhc2UiCitIT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnL2lzc3Vlcy9saXN0IgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvb3BrZy5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MjE7bWQ1PTkwNDM1YTUxOWM2ZWE2OWVmMjJlNGE4OGJjYzUyZmEwIgorCitERVBFTkRTID0gImxpYmFyY2hpdmUiCisKK1BFID0gIjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL29wa2ctY29uZmlndXJlLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vb3BrZy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZ19jb25mLWNyZWF0ZS1vcGtnLmxvY2staW4tcnVuLWluc3RlYWQtb2YtdmFyLXJ1bi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3OWUwNDMwN2Y2ZjU0ZGI0MzFjMjUxNzcyZDdkOTg3YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNjA3ZjBlNjFiZThjZjhhM2JiZDBkMmRjY2Q5ZWM5ZTliNmMyMWRkNDMwN2I2NzFjNjAwZDZlZWFmODRkMzBiIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BrZy1jb25maWd1cmUuc2VydmljZSIKKwordGFyZ2V0X2xvY2Fsc3RhdGVkaXIgOj0gIiR7bG9jYWxzdGF0ZWRpcn0iCitPUEtHTElCRElSID0gIiR7dGFyZ2V0X2xvY2Fsc3RhdGVkaXJ9L2xpYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnNvbHYiCisKK1BBQ0tBR0VDT05GSUdbZ3BnXSA9ICItLWVuYWJsZS1ncGcsLS1kaXNhYmxlLWdwZyxncGdtZSBsaWJncGctZXJyb3IsZ251cGciCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKK1BBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKK1BBQ0tBR0VDT05GSUdbcGF0aGZpbmRlcl0gPSAiLS1lbmFibGUtcGF0aGZpbmRlciwtLWRpc2FibGUtcGF0aGZpbmRlcixwYXRoZmluZGVyIgorUEFDS0FHRUNPTkZJR1tsaWJzb2x2XSA9ICItLXdpdGgtbGlic29sdiwtLXdpdGhvdXQtbGlic29sdixsaWJzb2x2IgorCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tbG9jYWxzdGF0ZWRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke2xvY2Fsc3RhdGVkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSAtLXN5c2NvbmZkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtzeXNjb25mZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKKwllY2hvICJvcHRpb24gbGlzdHNfZGlyICR7T1BLR0xJQkRJUn0vb3BrZy9saXN0cyIgPj4ke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgorCisJIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKKwlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07dGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2ctY29uZmlndXJlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKwkJCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCisJCQktZSAncyxAU1lTVEVNRF9VTklURElSQCwke3N5c3RlbWRfdW5pdGRpcn0sZycgXAorCQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BrZy1jb25maWd1cmUuc2VydmljZQorCWZpCit9CisKK1JERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9IG9wa2ctYXJjaC1jb25maWcgbGliYXJjaGl2ZSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgorUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgorUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCitSUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgorCitQQUNLQUdFUyA9KyAibGlib3BrZyIKKworRklMRVNfbGlib3BrZyA9ICIke2xpYmRpcn0vKi5zby4qICR7T1BLR0xJQkRJUn0vb3BrZy8iCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAzZjk5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJPcHRpbWlzZWQgSW5uZXIgTG9vcCBSdW50aW1lIENvbXBpbGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvbW9kdWxlcy9vcmMuaHRtbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwMGJkOWQwOWU4YWY1NmI5ZWM5ODJiM2Q4NTc5N2UiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL29yYy9vcmMtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTgzN2RjMjBkYWNiNWI2Njg5MzViYmRlZDEwY2JiNjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTFlNTNlNThmYzgxNThlNTk4NmExZjFhNDlhNmQ5NzBjNWIxNjQ5Mzg0MWNmN2I5ZGUyYzJiZGU3Y2UzNmI5MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFUyA9KyAib3JjLWV4YW1wbGVzIgotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYm9yYy0uKiIKLUZJTEVTX29yYy1leGFtcGxlcyA9ICIke2xpYmRpcn0vb3JjLyoiCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdPUkMgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgIHNlZCAtaSAtZSAncyMvdG1wIy4jZycgJHtTfS9vcmMvb3JjY29kZW1lbS5jCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTVkZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yOC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIk9wdGltaXNlZCBJbm5lciBMb29wIFJ1bnRpbWUgQ29tcGlsZXIiCitIT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9tb2R1bGVzL29yYy5odG1sIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xNDAwYmQ5ZDA5ZThhZjU2YjllYzk4MmIzZDg1Nzk3ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvb3JjL29yYy0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YjU4MmVjNGIzMjc1YzVlZmQ1MWUzYWU2NDA2ZDQ0NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiZmNkN2M2NTYzYjA1NjcyMzg2YzRlZWRmYzRjMGQ0YTBhMTJiNGI0Nzc1Yjc0ZWM2ZGViODhmYzJiY2Q4M2NlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BBQ0tBR0VTID0rICJvcmMtZXhhbXBsZXMiCitQQUNLQUdFU19EWU5BTUlDICs9ICJebGlib3JjLS4qIgorRklMRVNfb3JjLWV4YW1wbGVzID0gIiR7bGliZGlyfS9vcmMvKiIKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ09SQyAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgc2VkIC1pIC1lICdzIy90bXAjLiNnJyAke1N9L29yYy9vcmNjb2RlbWVtLmMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMi1GaXgtc2VnZmF1bHQtd2l0aC1tYW5nbGVkLXJlbmFtZS1wYXRjaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMi1GaXgtc2VnZmF1bHQtd2l0aC1tYW5nbGVkLXJlbmFtZS1wYXRjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGJkNmZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaC8wMDAyLUZpeC1zZWdmYXVsdC13aXRoLW1hbmdsZWQtcmVuYW1lLXBhdGNoLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gZjI5MGY0OGE2MjE4NjcwODQ4ODRiZmZmODdmODA5M2MxNTE5NWU2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbkBnbnUub3JnPgorRGF0ZTogTW9uLCAxMiBGZWIgMjAxOCAxNjo0ODoyNCArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggc2VnZmF1bHQgd2l0aCBtYW5nbGVkIHJlbmFtZSBwYXRjaAorCitodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz81MzEzMgorKiBzcmMvcGNoLmMgKGludHVpdF9kaWZmX3R5cGUpOiBFbnN1cmUgdGhhdCB0d28gZmlsZW5hbWVzIGFyZSBzcGVjaWZpZWQKK2ZvciByZW5hbWVzIGFuZCBjb3BpZXMgKGZpeCB0aGUgZXhpc3RpbmcgY2hlY2spLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9wYXRjaC5naXQvY29tbWl0Lz9pZD1mMjkwZjQ4YTYyMTg2NzA4NDg4NGJmZmY4N2Y4MDkzYzE1MTk1ZTZhXQorQ1ZFOiBDVkUtMjAxOC02OTUxCisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CisKKy0tLQorIHNyYy9wY2guYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3BjaC5jIGIvc3JjL3BjaC5jCitpbmRleCBmZjllZDJjLi5iYzYyNzhjIDEwMDY0NAorLS0tIGEvc3JjL3BjaC5jCisrKysgYi9zcmMvcGNoLmMKK0BAIC05NzQsNyArOTc0LDggQEAgaW50dWl0X2RpZmZfdHlwZSAoYm9vbCBuZWVkX2hlYWRlciwgbW9kZV90ICpwX2ZpbGVfdHlwZSkKKyAgICAgaWYgKChwY2hfcmVuYW1lICgpIHx8IHBjaF9jb3B5ICgpKQorIAkmJiAhIGlubmFtZQorIAkmJiAhICgoaSA9PSBPTEQgfHwgaSA9PSBORVcpICYmCistCSAgICAgIHBfbmFtZVshIHJldmVyc2VdICYmCisrCSAgICAgIHBfbmFtZVtyZXZlcnNlXSAmJiBwX25hbWVbISByZXZlcnNlXSAmJgorKwkgICAgICBuYW1lX2lzX3ZhbGlkIChwX25hbWVbcmV2ZXJzZV0pICYmCisgCSAgICAgIG5hbWVfaXNfdmFsaWQgKHBfbmFtZVshIHJldmVyc2VdKSkpCisgICAgICAgeworIAlzYXkgKCJDYW5ub3QgJXMgZmlsZSB3aXRob3V0IHR3byB2YWxpZCBmaWxlIG5hbWVzXG4iLCBwY2hfcmVuYW1lICgpID8gInJlbmFtZSIgOiAiY29weSIpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDMtQWxsb3ctaW5wdXQtZmlsZXMtdG8tYmUtbWlzc2luZy1mb3ItZWQtc3R5bGUtcGF0Y2hlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMy1BbGxvdy1pbnB1dC1maWxlcy10by1iZS1taXNzaW5nLWZvci1lZC1zdHlsZS1wYXRjaGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMDlkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDMtQWxsb3ctaW5wdXQtZmlsZXMtdG8tYmUtbWlzc2luZy1mb3ItZWQtc3R5bGUtcGF0Y2hlcy5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGI1YTkxYTAxZTVkMDg5N2ZhY2RkMGY0OWQ2NGI3NmIwZjAyYjQzZTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWFzIEdydWVuYmFjaGVyIDxhZ3J1ZW5AZ251Lm9yZz4KK0RhdGU6IEZyaSwgNiBBcHIgMjAxOCAxMTozNDo1MSArMDIwMAorU3ViamVjdDogW1BBVENIXSBBbGxvdyBpbnB1dCBmaWxlcyB0byBiZSBtaXNzaW5nIGZvciBlZC1zdHlsZSBwYXRjaGVzCisKKyogc3JjL3BjaC5jIChkb19lZF9zY3JpcHQpOiBBbGxvdyBpbnB1dCBmaWxlcyB0byBiZSBtaXNzaW5nIHNvIHRoYXQgbmV3CitmaWxlcyB3aWxsIGJlIGNyZWF0ZWQgYXMgd2l0aCBub24tZWQtc3R5bGUgcGF0Y2hlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvcGF0Y2guZ2l0L2NvbW1pdC8/aWQ9YjVhOTFhMDFlNWQwODk3ZmFjZGQwZjQ5ZDY0Yjc2YjBmMDJiNDNlMV0KK0NWRTogQ1ZFLTIwMTgtMTAwMDE1NgorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3BjaC5jIHwgOCArKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcGNoLmMgYi9zcmMvcGNoLmMKK2luZGV4IGJjNjI3OGMuLjBjNWNjMjYgMTAwNjQ0CistLS0gYS9zcmMvcGNoLmMKKysrKyBiL3NyYy9wY2guYworQEAgLTIzOTQsOSArMjM5NCwxMSBAQCBkb19lZF9zY3JpcHQgKGNoYXIgY29uc3QgKmlubmFtZSwgY2hhciBjb25zdCAqb3V0bmFtZSwKKyAKKyAgICAgaWYgKCEgZHJ5X3J1biAmJiAhIHNraXBfcmVzdF9vZl9wYXRjaCkgeworIAlpbnQgZXhjbHVzaXZlID0gKm91dG5hbWVfbmVlZHNfcmVtb3ZhbCA/IDAgOiBPX0VYQ0w7CistCWFzc2VydCAoISBpbmVycm5vKTsKKy0JKm91dG5hbWVfbmVlZHNfcmVtb3ZhbCA9IHRydWU7CistCWNvcHlfZmlsZSAoaW5uYW1lLCBvdXRuYW1lLCAwLCBleGNsdXNpdmUsIGluc3RhdC5zdF9tb2RlLCB0cnVlKTsKKysJaWYgKGluZXJybm8gIT0gRU5PRU5UKQorKwkgIHsKKysJICAgICpvdXRuYW1lX25lZWRzX3JlbW92YWwgPSB0cnVlOworKwkgICAgY29weV9maWxlIChpbm5hbWUsIG91dG5hbWUsIDAsIGV4Y2x1c2l2ZSwgaW5zdGF0LnN0X21vZGUsIHRydWUpOworKwkgIH0KKyAJc3ByaW50ZiAoYnVmLCAiJXMgJXMlcyIsIGVkaXRvcl9wcm9ncmFtLAorIAkJIHZlcmJvc2l0eSA9PSBWRVJCT1NFID8gIiIgOiAiLSAiLAorIAkJIG91dG5hbWUpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDQtRml4LWFyYml0cmFyeS1jb21tYW5kLWV4ZWN1dGlvbi1pbi1lZC1zdHlsZS1wYXRjaGVzLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwNC1GaXgtYXJiaXRyYXJ5LWNvbW1hbmQtZXhlY3V0aW9uLWluLWVkLXN0eWxlLXBhdGNoZXMtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NGMyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDQtRml4LWFyYml0cmFyeS1jb21tYW5kLWV4ZWN1dGlvbi1pbi1lZC1zdHlsZS1wYXRjaGVzLS5wYXRjaApAQCAtMCwwICsxLDIxNSBAQAorRnJvbSAxMjNlYWZmMGQ1ZDFhZWJlMTI4Mjk1OTU5NDM1YjljYTU5MDljMjZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQGdudS5vcmc+CitEYXRlOiBGcmksIDYgQXByIDIwMTggMTI6MTQ6NDkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGFyYml0cmFyeSBjb21tYW5kIGV4ZWN1dGlvbiBpbiBlZC1zdHlsZSBwYXRjaGVzIChDVkUtMjAxOC0xMDAwMTU2KQorCisqIHNyYy9wY2guYyAoZG9fZWRfc2NyaXB0KTogV3JpdGUgZWQgc2NyaXB0IHRvIGEgdGVtcG9yYXJ5IGZpbGUgaW5zdGVhZAorb2YgcGlwaW5nIGl0IHRvIGVkOiB0aGlzIHdpbGwgY2F1c2UgZWQgdG8gYWJvcnQgb24gaW52YWxpZCBjb21tYW5kcworaW5zdGVhZCBvZiByZWplY3RpbmcgdGhlbSBhbmQgY2Fycnlpbmcgb24uCisqIHRlc3RzL2VkLXN0eWxlOiBOZXcgdGVzdCBjYXNlLgorKiB0ZXN0cy9NYWtlZmlsZS5hbSAoVEVTVFMpOiBBZGQgdGVzdCBjYXNlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9wYXRjaC5naXQvY29tbWl0Lz9pZD0xMjNlYWZmMGQ1ZDFhZWJlMTI4Mjk1OTU5NDM1YjljYTU5MDljMjZkXQorQ1ZFOiBDVkUtMjAxOC0xMDAwMTU2CisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcGNoLmMgICAgICAgICB8IDkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KKyB0ZXN0cy9NYWtlZmlsZS5hbSB8ICAxICsKKyB0ZXN0cy9lZC1zdHlsZSAgICB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZWQtc3R5bGUKKworZGlmZiAtLWdpdCBhL3NyYy9wY2guYyBiL3NyYy9wY2guYworaW5kZXggMGM1Y2MyNi4uNGZkNWEwNSAxMDA2NDQKKy0tLSBhL3NyYy9wY2guYworKysrIGIvc3JjL3BjaC5jCitAQCAtMzMsNiArMzMsNyBAQAorICMgaW5jbHVkZSA8aW8uaD4KKyAjZW5kaWYKKyAjaW5jbHVkZSA8c2FmZS5oPgorKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorIAorICNkZWZpbmUgSU5JVEhVTktNQVggMTI1CQkJLyogaW5pdGlhbCBkeW5hbWljIGFsbG9jYXRpb24gc2l6ZSAqLworIAorQEAgLTIzODksMjQgKzIzOTAsMjggQEAgZG9fZWRfc2NyaXB0IChjaGFyIGNvbnN0ICppbm5hbWUsIGNoYXIgY29uc3QgKm91dG5hbWUsCisgICAgIHN0YXRpYyBjaGFyIGNvbnN0IGVkaXRvcl9wcm9ncmFtW10gPSBFRElUT1JfUFJPR1JBTTsKKyAKKyAgICAgZmlsZV9vZmZzZXQgYmVnaW5uaW5nX29mX3RoaXNfbGluZTsKKy0gICAgRklMRSAqcGlwZWZwID0gMDsKKyAgICAgc2l6ZV90IGNoYXJzX3JlYWQ7CisrICAgIEZJTEUgKnRtcGZwID0gMDsKKysgICAgY2hhciBjb25zdCAqdG1wbmFtZTsKKysgICAgaW50IHRtcGZkOworKyAgICBwaWRfdCBwaWQ7CisrCisrICAgIGlmICghIGRyeV9ydW4gJiYgISBza2lwX3Jlc3Rfb2ZfcGF0Y2gpCisrICAgICAgeworKwkvKiBXcml0ZSBlZCBzY3JpcHQgdG8gYSB0ZW1wb3JhcnkgZmlsZS4gIFRoaXMgY2F1c2VzIGVkIHRvIGFib3J0IG9uCisrCSAgIGludmFsaWQgY29tbWFuZHMgc3VjaCBhcyB3aGVuIGxpbmUgbnVtYmVycyBvciByYW5nZXMgZXhjZWVkIHRoZQorKwkgICBudW1iZXIgb2YgYXZhaWxhYmxlIGxpbmVzLiAgV2hlbiBlZCByZWFkcyBmcm9tIGEgcGlwZSwgaXQgcmVqZWN0cworKwkgICBpbnZhbGlkIGNvbW1hbmRzIGFuZCB0cmVhdHMgdGhlIG5leHQgbGluZSBhcyBhIG5ldyBjb21tYW5kLCB3aGljaAorKwkgICBjYW4gbGVhZCB0byBhcmJpdHJhcnkgY29tbWFuZCBleGVjdXRpb24uICAqLworKworKwl0bXBmZCA9IG1ha2VfdGVtcGZpbGUgKCZ0bXBuYW1lLCAnZScsIE5VTEwsIE9fUkRXUiB8IE9fQklOQVJZLCAwKTsKKysJaWYgKHRtcGZkID09IC0xKQorKwkgIHBmYXRhbCAoIkNhbid0IGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZSAlcyIsIHF1b3RlYXJnICh0bXBuYW1lKSk7CisrCXRtcGZwID0gZmRvcGVuICh0bXBmZCwgIncrYiIpOworKwlpZiAoISB0bXBmcCkKKysJICBwZmF0YWwgKCJDYW4ndCBvcGVuIHN0cmVhbSBmb3IgZmlsZSAlcyIsIHF1b3RlYXJnICh0bXBuYW1lKSk7CisrICAgICAgfQorIAorLSAgICBpZiAoISBkcnlfcnVuICYmICEgc2tpcF9yZXN0X29mX3BhdGNoKSB7CistCWludCBleGNsdXNpdmUgPSAqb3V0bmFtZV9uZWVkc19yZW1vdmFsID8gMCA6IE9fRVhDTDsKKy0JaWYgKGluZXJybm8gIT0gRU5PRU5UKQorLQkgIHsKKy0JICAgICpvdXRuYW1lX25lZWRzX3JlbW92YWwgPSB0cnVlOworLQkgICAgY29weV9maWxlIChpbm5hbWUsIG91dG5hbWUsIDAsIGV4Y2x1c2l2ZSwgaW5zdGF0LnN0X21vZGUsIHRydWUpOworLQkgIH0KKy0Jc3ByaW50ZiAoYnVmLCAiJXMgJXMlcyIsIGVkaXRvcl9wcm9ncmFtLAorLQkJIHZlcmJvc2l0eSA9PSBWRVJCT1NFID8gIiIgOiAiLSAiLAorLQkJIG91dG5hbWUpOworLQlmZmx1c2ggKHN0ZG91dCk7CistCXBpcGVmcCA9IHBvcGVuKGJ1ZiwgYmluYXJ5X3RyYW5zcHV0ID8gIndiIiA6ICJ3Iik7CistCWlmICghcGlwZWZwKQorLQkgIHBmYXRhbCAoIkNhbid0IG9wZW4gcGlwZSB0byAlcyIsIHF1b3RlYXJnIChidWYpKTsKKy0gICAgfQorICAgICBmb3IgKDs7KSB7CisgCWNoYXIgZWRfY29tbWFuZF9sZXR0ZXI7CisgCWJlZ2lubmluZ19vZl90aGlzX2xpbmUgPSBmaWxlX3RlbGwgKHBmcCk7CitAQCAtMjQxNywxNCArMjQyMiwxNCBAQCBkb19lZF9zY3JpcHQgKGNoYXIgY29uc3QgKmlubmFtZSwgY2hhciBjb25zdCAqb3V0bmFtZSwKKyAJfQorIAllZF9jb21tYW5kX2xldHRlciA9IGdldF9lZF9jb21tYW5kX2xldHRlciAoYnVmKTsKKyAJaWYgKGVkX2NvbW1hbmRfbGV0dGVyKSB7CistCSAgICBpZiAocGlwZWZwKQorLQkJaWYgKCEgZndyaXRlIChidWYsIHNpemVvZiAqYnVmLCBjaGFyc19yZWFkLCBwaXBlZnApKQorKwkgICAgaWYgKHRtcGZwKQorKwkJaWYgKCEgZndyaXRlIChidWYsIHNpemVvZiAqYnVmLCBjaGFyc19yZWFkLCB0bXBmcCkpCisgCQkgICAgd3JpdGVfZmF0YWwgKCk7CisgCSAgICBpZiAoZWRfY29tbWFuZF9sZXR0ZXIgIT0gJ2QnICYmIGVkX2NvbW1hbmRfbGV0dGVyICE9ICdzJykgeworIAkgICAgICAgIHBfcGFzc19jb21tZW50c190aHJvdWdoID0gdHJ1ZTsKKyAJCXdoaWxlICgoY2hhcnNfcmVhZCA9IGdldF9saW5lICgpKSAhPSAwKSB7CistCQkgICAgaWYgKHBpcGVmcCkKKy0JCQlpZiAoISBmd3JpdGUgKGJ1Ziwgc2l6ZW9mICpidWYsIGNoYXJzX3JlYWQsIHBpcGVmcCkpCisrCQkgICAgaWYgKHRtcGZwKQorKwkJCWlmICghIGZ3cml0ZSAoYnVmLCBzaXplb2YgKmJ1ZiwgY2hhcnNfcmVhZCwgdG1wZnApKQorIAkJCSAgICB3cml0ZV9mYXRhbCAoKTsKKyAJCSAgICBpZiAoY2hhcnNfcmVhZCA9PSAyICAmJiAgc3RyRVEgKGJ1ZiwgIi5cbiIpKQorIAkJCWJyZWFrOworQEAgLTI0MzcsMTMgKzI0NDIsNDkgQEAgZG9fZWRfc2NyaXB0IChjaGFyIGNvbnN0ICppbm5hbWUsIGNoYXIgY29uc3QgKm91dG5hbWUsCisgCSAgICBicmVhazsKKyAJfQorICAgICB9CistICAgIGlmICghcGlwZWZwKQorKyAgICBpZiAoIXRtcGZwKQorICAgICAgIHJldHVybjsKKy0gICAgaWYgKGZ3cml0ZSAoIndcbnFcbiIsIHNpemVvZiAoY2hhciksIChzaXplX3QpIDQsIHBpcGVmcCkgPT0gMAorLQl8fCBmZmx1c2ggKHBpcGVmcCkgIT0gMCkKKysgICAgaWYgKGZ3cml0ZSAoIndcbnFcbiIsIHNpemVvZiAoY2hhciksIChzaXplX3QpIDQsIHRtcGZwKSA9PSAwCisrCXx8IGZmbHVzaCAodG1wZnApICE9IDApCisgICAgICAgd3JpdGVfZmF0YWwgKCk7CistICAgIGlmIChwY2xvc2UgKHBpcGVmcCkgIT0gMCkKKy0gICAgICBmYXRhbCAoIiVzIEZBSUxFRCIsIGVkaXRvcl9wcm9ncmFtKTsKKysKKysgICAgaWYgKGxzZWVrICh0bXBmZCwgMCwgU0VFS19TRVQpID09IC0xKQorKyAgICAgIHBmYXRhbCAoIkNhbid0IHJld2luZCB0byB0aGUgYmVnaW5uaW5nIG9mIGZpbGUgJXMiLCBxdW90ZWFyZyAodG1wbmFtZSkpOworKworKyAgICBpZiAoISBkcnlfcnVuICYmICEgc2tpcF9yZXN0X29mX3BhdGNoKSB7CisrCWludCBleGNsdXNpdmUgPSAqb3V0bmFtZV9uZWVkc19yZW1vdmFsID8gMCA6IE9fRVhDTDsKKysJKm91dG5hbWVfbmVlZHNfcmVtb3ZhbCA9IHRydWU7CisrCWlmIChpbmVycm5vICE9IEVOT0VOVCkKKysJICB7CisrCSAgICAqb3V0bmFtZV9uZWVkc19yZW1vdmFsID0gdHJ1ZTsKKysJICAgIGNvcHlfZmlsZSAoaW5uYW1lLCBvdXRuYW1lLCAwLCBleGNsdXNpdmUsIGluc3RhdC5zdF9tb2RlLCB0cnVlKTsKKysJICB9CisrCXNwcmludGYgKGJ1ZiwgIiVzICVzJXMiLCBlZGl0b3JfcHJvZ3JhbSwKKysJCSB2ZXJib3NpdHkgPT0gVkVSQk9TRSA/ICIiIDogIi0gIiwKKysJCSBvdXRuYW1lKTsKKysJZmZsdXNoIChzdGRvdXQpOworKworKwlwaWQgPSBmb3JrKCk7CisrCWlmIChwaWQgPT0gLTEpCisrCSAgcGZhdGFsICgiQ2FuJ3QgZm9yayIpOworKwllbHNlIGlmIChwaWQgPT0gMCkKKysJICB7CisrCSAgICBkdXAyICh0bXBmZCwgMCk7CisrCSAgICBleGVjbCAoIi9iaW4vc2giLCAic2giLCAiLWMiLCBidWYsIChjaGFyICopIDApOworKwkgICAgX2V4aXQgKDIpOworKwkgIH0KKysJZWxzZQorKwkgIHsKKysJICAgIGludCB3c3RhdHVzOworKwkgICAgaWYgKHdhaXRwaWQgKHBpZCwgJndzdGF0dXMsIDApID09IC0xCisrCSAgICAgICAgfHwgISBXSUZFWElURUQgKHdzdGF0dXMpCisrCQl8fCBXRVhJVFNUQVRVUyAod3N0YXR1cykgIT0gMCkKKysJICAgICAgZmF0YWwgKCIlcyBGQUlMRUQiLCBlZGl0b3JfcHJvZ3JhbSk7CisrCSAgfQorKyAgICB9CisrCisrICAgIGZjbG9zZSAodG1wZnApOworKyAgICBzYWZlX3VubGluayAodG1wbmFtZSk7CisgCisgICAgIGlmIChvZnApCisgICAgICAgeworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDZiNmRmNjMuLjE2Zjg2OTMgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC0zMiw2ICszMiw3IEBAIFRFU1RTID0gXAorIAljcmxmLWhhbmRsaW5nIFwKKyAJZGFzaC1vLWFwcGVuZCBcCisgCWRlZXAtZGlyZWN0b3JpZXMgXAorKwllZC1zdHlsZSBcCisgCWVtcHR5LWZpbGVzIFwKKyAJZmFsc2UtbWF0Y2ggXAorIAlmaWZvIFwKK2RpZmYgLS1naXQgYS90ZXN0cy9lZC1zdHlsZSBiL3Rlc3RzL2VkLXN0eWxlCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZDhjMDY4OQorLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdHMvZWQtc3R5bGUKK0BAIC0wLDAgKzEsNDEgQEAKKysjIENvcHlyaWdodCAoQykgMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjCisrIyBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAorKyMgaW4gYW55IG1lZGl1bSwgYXJlIHBlcm1pdHRlZCB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAorKyMgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLgorKworKy4gJHNyY2Rpci90ZXN0LWxpYi5zaAorKworK3JlcXVpcmUgY2F0CisrdXNlX2xvY2FsX3BhdGNoCisrdXNlX3RtcGRpcgorKworKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysKKytjYXQgPiBlZDEuZGlmZiA8PEVPRgorKzBhCisrZm9vCisrLgorK0VPRgorKworK2NoZWNrICdwYXRjaCAtZSBmb28gLWkgZWQxLmRpZmYnIDw8RU9GCisrRU9GCisrCisrY2hlY2sgJ2NhdCBmb28nIDw8RU9GCisrZm9vCisrRU9GCisrCisrY2F0ID4gZWQyLmRpZmYgPDxFT0YKKysxMzM3YQorK3IgIWVjaG8gYmFyCisrLHAKKytFT0YKKysKKytjaGVjayAncGF0Y2ggLWUgZm9vIC1pIGVkMi5kaWZmIDI+IC9kZXYvbnVsbCB8fCBlY2hvICJTdGF0dXM6ICQ/IicgPDxFT0YKKys/CisrU3RhdHVzOiAyCisrRU9GCisrCisrY2hlY2sgJ2NhdCBmb28nIDw8RU9GCisrZm9vCisrRU9GCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTFmMDIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1yZXF1aXJlIHBhdGNoLmluYwotTElDRU5TRSA9ICJHUEx2MyIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZDRkNTY3NGVmNDU0M2I0ZWI0NjNkYjE2ODg4NmRjNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NDM2ZjVhMTlmOTNjM2NhODMxNTNjZTljNWNiZTQ4NDdlOTdjNWQ5NTZlNTdhMjIwMTIxZTc0MWY2ZTc5NjhmIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotYWNwYXRocyA9ICItSSAke1N9L200ICIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCBkKX0iCi1QQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMzQ4NmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy42LmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgcGF0Y2guaW5jCitMSUNFTlNFID0gIkdQTHYzIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtc2VnZmF1bHQtd2l0aC1tYW5nbGVkLXJlbmFtZS1wYXRjaC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1BbGxvdy1pbnB1dC1maWxlcy10by1iZS1taXNzaW5nLWZvci1lZC1zdHlsZS1wYXRjaGVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC1hcmJpdHJhcnktY29tbWFuZC1leGVjdXRpb24taW4tZWQtc3R5bGUtcGF0Y2hlcy0ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGM2OGNlZTk4OWQ4M2M4N2IwMGEzODYwYmNkMDU2MDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGNmODZlMDBhZDNhYWE2ZDI2YWNhMzA2NDBlODZiMGUzZTFmMzk1ZWQ5OWYxODliMDZkNGM5Zjc0YmM1OGE0ZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK2FjcGF0aHMgPSAiLUkgJHtTfS9tNCAiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFlMGU3ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJFcnJvciAtIEVycm9yL2V4Y2VwdGlvbiBoYW5kbGluZyBpbiBhbiBPTy1pc2ggd2F5IgotREVTQ1JJUFRJT04gPSAiVGhlIEVycm9yIHBhY2thZ2UgcHJvdmlkZXMgdHdvIGludGVyZmFjZXMuIEZpcnN0bHkgXAotRXJyb3IgcHJvdmlkZXMgYSBwcm9jZWR1cmFsIGludGVyZmFjZSB0byBleGNlcHRpb24gaGFuZGxpbmcuIFwKLVNlY29uZGx5IEVycm9yIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXJyb3JzL2V4Y2VwdGlvbnMgdGhhdCBjYW4gXAotZWl0aGVyIGJlIHRocm93biwgZm9yIHN1YnNlcXVlbnQgY2F0Y2gsIG9yIGNhbiBzaW1wbHkgYmUgcmVjb3JkZWQuIgotCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04ZjM0OTlkMDllZTc0YTA1MGMwMzE5MzkxZmY5ZDEwMCIKLQotREVQRU5EUyArPSAicGVybCIKLQotU1JDX1VSSSA9ICJodHRwOi8vY3Bhbi5tZXRhY3Bhbi5vcmcvYXV0aG9ycy9pZC9TL1NIL1NITE9NSUYvRXJyb3ItJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2UzNjc2YTdmYjE0ZjY1ZjU2OGYxMmQ0YjQwYTJhNzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDc0ZGI3Yzc4M2E2N2IwNjY3ZWNhNjRhNGY2YTBjM2RlOTQ5OThhZmM5MmMwMWQ2NDUzMTYzZWIwNGI5MTUwZCIKLQotUyA9ICIke1dPUktESVJ9L0Vycm9yLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgotCWNwYW5fZG9fY29tcGlsZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZGMzMGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI1LmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiRXJyb3IgLSBFcnJvci9leGNlcHRpb24gaGFuZGxpbmcgaW4gYW4gT08taXNoIHdheSIKK0RFU0NSSVBUSU9OID0gIlRoZSBFcnJvciBwYWNrYWdlIHByb3ZpZGVzIHR3byBpbnRlcmZhY2VzLiBGaXJzdGx5IFwKK0Vycm9yIHByb3ZpZGVzIGEgcHJvY2VkdXJhbCBpbnRlcmZhY2UgdG8gZXhjZXB0aW9uIGhhbmRsaW5nLiBcCitTZWNvbmRseSBFcnJvciBpcyBhIGJhc2UgY2xhc3MgZm9yIGVycm9ycy9leGNlcHRpb25zIHRoYXQgY2FuIFwKK2VpdGhlciBiZSB0aHJvd24sIGZvciBzdWJzZXF1ZW50IGNhdGNoLCBvciBjYW4gc2ltcGx5IGJlIHJlY29yZGVkLiIKKworU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGYzNDk5ZDA5ZWU3NGEwNTBjMDMxOTM5MWZmOWQxMDAiCisKK0RFUEVORFMgKz0gInBlcmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL2NwYW4ubWV0YWNwYW4ub3JnL2F1dGhvcnMvaWQvUy9TSC9TSExPTUlGL0Vycm9yLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjFhMmVlN2YwZGM0NGY5ZWU3NjY2MWExNmJiYmMwYzQ4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjOWY0NzRhZDNkNGZlMGNhYmZmNmI2YmU1MzJjYjFkZDM0ODI0NTk4NmQ0YTZiNjAwYWQ5MjFkNWNmZGVmYWYiCisKK1MgPSAiJHtXT1JLRElSfS9FcnJvci0ke1BWfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgorCWNwYW5fZG9fY29tcGlsZQorfQorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisJIyB0ZXN0IHJlcXVpcmVzICItVCIgKHRhaW50KSBjb21tYW5kIGxpbmUgb3B0aW9uCisJcm0gLXJmICR7Qn0vdC9wb2QtY292ZXJhZ2UudAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ0ZXN0LW5lZWRzLXBlcmxfMC4wMDIwMDUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidGVzdC1uZWVkcy1wZXJsXzAuMDAyMDA1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YWI3YTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidGVzdC1uZWVkcy1wZXJsXzAuMDAyMDA1LmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiU2tpcCB0ZXN0cyB3aGVuIG1vZHVsZXMgbm90IGF2YWlsYWJsZSIKK0RFU0NSSVBUSU9OID0gIlNraXAgdGVzdCBzY3JpcHRzIGlmIG1vZHVsZXMgYXJlIG5vdCBhdmFpbGFibGUuIFwKK1RoZSByZXF1ZXN0ZWQgbW9kdWxlcyB3aWxsIGJlIGxvYWRlZCwgYW5kIG9wdGlvbmFsbHkgaGF2ZSB0aGVpciB2ZXJzaW9ucyBcCitjaGVja2VkLiBJZiB0aGUgbW9kdWxlIGlzIG1pc3NpbmcsIHRoZSB0ZXN0IHNjcmlwdCB3aWxsIGJlIHNraXBwZWQuIE1vZHVsZXMgXAordGhhdCBhcmUgZm91bmQgYnV0IGZhaWwgdG8gY29tcGlsZSB3aWxsIGV4aXQgd2l0aCBhbiBlcnJvciByYXRoZXIgdGhhbiBza2lwLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS9UZXN0LU5lZWRzIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKKworQ1BBTl9OQU1FID0gIlRlc3QtTmVlZHMiCitDUEFOX0FVVEhPUiA9ICJIQUFSRyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT0zZjNjY2QyMWEwYTQ4YWEzMTNkYjIxMmNjM2IxYmMwOTtiZWdpbmxpbmU9ODE7ZW5kbGluZT04MiIKKworREVQRU5EUyArPSAicGVybCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL2F1dGhvcnMvaWQvSC9IQS8ke0NQQU5fQVVUSE9SfS8ke0NQQU5fTkFNRX0tJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzU2NjM0YTU2Yzk5MjgyZTgwNTlmMjkwZjVkNTM0YzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWE0ZjMzOTgzNTg2ZWRhY2RiZTAwYTNiNDI5YTk4MzQxOTAxNDAxOTBkYWIyOGQwZjg3M2MzOTRlYjdkZjM5OSIKKworUyA9ICIke1dPUktESVJ9LyR7Q1BBTl9OQU1FfS0ke1BWfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gInBlcmwtbW9kdWxlLXRlc3QtbW9yZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43Mi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzk5YzEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSB0byBtYW5pcHVsYXRlIGFuZCBhY2Nlc3MgVVJJIHN0cmluZ3MiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIFVSSS5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiBcCi1UaGUgbW9kdWxlIGltcGxlbWVudHMgdGhlIFVSSSBjbGFzcy4gVVJJIG9iamVjdHMgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIFwKLWFuZCBtYW5pcHVsYXRlIHRoZSB2YXJpb3VzIGNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIHRoZXNlIHN0cmluZ3MuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvVVJJLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM0NTNlOTRmYWU2NzI4MDBmODNiYzFiZDdhMzhiNTNmIgotCi1ERVBFTkRTICs9ICJwZXJsIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvYXV0aG9ycy9pZC9FL0VUL0VUSEVSL1VSSS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjZDU2ZDgxZWQ0MjllZmFhOTdlN2YzZmYwODg1MWI0OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNWYxNDQzMWQ0YjMwMGRlNGJlMTE2M2IwYjUzMzJkZTJkN2ZiZGE0ZjA1ZmYxZWQxOThhOGU5MzMwZDQwYTMyIgotCi1TID0gIiR7V09SS0RJUn0vVVJJLSR7UFZ9IgotCi1FWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSIKLQotaW5oZXJpdCBjcGFuCi0KLWRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKLQljcGFuX2RvX2NvbXBpbGUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43My5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjczLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MjM4ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43My5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIlBlcmwgbW9kdWxlIHRvIG1hbmlwdWxhdGUgYW5kIGFjY2VzcyBVUkkgc3RyaW5ncyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgVVJJLnBtIG1vZHVsZSB3aXRoIGZyaWVuZHMuIFwKK1RoZSBtb2R1bGUgaW1wbGVtZW50cyB0aGUgVVJJIGNsYXNzLiBVUkkgb2JqZWN0cyBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgXAorYW5kIG1hbmlwdWxhdGUgdGhlIHZhcmlvdXMgY29tcG9uZW50cyB0aGF0IG1ha2UgdXAgdGhlc2Ugc3RyaW5ncy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9VUkkvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzQ1M2U5NGZhZTY3MjgwMGY4M2JjMWJkN2EzOGI1M2YiCisKK0RFUEVORFMgKz0gInBlcmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9hdXRob3JzL2lkL0UvRVQvRVRIRVIvVVJJLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjM3ZDQ0YTA4ZTU5OWFhOTQ1YjMyYTk0MzRmZmUwMGE1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjYTdhYjRhNmY2M2YzY2NhYWNhZTBmMmUxMzM3ZThlZGY4NDEzN2U3M2YxODU0OGVjN2Q2NTlmMjNlZmU0MTMiCisKK1MgPSAiJHtXT1JLRElSfS9VUkktJHtQVn0iCisKK0VYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IgorCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCisJY3Bhbl9kb19jb21waWxlCit9CisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIHRoZXNlIHRlc3RzIHJlcXVpcmUgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KKwlybSAtcmYgJHtCfS90L2N3ZC50CisJcm0gLXJmICR7Qn0vdC9maWxlLnQKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYnRlc3QtbmVlZHMtcGVybCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIKaW5kZXggY2MzYTY2MC4uYzVlMGFlNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYgpAQCAtMTQsNyArMTQsNyBAQAogCiBFWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSBDQz0nJHtDQ30nIExEPScke0NDTER9JyBGVUxMX0FSPScke0FSfSciCiAKLWluaGVyaXQgY3BhbgoraW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKIAogIyBmaXggdXAgc3ViIE1ha2VNYWtlciBwcm9qZWN0IGFzIGFyZ3VtZW50cyBkb24ndCBnZXQgcHJvcGFnYXRlZCB0aG91Z2gKICMgc2VlIGh0dHBzOi8vcnQuY3Bhbi5vcmcvUHVibGljL0J1Zy9EaXNwbGF5Lmh0bWw/aWQ9Mjg2MzIKQEAgLTM0LDQgKzM0LDEzIEBACiAJY3Bhbl9kb19jb21waWxlCiB9CiAKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMveG1sc3RhdHMKKwlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy94bWxmaWx0ZXIKKwlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy94bWxjb21tZW50cworCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL2Nhbm9uaWNhbAorCWNwIC1yICR7Qn0vc2FtcGxlcyAke0R9JHtQVEVTVF9QQVRIfQorCWNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtQVEVTVF9QQVRIfS9zYW1wbGVzCit9CisKIEJCQ0xBU1NFWFRFTkQ9Im5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBlcmxfMC4wOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGVybF8wLjA4LmJiCmluZGV4IDA0Nzg0MjcuLjBmNjA5OTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGVybF8wLjA4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGVybF8wLjA4LmJiCkBAIC0xOSw3ICsxOSw3IEBACiAKIEVYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IgogCi1pbmhlcml0IGNwYW4KK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCiAKIGRvX2NvbXBpbGUoKSB7CiAJZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNC5iYgppbmRleCAwY2YyZWViLi5mOWQwMGQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjI0LmJiCkBAIC0xOSw2ICsxOSw2IEBACiAKIEVYVFJBX1BFUkxGTEFHUyA9ICItSSAke1BFUkxIT1NUTElCfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1uYXRpdmVfNS4yNC4xLmJiCmluZGV4IDZjNTZhN2QuLjcxZjQ1ODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjQuMS5iYgpAQCAtMSw4ICsxLDcgQEAKIHJlcXVpcmUgcGVybC5pbmMKIAogIyBXZSBuZWVkIGdudWdyZXAgKGZvciAtSSkKLURFUEVORFMgPSAidmlydHVhbC9kYi1uYXRpdmUgZ3JlcC1uYXRpdmUiCi1ERVBFTkRTICs9ICJnZGJtLW5hdGl2ZSB6bGliLW5hdGl2ZSIKK0RFUEVORFMgPSAiZGItbmF0aXZlIGdyZXAtbmF0aXZlIGdkYm0tbmF0aXZlIHpsaWItbmF0aXZlIgogCiBFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKIApAQCAtMTYsNiArMTUsNyBAQAogICAgICAgICAgICBmaWxlOi8vZHluYWxvYWRlcmhhY2sucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcGVybC1QYXRoVG9vbHMtZG9uLXQtZmlsdGVyLW91dC1ibGliLWZyb20tSU5DLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQ29uZmlndXJlLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZy1mb3ItbmF0aXZlLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJsLTUuMjYuMS1ndWFyZF9vbGRfbGliY3J5cHRfZml4LnBhdGNoIFwKICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJhZjZhODRjN2MzZTJiOGIyNjljMTA1YTVkYjJmNmQ1MyIKQEAgLTEzNSwzICsxMzUsNSBAQAogCiAjIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKIFNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqLnBtICoucG9kICouaCAqLnBsICouc2giCitQQUNLQUdFU19EWU5BTUlDX2NsYXNzLW5hdGl2ZSArPSAiXnBlcmwtbW9kdWxlLS4qbmF0aXZlJCIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jCmluZGV4IDFmNTQ5YWYuLjZhN2EyZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXB0ZXN0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMKQEAgLTIsMzEgKzIsNDMgQEAKIAogU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgICIKLQogZG9faW5zdGFsbF9wdGVzdCAoKSB7CiAJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0KIAlzZWQgLWUgInM6XC91c3JcL2xvY2FsOiR7YmluZGlyfTpnIiAtaSBjcGFuL3ZlcnNpb24vdC8qCiAJc2VkIC1lICJzOlwvb3B0OlwvdXNyOiIgLWkgUG9ydGluZy9hZGQtcGFja2FnZS5wbAogCXNlZCAtZSAiczpcL2xvY2FsXC9nbnVcLzpcLzoiIC1pIGhpbnRzL2N4dXguc2gKLQl0YXIgLWMgLS1leGNsdWRlPVwqLm8gLS1leGNsdWRlPWxpYnBlcmwuc28gLS1leGNsdWRlPU1ha2VmaWxlIC0tZXhjbHVkZT1tYWtlZmlsZSAtLWV4Y2x1ZGU9aG9zdHBlcmwgXAorCXRhciAtYyAtLWV4Y2x1ZGU9JyoubycgLS1leGNsdWRlPWxpYnBlcmwuc28gLS1leGNsdWRlPU1ha2VmaWxlIC0tZXhjbHVkZT1tYWtlZmlsZSAtLWV4Y2x1ZGU9aG9zdHBlcmwgXAorCSAgICAtLWV4Y2x1ZGU9Y3lnd2luIC0tZXhjbHVkZT1vczIgLS1leGNsdWRlPWRqZ3BwIC0tZXhjbHVkZT1xbnggLS1leGNsdWRlPXN5bWJpYW4gLS1leGNsdWRlPWhhaWt1IFwKKwkgICAgLS1leGNsdWRlPXZtcyAtLWV4Y2x1ZGU9dm9zIC0tZXhjbHVkZT1OZXRXYXJlIC0tZXhjbHVkZT1hbWlnYW9zNCAgLS1leGNsdWRlPWJ1aWxkY3VzdG9taXplLnBsIFwKKwkgICAgLS1leGNsdWRlPSd3aW4zMi9jb25maWcuKicgLS1leGNsdWRlPXBsYW45IC0tZXhjbHVkZT1SRUFETUUucGxhbjkgLS1leGNsdWRlPXBlcmxwbGFuOS5wb2QgLS1leGNsdWRlPUNvbmZpZ3VyZSBcCisJICAgIC0tZXhjbHVkZT12ZXJ5Y2xlYW4uc2ggLS1leGNsdWRlPXJlYWxjbGVhbi5zaCAgLS1leGNsdWRlPWdldGlvY3Rsc2l6ZXMgXAorCSAgICAtLWV4Y2x1ZGU9ZGxfYWl4LnhzIC0tZXhjbHVkZT1zZGJtLjMgLS1leGNsdWRlPSdjZmxhZ3MuU0gnIC0tZXhjbHVkZT1tYWtlZmlsZS5vbGQgXAogCQktLWV4Y2x1ZGU9bWluaXBlcmwgLS1leGNsdWRlPWdlbmVyYXRlX3V1ZG1hcCAtLWV4Y2x1ZGU9cGF0Y2hlcyAqIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXggKQogCi0Jc2VkIC1pIC1lICJzLCR7RH0sLGciIFwKKwlsbiAtc2YgJHtiaW5kaXJ9L3BlcmwgJHtEfSR7UFRFU1RfUEFUSH0vdC9wZXJsCisKKwkjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSB2YXJpb3VzIHNjYXR0ZXJlZCBmaWxlcy4uLgorCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiBcCisJICAgICBcKCAtbmFtZSAnKi5QTCcgLW8gLW5hbWUgJ215Y29uZmlnJyAtbyAtbmFtZSAnY2ZsYWdzJyAtbyAtbmFtZSAnKi5wbCcgLW8gLW5hbWUgJyouc2gnIC1vIC1uYW1lICcqLnBtJyBcCisJICAgICAtbyAtbmFtZSAnaDJ4cycgLW8gLW5hbWUgJ2gycGgnIFwKKwkgICAgIC1vIC1uYW1lICcqLmgnIC1vIC1uYW1lICdjb25maWcuc2gtKicgLW8gLW5hbWUgJ3BvZDJtYW4nICAtbyAtbmFtZSAncG9kMnRleHQnIFwpIFwKKwkgICAgLXR5cGUgZiAtZXhlYyBzZWQgLWkgXAorCSAgICAgICAtZSAicywke0R9LCxnIiBcCiAJICAgICAgIC1lICJzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9LCxnIiBcCiAJICAgICAgIC1lICJzLC1pc3lzdGVtJHtTVEFHSU5HX0lOQ0RJUn0gLCxnIiBcCisJICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlLywke2JpbmRpcn0vLGciIFwKIAkgICAgICAgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGciIFwKIAkgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUn0sJHtiaW5kaXJ9LGciIFwKIAkgICAgICAgLWUgInMsJHtTVEFHSU5HX0lOQ0RJUn0sJHtpbmNsdWRlZGlyfSxnIiBcCi0JICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS8sJHtiaW5kaXJ9LyxnIiBcCiAJICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8sLGciIFwKIAkgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LyR7VEFSR0VUX1BSRUZJWH0sJHtiaW5kaXJ9LGciIFwKLQkgICAgJHtEfSR7UFRFU1RfUEFUSH0vbGliL0NvbmZpZy5wbSBcCi0JICAgICR7RH0ke1BURVNUX1BBVEh9L2NwYW4vcG9kbGF0b3JzL3NjcmlwdHMvcG9kMm1hbiBcCi0JICAgICR7RH0ke1BURVNUX1BBVEh9L2NwYW4vcG9kbGF0b3JzL3NjcmlwdHMvcG9kMnRleHQKKwkgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisJICAgICAgICB7fSArCiAKLQlsbiAtc2YgJHtiaW5kaXJ9L3BlcmwgJHtEfSR7UFRFU1RfUEFUSH0vdC9wZXJsCi0JIyBSZW1vdmUgcGxhbjkgcmVsYXRlZCBzdHVmZgotCXJtIC1yZiAke0R9JHtQVEVTVF9QQVRIfS9wbGFuOSAke0R9JHtQVEVTVF9QQVRIfS9SRUFETUUucGxhbjkgJHtEfSR7UFRFU1RfUEFUSH0vcG9kL3BlcmxwbGFuOS5wb2QKKwkgIyBSZW1vdmUgYSB1c2VsZXNzIHRpbWVzdGFtcC4uLgorCSBzZWQgLWkgLWUgJy9BdXRvZ2VuZXJhdGVkIHN0YXJ0aW5nIG9uL2QnICR7RH0ke1BURVNUX1BBVEh9L2xpYi91bmljb3JlL21rdGFibGVzLmxzdAogfQogCiBweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE3LTEyODM3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4MzcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI1OWZjZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE3LTEyODM3LnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNzNkNzI0N2VjYWI4NjNlZjI2YjU2ODdhMzdjY2M3NWQ2MTQ0YWQwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthcmwgV2lsbGlhbXNvbiA8a2h3QGNwYW4ub3JnPgorRGF0ZTogVHVlLCAxNyBPY3QgMjAxNyAxMzo0OToxNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBmaXggQ1ZFLTIwMTctMTI4MzcKKworU2lnbmVkLW9mZi1ieTogS2FybCBXaWxsaWFtc29uIDxraHdAY3Bhbi5vcmc+CitTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBIYXkgPHN0ZXZlLm0uaGF5QGdvb2dsZW1haWwuY29tPgorCitDVkU6IENWRS0yMDE3LTEyODM3CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitodHRwczovL3Blcmw1LmdpdC5wZXJsLm9yZy9wZXJsLmdpdC9jb21taXRkaWZmLzk2YzgzZWQ3OGFlZWExYTA0OTZkZDJiMmQ5MzU4NjlhODIyZGM4YTUKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgcmVnY29tcC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9yZWdjb21wLmMgYi9yZWdjb21wLmMKK2luZGV4IDU0OThkMTQuLjMxZWMzODMgMTAwNjQ0CistLS0gYS9yZWdjb21wLmMKKysrKyBiL3JlZ2NvbXAuYworQEAgLTEzMDIxLDYgKzEzMDIxLDcgQEAgU19yZWdhdG9tKHBUSFhfIFJFeENfc3RhdGVfdCAqcFJFeENfc3RhdGUsIEkzMiAqZmxhZ3AsIFUzMiBkZXB0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBsb29wZG9uZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IFJFeENfcGFyc2U7CisrICAgICAgICAgICAgICAgICAgICAgICAgUkV4Q19wYXJzZSA9IHBhcnNlX3N0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbmRlciA+IDB4ZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVRVUlSRV9VVEY4KGZsYWdwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4ODMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxNy0xMjg4My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzE4MDVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4ODMucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSA0MGIzY2RhZDM2NDkzMzQ1ODVjZWU4ZjQ2MzBlYzlhMDI1ZTYyYmU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FybCBXaWxsaWFtc29uIDxraHdAY3Bhbi5vcmc+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDExOjMzOjU4IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIFBBVENIOiBbcGVybCAjMTMxNTk4XQorCitUaGUgY2F1c2Ugb2YgdGhpcyBpcyB0aGF0IHRoZSB2RkFJTCBtYWNybyB1c2VzIFJFeENfcGFyc2UsIGFuZCB0aGF0Cit2YXJpYWJsZSBoYXMganVzdCBiZWVuIGNoYW5nZWQgaW4gcHJlcGFyYXRpb24gZm9yIGNvZGUgYWZ0ZXIgdGhlIHZGQUlMLgorVGhlIHNvbHV0aW9uIGlzIHRvIG5vdCBjaGFuZ2UgUkV4Q19wYXJzZSB1bnRpbCBhZnRlciB0aGUgdkZBSUwuCisKK1RoaXMgaXMgYSBjYXNlIHdoZXJlIHRoZSBtYWNybyBoaWRlcyBzdHVmZiB0aGF0IGNhbiBiaXRlIHlvdS4KKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMmJlNGVkZWRlNGFlMjI2ZTJlZWJkNGVmZjI4Y2VkZDIwNDFmMzAwZikKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xMjgzMworU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKKy0tLQorIHJlZ2NvbXAuYyB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworSW5kZXg6IHBlcmwtNS4yNC4xL3JlZ2NvbXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBlcmwtNS4yNC4xLm9yaWcvcmVnY29tcC5jCisrKysgcGVybC01LjI0LjEvcmVnY29tcC5jCitAQCAtMTE5MTgsMTQgKzExOTE4LDE2IEBAIFNfZ3Jva19ic2xhc2hfTihwVEhYXyBSRXhDX3N0YXRlX3QgKnBSRXgKKyAJfQorICAgICAgICAgc3ZfY2F0cHYoc3Vic3RpdHV0ZV9wYXJzZSwgIikiKTsKKyAKKy0gICAgICAgIFJFeENfcGFyc2UgPSBSRXhDX3N0YXJ0ID0gUkV4Q19hZGp1c3RlZF9zdGFydCA9IFN2UFYoc3Vic3RpdHV0ZV9wYXJzZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKTsKKysgICAgICAgIGxlbiA9IFN2Q1VSKHN1YnN0aXR1dGVfcGFyc2UpOworIAorIAkvKiBEb24ndCBhbGxvdyBlbXB0eSBudW1iZXIgKi8KKyAJaWYgKGxlbiA8IChTVFJMRU4pIDgpIHsKKyAgICAgICAgICAgICBSRXhDX3BhcnNlID0gZW5kYnJhY2U7CisgCSAgICB2RkFJTCgiSW52YWxpZCBoZXhhZGVjaW1hbCBudW1iZXIgaW4gXFxOe1UrLi4ufSIpOworIAl9CisrCisrICAgICAgICBSRXhDX3BhcnNlID0gUkV4Q19zdGFydCA9IFJFeENfYWRqdXN0ZWRfc3RhcnQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTdlBWX25vbGVuKHN1YnN0aXR1dGVfcGFyc2UpOworIAlSRXhDX2VuZCA9IFJFeENfcGFyc2UgKyBsZW47CisgCisgICAgICAgICAvKiBUaGUgdmFsdWVzIGFyZSBVbmljb2RlLCBhbmQgdGhlcmVmb3JlIG5vdCBzdWJqZWN0IHRvIHJlY29kaW5nLCBidXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL01ha2VmaWxlLlNILnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvTWFrZWZpbGUuU0gucGF0Y2gKaW5kZXggZmQ4MjM3Zi4uYzFkYjMzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvTWFrZWZpbGUuU0gucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvTWFrZWZpbGUuU0gucGF0Y2gKQEAgLTEyLDEwICsxMiwxMCBAQAogIE1ha2VmaWxlLlNIIHwgMTQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCA3OSBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLlNIIGIvTWFrZWZpbGUuU0gKLWluZGV4IDkxNmIzMzIuLmIxNDNkNDYgMTAwNzU1Ci0tLS0gYS9NYWtlZmlsZS5TSAotKysrIGIvTWFrZWZpbGUuU0gKK0luZGV4OiBwZXJsLTUuMjQuMS9NYWtlZmlsZS5TSAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBlcmwtNS4yNC4xLm9yaWcvTWFrZWZpbGUuU0gKKysrKyBwZXJsLTUuMjQuMS9NYWtlZmlsZS5TSAogQEAgLTQ4LDEwICs0OCwxMCBAQCBjYXNlICIkdXNlc2hycGxpYiIgaW4KICB0cnVlKQogIAkjIFByZWZpeCBhbGwgcnVucyBvZiAnbWluaXBlcmwnIGFuZCAncGVybCcgd2l0aApAQCAtNzQsNiArNzQsMTAgQEAKIC1hbGw6ICQoRklSU1RNQUtFRklMRSkgJChNSU5JUEVSTF9FWEUpICQoZ2VuZXJhdGVkX3BvZHMpICQocHJpdmF0ZSkgJCh1bmlkYXRhZmlsZXMpICQocHVibGljKSAkKGR5bmFtaWNfZXh0KSAkKG5vbnhzX2V4dCkgZXh0cmFzLm1ha2UgJChNQU5JRkVTVF9TUlQpCiAtCUBlY2hvICIgIjsKIC0JQGVjaG8gIglFdmVyeXRoaW5nIGlzIHVwIHRvIGRhdGUuIFR5cGUgJyQoTUFLRSkgdGVzdCcgdG8gcnVuIHRlc3Qgc3VpdGUuIgorLQorLSQoTUFOSUZFU1RfU1JUKToJTUFOSUZFU1QgJChQRVJMX0VYRSkKKy0JQCQoUlVOX1BFUkwpIFBvcnRpbmcvbWFuaXNvcnQgLXEgfHwgKGVjaG8gIldBUk5JTkc6IHJlLXNvcnRpbmcgTUFOSUZFU1QiOyBcCistCSAgICAkKFJVTl9QRVJMKSBQb3J0aW5nL21hbmlzb3J0IC1xIC1vIE1BTklGRVNUOyBzaCAtYyB0cnVlKQogKyNhbGw6ICQoRklSU1RNQUtFRklMRSkgJChNSU5JUEVSTF9FWEUpICQoZ2VuZXJhdGVkX3BvZHMpICQocHJpdmF0ZSkgJCh1bmlkYXRhZmlsZXMpICQocHVibGljKSAkKGR5bmFtaWNfZXh0KSAkKG5vbnhzX2V4dCkgZXh0cmFzLm1ha2UgJChNQU5JRkVTVF9TUlQpCiArIwlAZWNobyAiICI7CiArIwlAZWNobyAiCUV2ZXJ5dGhpbmcgaXMgdXAgdG8gZGF0ZS4gVHlwZSAnJChNQUtFKSB0ZXN0JyB0byBydW4gdGVzdCBzdWl0ZS4iCkBAIC04MywxMCArODcsNyBAQAogK21vcmU6ICQoZ2VuZXJhdGVkX3BvZHMpICQocHJpdmF0ZSkgJChwdWJsaWMpCiArCiArbW9yZTI6ICQoZHluYW1pY19leHQpCi0gCi0tJChNQU5JRkVTVF9TUlQpOglNQU5JRkVTVCAkKFBFUkxfRVhFKQotLQlAJChSVU5fUEVSTCkgUG9ydGluZy9tYW5pc29ydCAtcSB8fCAoZWNobyAiV0FSTklORzogcmUtc29ydGluZyBNQU5JRkVTVCI7IFwKLS0JICAgICQoUlVOX1BFUkwpIFBvcnRpbmcvbWFuaXNvcnQgLXEgLW8gTUFOSUZFU1Q7IHNoIC1jIHRydWUpCisrCiArbW9yZTM6ICQobm9ueHNfZXh0KQogKwogK21vcmU0OiBleHRyYXMubWFrZSAkKE1BTklGRVNUX1NSVCkKQEAgLTE1MSw3ICsxNTIsNyBAQAogIAkuLyQoTUlOSVBFUkxFWFApIG1ha2VkZWYucGwgUExBVEZPUk09b3MyIC1EUEVSTF9ETEw9JChQRVJMX0RMTCkgQ0NfRkxBR1M9IiQoT1BUSU1JWkUpIiA+IHBlcmw1LmRlZgogIAogICFOTyFTVUJTIQotQEAgLTg3OCw3ICs4NzgsNyBAQCAkKExJQlBFUkwpOiAkJiAkKHBlcmxsaWJfb2JqcykgJChEWU5BTE9BREVSKSAkKExJQlBFUkxFWFBPUlQpCitAQCAtODc4LDcgKzg3OCw3IEBAICQoTElCUEVSTCk6ICQmICQocGVybGxpYl9vYmpzKSAkKERZTkFMT0EKICAJdHJ1ZSkKICAJCSRzcGl0c2hlbGwgPj4kTWFrZWZpbGUgPDwnIU5PIVNVQlMhJwogIAlybSAtZiAkQApAQCAtMTYwLDcgKzE2MSw3IEBACiAgIU5PIVNVQlMhCiAgCQljYXNlICIkb3NuYW1lIiBpbgogIAkJYWl4KQotQEAgLTkzNiwxNSArOTM2LDE5IEBAIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogJCYgJChtaW5pcGVybF9vYmpzKSB3cml0ZV9idWlsZGN1c3RvbWl6ZS5wbAorQEAgLTkzNiwxNSArOTM2LDE5IEBAIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogJCYgJChtaW5pcGVybF9vYmoKICAJCSRzcGl0c2hlbGwgPj4kTWFrZWZpbGUgPDwnIU5PIVNVQlMhJwogIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogJCYgJChtaW5pcGVybF9vYmpzKQogIAkkKENDKSAtbyAkKE1JTklQRVJMX0VYRSkgJChDTERGTEFHUykgJChtaW5pcGVybF9vYmpzKSAkKGxpYnMpCkBAIC0xODMsNyArMTg0LDcgQEAKICAJJChNSU5JUEVSTCkgLWYgd3JpdGVfYnVpbGRjdXN0b21pemUucGwgICAgCiAgIU5PIVNVQlMhCiAgCQk7OwotQEAgLTk2Niw3ICs5NzAsOSBAQCBsaWIvYnVpbGRjdXN0b21pemUucGw6ICQmICQobWluaXBlcmxfb2Jqcykgd3JpdGVfYnVpbGRjdXN0b21pemUucGwKK0BAIC05NjYsNyArOTcwLDkgQEAgbGliL2J1aWxkY3VzdG9taXplLnBsOiAkJiAkKG1pbmlwZXJsX29iagogIAktQHJtIC1mIG1pbmlwZXJsLnhvawogIAkkKENDKSAkKENMREZMQUdTKSAkKE5BTUVTUEFDRUZMQUdTKSAtbyAkKE1JTklQRVJMX0VYRSkgXAogIAkgICAgJChtaW5pcGVybF9vYmpzKSAkKGxpYnMpCkBAIC0xOTQsNyArMTk1LDcgQEAKICAJJChNSU5JUEVSTCkgLWYgd3JpdGVfYnVpbGRjdXN0b21pemUucGwKICAhTk8hU1VCUyEKICAJCTs7Ci1AQCAtOTc3LDcgKzk4Myw5IEBAIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogXCQmIFwkKG1pbmlwZXJsX29ianMpIHdyaXRlX2J1aWxkY3VzdG9taXplLnBsCitAQCAtOTc3LDcgKzk4Myw5IEBAIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogXCQmIFwkKG1pbmlwZXJsX28KICAJLUBybSAtZiBtaW5pcGVybC54b2sKICAJLUBybSBcJChNSU5JUEVSTF9FWEUpCiAgCVwkKExOUykgXCQoSE9TVF9QRVJMKSBcJChNSU5JUEVSTF9FWEUpCkBAIC0yMDUsNyArMjA2LDcgQEAKICAJXCQoTUlOSVBFUkwpIC1mIHdyaXRlX2J1aWxkY3VzdG9taXplLnBsICdvc25hbWUnICIkb3NuYW1lIgogICFHUk9LIVRISVMhCiAgCQllbHNlCi1AQCAtOTg2LDcgKzk5NCw5IEBAIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogJCYgJChtaW5pcGVybF9vYmpzKSB3cml0ZV9idWlsZGN1c3RvbWl6ZS5wbAorQEAgLTk4Niw3ICs5OTQsOSBAQCBsaWIvYnVpbGRjdXN0b21pemUucGw6ICQmICQobWluaXBlcmxfb2JqCiAgCS1Acm0gLWYgbWluaXBlcmwueG9rCiAgCSQoQ0MpICQoQ0xERkxBR1MpIC1vICQoTUlOSVBFUkxfRVhFKSBcCiAgCSAgICAkKG1pbmlwZXJsX29ianMpICQobGlicykKQEAgLTIyNSw3ICsyMjYsNyBAQAogIAktQGZvciBmIGluIE1ha2VmaWxlLlBMIFBQUG9ydF9wbS5QTCBQUFBvcnRfeHMuUEwgcHBwb3J0X2guUEw7IGRvIFwKICAJKGNkIGV4dC9EZXZlbC1QUFBvcnQgJiYgYHB3ZGAvcnVuLnNoIC4uLy4uLyQoTUlOSVBFUkxfRVhFKSAtSS4uLy4uL2xpYiBcJFwkZik7IFwKICAJZG9uZQotQEAgLTEwNDYsNyArMTA1Niw3IEBAIG1ha2VwcHBvcnQ6IFwkKE1JTklQRVJMX0VYRSkgXCQoQ09ORklHUE0pCitAQCAtMTA0Niw3ICsxMDU2LDcgQEAgbWFrZXBwcG9ydDogXCQoTUlOSVBFUkxfRVhFKSBcJChDT05GSUdQTQogICopCiAgJHNwaXRzaGVsbCA+PiRNYWtlZmlsZSA8PCchTk8hU1VCUyEnCiAgLlBIT05ZOiBtYWtlcHBwb3J0CkBAIC0yNTQsNyArMjU1LDcgQEAKICAJJChNSU5JUEVSTCkgbGliL3VuaWNvcmUvbWt0YWJsZXMgLUMgbGliL3VuaWNvcmUgLVAgcG9kIC1tYWtldGVzdCAtbWFrZWxpc3QgLXAKICAjCUNvbW1lbnRlZCBvdXQgc28gYWx3YXlzIHJ1bnMsIG1rdGFibGVzIGxvb2tzIGF0IGZhciBtb3JlIGZpbGVzIHRoYW4gd2UKICAjCWNhbiBpbiB0aGlzIG1ha2VmaWxlIHRvIGRlY2lkZSBpZiBuZWVkcyB0byBydW4gb3Igbm90Ci1AQCAtMTA3NCwxMiArMTA4NCwxMiBAQCB1bmkuZGF0YTogJChNSU5JUEVSTF9FWEUpICQoQ09ORklHUE0pIGxpYi91bmljb3JlL21rdGFibGVzICQobm9ueHNfZXh0KQorQEAgLTEwNzQsMTIgKzEwODQsMTIgQEAgdW5pLmRhdGE6ICQoTUlOSVBFUkxfRVhFKSAkKENPTkZJR1BNKSBsaQogICMgJChQRVJMX0VYRSkgYW5kIGV4dCBiZWNhdXNlIHBvZF9saWIucGwgbmVlZHMgRGlnZXN0OjpNRDUKICAjIEJ1dCBhbHNvIHRoaXMgZW5zdXJlcyB0aGF0IGFsbCBleHRlbnNpb25zIGFyZSBidWlsdCBiZWZvcmUgd2UgdHJ5IHRvIHNjYW4KICAjIHRoZW0sIHdoaWNoIHBpY2tzIHVwIERldmVsOjpQUFBvcnQncyBkb2N1bWVudGF0aW9uLgpAQCAtMjcwLDkgKzI3MSw5IEBACiAgCSQoTUlOSVBFUkwpIGF1dG9kb2MucGwKICAKICBwb2QvcGVybG1vZGxpYi5wb2Q6ICQoTUlOSVBFUkxfRVhFKSBwb2QvcGVybG1vZGxpYi5QTCBNQU5JRkVTVAotQEAgLTEwODksNyArMTA5OSw3IEBAIHBvZC9wZXJsNTI0MGRlbHRhLnBvZDogcG9kL3BlcmxkZWx0YS5wb2QKLSAJJChSTVMpIHBvZC9wZXJsNTI0MGRlbHRhLnBvZAotIAkkKExOUykgcGVybGRlbHRhLnBvZCBwb2QvcGVybDUyNDBkZWx0YS5wb2QKK0BAIC0xMDg5LDcgKzEwOTksNyBAQCBwb2QvcGVybDUyNDFkZWx0YS5wb2Q6IHBvZC9wZXJsZGVsdGEucG9kCisgCSQoUk1TKSBwb2QvcGVybDUyNDFkZWx0YS5wb2QKKyAJJChMTlMpIHBlcmxkZWx0YS5wb2QgcG9kL3Blcmw1MjQxZGVsdGEucG9kCiAgCiAtZXh0cmEucG9kczogJChNSU5JUEVSTF9FWEUpCiArZXh0cmEucG9kczoKQEAgLTM0NSw3ICszNDYsNyBAQAogIAkkKE1JTklQRVJMKSBtYWtlX2V4dC5wbCAkQCAkKE1BS0VfRVhUX0FSR1MpIE1BS0U9IiQoTUFLRSkiIExJQlBFUkxfQT0kKExJQlBFUkwpIExJTktUWVBFPXN0YXRpYyAkKFNUQVRJQ19MREZMQUdTKQogIAogIG5fZHVtbXkgJChub254c19leHQpOgkkKE1JTklQRVJMX0VYRSkgbGliL2J1aWxkY3VzdG9taXplLnBsIHByZXBsaWJyYXJ5IEZPUkNFCi1AQCAtMTQ3OSwxNCArMTQ2OCwxNCBAQCB0ZXN0X3ByZXBfcHJlOiBwcmVwbGlicmFyeSB1dGlsaXRpZXMgJChub254c19leHQpCitAQCAtMTQ3OSwxNCArMTQ2OCwxNCBAQCB0ZXN0X3ByZXBfcHJlOiBwcmVwbGlicmFyeSB1dGlsaXRpZXMgJChuCiAgCiAgY2FzZSAiJHRhcmdldGhvc3QiIGluCiAgJycpICRzcGl0c2hlbGwgPj4kTWFrZWZpbGUgPDwnIU5PIVNVQlMhJwpAQCAtMzYyLDcgKzM2Myw3IEBACiAgCVwkKGR5bmFtaWNfZXh0KSBcJChURVNUX1BFUkxfRExMKSBydW50ZXN0cyBcCiAgCVwkKGdlbmVyYXRlZF9wb2RzKQogIAkkdG8gbGlicGVybC4qCi1AQCAtMTUzOSw3ICsxNTI4LDcgQEAgdGVzdF9wcmVwIHRlc3QtcHJlcDogdGVzdF9wcmVwX3ByZSBcJChNSU5JUEVSTF9FWEUpIFwkKHVuaWRhdGFmaWxlcykgXCQoUEVSTF9FWEUKK0BAIC0xNTM5LDcgKzE1MjgsNyBAQCB0ZXN0X3ByZXAgdGVzdC1wcmVwOiB0ZXN0X3ByZXBfcHJlIFwkKE1JCiAgZXNhYwogIAogICRzcGl0c2hlbGwgPj4kTWFrZWZpbGUgPDwnIU5PIVNVQlMhJwpAQCAtMzgwLDYgKzM4MSwzIEBACiAgCS0gY2QgdCAmJiAkKFJVTl9QRVJMKSBURVNUICQoTUlOSVRFU1RfVEVTVFMpIDwkKGRldnR0eSkKICAKICBtaW5pdGVzdC1ub3R0eSBtaW5pdGVzdF9ub3R0eTogJChNSU5JUEVSTF9FWEUpIG1pbml0ZXN0X3ByZXAKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY29uZmlnLnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY29uZmlnLnNoCmluZGV4IDQ2NTc2NzMuLmFjMDQ4NGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2NvbmZpZy5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9jb25maWcuc2gKQEAgLTM2MSw3ICszNjEsNyBAQAogZF9sZGV4cGw9J2RlZmluZScKIGRfbGdhbW1hPSdkZWZpbmUnCiBkX2xnYW1tYV9yPSdkZWZpbmUnCi1kX2xpYm1fbGliX3ZlcnNpb249J2RlZmluZScKK2RfbGlibV9saWJfdmVyc2lvbj0ndW5kZWYnCiBkX2xpYm5hbWVfdW5pcXVlPSd1bmRlZicKIGRfbGluaz0nZGVmaW5lJwogZF9sbHJpbnQ9J2RlZmluZScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2Nyb3NzLWdlbmVyYXRlX3V1ZG1hcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2Nyb3NzLWdlbmVyYXRlX3V1ZG1hcC5wYXRjaAppbmRleCBhMDBhZDYxLi4zM2UyMjIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9jcm9zcy1nZW5lcmF0ZV91dWRtYXAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY3Jvc3MtZ2VuZXJhdGVfdXVkbWFwLnBhdGNoCkBAIC0xLDE1ICsxLDE1IEBACiBVcHN0cmVhbS1TdGF0dXM6SW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKLUluZGV4OiBwZXJsLTUuMTQuMi9NYWtlZmlsZS5TSAorSW5kZXg6IHBlcmwtNS4yNC4xL01ha2VmaWxlLlNICiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjE0LjIub3JpZy9NYWtlZmlsZS5TSAotKysrIHBlcmwtNS4xNC4yL01ha2VmaWxlLlNICi1AQCAtNjIyLDcgKzYyMiw3IEBAIGJpdGNvdW50Lmg6IGdlbmVyYXRlX3V1ZG1hcCQoSE9TVF9FWEVfRVgKLSAJJChSVU4pIC4vZ2VuZXJhdGVfdXVkbWFwJChIT1NUX0VYRV9FWFQpIHV1ZG1hcC5oIGJpdGNvdW50LmgKKy0tLSBwZXJsLTUuMjQuMS5vcmlnL01ha2VmaWxlLlNICisrKysgcGVybC01LjI0LjEvTWFrZWZpbGUuU0gKK0BAIC03MTAsNyArNzEwLDcgQEAgYml0Y291bnQuaDogZ2VuZXJhdGVfdXVkbWFwXCQoSE9TVF9FWEVfRQogIAorICRzcGl0c2hlbGwgPj4kTWFrZWZpbGUgPDwnIU5PIVNVQlMhJwogIGdlbmVyYXRlX3V1ZG1hcCQoSE9TVF9FWEVfRVhUKTogZ2VuZXJhdGVfdXVkbWFwJChPQkpfRVhUKQogLQkkKENDKSAtbyBnZW5lcmF0ZV91dWRtYXAkKEVYRV9FWFQpICQoTERGTEFHUykgZ2VuZXJhdGVfdXVkbWFwJChPQkpfRVhUKSAkKGxpYnMpCiArCSQoQlVJTERfQ0MpIC1vIGdlbmVyYXRlX3V1ZG1hcCQoRVhFX0VYVCkgZ2VuZXJhdGVfdXVkbWFwLmMKICAKLSBtaW5pcGVybG1haW4kKE9CSl9FWFQpOiBtaW5pcGVybG1haW4uYyBwYXRjaGxldmVsLmgKLSAJJChDQ0NNRCkgJChQTERMRkxBR1MpICQqLmMKKyAhTk8hU1VCUyEKKyA7OwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZml4X2JhZF9ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2ZpeF9iYWRfcnBhdGgucGF0Y2gKaW5kZXggNzY1MDEyOC4uNDllZmNiZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZml4X2JhZF9ycGF0aC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9maXhfYmFkX3JwYXRoLnBhdGNoCkBAIC0xMCwxNSArMTAsMTUgQEAKIEl0IGlzIGEgZml4IHRvIE1ha2VNYWtlciB3aXRoaW4gcGVybCwgc28gYWxsIHN1Y2ggcGVybCByZWNpcGVzIHdpbGwgZ2V0IAogZml4ZWQgd2l0aCB0aGlzIHBlcmwgZml4LgogCi1JbmRleDogcGVybC01LjE0LjIvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtCitJbmRleDogcGVybC01LjI0LjEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjE0LjIub3JpZy9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0KLSsrKyBwZXJsLTUuMTQuMi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0KLUBAIC01NSw2ICs1NSw3IEBAIHN1YiBfdW5peF9vczJfZXh0IHsKLSAgICAgbXkoJGZvdW5kKSA9IDA7CistLS0gcGVybC01LjI0LjEub3JpZy9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0KKysrKyBwZXJsLTUuMjQuMS9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0KK0BAIC01Nyw2ICs1Nyw3IEBAIHN1YiBfdW5peF9vczJfZXh0IHsKKyAgICAgbXkgKCAkZm91bmQgKSA9IDA7CiAgCiAgICAgICMgRGViaWFuLXNwZWNpZmljOiBkb24ndCB1c2UgTERfUlVOX1BBVEggZm9yIHN0YW5kYXJkIGRpcnMKICsgICAgcHVzaChAbGlicGF0aCwgIlNZU1JPT1RMSUIiKTsKICAgICAgJGxkX3J1bl9wYXRoX3NlZW57JF99KysgZm9yIEBsaWJwYXRoOwogIAotICAgICBmb3JlYWNoIG15ICR0aGlzbGliIChzcGxpdCAnICcsICRwb3RlbnRpYWxfbGlicykgeworICAgICBmb3JlYWNoIG15ICR0aGlzbGliICggc3BsaXQgJyAnLCAkcG90ZW50aWFsX2xpYnMgKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9pbnN0YWxscGVybC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2luc3RhbGxwZXJsLnBhdGNoCmluZGV4IDQ1NjAxMjMuLjdmZDFmNTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2luc3RhbGxwZXJsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2luc3RhbGxwZXJsLnBhdGNoCkBAIC0xLDEyICsxLDEyIEBACiBVcHN0cmVhbS1TdGF0dXM6SW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKLUluZGV4OiBwZXJsLTUuMTIuMy9pbnN0YWxscGVybAorSW5kZXg6IHBlcmwtNS4yNC4xL2luc3RhbGxwZXJsCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjEyLjMub3JpZy9pbnN0YWxscGVybAotKysrIHBlcmwtNS4xMi4zL2luc3RhbGxwZXJsCi1AQCAtMyw4ICszLDggQEAKKy0tLSBwZXJsLTUuMjQuMS5vcmlnL2luc3RhbGxwZXJsCisrKysgcGVybC01LjI0LjEvaW5zdGFsbHBlcmwKK0BAIC0yLDggKzIsOCBAQAorIAogIEJFR0lOIHsKLSAgICAgcmVxdWlyZSA1LjAwNDsKICAgICAgY2hkaXIgJy4uJyBpZiAhLWQgJ2xpYicgYW5kIC1kICcuLi9saWInOwogLSAgICBASU5DID0gJ2xpYic7CiAtICAgICRFTlZ7UEVSTDVMSUJ9ID0gJ2xpYic7CkBAIC0xNCw0ICsxNCw0IEBACiArIyAgICAkRU5We1BFUkw1TElCfSA9ICdsaWInOwogIAogICAgICAjIFRoaXMgbmVlZHMgdG8gYmUgYXQgQkVHSU4gdGltZSwgYmVmb3JlIGFueSB1c2Ugb2YgQ29uZmlnCi0gICAgIHJlcXVpcmUgJy4vaW5zdGFsbF9saWIucGwnOworICAgICAjIGluc3RhbGxfbGliIGl0c2VsZiBsb2FkcyBhbmQgaW1wb3J0cyBDb25maWcgaW50byBtYWluOjoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL21ha2VfZXh0LnBsLWZpeC1yZWdlbmVyYXRlLW1ha2VmaWxlLWZhaWxlZC13aGlsZS1jYy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9tYWtlX2V4dC5wbC1maXgtcmVnZW5lcmF0ZS1tYWtlZmlsZS1mYWlsZWQtd2hpbGUtY2MtLnBhdGNoCmluZGV4IGRlNmY2NTIuLmIyYzU5NzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL21ha2VfZXh0LnBsLWZpeC1yZWdlbmVyYXRlLW1ha2VmaWxlLWZhaWxlZC13aGlsZS1jYy0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvbWFrZV9leHQucGwtZml4LXJlZ2VuZXJhdGUtbWFrZWZpbGUtZmFpbGVkLXdoaWxlLWNjLS5wYXRjaApAQCAtMTAsMTAgKzEwLDEwIEBACiAgbWFrZV9leHQucGwgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKLWRpZmYgLS1naXQgYS9tYWtlX2V4dC5wbCBiL21ha2VfZXh0LnBsCi1pbmRleCBiNDMzNzYyLi45ZmMxYTM2IDEwMDY0NAotLS0tIGEvbWFrZV9leHQucGwKLSsrKyBiL21ha2VfZXh0LnBsCitJbmRleDogcGVybC01LjI0LjEvbWFrZV9leHQucGwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwZXJsLTUuMjQuMS5vcmlnL21ha2VfZXh0LnBsCisrKysgcGVybC01LjI0LjEvbWFrZV9leHQucGwKIEBAIC0zMzUsNiArMzM1LDEwIEBAIHN1YiBidWlsZF9leHRlbnNpb24gewogICAgICAgICAgICAgICAgICBwcmludCAiRGVsZXRpbmcgbm9uLUNyb3NzIG1ha2VmaWxlXG4iOwogICAgICAgICAgICAgICAgICBjbG9zZSAkbWZoIG9yIGRpZSAiY2xvc2UgJG1ha2VmaWxlOiAkISI7CkBAIC0yNCw3ICsyNCw0IEBACiArICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICB9Ci0gICAgIH0KLS0tIAotMS44LjEuMgotCisgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLTUuMjYuMS1ndWFyZF9vbGRfbGliY3J5cHRfZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC01LjI2LjEtZ3VhcmRfb2xkX2xpYmNyeXB0X2ZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjNkNmRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC01LjI2LjEtZ3VhcmRfb2xkX2xpYmNyeXB0X2ZpeC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitjb21taXQgMTNlNzBiMzk3ZGNiMGQxYmY0YTg2OWI2NzBmMDQxYzFkN2I3MzBkMAorQXV0aG9yOiBCauC4o+C4lnJuIEVzc2VyIDxiZXNzZXI4MkBmZWRvcmFwcm9qZWN0Lm9yZz4KK0RhdGU6ICAgU2F0IEphbiAyMCAyMDoyMjo1MyAyMDE4ICswMTAwCisKKyAgICBwcDogR3VhcmQgZml4IGZvciByZWFsbHkgb2xkIGJ1ZyBpbiBnbGliYyBsaWJjcnlwdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitkaWZmIC0tZ2l0IGEvcHAuYyBiL3BwLmMKK2luZGV4IGQ1MGFkN2RkYmYuLjY1MTBjN2IxNWMgMTAwNjQ0CistLS0gYS9wcC5jCisrKysgYi9wcC5jCitAQCAtMzY1MCw4ICszNjUwLDEyIEBAIFBQKHBwX2NyeXB0KQorICNpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChfX0VNWF9fKQorIAlpZiAoUExfcmVlbnRyYW50X2J1ZmZlci0+X2NyeXB0X3N0cnVjdF9idWZmZXIpIHsKKyAJICAgIFBMX3JlZW50cmFudF9idWZmZXItPl9jcnlwdF9zdHJ1Y3RfYnVmZmVyLT5pbml0aWFsaXplZCA9IDA7CistCSAgICAvKiB3b3JrIGFyb3VuZCBnbGliYy0yLjIuNSBidWcgKi8KKysjaWYgKGRlZmluZWQoX19HTElCQ19fKSAmJiBfX0dMSUJDX18gPT0gMikgJiYgXAorKyAgICAoZGVmaW5lZChfX0dMSUJDX01JTk9SX18pICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA8IDQpCisrCSAgICAvKiB3b3JrIGFyb3VuZCBnbGliYy0yLjIuNSBidWcsIGhhcyBiZWVuIGZpeGVkIGF0IHNvbWUKKysJICAgICAqIHRpbWUgaW4gZ2xpYmMtMi4zLlggKi8KKyAJICAgIFBMX3JlZW50cmFudF9idWZmZXItPl9jcnlwdF9zdHJ1Y3RfYnVmZmVyLT5jdXJyZW50X3NhbHRiaXRzID0gMDsKKysjZW5kaWYKKyAJfQorICNlbmRpZgorICAgICB9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtYXJjaGxpYi1leHAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWFyY2hsaWItZXhwLnBhdGNoCmluZGV4IGQ5MTJkMDAuLjM3YmY1MjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtYXJjaGxpYi1leHAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1hcmNobGliLWV4cC5wYXRjaApAQCAtMjUsMTYgKzI1LDE2IEBACiAKIFNpZ25lZC1vZmYtYnk6IFRvbSBaYW51c3NpIDx0b20uemFudXNzaUBpbnRlbC5jb20+CiAKLUluZGV4OiBwZXJsLTUuMTQuMi9jb25maWdfaC5TSAorSW5kZXg6IHBlcmwtNS4yNC4xL2NvbmZpZ19oLlNICiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjE0LjIub3JpZy9jb25maWdfaC5TSAotKysrIHBlcmwtNS4xNC4yL2NvbmZpZ19oLlNICi1AQCAtOTk2LDcgKzk5Niw3IEBAIHNlZCA8PCFHUk9LIVRISVMhID4kQ09ORklHX0ggLWUgJ3MhXiN1bmQKKy0tLSBwZXJsLTUuMjQuMS5vcmlnL2NvbmZpZ19oLlNICisrKysgcGVybC01LjI0LjEvY29uZmlnX2guU0gKK0BAIC0xNDM0LDcgKzE0MzQsNyBAQCBzZWQgPDwhR1JPSyFUSElTISA+JENPTkZJR19IIC1lICdzIV4jdW5kCiAgICoJaW4gcHJvZ3JhbXMgdGhhdCBhcmUgbm90IHByZXBhcmVkIHRvIGRlYWwgd2l0aCB+IGV4cGFuc2lvbiBhdCBydW4tdGltZS4KICAgKi8KICAjJGRfYXJjaGxpYiBBUkNITElCICIkYXJjaGxpYiIJCS8qKi8KIC0jJGRfYXJjaGxpYiBBUkNITElCX0VYUCAiJGFyY2hsaWJleHAiCQkvKiovCiArIyRkX2FyY2hsaWIgQVJDSExJQl9FWFAgIiRhcmNobGliX2V4cCIJCS8qKi8KICAKLSAvKiBBUkNITkFNRToKLSAgKglUaGlzIHN5bWJvbCBob2xkcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGFyY2hpdGVjdHVyZSBuYW1lLgorIC8qIEJJTjoKKyAgKglUaGlzIHN5bWJvbCBob2xkcyB0aGUgcGF0aCBvZiB0aGUgYmluIGRpcmVjdG9yeSB3aGVyZSB0aGUgcGFja2FnZSB3aWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWR5bmxvYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZHlubG9hZGVyLnBhdGNoCmluZGV4IDAzNWJlYmEuLjI1NzIwNjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZHlubG9hZGVyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZHlubG9hZGVyLnBhdGNoCkBAIC03LDEzICs3LDEzIEBACiAKIFVwZGF0ZSBieSBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzA0LzIxCiAKLUluZGV4OiBwZXJsLTUuMTQuMi9kaXN0L1hTTG9hZGVyL1hTTG9hZGVyX3BtLlBMCitJbmRleDogcGVybC01LjI0LjEvZGlzdC9YU0xvYWRlci9YU0xvYWRlcl9wbS5QTAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBlcmwtNS4xNC4yLm9yaWcvZGlzdC9YU0xvYWRlci9YU0xvYWRlcl9wbS5QTAotKysrIHBlcmwtNS4xNC4yL2Rpc3QvWFNMb2FkZXIvWFNMb2FkZXJfcG0uUEwKLUBAIC0yOCw2ICsyOCwyMCBAQCBzdWIgbG9hZCB7Ci0gCi0gICAgIG15ICgkbW9kdWxlLCAkbW9kbGlibmFtZSkgPSBjYWxsZXIoKTsKKy0tLSBwZXJsLTUuMjQuMS5vcmlnL2Rpc3QvWFNMb2FkZXIvWFNMb2FkZXJfcG0uUEwKKysrKyBwZXJsLTUuMjQuMS9kaXN0L1hTTG9hZGVyL1hTTG9hZGVyX3BtLlBMCitAQCAtNTIsNiArNTIsMjAgQEAgc3ViIGxvYWQgeworICAgICBteSAoJGNhbGxlciwgJG1vZGxpYm5hbWUpID0gY2FsbGVyKCk7CisgICAgIG15ICRtb2R1bGUgPSAkY2FsbGVyOwogIAogKyAgICAjIE9FOiBBbGxvdyBlbnYgdG8gZm9ybSBkeW5hbWljIGxvYWRlciB0byBsb29rIGluIGEgZGlmZmVyZW50IHBsYWNlCiArICAgICMgVGhpcyBpcyBzbyBpdCBmaW5kcyB0aGUgaG9zdCAuc28gZmlsZXMsIG5vdCB0aGUgdGFyZ2V0cwpAQCAtMzAsNSArMzAsNSBAQAogKyAgICB9CiArCiAgICAgIGlmIChAXykgewotIAkkbW9kdWxlID0gJF9bMF07CisgICAgICAgICAkbW9kdWxlID0gJF9bMF07CiAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWVuYWJsZS1nZGJtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1lbmFibGUtZ2RibS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE4M2ZjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWVuYWJsZS1nZGJtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOkluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1JbmRleDogcGVybC01LjguOC9jb25maWdfaC5TSAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBlcmwtNS44Ljgub3JpZy9jb25maWdfaC5TSAkyMDA1LTExLTAxIDAyOjEzOjA1LjAwMDAwMDAwMCArMDgwMAotKysrIHBlcmwtNS44LjgvY29uZmlnX2guU0gJMjAxMC0xMS0wMSAxNzowNjowNy4yMTUyMTk3MzggKzA4MDAKLUBAIC03MDksNiArNzA5LDEyIEBACi0gICovCi0gIyRpX2Zsb2F0IElfRkxPQVQJCS8qKi8KLSAKLSsvKiBJX0dEQk06Ci0rICogICAgICBUaGlzIHN5bWJvbCwgaWYgZGVmaW5lZCwgaW5kaWNhdGVzIHRoYXQgPGdkYm0uaD4gZXhpc3RzIGFuZCBzaG91bGQKLSsgKiAgICAgIGJlIGluY2x1ZGVkLgotKyAqLwotKyMkaV9nZGJtIElfR0RCTSAvKiovCi0rCi0gLyogSV9MSU1JVFM6Ci0gICoJVGhpcyBzeW1ib2wsIGlmIGRlZmluZWQsIGluZGljYXRlcyB0byB0aGUgQyBwcm9ncmFtIHRoYXQgaXQgc2hvdWxkCi0gICoJaW5jbHVkZSA8bGltaXRzLmg+IHRvIGdldCBkZWZpbml0aW9uIG9mIHN5bWJvbHMgbGlrZSBXT1JEX0JJVCBvcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC10ZXN0LWN1c3RvbWl6ZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLXRlc3QtY3VzdG9taXplZC5wYXRjaAppbmRleCA5MGU0ZGNkLi4xZDlhNTZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLXRlc3QtY3VzdG9taXplZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLXRlc3QtY3VzdG9taXplZC5wYXRjaApAQCAtMzIsNyArMzIsNyBAQAogIEV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QucG0gMGUxZTRjMjVlZGRiOTk5ZmVjNmM0ZGM2NjU5M2Y3NmRiMzRjZmQxNgogLUV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtIGJmZDJhYTAwY2E0ZWQyNTFmMzQyZTFkMWFkNzA0YWJiYWY1YTYxNWUKIC1FeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NYWtlTWFrZXIucG0gNTUyOWFlMzA2NDM2NWVhZmQ5OTUzNjYyMTMwNWQ1MmY0YWIzMWI0NQotK0V4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtIGQ1OTNkOGZkYzVjMGViY2I2ZDM3MDFjNzBmYzY2NDBjNTBkOTM0NTUKKytFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbSBmMWNhNWVjMjQ3ZWI2OWJhMTNhMjY5ZjM0ZGMyMDVkYTM3YjYxMjQ0CiArRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTWFrZU1ha2VyLnBtIGJmOTE3NGM3MGEwZTUwZmYyZmVlNDU1MmM3ZGY4OWIzN2QyOTJkYTEKICBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NYWtlTWFrZXIvQ29uZmlnLnBtIGJjODhiMjc1YWY3M2I4ZmFhYzZhYmQ1OWE5YWFkM2Y2MjU5MjU4MTAKICBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NYWtlTWFrZXIvRkFRLnBvZCAwNjJlNWQxNGE4MDNmYmJlYzhkNjE4MDMwODZhM2Q3OTk3ZThhNDczCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjI0LjEuYmIKaW5kZXggYjU1ZDIyMi4uOTFmMzEwZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yNC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjQuMS5iYgpAQCAtMSw4ICsxLDcgQEAKIHJlcXVpcmUgcGVybC5pbmMKIAogIyBXZSBuZWVkIGdudWdyZXAgKGZvciAtSSkKLURFUEVORFMgPSAidmlydHVhbC9kYiBncmVwLW5hdGl2ZSIKLURFUEVORFMgKz0gImdkYm0gemxpYiIKK0RFUEVORFMgPSAiZGIgZ3JlcC1uYXRpdmUgZ2RibSB6bGliIHZpcnR1YWwvY3J5cHQiCiAKICMgUGljayB1cCBwYXRjaGVzIGZyb20gZGViaWFuCiAjIGh0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL3AvcGVybC9wZXJsXzUuMjIuMC0xLmRlYmlhbi50YXIueHoKQEAgLTQ2LDcgKzQ1LDYgQEAKICAgICAgICAgZmlsZTovL2xldGdjYy1maW5kLWVycm5vLnBhdGNoIFwKICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXNoLnBhdGNoIFwKICAgICAgICAgZmlsZTovL25hdGl2ZS1wZXJsaW5jLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL3BlcmwtZW5hYmxlLWdkYm0ucGF0Y2ggXAogICAgICAgICBmaWxlOi8vY3Jvc3MtZ2VuZXJhdGVfdXVkbWFwLnBhdGNoIFwKICAgICAgICAgZmlsZTovL2ZpeF9iYWRfcnBhdGgucGF0Y2ggXAogICAgICAgICBmaWxlOi8vZHluYWxvYWRlcmhhY2sucGF0Y2ggXApAQCAtNjUsNiArNjMsOSBAQAogICAgICAgICBmaWxlOi8vcGVybC1lcnJuby1nZW5lcmF0aW9uLWdjYzUucGF0Y2ggXAogICAgICAgICBmaWxlOi8vcGVybC1maXgtY29uZmxpY3QtYmV0d2Vlbi1za2lwX2FsbC1hbmQtRU5ELnBhdGNoIFwKICAgICAgICAgZmlsZTovL3BlcmwtdGVzdC1jdXN0b21pemVkLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL3BlcmwtNS4yNi4xLWd1YXJkX29sZF9saWJjcnlwdF9maXgucGF0Y2ggXAorICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTI4ODMucGF0Y2ggXAorICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTI4MzcucGF0Y2ggXAogIgogCiAjIEZpeCB0ZXN0IGNhc2UgaXNzdWVzCkBAIC0xODksNiArMTkwLDE5IEBACiAgICAgICAgIG9lX3J1bm1ha2UgcGVybCBMRD0iJHtDQ0xEfSIKIH0KIAorZG9fY29tcGlsZV9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICAjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSBudW1lcm91cyBjb21tZW50cy4uLgorICAgICAgICBmaW5kICIke1N9L2NwYW4vRW5jb2RlIiAtdHlwZSBmIFwKKyAgICAgICAgICAgIFwoIC1uYW1lICcqLmV4aCcgLW8gLW5hbWUgJyouYycgLW8gLW5hbWUgJyouaCcgXClcCisgICAgICAgICAgICAtZXhlYyBzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyB7fSArCisgICAgICAgIHNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgJHtTfS9wZXJsLmggJHtTfS9wcC5oCisgICAgICAgIHNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX0vdXNyL2Jpbi9wZXJsLW5hdGl2ZS9wZXJsJHtQVn0ucmVhbDovdXNyL2Jpbi9wZXJsJHtQVn06ZycgIFwKKyAgICAgICAgICAgICR7U30vY3Bhbi9Db21wcmVzcy1SYXctQnppcDIvY29uc3RhbnRzLmggXAorICAgICAgICAgICAgJHtTfS9jcGFuL0NvbXByZXNzLVJhdy1abGliL2NvbnN0YW50cy5oIFwKKyAgICAgICAgICAgICR7U30vY3Bhbi9JUEMtU3lzVi9jb25zdC1jLmluYyBcCisgICAgICAgICAgICAke1N9L2Rpc3QvVGltZS1IaVJlcy9jb25zdC1jLmluYworfQorCiBkb19pbnN0YWxsKCkgewogCSNleHBvcnQgaG9zdHBlcmw9IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9wZXJsJHtQVn0iCiAJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQpAQCAtMjMyLDYgKzI0Niw3IEBACiAgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvLCR7YmluZGlyfS8sZyIgXAogICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LywsZyIgXAogICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LyR7VEFSR0VUX1BSRUZJWH0sJHtiaW5kaXJ9LGciIFwKKyAgICAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCiAgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L2gyeHMgXAogICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9oMnBoIFwKICAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMm1hbiBcCkBAIC0yNjcsNiArMjgyLDcgQEAKIEZJTEVTXyR7UE59LWxpYiA9ICIke2xpYmRpcn0vbGlicGVybC5zbyogXAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNSBcCiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvY29uZmlnLnNoIFwKKwkJICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnX2dpdC5wbCBcCiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnX2hlYXZ5LnBsIFwKICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWdfaGVhdnktdGFyZ2V0LnBsIgogRklMRVNfJHtQTn0tcG9kID0gIiR7bGliZGlyfS9wZXJsLyR7UFZ9L3BvZCBcCkBAIC0zMjQsNyArMzQwLDcgQEAKICAgICBkLnNldFZhcihkLmV4cGFuZCgiUlJFQ09NTUVORFNfJHtQTn0tbW9kdWxlcyIpLCAnICcuam9pbihwYWNrYWdlcykpCiB9CiAKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5wZXJsLW1vZHVsZS0uKiIKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5wZXJsLW1vZHVsZS0uKig/PCFcLW5hdGl2ZSkkIgogUEFDS0FHRVNfRFlOQU1JQ19jbGFzcy1uYXRpdmVzZGsgKz0gIl5uYXRpdmVzZGstcGVybC1tb2R1bGUtLioiCiAKIFJQUk9WSURFU19wZXJsLWxpYiA9ICJwZXJsLWxpYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtTWluaW1hbC10d2Vha3MtdG8tY29tcGlsZS13aXRoLVZpc3VhbC1DLTIwMTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi8wMDAxLU1pbmltYWwtdHdlYWtzLXRvLWNvbXBpbGUtd2l0aC1WaXN1YWwtQy0yMDE1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODA1YWQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtTWluaW1hbC10d2Vha3MtdG8tY29tcGlsZS13aXRoLVZpc3VhbC1DLTIwMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAsMCBAQAotRnJvbSA0ZDdiNGQ3YzhlOTk2NmM1OTNmNDcyMzU1NjA3MjA0YzZjODBmZWNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KLURhdGU6IFN1biwgNCBKdW4gMjAxNyAxOToxOTo1NSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBNaW5pbWFsIHR3ZWFrcyB0byBjb21waWxlIHdpdGggVmlzdWFsIEMgMjAxNQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi0gZ2V0b3B0X2xvbmcuYyAgICAgICAgICAgfCAgMiArKwotIGxpYnBrZ2NvbmYvYnNkc3R1YnMuYyAgIHwgIDEgKwotIGxpYnBrZ2NvbmYvbGlicGtnY29uZi5oIHwgIDIgKy0KLSBsaWJwa2djb25mL3BhdGguYyAgICAgICB8IDEwICsrKysrLS0tLS0KLSBsaWJwa2djb25mL3BrZy5jICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSBsaWJwa2djb25mL3N0ZGluYy5oICAgICB8ICA5ICsrKysrKystLQotIDYgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZXRvcHRfbG9uZy5jIGIvZ2V0b3B0X2xvbmcuYwotaW5kZXggYWZlYjY4ZC4uNWNlOWJmZCAxMDA2NDQKLS0tLSBhL2dldG9wdF9sb25nLmMKLSsrKyBiL2dldG9wdF9sb25nLmMKLUBAIC02Miw3ICs2Miw5IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaWZuZGVmIF9XSU4zMgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjZW5kaWYKLSAKLSAjZGVmaW5lIFBLR0NPTkZfSEFDS19MT0dJQ0FMX09SX0FMTF9WQUxVRVMKLSAKLWRpZmYgLS1naXQgYS9saWJwa2djb25mL2JzZHN0dWJzLmMgYi9saWJwa2djb25mL2JzZHN0dWJzLmMKLWluZGV4IDhmNzBmZjMuLjJjMDAwYWMgMTAwNjQ0Ci0tLS0gYS9saWJwa2djb25mL2JzZHN0dWJzLmMKLSsrKyBiL2xpYnBrZ2NvbmYvYnNkc3R1YnMuYwotQEAgLTE3LDYgKzE3LDcgQEAKLSAgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotICAqLwotIAotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotIAotZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvbGlicGtnY29uZi5oIGIvbGlicGtnY29uZi9saWJwa2djb25mLmgKLWluZGV4IDQwNGJmMGMuLjU1MWQ4NWQgMTAwNjQ0Ci0tLS0gYS9saWJwa2djb25mL2xpYnBrZ2NvbmYuaAotKysrIGIvbGlicGtnY29uZi9saWJwa2djb25mLmgKLUBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBwa2djb25mX2F1ZGl0X2xvZ19kZXBlbmRlbmN5KHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgY29uc3QgcGtnY29uZl9wa2dfdAotIC8qIHBhdGguYyAqLwotIHZvaWQgcGtnY29uZl9wYXRoX2FkZChjb25zdCBjaGFyICp0ZXh0LCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpOwotIHNpemVfdCBwa2djb25mX3BhdGhfc3BsaXQoY29uc3QgY2hhciAqdGV4dCwgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKLS1zaXplX3QgcGtnY29uZl9wYXRoX2J1aWxkX2Zyb21fZW52aXJvbihjb25zdCBjaGFyICplbnZpcm9uLCBjb25zdCBjaGFyICpmYWxsYmFjaywgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKLStzaXplX3QgcGtnY29uZl9wYXRoX2J1aWxkX2Zyb21fZW52aXJvbihjb25zdCBjaGFyICplbnZ2YXJuYW1lLCBjb25zdCBjaGFyICpmYWxsYmFjaywgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKLSBib29sIHBrZ2NvbmZfcGF0aF9tYXRjaF9saXN0KGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KTsKLSB2b2lkIHBrZ2NvbmZfcGF0aF9mcmVlKHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KTsKLSBib29sIHBrZ2NvbmZfcGF0aF9yZWxvY2F0ZShjaGFyICpidWYsIHNpemVfdCBidWZsZW4pOwotZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvcGF0aC5jIGIvbGlicGtnY29uZi9wYXRoLmMKLWluZGV4IGRkZGIzYmYuLjU5ZTAwM2UgMTAwNjQ0Ci0tLS0gYS9saWJwa2djb25mL3BhdGguYwotKysrIGIvbGlicGtnY29uZi9wYXRoLmMKLUBAIC0yMCw3ICsyMCw3IEBACi0gIyBpbmNsdWRlIDxzeXMvY3lnd2luLmg+Ci0gI2VuZGlmCi0gCi0tI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAotKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRfSCkgJiYgISBkZWZpbmVkKF9XSU4zMikKLSAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gIyBkZWZpbmUgUEtHQ09ORl9DQUNIRV9JTk9ERVMKLSAjZW5kaWYKLUBAIC0xNTYsMTIgKzE1NiwxMiBAQCBwa2djb25mX3BhdGhfc3BsaXQoY29uc3QgY2hhciAqdGV4dCwgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKQotIC8qCi0gICogIWRvYwotICAqCi0tICogLi4gYzpmdW5jdGlvbjo6IHNpemVfdCBwa2djb25mX3BhdGhfYnVpbGRfZnJvbV9lbnZpcm9uKGNvbnN0IGNoYXIgKmVudmlyb24sIGNvbnN0IGNoYXIgKmZhbGxiYWNrLCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCkKLSsgKiAuLiBjOmZ1bmN0aW9uOjogc2l6ZV90IHBrZ2NvbmZfcGF0aF9idWlsZF9mcm9tX2Vudmlyb24oY29uc3QgY2hhciAqZW52dmFybmFtZSwgY29uc3QgY2hhciAqZmFsbGJhY2ssIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KQotICAqCi0gICogICAgQWRkcyB0aGUgcGF0aHMgc3BlY2lmaWVkIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgcGF0aCBsaXN0LiAgSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQsCi0gICogICAgYW4gb3B0aW9uYWwgZGVmYXVsdCBzZXQgb2YgcGF0aHMgaXMgYWRkZWQuCi0gICoKLS0gKiAgICA6cGFyYW0gY2hhciogZW52aXJvbjogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGxvb2sgdXAuCi0rICogICAgOnBhcmFtIGNoYXIqIGVudnZhcm5hbWU6IFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBsb29rIHVwLgotICAqICAgIDpwYXJhbSBjaGFyKiBmYWxsYmFjazogVGhlIGZhbGxiYWNrIHBhdGhzIHRvIHVzZSBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldC4KLSAgKiAgICA6cGFyYW0gcGtnY29uZl9saXN0X3QqIGRpcmxpc3Q6IFRoZSBwYXRoIGxpc3QgdG8gYWRkIHRoZSBwYXRoIG5vZGVzIHRvLgotICAqICAgIDpwYXJhbSBib29sIGZpbHRlcjogV2hldGhlciB0byBwZXJmb3JtIGR1cGxpY2F0ZSBmaWx0ZXJpbmcuCi1AQCAtMTY5LDExICsxNjksMTEgQEAgcGtnY29uZl9wYXRoX3NwbGl0KGNvbnN0IGNoYXIgKnRleHQsIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcikKLSAgKiAgICA6cnR5cGU6IHNpemVfdAotICAqLwotIHNpemVfdAotLXBrZ2NvbmZfcGF0aF9idWlsZF9mcm9tX2Vudmlyb24oY29uc3QgY2hhciAqZW52aXJvbiwgY29uc3QgY2hhciAqZmFsbGJhY2ssIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcikKLStwa2djb25mX3BhdGhfYnVpbGRfZnJvbV9lbnZpcm9uKGNvbnN0IGNoYXIgKmVudnZhcm5hbWUsIGNvbnN0IGNoYXIgKmZhbGxiYWNrLCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpCi0gewotIAljb25zdCBjaGFyICpkYXRhOwotIAotLQlkYXRhID0gZ2V0ZW52KGVudmlyb24pOwotKwlkYXRhID0gZ2V0ZW52KGVudnZhcm5hbWUpOwotIAlpZiAoZGF0YSAhPSBOVUxMKQotIAkJcmV0dXJuIHBrZ2NvbmZfcGF0aF9zcGxpdChkYXRhLCBkaXJsaXN0LCBmaWx0ZXIpOwotIAotZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvcGtnLmMgYi9saWJwa2djb25mL3BrZy5jCi1pbmRleCA3YWViZDYxLi41ZGFjYWUzIDEwMDY0NAotLS0tIGEvbGlicGtnY29uZi9wa2cuYwotKysrIGIvbGlicGtnY29uZi9wa2cuYwotQEAgLTMwLDYgKzMwLDggQEAKLSAjCWRlZmluZSBQS0dfQ09ORklHX1JFR19LRVkgIlNvZnR3YXJlXFxwa2djb25maWdcXFBLR19DT05GSUdfUEFUSCIKLSAjCXVuZGVmIFBLR19ERUZBVUxUX1BBVEgKLSAjCWRlZmluZSBQS0dfREVGQVVMVF9QQVRIICIuLi9saWIvcGtnY29uZmlnOy4uL3NoYXJlL3BrZ2NvbmZpZyIKLSsjZGVmaW5lIHN0cm5jYXNlY21wIF9zdHJuaWNtcAotKyNkZWZpbmUgc3RyY2FzZWNtcCBfc3RyaWNtcAotICNlbmRpZgotIAotICNkZWZpbmUgUEtHX0NPTkZJR19FWFQJCSIucGMiCi1AQCAtMTM0LDIxICsxMzYsMjEgQEAgc3RhdGljIGludCBwa2djb25mX3BrZ19wYXJzZXJfa2V5d29yZF9wYWlyX2NtcChjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKnB0cikKLSBzdGF0aWMgdm9pZAotIHBrZ2NvbmZfcGtnX3BhcnNlcl90dXBsZV9mdW5jKGNvbnN0IHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgcGtnY29uZl9wa2dfdCAqcGtnLCBjb25zdCBwdHJkaWZmX3Qgb2Zmc2V0LCBjaGFyICp2YWx1ZSkKLSB7Ci0tCWNoYXIgKipkZXN0ID0gKCh2b2lkICopIHBrZyArIG9mZnNldCk7Ci0rCWNoYXIgKipkZXN0ID0gKGNoYXIgKiopKChjaGFyICopIHBrZyArIG9mZnNldCk7Ci0gCSpkZXN0ID0gcGtnY29uZl90dXBsZV9wYXJzZShjbGllbnQsICZwa2ctPnZhcnMsIHZhbHVlKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLSBwa2djb25mX3BrZ19wYXJzZXJfZnJhZ21lbnRfZnVuYyhjb25zdCBwa2djb25mX2NsaWVudF90ICpjbGllbnQsIHBrZ2NvbmZfcGtnX3QgKnBrZywgY29uc3QgcHRyZGlmZl90IG9mZnNldCwgY2hhciAqdmFsdWUpCi0gewotLQlwa2djb25mX2xpc3RfdCAqZGVzdCA9ICgodm9pZCAqKSBwa2cgKyBvZmZzZXQpOwotKwlwa2djb25mX2xpc3RfdCAqZGVzdCA9IChwa2djb25mX2xpc3RfdCAqKSgoY2hhciAqKSBwa2cgKyBvZmZzZXQpOwotIAlwa2djb25mX2ZyYWdtZW50X3BhcnNlKGNsaWVudCwgZGVzdCwgJnBrZy0+dmFycywgdmFsdWUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotIHBrZ2NvbmZfcGtnX3BhcnNlcl9kZXBlbmRlbmN5X2Z1bmMoY29uc3QgcGtnY29uZl9jbGllbnRfdCAqY2xpZW50LCBwa2djb25mX3BrZ190ICpwa2csIGNvbnN0IHB0cmRpZmZfdCBvZmZzZXQsIGNoYXIgKnZhbHVlKQotIHsKLS0JcGtnY29uZl9saXN0X3QgKmRlc3QgPSAoKHZvaWQgKikgcGtnICsgb2Zmc2V0KTsKLSsJcGtnY29uZl9saXN0X3QgKmRlc3QgPSAocGtnY29uZl9saXN0X3QgKikoKGNoYXIgKikgcGtnICsgb2Zmc2V0KTsKLSAJcGtnY29uZl9kZXBlbmRlbmN5X3BhcnNlKGNsaWVudCwgcGtnLCBkZXN0LCB2YWx1ZSk7Ci0gfQotIAotQEAgLTIzOCw3ICsyNDAsNyBAQCBwa2djb25mX3BrZ192YWxpZGF0ZShjb25zdCBwa2djb25mX2NsaWVudF90ICpjbGllbnQsIGNvbnN0IHBrZ2NvbmZfcGtnX3QgKnBrZykKLSAKLSAJZm9yIChpID0gMDsgaSA8IFBLR0NPTkZfQVJSQVlfU0laRShwa2djb25mX3BrZ192YWxpZGF0aW9ucyk7IGkrKykKLSAJewotLQkJY2hhciAqKnAgPSAoKHZvaWQgKikgcGtnICsgcGtnY29uZl9wa2dfdmFsaWRhdGlvbnNbaV0ub2Zmc2V0KTsKLSsJCWNoYXIgKipwID0gKGNoYXIgKiopKChjaGFyICopIHBrZyArIHBrZ2NvbmZfcGtnX3ZhbGlkYXRpb25zW2ldLm9mZnNldCk7Ci0gCi0gCQlpZiAoKnAgIT0gTlVMTCkKLSAJCQljb250aW51ZTsKLUBAIC01ODcsNyArNTg5LDcgQEAgcGtnY29uZl9zY2FuX2FsbChwa2djb25mX2NsaWVudF90ICpjbGllbnQsIHZvaWQgKmRhdGEsIHBrZ2NvbmZfcGtnX2l0ZXJhdGlvbl9mdW4KLSAKLSAjaWZkZWYgX1dJTjMyCi0gc3RhdGljIHBrZ2NvbmZfcGtnX3QgKgotLXBrZ2NvbmZfcGtnX2ZpbmRfaW5fcmVnaXN0cnlfa2V5KGNvbnN0IHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgSEtFWSBoa2V5LCBjb25zdCBjaGFyICpuYW1lKQotK3BrZ2NvbmZfcGtnX2ZpbmRfaW5fcmVnaXN0cnlfa2V5KHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgSEtFWSBoa2V5LCBjb25zdCBjaGFyICpuYW1lKQotIHsKLSAJcGtnY29uZl9wa2dfdCAqcGtnID0gTlVMTDsKLSAKLUBAIC0xMDQ4LDggKzEwNTAsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgewotIAotIHN0YXRpYyBjb25zdCBwa2djb25mX3BrZ19wcm92aWRlc192ZXJtYXRjaF9ydWxlX3QgcGtnY29uZl9wa2dfcHJvdmlkZXNfdmVybWF0Y2hfcnVsZXNbXSA9IHsKLSAJW1BLR0NPTkZfQ01QX0FOWV0gPSB7Ci0tCQkucnVsZWNtcCA9IHt9LAotLQkJLmRlcGNtcCA9IHt9LAotKwkJLnJ1bGVjbXAgPSB7Ci0rCQkJW1BLR0NPTkZfQ01QX0FOWV0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3Jfbm9uZSwKLSsgICAgICAgICAgICAgICAgfSwKLSsJCS5kZXBjbXAgPSB7Ci0rCQkJW1BLR0NPTkZfQ01QX0FOWV0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3Jfbm9uZSwKLSsgICAgICAgICAgICAgICAgfSwKLSAJfSwKLSAJW1BLR0NPTkZfQ01QX0xFU1NfVEhBTl0gPSB7Ci0gCQkucnVsZWNtcCA9IHsKLUBAIC0xMTIxLDcgKzExMjcsOSBAQCBzdGF0aWMgY29uc3QgcGtnY29uZl9wa2dfcHJvdmlkZXNfdmVybWF0Y2hfcnVsZV90IHBrZ2NvbmZfcGtnX3Byb3ZpZGVzX3Zlcm1hdGNoXwotIAkJCVtQS0dDT05GX0NNUF9FUVVBTF0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3JfZXEsCi0gCQkJW1BLR0NPTkZfQ01QX05PVF9FUVVBTF0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3JfbmUKLSAJCX0sCi0tCQkuZGVwY21wID0ge30sCi0rCQkuZGVwY21wID0gewotKwkJCVtQS0dDT05GX0NNUF9BTlldCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX25vbmUsCi0rICAgICAgICAgICAgICAgIH0sCi0gCX0sCi0gCVtQS0dDT05GX0NNUF9OT1RfRVFVQUxdID0gewotIAkJLnJ1bGVjbXAgPSB7Ci1AQCAtMTEzMyw3ICsxMTQxLDkgQEAgc3RhdGljIGNvbnN0IHBrZ2NvbmZfcGtnX3Byb3ZpZGVzX3Zlcm1hdGNoX3J1bGVfdCBwa2djb25mX3BrZ19wcm92aWRlc192ZXJtYXRjaF8KLSAJCQlbUEtHQ09ORl9DTVBfRVFVQUxdCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX25lLAotIAkJCVtQS0dDT05GX0NNUF9OT1RfRVFVQUxdCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX2VxCi0gCQl9LAotLQkJLmRlcGNtcCA9IHt9LAotKwkJLmRlcGNtcCA9IHsKLSsJCQlbUEtHQ09ORl9DTVBfQU5ZXQkJCT0gcGtnY29uZl9wa2dfY29tcGFyYXRvcl9ub25lLAotKyAgICAgICAgICAgICAgICB9LAotIAl9LAotIH07Ci0gCi1kaWZmIC0tZ2l0IGEvbGlicGtnY29uZi9zdGRpbmMuaCBiL2xpYnBrZ2NvbmYvc3RkaW5jLmgKLWluZGV4IDU4Y2M2YzcuLmFjN2U1M2MgMTAwNjQ0Ci0tLS0gYS9saWJwa2djb25mL3N0ZGluYy5oCi0rKysgYi9saWJwa2djb25mL3N0ZGluYy5oCi1AQCAtMjQsOSArMjQsNyBAQAotICNpbmNsdWRlIDxzdGRib29sLmg+Ci0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gCi0gI2lmZGVmIF9XSU4zMgotQEAgLTM0LDggKzMyLDE1IEBACi0gIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0gIyBpbmNsdWRlIDxtYWxsb2MuaD4KLSAjIGRlZmluZSBQQVRIX0RFVl9OVUxMCSJudWwiCi0rIyBpZm5kZWYgc3NpemVfdAotKyMgIGluY2x1ZGUgPEJhc2VUc2QuaD4KLSsjICBkZWZpbmUgc3NpemVfdCBTU0laRV9UCi0rIyBlbmRpZgotKyMgaW5jbHVkZSAid2luLWRpcmVudC5oIgotICNlbHNlCi0gIyBkZWZpbmUgUEFUSF9ERVZfTlVMTAkiL2Rldi9udWxsIgotKyMgaW5jbHVkZSA8ZGlyZW50Lmg+Ci0rIyBpbmNsdWRlIDx1bmlzdGQuaD4KLSAjZW5kaWYKLSAKLSAjZW5kaWYKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1zdGRpbmMuaC1maXgtYnVpbGQtd2l0aC1taW5ndy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtc3RkaW5jLmgtZml4LWJ1aWxkLXdpdGgtbWluZ3cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5ZWJlMzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1zdGRpbmMuaC1maXgtYnVpbGQtd2l0aC1taW5ndy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gZWEyOGM1YjM0NDU3Y2Y3Njc2MTgxYjI4NGUyMmVhNWY3OWEzMGQ4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDEzIEp1bCAyMDE3IDE0OjQ3OjMxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN0ZGluYy5oOiBmaXggYnVpbGQgd2l0aCBtaW5ndwotCi1GaXhlcyB0aGlzIGJ1aWxkIGVycm9yIHdpdGggbWluZ3c6Ci0uLi4KLXwgY29tcGlsYXRpb24gdGVybWluYXRlZC4KLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3BrZ2NvbmYtMS4zLjcvbGlicGtnY29uZi9saWJwa2djb25mLmg6MTk6MCwKLXwgZnJvbSAuLi9wa2djb25mLTEuMy43L2xpYnBrZ2NvbmYvYXVkaXQuYzoxNjoKLXwgLi4vcGtnY29uZi0xLjMuNy9saWJwa2djb25mL3N0ZGluYy5oOjM2OjEyOiBmYXRhbCBlcnJvcjogQmFzZVRzZC5oOiBObwotc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotfCAjIGluY2x1ZGUgPEJhc2VUc2QuaD4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBsaWJwa2djb25mL3N0ZGluYy5oIHwgMTAgKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvc3RkaW5jLmggYi9saWJwa2djb25mL3N0ZGluYy5oCi1pbmRleCBhYzdlNTNjLi5kOGVmY2Y1IDEwMDY0NAotLS0tIGEvbGlicGtnY29uZi9zdGRpbmMuaAotKysrIGIvbGlicGtnY29uZi9zdGRpbmMuaAotQEAgLTMzLDEwICszMywxOCBAQAotICMgaW5jbHVkZSA8bWFsbG9jLmg+Ci0gIyBkZWZpbmUgUEFUSF9ERVZfTlVMTAkibnVsIgotICMgaWZuZGVmIHNzaXplX3QKLSsjIGlmbmRlZiBfX01JTkdXMzJfXwotICMgIGluY2x1ZGUgPEJhc2VUc2QuaD4KLSsjIGVsc2UKLSsjICBpbmNsdWRlIDxiYXNldHNkLmg+Ci0rIyBlbmRpZgotICMgIGRlZmluZSBzc2l6ZV90IFNTSVpFX1QKLSAjIGVuZGlmCi0tIyBpbmNsdWRlICJ3aW4tZGlyZW50LmgiCi0rIyBpZm5kZWYgX19NSU5HVzMyX18KLSsjICBpbmNsdWRlICJ3aW4tZGlyZW50LmgiCi0rIyBlbHNlCi0rIyBpbmNsdWRlIDxkaXJlbnQuaD4KLSsjIGVuZGlmCi0gI2Vsc2UKLSAjIGRlZmluZSBQQVRIX0RFVl9OVUxMCSIvZGV2L251bGwiCi0gIyBpbmNsdWRlIDxkaXJlbnQuaD4KLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS4zLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjMuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRhMGRkMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjMuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLVNVTU1BUlkgPSAicGtnY29uZiBwcm92aWRlcyBjb21waWxlciBhbmQgbGlua2VyIGNvbmZpZ3VyYXRpb24gZm9yIGRldmVsb3BtZW50IGZyYW1ld29ya3MuIgotREVTQ1JJUFRJT04gPSAicGtnY29uZiBpcyBhIHByb2dyYW0gd2hpY2ggaGVscHMgdG8gY29uZmlndXJlIGNvbXBpbGVyIGFuZCBsaW5rZXIgXAotZmxhZ3MgZm9yIGRldmVsb3BtZW50IGZyYW1ld29ya3MuIEl0IGlzIHNpbWlsYXIgdG8gcGtnLWNvbmZpZyBmcm9tIFwKLWZyZWVkZXNrdG9wLm9yZywgcHJvdmlkaW5nIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSB3aGlsZSBhbHNvIG1haW50YWluaW5nIFwKLWNvbXBhdGliaWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL3BrZ2NvbmYub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vcGtnY29uZi9wa2djb25mL2lzc3VlcyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1QUk9WSURFUyArPSAicGtnY29uZmlnIgotUlBST1ZJREVTXyR7UE59ICs9ICJwa2djb25maWciCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLSMgVGhlIHBrZ2NvbmYgbGljZW5zZSBzZWVtcyB0byBiZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCU0QtMi1DbGF1c2Ugb3IKLSMgSVNDLCBidXQgaGFzIGRpZmZlcmVudCB3b3JkaW5nLCBzbyBuZWVkcyBpdHMgb3duIG5hbWUuCi1MSUNFTlNFID0gInBrZ2NvbmYiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NDhhOWQxZGIxMGNjMGE4NDgxMGMzMTNhMGU5MjY2ZiIKLQotU1JDX1VSSSA9ICJcCi0gICAgaHR0cHM6Ly9kaXN0ZmlsZXMuZGVyZWZlcmVuY2VkLm9yZy9wa2djb25mL3BrZ2NvbmYtJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1NaW5pbWFsLXR3ZWFrcy10by1jb21waWxlLXdpdGgtVmlzdWFsLUMtMjAxNS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtc3RkaW5jLmgtZml4LWJ1aWxkLXdpdGgtbWluZ3cucGF0Y2ggXAotICAgIGZpbGU6Ly9wa2ctY29uZmlnLXdyYXBwZXIgXAotICAgIGZpbGU6Ly9wa2ctY29uZmlnLW5hdGl2ZS5pbiBcCi0gICAgZmlsZTovL3BrZy1jb25maWctZXNkay5pbiBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYWMzNWMzNGQ4NGVlYjZhMDNkNGQ2MWI4NTU1ZDYxOTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWJlN2U0MDkwMGM3NDY3ODkzYzY1ZjgxMDIxMWIxZTY4ZGEzZjhkNWU3MGZkZGI4ODNmYzI0ODM5Y2FkMDMzOSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1wa2ctY29uZmlnLWRpcj0nJHtsaWJkaXJ9L3BrZ2NvbmZpZzoke2RhdGFkaXJ9L3BrZ2NvbmZpZyciCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAjIEluc3RhbGwgYSB3cmFwcGVyIHdoaWNoIGRlYWxzLCBhcyBtdWNoIGFzIHBvc3NpYmxlIHdpdGggcGtnY29uZiB2cwotICAgICMgcGtnLWNvbmZpZyBjb21wYXRpYmlsaXR5IGlzc3Vlcy4KLSAgICBpbnN0YWxsIC1tIDA3NTUgIiR7V09SS0RJUn0vcGtnLWNvbmZpZy13cmFwcGVyIiAiJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnIgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgICMgSW5zdGFsbCBhIHBrZy1jb25maWctbmF0aXZlIHdyYXBwZXIgdGhhdCB3aWxsIHVzZSB0aGUgbmF0aXZlIHN5c3Jvb3QgaW5zdGVhZAotICAgICMgb2YgdGhlIE1BQ0hJTkUgc3lzcm9vdCwgZm9yIHVzaW5nIHBrZy1jb25maWcgd2hlbiBidWlsZGluZyBuYXRpdmUgdG9vbHMuCi0gICAgc2VkIC1lICJzfEBQQVRIX05BVElWRUB8JHtQS0dfQ09ORklHX1BBVEh9fCIgXAotICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1uYXRpdmUuaW4gPiAke0J9L3BrZy1jb25maWctbmF0aXZlCi0gICAgaW5zdGFsbCAtbTc1NSAke0J9L3BrZy1jb25maWctbmF0aXZlICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1uYXRpdmUKLSAgICBzZWQgLWUgInN8QFBBVEhfTkFUSVZFQHwke1BLR19DT05GSUdfUEFUSH18IiBcCi0gICAgICAgIC1lICJzfEBMSUJESVJfTkFUSVZFQHwke1BLR19DT05GSUdfTElCRElSfXwiIFwKLSAgICAgICAgPCAke1dPUktESVJ9L3BrZy1jb25maWctZXNkay5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1lc2RrCi0gICAgaW5zdGFsbCAtbTc1NSAke0J9L3BrZy1jb25maWctZXNkayAke0R9JHtiaW5kaXJ9L3BrZy1jb25maWctZXNkawotfQotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJwa2ctY29uZmlnIgotCi0jIFdoZW4gdXNpbmcgdGhlIFJQTSBnZW5lcmF0ZWQgYXV0b21hdGljIHBhY2thZ2UgZGVwZW5kZW5jaWVzLCBzb21lIHBhY2thZ2VzCi0jIHdpbGwgZW5kIHVwIHJlcXVpcmluZyAncGtnY29uZmlnKHBrZy1jb25maWcpJy4gIEFsbG93IHRoaXMgYmVoYXZpb3IgYnkKLSMgc3BlY2lmeWluZyBhbiBhcHByb3ByaWF0ZSBwcm92aWRlLgotUlBST1ZJREVTXyR7UE59ICs9ICJwa2djb25maWcocGtnLWNvbmZpZykiCi0KLSMgSW5jbHVkZSBwa2cubTQgaW4gdGhlIG1haW4gcGFja2FnZSwgbGVhdmluZyBsaWJwa2djb25mIGRldiBmaWxlcyBpbiAtZGV2Ci1GSUxFU18ke1BOfS1kZXZfcmVtb3ZlID0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FjbG9jYWwiCi0KLUJCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLXBrZ2NvbmZfc3N0YXRlX2ZpeHVwX2VzZGsgKCkgewotICAgaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiIC1hICIke1dJVEhJTl9FWFRfU0RLfSIgPSAiMSIgXSA7IHRoZW4KLSAgICAgICBwa2djb25mZGlyPSIke1NTVEFURV9JTlNURElSfS9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvJHtiaW5kaXJfbmF0aXZlfSIKLSAgICAgICBtdiAkcGtnY29uZmRpci9wa2ctY29uZmlnICRwa2djb25mZGlyL3BrZy1jb25maWcucmVhbAotICAgICAgIGxuciAkcGtnY29uZmRpci9wa2ctY29uZmlnLWVzZGsgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZwotICAgICAgIHNlZCAtaSAtZSAic3xecGtnLWNvbmZpZ3xwa2ctY29uZmlnLnJlYWx8IiAkcGtnY29uZmRpci9wa2ctY29uZmlnLW5hdGl2ZQotICAgZmkKLX0KLQotU1NUQVRFUE9TVFVOUEFDS0ZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHBrZ2NvbmZfc3N0YXRlX2ZpeHVwX2VzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhN2I2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjQuMi5iYgpAQCAtMCwwICsxLDcxIEBACitTVU1NQVJZID0gInBrZ2NvbmYgcHJvdmlkZXMgY29tcGlsZXIgYW5kIGxpbmtlciBjb25maWd1cmF0aW9uIGZvciBkZXZlbG9wbWVudCBmcmFtZXdvcmtzLiIKK0RFU0NSSVBUSU9OID0gInBrZ2NvbmYgaXMgYSBwcm9ncmFtIHdoaWNoIGhlbHBzIHRvIGNvbmZpZ3VyZSBjb21waWxlciBhbmQgbGlua2VyIFwKK2ZsYWdzIGZvciBkZXZlbG9wbWVudCBmcmFtZXdvcmtzLiBJdCBpcyBzaW1pbGFyIHRvIHBrZy1jb25maWcgZnJvbSBcCitmcmVlZGVza3RvcC5vcmcsIHByb3ZpZGluZyBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgd2hpbGUgYWxzbyBtYWludGFpbmluZyBcCitjb21wYXRpYmlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wa2djb25mLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL3BrZ2NvbmYvcGtnY29uZi9pc3N1ZXMiCitTRUNUSU9OID0gImRldmVsIgorUFJPVklERVMgKz0gInBrZ2NvbmZpZyIKK1JQUk9WSURFU18ke1BOfSArPSAicGtnY29uZmlnIgorREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgorCisjIFRoZSBwa2djb25mIGxpY2Vuc2Ugc2VlbXMgdG8gYmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQlNELTItQ2xhdXNlIG9yCisjIElTQywgYnV0IGhhcyBkaWZmZXJlbnQgd29yZGluZywgc28gbmVlZHMgaXRzIG93biBuYW1lLgorTElDRU5TRSA9ICJwa2djb25mIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjIxNDIyMmVjMWE4MjBiZDZjYzc1MTY3YTU2OTI1ZTAiCisKK1NSQ19VUkkgPSAiXAorICAgIGh0dHBzOi8vZGlzdGZpbGVzLmRlcmVmZXJlbmNlZC5vcmcvcGtnY29uZi9wa2djb25mLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovL3BrZy1jb25maWctd3JhcHBlciBcCisgICAgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLmluIFwKKyAgICBmaWxlOi8vcGtnLWNvbmZpZy1lc2RrLmluIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NzhkMjQyYjRlZWYxNzU0YmJhNmE1ODY0MmFmMTBiYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiYWIzOTM3MWQ0YWI5NzJiZTFkNTM5YThiMTBiNmNjMjFmOGVhZmM5N2Y2MTcxMDJlNjY3ZTgyYmQzMmViMjM0IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXBrZy1jb25maWctZGlyPScke2xpYmRpcn0vcGtnY29uZmlnOiR7ZGF0YWRpcn0vcGtnY29uZmlnJyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgSW5zdGFsbCBhIHdyYXBwZXIgd2hpY2ggZGVhbHMsIGFzIG11Y2ggYXMgcG9zc2libGUgd2l0aCBwa2djb25mIHZzCisgICAgIyBwa2ctY29uZmlnIGNvbXBhdGliaWxpdHkgaXNzdWVzLgorICAgIGluc3RhbGwgLW0gMDc1NSAiJHtXT1JLRElSfS9wa2ctY29uZmlnLXdyYXBwZXIiICIke0R9JHtiaW5kaXJ9L3BrZy1jb25maWciCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgIyBJbnN0YWxsIGEgcGtnLWNvbmZpZy1uYXRpdmUgd3JhcHBlciB0aGF0IHdpbGwgdXNlIHRoZSBuYXRpdmUgc3lzcm9vdCBpbnN0ZWFkCisgICAgIyBvZiB0aGUgTUFDSElORSBzeXNyb290LCBmb3IgdXNpbmcgcGtnLWNvbmZpZyB3aGVuIGJ1aWxkaW5nIG5hdGl2ZSB0b29scy4KKyAgICBzZWQgLWUgInN8QFBBVEhfTkFUSVZFQHwke1BLR19DT05GSUdfUEFUSH18IiBcCisgICAgICAgIDwgJHtXT1JLRElSfS9wa2ctY29uZmlnLW5hdGl2ZS5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUKKyAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUgJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnLW5hdGl2ZQorICAgIHNlZCAtZSAic3xAUEFUSF9OQVRJVkVAfCR7UEtHX0NPTkZJR19QQVRIfXwiIFwKKyAgICAgICAgLWUgInN8QExJQkRJUl9OQVRJVkVAfCR7UEtHX0NPTkZJR19MSUJESVJ9fCIgXAorICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1lc2RrLmluID4gJHtCfS9wa2ctY29uZmlnLWVzZGsKKyAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1lc2RrICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1lc2RrCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInBrZy1jb25maWciCisKKyMgV2hlbiB1c2luZyB0aGUgUlBNIGdlbmVyYXRlZCBhdXRvbWF0aWMgcGFja2FnZSBkZXBlbmRlbmNpZXMsIHNvbWUgcGFja2FnZXMKKyMgd2lsbCBlbmQgdXAgcmVxdWlyaW5nICdwa2djb25maWcocGtnLWNvbmZpZyknLiAgQWxsb3cgdGhpcyBiZWhhdmlvciBieQorIyBzcGVjaWZ5aW5nIGFuIGFwcHJvcHJpYXRlIHByb3ZpZGUuCitSUFJPVklERVNfJHtQTn0gKz0gInBrZ2NvbmZpZyhwa2ctY29uZmlnKSIKKworIyBJbmNsdWRlIHBrZy5tNCBpbiB0aGUgbWFpbiBwYWNrYWdlLCBsZWF2aW5nIGxpYnBrZ2NvbmYgZGV2IGZpbGVzIGluIC1kZXYKK0ZJTEVTXyR7UE59LWRldl9yZW1vdmUgPSAiJHtkYXRhZGlyfS9hY2xvY2FsIgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKKworQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKKworcGtnY29uZl9zc3RhdGVfZml4dXBfZXNkayAoKSB7CisgICBpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSIgLWEgIiR7V0lUSElOX0VYVF9TREt9IiA9ICIxIiBdIDsgdGhlbgorICAgICAgIHBrZ2NvbmZkaXI9IiR7U1NUQVRFX0lOU1RESVJ9L3JlY2lwZS1zeXNyb290LW5hdGl2ZS8ke2JpbmRpcl9uYXRpdmV9IgorICAgICAgIG12ICRwa2djb25mZGlyL3BrZy1jb25maWcgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy5yZWFsCisgICAgICAgbG5yICRwa2djb25mZGlyL3BrZy1jb25maWctZXNkayAkcGtnY29uZmRpci9wa2ctY29uZmlnCisgICAgICAgc2VkIC1pIC1lICJzfF5wa2ctY29uZmlnfHBrZy1jb25maWcucmVhbHwiICRwa2djb25mZGlyL3BrZy1jb25maWctbmF0aXZlCisgICBmaQorfQorCitTU1RBVEVQT1NUVU5QQUNLRlVOQ1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcGtnY29uZl9zc3RhdGVfZml4dXBfZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcG9zdGluc3QtaW50ZXJjZXB0L25hdGl2ZXNkay1wb3N0aW5zdC1pbnRlcmNlcHRfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wb3N0aW5zdC1pbnRlcmNlcHQvbmF0aXZlc2RrLXBvc3RpbnN0LWludGVyY2VwdF8xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzOGFjOGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wb3N0aW5zdC1pbnRlcmNlcHQvbmF0aXZlc2RrLXBvc3RpbnN0LWludGVyY2VwdF8xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIlBvc3RpbnN0YWxsIHNjcmlwdGxldHMiCi1MSUNFTlNFID0gIk1JVCIKLQotRklMRVNfJHtQTn1fYXBwZW5kID0gIiAke2RhdGFkaXJ9L3Bvc3RpbnN0LWludGVyY2VwdHMvKiIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vcG9zdGluc3QtaW50ZXJjZXB0cwotCWluc3RhbGwgLW0gNzU1ICR7Q09SRUJBU0V9L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy9wb3N0aW5zdF9pbnRlcmNlcHQgJHtEfSR7ZGF0YWRpcn0vcG9zdGluc3QtaW50ZXJjZXB0cy8KLQlpbnN0YWxsIC1tIDc1NSAke0NPUkVCQVNFfS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2ZvbnRfY2FjaGUgJHtEfSR7ZGF0YWRpcn0vcG9zdGluc3QtaW50ZXJjZXB0cy8KLQlpbnN0YWxsIC1tIDc1NSAke0NPUkVCQVNFfS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2ljb25fY2FjaGUgJHtEfSR7ZGF0YWRpcn0vcG9zdGluc3QtaW50ZXJjZXB0cy8KLQlpbnN0YWxsIC1tIDc1NSAke0NPUkVCQVNFfS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX3BpeGJ1Zl9jYWNoZSAke0R9JHtkYXRhZGlyfS9wb3N0aW5zdC1pbnRlcmNlcHRzLwotfQotCi1pbmhlcml0IG5hdGl2ZXNkawotSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgppbmRleCA1NzBlZjM2Li4wZjZkMTZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCkBAIC05LDcgKzksNyBAQAogcnVudGltZSBhbmQgdGh1cyBwcm9ncmFtcyBjb21lIHVwIGZhc3Rlci4iCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzkzYzA1NTBiZDMxNzNmNDUwNGIyY2JkODk5MWU1MGIiCi1TUkNSRVYgPSAiZWYyMDYyOGRkNzhiOTJlMWEzMTIzYWZjNjdiNjRjZjAxMGJkZDllNCIKK1NSQ1JFViA9ICIwNWFlYWZkMDUzZTU2MzU2ZWM4YzYyZjRiYjhmN2I5NWJhZTE5MmYzIgogUFYgPSAiMS4wK2dpdCR7U1JDUFZ9IgogCiAjCkBAIC0zMiw4ICszMiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9wcmVsaW5rLmNyb24uZGFpbHkgXAogICAgICAgICAgICBmaWxlOi8vcHJlbGluay5kZWZhdWx0IFwKIAkgICBmaWxlOi8vbWFjcm9zLnByZWxpbmsiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ1cHN0cmVhbSBoYXMgbm8gdXNhYmxlIHRhZ3MiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogVEFSR0VUX09TX09SSUcgOj0gIiR7VEFSR0VUX09TfSIKIE9WRVJSSURFU19hcHBlbmQgPSAiOiR7VEFSR0VUX09TX09SSUd9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1Vc2UtZXBvbGwtQVBJLW9uLUxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1Vc2UtZXBvbGwtQVBJLW9uLUxpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjU1N2IxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtVXNlLWVwb2xsLUFQSS1vbi1MaW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5MiArMCwwIEBACi1Gcm9tIDllNDA3ZTBiZTAxNjk1ZTdiOTI3ZjU4MjBhZGU4N2VlOTYwMmMyNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTUgU2VwIDIwMTcgMTc6MDA6MTQgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIGVwb2xsIEFQSSBvbiBMaW51eAotCi1BbHNvIGEgY291cGxlIG9mIG90aGVyIG1vZGlmaWNhdGlvbnMgZHVlIHRvIGVwb2xsIGhhdmluZwotYSBkaWZmZXJlbnQgYXBwcm9hY2ggdG8gaG93IHRoZSB3b3JraW5nIHNldCBvZiBmZHMgaXMgZGVmaW5lZAotYW5kIHVzZWQ6Ci0xKSBvcGVuX2NsaWVudCgpIHJldHVybnMgYW4gaW5kZXggaW50byB0aGUgYXJyYXkgb2YgY2xpZW50cwotMikgY2xvc2VfY2xpZW50KCkgaGFzIGEgcHJvdGVjdGlvbiBhZ2FpbnN0IGJlaW5nIGNhbGxlZCB0d2ljZQotd2l0aCB0aGUgc2FtZSBjbGllbnQgKHdoaWNoIHdvdWxkIG1lc3MgdXAgdGhlIGFjdGl2ZV9jbGllbnRzCi1jb3VudGVyKQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbU2VlYnMgQ0MnZCBieSBlbWFpbF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBlbnVtcy9leGl0X3N0YXR1cy5pbiB8ICAgMyArCi0gcHNldWRvX3NlcnZlci5jICAgICAgfCAxODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxOTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2VudW1zL2V4aXRfc3RhdHVzLmluIGIvZW51bXMvZXhpdF9zdGF0dXMuaW4KLWluZGV4IDZiZTQ0ZDMuLjg4Zjk0Y2QgMTAwNjQ0Ci0tLS0gYS9lbnVtcy9leGl0X3N0YXR1cy5pbgotKysrIGIvZW51bXMvZXhpdF9zdGF0dXMuaW4KLUBAIC0xOCwzICsxOCw2IEBAIGxpc3Rlbl9mZCwgInNlcnZlciBsb29wIGhhZCBubyB2YWxpZCBsaXN0ZW4gZmQiCi0gcHNldWRvX2xvYWRlZCwgInNlcnZlciBjb3VsZG4ndCBnZXQgb3V0IG9mIHBzZXVkbyBlbnZpcm9ubWVudCIKLSBwc2V1ZG9fcHJlZml4LCAiY291bGRuJ3QgZ2V0IHZhbGlkIHBzZXVkbyBwcmVmaXgiCi0gcHNldWRvX2ludm9jYXRpb24sICJpbnZhbGlkIHNlcnZlciBjb21tYW5kIGFyZ3VtZW50cyIKLStlcG9sbF9jcmVhdGUsICJlcG9sbF9jcmVhdGUoKSBmYWlsZWQiCi0rZXBvbGxfY3RsLCAiZXBvbGxfY3RsKCkgZmFpbGVkIgotKwotZGlmZiAtLWdpdCBhL3BzZXVkb19zZXJ2ZXIuYyBiL3BzZXVkb19zZXJ2ZXIuYwotaW5kZXggZmYxNmVmZC4uMTRkMzRkZSAxMDA2NDQKLS0tLSBhL3BzZXVkb19zZXJ2ZXIuYwotKysrIGIvcHNldWRvX3NlcnZlci5jCi1AQCAtNDAsNiArNDAsMTIgQEAKLSAjaW5jbHVkZSAicHNldWRvX2NsaWVudC5oIgotICNpbmNsdWRlICJwc2V1ZG9fZGIuaCIKLSAKLSsvLyBUaGlzIGhhcyB0byBjb21lIGFmdGVyIHBzZXVkbyBpbmNsdWRlcywgYXMgdGhhdCdzIHdoZXJlIFBTRVVET19QT1JUIGRlZmluZXMgYXJlCi0rI2lmZGVmIFBTRVVET19QT1JUX0xJTlVYCi0rI2luY2x1ZGUgPHN5cy9lcG9sbC5oPgotKyNlbmRpZgotKwotKwotIHN0YXRpYyBpbnQgbGlzdGVuX2ZkID0gLTE7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgewotQEAgLTU5LDYgKzY1LDcgQEAgc3RhdGljIGludCBhY3RpdmVfY2xpZW50cyA9IDAsIGhpZ2hlc3RfY2xpZW50ID0gMCwgbWF4X2NsaWVudHMgPSAwOwotIAotICNkZWZpbmUgTE9PUF9ERUxBWSAyCi0gI2RlZmluZSBERUZBVUxUX1BTRVVET19TRVJWRVJfVElNRU9VVCAzMAotKyNkZWZpbmUgRVBPTExfTUFYX0VWRU5UUyAxMAotIGludCBwc2V1ZG9fc2VydmVyX3RpbWVvdXQgPSBERUZBVUxUX1BTRVVET19TRVJWRVJfVElNRU9VVDsKLSBzdGF0aWMgaW50IGRpZV9wZWFjZWZ1bGx5ID0gMDsKLSBzdGF0aWMgaW50IGRpZV9mb3JjZWZ1bGx5ID0gMDsKLUBAIC04MCw2ICs4Nyw5IEBAIHF1aXRfbm93KGludCBzaWduYWwpIHsKLSBzdGF0aWMgaW50IG1lc3NhZ2VzID0gMCwgcmVzcG9uc2VzID0gMDsKLSBzdGF0aWMgc3RydWN0IHRpbWV2YWwgbWVzc2FnZV90aW1lID0geyAudHZfc2VjID0gMCB9OwotIAotKyNpZmRlZiBQU0VVRE9fUE9SVF9MSU5VWAotK3N0YXRpYyB2b2lkIHBzZXVkb19zZXJ2ZXJfbG9vcF9lcG9sbCh2b2lkKTsKLSsjZW5kaWYKLSBzdGF0aWMgdm9pZCBwc2V1ZG9fc2VydmVyX2xvb3Aodm9pZCk7Ci0gCi0gLyogaGVscGVyIGZ1bmN0aW9uIHRvIG1ha2UgYSBkaXJlY3RvcnksIGp1c3QgbGlrZSBta2RpciAtcC4KLUBAIC0zNjksMTIgKzM3OSwxNiBAQCBwc2V1ZG9fc2VydmVyX3N0YXJ0KGludCBkYWVtb25pemUpIHsKLSAJCQlraWxsKHBwaWQsIFNJR1VTUjEpOwotIAkJfQotIAl9Ci0rI2lmZGVmIFBTRVVET19QT1JUX0xJTlVYCi0rCXBzZXVkb19zZXJ2ZXJfbG9vcF9lcG9sbCgpOwotKyNlbHNlCi0gCXBzZXVkb19zZXJ2ZXJfbG9vcCgpOwotKyNlbmRpZgotIAlyZXR1cm4gMDsKLSB9Ci0gCi0gLyogbWVzcyB3aXRoIGludGVybmFsIHRhYmxlcyBhcyBuZWVkZWQgKi8KLS1zdGF0aWMgdm9pZAotK3N0YXRpYyB1bnNpZ25lZCBpbnQKLSBvcGVuX2NsaWVudChpbnQgZmQpIHsKLSAJcHNldWRvX2NsaWVudF90ICpuZXdfY2xpZW50czsKLSAJaW50IGk7Ci1AQCAtMzkwLDcgKzQwNCw3IEBAIG9wZW5fY2xpZW50KGludCBmZCkgewotIAkJCSsrYWN0aXZlX2NsaWVudHM7Ci0gCQkJaWYgKGkgPiBoaWdoZXN0X2NsaWVudCkKLSAJCQkJaGlnaGVzdF9jbGllbnQgPSBpOwotLQkJCXJldHVybjsKLSsJCQlyZXR1cm4gaTsKLSAJCX0KLSAJfQotIAotQEAgLTQxNCw5ICs0MjgsMTEgQEAgb3Blbl9jbGllbnQoaW50IGZkKSB7Ci0gCi0gCQltYXhfY2xpZW50cyArPSAxNjsKLSAJCSsrYWN0aXZlX2NsaWVudHM7Ci0rCQlyZXR1cm4gbWF4X2NsaWVudHMgLSAxNjsKLSAJfSBlbHNlIHsKLSAJCXBzZXVkb19kaWFnKCJlcnJvciBhbGxvY2F0aW5nIG5ldyBjbGllbnQsIGZkICVkXG4iLCBmZCk7Ci0gCQljbG9zZShmZCk7Ci0rCQlyZXR1cm4gMDsKLSAJfQotIH0KLSAKLUBAIC00MzMsNiArNDQ5LDEwIEBAIGNsb3NlX2NsaWVudChpbnQgY2xpZW50KSB7Ci0gCQkJY2xpZW50LCBoaWdoZXN0X2NsaWVudCk7Ci0gCQlyZXR1cm47Ci0gCX0KLSsJaWYgKGNsaWVudHNbY2xpZW50XS5mZCA9PSAtMSkgewotKwkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgImNsaWVudCAlZCBhbHJlYWR5IGNsb3NlZFxuIiwgY2xpZW50KTsKLSsJCXJldHVybjsKLSsJfQotIAljbG9zZShjbGllbnRzW2NsaWVudF0uZmQpOwotIAljbGllbnRzW2NsaWVudF0uZmQgPSAtMTsKLSAJZnJlZShjbGllbnRzW2NsaWVudF0udGFnKTsKLUBAIC01NjYsNiArNTg2LDE3MSBAQCBzZXJ2ZV9jbGllbnQoaW50IGkpIHsKLSAJfQotIH0KLSAKLSsjaWZkZWYgUFNFVURPX1BPUlRfTElOVVgKLStzdGF0aWMgdm9pZCBwc2V1ZG9fc2VydmVyX2xvb3BfZXBvbGwodm9pZCkKLSt7Ci0rCXN0cnVjdCBzb2NrYWRkcl91biBjbGllbnQ7Ci0rCXNvY2tsZW5fdCBsZW47Ci0rICAgICAgICBpbnQgaTsKLSsgICAgICAgIGludCByYzsKLSsgICAgICAgIGludCBmZDsKLSsJaW50IHRpbWVvdXQ7Ci0rCXN0cnVjdCBlcG9sbF9ldmVudCBldiwgZXZlbnRzW0VQT0xMX01BWF9FVkVOVFNdOwotKwlpbnQgbG9vcF90aW1lb3V0ID0gcHNldWRvX3NlcnZlcl90aW1lb3V0OwotKwotKwljbGllbnRzID0gbWFsbG9jKDE2ICogc2l6ZW9mKCpjbGllbnRzKSk7Ci0rCi0rCWNsaWVudHNbMF0uZmQgPSBsaXN0ZW5fZmQ7Ci0rCWNsaWVudHNbMF0ucGlkID0gZ2V0cGlkKCk7Ci0rCi0rCWZvciAoaSA9IDE7IGkgPCAxNjsgKytpKSB7Ci0rCQljbGllbnRzW2ldLmZkID0gLTE7Ci0rCQljbGllbnRzW2ldLnBpZCA9IDA7Ci0rCQljbGllbnRzW2ldLnRhZyA9IE5VTEw7Ci0rCQljbGllbnRzW2ldLnByb2dyYW0gPSBOVUxMOwotKwl9Ci0rCi0rCWFjdGl2ZV9jbGllbnRzID0gMTsKLSsJbWF4X2NsaWVudHMgPSAxNjsKLSsJaGlnaGVzdF9jbGllbnQgPSAwOwotKwotKwlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAic2VydmVyIGxvb3Agc3RhcnRlZC5cbiIpOwotKwlpZiAobGlzdGVuX2ZkIDwgMCkgewotKwkJcHNldWRvX2RpYWcoImdvdCBpbnRvIGxvb3Agd2l0aCBubyB2YWxpZCBsaXN0ZW4gZmQuXG4iKTsKLSsJCWV4aXQoUFNFVURPX0VYSVRfTElTVEVOX0ZEKTsKLSsJfQotKwotKwl0aW1lb3V0ID0gTE9PUF9ERUxBWSAqIDEwMDA7Ci0rCi0rCWludCBlcG9sbGZkID0gZXBvbGxfY3JlYXRlMSgwKTsKLSsJaWYgKGVwb2xsZmQgPT0gLTEpIHsKLSsJCXBzZXVkb19kaWFnKCJlcG9sbF9jcmVhdGUxKCkgZmFpbGVkLlxuIik7Ci0rCQlleGl0KFBTRVVET19FWElUX0VQT0xMX0NSRUFURSk7Ci0rCX0KLSsJZXYuZXZlbnRzID0gRVBPTExJTjsKLSsJZXYuZGF0YS51NjQgPSAwOwotKwlpZiAoZXBvbGxfY3RsKGVwb2xsZmQsIEVQT0xMX0NUTF9BREQsIGNsaWVudHNbMF0uZmQsICZldikgPT0gLTEpIHsKLSsJCXBzZXVkb19kaWFnKCJlcG9sbF9jdGwoKSBmYWlsZWQgd2l0aCBsaXN0ZW5pbmcgc29ja2V0LlxuIik7Ci0rCQlleGl0KFBTRVVET19FWElUX0VQT0xMX0NUTCk7Ci0rCX0KLSsKLSsJcGRiX2xvZ19tc2coU0VWRVJJVFlfSU5GTywgTlVMTCwgTlVMTCwgTlVMTCwgInNlcnZlciBzdGFydGVkIChwaWQgJWQpIiwgZ2V0cGlkKCkpOwotKwotKyAgICAgICAgZm9yICg7OykgewotKwkJcmMgPSBlcG9sbF93YWl0KGVwb2xsZmQsIGV2ZW50cywgRVBPTExfTUFYX0VWRU5UUywgdGltZW91dCk7Ci0rCQlpZiAocmMgPT0gMCB8fCAocmMgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpKSB7Ci0rCQkJLyogSWYgdGhlcmUncyBubyBjbGllbnRzLCBzdGFydCB0aW1pbmcgb3V0LiAgSWYgdGhlcmUKLSsJCQkgKiBhcmUgYWN0aXZlIGNsaWVudHMsIG5ldmVyIHRpbWUgb3V0LgotKwkJCSAqLwotKwkJCWlmIChhY3RpdmVfY2xpZW50cyA9PSAxKSB7Ci0rCQkJCWxvb3BfdGltZW91dCAtPSBMT09QX0RFTEFZOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbWF5YmUgZmx1c2ggZGF0YWJhc2UgdG8gZGlzayAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGRiX21heWJlX2JhY2t1cCgpOwotKwkJCQlpZiAobG9vcF90aW1lb3V0IDw9IDApIHsKLSsJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJubyBtb3JlIGNsaWVudHMsIGdvdCBib3JlZC5cbiIpOwotKwkJCQkJZGllX3BlYWNlZnVsbHkgPSAxOwotKwkJCQl9IGVsc2UgewotKwkJCQkJLyogZGlzcGxheSB0aGlzIGlmIG5vdCBleGl0aW5nICovCi0rCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSIHwgUERCR0ZfQkVOQ0hNQVJLLCAiJWQgbWVzc2FnZXMgaGFuZGxlZCBpbiAlLjRmIHNlY29uZHMsICVkIHJlc3BvbnNlc1xuIiwKLSsJCQkJCQltZXNzYWdlcywKLSsJCQkJCQkoZG91YmxlKSBtZXNzYWdlX3RpbWUudHZfc2VjICsKLSsJCQkJCQkoZG91YmxlKSBtZXNzYWdlX3RpbWUudHZfdXNlYyAvIDEwMDAwMDAuMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZXMpOwotKwkJCQl9Ci0rCQkJfQotKwkJfSBlbHNlIGlmIChyYyA+IDApIHsKLSsJCQlsb29wX3RpbWVvdXQgPSBwc2V1ZG9fc2VydmVyX3RpbWVvdXQ7Ci0rCQkJZm9yIChpID0gMDsgaSA8IHJjOyArK2kpIHsKLSsJCQkJaWYgKGNsaWVudHNbZXZlbnRzW2ldLmRhdGEudTY0XS5mZCA9PSBsaXN0ZW5fZmQpIHsKLSsJCQkJCWlmICghZGllX2ZvcmNlZnVsbHkpIHsKLSsJCQkJCQlsZW4gPSBzaXplb2YoY2xpZW50KTsKLSsJCQkJCQlpZiAoKGZkID0gYWNjZXB0KGxpc3Rlbl9mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSAmY2xpZW50LCAmbGVuKSkgIT0gLTEpIHsKLSsJCQkJCQkvKiBEb24ndCBhbGxvdyBjbGllbnRzIHRvIGVuZCB1cCBvbiBmZCAyLCBiZWNhdXNlIGdsaWJjJ3MKLSsJCQkJCQkgKiBtYWxsb2MgZGVidWcgdXNlcyB0aGF0IGZkIHVuY29uZGl0aW9uYWxseS4KLSsJCQkJCQkgKi8KLSsJCQkJCQkJaWYgKGZkID09IDIpIHsKLSsJCQkJCQkJCWludCBuZXdmZCA9IGZjbnRsKGZkLCBGX0RVUEZELCAzKTsKLSsJCQkJCQkJCWNsb3NlKGZkKTsKLSsJCQkJCQkJCWZkID0gbmV3ZmQ7Ci0rCQkJCQkJCX0KLSsJCQkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgIm5ldyBjbGllbnQgZmQgJWRcbiIsIGZkKTsKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBIG5ldyBjbGllbnQgaW1wbGljaXRseSBjYW5jZWxzIGFueQotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHByZXZpb3VzIHNodXRkb3duIHJlcXVlc3QsIG9yIGEKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzaHV0ZG93biBmb3IgbGFjayBvZiBjbGllbnRzLgotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzZXVkb19zZXJ2ZXJfdGltZW91dCA9IERFRkFVTFRfUFNFVURPX1NFUlZFUl9USU1FT1VUOwotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZV9wZWFjZWZ1bGx5ID0gMDsKLSsKLSsJCQkJCQkJZXYuZXZlbnRzID0gRVBPTExJTjsKLSsJCQkJCQkJZXYuZGF0YS51NjQgPSBvcGVuX2NsaWVudChmZCk7Ci0rCQkJCQkJCWlmIChldi5kYXRhLnU2NCAhPSAwICYmIGVwb2xsX2N0bChlcG9sbGZkLCBFUE9MTF9DVExfQURELCBjbGllbnRzW2V2LmRhdGEudTY0XS5mZCwgJmV2KSA9PSAtMSkgewotKwkJCQkJCQkJcHNldWRvX2RpYWcoImVwb2xsX2N0bCgpIGZhaWxlZCB3aXRoIGFjY2VwdGVkIHNvY2tldC5cbiIpOwotKwkJCQkJCQkJZXhpdChQU0VVRE9fRVhJVF9FUE9MTF9DVEwpOwotKwkJCQkJCQl9Ci0rCQkJCQkJfSBlbHNlIGlmIChlcnJubyA9PSBFTUZJTEUpIHsKLSsJCQkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgIkhpdCBtYXggb3BlbiBmaWxlcywgZHJvcHBpbmcgYSBjbGllbnQuXG4iKTsKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbiB0aGVvcnkgdGhlcmUgaXMgYSBwb3RlbnRpYWwgcmFjZSBoZXJlIHdoZXJlIGlmIHdlIGNsb3NlIGEgY2xpZW50LCAKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBtYXkgaGF2ZSBzZW50IHVzIGEgZmFzdG9wIG1lc3NhZ2Ugd2hpY2ggd2UgZG9uJ3QgYWN0IHVwb24uCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgd2UgZG9uJ3QgY2xvc2UgYSBmaWxlaGFuZGxlIHdlJ2xsIGxvb3AgaW5kZWZpbml0ZWx5IHRob3VnaHQuIAotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ubHkgY2xvc2Ugb25lIHBlciBsb29wIGl0ZXJhdGlvbiBpbiB0aGUgaW50ZXJlc3RzIG9mIGNhdXRpb24gKi8KLSsJCQkJICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gaGlnaGVzdF9jbGllbnQ7ICsraikgewotKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRzW2pdLmZkICE9IC0xKSB7Ci0rCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9jbGllbnQoaik7Ci0rCQkJCQkJCQkJYnJlYWs7Ci0rCQkJCQkJCQl9Ci0rCQkJCQkJCX0KLSsJCQkJCQl9Ci0rCQkJCQl9Ci0rCQkJCX0gZWxzZSB7Ci0rCQkJCQlzdHJ1Y3QgdGltZXZhbCB0djEsIHR2MjsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJjOwotKwkJCQkJZ2V0dGltZW9mZGF5KCZ0djEsIE5VTEwpOwotKwkJCQkJcmMgPSBzZXJ2ZV9jbGllbnQoZXZlbnRzW2ldLmRhdGEudTY0KTsKLSsJCQkJCWdldHRpbWVvZmRheSgmdHYyLCBOVUxMKTsKLSsJCQkJCSsrbWVzc2FnZXM7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYyA9PSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcmVzcG9uc2VzOwotKwkJCQkJbWVzc2FnZV90aW1lLnR2X3NlYyArPSAodHYyLnR2X3NlYyAtIHR2MS50dl9zZWMpOwotKwkJCQkJbWVzc2FnZV90aW1lLnR2X3VzZWMgKz0gKHR2Mi50dl91c2VjIC0gdHYxLnR2X3VzZWMpOwotKwkJCQkJaWYgKG1lc3NhZ2VfdGltZS50dl91c2VjIDwgMCkgewotKwkJCQkJCW1lc3NhZ2VfdGltZS50dl91c2VjICs9IDEwMDAwMDA7Ci0rCQkJCQkJLS1tZXNzYWdlX3RpbWUudHZfc2VjOwotKwkJCQkJfSBlbHNlIHdoaWxlIChtZXNzYWdlX3RpbWUudHZfdXNlYyA+IDEwMDAwMDApIHsKLSsJCQkJCQltZXNzYWdlX3RpbWUudHZfdXNlYyAtPSAxMDAwMDAwOwotKwkJCQkJCSsrbWVzc2FnZV90aW1lLnR2X3NlYzsKLSsJCQkJCX0KLSsJCQkJfQotKwkJCQlpZiAoZGllX2ZvcmNlZnVsbHkpCi0rCQkJCQlicmVhazsKLSsJCQl9Ci0rCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgInNlcnZlciBsb29wIGNvbXBsZXRlIFslZCBjbGllbnRzIGxlZnRdXG4iLCBhY3RpdmVfY2xpZW50cyk7Ci0rCQl9IGVsc2UgewotKwkJCXBzZXVkb19kaWFnKCJlcG9sbF93YWl0IGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCQlpZiAoZGllX3BlYWNlZnVsbHkgfHwgZGllX2ZvcmNlZnVsbHkpIHsKLSsJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAicXVpdHRpbmcuXG4iKTsKLSsJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSIHwgUERCR0ZfQkVOQ0hNQVJLLCAic2VydmVyICVkIGV4aXRpbmc6IGhhbmRsZWQgJWQgbWVzc2FnZXMgaW4gJS40ZiBzZWNvbmRzXG4iLAotKwkJCQlnZXRwaWQoKSwgbWVzc2FnZXMsCi0rCQkJCShkb3VibGUpIG1lc3NhZ2VfdGltZS50dl9zZWMgKwotKwkJCQkoZG91YmxlKSBtZXNzYWdlX3RpbWUudHZfdXNlYyAvIDEwMDAwMDAuMCk7Ci0rCQkJcGRiX2xvZ19tc2coU0VWRVJJVFlfSU5GTywgTlVMTCwgTlVMTCwgTlVMTCwgInNlcnZlciAlZCBleGl0aW5nOiBoYW5kbGVkICVkIG1lc3NhZ2VzIGluICUuNGYgc2Vjb25kcyIsCi0rCQkJCWdldHBpZCgpLCBtZXNzYWdlcywKLSsJCQkJKGRvdWJsZSkgbWVzc2FnZV90aW1lLnR2X3NlYyArCi0rCQkJCShkb3VibGUpIG1lc3NhZ2VfdGltZS50dl91c2VjIC8gMTAwMDAwMC4wKTsKLSsJCQkvKiBhbmQgYXQgdGhpcyBwb2ludCwgd2UnbGwgc3RhcnQgcmVmdXNpbmcgY29ubmVjdGlvbnMgKi8KLSsJCQljbG9zZShjbGllbnRzWzBdLmZkKTsKLSsJCQkvKiBUaGlzIGlzIGEgZ29vZCBwbGFjZSB0byBpbnNlcnQgYSBkZWxheSBmb3IKLSsJCQkgKiBkZWJ1Z2dpbmcgcmFjZSBjb25kaXRpb25zIGR1cmluZyBzdGFydHVwLiAqLwotKwkJCS8qIHVzbGVlcCgzMDAwMDApOyAqLwotKwkJCWV4aXQoMCk7Ci0rCQl9Ci0rCX0KLSsKLSt9Ci0rCi0rI2VuZGlmCi0rCi0gLyogZ2V0IGNsaWVudHMsIGhhbmRsZSBtZXNzYWdlcywgc2h1dCBkb3duLgotICAqIFRoaXMgZG9lc24ndCBhY3R1YWxseSBkbyBhbnkgd29yaywgaXQganVzdCBjYWxscyBhIHRvbiBvZiB0aGluZ3Mgd2hpY2gKLSAgKiBkbyB3b3JrLgotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvYjZiNjhkYjg5NmY5OTYzNTU4MzM0YWZmN2ZjYTYxYWRkZTRlYzEwZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2I2YjY4ZGI4OTZmOTk2MzU1ODMzNGFmZjdmY2E2MWFkZGU0ZWMxMGYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwNDVhM2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvYjZiNjhkYjg5NmY5OTYzNTU4MzM0YWZmN2ZjYTYxYWRkZTRlYzEwZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gYjZiNjhkYjg5NmY5OTYzNTU4MzM0YWZmN2ZjYTYxYWRkZTRlYzEwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNlZWJzIDxzZWVic0BzZWVicy5uZXQ+Ci1EYXRlOiBUaHUsIDEzIEFwciAyMDE3IDE4OjEyOjAxIC0wNTAwCi1TdWJqZWN0OiBQcmV2ZW50IGJhc2ggZnJvbSBzZWdmYXVsdGluZyB3aGVuIHVubG9hZGluZyBwc2V1ZG8KLQotYmFzaCdzIGV4dHJlbWVseSBmYW5jeSBpbnRlcm5hbCBhd2FyZW5lc3Mgb2YgaG93IHRoZSBlbnZpcm9ubWVudCBsb29rcwotbWVhbnMgdGhhdCwgaWYgeW91IGRpcmVjdGx5IGNhbGwgdGhlIHVuZGVybHlpbmcgbGliYyAidW5zZXRlbnYiIG9uCi1hIHZhcmlhYmxlLCBiYXNoIGNhbiBlbmQgdXAgdHJ5aW5nIHRvIGFjY2VzcyBhIG51bGwgcG9pbnRlci4gRml4aW5nCi10aGlzIGdlbmVyaWNhbGx5IGlzIGFjdHVhbGx5IHJhdGhlciBoYXJkOyB5b3UgY2FuJ3QgcmVhbGx5IGF2b2lkCi13cml0aW5nIHRvIGVudmlyb24gb24gZm9yaygpIG9yIHBvcGVuKCksIGV2ZW4gaWYgeW91IGNoYW5nZSBhbGwKLWV4ZWN2KigpIGZ1bmN0aW9ucyB0byB1c2UgdGhlIGV4ZWN2KmUoKSB2YXJpYW50cy4gU28gZm9yIG5vdywgaW5zdGVhZAotb2YgdW5zZXR0aW5nIHRoZSB2YXJpYWJsZSwgc2V0IGl0IHRvIGFuIGVtcHR5IHN0cmluZy4KLQotVGhhbmtzIHRvIFNhdXIgaW4gSVJDIGZvciBzcG90dGluZyB0aGlzIGFuZCBoZWxwaW5nIGRlYnVnIGl0LgotCi1TaWduZWQtb2ZmLWJ5OiBTZWVicyA8c2VlYnNAc2VlYnMubmV0PgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cudHh0IGIvQ2hhbmdlTG9nLnR4dAotaW5kZXggYTJkMzBlOS4uOGJhMWZmYSAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZy50eHQKLSsrKyBiL0NoYW5nZUxvZy50eHQKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTctMDQtMTM6Ci0rCSogKHNlZWJzKSBkb24ndCB1bnNldCBMRF9QUkVMT0FEIG9yIHRoZSBsaWtlLCBiZWNhdXNlIGlmIHlvdQotKwkgIGRvIHRoYXQsIGJhc2ggY2FuIHNlZ2ZhdWx0IGJlY2F1c2UgaXQgImtub3dzIiBob3cgbWFueQotKwkgIGZpZWxkcyBhcmUgaW4gZW52aXJvbi4KLSsKLSAyMDE3LTAyLTI0OgotIAkqIChzZWVicykgaW1wb3J0IHBvc2l4X2FjbF9kZWZhdWx0IGZpeCBmcm9tIEFudG9uIEdlcmFzaW1vdgotIAkgIDxhbnRvbkBhZHZhbmNlZHRlbGVtYXRpYy5jb20+Ci1kaWZmIC0tZ2l0IGEvcHNldWRvX3V0aWwuYyBiL3BzZXVkb191dGlsLmMKLWluZGV4IDE3Mjk5MGIuLjZhMWZhYzIgMTAwNjQ0Ci0tLS0gYS9wc2V1ZG9fdXRpbC5jCi0rKysgYi9wc2V1ZG9fdXRpbC5jCi1AQCAtODQ0LDcgKzg0NCw3IEBAIHZvaWQgcHNldWRvX2Ryb3BlbnYoKSB7Ci0gCQlpZiAobGRfcHJlbG9hZCAmJiBzdHJsZW4obGRfcHJlbG9hZCkpIHsKLSAJCQlTRVRFTlYoUFJFTElOS19MSUJSQVJJRVMsIGxkX3ByZWxvYWQsIDEpOwotIAkJfSBlbHNlIHsKLS0JCQlVTlNFVEVOVihQUkVMSU5LX0xJQlJBUklFUyk7Ci0rCQkJU0VURU5WKFBSRUxJTktfTElCUkFSSUVTLCAiIiwgMSk7Ci0gCQl9Ci0gCX0KLSB9Ci0tLSAKLWNnaXQgdjAuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9lZmUwYmUyNzk5MDEwMDZmOTM5Y2QzNTdjY2VlNDdiNjUxYzc4NmRhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvZWZlMGJlMjc5OTAxMDA2ZjkzOWNkMzU3Y2NlZTQ3YjY1MWM3ODZkYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRmYzU4Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9lZmUwYmUyNzk5MDEwMDZmOTM5Y2QzNTdjY2VlNDdiNjUxYzc4NmRhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotRnJvbSBlZmUwYmUyNzk5MDEwMDZmOTM5Y2QzNTdjY2VlNDdiNjUxYzc4NmRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2VlYnMgPHNlZWJzQHNlZWJzLm5ldD4KLURhdGU6IEZyaSwgMjQgRmViIDIwMTcgMTI6NDc6MzggLTA2MDAKLVN1YmplY3Q6IERvbid0IHRyeSB0byByZWNvcmQgMC1sZW5ndGggcG9zaXhfYWNsX2RlZmF1bHQgeGF0dHJzCi0KLUJhc2VkIG9uIGEgc3VibWlzc2lvbiBmcm9tIEFudG9uIEdlcmFzaW1vdiA8YW50b25AYWR2YW5jZWR0ZWxlbWF0aWMuY29tPgotCi1PbiBzb21lIHN5c3RlbXMsIHdpdGggc29tZSBrZXJuZWwgY29uZmlncywgImNwIC1hIiBhcHBhcmVudGx5IHRyaWVzIHRvCi1zZXQgYW4gZW1wdHkgQUNMIGxpc3QsIHdpdGggYSB2YWxpZCBoZWFkZXIgYnV0IG5vIGNvbnRlbnRzLCB3aGljaCBjYXVzZXMKLXN0cmFuZ2UgYW5kIG15c3RlcmlvdXMgYmVoYXZpb3IgbGF0ZXIgaWYgd2UgYWN0dWFsbHkgY3JlYXRlIHN1Y2ggYW4gZW50cnkuCi1TbyBmaWx0ZXIgdGhhdCBvdXQsIGFsc28gc2FuaXR5LWNoZWNrIGEgY291cGxlIG9mIG90aGVyIHRoaW5ncy4KLQotU2lnbmVkLW9mZi1ieTogU2VlYnMgPHNlZWJzQHNlZWJzLm5ldD4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nLnR4dCBiL0NoYW5nZUxvZy50eHQKLWluZGV4IGFlMmE2ZTkuLmEyZDMwZTkgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cudHh0Ci0rKysgYi9DaGFuZ2VMb2cudHh0Ci1AQCAtMSwzICsxLDYgQEAKLSsyMDE3LTAyLTI0OgotKwkqIChzZWVicykgaW1wb3J0IHBvc2l4X2FjbF9kZWZhdWx0IGZpeCBmcm9tIEFudG9uIEdlcmFzaW1vdgotKwkgIDxhbnRvbkBhZHZhbmNlZHRlbGVtYXRpYy5jb20+Ci0gMjAxNy0wMi0wMToKLSAgICAqIChzZWVicykgaGFuZGxlIHhhdHRyIGRlbGV0aW9uIHNsaWdodGx5IG1vcmUgY2FyZWZ1bGx5LgotICAgICogKHNlZWJzKSB0YWcgdGhpcyBhcyAxLjguMgotZGlmZiAtLWdpdCBhL3BvcnRzL2xpbnV4L3hhdHRyL3BzZXVkb193cmFwcGVycy5jIGIvcG9ydHMvbGludXgveGF0dHIvcHNldWRvX3dyYXBwZXJzLmMKLWluZGV4IDQ2YmMwNTMuLmQ2OWQ1M2UgMTAwNjQ0Ci0tLS0gYS9wb3J0cy9saW51eC94YXR0ci9wc2V1ZG9fd3JhcHBlcnMuYwotKysrIGIvcG9ydHMvbGludXgveGF0dHIvcHNldWRvX3dyYXBwZXJzLmMKLUBAIC02Miw5ICs2Miw5IEBAIHN0YXRpYyBpbnQKLSBwb3NpeF9wZXJtaXNzaW9ucyhjb25zdCBhY2xfaGVhZGVyICpoZWFkZXIsIGludCBlbnRyaWVzLCBpbnQgKmV4dHJhLCBpbnQgKm1vZGUpIHsKLSAJaW50IGFjbF9zZWVuID0gMDsKLSAJaWYgKGxlMzIoaGVhZGVyLT52ZXJzaW9uKSAhPSAyKSB7Ci0tCQlwc2V1ZG9fZGlhZygiRmF0YWw6IEFDTCBzdXBwb3J0IG5vIGF2YWlsYWJsZSBmb3IgaGVhZGVyIHZlcnNpb24gJWQuXG4iLAotKwkJcHNldWRvX2RpYWcoIkZhdGFsOiBBQ0wgc3VwcG9ydCBub3QgYXZhaWxhYmxlIGZvciBoZWFkZXIgdmVyc2lvbiAlZC5cbiIsCi0gCQkJbGUzMihoZWFkZXItPnZlcnNpb24pKTsKLS0JCXJldHVybiAxOwotKwkJcmV0dXJuIC0xOwotIAl9Ci0gCSptb2RlID0gMDsKLSAJKmV4dHJhID0gMDsKLUBAIC0xNDAsMTIgKzE0MCwzOCBAQCBzdGF0aWMgaW50IHNoYXJlZF9zZXR4YXR0cihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaQotIAlwc2V1ZG9fZGVidWcoUERCR0ZfWEFUVFIsICJzZXR4YXR0ciglcyBbZmQgJWRdLCAlcyA9PiAnJS4qcycpXG4iLAotIAkJcGF0aCA/IHBhdGggOiAiPG5vIHBhdGg+IiwgZmQsIG5hbWUsIChpbnQpIHNpemUsIChjaGFyICopIHZhbHVlKTsKLSAKLSsJLyogRmlsdGVyIG91dCBlcnJvbmVvdXMgc2l6ZXMgZm9yIFBPU0lYIEFDTAotKwkgKiAgc2VlIHBvc2l4X2FjbF94YXR0cl9jb3VudCBpbiBpbmNsdWRlL2xpbnV4L3Bvc2l4X2FjbF94YXR0ci5oIG9mIExpbnV4IHNvdXJjZSBjb2RlICovCi0rCS8qIEkgZG9uJ3QgdGhpbmsgdGhlcmUncyBhbnkgcG9zaXhfYWNsXyogdmFsdWVzIHRoYXQgYXJlbid0IGluIHRoaXMgZm9ybWF0ICovCi0rCWlmICghc3RybmNtcChuYW1lLCAic3lzdGVtLnBvc2l4X2FjbF8iLCAxNykpIHsKLSsJCS8vIEFDTCBpcyBjb3JydXB0LCBpc3N1ZSBhbiBlcnJvcgotKwkJaWYoc2l6ZSA8IHNpemVvZihhY2xfaGVhZGVyKSB8fCAoc2l6ZSAtIHNpemVvZihhY2xfaGVhZGVyKSkgJSBzaXplb2YoYWNsX2VudHJ5KSAhPSAwKSB7Ci0rCQkJcHNldWRvX2RlYnVnKFBEQkdGX1hBVFRSLCAiaW52YWxpZCBkYXRhIHNpemUgZm9yICVzOiAlZFxuIiwKLSsJCQkJbmFtZSwgKGludCkgc2l6ZSk7Ci0rCQkJZXJybm8gPSBFSU5WQUw7Ci0rCQkJcmV0dXJuIC0xOwotKwkJfQotKwotKwkJLy8gQUNMIGlzIGVtcHR5LCBkbyBub3RoaW5nCi0rCQlpZigoc2l6ZSAtIHNpemVvZihhY2xfaGVhZGVyKSkgLyBzaXplb2YoYWNsX2VudHJ5KSA9PSAwKSB7Ci0rCQkJLyogb24gc29tZSBzeXN0ZW1zLCAiY3AgLWEiIHdpbGwgYXR0ZW1wdCB0byBjbG9uZSB0aGUKLSsJCQkgKiBwb3NpeF9hY2xfZGVmYXVsdCBlbnRyeSBmb3IgYSBkaXJlY3RvcnkgKHdoaWNoIHdvdWxkIHNwZWNpZnkKLSsJCQkgKiBkZWZhdWx0IEFDTHMgZm9yIG5ldyBmaWxlcyBpbiB0aGF0IGRpcmVjdG9yeSksIGJ1dCBpZiB0aGUKLSsJCQkgKiBvcmlnaW5hbCB3YXMgZW1wdHksIHdlIGdldCBhIGhlYWRlciBidXQgbm8gZW50cmllcy4gV2l0aAotKwkJCSAqIHJlYWwgeGF0dHIsIHRoYXQgZW5kcyB1cCBiZWluZyBzaWxlbnRseSBkaXNjYXJkZWQsIGFwcGFyZW50bHksCi0rCQkJICogc28gd2UgZGlzY2FyZCBpdCB0b28uCi0rCQkJICovCi0rCQkJcHNldWRvX2RlYnVnKFBEQkdGX1hBVFRSLCAiMC1sZW5ndGggQUNMIGVudHJ5ICVzLlxuIiwgbmFtZSk7Ci0rCQkJcmV0dXJuIDA7Ci0rCQl9Ci0rCX0KLSAJLyogdGhpcyBtYXkgYmUgYSBwbGFpbiBjaG1vZCAqLwotIAlpZiAoIXN0cmNtcChuYW1lLCAic3lzdGVtLnBvc2l4X2FjbF9hY2Nlc3MiKSkgewotIAkJaW50IGV4dHJhOwotIAkJaW50IG1vZGU7Ci0gCQlpbnQgZW50cmllcyA9IChzaXplIC0gc2l6ZW9mKGFjbF9oZWFkZXIpKSAvIHNpemVvZihhY2xfZW50cnkpOwotLQkJaWYgKCFwb3NpeF9wZXJtaXNzaW9ucyh2YWx1ZSwgZW50cmllcywgJmV4dHJhLCAmbW9kZSkpIHsKLSsJCWludCByZXMgPSBwb3NpeF9wZXJtaXNzaW9ucyh2YWx1ZSwgZW50cmllcywgJmV4dHJhLCAmbW9kZSk7Ci0rCQlpZiAocmVzID09IDApIHsKLSAJCQlwc2V1ZG9fZGVidWcoUERCR0ZfWEFUVFIsICJwb3NpeF9hY2xfYWNjZXNzIHRyYW5zbGF0ZWQgdG8gbW9kZSAlMDRvLiBSZW1haW5pbmcgYXR0cmlidXRlKHMpOiAlZC5cbiIsCi0gCQkJCW1vZGUsIGV4dHJhKTsKLSAJCQlidWYuc3RfbW9kZSA9IG1vZGU7Ci1AQCAtMTY0LDggKzE5MCwxMiBAQCBzdGF0aWMgaW50IHNoYXJlZF9zZXR4YXR0cihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaQotIAkJCWlmICghZXh0cmEpIHsKLSAJCQkJcmV0dXJuIDA7Ci0gCQkJfQotKwkJfSBlbHNlIGlmIChyZXMgPT0gLTEpIHsKLSsJCQllcnJubyA9IEVPUE5PVFNVUFA7Ci0rCQkJcmV0dXJuIC0xOwotIAkJfQotIAl9Ci0rCi0gCWlmICghc3RyY21wKG5hbWUsICJ1c2VyLnBzZXVkb19kYXRhIikpIHsKLSAJCXBzZXVkb19kZWJ1ZyhQREJHRl9YQVRUUiB8IFBEQkdGX1hBVFRSREIsICJ1c2VyLnBzZXVkb19kYXRhIHhhdHRyaWJ1dGUgZG9lcyBub3QgZ2V0IHRvIGdvIGluIGRhdGFiYXNlLlxuIik7Ci0gCQlyZXR1cm4gLTE7Ci0tLSAKLWNnaXQgdjAuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9mYXN0b3ByZXBseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2Zhc3RvcHJlcGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDRjMmQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2Zhc3RvcHJlcGx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotRW5zdXJlIEZBU1RPUCBtZXNzYWdlcyBnZXQgYW4gQUNLIHJlcGx5IHNvIHRoYXQgdGhlIGNsaWVudCBjYW4gYmUgc3VyZSB0aGUgc2VydmVyCi1yZWNpZXZlZCB0aGVtLiBUaGlzIG1lYW5zIGlmIGNvbm5lY3Rpb25zIGFyZSB0ZXJtaW5hdGVkLCBkYXRhIGlzbid0IGxvc3QuCi0KLVJQIDIwMTcvOS8yMgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1JbmRleDogcHNldWRvLTEuOC4yL3BzZXVkb19jbGllbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBzZXVkby0xLjguMi5vcmlnL3BzZXVkb19jbGllbnQuYwotKysrIHBzZXVkby0xLjguMi9wc2V1ZG9fY2xpZW50LmMKLUBAIC0xMzMxLDIxICsxMzMxLDE5IEBAIHBzZXVkb19jbGllbnRfcmVxdWVzdChwc2V1ZG9fbXNnX3QgKm1zZywKLSAJCSAqIGluZGljYXRpbmcgYSBzdWNjZXNzZnVsIHNlbmQuCi0gCQkgKi8KLSAJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQgfCBQREJHRl9WRVJCT1NFLCAic2VudCFcbiIpOwotLQkJaWYgKG1zZy0+dHlwZSAhPSBQU0VVRE9fTVNHX0ZBU1RPUCkgewotLQkJCXJlc3BvbnNlID0gcHNldWRvX21zZ19yZWNlaXZlKGNvbm5lY3RfZmQpOwotLQkJCWlmICghcmVzcG9uc2UpIHsKLS0JCQkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCwgImV4cGVjdGVkIHJlc3BvbnNlIGRpZCBub3Qgb2NjdXI7IHJldHJ5aW5nXG4iKTsKLSsJCXJlc3BvbnNlID0gcHNldWRvX21zZ19yZWNlaXZlKGNvbm5lY3RfZmQpOwotKwkJaWYgKCFyZXNwb25zZSkgewotKwkJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQsICJleHBlY3RlZCByZXNwb25zZSBkaWQgbm90IG9jY3VyOyByZXRyeWluZ1xuIik7Ci0rCQl9IGVsc2UgewotKwkJCWlmIChyZXNwb25zZS0+dHlwZSAhPSBQU0VVRE9fTVNHX0FDSykgewotKwkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5ULCAiZ290IG5vbi1hY2sgcmVzcG9uc2UgJWRcbiIsIHJlc3BvbnNlLT50eXBlKTsKLSsJCQkJcmV0dXJuIDA7Ci0rCQkJfSBlbHNlIGlmIChtc2ctPnR5cGUgIT0gUFNFVURPX01TR19GQVNUT1ApIHsKLSsJCQkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCB8IFBEQkdGX1ZFUkJPU0UsICJnb3QgcmVzcG9uc2UgdHlwZSAlZFxuIiwgcmVzcG9uc2UtPnR5cGUpOwotKwkJCQlyZXR1cm4gcmVzcG9uc2U7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHJlc3BvbnNlLT50eXBlICE9IFBTRVVET19NU0dfQUNLKSB7Ci0tCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5ULCAiZ290IG5vbi1hY2sgcmVzcG9uc2UgJWRcbiIsIHJlc3BvbnNlLT50eXBlKTsKLS0JCQkJCXJldHVybiAwOwotLQkJCQl9IGVsc2UgewotLQkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCB8IFBEQkdGX1ZFUkJPU0UsICJnb3QgcmVzcG9uc2UgdHlwZSAlZFxuIiwgcmVzcG9uc2UtPnR5cGUpOwotLQkJCQkJcmV0dXJuIHJlc3BvbnNlOwotLQkJCQl9Ci0rCQkJCXJldHVybiAwOwotIAkJCX0KLS0JCX0gZWxzZSB7Ci0tCQkJcmV0dXJuIDA7Ci0gCQl9Ci0gCX0KLSAJcHNldWRvX2RpYWcoInBzZXVkbzogc2VydmVyIGNvbm5lY3Rpb24gcGVyc2lzdGVudGx5IGZhaWxlZCwgYWJvcnRpbmcuXG4iKTsKLUluZGV4OiBwc2V1ZG8tMS44LjIvcHNldWRvX3NlcnZlci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcHNldWRvLTEuOC4yLm9yaWcvcHNldWRvX3NlcnZlci5jCi0rKysgcHNldWRvLTEuOC4yL3BzZXVkb19zZXJ2ZXIuYwotQEAgLTQ2Myw2ICs0NjMsMTEgQEAgY2xvc2VfY2xpZW50KGludCBjbGllbnQpIHsKLSAJCQktLWhpZ2hlc3RfY2xpZW50OwotIH0KLSAKLStzdGF0aWMgcHNldWRvX21zZ190IHNlcnZlcl9mYXN0b3BfcmVwbHkgPSB7IAotKyAgICAgICAgLnR5cGUgPSBQU0VVRE9fTVNHX0FDSywKLSsgICAgICAgIC5vcCA9IE9QX05PTkUsCi0rfTsKLSsKLSAvKiBBY3R1YWxseSBwcm9jZXNzIGEgcmVxdWVzdC4KLSAgKi8KLSBzdGF0aWMgaW50Ci1AQCAtNTE1LDggKzUyMCwxNCBAQCBzZXJ2ZV9jbGllbnQoaW50IGkpIHsKLSAJCSAqIHBzZXVkb19zZXJ2ZXJfcmVzcG9uc2UuCi0gCQkgKi8KLSAJCWlmIChpbi0+dHlwZSAhPSBQU0VVRE9fTVNHX1NIVVRET1dOKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluLT50eXBlID09IFBTRVVET19NU0dfRkFTVE9QKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbi0+dHlwZSA9PSBQU0VVRE9fTVNHX0ZBU1RPUCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9yZXNwb25zZSA9IDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGb3IgZmFzdG9wcyB3ZSByZXBseSBub3cgdG8gc2F5IHdlIGdvdCB0aGUgZGF0YSAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyYyA9IHBzZXVkb19tc2dfc2VuZChjbGllbnRzW2ldLmZkLCAmc2VydmVyX2Zhc3RvcF9yZXBseSwgMCwgTlVMTCkpICE9IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJmYWlsZWQgdG8gc2VuZCBmYXN0b3AgYWNrIHRvIGNsaWVudCAlZCBbJWRdOiAlZCAoJXMpXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCAoaW50KSBjbGllbnRzW2ldLnBpZCwgcmMsIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotIAkJCS8qIG1vc3QgbWVzc2FnZXMgZG9uJ3QgbmVlZCB0aGVzZSwgYnV0IHhhdHRyIG1heSAqLwotIAkJCXJlc3BvbnNlX3BhdGggPSAwOwotIAkJCXJlc3BvbnNlX3BhdGhsZW4gPSAtMTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL3Rvb21hbnlmaWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL3Rvb21hbnlmaWxlcy5wYXRjaAppbmRleCBiMDg1YTQ1Li5iZGE3ZTRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy90b29tYW55ZmlsZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvdG9vbWFueWZpbGVzLnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSBiMGIyNWZiYzA0MWExNDhkMWRlMDlmNWE2NTAzY2Q5NTk3M2VjNzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBUdWUsIDI1IEFwciAyMDE3IDE1OjI1OjU0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBwc2V1ZG86IEhhbmRsZSB0b28gbWFueSBmaWxlcyBkZWFkbG9jaworCiBDdXJyZW50bHkgaWYgd2UgbWF4IG91dCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZmlsZXMsIHBzZXVkbyBjYW4gZGVhZGxvY2ssIHVuYWJsZSB0bwogYWNjZXB0IG5ldyBjb25uZWN0aW9ucyB5ZXQgdW5hYmxlIHRvIG1vdmUgZm9yd2FyZCBhbmQgdW5ibG9jayB0aGUgb3RoZXIgcHJvY2Vzc2VzCiB3YWl0aW5nIGVpdGhlci4KQEAgLTExLDE5ICsxNiwyMyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbUGV0ZXIgaXMgYXdhcmUgb2YgdGhlIGlzc3VlXQogCi1JbmRleDogcHNldWRvLTEuOC4yL3BzZXVkb19zZXJ2ZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBzZXVkby0xLjguMi5vcmlnL3BzZXVkb19zZXJ2ZXIuYwotKysrIHBzZXVkby0xLjguMi9wc2V1ZG9fc2VydmVyLmMKLUBAIC01ODEsNiArNTgxLDcgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKLSAJaW50IHJjOwotIAlpbnQgZmQ7Ci0gCWludCBsb29wX3RpbWVvdXQgPSBwc2V1ZG9fc2VydmVyX3RpbWVvdXQ7CistLS0KKyBwc2V1ZG9fc2VydmVyLmMgfCAxMCArKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3BzZXVkb19zZXJ2ZXIuYyBiL3BzZXVkb19zZXJ2ZXIuYworaW5kZXggZGFjMzI1OC4uMTVhM2U4ZiAxMDA2NDQKKy0tLSBhL3BzZXVkb19zZXJ2ZXIuYworKysrIGIvcHNldWRvX3NlcnZlci5jCitAQCAtODAyLDYgKzgwMiw3IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7CisgCXN0cnVjdCBzaWdhY3Rpb24gZWF0X3VzcjIgPSB7CisgCQkuc2FfaGFuZGxlciA9IHNldF9kb19saXN0X2NsaWVudHMKKyAJfTsKICsJaW50IGhpdG1heGZpbGVzOwogIAogIAljbGllbnRzID0gbWFsbG9jKDE2ICogc2l6ZW9mKCpjbGllbnRzKSk7CiAgCi1AQCAtNTk3LDYgKzU5OCw3IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7CitAQCAtODIwLDYgKzgyMSw3IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7CiAgCWFjdGl2ZV9jbGllbnRzID0gMTsKICAJbWF4X2NsaWVudHMgPSAxNjsKICAJaGlnaGVzdF9jbGllbnQgPSAwOwpAQCAtMzEsOSArNDAsOSBAQAogIAogIAlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAic2VydmVyIGxvb3Agc3RhcnRlZC5cbiIpOwogIAlpZiAobGlzdGVuX2ZkIDwgMCkgewotQEAgLTY2MywxMCArNjY1LDE1IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7Ci0gCQkJCQkJbWVzc2FnZV90aW1lLnR2X3VzZWMgLT0gMTAwMDAwMDsKLSAJCQkJCQkrK21lc3NhZ2VfdGltZS50dl9zZWM7CitAQCAtODc4LDEwICs4ODAsMTUgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKKyAJCQkJCX0gZWxzZSB7CisgCQkJCQkJc2VydmVfY2xpZW50KGkpOwogIAkJCQkJfQogKwkJCQl9IGVsc2UgaWYgKGhpdG1heGZpbGVzKSB7CiArCQkJCQkvKiBPbmx5IGNsb3NlIG9uZSBwZXIgbG9vcCBpdGVyYXRpb24gaW4gdGhlIGludGVyZXN0cyBvZiBjYXV0aW9uICovCkBAIC00NywxMyArNTYsMTYgQEAKICAJCQlpZiAoIWRpZV9mb3JjZWZ1bGx5ICYmIAogIAkJCSAgICAoRkRfSVNTRVQoY2xpZW50c1swXS5mZCwgJmV2ZW50cykgfHwKICAJCQkgICAgIEZEX0lTU0VUKGNsaWVudHNbMF0uZmQsICZyZWFkcykpKSB7Ci1AQCAtNjg4LDYgKzY5OCw5IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9fc2VydmVyX3RpbWVvdXQgPSBERUZBVUxUX1BTRVVET19TRVJWRVJfVElNRU9VVDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGllX3BlYWNlZnVsbHkgPSAwOworQEAgLTkwMyw2ICs5MTAsOSBAQCBwc2V1ZG9fc2VydmVyX2xvb3Aodm9pZCkgeworIAkJCQkJICovCisgCQkJCQlwc2V1ZG9fc2VydmVyX3RpbWVvdXQgPSBERUZBVUxUX1BTRVVET19TRVJWRVJfVElNRU9VVDsKKyAJCQkJCWRpZV9wZWFjZWZ1bGx5ID0gMDsKICsJCQkJfSBlbHNlIGlmIChlcnJubyA9PSBFTUZJTEUpIHsKICsJCQkJCWhpdG1heGZpbGVzID0gMTsKICsJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJIaXQgbWF4IG9wZW4gZmlsZXMsIGRyb3BwaW5nIGEgY2xpZW50LlxuIik7CiAgCQkJCX0KICAJCQl9CiAgCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgInNlcnZlciBsb29wIGNvbXBsZXRlIFslZCBjbGllbnRzIGxlZnRdXG4iLCBhY3RpdmVfY2xpZW50cyk7CistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvLmluYwppbmRleCAxOGNlOWY5Li5jZGMyYTU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkby5pbmMKQEAgLTI2LDcgKzI2LDcgQEAKIE5PMzJMSUJTID8/PSAiMSIKIE5PMzJMSUJTX2NsYXNzLW5hdGl2ZXNkayA9ICIxIgogCi1QU0VVRE9fRVhUUkFfT1BUUyA/PSAiLS1lbmFibGUtZm9yY2UtYXN5bmMgLS13aXRob3V0LXBhc3N3ZC1mYWxsYmFjayIKK1BTRVVET19FWFRSQV9PUFRTID89ICItLWVuYWJsZS1mb3JjZS1hc3luYyAtLXdpdGhvdXQtcGFzc3dkLWZhbGxiYWNrIC0tZW5hYmxlLWVwb2xsIC0tZW5hYmxlLXhhdHRyIgogCiAjIENvbXBpbGUgZm9yIHRoZSBsb2NhbCBtYWNoaW5lIGFyY2guLi4KIGRvX2NvbXBpbGUgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2VmNTcyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb18xLjguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLXJlcXVpcmUgcHNldWRvLmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9wc2V1ZG8vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtUHJ1bmUtUElFLWZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZhbGxiYWNrLXBhc3N3ZCBcCi0gICAgICAgICAgIGZpbGU6Ly9mYWxsYmFjay1ncm91cCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3JlcmV0cmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9lZmUwYmUyNzk5MDEwMDZmOTM5Y2QzNTdjY2VlNDdiNjUxYzc4NmRhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2I2YjY4ZGI4OTZmOTk2MzU1ODMzNGFmZjdmY2E2MWFkZGU0ZWMxMGYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZmFzdG9wcmVwbHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdG9vbWFueWZpbGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWVwb2xsLUFQSS1vbi1MaW51eC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdkNDFlNzIxODhmYmVhMWY2OTZjMzk5YzFhNDM1Njc1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNlYjQ1NmJkNDc3NzBhMzdjYTIwNzg0YTkxZDcxNWM1YTc2MDFlMDdlMjZhYjExYjBjNzdlOTIwM2VkM2QxOTYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYgppbmRleCA0MmM3YjJlLi45MTAzZDQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKQEAgLTEsMTUgKzEsMTQgQEAKIHJlcXVpcmUgcHNldWRvLmluYwogCi1TUkNSRVYgPSAiMDIxNjgzMDViMGExOWY5ODFmZmU4NTdmMzZlYjI1NmJhODgxMGI3NyIKLVBWID0gIjEuOC4yK2dpdCR7U1JDUFZ9IgotCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHNldWRvIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLVBydW5lLVBJRS1mbGFncy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9mYWxsYmFjay1wYXNzd2QgXAogICAgICAgICAgICBmaWxlOi8vZmFsbGJhY2stZ3JvdXAgXAotICAgICAgICAgICBmaWxlOi8vbW9yZXJldHJpZXMucGF0Y2giCisgICAgICAgICAgIGZpbGU6Ly9tb3JlcmV0cmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90b29tYW55ZmlsZXMucGF0Y2ggXAorICAgICAgICAgICAiCiAKK1NSQ1JFViA9ICJmZGRiZTg1NGM5ZGIwNThkNWEwNTgzMGQzYmNkZDQyMzNkOTVlZTJlIgogUyA9ICIke1dPUktESVJ9L2dpdCIKK1BWID0gIjEuOS4wK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZTU4NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1CVUctZml4LWluZmluaXRlLWxvb3Atd2hlbi1jcmVhdGluZy1ucC5wYWQtb24tYW4tZW1wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSA0MTcwYjk4ZTBkNTg2NGVmNGRiMWM1NzA0YTZlOTQyOGMzYmU5ZmI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSXJ5bmEgU2hjaGVyYmluYSA8aXNoY2hlcmJAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMjQgQXVnIDIwMTcgMTg6MDE6NDMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQlVHOiBmaXggaW5maW5pdGUgbG9vcCB3aGVuIGNyZWF0aW5nIG5wLnBhZCBvbiBhbiBlbXB0eSBhcnJheQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcHVsbC85NTk5L2NvbW1pdHMvNmY5ZWEwYWJiZDMwNWQ1M2Y5MDE3ZGViYWIzYTNhNTkxZmUwZTI0OV0KLUNWRTogQ1ZFLTIwMTctMTI4NTIKLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBudW1weS9saWIvYXJyYXlwYWQucHkgICAgICAgICAgICB8IDMgKysrCi0gbnVtcHkvbGliL3Rlc3RzL3Rlc3RfYXJyYXlwYWQucHkgfCA0ICsrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbnVtcHkvbGliL2FycmF5cGFkLnB5IGIvbnVtcHkvbGliL2FycmF5cGFkLnB5Ci1pbmRleCAyZGFkOTljLi4yOTRhNjg5IDEwMDY0NAotLS0tIGEvbnVtcHkvbGliL2FycmF5cGFkLnB5Ci0rKysgYi9udW1weS9saWIvYXJyYXlwYWQucHkKLUBAIC0xNDA2LDYgKzE0MDYsOSBAQCBkZWYgcGFkKGFycmF5LCBwYWRfd2lkdGgsIG1vZGUsICoqa3dhcmdzKToKLSAgICAgICAgICAgICBuZXdtYXQgPSBfYXBwZW5kX21pbihuZXdtYXQsIHBhZF9hZnRlciwgY2h1bmtfYWZ0ZXIsIGF4aXMpCi0gCi0gICAgIGVsaWYgbW9kZSA9PSAncmVmbGVjdCc6Ci0rICAgICAgICBpZiBuYXJyYXkuc2l6ZSA9PSAwOgotKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZXJlIGFyZW4ndCBhbnkgZWxlbWVudHMgdG8gcmVmbGVjdCBpbiBgYXJyYXlgIikKLSsKLSAgICAgICAgIGZvciBheGlzLCAocGFkX2JlZm9yZSwgcGFkX2FmdGVyKSBpbiBlbnVtZXJhdGUocGFkX3dpZHRoKToKLSAgICAgICAgICAgICAjIFJlY3Vyc2l2ZSBwYWRkaW5nIGFsb25nIGFueSBheGlzIHdoZXJlIGBwYWRfYW10YCBpcyB0b28gbGFyZ2UKLSAgICAgICAgICAgICAjIGZvciBpbmRleGluZyB0cmlja3MuIFdlIGNhbiBvbmx5IHNhZmVseSBwYWQgdGhlIG9yaWdpbmFsIGF4aXMKLWRpZmYgLS1naXQgYS9udW1weS9saWIvdGVzdHMvdGVzdF9hcnJheXBhZC5weSBiL251bXB5L2xpYi90ZXN0cy90ZXN0X2FycmF5cGFkLnB5Ci1pbmRleCAwNTZhYTQ1Li4wZjcxZDMyIDEwMDY0NAotLS0tIGEvbnVtcHkvbGliL3Rlc3RzL3Rlc3RfYXJyYXlwYWQucHkKLSsrKyBiL251bXB5L2xpYi90ZXN0cy90ZXN0X2FycmF5cGFkLnB5Ci1AQCAtMTAxNCw2ICsxMDE0LDEwIEBAIGNsYXNzIFZhbHVlRXJyb3IxKFRlc3RDYXNlKToKLSAgICAgICAgIGFzc2VydF9yYWlzZXMoVmFsdWVFcnJvciwgcGFkLCBhcnIsICgoLTIsIDMpLCAoMywgMikpLAotICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKLSAKLSsgICAgZGVmIHRlc3RfY2hlY2tfZW1wdHlfYXJyYXkoc2VsZik6Ci0rICAgICAgICBhc3NlcnRfcmFpc2VzKFZhbHVlRXJyb3IsIHBhZCwgW10sIDQsIG1vZGU9J3JlZmxlY3QnKQotKyAgICAgICAgYXNzZXJ0X3JhaXNlcyhWYWx1ZUVycm9yLCBwYWQsIG5wLm5kYXJyYXkoMCksIDQsIG1vZGU9J3JlZmxlY3QnKQotKwotIAotIGNsYXNzIFZhbHVlRXJyb3IyKFRlc3RDYXNlKToKLSAgICAgZGVmIHRlc3RfY2hlY2tfbmVnYXRpdmVfcGFkX2Ftb3VudChzZWxmKToKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoCmluZGV4IGZmZDZjZWQuLjUxNmNjZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2gKQEAgLTEsMjMgKzEsMjQgQEAKLUZyb20gY2MyY2U2ZDhiNmEzZTZlMmM4ODc0ODk2YzEwODk3MDM0YTgwY2Q0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzhjNjY0OWIyOWEwOGY4MmUxZDY3NjFhNmQ2MmNlNWY2MzIzMTNjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVGh1LCAxMCBEZWMgMjAxNSAxMzoyMDozMCArMDIwMAotU3ViamVjdDogW1BBVENIXSBEb24ndCBzZWFyY2ggL3VzciBhbmQgc28gb24gZm9yIGxpYnJhcmllcyBieSBkZWZhdWx0IHRvIGF2b2lkCi0gaG9zdCBjb250YW1pbmF0aW9uLgorU3ViamVjdDogW1BBVENIIDEvM10gRG9uJ3Qgc2VhcmNoIC91c3IgYW5kIHNvIG9uIGZvciBsaWJyYXJpZXMgYnkgZGVmYXVsdCB0bworIGF2b2lkIGhvc3QgY29udGFtaW5hdGlvbi4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIChBcyB0aGUgY29kZSBzdGFuZHMsIHRoaXMgaXMgYSBoYWNrKQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBudW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkgfCA1MCArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKIAotSW5kZXg6IG51bXB5LTEuMTMuMS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBudW1weS0xLjEzLjEub3JpZy9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKLSsrKyBudW1weS0xLjEzLjEvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5Ci1AQCAtMjExLDUxICsyMTEsMTMgQEAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgIGRlZmF1bHRfeDExX2xpYl9kaXJzID0gW10KLSAgICAgZGVmYXVsdF94MTFfaW5jbHVkZV9kaXJzID0gW10KK2RpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkgYi9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKK2luZGV4IGJlYTEyMGMuLjU0NGUwNTYgMTAwNjQ0CistLS0gYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKKysrKyBiL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQorQEAgLTI2Miw1MSArMjYyLDEzIEBAIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgIGFkZF9zeXN0ZW1fcm9vdChvcy5wYXRoLmpvaW4oY29uZGFfZGlyLCAnTGlicmFyeScpKQorICAgICAgICAgICAgICAgICAgICAgICAgIAogIGVsc2U6CiAtICAgIGRlZmF1bHRfbGliX2RpcnMgPSBsaWJwYXRocyhbJy91c3IvbG9jYWwvbGliJywgJy9vcHQvbGliJywgJy91c3IvbGliJywKIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL29wdC9sb2NhbC9saWInLCAnL3N3L2xpYiddLCBwbGF0Zm9ybV9iaXRzKQpAQCAtMjksMTAgKzMwLDcgQEAKIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9vcHQvbG9jYWwvaW5jbHVkZScsICcvc3cvaW5jbHVkZScsCiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2luY2x1ZGUvc3VpdGVzcGFyc2UnXQogLSAgICBkZWZhdWx0X3NyY19kaXJzID0gWycuJywgJy91c3IvbG9jYWwvc3JjJywgJy9vcHQvc3JjJywgJy9zdy9zcmMnXQotKyAgICBkZWZhdWx0X2xpYl9kaXJzID0gbGlicGF0aHMoWycvZGVhZGlyL2xpYiddLCBwbGF0Zm9ybV9iaXRzKQotKyAgICBkZWZhdWx0X2luY2x1ZGVfZGlycyA9IFsnL2RlYWRkaXIvaW5jbHVkZSddCi0rICAgIGRlZmF1bHRfc3JjX2RpcnMgPSBbJy4nLCAnL2RlYWRkaXIvc3JjJ10KLSAKKy0KIC0gICAgZGVmYXVsdF94MTFfbGliX2RpcnMgPSBsaWJwYXRocyhbJy91c3IvWDExUjYvbGliJywgJy91c3IvWDExL2xpYicsCiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2xpYiddLCBwbGF0Zm9ybV9iaXRzKQogLSAgICBkZWZhdWx0X3gxMV9pbmNsdWRlX2RpcnMgPSBbJy91c3IvWDExUjYvaW5jbHVkZScsICcvdXNyL1gxMS9pbmNsdWRlJywKQEAgLTY3LDggKzY1LDE1IEBACiAtICAgIGZpbmFsbHk6CiAtICAgICAgICBpZiB0bXAgaXMgbm90IE5vbmU6CiAtICAgICAgICAgICAgdG1wLmNsb3NlKCkKKysgICAgZGVmYXVsdF9saWJfZGlycyA9IGxpYnBhdGhzKFsnL2RlYWRpci9saWInXSwgcGxhdGZvcm1fYml0cykKKysgICAgZGVmYXVsdF9pbmNsdWRlX2RpcnMgPSBbJy9kZWFkZGlyL2luY2x1ZGUnXQorKyAgICBkZWZhdWx0X3NyY19kaXJzID0gWycuJywgJy9kZWFkZGlyL3NyYyddCisrCiArICAgIGRlZmF1bHRfeDExX2xpYl9kaXJzID0gbGlicGF0aHMoWycvZGVhZGRpci9saWInXSwgcGxhdGZvcm1fYml0cykKICsgICAgZGVmYXVsdF94MTFfaW5jbHVkZV9kaXJzID0gWycvZGVhZGRpci9pbmNsdWRlJ10KICAKICBpZiBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ2xpYicpIG5vdCBpbiBkZWZhdWx0X2xpYl9kaXJzOgogICAgICBkZWZhdWx0X2xpYl9kaXJzLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ2xpYicpKQorLS0gCisyLjE2LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1ucHlfY3B1LUFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1ucHlfY3B1LUFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNWM0ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW5weV9jcHUtQWRkLXJpc2N2LXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSAzMGZiMWJmOTI0NGJiMDc4OWMwMmVjN2M5OGE5MjNhY2M3MjAwMjA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTYgTWFyIDIwMTggMTk6NTU6MjEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbnB5X2NwdTogQWRkIHJpc2N2IHN1cHBvcnQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9wdWxsLzEwNzYxXQorCisgbnVtcHkvY29yZS9pbmNsdWRlL251bXB5L25weV9jcHUuaCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oIGIvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5L25weV9jcHUuaAoraW5kZXggODQ2NTNlYTE4Li45ZTg4ZGI4NzMgMTAwNjQ0CistLS0gYS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oCisrKysgYi9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oCitAQCAtNzgsNiArNzgsOCBAQAorICAgICAjZGVmaW5lIE5QWV9DUFVfQUFSQ0g2NAorICNlbGlmIGRlZmluZWQoX19tYzY4MDAwX18pCisgICAgICNkZWZpbmUgTlBZX0NQVV9NNjhLCisrI2VsaWYgZGVmaW5lZChfX3Jpc2N2KQorKyAgICAjZGVmaW5lIE5QWV9DUFVfUklTQ1YKKyAjZWxpZiBkZWZpbmVkKF9fYXJjX18pICYmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICNkZWZpbmUgTlBZX0NQVV9BUkNFTAorICNlbGlmIGRlZmluZWQoX19hcmNfXykgJiYgZGVmaW5lZChfX0JJR19FTkRJQU5fXykKKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL3JlbW92ZS1idWlsZC1wYXRoLWluLWNvbW1lbnRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViOGE3MWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGM1NjBhYmZmNzFmOThhMzlhNzQwMWYwOGMyYzEzZGFkOWFlN2YxNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI1IEZlYiAyMDE2IDAxOjIzOjMyIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlbW92ZSBidWlsZCBwYXRoIGluIGNvbW1lbnRzCi0KLUl0IGhhcyBidWlsZCBwYXRoIGluIGNvbW1lbnRzLCBzbyByZW1vdmUgaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3BlbmVtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBudW1weS9kaXN0dXRpbHMvbWlzY191dGlsLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbnVtcHkvZGlzdHV0aWxzL21pc2NfdXRpbC5weSBiL251bXB5L2Rpc3R1dGlscy9taXNjX3V0aWwucHkKLWluZGV4IDM0NWU2MGYuLmRhZmIwNjggMTAwNjQ0Ci0tLS0gYS9udW1weS9kaXN0dXRpbHMvbWlzY191dGlsLnB5Ci0rKysgYi9udW1weS9kaXN0dXRpbHMvbWlzY191dGlsLnB5Ci1AQCAtMjI1NCw3ICsyMjU0LDcgQEAgZGVmIGdlbmVyYXRlX2NvbmZpZ19weSh0YXJnZXQpOgotICAgICBmcm9tIGRpc3R1dGlscy5kaXJfdXRpbCBpbXBvcnQgbWtwYXRoCi0gICAgIG1rcGF0aChvcy5wYXRoLmRpcm5hbWUodGFyZ2V0KSkKLSAgICAgZiA9IG9wZW4odGFyZ2V0LCAndycpCi0tICAgIGYud3JpdGUoJyMgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSAlc1xuJyAlIChvcy5wYXRoLmFic3BhdGgoc3lzLmFyZ3ZbMF0pKSkKLSsgICAgZi53cml0ZSgnIyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5ICVzXG4nICUgKG9zLnBhdGguYWJzcGF0aChzeXMuYXJndlswXSkucmVwbGFjZShvcy5wYXRoLmFic3BhdGgoJy4uLycpLCcnKSkpCi0gICAgIGYud3JpdGUoJyMgSXQgY29udGFpbnMgc3lzdGVtX2luZm8gcmVzdWx0cyBhdCB0aGUgdGltZSBvZiBidWlsZGluZyB0aGlzIHBhY2thZ2UuXG4nKQotICAgICBmLndyaXRlKCdfX2FsbF9fID0gWyJnZXRfaW5mbyIsInNob3ciXVxuXG4nKQotICAgICBmb3IgaywgaSBpbiBzeXN0ZW1faW5mby5zYXZlZF9yZXN1bHRzLml0ZW1zKCk6Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL3Jpc2N2NjQvX251bXB5Y29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9yaXNjdjY0L19udW1weWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwOWRlYjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9yaXNjdjY0L19udW1weWNvbmZpZy5oCkBAIC0wLDAgKzEsMzIgQEAKKyNkZWZpbmUgTlBZX0hBVkVfRU5ESUFOX0ggMQorI2RlZmluZSBOUFlfU0laRU9GX1NIT1JUIFNJWkVPRl9TSE9SVAorI2RlZmluZSBOUFlfU0laRU9GX0lOVCBTSVpFT0ZfSU5UCisjZGVmaW5lIE5QWV9TSVpFT0ZfTE9ORyBTSVpFT0ZfTE9ORworI2RlZmluZSBOUFlfU0laRU9GX0ZMT0FUIDQKKyNkZWZpbmUgTlBZX1NJWkVPRl9DT01QTEVYX0ZMT0FUIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfRE9VQkxFIDE2CisjZGVmaW5lIE5QWV9TSVpFT0ZfTE9OR0RPVUJMRSAxNgorI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfTE9OR0RPVUJMRSAzMgorI2RlZmluZSBOUFlfU0laRU9GX1BZX0lOVFBUUl9UIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9QWV9MT05HX0xPTkcgOAorI2RlZmluZSBOUFlfU0laRU9GX0xPTkdMT05HIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9PRkZfVCA4CisjZGVmaW5lIE5QWV9OT19TTVAgMAorI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTTkFOCisjZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNJTkYKKyNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU0ZJTklURQorI2RlZmluZSBOUFlfSEFWRV9ERUNMX1NJR05CSVQKKyNkZWZpbmUgTlBZX1VTRV9DOTlfQ09NUExFWCAxCisjZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfRE9VQkxFIDEKKyNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9GTE9BVCAxCisjZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfTE9OR19ET1VCTEUgMQorI2RlZmluZSBOUFlfRU5BQkxFX1NFUEFSQVRFX0NPTVBJTEFUSU9OIDEKKyNkZWZpbmUgTlBZX1VTRV9DOTlfRk9STUFUUyAxCisjZGVmaW5lIE5QWV9WSVNJQklMSVRZX0hJRERFTiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCisjZGVmaW5lIE5QWV9BQklfVkVSU0lPTiAweDAxMDAwMDA5CisjZGVmaW5lIE5QWV9BUElfVkVSU0lPTiAweDAwMDAwMDBBCisKKyNpZm5kZWYgX19TVERDX0ZPUk1BVF9NQUNST1MKKyNkZWZpbmUgX19TVERDX0ZPUk1BVF9NQUNST1MgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9yaXNjdjY0L2NvbmZpZy5oIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcmlzY3Y2NC9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzBiODY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcmlzY3Y2NC9jb25maWcuaApAQCAtMCwwICsxLDEzOSBAQAorI2RlZmluZSBIQVZFX0VORElBTl9IIDEKKyNkZWZpbmUgU0laRU9GX1BZX0lOVFBUUl9UIDgKKyNkZWZpbmUgU0laRU9GX1BZX0xPTkdfTE9ORyA4CisjZGVmaW5lIE1BVEhMSUIgbQorI2RlZmluZSBIQVZFX1NJTiAxCisjZGVmaW5lIEhBVkVfQ09TIDEKKyNkZWZpbmUgSEFWRV9UQU4gMQorI2RlZmluZSBIQVZFX1NJTkggMQorI2RlZmluZSBIQVZFX0NPU0ggMQorI2RlZmluZSBIQVZFX1RBTkggMQorI2RlZmluZSBIQVZFX0ZBQlMgMQorI2RlZmluZSBIQVZFX0ZMT09SIDEKKyNkZWZpbmUgSEFWRV9DRUlMIDEKKyNkZWZpbmUgSEFWRV9TUVJUIDEKKyNkZWZpbmUgSEFWRV9MT0cxMCAxCisjZGVmaW5lIEhBVkVfTE9HIDEKKyNkZWZpbmUgSEFWRV9FWFAgMQorI2RlZmluZSBIQVZFX0FTSU4gMQorI2RlZmluZSBIQVZFX0FDT1MgMQorI2RlZmluZSBIQVZFX0FUQU4gMQorI2RlZmluZSBIQVZFX0ZNT0QgMQorI2RlZmluZSBIQVZFX01PREYgMQorI2RlZmluZSBIQVZFX0ZSRVhQIDEKKyNkZWZpbmUgSEFWRV9MREVYUCAxCisjZGVmaW5lIEhBVkVfUklOVCAxCisjZGVmaW5lIEhBVkVfVFJVTkMgMQorI2RlZmluZSBIQVZFX0VYUDIgMQorI2RlZmluZSBIQVZFX0xPRzIgMQorI2RlZmluZSBIQVZFX0FUQU4yIDEKKyNkZWZpbmUgSEFWRV9QT1cgMQorI2RlZmluZSBIQVZFX05FWFRBRlRFUiAxCisjZGVmaW5lIEhBVkVfU0lORiAxCisjZGVmaW5lIEhBVkVfQ09TRiAxCisjZGVmaW5lIEhBVkVfVEFORiAxCisjZGVmaW5lIEhBVkVfU0lOSEYgMQorI2RlZmluZSBIQVZFX0NPU0hGIDEKKyNkZWZpbmUgSEFWRV9UQU5IRiAxCisjZGVmaW5lIEhBVkVfRkFCU0YgMQorI2RlZmluZSBIQVZFX0ZMT09SRiAxCisjZGVmaW5lIEhBVkVfQ0VJTEYgMQorI2RlZmluZSBIQVZFX1JJTlRGIDEKKyNkZWZpbmUgSEFWRV9UUlVOQ0YgMQorI2RlZmluZSBIQVZFX1NRUlRGIDEKKyNkZWZpbmUgSEFWRV9MT0cxMEYgMQorI2RlZmluZSBIQVZFX0xPR0YgMQorI2RlZmluZSBIQVZFX0xPRzFQRiAxCisjZGVmaW5lIEhBVkVfRVhQRiAxCisjZGVmaW5lIEhBVkVfRVhQTTFGIDEKKyNkZWZpbmUgSEFWRV9BU0lORiAxCisjZGVmaW5lIEhBVkVfQUNPU0YgMQorI2RlZmluZSBIQVZFX0FUQU5GIDEKKyNkZWZpbmUgSEFWRV9BU0lOSEYgMQorI2RlZmluZSBIQVZFX0FDT1NIRiAxCisjZGVmaW5lIEhBVkVfQVRBTkhGIDEKKyNkZWZpbmUgSEFWRV9IWVBPVEYgMQorI2RlZmluZSBIQVZFX0FUQU4yRiAxCisjZGVmaW5lIEhBVkVfUE9XRiAxCisjZGVmaW5lIEhBVkVfRk1PREYgMQorI2RlZmluZSBIQVZFX01PREZGIDEKKyNkZWZpbmUgSEFWRV9GUkVYUEYgMQorI2RlZmluZSBIQVZFX0xERVhQRiAxCisjZGVmaW5lIEhBVkVfRVhQMkYgMQorI2RlZmluZSBIQVZFX0xPRzJGIDEKKyNkZWZpbmUgSEFWRV9DT1BZU0lHTkYgMQorI2RlZmluZSBIQVZFX05FWFRBRlRFUkYgMQorI2RlZmluZSBIQVZFX1NJTkwgMQorI2RlZmluZSBIQVZFX0NPU0wgMQorI2RlZmluZSBIQVZFX1RBTkwgMQorI2RlZmluZSBIQVZFX1NJTkhMIDEKKyNkZWZpbmUgSEFWRV9DT1NITCAxCisjZGVmaW5lIEhBVkVfVEFOSEwgMQorI2RlZmluZSBIQVZFX0ZBQlNMIDEKKyNkZWZpbmUgSEFWRV9GTE9PUkwgMQorI2RlZmluZSBIQVZFX0NFSUxMIDEKKyNkZWZpbmUgSEFWRV9SSU5UTCAxCisjZGVmaW5lIEhBVkVfVFJVTkNMIDEKKyNkZWZpbmUgSEFWRV9TUVJUTCAxCisjZGVmaW5lIEhBVkVfTE9HMTBMIDEKKyNkZWZpbmUgSEFWRV9MT0dMIDEKKyNkZWZpbmUgSEFWRV9MT0cxUEwgMQorI2RlZmluZSBIQVZFX0VYUEwgMQorI2RlZmluZSBIQVZFX0VYUE0xTCAxCisjZGVmaW5lIEhBVkVfQVNJTkwgMQorI2RlZmluZSBIQVZFX0FDT1NMIDEKKyNkZWZpbmUgSEFWRV9BVEFOTCAxCisjZGVmaW5lIEhBVkVfQVNJTkhMIDEKKyNkZWZpbmUgSEFWRV9BQ09TSEwgMQorI2RlZmluZSBIQVZFX0FUQU5ITCAxCisjZGVmaW5lIEhBVkVfSFlQT1RMIDEKKyNkZWZpbmUgSEFWRV9BVEFOMkwgMQorI2RlZmluZSBIQVZFX1BPV0wgMQorI2RlZmluZSBIQVZFX0ZNT0RMIDEKKyNkZWZpbmUgSEFWRV9NT0RGTCAxCisjZGVmaW5lIEhBVkVfRlJFWFBMIDEKKyNkZWZpbmUgSEFWRV9MREVYUEwgMQorI2RlZmluZSBIQVZFX0VYUDJMIDEKKyNkZWZpbmUgSEFWRV9MT0cyTCAxCisjZGVmaW5lIEhBVkVfQ09QWVNJR05MIDEKKyNkZWZpbmUgSEFWRV9ORVhUQUZURVJMIDEKKyNkZWZpbmUgSEFWRV9ERUNMX1NJR05CSVQKKyNkZWZpbmUgSEFWRV9DT01QTEVYX0ggMQorI2RlZmluZSBIQVZFX0NSRUFMIDEKKyNkZWZpbmUgSEFWRV9DSU1BRyAxCisjZGVmaW5lIEhBVkVfQ0FCUyAxCisjZGVmaW5lIEhBVkVfQ0FSRyAxCisjZGVmaW5lIEhBVkVfQ0VYUCAxCisjZGVmaW5lIEhBVkVfQ1NRUlQgMQorI2RlZmluZSBIQVZFX0NMT0cgMQorI2RlZmluZSBIQVZFX0NDT1MgMQorI2RlZmluZSBIQVZFX0NTSU4gMQorI2RlZmluZSBIQVZFX0NQT1cgMQorI2RlZmluZSBIQVZFX0NSRUFMRiAxCisjZGVmaW5lIEhBVkVfQ0lNQUdGIDEKKyNkZWZpbmUgSEFWRV9DQUJTRiAxCisjZGVmaW5lIEhBVkVfQ0FSR0YgMQorI2RlZmluZSBIQVZFX0NFWFBGIDEKKyNkZWZpbmUgSEFWRV9DU1FSVEYgMQorI2RlZmluZSBIQVZFX0NMT0dGIDEKKyNkZWZpbmUgSEFWRV9DQ09TRiAxCisjZGVmaW5lIEhBVkVfQ1NJTkYgMQorI2RlZmluZSBIQVZFX0NQT1dGIDEKKyNkZWZpbmUgSEFWRV9DUkVBTEwgMQorI2RlZmluZSBIQVZFX0NJTUFHTCAxCisjZGVmaW5lIEhBVkVfQ0FCU0wgMQorI2RlZmluZSBIQVZFX0NBUkdMIDEKKyNkZWZpbmUgSEFWRV9DRVhQTCAxCisjZGVmaW5lIEhBVkVfQ1NRUlRMIDEKKyNkZWZpbmUgSEFWRV9DTE9HTCAxCisjZGVmaW5lIEhBVkVfQ0NPU0wgMQorI2RlZmluZSBIQVZFX0NTSU5MIDEKKyNkZWZpbmUgSEFWRV9DUE9XTCAxCisjZGVmaW5lIEhBVkVfTERPVUJMRV9JRUVFX1FVQURfTEUgMQorI2lmbmRlZiBfX2NwbHVzcGx1cworLyogI3VuZGVmIGlubGluZSAqLworI2VuZGlmCisKKyNpZm5kZWYgX05QWV9OUFlfQ09ORklHX0hfCisjZXJyb3IgY29uZmlnLmggc2hvdWxkIG5ldmVyIGJlIGluY2x1ZGVkIGRpcmVjdGx5LCBpbmNsdWRlIG5weV9jb25maWcuaCBpbnN0ZWFkCisjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NGYyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCkBAIC0wLDAgKzEsMTE0IEBACitTVU1NQVJZID0gIkEgc29waGlzdGljYXRlZCBOdW1lcmljIFByb2Nlc3NpbmcgUGFja2FnZSBmb3IgUHl0aG9uIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSAmIEJTRC0yLUNsYXVzZSAmIFBTRiAmIEFwYWNoZS0yLjAgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZmM1M2IzMzMwNDE3MWQxMzIxMjhlYmU4MmVhNGE2NDUiCisKK1NSQ05BTUUgPSAibnVtcHkiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9zaGViYW5nX2YycHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1ucHlfY3B1LUFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gIgorU1JDX1VSSVttZDVzdW1dID0gImUzOTg3OGZhZmIxMTgyODk4M2FlZWM1ODNkZGE0YTA2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRkYmNkYTE5NGY0OWUwY2YwNjYzZmE4MTMxY2I5ZDdhM2I4NzZkMTRkZWEwMDQ3ZDNjNWZkZmFmMjBhZGJiNDAiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworQ09ORklHRklMRVNVUkkgPz0gIiIKKworQ09ORklHRklMRVNVUklfYWFyY2g2NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX2FybSA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfYXJtZWIgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWwgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3g4NiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfeDg2LTY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3Bvd2VycGMgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9wb3dlcnBjNjQgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlbCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWIgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmVsID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfcmlzY3Y2NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKKworUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgorCisjIE1ha2UgdGhlIGJ1aWxkIGZhaWwgYW5kIHJlcGxhY2UgKmNvbmZpZy5oIHdpdGggcHJvcGVyIG9uZQorIyBUaGlzIGlzIGEgdWdseSwgdWdseSBoYWNrIC0gS29lbgorZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAorICAgIHRydWUKKyAgICBjcCAke1dPUktESVJ9Lypjb25maWcuaCAke1N9L2J1aWxkLyQobHMgJHtTfS9idWlsZCB8IGdyZXAgc3JjKS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvCit9CisKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbnVtcHkvY29yZS9saWIvKi5hIgorCisjIGluc3RhbGwgd2hhdCBpcyBuZWVkZWQgZm9yIG51bXB5LnRlc3QoKQorUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5vc2UgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWRvY3Rlc3QgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1kaXN0dXRpbHMgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1pc2MgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1tYXAgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tcHlkb2MgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWVtYWlsIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xMy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNlOGY0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzb3BoaXN0aWNhdGVkIE51bWVyaWMgUHJvY2Vzc2luZyBQYWNrYWdlIGZvciBQeXRob24iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTEwMDJiMDljZDY1NGZjYWEyZGNjODc1MzVhY2Q5YTk2IgotCi1TUkNOQU1FID0gIm51bXB5IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke1NSQ05BTUV9LyR7U1JDTkFNRX0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtYnVpbGQtcGF0aC1pbi1jb21tZW50cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfc2hlYmFuZ19mMnB5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQlVHLWZpeC1pbmZpbml0ZS1sb29wLXdoZW4tY3JlYXRpbmctbnAucGFkLW9uLWFuLWVtcC5wYXRjaCBcCi0gICAgICAgICAgICR7Q09ORklHRklMRVNVUkl9ICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZkNDU5ZTRhMjRmNTAzNWY3MjBkZGEzYzU3NzE2YTkyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlMDIwZWMwNmYxZTljZTExMTVhNTAxNjFhMzhiZjhkNGMyNTI1Mzc5OTAwZjljYjQ3OGNjNjEzYTFlN2NkOTMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcmVsZWFzZXMiCi0KLUNPTkZJR0ZJTEVTVVJJID89ICIiCi0KLUNPTkZJR0ZJTEVTVVJJX2FhcmNoNjQgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9hcm0gPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX2FybWViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG8zMmVsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV94ODYgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3g4Ni02NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9wb3dlcnBjID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfcG93ZXJwYzY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjY0ZWwgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huMzJlbCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotIyBNYWtlIHRoZSBidWlsZCBmYWlsIGFuZCByZXBsYWNlICpjb25maWcuaCB3aXRoIHByb3BlciBvbmUKLSMgVGhpcyBpcyBhIHVnbHksIHVnbHkgaGFjayAtIEtvZW4KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKLSAgICB0cnVlCi0gICAgY3AgJHtXT1JLRElSfS8qY29uZmlnLmggJHtTfS9idWlsZC8kKGxzICR7U30vYnVpbGQgfCBncmVwIHNyYykvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5LwotfQotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L251bXB5L2NvcmUvbGliLyouYSIKLQotIyBpbnN0YWxsIHdoYXQgaXMgbmVlZGVkIGZvciBudW1weS50ZXN0KCkKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi11bml0dGVzdCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZGlmZmxpYiBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcHByaW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1waWNrbGUgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1ub3NlIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1kb2N0ZXN0IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1kYXRldGltZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZGlzdHV0aWxzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1taXNjIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1tbWFwIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1uZXRjbGllbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW51bWJlcnMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5ZG9jIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1wa2d1dGlsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1lbWFpbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc3VicHJvY2VzcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tY29tcHJlc3Npb24gXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWN0eXBlcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tdGhyZWFkaW5nIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTQuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAxMzc4OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjE0LjIuYmIKQEAgLTAsMCArMSw2IEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLW51bXB5LmluYworCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXRfYXBwZW5kID0gIiBcCisgICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjEzLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk4NzRiOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi1TVU1NQVJZID0gIkEgc29waGlzdGljYXRlZCBOdW1lcmljIFByb2Nlc3NpbmcgUGFja2FnZSBmb3IgUHl0aG9uIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0xMDAyYjA5Y2Q2NTRmY2FhMmRjYzg3NTM1YWNkOWE5NiIKLQotU1JDTkFNRSA9ICJudW1weSIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtTUkNOQU1FfS8ke1NSQ05BTUV9L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X3NoZWJhbmdfZjJweS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2ggXAotICAgICAgICAgICAke0NPTkZJR0ZJTEVTVVJJfSAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNmQ0NTllNGEyNGY1MDM1ZjcyMGRkYTNjNTc3MTZhOTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGUwMjBlYzA2ZjFlOWNlMTExNWE1MDE2MWEzOGJmOGQ0YzI1MjUzNzk5MDBmOWNiNDc4Y2M2MTNhMWU3Y2Q5MyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9yZWxlYXNlcyIKLQotQ09ORklHRklMRVNVUkkgPz0gIiIKLQotQ09ORklHRklMRVNVUklfYWFyY2g2NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX2FybSA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfYXJtZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWwgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3g4NiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfeDg2LTY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3Bvd2VycGMgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9wb3dlcnBjNjQgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlbCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmVsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotCi1TID0gIiR7V09SS0RJUn0vbnVtcHktJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotIyBNYWtlIHRoZSBidWlsZCBmYWlsIGFuZCByZXBsYWNlICpjb25maWcuaCB3aXRoIHByb3BlciBvbmUKLSMgVGhpcyBpcyBhIHVnbHksIHVnbHkgaGFjayAtIEtvZW4KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAotICAgIHRydWUKLSAgICBjcCAke1dPUktESVJ9Lypjb25maWcuaCAke1N9L2J1aWxkLyQobHMgJHtTfS9idWlsZCB8IGdyZXAgc3JjKS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvCi19Ci0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbnVtcHkvY29yZS9saWIvKi5hIgotCi0jIGluc3RhbGwgd2hhdCBpcyBuZWVkZWQgZm9yIG51bXB5LnRlc3QoKQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy11bml0dGVzdCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWRpZmZsaWIgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1wcHJpbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1waWNrbGUgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1zaGVsbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLW5vc2UgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1kb2N0ZXN0IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZGF0ZXRpbWUgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1kaXN0dXRpbHMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1taXNjIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbW1hcCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLW51bWJlcnMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1weWRvYyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXBrZ3V0aWwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1lbWFpbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXN1YnByb2Nlc3MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWN0eXBlcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXRocmVhZGluZyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXRleHR1dGlscyBcCi0iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1ZTZmOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNC4yLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tbnVtcHkuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMi43LW1hbmlmZXN0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0yLjctbWFuaWZlc3QuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2Q0ODM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0yLjctbWFuaWZlc3QuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjg3ICswLDAgQEAKLQotIyBXQVJOSU5HOiBUaGlzIGZpbGUgaXMgQVVUTyBHRU5FUkFURUQ6IE1hbnVhbCBlZGl0cyB3aWxsIGJlIGxvc3QgbmV4dCB0aW1lIEkgcmVnZW5lcmF0ZSB0aGUgZmlsZS4KLSMgR2VuZXJhdG9yOiAnLi4vLi4vLi4vc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHknIFZlcnNpb24gMjAxMTAyMjIuMiAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgotCi0gCi0KLVBST1ZJREVTKz0iJHtQTn0tMnRvMyAke1BOfS1hcmdwYXJzZSAke1BOfS1hdWRpbyAke1BOfS1ic2RkYiAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21waWxlciAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb250ZXh0bGliICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kZXYgJHtQTn0tZGlmZmxpYiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taG90c2hvdCAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wbGlzdGxpYiAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXNvdXJjZSAke1BOfS1yb2JvdHBhcnNlciAke1BOfS1zaGVsbCAke1BOfS1zbXRwZCAke1BOfS1zcWxpdGUzICR7UE59LXNxbGl0ZTMtdGVzdHMgJHtQTn0tc3RyaW5nb2xkICR7UE59LXN1YnByb2Nlc3MgJHtQTn0tc3lzbG9nICR7UE59LXRlcm1pbmFsICR7UE59LXRlc3RzICR7UE59LXRleHR1dGlscyAke1BOfS10aHJlYWRpbmcgJHtQTn0tdGtpbnRlciAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAke1BOfS16bGliICIKLQotUEFDS0FHRVM9IiR7UE59LWRiZyAke1BOfS0ydG8zICR7UE59LWFyZ3BhcnNlICR7UE59LWF1ZGlvICR7UE59LWJzZGRiICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXBpbGVyICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvbnRleHRsaWIgJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1jdHlwZXMgJHtQTn0tY3Vyc2VzICR7UE59LWRhdGV0aW1lICR7UE59LWRiICR7UE59LWRlYnVnZ2VyICR7UE59LWRldiAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscy1zdGF0aWNkZXYgJHtQTn0tZGlzdHV0aWxzICR7UE59LWRvY3Rlc3QgJHtQTn0tZW1haWwgJHtQTn0tZmNudGwgJHtQTn0tZ2RibSAke1BOfS1ob3RzaG90ICR7UE59LWh0bWwgJHtQTn0taWRsZSAke1BOfS1pbWFnZSAke1BOfS1pbXBvcnRsaWIgJHtQTn0taW8gJHtQTn0tanNvbiAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWFpbGJveCAke1BOfS1tYXRoICR7UE59LW1pbWUgJHtQTn0tbW1hcCAke1BOfS1tdWx0aXByb2Nlc3NpbmcgJHtQTn0tbmV0Y2xpZW50ICR7UE59LW5ldHNlcnZlciAke1BOfS1udW1iZXJzICR7UE59LXBpY2tsZSAke1BOfS1wa2d1dGlsICR7UE59LXBsaXN0bGliICR7UE59LXBwcmludCAke1BOfS1wcm9maWxlICR7UE59LXB5ZG9jICR7UE59LXJlICR7UE59LXJlYWRsaW5lICR7UE59LXJlc291cmNlICR7UE59LXJvYm90cGFyc2VyICR7UE59LXNoZWxsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGVzdHMgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICR7UE59LXpsaWIgJHtQTn0tbW9kdWxlcyIKLQotU1VNTUFSWV8ke1BOfS0ydG8zPSJQeXRob24gYXV0b21hdGVkIFB5dGhvbiAyIHRvIDMgY29kZSB0cmFuc2xhdG9yIgotUkRFUEVORFNfJHtQTn0tMnRvMz0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LTJ0bzM9IiR7YmluZGlyfS8ydG8zICR7bGliZGlyfS9weXRob24yLjcvbGliMnRvMyAiCi0KLVNVTU1BUllfJHtQTn0tYXJncGFyc2U9IlB5dGhvbiBjb21tYW5kIGxpbmUgYXJndW1lbnQgcGFyc2VyIgotUkRFUEVORFNfJHtQTn0tYXJncGFyc2U9IiR7UE59LWNvcmUgJHtQTn0tY29kZWNzICR7UE59LXRleHR1dGlscyIKLUZJTEVTXyR7UE59LWFyZ3BhcnNlPSIke2xpYmRpcn0vcHl0aG9uMi43L2FyZ3BhcnNlLiogIgotCi1TVU1NQVJZXyR7UE59LWF1ZGlvPSJQeXRob24gQXVkaW8gSGFuZGxpbmciCi1SREVQRU5EU18ke1BOfS1hdWRpbz0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWF1ZGlvPSIke2xpYmRpcn0vcHl0aG9uMi43L3dhdmUuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NodW5rLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbmRoZHIuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL29zc2F1ZGlvZGV2LnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYXVkaW9vcC5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2F1ZGlvZGV2LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdW5hdWRpby4qICR7bGliZGlyfS9weXRob24yLjcvc3VuYXUuKiAke2xpYmRpcn0vcHl0aG9uMi43L3RvYWlmZi4qICIKLQotU1VNTUFSWV8ke1BOfS1ic2RkYj0iUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgQmVya2VsZXkgRGF0YWJhc2UiCi1SREVQRU5EU18ke1BOfS1ic2RkYj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWJzZGRiPSIke2xpYmRpcn0vcHl0aG9uMi43L2JzZGRiICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2JzZGRiLnNvICIKLQotU1VNTUFSWV8ke1BOfS1jb2RlY3M9IlB5dGhvbiBjb2RlY3MsIGVuY29kaW5ncyAmIGkxOG4gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWNvZGVjcz0iJHtQTn0tY29yZSAke1BOfS1sYW5nIgotRklMRVNfJHtQTn0tY29kZWNzPSIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGVjcy4qICR7bGliZGlyfS9weXRob24yLjcvZW5jb2RpbmdzICR7bGliZGlyfS9weXRob24yLjcvZ2V0dGV4dC4qICR7bGliZGlyfS9weXRob24yLjcvbG9jYWxlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbG9jYWxlLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjcyogJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbXVsdGlieXRlY29kZWMuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC91bmljb2RlZGF0YS5zbyAke2xpYmRpcn0vcHl0aG9uMi43L3N0cmluZ3ByZXAuKiAke2xpYmRpcn0vcHl0aG9uMi43L3hkcmxpYi4qICIKLQotU1VNTUFSWV8ke1BOfS1jb21waWxlPSJQeXRob24gYnl0ZWNvZGUgY29tcGlsYXRpb24gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWNvbXBpbGU9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1jb21waWxlPSIke2xpYmRpcn0vcHl0aG9uMi43L3B5X2NvbXBpbGUuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NvbXBpbGVhbGwuKiAiCi0KLVNVTU1BUllfJHtQTn0tY29tcGlsZXI9IlB5dGhvbiBjb21waWxlciBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY29tcGlsZXI9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1jb21waWxlcj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb21waWxlciAiCi0KLVNVTU1BUllfJHtQTn0tY29tcHJlc3Npb249IlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1jb21wcmVzc2lvbj0iJHtQTn0tY29yZSAke1BOfS16bGliIgotRklMRVNfJHtQTn0tY29tcHJlc3Npb249IiR7bGliZGlyfS9weXRob24yLjcvZ3ppcC4qICR7bGliZGlyfS9weXRob24yLjcvemlwZmlsZS4qICR7bGliZGlyfS9weXRob24yLjcvdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYnoyLnNvICIKLQotU1VNTUFSWV8ke1BOfS1jb250ZXh0bGliPSJQeXRob24gdXRpbGl0aWVzIGZvciB3aXRoLXN0YXRlbWVudGNvbnRleHRzLiIKLVJERVBFTkRTXyR7UE59LWNvbnRleHRsaWI9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1jb250ZXh0bGliPSIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb250ZXh0bGliLiogIgotCi1TVU1NQVJZXyR7UE59LWNvcmU9IlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tY29yZT0iJHtQTn0tbGFuZyAke1BOfS1yZSIKLUZJTEVTXyR7UE59LWNvcmU9IiR7bGliZGlyfS9weXRob24yLjcvX19mdXR1cmVfXy4qICR7bGliZGlyfS9weXRob24yLjcvX2FiY29sbC4qICR7bGliZGlyfS9weXRob24yLjcvYWJjLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9hc3QuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NvcHkuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NvcHlfcmVnLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9Db25maWdQYXJzZXIuKiAke2xpYmRpcn0vcHl0aG9uMi43L2dlbmVyaWNwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZXRvcHQuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpbmVjYWNoZS4qICR7bGliZGlyfS9weXRob24yLjcvbmV3LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9vcy4qICR7bGliZGlyfS9weXRob24yLjcvcG9zaXhwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJ1Y3QuKiAke2xpYmRpcn0vcHl0aG9uMi43L3dhcm5pbmdzLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaXRlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdGF0LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9Vc2VyRGljdC4qICR7bGliZGlyfS9weXRob24yLjcvVXNlckxpc3QuKiAke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJTdHJpbmcuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2JpbmFzY2lpLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3N0cnVjdC5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3RpbWUuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC94cmVhZGxpbmVzLnNvICR7bGliZGlyfS9weXRob24yLjcvdHlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMi43L3BsYXRmb3JtLiogJHtiaW5kaXJ9L3B5dGhvbiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9fd2Vha3JlZnNldC4qICR7bGliZGlyfS9weXRob24yLjcvc3lzY29uZmlnLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9fc3lzY29uZmlnZGF0YS4qICR7aW5jbHVkZWRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZyouaCAke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlY3VzdG9taXplLnB5ICIKLQotU1VNTUFSWV8ke1BOfS1jcnlwdD0iUHl0aG9uIGJhc2ljIGNyeXB0b2dyYXBoaWMgYW5kIGhhc2hpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWNyeXB0PSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tY3J5cHQ9IiR7bGliZGlyfS9weXRob24yLjcvaGFzaGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvbWQ1LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGEuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NyeXB0LnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2hhc2hsaWIuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc2hhMjU2LnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NoYTUxMi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tY3R5cGVzPSJQeXRob24gQyB0eXBlcyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY3R5cGVzPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tY3R5cGVzPSIke2xpYmRpcn0vcHl0aG9uMi43L2N0eXBlcyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdHlwZXMuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3R5cGVzX3Rlc3Quc28gIgotCi1TVU1NQVJZXyR7UE59LWN1cnNlcz0iUHl0aG9uIGN1cnNlcyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY3Vyc2VzPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tY3Vyc2VzPSIke2xpYmRpcn0vcHl0aG9uMi43L2N1cnNlcyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdXJzZXMuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3Vyc2VzX3BhbmVsLnNvICIKLQotU1VNTUFSWV8ke1BOfS1kYXRldGltZT0iUHl0aG9uIGNhbGVuZGFyIGFuZCB0aW1lIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1kYXRldGltZT0iJHtQTn0tY29yZSAke1BOfS1jb2RlY3MiCi1GSUxFU18ke1BOfS1kYXRldGltZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9fc3RycHRpbWUuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NhbGVuZGFyLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9kYXRldGltZS5zbyAiCi0KLVNVTU1BUllfJHtQTn0tZGI9IlB5dGhvbiBmaWxlLWJhc2VkIGRhdGFiYXNlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1kYj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWRiPSIke2xpYmRpcn0vcHl0aG9uMi43L2FueWRibS4qICR7bGliZGlyfS9weXRob24yLjcvZHVtYmRibS4qICR7bGliZGlyfS9weXRob24yLjcvd2hpY2hkYi4qICIKLQotU1VNTUFSWV8ke1BOfS1kZWJ1Z2dlcj0iUHl0aG9uIGRlYnVnZ2VyIgotUkRFUEVORFNfJHtQTn0tZGVidWdnZXI9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1yZSAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc2hlbGwgJHtQTn0tcHByaW50IgotRklMRVNfJHtQTn0tZGVidWdnZXI9IiR7bGliZGlyfS9weXRob24yLjcvYmRiLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9wZGIuKiAiCi0KLVNVTU1BUllfJHtQTn0tZGV2PSJQeXRob24gZGV2ZWxvcG1lbnQgcGFja2FnZSIKLVJERVBFTkRTXyR7UE59LWRldj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWRldj0iJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmRpcn0vKi5sYSAke2xpYmRpcn0vKi5hICR7bGliZGlyfS8qLm8gJHtsaWJkaXJ9L3BrZ2NvbmZpZyAke2Jhc2VfbGliZGlyfS8qLmEgJHtiYXNlX2xpYmRpcn0vKi5vICR7ZGF0YWRpcn0vYWNsb2NhbCAke2RhdGFkaXJ9L3BrZ2NvbmZpZyAke2xpYmRpcn0vcHl0aG9uMi43L2NvbmZpZy9NYWtlZmlsZSAiCi0KLVNVTU1BUllfJHtQTn0tZGlmZmxpYj0iUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIgotUkRFUEVORFNfJHtQTn0tZGlmZmxpYj0iJHtQTn0tbGFuZyAke1BOfS1yZSIKLUZJTEVTXyR7UE59LWRpZmZsaWI9IiR7bGliZGlyfS9weXRob24yLjcvZGlmZmxpYi4qICIKLQotU1VNTUFSWV8ke1BOfS1kaXN0dXRpbHM9IlB5dGhvbiBEaXN0cmlidXRpb24gVXRpbGl0aWVzIgotUkRFUEVORFNfJHtQTn0tZGlzdHV0aWxzPSIke1BOfS1jb3JlICR7UE59LWVtYWlsIgotRklMRVNfJHtQTn0tZGlzdHV0aWxzPSIke2xpYmRpcn0vcHl0aG9uMi43L2NvbmZpZyAke2xpYmRpcn0vcHl0aG9uMi43L2Rpc3R1dGlscyAiCi0KLVNVTU1BUllfJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2Rldj0iUHl0aG9uIGRpc3RyaWJ1dGlvbiB1dGlsaXRpZXMgKHN0YXRpYyBsaWJyYXJpZXMpIgotUkRFUEVORFNfJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2Rldj0iJHtQTn0tZGlzdHV0aWxzIgotRklMRVNfJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2Rldj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb25maWcvbGliKi5hICIKLQotU1VNTUFSWV8ke1BOfS1kb2N0ZXN0PSJQeXRob24gZnJhbWV3b3JrIGZvciBydW5uaW5nIGV4YW1wbGVzIGluIGRvY3N0cmluZ3MiCi1SREVQRU5EU18ke1BOfS1kb2N0ZXN0PSIke1BOfS1jb3JlICR7UE59LWxhbmcgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tdW5pdHRlc3QgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGlmZmxpYiIKLUZJTEVTXyR7UE59LWRvY3Rlc3Q9IiR7bGliZGlyfS9weXRob24yLjcvZG9jdGVzdC4qICIKLQotU1VNTUFSWV8ke1BOfS1lbWFpbD0iUHl0aG9uIGVtYWlsIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1lbWFpbD0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1yZSAke1BOfS1taW1lICR7UE59LWF1ZGlvICR7UE59LWltYWdlICR7UE59LW5ldGNsaWVudCIKLUZJTEVTXyR7UE59LWVtYWlsPSIke2xpYmRpcn0vcHl0aG9uMi43L2ltYXBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L2VtYWlsICIKLQotU1VNTUFSWV8ke1BOfS1mY250bD0iUHl0aG9uJ3MgZmNudGwgaW50ZXJmYWNlIgotUkRFUEVORFNfJHtQTn0tZmNudGw9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1mY250bD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9mY250bC5zbyAiCi0KLVNVTU1BUllfJHtQTn0tZ2RibT0iUHl0aG9uIEdOVSBkYXRhYmFzZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tZ2RibT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWdkYm09IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZ2RibS5zbyAiCi0KLVNVTU1BUllfJHtQTn0taG90c2hvdD0iUHl0aG9uIGhvdHNob3QgcGVyZm9ybWFuY2UgcHJvZmlsZXIiCi1SREVQRU5EU18ke1BOfS1ob3RzaG90PSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0taG90c2hvdD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9ob3RzaG90ICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2hvdHNob3Quc28gIgotCi1TVU1NQVJZXyR7UE59LWh0bWw9IlB5dGhvbiBIVE1MIHByb2Nlc3Npbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWh0bWw9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1odG1sPSIke2xpYmRpcn0vcHl0aG9uMi43L2Zvcm1hdHRlci4qICR7bGliZGlyfS9weXRob24yLjcvaHRtbGVudGl0eWRlZnMuKiAke2xpYmRpcn0vcHl0aG9uMi43L2h0bWxsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L21hcmt1cGJhc2UuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NnbWxsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L0hUTUxQYXJzZXIuKiAiCi0KLVNVTU1BUllfJHtQTn0taWRsZT0iUHl0aG9uIEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQiCi1SREVQRU5EU18ke1BOfS1pZGxlPSIke1BOfS1jb3JlICR7UE59LXRraW50ZXIiCi1GSUxFU18ke1BOfS1pZGxlPSIke2JpbmRpcn0vaWRsZSAke2xpYmRpcn0vcHl0aG9uMi43L2lkbGVsaWIgIgotCi1TVU1NQVJZXyR7UE59LWltYWdlPSJQeXRob24gZ3JhcGhpY2FsIGltYWdlIGhhbmRsaW5nIgotUkRFUEVORFNfJHtQTn0taW1hZ2U9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1pbWFnZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2xvcnN5cy4qICR7bGliZGlyfS9weXRob24yLjcvaW1naGRyLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9pbWFnZW9wLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcmdiaW1nLnNvICIKLQotU1VNTUFSWV8ke1BOfS1pbXBvcnRsaWI9IlB5dGhvbiBpbXBvcnQgaW1wbGVtZW50YXRpb24gbGlicmFyeSIKLVJERVBFTkRTXyR7UE59LWltcG9ydGxpYj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWltcG9ydGxpYj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9pbXBvcnRsaWIgIgotCi1TVU1NQVJZXyR7UE59LWlvPSJQeXRob24gbG93LWxldmVsIEkvTyIKLVJERVBFTkRTXyR7UE59LWlvPSIke1BOfS1jb3JlICR7UE59LW1hdGggJHtQTn0tdGV4dHV0aWxzICR7UE59LW5ldGNsaWVudCAke1BOfS1jb250ZXh0bGliIgotRklMRVNfJHtQTn0taW89IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NvY2tldC5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19pby5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zc2wuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zZWxlY3Quc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC90ZXJtaW9zLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvY1N0cmluZ0lPLnNvICR7bGliZGlyfS9weXRob24yLjcvcGlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NvY2tldC4qICR7bGliZGlyfS9weXRob24yLjcvc3NsLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZW1wZmlsZS4qICR7bGliZGlyfS9weXRob24yLjcvU3RyaW5nSU8uKiAke2xpYmRpcn0vcHl0aG9uMi43L2lvLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9fcHlpby4qICIKLQotU1VNTUFSWV8ke1BOfS1qc29uPSJQeXRob24gSlNPTiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tanNvbj0iJHtQTn0tY29yZSAke1BOfS1tYXRoICR7UE59LXJlICR7UE59LWNvZGVjcyIKLUZJTEVTXyR7UE59LWpzb249IiR7bGliZGlyfS9weXRob24yLjcvanNvbiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19qc29uLnNvICIKLQotU1VNTUFSWV8ke1BOfS1sYW5nPSJQeXRob24gbG93LWxldmVsIGxhbmd1YWdlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1sYW5nPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tbGFuZz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fYmlzZWN0LnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvbGxlY3Rpb25zLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2hlYXBxLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3dlYWtyZWYuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fZnVuY3Rvb2xzLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYXJyYXkuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9pdGVydG9vbHMuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9vcGVyYXRvci5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3BhcnNlci5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2F0ZXhpdC4qICR7bGliZGlyfS9weXRob24yLjcvYmlzZWN0LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2RlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2Rlb3AuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NvbGxlY3Rpb25zLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaXMuKiAke2xpYmRpcn0vcHl0aG9uMi43L2Z1bmN0b29scy4qICR7bGliZGlyfS9weXRob24yLjcvaGVhcHEuKiAke2xpYmRpcn0vcHl0aG9uMi43L2luc3BlY3QuKiAke2xpYmRpcn0vcHl0aG9uMi43L2tleXdvcmQuKiAke2xpYmRpcn0vcHl0aG9uMi43L29wY29kZS4qICR7bGliZGlyfS9weXRob24yLjcvc3ltYm9sLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZXByLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy90b2tlbi4qICR7bGliZGlyfS9weXRob24yLjcvdG9rZW5pemUuKiAke2xpYmRpcn0vcHl0aG9uMi43L3RyYWNlYmFjay4qICR7bGliZGlyfS9weXRob24yLjcvd2Vha3JlZi4qICIKLQotU1VNTUFSWV8ke1BOfS1sb2dnaW5nPSJQeXRob24gbG9nZ2luZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tbG9nZ2luZz0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LXBpY2tsZSAke1BOfS1zdHJpbmdvbGQiCi1GSUxFU18ke1BOfS1sb2dnaW5nPSIke2xpYmRpcn0vcHl0aG9uMi43L2xvZ2dpbmcgIgotCi1TVU1NQVJZXyR7UE59LW1haWxib3g9IlB5dGhvbiBtYWlsYm94IGZvcm1hdCBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tbWFpbGJveD0iJHtQTn0tY29yZSAke1BOfS1taW1lIgotRklMRVNfJHtQTn0tbWFpbGJveD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9tYWlsYm94LiogIgotCi1TVU1NQVJZXyR7UE59LW1hdGg9IlB5dGhvbiBtYXRoIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1tYXRoPSIke1BOfS1jb3JlICR7UE59LWNyeXB0IgotRklMRVNfJHtQTn0tbWF0aD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jbWF0aC5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL21hdGguc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fcmFuZG9tLnNvICR7bGliZGlyfS9weXRob24yLjcvcmFuZG9tLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zZXRzLiogIgotCi1TVU1NQVJZXyR7UE59LW1pbWU9IlB5dGhvbiBNSU1FIGhhbmRsaW5nIEFQSXMiCi1SREVQRU5EU18ke1BOfS1taW1lPSIke1BOfS1jb3JlICR7UE59LWlvIgotRklMRVNfJHtQTn0tbWltZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9taW1ldG9vbHMuKiAke2xpYmRpcn0vcHl0aG9uMi43L3V1LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9xdW9wcmkuKiAke2xpYmRpcn0vcHl0aG9uMi43L3JmYzgyMi4qICR7bGliZGlyfS9weXRob24yLjcvTWltZVdyaXRlci4qICIKLQotU1VNTUFSWV8ke1BOfS1tbWFwPSJQeXRob24gbWVtb3J5LW1hcHBlZCBmaWxlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1tbWFwPSIke1BOfS1jb3JlICR7UE59LWlvIgotRklMRVNfJHtQTn0tbW1hcD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9tbWFwLnNvICIKLQotU1VNTUFSWV8ke1BOfS1tdWx0aXByb2Nlc3Npbmc9IlB5dGhvbiBtdWx0aXByb2Nlc3Npbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LW11bHRpcHJvY2Vzc2luZz0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LXBpY2tsZSAke1BOfS10aHJlYWRpbmcgJHtQTn0tY3R5cGVzICR7UE59LW1tYXAiCi1GSUxFU18ke1BOfS1tdWx0aXByb2Nlc3Npbmc9IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX211bHRpcHJvY2Vzc2luZy5zbyAke2xpYmRpcn0vcHl0aG9uMi43L211bHRpcHJvY2Vzc2luZyAiCi0KLVNVTU1BUllfJHtQTn0tbmV0Y2xpZW50PSJQeXRob24gSW50ZXJuZXQgUHJvdG9jb2wgY2xpZW50cyIKLVJERVBFTkRTXyR7UE59LW5ldGNsaWVudD0iJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1kYXRldGltZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWltZSIKLUZJTEVTXyR7UE59LW5ldGNsaWVudD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy8qQ29va2llKi4qICR7bGliZGlyfS9weXRob24yLjcvYmFzZTY0LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb29raWVsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L2Z0cGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvZ29waGVybGliLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9obWFjLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9odHRwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9taW1ldHlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMi43L25udHBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L3BvcGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvc210cGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvdGVsbmV0bGliLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy91cmxsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L3VybGxpYjIuKiAke2xpYmRpcn0vcHl0aG9uMi43L3VybHBhcnNlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy91dWlkLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZmM4MjIuKiAke2xpYmRpcn0vcHl0aG9uMi43L21pbWV0b29scy4qICIKLQotU1VNTUFSWV8ke1BOfS1uZXRzZXJ2ZXI9IlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBzZXJ2ZXJzIgotUkRFUEVORFNfJHtQTn0tbmV0c2VydmVyPSIke1BOfS1jb3JlICR7UE59LW5ldGNsaWVudCAke1BOfS1zaGVsbCAke1BOfS10aHJlYWRpbmciCi1GSUxFU18ke1BOfS1uZXRzZXJ2ZXI9IiR7bGliZGlyfS9weXRob24yLjcvY2dpLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy8qSFRUUFNlcnZlci4qICR7bGliZGlyfS9weXRob24yLjcvU29ja2V0U2VydmVyLiogIgotCi1TVU1NQVJZXyR7UE59LW51bWJlcnM9IlB5dGhvbiBudW1iZXIgQVBJcyIKLVJERVBFTkRTXyR7UE59LW51bWJlcnM9IiR7UE59LWNvcmUgJHtQTn0tbGFuZyAke1BOfS1yZSIKLUZJTEVTXyR7UE59LW51bWJlcnM9IiR7bGliZGlyfS9weXRob24yLjcvZGVjaW1hbC4qICR7bGliZGlyfS9weXRob24yLjcvZnJhY3Rpb25zLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9udW1iZXJzLiogIgotCi1TVU1NQVJZXyR7UE59LXBpY2tsZT0iUHl0aG9uIHNlcmlhbGlzYXRpb24vcGVyc2lzdGVuY2Ugc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXBpY2tsZT0iJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0taW8gJHtQTn0tcmUiCi1GSUxFU18ke1BOfS1waWNrbGU9IiR7bGliZGlyfS9weXRob24yLjcvcGlja2xlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGVsdmUuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NQaWNrbGUuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9waWNrbGV0b29scy4qICIKLQotU1VNTUFSWV8ke1BOfS1wa2d1dGlsPSJQeXRob24gcGFja2FnZSBleHRlbnNpb24gdXRpbGl0eSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tcGtndXRpbD0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXBrZ3V0aWw9IiR7bGliZGlyfS9weXRob24yLjcvcGtndXRpbC4qICIKLQotU1VNTUFSWV8ke1BOfS1wbGlzdGxpYj0iR2VuZXJhdGUgYW5kIHBhcnNlIE1hYyBPUyBYIC5wbGlzdCBmaWxlcyIKLVJERVBFTkRTXyR7UE59LXBsaXN0bGliPSIke1BOfS1jb3JlICR7UE59LWRhdGV0aW1lICR7UE59LWlvIgotRklMRVNfJHtQTn0tcGxpc3RsaWI9IiR7bGliZGlyfS9weXRob24yLjcvcGxpc3RsaWIuKiAiCi0KLVNVTU1BUllfJHtQTn0tcHByaW50PSJQeXRob24gcHJldHR5LXByaW50IHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1wcHJpbnQ9IiR7UE59LWNvcmUgJHtQTn0taW8iCi1GSUxFU18ke1BOfS1wcHJpbnQ9IiR7bGliZGlyfS9weXRob24yLjcvcHByaW50LiogIgotCi1TVU1NQVJZXyR7UE59LXByb2ZpbGU9IlB5dGhvbiBiYXNpYyBwZXJmb3JtYW5jZSBwcm9maWxpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXByb2ZpbGU9IiR7UE59LWNvcmUgJHtQTn0tdGV4dHV0aWxzIgotRklMRVNfJHtQTn0tcHJvZmlsZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9wcm9maWxlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9wc3RhdHMuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NQcm9maWxlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbHNwcm9mLnNvICIKLQotU1VNTUFSWV8ke1BOfS1weWRvYz0iUHl0aG9uIGludGVyYWN0aXZlIGhlbHAgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXB5ZG9jPSIke1BOfS1jb3JlICR7UE59LWxhbmcgJHtQTn0tc3RyaW5nb2xkICR7UE59LXJlIgotRklMRVNfJHtQTn0tcHlkb2M9IiR7YmluZGlyfS9weWRvYyAke2xpYmRpcn0vcHl0aG9uMi43L3B5ZG9jLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9weWRvY19kYXRhICIKLQotU1VNTUFSWV8ke1BOfS1yZT0iUHl0aG9uIFJlZ3VsYXIgRXhwcmVzc2lvbiBBUElzIgotUkRFUEVORFNfJHtQTn0tcmU9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1yZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZS4qICR7bGliZGlyfS9weXRob24yLjcvc3JlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcmVfY29tcGlsZS4qICR7bGliZGlyfS9weXRob24yLjcvc3JlX2NvbnN0YW50cyogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcmVfcGFyc2UuKiAiCi0KLVNVTU1BUllfJHtQTn0tcmVhZGxpbmU9IlB5dGhvbiByZWFkbGluZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tcmVhZGxpbmU9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1yZWFkbGluZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9yZWFkbGluZS5zbyAke2xpYmRpcn0vcHl0aG9uMi43L3JsY29tcGxldGVyLiogIgotCi1TVU1NQVJZXyR7UE59LXJlc291cmNlPSJQeXRob24gcmVzb3VyY2UgY29udHJvbCBpbnRlcmZhY2UiCi1SREVQRU5EU18ke1BOfS1yZXNvdXJjZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXJlc291cmNlPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3Jlc291cmNlLnNvICIKLQotU1VNTUFSWV8ke1BOfS1yb2JvdHBhcnNlcj0iUHl0aG9uIHJvYm90cy50eHQgcGFyc2VyIgotUkRFUEVORFNfJHtQTn0tcm9ib3RwYXJzZXI9IiR7UE59LWNvcmUgJHtQTn0tbmV0Y2xpZW50IgotRklMRVNfJHtQTn0tcm9ib3RwYXJzZXI9IiR7bGliZGlyfS9weXRob24yLjcvcm9ib3RwYXJzZXIuKiAiCi0KLVNVTU1BUllfJHtQTn0tc2hlbGw9IlB5dGhvbiBzaGVsbC1saWtlIGZ1bmN0aW9uYWxpdHkiCi1SREVQRU5EU18ke1BOfS1zaGVsbD0iJHtQTn0tY29yZSAke1BOfS1yZSIKLUZJTEVTXyR7UE59LXNoZWxsPSIke2xpYmRpcn0vcHl0aG9uMi43L2NtZC4qICR7bGliZGlyfS9weXRob24yLjcvY29tbWFuZHMuKiAke2xpYmRpcn0vcHl0aG9uMi43L2RpcmNhY2hlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9mbm1hdGNoLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9nbG9iLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9wb3BlbjIuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NobGV4LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaHV0aWwuKiAiCi0KLVNVTU1BUllfJHtQTn0tc210cGQ9IlB5dGhvbiBTaW1wbGUgTWFpbCBUcmFuc3BvcnQgRGFlbW9uIgotUkRFUEVORFNfJHtQTn0tc210cGQ9IiR7UE59LWNvcmUgJHtQTn0tbmV0c2VydmVyICR7UE59LWVtYWlsICR7UE59LW1pbWUiCi1GSUxFU18ke1BOfS1zbXRwZD0iJHtiaW5kaXJ9L3NtdHBkLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbXRwZC4qICIKLQotU1VNTUFSWV8ke1BOfS1zcWxpdGUzPSJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tc3FsaXRlMz0iJHtQTn0tY29yZSAke1BOfS1kYXRldGltZSAke1BOfS1sYW5nICR7UE59LWNyeXB0ICR7UE59LWlvICR7UE59LXRocmVhZGluZyAke1BOfS16bGliIgotRklMRVNfJHtQTn0tc3FsaXRlMz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3FsaXRlMy5zbyAke2xpYmRpcn0vcHl0aG9uMi43L3NxbGl0ZTMvZGJhcGkyLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcWxpdGUzL19faW5pdF9fLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcWxpdGUzL2R1bXAuKiAiCi0KLVNVTU1BUllfJHtQTn0tc3FsaXRlMy10ZXN0cz0iUHl0aG9uIFNxbGl0ZTMgZGF0YWJhc2Ugc3VwcG9ydCB0ZXN0cyIKLVJERVBFTkRTXyR7UE59LXNxbGl0ZTMtdGVzdHM9IiR7UE59LWNvcmUgJHtQTn0tc3FsaXRlMyIKLUZJTEVTXyR7UE59LXNxbGl0ZTMtdGVzdHM9IiR7bGliZGlyfS9weXRob24yLjcvc3FsaXRlMy90ZXN0ICIKLQotU1VNTUFSWV8ke1BOfS1zdHJpbmdvbGQ9IlB5dGhvbiBzdHJpbmcgQVBJcyBbZGVwcmVjYXRlZF0iCi1SREVQRU5EU18ke1BOfS1zdHJpbmdvbGQ9IiR7UE59LWNvcmUgJHtQTn0tcmUiCi1GSUxFU18ke1BOfS1zdHJpbmdvbGQ9IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvc3Ryb3Auc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJpbmcuKiAke2xpYmRpcn0vcHl0aG9uMi43L3N0cmluZ29sZC4qICIKLQotU1VNTUFSWV8ke1BOfS1zdWJwcm9jZXNzPSJQeXRob24gc3VicHJvY2VzcyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tc3VicHJvY2Vzcz0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1yZSAke1BOfS1mY250bCAke1BOfS1waWNrbGUiCi1GSUxFU18ke1BOfS1zdWJwcm9jZXNzPSIke2xpYmRpcn0vcHl0aG9uMi43L3N1YnByb2Nlc3MuKiAiCi0KLVNVTU1BUllfJHtQTn0tc3lzbG9nPSJQeXRob24gc3lzbG9nIGludGVyZmFjZSIKLVJERVBFTkRTXyR7UE59LXN5c2xvZz0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXN5c2xvZz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zeXNsb2cuc28gIgotCi1TVU1NQVJZXyR7UE59LXRlcm1pbmFsPSJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXRlcm1pbmFsPSIke1BOfS1jb3JlICR7UE59LWlvIgotRklMRVNfJHtQTn0tdGVybWluYWw9IiR7bGliZGlyfS9weXRob24yLjcvcHR5LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy90dHkuKiAiCi0KLVNVTU1BUllfJHtQTn0tdGVzdHM9IlB5dGhvbiB0ZXN0cyIKLVJERVBFTkRTXyR7UE59LXRlc3RzPSIke1BOfS1jb3JlICR7UE59LW1vZHVsZXMiCi1GSUxFU18ke1BOfS10ZXN0cz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZXN0ICIKLQotU1VNTUFSWV8ke1BOfS10ZXh0dXRpbHM9IlB5dGhvbiBvcHRpb24gcGFyc2luZywgdGV4dCB3cmFwcGluZyBhbmQgQ1NWIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS10ZXh0dXRpbHM9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tc3RyaW5nb2xkIgotRklMRVNfJHtQTn0tdGV4dHV0aWxzPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jc3Yuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9jc3YuKiAke2xpYmRpcn0vcHl0aG9uMi43L29wdHBhcnNlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZXh0d3JhcC4qICIKLQotU1VNTUFSWV8ke1BOfS10aHJlYWRpbmc9IlB5dGhvbiB0aHJlYWRpbmcgJiBzeW5jaHJvbml6YXRpb24gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXRocmVhZGluZz0iJHtQTn0tY29yZSAke1BOfS1sYW5nIgotRklMRVNfJHtQTn0tdGhyZWFkaW5nPSIke2xpYmRpcn0vcHl0aG9uMi43L190aHJlYWRpbmdfbG9jYWwuKiAke2xpYmRpcn0vcHl0aG9uMi43L2R1bW15X3RocmVhZC4qICR7bGliZGlyfS9weXRob24yLjcvZHVtbXlfdGhyZWFkaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9tdXRleC4qICR7bGliZGlyfS9weXRob24yLjcvdGhyZWFkaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9RdWV1ZS4qICIKLQotU1VNTUFSWV8ke1BOfS10a2ludGVyPSJQeXRob24gVGNsL1RrIGJpbmRpbmdzIgotUkRFUEVORFNfJHtQTn0tdGtpbnRlcj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXRraW50ZXI9IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3RraW50ZXIuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItdGsgIgotCi1TVU1NQVJZXyR7UE59LXVuaXR0ZXN0PSJQeXRob24gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayIKLVJERVBFTkRTXyR7UE59LXVuaXR0ZXN0PSIke1BOfS1jb3JlICR7UE59LXN0cmluZ29sZCAke1BOfS1sYW5nICR7UE59LWlvICR7UE59LWRpZmZsaWIgJHtQTn0tcHByaW50ICR7UE59LXNoZWxsIgotRklMRVNfJHtQTn0tdW5pdHRlc3Q9IiR7bGliZGlyfS9weXRob24yLjcvdW5pdHRlc3QvICIKLQotU1VNTUFSWV8ke1BOfS11bml4YWRtaW49IlB5dGhvbiBVbml4IGFkbWluaXN0cmF0aW9uIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS11bml4YWRtaW49IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS11bml4YWRtaW49IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvbmlzLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZ3JwLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcHdkLnNvICR7bGliZGlyfS9weXRob24yLjcvZ2V0cGFzcy4qICIKLQotU1VNTUFSWV8ke1BOfS14bWw9IlB5dGhvbiBiYXNpYyBYTUwgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXhtbD0iJHtQTn0tY29yZSAke1BOfS1yZSIKLUZJTEVTXyR7UE59LXhtbD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fZWxlbWVudHRyZWUuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9weWV4cGF0LnNvICR7bGliZGlyfS9weXRob24yLjcveG1sICR7bGliZGlyfS9weXRob24yLjcveG1sbGliLiogIgotCi1TVU1NQVJZXyR7UE59LXhtbHJwYz0iUHl0aG9uIFhNTC1SUEMgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXhtbHJwYz0iJHtQTn0tY29yZSAke1BOfS14bWwgJHtQTn0tbmV0c2VydmVyICR7UE59LWxhbmciCi1GSUxFU18ke1BOfS14bWxycGM9IiR7bGliZGlyfS9weXRob24yLjcveG1scnBjbGliLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9TaW1wbGVYTUxSUENTZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMi43L0RvY1hNTFJQQ1NlcnZlci4qICIKLQotU1VNTUFSWV8ke1BOfS16bGliPSJQeXRob24gemxpYiBjb21wcmVzc2lvbiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0temxpYj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXpsaWI9IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvemxpYi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tbW9kdWxlcz0iQWxsIFB5dGhvbiBtb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlcz0iJHtQTn0tMnRvMyAke1BOfS1hcmdwYXJzZSAke1BOfS1hdWRpbyAke1BOfS1ic2RkYiAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21waWxlciAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb250ZXh0bGliICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taG90c2hvdCAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wbGlzdGxpYiAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXNvdXJjZSAke1BOfS1yb2JvdHBhcnNlciAke1BOfS1zaGVsbCAke1BOfS1zbXRwZCAke1BOfS1zcWxpdGUzICR7UE59LXNxbGl0ZTMtdGVzdHMgJHtQTn0tc3RyaW5nb2xkICR7UE59LXN1YnByb2Nlc3MgJHtQTn0tc3lzbG9nICR7UE59LXRlcm1pbmFsICR7UE59LXRleHR1dGlscyAke1BOfS10aHJlYWRpbmcgJHtQTn0tdGtpbnRlciAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAke1BOfS16bGliICAiCi1BTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCi0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLTMuNS1tYW5pZmVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI2MGU4Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDI4MyArMCwwIEBACi0KLSMgV0FSTklORzogVGhpcyBmaWxlIGlzIEFVVE8gR0VORVJBVEVEOiBNYW51YWwgZWRpdHMgd2lsbCBiZSBsb3N0IG5leHQgdGltZSBJIHJlZ2VuZXJhdGUgdGhlIGZpbGUuCi0jIEdlbmVyYXRvcjogJ3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMy41LnB5JyBWZXJzaW9uIDIwMTQwMTMxIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+Ci0KLSAKLQotUFJPVklERVMrPSIke1BOfS0ydG8zICR7UE59LWFyZ3BhcnNlICR7UE59LWFzeW5jaW8gJHtQTn0tYXVkaW8gJHtQTn0tY29kZWNzICR7UE59LWNvbXBpbGUgJHtQTn0tY29tcHJlc3Npb24gJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1jdHlwZXMgJHtQTn0tY3Vyc2VzICR7UE59LWRhdGV0aW1lICR7UE59LWRiICR7UE59LWRlYnVnZ2VyICR7UE59LWRldiAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kaXN0dXRpbHMtc3RhdGljZGV2ICR7UE59LWRvY3Rlc3QgJHtQTn0tZW1haWwgJHtQTn0tZW51bSAke1BOfS1mY250bCAke1BOfS1nZGJtICR7UE59LWh0bWwgJHtQTn0taWRsZSAke1BOfS1pbWFnZSAke1BOfS1pbXBvcnRsaWIgJHtQTn0taW8gJHtQTn0tanNvbiAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWFpbGJveCAke1BOfS1tYXRoICR7UE59LW1pbWUgJHtQTn0tbW1hcCAke1BOfS1tdWx0aXByb2Nlc3NpbmcgJHtQTn0tbmV0Y2xpZW50ICR7UE59LW5ldHNlcnZlciAke1BOfS1udW1iZXJzICR7UE59LXBpY2tsZSAke1BOfS1wa2d1dGlsICR7UE59LXBwcmludCAke1BOfS1wcm9maWxlICR7UE59LXB5ZG9jICR7UE59LXJlICR7UE59LXJlYWRsaW5lICR7UE59LXJlcHJsaWIgJHtQTn0tcmVzb3VyY2UgJHtQTn0tc2VsZWN0b3JzICR7UE59LXNoZWxsICR7UE59LXNpZ25hbCAke1BOfS1zbXRwZCAke1BOfS1zcWxpdGUzICR7UE59LXNxbGl0ZTMtdGVzdHMgJHtQTn0tc3RyaW5nb2xkICR7UE59LXN1YnByb2Nlc3MgJHtQTn0tc3lzbG9nICR7UE59LXRlcm1pbmFsICR7UE59LXRlc3RzICR7UE59LXRleHR1dGlscyAke1BOfS10aHJlYWRpbmcgJHtQTn0tdGtpbnRlciAke1BOfS10eXBpbmcgJHtQTn0tdW5pdHRlc3QgJHtQTn0tdW5peGFkbWluICR7UE59LXhtbCAke1BOfS14bWxycGMgIgotCi1QQUNLQUdFUz0iJHtQTn0tZGJnICR7UE59LTJ0bzMgJHtQTn0tYXJncGFyc2UgJHtQTn0tYXN5bmNpbyAke1BOfS1hdWRpbyAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWN0eXBlcyAke1BOfS1jdXJzZXMgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tZGIgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGV2ICR7UE59LWRpZmZsaWIgJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZG9jdGVzdCAke1BOfS1lbWFpbCAke1BOfS1lbnVtICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVwcmxpYiAke1BOfS1yZXNvdXJjZSAke1BOfS1zZWxlY3RvcnMgJHtQTn0tc2hlbGwgJHtQTn0tc2lnbmFsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGVzdHMgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXR5cGluZyAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAke1BOfS1tb2R1bGVzIgotCi1TVU1NQVJZXyR7UE59LTJ0bzM9IlB5dGhvbiBhdXRvbWF0ZWQgUHl0aG9uIDIgdG8gMyBjb2RlIHRyYW5zbGF0b3IiCi1SREVQRU5EU18ke1BOfS0ydG8zPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tMnRvMz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWIydG8zICR7bGliZGlyfS9weXRob24zLjUvbGliMnRvMy9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tYXJncGFyc2U9IlB5dGhvbiBjb21tYW5kIGxpbmUgYXJndW1lbnQgcGFyc2VyIgotUkRFUEVORFNfJHtQTn0tYXJncGFyc2U9IiR7UE59LWNvcmUgJHtQTn0tY29kZWNzICR7UE59LXRleHR1dGlscyIKLUZJTEVTXyR7UE59LWFyZ3BhcnNlPSIke2xpYmRpcn0vcHl0aG9uMy41L2FyZ3BhcnNlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hcmdwYXJzZS4qICIKLQotU1VNTUFSWV8ke1BOfS1hc3luY2lvPSJQeXRob24gQXN5bmNocm9ub3VzIEkvTywgZXZlbnQgbG9vcCwgY29yb3V0aW5lcyBhbmQgdGFza3MiCi1SREVQRU5EU18ke1BOfS1hc3luY2lvPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tYXN5bmNpbz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3luY2lvICR7bGliZGlyfS9weXRob24zLjUvYXN5bmNpby9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tYXVkaW89IlB5dGhvbiBBdWRpbyBIYW5kbGluZyIKLVJERVBFTkRTXyR7UE59LWF1ZGlvPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tYXVkaW89IiR7bGliZGlyfS9weXRob24zLjUvd2F2ZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vd2F2ZS4qICR7bGliZGlyfS9weXRob24zLjUvY2h1bmsuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NodW5rLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zbmRoZHIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NuZGhkci4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvb3NzYXVkaW9kZXYuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL29zc2F1ZGlvZGV2Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9hdWRpb29wLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9hdWRpb29wLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9hdWRpb2Rldi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXVkaW9kZXYuKiAke2xpYmRpcn0vcHl0aG9uMy41L3N1bmF1ZGlvLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdW5hdWRpby4qICR7bGliZGlyfS9weXRob24zLjUvc3VuYXUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N1bmF1LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90b2FpZmYuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RvYWlmZi4qICIKLQotU1VNTUFSWV8ke1BOfS1jb2RlY3M9IlB5dGhvbiBjb2RlY3MsIGVuY29kaW5ncyAmIGkxOG4gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWNvZGVjcz0iJHtQTn0tY29yZSAke1BOfS1sYW5nIgotRklMRVNfJHtQTn0tY29kZWNzPSIke2xpYmRpcn0vcHl0aG9uMy41L2NvZGVjcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29kZWNzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MgJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MvX19weWNhY2hlX18gJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZXR0ZXh0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nZXR0ZXh0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9sb2NhbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2xvY2FsZS4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2xvY2FsZS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2xvY2FsZS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2NvZGVjcyogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY29kZWNzKi9fX3B5Y2FjaGVfXyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19tdWx0aWJ5dGVjb2RlYy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX211bHRpYnl0ZWNvZGVjLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC91bmljb2RlZGF0YS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vdW5pY29kZWRhdGEuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L3N0cmluZ3ByZXAuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N0cmluZ3ByZXAuKiAke2xpYmRpcn0vcHl0aG9uMy41L3hkcmxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18veGRybGliLiogIgotCi1TVU1NQVJZXyR7UE59LWNvbXBpbGU9IlB5dGhvbiBieXRlY29kZSBjb21waWxhdGlvbiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY29tcGlsZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWNvbXBpbGU9IiR7bGliZGlyfS9weXRob24zLjUvcHlfY29tcGlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHlfY29tcGlsZS4qICR7bGliZGlyfS9weXRob24zLjUvY29tcGlsZWFsbC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29tcGlsZWFsbC4qICIKLQotU1VNTUFSWV8ke1BOfS1jb21wcmVzc2lvbj0iUHl0aG9uIGhpZ2gtbGV2ZWwgY29tcHJlc3Npb24gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWNvbXByZXNzaW9uPSIke1BOfS1jb3JlICR7UE59LWNvZGVjcyAke1BOfS1pbXBvcnRsaWIgJHtQTn0tdGhyZWFkaW5nICR7UE59LXNoZWxsIgotRklMRVNfJHtQTn0tY29tcHJlc3Npb249IiR7bGliZGlyfS9weXRob24zLjUvZ3ppcC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ3ppcC4qICR7bGliZGlyfS9weXRob24zLjUvemlwZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vemlwZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYnoyLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9iejIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3psaWIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3psaWIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2J6Mi5weSAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2J6Mi5weSAke2xpYmRpcn0vcHl0aG9uMy41L2x6bWEucHkgJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9sem1hLnB5ICR7bGliZGlyfS9weXRob24zLjUvX2NvbXByZXNzaW9uLnB5ICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2NvbXByZXNzaW9uLnB5ICIKLQotU1VNTUFSWV8ke1BOfS1jb3JlPSJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIKLVJERVBFTkRTXyR7UE59LWNvcmU9IiR7UE59LWxhbmcgJHtQTn0tcmUgJHtQTn0tcmVwcmxpYiAke1BOfS1jb2RlY3MgJHtQTn0taW8gJHtQTn0tbWF0aCIKLUZJTEVTXyR7UE59LWNvcmU9IiR7bGliZGlyfS9weXRob24zLjUvX19mdXR1cmVfXy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX19mdXR1cmVfXy4qICR7bGliZGlyfS9weXRob24zLjUvX2FiY29sbC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2FiY29sbC4qICR7bGliZGlyfS9weXRob24zLjUvYWJjLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hYmMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2FzdC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb3B5LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5cmVnLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb3B5cmVnLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWdwYXJzZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvbmZpZ3BhcnNlci4qICR7bGliZGlyfS9weXRob24zLjUvZ2VuZXJpY3BhdGguKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dlbmVyaWNwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZXRvcHQuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dldG9wdC4qICR7bGliZGlyfS9weXRob24zLjUvbGluZWNhY2hlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9saW5lY2FjaGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L25ldy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbmV3LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vb3MuKiAke2xpYmRpcn0vcHl0aG9uMy41L3Bvc2l4cGF0aC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcG9zaXhwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdHJ1Y3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N0cnVjdC4qICR7bGliZGlyfS9weXRob24zLjUvd2FybmluZ3MuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3dhcm5pbmdzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaXRlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaXRlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdGF0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdGF0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9Vc2VyRGljdC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vVXNlckRpY3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L1VzZXJMaXN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9Vc2VyTGlzdC4qICR7bGliZGlyfS9weXRob24zLjUvVXNlclN0cmluZy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vVXNlclN0cmluZy4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYmluYXNjaWkuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2JpbmFzY2lpLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3RydWN0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fc3RydWN0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC90aW1lLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy90aW1lLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC94cmVhZGxpbmVzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy94cmVhZGxpbmVzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS90eXBlcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdHlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L3BsYXRmb3JtLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wbGF0Zm9ybS4qICR7YmluZGlyfS9weXRob24qICR7bGliZGlyfS9weXRob24zLjUvX3dlYWtyZWZzZXQuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL193ZWFrcmVmc2V0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zeXNjb25maWcuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N5c2NvbmZpZy4qICR7bGliZGlyfS9weXRob24zLjUvX3N5c2NvbmZpZ2RhdGEuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19zeXNjb25maWdkYXRhLiogJHtpbmNsdWRlZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnKi5oICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbGxlY3Rpb25zICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19jb2xsZWN0aW9uc19hYmMuKiAke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc2l0ZWJ1aWx0aW5zLiogJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZWN1c3RvbWl6ZS5weSAiCi0KLVNVTU1BUllfJHtQTn0tY3J5cHQ9IlB5dGhvbiBiYXNpYyBjcnlwdG9ncmFwaGljIGFuZCBoYXNoaW5nIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1jcnlwdD0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWNyeXB0PSIke2xpYmRpcn0vcHl0aG9uMy41L2hhc2hsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2hhc2hsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L21kNS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWQ1LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaGEuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NoYS4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvY3J5cHQuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2NyeXB0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9faGFzaGxpYi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2hhc2hsaWIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zaGEyNTYuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19zaGEyNTYuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zaGE1MTIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19zaGE1MTIuKi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tY3R5cGVzPSJQeXRob24gQyB0eXBlcyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY3R5cGVzPSIke1BOfS1jb3JlICR7UE59LXN1YnByb2Nlc3MiCi1GSUxFU18ke1BOfS1jdHlwZXM9IiR7bGliZGlyfS9weXRob24zLjUvY3R5cGVzICR7bGliZGlyfS9weXRob24zLjUvY3R5cGVzL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N0eXBlcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2N0eXBlcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N0eXBlc190ZXN0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fY3R5cGVzX3Rlc3QuKi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tY3Vyc2VzPSJQeXRob24gY3Vyc2VzIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1jdXJzZXM9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1jdXJzZXM9IiR7bGliZGlyfS9weXRob24zLjUvY3Vyc2VzICR7bGliZGlyfS9weXRob24zLjUvY3Vyc2VzL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N1cnNlcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2N1cnNlcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N1cnNlc19wYW5lbC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2N1cnNlc19wYW5lbC4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1kYXRldGltZT0iUHl0aG9uIGNhbGVuZGFyIGFuZCB0aW1lIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1kYXRldGltZT0iJHtQTn0tY29yZSAke1BOfS1jb2RlY3MiCi1GSUxFU18ke1BOfS1kYXRldGltZT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9fc3RycHRpbWUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19zdHJwdGltZS4qICR7bGliZGlyfS9weXRob24zLjUvY2FsZW5kYXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NhbGVuZGFyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9kYXRldGltZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZGF0ZXRpbWUuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19kYXRldGltZS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2RhdGV0aW1lLiouc28gIgotCi1TVU1NQVJZXyR7UE59LWRiPSJQeXRob24gZmlsZS1iYXNlZCBkYXRhYmFzZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tZGI9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1kYj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9hbnlkYm0uKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2FueWRibS4qICR7bGliZGlyfS9weXRob24zLjUvZHVtYmRibS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZHVtYmRibS4qICR7bGliZGlyfS9weXRob24zLjUvd2hpY2hkYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vd2hpY2hkYi4qICR7bGliZGlyfS9weXRob24zLjUvZGJtICR7bGliZGlyfS9weXRob24zLjUvZGJtL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2RibS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2RibS4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1kZWJ1Z2dlcj0iUHl0aG9uIGRlYnVnZ2VyIgotUkRFUEVORFNfJHtQTn0tZGVidWdnZXI9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1yZSAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc2hlbGwgJHtQTn0tcHByaW50ICR7UE59LWltcG9ydGxpYiAke1BOfS1wa2d1dGlsIgotRklMRVNfJHtQTn0tZGVidWdnZXI9IiR7bGliZGlyfS9weXRob24zLjUvYmRiLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9iZGIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3BkYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGRiLiogIgotCi1TVU1NQVJZXyR7UE59LWRldj0iUHl0aG9uIGRldmVsb3BtZW50IHBhY2thZ2UiCi1SREVQRU5EU18ke1BOfS1kZXY9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1kZXY9IiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9LyoubGEgJHtsaWJkaXJ9LyouYSAke2xpYmRpcn0vKi5vICR7bGliZGlyfS9wa2djb25maWcgJHtiYXNlX2xpYmRpcn0vKi5hICR7YmFzZV9saWJkaXJ9LyoubyAke2RhdGFkaXJ9L2FjbG9jYWwgJHtkYXRhZGlyfS9wa2djb25maWcgJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcqL01ha2VmaWxlICR7bGliZGlyfS9weXRob24zLjUvY29uZmlnKi9NYWtlZmlsZS9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tZGlmZmxpYj0iUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIgotUkRFUEVORFNfJHtQTn0tZGlmZmxpYj0iJHtQTn0tbGFuZyAke1BOfS1yZSIKLUZJTEVTXyR7UE59LWRpZmZsaWI9IiR7bGliZGlyfS9weXRob24zLjUvZGlmZmxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZGlmZmxpYi4qICIKLQotU1VNTUFSWV8ke1BOfS1kaXN0dXRpbHM9IlB5dGhvbiBEaXN0cmlidXRpb24gVXRpbGl0aWVzIgotUkRFUEVORFNfJHtQTn0tZGlzdHV0aWxzPSIke1BOfS1jb3JlICR7UE59LWVtYWlsIgotRklMRVNfJHtQTn0tZGlzdHV0aWxzPSIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZyAke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZy9fX3B5Y2FjaGVfXyAke2xpYmRpcn0vcHl0aG9uMy41L2Rpc3R1dGlscyAke2xpYmRpcn0vcHl0aG9uMy41L2Rpc3R1dGlscy9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2Rldj0iUHl0aG9uIGRpc3RyaWJ1dGlvbiB1dGlsaXRpZXMgKHN0YXRpYyBsaWJyYXJpZXMpIgotUkRFUEVORFNfJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2Rldj0iJHtQTn0tZGlzdHV0aWxzIgotRklMRVNfJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2Rldj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcvbGliKi5hICR7bGliZGlyfS9weXRob24zLjUvY29uZmlnL19fcHljYWNoZV9fL2xpYiouYSAiCi0KLVNVTU1BUllfJHtQTn0tZG9jdGVzdD0iUHl0aG9uIGZyYW1ld29yayBmb3IgcnVubmluZyBleGFtcGxlcyBpbiBkb2NzdHJpbmdzIgotUkRFUEVORFNfJHtQTn0tZG9jdGVzdD0iJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LWlvICR7UE59LXJlICR7UE59LXVuaXR0ZXN0ICR7UE59LWRlYnVnZ2VyICR7UE59LWRpZmZsaWIiCi1GSUxFU18ke1BOfS1kb2N0ZXN0PSIke2xpYmRpcn0vcHl0aG9uMy41L2RvY3Rlc3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2RvY3Rlc3QuKiAiCi0KLVNVTU1BUllfJHtQTn0tZW1haWw9IlB5dGhvbiBlbWFpbCBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tZW1haWw9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tbWltZSAke1BOfS1hdWRpbyAke1BOfS1pbWFnZSAke1BOfS1uZXRjbGllbnQiCi1GSUxFU18ke1BOfS1lbWFpbD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbWFwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pbWFwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbWFpbCAke2xpYmRpcn0vcHl0aG9uMy41L2VtYWlsL19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS1lbnVtPSJQeXRob24gc3VwcG9ydCBmb3IgZW51bWVyYXRpb25zIgotUkRFUEVORFNfJHtQTn0tZW51bT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWVudW09IiR7bGliZGlyfS9weXRob24zLjUvZW51bS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZW51bS4qICIKLQotU1VNTUFSWV8ke1BOfS1mY250bD0iUHl0aG9uJ3MgZmNudGwgaW50ZXJmYWNlIgotUkRFUEVORFNfJHtQTn0tZmNudGw9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1mY250bD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9mY250bC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vZmNudGwuKi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tZ2RibT0iUHl0aG9uIEdOVSBkYXRhYmFzZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tZ2RibT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWdkYm09IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2dkYm0uKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19nZGJtLiouc28gIgotCi1TVU1NQVJZXyR7UE59LWh0bWw9IlB5dGhvbiBIVE1MIHByb2Nlc3Npbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWh0bWw9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1odG1sPSIke2xpYmRpcn0vcHl0aG9uMy41L2Zvcm1hdHRlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZm9ybWF0dGVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9odG1sZW50aXR5ZGVmcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaHRtbGVudGl0eWRlZnMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2h0bWwgJHtsaWJkaXJ9L3B5dGhvbjMuNS9odG1sL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvaHRtbGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaHRtbGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvbWFya3VwYmFzZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWFya3VwYmFzZS4qICR7bGliZGlyfS9weXRob24zLjUvc2dtbGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2dtbGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvSFRNTFBhcnNlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vSFRNTFBhcnNlci4qICIKLQotU1VNTUFSWV8ke1BOfS1pZGxlPSJQeXRob24gSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCIKLVJERVBFTkRTXyR7UE59LWlkbGU9IiR7UE59LWNvcmUgJHtQTn0tdGtpbnRlciIKLUZJTEVTXyR7UE59LWlkbGU9IiR7YmluZGlyfS9pZGxlICR7bGliZGlyfS9weXRob24zLjUvaWRsZWxpYiAke2xpYmRpcn0vcHl0aG9uMy41L2lkbGVsaWIvX19weWNhY2hlX18gIgotCi1TVU1NQVJZXyR7UE59LWltYWdlPSJQeXRob24gZ3JhcGhpY2FsIGltYWdlIGhhbmRsaW5nIgotUkRFUEVORFNfJHtQTn0taW1hZ2U9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1pbWFnZT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xvcnN5cy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29sb3JzeXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2ltZ2hkci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW1naGRyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9pbWFnZW9wLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9pbWFnZW9wLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9yZ2JpbWcuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3JnYmltZy4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1pbXBvcnRsaWI9IlB5dGhvbiBpbXBvcnQgaW1wbGVtZW50YXRpb24gbGlicmFyeSIKLVJERVBFTkRTXyR7UE59LWltcG9ydGxpYj0iJHtQTn0tY29yZSAke1BOfS1sYW5nIgotRklMRVNfJHtQTn0taW1wb3J0bGliPSIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYiAke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXyAke2xpYmRpcn0vcHl0aG9uMy41L2ltcC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW1wLiogIgotCi1TVU1NQVJZXyR7UE59LWlvPSJQeXRob24gbG93LWxldmVsIEkvTyIKLVJERVBFTkRTXyR7UE59LWlvPSIke1BOfS1jb3JlICR7UE59LW1hdGgiCi1GSUxFU18ke1BOfS1pbz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc29ja2V0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fc29ja2V0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9faW8uKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19pby4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NzbC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3NzbC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvc2VsZWN0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9zZWxlY3QuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3Rlcm1pb3MuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3Rlcm1pb3MuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2NTdHJpbmdJTy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vY1N0cmluZ0lPLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9pcGFkZHJlc3MuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2lwYWRkcmVzcy4qICR7bGliZGlyfS9weXRob24zLjUvcGlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BpcGVzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zb2NrZXQuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NvY2tldC4qICR7bGliZGlyfS9weXRob24zLjUvc3NsLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zc2wuKiAke2xpYmRpcn0vcHl0aG9uMy41L3RlbXBmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90ZW1wZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvU3RyaW5nSU8uKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL1N0cmluZ0lPLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9pby4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW8uKiAke2xpYmRpcn0vcHl0aG9uMy41L19weWlvLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fcHlpby4qICIKLQotU1VNTUFSWV8ke1BOfS1qc29uPSJQeXRob24gSlNPTiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tanNvbj0iJHtQTn0tY29yZSAke1BOfS1tYXRoICR7UE59LXJlIgotRklMRVNfJHtQTn0tanNvbj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9qc29uICR7bGliZGlyfS9weXRob24zLjUvanNvbi9fX3B5Y2FjaGVfXyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19qc29uLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fanNvbi4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1sYW5nPSJQeXRob24gbG93LWxldmVsIGxhbmd1YWdlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1sYW5nPSIke1BOfS1jb3JlICR7UE59LWltcG9ydGxpYiIKLUZJTEVTXyR7UE59LWxhbmc9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2Jpc2VjdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2Jpc2VjdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2NvbGxlY3Rpb25zLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fY29sbGVjdGlvbnMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19oZWFwcS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2hlYXBxLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fd2Vha3JlZi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3dlYWtyZWYuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19mdW5jdG9vbHMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19mdW5jdG9vbHMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2FycmF5Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9hcnJheS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvaXRlcnRvb2xzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9pdGVydG9vbHMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL29wZXJhdG9yLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9vcGVyYXRvci4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcGFyc2VyLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9wYXJzZXIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2F0ZXhpdC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXRleGl0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9iaXNlY3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Jpc2VjdC4qICR7bGliZGlyfS9weXRob24zLjUvY29kZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29kZS4qICR7bGliZGlyfS9weXRob24zLjUvY29kZW9wLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2Rlb3AuKiAke2xpYmRpcn0vcHl0aG9uMy41L2NvbGxlY3Rpb25zLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2xsZWN0aW9ucy4qICR7bGliZGlyfS9weXRob24zLjUvX2NvbGxlY3Rpb25zX2FiYy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2NvbGxlY3Rpb25zX2FiYy4qICR7bGliZGlyfS9weXRob24zLjUvY29udGV4dGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29udGV4dGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvZGlzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2Z1bmN0b29scy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZnVuY3Rvb2xzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9oZWFwcS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaGVhcHEuKiAke2xpYmRpcn0vcHl0aG9uMy41L2luc3BlY3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2luc3BlY3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L2tleXdvcmQuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2tleXdvcmQuKiAke2xpYmRpcn0vcHl0aG9uMy41L29wY29kZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vb3Bjb2RlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcGVyYXRvci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vb3BlcmF0b3IuKiAke2xpYmRpcn0vcHl0aG9uMy41L3N5bWJvbC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3ltYm9sLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZXByLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9yZXByLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90b2tlbi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdG9rZW4uKiAke2xpYmRpcn0vcHl0aG9uMy41L3Rva2VuaXplLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90b2tlbml6ZS4qICR7bGliZGlyfS9weXRob24zLjUvdHJhY2ViYWNrLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90cmFjZWJhY2suKiAke2xpYmRpcn0vcHl0aG9uMy41L3dlYWtyZWYuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3dlYWtyZWYuKiAiCi0KLVNVTU1BUllfJHtQTn0tbG9nZ2luZz0iUHl0aG9uIGxvZ2dpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWxvZ2dpbmc9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1waWNrbGUgJHtQTn0tc3RyaW5nb2xkIgotRklMRVNfJHtQTn0tbG9nZ2luZz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9sb2dnaW5nICR7bGliZGlyfS9weXRob24zLjUvbG9nZ2luZy9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tbWFpbGJveD0iUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1tYWlsYm94PSIke1BOfS1jb3JlICR7UE59LW1pbWUiCi1GSUxFU18ke1BOfS1tYWlsYm94PSIke2xpYmRpcn0vcHl0aG9uMy41L21haWxib3guKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL21haWxib3guKiAiCi0KLVNVTU1BUllfJHtQTn0tbWF0aD0iUHl0aG9uIG1hdGggc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LW1hdGg9IiR7UE59LWNvcmUgJHtQTn0tY3J5cHQiCi1GSUxFU18ke1BOfS1tYXRoPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2NtYXRoLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9jbWF0aC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvbWF0aC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vbWF0aC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3JhbmRvbS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3JhbmRvbS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvcmFuZG9tLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9yYW5kb20uKiAke2xpYmRpcn0vcHl0aG9uMy41L3NldHMuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NldHMuKiAiCi0KLVNVTU1BUllfJHtQTn0tbWltZT0iUHl0aG9uIE1JTUUgaGFuZGxpbmcgQVBJcyIKLVJERVBFTkRTXyR7UE59LW1pbWU9IiR7UE59LWNvcmUgJHtQTn0taW8iCi1GSUxFU18ke1BOfS1taW1lPSIke2xpYmRpcn0vcHl0aG9uMy41L21pbWV0b29scy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWltZXRvb2xzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS91dS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdXUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3F1b3ByaS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcXVvcHJpLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZmM4MjIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JmYzgyMi4qICR7bGliZGlyfS9weXRob24zLjUvTWltZVdyaXRlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vTWltZVdyaXRlci4qICIKLQotU1VNTUFSWV8ke1BOfS1tbWFwPSJQeXRob24gbWVtb3J5LW1hcHBlZCBmaWxlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1tbWFwPSIke1BOfS1jb3JlICR7UE59LWlvIgotRklMRVNfJHtQTn0tbW1hcD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9tbWFwLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9tbWFwLiouc28gIgotCi1TVU1NQVJZXyR7UE59LW11bHRpcHJvY2Vzc2luZz0iUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tbXVsdGlwcm9jZXNzaW5nPSIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LWxhbmcgJHtQTn0tcGlja2xlICR7UE59LXRocmVhZGluZyAke1BOfS1jdHlwZXMgJHtQTn0tbW1hcCIKLUZJTEVTXyR7UE59LW11bHRpcHJvY2Vzc2luZz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fbXVsdGlwcm9jZXNzaW5nLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fbXVsdGlwcm9jZXNzaW5nLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9tdWx0aXByb2Nlc3NpbmcgJHtsaWJkaXJ9L3B5dGhvbjMuNS9tdWx0aXByb2Nlc3NpbmcvX19weWNhY2hlX18gIgotCi1TVU1NQVJZXyR7UE59LW5ldGNsaWVudD0iUHl0aG9uIEludGVybmV0IFByb3RvY29sIGNsaWVudHMiCi1SREVQRU5EU18ke1BOfS1uZXRjbGllbnQ9IiR7UE59LWFyZ3BhcnNlICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tZGF0ZXRpbWUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1pbWUgJHtQTn0taHRtbCIKLUZJTEVTXyR7UE59LW5ldGNsaWVudD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS8qQ29va2llKi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vKkNvb2tpZSouKiAke2xpYmRpcn0vcHl0aG9uMy41L2Jhc2U2NC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYmFzZTY0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb29raWVsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Nvb2tpZWxpYi4qICR7bGliZGlyfS9weXRob24zLjUvZnRwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mdHBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L2dvcGhlcmxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ29waGVybGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9obWFjLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9obWFjLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9odHRwKiAke2xpYmRpcn0vcHl0aG9uMy41L2h0dHAqL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvaHR0cGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaHR0cGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvbWltZXR5cGVzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9taW1ldHlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L25udHBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL25udHBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3BvcGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcG9wbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zbXRwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zbXRwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZWxuZXRsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RlbG5ldGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvdXJsbGliICR7bGliZGlyfS9weXRob24zLjUvdXJsbGliL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvdXVpZC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdXVpZC4qICR7bGliZGlyfS9weXRob24zLjUvcmZjODIyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9yZmM4MjIuKiAke2xpYmRpcn0vcHl0aG9uMy41L21pbWV0b29scy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWltZXRvb2xzLiogIgotCi1TVU1NQVJZXyR7UE59LW5ldHNlcnZlcj0iUHl0aG9uIEludGVybmV0IFByb3RvY29sIHNlcnZlcnMiCi1SREVQRU5EU18ke1BOfS1uZXRzZXJ2ZXI9IiR7UE59LWNvcmUgJHtQTn0tbmV0Y2xpZW50ICR7UE59LXNoZWxsICR7UE59LXRocmVhZGluZyIKLUZJTEVTXyR7UE59LW5ldHNlcnZlcj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9jZ2kuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NnaS4qICR7bGliZGlyfS9weXRob24zLjUvc29ja2V0c2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zb2NrZXRzZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41LypIVFRQU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy8qSFRUUFNlcnZlci4qICR7bGliZGlyfS9weXRob24zLjUvU29ja2V0U2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9Tb2NrZXRTZXJ2ZXIuKiAiCi0KLVNVTU1BUllfJHtQTn0tbnVtYmVycz0iUHl0aG9uIG51bWJlciBBUElzIgotUkRFUEVORFNfJHtQTn0tbnVtYmVycz0iJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LXJlIgotRklMRVNfJHtQTn0tbnVtYmVycz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9kZWNpbWFsLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kZWNpbWFsLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9mcmFjdGlvbnMuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2ZyYWN0aW9ucy4qICR7bGliZGlyfS9weXRob24zLjUvbnVtYmVycy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbnVtYmVycy4qICIKLQotU1VNTUFSWV8ke1BOfS1waWNrbGU9IlB5dGhvbiBzZXJpYWxpc2F0aW9uL3BlcnNpc3RlbmNlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1waWNrbGU9IiR7UE59LWNvcmUgJHtQTn0tY29kZWNzICR7UE59LWlvICR7UE59LXJlIgotRklMRVNfJHtQTn0tcGlja2xlPSIke2xpYmRpcn0vcHl0aG9uMy41L19jb21wYXRfcGlja2xlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fY29tcGF0X3BpY2tsZS4qICR7bGliZGlyfS9weXRob24zLjUvcGlja2xlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9waWNrbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NoZWx2ZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2hlbHZlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9jUGlja2xlLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9jUGlja2xlLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9waWNrbGV0b29scy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGlja2xldG9vbHMuKiAiCi0KLVNVTU1BUllfJHtQTn0tcGtndXRpbD0iUHl0aG9uIHBhY2thZ2UgZXh0ZW5zaW9uIHV0aWxpdHkgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXBrZ3V0aWw9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1wa2d1dGlsPSIke2xpYmRpcn0vcHl0aG9uMy41L3BrZ3V0aWwuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BrZ3V0aWwuKiAiCi0KLVNVTU1BUllfJHtQTn0tcHByaW50PSJQeXRob24gcHJldHR5LXByaW50IHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1wcHJpbnQ9IiR7UE59LWNvcmUgJHtQTn0taW8iCi1GSUxFU18ke1BOfS1wcHJpbnQ9IiR7bGliZGlyfS9weXRob24zLjUvcHByaW50LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wcHJpbnQuKiAiCi0KLVNVTU1BUllfJHtQTn0tcHJvZmlsZT0iUHl0aG9uIGJhc2ljIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tcHJvZmlsZT0iJHtQTn0tY29yZSAke1BOfS10ZXh0dXRpbHMiCi1GSUxFU18ke1BOfS1wcm9maWxlPSIke2xpYmRpcn0vcHl0aG9uMy41L3Byb2ZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Byb2ZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3BzdGF0cy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHN0YXRzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jUHJvZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY1Byb2ZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19sc3Byb2YuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19sc3Byb2YuKi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tcHlkb2M9IlB5dGhvbiBpbnRlcmFjdGl2ZSBoZWxwIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1weWRvYz0iJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LXN0cmluZ29sZCAke1BOfS1yZSIKLUZJTEVTXyR7UE59LXB5ZG9jPSIke2JpbmRpcn0vcHlkb2MgJHtsaWJkaXJ9L3B5dGhvbjMuNS9weWRvYy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHlkb2MuKiAke2xpYmRpcn0vcHl0aG9uMy41L3B5ZG9jX2RhdGEgJHtsaWJkaXJ9L3B5dGhvbjMuNS9weWRvY19kYXRhL19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS1yZT0iUHl0aG9uIFJlZ3VsYXIgRXhwcmVzc2lvbiBBUElzIgotUkRFUEVORFNfJHtQTn0tcmU9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1yZT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NyZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfY29tcGlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlX2NvbXBpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NyZV9jb25zdGFudHMqICR7bGliZGlyfS9weXRob24zLjUvc3JlX2NvbnN0YW50cyovX19weWNhY2hlX18gJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfcGFyc2UuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NyZV9wYXJzZS4qICIKLQotU1VNTUFSWV8ke1BOfS1yZWFkbGluZT0iUHl0aG9uIHJlYWRsaW5lIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1yZWFkbGluZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXJlYWRsaW5lPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3JlYWRsaW5lLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9yZWFkbGluZS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvcmxjb21wbGV0ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JsY29tcGxldGVyLiogIgotCi1TVU1NQVJZXyR7UE59LXJlcHJsaWI9IlB5dGhvbiBhbHRlcm5hdGUgcmVwcigpIGltcGxlbWVudGF0aW9uIgotUkRFUEVORFNfJHtQTn0tcmVwcmxpYj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXJlcHJsaWI9IiR7bGliZGlyfS9weXRob24zLjUvcmVwcmxpYi5weSAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JlcHJsaWIucHkgIgotCi1TVU1NQVJZXyR7UE59LXJlc291cmNlPSJQeXRob24gcmVzb3VyY2UgY29udHJvbCBpbnRlcmZhY2UiCi1SREVQRU5EU18ke1BOfS1yZXNvdXJjZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXJlc291cmNlPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3Jlc291cmNlLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9yZXNvdXJjZS4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1zZWxlY3RvcnM9IlB5dGhvbiBIaWdoLWxldmVsIEkvTyBtdWx0aXBsZXhpbmciCi1SREVQRU5EU18ke1BOfS1zZWxlY3RvcnM9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1zZWxlY3RvcnM9IiR7bGliZGlyfS9weXRob24zLjUvc2VsZWN0b3JzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zZWxlY3RvcnMuKiAiCi0KLVNVTU1BUllfJHtQTn0tc2hlbGw9IlB5dGhvbiBzaGVsbC1saWtlIGZ1bmN0aW9uYWxpdHkiCi1SREVQRU5EU18ke1BOfS1zaGVsbD0iJHtQTn0tY29yZSAke1BOfS1yZSAke1BOfS1jb21wcmVzc2lvbiIKLUZJTEVTXyR7UE59LXNoZWxsPSIke2xpYmRpcn0vcHl0aG9uMy41L2NtZC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY21kLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb21tYW5kcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29tbWFuZHMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2RpcmNhY2hlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaXJjYWNoZS4qICR7bGliZGlyfS9weXRob24zLjUvZm5tYXRjaC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZm5tYXRjaC4qICR7bGliZGlyfS9weXRob24zLjUvZ2xvYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2xvYi4qICR7bGliZGlyfS9weXRob24zLjUvcG9wZW4yLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wb3BlbjIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NobGV4LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaGxleC4qICR7bGliZGlyfS9weXRob24zLjUvc2h1dGlsLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaHV0aWwuKiAiCi0KLVNVTU1BUllfJHtQTn0tc2lnbmFsPSJQeXRob24gc2V0IGhhbmRsZXJzIGZvciBhc3luY2hyb25vdXMgZXZlbnRzIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1zaWduYWw9IiR7UE59LWNvcmUgJHtQTn0tZW51bSIKLUZJTEVTXyR7UE59LXNpZ25hbD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaWduYWwuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NpZ25hbC4qICIKLQotU1VNTUFSWV8ke1BOfS1zbXRwZD0iUHl0aG9uIFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBEYWVtb24iCi1SREVQRU5EU18ke1BOfS1zbXRwZD0iJHtQTn0tY29yZSAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tZW1haWwgJHtQTn0tbWltZSIKLUZJTEVTXyR7UE59LXNtdHBkPSIke2JpbmRpcn0vc210cGQuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NtdHBkLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zbXRwZC4qICIKLQotU1VNTUFSWV8ke1BOfS1zcWxpdGUzPSJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tc3FsaXRlMz0iJHtQTn0tY29yZSAke1BOfS1kYXRldGltZSAke1BOfS1sYW5nICR7UE59LWNyeXB0ICR7UE59LWlvICR7UE59LXRocmVhZGluZyIKLUZJTEVTXyR7UE59LXNxbGl0ZTM9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NxbGl0ZTMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19zcWxpdGUzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL2RiYXBpMi4qICR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXy9kYmFwaTIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvX19pbml0X18uKiAke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvX19weWNhY2hlX18vX19pbml0X18uKiAke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvZHVtcC4qICR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXy9kdW1wLiogIgotCi1TVU1NQVJZXyR7UE59LXNxbGl0ZTMtdGVzdHM9IlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQgdGVzdHMiCi1SREVQRU5EU18ke1BOfS1zcWxpdGUzLXRlc3RzPSIke1BOfS1jb3JlICR7UE59LXNxbGl0ZTMiCi1GSUxFU18ke1BOfS1zcWxpdGUzLXRlc3RzPSIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvdGVzdCAke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvdGVzdC9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tc3RyaW5nb2xkPSJQeXRob24gc3RyaW5nIEFQSXMgW2RlcHJlY2F0ZWRdIgotUkRFUEVORFNfJHtQTn0tc3RyaW5nb2xkPSIke1BOfS1jb3JlICR7UE59LXJlIgotRklMRVNfJHtQTn0tc3RyaW5nb2xkPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3N0cm9wLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9zdHJvcC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvc3RyaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdHJpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L3N0cmluZ29sZC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RyaW5nb2xkLiogIgotCi1TVU1NQVJZXyR7UE59LXN1YnByb2Nlc3M9IlB5dGhvbiBzdWJwcm9jZXNzIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1zdWJwcm9jZXNzPSIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LXJlICR7UE59LWZjbnRsICR7UE59LXBpY2tsZSAke1BOfS10aHJlYWRpbmcgJHtQTn0tc2lnbmFsICR7UE59LXNlbGVjdG9ycyIKLUZJTEVTXyR7UE59LXN1YnByb2Nlc3M9IiR7bGliZGlyfS9weXRob24zLjUvc3VicHJvY2Vzcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3VicHJvY2Vzcy4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3Bvc2l4c3VicHJvY2Vzcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3Bvc2l4c3VicHJvY2Vzcy4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1zeXNsb2c9IlB5dGhvbiBzeXNsb2cgaW50ZXJmYWNlIgotUkRFUEVORFNfJHtQTn0tc3lzbG9nPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tc3lzbG9nPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3N5c2xvZy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vc3lzbG9nLiouc28gIgotCi1TVU1NQVJZXyR7UE59LXRlcm1pbmFsPSJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXRlcm1pbmFsPSIke1BOfS1jb3JlICR7UE59LWlvIgotRklMRVNfJHtQTn0tdGVybWluYWw9IiR7bGliZGlyfS9weXRob24zLjUvcHR5LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wdHkuKiAke2xpYmRpcn0vcHl0aG9uMy41L3R0eS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdHR5LiogIgotCi1TVU1NQVJZXyR7UE59LXRlc3RzPSJQeXRob24gdGVzdHMiCi1SREVQRU5EU18ke1BOfS10ZXN0cz0iJHtQTn0tY29yZSAke1BOfS1jb21wcmVzc2lvbiIKLUZJTEVTXyR7UE59LXRlc3RzPSIke2xpYmRpcn0vcHl0aG9uMy41L3Rlc3QgJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZXN0L19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS10ZXh0dXRpbHM9IlB5dGhvbiBvcHRpb24gcGFyc2luZywgdGV4dCB3cmFwcGluZyBhbmQgQ1NWIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS10ZXh0dXRpbHM9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tc3RyaW5nb2xkIgotRklMRVNfJHtQTn0tdGV4dHV0aWxzPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jc3YuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19jc3YuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2Nzdi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY3N2LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcHRwYXJzZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vb3B0cGFyc2UuKiAke2xpYmRpcn0vcHl0aG9uMy41L3RleHR3cmFwLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90ZXh0d3JhcC4qICIKLQotU1VNTUFSWV8ke1BOfS10aHJlYWRpbmc9IlB5dGhvbiB0aHJlYWRpbmcgJiBzeW5jaHJvbml6YXRpb24gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXRocmVhZGluZz0iJHtQTn0tY29yZSAke1BOfS1sYW5nIgotRklMRVNfJHtQTn0tdGhyZWFkaW5nPSIke2xpYmRpcn0vcHl0aG9uMy41L190aHJlYWRpbmdfbG9jYWwuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL190aHJlYWRpbmdfbG9jYWwuKiAke2xpYmRpcn0vcHl0aG9uMy41L2R1bW15X3RocmVhZC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZHVtbXlfdGhyZWFkLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9kdW1teV90aHJlYWRpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2R1bW15X3RocmVhZGluZy4qICR7bGliZGlyfS9weXRob24zLjUvbXV0ZXguKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL211dGV4LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90aHJlYWRpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RocmVhZGluZy4qICR7bGliZGlyfS9weXRob24zLjUvcXVldWUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3F1ZXVlLiogIgotCi1TVU1NQVJZXyR7UE59LXRraW50ZXI9IlB5dGhvbiBUY2wvVGsgYmluZGluZ3MiCi1SREVQRU5EU18ke1BOfS10a2ludGVyPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tdGtpbnRlcj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fdGtpbnRlci4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3RraW50ZXIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi10ayAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi10ay9fX3B5Y2FjaGVfXyAke2xpYmRpcn0vcHl0aG9uMy41L3RraW50ZXIgJHtsaWJkaXJ9L3B5dGhvbjMuNS90a2ludGVyL19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS10eXBpbmc9IlB5dGhvbiB0eXBpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXR5cGluZz0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXR5cGluZz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS90eXBpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3R5cGluZy4qICIKLQotU1VNTUFSWV8ke1BOfS11bml0dGVzdD0iUHl0aG9uIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsiCi1SREVQRU5EU18ke1BOfS11bml0dGVzdD0iJHtQTn0tY29yZSAke1BOfS1zdHJpbmdvbGQgJHtQTn0tbGFuZyAke1BOfS1pbyAke1BOfS1kaWZmbGliICR7UE59LXBwcmludCAke1BOfS1zaGVsbCIKLUZJTEVTXyR7UE59LXVuaXR0ZXN0PSIke2xpYmRpcn0vcHl0aG9uMy41L3VuaXR0ZXN0LyAke2xpYmRpcn0vcHl0aG9uMy41L3VuaXR0ZXN0L19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS11bml4YWRtaW49IlB5dGhvbiBVbml4IGFkbWluaXN0cmF0aW9uIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS11bml4YWRtaW49IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS11bml4YWRtaW49IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvbmlzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9uaXMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2dycC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vZ3JwLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9wd2QuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3B3ZC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvZ2V0cGFzcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2V0cGFzcy4qICIKLQotU1VNTUFSWV8ke1BOfS14bWw9IlB5dGhvbiBiYXNpYyBYTUwgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXhtbD0iJHtQTn0tY29yZSAke1BOfS1yZSIKLUZJTEVTXyR7UE59LXhtbD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZWxlbWVudHRyZWUuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19lbGVtZW50dHJlZS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcHlleHBhdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vcHlleHBhdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUveG1sICR7bGliZGlyfS9weXRob24zLjUveG1sL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUveG1sbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy94bWxsaWIuKiAiCi0KLVNVTU1BUllfJHtQTn0teG1scnBjPSJQeXRob24gWE1MLVJQQyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0teG1scnBjPSIke1BOfS1jb3JlICR7UE59LXhtbCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbGFuZyAke1BOfS1weWRvYyIKLUZJTEVTXyR7UE59LXhtbHJwYz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGNsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3htbHJwY2xpYi4qICR7bGliZGlyfS9weXRob24zLjUvU2ltcGxlWE1MUlBDU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9TaW1wbGVYTUxSUENTZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L0RvY1hNTFJQQ1NlcnZlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vRG9jWE1MUlBDU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGMgJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGMvX19weWNhY2hlX18gIgotCi1TVU1NQVJZXyR7UE59LW1vZHVsZXM9IkFsbCBQeXRob24gbW9kdWxlcyIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXM9IiR7UE59LTJ0bzMgJHtQTn0tYXJncGFyc2UgJHtQTn0tYXN5bmNpbyAke1BOfS1hdWRpbyAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWN0eXBlcyAke1BOfS1jdXJzZXMgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tZGIgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGlmZmxpYiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZG9jdGVzdCAke1BOfS1lbWFpbCAke1BOfS1lbnVtICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVwcmxpYiAke1BOfS1yZXNvdXJjZSAke1BOfS1zZWxlY3RvcnMgJHtQTn0tc2hlbGwgJHtQTn0tc2lnbmFsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXR5cGluZyAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAgIgotQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcyA9ICIxIgotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN5bmMuaW5jCmluZGV4IDJjNWNiNGQuLjY2NjRhYjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jLmluYwpAQCAtNCwxMiArNCwxMSBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PTg4ZGY4ZTc4YjllZGZkNzQ0OTUzODYyMTc5ZjJkMTRlIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvYS9hc3luYy9hc3luYy0ke1BWfS50YXIuZ3oiCitpbmhlcml0IHB5cGkKKwogU1JDX1VSSVttZDVzdW1dID0gIjliMDZiNTk5N2RlMjE1NGYzYmMwMjczZjgwYmNlZjZiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjNjg5NGQ4NzZlNDU4NzhmYWFlNDkzYjBjZjYxZDBlMjhlYzQxNzMzNDQ0OGFjMGE2ZWEyMjI5ZDgzNDMwNTEiCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2FzeW5jLyIKLQotUyA9ICIke1dPUktESVJ9L2FzeW5jLSR7UFZ9IgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS10aHJlYWRpbmciCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYwppbmRleCA3Nzc2MDhjLi44ZDM3NjkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYwpAQCAtOCwxNCArOCwyNSBAQAogTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YjhkMjZjMzdjMWQ1YTA0ZjliMDE4NmVkYmViYzE4MyIKIAotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL0cvR2l0UHl0aG9uL0dpdFB5dGhvbi0ke1BWfS50YXIuZ3oiCitQWVBJX1BBQ0tBR0UgPSAiR2l0UHl0aG9uIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZGY5NDIxMmIxOWQyNzBhNjI1YjY3YjRjODRhYzlhNDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWMwMGNiZDI1NmUyYjFkMDM5MzgxZDRmN2Q3MWZjYjdlZTVjYzE5NmNhMTBjMTAxZmY3MTkxYmQ4MmFiNWQ5YyIKK2luaGVyaXQgcHlwaQogCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9HaXRQeXRob24vIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL0dpdFB5dGhvbi8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCitTUkNfVVJJW21kNXN1bV0gPSAiN2E5NGVlMWI5MjNmYjc3MmEyYTBjNjY0OTQzMGExN2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQ2MWJjMjVkZWFkYjUzNWIwNDc2ODRkMDZmMzY1NGMwMDFkOTQxNWUxOTcxZTUxYzljMjBmNWI1MTAwNzZlOSIKIAotUyA9ICIke1dPUktESVJ9L0dpdFB5dGhvbi0ke1BWfSIKK0RFUEVORFMgPSAiJHtQWVRIT05fUE59LWdpdGRiIgogCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1naXRkYiBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1hdGggXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS11bml0dGVzdCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXVuaXhhZG1pbiBcCisgICAgICAgICAgICAgICAgICAgZ2l0IFwKKyIKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYi5pbmMKaW5kZXggMDgxOTNmYi4uMmQ1MjkyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jCkBAIC00LDEzICs0LDIxIEBACiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU5ZTVlY2IxMzMzOWE5MzZlZWRmODMyODJlYWY0NTI4IgogCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvZy9naXRkYi9naXRkYi0ke1BWfS50YXIuZ3oiCitpbmhlcml0IHB5cGkKIAotU1JDX1VSSVttZDVzdW1dID0gIjQ0ZTQzNjZiOGJkZmQzMDZiMDc1YzNhNTJjOTZhZTFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzZWJiYzI3YmUwMzVhMmU4NzRlZDkwNGRmNTE2ZTM1ZjRhMjlhNzc4YTc2NDM4NWRlMDlkZTllMGYxMzk2NTgiCitQWVBJX1BBQ0tBR0UgPSAiZ2l0ZGIyIgogCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9naXRkYi8iCitTUkNfVVJJW21kNXN1bV0gPSAiZDUyMTdlYjk0ZWJkMzZmY2VjNjJiOTI5ZDFmNzJiMDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjYwZTI5ZDQ1MzNlNWUyNWJiNTBiNzY3OGJiYzE4N2M4ZjZiY2ZmMTM0NGI0ZjI5M2IyYmE1NWM4NTc5NWYwOSIKIAotUyA9ICIke1dPUktESVJ9L2dpdGRiLSR7UFZ9IgorREVQRU5EUyA9ICIke1BZVEhPTl9QTn0tYXN5bmMgJHtQWVRIT05fUE59LXNldHVwdG9vbHMtbmF0aXZlICR7UFlUSE9OX1BOfS1zbW1hcCIKIAorUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1hc3luYyBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWNvbXByZXNzaW9uIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tY3J5cHQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1tYXAgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXNtbWFwIFwKKyIKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha28uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha28uaW5jCmluZGV4IDFjODNhZjYuLmUyNjViZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrby5pbmMKQEAgLTQsMTMgKzQsMTggQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWJiMjFmYTJkMmY3YTUzNGM4ODRiOTkwNDMwYTY4NjMiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9NL01ha28vTWFrby0ke1BWfS50YXIuZ3oiCitQWVBJX1BBQ0tBR0UgPSAiTWFrbyIKKworaW5oZXJpdCBweXBpCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI1ODM2Y2M5OTdiMWI3NzNlZjM4OWJmNjYyOWMzMGU2NSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZTAyZmRlNTdiZDRhYmI1ZWM0MDAxODFlNGMzMTRmNTZhYzNlNDliYTRmYjhiMGQ1MGJiYTE4Y2IyN2QyNWFlIgogCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9tYWtvLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9NYWtvLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1odG1sIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCiAKLVMgPSAiJHtXT1JLRElSfS9NYWtvLSR7UFZ9IgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKIAorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0yLjctbWFuaWZlc3QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0yLjctbWFuaWZlc3QuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDVhYWUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUtMi43LW1hbmlmZXN0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotCi0jIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBBVVRPIEdFTkVSQVRFRDogTWFudWFsIGVkaXRzIHdpbGwgYmUgbG9zdCBuZXh0IHRpbWUgSSByZWdlbmVyYXRlIHRoZSBmaWxlLgotIyBHZW5lcmF0b3I6ICcuLi9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTIuNy5weSAtLW5hdGl2ZScgVmVyc2lvbiAyMDExMDIyMi4yIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+Ci0KLSAKLQotUlBST1ZJREVTICs9ICJweXRob24tbW9kdWxlcy1uYXRpdmUgcHl0aG9uLTJ0bzMtbmF0aXZlIHB5dGhvbi1hcmdwYXJzZS1uYXRpdmUgcHl0aG9uLWF1ZGlvLW5hdGl2ZSBweXRob24tYnNkZGItbmF0aXZlIHB5dGhvbi1jb2RlY3MtbmF0aXZlIHB5dGhvbi1jb21waWxlLW5hdGl2ZSBweXRob24tY29tcGlsZXItbmF0aXZlIHB5dGhvbi1jb21wcmVzc2lvbi1uYXRpdmUgcHl0aG9uLWNvbnRleHRsaWItbmF0aXZlIHB5dGhvbi1jb3JlLW5hdGl2ZSBweXRob24tY3J5cHQtbmF0aXZlIHB5dGhvbi1jdHlwZXMtbmF0aXZlIHB5dGhvbi1jdXJzZXMtbmF0aXZlIHB5dGhvbi1kYXRldGltZS1uYXRpdmUgcHl0aG9uLWRiLW5hdGl2ZSBweXRob24tZGVidWdnZXItbmF0aXZlIHB5dGhvbi1kZXYtbmF0aXZlIHB5dGhvbi1kaWZmbGliLW5hdGl2ZSBweXRob24tZGlzdHV0aWxzLW5hdGl2ZSBweXRob24tZGlzdHV0aWxzLXN0YXRpY2Rldi1uYXRpdmUgcHl0aG9uLWRvY3Rlc3QtbmF0aXZlIHB5dGhvbi1lbWFpbC1uYXRpdmUgcHl0aG9uLWZjbnRsLW5hdGl2ZSBweXRob24tZ2RibS1uYXRpdmUgcHl0aG9uLWhvdHNob3QtbmF0aXZlIHB5dGhvbi1odG1sLW5hdGl2ZSBweXRob24taWRsZS1uYXRpdmUgcHl0aG9uLWltYWdlLW5hdGl2ZSBweXRob24taW1wb3J0bGliLW5hdGl2ZSBweXRob24taW8tbmF0aXZlIHB5dGhvbi1qc29uLW5hdGl2ZSBweXRob24tbGFuZy1uYXRpdmUgcHl0aG9uLWxvZ2dpbmctbmF0aXZlIHB5dGhvbi1tYWlsYm94LW5hdGl2ZSBweXRob24tbWF0aC1uYXRpdmUgcHl0aG9uLW1pbWUtbmF0aXZlIHB5dGhvbi1tbWFwLW5hdGl2ZSBweXRob24tbXVsdGlwcm9jZXNzaW5nLW5hdGl2ZSBweXRob24tbmV0Y2xpZW50LW5hdGl2ZSBweXRob24tbmV0c2VydmVyLW5hdGl2ZSBweXRob24tbnVtYmVycy1uYXRpdmUgcHl0aG9uLXBpY2tsZS1uYXRpdmUgcHl0aG9uLXBrZ3V0aWwtbmF0aXZlIHB5dGhvbi1wbGlzdGxpYi1uYXRpdmUgcHl0aG9uLXBwcmludC1uYXRpdmUgcHl0aG9uLXByb2ZpbGUtbmF0aXZlIHB5dGhvbi1weWRvYy1uYXRpdmUgcHl0aG9uLXJlLW5hdGl2ZSBweXRob24tcmVhZGxpbmUtbmF0aXZlIHB5dGhvbi1yZXNvdXJjZS1uYXRpdmUgcHl0aG9uLXJvYm90cGFyc2VyLW5hdGl2ZSBweXRob24tc2hlbGwtbmF0aXZlIHB5dGhvbi1zbXRwZC1uYXRpdmUgcHl0aG9uLXNxbGl0ZTMtbmF0aXZlIHB5dGhvbi1zcWxpdGUzLXRlc3RzLW5hdGl2ZSBweXRob24tc3RyaW5nb2xkLW5hdGl2ZSBweXRob24tc3VicHJvY2Vzcy1uYXRpdmUgcHl0aG9uLXN5c2xvZy1uYXRpdmUgcHl0aG9uLXRlcm1pbmFsLW5hdGl2ZSBweXRob24tdGVzdHMtbmF0aXZlIHB5dGhvbi10ZXh0dXRpbHMtbmF0aXZlIHB5dGhvbi10aHJlYWRpbmctbmF0aXZlIHB5dGhvbi10a2ludGVyLW5hdGl2ZSBweXRob24tdW5pdHRlc3QtbmF0aXZlIHB5dGhvbi11bml4YWRtaW4tbmF0aXZlIHB5dGhvbi14bWwtbmF0aXZlIHB5dGhvbi14bWxycGMtbmF0aXZlIHB5dGhvbi16bGliLW5hdGl2ZSIKLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTMuNS1tYW5pZmVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTMuNS1tYW5pZmVzdC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZjczMmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0zLjUtbWFuaWZlc3QuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotCi0jIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBBVVRPIEdFTkVSQVRFRDogTWFudWFsIGVkaXRzIHdpbGwgYmUgbG9zdCBuZXh0IHRpbWUgSSByZWdlbmVyYXRlIHRoZSBmaWxlLgotIyBHZW5lcmF0b3I6ICcuLi9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTMuNS5weSAtLW5hdGl2ZScgVmVyc2lvbiAyMDE0MDEzMSAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgotCi0gCi0KLVJQUk9WSURFUyArPSAicHl0aG9uMy1tb2R1bGVzLW5hdGl2ZSBweXRob24zLTJ0bzMtbmF0aXZlIHB5dGhvbjMtYXJncGFyc2UtbmF0aXZlIHB5dGhvbjMtYXN5bmNpby1uYXRpdmUgcHl0aG9uMy1hdWRpby1uYXRpdmUgcHl0aG9uMy1jb2RlY3MtbmF0aXZlIHB5dGhvbjMtY29tcGlsZS1uYXRpdmUgcHl0aG9uMy1jb21wcmVzc2lvbi1uYXRpdmUgcHl0aG9uMy1jb3JlLW5hdGl2ZSBweXRob24zLWNyeXB0LW5hdGl2ZSBweXRob24zLWN0eXBlcy1uYXRpdmUgcHl0aG9uMy1jdXJzZXMtbmF0aXZlIHB5dGhvbjMtZGF0ZXRpbWUtbmF0aXZlIHB5dGhvbjMtZGItbmF0aXZlIHB5dGhvbjMtZGVidWdnZXItbmF0aXZlIHB5dGhvbjMtZGV2LW5hdGl2ZSBweXRob24zLWRpZmZsaWItbmF0aXZlIHB5dGhvbjMtZGlzdHV0aWxzLW5hdGl2ZSBweXRob24zLWRpc3R1dGlscy1zdGF0aWNkZXYtbmF0aXZlIHB5dGhvbjMtZG9jdGVzdC1uYXRpdmUgcHl0aG9uMy1lbWFpbC1uYXRpdmUgcHl0aG9uMy1lbnVtLW5hdGl2ZSBweXRob24zLWZjbnRsLW5hdGl2ZSBweXRob24zLWdkYm0tbmF0aXZlIHB5dGhvbjMtaHRtbC1uYXRpdmUgcHl0aG9uMy1pZGxlLW5hdGl2ZSBweXRob24zLWltYWdlLW5hdGl2ZSBweXRob24zLWltcG9ydGxpYi1uYXRpdmUgcHl0aG9uMy1pby1uYXRpdmUgcHl0aG9uMy1qc29uLW5hdGl2ZSBweXRob24zLWxhbmctbmF0aXZlIHB5dGhvbjMtbG9nZ2luZy1uYXRpdmUgcHl0aG9uMy1tYWlsYm94LW5hdGl2ZSBweXRob24zLW1hdGgtbmF0aXZlIHB5dGhvbjMtbWltZS1uYXRpdmUgcHl0aG9uMy1tbWFwLW5hdGl2ZSBweXRob24zLW11bHRpcHJvY2Vzc2luZy1uYXRpdmUgcHl0aG9uMy1uZXRjbGllbnQtbmF0aXZlIHB5dGhvbjMtbmV0c2VydmVyLW5hdGl2ZSBweXRob24zLW51bWJlcnMtbmF0aXZlIHB5dGhvbjMtcGlja2xlLW5hdGl2ZSBweXRob24zLXBrZ3V0aWwtbmF0aXZlIHB5dGhvbjMtcHByaW50LW5hdGl2ZSBweXRob24zLXByb2ZpbGUtbmF0aXZlIHB5dGhvbjMtcHlkb2MtbmF0aXZlIHB5dGhvbjMtcmUtbmF0aXZlIHB5dGhvbjMtcmVhZGxpbmUtbmF0aXZlIHB5dGhvbjMtcmVwcmxpYi1uYXRpdmUgcHl0aG9uMy1yZXNvdXJjZS1uYXRpdmUgcHl0aG9uMy1zZWxlY3RvcnMtbmF0aXZlIHB5dGhvbjMtc2hlbGwtbmF0aXZlIHB5dGhvbjMtc2lnbmFsLW5hdGl2ZSBweXRob24zLXNtdHBkLW5hdGl2ZSBweXRob24zLXNxbGl0ZTMtbmF0aXZlIHB5dGhvbjMtc3FsaXRlMy10ZXN0cy1uYXRpdmUgcHl0aG9uMy1zdHJpbmdvbGQtbmF0aXZlIHB5dGhvbjMtc3VicHJvY2Vzcy1uYXRpdmUgcHl0aG9uMy1zeXNsb2ctbmF0aXZlIHB5dGhvbjMtdGVybWluYWwtbmF0aXZlIHB5dGhvbjMtdGVzdHMtbmF0aXZlIHB5dGhvbjMtdGV4dHV0aWxzLW5hdGl2ZSBweXRob24zLXRocmVhZGluZy1uYXRpdmUgcHl0aG9uMy10a2ludGVyLW5hdGl2ZSBweXRob24zLXR5cGluZy1uYXRpdmUgcHl0aG9uMy11bml0dGVzdC1uYXRpdmUgcHl0aG9uMy11bml4YWRtaW4tbmF0aXZlIHB5dGhvbjMteG1sLW5hdGl2ZSBweXRob24zLXhtbHJwYy1uYXRpdmUiCi0KLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL211bHRpbGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9tdWx0aWxpYi5wYXRjaAppbmRleCBhZDQ2MDg1Li5hZjBmMTczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL211bHRpbGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbXVsdGlsaWIucGF0Y2gKQEAgLTEyLDEwICsxMiwxMCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogCi1JbmRleDogUHl0aG9uLTIuNy4xMy9JbmNsdWRlL3B5dGhvbnJ1bi5oCitJbmRleDogUHl0aG9uLTIuNy4xNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0luY2x1ZGUvcHl0aG9ucnVuLmgKLSsrKyBQeXRob24tMi43LjEzL0luY2x1ZGUvcHl0aG9ucnVuLmgKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAorKysrIFB5dGhvbi0yLjcuMTQvSW5jbHVkZS9weXRob25ydW4uaAogQEAgLTEwOCw2ICsxMDgsNyBAQCBQeUFQSV9GVU5DKGNoYXIgKikgUHlfR2V0UGF0aCh2b2lkKTsKICAvKiBJbiB0aGVpciBvd24gZmlsZXMgKi8KICBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0VmVyc2lvbih2b2lkKTsKQEAgLTI0LDEwICsyNCwxMCBAQAogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb3B5cmlnaHQodm9pZCk7CiAgUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvbXBpbGVyKHZvaWQpOwogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRCdWlsZEluZm8odm9pZCk7Ci1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CisrKysgUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQogQEAgLTIyLDYgKzIyLDggQEAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX0JBU0UKICBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfU0lURQogIApAQCAtNDYsMTAgKzQ2LDEwIEBACiAgICAgICAgICAnaGVhZGVycyc6ICckYmFzZS9pbmNsdWRlL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0LyRkaXN0X25hbWUnLAogICAgICAgICAgJ3NjcmlwdHMnOiAnJGJhc2UvYmluJywKICAgICAgICAgICdkYXRhJyAgIDogJyRiYXNlJywKLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi9weWRvYy5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3B5ZG9jLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi9weWRvYy5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3B5ZG9jLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9weWRvYy5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL3B5ZG9jLnB5CiBAQCAtMzc1LDcgKzM3NSw3IEBAIGNsYXNzIERvYzoKICAgICAgZG9jbW9kdWxlID0gZG9jY2xhc3MgPSBkb2Nyb3V0aW5lID0gZG9jb3RoZXIgPSBkb2Nwcm9wZXJ0eSA9IGRvY2RhdGEgPSBmYWlsCiAgCkBAIC01OSwxMCArNTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIitzeXMudmVyc2lvblswOjNdKSk6CiAgICAgICAgICAiIiJSZXR1cm4gdGhlIGxvY2F0aW9uIG9mIG1vZHVsZSBkb2NzIG9yIE5vbmUiIiIKICAKLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi9zaXRlLnB5CitJbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvc2l0ZS5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvc2l0ZS5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3NpdGUucHkKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3NpdGUucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi9zaXRlLnB5CiBAQCAtMjg4LDEzICsyODgsMTkgQEAgZGVmIGdldHNpdGVwYWNrYWdlcygpOgogICAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnb3MyZW14JywgJ3Jpc2NvcycpOgogICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgIkxpYiIsICJzaXRlLXBhY2thZ2VzIikpCkBAIC04NiwxMCArODYsMTAgQEAKICAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwogIAogIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpOgotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL3Rlc3QvdGVzdF9kbC5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9kbC5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvdGVzdC90ZXN0X2RsLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvdGVzdC90ZXN0X2RsLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi90ZXN0L3Rlc3RfZGwucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi90ZXN0L3Rlc3RfZGwucHkKIEBAIC00LDEwICs0LDExIEBACiAgaW1wb3J0IHVuaXR0ZXN0CiAgZnJvbSB0ZXN0LnRlc3Rfc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgaW1wb3J0X21vZHVsZQpAQCAtMTA0LDEwICsxMDQsMTAgQEAKICAgICAgKCcvdXNyL2Jpbi9jeWd3aW4xLmRsbCcsICdnZXRwaWQnKSwKICAgICAgKCcvdXNyL2xpYi9saWJjLmR5bGliJywgJ2dldHBpZCcpLAogICAgICBdCi1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvdHJhY2UucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi90cmFjZS5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvdHJhY2UucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi90cmFjZS5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdHJhY2UucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi90cmFjZS5weQogQEAgLTc1NCwxMCArNzU0LDEwIEBAIGRlZiBtYWluKGFyZ3Y9Tm9uZSk6CiAgICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKICAKQEAgLTEyMSwxMSArMTIxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKICAgICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCi1JbmRleDogUHl0aG9uLTIuNy4xMy9NYWtlZmlsZS5wcmUuaW4KK0luZGV4OiBQeXRob24tMi43LjE0L01ha2VmaWxlLnByZS5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9NYWtlZmlsZS5wcmUuaW4KLSsrKyBQeXRob24tMi43LjEzL01ha2VmaWxlLnByZS5pbgotQEAgLTkyLDYgKzkyLDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRworLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9NYWtlZmlsZS5wcmUuaW4KKysrKyBQeXRob24tMi43LjE0L01ha2VmaWxlLnByZS5pbgorQEAgLTkxLDYgKzkxLDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRwogIAogICMgTWFjaGluZS1kZXBlbmRlbnQgc3ViZGlyZWN0b3JpZXMKICBNQUNIREVQPQlATUFDSERFUEAKQEAgLTEzMyw3ICsxMzMsNyBAQAogIAogICMgTXVsdGlhcmNoIGRpcmVjdG9yeSAobWF5IGJlIGVtcHR5KQogIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKLUBAIC0xMTEsNyArMTEyLDcgQEAgTElCRElSPQkJQGxpYmRpckAKK0BAIC0xMTAsNyArMTExLDcgQEAgTElCRElSPQkJQGxpYmRpckAKICBNQU5ESVI9CQlAbWFuZGlyQAogIElOQ0xVREVESVI9CUBpbmNsdWRlZGlyQAogIENPTkZJTkNMVURFRElSPQkkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCkBAIC0xNDIsNyArMTQyLDcgQEAKICAKICAjIERldGFpbGVkIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzCiAgQklOTElCREVTVD0JJChMSUJESVIpL3B5dGhvbiQoVkVSU0lPTikKLUBAIC02NjgsNiArNjY5LDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldAorQEAgLTY0NCw2ICs2NDUsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0CiAgCQktREVYRUNfUFJFRklYPSciJChleGVjX3ByZWZpeCkiJyBcCiAgCQktRFZFUlNJT049JyIkKFZFUlNJT04pIicgXAogIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXApAQCAtMTUwLDggKzE1MCw4IEBACiAgCQktbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMKICAKICBNb2R1bGVzL3B5dGhvbi5vOiAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYwotQEAgLTcwOCw3ICs3MTAsNyBAQCAkKEFTVF9DKTogJChBU1RfQVNETCkgJChBU0RMR0VOX0ZJTEVTKQotIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKEdSQU1NQVJfSCkgJChBU1RfSCkKK0BAIC02OTIsNyArNjk0LDcgQEAgcmVnZW4tYXN0OgorIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi1hc3QuaAogIAogIFB5dGhvbi9nZXRwbGF0Zm9ybS5vOiAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKIC0JCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtRFBMQVRGT1JNPSciJChNQUNIREVQKSInIC1vICRAICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwpAQCAtMTU5LDEwICsxNTksMTAgQEAKICAKICBQeXRob24vaW1wb3J0ZGwubzogJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCiAgCQkkKENDKSAtYyAkKFBZX0NGTEFHUykgLUkkKERMSU5DTERJUikgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCi1JbmRleDogUHl0aG9uLTIuNy4xMy9Nb2R1bGVzL2dldHBhdGguYworSW5kZXg6IFB5dGhvbi0yLjcuMTQvTW9kdWxlcy9nZXRwYXRoLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKLSsrKyBQeXRob24tMi43LjEzL01vZHVsZXMvZ2V0cGF0aC5jCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01vZHVsZXMvZ2V0cGF0aC5jCisrKysgUHl0aG9uLTIuNy4xNC9Nb2R1bGVzL2dldHBhdGguYwogQEAgLTEwMCw2ICsxMDAsMTMgQEAKICAjZXJyb3IgIlBSRUZJWCwgRVhFQ19QUkVGSVgsIFZFUlNJT04sIGFuZCBWUEFUSCBtdXN0IGJlIGNvbnN0YW50IGRlZmluZWQiCiAgI2VuZGlmCkBAIC0xODYsMTAgKzE4NiwxMCBAQAogIAogIHN0YXRpYyB2b2lkCiAgcmVkdWNlKGNoYXIgKmRpcikKLUluZGV4OiBQeXRob24tMi43LjEzL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCitJbmRleDogUHl0aG9uLTIuNy4xNC9QeXRob24vZ2V0cGxhdGZvcm0uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9QeXRob24vZ2V0cGxhdGZvcm0uYwotKysrIFB5dGhvbi0yLjcuMTMvUHl0aG9uL2dldHBsYXRmb3JtLmMKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvUHl0aG9uL2dldHBsYXRmb3JtLmMKKysrKyBQeXRob24tMi43LjE0L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCiBAQCAtMTAsMyArMTAsMTMgQEAgUHlfR2V0UGxhdGZvcm0odm9pZCkKICB7CiAgCXJldHVybiBQTEFURk9STTsKQEAgLTIwNCwxMCArMjA0LDEwIEBACiArewogKwlyZXR1cm4gTElCOwogK30KLUluZGV4OiBQeXRob24tMi43LjEzL1B5dGhvbi9zeXNtb2R1bGUuYworSW5kZXg6IFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYwotKysrIFB5dGhvbi0yLjcuMTMvUHl0aG9uL3N5c21vZHVsZS5jCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYworKysrIFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCiBAQCAtMTQzNyw2ICsxNDM3LDggQEAgX1B5U3lzX0luaXQodm9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldENvcHlyaWdodCgpKSk7CiAgICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInBsYXRmb3JtIiwKQEAgLTIxNywxMSArMjE3LDExIEBACiAgICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImV4ZWN1dGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoKCkpKTsKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygicHJlZml4IiwKLUluZGV4OiBQeXRob24tMi43LjEzL2NvbmZpZ3VyZS5hYworSW5kZXg6IFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIFB5dGhvbi0yLjcuMTMvY29uZmlndXJlLmFjCi1AQCAtNzU5LDYgKzc1OSwxMSBAQCBTdW5PUyopCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCitAQCAtNzU4LDYgKzc1OCwxMSBAQCBTdW5PUyopCiAgICAgIDs7CiAgZXNhYwogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZV8yLjcuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VkZjE1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLmluYwotCi1FWFRSQU5BVElWRVBBVEggKz0gImJ6aXAyLW5hdGl2ZSIKLURFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIHpsaWItbmF0aXZlIHJlYWRsaW5lLW5hdGl2ZSBzcWxpdGUzLW5hdGl2ZSBleHBhdC1uYXRpdmUiCi1QUiA9ICIke0lOQ19QUn0uMSIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzA1LWVuYWJsZS1jdHlwZXMtY3Jvc3MtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzEwLWRpc3R1dGlscy1maXgtc3dpZy1wYXJhbWV0ZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzExLWRpc3R1dGlscy1uZXZlci1tb2RpZnktc2hlYmFuZy1saW5lLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc3R1dGlscy1zZXQtdGhlLXByZWZpeC10by1iZS1pbnNpZGUtc3RhZ2luZy1kaXJlY3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYnVnLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ub2hvc3RsaWJzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tdWx0aWxpYi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9idWlsZGRpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0X3VzZV9vZl9zeXNjb25maWdkYXRhLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToiCi0KLWluaGVyaXQgbmF0aXZlCi0KLXJlcXVpcmUgcHl0aG9uLW5hdGl2ZS0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYwotCi1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0gLS13aXRoLXN5c3RlbS1leHBhdD0ke1NUQUdJTkdfRElSX0hPU1R9IgotCi1FWFRSQV9PRU1BS0UgPSAnXAotICBMSUJDPSIiIFwKLSAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IFwKLSAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IFwKLScKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7UE59Ci0JaW5zdGFsbCAtbSAwNzU1IFBhcnNlci9wZ2VuICR7RH0ke2JpbmRpcn0vJHtQTn0KLQotCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0JZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbwotCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbnwnICRQWVRIU0NSSVBUCi0JZG9uZQotCi0JIyBBZGQgYSBzeW1saW5rIHRvIHRoZSBuYXRpdmUgUHl0aG9uIHNvIHRoYXQgc2NyaXB0cyBjYW4ganVzdCBpbnZva2UKLQkjICJuYXRpdmVweXRob24iIGFuZCBnZXQgdGhlIHJpZ2h0IG9uZSB3aXRob3V0IG5lZWRpbmcgYWJzb2x1dGUgcGF0aHMKLQkjICh0aGVzZSBvZnRlbiBlbmQgdXAgdG9vIGxvbmcgZm9yIHRoZSAjISBwYXJzZXIgaW4gdGhlIGtlcm5lbCBhcyB0aGUKLQkjIGJ1ZmZlciBpcyAxMjggYnl0ZXMgbG9uZykuCi0JbG4gLXMgcHl0aG9uLW5hdGl2ZS9weXRob24gJHtEfSR7YmluZGlyfS9uYXRpdmVweXRob24KLQotCSMgV2UgZG9uJ3Qgd2FudCBtb2R1bGVzIGluIH4vLmxvY2FsIGJlaW5nIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZQotCSMgaW5zdGFsbGVkIGluIHRoZSBuYXRpdmUgc3lzcm9vdCwgc28gZGlzYWJsZSB1c2VyIHNpdGUgc3VwcG9ydC4KLQlzZWQgLWkgLWUgJ3MsXlwoRU5BQkxFX1VTRVJfU0lURSA9IFwpLiosXDFGYWxzZSwnICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlLnB5Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNDkxZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xNC5iYgpAQCAtMCwwICsxLDg1IEBACityZXF1aXJlIHB5dGhvbi5pbmMKK0VYVFJBTkFUSVZFUEFUSCArPSAiYnppcDItbmF0aXZlIgorREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgemxpYi1uYXRpdmUgcmVhZGxpbmUtbmF0aXZlIHNxbGl0ZTMtbmF0aXZlIGV4cGF0LW5hdGl2ZSBnZGJtLW5hdGl2ZSBkYi1uYXRpdmUiCitQUiA9ICIke0lOQ19QUn0uMSIKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzA1LWVuYWJsZS1jdHlwZXMtY3Jvc3MtYnVpbGQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzEwLWRpc3R1dGlscy1maXgtc3dpZy1wYXJhbWV0ZXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzExLWRpc3R1dGlscy1uZXZlci1tb2RpZnktc2hlYmFuZy1saW5lLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc3R1dGlscy1zZXQtdGhlLXByZWZpeC10by1iZS1pbnNpZGUtc3RhZ2luZy1kaXJlY3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2RlYnVnLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ub2hvc3RsaWJzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9tdWx0aWxpYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9idWlsZGRpci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0X3VzZV9vZl9zeXNjb25maWdkYXRhLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgorCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToiCisKK2luaGVyaXQgbmF0aXZlCisKK0VYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tYmluZGlyPSR7YmluZGlyfS8ke1BOfSAtLXdpdGgtc3lzdGVtLWV4cGF0PSR7U1RBR0lOR19ESVJfSE9TVH0iCisKK0VYVFJBX09FTUFLRSA9ICdcCisgIExJQkM9IiIgXAorICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAorICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0gXAorJworCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKK30KKworIyBSZWdlbmVyYXRlIGFsbCBvZiB0aGUgZ2VuZXJhdGVkIGZpbGVzCisjIFRoaXMgZW5zdXJlcyB0aGF0IHBnZW4gYW5kIGZyaWVuZHMgZ2V0IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb21waWxlIHBoYXNlCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgb2VfcnVubWFrZSByZWdlbi1hbGwKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vJHtQTn0KKwlpbnN0YWxsIC1tIDA3NTUgUGFyc2VyL3BnZW4gJHtEfSR7YmluZGlyfS8ke1BOfQorCisJIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KKwlmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfS8ke1BOfS9weXRob24gJHtEfSR7YmluZGlyfS8ke1BOfWA7IGRvCisJCXNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9ufCcgJFBZVEhTQ1JJUFQKKwlkb25lCisKKwkjIEFkZCBhIHN5bWxpbmsgdG8gdGhlIG5hdGl2ZSBQeXRob24gc28gdGhhdCBzY3JpcHRzIGNhbiBqdXN0IGludm9rZQorCSMgIm5hdGl2ZXB5dGhvbiIgYW5kIGdldCB0aGUgcmlnaHQgb25lIHdpdGhvdXQgbmVlZGluZyBhYnNvbHV0ZSBwYXRocworCSMgKHRoZXNlIG9mdGVuIGVuZCB1cCB0b28gbG9uZyBmb3IgdGhlICMhIHBhcnNlciBpbiB0aGUga2VybmVsIGFzIHRoZQorCSMgYnVmZmVyIGlzIDEyOCBieXRlcyBsb25nKS4KKwlsbiAtcyBweXRob24tbmF0aXZlL3B5dGhvbiAke0R9JHtiaW5kaXJ9L25hdGl2ZXB5dGhvbgorCisJIyBXZSBkb24ndCB3YW50IG1vZHVsZXMgaW4gfi8ubG9jYWwgYmVpbmcgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlCisJIyBpbnN0YWxsZWQgaW4gdGhlIG5hdGl2ZSBzeXNyb290LCBzbyBkaXNhYmxlIHVzZXIgc2l0ZSBzdXBwb3J0LgorCXNlZCAtaSAtZSAncyxeXChFTkFCTEVfVVNFUl9TSVRFID0gXCkuKixcMUZhbHNlLCcgJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGUucHkKK30KKworcHl0aG9uKCl7CisKKyAgICAjIFJlYWQgSlNPTiBtYW5pZmVzdAorICAgIGltcG9ydCBqc29uCisgICAgcHl0aG9uZGlyID0gZC5nZXRWYXIoJ1RISVNESVInLFRydWUpCisgICAgd2l0aCBvcGVuKHB5dGhvbmRpcisnL3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24nKSBhcyBtYW5pZmVzdF9maWxlOgorICAgICAgICBweXRob25fbWFuaWZlc3Q9anNvbi5sb2FkKG1hbmlmZXN0X2ZpbGUpCisKKyAgICBycHJvdmlkZXMgPSBkLmdldFZhcignUlBST1ZJREVTJykuc3BsaXQoKQorCisgICAgIyBIYXJkY29kZWQgc2luY2UgaXQgY2FudCBiZSBweXRob24tbmF0aXZlLWZvbywgc2hvdWxkIGJlIHB5dGhvbi1mb28tbmF0aXZlCisgICAgcG4gPSAncHl0aG9uJworCisgICAgZm9yIGtleSBpbiBweXRob25fbWFuaWZlc3Q6CisgICAgICAgIHB5cGFja2FnZSA9IHBuICsgJy0nICsga2V5ICsgJy1uYXRpdmUnCisgICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcnByb3ZpZGVzOgorICAgICAgICAgICAgICBycHJvdmlkZXMuYXBwZW5kKHB5cGFja2FnZSkKKworICAgIGQuc2V0VmFyKCdSUFJPVklERVMnLCAnICcuam9pbihycHJvdmlkZXMpKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2UuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZWM2OGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZS5pbmMKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJFeHRlbmRzIFB5dGhvbiB1bml0dGVzdCB0byBtYWtlIHRlc3RpbmcgZWFzaWVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3JlYWR0aGVkb2NzLm9yZy9kb2NzL25vc2UvIgorREVTQ1JJUFRJT04gPSAibm9zZSBleHRlbmRzIHRoZSB0ZXN0IGxvYWRpbmcgYW5kIHJ1bm5pbmcgZmVhdHVyZXMgb2YgdW5pdHRlc3QsIFwKK21ha2luZyBpdCBlYXNpZXIgdG8gd3JpdGUsIGZpbmQgYW5kIHJ1biB0ZXN0cy4iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9sZ3BsLnR4dDttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZDNhZDBmZjA3YjYxMzczZDJjZWZjODljNWQwYjIwYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMWJmZmVmOWNiYzgyNjI4ZjZlN2Q3YjQwZDdlMjU1YWVmYWExYWRiNmExYjFkMjZjNjlhOGI3OWU2MjA4YTk4IgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAke1BZVEhPTl9QTn0tdW5pdHRlc3QgXAorICAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ub3NlXzEuMy43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2VfMS4zLjcuYmIKaW5kZXggOWIzNTA5Yy4uNmQ2OWQyZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2VfMS4zLjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2VfMS4zLjcuYmIKQEAgLTEsMjUgKzEsMiBAQAotU1VNTUFSWSA9ICJFeHRlbmRzIFB5dGhvbiB1bml0dGVzdCB0byBtYWtlIHRlc3RpbmcgZWFzaWVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3JlYWR0aGVkb2NzLm9yZy9kb2NzL25vc2UvIgotREVTQ1JJUFRJT04gPSAibm9zZSBleHRlbmRzIHRoZSB0ZXN0IGxvYWRpbmcgYW5kIHJ1bm5pbmcgZmVhdHVyZXMgb2YgdW5pdHRlc3QsIFwKLW1ha2luZyBpdCBlYXNpZXIgdG8gd3JpdGUsIGZpbmQgYW5kIHJ1biB0ZXN0cy4iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9sZ3BsLnR4dDttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9uL25vc2Uvbm9zZS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZDNhZDBmZjA3YjYxMzczZDJjZWZjODljNWQwYjIwYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMWJmZmVmOWNiYzgyNjI4ZjZlN2Q3YjQwZDdlMjU1YWVmYWExYWRiNmExYjFkMjZjNjlhOGI3OWU2MjA4YTk4IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9ub3NlLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9ub3NlLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKLQotUyA9ICIke1dPUktESVJ9L25vc2UtJHtQVn0iCi0KIGluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbi11bml0dGVzdCBcCi0gICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorcmVxdWlyZSBweXRob24tbm9zZS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY29ucy1uYXRpdmVfMi41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnMtbmF0aXZlXzMuMC4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnMtbmF0aXZlXzIuNS4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnMtbmF0aXZlXzMuMC4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnNfMi41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnNfMi41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmNDM4NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zXzIuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJTb2Z0d2FyZSBDb25zdHJ1Y3Rpb24gdG9vbCAobWFrZS9hdXRvdG9vbHMgcmVwbGFjZW1lbnQpIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYTg4NWRmZjZkMTRlNGNkODc2ZDkwMDhhMDlhNDJkZSIKLVNSQ05BTUUgPSAic2NvbnMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9zLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzZWFjODFlNWU4MjA2MzA0YTliNDY4M2M1NzY2NWFhNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjOGRlODVmYzAyZWQxYTY4N2IxZjJhYzc5MWVhYTBjMTcwN2I0MzgyYTIwNGYxN2Q3ODJiNWIxMTFiOWZkZjA3IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9TQ29ucy8iCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICBweXRob24tZmNudGwgXAotICBweXRob24taW8gXAotICBweXRob24tanNvbiBcCi0gIHB5dGhvbi1zdWJwcm9jZXNzIFwKLSAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zXzMuMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zXzMuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MDg0YjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnNfMy4wLjEuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJTb2Z0d2FyZSBDb25zdHJ1Y3Rpb24gdG9vbCAobWFrZS9hdXRvdG9vbHMgcmVwbGFjZW1lbnQpIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT00NmRkZjY2MDA0ZTViZTU1NjYzNjdjYjUyNWE2NmZjNiIKKworU1JDX1VSSVttZDVzdW1dID0gImI2YTI5MmUyNTFiMzRiODJjMjAzYjU2Y2ZhMzk2OGIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI0NDc1ZTM4ZDM5YzE5NjgzYmM4ODA1NDUyNGRmMDE4ZmU2OTQ5ZDcwZmJkNGM2OWUyOThkMzlhMDI2OWYxNzMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc2NvbnMub3JnL3BhZ2VzL2Rvd25sb2FkLmh0bWwiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICBweXRob24tZmNudGwgXAorICBweXRob24taW8gXAorICBweXRob24tanNvbiBcCisgIHB5dGhvbi1zdWJwcm9jZXNzIFwKKyAgcHl0aG9uLXNoZWxsIFwKKyAgcHl0aG9uLXBwcmludCBcCisgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYwppbmRleCBjYTUyMWE5Li43NDcwNmJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCkBAIC01LDE3ICs1LDQ0IEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9OWEzMzg5N2YxYmNhMTE2MGQ3YWFkMzgzNTE1MmUxNTgiCiAKLVNSQ05BTUUgPSAic2V0dXB0b29scyIKK1BZUElfUEFDS0FHRV9FWFQgPSAiemlwIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2Uvcy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0uemlwIgoraW5oZXJpdCBweXBpCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiOWU2YzA0OTYxN2JhYzBmOWU5MDhhNDFhYjRhMjlhYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMGZlNWQ0MzJkOTIyZGY1OTVlOTE4NTc3YzUxNDU4ZDYzZjI0NTExNWQxNDFiMzA5YWMzMmVjZmNhMzI5ZGY1IgorU1JDX1VSSVttZDVzdW1dID0gIjM3OTY0MmE0ZjE3MjE0MDcxZmRjMTg5NDI1NWQ4ZDExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0ZGM1NjYyNDdmMzUwMDllZDQyYzBmNDQyMmYyYjRmMGEwMzJmYWIxMzcyYzgzMDhiODY0YzhmMjZkOTMzODgiCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NldHVwdG9vbHMiCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0iCitERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAiJHtQWVRIT05fUE59LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlc2RrICs9ICJuYXRpdmVzZGstJHtQWVRIT05fUE59IgogCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKK0RJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIi0taW5zdGFsbC1saWI9JHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tc2NyaXB0LWRpcj0ke2JpbmRpcn0iCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICJcCisgICR7UFlUSE9OX1BOfS1kaXN0dXRpbHMgXAorICAke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gXAorIgorUkRFUEVORFNfJHtQTn0gPSAiXAorICAke1BZVEhPTl9QTn0tY29tcGlsZSBcCisgICR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiBcCisgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAorICAke1BZVEhPTl9QTn0tZGlzdHV0aWxzIFwKKyAgJHtQWVRIT05fUE59LWVtYWlsIFwKKyAgJHtQWVRIT05fUE59LWh0bWwgXAorICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAke1BZVEhPTl9QTn0tcGtndXRpbCBcCisgICR7UFlUSE9OX1BOfS1wbGlzdGxpYiBcCisgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKKyAgJHtQWVRIT05fUE59LXhtbCBcCisiCiAKIGRvX2luc3RhbGxfcHJlcGVuZCgpIHsKICAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQogfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zNi4yLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zNi4yLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlZmFjYzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHNfMzYuMi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKLQotUFJPVklERVMgPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi0KLURFUEVORFMgKz0gInB5dGhvbiIKLURFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJweXRob24tbmF0aXZlIgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICBweXRob24tc3RyaW5nb2xkIFwKLSAgcHl0aG9uLWVtYWlsIFwKLSAgcHl0aG9uLXNoZWxsIFwKLSAgcHl0aG9uLWRpc3R1dGlscyBcCi0gIHB5dGhvbi1jb21wcmVzc2lvbiBcCi0gIHB5dGhvbi1wa2d1dGlsIFwKLSAgcHl0aG9uLXBsaXN0bGliIFwKLSAgcHl0aG9uLW51bWJlcnMgXAotICBweXRob24taHRtbCBcCi0gIHB5dGhvbi1uZXRzZXJ2ZXIgXAotICBweXRob24tY3R5cGVzIFwKLSAgcHl0aG9uLXN1YnByb2Nlc3MgXAotICBweXRob24tdW5pdHRlc3QgXAotICBweXRob24tY29tcGlsZSBcCi0iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICJcCi0gIHB5dGhvbi1kaXN0dXRpbHMgXAotICBweXRob24tY29tcHJlc3Npb24gXAotIgotCi1SUkVQTEFDRVNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi1SUFJPVklERVNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zOS4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zOS4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y5NDQwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM5LjAuMC5iYgpAQCAtMCwwICsxLDkgQEAKK3JlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCisKK1BST1ZJREVTID0gInB5dGhvbi1kaXN0cmlidXRlIgorCitpbmhlcml0IHNldHVwdG9vbHMKKworUlJFUExBQ0VTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgorUlBST1ZJREVTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgorUkNPTkZMSUNUU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMKaW5kZXggYmQxMmZhOS4uYzc3NDk4NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMKQEAgLTIsMTUgKzIsMTMgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2l4LyIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZjAwZDRhNTA3MTNmYTg1OTg1OGRkOWFiYWEzNWIyMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM1Y2VjNWJmMDRkZDA4MjBkMGExODUzM2VhN2M3NzRhIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2Uvcy9zaXgvc2l4LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzNGVlZDUwNzU0ODExN2IyYWI1MjNhYjE0YjJmOGI1NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMDVmOGQ2ODYxNmY4MjQ4ZTI0YmYwZTkzNzJlZjA0ZDNjYzEwMTA0ZjE5ODBmNTRkNTdiMmNlNzNhNWFkNTZhIgorU1JDX1VSSVttZDVzdW1dID0gImQxMjc4OWY5YmFmN2U5ZmIyNTI0YzBjNjRmMTc3M2Y4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcwZThhNzdiZWVkNDU2MmU3ZjE0ZmUyM2E3ODZiNTRmNjI5NmUzNDM0NGMyM2JjNDJmMDdiMTUwMThmZjk4ZTkiCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvc2l4Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0taW8iCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUyA9ICIke1dPUktESVJ9L3NpeC0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbW1hcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21tYXAuaW5jCmluZGV4IGQ2N2U2YjUuLjU1YWE1MTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbW1hcC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtbWFwLmluYwpAQCAtNywxMyArNywxMiBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PWU5MTBiMzViMGVmNGUxZjY2NWI5YTc1ZDZhZmI3NzA5IgogCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2Uvcy9zbW1hcC9zbW1hcC0ke1BWfS50YXIuZ3oiCitpbmhlcml0IHB5cGkKKwogU1JDX1VSSVttZDVzdW1dID0gImQ3OTMyZDVhY2UyMDZiZjRhZTE1MTk4Y2YzNmZiNmFiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlMmI2MmI0OTdiZDVmMGFmZWJjMDAyZWRhNGQ5MGRmOWQyMDljMzBlZjI1N2U4NjczYzkwYTZiNWMxMTlkNjIiCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NtbWFwLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9zbW1hcC8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCi0KLVMgPSAiJHtXT1JLRElSfS9zbW1hcC0ke1BWfSIKLQorUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb2RlY3MgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1tbWFwIFwKKyIKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKaW5kZXggYjQwZjU1MS4uOTc5YjYwMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCkBAIC01LDEyICs1LDEyIEBACiAjIGJ1bXAgdGhpcyBvbiBldmVyeSBjaGFuZ2UgaW4gY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMi43LnB5CiBJTkNfUFIgPSAicjEiCiAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZiNjAyNTgxMzBlNGVkMTBkMzEwMTUxN2ViNWI5Mzg1IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Zjc0MWU1MWRlOTFkNGVlZWE1OTMwYjljM2M3ZmE2OWQiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjUzYjQzNTM0MTUzYmIyYTAzNjNmMDhiYWU4YjlkOTkwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1ZDU0Mzk4Njg4MmY3ODI2MWY5Nzc4N2ZkM2UwNjI3NGJmYTZkZjI5ZmFjOWI0YTk0ZjczOTMwZmY5OGY3MzEiCitTUkNfVVJJW21kNXN1bV0gPSAiMWY2ZGI0MWFkOTFkOWViMGE2ZjBjNzY5Yjg2MTNjNWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzFmZmIyNmUwOWU3ODY1MGU0MjQ5MjliMmI0NTdiOWM5MTJhYzIxNjU3NmU2YmQ5ZTdkMjA0ZWQwMzI5NmE2NiIKIAogIyBweXRob24gcmVjaXBlIGlzIGFjdHVhbGx5IHB5dGhvbiAyLngKICMgYWxzbywgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2gKaW5kZXggMzY2Y2UzZS4uZTc5NWE3NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaApAQCAtOSw2ICs5LDkgQEAKIFJlYmFzZWQgZm9yIHB5dGhvbi0yLjcuOQogU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+CiAKK1JlYmFzZWQgZm9yIHB5dGhvbi0yLjcuMTQKK1NpZ25lZC1vZmYtYnk6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+CisKIEluZGV4OiBQeXRob24tMi43LjEzL01ha2VmaWxlLnByZS5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9NYWtlZmlsZS5wcmUuaW4KQEAgLTMwLDE0ICszMywxNCBAQAogIAogICMgQ3JlYXRlIGJ1aWxkIGRpcmVjdG9yeSBhbmQgZ2VuZXJhdGUgdGhlIHN5c2NvbmZpZyBidWlsZC10aW1lIGRhdGEgdGhlcmUuCiAgIyBweWJ1aWxkZGlyLnR4dCBjb250YWlucyB0aGUgbmFtZSBvZiB0aGUgYnVpbGQgZGlyIGFuZCBpcyB1c2VkIGZvcgotQEAgLTY4MSw3ICs2ODIsNyBAQCBNb2R1bGVzL3B3ZG1vZHVsZS5vOiAkKHNyY2RpcikvTW9kdWxlcy9wCi0gCi0gJChHUkFNTUFSX0gpOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOKQorQEAgLTY2Myw3ICs2NjMsNyBAQAorIAkjIFJlZ2VuZXJhdGUgSW5jbHVkZS9ncmFtaW5pdC5oIGFuZCBQeXRob24vZ3JhbWluaXQuYworIAkjIGZyb20gR3JhbW1hci9HcmFtbWFyIHVzaW5nIHBnZW4KICAJQCQoTUtESVJfUCkgSW5jbHVkZQotLQkkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotKwkkKEhPU1RQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQykKLSAkKEdSQU1NQVJfQyk6IEBHRU5FUkFURURfQ09NTUVOVEAgJChHUkFNTUFSX0gpCi0gCXRvdWNoICQoR1JBTU1BUl9DKQorLQkkKFBHRU4pICQoc3JjZGlyKS9HcmFtbWFyL0dyYW1tYXIgXAorKwkkKEhPU1RQR0VOKSAkKHNyY2RpcikvR3JhbW1hci9HcmFtbWFyIFwKKyAJCSQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggXAorIAkJJChzcmNkaXIpL1B5dGhvbi9ncmFtaW5pdC5jCiAgCiBAQCAtMTEyMSwyNyArMTEyMiwyNyBAQCBsaWJpbnN0YWxsOglidWlsZF9hbGwgJChzcmNkaXIpL0xpYi8kKFBMCiAgCQkJJChERVNURElSKSQoTElCREVTVCkvZGlzdHV0aWxzL3Rlc3RzIDsgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL0Rvbi10LXVzZS1nZXRlbnRyb3B5LW9uLUxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL0Rvbi10LXVzZS1nZXRlbnRyb3B5LW9uLUxpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGU1Mzc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9Eb24tdC11c2UtZ2V0ZW50cm9weS1vbi1MaW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBPYmVycml0dGVyIDxvYmlAb3BlbmRyZWFtYm94Lm9yZz4KLQotRnJvbSA5MDVkMWIzMGFjN2NiMGUzMWM1N2NlYzA1MzM4MjVjOGYxNzBiOTQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmljdG9yIFN0aW5uZXIgPHZpY3Rvci5zdGlubmVyQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgOSBKYW4gMjAxNyAxMToxMDo0MSArMDEwMAotU3ViamVjdDogW1BBVENIXSBEb24ndCB1c2UgZ2V0ZW50cm9weSgpIG9uIExpbnV4Ci0KLUlzc3VlICMyOTE4ODogU3VwcG9ydCBnbGliYyAyLjI0IG9uIExpbnV4OiBkb24ndCB1c2UgZ2V0ZW50cm9weSgpIGZ1bmN0aW9uIGJ1dAotcmVhZCBmcm9tIC9kZXYvdXJhbmRvbSB0byBnZXQgcmFuZG9tIGJ5dGVzLCBmb3IgZXhhbXBsZSBpbiBvcy51cmFuZG9tKCkuICBPbgotTGludXgsIGdldGVudHJvcHkoKSBpcyBpbXBsZW1lbnRlZCB3aGljaCBnZXRyYW5kb20oKSBpcyBibG9ja2luZyBtb2RlLCB3aGVyZWFzCi1vcy51cmFuZG9tKCkgc2hvdWxkIG5vdCBibG9jay4KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMjY4NzQ4Njc1NjcyMWUzOTE2NGZhOWY1OTdlNDY4YzM1ZDQ5NTIyNykKLS0tLQotIFB5dGhvbi9yYW5kb20uYyB8IDExICsrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwotaW5kZXggYjRiYzFmMy4uZjNmNWQxNCAxMDA2NDQKLS0tLSBhL1B5dGhvbi9yYW5kb20uYwotKysrIGIvUHl0aG9uL3JhbmRvbS5jCi1AQCAtOTQsOCArOTQsMTUgQEAgd2luMzJfdXJhbmRvbSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotIH0KLSAKLSAvKiBJc3N1ZSAjMjUwMDM6IERvbid0IHVzZSBnZXRlbnRyb3B5KCkgb24gU29sYXJpcyAoYXZhaWxhYmxlIHNpbmNlCi0tICogU29sYXJpcyAxMS4zKSwgaXQgaXMgYmxvY2tpbmcgd2hlcmVhcyBvcy51cmFuZG9tKCkgc2hvdWxkIG5vdCBibG9jay4gKi8KLS0jZWxpZiBkZWZpbmVkKEhBVkVfR0VURU5UUk9QWSkgJiYgIWRlZmluZWQoc3VuKQotKyAgIFNvbGFyaXMgMTEuMyksIGl0IGlzIGJsb2NraW5nIHdoZXJlYXMgb3MudXJhbmRvbSgpIHNob3VsZCBub3QgYmxvY2suCi0rCi0rICAgSXNzdWUgIzI5MTg4OiBEb24ndCB1c2UgZ2V0ZW50cm9weSgpIG9uIExpbnV4IHNpbmNlIHRoZSBnbGliYyAyLjI0Ci0rICAgaW1wbGVtZW50cyBpdCB3aXRoIHRoZSBnZXRyYW5kb20oKSBzeXNjYWxsIHdoaWNoIGNhbiBmYWlsIHdpdGggRU5PU1lTLAotKyAgIGFuZCB0aGlzIGVycm9yIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHlfZ2V0ZW50cm9weSgpIGFuZCBnZXRyYW5kb20oKSBpcyBjYWxsZWQKLSsgICB3aXRoIGZsYWdzPTAgd2hpY2ggYmxvY2tzIHVudGlsIHN5c3RlbSB1cmFuZG9tIGlzIGluaXRpYWxpemVkLCB3aGljaCBpcyBub3QKLSsgICB0aGUgZGVzaXJlZCBiZWhhdmlvdXIgdG8gc2VlZCB0aGUgUHl0aG9uIGhhc2ggc2VjcmV0IG5vciBmb3Igb3MudXJhbmRvbSgpOgotKyAgIHNlZSB0aGUgUEVQIDUyNCB3aGljaCB3YXMgb25seSBpbXBsZW1lbnRlZCBpbiBQeXRob24gMy42LiAqLwotKyNlbGlmIGRlZmluZWQoSEFWRV9HRVRFTlRST1BZKSAmJiAhZGVmaW5lZChzdW4pICYmICFkZWZpbmVkKGxpbnV4KQotICNkZWZpbmUgUFlfR0VURU5UUk9QWSAxCi0gCi0gLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZ2VuZXJhdGVkIGJ5IGdldGVudHJvcHkoKS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hZGQtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKaW5kZXggYTk3ZmY2Yi4uMzI5NzM0MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKQEAgLTEzLDExICsxMywxMSBAQAogIGNvbmZpZ3VyZS5hYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IFB5dGhvbi0yLjcuMTEvY29uZmlndXJlLmFjCitJbmRleDogUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjExLm9yaWcvY29uZmlndXJlLmFjCi0rKysgUHl0aG9uLTIuNy4xMS9jb25maWd1cmUuYWMKLUBAIC0zMyw3ICszMyw3IEBAIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCitAQCAtMzYsNyArMzYsNyBAQCBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogIAkgICAgQUNfTVNHX0VSUk9SKFtweXRob24kUEFDS0FHRV9WRVJTSU9OIGludGVycHJldGVyIG5vdCBmb3VuZF0pCiAgCWZpCiAgICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAppbmRleCAzMzQ3MzIxLi4yODcwOTVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gKQEAgLTcsMTMgKzcsMTYgQEAKIEFsc28gc2ltcGx5IGRpc2FibGUgdGhlIHRrIG1vZHVsZSBzaW5jZSBpdHMgbm90IGluIERFUEVORFMuCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CiAKLUluZGV4OiBQeXRob24tMi43LjIvc2V0dXAucHkKK0luZGV4OiBQeXRob24tMi43LjEzL3NldHVwLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4yLm9yaWcvc2V0dXAucHkJMjAxMi0wNC0wNSAyMzoxODozOC41MDAxMzY2NDcgKzAzMDAKLSsrKyBQeXRob24tMi43LjIvc2V0dXAucHkJMjAxMi0wNC0wNSAyMzoxOTozNS44ODgxMzQ5NjkgKzAzMDAKLUBAIC0xNjM0LDggKzE2MzQsMTAgQEAKKy0tLSBQeXRob24tMi43LjEzLm9yaWcvc2V0dXAucHkKKysrKyBQeXRob24tMi43LjEzL3NldHVwLnB5CitAQCAtMTc4MywxMCArMTc4MywxMiBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICBzZWxmLmV4dGVuc2lvbnMuZXh0ZW5kKGV4dHMpCisgCiAgICAgICAgICAjIENhbGwgdGhlIG1ldGhvZCBmb3IgZGV0ZWN0aW5nIHdoZXRoZXIgX3RraW50ZXIgY2FuIGJlIGNvbXBpbGVkCi0gICAgICAgICBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKKy0gICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQorKyAgICAgICAgIyBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKICAKIC0gICAgICAgIGlmICdfdGtpbnRlcicgbm90IGluIFtlLm5hbWUgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXToKIC0gICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX3RraW50ZXInKQpAQCAtMjIsMTggKzI1LDUgQEAKICsgICAgICAgICNpZiAnX3RraW50ZXInIG5vdCBpbiBbZS5uYW1lIGZvciBlIGluIHNlbGYuZXh0ZW5zaW9uc106CiArICAgICAgICAjICAgIG1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCiAgCi0gICAgICAgICByZXR1cm4gbWlzc2luZwotIAotZGlmZiAtLWdpdCBQeXRob24tMy41LjEub3JpZy9zZXR1cC5weSBQeXRob24tMy41LjEvc2V0dXAucHkKLWluZGV4IGI0NjMzYjkuLmQ3NTg4YzAgMTAwNjQ0Ci0tLS0gUHl0aG9uLTMuNS4xLm9yaWcvc2V0dXAucHkKLSsrKyBQeXRob24tMy41LjEvc2V0dXAucHkKLUBAIC0xNTM2LDcgKzE1MzYsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBzZWxmLmV4dGVuc2lvbnMuZXh0ZW5kKGV4dHMpCi0gCi0gICAgICAgICAjIENhbGwgdGhlIG1ldGhvZCBmb3IgZGV0ZWN0aW5nIHdoZXRoZXIgX3RraW50ZXIgY2FuIGJlIGNvbXBpbGVkCi0tICAgICAgICBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKLSsgICAgICAgICMgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCi0gCi0gICAgICAgICAjIHRraW50ZXIgbW9kdWxlIHdpbGwgbm90IGJlIGF2YWxhaWJsZSBhcyB5b2N0bwotICAgICAgICAgIyBkb2Vzbid0IGhhdmUgdGsgaW50ZWdyYXRlZCAoeWV0KQorICMjICAgICAgICAgIyBVbmNvbW1lbnQgdGhlc2UgbGluZXMgaWYgeW91IHdhbnQgdG8gcGxheSB3aXRoIHh4bW9kdWxlLmMKKyAjIyAgICAgICAgIGV4dCA9IEV4dGVuc2lvbigneHgnLCBbJ3h4bW9kdWxlLmMnXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19mb3Jfc3Vub3Nfc3BlY2lmaWNfbW9kdWxlLnBhdGNoCmluZGV4IDMzN2UwZTMuLjhiYTU4MjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfZm9yX3N1bm9zX3NwZWNpZmljX21vZHVsZS5wYXRjaApAQCAtNSwxMiArNSwxMiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CiAKLUluZGV4OiBQeXRob24tMi43LjIvc2V0dXAucHkKK0luZGV4OiBQeXRob24tMi43LjEzL3NldHVwLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4yLm9yaWcvc2V0dXAucHkJMjAxMi0wNC0wNSAyMjoyOToxOC4wNDkxOTY2MDggKzAzMDAKLSsrKyBQeXRob24tMi43LjIvc2V0dXAucHkJMjAxMi0wNC0wNSAyMjoyOTo1Ny41MDUxOTU0NTMgKzAzMDAKLUBAIC0xNTIyLDggKzE1MjIsOSBAQAotICAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3N1bm9zNSc6CistLS0gUHl0aG9uLTIuNy4xMy5vcmlnL3NldHVwLnB5CisrKysgUHl0aG9uLTIuNy4xMy9zZXR1cC5weQorQEAgLTE2NzEsOCArMTY3MSw5IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKKyAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ3N1bm9zNSc6CiAgICAgICAgICAgICAgIyBTdW5PUyBzcGVjaWZpYyBtb2R1bGVzCiAgICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignc3VuYXVkaW9kZXYnLCBbJ3N1bmF1ZGlvZGV2LmMnXSkgKQogLSAgICAgICAgZWxzZToKQEAgLTE5LDUgKzE5LDUgQEAKICsgICAgICAgICNlbHNlOgogKyAgICAgICAgIyAgICBtaXNzaW5nLmFwcGVuZCgnc3VuYXVkaW9kZXYnKQogIAotICAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgICMgX3NjcHJveHkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jcmVhdGVfbWFuaWZlc3QyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NyZWF0ZV9tYW5pZmVzdDIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc0NTA0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jcmVhdGVfbWFuaWZlc3QyLnB5CkBAIC0wLDAgKzEsMjc3IEBACisjIFRoaXMgc2NyaXB0IGlzIHVzZWQgYXMgYSBiaXRiYWtlIHRhc2sgdG8gY3JlYXRlIGEgbmV3IHB5dGhvbiBtYW5pZmVzdAorIyAkIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdAorIworIyBPdXIgZ29hbCBpcyB0byBrZWVwIHB5dGhvbi1jb3JlIGFzIHNtYWxsIGFzIHBvc2libGUgYW5kIGFkZCBvdGhlciBweXRob24KKyMgcGFja2FnZXMgb25seSB3aGVuIHRoZSB1c2VyIG5lZWRzIHRoZW0sIGhlbmNlIHdoeSB3ZSBzcGxpdCB1cHN0cmVhbSBweXRob24KKyMgaW50byBzZXZlcmFsIHBhY2thZ2VzLgorIworIyBJbiBhIHZlcnkgc2ltcGxpc3RpYyB3YXkgd2hhdCB0aGlzIGRvZXMgaXM6IAorIyBMYXVuY2ggcHl0aG9uIGFuZCBzZWUgc3BlY2lmaWNhbGx5IHdoYXQgaXMgcmVxdWlyZWQgZm9yIGl0IHRvIHJ1biBhdCBhIG1pbmltdW0KKyMKKyMgR28gdGhyb3VnaCB0aGUgcHl0aG9uLW1hbmlmZXN0IGZpbGUgYW5kIGxhdW5jaCBhIHNlcGFyYXRlIHRhc2sgZm9yIGV2ZXJ5IHNpbmdsZQorIyBvbmUgb2YgdGhlIGZpbGVzIG9uIGVhY2ggcGFja2FnZSwgdGhpcyB0YXNrIHdpbGwgY2hlY2sgd2hhdCB3YXMgcmVxdWlyZWQgZm9yIHRoYXQKKyMgc3BlY2lmaWMgbW9kdWxlIHRvIHJ1biwgdGhlc2UgbW9kdWxlcyB3aWxsIGJlIGNhbGxlZCBkZXBlbmRlbmNpZXMuCisjIFRoZSBvdXRwdXQgb2Ygc3VjaCB0YXNrIHdpbGwgYmUgYSBsaXN0IG9mIHRoZSBtb2R1bGVzIG9yIGRlcGVuZGVuY2llcyB0aGF0IHdlcmUKKyMgZm91bmQgZm9yIHRoYXQgZmlsZS4KKyMKKyMgU3VjaCBvdXRwdXQgd2lsbCBiZSBwYXJzZWQgYnkgdGhpcyBzY3JpcHQsIHdlIHdpbGwgbG9vayBmb3IgZWFjaCBkZXBlbmRlbmN5IG9uIHRoZQorIyBtYW5pZmVzdCBhbmQgaWYgd2UgZmluZCB0aGF0IGFub3RoZXIgcGFja2FnZSBhbHJlYWR5IGluY2x1ZGVzIGl0LCB0aGVuIHdlIHdpbGwgYWRkCisjIHRoYXQgcGFja2FnZSBhcyBhbiBSREVQRU5EUyB0byB0aGUgcGFja2FnZSB3ZSBhcmUgY3VycmVudGx5IGNoZWNraW5nOyBpbiBjYXNlIHdlIGRvbnQKKyMgZmluZCB0aGUgY3VycmVudCBkZXBlbmRlbmN5IG9uIGFueSBvdGhlciBwYWNrYWdlIHdlIHdpbGwgYWRkIGl0IHRvIHRoZSBjdXJyZW50IHBhY2thZ2UKKyMgYXMgcGFydCBvZiBGSUxFUy4KKyMKKyMKKyMgVGhpcyB3YXkgd2Ugd2lsbCBjcmVhdGUgYSBuZXcgbWFuaWZlc3QgZnJvbSB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCB3YXMgYnVpbHQgZHVyaW5nCisjIHRoaXMgcHJvY2Vzcywgb250IHRoaXMgbmV3IG1hbmlmZXN0IGVhY2ggcGFja2FnZSB3aWxsIGNvbnRhaW4gc3BlY2lmaWNhbGx5IG9ubHkKKyMgd2hhdCBpdCBuZWVkcyB0byBydW4uCisjCisjIFRoZXJlIGFyZSBzb21lIGNhdmVhdHMgd2hpY2ggd2UgdHJ5IHRvIGRlYWwgd2l0aCwgc3VjaCBhcyByZXBlYXRlZCBmaWxlcyBvbiBkaWZmZXJlbnQKKyMgcGFja2FnZXMsIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSBmb2xkZXJzLCB3aWxkY2FyZHMsIGFuZCBzcGVjaWFsIHBhY2thZ2VzLgorIyBJdHMgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoaXMgbWV0aG9kIG9ubHkgd29ya3MgZm9yIHB5dGhvbiBmaWxlcywgYW5kIHNoYXJlZAorIyBsaWJyYXJpZXMuIFN0YXRpYyBsaWJyYXJpZXMsIGhlYWRlciBmaWxlcyBhbmQgYmluYXJpZXMgbmVlZCB0byBiZSBkZWFsdCB3aXRoIG1hbnVhbGx5LgorIworIyBBdXRob3I6IEFsZWphbmRybyBFbmVkaW5vIEhlcm5hbmRleiBTYW1hbmllZ28gImFlaHMyOSIgPGFlaHMyOUBnbWFpbC5jb20+CisKKworaW1wb3J0IHN5cworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKKworIyBIYWNrIHRvIGdldCBuYXRpdmUgcHl0aG9uIHNlYXJjaCBwYXRoIChmb3IgZm9sZGVycyksIG5vdCBmb25kIG9mIGl0IGJ1dCBpdCB3b3JrcyBmb3Igbm93CitwaXZvdD0ncmVjaXBlLXN5c3Jvb3QtbmF0aXZlJworZm9yIHAgaW4gc3lzLnBhdGg6CisgIGlmIHBpdm90IGluIHA6CisgICAgbmF0aXZlbGliZm9sZGVyPXBbOnAuZmluZChwaXZvdCkrbGVuKHBpdm90KV0KKworIyBFbXB0eSBkaWN0IHRvIGhvbGQgdGhlIHdob2xlIG1hbmlmZXN0CituZXdfbWFuaWZlc3QgPSB7fQorCisjIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcywgZm9sZGVycyBhbmQgd2lsZGNhcmRzCithbGxmaWxlcz1bXQorcmVwZWF0ZWQ9W10KK3dpbGRjYXJkcz1bXQorCitoYXNmb2xkZXJzPVtdCithbGxmb2xkZXJzPVtdCisKK2RlZiBpc0ZvbGRlcih2YWx1ZSk6CisgIGlmIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliJykpIG9yIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliNjQnKSkgb3Igb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWIzMicpKToKKyAgICByZXR1cm4gVHJ1ZQorICBlbHNlOgorICAgIHJldHVybiBGYWxzZQorCisjIFJlYWQgZXhpc3RpbmcgSlNPTiBtYW5pZmVzdAord2l0aCBvcGVuKCdweXRob24yLW1hbmlmZXN0Lmpzb24nKSBhcyBtYW5pZmVzdDoKKyAgb2xkX21hbmlmZXN0PWpzb24ubG9hZChtYW5pZmVzdCkKKworCisjIEZpcnN0IHBhc3MgdG8gZ2V0IGNvcmUtcGFja2FnZSBmdW5jdGlvbmFsaXR5LCBiZWNhdXNlIHdlIGJhc2UgZXZlcnl0aGluZyBvbiB0aGUgZmFjdCB0aGF0IGNvcmUgaXMgYWN0dWFsbHkgd29ya2luZworIyBOb3QgZXhhY3RseSB0aGUgc2FtZSBzbyBpdCBzaG91bGQgbm90IGJlIGEgZnVuY3Rpb24KK3ByaW50ICgiR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIGNvcmUgcGFja2FnZToiKQorCisjIFNwZWNpYWwgY2FsbCB0byBjaGVjayBmb3IgY29yZSBwYWNrYWdlCitvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMyLnB5JywgJ3B5dGhvbi1jb3JlLXBhY2thZ2UnXSkKK2ZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgorICAgICMgV2UgYXBwZW5kIGl0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgd2UgY3VycmVudGx5IGhhdmU6CisgICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICAgICMgV2UgdXNlIHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlIHNpbmNlIGl0cyB0aGUgb25lIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjaGVjaworICAgICAgICAjIGRlcGVuZGVuY2llcyBmb3Igb3RoZXIgcGFja2FnZXMKKyAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCisKK2ZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKKyAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCisgIGlmIGlzRm9sZGVyKHZhbHVlKToKKyAgICAjIFBhc3MgaXQgZGlyZWN0bHkKKyAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICMgSWdub3JlIGJpbmFyaWVzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGFzc3VtZSBpdCB3YXMgYWRkZWQgY29ycmVjdGx5IChtYW51YWxseSkKKyAgaWYgJyR7YmluZGlyfScgaW4gdmFsdWU6CisgICAgIyBQYXNzIGl0IGRpcmVjdGx5CisgICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgIGNvbnRpbnVlCisgICMgSWdub3JlIGVtcHR5IHZhbHVlcworICBpZiB2YWx1ZSA9PSAnJzoKKyAgICBjb250aW51ZQorICBpZiAnJHtpbmNsdWRlZGlyfScgaW4gdmFsdWU6CisgICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgIGNvbnRpbnVlCisgICMgR2V0IG1vZHVsZSBuYW1lICwgc2hvdWxkbnQgYmUgYWZmZWN0ZWQgYnkgbGliZGlyL2JpbmRpcgorICB2YWx1ZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLm5vcm1wYXRoKHZhbHVlKSkpWzBdCisKKworICAjIExhdW5jaCBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvcgorICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMKKyAgcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKKyAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMi5weScsICclcycgJSB2YWx1ZV0pCisgIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgorICAgICMgV2UgYXBwZW5kIGl0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgd2UgY3VycmVudGx5IGhhdmU6CisgICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKKworIyBXZSBjaGVjayB3aGljaCBwYWNrYWdlcyBpbmNsdWRlIGZvbGRlcnMKK2ZvciBrZXkgaW4gb2xkX21hbmlmZXN0OgorICAgIGZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCisgICAgICAgIGlmIGlzRm9sZGVyKHZhbHVlKToKKyAgICAgICAgICAgIHByaW50ICgnJXMgaXMgYSBmb2xkZXInICUgdmFsdWUpCisgICAgICAgICAgICBpZiBrZXkgbm90IGluIGhhc2ZvbGRlcnM6CisgICAgICAgICAgICAgICAgaGFzZm9sZGVycy5hcHBlbmQoa2V5KQorICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGFsbGZvbGRlcnM6CisgICAgICAgICAgICAgICAgYWxsZm9sZGVycy5hcHBlbmQodmFsdWUpCisKK2ZvciBrZXkgaW4gb2xkX21hbmlmZXN0OgorICAgICMgVXNlIGFuIGVtcHR5IGRpY3QgYXMgZGF0YSBzdHJ1Y3R1cmUgdG8gaG9sZCBkYXRhIGZvciBlYWNoIHBhY2thZ2UgYW5kIGZpbGwgaXQgdXAKKyAgICBuZXdfbWFuaWZlc3Rba2V5XT17fQorICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddPVtdCisgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ109W10KKyAgICAjIEFsbCBwYWNrYWdlcyBzaG91bGQgZGVwZW5kIG9uIGNvcmUKKyAgICBpZiBrZXkgIT0gJ2NvcmUnOgorICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKCdjb3JlJykKKyAgICBuZXdfbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddPW9sZF9tYW5pZmVzdFtrZXldWydzdW1tYXJ5J10KKworICAgICMgSGFuZGxlIHNwZWNpYWwgY2FzZXMsIHdlIGFzc3VtZSB0aGF0IHdoZW4gdGhleSB3ZXJlIG1hbnVhbGx5IGFkZGVkIAorICAgICMgdG8gdGhlIG1hbmlmZXN0IHdlIGtuZXcgd2hhdCB3ZSB3ZXJlIGRvaW5nLgorICAgIHByaW50ICgnSGFuZGxpbmcgcGFja2FnZSAlcycgJSBrZXkpCisgICAgc3BlY2lhbF9wYWNrYWdlcz1bJ21pc2MnLCAnbW9kdWxlcycsICdkZXYnXQorICAgIGlmIGtleSBpbiBzcGVjaWFsX3BhY2thZ2VzIG9yICdzdGF0aWNkZXYnIGluIGtleToKKyAgICAgICAgcHJpbnQoJ1Bhc3NpbmcgJXMgcGFja2FnZSBkaXJlY3RseScgJSBrZXkpCisgICAgICAgIG5ld19tYW5pZmVzdFtrZXldPW9sZF9tYW5pZmVzdFtrZXldCisgICAgICAgIGNvbnRpbnVlCisKKyAgICBmb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106CisgICAgICAgICMgV2UgYWxyZWFkeSBoYW5kbGVkIGNvcmUgb24gdGhlIGZpcnN0IHBhc3MKKyAgICAgICAgaWYga2V5ID09ICdjb3JlJzoKKyAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgorICAgICAgICBpZiBpc0ZvbGRlcih2YWx1ZSk6CisgICAgICAgICAgICAjIFBhc3MgZm9sZGVycyBkaXJlY3RseQorICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgICAgICAjIElnbm9yZSBiaW5hcmllcywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlCisgICAgICAgIGlmICcke2JpbmRpcn0nIGluIHZhbHVlOgorICAgICAgICAgICAgIyBQYXNzIGl0IGRpcmVjdGx5IHRvIHRoZSBuZXcgbWFuaWZlc3QgZGF0YSBzdHJ1Y3R1cmUKKyAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIElnbm9yZSBlbXB0eSB2YWx1ZXMKKyAgICAgICAgaWYgdmFsdWUgPT0gJyc6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiAnJHtpbmNsdWRlZGlyfScgaW4gdmFsdWU6CisgICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106CisgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyBHZXQgbW9kdWxlIG5hbWUgLCBzaG91bGRudCBiZSBhZmZlY3RlZCBieSBsaWJkaXIvYmluZGlyCisgICAgICAgIHZhbHVlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGgubm9ybXBhdGgodmFsdWUpKSlbMF0KKworICAgICAgICAjIExhdW5jaCBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvcgorICAgICAgICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMKKyAgICAgICAgcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKKyAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMi5weScsICclcycgJSB2YWx1ZV0pCisKKyAgICAgICAgIyBXZSBjYW4gcHJpbnQgZGVwZW5kZW5jaWVzIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMKKyAgICAgICAgI3ByaW50IChvdXRwdXQpCisgICAgICAgICMgT3V0cHV0IHdpbGwgaGF2ZSBhbGwgZGVwZW5kZW5jaWVzCisgICAgICAgIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgorCisgICAgICAgICAgICAjIFdhcm5pbmc6IFRoaXMgZmlyc3QgcGFydCBpcyB1Z2x5CisgICAgICAgICAgICAjIE9uZSBvZiB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgd2FzIGZvdW5kLCBjb3VsZCBiZSBpbnNpZGUgb2Ygb25lIG9mIHRoZSBmb2xkZXJzIGluY2x1ZGVkIGJ5IGFub3RoZXIgcGFja2FnZQorICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgaGFwcGVucyBzbyB3ZSBjYW4gYWRkIHRoZSBwYWNrYWdlIGNvbnRhaW5pbmcgdGhlIGZvbGRlciBhcyBhbiBSREVQRU5EUworICAgICAgICAgICAgIyBlLmcuIEZvbGRlciBlbmNvZGluZ3MgY29udGFpbmVkIGluIGNvZGVjcworICAgICAgICAgICAgIyBUaGlzIHdvdWxkIGJlIHNvbHZlZCBpZiBubyBwYWNrYWdlcyBpbmNsdWRlZCBhbnkgZm9sZGVycworCisgICAgICAgICAgICAjIFRoaXMgY2FuIGJlIGRvbmUgaW4gdHdvIHdheXM6CisgICAgICAgICAgICAjIDEgLSBXZSBhc3N1bWUgdGhhdCBpZiB3ZSB0YWtlIG91dCB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgcGF0aCB3ZSB3b3VsZCBnZXQKKyAgICAgICAgICAgICMgICB0aGUgZm9sZGVyIHN0cmluZywgdGhlbiB3ZSB3b3VsZCBjaGVjayBpZiBmb2xkZXIgc3RyaW5nIGlzIGluIHRoZSBsaXN0IG9mIGZvbGRlcnMKKyAgICAgICAgICAgICMgICBUaGlzIHdvdWxkIG5vdCB3b3JrIGlmIGEgcGFja2FnZSBjb250YWlucyBhIGZvbGRlciB3aGljaCBjb250YWlucyBhbm90aGVyIGZvbGRlcgorICAgICAgICAgICAgIyAgIGUuZy4gcGF0aC9mb2xkZXIxL2ZvbGRlcjIvZmlsZW5hbWUgIGZvbGRlcl9zdHJpbmc9IHBhdGgvZm9sZGVyMS9mb2xkZXIyCisgICAgICAgICAgICAjICAgZm9sZGVyX3N0cmluZyB3b3VsZCBub3QgbWF0Y2ggYW55IHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgbGlzdCBvZiBmb2xkZXJzCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIDIgLSBXZSBkbyBpdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCwgY2hlY2tpbmcgaWYgdGhlIGZvbGRlciBpcyBjb250YWluZWQgaW4gdGhlIHBhdGgKKyAgICAgICAgICAgICMgICBlLmcuIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lICBmb2xkZXJfc3RyaW5nPSBwYXRoL2ZvbGRlcjEvZm9sZGVyMgorICAgICAgICAgICAgIyAgIGlzIGZvbGRlcl9zdHJpbmcgaW5zaWRlIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lPywgCisgICAgICAgICAgICAjICAgWWVzLCBpdCB3b3JrcywgYnV0IHdlIHdhc3RlIGEgY291cGxlIG9mIG1pbGxpc2Vjb25kcy4KKworICAgICAgICAgICAgaW5Gb2xkZXJzPUZhbHNlCisgICAgICAgICAgICBmb3IgZm9sZGVyIGluIGFsbGZvbGRlcnM6CisgICAgICAgICAgICAgICAgaWYgZm9sZGVyIGluIGl0ZW06CisgICAgICAgICAgICAgICAgICAgIGluRm9sZGVycyA9IFRydWUgIyBEaWQgd2UgZmluZCBhIGZvbGRlcj8KKyAgICAgICAgICAgICAgICAgICAgZm9sZGVyRm91bmQgPSBGYWxzZSAjIFNlY29uZCBmbGFnIHRvIGJyZWFrIGlubmVyIGZvcgorICAgICAgICAgICAgICAgICAgICAjIExvb3Agb25seSB0aHJvdWdoIHBhY2thZ2VzIHdoaWNoIGNvbnRhaW4gZm9sZGVycworICAgICAgICAgICAgICAgICAgICBmb3Iga2V5Zm9sZGVyIGluIGhhc2ZvbGRlcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9sZGVyRm91bmQgPT0gRmFsc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICNwcmludCgiQ2hlY2tpbmcgZm9sZGVyICVzIG9uIHBhY2thZ2UgJXMiICUgKGl0ZW0sa2V5Zm9sZGVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZV9mb2xkZXIgaW4gb2xkX21hbmlmZXN0W2tleWZvbGRlcl1bJ2ZpbGVzJ106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfZm9sZGVyPT1mb2xkZXI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAoJyVzIGZvdW5kIGluICVzJyAlIChmb2xkZXIsIGtleWZvbGRlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXJGb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleWZvbGRlciBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10gYW5kIGtleWZvbGRlciAhPSBrZXk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKGtleWZvbGRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgIyBBIGZvbGRlciB3YXMgZm91bmQgc28gd2UncmUgZG9uZSB3aXRoIHRoaXMgaXRlbSwgd2UgY2FuIGdvIG9uCisgICAgICAgICAgICBpZiBpbkZvbGRlcnM6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBXZSBtaWdodCBhbHJlYWR5IGhhdmUgaXQgb24gdGhlIGRpY3Rpb25hcnkgc2luY2UgaXQgY291bGQgZGVwZW5kIG9uIGEgKHByZXZpb3VzbHkgY2hlY2tlZCkgbW9kdWxlCisgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgICAgICAjIEhhbmRsZSBjb3JlIGFzIGEgc3BlY2lhbCBwYWNrYWdlLCB3ZSBhbHJlYWR5IGRpZCBpdCBzbyB3ZSBwYXNzIGl0IHRvIE5FVyBkYXRhIHN0cnVjdHVyZSBkaXJlY3RseQorICAgICAgICAgICAgICAgIGlmIGtleT09J2NvcmUnOgorICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBGSUxFUycgJSAoaXRlbSwga2V5KSkKKyAgICAgICAgICAgICAgICAgIGlmIGl0ZW0uZW5kc3dpdGgoJyonKToKKyAgICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZHMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKKworICAgICAgICAgICAgICAgICAgIyBDaGVjayBmb3IgcmVwZWF0ZWQgZmlsZXMKKyAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIGFsbGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgIGFsbGZpbGVzLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlZC5hcHBlbmQoaXRlbSkKKworICAgICAgICAgICAgICAgIGVsc2U6CisKKyAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGlzIGRlcGVuZGVuY3kgaXMgYWxyZWFkeSBjb250YWluZWQgb24gYW5vdGhlciBwYWNrYWdlLCBzbyB3ZSBhZGQgaXQKKyAgICAgICAgICAgICAgICAgICAgIyBhcyBhbiBSREVQRU5EUywgb3IgaWYgaXRzIG5vdCwgaXQgbWVhbnMgaXQgc2hvdWxkIGJlIGNvbnRhaW5lZCBvbiB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAjIHBhY2thZ2UsIHNvIHdlIHNob3VsZCBhZGQgaXQgdG8gRklMRVMKKyAgICAgICAgICAgICAgICAgICAgZm9yIG5ld2tleSBpbiBvbGRfbWFuaWZlc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAjIERlYnVnCisgICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQoIkNoZWNraW5nICVzICIgJSBpdGVtICsgIiBpbiAlcyIgJSBuZXdrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtIGluIG9sZF9tYW5pZmVzdFtuZXdrZXldWydmaWxlcyddOiAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIHdlcmUgbmVzdGluZywgd2UgbmVlZCB0byBjaGVjayBpdHMgbm90IHRoZSBzYW1lIGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihuZXdrZXkhPWtleSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXdrZXkgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgaXQgdG8gdGhlIG5ldyBtYW5pZmVzdCBkYXRhIHN0cnVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBEZWJ1ZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBSREVQRU5EUywgYmVjYXVzZSBpdCBjb250YWlucyAlcycgJSAobmV3a2V5LCBrZXksIGl0ZW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKG5ld2tleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgIyBEZWJ1ZworICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdBZGRpbmcgJXMgdG8gJXMgRklMRVMnICUgKGl0ZW0sIGtleSkpCisgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSBpdCB3YXNudCBmb3VuZCBvbiBhbm90aGVyIHBhY2thZ2UsIGl0cyBub3QgYW4gUkRFUCwgc28gYWRkIGl0IHRvIEZJTEVTIGZvciB0aGlzIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtLmVuZHN3aXRoKCcqJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBhbGxmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0ZWQuYXBwZW5kKGl0ZW0pCisKK3ByaW50ICgnVGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgcmVwZWF0ZWQgKGNvbnRhaW5lZCBpbiBtb3JlIHRoYW4gb25lIHBhY2thZ2UpLCBwbGVhc2UgY2hlY2sgd2hpY2ggcGFja2FnZSBzaG91bGQgZ2V0IGl0OicpCitwcmludCAocmVwZWF0ZWQpCitwcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIHdpbGRjYXJkcywgcGxlYXNlIGNoZWNrIHRoZXkgYXJlIG5lY2Vzc2FyeScpCitwcmludCh3aWxkY2FyZHMpCitwcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIGZvbGRlcnMsIHBsZWFzZSBjaGVjayB0aGV5IGFyZSBuZWNlc3NhcnknKQorcHJpbnQoaGFzZm9sZGVycykKKworIyBTb3J0IGl0IGp1c3Qgc28gaXQgbG9va3MgbmljZSAKK2ZvciBrZXkgaW4gbmV3X21hbmlmZXN0OgorICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLnNvcnQoKQorICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLnNvcnQoKQorCisjIENyZWF0ZSB0aGUgbWFuaWZlc3QgZnJvbSB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCB3YXMgYnVpbHQKK3dpdGggb3BlbigncHl0aG9uMi1tYW5pZmVzdC5qc29uLm5ldycsJ3cnKSBhcyBvdXRmaWxlOgorICAgIGpzb24uZHVtcChuZXdfbWFuaWZlc3Qsb3V0ZmlsZSxzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQsIHNlcGFyYXRvcnM9KCcsJywgJzogJykpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZml4LW1ha2VmaWxlLWZvci1wdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXgtbWFrZWZpbGUtZm9yLXB0ZXN0LnBhdGNoCmluZGV4IDY2OTExMmQuLjYwZDc4MmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXgtbWFrZWZpbGUtZm9yLXB0ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXgtbWFrZWZpbGUtZm9yLXB0ZXN0LnBhdGNoCkBAIC00LDE4ICs0LDE5IEBACiBTaWduZWQtb2ZmLWJ5OiBUdWRvciBGbG9yZWEgPHR1ZG9yLmZsb3JlYUBlbmVhLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCi1kaWZmIC1ydU4gYS9NYWtlZmlsZS5wcmUuaW4gYi9NYWtlZmlsZS5wcmUuaW4KLS0tLSBhL01ha2VmaWxlLnByZS5pbgkyMDEzLTA2LTI3IDEwOjQ0OjExLjAzMzg0MDUzMiArMDIwMAotKysrIGIvTWFrZWZpbGUucHJlLmluCTIwMTMtMDYtMjcgMTA6NDQ6MzkuNTcyNjM1MjczICswMjAwCi1AQCAtNzA5LDE0ICs3MDksMTkgQEAKLSAjIGdlbmVyYXRlZCBieXRlY29kZS4gIFRoaXMgaXMgc29tZXRpbWVzIGEgdmVyeSBzaHkgYnVnIG5lZWRpbmcgYSBsb3Qgb2YKLSAjIHNhbXBsZSBkYXRhLgorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01ha2VmaWxlLnByZS5pbgorKysrIFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCitAQCAtODQ2LDE0ICs4NDYsMTkgQEAgJChMSUJSQVJZX09CSlMpICQoTU9ET0JKUykgTW9kdWxlcy9weXRobworIAorIC5QSE9OWTogdGVzdCB0ZXN0YWxsIHRlc3R1bml2ZXJzYWwgYnVpbGRib3R0ZXN0IHB5dGhvbmluZm8KICAKIC1URVNUT1BUUz0JLWwgJChFWFRSQVRFU1RPUFRTKQogK1RFU1RPUFRTPQktbCAtdiAkKEVYVFJBVEVTVE9QVFMpCiAgVEVTVFBST0c9CSQoc3JjZGlyKS9MaWIvdGVzdC9yZWdydGVzdC5weQogLVRFU1RQWVRIT049CSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pIC1XZCAtMyAtRSAtdHQgJChURVNUUFlUSE9OT1BUUykKLS10ZXN0OgkJYWxsIHBsYXRmb3JtCistdGVzdDoJCUBERUZfTUFLRV9SVUxFQCBwbGF0Zm9ybQogLQkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCiArVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpICQoQlVJTERQWVRIT04pIC1XZCAtMyAtRSAtdHQgJChURVNUUFlUSE9OT1BUUykKICt0ZXN0OgkJYnVpbGQtdGVzdApAQCAtMjYsOCArMjcsOCBAQAogIAkJLSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChURVNUT1BUUykKICAJCSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChURVNUT1BUUykKICAKLStidWlsZC10ZXN0OglhbGwgcGxhdGZvcm0KKytidWlsZC10ZXN0OglAREVGX01BS0VfUlVMRUAgcGxhdGZvcm0KICsKLSB0ZXN0YWxsOglhbGwgcGxhdGZvcm0KKyB0ZXN0YWxsOglAREVGX01BS0VfUlVMRUAgcGxhdGZvcm0KICAJCS1maW5kICQoc3JjZGlyKS9MaWIgLW5hbWUgJyoucHlbY29dJyAtcHJpbnQgfCB4YXJncyBybSAtZgogIAkJJChURVNUUFlUSE9OKSAkKHNyY2RpcikvTGliL2NvbXBpbGVhbGwucHkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9nZXRfbW9kdWxlX2RlcHMyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2dldF9tb2R1bGVfZGVwczIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNlN2M2ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9nZXRfbW9kdWxlX2RlcHMyLnB5CkBAIC0wLDAgKzEsMTEyIEBACisjIFRoaXMgc2NyaXB0IGlzIGxhdW5jaGVkIG9uIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggcHl0aG9uIG1vZHVsZQorIyBJdCBjaGVja3MgZm9yIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBzcGVjaWZpYyBtb2R1bGUgYW5kIHByaW50cyAKKyMgdGhlbSBvdXQsIHRoZSBvdXRwdXQgb2YgdGhpcyBleGVjdXRpb24gd2lsbCBoYXZlIGFsbCBkZXBlbmRlbmNpZXMKKyMgZm9yIGEgc3BlY2lmaWMgbW9kdWxlLCB3aGljaCB3aWxsIGJlIHBhcnNlZCBhbiBkZWFsdCBvbiBjcmVhdGVfbWFuaWZlc3QucHkKKyMKKyMgQXV0aG9yOiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvICJhZWhzMjkiIDxhZWhzMjlAZ21haWwuY29tPgorCisKKyMgV2UgY2FuIGdldCBhIGxvZyBwZXIgbW9kdWxlLCBmb3IgYWxsIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCB3ZXJlIGZvdW5kLCBidXQgaXRzIG1lc3N5LgorZGVidWc9RmFsc2UKKworaW1wb3J0IHN5cworCisjIFdlIGNhbiBnZXQgYSBsaXN0IG9mIHRoZSBtb2R1bGVzIHdoaWNoIGFyZSBjdXJyZW50bHkgcmVxdWlyZWQgdG8gcnVuIHB5dGhvbgorIyBzbyB3ZSBydW4gcHl0aG9uLWNvcmUgYW5kIGdldCBpdHMgbW9kdWxlcywgd2UgdGhlbiBpbXBvcnQgd2hhdCB3ZSBuZWVkCisjIGFuZCBjaGVjayB3aGF0IG1vZHVsZXMgYXJlIGN1cnJlbnRseSBydW5uaW5nLCBpZiB3ZSBzdWJzdHJhY3QgdGhlbSBmcm9tIHRoZQorIyBtb2R1bGVzIHdlIGhhZCBpbml0aWFsbHksIHdlIGdldCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgbW9kdWxlIHdlIGltcG9ydGVkLgorCisjIFdlIHVzZSBpbXBvcnRsaWIgdG8gYWNoaWV2ZSB0aGlzLCBzbyB3ZSBhbHNvIG5lZWQgdG8ga25vdyB3aGF0IG1vZHVsZXMgaW1wb3J0bGliIG5lZWRzCitpbXBvcnQgaW1wb3J0bGliCisKK2NvcmVfZGVwcz1zZXQoc3lzLm1vZHVsZXMpCisKK2RlZiBmaXhfcGF0aChkZXBfcGF0aCk6CisgICAgaW1wb3J0IG9zCisgICAgIyBXZSBET05UIHdhbnQgdGhlIHBhdGggb24gb3VyIEhPU1Qgc3lzdGVtCisgICAgcGl2b3Q9J3JlY2lwZS1zeXNyb290LW5hdGl2ZScKKyAgICBkZXBfcGF0aD1kZXBfcGF0aFtkZXBfcGF0aC5maW5kKHBpdm90KStsZW4ocGl2b3QpOl0KKworICAgIGlmICcvdXNyL2JpbicgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9iaW4nJyR7YmluZGlyfScpCisKKyAgICAjIEhhbmRsZSBtdWx0aWxpYiwgaXMgdGhlcmUgYSBiZXR0ZXIgd2F5PworICAgIGlmICcvdXNyL2xpYjMyJyBpbiBkZXBfcGF0aDoKKyAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2xpYjMyJywnJHtsaWJkaXJ9JykKKyAgICBpZiAnL3Vzci9saWI2NCcgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWI2NCcsJyR7bGliZGlyfScpCisgICAgaWYgJy91c3IvbGliJyBpbiBkZXBfcGF0aDoKKyAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2xpYicsJyR7bGliZGlyfScpCisgICAgaWYgJy91c3IvaW5jbHVkZScgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9pbmNsdWRlJywnJHtpbmNsdWRlZGlyfScpCisgICAgaWYgJ19faW5pdF9fLicgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gIG9zLnBhdGguc3BsaXQoZGVwX3BhdGgpWzBdCisKKyAgICAjIElmIGEgKi5weWMgZmlsZSB3YXMgaW1wb3J0ZWQsIHdlIHJlcGxhY2UgaXQgd2l0aCAqLnB5IChzaW5jZSB3ZSBkZWFsIHdpdGggUFlDcyBvbiBjcmVhdGVfbWFuaWZlc3QpCisgICAgaWYgJy5weWMnIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy5weWMnLCcucHknKQorCisgICAgcmV0dXJuIGRlcF9wYXRoCisKKyMgTW9kdWxlIHRvIGltcG9ydCB3YXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50CitjdXJyZW50X21vZHVsZSA9ICBzdHIoc3lzLmFyZ3ZbMV0pLnJzdHJpcCgpCitpZihkZWJ1Zz09VHJ1ZSk6CisJbG9nID0gb3BlbignbG9nXyVzJyAlIGN1cnJlbnRfbW9kdWxlLCd3JykKKyAgICAgICAgbG9nLndyaXRlKCdNb2R1bGUgJXMgZ2VuZXJhdGVkIHRoZSBmb2xsb3dpbmcgZGVwZW5kZW5jaWVzOlxuJyAlIGN1cnJlbnRfbW9kdWxlKQordHJ5OgorICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCclcycgJSBjdXJyZW50X21vZHVsZSkKK2V4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgIGxvZy53cml0ZSgnTW9kdWxlIHdhcyBub3QgZm91bmQnKQorICAgIHBhc3MKKworCisjIEdldCBjdXJyZW50IG1vZHVsZSBkZXBlbmRlbmNpZXMsIGRpZiB3aWxsIGNvbnRhaW4gYSBsaXN0IG9mIHNwZWNpZmljIGRlcHMgZm9yIHRoaXMgbW9kdWxlCittb2R1bGVfZGVwcz1zZXQoc3lzLm1vZHVsZXMpCisKKyMgV2UgaGFuZGxlIHRoZSBjb3JlIHBhY2thZ2UgKDFzdCBwYXNzIG9uIGNyZWF0ZV9tYW5pZmVzdC5weSkgYXMgYSBzcGVjaWFsIGNhc2UKK2lmIGN1cnJlbnRfbW9kdWxlID09ICdweXRob24tY29yZS1wYWNrYWdlJzoKKyAgICBkaWYgPSBjb3JlX2RlcHMKK2Vsc2U6CisgICAgZGlmID0gbW9kdWxlX2RlcHMtY29yZV9kZXBzCisKKworIyBDaGVjayB3aGVyZSBlYWNoIGRlcGVuZGVuY3kgY2FtZSBmcm9tCitmb3IgaXRlbSBpbiBkaWY6CisgICAgZGVwX3BhdGg9JycKKyAgICB0cnk6CisgICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0NhbGxpbmc6IHN5cy5tb2R1bGVzWycgKyAnJXMnICUgaXRlbSArICddLl9fZmlsZV9fXG4nKQorICAgICAgICBkZXBfcGF0aCA9IHN5cy5tb2R1bGVzWyclcycgJSBpdGVtXS5fX2ZpbGVfXworICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgorICAgICAgICAjIERlYWxzIHdpdGggdGhyZWFkIChidWlsdGluIG1vZHVsZSkgbm90IGhhdmluZyBfX2ZpbGVfXyBhdHRyaWJ1dGUKKwlpZiBkZWJ1Zz09VHJ1ZToKKyAgICAgICAgICAgIGxvZy53cml0ZShpdGVtICsgJyAnKQorICAgICAgICAgICAgbG9nLndyaXRlKHN0cihlKSkKKwkgICAgbG9nLndyaXRlKCdcbicpCisgICAgICAgICAgICBwYXNzCisgICAgZXhjZXB0IE5hbWVFcnJvciBhcyBlOgorICAgICAgICAjIERlYWxzIHdpdGggTmFtZUVycm9yOiBuYW1lICdkZXBfcGF0aCcgaXMgbm90IGRlZmluZWQKKyAgICAgICAgIyBiZWNhdXNlIG1vZHVsZSBpcyBub3QgZm91bmQgKHdhc24ndCBjb21waWxlZD8pLCBlLmcuIGJkZHNtCisgICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgICAgICBsb2cud3JpdGUoaXRlbSsnICcpIAorICAgICAgICAgICAgbG9nLndyaXRlKHN0cihlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHBhc3MKKworICAgICMgU2l0ZS1jdXN0b21pemUgaXMgYSBzcGVjaWFsIGNhc2Ugc2luY2Ugd2UgKE9wZW5FbWJlZGRlZCkgcHV0IGl0IHRoZXJlIG1hbnVhbGx5CisgICAgaWYgJ3NpdGVjdXN0b21pemUnIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9ICcke2xpYmRpcn0vcHl0aG9uMi43L3NpdGVjdXN0b21pemUucHknCisgICAgICAgICMgUHJpbnRzIG91dCByZXN1bHQsIHdoaWNoIGlzIHdoYXQgd2lsbCBiZSB1c2VkIGJ5IGNyZWF0ZV9tYW5pZmVzdAorICAgICAgICBwcmludCAoZGVwX3BhdGgpCisgICAgICAgIGNvbnRpbnVlCisKKyAgICBkZXBfcGF0aCA9IGZpeF9wYXRoKGRlcF9wYXRoKQorCisgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgbG9nLndyaXRlKGRlcF9wYXRoKydcbicpCisKKyAgICAjIFByaW50cyBvdXQgcmVzdWx0LCB3aGljaCBpcyB3aGF0IHdpbGwgYmUgdXNlZCBieSBjcmVhdGVfbWFuaWZlc3QKKyAgICBwcmludCAoZGVwX3BhdGgpCisKK2lmIGRlYnVnPT1UcnVlOgorICAgIGxvZy5jbG9zZSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2gKaW5kZXggZjU1NjhkMi4uMTExNmRkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaApAQCAtMSwxMSArMSwxMSBAQAogUmViYXNlZCBmb3IgcHl0aG9uLTIuNy45CiBTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IFB5dGhvbi0yLjcuMTMvY29uZmlndXJlLmFjCitJbmRleDogUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvY29uZmlndXJlLmFjCi0rKysgUHl0aG9uLTIuNy4xMy9jb25maWd1cmUuYWMKLUBAIC03NTksNiArNzU5LDEwIEBAIFN1bk9TKikKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvY29uZmlndXJlLmFjCisrKysgUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKK0BAIC03NTgsNiArNzU4LDEwIEBAIFN1bk9TKikKICAgICAgOzsKICBlc2FjCiAgCkBAIC0xNiwxMCArMTYsMTAgQEAKICAKICBBQ19TVUJTVChMSUJSQVJZKQogIEFDX01TR19DSEVDS0lORyhMSUJSQVJZKQotSW5kZXg6IFB5dGhvbi0yLjcuMTMvSW5jbHVkZS9weXRob25ydW4uaAorSW5kZXg6IFB5dGhvbi0yLjcuMTQvSW5jbHVkZS9weXRob25ydW4uaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9JbmNsdWRlL3B5dGhvbnJ1bi5oCi0rKysgUHl0aG9uLTIuNy4xMy9JbmNsdWRlL3B5dGhvbnJ1bi5oCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0luY2x1ZGUvcHl0aG9ucnVuLmgKKysrKyBQeXRob24tMi43LjE0L0luY2x1ZGUvcHl0aG9ucnVuLmgKIEBAIC0xMDgsNiArMTA4LDcgQEAgUHlBUElfRlVOQyhjaGFyICopIFB5X0dldFBhdGgodm9pZCk7CiAgLyogSW4gdGhlaXIgb3duIGZpbGVzICovCiAgUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldFZlcnNpb24odm9pZCk7CkBAIC0yOCwxMCArMjgsMTAgQEAKICBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29weXJpZ2h0KHZvaWQpOwogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb21waWxlcih2b2lkKTsKICBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOwotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKIEBAIC0yMiw2ICsyMiw4IEBAIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9CQVNFCiAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX1NJVEUKICAKQEAgLTQxLDE5ICs0MSwyMSBAQAogIGlmIHN5cy52ZXJzaW9uIDwgIjIuMiI6CiAgICAgIFdJTkRPV1NfU0NIRU1FID0gewogICAgICAgICAgJ3B1cmVsaWInOiAnJGJhc2UnLAotQEAgLTQyLDcgKzQ0LDcgQEAgZWxzZToKK0BAIC00MSw4ICs0Myw4IEBAIGVsc2U6CisgCiAgSU5TVEFMTF9TQ0hFTUVTID0gewogICAgICAndW5peF9wcmVmaXgnOiB7Ci0gICAgICAgICAncHVyZWxpYic6ICckYmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCistICAgICAgICAncHVyZWxpYic6ICckYmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCiAtICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvbGliL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAorKyAgICAgICAgJ3B1cmVsaWInOiAnJHBsYXRiYXNlLycrbGlibmFtZSsnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAogKyAgICAgICAgJ3BsYXRsaWInOiAnJHBsYXRiYXNlLycrbGlibmFtZSsnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAgJ2hlYWRlcnMnOiAnJGJhc2UvaW5jbHVkZS9weXRob24kcHlfdmVyc2lvbl9zaG9ydC8kZGlzdF9uYW1lJywKICAgICAgICAgICdzY3JpcHRzJzogJyRiYXNlL2JpbicsCiAgICAgICAgICAnZGF0YScgICA6ICckYmFzZScsCi1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKysgUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQogQEAgLTExOSw4ICsxMTksMTEgQEAgZGVmIGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbgogICAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCiAgCkBAIC02OCwxMCArNzAsMTAgQEAKICAgICAgICAgIGlmIHN0YW5kYXJkX2xpYjoKICAgICAgICAgICAgICByZXR1cm4gbGlicHl0aG9uCiAgICAgICAgICBlbHNlOgotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL3B5ZG9jLnB5CitJbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL3B5ZG9jLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvcHlkb2MucHkKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3B5ZG9jLnB5CisrKysgUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKIEBAIC0zNzUsNyArMzc1LDcgQEAgY2xhc3MgRG9jOgogICAgICBkb2Ntb2R1bGUgPSBkb2NjbGFzcyA9IGRvY3JvdXRpbmUgPSBkb2NvdGhlciA9IGRvY3Byb3BlcnR5ID0gZG9jZGF0YSA9IGZhaWwKICAKQEAgLTgxLDEwICs4MywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iK3N5cy52ZXJzaW9uWzA6M10pKToKICAgICAgICAgICIiIlJldHVybiB0aGUgbG9jYXRpb24gb2YgbW9kdWxlIGRvY3Mgb3IgTm9uZSIiIgogIAotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL3NpdGUucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi9zaXRlLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi9zaXRlLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvc2l0ZS5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvc2l0ZS5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL3NpdGUucHkKIEBAIC0yODgsMTMgKzI4OCwxOCBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKCk6CiAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdvczJlbXgnLCAncmlzY29zJyk6CiAgICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAiTGliIiwgInNpdGUtcGFja2FnZXMiKSkKQEAgLTEwNywxMCArMTA5LDEwIEBACiAgICAgIHJldHVybiBzaXRlcGFja2FnZXMKICAKICBkZWYgYWRkc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzKToKLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi9zeXNjb25maWcucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi9zeXNjb25maWcucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL3N5c2NvbmZpZy5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3N5c2NvbmZpZy5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvc3lzY29uZmlnLnB5CisrKysgUHl0aG9uLTIuNy4xNC9MaWIvc3lzY29uZmlnLnB5CiBAQCAtNywxMCArNywxMCBAQCBmcm9tIG9zLnBhdGggaW1wb3J0IHBhcmRpciwgcmVhbHBhdGgKICAKICBfSU5TVEFMTF9TQ0hFTUVTID0gewpAQCAtMTM5LDEwICsxNDEsMTAgQEAKICAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9iaW4nLAogICAgICAgICAgJ2RhdGEnICAgOiAne3VzZXJiYXNlfScsCi1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvdGVzdC90ZXN0X2RsLnB5CitJbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X2RsLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi90ZXN0L3Rlc3RfZGwucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi90ZXN0L3Rlc3RfZGwucHkKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3Rlc3QvdGVzdF9kbC5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9kbC5weQogQEAgLTQsMTAgKzQsMTEgQEAKICBpbXBvcnQgdW5pdHRlc3QKICBmcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBpbXBvcnRfbW9kdWxlCkBAIC0xNTcsMTEgKzE1OSwxMSBAQAogICAgICAoJy91c3IvYmluL2N5Z3dpbjEuZGxsJywgJ2dldHBpZCcpLAogICAgICAoJy91c3IvbGliL2xpYmMuZHlsaWInLCAnZ2V0cGlkJyksCiAgICAgIF0KLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3Rlc3QvdGVzdF9zaXRlLnB5Ci1AQCAtMjM1LDEyICsyMzUsMTYgQEAgY2xhc3MgSGVscGVyRnVuY3Rpb25zVGVzdHModW5pdHRlc3QuVGVzdAorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdGVzdC90ZXN0X3NpdGUucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorQEAgLTI1MiwxMiArMjUyLDE2IEBAIGNsYXNzIEhlbHBlckZ1bmN0aW9uc1Rlc3RzKHVuaXR0ZXN0LlRlc3QKICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMF0sIHdhbnRlZCkKICAgICAgICAgIGVsaWYgb3Muc2VwID09ICcvJzoKICAgICAgICAgICAgICAjIE9TIFgsIExpbnV4LCBGcmVlQlNELCBldGMKQEAgLTE4MSwxMCArMTgzLDEwIEBACiAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICMgb3RoZXIgcGxhdGZvcm1zCiAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCi1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvdHJhY2UucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi90cmFjZS5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvdHJhY2UucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi90cmFjZS5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdHJhY2UucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi90cmFjZS5weQogQEAgLTc1NCwxMCArNzU0LDEwIEBAIGRlZiBtYWluKGFyZ3Y9Tm9uZSk6CiAgICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKICAKQEAgLTE5OCwxMSArMjAwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKICAgICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCi1JbmRleDogUHl0aG9uLTIuNy4xMy9NYWtlZmlsZS5wcmUuaW4KK0luZGV4OiBQeXRob24tMi43LjE0L01ha2VmaWxlLnByZS5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9NYWtlZmlsZS5wcmUuaW4KLSsrKyBQeXRob24tMi43LjEzL01ha2VmaWxlLnByZS5pbgotQEAgLTkyLDYgKzkyLDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRworLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9NYWtlZmlsZS5wcmUuaW4KKysrKyBQeXRob24tMi43LjE0L01ha2VmaWxlLnByZS5pbgorQEAgLTkxLDYgKzkxLDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRwogIAogICMgTWFjaGluZS1kZXBlbmRlbnQgc3ViZGlyZWN0b3JpZXMKICBNQUNIREVQPQlATUFDSERFUEAKQEAgLTIxMCw3ICsyMTIsNyBAQAogIAogICMgTXVsdGlhcmNoIGRpcmVjdG9yeSAobWF5IGJlIGVtcHR5KQogIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKLUBAIC0xMTEsNyArMTEyLDcgQEAgTElCRElSPQkJQGxpYmRpckAKK0BAIC0xMTAsNyArMTExLDcgQEAgTElCRElSPQkJQGxpYmRpckAKICBNQU5ESVI9CQlAbWFuZGlyQAogIElOQ0xVREVESVI9CUBpbmNsdWRlZGlyQAogIENPTkZJTkNMVURFRElSPQkkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCkBAIC0yMTksNyArMjIxLDcgQEAKICAKICAjIERldGFpbGVkIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzCiAgQklOTElCREVTVD0JJChMSUJESVIpL3B5dGhvbiQoVkVSU0lPTikKLUBAIC02NjksNiArNjcwLDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldAorQEAgLTY0NSw2ICs2NDYsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0CiAgCQktREVYRUNfUFJFRklYPSciJChleGVjX3ByZWZpeCkiJyBcCiAgCQktRFZFUlNJT049JyIkKFZFUlNJT04pIicgXAogIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXApAQCAtMjI3LDggKzIyOSw4IEBACiAgCQktbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMKICAKICBNb2R1bGVzL3B5dGhvbi5vOiAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYwotQEAgLTcwOSw3ICs3MTEsNyBAQCAkKEFTVF9DKTogJChBU1RfQVNETCkgJChBU0RMR0VOX0ZJTEVTKQotIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKEdSQU1NQVJfSCkgJChBU1RfSCkKK0BAIC02OTMsNyArNjk1LDcgQEAgcmVnZW4tYXN0OgorIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi1hc3QuaAogIAogIFB5dGhvbi9nZXRwbGF0Zm9ybS5vOiAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKIC0JCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtRFBMQVRGT1JNPSciJChNQUNIREVQKSInIC1vICRAICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwpAQCAtMjM2LDEwICsyMzgsMTAgQEAKICAKICBQeXRob24vaW1wb3J0ZGwubzogJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCiAgCQkkKENDKSAtYyAkKFBZX0NGTEFHUykgLUkkKERMSU5DTERJUikgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCi1JbmRleDogUHl0aG9uLTIuNy4xMy9Nb2R1bGVzL2dldHBhdGguYworSW5kZXg6IFB5dGhvbi0yLjcuMTQvTW9kdWxlcy9nZXRwYXRoLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKLSsrKyBQeXRob24tMi43LjEzL01vZHVsZXMvZ2V0cGF0aC5jCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01vZHVsZXMvZ2V0cGF0aC5jCisrKysgUHl0aG9uLTIuNy4xNC9Nb2R1bGVzL2dldHBhdGguYwogQEAgLTEwMCw2ICsxMDAsMTMgQEAKICAjZXJyb3IgIlBSRUZJWCwgRVhFQ19QUkVGSVgsIFZFUlNJT04sIGFuZCBWUEFUSCBtdXN0IGJlIGNvbnN0YW50IGRlZmluZWQiCiAgI2VuZGlmCkBAIC0yNjMsMTAgKzI2NSwxMCBAQAogIAogIHN0YXRpYyB2b2lkCiAgcmVkdWNlKGNoYXIgKmRpcikKLUluZGV4OiBQeXRob24tMi43LjEzL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCitJbmRleDogUHl0aG9uLTIuNy4xNC9QeXRob24vZ2V0cGxhdGZvcm0uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9QeXRob24vZ2V0cGxhdGZvcm0uYwotKysrIFB5dGhvbi0yLjcuMTMvUHl0aG9uL2dldHBsYXRmb3JtLmMKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvUHl0aG9uL2dldHBsYXRmb3JtLmMKKysrKyBQeXRob24tMi43LjE0L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCiBAQCAtMTAsMyArMTAsMTMgQEAgUHlfR2V0UGxhdGZvcm0odm9pZCkKICB7CiAgCXJldHVybiBQTEFURk9STTsKQEAgLTI4MSwxMCArMjgzLDEwIEBACiArewogKwlyZXR1cm4gTElCOwogK30KLUluZGV4OiBQeXRob24tMi43LjEzL1B5dGhvbi9zeXNtb2R1bGUuYworSW5kZXg6IFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYwotKysrIFB5dGhvbi0yLjcuMTMvUHl0aG9uL3N5c21vZHVsZS5jCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYworKysrIFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCiBAQCAtMTQzNyw2ICsxNDM3LDggQEAgX1B5U3lzX0luaXQodm9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldENvcHlyaWdodCgpKSk7CiAgICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInBsYXRmb3JtIiwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2gKaW5kZXggOTUxY2I0Ni4uYWJhYjQxZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2gKQEAgLTgsMTIgKzgsMTIgQEAKIAogLS0tIFB5dGhvbi0yLjcuMy5vcmlnL01ha2VmaWxlLnByZS5pbgogKysrIFB5dGhvbi0yLjcuMy9NYWtlZmlsZS5wcmUuaW4KLUBAIC0xMDA4LDcgKzEwMDgsNyBAQCBMSUJQTD0JCSQoTElCUCkvY29uZmlnCitAQCAtMTE4Nyw3ICsxMTg3LDcgQEAKICBMSUJQQz0JCSQoTElCRElSKS9wa2djb25maWcKLQotIGxpYmFpbnN0YWxsOglhbGwgcHl0aG9uLWNvbmZpZworIAorIGxpYmFpbnN0YWxsOglAREVGX01BS0VfUlVMRUAgcHl0aG9uLWNvbmZpZwogLQlAZm9yIGkgaW4gJChMSUJESVIpICQoTElCUCkgJChMSUJQTCkgJChMSUJQQyk7IFwKICsJQGZvciBpIGluICQoTElCRElSKSAkKExJQlApICQoTElCUEwpICQoTElCUEMpICQoQklORElSKTsgXAotCWRvIFwKLQkJaWYgdGVzdCAhIC1kICQoREVTVERJUikkJGk7IHRoZW4gXAotCQkJZWNobyAiQ3JlYXRpbmcgZGlyZWN0b3J5ICQkaSI7IFwKKyAJZG8gXAorIAkJaWYgdGVzdCAhIC1kICQoREVTVERJUikkJGk7IHRoZW4gXAorIAkJCWVjaG8gIkNyZWF0aW5nIGRpcmVjdG9yeSAkJGkiOyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjNlNTEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbgpAQCAtMCwwICsxLDEwNDcgQEAKK3sKKyAgICAiMnRvMyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS8ydG8zIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYjJ0bzMiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYXV0b21hdGVkIFB5dGhvbiAyIHRvIDMgY29kZSB0cmFuc2xhdG9yIgorICAgIH0sCisgICAgImFyZ3BhcnNlIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hcmdwYXJzZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvZGVjcyIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAidGV4dHV0aWxzIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY29tbWFuZCBsaW5lIGFyZ3VtZW50IHBhcnNlciIKKyAgICB9LAorICAgICJhdWRpbyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXVkaW9kZXYucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY2h1bmsucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYXVkaW9vcC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9vc3NhdWRpb2Rldi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbmRoZHIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3VuYXUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3VuYXVkaW8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdG9haWZmLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3dhdmUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJtYXRoIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXVkaW8gSGFuZGxpbmciCisgICAgfSwKKyAgICAiYnNkZGIiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2JzZGRiIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19ic2RkYi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIEJlcmtlbGV5IERhdGFiYXNlIgorICAgIH0sCisgICAgImNvZGVjcyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2V0dGV4dC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX2NuLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2RlY3NfaGsuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19pc28yMDIyLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2RlY3NfanAuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19rci5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX3R3LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19tdWx0aWJ5dGVjb2RlYy5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC91bmljb2RlZGF0YS5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9sb2NhbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RyaW5ncHJlcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy94ZHJsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibGFuZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNvZGVjIgorICAgIH0sCisgICAgImNvbXBpbGUiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbXBpbGVhbGwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHlfY29tcGlsZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBieXRlY29kZSBjb21waWxhdGlvbiBzdXBwb3J0IgorICAgIH0sCisgICAgImNvbXBpbGVyIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb21waWxlciIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY29tcGlsZXIgc3VwcG9ydCIKKyAgICB9LAorICAgICJjb21wcmVzc2lvbiI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ3ppcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9iejIuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGFyZmlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy96aXBmaWxlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iLAorICAgICAgICAgICAgInpsaWIiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAiY29udGV4dGxpYiI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29udGV4dGxpYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImxhbmciCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1dGlsaXRpZXMgZm9yIHdpdGgtc3RhdGVtZW50Y29udGV4dHMuIgorICAgIH0sCisgICAgImNvcmUiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uKiIsCisgICAgICAgICAgICAiJHtpbmNsdWRlZGlyfS9weXRob24yLjcvcHljb25maWcqLmgiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvQ29uZmlnUGFyc2VyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJEaWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJMaXN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJTdHJpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX19mdXR1cmVfXy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fYWJjb2xsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19zeXNjb25maWdkYXRhLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L193ZWFrcmVmc2V0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hc3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXRleGl0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGVjcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2xsZWN0aW9ucy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb3B5LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvcHlfcmVnLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2VuY29kaW5ncyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9lbmNvZGluZ3MvYWxpYXNlcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9lbmNvZGluZ3MvdXRmXzgucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2VuZXJpY3BhdGgucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2V0b3B0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2hlYXBxLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2ltcG9ydGxpYiIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9rZXl3b3JkLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2xsZWN0aW9ucy5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faGVhcHEuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2xvY2FsZS5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3RydWN0LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2JpbmFzY2lpLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2l0ZXJ0b29scy5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9vcGVyYXRvci5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9yZWFkbGluZS5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zdHJvcC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC90aW1lLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3hyZWFkbGluZXMuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGluZWNhY2hlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L25ldy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9vcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wbGF0Zm9ybS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wb3NpeHBhdGgucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmxjb21wbGV0ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2l0ZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaXRlY3VzdG9taXplLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NyZV9jb21waWxlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NyZV9jb25zdGFudHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3JlX3BhcnNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N0YXQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RyaW5nLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N0cnVjdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zeXNjb25maWcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdHJhY2ViYWNrLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3R5cGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3dhcm5pbmdzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3dlYWtyZWYucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFtdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIKKyAgICB9LAorICAgICJjcnlwdCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaGFzaGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faGFzaGxpYi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jcnlwdC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tZDUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2hhLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIGNyeXB0b2dyYXBoaWMgYW5kIGhhc2hpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJjdHlwZXMiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2N0eXBlcyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3R5cGVzLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdHlwZXNfdGVzdC5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBDIHR5cGVzIHN1cHBvcnQiCisgICAgfSwKKyAgICAiY3Vyc2VzIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jdXJzZXMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2N1cnNlcy5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3Vyc2VzX3BhbmVsLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGN1cnNlcyBzdXBwb3J0IgorICAgIH0sCisgICAgImRhdGV0aW1lIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fc3RycHRpbWUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY2FsZW5kYXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZGF0ZXRpbWUuc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImxhbmciCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjYWxlbmRhciBhbmQgdGltZSBzdXBwb3J0IgorICAgIH0sCisgICAgImRiIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hbnlkYm0ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGJoYXNoLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2R1bWJkYm0ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZGJtLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3doaWNoZGIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJic2RkYiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZ2RibSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGZpbGUtYmFzZWQgZGF0YWJhc2Ugc3VwcG9ydCIKKyAgICB9LAorICAgICJkZWJ1Z2dlciI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYmRiLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BkYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJwcHJpbnQiLAorICAgICAgICAgICAgInNoZWxsIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGVidWdnZXIiCisgICAgfSwKKyAgICAiZGV2IjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiYXNlX2xpYmRpcn0vKi5hIiwKKyAgICAgICAgICAgICIke2Jhc2VfbGliZGlyfS8qLm8iLAorICAgICAgICAgICAgIiR7ZGF0YWRpcn0vYWNsb2NhbCIsCisgICAgICAgICAgICAiJHtkYXRhZGlyfS9wa2djb25maWciLAorICAgICAgICAgICAgIiR7aW5jbHVkZWRpcn0iLAorICAgICAgICAgICAgIiR7bGliZGlyfS8qLmEiLAorICAgICAgICAgICAgIiR7bGliZGlyfS8qLmxhIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vKi5vIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb25maWcvTWFrZWZpbGUiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGV2ZWxvcG1lbnQgcGFja2FnZSIKKyAgICB9LAorICAgICJkaWZmbGliIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaWZmbGliLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibGFuZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIgorICAgIH0sCisgICAgImRpc3R1dGlscyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29uZmlnIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Rpc3R1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBEaXN0cmlidXRpb24gVXRpbGl0aWVzIgorICAgIH0sCisgICAgImRpc3R1dGlscy1zdGF0aWNkZXYiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbmZpZy9saWIqLmEiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJkaXN0dXRpbHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkaXN0cmlidXRpb24gdXRpbGl0aWVzIChzdGF0aWMgbGlicmFyaWVzKSIKKyAgICB9LAorICAgICJkb2N0ZXN0IjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kb2N0ZXN0LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImRlYnVnZ2VyIiwKKyAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInVuaXR0ZXN0IgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZnJhbWV3b3JrIGZvciBydW5uaW5nIGV4YW1wbGVzIGluIGRvY3N0cmluZ3MiCisgICAgfSwKKyAgICAiZW1haWwiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2VtYWlsIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2ltYXBsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb250ZXh0bGliIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInBpY2tsZSIsCisgICAgICAgICAgICAic3VicHJvY2VzcyIsCisgICAgICAgICAgICAidGV4dHV0aWxzIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZW1haWwgc3VwcG9ydCIKKyAgICB9LAorICAgICJmY250bCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZmNudGwuc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24ncyBmY250bCBpbnRlcmZhY2UiCisgICAgfSwKKyAgICAiZ2RibSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZ2RibS5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBHTlUgZGF0YWJhc2Ugc3VwcG9ydCIKKyAgICB9LAorICAgICJob3RzaG90IjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9ob3RzaG90IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19ob3RzaG90LnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhvdHNob3QgcGVyZm9ybWFuY2UgcHJvZmlsZXIiCisgICAgfSwKKyAgICAiaHRtbCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvSFRNTFBhcnNlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mb3JtYXR0ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaHRtbGVudGl0eWRlZnMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaHRtbGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tYXJrdXBiYXNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NnbWxsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSFRNTCBwcm9jZXNzaW5nIHN1cHBvcnQiCisgICAgfSwKKyAgICAiaWRsZSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9pZGxlIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2lkbGVsaWIiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCIKKyAgICB9LAorICAgICJpbWFnZSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29sb3JzeXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW1naGRyLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGdyYXBoaWNhbCBpbWFnZSBoYW5kbGluZyIKKyAgICB9LAorICAgICJpbyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU3RyaW5nSU8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX3B5aW8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2lvLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zb2NrZXQuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NzbC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jU3RyaW5nSU8uc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvc2VsZWN0LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3Rlcm1pb3Muc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGlwZXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc29ja2V0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NzbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZW1wZmlsZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbnRleHRsaWIiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJ0ZXh0dXRpbHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBsb3ctbGV2ZWwgSS9PIgorICAgIH0sCisgICAgImpzb24iOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2pzb24iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2pzb24uc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSlNPTiBzdXBwb3J0IgorICAgIH0sCisgICAgImxhbmciOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Jpc2VjdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2RlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGVvcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZnVuY3Rvb2xzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2luc3BlY3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2Jpc2VjdC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fZnVuY3Rvb2xzLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2FycmF5LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3BhcnNlci5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9vcGNvZGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmVwci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zeW1ib2wucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdG9rZW4ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdG9rZW5pemUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbG93LWxldmVsIGxhbmd1YWdlIHN1cHBvcnQiCisgICAgfSwKKyAgICAibG9nZ2luZyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbG9nZ2luZyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJ0aHJlYWRpbmciCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBsb2dnaW5nIHN1cHBvcnQiCisgICAgfSwKKyAgICAibWFpbGJveCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbWFpbGJveC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvZGVjcyIsCisgICAgICAgICAgICAiY29udGV4dGxpYiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJlbWFpbCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJtaW1lIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInRleHR1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiCisgICAgfSwKKyAgICAibWF0aCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3JhbmRvbS5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jbWF0aC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9tYXRoLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3JhbmRvbS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zZXRzLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtYXRoIHN1cHBvcnQiCisgICAgfSwKKyAgICAibWltZSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvTWltZVdyaXRlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9taW1ldG9vbHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbWltZXR5cGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3F1b3ByaS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZmM4MjIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdXUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb250ZXh0bGliIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInRleHR1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIE1JTUUgaGFuZGxpbmcgQVBJcyIKKyAgICB9LAorICAgICJtbWFwIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9tbWFwLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1lbW9yeS1tYXBwZWQgZmlsZSBzdXBwb3J0IgorICAgIH0sCisgICAgIm1vZHVsZXMiOiB7CisgICAgICAgICJmaWxlcyI6IFtdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiMnRvMyIsCisgICAgICAgICAgICAiYXJncGFyc2UiLAorICAgICAgICAgICAgImF1ZGlvIiwKKyAgICAgICAgICAgICJic2RkYiIsCisgICAgICAgICAgICAiY29kZWNzIiwKKyAgICAgICAgICAgICJjb21waWxlIiwKKyAgICAgICAgICAgICJjb21waWxlciIsCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAorICAgICAgICAgICAgImNvbnRleHRsaWIiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJjdHlwZXMiLAorICAgICAgICAgICAgImN1cnNlcyIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImRiIiwKKyAgICAgICAgICAgICJkZWJ1Z2dlciIsCisgICAgICAgICAgICAiZGlmZmxpYiIsCisgICAgICAgICAgICAiZGlzdHV0aWxzIiwKKyAgICAgICAgICAgICJkb2N0ZXN0IiwKKyAgICAgICAgICAgICJlbWFpbCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImdkYm0iLAorICAgICAgICAgICAgImhvdHNob3QiLAorICAgICAgICAgICAgImh0bWwiLAorICAgICAgICAgICAgImlkbGUiLAorICAgICAgICAgICAgImltYWdlIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAianNvbiIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAibWFpbGJveCIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibWltZSIsCisgICAgICAgICAgICAibW1hcCIsCisgICAgICAgICAgICAibXVsdGlwcm9jZXNzaW5nIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgIm5ldHNlcnZlciIsCisgICAgICAgICAgICAibnVtYmVycyIsCisgICAgICAgICAgICAicGlja2xlIiwKKyAgICAgICAgICAgICJwa2d1dGlsIiwKKyAgICAgICAgICAgICJwbGlzdGxpYiIsCisgICAgICAgICAgICAicHByaW50IiwKKyAgICAgICAgICAgICJwcm9maWxlIiwKKyAgICAgICAgICAgICJweWRvYyIsCisgICAgICAgICAgICAicmUiLAorICAgICAgICAgICAgInJlc291cmNlIiwKKyAgICAgICAgICAgICJyb2JvdHBhcnNlciIsCisgICAgICAgICAgICAicnVucHkiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzbXRwZCIsCisgICAgICAgICAgICAic3FsaXRlMyIsCisgICAgICAgICAgICAic3FsaXRlMyIsCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJzdWJwcm9jZXNzIiwKKyAgICAgICAgICAgICJzeXNsb2ciLAorICAgICAgICAgICAgInRlcm1pbmFsIiwKKyAgICAgICAgICAgICJ0ZXh0dXRpbHMiLAorICAgICAgICAgICAgInRocmVhZGluZyIsCisgICAgICAgICAgICAidGtpbnRlciIsCisgICAgICAgICAgICAidW5pdHRlc3QiLAorICAgICAgICAgICAgInVuaXhhZG1pbiIsCisgICAgICAgICAgICAieG1sIiwKKyAgICAgICAgICAgICJ4bWxycGMiLAorICAgICAgICAgICAgInpsaWIiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIkFsbCBQeXRob24gbW9kdWxlcyIKKyAgICB9LAorICAgICJtdWx0aXByb2Nlc3NpbmciOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19tdWx0aXByb2Nlc3Npbmcuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbXVsdGlwcm9jZXNzaW5nIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJwaWNrbGUiLAorICAgICAgICAgICAgInN1YnByb2Nlc3MiLAorICAgICAgICAgICAgInRocmVhZGluZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBzdXBwb3J0IgorICAgIH0sCisgICAgIm5ldGNsaWVudCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvQ29va2llLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19MV1BDb29raWVKYXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX01vemlsbGFDb29raWVKYXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYmFzZTY0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Nvb2tpZWxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mdHBsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaG1hYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9odHRwbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L25udHBsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcG9wbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NtdHBsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGVsbmV0bGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VybGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy91cmxsaWIyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VybHBhcnNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3V1aWQucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvbnRleHRsaWIiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJjdHlwZXMiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJlbWFpbCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJtaW1lIiwKKyAgICAgICAgICAgICJwaWNrbGUiLAorICAgICAgICAgICAgInN1YnByb2Nlc3MiLAorICAgICAgICAgICAgInRleHR1dGlscyIsCisgICAgICAgICAgICAidGhyZWFkaW5nIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZXJuZXQgUHJvdG9jb2wgY2xpZW50cyIKKyAgICB9LAorICAgICJuZXRzZXJ2ZXIiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0Jhc2VIVFRQU2VydmVyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0NHSUhUVFBTZXJ2ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU2ltcGxlSFRUUFNlcnZlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Tb2NrZXRTZXJ2ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY2dpLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAorICAgICAgICAgICAgImNvbnRleHRsaWIiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInRleHR1dGlscyIsCisgICAgICAgICAgICAidGhyZWFkaW5nIiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iLAorICAgICAgICAgICAgInpsaWIiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBzZXJ2ZXJzIgorICAgIH0sCisgICAgIm51bWJlcnMiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2RlY2ltYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZnJhY3Rpb25zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L251bWJlcnMucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgInRocmVhZGluZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG51bWJlciBBUElzIgorICAgIH0sCisgICAgInBpY2tsZSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvY1BpY2tsZS5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9waWNrbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGlja2xldG9vbHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2hlbHZlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzZXJpYWxpc2F0aW9uL3BlcnNpc3RlbmNlIHN1cHBvcnQiCisgICAgfSwKKyAgICAicGtndXRpbCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGtndXRpbC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBwYWNrYWdlIGV4dGVuc2lvbiB1dGlsaXR5IHN1cHBvcnQiCisgICAgfSwKKyAgICAicGxpc3RsaWIiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BsaXN0bGliLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImlvIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJHZW5lcmF0ZSBhbmQgcGFyc2UgTWFjIE9TIFggLnBsaXN0IGZpbGVzIgorICAgIH0sCisgICAgInBwcmludCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHByaW50LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBwcmV0dHktcHJpbnQgc3VwcG9ydCIKKyAgICB9LAorICAgICJwcm9maWxlIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jUHJvZmlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbHNwcm9mLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3Byb2ZpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHN0YXRzLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29kZWNzIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJyZXNvdXJjZSIsCisgICAgICAgICAgICAidGV4dHV0aWxzIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgcGVyZm9ybWFuY2UgcHJvZmlsaW5nIHN1cHBvcnQiCisgICAgfSwKKyAgICAicHlkb2MiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vcHlkb2MiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHlkb2MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHlkb2NfZGF0YSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvZGVjcyIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAicGtndXRpbCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGludGVyYWN0aXZlIGhlbHAgc3VwcG9ydCIKKyAgICB9LAorICAgICJyZSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3JlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFJlZ3VsYXIgRXhwcmVzc2lvbiBBUElzIgorICAgIH0sCisgICAgInJlc291cmNlIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9yZXNvdXJjZS5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiByZXNvdXJjZSBjb250cm9sIGludGVyZmFjZSIKKyAgICB9LAorICAgICJyb2JvdHBhcnNlciI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcm9ib3RwYXJzZXIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb250ZXh0bGliIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJ0ZXh0dXRpbHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiByb2JvdHMudHh0IHBhcnNlciIKKyAgICB9LAorICAgICJydW5weSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcnVucHkucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJwa2d1dGlsIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGVscGVyIGZvciBsb2NhdGluZy9leGVjdXRpbmcgc2NyaXB0cyBpbiBtb2R1bGUgbmFtZXNwYWNlIgorICAgIH0sCisgICAgInNoZWxsIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jbWQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29tbWFuZHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGlyY2FjaGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZm5tYXRjaC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nbG9iLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BvcGVuMi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGxleC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaHV0aWwucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgInVuaXhhZG1pbiIsCisgICAgICAgICAgICAiemxpYiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHNoZWxsLWxpa2UgZnVuY3Rpb25hbGl0eSIKKyAgICB9LAorICAgICJzbXRwZCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9zbXRwZC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hc3luY2hhdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hc3luY29yZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbXRwZC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImZjbnRsIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibGFuZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBEYWVtb24iCisgICAgfSwKKyAgICAic3FsaXRlMyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NxbGl0ZTMuc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgInNxbGl0ZTMtdGVzdHMiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NxbGl0ZTMvdGVzdCIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInRlc3RzIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IHRlc3RzIgorICAgIH0sCisgICAgInN0cmluZ29sZCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RyaW5nb2xkLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN0cmluZyBBUElzIFtkZXByZWNhdGVkXSIKKyAgICB9LAorICAgICJzdWJwcm9jZXNzIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJwaWNrbGUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzdWJwcm9jZXNzIHN1cHBvcnQiCisgICAgfSwKKyAgICAic3lzbG9nIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zeXNsb2cuc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc3lzbG9nIGludGVyZmFjZSIKKyAgICB9LAorICAgICJ0ZXJtaW5hbCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHR5LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3R0eS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGVzdCIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXN0cyIKKyAgICB9LAorICAgICJ0ZXh0dXRpbHMiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Nzdi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3N2LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L29wdHBhcnNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3RleHR3cmFwLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29kZWNzIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibGFuZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG9wdGlvbiBwYXJzaW4iCisgICAgfSwKKyAgICAidGhyZWFkaW5nIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9RdWV1ZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fdGhyZWFkaW5nX2xvY2FsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2R1bW15X3RocmVhZC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kdW1teV90aHJlYWRpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbXV0ZXgucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGhyZWFkaW5nLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IgorICAgIH0sCisgICAgInRraW50ZXIiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi10ayIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBUY2wvVGsgYmluZGluZ3MiCisgICAgfSwKKyAgICAidW5pdHRlc3QiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VuaXR0ZXN0IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZGlmZmxpYiIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAic2hlbGwiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIgorICAgIH0sCisgICAgInVuaXhhZG1pbiI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2V0cGFzcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9ncnAuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvbmlzLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBVbml4IGFkbWluaXN0cmF0aW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAieG1sIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fZWxlbWVudHRyZWUuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcHlleHBhdC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy94bWwiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgWE1MIHN1cHBvcnQiCisgICAgfSwKKyAgICAieG1scnBjIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Eb2NYTUxSUENTZXJ2ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU2ltcGxlWE1MUlBDU2VydmVyLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29kZWNzIiwKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29udGV4dGxpYiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAibmV0c2VydmVyIiwKKyAgICAgICAgICAgICJwa2d1dGlsIiwKKyAgICAgICAgICAgICJweWRvYyIsCisgICAgICAgICAgICAidGV4dHV0aWxzIiwKKyAgICAgICAgICAgICJ0aHJlYWRpbmciLAorICAgICAgICAgICAgInhtbCIsCisgICAgICAgICAgICAiemxpYiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFhNTC1SUEMgc3VwcG9ydCIKKyAgICB9LAorICAgICJ6bGliIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC96bGliLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHpsaWIgY29tcHJlc3Npb24gc3VwcG9ydCIKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2l0ZWN1c3RvbWl6ZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zaXRlY3VzdG9taXplLnB5CmluZGV4IDI3MzkwMTguLjRjOGI1ZTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zaXRlY3VzdG9taXplLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zaXRlY3VzdG9taXplLnB5CkBAIC0yNywxOSArMjcsMTEgQEAKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgcGFzcwogCi1kZWYgX19lbmFibGVEZWZhdWx0RW5jb2RpbmcoKToKLSAgICBpbXBvcnQgc3lzCi0gICAgdHJ5OgotICAgICAgICBzeXMuc2V0ZGVmYXVsdGVuY29kaW5nKCAidXRmOCIgKQotICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKLSAgICAgICAgcGFzcwotCiBpbXBvcnQgc3lzCiB0cnk6CiAgICAgaW1wb3J0IHJsY29tcGxldGVyLCByZWFkbGluZQogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHBhc3MKIGVsc2U6Ci0gICAgX19lbmFibGVEZWZhdWx0RW5jb2RpbmcoKQogICAgIF9fcmVnaXN0ZXJFeGl0SGFuZGxlcigpCiAgICAgX19lbmFibGVSZWFkbGluZVN1cHBvcnQoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3luY18wLjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN5bmNfMC42LjIuYmIKaW5kZXggNTRhMzBmNS4uMGRhNWZkZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3luY18wLjYuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzeW5jXzAuNi4yLmJiCkBAIC0xLDYgKzEsMiBAQAotcmVxdWlyZSBweXRob24tYXN5bmMuaW5jCi0KIGluaGVyaXQgc2V0dXB0b29sczMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMtbGFuZyIKLQorcmVxdWlyZSBweXRob24tYXN5bmMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNWEwMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBEQnVzIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBzeXN0ZW0iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL1NvZnR3YXJlL2RidXMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBiODMwNDdjZTllOTQ4YjY3YzBmYWNjNWYyMzM0NzZhIgotREVQRU5EUyA9ICJleHBhdCBkYnVzIGRidXMtZ2xpYiB2aXJ0dWFsL2xpYmludGwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtcHl0aG9uL2RidXMtcHl0aG9uLSR7UFZ9LnRhci5neiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MzcyYTU4OGM4M2E3MjMyYjRlMDgxNTliZmQ0OGZlNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMmYxZDY4NzFmNzRmYmEyMzY1MmU1MWQxMDg3M2U1NGY3MWFkYWIwNTI1ODMzYzE5YmFkOWU5OWIxYjJmOWNjIgotUyA9ICIke1dPUktESVJ9L2RidXMtcHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlsczMtYmFzZSBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbZG9jc10gPSAiLS1lbmFibGUtaHRtbC1kb2NzLC0tZGlzYWJsZS1odG1sLWRvY3MscHl0aG9uMy1kb2N1dGlscy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW2FwaS1kb2NzXSA9ICItLWVuYWJsZS1hcGktZG9jcywtLWRpc2FibGUtYXBpLWRvY3MscHl0aG9uMy1kb2N1dGlscy1uYXRpdmUgcHl0aG9uMy1lcHlkb2MtbmF0aXZlIgotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLWlvIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXhtbCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmlnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5Y2JhZTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjYuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBEQnVzIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBzeXN0ZW0iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL1NvZnR3YXJlL2RidXMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIwMzI0MDUxODk5NGRmNmQ4Yzk3NDY3NTY3NWU1Y2E0IgorREVQRU5EUyA9ICJleHBhdCBkYnVzIGRidXMtZ2xpYiB2aXJ0dWFsL2xpYmludGwiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtcHl0aG9uL2RidXMtcHl0aG9uLSR7UFZ9LnRhci5neiBcCisiCisKK1JTUkNfVVJJW21kNXN1bV0gPSAiMWNlMWRkZjI1ODIwNjBmOGY5NzE2NTJlYTU0Y2MxN2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzJmMjljMTcxNzJjZGI5Y2I2MWM2OGIxZjFhNzFkZmU3MzUxNTA2ZmM4MzA4NjkwMjljNDc0NDliZDA0ZmFlYiIKK1MgPSAiJHtXT1JLRElSfS9kYnVzLXB5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBkaXN0dXRpbHMzLWJhc2UgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID89ICIiCitQQUNLQUdFQ09ORklHW2RvY3NdID0gIi0tZW5hYmxlLWh0bWwtZG9jcywtLWRpc2FibGUtaHRtbC1kb2NzLHB5dGhvbjMtZG9jdXRpbHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1thcGktZG9jc10gPSAiLS1lbmFibGUtYXBpLWRvY3MsLS1kaXNhYmxlLWFwaS1kb2NzLHB5dGhvbjMtZG9jdXRpbHMtbmF0aXZlIHB5dGhvbjMtZXB5ZG9jLW5hdGl2ZSIKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1pbyBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy14bWwiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYzJhMGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWdpdC5pbmMKLQotREVQRU5EUyA9ICJweXRob24zLWdpdGRiIgotCi1pbmhlcml0IHNldHVwdG9vbHMzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWdpdGRiIHB5dGhvbjMtbGFuZyBweXRob24zLWlvIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1tYXRoIHB5dGhvbjMtcmUgcHl0aG9uMy1zdWJwcm9jZXNzIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdW5peGFkbWluIHB5dGhvbjMtZW51bSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1kYXRldGltZSBweXRob24zLW5ldGNsaWVudCBweXRob24zLXVuaXR0ZXN0IHB5dGhvbjMtYXJncGFyc2UgZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzMyMGZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjguYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1naXQuaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzAuNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8wLjYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBkOWQ0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzAuNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1naXRkYi5pbmMKLQotREVQRU5EUyA9ICJweXRob24zLWFzeW5jIHB5dGhvbjMtc21tYXAiCi0KLWluaGVyaXQgZGlzdHV0aWxzMwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1zbW1hcCBweXRob24zLWFzeW5jIHB5dGhvbjMtbW1hcCBweXRob24zLWxhbmcgcHl0aG9uMy1pbyBweXRob24zLXNoZWxsIHB5dGhvbjMtY3J5cHQgcHl0aG9uMy1jb21wcmVzc2lvbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMTU4MzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC4zLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tZ2l0ZGIuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWluaXBhcnNlXzAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW5pcGFyc2VfMC40LmJiCmluZGV4IGY1MWNlNjQuLjRlYmE5ZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW5pcGFyc2VfMC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW5pcGFyc2VfMC40LmJiCkBAIC00LDE3ICs0LDE0IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLVBTRjttZDU9MWM3OGE1YmIzNTg0YjM1MzQ5NmQ1ZjZmMzRlZGI0YjIgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9NTJmMjgwNjVhZjExZDY5MzgyNjkzYjQ1YjVhOGViNTQiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9pL2luaXBhcnNlL2luaXBhcnNlLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1weXRob24tMy1jb21wYXRpYmlsaXR5LnBhdGNoICIKK1NSQ19VUkkgPSAiZmlsZTovLzAwMDEtQWRkLXB5dGhvbi0zLWNvbXBhdGliaWxpdHkucGF0Y2ggIgorCiBTUkNfVVJJW21kNXN1bV0gPSAiNWU1NzNlOWU5NzMzZDk3NjIzODgxY2U5YmJlNWVjYTYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWJjMWVlMTJkMmNmYjI1MDYxMDkwNzJkNmMyMWU0MGI2Yzc1YTNmZTkwYTljOTI0MzI3ZDgwYmMwZDk5YzA1NCIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2luaXBhcnNlLyIKIAotaW5oZXJpdCBkaXN0dXRpbHMzCitpbmhlcml0IHB5cGkgZGlzdHV0aWxzMwogCiBSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtc2l4IgogREVQRU5EUyArPSAicHl0aG9uMy1zaXgiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUyA9ICIke1dPUktESVJ9L2luaXBhcnNlLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMC43LmJiCmluZGV4IDJiNTBmZmQuLjIyY2VlZWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFrb18xLjAuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4wLjcuYmIKQEAgLTEsMTEgKzEsMiBAQAotcmVxdWlyZSBweXRob24tbWFrby5pbmMKLQogaW5oZXJpdCBzZXR1cHRvb2xzMwotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLXRocmVhZGluZyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWh0bWwgXAotIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorcmVxdWlyZSBweXRob24tbWFrby5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZDljODguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKLQotUFIgPSAiJHtJTkNfUFJ9LjAiCi1QWVRIT05fTUFKTUlOID0gIjMuNSIKLURJU1RST19TUkNfVVJJID89ICJmaWxlOi8vc2l0ZWN1c3RvbWl6ZS5weSIKLURJU1RST19TUkNfVVJJX2xpbnV4c3RkYmFzZSA9ICIiCi1TUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAotZmlsZTovLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaCBcCi1maWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCi1maWxlOi8vMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAotZmlsZTovLzAzMC1maXh1cC1pbmNsdWRlLWRpcnMucGF0Y2ggXAotZmlsZTovLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBcCi1maWxlOi8vMDgwLWRpc3R1dGlscy1kb250X2FkanVzdF9maWxlcy5wYXRjaCBcCi1maWxlOi8vMTMwLXJlYWRsaW5lLXNldHVwLnBhdGNoIFwKLWZpbGU6Ly8xNTAtZml4LXNldHVwdGVybS5wYXRjaCBcCi1maWxlOi8vcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaCBcCi1maWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKLWZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAotZmlsZTovL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2ggXAotZmlsZTovLzAwMDEtaDJweS1GaXgtaXNzdWUtMTMwMzItd2hlcmUtaXQtZmFpbHMtd2l0aC1Vbmljb2RlRGVjby5wYXRjaCBcCi1maWxlOi8vc3lzcm9vdC1pbmNsdWRlLWhlYWRlcnMucGF0Y2ggXAotZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAotJHtESVNUUk9fU1JDX1VSSX0gXAotZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCi1maWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKLWZpbGU6Ly8wMDAxLURvLW5vdC11c2UtdGhlLXNoZWxsLXZlcnNpb24tb2YtcHl0aG9uLWNvbmZpZy10aGF0LXcucGF0Y2ggXAotZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1N2QxZjhiZmJhYmY0ZjI1MDAyNzNmYjA3MDZlNmYyMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZWZlMmFkNjU3NTg1NTQyM2FiNjMwZjViNTFhOGVmNmU1NTU2Zjc3NDU4NGMwNmJlYWI0OTI2ZjkzMGRkYmIwIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNjgwZWQ5OWFhNjBkMzUwYzY1YTY1OTE0NDk0MjA3ZSIKLQotIyBleGNsdWRlIHByZS1yZWxlYXNlcyBmb3IgYm90aCBweXRob24gMi54IGFuZCAzLngKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIltQcF15dGhvbi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1FWFRSQU5BVElWRVBBVEggKz0gImJ6aXAyLW5hdGl2ZSIKLURFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIHpsaWItbmF0aXZlIHJlYWRsaW5lLW5hdGl2ZSBzcWxpdGUzLW5hdGl2ZSIKLQotaW5oZXJpdCBuYXRpdmUKLQotcmVxdWlyZSBweXRob24tbmF0aXZlLSR7UFlUSE9OX01BSk1JTn0tbWFuaWZlc3QuaW5jCi0KLSMgdW5pbmF0aXZlIG1heSBiZSB1c2VkIG9uIHByZSBnbGliYyAyLjI1IHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBnZXRlbnRyb3B5Ci1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0gLS13aXRob3V0LWVuc3VyZXBpcCBhY19jdl9mdW5jX2dldGVudHJvcHk9bm8iCi0KLUVYVFJBX09FTUFLRSA9ICdcCi0gIExJQkM9IiIgXAotICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAotICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0gXAotICBMSUI9JHtiYXNlbGlifSBcCi0gIEFSQ0g9JHtUQVJHRVRfQVJDSH0gXAotJwotCi0jIE5vIGN0eXBlcyBvcHRpb24gZm9yIHB5dGhvbiAzCi1QWVRIT05MU0JPUFRTID0gIiIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi0Jc2VkIC1pIC1lICdzLCNkZWZpbmUgSEFWRV9HRVRSQU5ET00gMSwvXCogI3VuZGVmIEhBVkVfR0VUUkFORE9NIFwqLywnICR7Qn0vcHljb25maWcuaAotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQotCWZpCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7UE59Ci0JaW5zdGFsbCAtbSAwNzU1IFBhcnNlci9wZ2VuICR7RH0ke2JpbmRpcn0vJHtQTn0KLQotCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0JZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbwotCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAotCWRvbmUKLQotCSMgVGVzdHMgYXJlIGxhcmdlIGFuZCB3ZSBkb24ndCBuZWVkIHRoZW0gaW4gdGhlIG5hdGl2ZSBzeXNyb290Ci0Jcm0gJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3Rlc3QgLXJmCi19Ci0KLVJQUk9WSURFUyArPSAicHl0aG9uMy1taXNjLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA5ODAyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS41LmJiCkBAIC0wLDAgKzEsMTEyIEBACityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKKworUFIgPSAiJHtJTkNfUFJ9LjAiCitQWVRIT05fTUFKTUlOID0gIjMuNSIKK0RJU1RST19TUkNfVVJJID89ICJmaWxlOi8vc2l0ZWN1c3RvbWl6ZS5weSIKK0RJU1RST19TUkNfVVJJX2xpbnV4c3RkYmFzZSA9ICIiCitTUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAorZmlsZTovLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaCBcCitmaWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCitmaWxlOi8vMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAorZmlsZTovLzAzMC1maXh1cC1pbmNsdWRlLWRpcnMucGF0Y2ggXAorZmlsZTovLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBcCitmaWxlOi8vMDgwLWRpc3R1dGlscy1kb250X2FkanVzdF9maWxlcy5wYXRjaCBcCitmaWxlOi8vMTMwLXJlYWRsaW5lLXNldHVwLnBhdGNoIFwKK2ZpbGU6Ly8xNTAtZml4LXNldHVwdGVybS5wYXRjaCBcCitmaWxlOi8vcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaCBcCitmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKK2ZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAorZmlsZTovL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2ggXAorZmlsZTovLzAwMDEtaDJweS1GaXgtaXNzdWUtMTMwMzItd2hlcmUtaXQtZmFpbHMtd2l0aC1Vbmljb2RlRGVjby5wYXRjaCBcCitmaWxlOi8vc3lzcm9vdC1pbmNsdWRlLWhlYWRlcnMucGF0Y2ggXAorZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAorJHtESVNUUk9fU1JDX1VSSX0gXAorZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCitmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLURvLW5vdC11c2UtdGhlLXNoZWxsLXZlcnNpb24tb2YtcHl0aG9uLWNvbmZpZy10aGF0LXcucGF0Y2ggXAorZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaCBcCitmaWxlOi8vcmVnZW4tYWxsLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImYzNzYzZWRmOTgyNGQ1ZDNhMTVmNWY2NDYwODNiNmUwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2M2QyYzNiMDQwMmQ2MTkxYjkwNzMxZTBmNzM1YzY0ODMwZTc1MjIzNDhhZWI3ZWQzODJhODMxNjVkNDUwMDkiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2ZWM1MTViMjI2MThmNTVmYTA3Mjc2Yjg5N2JhY2VhIgorCisjIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisKK1MgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCisKK0VYVFJBTkFUSVZFUEFUSCArPSAiYnppcDItbmF0aXZlIgorREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgemxpYi1uYXRpdmUgcmVhZGxpbmUtbmF0aXZlIHNxbGl0ZTMtbmF0aXZlIGdkYm0tbmF0aXZlIgorCitpbmhlcml0IG5hdGl2ZQorCitFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0gLS13aXRob3V0LWVuc3VyZXBpcCIKKworRVhUUkFfT0VNQUtFID0gJ1wKKyAgTElCQz0iIiBcCisgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCisgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBcCisgIExJQj0ke2Jhc2VsaWJ9IFwKKyAgQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisnCisKKyMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKK1BZVEhPTkxTQk9QVFMgPSAiIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKKwlzZWQgLWkgLWUgJ3MsI2RlZmluZSBIQVZFX0dFVFJBTkRPTSAxLC9cKiAjdW5kZWYgSEFWRV9HRVRSQU5ET00gXCovLCcgJHtCfS9weWNvbmZpZy5oCit9CisKKyMgUmVnZW5lcmF0ZSBhbGwgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcworIyBUaGlzIGVuc3VyZXMgdGhhdCBwZ2VuIGFuZCBmcmllbmRzIGdldCBjcmVhdGVkIGR1cmluZyB0aGUgY29tcGlsZSBwaGFzZQorIworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICMgQXNzdW1pbmcgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzMzA4MCBoYXMgYmVlbiBhZGRyZXNzZWQgaW4gTWFrZWZpbGUuCisgICAgb2VfcnVubWFrZSByZWdlbi1hbGwKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8ke1BOfQorCWluc3RhbGwgLW0gMDc1NSBQYXJzZXIvcGdlbiAke0R9JHtiaW5kaXJ9LyR7UE59CisKKwkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbgorCWZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9LyR7UE59L3B5dGhvbiAke0R9JHtiaW5kaXJ9LyR7UE59YDsgZG8KKwkJc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob24zfCcgJFBZVEhTQ1JJUFQKKwlkb25lCisKKyAgICAgICAgIyBBZGQgYSBzeW1saW5rIHRvIHRoZSBuYXRpdmUgUHl0aG9uIHNvIHRoYXQgc2NyaXB0cyBjYW4ganVzdCBpbnZva2UKKyAgICAgICAgIyAibmF0aXZlcHl0aG9uIiBhbmQgZ2V0IHRoZSByaWdodCBvbmUgd2l0aG91dCBuZWVkaW5nIGFic29sdXRlIHBhdGhzCisgICAgICAgICMgKHRoZXNlIG9mdGVuIGVuZCB1cCB0b28gbG9uZyBmb3IgdGhlICMhIHBhcnNlciBpbiB0aGUga2VybmVsIGFzIHRoZQorICAgICAgICAjIGJ1ZmZlciBpcyAxMjggYnl0ZXMgbG9uZykuCisgICAgICAgIGxuIC1zIHB5dGhvbjMtbmF0aXZlL3B5dGhvbjMgJHtEfSR7YmluZGlyfS9uYXRpdmVweXRob24zCit9CisKK3B5dGhvbigpeworCisgICAgIyBSZWFkIEpTT04gbWFuaWZlc3QKKyAgICBpbXBvcnQganNvbgorICAgIHB5dGhvbmRpciA9IGQuZ2V0VmFyKCdUSElTRElSJyxUcnVlKQorICAgIHdpdGggb3BlbihweXRob25kaXIrJy9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbicpIGFzIG1hbmlmZXN0X2ZpbGU6CisgICAgICAgIHB5dGhvbl9tYW5pZmVzdD1qc29uLmxvYWQobWFuaWZlc3RfZmlsZSkKKworICAgIHJwcm92aWRlcyA9IGQuZ2V0VmFyKCdSUFJPVklERVMnKS5zcGxpdCgpCisKKyAgICAjIEhhcmRjb2RlZCBzaW5jZSBpdCBjYW50IGJlIHB5dGhvbjMtbmF0aXZlLWZvbywgc2hvdWxkIGJlIHB5dGhvbjMtZm9vLW5hdGl2ZQorICAgIHBuID0gJ3B5dGhvbjMnCisKKyAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKKyAgICAgICAgcHlwYWNrYWdlID0gcG4gKyAnLScgKyBrZXkgKyAnLW5hdGl2ZScKKyAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBycHJvdmlkZXM6CisgICAgICAgICAgICAgIHJwcm92aWRlcy5hcHBlbmQocHlwYWNrYWdlKQorCisgICAgZC5zZXRWYXIoJ1JQUk9WSURFUycsICcgJy5qb2luKHJwcm92aWRlcykpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5vc2VfMS4zLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5vc2VfMS4zLjcuYmIKaW5kZXggMWUyZmY3NC4uOGJjMWY0OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ub3NlXzEuMy43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbm9zZV8xLjMuNy5iYgpAQCAtMSwyOCArMSw2IEBACi1TVU1NQVJZID0gIkV4dGVuZHMgUHl0aG9uIHVuaXR0ZXN0IHRvIG1ha2UgdGVzdGluZyBlYXNpZXIiCi1ERVNDUklQVElPTiA9ICJub3NlIGV4dGVuZHMgdGhlIHRlc3QgbG9hZGluZyBhbmQgcnVubmluZyBmZWF0dXJlcyBvZiB1bml0dGVzdCwgXAotbWFraW5nIGl0IGVhc2llciB0byB3cml0ZSwgZmluZCBhbmQgcnVuIHRlc3RzLiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xncGwudHh0O21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL24vbm9zZS9ub3NlLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRkM2FkMGZmMDdiNjEzNzNkMmNlZmM4OWM1ZDBiMjBiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxYmZmZWY5Y2JjODI2MjhmNmU3ZDdiNDBkN2UyNTVhZWZhYTFhZGI2YTFiMWQyNmM2OWE4Yjc5ZTYyMDhhOTgiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL25vc2UvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL25vc2UvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspIgotCi1TID0gIiR7V09SS0RJUn0vbm9zZS0ke1BWfSIKLQogaW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tbm9zZS5pbmMKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAgICAgbXYgJHtEfSR7YmluZGlyfS9ub3NldGVzdHMgJHtEfSR7YmluZGlyfS9ub3NldGVzdHMzCiB9Ci0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJcCi0gIHB5dGhvbjMtdW5pdHRlc3QgXAotICAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzkuMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliOTA3YTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBQeVBBIHJlY29tbWVuZGVkIHRvb2wgZm9yIGluc3RhbGxpbmcgUHl0aG9uIHBhY2thZ2VzIgotc0hPTUVQQUdFc3NzID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGlwIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0yNWZiYTQ1MTA5NTY1Zjg3ZGUyMGJhZTg1YmMzOTQ1MiIKLQotU1JDTkFNRSA9ICJwaXAiCi1ERVBFTkRTICs9ICJweXRob24zIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9wLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNWYwMWRhMzMwMDk3MTk0OTdmMDFhNGJhNjlkNjNjOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOWYyNDNlMWE3YjQ2MWY2NTRjMjZhNzI1ZmEzNzMyMTFiYjdmZjE3YTkzMDAwNThiMjA1YzYxNjU4Y2E5NDBkIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9waXAiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlsczMKLQotRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiLS1pbnN0YWxsLWxpYj0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotfQotCi0jIFVzZSBzZXR1cHRvb2xzIHNpdGUucHkgaW5zdGVhZCwgYXZvaWQgc2hhcmVkIHN0YXRlIGlzc3VlCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2l0ZS5weQotICAgIHJtICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9fX3B5Y2FjaGVfXy9zaXRlLmNweXRob24tKi5weWMKLQotICAgICMgSW5zdGFsbCBhcyBwaXAzIGFuZCBsZWF2ZSBwaXAyIGFzIGRlZmF1bHQKLSAgICBybSAke0R9LyR7YmluZGlyfS9waXAKLQotICAgICMgSW5zdGFsbGVkIGVnZ3MgbmVlZCB0byBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGludGVycHJldGVyIHZpYSBhIHB0aCBmaWxlCi0gICAgZWNobyAiLi8ke1NSQ05BTUV9LSR7UFZ9LXB5JHtQWVRIT05fQkFTRVZFUlNJT059LmVnZyIgPiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vJHtTUkNOQU1FfS0ke1BWfS5wdGgKLQotICAgICMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uMwotICAgIGZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9ICR7RH0ke2JpbmRpcn0vcGlwMypgOyBkbwotICAgICAgICBzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAotICAgIGRvbmUKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICBweXRob24zLWNvbXBpbGUgXAotICBweXRob24zLWlvIFwKLSAgcHl0aG9uMy1lbnVtIFwKLSAgcHl0aG9uMy1odG1sIFwKLSAgcHl0aG9uMy1qc29uIFwKLSAgcHl0aG9uMy1uZXRzZXJ2ZXIgXAotICBweXRob24zLXNldHVwdG9vbHMgXAotICBweXRob24zLXVuaXhhZG1pbiBcCi0gIHB5dGhvbjMteG1scnBjIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF85LjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2ZkNmRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjIuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJUaGUgUHlQQSByZWNvbW1lbmRlZCB0b29sIGZvciBpbnN0YWxsaW5nIFB5dGhvbiBwYWNrYWdlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGlwIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0yNWZiYTQ1MTA5NTY1Zjg3ZGUyMGJhZTg1YmMzOTQ1MiIKKworREVQRU5EUyArPSAicHl0aG9uMyBweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmZkZGQ2ODA0MjIzMjZiOWQxZmJmNTYxMTJjZjM0MWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODgxMTBhMjI0ZTlkMzBlNWQ3NjU5MmEwYjIxMzBlZjEwZTdlNjdhNjQyNmU4NjE3YmI5MThmZmZiZmU5MWZlNSIKKworaW5oZXJpdCBweXBpIGRpc3R1dGlsczMKKworRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiLS1pbnN0YWxsLWxpYj0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQorfQorCisjIFVzZSBzZXR1cHRvb2xzIHNpdGUucHkgaW5zdGVhZCwgYXZvaWQgc2hhcmVkIHN0YXRlIGlzc3VlCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2l0ZS5weQorICAgIHJtICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9fX3B5Y2FjaGVfXy9zaXRlLmNweXRob24tKi5weWMKKworICAgICMgSW5zdGFsbCBhcyBwaXAzIGFuZCBsZWF2ZSBwaXAyIGFzIGRlZmF1bHQKKyAgICBybSAke0R9LyR7YmluZGlyfS9waXAKKworICAgICMgSW5zdGFsbGVkIGVnZ3MgbmVlZCB0byBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGludGVycHJldGVyIHZpYSBhIHB0aCBmaWxlCisgICAgZWNobyAiLi8ke1BZUElfUEFDS0FHRX0tJHtQVn0tcHkke1BZVEhPTl9CQVNFVkVSU0lPTn0uZWdnIiA+ICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8ke1BZUElfUEFDS0FHRX0tJHtQVn0ucHRoCisKKyAgICAjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAgICBmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfSAke0R9JHtiaW5kaXJ9L3BpcDMqYDsgZG8KKyAgICAgICAgc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob24zfCcgJFBZVEhTQ1JJUFQKKyAgICBkb25lCit9CisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgcHl0aG9uMy1jb21waWxlIFwKKyAgcHl0aG9uMy1pbyBcCisgIHB5dGhvbjMtaHRtbCBcCisgIHB5dGhvbjMtanNvbiBcCisgIHB5dGhvbjMtbmV0c2VydmVyIFwKKyAgcHl0aG9uMy1zZXR1cHRvb2xzIFwKKyAgcHl0aG9uMy11bml4YWRtaW4gXAorICBweXRob24zLXhtbHJwYyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjU4YmExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIENhaXJvIGNhbnZhcyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3B5Y2Fpcm8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAicHl0aG9uLWRldmVsIgotTElDRU5TRSA9ICJMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCi0KLSMgY2Fpcm8gPj0gMS44LjgKLURFUEVORFMgPSAiY2Fpcm8iCi1QUiA9ICJyMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcmVsZWFzZXMvcHljYWlyby0ke1BWfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTZmZDNmMmYxZTZhNzJlMGRiMDg2OGM0OTg1NjY5YzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWFhNDA3OGU3ZWI1YmU1ODNhZWFiYmU4ZDg3MTcyNzk3NzE3Zjk1ZThjNDMzOGYwZDRhMTdiNjgzYTcyNTNiZSIKLQotUyA9ICIke1dPUktESVJ9L3B5Y2Fpcm8tJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzMyBwa2djb25maWcKLQotQ0ZMQUdTICs9ICItZlBJQyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQlQWVRIT049JHtQWVRIT059IC4vd2FmIGNvbmZpZ3VyZSAtLXByZWZpeD0ke0R9JHtwcmVmaXh9IC0tbGliZGlyPSR7RH0ke2xpYmRpcn0KLX0KLQotZG9fY29tcGlsZSgpIHsKLQkuL3dhZiBidWlsZCAke1BBUkFMTEVMX01BS0V9Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JLi93YWYgaW5zdGFsbAotCXNlZCBcCi0JCS1lICdzOkBwcmVmaXhAOiR7cHJlZml4fTonIFwKLQkJLWUgJ3M6QFZFUlNJT05AOiR7UFZ9OicgXAotCQktZSAnczpAaW5jbHVkZWRpckA6JHtpbmNsdWRlZGlyfTonIFwKLQkJcHkzY2Fpcm8ucGMuaW4gPiBweTNjYWlyby5wYwotCWluc3RhbGwgLW0gMDY0NCBweTNjYWlyby5wYyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjE1LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xNS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjM2UxZTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xNS42LmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgQ2Fpcm8gY2FudmFzIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcHljYWlybyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnIgorU0VDVElPTiA9ICJweXRob24tZGV2ZWwiCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgTVBMdjEuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyZTA3MWFiNzI5Nzg0MzFiMjk0YTBkNjk2MzI3NDIxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctTEdQTC0yLjE7bWQ1PWZhZDliMzMzMmJlODk0YmFiOWJjNTAxNTcyODY0YjI5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctTVBMLTEuMTttZDU9YmZlMWY3NWQ2MDY5MTJhNDExMWM5MDc0M2Q2YzczMjUiCisKKyMgY2Fpcm8gPj0gMS4xNAorREVQRU5EUyA9ICJjYWlybyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHlnb2JqZWN0L3B5Y2Fpcm8vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L3B5Y2Fpcm8tJHtQVn0udGFyLmd6IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weWdvYmplY3QvcHljYWlyby9yZWxlYXNlcy8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZmYyMTBjMzRlN2IwNTI1OTBlMTVmZDBmYjE0Nzc2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZDE1MGVhNjM3ODYwODM2YjY2NzA1ZTA1MTNiOGU1OTQ5NDUzOGYwYjgwNDk3YWQzNDYyMDUxMzY4NzU1MDE2IgorCitTID0gIiR7V09SS0RJUn0vcHljYWlyby0ke1BWfSIKKworaW5oZXJpdCBzZXR1cHRvb2xzMyBwa2djb25maWcKKworQ0ZMQUdTICs9ICItZlBJQyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vcHljYWlyby8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtEfSR7ZGF0YWRpcn0vaW5jbHVkZS9weWNhaXJvL3B5M2NhaXJvLmggJHtEfSR7aW5jbHVkZWRpcn0vcHljYWlyby8KK30KK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2luY2x1ZGUvcHljYWlyby9weTNjYWlyby5oIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3QvMDAwMS1jb25maWd1cmUuYWMtRG9uLXQtdXNlLWdub21lLWNvbW1vbi1tYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC11c2UtZ25vbWUtY29tbW9uLW1hY3Jvcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFlZGI1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC11c2UtZ25vbWUtY29tbW9uLW1hY3Jvcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gMjA2MzYwNzQ0Y2VkZmYyMGVhZTNjOGZjZmRlOTkzOGZkYWU5OTU5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDYgSnVsIDIwMTcgMTE6NDc6MjEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBEb24ndCB1c2UgZ25vbWUtY29tbW9uIG1hY3JvcwotCi1yZW1vdmUgR05PTUVfQ09NUElMRV9XQVJOSU5HUygpIGNhbGw6IGl0J3MgZnJvbSBnbm9tZS1jb21tb24gd2hpY2gKLWlzIGRlcHJlY2F0ZWQuCi0KLVRoaXMgcGF0Y2ggY2FuIGJlIHJlbW92ZWQgd2hlbiB1cGdyYWRpbmcgdG8gMy4yNS4xOiBhdCB0aGF0IHBvaW50Ci1weWdvYmplY3QgbmVlZHMgYXV0b2NvbmYtYXJjaGl2ZSBpbnN0ZWFkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0FscmVhZHkgaGFuZGxlZCB1cHN0cmVhbV0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyIC0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFmMTViM2MuLjVjYjE3MGYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTIyMSw4ICsyMjEsNiBAQCBBQ19BUkdfV0lUSChjb21tb24sCi0gICAgIHdpdGhfY29tbW9uPXllcykKLSBBTV9DT05ESVRJT05BTChXSVRIX0NPTU1PTiwgdGVzdCAiJHdpdGhfY29tbW9uIiA9ICJ5ZXMiKQotIAotLSMgY29tcGlsZXIgd2FybmluZ3MsIGVycm9ycywgcmVxdWlyZWQgY2ZsYWdzLCBhbmQgY29kZSBjb3ZlcmFnZSBzdXBwb3J0Ci0tR05PTUVfQ09NUElMRV9XQVJOSU5HUyhbbWF4aW11bV0sIFstV25vLWVycm9yPW1pc3NpbmctcHJvdG90eXBlc10pCi0gQUNfTVNHX0NIRUNLSU5HKGZvciBHbm9tZSBjb2RlIGNvdmVyYWdlIHN1cHBvcnQpCi0gbTRfaWZkZWYoW0dOT01FX0NPREVfQ09WRVJBR0VdLAotICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKHllcykKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3QvMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3QvMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzkxZjdlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gNWU1MzUwZDczMGY4NTk1N2E0MmM2ZDg0NmQzNDdkMDgwZTdkZDk5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMyBPY3QgMjAxNSAxMjo0MDozNCArMDMwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGFkZCBzeXNyb290IHBhdGggdG8gR0lfREFUQURJUjsgZG9uJ3Qgc2V0Ci0gaW50cm9zcGVjdGlvbiBzY2FubmVyIGFuZCBjb21waWxlciBwYXRocwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIG1haWxsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA4ICstLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyYzBjZmJkLi5jZmNiM2JmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xOTQsNyArMTk0LDcgQEAgUEtHX0NIRUNLX01PRFVMRVMoR0ksCi0gICAgIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAgPj0gaW50cm9zcGVjdGlvbl9yZXF1aXJlZF92ZXJzaW9uCi0gKQotIAotLUdJX0RBVEFESVI9JCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdpZGF0YWRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wKQotK0dJX0RBVEFESVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIkKCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lkYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjApCi0gQUNfU1VCU1QoR0lfREFUQURJUikKLSAKLSBpZiB0ZXN0ICIkZW5hYmxlX2NhaXJvIiAhPSBubzsgdGhlbgotQEAgLTIxOSwxMiArMjE5LDYgQEAgQUNfQVJHX1dJVEgoY29tbW9uLAotICAgICB3aXRoX2NvbW1vbj15ZXMpCi0gQU1fQ09ORElUSU9OQUwoV0lUSF9DT01NT04sIHRlc3QgIiR3aXRoX2NvbW1vbiIgPSAieWVzIikKLSAKLS1JTlRST1NQRUNUSU9OX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9zY2FubmVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tSU5UUk9TUEVDVElPTl9DT01QSUxFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tCi0tQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKQotLUFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCi0tCi0gIyBjb21waWxlciB3YXJuaW5ncywgZXJyb3JzLCByZXF1aXJlZCBjZmxhZ3MsIGFuZCBjb2RlIGNvdmVyYWdlIHN1cHBvcnQKLSBHTk9NRV9DT01QSUxFX1dBUk5JTkdTKFttYXhpbXVtXSkKLSBBQ19NU0dfQ0hFQ0tJTkcoZm9yIEdub21lIGNvZGUgY292ZXJhZ2Ugc3VwcG9ydCkKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDEwYWYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIEdPYmplY3QgYmluZGluZ3MiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBkaXN0dXRpbHMzLWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTICs9ICJweXRob24zIGdsaWItMi4wIgotCi1TUkNOQU1FPSJweWdvYmplY3QiCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvJHtTUkNOQU1FfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7U1JDTkFNRX0tJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtRG9uLXQtdXNlLWdub21lLWNvbW1vbi1tYWNyb3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjlhODQzMzExZDBmMDM4NWRmZjM3NmUxMWEyZDgzZDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTYyOGE5NWFhMDkwOWUxM2ZiMDgyMzBiMWI5OGZjNDhhZGVmMTBiMjIwOTMyZjc2ZDYyZjY4MjFiM2ZkYmZmZCIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgWyAnZGlyZWN0ZmInLCAnd2F5bGFuZCcsICd4MTEnIF0sICdjYWlybycsICcnLCBkKX0iCi0KLSMgcHl0aG9uMy1weWNhaXJvIGlzIGNoZWNrZWQgb24gY29uZmlndXJhdGlvbiAtPiBERVBFTkRTCi0jIHdlIGRvbid0IGxpbmsgYWdhaW5zdCBweXRob24zLXB5Y2Fpcm8gLT4gUkRFUEVORFMKLVBBQ0tBR0VDT05GSUdbY2Fpcm9dID0gIi0tZW5hYmxlLWNhaXJvLC0tZGlzYWJsZS1jYWlybyxjYWlybyBweXRob24zLXB5Y2Fpcm8sIHB5dGhvbjMtcHljYWlybyIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtc2V0dXB0b29scyBweXRob24zLWltcG9ydGxpYiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI4LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI4LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcyODZmNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjguMS5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIlB5dGhvbiBHT2JqZWN0IGJpbmRpbmdzIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCisKK2luaGVyaXQgZ25vbWViYXNlIGRpc3R1dGlsczMtYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0RFUEVORFMgKz0gInB5dGhvbjMgZ2xpYi0yLjAiCisKK1NSQ05BTUU9InB5Z29iamVjdCIKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy8ke1NSQ05BTUV9LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtTUkNOQU1FfS0ke1BWfS50YXIueHogXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjEyZTllMjg2M2QxMTdkODEwZTc4NjcyZjdiYzNhZDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDIzMTJiNGE1MDE1NTcxZmEwYTRmMmQyMDEwMDVkYTQ2YjcxYzI1MWVhMjYyNWJjOTU3MDJkMDcxYzRmZjg5NSIKKworUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsIFsgJ2RpcmVjdGZiJywgJ3dheWxhbmQnLCAneDExJyBdLCAnY2Fpcm8nLCAnJywgZCl9IgorCisjIHB5dGhvbjMtcHljYWlybyBpcyBjaGVja2VkIG9uIGNvbmZpZ3VyYXRpb24gLT4gREVQRU5EUworIyB3ZSBkb24ndCBsaW5rIGFnYWluc3QgcHl0aG9uMy1weWNhaXJvIC0+IFJERVBFTkRTCitQQUNLQUdFQ09ORklHW2NhaXJvXSA9ICItLWVuYWJsZS1jYWlybywtLWRpc2FibGUtY2Fpcm8sY2Fpcm8gcHl0aG9uMy1weWNhaXJvLCBweXRob24zLXB5Y2Fpcm8iCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXNldHVwdG9vbHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM2LjIuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18zNi4yLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YmNhOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM2LjIuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCi0KLURFUEVORFMgKz0gInB5dGhvbjMiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAicHl0aG9uMy1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayArPSAibmF0aXZlc2RrLXB5dGhvbjMiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgbXYgJHtEfSR7YmluZGlyfS9lYXN5X2luc3RhbGwgJHtEfSR7YmluZGlyfS9lYXN5M19pbnN0YWxsCi19Ci0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICJcCi0gIHB5dGhvbjMtZGlzdHV0aWxzIFwKLSAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCi0iCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbjMtY3R5cGVzIFwKLSAgcHl0aG9uMy1kaXN0dXRpbHMgXAotICBweXRob24zLWVtYWlsIFwKLSAgcHl0aG9uMy1pbXBvcnRsaWIgXAotICBweXRob24zLW51bWJlcnMgXAotICBweXRob24zLWNvbXByZXNzaW9uIFwKLSAgcHl0aG9uMy1zaGVsbCBcCi0gIHB5dGhvbjMtc3VicHJvY2VzcyBcCi0gIHB5dGhvbjMtdGV4dHV0aWxzIFwKLSAgcHl0aG9uMy1wa2d1dGlsIFwKLSAgcHl0aG9uMy10aHJlYWRpbmcgXAotICBweXRob24zLW1pc2MgXAotICBweXRob24zLXVuaXR0ZXN0IFwKLSAgcHl0aG9uMy14bWwgXAotIgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM5LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18zOS4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRjMWVkOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18zOS4wLjAuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIHB5dGhvbi1zZXR1cHRvb2xzLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBtdiAke0R9JHtiaW5kaXJ9L2Vhc3lfaW5zdGFsbCAke0R9JHtiaW5kaXJ9L2Vhc3kzX2luc3RhbGwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhhNDdiNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXNpeC5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtaW8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjExLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjExLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5NTMxMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTEuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXNpeC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21tYXBfMC45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNtbWFwXzAuOS4wLmJiCmluZGV4IDlmOGEyNmQuLmU4N2I4ZGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21tYXBfMC45LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbW1hcF8wLjkuMC5iYgpAQCAtMSw1ICsxLDIgQEAKLXJlcXVpcmUgcHl0aG9uLXNtbWFwLmluYwotCiBpbmhlcml0IHNldHVwdG9vbHMzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWNvZGVjcyBweXRob24zLW1tYXAgcHl0aG9uMy1sYW5nIgorcmVxdWlyZSBweXRob24tc21tYXAuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaAppbmRleCAxMThkNzVkLi43Y2Q3ZTNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDYyNGMwMjlhYmNjNzNjNzI0MDIwY2NlYTlhMmI0YjViNWMwMGYyYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVjZGUzZWExNzA5OTlhOWVmNzM0ZThhZjRkN2MyNWJlNWJhODE2OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTU6NDI6NDYgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gY3Jvc3MtY29tcGlsZSBzdXBwb3J0CkBAIC04LDYwICs4LDYzIEBACiAKIC1LaGVtCiAKK1JlYmFzZWQgb24gMy41LjQKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW0NvbmZpZ3VyYXRpb24gU3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+CiAtLS0KICBNYWtlZmlsZS5wcmUuaW4gfCAxNCArKysrKysrKy0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5wcmUuaW4gYi9NYWtlZmlsZS5wcmUuaW4KLWluZGV4IGE4OGI3ZDUuLjdjYjhiYjMgMTAwNjQ0CitpbmRleCAxNDRjMWY4NjI5Li5mMjUyYWMyNDE3IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUucHJlLmluCiArKysgYi9NYWtlZmlsZS5wcmUuaW4KLUBAIC0yMjEsNiArMjIxLDcgQEAgTElCT0JKUz0JQExJQk9CSlNACi0gCitAQCAtMjIzLDYgKzIyMyw3IEBAIExJQk9CSlM9CUBMSUJPQkpTQAorCiAgUFlUSE9OPQkJcHl0aG9uJChFWEUpCiAgQlVJTERQWVRIT049CXB5dGhvbiQoQlVJTERFWEUpCiArSE9TVFBZVEhPTj0gICAgJChCVUlMRFBZVEhPTikKLSAKLSBQWVRIT05fRk9SX0dFTj1AUFlUSE9OX0ZPUl9HRU5ACisKKyBQWVRIT05fRk9SX1JFR0VOPUBQWVRIT05fRk9SX1JFR0VOQAogIFBZVEhPTl9GT1JfQlVJTEQ9QFBZVEhPTl9GT1JfQlVJTERACi1AQCAtMjgwLDYgKzI4MSw3IEBAIExJQkZGSV9JTkNMVURFRElSPQlATElCRkZJX0lOQ0xVREVESVJACitAQCAtMjc3LDYgKzI3OCw3IEBAIExJQkZGSV9JTkNMVURFRElSPQlATElCRkZJX0lOQ0xVREVESVJACiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIFBhcnNlcgogIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQogK0hPU1RQR0VOPQkkKFBHRU4pJChFWEUpCi0gCisKICBQU1JDUz0JCVwKICAJCVBhcnNlci9hY2NlbGVyLmMgXAotQEAgLTUxMCw3ICs1MTIsNyBAQCBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZToKLSAKK0BAIC00NzgsNyArNDgwLDcgQEAgYnVpbGRfYWxsX2dlbmVyYXRlX3Byb2ZpbGU6CisKICBydW5fcHJvZmlsZV90YXNrOgogIAk6ICMgRklYTUU6IGNhbid0IHJ1biBmb3IgYSBjcm9zcyBidWlsZAogLQkkKExMVk1fUFJPRl9GSUxFKSAkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykgfHwgdHJ1ZQogKwkkKExMVk1fUFJPRl9GSUxFKSAkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykgfHwgdHJ1ZQotIAorCiAgYnVpbGRfYWxsX21lcmdlX3Byb2ZpbGU6CiAgCSQoTExWTV9QUk9GX01FUkdFUikKLUBAIC03ODcsNyArNzg5LDcgQEAgJChJT19PQkpTKTogJChJT19IKQotIAotICQoR1JBTU1BUl9IKTogQEdFTkVSQVRFRF9DT01NRU5UQCAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTikKK0BAIC03NzIsNyArNzc0LDcgQEAgcmVnZW4tZ3JhbW1hcjogJChQR0VOKQorIAkjIFJlZ2VuZXJhdGUgSW5jbHVkZS9ncmFtaW5pdC5oIGFuZCBQeXRob24vZ3JhbWluaXQuYworIAkjIGZyb20gR3JhbW1hci9HcmFtbWFyIHVzaW5nIHBnZW4KICAJQCQoTUtESVJfUCkgSW5jbHVkZQotLQkkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotKwkkKEhPU1RQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQykKLSAkKEdSQU1NQVJfQyk6IEBHRU5FUkFURURfQ09NTUVOVEAgJChHUkFNTUFSX0gpCi0gCXRvdWNoICQoR1JBTU1BUl9DKQotIAotQEAgLTk3Niw3ICs5NzgsNyBAQCAkKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBQcm9ncmFtcy9weXRob24ubzogJChQWVRIT05fSEVBREVSUykKKy0JJChQR0VOKSAkKHNyY2RpcikvR3JhbW1hci9HcmFtbWFyIFwKKysJJChIT1NUUEdFTikgJChzcmNkaXIpL0dyYW1tYXIvR3JhbW1hciBcCisgCQkkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oIFwKKyAJCSQoc3JjZGlyKS9QeXRob24vZ3JhbWluaXQuYworCitAQCAtOTc4LDcgKzk4MCw3IEBAICQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIFByb2dyYW1zL3B5dGhvbi5vOiAkKFBZVEhPTl9IRUFERVJTKQogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAKKwogIFRFU1RPUFRTPQkkKEVYVFJBVEVTVE9QVFMpCiAtVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKICtURVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQogIFRFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CiAgVEVTVFRJTUVPVVQ9CTM2MDAKLSAKLUBAIC0xNDY4LDcgKzE0NzAsNyBAQCBmcmFtZXdvcmtpbnN0YWxsc3RydWN0dXJlOgkkKExETElCUkFSWSkKKworQEAgLTE0NzAsNyArMTQ3Miw3IEBAIGZyYW1ld29ya2luc3RhbGxzdHJ1Y3R1cmU6CSQoTERMSUJSQVJZKQogIAkJZmk7IFwKICAJZG9uZQogIAkkKExOKSAtZnNuIGluY2x1ZGUvcHl0aG9uJChMRFZFUlNJT04pICQoREVTVERJUikkKHByZWZpeCkvSGVhZGVycwpAQCAtNzAsMjQgKzczLDI0IEBACiAgCSQoTE4pIC1mc24gJChWRVJTSU9OKSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS9WZXJzaW9ucy9DdXJyZW50CiAgCSQoTE4pIC1mc24gVmVyc2lvbnMvQ3VycmVudC8kKFBZVEhPTkZSQU1FV09SSykgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvJChQWVRIT05GUkFNRVdPUkspCiAgCSQoTE4pIC1mc24gVmVyc2lvbnMvQ3VycmVudC9IZWFkZXJzICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpL0hlYWRlcnMKLUBAIC0xNTM0LDcgKzE1MzYsNyBAQCBjb25maWcuc3RhdHVzOgkkKHNyY2RpcikvY29uZmlndXJlCi0gCitAQCAtMTU0Myw3ICsxNTQ1LDcgQEAgUHl0aG9uL2R0b2EubzogUHl0aG9uL2R0b2EuYworCiAgIyBSdW4gcmVpbmRlbnQgb24gdGhlIGxpYnJhcnkKICByZWluZGVudDoKIC0JLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSAtciAkKHNyY2RpcikvTGliCiArCSQoSE9TVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkgLXIgJChzcmNkaXIpL0xpYgotIAorCiAgIyBSZXJ1biBjb25maWd1cmUgd2l0aCB0aGUgc2FtZSBvcHRpb25zIGFzIGl0IHdhcyBydW4gbGFzdCB0aW1lLAogICMgcHJvdmlkZWQgdGhlIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGV4aXN0cwotQEAgLTE2NzQsNyArMTY3Niw3IEBAIGZ1bm55OgotIAorQEAgLTE2NzgsNyArMTY4MCw3IEBAIGZ1bm55OgorCiAgIyBQZXJmb3JtIHNvbWUgdmVyaWZpY2F0aW9uIGNoZWNrcyBvbiBhbnkgbW9kaWZpZWQgZmlsZXMuCi0gcGF0Y2hjaGVjazogYWxsCisgcGF0Y2hjaGVjazogQERFRl9NQUtFX1JVTEVACiAtCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKLSsJJChSVU5TSEFSRUQpIC4vJChIT1NUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5Ci0gCisrCSQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKKwogICMgRGVwZW5kZW5jaWVzCi0gCi0tLSAKKworLS0KIDIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoCmluZGV4IDc4OTkyOWIuLmY5OTcxYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoCkBAIC04LDkgKzgsMTEgQEAKICBNYWtlZmlsZS5wcmUuaW4gfCAgICA2ICsrKy0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKLS0tLSBhL01ha2VmaWxlLnByZS5pbgotKysrIGIvTWFrZWZpbGUucHJlLmluCi1AQCAtMTMwNiw4ICsxMzA2LDggQEAgdG91Y2g6CitJbmRleDogUHl0aG9uLTMuNS4zL01ha2VmaWxlLnByZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuMy5vcmlnL01ha2VmaWxlLnByZS5pbgorKysrIFB5dGhvbi0zLjUuMy9NYWtlZmlsZS5wcmUuaW4KK0BAIC0xNTc0LDggKzE1NzQsOCBAQCB0b3VjaDoKICAjIFNhbml0YXRpb24gdGFyZ2V0cyAtLSBjbGVhbiBsZWF2ZXMgbGlicmFyaWVzLCBleGVjdXRhYmxlcyBhbmQgdGFncwogICMgZmlsZXMsIHdoaWNoIGNsb2JiZXIgcmVtb3ZlcyBhcyB3ZWxsCiAgcHljcmVtb3ZhbDoKQEAgLTIxLDcgKzIzLDcgQEAKICAKICBybXRlc3R0dXJkczoKICAJLXJtIC1mICpCQUQgKkdPT0QgKlNLSVBQRUQKLUBAIC0xMzIxLDkgKzEzMjEsOSBAQCBkb2NjbGVhbjoKK0BAIC0xNTg5LDkgKzE1ODksOSBAQCBkb2NjbGVhbjoKICAJLXJtIC1yZiBEb2MvdG9vbHMvc3BoaW54IERvYy90b29scy9weWdtZW50cyBEb2MvdG9vbHMvZG9jdXRpbHMKICAKICBjbGVhbjogcHljcmVtb3ZhbApAQCAtMzIsNSArMzQsNSBAQAogKwlmaW5kIC4gISAtcGF0aCAnLi9pcGtnLWluc3RhbGwvKicgLW5hbWUgJyouc1tvbF0nIC1leGVjIHJtIC1mIHt9ICc7JwogKwlmaW5kIC4gISAtcGF0aCAnLi9pcGtnLWluc3RhbGwvKicgLW5hbWUgJyouc28uWzAtOV0qLlswLTldKicgLWV4ZWMgcm0gLWYge30gJzsnCiAgCWZpbmQgYnVpbGQgLW5hbWUgJ2ZmaWNvbmZpZy5oJyAtZXhlYyBybSAtZiB7fSAnOycgfHwgdHJ1ZQotIAlmaW5kIGJ1aWxkIC1uYW1lICdmZmljb25maWcucHknIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCi0gCS1ybSAtZiBMaWIvbGliMnRvMy8qR3JhbW1hcioucGlja2xlCisgCWZpbmQgYnVpbGQgLW5hbWUgJyoucHknIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCisgCWZpbmQgYnVpbGQgLW5hbWUgJyoucHlbY29dJyAtZXhlYyBybSAtZiB7fSAnOycgfHwgdHJ1ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9GaXgtMjk1MTktd2Vha3JlZi1zcGV3aW5nLWV4Y2VwdGlvbnMtZHVyaW5nLWludGVycC1mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9GaXgtMjk1MTktd2Vha3JlZi1zcGV3aW5nLWV4Y2VwdGlvbnMtZHVyaW5nLWludGVycC1mLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjE3YzZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvRml4LTI5NTE5LXdlYWtyZWYtc3Bld2luZy1leGNlcHRpb25zLWR1cmluZy1pbnRlcnAtZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gNjJkY2YzNDk4N2I2ODBlOTU4NzNlYjk0N2IzZjRkODAyMTk5YzY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT89QzU9ODF1a2Fzej0yMExhbmdhPz0gPGx1a2FzekBsYW5nYS5wbD4KLURhdGU6IEZyaSwgMTAgRmViIDIwMTcgMDA6MTQ6NTUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ICMyOTUxOTogd2Vha3JlZiBzcGV3aW5nIGV4Y2VwdGlvbnMgZHVyaW5nIGludGVycAotIGZpbmFsaXphdGlvbgotCi1jb21taXQgOWNkN2UxNzY0MGE0OTYzNWQxYzFmOGMyOTg5NTc4YThmYzJjMWRlNgotZnJvbSBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBMdWthc3ogTGFuZ2EgPGx1a2FzekBsYW5nYS5wbD4KLS0tLQotIExpYi93ZWFrcmVmLnB5IHwgNCArKy0tCi0gTWlzYy9ORVdTICAgICAgfCAzICsrKwotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTGliL3dlYWtyZWYucHkgYi9MaWIvd2Vha3JlZi5weQotaW5kZXggYWFlYmQwYy4uNzg3ZTMzYSAxMDA2NDQKLS0tLSBhL0xpYi93ZWFrcmVmLnB5Ci0rKysgYi9MaWIvd2Vha3JlZi5weQotQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBXZWFrVmFsdWVEaWN0aW9uYXJ5KGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nKToKLSAgICAgICAgIHNlbGYsICphcmdzID0gYXJncwotICAgICAgICAgaWYgbGVuKGFyZ3MpID4gMToKLSAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2V4cGVjdGVkIGF0IG1vc3QgMSBhcmd1bWVudHMsIGdvdCAlZCcgJSBsZW4oYXJncykpCi0tICAgICAgICBkZWYgcmVtb3ZlKHdyLCBzZWxmcmVmPXJlZihzZWxmKSk6Ci0rICAgICAgICBkZWYgcmVtb3ZlKHdyLCBzZWxmcmVmPXJlZihzZWxmKSwgX2F0b21pY19yZW1vdmFsPV9yZW1vdmVfZGVhZF93ZWFrcmVmKToKLSAgICAgICAgICAgICBzZWxmID0gc2VsZnJlZigpCi0gICAgICAgICAgICAgaWYgc2VsZiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgaWYgc2VsZi5faXRlcmF0aW5nOgotQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBXZWFrVmFsdWVEaWN0aW9uYXJ5KGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nKToKLSAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICMgQXRvbWljIHJlbW92YWwgaXMgbmVjZXNzYXJ5IHNpbmNlIHRoaXMgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICMgY2FuIGJlIGNhbGxlZCBhc3luY2hyb25vdXNseSBieSB0aGUgR0MKLS0gICAgICAgICAgICAgICAgICAgIF9yZW1vdmVfZGVhZF93ZWFrcmVmKGQsIHdyLmtleSkKLSsgICAgICAgICAgICAgICAgICAgIF9hdG9taWNfcmVtb3ZhbChkLCB3ci5rZXkpCi0gICAgICAgICBzZWxmLl9yZW1vdmUgPSByZW1vdmUKLSAgICAgICAgICMgQSBsaXN0IG9mIGtleXMgdG8gYmUgcmVtb3ZlZAotICAgICAgICAgc2VsZi5fcGVuZGluZ19yZW1vdmFscyA9IFtdCi1kaWZmIC0tZ2l0IGEvTWlzYy9ORVdTIGIvTWlzYy9ORVdTCi1pbmRleCA0MWNmZGJhLi42ZDg5ZjUyIDEwMDY0NAotLS0tIGEvTWlzYy9ORVdTCi0rKysgYi9NaXNjL05FV1MKLUBAIC01NzE5LDYgKzU3MTksOSBAQCBDb3JlIGFuZCBCdWlsdGlucwotIExpYnJhcnkKLSAtLS0tLS0tCi0gCi0rLSBJc3N1ZSAjMjk1MTk6IEZpeCB3ZWFrcmVmIHNwZXdpbmcgZXhjZXB0aW9ucyBkdXJpbmcgaW50ZXJwcmV0ZXIgc2h1dGRvd24KLSsgIHdoZW4gdXNlZCB3aXRoIGEgcmFyZSBjb21iaW5hdGlvbiBvZiBtdWx0aXByb2Nlc3NpbmcgYW5kIGN1c3RvbSBjb2RlY3MuCi0rCi0gLSBJc3N1ZSAjMjAxNTQ6IERlYWRsb2NrIGluIGFzeW5jaW8uU3RyZWFtUmVhZGVyLnJlYWRleGFjdGx5KCkuCi0gCi0gLSBJc3N1ZSAjMTYxMTM6IFJlbW92ZSBzaGEzIG1vZHVsZSBhZ2Fpbi4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAppbmRleCAzMzQ3MzIxLi5hM2NjNDhjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaApAQCAtNywxMyArNywxNiBAQAogQWxzbyBzaW1wbHkgZGlzYWJsZSB0aGUgdGsgbW9kdWxlIHNpbmNlIGl0cyBub3QgaW4gREVQRU5EUy4KIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KIAotSW5kZXg6IFB5dGhvbi0yLjcuMi9zZXR1cC5weQorSW5kZXg6IFB5dGhvbi0zLjUuMy9zZXR1cC5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMi5vcmlnL3NldHVwLnB5CTIwMTItMDQtMDUgMjM6MTg6MzguNTAwMTM2NjQ3ICswMzAwCi0rKysgUHl0aG9uLTIuNy4yL3NldHVwLnB5CTIwMTItMDQtMDUgMjM6MTk6MzUuODg4MTM0OTY5ICswMzAwCi1AQCAtMTYzNCw4ICsxNjM0LDEwIEBACistLS0gUHl0aG9uLTMuNS4zLm9yaWcvc2V0dXAucHkKKysrKyBQeXRob24tMy41LjMvc2V0dXAucHkKK0BAIC0xNTU4LDEwICsxNTU4LDEyIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKKyAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoZXh0cykKKyAKICAgICAgICAgICMgQ2FsbCB0aGUgbWV0aG9kIGZvciBkZXRlY3Rpbmcgd2hldGhlciBfdGtpbnRlciBjYW4gYmUgY29tcGlsZWQKLSAgICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQorLSAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCisrICAgICAgICAjIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQogIAogLSAgICAgICAgaWYgJ190a2ludGVyJyBub3QgaW4gW2UubmFtZSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdOgogLSAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCkBAIC0yMiwxOCArMjUsNSBAQAogKyAgICAgICAgI2lmICdfdGtpbnRlcicgbm90IGluIFtlLm5hbWUgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXToKICsgICAgICAgICMgICAgbWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKICAKLSAgICAgICAgIHJldHVybiBtaXNzaW5nCi0gCi1kaWZmIC0tZ2l0IFB5dGhvbi0zLjUuMS5vcmlnL3NldHVwLnB5IFB5dGhvbi0zLjUuMS9zZXR1cC5weQotaW5kZXggYjQ2MzNiOS4uZDc1ODhjMCAxMDA2NDQKLS0tLSBQeXRob24tMy41LjEub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0zLjUuMS9zZXR1cC5weQotQEAgLTE1MzYsNyArMTUzNiw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoZXh0cykKLSAKLSAgICAgICAgICMgQ2FsbCB0aGUgbWV0aG9kIGZvciBkZXRlY3Rpbmcgd2hldGhlciBfdGtpbnRlciBjYW4gYmUgY29tcGlsZWQKLS0gICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQotKyAgICAgICAgIyBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKLSAKLSAgICAgICAgICMgdGtpbnRlciBtb2R1bGUgd2lsbCBub3QgYmUgYXZhbGFpYmxlIGFzIHlvY3RvCi0gICAgICAgICAjIGRvZXNuJ3QgaGF2ZSB0ayBpbnRlZ3JhdGVkICh5ZXQpCisgIyMgICAgICAgICAjIFVuY29tbWVudCB0aGVzZSBsaW5lcyBpZiB5b3Ugd2FudCB0byBwbGF5IHdpdGggeHhtb2R1bGUuYworICMjICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uKCd4eCcsIFsneHhtb2R1bGUuYyddKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9jcmVhdGVfbWFuaWZlc3QzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9jcmVhdGVfbWFuaWZlc3QzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmOTQ0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2NyZWF0ZV9tYW5pZmVzdDMucHkKQEAgLTAsMCArMSwzNTQgQEAKKyMgVGhpcyBzY3JpcHQgaXMgdXNlZCBhcyBhIGJpdGJha2UgdGFzayB0byBjcmVhdGUgYSBuZXcgcHl0aG9uIG1hbmlmZXN0CisjICQgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0CisjCisjIE91ciBnb2FsIGlzIHRvIGtlZXAgcHl0aG9uLWNvcmUgYXMgc21hbGwgYXMgcG9zaWJsZSBhbmQgYWRkIG90aGVyIHB5dGhvbgorIyBwYWNrYWdlcyBvbmx5IHdoZW4gdGhlIHVzZXIgbmVlZHMgdGhlbSwgaGVuY2Ugd2h5IHdlIHNwbGl0IHVwc3RyZWFtIHB5dGhvbgorIyBpbnRvIHNldmVyYWwgcGFja2FnZXMuCisjCisjIEluIGEgdmVyeSBzaW1wbGlzdGljIHdheSB3aGF0IHRoaXMgZG9lcyBpczogCisjIExhdW5jaCBweXRob24gYW5kIHNlZSBzcGVjaWZpY2FsbHkgd2hhdCBpcyByZXF1aXJlZCBmb3IgaXQgdG8gcnVuIGF0IGEgbWluaW11bQorIworIyBHbyB0aHJvdWdoIHRoZSBweXRob24tbWFuaWZlc3QgZmlsZSBhbmQgbGF1bmNoIGEgc2VwYXJhdGUgdGFzayBmb3IgZXZlcnkgc2luZ2xlCisjIG9uZSBvZiB0aGUgZmlsZXMgb24gZWFjaCBwYWNrYWdlLCB0aGlzIHRhc2sgd2lsbCBjaGVjayB3aGF0IHdhcyByZXF1aXJlZCBmb3IgdGhhdAorIyBzcGVjaWZpYyBtb2R1bGUgdG8gcnVuLCB0aGVzZSBtb2R1bGVzIHdpbGwgYmUgY2FsbGVkIGRlcGVuZGVuY2llcy4KKyMgVGhlIG91dHB1dCBvZiBzdWNoIHRhc2sgd2lsbCBiZSBhIGxpc3Qgb2YgdGhlIG1vZHVsZXMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgd2VyZQorIyBmb3VuZCBmb3IgdGhhdCBmaWxlLgorIworIyBTdWNoIG91dHB1dCB3aWxsIGJlIHBhcnNlZCBieSB0aGlzIHNjcmlwdCwgd2Ugd2lsbCBsb29rIGZvciBlYWNoIGRlcGVuZGVuY3kgb24gdGhlCisjIG1hbmlmZXN0IGFuZCBpZiB3ZSBmaW5kIHRoYXQgYW5vdGhlciBwYWNrYWdlIGFscmVhZHkgaW5jbHVkZXMgaXQsIHRoZW4gd2Ugd2lsbCBhZGQKKyMgdGhhdCBwYWNrYWdlIGFzIGFuIFJERVBFTkRTIHRvIHRoZSBwYWNrYWdlIHdlIGFyZSBjdXJyZW50bHkgY2hlY2tpbmc7IGluIGNhc2Ugd2UgZG9udAorIyBmaW5kIHRoZSBjdXJyZW50IGRlcGVuZGVuY3kgb24gYW55IG90aGVyIHBhY2thZ2Ugd2Ugd2lsbCBhZGQgaXQgdG8gdGhlIGN1cnJlbnQgcGFja2FnZQorIyBhcyBwYXJ0IG9mIEZJTEVTLgorIworIworIyBUaGlzIHdheSB3ZSB3aWxsIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdCBmcm9tIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0IHdhcyBidWlsdCBkdXJpbmcKKyMgdGhpcyBwcm9jZXNzLCBvbnQgdGhpcyBuZXcgbWFuaWZlc3QgZWFjaCBwYWNrYWdlIHdpbGwgY29udGFpbiBzcGVjaWZpY2FsbHkgb25seQorIyB3aGF0IGl0IG5lZWRzIHRvIHJ1bi4KKyMKKyMgVGhlcmUgYXJlIHNvbWUgY2F2ZWF0cyB3aGljaCB3ZSB0cnkgdG8gZGVhbCB3aXRoLCBzdWNoIGFzIHJlcGVhdGVkIGZpbGVzIG9uIGRpZmZlcmVudAorIyBwYWNrYWdlcywgcGFja2FnZXMgdGhhdCBpbmNsdWRlIGZvbGRlcnMsIHdpbGRjYXJkcywgYW5kIHNwZWNpYWwgcGFja2FnZXMuCisjIEl0cyBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhpcyBtZXRob2Qgb25seSB3b3JrcyBmb3IgcHl0aG9uIGZpbGVzLCBhbmQgc2hhcmVkCisjIGxpYnJhcmllcy4gU3RhdGljIGxpYnJhcmllcywgaGVhZGVyIGZpbGVzIGFuZCBiaW5hcmllcyBuZWVkIHRvIGJlIGRlYWx0IHdpdGggbWFudWFsbHkuCisjCisjIFRoaXMgc2NyaXB0IGRpZmZlcnMgZnJvbSBpdHMgcHl0aG9uMiB2ZXJzaW9uIG1vc3RseSBvbiBob3cgc2hhcmVkIGxpYnJhcmllcyBhcmUgaGFuZGxlZAorIyBUaGUgbWFuaWZlc3QgZmlsZSBmb3IgcHl0aG9uMyBoYXMgYW4gZXh0cmEgZmllbGQgd2hpY2ggY29udGFpbnMgdGhlIGNhY2hlZCBmaWxlcyBmb3IKKyMgZWFjaCBwYWNrYWdlLgorIyBUaGEgbWV0aG9kIHRvIGhhbmRsZSBjYWNoZWQgZmlsZXMgZG9lcyBub3Qgd29yayB3aGVuIGEgbW9kdWxlIGluY2x1ZGVzIGEgZm9sZGVyIHdoaWNoCisjIGl0c2VsZiBjb250YWlucyB0aGUgcHljYWNoZSBmb2xkZXIsIGdsYWRseSB0aGlzIGlzIGFsbW9zdCBuZXZlciB0aGUgY2FzZS4KKyMKKyMgQXV0aG9yOiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvICJhZWhzMjkiIDxhZWhzMjlAZ21haWwuY29tPgorCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQganNvbgoraW1wb3J0IG9zCisKKyMgSGFjayB0byBnZXQgbmF0aXZlIHB5dGhvbiBzZWFyY2ggcGF0aCAoZm9yIGZvbGRlcnMpLCBub3QgZm9uZCBvZiBpdCBidXQgaXQgd29ya3MgZm9yIG5vdworcGl2b3Q9J3JlY2lwZS1zeXNyb290LW5hdGl2ZScKK2ZvciBwIGluIHN5cy5wYXRoOgorICBpZiBwaXZvdCBpbiBwOgorICAgIG5hdGl2ZWxpYmZvbGRlcj1wWzpwLmZpbmQocGl2b3QpK2xlbihwaXZvdCldCisKKyMgRW1wdHkgZGljdCB0byBob2xkIHRoZSB3aG9sZSBtYW5pZmVzdAorbmV3X21hbmlmZXN0ID0ge30KKworIyBDaGVjayBmb3IgcmVwZWF0ZWQgZmlsZXMsIGZvbGRlcnMgYW5kIHdpbGRjYXJkcworYWxsZmlsZXM9W10KK3JlcGVhdGVkPVtdCit3aWxkY2FyZHM9W10KKworaGFzZm9sZGVycz1bXQorYWxsZm9sZGVycz1bXQorCitkZWYgaXNGb2xkZXIodmFsdWUpOgorICBpZiBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYicpKSBvciBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYjY0JykpIG9yIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliMzInKSk6CisgICAgcmV0dXJuIFRydWUKKyAgZWxzZToKKyAgICByZXR1cm4gRmFsc2UKKworZGVmIGlzQ2FjaGVkKGl0ZW0pOgorICBpZiAnX19weWNhY2hlX18nIGluIGl0ZW06CisgICAgcmV0dXJuIFRydWUKKyAgZWxzZToKKyAgICByZXR1cm4gRmFsc2UKKworIyBSZWFkIGV4aXN0aW5nIEpTT04gbWFuaWZlc3QKK3dpdGggb3BlbigncHl0aG9uMy1tYW5pZmVzdC5qc29uJykgYXMgbWFuaWZlc3Q6CisgIG9sZF9tYW5pZmVzdD1qc29uLmxvYWQobWFuaWZlc3QpCisKKworIyBGaXJzdCBwYXNzIHRvIGdldCBjb3JlLXBhY2thZ2UgZnVuY3Rpb25hbGl0eSwgYmVjYXVzZSB3ZSBiYXNlIGV2ZXJ5dGhpbmcgb24gdGhlIGZhY3QgdGhhdCBjb3JlIGlzIGFjdHVhbGx5IHdvcmtpbmcKKyMgTm90IGV4YWN0bHkgdGhlIHNhbWUgc28gaXQgc2hvdWxkIG5vdCBiZSBhIGZ1bmN0aW9uCitwcmludCAoJ0dldHRpbmcgZGVwZW5kZW5jaWVzIGZvciBwYWNrYWdlOiBjb3JlJykKKworIyBTcGVjaWFsIGNhbGwgdG8gY2hlY2sgZm9yIGNvcmUgcGFja2FnZQorb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMy5weScsICdweXRob24tY29yZS1wYWNrYWdlJ10pLmRlY29kZSgndXRmOCcpCitmb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKKyAgICAjIFdlIGFwcGVuZCBpdCBzbyBpdCBkb2VzbnQgaHVydCB3aGF0IHdlIGN1cnJlbnRseSBoYXZlOgorICAgIGlmIGlzQ2FjaGVkKGl0ZW0pOgorICAgICAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ106CisgICAgICAgICAgICAjIFdlIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdHMgdGhlIG9uZSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sKKyAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcworICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddLmFwcGVuZChpdGVtKQorICAgIGVsc2U6CisgICAgICAgIGlmIGl0ZW0gbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgICAgICAgIyBXZSB1c2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmUgc2luY2UgaXRzIHRoZSBvbmUgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNoZWNrCisgICAgICAgICAgICAjIGRlcGVuZGVuY2llcyBmb3Igb3RoZXIgcGFja2FnZXMKKyAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZChpdGVtKQorCitmb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgorICBpZiBpc0ZvbGRlcih2YWx1ZSk6CisgICAgIyBQYXNzIGl0IGRpcmVjdGx5CisgICAgaWYgaXNDYWNoZWQodmFsdWUpOgorICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddOgorICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddLmFwcGVuZCh2YWx1ZSkKKyAgICBlbHNlOgorICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgY29udGludWUKKyAgIyBJZ25vcmUgYmluYXJpZXMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgYXNzdW1lIGl0IHdhcyBhZGRlZCBjb3JyZWN0bHkgKG1hbnVhbGx5KQorICBpZiAnJHtiaW5kaXJ9JyBpbiB2YWx1ZToKKyAgICAjIFBhc3MgaXQgZGlyZWN0bHkKKyAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgY29udGludWUKKyAgIyBJZ25vcmUgZW1wdHkgdmFsdWVzCisgIGlmIHZhbHVlID09ICcnOgorICAgIGNvbnRpbnVlCisgIGlmICcke2luY2x1ZGVkaXJ9JyBpbiB2YWx1ZToKKyAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgY29udGludWUKKyAgIyBHZXQgbW9kdWxlIG5hbWUgLCBzaG91bGRudCBiZSBhZmZlY3RlZCBieSBsaWJkaXIvYmluZGlyCisgIHZhbHVlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGgubm9ybXBhdGgodmFsdWUpKSlbMF0KKworICAjIExhdW5jaCBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvcgorICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMKKyAgcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKKyAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMy5weScsICclcycgJSB2YWx1ZV0pLmRlY29kZSgndXRmOCcpCisgIHByaW50ICgnVGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgd2VyZSBmb3VuZCBmb3IgbW9kdWxlICVzOlxuJyAlIHZhbHVlKQorICBwcmludCAob3V0cHV0KQorICBmb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKKyAgICAjIFdlIGFwcGVuZCBpdCBzbyBpdCBkb2VzbnQgaHVydCB3aGF0IHdlIGN1cnJlbnRseSBoYXZlOgorICAgIGlmIGlzQ2FjaGVkKGl0ZW0pOgorICAgICAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ106CisgICAgICAgICAgICAjIFdlIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdHMgdGhlIG9uZSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sKKyAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcworICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddLmFwcGVuZChpdGVtKQorICAgIGVsc2U6CisgICAgICAgIGlmIGl0ZW0gbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgICAgICAgIyBXZSB1c2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmUgc2luY2UgaXRzIHRoZSBvbmUgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNoZWNrCisgICAgICAgICAgICAjIGRlcGVuZGVuY2llcyBmb3Igb3RoZXIgcGFja2FnZXMKKyAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZChpdGVtKQorCisKKyMgV2UgY2hlY2sgd2hpY2ggcGFja2FnZXMgaW5jbHVkZSBmb2xkZXJzCitmb3Iga2V5IGluIG9sZF9tYW5pZmVzdDoKKyAgICBmb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106CisgICAgICAgICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgorICAgICAgICBpZiBpc0ZvbGRlcih2YWx1ZSk6CisgICAgICAgICAgICBwcmludCAoJyVzIGlzIGEgZm9sZGVyJyAlIHZhbHVlKQorICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBoYXNmb2xkZXJzOgorICAgICAgICAgICAgICAgIGhhc2ZvbGRlcnMuYXBwZW5kKGtleSkKKyAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBhbGxmb2xkZXJzOgorICAgICAgICAgICAgICAgIGFsbGZvbGRlcnMuYXBwZW5kKHZhbHVlKQorCitmb3Iga2V5IGluIG9sZF9tYW5pZmVzdDoKKyAgICAjIFVzZSBhbiBlbXB0eSBkaWN0IGFzIGRhdGEgc3RydWN0dXJlIHRvIGhvbGQgZGF0YSBmb3IgZWFjaCBwYWNrYWdlIGFuZCBmaWxsIGl0IHVwCisgICAgbmV3X21hbmlmZXN0W2tleV09e30KKyAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXT1bXQorICAgIAorICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddPVtdCisgICAgIyBBbGwgcGFja2FnZXMgc2hvdWxkIGRlcGVuZCBvbiBjb3JlCisgICAgaWYga2V5ICE9ICdjb3JlJzoKKyAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLmFwcGVuZCgnY29yZScpCisgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ109W10KKyAgICBlbHNlOgorICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddPW9sZF9tYW5pZmVzdFtrZXldWydjYWNoZWQnXQorICAgIG5ld19tYW5pZmVzdFtrZXldWydzdW1tYXJ5J109b2xkX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXQorCisgICAgIyBIYW5kbGUgc3BlY2lhbCBjYXNlcywgd2UgYXNzdW1lIHRoYXQgd2hlbiB0aGV5IHdlcmUgbWFudWFsbHkgYWRkZWQgCisgICAgIyB0byB0aGUgbWFuaWZlc3Qgd2Uga25ldyB3aGF0IHdlIHdlcmUgZG9pbmcuCisgICAgcHJpbnQoJ1xuJykKKyAgICBwcmludCgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKQorICAgIHByaW50ICgnSGFuZGxpbmcgcGFja2FnZSAlcycgJSBrZXkpCisgICAgcHJpbnQoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJykKKyAgICBzcGVjaWFsX3BhY2thZ2VzPVsnbWlzYycsICdtb2R1bGVzJywgJ2RldiddCisgICAgaWYga2V5IGluIHNwZWNpYWxfcGFja2FnZXMgb3IgJ3N0YXRpY2RldicgaW4ga2V5OgorICAgICAgICBwcmludCgnUGFzc2luZyAlcyBwYWNrYWdlIGRpcmVjdGx5JyAlIGtleSkKKyAgICAgICAgbmV3X21hbmlmZXN0W2tleV09b2xkX21hbmlmZXN0W2tleV0KKyAgICAgICAgY29udGludWUKKworICAgIGZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgIyBXZSBhbHJlYWR5IGhhbmRsZWQgY29yZSBvbiB0aGUgZmlyc3QgcGFzcworICAgICAgICBpZiBrZXkgPT0gJ2NvcmUnOgorICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCisgICAgICAgIGlmIGlzRm9sZGVyKHZhbHVlKToKKyAgICAgICAgICAgICMgUGFzcyBmb2xkZXJzIGRpcmVjdGx5CisgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgICAgICMgSWdub3JlIGJpbmFyaWVzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UKKyAgICAgICAgaWYgJyR7YmluZGlyfScgaW4gdmFsdWU6CisgICAgICAgICAgICAjIFBhc3MgaXQgZGlyZWN0bHkgdG8gdGhlIG5ldyBtYW5pZmVzdCBkYXRhIHN0cnVjdHVyZQorICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMgSWdub3JlIGVtcHR5IHZhbHVlcworICAgICAgICBpZiB2YWx1ZSA9PSAnJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmICcke2luY2x1ZGVkaXJ9JyBpbiB2YWx1ZToKKyAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICMgR2V0IG1vZHVsZSBuYW1lICwgc2hvdWxkbnQgYmUgYWZmZWN0ZWQgYnkgbGliZGlyL2JpbmRpcgorICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGltcG9ydGVkIG1vZHVsZSBjb21lcyBmcm9tIGFub3RoZXIgKGUuZy4gc3FsaXRlMy5kdW1wKQorICAgICAgICBwYXRoLHZhbHVlID0gb3MucGF0aC5zcGxpdCh2YWx1ZSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKKyAgICAgICAgdmFsdWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUodmFsdWUpKVswXQorCisgICAgICAgICMgSWYgdGhpcyBjb25kaXRpb24gaXMgbWV0LCBpdCBtZWFucyB3ZSBuZWVkIHRvIGltcG9ydCBpdCBmcm9tIGFub3RoZXIgbW9kdWxlCisgICAgICAgICMgb3IgaXRzIHRoZSBmb2xkZXIgaXRzZWxmIChlLmcuIHVuaXR0ZXN0KQorICAgICAgICBpZiBwYXRoID09IGtleToKKyAgICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgIHZhbHVlID0gcGF0aCArICcuJyArIHZhbHVlCisgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHZhbHVlID0gcGF0aAorCisgICAgICAgICMgTGF1bmNoIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggbW9kdWxlIGZvciBkZXRlcm1pbmlzdGljIGJlaGF2aW9yCisgICAgICAgICMgRWFjaCBtb2R1bGUgd2lsbCBvbmx5IGltcG9ydCB3aGF0IGlzIG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yayBpbiBzcGVjaWZpYworICAgICAgICBwcmludCAoJ1xuR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIG1vZHVsZTogJXMnICUgdmFsdWUpCisgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtzeXMuZXhlY3V0YWJsZSwgJ2dldF9tb2R1bGVfZGVwczMucHknLCAnJXMnICUgdmFsdWVdKS5kZWNvZGUoJ3V0ZjgnKQorICAgICAgICAjIFdlIGNhbiBwcmludCBkZXBlbmRlbmNpZXMgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcworICAgICAgICBwcmludCAoJ1RoZSBmb2xsb3dpbmcgZGVwZW5kZW5jaWVzIHdlcmUgZm91bmQgZm9yIG1vZHVsZSAlczpcbicgJSB2YWx1ZSkKKyAgICAgICAgcHJpbnQgKG91dHB1dCkKKyAgICAgICAgIyBPdXRwdXQgd2lsbCBoYXZlIGFsbCBkZXBlbmRlbmNpZXMKKworICAgICAgICByZXBvcnRGSUxFUyA9IFtdCisgICAgICAgIHJlcG9ydFJERVBTID0gW10KKworICAgICAgICBmb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKKworICAgICAgICAgICAgIyBXYXJuaW5nOiBUaGlzIGZpcnN0IHBhcnQgaXMgdWdseQorICAgICAgICAgICAgIyBPbmUgb2YgdGhlIGRlcGVuZGVuY2llcyB0aGF0IHdhcyBmb3VuZCwgY291bGQgYmUgaW5zaWRlIG9mIG9uZSBvZiB0aGUgZm9sZGVycyBpbmNsdWRlZCBieSBhbm90aGVyIHBhY2thZ2UKKyAgICAgICAgICAgICMgV2UgbmVlZCB0byBjaGVjayBpZiB0aGlzIGhhcHBlbnMgc28gd2UgY2FuIGFkZCB0aGUgcGFja2FnZSBjb250YWluaW5nIHRoZSBmb2xkZXIgYXMgYW4gcmRlcGVuZGVuY3kKKyAgICAgICAgICAgICMgZS5nLiBGb2xkZXIgZW5jb2RpbmdzIGNvbnRhaW5lZCBpbiBjb2RlY3MKKyAgICAgICAgICAgICMgVGhpcyB3b3VsZCBiZSBzb2x2ZWQgaWYgbm8gcGFja2FnZXMgaW5jbHVkZWQgYW55IGZvbGRlcnMKKworICAgICAgICAgICAgIyBUaGlzIGNhbiBiZSBkb25lIGluIHR3byB3YXlzOgorICAgICAgICAgICAgIyAxIC0gV2UgYXNzdW1lIHRoYXQgaWYgd2UgdGFrZSBvdXQgdGhlIGZpbGVuYW1lIGZyb20gdGhlIHBhdGggd2Ugd291bGQgZ2V0CisgICAgICAgICAgICAjICAgdGhlIGZvbGRlciBzdHJpbmcsIHRoZW4gd2Ugd291bGQgY2hlY2sgaWYgZm9sZGVyIHN0cmluZyBpcyBpbiB0aGUgbGlzdCBvZiBmb2xkZXJzCisgICAgICAgICAgICAjICAgVGhpcyB3b3VsZCBub3Qgd29yayBpZiBhIHBhY2thZ2UgY29udGFpbnMgYSBmb2xkZXIgd2hpY2ggY29udGFpbnMgYW5vdGhlciBmb2xkZXIKKyAgICAgICAgICAgICMgICBlLmcuIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lICBmb2xkZXJfc3RyaW5nPSBwYXRoL2ZvbGRlcjEvZm9sZGVyMgorICAgICAgICAgICAgIyAgIGZvbGRlcl9zdHJpbmcgd291bGQgbm90IG1hdGNoIGFueSB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxpc3Qgb2YgZm9sZGVycworICAgICAgICAgICAgIworICAgICAgICAgICAgIyAyIC0gV2UgZG8gaXQgdGhlIG90aGVyIHdheSBhcm91bmQsIGNoZWNraW5nIGlmIHRoZSBmb2xkZXIgaXMgY29udGFpbmVkIGluIHRoZSBwYXRoCisgICAgICAgICAgICAjICAgZS5nLiBwYXRoL2ZvbGRlcjEvZm9sZGVyMi9maWxlbmFtZSAgZm9sZGVyX3N0cmluZz0gcGF0aC9mb2xkZXIxL2ZvbGRlcjIKKyAgICAgICAgICAgICMgICBpcyBmb2xkZXJfc3RyaW5nIGluc2lkZSBwYXRoL2ZvbGRlcjEvZm9sZGVyMi9maWxlbmFtZT8sIAorICAgICAgICAgICAgIyAgIFllcywgaXQgd29ya3MsIGJ1dCB3ZSB3YXN0ZSBhIGNvdXBsZSBvZiBtaWxsaXNlY29uZHMuCisKKyAgICAgICAgICAgIGluRm9sZGVycz1GYWxzZQorICAgICAgICAgICAgZm9yIGZvbGRlciBpbiBhbGxmb2xkZXJzOgorICAgICAgICAgICAgICAgIGlmIGZvbGRlciBpbiBpdGVtOgorICAgICAgICAgICAgICAgICAgICBpbkZvbGRlcnMgPSBUcnVlICMgRGlkIHdlIGZpbmQgYSBmb2xkZXI/CisgICAgICAgICAgICAgICAgICAgIGZvbGRlckZvdW5kID0gRmFsc2UgIyBTZWNvbmQgZmxhZyB0byBicmVhayBpbm5lciBmb3IKKyAgICAgICAgICAgICAgICAgICAgIyBMb29wIG9ubHkgdGhyb3VnaCBwYWNrYWdlcyB3aGljaCBjb250YWluIGZvbGRlcnMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGtleWZvbGRlciBpbiBoYXNmb2xkZXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvbGRlckZvdW5kID09IEZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQoJ0NoZWNraW5nIGZvbGRlciAlcyBvbiBwYWNrYWdlICVzJyAlIChpdGVtLGtleWZvbGRlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVfZm9sZGVyIGluIG9sZF9tYW5pZmVzdFtrZXlmb2xkZXJdWydmaWxlcyddIG9yIGZpbGVfZm9sZGVyIGluIG9sZF9tYW5pZmVzdFtrZXlmb2xkZXJdWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlsZV9mb2xkZXI9PWZvbGRlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICgnJXMgZm9sZGVyIGZvdW5kIGluICVzJyAlIChmb2xkZXIsIGtleWZvbGRlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXJGb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleWZvbGRlciBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10gYW5kIGtleWZvbGRlciAhPSBrZXk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKGtleWZvbGRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAjIEEgZm9sZGVyIHdhcyBmb3VuZCBzbyB3ZSdyZSBkb25lIHdpdGggdGhpcyBpdGVtLCB3ZSBjYW4gZ28gb24KKyAgICAgICAgICAgIGlmIGluRm9sZGVyczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisKKyAgICAgICAgICAgICMgV2UgbWlnaHQgYWxyZWFkeSBoYXZlIGl0IG9uIHRoZSBkaWN0aW9uYXJ5IHNpbmNlIGl0IGNvdWxkIGRlcGVuZCBvbiBhIChwcmV2aW91c2x5IGNoZWNrZWQpIG1vZHVsZQorICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10gYW5kIGl0ZW0gbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICAjIEhhbmRsZSBjb3JlIGFzIGEgc3BlY2lhbCBwYWNrYWdlLCB3ZSBhbHJlYWR5IGRpZCBpdCBzbyB3ZSBwYXNzIGl0IHRvIE5FVyBkYXRhIHN0cnVjdHVyZSBkaXJlY3RseQorICAgICAgICAgICAgICAgIGlmIGtleT09J2NvcmUnOgorICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBGSUxFUycgJSAoaXRlbSwga2V5KSkKKyAgICAgICAgICAgICAgICAgIGlmIGl0ZW0uZW5kc3dpdGgoJyonKToKKyAgICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZHMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICBpZiBpc0NhY2hlZChpdGVtKToKKyAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ10uYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZChpdGVtKQorCisgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcworICAgICAgICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gYWxsZmlsZXM6CisgICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkLmFwcGVuZChpdGVtKQorCisgICAgICAgICAgICAgICAgZWxzZToKKworCisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhpcyBkZXBlbmRlbmN5IGlzIGFscmVhZHkgY29udGFpbmVkIG9uIGFub3RoZXIgcGFja2FnZSwgc28gd2UgYWRkIGl0CisgICAgICAgICAgICAgICAgICAgICMgYXMgYW4gUkRFUEVORFMsIG9yIGlmIGl0cyBub3QsIGl0IG1lYW5zIGl0IHNob3VsZCBiZSBjb250YWluZWQgb24gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgIyBwYWNrYWdlLCBzbyB3ZSBzaG91bGQgYWRkIGl0IHRvIEZJTEVTCisgICAgICAgICAgICAgICAgICAgIGZvciBuZXdrZXkgaW4gb2xkX21hbmlmZXN0OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBEZWJ1ZworICAgICAgICAgICAgICAgICAgICAgICAgI3ByaW50KCdDaGVja2luZyAlcyAnICUgaXRlbSArICcgaW4gJXMnICUgbmV3a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbSBpbiBvbGRfbWFuaWZlc3RbbmV3a2V5XVsnZmlsZXMnXSBvciBpdGVtIGluIG9sZF9tYW5pZmVzdFtuZXdrZXldWydjYWNoZWQnXTogICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSB3ZXJlIG5lc3RpbmcsIHdlIG5lZWQgdG8gY2hlY2sgaXRzIG5vdCB0aGUgc2FtZSBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobmV3a2V5IT1rZXkpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV3a2V5IG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGl0IHRvIHRoZSBuZXcgbWFuaWZlc3QgZGF0YSBzdHJ1Y3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydFJERVBTLmFwcGVuZCgnQWRkaW5nICVzIHRvICVzIFJERVBFTkRTLCBiZWNhdXNlIGl0IGNvbnRhaW5zICVzXG4nICUgKG5ld2tleSwga2V5LCBpdGVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLmFwcGVuZChuZXdrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICMgQSBtb2R1bGUgc2hvdWxkbid0IGNvbnRhaW4gaXRzZWxmICgke2xpYmRpcn0vcHl0aG9uMy9zcWxpdGUzIHNob3VsZG50IGJlIG9uIHNxbGl0ZTMgZmlsZXMpCisgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShpdGVtKSAhPSBrZXk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRGSUxFUy5hcHBlbmQoKCdBZGRpbmcgJXMgdG8gJXMgRklMRVNcbicgJSAoaXRlbSwga2V5KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIGl0IHdhc250IGZvdW5kIG9uIGFub3RoZXIgcGFja2FnZSwgaXRzIG5vdCBhbiBSREVQLCBzbyBhZGQgaXQgdG8gRklMRVMgZm9yIHRoaXMgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNDYWNoZWQoaXRlbSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgnKicpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIGFsbGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbGZpbGVzLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlZC5hcHBlbmQoaXRlbSkKKworICAgICAgICBwcmludCgnXG4nKQorICAgICAgICBwcmludCgnIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjJykKKyAgICAgICAgcHJpbnQoJ1N1bW1hcnkgZm9yIG1vZHVsZSAlcycgJSB2YWx1ZSkKKyAgICAgICAgcHJpbnQoJ0ZJTEVTIGZvdW5kIGZvciBtb2R1bGUgJXM6JyAlIHZhbHVlKQorICAgICAgICBwcmludCgnJy5qb2luKHJlcG9ydEZJTEVTKSkKKyAgICAgICAgcHJpbnQoJ1JERVBFTkRTIGZvdW5kIGZvciBtb2R1bGUgJXM6JyAlIHZhbHVlKQorICAgICAgICBwcmludCgnJy5qb2luKHJlcG9ydFJERVBTKSkKKyAgICAgICAgcHJpbnQoJyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIycpCisKK3ByaW50ICgnVGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgcmVwZWF0ZWQgKGNvbnRhaW5lZCBpbiBtb3JlIHRoYW4gb25lIHBhY2thZ2UpLCBwbGVhc2UgY2hlY2sgd2hpY2ggcGFja2FnZSBzaG91bGQgZ2V0IGl0OicpCitwcmludCAocmVwZWF0ZWQpCitwcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIHdpbGRjYXJkcywgcGxlYXNlIGNoZWNrIHRoZXkgYXJlIG5lY2Vzc2FyeScpCitwcmludCh3aWxkY2FyZHMpCitwcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIGZvbGRlcnMsIHBsZWFzZSBjaGVjayB0aGV5IGFyZSBuZWNlc3NhcnknKQorcHJpbnQoaGFzZm9sZGVycykKKworIyBTb3J0IGl0IGp1c3Qgc28gaXQgbG9va3MgbmljZXIKK2ZvciBrZXkgaW4gbmV3X21hbmlmZXN0OgorICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLnNvcnQoKQorICAgIG5ld19tYW5pZmVzdFtrZXldWydjYWNoZWQnXS5zb3J0KCkKKyAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5zb3J0KCkKKworIyBDcmVhdGUgdGhlIG1hbmlmZXN0IGZyb20gdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgd2FzIGJ1aWx0Cit3aXRoIG9wZW4oJ3B5dGhvbjMtbWFuaWZlc3QuanNvbi5uZXcnLCd3JykgYXMgb3V0ZmlsZToKKyAgICBqc29uLmR1bXAobmV3X21hbmlmZXN0LG91dGZpbGUsc29ydF9rZXlzPVRydWUsIGluZGVudD00KQorICAgIG91dGZpbGUud3JpdGUoJ1xuJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvZ2V0X21vZHVsZV9kZXBzMy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvZ2V0X21vZHVsZV9kZXBzMy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDEyYmFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9nZXRfbW9kdWxlX2RlcHMzLnB5CkBAIC0wLDAgKzEsMTQ2IEBACisjIFRoaXMgc2NyaXB0IGlzIGxhdW5jaGVkIG9uIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggcHl0aG9uIG1vZHVsZQorIyBJdCBjaGVja3MgZm9yIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBzcGVjaWZpYyBtb2R1bGUgYW5kIHByaW50cyAKKyMgdGhlbSBvdXQsIHRoZSBvdXRwdXQgb2YgdGhpcyBleGVjdXRpb24gd2lsbCBoYXZlIGFsbCBkZXBlbmRlbmNpZXMKKyMgZm9yIGEgc3BlY2lmaWMgbW9kdWxlLCB3aGljaCB3aWxsIGJlIHBhcnNlZCBhbiBkZWFsdCBvbiBjcmVhdGVfbWFuaWZlc3QucHkKKyMKKyMgQXV0aG9yOiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvICJhZWhzMjkiIDxhZWhzMjlAZ21haWwuY29tPgorCisjIFdlIGNhbiBnZXQgYSBsb2cgcGVyIG1vZHVsZSwgZm9yIGFsbCB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgd2VyZSBmb3VuZCwgYnV0IGl0cyBtZXNzeS4KK2RlYnVnPUZhbHNlCisKK2ltcG9ydCBzeXMKKworIyBXZSBjYW4gZ2V0IGEgbGlzdCBvZiB0aGUgbW9kdWxlcyB3aGljaCBhcmUgY3VycmVudGx5IHJlcXVpcmVkIHRvIHJ1biBweXRob24KKyMgc28gd2UgcnVuIHB5dGhvbi1jb3JlIGFuZCBnZXQgaXRzIG1vZHVsZXMsIHdlIHRoZW4gaW1wb3J0IHdoYXQgd2UgbmVlZAorIyBhbmQgY2hlY2sgd2hhdCBtb2R1bGVzIGFyZSBjdXJyZW50bHkgcnVubmluZywgaWYgd2Ugc3Vic3RyYWN0IHRoZW0gZnJvbSB0aGUKKyMgbW9kdWxlcyB3ZSBoYWQgaW5pdGlhbGx5LCB3ZSBnZXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIG1vZHVsZSB3ZSBpbXBvcnRlZC4KKworIyBXZSB1c2UgaW1wb3J0bGliIHRvIGFjaGlldmUgdGhpcywgc28gd2UgYWxzbyBuZWVkIHRvIGtub3cgd2hhdCBtb2R1bGVzIGltcG9ydGxpYiBuZWVkcworaW1wb3J0IGltcG9ydGxpYgorCitjb3JlX2RlcHM9c2V0KHN5cy5tb2R1bGVzKQorCitkZWYgZml4X3BhdGgoZGVwX3BhdGgpOgorICAgIGltcG9ydCBvcworICAgICMgV2UgRE9OVCB3YW50IHRoZSBwYXRoIG9uIG91ciBIT1NUIHN5c3RlbQorICAgIHBpdm90PSdyZWNpcGUtc3lzcm9vdC1uYXRpdmUnCisgICAgZGVwX3BhdGg9ZGVwX3BhdGhbZGVwX3BhdGguZmluZChwaXZvdCkrbGVuKHBpdm90KTpdCisKKyAgICBpZiAnL3Vzci9iaW4nIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvYmluJycke2JpbmRpcn0nKQorCisgICAgIyBIYW5kbGUgbXVsdGlsaWIsIGlzIHRoZXJlIGEgYmV0dGVyIHdheT8KKyAgICBpZiAnL3Vzci9saWIzMicgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWIzMicsJyR7bGliZGlyfScpCisgICAgaWYgJy91c3IvbGliNjQnIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvbGliNjQnLCcke2xpYmRpcn0nKQorICAgIGlmICcvdXNyL2xpYicgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWInLCcke2xpYmRpcn0nKQorICAgIGlmICcvdXNyL2luY2x1ZGUnIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvaW5jbHVkZScsJyR7aW5jbHVkZWRpcn0nKQorICAgIGlmICdfX2luaXRfXy4nIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9ICBvcy5wYXRoLnNwbGl0KGRlcF9wYXRoKVswXQorICAgIHJldHVybiBkZXBfcGF0aAorCisKKyMgTW9kdWxlIHRvIGltcG9ydCB3YXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50CitjdXJyZW50X21vZHVsZSA9ICBzdHIoc3lzLmFyZ3ZbMV0pLnJzdHJpcCgpCitpZihkZWJ1Zz09VHJ1ZSk6CisgICAgbG9nID0gb3BlbignbG9nXyVzJyAlIGN1cnJlbnRfbW9kdWxlLCd3JykKKyAgICBsb2cud3JpdGUoJ01vZHVsZSAlcyBnZW5lcmF0ZWQgdGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXM6XG4nICUgY3VycmVudF9tb2R1bGUpCit0cnk6IAorICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCclcycgJSBjdXJyZW50X21vZHVsZSkKK2V4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgIGxvZy53cml0ZSgnTW9kdWxlIHdhcyBub3QgZm91bmQnKQorICAgIHBhc3MKKworCisjIEdldCBjdXJyZW50IG1vZHVsZSBkZXBlbmRlbmNpZXMsIGRpZiB3aWxsIGNvbnRhaW4gYSBsaXN0IG9mIHNwZWNpZmljIGRlcHMgZm9yIHRoaXMgbW9kdWxlCittb2R1bGVfZGVwcz1zZXQoc3lzLm1vZHVsZXMpCisKKyMgV2UgaGFuZGxlIHRoZSBjb3JlIHBhY2thZ2UgKDFzdCBwYXNzIG9uIGNyZWF0ZV9tYW5pZmVzdC5weSkgYXMgYSBzcGVjaWFsIGNhc2UKK2lmIGN1cnJlbnRfbW9kdWxlID09ICdweXRob24tY29yZS1wYWNrYWdlJzoKKyAgICBkaWYgPSBjb3JlX2RlcHMKK2Vsc2U6CisgICAgIyBXZSBrbm93IHRoaXMgaXMgbm90IHRoZSBjb3JlIHBhY2thZ2UsIHNvIHRoZXJlIG11c3QgYmUgYSBkaWZmZXJlbmNlLgorICAgIGRpZiA9IG1vZHVsZV9kZXBzLWNvcmVfZGVwcworCisKKyMgQ2hlY2sgd2hlcmUgZWFjaCBkZXBlbmRlbmN5IGNhbWUgZnJvbQorZm9yIGl0ZW0gaW4gZGlmOgorICAgIGRlcF9wYXRoPScnCisgICAgdHJ5OgorICAgICAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICAgICAgbG9nLndyaXRlKCdDYWxsaW5nOiBzeXMubW9kdWxlc1snICsgJyVzJyAlIGl0ZW0gKyAnXS5fX2ZpbGVfX1xuJykKKyAgICAgICAgZGVwX3BhdGggPSBzeXMubW9kdWxlc1snJXMnICUgaXRlbV0uX19maWxlX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgIyBEZWFscyB3aXRoIHRocmVhZCAoYnVpbHRpbiBtb2R1bGUpIG5vdCBoYXZpbmcgX19maWxlX18gYXR0cmlidXRlCisgICAgICAgIGlmIGRlYnVnPT1UcnVlOgorICAgICAgICAgICAgbG9nLndyaXRlKGl0ZW0gKyAnICcpCisgICAgICAgICAgICBsb2cud3JpdGUoc3RyKGUpKQorICAgICAgICAgICAgbG9nLndyaXRlKCdcbicpCisgICAgICAgIHBhc3MKKyAgICBleGNlcHQgTmFtZUVycm9yIGFzIGU6CisgICAgICAgICMgRGVhbHMgd2l0aCBOYW1lRXJyb3I6IG5hbWUgJ2RlcF9wYXRoJyBpcyBub3QgZGVmaW5lZAorICAgICAgICAjIGJlY2F1c2UgbW9kdWxlIGlzIG5vdCBmb3VuZCAod2Fzbid0IGNvbXBpbGVkPyksIGUuZy4gYmRkc20KKyAgICAgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgICAgIGxvZy53cml0ZShpdGVtKycgJykgCisgICAgICAgICAgICBsb2cud3JpdGUoc3RyKGUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgcGFzcworCisgICAgIyBTaXRlLWN1c3RvbWl6ZSBpcyBhIHNwZWNpYWwgY2FzZSBzaW5jZSB3ZSAoT3BlbkVtYmVkZGVkKSBwdXQgaXQgdGhlcmUgbWFudWFsbHkKKyAgICBpZiAnc2l0ZWN1c3RvbWl6ZScgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gJyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGVjdXN0b21pemUucHknCisgICAgICAgICMgUHJpbnRzIG91dCByZXN1bHQsIHdoaWNoIGlzIHdoYXQgd2lsbCBiZSB1c2VkIGJ5IGNyZWF0ZV9tYW5pZmVzdAorICAgICAgICBwcmludCAoZGVwX3BhdGgpCisgICAgICAgIGNvbnRpbnVlCisKKyAgICBkZXBfcGF0aCA9IGZpeF9wYXRoKGRlcF9wYXRoKQorCisgICAgaW1wb3J0IHN5c2NvbmZpZworICAgIHNvYWJpPXN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU09BQkknKQorICAgICMgQ2hlY2sgaWYgaXRzIGEgc2hhcmVkIGxpYnJhcnkgYW5kIGRlY29uc3RydWN0IGl0CisgICAgaWYgc29hYmkgaW4gZGVwX3BhdGg6CisgICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgICAgICBsb2cud3JpdGUoJ1NoYXJlZCBsaWJyYXJ5IGZvdW5kIGluICVzJyAlIGRlcF9wYXRoKQorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2Uoc29hYmksJyonKQorICAgICAgICBwcmludCAoZGVwX3BhdGgpCisgICAgICAgIGNvbnRpbnVlCisKKyAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICBsb2cud3JpdGUoZGVwX3BhdGgrJ1xuJykKKyAgICAjIFByaW50cyBvdXQgcmVzdWx0LCB3aGljaCBpcyB3aGF0IHdpbGwgYmUgdXNlZCBieSBjcmVhdGVfbWFuaWZlc3QKKyAgICBwcmludCAoZGVwX3BhdGgpCisKKworICAgIGltcG9ydCBpbXAKKyAgICBjcHl0aG9uX3RhZyA9IGltcC5nZXRfdGFnKCkgCisgICAgY2FjaGVkPScnCisgICAgIyBUaGVyZXMgbm8gbmFpdmUgd2F5IHRvIGZpbmQgKi5weWMgZmlsZXMgb24gcHl0aG9uMworICAgIHRyeToKKyAgICAgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgICAgIGxvZy53cml0ZSgnQ2FsbGluZzogc3lzLm1vZHVsZXNbJyArICclcycgJSBpdGVtICsgJ10uX19jYWNoZWRfX1xuJykKKyAgICAgICAgY2FjaGVkID0gc3lzLm1vZHVsZXNbJyVzJyAlIGl0ZW1dLl9fY2FjaGVkX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgIyBEZWFscyB3aXRoIHRocmVhZCAoYnVpbHRpbiBtb2R1bGUpIG5vdCBoYXZpbmcgX19jYWNoZWRfXyBhdHRyaWJ1dGUKKyAgICAgICAgaWYgZGVidWc9PVRydWU6CisgICAgICAgICAgICBsb2cud3JpdGUoaXRlbSArICcgJykKKyAgICAgICAgICAgIGxvZy53cml0ZShzdHIoZSkpCisgICAgICAgICAgICBsb2cud3JpdGUoJ1xuJykKKyAgICAgICAgcGFzcworICAgIGV4Y2VwdCBOYW1lRXJyb3IgYXMgZToKKyAgICAgICAgIyBEZWFscyB3aXRoIE5hbWVFcnJvcjogbmFtZSAnY2FjaGVkJyBpcyBub3QgZGVmaW5lZAorICAgICAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICAgICAgbG9nLndyaXRlKGl0ZW0rJyAnKSAKKyAgICAgICAgICAgIGxvZy53cml0ZShzdHIoZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBwYXNzCisgICAgaWYgY2FjaGVkIGlzIG5vdCBOb25lOgorICAgICAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICAgICAgbG9nLndyaXRlKGNhY2hlZCkKKyAgICAgICAgY2FjaGVkID0gZml4X3BhdGgoY2FjaGVkKQorICAgICAgICBjYWNoZWQgPSBjYWNoZWQucmVwbGFjZShjcHl0aG9uX3RhZywnKicpCisgICAgICAgIHByaW50IChjYWNoZWQpCisKK2lmIGRlYnVnPT1UcnVlOgorICAgIGxvZy5jbG9zZSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2gKaW5kZXggMDhjNDQwMy4uY2MzNWRjMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24tMy4zLW11bHRpbGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaApAQCAtMjUsMTAgKzI1LDEwIEBACiAgc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArKysrLS0tLS0KICAxMiBmaWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCi1pbmRleCA5YzJlODEzLi4yZjc5Y2I2IDEwMDY0NAotLS0tIGEvSW5jbHVkZS9weXRob25ydW4uaAotKysrIGIvSW5jbHVkZS9weXRob25ydW4uaAorSW5kZXg6IFB5dGhvbi0zLjUuNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAorKysrIFB5dGhvbi0zLjUuNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCiBAQCAtMjMsNiArMjMsOSBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgfSBQeUNvbXBpbGVyRmxhZ3M7CiAgI2VuZGlmCkBAIC0zOSwxMCArMzksMTAgQEAKICAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAgUHlBUElfRlVOQyhpbnQpIFB5UnVuX1NpbXBsZVN0cmluZ0ZsYWdzKGNvbnN0IGNoYXIgKiwgUHlDb21waWxlckZsYWdzICopOwogIFB5QVBJX0ZVTkMoaW50KSBQeVJ1bl9BbnlGaWxlRmxhZ3MoRklMRSAqLCBjb25zdCBjaGFyICosIFB5Q29tcGlsZXJGbGFncyAqKTsKLWRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci1pbmRleCA2N2RiMDA3Li5iNDZiNDViIDEwMDY0NAotLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLSsrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKysrKyBQeXRob24tMy41LjQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKIEBAIC0xOSw2ICsxOSw4IEBAIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9CQVNFCiAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX1NJVEUKICBIQVNfVVNFUl9TSVRFID0gVHJ1ZQpAQCAtNTIsMjAgKzUyLDIyIEBACiAgV0lORE9XU19TQ0hFTUUgPSB7CiAgICAgICdwdXJlbGliJzogJyRiYXNlL0xpYi9zaXRlLXBhY2thZ2VzJywKICAgICAgJ3BsYXRsaWInOiAnJGJhc2UvTGliL3NpdGUtcGFja2FnZXMnLAotQEAgLTMwLDcgKzMyLDcgQEAgV0lORE9XU19TQ0hFTUUgPSB7CitAQCAtMjksOCArMzEsOCBAQCBXSU5ET1dTX1NDSEVNRSA9IHsKKyAKICBJTlNUQUxMX1NDSEVNRVMgPSB7CiAgICAgICd1bml4X3ByZWZpeCc6IHsKLSAgICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKKy0gICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKIC0gICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncHVyZWxpYic6ICckcGxhdGJhc2UvJytsaWJuYW1lKycvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCiArICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvJytsaWJuYW1lKycvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICAnaGVhZGVycyc6ICckYmFzZS9pbmNsdWRlL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0JGFiaWZsYWdzLyRkaXN0X25hbWUnLAogICAgICAgICAgJ3NjcmlwdHMnOiAnJGJhc2UvYmluJywKICAgICAgICAgICdkYXRhJyAgIDogJyRiYXNlJywKLWRpZmYgLS1naXQgYS9MaWIvcHlkb2MucHkgYi9MaWIvcHlkb2MucHkKLWluZGV4IDNjYTA4YzkuLjY1Mjg3MzAgMTAwNzU1Ci0tLS0gYS9MaWIvcHlkb2MucHkKLSsrKyBiL0xpYi9weWRvYy5weQotQEAgLTM4NCw3ICszODQsNyBAQCBjbGFzcyBEb2M6CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi9weWRvYy5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL0xpYi9weWRvYy5weQorKysrIFB5dGhvbi0zLjUuNC9MaWIvcHlkb2MucHkKK0BAIC0zODksNyArMzg5LDcgQEAgY2xhc3MgRG9jOgogICAgICBkb2Ntb2R1bGUgPSBkb2NjbGFzcyA9IGRvY3JvdXRpbmUgPSBkb2NvdGhlciA9IGRvY3Byb3BlcnR5ID0gZG9jZGF0YSA9IGZhaWwKICAKICAgICAgZGVmIGdldGRvY2xvYyhzZWxmLCBvYmplY3QsCkBAIC03NCwxMCArNzYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQuJWQiICUgIHN5cy52ZXJzaW9uX2luZm9bOjJdKSk6CiAgICAgICAgICAiIiJSZXR1cm4gdGhlIGxvY2F0aW9uIG9mIG1vZHVsZSBkb2NzIG9yIE5vbmUiIiIKICAKLWRpZmYgLS1naXQgYS9MaWIvc2l0ZS5weSBiL0xpYi9zaXRlLnB5Ci1pbmRleCAzZjc4ZWY1Li41MTE5MzFlIDEwMDY0NAotLS0tIGEvTGliL3NpdGUucHkKLSsrKyBiL0xpYi9zaXRlLnB5CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi9zaXRlLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvTGliL3NpdGUucHkKKysrKyBQeXRob24tMy41LjQvTGliL3NpdGUucHkKIEBAIC0zMDMsMTIgKzMwMywxMiBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgogICAgICAgICAgc2Vlbi5hZGQocHJlZml4KQogIApAQCAtOTMsMjAgKzk1LDIxIEBACiAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgICAgICAgICAgIyBmb3IgZnJhbWV3b3JrIGJ1aWxkcyAqb25seSogd2UgYWRkIHRoZSBzdGFuZGFyZCBBcHBsZQogICAgICAgICAgICAgICMgbG9jYXRpb25zLgotZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5Ci1pbmRleCA5YzM0YmUwLi4zZDExODFhIDEwMDY0NAotLS0tIGEvTGliL3N5c2NvbmZpZy5weQotKysrIGIvTGliL3N5c2NvbmZpZy5weQorSW5kZXg6IFB5dGhvbi0zLjUuNC9MaWIvc3lzY29uZmlnLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvTGliL3N5c2NvbmZpZy5weQorKysrIFB5dGhvbi0zLjUuNC9MaWIvc3lzY29uZmlnLnB5CiBAQCAtMjAsMTAgKzIwLDEwIEBAIF9fYWxsX18gPSBbCiAgCiAgX0lOU1RBTExfU0NIRU1FUyA9IHsKICAgICAgJ3Bvc2l4X3ByZWZpeCc6IHsKIC0gICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKIC0gICAgICAgICdwbGF0c3RkbGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCistICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKKy0gICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICsgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogKyAgICAgICAgJ3BsYXRzdGRsaWInOiAne3BsYXRiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0tICAgICAgICAncGxhdGxpYic6ICd7cGxhdGJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncHVyZWxpYic6ICd7cGxhdGJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICsgICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAgJ2luY2x1ZGUnOgogICAgICAgICAgICAgICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCkBAIC0xMTcsMTAgKzEyMCwxMSBAQAogICAgICAncG9zaXhfaG9tZSc6IHsKIC0gICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9saWIvcHl0aG9uJywKIC0gICAgICAgICdwbGF0c3RkbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKKy0gICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKKy0gICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKICsgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS8nK3N5cy5saWIrJy9weXRob24nLAogKyAgICAgICAgJ3BsYXRzdGRsaWInOiAne2Jhc2V9Lycrc3lzLmxpYisnL3B5dGhvbicsCi0gICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCi0tICAgICAgICAncGxhdGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCisrICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vJytzeXMubGliKycvcHl0aG9uJywKICsgICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS8nK3N5cy5saWIrJy9weXRob24nLAogICAgICAgICAgJ2luY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbicsCiAgICAgICAgICAncGxhdGluY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbicsCkBAIC0xMzEsMTggKzEzNSwxOSBAQAogICAgICAncG9zaXhfdXNlcic6IHsKIC0gICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKIC0gICAgICAgICdwbGF0c3RkbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCistICAgICAgICAncHVyZWxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCistICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiArICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICsgICAgICAgICdwbGF0c3RkbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLS0gICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKKysgICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogKyAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKICAgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAotZGlmZiAtLWdpdCBhL0xpYi90cmFjZS5weSBiL0xpYi90cmFjZS5weQotaW5kZXggZjEwODI2Ni4uN2ZkODNmMiAxMDA3NTUKLS0tLSBhL0xpYi90cmFjZS5weQotKysrIGIvTGliL3RyYWNlLnB5CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi90cmFjZS5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL0xpYi90cmFjZS5weQorKysrIFB5dGhvbi0zLjUuNC9MaWIvdHJhY2UucHkKIEBAIC03NDksMTAgKzc0OSwxMCBAQCBkZWYgbWFpbihhcmd2PU5vbmUpOgogICAgICAgICAgICAgICAgICAjIHNob3VsZCBJIGFsc28gY2FsbCBleHBhbmR1c2VyPyAoYWZ0ZXIgYWxsLCBjb3VsZCB1c2UgJEhPTUUpCiAgCkBAIC0xNTYsMTEgKzE2MSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCiAgICAgICAgICAgICAgICAgIHMgPSBvcy5wYXRoLm5vcm1wYXRoKHMpCiAgICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgotaW5kZXggMTA5ZjQwMi4uNjFhNDFlMiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLnByZS5pbgotKysrIGIvTWFrZWZpbGUucHJlLmluCi1AQCAtMTA2LDYgKzEwNiw4IEBAIFBZX0NPUkVfQ0ZMQUdTPQkkKFBZX0NGTEFHUykgJChQWV9DRkxBR1NfTk9ESVNUKSAkKFBZX0NQUEZMQUdTKSAkKENGTEFHU0ZPUlNIQVJFCitJbmRleDogUHl0aG9uLTMuNS40L01ha2VmaWxlLnByZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL01ha2VmaWxlLnByZS5pbgorKysrIFB5dGhvbi0zLjUuNC9NYWtlZmlsZS5wcmUuaW4KK0BAIC0xMDksNiArMTA5LDggQEAgQ0ZMQUdTX0FMSUFTSU5HPUBDRkxBR1NfQUxJQVNJTkdACiAgCiAgIyBNYWNoaW5lLWRlcGVuZGVudCBzdWJkaXJlY3RvcmllcwogIE1BQ0hERVA9CUBNQUNIREVQQApAQCAtMTY5LDcgKzE3NCw3IEBACiAgCiAgIyBNdWx0aWFyY2ggZGlyZWN0b3J5IChtYXkgYmUgZW1wdHkpCiAgTVVMVElBUkNIPQlATVVMVElBUkNIQAotQEAgLTEyNSw3ICsxMjcsNyBAQCBMSUJESVI9CQlAbGliZGlyQAorQEAgLTEyOCw3ICsxMzAsNyBAQCBMSUJESVI9CQlAbGliZGlyQAogIE1BTkRJUj0JCUBtYW5kaXJACiAgSU5DTFVERURJUj0JQGluY2x1ZGVkaXJACiAgQ09ORklOQ0xVREVESVI9CSQoZXhlY19wcmVmaXgpL2luY2x1ZGUKQEAgLTE3OCw3ICsxODMsNyBAQAogIEFCSUZMQUdTPQlAQUJJRkxBR1NACiAgCiAgIyBEZXRhaWxlZCBkZXN0aW5hdGlvbiBkaXJlY3RvcmllcwotQEAgLTc1NSw2ICs3NTcsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jIE1ha2VmaWxlCitAQCAtNzMxLDYgKzczMyw3IEBAIE1vZHVsZXMvZ2V0cGF0aC5vOiAkKHNyY2RpcikvTW9kdWxlcy9nZXQKICAJCS1ERVhFQ19QUkVGSVg9JyIkKGV4ZWNfcHJlZml4KSInIFwKICAJCS1EVkVSU0lPTj0nIiQoVkVSU0lPTikiJyBcCiAgCQktRFZQQVRIPSciJChWUEFUSCkiJyBcCkBAIC0xODYsOCArMTkxLDggQEAKICAJCS1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL2dldHBhdGguYwogIAogIFByb2dyYW1zL3B5dGhvbi5vOiAkKHNyY2RpcikvUHJvZ3JhbXMvcHl0aG9uLmMKLUBAIC04MzUsNyArODM4LDcgQEAgJChPUENPREVfSCk6ICQoc3JjZGlyKS9MaWIvb3Bjb2RlLnB5ICQoT1BDT0RFX0hfU0NSSVBUKQotIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKEdSQU1NQVJfSCkgJChBU1RfSCkKK0BAIC04MTMsNyArODE2LDcgQEAgcmVnZW4tb3Bjb2RlOgorIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi1hc3QuaAogIAogIFB5dGhvbi9nZXRwbGF0Zm9ybS5vOiAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKIC0JCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1EUExBVEZPUk09JyIkKE1BQ0hERVApIicgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCkBAIC0xOTUsMTAgKzIwMCwxMCBAQAogIAogIFB5dGhvbi9pbXBvcnRkbC5vOiAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKICAJCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1JJChETElOQ0xESVIpIC1vICRAICQoc3JjZGlyKS9QeXRob24vaW1wb3J0ZGwuYwotZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKLWluZGV4IDE4ZGViNjAuLmEwMWMzZjggMTAwNjQ0Ci0tLS0gYS9Nb2R1bGVzL2dldHBhdGguYwotKysrIGIvTW9kdWxlcy9nZXRwYXRoLmMKK0luZGV4OiBQeXRob24tMy41LjQvTW9kdWxlcy9nZXRwYXRoLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9Nb2R1bGVzL2dldHBhdGguYworKysrIFB5dGhvbi0zLjUuNC9Nb2R1bGVzL2dldHBhdGguYwogQEAgLTEwNSw2ICsxMDUsMTMgQEAKICAjZXJyb3IgIlBSRUZJWCwgRVhFQ19QUkVGSVgsIFZFUlNJT04sIGFuZCBWUEFUSCBtdXN0IGJlIGNvbnN0YW50IGRlZmluZWQiCiAgI2VuZGlmCkBAIC0yMzAsMTAgKzIzNSwxMCBAQAogIAogICAgICBpZiAoIV9weXRob25wYXRoIHx8ICFfcHJlZml4IHx8ICFfZXhlY19wcmVmaXggfHwgIWxpYl9weXRob24pIHsKICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCi1kaWZmIC0tZ2l0IGEvUHl0aG9uL2dldHBsYXRmb3JtLmMgYi9QeXRob24vZ2V0cGxhdGZvcm0uYwotaW5kZXggNjg5OTE0MC4uNjZhNDljNiAxMDA2NDQKLS0tLSBhL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0rKysgYi9QeXRob24vZ2V0cGxhdGZvcm0uYworSW5kZXg6IFB5dGhvbi0zLjUuNC9QeXRob24vZ2V0cGxhdGZvcm0uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCisrKysgUHl0aG9uLTMuNS40L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCiBAQCAtMTAsMyArMTAsMjMgQEAgUHlfR2V0UGxhdGZvcm0odm9pZCkKICB7CiAgCXJldHVybiBQTEFURk9STTsKQEAgLTI1OCwxMSArMjYzLDExIEBACiArewogKwlyZXR1cm4gTElCOwogK30KLWRpZmYgLS1naXQgYS9QeXRob24vc3lzbW9kdWxlLmMgYi9QeXRob24vc3lzbW9kdWxlLmMKLWluZGV4IDhkN2UwNWEuLmQ5ZGVlMGYgMTAwNjQ0Ci0tLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKLSsrKyBiL1B5dGhvbi9zeXNtb2R1bGUuYwotQEAgLTE3OTAsNiArMTc5MCwxMCBAQCBfUHlTeXNfSW5pdCh2b2lkKQorSW5kZXg6IFB5dGhvbi0zLjUuNC9QeXRob24vc3lzbW9kdWxlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9QeXRob24vc3lzbW9kdWxlLmMKKysrKyBQeXRob24tMy41LjQvUHl0aG9uL3N5c21vZHVsZS5jCitAQCAtMTgyNyw2ICsxODI3LDEwIEBAIF9QeVN5c19Jbml0KHZvaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfR2V0Q29weXJpZ2h0KCkpKTsKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygicGxhdGZvcm0iLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0dldFBsYXRmb3JtKCkpKTsKQEAgLTI3MywxMSArMjc4LDExIEBACiAgICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImV4ZWN1dGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0dldFByb2dyYW1GdWxsUGF0aCgpLCAtMSkpOwotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNzA3MzI0ZC4uZThkNTlhMyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODgzLDYgKzg4Myw0MSBAQCBQTEFURElSPXBsYXQtJE1BQ0hERVAKK0luZGV4OiBQeXRob24tMy41LjQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvY29uZmlndXJlLmFjCisrKysgUHl0aG9uLTMuNS40L2NvbmZpZ3VyZS5hYworQEAgLTg4NSw2ICs4ODUsNDEgQEAgUExBVERJUj1wbGF0LSRNQUNIREVQCiAgQUNfU1VCU1QoUExBVERJUikKICBBQ19TVUJTVChQTEFURk9STV9UUklQTEVUKQogIApAQCAtMzE5LDExICszMjQsMTEgQEAKICAKICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAtV2wsLS1uby1hcy1uZWVkZWRdKQogIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggNmQyNmRlYi4uN2IxNDIxNSAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTQ5NSw3ICs0OTUsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CitJbmRleDogUHl0aG9uLTMuNS40L3NldHVwLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvc2V0dXAucHkKKysrKyBQeXRob24tMy41LjQvc2V0dXAucHkKK0BAIC00OTQsNyArNDk0LDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgIyBkaXJlY3RvcmllcyAoaS5lLiAnLicgYW5kICdJbmNsdWRlJykgbXVzdCBiZSBmaXJzdC4gIFNlZSBpc3N1ZQogICAgICAgICAgIyAxMDUyMC4KICAgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6CkBAIC0zMzIsNyArMzM3LDcgQEAKICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsICcvdXNyL2xvY2FsL2luY2x1ZGUnKQogICAgICAgICAgIyBvbmx5IGNoYW5nZSB0aGlzIGZvciBjcm9zcyBidWlsZHMgZm9yIDMuMywgaXNzdWVzIG9uIE1hZ2VpYQogICAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgotQEAgLTU1Myw4ICs1NTMsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CitAQCAtNTUyLDggKzU1Miw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKICAgICAgICAgICMgYmUgYXNzdW1lZCB0aGF0IG5vIGFkZGl0aW9uYWwgLUksLUwgZGlyZWN0aXZlcyBhcmUgbmVlZGVkLgogICAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKICAgICAgICAgICAgICBsaWJfZGlycyA9IHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzICsgWwpAQCAtMzQyLDcgKzM0Nyw3IEBACiAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICBpbmNfZGlycyA9IHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzICsgWycvdXNyL2luY2x1ZGUnXQogICAgICAgICAgZWxzZToKLUBAIC03NDYsMTEgKzc0NSwxMSBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CitAQCAtNzQ1LDExICs3NDQsMTEgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgICAgIGVsaWYgY3Vyc2VzX2xpYnJhcnk6CiAgICAgICAgICAgICAgICAgIHJlYWRsaW5lX2xpYnMuYXBwZW5kKGN1cnNlc19saWJyYXJ5KQogICAgICAgICAgICAgIGVsaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycyArCkBAIC0zNTYsNiArMzYxLDMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1yZWFkbGluZV9leHRyYV9saW5rX2FyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9cmVhZGxpbmVfbGlicykgKQogICAgICAgICAgZWxzZToKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ5MWYzNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCkBAIC0wLDAgKzEsMTE0OSBAQAoreworICAgICIydG8zIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vMnRvMy0qIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYjJ0bzMiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYXV0b21hdGVkIFB5dGhvbiAyIHRvIDMgY29kZSB0cmFuc2xhdG9yIgorICAgIH0sCisgICAgImFzeW5jaW8iOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYXN5bmNpbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25jdXJyZW50IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmN1cnJlbnQvZnV0dXJlcyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm11bHRpcHJvY2Vzc2luZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJwaWNrbGUiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInRocmVhZGluZyIsCisgICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXN5bmNocm9ub3VzIEkvIgorICAgIH0sCisgICAgImF1ZGlvIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2h1bmsuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc25kaGRyLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N1bmF1LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3dhdmUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NodW5rLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2F1ZGlvb3AuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9vc3NhdWRpb2Rldi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NuZGhkci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdW5hdS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS93YXZlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEF1ZGlvIEhhbmRsaW5nIgorICAgIH0sCisgICAgImNvZGVjcyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3hkcmxpYi4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX211bHRpYnl0ZWNvZGVjLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUveGRybGliLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNvZGVjIgorICAgIH0sCisgICAgImNvbXBpbGUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb21waWxlYWxsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3B5X2NvbXBpbGUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbXBpbGVhbGwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHlfY29tcGlsZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImFzeW5jaW8iLAorICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm11bHRpcHJvY2Vzc2luZyIsCisgICAgICAgICAgICAicGlja2xlIiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ0aHJlYWRpbmciLAorICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJ5dGVjb2RlIGNvbXBpbGF0aW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAiY29tcHJlc3Npb24iOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fY29tcHJlc3Npb24uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYnoyLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2d6aXAuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbHptYS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90YXJmaWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3ppcGZpbGUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19jb21wcmVzc2lvbi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9iejIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ3ppcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fYnoyLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2x6bWEuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC96bGliLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbHptYS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90YXJmaWxlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3ppcGZpbGUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGlnaC1sZXZlbCBjb21wcmVzc2lvbiBzdXBwb3J0IgorICAgIH0sCisgICAgImNvcmUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fX2Z1dHVyZV9fLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19ib290bG9jYWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19jb2xsZWN0aW9uc19hYmMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX21hcmt1cGJhc2UuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3NpdGVidWlsdGlucy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fc3lzY29uZmlnZGF0YS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fd2Vha3JlZnNldC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hYmMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXJncGFyc2UuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXN0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Jpc2VjdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2RlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvZGVjcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2Rlb3AuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29uZmlncGFyc2VyLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvbnRleHRsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29weS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb3B5cmVnLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Nzdi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZW51bS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mdW5jdG9vbHMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2VuZXJpY3BhdGguKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2V0b3B0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dldHRleHQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaGVhcHEuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW1wLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2luc3BlY3QuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW8uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18va2V5d29yZC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9saW5lY2FjaGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbG9jYWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL29wY29kZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcGVyYXRvci4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcHRwYXJzZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wbGF0Zm9ybS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wb3NpeHBhdGguKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmVwcmxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9ybGNvbXBsZXRlci4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zZWxlY3RvcnMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2lnbmFsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NpdGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlX2NvbXBpbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlX2NvbnN0YW50cy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zcmVfcGFyc2UuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RhdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdHJpbmdwcmVwLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N0cnVjdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdWJwcm9jZXNzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N5bWJvbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zeXNjb25maWcuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGV4dHdyYXAuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGhyZWFkaW5nLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Rva2VuLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Rva2VuaXplLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RyYWNlYmFjay4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90eXBlcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy93YXJuaW5ncy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy93ZWFrcmVmLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbGxlY3Rpb25zL19fcHljYWNoZV9fIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbGxlY3Rpb25zL19fcHljYWNoZV9fL2FiYy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MvX19weWNhY2hlX18iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fL2FsaWFzZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fL2xhdGluXzEuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fL3V0Zl84LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvX19weWNhY2hlX18vYWJjLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXy9tYWNoaW5lcnkuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL19fcHljYWNoZV9fL3V0aWwuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uKlshLWNvbmZpZ10iLAorICAgICAgICAgICAgIiR7aW5jbHVkZWRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS9weWNvbmZpZyouaCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbGxlY3Rpb25zX2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3NpdGVidWlsdGlucy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29sbGVjdGlvbnMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGVjdXN0b21pemUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvVXNlckRpY3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvVXNlckxpc3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvVXNlclN0cmluZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX2Z1dHVyZV9fLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19hYmNvbGwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2Jvb3Rsb2NhbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2NvbGxlY3Rpb25zX2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fbWFya3VwYmFzZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fc2l0ZWJ1aWx0aW5zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19zeXNjb25maWdkYXRhLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L193ZWFrcmVmc2V0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hcmdwYXJzZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYmlzZWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvZGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29kZWNzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvZGVvcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xsZWN0aW9ucyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xsZWN0aW9ucy9hYmMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlncGFyc2VyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbnRleHRsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29weS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5cmVnLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Nzdi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9hbGlhc2VzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9sYXRpbl8xLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy91dGZfOC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbnVtLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Z1bmN0b29scy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZW5lcmljcGF0aC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZXRvcHQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ2V0dGV4dC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9oZWFwcS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXAucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9hYmMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL21hY2hpbmVyeS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvdXRpbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbnNwZWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2lvLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2tleXdvcmQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3N0cnVjdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2JpbmFzY2lpLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vdGltZS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3hyZWFkbGluZXMuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fYmlzZWN0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2Nzdi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19oZWFwcS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19vcGNvZGUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fcG9zaXhzdWJwcm9jZXNzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3N0cnVjdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2FycmF5Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYmluYXNjaWkuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9tYXRoLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcGFyc2VyLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcmVhZGxpbmUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9zZWxlY3QuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC90aW1lLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvdW5pY29kZWRhdGEuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC94cmVhZGxpbmVzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGluZWNhY2hlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xvY2FsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9uZXcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvb3Bjb2RlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29wZXJhdG9yLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29wdHBhcnNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BsYXRmb3JtLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3Bvc2l4cGF0aC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZXBybGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3JsY29tcGxldGVyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NlbGVjdG9ycy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaWduYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc2l0ZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfY29tcGlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfY29uc3RhbnRzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NyZV9wYXJzZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdGF0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N0cmluZ3ByZXAucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3RydWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N1YnByb2Nlc3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3ltYm9sLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N5c2NvbmZpZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZXh0d3JhcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90aHJlYWRpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdG9rZW4ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdG9rZW5pemUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdHJhY2ViYWNrLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3R5cGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3dhcm5pbmdzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3dlYWtyZWYucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFtdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIKKyAgICB9LAorICAgICJjcnlwdCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NyeXB0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2hhc2hsaWIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NyeXB0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2hhc2hsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2NyeXB0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2hhc2hsaWIuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc2hhMjU2Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NoYTUxMi4qLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAic3RyaW5nb2xkIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgY3J5cHRvZ3JhcGhpYyBhbmQgaGFzaGluZyBzdXBwb3J0IgorICAgIH0sCisgICAgImN0eXBlcyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jdHlwZXMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N0eXBlcy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jdHlwZXNfdGVzdC4qLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEMgdHlwZXMgc3VwcG9ydCIKKyAgICB9LAorICAgICJjdXJzZXMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY3Vyc2VzIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jdXJzZXMuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3Vyc2VzX3BhbmVsLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY3Vyc2VzIHN1cHBvcnQiCisgICAgfSwKKyAgICAiZGF0ZXRpbWUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fc3RycHRpbWUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2FsZW5kYXIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZGF0ZXRpbWUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19zdHJwdGltZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jYWxlbmRhci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kYXRldGltZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZGF0ZXRpbWUuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjYWxlbmRhciBhbmQgdGltZSBzdXBwb3J0IgorICAgIH0sCisgICAgImRiIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2RibSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZGJtLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZmlsZS1iYXNlZCBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgImRlYnVnZ2VyIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYmRiLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BkYi4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYmRiLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BkYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRlYnVnZ2VyIgorICAgIH0sCisgICAgImRldiI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiYXNlX2xpYmRpcn0vKi5hIiwKKyAgICAgICAgICAgICIke2Jhc2VfbGliZGlyfS8qLm8iLAorICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24qLWNvbmZpZyIsCisgICAgICAgICAgICAiJHtkYXRhZGlyfS9hY2xvY2FsIiwKKyAgICAgICAgICAgICIke2RhdGFkaXJ9L3BrZ2NvbmZpZyIsCisgICAgICAgICAgICAiJHtpbmNsdWRlZGlyfSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9LyouYSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9LyoubGEiLAorICAgICAgICAgICAgIiR7bGliZGlyfS8qLm8iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcGtnY29uZmlnIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZyovTWFrZWZpbGUiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnKi9NYWtlZmlsZS9fX3B5Y2FjaGVfXyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkZXZlbG9wbWVudCBwYWNrYWdlIgorICAgIH0sCisgICAgImRpZmZsaWIiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaWZmbGliLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaWZmbGliLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIgorICAgIH0sCisgICAgImRpc3R1dGlscyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaXN0dXRpbHMiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gRGlzdHJpYnV0aW9uIFV0aWxpdGllcyIKKyAgICB9LAorICAgICJkaXN0dXRpbHMtc3RhdGljZGV2IjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnL19fcHljYWNoZV9fL2xpYiouYSIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnL2xpYiouYSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImRpc3R1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRpc3RyaWJ1dGlvbiB1dGlsaXRpZXMgKHN0YXRpYyBsaWJyYXJpZXMpIgorICAgIH0sCisgICAgImRvY3Rlc3QiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kb2N0ZXN0LioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kb2N0ZXN0LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZGVidWdnZXIiLAorICAgICAgICAgICAgImRpZmZsaWIiLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInN0cmluZ29sZCIsCisgICAgICAgICAgICAidW5pdHRlc3QiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBmcmFtZXdvcmsgZm9yIHJ1bm5pbmcgZXhhbXBsZXMgaW4gZG9jc3RyaW5ncyIKKyAgICB9LAorICAgICJlbWFpbCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2ltYXBsaWIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VtYWlsIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltYXBsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBlbWFpbCBzdXBwb3J0IgorICAgIH0sCisgICAgImZjbnRsIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2ZjbnRsLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24ncyBmY250bCBpbnRlcmZhY2UiCisgICAgfSwKKyAgICAiZ2RibSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZ2RibS4qLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEdOVSBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgImh0bWwiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mb3JtYXR0ZXIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Zvcm1hdHRlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9odG1sIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEhUTUwgcHJvY2Vzc2luZyBzdXBwb3J0IgorICAgIH0sCisgICAgImlkbGUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9pZGxlKiIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pZGxlbGliIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQiCisgICAgfSwKKyAgICAiaW1hZ2UiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2xvcnN5cy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pbWdoZHIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbG9yc3lzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltZ2hkci5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBncmFwaGljYWwgaW1hZ2UgaGFuZGxpbmciCisgICAgfSwKKyAgICAiaW8iOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fcHlpby4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pcGFkZHJlc3MuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGlwZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc29ja2V0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NzbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90ZW1wZmlsZS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3B5aW8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaXBhZGRyZXNzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zb2NrZXQuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3NsLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvdGVybWlvcy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BpcGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NvY2tldC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zc2wucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdGVtcGZpbGUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvdy1sZXZlbCBJL08iCisgICAgfSwKKyAgICAianNvbiI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9qc29uIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19qc29uLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSlNPTiBzdXBwb3J0IgorICAgIH0sCisgICAgImxvZ2dpbmciOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbG9nZ2luZyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvZ2dpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJtYWlsYm94IjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWFpbGJveC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbWFpbGJveC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAiZW1haWwiLAorICAgICAgICAgICAgImZjbnRsIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibWltZSIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtYWlsYm94IGZvcm1hdCBzdXBwb3J0IgorICAgIH0sCisgICAgIm1hdGgiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9yYW5kb20uKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19yYW5kb20uKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9jbWF0aC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3JhbmRvbS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWF0aCBzdXBwb3J0IgorICAgIH0sCisgICAgIm1pbWUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9xdW9wcmkuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdXUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3F1b3ByaS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91dS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBNSU1FIGhhbmRsaW5nIEFQSXMiCisgICAgfSwKKyAgICAibW1hcCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9tbWFwLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWVtb3J5LW1hcHBlZCBmaWxlIHN1cHBvcnQiCisgICAgfSwKKyAgICAibW9kdWxlcyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgIjJ0bzMiLAorICAgICAgICAgICAgImFzeW5jaW8iLAorICAgICAgICAgICAgImF1ZGlvIiwKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvbXBpbGUiLAorICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiY3R5cGVzIiwKKyAgICAgICAgICAgICJjdXJzZXMiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJkYiIsCisgICAgICAgICAgICAiZGVidWdnZXIiLAorICAgICAgICAgICAgImRpZmZsaWIiLAorICAgICAgICAgICAgImRpc3R1dGlscyIsCisgICAgICAgICAgICAiZG9jdGVzdCIsCisgICAgICAgICAgICAiZW1haWwiLAorICAgICAgICAgICAgImZjbnRsIiwKKyAgICAgICAgICAgICJodG1sIiwKKyAgICAgICAgICAgICJpZGxlIiwKKyAgICAgICAgICAgICJpbWFnZSIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImpzb24iLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgIm1haWxib3giLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgIm1tYXAiLAorICAgICAgICAgICAgIm11bHRpcHJvY2Vzc2luZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJuZXRzZXJ2ZXIiLAorICAgICAgICAgICAgIm51bWJlcnMiLAorICAgICAgICAgICAgInBpY2tsZSIsCisgICAgICAgICAgICAicGtndXRpbCIsCisgICAgICAgICAgICAicGxpc3RsaWIiLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAicHJvZmlsZSIsCisgICAgICAgICAgICAicHlkb2MiLAorICAgICAgICAgICAgInJlc291cmNlIiwKKyAgICAgICAgICAgICJydW5weSIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInNtdHBkIiwKKyAgICAgICAgICAgICJzcWxpdGUzIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInN5c2xvZyIsCisgICAgICAgICAgICAidGVybWluYWwiLAorICAgICAgICAgICAgInRocmVhZGluZyIsCisgICAgICAgICAgICAidGtpbnRlciIsCisgICAgICAgICAgICAidHlwaW5nIiwKKyAgICAgICAgICAgICJ1bml0dGVzdCIsCisgICAgICAgICAgICAidW5peGFkbWluIiwKKyAgICAgICAgICAgICJ4bWwiLAorICAgICAgICAgICAgInhtbHJwYyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiQWxsIFB5dGhvbiBtb2R1bGVzIgorICAgIH0sCisgICAgIm11bHRpcHJvY2Vzc2luZyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fbXVsdGlwcm9jZXNzaW5nLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbXVsdGlwcm9jZXNzaW5nIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBzdXBwb3J0IgorICAgIH0sCisgICAgIm5ldGNsaWVudCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Jhc2U2NC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mdHBsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaG1hYy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9taW1ldHlwZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbm50cGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wb3BsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc210cGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90ZWxuZXRsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdXVpZC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYmFzZTY0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Z0cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9obWFjLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2h0dHAiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaHR0cC9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9taW1ldHlwZXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbm50cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wb3BsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc210cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZWxuZXRsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdXJsbGliIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3VybGxpYi9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91dWlkLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJjdHlwZXMiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJlbWFpbCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIGNsaWVudHMiCisgICAgfSwKKyAgICAibmV0c2VydmVyIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2dpLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NvY2tldHNlcnZlci4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY2dpLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NvY2tldHNlcnZlci5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImVtYWlsIiwKKyAgICAgICAgICAgICJodG1sIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibWltZSIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBzZXJ2ZXJzIgorICAgIH0sCisgICAgIm51bWJlcnMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fcHlkZWNpbWFsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2RlY2ltYWwuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZnJhY3Rpb25zLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL251bWJlcnMuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19weWRlY2ltYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZGVjaW1hbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9mcmFjdGlvbnMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2RlY2ltYWwuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9udW1iZXJzLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG51bWJlciBBUElzIgorICAgIH0sCisgICAgInBpY2tsZSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19jb21wYXRfcGlja2xlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BpY2tsZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9waWNrbGV0b29scy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaGVsdmUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19jb21wYXRfcGlja2xlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19waWNrbGUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9waWNrbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGlja2xldG9vbHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc2hlbHZlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHNlcmlhbGlzYXRpb24vcGVyc2lzdGVuY2Ugc3VwcG9ydCIKKyAgICB9LAorICAgICJwa2d1dGlsIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGtndXRpbC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGtndXRpbC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBwYWNrYWdlIGV4dGVuc2lvbiB1dGlsaXR5IHN1cHBvcnQiCisgICAgfSwKKyAgICAicGxpc3RsaWIiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wbGlzdGxpYi4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGxpc3RsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAieG1sIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJHZW5lcmF0ZSBhbmQgcGFyc2UgTWFjIE9TIFggLnBsaXN0IGZpbGVzIgorICAgIH0sCisgICAgInBwcmludCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BwcmludC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHByaW50LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHByZXR0eS1wcmludCBzdXBwb3J0IgorICAgIH0sCisgICAgInByb2ZpbGUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jUHJvZmlsZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wcm9maWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BzdGF0cy4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY1Byb2ZpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2xzcHJvZi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3Byb2ZpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHN0YXRzLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBzdXBwb3J0IgorICAgIH0sCisgICAgInB5ZG9jIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHlkb2MuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vcHlkb2MqIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3B5ZG9jLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3B5ZG9jX2RhdGEiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInBrZ3V0aWwiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcmFjdGl2ZSBoZWxwIHN1cHBvcnQiCisgICAgfSwKKyAgICAicmVzb3VyY2UiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcmVzb3VyY2UuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiByZXNvdXJjZSBjb250cm9sIGludGVyZmFjZSIKKyAgICB9LAorICAgICJydW5weSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3J1bnB5LioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9ydW5weS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInBrZ3V0aWwiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoZWxwZXIgZm9yIGxvY2F0aW5nL2V4ZWN1dGluZyBzY3JpcHRzIGluIG1vZHVsZSBuYW1lc3BhY2UiCisgICAgfSwKKyAgICAic2hlbGwiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jbWQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZm5tYXRjaC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nbG9iLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NobGV4LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NodXRpbC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY21kLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ZubWF0Y2gucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ2xvYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaGxleC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaHV0aWwucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzaGVsbC1saWtlIGZ1bmN0aW9uYWxpdHkiCisgICAgfSwKKyAgICAic210cGQiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hc3luY2hhdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hc3luY29yZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zbXRwZC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9zbXRwZC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3luY2hhdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3luY29yZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zbXRwZC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAiZW1haWwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJtaW1lIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBEYWVtb24iCisgICAgfSwKKyAgICAic3FsaXRlMyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvX19weWNhY2hlX18iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXy9kYmFwaTIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXy9kdW1wLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3FsaXRlMy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvZGJhcGkyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvZHVtcC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImRhdGV0aW1lIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgInNxbGl0ZTMtdGVzdHMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy90ZXN0IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAidGVzdHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQgdGVzdHMiCisgICAgfSwKKyAgICAic3RyaW5nb2xkIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RyaW5nLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdHJpbmcucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc3RyaW5nIEFQSXMgW2RlcHJlY2F0ZWRdIgorICAgIH0sCisgICAgInN5c2xvZyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9zeXNsb2cuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzeXNsb2cgaW50ZXJmYWNlIgorICAgIH0sCisgICAgInRlcm1pbmFsIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHR5LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3R0eS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHR5LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3R0eS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZXN0IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRlc3RzIgorICAgIH0sCisgICAgInRocmVhZGluZyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19kdW1teV90aHJlYWQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3RocmVhZGluZ19sb2NhbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kdW1teV90aHJlYWRpbmcuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcXVldWUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19kdW1teV90aHJlYWQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3RocmVhZGluZ19sb2NhbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kdW1teV90aHJlYWRpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcXVldWUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGhyZWFkaW5nICYgc3luY2hyb25pemF0aW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAidGtpbnRlciI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90a2ludGVyIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFRjbC9UayBiaW5kaW5ncyIKKyAgICB9LAorICAgICJ0eXBpbmciOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90eXBpbmcuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3R5cGluZy5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0eXBpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJ1bml0dGVzdCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91bml0dGVzdCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91bml0dGVzdC8iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdW5pdHRlc3QvX19weWNhY2hlX18iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJsb2dnaW5nIiwKKyAgICAgICAgICAgICJwcHJpbnQiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIgorICAgIH0sCisgICAgInVuaXhhZG1pbiI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dldHBhc3MuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2dldHBhc3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvZ3JwLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvbmlzLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFVuaXggYWRtaW5pc3RyYXRpb24gc3VwcG9ydCIKKyAgICB9LAorICAgICJ4bWwiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2VsZW1lbnR0cmVlLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcHlleHBhdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3htbCIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBYTUwgc3VwcG9ydCIKKyAgICB9LAorICAgICJ4bWxycGMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUveG1scnBjIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3htbHJwYy9fX3B5Y2FjaGVfXyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInhtbCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFhNTC1SUEMgc3VwcG9ydCIKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXNldHVwLnB5LW5vLWhvc3QtaGVhZGVycy1saWJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXNldHVwLnB5LW5vLWhvc3QtaGVhZGVycy1saWJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmM4YjhjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1zZXR1cC5weS1uby1ob3N0LWhlYWRlcnMtbGlicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNDMyMzhlMWFjMTNlMzI5ODRkMDE1YzkyYTU4NDFmM2RlMWZlMWQxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDE4IE5vdiAyMDE0IDAwOjA3OjA3IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5OiBubyBob3N0IGhlYWRlcnMgbGlicwotCi1XaGVuIHdlIGFyZSBjcm9zcy1jb21waWxpbmcsIHNldHVwLnB5IHNob3VsZCBuZXZlciBsb29rIGluIC91c3IKLW9yIC91c3IvbG9jYWwgdG8gZmluZCBoZWFkZXJzIG9yIGxpYnJhcmllcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtDcm9zcyBjb21waWxlIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc2V0dXAucHkgfCAzIC0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggZjAyMGIyOC4uZTgzMzljZCAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTQ0NCwxMCArNDQ0LDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKLSAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsIG9zLnBhdGguam9pbignL3Vzci9sb2NhbCcsIHN5cy5saWIpKQotICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCi0tICAgICAgICAjIG9ubHkgY2hhbmdlIHRoaXMgZm9yIGNyb3NzIGJ1aWxkcyBmb3IgMy4zLCBpc3N1ZXMgb24gTWFnZWlhCi0tICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6Ci0gICAgICAgICAgICAgc2VsZi5hZGRfZ2NjX3BhdGhzKCkKLS0gICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6Ci0gICAgICAgICAgICAgc2VsZi5hZGRfbXVsdGlhcmNoX3BhdGhzKCkKLSAKLSAgICAgICAgICMgQWRkIHBhdGhzIHNwZWNpZmllZCBpbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIExERkxBR1MgYW5kCi0tLSAKLTIuMC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy11c2UtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKaW5kZXggNzQ0OTBkOS4uYTRmOGJkNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKQEAgLTEwLDExICsxMCwxMSBAQAogIGNvbmZpZ3VyZS5hYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTg5YmFmOS4uMjg5MGM5NiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjcsNyArNjcsNyBAQCBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorSW5kZXg6IFB5dGhvbi0zLjUuNC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9jb25maWd1cmUuYWMKKysrKyBQeXRob24tMy41LjQvY29uZmlndXJlLmFjCitAQCAtNzMsNyArNzMsNyBAQCBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogIAkgICAgQUNfTVNHX0VSUk9SKFtweXRob24kUEFDS0FHRV9WRVJTSU9OIGludGVycHJldGVyIG5vdCBmb3VuZF0pCiAgCWZpCiAgICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCkBAIC0yMyw2ICsyMywzIEBACiAgICAgIGZpCiAgZWxpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG1heWJlOyB0aGVuCiAgICAgIEFDX01TR19FUlJPUihbQ3Jvc3MgY29tcGlsaW5nIHJlcXVpcmVkIC0taG9zdD1IT1NULVRVUExFIGFuZCAtLWJ1aWxkPUFSQ0hdKQotLS0gCi0yLjAuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3JlZ2VuLWFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcmVnZW4tYWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YjlkOWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3JlZ2VuLWFsbC5wYXRjaApAQCAtMCwwICsxLDI1IEBACitweXRob24zLW5hdGl2ZTogcnVuIHJlZ2VuLWltcG9ydGxpYiB0YXJnZXQgY29ycmVjdGx5CisKK3JlZ2VuLWltcG9ydGxpYiBkZXBlbmRzIG9uIG90aGVyIHJlZ2VuLSB0YXJnZXRzLCBzbyB3ZSBtdXN0IGJlIHN1cmUgdG8KK3J1biBpdCBhZnRlciAobW9zdCBvZikgdGhlIG90aGVycy4gIEluIHJlYWxpdHksIHdlIGRvIG5vdCBuZWVkIHRvIHJ1biBpdAorYXQgYWxsIHNpbmNlICJtYWtlIiB3aWxsIGludm9rZSBpdCwgaWYgbmVjZXNzYXJ5LiAgV2UgZG8gbm90IHdhbnQgdG8KK3JlbHkgb24gdGhhdCwgdGhvdWdoLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCisKKworLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKysgYi9NYWtlZmlsZS5wcmUuaW4KK0BAIC03MDksNyArNzA5LDggQEAgcmVnZW4taW1wb3J0bGliOiBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAjIFJlZ2VuZXJhdGUgYWxsIGdlbmVyYXRlZCBmaWxlcworIAorLXJlZ2VuLWFsbDogcmVnZW4tb3Bjb2RlIHJlZ2VuLW9wY29kZS10YXJnZXRzIHJlZ2VuLXR5cGVzbG90cyByZWdlbi1ncmFtbWFyIHJlZ2VuLWFzdCByZWdlbi1pbXBvcnRsaWIKKytyZWdlbi1hbGw6IHJlZ2VuLW9wY29kZSByZWdlbi1vcGNvZGUtdGFyZ2V0cyByZWdlbi10eXBlc2xvdHMgcmVnZW4tZ3JhbW1hciByZWdlbi1hc3QKKysJJChNQUtFKSByZWdlbi1pbXBvcnRsaWIKKyAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgIyBTcGVjaWFsIHJ1bGVzIGZvciBvYmplY3QgZmlsZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvc2V0dXAucHktZmluZC1saWJyYXJpZXMtaW4tc3RhZ2luZy1kaXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNmJkMzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1QYXRjaCBzZXR1cC5weSBzbyB0aGF0IHRoZSBkZXRlY3RfbW9kdWxlcygpIGZ1bmN0aW9uIGxvb2tzIGZvciByZXF1aXJlZAotbGlicmFyaWVzIGFuZCBoZWFkZXJzIGluIFNUQUdJTkdfTElCRElSIC8gU1RBR0lOR19JTkNESVIuCi0KLVdpdGhvdXQgdGhpcyBwYXRjaCwgc2V2ZXJhbCBleHRlbnNpb24gbW9kdWxlcyBhcmUgbm90IGJ1aWx0LCBldmVuIHRob3VnaAotdGhlaXIgZGVwZW5kZW5jaWVzIGFyZSBwcmVzZW50IGluIHRoZSBjb21waWxlcidzIHNlYXJjaCBwYXRocy4KLVRoZSByZXN1bHQgaXMgdGhlIGZvbGxvd2luZyB3YXJuaW5nLCBhbmQgdWx0aW1hdGVseSBpbmNvbXBsZXRlIHBhY2thZ2VzOgotCi18IFRoZSBuZWNlc3NhcnkgYml0cyB0byBidWlsZCB0aGVzZSBvcHRpb25hbCBtb2R1bGVzIHdlcmUgbm90IGZvdW5kOgotfCBfYnoyICAgICAgICAgICAgICAgICAgX2N1cnNlc19wYW5lbCAgICAgICAgIF9kYm0KLXwgX2dkYm0gICAgICAgICAgICAgICAgIF9sem1hICAgICAgICAgICAgICAgICBfc3FsaXRlMwotfCBuaXMgICAgICAgICAgICAgICAgICAgcmVhZGxpbmUgICAgICAgICAgICAgIHpsaWIKLXwgVG8gZmluZCB0aGUgbmVjZXNzYXJ5IGJpdHMsIGxvb2sgaW4gc2V0dXAucHkgaW4gZGV0ZWN0X21vZHVsZXMoKSBmb3IgdGhlIG1vZHVsZSdzIG5hbWUuCi0KLVVwc3RyZWFtLVN0YXR1czogIEluYXBwcm9wcmlhdGUgW0Nyb3NzIGNvbXBpbGUgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IERvbWluaWMgU2FjcsOpIDxkb21pbmljLnNhY3JlQGdteC5kZT4KLQotSW5kZXg6IFB5dGhvbi0zLjQuMy9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0zLjQuMy5vcmlnL3NldHVwLnB5Ci0rKysgUHl0aG9uLTMuNC4zL3NldHVwLnB5Ci1AQCAtNTIxLDYgKzUyMSw4IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgbGliX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlyc1s6XQotICAgICAgICAgICAgIGluY19kaXJzID0gc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnNbOl0KLSsgICAgICAgICAgICBsaWJfZGlycy5hcHBlbmQob3MuZW52aXJvbi5nZXQoJ1NUQUdJTkdfTElCRElSJykpCi0rICAgICAgICAgICAgaW5jX2RpcnMuYXBwZW5kKG9zLmVudmlyb24uZ2V0KCdTVEFHSU5HX0lOQ0RJUicpKQotICAgICAgICAgZXh0cyA9IFtdCi0gICAgICAgICBtaXNzaW5nID0gW10KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2gKaW5kZXggZGUwNzY0My4uYzg5ZDlhMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2gKQEAgLTE3LDEyICsxNywxMiBAQAogIExpYi9zeXNjb25maWcucHkgICAgICAgICAgIHwgICAgNSArKysrLQogIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotaW5kZXggYTU0NWFiOS4uNzQzMTdkMSAxMDA2NDQKLS0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci0rKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTU1NCw3ICs1NTQsMTAgQEAgZGVmIGdldF9jb25maWdfdmFycygqYXJncyk6Ci0gICAgICAgICBfY29uZmlnX3ZhcnNbJ2V4ZWNfcHJlZml4J10gPSBFWEVDX1BSRUZJWAorSW5kZXg6IFB5dGhvbi0zLjUuMy9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuMy5vcmlnL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKysgUHl0aG9uLTMuNS4zL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CitAQCAtNDk4LDcgKzQ5OCwxMCBAQCBkZWYgZ2V0X2NvbmZpZ192YXJzKCphcmdzKToKKyAgICAgICAgICAgICBfY29uZmlnX3ZhcnNbJ1NPJ10gPSBTTwogIAogICAgICAgICAgIyBBbHdheXMgY29udmVydCBzcmNkaXIgdG8gYW4gYWJzb2x1dGUgcGF0aAogLSAgICAgICAgc3JjZGlyID0gX2NvbmZpZ192YXJzLmdldCgnc3JjZGlyJywgcHJvamVjdF9iYXNlKQpAQCAtMzMsMTEgKzMzLDExIEBACiAgICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CiAgICAgICAgICAgICAgaWYgcHl0aG9uX2J1aWxkOgogICAgICAgICAgICAgICAgICAjIElmIHNyY2RpciBpcyBhIHJlbGF0aXZlIHBhdGggKHR5cGljYWxseSAnLicgb3IgJy4uJykKLWRpZmYgLS1naXQgYS9MaWIvc3lzY29uZmlnLnB5IGIvTGliL3N5c2NvbmZpZy5weQotaW5kZXggNzI4N2YxMS4uY2M5Mjk5OCAxMDA2NDQKLS0tLSBhL0xpYi9zeXNjb25maWcucHkKLSsrKyBiL0xpYi9zeXNjb25maWcucHkKLUBAIC01NjIsNyArNTYyLDEwIEBAIGRlZiBnZXRfY29uZmlnX3ZhcnMoKmFyZ3MpOgorSW5kZXg6IFB5dGhvbi0zLjUuMy9MaWIvc3lzY29uZmlnLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS4zLm9yaWcvTGliL3N5c2NvbmZpZy5weQorKysrIFB5dGhvbi0zLjUuMy9MaWIvc3lzY29uZmlnLnB5CitAQCAtNTQ0LDcgKzU0NCwxMCBAQCBkZWYgZ2V0X2NvbmZpZ192YXJzKCphcmdzKToKICAgICAgICAgIF9DT05GSUdfVkFSU1sndXNlcmJhc2UnXSA9IF9nZXR1c2VyYmFzZSgpCiAgCiAgICAgICAgICAjIEFsd2F5cyBjb252ZXJ0IHNyY2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoCkBAIC00OSw2ICs0OSwzIEBACiAgICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CiAgICAgICAgICAgICAgaWYgX1BZVEhPTl9CVUlMRDoKICAgICAgICAgICAgICAgICAgIyBJZiBzcmNkaXIgaXMgYSByZWxhdGl2ZSBwYXRoICh0eXBpY2FsbHkgJy4nIG9yICcuLicpCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy91cHN0cmVhbS1yYW5kb20tZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI0MGU4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwMyArMCwwIEBACi1Gcm9tIDAzNWJhNWRhM2U1M2U0NWM3MTJiMzlmZTFmNmZiNzQzZTY5N2MwMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgU3Rpbm5lciA8dmljdG9yLnN0aW5uZXJAZ21haWwuY29tPgotRGF0ZTogTW9uLCA5IEphbiAyMDE3IDExOjE4OjUzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIElzc3VlICMyOTE1NzogUHJlZmVyIGdldHJhbmRvbSgpIG92ZXIgZ2V0ZW50cm9weSgpCi0KLUNvcHkgYW5kIHRoZW4gYWRhcHQgUHl0aG9uL3JhbmRvbS5jIGZyb20gZGVmYXVsdCBicmFuY2guIERpZmZlcmVuY2UgYmV0d2VlbiAzLjUKLWFuZCBkZWZhdWx0IGJyYW5jaGVzOgotCi0qIFB5dGhvbiAzLjUgb25seSB1c2VzIGdldHJhbmRvbSgpIGluIG5vbi1ibG9ja2luZyBtb2RlOiBmbGFncz1HUk5EX05PTkJMT0NLCi0qIElmIGdldHJhbmRvbSgpIGZhaWxzIHdpdGggRUFHQUlOOiBweV9nZXRyYW5kb20oKSBpbW1lZGlhdGVseSBmYWlscyBhbmQKLSAgcmVtZW1iZXJzIHRoYXQgZ2V0cmFuZG9tKCkgZG9lc24ndCB3b3JrLgotKiBQeXRob24gMy41IGhhcyBubyBfUHlPU19VUmFuZG9tTm9uYmxvY2soKSBmdW5jdGlvbjogX1B5T1NfVVJhbmRvbSgpCi0gIHdvcmtzIGluIG5vbi1ibG9ja2luZyBtb2RlIG9uIFB5dGhvbiAzLjUKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC8wMzViYTVkYTNlNTNlNDVjNzEyYjM5ZmUxZjZmYjc0M2U2OTdjMDMyXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KLQotLS0tCi0gUHl0aG9uL3JhbmRvbS5jIHwgNDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI5NCBpbnNlcnRpb25zKCspLCAyMDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9QeXRob24vcmFuZG9tLmMgYi9QeXRob24vcmFuZG9tLmMKLWluZGV4IGQyMDM5MzkuLjMxZjYxZDAgMTAwNjQ0Ci0tLS0gYS9QeXRob24vcmFuZG9tLmMKLSsrKyBiL1B5dGhvbi9yYW5kb20uYwotQEAgLTEsNiArMSw5IEBACi0gI2luY2x1ZGUgIlB5dGhvbi5oIgotICNpZmRlZiBNU19XSU5ET1dTCi0gIyAgaW5jbHVkZSA8d2luZG93cy5oPgotKy8qIEFsbCBzYW1wbGUgTVNETiB3aW5jcnlwdCBwcm9ncmFtcyBpbmNsdWRlIHRoZSBoZWFkZXIgYmVsb3cuIEl0IGlzIGF0IGxlYXN0Ci0rICogcmVxdWlyZWQgd2l0aCBNaW4gR1cuICovCi0rIyAgaW5jbHVkZSA8d2luY3J5cHQuaD4KLSAjZWxzZQotICMgIGluY2x1ZGUgPGZjbnRsLmg+Ci0gIyAgaWZkZWYgSEFWRV9TWVNfU1RBVF9ICi1AQCAtMzcsMTAgKzQwLDkgQEAgd2luMzJfdXJhbmRvbV9pbml0KGludCByYWlzZSkKLSAgICAgcmV0dXJuIDA7Ci0gCi0gZXJyb3I6Ci0tICAgIGlmIChyYWlzZSkKLSsgICAgaWYgKHJhaXNlKSB7Ci0gICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLS0gICAgZWxzZQotLSAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgV2luZG93cyByYW5kb20gQVBJIChDcnlwdG9HZW4pIik7Ci0rICAgIH0KLSAgICAgcmV0dXJuIC0xOwotIH0KLSAKLUBAIC01Myw4ICs1NSw5IEBAIHdpbjMyX3VyYW5kb20odW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSAKLSAgICAgaWYgKGhDcnlwdFByb3YgPT0gMCkKLSAgICAgewotLSAgICAgICAgaWYgKHdpbjMyX3VyYW5kb21faW5pdChyYWlzZSkgPT0gLTEpCi0rICAgICAgICBpZiAod2luMzJfdXJhbmRvbV9pbml0KHJhaXNlKSA9PSAtMSkgewotICAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgIH0KLSAgICAgfQotIAotICAgICB3aGlsZSAoc2l6ZSA+IDApCi1AQCAtNjMsMTEgKzY2LDkgQEAgd2luMzJfdXJhbmRvbSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotICAgICAgICAgaWYgKCFDcnlwdEdlblJhbmRvbShoQ3J5cHRQcm92LCAoRFdPUkQpY2h1bmssIGJ1ZmZlcikpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgLyogQ3J5cHRHZW5SYW5kb20oKSBmYWlsZWQgKi8KLS0gICAgICAgICAgICBpZiAocmFpc2UpCi0rICAgICAgICAgICAgaWYgKHJhaXNlKSB7Ci0gICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemVkIHRoZSByYW5kb21pemVkIGhhc2ggIgotLSAgICAgICAgICAgICAgICAgICAgICAgICJzZWNyZXQgdXNpbmcgQ3J5cHRvR2VuKSIpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICB9Ci0gICAgICAgICBidWZmZXIgKz0gY2h1bms7Ci1AQCAtNzYsNTggKzc3LDIzIEBAIHdpbjMyX3VyYW5kb20odW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIElzc3VlICMyNTAwMzogRG9uJ3QgdXNlIGdldGVudHJvcHkoKSBvbiBTb2xhcmlzIChhdmFpbGFibGUgc2luY2UKLS0gKiBTb2xhcmlzIDExLjMpLCBpdCBpcyBibG9ja2luZyB3aGVyZWFzIG9zLnVyYW5kb20oKSBzaG91bGQgbm90IGJsb2NrLiAqLwotLSNlbGlmIGRlZmluZWQoSEFWRV9HRVRFTlRST1BZKSAmJiAhZGVmaW5lZChzdW4pCi0tI2RlZmluZSBQWV9HRVRFTlRST1BZIDEKLS0KLS0vKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgZ2V0ZW50cm9weSgpLgotLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLgotLQotLSAgIElmIGZhdGFsIGlzIG5vbnplcm8sIGNhbGwgUHlfRmF0YWxFcnJvcigpIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24KLS0gICBvbiBlcnJvci4gKi8KLS1zdGF0aWMgaW50Ci0tcHlfZ2V0ZW50cm9weSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGZhdGFsKQotLXsKLS0gICAgd2hpbGUgKHNpemUgPiAwKSB7Ci0tICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5X01JTihzaXplLCAyNTYpOwotLSAgICAgICAgaW50IHJlczsKLS0KLS0gICAgICAgIGlmICghZmF0YWwpIHsKLS0gICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0tICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7Ci0tICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLS0KLS0gICAgICAgICAgICBpZiAocmVzIDwgMCkgewotLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0tICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tICAgICAgICBlbHNlIHsKLS0gICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKLS0gICAgICAgICAgICBpZiAocmVzIDwgMCkKLS0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0ZW50cm9weSgpIGZhaWxlZCIpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgYnVmZmVyICs9IGxlbjsKLS0gICAgICAgIHNpemUgLT0gbGVuOwotLSAgICB9Ci0tICAgIHJldHVybiAwOwotLX0KLS0KLS0jZWxzZQotKyNlbHNlIC8qICFNU19XSU5ET1dTICovCi0gCi0gI2lmIGRlZmluZWQoSEFWRV9HRVRSQU5ET00pIHx8IGRlZmluZWQoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCkKLSAjZGVmaW5lIFBZX0dFVFJBTkRPTSAxCi0gCi0tLyogQ2FsbCBnZXRyYW5kb20oKQotKy8qIENhbGwgZ2V0cmFuZG9tKCkgdG8gZ2V0IHJhbmRvbSBieXRlczoKLSsKLSAgICAtIFJldHVybiAxIG9uIHN1Y2Nlc3MKLS0gICAtIFJldHVybiAwIGlmIGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgbm90IGF2YWlsYWJsZSAoZmFpbGVkIHdpdGggRU5PU1lTIG9yCi0tICAgICBFUEVSTSkgb3IgaWYgZ2V0cmFuZG9tKEdSTkRfTk9OQkxPQ0spIGZhaWxlZCB3aXRoIEVBR0FJTiAoc3lzdGVtIHVyYW5kb20KLS0gICAgIG5vdCBpbml0aWFsaXplZCB5ZXQpIGFuZCByYWlzZT0wLgotKyAgIC0gUmV0dXJuIDAgaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZSAoZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNKSwKLSsgICAgIG9yIGlmIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlsZWQgd2l0aCBFQUdBSU4gKHN5c3RlbSB1cmFuZG9tIG5vdAotKyAgICAgaW5pdGlhbGl6ZWQgeWV0KS4KLSAgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3I6Ci0tICAgICBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFSU5UUiBhbmQgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZWQgYW4KLS0gICAgIGV4Y2VwdGlvbiwgb3IgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IuICovCi0rICAgICBpZiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFSU5UUiwgcmFpc2UgaXMgbm9uLXplcm8gYW5kIHRoZSBQeXRob24gc2lnbmFsCi0rICAgICBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24sIG9yIGlmIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIGEgZGlmZmVyZW50Ci0rICAgICBlcnJvci4KLSsKLSsgICBnZXRyYW5kb20oKSBpcyByZXRyaWVkIGlmIGl0IGZhaWxlZCB3aXRoIEVJTlRSOiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4gKi8KLSBzdGF0aWMgaW50Ci0gcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gewotQEAgLTE0MiwxNiArMTA4LDE5IEBAIHB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotICAgICAgKiBzZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNjgzOS4gVG8gYXZvaWQgdGhpcywgdXNlIHRoZQotICAgICAgKiBHUk5EX05PTkJMT0NLIGZsYWcuICovCi0gICAgIGNvbnN0IGludCBmbGFncyA9IEdSTkRfTk9OQkxPQ0s7Ci0rICAgIGNoYXIgKmRlc3Q7Ci0gICAgIGxvbmcgbjsKLSAKLSAgICAgaWYgKCFnZXRyYW5kb21fd29ya3MpIHsKLSAgICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gCi0rICAgIGRlc3QgPSBidWZmZXI7Ci0gICAgIHdoaWxlICgwIDwgc2l6ZSkgewotICNpZmRlZiBzdW4KLSAgICAgICAgIC8qIElzc3VlICMyNjczNTogT24gU29sYXJpcywgZ2V0cmFuZG9tKCkgaXMgbGltaXRlZCB0byByZXR1cm5pbmcgdXAKLS0gICAgICAgICAgIHRvIDEwMjQgYnl0ZXMgKi8KLSsgICAgICAgICAgIHRvIDEwMjQgYnl0ZXMuIENhbGwgaXQgbXVsdGlwbGUgdGltZXMgaWYgbW9yZSBieXRlcyBhcmUKLSsgICAgICAgICAgIHJlcXVlc3RlZC4gKi8KLSAgICAgICAgIG4gPSBQeV9NSU4oc2l6ZSwgMTAyNCk7Ci0gI2Vsc2UKLSAgICAgICAgIG4gPSBQeV9NSU4oc2l6ZSwgTE9OR19NQVgpOwotQEAgLTE2MSwzNCArMTMwLDM1IEBAIHB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotICNpZmRlZiBIQVZFX0dFVFJBTkRPTQotICAgICAgICAgaWYgKHJhaXNlKSB7Ci0gICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotLSAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oYnVmZmVyLCBuLCBmbGFncyk7Ci0rICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7Ci0gICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oYnVmZmVyLCBuLCBmbGFncyk7Ci0rICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7Ci0gICAgICAgICB9Ci0gI2Vsc2UKLSAgICAgICAgIC8qIE9uIExpbnV4LCB1c2UgdGhlIHN5c2NhbGwoKSBmdW5jdGlvbiBiZWNhdXNlIHRoZSBHTlUgbGliYyBkb2Vzbid0Ci0tICAgICAgICAgKiBleHBvc2UgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgeWV0LiBTZWU6Ci0tICAgICAgICAgKiBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xNzI1MiAqLwotKyAgICAgICAgICAgZXhwb3NlIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIHlldC4gU2VlOgotKyAgICAgICAgICAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTIgKi8KLSAgICAgICAgIGlmIChyYWlzZSkgewotICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLS0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKLSsgICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBkZXN0LCBuLCBmbGFncyk7Ci0gICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgbiwgZmxhZ3MpOwotKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKLSAgICAgICAgIH0KLSAjZW5kaWYKLSAKLSAgICAgICAgIGlmIChuIDwgMCkgewotLSAgICAgICAgICAgIC8qIEVOT1NZUzogZ2V0cmFuZG9tKCkgc3lzY2FsbCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwgKGJ1dAotLSAgICAgICAgICAgICAqIG1heWJlIHN1cHBvcnRlZCBieSB0aGUgaG9zdCB3aGljaCBidWlsdCBQeXRob24pLiBFUEVSTToKLS0gICAgICAgICAgICAgKiBnZXRyYW5kb20oKSBzeXNjYWxsIGJsb2NrZWQgYnkgU0VDQ09NUCBvciBzb21ldGhpbmcgZWxzZS4gKi8KLSsgICAgICAgICAgICAvKiBFTk9TWVM6IHRoZSBzeXNjYWxsIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbC4KLSsgICAgICAgICAgICAgICBFUEVSTTogdGhlIHN5c2NhbGwgaXMgYmxvY2tlZCBieSBhIHNlY3VyaXR5IHBvbGljeSAoZXg6IFNFQ0NPTVApCi0rICAgICAgICAgICAgICAgb3Igc29tZXRoaW5nIGVsc2UuICovCi0gICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT1NZUyB8fCBlcnJubyA9PSBFUEVSTSkgewotICAgICAgICAgICAgICAgICBnZXRyYW5kb21fd29ya3MgPSAwOwotICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICB9Ci0rCi0gICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgewotICAgICAgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICB1cmFuZG9tIGlzIG5vdCBpbml0aWFsaWF6ZWQgeWV0LiBJbiB0aGlzIGNhc2UsIGZhbGwgYmFjayBvbgotQEAgLTIwMiwxNjkgKzE3MiwyMjUgQEAgcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKLS0gICAgICAgICAgICAgICAgICAgIGlmICghcmFpc2UpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCIpOwotKyAgICAgICAgICAgICAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSAqLwotKyAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KLSAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgIGlmIChyYWlzZSkgewotICAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBmYWlsZWQiKTsKLS0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgfQotIAotLSAgICAgICAgYnVmZmVyICs9IG47Ci0rICAgICAgICBkZXN0ICs9IG47Ci0gICAgICAgICBzaXplIC09IG47Ci0gICAgIH0KLSAgICAgcmV0dXJuIDE7Ci0gfQotLSNlbmRpZgotIAotLXN0YXRpYyBzdHJ1Y3QgewotLSAgICBpbnQgZmQ7Ci0tICAgIGRldl90IHN0X2RldjsKLS0gICAgaW5vX3Qgc3RfaW5vOwotLX0gdXJhbmRvbV9jYWNoZSA9IHsgLTEgfTsKLSsjZWxpZiBkZWZpbmVkKEhBVkVfR0VURU5UUk9QWSkKLSsjZGVmaW5lIFBZX0dFVEVOVFJPUFkgMQotIAotKy8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGdlbmVyYXRlZCBieSBnZXRlbnRyb3B5KCk6Ci0gCi0tLyogUmVhZCAnc2l6ZScgcmFuZG9tIGJ5dGVzIGZyb20gcHlfZ2V0cmFuZG9tKCkuIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20KLS0gICAvZGV2L3VyYW5kb20gaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZS4KLSsgICAtIFJldHVybiAxIG9uIHN1Y2Nlc3MKLSsgICAtIFJldHVybiAwIGlmIGdldGVudHJvcHkoKSBzeXNjYWxsIGlzIG5vdCBhdmFpbGFibGUgKGZhaWxlZCB3aXRoIEVOT1NZUyBvcgotKyAgICAgRVBFUk0pLgotKyAgIC0gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMSBvbiBlcnJvcjoKLSsgICAgIGlmIGdldGVudHJvcHkoKSBmYWlsZWQgd2l0aCBFSU5UUiwgcmFpc2UgaXMgbm9uLXplcm8gYW5kIHRoZSBQeXRob24gc2lnbmFsCi0rICAgICBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24sIG9yIGlmIGdldGVudHJvcHkoKSBmYWlsZWQgd2l0aCBhIGRpZmZlcmVudAotKyAgICAgZXJyb3IuCi0gCi0tICAgQ2FsbCBQeV9GYXRhbEVycm9yKCkgb24gZXJyb3IuICovCi0tc3RhdGljIHZvaWQKLS1kZXZfdXJhbmRvbV9ub3JhaXNlKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQotKyAgIGdldGVudHJvcHkoKSBpcyByZXRyaWVkIGlmIGl0IGZhaWxlZCB3aXRoIEVJTlRSOiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4gKi8KLStzdGF0aWMgaW50Ci0rcHlfZ2V0ZW50cm9weShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotIHsKLS0gICAgaW50IGZkOwotLSAgICBQeV9zc2l6ZV90IG47Ci0rICAgIC8qIElzIGdldGVudHJvcHkoKSBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsPyBTZXQgdG8gMCBpZgotKyAgICAgICBnZXRlbnRyb3B5KCkgZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNLiAqLwotKyAgICBzdGF0aWMgaW50IGdldGVudHJvcHlfd29ya3MgPSAxOwotIAotLSAgICBhc3NlcnQgKDAgPCBzaXplKTsKLS0KLS0jaWZkZWYgUFlfR0VUUkFORE9NCi0tICAgIGlmIChweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAwKSA9PSAxKSB7Ci0tICAgICAgICByZXR1cm47Ci0rICAgIGlmICghZ2V0ZW50cm9weV93b3JrcykgewotKyAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLS0gICAgLyogZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNLAotLSAgICAgICBmYWxsIGJhY2sgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KLS0jZW5kaWYKLSAKLS0gICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0tICAgIGlmIChmZCA8IDApIHsKLS0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBvcGVuIC9kZXYvdXJhbmRvbSIpOwotLSAgICB9Ci0rICAgIHdoaWxlIChzaXplID4gMCkgewotKyAgICAgICAgLyogZ2V0ZW50cm9weSgpIGlzIGxpbWl0ZWQgdG8gcmV0dXJuaW5nIHVwIHRvIDI1NiBieXRlcy4gQ2FsbCBpdAotKyAgICAgICAgICAgbXVsdGlwbGUgdGltZXMgaWYgbW9yZSBieXRlcyBhcmUgcmVxdWVzdGVkLiAqLwotKyAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9NSU4oc2l6ZSwgMjU2KTsKLSsgICAgICAgIGludCByZXM7Ci0gCi0tICAgIHdoaWxlICgwIDwgc2l6ZSkKLS0gICAgewotLSAgICAgICAgZG8gewotLSAgICAgICAgICAgIG4gPSByZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0tICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7Ci0rICAgICAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0rICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7Ci0rICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSsgICAgICAgIH0KLSsgICAgICAgIGVsc2UgewotKyAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOwotKyAgICAgICAgfQotIAotLSAgICAgICAgaWYgKG4gPD0gMCkgewotLSAgICAgICAgICAgIC8qIHJlYWQoKSBmYWlsZWQgb3IgcmV0dXJuZWQgMCBieXRlcyAqLwotLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZWFkIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIik7Ci0tICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBpZiAocmVzIDwgMCkgewotKyAgICAgICAgICAgIC8qIEVOT1NZUzogdGhlIHN5c2NhbGwgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWwuCi0rICAgICAgICAgICAgICAgRVBFUk06IHRoZSBzeXNjYWxsIGlzIGJsb2NrZWQgYnkgYSBzZWN1cml0eSBwb2xpY3kgKGV4OiBTRUNDT01QKQotKyAgICAgICAgICAgICAgIG9yIHNvbWV0aGluZyBlbHNlLiAqLwotKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9TWVMgfHwgZXJybm8gPT0gRVBFUk0pIHsKLSsgICAgICAgICAgICAgICAgZ2V0ZW50cm9weV93b3JrcyA9IDA7Ci0rICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKLSsgICAgICAgICAgICAgICAgaWYgKHJhaXNlKSB7Ci0rICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0ZW50cm9weSgpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLwotKyAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgaWYgKHJhaXNlKSB7Ci0rICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgfQotLSAgICAgICAgYnVmZmVyICs9IG47Ci0tICAgICAgICBzaXplIC09IG47Ci0rCi0rICAgICAgICBidWZmZXIgKz0gbGVuOwotKyAgICAgICAgc2l6ZSAtPSBsZW47Ci0gICAgIH0KLS0gICAgY2xvc2UoZmQpOwotKyAgICByZXR1cm4gMTsKLSB9Ci0rI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRFTlRST1BZKSAmJiAhZGVmaW5lZChzdW4pICovCi0gCi0tLyogUmVhZCAnc2l6ZScgcmFuZG9tIGJ5dGVzIGZyb20gcHlfZ2V0cmFuZG9tKCkuIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20KLS0gICAvZGV2L3VyYW5kb20gaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZS4KLSAKLS0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KLStzdGF0aWMgc3RydWN0IHsKLSsgICAgaW50IGZkOwotKyAgICBkZXZfdCBzdF9kZXY7Ci0rICAgIGlub190IHN0X2lubzsKLSt9IHVyYW5kb21fY2FjaGUgPSB7IC0xIH07Ci0rCi0rLyogUmVhZCByYW5kb20gYnl0ZXMgZnJvbSB0aGUgL2Rldi91cmFuZG9tIGRldmljZToKLSsKLSsgICAtIFJldHVybiAwIG9uIHN1Y2Nlc3MKLSsgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3IKLSsKLSsgICBQb3NzaWJsZSBjYXVzZXMgb2YgZXJyb3JzOgotKwotKyAgIC0gb3BlbigpIGZhaWxlZCB3aXRoIEVOT0VOVCwgRU5YSU8sIEVOT0RFViwgRUFDQ0VTOiB0aGUgL2Rldi91cmFuZG9tIGRldmljZQotKyAgICAgd2FzIG5vdCBmb3VuZC4gRm9yIGV4YW1wbGUsIGl0IHdhcyByZW1vdmVkIG1hbnVhbGx5IG9yIG5vdCBleHBvc2VkIGluIGEKLSsgICAgIGNocm9vdCBvciBjb250YWluZXIuCi0rICAgLSBvcGVuKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IKLSsgICAtIGZzdGF0KCkgZmFpbGVkCi0rICAgLSByZWFkKCkgZmFpbGVkIG9yIHJldHVybmVkIDAKLSsKLSsgICByZWFkKCkgaXMgcmV0cmllZCBpZiBpdCBmYWlsZWQgd2l0aCBFSU5UUjogaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCi0rCi0rICAgVGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZGV2aWNlIGlzIGtlcHQgb3BlbiBiZXR3ZWVuIGNhbGxzIHRvIGF2b2lkIHVzaW5nCi0rICAgbWFueSBmaWxlIGRlc2NyaXB0b3JzIHdoZW4gcnVuIGluIHBhcmFsbGVsIGZyb20gbXVsdGlwbGUgdGhyZWFkczoKLSsgICBzZWUgdGhlIGlzc3VlICMxODc1Ni4KLSsKLSsgICBzdF9kZXYgYW5kIHN0X2lubyBmaWVsZHMgb2YgdGhlIGZpbGUgZGVzY3JpcHRvciAoZnJvbSBmc3RhdCgpKSBhcmUgY2FjaGVkIHRvCi0rICAgY2hlY2sgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciB3YXMgcmVwbGFjZWQgYnkgYSBkaWZmZXJlbnQgZmlsZSAod2hpY2ggaXMKLSsgICBsaWtlbHkgYSBidWcgaW4gdGhlIGFwcGxpY2F0aW9uKTogc2VlIHRoZSBpc3N1ZSAjMjEyMDcuCi0rCi0rICAgSWYgdGhlIGZpbGUgZGVzY3JpcHRvciB3YXMgY2xvc2VkIG9yIHJlcGxhY2VkLCBvcGVuIGEgbmV3IGZpbGUgZGVzY3JpcHRvcgotKyAgIGJ1dCBkb24ndCBjbG9zZSB0aGUgb2xkIGZpbGUgZGVzY3JpcHRvcjogaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZwotKyAgIGltcG9ydGFudCBmb3Igc29tZSB0aGlyZC1wYXJ0eSBjb2RlLiAqLwotIHN0YXRpYyBpbnQKLS1kZXZfdXJhbmRvbV9weXRob24oY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCi0rZGV2X3VyYW5kb20oY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSB7Ci0gICAgIGludCBmZDsKLSAgICAgUHlfc3NpemVfdCBuOwotLSAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OwotLSNpZmRlZiBQWV9HRVRSQU5ET00KLS0gICAgaW50IHJlczsKLS0jZW5kaWYKLS0KLS0gICAgaWYgKHNpemUgPD0gMCkKLS0gICAgICAgIHJldHVybiAwOwotIAotLSNpZmRlZiBQWV9HRVRSQU5ET00KLS0gICAgcmVzID0gcHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMSk7Ci0tICAgIGlmIChyZXMgPCAwKSB7Ci0tICAgICAgICByZXR1cm4gLTE7Ci0tICAgIH0KLS0gICAgaWYgKHJlcyA9PSAxKSB7Ci0tICAgICAgICByZXR1cm4gMDsKLS0gICAgfQotLSAgICAvKiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0sCi0tICAgICAgIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLwotLSNlbmRpZgotKyAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7Ci0gCi0tICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKLS0gICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KLS0gICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZSh1cmFuZG9tX2NhY2hlLmZkLCAmc3QpCi0tICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2Ci0tICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7Ci0tICAgICAgICAgICAgLyogU29tZXRoaW5nIGNoYW5nZWQ6IGZvcmdldCB0aGUgY2FjaGVkIGZkIChidXQgZG9uJ3QgY2xvc2UgaXQsCi0tICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKLS0gICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBjb2RlKS4gKi8KLS0gICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gLTE7Ci0tICAgICAgICB9Ci0tICAgIH0KLS0gICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkKLS0gICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKLS0gICAgZWxzZSB7Ci0tICAgICAgICBmZCA9IF9QeV9vcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0tICAgICAgICBpZiAoZmQgPCAwKSB7Ci0tICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAotLSAgICAgICAgICAgICAgICBlcnJubyA9PSBFTk9ERVYgfHwgZXJybm8gPT0gRUFDQ0VTKQotLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOwotLSAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KLS0gICAgICAgICAgICByZXR1cm4gLTE7Ci0tICAgICAgICB9Ci0gICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7Ci0tICAgICAgICAgICAgLyogdXJhbmRvbV9mZCB3YXMgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciB0aHJlYWQgd2hpbGUgd2Ugd2VyZQotLSAgICAgICAgICAgICAgIG5vdCBob2xkaW5nIHRoZSBHSUwsIGtlZXAgaXQuICovCi0tICAgICAgICAgICAgY2xvc2UoZmQpOwotLSAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKLSsgICAgICAgICAgICAvKiBEb2VzIHRoZSBmZCBwb2ludCB0byB0aGUgc2FtZSB0aGluZyBhcyBiZWZvcmU/IChpc3N1ZSAjMjEyMDcpICovCi0rICAgICAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHVyYW5kb21fY2FjaGUuZmQsICZzdCkKLSsgICAgICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2Ci0rICAgICAgICAgICAgICAgIHx8IHN0LnN0X2lubyAhPSB1cmFuZG9tX2NhY2hlLnN0X2lubykgewotKyAgICAgICAgICAgICAgICAvKiBTb21ldGhpbmcgY2hhbmdlZDogZm9yZ2V0IHRoZSBjYWNoZWQgZmQgKGJ1dCBkb24ndCBjbG9zZSBpdCwKLSsgICAgICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKLSsgICAgICAgICAgICAgICAgICAgdGhpcmQtcGFydHkgY29kZSkuICovCi0rICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSAtMTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0rICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKQotKyAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKLSAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdCkpIHsKLS0gICAgICAgICAgICAgICAgY2xvc2UoZmQpOwotKyAgICAgICAgICAgIGZkID0gX1B5X29wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKLSsgICAgICAgICAgICBpZiAoZmQgPCAwKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9FTlQgfHwgZXJybm8gPT0gRU5YSU8gfHwKLSsgICAgICAgICAgICAgICAgICAgIGVycm5vID09IEVOT0RFViB8fCBlcnJubyA9PSBFQUNDRVMpIHsKLSsgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KLSAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7Ci0rICAgICAgICAgICAgICAgIC8qIHVyYW5kb21fZmQgd2FzIGluaXRpYWxpemVkIGJ5IGFub3RoZXIgdGhyZWFkIHdoaWxlIHdlIHdlcmUKLSsgICAgICAgICAgICAgICAgICAgbm90IGhvbGRpbmcgdGhlIEdJTCwga2VlcCBpdC4gKi8KLSsgICAgICAgICAgICAgICAgY2xvc2UoZmQpOwotKyAgICAgICAgICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gZmQ7Ci0tICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfZGV2ID0gc3Quc3RfZGV2OwotLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKLSsgICAgICAgICAgICAgICAgaWYgKF9QeV9mc3RhdChmZCwgJnN0KSkgewotKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmQpOwotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IGZkOwotKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5zdF9kZXYgPSBzdC5zdF9kZXY7Ci0rICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLS0gICAgfQotIAotLSAgICBkbyB7Ci0tICAgICAgICBuID0gX1B5X3JlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKLS0gICAgICAgIGlmIChuID09IC0xKSB7Ci0tICAgICAgICAgICAgcmV0dXJuIC0xOwotLSAgICAgICAgfQotLSAgICAgICAgaWYgKG4gPT0gMCkgewotLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCi0tICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlYWQgJXppIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIiwKLS0gICAgICAgICAgICAgICAgICAgIHNpemUpOwotKyAgICAgICAgZG8gewotKyAgICAgICAgICAgIG4gPSBfUHlfcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotKyAgICAgICAgICAgIGlmIChuID09IC0xKQotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgaWYgKG4gPT0gMCkgewotKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVhZCAlemkgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iLAotKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemUpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGJ1ZmZlciArPSBuOwotKyAgICAgICAgICAgIHNpemUgLT0gbjsKLSsgICAgICAgIH0gd2hpbGUgKDAgPCBzaXplKTsKLSsgICAgfQotKyAgICBlbHNlIHsKLSsgICAgICAgIGZkID0gX1B5X29wZW5fbm9yYWlzZSgiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOwotKyAgICAgICAgaWYgKGZkIDwgMCkgewotICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIGJ1ZmZlciArPSBuOwotLSAgICAgICAgc2l6ZSAtPSBuOwotLSAgICB9IHdoaWxlICgwIDwgc2l6ZSk7Ci0rICAgICAgICB3aGlsZSAoMCA8IHNpemUpCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgZG8gewotKyAgICAgICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotKyAgICAgICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKLSAKLSsgICAgICAgICAgICBpZiAobiA8PSAwKSB7Ci0rICAgICAgICAgICAgICAgIC8qIHN0b3Agb24gZXJyb3Igb3IgaWYgcmVhZChzaXplKSByZXR1cm5lZCAwICovCi0rICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBidWZmZXIgKz0gbjsKLSsgICAgICAgICAgICBzaXplIC09IG47Ci0rICAgICAgICB9Ci0rICAgICAgICBjbG9zZShmZCk7Ci0rICAgIH0KLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTM3Niw4ICs0MDIsOCBAQCBkZXZfdXJhbmRvbV9jbG9zZSh2b2lkKQotICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IC0xOwotICAgICB9Ci0gfQotKyNlbmRpZiAvKiAhTVNfV0lORE9XUyAqLwotIAotLSNlbmRpZgotIAotIC8qIEZpbGwgYnVmZmVyIHdpdGggcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgYSBsaW5lYXIgY29uZ3J1ZW50Ci0gICAgZ2VuZXJhdG9yIChMQ0cpOgotQEAgLTQwMCwzMSArNDI2LDEwMCBAQCBsY2dfdXJhbmRvbSh1bnNpZ25lZCBpbnQgeDAsIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCi0gICAgIH0KLSB9Ci0gCi0tLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbSByYW5kb20KLS0gICBudW1iZXIgZ2VuZXJhdG9yIChSTkcpLiBJdCBpcyBzdWl0YWJsZSBmb3IgbW9zdCBjcnlwdG9ncmFwaGljIHB1cnBvc2VzCi0tICAgZXhjZXB0IGxvbmcgbGl2aW5nIHByaXZhdGUga2V5cyBmb3IgYXN5bW1ldHJpYyBlbmNyeXB0aW9uLgotKy8qIFJlYWQgcmFuZG9tIGJ5dGVzOgotIAotLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLwotLWludAotLV9QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCi0rICAgLSBSZXR1cm4gMCBvbiBzdWNjZXNzCi0rICAgLSBSYWlzZSBhbiBleGNlcHRpb24gKGlmIHJhaXNlIGlzIG5vbi16ZXJvKSBhbmQgcmV0dXJuIC0xIG9uIGVycm9yCi0rCi0rICAgVXNlZCBzb3VyY2VzIG9mIGVudHJvcHkgb3JkZXJlZCBieSBwcmVmZXJlbmNlLCBwcmVmZXJyZWQgc291cmNlIGZpcnN0OgotKwotKyAgIC0gQ3J5cHRHZW5SYW5kb20oKSBvbiBXaW5kb3dzCi0rICAgLSBnZXRyYW5kb20oKSBmdW5jdGlvbiAoZXg6IExpbnV4IGFuZCBTb2xhcmlzKTogY2FsbCBweV9nZXRyYW5kb20oKQotKyAgIC0gZ2V0ZW50cm9weSgpIGZ1bmN0aW9uIChleDogT3BlbkJTRCk6IGNhbGwgcHlfZ2V0ZW50cm9weSgpCi0rICAgLSAvZGV2L3VyYW5kb20gZGV2aWNlCi0rCi0rICAgUmVhZCBmcm9tIHRoZSAvZGV2L3VyYW5kb20gZGV2aWNlIGlmIGdldHJhbmRvbSgpIG9yIGdldGVudHJvcHkoKSBmdW5jdGlvbgotKyAgIGlzIG5vdCBhdmFpbGFibGUgb3IgZG9lcyBub3Qgd29yay4KLSsKLSsgICBQcmVmZXIgZ2V0cmFuZG9tKCkgb3ZlciBnZXRlbnRyb3B5KCkgYmVjYXVzZSBnZXRyYW5kb20oKSBzdXBwb3J0cyBibG9ja2luZwotKyAgIGFuZCBub24tYmxvY2tpbmcgbW9kZSBhbmQgUHl0aG9uIHJlcXVpcmVzIG5vbi1ibG9ja2luZyBSTkcgYXQgc3RhcnR1cCB0bwotKyAgIGluaXRpYWxpemUgaXRzIGhhc2ggc2VjcmV0OiBzZWUgdGhlIFBFUCA1MjQuCi0rCi0rICAgUHJlZmVyIGdldHJhbmRvbSgpIGFuZCBnZXRlbnRyb3B5KCkgb3ZlciByZWFkaW5nIGRpcmVjdGx5IC9kZXYvdXJhbmRvbQotKyAgIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIGRvbid0IG5lZWQgZmlsZSBkZXNjcmlwdG9ycyBhbmQgc28gYXZvaWQgRU5GSUxFIG9yCi0rICAgRU1GSUxFIGVycm9ycyAodG9vIG1hbnkgb3BlbiBmaWxlcyk6IHNlZSB0aGUgaXNzdWUgIzE4NzU2LgotKwotKyAgIE9ubHkgdXNlIFJORyBydW5uaW5nIGluIHRoZSBrZXJuZWwuIFRoZXkgYXJlIG1vcmUgc2VjdXJlIGJlY2F1c2UgaXQgaXMKLSsgICBoYXJkZXIgdG8gZ2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiBhIFJORyBydW5uaW5nIGluIHRoZSBrZXJuZWwgbGFuZCB0aGFuIGEKLSsgICBSTkcgcnVubmluZyBpbiB0aGUgdXNlciBsYW5kLiBUaGUga2VybmVsIGhhcyBhIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlCi0rICAgYW5kIGhhcyBhY2Nlc3MgdG8gaGFyZHdhcmUgUk5HLCB0aGV5IGFyZSB1c2VkIGFzIGVudHJvcHkgc291cmNlcy4KLSsKLSsgICBOb3RlOiB0aGUgT3BlblNTTCBSQU5EX3BzZXVkb19ieXRlcygpIGZ1bmN0aW9uIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgcmVzZWVkCi0rICAgaXRzIFJORyBvbiBmb3JrKCksIHR3byBjaGlsZCBwcm9jZXNzZXMgKHdpdGggdGhlIHNhbWUgcGlkKSBnZW5lcmF0ZSB0aGUgc2FtZQotKyAgIHJhbmRvbSBudW1iZXJzOiBzZWUgaXNzdWUgIzE4NzQ3LiBLZXJuZWwgUk5HcyBkb24ndCBoYXZlIHRoaXMgaXNzdWUsCi0rICAgdGhleSBoYXZlIGFjY2VzcyB0byBnb29kIHF1YWxpdHkgZW50cm9weSBzb3VyY2VzLgotKwotKyAgIElmIHJhaXNlIGlzIHplcm86Ci0rCi0rICAgLSBEb24ndCByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IKLSsgICAtIERvbid0IGNhbGwgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciAoZG9uJ3QgY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSkgaWYKLSsgICAgIGEgZnVuY3Rpb24gZmFpbHMgd2l0aCBFSU5UUjogcmV0cnkgZGlyZWN0bHkgdGhlIGludGVycnVwdGVkIGZ1bmN0aW9uCi0rICAgLSBEb24ndCByZWxlYXNlIHRoZSBHSUwgdG8gY2FsbCBmdW5jdGlvbnMuCi0rKi8KLStzdGF0aWMgaW50Ci0rcHl1cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gewotKyNpZiBkZWZpbmVkKFBZX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotKyAgICBpbnQgcmVzOwotKyNlbmRpZgotKwotICAgICBpZiAoc2l6ZSA8IDApIHsKLS0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotLSAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOwotKyAgICAgICAgaWYgKHJhaXNlKSB7Ci0rICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOwotKyAgICAgICAgfQotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0tICAgIGlmIChzaXplID09IDApCi0rCi0rICAgIGlmIChzaXplID09IDApIHsKLSAgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0gCi0gI2lmZGVmIE1TX1dJTkRPV1MKLS0gICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIDEpOwotLSNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKLS0gICAgcmV0dXJuIHB5X2dldGVudHJvcHkoYnVmZmVyLCBzaXplLCAwKTsKLSsgICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIHJhaXNlKTsKLSsjZWxzZQotKwotKyNpZiBkZWZpbmVkKFBZX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotKyNpZmRlZiBQWV9HRVRSQU5ET00KLSsgICAgcmVzID0gcHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgcmFpc2UpOwotICNlbHNlCi0tICAgIHJldHVybiBkZXZfdXJhbmRvbV9weXRob24oKGNoYXIqKWJ1ZmZlciwgc2l6ZSk7Ci0rICAgIHJlcyA9IHB5X2dldGVudHJvcHkoYnVmZmVyLCBzaXplLCByYWlzZSk7Ci0rI2VuZGlmCi0rICAgIGlmIChyZXMgPCAwKSB7Ci0rICAgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsgICAgaWYgKHJlcyA9PSAxKSB7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgICAvKiBnZXRyYW5kb20oKSBvciBnZXRlbnRyb3B5KCkgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZTogZmFpbGVkIHdpdGgKLSsgICAgICAgRU5PU1lTLCBFUEVSTSBvciBFQUdBSU4uIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20gL2Rldi91cmFuZG9tLiAqLwotKyNlbmRpZgotKwotKyAgICByZXR1cm4gZGV2X3VyYW5kb20oYnVmZmVyLCBzaXplLCByYWlzZSk7Ci0gI2VuZGlmCi0gfQotIAotKy8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0gcmFuZG9tCi0rICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgc3VpdGFibGUgZm9yIG1vc3QgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlcwotKyAgIGV4Y2VwdCBsb25nIGxpdmluZyBwcml2YXRlIGtleXMgZm9yIGFzeW1tZXRyaWMgZW5jcnlwdGlvbi4KLSsKLSsgICBSZXR1cm4gMCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KLStpbnQKLStfUHlPU19VUmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQotK3sKLSsgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDEpOwotK30KLSsKLSB2b2lkCi0gX1B5UmFuZG9tX0luaXQodm9pZCkKLSB7Ci1AQCAtNDYzLDEzICs1NTgsMTQgQEAgX1B5UmFuZG9tX0luaXQodm9pZCkKLSAgICAgICAgIH0KLSAgICAgfQotICAgICBlbHNlIHsKLS0jaWZkZWYgTVNfV0lORE9XUwotLSAgICAgICAgKHZvaWQpd2luMzJfdXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwKTsKLS0jZWxpZiBkZWZpbmVkKFBZX0dFVEVOVFJPUFkpCi0tICAgICAgICAodm9pZClweV9nZXRlbnRyb3B5KHNlY3JldCwgc2VjcmV0X3NpemUsIDEpOwotLSNlbHNlCi0tICAgICAgICBkZXZfdXJhbmRvbV9ub3JhaXNlKHNlY3JldCwgc2VjcmV0X3NpemUpOwotLSNlbmRpZgotKyAgICAgICAgaW50IHJlczsKLSsKLSsgICAgICAgIC8qIF9QeVJhbmRvbV9Jbml0KCkgaXMgY2FsbGVkIHZlcnkgZWFybHkgaW4gdGhlIFB5dGhvbiBpbml0aWFsaXphdGlvbgotKyAgICAgICAgICAgYW5kIHNvIGV4Y2VwdGlvbnMgY2Fubm90IGJlIHVzZWQgKHVzZSByYWlzZT0wKS4gKi8KLSsgICAgICAgIHJlcyA9IHB5dXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwKTsKLSsgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0rICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZmFpbGVkIHRvIGdldCByYW5kb20gbnVtYmVycyB0byBpbml0aWFsaXplIFB5dGhvbiIpOwotKyAgICAgICAgfQotICAgICB9Ci0gfQotIAotQEAgLTQ4MSw4ICs1NzcsNiBAQCBfUHlSYW5kb21fRmluaSh2b2lkKQotICAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ3J5cHRQcm92LCAwKTsKLSAgICAgICAgIGhDcnlwdFByb3YgPSAwOwotICAgICB9Ci0tI2VsaWYgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotLSAgICAvKiBub3RoaW5nIHRvIGNsZWFuICovCi0gI2Vsc2UKLSAgICAgZGV2X3VyYW5kb21fY2xvc2UoKTsKLSAjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2RmMTJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMjcgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCi0KLURFUEVORFMgPSAicHl0aG9uMy1uYXRpdmUgbGliZmZpIGJ6aXAyIGRiIGdkYm0gb3BlbnNzbCByZWFkbGluZSBzcWxpdGUzIHpsaWIgdmlydHVhbC9saWJpbnRsIHh6IgotUFIgPSAiJHtJTkNfUFJ9LjAiCi1QWVRIT05fTUFKTUlOID0gIjMuNSIKLVBZVEhPTl9CSU5BQkk9ICIke1BZVEhPTl9NQUpNSU59bSIKLURJU1RST19TUkNfVVJJID89ICJmaWxlOi8vc2l0ZWN1c3RvbWl6ZS5weSIKLURJU1RST19TUkNfVVJJX2xpbnV4c3RkYmFzZSA9ICIiCi1TUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAotZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAotZmlsZTovLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKLWZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKLWZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAotZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAotZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCi1maWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAotZmlsZTovLzAwMDEtaDJweS1GaXgtaXNzdWUtMTMwMzItd2hlcmUtaXQtZmFpbHMtd2l0aC1Vbmljb2RlRGVjby5wYXRjaCBcCi1maWxlOi8vdHdlYWstTVVMVElBUkNILWZvci1wb3dlcnBjLWxpbnV4LWdudXNwZS5wYXRjaCBcCi1maWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoIFwKLSR7RElTVFJPX1NSQ19VUkl9IFwKLSIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWQtbmN1cnNlc3ctaW5jbHVkZS1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtc2V0dXAucHktbm8taG9zdC1oZWFkZXJzLWxpYnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Jc3N1ZS0yMTI3Mi1Vc2UtX3N5c2NvbmZpZ2RhdGEucHktdG8taW5pdGlhbGl6ZS1kaXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9GaXgtMjk1MTktd2Vha3JlZi1zcGV3aW5nLWV4Y2VwdGlvbnMtZHVyaW5nLWludGVycC1mLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjU3ZDFmOGJmYmFiZjRmMjUwMDI3M2ZiMDcwNmU2ZjIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlZmUyYWQ2NTc1ODU1NDIzYWI2MzBmNWI1MWE4ZWY2ZTU1NTZmNzc0NTg0YzA2YmVhYjQ5MjZmOTMwZGRiYjAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2ODBlZDk5YWE2MGQzNTBjNjVhNjU5MTQ0OTQyMDdlIgotCi0jIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlciBweXRob24zbmF0aXZlIHBrZ2NvbmZpZwotCi1DT05GSUdVUkVPUFRTICs9ICIgLS13aXRoLXN5c3RlbS1mZmkgIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9oYXZlX2NoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbGNoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8gXAotIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1TREtfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1FWFRSQV9PRU1BS0UgKz0gIkNST1NTX0NPTVBJTEU9eWVzIgotRVhUUkFfT0VDT05GICs9ICJDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIC0td2l0aG91dC1lbnN1cmVwaXAiCi0KLWV4cG9ydCBDUk9TU19DT01QSUxFID0gIiR7VEFSR0VUX1BSRUZJWH0iCi1leHBvcnQgX1BZVEhPTl9QUk9KRUNUX0JBU0UgPSAiJHtCfSIKLWV4cG9ydCBfUFlUSE9OX1BST0pFQ1RfU1JDID0gIiR7U30iCi1leHBvcnQgQ0NTSEFSRUQgPSAiLWZQSUMiCi0KLSMgRml4IGNyb3NzIGNvbXBpbGF0aW9uIG9mIGRpZmZlcmVudCBtb2R1bGVzCi1leHBvcnQgQ1JPU1NQWVRIT05QQVRIID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLzoke0J9L2J1aWxkL2xpYi5saW51eC0ke1RBUkdFVF9BUkNIfS0ke1BZVEhPTl9NQUpNSU59OiR7U30vTGliOiR7U30vTGliL3BsYXQtbGludXgiCi0KLSMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKLVBZVEhPTkxTQk9QVFMgPSAiIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXJtIC1mICR7U30vTWFrZWZpbGUub3JpZwotCWF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQotfQotCi1kb19jb21waWxlKCkgewotICAgICAgICAjIHJlZ2VuZXJhdGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMsIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gc3lzdGVtIGhlYWRlcnMKLSAgICAgICAgY2QgJHtTfS9MaWIvcGxhdC1saW51eCoKLSAgICAgICAgaW5jbHVkZT0ke1NUQUdJTkdfSU5DRElSfSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0gICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAotICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQotICAgICAgICBjZCAtCi0KLQotCSMgcmVtb3ZlIGFueSBib2d1cyBMRF9MSUJSQVJZX1BBVEgKLQlzZWQgLWkgLWUgcyxSVU5TSEFSRUQ9LiosUlVOU0hBUkVEPSwgTWFrZWZpbGUKLQotCWlmIFsgISAtZiBNYWtlZmlsZS5vcmlnIF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLm9yaWcKLQlmaQotCXNlZCAtaSAtZSAncyxeQ09ORklHVVJFX0xERkxBR1M9LiosQ09ORklHVVJFX0xERkxBR1M9LUwuIC1MJHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJkaXI9JHtsaWJkaXJ9LGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSxsaWJleGVjZGlyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmV4ZWNkaXJ9LGcnIFwKLQkJLWUgJ3MsXkxJQkRJUj0uKixMSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0saW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5JTkNMVURFRElSPS4qLElOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeQ09ORklOQ0xVREVESVI9LiosQ09ORklOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQlNYWtlZmlsZQotCSMgc2F2ZSBjb3B5IG9mIGl0IG5vdywgYmVjYXVzZSBpZiB3ZSBkbyBpdCBpbiBkb19pbnN0YWxsIGFuZCAKLQkjIHRoZW4gY2FsbCBkb19pbnN0YWxsIHR3aWNlIHdlIGdldCBNYWtlZmlsZS5vcmlnID09IE1ha2VmaWxlLnN5c3Jvb3QKLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUuc3lzcm9vdAotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCU9QVD0iJHtDRkxBR1N9IiBsaWJweXRob24zLnNvCi0KLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJT1BUPSIke0NGTEFHU30iCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JIyBtYWtlIGluc3RhbGwgbmVlZHMgdGhlIG9yaWdpbmFsIE1ha2VmaWxlLCBvciBvdGhlcndpc2UgdGhlIGluY2x1ZXMgd291bGQKLQkjIGdvIHRvICR7RH0ke1NUQUdJTkcuLi59Ly4uLgotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5vcmlnIE1ha2VmaWxlCi0KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnCi0KLQkjIHJlcnVuIHRoZSBidWlsZCBvbmNlIGFnYWluIHdpdGggb3JpZ2luYWwgbWFrZWZpbGUgdGhpcyB0aW1lCi0JIyBydW4gaW5zdGFsbCBpbiBhIHNlcGFyYXRlIHN0ZXAgdG8gYXZvaWQgY29tcGlsZS9pbnN0YWxsIHJhY2UKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KLQkKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0gaW5zdGFsbAotCi0JIyBhdm9pZCBjb25mbGljdCB3aXRoIDJ0bzMgZnJvbSBQeXRob24gMgotCXJtIC1mICR7RH0vJHtiaW5kaXJ9LzJ0bzMKLQotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKLQotCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59Ci0JZmkKLQotCW9lX211bHRpbGliX2hlYWRlciBweXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gVEVSTUlORk9fRElSUz0nJHtzeXNjb25mZGlyfS90ZXJtaW5mbzovZXRjL3Rlcm1pbmZvOi91c3Ivc2hhcmUvdGVybWluZm86L3Vzci9zaGFyZS9taXNjL3Rlcm1pbmZvOi9saWIvdGVybWluZm8nCi19Ci0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJNYWtlZmlsZSIKLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicHlfcGFja2FnZV9wcmVwcm9jZXNzIgotCi1weV9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgewotCSMgY29weSBiYWNrIHRoZSBvbGQgTWFrZWZpbGUgdG8gZml4IHRhcmdldCBwYWNrYWdlCi0JaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKLQkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZSBwYXRocyBpbiB0YXJnZXQgTWFrZWZpbGUgYW5kIF9zeXNjb25maWdkYXRhCi0Jc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Ci19Ci0KLXJlcXVpcmUgcHl0aG9uLSR7UFlUSE9OX01BSk1JTn0tbWFuaWZlc3QuaW5jCi0KLSMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCi1SUFJPVklERVNfJHtQTn0tbW9kdWxlcyA9ICIke1BOfSIKLVJSRUNPTU1FTkRTXyR7UE59LWNvcmUgPSAiJHtQTn0tcmVhZGxpbmUiCi1SUkVDT01NRU5EU18ke1BOfS1jcnlwdCA9ICJvcGVuc3NsIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfY2xhc3MtbmF0aXZlc2RrID0gIm5hdGl2ZXNkay1vcGVuc3NsIgotCi1GSUxFU18ke1BOfS0ydG8zICs9ICIke2JpbmRpcn0vMnRvMy0ke1BZVEhPTl9NQUpNSU59IgotRklMRVNfJHtQTn0tcHlkb2MgKz0gIiR7YmluZGlyfS9weWRvYyR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5ZG9jMyIKLUZJTEVTXyR7UE59LWlkbGUgKz0gIiR7YmluZGlyfS9pZGxlMyAke2JpbmRpcn0vaWRsZSR7UFlUSE9OX01BSk1JTn0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS1weXZlbnYiCi1GSUxFU18ke1BOfS1weXZlbnYgKz0gIiR7YmluZGlyfS9weXZlbnYtJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHl2ZW52IgotCi0jIHBhY2thZ2UgbGlicHl0aG9uMwotUEFDS0FHRVMgPSsgImxpYnB5dGhvbjMgbGlicHl0aG9uMy1zdGF0aWNkZXYiCi1GSUxFU19saWJweXRob24zID0gIiR7bGliZGlyfS9saWJweXRob24qLnNvLioiCi1GSUxFU19saWJweXRob24zLXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX0JJTkFCSX0vbGlicHl0aG9uJHtQWVRIT05fQklOQUJJfS5hIgotSU5TQU5FX1NLSVBfJHtQTn0tZGV2ICs9ICJkZXYtZWxmIgotCi0jIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCi1QQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKLVJERVBFTkRTXyR7UE59LW1pc2MgKz0gIiR7UE59LWNvcmUgJHtQTn0tZW1haWwgJHtQTn0tY29kZWNzICR7UE59LXRleHR1dGlscyAke1BOfS1hcmdwYXJzZSIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgotCi0jIGNhdGNoIG1hbnBhZ2UKLVBBQ0tBR0VTICs9ICIke1BOfS1tYW4iCi1GSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg5M2I4NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjUuYmIKQEAgLTAsMCArMSwzMjMgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworCitERVBFTkRTID0gInB5dGhvbjMtbmF0aXZlIGxpYmZmaSBiemlwMiBnZGJtIG9wZW5zc2wgc3FsaXRlMyB6bGliIHZpcnR1YWwvbGliaW50bCB4eiIKKworUFIgPSAiJHtJTkNfUFJ9LjAiCitQWVRIT05fTUFKTUlOID0gIjMuNSIKK1BZVEhPTl9CSU5BQkk9ICIke1BZVEhPTl9NQUpNSU59bSIKK0RJU1RST19TUkNfVVJJID89ICJmaWxlOi8vc2l0ZWN1c3RvbWl6ZS5weSIKK0RJU1RST19TUkNfVVJJX2xpbnV4c3RkYmFzZSA9ICIiCitTUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAorZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAorZmlsZTovLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKK2ZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKK2ZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAorZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAorZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCitmaWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAorZmlsZTovLzAwMDEtaDJweS1GaXgtaXNzdWUtMTMwMzItd2hlcmUtaXQtZmFpbHMtd2l0aC1Vbmljb2RlRGVjby5wYXRjaCBcCitmaWxlOi8vdHdlYWstTVVMVElBUkNILWZvci1wb3dlcnBjLWxpbnV4LWdudXNwZS5wYXRjaCBcCitmaWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoIFwKKyR7RElTVFJPX1NSQ19VUkl9IFwKKyIKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWQtbmN1cnNlc3ctaW5jbHVkZS1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUlzc3VlLTIxMjcyLVVzZS1fc3lzY29uZmlnZGF0YS5weS10by1pbml0aWFsaXplLWRpc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZjM3NjNlZGY5ODI0ZDVkM2ExNWY1ZjY0NjA4M2I2ZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDYzZDJjM2IwNDAyZDYxOTFiOTA3MzFlMGY3MzVjNjQ4MzBlNzUyMjM0OGFlYjdlZDM4MmE4MzE2NWQ0NTAwOSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjZlYzUxNWIyMjYxOGY1NWZhMDcyNzZiODk3YmFjZWEiCisKKyMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyIHB5dGhvbjNuYXRpdmUgcGtnY29uZmlnCisKK0NPTkZJR1VSRU9QVFMgKz0gIiAtLXdpdGgtc3lzdGVtLWZmaSAiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X2hhdmVfY2hmbGFncz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sY2hmbGFncz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm8gXAorICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdG14PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyBcCisiCisKK1RBUkdFVF9DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKK1NES19DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKK0VYVFJBX09FTUFLRSArPSAiQ1JPU1NfQ09NUElMRT15ZXMiCitFWFRSQV9PRUNPTkYgKz0gIkNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gLS13aXRob3V0LWVuc3VyZXBpcCIKKworZXhwb3J0IENST1NTX0NPTVBJTEUgPSAiJHtUQVJHRVRfUFJFRklYfSIKK2V4cG9ydCBfUFlUSE9OX1BST0pFQ1RfQkFTRSA9ICIke0J9IgorZXhwb3J0IF9QWVRIT05fUFJPSkVDVF9TUkMgPSAiJHtTfSIKK2V4cG9ydCBDQ1NIQVJFRCA9ICItZlBJQyIKKworIyBGaXggY3Jvc3MgY29tcGlsYXRpb24gb2YgZGlmZmVyZW50IG1vZHVsZXMKK2V4cG9ydCBDUk9TU1BZVEhPTlBBVEggPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvOiR7Qn0vYnVpbGQvbGliLmxpbnV4LSR7VEFSR0VUX0FSQ0h9LSR7UFlUSE9OX01BSk1JTn06JHtTfS9MaWI6JHtTfS9MaWIvcGxhdC1saW51eCIKKworIyBObyBjdHlwZXMgb3B0aW9uIGZvciBweXRob24gMworUFlUSE9OTFNCT1BUUyA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIiwscmVhZGxpbmUiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJcm0gLWYgJHtTfS9NYWtlZmlsZS5vcmlnCisJYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycworICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4KgorICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKyAgICAgICAgICAgICAgICAke1N9L1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9kbGZjbi5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9saW51eC9jZHJvbS5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9uZXRpbmV0L2luLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L3N5cy90eXBlcy5oCisgICAgICAgIHNlZCAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAtaSAqLnB5CisgICAgICAgIGNkIC0KKworCisJIyByZW1vdmUgYW55IGJvZ3VzIExEX0xJQlJBUllfUEFUSAorCXNlZCAtaSAtZSBzLFJVTlNIQVJFRD0uKixSVU5TSEFSRUQ9LCBNYWtlZmlsZQorCisJaWYgWyAhIC1mIE1ha2VmaWxlLm9yaWcgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUub3JpZworCWZpCisJc2VkIC1pIC1lICdzLF5DT05GSUdVUkVfTERGTEFHUz0uKixDT05GSUdVUkVfTERGTEFHUz0tTC4gLUwke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGxpYmRpcj0ke2xpYmRpcn0sbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsbGliZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9LGxpYmV4ZWNkaXI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZXhlY2Rpcn0sZycgXAorCQktZSAncyxeTElCRElSPS4qLExJQkRJUj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSxpbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXklOQ0xVREVESVI9LiosSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCS1lICdzLF5DT05GSU5DTFVERURJUj0uKixDT05GSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCU1ha2VmaWxlCisJIyBzYXZlIGNvcHkgb2YgaXQgbm93LCBiZWNhdXNlIGlmIHdlIGRvIGl0IGluIGRvX2luc3RhbGwgYW5kIAorCSMgdGhlbiBjYWxsIGRvX2luc3RhbGwgdHdpY2Ugd2UgZ2V0IE1ha2VmaWxlLm9yaWcgPT0gTWFrZWZpbGUuc3lzcm9vdAorCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5zeXNyb290CisKKwlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKKwkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCisJCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJTElCPSR7YmFzZWxpYn0gXAorCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKKwkJT1BUPSIke0NGTEFHU30iIGxpYnB5dGhvbjMuc28KKworCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlPUFQ9IiR7Q0ZMQUdTfSIKK30KKworZG9faW5zdGFsbCgpIHsKKwkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAorCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKKworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcKKworCSMgcmVydW4gdGhlIGJ1aWxkIG9uY2UgYWdhaW4gd2l0aCBvcmlnaW5hbCBtYWtlZmlsZSB0aGlzIHRpbWUKKwkjIHJ1biBpbnN0YWxsIGluIGEgc2VwYXJhdGUgc3RlcCB0byBhdm9pZCBjb21waWxlL2luc3RhbGwgcmFjZQorCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfQorCQorCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCisKKwkjIGF2b2lkIGNvbmZsaWN0IHdpdGggMnRvMyBmcm9tIFB5dGhvbiAyCisJcm0gLWYgJHtEfS8ke2JpbmRpcn0vMnRvMworCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQorCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3B5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCisJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQorCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKKwlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKwkJLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCQktZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCQktZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkJLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlIFwKKwkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5IFwKKwkJJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS1jb25maWcKKworCSMgUmVjb21waWxlIF9zeXNjb25maWdkYXRhIGFmdGVyIG1vZGlmeWluZyBpdAorCWNkICR7UEtHRH0KKwkke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gXAorCSAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weScpIgorCSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBcCisJICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCcuLyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Jywgb3B0aW1pemU9MSkiCisJJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IFwKKwkgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJy4vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHknLCBvcHRpbWl6ZT0yKSIKKwljZCAtCit9CisKKyMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCitSUFJPVklERVNfJHtQTn0tbW9kdWxlcyA9ICIke1BOfSIKK1JSRUNPTU1FTkRTXyR7UE59LWNvcmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbmF0aXZlc2RrLXB5dGhvbjMtbW9kdWxlcyIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCitSUkVDT01NRU5EU18ke1BOfS1jcnlwdF9jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLW9wZW5zc2wiCisKK0ZJTEVTXyR7UE59LTJ0bzMgKz0gIiR7YmluZGlyfS8ydG8zLSR7UFlUSE9OX01BSk1JTn0iCitGSUxFU18ke1BOfS1weWRvYyArPSAiJHtiaW5kaXJ9L3B5ZG9jJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHlkb2MzIgorRklMRVNfJHtQTn0taWRsZSArPSAiJHtiaW5kaXJ9L2lkbGUzICR7YmluZGlyfS9pZGxlJHtQWVRIT05fTUFKTUlOfSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXB5dmVudiIKK0ZJTEVTXyR7UE59LXB5dmVudiArPSAiJHtiaW5kaXJ9L3B5dmVudi0ke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weXZlbnYiCisKKyMgcGFja2FnZSBsaWJweXRob24zCitQQUNLQUdFUyA9KyAibGlicHl0aG9uMyBsaWJweXRob24zLXN0YXRpY2RldiIKK0ZJTEVTX2xpYnB5dGhvbjMgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKK0ZJTEVTX2xpYnB5dGhvbjMtc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fQklOQUJJfS9saWJweXRob24ke1BZVEhPTl9CSU5BQkl9LmEiCitJTlNBTkVfU0tJUF8ke1BOfS1kZXYgKz0gImRldi1lbGYiCisKKyMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKK1BBQ0tBR0VTICs9ICIke1BOfS1taXNjIgorUkRFUEVORFNfJHtQTn0tbWlzYyArPSAiJHtQTn0tY29yZSAke1BOfS1lbWFpbCAke1BOfS1jb2RlY3MiCitSREVQRU5EU18ke1BOfS1tb2R1bGVzICs9ICIke1BOfS1taXNjIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSIKKworIyBjYXRjaCBtYW5wYWdlCitQQUNLQUdFUyArPSAiJHtQTn0tbWFuIgorRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1tb2R1bGVzIgorCisjIFdlIHdhbnQgYnl0ZWNvZGUgcHJlY29tcGlsZWQgLnB5IGZpbGVzICgucHljJ3MpIGJ5IGRlZmF1bHQKKyMgYnV0IHRoZSB1c2VyIG1heSBzZXQgaXQgb24gdGhlaXIgb3duIGNvbmYKK0lOQ0xVREVfUFlDUyA/PSAiMSIKKworcHl0aG9uKCl7CisgICAgaW1wb3J0IGpzb24KKworICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24zJywgJ3B5dGhvbjMtbWFuaWZlc3QuanNvbicpCisgICAgIyBUaGlzIHB5dGhvbiBjaGFuZ2VzIHRoZSBkYXRhc3RvcmUgYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSwgc28gbWFyaworICAgICMgdGhhdCBkZXBlbmRlbmN5LgorICAgIGJiLnBhcnNlLm1hcmtfZGVwZW5kZW5jeShkLCBmaWxlbmFtZSkKKworICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgbWFuaWZlc3RfZmlsZToKKyAgICAgICAgcHl0aG9uX21hbmlmZXN0PWpzb24ubG9hZChtYW5pZmVzdF9maWxlKQorCisgICAgaW5jbHVkZV9weWNzID0gZC5nZXRWYXIoJ0lOQ0xVREVfUFlDUycpCisKKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisKKyAgICBuZXdwYWNrYWdlcz1bXQorICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgorICAgICAgICBweXBhY2thZ2U9IHBuICsgJy0nICsga2V5CisKKyAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBwYWNrYWdlczoKKyAgICAgICAgICAgICMgV2UgbmVlZCB0byBwcmVwZW5kLCBvdGhlcndpc2UgcHl0aG9uLW1pc2MgZ2V0cyBldmVyeXRoaW5nCisgICAgICAgICAgICAjIHNvIHdlIHVzZSBhIG5ldyB2YXJpYWJsZQorICAgICAgICAgICAgbmV3cGFja2FnZXMuYXBwZW5kKHB5cGFja2FnZSkKKworICAgICAgICAjICJCdWlsZCIgcHl0aG9uJ3MgbWFuaWZlc3QgRklMRVMsIFJERVBFTkRTIGFuZCBTVU1NQVJZCisgICAgICAgIGQuc2V0VmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnJykKKyAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlKQorCisgICAgCSMgQWRkIGNhY2hlZCBmaWxlcworICAgICAgICBpZiBpbmNsdWRlX3B5Y3MgPT0gJzEnOgorICAgICAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlKQorCisgICAgICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnJykKKyAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgorICAgICAgICAgICAgIyBNYWtlIGl0IHdvcmsgd2l0aCBvciB3aXRob3V0ICRQTgorICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKKyAgICAgICAgICAgICAgICB2YWx1ZT12YWx1ZS5zcGxpdCgnLScpWzFdCisgICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHB5cGFja2FnZSwgJyAnICsgcG4gKyAnLScgKyB2YWx1ZSkKKyAgICAgICAgZC5zZXRWYXIoJ1NVTU1BUllfJyArIHB5cGFja2FnZSwgcHl0aG9uX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXSkKKworICAgICMgV2UgbmVlZCB0byBlbnN1cmUgc3RhdGljZGV2IHBhY2thZ2VzIG1hdGNoIGZvciBmaWxlcyBmaXJzdCBzbyB3ZSBzb3J0IGluIHJldmVyc2UKKyAgICBuZXdwYWNrYWdlcy5zb3J0KHJldmVyc2U9VHJ1ZSkKKyAgICAjIFByZXBlbmRpbmcgc28gdG8gYXZvaWQgcHl0aG9uLW1pc2MgZ2V0dGluZyBldmVyeXRoaW5nCisgICAgcGFja2FnZXMgPSBuZXdwYWNrYWdlcyArIHBhY2thZ2VzCisgICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgJyAnLmpvaW4ocGFja2FnZXMpKQorICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzJywgJzEnKQorfQorCisjIEZpbGVzIG5lZWRlZCB0byBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKK1NSQ19VUkkgKz0gImZpbGU6Ly9jcmVhdGVfbWFuaWZlc3QzLnB5IGZpbGU6Ly9nZXRfbW9kdWxlX2RlcHMzLnB5IGZpbGU6Ly9weXRob24zLW1hbmlmZXN0Lmpzb24iCisKK2RvX2NyZWF0ZV9tYW5pZmVzdCgpIHsKKyAgICAjIFRoaXMgdGFzayBzaG91bGQgYmUgcnVuIHdpdGggZXZlcnkgbmV3IHJlbGVhc2Ugb2YgUHl0aG9uLgorICAgICMgV2UgbXVzdCBlbnN1cmUgdGhhdCBQQUNLQUdFQ09ORklHIGVuYWJsZXMgZXZlcnl0aGluZyB3aGVuIGNyZWF0aW5nCisgICAgIyBhIG5ldyBtYW5pZmVzdCwgdGhpcyBpcyB0byBiYXNlIG91ciBuZXcgbWFuaWZlc3Qgb24gYSBjb21wbGV0ZQorICAgICMgbmF0aXZlIHB5dGhvbiBidWlsZCwgY29udGFpbmluZyBhbGwgZGVwZW5kZW5jaWVzLCBvdGhlcndpc2UgdGhlIHRhc2sKKyAgICAjIHdvbnQgYmUgYWJsZSB0byBmaW5kIHRoZSByZXF1aXJlZCBmaWxlcy4KKyAgICAjIGUuZy4gQmVya2VsZXlEQiBpcyBhbiBvcHRpb25hbCBidWlsZCBkZXBlbmRlbmN5IHNvIGl0IG1heSBvciBtYXkgbm90CisgICAgIyBiZSBwcmVzZW50LCB3ZSBtdXN0IGVuc3VyZSBpdCBpcy4KKworICAgIGNkICR7V09SS0RJUn0KKyAgICAjIFRoaXMgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYnkgcHl0aG9uLW5hdGl2ZSBhbmQgTk9UIGJ5IEhPU1QncyBweXRob24KKyAgICBuYXRpdmVweXRob24zIGNyZWF0ZV9tYW5pZmVzdDMucHkKKyAgICBjcCBweXRob24zLW1hbmlmZXN0Lmpzb24ubmV3ICR7VEhJU0RJUn0vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KK30KKworIyBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKK2FkZHRhc2sgZG9fY3JlYXRlX21hbmlmZXN0CisKKyMgTWFrZSBzdXJlIHdlIGhhdmUgbmF0aXZlIHB5dGhvbiByZWFkeSB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAorZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICJweXRob24zOmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QiCitkb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gInB5dGhvbjM6ZG9fcGF0Y2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU0YzAyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLmluYwotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIGxpYmZmaSBiemlwMiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIgotUFIgPSAiJHtJTkNfUFJ9IgotCi1ESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCi1ESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgotU1JDX1VSSSArPSAiXAotICBmaWxlOi8vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2ggXAotICBmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKLSAgZmlsZTovLzA2LWF2b2lkX3Vzcl9saWJfdGVybWNhcF9wYXRoX2luX2xpbmtpbmcucGF0Y2ggXAotICAke0RJU1RST19TUkNfVVJJfSBcCi0gIGZpbGU6Ly9tdWx0aWxpYi5wYXRjaCBcCi0gIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAotICBmaWxlOi8vc2V0dXBfcHlfc2tpcF9jcm9zc19pbXBvcnRfY2hlY2sucGF0Y2ggXAotICBmaWxlOi8vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIFwKLSAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgZmlsZTovL2ZpeF9mb3JfdXNpbmdfZGlmZmVyZW50X2xpYmRpci5wYXRjaCBcCi0gIGZpbGU6Ly9zZXR1cHR3ZWFrcy5wYXRjaCBcCi0gIGZpbGU6Ly9jaGVjay1pZi10YXJnZXQtaXMtNjRiLW5vdC1ob3N0LnBhdGNoIFwKLSAgZmlsZTovL3NlYXJjaF9kYl9oX2luX2luY19kaXJzX2FuZF9hdm9pZF93YXJuaW5nLnBhdGNoIFwKLSAgZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCi0gIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2ggXAotICBmaWxlOi8vcHl0aG9uLTIuNy4zLXJlbW92ZS1ic2RiLXJwYXRoLnBhdGNoIFwKLSAgZmlsZTovL2ZpeC1tYWtlZmlsZS1mb3ItcHRlc3QucGF0Y2ggXAotICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgZmlsZTovL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2ggXAotICBmaWxlOi8vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2ggXAotICBmaWxlOi8vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBcCi0gIGZpbGU6Ly9Eb24tdC11c2UtZ2V0ZW50cm9weS1vbi1MaW51eC5wYXRjaCBcCi0gIGZpbGU6Ly9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKLSAgZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZV8yLjcucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uLWRpciBweXRob25uYXRpdmUKLQotQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9maWxlX19kZXZfcHRteD15ZXMgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImJkYiIKLVBBQ0tBR0VDT05GSUdbYmRiXSA9ICIsLGRiIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXJtIC1mICR7U30vTWFrZWZpbGUub3JpZwotICAgICAgICBhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICAgICAgIyByZWdlbmVyYXRlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzLCBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHN5c3RlbSBoZWFkZXJzCi0gICAgICAgIGNkICR7U30vTGliL3BsYXQtbGludXgyCi0gICAgICAgIGluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLSAgICAgICAgICAgICAgICAke1N9L1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9kbGZjbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9saW51eC9jZHJvbS5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9uZXRpbmV0L2luLmggXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L3N5cy90eXBlcy5oCi0gICAgICAgIHNlZCAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAtaSAqLnB5Ci0gICAgICAgIGNkIC0KLQotCSMgcmVtb3ZlIGFueSBib2d1cyBMRF9MSUJSQVJZX1BBVEgKLQlzZWQgLWkgLWUgcyxSVU5TSEFSRUQ9LiosUlVOU0hBUkVEPSwgTWFrZWZpbGUKLQotCWlmIFsgISAtZiBNYWtlZmlsZS5vcmlnIF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLm9yaWcKLQlmaQotCXNlZCAtaSAtZSAncyNeTERGTEFHUz0uKiNMREZMQUdTPSR7TERGTEFHU30gLUwuIC1MJHtTVEFHSU5HX0xJQkRJUn0jZycgXAotCQktZSAncyxsaWJkaXI9JHtsaWJkaXJ9LGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSxsaWJleGVjZGlyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmV4ZWNkaXJ9LGcnIFwKLQkJLWUgJ3MsXkxJQkRJUj0uKixMSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0saW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5JTkNMVURFRElSPS4qLElOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeQ09ORklOQ0xVREVESVI9LiosQ09ORklOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQlNYWtlZmlsZQotCSMgc2F2ZSBjb3B5IG9mIGl0IG5vdywgYmVjYXVzZSBpZiB3ZSBkbyBpdCBpbiBkb19pbnN0YWxsIGFuZCAKLQkjIHRoZW4gY2FsbCBkb19pbnN0YWxsIHR3aWNlIHdlIGdldCBNYWtlZmlsZS5vcmlnID09IE1ha2VmaWxlLnN5c3Jvb3QKLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUuc3lzcm9vdAotCi0JZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCi0JZXhwb3J0IFBZVEhPTkJVSUxERElSPSIke0J9IgotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCU9QVD0iJHtDRkxBR1N9IgotfQotCi1kb19pbnN0YWxsKCkgewotCSMgbWFrZSBpbnN0YWxsIG5lZWRzIHRoZSBvcmlnaW5hbCBNYWtlZmlsZSwgb3Igb3RoZXJ3aXNlIHRoZSBpbmNsdWVzIHdvdWxkCi0JIyBnbyB0byAke0R9JHtTVEFHSU5HLi4ufS8uLi4KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUub3JpZyBNYWtlZmlsZQotCi0JZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCi0JZXhwb3J0IFBZVEhPTkJVSUxERElSPSIke0J9IgotCi0JIyBBZnRlciBzd2l6emxpbmcgdGhlIG1ha2VmaWxlLCB3ZSBuZWVkIHRvIHJ1biB0aGUgYnVpbGQgYWdhaW4uCi0JIyBpbnN0YWxsIGNhbiByYWNlIHdpdGggdGhlIGJ1aWxkIHNvIHdlIGhhdmUgdG8gcnVuIHRoaXMgZmlyc3QsIHRoZW4gaW5zdGFsbAotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLQkJQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KLQkKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0JCUNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGluc3RhbGwKLQotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0KLQlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQotCWZpCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZy5oCi0KLSAgICBpZiBbIC16ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYmRiJywgZCl9IiBdOyB0aGVuCi0gICAgICAgIHJtIC1yZiAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2JzZGRiCi0gICAgZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbjIuNyBQWVRIT05IT01FPScke3ByZWZpeH0nIFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJwotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUiCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKLQkjIGNvcHkgYmFjayB0aGUgb2xkIE1ha2VmaWxlIHRvIGZpeCB0YXJnZXQgcGFja2FnZQotCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKLQotCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKLQlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Ci0gICAgcHl0aG9uIC1tIHB5X2NvbXBpbGUgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weQotfQotCi1yZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYwotCi0jIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucwotUlBST1ZJREVTXyR7UE59LWNvcmUgPSAiJHtQTn0iCi1SUkVDT01NRU5EU18ke1BOfS1jb3JlID0gIiR7UE59LXJlYWRsaW5lIgotUlJFQ09NTUVORFNfJHtQTn0tY29yZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBuYXRpdmVzZGstcHl0aG9uLW1vZHVsZXMiCi1SUkVDT01NRU5EU18ke1BOfS1jcnlwdCA9ICJvcGVuc3NsIgotCi0jIHBhY2thZ2UgbGlicHl0aG9uMgotUEFDS0FHRVMgPSsgImxpYiR7QlBOfTIiCi1GSUxFU19saWIke0JQTn0yID0gIiR7bGliZGlyfS9saWJweXRob24qLnNvLioiCi0KLSMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKLVBBQ0tBR0VTICs9ICIke1BOfS1taXNjIgotRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCi0KLSMgcHRlc3QKLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gIiR7UE59LW1vZHVsZXMgJHtQTn0tdGVzdHMiCi0jaW5oZXJpdCBwdGVzdCBhZnRlciAicmVxdWlyZSBweXRob24tJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMiIHNvIFBBQ0tBR0VTIGRvZXNuJ3QgZ2V0IG92ZXJ3cml0dGVuCi1pbmhlcml0IHB0ZXN0Ci0KLSMgVGhpcyBtdXN0IGNvbWUgYWZ0ZXIgaW5oZXJpdCBwdGVzdCBmb3IgdGhlIG92ZXJyaWRlIHRvIHRha2UgZWZmZWN0Ci1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KLQlzZWQgLWUgczpMSUJESVIvcHl0aG9uL3B0ZXN0OiR7UFRFU1RfUEFUSH06ZyBcCi0JIC1lIHM6TElCRElSOiR7bGliZGlyfTpnIFwKLQkgLWkgJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0Ci0KLQkjUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcwotCXNlZCAtaSBcCi0JCS1lICdzOi0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0JICAgIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIFwKLQkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLQkke0R9LyR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLX0KLQotIyBjYXRjaCBtYW5wYWdlCi1QQUNLQUdFUyArPSAiJHtQTn0tbWFuIgotRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgotCi0jIE5hc3R5IGJ1dCBpZiBiZGIgaXNuJ3QgZW5hYmxlZCB0aGUgcGFja2FnZSB3b24ndCBiZSBnZW5lcmF0ZWQKLVJERVBFTkRTXyR7UE59LW1vZHVsZXNfcmVtb3ZlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsICcnLCAnJHtQTn0tYnNkZGInLCBkKX0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEwOTkyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTQuYmIKQEAgLTAsMCArMSwyODEgQEAKK3JlcXVpcmUgcHl0aG9uLmluYworCitERVBFTkRTID0gInB5dGhvbi1uYXRpdmUgbGliZmZpIGJ6aXAyIGdkYm0gb3BlbnNzbCByZWFkbGluZSBzcWxpdGUzIHpsaWIiCisKK1BSID0gIiR7SU5DX1BSfSIKKworRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgorRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKK1NSQ19VUkkgKz0gIlwKKyAgZmlsZTovLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoIFwKKyAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCisgIGZpbGU6Ly8wNi1hdm9pZF91c3JfbGliX3Rlcm1jYXBfcGF0aF9pbl9saW5raW5nLnBhdGNoIFwKKyAgJHtESVNUUk9fU1JDX1VSSX0gXAorICBmaWxlOi8vbXVsdGlsaWIucGF0Y2ggXAorICBmaWxlOi8vY2dpX3B5LnBhdGNoIFwKKyAgZmlsZTovL3NldHVwX3B5X3NraXBfY3Jvc3NfaW1wb3J0X2NoZWNrLnBhdGNoIFwKKyAgZmlsZTovL2FkZC1tZDVtb2R1bGUtc3VwcG9ydC5wYXRjaCBcCisgIGZpbGU6Ly9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaCBcCisgIGZpbGU6Ly9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2ggXAorICBmaWxlOi8vc2V0dXB0d2Vha3MucGF0Y2ggXAorICBmaWxlOi8vY2hlY2staWYtdGFyZ2V0LWlzLTY0Yi1ub3QtaG9zdC5wYXRjaCBcCisgIGZpbGU6Ly9zZWFyY2hfZGJfaF9pbl9pbmNfZGlyc19hbmRfYXZvaWRfd2FybmluZy5wYXRjaCBcCisgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAorICBmaWxlOi8vYXZvaWRfd2FybmluZ19mb3Jfc3Vub3Nfc3BlY2lmaWNfbW9kdWxlLnBhdGNoIFwKKyAgZmlsZTovL3B5dGhvbi0yLjcuMy1yZW1vdmUtYnNkYi1ycGF0aC5wYXRjaCBcCisgIGZpbGU6Ly9maXgtbWFrZWZpbGUtZm9yLXB0ZXN0LnBhdGNoIFwKKyAgZmlsZTovL3J1bi1wdGVzdCBcCisgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIFwKKyAgZmlsZTovL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoIFwKKyAgZmlsZTovL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAorICBmaWxlOi8vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCisgIGZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyIHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlCisKK0NPTkZJR1VSRU9QVFMgKz0gIiAtLXdpdGgtc3lzdGVtLWZmaSAiCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJiZGIiCitQQUNLQUdFQ09ORklHW2JkYl0gPSAiLCxkYiIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKKyAgICAgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycworICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4MgorICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCisgICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAorICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQorICAgICAgICBjZCAtCisKKwkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICisJc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCisKKwlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCisJZmkKKwlzZWQgLWkgLWUgJ3MjXkxERkxBR1M9LiojTERGTEFHUz0ke0xERkxBR1N9IC1MLiAtTCR7U1RBR0lOR19MSUJESVJ9I2cnIFwKKwkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAorCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCisJCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAorCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJTWFrZWZpbGUKKwkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCisJIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290CisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKKworCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgorCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKKworCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlPUFQ9IiR7Q0ZMQUdTfSIKK30KKworZG9faW5zdGFsbCgpIHsKKwkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAorCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKKworCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgorCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKKworCSMgQWZ0ZXIgc3dpenpsaW5nIHRoZSBtYWtlZmlsZSwgd2UgbmVlZCB0byBydW4gdGhlIGJ1aWxkIGFnYWluLgorCSMgaW5zdGFsbCBjYW4gcmFjZSB3aXRoIHRoZSBidWlsZCBzbyB3ZSBoYXZlIHRvIHJ1biB0aGlzIGZpcnN0LCB0aGVuIGluc3RhbGwKKwlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCisJCUNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9CisJCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKKwkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAorCQlDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCisKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQorCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHljb25maWcuaAorCisgICAgaWYgWyAteiAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsIGQpfSIgXTsgdGhlbgorICAgICAgICBybSAtcmYgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9ic2RkYgorICAgIGZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9weXRob24yLjcgUFlUSE9OSE9NRT0nJHtwcmVmaXh9JyBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3B5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCisKKwkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZSBwYXRocyBpbiB0YXJnZXQgTWFrZWZpbGUgYW5kIF9zeXNjb25maWdkYXRhCisJc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCisJCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJCS1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisJCS1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKKwkoY2QgJHtQS0dEfTsgcHl0aG9uIC1tIHB5X2NvbXBpbGUgLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weSkKK30KKworCisjIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucworUlBST1ZJREVTXyR7UE59LWNvcmUgPSAiJHtQTn0iCitSUkVDT01NRU5EU18ke1BOfS1jb3JlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIG5hdGl2ZXNkay1weXRob24tbW9kdWxlcyIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCisKKyMgcGFja2FnZSBsaWJweXRob24yCitQQUNLQUdFUyA9KyAibGliJHtCUE59MiIKK0ZJTEVTX2xpYiR7QlBOfTIgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKKworIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQorUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgorUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKKworIyBwdGVzdAorUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyIKKyNpbmhlcml0IHB0ZXN0IGFmdGVyICJyZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYyIgc28gUEFDS0FHRVMgZG9lc24ndCBnZXQgb3ZlcndyaXR0ZW4KK2luaGVyaXQgcHRlc3QKKworIyBUaGlzIG11c3QgY29tZSBhZnRlciBpbmhlcml0IHB0ZXN0IGZvciB0aGUgb3ZlcnJpZGUgdG8gdGFrZSBlZmZlY3QKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfQorCXNlZCAtZSBzOkxJQkRJUi9weXRob24vcHRlc3Q6JHtQVEVTVF9QQVRIfTpnIFwKKwkgLWUgczpMSUJESVI6JHtsaWJkaXJ9OmcgXAorCSAtaSAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKKworCSNSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzCisJc2VkIC1pIFwKKwkJLWUgJ3M6LS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKwkgICAgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCSR7RH0vJHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorfQorCisjIGNhdGNoIG1hbnBhZ2UKK1BBQ0tBR0VTICs9ICIke1BOfS1tYW4iCitGSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCisKKyMgTmFzdHkgYnV0IGlmIGJkYiBpc24ndCBlbmFibGVkIHRoZSBwYWNrYWdlIHdvbid0IGJlIGdlbmVyYXRlZAorUkRFUEVORFNfJHtQTn0tbW9kdWxlc19yZW1vdmUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmRiJywgJycsICcke1BOfS1ic2RkYicsIGQpfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tbW9kdWxlcyIKKworIyBXZSB3YW50IGJ5dGVjb2RlIHByZWNvbXBpbGVkIC5weSBmaWxlcyAoLnB5YydzKSBieSBkZWZhdWx0CisjIGJ1dCB0aGUgdXNlciBtYXkgc2V0IGl0IG9uIHRoZWlyIG93biBjb25mCisKK0lOQ0xVREVfUFlDUyA/PSAiMSIKKworcHl0aG9uKCl7CisgICAgaW1wb3J0IGpzb24KKworICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24nLCAncHl0aG9uMi1tYW5pZmVzdC5qc29uJykKKyAgICAjIFRoaXMgcHl0aG9uIGNoYW5nZXMgdGhlIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBmaWxlLCBzbyBtYXJrCisgICAgIyB0aGF0IGRlcGVuZGVuY3kuCisgICAgYmIucGFyc2UubWFya19kZXBlbmRlbmN5KGQsIGZpbGVuYW1lKQorCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBtYW5pZmVzdF9maWxlOgorICAgICAgICBweXRob25fbWFuaWZlc3Q9anNvbi5sb2FkKG1hbmlmZXN0X2ZpbGUpCisKKyAgICBpbmNsdWRlX3B5Y3MgPSBkLmdldFZhcignSU5DTFVERV9QWUNTJykKKworICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQorICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKworICAgIG5ld3BhY2thZ2VzPVtdCisKKyAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKKyAgICAgICAgcHlwYWNrYWdlPSBwbiArICctJyArIGtleQorCisgICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcGFja2FnZXM6CisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcHJlcGVuZCwgb3RoZXJ3aXNlIHB5dGhvbi1taXNjIGdldHMgZXZlcnl0aGluZworICAgICAgICAgICAgIyBzbyB3ZSB1c2UgYSBuZXcgdmFyaWFibGUKKyAgICAgICAgICAgIG5ld3BhY2thZ2VzLmFwcGVuZChweXBhY2thZ2UpCisKKyAgICAgICAgIyAiQnVpbGQiIHB5dGhvbidzIG1hbmlmZXN0IEZJTEVTLCBSREVQRU5EUyBhbmQgU1VNTUFSWQorICAgICAgICBkLnNldFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJycpCisgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKKyAgICAgICAgICAgIGlmIGluY2x1ZGVfcHljcyA9PSAnMSc6CisgICAgICAgICAgICAgICAgaWYgdmFsdWUuZW5kc3dpdGgoJy5weScpOgorICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUgKyAnYycpCisKKyAgICAgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBweXBhY2thZ2UsICcnKQorICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106CisgICAgICAgICAgICAjIE1ha2UgaXQgd29yayB3aXRoIG9yIHdpdGhvdXQgJFBOCisgICAgICAgICAgICBpZiAnJHtQTn0nIGluIHZhbHVlOgorICAgICAgICAgICAgICAgIHZhbHVlPXZhbHVlLnNwbGl0KCctJylbMV0KKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnICcgKyBwbiArICctJyArIHZhbHVlKQorICAgICAgICBkLnNldFZhcignU1VNTUFSWV8nICsgcHlwYWNrYWdlLCBweXRob25fbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddKQorCisgICAgIyBXZSBuZWVkIHRvIGVuc3VyZSBzdGF0aWNkZXYgcGFja2FnZXMgbWF0Y2ggZm9yIGZpbGVzIGZpcnN0IHNvIHdlIHNvcnQgaW4gcmV2ZXJzZQorICAgIG5ld3BhY2thZ2VzLnNvcnQocmV2ZXJzZT1UcnVlKQorICAgICMgUHJlcGVuZGluZyBzbyB0byBhdm9pZCBweXRob24tbWlzYyBnZXR0aW5nIGV2ZXJ5dGhpbmcKKyAgICBwYWNrYWdlcyA9IG5ld3BhY2thZ2VzICsgcGFja2FnZXMKKyAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCisgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMnLCAnMScpCit9CisKKyMgRmlsZXMgbmVlZGVkIHRvIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAorU1JDX1VSSSArPSAiZmlsZTovL2NyZWF0ZV9tYW5pZmVzdDIucHkgZmlsZTovL2dldF9tb2R1bGVfZGVwczIucHkgZmlsZTovL3B5dGhvbjItbWFuaWZlc3QuanNvbiIKKworZG9fY3JlYXRlX21hbmlmZXN0KCkgeworICAgICMgVGhpcyB0YXNrIHNob3VsZCBiZSBydW4gd2l0aCBldmVyeSBuZXcgcmVsZWFzZSBvZiBQeXRob24uCisgICAgIyBXZSBtdXN0IGVuc3VyZSB0aGF0IFBBQ0tBR0VDT05GSUcgZW5hYmxlcyBldmVyeXRoaW5nIHdoZW4gY3JlYXRpbmcKKyAgICAjIGEgbmV3IG1hbmlmZXN0LCB0aGlzIGlzIHRvIGJhc2Ugb3VyIG5ldyBtYW5pZmVzdCBvbiBhIGNvbXBsZXRlCisgICAgIyBuYXRpdmUgcHl0aG9uIGJ1aWxkLCBjb250YWluaW5nIGFsbCBkZXBlbmRlbmNpZXMsIG90aGVyd2lzZSB0aGUgdGFzaworICAgICMgd29udCBiZSBhYmxlIHRvIGZpbmQgdGhlIHJlcXVpcmVkIGZpbGVzLgorICAgICMgZS5nLiBCZXJrZWxleURCIGlzIGFuIG9wdGlvbmFsIGJ1aWxkIGRlcGVuZGVuY3kgc28gaXQgbWF5IG9yIG1heSBub3QKKyAgICAjIGJlIHByZXNlbnQsIHdlIG11c3QgZW5zdXJlIGl0IGlzLgorCisgICAgY2QgJHtXT1JLRElSfQorICAgICMgVGhpcyBuZWVkcyB0byBiZSBleGVjdXRlZCBieSBweXRob24tbmF0aXZlIGFuZCBOT1QgYnkgSE9TVCdzIHB5dGhvbgorICAgIG5hdGl2ZXB5dGhvbiBjcmVhdGVfbWFuaWZlc3QyLnB5CisgICAgY3AgcHl0aG9uMi1tYW5pZmVzdC5qc29uLm5ldyAke1RISVNESVJ9L3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24KK30KKworIyBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKK2FkZHRhc2sgZG9fY3JlYXRlX21hbmlmZXN0CisKKyMgTWFrZSBzdXJlIHdlIGhhdmUgbmF0aXZlIHB5dGhvbiByZWFkeSB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAorZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICJweXRob246ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCIKK2RvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAicHl0aG9uOmRvX3BhdGNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L25hdGl2ZXNkay1xZW11LWhlbHBlcl8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYgppbmRleCA5NDNjYTVmLi5jZGMyZjUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiUWVtdSBoZWxwZXIgc2NyaXB0cyIKIExJQ0VOU0UgPSAiR1BMdjIiCi1SREVQRU5EU18ke1BOfSA9ICJuYXRpdmVzZGstcWVtdSBuYXRpdmVzZGstcHl0aG9uMy1zdWJwcm9jZXNzIFwKLSAgICAgICAgICAgICAgICAgIG5hdGl2ZXNkay1weXRob24zLXNoZWxsIG5hdGl2ZXNkay1weXRob24zLWZjbnRsIFwKK1JERVBFTkRTXyR7UE59ID0gIm5hdGl2ZXNkay1xZW11IFwKKyAgICAgICAgICAgICAgICAgIG5hdGl2ZXNkay1weXRob24zLXNoZWxsIG5hdGl2ZXNkay1weXRob24zLWZjbnRsIG5hdGl2ZXNkay1weXRob24zLWxvZ2dpbmcgXAogICAgICAgICAgICAgICAgICIKIAogUFIgPSAicjkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKaW5kZXggMmExZDE0Yi4uZGM3M2RmOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwpAQCAtMjgsNyArMjgsNyBAQAogICAgIC0tdGFyZ2V0LWxpc3Q9JHtAZ2V0X3FlbXVfdGFyZ2V0X2xpc3QoZCl9IFwKICAgICAtLWV4dHJhLWNmbGFncz0nJHtDRkxBR1N9JyBcCiAgICAgIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tcHl0aG9uPSR7VVNSQklOUEFUSH0vcHl0aG9uMi43IgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tcHl0aG9uPXB5dGhvbjIuNyIKIAogRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIExEPScke0xEfScgQVI9JyR7QVJ9JyBPQkpDT1BZPScke09CSkNPUFl9JyBMREZMQUdTPScke0xERkxBR1N9JyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1Qcm92aWRlLXN1cHBvcnQtZm9yLXRoZS1DVVNFLVRQTS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtUHJvdmlkZS1zdXBwb3J0LWZvci10aGUtQ1VTRS1UUE0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ZGM2ZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1Qcm92aWRlLXN1cHBvcnQtZm9yLXRoZS1DVVNFLVRQTS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3MCArMCwwIEBACi1Gcm9tIDg3MzdlZWYxOGYzOWVkMDg3ZmQ5MTFkMGEwODg2ZTgxNzRkMDQ2OGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLURhdGU6IFNhdCwgMzEgRGVjIDIwMTYgMTE6MjM6MzIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIFByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIENVU0UgVFBNCi0KLVJhdGhlciB0aGFuIGludGVncmF0aW5nIFRQTSBmdW5jdGlvbmFsaXR5IGludG8gUUVNVSBkaXJlY3RseQotdXNpbmcgdGhlIFRQTSBlbXVsYXRpb24gb2YgbGlidHBtcywgd2Ugbm93IGludGVncmF0ZSBhbiBleHRlcm5hbAotZW11bGF0ZWQgVFBNIGRldmljZS4gVGhpcyBkZXZpY2UgaXMgZXhwZWN0ZWQgdG8gaW1wbGVtZW50IGEgTGludXgKLUNVU0UgaW50ZXJmYWNlIChDVVNFID0gY2hhcmFjdGVyIGRldmljZSBpbiB1c2Vyc3BhY2UpLgotCi1RRU1VIHRhbGtzIHRvIHRoZSBDVVNFIFRQTSB1c2luZyBtdWNoIGZ1bmN0aW9uYWxpdHkgb2YgdGhlCi1wYXNzdGhyb3VnaCBkcml2ZXIuIEZvciBleGFtcGxlLCB0aGUgVFBNIGNvbW1hbmRzIGFuZCByZXNwb25zZXMKLWFyZSBzZW50IHRvIHRoZSBDVVNFIFRQTSB1c2luZyB0aGUgcmVhZCgpL3dyaXRlKCkgaW50ZXJmYWNlLgotSG93ZXZlciwgc29tZSBvdXQtb2YtYmFuZCBjb250cm9sIG5lZWRzIHRvIGJlIGRvbmUgdXNpbmcgdGhlIENVU0UKLVRQTSdzIGlvY3Rscy4gVGhlIENVU0UgVFBNIGN1cnJlbnRseSBkZWZpbmVzIGFuZCBpbXBsZW1lbnRzIDE1Ci1kaWZmZXJlbnQgaW9jdGxzIGZvciBjb250cm9sbGluZyBjZXJ0YWluIGxpZmUtY3ljbGUgYXNwZWN0cyBvZgotdGhlIGVtdWxhdGVkIFRQTS4gVGhlIGlvY3RscyBjYW4gYmUgcmVnYXJkZWQgYXMgYSByZXBsYWNlbWVudCBmb3IKLWRpcmVjdCBmdW5jdGlvbiBjYWxscyB0byBhIFRQTSBlbXVsYXRvciBpZiB0aGUgVFBNIHdlcmUgdG8gYmUKLWRpcmVjdGx5IGludGVncmF0ZWQgaW50byBRRU1VLgotCi1PbmUgb2YgdGhlIGlvY3RscyBhbGxvd3MgdG8gZ2V0IGEgYml0bWFzayBvZiBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzLgotRWFjaCByZXR1cm5lZCBiaXQgaW5kaWNhdGVzIHdoaWNoIGNhcGFiaWxpdGllcyBoYXZlIGJlZW4gaW1wbGVtZW50ZWQuCi1BbiBpbmNsdWRlIGZpbGUgZGVmaW5pbmcgdGhlIHZhcmlvdXMgaW9jdGxzIGlzIGFkZGVkIHRvIFFFTVUuCi0KLVRoZSBDVVNFIFRQTSBhbmQgYXNzb2NpYXRlZCB0b29scyBjYW4gYmUgZm91bmQgaGVyZToKLQotaHR0cHM6Ly9naXRodWIuY29tL3N0ZWZhbmJlcmdlci9zd3RwbQotCi0ocGxlYXNlIHVzZSB0aGUgbGF0ZXN0IHZlcnNpb24pCi0KLVRvIHVzZSB0aGUgZXh0ZXJuYWwgQ1VTRSBUUE0sIHRoZSBDVVNFIFRQTSBzaG91bGQgYmUgc3RhcnRlZCBhcyBmb2xsb3dzOgotCi0vdXNyL2Jpbi9zd3RwbV9pb2N0bCAtcyAvZGV2L3Z0cG0tdGVzdAotCi0vdXNyL2Jpbi9zd3RwbV9jdXNlIC1uIHZ0cG0tdGVzdAotCi1RRU1VIGNhbiB0aGVuIGJlIHN0YXJ0ZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgotCi1xZW11LXN5c3RlbS14ODZfNjQgXAotCVsuLi5dIFwKLSAgICAgICAgLXRwbWRldiBjdXNlLXRwbSxpZD10cG0wLGNhbmNlbC1wYXRoPS9kZXYvbnVsbCxwYXRoPS9kZXYvdnRwbS10ZXN0IFwKLSAgICAgICAgLWRldmljZSB0cG0tdGlzLGlkPXRwbTAsdHBtZGV2PXRwbTAgXAotCVsuLi5dCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotQ2M6IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgotCi1Db25mbGljdHM6Ci0JZG9jcy9xbXAtY29tbWFuZHMudHh0Ci0KLVBhdGNoIGNoZXJyeS1waWNrZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vc3RlZmFuYmVyZ2VyL3FlbXUtdHBtLCBicmFuY2ggdjIuOC4wK3RwbSwKLWNvbW1pdCAyN2Q2Y2Q4NTZkNWExNDA2MTk1NWRmN2E5M2VlNDkwNjk3YTdhMTc0LiBBcHBsaWVkIGNsZWFubHkgZXhjZXB0IGZvcgotZG9jcy9xbXAtY29tbWFuZHMudHh0IHdoaWNoIGRpZCBub3QgZXhpc3QgeWV0IGluIHFlbXUgMi43LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vbGlzdHMubm9uZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE2LTA2L21zZzAwMjUyLmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0tLS0KLSBobXAuYyAgICAgICAgICAgICAgICAgICAgfCAgIDYgKysKLSBody90cG0vdHBtX2ludC5oICAgICAgICAgfCAgIDEgKwotIGh3L3RwbS90cG1faW9jdGwuaCAgICAgICB8IDIxNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jIHwgMjc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gcWFwaS1zY2hlbWEuanNvbiAgICAgICAgIHwgIDE4ICsrKy0KLSBxZW11LW9wdGlvbnMuaHggICAgICAgICAgfCAgMjEgKysrLQotIHRwbS5jICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQotIDcgZmlsZXMgY2hhbmdlZCwgNTI5IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBody90cG0vdHBtX2lvY3RsLmgKLQotZGlmZiAtLWdpdCBhL2htcC5jIGIvaG1wLmMKLWluZGV4IGNjMjA1NmU5ZTIuLjI3N2I0NWVmNWEgMTAwNjQ0Ci0tLS0gYS9obXAuYwotKysrIGIvaG1wLmMKLUBAIC04ODMsNiArODgzLDEyIEBAIHZvaWQgaG1wX2luZm9fdHBtKE1vbml0b3IgKm1vbiwgY29uc3QgUURpY3QgKnFkaWN0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwby0+aGFzX2NhbmNlbF9wYXRoID8gIixjYW5jZWwtcGF0aD0iIDogIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBvLT5oYXNfY2FuY2VsX3BhdGggPyB0cG8tPmNhbmNlbF9wYXRoIDogIiIpOwotICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBUUE1fVFlQRV9PUFRJT05TX0tJTkRfQ1VTRV9UUE06Ci0rICAgICAgICAgICAgdHBvID0gdGktPm9wdGlvbnMtPnUucGFzc3Rocm91Z2guZGF0YTsKLSsgICAgICAgICAgICBtb25pdG9yX3ByaW50Zihtb24sICIlcyVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG8tPmhhc19wYXRoID8gIixwYXRoPSIgOiAiIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG8tPmhhc19wYXRoID8gdHBvLT5wYXRoIDogIiIpOwotKyAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSBUUE1fVFlQRV9PUFRJT05TX0tJTkRfX01BWDoKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX2ludC5oIGIvaHcvdHBtL3RwbV9pbnQuaAotaW5kZXggZjJmMjg1YjNjYy4uNmIyYzljOTUzYSAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1faW50LmgKLSsrKyBiL2h3L3RwbS90cG1faW50LmgKLUBAIC02MSw2ICs2MSw3IEBAIHN0cnVjdCB0cG1fcmVzcF9oZHIgewotICNkZWZpbmUgVFBNX1RBR19SU1BfQVVUSDFfQ09NTUFORCAweGM1Ci0gI2RlZmluZSBUUE1fVEFHX1JTUF9BVVRIMl9DT01NQU5EIDB4YzYKLSAKLSsjZGVmaW5lIFRQTV9TVUNDRVNTICAgICAgICAgICAgICAgMAotICNkZWZpbmUgVFBNX0ZBSUwgICAgICAgICAgICAgICAgICA5Ci0gCi0gI2RlZmluZSBUUE1fT1JEX0NvbnRpbnVlU2VsZlRlc3QgIDB4NTMKLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX2lvY3RsLmggYi9ody90cG0vdHBtX2lvY3RsLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5hMzQxZTE1NzQxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9ody90cG0vdHBtX2lvY3RsLmgKLUBAIC0wLDAgKzEsMjE1IEBACi0rLyoKLSsgKiB0cG1faW9jdGwuaAotKyAqCi0rICogKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAxNCwgMjAxNS4KLSsgKgotKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIDMtY2xhdXNlIEJTRCBsaWNlbnNlCi0rICovCi0rI2lmbmRlZiBfVFBNX0lPQ1RMX0hfCi0rI2RlZmluZSBfVFBNX0lPQ1RMX0hfCi0rCi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKyNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSsKLSsvKgotKyAqIEV2ZXJ5IHJlc3BvbnNlIGZyb20gYSBjb21tYW5kIGludm9sdmluZyBhIFRQTSBjb21tYW5kIGV4ZWN1dGlvbiBtdXN0IGhvbGQKLSsgKiB0aGUgcHRtX3JlcyBhcyB0aGUgZmlyc3QgZWxlbWVudC4KLSsgKiBwdG1fcmVzIGNvcnJlc3BvbmRzIHRvIHRoZSBlcnJvciBjb2RlIG9mIGEgY29tbWFuZCBleGVjdXRlZCBieSB0aGUgVFBNLgotKyAqLwotKwotK3R5cGVkZWYgdWludDMyX3QgcHRtX3JlczsKLSsKLSsvKiBQVE1fR0VUX1RQTUVTVEFCTElTSEVEOiBnZXQgdGhlIGVzdGFibGlzaG1lbnQgYml0ICovCi0rc3RydWN0IHB0bV9lc3QgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHB0bV9yZXMgdHBtX3Jlc3VsdDsKLSsgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGJpdDsgLyogVFBNIGVzdGFibGlzaGVkIGJpdCAqLwotKyAgICAgICAgfSByZXNwOyAvKiByZXNwb25zZSAqLwotKyAgICB9IHU7Ci0rfTsKLSsKLSsvKiBQVE1fUkVTRVRfVFBNRVNUQUJMSVNIRUQ6IHJlc2V0IGVzdGFibGlzaG1lbnQgYml0ICovCi0rc3RydWN0IHB0bV9yZXNldF9lc3QgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQ4X3QgbG9jOyAvKiBsb2NhbGl0eSB0byB1c2UgKi8KLSsgICAgICAgIH0gcmVxOyAvKiByZXF1ZXN0ICovCi0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHB0bV9yZXMgdHBtX3Jlc3VsdDsKLSsgICAgICAgIH0gcmVzcDsgLyogcmVzcG9uc2UgKi8KLSsgICAgfSB1OwotK307Ci0rCi0rLyogUFRNX0lOSVQgKi8KLStzdHJ1Y3QgcHRtX2luaXQgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQzMl90IGluaXRfZmxhZ3M7IC8qIHNlZSBkZWZpbml0aW9ucyBiZWxvdyAqLwotKyAgICAgICAgfSByZXE7IC8qIHJlcXVlc3QgKi8KLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgcHRtX3JlcyB0cG1fcmVzdWx0OwotKyAgICAgICAgfSByZXNwOyAvKiByZXNwb25zZSAqLwotKyAgICB9IHU7Ci0rfTsKLSsKLSsvKiBhYm92ZSBpbml0X2ZsYWdzICovCi0rI2RlZmluZSBQVE1fSU5JVF9GTEFHX0RFTEVURV9WT0xBVElMRSAoMSA8PCAwKQotKyAgICAvKiBkZWxldGUgdm9sYXRpbGUgc3RhdGUgZmlsZSBhZnRlciByZWFkaW5nIGl0ICovCi0rCi0rLyogUFRNX1NFVF9MT0NBTElUWSAqLwotK3N0cnVjdCBwdG1fbG9jIHsKLSsgICAgdW5pb24gewotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICB1aW50OF90IGxvYzsgLyogbG9jYWxpdHkgdG8gc2V0ICovCi0rICAgICAgICB9IHJlcTsgLyogcmVxdWVzdCAqLwotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICBwdG1fcmVzIHRwbV9yZXN1bHQ7Ci0rICAgICAgICB9IHJlc3A7IC8qIHJlc3BvbnNlICovCi0rICAgIH0gdTsKLSt9OwotKwotKy8qIFBUTV9IQVNIX0RBVEE6IGhhc2ggZ2l2ZW4gZGF0YSAqLwotK3N0cnVjdCBwdG1faGRhdGEgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0aDsKLSsgICAgICAgICAgICB1aW50OF90IGRhdGFbNDA5Nl07Ci0rICAgICAgICB9IHJlcTsgLyogcmVxdWVzdCAqLwotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICBwdG1fcmVzIHRwbV9yZXN1bHQ7Ci0rICAgICAgICB9IHJlc3A7IC8qIHJlc3BvbnNlICovCi0rICAgIH0gdTsKLSt9OwotKwotKy8qCi0rICogc2l6ZSBvZiB0aGUgVFBNIHN0YXRlIGJsb2IgdG8gdHJhbnNmZXI7IHg4Nl82NCBjYW4gaGFuZGxlIDhrLAotKyAqIHBwYzY0bGUgb25seSB+N2s7IGtlZXAgdGhlIHJlc3BvbnNlIGJlbG93IGEgNGsgcGFnZSBzaXplCi0rICovCi0rI2RlZmluZSBQVE1fU1RBVEVfQkxPQl9TSVpFICgzICogMTAyNCkKLSsKLSsvKgotKyAqIFRoZSBmb2xsb3dpbmcgaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRvIGdldCBzdGF0ZSBibG9icyBmcm9tIHRoZSBUUE0uCi0rICogSWYgdGhlIHNpemUgb2YgdGhlIHN0YXRlIGJsb2IgZXhjZWVkcyB0aGUgUFRNX1NUQVRFX0JMT0JfU0laRSwgbXVsdGlwbGUgcmVhZHMKLSsgKiB3aXRoIHRoaXMgaW9jdGwgYW5kIHdpdGggYWRqdXN0ZWQgb2Zmc2V0IGFyZSBuZWNlc3NhcnkuIEFsbCBieXRlcwotKyAqIG11c3QgYmUgdHJhbnNmZXJyZWQgYW5kIHRoZSB0cmFuc2ZlciBpcyBkb25lIG9uY2UgdGhlIGxhc3QgYnl0ZSBoYXMgYmVlbgotKyAqIHJldHVybmVkLgotKyAqIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSB0aGUgcmVhZCgpIGludGVyZmFjZSBmb3IgcmVhZGluZyB0aGUgZGF0YTsgaG93ZXZlciwKLSsgKiB0aGUgZmlyc3QgYnl0ZXMgb2YgdGhlIHN0YXRlIGJsb2Igd2lsbCBiZSBwYXJ0IG9mIHRoZSByZXNwb25zZSB0byB0aGUgaW9jdGwoKTsKLSsgKiBhIHN1YnNlcXVlbnQgcmVhZCgpIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHRoZSB0b3RhbCBsZW5ndGggKHRvdGxlbmd0aCkgZXhjZWVkcwotKyAqIHRoZSBudW1iZXIgb2YgcmVjZWl2ZWQgYnl0ZXMuIHNlZWsoKSBpcyBub3Qgc3VwcG9ydGVkLgotKyAqLwotK3N0cnVjdCBwdG1fZ2V0c3RhdGUgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQzMl90IHN0YXRlX2ZsYWdzOyAvKiBtYXkgYmU6IFBUTV9TVEFURV9GTEFHX0RFQ1JZUFRFRCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IHR5cGU7ICAgICAgICAvKiB3aGljaCBibG9iIHRvIHB1bGwgKi8KLSsgICAgICAgICAgICB1aW50MzJfdCBvZmZzZXQ7ICAgICAgLyogb2Zmc2V0IGZyb20gd2hlcmUgdG8gcmVhZCAqLwotKyAgICAgICAgfSByZXE7IC8qIHJlcXVlc3QgKi8KLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgcHRtX3JlcyB0cG1fcmVzdWx0OwotKyAgICAgICAgICAgIHVpbnQzMl90IHN0YXRlX2ZsYWdzOyAvKiBtYXkgYmU6IFBUTV9TVEFURV9GTEFHX0VOQ1JZUFRFRCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IHRvdGxlbmd0aDsgICAvKiB0b3RhbCBsZW5ndGggdGhhdCB3aWxsIGJlIHRyYW5zZmVycmVkICovCi0rICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoOyAgICAgIC8qIG51bWJlciBvZiBieXRlcyBpbiBmb2xsb3dpbmcgYnVmZmVyICovCi0rICAgICAgICAgICAgdWludDhfdCAgZGF0YVtQVE1fU1RBVEVfQkxPQl9TSVpFXTsKLSsgICAgICAgIH0gcmVzcDsgLyogcmVzcG9uc2UgKi8KLSsgICAgfSB1OwotK307Ci0rCi0rLyogVFBNIHN0YXRlIGJsb2IgdHlwZXMgKi8KLSsjZGVmaW5lIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5UICAxCi0rI2RlZmluZSBQVE1fQkxPQl9UWVBFX1ZPTEFUSUxFICAgMgotKyNkZWZpbmUgUFRNX0JMT0JfVFlQRV9TQVZFU1RBVEUgIDMKLSsKLSsvKiBzdGF0ZV9mbGFncyBhYm92ZSA6ICovCi0rI2RlZmluZSBQVE1fU1RBVEVfRkxBR19ERUNSWVBURUQgICAgIDEgLyogb24gaW5wdXQ6ICBnZXQgZGVjcnlwdGVkIHN0YXRlICovCi0rI2RlZmluZSBQVE1fU1RBVEVfRkxBR19FTkNSWVBURUQgICAgIDIgLyogb24gb3V0cHV0OiBzdGF0ZSBpcyBlbmNyeXB0ZWQgKi8KLSsKLSsvKgotKyAqIFRoZSBmb2xsb3dpbmcgaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRvIHNldCBzdGF0ZSBibG9icyBpbiB0aGUgVFBNLgotKyAqIElmIHRoZSBzaXplIG9mIHRoZSBzdGF0ZSBibG9iIGV4Y2VlZHMgdGhlIFBUTV9TVEFURV9CTE9CX1NJWkUsIG11bHRpcGxlCi0rICogJ3dyaXRlcycgdXNpbmcgdGhpcyBpb2N0bCBhcmUgbmVjZXNzYXJ5LiBUaGUgbGFzdCBwYWNrZXQgaXMgaW5kaWNhdGVkCi0rICogYnkgdGhlIGxlbmd0aCBiZWluZyBzbWFsbGVyIHRoYW4gdGhlIFBUTV9TVEFURV9CTE9CX1NJWkUuCi0rICogVGhlIHZlcnkgZmlyc3QgcGFja2V0IG1heSBoYXZlIGEgbGVuZ3RoIGluZGljYXRvciBvZiAnMCcgZW5hYmxpbmcKLSsgKiBhIHdyaXRlKCkgd2l0aCBhbGwgdGhlIGJ5dGVzIGZyb20gYSBidWZmZXIuIElmIHRoZSB3cml0ZSgpIGludGVyZmFjZQotKyAqIGlzIHVzZWQsIGEgZmluYWwgaW9jdGwgd2l0aCBhIG5vbi1mdWxsIGJ1ZmZlciBtdXN0IGJlIG1hZGUgdG8gaW5kaWNhdGUKLSsgKiB0aGF0IGFsbCBkYXRhIHdlcmUgdHJhbnNmZXJyZWQgKGEgd3JpdGUgd2l0aCAwIGJ5dGVzIHdvdWxkIG5vdCB3b3JrKS4KLSsgKi8KLStzdHJ1Y3QgcHRtX3NldHN0YXRlIHsKLSsgICAgdW5pb24gewotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICB1aW50MzJfdCBzdGF0ZV9mbGFnczsgLyogbWF5IGJlIFBUTV9TVEFURV9GTEFHX0VOQ1JZUFRFRCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IHR5cGU7ICAgICAgICAvKiB3aGljaCBibG9iIHRvIHNldCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0aDsgICAgICAvKiBsZW5ndGggb2YgdGhlIGRhdGE7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSAwIG9uIHRoZSBmaXJzdCBwYWNrZXQgdG8KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXIgdXNpbmcgd3JpdGUoKSAqLwotKyAgICAgICAgICAgIHVpbnQ4X3QgZGF0YVtQVE1fU1RBVEVfQkxPQl9TSVpFXTsKLSsgICAgICAgIH0gcmVxOyAvKiByZXF1ZXN0ICovCi0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHB0bV9yZXMgdHBtX3Jlc3VsdDsKLSsgICAgICAgIH0gcmVzcDsgLyogcmVzcG9uc2UgKi8KLSsgICAgfSB1OwotK307Ci0rCi0rLyoKLSsgKiBQVE1fR0VUX0NPTkZJRzogRGF0YSBzdHJ1Y3R1cmUgdG8gZ2V0IHJ1bnRpbWUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbgotKyAqIHN1Y2ggYXMgd2hpY2gga2V5cyBhcmUgYXBwbGllZC4KLSsgKi8KLStzdHJ1Y3QgcHRtX2dldGNvbmZpZyB7Ci0rICAgIHVuaW9uIHsKLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgcHRtX3JlcyB0cG1fcmVzdWx0OwotKyAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzOwotKyAgICAgICAgfSByZXNwOyAvKiByZXNwb25zZSAqLwotKyAgICB9IHU7Ci0rfTsKLSsKLSsjZGVmaW5lIFBUTV9DT05GSUdfRkxBR19GSUxFX0tFWSAgICAgICAgMHgxCi0rI2RlZmluZSBQVE1fQ09ORklHX0ZMQUdfTUlHUkFUSU9OX0tFWSAgIDB4MgotKwotKwotK3R5cGVkZWYgdWludDY0X3QgcHRtX2NhcDsKLSt0eXBlZGVmIHN0cnVjdCBwdG1fZXN0IHB0bV9lc3Q7Ci0rdHlwZWRlZiBzdHJ1Y3QgcHRtX3Jlc2V0X2VzdCBwdG1fcmVzZXRfZXN0OwotK3R5cGVkZWYgc3RydWN0IHB0bV9sb2MgcHRtX2xvYzsKLSt0eXBlZGVmIHN0cnVjdCBwdG1faGRhdGEgcHRtX2hkYXRhOwotK3R5cGVkZWYgc3RydWN0IHB0bV9pbml0IHB0bV9pbml0OwotK3R5cGVkZWYgc3RydWN0IHB0bV9nZXRzdGF0ZSBwdG1fZ2V0c3RhdGU7Ci0rdHlwZWRlZiBzdHJ1Y3QgcHRtX3NldHN0YXRlIHB0bV9zZXRzdGF0ZTsKLSt0eXBlZGVmIHN0cnVjdCBwdG1fZ2V0Y29uZmlnIHB0bV9nZXRjb25maWc7Ci0rCi0rLyogY2FwYWJpbGl0eSBmbGFncyByZXR1cm5lZCBieSBQVE1fR0VUX0NBUEFCSUxJVFkgKi8KLSsjZGVmaW5lIFBUTV9DQVBfSU5JVCAgICAgICAgICAgICAgICgxKQotKyNkZWZpbmUgUFRNX0NBUF9TSFVURE9XTiAgICAgICAgICAgKDE8PDEpCi0rI2RlZmluZSBQVE1fQ0FQX0dFVF9UUE1FU1RBQkxJU0hFRCAoMTw8MikKLSsjZGVmaW5lIFBUTV9DQVBfU0VUX0xPQ0FMSVRZICAgICAgICgxPDwzKQotKyNkZWZpbmUgUFRNX0NBUF9IQVNISU5HICAgICAgICAgICAgKDE8PDQpCi0rI2RlZmluZSBQVE1fQ0FQX0NBTkNFTF9UUE1fQ01EICAgICAoMTw8NSkKLSsjZGVmaW5lIFBUTV9DQVBfU1RPUkVfVk9MQVRJTEUgICAgICgxPDw2KQotKyNkZWZpbmUgUFRNX0NBUF9SRVNFVF9UUE1FU1RBQkxJU0hFRCAoMTw8NykKLSsjZGVmaW5lIFBUTV9DQVBfR0VUX1NUQVRFQkxPQiAgICAgICgxPDw4KQotKyNkZWZpbmUgUFRNX0NBUF9TRVRfU1RBVEVCTE9CICAgICAgKDE8PDkpCi0rI2RlZmluZSBQVE1fQ0FQX1NUT1AgICAgICAgICAgICAgICAoMTw8MTApCi0rI2RlZmluZSBQVE1fQ0FQX0dFVF9DT05GSUcgICAgICAgICAoMTw8MTEpCi0rCi0rZW51bSB7Ci0rICAgIFBUTV9HRVRfQ0FQQUJJTElUWSAgICAgPSBfSU9SKCdQJywgMCwgcHRtX2NhcCksCi0rICAgIFBUTV9JTklUICAgICAgICAgICAgICAgPSBfSU9XUignUCcsIDEsIHB0bV9pbml0KSwKLSsgICAgUFRNX1NIVVRET1dOICAgICAgICAgICA9IF9JT1IoJ1AnLCAyLCBwdG1fcmVzKSwKLSsgICAgUFRNX0dFVF9UUE1FU1RBQkxJU0hFRCA9IF9JT1IoJ1AnLCAzLCBwdG1fZXN0KSwKLSsgICAgUFRNX1NFVF9MT0NBTElUWSAgICAgICA9IF9JT1dSKCdQJywgNCwgcHRtX2xvYyksCi0rICAgIFBUTV9IQVNIX1NUQVJUICAgICAgICAgPSBfSU9SKCdQJywgNSwgcHRtX3JlcyksCi0rICAgIFBUTV9IQVNIX0RBVEEgICAgICAgICAgPSBfSU9XUignUCcsIDYsIHB0bV9oZGF0YSksCi0rICAgIFBUTV9IQVNIX0VORCAgICAgICAgICAgPSBfSU9SKCdQJywgNywgcHRtX3JlcyksCi0rICAgIFBUTV9DQU5DRUxfVFBNX0NNRCAgICAgPSBfSU9SKCdQJywgOCwgcHRtX3JlcyksCi0rICAgIFBUTV9TVE9SRV9WT0xBVElMRSAgICAgPSBfSU9SKCdQJywgOSwgcHRtX3JlcyksCi0rICAgIFBUTV9SRVNFVF9UUE1FU1RBQkxJU0hFRCA9IF9JT1dSKCdQJywgMTAsIHB0bV9yZXNldF9lc3QpLAotKyAgICBQVE1fR0VUX1NUQVRFQkxPQiAgICAgID0gX0lPV1IoJ1AnLCAxMSwgcHRtX2dldHN0YXRlKSwKLSsgICAgUFRNX1NFVF9TVEFURUJMT0IgICAgICA9IF9JT1dSKCdQJywgMTIsIHB0bV9zZXRzdGF0ZSksCi0rICAgIFBUTV9TVE9QICAgICAgICAgICAgICAgPSBfSU9SKCdQJywgMTMsIHB0bV9yZXMpLAotKyAgICBQVE1fR0VUX0NPTkZJRyAgICAgICAgID0gX0lPUignUCcsIDE0LCBwdG1fZ2V0Y29uZmlnKSwKLSt9OwotKwotKyNlbmRpZiAvKiBfVFBNX0lPQ1RMX0ggKi8KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMgYi9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMKLWluZGV4IGU4OGMwZDIwYmMuLjA1MGYyYmE4NTAgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMKLSsrKyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotQEAgLTMzLDYgKzMzLDcgQEAKLSAjaW5jbHVkZSAic3lzZW11L3RwbV9iYWNrZW5kX2ludC5oIgotICNpbmNsdWRlICJ0cG1fdGlzLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0rI2luY2x1ZGUgInRwbV9pb2N0bC5oIgotIAotICNkZWZpbmUgREVCVUdfVFBNIDAKLSAKLUBAIC00NSw2ICs0Niw3IEBACi0gI2RlZmluZSBUWVBFX1RQTV9QQVNTVEhST1VHSCAidHBtLXBhc3N0aHJvdWdoIgotICNkZWZpbmUgVFBNX1BBU1NUSFJPVUdIKG9iaikgXAotICAgICBPQkpFQ1RfQ0hFQ0soVFBNUGFzc3RocnVTdGF0ZSwgKG9iaiksIFRZUEVfVFBNX1BBU1NUSFJPVUdIKQotKyNkZWZpbmUgVFlQRV9UUE1fQ1VTRSAidHBtLWN1c2UiCi0gCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fcGFzc3Rocm91Z2hfZHJpdmVyOwotIAotQEAgLTcxLDEyICs3MywxOCBAQCBzdHJ1Y3QgVFBNUGFzc3RocnVTdGF0ZSB7Ci0gICAgIGJvb2wgaGFkX3N0YXJ0dXBfZXJyb3I7Ci0gCi0gICAgIFRQTVZlcnNpb24gdHBtX3ZlcnNpb247Ci0rICAgIHB0bV9jYXAgY3VzZV9jYXA7IC8qIGNhcGFiaWxpdGllcyBvZiB0aGUgQ1VTRSBUUE0gKi8KLSsgICAgdWludDhfdCBjdXJfbG9jdHlfbnVtYmVyOyAvKiBsYXN0IHNldCBsb2NhbGl0eSAqLwotIH07Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgVFBNUGFzc3RocnVTdGF0ZSBUUE1QYXNzdGhydVN0YXRlOwotIAotICNkZWZpbmUgVFBNX1BBU1NUSFJPVUdIX0RFRkFVTFRfREVWSUNFICIvZGV2L3RwbTAiCi0gCi0rI2RlZmluZSBUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpICh0cG1fcHQtPmN1c2VfY2FwICE9IDApCi0rCi0rI2RlZmluZSBUUE1fQ1VTRV9JTVBMRU1FTlRTX0FMTChTLCBjYXApICgoKFMpLT5jdXNlX2NhcCAmIChjYXApKSA9PSAoY2FwKSkKLSsKLSAvKiBmdW5jdGlvbnMgKi8KLSAKLSBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfY2FuY2VsX2NtZChUUE1CYWNrZW5kICp0Yik7Ci1AQCAtMTQ4LDcgKzE1NiwyOCBAQCBzdGF0aWMgYm9vbCB0cG1fcGFzc3Rocm91Z2hfaXNfc2VsZnRlc3QoY29uc3QgdWludDhfdCAqaW4sIHVpbnQzMl90IGluX2xlbikKLSAgICAgcmV0dXJuIGZhbHNlOwotIH0KLSAKLStzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9zZXRfbG9jYWxpdHkoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGxvY3R5X251bWJlcikKLSt7Ci0rICAgIHB0bV9sb2MgbG9jOwotKwotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgaWYgKHRwbV9wdC0+Y3VyX2xvY3R5X251bWJlciAhPSBsb2N0eV9udW1iZXIpIHsKLSsgICAgICAgICAgICBsb2MudS5yZXEubG9jID0gbG9jdHlfbnVtYmVyOwotKyAgICAgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX1NFVF9MT0NBTElUWSwgJmxvYykgPCAwKSB7Ci0rICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IGNvdWxkIG5vdCBzZXQgbG9jYWxpdHkgb24gIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNVU0UgVFBNOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIHRwbV9wdC0+Y3VyX2xvY3R5X251bWJlciA9IGxvY3R5X251bWJlcjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfdW5peF90eF9idWZzKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBsb2NhbGl0eV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50MzJfdCBpbl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dCwgdWludDMyX3Qgb3V0X2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqc2VsZnRlc3RfZG9uZSkKLUBAIC0xNTcsNiArMTg2LDExIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3VuaXhfdHhfYnVmcyhUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQsCi0gICAgIGJvb2wgaXNfc2VsZnRlc3Q7Ci0gICAgIGNvbnN0IHN0cnVjdCB0cG1fcmVzcF9oZHIgKmhkcjsKLSAKLSsgICAgcmV0ID0gdHBtX3Bhc3N0aHJvdWdoX3NldF9sb2NhbGl0eSh0cG1fcHQsIGxvY2FsaXR5X251bWJlcik7Ci0rICAgIGlmIChyZXQgPCAwKSB7Ci0rICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICB9Ci0rCi0gICAgIHRwbV9wdC0+dHBtX29wX2NhbmNlbGVkID0gZmFsc2U7Ci0gICAgIHRwbV9wdC0+dHBtX2V4ZWN1dGluZyA9IHRydWU7Ci0gICAgICpzZWxmdGVzdF9kb25lID0gZmFsc2U7Ci1AQCAtMjA3LDEwICsyNDEsMTIgQEAgZXJyX2V4aXQ6Ci0gfQotIAotIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3VuaXhfdHJhbnNmZXIoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBsb2NhbGl0eV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUUE1Mb2NhbGl0eSAqbG9jdHlfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKnNlbGZ0ZXN0X2RvbmUpCi0gewotICAgICByZXR1cm4gdHBtX3Bhc3N0aHJvdWdoX3VuaXhfdHhfYnVmcyh0cG1fcHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsaXR5X251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jdHlfZGF0YS0+d19idWZmZXIuYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2N0eV9kYXRhLT53X29mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jdHlfZGF0YS0+cl9idWZmZXIuYnVmZmVyLAotQEAgLTIzMSw2ICsyNjcsNyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfd29ya2VyX3RocmVhZChncG9pbnRlciBkYXRhLAotICAgICBzd2l0Y2ggKGNtZCkgewotICAgICBjYXNlIFRQTV9CQUNLRU5EX0NNRF9QUk9DRVNTX0NNRDoKLSAgICAgICAgIHRwbV9wYXNzdGhyb3VnaF91bml4X3RyYW5zZmVyKHRwbV9wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocl9wYXJtcy0+dHBtX3N0YXRlLT5sb2N0eV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJfcGFybXMtPnRwbV9zdGF0ZS0+bG9jdHlfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmdGVzdF9kb25lKTsKLSAKLUBAIC0yNDcsNiArMjg0LDkzIEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF93b3JrZXJfdGhyZWFkKGdwb2ludGVyIGRhdGEsCi0gfQotIAotIC8qCi0rICogR3JhY2VmdWxseSBzaHV0IGRvd24gdGhlIGV4dGVybmFsIENVU0UgVFBNCi0rICovCi0rc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX3NodXRkb3duKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLSt7Ci0rICAgIHB0bV9yZXMgcmVzOwotKwotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fU0hVVERPV04sICZyZXMpIDwgMCkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IENvdWxkIG5vdCBjbGVhbmx5IHNodXQgZG93biAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgQ1VTRSBUUE06ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIH0KLSsgICAgfQotK30KLSsKLSsvKgotKyAqIFByb2JlIGZvciB0aGUgQ1VTRSBUUE0gYnkgc2VuZGluZyBhbiBpb2N0bCgpIHJlcXVlc3RpbmcgaXRzCi0rICogY2FwYWJpbGl0eSBmbGFncy4KLSsgKi8KLStzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9jdXNlX3Byb2JlKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLSt7Ci0rICAgIGludCByYyA9IDA7Ci0rCi0rICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0dFVF9DQVBBQklMSVRZLCAmdHBtX3B0LT5jdXNlX2NhcCkgPCAwKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoIkVycm9yOiBDVVNFIFRQTSB3YXMgcmVxdWVzdGVkLCBidXQgcHJvYmluZyBmYWlsZWQiKTsKLSsgICAgICAgIHJjID0gLTE7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIHJjOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9jdXNlX2NoZWNrX2NhcHMoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotK3sKLSsgICAgaW50IHJjID0gMDsKLSsgICAgcHRtX2NhcCBjYXBzID0gMDsKLSsgICAgY29uc3QgY2hhciAqdHBtID0gTlVMTDsKLSsKLSsgICAgLyogY2hlY2sgZm9yIG1pbi4gcmVxdWlyZWQgY2FwYWJpbGl0aWVzICovCi0rICAgIHN3aXRjaCAodHBtX3B0LT50cG1fdmVyc2lvbikgewotKyAgICBjYXNlIFRQTV9WRVJTSU9OXzFfMjoKLSsgICAgICAgIGNhcHMgPSBQVE1fQ0FQX0lOSVQgfCBQVE1fQ0FQX1NIVVRET1dOIHwgUFRNX0NBUF9HRVRfVFBNRVNUQUJMSVNIRUQgfAotKyAgICAgICAgICAgICAgIFBUTV9DQVBfU0VUX0xPQ0FMSVRZOwotKyAgICAgICAgdHBtID0gIjEuMiI7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBUUE1fVkVSU0lPTl8yXzA6Ci0rICAgICAgICBjYXBzID0gUFRNX0NBUF9JTklUIHwgUFRNX0NBUF9TSFVURE9XTiB8IFBUTV9DQVBfR0VUX1RQTUVTVEFCTElTSEVEIHwKLSsgICAgICAgICAgICAgICBQVE1fQ0FQX1NFVF9MT0NBTElUWSB8IFBUTV9DQVBfUkVTRVRfVFBNRVNUQUJMSVNIRUQ7Ci0rICAgICAgICB0cG0gPSAiMiI7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBUUE1fVkVSU0lPTl9VTlNQRUM6Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoInRwbV9jdXNlOiAlczogVFBNIHZlcnNpb24gaGFzIG5vdCBiZWVuIHNldCIsCi0rICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18pOwotKyAgICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rCi0rICAgIGlmICghVFBNX0NVU0VfSU1QTEVNRU5UU19BTEwodHBtX3B0LCBjYXBzKSkgewotKyAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fY3VzZTogVFBNIGRvZXMgbm90IGltcGxlbWVudCBtaW5pbXVtIHNldCBvZiByZXF1aXJlZCAiCi0rICAgICAgICAgICAgICAgICAgICAgImNhcGFiaWxpdGllcyBmb3IgVFBNICVzICgweCV4KSIsIHRwbSwgKGludCljYXBzKTsKLSsgICAgICAgIHJjID0gLTE7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIHJjOwotK30KLSsKLSsvKgotKyAqIEluaXRpYWxpemUgdGhlIGV4dGVybmFsIENVU0UgVFBNCi0rICovCi0rc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLSt7Ci0rICAgIGludCByYyA9IDA7Ci0rICAgIHB0bV9pbml0IGluaXQgPSB7Ci0rICAgICAgICAudS5yZXEuaW5pdF9mbGFncyA9IFBUTV9JTklUX0ZMQUdfREVMRVRFX1ZPTEFUSUxFLAotKyAgICB9OwotKwotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fSU5JVCwgJmluaXQpIDwgMCkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IERldGVjdGVkIENVU0UgVFBNIGJ1dCBjb3VsZCBub3QgIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZCBJTklUOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgcmMgPSAtMTsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICByZXR1cm4gcmM7Ci0rfQotKwotKy8qCi0gICogU3RhcnQgdGhlIFRQTSAodGhyZWFkKS4gSWYgaXQgaGFkIGJlZW4gc3RhcnRlZCBiZWZvcmUsIHRoZW4gdGVybWluYXRlCi0gICogYW5kIHN0YXJ0IGl0IGFnYWluLgotICAqLwotQEAgLTI2MSw2ICszODUsOCBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9zdGFydHVwX3RwbShUUE1CYWNrZW5kICp0YikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fcGFzc3Rocm91Z2hfd29ya2VyX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX3B0LT50cG1fdGhyZWFkX3BhcmFtcyk7Ci0gCi0rICAgIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0KTsKLSsKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTI5MSwxNCArNDE3LDQzIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2luaXQoVFBNQmFja2VuZCAqdGIsIFRQTVN0YXRlICpzLAotIAotIHN0YXRpYyBib29sIHRwbV9wYXNzdGhyb3VnaF9nZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcoVFBNQmFja2VuZCAqdGIpCi0gewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotKyAgICBwdG1fZXN0IGVzdDsKLSsKLSsgICAgaWYgKFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpIHsKLSsgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0dFVF9UUE1FU1RBQkxJU0hFRCwgJmVzdCkgPCAwKSB7Ci0rICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fY3VzZTogQ291bGQgbm90IGdldCB0aGUgVFBNIGVzdGFibGlzaGVkICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWcgZnJvbSB0aGUgQ1VTRSBUUE06ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gKGVzdC51LnJlc3AuYml0ICE9IDApOwotKyAgICB9Ci0gICAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfcmVzZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcoVFBNQmFja2VuZCAqdGIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBsb2N0eSkKLSB7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0rICAgIGludCByYyA9IDA7Ci0rICAgIHB0bV9yZXNldF9lc3QgcHRtcmVzZXRfZXN0OwotKwotICAgICAvKiBvbmx5IGEgVFBNIDIuMCB3aWxsIHN1cHBvcnQgdGhpcyAqLwotLSAgICByZXR1cm4gMDsKLSsgICAgaWYgKHRwbV9wdC0+dHBtX3ZlcnNpb24gPT0gVFBNX1ZFUlNJT05fMl8wKSB7Ci0rICAgICAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgICAgIHB0bXJlc2V0X2VzdC51LnJlcS5sb2MgPSB0cG1fcHQtPmN1cl9sb2N0eV9udW1iZXI7Ci0rCi0rICAgICAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fUkVTRVRfVFBNRVNUQUJMSVNIRUQsCi0rICAgICAgICAgICAgICAgICAgICAgICZwdG1yZXNldF9lc3QpIDwgMCkgewotKyAgICAgICAgICAgICAgICBlcnJvcl9yZXBvcnQoInRwbV9jdXNlOiBDb3VsZCBub3QgcmVzZXQgdGhlIGVzdGFibGlzaG1lbnQgYml0ICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgICAgIHJjID0gLTE7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIHJldHVybiByYzsKLSB9Ci0gCi0gc3RhdGljIGJvb2wgdHBtX3Bhc3N0aHJvdWdoX2dldF9zdGFydHVwX2Vycm9yKFRQTUJhY2tlbmQgKnRiKQotQEAgLTMyOSw3ICs0ODQsOCBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRiKQotIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9jYW5jZWxfY21kKFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLS0gICAgaW50IG47Ci0rICAgIHB0bV9yZXMgcmVzOwotKyAgICBzdGF0aWMgYm9vbCBlcnJvcl9wcmludGVkOwotIAotICAgICAvKgotICAgICAgKiBBcyBvZiBMaW51eCAzLjcgdGhlIHRwbV90aXMgZHJpdmVyIGRvZXMgbm90IHByb3Blcmx5IGNhbmNlbAotQEAgLTMzOCwxNyArNDk0LDM0IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9jYW5jZWxfY21kKFRQTUJhY2tlbmQgKnRiKQotICAgICAgKiBjb21tYW5kLCBlLmcuLCBhIGNvbW1hbmQgZXhlY3V0ZWQgb24gdGhlIGhvc3QuCi0gICAgICAqLwotICAgICBpZiAodHBtX3B0LT50cG1fZXhlY3V0aW5nKSB7Ci0tICAgICAgICBpZiAodHBtX3B0LT5jYW5jZWxfZmQgPj0gMCkgewotLSAgICAgICAgICAgIG4gPSB3cml0ZSh0cG1fcHQtPmNhbmNlbF9mZCwgIi0iLCAxKTsKLS0gICAgICAgICAgICBpZiAobiAhPSAxKSB7Ci0tICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ2FuY2VsaW5nIFRQTSBjb21tYW5kIGZhaWxlZDogJXMiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLS0gICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICB0cG1fcHQtPnRwbV9vcF9jYW5jZWxlZCA9IHRydWU7Ci0rICAgICAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgICAgIGlmIChUUE1fQ1VTRV9JTVBMRU1FTlRTX0FMTCh0cG1fcHQsIFBUTV9DQVBfQ0FOQ0VMX1RQTV9DTUQpKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0NBTkNFTF9UUE1fQ01ELCAmcmVzKSA8IDApIHsKLSsgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IENvdWxkIG5vdCBjYW5jZWwgY29tbWFuZCBvbiAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNVU0UgVFBNOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgIT0gVFBNX1NVQ0NFU1MpIHsKLSsgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3JfcHJpbnRlZCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiVFBNIGVycm9yIGNvZGUgZnJvbSBjb21tYW5kICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbmNlbGxhdGlvbiBvZiBDVVNFIFRQTTogMHgleCIsIHJlcyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfcHJpbnRlZCA9IHRydWU7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICB0cG1fcHQtPnRwbV9vcF9jYW5jZWxlZCA9IHRydWU7Ci0rICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ2Fubm90IGNhbmNlbCBUUE0gY29tbWFuZCBkdWUgdG8gbWlzc2luZyAiCi0tICAgICAgICAgICAgICAgICAgICAgICAgICJUUE0gc3lzZnMgY2FuY2VsIGVudHJ5Iik7Ci0rICAgICAgICAgICAgaWYgKHRwbV9wdC0+Y2FuY2VsX2ZkID49IDApIHsKLSsgICAgICAgICAgICAgICAgaWYgKHdyaXRlKHRwbV9wdC0+Y2FuY2VsX2ZkLCAiLSIsIDEpICE9IDEpIHsKLSsgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ2FuY2VsaW5nIFRQTSBjb21tYW5kIGZhaWxlZDogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICB0cG1fcHQtPnRwbV9vcF9jYW5jZWxlZCA9IHRydWU7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICBlcnJvcl9yZXBvcnQoIkNhbm5vdCBjYW5jZWwgVFBNIGNvbW1hbmQgZHVlIHRvIG1pc3NpbmcgIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRQTSBzeXNmcyBjYW5jZWwgZW50cnkiKTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgIH0KLSB9Ci1AQCAtMzc4LDYgKzU1MSwxMSBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9vcGVuX3N5c2ZzX2NhbmNlbChUUE1CYWNrZW5kICp0YikKLSAgICAgY2hhciAqZGV2OwotICAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwotIAotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgLyogbm90IG5lZWRlZCwgYnV0IHNvIHdlIGhhdmUgYSBmZCAqLwotKyAgICAgICAgcmV0dXJuIHFlbXVfb3BlbigiL2Rldi9udWxsIiwgT19XUk9OTFkpOwotKyAgICB9Ci0rCi0gICAgIGlmICh0Yi0+Y2FuY2VsX3BhdGgpIHsKLSAgICAgICAgIGZkID0gcWVtdV9vcGVuKHRiLT5jYW5jZWxfcGF0aCwgT19XUk9OTFkpOwotICAgICAgICAgaWYgKGZkIDwgMCkgewotQEAgLTQxMiwxMiArNTkwLDIyIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gewotICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotICAgICBjb25zdCBjaGFyICp2YWx1ZTsKLSsgICAgYm9vbCBoYXZlX2N1c2UgPSBmYWxzZTsKLSsKLSsgICAgdmFsdWUgPSBxZW11X29wdF9nZXQob3B0cywgInR5cGUiKTsKLSsgICAgaWYgKHZhbHVlICE9IE5VTEwgJiYgIXN0cmNtcCgiY3VzZS10cG0iLCB2YWx1ZSkpIHsKLSsgICAgICAgIGhhdmVfY3VzZSA9IHRydWU7Ci0rICAgIH0KLSAKLSAgICAgdmFsdWUgPSBxZW11X29wdF9nZXQob3B0cywgImNhbmNlbC1wYXRoIik7Ci0gICAgIHRiLT5jYW5jZWxfcGF0aCA9IGdfc3RyZHVwKHZhbHVlKTsKLSAKLSAgICAgdmFsdWUgPSBxZW11X29wdF9nZXQob3B0cywgInBhdGgiKTsKLSAgICAgaWYgKCF2YWx1ZSkgewotKyAgICAgICAgaWYgKGhhdmVfY3VzZSkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiTWlzc2luZyBwYXRoIHRvIGFjY2VzcyBDVVNFIFRQTSIpOwotKyAgICAgICAgICAgIGdvdG8gZXJyX2ZyZWVfcGFyYW1ldGVyczsKLSsgICAgICAgIH0KLSAgICAgICAgIHZhbHVlID0gVFBNX1BBU1NUSFJPVUdIX0RFRkFVTFRfREVWSUNFOwotICAgICB9Ci0gCi1AQCAtNDMyLDE1ICs2MjAsMzYgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKLSAgICAgICAgIGdvdG8gZXJyX2ZyZWVfcGFyYW1ldGVyczsKLSAgICAgfQotIAotKyAgICB0cG1fcHQtPmN1cl9sb2N0eV9udW1iZXIgPSB+MDsKLSsKLSsgICAgaWYgKGhhdmVfY3VzZSkgewotKyAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX3Byb2JlKHRwbV9wdCkpIHsKLSsgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7Ci0rICAgICAgICB9Ci0rICAgICAgICAvKiBpbml0IFRQTSBmb3IgcHJvYmluZyAqLwotKyAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0KSkgewotKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlX3RwbWRldjsKLSsgICAgICAgIH0KLSsgICAgfQotKwotICAgICBpZiAodHBtX3V0aWxfdGVzdF90cG1kZXYodHBtX3B0LT50cG1fZmQsICZ0cG1fcHQtPnRwbV92ZXJzaW9uKSkgewotICAgICAgICAgZXJyb3JfcmVwb3J0KCInJXMnIGlzIG5vdCBhIFRQTSBkZXZpY2UuIiwKLSAgICAgICAgICAgICAgICAgICAgICB0cG1fcHQtPnRwbV9kZXYpOwotICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICB9Ci0gCi0rICAgIGlmIChoYXZlX2N1c2UpIHsKLSsgICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9jaGVja19jYXBzKHRwbV9wdCkpIHsKLSsgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsKLSAgICAgcmV0dXJuIDA7Ci0gCi0gIGVycl9jbG9zZV90cG1kZXY6Ci0rICAgIHRwbV9wYXNzdGhyb3VnaF9zaHV0ZG93bih0cG1fcHQpOwotKwotICAgICBxZW11X2Nsb3NlKHRwbV9wdC0+dHBtX2ZkKTsKLSAgICAgdHBtX3B0LT50cG1fZmQgPSAtMTsKLSAKLUBAIC00OTEsNiArNzAwLDggQEAgc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2Rlc3Ryb3koVFBNQmFja2VuZCAqdGIpCi0gCi0gICAgIHRwbV9iYWNrZW5kX3RocmVhZF9lbmQoJnRwbV9wdC0+dGJ0KTsKLSAKLSsgICAgdHBtX3Bhc3N0aHJvdWdoX3NodXRkb3duKHRwbV9wdCk7Ci0rCi0gICAgIHFlbXVfY2xvc2UodHBtX3B0LT50cG1fZmQpOwotICAgICBxZW11X2Nsb3NlKHRwbV9wdC0+Y2FuY2VsX2ZkKTsKLSAKLUBAIC01NjQsMyArNzc1LDQ0IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9yZWdpc3Rlcih2b2lkKQotIH0KLSAKLSB0eXBlX2luaXQodHBtX3Bhc3N0aHJvdWdoX3JlZ2lzdGVyKQotKwotKy8qIENVU0UgVFBNICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKnRwbV9wYXNzdGhyb3VnaF9jdXNlX2NyZWF0ZV9kZXNjKHZvaWQpCi0rewotKyAgICByZXR1cm4gIkNVU0UgVFBNIGJhY2tlbmQgZHJpdmVyIjsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fY3VzZV9kcml2ZXIgPSB7Ci0rICAgIC50eXBlICAgICAgICAgICAgICAgICAgICAgPSBUUE1fVFlQRV9DVVNFX1RQTSwKLSsgICAgLm9wdHMgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jbWRsaW5lX29wdHMsCi0rICAgIC5kZXNjICAgICAgICAgICAgICAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfY3VzZV9jcmVhdGVfZGVzYywKLSsgICAgLmNyZWF0ZSAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jcmVhdGUsCi0rICAgIC5kZXN0cm95ICAgICAgICAgICAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfZGVzdHJveSwKLSsgICAgLmluaXQgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9pbml0LAotKyAgICAuc3RhcnR1cF90cG0gICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX3N0YXJ0dXBfdHBtLAotKyAgICAucmVhbGxvY19idWZmZXIgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX3JlYWxsb2NfYnVmZmVyLAotKyAgICAucmVzZXQgICAgICAgICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0LAotKyAgICAuaGFkX3N0YXJ0dXBfZXJyb3IgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2dldF9zdGFydHVwX2Vycm9yLAotKyAgICAuZGVsaXZlcl9yZXF1ZXN0ICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2RlbGl2ZXJfcmVxdWVzdCwKLSsgICAgLmNhbmNlbF9jbWQgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jYW5jZWxfY21kLAotKyAgICAuZ2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnID0gdHBtX3Bhc3N0aHJvdWdoX2dldF90cG1fZXN0YWJsaXNoZWRfZmxhZywKLSsgICAgLnJlc2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnID0gdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnLAotKyAgICAuZ2V0X3RwbV92ZXJzaW9uICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2dldF90cG1fdmVyc2lvbiwKLSt9OwotKwotK3N0YXRpYyBjb25zdCBUeXBlSW5mbyB0cG1fY3VzZV9pbmZvID0gewotKyAgICAubmFtZSA9IFRZUEVfVFBNX0NVU0UsCi0rICAgIC5wYXJlbnQgPSBUWVBFX1RQTV9CQUNLRU5ELAotKyAgICAuaW5zdGFuY2Vfc2l6ZSA9IHNpemVvZihUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgLmNsYXNzX2luaXQgPSB0cG1fcGFzc3Rocm91Z2hfY2xhc3NfaW5pdCwKLSsgICAgLmluc3RhbmNlX2luaXQgPSB0cG1fcGFzc3Rocm91Z2hfaW5zdF9pbml0LAotKyAgICAuaW5zdGFuY2VfZmluYWxpemUgPSB0cG1fcGFzc3Rocm91Z2hfaW5zdF9maW5hbGl6ZSwKLSt9OwotKwotK3N0YXRpYyB2b2lkIHRwbV9jdXNlX3JlZ2lzdGVyKHZvaWQpCi0rewotKyAgICB0eXBlX3JlZ2lzdGVyX3N0YXRpYygmdHBtX2N1c2VfaW5mbyk7Ci0rICAgIHRwbV9yZWdpc3Rlcl9kcml2ZXIoJnRwbV9jdXNlX2RyaXZlcik7Ci0rfQotKwotK3R5cGVfaW5pdCh0cG1fY3VzZV9yZWdpc3RlcikKLWRpZmYgLS1naXQgYS9xYXBpLXNjaGVtYS5qc29uIGIvcWFwaS1zY2hlbWEuanNvbgotaW5kZXggNTY1ODcyM2IzNy4uNTMxMjBkMGY2MyAxMDA2NDQKLS0tLSBhL3FhcGktc2NoZW1hLmpzb24KLSsrKyBiL3FhcGktc2NoZW1hLmpzb24KLUBAIC0zNTIyLDEwICszNTIyLDEyIEBACi0gIyBBbiBlbnVtZXJhdGlvbiBvZiBUUE0gdHlwZXMKLSAjCi0gIyBAcGFzc3Rocm91Z2g6IFRQTSBwYXNzdGhyb3VnaCB0eXBlCi0rIyBAY3VzZS10cG06IENVU0UgVFBNIHR5cGUKLSsjICAgICAgICAgICAgU2luY2U6IDIuNgotICMKLSAjIFNpbmNlOiAxLjUKLSAjIwotLXsgJ2VudW0nOiAnVHBtVHlwZScsICdkYXRhJzogWyAncGFzc3Rocm91Z2gnIF0gfQotK3sgJ2VudW0nOiAnVHBtVHlwZScsICdkYXRhJzogWyAncGFzc3Rocm91Z2gnLCAnY3VzZS10cG0nIF0gfQotIAotICMjCi0gIyBAcXVlcnktdHBtLXR5cGVzOgotQEAgLTM1NTQsNiArMzU1NiwxNyBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqY2FuY2VsLXBhdGgnIDogJ3N0cid9IH0KLSAKLSAjIwotKyMgQFRQTUN1c2VPcHRpb25zOgotKyMKLSsjIEluZm9ybWF0aW9uIGFib3V0IHRoZSBDVVNFIFRQTSB0eXBlCi0rIwotKyMgQHBhdGg6IHN0cmluZyBkZXNjcmliaW5nIHRoZSBwYXRoIHVzZWQgZm9yIGFjY2Vzc2luZyB0aGUgVFBNIGRldmljZQotKyMKLSsjIFNpbmNlOiAyLjYKLSsjIwotK3sgJ3N0cnVjdCc6ICdUUE1DdXNlT3B0aW9ucycsICdkYXRhJzogeyAncGF0aCcgOiAnc3RyJ319Ci0rCi0rIyMKLSAjIEBUcG1UeXBlT3B0aW9uczoKLSAjCi0gIyBBIHVuaW9uIHJlZmVyZW5jaW5nIGRpZmZlcmVudCBUUE0gYmFja2VuZCB0eXBlcycgY29uZmlndXJhdGlvbiBvcHRpb25zCi1AQCAtMzU2Myw3ICszNTc2LDggQEAKLSAjIFNpbmNlOiAxLjUKLSAjIwotIHsgJ3VuaW9uJzogJ1RwbVR5cGVPcHRpb25zJywKLS0gICAnZGF0YSc6IHsgJ3Bhc3N0aHJvdWdoJyA6ICdUUE1QYXNzdGhyb3VnaE9wdGlvbnMnIH0gfQotKyAgICdkYXRhJzogeyAncGFzc3Rocm91Z2gnIDogJ1RQTVBhc3N0aHJvdWdoT3B0aW9ucycsCi0rICAgICAgICAgICAgICdjdXNlLXRwbScgOiAnVFBNQ3VzZU9wdGlvbnMnIH0gfQotIAotICMjCi0gIyBAVHBtSW5mbzoKLWRpZmYgLS1naXQgYS9xZW11LW9wdGlvbnMuaHggYi9xZW11LW9wdGlvbnMuaHgKLWluZGV4IGE3MWFhZjhlYTguLmUwZjFkOGU2NzYgMTAwNjQ0Ci0tLS0gYS9xZW11LW9wdGlvbnMuaHgKLSsrKyBiL3FlbXUtb3B0aW9ucy5oeAotQEAgLTI3NjMsNyArMjc2MywxMCBAQCBERUYoInRwbWRldiIsIEhBU19BUkcsIFFFTVVfT1BUSU9OX3RwbWRldiwgXAotICAgICAiLXRwbWRldiBwYXNzdGhyb3VnaCxpZD1pZFsscGF0aD1wYXRoXVssY2FuY2VsLXBhdGg9cGF0aF1cbiIKLSAgICAgIiAgICAgICAgICAgICAgICB1c2UgcGF0aCB0byBwcm92aWRlIHBhdGggdG8gYSBjaGFyYWN0ZXIgZGV2aWNlOyBkZWZhdWx0IGlzIC9kZXYvdHBtMFxuIgotICAgICAiICAgICAgICAgICAgICAgIHVzZSBjYW5jZWwtcGF0aCB0byBwcm92aWRlIHBhdGggdG8gVFBNJ3MgY2FuY2VsIHN5c2ZzIGVudHJ5OyBpZlxuIgotLSAgICAiICAgICAgICAgICAgICAgIG5vdCBwcm92aWRlZCBpdCB3aWxsIGJlIHNlYXJjaGVkIGZvciBpbiAvc3lzL2NsYXNzL21pc2MvdHBtPy9kZXZpY2VcbiIsCi0rICAgICIgICAgICAgICAgICAgICAgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgc2VhcmNoZWQgZm9yIGluIC9zeXMvY2xhc3MvbWlzYy90cG0/L2RldmljZVxuIgotKyAgICAiLXRwbWRldiBjdXNlLXRwbSxpZD1pZCxwYXRoPXBhdGhcbiIKLSsgICAgIiAgICAgICAgICAgICAgICB1c2UgcGF0aCB0byBwcm92aWRlIHBhdGggdG8gYSBjaGFyYWN0ZXIgZGV2aWNlIHRvIHRhbGsgdG8gdGhlXG4iCi0rICAgICIgICAgICAgICAgICAgICAgVFBNIGVtdWxhdG9yIHByb3ZpZGluZyBhIENVU0UgaW50ZXJmYWNlXG4iLAotICAgICBRRU1VX0FSQ0hfQUxMKQotIFNURVhJCi0gCi1AQCAtMjc3Miw4ICsyNzc1LDggQEAgVGhlIGdlbmVyYWwgZm9ybSBvZiBhIFRQTSBkZXZpY2Ugb3B0aW9uIGlzOgotIAotIEBpdGVtIC10cG1kZXYgQHZhcntiYWNrZW5kfSAsaWQ9QHZhcntpZH0gWyxAdmFye29wdGlvbnN9XQotIEBmaW5kZXggLXRwbWRldgotLUJhY2tlbmQgdHlwZSBtdXN0IGJlOgotLUBvcHRpb257cGFzc3Rocm91Z2h9LgotK0JhY2tlbmQgdHlwZSBtdXN0IGJlIGVpdGhlciBvbmUgb2YgdGhlIGZvbGxvd2luZzoKLStAb3B0aW9ue3Bhc3N0aHJvdWdofSwgQG9wdGlvbntjdXNlLXRwbX0uCi0gCi0gVGhlIHNwZWNpZmljIGJhY2tlbmQgdHlwZSB3aWxsIGRldGVybWluZSB0aGUgYXBwbGljYWJsZSBvcHRpb25zLgotIFRoZSBAY29kZXstdHBtZGV2fSBvcHRpb24gY3JlYXRlcyB0aGUgVFBNIGJhY2tlbmQgYW5kIHJlcXVpcmVzIGEKLUBAIC0yODIzLDYgKzI4MjYsMTggQEAgVG8gY3JlYXRlIGEgcGFzc3Rocm91Z2ggVFBNIHVzZSB0aGUgZm9sbG93aW5nIHR3byBvcHRpb25zOgotIE5vdGUgdGhhdCB0aGUgQGNvZGV7LXRwbWRldn0gaWQgaXMgQGNvZGV7dHBtMH0gYW5kIGlzIHJlZmVyZW5jZWQgYnkKLSBAY29kZXt0cG1kZXY9dHBtMH0gaW4gdGhlIGRldmljZSBvcHRpb24uCi0gCi0rQGl0ZW0gLXRwbWRldiBjdXNlLXRwbSwgaWQ9QHZhcntpZH0sIHBhdGg9QHZhcntwYXRofQotKwotKyhMaW51eC1ob3N0IG9ubHkpIEVuYWJsZSBhY2Nlc3MgdG8gYSBUUE0gZW11bGF0b3Igd2l0aCBhIENVU0UgaW50ZXJmYWNlLgotKwotK0BvcHRpb257cGF0aH0gc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBDVVNFIFRQTSBjaGFyYWN0ZXIgZGV2aWNlLgotKwotK1RvIGNyZWF0ZSBhIGJhY2tlbmQgZGV2aWNlIGFjY2Vzc2luZyB0aGUgQ1VTRSBUUE0gZW11bGF0b3IgdXNpbmcgL2Rldi92dHBtCi0rdXNlIHRoZSBmb2xsb3dpbmcgdHdvIG9wdGlvbnM6Ci0rQGV4YW1wbGUKLSstdHBtZGV2IGN1c2UtdHBtLGlkPXRwbTAscGF0aD0vZGV2L3Z0cG0gLWRldmljZSB0cG0tdGlzLHRwbWRldj10cG0wCi0rQGVuZCBleGFtcGxlCi0rCi0gQGVuZCB0YWJsZQotIAotIEVURVhJCi1kaWZmIC0tZ2l0IGEvdHBtLmMgYi90cG0uYwotaW5kZXggOWE3YzcxMTRkMy4uNWVjMjM3MzI4NiAxMDA2NDQKLS0tLSBhL3RwbS5jCi0rKysgYi90cG0uYwotQEAgLTI1LDcgKzI1LDcgQEAgc3RhdGljIFFMSVNUX0hFQUQoLCBUUE1CYWNrZW5kKSB0cG1fYmFja2VuZHMgPQotIAotIAotICNkZWZpbmUgVFBNX01BWF9NT0RFTFMgICAgICAxCi0tI2RlZmluZSBUUE1fTUFYX0RSSVZFUlMgICAgIDEKLSsjZGVmaW5lIFRQTV9NQVhfRFJJVkVSUyAgICAgMgotIAotIHN0YXRpYyBUUE1Ecml2ZXJPcHMgY29uc3QgKmJlX2RyaXZlcnNbVFBNX01BWF9EUklWRVJTXSA9IHsKLSAgICAgTlVMTCwKLUBAIC0yNzIsNiArMjcyLDE1IEBAIHN0YXRpYyBUUE1JbmZvICpxbXBfcXVlcnlfdHBtX2luc3QoVFBNQmFja2VuZCAqZHJ2KQotICAgICAgICAgICAgIHRwby0+aGFzX2NhbmNlbF9wYXRoID0gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFRQTV9UWVBFX0NVU0VfVFBNOgotKyAgICAgICAgcmVzLT5vcHRpb25zLT50eXBlID0gVFBNX1RZUEVfT1BUSU9OU19LSU5EX0NVU0VfVFBNOwotKyAgICAgICAgdHBvID0gZ19uZXcwKFRQTVBhc3N0aHJvdWdoT3B0aW9ucywgMSk7Ci0rICAgICAgICByZXMtPm9wdGlvbnMtPnUucGFzc3Rocm91Z2guZGF0YSA9IHRwbzsKLSsgICAgICAgIGlmIChkcnYtPnBhdGgpIHsKLSsgICAgICAgICAgICB0cG8tPnBhdGggPSBnX3N0cmR1cChkcnYtPnBhdGgpOwotKyAgICAgICAgICAgIHRwby0+aGFzX3BhdGggPSB0cnVlOwotKyAgICAgICAgfQotKyAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgVFBNX1RZUEVfX01BWDoKLSAgICAgICAgIGJyZWFrOwotICAgICB9Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLWFybS10cmFuc2xhdGUtYTY0LXRyZWF0LURJU0FTX1VQREFURS1hcy12YXJpYW50LW9mLUQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLWFybS10cmFuc2xhdGUtYTY0LXRyZWF0LURJU0FTX1VQREFURS1hcy12YXJpYW50LW9mLUQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwY2FlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtYXJtLXRyYW5zbGF0ZS1hNjQtdHJlYXQtRElTQVNfVVBEQVRFLWFzLXZhcmlhbnQtb2YtRC5wYXRjaApAQCAtMCwwICsxLDY3IEBACitGcm9tIGE3NWE1MmQ2MjQxOGRhZmU0NjJiZTRmZTMwNDg1NTAxZDEwMTBiYjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KK0RhdGU6IEZyaSwgMjMgTWFyIDIwMTggMTg6MjY6NDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXJtL3RyYW5zbGF0ZS1hNjQ6IHRyZWF0IERJU0FTX1VQREFURSBhcyB2YXJpYW50IG9mCisgRElTQVNfRVhJVAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitJbiBPRSBwcm9qZWN0IDQuMTUgbGludXgga2VybmVsIGJvb3QgaGFuZyB3YXMgb2JzZXJ2ZWQgdW5kZXIKK3NpbmdsZSBjcHUgYWFyY2g2NCBxZW11LiBLZXJuZWwgY29kZSB3YXMgaW4gYSBsb29wIHdhaXRpbmcgZm9yCit2dGltZXIgYXJyaXZhbCwgc3Bpbm5pbmcgaW4gVEMgZ2VuZXJhdGVkIGJsb2Nrcywgd2hpbGUgaW50ZXJydXB0Cit3YXMgcGVuZGluZyB1bnByb2Nlc3NlZC4gVGhpcyBoYXBwZW5lZCBiZWNhdXNlIHdoZW4gcWVtdSB0cmllZCB0bworaGFuZGxlIHZ0aW1lciBpbnRlcnJ1cHQgdGFyZ2V0IGhhZCBpbnRlcnJ1cHRzIGRpc2FibGVkLCBhcworcmVzdWx0IGZsYWcgaW5kaWNhdGluZyBUQ0cgZXhpdCwgY3B1LT5pY291bnRfZGVjci51MTYuaGlnaCwKK3dhcyBjbGVhcmVkIGJ1dCBhcm1fY3B1X2V4ZWNfaW50ZXJydXB0IGZ1bmN0aW9uIGRpZCBub3QgY2FsbAorYXJtX2NwdV9kb19pbnRlcnJ1cHQgdG8gcHJvY2VzcyBpbnRlcnJ1cHQuIExhdGVyIHdoZW4gdGFyZ2V0CityZWVuYWJsZWQgaW50ZXJydXB0cywgaXQgaGFwcGVuZWQgd2l0aG91dCBleGl0IGludG8gbWFpbiBsb29wLCBzbworZm9sbG93aW5nIGNvZGUgdGhhdCB3YWl0ZWQgZm9yIHJlc3VsdCBvZiBpbnRlcnJ1cHQgZXhlY3V0aW9uCitydW4gaW4gaW5maW5pdGUgbG9vcC4KKworVG8gc29sdmUgdGhlIHByb2JsZW0gaW5zdHJ1Y3Rpb25zIHRoYXQgb3BlcmF0ZSBvbiBDUFUgc3lzIHN0YXRlCisoaS5lIGVuYWJsZS9kaXNhYmxlIGludGVycnVwdCksIGFuZCBtYXJrZWQgYXMgRElTQVNfVVBEQVRFLAorc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgRElTQVNfRVhJVCB2YXJpYW50LCBhbmQgc2hvdWxkIGJlCitmb3JjZWQgdG8gZXhpdCBiYWNrIHRvIG1haW4gbG9vcCBzbyBxZW11IHdpbGwgaGF2ZSBhIGNoYW5jZQorcHJvY2Vzc2luZyBwZW5kaW5nIENQVSBzdGF0ZSB1cGRhdGVzLCBpbmNsdWRpbmcgcGVuZGluZworaW50ZXJydXB0cy4KKworVGhpcyBjaGFuZ2UgYnJpbmdzIGNvbnNpc3RlbmN5IHdpdGggaG93IERJU0FTX1VQREFURSBpcyB0cmVhdGVkCitpbiBhYXJjaDMyIGNhc2UuCisKK0NDOiBQZXRlciBNYXlkZWxsIDxwZXRlci5tYXlkZWxsQGxpbmFyby5vcmc+CitDQzogQWxleCBCZW5uw6llIDxhbGV4LmJlbm5lZUBsaW5hcm8ub3JnPgorQ0M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKK1N1Z2dlc3RlZC1ieTogUGV0ZXIgTWF5ZGVsbCA8cGV0ZXIubWF5ZGVsbEBsaW5hcm8ub3JnPgorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CitSZXZpZXdlZC1ieTogUmljaGFyZCBIZW5kZXJzb24gPHJpY2hhcmQuaGVuZGVyc29uQGxpbmFyby5vcmc+CitNZXNzYWdlLWlkOiAxNTIxNTI2MzY4LTE5OTYtMS1naXQtc2VuZC1lbWFpbC1rYW1lbnNreUBjaXNjby5jb20KK1NpZ25lZC1vZmYtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKy0tLQorIHRhcmdldC9hcm0vdHJhbnNsYXRlLWE2NC5jIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGFyZ2V0L2FybS90cmFuc2xhdGUtYTY0LmMgYi90YXJnZXQvYXJtL3RyYW5zbGF0ZS1hNjQuYworaW5kZXggMzFmZjA0Ny4uMzI3NTEzZSAxMDA2NDQKKy0tLSBhL3RhcmdldC9hcm0vdHJhbnNsYXRlLWE2NC5jCisrKysgYi90YXJnZXQvYXJtL3RyYW5zbGF0ZS1hNjQuYworQEAgLTEzMzc4LDEyICsxMzM3OCwxMiBAQCBzdGF0aWMgdm9pZCBhYXJjaDY0X3RyX3RiX3N0b3AoRGlzYXNDb250ZXh0QmFzZSAqZGNiYXNlLCBDUFVTdGF0ZSAqY3B1KQorICAgICAgICAgY2FzZSBESVNBU19VUERBVEU6CisgICAgICAgICAgICAgZ2VuX2E2NF9zZXRfcGNfaW0oZGMtPnBjKTsKKyAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKy0gICAgICAgIGNhc2UgRElTQVNfSlVNUDoKKy0gICAgICAgICAgICB0Y2dfZ2VuX2xvb2t1cF9hbmRfZ290b19wdHIoKTsKKy0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgRElTQVNfRVhJVDoKKyAgICAgICAgICAgICB0Y2dfZ2VuX2V4aXRfdGIoMCk7CisgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIERJU0FTX0pVTVA6CisrICAgICAgICAgICAgdGNnX2dlbl9sb29rdXBfYW5kX2dvdG9fcHRyKCk7CisrICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIERJU0FTX05PUkVUVVJOOgorICAgICAgICAgY2FzZSBESVNBU19TV0k6CisgICAgICAgICAgICAgYnJlYWs7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItSW50cm9kdWNlLWNvbmRpdGlvbi10by1ub3RpZnktd2FpdGVycy1vZi1jb21wbGV0ZWQtYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItSW50cm9kdWNlLWNvbmRpdGlvbi10by1ub3RpZnktd2FpdGVycy1vZi1jb21wbGV0ZWQtYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg4Yzk4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAyLUludHJvZHVjZS1jb25kaXRpb24tdG8tbm90aWZ5LXdhaXRlcnMtb2YtY29tcGxldGVkLWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi1Gcm9tIGI1ZmZkM2FhNGU5YmQ0ZWRiMDljYzg0YzQ2Zjc4ZGE3MjY5N2E5NDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLURhdGU6IFNhdCwgMzEgRGVjIDIwMTYgMTE6MjM6MzIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIEludHJvZHVjZSBjb25kaXRpb24gdG8gbm90aWZ5IHdhaXRlcnMgb2YgY29tcGxldGVkCi0gY29tbWFuZAotCi1JbnRyb2R1Y2UgYSBsb2NrIGFuZCBhIGNvbmRpdGlvbiB0byBub3RpZnkgYW55b25lIHdhaXRpbmcgZm9yIHRoZSBjb21wbGV0aW9uCi1vZiB0aGUgZXhlY3V0aW9uIG9mIGEgVFBNIGNvbW1hbmQgYnkgdGhlIGJhY2tlbmQgKHRocmVhZCkuIFRoZSBiYWNrZW5kCi11c2VzIHRoZSBjb25kaXRpb24gdG8gc2lnbmFsIGFueW9uZSB3YWl0aW5nIGZvciBjb21tYW5kIGNvbXBsZXRpb24uCi1XZSBuZWVkIHRvIHBsYWNlIHRoZSBjb25kaXRpb24gaW4gdHdvIGxvY2F0aW9uczogb25lIGlzIGludm9rZWQgYnkgdGhlCi1iYWNrZW5kIHRocmVhZCwgdGhlIG90aGVyIGJ5IHRoZSBib3R0b20gaGFsZiB0aHJlYWQuCi1XZSB3aWxsIHVzZSB0aGUgc2lnbmFsbGluZyB0byB3YWl0IGZvciBjb21tYW5kIGNvbXBsZXRpb24gYmVmb3JlIFZNCi1zdXNwZW5kLgotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2xpc3RzLm5vbmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxNi0wNi9tc2cwMDI1Mi5odG1sXQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotLS0tCi0gaHcvdHBtL3RwbV9pbnQuaCB8ICAzICsrKwotIGh3L3RwbS90cG1fdGlzLmMgfCAxNCArKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV9pbnQuaCBiL2h3L3RwbS90cG1faW50LmgKLWluZGV4IDZiMmM5Yzk1M2EuLjcwYmUxYWQ4ZDkgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX2ludC5oCi0rKysgYi9ody90cG0vdHBtX2ludC5oCi1AQCAtMzAsNiArMzAsOSBAQCBzdHJ1Y3QgVFBNU3RhdGUgewotICAgICBjaGFyICpiYWNrZW5kOwotICAgICBUUE1CYWNrZW5kICpiZV9kcml2ZXI7Ci0gICAgIFRQTVZlcnNpb24gYmVfdHBtX3ZlcnNpb247Ci0rCi0rICAgIFFlbXVNdXRleCBzdGF0ZV9sb2NrOwotKyAgICBRZW11Q29uZCBjbWRfY29tcGxldGU7Ci0gfTsKLSAKLSAjZGVmaW5lIFRQTShvYmopIE9CSkVDVF9DSEVDSyhUUE1TdGF0ZSwgKG9iaiksIFRZUEVfVFBNX1RJUykKLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3Rpcy5jIGIvaHcvdHBtL3RwbV90aXMuYwotaW5kZXggMzgxZTcyNjZlYS4uMTRkOWU4M2VhMiAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fdGlzLmMKLSsrKyBiL2h3L3RwbS90cG1fdGlzLmMKLUBAIC0zNjgsNiArMzY4LDggQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZWNlaXZlX2JoKHZvaWQgKm9wYXF1ZSkKLSAgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSAgICAgdWludDhfdCBsb2N0eSA9IHMtPmxvY3R5X251bWJlcjsKLSAKLSsgICAgcWVtdV9tdXRleF9sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsKLSAgICAgdHBtX3Rpc19zdHNfc2V0KCZ0aXMtPmxvY1tsb2N0eV0sCi0gICAgICAgICAgICAgICAgICAgICBUUE1fVElTX1NUU19WQUxJRCB8IFRQTV9USVNfU1RTX0RBVEFfQVZBSUxBQkxFKTsKLSAgICAgdGlzLT5sb2NbbG9jdHldLnN0YXRlID0gVFBNX1RJU19TVEFURV9DT01QTEVUSU9OOwotQEAgLTM4NCw2ICszODYsMTAgQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZWNlaXZlX2JoKHZvaWQgKm9wYXF1ZSkKLSAgICAgdHBtX3Rpc19yYWlzZV9pcnEocywgbG9jdHksCi0gICAgICAgICAgICAgICAgICAgICAgIFRQTV9USVNfSU5UX0RBVEFfQVZBSUxBQkxFIHwgVFBNX1RJU19JTlRfU1RTX1ZBTElEKTsKLSAjZW5kaWYKLSsKLSsgICAgLyogbm90aWZ5IG9mIGNvbXBsZXRlZCBjb21tYW5kICovCi0rICAgIHFlbXVfY29uZF9zaWduYWwoJnMtPmNtZF9jb21wbGV0ZSk7Ci0rICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSB9Ci0gCi0gLyoKLUBAIC00MDMsNiArNDA5LDExIEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVjZWl2ZV9jYihUUE1TdGF0ZSAqcywgdWludDhfdCBsb2N0eSwKLSAgICAgICAgIH0KLSAgICAgfQotIAotKyAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKyAgICAvKiBub3RpZnkgb2YgY29tcGxldGVkIGNvbW1hbmQgKi8KLSsgICAgcWVtdV9jb25kX3NpZ25hbCgmcy0+Y21kX2NvbXBsZXRlKTsKLSsgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOwotKwotICAgICBxZW11X2JoX3NjaGVkdWxlKHRpcy0+YmgpOwotIH0KLSAKLUBAIC0xMDcyLDYgKzEwODMsOSBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX2luaXRmbihPYmplY3QgKm9iaikKLSAgICAgbWVtb3J5X3JlZ2lvbl9pbml0X2lvKCZzLT5tbWlvLCBPQkpFQ1QocyksICZ0cG1fdGlzX21lbW9yeV9vcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAidHBtLXRpcy1tbWlvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTV9USVNfTlVNX0xPQ0FMSVRJRVMgPDwgVFBNX1RJU19MT0NBTElUWV9TSElGVCk7Ci0rCi0rICAgIHFlbXVfbXV0ZXhfaW5pdCgmcy0+c3RhdGVfbG9jayk7Ci0rICAgIHFlbXVfY29uZF9pbml0KCZzLT5jbWRfY29tcGxldGUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCB0cG1fdGlzX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMy1JbnRyb2R1Y2UtY29uZGl0aW9uLWluLVRQTS1iYWNrZW5kLWZvci1ub3RpZmljYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLUludHJvZHVjZS1jb25kaXRpb24taW4tVFBNLWJhY2tlbmQtZm9yLW5vdGlmaWNhdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU4ZjAxOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLUludHJvZHVjZS1jb25kaXRpb24taW4tVFBNLWJhY2tlbmQtZm9yLW5vdGlmaWNhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gNzMyYThlMDQ2OTQ4ZmQ2MmIzMmNkMWRkNzZhNjc5OGViMWNhZjRkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotRGF0ZTogU2F0LCAzMSBEZWMgMjAxNiAxMToyMzozMiAtMDUwMAotU3ViamVjdDogW1BBVENIIDMvNF0gSW50cm9kdWNlIGNvbmRpdGlvbiBpbiBUUE0gYmFja2VuZCBmb3Igbm90aWZpY2F0aW9uCi0KLVRQTSBiYWNrZW5kcyB3aWxsIHN1c3BlbmQgaW5kZXBlbmRlbnRseSBvZiB0aGUgZnJvbnRlbmRzLiBBbHNvCi1oZXJlIHdlIG5lZWQgdG8gYmUgYWJsZSB0byB3YWl0IGZvciB0aGUgVFBNIGNvbW1hbmQgdG8gaGF2ZSBiZWVuCi1jb21wbGV0ZWx5IHByb2Nlc3NlZC4KLQotU2lnbmVkLW9mZi1ieTogU3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC52bmV0LmlibS5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbaHR0cHM6Ly9saXN0cy5ub25nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTYtMDYvbXNnMDAyNTIuaHRtbF0KLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLS0tLQotIGh3L3RwbS90cG1fcGFzc3Rocm91Z2guYyB8IDIwICsrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotaW5kZXggMDUwZjJiYTg1MC4uNDQ3MzllYmFkMiAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotKysrIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi1AQCAtNzUsNiArNzUsMTAgQEAgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgewotICAgICBUUE1WZXJzaW9uIHRwbV92ZXJzaW9uOwotICAgICBwdG1fY2FwIGN1c2VfY2FwOyAvKiBjYXBhYmlsaXRpZXMgb2YgdGhlIENVU0UgVFBNICovCi0gICAgIHVpbnQ4X3QgY3VyX2xvY3R5X251bWJlcjsgLyogbGFzdCBzZXQgbG9jYWxpdHkgKi8KLSsKLSsgICAgUWVtdU11dGV4IHN0YXRlX2xvY2s7Ci0rICAgIFFlbXVDb25kIGNtZF9jb21wbGV0ZTsgIC8qIHNpbmduYWxlZCBvbmNlIHRwbV9idXN5IGlzIGZhbHNlICovCi0rICAgIGJvb2wgdHBtX2J1c3k7Ci0gfTsKLSAKLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVN0YXRlIFRQTVBhc3N0aHJ1U3RhdGU7Ci1AQCAtMjc0LDYgKzI3OCwxMSBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfd29ya2VyX3RocmVhZChncG9pbnRlciBkYXRhLAotICAgICAgICAgdGhyX3Bhcm1zLT5yZWN2X2RhdGFfY2FsbGJhY2sodGhyX3Bhcm1zLT50cG1fc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJfcGFybXMtPnRwbV9zdGF0ZS0+bG9jdHlfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZnRlc3RfZG9uZSk7Ci0rICAgICAgICAvKiByZXN1bHQgZGVsaXZlcmVkICovCi0rICAgICAgICBxZW11X211dGV4X2xvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0rICAgICAgICB0cG1fcHQtPnRwbV9idXN5ID0gZmFsc2U7Ci0rICAgICAgICBxZW11X2NvbmRfc2lnbmFsKCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSk7Ci0rICAgICAgICBxZW11X211dGV4X3VubG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFRQTV9CQUNLRU5EX0NNRF9JTklUOgotICAgICBjYXNlIFRQTV9CQUNLRU5EX0NNRF9FTkQ6Ci1AQCAtNDAxLDYgKzQxMCw3IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9yZXNldChUUE1CYWNrZW5kICp0YikKLSAgICAgdHBtX2JhY2tlbmRfdGhyZWFkX2VuZCgmdHBtX3B0LT50YnQpOwotIAotICAgICB0cG1fcHQtPmhhZF9zdGFydHVwX2Vycm9yID0gZmFsc2U7Ci0rICAgIHRwbV9wdC0+dHBtX2J1c3kgPSBmYWxzZTsKLSB9Ci0gCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaW5pdChUUE1CYWNrZW5kICp0YiwgVFBNU3RhdGUgKnMsCi1AQCAtNDc4LDYgKzQ4OCwxMSBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLSAKLSsgICAgLyogVFBNIGNvbnNpZGVyZWQgYnVzeSBvbmNlIFRQTSBSZXF1ZXN0IHNjaGVkdWxlZCBmb3IgcHJvY2Vzc2luZyAqLwotKyAgICBxZW11X211dGV4X2xvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0rICAgIHRwbV9wdC0+dHBtX2J1c3kgPSB0cnVlOwotKyAgICBxZW11X211dGV4X3VubG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsKLSAgICAgdHBtX2JhY2tlbmRfdGhyZWFkX2RlbGl2ZXJfcmVxdWVzdCgmdHBtX3B0LT50YnQpOwotIH0KLSAKLUBAIC03NDYsNiArNzYxLDExIEBAIHN0YXRpYyBjb25zdCBUUE1Ecml2ZXJPcHMgdHBtX3Bhc3N0aHJvdWdoX2RyaXZlciA9IHsKLSAKLSBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9pbml0KE9iamVjdCAqb2JqKQotIHsKLSsgICAgVFBNQmFja2VuZCAqdGIgPSBUUE1fQkFDS0VORChvYmopOwotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotKwotKyAgICBxZW11X211dGV4X2luaXQoJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0rICAgIHFlbXVfY29uZF9pbml0KCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9pbnN0X2ZpbmFsaXplKE9iamVjdCAqb2JqKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMtdjIuOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtQWRkLXN1cHBvcnQtZm9yLVZNLXN1c3BlbmQtcmVzdW1lLWZvci1UUE0tVElTLXYyLjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZGJhZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMtdjIuOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcxOSArMCwwIEBACi1Gcm9tIDVlOWRkOTA2M2Y1MTQ0NDdlYTRmNTQwNDY3OTNmNGYwMWMyOTdlZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLURhdGU6IFNhdCwgMzEgRGVjIDIwMTYgMTE6MjM6MzIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIEFkZCBzdXBwb3J0IGZvciBWTSBzdXNwZW5kL3Jlc3VtZSBmb3IgVFBNIFRJUwotCi1FeHRlbmQgdGhlIFRQTSBUSVMgY29kZSB0byBzdXBwb3J0IHN1c3BlbmQvcmVzdW1lLiBJbiBjYXNlIGEgY29tbWFuZAotaXMgYmVpbmcgcHJvY2Vzc2VkIGJ5IHRoZSBleHRlcm5hbCBUUE0gd2hlbiBzdXNwZW5kaW5nLCB3YWl0IGZvciB0aGUgY29tbWFuZAotdG8gY29tcGxldGUgdG8gY2F0Y2ggdGhlIHJlc3VsdC4gSW4gY2FzZSB0aGUgYm90dG9tIGhhbGYgZGlkIG5vdCBydW4sCi1ydW4gdGhlIG9uZSBmdW5jdGlvbiB0aGUgYm90dG9tIGhhbGYgaXMgc3VwcG9zZWQgdG8gcnVuLiBUaGlzIHRoZW4KLW1ha2VzIHRoZSByZXN1bWUgb3BlcmF0aW9uIHdvcmsuCi0KLVRoZSBwYXNzdGhyb3VnaCBiYWNrZW5kIGRvZXMgbm90IHN1cHBvcnQgc3VzcGVuZC9yZXN1bWUgb3BlcmF0aW9uCi1hbmQgaXMgdGhlcmVmb3JlIGJsb2NrZWQgZnJvbSBzdXNwZW5kL3Jlc3VtZSBhbmQgbWlncmF0aW9uLgotCi1UaGUgQ1VTRSBUUE0ncyBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzIGFyZSB0ZXN0ZWQgYW5kIGlmIHN1ZmZpY2llbnQKLWNhcGFiaWxpdGllcyBhcmUgaW1wbGVtZW50ZWQsIHN1c3BlbmQvcmVzdW1lLCBzbmFwc2hvdHRpbmcgYW5kCi1taWdyYXRpb24gYXJlIHN1cHBvcnRlZCBieSB0aGUgQ1VTRSBUUE0uCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vbGlzdHMubm9uZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE2LTA2L21zZzAwMjUyLmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0tLS0KLSBody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMgICAgIHwgMTMwICsrKysrKysrKysrKysrKysrKysrKysrLS0KLSBody90cG0vdHBtX3Rpcy5jICAgICAgICAgICAgIHwgMTM3ICsrKysrKysrKysrKysrKysrKysrKysrKystCi0gaHcvdHBtL3RwbV90aXMuaCAgICAgICAgICAgICB8ICAgMiArCi0gaHcvdHBtL3RwbV91dGlsLmMgICAgICAgICAgICB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gaHcvdHBtL3RwbV91dGlsLmggICAgICAgICAgICB8ICAgNyArKwotIGluY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmggfCAgMTIgKysrCi0gNiBmaWxlcyBjaGFuZ2VkLCA1MDMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotaW5kZXggNDQ3MzllYmFkMi4uYmM4MDcyZDBiYyAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotKysrIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi1AQCAtMzQsNiArMzQsOCBAQAotICNpbmNsdWRlICJ0cG1fdGlzLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0gI2luY2x1ZGUgInRwbV9pb2N0bC5oIgotKyNpbmNsdWRlICJtaWdyYXRpb24vbWlncmF0aW9uLmgiCi0rI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKLSAKLSAjZGVmaW5lIERFQlVHX1RQTSAwCi0gCi1AQCAtNDksNiArNTEsNyBAQAotICNkZWZpbmUgVFlQRV9UUE1fQ1VTRSAidHBtLWN1c2UiCi0gCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fcGFzc3Rocm91Z2hfZHJpdmVyOwotK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fY3VzZTsKLSAKLSAvKiBkYXRhIHN0cnVjdHVyZXMgKi8KLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVRocmVhZFBhcmFtcyB7Ci1AQCAtNzksNiArODIsMTAgQEAgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgewotICAgICBRZW11TXV0ZXggc3RhdGVfbG9jazsKLSAgICAgUWVtdUNvbmQgY21kX2NvbXBsZXRlOyAgLyogc2luZ25hbGVkIG9uY2UgdHBtX2J1c3kgaXMgZmFsc2UgKi8KLSAgICAgYm9vbCB0cG1fYnVzeTsKLSsKLSsgICAgRXJyb3IgKm1pZ3JhdGlvbl9ibG9ja2VyOwotKwotKyAgICBUUE1CbG9iQnVmZmVycyB0cG1fYmxvYnM7Ci0gfTsKLSAKLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVN0YXRlIFRQTVBhc3N0aHJ1U3RhdGU7Ci1AQCAtMzA2LDYgKzMxMywxMCBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfc2h1dGRvd24oVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgfQotICAgICB9Ci0rICAgIGlmICh0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKSB7Ci0rICAgICAgICBtaWdyYXRlX2RlbF9ibG9ja2VyKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpOwotKyAgICAgICAgZXJyb3JfZnJlZSh0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKLSsgICAgfQotIH0KLSAKLSAvKgotQEAgLTM2MCwxMiArMzcxLDE0IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfY2hlY2tfY2FwcyhUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0gLyoKLSAgKiBJbml0aWFsaXplIHRoZSBleHRlcm5hbCBDVVNFIFRQTQotICAqLwotLXN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdChUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0rc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19yZXN1bWUpCi0gewotICAgICBpbnQgcmMgPSAwOwotLSAgICBwdG1faW5pdCBpbml0ID0gewotLSAgICAgICAgLnUucmVxLmluaXRfZmxhZ3MgPSBQVE1fSU5JVF9GTEFHX0RFTEVURV9WT0xBVElMRSwKLS0gICAgfTsKLSsgICAgcHRtX2luaXQgaW5pdDsKLSsgICAgaWYgKGlzX3Jlc3VtZSkgewotKyAgICAgICAgaW5pdC51LnJlcS5pbml0X2ZsYWdzID0gUFRNX0lOSVRfRkxBR19ERUxFVEVfVk9MQVRJTEU7Ci0rICAgIH0KLSAKLSAgICAgaWYgKFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpIHsKLSAgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0lOSVQsICZpbml0KSA8IDApIHsKLUBAIC0zOTQsNyArNDA3LDcgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfc3RhcnR1cF90cG0oVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX3Bhc3N0aHJvdWdoX3dvcmtlcl90aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9wdC0+dHBtX3RocmVhZF9wYXJhbXMpOwotIAotLSAgICB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCk7Ci0rICAgIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0LCBmYWxzZSk7Ci0gCi0gICAgIHJldHVybiAwOwotIH0KLUBAIC00NjYsNiArNDc5LDMyIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnKFRQTUJhY2tlbmQgKnRiLAotICAgICByZXR1cm4gcmM7Ci0gfQotIAotK3N0YXRpYyBpbnQgdHBtX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKFRQTUJhY2tlbmQgKnRiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotKwotKyAgICBhc3NlcnQoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSk7Ci0rCi0rICAgIHJldHVybiB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyh0cG1fcHQtPnRwbV9mZCwgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzKTsKLSt9Ci0rCi0rc3RhdGljIGludCB0cG1fY3VzZV9zZXRfc3RhdGVfYmxvYnMoVFBNQmFja2VuZCAqdGIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKLSt7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0rCi0rICAgIGFzc2VydChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKTsKLSsKLSsgICAgaWYgKHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKHRwbV9wdC0+dHBtX2ZkLCB0cG1fYmxvYnMpKSB7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQsIHRydWUpOwotK30KLSsKLSBzdGF0aWMgYm9vbCB0cG1fcGFzc3Rocm91Z2hfZ2V0X3N0YXJ0dXBfZXJyb3IoVFBNQmFja2VuZCAqdGIpCi0gewotICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotQEAgLTQ4OCw3ICs1MjcsNyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLSAKLS0gICAgLyogVFBNIGNvbnNpZGVyZWQgYnVzeSBvbmNlIFRQTSBSZXF1ZXN0IHNjaGVkdWxlZCBmb3IgcHJvY2Vzc2luZyAqLwotKyAgICAvKiBUUE0gY29uc2lkZXJlZCBidXN5IG9uY2UgVFBNIHJlcXVlc3Qgc2NoZWR1bGVkIGZvciBwcm9jZXNzaW5nICovCi0gICAgIHFlbXVfbXV0ZXhfbG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSAgICAgdHBtX3B0LT50cG1fYnVzeSA9IHRydWU7Ci0gICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotQEAgLTYwMSw2ICs2NDAsMjUgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfb3Blbl9zeXNmc19jYW5jZWwoVFBNQmFja2VuZCAqdGIpCi0gICAgIHJldHVybiBmZDsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2Jsb2NrX21pZ3JhdGlvbihUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0rewotKyAgICBwdG1fY2FwIGNhcHM7Ci0rCi0rICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7Ci0rICAgICAgICBjYXBzID0gUFRNX0NBUF9HRVRfU1RBVEVCTE9CIHwgUFRNX0NBUF9TRVRfU1RBVEVCTE9CIHwKLSsgICAgICAgICAgICAgICBQVE1fQ0FQX1NUT1A7Ci0rICAgICAgICBpZiAoIVRQTV9DVVNFX0lNUExFTUVOVFNfQUxMKHRwbV9wdCwgY2FwcykpIHsKLSsgICAgICAgICAgICBlcnJvcl9zZXRnKCZ0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyLAotKyAgICAgICAgICAgICAgICAgICAgICAgIk1pZ3JhdGlvbiBkaXNhYmxlZDogQ1VTRSBUUE0gbGFja3MgbmVjZXNzYXJ5IGNhcGFiaWxpdGllcyIpOwotKyAgICAgICAgICAgIG1pZ3JhdGVfYWRkX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7Ci0rICAgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBlcnJvcl9zZXRnKCZ0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyLAotKyAgICAgICAgICAgICAgICAgICAiTWlncmF0aW9uIGRpc2FibGVkOiBQYXNzdGhyb3VnaCBUUE0gZG9lcyBub3Qgc3VwcG9ydCBtaWdyYXRpb24iKTsKLSsgICAgICAgIG1pZ3JhdGVfYWRkX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7Ci0rICAgIH0KLSt9Ci0rCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKLSB7Ci0gICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci1AQCAtNjQyLDcgKzcwMCw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICAgICAgfQotICAgICAgICAgLyogaW5pdCBUUE0gZm9yIHByb2JpbmcgKi8KLS0gICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCkpIHsKLSsgICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCwgZmFsc2UpKSB7Ci0gICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICAgICAgfQotICAgICB9Ci1AQCAtNjU5LDYgKzcxNyw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLSsgICAgdHBtX3Bhc3N0aHJvdWdoX2Jsb2NrX21pZ3JhdGlvbih0cG1fcHQpOwotIAotICAgICByZXR1cm4gMDsKLSAKLUBAIC03NjYsMTAgKzgyNSwxMyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9pbml0KE9iamVjdCAqb2JqKQotIAotICAgICBxZW11X211dGV4X2luaXQoJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0gICAgIHFlbXVfY29uZF9pbml0KCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSk7Ci0rCi0rICAgIHZtc3RhdGVfcmVnaXN0ZXIoTlVMTCwgLTEsICZ2bXN0YXRlX3RwbV9jdXNlLCBvYmopOwotIH0KLSAKLSBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9maW5hbGl6ZShPYmplY3QgKm9iaikKLSB7Ci0rICAgIHZtc3RhdGVfdW5yZWdpc3RlcihOVUxMLCAmdm1zdGF0ZV90cG1fY3VzZSwgb2JqKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQotQEAgLTgwMiw2ICs4NjQsNjAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnRwbV9wYXNzdGhyb3VnaF9jdXNlX2NyZWF0ZV9kZXNjKHZvaWQpCi0gICAgIHJldHVybiAiQ1VTRSBUUE0gYmFja2VuZCBkcml2ZXIiOwotIH0KLSAKLStzdGF0aWMgdm9pZCB0cG1fY3VzZV9wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBvcGFxdWU7Ci0rICAgIFRQTUJhY2tlbmQgKnRiID0gJnRwbV9wdC0+cGFyZW50OwotKwotKyAgICAgcWVtdV9tdXRleF9sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotKyAgICAgLyogd2FpdCBmb3IgVFBNIHRvIGZpbmlzaCBwcm9jZXNzaW5nICovCi0rICAgICBpZiAodHBtX3B0LT50cG1fYnVzeSkgewotKyAgICAgICAgcWVtdV9jb25kX3dhaXQoJnRwbV9wdC0+Y21kX2NvbXBsZXRlLCAmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsgICAgIH0KLSsgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotKwotKyAgICAvKiBnZXQgdGhlIGRlY3J5cHRlZCBzdGF0ZSBibG9icyBmcm9tIHRoZSBUUE0gKi8KLSsgICAgdHBtX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKHRiLCBUUlVFLCAmdHBtX3B0LT50cG1fYmxvYnMpOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV9jdXNlX3Bvc3RfbG9hZCh2b2lkICpvcGFxdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBvcGFxdWU7Ci0rICAgIFRQTUJhY2tlbmQgKnRiID0gJnRwbV9wdC0+cGFyZW50OwotKwotKyAgICByZXR1cm4gdHBtX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKHRiLCAmdHBtX3B0LT50cG1fYmxvYnMpOwotK30KLSsKLStzdGF0aWMgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uIHZtc3RhdGVfdHBtX2N1c2UgPSB7Ci0rICAgIC5uYW1lID0gImN1c2UtdHBtIiwKLSsgICAgLnZlcnNpb25faWQgPSAxLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAotKyAgICAucHJlX3NhdmUgID0gdHBtX2N1c2VfcHJlX3NhdmUsCi0rICAgIC5wb3N0X2xvYWQgPSB0cG1fY3VzZV9wb3N0X2xvYWQsCi0rICAgIC5maWVsZHMgPSAoVk1TdGF0ZUZpZWxkW10pIHsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5wZXJtYW5lbnRfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudC5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudC5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy5wZXJtYW5lbnQuc2l6ZSksCi0rCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbF9mbGFncywgVFBNUGFzc3RocnVTdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbC5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnZvbGF0aWwuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1QYXNzdGhydVN0YXRlLCAxLCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMudm9sYXRpbC5zaXplKSwKLSsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5zYXZlc3RhdGVfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZS5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZS5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy5zYXZlc3RhdGUuc2l6ZSksCi0rICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCkKLSsgICAgfQotK307Ci0rCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fY3VzZV9kcml2ZXIgPSB7Ci0gICAgIC50eXBlICAgICAgICAgICAgICAgICAgICAgPSBUUE1fVFlQRV9DVVNFX1RQTSwKLSAgICAgLm9wdHMgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jbWRsaW5lX29wdHMsCi1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV90aXMuYyBiL2h3L3RwbS90cG1fdGlzLmMKLWluZGV4IDE0ZDllODNlYTIuLjliNjYwY2Y3MzcgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Rpcy5jCi0rKysgYi9ody90cG0vdHBtX3Rpcy5jCi1AQCAtMzY4LDYgKzM2OCw4IEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVjZWl2ZV9iaCh2b2lkICpvcGFxdWUpCi0gICAgIFRQTVRJU0VtdVN0YXRlICp0aXMgPSAmcy0+cy50aXM7Ci0gICAgIHVpbnQ4X3QgbG9jdHkgPSBzLT5sb2N0eV9udW1iZXI7Ci0gCi0rICAgIHRpcy0+Ymhfc2NoZWR1bGVkID0gZmFsc2U7Ci0rCi0gICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7Ci0gCi0gICAgIHRwbV90aXNfc3RzX3NldCgmdGlzLT5sb2NbbG9jdHldLAotQEAgLTQxNSw2ICs0MTcsOCBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX3JlY2VpdmVfY2IoVFBNU3RhdGUgKnMsIHVpbnQ4X3QgbG9jdHksCi0gICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSAKLSAgICAgcWVtdV9iaF9zY2hlZHVsZSh0aXMtPmJoKTsKLSsKLSsgICAgdGlzLT5iaF9zY2hlZHVsZWQgPSB0cnVlOwotIH0KLSAKLSAvKgotQEAgLTEwMzAsOSArMTAzNCwxNDAgQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZXNldChEZXZpY2VTdGF0ZSAqZGV2KQotICAgICB0cG1fdGlzX2RvX3N0YXJ0dXBfdHBtKHMpOwotIH0KLSAKLSsKLSsvKiBwZXJzaXN0ZW50IHN0YXRlIGhhbmRsaW5nICovCi0rCi0rc3RhdGljIHZvaWQgdHBtX3Rpc19wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCi0rewotKyAgICBUUE1TdGF0ZSAqcyA9IG9wYXF1ZTsKLSsgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSsgICAgdWludDhfdCBsb2N0eSA9IHRpcy0+YWN0aXZlX2xvY3R5OwotKwotKyAgICBEUFJJTlRGKCJ0cG1fdGlzOiBzdXNwZW5kOiBsb2N0eSA9ICVkIDogcl9vZmZzZXQgPSAlZCwgd19vZmZzZXQgPSAlZFxuIiwKLSsgICAgICAgICAgICBsb2N0eSwgdGlzLT5sb2NbMF0ucl9vZmZzZXQsIHRpcy0+bG9jWzBdLndfb2Zmc2V0KTsKLSsjaWZkZWYgREVCVUdfVElTCi0rICAgIHRwbV90aXNfZHVtcF9zdGF0ZShvcGFxdWUsIDApOwotKyNlbmRpZgotKwotKyAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKwotKyAgICAvKiB3YWl0IGZvciBvdXRzdGFuZGluZyByZXF1ZXN0IHRvIGNvbXBsZXRlICovCi0rICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSAmJgotKyAgICAgICAgdGlzLT5sb2NbbG9jdHldLnN0YXRlID09IFRQTV9USVNfU1RBVEVfRVhFQ1VUSU9OKSB7Ci0rICAgICAgICAvKgotKyAgICAgICAgICogSWYgd2UgZ2V0IGhlcmUgd2hlbiB0aGUgYmggaXMgc2NoZWR1bGVkIGJ1dCBkaWQgbm90IHJ1biwKLSsgICAgICAgICAqIHdlIHdvbid0IGdldCBub3RpZmllZC4uLgotKyAgICAgICAgICovCi0rICAgICAgICBpZiAoIXRpcy0+Ymhfc2NoZWR1bGVkKSB7Ci0rICAgICAgICAgICAgLyogYmFja2VuZCB0aHJlYWQgdG8gbm90aWZ5IHVzICovCi0rICAgICAgICAgICAgcWVtdV9jb25kX3dhaXQoJnMtPmNtZF9jb21wbGV0ZSwgJnMtPnN0YXRlX2xvY2spOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKHRpcy0+bG9jW2xvY3R5XS5zdGF0ZSA9PSBUUE1fVElTX1NUQVRFX0VYRUNVVElPTikgewotKyAgICAgICAgICAgIC8qIGJvdHRvbSBoYWxmIGRpZCBub3QgcnVuIC0gcnVuIGl0cyBmdW5jdGlvbiAqLwotKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsgICAgICAgICAgICB0cG1fdGlzX3JlY2VpdmVfYmgob3BhcXVlKTsKLSsgICAgICAgICAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsKLSsgICAgLyogY29weSBjdXJyZW50IGFjdGl2ZSByZWFkIG9yIHdyaXRlIGJ1ZmZlciBpbnRvIHRoZSBidWZmZXIKLSsgICAgICAgd3JpdHRlbiB0byBkaXNrICovCi0rICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSkgewotKyAgICAgICAgc3dpdGNoICh0aXMtPmxvY1tsb2N0eV0uc3RhdGUpIHsKLSsgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9SRUNFUFRJT046Ci0rICAgICAgICAgICAgbWVtY3B5KHRpcy0+YnVmLAotKyAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5zaXplKSk7Ci0rICAgICAgICAgICAgdGlzLT5vZmZzZXQgPSB0aXMtPmxvY1tsb2N0eV0ud19vZmZzZXQ7Ci0rICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9DT01QTEVUSU9OOgotKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCi0rICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuc2l6ZSkpOwotKyAgICAgICAgICAgIHRpcy0+b2Zmc2V0ID0gdGlzLT5sb2NbbG9jdHldLnJfb2Zmc2V0OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAgIC8qIGxlYWsgbm90aGluZyAqLwotKyAgICAgICAgICAgIG1lbXNldCh0aXMtPmJ1ZiwgMHgwLCBzaXplb2YodGlzLT5idWYpKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICB9Ci0rfQotKwotK3N0YXRpYyBpbnQgdHBtX3Rpc19wb3N0X2xvYWQodm9pZCAqb3BhcXVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCi0rewotKyAgICBUUE1TdGF0ZSAqcyA9IG9wYXF1ZTsKLSsgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSsKLSsgICAgdWludDhfdCBsb2N0eSA9IHRpcy0+YWN0aXZlX2xvY3R5OwotKwotKyAgICBpZiAoVFBNX1RJU19JU19WQUxJRF9MT0NUWShsb2N0eSkpIHsKLSsgICAgICAgIHN3aXRjaCAodGlzLT5sb2NbbG9jdHldLnN0YXRlKSB7Ci0rICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfUkVDRVBUSU9OOgotKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICB0aXMtPmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCi0rICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuc2l6ZSkpOwotKyAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X29mZnNldCA9IHRpcy0+b2Zmc2V0OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfQ09NUExFVElPTjoKLSsgICAgICAgICAgICBtZW1jcHkodGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgdGlzLT5idWYsCi0rICAgICAgICAgICAgICAgICAgIE1JTihzaXplb2YodGlzLT5idWYpLAotKyAgICAgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLnNpemUpKTsKLSsgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9vZmZzZXQgPSB0aXMtPm9mZnNldDsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIERQUklOVEYoInRwbV90aXM6IHJlc3VtZSA6IGxvY3R5ID0gJWQgOiByX29mZnNldCA9ICVkLCB3X29mZnNldCA9ICVkXG4iLAotKyAgICAgICAgICAgIGxvY3R5LCB0aXMtPmxvY1swXS5yX29mZnNldCwgdGlzLT5sb2NbMF0ud19vZmZzZXQpOwotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX2xvY3R5ID0gewotKyAgICAubmFtZSA9ICJsb2MiLAotKyAgICAudmVyc2lvbl9pZCA9IDEsCi0rICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAwLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkX29sZCA9IDAsCi0rICAgIC5maWVsZHMgICAgICA9IChWTVN0YXRlRmllbGRbXSkgewotKyAgICAgICAgVk1TVEFURV9VSU5UMzIoc3RhdGUsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludGUsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludHMsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgoYWNjZXNzLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMihzdHMsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGlmYWNlX2lkLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCksCi0rICAgIH0KLSt9OwotKwotIHN0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fdGlzID0gewotICAgICAubmFtZSA9ICJ0cG0iLAotLSAgICAudW5taWdyYXRhYmxlID0gMSwKLSsgICAgLnZlcnNpb25faWQgPSAxLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAotKyAgICAucHJlX3NhdmUgID0gdHBtX3Rpc19wcmVfc2F2ZSwKLSsgICAgLnBvc3RfbG9hZCA9IHRwbV90aXNfcG9zdF9sb2FkLAotKyAgICAuZmllbGRzID0gKFZNU3RhdGVGaWVsZFtdKSB7Ci0rICAgICAgICBWTVNUQVRFX1VJTlQzMihzLnRpcy5vZmZzZXQsIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfQlVGRkVSKHMudGlzLmJ1ZiwgVFBNU3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UOChzLnRpcy5hY3RpdmVfbG9jdHksIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMuYWJvcnRpbmdfbG9jdHksIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMubmV4dF9sb2N0eSwgVFBNU3RhdGUpLAotKwotKyAgICAgICAgVk1TVEFURV9TVFJVQ1RfQVJSQVkocy50aXMubG9jLCBUUE1TdGF0ZSwgVFBNX1RJU19OVU1fTE9DQUxJVElFUywgMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtc3RhdGVfbG9jdHksIFRQTUxvY2FsaXR5KSwKLSsKLSsgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKQotKyAgICB9Ci0gfTsKLSAKLSBzdGF0aWMgUHJvcGVydHkgdHBtX3Rpc19wcm9wZXJ0aWVzW10gPSB7Ci1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV90aXMuaCBiL2h3L3RwbS90cG1fdGlzLmgKLWluZGV4IGExZGY0MWZhMjEuLmI3ZmMwZWExYTkgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Rpcy5oCi0rKysgYi9ody90cG0vdHBtX3Rpcy5oCi1AQCAtNTQsNiArNTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBUUE1Mb2NhbGl0eSB7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgVFBNVElTRW11U3RhdGUgewotICAgICBRRU1VQkggKmJoOwotKyAgICBib29sIGJoX3NjaGVkdWxlZDsgLyogYmggc2NoZWR1bGVkIGJ1dCBkaWQgbm90IHJ1biB5ZXQgKi8KLSsKLSAgICAgdWludDMyX3Qgb2Zmc2V0OwotICAgICB1aW50OF90IGJ1ZltUUE1fVElTX0JVRkZFUl9NQVhdOwotIAotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fdXRpbC5jIGIvaHcvdHBtL3RwbV91dGlsLmMKLWluZGV4IDdiMzU0Mjk3MjUuLmI2ZmY3NGQ5NDYgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3V0aWwuYwotKysrIGIvaHcvdHBtL3RwbV91dGlsLmMKLUBAIC0yMiw2ICsyMiwxNyBAQAotICNpbmNsdWRlICJxZW11L29zZGVwLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0gI2luY2x1ZGUgInRwbV9pbnQuaCIKLSsjaW5jbHVkZSAidHBtX2lvY3RsLmgiCi0rI2luY2x1ZGUgInFlbXUvZXJyb3ItcmVwb3J0LmgiCi0rCi0rI2RlZmluZSBERUJVR19UUE0gMAotKwotKyNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikgZG8geyBcCi0rICAgIGlmIChERUJVR19UUE0pIHsgXAotKyAgICAgICAgZnByaW50ZihzdGRlcnIsIGZtdCwgIyMgX19WQV9BUkdTX18pOyBcCi0rICAgIH0gXAotK30gd2hpbGUgKDApCi0rCi0gCi0gLyoKLSAgKiBBIGJhc2ljIHRlc3Qgb2YgYSBUUE0gZGV2aWNlLiBXZSBleHBlY3QgYSB3ZWxsIGZvcm1hdHRlZCByZXNwb25zZSBoZWFkZXIKLUBAIC0xMjUsMyArMTM2LDIxNSBAQCBpbnQgdHBtX3V0aWxfdGVzdF90cG1kZXYoaW50IHRwbV9mZCwgVFBNVmVyc2lvbiAqdHBtX3ZlcnNpb24pCi0gCi0gICAgIHJldHVybiAxOwotIH0KLSsKLStzdGF0aWMgdm9pZCB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KFRQTVNpemVkQnVmZmVyICp0c2IpCi0rewotKyAgICBnX2ZyZWUodHNiLT5idWZmZXIpOwotKyAgICB0c2ItPmJ1ZmZlciA9IE5VTEw7Ci0rICAgIHRzYi0+c2l6ZSA9IDA7Ci0rfQotKwotKy8qCi0rICogVHJhbnNmZXIgYSBUUE0gc3RhdGUgYmxvYiBmcm9tIHRoZSBUUE0gaW50byBhIHByb3ZpZGVkIGJ1ZmZlci4KLSsgKgotKyAqIEBmZDogZmlsZSBkZXNjcmlwdG9yIHRvIHRhbGsgdG8gdGhlIENVU0UgVFBNCi0rICogQHR5cGU6IHRoZSB0eXBlIG9mIGJsb2IgdG8gdHJhbnNmZXIKLSsgKiBAZGVjcnlwdGVkX2Jsb2I6IHdoZXRoZXIgd2UgcmVxdWVzdCB0byByZWNlaXZlIGRlY3J5cHRlZCBibG9icwotKyAqIEB0c2I6IHRoZSBUUE1TaXplQnVmZmVyIHRvIGZpbGwgd2l0aCB0aGUgYmxvYgotKyAqIEBmbGFnczogdGhlIGZsYWdzIHRvIHJldHVybiB0byB0aGUgY2FsbGVyCi0rICovCi0rc3RhdGljIGludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKGludCBmZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCB0eXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1TaXplZEJ1ZmZlciAqdHNiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZmxhZ3MpCi0rewotKyAgICBwdG1fZ2V0c3RhdGUgcGdzOwotKyAgICB1aW50MTZfdCBvZmZzZXQgPSAwOwotKyAgICBwdG1fcmVzIHJlczsKLSsgICAgc3NpemVfdCBuOwotKyAgICBzaXplX3QgdG9fcmVhZDsKLSsKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCh0c2IpOwotKwotKyAgICBwZ3MudS5yZXEuc3RhdGVfZmxhZ3MgPSAoZGVjcnlwdGVkX2Jsb2IpID8gUFRNX1NUQVRFX0ZMQUdfREVDUllQVEVEIDogMDsKLSsgICAgcGdzLnUucmVxLnR5cGUgPSB0eXBlOwotKyAgICBwZ3MudS5yZXEub2Zmc2V0ID0gb2Zmc2V0OwotKwotKyAgICBpZiAoaW9jdGwoZmQsIFBUTV9HRVRfU1RBVEVCTE9CLCAmcGdzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiQ1VTRSBUUE0gUFRNX0dFVF9TVEFURUJMT0IgaW9jdGwgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsgICAgcmVzID0gcGdzLnUucmVzcC50cG1fcmVzdWx0OwotKyAgICBpZiAocmVzICE9IDAgJiYgKHJlcyAmIDB4ODAwKSA9PSAwKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoIkdldHRpbmcgdGhlIHN0YXRlYmxvYiAodHlwZSAlZCkgZmFpbGVkIHdpdGggYSBUUE0gIgotKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciAweCV4IiwgdHlwZSwgcmVzKTsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsKLSsgICAgKmZsYWdzID0gcGdzLnUucmVzcC5zdGF0ZV9mbGFnczsKLSsKLSsgICAgdHNiLT5idWZmZXIgPSBnX21hbGxvYyhwZ3MudS5yZXNwLnRvdGxlbmd0aCk7Ci0rICAgIG1lbWNweSh0c2ItPmJ1ZmZlciwgcGdzLnUucmVzcC5kYXRhLCBwZ3MudS5yZXNwLmxlbmd0aCk7Ci0rICAgIHRzYi0+c2l6ZSA9IHBncy51LnJlc3AubGVuZ3RoOwotKwotKyAgICAvKiBpZiB0aGVyZSBhcmUgYnl0ZXMgbGVmdCB0byBnZXQgdXNlIHJlYWQoKSBpbnRlcmZhY2UgKi8KLSsgICAgd2hpbGUgKHRzYi0+c2l6ZSA8IHBncy51LnJlc3AudG90bGVuZ3RoKSB7Ci0rICAgICAgICB0b19yZWFkID0gcGdzLnUucmVzcC50b3RsZW5ndGggLSB0c2ItPnNpemU7Ci0rICAgICAgICBpZiAodW5saWtlbHkodG9fcmVhZCA+IFNTSVpFX01BWCkpIHsKLSsgICAgICAgICAgICB0b19yZWFkID0gU1NJWkVfTUFYOwotKyAgICAgICAgfQotKwotKyAgICAgICAgbiA9IHJlYWQoZmQsICZ0c2ItPmJ1ZmZlclt0c2ItPnNpemVdLCB0b19yZWFkKTsKLSsgICAgICAgIGlmIChuICE9IHRvX3JlYWQpIHsKLSsgICAgICAgICAgICBlcnJvcl9yZXBvcnQoIkNvdWxkIG5vdCByZWFkIHN0YXRlYmxvYiAodHlwZSAlZCkgOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgZ290byBlcnJfZXhpdDsKLSsgICAgICAgIH0KLSsgICAgICAgIHRzYi0+c2l6ZSArPSB0b19yZWFkOwotKyAgICB9Ci0rCi0rICAgIERQUklOVEYoInRwbV91dGlsOiBnb3Qgc3RhdGUgYmxvYiB0eXBlICVkLCAlZCBieXRlcywgZmxhZ3MgMHglMDh4LCAiCi0rICAgICAgICAgICAgImRlY3J5cHRlZD0lZFxuIiwgdHlwZSwgdHNiLT5zaXplLCAqZmxhZ3MsIGRlY3J5cHRlZF9ibG9iKTsKLSsKLSsgICAgcmV0dXJuIDA7Ci0rCi0rZXJyX2V4aXQ6Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStpbnQgdHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYnMoaW50IHRwbV9mZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCi0rewotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5ULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnBlcm1hbmVudCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+cGVybWFuZW50X2ZsYWdzKSB8fAotKyAgICAgICB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9WT0xBVElMRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsX2ZsYWdzKSB8fAotKyAgICAgICB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9TQVZFU1RBVEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5zYXZlc3RhdGVfZmxhZ3MpKSB7Ci0rICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotKwotKyBlcnJfZXhpdDoKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT52b2xhdGlsKTsKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT5wZXJtYW5lbnQpOwotKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KCZ0cG1fYmxvYnMtPnNhdmVzdGF0ZSk7Ci0rCi0rICAgIHJldHVybiAxOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChpbnQgZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW5ndGgpCi0rewotKyAgICBwdG1fc2V0c3RhdGUgcHNzOwotKwotKyAgICBwc3MudS5yZXEuc3RhdGVfZmxhZ3MgPSBmbGFnczsKLSsgICAgcHNzLnUucmVxLnR5cGUgPSB0eXBlOwotKyAgICBwc3MudS5yZXEubGVuZ3RoID0gbGVuZ3RoOwotKwotKyAgICBpZiAoaW9jdGwoZmQsIFBUTV9TRVRfU1RBVEVCTE9CLCAmcHNzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiQ1VTRSBUUE0gUFRNX1NFVF9TVEFURUJMT0IgaW9jdGwgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIGlmIChwc3MudS5yZXNwLnRwbV9yZXN1bHQgIT0gMCkgewotKyAgICAgICAgZXJyb3JfcmVwb3J0KCJTZXR0aW5nIHRoZSBzdGF0ZWJsb2IgKHR5cGUgJWQpIGZhaWxlZCB3aXRoIGEgVFBNICIKLSsgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgMHgleCIsIHR5cGUsIHBzcy51LnJlc3AudHBtX3Jlc3VsdCk7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rCi0rLyoKLSsgKiBUcmFuc2ZlciBhIFRQTSBzdGF0ZSBibG9iIHRvIHRoZSBDVVNFIFRQTS4KLSsgKgotKyAqIEBmZDogZmlsZSBkZXNjcmlwdG9yIHRvIHRhbGsgdG8gdGhlIENVU0UgVFBNCi0rICogQHR5cGU6IHRoZSB0eXBlIG9mIFRQTSBzdGF0ZSBibG9iIHRvIHRyYW5zZmVyCi0rICogQHRzYjogVFBNU2l6ZUJ1ZmZlciBjb250YWluaW5nIHRoZSBUUE0gc3RhdGUgYmxvYgotKyAqIEBmbGFnczogRmxhZ3MgZGVzY3JpYmluZyB0aGUgKGVuY3J5cHRpb24pIHN0YXRlIG9mIHRoZSBUUE0gc3RhdGUgYmxvYgotKyAqLwotK3N0YXRpYyBpbnQgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYihpbnQgZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVNpemVkQnVmZmVyICp0c2IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKQotK3sKLSsgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsKLSsgICAgc3NpemVfdCBuOwotKyAgICBzaXplX3QgdG9fd3JpdGU7Ci0rCi0rICAgIC8qIGluaXRpYXRlIHRoZSB0cmFuc2ZlciB0byB0aGUgQ1VTRSBUUE0gKi8KLSsgICAgaWYgKHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChmZCwgZmxhZ3MsIHR5cGUsIDApKSB7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICAvKiB1c2UgdGhlIHdyaXRlKCkgaW50ZXJmYWNlIGZvciB0cmFuc2ZlcnJpbmcgdGhlIHN0YXRlIGJsb2IgKi8KLSsgICAgd2hpbGUgKG9mZnNldCA8IHRzYi0+c2l6ZSkgewotKyAgICAgICAgdG9fd3JpdGUgPSB0c2ItPnNpemUgLSBvZmZzZXQ7Ci0rICAgICAgICBpZiAodW5saWtlbHkodG9fd3JpdGUgPiBTU0laRV9NQVgpKSB7Ci0rICAgICAgICAgICAgdG9fd3JpdGUgPSBTU0laRV9NQVg7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBuID0gd3JpdGUoZmQsICZ0c2ItPmJ1ZmZlcltvZmZzZXRdLCB0b193cml0ZSk7Ci0rICAgICAgICBpZiAobiAhPSB0b193cml0ZSkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiV3JpdGluZyB0aGUgc3RhdGVibG9iICh0eXBlICVkKSBmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICAgICAgfQotKyAgICAgICAgb2Zmc2V0ICs9IHRvX3dyaXRlOwotKyAgICB9Ci0rCi0rICAgIC8qIGluaWRpY2F0ZSB0aGF0IHRoZSB0cmFuc2ZlciBpcyBmaW5pc2hlZCAqLwotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9kb19zZXRfc3RhdGVibG9iX2lvY3RsKGZkLCBmbGFncywgdHlwZSwgMCkpIHsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsKLSsgICAgRFBSSU5URigidHBtX3V0aWw6IHNldCB0aGUgc3RhdGUgYmxvYiB0eXBlICVkLCAlZCBieXRlcywgZmxhZ3MgMHglMDh4XG4iLAotKyAgICAgICAgICAgIHR5cGUsIHRzYi0+c2l6ZSwgZmxhZ3MpOwotKwotKyAgICByZXR1cm4gMDsKLSsKLStlcnJfZXhpdDoKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK2ludCB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKQotK3sKLSsgICAgcHRtX3JlcyByZXM7Ci0rCi0rICAgIGlmIChpb2N0bCh0cG1fZmQsIFBUTV9TVE9QLCAmcmVzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX3Bhc3N0aHJvdWdoOiBDb3VsZCBub3Qgc3RvcCAiCi0rICAgICAgICAgICAgICAgICAgICAgInRoZSBDVVNFIFRQTTogJXMgKCVpKSIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5ULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5wZXJtYW5lbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+cGVybWFuZW50X2ZsYWdzKSB8fAotKyAgICAgICAgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfVk9MQVRJTEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnZvbGF0aWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+dm9sYXRpbF9mbGFncykgfHwKLSsgICAgICAgIHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1NBVkVTVEFURSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMtPnNhdmVzdGF0ZV9mbGFncykpIHsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3V0aWwuaCBiL2h3L3RwbS90cG1fdXRpbC5oCi1pbmRleCBkZjc2MjQ1ZTZlLi5jMjQwNzFkODEyIDEwMDY0NAotLS0tIGEvaHcvdHBtL3RwbV91dGlsLmgKLSsrKyBiL2h3L3RwbS90cG1fdXRpbC5oCi1AQCAtMjYsNCArMjYsMTEgQEAKLSAKLSBpbnQgdHBtX3V0aWxfdGVzdF90cG1kZXYoaW50IHRwbV9mZCwgVFBNVmVyc2lvbiAqdHBtX3ZlcnNpb24pOwotIAotK2ludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icyk7Ci0rCi0raW50IHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpOwotKwotICNlbmRpZiAvKiBUUE1fVFBNX1VUSUxfSCAqLwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmggYi9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oCi1pbmRleCBiNThmNTJkMzlmLi4zNDAzODIxYjlkIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAotKysrIGIvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAotQEAgLTYyLDYgKzYyLDE4IEBAIHR5cGVkZWYgc3RydWN0IFRQTVNpemVkQnVmZmVyIHsKLSAgICAgdWludDhfdCAgKmJ1ZmZlcjsKLSB9IFRQTVNpemVkQnVmZmVyOwotIAotKy8qIGJsb2JzIGZyb20gdGhlIFRQTTsgcGFydCBvZiBWTSBzdGF0ZSB3aGVuIG1pZ3JhdGluZyAqLwotK3R5cGVkZWYgc3RydWN0IFRQTUJsb2JCdWZmZXJzIHsKLSsgICAgdWludDMyX3QgcGVybWFuZW50X2ZsYWdzOwotKyAgICBUUE1TaXplZEJ1ZmZlciBwZXJtYW5lbnQ7Ci0rCi0rICAgIHVpbnQzMl90IHZvbGF0aWxfZmxhZ3M7Ci0rICAgIFRQTVNpemVkQnVmZmVyIHZvbGF0aWw7Ci0rCi0rICAgIHVpbnQzMl90IHNhdmVzdGF0ZV9mbGFnczsKLSsgICAgVFBNU2l6ZWRCdWZmZXIgc2F2ZXN0YXRlOwotK30gVFBNQmxvYkJ1ZmZlcnM7Ci0rCi0gc3RydWN0IFRQTURyaXZlck9wcyB7Ci0gICAgIGVudW0gVHBtVHlwZSB0eXBlOwotICAgICBjb25zdCBRZW11T3B0RGVzYyAqb3B0czsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNjcyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMGIxZWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MDQgKzAsMCBAQAotRnJvbSAzZDkwYzYyNTQ4NjM2OTNhNmIxM2Q5MThkMmI4NjgyZTA4YmJjNjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDI4IEF1ZyAyMDE3IDE0OjI5OjA2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZnYTogc3RvcCBwYXNzaW5nIHBvaW50ZXJzIHRvIHZnYV9kcmF3X2xpbmUqIGZ1bmN0aW9ucwotCi1JbnN0ZWFkIHBhc3MgYXJvdW5kIHRoZSBhZGRyZXNzIChha2Egb2Zmc2V0IGludG8gdmdhIG1lbW9yeSkuCi1BZGQgdmdhX3JlYWRfKiBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIGFwcGx5IHZiZV9zaXplX21hc2sgdG8KLXRoZSBhZGRyZXNzLCB0byBtYWtlIHN1cmUgdGhlIGFkZHJlc3Mgc3RheXMgd2l0aGluIHRoZSB2YWxpZAotcmFuZ2UsIHNpbWlsYXIgdG8gdGhlIGNpcnJ1cyBibGl0dGVyIGZpeGVzIChjb21taXRzIGZmYWY4NTc3NzgKLWFuZCAwMjZhZWZmY2I0KS4KLQotSW1wYWN0OiAgRG9TIGZvciBwcml2aWxlZ2VkIGd1ZXN0IHVzZXJzLiAgcWVtdSBjcmFzaGVzIHdpdGgKLWEgc2VnZmF1bHQsIHdoZW4gaGl0dGluZyB0aGUgZ3VhcmQgcGFnZSBhZnRlciB2Z2EgbWVtb3J5Ci1hbGxvY2F0aW9uLCB3aGlsZSByZWFkaW5nIHZnYSBtZW1vcnkgZm9yIGRpc3BsYXkgdXBkYXRlcy4KLQotRml4ZXM6IENWRS0yMDE3LTEzNjcyCi1DYzogUCBKIFAgPHBwYW5kaXRAcmVkaGF0LmNvbT4KLVJlcG9ydGVkLWJ5OiBEYXZpZCBCdWNoYW5hbiA8ZEB2aWRidWNoYW5hbi5jby51az4KLVNpZ25lZC1vZmYtYnk6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgotTWVzc2FnZS1pZDogMjAxNzA4MjgxMjI5MDYuMTg5OTMtMS1rcmF4ZWxAcmVkaGF0LmNvbQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD0zZDkwYzYyNTQ4NjM2OTNhNmIxM2Q5MThkMmI4NjgyZTA4YmJjNjgxXQotCi1DVkU6IENWRS0yMDE3LTEzNjcyCi0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGh3L2Rpc3BsYXkvdmdhLWhlbHBlcnMuaCB8IDIwMiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGh3L2Rpc3BsYXkvdmdhLmMgICAgICAgICB8ICAgNSArLQotIGh3L2Rpc3BsYXkvdmdhX2ludC5oICAgICB8ICAgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKSwgOTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmggYi9ody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmgKLWluZGV4IDk0ZjZkZTIuLjVhNzUyYjMgMTAwNjQ0Ci0tLS0gYS9ody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmgKLSsrKyBiL2h3L2Rpc3BsYXkvdmdhLWhlbHBlcnMuaAotQEAgLTk1LDIwICs5NSw0NiBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19nbHlwaDkodWludDhfdCAqZCwgaW50IGxpbmVzaXplLAotICAgICB9IHdoaWxlICgtLWgpOwotIH0KLSAKLStzdGF0aWMgaW5saW5lIHVpbnQ4X3QgdmdhX3JlYWRfYnl0ZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50MzJfdCBhZGRyKQotK3sKLSsgICAgcmV0dXJuIHZnYS0+dnJhbV9wdHJbYWRkciAmIHZnYS0+dmJlX3NpemVfbWFza107Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgdmdhX3JlYWRfd29yZF9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50MzJfdCBhZGRyKQotK3sKLSsgICAgdWludDMyX3Qgb2Zmc2V0ID0gYWRkciAmIHZnYS0+dmJlX3NpemVfbWFzayAmIH4xOwotKyAgICB1aW50MTZfdCAqcHRyID0gKHVpbnQxNl90ICopKHZnYS0+dnJhbV9wdHIgKyBvZmZzZXQpOwotKyAgICByZXR1cm4gbGR1d19sZV9wKHB0cik7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgdmdhX3JlYWRfd29yZF9iZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50MzJfdCBhZGRyKQotK3sKLSsgICAgdWludDMyX3Qgb2Zmc2V0ID0gYWRkciAmIHZnYS0+dmJlX3NpemVfbWFzayAmIH4xOwotKyAgICB1aW50MTZfdCAqcHRyID0gKHVpbnQxNl90ICopKHZnYS0+dnJhbV9wdHIgKyBvZmZzZXQpOwotKyAgICByZXR1cm4gbGR1d19iZV9wKHB0cik7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgdmdhX3JlYWRfZHdvcmRfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDMyX3QgYWRkcikKLSt7Ci0rICAgIHVpbnQzMl90IG9mZnNldCA9IGFkZHIgJiB2Z2EtPnZiZV9zaXplX21hc2sgJiB+MzsKLSsgICAgdWludDMyX3QgKnB0ciA9ICh1aW50MzJfdCAqKSh2Z2EtPnZyYW1fcHRyICsgb2Zmc2V0KTsKLSsgICAgcmV0dXJuIGxkbF9sZV9wKHB0cik7Ci0rfQotKwotIC8qCi0gICogNCBjb2xvciBtb2RlCi0gICovCi0tc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMihWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIHVpbnQzMl90IHBsYW5lX21hc2ssICpwYWxldHRlLCBkYXRhLCB2OwotICAgICBpbnQgeDsKLSAKLS0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7Ci0tICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbczEtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07Ci0rICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKLSsgICAgcGxhbmVfbWFzayA9IG1hc2sxNlt2Z2EtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07Ci0gICAgIHdpZHRoID4+PSAzOwotICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0tICAgICAgICBkYXRhID0gKCh1aW50MzJfdCAqKXMpWzBdOwotKyAgICAgICAgZGF0YSA9IHZnYV9yZWFkX2R3b3JkX2xlKHZnYSwgYWRkcik7Ci0gICAgICAgICBkYXRhICY9IHBsYW5lX21hc2s7Ci0gICAgICAgICB2ID0gZXhwYW5kMltHRVRfUExBTkUoZGF0YSwgMCldOwotICAgICAgICAgdiB8PSBleHBhbmQyW0dFVF9QTEFORShkYXRhLCAyKV0gPDwgMjsKLUBAIC0xMjQsNyArMTUwLDcgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzZdID0gcGFsZXR0ZVsodiA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbN10gPSBwYWxldHRlWyh2ID4+IDApICYgMHhmXTsKLSAgICAgICAgIGQgKz0gMzI7Ci0tICAgICAgICBzICs9IDQ7Ci0rICAgICAgICBhZGRyICs9IDQ7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTM0LDE3ICsxNjAsMTcgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotIC8qCi0gICogNCBjb2xvciBtb2RlLCBkdXAyIGhvcml6b250YWwKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMmQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMmQyKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICB1aW50MzJfdCBwbGFuZV9tYXNrLCAqcGFsZXR0ZSwgZGF0YSwgdjsKLSAgICAgaW50IHg7Ci0gCi0tICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOwotLSAgICBwbGFuZV9tYXNrID0gbWFzazE2W3MxLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOwotKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7Ci0rICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbdmdhLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOwotICAgICB3aWR0aCA+Pj0gMzsKLSAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewotLSAgICAgICAgZGF0YSA9ICgodWludDMyX3QgKilzKVswXTsKLSsgICAgICAgIGRhdGEgPSB2Z2FfcmVhZF9kd29yZF9sZSh2Z2EsIGFkZHIpOwotICAgICAgICAgZGF0YSAmPSBwbGFuZV9tYXNrOwotICAgICAgICAgdiA9IGV4cGFuZDJbR0VUX1BMQU5FKGRhdGEsIDApXTsKLSAgICAgICAgIHYgfD0gZXhwYW5kMltHRVRfUExBTkUoZGF0YSwgMildIDw8IDI7Ci1AQCAtMTYwLDI0ICsxODYsMjQgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTJkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gICAgICAgICBQVVRfUElYRUwyKGQsIDYsIHBhbGV0dGVbKHYgPj4gNCkgJiAweGZdKTsKLSAgICAgICAgIFBVVF9QSVhFTDIoZCwgNywgcGFsZXR0ZVsodiA+PiAwKSAmIDB4Zl0pOwotICAgICAgICAgZCArPSA2NDsKLS0gICAgICAgIHMgKz0gNDsKLSsgICAgICAgIGFkZHIgKz0gNDsKLSAgICAgfQotIH0KLSAKLSAvKgotICAqIDE2IGNvbG9yIG1vZGUKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNChWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQotK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0KFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgdWludDMyX3QgcGxhbmVfbWFzaywgZGF0YSwgdiwgKnBhbGV0dGU7Ci0gICAgIGludCB4OwotIAotLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKLS0gICAgcGxhbmVfbWFzayA9IG1hc2sxNltzMS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSsgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOwotKyAgICBwbGFuZV9tYXNrID0gbWFzazE2W3ZnYS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSAgICAgd2lkdGggPj49IDM7Ci0gICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLS0gICAgICAgIGRhdGEgPSAoKHVpbnQzMl90ICopcylbMF07Ci0rICAgICAgICBkYXRhID0gdmdhX3JlYWRfZHdvcmRfbGUodmdhLCBhZGRyKTsKLSAgICAgICAgIGRhdGEgJj0gcGxhbmVfbWFzazsKLSAgICAgICAgIHYgPSBleHBhbmQ0W0dFVF9QTEFORShkYXRhLCAwKV07Ci0gICAgICAgICB2IHw9IGV4cGFuZDRbR0VUX1BMQU5FKGRhdGEsIDEpXSA8PCAxOwotQEAgLTE5MiwyNCArMjE4LDI0IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0KFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLSAgICAgICAgICgodWludDMyX3QgKilkKVs2XSA9IHBhbGV0dGVbKHYgPj4gNCkgJiAweGZdOwotICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzddID0gcGFsZXR0ZVsodiA+PiAwKSAmIDB4Zl07Ci0gICAgICAgICBkICs9IDMyOwotLSAgICAgICAgcyArPSA0OwotKyAgICAgICAgYWRkciArPSA0OwotICAgICB9Ci0gfQotIAotIC8qCi0gICogMTYgY29sb3IgbW9kZSwgZHVwMiBob3Jpem9udGFsCi0gICovCi0tc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTRkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTRkMihWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgdWludDMyX3QgcGxhbmVfbWFzaywgZGF0YSwgdiwgKnBhbGV0dGU7Ci0gICAgIGludCB4OwotIAotLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKLS0gICAgcGxhbmVfbWFzayA9IG1hc2sxNltzMS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSsgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOwotKyAgICBwbGFuZV9tYXNrID0gbWFzazE2W3ZnYS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSAgICAgd2lkdGggPj49IDM7Ci0gICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLS0gICAgICAgIGRhdGEgPSAoKHVpbnQzMl90ICopcylbMF07Ci0rICAgICAgICBkYXRhID0gdmdhX3JlYWRfZHdvcmRfbGUodmdhLCBhZGRyKTsKLSAgICAgICAgIGRhdGEgJj0gcGxhbmVfbWFzazsKLSAgICAgICAgIHYgPSBleHBhbmQ0W0dFVF9QTEFORShkYXRhLCAwKV07Ci0gICAgICAgICB2IHw9IGV4cGFuZDRbR0VUX1BMQU5FKGRhdGEsIDEpXSA8PCAxOwotQEAgLTIyNCw3ICsyNTAsNyBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNGQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLSAgICAgICAgIFBVVF9QSVhFTDIoZCwgNiwgcGFsZXR0ZVsodiA+PiA0KSAmIDB4Zl0pOwotICAgICAgICAgUFVUX1BJWEVMMihkLCA3LCBwYWxldHRlWyh2ID4+IDApICYgMHhmXSk7Ci0gICAgICAgICBkICs9IDY0OwotLSAgICAgICAgcyArPSA0OwotKyAgICAgICAgYWRkciArPSA0OwotICAgICB9Ci0gfQotIAotQEAgLTIzMywyMSArMjU5LDIxIEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0ZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotICAqCi0gICogWFhYOiBhZGQgcGxhbmVfbWFzayBzdXBwb3J0IChuZXZlciB1c2VkIGluIHN0YW5kYXJkIFZHQSBtb2RlcykKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lOGQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lOGQyKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICB1aW50MzJfdCAqcGFsZXR0ZTsKLSAgICAgaW50IHg7Ci0gCi0tICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOwotKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7Ci0gICAgIHdpZHRoID4+PSAzOwotICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0tICAgICAgICBQVVRfUElYRUwyKGQsIDAsIHBhbGV0dGVbc1swXV0pOwotLSAgICAgICAgUFVUX1BJWEVMMihkLCAxLCBwYWxldHRlW3NbMV1dKTsKLS0gICAgICAgIFBVVF9QSVhFTDIoZCwgMiwgcGFsZXR0ZVtzWzJdXSk7Ci0tICAgICAgICBQVVRfUElYRUwyKGQsIDMsIHBhbGV0dGVbc1szXV0pOwotKyAgICAgICAgUFVUX1BJWEVMMihkLCAwLCBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMCldKTsKLSsgICAgICAgIFBVVF9QSVhFTDIoZCwgMSwgcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpXSk7Ci0rICAgICAgICBQVVRfUElYRUwyKGQsIDIsIHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKV0pOwotKyAgICAgICAgUFVUX1BJWEVMMihkLCAzLCBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMyldKTsKLSAgICAgICAgIGQgKz0gMzI7Ci0tICAgICAgICBzICs9IDQ7Ci0rICAgICAgICBhZGRyICs9IDQ7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMjU2LDYzICsyODIsNjMgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZThkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gICoKLSAgKiBYWFg6IGFkZCBwbGFuZV9tYXNrIHN1cHBvcnQgKG5ldmVyIHVzZWQgaW4gc3RhbmRhcmQgVkdBIG1vZGVzKQotICAqLwotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU4KFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTgoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICB1aW50MzJfdCAqcGFsZXR0ZTsKLSAgICAgaW50IHg7Ci0gCi0tICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOwotKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7Ci0gICAgIHdpZHRoID4+PSAzOwotICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0tICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSBwYWxldHRlW3NbMF1dOwotLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzFdID0gcGFsZXR0ZVtzWzFdXTsKLS0gICAgICAgICgodWludDMyX3QgKilkKVsyXSA9IHBhbGV0dGVbc1syXV07Ci0tICAgICAgICAoKHVpbnQzMl90ICopZClbM10gPSBwYWxldHRlW3NbM11dOwotLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzRdID0gcGFsZXR0ZVtzWzRdXTsKLS0gICAgICAgICgodWludDMyX3QgKilkKVs1XSA9IHBhbGV0dGVbc1s1XV07Ci0tICAgICAgICAoKHVpbnQzMl90ICopZClbNl0gPSBwYWxldHRlW3NbNl1dOwotLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzddID0gcGFsZXR0ZVtzWzddXTsKLSsgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKV07Ci0rICAgICAgICAoKHVpbnQzMl90ICopZClbMV0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSldOwotKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzJdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpXTsKLSsgICAgICAgICgodWludDMyX3QgKilkKVszXSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAzKV07Ci0rICAgICAgICAoKHVpbnQzMl90ICopZClbNF0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgNCldOwotKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzVdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDUpXTsKLSsgICAgICAgICgodWludDMyX3QgKilkKVs2XSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyA2KV07Ci0rICAgICAgICAoKHVpbnQzMl90ICopZClbN10gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgNyldOwotICAgICAgICAgZCArPSAzMjsKLS0gICAgICAgIHMgKz0gODsKLSsgICAgICAgIGFkZHIgKz0gODsKLSAgICAgfQotIH0KLSAKLSAvKgotICAqIDE1IGJpdCBjb2xvcgotICAqLwotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9sZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTVfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgaW50IHc7Ci0gICAgIHVpbnQzMl90IHYsIHIsIGcsIGI7Ci0gCi0gICAgIHcgPSB3aWR0aDsKLSAgICAgZG8gewotLSAgICAgICAgdiA9IGxkdXdfbGVfcCgodm9pZCAqKXMpOwotKyAgICAgICAgdiA9IHZnYV9yZWFkX3dvcmRfbGUodmdhLCBhZGRyKTsKLSAgICAgICAgIHIgPSAodiA+PiA3KSAmIDB4Zjg7Ci0gICAgICAgICBnID0gKHYgPj4gMikgJiAweGY4OwotICAgICAgICAgYiA9ICh2IDw8IDMpICYgMHhmODsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSAyOwotKyAgICAgICAgYWRkciArPSAyOwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTVfYmUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgaW50IHc7Ci0gICAgIHVpbnQzMl90IHYsIHIsIGcsIGI7Ci0gCi0gICAgIHcgPSB3aWR0aDsKLSAgICAgZG8gewotLSAgICAgICAgdiA9IGxkdXdfYmVfcCgodm9pZCAqKXMpOwotKyAgICAgICAgdiA9IHZnYV9yZWFkX3dvcmRfYmUodmdhLCBhZGRyKTsKLSAgICAgICAgIHIgPSAodiA+PiA3KSAmIDB4Zjg7Ci0gICAgICAgICBnID0gKHYgPj4gMikgJiAweGY4OwotICAgICAgICAgYiA9ICh2IDw8IDMpICYgMHhmODsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSAyOwotKyAgICAgICAgYWRkciArPSAyOwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0gfQotQEAgLTMyMCwzOCArMzQ2LDM4IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gLyoKLSAgKiAxNiBiaXQgY29sb3IKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfbGUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE2X2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIGludCB3OwotICAgICB1aW50MzJfdCB2LCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIHYgPSBsZHV3X2xlX3AoKHZvaWQgKilzKTsKLSsgICAgICAgIHYgPSB2Z2FfcmVhZF93b3JkX2xlKHZnYSwgYWRkcik7Ci0gICAgICAgICByID0gKHYgPj4gOCkgJiAweGY4OwotICAgICAgICAgZyA9ICh2ID4+IDMpICYgMHhmYzsKLSAgICAgICAgIGIgPSAodiA8PCAzKSAmIDB4Zjg7Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKLS0gICAgICAgIHMgKz0gMjsKLSsgICAgICAgIGFkZHIgKz0gMjsKLSAgICAgICAgIGQgKz0gNDsKLSAgICAgfSB3aGlsZSAoLS13ICE9IDApOwotIH0KLSAKLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE2X2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIGludCB3OwotICAgICB1aW50MzJfdCB2LCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIHYgPSBsZHV3X2JlX3AoKHZvaWQgKilzKTsKLSsgICAgICAgIHYgPSB2Z2FfcmVhZF93b3JkX2JlKHZnYSwgYWRkcik7Ci0gICAgICAgICByID0gKHYgPj4gOCkgJiAweGY4OwotICAgICAgICAgZyA9ICh2ID4+IDMpICYgMHhmYzsKLSAgICAgICAgIGIgPSAodiA8PCAzKSAmIDB4Zjg7Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKLS0gICAgICAgIHMgKz0gMjsKLSsgICAgICAgIGFkZHIgKz0gMjsKLSAgICAgICAgIGQgKz0gNDsKLSAgICAgfSB3aGlsZSAoLS13ICE9IDApOwotIH0KLUBAIC0zNTksMzYgKzM4NSwzNiBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotIC8qCi0gICogMjQgYml0IGNvbG9yCi0gICovCi0tc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTI0X2xlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQotK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyNF9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICBpbnQgdzsKLSAgICAgdWludDMyX3QgciwgZywgYjsKLSAKLSAgICAgdyA9IHdpZHRoOwotICAgICBkbyB7Ci0tICAgICAgICBiID0gc1swXTsKLS0gICAgICAgIGcgPSBzWzFdOwotLSAgICAgICAgciA9IHNbMl07Ci0rICAgICAgICBiID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKTsKLSsgICAgICAgIGcgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpOwotKyAgICAgICAgciA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMik7Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKLS0gICAgICAgIHMgKz0gMzsKLSsgICAgICAgIGFkZHIgKz0gMzsKLSAgICAgICAgIGQgKz0gNDsKLSAgICAgfSB3aGlsZSAoLS13ICE9IDApOwotIH0KLSAKLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMjRfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTI0X2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIGludCB3OwotICAgICB1aW50MzJfdCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIHIgPSBzWzBdOwotLSAgICAgICAgZyA9IHNbMV07Ci0tICAgICAgICBiID0gc1syXTsKLSsgICAgICAgIHIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDApOwotKyAgICAgICAgZyA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSk7Ci0rICAgICAgICBiID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKTsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSAzOwotKyAgICAgICAgYWRkciArPSAzOwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0gfQotQEAgLTM5Niw0NCArNDIyLDM2IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyNF9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gLyoKLSAgKiAzMiBiaXQgY29sb3IKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMzJfbGUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTMyX2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0tI2lmbmRlZiBIT1NUX1dPUkRTX0JJR0VORElBTgotLSAgICBtZW1jcHkoZCwgcywgd2lkdGggKiA0KTsKLS0jZWxzZQotICAgICBpbnQgdzsKLSAgICAgdWludDMyX3QgciwgZywgYjsKLSAKLSAgICAgdyA9IHdpZHRoOwotICAgICBkbyB7Ci0tICAgICAgICBiID0gc1swXTsKLS0gICAgICAgIGcgPSBzWzFdOwotLSAgICAgICAgciA9IHNbMl07Ci0rICAgICAgICBiID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKTsKLSsgICAgICAgIGcgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpOwotKyAgICAgICAgciA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMik7Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKLS0gICAgICAgIHMgKz0gNDsKLSsgICAgICAgIGFkZHIgKz0gNDsKLSAgICAgICAgIGQgKz0gNDsKLSAgICAgfSB3aGlsZSAoLS13ICE9IDApOwotLSNlbmRpZgotIH0KLSAKLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMzJfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTMyX2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0tI2lmZGVmIEhPU1RfV09SRFNfQklHRU5ESUFOCi0tICAgIG1lbWNweShkLCBzLCB3aWR0aCAqIDQpOwotLSNlbHNlCi0gICAgIGludCB3OwotICAgICB1aW50MzJfdCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIHIgPSBzWzFdOwotLSAgICAgICAgZyA9IHNbMl07Ci0tICAgICAgICBiID0gc1szXTsKLSsgICAgICAgIHIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpOwotKyAgICAgICAgZyA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMik7Ci0rICAgICAgICBiID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAzKTsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSA0OwotKyAgICAgICAgYWRkciArPSA0OwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0tI2VuZGlmCi0gfQotZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvdmdhLmMgYi9ody9kaXNwbGF5L3ZnYS5jCi1pbmRleCBhZDdhNDY1Li42ZmM4Yzg3IDEwMDY0NAotLS0tIGEvaHcvZGlzcGxheS92Z2EuYwotKysrIGIvaHcvZGlzcGxheS92Z2EuYwotQEAgLTEwMDUsNyArMTAwNSw3IEBAIHZvaWQgdmdhX21lbV93cml0ZWIoVkdBQ29tbW9uU3RhdGUgKnMsIGh3YWRkciBhZGRyLCB1aW50MzJfdCB2YWwpCi0gfQotIAotIHR5cGVkZWYgdm9pZCB2Z2FfZHJhd19saW5lX2Z1bmMoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNyY2FkZHIsIGludCB3aWR0aCk7Ci0gCi0gI2luY2x1ZGUgInZnYS1oZWxwZXJzLmgiCi0gCi1AQCAtMTY2Niw3ICsxNjY2LDcgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfZ3JhcGhpYyhWR0FDb21tb25TdGF0ZSAqcywgaW50IGZ1bGxfdXBkYXRlKQotICAgICAgICAgICAgIGlmICh5X3N0YXJ0IDwgMCkKLSAgICAgICAgICAgICAgICAgeV9zdGFydCA9IHk7Ci0gICAgICAgICAgICAgaWYgKCEoaXNfYnVmZmVyX3NoYXJlZChzdXJmYWNlKSkpIHsKLS0gICAgICAgICAgICAgICAgdmdhX2RyYXdfbGluZShzLCBkLCBzLT52cmFtX3B0ciArIGFkZHIsIHdpZHRoKTsKLSsgICAgICAgICAgICAgICAgdmdhX2RyYXdfbGluZShzLCBkLCBhZGRyLCB3aWR0aCk7Ci0gICAgICAgICAgICAgICAgIGlmIChzLT5jdXJzb3JfZHJhd19saW5lKQotICAgICAgICAgICAgICAgICAgICAgcy0+Y3Vyc29yX2RyYXdfbGluZShzLCBkLCB5KTsKLSAgICAgICAgICAgICB9Ci1AQCAtMjE3MCw2ICsyMTcwLDcgQEAgdm9pZCB2Z2FfY29tbW9uX2luaXQoVkdBQ29tbW9uU3RhdGUgKnMsIE9iamVjdCAqb2JqLCBib29sIGdsb2JhbF92bXN0YXRlKQotICAgICBpZiAoIXMtPnZiZV9zaXplKSB7Ci0gICAgICAgICBzLT52YmVfc2l6ZSA9IHMtPnZyYW1fc2l6ZTsKLSAgICAgfQotKyAgICBzLT52YmVfc2l6ZV9tYXNrID0gcy0+dmJlX3NpemUgLSAxOwotIAotICAgICBzLT5pc192YmVfdm1zdGF0ZSA9IDE7Ci0gICAgIG1lbW9yeV9yZWdpb25faW5pdF9yYW1fbm9taWdyYXRlKCZzLT52cmFtLCBvYmosICJ2Z2EudnJhbSIsIHMtPnZyYW1fc2l6ZSwKLWRpZmYgLS1naXQgYS9ody9kaXNwbGF5L3ZnYV9pbnQuaCBiL2h3L2Rpc3BsYXkvdmdhX2ludC5oCi1pbmRleCBkZDZjOTU4Li5hZDM0YTFmIDEwMDY0NAotLS0tIGEvaHcvZGlzcGxheS92Z2FfaW50LmgKLSsrKyBiL2h3L2Rpc3BsYXkvdmdhX2ludC5oCi1AQCAtOTQsNiArOTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBWR0FDb21tb25TdGF0ZSB7Ci0gICAgIHVpbnQzMl90IHZyYW1fc2l6ZTsKLSAgICAgdWludDMyX3QgdnJhbV9zaXplX21iOyAvKiBwcm9wZXJ0eSAqLwotICAgICB1aW50MzJfdCB2YmVfc2l6ZTsKLSsgICAgdWludDMyX3QgdmJlX3NpemVfbWFzazsKLSAgICAgdWludDMyX3QgbGF0Y2g7Ci0gICAgIGJvb2wgaGFzX2NoYWluNF9hbGlhczsKLSAgICAgTWVtb3J5UmVnaW9uIGNoYWluNF9hbGlhczsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2QwNjk1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gZTY1Mjk0MTU3ZDRiNjkzOTNiM2Y4MTljOTlmNGY2NDc0NTJiNDhlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyOCBBdWcgMjAxNyAxNDozMzowNyArMDIwMAotU3ViamVjdDogW1BBVENIXSB2Z2E6IGZpeCBkaXNwbGF5IHVwZGF0ZSByZWdpb24gY2FsY3VsYXRpb24gKHNwbGl0IHNjcmVlbikKLQotdmdhIGRpc3BsYXkgdXBkYXRlIG1pcy1jYWxjdWxhdGVkIHRoZSByZWdpb24gZm9yIHRoZSBkaXJ0eSBiaXRtYXAKLXNuYXBzaG90IGluIGNhc2Ugc3BsaXQgc2NyZWVuIG1vZGUgaXMgdXNlZC4gIFRoaXMgY2FuIHRyaWdnZXIgYW4KLWFzc2VydCBpbiBjcHVfcGh5c2ljYWxfbWVtb3J5X3NuYXBzaG90X2dldF9kaXJ0eSgpLgotCi1JbXBhY3Q6ICBEb1MgZm9yIHByaXZpbGVnZWQgZ3Vlc3QgdXNlcnMuCi0KLUZpeGVzOiBDVkUtMjAxNy0xMzY3MwotRml4ZXM6IGZlYzVlOGM5MmJlY2FkMjIzZGY5ZDk3Mjc3MDUyMmY2NGFhZmRiNzIKLUNjOiBQIEogUCA8cHBhbmRpdEByZWRoYXQuY29tPgotUmVwb3J0ZWQtYnk6IERhdmlkIEJ1Y2hhbmFuIDxkQHZpZGJ1Y2hhbmFuLmNvLnVrPgotU2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci1NZXNzYWdlLWlkOiAyMDE3MDgyODEyMzMwNy4xNTM5Mi0xLWtyYXhlbEByZWRoYXQuY29tCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPWU2NTI5NDE1N2Q0YjY5MzkzYjNmODE5Yzk5ZjRmNjQ3NDUyYjQ4ZTNdCi0KLUNWRTogQ1ZFLTIwMTctMTM2NzMKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gaHcvZGlzcGxheS92Z2EuYyB8IDEwICsrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS92Z2EuYyBiL2h3L2Rpc3BsYXkvdmdhLmMKLWluZGV4IDM0MzMxMDIuLmFkN2E0NjUgMTAwNjQ0Ci0tLS0gYS9ody9kaXNwbGF5L3ZnYS5jCi0rKysgYi9ody9kaXNwbGF5L3ZnYS5jCi1AQCAtMTYyOCw5ICsxNjI4LDE1IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2dyYXBoaWMoVkdBQ29tbW9uU3RhdGUgKnMsIGludCBmdWxsX3VwZGF0ZSkKLSAgICAgeTEgPSAwOwotIAotICAgICBpZiAoIWZ1bGxfdXBkYXRlKSB7Ci0rICAgICAgICByYW1fYWRkcl90IHJlZ2lvbl9zdGFydCA9IGFkZHIxOwotKyAgICAgICAgcmFtX2FkZHJfdCByZWdpb25fZW5kID0gYWRkcjEgKyBsaW5lX29mZnNldCAqIGhlaWdodDsKLSAgICAgICAgIHZnYV9zeW5jX2RpcnR5X2JpdG1hcChzKTsKLS0gICAgICAgIHNuYXAgPSBtZW1vcnlfcmVnaW9uX3NuYXBzaG90X2FuZF9jbGVhcl9kaXJ0eSgmcy0+dnJhbSwgYWRkcjEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9vZmZzZXQgKiBoZWlnaHQsCi0rICAgICAgICBpZiAocy0+bGluZV9jb21wYXJlIDwgaGVpZ2h0KSB7Ci0rICAgICAgICAgICAgLyogc3BsaXQgc2NyZWVuIG1vZGUgKi8KLSsgICAgICAgICAgICByZWdpb25fc3RhcnQgPSAwOwotKyAgICAgICAgfQotKyAgICAgICAgc25hcCA9IG1lbW9yeV9yZWdpb25fc25hcHNob3RfYW5kX2NsZWFyX2RpcnR5KCZzLT52cmFtLCByZWdpb25fc3RhcnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uX2VuZCAtIHJlZ2lvbl9zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESVJUWV9NRU1PUllfVkdBKTsKLSAgICAgfQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzcxMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNzExLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTJmNzNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNzExLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSAxMjAxZDMwODUxOWYxZTkxNTg2NmQ3NTgzZDUxMzZkMDNjYzFkMzg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2FtdWVsIFRoaWJhdWx0IDxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgotRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMTozNTo1MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBzbGlycDogZml4IGNsZWFyaW5nIGlmcV9zbyBmcm9tIHBlbmRpbmcgcGFja2V0cwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGUgaWZfZmFzdHEgYW5kIGlmX2JhdGNocSBjb250YWluIG5vdCBvbmx5IHBhY2tldHMsIGJ1dCBxdWV1ZXMgb2YgcGFja2V0cwotZm9yIHRoZSBzYW1lIHNvY2tldC4gV2hlbiBzb2ZyZWUgZnJlZXMgYSBzb2NrZXQsIGl0IHRodXMgaGFzIHRvIGNsZWFyIGlmcV9zbwotZnJvbSBhbGwgdGhlIHBhY2tldHMgZnJvbSB0aGUgcXVldWVzLCBub3Qgb25seSB0aGUgZmlyc3QuCi0KLVNpZ25lZC1vZmYtYnk6IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KLVJldmlld2VkLWJ5OiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8ZjRidWdAYW1zYXQub3JnPgotQ2M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKLVNpZ25lZC1vZmYtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0O2g9MTIwMWQzMDg1MTlmMWU5MTU4NjZkNzU4M2Q1MTM2ZDAzY2MxZDM4NF0KLQotQ1ZFOiBDVkUtMjAxNy0xMzcxMQotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzbGlycC9zb2NrZXQuYyB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NsaXJwL3NvY2tldC5jIGIvc2xpcnAvc29ja2V0LmMKLWluZGV4IGVjZWMwMjkuLmNiN2I1YjYgMTAwNjQ0Ci0tLS0gYS9zbGlycC9zb2NrZXQuYwotKysrIGIvc2xpcnAvc29ja2V0LmMKLUBAIC02MCwyOSArNjAsMzYgQEAgc29jcmVhdGUoU2xpcnAgKnNsaXJwKQotIH0KLSAKLSAvKgotKyAqIFJlbW92ZSByZWZlcmVuY2VzIHRvIHNvIGZyb20gdGhlIGdpdmVuIG1lc3NhZ2UgcXVldWUuCi0rICovCi0rc3RhdGljIHZvaWQKLStzb3FmcmVlKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgcXVlaGVhZCAqcWgpCi0rewotKyAgICBzdHJ1Y3QgbWJ1ZiAqaWZxOwotKwotKyAgICBmb3IgKGlmcSA9IChzdHJ1Y3QgbWJ1ZiAqKSBxaC0+cWhfbGluazsKLSsgICAgICAgICAgICAgKHN0cnVjdCBxdWVoZWFkICopIGlmcSAhPSBxaDsKLSsgICAgICAgICAgICAgaWZxID0gaWZxLT5pZnFfbmV4dCkgewotKyAgICAgICAgaWYgKGlmcS0+aWZxX3NvID09IHNvKSB7Ci0rICAgICAgICAgICAgc3RydWN0IG1idWYgKmlmbTsKLSsgICAgICAgICAgICBpZnEtPmlmcV9zbyA9IE5VTEw7Ci0rICAgICAgICAgICAgZm9yIChpZm0gPSBpZnEtPmlmc19uZXh0OyBpZm0gIT0gaWZxOyBpZm0gPSBpZm0tPmlmc19uZXh0KSB7Ci0rICAgICAgICAgICAgICAgIGlmbS0+aWZxX3NvID0gTlVMTDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgIH0KLSt9Ci0rCi0rLyoKLSAgKiByZW1xdWUgYW5kIGZyZWUgYSBzb2NrZXQsIGNsb2JiZXIgY2FjaGUKLSAgKi8KLSB2b2lkCi0gc29mcmVlKHN0cnVjdCBzb2NrZXQgKnNvKQotIHsKLSAgIFNsaXJwICpzbGlycCA9IHNvLT5zbGlycDsKLS0gIHN0cnVjdCBtYnVmICppZm07Ci0gCi0tICBmb3IgKGlmbSA9IChzdHJ1Y3QgbWJ1ZiAqKSBzbGlycC0+aWZfZmFzdHEucWhfbGluazsKLS0gICAgICAgKHN0cnVjdCBxdWVoZWFkICopIGlmbSAhPSAmc2xpcnAtPmlmX2Zhc3RxOwotLSAgICAgICBpZm0gPSBpZm0tPmlmcV9uZXh0KSB7Ci0tICAgIGlmIChpZm0tPmlmcV9zbyA9PSBzbykgewotLSAgICAgIGlmbS0+aWZxX3NvID0gTlVMTDsKLS0gICAgfQotLSAgfQotLQotLSAgZm9yIChpZm0gPSAoc3RydWN0IG1idWYgKikgc2xpcnAtPmlmX2JhdGNocS5xaF9saW5rOwotLSAgICAgICAoc3RydWN0IHF1ZWhlYWQgKikgaWZtICE9ICZzbGlycC0+aWZfYmF0Y2hxOwotLSAgICAgICBpZm0gPSBpZm0tPmlmcV9uZXh0KSB7Ci0tICAgIGlmIChpZm0tPmlmcV9zbyA9PSBzbykgewotLSAgICAgIGlmbS0+aWZxX3NvID0gTlVMTDsKLS0gICAgfQotLSAgfQotKyAgc29xZnJlZShzbywgJnNsaXJwLT5pZl9mYXN0cSk7Ci0rICBzb3FmcmVlKHNvLCAmc2xpcnAtPmlmX2JhdGNocSk7Ci0gCi0gICBpZiAoc28tPnNvX2VtdT09RU1VX1JTSCAmJiBzby0+ZXh0cmEpIHsKLSAJc29mcmVlKHNvLT5leHRyYSk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTE0MTY3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTQxNjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2OWFkODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTQxNjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIGVkNGY4NmU4YjZlZmY4ZTYwMGM2OWFkZWU2OGM3Y2QzNGRkMmNjY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KLURhdGU6IFRodSwgNyBTZXAgMjAxNyAxMjowMjo1NiArMDUzMAotU3ViamVjdDogW1BBVENIXSBtdWx0aWJvb3Q6IHZhbGlkYXRlIG11bHRpYm9vdCBoZWFkZXIgYWRkcmVzcyB2YWx1ZXMKLQotV2hpbGUgbG9hZGluZyBrZXJuZWwgdmlhIG11bHRpYm9vdC12MSBpbWFnZSwgKGZsYWdzICYgMHgwMDAxMDAwMCkKLWluZGljYXRlcyB0aGF0IG11bHRpYm9vdCBoZWFkZXIgY29udGFpbnMgdmFsaWQgYWRkcmVzc2VzIHRvIGxvYWQKLXRoZSBrZXJuZWwgaW1hZ2UuIFRoZXNlIGFkZHJlc3NlcyBhcmUgdXNlZCB0byBjb21wdXRlIGtlcm5lbAotc2l6ZSBhbmQga2VybmVsIHRleHQgb2Zmc2V0IGluIHRoZSBPUyBpbWFnZS4gVmFsaWRhdGUgdGhlc2UKLWFkZHJlc3MgdmFsdWVzIHRvIGF2b2lkIGFuIE9PQiBhY2Nlc3MgaXNzdWUuCi0KLVRoaXMgaXMgQ1ZFLTIwMTctMTQxNjcuCi0KLVJlcG9ydGVkLWJ5OiBUaG9tYXMgR2FybmllciA8dGhnYXJuaWVAZ29vZ2xlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgotTWVzc2FnZS1JZDogPDIwMTcwOTA3MDYzMjU2Ljc0MTgtMS1wcGFuZGl0QHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD1lZDRmODZlOGI2ZWZmOGU2MDBjNjlhZGVlNjhjN2NkMzRkZDJjY2NiXQotCi1DVkU6IENWRS0yMDE3LTE0MTY3Ci0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGh3L2kzODYvbXVsdGlib290LmMgfCAxOSArKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2h3L2kzODYvbXVsdGlib290LmMgYi9ody9pMzg2L211bHRpYm9vdC5jCi1pbmRleCA2MDAxZjRjLi5jN2I3MGM5IDEwMDY0NAotLS0tIGEvaHcvaTM4Ni9tdWx0aWJvb3QuYwotKysrIGIvaHcvaTM4Ni9tdWx0aWJvb3QuYwotQEAgLTIyMSwxNSArMjIxLDM0IEBAIGludCBsb2FkX211bHRpYm9vdChGV0NmZ1N0YXRlICpmd19jZmcsCi0gICAgICAgICB1aW50MzJfdCBtaF9oZWFkZXJfYWRkciA9IGxkbF9wKGhlYWRlcitpKzEyKTsKLSAgICAgICAgIHVpbnQzMl90IG1oX2xvYWRfZW5kX2FkZHIgPSBsZGxfcChoZWFkZXIraSsyMCk7Ci0gICAgICAgICB1aW50MzJfdCBtaF9ic3NfZW5kX2FkZHIgPSBsZGxfcChoZWFkZXIraSsyNCk7Ci0rCi0gICAgICAgICBtaF9sb2FkX2FkZHIgPSBsZGxfcChoZWFkZXIraSsxNik7Ci0rICAgICAgICBpZiAobWhfaGVhZGVyX2FkZHIgPCBtaF9sb2FkX2FkZHIpIHsKLSsgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgbWhfbG9hZF9hZGRyIGFkZHJlc3NcbiIpOwotKyAgICAgICAgICAgIGV4aXQoMSk7Ci0rICAgICAgICB9Ci0rCi0gICAgICAgICB1aW50MzJfdCBtYl9rZXJuZWxfdGV4dF9vZmZzZXQgPSBpIC0gKG1oX2hlYWRlcl9hZGRyIC0gbWhfbG9hZF9hZGRyKTsKLSAgICAgICAgIHVpbnQzMl90IG1iX2xvYWRfc2l6ZSA9IDA7Ci0gICAgICAgICBtaF9lbnRyeV9hZGRyID0gbGRsX3AoaGVhZGVyK2krMjgpOwotIAotICAgICAgICAgaWYgKG1oX2xvYWRfZW5kX2FkZHIpIHsKLSsgICAgICAgICAgICBpZiAobWhfYnNzX2VuZF9hZGRyIDwgbWhfbG9hZF9hZGRyKSB7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBtaF9ic3NfZW5kX2FkZHIgYWRkcmVzc1xuIik7Ci0rICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIG1iX2tlcm5lbF9zaXplID0gbWhfYnNzX2VuZF9hZGRyIC0gbWhfbG9hZF9hZGRyOwotKwotKyAgICAgICAgICAgIGlmIChtaF9sb2FkX2VuZF9hZGRyIDwgbWhfbG9hZF9hZGRyKSB7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBtaF9sb2FkX2VuZF9hZGRyIGFkZHJlc3NcbiIpOwotKyAgICAgICAgICAgICAgICBleGl0KDEpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBtYl9sb2FkX3NpemUgPSBtaF9sb2FkX2VuZF9hZGRyIC0gbWhfbG9hZF9hZGRyOwotICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBpZiAoa2VybmVsX2ZpbGVfc2l6ZSA8IG1iX2tlcm5lbF90ZXh0X29mZnNldCkgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQga2VybmVsX2ZpbGVfc2l6ZVxuIik7Ci0rICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIG1iX2tlcm5lbF9zaXplID0ga2VybmVsX2ZpbGVfc2l6ZSAtIG1iX2tlcm5lbF90ZXh0X29mZnNldDsKLSAgICAgICAgICAgICBtYl9sb2FkX3NpemUgPSBtYl9rZXJuZWxfc2l6ZTsKLSAgICAgICAgIH0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaAppbmRleCA5YmJiYzZmLi5kNmEzNTIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaApAQCAtMjgsMTIgKzI4LDEyIEBACiAgaHcvaW50Yy9hcGljLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9ody9pbnRjL2FwaWMuYyBiL2h3L2ludGMvYXBpYy5jCi1pbmRleCA0NTg4N2Q5OS4uYzVhZTQwODcgMTAwNjQ0Ci0tLS0gYS9ody9pbnRjL2FwaWMuYwotKysrIGIvaHcvaW50Yy9hcGljLmMKLUBAIC01ODcsNyArNTg3LDcgQEAgaW50IGFwaWNfYWNjZXB0X3BpY19pbnRyKERldmljZVN0YXRlICpkZXYpCi0gICAgIEFQSUNDb21tb25TdGF0ZSAqcyA9IEFQSUNfQ09NTU9OKGRldik7CitJbmRleDogcWVtdS0yLjExLjEvaHcvaW50Yy9hcGljLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxZW11LTIuMTEuMS5vcmlnL2h3L2ludGMvYXBpYy5jCisrKysgcWVtdS0yLjExLjEvaHcvaW50Yy9hcGljLmMKK0BAIC01OTEsNyArNTkxLDcgQEAgaW50IGFwaWNfYWNjZXB0X3BpY19pbnRyKERldmljZVN0YXRlICpkZQorICAgICBBUElDQ29tbW9uU3RhdGUgKnMgPSBBUElDKGRldik7CiAgICAgIHVpbnQzMl90IGx2dDA7CiAgCiAtICAgIGlmICghcykKQEAgLTQxLDYgKzQxLDMgQEAKICAgICAgICAgIHJldHVybiAtMTsKICAKICAgICAgbHZ0MCA9IHMtPmx2dFtBUElDX0xWVF9MSU5UMF07Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTZiZjk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaApAQCAtMCwwICsxLDI0MiBAQAorRnJvbSAzYmIzMTAwYzIyZWIzMDE0NmE2OTY1NjQ4MGJkZmZlZWY4NjYzNTc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B4aWxpbnguY29tPgorRGF0ZTogVGh1LCAyMSBEZWMgMjAxNyAxMTozNToxNiAtMDgwMAorU3ViamVjdDogW1BBVENIXSBjaGFyZGV2OiBjb25uZWN0IHNvY2tldCB0byBhIHNwYXduZWQgY29tbWFuZAorCitUaGUgY29tbWFuZCBpcyBzdGFydGVkIGluIGEgc2hlbGwgKHNoIC1jKSB3aXRoIHN0ZGluIGNvbm5lY3QgdG8gUUVNVQordmlhIGEgVW5peCBkb21haW4gc3RyZWFtIHNvY2tldC4gUUVNVSB0aGVuIGV4Y2hhbmdlcyBkYXRhIHZpYSBpdHMgb3duCitlbmQgb2YgdGhlIHNvY2tldCwganVzdCBsaWtlIGl0IG5vcm1hbGx5IGRvZXMuCisKKyItY2hhcmRldiBzb2NrZXQiIHN1cHBvcnRzIHNvbWUgd2F5cyBvZiBjb25uZWN0aW5nIHZpYSBwcm90b2NvbHMgbGlrZQordGVsbmV0LCBidXQgdGhhdCBpcyBvbmx5IGEgc3Vic2V0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IHN1cHBvcnRlZCBieQordG9vbHMgc29jYXQuIFRvIHVzZSBzb2NhdCBpbnN0ZWFkLCBmb3IgZXhhbXBsZSB0byBjb25uZWN0IHZpYSBhIHNvY2tzCitwcm94eSwgdXNlOgorCisgIC1jaGFyZGV2ICdzb2NrZXQsaWQ9c29jYXQsY21kPWV4ZWMgc29jYXQgRkQ6MCBTT0NLUzRBOnNvY2tzLXByb3h5LmxvY2FsZG9tYWluOmV4YW1wbGUuY29tOjk5OTksLHNvY2tzdXNlcj1ub2JvZHknIFwKKyAgLWRldmljZSB1c2Itc2VyaWFsLGNoYXJkZXY9c29jYXQKKworQmV3YXJlIHRoYXQgY29tbWFzIGluIHRoZSBjb21tYW5kIG11c3QgYmUgZXNjYXBlZCBhcyBkb3VibGUgY29tbWFzLgorCitPciBpbnRlcmFjdGl2ZWx5IGluIHRoZSBjb25zb2xlOgorICAgKHFlbXUpIGNoYXJkZXYtYWRkIHNvY2tldCxpZD1jYXQsY21kPWNhdAorICAgKHFlbXUpIGRldmljZV9hZGQgdXNiLXNlcmlhbCxjaGFyZGV2PWNhdAorICAgXmFjCisgICAjIGNhdCA+L2Rldi90dHlVU0IwCisgICBoZWxsbworICAgaGVsbG8KKworQW5vdGhlciB1c2FnZSBpcyBzdGFydGluZyBzd3RwbSBmcm9tIGluc2lkZSBRRU1VLiBzd3RwbSB3aWxsCithdXRvbWF0aWNhbGx5IHNodXQgZG93biBvbmNlIGl0IGxvb3NlcyB0aGUgY29ubmVjdGlvbiB0byB0aGUgcGFyZW50CitRRU1VLCBzbyB0aGVyZSBpcyBubyByaXNrIG9mIGxpbmdlcmluZyBwcm9jZXNzZXM6CisKKyAgLWNoYXJkZXYgJ3NvY2tldCxpZD1jaHJ0cG0wLGNtZD1leGVjIHN3dHBtIHNvY2tldCAtLXRlcm1pbmF0ZSAtLWN0cmwgdHlwZT11bml4aW8sLGNsaWVudGZkPTAgLS10cG1zdGF0ZSBkaXI9Li4uIC0tbG9nIGZpbGU9c3d0cG0ubG9nJyBcCisgIC10cG1kZXYgZW11bGF0b3IsaWQ9dHBtMCxjaGFyZGV2PWNocnRwbTAgXAorICAtZGV2aWNlIHRwbS10aXMsdHBtZGV2PXRwbTAKKworVGhlIHBhdGNoIHdhcyBkaXNjdXNzZWQgdXBzdHJlYW0sIGJ1dCBRRU1VIGRldmVsb3BlcnMgYmVsaWV2ZSB0aGF0IHRoZQorY29kZSBjYWxsaW5nIFFFTVUgc2hvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhZGRpdGlvbmFsCitwcm9jZXNzZXMuIEluIE9FLWNvcmUsIHRoYXQgd291bGQgaW1wbHkgZW5oYW5jaW5nIHJ1bnFlbXUgYW5kCitvZXFhLiBUaGlzIHBhdGNoIGlzIGEgc2ltcGxlciBzb2x1dGlvbi4KKworQmVjYXVzZSBpdCBpcyBub3QgZ29pbmcgdXBzdHJlYW0sIHRoZSBwYXRjaCB3YXMgd3JpdHRlbiBzbyB0aGF0IGl0IGlzCithcyBzaW1wbGUgYXMgcG9zc2libGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KKy0tLQorIGNoYXJkZXYvY2hhci1zb2NrZXQuYyB8IDg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQorIGNoYXJkZXYvY2hhci5jICAgICAgICB8ICAzICsrCisgcWFwaS9jaGFyLmpzb24gICAgICAgIHwgIDUgKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2hhcmRldi9jaGFyLXNvY2tldC5jIGIvY2hhcmRldi9jaGFyLXNvY2tldC5jCitpbmRleCA1M2VkYThlZjAwLi5mNTY2MTA3YzM1IDEwMDY0NAorLS0tIGEvY2hhcmRldi9jaGFyLXNvY2tldC5jCisrKysgYi9jaGFyZGV2L2NoYXItc29ja2V0LmMKK0BAIC04NTIsNiArODUyLDY4IEBAIHN0YXRpYyBnYm9vbGVhbiBzb2NrZXRfcmVjb25uZWN0X3RpbWVvdXQoZ3BvaW50ZXIgb3BhcXVlKQorICAgICByZXR1cm4gZmFsc2U7CisgfQorIAorKyNpZm5kZWYgX1dJTjMyCisrc3RhdGljIHZvaWQgY2hhcmRldl9vcGVuX3NvY2tldF9jbWQoQ2hhcmRldiAqY2hyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNtZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvciAqKmVycnApCisreworKyAgICBpbnQgZmRzWzJdID0geyAtMSwgLTEgfTsKKysgICAgUUlPQ2hhbm5lbFNvY2tldCAqc2lvYyA9IE5VTEw7CisrICAgIHBpZF90IHBpZCA9IC0xOworKyAgICBjb25zdCBjaGFyICphcmd2W10gPSB7ICIvYmluL3NoIiwgIi1jIiwgY21kLCBOVUxMIH07CisrCisrICAgIC8qCisrICAgICAqIFdlIG5lZWQgYSBVbml4IGRvbWFpbiBzb2NrZXQgZm9yIGNvbW1hbmRzIGxpa2Ugc3d0cG0gYW5kIGEgc2luZ2xlCisrICAgICAqIGNvbm5lY3Rpb24sIHRoZXJlZm9yZSB3ZSBjYW5ub3QgdXNlIHFpb19jaGFubmVsX2NvbW1hbmRfbmV3X3NwYXduKCkKKysgICAgICogd2l0aG91dCBwYXRjaGluZyBpdCBmaXJzdC4gRHVwbGljYXRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgZWFzaWVyLgorKyAgICAgKi8KKysgICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS19TVFJFQU18U09DS19DTE9FWEVDLCAwLCBmZHMpKSB7CisrICAgICAgICBlcnJvcl9zZXRnX2Vycm5vKGVycnAsIGVycm5vLCAiRXJyb3IgY3JlYXRpbmcgc29ja2V0cGFpcihBRl9VTklYLCBTT0NLX1NUUkVBTXxTT0NLX0NMT0VYRUMpIik7CisrICAgICAgICBnb3RvIGVycm9yOworKyAgICB9CisrCisrICAgIHBpZCA9IHFlbXVfZm9yayhlcnJwKTsKKysgICAgaWYgKHBpZCA8IDApIHsKKysgICAgICAgIGdvdG8gZXJyb3I7CisrICAgIH0KKysKKysgICAgaWYgKCFwaWQpIHsKKysgICAgICAgIC8qIGNoaWxkICovCisrICAgICAgICBkdXAyKGZkc1sxXSwgU1RESU5fRklMRU5PKTsKKysgICAgICAgIGV4ZWN2KGFyZ3ZbMF0sIChjaGFyICogY29uc3QgKilhcmd2KTsKKysgICAgICAgIF9leGl0KDEpOworKyAgICB9CisrCisrICAgIC8qCisrICAgICAqIEhhbmQgb3ZlciBvdXIgZW5kIG9mIHRoZSBzb2NrZXQgcGFpciB0byB0aGUgcWlvIGNoYW5uZWwuCisrICAgICAqCisrICAgICAqIFdlIGRvbid0IHJlYXAgdGhlIGNoaWxkIGJlY2F1c2UgaXQgaXMgZXhwZWN0ZWQgdG8ga2VlcAorKyAgICAgKiBydW5uaW5nLiBXZSBhbHNvIGRvbid0IHN1cHBvcnQgdGhlICJyZWNvbm5lY3QiIG9wdGlvbiBmb3IgdGhlCisrICAgICAqIHNhbWUgcmVhc29uLgorKyAgICAgKi8KKysgICAgc2lvYyA9IHFpb19jaGFubmVsX3NvY2tldF9uZXdfZmQoZmRzWzBdLCBlcnJwKTsKKysgICAgaWYgKCFzaW9jKSB7CisrICAgICAgICBnb3RvIGVycm9yOworKyAgICB9CisrICAgIGZkc1swXSA9IC0xOworKworKyAgICBnX2ZyZWUoY2hyLT5maWxlbmFtZSk7CisrICAgIGNoci0+ZmlsZW5hbWUgPSBnX3N0cmR1cF9wcmludGYoImNtZDolcyIsIGNtZCk7CisrICAgIHRjcF9jaHJfbmV3X2NsaWVudChjaHIsIHNpb2MpOworKworKyBlcnJvcjoKKysgICAgaWYgKGZkc1swXSA+PSAwKSB7CisrICAgICAgICBjbG9zZShmZHNbMF0pOworKyAgICB9CisrICAgIGlmIChmZHNbMV0gPj0gMCkgeworKyAgICAgICAgY2xvc2UoZmRzWzFdKTsKKysgICAgfQorKyAgICBpZiAoc2lvYykgeworKyAgICAgICAgb2JqZWN0X3VucmVmKE9CSkVDVChzaW9jKSk7CisrICAgIH0KKyt9CisrI2VuZGlmCisrCisgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJkZXZCYWNrZW5kICpiYWNrZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmJlX29wZW5lZCwKK0BAIC04NTksNiArOTIxLDkgQEAKKyB7CisgICAgIFNvY2tldENoYXJkZXYgKnMgPSBTT0NLRVRfQ0hBUkRFVihjaHIpOworICAgICBDaGFyZGV2U29ja2V0ICpzb2NrID0gYmFja2VuZC0+dS5zb2NrZXQuZGF0YTsKKysjaWZuZGVmIF9XSU4zMgorKyAgICBjb25zdCBjaGFyICpjbWQgICAgID0gc29jay0+Y21kOworKyNlbmRpZgorICAgICBib29sIGRvX25vZGVsYXkgICAgID0gc29jay0+aGFzX25vZGVsYXkgPyBzb2NrLT5ub2RlbGF5IDogZmFsc2U7CisgICAgIGJvb2wgaXNfbGlzdGVuICAgICAgPSBzb2NrLT5oYXNfc2VydmVyICA/IHNvY2stPnNlcnZlciAgOiB0cnVlOworICAgICBib29sIGlzX3RlbG5ldCAgICAgID0gc29jay0+aGFzX3RlbG5ldCAgPyBzb2NrLT50ZWxuZXQgIDogZmFsc2U7CitAQCAtOTI1LDcgKzk5MCwxNCBAQAorICAgICB9IGVsc2UgaWYgKHJlY29ubmVjdCA+IDApIHsKKyAgICAgICAgIHMtPnJlY29ubmVjdF90aW1lID0gcmVjb25uZWN0OworICAgICB9CistCisrI2lmbmRlZiBfV0lOMzIKKysgICAgaWYgKGNtZCkgeworKyAgICAgICAgY2hhcmRldl9vcGVuX3NvY2tldF9jbWQoY2hyLCBjbWQsIGVycnApOworKworKyAgICAgICAgLyogZXZlcnl0aGluZyByZWFkeSAob3IgZmFpbGVkIHBlcm1hbmVudGx5KSBiZWZvcmUgd2UgcmV0dXJuICovCisrICAgICAgICAqYmVfb3BlbmVkID0gdHJ1ZTsKKysgICAgfSBlbHNlCisrI2VuZGlmCisgICAgIGlmIChzLT5yZWNvbm5lY3RfdGltZSkgeworICAgICAgICAgc2lvYyA9IHFpb19jaGFubmVsX3NvY2tldF9uZXcoKTsKKyAgICAgICAgIHRjcF9jaHJfc2V0X2NsaWVudF9pb2NfbmFtZShjaHIsIHNpb2MpOworQEAgLTk4NSwxMCArMTA1NywyNiBAQAorICAgICBjb25zdCBjaGFyICpob3N0ID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJob3N0Iik7CisgICAgIGNvbnN0IGNoYXIgKnBvcnQgPSBxZW11X29wdF9nZXQob3B0cywgInBvcnQiKTsKKyAgICAgY29uc3QgY2hhciAqdGxzX2NyZWRzID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJ0bHMtY3JlZHMiKTsKKysjaWZuZGVmIF9XSU4zMgorKyAgICBjb25zdCBjaGFyICpjbWQgPSBxZW11X29wdF9nZXQob3B0cywgImNtZCIpOworKyNlbmRpZgorICAgICBTb2NrZXRBZGRyZXNzTGVnYWN5ICphZGRyOworICAgICBDaGFyZGV2U29ja2V0ICpzb2NrOworIAorICAgICBiYWNrZW5kLT50eXBlID0gQ0hBUkRFVl9CQUNLRU5EX0tJTkRfU09DS0VUOworKyNpZm5kZWYgX1dJTjMyCisrICAgIGlmIChjbWQpIHsKKysgICAgICAgIC8qCisrICAgICAgICAgKiBIZXJlIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgbm8gb3B0aW9ucyBhcmUgc2V0IHdoaWNoIGFyZSBpbmNvbXBhdGlibGUgd2l0aAorKyAgICAgICAgICogc3Bhd25pbmcgYSBjb21tYW5kLCBvdGhlcndpc2UgdW5tb2RpZmllZCBjb2RlIHRoYXQgZG9lc24ndCBrbm93IGFib3V0CisrICAgICAgICAgKiBjb21tYW5kIHNwYXduaW5nIChsaWtlIHNvY2tldF9yZWNvbm5lY3RfdGltZW91dCgpKSBtaWdodCBnZXQgY2FsbGVkLgorKyAgICAgICAgICovCisrICAgICAgICBpZiAocGF0aCB8fCBpc19saXN0ZW4gfHwgaXNfdGVsbmV0IHx8IGlzX3RuMzI3MCB8fCByZWNvbm5lY3QgfHwgaG9zdCB8fCBwb3J0IHx8IHRsc19jcmVkcykgeworKyAgICAgICAgICAgIGVycm9yX3NldGcoZXJycCwgImNoYXJkZXY6IHNvY2tldDogY21kIGRvZXMgbm90IHN1cHBvcnQgYW55IGFkZGl0aW9uYWwgb3B0aW9ucyIpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgfSBlbHNlCisrI2VuZGlmCisgICAgIGlmICghcGF0aCkgeworICAgICAgICAgaWYgKCFob3N0KSB7CisgICAgICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiY2hhcmRldjogc29ja2V0OiBubyBob3N0IGdpdmVuIik7CitAQCAtMTAyMSwxMyArMTEwOSwyNCBAQAorICAgICBzb2NrLT5oYXNfcmVjb25uZWN0ID0gdHJ1ZTsKKyAgICAgc29jay0+cmVjb25uZWN0ID0gcmVjb25uZWN0OworICAgICBzb2NrLT50bHNfY3JlZHMgPSBnX3N0cmR1cCh0bHNfY3JlZHMpOworKyNpZm5kZWYgX1dJTjMyCisrICAgIHNvY2stPmNtZCA9IGdfc3RyZHVwKGNtZCk7CisrI2VuZGlmCisgCisgICAgIGFkZHIgPSBnX25ldzAoU29ja2V0QWRkcmVzc0xlZ2FjeSwgMSk7CisrI2lmbmRlZiBfV0lOMzIKKysgICAgaWYgKHBhdGggfHwgY21kKSB7CisrI2Vsc2UKKyAgICAgaWYgKHBhdGgpIHsKKysjZW5kaWYKKyAgICAgICAgIFVuaXhTb2NrZXRBZGRyZXNzICpxX3VuaXg7CisgICAgICAgICBhZGRyLT50eXBlID0gU09DS0VUX0FERFJFU1NfTEVHQUNZX0tJTkRfVU5JWDsKKyAgICAgICAgIHFfdW5peCA9IGFkZHItPnUucV91bml4LmRhdGEgPSBnX25ldzAoVW5peFNvY2tldEFkZHJlc3MsIDEpOworKyNpZm5kZWYgX1dJTjMyCisrICAgICAgICBxX3VuaXgtPnBhdGggPSBjbWQgPyBnX3N0cmR1cF9wcmludGYoImNtZDolcyIsIGNtZCkgOiBnX3N0cmR1cChwYXRoKTsKKysjZWxzZQorICAgICAgICAgcV91bml4LT5wYXRoID0gZ19zdHJkdXAocGF0aCk7CisrI2VuZGlmCisgICAgIH0gZWxzZSB7CisgICAgICAgICBhZGRyLT50eXBlID0gU09DS0VUX0FERFJFU1NfTEVHQUNZX0tJTkRfSU5FVDsKKyAgICAgICAgIGFkZHItPnUuaW5ldC5kYXRhID0gZ19uZXcoSW5ldFNvY2tldEFkZHJlc3MsIDEpOworZGlmZiAtLWdpdCBhL2NoYXJkZXYvY2hhci5jIGIvY2hhcmRldi9jaGFyLmMKK2luZGV4IDJhZTRmNDY1ZWMuLjVkNTJjZDVkZTUgMTAwNjQ0CistLS0gYS9jaGFyZGV2L2NoYXIuYworKysrIGIvY2hhcmRldi9jaGFyLmMKK0BAIC03OTIsNiArNzkyLDkgQEAgUWVtdU9wdHNMaXN0IHFlbXVfY2hhcmRldl9vcHRzID0geworICAgICAgICAgfSx7CisgICAgICAgICAgICAgLm5hbWUgPSAicGF0aCIsCisgICAgICAgICAgICAgLnR5cGUgPSBRRU1VX09QVF9TVFJJTkcsCisrICAgICAgICB9LHsKKysgICAgICAgICAgICAubmFtZSA9ICJjbWQiLAorKyAgICAgICAgICAgIC50eXBlID0gUUVNVV9PUFRfU1RSSU5HLAorICAgICAgICAgfSx7CisgICAgICAgICAgICAgLm5hbWUgPSAiaG9zdCIsCisgICAgICAgICAgICAgLnR5cGUgPSBRRU1VX09QVF9TVFJJTkcsCitkaWZmIC0tZ2l0IGEvcWFwaS9jaGFyLmpzb24gYi9xYXBpL2NoYXIuanNvbgoraW5kZXggYWUxOWRjZDFlZC4uNmRlMGYyOWJjZCAxMDA2NDQKKy0tLSBhL3FhcGkvY2hhci5qc29uCisrKysgYi9xYXBpL2NoYXIuanNvbgorQEAgLTI0MSw2ICsyNDEsMTAgQEAKKyAjCisgIyBAYWRkcjogc29ja2V0IGFkZHJlc3MgdG8gbGlzdGVuIG9uIChzZXJ2ZXI9dHJ1ZSkKKyAjICAgICAgICBvciBjb25uZWN0IHRvIChzZXJ2ZXI9ZmFsc2UpCisrIyBAY21kOiBjb21tYW5kIHRvIHJ1biB2aWEgInNoIC1jIiB3aXRoIHN0ZGluIGFzIG9uZSBlbmQgb2YKKysjICAgICAgIGEgQUZfVU5JWCBTT0NLX0RTVFJFQU0gc29ja2V0IHBhaXIuIFRoZSBvdGhlciBlbmQKKysjICAgICAgIGlzIHVzZWQgYnkgdGhlIGNoYXJkZXYuIEVpdGhlciBhbiBhZGRyIG9yIGEgY21kIGNhbgorKyMgICAgICAgYmUgc3BlY2lmaWVkLCBidXQgbm90IGJvdGguCisgIyBAdGxzLWNyZWRzOiB0aGUgSUQgb2YgdGhlIFRMUyBjcmVkZW50aWFscyBvYmplY3QgKHNpbmNlIDIuNikKKyAjIEBzZXJ2ZXI6IGNyZWF0ZSBzZXJ2ZXIgc29ja2V0IChkZWZhdWx0OiB0cnVlKQorICMgQHdhaXQ6IHdhaXQgZm9yIGluY29taW5nIGNvbm5lY3Rpb24gb24gc2VydmVyCitAQCAtMjU4LDYgKzI2Miw3IEBACisgIyBTaW5jZTogMS40CisgIyMKKyB7ICdzdHJ1Y3QnOiAnQ2hhcmRldlNvY2tldCcsICdkYXRhJzogeyAnYWRkcicgICAgICAgOiAnU29ja2V0QWRkcmVzc0xlZ2FjeScsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqY21kJyAgICAgICA6ICdzdHInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKnRscy1jcmVkcycgIDogJ3N0cicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqc2VydmVyJyAgICA6ICdib29sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyp3YWl0JyAgICAgIDogJ2Jvb2wnLAorLS0gCisyLjE0LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2NoZWNrLVBTMlF1ZXVlLXBvaW50ZXJzLWluLXBvc3RfbG9hZC1yb3V0aW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY2hlY2stUFMyUXVldWUtcG9pbnRlcnMtaW4tcG9zdF9sb2FkLXJvdXRpbmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhkN2Y2NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2NoZWNrLVBTMlF1ZXVlLXBvaW50ZXJzLWluLXBvc3RfbG9hZC1yb3V0aW5lLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAKK0Zyb20gZWU5YTE3ZDBlMTIxNDM5NzFhOTY3NjIyN2NjZTk1M2MwZGJlNTJmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgorRGF0ZTogVGh1LCAxNiBOb3YgMjAxNyAxMzoyMTo1NSArMDUzMAorU3ViamVjdDogW1BBVENIXSBwczI6IGNoZWNrIFBTMlF1ZXVlIHBvaW50ZXJzIGluIHBvc3RfbG9hZCByb3V0aW5lCisKK0R1cmluZyBRZW11IGd1ZXN0IG1pZ3JhdGlvbiwgYSBkZXN0aW5hdGlvbiBwcm9jZXNzIGludm9rZXMgcHMyCitwb3N0X2xvYWQgZnVuY3Rpb24uIEluIHRoYXQsIGlmICdycHRyJyBhbmQgJ2NvdW50JyB2YWx1ZXMgd2VyZQoraW52YWxpZCwgaXQgY291bGQgbGVhZCB0byBPT0IgYWNjZXNzIG9yIGluZmluaXRlIGxvb3AgaXNzdWUuCitBZGQgY2hlY2sgdG8gYXZvaWQgaXQuCisKK1JlcG9ydGVkLWJ5OiBDeXJpbGxlIENoYXRyYXMgPGN5cmlsbGUuY2hhdHJhc0BvcmFuZ2UuY29tPgorU2lnbmVkLW9mZi1ieTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitNZXNzYWdlLWlkOiAyMDE3MTExNjA3NTE1NS4yMjM3OC0xLXBwYW5kaXRAcmVkaGF0LmNvbQorU2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+CisKK0NWRTogQ1ZFLTIwMTctMTY4NDUKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGh3L2lucHV0L3BzMi5jIHwgMjEgKysrKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ody9pbnB1dC9wczIuYyBiL2h3L2lucHV0L3BzMi5jCitpbmRleCBmMzg4YTIzLi5kZTE3MWEyIDEwMDY0NAorLS0tIGEvaHcvaW5wdXQvcHMyLmMKKysrKyBiL2h3L2lucHV0L3BzMi5jCitAQCAtMTIyNSwyNCArMTIyNSwyMSBAQCBzdGF0aWMgdm9pZCBwczJfY29tbW9uX3Jlc2V0KFBTMlN0YXRlICpzKQorIHN0YXRpYyB2b2lkIHBzMl9jb21tb25fcG9zdF9sb2FkKFBTMlN0YXRlICpzKQorIHsKKyAgICAgUFMyUXVldWUgKnEgPSAmcy0+cXVldWU7CistICAgIGludCBzaXplOworLSAgICBpbnQgaTsKKy0gICAgaW50IHRtcF9kYXRhW1BTMl9RVUVVRV9TSVpFXTsKKysgICAgdWludDhfdCBpLCBzaXplOworKyAgICB1aW50OF90IHRtcF9kYXRhW1BTMl9RVUVVRV9TSVpFXTsKKyAKKyAgICAgLyogc2V0IHRoZSB1c2VmdWwgZGF0YSBidWZmZXIgcXVldWUgc2l6ZSwgPCBQUzJfUVVFVUVfU0laRSAqLworLSAgICBzaXplID0gcS0+Y291bnQgPiBQUzJfUVVFVUVfU0laRSA/IDAgOiBxLT5jb3VudDsKKysgICAgc2l6ZSA9IChxLT5jb3VudCA8IDAgfHwgcS0+Y291bnQgPiBQUzJfUVVFVUVfU0laRSkgPyAwIDogcS0+Y291bnQ7CisgCisgICAgIC8qIG1vdmUgdGhlIHF1ZXVlIGVsZW1lbnRzIHRvIHRoZSBzdGFydCBvZiBkYXRhIGFycmF5ICovCistICAgIGlmIChzaXplID4gMCkgeworLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworLSAgICAgICAgICAgIC8qIG1vdmUgdGhlIHF1ZXVlIGVsZW1lbnRzIHRvIHRoZSB0ZW1wb3JhcnkgYnVmZmVyICovCistICAgICAgICAgICAgdG1wX2RhdGFbaV0gPSBxLT5kYXRhW3EtPnJwdHJdOworLSAgICAgICAgICAgIGlmICgrK3EtPnJwdHIgPT0gMjU2KSB7CistICAgICAgICAgICAgICAgIHEtPnJwdHIgPSAwOworLSAgICAgICAgICAgIH0KKysgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworKyAgICAgICAgaWYgKHEtPnJwdHIgPCAwIHx8IHEtPnJwdHIgPj0gc2l6ZW9mKHEtPmRhdGEpKSB7CisrICAgICAgICAgICAgcS0+cnB0ciA9IDA7CisgICAgICAgICB9CistICAgICAgICBtZW1jcHkocS0+ZGF0YSwgdG1wX2RhdGEsIHNpemUpOworKyAgICAgICAgdG1wX2RhdGFbaV0gPSBxLT5kYXRhW3EtPnJwdHIrK107CisgICAgIH0KKysgICAgbWVtY3B5KHEtPmRhdGEsIHRtcF9kYXRhLCBzaXplKTsKKysKKyAgICAgLyogcmVzZXQgcnB0ci93cHRyL2NvdW50ICovCisgICAgIHEtPnJwdHIgPSAwOworICAgICBxLT53cHRyID0gc2l6ZTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZGlzYWJsZS1ncmFicy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2Rpc2FibGUtZ3JhYnMucGF0Y2gKaW5kZXggMTIzODMzZi4uNzcxMTc4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZGlzYWJsZS1ncmFicy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9kaXNhYmxlLWdyYWJzLnBhdGNoCkBAIC0yNCwxMSArMjQsMTEgQEAKICB1aS9zZGwuYyB8IDEyICsrKysrKysrKystLQogIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvdWkvc2RsLmMgYi91aS9zZGwuYwotaW5kZXggMzlhNDJkNi4uOWI4YWJlNSAxMDA2NDQKLS0tLSBhL3VpL3NkbC5jCi0rKysgYi91aS9zZGwuYwotQEAgLTU5LDYgKzU5LDEwIEBAIHN0YXRpYyBTRExfQ3Vyc29yICpndWVzdF9zcHJpdGUgPSBOVUxMOworSW5kZXg6IHFlbXUtMi4xMS4xL3VpL3NkbC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcWVtdS0yLjExLjEub3JpZy91aS9zZGwuYworKysrIHFlbXUtMi4xMS4xL3VpL3NkbC5jCitAQCAtNjMsNiArNjMsMTAgQEAgc3RhdGljIFNETF9QaXhlbEZvcm1hdCBob3N0X2Zvcm1hdDsKICBzdGF0aWMgaW50IHNjYWxpbmdfYWN0aXZlID0gMDsKICBzdGF0aWMgTm90aWZpZXIgbW91c2VfbW9kZV9ub3RpZmllcjsKICBzdGF0aWMgaW50IGlkbGVfY291bnRlcjsKQEAgLTM3LDEwICszNywxMCBAQAogKyNlbmRpZgogK3N0YXRpYyBkb2luZ19ncmFicyA9IFRydWU7CiAgCi0gc3RhdGljIHZvaWQgc2RsX3VwZGF0ZShEaXNwbGF5Q2hhbmdlTGlzdGVuZXIgKmRjbCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKQotQEAgLTM4NCwxNCArMzg4LDE2IEBAIHN0YXRpYyB2b2lkIHNkbF9ncmFiX3N0YXJ0KHZvaWQpCi0gICAgICAgICAgICAgfQorICNkZWZpbmUgU0RMX1JFRlJFU0hfSU5URVJWQUxfQlVTWSAxMAorICNkZWZpbmUgU0RMX01BWF9JRExFX0NPVU5UICgyICogR1VJX1JFRlJFU0hfSU5URVJWQUxfREVGQVVMVCBcCitAQCAtNDMxLDE0ICs0MzUsMTYgQEAgc3RhdGljIHZvaWQgc2RsX2dyYWJfc3RhcnQodm9pZCkKKyAgICAgICAgIH0KICAgICAgfSBlbHNlCiAgICAgICAgICBzZGxfaGlkZV9jdXJzb3IoKTsKIC0gICAgU0RMX1dNX0dyYWJJbnB1dChTRExfR1JBQl9PTik7CkBAIC01OCw3ICs1OCw3IEBACiAgICAgIGd1aV9ncmFiID0gMDsKICAgICAgc2RsX3Nob3dfY3Vyc29yKCk7CiAgICAgIHNkbF91cGRhdGVfY2FwdGlvbigpOwotQEAgLTkwOSw2ICs5MTUsOCBAQCB2b2lkIHNkbF9kaXNwbGF5X2luaXQoRGlzcGxheVN0YXRlICpkcywgaW50IGZ1bGxfc2NyZWVuLCBpbnQgbm9fZnJhbWUpCitAQCAtOTg2LDYgKzk5Miw4IEBAIHZvaWQgc2RsX2Rpc3BsYXlfaW5pdChEaXNwbGF5U3RhdGUgKmRzLAogICAgICAgKiBUaGlzIHJlcXVpcmVzIFNETCA+PSAxLjIuMTQuICovCiAgICAgIHNldGVudigiU0RMX0RJU0FCTEVfTE9DS19LRVlTIiwgIjEiLCAxKTsKICAKQEAgLTY3LDYgKzY3LDMgQEAKICAgICAgZmxhZ3MgPSBTRExfSU5JVF9WSURFTyB8IFNETF9JTklUX05PUEFSQUNIVVRFOwogICAgICBpZiAoU0RMX0luaXQgKGZsYWdzKSkgewogICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3QgaW5pdGlhbGl6ZSBTREwoJXMpIC0gZXhpdGluZ1xuIiwKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9leGNsdWRlLXNvbWUtYXJtLUVBQkktb2Jzb2xldGUtc3lzY2FsbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9leGNsdWRlLXNvbWUtYXJtLUVBQkktb2Jzb2xldGUtc3lzY2FsbHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1OTNjZjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZXhjbHVkZS1zb21lLWFybS1FQUJJLW9ic29sZXRlLXN5c2NhbGxzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotW1BBVENIXSBleGNsdWRlIHNvbWUgYXJtIEVBQkkgb2Jzb2xldGUgc3lzY2FsbHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLXNvbWUgc3lzY2FsbHMgYXJlIG9ic29sZXRlIGFuZCBubyBsb25nZXIgYXZhaWxhYmxlIGZvciBFQUJJLCBleGNsdWRlIHRoZW0gdG8KLWZpeCB0aGUgYmVsb3cgZXJyb3I6Ci0JSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHFlbXUtc2VjY29tcC5jOjE2OjA6Ci0JcWVtdS1zZWNjb21wLmM6Mjg6NzogZXJyb3I6ICdfX05SX3NlbGVjdCcgdW5kZWNsYXJlZCBoZXJlIChub3QgaW4gYSBmdW5jdGlvbikKLQkgICAgICB7IFNDTVBfU1lTKHNlbGVjdCksIDI1MiB9LAotCSAgICAgICAgXgotCXFlbXUtc2VjY29tcC5jOjM2Ojc6IGVycm9yOiAnX19OUl9tbWFwJyB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKQotCSAgICAgIHsgU0NNUF9TWVMobW1hcCksIDI0NyB9LAotCSAgICAgICAgXgotCXFlbXUtc2VjY29tcC5jOjU3Ojc6IGVycm9yOiAnX19OUl9nZXRybGltaXQnIHVuZGVjbGFyZWQgaGVyZSAobm90IGluIGEgZnVuY3Rpb24pCi0JICAgICAgeyBTQ01QX1NZUyhnZXRybGltaXQpLCAyNDUgfSwKLQkgICAgICAgIF4KLQlxZW11LXNlY2NvbXAuYzo5Njo3OiBlcnJvcjogJ19fTlJfdGltZScgdW5kZWNsYXJlZCBoZXJlIChub3QgaW4gYSBmdW5jdGlvbikKLQkgICAgICB7IFNDTVBfU1lTKHRpbWUpLCAyNDUgfSwKLQkgICAgICAgIF4KLQlxZW11LXNlY2NvbXAuYzoxODU6NzogZXJyb3I6ICdfX05SX2FsYXJtJyB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKQotCSAgICAgIHsgU0NNUF9TWVMoYWxhcm0pLCAyNDEgfSwKLQotcGxlYXNlIHJlZmVyIHNvdXJjZSBmaWxlczoKLQlhcmNoL2FybS9pbmNsdWRlL3VhcGkvYXNtL3VuaXN0ZC5oCi1vciBrZXJuZWwgaGVhZGVyOgotCS91c3IvaW5jbHVkZS9hc20vdW5pc3RkLmgKLQotU2lnbmVkLW9mZi1ieTogUm95LkxpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gcWVtdS1zZWNjb21wLmMgfCAxMyArKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3FlbXUtc2VjY29tcC5jIGIvcWVtdS1zZWNjb21wLmMKLWluZGV4IGRmNzVkOWMuLjBlNTc3ZjggMTAwNjQ0Ci0tLS0gYS9xZW11LXNlY2NvbXAuYwotKysrIGIvcWVtdS1zZWNjb21wLmMKLUBAIC0zNSwxNSArMzUsMjEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBRZW11U2VjY29tcFN5c2NhbGwgc2VjY29tcF93aGl0ZWxpc3RbXSA9IHsKLSAgICAgeyBTQ01QX1NZUyh0aW1lcl9zZXR0aW1lKSwgMjU1IH0sCi0gICAgIHsgU0NNUF9TWVModGltZXJfZ2V0dGltZSksIDI1NCB9LAotICAgICB7IFNDTVBfU1lTKGZ1dGV4KSwgMjUzIH0sCi0rI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykKLSAgICAgeyBTQ01QX1NZUyhzZWxlY3QpLCAyNTIgfSwKLSsgICAgeyBTQ01QX1NZUyh0aW1lKSwgMjQ1IH0sCi0rICAgIHsgU0NNUF9TWVMoYWxhcm0pLCAyNDEgfSwKLSsgICAgeyBTQ01QX1NZUyhnZXRybGltaXQpLCAyNDUgfSwKLSsgICAgeyBTQ01QX1NZUyhtbWFwKSwgMjQ3IH0sCi0rICAgIHsgU0NNUF9TWVMoc29ja2V0Y2FsbCksIDI1MCB9LAotKyAgICB7IFNDTVBfU1lTKGlwYyksIDI0NSB9LAotKyNlbmRpZgotICAgICB7IFNDTVBfU1lTKHJlY3Zmcm9tKSwgMjUxIH0sCi0gICAgIHsgU0NNUF9TWVMoc2VuZHRvKSwgMjUwIH0sCi0tICAgIHsgU0NNUF9TWVMoc29ja2V0Y2FsbCksIDI1MCB9LAotICAgICB7IFNDTVBfU1lTKHJlYWQpLCAyNDkgfSwKLSAgICAgeyBTQ01QX1NZUyhpb19zdWJtaXQpLCAyNDkgfSwKLSAgICAgeyBTQ01QX1NZUyhicmspLCAyNDggfSwKLSAgICAgeyBTQ01QX1NZUyhjbG9uZSksIDI0NyB9LAotLSAgICB7IFNDTVBfU1lTKG1tYXApLCAyNDcgfSwKLSAgICAgeyBTQ01QX1NZUyhtcHJvdGVjdCksIDI0NiB9LAotICAgICB7IFNDTVBfU1lTKGV4ZWN2ZSksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKG9wZW4pLCAyNDUgfSwKLUBAIC01OCw3ICs2NCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgUWVtdVNlY2NvbXBTeXNjYWxsIHNlY2NvbXBfd2hpdGVsaXN0W10gPSB7Ci0gICAgIHsgU0NNUF9TWVMoYmluZCksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKGxpc3RlbiksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKHNlbWdldCksIDI0NSB9LAotLSAgICB7IFNDTVBfU1lTKGlwYyksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKGdldHRpbWVvZmRheSksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKHJlYWRsaW5rKSwgMjQ1IH0sCi0gICAgIHsgU0NNUF9TWVMoYWNjZXNzKSwgMjQ1IH0sCi1AQCAtMTA0LDcgKzEwOSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgUWVtdVNlY2NvbXBTeXNjYWxsIHNlY2NvbXBfd2hpdGVsaXN0W10gPSB7Ci0gICAgIHsgU0NNUF9TWVModGltZXMpLCAyNDUgfSwKLSAgICAgeyBTQ01QX1NZUyhleGl0KSwgMjQ1IH0sCi0gICAgIHsgU0NNUF9TWVMoY2xvY2tfZ2V0dGltZSksIDI0NSB9LAotLSAgICB7IFNDTVBfU1lTKHRpbWUpLCAyNDUgfSwKLSAgICAgeyBTQ01QX1NZUyhyZXN0YXJ0X3N5c2NhbGwpLCAyNDUgfSwKLSAgICAgeyBTQ01QX1NZUyhwd3JpdGU2NCksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKG5hbm9zbGVlcCksIDI0NSB9LAotQEAgLTE5NCw3ICsxOTgsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IFFlbXVTZWNjb21wU3lzY2FsbCBzZWNjb21wX3doaXRlbGlzdFtdID0gewotICAgICB7IFNDTVBfU1lTKGxzdGF0NjQpLCAyNDEgfSwKLSAgICAgeyBTQ01QX1NZUyhzZW5kZmlsZTY0KSwgMjQxIH0sCi0gICAgIHsgU0NNUF9TWVModWdldHJsaW1pdCksIDI0MSB9LAotLSAgICB7IFNDTVBfU1lTKGFsYXJtKSwgMjQxIH0sCi0gICAgIHsgU0NNUF9TWVMocnRfc2lnc3VzcGVuZCksIDI0MSB9LAotICAgICB7IFNDTVBfU1lTKHJ0X3NpZ3F1ZXVlaW5mbyksIDI0MSB9LAotICAgICB7IFNDTVBfU1lTKHJ0X3Rnc2lncXVldWVpbmZvKSwgMjQxIH0sCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2dsaWJjLTIuMjUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9nbGliYy0yLjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjkwOGJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2dsaWJjLTIuMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi1Gcm9tOiBDaHJpc3RvcGhlciBDb3Zpbmd0b24KLURhdGU6IFdlZCwgMjggRGVjIDIwMTYgMTU6MDQ6MzMgLTA1MDAKLVN1YmplY3Q6IFtRZW11LWRldmVsXSBbUEFUQ0ggdjNdIGJ1aWxkOiBpbmNsdWRlIHN5cy9zeXNtYWNyb3MuaCBmb3IgbWFqb3IoKSBhbmQgbWlub3IoKWEKLQotVGhlIGRlZmluaXRpb24gb2YgdGhlIG1ham9yKCkgYW5kIG1pbm9yKCkgbWFjcm9zIGFyZSBtb3Zpbmcgd2l0aGluIGdsaWJjIHRvCi08c3lzL3N5c21hY3Jvcy5oPi4gSW5jbHVkZSB0aGlzIGhlYWRlciB3aGVuIGl0IGlzIGF2YWlsYWJsZSB0byBhdm9pZCB0aGUKLWZvbGxvd2luZyBzb3J0cyBvZiBidWlsZC1zdG9wcGluZyBtZXNzYWdlczoKLQotcWdhL2NvbW1hbmRzLXBvc2l4LmM6IEluIGZ1bmN0aW9uIOKAmGRldl9tYWpvcl9taW5vcuKAmToKLXFnYS9jb21tYW5kcy1wb3NpeC5jOjY1NjoxMzogZXJyb3I6IEluIHRoZSBHTlUgQyBMaWJyYXJ5LCAibWFqb3IiIGlzIGRlZmluZWQKLSBieSA8c3lzL3N5c21hY3Jvcy5oPi4gRm9yIGhpc3RvcmljYWwgY29tcGF0aWJpbGl0eSwgaXQgaXMKLSBjdXJyZW50bHkgZGVmaW5lZCBieSA8c3lzL3R5cGVzLmg+IGFzIHdlbGwsIGJ1dCB3ZSBwbGFuIHRvCi0gcmVtb3ZlIHRoaXMgc29vbi4gVG8gdXNlICJtYWpvciIsIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSBkaXJlY3RseS4gSWYgeW91IGRpZCBub3QgaW50ZW5kIHRvIHVzZSBhIHN5c3RlbS1kZWZpbmVkIG1hY3JvCi0gIm1ham9yIiwgeW91IHNob3VsZCB1bmRlZmluZSBpdCBhZnRlciBpbmNsdWRpbmcgPHN5cy90eXBlcy5oPi4gWy1XZXJyb3JdCi0gICAgICAgICAqZGV2bWFqb3IgPSBtYWpvcihzdC5zdF9yZGV2KTsKLSAgICAgICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi1xZ2EvY29tbWFuZHMtcG9zaXguYzo2NTc6MTM6IGVycm9yOiBJbiB0aGUgR05VIEMgTGlicmFyeSwgIm1pbm9yIiBpcyBkZWZpbmVkCi0gYnkgPHN5cy9zeXNtYWNyb3MuaD4uIEZvciBoaXN0b3JpY2FsIGNvbXBhdGliaWxpdHksIGl0IGlzCi0gY3VycmVudGx5IGRlZmluZWQgYnkgPHN5cy90eXBlcy5oPiBhcyB3ZWxsLCBidXQgd2UgcGxhbiB0bwotIHJlbW92ZSB0aGlzIHNvb24uIFRvIHVzZSAibWlub3IiLCBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0gZGlyZWN0bHkuIElmIHlvdSBkaWQgbm90IGludGVuZCB0byB1c2UgYSBzeXN0ZW0tZGVmaW5lZCBtYWNybwotICJtaW5vciIsIHlvdSBzaG91bGQgdW5kZWZpbmUgaXQgYWZ0ZXIgaW5jbHVkaW5nIDxzeXMvdHlwZXMuaD4uIFstV2Vycm9yXQotICAgICAgICAgKmRldm1pbm9yID0gbWlub3Ioc3Quc3RfcmRldik7Ci0gICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotVGhlIGFkZGl0aW9uYWwgaW5jbHVkZSBhbGxvd3MgdGhlIGJ1aWxkIHRvIGNvbXBsZXRlIG9uIEZlZG9yYSAyNiAoUmF3aGlkZSkKLXdpdGggZ2xpYmMgdmVyc2lvbiAyLjI0LjkwLgotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBDb3Zpbmd0b24gPGFkZHJlc3NAaGlkZGVuPgotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxNi0xMi9tc2cwMzU0OC5odG1sCi0KLWRpZmYgLXVOciBxZW11LTIuOC4wLm9yaWcvY29uZmlndXJlIHFlbXUtMi44LjAvY29uZmlndXJlCi0tLS0gcWVtdS0yLjguMC5vcmlnL2NvbmZpZ3VyZSAgMjAxNy0wMi0yMSAxOTowNToxMy4xODAwOTQ3MDggKzAxMDAKLSsrKyBxZW11LTIuOC4wL2NvbmZpZ3VyZSAgICAgICAyMDE3LTAyLTIxIDE5OjA4OjUzLjExNDA4NzA4NCArMDEwMAotQEAgLTQ3MjcsNiArNDcyNywyMCBAQAotIHRoZW4KLSBmaQotIAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgY2hlY2sgZm9yIHN5c21hY3Jvcy5oCi0rCi0raGF2ZV9zeXNtYWNyb3M9bm8KLStjYXQgPiAkVE1QQyA8PCBFT0YKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotK2ludCBtYWluKHZvaWQpIHsKLSsgICAgcmV0dXJuIG1ha2VkZXYoMCwgMCk7Ci0rfQotK0VPRgotK2lmIGNvbXBpbGVfcHJvZyAiIiAiIiA7IHRoZW4KLSsgICAgaGF2ZV9zeXNtYWNyb3M9eWVzCi0rZmkKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAjIEVuZCBvZiBDQyBjaGVja3MKLSAjIEFmdGVyIGhlcmUsIG5vIG1vcmUgJGNjIG9yICRsZCBydW5zCi0gCi1kaWZmIC11TnIgcWVtdS0yLjguMC5vcmlnL2NvbmZpZ3VyZSBxZW11LTIuOC4wL2NvbmZpZ3VyZQotLS0tIHFlbXUtMi44LjAub3JpZy9jb25maWd1cmUgIDIwMTctMDItMjEgMTk6MDU6MTMuMTgwMDk0NzA4ICswMTAwCi0rKysgcWVtdS0yLjguMC9jb25maWd1cmUgICAgICAgMjAxNy0wMi0yMSAxOTowODo1My4xMTQwODcwODQgKzAxMDAKLUBAIC01Njk1LDYgKzU3MDksMTAgQEAKLSAgIGVjaG8gIkNPTkZJR19BRl9WU09DSz15IiA+PiAkY29uZmlnX2hvc3RfbWFrCi0gZmkKLSAKLStpZiB0ZXN0ICIkaGF2ZV9zeXNtYWNyb3MiID0gInllcyIgOyB0aGVuCi0rICBlY2hvICJDT05GSUdfU1lTTUFDUk9TPXkiID4+ICRjb25maWdfaG9zdF9tYWsKLStmaQotKwotICMgSG9sZCB0d28gdHlwZXMgb2YgZmxhZzoKLSAjICAgQ09ORklHX1RIUkVBRF9TRVROQU1FX0JZVEhSRUFEICAtIHdlJ3ZlIGdvdCBhIHdheSBvZiBzZXR0aW5nIHRoZSBuYW1lIG9uCi0gIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHRocmVhZCB3ZSBoYXZlIGEgaGFuZGxlIHRvCi1kaWZmIC11TnIgcWVtdS0yLjguMC5vcmlnL2luY2x1ZGUvc3lzZW11L29zLXBvc2l4LmggcWVtdS0yLjguMC9pbmNsdWRlL3N5c2VtdS9vcy1wb3NpeC5oCi0tLS0gcWVtdS0yLjguMC5vcmlnL2luY2x1ZGUvc3lzZW11L29zLXBvc2l4LmgJMjAxNi0xMi0yMCAyMToxNjo0OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBxZW11LTIuOC4wL2luY2x1ZGUvc3lzZW11L29zLXBvc2l4LmgJMjAxNy0wMi0yMSAxOTowNzoxOC4wMDkwOTAzODEgKzAxMDAKLUBAIC0zNCw2ICszNCwxMCBAQAotICNpbmNsdWRlIDxuZXRkYi5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAKLSsjaWZkZWYgQ09ORklHX1NZU01BQ1JPUwotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0rCi0gdm9pZCBvc19zZXRfbGluZV9idWZmZXJpbmcodm9pZCk7Ci0gdm9pZCBvc19zZXRfcHJvY19uYW1lKGNvbnN0IGNoYXIgKnMpOwotIHZvaWQgb3Nfc2V0dXBfc2lnbmFsX2hhbmRsaW5nKHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYzUyMjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSA0ZmE0YWFlNDE3NmVmNmQ4ZjRkNGI4MzIzZDA2MWUyNDMzOTE4YTI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B4aWxpbnguY29tPgorRGF0ZTogV2VkLCAxNyBKYW4gMjAxOCAxMDo1MTo0OSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBsaW51eC11c2VyOiBGaXggd2Via2l0Z3RrIGhhbmdzIG9uIDMyLWJpdCB4ODYgdGFyZ2V0CisKK1NpbmNlIGNvbW1pdCAibGludXgtdXNlcjogVGlkeSBhbmQgZW5mb3JjZSByZXNlcnZlZF92YSBpbml0aWFsaXphdGlvbiIKKygxOGU4MGM1NWJiNmVjMTdjMDVlYzBiYTcxN2VjODM5MzNjMmJmYzA3KSB0aGUgWW9jdG8gd2Via2l0Z3RrIGJ1aWxkCitoYW5ncyB3aGVuIGNyb3NzIGNvbXBpbGluZyBmb3IgMzItYml0IHg4NiBvbiBhIDY0LWJpdCB4ODYgbWFjaGluZSB1c2luZworbXVzbC4KKworVG8gZml4IHRoZSBpc3N1ZSByZWR1Y2UgdGhlIE1BWF9SRVNFUlZFRF9WQSBtYWNybyB0byBiZSBhIGNsb3NlciBtYXRjaAordG8gd2hhdCBpdCB3YXMgYmVmb3JlIHRoZSBwcm9ibGVtYXRpYyBjb21taXQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTgtMDEvbXNnMDQxODUuaHRtbAorU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B4aWxpbnguY29tPgorLS0tCisgbGludXgtdXNlci9tYWluLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saW51eC11c2VyL21haW4uYyBiL2xpbnV4LXVzZXIvbWFpbi5jCitpbmRleCA0NTBlYjNjZTY1Li5jN2NjMGExODRlIDEwMDY0NAorLS0tIGEvbGludXgtdXNlci9tYWluLmMKKysrKyBiL2xpbnV4LXVzZXIvbWFpbi5jCitAQCAtNzcsNyArNzcsNyBAQCBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgKFRBUkdFVF9MT05HX0JJVFMgPT0gMzIgfHwgZGVmaW5lZChUQVJHRVRfQUJJMzIpKQorIC8qIFRoZXJlIGFyZSBhIG51bWJlciBvZiBwbGFjZXMgd2hlcmUgd2UgYXNzaWduIHJlc2VydmVkX3ZhIHRvIGEgdmFyaWFibGUKKyAgICBvZiB0eXBlIGFiaV91bG9uZyBhbmQgZXhwZWN0IGl0IHRvIGZpdC4gIEF2b2lkIHRoZSBsYXN0IHBhZ2UuICAqLworLSMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBICAoMHhmZmZmZmZmZnVsICYgVEFSR0VUX1BBR0VfTUFTSykKKysjICAgZGVmaW5lIE1BWF9SRVNFUlZFRF9WQSAgKDB4N2ZmZmZmZmZ1bCAmIFRBUkdFVF9QQUdFX01BU0spCisgIyAgZWxzZQorICMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBICAoMXVsIDw8IFRBUkdFVF9WSVJUX0FERFJfU1BBQ0VfQklUUykKKyAjICBlbmRpZgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcHBjX2xvY2tpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9wcGNfbG9ja2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY3MjI0My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9wcGNfbG9ja2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi1JJ3ZlIHRyYWNrZWQgZG93biB3aGF0IEkgdGhpbmsgaXMgYSBwcm9ibGVtIGNhdXNpbmcgcWVtdS1zeXN0ZW0tcHBjCi10byBoYW5nIHdoaWxzdCBib290aW5nIGltYWdlcy4KLQotSSBiZWxpZXZlIHRoZSBkZWNyZW1lbnRlciB0aW1lciBzdG9wcyByZWNlaXZpbmcgaW50ZXJydXB0cyBzbwotdGFza3MgaW4gb3VyIGltYWdlcyBoYW5nIGluZGVmaW5pdGVseSBhcyB0aGUgdGltZXIgc3RvcHBlZC4gCi0KLUl0IGNhbiBiZSBzdW1tZWQgdXAgd2l0aCB0aGlzIGxpbmUgb2YgZGVidWc6Ci0KLXBwY19zZXRfaXJxOiAweDU1YjRlMGQ1NjJmMCBuX0lSUSA4IGxldmVsIDEgPT4gcGVuZGluZyAwMDAwMDEwMHJlcSAwMDAwMDAwNAotCi1JdCBzaG91bGQgbm9ybWFsbHkgcmVhZDoKLQotcHBjX3NldF9pcnE6IDB4NTViNGUwZDU2MmYwIG5fSVJRIDggbGV2ZWwgMSA9PiBwZW5kaW5nIDAwMDAwMTAwcmVxIDAwMDAwMDAyCi0KLVRoZSBxdWVzdGlvbiBpcyB3aHkgQ1BVX0lOVEVSUlVQVF9FWElUVEIgZW5kcyB1cCBiZWluZyBzZXQgd2hlbiB0aGUKLWxpbmVzIGFib3ZlIHRoaXMgbG9nIG1lc3NhZ2UgY2xlYXJseSBzZXRzIENQVV9JTlRFUlJVUFRfSEFSRCAodmlhIAotY3B1X2ludGVycnVwdCgpICkuCi0KLUkgbm90ZSBpbiBjcHUuaDoKLQotICAgIC8qIHVwZGF0ZXMgcHJvdGVjdGVkIGJ5IEJRTCAqLwotICAgIHVpbnQzMl90IGludGVycnVwdF9yZXF1ZXN0OwotCi0oZm9yIHN0cnVjdCBDUFVTdGF0ZSkKLQotVGhlIHBwYyBjb2RlIGRvZXMgImNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQiIgaW4gNQotcGxhY2VzLCAzIGluIGV4Y3BfaGVscGVyLmMgYW5kIDIgaW4gaGVscGVyX3JlZ3MuaC4gSW4gYWxsIGNhc2VzLCAgCi1nX2Fzc2VydChxZW11X211dGV4X2lvdGhyZWFkX2xvY2tlZCgpKTsgZmFpbHMuIElmIEkgZG8gc29tZXRoaW5nIGxpa2U6Ci0KLWlmICghcWVtdV9tdXRleF9pb3RocmVhZF9sb2NrZWQoKSkgewotICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOwotICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKLSAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotfSBlbHNlIHsKLSAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci19Ci0KLWluIHRoZXNlIGNhbGwgc2l0ZXMgdGhlbiBJIGNhbiBubyBsb25nZXIgbG9jayBxZW11IHVwIHdpdGggbXkgdGVzdAotY2FzZS4KLQotSSBzdXNwZWN0IHRoZSBfSEFSRCBzZXR0aW5nIGdldHMgb3ZlcndyaXR0ZW4gd2hpY2ggc3RvcHMgdGhlIAotZGVjcmVtZW50ZXIgaW50ZXJydXB0cyBiZWluZyBkZWxpdmVyZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtJc3N1ZSBkaXNjdXNzZWQgb24gcWVtdSBtYWlsaW5nIGxpc3QgMjAxNy8xMS8yMF0KLVJQIDIwMTcvMTEvMjAKLQotSW5kZXg6IHFlbXUtMi4xMC4xL3RhcmdldC9wcGMvZXhjcF9oZWxwZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHFlbXUtMi4xMC4xLm9yaWcvdGFyZ2V0L3BwYy9leGNwX2hlbHBlci5jCi0rKysgcWVtdS0yLjEwLjEvdGFyZ2V0L3BwYy9leGNwX2hlbHBlci5jCi1AQCAtMjA3LDcgKzIwNyw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwb3dlcnBjX2V4Y3AoUG93ZXJQQ0MKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRW50ZXJpbmcgY2hlY2tzdG9wIHN0YXRlXG4iKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgY3MtPmhhbHRlZCA9IDE7Ci0tICAgICAgICAgICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOwotKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOwotKyAgICAgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKLSsgICAgICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotICAgICAgICAgfQotICAgICAgICAgaWYgKGVudi0+bXNyX21hc2sgJiBNU1JfSFZCKSB7Ci0gICAgICAgICAgICAgLyogSVNBIHNwZWNpZmllcyBIViwgYnV0IGNhbiBiZSBkZWxpdmVyZWQgdG8gZ3Vlc3Qgd2l0aCBIViBjbGVhcgotQEAgLTk0MCw3ICs5NDIsOSBAQCB2b2lkIGhlbHBlcl9zdG9yZV9tc3IoQ1BVUFBDU3RhdGUgKmVudiwKLSAKLSAgICAgaWYgKGV4Y3AgIT0gMCkgewotICAgICAgICAgQ1BVU3RhdGUgKmNzID0gQ1BVKHBwY19lbnZfZ2V0X2NwdShlbnYpKTsKLS0gICAgICAgIGNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQjsKLSsgICAgICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOwotKyAgICAgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOwotKyAgICAgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKLSAgICAgICAgIHJhaXNlX2V4Y2VwdGlvbihlbnYsIGV4Y3ApOwotICAgICB9Ci0gfQotQEAgLTk5NSw3ICs5OTksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZG9fcmZpKENQVVBQQ1N0YXRlICplCi0gICAgIC8qIE5vIG5lZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uIGhlcmUsCi0gICAgICAqIGFzIHJmaSBpcyBhbHdheXMgdGhlIGxhc3QgaW5zbiBvZiBhIFRCCi0gICAgICAqLwotLSAgICBjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEI7Ci0rICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOwotKyAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci0rICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7Ci0gCi0gICAgIC8qIFJlc2V0IHRoZSByZXNlcnZhdGlvbiAqLwotICAgICBlbnYtPnJlc2VydmVfYWRkciA9IC0xOwotSW5kZXg6IHFlbXUtMi4xMC4xL3RhcmdldC9wcGMvaGVscGVyX3JlZ3MuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHFlbXUtMi4xMC4xLm9yaWcvdGFyZ2V0L3BwYy9oZWxwZXJfcmVncy5oCi0rKysgcWVtdS0yLjEwLjEvdGFyZ2V0L3BwYy9oZWxwZXJfcmVncy5oCi1AQCAtMTE0LDExICsxMTQsMTUgQEAgc3RhdGljIGlubGluZSBpbnQgaHJlZ19zdG9yZV9tc3IoQ1BVUFBDUwotICAgICB9Ci0gICAgIGlmICgoKHZhbHVlID4+IE1TUl9JUikgJiAxKSAhPSBtc3JfaXIgfHwKLSAgICAgICAgICgodmFsdWUgPj4gTVNSX0RSKSAmIDEpICE9IG1zcl9kcikgewotLSAgICAgICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOwotKyAgICAgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7Ci0rICAgICAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci0rICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotICAgICB9Ci0gICAgIGlmICgoZW52LT5tbXVfbW9kZWwgJiBQT1dFUlBDX01NVV9CT09LRSkgJiYKLSAgICAgICAgICgodmFsdWUgPj4gTVNSX0dTKSAmIDEpICE9IG1zcl9ncykgewotLSAgICAgICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOwotKyAgICAgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7Ci0rICAgICAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci0rICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotICAgICB9Ci0gICAgIGlmICh1bmxpa2VseSgoZW52LT5mbGFncyAmIFBPV0VSUENfRkxBR19UR1BSKSAmJgotICAgICAgICAgICAgICAgICAgKCh2YWx1ZSBeIGVudi0+bXNyKSAmICgxIDw8IE1TUl9UR1BSKSkpKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZjZjMjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotcmVxdWlyZSBxZW11LmluYwotCi1pbmhlcml0IHB0ZXN0Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggbWFrZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDQxYzI4ZDJjZjg2ZTE1YTM3ZmE0N2UxNWE3MmZiYWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7ZW5kbGluZT0yNDttZDU9YzA0ZGVmN2FlMzg4NTBlN2QzZWY1NDg1ODgxNTk5MTMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3dpa2kucWVtdS1wcm9qZWN0Lm9yZy9kb3dubG9hZC8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3Bvd2VycGNfcm9tLmJpbiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdyYWJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2V4Y2x1ZGUtc29tZS1hcm0tRUFCSS1vYnNvbGV0ZS1zeXNjYWxscy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly93YWNvbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtcHRlc3QtaW4tbWFrZWZpbGUtdjEwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9xZW11LWVubGFyZ2UtZW52LWVudHJ5LXNpemUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbm8tdmFsZ3JpbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGF0aGxpbWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3FlbXUtMi41LjAtY2ZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dsaWJjLTIuMjUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Qcm92aWRlLXN1cHBvcnQtZm9yLXRoZS1DVVNFLVRQTS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUludHJvZHVjZS1jb25kaXRpb24tdG8tbm90aWZ5LXdhaXRlcnMtb2YtY29tcGxldGVkLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1JbnRyb2R1Y2UtY29uZGl0aW9uLWluLVRQTS1iYWNrZW5kLWZvci1ub3RpZmljYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMtdjIuOS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzcxMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzY3My5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzY3Mi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE2Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wcGNfbG9ja2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tZW1mZC5wYXRjaCBcCi0gICAgICAgICAgICIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInFlbXUtKD9QPHB2ZXI+XGQrXC4uKilcLnRhciIKLQotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY3B1cy5jLXFlbXVfY3B1X2tpY2tfdGhyZWFkX2RlYnVnZ2luZy5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYTczNDQxZGU3M2E5YjUyYzZjNDljOTcxOTBkMjE4NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZTlmMzllMTMwNmU2ZGNjNTk1NDk0ZTkxYzE0NjRkNGIwM2Y1NWRkZDIwNTMxODNlMGUxYjY5ZjdmNzc2ZDQ4IgotCi1DT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaG42NCA9ICJudWxsIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIFByZXZlbnQgUUEgd2FybmluZ3MgYWJvdXQgaW5zdGFsbGVkICR7bG9jYWxzdGF0ZWRpcn0vcnVuCi0gICAgaWYgWyAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gXTsgdGhlbiBybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW47IGZpCi0gICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L3Bvd2VycGNfcm9tLmJpbiAke0R9JHtkYXRhZGlyfS9xZW11Ci19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0JbWFrZSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtckwgJHtCfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfQotCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgLXR5cGUgZiAtbmFtZSAiKi5bU3NoY29kXSIgfCB4YXJncyAtaSBybSAtcmYge30KLQotCWNwICR7U30vdGVzdHMvTWFrZWZpbGUuaW5jbHVkZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiODJjNWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjExLjEuYmIKQEAgLTAsMCArMSw1OSBAQAorcmVxdWlyZSBxZW11LmluYworCitpbmhlcml0IHB0ZXN0CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggbWFrZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDQxYzI4ZDJjZjg2ZTE1YTM3ZmE0N2UxNWE3MmZiYWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7ZW5kbGluZT0yNDttZDU9YzA0ZGVmN2FlMzg4NTBlN2QzZWY1NDg1ODgxNTk5MTMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3dpa2kucWVtdS1wcm9qZWN0Lm9yZy9kb3dubG9hZC8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3Bvd2VycGNfcm9tLmJpbiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdyYWJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3dhY29tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FkZC1wdGVzdC1pbi1tYWtlZmlsZS12MTAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3FlbXUtZW5sYXJnZS1lbnYtZW50cnktc2l6ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uby12YWxncmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXRobGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWVtZmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hcm0tdHJhbnNsYXRlLWE2NC10cmVhdC1ESVNBU19VUERBVEUtYXMtdmFyaWFudC1vZi1ELnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NoZWNrLVBTMlF1ZXVlLXBvaW50ZXJzLWluLXBvc3RfbG9hZC1yb3V0aW5lLnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicWVtdS0oP1A8cHZlcj5cZCtcLi4qKVwudGFyIgorCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAorICAgICAgICAgICAgZmlsZTovL2ZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jcHVzLmMtcWVtdV9jcHVfa2lja190aHJlYWRfZGVidWdnaW5nLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjYxY2Y4NjJiNjAwN2ViYTRhYzk4MjQ3Nzc2YWYyZTI3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5ZGYyMjEzY2VlZDMyZTkxZGFiN2JjOWRkMTljMWFmODNmOTFiYTcyYzdhZWVmNzYwNWRmYWFmODE3MzJjY2IiCisKK0NPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgUHJldmVudCBRQSB3YXJuaW5ncyBhYm91dCBpbnN0YWxsZWQgJHtsb2NhbHN0YXRlZGlyfS9ydW4KKyAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bjsgZmkKKyAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vcG93ZXJwY19yb20uYmluICR7RH0ke2RhdGFkaXJ9L3FlbXUKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwltYWtlIGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1yTCAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9CisJZmluZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyAtdHlwZSBmIC1uYW1lICIqLltTc2hjb2RdIiB8IHhhcmdzIC1pIHJtIC1yZiB7fQorCisJY3AgJHtTfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJIyBEb24ndCBjaGVjayB0aGUgZmlsZSBnZW5yZWF0ZWQgYnkgY29uZmlndXJlCisJc2VkIC1pIC1lICcvd2lsZGNhcmQgY29uZmlnLWhvc3QubWFrL2QnIFwKKwkgICAgICAgLWUgJyQgey9lbmRpZi9kfScgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC9hY2xvY2FsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC9hY2xvY2FsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWY0NDI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQvYWNsb2NhbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotQWRkIHRoZSBhY2xvY2FsLm00IGFzIGFjaW5jbHVkZS5tNAotCi1JbmRleDogcXVpbHQtMC40Ny9hY2luY2x1ZGUubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBxdWlsdC0wLjQ3L2FjaW5jbHVkZS5tNAkyMDA2LTEwLTEwIDE3OjA1OjU2LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxMTkgQEAKLStkbmwgQWxsb3cgY29uZmlndXJlIHRvIHNwZWNpZnkgYSBzcGVjaWZpYyBiaW5hcnkKLStkbmwgMTogRW52aXJvbm1lbnQgdmFyaWFibGUKLStkbmwgMjogYmluYXJ5IG5hbWUKLStkbmwgMzogb3B0aW9uYWwgbGlzdCBvZiBhbHRlcm5hdGl2ZSBiaW5hcnkgbmFtZXMKLStkbmwgNDogb3B0aW9uYWwgbGlzdCBvZiBhZGRpdGlvbmFsIHNlYXJjaCBkaXJlY3RvcmllcwotK0FDX0RFRlVOKFtRVUlMVF9DT01QQVRfUFJPR19QQVRIXSxbCi0rICBtNF9kZWZpbmUoW2ludGVybmFsXyQyX2NtZF0sW2VzeXNjbWQobHMgY29tcGF0LyQyLmluIDI+L2Rldi9udWxsKV0pCi0rCi0rICBBQ19BUkdfV0lUSCgkMiwgQUNfSEVMUF9TVFJJTkcoCi0rICAgIFstLXdpdGgtJDJdLCBbbmFtZSBvZiB0aGUgJDIgZXhlY3V0YWJsZSB0byB1c2VdCi0rICAgICAgICAgICAgICAgICBtNF9pZihpbnRlcm5hbF8kMl9jbWQsW10sW10sWyAodXNlIC0td2l0aG91dC0kMgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdXNlIGFuIGludGVybmFsIG1lY2hhbmlzbSldKSksCi0rICBbCi0rICAgIGlmIHRlc3QgeCIkd2l0aHZhbCIgPSB4bm9uZTsgdGhlbgotKyAgICAgIEFDX01TR19FUlJPUihbSW52YWxpZCBjb25maWd1cmUgYXJndW1lbnQuICB1c2UgLS13aXRob3V0LSQyXSkKLSsgICAgZmkKLSsgICAgaWYgdGVzdCB4IiR3aXRodmFsIiAhPSB4bm87IHRoZW4KLSsgICAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yICQyKQotKyAgICAgICQxPSIkd2l0aHZhbCIKLSsgICAgICBpZiB0ZXN0IC1lICIkJDEiOyB0aGVuCi0rCWlmIHRlc3QgISAtZiAiJCQxIiAtYSAhIC1oICIkJDEiIHx8IHRlc3QgISAteCAiJCQxIjsgdGhlbgotKwkgIEFDX01TR19FUlJPUihbJCQxIGlzIG5vdCBhbiBleGVjdXRhYmxlIGZpbGVdKQotKwlmaQotKyAgICAgIGZpCi0rICAgICAgQUNfTVNHX1JFU1VMVChbJCQxXSkKLSsgICAgICBpZiB0ZXN0ICEgLWUgIiQkMSI7IHRoZW4KLSsgICAgICAgIEFDX01TR19XQVJOKFskJDEgZG9lcyBub3QgZXhpc3RdKQotKyAgICAgIGZpCi0rICAgICAgQ09NUEFUX1NZTUxJTktTPSIkQ09NUEFUX1NZTUxJTktTICQyIgotKyAgICBmaQotKyAgXSxbCi0rICAgIG00X2lmKFskM10sW10sWwotKyAgICAgIEFDX1BBVEhfUFJPRygkMSwkMiwsJFBBVEg6JDQpCi0rICAgIF0sWwotKyAgICAgIEFDX1BBVEhfUFJPR1MoJDEsJDMsLCRQQVRIOiQ0KQotKyAgICAgIGlmIHRlc3QgLW4gIiQkMSIgLWEgImBleHByICIkJDEiIDogJy4qL1woW1teL11dKlwpJCdgIiAhPSAiJDIiOyB0aGVuCi0rCUNPTVBBVF9TWU1MSU5LUz0iJENPTVBBVF9TWU1MSU5LUyAkMiIKLSsgICAgICBmaQotKyAgICBdKQotKyAgICBtNF9pZihbJDRdLFtdLFtdLFsKLSsgICAgICBpZiB0ZXN0IC1uICIkJDEiOyB0aGVuCi0rCWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLSsgICAgICAgIGZvciBkaXIgaW4gIiQ0IjsgZG8KLSsgICAgICAgICAgaWYgdGVzdCAiYGRpcm5hbWUgJCQxYCIgPSAiJGRpciI7IHRoZW4KLSsgICAgICAgICAgICBDT01QQVRfU1lNTElOS1M9IiRDT01QQVRfU1lNTElOS1MgJDIiCi0rCSAgICBicmVhawotKwkgIGZpCi0rICAgICAgICBkb25lCi0rCUlGUz0iJGFzX3NhdmVfSUZTIgotKyAgICAgIGZpCi0rICAgIF0pCi0rICBdKQotKyAgaWYgdGVzdCAteiAiJCQxIjsgdGhlbgotKyAgICBtNF9pZihpbnRlcm5hbF8kMl9jbWQsW10sWwotKyAgICAgIEFDX01TR19FUlJPUihbUGxlYXNlIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mICQyIHdpdGggdGhlIG9wdGlvbiAnLS13aXRoLSQyJ10pCi0rICAgIF0sWwotKyAgICAgIEFDX01TR19XQVJOKFtVc2luZyBpbnRlcm5hbCAkMiBtZWNoYW5pc20uICBVc2Ugb3B0aW9uICctLXdpdGgtJDInIHRvIG92ZXJyaWRlXSkKLSsgICAgICBDT01QQVRfUFJPR1JBTVM9IiRDT01QQVRfUFJPR1JBTVMgJDIiCi0rICAgICAgJDE9JDIKLSsgICAgICBJTlRFUk5BTF8kMT0xCi0rICAgIF0pCi0rICBmaQotKyAgQUNfU1VCU1QoJDEpCi0rXSkKLSsKLStkbmwgQWxsb3cgY29uZmlndXJlIHRvIHNwZWNpZnkgYSBzcGVjaWZpYyBiaW5hcnkKLStkbmwgVGhpcyB2YXJpYW50IGlzIGZvciBvcHRpb25hbCBiaW5hcmllcy4KLStkbmwgMTogRW52aXJvbm1lbnQgdmFyaWFibGUKLStkbmwgMjogYmluYXJ5IG5hbWUKLStkbmwgMzogb3B0aW9uYWwgbGlzdCBvZiBhbHRlcm5hdGl2ZSBiaW5hcnkgbmFtZXMKLStkbmwgNDogb3B0aW9uYWwgbGlzdCBvZiBhZGRpdGlvbmFsIHNlYXJjaCBkaXJlY3RvcmllcwotK0FDX0RFRlVOKFtRVUlMVF9DT01QQVRfUFJPR19QQVRIX09QVF0sWwotKyAgQUNfQVJHX1dJVEgoJDIsIEFDX0hFTFBfU1RSSU5HKAotKyAgICBbLS13aXRoLSQyXSwgW25hbWUgb2YgdGhlICQyIGV4ZWN1dGFibGUgdG8gdXNlXSksCi0rICBbCi0rICAgIGlmIHRlc3QgeCIkd2l0aHZhbCIgIT0geG5vOyB0aGVuCi0rICAgICAgQUNfTVNHX0NIRUNLSU5HKGZvciAkMikKLSsgICAgICAkMT0iJHdpdGh2YWwiCi0rICAgICAgaWYgdGVzdCAtZSAiJCQxIjsgdGhlbgotKwlpZiB0ZXN0ICEgLWYgIiQkMSIgLWEgISAtaCAiJCQxIiB8fCB0ZXN0ICEgLXggIiQkMSI7IHRoZW4KLSsJICBBQ19NU0dfRVJST1IoWyQkMSBpcyBub3QgYW4gZXhlY3V0YWJsZSBmaWxlXSkKLSsJZmkKLSsgICAgICBmaQotKyAgICAgIEFDX01TR19SRVNVTFQoWyQkMV0pCi0rICAgICAgaWYgdGVzdCAhIC1lICIkJDEiOyB0aGVuCi0rICAgICAgICBBQ19NU0dfV0FSTihbJCQxIGRvZXMgbm90IGV4aXN0XSkKLSsgICAgICBmaQotKyAgICAgIENPTVBBVF9TWU1MSU5LUz0iJENPTVBBVF9TWU1MSU5LUyAkMiIKLSsgICAgZmkKLSsgIF0sWwotKyAgICBtNF9pZihbJDNdLFtdLFsKLSsgICAgICBBQ19QQVRIX1BST0coJDEsJDIsLCRQQVRIOiQ0KQotKyAgICBdLFsKLSsgICAgICBBQ19QQVRIX1BST0dTKCQxLCQzLCwkUEFUSDokNCkKLSsgICAgICBpZiB0ZXN0IC1uICIkJDEiIC1hICJgZXhwciAiJCQxIiA6ICcuKi9cKFtbXi9dXSpcKSQnYCIgIT0gIiQyIjsgdGhlbgotKwlDT01QQVRfU1lNTElOS1M9IiRDT01QQVRfU1lNTElOS1MgJDIiCi0rICAgICAgZmkKLSsgICAgXSkKLSsgICAgbTRfaWYoWyQ0XSxbXSxbXSxbCi0rICAgICAgaWYgdGVzdCAtbiAiJCQxIjsgdGhlbgotKwlhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rICAgICAgICBmb3IgZGlyIGluICIkNCI7IGRvCi0rICAgICAgICAgIGlmIHRlc3QgImBkaXJuYW1lICQkMWAiID0gIiRkaXIiOyB0aGVuCi0rICAgICAgICAgICAgQ09NUEFUX1NZTUxJTktTPSIkQ09NUEFUX1NZTUxJTktTICQyIgotKwkgICAgYnJlYWsKLSsJICBmaQotKyAgICAgICAgZG9uZQotKwlJRlM9IiRhc19zYXZlX0lGUyIKLSsgICAgICBmaQotKyAgICBdKQotKyAgICBpZiB0ZXN0IC16ICIkJDEiOyB0aGVuCi0rICAgICAgQUNfTVNHX1dBUk4oWyQyIG5vdCBmb3VuZCwgc29tZSBvcHRpb25hbCBmdW5jdGlvbmFsaXRpZXMgd2lsbCBiZSBtaXNzaW5nXSkKLSsgICAgZmkKLSsgIF0pCi0rICBpZiB0ZXN0IC16ICIkJDEiOyB0aGVuCi0rICAgICQxPSQyCi0rICBmaQotKyAgQUNfU1VCU1QoJDEpCi0rXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHRfMC42NS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHRfMC42NS5iYgppbmRleCAxMjg1OWYwLi41YmY4MThkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0XzAuNjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdF8wLjY1LmJiCkBAIC0xLDYgKzEsOCBAQAogcmVxdWlyZSBxdWlsdC5pbmMKIGluaGVyaXQgZ2V0dGV4dAorCitTUkNfVVJJICs9ICJmaWxlOi8vZ251X3BhdGNoX3Rlc3RfZml4X3RhcmdldC5wYXRjaCIKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCisKIFJERVBFTkRTXyR7UE59ICs9ICJwYXRjaCBkaWZmc3RhdCBiemlwMiB1dGlsLWxpbnV4IgotU1JDX1VSSSArPSAiZmlsZTovL2FjbG9jYWwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2dudV9wYXRjaF90ZXN0X2ZpeF90YXJnZXQucGF0Y2ggXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUFkZC1QWVRIT05fQUJJLXdoZW4tc2VhcmNoaW5nLWZvci1weXRob24tbGlicmFyaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1BZGQtUFlUSE9OX0FCSS13aGVuLXNlYXJjaGluZy1mb3ItcHl0aG9uLWxpYnJhcmllcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgwOTMzMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUFkZC1QWVRIT05fQUJJLXdoZW4tc2VhcmNoaW5nLWZvci1weXRob24tbGlicmFyaWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSAzNmNmMGZmMjZlY2U1M2U1MjllOGI0ZjJkMmYwOWFjZDg3OTRiMDU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI0IE1hciAyMDE3IDE1OjM1OjQ3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBQWVRIT05fQUJJIHdoZW4gc2VhcmNoaW5nIGZvciBweXRob24gbGlicmFyaWVzLgotCi1JdCBoYXMgYSB2YWx1ZSBvZiAnbScgd2hlbiB1c2luZyBQeXRob24zLCBhbmQgc28gd2l0aG91dCBpdAotY29uZmlndXJlIHdpbGwgbm90IGZpbmQgdGhlIGxpYnJhcmllcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDljNTg0NjdjMS4uYTUwNmVjODE5IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02NDIsNyArNjQyLDcgQEAgQVNfSUYoW3Rlc3QgIiRlbmFibGVfcHl0aG9uIiA9IHllc10sWwotICAgICAgIF0pCi0gICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKLSAgICAgc2F2ZV9MSUJTPSIkTElCUyIKLS0gICAgQUNfU0VBUkNIX0xJQlMoW1B5X01haW5dLFtweXRob24ke1BZVEhPTl9WRVJTSU9OfSBweXRob25dLFsKLSsgICAgQUNfU0VBUkNIX0xJQlMoW1B5X01haW5dLFtweXRob24ke1BZVEhPTl9WRVJTSU9OfSR7UFlUSE9OX0FCSX0gcHl0aG9uXSxbCi0gICAgICAgV0lUSF9QWVRIT05fTElCPSIkYWNfcmVzIgotICAgICBdLFtBQ19NU0dfRVJST1IoW21pc3NpbmcgcHl0aG9uIGxpYnJhcnldKQotICAgICBdKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoCmluZGV4IDFmNjFhY2EuLjU2MDRjYjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAKLUZyb20gZDgyNjkxYjhkNTgyMDFkZDAzZTMwNTg1ZGFhY2Q4ZmZkMTU1NmFlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzgyYzE5ZGM1ODM4NDNiMWE5NzVmMmUzZjJlMTUxNjU2YTZmMzc3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyNyBGZWIgMjAxNyAwOTo0MzozMCArMDIwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgaGFyZGNvZGUgImxpYi9ycG0iIGFzIHRoZSBpbnN0YWxsYXRpb24gcGF0aCBmb3IKK1N1YmplY3Q6IFtQQVRDSCAwNi8xNF0gRG8gbm90IGhhcmRjb2RlICJsaWIvcnBtIiBhcyB0aGUgaW5zdGFsbGF0aW9uIHBhdGggZm9yCiAgZGVmYXVsdCBjb25maWd1cmF0aW9uIGFuZCBtYWNyb3MuCiAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjYzXQorVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yNjNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogLS0tCkBAIC0xNCwxMCArMTQsMTAgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNGYzYmU4NzcwLi45MmZmZDNkNjggMTAwNjQ0CitpbmRleCA3MTU1ZDlmMDAuLjIxYjk1YWU1ZiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODc1LDcgKzg3NSw3IEBAIGVsc2UKK0BAIC0xMDQ3LDcgKzEwNDcsNyBAQCBlbHNlCiAgICAgIHVzcnByZWZpeD0kcHJlZml4CiAgZmkKICAKQEAgLTI3LDEwICsyNywxMCBAQAogIAogIEFDX1NVQlNUKE9CSkRVTVApCiBkaWZmIC0tZ2l0IGEvbWFjcm9zLmluIGIvbWFjcm9zLmluCi1pbmRleCBjNmQ1YTZiMDMuLjg0YWUyNTI3NSAxMDA2NDQKK2luZGV4IGQwODYyNDg1Ni4uNjhhOTcyZjFlIDEwMDY0NAogLS0tIGEvbWFjcm9zLmluCiArKysgYi9tYWNyb3MuaW4KLUBAIC04NzcsNyArODc3LDcgQEAgcGFja2FnZSBvciB3aGVuIGRlYnVnZ2luZyB0aGlzIHBhY2thZ2UuXAorQEAgLTk1NCw3ICs5NTQsNyBAQCBwYWNrYWdlIG9yIHdoZW4gZGVidWdnaW5nIHRoaXMgcGFja2FnZS5cCiAgJV9zaGFyZWRzdGF0ZWRpcgkle19wcmVmaXh9L2NvbQogICVfbG9jYWxzdGF0ZWRpcgkJJXtfcHJlZml4fS92YXIKICAlX2xpYgkJCWxpYgpAQCAtNDAsNyArNDAsNyBAQAogICVfaW5mb2RpcgkJJXtfZGF0YWRpcn0vaW5mbwogICVfbWFuZGlyCQkle19kYXRhZGlyfS9tYW4KIGRpZmYgLS1naXQgYS9ycG0uYW0gYi9ycG0uYW0KLWluZGV4IDFmNDNhZDhhMC4uNjg1NGZmNmJhIDEwMDY0NAoraW5kZXggNTEyMjU4OTJkLi5lMGM4MzRkMzcgMTAwNjQ0CiAtLS0gYS9ycG0uYW0KICsrKyBiL3JwbS5hbQogQEAgLTEsMTAgKzEsMTAgQEAKQEAgLTU1LDcgKzU1LDcgQEAKICtycG1jb25maWdkaXIgPSAkKGxpYmRpcikvcnBtCiAgCiAgIyBMaWJ0b29sIHZlcnNpb24gKGN1cnJlbnQtcmV2aXNpb24tYWdlKSBmb3IgYWxsIG91ciBsaWJyYXJpZXMKLSBycG1fdmVyc2lvbl9pbmZvID0gNzowOjAKKyBycG1fdmVyc2lvbl9pbmZvID0gODoxOjAKIC0tIAotMi4xMS4wCisyLjE1LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtcmVzZXQtdGhlLVBBVEgtZW52aXJvbm1lbnQtdmFyaWFibGUtYmVmb3JlLXJ1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtcmVzZXQtdGhlLVBBVEgtZW52aXJvbm1lbnQtdmFyaWFibGUtYmVmb3JlLXJ1LnBhdGNoCmluZGV4IGEzODY3NWYuLmJmMjRkNDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LXJlc2V0LXRoZS1QQVRILWVudmlyb25tZW50LXZhcmlhYmxlLWJlZm9yZS1ydS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2gKQEAgLTYsNiArNiw5IEBACiAKIFdlIGFkZCBsb3RzIG9mIG5hdGl2ZSBzdHVmZiBpbnRvIGl0IGFuZCBzY3JpcHRsZXRzIHJlbHkgb24gdGhhdC4KIAorQWxzbyBuZWVkIHRvIHJlbW92ZSB0aGUgeHggdGVzdCBsYXRlciBpbiB0aGUgZnVuY3Rpb24gc2luY2UgdGhlCit2YWx1ZSBjb3VsZCBub3cgYmUgdXNlZCB1bi1pbml0aWFsaXNlZC4KKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KQEAgLTI1LDYgKzI4LDEzIEBACiAgCWZyZWUoaXBhdGgpOwogICAgICB9CiAgCi0tLSAKLTIuMTEuMAotCitAQCAtMjA2LDkgKzIwNiw3IEBAIHN0YXRpYyB2b2lkIGRvU2NyaXB0RXhlYyhBUkdWX2NvbnN0X3QgYXIKKyAJLyogWFhYIERvbid0IG10cmFjZSBpbnRvIGNoaWxkcmVuLiAqLworIAl1bnNldGVudigiTUFMTE9DX0NIRUNLXyIpOworIAorLQlpZiAoeHggPT0gMCkgeworIAkgICAgeHggPSBleGVjdihhcmd2WzBdLCBhcmd2KTsKKy0JfQorICAgICB9CisgICAgIF9leGl0KDEyNyk7IC8qIGV4aXQgMTI3IGZvciBjb21wYXRpYmlsaXR5IHdpdGggYmFzaCgxKSAqLworIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRmFjdG9yLW91dC1hbmQtdW5pZnktc2V0dGluZy1DTE9FWEVDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GYWN0b3Itb3V0LWFuZC11bmlmeS1zZXR0aW5nLUNMT0VYRUMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY0NDBjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRmFjdG9yLW91dC1hbmQtdW5pZnktc2V0dGluZy1DTE9FWEVDLnBhdGNoCkBAIC0wLDAgKzEsMTQ4IEBACitGcm9tIDljM2U1ZGUzMjQwNTU0YzhlYTFiMjlkNTJlZWFkZWU0ODQwZmVmYWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyOSBNYXkgMjAxOCAxNzozNzowNSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvM10gRmFjdG9yIG91dCBhbmQgdW5pZnkgc2V0dGluZyBDTE9FWEVDCisKK0NvbW1pdCA3YTdjMzFmNSAoIlNldCBGRF9DTE9FWEVDIG9uIG9wZW5lZCBmaWxlcyBiZWZvcmUgZXhlYyBmcm9tCitsdWEgc2NyaXB0IGlzIGNhbGxlZCIpIGNvcGllZCB0aGUgY29kZSB0aGF0IHNldHMgQ0xPRVhFQyBmbGFnIG9uIGFsbAorcG9zc2libGUgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIGxpYi9ycG1zY3JpcHQuYyB0byBsdWFleHQvbHBvc2l4LmMsCitlc3NlbnRpYWxseSBjcmVhdGluZyB0d28gY29waWVzIG9mIHRoZSBzYW1lIGNvZGUgKG1vZHVsbyBjb21tZW50cworYW5kIHRoZSB1bnVzZWQgYXNzaWdubWVudCkuCisKK1RoaXMgY29tbWl0IG1vdmVzIHRoZSBmdW5jdGlvbmFsaXR5IGludG8gaXRzIG93biBmdW5jdGlvbiwgd2l0aG91dAorYW55IGNvZGUgbW9kaWZpY2F0aW9ucywgdXNpbmcgdGhlIHZlcnNpb24gZnJvbSBsdWFleHQvbHBvc2l4LmMuCisKK1NpZ25lZC1vZmYtYnk6IEtpciBLb2x5c2hraW4gPGtvbHlzaGtpbkBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvNDQ0XQorU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CistLS0KKyBsaWIvcnBtc2NyaXB0LmMgICAgICAgIHwgMTggKystLS0tLS0tLS0tLS0tLS0tCisgbHVhZXh0L2xwb3NpeC5jICAgICAgICB8IDEzICsrLS0tLS0tLS0tLS0KKyBycG1pby9ycG1pby5jICAgICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKworIHJwbWlvL3JwbWlvX2ludGVybmFsLmggfCAgNiArKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL3JwbXNjcmlwdC5jIGIvbGliL3JwbXNjcmlwdC5jCitpbmRleCA3NDczODVhNWIuLmI0Y2NkMzI0NiAxMDA2NDQKKy0tLSBhL2xpYi9ycG1zY3JpcHQuYworKysrIGIvbGliL3JwbXNjcmlwdC5jCitAQCAtMyw3ICszLDYgQEAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorIAorICNpbmNsdWRlIDxycG0vcnBtZmlsZXV0aWwuaD4KKyAjaW5jbHVkZSA8cnBtL3JwbW1hY3JvLmg+CitAQCAtMTQsNiArMTMsNyBAQAorIAorICNpbmNsdWRlICJycG1pby9ycG1sdWEuaCIKKyAjaW5jbHVkZSAibGliL3JwbXNjcmlwdC5oIgorKyNpbmNsdWRlICJycG1pby9ycG1pb19pbnRlcm5hbC5oIgorIAorICNpbmNsdWRlICJsaWIvcnBtcGx1Z2lucy5oIiAgICAgLyogcnBtIHBsdWdpbnMgaG9va3MgKi8KKyAKK0BAIC0xNzAsMjYgKzE3MCwxMiBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IFNDUklQVF9QQVRIID0gIlBBVEg9L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3VzcgorIHN0YXRpYyB2b2lkIGRvU2NyaXB0RXhlYyhBUkdWX2NvbnN0X3QgYXJndiwgQVJHVl9jb25zdF90IHByZWZpeGVzLAorIAkJCUZEX3Qgc2NyaXB0RmQsIEZEX3Qgb3V0KQorIHsKKy0gICAgaW50IGZsYWc7CistICAgIGludCBmZG5vOworICAgICBpbnQgeHg7CistICAgIGludCBvcGVuX21heDsKKyAKKyAgICAgLyogU0lHUElQRSBpcyBpZ25vcmVkIGluIHJwbSwgcmVzZXQgdG8gZGVmYXVsdCBmb3IgdGhlIHNjcmlwdGxldCAqLworICAgICAodm9pZCkgc2lnbmFsKFNJR1BJUEUsIFNJR19ERkwpOworIAorLSAgICAvKiBYWFggRm9yY2UgRkRfQ0xPRVhFQyBvbiBhbGwgaW5oZXJpdGVkIGZkbm8ncy4gKi8KKy0gICAgb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7CistICAgIGlmIChvcGVuX21heCA9PSAtMSkgeworLQlvcGVuX21heCA9IDEwMjQ7CistICAgIH0KKy0gICAgZm9yIChmZG5vID0gMzsgZmRubyA8IG9wZW5fbWF4OyBmZG5vKyspIHsKKy0JZmxhZyA9IGZjbnRsKGZkbm8sIEZfR0VURkQpOworLQlpZiAoZmxhZyA9PSAtMSB8fCAoZmxhZyAmIEZEX0NMT0VYRUMpKQorLQkgICAgY29udGludWU7CistCXh4ID0gZmNudGwoZmRubywgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7CistCS8qIFhYWCBXMkRPPyBkZWJ1ZyBtc2cgZm9yIGluaGVpcml0ZWQgZmRubyB3L28gRkRfQ0xPRVhFQyAqLworLSAgICB9CisrICAgIHJwbVNldENsb3NlT25FeGVjKCk7CisgCisgICAgIGlmIChzY3JpcHRGZCAhPSBOVUxMKSB7CisgCWludCBzZmRubyA9IEZpbGVubyhzY3JpcHRGZCk7CitkaWZmIC0tZ2l0IGEvbHVhZXh0L2xwb3NpeC5jIGIvbHVhZXh0L2xwb3NpeC5jCitpbmRleCAwYTdjMjZjNzEuLjVkN2FkM2M4NyAxMDA2NDQKKy0tLSBhL2x1YWV4dC9scG9zaXguYworKysrIGIvbHVhZXh0L2xwb3NpeC5jCitAQCAtMjcsNiArMjcsNyBAQAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8dXRpbWUuaD4KKyAjaW5jbHVkZSA8cnBtL3JwbXV0aWwuaD4KKysjaW5jbHVkZSAicnBtaW8vcnBtaW9faW50ZXJuYWwuaCIKKyAKKyAjZGVmaW5lIE1ZTkFNRQkJInBvc2l4IgorICNkZWZpbmUgTVlWRVJTSU9OCU1ZTkFNRSAiIGxpYnJhcnkgZm9yICIgTFVBX1ZFUlNJT04gIiAvIE5vdiAyMDAzIgorQEAgLTMzNSwyMSArMzM2LDExIEBAIHN0YXRpYyBpbnQgUGV4ZWMobHVhX1N0YXRlICpMKQkJCS8qKiBleGVjKHBhdGgsW2FyZ3NdKSAqLworIAljb25zdCBjaGFyICpwYXRoID0gbHVhTF9jaGVja3N0cmluZyhMLCAxKTsKKyAJaW50IGksbj1sdWFfZ2V0dG9wKEwpOworIAljaGFyICoqYXJndjsKKy0JaW50IGZsYWcsIGZkbm8sIG9wZW5fbWF4OworIAorIAlpZiAoIWhhdmVfZm9ya2VkKQorIAkgICAgcmV0dXJuIGx1YUxfZXJyb3IoTCwgImV4ZWMgbm90IHBlcm1pdHRlZCBpbiB0aGlzIGNvbnRleHQiKTsKKyAKKy0Jb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7CistCWlmIChvcGVuX21heCA9PSAtMSkgeworLQkgICAgb3Blbl9tYXggPSAxMDI0OworLQl9CistCWZvciAoZmRubyA9IDM7IGZkbm8gPCBvcGVuX21heDsgZmRubysrKSB7CistCSAgICBmbGFnID0gZmNudGwoZmRubywgRl9HRVRGRCk7CistCSAgICBpZiAoZmxhZyA9PSAtMSB8fCAoZmxhZyAmIEZEX0NMT0VYRUMpKQorLQkJY29udGludWU7CistCSAgICBmY250bChmZG5vLCBGX1NFVEZELCBGRF9DTE9FWEVDKTsKKy0JfQorKwlycG1TZXRDbG9zZU9uRXhlYygpOworIAorIAlhcmd2ID0gbWFsbG9jKChuKzEpKnNpemVvZihjaGFyKikpOworIAlpZiAoYXJndj09TlVMTCkgcmV0dXJuIGx1YUxfZXJyb3IoTCwibm90IGVub3VnaCBtZW1vcnkiKTsKK2RpZmYgLS1naXQgYS9ycG1pby9ycG1pby5jIGIvcnBtaW8vcnBtaW8uYworaW5kZXggYzdjYmMzMmFhLi5lYTExMWQyZWMgMTAwNjQ0CistLS0gYS9ycG1pby9ycG1pby5jCisrKysgYi9ycG1pby9ycG1pby5jCitAQCAtMTc1OSwzICsxNzU5LDE5IEBAIERJR0VTVF9DVFggZmREdXBEaWdlc3QoRkRfdCBmZCwgaW50IGlkKQorIAorICAgICByZXR1cm4gY3R4OworIH0KKysKKyt2b2lkIHJwbVNldENsb3NlT25FeGVjKHZvaWQpCisreworKwlpbnQgZmxhZywgZmRubywgb3Blbl9tYXg7CisrCisrCW9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOworKwlpZiAob3Blbl9tYXggPT0gLTEpIHsKKysJCW9wZW5fbWF4ID0gMTAyNDsKKysJfQorKwlmb3IgKGZkbm8gPSAzOyBmZG5vIDwgb3Blbl9tYXg7IGZkbm8rKykgeworKwkJZmxhZyA9IGZjbnRsKGZkbm8sIEZfR0VURkQpOworKwkJaWYgKGZsYWcgPT0gLTEgfHwgKGZsYWcgJiBGRF9DTE9FWEVDKSkKKysJCQljb250aW51ZTsKKysJCWZjbnRsKGZkbm8sIEZfU0VURkQsIEZEX0NMT0VYRUMpOworKwl9CisrfQorZGlmZiAtLWdpdCBhL3JwbWlvL3JwbWlvX2ludGVybmFsLmggYi9ycG1pby9ycG1pb19pbnRlcm5hbC5oCitpbmRleCBmYmVkMTgzYjAuLjM3MGNiZGM3NSAxMDA2NDQKKy0tLSBhL3JwbWlvL3JwbWlvX2ludGVybmFsLmgKKysrKyBiL3JwbWlvL3JwbWlvX2ludGVybmFsLmgKK0BAIC00MSw2ICs0MSwxMiBAQCBESUdFU1RfQ1RYIGZkRHVwRGlnZXN0KEZEX3QgZmQsIGludCBpZCk7CisgaW50IHJwbWlvU2x1cnAoY29uc3QgY2hhciAqIGZuLAorICAgICAgICAgICAgICAgICB1aW50OF90ICoqIGJwLCBzc2l6ZV90ICogYmxlbnApOworIAorKy8qKgorKyAqIFNldCBjbG9zZS1vbi1leGVjIGZsYWcgZm9yIGFsbCBvcGVuZWQgZmlsZSBkZXNjcmlwdG9ycywgZXhjZXB0CisrICogc3RkaW4vc3Rkb3V0L3N0ZGVyci4KKysgKi8KKyt2b2lkIHJwbVNldENsb3NlT25FeGVjKHZvaWQpOworKworICNpZmRlZiBfX2NwbHVzcGx1cworIH0KKyAjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtQy1saWJyYXJ5LnBhdGNoCmluZGV4IGVkZjllYzAuLjBiMWQ2MjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaApAQCAtMSwyNCArMSwyMSBAQAotRnJvbSAyMTFjMmQxMTIwMGU2NjU3MTMyYzUyZTdhYzY4ZjhjMTE4MjMxMjYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkMDc2ZGUwMzBkZWI5Y2FmZDliMmU4MmJlNWQ1MDZjZWJkZWZhZDBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDI3IEZlYiAyMDE3IDE0OjQzOjIxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIG11c2wgQyBsaWJyYXJ5LgorU3ViamVjdDogW1BBVENIIDEvOV0gRml4IGJ1aWxkIHdpdGggbXVzbCBDIGxpYnJhcnkuCiAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbcHJvYmxlbSBhbHJlYWR5IHNvbHZlZCBpbiBtYXN0ZXIgYnJhbmNoXQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgfCAzICsrLQotIG1pc2MvTWFrZWZpbGUuYW0gICAgfCAzICstLQotIG1pc2MvcnBteHByb2duYW1lLmMgfCAzICstLQotIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyAgICAgICB8IDMgKystCisgcnBtaW8vZGlnZXN0X25zcy5jIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTJmZmQzZDY4Li45YzU4NDY3YzEgMTAwNjQ0CitpbmRleCBjMDRhMmU4ZDEuLmM5ZDlhYzE2ZCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjI5LDYgKzIyOSw3IEBAIEFDX1NFQVJDSF9MSUJTKGRsb3BlbiwgW2RsXSkKK0BAIC0yNTUsNiArMjU1LDcgQEAgQUNfU0VBUkNIX0xJQlMoZGxvcGVuLCBbZGxdKQogICMgQ2hlY2sgZm9yIGxpYmVsZiBsaWJyYXJ5LiBQcmVmZXIgZXh0ZXJuYWwsIG90aGVyd2lzZSBub25lLgogIFdJVEhfTElCRUxGX0xJQj0KICBBQ19DSEVDS19IRUFERVIoW2xpYmVsZi5oXSkKQEAgLTI2LDcgKzIzLDcgQEAKICBBQ19DSEVDS19IRUFERVJTKFtnZWxmLmhdLCBbCiAgCUFDX0NIRUNLX0xJQihlbGYsIGdlbGZfZ2V0dmVybmF1eCwgWwogIAkgICAgQUNfREVGSU5FKEhBVkVfTElCRUxGLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlICdlbGYnIGxpYnJhcnkgKC1sZWxmKS5dKQotQEAgLTIzNyw3ICsyMzgsNyBAQCBBQ19DSEVDS19IRUFERVJTKFtnZWxmLmhdLCBbCitAQCAtMjYzLDcgKzI2NCw3IEBAIEFDX0NIRUNLX0hFQURFUlMoW2dlbGYuaF0sIFsKICAJXSkKICBdKQogIEFDX1NVQlNUKFdJVEhfTElCRUxGX0xJQikKQEAgLTM1LDQwICszMiwxNyBAQAogIAogIEFDX0NIRUNLX0hFQURFUlMoW2R3YXJmLmhdLCBbCiAgICBXSVRIX0xJQkRXQVJGPXllcwotZGlmZiAtLWdpdCBhL21pc2MvTWFrZWZpbGUuYW0gYi9taXNjL01ha2VmaWxlLmFtCi1pbmRleCA4YmYwMDkzZDkuLmI5ZGIzZDMxYSAxMDA2NDQKLS0tLSBhL21pc2MvTWFrZWZpbGUuYW0KLSsrKyBiL21pc2MvTWFrZWZpbGUuYW0KLUBAIC01LDEwICs1LDkgQEAgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL21pc2MKK2RpZmYgLS1naXQgYS9ycG1pby9kaWdlc3RfbnNzLmMgYi9ycG1pby9kaWdlc3RfbnNzLmMKK2luZGV4IDk5MmQ5YWNmNi4uZTExOTIwZTNlIDEwMDY0NAorLS0tIGEvcnBtaW8vZGlnZXN0X25zcy5jCisrKysgYi9ycG1pby9kaWdlc3RfbnNzLmMKK0BAIC0xLDUgKzEsNiBAQAorICNpbmNsdWRlICJzeXN0ZW0uaCIKICAKLSBFWFRSQV9ESVNUID0gXAotIAlmbm1hdGNoLmMJZm5tYXRjaC5oIFwKLS0JcnBteHByb2duYW1lLmMJcnBteHByb2duYW1lLmggXAotIAlzdHBjcHkuYwlzdHBuY3B5LmMKLSAKLSBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJtaXNjLmxhCi0gCi0tbGlibWlzY19sYV9TT1VSQ0VTID0gZnRzLmMgZnRzLmgKLStsaWJtaXNjX2xhX1NPVVJDRVMgPSBmdHMuYyBmdHMuaCBycG14cHJvZ25hbWUuYyBycG14cHJvZ25hbWUuaAotIGxpYm1pc2NfbGFfTElCQUREID0gQExUTElCT0JKU0AKLWRpZmYgLS1naXQgYS9taXNjL3JwbXhwcm9nbmFtZS5jIGIvbWlzYy9ycG14cHJvZ25hbWUuYwotaW5kZXggZjg5NjAwNjEzLi5lOTQ2MjVlYTggMTAwNjQ0Ci0tLS0gYS9taXNjL3JwbXhwcm9nbmFtZS5jCi0rKysgYi9taXNjL3JwbXhwcm9nbmFtZS5jCi1AQCAtMTMsNyArMTMsNyBAQCBjaGFyICpfcnBteGdldHByb2duYW1lKHZvaWQpCi0gewotICAgY29uc3QgY2hhciAqZW1wdHkgPSAiIjsKLSAKLS0gIGlmIChfcnBteHByb2duYW0gIT0gTlVMTCkgLyogbmV2ZXIgcmV0dXJuIE5VTEwgc3RyaW5nICovCi0rICBpZiAoX3JwbXhwcm9nbmFtZSAhPSBOVUxMKSAvKiBuZXZlciByZXR1cm4gTlVMTCBzdHJpbmcgKi8KLSAgICAgcmV0dXJuIF9ycG14cHJvZ25hbWU7Ci0gICBlbHNlCi0gICAgIHJldHVybiBlbXB0eTsKLUBAIC0zMCw0ICszMCwzIEBAIHZvaWQgX3JwbXhzZXRwcm9nbmFtZShjb25zdCBjaGFyICpwbikKLSAgIH0KLSB9Ci0gCi0tI2VuZGlmIC8qIF9SUE1YUFJPR05BTUVfSCAqLworKyNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorICNpbmNsdWRlIDxuc3MuaD4KKyAjaW5jbHVkZSA8c2VjaGFzaC5oPgogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLVdoZW4tbmljZS12YWx1ZS1jYW5ub3QtYmUtcmVzZXQtaXNzdWUtYS1ub3RpY2UtaW5zdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLVdoZW4tbmljZS12YWx1ZS1jYW5ub3QtYmUtcmVzZXQtaXNzdWUtYS1ub3RpY2UtaW5zdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NDhjYWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1XaGVuLW5pY2UtdmFsdWUtY2Fubm90LWJlLXJlc2V0LWlzc3VlLWEtbm90aWNlLWluc3RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSBkNDJlY2U2ZmExNWI5OGQ3ZjkyMjFiOTBiODViNzg2MzFkZjJjMGEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE0IEZlYiAyMDE3IDEzOjUxOjE5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFdoZW4gbmljZSB2YWx1ZSBjYW5ub3QgYmUgcmVzZXQsIGlzc3VlIGEgbm90aWNlIGluc3RlYWQgb2YgYQotIHdhcm5pbmcKLQotT3RoZXJ3aXNlIGJ1aWxkIGxvZ3Mgb24gdGhlIGF1dG9idWlsZGVyIGdldCB2ZXJ5IGNsdXR0ZXIsIGFzIGl0Ci1kb2Vzbid0IGFsbG93IHRoZSBuaWNlIHZhbHVlIHRvIGJlIHJlc2V0IGZvciBzb21lIHJlYXNvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gbGliL3JwbXNjcmlwdC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3JwbXNjcmlwdC5jIGIvbGliL3JwbXNjcmlwdC5jCi1pbmRleCA1ZTFlOTk5MDYuLjM5NzVhZWFkOCAxMDA2NDQKLS0tLSBhL2xpYi9ycG1zY3JpcHQuYwotKysrIGIvbGliL3JwbXNjcmlwdC5jCi1AQCAtMzQ3LDcgKzM0Nyw3IEBAIHN0YXRpYyBycG1SQyBydW5FeHRTY3JpcHQocnBtUGx1Z2lucyBwbHVnaW5zLCBBUkdWX2NvbnN0X3QgcHJlZml4ZXMsCi0gICAgICAgICBpbnQgcmV0OwotICAgICAgICAgcmV0ID0gc2V0cHJpb3JpdHkoUFJJT19QUk9DRVNTLCAwLCAwKTsKLSAgICAgICAgIGlmIChyZXQgPT0gLTEpIHsKLS0gICAgICAgICAgICBycG1sb2coUlBNTE9HX1dBUk5JTkcsIF8oIlVuYWJsZSB0byByZXNldCBuaWNlIHZhbHVlOiAlcyIpLAotKyAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfTk9USUNFLCBfKCJVbmFibGUgdG8gcmVzZXQgbmljZSB2YWx1ZTogJXNcbiIpLAotICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgfQotIAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItZGJ1cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWRidXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM3MWQ5YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWRidXMucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBkZmI0MjJjNzQ0ZmRjMTgzOGFmYzQwYjhlMWYxNjFiYjQ2MDkzZDkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogU3VuLCA4IEFwciAyMDE4IDEyOjA2OjQyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogYWRkIG9wdGlvbiBmb3IgZGJ1cworCitBZGQgb3B0aW9uIGZvciBkYnVzIHNvIHRoYXQgdXNlcnMgY291bGQgY2hvb3NlIHRvIGJ1aWxkIHdpdGggZGJ1cworb3Igd2l0aCBubyBkYnVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTEgKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0ZGIxNWM3OTA5Li40OTNmMzkzZDMxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC05NzYsMTIgKzk3NiwxNSBAQCBBU19JRihbdGVzdCAiJGVuYWJsZV9wbHVnaW5zIiA9IHllc10sWworIF0pCisgQU1fQ09ORElUSU9OQUwoRU5BQkxFX1BMVUdJTlMsW3Rlc3QgIiRlbmFibGVfcGx1Z2lucyIgPSB5ZXNdKQorIAorLXdpdGhfZGJ1cz1ubworLUFTX0lGKFt0ZXN0ICIkZW5hYmxlX3BsdWdpbnMiICE9IG5vXSxbCisrQUNfQVJHX1dJVEgoW2RidXNdLCBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kYnVzXSwgW2J1aWxkIHdpdGggZGJ1cyBzdXBwb3J0XSldLAorKyAgICAgICAgICAgIFtdLAorKyAgICAgICAgICAgIFt3aXRoX2RidXM9eWVzXSkKKysKKytBU19JRihbdGVzdCAiJHdpdGhfZGJ1cyIgIT0gbm9dLFsKKyAgIFBLR19DSEVDS19NT0RVTEVTKFtEQlVTXSwKKyAgICAgW2RidXMtMSA+PSAxLjNdLAorLSAgICBbQUNfREVGSU5FKERCVVMsIDEsIFtCdWlsZCB3aXRoIGRidXMgc3VwcG9ydD9dKSB3aXRoX2RidXM9eWVzXSwKKy0gICAgW3dpdGhfZGJ1cz1ub10pCisrICAgIFtBQ19ERUZJTkUoREJVUywgMSwgW0J1aWxkIHdpdGggZGJ1cyBzdXBwb3J0P10pXSwKKysgICAgW0FDX01TR19FUlJPUihbZGJ1cyBub3QgcHJlc2VudCAoLS13aXRob3V0LWRidXMgdG8gZGlzYWJsZSldKV0pCisgICBBQ19TVUJTVChEQlVTX0NGTEFHUykKKyAgIEFDX1NVQlNUKERCVVNfTElCUykKKyBdKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMi1PcHRpbWl6ZS1ycG1TZXRDbG9zZU9uRXhlYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDItT3B0aW1pemUtcnBtU2V0Q2xvc2VPbkV4ZWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI3ZjhlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDItT3B0aW1pemUtcnBtU2V0Q2xvc2VPbkV4ZWMucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0Zyb20gNWU2ZjA1Y2Q4ZGFkNmMxZWU2YmQxZTZlNDNmMTc2OTc2YzljMzQxNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtpciBLb2x5c2hraW4gPGtvbHlzaGtpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI5IE1heSAyMDE4IDE3OjUyOjU2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBPcHRpbWl6ZSBycG1TZXRDbG9zZU9uRXhlYworCitJbiBjYXNlIG1heGltdW0gbnVtYmVyIG9mIG9wZW4gZmlsZXMgbGltaXQgaXMgc2V0IHRvbyBoaWdoLCBib3RoCitsdWFleHQvUGV4ZWMoKSBhbmQgbGliL2RvU2NyaXB0RXhlYygpIHNwZW5kIHdheSB0b28gbXVjaCB0aW1lCit0cnlpbmcgdG8gc2V0IEZEX0NMT0VYRUMgZmxhZyBmb3IgYWxsIHRob3NlIGZpbGUgZGVzY3JpcHRvcnMsCityZXN1bHRpbmcgaW4gc2V2ZXJlIGluY3JlYXNlIG9mIHRpbWUgaXQgdGFrZXMgdG8gZXhlY3V0ZSBzYXkKK3JwbSBvciBkbmYuCisKK1RoaXMgYmVjb21lcyBpbmNyZWFzaW5nbHkgbm90aWNlYWJsZSB3aGVuIHJ1bm5pbmcgd2l0aCBlLmcuIHVuZGVyCitEb2NrZXIsIHRoZSByZWFzb24gYmVpbmc6CisKKz4gJCBkb2NrZXIgcnVuIGZlZG9yYSB1bGltaXQgLW4KKz4gMTA0ODU3NgorCitPbmUgb2J2aW91cyBmaXggaXMgdG8gdXNlIHByb2NmcyB0byBnZXQgdGhlIGFjdHVhbCBsaXN0IG9mIG9wZW5lZCBmZHMKK2FuZCBpdGVyYXRlIG92ZXIgaXQuIE15IHF1aWNrLW4tZGlydHkgYmVuY2htYXJrIHNob3dzIHRoZSAvcHJvYyBhcHByb2FjaAoraXMgYWJvdXQgMTB4IGZhc3RlciB0aGFuIGl0ZXJhdGluZyB0aHJvdWdoIGEgbGlzdCBvZiBqdXN0IDEwMjQgZmRzLAorc28gaXQncyBhbiBpbXByb3ZlbWVudCBldmVuIGZvciBkZWZhdWx0IHVsaW1pdCB2YWx1ZXMuCisKK05vdGUgdGhhdCB0aGUgb2xkIG1ldGhvZCBpcyBzdGlsbCB1c2VkIGluIGNhc2UgL3Byb2MgaXMgbm90IGF2YWlsYWJsZS4KKworV2hpbGUgYXQgaXQsCisKKyAxLiBmaXggdGhlIGZ1bmN0aW9uIGJ5IG1ha2luZyBzdXJlIHdlIG1vZGlmeSAocmF0aGVyIHRoYW4gc2V0KQorICAgIHRoZSBleGlzdGluZyBmbGFncy4gQXMgdGhlIG9ubHkga25vd24gZmxhZyBpcyBGRF9DTE9FWEVDLAorICAgIHRoaXMgY2hhbmdlIGlzIGN1cnJlbnRseSBwdXJlbHkgYWVzdGhldGljYWwsIGJ1dCBpbiBjYXNlCisgICAgb3RoZXIgZmxhZ3Mgd2lsbCBhcHBlYXIgaXQgd2lsbCBiZWNvbWUgYSByZWFsIGJ1ZyBmaXguCisKKyAyLiBnZXQgcmlkIG9mIG1hZ2ljIG51bWJlciAzOyB1c2UgU1RERVJSX0ZJTEVOTworCitTaWduZWQtb2ZmLWJ5OiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgorCitGaXhlcyAjNDQ0CisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC80NDRdCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KKy0tLQorIHJwbWlvL3JwbWlvLmMgfCA0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ycG1pby9ycG1pby5jIGIvcnBtaW8vcnBtaW8uYworaW5kZXggZWExMTFkMmVjLi41NTM1MWMyMjEgMTAwNjQ0CistLS0gYS9ycG1pby9ycG1pby5jCisrKysgYi9ycG1pby9ycG1pby5jCitAQCAtMTc2MCwxOCArMTc2MCw0MyBAQCBESUdFU1RfQ1RYIGZkRHVwRGlnZXN0KEZEX3QgZmQsIGludCBpZCkKKyAgICAgcmV0dXJuIGN0eDsKKyB9CisgCisrc3RhdGljIHZvaWQgc2V0X2Nsb2V4ZWMoaW50IGZkKQorK3sKKysJaW50IGZsYWdzID0gZmNudGwoZmQsIEZfR0VURkQpOworKworKwlpZiAoZmxhZ3MgPT0gLTEgfHwgKGZsYWdzICYgRkRfQ0xPRVhFQykpCisrCQlyZXR1cm47CisrCisrCWZjbnRsKGZkLCBGX1NFVEZELCBmbGFncyB8IEZEX0NMT0VYRUMpOworK30KKysKKyB2b2lkIHJwbVNldENsb3NlT25FeGVjKHZvaWQpCisgeworLQlpbnQgZmxhZywgZmRubywgb3Blbl9tYXg7CisrCWNvbnN0IGludCBtaW5fZmQgPSBTVERFUlJfRklMRU5POyAvKiBkb24ndCB0b3VjaCBzdGRpbi9vdXQvZXJyICovCisrCWludCBmZDsKKysKKysJRElSICpkaXIgPSBvcGVuZGlyKCIvcHJvYy9zZWxmL2ZkIik7CisrCWlmIChkaXIgPT0gTlVMTCkgeyAvKiAvcHJvYyBub3QgYXZhaWxhYmxlICovCisrCQkvKiBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIGZkcywgbWlnaHQgYmUgc2xvdyAqLworKwkJaW50IG9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOworKwkJaWYgKG9wZW5fbWF4ID09IC0xKQorKwkJCW9wZW5fbWF4ID0gMTAyNDsKKyAKKy0Jb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7CistCWlmIChvcGVuX21heCA9PSAtMSkgeworLQkJb3Blbl9tYXggPSAxMDI0OworKwkJZm9yIChmZCA9IG1pbl9mZCArIDE7IGZkIDwgb3Blbl9tYXg7IGZkKyspCisrCQkJc2V0X2Nsb2V4ZWMoZmQpOworKworKwkJcmV0dXJuOworIAl9CistCWZvciAoZmRubyA9IDM7IGZkbm8gPCBvcGVuX21heDsgZmRubysrKSB7CistCQlmbGFnID0gZmNudGwoZmRubywgRl9HRVRGRCk7CistCQlpZiAoZmxhZyA9PSAtMSB8fCAoZmxhZyAmIEZEX0NMT0VYRUMpKQorLQkJCWNvbnRpbnVlOworLQkJZmNudGwoZmRubywgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7CisrCisrCS8qIGl0ZXJhdGUgb3ZlciBmZHMgb2J0YWluZWQgZnJvbSAvcHJvYyAqLworKwlzdHJ1Y3QgZGlyZW50ICplbnRyeTsKKysJd2hpbGUgKChlbnRyeSA9IHJlYWRkaXIoZGlyKSkgIT0gTlVMTCkgeworKwkJZmQgPSBhdG9pKGVudHJ5LT5kX25hbWUpOworKwkJaWYgKGZkID4gbWluX2ZkKQorKwkJCXNldF9jbG9leGVjKGZkKTsKKyAJfQorKworKwljbG9zZWRpcihkaXIpOworKworKwlyZXR1cm47CisgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1TZXRDbG9zZU9uRXhlYy11c2UtZ2V0cmxpbWl0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1TZXRDbG9zZU9uRXhlYy11c2UtZ2V0cmxpbWl0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OWI0MWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAzLXJwbVNldENsb3NlT25FeGVjLXVzZS1nZXRybGltaXQucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAzMDdlMjhiNGNiMDhiMDViYzA0NDQ4MjA1OGVlZWJjOWY1OWJiOWE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2lyIEtvbHlzaGtpbiA8a29seXNoa2luQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjkgTWF5IDIwMTggMTg6MDk6MjcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHJwbVNldENsb3NlT25FeGVjOiB1c2UgZ2V0cmxpbWl0KCkKKworSW4gY2FzZSAvcHJvYyBpcyBub3QgYXZhaWxhYmxlIHRvIGdldCB0aGUgYWN0dWFsIGxpc3Qgb2Ygb3BlbmVkIGZkcywKK3dlIGZhbGwgYmFjayB0byBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgbGlzdCBvZiBhbGwgcG9zc2libGUgZmRzLgorCitJdCBpcyBwb3NzaWJsZSB0aGF0IGR1cmluZyB0aGUgY291cnNlIG9mIHRoZSBwcm9ncmFtIGV4ZWN1dGlvbiB0aGUgbGltaXQKK29uIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgbWlnaHQgYmUgbG93ZXJlZCwgc28gdXNpbmcgdGhlCitjdXJyZW50IGxpbWl0LCBhcyByZXR1cm5lZCBieSBzeXNjb25mKF9TQ19PUEVOX01BWCksIG1pZ2h0IG9taXQgc29tZQorZmRzLiBUaGVyZWZvcmUsIGl0IGlzIGJldHRlciB0byB1c2UgcmxpbV9tYXggZnJvbSB0aGUgc3RydWN0dXJlCitmaWxsZWQgaW4gYnkgZ2VydGxpbWl0KFJMSU1JVF9OT0ZJTEUpIHRvIG1ha2Ugc3VyZSB3ZSdyZSBjaGVja2luZworYWxsIGZkcy4KKworVGhpcyBzbG93cyBkb3duIHRoZSBmdW5jdGlvbiwgYnV0IG9ubHkgaW4gdGhlIGNhc2UgL3Byb2MgaXMgbm90CithdmFpbGFibGUsIHdoaWNoIHNob3VsZCBiZSByYXJlIGluIHByYWN0aWNlLgorCitTaWduZWQtb2ZmLWJ5OiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzQ0NF0KK1NpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgorLS0tCisgcnBtaW8vcnBtaW8uYyB8IDEwICsrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ycG1pby9ycG1pby5jIGIvcnBtaW8vcnBtaW8uYworaW5kZXggNTUzNTFjMjIxLi5lMDUxYzk4NjMgMTAwNjQ0CistLS0gYS9ycG1pby9ycG1pby5jCisrKysgYi9ycG1pby9ycG1pby5jCitAQCAtMTAsNiArMTAsNyBAQAorICNpbmNsdWRlIDxzeXMvcGVyc29uYWxpdHkuaD4KKyAjZW5kaWYKKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKysjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgCisgI2luY2x1ZGUgPHJwbS9ycG1sb2cuaD4KKyAjaW5jbHVkZSA8cnBtL3JwbW1hY3JvLmg+CitAQCAtMTc3OCw3ICsxNzc5LDE0IEBAIHZvaWQgcnBtU2V0Q2xvc2VPbkV4ZWModm9pZCkKKyAJRElSICpkaXIgPSBvcGVuZGlyKCIvcHJvYy9zZWxmL2ZkIik7CisgCWlmIChkaXIgPT0gTlVMTCkgeyAvKiAvcHJvYyBub3QgYXZhaWxhYmxlICovCisgCQkvKiBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIGZkcywgbWlnaHQgYmUgc2xvdyAqLworLQkJaW50IG9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOworKwkJc3RydWN0IHJsaW1pdCBybDsKKysJCWludCBvcGVuX21heDsKKysKKysJCWlmIChnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSA9PSAwICYmIHJsLnJsaW1fbWF4ICE9IFJMSU1fSU5GSU5JVFkpCisrCQkJb3Blbl9tYXggPSBybC5ybGltX21heDsKKysJCWVsc2UKKysJCQlvcGVuX21heCA9IHN5c2NvbmYoX1NDX09QRU5fTUFYKTsKKysKKyAJCWlmIChvcGVuX21heCA9PSAtMSkKKyAJCQlvcGVuX21heCA9IDEwMjQ7CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2gKaW5kZXggNjRhNTY1MS4uODk4OWRjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZWMzMDU3OTVhMzAyZDIyNjM0M2U2OTAzMWZmMjAyNGRmY2RlNjljMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGNlOWZiYWIyOTkwNjA5YmRhY2U0NTdlMTQ2MTYwMzM0ZTkzMWM4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVGh1LCA4IEp1biAyMDE3IDE3OjA4OjA5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBidWlsZC9wYWNrLmM6IHJlbW92ZSBzdGF0aWMgbG9jYWwgdmFyaWFibGVzIGZyb20KK1N1YmplY3Q6IFtQQVRDSCAxNC8xNV0gYnVpbGQvcGFjay5jOiByZW1vdmUgc3RhdGljIGxvY2FsIHZhcmlhYmxlcyBmcm9tCiAgYnVpbGRIb3N0KCkgYW5kIGdldEJ1aWxkVGltZSgpCiAKIFRoZWlyIHVzZSBpcyBjYXVzaW5nIGRpZmZpY3VsdCB0byBkaWFnbm96ZSBkYXRhIHJhY2VzIHdoZW4gYnVpbGRpbmcgbXVsdGlwbGUKQEAgLTExLDggKzExLDggQEAKIFVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjI2XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKLQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIGJ1aWxkL2J1aWxkLmMgICAgICAgICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KICBidWlsZC9wYWNrLmMgICAgICAgICAgICAgIHwgODQgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIwLDcgKzIwLDcgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYnVpbGQvYnVpbGQuYyBiL2J1aWxkL2J1aWxkLmMKLWluZGV4IDVmOTljOGRiNy4uMDlhMTMxMWM1IDEwMDY0NAoraW5kZXggODExNTJlNTNlLi42MDAxZjllNTIgMTAwNjQ0CiAtLS0gYS9idWlsZC9idWlsZC5jCiArKysgYi9idWlsZC9idWlsZC5jCiBAQCAtNiw2ICs2LDggQEAKQEAgLTgzLDcgKzgzLDcgQEAKICAvKioKICAgKi8KICBzdGF0aWMgcnBtUkMgZG9SbVNvdXJjZShycG1TcGVjIHNwZWMpCi1AQCAtMjAzLDYgKzI0OSw5IEBAIHN0YXRpYyBycG1SQyBidWlsZFNwZWMoQlRBX3QgYnVpbGRBcmdzLCBycG1TcGVjIHNwZWMsIGludCB3aGF0KQorQEAgLTIwMSw2ICsyNDcsOSBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKICAgICAgcnBtUkMgcmMgPSBSUE1SQ19PSzsKICAgICAgaW50IHRlc3QgPSAod2hhdCAmIFJQTUJVSUxEX05PQlVJTEQpOwogICAgICBjaGFyICpjb29raWUgPSBidWlsZEFyZ3MtPmNvb2tpZSA/IHhzdHJkdXAoYnVpbGRBcmdzLT5jb29raWUpIDogTlVMTDsKQEAgLTkzLDcgKzkzLDcgQEAKICAKICAgICAgaWYgKHJwbUV4cGFuZE51bWVyaWMoIiV7P3NvdXJjZV9kYXRlX2Vwb2NoX2Zyb21fY2hhbmdlbG9nfSIpICYmCiAgCWdldGVudigiU09VUkNFX0RBVEVfRVBPQ0giKSA9PSBOVUxMKSB7Ci1AQCAtMjcxLDExICszMjAsMTEgQEAgc3RhdGljIHJwbVJDIGJ1aWxkU3BlYyhCVEFfdCBidWlsZEFyZ3MsIHJwbVNwZWMgc3BlYywgaW50IHdoYXQpCitAQCAtMjY5LDExICszMTgsMTEgQEAgc3RhdGljIHJwbVJDIGJ1aWxkU3BlYyhCVEFfdCBidWlsZEFyZ3MsIHJwbVNwZWMgc3BlYywgaW50IHdoYXQpCiAgCQlnb3RvIGV4aXQ7CiAgCiAgCWlmICgoKHdoYXQgJiBSUE1CVUlMRF9QQUNLQUdFU09VUkNFKSAmJiAhdGVzdCkgJiYKQEAgLTEwNyw3ICsxMDcsNyBAQAogIAkJZ290byBleGl0OwogIAkKICAJaWYgKCh3aGF0ICYgUlBNQlVJTERfQ0xFQU4pICYmCi1AQCAtMjk1LDYgKzM0NCw3IEBAIHN0YXRpYyBycG1SQyBidWlsZFNwZWMoQlRBX3QgYnVpbGRBcmdzLCBycG1TcGVjIHNwZWMsIGludCB3aGF0KQorQEAgLTI5Myw2ICszNDIsNyBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKICAJKHZvaWQpIHVubGluayhzcGVjLT5zcGVjRmlsZSk7CiAgCiAgZXhpdDoKQEAgLTExNiw3ICsxMTYsNyBAQAogICAgICBzcGVjLT5yb290RGlyID0gTlVMTDsKICAgICAgaWYgKHJjICE9IFJQTVJDX09LICYmIHJwbWxvZ0dldE5yZWNzKCkgPiAwKSB7CiBkaWZmIC0tZ2l0IGEvYnVpbGQvcGFjay5jIGIvYnVpbGQvcGFjay5jCi1pbmRleCBlZDViOWFiNGUuLjYyNDI3MDY1YSAxMDA2NDQKK2luZGV4IGRmMTU4NzZmZi4uMTdhNGIwOTA1IDEwMDY0NAogLS0tIGEvYnVpbGQvcGFjay5jCiArKysgYi9idWlsZC9wYWNrLmMKIEBAIC02LDggKzYsNiBAQApAQCAtMTI4LDcgKzEyOCw3IEBACiAgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiAgCiAgI2luY2x1ZGUgPHJwbS9ycG1saWIuaD4JCQkvKiBSUE1TSUdUQUcqLCBycG1SZWFkUGFja2FnZUZpbGUgKi8KLUBAIC0xNTEsNTcgKzE0OSw2IEBAIGV4aXQ6CitAQCAtMTUyLDU3ICsxNTAsNiBAQCBleGl0OgogICAgICByZXR1cm4gcmM7CiAgfQogIApAQCAtMTg2LDkgKzE4Niw5IEBACiAgc3RhdGljIHJwbVJDIHByb2Nlc3NTY3JpcHRGaWxlcyhycG1TcGVjIHNwZWMsIFBhY2thZ2UgcGtnKQogIHsKICAgICAgc3RydWN0IFRyaWdnZXJGaWxlRW50cnkgKnA7Ci1AQCAtMzA4LDcgKzI1NSw4IEBAIHN0YXRpYyBpbnQgaGF2ZVJpY2hEZXAoUGFja2FnZSBwa2cpCi0gfQotIAorQEAgLTQ3Niw3ICs0MjMsOCBAQCBleGl0OgorICAqIG9yZGVyIHRvIGhvdyB0aGUgUlBNIGZvcm1hdCBpcyBsYWlkIG9uIGRpc2suCisgICovCiAgc3RhdGljIHJwbVJDIHdyaXRlUlBNKFBhY2thZ2UgcGtnLCB1bnNpZ25lZCBjaGFyICoqIHBrZ2lkcCwKIC0JCSAgICAgIGNvbnN0IGNoYXIgKmZpbGVOYW1lLCBjaGFyICoqY29va2llKQogKwkJICAgICAgY29uc3QgY2hhciAqZmlsZU5hbWUsIGNoYXIgKipjb29raWUsCkBAIC0xOTYsNyArMTk2LDcgQEAKICB7CiAgICAgIEZEX3QgZmQgPSBOVUxMOwogICAgICBjaGFyICogcnBtaW9fZmxhZ3MgPSBOVUxMOwotQEAgLTM5Nyw3ICszNDUsNyBAQCBzdGF0aWMgcnBtUkMgd3JpdGVSUE0oUGFja2FnZSBwa2csIHVuc2lnbmVkIGNoYXIgKiogcGtnaWRwLAorQEAgLTUwMCw3ICs0NDgsNyBAQCBzdGF0aWMgcnBtUkMgd3JpdGVSUE0oUGFja2FnZSBwa2csIHVuc2lnbmVkIGNoYXIgKiogcGtnaWRwLAogIAogICAgICAvKiBDcmVhdGUgYW5kIGFkZCB0aGUgY29va2llICovCiAgICAgIGlmIChjb29raWUpIHsKQEAgLTIwNCw4ICsyMDQsOCBAQAogKwlyYXNwcmludGYoY29va2llLCAiJXMgJWQiLCBidWlsZEhvc3QsIGJ1aWxkVGltZSk7CiAgCWhlYWRlclB1dFN0cmluZyhwa2ctPmhlYWRlciwgUlBNVEFHX0NPT0tJRSwgKmNvb2tpZSk7CiAgICAgIH0KLSAgICAgCi1AQCAtNTQ2LDcgKzQ5NCw3IEBAIHN0YXRpYyBycG1SQyBjaGVja1BhY2thZ2VzKGNoYXIgKnBrZ2NoZWNrKQorIAorQEAgLTY0MSw3ICs1ODksNyBAQCBzdGF0aWMgcnBtUkMgY2hlY2tQYWNrYWdlcyhjaGFyICpwa2djaGVjaykKICAgICAgcmV0dXJuIFJQTVJDX09LOwogIH0KICAKQEAgLTIxNCw3ICsyMTQsNyBAQAogIHsKICAJY29uc3QgY2hhciAqZXJyb3JTdHJpbmc7CiAgCXJwbVJDIHJjID0gUlBNUkNfT0s7Ci1AQCAtNTY1LDggKzUxMyw4IEBAIHN0YXRpYyBycG1SQyBwYWNrYWdlQmluYXJ5KHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2csIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoCitAQCAtNjYwLDggKzYwOCw4IEBAIHN0YXRpYyBycG1SQyBwYWNrYWdlQmluYXJ5KHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2csIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoCiAgCWhlYWRlckNvcHlUYWdzKHNwZWMtPnBhY2thZ2VzLT5oZWFkZXIsIHBrZy0+aGVhZGVyLCBjb3B5VGFncyk7CiAgCQogIAloZWFkZXJQdXRTdHJpbmcocGtnLT5oZWFkZXIsIFJQTVRBR19SUE1WRVJTSU9OLCBWRVJTSU9OKTsKQEAgLTIyNSw3ICsyMjUsNyBAQAogIAogIAlpZiAoc3BlYy0+c291cmNlUGtnSWQgIT0gTlVMTCkgewogIAkgICAgaGVhZGVyUHV0QmluKHBrZy0+aGVhZGVyLCBSUE1UQUdfU09VUkNFUEtHSUQsIHNwZWMtPnNvdXJjZVBrZ0lkLDE2KTsKLUBAIC02MDQsNyArNTUyLDcgQEAgc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2gKK0BAIC02OTksNyArNjQ3LDcgQEAgc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2gKICAJICAgIGZyZWUoYmluUnBtKTsKICAJfQogIApAQCAtMjM0LDcgKzIzNCw3IEBACiAgCWlmIChyYyA9PSBSUE1SQ19PSykgewogIAkgICAgLyogRG8gY2hlY2sgZWFjaCB3cml0dGVuIHBhY2thZ2UgaWYgZW5hYmxlZCAqLwogIAkgICAgY2hhciAqcGtnY2hlY2sgPSBycG1FeHBhbmQoIiV7P19idWlsZF9wa2djaGVja30gIiwgKmZpbGVuYW1lLCBOVUxMKTsKLUBAIC02MjQsNyArNTcyLDcgQEAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YQorQEAgLTcxOSw3ICs2NjcsNyBAQCBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhCiAgICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKm5leHQ7CiAgfTsKICAKQEAgLTI0Myw3ICsyNDMsNyBAQAogIHsKICAgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFza3MgPSBOVUxMOwogICAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrID0gTlVMTDsKLUBAIC02MzYsNyArNTg0LDcgQEAgc3RhdGljIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhycG1TcGVjIHNwZWMsIGNvbnN0IGMKK0BAIC03MzEsNyArNjc5LDcgQEAgc3RhdGljIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhycG1TcGVjIHNwZWMsIGNvbnN0IGMKICAgICAgICAgIGlmIChwa2cgPT0gc3BlYy0+cGFja2FnZXMpIHsKICAgICAgICAgICAgICAvLyB0aGUgZmlyc3QgcGFja2FnZSBuZWVkcyB0byBiZSBwcm9jZXNzZWQgYWhlYWQgb2Ygb3RoZXJzLCBhcyB0aGV5IGNvcHkKICAgICAgICAgICAgICAvLyBjaGFuZ2Vsb2cgZGF0YSBmcm9tIGl0LCBhbmQgc28gb3RoZXJ3aXNlIGRhdGEgcmFjZXMgd291bGQgaGFwcGVuCkBAIC0yNTIsNyArMjUyLDcgQEAKICAgICAgICAgICAgICBycG1sb2coUlBNTE9HX05PVElDRSwgXygiRmluaXNoZWQgYmluYXJ5IHBhY2thZ2Ugam9iLCByZXN1bHQgJWQsIGZpbGVuYW1lICVzXG4iKSwgdGFzay0+cmVzdWx0LCB0YXNrLT5maWxlbmFtZSk7CiAgICAgICAgICAgICAgdGFza3MgPSB0YXNrOwogICAgICAgICAgfQotQEAgLTY1Myw3ICs2MDEsNyBAQCBzdGF0aWMgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogcnVuQmluYXJ5UGFja2FnZVRhc2tzKHJwbVNwZWMgc3BlYywgY29uc3QgYworQEAgLTc0OCw3ICs2OTYsNyBAQCBzdGF0aWMgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogcnVuQmluYXJ5UGFja2FnZVRhc2tzKHJwbVNwZWMgc3BlYywgY29uc3QgYwogICAgICAgICAgaWYgKHRhc2sgIT0gdGFza3MpCiAgICAgICAgICAjcHJhZ21hIG9tcCB0YXNrCiAgICAgICAgICB7CkBAIC0yNjEsNyArMjYxLDcgQEAKICAgICAgICAgICAgICBycG1sb2coUlBNTE9HX05PVElDRSwgXygiRmluaXNoZWQgYmluYXJ5IHBhY2thZ2Ugam9iLCByZXN1bHQgJWQsIGZpbGVuYW1lICVzXG4iKSwgdGFzay0+cmVzdWx0LCB0YXNrLT5maWxlbmFtZSk7CiAgICAgICAgICB9CiAgICAgIH0KLUBAIC02NzEsMTEgKzYxOSwxMSBAQCBzdGF0aWMgdm9pZCBmcmVlQmluYXJ5UGFja2FnZVRhc2tzKHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHRhc2tzKQorQEAgLTc2NiwxMSArNzE0LDExIEBAIHN0YXRpYyB2b2lkIGZyZWVCaW5hcnlQYWNrYWdlVGFza3Moc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogdGFza3MpCiAgICAgIH0KICB9CiAgCkBAIC0yNzUsNyArMjc1LDcgQEAKICAKICAgICAgZm9yIChzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrID0gdGFza3M7IHRhc2sgIT0gTlVMTDsgdGFzayA9IHRhc2stPm5leHQpIHsKICAgICAgICAgIGlmICh0YXNrLT5yZXN1bHQgPT0gUlBNUkNfT0spIHsKLUBAIC03MDIsMjIgKzY1MCwyMiBAQCBycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKK0BAIC03OTcsNyArNzQ1LDcgQEAgcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcpCiAgICAgIHJldHVybiBSUE1SQ19PSzsKICB9CiAgCkBAIC0yODQsNiArMjg0LDcgQEAKICB7CiAgICAgIFBhY2thZ2Ugc291cmNlUGtnID0gc3BlYy0+c291cmNlUGFja2FnZTsKICAgICAgcnBtUkMgcmM7CitAQCAtODA1LDggKzc1Myw4IEBAIHJwbVJDIHBhY2thZ2VTb3VyY2VzKHJwbVNwZWMgc3BlYywgY2hhciAqKmNvb2tpZSkKICAKICAgICAgLyogQWRkIHNvbWUgY3J1ZnQgKi8KICAgICAgaGVhZGVyUHV0U3RyaW5nKHNvdXJjZVBrZy0+aGVhZGVyLCBSUE1UQUdfUlBNVkVSU0lPTiwgVkVSU0lPTik7CkBAIC0yOTEsOSArMjkyLDEwIEBACiAtICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgZ2V0QnVpbGRUaW1lKCksIDEpOwogKyAgICBoZWFkZXJQdXRTdHJpbmcoc291cmNlUGtnLT5oZWFkZXIsIFJQTVRBR19CVUlMREhPU1QsIGJ1aWxkSG9zdCk7CiArICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgJmJ1aWxkVGltZSwgMSk7CisgICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX1NPVVJDRVBBQ0tBR0UsICZvbmUsIDEpOwogIAogICAgICAvKiBYWFggdGhpcyBzaG91bGQgYmUgJV9zcnBtZGlyICovCi0gICAgIHsJY2hhciAqZm4gPSBycG1HZXRQYXRoKCIle19zcmNycG1kaXJ9LyIsIHNwZWMtPnNvdXJjZVJwbU5hbWUsTlVMTCk7CitAQCAtODE0LDcgKzc2Miw3IEBAIHJwbVJDIHBhY2thZ2VTb3VyY2VzKHJwbVNwZWMgc3BlYywgY2hhciAqKmNvb2tpZSkKICAJY2hhciAqcGtnY2hlY2sgPSBycG1FeHBhbmQoIiV7P19idWlsZF9wa2djaGVja19zcnBtfSAiLCBmbiwgTlVMTCk7CiAgCiAgCXNwZWMtPnNvdXJjZVBrZ0lkID0gTlVMTDsKQEAgLTMwMywxMCArMzA1LDEwIEBACiAgCS8qIERvIGNoZWNrIFNSUE0gcGFja2FnZSBpZiBlbmFibGVkICovCiAgCWlmIChyYyA9PSBSUE1SQ19PSyAmJiBwa2djaGVja1swXSAhPSAnICcpIHsKIGRpZmYgLS1naXQgYS9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oIGIvYnVpbGQvcnBtYnVpbGRfaW50ZXJuYWwuaAotaW5kZXggODM1MWE2YTM0Li43OTczMzdjYTcgMTAwNjQ0CitpbmRleCA0MzliN2QzYjUuLjA3ZTgzMzhhZCAxMDA2NDQKIC0tLSBhL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmgKICsrKyBiL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmgKLUBAIC00MDgsMTkgKzQwOCwyMyBAQCBycG1SQyBwcm9jZXNzU291cmNlRmlsZXMocnBtU3BlYyBzcGVjLCBycG1CdWlsZFBrZ0ZsYWdzIHBrZ0ZsYWdzKTsKK0BAIC00MjcsMTkgKzQyNywyMyBAQCBycG1SQyBwcm9jZXNzU291cmNlRmlsZXMocnBtU3BlYyBzcGVjLCBycG1CdWlsZFBrZ0ZsYWdzIHBrZ0ZsYWdzKTsKICAgKiBAcGFyYW0gc3BlYwkJc3BlYyBmaWxlIGNvbnRyb2wgc3RydWN0dXJlCiAgICogQHBhcmFtIGNvb2tpZQlidWlsZCBpZGVudGlmaWVyICJjb29raWUiIG9yIE5VTEwKICAgKiBAcGFyYW0gY2hlYXRpbmcJd2FzIGJ1aWxkIHNob3J0Y2lyY3VpdGVkPwpAQCAtMzMzLDUgKzMzNSw1IEBACiAgUlBNX0dOVUNfSU5URVJOQUwKICBpbnQgYWRkTGFuZ1RhZyhycG1TcGVjIHNwZWMsIEhlYWRlciBoLCBycG1UYWdWYWwgdGFnLAogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2gKaW5kZXggYzkxMGE0Ny4uNGFjNWMzOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMS1Eby1ub3QtcmVxdWlyZS10aGF0LUVMRi1iaW5hcmllcy1hcmUtZXhlY3V0YWJsZS10by1iLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMTEtRG8tbm90LXJlcXVpcmUtdGhhdC1FTEYtYmluYXJpZXMtYXJlLWV4ZWN1dGFibGUtdG8tYi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZDY1ZDZlODc2MGFmYmQ3ZjcwYjIyYTFmMzI5N2EwMzdiYzQ3NWZlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTE0MWQ1MGQ3YjNkM2MyMDlhMjJjNTNkZWVkYjRjZWVmMDE0NDAxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgogRGF0ZTogTW9uLCAxNSBNYXkgMjAxNyAxMDoyMTowOCArMDIwMAotU3ViamVjdDogW1BBVENIIDExLzEzXSBEbyBub3QgcmVxdWlyZSB0aGF0IEVMRiBiaW5hcmllcyBhcmUgZXhlY3V0YWJsZSB0byBiZQorU3ViamVjdDogW1BBVENIIDA5LzE1XSBEbyBub3QgcmVxdWlyZSB0aGF0IEVMRiBiaW5hcmllcyBhcmUgZXhlY3V0YWJsZSB0byBiZQogIGlkZW50aWZpYWJsZQogCiBUaGVyZSBpcyBub3RoaW5nIHRoYXQgcmVxdWlyZXMsIGUuZy4sIGEgRFNPIHRvIGJlIGV4ZWN1dGFibGUsIGJ1dCBpdApAQCAtMTQsMTkgKzE0LDIwIEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CisKIC0tLQogIGZpbGVhdHRycy9lbGYuYXR0ciB8IDEgLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9maWxlYXR0cnMvZWxmLmF0dHIgYi9maWxlYXR0cnMvZWxmLmF0dHIKLWluZGV4IDU5NWIzM2UwOS4uYmFjNTI2NDlkIDEwMDY0NAoraW5kZXggNTgwNWRkMGVlLi4zNTE2ZjMwOWQgMTAwNjQ0CiAtLS0gYS9maWxlYXR0cnMvZWxmLmF0dHIKICsrKyBiL2ZpbGVhdHRycy9lbGYuYXR0cgogQEAgLTEsNCArMSwzIEBACiAgJV9fZWxmX3Byb3ZpZGVzCQkle19ycG1jb25maWdkaXJ9L2VsZmRlcHMgLS1wcm92aWRlcyAlez9fX2ZpbHRlcl9HTElCQ19QUklWQVRFOi0tZmlsdGVyLXByaXZhdGV9CiAgJV9fZWxmX3JlcXVpcmVzCQkle19ycG1jb25maWdkaXJ9L2VsZmRlcHMgLS1yZXF1aXJlcyAlez9fX2ZpbHRlcl9HTElCQ19QUklWQVRFOi0tZmlsdGVyLXByaXZhdGV9Ci0gJV9fZWxmX21hZ2ljCQleKHNldHVpZCApPyhzZXRnaWQgKT8oc3RpY2t5ICk/RUxGICgzMnw2NCktYml0LiokCisgJV9fZWxmX21hZ2ljCQleKHNldHVpZCw/ICk/KHNldGdpZCw/ICk/KHN0aWNreSApP0VMRiAoMzJ8NjQpLWJpdC4qJAogLSVfX2VsZl9mbGFncwkJZXhlb25seQogLS0gCi0yLjEyLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDEyLVVzZS1jb25kaXRpb25hbC10by1hY2Nlc3MtX2RvY2Rpci1pbi1tYWNyb3MuaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDEyLVVzZS1jb25kaXRpb25hbC10by1hY2Nlc3MtX2RvY2Rpci1pbi1tYWNyb3MuaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NmRhOTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMi1Vc2UtY29uZGl0aW9uYWwtdG8tYWNjZXNzLV9kb2NkaXItaW4tbWFjcm9zLmluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSA3NzgwOGRiNDAzNmRjNGEwMTJjNDdhY2EzNjI1NTU0OWVkNzY0YTZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2pAYXhpcy5jb20+Ci1EYXRlOiBUdWUsIDE2IE1heSAyMDE3IDEwOjU4OjE4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMTNdIFVzZSBjb25kaXRpb25hbCB0byBhY2Nlc3MgJXtfZG9jZGlyfSBpbiBtYWNyb3MuaW4KLQotVGhpcyBhdm9pZHMgdGhlIGZvbGxvd2luZyB3YXJuaW5nOgotCi13YXJuaW5nOiBJZ25vcmluZyBpbnZhbGlkIHJlZ2V4ICV7X2RvY2Rpcn0KLQotd2hlbiBydW5pbmcgYHJwbWRlcHMgLVIgPGZpbGU+YCwgc2luY2UgJXtfZG9jZGlyfSBpcyBvbmx5IGRlZmluZWQgd2hlbgotcGFyc2luZyBhIHNwZWMgZmlsZSAoaW4gcGFyc2VTcGVjKCkpLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjE2XQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+Ci0tLS0KLSBtYWNyb3MuaW4gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWFjcm9zLmluIGIvbWFjcm9zLmluCi1pbmRleCA4NGFlMjUyNzUuLmNjYTY3YTUwMCAxMDA2NDQKLS0tLSBhL21hY3Jvcy5pbgotKysrIGIvbWFjcm9zLmluCi1AQCAtMjAwLDggKzIwMCw4IEBAIHBhY2thZ2Ugb3Igd2hlbiBkZWJ1Z2dpbmcgdGhpcyBwYWNrYWdlLlwKLSAjIFRoZWlyIHB1cnBvdXNlIGlzIHRvIHNldCB1cCBnbG9iYWwgZmlsdGVyaW5nIGZvciBhbGwgcGFja2FnZXMuIElmIHlvdSBuZWVkCi0gIyB0byBzZXQgdXAgc3BlY2lmaWMgZmlsdGVyaW5nIGZvciB5b3VyIHBhY2thZ2UgdXNlICVfX3JlcXVpcmVzX2V4Y2x1ZGVfZnJvbQotICMgYW5kICVfX3Byb3ZpZGVzX2V4Y2x1ZGVfZnJvbSBpbnN0ZWFkLgotLSVfX2dsb2JhbF9yZXF1aXJlc19leGNsdWRlX2Zyb20JCSV7X2RvY2Rpcn0KLS0lX19nbG9iYWxfcHJvdmlkZXNfZXhjbHVkZV9mcm9tCQkle19kb2NkaXJ9Ci0rJV9fZ2xvYmFsX3JlcXVpcmVzX2V4Y2x1ZGVfZnJvbQkJJXs/X2RvY2Rpcjole19kb2NkaXJ9fQotKyVfX2dsb2JhbF9wcm92aWRlc19leGNsdWRlX2Zyb20JCSV7P19kb2NkaXI6JXtfZG9jZGlyfX0KLSAKLSAjCVRoZSBwYXRoIHRvIHRoZSBnemlwIGV4ZWN1dGFibGUgKGxlZ2FjeSwgdXNlICV7X19nemlwfSBpbnN0ZWFkKS4KLSAlX2d6aXBiaW4JCSV7X19nemlwfQotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMy1BZGQtYS1uZXctb3B0aW9uLWFsbGRlcHMtdG8tcnBtZGVwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMTMtQWRkLWEtbmV3LW9wdGlvbi1hbGxkZXBzLXRvLXJwbWRlcHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYWY2MjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMy1BZGQtYS1uZXctb3B0aW9uLWFsbGRlcHMtdG8tcnBtZGVwcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi1Gcm9tIDNiZjIwYTYxMTZhZTNlMWE1YTNhNjkwN2JlZTdlODgxYjE3ZWZiMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KLURhdGU6IE1vbiwgMTUgTWF5IDIwMTcgMTE6MjM6MjYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8xM10gQWRkIGEgbmV3IG9wdGlvbiAtLWFsbGRlcHMgdG8gcnBtZGVwcwotCi1UaGlzIHdpbGwgc2VuZCB0aGUgb3V0cHV0IGZyb20gcnBtZmNQcmludCgpIHRvIHN0ZG91dC4gVGhpcyBpcyBhbgotYWx0ZXJuYXRpdmUgdG8gdXNpbmcgdGhlIC0tcnBtZmNkZWJ1ZyBvcHRpb24sIHdoaWNoIHdpbGwgc2VuZCB0aGUgc2FtZQotb3V0cHV0IHRvIHN0ZGVyci4gVGhlIHR3byBvcHRpb25zIGhhdmUgdG90YWxseSBkaWZmZXJlbnQgdXNlIGNhc2VzCi10aG91Z2guIFdoaWxlIC0tYWxsZGVwcyBpcyB1c2VkIHdoZW4gdGhlIG91dHB1dCBmcm9tIHJwbWZjUHJpbnQoKSBpcwotd2hhdCBpcyB3YW50ZWQsIC0tcnBtZmNkZWJ1ZyBjYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSBvdGhlcgotb3V0cHV0IG9wdGlvbnMsIGUuZy4sIC0tcmVxdWlyZXMsIHdpdGhvdXQgYWZmZWN0aW5nIHRoZWlyIG91dHB1dC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yMjBdCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KLS0tLQotIGJ1aWxkL3JwbWZjLmMgICB8IDI3ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIGJ1aWxkL3JwbWZjLmggICB8ICAxIC0KLSB0b29scy9ycG1kZXBzLmMgfCA0NCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9idWlsZC9ycG1mYy5jIGIvYnVpbGQvcnBtZmMuYwotaW5kZXggYzhlMmY4NzZhLi40NGYxY2RjOWEgMTAwNjQ0Ci0tLS0gYS9idWlsZC9ycG1mYy5jCi0rKysgYi9idWlsZC9ycG1mYy5jCi1AQCAtNzMyLDcgKzczMiw2IEBAIHN0YXRpYyBycG1fY29sb3JfdCBycG1mY0NvbG9yKGNvbnN0IGNoYXIgKiBmbXN0cikKLSAKLSB2b2lkIHJwbWZjUHJpbnQoY29uc3QgY2hhciAqIG1zZywgcnBtZmMgZmMsIEZJTEUgKiBmcCkKLSB7Ci0tICAgIHJwbV9jb2xvcl90IGZjb2xvcjsKLSAgICAgaW50IG5keDsKLSAgICAgaW50IGR4OwotICAgICBpbnQgZng7Ci1AQCAtNzQ0LDIxICs3NDMsMjMgQEAgdm9pZCBycG1mY1ByaW50KGNvbnN0IGNoYXIgKiBtc2csIHJwbWZjIGZjLCBGSUxFICogZnApCi0gCi0gICAgIGlmIChmYykKLSAgICAgZm9yIChmeCA9IDA7IGZ4IDwgZmMtPm5maWxlczsgZngrKykgewotLQlycG1zaWQgY3ggPSBmYy0+ZmNkaWN0eFtmeF0gKyAxOyAvKiBpZCdzIGFyZSBvbmUgb2ZmICovCi0tCWZjb2xvciA9IGZjLT5mY29sb3JbZnhdOwotLQlBUkdWX3QgZmF0dHJzID0gZmMtPmZhdHRyc1tmeF07Ci0tCi0gCWZwcmludGYoZnAsICIlM2QgJXMiLCBmeCwgZmMtPmZuW2Z4XSk7Ci0tCWlmIChmY29sb3IgIT0gUlBNRkNfQkxBQ0spCi0rCWlmIChfcnBtZmNfZGVidWcpIHsKLSsJICAgIHJwbXNpZCBjeCA9IGZjLT5mY2RpY3R4W2Z4XSArIDE7IC8qIGlkJ3MgYXJlIG9uZSBvZmYgKi8KLSsJICAgIHJwbV9jb2xvcl90IGZjb2xvciA9IGZjLT5mY29sb3JbZnhdOwotKwkgICAgQVJHVl90IGZhdHRycyA9IGZjLT5mYXR0cnNbZnhdOwotKwotKwkgICAgaWYgKGZjb2xvciAhPSBSUE1GQ19CTEFDSykKLSAJCWZwcmludGYoZnAsICJcdDB4JXgiLCBmYy0+ZmNvbG9yW2Z4XSk7Ci0tCWVsc2UKLSsJICAgIGVsc2UKLSAJCWZwcmludGYoZnAsICJcdCVzIiwgcnBtc3RyUG9vbFN0cihmYy0+Y2RpY3QsIGN4KSk7Ci0tCWlmIChmYXR0cnMpIHsKLS0JICAgIGNoYXIgKmF0dHJzID0gYXJndkpvaW4oZmF0dHJzLCAiLCIpOwotLQkgICAgZnByaW50ZihmcCwgIiBbJXNdIiwgYXR0cnMpOwotLQkgICAgZnJlZShhdHRycyk7Ci0tCX0gZWxzZSB7Ci0tCSAgICBmcHJpbnRmKGZwLCAiIFtub25lXSIpOwotKwkgICAgaWYgKGZhdHRycykgewotKwkJY2hhciAqYXR0cnMgPSBhcmd2Sm9pbihmYXR0cnMsICIsIik7Ci0rCQlmcHJpbnRmKGZwLCAiIFslc10iLCBhdHRycyk7Ci0rCQlmcmVlKGF0dHJzKTsKLSsJICAgIH0gZWxzZSB7Ci0rCQlmcHJpbnRmKGZwLCAiIFtub25lXSIpOwotKwkgICAgfQotIAl9Ci0gCWZwcmludGYoZnAsICJcbiIpOwotIAotZGlmZiAtLWdpdCBhL2J1aWxkL3JwbWZjLmggYi9idWlsZC9ycG1mYy5oCi1pbmRleCBkYWU4ZWE1YjEuLjNkODdiMzFjZiAxMDA2NDQKLS0tLSBhL2J1aWxkL3JwbWZjLmgKLSsrKyBiL2J1aWxkL3JwbWZjLmgKLUBAIC00NSw3ICs0NSw2IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IHJwbWZjVG9rZW5zX3MgKiBycG1mY1Rva2VuOwotIAotIC8qKiBcaW5ncm91cCBycG1mYwotICAqIFByaW50IHJlc3VsdHMgb2YgZmlsZSBjbGFzc2lmaWNhdGlvbi4KLS0gKiBAdG9kbyBSZW1vdmUgZGVidWdnaW5nIHJvdXRpbmUuCi0gICogQHBhcmFtIG1zZwkJbWVzc2FnZSBwcmVmaXggKE5VTEwgZm9yIG5vbmUpCi0gICogQHBhcmFtIGZjCQlmaWxlIGNsYXNzaWZpZXIKLSAgKiBAcGFyYW0gZnAJCW91dHB1dCBmaWxlIGhhbmRsZSAoTlVMTCBmb3Igc3RkZXJyKQotZGlmZiAtLWdpdCBhL3Rvb2xzL3JwbWRlcHMuYyBiL3Rvb2xzL3JwbWRlcHMuYwotaW5kZXggYTQxNGI2MzQzLi5mMjYwYTM4YzQgMTAwNjQ0Ci0tLS0gYS90b29scy9ycG1kZXBzLmMKLSsrKyBiL3Rvb2xzL3JwbWRlcHMuYwotQEAgLTIzLDYgKzIzLDggQEAgc3RhdGljIGludCBwcmludF9jb25mbGljdHM7Ci0gCi0gc3RhdGljIGludCBwcmludF9vYnNvbGV0ZXM7Ci0gCi0rc3RhdGljIGludCBwcmludF9hbGxkZXBzOwotKwotIHN0YXRpYyB2b2lkIHJwbWRzUHJpbnQoY29uc3QgY2hhciAqIG1zZywgcnBtZHMgZHMsIEZJTEUgKiBmcCkKLSB7Ci0gICAgIGlmIChmcCA9PSBOVUxMKSBmcCA9IHN0ZGVycjsKLUBAIC01Nyw2ICs1OSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcG9wdE9wdGlvbiBvcHRpb25zVGFibGVbXSA9IHsKLSAgICAgICAgIE5VTEwsIE5VTEwgfSwKLSAgeyAib2Jzb2xldGVzIiwgJ1wwJywgUE9QVF9BUkdfVkFMLCAmcHJpbnRfb2Jzb2xldGVzLCAtMSwKLSAgICAgICAgIE5VTEwsIE5VTEwgfSwKLSsgeyAiYWxsZGVwcyIsICdcMCcsIFBPUFRfQVJHX1ZBTCwgJnByaW50X2FsbGRlcHMsIC0xLAotKyAgICAgICAgTlVMTCwgTlVMTCB9LAotIAotICAgIFBPUFRfQVVUT0FMSUFTCi0gICAgUE9QVF9BVVRPSEVMUAotQEAgLTEwMCwyNSArMTA0LDI3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgaWYgKHJwbWZjQ2xhc3NpZnkoZmMsIGF2LCBOVUxMKSB8fCBycG1mY0FwcGx5KGZjKSkKLSAJZ290byBleGl0OwotIAotLSAgICBpZiAoX3JwbWZjX2RlYnVnKQotLQlycG1mY1ByaW50KGJ1ZiwgZmMsIE5VTEwpOwotLQotLSAgICBpZiAocHJpbnRfcHJvdmlkZXMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNQcm92aWRlcyhmYyksIHN0ZG91dCk7Ci0tICAgIGlmIChwcmludF9yZXF1aXJlcykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY1JlcXVpcmVzKGZjKSwgc3Rkb3V0KTsKLS0gICAgaWYgKHByaW50X3JlY29tbWVuZHMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNSZWNvbW1lbmRzKGZjKSwgc3Rkb3V0KTsKLS0gICAgaWYgKHByaW50X3N1Z2dlc3RzKQotLQlycG1kc1ByaW50KE5VTEwsIHJwbWZjU3VnZ2VzdHMoZmMpLCBzdGRvdXQpOwotLSAgICBpZiAocHJpbnRfc3VwcGxlbWVudHMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNTdXBwbGVtZW50cyhmYyksIHN0ZG91dCk7Ci0tICAgIGlmIChwcmludF9lbmhhbmNlcykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY0VuaGFuY2VzKGZjKSwgc3Rkb3V0KTsKLS0gICAgaWYgKHByaW50X2NvbmZsaWN0cykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY0NvbmZsaWN0cyhmYyksIHN0ZG91dCk7Ci0tICAgIGlmIChwcmludF9vYnNvbGV0ZXMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNPYnNvbGV0ZXMoZmMpLCBzdGRvdXQpOwotKyAgICBpZiAocHJpbnRfYWxsZGVwcyB8fCBfcnBtZmNfZGVidWcpCi0rCXJwbWZjUHJpbnQoTlVMTCwgZmMsIHByaW50X2FsbGRlcHMgPyBzdGRvdXQgOiBOVUxMKTsKLSsKLSsgICAgaWYgKCFwcmludF9hbGxkZXBzKSB7Ci0rCWlmIChwcmludF9wcm92aWRlcykKLSsJICAgIHJwbWRzUHJpbnQoTlVMTCwgcnBtZmNQcm92aWRlcyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9yZXF1aXJlcykKLSsJICAgIHJwbWRzUHJpbnQoTlVMTCwgcnBtZmNSZXF1aXJlcyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9yZWNvbW1lbmRzKQotKwkgICAgcnBtZHNQcmludChOVUxMLCBycG1mY1JlY29tbWVuZHMoZmMpLCBzdGRvdXQpOwotKwlpZiAocHJpbnRfc3VnZ2VzdHMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjU3VnZ2VzdHMoZmMpLCBzdGRvdXQpOwotKwlpZiAocHJpbnRfc3VwcGxlbWVudHMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjU3VwcGxlbWVudHMoZmMpLCBzdGRvdXQpOwotKwlpZiAocHJpbnRfZW5oYW5jZXMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjRW5oYW5jZXMoZmMpLCBzdGRvdXQpOwotKwlpZiAocHJpbnRfY29uZmxpY3RzKQotKwkgICAgcnBtZHNQcmludChOVUxMLCBycG1mY0NvbmZsaWN0cyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9vYnNvbGV0ZXMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjT2Jzb2xldGVzKGZjKSwgc3Rkb3V0KTsKLSsgICAgfQotIAotICAgICBlYyA9IDA7Ci0gCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDEyOTIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMS5iYgpAQCAtMCwwICsxLDEzOCBAQAorU1VNTUFSWSA9ICJUaGUgUlBNIHBhY2thZ2UgbWFuYWdlbWVudCBzeXN0ZW0iCitERVNDUklQVElPTiA9ICJUaGUgUlBNIFBhY2thZ2UgTWFuYWdlciAoUlBNKSBpcyBhIHBvd2VyZnVsIGNvbW1hbmQgbGluZSBkcml2ZW4gXAorcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSBjYXBhYmxlIG9mIGluc3RhbGxpbmcsIHVuaW5zdGFsbGluZywgXAordmVyaWZ5aW5nLCBxdWVyeWluZywgYW5kIHVwZGF0aW5nIHNvZnR3YXJlIHBhY2thZ2VzLiBFYWNoIHNvZnR3YXJlIFwKK3BhY2thZ2UgY29uc2lzdHMgb2YgYW4gYXJjaGl2ZSBvZiBmaWxlcyBhbG9uZyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IFwKK3RoZSBwYWNrYWdlIGxpa2UgaXRzIHZlcnNpb24sIGEgZGVzY3JpcHRpb24sIGV0Yy4iCisKK1NVTU1BUllfJHtQTn0tZGV2ID0gIkRldmVsb3BtZW50IGZpbGVzIGZvciBtYW5pcHVsYXRpbmcgUlBNIHBhY2thZ2VzIgorREVTQ1JJUFRJT05fJHtQTn0tZGV2ID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgUlBNIEMgbGlicmFyeSBhbmQgaGVhZGVyIGZpbGVzLiBUaGVzZSBcCitkZXZlbG9wbWVudCBmaWxlcyB3aWxsIHNpbXBsaWZ5IHRoZSBwcm9jZXNzIG9mIHdyaXRpbmcgcHJvZ3JhbXMgdGhhdCBcCittYW5pcHVsYXRlIFJQTSBwYWNrYWdlcyBhbmQgZGF0YWJhc2VzLiBUaGVzZSBmaWxlcyBhcmUgaW50ZW5kZWQgdG8gXAorc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgZ3JhcGhpY2FsIHBhY2thZ2UgbWFuYWdlcnMgb3IgYW55IFwKK290aGVyIHRvb2xzIHRoYXQgbmVlZCBhbiBpbnRpbWF0ZSBrbm93bGVkZ2Ugb2YgUlBNIHBhY2thZ2VzIGluIG9yZGVyIFwKK3RvIGZ1bmN0aW9uLiIKKworU1VNTUFSWV9weXRob24zLXJwbSA9ICJQeXRob24gYmluZGluZ3MgZm9yIGFwcHMgd2hpY2ggd2lsbCBtYW51cHVsYXRlIFJQTSBwYWNrYWdlcyIKK0RFU0NSSVBUSU9OX3B5dGhvbjMtcnBtID0gIlRoZSBweXRob24zLXJwbSBwYWNrYWdlIGNvbnRhaW5zIGEgbW9kdWxlIHRoYXQgcGVybWl0cyBhcHBsaWNhdGlvbnMgXAord3JpdHRlbiBpbiB0aGUgUHl0aG9uIHByb2dyYW1taW5nIGxhbmd1YWdlIHRvIHVzZSB0aGUgaW50ZXJmYWNlIFwKK3N1cHBsaWVkIGJ5IHRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcmllcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucnBtLm9yZyIKKworIyBsaWJyYXJpZXMgYXJlIGFsc28gTEdQTCAtIGhvdyB0byBleHByZXNzIHRoaXM/CitMSUNFTlNFID0gIkdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMGJmMDE3YzBmZDE5MjBlNjE1OGEzMzNhY2FiZmQ0YSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbTticmFuY2g9cnBtLTQuMTQueCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1hZGQtYW4tdW5zYXRpc2ZpYWJsZS1kZXBlbmRlbmN5LXdoZW4tYnVpbGRpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcmVhZC1jb25maWctZmlsZXMtZnJvbS1IT01FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1jcm9zcy1pbnN0YWxsaW5nLWV4ZWN1dGUtcGFja2FnZS1zY3JpcHRsZXRzLXdpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtc3VwcG9ydC1mb3ItcHJlZml4aW5nLWV0Yy1mcm9tLVJQTV9FVENDT05GSUdESVItLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtQy1saWJyYXJ5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtY29sb3Itc2V0dGluZy1mb3ItbWlwczY0X24zMi1iaW5hcmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1TcGxpdC1iaW5hcnktcGFja2FnZS1idWlsZGluZy1pbnRvLWEtc2VwYXJhdGUtZnVuY3RpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUnVuLWJpbmFyeS1wYWNrYWdlLWNyZWF0aW9uLXZpYS10aHJlYWQtcG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1ycG1zdHJwb29sLmMtbWFrZS1vcGVyYXRpb25zLW92ZXItc3RyaW5nLXBvb2xzLXRocmVhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBlcmwtZGlzYWJsZS1hdXRvLXJlcXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItZGJ1cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZhY3Rvci1vdXQtYW5kLXVuaWZ5LXNldHRpbmctQ0xPRVhFQy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLU9wdGltaXplLXJwbVNldENsb3NlT25FeGVjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtcnBtU2V0Q2xvc2VPbkV4ZWMtdXNlLWdldHJsaW1pdC5wYXRjaCBcCisgICAgICAgICAgICIKKworUEUgPSAiMSIKK1NSQ1JFViA9ICJiZmVlMTQxMGFmNTFjMWNjOTcyNDc5MWZiOGQ5ODUyNjBhNjIxMDJiIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gIm5zcyBsaWJhcmNoaXZlIGRiIGZpbGUgcG9wdCB4eiBiemlwMiBkYnVzIGVsZnV0aWxzIHB5dGhvbjMiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgcHl0aG9uM25hdGl2ZQorZXhwb3J0IFBZVEhPTl9BQkkKKworIyBPRS1jb3JlIHBhdGNoZXMgYXV0b3JlY29uZiB0byBhZGRpdGlvbmFsbHkgcnVuIGdudS1jb25maWdpemUsIHdoaWNoIGZhaWxzIHdpdGggdGhpcyByZWNpcGUKK0VYVFJBX0FVVE9SRUNPTkZfYXBwZW5kID0gIiAtLWV4Y2x1ZGU9Z251LWNvbmZpZ2l6ZSIKKworRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS13aXRob3V0LWx1YSAtLWVuYWJsZS1weXRob24iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLW5scyIKKworIyAtLXN5c2NvbmZkaXIgcHJldmVudHMgcnBtIGZyb20gYXR0ZW1wdGluZyB0byBhY2Nlc3MgbWFjaGluZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGluIHN5c3Jvb3QvZXRjOyB3ZSBuZWVkIHRvIGhhdmUgaXQgaW4gcm9vdGZzCisjCisjIC0tbG9jYWxzdGF0ZWRpciBwcmV2ZW50cyBycG0gZnJvbSB3cml0aW5nIGl0cyBkYXRhYmFzZSB0byBuYXRpdmUgc3lzcm9vdCB3aGVuIGJ1aWxkaW5nIGltYWdlcworIworIyBEaXNhYmxlIGRidXMgZm9yIG5hdGl2ZSwgc28gdGhhdCBycG0gZG9lc24ndCBhdHRlbXB0IHRvIGluaGliaXQgc2h1dGRvd24gdmlhIHNlc3Npb24gZGJ1cyBldmVuIHdoZW4gcGx1Z2lucyBzdXBwb3J0IGlzIGVuYWJsZWQuCisjIEFsc28gZGlzYWJsZSBwbHVnaW5zIGJ5IGRlZmF1bHQgZm9yIG5hdGl2ZS4KK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXN5c2NvbmZkaXI9L2V0YyAtLWxvY2Fsc3RhdGVkaXI9L3ZhciAtLXdpdGhvdXQtZGJ1cyAtLWRpc2FibGUtcGx1Z2lucyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tpbWFldm1dID0gIi0td2l0aC1pbWFldm0sLGltYS1ldm0tdXRpbHMiCisKKyMgRGlyZWN0IHJwbS1uYXRpdmUgdG8gcmVhZCBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgorIyBsaWJtYWdpYyBhbHNvIGhhcyBzeXNyb290IHBhdGggY29udGFtaW5hdGlvbiwgc28gb3ZlcnJpZGUgaXQKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgdG9vbHM9IlwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtMmFyY2hpdmUgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG0yY3BpbyBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWJ1aWxkIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtZGIgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1ncmFwaCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWtleXMgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1zaWduIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtc3BlYyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3JwbS9ycG1kZXBzIFwKKyAgICAgICAgIgorCisgICAgICAgIGZvciB0b29sIGluICR0b29sczsgZG8KKyAgICAgICAgICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHRvb2wgXAorICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9FVENDT05GSUdESVI9JHtTVEFHSU5HX0RJUl9OQVRJVkV9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1BR0lDPSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7ZGF0YWRpcl9uYXRpdmV9L21pc2MvbWFnaWMubWdjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9OT19DSFJPT1RfRk9SX1NDUklQVFM9MQorICAgICAgICBkb25lCit9CisKKyMgUnBtJ3MgbWFrZSBpbnN0YWxsIGNyZWF0ZXMgdmFyL3RtcCB3aGljaCBjbGFzaGVzIHdpdGggYmFzZS1maWxlcyBwYWNrYWdpbmcKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBybSAtcmYgJHtEfS92YXIKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCisKKwlzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vZW52ICR7UFlUSE9OX1BOfXwnIFwKKwkgICAgJHtEfSR7bGliZGlyfS9ycG0vcHl0aG9uZGlzdGRlcHMucHkgXAorCSAgICAke0R9JHtsaWJkaXJ9L3JwbS9weXRob24tbWFjcm8taGVscGVyCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcnBtLXBsdWdpbnMvKi5zbyBcCisgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3JwbS1wbHVnaW5zLyoubGEgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VTICs9ICJweXRob24zLXJwbSIKK1BST1ZJREVTICs9ICJweXRob24zLXJwbSIKK0ZJTEVTX3B5dGhvbjMtcnBtID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3JwbS8qIgorCisjIHJwbSA1Lnggd2FzIHBhY2thZ2luZyB0aGUgcnBtIGJ1aWxkIHRvb2xzIHNlcGFyYXRlbHkKK1JQUk9WSURFU18ke1BOfSArPSAicnBtLWJ1aWxkIgorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIHBlcmwgcHl0aG9uMy1jb3JlIgorCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInJwbV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKKyMgRG8gbm90IHNwZWNpZnkgYSBzeXNyb290IHdoZW4gY29tcGlsaW5nIG9uIGEgdGFyZ2V0LgorcnBtX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJc2VkIC1pIC1lICdzOi0tc3lzcm9vdFteIF0qOjpnJyBcCisJICAgICR7UEtHRH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODY2MzE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUlBNIHBhY2thZ2UgbWFuYWdlbWVudCBzeXN0ZW0iCi1ERVNDUklQVElPTiA9ICJUaGUgUlBNIFBhY2thZ2UgTWFuYWdlciAoUlBNKSBpcyBhIHBvd2VyZnVsIGNvbW1hbmQgbGluZSBkcml2ZW4gXAotcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSBjYXBhYmxlIG9mIGluc3RhbGxpbmcsIHVuaW5zdGFsbGluZywgXAotdmVyaWZ5aW5nLCBxdWVyeWluZywgYW5kIHVwZGF0aW5nIHNvZnR3YXJlIHBhY2thZ2VzLiBFYWNoIHNvZnR3YXJlIFwKLXBhY2thZ2UgY29uc2lzdHMgb2YgYW4gYXJjaGl2ZSBvZiBmaWxlcyBhbG9uZyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IFwKLXRoZSBwYWNrYWdlIGxpa2UgaXRzIHZlcnNpb24sIGEgZGVzY3JpcHRpb24sIGV0Yy4iCi0KLVNVTU1BUllfJHtQTn0tZGV2ID0gIkRldmVsb3BtZW50IGZpbGVzIGZvciBtYW5pcHVsYXRpbmcgUlBNIHBhY2thZ2VzIgotREVTQ1JJUFRJT05fJHtQTn0tZGV2ID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgUlBNIEMgbGlicmFyeSBhbmQgaGVhZGVyIGZpbGVzLiBUaGVzZSBcCi1kZXZlbG9wbWVudCBmaWxlcyB3aWxsIHNpbXBsaWZ5IHRoZSBwcm9jZXNzIG9mIHdyaXRpbmcgcHJvZ3JhbXMgdGhhdCBcCi1tYW5pcHVsYXRlIFJQTSBwYWNrYWdlcyBhbmQgZGF0YWJhc2VzLiBUaGVzZSBmaWxlcyBhcmUgaW50ZW5kZWQgdG8gXAotc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgZ3JhcGhpY2FsIHBhY2thZ2UgbWFuYWdlcnMgb3IgYW55IFwKLW90aGVyIHRvb2xzIHRoYXQgbmVlZCBhbiBpbnRpbWF0ZSBrbm93bGVkZ2Ugb2YgUlBNIHBhY2thZ2VzIGluIG9yZGVyIFwKLXRvIGZ1bmN0aW9uLiIKLQotU1VNTUFSWV9weXRob24zLXJwbSA9ICJQeXRob24gYmluZGluZ3MgZm9yIGFwcHMgd2hpY2ggd2lsbCBtYW51cHVsYXRlIFJQTSBwYWNrYWdlcyIKLURFU0NSSVBUSU9OX3B5dGhvbjMtcnBtID0gIlRoZSBweXRob24zLXJwbSBwYWNrYWdlIGNvbnRhaW5zIGEgbW9kdWxlIHRoYXQgcGVybWl0cyBhcHBsaWNhdGlvbnMgXAotd3JpdHRlbiBpbiB0aGUgUHl0aG9uIHByb2dyYW1taW5nIGxhbmd1YWdlIHRvIHVzZSB0aGUgaW50ZXJmYWNlIFwKLXN1cHBsaWVkIGJ5IHRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcmllcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucnBtLm9yZyIKLQotIyBsaWJyYXJpZXMgYXJlIGFsc28gTEdQTCAtIGhvdyB0byBleHByZXNzIHRoaXM/Ci1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mNTI1OTE1MWQyNmZmMThlNzgwMjM0NTBhNWFjOGQ5NiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1hZGQtYW4tdW5zYXRpc2ZpYWJsZS1kZXBlbmRlbmN5LXdoZW4tYnVpbGRpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcmVhZC1jb25maWctZmlsZXMtZnJvbS1IT01FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1jcm9zcy1pbnN0YWxsaW5nLWV4ZWN1dGUtcGFja2FnZS1zY3JpcHRsZXRzLXdpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtc3VwcG9ydC1mb3ItcHJlZml4aW5nLWV0Yy1mcm9tLVJQTV9FVENDT05GSUdESVItLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1uaWNlLXZhbHVlLWNhbm5vdC1iZS1yZXNldC1pc3N1ZS1hLW5vdGljZS1pbnN0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLWNvbG9yLXNldHRpbmctZm9yLW1pcHM2NF9uMzItYmluYXJpZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtUFlUSE9OX0FCSS13aGVuLXNlYXJjaGluZy1mb3ItcHl0aG9uLWxpYnJhcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1Vc2UtY29uZGl0aW9uYWwtdG8tYWNjZXNzLV9kb2NkaXItaW4tbWFjcm9zLmluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtQWRkLWEtbmV3LW9wdGlvbi1hbGxkZXBzLXRvLXJwbWRlcHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1TcGxpdC1iaW5hcnktcGFja2FnZS1idWlsZGluZy1pbnRvLWEtc2VwYXJhdGUtZnVuY3RpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItUnVuLWJpbmFyeS1wYWNrYWdlLWNyZWF0aW9uLXZpYS10aHJlYWQtcG9vbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1ycG1zdHJwb29sLmMtbWFrZS1vcGVyYXRpb25zLW92ZXItc3RyaW5nLXBvb2xzLXRocmVhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBlcmwtZGlzYWJsZS1hdXRvLXJlcXMucGF0Y2ggXAotICAgICAgICAgICAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKLQotUFYgPSAiNC4xMy45MCtnaXQke1NSQ1BWfSIKLVBFID0gIjEiCi1TUkNSRVYgPSAiYThlNTFiM2JiMDVjNmFjYjFkOWIyZTNkMzRmODU5ZGRkYTE2NzdiZSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJuc3MgbGliYXJjaGl2ZSBkYiBmaWxlIHBvcHQgeHogYnppcDIgZGJ1cyBlbGZ1dGlscyBweXRob24zIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUKLWV4cG9ydCBQWVRIT05fQUJJCi0KLSMgT0UtY29yZSBwYXRjaGVzIGF1dG9yZWNvbmYgdG8gYWRkaXRpb25hbGx5IHJ1biBnbnUtY29uZmlnaXplLCB3aGljaCBmYWlscyB3aXRoIHRoaXMgcmVjaXBlCi1FWFRSQV9BVVRPUkVDT05GX2FwcGVuZCA9ICIgLS1leGNsdWRlPWdudS1jb25maWdpemUiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0td2l0aG91dC1sdWEgLS1lbmFibGUtcHl0aG9uIgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1ubHMiCi0KLSMgLS1zeXNjb25mZGlyIHByZXZlbnRzIHJwbSBmcm9tIGF0dGVtcHRpbmcgdG8gYWNjZXNzIG1hY2hpbmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbiBzeXNyb290L2V0Yzsgd2UgbmVlZCB0byBoYXZlIGl0IGluIHJvb3RmcwotIwotIyAtLWxvY2Fsc3RhdGVkaXIgcHJldmVudHMgcnBtIGZyb20gd3JpdGluZyBpdHMgZGF0YWJhc2UgdG8gbmF0aXZlIHN5c3Jvb3Qgd2hlbiBidWlsZGluZyBpbWFnZXMKLSMKLSMgQWxzbyBkaXNhYmxlIHBsdWdpbnMsIHNvIHRoYXQgcnBtIGRvZXNuJ3QgYXR0ZW1wdCB0byBpbmhpYml0IHNodXRkb3duIHZpYSBzZXNzaW9uIGRidXMKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXN5c2NvbmZkaXI9L2V0YyAtLWxvY2Fsc3RhdGVkaXI9L3ZhciAtLWRpc2FibGUtcGx1Z2lucyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tpbWFldm1dID0gIi0td2l0aC1pbWFldm0sLGltYS1ldm0tdXRpbHMiCi0KLSMgRGlyZWN0IHJwbS1uYXRpdmUgdG8gcmVhZCBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgotIyBsaWJtYWdpYyBhbHNvIGhhcyBzeXNyb290IHBhdGggY29udGFtaW5hdGlvbiwgc28gb3ZlcnJpZGUgaXQKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgdG9vbHM9IlwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtMmFyY2hpdmUgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG0yY3BpbyBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWJ1aWxkIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtZGIgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1ncmFwaCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWtleXMgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1zaWduIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtc3BlYyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3JwbS9ycG1kZXBzIFwKLSAgICAgICAgIgotCi0gICAgICAgIGZvciB0b29sIGluICR0b29sczsgZG8KLSAgICAgICAgICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHRvb2wgXAotICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9FVENDT05GSUdESVI9JHtTVEFHSU5HX0RJUl9OQVRJVkV9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1BR0lDPSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7ZGF0YWRpcl9uYXRpdmV9L21pc2MvbWFnaWMubWdjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9OT19DSFJPT1RfRk9SX1NDUklQVFM9MQotICAgICAgICBkb25lCi19Ci0KLSMgUnBtJ3MgbWFrZSBpbnN0YWxsIGNyZWF0ZXMgdmFyL3RtcCB3aGljaCBjbGFzaGVzIHdpdGggYmFzZS1maWxlcyBwYWNrYWdpbmcKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBybSAtcmYgJHtEfS92YXIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCi0KLQlzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vZW52ICR7UFlUSE9OX1BOfXwnIFwKLQkgICAgJHtEfSR7bGliZGlyfS9ycG0vcHl0aG9uZGlzdGRlcHMucHkKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9ycG0tcGx1Z2lucy8qLnNvIFwKLSAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcnBtLXBsdWdpbnMvKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRVMgKz0gInB5dGhvbjMtcnBtIgotUFJPVklERVMgKz0gInB5dGhvbjMtcnBtIgotRklMRVNfcHl0aG9uMy1ycG0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcnBtLyoiCi0KLSMgcnBtIDUueCB3YXMgcGFja2FnaW5nIHRoZSBycG0gYnVpbGQgdG9vbHMgc2VwYXJhdGVseQotUlBST1ZJREVTXyR7UE59ICs9ICJycG0tYnVpbGQiCi0KLVJERVBFTkRTXyR7UE59ID0gImJhc2ggcGVybCBweXRob24zLWNvcmUiCi0KLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicnBtX3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotIyBEbyBub3Qgc3BlY2lmeSBhIHN5c3Jvb3Qgd2hlbiBjb21waWxpbmcgb24gYSB0YXJnZXQuCi1ycG1fcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKLQlzZWQgLWkgLWUgJ3M6LS1zeXNyb290W14gXSo6OmcnIFwKLQkgICAgJHtQS0dEfS8ke2xpYmRpcn0vcnBtL21hY3JvcwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMzE5ODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLXJlcXVpcmUgcnN5bmMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9tYWtlZmlsZS1uby1yZWJ1aWxkLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGY3NThkN2UwMDBjMGY3ZjdkMzc5MjYxMGZhZDcwY2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWNmYTYyYTdmYTNjNGMxOGI5ZWNjZDhjMTZlYWRkZWU0YmQzMDhhNzZlYTUwYjVjMDJhNTg0MGYwOWMwYTFjMiIKLQotIyBHUEx2MisgKDw8IDMuMC4wKSwgR1BMdjMrICg+PSAzLjAuMCkKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJhY2wgYXR0ciBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLXN1cHBvcnQsLS1kaXNhYmxlLWFjbC1zdXBwb3J0LGFjbCwiCi1QQUNLQUdFQ09ORklHW2F0dHJdID0gIi0tZW5hYmxlLXhhdHRyLXN1cHBvcnQsLS1kaXNhYmxlLXhhdHRyLXN1cHBvcnQsYXR0ciwiCi0KLSMgQnkgZGVmYXVsdCwgaWYgY3Jvc3Njb21waWxpbmcsIHJzeW5jIGRpc2FibGVzIGEgbnVtYmVyIG9mCi0jIGNhcGFiaWxpdGllcywgaGFyZGxpbmtpbmcgc3ltbGlua3MgYW5kIHNwZWNpYWwgZmlsZXMgKGkuZS4gZGV2aWNlcykKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJyc3luY19jdl9jYW5faGFyZGxpbmtfc3BlY2lhbD15ZXMgcnN5bmNfY3ZfY2FuX2hhcmRsaW5rX3N5bWxpbms9eWVzIgotCi0jIHJzeW5jIDMuMCB1c2VzIGNvbmZpZ3VyZS5zaCBpbnN0ZWFkIG9mIGNvbmZpZ3VyZSwgYW5kCi0jIG1ha2VmaWxlIGNoZWNrcyB0aGUgZXhpc3RlbmNlIG9mIGNvbmZpZ3VyZS5zaAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXJtIC1mICR7U30vY29uZmlndXJlICR7U30vY29uZmlndXJlLnNoCi19Ci0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotCWNwIC1mICR7U30vY29uZmlndXJlICR7U30vY29uZmlndXJlLnNoCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRhMDI1OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIKQEAgLTAsMCArMSwzMiBAQAorcmVxdWlyZSByc3luYy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovL21ha2VmaWxlLW5vLXJlYnVpbGQucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNTgxYTU4OGZkZTlkODlmNmJjNjIwMWU4MTI5YWZhZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NWNjNTU0ZWZlYzVmZGFhZDcwZGU5MjFjZDVhNWVlYjZjMjlhOTU1MjRjNzE1ZjNiYmY4NDkyMzViMDgwMGMwIgorCisjIEdQTHYyKyAoPDwgMy4wLjApLCBHUEx2MysgKD49IDMuMC4wKQorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImFjbCBhdHRyIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wtc3VwcG9ydCwtLWRpc2FibGUtYWNsLXN1cHBvcnQsYWNsLCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS1lbmFibGUteGF0dHItc3VwcG9ydCwtLWRpc2FibGUteGF0dHItc3VwcG9ydCxhdHRyLCIKKworIyBCeSBkZWZhdWx0LCBpZiBjcm9zc2NvbXBpbGluZywgcnN5bmMgZGlzYWJsZXMgYSBudW1iZXIgb2YKKyMgY2FwYWJpbGl0aWVzLCBoYXJkbGlua2luZyBzeW1saW5rcyBhbmQgc3BlY2lhbCBmaWxlcyAoaS5lLiBkZXZpY2VzKQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gInJzeW5jX2N2X2Nhbl9oYXJkbGlua19zcGVjaWFsPXllcyByc3luY19jdl9jYW5faGFyZGxpbmtfc3ltbGluaz15ZXMiCisKKyMgcnN5bmMgMy4wIHVzZXMgY29uZmlndXJlLnNoIGluc3RlYWQgb2YgY29uZmlndXJlLCBhbmQKKyMgbWFrZWZpbGUgY2hlY2tzIHRoZSBleGlzdGVuY2Ugb2YgY29uZmlndXJlLnNoCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJcm0gLWYgJHtTfS9jb25maWd1cmUgJHtTfS9jb25maWd1cmUuc2gKK30KKworZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CisJY3AgLWYgJHtTfS9jb25maWd1cmUgJHtTfS9jb25maWd1cmUuc2gKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMKaW5kZXggZDcxOTg5OC4uZmQzOTExYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYwpAQCAtOCwxMyArOCwxMyBAQAogU0VDVElPTiA9ICJkZXZlbC9ydWJ5IgogTElDRU5TRSA9ICJSdWJ5IHwgQlNEIHwgR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9OGE5NjBiMDhkOTcyZjQzZjkxYWU4NGE2ZjAwZGNiZmIgXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0zNDA5NDhlMTg4MmU1Nzk3MzE4NDFiZjQ5Y2RjMjJjMSBcCiAgICAgZmlsZTovL0JTREw7bWQ1PTE5YWFmNjVjODhhNDBiNTA4ZDE3YWU0YmU1MzljNGI1XAogICAgIGZpbGU6Ly9HUEw7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzXAotICAgIGZpbGU6Ly9MRUdBTDttZDU9ZGFmMzQ5YWQ1OWRkMTliZDhjOTE5MTcxYmZmM2M1ZDYgXAorICAgIGZpbGU6Ly9MRUdBTDttZDU9OGY4NzFmM2YwMzczMmMwMThhNWZhOWIxODU5NTgyMzEgXAogIgogCi1ERVBFTkRTID0gInJ1YnktbmF0aXZlIHpsaWIgb3BlbnNzbCB0Y2wgbGlieWFtbCBkYiBnZGJtIHJlYWRsaW5lIgorREVQRU5EUyA9ICJydWJ5LW5hdGl2ZSB6bGliIG9wZW5zc2wgdGNsIGxpYnlhbWwgZ2RibSByZWFkbGluZSIKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gIm9wZW5zc2wtbmF0aXZlIGxpYnlhbWwtbmF0aXZlIgogCiBTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMi1PYmV5LUxERkxBR1MtZm9yLXRoZS1saW5rLW9mLWxpYnJ1YnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaAppbmRleCBiMDExNGJhLi40Y2Y1NzlmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaApAQCAtMTAsMTkgKzEwLDE2IEBACiAgTWFrZWZpbGUuaW4gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCA3ZGEyNDg4Li41YjRhZWExIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNzUsNyArNzUsNyBAQCBFWFRMSUJTID0KLSBMSUJTID0gQExJQlNAICQoRVhUTElCUykKK0luZGV4OiBydWJ5LTIuNS4wL01ha2VmaWxlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcnVieS0yLjUuMC5vcmlnL01ha2VmaWxlLmluCisrKysgcnVieS0yLjUuMC9NYWtlZmlsZS5pbgorQEAgLTc3LDcgKzc3LDcgQEAgTElCUyA9IEBMSUJTQCAkKEVYVExJQlMpCiAgTUlTU0lORyA9IEBMSUJPQkpTQCBAQUxMT0NBQAorIEVOQUJMRV9TSEFSRUQgPSBARU5BQkxFX1NIQVJFREAKICBMRFNIQVJFRCA9IEBMSUJSVUJZX0xEU0hBUkVEQAogLURMREZMQUdTID0gQExJQlJVQllfRExERkxBR1NAICQoWExERkxBR1MpICQoQVJDSF9GTEFHKQogK0RMREZMQUdTID0gQExJQlJVQllfRExERkxBR1NAIEBMREZMQUdTQCAkKFhMREZMQUdTKSAkKEFSQ0hfRkxBRykKICBTT0xJQlMgPSBAU09MSUJTQAorIEVOQUJMRV9ERUJVR19FTlYgPSBARU5BQkxFX0RFQlVHX0VOVkAKICBNQUlOTElCUyA9IEBNQUlOTElCU0AKLSBBUkNITUlOSU9CSlMgPSBATUlOSU9CSlNACi0tLSAKLTIuOC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L2V4dG1rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKaW5kZXggYTViMjE4NC4uNDA0YjlhZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKQEAgLTIsMTMgKzIsMTUgQEAKIGRpZmYgLXJ1IHJ1YnktMS44LjctcDI0OC5vcmlnL2V4dC9leHRtay5yYiBydWJ5LTEuOC43LXAyNDgvZXh0L2V4dG1rLnJiCiAtLS0gcnVieS0xLjguNy1wMjQ4Lm9yaWcvZXh0L2V4dG1rLnJiCTIwMDktMTItMjQgMDM6MDE6NTguMDAwMDAwMDAwIC0wNjAwCiArKysgcnVieS0xLjguNy1wMjQ4L2V4dC9leHRtay5yYgkyMDEwLTAyLTEyIDE1OjU1OjI3LjM3MDA2MTU1OCAtMDYwMAotQEAgLTM1NCw4ICszNTQsOCBAQAotICAgJHJ1YnkgPSAnJCh0b3BkaXIpL21pbmlydWJ5JyArIEVYRUVYVAorQEAgLTQxMyw4ICs0MTMsOCBAQCBkZWYgJG1mbGFncy5kZWZpbmVkPyh2YXIpCiAgZW5kCi0gJHJ1YnkgPDwgIiAtSSckKHRvcGRpciknIgotKyRydWJ5IDw8ICIgLUknJCh0b3Bfc3JjZGlyKS9saWInIgorICRydWJ5ID0gWyRydWJ5XQorICRydWJ5IDw8ICItSSckKHRvcGRpciknIgorKyRydWJ5IDw8ICItSSckKHRvcF9zcmNkaXIpL2xpYiciCiAgdW5sZXNzIENST1NTX0NPTVBJTElORwotLSAgJHJ1YnkgPDwgIiAtSSckKHRvcF9zcmNkaXIpL2xpYiciCi0gICAkcnVieSA8PCAiIC1JJyQoZXh0b3V0KS8kKGFyY2gpJyAtSSckKGV4dG91dCkvY29tbW9uJyIgaWYgJGV4dG91dAotICAgJHJ1YnkgPDwgIiAtSS4vLSAtSSckKHRvcF9zcmNkaXIpL2V4dCcgLXJwdXJlbGliLnJiIgorLSAgJHJ1YnkgPDwgIi1JJyQodG9wX3NyY2RpcikvbGliJyIKKyAgICRydWJ5IDw8ICItSSckKGV4dG91dCkvJChhcmNoKSciIDw8ICItSSckKGV4dG91dCkvY29tbW9uJyIgaWYgJGV4dG91dAogICAgRU5WWyJSVUJZTElCIl0gPSAiLSIKKyBlbmQKKy0tIAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTE0MDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy0xNDA2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhlNjkzYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTE0MDY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSA4Zjc4MmZkOGUxODFkOWNmZTkzODdkZWQ0M2E1Y2E5NjkyMjY2Yjg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmxvcmlhbiBGcmFuayA8ZmxvcmlAcGluZy5kZT4KLURhdGU6IFRodSwgMiBNYXIgMjAxNyAxMjoxMjozMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggYXJiaXRyYXJ5IGhlYXAgZXhwb3N1cmUgcHJvYmxlbQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTE0MDY0Ci0KLVNpZ25lZC1vZmYtYnk6IE92aWRpdSBQYW5haXQgPG92aWRpdS5wYW5haXRAd2luZHJpdmVyLmNvbT4KLS0tLQotIGV4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYyB8IDEyICsrKysrKy0tLS0tLQotIGV4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaCB8ICAxIC0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYyBiL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYwotaW5kZXggZWY4NWJiNy4uYzg4ODE4YyAxMDA2NDQKLS0tLSBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYwotKysrIGIvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5jCi1AQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyBjaGFyICpmc3RybmR1cChjb25zdCBjaGFyICpwdHIsIHVuc2lnbmVkIGxvbmcgbGVuKSB7Ci0gICBjaGFyICpyZXN1bHQ7Ci0gICBpZiAobGVuIDw9IDApIHJldHVybiBOVUxMOwotICAgcmVzdWx0ID0gQUxMT0NfTihjaGFyLCBsZW4pOwotLSAgbWVtY2NweShyZXN1bHQsIHB0ciwgMCwgbGVuKTsKLSsgIG1lbWNweShyZXN1bHQsIHB0ciwgbGVuKTsKLSAgIHJldHVybiByZXN1bHQ7Ci0gfQotIAotQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfaW5kZW50X3NldChWQUxVRSBzZWxmLCBWQUxVRSBpbmRlbnQpCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPmluZGVudCkgcnVieV94ZnJlZShzdGF0ZS0+aW5kZW50KTsKLS0gICAgICAgIHN0YXRlLT5pbmRlbnQgPSBzdHJkdXAoUlNUUklOR19QVFIoaW5kZW50KSk7Ci0rICAgICAgICBzdGF0ZS0+aW5kZW50ID0gZnN0cm5kdXAoUlNUUklOR19QVFIoaW5kZW50KSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5pbmRlbnRfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExMDAsNyArMTEwMCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2Vfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIHNwYWNlKQotICAgICAgICAgfQotICAgICB9IGVsc2UgewotICAgICAgICAgaWYgKHN0YXRlLT5zcGFjZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2UpOwotLSAgICAgICAgc3RhdGUtPnNwYWNlID0gc3RyZHVwKFJTVFJJTkdfUFRSKHNwYWNlKSk7Ci0rICAgICAgICBzdGF0ZS0+c3BhY2UgPSBmc3RybmR1cChSU1RSSU5HX1BUUihzcGFjZSksIGxlbik7Ci0gICAgICAgICBzdGF0ZS0+c3BhY2VfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExMzYsNyArMTEzNiw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2VfYmVmb3JlX3NldChWQUxVRSBzZWxmLCBWQUxVRSBzcGFjZV9iZWZvcmUpCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPnNwYWNlX2JlZm9yZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2VfYmVmb3JlKTsKLS0gICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmUgPSBzdHJkdXAoUlNUUklOR19QVFIoc3BhY2VfYmVmb3JlKSk7Ci0rICAgICAgICBzdGF0ZS0+c3BhY2VfYmVmb3JlID0gZnN0cm5kdXAoUlNUUklOR19QVFIoc3BhY2VfYmVmb3JlKSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmVfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExNzMsNyArMTE3Myw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfb2JqZWN0X25sX3NldChWQUxVRSBzZWxmLCBWQUxVRSBvYmplY3RfbmwpCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPm9iamVjdF9ubCkgcnVieV94ZnJlZShzdGF0ZS0+b2JqZWN0X25sKTsKLS0gICAgICAgIHN0YXRlLT5vYmplY3RfbmwgPSBzdHJkdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSk7Ci0rICAgICAgICBzdGF0ZS0+b2JqZWN0X25sID0gZnN0cm5kdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5vYmplY3RfbmxfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTEyMDgsNyArMTIwOCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfYXJyYXlfbmxfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIGFycmF5X25sKQotICAgICAgICAgfQotICAgICB9IGVsc2UgewotICAgICAgICAgaWYgKHN0YXRlLT5hcnJheV9ubCkgcnVieV94ZnJlZShzdGF0ZS0+YXJyYXlfbmwpOwotLSAgICAgICAgc3RhdGUtPmFycmF5X25sID0gc3RyZHVwKFJTVFJJTkdfUFRSKGFycmF5X25sKSk7Ci0rICAgICAgICBzdGF0ZS0+YXJyYXlfbmwgPSBmc3RybmR1cChSU1RSSU5HX1BUUihhcnJheV9ubCksIGxlbik7Ci0gICAgICAgICBzdGF0ZS0+YXJyYXlfbmxfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotZGlmZiAtLWdpdCBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaCBiL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAotaW5kZXggOTAwYjRkNS4uYzM2N2E2MiAxMDA2NDQKLS0tLSBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAotKysrIGIvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5oCi1AQCAtMSw3ICsxLDYgQEAKLSAjaWZuZGVmIF9HRU5FUkFUT1JfSF8KLSAjZGVmaW5lIF9HRU5FUkFUT1JfSF8KLSAKLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPG1hdGguaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ4MTM5Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDY5MDMxM2EwNjFmN2E0ZmE2MTRlYzVjYzgzNjhiNGYyMjg0ZTA1OWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSy5Lb3Nha28iIDxrb3Nha29Ac29mbmVjLmNvLmpwPgotRGF0ZTogVHVlLCAyMyBNYXkgMjAxNyAxMDoyODo1OCArMDkwMAotU3ViamVjdDogW1BBVENIXSBmaXggIzU3IDogREFUQV9FTlNVUkUoKSBjaGVjayBtdXN0IGJlIGJlZm9yZSBkYXRhIGFjY2VzcwotCi0tLS0KLSByZWdleGVjLmMgfCAgICA1IC0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCi0KLS0tLSBlbmQgb2Ygb3JpZ2luYWwgaGVhZGVyCi0KLUNWRTogQ1ZFLTIwMTctOTIyNAotCi1Db250ZXh0IG1vZGlmaWVkIHNvIHRoYXQgcGF0Y2ggYXBwbGllcyBmb3IgdmVyc2lvbiAyLjQuMS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLQotZGlmZiAtLWdpdCBhL3JlZ2V4ZWMuYyBiL3JlZ2V4ZWMuYwotaW5kZXggMzVmZWYxMS4uZDRlNTc3ZCAxMDA2NDQKLS0tLSBhL3JlZ2V4ZWMuYwotKysrIGIvcmVnZXhlYy5jCi1AQCAtMTQ3MywxNCArMTQ3Myw5IEBAIG1hdGNoX2F0KHJlZ2V4X3QqIHJlZywgY29uc3QgVUNoYXIqIHN0ciwgY29uc3QgVUNoYXIqIGVuZCwKLSAgICAgICBORVhUOwotCi0gICAgIENBU0UoT1BfRVhBQ1QxKSAgTU9QX0lOKE9QX0VYQUNUMSk7Ci0tI2lmIDAKLSAgICAgICBEQVRBX0VOU1VSRSgxKTsKLSAgICAgICBpZiAoKnAgIT0gKnMpIGdvdG8gZmFpbDsKLSAgICAgICBwKys7IHMrKzsKLS0jZW5kaWYKLS0gICAgICBpZiAoKnAgIT0gKnMrKykgZ290byBmYWlsOwotLSAgICAgIERBVEFfRU5TVVJFKDApOwotLSAgICAgIHArKzsKLSAgICAgICBNT1BfT1VUOwotICAgICAgIGJyZWFrOwotIAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNi5wYXRjaAppbmRleCAwZjJhNDMwLi44OTQzN2JiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI2LnBhdGNoCkBAIC0yMCwyMiArMjAsMTMgQEAKIAogLS0tIHJ1YnktMi40LjEub3JpZy9yZWdwYXJzZS5jCiArKysgcnVieS0yLjQuMS9yZWdwYXJzZS5jCi1AQCAtMzY0NCw3ICszNjQ0LDcgQEAgZmV0Y2hfdG9rZW4oT25pZ1Rva2VuKiB0b2ssIFVDaGFyKiogc3JjLAotICAgICAgIGlmIChJU19TWU5UQVhfT1Aoc3luLCBPTklHX1NZTl9PUF9FU0NfT0NUQUwzKSkgewotIAlwcmV2ID0gcDsKLSAJbnVtID0gc2Nhbl91bnNpZ25lZF9vY3RhbF9udW1iZXIoJnAsIGVuZCwgKGMgPT0gJzAnID8gMjozKSwgZW5jKTsKLS0JaWYgKG51bSA8IDApIHJldHVybiBPTklHRVJSX1RPT19CSUdfTlVNQkVSOwotKwlpZiAobnVtIDwgMCB8fCAweGZmIDwgbnVtKSByZXR1cm4gT05JR0VSUl9UT09fQklHX05VTUJFUjsKLSAJaWYgKHAgPT0gcHJldikgeyAgLyogY2FuJ3QgcmVhZCBub3RoaW5nLiAqLwotIAkgIG51bSA9IDA7IC8qIGJ1dCwgaXQncyBub3QgZXJyb3IgKi8KLSAJfQogQEAgLTQ0NTAsNiArNDQ1MCw5IEBAIG5leHRfc3RhdGVfdmFsKENDbGFzc05vZGUqIGNjLCBDQ2xhc3NOb2QKICAgIHN3aXRjaCAoKnN0YXRlKSB7CiAgICBjYXNlIENDU19WQUxVRToKICAgICAgaWYgKCp0eXBlID09IENDVl9TQikgewotKyAgICAgIGlmICgqdnMgPiAweGZmKQorKyAgICAgIGlmICgqZnJvbSA+IDB4ZmYpCiArICAgICAgICAgIHJldHVybiBPTklHRVJSX0lOVkFMSURfQ09ERV9QT0lOVF9WQUxVRTsKICsKLSAgICAgICBCSVRTRVRfU0VUX0JJVF9DSEtEVVAoY2MtPmJzLCAoaW50ICkoKnZzKSk7CisgICAgICAgQklUU0VUX1NFVF9CSVRfQ0hLRFVQKGNjLT5icywgKGludCApKCpmcm9tKSk7CiAgICAgICAgaWYgKElTX05PVF9OVUxMKGFzY19jYykpCi0gCUJJVFNFVF9TRVRfQklUKGFzY19jYy0+YnMsIChpbnQgKSgqdnMpKTsKKyAJQklUU0VUX1NFVF9CSVQoYXNjX2NjLT5icywgKGludCApKCpmcm9tKSk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1ZTdjY2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA5NjkwZDNhYjFmOWJjZDJkYjhjYmUxZmUzZWU0YTVkYTYwNmI4ODE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIksuS29zYWtvIiA8a29zYWtvQHNvZm5lYy5jby5qcD4KLURhdGU6IFR1ZSwgMjMgTWF5IDIwMTcgMTY6MTU6MzUgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4ICM1OCA6IGFjY2VzcyB0byBpbnZhbGlkIGFkZHJlc3MgYnkgcmVnLT5kbWluIHZhbHVlCi0KLS0tLQotIHJlZ2V4ZWMuYyB8ICAgIDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLS0tLSBlbmQgb2Ygb3JpZ2luYWwgaGVhZGVyCi0KLUNWRTogQ1ZFLTIwMTctOTIyNwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vdCBhdXRob3JdCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9yZWdleGVjLmMgYi9yZWdleGVjLmMKLWluZGV4IGQ0ZTU3N2QuLjJmYTBmM2QgMTAwNjQ0Ci0tLS0gYS9yZWdleGVjLmMKLSsrKyBiL3JlZ2V4ZWMuYwotQEAgLTMxNTQsNiArMzE1NCw4IEBAIGZvcndhcmRfc2VhcmNoX3JhbmdlKHJlZ2V4X3QqIHJlZywgY29uc3QgVUNoYXIqIHN0ciwgY29uc3QgVUNoYXIqIGVuZCwgVUNoYXIqIHMsCi0gICAgIH0KLSAgICAgZWxzZSB7Ci0gICAgICAgVUNoYXIgKnEgPSBwICsgcmVnLT5kbWluOwotKwotKyAgICAgIGlmIChxID49IGVuZCkgcmV0dXJuIDA7IC8qIGZhaWwgKi8KLSAgICAgICB3aGlsZSAocCA8IHEpIHAgKz0gZW5jbGVuKHJlZy0+ZW5jLCBwLCBlbmQpOwotICAgICB9Ci0gICB9Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTc2NWJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gYjY5MDM3MWJiZjk3Nzk0YjRhMWQzZjI5NWQ0ZmI5YThiMDVkNDAyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJLLktvc2FrbyIgPGtvc2Frb0Bzb2ZuZWMuY28uanA+Ci1EYXRlOiBXZWQsIDI0IE1heSAyMDE3IDEwOjI3OjA0ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCAjNTkgOiBhY2Nlc3MgdG8gaW52YWxpZCBhZGRyZXNzIGJ5IHJlZy0+ZG1heCB2YWx1ZQotCi0tLS0KLSByZWdleGVjLmMgfCAgIDI3ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotLS0tIGVuZCBvZiBvcmlnaW5hbCBoZWFkZXIKLQotQ1ZFOiBDVkUtMjAxNy05MjI5Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGF1dGhvcl0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL3JlZ2V4ZWMuYyBiL3JlZ2V4ZWMuYwotaW5kZXggNDliY2M1MC4uYzA2MjZlZiAxMDA2NDQKLS0tLSBhL3JlZ2V4ZWMuYwotKysrIGIvcmVnZXhlYy5jCi1AQCAtMzc1NiwxOCArMzc1NiwyNSBAQCBmb3J3YXJkX3NlYXJjaF9yYW5nZShyZWdleF90KiByZWcsIGNvbnN0Ci0gICAgIH0KLSAgICAgZWxzZSB7Ci0gICAgICAgaWYgKHJlZy0+ZG1heCAhPSBPTklHX0lORklOSVRFX0RJU1RBTkNFKSB7Ci0tCSpsb3cgPSBwIC0gcmVnLT5kbWF4OwotLQlpZiAoKmxvdyA+IHMpIHsKLS0JICAqbG93ID0gb25pZ2VuY19nZXRfcmlnaHRfYWRqdXN0X2NoYXJfaGVhZF93aXRoX3ByZXYocmVnLT5lbmMsIHMsCi0tCQkJCQkJCSAgICAgICpsb3csIGVuZCwgKGNvbnN0IFVDaGFyKiogKWxvd19wcmV2KTsKLS0JICBpZiAobG93X3ByZXYgJiYgSVNfTlVMTCgqbG93X3ByZXYpKQotLQkgICAgKmxvd19wcmV2ID0gb25pZ2VuY19nZXRfcHJldl9jaGFyX2hlYWQocmVnLT5lbmMsCi0tCQkJCQkJICAgKHBwcmV2ID8gcHByZXYgOiBzKSwgKmxvdywgZW5kKTsKLSsgICAgICAgIGlmIChwIC0gc3RyIDwgcmVnLT5kbWF4KSB7Ci0rICAgICAgICAgICpsb3cgPSAoVUNoYXIqIClzdHI7Ci0rICAgICAgICAgIGlmIChsb3dfcHJldikKLSsgICAgICAgICAgICAqbG93X3ByZXYgPSBvbmlnZW5jX2dldF9wcmV2X2NoYXJfaGVhZChyZWctPmVuYywgc3RyLCAqbG93LCBlbmQpOwotIAl9Ci0gCWVsc2UgewotLQkgIGlmIChsb3dfcHJldikKLS0JICAgICpsb3dfcHJldiA9IG9uaWdlbmNfZ2V0X3ByZXZfY2hhcl9oZWFkKHJlZy0+ZW5jLAotLQkJCQkJICAgICAgIChwcHJldiA/IHBwcmV2IDogc3RyKSwgKmxvdywgZW5kKTsKLSsgICAgICAgICAgKmxvdyA9IHAgLSByZWctPmRtYXg7Ci0rICAgICAgICAgIGlmICgqbG93ID4gcykgewotKyAgICAgICAgICAgICpsb3cgPSBvbmlnZW5jX2dldF9yaWdodF9hZGp1c3RfY2hhcl9oZWFkX3dpdGhfcHJldihyZWctPmVuYywgcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxvdywgZW5kLCAoY29uc3QgVUNoYXIqKiApbG93X3ByZXYpOwotKyAgICAgICAgICAgIGlmIChsb3dfcHJldiAmJiBJU19OVUxMKCpsb3dfcHJldikpCi0rICAgICAgICAgICAgICAqbG93X3ByZXYgPSBvbmlnZW5jX2dldF9wcmV2X2NoYXJfaGVhZChyZWctPmVuYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcHJldiA/IHBwcmV2IDogcyksICpsb3csIGVuZCk7Ci0rICAgICAgICAgIH0KLSsgICAgICAgICAgZWxzZSB7Ci0rICAgICAgICAgICAgaWYgKGxvd19wcmV2KQotKyAgICAgICAgICAgICAgKmxvd19wcmV2ID0gb25pZ2VuY19nZXRfcHJldl9jaGFyX2hlYWQocmVnLT5lbmMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHByZXYgPyBwcHJldiA6IHN0ciksICpsb3csIGVuZCk7Ci0rICAgICAgICAgIH0KLSAJfQotICAgICAgIH0KLSAgICAgfQotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMjdhYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1yZXF1aXJlIHJ1YnkuaW5jCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctMTQwNjQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3ODJiY2E1NjJlNDc0ZGQyNTk1NmRkMDAxN2Q5MjY3NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMzMwZTEwZDVjYjVlNTNiM2EwMDc4MzI2YzU3MzE4ODhiYjU1ZTMyYzRhYmZlYjI3ZDllN2Y4ZTVkMDAwMjUwIgotCi0jIGl0J3MgdW5rbm93biB0byBjb25maWd1cmUgc2NyaXB0LCBidXQgdGhlbiBwYXNzZWQgdG8gZXh0Y29uZi5yYgotIyBtYXliZSBpdCdzIG5vdCByZWFsbHkgbmVlZGVkIGFzIHdlJ3JlIGhhcmRjb2RpbmcgdGhlIHJlc3VsdCB3aXRoCi0jIDAwMDEtc29ja2V0LWV4dGNvbmYtaGFyZGNvZGUtd2lkZS1nZXRhZGRyLWluZm8tdGVzdC1vdXRjby5wYXRjaAotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUICs9ICItLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kPXllcywgLS13aXRoLXZhbGdyaW5kPW5vLCB2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbZ3BtXSA9ICItLXdpdGgtZ21wPXllcywgLS13aXRoLWdtcD1ubywgZ21wIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICIsLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbywiCi0KLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZGlzYWJsZS12ZXJzaW9uZWQtcGF0aHMgXAotICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgLS1kaXNhYmxlLWR0cmFjZSBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLWVuYWJsZS1sb2FkLXJlbGF0aXZlIFwKLSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXJpLWRvY3MgJHtQTn0tcmRvYyIKLQotU1VNTUFSWV8ke1BOfS1yaS1kb2NzID0gInJpIChSdWJ5IEludGVyYWN0aXZlKSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUnVieSBzdGFuZGFyZCBsaWJyYXJ5IgotUkRFUEVORFNfJHtQTn0tcmktZG9jcyA9ICIke1BOfSIKLUZJTEVTXyR7UE59LXJpLWRvY3MgKz0gIiR7ZGF0YWRpcn0vcmkiCi0KLVNVTU1BUllfJHtQTn0tcmRvYyA9ICJSRG9jIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZyb20gUnVieSBzb3VyY2UiCi1SREVQRU5EU18ke1BOfS1yZG9jID0gIiR7UE59IgotRklMRVNfJHtQTn0tcmRvYyArPSAiJHtsaWJkaXJ9L3J1YnkvKi9yZG9jICR7YmluZGlyfS9yZG9jIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ydWJ5Z2VtcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjUuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYzdmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjUuMC5iYgpAQCAtMCwwICsxLDQ5IEBACityZXF1aXJlIHJ1YnkuaW5jCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI4LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjQ3MTFmODU2ZmUxNGRlMjIyYjlkYTNkM2I4ZWZhODkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDZlNmYzNjMwZjE4ODhlYjY1M2IxNWZhODExZDc3YjViMWRmNmZkN2EzYWY0MzZiMzQzY2ZlNGY0NTAzZjJhYiIKKworIyBpdCdzIHVua25vd24gdG8gY29uZmlndXJlIHNjcmlwdCwgYnV0IHRoZW4gcGFzc2VkIHRvIGV4dGNvbmYucmIKKyMgbWF5YmUgaXQncyBub3QgcmVhbGx5IG5lZWRlZCBhcyB3ZSdyZSBoYXJkY29kaW5nIHRoZSByZXN1bHQgd2l0aAorIyAwMDAxLXNvY2tldC1leHRjb25mLWhhcmRjb2RlLXdpZGUtZ2V0YWRkci1pbmZvLXRlc3Qtb3V0Y28ucGF0Y2gKK1VOS05PV05fQ09ORklHVVJFX1dISVRFTElTVCArPSAiLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZD15ZXMsIC0td2l0aC12YWxncmluZD1ubywgdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW2dtcF0gPSAiLS13aXRoLWdtcD15ZXMsIC0td2l0aC1nbXA9bm8sIGdtcCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLC0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8sIgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKKyAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZGlzYWJsZS1kdHJhY2UgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1yaS1kb2NzICR7UE59LXJkb2MiCisKK1NVTU1BUllfJHtQTn0tcmktZG9jcyA9ICJyaSAoUnVieSBJbnRlcmFjdGl2ZSkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFJ1Ynkgc3RhbmRhcmQgbGlicmFyeSIKK1JERVBFTkRTXyR7UE59LXJpLWRvY3MgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1yaS1kb2NzICs9ICIke2RhdGFkaXJ9L3JpIgorCitTVU1NQVJZXyR7UE59LXJkb2MgPSAiUkRvYyBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmcm9tIFJ1Ynkgc291cmNlIgorUkRFUEVORFNfJHtQTn0tcmRvYyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXJkb2MgKz0gIiR7bGliZGlyfS9ydWJ5LyovcmRvYyAke2JpbmRpcn0vcmRvYyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcnVieWdlbXMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMKaW5kZXggNTBjMGExYS4uMzA3ZmViNyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzCkBAIC00Myw3ICs0Myw3IEBACiAJZmkKIH0KIAotaWYgWyAteiAiJHBpX2RpciIgXTsgdGhlbgoraWYgISBbIC1kICRwaV9kaXIgXTsgdGhlbgogCXJlbW92ZV9yY3NkX2xpbmsKIAlleGl0IDAKIGZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0c18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0c18xLjAuYmIKaW5kZXggMzFjOThlYy4uODViM2ZjOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHNfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzXzEuMC5iYgpAQCAtMSw2ICsxLDYgQEAKIFNVTU1BUlkgPSAiUnVucyBwb3N0aW5zdGFsbCBzY3JpcHRzIG9uIGZpcnN0IGJvb3Qgb2YgdGhlIHRhcmdldCBkZXZpY2UiCiBTRUNUSU9OID0gImRldmVsIgotUFIgPSAicjkiCitQUiA9ICJyMTAiCiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzL2ZpeC1jb21wYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzL2ZpeC1jb21wYXQucGF0Y2gKaW5kZXggZDU0NTE0Ni4uMGNlN2I0ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29scy9maXgtY29tcGF0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHMvZml4LWNvbXBhdC5wYXRjaApAQCAtMjMsNyArMjMsNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIHNxdWFzaGZzLXRvb2xzLm9yaWcvbWtzcXVhc2hmcy5jCiArKysgc3F1YXNoZnMtdG9vbHMvbWtzcXVhc2hmcy5jCi1AQCAtMTI4Niw2ICsxMjg2LDEwIEBAIHZvaWQgd3JpdGVfZGlyKHNxdWFzaGZzX2lub2RlICppbm9kZSwgc3QKK0BAIC0xMjYxLDYgKzEyNjEsMTAgQEAgdm9pZCB3cml0ZV9kaXIoc3F1YXNoZnNfaW5vZGUgKmlub2RlLCBzdAogIAkJZGlyX3NpemUgKyAzLCBkaXJlY3RvcnlfYmxvY2ssIGRpcmVjdG9yeV9vZmZzZXQsIE5VTEwsIE5VTEwsCiAgCQlkaXIsIDApOwogIApAQCAtNTAsOSArNTAsOSBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIHNxdWFzaGZzLXRvb2xzLm9yaWcvdW5zcXVhc2hmcy5jCiArKysgc3F1YXNoZnMtdG9vbHMvdW5zcXVhc2hmcy5jCi1AQCAtMzgsNiArMzgsMTAgQEAKLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+CitAQCAtNDIsNiArNDIsMTAgQEAKKyAjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorICNlbmRpZgogIAogKyNpZm5kZWYgRk5NX0VYVE1BVENICiArI2RlZmluZSBGTk1fRVhUTUFUQ0ggMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29sc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgppbmRleCAwZjk5MTcwLi5hOGJhY2E1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgpAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICAgICBmaWxlOi8vc3F1YXNoZnMtdG9vbHMtNC4zLXN5c21hY3Jvcy5wYXRjaDtzdHJpcGxldmVsPTIgXAogICAgICAgICAgICBmaWxlOi8vZml4LWNvbXBhdC5wYXRjaCBcCiAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIFNSQ19VUklbbHptYS5tZDVzdW1dID0gIjI5ZDVmZmQwM2E1YTNlNTFhZWY2YTc0ZTllYWZiNzU5IgogU1JDX1VSSVtsem1hLnNoYTI1NnN1bV0gPSAiYzkzNWZkMDRkZDhlMGU4YzY4OGEzMDc4ZjM2NzVkNjk5Njc5YTkwYmU4MWMxMjY4NjgzN2UwODgwYWEwZmExZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCmluZGV4IDk3YmNjOTAuLmExMmY0YzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKQEAgLTE0LDIzICsxNCwyMyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2MWQ2NDI1Li42Mzg3YzI0IDEwMDY0NAoraW5kZXggNWYwYWVjNC4uOGVhYWNjNiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNDEsNyArNDEsNyBAQCBBQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoQykgMTk5OS1dY29weXJpZ2h0X3llYXJbIFRoZSBzdHJhY2UgZGV2ZWxvcGVycy5dKQorQEAgLTQyLDcgKzQyLDcgQEAgQUNfQ09QWVJJR0hUKFtDb3B5cmlnaHQgKGMpIDE5OTktXWNvcHlyaWdodF95ZWFyWyBUaGUgc3RyYWNlIGRldmVsb3BlcnMuXSkKICBBQ19DT05GSUdfU1JDRElSKFtzdHJhY2UuY10pCiAgQUNfQ09ORklHX0FVWF9ESVIoWy5dKQogIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0tQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBub3N0ZGluYyBkaXN0LXh6IHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0c10pCi0rQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBub3N0ZGluYyBkaXN0LXh6IHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQotIEFNX0VYVFJBX1JFQ1VSU0lWRV9UQVJHRVRTKFtjaGVjay12YWxncmluZF0pCistQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBub3N0ZGluYyBkaXN0LXh6IHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0cyAxLjEzXSkKKytBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIG5vc3RkaW5jIGRpc3QteHogc2lsZW50LXJ1bGVzIHNlcmlhbC10ZXN0cyAxLjEzXSkKICBBTV9NQUlOVEFJTkVSX01PREUKICBBQ19DQU5PTklDQUxfSE9TVAorIAogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDVhYTdmODkuLmE1NWEzNTUgMTAwNjQ0CitpbmRleCBiNGJhMjJhLi41ODM2NDM4IDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMzc5LDMgKzM3OSwyMSBAQCBjbGVhbi1sb2NhbC1jaGVjazoKK0BAIC00MDgsMyArNDA4LDIxIEBAIEJVSUxUX1NPVVJDRVMgPSBrc3lzZW50LmgKICBDTEVBTkZJTEVTID0ga3N5c2VudC5oCiAgCiAgaW5jbHVkZSAuLi9zY25vLmFtCkBAIC01Miw2ICs1MiwzIEBACiArCQlzZWQgLWkgLWUgJ3MvJCR7c3JjZGlyPS59Ly4vZycgJChERVNURElSKS8kKFRFU1RESVIpLyQkZmlsZTsgXAogKwlkb25lCiArCWZvciBpIGluIG5ldCBzY21fcmlnaHRzLWZkIHJ0X3NpZ2FjdGlvbjsgZG8gc2VkIC1pIC1lICdzLyQkc3JjZGlyLy4vZycgJChERVNURElSKS8kKFRFU1RESVIpLyQkaS50ZXN0OyBkb25lCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4xOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjI4OTFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0gY2FsbCB0cmFjaW5nIHRvb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vc3RyYWNlLnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjEzMmI0ZDJhZGZjY2M2M2RhNDEzOWE2MDkzNjc3MTEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3N0cmFjZS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2hlbi11c2luZy1ub24tZ2xpYmMtbGliYy1pbXBsZW1lbnRhdGlvbi1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21pcHMtU0lHRU1ULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fwcy1hYmJyZXYuYXdrLWZpeC1nYXdrLXMtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNTc5YjMyNjZiYjA5NmNlYmFlZmJlMmNkYjFhM2E3OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4OWFkODg3YzFlNjIyNmJkYmNhOGRhMzFkNTg5Y2FkZWE0YmUwNzQ0YjE0MmViNDdiNzY4MDg2YzkzN2ZjYTA4IgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBibHVldG9vdGgKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCi0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sJHtCTFVFWn0iCi1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKLQotVEVTVERJUiA9ICJ0ZXN0cyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBXZSBkb24ndCBzaGlwIHN0cmFjZS1ncmFwaCBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgcGVybAotCXJtICR7RH0ke2JpbmRpcn0vc3RyYWNlLWdyYXBoCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KLQlzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nIFwKLQkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0JICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLQkgICAgLWUgJy9eREVCX0NIQU5HRUxPR1RJTUUvZCcgXAotCSAgICAtZSAnL15SUE1fQ0hBTkdFTE9HVElNRS9kJyBcCi0JJHtEfS8ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1UT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjljMTJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMjAuYmIKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJTeXN0ZW0gY2FsbCB0cmFjaW5nIHRvb2wiCitIT01FUEFHRSA9ICJodHRwOi8vc3RyYWNlLmlvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMTMyYjRkMmFkZmNjYzYzZGE0MTM5YTYwOTM2NzcxMSIKKworU1JDX1VSSSA9ICJodHRwczovL3N0cmFjZS5pby9maWxlcy8ke1BWfS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2hlbi11c2luZy1ub24tZ2xpYmMtbGliYy1pbXBsZW1lbnRhdGlvbi1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pcHMtU0lHRU1ULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fwcy1hYmJyZXYuYXdrLWZpeC1nYXdrLXMtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMjI3MWFiMGZhYzQ5ZWJlZTljYmQ3ZjM0NjkyMjdjYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YmYzMTQ4ZGQxNzMwNmE0MjU2NmY3ZGExNzM2OGZkZDc4MWFmYTE0N2RiMDVlYTYzYTRjYTJiNTBmNThjNTIzIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdCBibHVldG9vdGgKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCisiCisKK1BBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sJHtCTFVFWn0iCitQQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKKworVEVTVERJUiA9ICJ0ZXN0cyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBXZSBkb24ndCBzaGlwIHN0cmFjZS1ncmFwaCBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgcGVybAorCXJtICR7RH0ke2JpbmRpcn0vc3RyYWNlLWdyYXBoCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KKwlzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkgICAgLWUgJy9eREVCX0NIQU5HRUxPR1RJTUUvZCcgXAorCSAgICAtZSAnL15SUE1fQ0hBTkdFTE9HVElNRS9kJyBcCisJJHtEfS8ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitUT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24vQ1ZFLTIwMTctOTgwMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uL0NWRS0yMDE3LTk4MDAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1OTljMmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24vQ1ZFLTIwMTctOTgwMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXIxODA0NjkxIHwgZGFuaWVsc2ggfCAyMDE3LTA4LTEwIDExOjE0OjEzIC0wNzAwIChUaHUsIDEwIEF1ZyAyMDE3KSB8IDE4IGxpbmVzCi0KLUZpeCBDVkUtMjAxNy05ODAwLgotCi1TZWU6IGh0dHBzOi8vc3VidmVyc2lvbi5hcGFjaGUub3JnL3NlY3VyaXR5L0NWRS0yMDE3LTA4MDAtYWR2aXNvcnkudHh0Ci0KLSogc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2NsaWVudC5jCi0gIChzdm5fY3R5cGUuaCk6IEluY2x1ZGUuCi0gIChmaW5kX3R1bm5lbF9hZ2VudCk6IFBhc3MgYSAiLS0iIGVuZC1vZi1vcHRpb25zIGd1YXJkIHRvIHNzaC4KLSAgICBFeHBlY3QgdGhlICdob3N0aW5mbycgcGFyYW1ldGVyIHRvIGJlIFVSSS1kZWNvZGVkLgotICAoaXNfdmFsaWRfaG9zdGluZm8pOiBOZXcuCi0gIChyYV9zdm5fb3Blbik6IFZhbGlkYXRlIHRoZSBob3N0bmFtZSBiZWZvcmUgdXNpbmcgaXQuCi0KLSogc3VidmVyc2lvbi9saWJzdm5fc3Vici9jb25maWdfZmlsZS5jCi0gIChzdm5fY29uZmlnX2Vuc3VyZSk6IFVwZGF0ZSB0aGUgZXhhbXBsZSBjb25maWd1cmF0aW9uIGxpa2V3aXNlLgotCi1QYXRjaCBieTogcGhpbGlwCi1SZXZpZXcgYnk6IGRhbmllbHNoCi0gICAgICAgICAgIHN0c3AKLSAgICAgICAgICAgYXN0aWVnZXIgKGVhcmxpZXIgdmVyc2lvbikKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yz92aWV3PXJldmlzaW9uJmFtcDtzb3J0Ynk9cmV2JmFtcDtyZXZpc2lvbj0xODA0NjkxCi0KLUNWRTogQ1ZFLTIwMTctOTgwMAotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotSW5kZXg6IHN1YnZlcnNpb24vbGlic3ZuX3N1YnIvY29uZmlnX2ZpbGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN1YnZlcnNpb24vbGlic3ZuX3N1YnIvY29uZmlnX2ZpbGUuYwkocmV2aXNpb24gMTgwNDY5MCkKLSsrKyBzdWJ2ZXJzaW9uL2xpYnN2bl9zdWJyL2NvbmZpZ19maWxlLmMJKHJldmlzaW9uIDE4MDQ2OTEpCi1AQCAtMTQ0OCwxMiArMTQ0OCwxMiBAQAotICAgICAgICAgIiMjIyBwYXNzZWQgdG8gdGhlIHR1bm5lbCBhZ2VudCBhcyA8dXNlcj5APGhvc3RuYW1lPi4pICBJZiB0aGUiICAgICAgTkwKLSAgICAgICAgICIjIyMgYnVpbHQtaW4gc3NoIHNjaGVtZSB3ZXJlIG5vdCBwcmVkZWZpbmVkLCBpdCBjb3VsZCBiZSBkZWZpbmVkIiAgIE5MCi0gICAgICAgICAiIyMjIGFzOiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAotLSAgICAgICAgIiMgc3NoID0gJFNWTl9TU0ggc3NoIC1xIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkwKLSsgICAgICAgICIjIHNzaCA9ICRTVk5fU1NIIHNzaCAtcSAtLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCi0gICAgICAgICAiIyMjIElmIHlvdSB3YW50ZWQgdG8gZGVmaW5lIGEgbmV3ICdyc2gnIHNjaGVtZSwgdG8gYmUgdXNlZCB3aXRoIiAgICBOTAotICAgICAgICAgIiMjIyAnc3ZuK3JzaDonIFVSTHMsIHlvdSBjb3VsZCBkbyBzbyBhcyBmb2xsb3dzOiIgICAgICAgICAgICAgICAgICAgTkwKLS0gICAgICAgICIjIHJzaCA9IHJzaCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCi0rICAgICAgICAiIyByc2ggPSByc2ggLS0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAotICAgICAgICAgIiMjIyBPciwgaWYgeW91IHdhbnRlZCB0byBzcGVjaWZ5IGEgZnVsbCBwYXRoIGFuZCBhcmd1bWVudHM6IiAgICAgICAgTkwKLS0gICAgICAgICIjIHJzaCA9IC9wYXRoL3RvL3JzaCAtbCBteXVzZXJuYW1lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCi0rICAgICAgICAiIyByc2ggPSAvcGF0aC90by9yc2ggLWwgbXl1c2VybmFtZSAtLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAotICAgICAgICAgIiMjIyBPbiBXaW5kb3dzLCBpZiB5b3UgYXJlIHNwZWNpZnlpbmcgYSBmdWxsIHBhdGggdG8gYSBjb21tYW5kLCIgICAgTkwKLSAgICAgICAgICIjIyMgdXNlIGEgZm9yd2FyZCBzbGFzaCAoLykgb3IgYSBwYWlyZWQgYmFja3NsYXNoIChcXFxcKSBhcyB0aGUiICAgIE5MCi0gICAgICAgICAiIyMjIHBhdGggc2VwYXJhdG9yLiAgQSBzaW5nbGUgYmFja3NsYXNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhbiIgICAgICBOTAotSW5kZXg6IHN1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9jbGllbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9jbGllbnQuYwkocmV2aXNpb24gMTgwNDY5MCkKLSsrKyBzdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vY2xpZW50LmMJKHJldmlzaW9uIDE4MDQ2OTEpCi1AQCAtNDYsNiArNDYsNyBAQAotICNpbmNsdWRlICJzdm5fcHJvcHMuaCIKLSAjaW5jbHVkZSAic3ZuX21lcmdlaW5mby5oIgotICNpbmNsdWRlICJzdm5fdmVyc2lvbi5oIgotKyNpbmNsdWRlICJzdm5fY3R5cGUuaCIKLSAKLSAjaW5jbHVkZSAic3ZuX3ByaXZhdGVfY29uZmlnLmgiCi0gCi1AQCAtMzk4LDcgKzM5OSw3IEBACi0gICAgICAgICogdmVyc2lvbnMgaGF2ZSBpdCB0b28uIElmIHRoZSB1c2VyIGlzIHVzaW5nIHNvbWUgb3RoZXIgc3NoCi0gICAgICAgICogaW1wbGVtZW50YXRpb24gdGhhdCBkb2Vzbid0IGFjY2VwdCBpdCwgdGhleSBjYW4gb3ZlcnJpZGUgaXQKLSAgICAgICAgKiBpbiB0aGUgW3R1bm5lbHNdIHNlY3Rpb24gb2YgdGhlIGNvbmZpZy4gKi8KLS0gICAgICB2YWwgPSAiJFNWTl9TU0ggc3NoIC1xIjsKLSsgICAgICB2YWwgPSAiJFNWTl9TU0ggc3NoIC1xIC0tIjsKLSAgICAgfQotIAotICAgaWYgKCF2YWwgfHwgISp2YWwpCi1AQCAtNDQzLDcgKzQ0NCw3IEBACi0gICBmb3IgKG4gPSAwOyBjbWRfYXJndltuXSAhPSBOVUxMOyBuKyspCi0gICAgIGFyZ3Zbbl0gPSBjbWRfYXJndltuXTsKLSAKLS0gIGFyZ3ZbbisrXSA9IHN2bl9wYXRoX3VyaV9kZWNvZGUoaG9zdGluZm8sIHBvb2wpOwotKyAgYXJndltuKytdID0gaG9zdGluZm87Ci0gICBhcmd2W24rK10gPSAic3Zuc2VydmUiOwotICAgYXJndltuKytdID0gIi10IjsKLSAgIGFyZ3Zbbl0gPSBOVUxMOwotQEAgLTgxMSw3ICs4MTIsMzMgQEAKLSB9Ci0gCi0gCi0rLyogQSBzaW1wbGUgd2hpdGVsaXN0IHRvIGVuc3VyZSB0aGUgZm9sbG93aW5nIGFyZSB2YWxpZDoKLSsgKiAgIHVzZXJAc2VydmVyCi0rICogICBbOjoxXToyMgotKyAqICAgc2VydmVyLW5hbWUKLSsgKiAgIHNlcnZlcl9uYW1lCi0rICogICAxMjcuMC4wLjEKLSsgKiB3aXRoIGFuIGV4dHJhIHJlc3RyaWN0aW9uIHRoYXQgYSBsZWFkaW5nICctJyBpcyBpbnZhbGlkLgotKyAqLwotK3N0YXRpYyBzdm5fYm9vbGVhbl90Ci0raXNfdmFsaWRfaG9zdGluZm8oY29uc3QgY2hhciAqaG9zdGluZm8pCi0rewotKyAgY29uc3QgY2hhciAqcCA9IGhvc3RpbmZvOwotIAotKyAgaWYgKHBbMF0gPT0gJy0nKQotKyAgICByZXR1cm4gRkFMU0U7Ci0rCi0rICB3aGlsZSAoKnApCi0rICAgIHsKLSsgICAgICBpZiAoIXN2bl9jdHlwZV9pc2FsbnVtKCpwKSAmJiAhc3RyY2hyKCI6Li1fW11AIiwgKnApKQotKyAgICAgICAgcmV0dXJuIEZBTFNFOwotKwotKyAgICAgICsrcDsKLSsgICAgfQotKwotKyAgcmV0dXJuIFRSVUU7Ci0rfQotKwotIHN0YXRpYyBzdm5fZXJyb3JfdCAqcmFfc3ZuX29wZW4oc3ZuX3JhX3Nlc3Npb25fdCAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipjb3JyZWN0ZWRfdXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXJsLAotQEAgLTg0NCw4ICs4NzEsMTggQEAKLSAgICAgICAgICAgfHwgKGNhbGxiYWNrcy0+Y2hlY2tfdHVubmVsX2Z1bmMgJiYgY2FsbGJhY2tzLT5vcGVuX3R1bm5lbF9mdW5jCi0gICAgICAgICAgICAgICAmJiAhY2FsbGJhY2tzLT5jaGVja190dW5uZWxfZnVuYyhjYWxsYmFja3MtPnR1bm5lbF9iYXRvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1bm5lbCkpKSkKLS0gICAgU1ZOX0VSUihmaW5kX3R1bm5lbF9hZ2VudCh0dW5uZWwsIHVyaS5ob3N0aW5mbywgJnR1bm5lbF9hcmd2LCBjb25maWcsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3Bvb2wpKTsKLSsgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKmRlY29kZWRfaG9zdGluZm87Ci0rCi0rICAgICAgZGVjb2RlZF9ob3N0aW5mbyA9IHN2bl9wYXRoX3VyaV9kZWNvZGUodXJpLmhvc3RpbmZvLCByZXN1bHRfcG9vbCk7Ci0rCi0rICAgICAgaWYgKCFpc192YWxpZF9ob3N0aW5mbyhkZWNvZGVkX2hvc3RpbmZvKSkKLSsgICAgICAgIHJldHVybiBzdm5fZXJyb3JfY3JlYXRlZihTVk5fRVJSX0JBRF9VUkwsIE5VTEwsIF8oIkludmFsaWQgaG9zdCAnJXMnIiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLmhvc3RpbmZvKTsKLSsKLSsgICAgICBTVk5fRVJSKGZpbmRfdHVubmVsX2FnZW50KHR1bm5lbCwgZGVjb2RlZF9ob3N0aW5mbywgJnR1bm5lbF9hcmd2LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLCByZXN1bHRfcG9vbCkpOwotKyAgICB9Ci0gICBlbHNlCi0gICAgIHR1bm5lbF9hcmd2ID0gTlVMTDsKLSAKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzJlZGViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotU1VNTUFSWSA9ICJTdWJ2ZXJzaW9uIChzdm4pIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gY2xpZW50IgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1ERVBFTkRTID0gImFwci11dGlsIHNlcmYgc3FsaXRlMyBmaWxlIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gInNlcmYiCi1MSUNFTlNFID0gIkFwYWNoZS0yIgotSE9NRVBBR0UgPSAiaHR0cDovL3N1YnZlcnNpb24udGlncmlzLm9yZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWluaGVyaXQgZ2V0dGV4dCBwa2djb25maWcKLQotU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX21hY29zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcmYubTQtUmVnZXgtbW9kaWZpZWQtdG8tYWxsb3ctRC1pbi1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ0b29sLW5hbWUtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcmZtYWNyby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05ODAwLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImYyN2UwMDMzOGQ0YTlmN2Y5YWVjOWQ0YTNmOGI0MThiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiY2JjNTFmYjYzNDA4MmYwMDkxMjFmMmNiNjQzNTBjZTMyMTQ2NjEyNzg3ZmZiMGY3Y2VkMzUxYWFjYWFlMTkiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWFmODFhZTQ5YmEzNTllNzA2MjZjMDVlOWJmMzEzNzA5IgotCi1QQUNLQUdFQ09ORklHW3Nhc2xdID0gIi0td2l0aC1zYXNsLC0td2l0aG91dC1zYXNsLGN5cnVzLXNhc2wiCi1QQUNLQUdFQ09ORklHW2dub21lLWtleXJpbmddID0gIi0td2l0aC1nbm9tZS1rZXlyaW5nLC0td2l0aG91dC1nbm9tZS1rZXlyaW5nLGdsaWItMi4wIGdub21lLWtleXJpbmciCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1iZXJrZWxleS1kYiAtLXdpdGhvdXQtYXB4cyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXN3aWcgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUta2V5Y2hhaW4gXAotICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIgotCi1pbmhlcml0IGF1dG90b29scwotCi1leHBvcnQgTERGTEFHUyArPSAiIC1MJHtTVEFHSU5HX0xJQkRJUn0gIgotQ1BQRkxBR1MgKz0gIi1QIgotQlVJTERfQ1BQRkxBR1MgKz0gIi1QIgotCi1hY3BhdGhzID0gIi1JIGJ1aWxkLyAtSSBidWlsZC9hYy1tYWNyb3MvIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9saWJ0b29sCi0Jcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vYnVpbGQvbHRtYWluLnNoICR7U30vYnVpbGQvbHRvcHRpb25zLm00ICR7U30vYnVpbGQvbHRzdWdhci5tNCAke1N9L2J1aWxkL2x0dmVyc2lvbi5tNCAke1N9L2J1aWxkL2x0fm9ic29sZXRlLm00Ci0Jcm0gLWYgJHtTfS9hY2xvY2FsLm00Ci0Jc2VkIC1pIC1lICdzOndpdGhfc2FzbD0iL3Vzci9sb2NhbCI6d2l0aF9zYXNsPSIke1NUQUdJTkdfRElSfSI6JyAke1N9L2J1aWxkL2FjLW1hY3Jvcy9zYXNsLm00Ci19Ci0KLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfbG9jYWwvbGlic3ZuX3JhX2xvY2FsLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCAvdXNyL2Jpbi9sZDogY2Fubm90IGZpbmQgLWxzdm5fZGVsdGEtMXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2xpYnN2bl9yYV9zdm4tMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3NlcmYvbGlic3ZuX3JhX3NlcmYtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogZXJyb3I6IHJlbGluayBgbGlic3ZuX3JhX3NlcmYtMS5sYScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdAotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAuLi8uLi9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9zdWJ2ZXJzaW9uLTEuOC45L2J1aWxkLW91dHB1dHMubWs6MTA5MDogcmVjaXBlIGZvciB0YXJnZXQgJ2luc3RhbGwtc2VyZi1saWInIGZhaWxlZAotI3wgbWFrZTogKioqIFtpbnN0YWxsLXNlcmYtbGliXSBFcnJvciAxCi1QQVJBTExFTF9NQUtFSU5TVCA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NzM1ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNy5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIlN1YnZlcnNpb24gKHN2bikgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBjbGllbnQiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0RFUEVORFMgPSAiYXByLXV0aWwgc2VyZiBzcWxpdGUzIGZpbGUiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gPSAic2VyZiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIiCitIT01FUEFHRSA9ICJodHRwOi8vc3VidmVyc2lvbi50aWdyaXMub3JnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBnZXR0ZXh0IHBrZ2NvbmZpZworCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbWFjb3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VyZi5tNC1SZWdleC1tb2RpZmllZC10by1hbGxvdy1ELWluLXBhdGhzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnRvb2wtbmFtZS1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VyZm1hY3JvLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDViMGM2Nzc2ODEwNzM5MjBmOTM4YzFmMzIyZTBiZTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzNiMTE4MzMzY2UxMmU1MDFkNTA5ZTY2YmIwYTQ3YmNjMzRkMDUzOTkwYWNhYjQ1NTU5NDMxYWMzZTQ5MTYyMyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWY4MWFlNDliYTM1OWU3MDYyNmMwNWU5YmYzMTM3MDkiCisKK1BBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKK1BBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIC0td2l0aG91dC1hcHhzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3dpZyAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1rZXljaGFpbiBcCisgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9SVUJZPW5vbmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2V4cG9ydCBMREZMQUdTICs9ICIgLUwke1NUQUdJTkdfTElCRElSfSAiCitDUFBGTEFHUyArPSAiLVAiCitCVUlMRF9DUFBGTEFHUyArPSAiLVAiCisKK2FjcGF0aHMgPSAiLUkgYnVpbGQvIC1JIGJ1aWxkL2FjLW1hY3Jvcy8iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlybSAtZiAke1N9L2xpYnRvb2wKKwlybSAtZiAke1N9L2J1aWxkL2xpYnRvb2wubTQgJHtTfS9idWlsZC9sdG1haW4uc2ggJHtTfS9idWlsZC9sdG9wdGlvbnMubTQgJHtTfS9idWlsZC9sdHN1Z2FyLm00ICR7U30vYnVpbGQvbHR2ZXJzaW9uLm00ICR7U30vYnVpbGQvbHR+b2Jzb2xldGUubTQKKwlybSAtZiAke1N9L2FjbG9jYWwubTQKKwlzZWQgLWkgLWUgJ3M6d2l0aF9zYXNsPSIvdXNyL2xvY2FsIjp3aXRoX3Nhc2w9IiR7U1RBR0lOR19ESVJ9IjonICR7U30vYnVpbGQvYWMtbWFjcm9zL3Nhc2wubTQKK30KKworI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9sb2NhbC9saWJzdm5fcmFfbG9jYWwtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IC91c3IvYmluL2xkOiBjYW5ub3QgZmluZCAtbHN2bl9kZWx0YS0xfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1c3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vbGlic3ZuX3JhX3N2bi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc2VyZi9saWJzdm5fcmFfc2VyZi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiBlcnJvcjogcmVsaW5rIGBsaWJzdm5fcmFfc2VyZi0xLmxhJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0CisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC4uLy4uL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKKyN8IC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL3N1YnZlcnNpb24tMS44LjkvYnVpbGQtb3V0cHV0cy5tazoxMDkwOiByZWNpcGUgZm9yIHRhcmdldCAnaW5zdGFsbC1zZXJmLWxpYicgZmFpbGVkCisjfCBtYWtlOiAqKiogW2luc3RhbGwtc2VyZi1saWJdIEVycm9yIDEKK1BBUkFMTEVMX01BS0VJTlNUID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnLmluYwppbmRleCA4Y2I2ZmJkLi5iZjYxYjAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcuaW5jCkBAIC0xMSw3ICsxMSw3IEBACiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgogCi1pbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlCitpbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlIHBrZ2NvbmZpZwogCiBFWFRSQV9PRUNPTkYgPSAiIFwKICAgICAtLXdpdGgtcHl0aG9uMz0ke1BZVEhPTn0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcvMDAwMS1BZGQtTm9kZS03LngtYWthLVY4LTUuMi1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcvMDAwMS1BZGQtTm9kZS03LngtYWthLVY4LTUuMi1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4NWMzOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy8wMDAxLUFkZC1Ob2RlLTcueC1ha2EtVjgtNS4yLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwzMzAgQEAKK0Zyb20gMWE1YWFkY2Q2NmU4NWM2M2QyMjhiZmQ4MTFhNTIxZDYxN2MyMmEzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdHJpY2sgU2NobmVpZGVyIDxwYXRyaWNrLnNjaG5laWRlckBtZWV0bm93LmV1PgorRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAxNTowMjo1MyArMDIwMAorU3ViamVjdDogW1BBVENIXSBBZGQgTm9kZSA3LnggYWthIFY4IDUuMisgc3VwcG9ydAorCisqIFVzZSBXZWFrQ2FsbGJhY2tJbmZvIGluc3RlYWQgb2YgV2Vha0NhbGxiYWNrRGF0YQorKiBVc2UgR2V0UHJpdmF0ZSBpbnN0ZWFkIG9mIEdldEhpZGRlblZhbHVlCisqIEFkb3B0ZWQgbmV3IHNpZ25hdHVyZSBmb3IgU2V0V2VhayB0byBzdXBwb3J0IGRlc3RydWN0b3IgY2FsbGluZworKiBTZXRBY2Nlc3NvciBkZXByZWNhdGlvbiBmaXhlZAorKiBQcm9wZXIgdmVyc2lvbiBjaGVja3Mgd2hlcmUgYXBwbGljYWJsZQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3N3aWcvc3dpZy9wdWxsLzk2OF0KKworU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CistLS0KKyBMaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0Y29kZS5zd2cgICAgfCAyNyArKysrKysrKysrKysrKysrKy0tLS0tCisgTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGhlbHBlcnMuc3dnIHwgMjkgKysrKysrKysrKysrKysrKysrKysrLS0tCisgTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGluaXQuc3dnICAgIHwgMTYgKysrKysrKysrKystLQorIExpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRydW4uc3dnICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0Y29kZS5zd2cgYi9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0Y29kZS5zd2cKK2luZGV4IGZiN2Q1NWMuLmI4YzUwODkgMTAwNjQ0CistLS0gYS9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0Y29kZS5zd2cKKysrKyBiL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRjb2RlLnN3ZworQEAgLTEzMywxMCArMTMzLDEzIEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2CisgICBTV0lHVjhfUHJveHkgKnByb3h5ID0gc3RhdGljX2Nhc3Q8U1dJR1Y4X1Byb3h5ICo+KHBhcmFtZXRlcik7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+ICpvYmplY3QsIFNXSUdWOF9Qcm94eSAqcHJveHkpIHsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0YSkgeworICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IGRhdGEuR2V0VmFsdWUoKTsKKyAgIFNXSUdWOF9Qcm94eSAqcHJveHkgPSBkYXRhLkdldFBhcmFtZXRlcigpOworKyNlbHNlCisrICBzdGF0aWMgdm9pZCAkanN3cmFwcGVyKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tJbmZvPFNXSUdWOF9Qcm94eT4gJmRhdGEpIHsKKysgIFNXSUdWOF9Qcm94eSAqcHJveHkgPSBkYXRhLkdldFBhcmFtZXRlcigpOworICNlbmRpZgorIAorICAgaWYocHJveHktPnN3aWdDTWVtT3duICYmIHByb3h5LT5zd2lnQ09iamVjdCkgeworQEAgLTE0Nyw3ICsxNTAsOSBAQCBzdGF0aWMgdm9pZCAkanN3cmFwcGVyKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdAorICAgfQorICAgZGVsZXRlIHByb3h5OworIAorKyNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyAgIG9iamVjdC5DbGVhcigpOworKyNlbmRpZgorICAgCisgI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgMHgwMzE3MTApCisgICBvYmplY3QuRGlzcG9zZSgpOworQEAgLTE1NSw3ICsxNjAsNyBAQCBzdGF0aWMgdm9pZCAkanN3cmFwcGVyKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdAorICAgb2JqZWN0LkRpc3Bvc2UoaXNvbGF0ZSk7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCAweDAzMjEwMCkKKyAgIG9iamVjdC0+RGlzcG9zZShpc29sYXRlKTsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgb2JqZWN0LT5EaXNwb3NlKCk7CisgI2VuZGlmCisgfQorQEAgLTE3NywxMCArMTgyLDEzIEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2CisgICBTV0lHVjhfUHJveHkgKnByb3h5ID0gc3RhdGljX2Nhc3Q8U1dJR1Y4X1Byb3h5ICo+KHBhcmFtZXRlcik7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PCB2ODo6T2JqZWN0PiAqb2JqZWN0LCBTV0lHVjhfUHJveHkgKnByb3h5KSB7CistI2Vsc2UKKysjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyBzdGF0aWMgdm9pZCAkanN3cmFwcGVyKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdGEpIHsKKyAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSBkYXRhLkdldFZhbHVlKCk7CisgICBTV0lHVjhfUHJveHkgKnByb3h5ID0gZGF0YS5HZXRQYXJhbWV0ZXIoKTsKKysjZWxzZQorK3N0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0luZm88U1dJR1Y4X1Byb3h5PiAmZGF0YSkgeworKyAgU1dJR1Y4X1Byb3h5ICpwcm94eSA9IGRhdGEuR2V0UGFyYW1ldGVyKCk7CisgI2VuZGlmCisgCisgICBpZihwcm94eS0+c3dpZ0NNZW1Pd24gJiYgcHJveHktPnN3aWdDT2JqZWN0KSB7CitAQCAtMTk3LDcgKzIwNSw3IEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0CisgICBvYmplY3QtPkRpc3Bvc2UoaXNvbGF0ZSk7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorICAgb2JqZWN0LT5EaXNwb3NlKCk7CistI2Vsc2UKKysjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyAgIG9iamVjdC5DbGVhcigpOworICNlbmRpZgorIH0KK0BAIC0yMTEsNyArMjE5LDExIEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0CisgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAlZnJhZ21lbnQoImpzX2dldHRlciIsICJ0ZW1wbGF0ZXMiKQorICV7CisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIHN0YXRpYyBTd2lnVjhSZXR1cm5WYWx1ZSAkanN3cmFwcGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBwcm9wZXJ0eSwgY29uc3QgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm8gJmluZm8pIHsKKysjZWxzZQorK3N0YXRpYyBTd2lnVjhSZXR1cm5WYWx1ZSAkanN3cmFwcGVyKHY4OjpMb2NhbDx2ODo6TmFtZT4gcHJvcGVydHksIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvICZpbmZvKSB7CisrI2VuZGlmCisgICBTV0lHVjhfSEFORExFU0NPUEUoKTsKKyAgIAorICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzcmVzdWx0OworQEAgLTIzMyw4ICsyNDUsMTEgQEAgZmFpbDoKKyAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICVmcmFnbWVudCgianNfc2V0dGVyIiwgInRlbXBsYXRlcyIpCisgJXsKKy1zdGF0aWMgdm9pZCAkanN3cmFwcGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCistICBjb25zdCBTd2lnVjhQcm9wZXJ0eUNhbGxiYWNrSW5mb1ZvaWQgJmluZm8pIHsKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisrc3RhdGljIHZvaWQgJGpzd3JhcHBlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHksIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCBTd2lnVjhQcm9wZXJ0eUNhbGxiYWNrSW5mb1ZvaWQgJmluZm8pIHsKKysjZWxzZQorK3N0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6OkxvY2FsPHY4OjpOYW1lPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZCAmaW5mbykgeworKyNlbmRpZgorICAgU1dJR1Y4X0hBTkRMRVNDT1BFKCk7CisgICAKKyAgICRqc2xvY2FscworZGlmZiAtLWdpdCBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRoZWxwZXJzLnN3ZyBiL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRoZWxwZXJzLnN3ZworaW5kZXggMDkxNDY3ZC4uNzQ2MTA3OSAxMDA2NDQKKy0tLSBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRoZWxwZXJzLnN3ZworKysrIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGhlbHBlcnMuc3dnCitAQCAtNiwxMSArNiwxNiBAQCB0eXBlZGVmIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2sgIFN3aWdWOEZ1bmN0aW9uQ2FsbGJhY2s7CisgdHlwZWRlZiB2ODo6QWNjZXNzb3JHZXR0ZXIgICAgICBTd2lnVjhBY2Nlc3NvckdldHRlckNhbGxiYWNrOworIHR5cGVkZWYgdjg6OkFjY2Vzc29yU2V0dGVyICAgICAgU3dpZ1Y4QWNjZXNzb3JTZXR0ZXJDYWxsYmFjazsKKyB0eXBlZGVmIHY4OjpBY2Nlc3NvckluZm8gICAgICAgIFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZDsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIHR5cGVkZWYgdjg6OkZ1bmN0aW9uQ2FsbGJhY2sgICAgICAgICAgICBTd2lnVjhGdW5jdGlvbkNhbGxiYWNrOworIHR5cGVkZWYgdjg6OkFjY2Vzc29yR2V0dGVyQ2FsbGJhY2sgICAgICBTd2lnVjhBY2Nlc3NvckdldHRlckNhbGxiYWNrOworIHR5cGVkZWYgdjg6OkFjY2Vzc29yU2V0dGVyQ2FsbGJhY2sgICAgICBTd2lnVjhBY2Nlc3NvclNldHRlckNhbGxiYWNrOworIHR5cGVkZWYgdjg6OlByb3BlcnR5Q2FsbGJhY2tJbmZvPHZvaWQ+ICBTd2lnVjhQcm9wZXJ0eUNhbGxiYWNrSW5mb1ZvaWQ7CisrI2Vsc2UKKyt0eXBlZGVmIHY4OjpGdW5jdGlvbkNhbGxiYWNrICAgICAgICAgICAgU3dpZ1Y4RnVuY3Rpb25DYWxsYmFjazsKKyt0eXBlZGVmIHY4OjpBY2Nlc3Nvck5hbWVHZXR0ZXJDYWxsYmFjayAgU3dpZ1Y4QWNjZXNzb3JHZXR0ZXJDYWxsYmFjazsKKyt0eXBlZGVmIHY4OjpBY2Nlc3Nvck5hbWVTZXR0ZXJDYWxsYmFjayAgU3dpZ1Y4QWNjZXNzb3JTZXR0ZXJDYWxsYmFjazsKKyt0eXBlZGVmIHY4OjpQcm9wZXJ0eUNhbGxiYWNrSW5mbzx2b2lkPiAgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm9Wb2lkOworICNlbmRpZgorIAorIC8qKgorQEAgLTY1LDE4ICs3MCwzNiBAQCBTV0lHUlVOVElNRSB2b2lkIFNXSUdWOF9BZGRTdGF0aWNGdW5jdGlvbih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iaiwgY29uc3QgY2hhcgorICAqLworIFNXSUdSVU5USU1FIHZvaWQgU1dJR1Y4X0FkZFN0YXRpY1ZhcmlhYmxlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqLCBjb25zdCBjaGFyKiBzeW1ib2wsCisgICBTd2lnVjhBY2Nlc3NvckdldHRlckNhbGxiYWNrIGdldHRlciwgU3dpZ1Y4QWNjZXNzb3JTZXR0ZXJDYWxsYmFjayBzZXR0ZXIpIHsKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBvYmotPlNldEFjY2Vzc29yKFNXSUdWOF9TWU1CT0xfTkVXKHN5bWJvbCksIGdldHRlciwgc2V0dGVyKTsKKysjZWxzZQorKyAgb2JqLT5TZXRBY2Nlc3NvcihTV0lHVjhfQ1VSUkVOVF9DT05URVhUKCksIFNXSUdWOF9TWU1CT0xfTkVXKHN5bWJvbCksIGdldHRlciwgc2V0dGVyKTsKKysjZW5kaWYKKyB9CisgCistU1dJR1JVTlRJTUUgdm9pZCBKU192ZXRvX3NldF92YXJpYWJsZSh2ODo6TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHksIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAorLSAgY29uc3QgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm9Wb2lkJiBpbmZvKQorKyNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKytTV0lHUlVOVElNRSB2b2lkIEpTX3ZldG9fc2V0X3ZhcmlhYmxlKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZCYgaW5mbykKKysjZWxzZQorK1NXSUdSVU5USU1FIHZvaWQgSlNfdmV0b19zZXRfdmFyaWFibGUodjg6OkxvY2FsPHY4OjpOYW1lPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZCYgaW5mbykKKysjZW5kaWYKKyB7CisgICAgIGNoYXIgYnVmZmVyWzI1Nl07CisgICAgIGNoYXIgbXNnWzUxMl07CisgICAgIGludCByZXM7CisgCisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgICBwcm9wZXJ0eS0+V3JpdGVVdGY4KGJ1ZmZlciwgMjU2KTsKKyAgICAgcmVzID0gc3ByaW50Zihtc2csICJUcmllZCB0byB3cml0ZSByZWFkLW9ubHkgdmFyaWFibGU6ICVzLiIsIGJ1ZmZlcik7CisrI2Vsc2UKKysgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNwcm9wZXJ0eTsKKysgICAgaWYgKHByb3BlcnR5LT5Ub1N0cmluZyhTV0lHVjhfQ1VSUkVOVF9DT05URVhUKCkpLlRvTG9jYWwoJnNwcm9wZXJ0eSkpIHsKKysgICAgICBzcHJvcGVydHktPldyaXRlVXRmOChidWZmZXIsIDI1Nik7CisrICAgICAgcmVzID0gc3ByaW50Zihtc2csICJUcmllZCB0byB3cml0ZSByZWFkLW9ubHkgdmFyaWFibGU6ICVzLiIsIGJ1ZmZlcik7CisrICAgIH0KKysgICAgZWxzZSB7CisrICAgICAgcmVzID0gLTE7CisrICAgIH0KKysjZW5kaWYKKyAKKyAgICAgaWYocmVzPDApIHsKKyAgICAgICBTV0lHX2V4Y2VwdGlvbihTV0lHX0VSUk9SLCAiVHJpZWQgdG8gd3JpdGUgcmVhZC1vbmx5IHZhcmlhYmxlLiIpOworZGlmZiAtLWdpdCBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRpbml0LnN3ZyBiL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRpbml0LnN3ZworaW5kZXggMzRiZWZhNy4uODYwMDhkOSAxMDA2NDQKKy0tLSBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRpbml0LnN3ZworKysrIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGluaXQuc3dnCitAQCAtNywxNSArNywyNyBAQCBTV0lHX1Y4X1NldE1vZHVsZSh2b2lkICosIHN3aWdfbW9kdWxlX2luZm8gKnN3aWdfbW9kdWxlKSB7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsX29iaiA9IFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKS0+R2xvYmFsKCk7CisgICB2ODo6TG9jYWw8djg6OkV4dGVybmFsPiBtb2QgPSBTV0lHVjhfRVhURVJOQUxfTkVXKHN3aWdfbW9kdWxlKTsKKyAgIGFzc2VydCghbW9kLklzRW1wdHkoKSk7CisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgZ2xvYmFsX29iai0+U2V0SGlkZGVuVmFsdWUoU1dJR1Y4X1NUUklOR19ORVcoInN3aWdfbW9kdWxlX2luZm9fZGF0YSIpLCBtb2QpOworKyNlbHNlCisrICB2ODo6TG9jYWw8djg6OlByaXZhdGU+IHByaXZhdGVLZXkgPSB2ODo6UHJpdmF0ZTo6Rm9yQXBpKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCksIFNXSUdWOF9TVFJJTkdfTkVXKCJzd2lnX21vZHVsZV9pbmZvX2RhdGEiKSk7CisrICBnbG9iYWxfb2JqLT5TZXRQcml2YXRlKFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKSwgcHJpdmF0ZUtleSwgbW9kKTsKKysjZW5kaWYKKyB9CisgCisgU1dJR1JVTlRJTUUgc3dpZ19tb2R1bGVfaW5mbyAqCisgU1dJR19WOF9HZXRNb2R1bGUodm9pZCAqKSB7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsX29iaiA9IFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKS0+R2xvYmFsKCk7CisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbW9kdWxlaW5mbyA9IGdsb2JhbF9vYmotPkdldEhpZGRlblZhbHVlKFNXSUdWOF9TVFJJTkdfTkVXKCJzd2lnX21vZHVsZV9pbmZvX2RhdGEiKSk7CisrI2Vsc2UKKysgIHY4OjpMb2NhbDx2ODo6UHJpdmF0ZT4gcHJpdmF0ZUtleSA9IHY4OjpQcml2YXRlOjpGb3JBcGkodjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSwgU1dJR1Y4X1NUUklOR19ORVcoInN3aWdfbW9kdWxlX2luZm9fZGF0YSIpKTsKKysgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IG1vZHVsZWluZm87CisrICBpZiAoIWdsb2JhbF9vYmotPkdldFByaXZhdGUoU1dJR1Y4X0NVUlJFTlRfQ09OVEVYVCgpLCBwcml2YXRlS2V5KS5Ub0xvY2FsKCZtb2R1bGVpbmZvKSkKKysgICAgcmV0dXJuIDA7CisrI2VuZGlmCisgCistICBpZiAobW9kdWxlaW5mby5Jc0VtcHR5KCkpCisrICBpZiAobW9kdWxlaW5mby5Jc0VtcHR5KCkgfHwgbW9kdWxlaW5mby0+SXNOdWxsKCkgfHwgbW9kdWxlaW5mby0+SXNVbmRlZmluZWQoKSkKKyAgIHsKKyAgICAgLy8gSXQncyBub3QgeWV0IGxvYWRlZAorICAgICByZXR1cm4gMDsKK0BAIC0yMyw3ICszNSw3IEBAIFNXSUdfVjhfR2V0TW9kdWxlKHZvaWQgKikgeworIAorICAgdjg6OkxvY2FsPHY4OjpFeHRlcm5hbD4gbW9kdWxlaW5mb19leHRlcm4gPSB2ODo6TG9jYWw8djg6OkV4dGVybmFsPjo6Q2FzdChtb2R1bGVpbmZvKTsKKyAKKy0gIGlmIChtb2R1bGVpbmZvX2V4dGVybi5Jc0VtcHR5KCkpCisrICBpZiAobW9kdWxlaW5mb19leHRlcm4uSXNFbXB0eSgpIHx8IG1vZHVsZWluZm9fZXh0ZXJuLT5Jc051bGwoKSB8fCBtb2R1bGVpbmZvX2V4dGVybi0+SXNVbmRlZmluZWQoKSkKKyAgIHsKKyAgICAgLy8gU29tZXRoaW5nJ3Mgbm90IHJpZ2h0CisgICAgIHJldHVybiAwOworZGlmZiAtLWdpdCBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRydW4uc3dnIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdHJ1bi5zd2cKK2luZGV4IDVhYzUyYTUuLjMwMDAyYzAgMTAwNjQ0CistLS0gYS9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0cnVuLnN3ZworKysrIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdHJ1bi5zd2cKK0BAIC0xOTMsOCArMTkzLDEwIEBAIHB1YmxpYzoKKyAgIHZvaWQgKCpkdG9yKSAodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PCB2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCAqcGFyYW1ldGVyKTsKKyAjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IFNXSUdWOF9TRVRXRUFLX1ZFUlNJT04pCisgICB2b2lkICgqZHRvcikgKHY4OjpJc29sYXRlICppc29sYXRlLCB2ODo6UGVyc2lzdGVudDwgdjg6Ok9iamVjdCA+ICpvYmplY3QsIFNXSUdWOF9Qcm94eSAqcHJveHkpOworLSNlbHNlCisrI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICB2b2lkICgqZHRvcikgKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdGEpOworKyNlbHNlCisrICB2b2lkICgqZHRvcikgKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tJbmZvPFNXSUdWOF9Qcm94eT4gJmRhdGEpOworICNlbmRpZgorIH07CisgCitAQCAtMjQxLDkgKzI0MywxMiBAQCBTV0lHUlVOVElNRSB2b2lkIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvcih2ODo6SXNvbGF0ZSAqLCB2ODo6UGVyc2lzdGVudDwgdjg6OlZhbAorICAgU1dJR1Y4X1Byb3h5ICpwcm94eSA9IHN0YXRpY19jYXN0PFNXSUdWOF9Qcm94eSAqPihwYXJhbWV0ZXIpOworICNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgU1dJR1Y4X1NFVFdFQUtfVkVSU0lPTikKKyBTV0lHUlVOVElNRSB2b2lkIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvcih2ODo6SXNvbGF0ZSAqLCB2ODo6UGVyc2lzdGVudDwgdjg6Ok9iamVjdCA+ICpvYmplY3QsIFNXSUdWOF9Qcm94eSAqcHJveHkpIHsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIFNXSUdSVU5USU1FIHZvaWQgU1dJR1Y4X1Byb3h5X0RlZmF1bHREdG9yKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdGEpIHsKKyAgIFNXSUdWOF9Qcm94eSAqcHJveHkgPSBkYXRhLkdldFBhcmFtZXRlcigpOworKyNlbHNlCisrU1dJR1JVTlRJTUUgdm9pZCBTV0lHVjhfUHJveHlfRGVmYXVsdER0b3IoY29uc3Qgdjg6OldlYWtDYWxsYmFja0luZm88U1dJR1Y4X1Byb3h5PiAmZGF0YSkgeworKyAgU1dJR1Y4X1Byb3h5ICpwcm94eSA9IGRhdGEuR2V0UGFyYW1ldGVyKCk7CisgI2VuZGlmCisgCisgICBkZWxldGUgcHJveHk7CitAQCAtMzEyLDEyICszMTcsMTggQEAgU1dJR1JVTlRJTUUgdm9pZCBTV0lHVjhfU2V0UHJpdmF0ZURhdGEodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmosIHZvaWQgKnB0ciwgc3cKKyAgIH0gZWxzZSB7CisgICAgIGNkYXRhLT5oYW5kbGUuTWFrZVdlYWsoY2RhdGEsIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvcik7CisgICB9CistI2Vsc2UKKysjZWxpZmlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgaWYoY2RhdGEtPnN3aWdDTWVtT3duICYmIChTV0lHVjhfQ2xpZW50RGF0YSopaW5mby0+Y2xpZW50ZGF0YSkgeworICAgICBjZGF0YS0+aGFuZGxlLlNldFdlYWsoY2RhdGEsICgoU1dJR1Y4X0NsaWVudERhdGEqKWluZm8tPmNsaWVudGRhdGEpLT5kdG9yKTsKKyAgIH0gZWxzZSB7CisgICAgIGNkYXRhLT5oYW5kbGUuU2V0V2VhayhjZGF0YSwgU1dJR1Y4X1Byb3h5X0RlZmF1bHREdG9yKTsKKyAgIH0KKysjZWxzZQorKyAgaWYoY2RhdGEtPnN3aWdDTWVtT3duICYmIChTV0lHVjhfQ2xpZW50RGF0YSopaW5mby0+Y2xpZW50ZGF0YSkgeworKyAgICBjZGF0YS0+aGFuZGxlLlNldFdlYWsoY2RhdGEsICgoU1dJR1Y4X0NsaWVudERhdGEqKWluZm8tPmNsaWVudGRhdGEpLT5kdG9yLCB2ODo6V2Vha0NhbGxiYWNrVHlwZTo6a1BhcmFtZXRlcik7CisrICB9IGVsc2UgeworKyAgICBjZGF0YS0+aGFuZGxlLlNldFdlYWsoY2RhdGEsIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvciwgdjg6OldlYWtDYWxsYmFja1R5cGU6OmtQYXJhbWV0ZXIpOworKyAgfQorICNlbmRpZgorIAorICNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IDB4MDMxNzEwKQorQEAgLTQ3MCw3ICs0ODEsMTQgQEAgaW50IFN3aWdWOFBhY2tlZF9DaGVjayh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsUmVmKSB7CisgICAKKyAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqUmVmID0gdmFsUmVmLT5Ub09iamVjdCgpOworICAgaWYob2JqUmVmLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA8IDEpIHJldHVybiBmYWxzZTsKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZmxhZyA9IG9ialJlZi0+R2V0SGlkZGVuVmFsdWUoU1dJR1Y4X1NUUklOR19ORVcoIl9fc3dpZ19fcGFja2VkX2RhdGFfXyIpKTsKKysjZWxzZQorKyAgdjg6OkxvY2FsPHY4OjpQcml2YXRlPiBwcml2YXRlS2V5ID0gdjg6OlByaXZhdGU6OkZvckFwaSh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBTV0lHVjhfU1RSSU5HX05FVygiX19zd2lnX19wYWNrZWRfZGF0YV9fIikpOworKyAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZmxhZzsKKysgIGlmICghb2JqUmVmLT5HZXRQcml2YXRlKFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKSwgcHJpdmF0ZUtleSkuVG9Mb2NhbCgmZmxhZykpCisrICAgIHJldHVybiBmYWxzZTsKKysjZW5kaWYKKyAgIHJldHVybiAoZmxhZy0+SXNCb29sZWFuKCkgJiYgZmxhZy0+Qm9vbGVhblZhbHVlKCkpOworIH0KKyAKK0BAIC01MTksMTAgKzUzNywxMyBAQCBTV0lHUlVOVElNRSB2b2lkIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKHY4OjpJc29sYXRlICppc29sYXRlLCB2ODo6UGVyc2lzdAorICAgU3dpZ1Y4UGFja2VkRGF0YSAqY2RhdGEgPSBzdGF0aWNfY2FzdDxTd2lnVjhQYWNrZWREYXRhICo+KHBhcmFtZXRlcik7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorIFNXSUdSVU5USU1FIHZvaWQgX3dyYXBfU3dpZ1Y4UGFja2VkRGF0YV9kZWxldGUodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+ICpvYmplY3QsIFN3aWdWOFBhY2tlZERhdGEgKmNkYXRhKSB7CistI2Vsc2UKKysjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyBTV0lHUlVOVElNRSB2b2lkIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFN3aWdWOFBhY2tlZERhdGE+ICZkYXRhKSB7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gZGF0YS5HZXRWYWx1ZSgpOworICAgU3dpZ1Y4UGFja2VkRGF0YSAqY2RhdGEgPSBkYXRhLkdldFBhcmFtZXRlcigpOworKyNlbHNlCisrU1dJR1JVTlRJTUUgdm9pZCBfd3JhcF9Td2lnVjhQYWNrZWREYXRhX2RlbGV0ZShjb25zdCB2ODo6V2Vha0NhbGxiYWNrSW5mbzxTd2lnVjhQYWNrZWREYXRhPiAmZGF0YSkgeworKyAgU3dpZ1Y4UGFja2VkRGF0YSAqY2RhdGEgPSBkYXRhLkdldFBhcmFtZXRlcigpOworICNlbmRpZgorIAorICAgZGVsZXRlIGNkYXRhOworQEAgLTUzNyw3ICs1NTgsNyBAQCBTV0lHUlVOVElNRSB2b2lkIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYgorICAgb2JqZWN0LT5EaXNwb3NlKGlzb2xhdGUpOworICNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgU1dJR1Y4X1NFVFdFQUtfVkVSU0lPTikKKyAgIG9iamVjdC0+RGlzcG9zZSgpOworLSNlbHNlCisrI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBvYmplY3QuQ2xlYXIoKTsKKyAjZW5kaWYKKyB9CitAQCAtNTUwLDcgKzU3MSwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU1dJR1Y4X05ld1BhY2tlZE9iaih2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc3dpZ190eXBlX2luZgorIC8vICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iaiA9IFNXSUdWOF9PQkpFQ1RfTkVXKCk7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqID0gU1dJR1Y4X09CSkVDVF9ORVcoKTsKKyAKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBvYmotPlNldEhpZGRlblZhbHVlKFNXSUdWOF9TVFJJTkdfTkVXKCJfX3N3aWdfX3BhY2tlZF9kYXRhX18iKSwgU1dJR1Y4X0JPT0xFQU5fTkVXKHRydWUpKTsKKysjZWxzZQorKyAgdjg6OkxvY2FsPHY4OjpQcml2YXRlPiBwcml2YXRlS2V5ID0gdjg6OlByaXZhdGU6OkZvckFwaSh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBTV0lHVjhfU1RSSU5HX05FVygiX19zd2lnX19wYWNrZWRfZGF0YV9fIikpOworKyAgb2JqLT5TZXRQcml2YXRlKFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKSwgcHJpdmF0ZUtleSwgU1dJR1Y4X0JPT0xFQU5fTkVXKHRydWUpKTsKKysjZW5kaWYKKyAKKyAjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCAweDAzMTUxMSkKKyAgIG9iai0+U2V0UG9pbnRlckluSW50ZXJuYWxGaWVsZCgwLCBjZGF0YSk7CitAQCAtNTczLDkgKzU5OSwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU1dJR1Y4X05ld1BhY2tlZE9iaih2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc3dpZ190eXBlX2luZgorICAgY2RhdGEtPmhhbmRsZS5NYWtlV2Vhayh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBjZGF0YSwgX3dyYXBfU3dpZ1Y4UGFja2VkRGF0YV9kZWxldGUpOworICNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgU1dJR1Y4X1NFVFdFQUtfVkVSU0lPTikKKyAgIGNkYXRhLT5oYW5kbGUuTWFrZVdlYWsoY2RhdGEsIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKTsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgY2RhdGEtPmhhbmRsZS5TZXRXZWFrKGNkYXRhLCBfd3JhcF9Td2lnVjhQYWNrZWREYXRhX2RlbGV0ZSk7CisgLy8gIHY4OjpWODo6U2V0V2VhaygmY2RhdGEtPmhhbmRsZSwgY2RhdGEsIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKTsKKysjZWxzZQorKyAgY2RhdGEtPmhhbmRsZS5TZXRXZWFrKGNkYXRhLCBfd3JhcF9Td2lnVjhQYWNrZWREYXRhX2RlbGV0ZSwgdjg6OldlYWtDYWxsYmFja1R5cGU6OmtQYXJhbWV0ZXIpOworICNlbmRpZgorIAorICNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IDB4MDMxNzEwKQorLS0gCisyLjkuNQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZ18zLjAuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZ18zLjAuMTIuYmIKaW5kZXggZDVjYWE2Ny4uMTVmNzM0OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWdfMy4wLjEyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnXzMuMC4xMi5iYgpAQCAtMiw2ICsyLDcgQEAKIAogU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtVXNlLXByb2Mtc2VsZi1leGUtZm9yLXN3aWctc3dpZ2xpYi1vbi1ub24tV2luMzItcGxhdC5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtdXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1Ob2RlLTcueC1ha2EtVjgtNS4yLXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiODIxMzNkZmE3YmJhNzVmZjlhZDk4YTcwNDZiZTY4N2MiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2NmOWY0NDdhZTdlZDFjNTE3MjJlZmM0NWU3ZjE0NDE4ZDE1ZDdhMWUxNDNhYzlmMDlhNjY4OTk5ZjRmYzk0ZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzbGludXgvc3lzbGludXgvc3lzbGludXgtbGlidXBsb2FkLWRlcGVuZC1saWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c2xpbnV4L3N5c2xpbnV4L3N5c2xpbnV4LWxpYnVwbG9hZC1kZXBlbmQtbGliLnBhdGNoCmluZGV4IGMwNzE0YjUuLjZiYTk2YWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzbGludXgvc3lzbGludXgvc3lzbGludXgtbGlidXBsb2FkLWRlcGVuZC1saWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXNsaW51eC9zeXNsaW51eC9zeXNsaW51eC1saWJ1cGxvYWQtZGVwZW5kLWxpYi5wYXRjaApAQCAtMjAsMTUgKzIwLDEyIEBACiAgY29tMzIvTWFrZWZpbGUgfCAgICAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAotZGlmZiAtLWdpdCBhL2NvbTMyL01ha2VmaWxlIGIvY29tMzIvTWFrZWZpbGUKLWluZGV4IDlhMTcyMWIuLmYxNzJkYjIgMTAwNjQ0Ci0tLS0gYS9jb20zMi9NYWtlZmlsZQotKysrIGIvY29tMzIvTWFrZWZpbGUKLUBAIC0yMSwzICsyMSw0IEBAIHJvc2g6IGxpYiBsaWJ1dGlsCi0gc2FtcGxlczogbGlidXRpbCBlbGZsaW5rL2xkbGludXgKLSBzeXNkdW1wOiBsaWJ1cGxvYWQgZ3BsbGliCitJbmRleDogc3lzbGludXgtNi4wMy9jb20zMi9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN5c2xpbnV4LTYuMDMub3JpZy9jb20zMi9NYWtlZmlsZQorKysrIHN5c2xpbnV4LTYuMDMvY29tMzIvTWFrZWZpbGUKK0BAIC0yMiwzICsyMiw0IEBAIHNhbXBsZXM6IGxpYnV0aWwgZWxmbGluay9sZGxpbnV4Cisgc3lzZHVtcDogbGliIGxpYnV0aWwgbGlidXBsb2FkIGdwbGxpYgorIGx1YS9zcmM6IGNtZW51IG1vZHVsZXMKICBncGxsaWI6IGxpYgogK2xpYnVwbG9hZDogbGliCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9maWxlcy8wMDAxLXBhcnNlLXV0aWwtRG9uLXQtdXNlLXhsb2NhbGUuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvZmlsZXMvMDAwMS1wYXJzZS11dGlsLURvbi10LXVzZS14bG9jYWxlLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYTA0NjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9maWxlcy8wMDAxLXBhcnNlLXV0aWwtRG9uLXQtdXNlLXhsb2NhbGUuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gZDM3OTEyNmQ1NmQwYjZlOTM1YjJkOTdjYTcxNTc5ZTZjYzU0ZDFiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDE4IEp1bCAyMDE3IDEzOjM3OjI3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBhcnNlLXV0aWw6IERvbid0IHVzZSB4bG9jYWxlLmgKLQotZ2xpYmMgMi4yNiBubyBsb25nZXIgY29udGFpbnMgdGhlIG5vbi1zdGFuZGFyZCB4bG9jYWxlLmgKLShodHRwOi8vc291cmNld2FyZS5vcmcvZ2xpYmMvd2lraS9SZWxlYXNlLzIuMjYjUmVtb3ZhbF9vZl8uMjd4bG9jYWxlLmguMjcpCi0KLVRoaXMgY2hhbmdlIHNob3VsZG4ndCBicmVhayBhbnl0aGluZyBhcyB4bG9jYWxlLmggd2FzIGEgc3Vic2V0IG9mCi1sb2NhbGUuaC4KLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC9wdWxsLzM1XQotLS0tCi0gc3JjL3BhcnNlLXV0aWwuYyB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvcGFyc2UtdXRpbC5jIGIvc3JjL3BhcnNlLXV0aWwuYwotaW5kZXggNTYzNWE2OC4uMWIyMTY5YyAxMDA2NDQKLS0tLSBhL3NyYy9wYXJzZS11dGlsLmMKLSsrKyBiL3NyYy9wYXJzZS11dGlsLmMKLUBAIC0yMSw3ICsyMSw2IEBACi0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHhsb2NhbGUuaD4KLSAKLSAjaW5jbHVkZSAibWFjcm8uaCIKLSAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAxLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDEtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzkyY2VhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAxLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSA0NWI0MDFhOTQ3YWY5NDRjMjBiM2M0NTFhMzVkZmU1M2JjYTVlZjNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUaHUsIDI4IERlYyAyMDE3IDIxOjI0OjU3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBjb21wYXJpc29uX2ZuX3QgaXMgZ2xpYmMgc3BlY2lmaWMsIHVzZSByYXcgc2lnbmF0dXJlIGluCisgZnVuY3Rpb24gcG9pbnRlcgorCitNYWtlIGl0IHdvcmsgd2l0aCBtdXNsIHdoZXJlIGNvbXBhcmlzb25fZm5fdCBpcyBub3QgcHJvdmlkZWQKKworUmV1c2UgdGhlIGFwcHJvYWNoIGZyb20gc3lzdGVtZDoKK3N5c3RlbWQvMDAxMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoCisKK0Jhc2VkIG9uIHdvcmsgYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1NpZ25lZC1vZmYtYnk6IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy91dGlsLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdXRpbC5oIGIvc3JjL3V0aWwuaAoraW5kZXggNTYxZjllNy4uZTljZmQ4MSAxMDA2NDQKKy0tLSBhL3NyYy91dGlsLmgKKysrKyBiL3NyYy91dGlsLmgKK0BAIC01Nyw3ICs1Nyw3IEBAIGV4dGVybiBjaGFyICoqc2F2ZWRfYXJndjsKKyAgKiBOb3JtYWwgcXNvcnQgcmVxdWlyZXMgYmFzZSB0byBiZSBub25udWxsLiBIZXJlIHdlcmUgcmVxdWlyZQorICAqIHRoYXQgb25seSBpZiBubWVtYiA+IDAuCisgICovCistc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgY29tcGFyaXNvbl9mbl90IGNvbXBhcikgeworK3N0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGludCAoKmNvbXBhcikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSB7CisgICAgICAgICBpZiAobm1lbWIgPD0gMSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworIAorLS0gCisyLjEzLjYKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAyLW11c2wtZG9lcy1ub3QtcHJvdmlkZS1wcmludGYtaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMi1tdXNsLWRvZXMtbm90LXByb3ZpZGUtcHJpbnRmLWgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk2MjcyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMi1tdXNsLWRvZXMtbm90LXByb3ZpZGUtcHJpbnRmLWgucGF0Y2gKQEAgLTAsMCArMSw0MjMgQEAKK0Zyb20gNmY5NDU0MTg0YTAyMzEwODAyYjFlZDNlNDAyODc5NThiNTI0YTQ5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorRGF0ZTogVGh1LCAyOCBEZWMgMjAxNyAyMTozOTo1MSAtMDgwMAorU3ViamVjdDogW1BBVENIIDIvM10gbXVzbCBkb2VzIG5vdCBwcm92aWRlIHByaW50Zi5oCisKK1JldXNlIHRoZSBhcHByb2FjaCBmcm9tIHN5c3RlbWQ6CitzeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKworT3JpZ2luYWwgcGF0Y2ggYXV0aG9yOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0luY2x1ZGVzIHdvcmsgYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1NpZ25lZC1vZmYtYnk6IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgfCAgIDQgKworIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgfCAgIDMgKworIHNyYy9sb2cuYyAgICAgICAgICAgICAgICAgfCAgIDEgKworIHNyYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgfCAyNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9wYXJzZS1wcmludGYtZm9ybWF0LmggfCAgNTcgKysrKysrKysrKworIHNyYy9zdGRpby11dGlsLmggICAgICAgICAgfCAgIDEgLQorIDYgZmlsZXMgY2hhbmdlZCwgMzM4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA5YmJjOGZhLi5iODg3ZDE2IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTY5LDYgKzE2OSwxMCBAQCBsaWJ1dGlsc19sYV9TT1VSQ0VTID0gXAorIAlzcmMvdXRpbC5jIFwKKyAJc3JjL3V0aWwuaAorIAorK2lmICFIQVZFX1BSSU5URl9IIAorK2xpYnV0aWxzX2xhX1NPVVJDRVMgKz0gc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuYworK2VuZGlmCisrCisgbGlidXRpbHNfbGFfQ0ZMQUdTID0gXAorIAkkKEFNX0NGTEFHUykgXAorIAkkKExJQlNZU1RFTURfQ0ZMQUdTKQorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggN2Y3NGJhYy4uMDYyZTMxMCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNzMsNiArNzMsOSBAQCBBU19JRihbdGVzdCAieCR3aXRoX2xpYnN5c3RlbWQiICE9IHhub10sCisgICAgICAgICApXQorICkKKyAKKytBQ19DSEVDS19IRUFERVJTKFtwcmludGYuaF0sIFtdLCBbXSkKKytBTV9DT05ESVRJT05BTChIQVZFX1BSSU5URl9ILCBbdGVzdCAieCRhY19jdl9oZWFkZXJfcHJpbnRfaCIgPSB4eWVzXSkKKysKKyBDQ19DSEVDS19GTEFHU19BUFBFTkQoW3dpdGhfY2ZsYWdzXSwgW0NGTEFHU10sIFtcCisgICAgICAgICAtcGlwZSBcCisgICAgICAgICAtV2FsbCBcCitkaWZmIC0tZ2l0IGEvc3JjL2xvZy5jIGIvc3JjL2xvZy5jCitpbmRleCAxNWRlYzgzLi5hZWNmMjMxIDEwMDY0NAorLS0tIGEvc3JjL2xvZy5jCisrKysgYi9zcmMvbG9nLmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgPHN5cy91aW8uaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCisrI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKKyAjaW5jbHVkZSAic2QtbWVzc2FnZXMuaCIKKyAKKyAjaW5jbHVkZSAiZmQtdXRpbC5oIgorZGlmZiAtLWdpdCBhL3NyYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgYi9zcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDk0MzdlNQorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuYworQEAgLTAsMCArMSwyNzMgQEAKKysvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCisrCisrLyoqKgorKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KKysKKysgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorKworKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBtdXNsIEMgbGlicmFyeQorKyAgQ29weXJpZ2h0IDIwMDUtMjAxNCBSaWNoIEZlbGtlciwgZXQgYWwuCisrCisrICBzeXN0ZW1kIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgIHN5c3RlbWQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisrICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqKiovCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX25vbmFyZyhjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICB9IHdoaWxlICgqZm10KysgIT0gJyUnKTsKKysgICAgICAgIHJldHVybiBmbXQ7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX251bShjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgZm9yICg7KmZtdCA+PSAnMCcgJiYgKmZtdCA8PSAnOSc7IGZtdCsrKQorKyAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nICovOworKyAgICAgICAgcmV0dXJuIGZtdDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfYXJnbihjb25zdCBjaGFyICpmbXQsIHNpemVfdCAqYXJnKQorK3sKKysgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBmbXQ7CisrICAgICAgICBzaXplX3QgdmFsID0gMDsKKysKKysgICAgICAgIGlmICgqcCA8ICcxJyB8fCAqcCA+ICc5JykKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIGRvIHsKKysgICAgICAgICAgICAgICAgdmFsID0gMTAqdmFsICsgKCpwKysgLSAnMCcpOworKyAgICAgICAgfSB3aGlsZSAoKnAgPj0gJzAnICYmICpwIDw9ICc5Jyk7CisrCisrICAgICAgICBpZiAoKnAgIT0gJyQnKQorKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgKmFyZyA9IHZhbDsKKysgICAgICAgIHJldHVybiBwKzE7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX2ZsYWdzKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICB3aGlsZSAoMSkgeworKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpmbXQpIHsKKysgICAgICAgICAgICAgICAgY2FzZSAnIyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJzAnOgorKyAgICAgICAgICAgICAgICBjYXNlICctJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnICc6CisrICAgICAgICAgICAgICAgIGNhc2UgJysnOgorKyAgICAgICAgICAgICAgICBjYXNlICdcJyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJ0knOgorKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICB9CisrfQorKworK2VudW0gc3RhdGUgeworKyAgICAgICAgQkFSRSwKKysgICAgICAgIExQUkUsCisrICAgICAgICBMTFBSRSwKKysgICAgICAgIEhQUkUsCisrICAgICAgICBISFBSRSwKKysgICAgICAgIEJJR0xQUkUsCisrICAgICAgICBaVFBSRSwKKysgICAgICAgIEpQUkUsCisrICAgICAgICBTVE9QCisrfTsKKysKKytlbnVtIHR5cGUgeworKyAgICAgICAgTk9ORSwKKysgICAgICAgIFBUUiwKKysgICAgICAgIElOVCwKKysgICAgICAgIFVJTlQsCisrICAgICAgICBVTExPTkcsCisrICAgICAgICBMT05HLAorKyAgICAgICAgVUxPTkcsCisrICAgICAgICBTSE9SVCwKKysgICAgICAgIFVTSE9SVCwKKysgICAgICAgIENIQVIsCisrICAgICAgICBVQ0hBUiwKKysgICAgICAgIExMT05HLAorKyAgICAgICAgU0laRVQsCisrICAgICAgICBJTUFYLAorKyAgICAgICAgVU1BWCwKKysgICAgICAgIFBESUZGLAorKyAgICAgICAgVUlQVFIsCisrICAgICAgICBEQkwsCisrICAgICAgICBMREJMLAorKyAgICAgICAgTUFYVFlQRQorK307CisrCisrc3RhdGljIGNvbnN0IHNob3J0IHBhX3R5cGVzW01BWFRZUEVdID0geworKyAgICAgICAgW05PTkVdICAgPSBQQV9JTlQsCisrICAgICAgICBbUFRSXSAgICA9IFBBX1BPSU5URVIsCisrICAgICAgICBbSU5UXSAgICA9IFBBX0lOVCwKKysgICAgICAgIFtVSU5UXSAgID0gUEFfSU5ULAorKyAgICAgICAgW1VMTE9OR10gPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtMT05HXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW1VMT05HXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbU0hPUlRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCisrICAgICAgICBbVVNIT1JUXSA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCisrICAgICAgICBbQ0hBUl0gICA9IFBBX0NIQVIsCisrICAgICAgICBbVUNIQVJdICA9IFBBX0NIQVIsCisrICAgICAgICBbTExPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1NJWkVUXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbSU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1VNQVhdICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtQRElGRl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbVUlQVFJdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtEQkxdICAgID0gUEFfRE9VQkxFLAorKyAgICAgICAgW0xEQkxdICAgPSBQQV9ET1VCTEUgfCBQQV9GTEFHX0xPTkdfRE9VQkxFCisrfTsKKysKKysjZGVmaW5lIFMoeCkgWyh4KS0nQSddCisrI2RlZmluZSBFKHgpIChTVE9QICsgKHgpKQorKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN0YXRlc1tdWyd6Jy0nQScrMV0gPSB7CisrICAgICAgICB7IC8qIDA6IGJhcmUgdHlwZXMgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTlQpLCBTKCdpJykgPSBFKElOVCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUlOVCksUygndScpID0gRShVSU5UKSxTKCd4JykgPSBFKFVJTlQpLCBTKCdYJykgPSBFKFVJTlQpLAorKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKERCTCksIFMoJ2YnKSA9IEUoREJMKSwgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksIFMoJ0YnKSA9IEUoREJMKSwgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKENIQVIpLFMoJ0MnKSA9IEUoSU5UKSwKKysgICAgICAgICAgICAgICAgUygncycpID0gRShQVFIpLCBTKCdTJykgPSBFKFBUUiksIFMoJ3AnKSA9IEUoVUlQVFIpLFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnbScpID0gRShOT05FKSwKKysgICAgICAgICAgICAgICAgUygnbCcpID0gTFBSRSwgICBTKCdoJykgPSBIUFJFLCBTKCdMJykgPSBCSUdMUFJFLAorKyAgICAgICAgICAgICAgICBTKCd6JykgPSBaVFBSRSwgIFMoJ2onKSA9IEpQUkUsIFMoJ3QnKSA9IFpUUFJFCisrICAgICAgICB9LCB7IC8qIDE6IGwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShMT05HKSwgUygnaScpID0gRShMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTE9ORyksUygndScpID0gRShVTE9ORyksUygneCcpID0gRShVTE9ORyksUygnWCcpID0gRShVTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgIFMoJ2YnKSA9IEUoREJMKSwgIFMoJ2cnKSA9IEUoREJMKSwgIFMoJ2EnKSA9IEUoREJMKSwKKysgICAgICAgICAgICAgICAgUygnRScpID0gRShEQkwpLCAgUygnRicpID0gRShEQkwpLCAgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKElOVCksICBTKCdzJykgPSBFKFBUUiksICBTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ2wnKSA9IExMUFJFCisrICAgICAgICB9LCB7IC8qIDI6IGxsLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoTExPTkcpLCBTKCdpJykgPSBFKExMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTExPTkcpLFMoJ3UnKSA9IEUoVUxMT05HKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVTExPTkcpLFMoJ1gnKSA9IEUoVUxMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDM6IGgtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShTSE9SVCksIFMoJ2knKSA9IEUoU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVTSE9SVCksUygndScpID0gRShVU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVTSE9SVCksUygnWCcpID0gRShVU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ2gnKSA9IEhIUFJFCisrICAgICAgICB9LCB7IC8qIDQ6IGhoLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoQ0hBUiksIFMoJ2knKSA9IEUoQ0hBUiksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUNIQVIpLFMoJ3UnKSA9IEUoVUNIQVIpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVDSEFSKSxTKCdYJykgPSBFKFVDSEFSKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDU6IEwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZScpID0gRShMREJMKSxTKCdmJykgPSBFKExEQkwpLFMoJ2cnKSA9IEUoTERCTCksIFMoJ2EnKSA9IEUoTERCTCksCisrICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoTERCTCksUygnRicpID0gRShMREJMKSxTKCdHJykgPSBFKExEQkwpLCBTKCdBJykgPSBFKExEQkwpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogNjogei0gb3IgdC1wcmVmaXhlZCAoYXNzdW1lZCB0byBiZSBzYW1lIHNpemUpICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoUERJRkYpLFMoJ2knKSA9IEUoUERJRkYpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFNJWkVUKSxTKCd1JykgPSBFKFNJWkVUKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShTSVpFVCksUygnWCcpID0gRShTSVpFVCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiA3OiBqLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoSU1BWCksIFMoJ2knKSA9IEUoSU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVU1BWCksIFMoJ3UnKSA9IEUoVU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVU1BWCksIFMoJ1gnKSA9IEUoVU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfQorK307CisrCisrc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcykKKyt7CisrICAgICAgICBzaXplX3QgaSA9IDA7CisrICAgICAgICBzaXplX3QgbGFzdCA9IDA7CisrCisrICAgICAgICBtZW1zZXQodHlwZXMsIDAsIG4pOworKworKyAgICAgICAgd2hpbGUgKDEpIHsKKysgICAgICAgICAgICAgICAgc2l6ZV90IGFyZzsKKysgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXRlOworKworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX25vbmFyZyhmbXQpOworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnJScpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBhcmcgPSAwOworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10LCAmYXJnKTsKKysgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KKysgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9mbGFncyhmbXQpOworKyAgICAgICAgICAgICAgICAvKiB3aWR0aCAqLworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd2FyZyA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCsxLCAmd2FyZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPiBsYXN0KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHdhcmc7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPD0gbiAmJiB0eXBlc1t3YXJnLTFdID09IE5PTkUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1t3YXJnLTFdID0gSU5UOworKyAgICAgICAgICAgICAgICB9IGVsc2UKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOworKyAgICAgICAgICAgICAgICAvKiBwcmVjaXNpb24gKi8KKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy4nKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyonKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFyZyA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZwYXJnKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJnOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPD0gbiAmJiB0eXBlc1twYXJnLTFdID09IE5PTkUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3BhcmctMV0gPSBJTlQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICctJykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAvKiBsZW5ndGggbW9kaWZpZXIgYW5kIGNvbnZlcnNpb24gc3BlY2lmaWVyICovCisrICAgICAgICAgICAgICAgIHN0YXRlID0gQkFSRTsKKysgICAgICAgICAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpmbXQrKzsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICdBJyB8fCBjID4gJ3onKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZXNbc3RhdGVdUyhjKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9IHdoaWxlIChzdGF0ZSA8IFNUT1ApOworKworKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gRShOT05FKSkKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGFyZzsKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA8PSBuKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW2FyZy0xXSA9IHN0YXRlIC0gU1RPUDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmIChsYXN0ID4gbikKKysgICAgICAgICAgICAgICAgbGFzdCA9IG47CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGFzdDsgaSsrKQorKyAgICAgICAgICAgICAgICB0eXBlc1tpXSA9IHBhX3R5cGVzW3R5cGVzW2ldXTsKKysKKysgICAgICAgIHJldHVybiBsYXN0OworK30KK2RpZmYgLS1naXQgYS9zcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIGIvc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQzNzExNzcKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKK0BAIC0wLDAgKzEsNTcgQEAKKysvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCisrCisrLyoqKgorKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KKysKKysgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorKworKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBHTlUgQyBMaWJyYXJ5CisrICBDb3B5cmlnaHQgMTk5MS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgc3lzdGVtZCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKKysgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICBzeXN0ZW1kIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorKyAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKioqLworKworKyNwcmFnbWEgb25jZQorKworKyNpbmNsdWRlICJjb25maWcuaCIKKysKKysjaWZkZWYgSEFWRV9QUklOVEZfSAorKyNpbmNsdWRlIDxwcmludGYuaD4KKysjZWxzZQorKworKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysKKytlbnVtIHsJCQkJLyogQyB0eXBlOiAqLworKyAgUEFfSU5ULAkJCS8qIGludCAqLworKyAgUEFfQ0hBUiwJCQkvKiBpbnQsIGNhc3QgdG8gY2hhciAqLworKyAgUEFfV0NIQVIsCQkJLyogd2lkZSBjaGFyICovCisrICBQQV9TVFJJTkcsCQkJLyogY29uc3QgY2hhciAqLCBhICdcMCctdGVybWluYXRlZCBzdHJpbmcgKi8KKysgIFBBX1dTVFJJTkcsCQkJLyogY29uc3Qgd2NoYXJfdCAqLCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKi8KKysgIFBBX1BPSU5URVIsCQkJLyogdm9pZCAqICovCisrICBQQV9GTE9BVCwJCQkvKiBmbG9hdCAqLworKyAgUEFfRE9VQkxFLAkJCS8qIGRvdWJsZSAqLworKyAgUEFfTEFTVAorK307CisrCisrLyogRmxhZyBiaXRzIHRoYXQgY2FuIGJlIHNldCBpbiBhIHR5cGUgcmV0dXJuZWQgYnkgYHBhcnNlX3ByaW50Zl9mb3JtYXQnLiAgKi8KKysjZGVmaW5lCVBBX0ZMQUdfTUFTSwkJMHhmZjAwCisrI2RlZmluZQlQQV9GTEFHX0xPTkdfTE9ORwkoMSA8PCA4KQorKyNkZWZpbmUJUEFfRkxBR19MT05HX0RPVUJMRQlQQV9GTEFHX0xPTkdfTE9ORworKyNkZWZpbmUJUEFfRkxBR19MT05HCQkoMSA8PCA5KQorKyNkZWZpbmUJUEFfRkxBR19TSE9SVAkJKDEgPDwgMTApCisrI2RlZmluZQlQQV9GTEFHX1BUUgkJKDEgPDwgMTEpCisrCisrc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcyk7CisrCisrI2VuZGlmIC8qIEhBVkVfUFJJTlRGX0ggKi8KK2RpZmYgLS1naXQgYS9zcmMvc3RkaW8tdXRpbC5oIGIvc3JjL3N0ZGlvLXV0aWwuaAoraW5kZXggMGE2NzU1Ny4uMjFjYzUxNSAxMDA2NDQKKy0tLSBhL3NyYy9zdGRpby11dGlsLmgKKysrKyBiL3NyYy9zdGRpby11dGlsLmgKK0BAIC0xOSw3ICsxOSw2IEBACisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCisgCistI2luY2x1ZGUgPHByaW50Zi5oPgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistLSAKKzIuMTMuNgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDMtbXVzbC1kb2VzLW5vdC1wcm92aWRlLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDMtbXVzbC1kb2VzLW5vdC1wcm92aWRlLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY3MGQ5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMy1tdXNsLWRvZXMtbm90LXByb3ZpZGUtY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDc5Mzk2NDQ5ZDI2NGJkZTU4YjRkYWEzZWY2ZGQ5OWYwZjA2NTI0MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFRodSwgMjggRGVjIDIwMTcgMjI6MTA6NTggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIG11c2wgZG9lcyBub3QgcHJvdmlkZSBjYW5vbmljYWxpemVfZmlsZV9uYW1lCisKK1JldXNlIHRoZSBhcHByb2FjaCBmcm9tIHN5c3RlbWQ6CitzeXN0ZW1kLzAwMDctY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaAorCitCYXNlZCBvbiB3b3JrIGJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitTaWduZWQtb2ZmLWJ5OiBUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvcGF0aC11dGlsLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcGF0aC11dGlsLmMgYi9zcmMvcGF0aC11dGlsLmMKK2luZGV4IDJmYjYzNjYuLjEyZTJlMTcgMTAwNjQ0CistLS0gYS9zcmMvcGF0aC11dGlsLmMKKysrKyBiL3NyYy9wYXRoLXV0aWwuYworQEAgLTYzLDcgKzYzLDcgQEAgY2hhciAqKnBhdGhfc3Rydl9yZXNvbHZlKGNoYXIgKipsLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gKnM7CisgCisgICAgICAgICAgICAgICAgIGVycm5vID0gMDsKKy0gICAgICAgICAgICAgICAgdSA9IGNhbm9uaWNhbGl6ZV9maWxlX25hbWUodCk7CisrICAgICAgICAgICAgICAgIHUgPSByZWFscGF0aCh0LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgaWYgKCF1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeCkgeworLS0gCisyLjEzLjYKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRhMDAwZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuTEdQTDIuMTttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC1ib290Y2hhcnQuZ2l0O3Byb3RvY29sPWh0dHBzIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGFyc2UtdXRpbC1Eb24tdC11c2UteGxvY2FsZS5oLnBhdGNoIFwKLSIKLQotIyBNb2RpZnkgdGhlc2UgYXMgZGVzaXJlZAotUFYgPSAiMjMxK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gIjllZTJmZmMxZGM2YzgyMDk3MjVlNjI1OTU0YmJkODlmOTZjYjcxMzkiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAic3lzdGVtZCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIGludGx0b29sIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgc3lzdGVtZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzeXN0ZW1kLWJvb3RjaGFydC5zZXJ2aWNlIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIGludGx0b29sLm00IGlzIGEgc29mdCBsaW5rIHRvIC91c3Ivc2hhcmUvYWNsb2NhbC9tNCwgZGVsZXRlIGl0IGFuZCB1c2UgdGhlIG9uZSBpbiBvdXIgc3lzcm9vdAotICAgIHJtIC1mICR7U30vbTQvaW50bHRvb2wubTQKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW1kLWJvb3RjaGFydCIKLQotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcm9vdHByZWZpeD0ke2Jhc2VfcHJlZml4fSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWUyMWIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIKQEAgLTAsMCArMSwzNyBAQAorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkdQTDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC5naXQ7cHJvdG9jb2w9aHR0cHMgXAorIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1tdXNsLWRvZXMtbm90LXByb3ZpZGUtcHJpbnRmLWgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLW11c2wtZG9lcy1ub3QtcHJvdmlkZS1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoIFwKKyAgICAiCisKKworIyBNb2RpZnkgdGhlc2UgYXMgZGVzaXJlZAorUFYgPSAiMjMzK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gImZlMWM1ZTQxZTZiZGI3ODA0M2RhZDhmYTg2M2ZjMmRmNjZkMWRhZGYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAic3lzdGVtZCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIGludGx0b29sIgorCitpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgc3lzdGVtZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzeXN0ZW1kLWJvb3RjaGFydC5zZXJ2aWNlIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIGludGx0b29sLm00IGlzIGEgc29mdCBsaW5rIHRvIC91c3Ivc2hhcmUvYWNsb2NhbC9tNCwgZGVsZXRlIGl0IGFuZCB1c2UgdGhlIG9uZSBpbiBvdXIgc3lzcm9vdAorICAgIHJtIC1mICR7U30vbTQvaW50bHRvb2wubTQKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW1kLWJvb3RjaGFydCIKKworRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcm9vdHByZWZpeD0ke2Jhc2VfcHJlZml4fSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50L2ZpeF9yYW5saWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvZml4X3JhbmxpYi5wYXRjaAppbmRleCA1ZDcwNDU2Li5iNjZmNDFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvZml4X3JhbmxpYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvZml4X3JhbmxpYi5wYXRjaApAQCAtMSwxNCArMSwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtwb2t5LXNwZWNpZmljIGZpeF0KIAotLS0tIGEvTWFrZWZpbGUuaW5jCi0rKysgYi9NYWtlZmlsZS5pbmMKLUBAIC01Nyw2ICs1Nyw5IEBACi0gICBpZmVxICgkKE5PX1VVSUQpLCkKLSAgICAgTElCUyArPSAtbHV1aWQKK0luZGV4OiBhZ2VudC9NYWtlZmlsZS5pbmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhZ2VudC5vcmlnL01ha2VmaWxlLmluYworKysrIGFnZW50L01ha2VmaWxlLmluYworQEAgLTg4LDYgKzg4LDkgQEAgaWZuZXEgKCQoT1BTWVMpLFdpbmRvd3MpCisgICBpZm5lcSAoJChDQyksZysrKQorICAgICBPUFRTICs9IC1XbWlzc2luZy1wcm90b3R5cGVzCiAgICBlbmRpZgogKyAgaWZuZXEgKCQoUkFOTElCKSwpCiArICAgIFJBTkxJQiArPSAkQAogKyAgZW5kaWYKICBlbmRpZgogIAotIGlmbmVxICgkKE9QU1lTKSxXaW5kb3dzKQorICMgQ29tcGlsZXIgZmxhZ3MgZGVmaW5pdGlvbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKaW5kZXggOWRiMjZkYy4uYmExNGM0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiCkBAIC0xNiw3ICsxNiw2IEBACiAgICAgICAgICAgIGZpbGU6Ly90Y2YtYWdlbnQuaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly90Y2YtYWdlbnQuc2VydmljZSBcCiAgICAgICAgICAgIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIERFUEVORFMgPSAidXRpbC1saW51eCBvcGVuc3NsIgogUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKQEAgLTMxLDcgKzMwLDcgQEAKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDk5IDMgNSAuIHN0b3AgMjAgMCAxIDIgNiAuIgogCiAjIG1hbmdsaW5nIG5lZWRlZCBmb3IgbWFrZQotTUFLRV9BUkNIID0gImBlY2hvICR7VEFSR0VUX0FSQ0h9IHwgc2VkIHMsaS44NixpNjg2LCB8IHNlZCBzLGFhcmNoNjQsYTY0LGAiCitNQUtFX0FSQ0ggPSAiYGVjaG8gJHtUQVJHRVRfQVJDSH0gfCBzZWQgcyxpLjg2LGk2ODYsIHwgc2VkIHMsYWFyY2g2NC4qLGE2NCxgIgogTUFLRV9PUyA9ICJgZWNobyAke1RBUkdFVF9PU30gfCBzZWQgcyxebGludXguKixHTlUvTGludXgsYCIKIAogRVhUUkFfT0VNQUtFID0gIk1BQ0hJTkU9JHtNQUtFX0FSQ0h9IE9QU1lTPSR7TUFLRV9PU30gJ0NDPSR7Q0N9JyAnQVI9JHtBUn0nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvdGNsLWFkZC1zb25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtYWRkLXNvbmFtZS5wYXRjaAppbmRleCA5NjI3NmVhLi5kMWZjOWI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtYWRkLXNvbmFtZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtYWRkLXNvbmFtZS5wYXRjaApAQCAtMTEsNyArMTEsNyBAQAogKwkgICAgIyBmb2xsb3dpbmcgbGluZSBhZGRlZCBieSBDVyBmb3IgRGViaWFuIEdOVS9MaW51eAogKwkgICAgVENMX1NITElCX0xEX0VYVFJBUz0iLVdsLC1zb25hbWUsXCR7VENMX0xJQl9GSUxFfS4wIgogKwotIAkgICAgU0hMSUJfTEQ9JyR7Q0N9IC1zaGFyZWQgJHtDRkxBR1N9ICR7TERGTEFHU30nCisgCSAgICBTSExJQl9MRD0nJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gLXNoYXJlZCcKICAJICAgIERMX09CSlM9InRjbExvYWREbC5vIgogIAkgICAgRExfTElCUz0iLWxkbCIKIEluZGV4OiB1bml4L3RjbC5tNApAQCAtMjUsNyArMjUsNyBAQAogKwkgICAgIyBmb2xsb3dpbmcgbGluZSBhZGRlZCBieSBDVyBmb3IgRGViaWFuIEdOVS9MaW51eAogKwkgICAgVENMX1NITElCX0xEX0VYVFJBUz0iLVdsLC1zb25hbWUsXCR7VENMX0xJQl9GSUxFfS4wIgogKwotIAkgICAgU0hMSUJfTEQ9JyR7Q0N9IC1zaGFyZWQgJHtDRkxBR1N9ICR7TERGTEFHU30nCisgCSAgICBTSExJQl9MRD0nJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gLXNoYXJlZCcKICAJICAgIERMX09CSlM9InRjbExvYWREbC5vIgogIAkgICAgRExfTElCUz0iLWxkbCIKIEluZGV4OiB1bml4L01ha2VmaWxlLmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWM3M2JlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbCBDb21tYW5kIExhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3RjbC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImRldmVsL3RjbHRrIgotCi0jIGh0dHA6Ly93d3cudGNsLnRrL3NvZnR3YXJlL3RjbHRrL2xpY2Vuc2UuaHRtbAotTElDRU5TRSA9ICJ0Y2wgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL2NvbXBhdC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL2xpYnJhcnkvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi9tYWNvc3gvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi90ZXN0cy9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0iCi0KLURFUEVORFMgPSAidGNsLW5hdGl2ZSB6bGliIgotCi1CQVNFX1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vdGNsLWFkZC1zb25hbWUucGF0Y2giCi1TUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfbm9uX25hdGl2ZV9idWlsZF9pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25vX3BhY2thZ2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbHRlci1pbmNsdWRlZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNTY3M2FhZjQ1YjVkZTVkOGRkODBiYjNkYWFlYjg4MzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2M2YjhmODRlMzczMzI0MjNjZmU1YmFlNTAzNDQwZDg4NDUwZGE4Y2MxMjQzNDk2MjQ5ZmFhNTI2ODAyNmJhNSIKLQotU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtCQVNFX1NSQ19VUkl9IgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59JHtQVn0vdW5peCIKLQotVkVSID0gIiR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBiaW5jb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYwotfQotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXByaXZhdGUtaGVhZGVycwotCWxuIC1zZiAuL3RjbHNoJHtWRVJ9ICR7RH0ke2JpbmRpcn0vdGNsc2gKLQlsbiAtc2YgdGNsc2g4LjYgJHtEfSR7YmluZGlyfS90Y2xzaCR7VkVSfQotCXNlZCAtaSAiczstTCR7Qn07LUwke1NUQUdJTkdfTElCRElSfTtnIiB0Y2xDb25maWcuc2gKLQlzZWQgLWkgInM7JyR7V09SS0RJUn07JyR7U1RBR0lOR19JTkNESVJ9O2ciIHRjbENvbmZpZy5zaAotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KLQlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9Ci0JaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtsaWJkaXJ9Ci0JZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbwotCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCi0JCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLwotCWRvbmUKLX0KLQotU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgotCi1QQUNLQUdFUyA9KyAidGNsLWxpYiIKLUZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCi0KLSMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKLVJERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIHRjbHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLSMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCi1CSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgotCi0jIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgotCi0jIENsZWFudXAgaG9zdCBwYXRoIGZyb20gJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCBhbmQgcmVtb3ZlIHRoZQotIyAke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaCBmcm9tIHRhcmdldAotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJ0Y2xfcGFja2FnZV9wcmVwcm9jZXNzIgotdGNsX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKLQlzZWQgLWkgLWUgInM7JHtERUJVR19QUkVGSVhfTUFQfTs7ZyIgXAotCSAgICAgICAtZSAiczstTCR7U1RBR0lOR19MSUJESVJ9Oy1MJHtsaWJkaXJ9O2ciIFwKLQkgICAgICAgLWUgInM7JHtTVEFHSU5HX0lOQ0RJUn07JHtpbmNsdWRlZGlyfTtnIiBcCi0JICAgICAgIC1lICJzOy0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfTs7ZyIgXAotCSAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3RjbENvbmZpZy5zaAotCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTJlODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuOC5iYgpAQCAtMCwwICsxLDEwMSBAQAorU1VNTUFSWSA9ICJUb29sIENvbW1hbmQgTGFuZ3VhZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vdGNsLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiZGV2ZWwvdGNsdGsiCisKKyMgaHR0cDovL3d3dy50Y2wudGsvc29mdHdhcmUvdGNsdGsvbGljZW5zZS5odG1sCitMSUNFTlNFID0gInRjbCAmIEJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vY29tcGF0L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vbGlicmFyeS9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL21hY29zeC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL3Rlc3RzL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vd2luL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyIKKworREVQRU5EUyA9ICJ0Y2wtbmF0aXZlIHpsaWIiCisKK0JBU0VfU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vdGNsLyR7QlBOfSR7UFZ9LXNyYy50YXIuZ3ogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly90Y2wtYWRkLXNvbmFtZS5wYXRjaCIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9ub25fbmF0aXZlX2J1aWxkX2lzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9pc3N1ZV93aXRoX29sZF9kaXN0cm9fZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm9fcGFja2FnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FsdGVyLWluY2x1ZGVkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MTY1NmQzMzY3YWYwMzJlMGFlNjE1N2VmZjEzNGY4OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNDNjYjBjMTUxOGNlNDJiMDBlN2M4ZjZlYWRkZDUxOTVjNTNhOThmOTRhZGM3MTcyMzRhNjVjYmNmZDNmOTZhIgorCitTUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke0JBU0VfU1JDX1VSSX0iCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0ke1BWfS91bml4IgorCitWRVIgPSAiJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJpbmNvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGhyZWFkcyAtLWRpc2FibGUtcnBhdGggLS1saWJkaXI9JHtsaWJkaXJ9IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJZWNobyA+ICR7U30vLi4vY29tcGF0L2ZpeHN0cnRvZC5jCit9CisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtcHJpdmF0ZS1oZWFkZXJzCisJbG4gLXNmIC4vdGNsc2gke1ZFUn0gJHtEfSR7YmluZGlyfS90Y2xzaAorCWxuIC1zZiB0Y2xzaDguNiAke0R9JHtiaW5kaXJ9L3RjbHNoJHtWRVJ9CisJc2VkIC1pICJzOy1MJHtCfTstTCR7U1RBR0lOR19MSUJESVJ9O2ciIHRjbENvbmZpZy5zaAorCXNlZCAtaSAiczsnJHtXT1JLRElSfTsnJHtTVEFHSU5HX0lOQ0RJUn07ZyIgdGNsQ29uZmlnLnNoCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQorCWluc3RhbGwgLW0gMDc1NSB0Y2xDb25maWcuc2ggJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KKwlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2xpYmRpcn0KKwlmb3IgZGlyIGluIGNvbXBhdCBnZW5lcmljIHVuaXg7IGRvCisJCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vLi4vJGRpci8qLmggJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIvCisJZG9uZQorfQorCitTWVNST09UX0RJUlMgKz0gIiR7YmluZGlyX2Nyb3Nzc2NyaXB0c30iCisKK1BBQ0tBR0VTID0rICJ0Y2wtbGliIgorRklMRVNfdGNsLWxpYiA9ICIke2xpYmRpcn0vbGlidGNsOC42LnNvLioiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RjbCR7VkVSfSAke2xpYmRpcn0vdGNsOC42ICR7bGliZGlyfS90Y2w4IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdGNsQ29uZmlnLnNoICR7bGliZGlyfS90Y2xvb0NvbmZpZy5zaCIKKworIyBpc24ndCBnZXR0aW5nIHBpY2tlZCB1cCBieSBzaGxpYnMgY29kZQorUkRFUEVORFNfJHtQTn0gKz0gInRjbC1saWIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmdjYyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgdGNsdGVzdAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwICR7Qn0vdGNsdGVzdCAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7U30vLi4vbGlicmFyeSAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7U30vLi4vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworIyBGaXggc29tZSBwYXRocyB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgVGNsIGV4dGVuc2lvbnMKK0JJTkNPTkZJR19HTE9CID0gIipDb25maWcuc2giCisKKyMgRml4IHRoZSBwYXRoIGluIHNzdGF0ZQorU1NUQVRFX1NDQU5fRklMRVMgKz0gIipDb25maWcuc2giCisKKyMgQ2xlYW51cCBob3N0IHBhdGggZnJvbSAke2xpYmRpcn0vdGNsQ29uZmlnLnNoIGFuZCByZW1vdmUgdGhlCisjICR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoIGZyb20gdGFyZ2V0CitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInRjbF9wYWNrYWdlX3ByZXByb2Nlc3MiCit0Y2xfcGFja2FnZV9wcmVwcm9jZXNzKCkgeworCXNlZCAtaSAtZSAiczske0RFQlVHX1BSRUZJWF9NQVB9OztnIiBcCisJICAgICAgIC1lICJzOy1MJHtTVEFHSU5HX0xJQkRJUn07LUwke2xpYmRpcn07ZyIgXAorCSAgICAgICAtZSAiczske1NUQUdJTkdfSU5DRElSfTske2luY2x1ZGVkaXJ9O2ciIFwKKwkgICAgICAgLWUgInM7LS1zeXNyb290PSR7UkVDSVBFX1NZU1JPT1R9OztnIiBcCisJICAgICAgICR7UEtHRH0ke2xpYmRpcn0vdGNsQ29uZmlnLnNoCisKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS90Y2xDb25maWcuc2gKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYwppbmRleCAxMjYxYzAyLi5iMjJmYWFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jCkBAIC0zNCw2ICszNCw4IEBACiAgICAgICAgIGNobW9kICt4ICR7Qn0vdmFwaWdlbi13cmFwcGVyCiB9CiAKK0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1ncmFwaHZpeiIKKwogIyBWYXBpZ2VuIHdyYXBwZXIgbmVlZHMgdG8gYmUgYXZhaWxhYmxlIHN5c3RlbS13aWRlLCBiZWNhdXNlIGl0IHdpbGwgYmUgdXNlZAogIyB0byBidWlsZCB2YXBpIGZpbGVzIGZyb20gYWxsIG90aGVyIHBhY2thZ2VzIHdpdGggdmFsYSBzdXBwb3J0CiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS8wMDAxLURpc2FibGUtdmFsYWRvYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLzAwMDEtRGlzYWJsZS12YWxhZG9jLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMjdiN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS8wMDAxLURpc2FibGUtdmFsYWRvYy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGI2Y2EzODc2ZTIzM2M3MjRmZDQ2MGMxNTc5YWJjNGFiNjNjOGQwMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNCBPY3QgMjAxNyAxNToyMzowOCArMDMwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIHZhbGFkb2MKKworVmFsYWRvYyBpcyBhIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZvciBWYWxhIHNvdXJjZXMsIHdoaWNoIHdhcworcmVjZW50bHkgbWVyZ2VkIGludG8gdGhlIG1haW4gdmFsYSBzb3VyY2UgdHJlZS4gVW5zdXJwcmlzaW5nbHksCitpdCdzIGJyb2tlbiBpbiBjcm9zcy1jb21waWxlIGVudmlyb25tZW50IGluIG11bHRpcGxlIHdheXMsCitzbyBsZXQncyBmaXggaXQgc29tZSBvdGhlciB0aW1lLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmFtIHwgMiAtLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggZTVkYzBjYy4uODEzYjNmYyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTEzLDggKzEzLDYgQEAgU1VCRElSUyA9IFwKKyAJZG9jIFwKKyAJZ29iamVjdC1pbnRyb3NwZWN0aW9uIFwKKyAJdmFwaWdlbiBcCistCWxpYnZhbGFkb2MgXAorLQl2YWxhZG9jIFwKKyAJJChOVUxMKQorIAorIGlmIEVOQUJMRV9VTlZFUlNJT05FRAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEvZGlzYWJsZS1ncmFwaHZpei5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhL2Rpc2FibGUtZ3JhcGh2aXoucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVkMTg2ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhL2Rpc2FibGUtZ3JhcGh2aXoucGF0Y2gKQEAgLTAsMCArMSwyMjMgQEAKK0Zyb20gZWI3MTZkYzg1NmMyMGIzZGExNDZhNGU4M2U5ODAwYmQxZjUzYzczOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY28gVHpzY2hpY2hob2x6IDxyaWNvdHpAdWJ1bnR1LmNvbT4KK0RhdGU6IFdlZCwgNiBTZXAgMjAxNyAxODo1Mjo1NSArMDIwMAorU3ViamVjdDogW1BBVENIXSBsaWJ2YWxhZG9jOiBBbGxvdyBkaXNhYmxpbmcgdGhlIGdyYXBodml6IGRlcGVuZGVuY3kgb2YKKyB2YWxhZG9jCisKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODczNzUKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2J1Z3ppbGxhIGxpbmsgYWJvdmVdCistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjAgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyBsaWJ2YWxhZG9jL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKystLS0tCisgbGlidmFsYWRvYy9odG1sL2Jhc2ljZG9jbGV0LnZhbGEgICAgICB8ICA4ICsrKysrCisgbGlidmFsYWRvYy9odG1sL2h0bWxtYXJrdXB3cml0ZXIudmFsYSB8ICA0ICsrKworIDQgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGM3M2Q1ZDZiMS4uMjkxZTUwM2Q1IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC05OCwzNCArOTgsMzggQEAgUEtHX0NIRUNLX01PRFVMRVMoR01PRFVMRSwgZ21vZHVsZS0yLjAgPj0gJEdMSUJfUkVRVUlSRUQpCisgQUNfU1VCU1QoR01PRFVMRV9DRkxBR1MpCisgQUNfU1VCU1QoR01PRFVMRV9MSUJTKQorIAorLVBLR19DSEVDS19NT0RVTEVTKExJQkdWQywgbGliZ3ZjID49ICRMSUJHVkNfUkVRVUlSRUQpCistQUNfTVNHX0NIRUNLSU5HKFtmb3IgQ0dSQVBIXSkKKy1jZ3JhcGhfdG1wX0xJQkFERD0iJExJQkFERCIKKy1jZ3JhcGhfdG1wX0NGTEFHUz0iJENGTEFHUyIKKy1MSUJBREQ9IiRMSUJBREQgJExJQkdWQ19MSUJTIgorLUNGTEFHUz0iJENGTEFHUyAkTElCR1ZDX0NGTEFHUyIKKy1BQ19SVU5fSUZFTFNFKAorLQlbQUNfTEFOR19TT1VSQ0UoWworLQkJI2luY2x1ZGUgPGd2Yy5oPgorLQorLQkJaW50IG1haW4odm9pZCkgeworLQkJCSNpZmRlZiBXSVRIX0NHUkFQSAorLQkJCQlyZXR1cm4gMDsKKy0JCQkjZWxzZQorLQkJCQlyZXR1cm4gLTE7CistCQkJI2VuZGlmCistCQl9CistCV0pXSwgWworLQkJQUNfTVNHX1JFU1VMVChbeWVzXSkKKy0JCVZBTEFGTEFHUz0iJFZBTEFGTEFHUyAtRCBXSVRIX0NHUkFQSCIKKy0JCWhhdmVfY2dyYXBoPXllcworLQldLCBbCistCQlBQ19NU0dfUkVTVUxUKFtub10pCistCQloYXZlX2NncmFwaD1ubworLQldCistKQorLUxJQkFERD0iJGNncmFwaF90bXBfTElCQUREIgorLUNGTEFHUz0iJGNncmFwaF90bXBfQ0ZMQUdTIgorK0FDX0FSR19FTkFCTEUoZ3JhcGh2aXosIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtZ3JhcGh2aXpdLCBbRGlzYWJsZSBncmFwaHZpeiB1c2FnZSBmb3IgdmFsYWRvY10pLCBlbmFibGVfZ3JhcGh2aXo9JGVuYWJsZXZhbCwgZW5hYmxlX2dyYXBodml6PXllcykKKytpZiB0ZXN0IHgkZW5hYmxlX2dyYXBodml6ID0geHllczsgdGhlbgorKwlQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHVkMsIGxpYmd2YyA+PSAkTElCR1ZDX1JFUVVJUkVEKQorKwlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBDR1JBUEhdKQorKwlWQUxBRkxBR1M9IiRWQUxBRkxBR1MgLUQgSEFWRV9HUkFQSFZJWiIKKysJY2dyYXBoX3RtcF9MSUJBREQ9IiRMSUJBREQiCisrCWNncmFwaF90bXBfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwlMSUJBREQ9IiRMSUJBREQgJExJQkdWQ19MSUJTIgorKwlDRkxBR1M9IiRDRkxBR1MgJExJQkdWQ19DRkxBR1MiCisrCUFDX1JVTl9JRkVMU0UoCisrCQlbQUNfTEFOR19TT1VSQ0UoWworKwkJCSNpbmNsdWRlIDxndmMuaD4KKysJCQlpbnQgbWFpbih2b2lkKSB7CisrCQkJCSNpZmRlZiBXSVRIX0NHUkFQSAorKwkJCQkJcmV0dXJuIDA7CisrCQkJCSNlbHNlCisrCQkJCQlyZXR1cm4gLTE7CisrCQkJCSNlbmRpZgorKwkJCX0KKysJCV0pXSwgWworKwkJCUFDX01TR19SRVNVTFQoW3llc10pCisrCQkJVkFMQUZMQUdTPSIkVkFMQUZMQUdTIC1EIFdJVEhfQ0dSQVBIIgorKwkJCWhhdmVfY2dyYXBoPXllcworKwkJXSwgWworKwkJCUFDX01TR19SRVNVTFQoW25vXSkKKysJCQloYXZlX2NncmFwaD1ubworKwkJXQorKwkpCisrCUxJQkFERD0iJGNncmFwaF90bXBfTElCQUREIgorKwlDRkxBR1M9IiRjZ3JhcGhfdG1wX0NGTEFHUyIKKytmaQorK0FNX0NPTkRJVElPTkFMKEVOQUJMRV9HUkFQSFZJWiwgdGVzdCB4JGVuYWJsZV9ncmFwaHZpeiA9IHh5ZXMpCisgQU1fQ09ORElUSU9OQUwoSEFWRV9DR1JBUEgsIHRlc3QgIiRoYXZlX2NncmFwaCIgPSAieWVzIikKKyAKKyBBQ19QQVRIX1BST0coW1hTTFRQUk9DXSwgW3hzbHRwcm9jXSwgOikKK2RpZmYgLS1naXQgYS9saWJ2YWxhZG9jL01ha2VmaWxlLmFtIGIvbGlidmFsYWRvYy9NYWtlZmlsZS5hbQoraW5kZXggODkyNDVkODZiLi43YzA3NDk4YjkgMTAwNjQ0CistLS0gYS9saWJ2YWxhZG9jL01ha2VmaWxlLmFtCisrKysgYi9saWJ2YWxhZG9jL01ha2VmaWxlLmFtCitAQCAtMTI3LDEwICsxMjcsNiBAQCBsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTID0gXAorIAljb250ZW50L3RhYmxlcm93LnZhbGEgXAorIAljb250ZW50L3RhZ2xldC52YWxhIFwKKyAJY29udGVudC90ZXh0LnZhbGEgXAorLQljaGFydHMvY2hhcnQudmFsYSBcCistCWNoYXJ0cy9jaGFydGZhY3RvcnkudmFsYSBcCistCWNoYXJ0cy9oaWVyYXJjaHljaGFydC52YWxhIFwKKy0JY2hhcnRzL3NpbXBsZWNoYXJ0ZmFjdG9yeS52YWxhIFwKKyAJcGFyc2VyL21hbnlydWxlLnZhbGEgXAorIAlwYXJzZXIvb25lb2ZydWxlLnZhbGEgXAorIAlwYXJzZXIvb3B0aW9uYWxydWxlLnZhbGEgXAorQEAgLTE1OCwxMyArMTU0LDI0IEBAIGxpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVMgPSBcCisgCWhpZ2hsaWdodGVyL2NvZGV0b2tlbi52YWxhIFwKKyAJaGlnaGxpZ2h0ZXIvaGlnaGxpZ2h0ZXIudmFsYSBcCisgCWh0bWwvYmFzaWNkb2NsZXQudmFsYSBcCistCWh0bWwvaHRtbGNoYXJ0ZmFjdG9yeS52YWxhIFwKKyAJaHRtbC9saW5raGVscGVyLnZhbGEgXAorIAlodG1sL2Nzc2NsYXNzcmVzb2x2ZXIudmFsYSBcCisgCWh0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhIFwKKyAJaHRtbC9odG1scmVuZGVyZXIudmFsYSBcCisgCSQoTlVMTCkKKyAKKytpZiBFTkFCTEVfR1JBUEhWSVoKKytsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTICs9IFwKKysJY2hhcnRzL2NoYXJ0LnZhbGEgXAorKwljaGFydHMvY2hhcnRmYWN0b3J5LnZhbGEgXAorKwljaGFydHMvaGllcmFyY2h5Y2hhcnQudmFsYSBcCisrCWNoYXJ0cy9zaW1wbGVjaGFydGZhY3RvcnkudmFsYSBcCisrCWh0bWwvaHRtbGNoYXJ0ZmFjdG9yeS52YWxhIFwKKysJJChOVUxMKQorKworK0xJQkdWQ19QS0cgPSAtLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS92YXBpIC0tcGtnIGxpYmd2YworK2VuZGlmCisrCisgbGlidmFsYWRvY0BQQUNLQUdFX1NVRkZJWEBfbGFfU09VUkNFUyA9IFwKKyAJbGlidmFsYWRvYy52YWxhLnN0YW1wIFwKKyAJJChsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTOi52YWxhPS5jKSBcCitAQCAtMTgyLDggKzE4OSw4IEBAIGxpYnZhbGFkb2MudmFsYS5zdGFtcDogJChsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTKQorIAkJLS1saWJyYXJ5IHZhbGFkb2MgXAorIAkJLS12YXBpIHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALnZhcGkgXAorIAkJLS12YXBpZGlyICQodG9wX3NyY2RpcikvdmFwaSAtLXBrZyBnbW9kdWxlLTIuMCBcCistCQktLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS92YXBpIC0tcGtnIGxpYmd2YyBcCisgCQktLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS9nZWUgLS1wa2cgZ2VlIFwKKysJCSQoTElCR1ZDX1BLRykgXAorIAkJLS1wa2cgY29uZmlnIFwKKyAJCSQoZmlsdGVyICUudmFsYSAlLmMsJF4pCisgCXRvdWNoICRACitAQCAtMjA5LDYgKzIxNiw5IEBAIG5vZGlzdF9wa2djb25maWdfREFUQSA9IHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALnBjCisgCisgdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAucGM6IHZhbGFkb2MucGMKKyAJY3AgJDwgJEAKKytpZiAhRU5BQkxFX0dSQVBIVklaCisrCXNlZCAtaSAicy9saWJndmMgLy9nIiAkQAorK2VuZGlmCisgCisgdmFwaWRpciA9ICQoZGF0YWRpcikvdmFsYS92YXBpCisgZGlzdF92YXBpX0RBVEEgPSB2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQC52YXBpCitAQCAtMjE2LDYgKzIyNiw5IEBAIG5vZGlzdF92YXBpX0RBVEEgPSB2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQC5kZXBzCisgCisgdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAuZGVwczogdmFsYWRvYy5kZXBzCisgCWNwICQ8ICRACisraWYgIUVOQUJMRV9HUkFQSFZJWgorKwlzZWQgLWkgInMvbGliZ3ZjLy9nIiAkQAorK2VuZGlmCisgCisgRVhUUkFfRElTVCA9IFwKKyAJJChsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTKSBcCitkaWZmIC0tZ2l0IGEvbGlidmFsYWRvYy9odG1sL2Jhc2ljZG9jbGV0LnZhbGEgYi9saWJ2YWxhZG9jL2h0bWwvYmFzaWNkb2NsZXQudmFsYQoraW5kZXggY2M5ZWE0ZWQ3Li40MzJjMzgxOGYgMTAwNjQ0CistLS0gYS9saWJ2YWxhZG9jL2h0bWwvYmFzaWNkb2NsZXQudmFsYQorKysrIGIvbGlidmFsYWRvYy9odG1sL2Jhc2ljZG9jbGV0LnZhbGEKK0BAIC00Niw3ICs0NiwxMSBAQCBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVmFsYWRvYy5IdG1sLkJhc2ljRG9jbGV0IDogQXBpLlZpc2l0b3IsIERvY2xldCB7CisgCXByb3RlY3RlZCBIdG1sUmVuZGVyZXIgX3JlbmRlcmVyOworIAlwcm90ZWN0ZWQgSHRtbC5NYXJrdXBXcml0ZXIgd3JpdGVyOworIAlwcm90ZWN0ZWQgSHRtbC5Dc3NDbGFzc1Jlc29sdmVyIGNzc3Jlc29sdmVyOworKyNpZiBIQVZFX0dSQVBIVklaCisgCXByb3RlY3RlZCBDaGFydHMuRmFjdG9yeSBpbWFnZV9mYWN0b3J5OworKyNlbHNlCisrCXByb3RlY3RlZCB2b2lkKiBpbWFnZV9mYWN0b3J5OworKyNlbmRpZgorIAlwcm90ZWN0ZWQgRXJyb3JSZXBvcnRlciByZXBvcnRlcjsKKyAJcHJvdGVjdGVkIHN0cmluZyBwYWNrYWdlX2xpc3RfbGluayA9ICIuLi9pbmRleC5odG1sIjsKKyAKK0BAIC0xMjAsNyArMTI0LDkgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIFZhbGFkb2MuSHRtbC5CYXNpY0RvY2xldCA6IEFwaS5WaXNpdG9yLCBEb2NsZXQgeworIAkJdGhpcy5saW5rZXIgPSBuZXcgTGlua0hlbHBlciAoKTsKKyAKKyAJCV9yZW5kZXJlciA9IG5ldyBIdG1sUmVuZGVyZXIgKHNldHRpbmdzLCB0aGlzLmxpbmtlciwgdGhpcy5jc3NyZXNvbHZlcik7CisrI2lmIEhBVkVfR1JBUEhWSVoKKyAJCXRoaXMuaW1hZ2VfZmFjdG9yeSA9IG5ldyBTaW1wbGVDaGFydEZhY3RvcnkgKHNldHRpbmdzLCBsaW5rZXIpOworKyNlbmRpZgorIAl9CisgCisgCitAQCAtMTAyNSw2ICsxMDMxLDcgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIFZhbGFkb2MuSHRtbC5CYXNpY0RvY2xldCA6IEFwaS5WaXNpdG9yLCBEb2NsZXQgeworIAl9CisgCisgCXByb3RlY3RlZCB2b2lkIHdyaXRlX2ltYWdlX2Jsb2NrIChBcGkuTm9kZSBlbGVtZW50KSB7CisrI2lmIEhBVkVfR1JBUEhWSVoKKyAJCWlmIChlbGVtZW50IGlzIENsYXNzIHx8IGVsZW1lbnQgaXMgSW50ZXJmYWNlIHx8IGVsZW1lbnQgaXMgU3RydWN0KSB7CisgCQkJdW5vd25lZCBzdHJpbmcgZm9ybWF0ID0gKHNldHRpbmdzLnVzZV9zdmdfaW1hZ2VzID8gInN2ZyIgOiAicG5nIik7CisgCQkJdmFyIGNoYXJ0ID0gbmV3IENoYXJ0cy5IaWVyYXJjaHkgKGltYWdlX2ZhY3RvcnksIGVsZW1lbnQpOworQEAgLTEwNDQsNiArMTA1MSw3IEBAIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBWYWxhZG9jLkh0bWwuQmFzaWNEb2NsZXQgOiBBcGkuVmlzaXRvciwgRG9jbGV0IHsKKyAJCQkJCQkJCQkgICB0aGlzLmdldF9pbWdfcGF0aF9odG1sIChlbGVtZW50LCBmb3JtYXQpfSk7CisgCQkJd3JpdGVyLmFkZF91c2VtYXAgKGNoYXJ0KTsKKyAJCX0KKysjZW5kaWYKKyAJfQorIAorIAlwdWJsaWMgdm9pZCB3cml0ZV9uYW1lc3BhY2VfY29udGVudCAoTmFtZXNwYWNlIG5vZGUsIEFwaS5Ob2RlPyBwYXJlbnQpIHsKK2RpZmYgLS1naXQgYS9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhIGIvbGlidmFsYWRvYy9odG1sL2h0bWxtYXJrdXB3cml0ZXIudmFsYQoraW5kZXggMTVlZDllZmQxLi5mZTBkNzA1ZDQgMTAwNjQ0CistLS0gYS9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhCisrKysgYi9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhCitAQCAtNDMsMTIgKzQzLDE2IEBAIHB1YmxpYyBjbGFzcyBWYWxhZG9jLkh0bWwuTWFya3VwV3JpdGVyIDogVmFsYWRvYy5NYXJrdXBXcml0ZXIgeworIAkJfSwgeG1sX2RlY2xhcmF0aW9uKTsKKyAJfQorIAorKyNpZiBIQVZFX0dSQVBIVklaCisgCXB1YmxpYyBNYXJrdXBXcml0ZXIgYWRkX3VzZW1hcCAoQ2hhcnRzLkNoYXJ0IGNoYXJ0KSB7CisgCQlzdHJpbmc/IGJ1ZiA9IChzdHJpbmc/KSBjaGFydC53cml0ZV9idWZmZXIgKCJjbWFweCIpOworIAkJaWYgKGJ1ZiAhPSBudWxsKSB7CisgCQkJcmF3X3RleHQgKCJcbiIpOworIAkJCXJhd190ZXh0ICgoISkgYnVmKTsKKyAJCX0KKysjZWxzZQorKwlwdWJsaWMgTWFya3VwV3JpdGVyIGFkZF91c2VtYXAgKHZvaWQqIGNoYXJ0KSB7CisrI2VuZGlmCisgCisgCQlyZXR1cm4gdGhpczsKKyAJfQorLS0gCisyLjE0LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEwMDBkOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM2LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJICs9ICIgZmlsZTovLzAwMDEtZ2l0LXZlcnNpb24tZ2VuLWRvbi10LWFwcGVuZC1kaXJ0eS1pZi13ZS1yZS1ub3QtaW4tZy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDEtdmFwaWdlbi5tNC11c2UtUEtHX0NPTkZJR19TWVNST09UX0RJUi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYzE5MDE0MDkzZjFhM2Q5OTUzNTcyNTNiNDYzMDgyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOWYyM2NlNzExYzFhNzJjZTY2NGQxMDk0NmZiYzU5NTNmMDFiMGI3ZjJhMzU2MmU3YTAxZTM2MmQ4NmRlMDU5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zOC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zOC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYmFmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM4LjguYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMS1naXQtdmVyc2lvbi1nZW4tZG9uLXQtYXBwZW5kLWRpcnR5LWlmLXdlLXJlLW5vdC1pbi1nLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKKwkgICAgIGZpbGU6Ly9kaXNhYmxlLWdyYXBodml6LnBhdGNoIFwKKwkgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtdmFsYWRvYy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzN2VkZDA0NjdkMDU2ZmQ5ZTM5MzdkMGJiY2VkYTgwYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZmE3NDZiNTFjZDY2ZTQzNTc3ZDFkYTA2YTgwYjcwOGMyODc1Y2FkYWFmZWU3N2U5NzAwZWEzNWNmMjM4ODJjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXJlbW92ZS1ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1yZW1vdmUtcnBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MTEyZGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXJlbW92ZS1ycGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gZjk2Y2YxZjRlYWE3Mjg2MGFiOGI1ZTE4YWQxMGZkYzcwNGQ3OGM1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxNSBEZWMgMjAxNSAxNTowMTozNCArMDIwMAotU3ViamVjdDogW1BBVENIIDIvNV0gcmVtb3ZlIHJwYXRoCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgY29uZmlnXQotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotLS0tCi0gbm9uZS90ZXN0cy9NYWtlZmlsZS5hbSB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbm9uZS90ZXN0cy9NYWtlZmlsZS5hbSBiL25vbmUvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDU0ZjJhN2UuLjI1YjBmNDkgMTAwNjQ0Ci0tLS0gYS9ub25lL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9ub25lL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMzI2LDcgKzMyNiw2IEBAIHRocmVhZGVkZXJybm9fQ0ZMQUdTCSs9IC0tc3RkPWM5OQotIGVuZGlmCi0gdGxzX1NPVVJDRVMJCT0gdGxzLmMgdGxzMi5jCi0gdGxzX0RFUEVOREVOQ0lFUwk9IHRscy5zbyB0bHMyLnNvCi0tdGxzX0xERkxBR1MJCT0gLVdsLC1ycGF0aCwkKGFic190b3BfYnVpbGRkaXIpL25vbmUvdGVzdHMKLSB0bHNfTERBREQJCT0gdGxzLnNvIHRsczIuc28gLWxwdGhyZWFkCi0gdGxzX3NvX1NPVVJDRVMJCT0gdGxzX3NvLmMKLSB0bHNfc29fREVQRU5ERU5DSUVTCT0gdGxzMi5zbwotQEAgLTMzNCw3ICszMzMsNyBAQCBpZiBWR0NPTkZfT1NfSVNfREFSV0lOCi0gIHRsc19zb19MREZMQUdTCQk9IC1keW5hbWljIC1keW5hbWljbGliIC1hbGxfbG9hZCAtZnBpYwotICB0bHNfc29fTERBREQJCT0gYHB3ZGAvdGxzMi5zbwotIGVsc2UKLS0gdGxzX3NvX0xERkxBR1MJCT0gLVdsLC1ycGF0aCwkKGFic190b3BfYnVpbGRkaXIpL25vbmUvdGVzdHMgLXNoYXJlZCAtZlBJQwotKyB0bHNfc29fTERGTEFHUwkJPSAtc2hhcmVkIC1mUElDCi0gIHRsc19zb19MREFERAkJPSB0bHMyLnNvCi0gZW5kaWYKLSB0bHNfc29fQ0ZMQUdTCQk9ICQoQU1fQ0ZMQUdTKSAtZlBJQwotLS0gCi0yLjYuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL21hc2stQ1BVSUQtc3VwcG9ydC1pbi1IV0NBUC1vbi1hYXJjaDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9tYXNrLUNQVUlELXN1cHBvcnQtaW4tSFdDQVAtb24tYWFyY2g2NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWE5NWI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9tYXNrLUNQVUlELXN1cHBvcnQtaW4tSFdDQVAtb24tYWFyY2g2NC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGaXggcnVudGltZSBWYWxncmluZCBmYWlsdXJlCisKK1RoaXMgcGF0Y2ggaXMgZGVyaXZlZCBmcm9tCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE0NjQyMTEKKworQXQgcnVudGltZSBpdCB3aWxsIGZhaWxzIGxpa2UgdGhpczoKKworQVJNNjQgZnJvbnQgZW5kOiBicmFuY2hfZXRjCitkaXNJbnN0cihhcm02NCk6IHVuaGFuZGxlZCBpbnN0cnVjdGlvbiAweEQ1MzgwMDAxCitkaXNJbnN0cihhcm02NCk6IDExMDEnMDEwMSAwMDExJzEwMDAgMDAwMCcwMDAwIDAwMDAnMDAwMSA9PTIwODI9PQordmFsZ3JpbmQ6IFVucmVjb2duaXNlZCBpbnN0cnVjdGlvbiBhdCBhZGRyZXNzIDB4NDAxNGU2NC4KKworVGhpcyBwYXRjaCBpcyBhIHdvcmthcm91bmQgYnkgbWFza2luZyBhbGwgSFdDQVAKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hbmp1a3VtYXIgTWF0aGEgPG1hbmp1a3VtYXIuaGFydGhpa290ZS1tYXRoYUB4aWxpbnguY29tPgorCitJbmRleDogdmFsZ3JpbmQtMy4xMy4wL2NvcmVncmluZC9tX2luaXRpbWcvaW5pdGltZy1saW51eC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tLSB2YWxncmluZC0zLjEzLjAub3JpZy9jb3JlZ3JpbmQvbV9pbml0aW1nL2luaXRpbWctbGludXguYyAgIDIwMTgtMDMtMDQgMjI6MjI6MTcuNjk4NTcyNjc1IC0wODAwCisrKysgdmFsZ3JpbmQtMy4xMy4wL2NvcmVncmluZC9tX2luaXRpbWcvaW5pdGltZy1saW51eC5jICAgICAgICAyMDE4LTAzLTA0IDIyOjIzOjI1LjcyNzgxNTYyNCAtMDgwMAorQEAgLTcwMyw2ICs3MDMsMTIgQEAKKyAgICAgICAgICAgICAgICAgICAoYW5kIGFueXRoaW5nIGFib3ZlKSBhcmUgbm90IHN1cHBvcnRlZCBieSBWYWxncmluZC4gKi8KKyAgICAgICAgICAgICAgICBhdXh2LT51LmFfdmFsICY9IFZLSV9IV0NBUF9TMzkwX1RFIC0gMTsKKyAgICAgICAgICAgICB9CisrIyAgICAgICAgICAgZWxpZiBkZWZpbmVkKFZHUF9hcm02NF9saW51eCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgLyogTGludXggNC4xMSBzdGFydGVkIHBvcHVsYXRpbmcgdGhpcyBmb3IgYXJtNjQsIGJ1dCB3ZQorKyAgICAgICAgICAgICAgICAgIGN1cnJlbnRseSBkb24ndCBzdXBwb3J0IGFueS4gKi8KKysgICAgICAgICAgICAgICBhdXh2LT51LmFfdmFsID0gMDsKKysgICAgICAgICAgICB9CisgIyAgICAgICAgICAgZW5kaWYKKyAgICAgICAgICAgICBicmVhazsKKyAjICAgICAgICBpZiBkZWZpbmVkKFZHUF9wcGM2NGJlX2xpbnV4KSB8fCBkZWZpbmVkKFZHUF9wcGM2NGxlX2xpbnV4KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgppbmRleCBiZjNjZmQ3Li5kM2FmMzVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgpAQCAtMTYsNyArMTYsNiBAQAogICAgICAgICAgICBmaWxlOi8vZml4ZWQtcGVybC1wYXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0FkZGVkLXN1cHBvcnQtZm9yLVBQQy1pbnN0cnVjdGlvbnMtbWZhdGJ1LW1mYXRibC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1yZW1vdmUtcnBhdGgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDUtTW9kaWZ5LXZnX3Rlc3Qtd3JhcHBlci10by1zdXBwb3J0LVBURVNULWZvcm1hdHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGVzdHMtdGhhdC1mYWlsLXRvLWJ1aWxkLW9uLXNvbWUtUFBDMzItY29uZmlnLnBhdGNoIFwKQEAgLTM3LDYgKzM2LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtc2VnX292ZXJyaWRlLVJlcGxhY2UtX19tb2RpZnlfbGR0LXdpdGgtc3lzY2FsbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9saW5rLWd6LXRlc3RzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3BwYy1oZWFkZXJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21hc2stQ1BVSUQtc3VwcG9ydC1pbi1IV0NBUC1vbi1hYXJjaDY0LnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjgxN2RkMDhmMWU4YTY2MzM2YjlmZjIwNjQwMGE1MzY5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3NjY4MGVmMDNmMDBjZDVlOTcwYmJkY2Q0ZTU3ZmIxZjZkZjdkMmUyYzA3MTYzNWVmMmJlNzQ3OTAxOTBjM2IiCkBAIC04Niw2ICs4Niw4IEBACiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKICAgICBybSAtcmYgJHtTfS9jb25maWcuaAorICAgIHNlZCAtaSAtZSAnczokKGFic190b3BfYnVpbGRkaXIpOiQocGtnbGliZGlyKS9wdGVzdDpnJyAke1N9L25vbmUvdGVzdHMvTWFrZWZpbGUuYW0KKyAgICBzZWQgLWkgLWUgJ3M6JCh0b3BfYnVpbGRkaXIpOiQocGtnbGliZGlyKS9wdGVzdDpnJyAke1N9L21lbWNoZWNrL3Rlc3RzL01ha2VmaWxlLmFtCiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvemlzb2ZzLXRvb2xzL3ppc29mcy10b29scy1uYXRpdmVfMS4wLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ppc29mcy10b29scy96aXNvZnMtdG9vbHMtbmF0aXZlXzEuMC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjFjMDU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvemlzb2ZzLXRvb2xzL3ppc29mcy10b29scy1uYXRpdmVfMS4wLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0jIHppc29mcy10b29scy1uYXRpdmUgT0UgYnVpbGQgZmlsZQotIyBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi1TVU1NQVJZID0gIlV0aWxpdGllcyBmb3IgY3JlYXRpbmcgY29tcHJlc3NlZCBDRC1ST00gZmlsZXN5c3RlbXMiCi1IT01FUEFHRSA9ICJodHRwOi8vZnJlZWNvZGUuY29tL3Byb2plY3RzL3ppc29mcy10b29scyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotREVQRU5EUyA9ICJ6bGliLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9yZXBvL3BrZ3Mvemlzb2ZzLXRvb2xzL3ppc29mcy10b29scy0ke1BWfS50YXIuYnoyLzJkMGVkOGM5YTFmNjBiNDVmOTQ5YjEzNmY5YmUxZjZjL3ppc29mcy10b29scy0ke1BWfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmQwZWQ4YzlhMWY2MGI0NWY5NDliMTM2ZjliZTFmNmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWU0ZTUzZTQ5MTQ5MzRkNDE2NjAyNDhmYjU5ZDNjODc2MWYxZjFmZDE4MGQ1ZWM5OTNjMTdkZGIzYWZkMDRmMyIKLQotaW5oZXJpdCBuYXRpdmUKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgSU5TVEFMTFJPT1Q9JHtEfSBiaW5kaXI9JHtiaW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIKaW5kZXggODY4NTA1Yi4uNTFhZTc3YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTcwMzAzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE3MDMwMy5iYgpAQCAtMTcsNyArMTcsNiBAQAogREVQRU5EUyA9ICJiaXNvbiBmbGV4IgogCiBTUkNfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9zaXRlcy9hY3BpY2EvZmlsZXMvYWNwaWNhLXVuaXgyLSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL25vLXdlcnJvci5wYXRjaCBcCiAgICAgZmlsZTovL3JlbmFtZS15eV9zY2FuX3N0cmluZy1tYW51YWxseS5wYXRjaCBcCiAgICAgZmlsZTovL21hbmlwdWxhdGUtZmRzLWluc3RlYWQtb2YtRklMRS5wYXRjaDtzdHJpcGxldmVsPTIgXAogICAgIGZpbGU6Ly8wMDAxLUxpbnV4LWFkZC1zdXBwb3J0LWZvci1YMzItQUJJLWNvbXBpbGF0aW9uLnBhdGNoIFwKQEAgLTQ5LDcgKzQ4LDYgQEAKIFBST1ZJREVTID0gImlhc2wiCiBSUFJPVklERVNfJHtQTn0gKz0gImlhc2wiCiBSUkVQTEFDRVNfJHtQTn0gKz0gImlhc2wiCi1SQ09ORkxJR0hUU18ke1BOfSArPSAiaWFzbCIKK1JDT05GTElDVFNfJHtQTn0gKz0gImlhc2wiCiAKLU5BVElWRV9JTlNUQUxMX1dPUktTID0gIjEiCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL25vLXdlcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL25vLXdlcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZlN2I1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy9uby13ZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1EZXNjcmlwdGlvbjogcmVtb3ZlIC1XZXJyb3IgZmxhZwotRm9yd2FyZGVkOiBub3QtbmVlZGVkCi1BdXRob3I6IEZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdlbmVyYXRlL3VuaXgvaWFzbC9NYWtlZmlsZSB8ICAgMTIgKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotLS0tIGEvZ2VuZXJhdGUvdW5peC9pYXNsL01ha2VmaWxlCi0rKysgYi9nZW5lcmF0ZS91bml4L2lhc2wvTWFrZWZpbGUKLUBAIC0yNjYsMTkgKzI2NiwxOSBAQCAkKE9CSkRJUikvcHJwYXJzZXIueS5oOiAkKE9CSkRJUikvcHJwYXJzCi0gIyBieSB0aGUgdXRpbGl0aWVzIGFib3ZlIGFuZCB0aGV5IGFyZSBub3QgbmVjZXNzYXJpbHkgQU5TSSBDLCBldGMuCi0gIwotICQoT0JKRElSKS9hc2xjb21waWxlcmxleC5vIDogICAkKE9CSkRJUikvYXNsY29tcGlsZXJsZXguYwotLQkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLVdlcnJvciAtbyRAICQ8Ci0rCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtbyRAICQ8Ci0gCi0gJChPQkpESVIpL2FzbGNvbXBpbGVycGFyc2UubyA6ICQoT0JKRElSKS9hc2xjb21waWxlcnBhcnNlLmMKLS0JJChDQykgLWMgJChDRkxBR1MpIC1XYWxsIC1XZXJyb3IgLW8kQCAkPAotKwkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLW8kQCAkPAotIAotICQoT0JKRElSKS9kdHBhcnNlcmxleC5vIDogICAgICAkKE9CSkRJUikvZHRwYXJzZXJsZXguYwotLQkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLVdlcnJvciAtbyRAICQ8Ci0rCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtbyRAICQ8Ci0gCi0gJChPQkpESVIpL2R0cGFyc2VycGFyc2UubyA6ICAgICQoT0JKRElSKS9kdHBhcnNlcnBhcnNlLmMKLS0JJChDQykgLWMgJChDRkxBR1MpIC1XYWxsIC1XZXJyb3IgLW8kQCAkPAotKwkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLW8kQCAkPAotIAotICQoT0JKRElSKS9wcnBhcnNlcmxleC5vIDogICAgICAkKE9CSkRJUikvcHJwYXJzZXJsZXguYwotLQkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLVdlcnJvciAtbyRAICQ8Ci0rCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtbyRAICQ8CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L21ha2VmaWxlLWZpeC1wYXJhbGxlbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvbWFrZWZpbGUtZml4LXBhcmFsbGVsLnBhdGNoCmluZGV4IDkzMmE0YzAuLmQ2MDU2ZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvbWFrZWZpbGUtZml4LXBhcmFsbGVsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvbWFrZWZpbGUtZml4LXBhcmFsbGVsLnBhdGNoCkBAIC0xNSwxMyArMTUsMTMgQEAKICBNYWtlZmlsZSB8ICAgIDQgKysrLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDJhOWI5MTguLmFhN2MwNGEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC03NSw3ICs3NSw5IEBAIGF0OiAkKEFUT0JKRUNUUykKK0luZGV4OiBhdC0zLjEuMjAvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdC0zLjEuMjAub3JpZy9NYWtlZmlsZS5pbgorKysrIGF0LTMuMS4yMC9NYWtlZmlsZS5pbgorQEAgLTc2LDcgKzc2LDkgQEAgYXQ6ICQoQVRPQkpFQ1RTKQogIGF0ZDogJChSVU5PQkpFQ1RTKQotIAkkKENDKSAkKExERkxBR1MpIC1vIGF0ZCAkKFJVTk9CSkVDVFMpICQoTElCUykgJChQQU1MSUIpCisgCSQoQ0MpICQoTERGTEFHUykgLW8gYXRkICQoUlVOT0JKRUNUUykgJChMSUJTKSAkKFBBTUxJQikgJChTRUxJTlVYTElCKQogIAogLXkudGFiLmMgeS50YWIuaDogcGFyc2V0aW1lLnkKICt5LnRhYi5oOiB5LnRhYi5jCkBAIC0zMCw2ICszMCwzIEBACiAgCSQoWUFDQykgLWQgcGFyc2V0aW1lLnkKICAKICBsZXgueXkuYzogcGFyc2V0aW1lLmwKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0XzMuMS4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCmluZGV4IDliNTM3ZWUuLjhmZTNiNDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCkBAIC01LDcgKzUsNyBAQAogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKLURFUEVORFMgPSAiZmxleCBmbGV4LW5hdGl2ZSBcCitERVBFTkRTID0gImZsZXggZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIFwKICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKIAogUkRFUEVORFNfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fREVQU30nLCAnJywgZCl9IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYwppbmRleCBmNGUxZjdhLi45YzJiMDY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCkBAIC02LDcgKzYsNyBAQAogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBwdGVzdAogCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIC0tZXhjbHVkZT1hY2xvY2FsIgogRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWpvYi1jb250cm9sIC0td2l0aG91dC1iYXNoLW1hbGxvYyIKIAogIyBJZiBOT05fSU5URVJBQ1RJVkVfTE9HSU5fU0hFTExTIGlzIGRlZmluZWQsIGFsbCBsb2dpbiBzaGVsbHMgcmVhZCB0aGUKQEAgLTI1LDcgKzI1LDcgQEAKIFJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCiBSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKIAotREVQRU5EU19hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtbG9jYWxlIgorREVQRU5EU19hcHBlbmRfbGliYy1nbGliYyA9ICIgdmlydHVhbC9saWJjLWxvY2FsZSIKIFJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS1mci1mciBsb2NhbGUtYmFzZS1kZS1kZSIKIAogVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1wdGVzdCIKQEAgLTMzLDEyICszMyw2IEBACiAKIENBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJoZWFkZXJzZGlyPSR7aW5jbHVkZWRpcn0vJHtQTn0iCiAKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlpZiBbICEgLWUgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgotCQljYXQgJHtTfS9hY2xvY2FsLm00ID4gJHtTfS9hY2luY2x1ZGUubTQKLQlmaQotfQotCiBkb19jb21waWxlX3B0ZXN0ICgpIHsKIAlvZV9ydW5tYWtlIGJ1aWxkdGVzdAogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvZXhlY3V0ZV9jbWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9leGVjdXRlX2NtZC5wYXRjaAppbmRleCA4MWY4ZjBhLi45OTcwYjRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9leGVjdXRlX2NtZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9leGVjdXRlX2NtZC5wYXRjaApAQCAtMSw4ICsxLDEwIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCi0tLS0gZXhlY3V0ZV9jbWQuYy5vcmlnCUZyaSBKdW4gIDMgMTM6MzQ6NDIgMjAxMQotKysrIGV4ZWN1dGVfY21kLmMJRnJpIEp1biAgMyAxMzozNjo0MSAyMDExCi1AQCAtMjIwMiw3ICsyMjAyLDExIEBACitJbmRleDogZXhlY3V0ZV9jbWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGV4ZWN1dGVfY21kLmMub3JpZworKysrIGV4ZWN1dGVfY21kLmMKK0BAIC0yNDU5LDcgKzI0NTksMTEgQEAgZXhlY3V0ZV9waXBlbGluZSAoY29tbWFuZCwgYXN5bmNocm9ub3VzLAogICAgLyogSWYgdGhlIGBsYXN0cGlwZScgb3B0aW9uIGlzIHNldCB3aXRoIHNob3B0LCBhbmQgam9iIGNvbnRyb2wgaXMgbm90CiAgICAgICBlbmFibGVkLCBleGVjdXRlIHRoZSBsYXN0IGVsZW1lbnQgb2Ygbm9uLWFzeW5jIHBpcGVsaW5lcyBpbiB0aGUKICAgICAgIGN1cnJlbnQgc2hlbGwgZW52aXJvbm1lbnQuICovCkBAIC0xMyw1ICsxNSw1IEBACiArI2VuZGlmCiArCQlhc3luY2hyb25vdXMgPT0gMCAmJiBwaXBlX291dCA9PSBOT19QSVBFICYmIHByZXYgPiAwKQogICAgICB7Ci0gICAgICAgbHN0ZGluID0gbW92ZV90b19oaWdoX2ZkICgwLCAwLCAyNTUpOworICAgICAgIGxzdGRpbiA9IG1vdmVfdG9faGlnaF9mZCAoMCwgMSwgLTEpOwogICAgICAgIGlmIChsc3RkaW4gPiAwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvcGF0aGV4cC1kZXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9wYXRoZXhwLWRlcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDViYmRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvcGF0aGV4cC1kZXAucGF0Y2gKQEAgLTAsMCArMSwxMyBAQAorcGF0aGV4cCBpbmNsdWRlcyBsaWJpbnRsLmggYnV0IGRvZXNuJ3QgZGVwZW5kIG9uIGl0LCB0aHVzIGEgYnVpbGQgcmFjZSBjYW4gb2NjdXIuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIChodHRwczovL3NhdmFubmFoLmdudS5vcmcvcGF0Y2gvaW5kZXgucGhwPzk1MDMpCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggYzdiNjJiYzAuLjI0MWNiZjEyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTI4MSwyICsxMjgxLDMgQEAgbm9qb2JzLm86IGJhc2hpbnRsLmggJHtMSUJJTlRMX0h9ICQoQkFTSElOQ0RJUikvZ2V0dGV4dC5oCisgeS50YWIubzogYmFzaGludGwuaCAke0xJQklOVExfSH0gJChCQVNISU5DRElSKS9nZXR0ZXh0LmgKKytwYXRoZXhwLm86IGJhc2hpbnRsLmggJHtMSUJJTlRMX0h9ICQoQkFTSElOQ0RJUikvZ2V0dGV4dC5oCisgcGNvbXBsZXRlLm86IGJhc2hpbnRsLmggJHtMSUJJTlRMX0h9ICQoQkFTSElOQ0RJUikvZ2V0dGV4dC5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjQuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM4MmE3NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC4xMi5iYgpAQCAtMCwwICsxLDI0IEBACityZXF1aXJlIGJhc2guaW5jCisKKyMgR1BMdjIrICg8IDQuMCksIEdQTHYzKyAoPj0gNC4wKQorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2Jhc2gvJHtCUH0udGFyLmd6O25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgIGZpbGU6Ly9leGVjdXRlX2NtZC5wYXRjaDtzdHJpcGxldmVsPTAgXAorICAgICAgICAgICBmaWxlOi8vbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZC10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90ZXN0LW91dHB1dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWNvcHJvYy1ydW4taGVyZWRvYy1ydW4tZXhlY3NjcmlwdC1ydW4tdGVzdC1mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWJ1aWx0aW5zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaGVscC1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Jhc2gtbWVtbGVhay1idWctZml4LWZvci1idWlsdGluLWNvbW1hbmQtcmVhZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXRoZXhwLWRlcC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiN2MxMTI5NzBjYmRjYWRmYzMzMWUxMGVlYjVmNmFhNDEiCitTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICI1N2Q4NDMyYmU1NDU0MTUzMWE0OTZmZDQ5MDRmZGMwOGMxMjU0MmY0MzYwNWE5MjAyNTk0ZmE1ZDVmOWYyMzMxIgorCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTQ0ZDA3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLXJlcXVpcmUgYmFzaC5pbmMKLQotIyBHUEx2MisgKDwgNC4wKSwgR1BMdjMrICg+PSA0LjApCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmFzaC8ke0JQfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwMTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDEgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDAyO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwMiBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDM7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDAzIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwNDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDQgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwNSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDY7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA2IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwNzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDcgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA4O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwOCBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDk7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA5IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAxMDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTAgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDExO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxMSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMTI7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDEyIFwKLSAgICAgICAgICAgZmlsZTovL2V4ZWN1dGVfY21kLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9ta2J1aWx0aW5zX2hhdmVfc3RyaW5naXplLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1aWxkLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Rlc3Qtb3V0cHV0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tY29wcm9jLXJ1bi1oZXJlZG9jLXJ1bi1leGVjc2NyaXB0LXJ1bi10ZXN0LWYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tYnVpbHRpbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1oZWxwLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmFzaC1tZW1sZWFrLWJ1Zy1maXgtZm9yLWJ1aWx0aW4tY29tbWFuZC1yZWFkLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICIxNDg4ODhhN2M5NWFjMjM3MDU1NTliNmY0NzdkZmUyNSIKLVNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gImQ4NmIzMzkyYzEyMDJlOGZmNWE0MjNiMzAyZTYyODRkYjdmOGY0MzVlYTlmMzliNWIxYjIwZmQzYWMzNmRmY2IiCi0KLVNSQ19VUklbcGF0Y2gwMDEubWQ1c3VtXSA9ICI4MTdkMDFhNmMwYWY2Zjc5MzA4YThiN2I2NDllNTNkOCIKLVNSQ19VUklbcGF0Y2gwMDEuc2hhMjU2c3VtXSA9ICIzZTI4ZDkxNTMxNzUyZGY5YThjYjE2N2FkMDdjYzU0MmFiYWY5NDRkZTkzNTNmZThjNmE1MzVjOWYxZjE3ZjBmIgotU1JDX1VSSVtwYXRjaDAwMi5tZDVzdW1dID0gIjc2NWUxNGNmZjEyYzcyODQwMDk3NzJlOGUyNGYyZmUwIgotU1JDX1VSSVtwYXRjaDAwMi5zaGEyNTZzdW1dID0gIjcwMjBhMDE4M2UxN2E3MjMzZTY2NWI5NzljNzhjMTg0ZWEzNjljZmFmM2U4YjRiMTFmNTU0N2VjYjdjMTNjNTMiCi1TUkNfVVJJW3BhdGNoMDAzLm1kNXN1bV0gPSAiNDllN2RhOTNiZjA3ZjUxMGEyZWI2YmI0M2FjM2U1YTIiCi1TUkNfVVJJW3BhdGNoMDAzLnNoYTI1NnN1bV0gPSAiNTFkZjVhOTE5MmZkZWZlMGRkY2E0YmRmMjkwOTMyZjc0YmUwM2ZmZDA1MDNhM2QxMTJlNDE5OTkwNWU3MThiMiIKLVNSQ19VUklbcGF0Y2gwMDQubWQ1c3VtXSA9ICI0NTU3ZDY3NGFiNTgzMWE1ZmE5ODA1MmFiMTllZGFmNCIKLVNSQ19VUklbcGF0Y2gwMDQuc2hhMjU2c3VtXSA9ICJhZDA4MGEzMGE0YWM2YzEyNzMzNzM2MTdmMjk2MjhjYzMyMGEzNWM4Y2QwNjkxMzg5NDc5NDI5M2RjNTJjOGIzIgotU1JDX1VSSVtwYXRjaDAwNS5tZDVzdW1dID0gImNjZTk2ZGQ3N2NkZDFkMjkzYmVlYzEwODQ4ZjZjYmI1IgotU1JDX1VSSVtwYXRjaDAwNS5zaGEyNTZzdW1dID0gIjIyMWU0YjcyNWI3NzBhZDBiYjY5MjRkZjNmOGQwNGY4OWVlY2E0NTU4ZjZlNGM3NzdkZmE5M2U5NjcwOTA1MjkiCi1TUkNfVVJJW3BhdGNoMDA2Lm1kNXN1bV0gPSAiZDMzNzlmOGQ4YWJjZTVjNmVlMzM4ZjkzMWFkMDA4ZDUiCi1TUkNfVVJJW3BhdGNoMDA2LnNoYTI1NnN1bV0gPSAiNmE4ZTJlMmE2MTgwZDBmMWNlMzlkY2Q2NTE2MjJmYjZkMmZkMDVkYjdjNDU5ZjY0YWU0MmQ2NjdmMWUzNDRiOCIKLVNSQ19VUklbcGF0Y2gwMDcubWQ1c3VtXSA9ICJlYzM4Yzc2Y2E0MzljYTdmOWMxNzhlOWJhZWRlODRmYyIKLVNSQ19VUklbcGF0Y2gwMDcuc2hhMjU2c3VtXSA9ICJkZTFjY2MwN2I3YmZjOWUyNTI0M2FkODU0ZjNiYmI1ZDNlYmY5MTU1YjA0NzdkZjE2YWFmMDBhN2IwZDVlZGFmIgotU1JDX1VSSVtwYXRjaDAwOC5tZDVzdW1dID0gImUwYmExOGMxZTNiOTRmOTA1ZGE5YjViZjlkMzhiNThiIgotU1JDX1VSSVtwYXRjaDAwOC5zaGEyNTZzdW1dID0gIjg2MTQ0NzAwNDY1OTMzNjM2ZDdiOTQ1ZTg5Yjc3ZGY5NWQzNjIwMDM0NzI1YmUxNjFjYTBjYTVhNDJlMjM5YmEiCi1TUkNfVVJJW3BhdGNoMDA5Lm1kNXN1bV0gPSAiZTk1MmQ0ZjQ0ZTYxMjA0ODkzMGM1NTlkOTBlYjk5YmIiCi1TUkNfVVJJW3BhdGNoMDA5LnNoYTI1NnN1bV0gPSAiMGI2YmRkMWExOGEwZDIwZTMzMGNjM2JjNzFlMDQ4ODY0ZTRhMTM2NTJlMjlkYzBlYmYzOTE4YmVhNzI5MzQzYyIKLVNSQ19VUklbcGF0Y2gwMTAubWQ1c3VtXSA9ICI1N2I1YjM1OTU1ZDY4ZjlhMDlkYmVmNmI4NmQyYzc4MiIKLVNSQ19VUklbcGF0Y2gwMTAuc2hhMjU2c3VtXSA9ICI4NDY1YzZmMmM1NmFmZTU1OTQwMjI2NWIzOWQ5ZTk0MzY4OTU0OTMwZjlhYTdmM2RmYTZkMzZkZDY2ODY4ZTA2IgotU1JDX1VSSVtwYXRjaDAxMS5tZDVzdW1dID0gImNjODk2ZTFmYTY5NmI5M2RlZDU2OGU1NTdlMjM5MmQ1IgotU1JDX1VSSVtwYXRjaDAxMS5zaGEyNTZzdW1dID0gImRkNTY0MjZlZjdkNzI5NWUxMTA3YzBiM2QwNmMxOTJlYjkyOThmNDAyM2MyMDJjYTJiYTYyNjZjNjEzZDE3MGQiCi1TUkNfVVJJW3BhdGNoMDEyLm1kNXN1bV0gPSAiZmE0N2ZiZmE1NmZiN2U5ZTUzNjdmMTlhOWRmNWZjOWUiCi1TUkNfVVJJW3BhdGNoMDEyLnNoYTI1NnN1bV0gPSAiZmFjMjcxZDJiZjYzNzJjOTkwM2UzYjM1M2NiOWVkYTA0NGQ3ZmUzNmI1YWFiNTJmMjFmM2YyMWNkNmEyMDYzZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMS1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaAppbmRleCA1Mzc5ZWI2Li5kYjAxM2NmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2gKQEAgLTEwLDEyICsxMCwxMiBAQAogIHBwZGMvTWFrZWZpbGUgfCAgIDMwICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogIDEgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBjdXBzLTIuMC4wL3BwZGMvTWFrZWZpbGUKK0luZGV4OiBjdXBzLTIuMi42L3BwZGMvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdXBzLTIuMC4wLm9yaWcvcHBkYy9NYWtlZmlsZQotKysrIGN1cHMtMi4wLjAvcHBkYy9NYWtlZmlsZQotQEAgLTI0Miw4ICsyNDIsOCBAQCBnZW5zdHJpbmdzOgkJZ2Vuc3RyaW5ncy5vIGxpYmN1cHNwcGRjLmEKLSAJJChDWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIGdlbnN0cmluZ3MgZ2Vuc3RyaW5ncy5vIFwKKy0tLSBjdXBzLTIuMi42Lm9yaWcvcHBkYy9NYWtlZmlsZQorKysrIGN1cHMtMi4yLjYvcHBkYy9NYWtlZmlsZQorQEAgLTIyOCw4ICsyMjgsOCBAQCBnZW5zdHJpbmdzOgkJZ2Vuc3RyaW5ncy5vIGxpYmN1cHNwcGRjLmEKKyAJJChMRF9DWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIGdlbnN0cmluZ3MgZ2Vuc3RyaW5ncy5vIFwKICAJCWxpYmN1cHNwcGRjLmEgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpICQoTElCR1NTQVBJKSAkKFNTTExJQlMpIFwKICAJCSQoRE5TU0RMSUJTKSAkKENPTU1PTkxJQlMpICQoTElCWikKIC0JZWNobyBHZW5lcmF0aW5nIGxvY2FsaXphdGlvbiBzdHJpbmdzLi4uCkBAIC0yNSw4ICsyNSw4IEBACiAgCiAgCiAgIwotQEAgLTI2MCw5ICsyNjAsOSBAQCBwcGRjLXN0YXRpYzoJCXBwZGMubyBsaWJjdXBzcHBkYy5hIC4uL2N1Ci0gCSQoQ1hYKSAkKEFSQ0hGTEFHUykgJChMREZMQUdTKSAtbyBwcGRjLXN0YXRpYyBwcGRjLm8gbGliY3Vwc3BwZGMuYSBcCitAQCAtMjQ2LDkgKzI0Niw5IEBAIHBwZGMtc3RhdGljOgkJcHBkYy5vIGxpYmN1cHNwcGRjLmEgLi4vY3UKKyAJJChMRF9DWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIHBwZGMtc3RhdGljIHBwZGMubyBsaWJjdXBzcHBkYy5hIFwKICAJCS4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSAkKExJQkdTU0FQSSkgJChTU0xMSUJTKSAkKEROU1NETElCUykgXAogIAkJJChDT01NT05MSUJTKSAkKExJQlopCiAtCWVjaG8gVGVzdGluZyBQUEQgY29tcGlsZXIuLi4KQEAgLTM4LDggKzM4LDggQEAKICAKICAKICAjCi1AQCAtMjg4LDE3ICsyODgsMTcgQEAgcHBkaS1zdGF0aWM6CQlwcGRjLXN0YXRpYyBwcGRpLm8gbGliY3VwcwotIAkkKENYWCkgJChBUkNIRkxBR1MpICQoTERGTEFHUykgLW8gcHBkaS1zdGF0aWMgcHBkaS5vIGxpYmN1cHNwcGRjLmEgXAorQEAgLTI3NCwxNyArMjc0LDE3IEBAIHBwZGktc3RhdGljOgkJcHBkYy1zdGF0aWMgcHBkaS5vIGxpYmN1cHMKKyAJJChMRF9DWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIHBwZGktc3RhdGljIHBwZGkubyBsaWJjdXBzcHBkYy5hIFwKICAJCS4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSAkKExJQkdTU0FQSSkgJChTU0xMSUJTKSAkKEROU1NETElCUykgXAogIAkJJChDT01NT05MSUJTKSAkKExJQlopCiAtCWVjaG8gVGVzdGluZyBQUEQgaW1wb3J0ZXIuLi4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOTRiNjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgY3Vwcy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWYyMTJiNDMzOGRiMGRhOGNiODkyZTk0YmYyOTQ5NDYwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDI2ZTVhMGE1NzRhNjlmZTFkMDEwNzliMjkzMWZjNDkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTk2ZDRkYjcyNjUxYzMzNTQ2OWFlNWYzN2IwZGE3MmFjOWY5N2Q3M2UzMDgzOGQ3ODcwNjVmNTU5ZGVhOThjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FhOTM0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi42LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBjdXBzLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZjIxMmI0MzM4ZGIwZGE4Y2I4OTJlOTRiZjI5NDk0NjAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlOTFjMjZkOGQ5N2I1YTE2MzBhOTYyZjUzMGYwMjE5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDM4NTc3OGMyYjNiZGY1NTAzMGQxYzk5OTczNGUyMjc3NGM3OWUzNDI1ZDkxMzM5Y2U2Nzc4MjU2MjAxNjliIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy5pbmMKaW5kZXggN2M1YmU1MC4uYzllMzEzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMuaW5jCkBAIC0xMCwzICsxMCw0IEBACiBBTFRFUk5BVElWRV8ke1BOfSA9ICJkaWZmIGNtcCIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIAorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaAppbmRleCBiZjY2MjY3Li5kZTM4MTA0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaApAQCAtNSwxMSArNSwxMiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiAoZGVmYXVsdCBhdXRvbWFrZSBiZWhhdmlvciBpbmNvbXBhdGlibGUgd2l0aCBwdGVzdCkKIAotZGlmZiAtcnVOIGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi0tLS0gYS9jb25maWd1cmUuYWMJMjAxNC0wNS0yOCAxODoxOToxMy41MTM5ODA5NzcgKzAyMDAKLSsrKyBiL2NvbmZpZ3VyZS5hYwkyMDE0LTA1LTI4IDE4OjE5OjIxLjEyOTY2MDIxNSArMDIwMAotQEAgLTIsNyArMiw3IEBACi0gQUNfSU5JVChldGh0b29sLCAzLjE0LCBuZXRkZXZAdmdlci5rZXJuZWwub3JnKQorSW5kZXg6IGV0aHRvb2wtNC4xMy9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBldGh0b29sLTQuMTMub3JpZy9jb25maWd1cmUuYWMKKysrKyBldGh0b29sLTQuMTMvY29uZmlndXJlLmFjCitAQCAtMiw3ICsyLDcgQEAgZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcAorIEFDX0lOSVQoZXRodG9vbCwgNC4xMywgbmV0ZGV2QHZnZXIua2VybmVsLm9yZykKICBBQ19QUkVSRVEoMi41MikKICBBQ19DT05GSUdfU1JDRElSKFtldGh0b29sLmNdKQogLUFNX0lOSVRfQVVUT01BS0UoW2dudV0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmZTliOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJEaXNwbGF5IG9yIGNoYW5nZSBldGhlcm5ldCBjYXJkIHNldHRpbmdzIgotREVTQ1JJUFRJT04gPSAiQSBzbWFsbCB1dGlsaXR5IGZvciBleGFtaW5pbmcgYW5kIHR1bmluZyB0aGUgc2V0dGluZ3Mgb2YgeW91ciBldGhlcm5ldC1iYXNlZCBuZXR3b3JrIGludGVyZmFjZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V0aHRvb2wuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTE3O21kNT1jMTliMzA1NDhjNTgyNTc3ZmM2YjQ0MzYyNmZjMTIxNiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC9ldGh0b29sLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZjEwNzI2Nzk4ODhjOTMzNWU0OWIxN2VmYjc5OGI0YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjJmZDk2OTJmMzE1OWQzYWIxZTQxZTZmOWI3ZDhkYjJhNDY5M2YxY2IyMjM0OGM4OGJhODlmNzBmMGU2NTAzIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICBvZV9ydW5tYWtlIGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgIGNwICR7Qn0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vdGVzdC1jbWRsaW5lICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L3Rlc3QtZmVhdHVyZXMgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS9ldGh0b29sICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2V0aHRvb2wKLSAgIHNlZCAtaSAncy9eTWFrZWZpbGUvX01ha2VmaWxlLycgICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODYyYTU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMy5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkRpc3BsYXkgb3IgY2hhbmdlIGV0aGVybmV0IGNhcmQgc2V0dGluZ3MiCitERVNDUklQVElPTiA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIGV4YW1pbmluZyBhbmQgdHVuaW5nIHRoZSBzZXR0aW5ncyBvZiB5b3VyIGV0aGVybmV0LWJhc2VkIG5ldHdvcmsgaW50ZXJmYWNlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXRodG9vbC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWMxOWIzMDU0OGM1ODI1NzdmYzZiNDQzNjI2ZmMxMjE2IgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvbmV0d29yay9ldGh0b29sL2V0aHRvb2wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjJiYTQ0ZWIwY2E5Njc1MjM5MmU5YmY4ZGM4M2JhMzAyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzMTFjNGI1NTdjNDRjNTI0OGFjNTQzNmI5ZTE5YzM5MWE2MGQ4ZTQ4MzBiNmE3ZjQxYmUxNmQ4OWMwNTU2ZGUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0CitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAorICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrLTQuMS40L3Rlc3QtYXJyYXlpbmQxLVJlbW92ZS1oYXNoYmFuZy1saW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjQvdGVzdC1hcnJheWluZDEtUmVtb3ZlLWhhc2hiYW5nLWxpbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MjYyZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjQvdGVzdC1hcnJheWluZDEtUmVtb3ZlLWhhc2hiYW5nLWxpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGEzYTNmMjYwNzgyMjNjNDc4NzFjN2I1M2U1YzAxNWFkMTYzYWUwNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgotRGF0ZTogVGh1LCAzIE5vdiAyMDE2IDE0OjUwOjUyIC0wMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3QvYXJyYXlpbmQxOiBSZW1vdmUgaGFzaGJhbmcgbGluZQotT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KLQotUmVtb3ZlICIjIS91c3IvbG9jYWwvYmluL2F3ayAtZiIgYXMgbm9uZSBvZiB0aGUgb3RoZXIgYXdrIHNjcmlwdHMgaW4gdGhlCi10ZXN0IHN1aXRlIGhhdmUgYSBoYXNoYmFuZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWzFdCi0KLVsxXSBodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nYXdrLzIwMTYtMTEvbXNnMDAwMDMuaHRtbAotCi1TaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgotLS0tCi0gdGVzdC9hcnJheWluZDEuYXdrIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3QvYXJyYXlpbmQxLmF3ayBiL3Rlc3QvYXJyYXlpbmQxLmF3awotaW5kZXggNWQ0YTZmMy4uNTllOGI0ZSAxMDA3NTUKLS0tLSBhL3Rlc3QvYXJyYXlpbmQxLmF3awotKysrIGIvdGVzdC9hcnJheWluZDEuYXdrCi1AQCAtMSw0ICsxLDMgQEAKLS0jIS91c3IvbG9jYWwvYmluL2F3ayAtZgotICMgdGhpcyBzY3JpcHQgcmVudW1zIHBlZGlncmVlcyB3aXRoIG1ldGFmb3VuZGVycwotICMgc28gdGhhdCB0aGV5IGFyZSBhZGRlZCAqYmVmb3JlKnJlZ3VsYXIgYW5pbWFscwotICMgbWYgYXJlIGFzY2VydGFpbmVkIGJlY2F1c2UgdGhleSBhcmUgbm90IGluIHRoZSAxc3QgY29sdW1uCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrLTQuMS40L3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrL3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjQvcnVuLXB0ZXN0CnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3ay9ydW4tcHRlc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NWQzN2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBhd2sgdGV4dCBwcm9jZXNzaW5nIHV0aWxpdHkiCi1ERVNDUklQVElPTiA9ICJUaGUgR05VIHZlcnNpb24gb2YgYXdrLCBhIHRleHQgcHJvY2Vzc2luZyB1dGlsaXR5LiBcCi1Bd2sgaW50ZXJwcmV0cyBhIHNwZWNpYWwtcHVycG9zZSBwcm9ncmFtbWluZyBsYW5ndWFnZSB0byBkbyBcCi1xdWljayBhbmQgZWFzeSB0ZXh0IHBhdHRlcm4gbWF0Y2hpbmcgYW5kIHJlZm9ybWF0dGluZyBqb2JzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2F3ay8iCi1CVUdUUkFDS0VSICA9ICJidWctZ2F3a0BnbnUub3JnIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi0jIGdhd2sgPD0gMy4xLjU6IEdQTHYyCi0jIGdhd2sgPj0gMy4xLjY6IEdQTHYzCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLURFUEVORFMgKz0gInJlYWRsaW5lIgotCi1QQUNLQUdFQ09ORklHW21wZnJdID0gIi0td2l0aC1tcGZyLC0td2l0aG91dC1tcGZyLCBtcGZyIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2F3ay9nYXdrLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1hcnJheWluZDEtUmVtb3ZlLWhhc2hiYW5nLWxpbmUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjIwYzk0Y2E1MWI2ZWJmYzliZmZiOTBmOTVjOGZmYmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGMwMzA4MGUyYjVhNTYyNjNlODc4M2Y2ZjFmMzA2Mzk4ZDQ1OTFiZTE4MjU0MDQxZjNmNTQ3ZWZlZjk0NGQzNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYXdrIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59LyoubGEiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImF3ayIKLUFMVEVSTkFUSVZFX1RBUkdFVFthd2tdID0gIiR7YmluZGlyfS9nYXdrIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIHJlbW92ZSB0aGUgbGluayBzaW5jZSB3ZSBkb24ndCBwYWNrYWdlIGl0Ci0Jcm0gJHtEfSR7YmluZGlyfS9hd2sKLX0KLQotaW5oZXJpdCBwdGVzdAotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW1rZGlyICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlmb3IgaSBpbiBgZ3JlcCAtdkUgIkB8XiR8I3xHdC1kdW1teSIgJHtTfS90ZXN0L01ha2V0ZXN0cyB8YXdrIC1GOiAne3ByaW50ICQxfSdgIE1ha2V0ZXN0cyBpbmNsaWIuYXdrOyBcCi0JICBkbyBjcCAke1N9L3Rlc3QvJGkqICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IFwKLQlkb25lCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmNzlhMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMi4wLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiR05VIGF3ayB0ZXh0IHByb2Nlc3NpbmcgdXRpbGl0eSIKK0RFU0NSSVBUSU9OID0gIlRoZSBHTlUgdmVyc2lvbiBvZiBhd2ssIGEgdGV4dCBwcm9jZXNzaW5nIHV0aWxpdHkuIFwKK0F3ayBpbnRlcnByZXRzIGEgc3BlY2lhbC1wdXJwb3NlIHByb2dyYW1taW5nIGxhbmd1YWdlIHRvIGRvIFwKK3F1aWNrIGFuZCBlYXN5IHRleHQgcGF0dGVybiBtYXRjaGluZyBhbmQgcmVmb3JtYXR0aW5nIGpvYnMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nYXdrLyIKK0JVR1RSQUNLRVIgID0gImJ1Zy1nYXdrQGdudS5vcmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKyMgZ2F3ayA8PSAzLjEuNTogR1BMdjIKKyMgZ2F3ayA+PSAzLjEuNjogR1BMdjMKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyArPSAicmVhZGxpbmUiCisKK1BBQ0tBR0VDT05GSUdbbXBmcl0gPSAiLS13aXRoLW1wZnIsLS13aXRob3V0LW1wZnIsIG1wZnIiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nYXdrL2dhd2stJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYjU5OGMzMWJjNzAzZDY2MDgyYmQ5NThkNDE4OTk4MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjODgwNDZjNmU4Mzk2ZWU1NDhiY2I5NDFlMTZkZWY4MDliN2I1NWI2MGExMDQ0YjVkZDI1NDA5NGYzNDdjN2Q5IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcworCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hd2siCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vKi5sYSIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiYXdrIgorQUxURVJOQVRJVkVfVEFSR0VUW2F3a10gPSAiJHtiaW5kaXJ9L2dhd2siCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgcmVtb3ZlIHRoZSBsaW5rIHNpbmNlIHdlIGRvbid0IHBhY2thZ2UgaXQKKwlybSAke0R9JHtiaW5kaXJ9L2F3aworfQorCitpbmhlcml0IHB0ZXN0CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWZvciBpIGluIGBncmVwIC12RSAiQHxeJHwjfEd0LWR1bW15IiAke1N9L3Rlc3QvTWFrZXRlc3RzIHxhd2sgLUY6ICd7cHJpbnQgJDF9J2AgTWFrZXRlc3RzIGluY2xpYi5hd2s7IFwKKwkgIGRvIGNwICR7U30vdGVzdC8kaSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgXAorCWRvbmUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2VlZDEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtNzk3Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gOGFiZDIyMDEwZWI0ZGIwZmIxYjEwZTQzMGQ1ZjVkODNlMDE1ZWY3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBNb24sIDMgT2N0IDIwMTYgMDE6NDY6MjggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5NzE2OTogQmUgcmlnb3JvdXMgd2l0aCBTQUZFUiBwZXJtaXNzaW9ucwotCi1PbmNlIHdlJ3ZlIG9wZW5lZCBvdXIgaW5wdXQgZmlsZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGVuZm9yY2UgdGhlIFNBRkVSCi1ydWxlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi03OTc3Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gcHNpL3pmaWxlLmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3BzaS96ZmlsZS5jIGIvcHNpL3pmaWxlLmMKLWluZGV4IGI2Y2FlYTIuLjJjNmM5NTggMTAwNjQ0Ci0tLS0gYS9wc2kvemZpbGUuYwotKysrIGIvcHNpL3pmaWxlLmMKLUBAIC0xMDgxLDYgKzEwODEsOSBAQCBsaWJfZmlsZV9vcGVuKGdzX2ZpbGVfcGF0aF9wdHIgIGxpYl9wYXRoLCBjb25zdCBnc19tZW1vcnlfdCAqbWVtLCBpX2N0eF90ICppX2N0eAotICAgICBnc19tYWluX2luc3RhbmNlICptaW5zdCA9IGdldF9taW5zdF9mcm9tX21lbW9yeShtZW0pOwotICAgICBpbnQgY29kZTsKLSAKLSsgICAgaWYgKGlfY3R4X3AgJiYgc3RhcnRpbmdfYXJnX2ZpbGUpCi0rICAgICAgICBpX2N0eF9wLT5zdGFydGluZ19hcmdfZmlsZSA9IGZhbHNlOwotKwotICAgICAvKiB3aGVuIHN0YXJ0aW5nIGFyZyBmaWxlcyAoQCBmaWxlcykgaW9kZXZfZGVmYXVsdCBpcyBub3QgeWV0IHNldCAqLwotICAgICBpZiAoaW9kZXYgPT0gMCkKLSAgICAgICAgIGlvZGV2ID0gKGd4X2lvX2RldmljZSAqKWd4X2lvX2RldmljZV90YWJsZVswXTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2gKaW5kZXggZTI4YTk0OS4uYjRjMTRlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2gKQEAgLTEyLDExICsxMiwxMiBAQAogIyBTdW1tYXJ5OiBHZW5lcmF0ZSBhcmNoLmggZm9yIHBwYzMyCiAjCiAKLWRpZmYgLU5ydSBnaG9zdHNjcmlwdC04LjY0Lm9yaWcvYmFzZS9saWIubWFrIGdob3N0c2NyaXB0LTguNjQvYmFzZS9saWIubWFrCi0tLS0gZ2hvc3RzY3JpcHQtOC42NC5vcmlnL2Jhc2UvbGliLm1hawkyMDEwLTAyLTEwIDEwOjMwOjAyLjAwMDAwMDAwMCArMDgwMAotKysrIGdob3N0c2NyaXB0LTguNjQvYmFzZS9saWIubWFrCTIwMTAtMDItMTAgMTA6NTY6MjEuMDAwMDAwMDAwICswODAwCi1AQCAtNjcsOCArNjcsOCBAQAotIHN0ZHByZV9oPSQoR0xTUkMpc3RkcHJlLmggJChzdGRwbl9oKQorSW5kZXg6IGdob3N0c2NyaXB0LTkuMjEvYmFzZS9saWIubWFrCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2hvc3RzY3JpcHQtOS4yMS5vcmlnL2Jhc2UvbGliLm1haworKysrIGdob3N0c2NyaXB0LTkuMjEvYmFzZS9saWIubWFrCitAQCAtNzMsOCArNzMsOCBAQCBhcmNoX2g9JChHTEdFTilhcmNoLmgKKyBzdGRwcmVfaD0kKEdMU1JDKXN0ZHByZS5oCiAgc3RkaW50X19oPSQoR0xTUkMpc3RkaW50Xy5oICQoc3RkX2gpCiAgCiAtJChHTEdFTilhcmNoLmggOiAkKEdFTkFSQ0hfWEUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIKaW5kZXggYmY5ODVjNC4uNTBlYzdlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yMS5iYgpAQCAtMzIsNyArMzIsNiBAQAogICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL29iamFyY2guaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jdXBzLW5vLWdjcnlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi03OTc3LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTcyMDcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNTk1MS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03OTc1LnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28taGVsbG93b3JsZF8wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dvLWV4YW1wbGVzL2dvLWhlbGxvd29ybGRfMC4xLmJiCmluZGV4IDIyMmZjOWQuLmFiNzBlYTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28taGVsbG93b3JsZF8wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1oZWxsb3dvcmxkXzAuMS5iYgpAQCAtNyw2ICs3LDcgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCiBTUkNSRVYgPSAiNDY2OTVkODFkMWZhZTkwNWEyNzBmYjdkYjhhNGQxMWEzMzQ1NjJmZSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogR09fSU1QT1JUID0gImdpdGh1Yi5jb20vZ29sYW5nL2V4YW1wbGUiCiBHT19JTlNUQUxMID0gIiR7R09fSU1QT1JUfS9oZWxsbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmYuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4Y2UyMzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJHTlUgZ3BlcmYgaXMgYSBwZXJmZWN0IGhhc2ggZnVuY3Rpb24gZ2VuZXJhdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dwZXJmIgotU1VNTUFSWSAgPSAiR2VuZXJhdGUgYSBwZXJmZWN0IGhhc2ggZnVuY3Rpb24gZnJvbSBhIHNldCBvZiBrZXl3b3JkcyIKLUxJQ0VOU0UgID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmNjO2JlZ2lubGluZT04O2VuZGxpbmU9MTk7bWQ1PWRlYzhmNjExODQ1ZDA0NzM4N2VkNTZiNWI4NWZhOTliIgotCi1TUkNfVVJJICA9ICIke0dOVV9NSVJST1J9L2dwZXJmL2dwZXJmLSR7UFZ9LnRhci5neiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotIyBhdXRvcmVjb25mIGNvdWxkbid0IGZpbmQgYWNpbmNsdWRlLm00IHdoZW4gc3RlcHBpbmcgaW50byBzdWJkaXJlY3RvcnkuIEluc3RlYWQgb2YKLSMgZHVwbGljYXRpbmcgYWNpbmNsdWRlLm00IGluIGV2ZXJ5IHN1YmRpcmVjdG9yeSwgdXNlIGFic29sdXRlIGluY2x1ZGUgcGF0aCB0byBhY2xvY2FsCi1FWFRSQV9BVVRPUkVDT05GICs9ICIgLUkgJHtTfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCi0gICAgICAgICAgICAgICAgY2F0ICR7U30vYWNsb2NhbC5tNCA+ICR7U30vYWNpbmNsdWRlLm00Ci0gICAgICAgIGZpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMS5iYgppbmRleCA5NDI4MjBiLi5mNjFiMmEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMS5iYgpAQCAtMSw1ICsxLDE4IEBACi1yZXF1aXJlIGdwZXJmLmluYworREVTQ1JJUFRJT04gPSAiR05VIGdwZXJmIGlzIGEgcGVyZmVjdCBoYXNoIGZ1bmN0aW9uIGdlbmVyYXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9ncGVyZiIKK1NVTU1BUlkgID0gIkdlbmVyYXRlIGEgcGVyZmVjdCBoYXNoIGZ1bmN0aW9uIGZyb20gYSBzZXQgb2Yga2V5d29yZHMiCitMSUNFTlNFICA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWFpbi5jYztiZWdpbmxpbmU9ODtlbmRsaW5lPTE5O21kNT1kZWM4ZjYxMTg0NWQwNDczODdlZDU2YjViODVmYTk5YiIKIAotCitTUkNfVVJJICA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3oiCiBTUkNfVVJJW21kNXN1bV0gPSAiOWUyNTFjMGE2MThhZDA4MjRiNTExMTdkNWQ5ZGI4N2UiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTg4NTQ2Yjk0NWJiYTRiNzBiNmEzYTYxNmU4MGI0YWI0NjZlM2YzMzAyNGEzNTJmYzIxOTgxMTJjZGJiM2FlMiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworIyBUaGUgbmVzdGVkIGNvbmZpZ3VyZXMgZG9uJ3QgZmluZCB0aGUgcGFyZW50IGFjbG9jYWwubTQgb3V0IG9mIHRoZSBib3gsIHNvIHRlbGwKKyMgaXQgd2hlcmUgdG8gbG9vayBleHBsaWNpdGx5IChtaXJyb3JpbmcgdGhlIGJlaGF2aW91ciBvZiB1cHN0cmVhbSdzIE1ha2VmaWxlLmRldmVsKS4KK0VYVFJBX0FVVE9SRUNPTkYgKz0gIiAtSSAke1N9IC0tZXhjbHVkZT1hY2xvY2FsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMS5iYgppbmRleCAwNWI2YjkzLi43MTgxMGRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy4xLmJiCkBAIC0xNCw4ICsxNCw2IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKIAotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1wZXJsLXJlZ2V4cCIKLQogIyBGaXggIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gbGVuKFRNUERJUikgPSA0MTAKIGFjcGF0aHMgPSAiLUkgLi9tNCIKIApAQCAtMzYsNiArMzQsOSBAQAogCiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAorUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmUiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0tZW5hYmxlLXBlcmwtcmVnZXhwLC0tZGlzYWJsZS1wZXJsLXJlZ2V4cCxsaWJwY3JlIgorCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCiAKIEFMVEVSTkFUSVZFXyR7UE59ID0gImdyZXAgZWdyZXAgZmdyZXAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZmlsZXMvMDAwMS1nemlwLXBvcnQtemRpZmYtemxlc3MtdG8tQnVzeWJveC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy8wMDAxLWd6aXAtcG9ydC16ZGlmZi16bGVzcy10by1CdXN5Ym94LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGQ1YTE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy8wMDAxLWd6aXAtcG9ydC16ZGlmZi16bGVzcy10by1CdXN5Ym94LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSA1ZjcxMjYyMTgyOWVkODFhNzU4MDc3NDMxMjI2YTg2ZGYzN2ZiYzNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgWmFnb3J1aSA8ZGVueXMuemFnb3J1aUBnbG9iYWxsb2dpYy5jb20+Ci1EYXRlOiBUaHUsIDggSnVuIDIwMTcgMTY6MDU6NTAgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3ppcDogcG9ydCB6ZGlmZiwgemxlc3MgdG8gQnVzeWJveAotCi1Qcm9ibGVtIHJlcG9ydGVkIGJ5IERlbnlzIFphZ29ydWkgKEJ1ZyMyNjA4OCkuCi0qIHRlc3RzL3pkaWZmOiBDaGVjayB0aGF0IGRpZmYgdXNlcyBQT1NJWC1mb3JtYXQgb3V0cHV0LgotKiB6bGVzcy5pbiAobGVzc192ZXJzaW9uKTogRG9uJ3QgZXhpdCBtZXJlbHkgYmVjYXVzZSAnbGVzcyAtVicKLWZhaWxzOyBpbnN0ZWFkLCBhc3N1bWUgJ2xlc3MnIGlzIGNvbXBhdGlibGUgd2l0aCBhbiBvbGQgdmVyc2lvbiBvZgotdGhlIG9yaWdpbmFsICdsZXNzJy4gIEJ1c3lib3ggJ2xlc3MgLVYnIGZhaWxzLCBidXQgYXBwYXJlbnRseSBpdHMKLSdsZXNzJyB3b3JrcyBhbnl3YXkgc29tZWhvdy4KLQotU2lnbmVkLW9mZi1ieTogRGVueXMgWmFnb3J1aSA8ZGVueXMuemFnb3J1aUBnbG9iYWxsb2dpYy5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLS0tLQotIHRlc3RzL3pkaWZmIHwgNCArKystCi0gemxlc3MuaW4gICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy96ZGlmZiBiL3Rlc3RzL3pkaWZmCi1pbmRleCAwYmI3YzdkLi45Y2Q0ZmQ0IDEwMDc1NQotLS0tIGEvdGVzdHMvemRpZmYKLSsrKyBiL3Rlc3RzL3pkaWZmCi1AQCAtMjIsNyArMjIsNiBAQAotIAotIGVjaG8gYSA+IGEgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCi0gZWNobyBiID4gYiB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KLS1nemlwIGEgYiB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KLSAKLSBjYXQgPDxFT0YgPiBleHAKLSAxYzEKLUBAIC0zMSw3ICszMCwxMCBAQCBjYXQgPDxFT0YgPiBleHAKLSA+IGIKLSBFT0YKLSAKLStkaWZmIGEgYiB8IGRpZmYgZXhwIC0gfHwgc2tpcF8gImRpZmYgb3V0cHV0IGZvcm1hdCBpcyBpbmNvbXBhdGlibGUgd2l0aCBQT1NJWCIKLSsKLSBmYWlsPTAKLStnemlwIGEgYiB8fCBmYWlsPTEKLSB6ZGlmZiBhLmd6IGIuZ3ogPiBvdXQgMj4mMQotIHRlc3QgJD8gPSAxIHx8IGZhaWw9MQotIAotZGlmZiAtLWdpdCBhL3psZXNzLmluIGIvemxlc3MuaW4KLWluZGV4IGU2MzRhZjYuLjk3NTlhZTYgMTAwNjQ0Ci0tLS0gYS96bGVzcy5pbgotKysrIGIvemxlc3MuaW4KLUBAIC00Nyw3ICs0Nyw3IEBAIGlmIHRlc3QgIiR7TEVTU01FVEFDSEFSUytzZXR9IiAhPSBzZXQ7IHRoZW4KLSAgIGV4cG9ydCBMRVNTTUVUQUNIQVJTCi0gZmkKLSAKLS1sZXNzX3ZlcnNpb249YGxlc3MgLVZgIHx8IGV4aXQKLStsZXNzX3ZlcnNpb249YGxlc3MgLVYgMj4vZGV2L251bGxgCi0gY2FzZSAkbGVzc192ZXJzaW9uIGluCi0gbGVzcycgJzQ1WzEtOV0qIHwgXAotIGxlc3MnICc0WzYtOV1bMC05XSogfCBcCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOC93cm9uZy1wYXRoLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOC93cm9uZy1wYXRoLWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRjMTAwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjgvd3JvbmctcGF0aC1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1maXggTWFrZU1ha2VyIGlzc3VlcyB3aXRoIHVzaW5nIHdyb25nIFNIRUxML0dSRVAKLQotQSBzZXQgb2Ygc3Vic3RpdHV0aW9uIGlzIGJlaW5nIHByb2Nlc3NlZCB0byBhbGwgdGFyZ2V0IHNjcmlwdHMgd2l0aCBzZWQgYnkKLXJlcGxhY2luZyBzb21lIGtleSB3b3JkcyB3aXRoIHRoZSBkZXRlY3RlZCB2YWx1ZXMgYXQgY29uZmlndXJlIHRpbWUsIHRoaXMKLWlzIGV4YWN0bHkgbm90IGNvbXBsaWFudCB3aXRoIGNyb3NzIGNvbXBsaW5nLCBhbmQgd2lsbCBjYXVzZSBtaXNzaW5nIHBhdGgKLWVycm9ycyBhdCBydW4gdGltZSBsaWtlOgotIi91c3IvYmluL3pncmVwOiBsaW5lIDIzMDogL3Vzci9iaW4vZ3JlcDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKLQotRml4ZWQgYnkgcmVtb3ZpbmcgdW5uZWVkZWQgc3Vic3RpdHV0aW9uIGFuZCB1c2luZyByZWFsIHJ1bnRpbWUgcGF0aHMKLWluc3RlYWQuCi0KLVNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGd6aXAtMS44L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3ppcC0xLjgub3JpZy9NYWtlZmlsZS5hbQotKysrIGd6aXAtMS44L01ha2VmaWxlLmFtCi1AQCAtODEsOCArODEsNyBAQCBnemlwLmRvYy5nejogZ3ppcC5kb2MgJChiaW5fUFJPR1JBTVMpCi0gU1VGRklYRVMgPSAuaW4KLSAuaW46Ci0gCSQoQU1fVl9HRU4pc2VkIFwKLS0JCS1lICdzfC9iaW4vc2h8JChTSEVMTCl8ZycgXAotLQkJLWUgJ3N8W0BdR1JFUEB8JChHUkVQKXxnJyBcCi0rCQktZSAnc3xbQF1HUkVQQHwkKGJhc2VfYmluZGlyKS9ncmVwfGcnIFwKLSAJCS1lICdzfFtAXVZFUlNJT05AfCQoVkVSU0lPTil8ZycgXAotIAkJJChzcmNkaXIpLyRALmluID4kQC10IFwKLSAJICAmJiBjaG1vZCBhK3ggJEAtdCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjkvd3JvbmctcGF0aC1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjkvd3JvbmctcGF0aC1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MzN2JjOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOS93cm9uZy1wYXRoLWZpeC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitmaXggTWFrZU1ha2VyIGlzc3VlcyB3aXRoIHVzaW5nIHdyb25nIFNIRUxML0dSRVAKKworQSBzZXQgb2Ygc3Vic3RpdHV0aW9uIGlzIGJlaW5nIHByb2Nlc3NlZCB0byBhbGwgdGFyZ2V0IHNjcmlwdHMgd2l0aCBzZWQgYnkKK3JlcGxhY2luZyBzb21lIGtleSB3b3JkcyB3aXRoIHRoZSBkZXRlY3RlZCB2YWx1ZXMgYXQgY29uZmlndXJlIHRpbWUsIHRoaXMKK2lzIGV4YWN0bHkgbm90IGNvbXBsaWFudCB3aXRoIGNyb3NzIGNvbXBsaW5nLCBhbmQgd2lsbCBjYXVzZSBtaXNzaW5nIHBhdGgKK2Vycm9ycyBhdCBydW4gdGltZSBsaWtlOgorIi91c3IvYmluL3pncmVwOiBsaW5lIDIzMDogL3Vzci9iaW4vZ3JlcDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKKworRml4ZWQgYnkgcmVtb3ZpbmcgdW5uZWVkZWQgc3Vic3RpdHV0aW9uIGFuZCB1c2luZyByZWFsIHJ1bnRpbWUgcGF0aHMKK2luc3RlYWQuCisKK1NpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tCisgTWFrZWZpbGUuYW0gfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGQ0ZWNjM2YuLmU0NjU3ZDIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC04Miw4ICs4Miw3IEBAIFNVRkZJWEVTID0gLmluCisgLmluOgorIAkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgXAorICAgICAgICAgICAmJiBzZWQgXAorLQkJLWUgJ3N8L2Jpbi9zaHwkKFNIRUxMKXxnJyBcCistCQktZSAnc3xbQF1HUkVQQHwkKEdSRVApfGcnIFwKKysJCS1lICdzfFtAXUdSRVBAfCQoYmFzZV9iaW5kaXIpL2dyZXB8ZycgXAorIAkJLWUgJ3N8W0BdVkVSU0lPTkB8JChWRVJTSU9OKXxnJyBcCisgCQkkKHNyY2RpcikvJEAuaW4gPiRALXQgXAorIAkgICYmIGNobW9kIGE9cnggJEAtdCBcCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA5MzIwNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1yZXF1aXJlIGd6aXAuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3ppcC8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtZ3ppcC1wb3J0LXpkaWZmLXpsZXNzLXRvLUJ1c3lib3gucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovL3dyb25nLXBhdGgtZml4LnBhdGNoIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nemlwLmg7YmVnaW5saW5lPTg7ZW5kbGluZT0yMDttZDU9NmU0N2NhYWE2MzBlMGM4YmY5ZjFiYzhkOTRhOGVkMGUiCi0KLVBST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGd6aXAtcmVwbGFjZW1lbnQtbmF0aXZlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotaW5oZXJpdCBwdGVzdAotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3NyYy9idWlsZC1hdXgKLQljcCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9zcmMvYnVpbGQtYXV4LwotCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cwotCWNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMKLQlzZWQgLWUgJ3MvXmFic19zcmNkaXIgPSAuLiovYWJzX3NyY2RpciA9IFwuXC4vJyBcCi0gICAgICAgICAgICAtZSAncy9edG9wX3NyY2RpciA9IC4uKi90b3Bfc3JjZGlyID0gXC5cLi8nIFwKLSAgICAgICAgICAgIC1lICdzL15HUkVQID0gLi4qL0dSRVAgPSBncmVwLycgICAgICAgICAgICAgXAotICAgICAgICAgICAgLWUgJ3MvXkFXSyA9IC4uKi9BV0sgPSBhd2svJyAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAtZSAncy9ec3JjZGlyID0gLi4qL3NyY2RpciA9IFwuLycgICAgICAgICAgIFwKLSAgICAgICAgICAgIC1lICdzL15NYWtlZmlsZTogLi4qL01ha2VmaWxlOiAvJyAgICAgICAgICAgXAotICAgICAgICAgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgICBcCi0gICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0gICAgICAgICAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotICAgICAgICAgICAgJHtCfS90ZXN0cy9NYWtlZmlsZSA+ICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cy9NYWtlZmlsZQotfQotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzMyNTUzMTUyODE0YjIyZGMzNWFhMDI2N2RmNTI4NmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZmN2FlZGIzZDY2YTBkNzNmNDQyZjYyNjFlNGIzODYwZGY2ZmQ2Yzk0MDI1YzJjYjMxYTIwMmM5YzYwZmUwZSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZWViYTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjkuYmIKQEAgLTAsMCArMSwzOCBAQAorcmVxdWlyZSBnemlwLmluYworCitMSUNFTlNFID0gIkdQTHYzKyIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2d6aXAvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly93cm9uZy1wYXRoLWZpeC5wYXRjaCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3ppcC5oO2JlZ2lubGluZT04O2VuZGxpbmU9MjA7bWQ1PTZlNDdjYWFhNjMwZTBjOGJmOWYxYmM4ZDk0YThlZDBlIgorCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBnemlwLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2luaGVyaXQgcHRlc3QKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9zcmMvYnVpbGQtYXV4CisJY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2J1aWxkLWF1eC8KKwlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMKKwljcCAtciAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vc3JjL3Rlc3RzCisJc2VkIC1lICdzL15hYnNfc3JjZGlyID0gLi4qL2Fic19zcmNkaXIgPSBcLlwuLycgXAorICAgICAgICAgICAgLWUgJ3MvXnRvcF9zcmNkaXIgPSAuLiovdG9wX3NyY2RpciA9IFwuXC4vJyBcCisgICAgICAgICAgICAtZSAncy9eR1JFUCA9IC4uKi9HUkVQID0gZ3JlcC8nICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzL15BV0sgPSAuLiovQVdLID0gYXdrLycgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgLWUgJ3MvXnNyY2RpciA9IC4uKi9zcmNkaXIgPSBcLi8nICAgICAgICAgICBcCisgICAgICAgICAgICAtZSAncy9eTWFrZWZpbGU6IC4uKi9NYWtlZmlsZTogLycgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnICAgXAorICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKyAgICAgICAgICAgICR7Qn0vdGVzdHMvTWFrZWZpbGUgPiAke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMvTWFrZWZpbGUKK30KKworU1JDX1VSSVttZDVzdW1dID0gIjkyOWQ2YTZiODMyZjc1YjI4ZTNlZWVhZmIzMGMxZDliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkMmQzYTM0MzJlZjMyZjI0Y2RiMDYwZDI3ODgzNDUwN2I0ODFhNzVhZGVjYTE4ODUwYzczNTkyZjc3OGY2YWQiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybS93aXBlci5zaC1maXgtc3RhdC1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtL3dpcGVyLnNoLWZpeC1zdGF0LXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFmMWI2MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybS93aXBlci5zaC1maXgtc3RhdC1wYXRoLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gZTIzMzAwNmVlMjEyMTA5ZDJhMTQwMWRhYzM3YTlhODUxY2M0OTNkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTQgRGVjIDIwMTcgMTU6MjM6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gd2lwZXIuc2g6IGZpeCBzdGF0IHBhdGgKKworRml4IHRoZSBzdGF0IHBhdGggZm9yIE9FLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyB3aXBlci93aXBlci5zaCB8IDMgKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvd2lwZXIvd2lwZXIuc2ggYi93aXBlci93aXBlci5zaAoraW5kZXggNzllZGRjOC4uOWVmMjg0MCAxMDA3NTUKKy0tLSBhL3dpcGVyL3dpcGVyLnNoCisrKysgYi93aXBlci93aXBlci5zaAorQEAgLTk3LDcgKzk3LDYgQEAgZnVuY3Rpb24gZmluZF9wcm9nKCl7CisgaGFzaCAtciAgIyMgUmVmcmVzaCBiYXNoJ3MgY2FjaGVkIFBBVEggZW50cmllcworIEhEUEFSTT1gZmluZF9wcm9nIC9zYmluL2hkcGFybWAJfHwgZXhpdCAxCisgRklORD1gZmluZF9wcm9nIC91c3IvYmluL2ZpbmRgCXx8IGV4aXQgMQorLVNUQVQ9YGZpbmRfcHJvZyAvdXNyL2Jpbi9zdGF0YAl8fCBleGl0IDEKKyBHQVdLPWBmaW5kX3Byb2cgL3Vzci9iaW4vZ2F3a2AJfHwgZXhpdCAxCisgQkxLSUQ9YGZpbmRfcHJvZyAvc2Jpbi9ibGtpZGAJfHwgZXhpdCAxCisgR1JFUD1gZmluZF9wcm9nIC9iaW4vZ3JlcGAJfHwgZXhpdCAxCitAQCAtMTA1LDcgKzEwNCw3IEBAIElEPWBmaW5kX3Byb2cgL3Vzci9iaW4vaWRgCXx8IGV4aXQgMQorIExTPWBmaW5kX3Byb2cgL2Jpbi9sc2AJCXx8IGV4aXQgMQorIERGPWBmaW5kX3Byb2cgL2Jpbi9kZmAJCXx8IGV4aXQgMQorIFJNPWBmaW5kX3Byb2cgL2Jpbi9ybWAJCXx8IGV4aXQgMQorLVNUQVQ9YGZpbmRfcHJvZyAvdXNyL2Jpbi9zdGF0YAl8fCBleGl0IDEKKytTVEFUPWBmaW5kX3Byb2cgL2Jpbi9zdGF0YAl8fCBleGl0IDEKKyAKKyBbICR2ZXJib3NlIC1ndCAxIF0gJiYgSERQQVJNPSIkSERQQVJNIC0tdmVyYm9zZSIKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Mi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDlmZGM5NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Mi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0eSBmb3Igdmlld2luZy9tYW5pcHVsYXRpbmcgSURFIGRpc2sgZHJpdmUvZHJpdmVyIHBhcmFtZXRlcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2hkcGFybS8iCi1ERVNDUklQVElPTiA9ICJoZHBhcm0gaXMgYSBMaW51eCBzaGVsbCB1dGlsaXR5IGZvciB2aWV3aW5nIFwKLWFuZCBtYW5pcHVsYXRpbmcgdmFyaW91cyBJREUgZHJpdmUgYW5kIGRyaXZlciBwYXJhbWV0ZXJzLiIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MiIKLUxJQ0VOU0VfJHtQTn0gPSAiQlNEIgotTElDRU5TRV8ke1BOfS1kYmcgPSAiQlNEIgotTElDRU5TRV93aXBlciA9ICJHUEx2MiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTQ5NWQwM2U1MGRjNmM4OWQ2YTMwMTA3YWIwZGY1YjAzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWE4MmQ3YmEzYWRlOWU4ZWM5MDI3NDlkYjk4YzU5MmYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL0dQTHYyLnR4dDttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvd2lwZXIuc2g7YmVnaW5saW5lPTc7ZW5kbGluZT0zMTttZDU9YjdiYzY0MmFkZGMxNTJlYTMwNzUwNWJmMWEyOTZmMDkiCi0KLQotUEFDS0FHRVMgPSsgIndpcGVyIgotCi1GSUxFU193aXBlciA9ICIke2JpbmRpcn0vd2lwZXIuc2giCi0KLVJERVBFTkRTX3dpcGVyID0gImJhc2ggZ2F3ayBzdGF0IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9oZHBhcm0vJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDEwNTM5ZDBiZjNjYzI0NzE4MTU5NDU4MWVkYmZiNTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzM0MjljZDQyM2UyNzFmYTU2NWJmNTg0NTk4ZmQ3NTFkZDJlNzczYmI3MTk5YTU5MmIwNmI1YTYxY2VjNGZiNiIKLQotRVhUUkFfT0VNQUtFID0gJ1NUUklQPSJlY2hvIiBMREZMQUdTPSIke0xERkxBR1N9IicKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImhkcGFybSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtoZHBhcm1dID0gIiR7YmFzZV9zYmluZGlyfS9oZHBhcm0iCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0gJHtEfS8ke21hbmRpcn0vbWFuOCAke0R9LyR7YmluZGlyfQotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ3NiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9JyBpbnN0YWxsCi0JY3AgJHtTfS93aXBlci93aXBlci5zaCAke0R9LyR7YmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41My5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzNlYzVjNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjUzLmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiVXRpbGl0eSBmb3Igdmlld2luZy9tYW5pcHVsYXRpbmcgSURFIGRpc2sgZHJpdmUvZHJpdmVyIHBhcmFtZXRlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2hkcGFybS8iCitERVNDUklQVElPTiA9ICJoZHBhcm0gaXMgYSBMaW51eCBzaGVsbCB1dGlsaXR5IGZvciB2aWV3aW5nIFwKK2FuZCBtYW5pcHVsYXRpbmcgdmFyaW91cyBJREUgZHJpdmUgYW5kIGRyaXZlciBwYXJhbWV0ZXJzLiIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MiIKK0xJQ0VOU0VfJHtQTn0gPSAiQlNEIgorTElDRU5TRV8ke1BOfS1kYmcgPSAiQlNEIgorTElDRU5TRV93aXBlciA9ICJHUEx2MiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTQ5NWQwM2U1MGRjNmM4OWQ2YTMwMTA3YWIwZGY1YjAzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWE4MmQ3YmEzYWRlOWU4ZWM5MDI3NDlkYjk4YzU5MmYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL0dQTHYyLnR4dDttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvd2lwZXIuc2g7YmVnaW5saW5lPTc7ZW5kbGluZT0zMTttZDU9YjdiYzY0MmFkZGMxNTJlYTMwNzUwNWJmMWEyOTZmMDkiCisKKworUEFDS0FHRVMgPSsgIndpcGVyIgorCitGSUxFU193aXBlciA9ICIke2JpbmRpcn0vd2lwZXIuc2giCisKK1JERVBFTkRTX3dpcGVyID0gImJhc2ggZ2F3ayBjb3JldXRpbHMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2hkcGFybS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vd2lwZXIuc2gtZml4LXN0YXQtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWU1NGI1MmUwYzhjYjc5Mzg5ZDRkNDdlYWNiYTQxMWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjY3M2Y1OTFkZjY5MTZjNmExZmFlYzA3MDY5YTdlYjFjYjhlZTMwNzYxNWE2MTVkODA4MTkyZmIwYzAyNjVlNSIKKworRVhUUkFfT0VNQUtFID0gJ1NUUklQPSJlY2hvIiBMREZMQUdTPSIke0xERkxBR1N9IicKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImhkcGFybSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoZHBhcm1dID0gIiR7YmFzZV9zYmluZGlyfS9oZHBhcm0iCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0gJHtEfS8ke21hbmRpcn0vbWFuOCAke0R9LyR7YmluZGlyfQorCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ3NiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9JyBpbnN0YWxsCisJY3AgJHtTfS93aXBlci93aXBlci5zaCAke0R9LyR7YmluZGlyfQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFmODVhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVtQQVRDSF0gZml4IGJ1aWxkIHdpdGggbXVzbAotCi1EZWZpbmUgYWRkaXRpb25hbCBUQ09QVFMgaWYgbm90IHRoZXJlCi11X2luaXRYIHR5cGVzIGFyZSBpbiBzeXMvdHlwZXMuaCBiZSBleHBsaWNpdCBhYm91dCBpdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi1kaWZmIC1OYXVyIGlwdGFibGVzLTEuNi4wLW9yaWdpbi9leHRlbnNpb25zL2xpYnh0X1RDUE9QVFNUUklQLmMgaXB0YWJsZXMtMS42LjAvZXh0ZW5zaW9ucy9saWJ4dF9UQ1BPUFRTVFJJUC5jCi0tLS0gaXB0YWJsZXMtMS42LjAtb3JpZ2luL2V4dGVuc2lvbnMvbGlieHRfVENQT1BUU1RSSVAuYwkyMDE1LTEyLTA5IDE0OjU1OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGlwdGFibGVzLTEuNi4wL2V4dGVuc2lvbnMvbGlieHRfVENQT1BUU1RSSVAuYwkyMDE1LTEyLTI5IDE0OjQ0OjMyLjU4NTMyNzA3NyArMDIwMAotQEAgLTEyLDYgKzEyLDIxIEBACi0gI2lmbmRlZiBUQ1BPUFRfTUQ1U0lHCi0gIwlkZWZpbmUgVENQT1BUX01ENVNJRyAxOQotICNlbmRpZgotKyNpZm5kZWYgVENQT1BUX01BWFNFRwotKyNkZWZpbmUgVENQT1BUX01BWFNFRyAyCi0rI2VuZGlmCi0rI2lmbmRlZiBUQ1BPUFRfV0lORE9XCi0rI2RlZmluZSBUQ1BPUFRfV0lORE9XIDMKLSsjZW5kaWYKLSsjaWZuZGVmIFRDUE9QVF9TQUNLX1BFUk1JVFRFRAotKyNkZWZpbmUgVENQT1BUX1NBQ0tfUEVSTUlUVEVEIDQKLSsjZW5kaWYKLSsjaWZuZGVmIFRDUE9QVF9TQUNLCi0rI2RlZmluZSBUQ1BPUFRfU0FDSyA1Ci0rI2VuZGlmCi0rI2lmbmRlZiBUQ1BPUFRfVElNRVNUQU1QCi0rI2RlZmluZSBUQ1BPUFRfVElNRVNUQU1QIDgKLSsjZW5kaWYKLSAKLSBlbnVtIHsKLSAJT19TVFJJUF9PUFRJT04gPSAwLAotZGlmZiAtTmF1ciBpcHRhYmxlcy0xLjYuMC1vcmlnaW4vaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2NC9pcF90YWJsZXMuaCBpcHRhYmxlcy0xLjYuMC9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oCi0tLS0gaXB0YWJsZXMtMS42LjAtb3JpZ2luL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjQvaXBfdGFibGVzLmgJMjAxNS0xMi0wOSAxNDo1NTowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBpcHRhYmxlcy0xLjYuMC9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oCTIwMTUtMTItMjkgMTQ6NDA6MjEuMjUwNDY5MTk1ICswMjAwCi1AQCAtMTUsNiArMTUsNyBAQAotICNpZm5kZWYgX0lQVEFCTEVTX0gKLSAjZGVmaW5lIF9JUFRBQkxFU19ICi0gCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotIAotICNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXJfaXB2NC5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy90eXBlcy5oLWFkZC1kZWZpbmVzLXRoYXQtYXJlLXJlcXVpcmVkLWZvci1pZl9wYWNrZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL3R5cGVzLmgtYWRkLWRlZmluZXMtdGhhdC1hcmUtcmVxdWlyZWQtZm9yLWlmX3BhY2tldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRlZTI5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL3R5cGVzLmgtYWRkLWRlZmluZXMtdGhhdC1hcmUtcmVxdWlyZWQtZm9yLWlmX3BhY2tldC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gMTk1OTM0OTFmNDNiNzBjMWE3MWMzYjliOGY0ZmY0ZmQxNDUwMDAxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyMyBNYXIgMjAxMiAxNDoyNzoyMCAtMDQwMAotU3ViamVjdDogW1BBVENIXSB0eXBlcy5oOiBhZGQgZGVmaW5lcyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgaWZfcGFja2V0LmgKLQotVGhlIGlwdGFibGVzIGxvY2FsIGxpbnV4L3R5cGVzLmggb3ZlcnJpZGVzIHRoZSBrZXJuZWwvc3lzcm9vdAotdHlwZXMuaC4gQXMgc3VjaCwgd2UgbmVlZCB0byBwcm92aWRlIHNvbWUgZGVmaW5lcyB0aGF0IGFyZSByZXF1aXJlZAotdG8gYnVpbGQgYWdhaW5zdCAzLjIrIGtlcm5lbCBoZWFkZXJzLgotCi1pZm5kZWYgcHJvdGVjdGlvbiBpcyBwcm92aWRlZCBmb3IgdGhlIGRlZmluZXMgdG8gZW5zdXJlIHRoYXQKLWNvbmZpZ3VyYXRpb24gdGhhdCBhbHJlYWR5IGhhdmUgdGhlc2UgZGVmaW5lcyBhcmUgc3RpbGwgYnVpbGRhYmxlLgotCi1UaGlzIGNvbW1pdCBpcyB0ZW1wb3JhcnkgdW50aWwgYSBuZXcgdmVyc2lvbiBvZiBpcHRhYmxlcyBjYW4gYmUKLXVzZWQgdGhhdCBjb250YWlucyB0aGUgZGVmaW5lcy4KLQotVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBjb21taXQgaW4gdGhlIGlwdGFibGVzIGdpdCByZXBvc2l0b3J5OgotCi0gIGh0dHBzOi8vZ2l0Lm5ldGZpbHRlci5vcmcvY2dpLWJpbi9naXR3ZWIuY2dpP3A9aXB0YWJsZXMuZ2l0O2E9Y29tbWl0O2g9ZGJlNzdjYzk3NGNlZTY1NmVhZTM3ZTc1MDM5ZGQxYTQxMGE0NTM1YgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgotLS0tCi0gaW5jbHVkZS9saW51eC90eXBlcy5oIHwgICAxMCArKysrKysrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90eXBlcy5oIGIvaW5jbHVkZS9saW51eC90eXBlcy5oCi1pbmRleCA4YjQ4M2M4Li5lYmY2NDMyIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9saW51eC90eXBlcy5oCi0rKysgYi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgKLUBAIC0zNCw1ICszNCwxNSBAQCB0eXBlZGVmIF9fdTY0IF9fYml0d2lzZSBfX2JlNjQ7Ci0gdHlwZWRlZiBfX3UxNiBfX2JpdHdpc2UgX19zdW0xNjsKLSB0eXBlZGVmIF9fdTMyIF9fYml0d2lzZSBfX3dzdW07Ci0gCi0rI2lmbmRlZiBfX2FsaWduZWRfdTY0Ci0rI2RlZmluZSBfX2FsaWduZWRfdTY0IF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKQotKyNlbmRpZgotKyNpZm5kZWYgX19hbGlnbmVkX2JlNjQKLSsjZGVmaW5lIF9fYWxpZ25lZF9iZTY0IF9fYmU2NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkKLSsjZW5kaWYKLSsjaWZuZGVmIF9fYWxpZ25lZF9sZTY0Ci0rI2RlZmluZSBfX2FsaWduZWRfbGU2NCBfX2xlNjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpCi0rI2VuZGlmCi0rCi0gI2VuZGlmIC8qICBfX0FTU0VNQkxZX18gKi8KLSAjZW5kaWYgLyogX0xJTlVYX1RZUEVTX0ggKi8KLS0tIAotMS43LjAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM3YzU1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29scyBmb3IgbWFuYWdpbmcga2VybmVsIHBhY2tldCBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiaXB0YWJsZXMgaXMgdGhlIHVzZXJzcGFjZSBjb21tYW5kIGxpbmUgcHJvZ3JhbSB1c2VkIHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCBuZXR3b3JrIHBhY2tldCBcCi1maWx0ZXJpbmcgY29kZSBpbiBMaW51eC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldGZpbHRlci5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubmV0ZmlsdGVyLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaXB0YWJsZXMvaXB0YWJsZXMuYztiZWdpbmxpbmU9MTM7ZW5kbGluZT0yNTttZDU9YzVjZmZkMDk5NzQ1NThjZjI3ZDBmNzYzZGYyYTEyZGMiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUteC10YWJsZXMgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcC10YWJsZXMgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcHRhYmxlLWZpbHRlciBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtbmF0IFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtZGVmcmFnLWlwdjQgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2sgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2staXB2NCBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLW5hdCBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdC1tYXNxdWVyYWRlIgotRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS94dGFibGVzLyAke2RhdGFkaXJ9L3h0YWJsZXMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL25ldGZpbHRlci5vcmcvcHJvamVjdHMvaXB0YWJsZXMvZmlsZXMvaXB0YWJsZXMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly90eXBlcy5oLWFkZC1kZWZpbmVzLXRoYXQtYXJlLXJlcXVpcmVkLWZvci1pZl9wYWNrZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1saWJuZm5ldGxpbmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtb25seS1jaGVjay1jb25udHJhY2std2hlbi1saWJuZm5ldGxpbmstZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWIzOGEzMzgwNmI2MTgyYzZmNTNkNmFmYjQ2MTlhZGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGZjMmQ3YmQ1ZDdiZTExMzExNzI2NDY2Nzg5ZDRjNjVmYjRjOGUwOTZjOTE4MmI1NmNlOTc0NDA4NjRmMGNmNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgta2VybmVsPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICIKLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLSMgbGlibmZuZXRsaW5rIHJlY2lwZSBpcyBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIKLVBBQ0tBR0VDT05GSUdbbGlibmZuZXRsaW5rXSA9ICItLWVuYWJsZS1saWJuZm5ldGxpbmssLS1kaXNhYmxlLWxpYm5mbmV0bGluayxsaWJuZm5ldGxpbmsgbGlibmV0ZmlsdGVyLWNvbm50cmFjayIKLQotIyBsaWJuZnRubCByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyKHByZXZpb3VzbHkga25vd24gYXMgbGlibmZ0YWJsZXMpCi1QQUNLQUdFQ09ORklHW2xpYm5mdG5sXSA9ICItLWVuYWJsZS1uZnRhYmxlcywtLWRpc2FibGUtbmZ0YWJsZXMsbGlibmZ0bmwiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgUmVtb3ZlIHNvbWUgbGlidG9vbCBtNCBmaWxlcwotCSMgS2VlcCBheF9jaGVja19saW5rZXJfZmxhZ3MubTQgd2hpY2ggYmVsb25ncyB0byBhdXRvY29uZi1hcmNoaXZlLgotCXJtIC1mIGxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGE4M2QyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjYuMi5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIlRvb2xzIGZvciBtYW5hZ2luZyBrZXJuZWwgcGFja2V0IGZpbHRlcmluZyBjYXBhYmlsaXRpZXMiCitERVNDUklQVElPTiA9ICJpcHRhYmxlcyBpcyB0aGUgdXNlcnNwYWNlIGNvbW1hbmQgbGluZSBwcm9ncmFtIHVzZWQgdG8gY29uZmlndXJlIGFuZCBjb250cm9sIG5ldHdvcmsgcGFja2V0IFwKK2ZpbHRlcmluZyBjb2RlIGluIExpbnV4LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5uZXRmaWx0ZXIub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjNcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pcHRhYmxlcy9pcHRhYmxlcy5jO2JlZ2lubGluZT0xMztlbmRsaW5lPTI1O21kNT1jNWNmZmQwOTk3NDU1OGNmMjdkMGY3NjNkZjJhMTJkYyIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS14LXRhYmxlcyBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwLXRhYmxlcyBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtZmlsdGVyIFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1uYXQgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1kZWZyYWctaXB2NCBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjayBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjay1pcHY0IFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtbmF0IFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0LW1hc3F1ZXJhZGUiCitGSUxFU18ke1BOfSA9KyAiJHtsaWJkaXJ9L3h0YWJsZXMvICR7ZGF0YWRpcn0veHRhYmxlcyIKKworU1JDX1VSSSA9ICJodHRwOi8vbmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9pcHRhYmxlcy9maWxlcy9pcHRhYmxlcy0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUFkZC1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtbGlibmZuZXRsaW5rLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLW9ubHktY2hlY2stY29ubnRyYWNrLXdoZW4tbGlibmZuZXRsaW5rLWVuYWJsZWQucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2QyYjc4NDdlNGFhODgzMmExODQzN2I4YTRjMTg3M2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVkMDJkZmE0NjI2MzM0M2E0MDFmMjk3ZDQ0MTkwZjJhM2U1MTEzYzg5MzM5NDZmMDk0ZWQ0MDIzNzA1MzczMyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgta2VybmVsPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICAgICAgICAgICAgICIKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKKyMgbGlibmZuZXRsaW5rIHJlY2lwZSBpcyBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIKK1BBQ0tBR0VDT05GSUdbbGlibmZuZXRsaW5rXSA9ICItLWVuYWJsZS1saWJuZm5ldGxpbmssLS1kaXNhYmxlLWxpYm5mbmV0bGluayxsaWJuZm5ldGxpbmsgbGlibmV0ZmlsdGVyLWNvbm50cmFjayIKKworIyBsaWJuZnRubCByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyKHByZXZpb3VzbHkga25vd24gYXMgbGlibmZ0YWJsZXMpCitQQUNLQUdFQ09ORklHW2xpYm5mdG5sXSA9ICItLWVuYWJsZS1uZnRhYmxlcywtLWRpc2FibGUtbmZ0YWJsZXMsbGlibmZ0bmwiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgUmVtb3ZlIHNvbWUgbGlidG9vbCBtNCBmaWxlcworCSMgS2VlcCBheF9jaGVja19saW5rZXJfZmxhZ3MubTQgd2hpY2ggYmVsb25ncyB0byBhdXRvY29uZi1hcmNoaXZlLgorCXJtIC1mIGxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1GaXgtYnVpbGQtb24tTVVTTC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1idWlsZC1vbi1NVVNMLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOGNmZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1GaXgtYnVpbGQtb24tTVVTTC5wYXRjaApAQCAtMCwwICsxLDk1IEBACitGcm9tIGM2YzU5NjZkOWZhZTI3YmMyZjBhMzRhYjU5Yjk5OTU1NTExMWJkMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBcmljIEJlbHNpdG8gPGxsdWl4aGlAZ21haWwuY29tPgorRGF0ZTogU3VuLCAyOSBPY3QgMjAxNyAyMzoxNzowMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgb24gTVVTTAorCitBZGQgbWlzc2luZyBBSV9JRE4gYW5kIE5JX0lETiBkZWNsYXJhdGlvbnMuCisKK0J1ZzogaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvNTAzOTE0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBhcnBpbmcuYyAgICAgIHwgIDcgKysrKysrKworIHBpbmcuaCAgICAgICAgfCAxMSArKysrKysrKysrKworIHRyYWNlcGF0aC5jICAgfCAgOCArKysrKysrKworIHRyYWNlcm91dGU2LmMgfCAgNCArKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9hcnBpbmcuYyBiL2FycGluZy5jCitpbmRleCAxYTNmNDBiLi41MzFkMjlkIDEwMDY0NAorLS0tIGEvYXJwaW5nLmMKKysrKyBiL2FycGluZy5jCitAQCAtNDUsNiArNDUsMTMgQEAgc3RydWN0IHN5c2ZzX2RldmF0dHJfdmFsdWVzOworICNpZmRlZiBVU0VfSUROCisgI2luY2x1ZGUgPGlkbmEuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisrCisrI2lmbmRlZiBBSV9JRE4KKysjZGVmaW5lIEFJX0lETiAweDAwNDAKKysjZW5kaWYKKysjaWZuZGVmIEFJX0NBTk9OSUROCisrI2RlZmluZSBBSV9DQU5PTklETiAweDAwODAKKysjZW5kaWYKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSAiU05BUFNIT1QuaCIKK2RpZmYgLS1naXQgYS9waW5nLmggYi9waW5nLmgKK2luZGV4IDc0OWYzZmYuLjIyNzMxNWYgMTAwNjQ0CistLS0gYS9waW5nLmgKKysrKyBiL3BpbmcuaAorQEAgLTM4LDYgKzM4LDE3IEBACisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxpZG5hLmg+CisgI2luY2x1ZGUgPHN0cmluZ3ByZXAuaD4KKysKKysjaWZuZGVmIEFJX0lETgorKyNkZWZpbmUgQUlfSUROIDB4MDA0MAorKyNlbmRpZgorKyNpZm5kZWYgQUlfQ0FOT05JRE4KKysjZGVmaW5lIEFJX0NBTk9OSUROIDB4MDA4MAorKyNlbmRpZgorKyNpZm5kZWYgTklfSUROCisrI2RlZmluZSBOSV9JRE4gMzIKKysjZW5kaWYKKysKKyAjZGVmaW5lIGdldGFkZHJpbmZvX2ZsYWdzIChBSV9DQU5PTk5BTUUgfCBBSV9JRE4gfCBBSV9DQU5PTklETikKKyAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzIE5JX0lETgorICNlbHNlCitkaWZmIC0tZ2l0IGEvdHJhY2VwYXRoLmMgYi90cmFjZXBhdGguYworaW5kZXggNzRhODI5ZC4uZGNlYzViOSAxMDA2NDQKKy0tLSBhL3RyYWNlcGF0aC5jCisrKysgYi90cmFjZXBhdGguYworQEAgLTMwLDYgKzMwLDE0IEBACisgI2lmZGVmIFVTRV9JRE4KKyAjaW5jbHVkZSA8aWRuYS5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKysKKysjaWZuZGVmIEFJX0lETgorKyNkZWZpbmUgQUlfSUROIDB4MDA0MAorKyNlbmRpZgorKyNpZm5kZWYgTklfSUROCisrI2RlZmluZSBOSV9JRE4gMzIKKysjZW5kaWYKKysKKyAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzCU5JX0lETgorICNlbHNlCisgI2RlZmluZSBnZXRuYW1laW5mb19mbGFncwkwCitkaWZmIC0tZ2l0IGEvdHJhY2Vyb3V0ZTYuYyBiL3RyYWNlcm91dGU2LmMKK2luZGV4IDQ4ZmM1YzUuLjhkMWVlYmYgMTAwNjQ0CistLS0gYS90cmFjZXJvdXRlNi5jCisrKysgYi90cmFjZXJvdXRlNi5jCitAQCAtMjUxLDYgKzI1MSwxMCBAQAorICNpbmNsdWRlIDxpZG5hLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorIAorKyNpZm5kZWYgTklfSUROCisrI2RlZmluZSBOSV9JRE4gMzIKKysjZW5kaWYKKysKKyAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzCU5JX0lETgorICNlbHNlCisgI2RlZmluZSBnZXRuYW1laW5mb19mbGFncwkwCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1GaXgtaGVhZGVyLWluY2x1c2lvbi1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1oZWFkZXItaW5jbHVzaW9uLWZvci1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGVmMDdlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1oZWFkZXItaW5jbHVzaW9uLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotRnJvbSBiZTBiYjgxZDcyZmVhNGQyMGRhNzRmNGYyMjM2YWExNDU2ODRmMzMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNiBKYW4gMjAxNiAxNDoxNDoyMiAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggaGVhZGVyIGluY2x1c2lvbiBmb3IgbXVzbAotCi1GaXggZXJyb3JzIGUuZy4KLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHRyYWNlcGF0aC5jOjE3OjA6Ci0vdXNyL2luY2x1ZGUvbGludXgvZXJycXVldWUuaDozMzoxODoKLWVycm9yOiBhcnJheSB0eXBlIGhhcyBpbmNvbXBsZXRlIGVsZW1lbnQgdHlwZSAnc3RydWN0IHRpbWVzcGVjJwotICBzdHJ1Y3QgdGltZXNwZWMgdHNbM107Ci0gICAgICAgICAgICAgICAgICBeCi10cmFjZXBhdGguYzogSW4gZnVuY3Rpb24gJ21haW4nOgotdHJhY2VwYXRoLmM6MzI5OjE2OiBlcnJvcjogJ0lOVF9NQVgnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzCi1mdW5jdGlvbikKLSAgICAgIG92ZXJoZWFkLCBJTlRfTUFYKTsKLSAgICAgICAgICAgICAgICBeCi10cmFjZXBhdGguYzozMjk6MTY6IG5vdGU6IGVhY2ggdW5kZWNsYXJlZCBpZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkKLW9uY2UgZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbgotTWFrZWZpbGU6MTMxOiByZWNpcGUgZm9yIHRhcmdldCAndHJhY2VwYXRoLm8nIGZhaWxlZAotbWFrZTogKioqIFt0cmFjZXBhdGgub10gRXJyb3IgMQotCi1waW5nX2NvbW1vbi5jOiBJbiBmdW5jdGlvbiAnbWFpbl9sb29wJzoKLXBpbmdfY29tbW9uLmM6NzU2OjE1OiBlcnJvcjogJ0haJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcwotZnVuY3Rpb24pCi0gICAgaWYgKDEwMDAgJSBIWiA9PSAwID8gbmV4dCA8PSAxMDAwIC8gSFogOiAobmV4dCA8IElOVF9NQVggLyBIWiAmJgotbmV4dCAqIEhaIDw9IDEwMDApKSB7Ci0KLXByb3RvY29scy90aW1lZC5oIGlzIG5vdCBuZWVkZWQgYW5kIGlzIGFic2VudCBpbiBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gY2xvY2tkaWZmLmMgICB8IDEgLQotIHBpbmdfY29tbW9uLmMgfCAxICsKLSB0cmFjZXBhdGguYyAgIHwgMiArKwotIHRyYWNlcGF0aDYuYyAgfCAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY2xvY2tkaWZmLmMgYi9jbG9ja2RpZmYuYwotaW5kZXggN2MxZWExYi4uMWQ2MzQxZSAxMDA2NDQKLS0tLSBhL2Nsb2NrZGlmZi5jCi0rKysgYi9jbG9ja2RpZmYuYwotQEAgLTE0LDcgKzE0LDYgQEAKLSAjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2lwX2ljbXAuaD4KLSAjZGVmaW5lIFRTUFRZUEVTCi0tI2luY2x1ZGUgPHByb3RvY29scy90aW1lZC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxuZXRkYi5oPgotICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLWRpZmYgLS1naXQgYS9waW5nX2NvbW1vbi5jIGIvcGluZ19jb21tb24uYwotaW5kZXggN2Y4Mjg1MS4uM2NlNjk5ZCAxMDA2NDQKLS0tLSBhL3BpbmdfY29tbW9uLmMKLSsrKyBiL3BpbmdfY29tbW9uLmMKLUBAIC0yLDYgKzIsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxzY2hlZC5oPgotICNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPGFzbS1nZW5lcmljL3BhcmFtLmg+Ci0gCi0gaW50IG9wdGlvbnM7Ci0gCi1kaWZmIC0tZ2l0IGEvdHJhY2VwYXRoLmMgYi90cmFjZXBhdGguYwotaW5kZXggODllNmQxNi4uYzlkNmRkZCAxMDA2NDQKLS0tLSBhL3RyYWNlcGF0aC5jCi0rKysgYi90cmFjZXBhdGguYwotQEAgLTEyLDYgKzEyLDggQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2VycnF1ZXVlLmg+Ci1kaWZmIC0tZ2l0IGEvdHJhY2VwYXRoNi5jIGIvdHJhY2VwYXRoNi5jCi1pbmRleCAxMjZmYWRmLi45ZDU3NDVjIDEwMDY0NAotLS0tIGEvdHJhY2VwYXRoNi5jCi0rKysgYi90cmFjZXBhdGg2LmMKLUBAIC0xMiw2ICsxMiw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2ljbXA2Lmg+Ci0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUludGlhbGl6ZS1zdHJ1Y3QtZWxlbWVudHMtYnktbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUludGlhbGl6ZS1zdHJ1Y3QtZWxlbWVudHMtYnktbmFtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRhMDFkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1JbnRpYWxpemUtc3RydWN0LWVsZW1lbnRzLWJ5LW5hbWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDAwMDYyOWY3NDkwOGEyYTk1ZjYxMDQ0NDRjNzdhZDkzY2Y0MGQ2MmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxMyBKYW4gMjAxNiAwODo1MDo1MCArMDAwMAotU3ViamVjdDogW1BBVENIXSBJbnRpYWxpemUgc3RydWN0IGVsZW1lbnRzIGJ5IG5hbWUKLQotbWFrZXMgaXQgcG9ydGFibGUgYWNyb3NzIGdsaWJjIGFuZCBtdXNsCi0KLUZpeGVzIGVycm9ycwotCi18IHBpbmcuYzogSW4gZnVuY3Rpb24gJ3NlbmRfcHJvYmUnOgotfCBwaW5nLmM6NzM1OjE5OiB3YXJuaW5nOiBpbml0aWFsaXphdGlvbiBtYWtlcyBpbnRlZ2VyIGZyb20gcG9pbnRlcgotd2l0aG91dCBhIGNhc3QgWy1XaW50LWNvbnZlcnNpb25dCi18ICAgICAgICAgICAmaW92LCAxLCAmY21zZywgMCwgMCB9OwotfCAgICAgICAgICAgICAgICAgICAgXgotfCBwaW5nLmM6NzM1OjE5OiBub3RlOiAobmVhciBpbml0aWFsaXphdGlvbiBmb3IgJ20uX19wYWQxJykKLXwgcGluZy5jOjczNToxOTogZXJyb3I6IGluaXRpYWxpemVyIGVsZW1lbnQgaXMgbm90IGNvbXB1dGFibGUgYXQgbG9hZAotdGltZQotfCBwaW5nLmM6NzM1OjE5OiBub3RlOiAobmVhciBpbml0aWFsaXphdGlvbiBmb3IgJ20uX19wYWQxJykKLXwgbWFrZTogKioqIFtwaW5nLm9dIEVycm9yIDEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBwaW5nLmMgfCAxMSArKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9waW5nLmMgYi9waW5nLmMKLWluZGV4IDQ5ODk3NjAuLmU2N2YzODEgMTAwNjQ0Ci0tLS0gYS9waW5nLmMKLSsrKyBiL3BpbmcuYwotQEAgLTczMSw4ICs3MzEsMTUgQEAgaW50IHNlbmRfcHJvYmUoKQotIAotIAlkbyB7Ci0gCQlzdGF0aWMgc3RydWN0IGlvdmVjIGlvdiA9IHtvdXRwYWNrLCAwfTsKLS0JCXN0YXRpYyBzdHJ1Y3QgbXNnaGRyIG0gPSB7ICZ3aGVyZXRvLCBzaXplb2Yod2hlcmV0byksCi0tCQkJCQkJICAgJmlvdiwgMSwgJmNtc2csIDAsIDAgfTsKLSsJCXN0YXRpYyBzdHJ1Y3QgbXNnaGRyIG0gPSB7Ci0rCQkJLm1zZ19uYW1lID0gJndoZXJldG8sCi0rCQkJLm1zZ19uYW1lbGVuID0gc2l6ZW9mKHdoZXJldG8pLAotKwkJCS5tc2dfaW92ID0gJmlvdiwKLSsJCQkubXNnX2lvdmxlbiA9IDEsCi0rCQkJLm1zZ19jb250cm9sID0gJmNtc2csCi0rCQkJLm1zZ19jb250cm9sbGVuID0gMCwKLSsJCQkubXNnX2ZsYWdzPSAwLAotKwkJfTsKLSAJCW0ubXNnX2NvbnRyb2xsZW4gPSBjbXNnX2xlbjsKLSAJCWlvdi5pb3ZfbGVuID0gY2M7Ci0gCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I1NjI3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvYXJwaW5nLWZpeC1hcnBpbmctaGFuZy1pZi1TSUdBTFJNLWlzLWJsb2NrZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1hcnBpbmc6IGZpeCBhcnBpbmcgaGFuZyBpZiBTSUdBTFJNIGlzIGJsb2NrZWQKLQotVW5ibG9jayBTSUdBTFJNIHNvIHRoYXQgdGhlIHByZXZpb3VzbHkgY2FsbGVkIGFsYXJtKCkgY2FuIHByZXZlbnQKLXJlY3Zmcm9tKCkgZnJvbSBibG9ja2luZyBmb3JldmVyIGluIGNhc2UgdGhlIGluaGVyaXRlZCBwcm9jbWFzayBpcwotYmxvY2tpbmcgU0lHQUxSTSBhbmQgbm8gcGFja2V0IGlzIHJlY2VpdmVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVJlcG9ydGVkLWJ5OiBSdWkgUHJpb3IgPHJwcmlvckBkY2MuZmMudXAucHQ+Ci1SSC1CdWd6aWxsYTogIzEwODU5NzEKLVNpZ25lZC1vZmYtYnk6IEphbiBTeW5hY2VrIDxqc3luYWNla0ByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogWmhlbmJvIEdhbyA8emhlbmJvLmdhb0B3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvYXJwaW5nLmMub3JpZyBiL2FycGluZy5jCi1pbmRleCAzNTQwOGMxLi4yMDk4MTU5IDEwMDY0NAotLS0tIGEvYXJwaW5nLmMub3JpZwotKysrIGIvYXJwaW5nLmMKLUBAIC0xMjE1LDE2ICsxMjE1LDIyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJc29ja2xlbl90IGFsZW4gPSBzaXplb2YoZnJvbSk7Ci0gCQlpbnQgY2M7Ci0gCi0rCQlzaWdlbXB0eXNldCgmc3NldCk7Ci0rCQlzaWdhZGRzZXQoJnNzZXQsIFNJR0FMUk0pOwotKwkJc2lnYWRkc2V0KCZzc2V0LCBTSUdJTlQpOwotKwkJLyogVW5ibG9jayBTSUdBTFJNIHNvIHRoYXQgdGhlIHByZXZpb3VzbHkgY2FsbGVkIGFsYXJtKCkKLSsJCSAqIGNhbiBwcmV2ZW50IHJlY3Zmcm9tIGZyb20gYmxvY2tpbmcgZm9yZXZlciBpbiBjYXNlIHRoZQotKwkJICogaW5oZXJpdGVkIHByb2NtYXNrIGlzIGJsb2NraW5nIFNJR0FMUk0gYW5kIG5vIHBhY2tldAotKwkJICogaXMgcmVjZWl2ZWQuICovCi0rCQlzaWdwcm9jbWFzayhTSUdfVU5CTE9DSywgJnNzZXQsICZvc3NldCk7Ci0rCi0gCQlpZiAoKGNjID0gcmVjdmZyb20ocywgcGFja2V0LCBzaXplb2YocGFja2V0KSwgMCwKLSAJCQkJICAgKHN0cnVjdCBzb2NrYWRkciAqKSZmcm9tLCAmYWxlbikpIDwgMCkgewotIAkJCXBlcnJvcigiYXJwaW5nOiByZWN2ZnJvbSIpOwotIAkJCWNvbnRpbnVlOwotIAkJfQotIAotLQkJc2lnZW1wdHlzZXQoJnNzZXQpOwotLQkJc2lnYWRkc2V0KCZzc2V0LCBTSUdBTFJNKTsKLS0JCXNpZ2FkZHNldCgmc3NldCwgU0lHSU5UKTsKLS0JCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNzZXQsICZvc3NldCk7Ci0rCQlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzc2V0LCBOVUxMKTsKLSAJCXJlY3ZfcGFjayhwYWNrZXQsIGNjLCAoc3RydWN0IHNvY2thZGRyX2xsICopJmZyb20pOwotIAkJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZvc3NldCwgTlVMTCk7Ci0gCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9kZWJpYW4vdGFyZ2V0cy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2RlYmlhbi90YXJnZXRzLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjYjU1NzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2RlYmlhbi90YXJnZXRzLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KLQotSW5kZXg6IGlwdXRpbHMtczIwMTIxMjIxL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaXB1dGlscy1zMjAxMjEyMjEub3JpZy9NYWtlZmlsZQotKysrIGlwdXRpbHMtczIwMTIxMjIxL01ha2VmaWxlCi1AQCAtMTA2LDcgKzEwNiw3IEBAIGVuZGlmCi0gZW5kaWYKLSAKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1JUFY0X1RBUkdFVFM9dHJhY2VwYXRoIHBpbmcgY2xvY2tkaWZmIHJkaXNjIGFycGluZyB0ZnRwZCByYXJwZAotK0lQVjRfVEFSR0VUUz10cmFjZXBhdGggcGluZyBjbG9ja2RpZmYgYXJwaW5nCi0gSVBWNl9UQVJHRVRTPXRyYWNlcGF0aDYgdHJhY2Vyb3V0ZTYgcGluZzYKLSBUQVJHRVRTPSQoSVBWNF9UQVJHRVRTKSAkKElQVjZfVEFSR0VUUykKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9kZWJpYW4vdXNlX2dldGhvc3RieW5hbWUyLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvZGViaWFuL3VzZV9nZXRob3N0YnluYW1lMi5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2IxODg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9kZWJpYW4vdXNlX2dldGhvc3RieW5hbWUyLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gb3RoZXIgZGlzdHJvIERlYmlhbl0KLQotSW5kZXg6IGlwdXRpbHMtczIwMTIxMjIxL3RyYWNlcGF0aC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaXB1dGlscy1zMjAxMjEyMjEub3JpZy90cmFjZXBhdGguYwotKysrIGlwdXRpbHMtczIwMTIxMjIxL3RyYWNlcGF0aC5jCi1AQCAtMzcwLDkgKzM3MCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAl9Ci0gI2VuZGlmCi0gCi0tCWhlID0gZ2V0aG9zdGJ5bmFtZShwKTsKLSsJaGUgPSBnZXRob3N0YnluYW1lMihhcmd2WzBdLCBBRl9JTkVUKTsKLSAJaWYgKGhlID09IE5VTEwpIHsKLS0JCWhlcnJvcigiZ2V0aG9zdGJ5bmFtZSIpOwotKwkJaGVycm9yKCJnZXRob3N0YnluYW1lMiIpOwotIAkJZXhpdCgxKTsKLSAJfQotIAotSW5kZXg6IGlwdXRpbHMtczIwMTIxMjIxL3BpbmcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwdXRpbHMtczIwMTIxMjIxLm9yaWcvcGluZy5jCi0rKysgaXB1dGlscy1zMjAxMjEyMjEvcGluZy5jCi1AQCAtMjc5LDcgKzI3OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICNlbHNlCi0gCQkJaWRuID0gdGFyZ2V0OwotICNlbmRpZgotLQkJCWhwID0gZ2V0aG9zdGJ5bmFtZShpZG4pOwotKwkJCWhwID0gZ2V0aG9zdGJ5bmFtZTIoaWRuLCBBRl9JTkVUKTsKLSAJCQlpZiAoIWhwKSB7Ci0gCQkJCWZwcmludGYoc3RkZXJyLCAicGluZzogdW5rbm93biBob3N0ICVzXG4iLCB0YXJnZXQpOwotIAkJCQlleGl0KDIpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL25zZ21scy1wYXRoLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9uc2dtbHMtcGF0aC1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyYmY5NDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL25zZ21scy1wYXRoLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZpeCBuc2dtbHMgcGF0aCBpc3N1ZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWmhhaSBFZHdpbiA8ZWR3aW4uemhhaUBpbnRlbC5jb20+Ci0KLUluZGV4OiBpcHV0aWxzLXMyMDEwMTAwNi9kb2MvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcHV0aWxzLXMyMDEwMTAwNi5vcmlnL2RvYy9NYWtlZmlsZQkyMDExLTA5LTEzIDIwOjQyOjI3LjAwMDAwMDAwMCArMDgwMAotKysrIGlwdXRpbHMtczIwMTAxMDA2L2RvYy9NYWtlZmlsZQkyMDExLTA5LTEzIDIxOjAxOjUyLjAwMDAwMDAwMCArMDgwMAotQEAgLTI3LDEwICsyNywxNSBAQAotICMgZG9jYm9vazJtYW4gcHJvZHVjZXMgdXR0ZXJseSB1Z2x5IG91dHB1dCBhbmQgSSBkaWQgbm90IGZpbmQKLSAjIGFueSB3YXkgdG8gY3VzdG9taXplIHRoaXMgYnV0IGhhY2tpbmcgYmFja2VuZCBwZXJsIHNjcmlwdCBhIGxpdHRsZS4KLSAjIFdlbGwsIGhlbmNlLi4uCi0rIyBuc2dtbHMgc2VlbXMgYXBwZW5kIHBhdGggdG8gc2VhcmNoIGRpcmVjdG9yeSBhY2NvcmRpbmcgdG8gdGhlIHN5c2lkIHBhdGguCi0rIyBlLmcuIGlmIGlucHV0IC4uL2luZGV4LmRiLCBpdCB3b3VsZCBzZWFyY2ggJHNlYXJjaF9kaXJlY3RvcnkvLi4vIHJhdGhlciB0aGFuCi0rIyAkc2VhcmNoX2RpcmVjdG9yeSwgd2hpY2ggbGVhZHMgc2VhcmNoaW5nIGZhaWx1cmUuIEZpeGluZyBuc2dtbHMgcHJvYmFibHkKLSsjIGludHJvZHVjZSBzb21lIHNpZGUgZWZmZWN0cywgc28gdXNlIHRoaXMgdWdseSBoYWNrOiBydW5uaW5nIG5zZ21scyBpbiBjdXJyZW50Ci0rIyBkaXJlY3RvcnksIGFuZCBydW5uaW5nIGRvY2Jvb2sybWFuIGluIHRtcCBkaXJlY3RvcnkuCi0gCi0gJChNQU5GSUxFUyk6IGluZGV4LmRiCi0gCUAtbWtkaXIgdG1wLmRiMm1hbgotLQlAc2V0IC1lOyBjZCB0bXAuZGIybWFuOyBuc2dtbHMgLi4vJDwgfCBzZ21sc3BsIC4uL2RvY2Jvb2sybWFuLXNwZWMucGwgOwltdiAkQCAuLgotKwlAc2V0IC1lOyBuc2dtbHMgJDwgPnRtcC5kYjJtYW4vb3V0cHV0OyBjZCB0bXAuZGIybWFuOyBjYXQgb3V0cHV0IHwgc2dtbHNwbCAuLi9kb2Nib29rMm1hbi1zcGVjLnBsIDsJbXYgJEAgLi4KLSAJQC1ybSAtcmYgdG1wLmRiMm1hbgotIAotIGNsZWFuOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTUxMjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTUxMjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmRlNmZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE1MTIxOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0d29yayBtb25pdG9yaW5nIHRvb2xzIgotREVTQ1JJUFRJT04gPSAiVXRpbGl0aWVzIGZvciB0aGUgSVAgcHJvdG9jb2wsIGluY2x1ZGluZyB0cmFjZXJvdXRlNiwgXAotdHJhY2VwYXRoLCB0cmFjZXBhdGg2LCBwaW5nLCBwaW5nNiBhbmQgYXJwaW5nLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc2tidWZmLm5ldC9pcHV0aWxzIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiQlNEICYgR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9waW5nLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0zNTttZDU9ZjljZWIyMDE3MzNlOWE2Y2Y4ZjAwNzY2ZGQyNzhkODIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJhY2VwYXRoLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xMDttZDU9MGVjZWEyYmY2MGJmZjJmM2Q4NDAwOTZkODc2NDdmM2QgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXJwaW5nLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xMTttZDU9ZmU4NDMwMWI1YzI2NTVjOTUwZjhiOTJhMDU3ZmFmYTYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGZ0cGQuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTMyO21kNT0yODgzNGJmOGE5MWE1YjhhOTI3NTVkYmVlNzA5ZWY5NiAiCi0KLURFUEVORFMgPSAiZ251dGxzIGxpYmNhcCBsaWJnY3J5cHQiCi0KLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnNrYnVmZi5uZXQvaXB1dGlscy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vdXNlX2dldGhvc3RieW5hbWUyLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL3RhcmdldHMuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9uc2dtbHMtcGF0aC1maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtaGVhZGVyLWluY2x1c2lvbi1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUludGlhbGl6ZS1zdHJ1Y3QtZWxlbWVudHMtYnktbmFtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGFhYTczOTVmMjdkZmY5ZjU3YWUwMTZkNGJjNzUzY2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTQ5ZjU4ZDcxOTUxZTUyYjQ2NTk1ODI5MTM0ZDRlMzMwNjQyZjUyMmY1MDAyNjkxN2ZhZGMzNDlhNTQ4MjVhMSIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiaXB1dGlscy0oP1A8cHZlcj5zXGQrKS50YXIiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlICdDQz0ke0NDfSAtRF9HTlVfU09VUkNFJyBWUEFUSD0iJHtTVEFHSU5HX0xJQkRJUn06JHtTVEFHSU5HX0RJUl9IT1NUfS8ke2Jhc2VfbGliZGlyfSIgYWxsCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQkjIFNVSUQgcm9vdCBwcm9ncmFtcwotCWluc3RhbGwgLW0gNDU1NSBwaW5nICR7RH0ke2Jhc2VfYmluZGlyfS9waW5nCi0JaW5zdGFsbCAtbSA0NTU1IHBpbmc2ICR7RH0ke2Jhc2VfYmluZGlyfS9waW5nNgotCWluc3RhbGwgLW0gNDU1NSB0cmFjZXJvdXRlNiAke0R9JHtiYXNlX2JpbmRpcn0vCi0JaW5zdGFsbCAtbSA0NTU1IGNsb2NrZGlmZiAke0R9JHtiYXNlX2JpbmRpcn0vCi0JIyBPdGhlciBwcm9ncmFtZ3MKLQlmb3IgaSBpbiBhcnBpbmcgdHJhY2VwYXRoIHRyYWNlcGF0aDY7IGRvCi0JICBpbnN0YWxsIC1tIDA3NTUgJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LwotCWRvbmUKLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0tcGluZyA9ICJwaW5nIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3BpbmddID0gIiR7YmFzZV9iaW5kaXJ9L3BpbmciCi0KLUFMVEVSTkFUSVZFXyR7UE59LXBpbmc2ID0gInBpbmc2IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bpbmc2XSA9ICIke2Jhc2VfYmluZGlyfS9waW5nNiIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXBpbmcgJHtQTn0tcGluZzYgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXBhdGg2ICR7UE59LXRyYWNlcm91dGU2ICR7UE59LWNsb2NrZGlmZiIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1waW5nICR7UE59LXBpbmc2ICR7UE59LWFycGluZyAke1BOfS10cmFjZXBhdGggJHtQTn0tdHJhY2VwYXRoNiAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYiCi0KLUZJTEVTXyR7UE59CT0gIiIKLUZJTEVTXyR7UE59LXBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vcGluZy4ke0JQTn0iCi1GSUxFU18ke1BOfS1waW5nNiA9ICIke2Jhc2VfYmluZGlyfS9waW5nNi4ke0JQTn0iCi1GSUxFU18ke1BOfS1hcnBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vYXJwaW5nIgotRklMRVNfJHtQTn0tdHJhY2VwYXRoID0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcGF0aCIKLUZJTEVTXyR7UE59LXRyYWNlcGF0aDYgPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2VwYXRoNiIKLUZJTEVTXyR7UE59LXRyYWNlcm91dGU2CT0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcm91dGU2IgotRklMRVNfJHtQTn0tY2xvY2tkaWZmID0gIiR7YmFzZV9iaW5kaXJ9L2Nsb2NrZGlmZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE2MTEwNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE2MTEwNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTI1NzM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTYxMTA1LmJiCkBAIC0wLDAgKzEsNjIgQEAKK1NVTU1BUlkgPSAiTmV0d29yayBtb25pdG9yaW5nIHRvb2xzIgorREVTQ1JJUFRJT04gPSAiVXRpbGl0aWVzIGZvciB0aGUgSVAgcHJvdG9jb2wsIGluY2x1ZGluZyB0cmFjZXJvdXRlNiwgXAordHJhY2VwYXRoLCB0cmFjZXBhdGg2LCBwaW5nLCBwaW5nNiBhbmQgYXJwaW5nLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pcHV0aWxzL2lwdXRpbHMiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BpbmcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTM1O21kNT1mOWNlYjIwMTczM2U5YTZjZjhmMDA3NjZkZDI3OGQ4MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmFjZXBhdGguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTEwO21kNT0wZWNlYTJiZjYwYmZmMmYzZDg0MDA5NmQ4NzY0N2YzZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hcnBpbmcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTExO21kNT1mZTg0MzAxYjVjMjY1NWM5NTBmOGI5MmEwNTdmYWZhNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZnRwZC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzI7bWQ1PTI4ODM0YmY4YTkxYTViOGE5Mjc1NWRiZWU3MDllZjk2ICIKKworREVQRU5EUyA9ICJnbnV0bHMgbGliY2FwIGxpYmdjcnlwdCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi1NVVNMLnBhdGNoIFwKKyAgICAgICAgICAgIgorUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICJiZmZjMGU5NTdiOThkNjI2YWI0Y2VhMjE4Yzg5MjUxMjAxNDI1NDQyIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5zXGQrKSIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICJVU0VfSUROPXllcyxVU0VfSUROPW5vLGxpYmlkbiIKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSAnQ0M9JHtDQ30gLURfR05VX1NPVVJDRScgVlBBVEg9IiR7U1RBR0lOR19MSUJESVJ9OiR7U1RBR0lOR19ESVJfSE9TVH0vJHtiYXNlX2xpYmRpcn0iICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gYWxsCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwkjIFNVSUQgcm9vdCBwcm9ncmFtcworCWluc3RhbGwgLW0gNDU1NSBwaW5nICR7RH0ke2Jhc2VfYmluZGlyfS9waW5nCisJaW5zdGFsbCAtbSA0NTU1IHRyYWNlcm91dGU2ICR7RH0ke2Jhc2VfYmluZGlyfS8KKwlpbnN0YWxsIC1tIDQ1NTUgY2xvY2tkaWZmICR7RH0ke2Jhc2VfYmluZGlyfS8KKwkjIE90aGVyIHByb2dyYW1ncworCWZvciBpIGluIGFycGluZyB0cmFjZXBhdGg7IGRvCisJICBpbnN0YWxsIC1tIDA3NTUgJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LworCWRvbmUKK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0tcGluZyA9ICJwaW5nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BpbmddID0gIiR7YmFzZV9iaW5kaXJ9L3BpbmciCisKK1BBQ0tBR0VTICs9ICIke1BOfS1waW5nICR7UE59LWFycGluZyAke1BOfS10cmFjZXBhdGggJHtQTn0tdHJhY2Vyb3V0ZTYgJHtQTn0tY2xvY2tkaWZmIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYiCisKK0ZJTEVTXyR7UE59CT0gIiIKK0ZJTEVTXyR7UE59LXBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vcGluZy4ke0JQTn0iCitGSUxFU18ke1BOfS1hcnBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vYXJwaW5nIgorRklMRVNfJHtQTn0tdHJhY2VwYXRoID0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcGF0aCIKK0ZJTEVTXyR7UE59LXRyYWNlcm91dGU2CT0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcm91dGU2IgorRklMRVNfJHtQTn0tY2xvY2tkaWZmID0gIiR7YmFzZV9iaW5kaXJ9L2Nsb2NrZGlmZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzQ4Ny5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzQ4Ny5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNhZTQ4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc180ODcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIlRleHQgZmlsZSB2aWV3ZXIgc2ltaWxhciB0byBtb3JlIgotREVTQ1JJUFRJT04gPSAiTGVzcyBpcyBhIHByb2dyYW0gc2ltaWxhciB0byBtb3JlLCBpLmUuIGEgdGVybWluYWwgXAotYmFzZWQgcHJvZ3JhbSBmb3Igdmlld2luZyB0ZXh0IGZpbGVzIGFuZCB0aGUgb3V0cHV0IGZyb20gb3RoZXIgXAotcHJvZ3JhbXMuIExlc3Mgb2ZmZXJzIG1hbnkgZmVhdHVyZXMgYmV5b25kIHRob3NlIHRoYXQgbW9yZSBkb2VzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JlZW53b29kc29mdHdhcmUuY29tLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotIyAoR1BMdjIrICg8PCA0MTgpLCBHUEx2MysgKD49IDQxOCkpIHwgbGVzcwotIyBJbmNsdWRpbmcgZW1haWwgYXV0aG9yIGdpdmluZyBwZXJtaXNzaW5nIHRvIHVzZSBCU0QKLSMKLSMgRnJvbTogTWFyayBOdWRlbG1hbiA8bWFya25AZ3JlZW53b29kc29mdHdhcmUuY29tPgotIyBUbzogRWxpemFiZXRoIEZsYW5hZ2FuIDxlbGl6YWJldGguZmxhbmFnYW5AaW50ZWwuY29tCi0jIERhdGU6IDEyLzE5LzExCi0jCi0jIEhpIEVsaXphYmV0aCwKLSMgVXNpbmcgYSBnZW5lcmljIEJTRCBsaWNlbnNlIGZvciBsZXNzIGlzIGZpbmUgd2l0aCBtZS4KLSMgVGhhbmtzLAotIwotIyAtLU1hcmsKLSMKLQotTElDRU5TRSA9ICJHUEx2MysgfCBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0yZWYzZTRiOGRhZmM4NTYxMmJjNTI1NGI4MDgxZTIzNCIKLURFUEVORFMgPSAibmN1cnNlcyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0JICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkY2M4YmYxODNhODNiMzYyZDM3ZmU5ZWY4ZGYxZmI2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmM2RjODQ1NWNiMGIyYjY2ZTBjNmI4MTZjMDAxOTdhNzFiZjZkMTc4NzA3OGFkZWVlMGJjZjJhZWE0YjEyNzA2IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vbGVzcy9kb3dubG9hZC5odG1sIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBvZV9ydW5tYWtlICdiaW5kaXI9JHtEfSR7YmluZGlyfScgJ21hbmRpcj0ke0R9JHttYW5kaXJ9JyBpbnN0YWxsCi19Ci0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImxlc3MiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc181MjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc181MjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg2Zjc1NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzUyOS5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIlRleHQgZmlsZSB2aWV3ZXIgc2ltaWxhciB0byBtb3JlIgorREVTQ1JJUFRJT04gPSAiTGVzcyBpcyBhIHByb2dyYW0gc2ltaWxhciB0byBtb3JlLCBpLmUuIGEgdGVybWluYWwgXAorYmFzZWQgcHJvZ3JhbSBmb3Igdmlld2luZyB0ZXh0IGZpbGVzIGFuZCB0aGUgb3V0cHV0IGZyb20gb3RoZXIgXAorcHJvZ3JhbXMuIExlc3Mgb2ZmZXJzIG1hbnkgZmVhdHVyZXMgYmV5b25kIHRob3NlIHRoYXQgbW9yZSBkb2VzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JlZW53b29kc29mdHdhcmUuY29tLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworIyAoR1BMdjIrICg8PCA0MTgpLCBHUEx2MysgKD49IDQxOCkpIHwgbGVzcworIyBJbmNsdWRpbmcgZW1haWwgYXV0aG9yIGdpdmluZyBwZXJtaXNzaW5nIHRvIHVzZSBCU0QKKyMKKyMgRnJvbTogTWFyayBOdWRlbG1hbiA8bWFya25AZ3JlZW53b29kc29mdHdhcmUuY29tPgorIyBUbzogRWxpemFiZXRoIEZsYW5hZ2FuIDxlbGl6YWJldGguZmxhbmFnYW5AaW50ZWwuY29tCisjIERhdGU6IDEyLzE5LzExCisjCisjIEhpIEVsaXphYmV0aCwKKyMgVXNpbmcgYSBnZW5lcmljIEJTRCBsaWNlbnNlIGZvciBsZXNzIGlzIGZpbmUgd2l0aCBtZS4KKyMgVGhhbmtzLAorIworIyAtLU1hcmsKKyMKKworTElDRU5TRSA9ICJHUEx2MysgfCBCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0yZWYzZTRiOGRhZmM4NTYxMmJjNTI1NGI4MDgxZTIzNCIKK0RFUEVORFMgPSAibmN1cnNlcyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisJICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMjAxOGI1M2ExZjczMTlhYjU0MzQ5YmFmODBlNmFhOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYmE0MmNkNGMzODE3NGI3YmQwZDQyNmQ4YTM5ZGYyYmU2YmNjMWVjMTg5NDZhNDY0MjcxMzI5MGY2YmY5YTBiIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vbGVzcy9kb3dubG9hZC5odG1sIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBvZV9ydW5tYWtlICdiaW5kaXI9JHtEfSR7YmluZGlyfScgJ21hbmRpcj0ke0R9JHttYW5kaXJ9JyBpbnN0YWxsCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImxlc3MiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vZGVzdGRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9kZXN0ZGlyLnBhdGNoCmluZGV4IGRhZDk2MDEuLjBmOTA0MDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9kZXN0ZGlyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9kZXN0ZGlyLnBhdGNoCkBAIC0yLDE2ICsyLDE2IEBACiAKIGZyb20gb3BlbmVtYmVkZGVkLCBhZGRlZCBieSBRaW5nIEhlIDxxaW5nLmhlQGludGVsLmNvbT4KIAotSW5kZXg6IGxpYmFpby0wLjMuMTA2L01ha2VmaWxlCitJbmRleDogbGliYWlvLTAuMy4xMTAvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJhaW8tMC4zLjEwNi5vcmlnL01ha2VmaWxlCTIwMDQtMDItMjYgMDc6MjU6MTAuMDAwMDAwMDAwIC0wODAwCi0rKysgbGliYWlvLTAuMy4xMDYvTWFrZWZpbGUJMjAwNi0xMC0xNCAwOToxOTowNy4wMDAwMDAwMDAgLTA3MDAKLUBAIC0xNSw3ICsxNSw3IEBACistLS0gbGliYWlvLTAuMy4xMTAub3JpZy9NYWtlZmlsZQorKysrIGxpYmFpby0wLjMuMTEwL01ha2VmaWxlCitAQCAtMTUsNyArMTUsNyBAQCBhbGw6CiAgCUAkKE1BS0UpIC1DIHNyYwogIAogIGluc3RhbGw6CiAtCUAkKE1BS0UpIC1DIHNyYyBpbnN0YWxsIHByZWZpeD0kKHByZWZpeCkgaW5jbHVkZWRpcj0kKGluY2x1ZGVkaXIpIGxpYmRpcj0kKGxpYmRpcikKICsJQCQoTUFLRSkgLUMgc3JjIGluc3RhbGwgcHJlZml4PSQoREVTVERJUikkKHByZWZpeCkgaW5jbHVkZWRpcj0kKERFU1RESVIpJChpbmNsdWRlZGlyKSBsaWJkaXI9JChERVNURElSKSQobGliZGlyKQogIAotIAotIGNsZWFuOgorIGNoZWNrOgorIAlAJChNQUtFKSAtQyBoYXJuZXNzIGNoZWNrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCmluZGV4IDU2ODNkM2MuLmRiOTEzMTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC05LDEyICs5LDEyIEBACiBTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogMjAxMi8wNS8wMwogCi1JbmRleDogbGliaWRuLTEuMjQvY29uZmlndXJlLmFjCitJbmRleDogbGliaWRuLTEuMzMvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliaWRuLTEuMjQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBsaWJpZG4tMS4yNC9jb25maWd1cmUuYWMKLUBAIC0zNCw2ICszNCwxMCBAQCBBQ19TVUJTVChMVF9DVVJSRU5ULCAxNykKLSBBQ19TVUJTVChMVF9SRVZJU0lPTiwgNykKKy0tLSBsaWJpZG4tMS4zMy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmlkbi0xLjMzL2NvbmZpZ3VyZS5hYworQEAgLTMzLDYgKzMzLDEwIEBAIEFDX1NVQlNUKExUX0NVUlJFTlQsIDE3KQorIEFDX1NVQlNUKExUX1JFVklTSU9OLCAxNikKICBBQ19TVUJTVChMVF9BR0UsIDYpCiAgCiArIyBhdXRvbWFrZSAxLjEyIHNlZW1zIHRvIHJlcXVpcmUgdGhpcywgYnV0IGF1dG9tYWtlIDEuMTEgZG9lc24ndCByZWNvZ25pemUgaXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibW5sL2xpYm1ubF8xLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibW5sL2xpYm1ubF8xLjAuNC5iYgppbmRleCBiNDU4Nzk5Li4yMzI2MmU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiCkBAIC0xMSwzICsxMSw1IEBACiBTUkNfVVJJW3Rhci5zaGEyNTZzdW1dID0gIjE3MWY4OTY5OWYyODZhNTg1NGI3MmI5MWQwNmU4ZjhlMzY4MzA2NGM1OTAxZmIwOWQ5NTRhOWFiNmY1NTFmODEiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Y2M5ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4wLmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAicGlwZWxpbmUgbWFuaXB1bGF0aW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgQyBsaWJyYXJ5IGZvciBzZXR0aW5nIHVwIGFuZCBydW5uaW5nIHBpcGVsaW5lcyBvZiBwcm9jZXNzZXMsIFwKK3dpdGhvdXQgbmVlZGluZyB0byBpbnZvbHZlIHNoZWxsIGNvbW1hbmQtbGluZSBwYXJzaW5nIHdoaWNoIGlzIG9mdGVuIFwKK2Vycm9yLXByb25lIGFuZCBpbnNlY3VyZS4iCitIT01FUEFHRSA9ICJodHRwOi8vbGlicGlwZWxpbmUubm9uZ251Lm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9saWJwaXBlbGluZS9saWJwaXBlbGluZS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiYjc0MzdhNTAyMDE5MGNmYTg0ZjA5YzQxMmRiMzg5MDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGQ3MmUxMmU0ZjJhZmZmNjdmZDdiOWRmMGEyNGQ3YmE0MmI1YTdjOTIxMWFjNWIzZGNjY2M1Y2Q4YjI4NmYyYiIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtQWRkLWZhbGxiYWNrLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKaW5kZXggYTU3NWQwZS4uZTVjYjYwZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDRkOWI2ZWMzMGI3OGQwMGVhZDBhMjJlYjVkMDQ3ZGNkYmEzN2U5OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ3YzZmMWI0MzMyYTllNDkzNWM0OGNjYTgyNjc4NmE2YjhmZTZmNTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/TmVhbD0yMEdvbXBhPTIwPTI4PUUzPTgzPThCPUUzPTgzPUJDPUUzPTgzPUFCPUUzPTgzPUJCPz0KICA9P1VURi04P3E/PUUzPTgyPUIzPUUzPTgyPTk5PUUzPTgzPUIzPUUzPTgzPThGPUUzPTgyPTlBPTI5Pz0KICA8bmdvbXBhMTNAZ21haWwuY29tPgpAQCAtMTMsNiArMTMsNyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvcHVsbC8xMTJdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgZXh0L0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKysKICBleHQvc29sdl94Zm9wZW4uYyAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArLS0KQEAgLTIzLDcgKzI0LDcgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0L3NvbHZfeGZvcGVuX2ZhbGxiYWNrX2ZvcGVuY29va2llLmgKIAogZGlmZiAtLWdpdCBhL2V4dC9DTWFrZUxpc3RzLnR4dCBiL2V4dC9DTWFrZUxpc3RzLnR4dAotaW5kZXggNTg2ZWRhOC4uNDc3YTJlZiAxMDA2NDQKK2luZGV4IGI4OTE3YTIuLmZhYzZjMzIgMTAwNjQ0CiAtLS0gYS9leHQvQ01ha2VMaXN0cy50eHQKICsrKyBiL2V4dC9DTWFrZUxpc3RzLnR4dAogQEAgLTQsNiArNCwxMyBAQCBTRVQgKGxpYnNvbHZleHRfU1JDUwpAQCAtNDEsMTEgKzQyLDExIEBACiAgICAgIFNFVCAobGlic29sdmV4dF9TUkNTICR7bGlic29sdmV4dF9TUkNTfQogICAgICAgICAgcG9vbF9maWxlY29uZmxpY3RzLmMgcmVwb19ycG1kYi5jKQogZGlmZiAtLWdpdCBhL2V4dC9zb2x2X3hmb3Blbi5jIGIvZXh0L3NvbHZfeGZvcGVuLmMKLWluZGV4IGIwNDIxYmYuLjMxMzQ1ZGQgMTAwNjQ0CitpbmRleCAyYzY0YmI2Li5lYjNhM2FkIDEwMDY0NAogLS0tIGEvZXh0L3NvbHZfeGZvcGVuLmMKICsrKyBiL2V4dC9zb2x2X3hmb3Blbi5jCi1AQCAtMTMsNiArMTMsMTAgQEAKLSAjaW5jbHVkZSA8emxpYi5oPgorQEAgLTEyLDYgKzEyLDEwIEBACisgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxmY250bC5oPgogIAogKyNpZiAhZGVmaW5lZChIQVZFX0ZVTk9QRU4pICYmICFkZWZpbmVkKEhBVkVfRk9QRU5DT09LSUUpCkBAIC01NSw3ICs1Niw3IEBACiAgI2luY2x1ZGUgInNvbHZfeGZvcGVuLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKICAKLUBAIC0zOSw3ICs0Myw3IEBAIHN0YXRpYyBGSUxFICpjb29raWVvcGVuKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqbW9kZSwKK0BAIC0yMSw3ICsyNSw3IEBAIHN0YXRpYyBGSUxFICpjb29raWVvcGVuKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqbW9kZSwKICAJc3NpemVfdCAoKmN3cml0ZSkodm9pZCAqLCBjb25zdCBjaGFyICosIHNpemVfdCksCiAgCWludCAoKmNjbG9zZSkodm9pZCAqKSkKICB7CkBAIC02NCw3ICs2NSw3IEBACiAgICBpZiAoIWNvb2tpZSkKICAgICAgcmV0dXJuIDA7CiAgICByZXR1cm4gZnVub3Blbihjb29raWUsCi1AQCAtNDgsNyArNTIsNyBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCitAQCAtMzAsNyArMzQsNyBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCiAgICAgICAgKGZwb3NfdCAoKikodm9pZCAqLCBmcG9zX3QsIGludCkpTlVMTCwJCQkJCS8qIHNlZWtmbiAqLwogICAgICAgIGNjbG9zZQogICAgICAgICk7CkBAIC03Myw3ICs3NCw3IEBACiAgICBjb29raWVfaW9fZnVuY3Rpb25zX3QgY2lvOwogIAogICAgaWYgKCFjb29raWUpCi1AQCAtNjAsOCArNjQsNiBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCitAQCAtNDIsOCArNDYsNiBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCiAgICAgIGNpby53cml0ZSA9IGN3cml0ZTsKICAgIGNpby5jbG9zZSA9IGNjbG9zZTsKICAgIHJldHVybiAgZm9wZW5jb29raWUoY29va2llLCAqbW9kZSA9PSAndycgPyAidyIgOiAiciIsIGNpbyk7CkBAIC0yNDYsNSArMjQ3LDUgQEAKICsKICsjZW5kaWYKIC0tIAotMi4xMS4wCisyLjQuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAxLXJlcG9fcnBtZGIuYy1pbmNyZWFzZS1NQVhfSERSX0NOVC1hbmQtTUFYX0hEUl9EU0laRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtcmVwb19ycG1kYi5jLWluY3JlYXNlLU1BWF9IRFJfQ05ULWFuZC1NQVhfSERSX0RTSVpFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTRlNWNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtcmVwb19ycG1kYi5jLWluY3JlYXNlLU1BWF9IRFJfQ05ULWFuZC1NQVhfSERSX0RTSVpFLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSAxYzRjOTM1Y2I3M2FjMWNjYjk2OTNkZjFhNTFiYTIxOGEyMmU4Y2E4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWluZyBMaXUgPGxpdS5taW5nNTBAZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBTZXAgMjAxNyAxMToxNToxNiArMDgwMAotU3ViamVjdDogW1BBVENIXSByZXBvX3JwbWRiLmM6IGluY3JlYXNlIE1BWF9IRFJfQ05UIGFuZCBNQVhfSERSX0RTSVpFCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9wdWxsLzIzMF0KLQotV2UgZW5jb3VudGVyZWQgJ2NvcnJ1cHQgcnBtJyBpc3N1ZXMgd2hlbiBpbnN0YWxsaW5nIGV4dHJlbWUgYmlnIFJQTQotcGFja2FnZXMgbGlrZSB0aGUga2VybmVsLWRldnNyYyBwYWNrYWdlIG9mIFlvY3RvIHByb2plY3QuCi0KLUl0IGNhbiBiZSBmaXhlZCBieSBpbmNyZWFzaW5nIE1BWF9IRFJfQ05UIGFuZCBNQVhfSERSX0RTSVpFIHBlciB0ZXN0LgotCi1TaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+Ci0tLS0KLSBleHQvcmVwb19ycG1kYi5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4dC9yZXBvX3JwbWRiLmMgYi9leHQvcmVwb19ycG1kYi5jCi1pbmRleCBjNzAwMGE5Li43MDAwODM1IDEwMDY0NAotLS0tIGEvZXh0L3JlcG9fcnBtZGIuYwotKysrIGIvZXh0L3JlcG9fcnBtZGIuYwotQEAgLTE3MCw4ICsxNzAsOCBAQAotICNkZWZpbmUgTUFYX1NJR19DTlQJCTB4MTAwMDAwCi0gI2RlZmluZSBNQVhfU0lHX0RTSVpFCQkweDEwMDAwMAotIAotLSNkZWZpbmUgTUFYX0hEUl9DTlQJCTB4MTAwMDAwCi0tI2RlZmluZSBNQVhfSERSX0RTSVpFCQkweDIwMDAwMDAKLSsjZGVmaW5lIE1BWF9IRFJfQ05UCQkweDIwMDAwMAotKyNkZWZpbmUgTUFYX0hEUl9EU0laRQkJMHg0MDAwMDAwCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgcnBtaGVhZCB7Ci0gICBpbnQgY250OwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMi1GaXhlcy10by1pbnRlcm5hbC1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaAppbmRleCBlZmI0ZTNhLi45M2I4Y2M5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDItRml4ZXMtdG8taW50ZXJuYWwtZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDk5YjEwY2RmNmEwZjhhMjRlMTY3MGMxODEzYjFkOTU2M2FlM2Y1YjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDg0ZTEyYmY3ZWNlNDkwNzNjNTU5ZGZkNTgwMDUxMzJhNjA5OWE5NjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/TmVhbD0yMEdvbXBhPTIwPTI4PUUzPTgzPThCPUUzPTgzPUJDPUUzPTgzPUFCPUUzPTgzPUJCPz0KICA9P1VURi04P3E/PUUzPTgyPUIzPUUzPTgyPTk5PUUzPTgzPUIzPUUzPTgzPThGPUUzPTgyPTlBPTI5Pz0KICA8bmdvbXBhMTNAZ21haWwuY29tPgpAQCAtMTEsNiArMTEsNyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvcHVsbC8xMTJdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgZXh0L3NvbHZfeGZvcGVuX2ZhbGxiYWNrX2ZvcGVuY29va2llLmMgfCAxOSArKysrKysrKysrLS0tLS0tLS0tCiAgZXh0L3NvbHZfeGZvcGVuX2ZhbGxiYWNrX2ZvcGVuY29va2llLmggfCAxMCArKysrKy0tLS0tCkBAIC0xMDAsNSArMTAxLDUgQEAKICAKICAjaWZuZGVmIFNPTFZfWEZPUEVOX0ZBTExCQUNLX0ZPUEVOQ09PS0lFX0gKIC0tIAotMi4xMS4wCisyLjQuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjOGY3ZmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjI4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzb2x2aW5nIHBhY2thZ2VzIGFuZCByZWFkaW5nIHJlcG9zaXRvcmllcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9pc3N1ZXMiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkJTRDttZDU9NjIyNzJiZDExYzk3Mzk2ZDRhYWYxYzQxYmMxMWY3ZDgiCi0KLURFUEVORFMgPSAiZXhwYXQgemxpYiBycG0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2LmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcG9fcnBtZGIuYy1pbmNyZWFzZS1NQVhfSERSX0NOVC1hbmQtTUFYX0hEUl9EU0laRS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXhlcy10by1pbnRlcm5hbC1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ1JFViA9ICJiOGE5ZGRkODhlYjRlMGFiMzUxZWI1NWE1MzE4NmI1ZGM1YWMwODI1IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURMSUI9JHtiYXNlbGlifSAtRE1VTFRJX1NFTUFOVElDUz1PTiAtREVOQUJMRV9SUE1NRD1PTiAtREVOQUJMRV9SUE1EQj1PTiAtREVOQUJMRV9DT01QTEVYX0RFUFM9T04iCi0KLVBBQ0tBR0VTID0rICIke1BOfS10b29scyAke1BOfWV4dCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXMvRmluZExpYlNvbHYuY21ha2UiCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59ZXh0ID0gIiR7bGliZGlyfS8ke1BOfWV4dC5zby4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMzMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMzMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQwMWNlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4zMy5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIHNvbHZpbmcgcGFja2FnZXMgYW5kIHJlYWRpbmcgcmVwb3NpdG9yaWVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L2lzc3VlcyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuQlNEO21kNT02MjI3MmJkMTFjOTczOTZkNGFhZjFjNDFiYzExZjdkOCIKKworREVQRU5EUyA9ICJleHBhdCB6bGliIHJwbSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYuZ2l0IFwKKyAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAxLUFkZC1mYWxsYmFjay1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworU1JDUkVWID0gIjY5ZjE4MDM5NzhiYTdhNDZhNTc5MjhmYTRiZTY0MzA3OTI0MTllNGUiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItRExJQj0ke2Jhc2VsaWJ9IC1ETVVMVElfU0VNQU5USUNTPU9OIC1ERU5BQkxFX1JQTU1EPU9OIC1ERU5BQkxFX1JQTURCPU9OIC1ERU5BQkxFX0NPTVBMRVhfREVQUz1PTiIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgorCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59ZXh0ID0gIiR7bGliZGlyfS8ke1BOfWV4dC5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlcl8wLjYyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ1c2VyL2xpYnVzZXJfMC42Mi5iYgppbmRleCAxNzY1MzQ2Li43ZWM1NGViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlcl8wLjYyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidXNlci9saWJ1c2VyXzAuNjIuYmIKQEAgLTIyLDYgKzIyLDkgQEAKIAogREVQRU5EUyA9ICJwb3B0IGxpYnBhbSBnbGliLTIuMCBweXRob24zIgogCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInBhbSIKKwogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBweXRob24zbmF0aXZlIHB5dGhvbjMtZGlyIHBrZ2NvbmZpZyBndGstZG9jCiAKIEVYVFJBX09FTUFLRSA9ICJQWVRIT05fQ1BQRkxBR1M9LUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGQvMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItcGNyZS1kZXBlbmRlbmN5LWluc3RlYWQtb2YtY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2gKaW5kZXggYjhjN2YzNy4uZjE3YmRjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGU3YThjOTI1YjkzMTZhNzJiZGM4ZjMyNzg5ZmZlNTZmZGE1YzQ3ODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDIyYWZjNWQ5YWFhMjE1YzNjODdiYTIxYzc3ZDQ3ZGE0NGFiM2IxMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMjYgQXVnIDIwMTYgMTg6MjA6MzIgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gVXNlIHBrZy1jb25maWcgZm9yIHBjcmUgZGVwZW5kZW5jeSBpbnN0ZWFkIG9mIC1jb25maWcgc2NyaXB0LgpAQCAtNywzMSArNywzNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQotIGNvbmZpZ3VyZS5hYyB8IDExICsrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKyBjb25maWd1cmUuYWMgfCAxNiArKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFkMTcyYTEuLmE5MjM2ZGEgMTAwNjQ0CitpbmRleCA1MzgzY2VjLi5jMjlhOTAyIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0zODAsMTEgKzM4MCwxMiBAQCBpZiB0ZXN0ICIkV0lUSF9QQ1JFIiAhPSAibm8iOyB0aGVuCi0gCQkJUENSRV9MSUI9Ii1MJFdJVEhfUENSRS9saWIgLWxwY3JlIgotIAkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkV0lUSF9QQ1JFL2luY2x1ZGUiCi0gCQllbHNlCi0tCQkJQUNfUEFUSF9QUk9HKFBDUkVDT05GSUcsIHBjcmUtY29uZmlnKQotLQkJCWlmIHRlc3QgeCIkUENSRUNPTkZJRyIgIT0geDsgdGhlbgotLQkJCQlQQ1JFX0xJQj1gJFBDUkVDT05GSUcgLS1saWJzYAotLQkJCQlDUFBGTEFHUz0iJENQUEZMQUdTIGAkUENSRUNPTkZJRyAtLWNmbGFnc2AiCi0tCQkJZmkKLSsJCQlQS0dfQ0hFQ0tfTU9EVUxFUyhQQ1JFUEtHLCBbbGlicGNyZV0sIFsKK0BAIC02NTEsMTAgKzY1MSwxOCBAQCBBQ19BUkdfV0lUSChbcGNyZV0sCisgKQorIEFDX01TR19SRVNVTFQoWyRXSVRIX1BDUkVdKQorIAorLWlmIHRlc3QgIiRXSVRIX1BDUkUiICE9IG5vOyB0aGVuCistICBpZiB0ZXN0ICIkV0lUSF9QQ1JFIiAhPSB5ZXM7IHRoZW4KKy0gICAgUENSRV9MSUI9Ii1MJFdJVEhfUENSRS9saWIgLWxwY3JlIgorLSAgICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJFdJVEhfUENSRS9pbmNsdWRlIgorK2lmIHRlc3QgIiRXSVRIX1BDUkUiICE9ICJubyI7IHRoZW4KKysgIFBLR19DSEVDS19NT0RVTEVTKFBDUkVQS0csIFtsaWJwY3JlXSwgWwogKwkJCQlQQ1JFX0xJQj0ke1BDUkVQS0dfTElCU30KICsJCQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAke1BDUkVQS0dfQ0ZMQUdTfSIKLSsJCQldLCBbCisrICBdLCBbCiArCQkJCUFDX01TR19FUlJPUihbcGNyZSBwa2djb25maWcgbm90IGZvdW5kLCBpbnN0YWxsIHRoZSBwY3JlLWRldmVsIHBhY2thZ2Ugb3IgYnVpbGQgd2l0aCAtLXdpdGhvdXQtcGNyZV0pCi0rCQkJXSkKLSAJCWZpCi0gCi0gICBpZiB0ZXN0IHgiJFBDUkVfTElCIiAhPSB4OyB0aGVuCisrICBdKQorKworKyAgaWYgdGVzdCB4IiRQQ1JFX0xJQiIgIT0geDsgdGhlbgorKyAgICBBQ19ERUZJTkUoW0hBVkVfTElCUENSRV0sIFsxXSwgW2xpYnBjcmVdKQorKyAgICBBQ19ERUZJTkUoW0hBVkVfUENSRV9IXSwgWzFdLCBbcGNyZS5oXSkKKysgICAgQUNfU1VCU1QoUENSRV9MSUIpCisgICBlbHNlCisgICAgIEFDX1BBVEhfUFJPRyhbUENSRUNPTkZJR10sIFtwY3JlLWNvbmZpZ10pCisgICAgIGlmIHRlc3QgLW4gIiRQQ1JFQ09ORklHIjsgdGhlbgogLS0gCi0yLjkuMworMi4xNS4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjQ1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZGRhMzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1TVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IGhpZ2gtcGVyZm9ybWFuY2Ugd2ViIHNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlnaHR0cGQubmV0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L3Byb2plY3RzL2xpZ2h0dHBkL2lzc3VlcyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNGRhYzVjNmFiMTY5YWEyMTJmZWI1MDI4ODUzYTU3OSIKLQotU0VDVElPTiA9ICJuZXQiCi1SREVQRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtZGlybGlzdGluZyBcCi0gICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtaW5kZXhmaWxlIFwKLSAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1zdGF0aWNmaWxlIgotUlJFQ09NTUVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWFjY2VzcyBcCi0gICAgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtYWNjZXNzbG9nIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5saWdodHRwZC5uZXQvbGlnaHR0cGQvcmVsZWFzZXMtMS40LngvbGlnaHR0cGQtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgZmlsZTovL2luZGV4Lmh0bWwubGlnaHR0cGQgXAotICAgICAgICBmaWxlOi8vbGlnaHR0cGQuY29uZiBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZCBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZC5zZXJ2aWNlIFwKLSAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImExMjhlMWVkYTc2ODk5Y2UzZmQxMTVlZmFlNWZlNjMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFjOTcyMjVkZWVhMzNlZWZiYTZkNDE1OGMyY2VmMjc5MTNkNDc1NTMyNjM1MTZiYmU5ZDJlMjc2MGZjNDNhM2YiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIHBjcmUgemxpYiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKLVBBQ0tBR0VDT05GSUdbbW1hcF0gPSAiLS1lbmFibGUtbW1hcCwtLWRpc2FibGUtbW1hcCIKLVBBQ0tBR0VDT05GSUdbbGliZXZdID0gIi0td2l0aC1saWJldiwtLXdpdGhvdXQtbGliZXYsbGliZXYiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWwsLS13aXRob3V0LW15c3FsLG1hcmlhZGIiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWtyYjUsLS13aXRob3V0LWtyYjUsa3JiNSIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgotUEFDS0FHRUNPTkZJR1t3ZWJkYXYtcHJvcHNdID0gIi0td2l0aC13ZWJkYXYtcHJvcHMsLS13aXRob3V0LXdlYmRhdi1wcm9wcyxsaWJ4bWwyIHNxbGl0ZTMiCi1QQUNLQUdFQ09ORklHW3dlYmRhdi1sb2Nrc10gPSAiLS13aXRoLXdlYmRhdi1sb2NrcywtLXdpdGhvdXQtd2ViZGF2LWxvY2tzLHV0aWwtbGludXgiCi1QQUNLQUdFQ09ORklHW2dkYm1dID0gIi0td2l0aC1nZGJtLC0td2l0aG91dC1nZGJtLGdkYm0iCi1QQUNLQUdFQ09ORklHW21lbWNhY2hlXSA9ICItLXdpdGgtbWVtY2FjaGVkLC0td2l0aG91dC1tZW1jYWNoZWQsbGlibWVtY2FjaGVkIgotUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWE1LjEiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGZzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgZ2V0dGV4dCBzeXN0ZW1kCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJsaWdodHRwZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDcwIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibGlnaHR0cGQuc2VydmljZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vbGlnaHR0cGQuZCAke0R9L3d3dy9wYWdlcy9kYXYKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9saWdodHRwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saWdodHRwZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaW5kZXguaHRtbC5saWdodHRwZCAke0R9L3d3dy9wYWdlcy9pbmRleC5odG1sCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2xpZ2h0dHBkLnNlcnZpY2UKLQkjRm9yIEZIUyBjb21wbGlhbmNlLCBjcmVhdGUgc3ltYm9saWMgbGlua3MgdG8gL3Zhci9sb2cgYW5kIC92YXIvdG1wIGZvciBsb2dzIGFuZCB0ZW1wb3JhcnkgZGF0YQotCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L2xvZyAke0R9L3d3dy9sb2dzCi0JbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vdG1wICR7RH0vd3d3L3ZhcgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfSAvd3d3IgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9saWdodHRwZC5jb25mIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJebGlnaHR0cGQtbW9kdWxlLS4qIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgbGlnaHR0cGRfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGlnaHR0cGRfbGliZGlyLCAnXm1vZF8oLiopXC5zbyQnLCAnbGlnaHR0cGQtbW9kdWxlLSVzJywgJ0xpZ2h0dHBkIG1vZHVsZSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC40OC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzQ0NDRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDguYmIKQEAgLTAsMCArMSw4NSBAQAorU1VNTUFSWSA9ICJMaWdodHdlaWdodCBoaWdoLXBlcmZvcm1hbmNlIHdlYiBzZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpZ2h0dHBkLm5ldC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9yZWRtaW5lLmxpZ2h0dHBkLm5ldC9wcm9qZWN0cy9saWdodHRwZC9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTRkYWM1YzZhYjE2OWFhMjEyZmViNTAyODg1M2E1NzkiCisKK1NFQ1RJT04gPSAibmV0IgorUkRFUEVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWRpcmxpc3RpbmcgXAorICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWluZGV4ZmlsZSBcCisgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtc3RhdGljZmlsZSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImxpZ2h0dHBkLW1vZHVsZS1hY2Nlc3MgXAorICAgICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWFjY2Vzc2xvZyIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQubGlnaHR0cGQubmV0L2xpZ2h0dHBkL3JlbGVhc2VzLTEuNC54L2xpZ2h0dHBkLSR7UFZ9LnRhci54eiBcCisgICAgICAgIGZpbGU6Ly9pbmRleC5odG1sLmxpZ2h0dHBkIFwKKyAgICAgICAgZmlsZTovL2xpZ2h0dHBkLmNvbmYgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQuc2VydmljZSBcCisgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2ggXAorICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxZTNhOWViNTA3OGY0ODFlM2E4YTFkMGFhYWM4YzNjOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjhhZDVhYWM3NTI5ZDdiOTQ4YjlkN2U4Y2QwYjRhOWUxNzczMDlkODVkNmJmNjUxNmUyOGU2ZTQwZDc0ZjM2IgorCitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCBwY3JlIHpsaWIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCitQQUNLQUdFQ09ORklHW21tYXBdID0gIi0tZW5hYmxlLW1tYXAsLS1kaXNhYmxlLW1tYXAiCitQQUNLQUdFQ09ORklHW2xpYmV2XSA9ICItLXdpdGgtbGliZXYsLS13aXRob3V0LWxpYmV2LGxpYmV2IgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsLC0td2l0aG91dC1teXNxbCxtYXJpYWRiIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1rcmI1LC0td2l0aG91dC1rcmI1LGtyYjUiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0td2l0aC1wY3JlLC0td2l0aG91dC1wY3JlLGxpYnBjcmUiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tmYW1dID0gIi0td2l0aC1mYW0sLS13aXRob3V0LWZhbSxnYW1pbiIKK1BBQ0tBR0VDT05GSUdbd2ViZGF2LXByb3BzXSA9ICItLXdpdGgtd2ViZGF2LXByb3BzLC0td2l0aG91dC13ZWJkYXYtcHJvcHMsbGlieG1sMiBzcWxpdGUzIgorUEFDS0FHRUNPTkZJR1t3ZWJkYXYtbG9ja3NdID0gIi0td2l0aC13ZWJkYXYtbG9ja3MsLS13aXRob3V0LXdlYmRhdi1sb2Nrcyx1dGlsLWxpbnV4IgorUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICItLXdpdGgtZ2RibSwtLXdpdGhvdXQtZ2RibSxnZGJtIgorUEFDS0FHRUNPTkZJR1ttZW1jYWNoZV0gPSAiLS13aXRoLW1lbWNhY2hlZCwtLXdpdGhvdXQtbWVtY2FjaGVkLGxpYm1lbWNhY2hlZCIKK1BBQ0tBR0VDT05GSUdbbHVhXSA9ICItLXdpdGgtbHVhLC0td2l0aG91dC1sdWEsbHVhNS4xIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxmcyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIGdldHRleHQgc3lzdGVtZAorCitJTklUU0NSSVBUX05BTUUgPSAibGlnaHR0cGQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxpZ2h0dHBkLnNlcnZpY2UiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kICR7RH0ke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkLmQgJHtEfS93d3cvcGFnZXMvZGF2CisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbGlnaHR0cGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuY29uZiAke0R9JHtzeXNjb25mZGlyfQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2luZGV4Lmh0bWwubGlnaHR0cGQgJHtEfS93d3cvcGFnZXMvaW5kZXguaHRtbAorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisJCS1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9saWdodHRwZC5zZXJ2aWNlCisJI0ZvciBGSFMgY29tcGxpYW5jZSwgY3JlYXRlIHN5bWJvbGljIGxpbmtzIHRvIC92YXIvbG9nIGFuZCAvdmFyL3RtcCBmb3IgbG9ncyBhbmQgdGVtcG9yYXJ5IGRhdGEKKwlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS9sb2cgJHtEfS93d3cvbG9ncworCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L3RtcCAke0R9L3d3dy92YXIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0gL3d3dyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbGlnaHR0cGQuY29uZiIKKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpZ2h0dHBkLW1vZHVsZS0uKiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGxpZ2h0dHBkX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpZ2h0dHBkX2xpYmRpciwgJ15tb2RfKC4qKVwuc28kJywgJ2xpZ2h0dHBkLW1vZHVsZS0lcycsICdMaWdodHRwZCBtb2R1bGUgZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEyLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy4xMi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjBiMjA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEyLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1TVU1NQVJZID0gIlJvdGF0ZXMsIGNvbXByZXNzZXMsIHJlbW92ZXMgYW5kIG1haWxzIHN5c3RlbSBsb2cgZmlsZXMiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9pc3N1ZXMiCi1MSUNFTlNFID0gIkdQTHYyIgotCi0jIFRPRE86IERvY3VtZW50IGNvcmV1dGlscyBkZXBlbmRlbmN5LiBXaHkgbm90IFJERVBFTkRTPyBXaHkgbm90IGJ1c3lib3g/Ci0KLURFUEVORFM9ImNvcmV1dGlscyBwb3B0IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotIyBXaGVuIHVwZGF0aW5nIGxvZ3JvdGF0ZSB0byBsYXRlc3QgdXBzdHJlYW0sIFNSQ19VUkkgc2hvdWxkIHBvaW50IHRvCi0jIGEgcHJvcGVyIHJlbGVhc2UgdGFyYmFsbCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL3JlbGVhc2VzCi0jIGFuZCB3ZSBoYXZlIHRvIHRha2UgdGhlIHNuYXBzaG90IGZvciBub3cgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoCi0jIHRhcmJhbGwgYXZhaWxhYmxlIGZvciAzLjkuMS4KLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibG9ncm90YXRlLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgIGZpbGU6Ly9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VwZGF0ZS10aGUtbWFudWFsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNoZWNrLWRpZmZlcmVudC1maWxlc3lzdGVtcy5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNTYwYzU3ZmFjODdjNDViMmZjMTc0MDZjZGY3OTI4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZTZhNDAxY2FjOTAyNGRiMjI4ODI5N2UzYmUxYThhYjYwZTc0MDFiYThlOTEyMjUyMThhYWY0YTI3ZTgyYTA3IgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgc2VsaW51eCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thY2xdID0gIiwsYWNsIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICIsLGxpYnNlbGludXgiCi0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbG9ncm90YXRlLnN0YXR1cyBcCi0JCSAgICAke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mIgotCi0jIElmIFJQTV9PUFRfRkxBR1MgaXMgdW5zZXQsIGl0IGFkZHMgLWcgaXRzZWxmIHJhdGhlciB0aGFuIG9iZXlpbmcgb3VyCi0jIG9wdGltaXphdGlvbiB2YXJpYWJsZXMsIHNvIHVzZSBpdCByYXRoZXIgdGhhbiBFWFRSQV9DRkxBR1MuCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIExGUz0gXAotICAgIE9TX05BTUU9JyR7T1NfTkFNRX0nIFwKLSAgICAnQ0M9JHtDQ30nIFwKLSAgICAnUlBNX09QVF9GTEFHUz0ke0NGTEFHU30nIFwKLSAgICAnRVhUUkFfTERGTEFHUz0ke0xERkxBR1N9JyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWNsJywgJ1dJVEhfQUNMPXllcycsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlbGludXgnLCAnV0lUSF9TRUxJTlVYPXllcycsICcnLCBkKX0gXAotIgotCi0jIE9TX05BTUUgaW4gdGhlIG1ha2VmaWxlIGRlZmF1bHRzIHRvIGB1bmFtZSAtc2AuIFRoZSBiZWhhdmlvciBmb3IKLSMgZnJlZWJzZC9uZXRic2QgaXMgcXVlc3Rpb25hYmxlLCBzbyBsZWF2ZSBpdCBhcyBMaW51eCwgd2hpY2ggb25seSBzZXRzCi0jIElOU1RBTEw9aW5zdGFsbCBhbmQgQkFTRURJUj0vdXNyLgotT1NfTkFNRSA9ICJMaW51eCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiXAotICAgICR7QlBOfS5zZXJ2aWNlIFwKLSAgICAke0JQTn0udGltZXIgXAotIgotCi1MT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJUyA/PSAiZGFpbHkiCi1MT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWSA/PSAiMTJoIgotCi1kb19pbnN0YWxsKCl7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtEfSBNQU5ESVI9JHttYW5kaXJ9Ci0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQKLSAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIKLSAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS1kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mCi0gICAgdG91Y2ggJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnNlcnZpY2UKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLnRpbWVyICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS50aW1lcgotICAgICAgICBzZWQgLWkgLWUgJ3MsT25DYWxlbmRhcj0uKiQsT25DYWxlbmRhcj0ke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0JBU0lTfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKLSAgICAgICAgc2VkIC1pIC1lICdzLEFjY3VyYWN5U2VjPS4qJCxBY2N1cmFjeVNlYz0ke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0FDQ1VSQUNZfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKLSAgICBmaQotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkKLSAgICAgICAgaW5zdGFsbCAtcCAtbSAwNzU1ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLmNyb24gJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseS9sb2dyb3RhdGUKLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkwY2Y5MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEzLjAuYmIKQEAgLTAsMCArMSw4NSBAQAorU1VNTUFSWSA9ICJSb3RhdGVzLCBjb21wcmVzc2VzLCByZW1vdmVzIGFuZCBtYWlscyBzeXN0ZW0gbG9nIGZpbGVzIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvaXNzdWVzIgorTElDRU5TRSA9ICJHUEx2MiIKKworIyBUT0RPOiBEb2N1bWVudCBjb3JldXRpbHMgZGVwZW5kZW5jeS4gV2h5IG5vdCBSREVQRU5EUz8gV2h5IG5vdCBidXN5Ym94PworCitERVBFTkRTPSJjb3JldXRpbHMgcG9wdCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKKyMgV2hlbiB1cGRhdGluZyBsb2dyb3RhdGUgdG8gbGF0ZXN0IHVwc3RyZWFtLCBTUkNfVVJJIHNob3VsZCBwb2ludCB0bworIyBhIHByb3BlciByZWxlYXNlIHRhcmJhbGwgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9yZWxlYXNlcworIyBhbmQgd2UgaGF2ZSB0byB0YWtlIHRoZSBzbmFwc2hvdCBmb3Igbm93IGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaAorIyB0YXJiYWxsIGF2YWlsYWJsZSBmb3IgMy45LjEuCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0iCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxvZ3JvdGF0ZS0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgICBmaWxlOi8vYWN0LWFzLW12LXdoZW4tcm90YXRlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaGVjay1kaWZmZXJlbnQtZmlsZXN5c3RlbXMucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzhlZjI0ZDZmZGRjYzRkZjhlNDEyZGQ3NWM1NTFiNGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzIyMmNhMDMyZjk5YmU4ZDdhNGE4YzZhZDY5ZjNkY2M0OWI5NTExYmZlMzg0YmQ1YTI3MWViY2Q5YmQzZTUyYyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHNlbGludXgnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICIsLGFjbCIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLCxsaWJzZWxpbnV4IgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMgXAorCQkgICAgJHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZiIKKworIyBJZiBSUE1fT1BUX0ZMQUdTIGlzIHVuc2V0LCBpdCBhZGRzIC1nIGl0c2VsZiByYXRoZXIgdGhhbiBvYmV5aW5nIG91cgorIyBvcHRpbWl6YXRpb24gdmFyaWFibGVzLCBzbyB1c2UgaXQgcmF0aGVyIHRoYW4gRVhUUkFfQ0ZMQUdTLgorRVhUUkFfT0VNQUtFID0gIlwKKyAgICBMRlM9IFwKKyAgICBPU19OQU1FPScke09TX05BTUV9JyBcCisgICAgJ0NDPSR7Q0N9JyBcCisgICAgJ1JQTV9PUFRfRkxBR1M9JHtDRkxBR1N9JyBcCisgICAgJ0VYVFJBX0xERkxBR1M9JHtMREZMQUdTfScgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FjbCcsICdXSVRIX0FDTD15ZXMnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWxpbnV4JywgJ1dJVEhfU0VMSU5VWD15ZXMnLCAnJywgZCl9IFwKKyIKKworIyBPU19OQU1FIGluIHRoZSBtYWtlZmlsZSBkZWZhdWx0cyB0byBgdW5hbWUgLXNgLiBUaGUgYmVoYXZpb3IgZm9yCisjIGZyZWVic2QvbmV0YnNkIGlzIHF1ZXN0aW9uYWJsZSwgc28gbGVhdmUgaXQgYXMgTGludXgsIHdoaWNoIG9ubHkgc2V0cworIyBJTlNUQUxMPWluc3RhbGwgYW5kIEJBU0VESVI9L3Vzci4KK09TX05BTUUgPSAiTGludXgiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIlwKKyAgICAke0JQTn0uc2VydmljZSBcCisgICAgJHtCUE59LnRpbWVyIFwKKyIKKworTE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQkFTSVMgPz0gImRhaWx5IgorTE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQUNDVVJBQ1kgPz0gIjEyaCIKKworZG9faW5zdGFsbCgpeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gUFJFRklYPSR7RH0gTUFORElSPSR7bWFuZGlyfQorICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kCisgICAgbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliCisgICAgaW5zdGFsbCAtcCAtbSA2NDQgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUtZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZgorICAgIHRvdWNoICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9sb2dyb3RhdGUuc3RhdHVzCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS5zZXJ2aWNlCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS50aW1lciAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKKyAgICAgICAgc2VkIC1pIC1lICdzLE9uQ2FsZW5kYXI9LiokLE9uQ2FsZW5kYXI9JHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJU30sZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCisgICAgICAgIHNlZCAtaSAtZSAncyxBY2N1cmFjeVNlYz0uKiQsQWNjdXJhY3lTZWM9JHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWX0sZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCisgICAgZmkKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5CisgICAgICAgIGluc3RhbGwgLXAgLW0gMDc1NSAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS5jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkvbG9ncm90YXRlCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzg1NjEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJMU0Igc3VwcG9ydCBmb3IgT3BlbkVtYmVkZGVkIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL3ByZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9sc2IiCi1MSUNFTlNFID0gIkdQTHYyKyIKLVBSID0gInIyIgotCi1MU0JfQ09SRSA9ICJsc2ItY29yZS0ke1RBUkdFVF9BUkNIfSIKLUxTQl9DT1JFX3g4NiA9ICJsc2ItY29yZS1pYTMyIgotTFNCX0NPUkVfeDg2LTY0ID0gImxzYi1jb3JlLWFtZDY0IgotUlBST1ZJREVTXyR7UE59ICs9ICIke0xTQl9DT1JFfSIKLQotIyBsc2JfcmVsZWFzZSBuZWVkcyBnZXRvcHQsIGxzYmluaXRzY3JpcHRzCi1SREVQRU5EU18ke1BOfSArPSAiJHtWSVJUVUFMLVJVTlRJTUVfZ2V0b3B0fSBsc2Jpbml0c2NyaXB0cyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT0xMmRhNTQ0YjFhM2E1YTE3OTVhMjExNjBiNDk0NzFjZiIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9sc2IvbHNiX3JlbGVhc2UvMS40L2xzYi1yZWxlYXNlLTEuNC50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbHNiX3JlbGVhc2UtdG8td29yay13aXRoLWJ1c3lib3gtaGVhZC1hbmQtZmluZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0LWZ1bmN0aW9ucyBcCi0gICAgICAgICAgIGZpbGU6Ly9sc2Jfa2lsbHByb2MgXAotICAgICAgICAgICBmaWxlOi8vbHNiX2xvZ19tZXNzYWdlIFwKLSAgICAgICAgICAgZmlsZTovL2xzYl9waWRvZnByb2MgXAotICAgICAgICAgICBmaWxlOi8vbHNiX3N0YXJ0X2RhZW1vbiBcCi0gICAgICAgICAgICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzA1MzdlZjVhMDFlMGNhOTRiN2I4ZWI2YTM2YmIxZTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTkzMjEyODhmOGQ2MmU3YTFkNDg1YjdjNmJkY2NmMDY3NjZmYjhjYTYwM2M2MTk1ODA2ZTQ0NTdmZGYxNzE3MiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbHNiL2ZpbGVzL2xzYl9yZWxlYXNlLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9sc2JfcmVsZWFzZS8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1TID0gIiR7V09SS0RJUn0vbHNiLXJlbGVhc2UtMS40IgotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbCBwcmVmaXg9JHtEfSR7YmFzZV9wcmVmaXh9IG1hbmRpcj0ke0R9JHtkYXRhZGlyfS9tYW4vIERFU1RESVI9JHtEfQotCi0JIyB0aGVzZSB0d28gZGlycyBhcmUgbmVlZGVkIGJ5IHBhY2thZ2UgbHNiLWRpc3QtY2hlY2tlcgotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L29wdAotCW1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L29wdAotCi0JbWtkaXIgLXAgJHtEfSR7YmFzZV9saWJkaXJ9Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZAotCXByaW50ZiAiTFNCX1ZFUlNJT049XCJjb3JlLTQuMS1ub2FyY2g6IiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0KLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTsgdGhlbgotCQlwcmludGYgImNvcmUtNC4xLWlhMzIiID4+ICAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCWVsc2UKLQkJcHJpbnRmICJjb3JlLTQuMS0ke1RBUkdFVF9BUkNIfSIgPj4gICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0JZmkKLQllY2hvICJcIiIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQllY2hvICJESVNUUklCX0lEPSR7RElTVFJPfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQllY2hvICJESVNUUklCX1JFTEVBU0U9JHtESVNUUk9fVkVSU0lPTn0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0JaWYgWyAtbiAiJHtESVNUUk9fQ09ERU5BTUV9IiBdOyB0aGVuCi0JCWVjaG8gIkRJU1RSSUJfQ09ERU5BTUU9JHtESVNUUk9fQ09ERU5BTUV9IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCWZpCi0JZWNobyAiRElTVFJJQl9ERVNDUklQVElPTj1cIiR7RElTVFJPX05BTUV9ICR7RElTVFJPX1ZFUlNJT059XCIiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0KLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTsgdGhlbgotCQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1ub2FyY2gKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1pYTMyCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1pYTMyCi0JZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tYW1kNjQKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LWFtZDY0Ci0JZmkKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzMyCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGMzMgotCWVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzY0Ci0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGM2NAotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vY29yZS1sc2IKLSAgICAgICBmb3IgaSBpbiBsc2Jfa2lsbHByb2MgbHNiX2xvZ19tZXNzYWdlIGxzYl9waWRvZnByb2MgbHNiX3N0YXJ0X2RhZW1vbgotICAgICAgIGRvCi0gICAgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyRpICR7RH0ke3N5c2NvbmZkaXJ9L2NvcmUtbHNiCi0gICAgICAgZG9uZQotCi0gICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKLSAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LWZ1bmN0aW9ucyAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKLQotICAgICAgICMgY3JlYXRlIGxpbmtzIGZvciBMU0IgdGVzdAotICAgICAgIGlmIFsgLWUgJHtzYmluZGlyfS9jaGtjb25maWcgXTsgdGhlbgotICAgICAgICAgICAgICAgaWYgWyAiJHtub25hcmNoX2Jhc2VfbGliZGlyfSIgIT0gIiR7bm9uYXJjaF9saWJkaXJ9IiBdIDsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IKLSAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9pbnN0YWxsX2luaXRkCi0gICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9yZW1vdmVfaW5pdGQKLSAgICAgICBmaQotCi0gICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgotICAgICAgICAgICAgICAgaWYgWyAiJHtiYXNlX2xpYmRpcn0iICE9ICIke2Jhc2VfcHJlZml4fS9saWI2NCIgXTsgdGhlbgotICAgICAgICAgICAgICAgICAgIGxuciAke0R9JHtiYXNlX2xpYmRpcn0gJHtEfSR7YmFzZV9wcmVmaXh9L2xpYjY0Ci0gICAgICAgICAgICAgICBmaQotCSAgICAgICBjZCAke0R9JHtiYXNlX2xpYmRpcn0KLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjIKLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjMKLSAgICAgICBmaQotICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCi0JICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQotICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LnNvLjIgbGQtbHNiLnNvLjIKLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC5zby4yIGxkLWxzYi5zby4zCi0gICAgICAgZmkKLQotICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgICAgICAgIGlmIFsgIiR7YmFzZV9saWJkaXJ9IiAhPSAiJHtiYXNlX3ByZWZpeH0vbGliNjQiIF07IHRoZW4KLSAgICAgICAgICAgICAgICAgICBsbnIgJHtEfSR7YmFzZV9saWJkaXJ9ICR7RH0ke2Jhc2VfcHJlZml4fS9saWI2NAotICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQotICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMgotICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMwotICAgICAgIGZpCi0gICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLQkgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9Ci0gICAgICAgICAgICAgICBsbiAtc2YgbGQuc28uMSBsZC1sc2ItcHBjMzIuc28uMgotICAgICAgICAgICAgICAgbG4gLXNmIGxkLnNvLjEgbGQtbHNiLXBwYzMyLnNvLjMKLSAgICAgICBmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtAJyR7YmFzZV9wcmVmaXh9L2xpYjY0JyBpZiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKSA9PSAoJ3g4Nl82NCcgb3IgJ3Bvd2VycGM2NCcpIGFuZCAnJHtiYXNlX2xpYmRpcn0nICE9ICcke2Jhc2VfcHJlZml4fS9saWI2NCcgZWxzZSAnJ30gXAotICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9IFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9sc2IgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbHNiLyogXAotICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl81LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNDgxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNS4wLmJiCkBAIC0wLDAgKzEsMTM0IEBACitTVU1NQVJZID0gIkxTQiBzdXBwb3J0IGZvciBPcGVuRW1iZWRkZWQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwOi8vcHJkb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2xzYiIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitMU0JfQ09SRSA9ICJsc2ItY29yZS0ke1RBUkdFVF9BUkNIfSIKK0xTQl9DT1JFX3g4NiA9ICJsc2ItY29yZS1pYTMyIgorTFNCX0NPUkVfeDg2LTY0ID0gImxzYi1jb3JlLWFtZDY0IgorUlBST1ZJREVTXyR7UE59ICs9ICIke0xTQl9DT1JFfSIKKworIyBsc2JfcmVsZWFzZSBuZWVkcyBnZXRvcHQsIGxzYmluaXRzY3JpcHRzCitSREVQRU5EU18ke1BOfSArPSAiJHtWSVJUVUFMLVJVTlRJTUVfZ2V0b3B0fSBsc2Jpbml0c2NyaXB0cyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT0xMmRhNTQ0YjFhM2E1YTE3OTVhMjExNjBiNDk0NzFjZiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9sc2IvbHNiX3JlbGVhc2UvMS40L2xzYi1yZWxlYXNlLTEuNC50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbHNiX3JlbGVhc2UtdG8td29yay13aXRoLWJ1c3lib3gtaGVhZC1hbmQtZmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0LWZ1bmN0aW9ucyBcCisgICAgICAgICAgIGZpbGU6Ly9sc2Jfa2lsbHByb2MgXAorICAgICAgICAgICBmaWxlOi8vbHNiX2xvZ19tZXNzYWdlIFwKKyAgICAgICAgICAgZmlsZTovL2xzYl9waWRvZnByb2MgXAorICAgICAgICAgICBmaWxlOi8vbHNiX3N0YXJ0X2RhZW1vbiBcCisgICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzA1MzdlZjVhMDFlMGNhOTRiN2I4ZWI2YTM2YmIxZTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTkzMjEyODhmOGQ2MmU3YTFkNDg1YjdjNmJkY2NmMDY3NjZmYjhjYTYwM2M2MTk1ODA2ZTQ0NTdmZGYxNzE3MiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbHNiL2ZpbGVzL2xzYl9yZWxlYXNlLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9sc2JfcmVsZWFzZS8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitTID0gIiR7V09SS0RJUn0vbHNiLXJlbGVhc2UtMS40IgorCitDTEVBTkJST0tFTiA9ICIxIgorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbCBwcmVmaXg9JHtEfSR7YmFzZV9wcmVmaXh9IG1hbmRpcj0ke0R9JHtkYXRhZGlyfS9tYW4vIERFU1RESVI9JHtEfQorCisJIyB0aGVzZSB0d28gZGlycyBhcmUgbmVlZGVkIGJ5IHBhY2thZ2UgbHNiLWRpc3QtY2hlY2tlcgorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L29wdAorCW1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L29wdAorCisJbWtkaXIgLXAgJHtEfSR7YmFzZV9saWJkaXJ9CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZAorCXByaW50ZiAiTFNCX1ZFUlNJT049XCJjb3JlLTUuMC1ub2FyY2g6IiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTsgdGhlbgorCQlwcmludGYgImNvcmUtNS4wLWlhMzIiID4+ICAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCWVsc2UKKwkJcHJpbnRmICJjb3JlLTUuMC0ke1RBUkdFVF9BUkNIfSIgPj4gICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisJZmkKKwllY2hvICJcIiIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKwllY2hvICJESVNUUklCX0lEPSR7RElTVFJPfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKwllY2hvICJESVNUUklCX1JFTEVBU0U9JHtESVNUUk9fVkVSU0lPTn0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisJaWYgWyAtbiAiJHtESVNUUk9fQ09ERU5BTUV9IiBdOyB0aGVuCisJCWVjaG8gIkRJU1RSSUJfQ09ERU5BTUU9JHtESVNUUk9fQ09ERU5BTUV9IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCWZpCisJZWNobyAiRElTVFJJQl9ERVNDUklQVElPTj1cIiR7RElTVFJPX05BTUV9ICR7RElTVFJPX1ZFUlNJT059XCIiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTsgdGhlbgorCQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1ub2FyY2gKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1pYTMyCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1pYTMyCisJZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tYW1kNjQKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LWFtZDY0CisJZmkKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzMyCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGMzMgorCWVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzY0CisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGM2NAorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vY29yZS1sc2IKKyAgICAgICBmb3IgaSBpbiBsc2Jfa2lsbHByb2MgbHNiX2xvZ19tZXNzYWdlIGxzYl9waWRvZnByb2MgbHNiX3N0YXJ0X2RhZW1vbgorICAgICAgIGRvCisgICAgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyRpICR7RH0ke3N5c2NvbmZkaXJ9L2NvcmUtbHNiCisgICAgICAgZG9uZQorCisgICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKKyAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LWZ1bmN0aW9ucyAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKKworICAgICAgICMgY3JlYXRlIGxpbmtzIGZvciBMU0IgdGVzdAorICAgICAgIGlmIFsgLWUgJHtzYmluZGlyfS9jaGtjb25maWcgXTsgdGhlbgorICAgICAgICAgICAgICAgaWYgWyAiJHtub25hcmNoX2Jhc2VfbGliZGlyfSIgIT0gIiR7bm9uYXJjaF9saWJkaXJ9IiBdIDsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IKKyAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9pbnN0YWxsX2luaXRkCisgICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9yZW1vdmVfaW5pdGQKKyAgICAgICBmaQorCisgICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgorICAgICAgICAgICAgICAgaWYgWyAiJHtiYXNlX2xpYmRpcn0iICE9ICIke2Jhc2VfcHJlZml4fS9saWI2NCIgXTsgdGhlbgorICAgICAgICAgICAgICAgICAgIGxuciAke0R9JHtiYXNlX2xpYmRpcn0gJHtEfSR7YmFzZV9wcmVmaXh9L2xpYjY0CisgICAgICAgICAgICAgICBmaQorCSAgICAgICBjZCAke0R9JHtiYXNlX2xpYmRpcn0KKyAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjIKKyAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjMKKyAgICAgICBmaQorICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCisJICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQorICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LnNvLjIgbGQtbHNiLnNvLjIKKyAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC5zby4yIGxkLWxzYi5zby4zCisgICAgICAgZmkKKworICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KKyAgICAgICAgICAgICAgIGlmIFsgIiR7YmFzZV9saWJkaXJ9IiAhPSAiJHtiYXNlX3ByZWZpeH0vbGliNjQiIF07IHRoZW4KKyAgICAgICAgICAgICAgICAgICBsbnIgJHtEfSR7YmFzZV9saWJkaXJ9ICR7RH0ke2Jhc2VfcHJlZml4fS9saWI2NAorICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQorICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMgorICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMworICAgICAgIGZpCisgICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KKwkgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9CisgICAgICAgICAgICAgICBsbiAtc2YgbGQuc28uMSBsZC1sc2ItcHBjMzIuc28uMgorICAgICAgICAgICAgICAgbG4gLXNmIGxkLnNvLjEgbGQtbHNiLXBwYzMyLnNvLjMKKyAgICAgICBmaQorfQorCitGSUxFU18ke1BOfSArPSAiJHtAJyR7YmFzZV9wcmVmaXh9L2xpYjY0JyBpZiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKSA9PSAoJ3g4Nl82NCcgb3IgJ3Bvd2VycGM2NCcpIGFuZCAnJHtiYXNlX2xpYmRpcn0nICE9ICcke2Jhc2VfcHJlZml4fS9saWI2NCcgZWxzZSAnJ30gXAorICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9IFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9sc2IgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbHNiLyogXAorICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaAppbmRleCAxN2M5MDAyLi5jMDA3NjQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoCkBAIC03LDE4ICs3LDE1IEBACiAgcmMuZC9pbml0LmQvZnVuY3Rpb25zIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvcmMuZC9pbml0LmQvZnVuY3Rpb25zIGIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi1pbmRleCA2ODUwMDQ2Li4xMTIyM2Y3IDEwMDY0NAotLS0tIGEvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi0rKysgYi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLUBAIC01OTcsNiArNTk3LDYgQEAgaWYgWyAiJF91c2Vfc3lzdGVtY3RsIiA9ICIxIiBdOyB0aGVuCi0gCWZpCitJbmRleDogaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpbml0c2NyaXB0cy05LjcyLm9yaWcvcmMuZC9pbml0LmQvZnVuY3Rpb25zCisrKysgaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKK0BAIC02ODYsNiArNjg2LDYgQEAgaWYgWyAiJF91c2Vfc3lzdGVtY3RsIiA9ICIxIiBdOyB0aGVuCisgICAgIGZpCiAgZmkKICAKIC1zdHJzdHIgIiQoY2F0IC9wcm9jL2NtZGxpbmUpIiAicmMuZGVidWciICYmIHNldCAteAogK3N0cnN0ciAiJChjYXQgL3Byb2MvY21kbGluZSkiICJyYy5kZWJ1ZyIgJiYgc2V0IC14IHx8IHRydWUKICByZXR1cm4gMAotCi0tLSAKLTIuMS4wCi0KKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaAppbmRleCA5YzU4ZDkwLi5lOTEyZGFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvZnVuY3Rpb25zLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA1NzQ2OGM1ZjRlMzY0YmRhZDU1NjYwNGRjYTA5MDQ2ZTFhZmNhOTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlNDZiMDU2MjgyYzg0MjBmMDk2ZDVjMzRkNzhjMDBmODE2Nzg4Nzg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KIERhdGU6IE1vbiwgNSBKdW4gMjAxNyAxNjoyNjo0NyArMDkwMAotU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFNpZ25lZC1vZmYtYnk6IFhpYW9mZW5nIFlhbiA8eGlhb2ZlbmcueWFuQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CkBAIC0xMCwyMyArMTAsMjQgQEAKIAogU2lnbmVkLW9mZi1ieTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiAtLS0KLSBpbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyB8IDIgKy0KKyByYy5kL2luaXQuZC9mdW5jdGlvbnMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9pbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyBiL2luaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi1pbmRleCAwZjYyN2YxLi5hNmFhMDkyIDEwMDY0NAotLS0tIGEvaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLSsrKyBiL2luaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCitkaWZmIC0tZ2l0IGEvcmMuZC9pbml0LmQvZnVuY3Rpb25zIGIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCitpbmRleCAyZTNkYTk2NC4uMWEyMDRkZWMgMTAwNjQ0CistLS0gYS9yYy5kL2luaXQuZC9mdW5jdGlvbnMKKysrKyBiL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwogQEAgLTU5LDcgKzU5LDcgQEAgc3lzdGVtY3RsX3JlZGlyZWN0ICgpIHsKICBbIC16ICIke0NPTFVNTlM6LX0iIF0gJiYgQ09MVU1OUz04MAogIAogIGlmIFsgLXogIiR7Q09OU09MRVRZUEU6LX0iIF07IHRoZW4KLS0gICAgaWYgWyAtYyAiL2Rldi9zdGRlcnIiIC1hIC1yICIvZGV2L3N0ZGVyciIgXTsgdGhlbgotKyAgICBpZiBbIC1jICIvZGV2L3N0ZGVyciIgLWEgLXIgIi9kZXYvc3RkZXJyIiAtYSAtZSAvc2Jpbi9jb25zb2xldHlwZSBdOyB0aGVuCistICAgIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiBdICYmIFsgLXIgIi9kZXYvc3RkZXJyIiBdOyB0aGVuCisrICAgIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiBdICYmIFsgLXIgIi9kZXYvc3RkZXJyIiBdICYmIFsgLWUgL3NiaW4vY29uc29sZXR5cGUgXTsgdGhlbgogICAgICAgICAgQ09OU09MRVRZUEU9IiQoL3NiaW4vY29uc29sZXR5cGUgPCAvZGV2L3N0ZGVyciAyPi9kZXYvbnVsbCkiCiAgICAgIGVsc2UKICAgICAgICAgIENPTlNPTEVUWVBFPSJzZXJpYWwiCiAtLSAKLTEuOS4xCisyLjE1LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43Mi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNzRhNmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43Mi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzViBpbml0IHNjcmlwdHMgd2hpY2ggYXJlIG9ubHkgdXNlZCBpbiBhbiBMU0IgaW1hZ2UiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZGViaWFuLm9yZy9MU0JJbml0U2NyaXB0cyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1ERVBFTkRTID0gInBvcHQgZ2xpYi0yLjAiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiaW5pdGQtZnVuY3Rpb25zIgotUkRFUEVORFNfJHtQTn0gKz0gInV0aWwtbGludXgiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImluaXRzY3JpcHRzLWZ1bmN0aW9ucyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWJmNGU4YjQ5NzgwYWIxODdkNTFiZDI2YWFhMDIyYzYiCi0KLVM9IiR7V09SS0RJUn0vaW5pdHNjcmlwdHMtJHtQVn0iCi1TUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0ke1BWfS50YXIuZ3ovc2hhNTEyL2I2ZWQzOGY5NTc2ZTkyMjdjMmVjZjA0N2UyZDYwZTFlODcyZjQwZDUxZDEzODYxYjBjOTFkZGRiMjgyZjEwZjdlNmI3OTcwNmE0ZDE0MzVkN2E1N2ExNGEwYjczYTFiNzE1NDFjZmU0NGMwMGU4ZTAzZWY5NmIwOGRlMTllYzMyL2luaXRzY3JpcHRzLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9mdW5jdGlvbnMucGF0Y2g7c3RyaXBsZXZlbD0yIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBcCi0gICAgICAgICAgIiAKLQotU1JDX1VSSVttZDVzdW1dID0gImQ2Yzc5OGY0MGRjZWIxMTdlMTIxMjZkOTRjYjI1YTlhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3OTM2NzdiZGQxZjdlZTRjYjAwODc4Y2U0MzM0NjE5NjM3NGY4NDhhNGM4ZTQ1NTllMDg2MDQwZmM3NDg3ZGIiCi0KLSMgU2luY2Ugd2UgYXJlIG9ubHkgdGFraW5nIHRoZSBwYXRjaGVkIHZlcnNpb24gb2YgZnVuY3Rpb25zLCBubyBuZWVkIHRvCi0jIGNvbmZpZ3VyZSBvciBjb21waWxlIGFueXRoaW5nIHNvIGRvIG5vdCBleGVjdXRlIHRoZXNlCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIiAKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIiAKLQotZG9faW5zdGFsbCgpewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotCWluc3RhbGwgLW0gMDY0NCAke1N9L3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZnVuY3Rpb25zCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185Ljc5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43OS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmVkZWVkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43OS5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIlN5c1YgaW5pdCBzY3JpcHRzIHdoaWNoIGFyZSBvbmx5IHVzZWQgaW4gYW4gTFNCIGltYWdlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmRlYmlhbi5vcmcvTFNCSW5pdFNjcmlwdHMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorREVQRU5EUyA9ICJwb3B0IGdsaWItMi4wIgorCitSUFJPVklERVNfJHtQTn0gKz0gImluaXRkLWZ1bmN0aW9ucyIKK1JERVBFTkRTXyR7UE59ICs9ICJ1dGlsLWxpbnV4IgorUkNPTkZMSUNUU18ke1BOfSA9ICJpbml0c2NyaXB0cy1mdW5jdGlvbnMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViZjRlOGI0OTc4MGFiMTg3ZDUxYmQyNmFhYTAyMmM2IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZlZG9yYS1zeXN2L2luaXRzY3JpcHRzIFwKKyAgICAgICAgICAgZmlsZTovL2Z1bmN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2ggXAorICAgICAgICAgICIgCitTUkNSRVYgPSAiYTUxYzFiNGY3ZGNmNTViNTY4YjJlZTRjMmIxODA3ODg0OTk0MzQ2OSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIl4oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNmM3OThmNDBkY2ViMTE3ZTEyMTI2ZDk0Y2IyNWE5YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNzkzNjc3YmRkMWY3ZWU0Y2IwMDg3OGNlNDMzNDYxOTYzNzRmODQ4YTRjOGU0NTU5ZTA4NjA0MGZjNzQ4N2RiIgorCisjIFNpbmNlIHdlIGFyZSBvbmx5IHRha2luZyB0aGUgcGF0Y2hlZCB2ZXJzaW9uIG9mIGZ1bmN0aW9ucywgbm8gbmVlZCB0bworIyBjb25maWd1cmUgb3IgY29tcGlsZSBhbnl0aGluZyBzbyBkbyBub3QgZXhlY3V0ZSB0aGVzZQorZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIgCitkb19jb21waWxlW25vZXhlY10gPSAiMSIgCisKK2RvX2luc3RhbGwoKXsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9yYy5kL2luaXQuZC9mdW5jdGlvbnMgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Z1bmN0aW9ucworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9MU0JfVGVzdC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvTFNCX1Rlc3Quc2gKaW5kZXggMGViMjc5My4uMDczZTI0NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9MU0JfVGVzdC5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L0xTQl9UZXN0LnNoCkBAIC02MCw3ICs2MCw3IEBACiAKIFBBQ0tBR0VTX0RJUj0iL3Zhci9vcHQvbHNiL3Rlc3QvbWFuYWdlci9wYWNrYWdlcy9mdHAubGludXhmb3VuZGF0aW9uLm9yZy9wdWIvbHNiIgogCi1CQVNFX1BBQ0tBR0VTX0RJUj0iJHtQQUNLQUdFU19ESVJ9L2Jhc2UvJHtMU0JfUkVMRUFTRX0vYmluYXJ5IgorQkFTRV9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS9iYXNlL3JlbGVhc2VkLWFsbC9iaW5hcnkiCiBSVU5USU1FX0JBU0VfUEFDS0FHRVNfRElSPSIke1BBQ0tBR0VTX0RJUn0vdGVzdF9zdWl0ZXMvcmVsZWFzZWQtYWxsL2JpbmFyeS9ydW50aW1lIgogUlVOVElNRV9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS90ZXN0X3N1aXRlcy8ke0xTQl9SRUxFQVNFfS9iaW5hcnkvcnVudGltZSIKIEFQUF9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS9hcHAtYmF0dGVyeS8ke0xTQl9SRUxFQVNFfS8ke0xTQl9BUkNIfSIKQEAgLTk4LDcgKzk4LDcgQEAKIGZpCiAKICMgT2ZmaWNpYWwgZG93bmxvYWQgc2VydmVyIGxpc3QuIFlvdSBjYW4gcmVwbGFjZSB0aGVtIHdpdGggeW91ciBvd24gc2VydmVyLgotU0VSVkVSX0lQQUREUj0iMTQwLjIxMS4xNjkuMjMiCitTRVJWRVJfSVBBRERSPSIxNDAuMjExLjE2OS4yOCIKIFNFUlZFUl9OQU1FPSJmdHAubGludXhmb3VuZGF0aW9uLm9yZyIKIAogaWYgISBgZ3JlcCAtRiAtcSAiJHtTRVJWRVJfTkFNRX0iIC9ldGMvaG9zdHNgOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3BhY2thZ2VzX2xpc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3BhY2thZ2VzX2xpc3QKaW5kZXggOTU5ZjkzMS4uMWE2YzExNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9wYWNrYWdlc19saXN0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvcGFja2FnZXNfbGlzdApAQCAtMSw3ICsxLDcgQEAKIExTQl9SRUxFQVNFPSJyZWxlYXNlZC01LjAiCiBMU0JfQVJDSD0ibHNiYXJjaCIKIAotQkFTRV9QQUNLQUdFU19MSVNUPSJsc2Itc2V0dXAtNC4xLjAtMS5ub2FyY2gucnBtIgorQkFTRV9QQUNLQUdFU19MSVNUPSJsc2Itc2V0dXAtNS4wLjAtMi5ub2FyY2gucnBtIgogCiBSVU5USU1FX0JBU0VfUEFDS0FHRVNfTElTVD0ibHNiLWRpc3QtY2hlY2tlci01LjAuMC4xLTEudGFyZ2V0YXJjaC5ycG0gXAogCWxzYi10ZXQzLWxpdGUtMy43LTI3LmxzYjUudGFyZ2V0YXJjaC5ycG0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uCmluZGV4IDNhYmNjYTcuLjRkNDdlNDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3Qvc2Vzc2lvbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3Nlc3Npb24KQEAgLTIsNyArMiw3IEBACiBWRVJCT1NFX0xFVkVMOiAgIDEKIEFSQ0hJVEVDVFVSRTogICAgdGFyZ2V0YXJjaAogVVNFX0lOVEVSTkVUOiAgICAxCi1TVERfVkVSU0lPTjogICAgIExTQiA0LjEKK1NURF9WRVJTSU9OOiAgICAgTFNCIDUuMAogU1REX1BST0ZJTEU6ICAgICBubwogW2NtZGNoa10KIFJVTjogMQpAQCAtMTI2LDE1ICsxMjYsNiBAQAogQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvcHl0aG9uCiBBVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvcHl0aG9uL3Jlc3VsdHMKIAotW3F0NC1hem92XQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtxdDQtYXpvdnxsb2NhbHwqXQotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvcXQ0LWF6b3YKLUFVVE9SRVBMWV9YMTFfRk9OVF9QQVRIOiBbZGVmYXVsdF0KLUFVVE9SRVBMWV9SRVNVTFRTX0RJUjogL29wdC9sc2IvdGVzdC9xdDQtYXpvdi9yZXN1bHRzCi0KIFt4bWwyLWF6b3ZdCiBSVU46IDEKIFZFUlNJT046IGxvY2FsfCoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKaW5kZXggMzZmNTJmZC4uYTkwYzAyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKQEAgLTEwLDE0ICsxMCwxMyBAQAogCQkgICBmaWxlOi8vcGFja2FnZXNfbGlzdCBcCiAJCSAgIGZpbGU6Ly9zZXNzaW9uIFwKIAkJICAgIgotUkRFUEVORFNfJHtQTn0gPSAicnBtIgorUkRFUEVORFNfJHtQTn0gPSAibHNiIHJwbSIKIAogUyA9ICIke1dPUktESVJ9IgogCiBkb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke1N9L0xTQl9UZXN0LnNoICR7RH0ke2JpbmRpcn0KIAlpbnN0YWxsIC1kICAke0R9L29wdC9sc2ItdGVzdAorCWluc3RhbGwgLW0gMDc1NSAke1N9L0xTQl9UZXN0LnNoICR7RH0vb3B0L2xzYi10ZXN0L0xTQl9UZXN0LnNoCiAJaW5zdGFsbCAtbSAwNjQ0ICR7U30vcGFja2FnZXNfbGlzdCAke0R9L29wdC9sc2ItdGVzdC9wYWNrYWdlc19saXN0CiAJaW5zdGFsbCAtbSAwNjQ0ICR7U30vc2Vzc2lvbiAke0R9L29wdC9sc2ItdGVzdC9zZXNzaW9uCiAJaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk1ODYiIF0gfHwgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk2ODYiIF07dGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYWRkLV9HTlVfU09VUkNFLXRvLXBlY19saXN0ZW5lci5jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYWRkLV9HTlVfU09VUkNFLXRvLXBlY19saXN0ZW5lci5jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWM2NmY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWFkZC1fR05VX1NPVVJDRS10by1wZWNfbGlzdGVuZXIuYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gYWUxMDI0NWMxNWE2MTdiZDU3MzM3OTgxYmI0MmViMzY2MjlmOWI1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDggRmViIDIwMTcgMTU6NTM6MzEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8yNl0gYWRkIF9HTlVfU09VUkNFIHRvIHBlY19saXN0ZW5lci5jCi0KLUluIHByZXZpb3VzIHBhdGNoIDAwMDctcmVwbGFjZS1TSUdDTEQtd2l0aC1TSUdDSExELnBhdGNoIG1hZGUgYnkgS2hlbSBSYWoKLWNvbnRhaW5zIHR3byBhc3BlY3RzOgotCi0JMS4gcmVwbGFjZSBTSUdDTEQgd2l0aCBTSUdDSExECi0JMi4gYWRkIF9HTlVfU09VUkNFIHRvIHBlY19saXN0ZW5lci5jCi0KLVRoZSByZXBsYWNlIFNJR0NMRCB3aXRoIFNJR0NITEQgaGF2ZSBiZWVuIGludGVncmF0ZWQgdXBzdHJlYW0sIHNvIG1ha2UgYQotYW5vdGhlciBwYXRjaCB0byBhZGQgX0dOVV9TT1VSQ0UgdG8gcGVjX2xpc3RlbmVyLmMgY29tcGx5IHdpdGggS2hlbSBSYWoncwotcHJldmlvdXMgcGF0Y2guCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSUlIG9yaWdpbmFsIHBhdGNoOiAwMDAxLWFkZC1fR05VX1NPVVJDRS10by1wZWNfbGlzdGVuZXIuYy5wYXRjaAotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9jb25uZWN0b3JzL3BlYy9wZWNfbGlzdGVuZXIuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9jb25uZWN0b3JzL3BlYy9wZWNfbGlzdGVuZXIuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvY29ubmVjdG9ycy9wZWMvcGVjX2xpc3RlbmVyLmMKLWluZGV4IGQxMWU0ZGMuLmI4YjVlMGQgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL2Nvbm5lY3RvcnMvcGVjL3BlY19saXN0ZW5lci5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL2Nvbm5lY3RvcnMvcGVjL3BlY19saXN0ZW5lci5jCi1AQCAtMjAsNiArMjAsNyBAQAotIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAKLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWNvbmZpZ3VyZS1GaXgtZGVmYXVsdC12YWx1ZS1vZi13aXRob3V0LW51bWEtc3dpdGNoLWkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtRml4LWRlZmF1bHQtdmFsdWUtb2Ytd2l0aG91dC1udW1hLXN3aXRjaC1pLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNjI2ODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtRml4LWRlZmF1bHQtdmFsdWUtb2Ytd2l0aG91dC1udW1hLXN3aXRjaC1pLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNGFjZTY4YTZiYTUwMTkwN2EwNzQxZGJhNWY1ZjE1NWUwNmE3NGMzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgorRGF0ZTogV2VkLCA3IEZlYiAyMDE4IDExOjA5OjQ5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogRml4IGRlZmF1bHQgdmFsdWUgb2YgLS13aXRob3V0LW51bWEgc3dpdGNoIGluIGhlbHAKKworVGhlIGRlZmF1bHQgdmFsdWUgaXMgbm8uCisKK0ZpeGVzOiAzOWE4NWExZjEgKCJjb25maWd1cmU6IGFkZCBrbm9iIHRvIGNvbnRyb2wgbnVtYSBzdXBwb3J0IikKKworU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+CitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGIzOWEzMWQuLmQ2NmVhMDAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTg2LDcgKzg2LDcgQEAgZmkKKyAjIE51bWEKKyBBQ19BUkdfV0lUSChbbnVtYV0sCisgICBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LW51bWFdLAorLSAgICBbd2l0aG91dCBudW1hIHN1cHBvcnQgKGRlZmF1bHQ9eWVzKV0pLAorKyAgICBbd2l0aG91dCBudW1hIHN1cHBvcnQgKGRlZmF1bHQ9bm8pXSksCisgICBbd2l0aF9udW1hPW5vXSwKKyAgIFt3aXRoX251bWE9eWVzXQorICkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY29uZmlndXJlLWFkZC1rbm9iLXRvLWNvbnRyb2wtbnVtYS1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY29uZmlndXJlLWFkZC1rbm9iLXRvLWNvbnRyb2wtbnVtYS1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYWEyODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtYWRkLWtub2ItdG8tY29udHJvbC1udW1hLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSAzOWE4NWExZjFlNjYyNGY1NTQyMTViYTRiNjg0M2QzNjg5YTg0MTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kZXJzIFJveGVsbCA8YW5kZXJzLnJveGVsbEBsaW5hcm8ub3JnPgorRGF0ZTogTW9uLCA1IEZlYiAyMDE4IDExOjU2OjA0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogYWRkIGtub2IgdG8gY29udHJvbCBudW1hIHN1cHBvcnQKKworQWxsb3cgdG8gZGlzYWJsZSBudW1hIGZyb20gdGhlIHRvcCBsZXZlbC4KKworQmFzZWQgb24gcGF0Y2g6CitodHRwOi8vY2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL2NvbW1pdC9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwP2lkPTRjNzg3MzU1MmUxM2RmZGJhOTZhZmNhNzU2MmMzOThkMjk2NmNhNzEKKworUmVwb3J0ZWQtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFuZGVycyBSb3hlbGwgPGFuZGVycy5yb3hlbGxAbGluYXJvLm9yZz4KK1NpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgorVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAorLS0tCisgY29uZmlndXJlLmFjIHwgMTAgKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDVjOGQ0ZWEuLmIzOWEzMWQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTgzLDYgKzgzLDE0IEBAIGVsc2UKKyAgICAgQUNfU1VCU1QoW1dJVEhfRVhQRUNUXSxbIm5vIl0pCisgZmkKKyAKKysjIE51bWEKKytBQ19BUkdfV0lUSChbbnVtYV0sCisrICBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LW51bWFdLAorKyAgICBbd2l0aG91dCBudW1hIHN1cHBvcnQgKGRlZmF1bHQ9eWVzKV0pLAorKyAgW3dpdGhfbnVtYT1ub10sCisrICBbd2l0aF9udW1hPXllc10KKyspCisrCisgIyBQZXJsCisgQUNfQVJHX1dJVEgoW3BlcmxdLAorICAgW0FDX0hFTFBfU1RSSU5HKFstLXdpdGgtcGVybF0sCitAQCAtMTU3LDcgKzE2NSw5IEBAIExUUF9DSEVDS19TRUxJTlVYCisgTFRQX0NIRUNLX1NJR05BTAorIExUUF9DSEVDS19TWVNDQUxMX0VWRU5URkQKKyBMVFBfQ0hFQ0tfU1lTQ0FMTF9NT0RJRllfTERUCisraWYgdGVzdCAieCR3aXRoX251bWEiID0geHllczsgdGhlbgorIExUUF9DSEVDS19TWVNDQUxMX05VTUEKKytmaQorIExUUF9DSEVDS19TWVNDQUxMX1FVT1RBQ1RMCisgTFRQX0NIRUNLX1NZU0NBTExfU0lHTkFMRkQKKyBMVFBfQ0hFQ0tfU1lTQ0FMTF9VTlNIQVJFCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODY1MDIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDg2N2FkNWQ1ZDY0YjliMjdlZTMyMTQ4MDI3NTMyZGIwYTAwZjY0MzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiUm95LkxpIiA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgNyBKYW4gMjAxNiAxNzozMzoyNiArMDAwMAotU3ViamVjdDogW1BBVENIIDAyLzMyXSBBZGQga25vYiB0byBjb250cm9sIHdoZXRoZXIgbnVtYSBzdXBwb3J0IHNob3VsZCBiZQotIGNoZWNrZWQKLQotb3RoZXJ3aXNlIHVuZGV0ZXJtaW5pc3RpYyBkZXBlbmRlbmN5IHdpbGwgYmUgZ2VuZXJhdGVkCi1kdXJpbmcgYnVpbGQgZGVwZW5kaW5nIHVwb25nIG51bWEgYmVpbmcgc3RhZ2VkIG9yIG5vdAotCi1TaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBtNC9sdHAtbnVtYS5tNCB8IDEwICsrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tNC9sdHAtbnVtYS5tNCBiL200L2x0cC1udW1hLm00Ci1pbmRleCA2MGFlMDdiLi5lZDcwNzhkIDEwMDY0NAotLS0tIGEvbTQvbHRwLW51bWEubTQKLSsrKyBiL200L2x0cC1udW1hLm00Ci1AQCAtMjQsNyArMjQsMTMgQEAgZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBkbmwKLSBBQ19ERUZVTihbTFRQX0NIRUNLX1NZU0NBTExfTlVNQV0sCi0gW2RubAotLUFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L21lbXBvbGljeS5oIG51bWEuaCBudW1haWYuaF0sWwotK0FDX01TR19DSEVDS0lORyhbZm9yIG51bWFdKQotK0FDX0FSR19XSVRIKAotKwlbbnVtYV0sCi0rCUFDX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtbnVtYV0sCi0rCVt3aXRob3V0IG51bWEgc3VwcG9ydF0pLAotKwlbXSwKLSsJW0FDX0NIRUNLX0hFQURFUlMoW2xpbnV4L21lbXBvbGljeS5oIG51bWEuaCBudW1haWYuaF0sWwotIAlMVFBfU1lTQ0FMTF9OVU1BX0hFQURFUlM9eWVzCi0gCUFDX0NIRUNLX0xJQihudW1hLG51bWFfYWxsb2Nfb25ub2RlLFtoYXZlX251bWFfYWxsb2Nfb25ub2RlPSJ5ZXMiXSkKLSAJaWYgIHRlc3QgIngkaGF2ZV9udW1hX2FsbG9jX29ubm9kZSIgPSAieHllcyI7IHRoZW4KLUBAIC00OCwzICs1NCw1IEBAIGlmIHRlc3QgIngkaGF2ZV9tcG9sX2NvbnN0YW50cyIgPSAieHllcyI7IHRoZW4KLSAJQUNfREVGSU5FKEhBVkVfTVBPTF9DT05TVEFOVFMsMSxbZGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYWxsIGNvbnN0YW50cyByZXF1aXJlZCB0byB1c2UgbWJpbmQgdGVzdHNdKQotIGZpCi0gKV0pCi0rQUNfTVNHX1JFU1VMVChbJHdpdGhfbnVtYV0pCi0rXSkKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2gKaW5kZXggY2Y3NDQ2My4uODRhYjM3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0yMiwxMCArMjIsMTAgQEAKICB0ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlIHwgNSArKysrKwogIDggZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDI5N2Y4ZTcuLjkwNmIyODAgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKK0luZGV4OiBnaXQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9NYWtlZmlsZQorKysrIGdpdC9NYWtlZmlsZQogQEAgLTQ5LDYgKzQ5LDExIEBAIFNLSVBfSURDSEVDSwkJPz0gMAogIFVDTElOVVgJCQk/PSAwCiAgZXhwb3J0IFVDTElOVVgKQEAgLTM4LDExICszOCwxMSBAQAogICMgQ0xFQU5fVEFSR0VUUzoJVGFyZ2V0cyB3aGljaCBleGlzdCBzb2xlbHkgaW4gY2xlYW4uCiAgIyBDT01NT05fVEFSR0VUUzoJVGFyZ2V0cyB3aGljaCBleGlzdCBpbiBhbGwsIGNsZWFuLCBhbmQgaW5zdGFsbC4KICAjIElOU1RBTExfVEFSR0VUUzoJVGFyZ2V0cyB3aGljaCBleGlzdCBpbiBjbGVhbiBhbmQgaW5zdGFsbCAoY29udGFpbnMKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlIGIvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQotaW5kZXggNTBhMTJmYS4uNGYxOTg3ZiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLUBAIC00NywxMyArNDcsMTYgQEAgU1VCRElSUwkJCSs9IGNvbm5lY3RvcnMgXAorSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCitAQCAtNDgsMTMgKzQ4LDE2IEBAIFNVQkRJUlMJCQkrPSBjb25uZWN0b3JzIFwKICAJCQkgICBsb2dnaW5nIFwKICAJCQkgICBtZW0gXAogIAkJCSAgIG51bWEgXApAQCAtNjAsMTAgKzYwLDEwIEBACiAgaWZlcSAoJChXSVRIX1BPV0VSX01BTkFHRU1FTlRfVEVTVFNVSVRFKSx5ZXMpCiAgU1VCRElSUwkJCSs9IHBvd2VyX21hbmFnZW1lbnQKICBlbmRpZgotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCi1pbmRleCA2MjQ1ZWQwLi5hYTRlYjdmIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQorSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCiBAQCAtMjMsNSArMjMsNyBAQAogIHRvcF9zcmNkaXIJCT89IC4uLy4uLy4uCiAgCkBAIC03MywxMSArNzMsMTEgQEAKICsJRklMVEVSX09VVF9ESVJTICs9IHByb2Nlc3Nfc3RyZXNzCiArZW5kaWYKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX3RydW5rX3RhcmdldC5tawotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1pbmRleCA4YWNiMzk1Li5iNzQ5MTI2IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotQEAgLTI4LDUgKzI4LDEwIEBAIGlmZXEgKCQoVUNMSU5VWCksMSkKK0luZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQorQEAgLTI4LDYgKzI4LDExIEBAIGlmZXEgKCQoVUNMSU5VWCksMSkKICBGSUxURVJfT1VUX0RJUlMJKz0gY2FwZ2V0IGNhcHNldCBjaG1vZCBjaG93biBjbG9uZSBmb3JrIGdldGNvbnRleHQgbGxzZWVrIFwKICAJCSAgIG1pbmNvcmUgbXByb3RlY3QgbmZ0dyBwcm9maWwgcmVtYXBfZmlsZV9wYWdlcyBzYnJrCiAgZW5kaWYKQEAgLTg3LDEyICs4NywxMyBAQAogKwkJICAgdXN0YXQKICtlbmRpZgogIAotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfdHJ1bmtfdGFyZ2V0Lm1rCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi1pbmRleCA4YmM3OGMyLi5jMzZjZjUwIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKLUBAIC0yNiw0ICsyNiw4IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUubWsKKyBpZmVxICgkKFVDTElCQyksMSkKKyBGSUxURVJfT1VUX0RJUlMJKz0gcHJvZmlsCitJbmRleDogZ2l0L3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKK0BAIC0yNiw0ICsyNiw4IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUKICAKICBMRExJQlMJCQkrPSAkKEFDTF9MSUJTKQogIApAQCAtMTAxLDEwICsxMDIsMTAgQEAKICtlbmRpZgogKwogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfbGVhZl90YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKLWluZGV4IDMxNjA4MTMuLjliZGY1ZDAgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZQorSW5kZXg6IGdpdC90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCiBAQCAtMjMsNCArMjMsOSBAQAogIHRvcF9zcmNkaXIJCT89IC4uLy4uLy4uLy4uCiAgCkBAIC0xMTUsMTEgKzExNiwxMSBAQAogK2VuZGlmCiArCiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY190cnVua190YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1pbmRleCA3YTdhNTdhLi41ODA4ODY2IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1AQCAtMjcsNSArMjcsOSBAQCBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCitJbmRleDogZ2l0L3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKK0BAIC0yNyw1ICsyNyw5IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUKICBpbmNsdWRlICQoYWJzX3NyY2RpcikvLi4vLi4vY29uZmlnLm1rCiAgCiAgTUFLRV9UQVJHRVRTCQk6PSB0ZXN0cGktMCB0ZXN0cGktMSB0ZXN0cGktMiB0ZXN0cGktNCB0ZXN0cGktNSB0ZXN0cGktNiB0ZXN0cGktNyBzYnJrX211dGV4CkBAIC0xMjksMTAgKzEzMCwxMCBAQAogKwogIAogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfbGVhZl90YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlIGIvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQotaW5kZXggNWVkYzNiNC4uYWE1OTg3YSAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKK0luZGV4OiBnaXQvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQogQEAgLTI0LDQgKzI0LDkgQEAgdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KICAKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCkBAIC0xNDMsNiArMTQ0LDMgQEAKICtlbmRpZgogKwogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfbGVhZl90YXJnZXQubWsKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWY2YmE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDExLVJlbmFtZS1zaWdzZXQtdmFyaWFibGUtdG8tc2lnc2V0MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi1Gcm9tIGRjMTkwNWI2ZDk3MmY5MTc2YjQwZGEyNzBjODNkOGZiNGQxNzUxYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCA4IEZlYiAyMDE3IDE2OjEyOjM0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBSZW5hbWUgc2lnc2V0IHZhcmlhYmxlIHRvIHNpZ3NldDEKLQotc2lnc2V0IEFQSSBmcm9tIHNpZ25hbC5oIGlzIHNoYWRvd2VkIGJ5IHRoaXMgbmFtZSBjb25mbGljdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNC5jICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNi5jICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3Byb2NtYXNrL3NpZ3Byb2NtYXNrMDEuYyB8IDEwICsrKysrLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vc2htdC9zaG10MDQuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA0LmMKLWluZGV4IGIyNjgyZGEuLjNmMzVmYWQgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNC5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNC5jCi1AQCAtNTYsNyArNTYsNyBAQCBpbnQgVFNUX1RPVEFMID0gMjsJCS8qIFRvdGFsIG51bWJlciBvZiB0ZXN0IGNhc2VzLiAqLwotIC8qKioqKioqKioqKioqKi8KLSAKLSBrZXlfdCBrZXk7Ci0tc2lnc2V0X3Qgc2V0OwotK3NpZ3NldF90IHNldDE7Ci0gCi0gI2RlZmluZSAgU0laRSAgMTYqMTAyNAotIAotQEAgLTcxLDkgKzcxLDkgQEAgaW50IG1haW4odm9pZCkKLSAKLSAJa2V5ID0gKGtleV90KSBnZXRwaWQoKTsKLSAKLS0Jc2lnZW1wdHlzZXQoJnNldCk7Ci0tCXNpZ2FkZHNldCgmc2V0LCBTSUdVU1IxKTsKLS0Jc2lncHJvY21hc2soU0lHX0JMT0NLLCAmc2V0LCBOVUxMKTsKLSsJc2lnZW1wdHlzZXQoJnNldDEpOwotKwlzaWdhZGRzZXQoJnNldDEsIFNJR1VTUjEpOwotKwlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzZXQxLCBOVUxMKTsKLSAKLSAJcGlkID0gZm9yaygpOwotIAlzd2l0Y2ggKHBpZCkgewotQEAgLTE0OCw3ICsxNDgsNyBAQCBpbnQgY2hpbGQodm9pZCkKLSAJY2hhciAqY3A7Ci0gCWludCBzaWc7Ci0gCi0tCXNpZ3dhaXQoJnNldCwgJnNpZyk7Ci0rCXNpZ3dhaXQoJnNldDEsICZzaWcpOwotIAljaGxkX3BpZCA9IGdldHBpZCgpOwotIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotIAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA2LmMgYi90ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNi5jCi1pbmRleCBkZDY5ZGU3Li41NmZiMWRhIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vc2htdC9zaG10MDYuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9tZW0vc2htdC9zaG10MDYuYwotQEAgLTU3LDcgKzU3LDcgQEAgaW50IFRTVF9UT1RBTCA9IDI7CQkvKiBUb3RhbCBudW1iZXIgb2YgdGVzdCBjYXNlcy4gKi8KLSAvKioqKioqKioqKioqKiovCi0gCi0ga2V5X3Qga2V5OwotLXNpZ3NldF90IHNldDsKLStzaWdzZXRfdCBzZXQxOwotIAotIGludCBjaGlsZCgpOwotIHN0YXRpYyBpbnQgcm1fc2htKGludCk7Ci1AQCAtNzAsOSArNzAsOSBAQCBpbnQgbWFpbih2b2lkKQotIAotIAlrZXkgPSAoa2V5X3QpIGdldHBpZCgpOwotIAotLQlzaWdlbXB0eXNldCgmc2V0KTsKLS0Jc2lnYWRkc2V0KCZzZXQsIFNJR1VTUjEpOwotLQlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzZXQsIE5VTEwpOwotKwlzaWdlbXB0eXNldCgmc2V0MSk7Ci0rCXNpZ2FkZHNldCgmc2V0MSwgU0lHVVNSMSk7Ci0rCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNldDEsIE5VTEwpOwotIAotIAlwaWQgPSBmb3JrKCk7Ci0gCXN3aXRjaCAocGlkKSB7Ci1AQCAtMTQ3LDcgKzE0Nyw3IEBAIGludCBjaGlsZCh2b2lkKQotIAljaGFyICpjcDsKLSAJaW50IHNpZzsKLSAKLS0Jc2lnd2FpdCgmc2V0LCAmc2lnKTsKLSsJc2lnd2FpdCgmc2V0MSwgJnNpZyk7Ci0gCWNobGRfcGlkID0gZ2V0cGlkKCk7Ci0gCi0gCWlmICgoc2htaWQgPSBzaG1nZXQoa2V5LCBTSVpFLCAwKSkgPCAwKSB7Ci1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWdwcm9jbWFzay9zaWdwcm9jbWFzazAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3Byb2NtYXNrL3NpZ3Byb2NtYXNrMDEuYwotaW5kZXggMjMyZDI1YS4uMDZkOTAyZiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lncHJvY21hc2svc2lncHJvY21hc2swMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3Byb2NtYXNrL3NpZ3Byb2NtYXNrMDEuYwotQEAgLTkxLDcgKzkxLDcgQEAgaW50IFRTVF9UT1RBTCA9IDE7Ci0gaW50IHNpZ19jYXRjaCA9IDA7CQkvKiB2YXJpYWJsZSB0byBibG9ja2VkL3VuYmxvY2tlZCBzaWduYWxzICovCi0gCi0gc3RydWN0IHNpZ2FjdGlvbiBzYV9uZXc7CS8qIHN0cnVjdCB0byBob2xkIHNpZ25hbCBpbmZvICovCi0tc2lnc2V0X3Qgc2V0OwkJLyogc2lnbmFsIHNldCB0byBob2xkIHNpZ25hbCBsaXN0cyAqLwotK3NpZ3NldF90IHNldDE7CQkvKiBzaWduYWwgc2V0IHRvIGhvbGQgc2lnbmFsIGxpc3RzICovCi0gc2lnc2V0X3Qgc2lnc2V0MjsKLSAKLSBpbnQgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKLUBAIC0xMTIsNyArMTEyLDcgQEAgaW50IG1haW4oaW50IGFjLCBjaGFyICoqYXYpCi0gCQkgKiBzbyB0aGF0LCBzaWduYWwgd2lsbCBub3QgYmUgZGVsaXZlcmVkIHRvCi0gCQkgKiB0aGUgdGVzdCBwcm9jZXNzLgotIAkJICovCi0tCQlURVNUKHNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNldCwgMCkpOwotKwkJVEVTVChzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzZXQxLCAwKSk7Ci0gCi0gCQkvKiBHZXQgdGhlIHByb2Nlc3MgaWQgb2YgdGVzdCBwcm9jZXNzICovCi0gCQlteV9waWQgPSBnZXRwaWQoKTsKLUBAIC0xNjUsNyArMTY1LDcgQEAgaW50IG1haW4oaW50IGFjLCBjaGFyICoqYXYpCi0gCQkJCSAqLwotIAkJCQllcnJubyA9IDA7Ci0gCQkJCWlmIChzaWdwcm9jbWFzayhTSUdfVU5CTE9DSywKLS0JCQkJCQkmc2V0LCAwKSA9PSAtMSkgewotKwkJCQkJCSZzZXQxLCAwKSA9PSAtMSkgewotIAkJCQkJdHN0X2Jya20oVEZBSUwsIGNsZWFudXAsCi0gCQkJCQkJICJzaWdwcm9jbWFzaygpIGZhaWxlZCAiCi0gCQkJCQkJICJ0byB1bmJsb2NrIHNpZ25hbCwgIgotQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIHNldHVwKHZvaWQpCi0gCSAqIEluaXRpYWxpc2UgdGhlIHNpZ25hbCBzZXRzIHdpdGggdGhlIGxpc3QgdGhhdAotIAkgKiBleGNsdWRlcy9pbmNsdWRlcyAgYWxsIHN5c3RlbS1kZWZpbmVkIHNpZ25hbHMuCi0gCSAqLwotLQlpZiAoc2lnZW1wdHlzZXQoJnNldCkgPT0gLTEpIHsKLSsJaWYgKHNpZ2VtcHR5c2V0KCZzZXQxKSA9PSAtMSkgewotIAkJdHN0X2Jya20oVEZBSUwsIGNsZWFudXAsCi0gCQkJICJzaWdlbXB0eXNldCgpIGZhaWxlZCwgZXJybm89JWQgOiAlcyIsCi0gCQkJIGVycm5vLCBzdHJlcnJvcihlcnJubykpOwotQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIHNldHVwKHZvaWQpCi0gCSAqIEFkZCBzcGVjaWZpZWQgc2lnbmFsIChTSUdJTlQpIHRvIHRoZSBzaWduYWwgc2V0Ci0gCSAqIHdoaWNoIGV4Y2x1ZGVzIHN5c3RlbS1kZWZpbmVkIHNpZ25hbHMuCi0gCSAqLwotLQlpZiAoc2lnYWRkc2V0KCZzZXQsIFNJR0lOVCkgPT0gLTEpIHsKLSsJaWYgKHNpZ2FkZHNldCgmc2V0MSwgU0lHSU5UKSA9PSAtMSkgewotIAkJdHN0X2Jya20oVEZBSUwsIGNsZWFudXAsCi0gCQkJICJzaWdhZGRzZXQoKSBmYWlsZWQsIGVycm5vPSVkIDogJXMiLAotIAkJCSBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoCmluZGV4IDNlNzljOWYuLjQ2Mjk3NmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2gKQEAgLTE4LDEwICsxOCwxMCBAQAogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMgfCAyICsrCiAgMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCi1pbmRleCBkNjNkMWU0Li4yNGNhMTc0IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYworSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYworKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCiBAQCAtNzYsMTAgKzc2LDEyIEBACiAgICovCiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtMzUsMTEgKzM1LDExIEBACiArI3VuZGVmIF9HTlVfU09VUkNFCiAgCiAgI2luY2x1ZGUgInRlc3QuaCIKLSAKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYwotaW5kZXggNWE1MWI5YS4uYTUzMGE2YiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKKyAjaW5jbHVkZSAic2FmZV9tYWNyb3MuaCIKK0luZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKKysrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYwogQEAgLTc1LDkgKzc1LDExIEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtNTIsMTAgKzUyLDEwIEBACiAgCiAgI2luY2x1ZGUgInRlc3QuaCIKICAKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYwotaW5kZXggMTJlMzgyOS4uOWIzOWY4YiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKK0luZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKKysrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYwogQEAgLTc2LDkgKzc2LDExIEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtNjgsNiArNjgsMyBAQAogIAogICNpbmNsdWRlICJ0ZXN0LmgiCiAgCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZjYmE2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNS1tY19nZXRob3N0LWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDlkMTRlZGZjMTJlZWZhYzkwMGRkNTQ3MjlhODhiM2NjZjkxYzFjNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCA4IEphbiAyMDE2IDA3OjE4OjE1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvMzJdIG1jX2dldGhvc3Q6IGluY2x1ZGUgc3lzL3R5cGVzLmgKLQotRml4IGJ1aWxkIG9uIG11c2wKLWVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAndV9jaGFyJwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHRlc3RjYXNlcy9uZXR3b3JrL211bHRpY2FzdC9tY19nZXRob3N0L21jX2dldGhvc3QuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jIGIvdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jCi1pbmRleCA1YjlhNzkwLi5jNzk5ZTJhIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMKLUBAIC02LDYgKzYsNyBAQAotIAotICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSAjaW5jbHVkZSA8YXJwYS9uYW1lc2VyLmg+Ci0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNy1zeXNjb25mMDEtVXNlLV9TQ18yX0NfVkVSU0lPTi1jb25kaXRpb25hbGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGY2ZjI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDE0NzEwMTIxNjRiYThmMjYwNDZkNGIxY2U1NTMxYTBkOTI4MDVlZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCA4IEZlYiAyMDE3IDE2OjIxOjE2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggNC81XSBzeXNjb25mMDE6IFVzZSBfU0NfMl9DX1ZFUlNJT04gY29uZGl0aW9uYWxseQotCi1fU0NfMl9DX1ZFUlNJT04gaXMgbm90IGF2YWlsYWJsZSBvbiBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc3lzY29uZi9zeXNjb25mMDEuYyB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3N5c2NvbmYvc3lzY29uZjAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3N5c2NvbmYvc3lzY29uZjAxLmMKLWluZGV4IDU4M2RlZWYuLmRlOTM2OTUgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3N5c2NvbmYvc3lzY29uZjAxLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc3lzY29uZi9zeXNjb25mMDEuYwotQEAgLTEwMyw3ICsxMDMsOSBAQCBpbnQgbWFpbih2b2lkKQotIAl0ZXN0X3N5c2NvbmYoX1NDXzJfQ19CSU5EKTsKLSAJdGVzdF9zeXNjb25mKF9TQ18yX0NfREVWKTsKLSAjaWZkZWYgX1NDXzJfQ19WRVJTSU9OCi0rI2lmZGVmIF9fR0xJQkNfXwotIAl0ZXN0X3N5c2NvbmYoX1NDXzJfQ19WRVJTSU9OKTsKLSsjZW5kaWYKLSAjZWxzZQotIAl0c3RfcmVzbShUQ09ORiwgIl9TQ18yX0NfVkVSU0lPTiBub3QgZGVmaW5lZCIpOwotICNlbmRpZgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzAtbGliLVVzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS1pbi1wbGFjZS1vZi1QVEhSRUFEXy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZhNmQwNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSAwMGJhN2NkZDA2MDhiMTUwNzAyNzQyOGY5Zjg3YjFjYjk3NDczNzJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgOSBGZWIgMjAxNyAxNTo1NDo1MyArMDgwMAotU3ViamVjdDogW1BBVENIXSBsaWI6IFVzZSBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRSBpbiBwbGFjZSBvZgotIFBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSX05QIGZvciBub24tZ2xpYmMKLQotZS5nLiBtdXNsIGRvZXMgbm90IGltcGxlbWVudCB0aGUgX05QIG11dGV4IHR5cGVzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYi90c3RfcmVzLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWIvdHN0X3Jlcy5jIGIvbGliL3RzdF9yZXMuYwotaW5kZXggNjFkYWFlYi4uNDM1MjI0ZiAxMDA2NDQKLS0tLSBhL2xpYi90c3RfcmVzLmMKLSsrKyBiL2xpYi90c3RfcmVzLmMKLUBAIC03OSw3ICs3OSwxMSBAQCBpbnQgVEVTVF9FUlJOTzsKLSAJYXNzZXJ0KHN0cmxlbihidWYpID4gMCk7CQlcCi0gfSB3aGlsZSAoMCkKLSAKLSsjaWZkZWYgX19HTElCQ19fCi0gc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCB0bXV0ZXggPSBQVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFUl9OUDsKLSsjZWxzZQotK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgdG11dGV4ID0geyAgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUgfTsKLSsjZW5kaWYKLSAKLSBzdGF0aWMgdm9pZCBjaGVja19lbnYodm9pZCk7Ci0gc3RhdGljIHZvaWQgdHN0X2NvbmRlbnNlKGludCB0bnVtLCBpbnQgdHR5cGUsIGNvbnN0IGNoYXIgKnRtZXNnKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzMtc2htYXQxLUNvdmVyLUdOVS1zcGVjaWZpYy1jb2RlLXVuZGVyLV9fVVNFX0dOVS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDMzLXNobWF0MS1Db3Zlci1HTlUtc3BlY2lmaWMtY29kZS11bmRlci1fX1VTRV9HTlUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2OGUxY2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzMtc2htYXQxLUNvdmVyLUdOVS1zcGVjaWZpYy1jb2RlLXVuZGVyLV9fVVNFX0dOVS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gNWUzZGVhNjY5ZTViMGI3NjlmMzIyZDU0YTNiYjlmMzIwYjUzMjdkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIyIE1hciAyMDE2IDE1OjQ3OjE0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvMjZdIHNobWF0MTogQ292ZXIgR05VIHNwZWNpZmljIGNvZGUgdW5kZXIgX19VU0VfR05VCi0KLW9uIHg4Niwgd2UgdXNlIHVjX21jb250ZXh0IGVsZW1lbnQgZnJvbSBzaWdjb250ZXh0Ci13aGljaCBpcyBtYXJrZWQgZ251LXNwZWNpZmljIGluIGdsaWJjLCB0aGlzIHBhdGNoCi1hZGRzIHRoaXMgY29uZGl0aW9uIGFyb3VuZCB0aGUgY29kZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHRlc3RjYXNlcy9rZXJuZWwvbWVtL210ZXN0MDYvc2htYXQxLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vbXRlc3QwNi9zaG1hdDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL210ZXN0MDYvc2htYXQxLmMKLWluZGV4IDBkNmQ3YTQuLmJlZTY5ZjYgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL21lbS9tdGVzdDA2L3NobWF0MS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL21lbS9tdGVzdDA2L3NobWF0MS5jCi1AQCAtMTExLDcgKzExMSw3IEBAIGludCBkb25lX3NobWF0ID0gMDsJCS8qIGRpc2FsbG93IHJlYWQgYW5kIHdyaXRlcyBiZWZvcmUgc2htYXQgICAgICAqLwotIHN0YXRpYyB2b2lkIHNpZ19oYW5kbGVyKGludCBzaWduYWwsCS8qIHNpZ25hbCBudW1iZXIsIHNldCB0byBoYW5kbGUgU0lHQUxSTSAgICAgICAqLwotIAkJCWludCBjb2RlLCBzdHJ1Y3QgdWNvbnRleHQgKnV0KQotIHsJCQkJLyogY29udGFpbnMgcG9pbnRlciB0byBzaWdjb250ZXh0IHN0cnVjdHVyZSAgICovCi0tI2lmZGVmIF9faTM4Nl9fCi0rI2lmIGRlZmluZWQoX19pMzg2X18pICYmIGRlZmluZWQoX19VU0VfR05VKQotIAl1bnNpZ25lZCBsb25nIGV4Y2VwdDsJLyogZXhjZXB0aW9uIHR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gCWludCByZXQgPSAwOwkJLyogZXhpdCBjb2RlIGZyb20gc2lnbmFsIGhhbmRsZXIuICAgICAgICAgICAgICovCi0gCXN0cnVjdCBzaWdjb250ZXh0ICpzY3AgPQkvKiBwb2ludGVyIHRvIHNpZ2NvbnRleHQgc3RydWN0dXJlICAgICAgICAgICAgKi8KLUBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIHZvaWQgc2lnX2hhbmRsZXIoaW50IHNpZ25hbCwJLyogc2lnbmFsIG51bWJlciwgc2V0IHRvIGhhbmRsZSBTSUdBTFJNCi0gCQlmcHJpbnRmKHN0ZG91dCwgIlRlc3QgZW5kZWQsIHN1Y2Nlc3NcbiIpOwotIAkJZXhpdCgwKTsKLSAJfQotLSNpZmRlZiBfX2kzODZfXwotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSAmJiBkZWZpbmVkKF9fVVNFX0dOVSkKLSAJZWxzZSB7Ci0gCQlleGNlcHQgPSBzY3AtPnRyYXBubzsKLSAJCWZwcmludGYoc3RkZXJyLCAic2lnbmFsIGNhdWdodCAtIFslZF0gIiwgc2lnbmFsKTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzctbHRwLWZpeC1QQUdFX1NJWkUtcmVkZWZpbml0aW9uLWFuZC1PX0NSRUFULXVuZGVjbGVhci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM3LWx0cC1maXgtUEFHRV9TSVpFLXJlZGVmaW5pdGlvbi1hbmQtT19DUkVBVC11bmRlY2xlYXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NzM4YWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzctbHRwLWZpeC1QQUdFX1NJWkUtcmVkZWZpbml0aW9uLWFuZC1PX0NSRUFULXVuZGVjbGVhci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIGE5ZDU1OTVkMmZhMmFiMjUyZjFjYWJmNjNmNGI2NWMzZWZiYWZlYjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxMCBBdWcgMjAxNyAxNToyNzowMyArMDgwMAotU3ViamVjdDogW1BBVENIXSBsdHA6IGZpeCBQQUdFX1NJWkUgcmVkZWZpbml0aW9uIGFuZCBPX0NSRUFUIHVuZGVjbGVhciB3aGVuCi0gYnVpbGQgd2l0aCBtdXNsCi0KLWVycm9yIDE6Ci0KLXxzdGFja19jbGFzaC5jOjUwOjIyOiBlcnJvcjogZXhwZWN0ZWQgaWRlbnRpZmllciBvciAnKCcgYmVmb3JlIG51bWVyaWMgY29uc3RhbnQKLXwgc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9TSVpFOwotCi1UaGlzIGlzIGJlY2F1c2UgdGhlIG11c2wgbGliYyBhbHJlYWR5IGNvbnRhaW4gUEFHRV9TSVpFIGRlZmluaXRpb24gaW4gbGltaXRzLmMsCi13ZSBjYW4gY2hlY2sgaXQgaGVyZToKLQotICAgIGh0dHBzOi8vZ2l0Lm11c2wtbGliYy5vcmcvY2dpdC9tdXNsL3RyZWUvaW5jbHVkZS9saW1pdHMuaCNuNDMKLQotZXJyb3IgMjoKLQotfGNrMDEuYzoxNTc6MjI6IGVycm9yOiAnT19DUkVBVCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1NfSVJFQUQnPwotfCAgIGZkID0gb3BlbihmaWxlbmFtZSwgT19DUkVBVCB8IE9fVFJVTkMgfCBPX1JEV1IsIDA2NDQpOwotfCAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fgotfCAgICAgICAgICAgICAgICAgICAgICAgU19JUkVBRAotCi1UaGlzIGlzIGJlY2F1c2UgdGhlIG11c2wgbGliYyBwdXQgdGhvc2UgaW4gZmNudGwuaCwgc28gd2Ugc2hvdWxkIGluY2x1ZGUgdGhhdAotZmlsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWyBodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9wdWxsLzE5NCBdCi0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMvY3ZlL3N0YWNrX2NsYXNoLmMgICAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jIHwgIDEgKwotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jIHwgIDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jIGIvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jCi1pbmRleCAyZWYxYTgyLi43YzQ1OTkxIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jCi0rKysgYi90ZXN0Y2FzZXMvY3ZlL3N0YWNrX2NsYXNoLmMKLUBAIC00Nyw3ICs0Nyw3IEBACi0gI2luY2x1ZGUgInRzdF90ZXN0LmgiCi0gI2luY2x1ZGUgInRzdF9zYWZlX3N0ZGlvLmgiCi0gCi0tc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9TSVpFOwotK3N0YXRpYyB1bnNpZ25lZCBsb25nIFBBR0VfU0laRV90c3Q7Ci0gc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9NQVNLOwotIHN0YXRpYyB1bnNpZ25lZCBsb25nIEdBUF9QQUdFUyA9IDI1NjsKLSBzdGF0aWMgdW5zaWduZWQgbG9uZyBUSFJFU0hPTEQ7Ci1AQCAtNjYsNyArNjYsNyBAQCB2b2lkIGV4aGF1c3Rfc3RhY2tfaW50b19zaWdzZWd2KHZvaWQpCi0gCWV4aGF1c3Rfc3RhY2tfaW50b19zaWdzZWd2KCk7Ci0gfQotIAotLSNkZWZpbmUgTUFQUEVEX0xFTiBQQUdFX1NJWkUKLSsjZGVmaW5lIE1BUFBFRF9MRU4gUEFHRV9TSVpFX3RzdAotIHN0YXRpYyB1bnNpZ25lZCBsb25nIG1hcHBlZF9hZGRyOwotIAotIHZvaWQgc2Vndl9oYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCAqaW5mbywgdm9pZCAqZGF0YSBMVFBfQVRUUklCVVRFX1VOVVNFRCkKLUBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBkb19jaGlsZCh2b2lkKQotIAlzdGFja190IHNpZ25hbF9zdGFjazsKLSAJc3RydWN0IHNpZ2FjdGlvbiBzZWd2X3NpZyA9IHsuc2Ffc2lnYWN0aW9uID0gc2Vndl9oYW5kbGVyLCAuc2FfZmxhZ3MgPSBTQV9PTlNUQUNLfFNBX1NJR0lORk99OwotIAl2b2lkICptYXA7Ci0tCXVuc2lnbmVkIGxvbmcgZ2FwID0gR0FQX1BBR0VTICogUEFHRV9TSVpFOwotKwl1bnNpZ25lZCBsb25nIGdhcCA9IEdBUF9QQUdFUyAqIFBBR0VfU0laRV90c3Q7Ci0gCXN0cnVjdCBybGltaXQgcmxpbWl0OwotIAotIAlybGltaXQucmxpbV9jdXIgPSBybGltaXQucmxpbV9tYXggPSBSTElNX0lORklOSVRZOwotQEAgLTIwMCw4ICsyMDAsOCBAQCB2b2lkIHNldHVwKHZvaWQpCi0gewotIAljaGFyIGJ1Zls0MDk2XSwgKnA7Ci0gCi0tCVBBR0VfU0laRSA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKLS0JUEFHRV9NQVNLID0gfihQQUdFX1NJWkUgLSAxKTsKLSsJUEFHRV9TSVpFX3RzdCA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKLSsJUEFHRV9NQVNLID0gfihQQUdFX1NJWkVfdHN0IC0gMSk7Ci0gCi0gCWJ1Zls0MDk1XSA9ICdcMCc7Ci0gCVNBRkVfRklMRV9TQ0FORigiL3Byb2MvY21kbGluZSIsICIlNDA5NVteXG5dIiwgYnVmKTsKLUBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBzZXR1cCh2b2lkKQotIAkJdHN0X3JlcyhUSU5GTywgInN0YWNrX2d1YXJkX2dhcCA9ICVsZCIsIEdBUF9QQUdFUyk7Ci0gCX0KLSAKLS0JVEhSRVNIT0xEID0gKEdBUF9QQUdFUyAtIDEpICogUEFHRV9TSVpFOwotKwlUSFJFU0hPTEQgPSAoR0FQX1BBR0VTIC0gMSkgKiBQQUdFX1NJWkVfdHN0OwotIAotIAl7Ci0gCQl2b2xhdGlsZSBpbnQgKmEgPSBhbGxvY2EoMTI4KTsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jCi1pbmRleCAzZTE3YmU0Li4wNmQ4OWUzIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAxLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jCi1AQCAtNjksNiArNjksNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzeXMvd2FpdC5oPgotICNpbmNsdWRlIDxzeXMvZmlsZS5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlICJ0ZXN0LmgiCi0gCi0gdm9pZCBzZXR1cCh2b2lkKTsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDIuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jCi1pbmRleCA0MTRkZjY4Li45ZGRmNzI5IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAyLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jCi1AQCAtNzUsNiArNzUsNyBAQAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KLSAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSAidGVzdC5oIgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YzBhNGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzgtY29tbWFuZHMtZ2RiMDEtcmVwbGFjZS1zdGRpbi13aXRoLWRldi1udWxsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSAyZjZhYjhmNjk0YjI2YjdmMjU2NjYyNGY2ZDFmMjM3ODhkNmFiOGEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDExIFNlcCAyMDE3IDEyOjU3OjU4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbW1hbmRzL2dkYjAxOiByZXBsYWNlIHN0ZGluIHdpdGggL2Rldi9udWxsCi0KLUlmIHRoaXMgdGVzdGNhc2UgcnVucyBhcyBiYWNrZ3JvdW5kIHByb2Nlc3MsIGdkYiBjYW4gcmVjZWl2ZQotU0lHVFRPVSBhbmQgdGhlbiB0ZXN0Y2FzZSBnZXRzIHN0dWNrLgotCi1TaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC8yZjZhYjhmNjk0YjI2YjdmMjU2NjYyNGY2ZDFmMjM3ODhkNmFiOGEwXQotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2NvbW1hbmRzL2dkYi9nZGIwMS5zaCBiL3Rlc3RjYXNlcy9jb21tYW5kcy9nZGIvZ2RiMDEuc2gKLWluZGV4IDA3YWUzNmYuLmUzYTViNTEgMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoCi0rKysgYi90ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoCi1AQCAtMjksNyArMjksNyBAQCBUU1RfTkVFRFNfQ01EUz0iZ2RiIC9iaW4vY2F0IgotIAotIHNpbXBsZV90ZXN0KCkKLSB7Ci0tCWdkYiAvYmluL2NhdCAtZXggInJ1biAvZXRjL3Bhc3N3ZCIgLWV4IHF1aXQKLSsJZ2RiIC9iaW4vY2F0IC1leCAicnVuIC9ldGMvcGFzc3dkIiAtZXggcXVpdCA8IC9kZXYvbnVsbAotIAlSQz0kPwotIAlpZiBbICRSQyAtZXEgMCBdIDsgdGhlbgotIAkJdHN0X3JlcyBUUEFTUyAiZ2RiIGF0dGFjaGVkIHRvIHByb2Nlc3MgYW5kIGNvbXBsZXRlZCBydW4iCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM5LWNvbW1hbmRzLWFyMDEtRml4LWZvci10ZXN0LWluLWRldGVybWluaXN0aWMtbW9kZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM5LWNvbW1hbmRzLWFyMDEtRml4LWZvci10ZXN0LWluLWRldGVybWluaXN0aWMtbW9kZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2M5MjdlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzktY29tbWFuZHMtYXIwMS1GaXgtZm9yLXRlc3QtaW4tZGV0ZXJtaW5pc3RpYy1tb2RlLnBhdGNoCkBAIC0wLDAgKzEsMjUyIEBACitGcm9tIDA0ZGE5NDc4ODg3ZTcwNWVhMzhlNGYwOTc0OTJkYTIwZTY1MTY4NmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBHdWFuZ3dlbiBGZW5nIDxmZW5nZ3ctZm5zdEBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMTU6NDg6NDIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29tbWFuZHMvYXIwMTogRml4IGZvciB0ZXN0IGluIGRldGVybWluaXN0aWMgbW9kZQorCitJZiBiaW51dGlscyB3YXMgY29uZmlndXJlZCB3aXRoIC0tZW5hYmxlLWRldGVybWluaXN0aWMtYXJjaGl2ZXMsCithciB3aWxsIHJ1biBpbiBkZXRlcm1pbmlzdGljIG1vZGUgYnkgZGVmYXVsdCwgYW5kIHVzZSB6ZXJvIGZvcgordGltZXN0YW1wcyBhbmQgdWlkcy9naWRzLCB3aGljaCBtYWtlcyB0aGUgdGVzdCBjYXNlIGFibm9ybWFsLgorCitGaXggdGhpcyBieSBhZGQgdGhlICJVIiBtb2RpZmllciB3aGVuIGRldGVybWluaXN0aWMgbW9kZSBpcyBkZWZhdWx0LgorCitTaWduZWQtb2ZmLWJ5OiBHdWFuZ3dlbiBGZW5nIDxmZW5nZ3ctZm5zdEBjbi5mdWppdHN1LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEZlaSBKaWUgPGZlaWouZm5zdEBjbi5mdWppdHN1LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHA6Ly9saXN0cy5saW51eC5pdC9waXBlcm1haWwvbHRwLzIwMTctU2VwdGVtYmVyLzAwNTY2OC5odG1sXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0Y2FzZXMvY29tbWFuZHMvYXIvYXIwMSB8IDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMvY29tbWFuZHMvYXIvYXIwMSBiL3Rlc3RjYXNlcy9jb21tYW5kcy9hci9hcjAxCitpbmRleCBkZGFiMmUwLi5kNjg4Zjc2IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2NvbW1hbmRzL2FyL2FyMDEKKysrKyBiL3Rlc3RjYXNlcy9jb21tYW5kcy9hci9hcjAxCitAQCAtMjMsMTQgKzIzLDI2IEBACisgIyBUaGlzIGlzIGEgYmFzaWMgYXIgY29tbWFuZCB0ZXN0LgorICMKKyBUU1RfQ05UPTE3CisrVFNUX1NFVFVQPXNldHVwCisgVFNUX1RFU1RGVU5DPXRlc3QKKyBUU1RfTkVFRFNfVE1QRElSPTEKKyAuIHRzdF90ZXN0LnNoCisgCisrc2V0dXAoKQorK3sKKysJYXIgLS1oZWxwIHwgZ3JlcCAidXNlIHplcm8gZm9yIHRpbWVzdGFtcHMgYW5kIHVpZHMvZ2lkcyAoZGVmYXVsdCkiIFwKKysJCT4vZGV2L251bGwKKysJaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisrCQlNT0Q9IlUiCisrCWVsc2UKKysJCU1PRD0iIgorKwlmaQorK30KKysKKyB0ZXN0MSgpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLXJhIGZpbGUxLmluIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1yYSIkTU9EIiBmaWxlMS5pbiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisgCVJPRCBhciAtdCBsaWIuYSBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJmaWxlMS5pblxuZmlsZTIuaW5cbmZpbGUzLmluXG4iID4gYXIuZXhwCitAQCAtNDcsOSArNTksOSBAQCB0ZXN0MSgpCisgCisgdGVzdDIoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorLQkJICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbiAkVFNUX0RBVEFST09UL2ZpbGU0LmluCistCVJPRCBhciAtbWEgZmlsZTEuaW4gbGliLmEgZmlsZTQuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorKwkJCSAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluICRUU1RfREFUQVJPT1QvZmlsZTQuaW4KKysJUk9EIGFyIC1tYSIkTU9EIiBmaWxlMS5pbiBsaWIuYSBmaWxlNC5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGU0LmluXG5maWxlMi5pblxuZmlsZTMuaW5cbiIgPiBhci5leHAKK0BAIC02Niw4ICs3OCw4IEBAIHRlc3QyKCkKKyAKKyB0ZXN0MygpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLXJiIGZpbGUzLmluIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1yYiIkTU9EIiBmaWxlMy5pbiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisgCVJPRCBhciAtdCBsaWIuYSBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJmaWxlMS5pblxuZmlsZTIuaW5cbmZpbGUzLmluXG4iID4gYXIuZXhwCitAQCAtODQsOSArOTYsOSBAQCB0ZXN0MygpCisgCisgdGVzdDQoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKy0JUk9EIGFyIC1tYiBmaWxlMy5pbiBsaWIuYSBmaWxlMi5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbiBcCisrCQkJICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC1tYiIkTU9EIiBmaWxlMy5pbiBsaWIuYSBmaWxlMi5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuIiA+IGFyLmV4cAorQEAgLTEwMyw3ICsxMTUsNyBAQCB0ZXN0NCgpCisgCisgdGVzdDUoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluIFw+IGFyLm91dAorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gXD4gYXIub3V0CisgCisgCWlmIFsgLXMgYXIub3V0IF07IHRoZW4KKyAJCXRzdF9yZXMgVEZBSUwgImFyIHByb2R1Y2VkIG91dHB1dCB1bmV4cGVjdGVkbHkgKC1jKSIKK0BAIC0xMTcsNyArMTI5LDcgQEAgdGVzdDUoKQorIAorIHRlc3Q2KCkKKyB7CistCVJPRCBhciAtcWMgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiBcPiBhci5vdXQKKysJUk9EIGFyIC1xYyIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluIFw+IGFyLm91dAorIAorIAlpZiBbIC1zIGFyLm91dCBdOyB0aGVuCisgCQl0c3RfcmVzIFRGQUlMICJhciBwcm9kdWNlZCBvdXRwdXQgdW5leHBlY3RlZGx5ICgtcWMpIgorQEAgLTEzMSw5ICsxNDMsOSBAQCB0ZXN0NigpCisgCisgdGVzdDcoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKy0JUk9EIGFyIC1kIGxpYi5hIGZpbGUxLmluIGZpbGUyLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKysJCQkgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorKwlST0QgYXIgLWQiJE1PRCIgbGliLmEgZmlsZTEuaW4gZmlsZTIuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUzLmluXG4iID4gYXIuZXhwCitAQCAtMTUwLDkgKzE2Miw5IEBAIHRlc3Q3KCkKKyAKKyB0ZXN0OCgpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCistCSAgICAgICAgICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLWQgbGliLmEKKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorKwkJCSAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluCisrCVJPRCBhciAtZCIkTU9EIiBsaWIuYQorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuIiA+IGFyLmV4cAorQEAgLTE2OSw4ICsxODEsOCBAQCB0ZXN0OCgpCisgCisgdGVzdDkoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKy0JUk9EIGFyIC1yaSBmaWxlMy5pbiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUzLmluCisrCVJPRCBhciAtcmkiJE1PRCIgZmlsZTMuaW4gbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuIiA+IGFyLmV4cAorQEAgLTE4Nyw5ICsxOTksOSBAQCB0ZXN0OSgpCisgCisgdGVzdDEwKCkKKyB7CistCVJPRCBhciAtY3IgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUzLmluIFwKKy0JICAgICAgICAgICAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUyLmluCistCVJPRCBhciAtbWkgZmlsZTMuaW4gbGliLmEgZmlsZTIuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4gXAorKwkJCSAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisrCVJPRCBhciAtbWkiJE1PRCIgZmlsZTMuaW4gbGliLmEgZmlsZTIuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUxLmluXG5maWxlMi5pblxuZmlsZTMuaW5cbiIgPiBhci5leHAKK0BAIC0yMDYsOSArMjE4LDkgQEAgdGVzdDEwKCkKKyAKKyB0ZXN0MTEoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKy0JUk9EIGFyIC1tIGxpYi5hIGZpbGUzLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUzLmluIFwKKysJCQkgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorKwlST0QgYXIgLW0iJE1PRCIgbGliLmEgZmlsZTMuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUxLmluXG5maWxlMi5pblxuZmlsZTMuaW5cbiIgPiBhci5leHAKK0BAIC0yMjUsOSArMjM3LDkgQEAgdGVzdDExKCkKKyAKKyB0ZXN0MTIoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKy0JUk9EIGFyIC1wIGxpYi5hIFw+IGFyLm91dAorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCisrCQkJICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1wIiRNT0QiIGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgIlRoaXMgaXMgZmlsZSBvbmVcblRoaXMgaXMgZmlsZSB0d29cblRoaXMgaXMgZmlsZSB0aHJlZVxuIiA+IGFyLmV4cAorIAorQEAgLTI0NCw5ICsyNTYsOSBAQCB0ZXN0MTIoKQorIHRlc3QxMygpCisgeworIAorLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCistCSAgICAgICAgICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLXEgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlNC5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCisrCQkJICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1xIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTQuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUxLmluXG5maWxlMi5pblxuZmlsZTMuaW5cbmZpbGU0LmluXG4iID4gYXIuZXhwCitAQCAtMjY0LDE0ICsyNzYsMTQgQEAgdGVzdDEzKCkKKyB0ZXN0MTQoKQorIHsKKyAJUk9EIHRvdWNoIGZpbGUwLmluCistCVJPRCBhciAtY3IgbGliLmEgZmlsZTAuaW4gJFRTVF9EQVRBUk9PVC9maWxlMS5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hIGZpbGUwLmluICRUU1RfREFUQVJPT1QvZmlsZTEuaW4KKyAKKyAJZmlsZTBfbXRpbWUxPSQoYXIgLXR2IGxpYi5hIHwgZ3JlcCBmaWxlMC5pbikKKyAJZmlsZTFfbXRpbWUxPSQoYXIgLXR2IGxpYi5hIHwgZ3JlcCBmaWxlMS5pbikKKyAKKyAJdG91Y2ggLWMgLXQgJChkYXRlIC0tZGF0ZT0nbmV4dCBkYXknICsiJVklbSVkJUglTSIpIGZpbGUwLmluCisgCistCVJPRCBhciAtcnUgbGliLmEgZmlsZTAuaW4gJFRTVF9EQVRBUk9PVC9maWxlMS5pbgorKwlST0QgYXIgLXJ1IiRNT0QiIGxpYi5hIGZpbGUwLmluICRUU1RfREFUQVJPT1QvZmlsZTEuaW4KKyAKKyAJZmlsZTBfbXRpbWUyPSQoYXIgLXR2IGxpYi5hIHwgZ3JlcCBmaWxlMC5pbikKKyAJZmlsZTFfbXRpbWUyPSQoYXIgLXR2IGxpYi5hIHwgZ3JlcCBmaWxlMS5pbikKK0BAIC0yOTMsNyArMzA1LDcgQEAgdGVzdDE0KCkKKyAKKyB0ZXN0MTUoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbgorIAlST0QgYXIgLXR2IGxpYi5hIFw+IGFyLm91dAorIAorIAlpZiBncmVwIC1xICdbcnd4LV1cezlcfSBbMC05XS4qL1swLTldLipccypbMC05XS4qLipmaWxlMS5pbicgYXIub3V0OyB0aGVuCitAQCAtMzA4LDkgKzMyMCw5IEBAIHRlc3QxNSgpCisgCisgdGVzdDE2KCkKKyB7CistCVJPRCBhciAtY3IgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKy0JICAgICAgICAgICAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluCistCVJPRCBhciAteHYgbGliLmEgXD4gYXIub3V0CisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKysJCQkgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorKwlST0QgYXIgLXh2IiRNT0QiIGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgInggLSBmaWxlMS5pblxueCAtIGZpbGUyLmluXG54IC0gZmlsZTMuaW5cbiIgPiBhci5leHAKKyAKK0BAIC0zMzIsOCArMzQ0LDggQEAgdGVzdDE2KCkKKyAKKyB0ZXN0MTcoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKy0JUk9EIGFyIC14diBsaWIuYSBmaWxlMi5pbiBcPiBhci5vdXQKKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC14diIkTU9EIiBsaWIuYSBmaWxlMi5pbiBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJ4IC0gZmlsZTIuaW5cbiIgPiBhci5leHAKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDAtc2FmZV9tYWNyb3MtbWFrZS1pc19mdXNlLXJldHVybi16ZXJvLWlmLWZzX3R5cGUtaXMtTi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQwLXNhZmVfbWFjcm9zLW1ha2UtaXNfZnVzZS1yZXR1cm4temVyby1pZi1mc190eXBlLWlzLU4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA5NmE4NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQwLXNhZmVfbWFjcm9zLW1ha2UtaXNfZnVzZS1yZXR1cm4temVyby1pZi1mc190eXBlLWlzLU4ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA2N2FmN2RiZThiZGYyOWY5ZWQ5ODBkOGQyOWZlZWFlMzJhMGE3YTFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGkgV2FuZyA8bGl3YW5nQHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDIzIEphbiAyMDE4IDE3OjQ2OjM1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNhZmVfbWFjcm9zOiBtYWtlIGlzX2Z1c2UoKSByZXR1cm4gemVybyBpZiBmc190eXBlIGlzIE5VTEwKKworVGhpcyBjb21tbWl0IDI4NTA3ZTUxNGMoc2FmZV9tb3VudDogRG8gbm90IHRyeSBtb3VudCgpIHN5c2NhbGwgZm9yIEZVU0UgZnMpCitpbnZvbHZlcyBGVVNFIGZzIGNoZWNrIGluIHNhZmVfbW91bnQoKSwgYnV0IHdlJ2QgYmV0dGVyIGd1YXJhbnRlZSB0aGUgImZzX3R5cGUiCitpcyBsZWdhbCB0byBjaGVjayBpbiBpc19mdXNlKCkgZnVuY3Rpb24gb3RoZXJ3aXNlIHN5c3RlbSB3aWxsIGtpbGwgdGhlIHByb2dyYW0uCisKKyAgY21kbGluZT0iZmFub3RpZnkwNiIKKyAgY29udGFjdHM9IiIKKyAgYW5hbHlzaXM9ZXhpdAorICA8PDx0ZXN0X291dHB1dD4+PgorICB0c3RfdGVzdC5jOjk4MDogSU5GTzogVGltZW91dCBwZXIgcnVuIGlzIDBoIDEwbSAwMHMKKyAgdHN0X3Rlc3QuYzoxMDI1OiBCUk9LOiBUZXN0IGtpbGxlZCBieSBTSUdTRUdWIQorCitTaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaXdhbmdAcmVkaGF0LmNvbT4KK0Fja2VkLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC82N2FmN2RiZThiZGYyOWY5ZWQ5ODBkOGQyOWZlZWFlMzJhMGE3YTFkXQorLS0tCisgbGliL3NhZmVfbWFjcm9zLmMgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYi9zYWZlX21hY3Jvcy5jIGIvbGliL3NhZmVfbWFjcm9zLmMKK2luZGV4IGM0OGU0MzZkYy4uYWJkZWNhMDEzIDEwMDY0NAorLS0tIGEvbGliL3NhZmVfbWFjcm9zLmMKKysrKyBiL2xpYi9zYWZlX21hY3Jvcy5jCitAQCAtNzA4LDYgKzcwOCw5IEBAIHN0YXRpYyBpbnQgaXNfZnVzZShjb25zdCBjaGFyICpmc190eXBlKQorIHsKKyAJdW5zaWduZWQgaW50IGk7CisgCisrCWlmICghZnNfdHlwZSkKKysJCXJldHVybiAwOworKworIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmdXNlX2ZzX3R5cGVzKTsgaSsrKSB7CisgCQlpZiAoIXN0cmNtcChmdXNlX2ZzX3R5cGVzW2ldLCBmc190eXBlKSkKKyAJCQlyZXR1cm4gMTsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDUxNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDUxNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUzY2JmZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxNzA1MTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCi1ERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2x0cC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT00OGIxYzVlYzYzM2UzZTMwZWMyY2Y4ODRhZTY5OTk0NyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCi0gICAgZmlsZTovL3Rvb2xzL3BvdW5kZXIyMS9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCi0iCi0KLURFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKLUNGTEFHU19hcHBlbmRfcG93ZXJwYzY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKLUNGTEFHU19hcHBlbmRfbWlwc2FyY2huNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgotU1JDUkVWID0gIjE4OTE2YTJlNmQ4Yzk5N2I3YjI5ZGNmYTk1NTBkNWExNWIyMmVkMjIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFkZC1fR05VX1NPVVJDRS10by1wZWNfbGlzdGVuZXIuYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1tY19nZXRob3N0LWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1ydF9zaWdhY3Rpb24uaC1Vc2Utc2lnaGFuZGxlcl90LWluc3RlYWQtb2YtX19zaWdoYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzAtbGliLVVzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS1pbi1wbGFjZS1vZi1QVEhSRUFEXy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMzLXNobWF0MS1Db3Zlci1HTlUtc3BlY2lmaWMtY29kZS11bmRlci1fX1VTRV9HTlUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNS1maXgtdGVzdF9wcm9jX2tpbGwtaGFuZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM2LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNy1sdHAtZml4LVBBR0VfU0laRS1yZWRlZmluaXRpb24tYW5kLU9fQ1JFQVQtdW5kZWNsZWFyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzgtY29tbWFuZHMtZ2RiMDEtcmVwbGFjZS1zdGRpbi13aXRoLWRldi1udWxsLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWV4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCi1leHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCi0KLVBBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAiCi0jIGx0cCBuZXR3b3JrL3JwYyB0ZXN0IGNhc2VzIGZ0YmZzIHdoZW4gbGlidGlycGMgaXMgZm91bmQKLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10aXJwYyAiCi0KLWRvX2luc3RhbGwoKXsKLSAgICBpbnN0YWxsIC1kICR7RH0vb3B0L2x0cC8KLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBTS0lQX0lEQ0hFQ0s9MSBpbnN0YWxsCi0KLSAgICAjIGZpeHVwIG5vdCBkZXBsb3kgU1RQZmFpbHVyZV9yZXBvcnQucGwgdG8gYXZvaWQgY29uZnVzaW5nIGFib3V0IGl0IGZhaWxzIHRvIHJ1bgotICAgICMgYXMgaXQgbGFja3MgZGVwZW5kZW5jeSBvbiBzb21lIHBlcmwgbW91ZGxlIHN1Y2ggYXMgTFdQOjpTaW1wbGUKLSAgICAjIEFuZCB0aGlzIHNjcmlwdCBwcmV2aW91c2x5IHdvcmtzIGFzIGEgdG9vbCBmb3IgYW5hbHl6aW5nIGZhaWx1cmVzIGZyb20gTFRQCi0gICAgIyBydW5zIG9uIHRoZSBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0gKFNUUCkgYW5kIGl0IG1haW5seSBhY2Nlc3NlcwotICAgICMgaHR0cDovL2toYWNrLm9zZGwub3JnIHRvIHJldHJpZXZlIGx0cCB0ZXN0IHJlc3VsdHMgcnVuIG9uCi0gICAgIyBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0sIGJ1dCBub3cgaHR0cDovL2toYWNrLm9zZGwub3JnIHVuYWNjZXNzaWJsZQotICAgIHJtIC1yZiAke0R9L29wdC9sdHAvYmluL1NUUGZhaWx1cmVfcmVwb3J0LnBsCi0KLSAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMgYnkgbWFudWFsCi0gICAgY3AgLXIgdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIGFjbCBcCi0gICAgYXQgXAotICAgIGF0dHIgXAotICAgIGJhc2ggXAotICAgIGNwaW8gXAotICAgIGNyb25pZSBcCi0gICAgY3VybCBcCi0gICAgZTJmc3Byb2dzLW1rZTJmcyBcCi0gICAgZXhwZWN0IFwKLSAgICBnYXdrIFwKLSAgICBnemlwIFwKLSAgICBpcHJvdXRlMiBcCi0gICAgbGRkIFwKLSAgICBsaWJhaW8gXAotICAgIGxvZ3JvdGF0ZSBcCi0gICAgcGVybCBcCi0gICAgcHl0aG9uLWNvcmUgXAotICAgIHVuemlwIFwKLSAgICB1dGlsLWxpbnV4IFwKLSAgICB3aGljaCBcCi0iCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiL29wdC9sdHAvbGliL2xpYm1lbS5hIC9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL25tMDEvbGliLmEiCi0KLUZJTEVTXyR7UE59ICs9ICIvb3B0L2x0cC8qIC9vcHQvbHRwL3J1bnRlc3QvKiAvb3B0L2x0cC9zY2VuYXJpb19ncm91cHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qL2Jpbi8qIC9vcHQvbHRwL3Rlc3RzY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2NvbmZvcm1hbmNlLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0RvY3VtZW50YXRpb24vKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvZnVuY3Rpb25hbC8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9pbmNsdWRlLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3NjcmlwdHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc3RyZXNzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3Rvb2xzLyoiCi0KLSMgQXZvaWQgZ2VuZXJhdGVkIGJpbmFyaWVzIHN0cmlwcGluZy4gT3RoZXJ3aXNlIHNvbWUgb2YgdGhlIGx0cCB0ZXN0cyBzdWNoIGFzIGxkZDAxICYgbm0wMSBmYWlscwotSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCi1JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQgPSAiMSIKLSMgSG93ZXZlciwgdGVzdF9hcmNoX3N0cmlwcGVkIGlzIGFscmVhZHkgc3RyaXBwZWQsIHNvLi4uCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAiYWxyZWFkeS1zdHJpcHBlZCIKLQotIyBBdm9pZCBmaWxlIGRlcGVuZGVuY3kgc2NhbnMsIGFzIExUUCBjaGVja3MgZm9yIHRoaW5ncyB0aGF0IG1heSBvciBtYXkgbm90Ci0jIGV4aXN0IG9uIHRoZSBydW5uaW5nIHN5c3RlbS4gIEZvciBpbnN0YW5jZSBpdCBoYXMgc3BlY2lmaWMgY2hlY2tzIGZvcgotIyBjc2ggYW5kIGtzaCB3aGljaCBhcmUgbm90IHR5cGljYWxseSBwYXJ0IG9mIE9wZW5FbWJlZGRlZCBzeXN0ZW1zIChidXQKLSMgY2FuIGJlIGFkZGVkIHZpYSBhZGRpdGlvbmFsIGxheWVycy4pCi1TS0lQX0ZJTEVERVBTXyR7UE59ID0gJzEnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxODAxMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxODAxMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRmYjQxYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE4MDExOC5iYgpAQCAtMCwwICsxLDExNiBAQAorU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2x0cC5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT00OGIxYzVlYzYzM2UzZTMwZWMyY2Y4ODRhZTY5OTk0NyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCisgICAgZmlsZTovL3Rvb2xzL3BvdW5kZXIyMS9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCisiCisKK0RFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKK0NGTEFHU19hcHBlbmRfcG93ZXJwYzY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKK0NGTEFHU19hcHBlbmRfbWlwc2FyY2huNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgorU1JDUkVWID0gIjczMWNkMzRlNjgyZDI5N2IyMDc2NjhiZThiMWQxNTMyMGE5YWMxYjEiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1hZGQta25vYi10by1jb250cm9sLW51bWEtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1GaXgtZGVmYXVsdC12YWx1ZS1vZi13aXRob3V0LW51bWEtc3dpdGNoLWkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNS1maXgtdGVzdF9wcm9jX2tpbGwtaGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM2LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOS1jb21tYW5kcy1hcjAxLUZpeC1mb3ItdGVzdC1pbi1kZXRlcm1pbmlzdGljLW1vZGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0MC1zYWZlX21hY3Jvcy1tYWtlLWlzX2Z1c2UtcmV0dXJuLXplcm8taWYtZnNfdHlwZS1pcy1OLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2V4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCitleHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCisKK1BBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAiCisjIGx0cCBuZXR3b3JrL3JwYyB0ZXN0IGNhc2VzIGZ0YmZzIHdoZW4gbGlidGlycGMgaXMgZm91bmQKK0VYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10aXJwYyAiCisKK2RvX2luc3RhbGwoKXsKKyAgICBpbnN0YWxsIC1kICR7RH0vb3B0L2x0cC8KKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBTS0lQX0lEQ0hFQ0s9MSBpbnN0YWxsCisKKyAgICAjIGZpeHVwIG5vdCBkZXBsb3kgU1RQZmFpbHVyZV9yZXBvcnQucGwgdG8gYXZvaWQgY29uZnVzaW5nIGFib3V0IGl0IGZhaWxzIHRvIHJ1bgorICAgICMgYXMgaXQgbGFja3MgZGVwZW5kZW5jeSBvbiBzb21lIHBlcmwgbW91ZGxlIHN1Y2ggYXMgTFdQOjpTaW1wbGUKKyAgICAjIEFuZCB0aGlzIHNjcmlwdCBwcmV2aW91c2x5IHdvcmtzIGFzIGEgdG9vbCBmb3IgYW5hbHl6aW5nIGZhaWx1cmVzIGZyb20gTFRQCisgICAgIyBydW5zIG9uIHRoZSBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0gKFNUUCkgYW5kIGl0IG1haW5seSBhY2Nlc3NlcworICAgICMgaHR0cDovL2toYWNrLm9zZGwub3JnIHRvIHJldHJpZXZlIGx0cCB0ZXN0IHJlc3VsdHMgcnVuIG9uCisgICAgIyBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0sIGJ1dCBub3cgaHR0cDovL2toYWNrLm9zZGwub3JnIHVuYWNjZXNzaWJsZQorICAgIHJtIC1yZiAke0R9L29wdC9sdHAvYmluL1NUUGZhaWx1cmVfcmVwb3J0LnBsCisKKyAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMgYnkgbWFudWFsCisgICAgY3AgLXIgdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMKK30KKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgIGFjbCBcCisgICAgYXQgXAorICAgIGF0dHIgXAorICAgIGJhc2ggXAorICAgIGNwaW8gXAorICAgIGNyb25pZSBcCisgICAgY3VybCBcCisgICAgZTJmc3Byb2dzLW1rZTJmcyBcCisgICAgZXhwZWN0IFwKKyAgICBnYXdrIFwKKyAgICBnemlwIFwKKyAgICBpcHJvdXRlMiBcCisgICAgbGRkIFwKKyAgICBsaWJhaW8gXAorICAgIGxvZ3JvdGF0ZSBcCisgICAgcGVybCBcCisgICAgcHl0aG9uLWNvcmUgXAorICAgIHByb2NwcyBcCisgICAgdW56aXAgXAorICAgIHV0aWwtbGludXggXAorICAgIHdoaWNoIFwKKyAgICB0YXIgXAorIgorCitGSUxFU18ke1BOfSArPSAiL29wdC9sdHAvKiAvb3B0L2x0cC9ydW50ZXN0LyogL29wdC9sdHAvc2NlbmFyaW9fZ3JvdXBzLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAvb3B0L2x0cC90ZXN0c2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9Eb2N1bWVudGF0aW9uLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2Z1bmN0aW9uYWwvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3N0cmVzcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL25tMDEvbGliLmEgL29wdC9sdHAvbGliL2xpYm1lbS5hIgorCisjIEF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWwKK0lOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICIvb3B0L2x0cC90ZXN0Y2FzZXMvYmluL25tMDEgL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9sZGQwMSIKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIHN0YXRpY2RldiIKKworIyBBdm9pZCBmaWxlIGRlcGVuZGVuY3kgc2NhbnMsIGFzIExUUCBjaGVja3MgZm9yIHRoaW5ncyB0aGF0IG1heSBvciBtYXkgbm90CisjIGV4aXN0IG9uIHRoZSBydW5uaW5nIHN5c3RlbS4gIEZvciBpbnN0YW5jZSBpdCBoYXMgc3BlY2lmaWMgY2hlY2tzIGZvcgorIyBjc2ggYW5kIGtzaCB3aGljaCBhcmUgbm90IHR5cGljYWxseSBwYXJ0IG9mIE9wZW5FbWJlZGRlZCBzeXN0ZW1zIChidXQKKyMgY2FuIGJlIGFkZGVkIHZpYSBhZGRpdGlvbmFsIGxheWVycy4pCitTS0lQX0ZJTEVERVBTXyR7UE59ID0gJzEnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMyOGE2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguMS5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFuZGFyZCBVbml4IGRvY3VtZW50YXRpb24gc3lzdGVtIGFjY2Vzc2VkIHVzaW5nIHRoZSBtYW4gY29tbWFuZCIKK0hPTUVQQUdFID0gImh0dHA6Ly9tYW4tZGIubm9uZ251Lm9yZy8iCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL0NPUFlJTkcuTElCO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgorCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vbWFuLWRiL21hbi1kYi0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiNTE4NDI5NzhlMDY2ODYyODY0MjFmOTQ5OGQxMDA5YjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZhZWM2NDFjYTNkOTk0MmIwNTRjYzBlOWMzZjA1Y2I0NmEzYTk5MmJjMDAwNjc5NTc1NWUyZmVkMTM1N2YzZSIKKworREVQRU5EUyA9ICJsaWJwaXBlbGluZSBnZGJtIGdyb2ZmLW5hdGl2ZSIKKworIyB8IC91c3Ivc3JjL2RlYnVnL21hbi1kYi8yLjguMC1yMC9tYW4tZGItMi44LjAvc3JjL3doYXRpcy5jOjkzOTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX25sX21zZ19jYXRfY250cicKK1VTRV9OTFNfbGliYy1tdXNsID0gIm5vIgorCitpbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scworCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBhZ2VyPWxlc3MgLS1kaXNhYmxlLWNhY2hlLW93bmVyIgorCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7CisgICAgICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcworfQorCitGSUxFU18ke1BOfSArPSAiJHtwcmVmaXh9L2xpYi90bXBmaWxlcy5kIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9tYW4tZGIvbGlibWFuLnNvICR7bGliZGlyfS8ke0JQTn0vbGlibWFuZGIuc28iCisKK1JERVBFTkRTXyR7UE59ICs9ICJncm9mZiIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJsZXNzIgorUlBST1ZJREVTXyR7UE59ICs9ICIgbWFuIgorCitkZWYgY29tcHJlc3NfcGtnKGQpOgorICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCJJTkhFUklUIiwgImNvbXByZXNzX2RvYyIsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCisgICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgorICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6CisgICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKKyAgICAgICAgICAgICByZXR1cm4gInh6IgorICAgIHJldHVybiAiIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMDc3YTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT04ZjJhM2Q0MzA1N2Q0NThlNTA2NjcxNDk4MDU2N2E2MCIKLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS9BcmNoaXZlLyR7QlB9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQwODMwMGVkMDlkMWFkNTkzODA3MDE1OGIyMWRhMWQxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU2ZGI5MWEyNGU2OGM3Yzc2NWI3YjhlNjBmMTU5MWVkMTA0OWJjMmRjMzE0M2RiNzc5ZWFlNDgzOGI4OWQxOTUiCi0KLVJERVBFTkRTXyR7UE59ID0gIm1hbiIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLSMgT25seSBkZWxpdmVyZXMgbWFuLXBhZ2VzIHNvIEZJTEVTXyR7UE59IGdldHMgZXZlcnl0aGluZwotRklMRVNfJHtQTn0tZG9jID0gIiIKLUZJTEVTXyR7UE59ID0gIiR7bWFuZGlyfS8qIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAicGFzc3dkLjUgZ2V0c3BuYW0uMyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXNzd2QuNV0gPSAiJHttYW5kaXJ9L21hbjUvcGFzc3dkLjUiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0c3BuYW0uM10gPSAiJHttYW5kaXJ9L21hbjMvZ2V0c3BuYW0uMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhiZDA5MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjE0LmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiTGludXggbWFuLXBhZ2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0IGRvY3VtZW50cyB0aGUgTGludXgga2VybmVsIGFuZCBDIGxpYnJhcnkgaW50ZXJmYWNlcyB0aGF0IGFyZSBlbXBsb3llZCBieSB1c2VyIHByb2dyYW1zIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9kb2NzL21hbi1wYWdlcyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTc5NGY3MDE2MTdjYzAzZmU1MGM1MzI1NzY2MGQ4ZWM0IgorU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2RvY3MvJHtCUE59L0FyY2hpdmUvJHtCUH0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiODJiZDJkMDVjNGQwZGJhNWU3YTkwZDM5Yzk1NTUxOTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWVlYmM2YjA5YTExZTdmN2JiYzk4ZjM5ODRmZThiOGIyYmRlOWQyZjVmOWRjYmQ0MzQ4YTllMGQ5MzcwNDIzOCIKKworUkRFUEVORFNfJHtQTn0gPSAibWFuIgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KKworIyBPbmx5IGRlbGl2ZXJlcyBtYW4tcGFnZXMgc28gRklMRVNfJHtQTn0gZ2V0cyBldmVyeXRoaW5nCitGSUxFU18ke1BOfS1kb2MgPSAiIgorRklMRVNfJHtQTn0gPSAiJHttYW5kaXJ9LyoiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJwYXNzd2QuNSBnZXRzcG5hbS4zIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Bhc3N3ZC41XSA9ICIke21hbmRpcn0vbWFuNS9wYXNzd2QuNSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRzcG5hbS4zXSA9ICIke21hbmRpcn0vbWFuMy9nZXRzcG5hbS4zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL2NvbmZpZ3VyZV9zZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vY29uZmlndXJlX3NlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ5ZTY4My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vY29uZmlndXJlX3NlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLW1hbjogcmVwbGFjZSAnLCcgd2l0aCAnIycKLQotU29tZXRpbWVzLCB0aGUgcGFyYW1ldGVycyBvZiBDQy9CVUlMRF9DQyBjb250YWlucyB0aGUgJywnLCB3aGljaAotY2F1c2UgdGhlIHNlZCBjb21tYW5kIGZhaWxlZCwgc28gcmVwbGFjZSB0aGUgJywnIHdpdGggJyMnCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDxZdWUuVGFvQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDlmNjJjZjkuLjlhNTY1YWUgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTEzMjEsOSArMTMyMSw5IEBAIGRvCi0gICBlY2hvICJDcmVhdGluZyAkaW5maWxlIGZyb20gJGluZmlsZS5pbiIKLSAgIHNlZCAtZSAnCi0gcyxAdmVyc2lvbkAsJHZlcnNpb24sCi0tcyxAQ0NALCRDQywKLStzI0BDQ0AjJENDIwotIHMsQEVYRUVYVEAsJEVYRUVYVCwKLS1zLEBCVUlMRF9DQ0AsJEJVSUxEX0NDLAotK3MjQEJVSUxEX0NDQCMkQlVJTERfQ0MjCi0gcyxASU5TVEFMTEAsJElOU1RBTEwsCi0gcyxAREVGU0AsJERFRlMsCi0gcyxATElCU0AsJExJQlMsCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41Zy1ub25yb290YnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWctbm9ucm9vdGJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjgzNGJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41Zy1ub25yb290YnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLWRpZmYgLXUgLXIgbWFuLTEuNWcub2xkL2NvbmZpZ3VyZSBtYW4tMS41Zy9jb25maWd1cmUKLS0tLSBtYW4tMS41Zy5vbGQvY29uZmlndXJlCVdlZCBBcHIgIDcgMDQ6MTY6MDUgMTk5OQotKysrIG1hbi0xLjVnL2NvbmZpZ3VyZQlNb24gTWF5IDE1IDE1OjIyOjQ0IDIwMDAKLUBAIC03OTEsNyArNzkxLDcgQEAKLSAgICAgcmVhZCBtb2RlCi0gICAgIGlmIHRlc3QgIiRtb2RlIiAhPSAiIjsgdGhlbiBtYW5fbW9kZT0kbW9kZTsgZmkKLSAgIGZpCi0tICBtYW5faW5zdGFsbF9mbGFncz0iLW0gJG1hbl9tb2RlIC1vICRtYW5fdXNlciAtZyAkbWFuX2dyb3VwIgotKyAgbWFuX2luc3RhbGxfZmxhZ3M9IiIKLSBmaQotIAotICMgV2hhdCBzZWN0aW9ucyBkbyB3ZSBhbnRpY2lwYXRlPwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVoMS1nZW5jYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLWdlbmNhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ0YjE0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLWdlbmNhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIGdlbmNhdC9nZW5saWIuYwkyMDA2LTA4LTAyIDIwOjExOjQ0LjAwMDAwMDAwMCArMDIwMAotKysrIGdlbmNhdC9nZW5saWIuYy5vZGVuCTIwMDgtMTItMjEgMTk6MTg6NTAuMDAwMDAwMDAwICswMTAwCi1AQCAtNDcsNiArNDcsNyBAQCB1cC10by1kYXRlLiAgTWFueSB0aGFua3MuCi0gMDEvMTQvOTEgICA0IG5hemd1bAlPZmYgYnkgb25lIG9uIG51bWJlciBzcGVjaWZpZWQgZW50cmllcwotICovCi0gCi0rI3VuZGVmIF9HTlVfU09VUkNFCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpZmRlZiBTWVNWCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLW1ha2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLW1ha2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2MzFlYjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVoMS1tYWtlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNWcvbWFuL01ha2VmaWxlLmluLm1pa2UJRnJpIEFwciAgOSAxMzozNTo1NCAxOTk5Ci0rKysgbWFuLTEuNWcvbWFuL01ha2VmaWxlLmluCUZyaSBBcHIgIDkgMTM6MzY6NDUgMTk5OQotQEAgLTEsOCArMSw4IEBACi0gIyBvbmx5IGV4ZWN1dGVkIGZyb20gYSBzdWJkaXIKLSBNQU4xID0gbWFuIHdoYXRpcyBhcHJvcG9zCi0tTUFONSA9IG1hbi5jb25mCi0rTUFONSA9IG1hbi5jb25maWcKLSBNQU44ID0gbWFrZXdoYXRpcwotLUFMTCA9IG1hbi4xIHdoYXRpcy4xIGFwcm9wb3MuMSBtYW4uY29uZi41Ci0rQUxMID0gbWFuLjEgd2hhdGlzLjEgYXByb3Bvcy4xIG1hbi5jb25maWcuNQotIE1BWUJFOCA9IG1ha2V3aGF0aXMKLSAKLSAuU1VGRklYRVM6IC5tYW4gLjEgLjUgLjgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItaW5pdGlhbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItaW5pdGlhbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU1NmMwNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWkyLWluaXRpYWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS41aTIvc3JjL21ha2V3aGF0aXMuc2guaW5pdGlhbAlUdWUgSnVsICAzIDE1OjM4OjM5IDIwMDEKLSsrKyBtYW4tMS41aTIvc3JjL21ha2V3aGF0aXMuc2gJVHVlIEp1bCAgMyAxNTozOTozOSAyMDAxCi1AQCAtODEsOCArODEsMTAgQEAKLSAJY29udGludWU7OwotICAgICAtcykgc2V0c2VjdGlvbnM9MQotIAljb250aW51ZTs7Ci0tICAgIC11KSBmaW5kYXJnPSItbmV3ZXIgL3Zhci9jYWNoZS9tYW4vd2hhdGlzIgotLQl1cGRhdGU9MQotKyAgICAtdSkgaWYgWyAtZSAvdmFyL2NhY2hlL21hbi93aGF0aXMgXTsgdGhlbgotKwkgIGZpbmRhcmc9Ii1uZXdlciAvdmFyL2NhY2hlL21hbi93aGF0aXMiCi0rCSAgdXBkYXRlPTEKLSsJZmkKLSAJY29udGludWU7OwotICAgICAtdikgdmVyYm9zZT0xCi0gCWNvbnRpbnVlOzsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItbmV3bGluZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItbmV3bGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjExZGY1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWkyLW5ld2xpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBzcmMvbWFuLmMJMjAwOC0xMi0yMSAxOToxNzozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBzcmMvbWFuLmMub2RlbgkyMDA4LTEyLTIxIDE5OjE3OjM4LjAwMDAwMDAwMCArMDEwMAotQEAgLTM5MSw3ICszOTEsNyBAQCBhZ2FpbjoKLSAJICBiZWcrKzsKLSAKLSAgICAgIGVuZCA9IGJlZzsKLS0gICAgIHdoaWxlICgqZW5kICE9ICcgJyAmJiAqZW5kICE9ICdcdCcgJiYgKmVuZCAhPSAnXG4nICYmICplbmQgIT0gJ1wwJykKLSsgICAgIHdoaWxlICgqZW5kICE9ICcgJyAmJiAqZW5kICE9ICdcdCcgJiYgKmVuZCAhPSAnXG4nICYmICplbmQgIT0gJ1wwJyAmJiAoZW5kLWJ1Zik8QlVGU0laRSkKLSAJICBlbmQrKzsJCS8qIG5vdGUgdGhhdCBidWYgaXMgTlVMLXRlcm1pbmF0ZWQgKi8KLSAgICAgICplbmQgPSAnXDAnOwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1vdmVyZmxvdy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItb3ZlcmZsb3cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZDI4ODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1vdmVyZmxvdy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVpMi9zcmMvbWFuLmMub3ZlcmZsb3cJTW9uIEp1biAyNSAwMDowMTo0NSAyMDAxCi0rKysgbWFuLTEuNWkyL3NyYy9tYW4uYwlNb24gSnVuIDI1IDAwOjAxOjQ1IDIwMDEKLUBAIC0zODEsNiArMzgxLDkgQEAKLSAJICBzdHJjYXQobmFtZSwgIi8iKTsKLSAJICBzdHJjYXQobmFtZSwgYmVnKTsKLSAgICAgIH0KLSsgICAgIC8qIElmIHRoaXMgaXMgdG9vIGxvbmcsIGJhZCB0aGluZ3MgaGF2ZSBhbHJlYWR5IGhhcHBlbmVkLiAqCi0rICAgICAgKiB3ZSBzaG91bGQgcXVpdCBJTU1FRElBVEVMWS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSsgICAgIGlmKHN0cmxlbihuYW1lKT5zaXplb2YodWx0bmFtZSkpIF9leGl0KDEpOwotIAotICAgICAgZ290byBhZ2FpbjsKLSB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotaTE4bi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai1pMThuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWUwOWMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai1pMThuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNWovbXNncy9pbnN0LnNoLmkxOG4JV2VkIEFwciAyNSAxMDo0MDo1MCAyMDAxCi0rKysgbWFuLTEuNWovbXNncy9pbnN0LnNoCVdlZCBBcHIgMjUgMTA6NDE6MTcgMjAwMQotQEAgLTI3LDggKzI3LDcgQEAKLSBmb3IgaiBpbiAkTTsgZG8KLSAgIGlmIFsgLWYgJGogXTsgdGhlbgotICAgICBpPWBlY2hvICRqIHwgc2VkIC1lICdzL21lc3MuLy87IHMvLmNhdC8vJ2AKLS0gICAgZGVzdD1gZWNobyAkbG9jZGlyIHwgc2VkIC1lICJzLyVOL21hbi87IHMvJUwvJGkvImAKLS0gICAgZGVzdD0ke1BSRUZJWH0kZGVzdAotKyAgICBkZXN0PSR7UFJFRklYfS9gZWNobyAkbG9jZGlyIHwgc2VkIC1lICJzLyVOL21hbi87IHMvJUwvJGkvImAKLSAgICAgZWNobyAibWtkaXIgLXAgYGRpcm5hbWUgJGRlc3RgIgotICAgICBta2RpciAtcCBgZGlybmFtZSAkZGVzdGA7Ci0gICAgIGVjaG8gImluc3RhbGwgLWMgLW0gNjQ0ICRqICRkZXN0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVqLW5vY2FjaGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotbm9jYWNoZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUxZGRkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotbm9jYWNoZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVqL3NyYy9tYW4uY29uZi5pbi5ub2NhY2hlCVRodSBOb3YgMjIgMTU6MDc6MTIgMjAwMQotKysrIG1hbi0xLjVqL3NyYy9tYW4uY29uZi5pbglUaHUgTm92IDIyIDE1OjA3OjEyIDIwMDEKLUBAIC04MSw2ICs4MSw5IEBACi0gIyAKLSAjTk9DQUNIRQotICMKLSsjIE5PQ0FDSEUga2VlcHMgbWFuIGZyb20gY3JlYXRpbmcgY2FjaGUgcGFnZXMKLStOT0NBQ0hFCi0rIwotICMgVXNlZnVsIHBhdGhzIC0gbm90ZSB0aGF0IENPTCBzaG91bGQgbm90IGJlIGRlZmluZWQgd2hlbgotICMgTlJPRkYgaXMgZGVmaW5lZCBhcyAiZ3JvZmYgLVRhc2NpaSIgb3IgImdyb2ZmIC1UbGF0aW4xIjsKLSAjIG5vdCBvbmx5IGlzIGl0IHN1cGVyZmx1b3VzLCBidXQgaXQgYWN0dWFsbHkgZGFtYWdlcyB0aGUgb3V0cHV0LgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVqLXV0ZjgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotdXRmOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNkM2U0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotdXRmOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVqL2NvbmZpZ3VyZS51dGY4CVRodSBOb3YgMjIgMTU6MDI6MzUgMjAwMQotKysrIG1hbi0xLjVqL2NvbmZpZ3VyZQlUaHUgTm92IDIyIDE1OjAzOjE1IDIwMDEKLUBAIC00MDgsOSArNDA4LDkgQEAKLSAgIEZnYXdrPS9iaW4vZ2F3awotICAgRmF3az0vYmluL2dhd2sKLSAgIEZtYXdrPW1pc3NpbmcKLS0gIHRyb2ZmPSIiCi0tICBucm9mZj0iIgotLSAgam5yb2ZmPSIiCi0rICB0cm9mZj0vdXNyL2Jpbi90cm9mZgotKyAgbnJvZmY9L3Vzci9iaW4vbnJvZmYKLSsgIGpucm9mZj0vdXNyL2Jpbi9ucm9mZgotICAgZXFuPSIiCi0gICBuZXFuPSIiCi0gICBqbmVxbj0iIgotQEAgLTQ1Myw2ICs0NTMsOCBAQAotICAgICBkb25lCi0gICBkb25lCi0gICBGZ3JvZmY9L3Vzci9iaW4vZ3JvZmYKLSsgIEZucm9mZj0vdXNyL2Jpbi9ucm9mZgotKyAgRmpucm9mZj0vdXNyL2Jpbi9ucm9mZgotICAgRmdlcW49L3Vzci9iaW4vZ2VxbgotICAgRmd0Ymw9L3Vzci9iaW4vZ3RibAotICAgRmNvbD0vdXNyL2Jpbi9jb2wKLUBAIC00ODUsMjUgKzQ4NywyNSBAQAotICAgdGhlbgotICAgICBpZiB0ZXN0ICRGbnJvZmYgPSAibWlzc2luZyIKLSAgICAgdGhlbgotLSAgICAgIG5yb2ZmPSJucm9mZiAtVGxhdGluMSAtbWFuZG9jIgotKyAgICAgIG5yb2ZmPSJucm9mZiAtVHV0ZjggLW1hbmRvYyIKLSAgICAgZWxzZQotLSAgICAgIG5yb2ZmPSIkRm5yb2ZmIC1UbGF0aW4xIC1tYW5kb2MiCi0rICAgICAgbnJvZmY9IiRGbnJvZmYgLVR1dGY4IC1tYW5kb2MiCi0gICAgIGZpCi0gICAgIHRyb2ZmPSJ0cm9mZiAtbWFuZG9jIgotICAgICBlY2hvICJXYXJuaW5nOiBjb3VsZCBub3QgZmluZCBncm9mZiIKLSAgIGVsc2UKLSAgICAgaWYgdGVzdCAkRm5yb2ZmID0gIm1pc3NpbmciCi0gICAgIHRoZW4KLS0gICAgICBucm9mZj0iJEZncm9mZiAtVGxhdGluMSAtbWFuZG9jIgotKyAgICAgIG5yb2ZmPSIkRmdyb2ZmIC1UdXRmOCAtbWFuZG9jIgotICAgICBlbHNlCi0tICAgICAgbnJvZmY9IiRGbnJvZmYgLVRsYXRpbjEgLW1hbmRvYyIKLSsgICAgICBucm9mZj0iJEZucm9mZiAtVHV0ZjggLW1hbmRvYyIKLSAgICAgZmkKLSAgICAgdHJvZmY9IiRGZ3JvZmYgLVRwcyAtbWFuZG9jIgotLSAgICBqbnJvZmY9IiRGZ3JvZmYgLVRuaXBwb24gLW1hbmRvY2oiCi0rICAgIGpucm9mZj0iJEZqbnJvZmYgLVR1dGY4IC1tYW5kb2NqIgotICAgZmkKLSAgIGVxbj0iJEZnZXFuIC1UcHMiCi0tICBuZXFuPSIkRmdlcW4gLVRsYXRpbjEiCi0tICBqbmVxbj0iJEZnZXFuIC1UbmlwcG9uIgotKyAgbmVxbj0iJEZnZXFuIC1UdXRmOCIKLSsgIGpuZXFuPSIkRmdlcW4gLVR1dGY4IgotICAgdGJsPSIkRmd0YmwiCi0gICBjb2w9IiRGY29sIgotICAgdmdyaW5kPSIkRnZncmluZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1jb25mcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1jb25mcGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU3NDZjMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWstY29uZnBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBjb25maWd1cmUJMjAwNi0wNS0wMSAxOTo1NjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjb25maWd1cmUub2RlbgkyMDA4LTEyLTIxIDE5OjE2OjUwLjAwMDAwMDAwMCArMDEwMAotQEAgLTE5OCw3ICsxOTgsNyBAQAotICAgICBjb25mZGlyPSIke2NvbmZwcmVmaXh9L3NoYXJlL21pc2MiCi0gICBmaQotIGZpCi0tY29uZmZpbGVuYW1lPSJtYW4uY29uZiIKLStjb25mZmlsZW5hbWU9Im1hbi5jb25maWciCi0gCi0gaWYgdGVzdCAiJFJBTkRPTSIgPSAiJFJBTkRPTSI7IHRoZW4KLSAgICMgUGxhaW4gb2xkIEJvdXJuZSBzaGVsbC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1ub25hc2NpaS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1ub25hc2NpaS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY2MmQ5Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWstbm9uYXNjaWkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSAuL3NyYy9hcHJvcG9zLnNoLm5vbmFzY2lpCTIwMDEtMTEtMjMgMDA6MzA6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgLi9zcmMvYXByb3Bvcy5zaAkyMDAyLTA4LTEzIDE1OjQ0OjUzLjAwMDAwMDAwMCArMDIwMAotQEAgLTE4LDkgKzE4LDkgQEAKLSAKLSAjIFdoZW4gbWFuIHBhZ2VzIGluIHlvdXIgZmF2b3JpdGUgbG9jYWxlIGxvb2sgdG8gZ3JlcCBsaWtlIGJpbmFyeSBmaWxlcwotICMgKGFuZCB5b3UgdXNlIEdOVSBncmVwKSB5b3UgbWF5IHdhbnQgdG8gYWRkIHRoZSAnYScgb3B0aW9uIHRvICpncmVwb3B0MS4KLS1hcHJvcG9zZ3JlcG9wdDE9J2knCi0rYXByb3Bvc2dyZXBvcHQxPSdpYScKLSBhcHJvcG9zZ3JlcG9wdDI9JycKLS13aGF0aXNncmVwb3B0MT0naXcnCi0rd2hhdGlzZ3JlcG9wdDE9J2l3YScKLSB3aGF0aXNncmVwb3B0Mj0nXicKLSBncmVwb3B0MT0kJWFwcm9wb3Nfb3Jfd2hhdGlzJWdyZXBvcHQxCi0gZ3JlcG9wdDI9JCVhcHJvcG9zX29yX3doYXRpcyVncmVwb3B0MgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLXNvZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLXNvZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGI5MjUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1zb2ZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVqL3NyYy9tYW4uYy5zb2ZpeAlUaHUgTm92IDIyIDE0OjUxOjQ0IDIwMDEKLSsrKyBtYW4tMS41ai9zcmMvbWFuLmMJVGh1IE5vdiAyMiAxNDo1Mjo0NCAyMDAxCi1AQCAtMzAwLDcgKzMwMCw3IEBACi0gCi0gICAgICBpZiAoc3RybGVuKG5hbWUwKSA+PSBzaXplb2YodWx0bmFtZSkpCi0gCSAgICAgcmV0dXJuIG5hbWUwOwotLSAgICAgc3RyY3B5KHVsdG5hbWUsIG5hbWUwKTsKLSsgICAgIHN0cm5jcHkodWx0bmFtZSwgbmFtZTAsIEJVRlNJWkUtMzIpOwotICAgICAgbmFtZSA9IHVsdG5hbWU7Ci0gCi0gYWdhaW46Ci1AQCAtMzMyLDcgKzMzMiw3IEBACi0gCSAgICogLnNvIGZpbGVzIC0gd2UgY291bGQgZ2xvYiBmb3IgYWxsIHBvc3NpYmxlIGV4dGVuc2lvbnMsCi0gCSAgICogZm9yIG5vdzogb25seSB0cnkgLmd6Ci0gCSAgICovCi0tCSAgZWxzZSBpZiAoZnAgPT0gTlVMTCAmJiBnZXRfZXhwYW5kZXIoIi5neiIpICYmCi0rCSAgaWYgKGZwID09IE5VTEwgJiYgZ2V0X2V4cGFuZGVyKCIuZ3oiKSAmJgotIAkJICAgc3RybGVuKG5hbWUpK3N0cmxlbigiLmd6IikgPCBCVUZTSVpFKSB7Ci0gCSAgICAgICBzdHJjYXQobmFtZSwgIi5neiIpOwotIAkgICAgICAgZnAgPSBmb3BlbiAobmFtZSwgInIiKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVnMTE2MjEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLWJ1ZzExNjIxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTEyOTk5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVnMTE2MjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSAuL2NvbmZpZ3VyZS5hZAkyMDAzLTEyLTExIDE5OjE3OjEwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vY29uZmlndXJlCTIwMDMtMTItMTEgMTk6MTc6MjcuMDAwMDAwMDAwICswMTAwCi1AQCAtMjYsNyArMjYsNyBAQAotICMgKEluZGVlZCwgLXIgbWF5IGNhdXNlIHRoZSB0ZXJtaW5hbCB0byBnZXQgaW50byBmdW5ueSBzdGF0ZXMuCi0gIyBWZXJ5IGluY29udmVuaWVudC4gRm9yIHZpZXdpbmcgcGFnZXMgaW4gc3RyYW5nZSBsb2NhbGVzLCBzZXQgTENfKi4pCi0gIwotLURFRkFVTFRMRVNTT1BUPSItaXMiCi0rREVGQVVMVExFU1NPUFQ9Ii1pc3IiCi0gIwotICMgTm90ZSB0aGF0IG5vdCBjcmVhdGluZyBhbnkgY2F0IGRpcmVjdG9yaWVzICgvdmFyL2NhY2hlL21hbiBvciBzbykKLSAjIGFuZCBub3QgbWFraW5nIG1hbiBzdWlkIG9yIHNnaWQgaXMgcmVjb21tZW5kZWQuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLWJ1aWxkcm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVpbGRyb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzk3ZjU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVpbGRyb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gLi9jb25maWd1cmUubGVzcwkyMDAzLTEyLTExIDE5OjE4OjE1LjAwMDAwMDAwMCArMDEwMAotKysrIC4vY29uZmlndXJlCTIwMDMtMTItMTEgMTk6MjA6MDMuMDAwMDAwMDAwICswMTAwCi1AQCAtNDAxLDE4ICs0MDEsMTMgQEAKLSAKLSBpZiB0ZXN0ICIkYW5zIiA9ICJmYWxzZSIKLSB0aGVuCi0tICBmb3IgaSBpbiBtb3JlIGxlc3MgY21wIGNhdCBhd2sgZ2F3ayBtYXdrCi0tICBkbwotLSAgICBldmFsIEYkaT0ibWlzc2luZyIKLS0gICAgZm9yIGogaW4gJERFRlBBVEgKLS0gICAgZG8KLS0gICAgICBpZiB0ZXN0IC1mICRqLyRpCi0tICAgICAgdGhlbgotLQlldmFsIEYkaT0kai8kaQotLQlicmVhawotLSAgICAgIGZpCi0tICAgIGRvbmUKLS0gIGRvbmUKLSsgIEZtb3JlPS9iaW4vbW9yZQotKyAgRmxlc3M9L3Vzci9iaW4vbGVzcwotKyAgRmNtcD0vdXNyL2Jpbi9jbXAKLSsgIEZjYXQ9L2Jpbi9jYXQKLSsgIEZnYXdrPS9iaW4vZ2F3awotKyAgRmF3az0vYmluL2dhd2sKLSsgIEZtYXdrPW1pc3NpbmcKLSAgIHRyb2ZmPSIiCi0gICBucm9mZj0iIgotICAgam5yb2ZmPSIiCi1AQCAtNDU3LDYgKzQ1MiwxOSBAQAotICAgICAgIGZpCi0gICAgIGRvbmUKLSAgIGRvbmUKLSsgIEZncm9mZj0vdXNyL2Jpbi9ncm9mZgotKyAgRmdlcW49L3Vzci9iaW4vZ2VxbgotKyAgRmd0Ymw9L3Vzci9iaW4vZ3RibAotKyAgRmNvbD0vdXNyL2Jpbi9jb2wKLSsgIEZncmVmZXI9L3Vzci9iaW4vZ3JlZmVyCi0rICBGZ3BpYz0vdXNyL2Jpbi9ncGljCi0rICBGbW9yZT0vYmluL21vcmUKLSsgIEZsZXNzPS91c3IvYmluL2xlc3MKLSsgIEZjbXA9L3Vzci9iaW4vY21wCi0rICBGY2F0PS9iaW4vY2F0Ci0rICBGZ2F3az0vYmluL2dhd2sKLSsKLSsKLSAgIGZvciBpIGluIGVxbiB0YmwgcmVmZXIgcGljCi0gICBkbwotICAgICBpZiB0ZXN0IGBldmFsIGVjaG8gXFwkRmckaWAgPSAibWlzc2luZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItbm8tY29sb3ItZm9yLXByaW50aW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1uby1jb2xvci1mb3ItcHJpbnRpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NWZmMWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1uby1jb2xvci1mb3ItcHJpbnRpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS41bTIvY29uZmlndXJlLmNvbG9yCTIwMDYtMDktMTYgMTg6Mjc6MzcuMDAwMDAwMDAwICswMjAwCi0rKysgbWFuLTEuNW0yL2NvbmZpZ3VyZQkyMDA2LTA5LTE2IDE4OjI4OjQ0LjAwMDAwMDAwMCArMDIwMAotQEAgLTUzOSw2ICs1MzksOCBAQAotICAgICB0cm9mZj0iJHRyb2ZmIC1jIgotICAgICBucm9mZj0iJG5yb2ZmIC1jIgotICAgICBqbnJvZmY9IiRqbnJvZmYgLWMiCi0rZWxzZQotKyAgICB0cm9mZj0iJHRyb2ZmIC1jIgotIGZpCi0gCi0gaWYgWyB4JGRlZmF1bHQgPSB4IF07IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItc2lncGlwZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItc2lncGlwZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFmNzhlYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLXNpZ3BpcGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS41bTIvc3JjL3V0aWwuY19zaWdwaXBlCTIwMDYtMTItMDkgMTM6NDM6MjEuMDAwMDAwMDAwICswMTAwCi0rKysgbWFuLTEuNW0yL3NyYy91dGlsLmMJMjAwNi0xMi0wOSAxMzo1MzoxMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMTYsMTEgKzExNiwxNCBAQAotIHN0YXRpYyBpbnQKLSBzeXN0ZW0xIChjb25zdCBjaGFyICpjb21tYW5kKSB7Ci0gCXZvaWQgKCpwcmV2X2hhbmRsZXIpKGludCkgPSBzaWduYWwgKFNJR0lOVCxjYXRjaF9pbnQpOwotKwlzaWduYWwgKFNJR1BJUEUsU0lHX0lHTik7Ci0gCWludCByZXQgPSBzeXN0ZW0oY29tbWFuZCk7Ci0gCi0gCS8qIGNoaWxkIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWw/ICovCi0gCWlmIChXSUZTSUdOQUxFRChyZXQpICYmCi0tCSAgICAoV1RFUk1TSUcocmV0KSA9PSBTSUdJTlQgfHwgV1RFUk1TSUcocmV0KSA9PSBTSUdRVUlUKSkKLSsJICAgIChXVEVSTVNJRyhyZXQpID09IFNJR0lOVCB8fAotKwkJIFdURVJNU0lHKHJldCkgPT0gU0lHUElQRSB8fAotKwkJIFdURVJNU0lHKHJldCkgPT0gU0lHUVVJVCkpCi0gCQlleGl0KDEpOwotIAotIAkvKiBvciB3ZSBjYXVnaHQgYW4gaW50ZXJydXB0PyAqLwotQEAgLTEyOCw2ICsxMzEsNyBAQAotIAkJZXhpdCgxKTsKLSAKLSAJc2lnbmFsKFNJR0lOVCxwcmV2X2hhbmRsZXIpOwotKwlzaWduYWwoU0lHUElQRSxTSUdfREZMKTsKLSAJcmV0dXJuIHJldDsKLSB9Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtaTE4bl93aGF0aXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtaTE4bl93aGF0aXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMjEzMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLWkxOG5fd2hhdGlzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL3NyYy9hcHJvcG9zLnNoIG1hbi0xLjZlL3NyYy9hcHJvcG9zLnNoCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvYXByb3Bvcy5zaAkyMDA3LTA1LTE4IDEzOjQ5OjMxLjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL3NyYy9hcHJvcG9zLnNoCTIwMDctMDUtMTggMTQ6MjQ6MzMuMDAwMDAwMDAwIC0wMzAwCi1AQCAtNjAsMTYgKzYwLDU2IEBACi0gICAgIGVzYWMKLSBkb25lCi0gCi0rIyBsaXN0IG9mIGxhbmd1YWdlcyB0byBsb29rIGZvcgotK0xBTkdfTElTVD1gZWNobyAkTEFOR1VBR0U6JExDX0FMTDokTENfTUVTU0FHRVM6JExBTkcgfCB0ciAnOicgJyAnYAotK0RJUl9MSVNUPSIiCi0rZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gJG1hbnBhdGggL3Vzci9saWIKLStkbwotKyAgICBmb3IgbCBpbiAkTEFOR19MSVNUCi0rICAgIGRvCi0rICAgICAgICBpZiBbIC1kICRkLyRsIF0KLSsgICAgICAgIHRoZW4KLSsgICAgICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHBhdGggaXMgbm90IGFscmVhZHkgaW4gdGhlIGxpc3QKLSsgICAgICAgICAgICBpZiAhIGVjaG8gIiRESVJfTElTVCIgfCBncmVwICIgJGQvJGxcYiIgPiAvZGV2L251bGwKLSsgICAgICAgICAgICB0aGVuCi0rICAgICAgICAgICAgICAgIERJUl9MSVNUPSIkRElSX0xJU1QgJGQvJGwiCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgIGZpCi0rICAgIGRvbmUKLSsgICAgRElSX0xJU1Q9IiRESVJfTElTVCAkZCIKLSsgICAgIyBjaGVjayB0aGF0IHRoZSBwYXRoIGlzIG5vdCBhbHJlYWR5IGluIHRoZSBsaXN0Ci0rICAgIGlmICEgZWNobyAiJERJUl9MSVNUIiB8IGdyZXAgIiAkZFxiIiA+IC9kZXYvbnVsbAotKyAgICB0aGVuCi0rICAgICAgICBESVJfTElTVD0iJERJUl9MSVNUICRkLyRsIgotKyAgICBmaQotK2RvbmUKLSsKLSB3aGlsZSBbICIkMSIgIT0gIiIgXQotIGRvCi0gICAgIGZvdW5kPTAKLS0gICAgZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gJG1hbnBhdGggL3Vzci9saWIKLSsgICAgIyBpbiBvcmRlciBub3QgdG8gZGlzcGxheSBsaW5lcyBpbiBtb3JlIHRoYW4gb25lIGxhbmd1YWdlIGZvcgotKyAgICAjIGEgc2FtZSBtYW4gcGFnZTsgd2UgY2hlY2sgdGhhdCBhIGdpdmVuIG1hbiBwYWdlIG5hbWUKLSsgICAgIyBoYXNuJ3QgYWxyZWFkeSBiZWVuIGRpc3BsYXllZAotKyAgICBCQVo9IiIKLSsgICAgZm9yIGQgaW4gJERJUl9MSVNUCi0gICAgIGRvCi0gICAgICAgICBpZiBbIC1mICRkL3doYXRpcyBdCi0gICAgICAgICB0aGVuCi0tICAgICAgICAgICAgaWYgZ3JlcCAtIiRncmVwb3B0MSIgIiRncmVwb3B0MiIiJDEiICRkL3doYXRpcwotKyAgICAgICAgICAgIGlmIEZPTz1gZ3JlcCAtIiRncmVwb3B0MSIgIiRncmVwb3B0MiIiJDEiICRkL3doYXRpc2AKLSAgICAgICAgICAgICB0aGVuCi0tICAgICAgICAgICAgICAgIGZvdW5kPTEKLSsgICAgICAgICAgICAgICAgIyB0aGUgTENfQUxMPUMgaXMgbmVlZGVkIGluIGNhc2UgdGhlIHRleHQgaXMKLSsgICAgICAgICAgICAgICAgIyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZyB0aGFuIHRoZSBsb2NhbGUKLSsgICAgICAgICAgICAgICAgQkFSPWBlY2hvIC1lICIkRk9PIiB8IExDX0FMTD1DIHNlZCAncy8gLSAuKiQvLycgfCB0ciAnIFtdJyAnXycgfCBzb3J0IC11YAotKyAgICAgICAgICAgICAgICBmb3IgaSBpbiAkQkFSCi0rICAgICAgICAgICAgICAgIGRvCi0rICAgICAgICAgICAgICAgICAgICBpZiAhIGVjaG8gIiRCQVoiIHwgZ3JlcCAiJGkiID4gL2Rldi9udWxsCi0rICAgICAgICAgICAgICAgICAgICB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgQkFaPSIkQkFaICRpIgotKyAgICAgICAgICAgICAgICAgICAgICAgIGk9Il5gZWNobyAkaSB8IHNlZCAnczpfXCs6XFxcKFxbXyBcXVxcXHxcXFxbXFxcfFxcXF1cXFwpXFxcKzpnJ2AiCi0rICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAtZSAiJEZPTyIgfCBncmVwICIkaSIKLSsgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZD0xCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICBkb25lCi0gIyBTb21lIHBlb3BsZSBhcmUgc2F0aXNmaWVkIHdpdGggYSBzaW5nbGUgb2NjdXJyZW5jZQotICMgQnV0IGl0IGlzIGJldHRlciB0byBnaXZlIGFsbAotICMgICAgICAgICAgICAgICBicmVhawotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL3NyYy9tYWtld2hhdGlzLnNoIG1hbi0xLjZlL3NyYy9tYWtld2hhdGlzLnNoCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFrZXdoYXRpcy5zaAkyMDA3LTA1LTE4IDEzOjQ5OjMxLjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL3NyYy9tYWtld2hhdGlzLnNoCTIwMDctMDUtMTggMTM6NTA6MDcuMDAwMDAwMDAwIC0wMzAwCi1AQCAtNDEsMTIgKzQxLDMyIEBACi0gCi0gcHJvZ3JhbT1gYmFzZW5hbWUgJDBgCi0gCi0rIyB0aGlzIGFsbG93cyB0byBkZWZpbmUgbGFuZ3VhZ2Ugc3BlY2lmaWMgdmFsdWVzIGZybyBOQU1FLCBERVNDUklQVElPTgotKyMgaWYgbm90IGRlZmluZWQsIHVzaW5nIHRob3NlIGRlZmF1bHQgdmFsdWVzCi0raWYgWyAteiAiJE1BTl9OQU1FIiBdCi0rdGhlbgotKwlNQU5fTkFNRT0i0JjQnNCVfE5PTXxKTcOJTk98TkFWTnzOn86dzp/OnM6RfE5PTUJSRXxOSU1FfElaRU5BfE5JTUl8SU1FfFwKLStOw4lWfE5PTUV85ZCN5YmNfOydtOumhHxOQUFNfE5BWldBfE5VTUV80JjQnNCvfE1FTk980J3QkNCX0JLQkHzlkI3np7B85ZCN56ixIgotK2ZpCi0raWYgWyAteiAiJE1BTl9ERVNDUklQVElPTiIgXQotK3RoZW4KLSsJTUFOX0RFU0NSSVBUSU9OPSLQntCf0JjQodCQ0J3QmNCVfERFU0NSSVBDScOTfFBPUElTfEJFU0tSSVZFTFNFfEJFU0NIUkVJQlVOR3xcCi0rzqDOlc6hzpnOk86hzpHOps6XfERFU0NSSVBDScOTTnxLSVJKRUxEVVN8QVpBTFBFTkF8S1VWQVVTfE9QSVN8TEXDjVLDgVN8REVTQ1JJWklPTkV8XAotK+iqrOaYjnzshKTrqoV8QkVTQ0hSSUpWSU5HfERFU0NSScOHw4NPfERFU0NSSUVSRXzQntCf0JjQoXzmj4/ov7AiCi0rZmkKLSsjIG1ha2UgdGhlbSBpbnRvIGF3ayByZWdleHAKLStNQU5fTkFNRT0iXigke01BTl9OQU1FfSkiOwotK01BTl9ERVNDUklQVElPTj0iXigke01BTl9ERVNDUklQVElPTn0pIjsKLSsKLSAjIEluIGNhc2UgYm90aCAvdXNyL21hbiBhbmQgL3Vzci9zaGFyZS9tYW4gZXhpc3QsIHRoZSBmb3JtZXIgaXMgbG9jYWwKLSAjIGFuZCBzaG91bGQgYmUgZmlyc3QuCi0gIyBJdCBpcyBhIGJ1ZyB0byBhZGQgL3Zhci9jYWNoZS9tYW4gdG8gREVGQ0FUUEFUSC4KLSBkbT0KLSBmb3IgZCBpbiAvdXNyL3NoYXJlL21hbiAvdXNyL21hbiAvdXNyL1gxMVI2L21hbiAvdXNyL2xvY2FsL21hbgotIGRvCi0rICAgIGlmIFsgLW4gIiRMQU5HIiAtYSAtZCAiJGQvJExBTkciIF07IHRoZW4KLSsJaWYgWyB4JGRtID0geCBdOyB0aGVuIGRtPSIkZC8kTEFORyI7IGVsc2UgZG09JGRtOiIkZC8kTEFORyI7IGZpCi0rICAgIGZpCi0gICAgIGlmIFsgLWQgJGQgXTsgdGhlbgotIAlpZiBbIHgkZG0gPSB4IF07IHRoZW4gZG09JGQ7IGVsc2UgZG09JGRtOiRkOyBmaQotICAgICBmaQotQEAgLTU1LDYgKzc1LDkgQEAKLSBkYz0KLSBmb3IgZCBpbiAvdmFyL2NhY2hlL21hbiAvdXNyL3NoYXJlL21hbi9wcmVmb3JtYXQgL3Vzci9tYW4vcHJlZm9ybWF0IC91c3Ivc2hhcmUvbWFuIC91c3IvbWFuCi0gZG8KLSsgICAgaWYgWyAtbiAiJExBTkciIC1hIC1kICIkZC8kTEFORyIgXTsgdGhlbgotKwlpZiBbIHgkZGMgPSB4IF07IHRoZW4gZG09IiRkLyRMQU5HIjsgZWxzZSBkbT0kZGM6IiRkLyRMQU5HIjsgZmkKLSsgICAgZmkKLSAgICAgaWYgWyAtZCAkZCBdOyB0aGVuCi0gCWlmIFsgeCRkYyA9IHggXTsgdGhlbiBkYz0kZDsgZWxzZSBkYz0kZGM6JGQ7IGZpCi0gICAgIGZpCi1AQCAtMTk0LDcgKzIxNyw3IEBACi0gCSAgICBzZWN0aW9uPSRpCi0gCSAgICBjdXJkaXI9JG1hbmRpci8ke3BhZ2VzfSRpCi0gCSAgICBleHBvcnQgc2VjdGlvbiB2ZXJib3NlIGN1cmRpcgotLQkgICAgZmluZCAkbWFuZGlyLyR7cGFnZXN9JGkvLiAtbmFtZSAnKicgJGZpbmRhcmcwICRmaW5kYXJnIC1wcmludCB8ICRBV0sgJwotKwkgICAgZmluZCAkbWFuZGlyLyR7cGFnZXN9JGkvLiAtbmFtZSAnKicgJGZpbmRhcmcwICRmaW5kYXJnIC1wcmludCB8IExDX0FMTD1DICRBV0sgLXYgTUFOX05BTUU9IiRNQU5fTkFNRSIgLXYgTUFOX0RFU0NSSVBUSU9OPSIkTUFOX0RFU0NSSVBUSU9OIiAnCi0gCi0gCSAgICBmdW5jdGlvbiByZWFkbGluZSgpIHsKLSAJICAgICAgaWYgKHVzZV96Y2F0IHx8IHVzZV9iemNhdCkgewotQEAgLTI2MSwxMyArMjg0LDcgQEAKLSAJCWdzdWIoLy5cYi8sICIiKTsKLSAJCWlmICgoJDEgfiAvXlwuW1NzXVtIaF0vICYmCi0gCQkgICgkMiB+IC9bTm5dW0FhXVtNbV1bRWVdLyB8fAotLQkJICAgJDIgfiAvXkpNyU5PLyB8fCAkMiB+IC9eTkFWTi8gfHwgJDIgfiAvXk5VTUUvIHx8Ci0tCQkgICAkMiB+IC9eQkVaRUlDSE5VTkcvIHx8ICQyIH4gL15OT01CUkUvIHx8Ci0tCQkgICAkMiB+IC9eTklNSS8gfHwgJDIgfiAvXk5PTS8gfHwgJDIgfiAvXklNRS8gfHwKLS0JCSAgICQyIH4gL15OW8lFXVYvIHx8ICQyIH4gL15OQU1BLyB8fCAkMiB+IC9ezL7BsC8gfHwKLS0JCSAgICQyIH4gL17Mvr7OLyB8fCAkMiB+IC9ewMy4py8gfHwgJDIgfiAvXk5BWldBLyB8fAotLQkJICAgJDIgfiAvXu7h+vfh7unlLyB8fCAkMiB+IC9ew/uzxi8gfHwgJDIgfiAvXqZXutkvIHx8Ci0tCQkgICAkMiB+IC9eTk9NRS8gfHwgJDIgfiAvXk5BQU0vIHx8ICQyIH4gL17IzMUvKSkgfHwKLSsJCSAgICQyIH4gTUFOX05BTUUgKSkgfHwKLSAJCSAgKHBhZ2VzID09ICJjYXQiICYmICQxIH4gL15OQU1FLykpIHsKLSAJCSAgICBpZiAoIWluc2gpIHsKLSAJCSAgICAgIGluc2ggPSAxOwotQEAgLTI3OCw2ICsyOTUsNyBAQAotIAkJICBpZiAoJDEgfiAvXlwuW1NzXVtIaFlTXS8gfHwKLSAJCSAgICAocGFnZXMgPT0gImNhdCIgJiYKLSAJCSAgICAoJDEgfiAvXlNbeVllRV0vIHx8ICQxIH4gL15ERVNDUklQVElPTi8gfHwKLSsJCSAgICAgJDEgfiBNQU5fREVTQ1JJUFRJT04gfHwKLSAJCSAgICAgJDEgfiAvXkNPTU1BTkQvIHx8ICQxIH4gL15PVkVSVklFVy8gfHwKLSAJCSAgICAgJDEgfiAvXlNUUlVDVFVSRVMvIHx8ICQxIH4gL15JTlRST0RVQ1RJT04vIHx8Ci0gCQkgICAgICQwIH4gL15bXiBdLykpKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtbWFuZGlycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1tYW5kaXJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjQwMDY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1tYW5kaXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFuLmNvbmYuaW4JMjAwNS0wOC0yMCAyMDoyNjowNi4wMDAwMDAwMDAgLTAzMDAKLSsrKyBtYW4tMS42ZS9zcmMvbWFuLmNvbmYuaW4JMjAwNy0wNS0xOCAxMDozMDoyOS4wMDAwMDAwMDAgLTAzMDAKLUBAIC0zNiwxMSArMzYsMTIgQEAKLSAjCi0gIyBFdmVyeSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBNQU5QQVRIIGluY2x1ZGVzIHRoZXNlIGZpZWxkcwotICMKLS1NQU5QQVRICS91c3IvbWFuCi0gTUFOUEFUSAkvdXNyL3NoYXJlL21hbgotK01BTlBBVEgJL3Vzci9YMTFSNi9tYW4KLSBNQU5QQVRICS91c3IvbG9jYWwvbWFuCi0gTUFOUEFUSAkvdXNyL2xvY2FsL3NoYXJlL21hbgotLU1BTlBBVEgJL3Vzci9YMTFSNi9tYW4KLStNQU5QQVRICS91c3Iva2VyYmVyb3MvbWFuCi0rTUFOUEFUSAkvdXNyL21hbgotICMKLSAjIFVuY29tbWVudCBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIG9uZSBvZiB0aGVzZSBieSBkZWZhdWx0Ci0gIwotQEAgLTY3LDYgKzY4LDkgQEAKLSBNQU5QQVRIX01BUAkvdXNyL1gxMVI2L2JpbgkJL3Vzci9YMTFSNi9tYW4KLSBNQU5QQVRIX01BUAkvdXNyL2Jpbi9YMTEJCS91c3IvWDExUjYvbWFuCi0gTUFOUEFUSF9NQVAJL3Vzci9iaW4vbWgJCS91c3Ivc2hhcmUvbWFuCi0rTUFOUEFUSF9NQVAJL3Vzci9rZXJiZXJvcy9iaW4JCS91c3Iva2VyYmVyb3MvbWFuCi0rTUFOUEFUSF9NQVAJL3Vzci9rZXJiZXJvcy9zYmluCQkvdXNyL2tlcmJlcm9zL21hbgotKwotICMKLSAjIE5PQVVUT1BBVEgga2VlcHMgbWFuIGZyb20gYXV0b21hdGljYWxseSBhZGRpbmcgZGlyZWN0b3JpZXMgdGhhdCBsb29rIGxpa2UKLSAjIG1hbnVhbCBwYWdlIGRpcmVjdG9yaWVzIHRvIHRoZSBwYXRoLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLW5ld19zZWN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1uZXdfc2VjdGlvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiOTc3M2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLW5ld19zZWN0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjZlLm9yaWcvY29uZmlndXJlCTIwMDYtMDUtMDEgMTQ6NTY6MTQuMDAwMDAwMDAwIC0wMzAwCi0rKysgbWFuLTEuNmUvY29uZmlndXJlCTIwMDctMDUtMTggMTQ6MzU6NDMuMDAwMDAwMDAwIC0wMzAwCi1AQCAtOTYwLDcgKzk2MCw3IEBACi0gCi0gIyBXaGF0IHNlY3Rpb25zIGRvIHdlIGFudGljaXBhdGU/Ci0gCi0tdG1wc2VjdGlvbnM9IjEgMXAgOCAyIDMgM3AgNCA1IDYgNyA5IDBwIHRjbCBuIGwgcCBvIgotK3RtcHNlY3Rpb25zPSIxIDFwIDggMiAzIDNwIDNwbSA0IDUgNiA3IDkgMHAgdGNsIG4gbCBwIG8iCi0gCi0gaWYgWyB4JGRlZmF1bHQgPSB4IF07IHRoZW4KLSAgIGVjaG8gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1yb191c3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtcm9fdXNyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDFjYjBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1yb191c3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLUluZGV4OiBtYW4tMS42Zi9zcmMvbWFrZXdoYXRpcy5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1hbi0xLjZmLm9yaWcvc3JjL21ha2V3aGF0aXMuc2gJMjAxMC0xMi0yOSAxMzo0MjozNC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBtYW4tMS42Zi9zcmMvbWFrZXdoYXRpcy5zaAkyMDEwLTEyLTI5IDEzOjQyOjM1LjY2NzQyODM0NyAtMDgwMAotQEAgLTEyNCw3ICsxMjQsNyBAQAotIAljb250aW51ZTs7Ci0gICAgIC1zKSBzZXRzZWN0aW9ucz0xCi0gCWNvbnRpbnVlOzsKLS0gICAgLXUpIGZpbmRhcmc9Ii1jdGltZSAwIgotKyAgICAtdSkgZmluZGFyZz0iLW5ld2VyIC92YXIvY2FjaGUvbWFuL3doYXRpcyIKLSAJdXBkYXRlPTEKLSAJY29udGludWU7OwotICAgICAtdikgdmVyYm9zZT0xCi1AQCAtMTY1LDE0ICsxNjUsNyBAQAotICMgZmlyc3QgdHJ1bmNhdGUgYWxsIHRoZSB3aGF0aXMgZmlsZXMgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgbmV3LAotICMgdGhlbiBvbmx5IHVwZGF0ZSAtIHdlIG1pZ2h0IHZpc2l0IHRoZSBzYW1lIGRpcmVjdG9yeSB0d2ljZQotIGlmIFsgeCR1cGRhdGUgPSB4IF07IHRoZW4KLS0gICBmb3IgcGFnZXMgaW4gbWFuIGNhdAotLSAgIGRvCi0tICAgICAgZXZhbCBwYXRoPSJcJCRwYWdlcyJwYXRoCi0tICAgICAgZm9yIG1hbmRpciBpbiAkcGF0aAotLSAgICAgIGRvCi0tCSBjcCAvZGV2L251bGwgJG1hbmRpci93aGF0aXMKLS0gICAgICBkb25lCi0tICAgZG9uZQotKyAgIGNwIC9kZXYvbnVsbCAvdmFyL2NhY2hlL21hbi93aGF0aXMKLSBmaQotIAotIGZvciBwYWdlcyBpbiBtYW4gY2F0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtc2VjdXJpdHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtc2VjdXJpdHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMmE4ODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXNlY3VyaXR5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi1kaWZmIC1OYXVyIG1hbi0xLjZlLm9yaWcvc3JjL21ha2V3aGF0aXMuc2ggbWFuLTEuNmUvc3JjL21ha2V3aGF0aXMuc2gKLS0tLSBtYW4tMS42ZS5vcmlnL3NyYy9tYWtld2hhdGlzLnNoCTIwMDYtMDctMTkgMDE6NTg6MDguMDAwMDAwMDAwIC0wMzAwCi0rKysgbWFuLTEuNmUvc3JjL21ha2V3aGF0aXMuc2gJMjAwNy0wNS0xOCAxMDoxODozMS4wMDAwMDAwMDAgLTAzMDAKLUBAIC00NSw3ICs0NSw3IEBACi0gIyBhbmQgc2hvdWxkIGJlIGZpcnN0LgotICMgSXQgaXMgYSBidWcgdG8gYWRkIC92YXIvY2FjaGUvbWFuIHRvIERFRkNBVFBBVEguCi0gZG09Ci0tZm9yIGQgaW4gL3Vzci9tYW4gL3Vzci9zaGFyZS9tYW4gL3Vzci9YMTFSNi9tYW4gL3Vzci9sb2NhbC9tYW4KLStmb3IgZCBpbiAvdXNyL3NoYXJlL21hbiAvdXNyL21hbiAvdXNyL1gxMVI2L21hbiAvdXNyL2xvY2FsL21hbgotIGRvCi0gICAgIGlmIFsgLWQgJGQgXTsgdGhlbgotIAlpZiBbIHgkZG0gPSB4IF07IHRoZW4gZG09JGQ7IGVsc2UgZG09JGRtOiRkOyBmaQotQEAgLTUzLDcgKzUzLDcgQEAKLSBkb25lCi0gREVGTUFOUEFUSD0kZG0KLSBkYz0KLS1mb3IgZCBpbiAvdXNyL21hbi9wcmVmb3JtYXQgL3Vzci9tYW4gL3Vzci9zaGFyZS9tYW4vcHJlZm9ybWF0IC91c3Ivc2hhcmUvbWFuCi0rZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gL3Vzci9zaGFyZS9tYW4vcHJlZm9ybWF0IC91c3IvbWFuL3ByZWZvcm1hdCAvdXNyL3NoYXJlL21hbiAvdXNyL21hbgotIGRvCi0gICAgIGlmIFsgLWQgJGQgXTsgdGhlbgotIAlpZiBbIHgkZGMgPSB4IF07IHRoZW4gZGM9JGQ7IGVsc2UgZGM9JGRjOiRkOyBmaQotQEAgLTc2LDEyICs3NiwxMiBAQAotICMgV2UgdHJ5IGhlcmUgdG8gYmUgY2FyZWZ1bCAoYW5kIGF2b2lkIHByZWNvbnN0cnVjdGVkIHN5bWxpbmtzKQotICMgaW4gY2FzZSBtYWtld2hhdGlzIGlzIHJ1biBhcyByb290LCBieSBjcmVhdGluZyBhIHN1YmRpcmVjdG9yeSBvZiAvdG1wLgotIAotLVRNUEZJTEVESVI9L3RtcC93aGF0aXMudG1wLmRpci4kJAotLXJtIC1yZiAkVE1QRklMRURJUgotLWlmICEgbWtkaXIgLW0gMDcwMCAkVE1QRklMRURJUjsgdGhlbgotLSAgICBlY2hvIENvdWxkIG5vdCBjcmVhdGUgJFRNUEZJTEVESVIKLS0gICAgZXhpdCAxOwotK1RNUEZJTEVESVI9YG1rdGVtcCAtZCAvdG1wL21ha2V3aGF0aXNYWFhYWFhgCi0raWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0rICAgZWNobyAiJDA6IENhbid0IGNyZWF0ZSB0ZW1wIGZpbGUsIGV4aXRpbmcuLi4iCi0rICAgZXhpdCAxCi0gZmkKLStjaG1vZCAwNzAwICRUTVBGSUxFRElSCi0gVE1QRklMRT0kVE1QRklMRURJUi93Ci0gCi0gIyBtYWtlIHN1cmUgVE1QRklMRURJUiBpcyBkZWxldGVkIGlmIHByb2dyYW0gaXMga2lsbGVkIG9yIHRlcm1pbmF0ZXMKLWRpZmYgLU5hdXIgbWFuLTEuNmUub3JpZy9zcmMvbWFuLmMgbWFuLTEuNmUvc3JjL21hbi5jCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFuLmMJMjAwNi0wNS0wMSAxNzozNDoyMi4wMDAwMDAwMDAgLTAzMDAKLSsrKyBtYW4tMS42ZS9zcmMvbWFuLmMJMjAwNy0wNS0xOCAxMDoxMTozMy4wMDAwMDAwMDAgLTAzMDAKLUBAIC0xMjM0LDcgKzEyMzQsNiBAQAotICNlbmRpZgotIAotIAotLSNpZiAwCi0gICAgICB7Ci0gCS8qIFRoZXJlIGFyZSBubyBrbm93biBjYXNlcyBvZiBidWZmZXIgb3ZlcmZsb3cgY2F1c2VkIGJ5Ci0gCSAgIGV4Y2Vzc2l2ZWx5IGxvbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBJbiBjYXNlIHlvdSBmaW5kIG9uZSwKLUBAIC0xMjU3LDcgKzEyNTYsNiBAQAotIAkgICBNQU5fSUNPTlZfUEFUSCwgTUFOX0lDT05WX09QVCwgTUFOX0lDT05WX0lOUFVUX0NIQVJTRVQsCi0gCSAgIE1BTl9JQ09OVl9PVVRQVVRfQ0hBUlNFVCwgTkxTUEFUSCwgUEFUSCAqLwotICAgICAgfQotLSNlbmRpZgotIAotIAotICNpZm5kZWYgX19GcmVlQlNEX18gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtdXNlX2kxOG5fdmFyc19pbl9hX3N0ZF93YXkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtdXNlX2kxOG5fdmFyc19pbl9hX3N0ZF93YXkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2OGY3NDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXVzZV9pMThuX3ZhcnNfaW5fYV9zdGRfd2F5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL2NhdG9wZW4vY2F0b3Blbi5jIG1hbi0xLjZlL2NhdG9wZW4vY2F0b3Blbi5jCi0tLS0gbWFuLTEuNmUub3JpZy9jYXRvcGVuL2NhdG9wZW4uYwkyMDA1LTA4LTIwIDIwOjI2OjA2LjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL2NhdG9wZW4vY2F0b3Blbi5jCTIwMDctMDUtMTggMTE6MzE6MDUuMDAwMDAwMDAwIC0wMzAwCi1AQCAtOSwyMiArOSw2MyBAQAotIGV4dGVybiBjaGFyICppbmRleCAoY29uc3QgY2hhciAqLCBpbnQpOyAgICAgICAgIC8qIG5vdCBhbHdheXMgaW4gPHN0cmluZy5oPiAqLwotIGV4dGVybiBjaGFyICpteV9tYWxsb2MoaW50KTsJLyogaW4gdXRpbC5jICovCi0gCi0rLyogaWYgdGhlIHByb2dyYW0gaGFzIHNnaWQvc3VpZCBwcml2aWxlZ2VzIHRoZW4gZ2V0ZW52IGRvZXNuJ3QgcmV0dXJuCi0rICogTkxTUEFUSDsgc28gd2Ugc2V0IGhlcmUgYSBnb29kIGRlZmF1bHQgdmFsdWUuCi0rICovCi0gI2lmbmRlZiBERUZBVUxUX05MU1BBVEgKLSAjIGlmIF9fR0xJQkNfXyA+PSAyCi0tIyAgZGVmaW5lIERFRkFVTFRfTkxTUEFUSCAiL3Vzci9zaGFyZS9sb2NhbGUvJUwvJU4iCi0rIyAgZGVmaW5lIERFRkFVTFRfTkxTUEFUSCAiL3Vzci9zaGFyZS9sb2NhbGUvJUwvJU46L3Vzci9zaGFyZS9sb2NhbGUvJWxfJXQvJU46L3Vzci9zaGFyZS9sb2NhbGUvJWwvJU4iCi0gIyBlbHNlCi0gIyAgZGVmaW5lIERFRkFVTFRfTkxTUEFUSCAiL3Vzci9saWIvbG9jYWxlLyVOLyVMIgotICMgZW5kaWYKLSAjZW5kaWYKLSAKLS1zdGF0aWMgbmxfY2F0ZCBteV9jYXRvcGVucGF0aChjaGFyICpuYW1lLCBjaGFyICpwYXRoKTsKLStzdGF0aWMgbmxfY2F0ZCBteV9jYXRvcGVucGF0aChjaGFyICpuYW1lLCBjaGFyICpwYXRoLCBjaGFyICpsYW5nKTsKLSAKLSBzdGF0aWMJCQkJLyogdGhpcyBzb3VyY2UgaW5jbHVkZWQgaW4gZ3JpcGVzLmMgKi8KLSBubF9jYXRkCi0gbXlfY2F0b3BlbihjaGFyICpuYW1lLCBpbnQgb2ZsYWcpIHsKLS0gIG5sX2NhdGQgZmQ7Ci0rICBubF9jYXRkIGZkID0gKG5sX2NhdGQpIC0xOwotKwotKyAgLyogdXNpbmcgZmlyc3QgdGhlIG15X2NhdG9wZW5wYXRoLCB3aGljaCBsb29rcyB3aXRoIExBTkdVQUdFCi0rICAgKiBhbmQgb25seSBpZiBpdCBmYWlscyByZXNzb3J0IHRvIGNhdG9wZW4sIGl0IGdpdmVzIGJldHRlciBpMThuCi0rICAgKi8KLSsgIHsKLSsgICAgY2hhciAqbmxzcGF0aCwgKmxhbmcsICpzOwotIAotLSAgZmQgPSBjYXRvcGVuKG5hbWUsIG9mbGFnKTsKLSsgICAgLyoKLSsgICAgICogIklmIE5MU1BBVEggZG9lcyBub3QgZXhpc3QgaW4gdGhlIGVudmlyb25tZW50LCBvciBpZiBhCi0rICAgICAqIG1lc3NhZ2UgY2F0YWxvZyBjYW5ub3QgYmUgb3BlbmVkIGluIGFueSBvZiB0aGUgcGF0aHMgc3BlY2lmaWVkCi0rICAgICAqIGJ5IE5MU1BBVEgsIHRoZW4gYW4gaW1wbGVtZW50YXRpb24gZGVmaW5lZCBkZWZhdWx0IHBhdGggaXMgdXNlZCIKLSsgICAgICovCi0rICAgIG5sc3BhdGggPSBnZXRlbnYoIk5MU1BBVEgiKTsKLSsgICAgaWYgKCFubHNwYXRoKQotKyAgICAgIG5sc3BhdGggPSBERUZBVUxUX05MU1BBVEg7Ci0rIAotKyAgICBsYW5nID0gZ2V0ZW52KCJMQU5HVUFHRSIpOwotKyAgICBpZiAoIWxhbmcpCi0rICAgICAgbGFuZyA9IGdldGVudigiTENfQUxMIik7Ci0rICAgIGlmICghbGFuZykKLSsgICAgICBsYW5nID0gZ2V0ZW52KCJMQ19NRVNTQUdFUyIpOwotKyAgICBpZiAoIWxhbmcpCi0rICAgICAgbGFuZyA9IGdldGVudigiTEFORyIpOwotKyAgICBpZiAoIWxhbmcpCi0rICAgICAgbGFuZyA9ICIiOwotKyAKLSsgICAgd2hpbGUoKmxhbmcgJiYgKGZkID09IChubF9jYXRkKSAtMSkpIHsKLSsgICAgICBzID0gaW5kZXgobGFuZywgJzonKTsKLSsgICAgICBpZiAocykgKnMgPSAwOwotKyAgICAgICAgZmQgPSBteV9jYXRvcGVucGF0aChuYW1lLCBubHNwYXRoLCBsYW5nKTsKLSsgICAgICBpZiAocykgbGFuZz1zKzE7Ci0rICAgICAgZWxzZSBsYW5nID0gIiI7Ci0rICAgIH0KLSsgICAgaWYgKGZkID09IChubF9jYXRkKSAtMSkKLSsgICAgICBmZCA9IG15X2NhdG9wZW5wYXRoKG5hbWUsIG5sc3BhdGgsICJlbiIpOwotKyAgfQotKwotKyAgLyogc3RpbGwgbm90IGZvdW5kLCB1c2UgdGhlIHN5c3RlbSBjYXRvcGVuICovCi0rICBpZiAoZmQgPT0gKG5sX2NhdGQpIC0xKQotKyAgICBmZCA9IGNhdG9wZW4obmFtZSwgb2ZsYWcpOwotIAotICAgaWYgKGZkID09IChubF9jYXRkKSAtMSAmJiBvZmxhZykgewotICAgICBvZmxhZyA9IDA7Ci1AQCAtMzIsOCArNzMsNiBAQAotICAgfQotIAotICAgaWYgKGZkID09IChubF9jYXRkKSAtMSkgewotLSAgICBjaGFyICpubHNwYXRoOwotLQotICAgICAvKiBUaGUgbGliYyBjYXRvcGVuIGZhaWxzIC0gbGV0IHVzIHNlZSBpZiB3ZSBjYW4gZG8gYmV0dGVyICovCi0gICAgIC8qIFRoZSBxdW90ZXMgYmVsb3cgYXJlIGZyb20gWC9PcGVuLCBYUEcgMTk4NywgVm9sLiAzLiAqLwotIAotQEAgLTU4LDE3ICs5Nyw2IEBACi0gI2VuZGlmCi0gICAgIH0KLSAKLS0gICAgLyoKLS0gICAgICogIklmIE5MU1BBVEggZG9lcyBub3QgZXhpc3QgaW4gdGhlIGVudmlyb25tZW50LCBvciBpZiBhCi0tICAgICAqIG1lc3NhZ2UgY2F0YWxvZyBjYW5ub3QgYmUgb3BlbmVkIGluIGFueSBvZiB0aGUgcGF0aHMgc3BlY2lmaWVkCi0tICAgICAqIGJ5IE5MU1BBVEgsIHRoZW4gYW4gaW1wbGVtZW50YXRpb24gZGVmaW5lZCBkZWZhdWx0IHBhdGggaXMgdXNlZCIKLS0gICAgICovCi0tCi0tICAgIG5sc3BhdGggPSBnZXRlbnYoIk5MU1BBVEgiKTsKLS0gICAgaWYgKG5sc3BhdGgpCi0tICAgICAgZmQgPSBteV9jYXRvcGVucGF0aChuYW1lLCBubHNwYXRoKTsKLS0gICAgaWYgKGZkID09IChubF9jYXRkKSAtMSkKLS0gICAgICBmZCA9IG15X2NhdG9wZW5wYXRoKG5hbWUsIERFRkFVTFRfTkxTUEFUSCk7Ci0gICB9Ci0gICByZXR1cm4gZmQ7Ci0gfQotQEAgLTkwLDE1ICsxMTgsMTMgQEAKLSAgKgotICAqLwotIHN0YXRpYyBubF9jYXRkCi0tbXlfY2F0b3BlbnBhdGgoY2hhciAqbmFtZSwgY2hhciAqbmxzcGF0aCkgewotLSAgaW50IGZkOwotK215X2NhdG9wZW5wYXRoKGNoYXIgKm5hbWUsIGNoYXIgKm5sc3BhdGgsIGNoYXIgKmxhbmcpIHsKLSAgIG5sX2NhdGQgY2ZkID0gKG5sX2NhdGQpIC0xOwotLSAgY2hhciAqcGF0aDAsICpwYXRoLCAqcywgKmZpbGUsICpsYW5nLCAqbGFuZ19sLCAqbGFuZ190LCAqbGFuZ19jOwotKyAgY2hhciAqcGF0aDAsICpwYXRoLCAqcywgKmZpbGUsICpsYW5nX2wsICpsYW5nX3QsICpsYW5nX2M7Ci0gICBpbnQgbGFuZ3N6LCBuYW1lc3osIHN6LCBsYW5nX2xfc3osIGxhbmdfdF9zeiwgbGFuZ19jX3N6OwotIAotICAgbmFtZXN6ID0gc3RybGVuKG5hbWUpOwotIAotLSAgbGFuZyA9IGdldGVudigiTEFORyIpOwotICAgaWYgKCFsYW5nKQotICAgICBsYW5nID0gIiI7Ci0gICBsYW5nc3ogPSBzdHJsZW4obGFuZyk7Ci1AQCAtMTk0LDE0ICsyMjAsOSBAQAotICAgICAgIHBhdGggPSBzKzE7Ci0gICAgIH0gZWxzZQotICAgICAgIHBhdGggPSAwOwotLSAgICBmZCA9IG9wZW4oZmlsZSwgT19SRE9OTFkpOwotLSAgICBpZiAoZmQgIT0gLTEpIHsKLS0gICAgICAvKiB3ZSBmb3VuZCB0aGUgcmlnaHQgY2F0YWxvZyAtIGJ1dCB3ZSBkb24ndCBrbm93IHRoZQotLQkgdHlwZSBvZiBubF9jYXRkLCBzbyBjbG9zZSBpdCBhZ2FpbiBhbmQgYXNrIGxpYmMgKi8KLS0gICAgICBjbG9zZShmZCk7Ci0tICAgICAgY2ZkID0gY2F0b3BlbihmaWxlLCAwKTsKLS0gICAgICBicmVhazsKLS0gICAgfQotKwljZmQgPSBjYXRvcGVuKGZpbGUsIDApOwotKwlpZiAoY2ZkICE9IChubF9jYXRkKSAtMSkKLSsJCQlicmVhazsKLSAgIH0KLSAKLSAgIGZyZWUocGF0aDApOwotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL3NyYy9tYW5wYXRoLmMgbWFuLTEuNmUvc3JjL21hbnBhdGguYwotLS0tIG1hbi0xLjZlLm9yaWcvc3JjL21hbnBhdGguYwkyMDA2LTA4LTAzIDE4OjE4OjMzLjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL3NyYy9tYW5wYXRoLmMJMjAwNy0wNS0xOCAxMTowMjo0OC4wMDAwMDAwMDAgLTAzMDAKLUBAIC0yODIsMTMgKzI4MiwxNCBAQAotIAkJLyogV2UgY2Fubm90IHVzZSAibGFuZyA9IHNldGxvY2FsZShMQ19NRVNTQUdFUywgTlVMTCkiIG9yIHNvOgotIAkJICAgdGhlIHJldHVybiB2YWx1ZSBvZiBzZXRsb2NhbGUgaXMgYW4gb3BhcXVlIHN0cmluZy4gKi8KLSAJCS8qIFBPU0lYIHByZXNjcmliZXMgdGhlIG9yZGVyOiBMQ19BTEwsIExDX01FU1NBR0VTLCBMQU5HICovCi0tCQlpZigobGFuZyA9IGdldGVudigiTENfQUxMIikpICE9IE5VTEwpCi0rCSAgICAgICAgLyogTEFOR1VBR0UgaXMgR05VL0xpbnV4IGFuZCBvdmVycnVsZXMgYWxsICovCi0rCQlpZigobGFuZyA9IGdldGVudigiTEFOR1VBR0UiKSkgIT0gTlVMTCkKLSAJCQlzcGxpdDIoZGlyLCBsYW5nLCBhZGRfdG9fbWFuZGlybGlzdF94LCBwZXJycyk7Ci0tCQlpZigobGFuZyA9IGdldGVudigiTENfTUVTU0FHRVMiKSkgIT0gTlVMTCkKLSsJCWVsc2UgaWYoKGxhbmcgPSBnZXRlbnYoIkxDX0FMTCIpKSAhPSBOVUxMKQotIAkJCXNwbGl0MihkaXIsIGxhbmcsIGFkZF90b19tYW5kaXJsaXN0X3gsIHBlcnJzKTsKLS0JCWlmKChsYW5nID0gZ2V0ZW52KCJMQU5HIikpICE9IE5VTEwpCi0rCQllbHNlIGlmKChsYW5nID0gZ2V0ZW52KCJMQ19NRVNTQUdFUyIpKSAhPSBOVUxMKQotIAkJCXNwbGl0MihkaXIsIGxhbmcsIGFkZF90b19tYW5kaXJsaXN0X3gsIHBlcnJzKTsKLS0JCWlmKChsYW5nID0gZ2V0ZW52KCJMQU5HVUFHRSIpKSAhPSBOVUxMKQotKwkJZWxzZSBpZigobGFuZyA9IGdldGVudigiTEFORyIpKSAhPSBOVUxMKQotIAkJCXNwbGl0MihkaXIsIGxhbmcsIGFkZF90b19tYW5kaXJsaXN0X3gsIHBlcnJzKTsKLSAJCWFkZF90b19tYW5kaXJsaXN0X3goZGlyLCAwLCBwZXJycyk7Ci0gCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS13aGF0aXMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXdoYXRpczIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjNGVkMzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXdoYXRpczIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLUluZGV4OiBtYW4tMS42Zi9zcmMvbWFrZXdoYXRpcy5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1hbi0xLjZmLm9yaWcvc3JjL21ha2V3aGF0aXMuc2gJMjAxMC0xMi0yOSAxMzo1MTo0NS4wMDAwMDAwMDAgLTA4MDAKLSsrKyBtYW4tMS42Zi9zcmMvbWFrZXdoYXRpcy5zaAkyMDEwLTEyLTI5IDEzOjU5OjM1LjM5OTc5OTQxMiAtMDgwMAotQEAgLTE2NCwxMCArMTY0LDE1IEBACi0gZmkKLSBjYXRwYXRoPWBlY2hvICR7Y2F0cGF0aH0gfCB0ciA6ICcgJ2AKLSAKLSsjV0hBVElTX0RJUj0kREVTVERJUi92YXIvY2FjaGUvbWFuL2BlY2hvICRoZXJlfHNlZCAtZSAncyEuKi9tYW4vISFnJ2AKLStXSEFUSVNfRElSPSRERVNURElSL3Zhci9jYWNoZS9tYW4vJExBTkcKLStbWyAtZCAkV0hBVElTX0RJUiBdXSB8fCBta2RpciAtcCAkV0hBVElTX0RJUi8KLSsKLSAjIGZpcnN0IHRydW5jYXRlIGFsbCB0aGUgd2hhdGlzIGZpbGVzIHRoYXQgd2lsbCBiZSBjcmVhdGVkIG5ldywKLSAjIHRoZW4gb25seSB1cGRhdGUgLSB3ZSBtaWdodCB2aXNpdCB0aGUgc2FtZSBkaXJlY3RvcnkgdHdpY2UKLSBpZiBbIHgkdXBkYXRlID0geCBdOyB0aGVuCi0tICAgY3AgL2Rldi9udWxsIC92YXIvY2FjaGUvbWFuL3doYXRpcwotKyAgIG1rZGlyIC1wICRXSEFUSVNfRElSLwotKyAgIC9iaW4vZWNobyAtbiA+ICRXSEFUSVNfRElSL3doYXRpcwotIGZpCi0gCi0gZm9yIHBhZ2VzIGluIG1hbiBjYXQKLUBAIC0xODAsMTMgKzE4NSw3IEBACi0gCWVjaG8gImFib3V0IHRvIGVudGVyICRtYW5kaXIiID4gL2Rldi9zdGRlcnIKLSAgICAgIGZpCi0gCi0tICAgICAjIGtsdWRnZSBmb3IgU2xhY2t3YXJlJ3MgL3Vzci9tYW4vcHJlZm9ybWF0Ci0tICAgICBpZiBbICRtYW5kaXIgPSAvdXNyL21hbi9wcmVmb3JtYXQgXQotLSAgICAgdGhlbgotLQltYW5kaXIxPS91c3IvbWFuCi0tICAgICBlbHNlCi0tCW1hbmRpcjE9JG1hbmRpcgotLSAgICAgZmkKLSsgICAgIG1hbmRpcjE9JFdIQVRJU19ESVIKLSAKLSAgICAgICMgaWYgJG1hbmRpciBpcyBvbiBhIHJlYWRvbmx5IHBhcnRpdGlvbiwgYW5kIHRoZSB3aGF0aXMgZmlsZQotICAgICAgIyBpcyBub3QgYSBzeW1saW5rLCB0aGVuIGxldCdzIHNraXAgdHJ5aW5nIHRvIHVwZGF0ZSBpdAotQEAgLTIwNywxMSArMjA2LDYgQEAKLSAJZmkKLSAgICAgIGZpCi0gCi0tICAgICBpZiBbIC1zICR7bWFuZGlyfS93aGF0aXMgLWEgJHBhZ2VzID0gbWFuIC1hIHgkdXBkYXRlID0geCBdOyB0aGVuCi0tCWlmIFsgeCR2ZXJib3NlICE9IHggXTsgdGhlbgotLQkgICBlY2hvIHNraXBwaW5nICRtYW5kaXIgLSB3ZSBkaWQgaXQgYWxyZWFkeSA+IC9kZXYvc3RkZXJyCi0tCWZpCi0tICAgICBlbHNlICAgICAgCi0gICAgICAgIGhlcmU9YHB3ZGAKLSAgICAgICAgY2QgJG1hbmRpcgotICAgICAgICBmb3IgaSBpbiAkc2VjdGlvbnMKLUBAIC00NDcsNyArNDQ3LDYgQEAKLQotICAgICAgICBjaG1vZCA2NDQgJHttYW5kaXIxfS93aGF0aXMKLSAgICAgICAgcm0gJFRNUEZJTEUKLS0gICAgIGZpCi0gICAgZG9uZQotIGRvbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1jb21waWxlLXdhcm5pbmdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLWNvbXBpbGUtd2FybmluZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MzFkMmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLWNvbXBpbGUtd2FybmluZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotRml4IGEgYnVpbGQgZXJyb3Igd2hlbiBidWlsZGluZyBtYW4uY29uZmlnLjUgKGEgcmVtbmFudCBvZiBhIGxvbmcKLWFnbyBwcmV2aW91cyBwYXRjaCkuIE9wdGltaXplZCB0aGUgbWFucGFnZXMgTWFrZWZpbGUgZm9yIHBhcmFsbGVsCi1idWlsZHMuIEFsc28sIGZpeCBjb21waWxlIHdhcm5pbmdzIGluIGEgY291cGxlIG90aGVyIGZpbGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQmlsbCBSYW5kbGUgPHdpbGxpYW0uYy5yYW5kbGVAaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNmcvbWFuL01ha2VmaWxlLmluLm9yaWcJMjAxNi0wMy0yOCAxNzozMTowOC43MjM5NDkxODAgLTA3MDAKLSsrKyBtYW4tMS42Zy9tYW4vTWFrZWZpbGUuaW4JMjAxNi0wMy0yOCAxNzo0NjoxMi44NjY5MTAzODYgLTA3MDAKLUBAIC01LDYgKzUsMTMgQEAKLSBBTEwgPSBtYW4uMSB3aGF0aXMuMSBhcHJvcG9zLjEgbWFuLmNvbmZpZy41Ci0gTUFZQkU4ID0gbWFrZXdoYXRpcwotIAotK1NVQkRJUlMgOj0gJChzaGVsbCBlY2hvIEBsYW5ndWFnZXNAKQotKwotKy5QSE9OWTogc3ViZGlycyAkKFNVQkRJUlMpCi0rCi0rbWFuLmNvbmZpZy5tYW46IG1hbi5jb25mLm1hbgotKwlAY3AgJDwgJEAKLSsKLSAuU1VGRklYRVM6IC5tYW4gLjEgLjUgLjgKLSAKLSAubWFuLjE6Ci1AQCAtMTksMTEgKzI2LDExIEBACi0gSU5TVEFMTCA9IEBJTlNUQUxMQCAtYyAtbSA2NDQKLSAKLSAjIFdoZXJlIHRvIHB1dCB0aGUgbWFudWFsIHBhZ2VzLgotLW1hbmRpciA9ICQoREVTVERJUikkKFBSRUZJWClAbWFuZGlyQCQoU0xBTkcpCi0rbWFuZGlyIDo9ICQoREVTVERJUikkKFBSRUZJWClAbWFuZGlyQCQoU0xBTkcpCi0gCi0gYWxsOgkkKEFMTCkKLSAJZm9yIGkgaW4gJChNQVlCRTgpOyBcCi0tCQlkbyBpZiB0ZXN0IC1mICQkaS5tYW47IHRoZW4gbWFrZSAtZiAuLi9NYWtlZmlsZSAkJGkuODsgZmk7IGRvbmUKLSsJCWRvIGlmIHRlc3QgLWYgJCRpLm1hbjsgdGhlbiAkKE1BS0UpIC1mIC4uL01ha2VmaWxlICQkaS44OyBmaTsgZG9uZQotIAotIGluc3RhbGw6ICQoQUxMKQotIAlta2RpciAtcCAkKG1hbmRpcikvbWFuMSAkKG1hbmRpcikvbWFuNSAkKG1hbmRpcikvbWFuOAotQEAgLTM4LDI0ICs0NSwyNyBAQAotIAlybSAtZiBjb3JlICouaW4gKi5AbWFuMWV4dEAgKi5AbWFuNWV4dEAgKi5AbWFuOGV4dEAgKn4KLSAKLSBzcG90bGVzczoKLSsJcm0gLWYgbWFuLmNvbmZpZy5tYW4KLSAKLSBzdWJkaXJzOgotLQlAZm9yIGkgaW4gQGxhbmd1YWdlc0A7IGRvIGlmIHRlc3QgLWQgJCRpOyB0aGVuIGVjaG87IFwKLS0JCWVjaG8gIj09PT0gTWFraW5nIHRoZSBgY2F0ICQkaS50eHRgIG1hbiBwYWdlcy4gPT09PSI7IFwKLS0JCWNkICQkaTsgbWFrZSAtZiAuLi9NYWtlZmlsZTsgY2QgLi47IFwKLS0JCWVsc2UgZWNobyAiPT09PSBObyAkJGkgbWFuIHBhZ2VzIGZvdW5kLiA9PT09IjsgZmk7IGRvbmUKLStzdWJkaXJzOiAkKFNVQkRJUlMpCi0rJChTVUJESVJTKToKLSsJaWYgdGVzdCAtZCAkQDsgdGhlbiBlY2hvOyBcCi0rCQllY2hvICI9PT09IE1ha2luZyB0aGUgYGNhdCAkQC50eHRgIG1hbiBwYWdlcy4gPT09PSI7IFwKLSsJCSQoTUFLRSkgLUMgJEAgLWYgLi4vTWFrZWZpbGUgYWxsOyBcCi0rCQllbHNlIGVjaG8gIj09PT0gTm8gJEAgbWFuIHBhZ2VzIGZvdW5kLiA9PT09IjsgZmkKLSAKLSBpbnN0YWxsc3ViZGlyczoKLSAJQGZvciBpIGluIEBsYW5ndWFnZXNAOyBkbyBpZiB0ZXN0IC1kICQkaTsgdGhlbiBlY2hvOyBcCi0gCQllY2hvICI9PT09IEluc3RhbGxpbmcgdGhlIGBjYXQgJCRpLnR4dGAgbWFuIHBhZ2VzLiA9PT09IjsgXAotIAkJY2QgJCRpOyBTTEFORz0vJCRpOyBpZiB0ZXN0ICQkU0xBTkcgPSAvZW47IHRoZW4gU0xBTkc9IDsgZmk7IFwKLS0JCWV4cG9ydCBTTEFORzsgbWFrZSAtZiAuLi9NYWtlZmlsZSBpbnN0YWxsOyBjZCAuLjsgXAotKwkJZXhwb3J0IFNMQU5HOyAkKE1BS0UpIC1mIC4uL01ha2VmaWxlIGluc3RhbGw7IGNkIC4uOyBcCi0gCQllbHNlIGVjaG8gIj09PT0gTm8gJCRpIG1hbiBwYWdlcyBmb3VuZC4gPT09PSI7IGZpOyBkb25lCi0gCi0gY2xlYW5zdWJkaXJzOgotLQlAZm9yIGkgaW4gPz87IGRvIGNkICQkaTsgbWFrZSAtZiAuLi9NYWtlZmlsZSBjbGVhbjsgY2QgLi47IGRvbmUKLSsJQGZvciBpIGluID8/OyBkbyAkKE1BS0UpIC1DICQkaSAtZiAuLi9NYWtlZmlsZSBjbGVhbjsgZG9uZQotIAlybSAtZiBjb3JlICp+Ci0gCi0gc3BvdGxlc3NzdWJkaXJzOgotLQlmb3IgaSBpbiA/PzsgZG8gY2QgJCRpOyBtYWtlIC1mIC4uL01ha2VmaWxlIHNwb3RsZXNzOyBjZCAuLjsgZG9uZQotKwlmb3IgaSBpbiA/PzsgZG8gJChNQUtFKSAtQyAkJGkgLWYgLi4vTWFrZWZpbGUgc3BvdGxlc3M7IGRvbmUKLSAJcm0gLWYgTWFrZWZpbGUKLQotLS0tIG1hbi0xLjZnL3NyYy9ncmlwZXMuYy5vcmlnCTIwMDYtMTEtMjEgMTE6NTM6NDQuMDAwMDAwMDAwIC0wODAwCi0rKysgbWFuLTEuNmcvc3JjL2dyaXBlcy5jCTIwMTYtMDMtMzAgMTY6MzI6MzEuNjAxMTAzNDg3IC0wNzAwCi1AQCAtNyw4ICs3LDYgQEAKLSAKLSBleHRlcm4gY2hhciAqbXNnW107Ci0gCi0tc3RhdGljIGNoYXIgKm1hbnRleHRzID0gIm1hbiI7CQkvKiBlLmcuIC91c3IvbGliL2xvY2FsZS8lTC9tYW4uY2F0ICovCi0tCi0gI2lmZGVmIE5PTkxTCi0gCi0gc3RhdGljIGNoYXIgKgotQEAgLTMwLDYgKzI4LDggQEAKLSAjaW5jbHVkZSA8bmxfdHlwZXMuaD4KLSAjaW5jbHVkZSAiLi4vY2F0b3Blbi9jYXRvcGVuLmMiCi0gCi0rc3RhdGljIGNoYXIgKm1hbnRleHRzID0gIm1hbiI7CQkvKiBlLmcuIC91c3IvbGliL2xvY2FsZS8lTC9tYW4uY2F0ICovCi0rCi0gbmxfY2F0ZCBjYXRmZCA9IChubF9jYXRkKSAtMTsKLSBpbnQgY2F0X2lzX29wZW4gPSAwOwotIAotLS0tIG1hbi0xLjZnL3NyYy9tYW5maWxlLmMub3JpZwkyMDA1LTA4LTIwIDE2OjI2OjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIG1hbi0xLjZnL3NyYy9tYW5maWxlLmMJMjAxNi0wMy0yOSAwOToxMDoyMS41Mjc4NDEyODUgLTA3MDAKLUBAIC0yOTksNyArMjk5LDcgQEAKLSAJY29uc3QgY2hhciAqKCgqdG9jYXQpKGNvbnN0IGNoYXIgKm1hbl9maWxlbmFtZSwgY29uc3QgY2hhciAqZXh0LAotIAkJCSAgICAgIGludCBmbGFncykpKSB7Ci0gICAgICBjaGFyICoqc2w7Ci0tICAgICBzdHJ1Y3QgbWFucGFnZSAqcmVzOwotKyAgICAgc3RydWN0IG1hbnBhZ2UgKnJlcyA9IDA7Ci0gCi0gICAgICBzdGFuZGFyZHMgPSAoZmxhZ3MgJiAoRkhTIHwgRlNTVE5EIHwgRE9fSFAgfCBET19JUklYKSk7Ci0gICAgICB0b19jYXRfZmlsZW5hbWUgPSB0b2NhdDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmctY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDZjYzk4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Vc2UgQlVJTERfQ0MgYW5kIHRhcmdldCBpbmNsdWRlIGZpbGVzIGZvciBjb25maWd1cmF0aW9uIHRlc3RzLgotSWYgY3Jvc3MtY29tcGlsaW5nLCBmb3JjZSBwYXRobmFtZXMgZm9yIGhlbHBlciBwcm9ncmFtcywgc2luY2UKLWF1dG9kaXNjb3ZlcnkgYnkgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd2lsbCBub3Qgd29yay4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEJpbGwgUmFuZGxlIDx3aWxsaWFtLmMucmFuZGxlIGF0IGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjZnL2NvbmZpZ3VyZS5vcmlnCTIwMTYtMDMtMjggMTc6NDY6MTIuNzM0OTEwOTc2IC0wNzAwCi0rKysgbWFuLTEuNmcvY29uZmlndXJlCTIwMTYtMDMtMzAgMjE6NDc6NDUuMTEwNTcyOTA4IC0wNzAwCi1AQCAtMjE2LDcgKzIxNiw4IEBACi0gSU5DTFVERURJUj0ke0lOQ0xVREVESVItL3Vzci9pbmNsdWRlfQotIAotIHJtIC1mIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMKLS1jb21waWxlPSIkQ0MgJERFRlMgY29uZnRlc3QuYyAtbyBjb25mdGVzdCAkTElCUyA+L2Rldi9udWxsIDI+JjEiCi0rIyBzaW5jZSB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0YXJnZXQgZmVhdHVyZSBzdXBwb3J0LCB1c2UgdGhhdCBzeXNyb290Ci0rY29tcGlsZT0iJEJVSUxEX0NDIC1pc3lzdGVtLyR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0vdXNyL2luY2x1ZGUgJERFRlMgY29uZnRlc3QuYyAtbyBjb25mdGVzdCAkTElCUyA+L2Rldi9udWxsIDI+JjEiCi0gCi0gIyBDaGVjayBmb3IgdmFyaW91cyBoZWFkZXIgZmlsZXMuCi0gCi1AQCAtNDU1LDE5ICs0NTYsMjMgQEAKLSAgICAgICBmaQotICAgICBkb25lCi0gICBkb25lCi0tICBGZ3JvZmY9L3Vzci9iaW4vZ3JvZmYKLS0gIEZucm9mZj0vdXNyL2Jpbi9ucm9mZgotLSAgRmpucm9mZj0vdXNyL2Jpbi9ucm9mZgotLSAgRmdlcW49L3Vzci9iaW4vZ2VxbgotLSAgRmd0Ymw9L3Vzci9iaW4vZ3RibAotLSAgRmNvbD0vdXNyL2Jpbi9jb2wKLS0gIEZncmVmZXI9L3Vzci9iaW4vZ3JlZmVyCi0tICBGZ3BpYz0vdXNyL2Jpbi9ncGljCi0tICBGbW9yZT0vYmluL21vcmUKLS0gIEZsZXNzPS91c3IvYmluL2xlc3MKLS0gIEZjbXA9L3Vzci9iaW4vY21wCi0tICBGY2F0PS9iaW4vY2F0Ci0tICBGZ2F3az0vYmluL2dhd2sKLSsgIGlmIFsgJEJVSUxEX0NDICE9ICRDQyBdOyB0aGVuCi0rICAgICMgY3Jvc3MgY29tcGlsaW5nID0+IHRhcmdldCBmcyBub3QgYXZhaWxhYmxlLCBzbyBmb3JjZSBkZWZhdWx0cwotKyAgICBGZ3JvZmY9L3Vzci9iaW4vZ3JvZmYKLSsgICAgRm5yb2ZmPS91c3IvYmluL25yb2ZmCi0rICAgIEZqbnJvZmY9L3Vzci9iaW4vbnJvZmYKLSsgICAgRmdlcW49L3Vzci9iaW4vZXFuCi0rICAgIEZnbmVxbj0vdXNyL2Jpbi9uZXFuCi0rICAgIEZndGJsPS91c3IvYmluL3RibAotKyAgICBGY29sPS91c3IvYmluL2NvbAotKyAgICBGZ3JlZmVyPS91c3IvYmluL3JlZmVyCi0rICAgIEZncGljPS91c3IvYmluL3BpYwotKyAgICBGbW9yZT0vYmluL21vcmUKLSsgICAgRmxlc3M9L3Vzci9iaW4vbGVzcwotKyAgICBGY21wPS91c3IvYmluL2NtcAotKyAgICBGY2F0PS9iaW4vY2F0Ci0rICAgIEZnYXdrPS91c3IvYmluL2dhd2sKLSsgIGZpCi0gCi0gCi0gICBmb3IgaSBpbiBlcW4gdGJsIHJlZmVyIHBpYwotQEAgLTUwNyw4ICs1MTIsOCBAQAotICAgICBqbnJvZmY9IiRGam5yb2ZmIC1UdXRmOCAtbWFuZG9jaiIKLSAgIGZpCi0gICBlcW49IiRGZ2VxbiAtVHBzIgotLSAgbmVxbj0iJEZnZXFuIC1UdXRmOCIKLS0gIGpuZXFuPSIkRmdlcW4gLVR1dGY4IgotKyAgbmVxbj0iJEZnbmVxbiAtVHV0ZjgiCi0rICBqbmVxbj0iJEZnbmVxbiAtVHV0ZjgiCi0gICB0Ymw9IiRGZ3RibCIKLSAgIGNvbD0iJEZjb2wiCi0gICB2Z3JpbmQ9IiRGdmdyaW5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXBhcmFsbGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXBhcmFsbGVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmE4OGI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1wYXJhbGxlbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVRoZSBNYWtlZmlsZSBmb3IgbWFuIGhhcyBhIHJ1bGUgdG8gY3JlYXRlIHR3byBnZW5lcmF0ZWQgdGFyZ2V0cyB3aXRoCi1hIHByb2dyYW0gcnVuIGZyb20gdGhlIHNoZWxsLiBCZWNhdXNlIHRoZSBydWxlIHdhcyBydW4gdHdpY2UsIHdpdGgKLXBhcmFsbGVsIG1ha2UsIHRoZSBnZW5lcmF0ZWQgZmlsZXMgd2VyZSBiZWluZyBvdmVyd3JpdHRlbiBhdCB0aGUgc2FtZQotdGltZSB0aGV5IHdlcmUgYmVpbmcgY29tcGlsZWQuIFRoaXMgcGF0Y2ggZm9yY2VzIHRoZSBydWxlIHRvIGJlIHJ1bgotb25seSBvbmNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQmlsbCBSYW5kbGUgPHdpbGxpYW0uYy5yYW5kbGUgYXQgaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNmcvc3JjL01ha2VmaWxlLmluLm9yaWcJMjAxMC0xMi0zMSAxMjoyODo0Ni4wMDAwMDAwMDAgLTA4MDAKLSsrKyBtYW4tMS42Zy9zcmMvTWFrZWZpbGUuaW4JMjAxNi0wMy0yOCAwOTowOToxNi44NDU0NTg3OTggLTA3MDAKLUBAIC00Myw4ICs0MywxMCBAQAotIG1ha2Vtc2c6Ci0gCSQoQlVJTERfQ0MpIC1vIG1ha2Vtc2cgbWFrZW1zZy5jCi0gCi0tbXNnLmMgZ3JpcGVkZWZzLmg6IC4uL21zZ3MvbWVzcy5lbiBtYWtlbXNnCi0rbXNnLmMgZ3JpcGVkZWZzLmg6IGdlbmZpbGVzLXN0YW1wCi0rZ2VuZmlsZXMtc3RhbXA6IC4uL21zZ3MvbWVzcy5lbiBtYWtlbXNnCi0gCS4vbWFrZW1zZyAuLi9tc2dzL21lc3MuZW4gZ3JpcGVkZWZzLmggbXNnLmMKLSsJdG91Y2ggZ2VuZmlsZXMtc3RhbXAKLSAKLSAjIGdsb2IuYyBkb2VzIG5vdCBoYXZlIHByb3RvdHlwZXMKLSBnbG9iLm86IGdsb2IuYyBuZGlyLmgKLUBAIC0xMTcsNCArMTE5LDQgQEAKLSAKLSBzcG90bGVzczogY2xlYW4KLSAJcm0gLWYgTWFrZWZpbGUgY29uZmlnLnN0YXR1cyBwYXRocy5oIHZlcnNpb24uaCBtYW4uY29uZgotLQlybSAtZiBncmlwZWRlZnMuaCBtc2cuYyBtZXNzLiouY2F0Ci0rCXJtIC1mIGdyaXBlZGVmcy5oIG1zZy5jIG1lc3MuKi5jYXQgZ2VuZmlsZXMtc3RhbXAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy13aGF0aXMzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXdoYXRpczMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMzQ0NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXdoYXRpczMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1EbyBub3QgdXNlIGFic29sdXRlIHBhdGggZm9yIGF3ayB3aGlsZSBnZXR0aW5nIHRoZSBwYXRoIG9mIGF3awotd2hlbiBydW5uaW5nIG1ha2V3aGF0aXMuCi1UaGlzIGNhbiBhdm9pZCBlcnJvcnMgaWYgcGF0aCBvZiBhd2sgY2hhbmdlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW21hbi0xLjZnXQotCi1TaWduZWQtb2ZmLWJ5OiBKaWFuIExpdSA8amlhbi5saXVAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtTnVyIG1hbi0xLjZnLm9yaWcvc3JjL21ha2V3aGF0aXMuc2ggbWFuLTEuNmcvc3JjL21ha2V3aGF0aXMuc2gKLS0tLSBtYW4tMS42Zy5vcmlnL3NyYy9tYWtld2hhdGlzLnNoCTIwMTUtMDItMjUgMTY6MTM6MTIuNjU3NjExNDE5ICswODAwCi0rKysgbWFuLTEuNmcvc3JjL21ha2V3aGF0aXMuc2gJMjAxNS0wMi0yNSAxNjoxNDo0OS4zMzQ2OTQ4MTUgKzA4MDAKLUBAIC02Nyw3ICs2Nyw3IEBACi0gIyBidXQgdGhhdCBsZWFkcyB0byBwcm9ibGVtcyBhbmQgYnVncy4KLQotICMgQVdLPS91c3IvYmluL2dhd2sKLS1BV0s9QGF3a0AKLStBV0s9YHdoaWNoIGF3a2AKLQotICMgRmluZCBhIHBsYWNlIGZvciBvdXIgdGVtcG9yYXJ5IGZpbGVzLiBJZiBzZWN1cml0eSBpcyBub3QgYSBjb25jZXJuLCB1c2UKLSAjCVRNUEZJTEU9L3RtcC93aGF0aXMkJDsgVE1QRklMRURJUj1ub25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLjEuZ3ogYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLjEuZ3oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNjgwNDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi4xLmd6CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi43Lmd6IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi43Lmd6CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODVhZjgyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uNy5negorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMxMGJlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotIwotIyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIG1hbi5jb25mLmluIGJ5IHRoZQotIyBjb25maWd1cmUgc2NyaXB0LgotIwotIyBtYW4uY29uZiBmcm9tIG1hbi0xLjVwCi0jCi0jIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZmlsZSwgc2VlIHRoZSBtYW4gcGFnZXMgbWFuKDEpCi0jIGFuZCBtYW4uY29uZig1KS4KLSMKLSMgVGhpcyBmaWxlIGlzIHJlYWQgYnkgbWFuIHRvIGNvbmZpZ3VyZSB0aGUgZGVmYXVsdCBtYW5wYXRoIChhbHNvIHVzZWQKLSMgd2hlbiBNQU5QQVRIIGNvbnRhaW5zIGFuIGVtcHR5IHN1YnN0cmluZyksIHRvIGZpbmQgb3V0IHdoZXJlIHRoZSBjYXQKLSMgcGFnZXMgY29ycmVzcG9uZGluZyB0byBnaXZlbiBtYW4gcGFnZXMgc2hvdWxkIGJlIHN0b3JlZCwKLSMgYW5kIHRvIG1hcCBlYWNoIFBBVEggZWxlbWVudCB0byBhIG1hbnBhdGggZWxlbWVudC4KLSMgSXQgbWF5IGFsc28gcmVjb3JkIHRoZSBwYXRobmFtZSBvZiB0aGUgbWFuIGJpbmFyeS4gW1RoaXMgaXMgdW51c2VkLl0KLSMgVGhlIGZvcm1hdCBpczoKLSMKLSMgTUFOQklOCQlwYXRobmFtZQotIyBNQU5QQVRICQltYW5wYXRoX2VsZW1lbnQJW2NvcnJlc3BvbmRpbmdfY2F0ZGlyXQotIyBNQU5QQVRIX01BUAkJcGF0aF9lbGVtZW50CW1hbnBhdGhfZWxlbWVudAotIwotIyBJZiBubyBjYXRkaXIgaXMgZ2l2ZW4sIGl0IGlzIGFzc3VtZWQgdG8gYmUgZXF1YWwgdG8gdGhlIG1hbmRpcgotIyAoc28gdGhhdCB0aGlzIGRpciBoYXMgYm90aCBtYW4xIGV0Yy4gYW5kIGNhdDEgZXRjLiBzdWJkaXJzKS4KLSMgVGhpcyBpcyB0aGUgdHJhZGl0aW9uYWwgVW5peCBzZXR1cC4KLSMgQ2VydGFpbiB2ZXJzaW9ucyBvZiB0aGUgRlNTVE5EIHJlY29tbWVuZCBwdXR0aW5nIGZvcm1hdHRlZCB2ZXJzaW9ucwotIyBvZiAvdXNyLy4uLi9tYW4vbWFueC9wYWdlLnggaW50byAvdmFyL2NhdG1hbi8uLi4vY2F0eC9wYWdlLnguCi0jIFRoZSBrZXl3b3JkIEZTU1RORCB3aWxsIGNhdXNlIHRoaXMgYmVoYXZpb3VyLgotIyBDZXJ0YWluIHZlcnNpb25zIG9mIHRoZSBGSFMgcmVjb21tZW5kIHB1dHRpbmcgZm9ybWF0dGVkIHZlcnNpb25zIG9mCi0jIC91c3IvLi4uL3NoYXJlL21hbi9bbG9jYWxlL11tYW54L3BhZ2UueCBpbnRvCi0jIC92YXIvY2FjaGUvbWFuLy4uLi9bbG9jYWxlL11jYXR4L3BhZ2UueC4KLSMgVGhlIGtleXdvcmQgRkhTIHdpbGwgY2F1c2UgdGhpcyBiZWhhdmlvdXIgKGFuZCBvdmVycmlkZXMgRlNTVE5EKS4KLSMgRXhwbGljaXRseSBnaXZlbiBjYXRkaXJzIG92ZXJyaWRlLgotIwotIyBGU1NUTkQKLUZIUwotIwotIyBUaGlzIGZpbGUgaXMgYWxzbyByZWFkIGJ5IG1hbiBpbiBvcmRlciB0byBmaW5kIGhvdyB0byBjYWxsIG5yb2ZmLCBsZXNzLCBldGMuLAotIyBhbmQgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIGV4dGVuc2lvbnMgYW5kIGRlY29tcHJlc3NvcnMuCi0jCi0jIE1BTkJJTgkJL3Vzci9sb2NhbC9iaW4vbWFuCi0jCi0jIEV2ZXJ5IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIE1BTlBBVEggaW5jbHVkZXMgdGhlc2UgZmllbGRzCi0jCi1NQU5QQVRICS91c3IvbWFuCi1NQU5QQVRICS91c3Ivc2hhcmUvbWFuCi1NQU5QQVRICS91c3IvbG9jYWwvbWFuCi1NQU5QQVRICS91c3IvbG9jYWwvc2hhcmUvbWFuCi1NQU5QQVRICS91c3IvWDExUjYvbWFuCi0jCi0jIFVuY29tbWVudCBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIG9uZSBvZiB0aGVzZSBieSBkZWZhdWx0Ci0jCi0jIE1BTlBBVEgJL29wdC8qL21hbgotIyBNQU5QQVRICS91c3IvbGliLyovbWFuCi0jIE1BTlBBVEgJL3Vzci9zaGFyZS8qL21hbgotIyBNQU5QQVRICS91c3Iva2VyYmVyb3MvbWFuCi0jCi0jIFNldCB1cCBQQVRIIHRvIE1BTlBBVEggbWFwcGluZwotIwotIyBJZiBwZW9wbGUgYXNrIGZvciAibWFuIGZvbyIgYW5kIGhhdmUgIi9kaXIvYmluL2ZvbyIgaW4gdGhlaXIgUEFUSAotIyBhbmQgdGhlIGRvY3MgYXJlIGZvdW5kIGluICIvZGlyL21hbiIsIHRoZW4gbm8gbWFwcGluZyBpcyByZXF1aXJlZC4KLSMKLSMgVGhlIGJlbG93IG1hcHBpbmdzIGFyZSBzdXBlcmZsdW91cyB3aGVuIHRoZSByaWdodCBoYW5kIHNpZGUgaXMKLSMgaW4gdGhlIG1hbmRhdG9yeSBtYW5wYXRoIGFscmVhZHksIGJ1dCB3aWxsIGtlZXAgbWFuIGZyb20gc3RhdHRpbmcKLSMgbG90cyBvZiBvdGhlciBuZWFyYnkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgotIwotTUFOUEFUSF9NQVAJL2JpbgkJCS91c3Ivc2hhcmUvbWFuCi1NQU5QQVRIX01BUAkvc2JpbgkJCS91c3Ivc2hhcmUvbWFuCi1NQU5QQVRIX01BUAkvdXNyL2JpbgkJL3Vzci9zaGFyZS9tYW4KLU1BTlBBVEhfTUFQCS91c3Ivc2JpbgkJL3Vzci9zaGFyZS9tYW4KLU1BTlBBVEhfTUFQCS91c3IvbG9jYWwvYmluCQkvdXNyL2xvY2FsL3NoYXJlL21hbgotTUFOUEFUSF9NQVAJL3Vzci9sb2NhbC9zYmluCQkvdXNyL2xvY2FsL3NoYXJlL21hbgotTUFOUEFUSF9NQVAJL3Vzci9YMTFSNi9iaW4JCS91c3IvWDExUjYvbWFuCi1NQU5QQVRIX01BUAkvdXNyL2Jpbi9YMTEJCS91c3IvWDExUjYvbWFuCi1NQU5QQVRIX01BUAkvdXNyL2Jpbi9taAkJL3Vzci9zaGFyZS9tYW4KLSMKLSMgTk9BVVRPUEFUSCBrZWVwcyBtYW4gZnJvbSBhdXRvbWF0aWNhbGx5IGFkZGluZyBkaXJlY3RvcmllcyB0aGF0IGxvb2sgbGlrZQotIyBtYW51YWwgcGFnZSBkaXJlY3RvcmllcyB0byB0aGUgcGF0aC4KLSMKLSNOT0FVVE9QQVRICi0jCi0jIE5PQ0FDSEUga2VlcHMgbWFuIGZyb20gY3JlYXRpbmcgY2FjaGUgcGFnZXMgKCJjYXQgcGFnZXMiKQotIyAoZ2VuZXJhbGx5IG9uZSBlbmFibGVzL2Rpc2FibGUgY2F0IHBhZ2UgY3JlYXRpb24gYnkgY3JlYXRpbmcvZGVsZXRpbmcKLSMgdGhlIGRpcmVjdG9yeSB0aGV5IHdvdWxkIGxpdmUgaW4gLSBtYW4gbmV2ZXIgZG9lcyBta2RpcikKLSMgCi0jTk9DQUNIRQotIwotIyBVc2VmdWwgcGF0aHMgLSBub3RlIHRoYXQgQ09MIHNob3VsZCBub3QgYmUgZGVmaW5lZCB3aGVuCi0jIE5ST0ZGIGlzIGRlZmluZWQgYXMgImdyb2ZmIC1UYXNjaWkiIG9yICJncm9mZiAtVGxhdGluMSI7Ci0jIG5vdCBvbmx5IGlzIGl0IHN1cGVyZmx1b3VzLCBidXQgaXQgYWN0dWFsbHkgZGFtYWdlcyB0aGUgb3V0cHV0LgotIyBGb3IgdXNlIHdpdGggdXRmLTgsIE5ST0ZGIHNob3VsZCBiZSAibnJvZmYgLW1hbmRvYyIgd2l0aG91dCAtVCBvcHRpb24uCi0jIChNYXliZSAtIGJ1dCB0b2RheSBJIG5lZWQgLVRsYXRpbjEgdG8gcHJldmVudCBkb3VibGUgY29udmVyc2lvbiB0byB1dGY4LikKLSMKLSMgSWYgeW91IGhhdmUgYSBuZXcgdHJvZmYgKHZlcnNpb24gMS4xOC4xPykgYW5kIGl0cyBjb2xvcmVkIG91dHB1dAotIyBjYXVzZXMgcHJvYmxlbXMsIGFkZCB0aGUgLWMgb3B0aW9uIHRvIFRST0ZGLCBOUk9GRiwgSk5ST0ZGLgotIwotVFJPRkYJCS91c3IvYmluL2dyb2ZmIC1UcHMgLW1hbmRvYwotTlJPRkYJCS91c3IvYmluL25yb2ZmIC1UbGF0aW4xIC1tYW5kb2MKLUpOUk9GRgkJL3Vzci9iaW4vZ3JvZmYgLVRuaXBwb24gLW1hbmRvY2oKLUVRTgkJL3Vzci9iaW4vZXFuIC1UcHMKLU5FUU4JCS91c3IvYmluL2VxbiAtVGxhdGluMQotSk5FUU4JCS91c3IvYmluL2VxbiAtVG5pcHBvbgotVEJMCQkvdXNyL2Jpbi90YmwKLSMgQ09MCQkvdXNyL2Jpbi9jb2wKLVJFRkVSCQkvdXNyL2Jpbi9yZWZlcgotUElDCQkvdXNyL2Jpbi9waWMKLVZHUklORAkJCi1HUkFQCQkKLVBBR0VSCQkvdXNyL2Jpbi9sZXNzIC1pc1IKLUNBVAkJL2Jpbi9jYXQKLSMKLSMgVGhlIGNvbW1hbmQgIm1hbiAtYSB4eXp6eSIgd2lsbCBzaG93IGFsbCBtYW4gcGFnZXMgZm9yIHh5enp5LgotIyBXaGVuIENNUCBpcyBkZWZpbmVkIG1hbiB3aWxsIHRyeSB0byBhdm9pZCBzaG93aW5nIHRoZSBzYW1lCi0jIHRleHQgdHdpY2UuIChCdXQgY29tcHJlc3NlZCBwYWdlcyBjb21wYXJlIHVuZXF1YWwuKQotIwotQ01QCQkvdXNyL2Jpbi9jbXAgLXMKLSMKLSMgQ29tcHJlc3MgY2F0IHBhZ2VzCi0jCi1DT01QUkVTUwkvYmluL2J6aXAyCi1DT01QUkVTU19FWFQJLmJ6MgotIwotIyBEZWZhdWx0IG1hbnVhbCBzZWN0aW9ucyAoYW5kIG9yZGVyKSB0byBzZWFyY2ggaWYgLVMgaXMgbm90IHNwZWNpZmllZAotIyBhbmQgdGhlIE1BTlNFQ1QgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldC4KLSMKLU1BTlNFQ1QJCTE6MXA6ODoyOjM6M3A6NDo1OjY6Nzo5OjBwOnRjbDpuOmw6cDpvCi0jCi0jIERlZmF1bHQgb3B0aW9ucyB0byB1c2Ugd2hlbiBtYW4gaXMgaW52b2tlZCB3aXRob3V0IG9wdGlvbnMKLSMgVGhpcyBpcyBtYWlubHkgZm9yIHRoZSBiZW5lZml0IG9mIHRob3NlIHRoYXQgdGhpbmsgLWEgc2hvdWxkIGJlIHRoZSBkZWZhdWx0Ci0jIE5vdGUgdGhhdCBzb21lIHN5c3RlbXMgaGF2ZSAvdXNyL21hbi9hbGxtYW4sIGNhdXNpbmcgcGFnZXMgdG8gYmUgc2hvd24gdHdpY2UuCi0jCi0jTUFOREVGT1BUSU9OUwktYQotIwotIyBEZWNvbXByZXNzIHdpdGggZ2l2ZW4gZGVjb21wcmVzc29yIHdoZW4gaW5wdXQgZmlsZSBoYXMgZ2l2ZW4gZXh0ZW5zaW9uCi0jIFRoZSBjb21tYW5kIGdpdmVuIG11c3QgYWN0IGFzIGEgZmlsdGVyLgotIwotLmd6CQkvYmluL2d1bnppcCAtYwotLmJ6MgkJL3Vzci9iaW4vYnVuemlwMiAtYwotLnh6CQkvdXNyL2Jpbi91bnh6IC1jCi0uegkJCi0uWgkJL2Jpbi96Y2F0Ci0uRgkJCi0uWQkJCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFucGF0aC41Lmd6IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbnBhdGguNS5negpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAxMmZmOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFucGF0aC41Lmd6CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuXzEuNmcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW5fMS42Zy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY2MDNmOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW5fMS42Zy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLVNVTU1BUlkgPSAiT25saW5lIGRvY3VtZW50YXRpb24gdG9vbHMiCi1ERVNDUklQVElPTiA9ICJBIHNldCBvZiBkb2N1bWVudGF0aW9uIHRvb2xzOiBtYW4sIGFwcm9wb3MgYW5kIHdoYXRpcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHA6Ly9wcmltYXRlcy54aW1pYW4uY29tL35mbHVjaWZyZWRpL21hbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKLQotUFIgPSAicjEiCi0KLURFUEVORFMgPSAiZ3JvZmYgbGVzcyIKLQotZGVmIGNvbXByZXNzX3BrZyhkKToKLSAgICBpZiAiY29tcHJlc3NfZG9jIiBpbiAoZC5nZXRWYXIoIklOSEVSSVQiKSBvciAiIikuc3BsaXQoKToKLSAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCi0gICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgotICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKLSAgICAgICAgICAgICByZXR1cm4gInh6IgotICAgIHJldHVybiAiIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9sb29rYXNpZGUvcGtncy9tYW4yaHRtbC8ke0JQfS50YXIuZ3ovYmExNTRkNTc5NjkyOGI4NDFjOWM2OWYwYWUzNzY2NjAvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVrLWNvbmZwYXRoLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aDEtbWFrZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41ay1ub25hc2NpaS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS1zZWN1cml0eS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS1tYW5kaXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVtMi1idWcxMTYyMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41ay1zb2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41bTItYnVpbGRyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjZlLXJvX3Vzci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aTItbmV3bGluZS5wYXRjaDtzdHJpcGxldmVsPTAgXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWotdXRmOC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aTItb3ZlcmZsb3cucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWotbm9jYWNoZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aTItaW5pdGlhbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aDEtZ2VuY2F0LnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41Zy1ub25yb290YnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWotaTE4bi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS13aGF0aXMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjZlLXVzZV9pMThuX3ZhcnNfaW5fYV9zdGRfd2F5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVtMi1uby1jb2xvci1mb3ItcHJpbnRpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNW0yLXNpZ3BpcGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmUtaTE4bl93aGF0aXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmUtbmV3X3NlY3Rpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi4xLmd6O3VucGFjaz1mYWxzZSBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4uNy5nejt1bnBhY2s9ZmFsc2UgXAotICAgICAgICAgICBmaWxlOi8vbWFuLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbWFucGF0aC41Lmd6O3VucGFjaz1mYWxzZSBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42Zy13aGF0aXMzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZV9zZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmctcGFyYWxsZWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmctY29tcGlsZS13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42Zy1jb25maWd1cmUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmExNTRkNTc5NjkyOGI4NDFjOWM2OWYwYWUzNzY2NjAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2NkY2I4YzNmNGUwMDgwOTIzZDdlODE4ZjBlNGEyMDJkYjI2YzQ2NDE1ZWFlZjM2MTM4N2MyMDk5NWI4OTU5ZiIKLQotQ0ZMQUdTICs9ICItRFNZU1YiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgICAgICR7U30vY29uZmlndXJlIC1kZWZhdWx0IC1jb25mZGlyIC9ldGMgK3NnaWQgK2ZocyArbGFuZyBhbGwKLX0KLQotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCl7Ci0JbWtkaXIgLXAgICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L21hbi9tYW41Ci0gICAgICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L21hbi9tYW43Ci0JY3AgJHtXT1JLRElSfS9tYW4uY29uZiAke0R9JHtzeXNjb25mZGlyfS9tYW4uY29uZmlnCi0gICAgICAgIGNwICR7V09SS0RJUn0vbWFuLjEuZ3ogJHtEfSR7ZGF0YWRpcn0vbWFuL21hbjEvCi0gICAgICAgIGNwICR7V09SS0RJUn0vbWFuLjcuZ3ogJHtEfSR7ZGF0YWRpcn0vbWFuL21hbjcvCi0gICAgICAgIGNwICR7V09SS0RJUn0vbWFucGF0aC41Lmd6ICR7RH0ke2RhdGFkaXJ9L21hbi9tYW41LwotfQotCi0KLVJERVBFTkRTXyR7UE59ID0gImxlc3MgZ3JvZmYiCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9sb2NhbGUgJHtzeXNjb25mZGlyfS9tYW4uY29uZmlnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMi1UaWNrZXQtMzY5Ny10dHlfaW5pdC11bmlmeS1jdXJzZXMtaW5pdGlhbGl6YXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NGQ0ZDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLUZyb20gNGQ0NmExMDg2MjliZWI2NmEyOTM2NzJkYjdiNDRmODYzYjY1OThiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob21hcyBEaWNrZXkgPGRpY2tleUBoaXMuY29tPgotRGF0ZTogRnJpLCAxNCBBcHIgMjAxNyAxNDowNjoxMyArMDMwMAotU3ViamVjdDogW1BBVENIXSBUaWNrZXQgIzM2OTc6ICh0dHlfaW5pdCk6IHVuaWZ5IGN1cnNlcyBpbml0aWFsaXphdGlvbgotCi0uLi5mb3IgdmFyaW91cyBjdXJzZXMgaW1wbGVtZW50YXRpb25zLgotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQm9yb2RpbiA8YWJvcm9kaW5Adm1haWwucnU+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9NaWRuaWdodENvbW1hbmRlci9tYy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbGliL3R0eS90dHktbmN1cnNlcy5jIHwgMjYgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi90dHkvdHR5LW5jdXJzZXMuYyBiL2xpYi90dHkvdHR5LW5jdXJzZXMuYwotaW5kZXggYTdhMTFmMy4uOGU2OWIzOSAxMDA2NDQKLS0tLSBhL2xpYi90dHkvdHR5LW5jdXJzZXMuYwotKysrIGIvbGliL3R0eS90dHktbmN1cnNlcy5jCi1AQCAtMTc5LDYgKzE3OSw4IEBAIG1jX3R0eV9ub3JtYWxpemVfbGluZXNfY2hhciAoY29uc3QgY2hhciAqY2gpCi0gdm9pZAotIHR0eV9pbml0IChnYm9vbGVhbiBtb3VzZV9lbmFibGUsIGdib29sZWFuIGlzX3h0ZXJtKQotIHsKLSsgICAgc3RydWN0IHRlcm1pb3MgbW9kZTsKLSsKLSAgICAgaW5pdHNjciAoKTsKLSAKLSAjaWZkZWYgSEFWRV9FU0NERUxBWQotQEAgLTE5NCwyNSArMTk2LDE1IEBAIHR0eV9pbml0IChnYm9vbGVhbiBtb3VzZV9lbmFibGUsIGdib29sZWFuIGlzX3h0ZXJtKQotICAgICBFU0NERUxBWSA9IDIwMDsKLSAjZW5kaWYgLyogSEFWRV9FU0NERUxBWSAqLwotIAotLSNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KLSsgICAgdGNnZXRhdHRyIChTVERJTl9GSUxFTk8sICZtb2RlKTsKLSAgICAgLyogdXNlIEN0cmwtZyB0byBnZW5lcmF0ZSBTSUdJTlQgKi8KLS0gICAgY3VyX3Rlcm0tPk50dHliLmNfY2NbVklOVFJdID0gQ1RSTCAoJ2cnKTsgICAvKiBeZyAqLwotKyAgICBtb2RlLmNfY2NbVklOVFJdID0gQ1RSTCAoJ2cnKTsgIC8qIF5nICovCi0gICAgIC8qIGRpc2FibGUgU0lHUVVJVCB0byBhbGxvdyB1c2UgQ3RybC1cIGtleSAqLwotLSAgICBjdXJfdGVybS0+TnR0eWIuY19jY1tWUVVJVF0gPSBOVUxMX1ZBTFVFOwotLSAgICB0Y3NldGF0dHIgKGN1cl90ZXJtLT5GaWxlZGVzLCBUQ1NBTk9XLCAmY3VyX3Rlcm0tPk50dHliKTsKLS0jZWxzZQotLSAgICAvKiBvdGhlciBjdXJzZXMgaW1wbGVtZW50YXRpb24gKGJzZCBjdXJzZXMsIC4uLikgKi8KLS0gICAgewotLSAgICAgICAgc3RydWN0IHRlcm1pb3MgbW9kZTsKLS0KLS0gICAgICAgIHRjZ2V0YXR0ciAoU1RESU5fRklMRU5PLCAmbW9kZSk7Ci0tICAgICAgICAvKiB1c2UgQ3RybC1nIHRvIGdlbmVyYXRlIFNJR0lOVCAqLwotLSAgICAgICAgbW9kZS5jX2NjW1ZJTlRSXSA9IENUUkwgKCdnJyk7ICAvKiBeZyAqLwotLSAgICAgICAgLyogZGlzYWJsZSBTSUdRVUlUIHRvIGFsbG93IHVzZSBDdHJsLVwga2V5ICovCi0tICAgICAgICBtb2RlLmNfY2NbVlFVSVRdID0gTlVMTF9WQUxVRTsKLS0gICAgICAgIHRjc2V0YXR0ciAoU1RESU5fRklMRU5PLCBUQ1NBTk9XLCAmbW9kZSk7Ci0tICAgIH0KLS0jZW5kaWYgLyogTkNVUlNFU19WRVJTSU9OICovCi0rICAgIG1vZGUuY19jY1tWUVVJVF0gPSBOVUxMX1ZBTFVFOwotKyAgICB0Y3NldGF0dHIgKFNURElOX0ZJTEVOTywgVENTQU5PVywgJm1vZGUpOwotKwotKyAgICAvKiBjdXJzZXMgcmVtZW1iZXJzIHRoZSAiaW4tcHJvZ3JhbSIgbW9kZXMgYWZ0ZXIgdGhpcyBjYWxsICovCi0rICAgIGRlZl9wcm9nX21vZGUgKCk7Ci0gCi0gICAgIHR0eV9zdGFydF9pbnRlcnJ1cHRfa2V5ICgpOwotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2ExNTZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCi1SREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlZjQyM2Y1YjZmODBhMWE1YTVmYzUzYjgzMjRjYWI3MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMGRkZGZhZTcxNDlmYWM5MDNmNzRlZjU1Y2ZjYjJhMTk4ZTBmNzAwNDM0NmM3YmRlZDQzNjY5ZDYxYmE0MzZmIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi0jCi0jIEJvdGggU2FtYmEgKHNtYikgYW5kIHNmdHAgcmVxdWlyZSBwYWNrYWdlIGRlbGl2ZXJlZCBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkCi0jCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXZmcy1zbWIsLS1kaXNhYmxlLXZmcy1zbWIsc2FtYmEsIgotUEFDS0FHRUNPTkZJR1tzZnRwXSA9ICItLWVuYWJsZS12ZnMtc2Z0cCwtLWRpc2FibGUtdmZzLXNmdHAsbGlic3NoMiwiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtc2NyZWVuPW5jdXJzZXMgLS13aXRob3V0LWdwbS1tb3VzZSAtLXdpdGhvdXQteCIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKgotICAgICAgICAKLSAgICAgICAgcm0gJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9zMysgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEKLX0KLQotUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMgJHtCUE59LWZpc2giCi0KLVNVTU1BUllfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJNaWRuaWdodCBDb21tYW5kZXIgUGVybC1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2ErICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hcHQrIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYiAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJkICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kcGtnKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9tYWlsZnMgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3BhdGNoZnMgXCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3JwbXMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91bGliIFwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91emlwIgotUkRFUEVORFNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJwZXJsIgotCi1TVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKLQotU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgotRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGQxYjVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjAuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCitSREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkY2ZjN2FhNjEzYzYyMjkxYTBmNzFmNmI2OThkODI2NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDg1ZGFhYTZhYjI2ZTUyNDk0NmRmNDgyM2FjMmY2OTgwMmJjMTZiYzk2Nzc4MWI1ZTI4ZDViODZmYzNiOTc5IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCisjCisjIEJvdGggU2FtYmEgKHNtYikgYW5kIHNmdHAgcmVxdWlyZSBwYWNrYWdlIGRlbGl2ZXJlZCBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkCisjCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXZmcy1zbWIsLS1kaXNhYmxlLXZmcy1zbWIsc2FtYmEsIgorUEFDS0FHRUNPTkZJR1tzZnRwXSA9ICItLWVuYWJsZS12ZnMtc2Z0cCwtLWRpc2FibGUtdmZzLXNmdHAsbGlic3NoMiwiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtc2NyZWVuPW5jdXJzZXMgLS13aXRob3V0LWdwbS1tb3VzZSAtLXdpdGhvdXQteCIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKgorICAgICAgICAKKyAgICAgICAgcm0gJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9zMysgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEKK30KKworUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMgJHtCUE59LWZpc2giCisKK1NVTU1BUllfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJNaWRuaWdodCBDb21tYW5kZXIgUGVybC1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2ErICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hcHQrIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYiAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJkICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kcGtnKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9tYWlsZnMgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3BhdGNoZnMgXCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3JwbXMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91bGliIFwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91emlwIgorUkRFUEVORFNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJwZXJsIgorCitTVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKKworU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgorRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9nY2MtNC45LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9nY2MtNC45LnBhdGNoCmluZGV4IDU0YmYxZDcuLmRmMjEzOTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvZ2NjLTQuOS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL2djYy00LjkucGF0Y2gKQEAgLTcsMTMgKzcsMTMgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotSW5kZXg6IG1kYWRtLTMuMy9zdXBlci1pbnRlbC5jCitJbmRleDogbWRhZG0tNC4wL3N1cGVyLWludGVsLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtZGFkbS0zLjMub3JpZy9zdXBlci1pbnRlbC5jCTIwMTQtMDUtMDIgMTU6MDg6MjEuMTU0MzE5NjUxIC0wNzAwCi0rKysgbWRhZG0tMy4zL3N1cGVyLWludGVsLmMJMjAxNC0wNS0wMiAxNTowOTozMS40NzA5ODU3OTQgLTA3MDAKLUBAIC01MDYwLDcgKzUwNjAsNyBAQAotIAlzcGFyZS0+Y2FjaGVfc2l6ZSA9IG1wYi0+Y2FjaGVfc2l6ZSwKLSAJc3BhcmUtPnB3cl9jeWNsZV9jb3VudCA9IF9fY3B1X3RvX2xlMzIoMSksCistLS0gbWRhZG0tNC4wLm9yaWcvc3VwZXItaW50ZWwuYworKysrIG1kYWRtLTQuMC9zdXBlci1pbnRlbC5jCitAQCAtNTcyNSw3ICs1NzI1LDcgQEAgc3RhdGljIGludCB3cml0ZV9zdXBlcl9pbXNtX3NwYXJlcyhzdHJ1YworIAlzcGFyZS0+Y2FjaGVfc2l6ZSA9IG1wYi0+Y2FjaGVfc2l6ZTsKKyAJc3BhcmUtPnB3cl9jeWNsZV9jb3VudCA9IF9fY3B1X3RvX2xlMzIoMSk7CiAgCiAtCXNucHJpbnRmKChjaGFyICopIHNwYXJlLT5zaWcsIE1BWF9TSUdOQVRVUkVfTEVOR1RILAogKwkodm9pZClzbnByaW50ZigoY2hhciAqKSBzcGFyZS0+c2lnLCBNQVhfU0lHTkFUVVJFX0xFTkdUSCwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvbWRhZG0tMy4zLjJfeDMyX2FiaV90aW1lX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL21kYWRtLTMuMy4yX3gzMl9hYmlfdGltZV90LnBhdGNoCmluZGV4IGM2NTZkMDcuLjAwZTY2NTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvbWRhZG0tMy4zLjJfeDMyX2FiaV90aW1lX3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9tZGFkbS0zLjMuMl94MzJfYWJpX3RpbWVfdC5wYXRjaApAQCAtNSwxMyArNSwxMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KIAotSW5kZXg6IG1kYWRtLTMuMy40L21vbml0b3IuYworSW5kZXg6IG1kYWRtLTQuMC9tb25pdG9yLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtZGFkbS0zLjMuNC5vcmlnL21vbml0b3IuYwotKysrIG1kYWRtLTMuMy40L21vbml0b3IuYwotQEAgLTI1Nyw5ICsyNTcsMTIgQEAgc3RhdGljIGludCByZWFkX2FuZF9hY3Qoc3RydWN0IGFjdGl2ZV9hcgotIAkJCW1kaS0+Y3Vycl9zdGF0ZSA9IHJlYWRfZGV2X3N0YXRlKG1kaS0+c3RhdGVfZmQpOwotIAkJfQorLS0tIG1kYWRtLTQuMC5vcmlnL21vbml0b3IuYworKysrIG1kYWRtLTQuMC9tb25pdG9yLmMKK0BAIC00NDUsOSArNDQ1LDEyIEBAIHN0YXRpYyBpbnQgcmVhZF9hbmRfYWN0KHN0cnVjdCBhY3RpdmVfYXIKKyAJCWlmIChGRF9JU1NFVChtZGktPmJiX2ZkLCBmZHMpKQorIAkJCWNoZWNrX2Zvcl9jbGVhcmVkX2JiKGEsIG1kaSk7CiAgCX0KIC0KICAJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmljb20vbWluaWNvbV8yLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCmluZGV4IDFhMzFhODcuLmU2YWZlMmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCkBAIC0yNywzICsyNyw0IEBACiAJZm9yIGQgaW4gZG9jIGV4dHJhcyBtYW4gbGliIHNyYzsgZG8gbWFrZSAtQyAkZCBERVNURElSPSR7RH0gaW5zdGFsbDsgZG9uZQogfQogCitSUkVDT01NRU5EU18ke1BOfSArPSAibHJ6c3oiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHMvbmV0LXRvb2xzLTEuNjAtc2N0cDEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHMvbmV0LXRvb2xzLTEuNjAtc2N0cDEucGF0Y2gKaW5kZXggMTJlZWQxNy4uNzhkYWY2YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzL25ldC10b29scy0xLjYwLXNjdHAxLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29scy9uZXQtdG9vbHMtMS42MC1zY3RwMS5wYXRjaApAQCAtMTEsMTAgKzExLDEwIEBACiAgc3RhdGlzdGljcy5jIHwgIDY4ICsrKysrKysrKy0KICAyIGZpbGVzIGNoYW5nZWQsIDQ2NSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL25ldHN0YXQuYyBiL25ldHN0YXQuYwotaW5kZXggMWZiOWUwYy4uNWQxYTRhMSAxMDA2NDQKLS0tLSBhL25ldHN0YXQuYwotKysrIGIvbmV0c3RhdC5jCitJbmRleDogbmV0LXRvb2xzLTEuNjAvbmV0c3RhdC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXRvb2xzLTEuNjAub3JpZy9uZXRzdGF0LmMKKysrKyBuZXQtdG9vbHMtMS42MC9uZXRzdGF0LmMKIEBAIC01OCw2ICs1OCw3IEBACiAgICoKICAgKjk5MDQyMCB7MS4zOH0gVHVhbiBIb2FuZyAgICAgICAgICAgICAgcmVtb3ZlZCBhIHVzZWxlc3MgYXNzaWdubWVudCBmcm9tIGlnbXBfZG9fb25lKCkKQEAgLTIzLDcgKzIzLDcgQEAKICAgKgogICAqICAgICAgICAgICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKICAgKiAgICAgICAgICAgICAgYW5kL29yICBtb2RpZnkgaXQgdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsCi1AQCAtMTA1LDcgKzEwNiw3IEBACitAQCAtMTA2LDcgKzEwNyw3IEBACiAgI2VuZGlmCiAgCiAgLyogcHJvdG90eXBlcyBmb3Igc3RhdGlzdGljcy5jICovCkBAIC0zMiw3ICszMiw3IEBACiAgdm9pZCBpbml0dGFiKHZvaWQpOwogIHZvaWQgcGFyc2Vzbm1wNihpbnQsIGludCwgaW50KTsKICB2b2lkIGluaXR0YWI2KHZvaWQpOwotQEAgLTExOCw2ICsxMTksMjggQEAgdHlwZWRlZiBlbnVtIHsKK0BAIC0xMTksNiArMTIwLDI4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgIFNTX0RJU0NPTk5FQ1RJTkcJCS8qIGluIHByb2Nlc3Mgb2YgZGlzY29ubmVjdGluZyAgKi8KICB9IHNvY2tldF9zdGF0ZTsKICAKQEAgLTYxLDcgKzYxLDcgQEAKICAjZGVmaW5lIFNPX0FDQ0VQVENPTiAgICAoMTw8MTYpCS8qIHBlcmZvcm1lZCBhIGxpc3RlbiAgICAgICAgICAgKi8KICAjZGVmaW5lIFNPX1dBSVREQVRBICAgICAoMTw8MTcpCS8qIHdhaXQgZGF0YSB0byByZWFkICAgICAgICAgICAgKi8KICAjZGVmaW5lIFNPX05PU1BBQ0UgICAgICAoMTw8MTgpCS8qIG5vIHNwYWNlIHRvIHdyaXRlICAgICAgICAgICAgKi8KLUBAIC0xNDgsNiArMTcxLDcgQEAgaW50IGZsYWdfb3B0ID0gMDsKK0BAIC0xNDksNiArMTcyLDcgQEAgaW50IGZsYWdfb3B0ID0gMDsKICBpbnQgZmxhZ19yYXcgPSAwOwogIGludCBmbGFnX3RjcCA9IDA7CiAgaW50IGZsYWdfdWRwID0gMDsKQEAgLTY5LDcgKzY5LDcgQEAKICBpbnQgZmxhZ19pZ21wPSAwOwogIGludCBmbGFnX3JvbSA9IDA7CiAgaW50IGZsYWdfZXhwID0gMTsKLUBAIC05OTAsNiArMTAxNCwzNjUgQEAgc3RhdGljIGludCB1ZHBfaW5mbyh2b2lkKQorQEAgLTk5NSw2ICsxMDE5LDM2NSBAQCBzdGF0aWMgaW50IHVkcF9pbmZvKHZvaWQpCiAgCSAgICAgICB1ZHBfZG9fb25lKTsKICB9CiAgCkBAIC00MzUsNyArNDM1LDcgQEAKICBzdGF0aWMgdm9pZCByYXdfZG9fb25lKGludCBsbnIsIGNvbnN0IGNoYXIgKmxpbmUpCiAgewogICAgICBjaGFyIGJ1ZmZlcls4MTkyXSwgbG9jYWxfYWRkcls2NF0sIHJlbV9hZGRyWzY0XTsKLUBAIC0xNTQ5LDcgKzE5MzIsNyBAQCBzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQorQEAgLTE1NTgsNyArMTk0MSw3IEBAIHN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpCiAgICAgIGZwcmludGYoc3RkZXJyLCBfKCIgICAgICAgIC1GLCAtLWZpYiAgICAgICAgICAgICAgICBkaXNwbGF5IEZvcndhcmRpbmcgSW5mb3JtYXRpb24gQmFzZSAoZGVmYXVsdClcbiIpKTsKICAgICAgZnByaW50ZihzdGRlcnIsIF8oIiAgICAgICAgLUMsIC0tY2FjaGUgICAgICAgICAgICAgIGRpc3BsYXkgcm91dGluZyBjYWNoZSBpbnN0ZWFkIG9mIEZJQlxuXG4iKSk7CiAgCkBAIC00NDQsNyArNDQ0LDcgQEAKICAgICAgZnByaW50ZihzdGRlcnIsIF8oIiAgPEFGPj1Vc2UgJy02fC00JyBvciAnLUEgPGFmPicgb3IgJy0tPGFmPic7IGRlZmF1bHQ6ICVzXG4iKSwgREZMVF9BRik7CiAgICAgIGZwcmludGYoc3RkZXJyLCBfKCIgIExpc3Qgb2YgcG9zc2libGUgYWRkcmVzcyBmYW1pbGllcyAod2hpY2ggc3VwcG9ydCByb3V0aW5nKTpcbiIpKTsKICAgICAgcHJpbnRfYWZsaXN0KDEpOyAvKiAxID0gcm91dGVhYmxlICovCi1AQCAtMTU3NCw2ICsxOTU3LDcgQEAgaW50IG1haW4KK0BAIC0xNTgzLDYgKzE5NjYsNyBAQCBpbnQgbWFpbgogIAl7InByb3RvY29sIiwgMSwgMCwgJ0EnfSwKICAJeyJ0Y3AiLCAwLCAwLCAndCd9LAogIAl7InVkcCIsIDAsIDAsICd1J30sCkBAIC00NTIsNyArNDUyLDcgQEAKICAJeyJyYXciLCAwLCAwLCAndyd9LAogIAl7InVuaXgiLCAwLCAwLCAneCd9LAogIAl7Imxpc3RlbmluZyIsIDAsIDAsICdsJ30sCi1AQCAtMTYwNCw3ICsxOTg4LDcgQEAgaW50IG1haW4KK0BAIC0xNjEzLDcgKzE5OTcsNyBAQCBpbnQgbWFpbgogICAgICBnZXRyb3V0ZV9pbml0KCk7CQkvKiBTZXQgdXAgQUYgcm91dGluZyBzdXBwb3J0ICovCiAgCiAgICAgIGFmbmFtZVswXSA9ICdcMCc7CkBAIC00NjEsNyArNDYxLDcgQEAKICAJc3dpdGNoIChpKSB7CiAgCWNhc2UgLTE6CiAgCSAgICBicmVhazsKLUBAIC0xNjk2LDEwICsyMDgwLDEyIEBAIGludCBtYWluCitAQCAtMTcwNSwxMCArMjA4OSwxMiBAQCBpbnQgbWFpbgogIAljYXNlICd0JzoKICAJICAgIGZsYWdfdGNwKys7CiAgCSAgICBicmVhazsKQEAgLTQ3NSw3ICs0NzUsNyBAQAogIAljYXNlICd3JzoKICAJICAgIGZsYWdfcmF3Kys7CiAgCSAgICBicmVhazsKLUBAIC0xNzE3LDEzICsyMTAzLDEzIEBAIGludCBtYWluCitAQCAtMTcyNiwxMyArMjExMiwxMyBAQCBpbnQgbWFpbgogICAgICBpZiAoZmxhZ19pbnQgKyBmbGFnX3JvdSArIGZsYWdfbWFzICsgZmxhZ19zdGEgPiAxKQogIAl1c2FnZSgpOwogIApAQCAtNDkzLDcgKzQ5Myw3IEBACiAgCSsgZmxhZ19heDI1ICsgZmxhZ19uZXRyb20gKyBmbGFnX2lnbXAgKyBmbGFnX3gyNTsKICAKICAgICAgaWYgKGZsYWdfbWFzKSB7Ci1AQCAtMTc1MSw3ICsyMTM3LDcgQEAgaW50IG1haW4KK0BAIC0xNzYwLDcgKzIxNDYsNyBAQCBpbnQgbWFpbgogICAgICAgICAgY2hhciBidWZbMjU2XTsKICAgICAgICAgIGlmICghYWZuYW1lWzBdKSB7CiAgICAgICAgICAgICAgaW5pdHRhYigpOwpAQCAtNTAyLDcgKzUwMiw3IEBACiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHNhZmVfc3RybmNweShidWYsIGFmbmFtZSwgc2l6ZW9mKGJ1ZikpOwogICAgICAgICAgICAgIHRtcDEgPSBidWY7Ci1AQCAtMTgwNCw3ICsyMTkwLDcgQEAgaW50IG1haW4KK0BAIC0xODE1LDcgKzIyMDEsNyBAQCBpbnQgbWFpbgogIAlyZXR1cm4gKGkpOwogICAgICB9CiAgICAgIGZvciAoOzspIHsKQEAgLTUxMSw3ICs1MTEsNyBAQAogICNpZiBIQVZFX0FGSU5FVAogIAkgICAgcHJnX2NhY2hlX2xvYWQoKTsKICAJICAgIHByaW50ZihfKCJBY3RpdmUgSW50ZXJuZXQgY29ubmVjdGlvbnMgIikpOwkvKiB4eHggKi8KLUBAIC0xODQzLDYgKzIyMjksMTEgQEAgaW50IG1haW4KK0BAIC0xODU0LDYgKzIyNDAsMTEgQEAgaW50IG1haW4KICAJICAgIGlmIChpKQogIAkJcmV0dXJuIChpKTsKICAJfQpAQCAtNTIzLDEwICs1MjMsMTAgQEAKICAJaWYgKCFmbGFnX2FyZyB8fCBmbGFnX3JhdykgewogIAkgICAgaSA9IHJhd19pbmZvKCk7CiAgCSAgICBpZiAoaSkKLWRpZmYgLS1naXQgYS9zdGF0aXN0aWNzLmMgYi9zdGF0aXN0aWNzLmMKLWluZGV4IDAzNjAwZDcuLmViOGQ3ZGMgMTAwNjQ0Ci0tLS0gYS9zdGF0aXN0aWNzLmMKLSsrKyBiL3N0YXRpc3RpY3MuYworSW5kZXg6IG5ldC10b29scy0xLjYwL3N0YXRpc3RpY3MuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ldC10b29scy0xLjYwLm9yaWcvc3RhdGlzdGljcy5jCisrKysgbmV0LXRvb2xzLTEuNjAvc3RhdGlzdGljcy5jCiBAQCAtMjEsNyArMjEsNyBAQAogICNkZWZpbmUgVUZXQVJOKHgpCiAgI2VuZGlmCkBAIC01MzcsNyArNTM3LDcgQEAKICBlbnVtIFN0YXRlIHsKICAgICAgbnVtYmVyID0gMCwgb3B0X251bWJlciwgaV9mb3J3YXJkLCBpX2lucF9pY21wLCBpX291dHBfaWNtcCwgaV9ydG9fYWxnLAogQEAgLTI5Nyw2ICsyOTcsMjcgQEAgc3RydWN0IGVudHJ5IFRjcGV4dHRhYltdID0KLSAgICAgeyAiVENQUmVub1JlY292ZXJ5RmFpbCIsIE5fKCIldSBjbGFzc2ljIFJlbm8gZmFzdCByZXRyYW5zbWl0cyBmYWlsZWQiKSwgb3B0X251bWJlciB9LAorICAgICB7ICJUQ1BSZW5vUmVjb3ZlcnlGYWlsIiwgTl8oIiVsbHUgY2xhc3NpYyBSZW5vIGZhc3QgcmV0cmFuc21pdHMgZmFpbGVkIiksIG9wdF9udW1iZXIgfSwKICB9OwogIAogK3N0cnVjdCBlbnRyeSBTY3RwdGFiW10gPQpAQCAtNjE2LDcgKzYxNiw3IEBACiAgICAgIGYgPSBwcm9jX2ZvcGVuKCIvcHJvYy9uZXQvc25tcCIpOwogICAgICBpZiAoIWYpIHsKICAJcGVycm9yKF8oImNhbm5vdCBvcGVuIC9wcm9jL25ldC9zbm1wIikpOwotQEAgLTUzMCw2ICs1ODAsMTYgQEAgdm9pZCBwYXJzZXNubXAoaW50IGZsYWdfcmF3LCBpbnQgZmxhZ190Y3AsIGludCBmbGFnX3VkcCkKK0BAIC01MzAsNiArNTgwLDE2IEBAIHZvaWQgcGFyc2Vzbm1wKGludCBmbGFnX3JhdywgaW50IGZsYWdfdGMKICAgICAgCiAgICAgICAgICBmY2xvc2UoZik7CiAgICAgIH0KQEAgLTYzMyw2ICs2MzMsMyBAQAogICAgICByZXR1cm47CiAgfQogICAgICAKLS0tIAotMS44LjUuMi4yMzMuZzkzMmY3ZTQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2ZpbGVzL2Nyb3NzX2FyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2ZpbGVzL2Nyb3NzX2FyLnBhdGNoCmluZGV4IDAzMDA3YWEuLjg2Y2MwYmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9maWxlcy9jcm9zc19hci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvZmlsZXMvY3Jvc3NfYXIucGF0Y2gKQEAgLTE4LDE4ICsxOCwxOSBAQAogIGNvbmZpZ3VyZS5hYyB8IDQgKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KK0luZGV4OiBuZXd0LTAuNTIuMjAvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXd0LTAuNTIuMjAub3JpZy9NYWtlZmlsZS5pbgorKysrIG5ld3QtMC41Mi4yMC9NYWtlZmlsZS5pbgogQEAgLTcsNiArNyw3IEBAIENGTEFHUyA9IEBDRkxBR1NACiAgTERGTEFHUyA9IEBMREZMQUdTQAotIENQUEZMQUdTID0gLURfR05VX1NPVVJDRSBAQ1BQRkxBR1NAIAorIENQUEZMQUdTID0gLURfR05VX1NPVVJDRSBAQ1BQRkxBR1NACiAgR05VX0xEID0gQEdOVV9MREAKICtBUiA9IEBBUkAKICAKICBWRVJTSU9OID0gQFZFUlNJT05ACiAgVEFHID0gciQoc3Vic3QgLiwtLCQoVkVSU0lPTikpCi1AQCAtMTA5LDcgKzExMCw3IEBAIHdoaXB0Y2wuJChTT0VYVCk6ICQoV0hJUFRDTE9CSlMpICQoTElCTkVXVFNIKQorQEAgLTEwOSw3ICsxMTAsNyBAQCB3aGlwdGNsLiQoU09FWFQpOiAkKFdISVBUQ0xPQkpTKSAkKExJQk5FCiAgCSQoQ0MpIC1zaGFyZWQgJChTSENGTEFHUykgJChMREZMQUdTKSAtbyB3aGlwdGNsLiQoU09FWFQpICQoV0hJUFRDTE9CSlMpIC1MLiAtbG5ld3QgICQoTElCVENMKSAtbHBvcHQgJChMSUJTKQogIAogICQoTElCTkVXVCk6ICQoTElCT0JKUykKQEAgLTM4LDEwICszOSwxMCBAQAogIAogIG5ld3QubyAkKFNIQVJFRERJUikvbmV3dC5vOiBuZXd0LmMgTWFrZWZpbGUKICAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDkyZTZkYTguLmNkODNkNTcgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYworSW5kZXg6IG5ld3QtMC41Mi4yMC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXd0LTAuNTIuMjAub3JpZy9jb25maWd1cmUuYWMKKysrKyBuZXd0LTAuNTIuMjAvY29uZmlndXJlLmFjCiBAQCAtMTUsNiArMTUsMTAgQEAgQUNfUFJPR19JTlNUQUxMCiAgQUNfUFJPR19MTl9TCiAgQUNfUFJPR19HUkVQCkBAIC01MSw4ICs1Miw1IEBACiArQUNfREVGVU4oW0FDX1BST0dfQVJdLCBbQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIDopXSkKICtBQ19QUk9HX0FSCiAgCi0gIyBBcmUgd2UgdXNpbmcgR05VIGxkPwotIEFDX01TR19DSEVDS0lORyhbZm9yIEdOVSBsZF0pCi0tLSAKLTEuOC4xLjIKLQorIEFDX0NIRUNLX1NJWkVPRihbbG9uZ10pCisgQUNfQ0hFQ0tfU0laRU9GKFtsb25nIGxvbmddKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIKaW5kZXggZmRlZGU1OS4uOTAwMmZiYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiCkBAIC04OSw3ICs4OSw2IEBACiAgICAgbWt0ZW1wIFwKICAgICBuY3Vyc2VzIFwKICAgICBuZXQtdG9vbHMgXAotICAgIHBheCBcCiAgICAgcG9wdCBcCiAgICAgcHJvY3BzIFwKICAgICBwc21pc2MgXApAQCAtMTQwLDE5ICsxMzksMTMgQEAKICAgICBiemlwMiBcCiAgICAgY3JvbmllIFwKICAgICBkYnVzIFwKLSAgICBkYnVzLWdsaWIgXAogICAgIGVsZnV0aWxzIFwKICAgICBnemlwIFwKICAgICBsZXNzIFwKLSAgICBsaWJjYXAgXAotICAgIGxpYmV2ZW50IFwKICAgICBsb2dyb3RhdGUgXAogICAgIG5mcy11dGlscyBcCiAgICAgcGNpdXRpbHMgXAotICAgIGxpYnBjcmUgXAogICAgIHJwY2JpbmQgXAotICAgIHN5c2ZzdXRpbHMgXAogICAgIHRjcC13cmFwcGVycyBcCiAgICAgdHpkYXRhIFwKICAgICAiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiCmluZGV4IDViYWFmMzUuLjUzZDEwMGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgpAQCAtMTQsMTIgKzE0LDE1IEBACiAjIGxpYmdsdSBuZWVkcyB2aXJ0dWFsL2xpYmdsLCB3aGljaCByZXF1aXJlcyBvcGVuZ2wgaW4gRElTVFJPX0ZFQVRVUkVTCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gIm9wZW5nbCIKIAorIyBsaWJwYW0sIHBhbS1wbHVnaW4td2hlZWwgcmVxdWlyZXMgcGFtIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJwYW0iCisKICMKICMgV2Ugd2lsbCBza2lwIHBhcnNpbmcgdGhpcyBwYWNrYWdlZ2VvdXAgZm9yIG5vbi1nbGliYyBzeXN0ZW1zCiAjCiBweXRob24gX19hbm9ueW1vdXMgKCkgewogICAgIGlmIGQuZ2V0VmFyKCdUQ0xJQkMnKSAhPSAiZ2xpYmMiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiaW5jb21wYXRpYmxlIHdpdGggJXMgQyBsaWJyYXJ5IiAlCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImluY29tcGF0aWJsZSB3aXRoICVzIEMgbGlicmFyeSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignVENMSUJDJykpCiB9CiAKQEAgLTY4LDcgKzcxLDYgQEAKICAgICBtYy1oZWxwZXJzLXBlcmwgXAogICAgIG1kYWRtIFwKICAgICBtaW5pY29tIFwKLSAgICBuZW9uIFwKICAgICBwYXJ0ZWQgXAogICAgIHF1b3RhIFwKICAgICBzY3JlZW4gXApAQCAtMTU5LDcgKzE2MSw2IEBACiAgICAgbWt0ZW1wIFwKICAgICBtc210cCBcCiAgICAgcGF0Y2ggXAotICAgIHBheCBcCiAgICAgcHJvY3BzIFwKICAgICBwc21pc2MgXAogICAgIHNlZCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vbGlicGFtLXh0ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCmluZGV4IGJlNjg3NDUuLjdlZGY2NmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCkBAIC0zLDE4ICszLDIwIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogS2FuZyBLYWkgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0gTGludXgtUEFNLTEuMS40L3h0ZXN0cy9NYWtlZmlsZS5hbS5vcmlnCTIwMTEtMDctMTkgMTc6MDA6MDkuNjE5OTgwMDAxICswODAwCi0rKysgTGludXgtUEFNLTEuMS40L3h0ZXN0cy9NYWtlZmlsZS5hbQkyMDExLTA3LTE5IDE2OjU0OjAwLjIyOTk3OTk5OCArMDgwMAotQEAgLTcsNyArNyw3IEBACi0gQU1fTERGTEFHUyA9IC1MJCh0b3BfYnVpbGRkaXIpL2xpYnBhbSAtbHBhbSBcCi0gCS1MJCh0b3BfYnVpbGRkaXIpL2xpYnBhbV9taXNjIC1scGFtX21pc2MKK0luZGV4OiBMaW51eC1QQU0tMS4zLjAveHRlc3RzL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gTGludXgtUEFNLTEuMy4wLm9yaWcveHRlc3RzL01ha2VmaWxlLmFtCisrKysgTGludXgtUEFNLTEuMy4wL3h0ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTcsNyArNyw3IEBAIEFNX0NGTEFHUyA9IC1ETElCUEFNX0NPTVBJTEUgLUkkKHRvcF9zcmMKKyBMREFERCA9ICQodG9wX2J1aWxkZGlyKS9saWJwYW0vbGlicGFtLmxhIFwKKyAJJCh0b3BfYnVpbGRkaXIpL2xpYnBhbV9taXNjL2xpYnBhbV9taXNjLmxhCiAgCiAtQ0xFQU5GSUxFUyA9ICp+ICQoWFRFU1RTKQogK0NMRUFORklMRVMgPSAqfgogIAogIEVYVFJBX0RJU1QgPSBydW4teHRlc3RzLnNoIHRzdC1wYW1fZGlzcGF0Y2gxLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDIucGFtZCBcCiAgCXRzdC1wYW1fZGlzcGF0Y2gzLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDQucGFtZCBcCi1AQCAtNTEsMyArNTEsMTggQEAKK0BAIC01MSwzICs1MSwxOCBAQCBFWFRSQV9QUk9HUkFNUyA9ICQoWFRFU1RTKQogIAogIHh0ZXN0czogJChYVEVTVFMpIHJ1bi14dGVzdHMuc2gKICAJIiQoc3JjZGlyKSIvcnVuLXh0ZXN0cy5zaCAiJChzcmNkaXIpIiAke1hURVNUU30gJHtOT1NSQ1RFU1RTfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3BhbS1zZWN1cml0eS1hYnN0cmFjdC1zZWN1cmV0dHktaGFuZGxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaAppbmRleCBmMTgzNGY2Li45YjhkNGMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaApAQCAtNSwxMiArNSwxMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bWluZy5saXVAd2luZHJpdmVyLmNvbT4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLWRpZmYgLXVycE4gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvTWFrZWZpbGUuYW0gYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvTWFrZWZpbGUuYW0KLS0tLSBhL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbQkyMDEzLTA3LTA1IDExOjA4OjIzLjIyNDQ4MzIzNyArMDgwMAotKysrIGIvbW9kdWxlcy9wYW1fc2VjdXJldHR5L01ha2VmaWxlLmFtCTIwMTMtMDctMDUgMTE6MTU6MjEuMzA0NDg2NDU2ICswODAwCitJbmRleDogTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExpbnV4LVBBTS0xLjMuMC5vcmlnL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbQorKysrIExpbnV4LVBBTS0xLjMuMC9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvTWFrZWZpbGUuYW0KIEBAIC0yNCw2ICsyNCwxMCBAQCBlbmRpZgogIHNlY3VyZWxpYl9MVExJQlJBUklFUyA9IHBhbV9zZWN1cmV0dHkubGEKLSBwYW1fc2VjdXJldHR5X2xhX0xJQkFERCA9IC1MJCh0b3BfYnVpbGRkaXIpL2xpYnBhbSAtbHBhbQorIHBhbV9zZWN1cmV0dHlfbGFfTElCQUREID0gJCh0b3BfYnVpbGRkaXIpL2xpYnBhbS9saWJwYW0ubGEKICAKICtwYW1fc2VjdXJldHR5X2xhX1NPVVJDRVMgPQlcCiArCXBhbV9zZWN1cmV0dHkuYwkJXApAQCAtMTksOSArMjAsMTAgQEAKICBpZiBFTkFCTEVfUkVHRU5FUkFURV9NQU4KICBub2luc3RfREFUQSA9IFJFQURNRQogIFJFQURNRTogcGFtX3NlY3VyZXR0eS44LnhtbAotZGlmZiAtdXJwTiBhL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMgYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCi0tLS0gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCTIwMTMtMDctMDUgMTE6MDc6NTAuMDY0NDgzNTY4ICswODAwCi0rKysgYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCTIwMTMtMDctMDUgMTE6MTI6MjMuOTk0NDgzMzQ0ICswODAwCitJbmRleDogTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBMaW51eC1QQU0tMS4zLjAub3JpZy9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCisrKysgTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMKIEBAIC0xLDcgKzEsNSBAQAogIC8qIHBhbV9zZWN1cmV0dHkgbW9kdWxlICovCiAgCkBAIC0xMDQsOSArMTA2LDEwIEBACiAgCiAgICAgIGlmIChyZXR2YWwgJiYgIShjdHJsICYgUEFNX05PQ09OU09MRV9BUkcpKSB7CiAgICAgICAgICBGSUxFICpjbWRsaW5lZmlsZTsKLWRpZmYgLXVycE4gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvdHR5X3NlY3VyZS5jIGIvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYwotLS0tIGEvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYwkxOTcwLTAxLTAxIDA4OjMwOjAwLjAwMDAwMDAwMCArMDgzMAotKysrIGIvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYwkyMDEzLTA3LTA1IDExOjE0OjIxLjUzNDQ4MjkwMCArMDgwMAorSW5kZXg6IExpbnV4LVBBTS0xLjMuMC9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvdHR5X3NlY3VyZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCisrKysgTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS90dHlfc2VjdXJlLmMKIEBAIC0wLDAgKzEsOTAgQEAKICsvKgogKyAqIEEgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGEgcGFydGljdWxhciBsaW5lIGlzIGluIC9ldGMvc2VjdXJldHR5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIKaW5kZXggOGY3NzUzZC4uOTJhYjcyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYgpAQCAtMTUxLDExICsxNTEsOCBAQAogCWZpCiB9CiAKLXB5dGhvbiBkb19wYW1fc2FuaXR5ICgpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIGJiLndhcm4oIkJ1aWxkaW5nIGxpYnBhbSBidXQgJ3BhbScgaXNuJ3QgaW4gRElTVFJPX0ZFQVRVUkVTLCBQQU0gd29uJ3Qgd29yayBjb3JyZWN0bHkiKQotfQotYWRkdGFzayBwYW1fc2FuaXR5IGJlZm9yZSBkb19jb25maWd1cmUKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayBuYXRpdmUiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL25vX2NoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvbm9fY2hlY2sucGF0Y2gKaW5kZXggNThkOGRiNC4uZTZhMjZkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvbm9fY2hlY2sucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvbm9fY2hlY2sucGF0Y2gKQEAgLTUsMTIgKzUsMTIgQEAKIAogUlAgLSA0LzExLzA4CiAKLUluZGV4OiBwYXJ0ZWQtMS45LjAvY29uZmlndXJlLmFjCitJbmRleDogcGFydGVkLTMuMi9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXJ0ZWQtMS45LjAub3JpZy9jb25maWd1cmUuYWMJMjAwOS0wNy0yMyAxODo1MjowOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBwYXJ0ZWQtMS45LjAvY29uZmlndXJlLmFjCTIwMTAtMDItMDIgMTQ6MTM6NTYuMDEzOTA1MDkzICswMDAwCi1AQCAtNDc3LDcgKzQ3Nyw3IEBACi0gQU1fQ09ORElUSU9OQUwoW0JVSUxEX0xJTlVYXSwgW3Rlc3QgIiRPUyIgPSBsaW51eF0pCistLS0gcGFydGVkLTMuMi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIHBhcnRlZC0zLjIvY29uZmlndXJlLmFjCitAQCAtNTU1LDcgKzU1NSw3IEBAIEFDX0NIRUNLX0hFQURFUihbZXhlY2luZm8uaF0sIFsKKyBBTV9DT05ESVRJT05BTChbQ09NUElMRV9GT1JfUzM5MF0sIFt0ZXN0ICIkaG9zdF9jcHUiID0gczM5MCB8fCB0ZXN0ICIkaG9zdF9jcHUiID0gczM5MHhdKQogIAogIGRubCBjaGVjayBmb3IgImNoZWNrIiwgdW5pdCB0ZXN0aW5nIGxpYnJhcnkvaGVhZGVyCiAtUEtHX0NIRUNLX01PRFVMRVMoW0NIRUNLXSwgW2NoZWNrID49IDAuOS4zXSwgaGF2ZV9jaGVjaz15ZXMsIGhhdmVfY2hlY2s9bm8pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9zeXNjYWxscy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3N5c2NhbGxzLnBhdGNoCmluZGV4IGU5YmJlOWEuLjkzMjA1YTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3N5c2NhbGxzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3N5c2NhbGxzLnBhdGNoCkBAIC00LDEwICs0LDEwIEBACiAgbGlicGFydGVkL2FyY2gvbGludXguYyB8ICAgMTMgKysrKysrKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCiAKLUluZGV4OiBwYXJ0ZWQtMS45LjAvbGlicGFydGVkL2FyY2gvbGludXguYworSW5kZXg6IHBhcnRlZC0zLjIvbGlicGFydGVkL2FyY2gvbGludXguYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBhcnRlZC0xLjkuMC5vcmlnL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMJMjAwOS0wNy0yMyAxODo1MjowOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBwYXJ0ZWQtMS45LjAvbGlicGFydGVkL2FyY2gvbGludXguYwkyMDEwLTAyLTAyIDE0OjE0OjE2LjUyMzkwNDc2OCArMDAwMAorLS0tIHBhcnRlZC0zLjIub3JpZy9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCisrKysgcGFydGVkLTMuMi9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCiBAQCAtMTcsNiArMTcsOCBAQAogIAogICNkZWZpbmUgUFJPQ19ERVZJQ0VTX0JVRlNJWiAxNjM4NApAQCAtMTYsOCArMTYsOCBAQAogKwogICNpbmNsdWRlIDxjb25maWcuaD4KICAjaW5jbHVkZSA8YXJjaC9saW51eC5oPgotIAotQEAgLTE0NzcsMTIgKzE0NzksMTQgQEAKKyAjaW5jbHVkZSA8bGludXgvYmxrcGcuaD4KK0BAIC0xNjk2LDEyICsxNjk4LDE0IEBAIGxpbnV4X3JlZnJlc2hfY2xvc2UgKFBlZERldmljZSogZGV2KQogIAogICNpZiBTSVpFT0ZfT0ZGX1QgPCA4CiAgCkBAIC0zMiw3ICszMiw3IEBACiAgCiAgbG9mZl90CiAgbGxzZWVrICh1bnNpZ25lZCBpbnQgZmQsIGxvZmZfdCBvZmZzZXQsIHVuc2lnbmVkIGludCB3aGVuY2UpCi1AQCAtMTQ5MCwxMSArMTQ5NCwyMCBAQAorQEAgLTE3MDksMTEgKzE3MTMsMjAgQEAgbGxzZWVrICh1bnNpZ25lZCBpbnQgZmQsIGxvZmZfdCBvZmZzZXQsCiAgICAgICAgICBsb2ZmX3QgcmVzdWx0OwogICAgICAgICAgaW50IHJldHZhbDsKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUFkZC1hLWNvbW1lbnQtZm9yLWZhbGx0aHJvdWdoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NmY4NWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGU2N2JiM2RlYmU1ODJmMGU3Nzc3MGI3MTRiZDAxMmJiMTA4MmZjNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOSBBcHIgMjAxNyAxMTozMjowMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBBZGQgYSBjb21tZW50IGZvciBmYWxsdGhyb3VnaAotCi1GaXhlcyB3YXJuaW5ncyB3aXRoIGdjYzcgZS5nLgotCi0uLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY2Uvc291cmNlcy9wYXgvc3JjL29wdGlvbnMuYzogSW4gZnVuY3Rpb24gJ3Rhcl9vcHRpb25zJzoKLS4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjZS9zb3VyY2VzL3BheC9zcmMvb3B0aW9ucy5jOjcyNTo3OiBlcnJvcjogdGhpcyBzdGF0ZW1lbnQgbWF5IGZhbGwgdGhyb3VnaCBbLVdlcnJvcj1pbXBsaWNpdC1mYWxsdGhyb3VnaD1dCi0gICAgaWYgKG9wdF9hZGQgKCJ3cml0ZV9vcHQ9bm9kaXIiKSA8IDApCi0gICAgICAgXgotLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNlL3NvdXJjZXMvcGF4L3NyYy9vcHRpb25zLmM6NzMwOjI6IG5vdGU6IGhlcmUKLSAgY2FzZSAnTyc6Ci0gIF5+fn4KLWNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL29wdGlvbnMuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL29wdGlvbnMuYyBiL3NyYy9vcHRpb25zLmMKLWluZGV4IGM2NjNiNGUuLmI4MDgxOWEgMTAwNjQ0Ci0tLS0gYS9zcmMvb3B0aW9ucy5jCi0rKysgYi9zcmMvb3B0aW9ucy5jCi1AQCAtNzI0LDYgKzcyNCw3IEBAIHRhcl9vcHRpb25zIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCWNhc2UgJ28nOgotIAkgIGlmIChvcHRfYWRkICgid3JpdGVfb3B0PW5vZGlyIikgPCAwKQotIAkgICAgdGFyX3VzYWdlICgpOwotKwkgIC8qIGZhbGx0aHJ1ICovCi0gCWNhc2UgJ08nOgotIAkgIE9mbGFnID0gMTsKLSAJICBicmVhazsKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWJmMmRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjg3ICswLDAgQEAKLUZyb20gNDdjNGRiOGQzNzI0OGQ5NjhmYWM3ZWU0YTcxY2E2NDM5ODg5MDcyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDYgSmFuIDIwMTYgMTE6NTc6MjEgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggbXVzbAotCi1SZW1vdmUgQlNEaXNtcwotUmVtb3ZlIGZ0cywgYW5kIGxpbmsgdG8gbGliZnRzIHRoYXRzIHByb3ZpZGVkIGV4dGVybmFsbHkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW211c2wgc3BlY2lmaWNdCi0KLSBsaWIvTWFrZWZpbGUuYW0gfCAgICA0ICstCi0gbGliL2Z0cy5jICAgICAgIHwgMTAyNSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gbGliL2Z0cy5oICAgICAgIHwgIDEzMSAtLS0tLS0tCi0gbGliL3Zpcy5oICAgICAgIHwgICAxMyArLQotIHNyYy9NYWtlZmlsZS5hbSB8ICAgIDIgKy0KLSBzcmMvZXh0ZXJuLmggICAgfCAgICAyIC0KLSBzcmMvZmlsZV9zdWJzLmMgfCAgICAyICstCi0gc3JjL3RhYmxlcy5jICAgIHwgICAgMiArLQotIDggZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTE2NyBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgbGliL2Z0cy5jCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYi9mdHMuaAotCi1kaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLmFtIGIvbGliL01ha2VmaWxlLmFtCi1pbmRleCA1NmQwODU5Li43ZjUwNDVhIDEwMDY0NAotLS0tIGEvbGliL01ha2VmaWxlLmFtCi0rKysgYi9saWIvTWFrZWZpbGUuYW0KLUBAIC04LDggKzgsOCBAQCBBVVRPTUFLRV9PUFRJT05TID0gMS43IGduaXRzCi0gQ0xFQU5GSUxFUyA9ICp+Ci0gCi0gbm9pbnN0X0xJQlJBUklFUyA9IGxpYmJzZGZ1bmMuYQotLW5vaW5zdF9IRUFERVJTID0gdmlzLmggYnNkZnVuYy5oIGZ0cy5oCi0rbm9pbnN0X0hFQURFUlMgPSB2aXMuaCBic2RmdW5jLmgKLSAKLSBBTV9DRkxBR1MgPSBARVhUUkFfQ0ZMQUdTQAotIAotLWxpYmJzZGZ1bmNfYV9TT1VSQ0VTID0gdmlzLmMgc3RybGNweS5jIHN0cm1vZGUuYyBmdHMuYwotK2xpYmJzZGZ1bmNfYV9TT1VSQ0VTID0gdmlzLmMgc3RybGNweS5jIHN0cm1vZGUuYwotZGlmZiAtLWdpdCBhL2xpYi9mdHMuYyBiL2xpYi9mdHMuYwotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA0NWU5MGNhLi4wMDAwMDAwCi0tLS0gYS9saWIvZnRzLmMKLSsrKyAvZGV2L251bGwKLUBAIC0xLDEwMjUgKzAsMCBAQAotLS8qLQotLSAqIENvcHlyaWdodCAoYykgMTk5MCwgMTk5MywgMTk5NAotLSAqICAgICAgVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0tICoKLS0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS0gKiBhcmUgbWV0OgotLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0tICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0tICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0tICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLS0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLS0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS0gKgotLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0tICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0tICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLS0gKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLS0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0tICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0tICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLS0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0tICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotLSAqIFNVQ0ggREFNQUdFLgotLSAqLwotLQotLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0tI2luY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZgotLQotLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotLSNpbmNsdWRlIDxmY250bC5oPgotLSNpbmNsdWRlIDxkaXJlbnQuaD4KLS0jaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZnRzLmg+Ci0tI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0tCi0tLyogTGFyZ2VzdCBhbGlnbm1lbnQgc2l6ZSBuZWVkZWQsIG1pbnVzIG9uZS4KLS0gICBVc3VhbGx5IGxvbmcgZG91YmxlIGlzIHRoZSB3b3JzdCBjYXNlLiAgKi8KLS0jaWZuZGVmIEFMSUdOQllURVMKLS0jZGVmaW5lIEFMSUdOQllURVMJKF9fYWxpZ25vZl9fIChsb25nIGRvdWJsZSkgLSAxKQotLSNlbmRpZgotLS8qIEFsaWduIFAgdG8gdGhhdCBzaXplLiAgKi8KLS0jaWZuZGVmIEFMSUdOCi0tI2RlZmluZQlBTElHTihwKQkoKCh1bnNpZ25lZCBsb25nIGludCkgKHApICsgQUxJR05CWVRFUykgJiB+QUxJR05CWVRFUykKLS0jZW5kaWYKLS0KLS0KLS1zdGF0aWMgRlRTRU5UCSpmdHNfYWxsb2MgKEZUUyAqLCBjb25zdCBjaGFyICosIGludCk7Ci0tc3RhdGljIEZUU0VOVAkqZnRzX2J1aWxkIChGVFMgKiwgaW50KTsKLS1zdGF0aWMgdm9pZAkgZnRzX2xmcmVlIChGVFNFTlQgKik7Ci0tc3RhdGljIHZvaWQJIGZ0c19sb2FkIChGVFMgKiwgRlRTRU5UICopOwotLXN0YXRpYyBzaXplX3QJIGZ0c19tYXhhcmdsZW4gKGNoYXIgKiBjb25zdCAqKTsKLS1zdGF0aWMgdm9pZAkgZnRzX3BhZGp1c3QgKEZUUyAqLCBGVFNFTlQgKik7Ci0tc3RhdGljIGludAkgZnRzX3BhbGxvYyAoRlRTICosIHNpemVfdCk7Ci0tc3RhdGljIEZUU0VOVAkqZnRzX3NvcnQgKEZUUyAqLCBGVFNFTlQgKiwgaW50KTsKLS1zdGF0aWMgdV9zaG9ydAkgZnRzX3N0YXQgKEZUUyAqLCBGVFNFTlQgKiwgaW50KTsKLS1zdGF0aWMgaW50ICAgICAgZnRzX3NhZmVfY2hhbmdlZGlyIChGVFMgKiwgRlRTRU5UICosIGludCwgY29uc3QgY2hhciAqKTsKLS0KLS0jaWZuZGVmIE1BWAotLSNkZWZpbmUgTUFYKGEsIGIpCShhID4gYiA/IGEgOiBiKQotLSNlbmRpZgotLQotLSNkZWZpbmUJSVNET1QoYSkJKGFbMF0gPT0gJy4nICYmICghYVsxXSB8fCAoYVsxXSA9PSAnLicgJiYgIWFbMl0pKSkKLS0KLS0jZGVmaW5lIENMUihvcHQpCShzcC0+ZnRzX29wdGlvbnMgJj0gfihvcHQpKQotLSNkZWZpbmUJSVNTRVQob3B0KQkoc3AtPmZ0c19vcHRpb25zICYgKG9wdCkpCi0tI2RlZmluZQlTRVQob3B0KQkoc3AtPmZ0c19vcHRpb25zIHw9IChvcHQpKQotLQotLSNkZWZpbmUJRkNIRElSKHNwLCBmZCkJKCFJU1NFVChGVFNfTk9DSERJUikgJiYgZmNoZGlyKGZkKSkKLS0KLS0jZGVmaW5lCUJSRUFECQkzCQkvKiBmdHNfcmVhZCAqLwotLQotLUZUUyAqCi0tZnRzX29wZW4oYXJndiwga29wdGlvbnMsIGNvbXBhcikKLS0JY2hhciAqIGNvbnN0ICphcmd2OwotLQlyZWdpc3RlciBpbnQga29wdGlvbnM7Ci0tCWludCAoKmNvbXBhcikgKGNvbnN0IEZUU0VOVCAqKiwgY29uc3QgRlRTRU5UICoqKTsKLS17Ci0tCXJlZ2lzdGVyIEZUUyAqc3A7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcCwgKnJvb3Q7Ci0tCXJlZ2lzdGVyIGludCBuaXRlbXM7Ci0tCUZUU0VOVCAqcGFyZW50LCAqdG1wOwotLQlpbnQgbGVuOwotLQotLXRtcCA9IE5VTEw7CS8qIHN0b3AgY29tcGlsZXIgd2hpbmdpbmcgKi8KLS0JLyogT3B0aW9ucyBjaGVjay4gKi8KLS0JaWYgKGtvcHRpb25zICYgfkZUU19PUFRJT05NQVNLKSB7Ci0tCQllcnJubyA9IEVJTlZBTDsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0KLS0JLyogQWxsb2NhdGUvaW5pdGlhbGl6ZSB0aGUgc3RyZWFtICovCi0tCWlmICgoc3AgPSBtYWxsb2MoKHVfaW50KXNpemVvZihGVFMpKSkgPT0gTlVMTCkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCW1lbXNldChzcCwgMCwgc2l6ZW9mKEZUUykpOwotLQlzcC0+ZnRzX2NvbXBhciA9IChpbnQgKCopIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpIGNvbXBhcjsKLS0Jc3AtPmZ0c19vcHRpb25zID0ga29wdGlvbnM7Ci0tCi0tCS8qIExvZ2ljYWwgd2Fsa3MgdHVybiBvbiBOT0NIRElSOyBzeW1ib2xpYyBsaW5rcyBhcmUgdG9vIGhhcmQuICovCi0tCWlmIChJU1NFVChGVFNfTE9HSUNBTCkpCi0tCQlTRVQoRlRTX05PQ0hESVIpOwotLQotLQkvKgotLQkgKiBTdGFydCBvdXQgd2l0aCAxSyBvZiBwYXRoIHNwYWNlLCBhbmQgZW5vdWdoLCBpbiBhbnkgY2FzZSwKLS0JICogdG8gaG9sZCB0aGUgdXNlcidzIHBhdGhzLgotLQkgKi8KLS0jaWZuZGVmIE1BWFBBVEhMRU4KLS0jZGVmaW5lIE1BWFBBVEhMRU4gMTAyNAotLSNlbmRpZgotLQlpZiAoZnRzX3BhbGxvYyhzcCwgTUFYKGZ0c19tYXhhcmdsZW4oYXJndiksIE1BWFBBVEhMRU4pKSkKLS0JCWdvdG8gbWVtMTsKLS0KLS0JLyogQWxsb2NhdGUvaW5pdGlhbGl6ZSByb290J3MgcGFyZW50LiAqLwotLQlpZiAoKHBhcmVudCA9IGZ0c19hbGxvYyhzcCwgIiIsIDApKSA9PSBOVUxMKQotLQkJZ290byBtZW0yOwotLQlwYXJlbnQtPmZ0c19sZXZlbCA9IEZUU19ST09UUEFSRU5UTEVWRUw7Ci0tCi0tCS8qIEFsbG9jYXRlL2luaXRpYWxpemUgcm9vdChzKS4gKi8KLS0JZm9yIChyb290ID0gTlVMTCwgbml0ZW1zID0gMDsgKmFyZ3YgIT0gTlVMTDsgKythcmd2LCArK25pdGVtcykgewotLQkJLyogRG9uJ3QgYWxsb3cgemVyby1sZW5ndGggcGF0aHMuICovCi0tCQlpZiAoKGxlbiA9IHN0cmxlbigqYXJndikpID09IDApIHsKLS0JCQllcnJubyA9IEVOT0VOVDsKLS0JCQlnb3RvIG1lbTM7Ci0tCQl9Ci0tCi0tCQlwID0gZnRzX2FsbG9jKHNwLCAqYXJndiwgbGVuKTsKLS0JCXAtPmZ0c19sZXZlbCA9IEZUU19ST09UTEVWRUw7Ci0tCQlwLT5mdHNfcGFyZW50ID0gcGFyZW50OwotLQkJcC0+ZnRzX2FjY3BhdGggPSBwLT5mdHNfbmFtZTsKLS0JCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIHAsIElTU0VUKEZUU19DT01GT0xMT1cpKTsKLS0KLS0JCS8qIENvbW1hbmQtbGluZSAiLiIgYW5kICIuLiIgYXJlIHJlYWwgZGlyZWN0b3JpZXMuICovCi0tCQlpZiAocC0+ZnRzX2luZm8gPT0gRlRTX0RPVCkKLS0JCQlwLT5mdHNfaW5mbyA9IEZUU19EOwotLQotLQkJLyoKLS0JCSAqIElmIGNvbXBhcmlzb24gcm91dGluZSBzdXBwbGllZCwgdHJhdmVyc2UgaW4gc29ydGVkCi0tCQkgKiBvcmRlcjsgb3RoZXJ3aXNlIHRyYXZlcnNlIGluIHRoZSBvcmRlciBzcGVjaWZpZWQuCi0tCQkgKi8KLS0JCWlmIChjb21wYXIpIHsKLS0JCQlwLT5mdHNfbGluayA9IHJvb3Q7Ci0tCQkJcm9vdCA9IHA7Ci0tCQl9IGVsc2UgewotLQkJCXAtPmZ0c19saW5rID0gTlVMTDsKLS0JCQlpZiAocm9vdCA9PSBOVUxMKQotLQkJCQl0bXAgPSByb290ID0gcDsKLS0JCQllbHNlIHsKLS0JCQkJdG1wLT5mdHNfbGluayA9IHA7Ci0tCQkJCXRtcCA9IHA7Ci0tCQkJfQotLQkJfQotLQl9Ci0tCWlmIChjb21wYXIgJiYgbml0ZW1zID4gMSkKLS0JCXJvb3QgPSBmdHNfc29ydChzcCwgcm9vdCwgbml0ZW1zKTsKLS0KLS0JLyoKLS0JICogQWxsb2NhdGUgYSBkdW1teSBwb2ludGVyIGFuZCBtYWtlIGZ0c19yZWFkIHRoaW5rIHRoYXQgd2UndmUganVzdAotLQkgKiBmaW5pc2hlZCB0aGUgbm9kZSBiZWZvcmUgdGhlIHJvb3Qocyk7IHNldCBwLT5mdHNfaW5mbyB0byBGVFNfSU5JVAotLQkgKiBzbyB0aGF0IGV2ZXJ5dGhpbmcgYWJvdXQgdGhlICJjdXJyZW50IiBub2RlIGlzIGlnbm9yZWQuCi0tCSAqLwotLQlpZiAoKHNwLT5mdHNfY3VyID0gZnRzX2FsbG9jKHNwLCAiIiwgMCkpID09IE5VTEwpCi0tCQlnb3RvIG1lbTM7Ci0tCXNwLT5mdHNfY3VyLT5mdHNfbGluayA9IHJvb3Q7Ci0tCXNwLT5mdHNfY3VyLT5mdHNfaW5mbyA9IEZUU19JTklUOwotLQotLQkvKgotLQkgKiBJZiB1c2luZyBjaGRpcigyKSwgZ3JhYiBhIGZpbGUgZGVzY3JpcHRvciBwb2ludGluZyB0byBkb3QgdG8gZW5zdXJlCi0tCSAqIHRoYXQgd2UgY2FuIGdldCBiYWNrIGhlcmU7IHRoaXMgY291bGQgYmUgYXZvaWRlZCBmb3Igc29tZSBwYXRocywKLS0JICogYnV0IGFsbW9zdCBjZXJ0YWlubHkgbm90IHdvcnRoIHRoZSBlZmZvcnQuICBTbGFzaGVzLCBzeW1ib2xpYyBsaW5rcywKLS0JICogYW5kICIuLiIgYXJlIGFsbCBmYWlybHkgbmFzdHkgcHJvYmxlbXMuICBOb3RlLCBpZiB3ZSBjYW4ndCBnZXQgdGhlCi0tCSAqIGRlc2NyaXB0b3Igd2UgcnVuIGFueXdheSwganVzdCBtb3JlIHNsb3dseS4KLS0JICovCi0tCWlmICghSVNTRVQoRlRTX05PQ0hESVIpCi0tCSAgICAmJiAoc3AtPmZ0c19yZmQgPSBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApCi0tCQlTRVQoRlRTX05PQ0hESVIpOwotLQotLQlyZXR1cm4gKHNwKTsKLS0KLS1tZW0zOglmdHNfbGZyZWUocm9vdCk7Ci0tCWZyZWUocGFyZW50KTsKLS1tZW0yOglmcmVlKHNwLT5mdHNfcGF0aCk7Ci0tbWVtMToJZnJlZShzcCk7Ci0tCXJldHVybiAoTlVMTCk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tZnRzX2xvYWQoc3AsIHApCi0tCUZUUyAqc3A7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcDsKLS17Ci0tCXJlZ2lzdGVyIGludCBsZW47Ci0tCXJlZ2lzdGVyIGNoYXIgKmNwOwotLQotLQkvKgotLQkgKiBMb2FkIHRoZSBzdHJlYW0gc3RydWN0dXJlIGZvciB0aGUgbmV4dCB0cmF2ZXJzYWwuICBTaW5jZSB3ZSBkb24ndAotLQkgKiBhY3R1YWxseSBlbnRlciB0aGUgZGlyZWN0b3J5IHVudGlsIGFmdGVyIHRoZSBwcmVvcmRlciB2aXNpdCwgc2V0Ci0tCSAqIHRoZSBmdHNfYWNjcGF0aCBmaWVsZCBzcGVjaWFsbHkgc28gdGhlIGNoZGlyIGdldHMgZG9uZSB0byB0aGUgcmlnaHQKLS0JICogcGxhY2UgYW5kIHRoZSB1c2VyIGNhbiBhY2Nlc3MgdGhlIGZpcnN0IG5vZGUuICBGcm9tIGZ0c19vcGVuIGl0J3MKLS0JICoga25vd24gdGhhdCB0aGUgcGF0aCB3aWxsIGZpdC4KLS0JICovCi0tCWxlbiA9IHAtPmZ0c19wYXRobGVuID0gcC0+ZnRzX25hbWVsZW47Ci0tCW1lbW1vdmUoc3AtPmZ0c19wYXRoLCBwLT5mdHNfbmFtZSwgbGVuICsgMSk7Ci0tCWlmICgoY3AgPSBzdHJyY2hyKHAtPmZ0c19uYW1lLCAnLycpKSAmJiAoY3AgIT0gcC0+ZnRzX25hbWUgfHwgY3BbMV0pKSB7Ci0tCQlsZW4gPSBzdHJsZW4oKytjcCk7Ci0tCQltZW1tb3ZlKHAtPmZ0c19uYW1lLCBjcCwgbGVuICsgMSk7Ci0tCQlwLT5mdHNfbmFtZWxlbiA9IGxlbjsKLS0JfQotLQlwLT5mdHNfYWNjcGF0aCA9IHAtPmZ0c19wYXRoID0gc3AtPmZ0c19wYXRoOwotLQlzcC0+ZnRzX2RldiA9IHAtPmZ0c19kZXY7Ci0tfQotLQotLWludAotLWZ0c19jbG9zZShzcCkKLS0JRlRTICpzcDsKLS17Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqZnJlZXAsICpwOwotLQlpbnQgc2F2ZWRfZXJybm87Ci0tCi0tCS8qCi0tCSAqIFRoaXMgc3RpbGwgd29ya3MgaWYgd2UgaGF2ZW4ndCByZWFkIGFueXRoaW5nIC0tIHRoZSBkdW1teSBzdHJ1Y3R1cmUKLS0JICogcG9pbnRzIHRvIHRoZSByb290IGxpc3QsIHNvIHdlIHN0ZXAgdGhyb3VnaCB0byB0aGUgZW5kIG9mIHRoZSByb290Ci0tCSAqIGxpc3Qgd2hpY2ggaGFzIGEgdmFsaWQgcGFyZW50IHBvaW50ZXIuCi0tCSAqLwotLQlpZiAoc3AtPmZ0c19jdXIpIHsKLS0JCWZvciAocCA9IHNwLT5mdHNfY3VyOyBwLT5mdHNfbGV2ZWwgPj0gRlRTX1JPT1RMRVZFTDspIHsKLS0JCQlmcmVlcCA9IHA7Ci0tCQkJcCA9IHAtPmZ0c19saW5rICE9IE5VTEwgPyBwLT5mdHNfbGluayA6IHAtPmZ0c19wYXJlbnQ7Ci0tCQkJZnJlZShmcmVlcCk7Ci0tCQl9Ci0tCQlmcmVlKHApOwotLQl9Ci0tCi0tCS8qIEZyZWUgdXAgY2hpbGQgbGlua2VkIGxpc3QsIHNvcnQgYXJyYXksIHBhdGggYnVmZmVyLiAqLwotLQlpZiAoc3AtPmZ0c19jaGlsZCkKLS0JCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLS0JaWYgKHNwLT5mdHNfYXJyYXkpCi0tCQlmcmVlKHNwLT5mdHNfYXJyYXkpOwotLQlmcmVlKHNwLT5mdHNfcGF0aCk7Ci0tCi0tCS8qIFJldHVybiB0byBvcmlnaW5hbCBkaXJlY3RvcnksIHNhdmUgZXJybm8gaWYgbmVjZXNzYXJ5LiAqLwotLQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSkgewotLQkJc2F2ZWRfZXJybm8gPSBmY2hkaXIoc3AtPmZ0c19yZmQpID8gZXJybm8gOiAwOwotLQkJKHZvaWQpY2xvc2Uoc3AtPmZ0c19yZmQpOwotLQotLQkJLyogU2V0IGVycm5vIGFuZCByZXR1cm4uICovCi0tCQlpZiAoc2F2ZWRfZXJybm8gIT0gMCkgewotLQkJCS8qIEZyZWUgdXAgdGhlIHN0cmVhbSBwb2ludGVyLiAqLwotLQkJCWZyZWUoc3ApOwotLQkJCWVycm5vID0gc2F2ZWRfZXJybm87Ci0tCQkJcmV0dXJuICgtMSk7Ci0tCQl9Ci0tCX0KLS0KLS0JLyogRnJlZSB1cCB0aGUgc3RyZWFtIHBvaW50ZXIuICovCi0tCWZyZWUoc3ApOwotLQlyZXR1cm4gKDApOwotLX0KLS0KLS0vKgotLSAqIFNwZWNpYWwgY2FzZSBvZiAiLyIgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCBzbyB0aGF0IHNsYXNoZXMgYXJlbid0Ci0tICogYXBwZW5kZWQgd2hpY2ggd291bGQgY2F1c2UgcGF0aHMgdG8gYmUgd3JpdHRlbiBhcyAiLi4uLi8vZm9vIi4KLS0gKi8KLS0jZGVmaW5lCU5BUFBFTkQocCkJCQkJCQkJXAotLQkocC0+ZnRzX3BhdGhbcC0+ZnRzX3BhdGhsZW4gLSAxXSA9PSAnLycJCQkJXAotLQkgICAgPyBwLT5mdHNfcGF0aGxlbiAtIDEgOiBwLT5mdHNfcGF0aGxlbikKLS0KLS1GVFNFTlQgKgotLWZ0c19yZWFkKHNwKQotLQlyZWdpc3RlciBGVFMgKnNwOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwLCAqdG1wOwotLQlyZWdpc3RlciBpbnQgaW5zdHI7Ci0tCXJlZ2lzdGVyIGNoYXIgKnQ7Ci0tCWludCBzYXZlZF9lcnJubzsKLS0KLS0JLyogSWYgZmluaXNoZWQgb3IgdW5yZWNvdmVyYWJsZSBlcnJvciwgcmV0dXJuIE5VTEwuICovCi0tCWlmIChzcC0+ZnRzX2N1ciA9PSBOVUxMIHx8IElTU0VUKEZUU19TVE9QKSkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCi0tCS8qIFNldCBjdXJyZW50IG5vZGUgcG9pbnRlci4gKi8KLS0JcCA9IHNwLT5mdHNfY3VyOwotLQotLQkvKiBTYXZlIGFuZCB6ZXJvIG91dCB1c2VyIGluc3RydWN0aW9ucy4gKi8KLS0JaW5zdHIgPSBwLT5mdHNfaW5zdHI7Ci0tCXAtPmZ0c19pbnN0ciA9IEZUU19OT0lOU1RSOwotLQotLQkvKiBBbnkgdHlwZSBvZiBmaWxlIG1heSBiZSByZS12aXNpdGVkOyByZS1zdGF0IGFuZCByZS10dXJuLiAqLwotLQlpZiAoaW5zdHIgPT0gRlRTX0FHQUlOKSB7Ci0tCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBwLCAwKTsKLS0JCXJldHVybiAocCk7Ci0tCX0KLS0KLS0JLyoKLS0JICogRm9sbG93aW5nIGEgc3ltbGluayAtLSBTTE5PTkUgdGVzdCBhbGxvd3MgYXBwbGljYXRpb24gdG8gc2VlCi0tCSAqIFNMTk9ORSBhbmQgcmVjb3Zlci4gIElmIGluZGlyZWN0aW5nIHRocm91Z2ggYSBzeW1saW5rLCBoYXZlCi0tCSAqIGtlZXAgYSBwb2ludGVyIHRvIGN1cnJlbnQgbG9jYXRpb24uICBJZiB1bmFibGUgdG8gZ2V0IHRoYXQKLS0JICogcG9pbnRlciwgZm9sbG93IGZhaWxzLgotLQkgKi8KLS0JaWYgKGluc3RyID09IEZUU19GT0xMT1cgJiYKLS0JICAgIChwLT5mdHNfaW5mbyA9PSBGVFNfU0wgfHwgcC0+ZnRzX2luZm8gPT0gRlRTX1NMTk9ORSkpIHsKLS0JCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIHAsIDEpOwotLQkJaWYgKHAtPmZ0c19pbmZvID09IEZUU19EICYmICFJU1NFVChGVFNfTk9DSERJUikpIHsKLS0JCQlpZiAoKHAtPmZ0c19zeW1mZCA9IG9wZW4oIi4iLCBPX1JET05MWSwgMCkpIDwgMCkgewotLQkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS0JCQkJcC0+ZnRzX2luZm8gPSBGVFNfRVJSOwotLQkJCX0gZWxzZQotLQkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX1NZTUZPTExPVzsKLS0JCX0KLS0JCXJldHVybiAocCk7Ci0tCX0KLS0KLS0JLyogRGlyZWN0b3J5IGluIHByZS1vcmRlci4gKi8KLS0JaWYgKHAtPmZ0c19pbmZvID09IEZUU19EKSB7Ci0tCQkvKiBJZiBza2lwcGVkIG9yIGNyb3NzZWQgbW91bnQgcG9pbnQsIGRvIHBvc3Qtb3JkZXIgdmlzaXQuICovCi0tCQlpZiAoaW5zdHIgPT0gRlRTX1NLSVAgfHwKLS0JCSAgICAoSVNTRVQoRlRTX1hERVYpICYmIHAtPmZ0c19kZXYgIT0gc3AtPmZ0c19kZXYpKSB7Ci0tCQkJaWYgKHAtPmZ0c19mbGFncyAmIEZUU19TWU1GT0xMT1cpCi0tCQkJCSh2b2lkKWNsb3NlKHAtPmZ0c19zeW1mZCk7Ci0tCQkJaWYgKHNwLT5mdHNfY2hpbGQpIHsKLS0JCQkJZnRzX2xmcmVlKHNwLT5mdHNfY2hpbGQpOwotLQkJCQlzcC0+ZnRzX2NoaWxkID0gTlVMTDsKLS0JCQl9Ci0tCQkJcC0+ZnRzX2luZm8gPSBGVFNfRFA7Ci0tCQkJcmV0dXJuIChwKTsKLS0JCX0KLS0KLS0JCS8qIFJlYnVpbGQgaWYgb25seSByZWFkIHRoZSBuYW1lcyBhbmQgbm93IHRyYXZlcnNpbmcuICovCi0tCQlpZiAoc3AtPmZ0c19jaGlsZCAhPSBOVUxMICYmIElTU0VUKEZUU19OQU1FT05MWSkpIHsKLS0JCQlDTFIoRlRTX05BTUVPTkxZKTsKLS0JCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0tCQkJc3AtPmZ0c19jaGlsZCA9IE5VTEw7Ci0tCQl9Ci0tCi0tCQkvKgotLQkJICogQ2QgdG8gdGhlIHN1YmRpcmVjdG9yeS4KLS0JCSAqCi0tCQkgKiBJZiBoYXZlIGFscmVhZHkgcmVhZCBhbmQgbm93IGZhaWwgdG8gY2hkaXIsIHdoYWNrIHRoZSBsaXN0Ci0tCQkgKiB0byBtYWtlIHRoZSBuYW1lcyBjb21lIG91dCByaWdodCwgYW5kIHNldCB0aGUgcGFyZW50IGVycm5vCi0tCQkgKiBzbyB0aGUgYXBwbGljYXRpb24gd2lsbCBldmVudHVhbGx5IGdldCBhbiBlcnJvciBjb25kaXRpb24uCi0tCQkgKiBTZXQgdGhlIEZUU19ET05UQ0hESVIgZmxhZyBzbyB0aGF0IHdoZW4gd2UgbG9naWNhbGx5IGNoYW5nZQotLQkJICogZGlyZWN0b3JpZXMgYmFjayB0byB0aGUgcGFyZW50IHdlIGRvbid0IGRvIGEgY2hkaXIuCi0tCQkgKgotLQkJICogSWYgaGF2ZW4ndCByZWFkIGRvIHNvLiAgSWYgdGhlIHJlYWQgZmFpbHMsIGZ0c19idWlsZCBzZXRzCi0tCQkgKiBGVFNfU1RPUCBvciB0aGUgZnRzX2luZm8gZmllbGQgb2YgdGhlIG5vZGUuCi0tCQkgKi8KLS0JCWlmIChzcC0+ZnRzX2NoaWxkICE9IE5VTEwpIHsKLS0JCQlpZiAoZnRzX3NhZmVfY2hhbmdlZGlyKHNwLCBwLCAtMSwgcC0+ZnRzX2FjY3BhdGgpKSB7Ci0tCQkJCXAtPmZ0c19lcnJubyA9IGVycm5vOwotLQkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX0RPTlRDSERJUjsKLS0JCQkJZm9yIChwID0gc3AtPmZ0c19jaGlsZDsgcCAhPSBOVUxMOwotLQkJCQkgICAgIHAgPSBwLT5mdHNfbGluaykKLS0JCQkJCXAtPmZ0c19hY2NwYXRoID0KLS0JCQkJCSAgICBwLT5mdHNfcGFyZW50LT5mdHNfYWNjcGF0aDsKLS0JCQl9Ci0tCQl9IGVsc2UgaWYgKChzcC0+ZnRzX2NoaWxkID0gZnRzX2J1aWxkKHNwLCBCUkVBRCkpID09IE5VTEwpIHsKLS0JCQlpZiAoSVNTRVQoRlRTX1NUT1ApKQotLQkJCQlyZXR1cm4gKE5VTEwpOwotLQkJCXJldHVybiAocCk7Ci0tCQl9Ci0tCQlwID0gc3AtPmZ0c19jaGlsZDsKLS0JCXNwLT5mdHNfY2hpbGQgPSBOVUxMOwotLQkJZ290byBuYW1lOwotLQl9Ci0tCi0tCS8qIE1vdmUgdG8gdGhlIG5leHQgbm9kZSBvbiB0aGlzIGxldmVsLiAqLwotLW5leHQ6CXRtcCA9IHA7Ci0tCWlmICgocCA9IHAtPmZ0c19saW5rKSAhPSBOVUxMKSB7Ci0tCQlmcmVlKHRtcCk7Ci0tCi0tCQkvKgotLQkJICogSWYgcmVhY2hlZCB0aGUgdG9wLCByZXR1cm4gdG8gdGhlIG9yaWdpbmFsIGRpcmVjdG9yeSAob3IKLS0JCSAqIHRoZSByb290IG9mIHRoZSB0cmVlKSwgYW5kIGxvYWQgdGhlIHBhdGhzIGZvciB0aGUgbmV4dCByb290LgotLQkJICovCi0tCQlpZiAocC0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwpIHsKLS0JCQlpZiAoRkNIRElSKHNwLCBzcC0+ZnRzX3JmZCkpIHsKLS0JCQkJU0VUKEZUU19TVE9QKTsKLS0JCQkJcmV0dXJuIChOVUxMKTsKLS0JCQl9Ci0tCQkJZnRzX2xvYWQoc3AsIHApOwotLQkJCXJldHVybiAoc3AtPmZ0c19jdXIgPSBwKTsKLS0JCX0KLS0KLS0JCS8qCi0tCQkgKiBVc2VyIG1heSBoYXZlIGNhbGxlZCBmdHNfc2V0IG9uIHRoZSBub2RlLiAgSWYgc2tpcHBlZCwKLS0JCSAqIGlnbm9yZS4gIElmIGZvbGxvd2VkLCBnZXQgYSBmaWxlIGRlc2NyaXB0b3Igc28gd2UgY2FuCi0tCQkgKiBnZXQgYmFjayBpZiBuZWNlc3NhcnkuCi0tCQkgKi8KLS0JCWlmIChwLT5mdHNfaW5zdHIgPT0gRlRTX1NLSVApCi0tCQkJZ290byBuZXh0OwotLQkJaWYgKHAtPmZ0c19pbnN0ciA9PSBGVFNfRk9MTE9XKSB7Ci0tCQkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgcCwgMSk7Ci0tCQkJaWYgKHAtPmZ0c19pbmZvID09IEZUU19EICYmICFJU1NFVChGVFNfTk9DSERJUikpIHsKLS0JCQkJaWYgKChwLT5mdHNfc3ltZmQgPQotLQkJCQkgICAgb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKSB7Ci0tCQkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS0JCQkJCXAtPmZ0c19pbmZvID0gRlRTX0VSUjsKLS0JCQkJfSBlbHNlCi0tCQkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX1NZTUZPTExPVzsKLS0JCQl9Ci0tCQkJcC0+ZnRzX2luc3RyID0gRlRTX05PSU5TVFI7Ci0tCQl9Ci0tCi0tbmFtZToJCXQgPSBzcC0+ZnRzX3BhdGggKyBOQVBQRU5EKHAtPmZ0c19wYXJlbnQpOwotLQkJKnQrKyA9ICcvJzsKLS0JCW1lbW1vdmUodCwgcC0+ZnRzX25hbWUsIHAtPmZ0c19uYW1lbGVuICsgMSk7Ci0tCQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0tCX0KLS0KLS0JLyogTW92ZSB1cCB0byB0aGUgcGFyZW50IG5vZGUuICovCi0tCXAgPSB0bXAtPmZ0c19wYXJlbnQ7Ci0tCWZyZWUodG1wKTsKLS0KLS0JaWYgKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVFBBUkVOVExFVkVMKSB7Ci0tCQkvKgotLQkJICogRG9uZTsgZnJlZSBldmVyeXRoaW5nIHVwIGFuZCBzZXQgZXJybm8gdG8gMCBzbyB0aGUgdXNlcgotLQkJICogY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gZXJyb3IgYW5kIEVPRi4KLS0JCSAqLwotLQkJZnJlZShwKTsKLS0JCWVycm5vID0gMDsKLS0JCXJldHVybiAoc3AtPmZ0c19jdXIgPSBOVUxMKTsKLS0JfQotLQotLQkvKiBOVUwgdGVybWluYXRlIHRoZSBwYXRobmFtZS4gKi8KLS0Jc3AtPmZ0c19wYXRoW3AtPmZ0c19wYXRobGVuXSA9ICdcMCc7Ci0tCi0tCS8qCi0tCSAqIFJldHVybiB0byB0aGUgcGFyZW50IGRpcmVjdG9yeS4gIElmIGF0IGEgcm9vdCBub2RlIG9yIGNhbWUgdGhyb3VnaAotLQkgKiBhIHN5bWxpbmssIGdvIGJhY2sgdGhyb3VnaCB0aGUgZmlsZSBkZXNjcmlwdG9yLiAgT3RoZXJ3aXNlLCBjZCB1cAotLQkgKiBvbmUgZGlyZWN0b3J5LgotLQkgKi8KLS0JaWYgKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMKSB7Ci0tCQlpZiAoRkNIRElSKHNwLCBzcC0+ZnRzX3JmZCkpIHsKLS0JCQlTRVQoRlRTX1NUT1ApOwotLQkJCXJldHVybiAoTlVMTCk7Ci0tCQl9Ci0tCX0gZWxzZSBpZiAocC0+ZnRzX2ZsYWdzICYgRlRTX1NZTUZPTExPVykgewotLQkJaWYgKEZDSERJUihzcCwgcC0+ZnRzX3N5bWZkKSkgewotLQkJCXNhdmVkX2Vycm5vID0gZXJybm87Ci0tCQkJKHZvaWQpY2xvc2UocC0+ZnRzX3N5bWZkKTsKLS0JCQllcnJubyA9IHNhdmVkX2Vycm5vOwotLQkJCVNFVChGVFNfU1RPUCk7Ci0tCQkJcmV0dXJuIChOVUxMKTsKLS0JCX0KLS0JCSh2b2lkKWNsb3NlKHAtPmZ0c19zeW1mZCk7Ci0tCX0gZWxzZSBpZiAoIShwLT5mdHNfZmxhZ3MgJiBGVFNfRE9OVENIRElSKSAmJgotLQkJICAgZnRzX3NhZmVfY2hhbmdlZGlyKHNwLCBwLT5mdHNfcGFyZW50LCAtMSwgIi4uIikpIHsKLS0JCVNFVChGVFNfU1RPUCk7Ci0tCQlyZXR1cm4gKE5VTEwpOwotLQl9Ci0tCXAtPmZ0c19pbmZvID0gcC0+ZnRzX2Vycm5vID8gRlRTX0VSUiA6IEZUU19EUDsKLS0JcmV0dXJuIChzcC0+ZnRzX2N1ciA9IHApOwotLX0KLS0KLS0vKgotLSAqIEZ0c19zZXQgdGFrZXMgdGhlIHN0cmVhbSBhcyBhbiBhcmd1bWVudCBhbHRob3VnaCBpdCdzIG5vdCB1c2VkIGluIHRoaXMKLS0gKiBpbXBsZW1lbnRhdGlvbjsgaXQgd291bGQgYmUgbmVjZXNzYXJ5IGlmIGFueW9uZSB3YW50ZWQgdG8gYWRkIGdsb2JhbAotLSAqIHNlbWFudGljcyB0byBmdHMgdXNpbmcgZnRzX3NldC4gIEFuIGVycm9yIHJldHVybiBpcyBhbGxvd2VkIGZvciBzaW1pbGFyCi0tICogcmVhc29ucy4KLS0gKi8KLS0vKiBBUkdTVVNFRCAqLwotLWludAotLWZ0c19zZXQoc3AsIHAsIGluc3RyKQotLQlGVFMgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpICpzcDsKLS0JRlRTRU5UICpwOwotLQlpbnQgaW5zdHI7Ci0tewotLXNwID0gTlVMTDsJLyogc3RvcCBjb21waWxlciB3aGluZ2luZyAqLwotLQlpZiAoaW5zdHIgIT0gMCAmJiBpbnN0ciAhPSBGVFNfQUdBSU4gJiYgaW5zdHIgIT0gRlRTX0ZPTExPVyAmJgotLQkgICAgaW5zdHIgIT0gRlRTX05PSU5TVFIgJiYgaW5zdHIgIT0gRlRTX1NLSVApIHsKLS0JCWVycm5vID0gRUlOVkFMOwotLQkJcmV0dXJuICgxKTsKLS0JfQotLQlwLT5mdHNfaW5zdHIgPSBpbnN0cjsKLS0JcmV0dXJuICgwKTsKLS19Ci0tCi0tLyoKLS0gKiBUaGlzIGlzIHRoZSB0cmlja3kgcGFydCAtLSBkbyBub3QgY2FzdWFsbHkgY2hhbmdlICphbnl0aGluZyogaW4gaGVyZS4gIFRoZQotLSAqIGlkZWEgaXMgdG8gYnVpbGQgdGhlIGxpbmtlZCBsaXN0IG9mIGVudHJpZXMgdGhhdCBhcmUgdXNlZCBieSBmdHNfY2hpbGRyZW4KLS0gKiBhbmQgZnRzX3JlYWQuICBUaGVyZSBhcmUgbG90cyBvZiBzcGVjaWFsIGNhc2VzLgotLSAqCi0tICogVGhlIHJlYWwgc2xvd2Rvd24gaW4gd2Fsa2luZyB0aGUgdHJlZSBpcyB0aGUgc3RhdCBjYWxscy4gIElmIEZUU19OT1NUQVQgaXMKLS0gKiBzZXQgYW5kIGl0J3MgYSBwaHlzaWNhbCB3YWxrIChzbyB0aGF0IHN5bWJvbGljIGxpbmtzIGNhbid0IGJlIGRpcmVjdG9yaWVzKSwKLS0gKiB3ZSBjYW4gZG8gdGhpbmdzIHF1aWNrbHkuICBGaXJzdCwgaWYgaXQncyBhIDQuNEJTRCBmaWxlIHN5c3RlbSwgdGhlIHR5cGUKLS0gKiBvZiB0aGUgZmlsZSBpcyBpbiB0aGUgZGlyZWN0b3J5IGVudHJ5LiAgT3RoZXJ3aXNlLCB3ZSBhc3N1bWUgdGhhdCB0aGUgbnVtYmVyCi0tICogb2Ygc3ViZGlyZWN0b3JpZXMgaW4gYSBub2RlIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgbGlua3MgdG8gdGhlIHBhcmVudC4KLS0gKiBUaGUgZm9ybWVyIHNraXBzIGFsbCBzdGF0IGNhbGxzLiAgVGhlIGxhdHRlciBza2lwcyBzdGF0IGNhbGxzIGluIGFueSBsZWFmCi0tICogZGlyZWN0b3JpZXMgYW5kIGZvciBhbnkgZmlsZXMgYWZ0ZXIgdGhlIHN1YmRpcmVjdG9yaWVzIGluIHRoZSBkaXJlY3RvcnkgaGF2ZQotLSAqIGJlZW4gZm91bmQsIGN1dHRpbmcgdGhlIHN0YXQgY2FsbHMgYnkgYWJvdXQgMi8zLgotLSAqLwotLXN0YXRpYyBGVFNFTlQgKgotLWZ0c19idWlsZChzcCwgdHlwZSkKLS0JcmVnaXN0ZXIgRlRTICpzcDsKLS0JaW50IHR5cGU7Ci0tewotLQlyZWdpc3RlciBzdHJ1Y3QgZGlyZW50ICpkcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwLCAqaGVhZDsKLS0JcmVnaXN0ZXIgaW50IG5pdGVtczsKLS0JRlRTRU5UICpjdXIsICp0YWlsOwotLQlESVIgKmRpcnA7Ci0tCXZvaWQgKm9sZGFkZHI7Ci0tCWludCBjZGVycm5vLCBkZXNjZW5kLCBsZW4sIGxldmVsLCBubGlua3MsIHNhdmVkX2Vycm5vLAotLQkgICAgbm9zdGF0LCBkb2FkanVzdDsKLS0Jc2l6ZV90IG1heGxlbjsKLS0JY2hhciAqY3A7Ci0tCi0tCS8qIFNldCBjdXJyZW50IG5vZGUgcG9pbnRlci4gKi8KLS0JY3VyID0gc3AtPmZ0c19jdXI7Ci0tCi0tCS8qCi0tCSAqIE9wZW4gdGhlIGRpcmVjdG9yeSBmb3IgcmVhZGluZy4gIElmIHRoaXMgZmFpbHMsIHdlJ3JlIGRvbmUuCi0tCSAqIElmIGJlaW5nIGNhbGxlZCBmcm9tIGZ0c19yZWFkLCBzZXQgdGhlIGZ0c19pbmZvIGZpZWxkLgotLQkgKi8KLS0gICAgICAgaWYgKChkaXJwID0gb3BlbmRpcihjdXItPmZ0c19hY2NwYXRoKSkgPT0gTlVMTCkgewotLQkJaWYgKHR5cGUgPT0gQlJFQUQpIHsKLS0JCQljdXItPmZ0c19pbmZvID0gRlRTX0ROUjsKLS0JCQljdXItPmZ0c19lcnJubyA9IGVycm5vOwotLQkJfQotLQkJcmV0dXJuIChOVUxMKTsKLS0JfQotLQotLQkvKgotLQkgKiBObGlua3MgaXMgdGhlIG51bWJlciBvZiBwb3NzaWJsZSBlbnRyaWVzIG9mIHR5cGUgZGlyZWN0b3J5IGluIHRoZQotLQkgKiBkaXJlY3RvcnkgaWYgd2UncmUgY2hlYXRpbmcgb24gc3RhdCBjYWxscywgMCBpZiB3ZSdyZSBub3QgZG9pbmcKLS0JICogYW55IHN0YXQgY2FsbHMgYXQgYWxsLCAtMSBpZiB3ZSdyZSBkb2luZyBzdGF0cyBvbiBldmVyeXRoaW5nLgotLQkgKi8KLS0JbmxpbmtzID0gLTE7Ci0tCW5vc3RhdCA9IDA7Ci0tCi0tCS8qCi0tCSAqIElmIHdlJ3JlIGdvaW5nIHRvIG5lZWQgdG8gc3RhdCBhbnl0aGluZyBvciB3ZSB3YW50IHRvIGRlc2NlbmQKLS0JICogYW5kIHN0YXkgaW4gdGhlIGRpcmVjdG9yeSwgY2hkaXIuICBJZiB0aGlzIGZhaWxzIHdlIGtlZXAgZ29pbmcsCi0tCSAqIGJ1dCBzZXQgYSBmbGFnIHNvIHdlIGRvbid0IGNoZGlyIGFmdGVyIHRoZSBwb3N0LW9yZGVyIHZpc2l0LgotLQkgKiBXZSB3b24ndCBiZSBhYmxlIHRvIHN0YXQgYW55dGhpbmcsIGJ1dCB3ZSBjYW4gc3RpbGwgcmV0dXJuIHRoZQotLQkgKiBuYW1lcyB0aGVtc2VsdmVzLiAgTm90ZSwgdGhhdCBzaW5jZSBmdHNfcmVhZCB3b24ndCBiZSBhYmxlIHRvCi0tCSAqIGNoZGlyIGludG8gdGhlIGRpcmVjdG9yeSwgaXQgd2lsbCBoYXZlIHRvIHJldHVybiBkaWZmZXJlbnQgcGF0aAotLQkgKiBuYW1lcyB0aGFuIGJlZm9yZSwgaS5lLiAiYS9iIiBpbnN0ZWFkIG9mICJiIi4gIFNpbmNlIHRoZSBub2RlCi0tCSAqIGhhcyBhbHJlYWR5IGJlZW4gdmlzaXRlZCBpbiBwcmUtb3JkZXIsIGhhdmUgdG8gd2FpdCB1bnRpbCB0aGUKLS0JICogcG9zdC1vcmRlciB2aXNpdCB0byByZXR1cm4gdGhlIGVycm9yLiAgVGhlcmUgaXMgYSBzcGVjaWFsIGNhc2UKLS0JICogaGVyZSwgaWYgdGhlcmUgd2FzIG5vdGhpbmcgdG8gc3RhdCB0aGVuIGl0J3Mgbm90IGFuIGVycm9yIHRvCi0tCSAqIG5vdCBiZSBhYmxlIHRvIHN0YXQuICBUaGlzIGlzIGFsbCBmYWlybHkgbmFzdHkuICBJZiBhIHByb2dyYW0KLS0JICogbmVlZGVkIHNvcnRlZCBlbnRyaWVzIG9yIHN0YXQgaW5mb3JtYXRpb24sIHRoZXkgaGFkIGJldHRlciBiZQotLQkgKiBjaGVja2luZyBGVFNfTlMgb24gdGhlIHJldHVybmVkIG5vZGVzLgotLQkgKi8KLS0JY2RlcnJubyA9IDA7Ci0tCWlmIChubGlua3MgfHwgdHlwZSA9PSBCUkVBRCkgewotLQkJaWYgKGZ0c19zYWZlX2NoYW5nZWRpcihzcCwgY3VyLCBkaXJmZChkaXJwKSwgTlVMTCkpIHsKLS0JCQlpZiAobmxpbmtzICYmIHR5cGUgPT0gQlJFQUQpCi0tCQkJCWN1ci0+ZnRzX2Vycm5vID0gZXJybm87Ci0tCQkJY3VyLT5mdHNfZmxhZ3MgfD0gRlRTX0RPTlRDSERJUjsKLS0JCQlkZXNjZW5kID0gMDsKLS0JCQljZGVycm5vID0gZXJybm87Ci0tCQkJKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0tCQkJZGlycCA9IE5VTEw7Ci0tCQl9IGVsc2UKLS0JCQlkZXNjZW5kID0gMTsKLS0JfSBlbHNlCi0tCQlkZXNjZW5kID0gMDsKLS0KLS0JLyoKLS0JICogRmlndXJlIG91dCB0aGUgbWF4IGZpbGUgbmFtZSBsZW5ndGggdGhhdCBjYW4gYmUgc3RvcmVkIGluIHRoZQotLQkgKiBjdXJyZW50IHBhdGggLS0gdGhlIGlubmVyIGxvb3AgYWxsb2NhdGVzIG1vcmUgcGF0aCBhcyBuZWNlc3NhcnkuCi0tCSAqIFdlIHJlYWxseSB3b3VsZG4ndCBoYXZlIHRvIGRvIHRoZSBtYXhsZW4gY2FsY3VsYXRpb25zIGhlcmUsIHdlCi0tCSAqIGNvdWxkIGRvIHRoZW0gaW4gZnRzX3JlYWQgYmVmb3JlIHJldHVybmluZyB0aGUgcGF0aCwgYnV0IGl0J3MgYQotLQkgKiBsb3QgZWFzaWVyIGhlcmUgc2luY2UgdGhlIGxlbmd0aCBpcyBwYXJ0IG9mIHRoZSBkaXJlbnQgc3RydWN0dXJlLgotLQkgKgotLQkgKiBJZiBub3QgY2hhbmdpbmcgZGlyZWN0b3JpZXMgc2V0IGEgcG9pbnRlciBzbyB0aGF0IGNhbiBqdXN0IGFwcGVuZAotLQkgKiBlYWNoIG5ldyBuYW1lIGludG8gdGhlIHBhdGguCi0tCSAqLwotLQlsZW4gPSBOQVBQRU5EKGN1cik7Ci0tCWlmIChJU1NFVChGVFNfTk9DSERJUikpIHsKLS0JCWNwID0gc3AtPmZ0c19wYXRoICsgbGVuOwotLQkJKmNwKysgPSAnLyc7Ci0tCX0gZWxzZSB7Ci0tCQkvKiBHQ0MsIHlvdSdyZSB0b28gdmVyYm9zZS4gKi8KLS0JCWNwID0gTlVMTDsKLS0JfQotLQlsZW4rKzsKLS0JbWF4bGVuID0gc3AtPmZ0c19wYXRobGVuIC0gbGVuOwotLQotLQlsZXZlbCA9IGN1ci0+ZnRzX2xldmVsICsgMTsKLS0KLS0JLyogUmVhZCB0aGUgZGlyZWN0b3J5LCBhdHRhY2hpbmcgZWFjaCBlbnRyeSB0byB0aGUgYGxpbmsnIHBvaW50ZXIuICovCi0tCWRvYWRqdXN0ID0gMDsKLS0JZm9yIChoZWFkID0gdGFpbCA9IE5VTEwsIG5pdGVtcyA9IDA7IGRpcnAgJiYgKGRwID0gcmVhZGRpcihkaXJwKSk7KSB7Ci0tCQlpZiAoIUlTU0VUKEZUU19TRUVET1QpICYmIElTRE9UKGRwLT5kX25hbWUpKQotLQkJCWNvbnRpbnVlOwotLQotLQkJaWYgKChwID0gZnRzX2FsbG9jKHNwLCBkcC0+ZF9uYW1lLCAoaW50KV9EX0VYQUNUX05BTUxFTiAoZHApKSkgPT0gTlVMTCkKLS0JCQlnb3RvIG1lbTE7Ci0tCQlpZiAoX0RfRVhBQ1RfTkFNTEVOIChkcCkgPj0gbWF4bGVuKSB7LyogaW5jbHVkZSBzcGFjZSBmb3IgTlVMICovCi0tCQkJb2xkYWRkciA9IHNwLT5mdHNfcGF0aDsKLS0JCQlpZiAoZnRzX3BhbGxvYyhzcCwgX0RfRVhBQ1RfTkFNTEVOIChkcCkgKyBsZW4gKyAxKSkgewotLQkJCQkvKgotLQkJCQkgKiBObyBtb3JlIG1lbW9yeSBmb3IgcGF0aCBvciBzdHJ1Y3R1cmVzLiAgU2F2ZQotLQkJCQkgKiBlcnJubywgZnJlZSB1cCB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgYW5kIHRoZQotLQkJCQkgKiBzdHJ1Y3R1cmVzIGFscmVhZHkgYWxsb2NhdGVkLgotLQkJCQkgKi8KLS1tZW0xOgkJCQlzYXZlZF9lcnJubyA9IGVycm5vOwotLQkJCQlpZiAocCkKLS0JCQkJCWZyZWUocCk7Ci0tCQkJCWZ0c19sZnJlZShoZWFkKTsKLS0JCQkJKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0tCQkJCWN1ci0+ZnRzX2luZm8gPSBGVFNfRVJSOwotLQkJCQlTRVQoRlRTX1NUT1ApOwotLQkJCQllcnJubyA9IHNhdmVkX2Vycm5vOwotLQkJCQlyZXR1cm4gKE5VTEwpOwotLQkJCX0KLS0JCQkvKiBEaWQgcmVhbGxvYygpIGNoYW5nZSB0aGUgcG9pbnRlcj8gKi8KLS0JCQlpZiAob2xkYWRkciAhPSBzcC0+ZnRzX3BhdGgpIHsKLS0JCQkJZG9hZGp1c3QgPSAxOwotLQkJCQlpZiAoSVNTRVQoRlRTX05PQ0hESVIpKQotLQkJCQkJY3AgPSBzcC0+ZnRzX3BhdGggKyBsZW47Ci0tCQkJfQotLQkJCW1heGxlbiA9IHNwLT5mdHNfcGF0aGxlbiAtIGxlbjsKLS0JCX0KLS0KLS0JCWlmIChsZW4gKyBfRF9FWEFDVF9OQU1MRU4gKGRwKSA+PSAweDEwMDAwKSB7Ci0tCQkJLyoKLS0JCQkgKiBJbiBhbiBGVFNFTlQsIGZ0c19wYXRobGVuIGlzIGEgdV9zaG9ydCBzbyBpdCBpcwotLQkJCSAqIHBvc3NpYmxlIHRvIHdyYXBhcm91bmQgaGVyZS4gIElmIHdlIGRvLCBmcmVlIHVwCi0tCQkJICogdGhlIGN1cnJlbnQgc3RydWN0dXJlIGFuZCB0aGUgc3RydWN0dXJlcyBhbHJlYWR5Ci0tCQkJICogYWxsb2NhdGVkLCB0aGVuIGVycm9yIG91dCB3aXRoIEVOQU1FVE9PTE9ORy4KLS0JCQkgKi8KLS0JCQlmcmVlKHApOwotLQkJCWZ0c19sZnJlZShoZWFkKTsKLS0JCQkodm9pZCljbG9zZWRpcihkaXJwKTsKLS0JCQljdXItPmZ0c19pbmZvID0gRlRTX0VSUjsKLS0JCQlTRVQoRlRTX1NUT1ApOwotLQkJCWVycm5vID0gRU5BTUVUT09MT05HOwotLQkJCXJldHVybiAoTlVMTCk7Ci0tCQl9Ci0tCQlwLT5mdHNfbGV2ZWwgPSBsZXZlbDsKLS0JCXAtPmZ0c19wYXJlbnQgPSBzcC0+ZnRzX2N1cjsKLS0JCXAtPmZ0c19wYXRobGVuID0gbGVuICsgX0RfRVhBQ1RfTkFNTEVOIChkcCk7Ci0tCi0tI2lmIGRlZmluZWQgRlRTX1dISVRFT1VUICYmIDAKLS0JCWlmIChkcC0+ZF90eXBlID09IERUX1dIVCkKLS0JCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX0lTVzsKLS0jZW5kaWYKLS0KLS0JCWlmIChjZGVycm5vKSB7Ci0tCQkJaWYgKG5saW5rcykgewotLQkJCQlwLT5mdHNfaW5mbyA9IEZUU19OUzsKLS0JCQkJcC0+ZnRzX2Vycm5vID0gY2RlcnJubzsKLS0JCQl9IGVsc2UKLS0JCQkJcC0+ZnRzX2luZm8gPSBGVFNfTlNPSzsKLS0JCQlwLT5mdHNfYWNjcGF0aCA9IGN1ci0+ZnRzX2FjY3BhdGg7Ci0tCQl9IGVsc2UgaWYgKG5saW5rcyA9PSAwCi0tI2lmIGRlZmluZWQgRFRfRElSICYmIGRlZmluZWQgX0RJUkVOVF9IQVZFX0RfVFlQRQotLQkJCSAgIHx8IChub3N0YXQgJiYKLS0JCQkgICAgICAgZHAtPmRfdHlwZSAhPSBEVF9ESVIgJiYgZHAtPmRfdHlwZSAhPSBEVF9VTktOT1dOKQotLSNlbmRpZgotLQkJICAgICkgewotLQkJCXAtPmZ0c19hY2NwYXRoID0KLS0JCQkgICAgSVNTRVQoRlRTX05PQ0hESVIpID8gcC0+ZnRzX3BhdGggOiBwLT5mdHNfbmFtZTsKLS0JCQlwLT5mdHNfaW5mbyA9IEZUU19OU09LOwotLQkJfSBlbHNlIHsKLS0JCQkvKiBCdWlsZCBhIGZpbGUgbmFtZSBmb3IgZnRzX3N0YXQgdG8gc3RhdC4gKi8KLS0JCQlpZiAoSVNTRVQoRlRTX05PQ0hESVIpKSB7Ci0tCQkJCXAtPmZ0c19hY2NwYXRoID0gcC0+ZnRzX3BhdGg7Ci0tCQkJCW1lbW1vdmUoY3AsIHAtPmZ0c19uYW1lLCBwLT5mdHNfbmFtZWxlbiArIDEpOwotLQkJCX0gZWxzZQotLQkJCQlwLT5mdHNfYWNjcGF0aCA9IHAtPmZ0c19uYW1lOwotLQkJCS8qIFN0YXQgaXQuICovCi0tCQkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgcCwgMCk7Ci0tCi0tCQkJLyogRGVjcmVtZW50IGxpbmsgY291bnQgaWYgYXBwbGljYWJsZS4gKi8KLS0JCQlpZiAobmxpbmtzID4gMCAmJiAocC0+ZnRzX2luZm8gPT0gRlRTX0QgfHwKLS0JCQkgICAgcC0+ZnRzX2luZm8gPT0gRlRTX0RDIHx8IHAtPmZ0c19pbmZvID09IEZUU19ET1QpKQotLQkJCQktLW5saW5rczsKLS0JCX0KLS0KLS0JCS8qIFdlIHdhbGsgaW4gZGlyZWN0b3J5IG9yZGVyIHNvICJscyAtZiIgZG9lc24ndCBnZXQgdXBzZXQuICovCi0tCQlwLT5mdHNfbGluayA9IE5VTEw7Ci0tCQlpZiAoaGVhZCA9PSBOVUxMKQotLQkJCWhlYWQgPSB0YWlsID0gcDsKLS0JCWVsc2UgewotLQkJCXRhaWwtPmZ0c19saW5rID0gcDsKLS0JCQl0YWlsID0gcDsKLS0JCX0KLS0JCSsrbml0ZW1zOwotLQl9Ci0tCWlmIChkaXJwKQotLQkJKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0tCi0tCS8qCi0tCSAqIElmIHJlYWxsb2MoKSBjaGFuZ2VkIHRoZSBhZGRyZXNzIG9mIHRoZSBwYXRoLCBhZGp1c3QgdGhlCi0tCSAqIGFkZHJlc3NlcyBmb3IgdGhlIHJlc3Qgb2YgdGhlIHRyZWUgYW5kIHRoZSBkaXIgbGlzdC4KLS0JICovCi0tCWlmIChkb2FkanVzdCkKLS0JCWZ0c19wYWRqdXN0KHNwLCBoZWFkKTsKLS0KLS0JLyoKLS0JICogSWYgbm90IGNoYW5naW5nIGRpcmVjdG9yaWVzLCByZXNldCB0aGUgcGF0aCBiYWNrIHRvIG9yaWdpbmFsCi0tCSAqIHN0YXRlLgotLQkgKi8KLS0JaWYgKElTU0VUKEZUU19OT0NIRElSKSkgewotLQkJaWYgKGxlbiA9PSBzcC0+ZnRzX3BhdGhsZW4gfHwgbml0ZW1zID09IDApCi0tCQkJLS1jcDsKLS0JCSpjcCA9ICdcMCc7Ci0tCX0KLS0KLS0JLyoKLS0JICogSWYgZGVzY2VuZGVkIGFmdGVyIGNhbGxlZCBmcm9tIGZ0c19jaGlsZHJlbiBvciBhZnRlciBjYWxsZWQgZnJvbQotLQkgKiBmdHNfcmVhZCBhbmQgbm90aGluZyBmb3VuZCwgZ2V0IGJhY2suICBBdCB0aGUgcm9vdCBsZXZlbCB3ZSB1c2UKLS0JICogdGhlIHNhdmVkIGZkOyBpZiBvbmUgb2YgZnRzX29wZW4oKSdzIGFyZ3VtZW50cyBpcyBhIHJlbGF0aXZlIHBhdGgKLS0JICogdG8gYW4gZW1wdHkgZGlyZWN0b3J5LCB3ZSB3aW5kIHVwIGhlcmUgd2l0aCBubyBvdGhlciB3YXkgYmFjay4gIElmCi0tCSAqIGNhbid0IGdldCBiYWNrLCB3ZSdyZSBkb25lLgotLQkgKi8KLS0JaWYgKGRlc2NlbmQgJiYgbml0ZW1zID09IDAgJiYKLS0JICAgIChjdXItPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMID8KLS0JICAgICBGQ0hESVIoc3AsIHNwLT5mdHNfcmZkKSA6Ci0tCSAgICAgZnRzX3NhZmVfY2hhbmdlZGlyKHNwLCBjdXItPmZ0c19wYXJlbnQsIC0xLCAiLi4iKSkpIHsKLS0JCWN1ci0+ZnRzX2luZm8gPSBGVFNfRVJSOwotLQkJU0VUKEZUU19TVE9QKTsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0KLS0JLyogSWYgZGlkbid0IGZpbmQgYW55dGhpbmcsIHJldHVybiBOVUxMLiAqLwotLQlpZiAoIW5pdGVtcykgewotLQkJaWYgKHR5cGUgPT0gQlJFQUQpCi0tCQkJY3VyLT5mdHNfaW5mbyA9IEZUU19EUDsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0KLS0JLyogU29ydCB0aGUgZW50cmllcy4gKi8KLS0JaWYgKHNwLT5mdHNfY29tcGFyICYmIG5pdGVtcyA+IDEpCi0tCQloZWFkID0gZnRzX3NvcnQoc3AsIGhlYWQsIG5pdGVtcyk7Ci0tCXJldHVybiAoaGVhZCk7Ci0tfQotLQotLXN0YXRpYyB1X3Nob3J0Ci0tZnRzX3N0YXQoc3AsIHAsIGZvbGxvdykKLS0JRlRTICpzcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotLQlpbnQgZm9sbG93OwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICp0OwotLQlyZWdpc3RlciBkZXZfdCBkZXY7Ci0tCXJlZ2lzdGVyIGlub190IGlubzsKLS0Jc3RydWN0IHN0YXQgKnNicDsKLS0JaW50IHNhdmVkX2Vycm5vOwotLQotLQkvKiBJZiB1c2VyIG5lZWRzIHN0YXQgaW5mbywgc3RhdCBidWZmZXIgYWxyZWFkeSBhbGxvY2F0ZWQuICovCi0tCXNicCA9IHAtPmZ0c19zdGF0cDsKLS0KLS0jaWYgZGVmaW5lZCBGVFNfV0hJVEVPVVQgJiYgMAotLQkvKiBjaGVjayBmb3Igd2hpdGVvdXQgKi8KLS0JaWYgKHAtPmZ0c19mbGFncyAmIEZUU19JU1cpIHsKLS0JCWlmIChzYnAgIT0gJnNiKSB7Ci0tCQkJbWVtc2V0KHNicCwgJ1wwJywgc2l6ZW9mICgqc2JwKSk7Ci0tCQkJc2JwLT5zdF9tb2RlID0gU19JRldIVDsKLS0JCX0KLS0JCXJldHVybiAoRlRTX1cpOwotLSAgICAgICB9Ci0tI2VuZGlmCi0tCi0tCS8qCi0tCSAqIElmIGRvaW5nIGEgbG9naWNhbCB3YWxrLCBvciBhcHBsaWNhdGlvbiByZXF1ZXN0ZWQgRlRTX0ZPTExPVywgZG8KLS0JICogYSBzdGF0KDIpLiAgSWYgdGhhdCBmYWlscywgY2hlY2sgZm9yIGEgbm9uLWV4aXN0ZW50IHN5bWxpbmsuICBJZgotLQkgKiBmYWlsLCBzZXQgdGhlIGVycm5vIGZyb20gdGhlIHN0YXQgY2FsbC4KLS0JICovCi0tCWlmIChJU1NFVChGVFNfTE9HSUNBTCkgfHwgZm9sbG93KSB7Ci0tCQlpZiAoc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotLQkJCXNhdmVkX2Vycm5vID0gZXJybm87Ci0tCQkJaWYgKCFsc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotLQkJCQllcnJubyA9IDA7Ci0tCQkJCXJldHVybiAoRlRTX1NMTk9ORSk7Ci0tCQkJfQotLQkJCXAtPmZ0c19lcnJubyA9IHNhdmVkX2Vycm5vOwotLQkJCWdvdG8gZXJyOwotLQkJfQotLQl9IGVsc2UgaWYgKGxzdGF0KHAtPmZ0c19hY2NwYXRoLCBzYnApKSB7Ci0tCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS1lcnI6CQltZW1zZXQoc2JwLCAwLCBzaXplb2Yoc3RydWN0IHN0YXQpKTsKLS0JCXJldHVybiAoRlRTX05TKTsKLS0JfQotLQotLQlpZiAoU19JU0RJUihzYnAtPnN0X21vZGUpKSB7Ci0tCQkvKgotLQkJICogU2V0IHRoZSBkZXZpY2UvaW5vZGUuICBVc2VkIHRvIGZpbmQgY3ljbGVzIGFuZCBjaGVjayBmb3IKLS0JCSAqIGNyb3NzaW5nIG1vdW50IHBvaW50cy4gIEFsc28gcmVtZW1iZXIgdGhlIGxpbmsgY291bnQsIHVzZWQKLS0JCSAqIGluIGZ0c19idWlsZCB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHN0YXQgY2FsbHMuICBJdCBpcwotLQkJICogdW5kZXJzdG9vZCB0aGF0IHRoZXNlIGZpZWxkcyBhcmUgb25seSByZWZlcmVuY2VkIGlmIGZ0c19pbmZvCi0tCQkgKiBpcyBzZXQgdG8gRlRTX0QuCi0tCQkgKi8KLS0JCWRldiA9IHAtPmZ0c19kZXYgPSBzYnAtPnN0X2RldjsKLS0JCWlubyA9IHAtPmZ0c19pbm8gPSBzYnAtPnN0X2lubzsKLS0JCXAtPmZ0c19ubGluayA9IHNicC0+c3Rfbmxpbms7Ci0tCi0tCQlpZiAoSVNET1QocC0+ZnRzX25hbWUpKQotLQkJCXJldHVybiAoRlRTX0RPVCk7Ci0tCi0tCQkvKgotLQkJICogQ3ljbGUgZGV0ZWN0aW9uIGlzIGRvbmUgYnkgYnJ1dGUgZm9yY2Ugd2hlbiB0aGUgZGlyZWN0b3J5Ci0tCQkgKiBpcyBmaXJzdCBlbmNvdW50ZXJlZC4gIElmIHRoZSB0cmVlIGdldHMgZGVlcCBlbm91Z2ggb3IgdGhlCi0tCQkgKiBudW1iZXIgb2Ygc3ltYm9saWMgbGlua3MgdG8gZGlyZWN0b3JpZXMgaXMgaGlnaCBlbm91Z2gsCi0tCQkgKiBzb21ldGhpbmcgZmFzdGVyIG1pZ2h0IGJlIHdvcnRod2hpbGUuCi0tCQkgKi8KLS0JCWZvciAodCA9IHAtPmZ0c19wYXJlbnQ7Ci0tCQkgICAgdC0+ZnRzX2xldmVsID49IEZUU19ST09UTEVWRUw7IHQgPSB0LT5mdHNfcGFyZW50KQotLQkJCWlmIChpbm8gPT0gdC0+ZnRzX2lubyAmJiBkZXYgPT0gdC0+ZnRzX2RldikgewotLQkJCQlwLT5mdHNfY3ljbGUgPSB0OwotLQkJCQlyZXR1cm4gKEZUU19EQyk7Ci0tCQkJfQotLQkJcmV0dXJuIChGVFNfRCk7Ci0tCX0KLS0JaWYgKFNfSVNMTksoc2JwLT5zdF9tb2RlKSkKLS0JCXJldHVybiAoRlRTX1NMKTsKLS0JaWYgKFNfSVNSRUcoc2JwLT5zdF9tb2RlKSkKLS0JCXJldHVybiAoRlRTX0YpOwotLQlyZXR1cm4gKEZUU19ERUZBVUxUKTsKLS19Ci0tCi0tc3RhdGljIEZUU0VOVCAqCi0tZnRzX3NvcnQoc3AsIGhlYWQsIG5pdGVtcykKLS0JRlRTICpzcDsKLS0JRlRTRU5UICpoZWFkOwotLQlyZWdpc3RlciBpbnQgbml0ZW1zOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICoqYXAsICpwOwotLQotLQkvKgotLQkgKiBDb25zdHJ1Y3QgYW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gdGhlIHN0cnVjdHVyZXMgYW5kIGNhbGwgcXNvcnQoMykuCi0tCSAqIFJlYXNzZW1ibGUgdGhlIGFycmF5IGluIHRoZSBvcmRlciByZXR1cm5lZCBieSBxc29ydC4gIElmIHVuYWJsZSB0bwotLQkgKiBzb3J0IGZvciBtZW1vcnkgcmVhc29ucywgcmV0dXJuIHRoZSBkaXJlY3RvcnkgZW50cmllcyBpbiB0aGVpcgotLQkgKiBjdXJyZW50IG9yZGVyLiAgQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGZvciB0aGUgY3VycmVudCBuZWVkcyBwbHVzCi0tCSAqIDQwIHNvIGRvbid0IHJlYWxsb2Mgb25lIGVudHJ5IGF0IGEgdGltZS4KLS0JICovCi0tCWlmIChuaXRlbXMgPiBzcC0+ZnRzX25pdGVtcykgewotLQkJc3RydWN0IF9mdHNlbnQgKiphOwotLQotLQkJc3AtPmZ0c19uaXRlbXMgPSBuaXRlbXMgKyA0MDsKLS0JCWlmICgoYSA9IHJlYWxsb2Moc3AtPmZ0c19hcnJheSwKLS0gCQkgICAgKHNpemVfdCkoc3AtPmZ0c19uaXRlbXMgKiBzaXplb2YoRlRTRU5UICopKSkpID09IE5VTEwpIHsKLS0JCQlmcmVlKHNwLT5mdHNfYXJyYXkpOwotLQkJCXNwLT5mdHNfYXJyYXkgPSBOVUxMOwotLQkJCXNwLT5mdHNfbml0ZW1zID0gMDsKLS0JCQlyZXR1cm4gKGhlYWQpOwotLQkJfQotLQkJc3AtPmZ0c19hcnJheSA9IGE7Ci0tCX0KLS0JZm9yIChhcCA9IHNwLT5mdHNfYXJyYXksIHAgPSBoZWFkOyBwOyBwID0gcC0+ZnRzX2xpbmspCi0tCQkqYXArKyA9IHA7Ci0tCXFzb3J0KCh2b2lkICopc3AtPmZ0c19hcnJheSwgbml0ZW1zLCBzaXplb2YoRlRTRU5UICopLCBzcC0+ZnRzX2NvbXBhcik7Ci0tCWZvciAoaGVhZCA9ICooYXAgPSBzcC0+ZnRzX2FycmF5KTsgLS1uaXRlbXM7ICsrYXApCi0tCQlhcFswXS0+ZnRzX2xpbmsgPSBhcFsxXTsKLS0JYXBbMF0tPmZ0c19saW5rID0gTlVMTDsKLS0JcmV0dXJuIChoZWFkKTsKLS19Ci0tCi0tc3RhdGljIEZUU0VOVCAqCi0tZnRzX2FsbG9jKHNwLCBuYW1lLCBuYW1lbGVuKQotLQlGVFMgKnNwOwotLQljb25zdCBjaGFyICpuYW1lOwotLQlyZWdpc3RlciBpbnQgbmFtZWxlbjsKLS17Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcDsKLS0Jc2l6ZV90IGxlbjsKLS0KLS0JLyoKLS0JICogVGhlIGZpbGUgbmFtZSBpcyBhIHZhcmlhYmxlIGxlbmd0aCBhcnJheSBhbmQgbm8gc3RhdCBzdHJ1Y3R1cmUgaXMKLS0JICogbmVjZXNzYXJ5IGlmIHRoZSB1c2VyIGhhcyBzZXQgdGhlIG5vc3RhdCBiaXQuICBBbGxvY2F0ZSB0aGUgRlRTRU5UCi0tCSAqIHN0cnVjdHVyZSwgdGhlIGZpbGUgbmFtZSBhbmQgdGhlIHN0YXQgc3RydWN0dXJlIGluIG9uZSBjaHVuaywgYnV0Ci0tCSAqIGJlIGNhcmVmdWwgdGhhdCB0aGUgc3RhdCBzdHJ1Y3R1cmUgaXMgcmVhc29uYWJseSBhbGlnbmVkLiAgU2luY2UgdGhlCi0tCSAqIGZ0c19uYW1lIGZpZWxkIGlzIGRlY2xhcmVkIHRvIGJlIG9mIHNpemUgMSwgdGhlIGZ0c19uYW1lIHBvaW50ZXIgaXMKLS0JICogbmFtZWxlbiArIDIgYmVmb3JlIHRoZSBmaXJzdCBwb3NzaWJsZSBhZGRyZXNzIG9mIHRoZSBzdGF0IHN0cnVjdHVyZS4KLS0JICovCi0tCWxlbiA9IHNpemVvZihGVFNFTlQpICsgbmFtZWxlbjsKLS0JbGVuICs9IHNpemVvZihzdHJ1Y3Qgc3RhdCkgKyBBTElHTkJZVEVTOwotLQlpZiAoKHAgPSBtYWxsb2MobGVuKSkgPT0gTlVMTCkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCi0tCS8qIENvcHkgdGhlIG5hbWUgYW5kIGd1YXJhbnRlZSBOVUwgdGVybWluYXRpb24uICovCi0tCW1lbW1vdmUocC0+ZnRzX25hbWUsIG5hbWUsIG5hbWVsZW4pOwotLQlwLT5mdHNfbmFtZVtuYW1lbGVuXSA9ICdcMCc7Ci0tCi0tCXAtPmZ0c19zdGF0cCA9IChzdHJ1Y3Qgc3RhdCAqKUFMSUdOKHAtPmZ0c19uYW1lICsgbmFtZWxlbiArIDIpOwotLQlwLT5mdHNfbmFtZWxlbiA9IG5hbWVsZW47Ci0tCXAtPmZ0c19wYXRoID0gc3AtPmZ0c19wYXRoOwotLQlwLT5mdHNfZXJybm8gPSAwOwotLQlwLT5mdHNfZmxhZ3MgPSAwOwotLQlwLT5mdHNfaW5zdHIgPSBGVFNfTk9JTlNUUjsKLS0JcC0+ZnRzX251bWJlciA9IDA7Ci0tCXAtPmZ0c19wb2ludGVyID0gTlVMTDsKLS0JcmV0dXJuIChwKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1mdHNfbGZyZWUoaGVhZCkKLS0JcmVnaXN0ZXIgRlRTRU5UICpoZWFkOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotLQotLQkvKiBGcmVlIGEgbGlua2VkIGxpc3Qgb2Ygc3RydWN0dXJlcy4gKi8KLS0Jd2hpbGUgKChwID0gaGVhZCkpIHsKLS0JCWhlYWQgPSBoZWFkLT5mdHNfbGluazsKLS0JCWZyZWUocCk7Ci0tCX0KLS19Ci0tCi0tLyoKLS0gKiBBbGxvdyBlc3NlbnRpYWxseSB1bmxpbWl0ZWQgcGF0aHM7IGZpbmQsIHJtLCBscyBzaG91bGQgYWxsIHdvcmsgb24gYW55IHRyZWUuCi0tICogTW9zdCBzeXN0ZW1zIHdpbGwgYWxsb3cgY3JlYXRpb24gb2YgcGF0aHMgbXVjaCBsb25nZXIgdGhhbiBNQVhQQVRITEVOLCBldmVuCi0tICogdGhvdWdoIHRoZSBrZXJuZWwgd29uJ3QgcmVzb2x2ZSB0aGVtLiAgQWRkIHRoZSBzaXplIChub3QganVzdCB3aGF0J3MgbmVlZGVkKQotLSAqIHBsdXMgMjU2IGJ5dGVzIHNvIGRvbid0IHJlYWxsb2MgdGhlIHBhdGggMiBieXRlcyBhdCBhIHRpbWUuCi0tICovCi0tc3RhdGljIGludAotLWZ0c19wYWxsb2Moc3AsIG1vcmUpCi0tCUZUUyAqc3A7Ci0tCXNpemVfdCBtb3JlOwotLXsKLS0JY2hhciAqcDsKLS0KLS0Jc3AtPmZ0c19wYXRobGVuICs9IG1vcmUgKyAyNTY7Ci0tCS8qCi0tCSAqIENoZWNrIGZvciBwb3NzaWJsZSB3cmFwYXJvdW5kLiAgSW4gYW4gRlRTLCBmdHNfcGF0aGxlbiBpcwotLQkgKiBhIHNpZ25lZCBpbnQgYnV0IGluIGFuIEZUU0VOVCBpdCBpcyBhbiB1bnNpZ25lZCBzaG9ydC4KLS0JICogV2UgbGltaXQgZnRzX3BhdGhsZW4gdG8gVVNIUlRfTUFYIHRvIGJlIHNhZmUgaW4gYm90aCBjYXNlcy4KLS0JICovCi0tCWlmIChzcC0+ZnRzX3BhdGhsZW4gPCAwIHx8IHNwLT5mdHNfcGF0aGxlbiA+PSAweDEwMDAwKSB7Ci0tCQlpZiAoc3AtPmZ0c19wYXRoKSB7Ci0tCQkJZnJlZShzcC0+ZnRzX3BhdGgpOwotLQkJCXNwLT5mdHNfcGF0aCA9IE5VTEw7Ci0tCQl9Ci0tCQlzcC0+ZnRzX3BhdGggPSBOVUxMOwotLQkJZXJybm8gPSBFTkFNRVRPT0xPTkc7Ci0tCQlyZXR1cm4gKDEpOwotLQl9Ci0tCXAgPSByZWFsbG9jKHNwLT5mdHNfcGF0aCwgc3AtPmZ0c19wYXRobGVuKTsKLS0JaWYgKHAgPT0gTlVMTCkgewotLQkJZnJlZShzcC0+ZnRzX3BhdGgpOwotLQkJc3AtPmZ0c19wYXRoID0gTlVMTDsKLS0JCXJldHVybiAxOwotLQl9Ci0tCXNwLT5mdHNfcGF0aCA9IHA7Ci0tCXJldHVybiAwOwotLX0KLS0KLS0vKgotLSAqIFdoZW4gdGhlIHBhdGggaXMgcmVhbGxvYydkLCBoYXZlIHRvIGZpeCBhbGwgb2YgdGhlIHBvaW50ZXJzIGluIHN0cnVjdHVyZXMKLS0gKiBhbHJlYWR5IHJldHVybmVkLgotLSAqLwotLXN0YXRpYyB2b2lkCi0tZnRzX3BhZGp1c3Qoc3AsIGhlYWQpCi0tCUZUUyAqc3A7Ci0tCUZUU0VOVCAqaGVhZDsKLS17Ci0tCUZUU0VOVCAqcDsKLS0JY2hhciAqYWRkciA9IHNwLT5mdHNfcGF0aDsKLS0KLS0jZGVmaW5lCUFESlVTVChwKSBkbyB7CQkJCQkJCVwKLS0JaWYgKChwKS0+ZnRzX2FjY3BhdGggIT0gKHApLT5mdHNfbmFtZSkgewkJCVwKLS0JCShwKS0+ZnRzX2FjY3BhdGggPQkJCQkJXAotLQkJICAgIChjaGFyICopYWRkciArICgocCktPmZ0c19hY2NwYXRoIC0gKHApLT5mdHNfcGF0aCk7CVwKLS0JfQkJCQkJCQkJXAotLQkocCktPmZ0c19wYXRoID0gYWRkcjsJCQkJCQlcCi0tfSB3aGlsZSAoMCkKLS0JLyogQWRqdXN0IHRoZSBjdXJyZW50IHNldCBvZiBjaGlsZHJlbi4gKi8KLS0JZm9yIChwID0gc3AtPmZ0c19jaGlsZDsgcDsgcCA9IHAtPmZ0c19saW5rKQotLQkJQURKVVNUKHApOwotLQotLQkvKiBBZGp1c3QgdGhlIHJlc3Qgb2YgdGhlIHRyZWUsIGluY2x1ZGluZyB0aGUgY3VycmVudCBsZXZlbC4gKi8KLS0JZm9yIChwID0gaGVhZDsgcC0+ZnRzX2xldmVsID49IEZUU19ST09UTEVWRUw7KSB7Ci0tCQlBREpVU1QocCk7Ci0tCQlwID0gcC0+ZnRzX2xpbmsgPyBwLT5mdHNfbGluayA6IHAtPmZ0c19wYXJlbnQ7Ci0tCX0KLS19Ci0tCi0tc3RhdGljIHNpemVfdAotLWZ0c19tYXhhcmdsZW4oYXJndikKLS0JY2hhciAqIGNvbnN0ICphcmd2OwotLXsKLS0Jc2l6ZV90IGxlbiwgbWF4OwotLQotLQlmb3IgKG1heCA9IDA7ICphcmd2OyArK2FyZ3YpCi0tCQlpZiAoKGxlbiA9IHN0cmxlbigqYXJndikpID4gbWF4KQotLQkJCW1heCA9IGxlbjsKLS0JcmV0dXJuIChtYXggKyAxKTsKLS19Ci0tCi0tLyoKLS0gKiBDaGFuZ2UgdG8gZGlyIHNwZWNpZmllZCBieSBmZCBvciBwLT5mdHNfYWNjcGF0aCB3aXRob3V0IGdldHRpbmcKLS0gKiB0cmlja2VkIGJ5IHNvbWVvbmUgY2hhbmdpbmcgdGhlIHdvcmxkIG91dCBmcm9tIHVuZGVybmVhdGggdXMuCi0tICogQXNzdW1lcyBwLT5mdHNfZGV2IGFuZCBwLT5mdHNfaW5vIGFyZSBmaWxsZWQgaW4uCi0tICovCi0tc3RhdGljIGludAotLWZ0c19zYWZlX2NoYW5nZWRpcihzcCwgcCwgZmQsIHBhdGgpCi0tCUZUUyAqc3A7Ci0tCUZUU0VOVCAqcDsKLS0JaW50IGZkOwotLQljb25zdCBjaGFyICpwYXRoOwotLXsKLS0JaW50IHJldCwgb2Vycm5vLCBuZXdmZDsKLS0Jc3RydWN0IHN0YXQgc2I7Ci0tCi0tCW5ld2ZkID0gZmQ7Ci0tCWlmIChJU1NFVChGVFNfTk9DSERJUikpCi0tCQlyZXR1cm4gKDApOwotLQlpZiAoZmQgPCAwICYmIChuZXdmZCA9IG9wZW4ocGF0aCwgT19SRE9OTFksIDApKSA8IDApCi0tCQlyZXR1cm4gKC0xKTsKLS0JaWYgKGZzdGF0KG5ld2ZkLCAmc2IpKSB7Ci0tCQlyZXQgPSAtMTsKLS0JCWdvdG8gYmFpbDsKLS0JfQotLQlpZiAocC0+ZnRzX2RldiAhPSBzYi5zdF9kZXYgfHwgcC0+ZnRzX2lubyAhPSBzYi5zdF9pbm8pIHsKLS0JCWVycm5vID0gRU5PRU5UOwkJLyogZGlzaW5mb3JtYXRpb24gKi8KLS0JCXJldCA9IC0xOwotLQkJZ290byBiYWlsOwotLQl9Ci0tCXJldCA9IGZjaGRpcihuZXdmZCk7Ci0tYmFpbDoKLS0Jb2Vycm5vID0gZXJybm87Ci0tCWlmIChmZCA8IDApCi0tCQkodm9pZCljbG9zZShuZXdmZCk7Ci0tCWVycm5vID0gb2Vycm5vOwotLQlyZXR1cm4gKHJldCk7Ci0tfQotZGlmZiAtLWdpdCBhL2xpYi9mdHMuaCBiL2xpYi9mdHMuaAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA1ODg0NmI5Li4wMDAwMDAwCi0tLS0gYS9saWIvZnRzLmgKLSsrKyAvZGV2L251bGwKLUBAIC0xLDEzMSArMCwwIEBACi0tLyoKLS0gKiBDb3B5cmlnaHQgKGMpIDE5ODksIDE5OTMKLS0gKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS0gKgotLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLSAqIGFyZSBtZXQ6Ci0tICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0tICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0tICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS0gKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotLSAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLSAqCi0tICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLS0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLS0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotLSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0tICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLS0gKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLS0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLS0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0tICogU1VDSCBEQU1BR0UuCi0tICoKLS0gKglAKCMpZnRzLmgJOC4zIChCZXJrZWxleSkgOC8xNC85NAotLSAqLwotLQotLSNpZm5kZWYJX0ZUU19ICi0tI2RlZmluZQlfRlRTX0ggMQotLQotLSNpbmNsdWRlIDxmZWF0dXJlcy5oPgotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0KLS10eXBlZGVmIHN0cnVjdCB7Ci0tCXN0cnVjdCBfZnRzZW50ICpmdHNfY3VyOwkvKiBjdXJyZW50IG5vZGUgKi8KLS0Jc3RydWN0IF9mdHNlbnQgKmZ0c19jaGlsZDsJLyogbGlua2VkIGxpc3Qgb2YgY2hpbGRyZW4gKi8KLS0Jc3RydWN0IF9mdHNlbnQgKipmdHNfYXJyYXk7CS8qIHNvcnQgYXJyYXkgKi8KLS0JZGV2X3QgZnRzX2RldjsJCQkvKiBzdGFydGluZyBkZXZpY2UgIyAqLwotLQljaGFyICpmdHNfcGF0aDsJCQkvKiBwYXRoIGZvciB0aGlzIGRlc2NlbnQgKi8KLS0JaW50IGZ0c19yZmQ7CQkJLyogZmQgZm9yIHJvb3QgKi8KLS0JaW50IGZ0c19wYXRobGVuOwkJLyogc2l6ZW9mKHBhdGgpICovCi0tCWludCBmdHNfbml0ZW1zOwkJCS8qIGVsZW1lbnRzIGluIHRoZSBzb3J0IGFycmF5ICovCi0tCWludCAoKmZ0c19jb21wYXIpIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7IC8qIGNvbXBhcmUgZm4gKi8KLS0KLS0jZGVmaW5lCUZUU19DT01GT0xMT1cJMHgwMDAxCQkvKiBmb2xsb3cgY29tbWFuZCBsaW5lIHN5bWxpbmtzICovCi0tI2RlZmluZQlGVFNfTE9HSUNBTAkweDAwMDIJCS8qIGxvZ2ljYWwgd2FsayAqLwotLSNkZWZpbmUJRlRTX05PQ0hESVIJMHgwMDA0CQkvKiBkb24ndCBjaGFuZ2UgZGlyZWN0b3JpZXMgKi8KLS0jZGVmaW5lCUZUU19OT1NUQVQJMHgwMDA4CQkvKiBkb24ndCBnZXQgc3RhdCBpbmZvICovCi0tI2RlZmluZQlGVFNfUEhZU0lDQUwJMHgwMDEwCQkvKiBwaHlzaWNhbCB3YWxrICovCi0tI2RlZmluZQlGVFNfU0VFRE9UCTB4MDAyMAkJLyogcmV0dXJuIGRvdCBhbmQgZG90LWRvdCAqLwotLSNkZWZpbmUJRlRTX1hERVYJMHgwMDQwCQkvKiBkb24ndCBjcm9zcyBkZXZpY2VzICovCi0tI2RlZmluZSBGVFNfV0hJVEVPVVQJMHgwMDgwCQkvKiByZXR1cm4gd2hpdGVvdXQgaW5mb3JtYXRpb24gKi8KLS0jZGVmaW5lCUZUU19PUFRJT05NQVNLCTB4MDBmZgkJLyogdmFsaWQgdXNlciBvcHRpb24gbWFzayAqLwotLQotLSNkZWZpbmUJRlRTX05BTUVPTkxZCTB4MDEwMAkJLyogKHByaXZhdGUpIGNoaWxkIG5hbWVzIG9ubHkgKi8KLS0jZGVmaW5lCUZUU19TVE9QCTB4MDIwMAkJLyogKHByaXZhdGUpIHVucmVjb3ZlcmFibGUgZXJyb3IgKi8KLS0JaW50IGZ0c19vcHRpb25zOwkJLyogZnRzX29wZW4gb3B0aW9ucywgZ2xvYmFsIGZsYWdzICovCi0tfSBGVFM7Ci0tCi0tdHlwZWRlZiBzdHJ1Y3QgX2Z0c2VudCB7Ci0tCXN0cnVjdCBfZnRzZW50ICpmdHNfY3ljbGU7CS8qIGN5Y2xlIG5vZGUgKi8KLS0Jc3RydWN0IF9mdHNlbnQgKmZ0c19wYXJlbnQ7CS8qIHBhcmVudCBkaXJlY3RvcnkgKi8KLS0Jc3RydWN0IF9mdHNlbnQgKmZ0c19saW5rOwkvKiBuZXh0IGZpbGUgaW4gZGlyZWN0b3J5ICovCi0tCWxvbmcgZnRzX251bWJlcjsJICAgICAgICAvKiBsb2NhbCBudW1lcmljIHZhbHVlICovCi0tCXZvaWQgKmZ0c19wb2ludGVyOwkgICAgICAgIC8qIGxvY2FsIGFkZHJlc3MgdmFsdWUgKi8KLS0JY2hhciAqZnRzX2FjY3BhdGg7CQkvKiBhY2Nlc3MgcGF0aCAqLwotLQljaGFyICpmdHNfcGF0aDsJCQkvKiByb290IHBhdGggKi8KLS0JaW50IGZ0c19lcnJubzsJCQkvKiBlcnJubyBmb3IgdGhpcyBub2RlICovCi0tCWludCBmdHNfc3ltZmQ7CQkJLyogZmQgZm9yIHN5bWxpbmsgKi8KLS0JdV9zaG9ydCBmdHNfcGF0aGxlbjsJCS8qIHN0cmxlbihmdHNfcGF0aCkgKi8KLS0JdV9zaG9ydCBmdHNfbmFtZWxlbjsJCS8qIHN0cmxlbihmdHNfbmFtZSkgKi8KLS0KLS0JaW5vX3QgZnRzX2lubzsJCQkvKiBpbm9kZSAqLwotLQlkZXZfdCBmdHNfZGV2OwkJCS8qIGRldmljZSAqLwotLQlubGlua190IGZ0c19ubGluazsJCS8qIGxpbmsgY291bnQgKi8KLS0KLS0jZGVmaW5lCUZUU19ST09UUEFSRU5UTEVWRUwJLTEKLS0jZGVmaW5lCUZUU19ST09UTEVWRUwJCSAwCi0tCXNob3J0IGZ0c19sZXZlbDsJCS8qIGRlcHRoICgtMSB0byBOKSAqLwotLQotLSNkZWZpbmUJRlRTX0QJCSAxCQkvKiBwcmVvcmRlciBkaXJlY3RvcnkgKi8KLS0jZGVmaW5lCUZUU19EQwkJIDIJCS8qIGRpcmVjdG9yeSB0aGF0IGNhdXNlcyBjeWNsZXMgKi8KLS0jZGVmaW5lCUZUU19ERUZBVUxUCSAzCQkvKiBub25lIG9mIHRoZSBhYm92ZSAqLwotLSNkZWZpbmUJRlRTX0ROUgkJIDQJCS8qIHVucmVhZGFibGUgZGlyZWN0b3J5ICovCi0tI2RlZmluZQlGVFNfRE9UCQkgNQkJLyogZG90IG9yIGRvdC1kb3QgKi8KLS0jZGVmaW5lCUZUU19EUAkJIDYJCS8qIHBvc3RvcmRlciBkaXJlY3RvcnkgKi8KLS0jZGVmaW5lCUZUU19FUlIJCSA3CQkvKiBlcnJvcjsgZXJybm8gaXMgc2V0ICovCi0tI2RlZmluZQlGVFNfRgkJIDgJCS8qIHJlZ3VsYXIgZmlsZSAqLwotLSNkZWZpbmUJRlRTX0lOSVQJIDkJCS8qIGluaXRpYWxpemVkIG9ubHkgKi8KLS0jZGVmaW5lCUZUU19OUwkJMTAJCS8qIHN0YXQoMikgZmFpbGVkICovCi0tI2RlZmluZQlGVFNfTlNPSwkxMQkJLyogbm8gc3RhdCgyKSByZXF1ZXN0ZWQgKi8KLS0jZGVmaW5lCUZUU19TTAkJMTIJCS8qIHN5bWJvbGljIGxpbmsgKi8KLS0jZGVmaW5lCUZUU19TTE5PTkUJMTMJCS8qIHN5bWJvbGljIGxpbmsgd2l0aG91dCB0YXJnZXQgKi8KLS0jZGVmaW5lIEZUU19XCQkxNAkJLyogd2hpdGVvdXQgb2JqZWN0ICovCi0tCXVfc2hvcnQgZnRzX2luZm87CQkvKiB1c2VyIGZsYWdzIGZvciBGVFNFTlQgc3RydWN0dXJlICovCi0tCi0tI2RlZmluZQlGVFNfRE9OVENIRElSCSAweDAxCQkvKiBkb24ndCBjaGRpciAuLiB0byB0aGUgcGFyZW50ICovCi0tI2RlZmluZQlGVFNfU1lNRk9MTE9XCSAweDAyCQkvKiBmb2xsb3dlZCBhIHN5bWxpbmsgdG8gZ2V0IGhlcmUgKi8KLS0JdV9zaG9ydCBmdHNfZmxhZ3M7CQkvKiBwcml2YXRlIGZsYWdzIGZvciBGVFNFTlQgc3RydWN0dXJlICovCi0tCi0tI2RlZmluZQlGVFNfQUdBSU4JIDEJCS8qIHJlYWQgbm9kZSBhZ2FpbiAqLwotLSNkZWZpbmUJRlRTX0ZPTExPVwkgMgkJLyogZm9sbG93IHN5bWJvbGljIGxpbmsgKi8KLS0jZGVmaW5lCUZUU19OT0lOU1RSCSAzCQkvKiBubyBpbnN0cnVjdGlvbnMgKi8KLS0jZGVmaW5lCUZUU19TS0lQCSA0CQkvKiBkaXNjYXJkIG5vZGUgKi8KLS0JdV9zaG9ydCBmdHNfaW5zdHI7CQkvKiBmdHNfc2V0KCkgaW5zdHJ1Y3Rpb25zICovCi0tCi0tCXN0cnVjdCBzdGF0ICpmdHNfc3RhdHA7CQkvKiBzdGF0KDIpIGluZm9ybWF0aW9uICovCi0tCWNoYXIgZnRzX25hbWVbMV07CQkvKiBmaWxlIG5hbWUgKi8KLS19IEZUU0VOVDsKLS0KLS1fX0JFR0lOX0RFQ0xTCi0tCi0tI2RlZmluZSBmdHNfY2hpbGRyZW4gcGF4X2Z0c19jaGlsZHJlbgotLSNkZWZpbmUgZnRzX2Nsb3NlIHBheF9mdHNfY2xvc2UKLS0jZGVmaW5lIGZ0c19vcGVuIHBheF9mdHNfb3BlbgotLSNkZWZpbmUgZnRzX3JlYWQgcGF4X2Z0c19yZWFkCi0tI2RlZmluZSBmdHNfc2V0IHBheF9mdHNfc2V0Ci0tCi0tRlRTRU5UCSpmdHNfY2hpbGRyZW4gKEZUUyAqLCBpbnQpOwotLWludAkgZnRzX2Nsb3NlIChGVFMgKik7Ci0tRlRTCSpmdHNfb3BlbiAoY2hhciAqIGNvbnN0ICosIGludCwKLS0JCSAgIGludCAoKikoY29uc3QgRlRTRU5UICoqLCBjb25zdCBGVFNFTlQgKiopKTsKLS1GVFNFTlQJKmZ0c19yZWFkIChGVFMgKik7Ci0taW50CSBmdHNfc2V0IChGVFMgKiwgRlRTRU5UICosIGludCkgX19USFJPVzsKLS1fX0VORF9ERUNMUwotLQotLSNlbmRpZiAvKiBmdHMuaCAqLwotZGlmZiAtLWdpdCBhL2xpYi92aXMuaCBiL2xpYi92aXMuaAotaW5kZXggZDM0ZDM0Mi4uNzFmYTVmNCAxMDA2NDQKLS0tLSBhL2xpYi92aXMuaAotKysrIGIvbGliL3Zpcy5oCi1AQCAtNzMsMTQgKzczLDE5IEBACi0gICovCi0gI2RlZmluZQlVTlZJU19FTkQJMQkvKiBubyBtb3JlIGNoYXJhY3RlcnMgKi8KLSAKLS0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0rI2lmbmRlZiBfX1AKLSsjZGVmaW5lIF9fUCh4KSB4Ci0rI2VuZGlmCi0gCi0tX19CRUdJTl9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIGNoYXIJKnZpcyBfX1AoKGNoYXIgKiwgaW50LCBpbnQsIGludCkpOwotIGludAlzdHJ2aXMgX19QKChjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KSk7Ci0gaW50CXN0cnZpc3ggX19QKChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBpbnQpKTsKLSBpbnQJc3RydW52aXMgX19QKChjaGFyICosIGNvbnN0IGNoYXIgKikpOwotIGludAl1bnZpcyBfX1AoKGNoYXIgKiwgY2hhciwgaW50ICosIGludCkpOwotLV9fRU5EX0RFQ0xTCi0tCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotICNlbmRpZiAvKiAhX1ZJU19IXyAqLwotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggNWVmNTJhMy4uMjI3Y2RlZiAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtMjIsNCArMjIsNCBAQCBwYXhfU09VUkNFUyA9IGFyX2lvLmMgYXJfc3Vicy5jIGJ1Zl9zdWJzLmMgY2FjaGUuYyBjcGlvLmNcCi0gCWZpbGVfc3Vicy5jIGZ0cmVlLmMgZ2VuX3N1YnMuYyBnZXRvbGRvcHQuYyBvcHRpb25zLmNcCi0gCXBhdF9yZXAuYyBwYXguYyBzZWxfc3Vicy5jIHRhYmxlcy5jIHRhci5jIHR0eV9zdWJzLmMKLSAKLS1wYXhfTERBREQgPSAkKHRvcF9idWlsZGRpcikvbGliL2xpYmJzZGZ1bmMuYQotK3BheF9MREFERCA9ICQodG9wX2J1aWxkZGlyKS9saWIvbGliYnNkZnVuYy5hIC1sZnRzCi1kaWZmIC0tZ2l0IGEvc3JjL2V4dGVybi5oIGIvc3JjL2V4dGVybi5oCi1pbmRleCAzNjFmYTgxLi4zZWQzNjVkIDEwMDY0NAotLS0tIGEvc3JjL2V4dGVybi5oCi0rKysgYi9zcmMvZXh0ZXJuLmgKLUBAIC0zNyw4ICszNyw2IEBACi0gICogRXh0ZXJuYWwgcmVmZXJlbmNlcyBmcm9tIGVhY2ggc291cmNlIGZpbGUKLSAgKi8KLSAKLS0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0tCi0gLyoKLSAgKiBhcl9pby5jCi0gICovCi1kaWZmIC0tZ2l0IGEvc3JjL2ZpbGVfc3Vicy5jIGIvc3JjL2ZpbGVfc3Vicy5jCi1pbmRleCA1NTkwZmYxLi4xNWJjMzM5IDEwMDY0NAotLS0tIGEvc3JjL2ZpbGVfc3Vicy5jCi0rKysgYi9zcmMvZmlsZV9zdWJzLmMKLUBAIC01Miw3ICs1Miw3IEBACi0gI2luY2x1ZGUgImV4dGVybi5oIgotIAotIHN0YXRpYyBpbnQKLS1ta19saW5rIF9fUCgocmVnaXN0ZXIgY2hhciAqLHJlZ2lzdGVyIHN0cnVjdCBzdGF0ICoscmVnaXN0ZXIgY2hhciAqLCBpbnQpKTsKLStta19saW5rIChyZWdpc3RlciBjaGFyICoscmVnaXN0ZXIgc3RydWN0IHN0YXQgKixyZWdpc3RlciBjaGFyICosIGludCk7Ci0gCi0gLyoKLSAgKiByb3V0aW5lcyB0aGF0IGRlYWwgd2l0aCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhczogY3JlYXRpbmcsIHJlbW92aW5nOwotZGlmZiAtLWdpdCBhL3NyYy90YWJsZXMuYyBiL3NyYy90YWJsZXMuYwotaW5kZXggMjI3NWJmNy4uOGZkZGNhNCAxMDA2NDQKLS0tLSBhL3NyYy90YWJsZXMuYwotKysrIGIvc3JjL3RhYmxlcy5jCi1AQCAtMzksNyArMzksNyBAQAotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLS0jaW5jbHVkZSA8c3lzL2ZjbnRsLmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLS0tIAotMi42LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDk2OWJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbml0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gN2Y0ZjM3OWY4MzQzYzBjZTkyYWEzMGYzZjkwMzcyODhhMDg5YTkwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDE4IERlYyAyMDE2IDA4OjI0OjU2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4gZm9yIG1ham9yL21pbm9yIGRlZmluaXRpb25zCi0KLWdsaWJjIDIuMjUgd2lsbCBlcnJvciBvdXQgaWYgdGhlIGFwcGxpY2F0aW9ucyBhcmUgZXhwZWN0aW5nCi10aGlzIHRvIGNvbWUgZnJvbSBzeXMvdHlwZXMuaCwgaXQgaXMgYmVpbmcgcmVtb3ZlZCBmcm9tCi10aGVyZS4KLQotRml4ZXMKLQotZXJyb3I6IEluIHRoZSBHTlUgQyBMaWJyYXJ5LCAibWlub3IiIGlzIGRlZmluZWQKLXwgIGJ5IDxzeXMvc3lzbWFjcm9zLmg+LiBGb3IgaGlzdG9yaWNhbCBjb21wYXRpYmlsaXR5LCBpdCBpcwotfCAgY3VycmVudGx5IGRlZmluZWQgYnkgPHN5cy90eXBlcy5oPiBhcyB3ZWxsLCBidXQgd2UgcGxhbiB0bwotfCAgcmVtb3ZlIHRoaXMgc29vbi4gVG8gdXNlICJtaW5vciIsIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLXwgIGRpcmVjdGx5LiBJZiB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gdXNlIGEgc3lzdGVtLWRlZmluZWQgbWFjcm8KLXwgICJtaW5vciIsIHlvdSBzaG91bGQgdW5kZWZpbmUgaXQgYWZ0ZXIgaW5jbHVkaW5nIDxzeXMvdHlwZXMuaD4uIFstV2Vycm9yXQotfCAgICAgICAgdWxfb2N0ICgodV9sb25nKSBNSU5PUiAoYXJjbi0+c2Iuc3RfcmRldiksIGhkLT5kZXZtaW5vciwKLXwgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL2NwaW8uYyAgICAgfCAyICstCi0gc3JjL2dlbl9zdWJzLmMgfCAyICstCi0gc3JjL3Rhci5jICAgICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBwYXgtMy40L3NyYy9jcGlvLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXgtMy40Lm9yaWcvc3JjL2NwaW8uYwotKysrIHBheC0zLjQvc3JjL2NwaW8uYwotQEAgLTM2LDYgKzM2LDcgQEAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci1JbmRleDogcGF4LTMuNC9zcmMvZ2VuX3N1YnMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9zcmMvZ2VuX3N1YnMuYwotKysrIHBheC0zLjQvc3JjL2dlbl9zdWJzLmMKLUBAIC0zNyw2ICszNyw3IEBACi0gI2luY2x1ZGUgImNvbmZpZy5oIgotICNlbmRpZgotIAotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotSW5kZXg6IHBheC0zLjQvc3JjL3Rhci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL3NyYy90YXIuYwotKysrIHBheC0zLjQvc3JjL3Rhci5jCi1AQCAtMzcsNiArMzcsNyBAQAotICNpbmNsdWRlICJjb25maWcuaCIKLSAjZW5kaWYKLSAKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLXVzZS1zdHJ0b2xsLWluc3RlYWQtb2Ytc3RydG9xLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtdXNlLXN0cnRvbGwtaW5zdGVhZC1vZi1zdHJ0b3EucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YWM5Y2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtdXNlLXN0cnRvbGwtaW5zdGVhZC1vZi1zdHJ0b3EucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGIxZjUwMzIwMzMyYzljOTBmYTMzYWIxMzZlZjBlYzJkMTJjZGE0NjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA2IEphbiAyMDE2IDEyOjMwOjUyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVzZSBzdHJ0b2xsIGluc3RlYWQgb2Ygc3RydG9xCi0KLVVzZSBMTE9OR19NQVggaW5zdGVhZCBvZiBMT05HX0xPTkdfTUFYCi1MT05HX0xPTkdfTUFYIGlzIEdOVSBzcGVjaWZpYwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9vcHRpb25zLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL29wdGlvbnMuYyBiL3NyYy9vcHRpb25zLmMKLWluZGV4IGRhOGI0Y2YuLmM2NjNiNGUgMTAwNjQ0Ci0tLS0gYS9zcmMvb3B0aW9ucy5jCi0rKysgYi9zcmMvb3B0aW9ucy5jCi1AQCAtMTU0Nyw4ICsxNTQ3LDggQEAgc3RyX29mZnQgKGNoYXIgKnZhbCkKLSAKLSAjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSAgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotLSAgbnVtID0gc3RydG9xICh2YWwsICZleHByLCAwKTsKLS0gIGlmICgobnVtID09IExPTkdfTE9OR19NQVgpIHx8IChudW0gPD0gMCkgfHwgKGV4cHIgPT0gdmFsKSkKLSsgIG51bSA9IHN0cnRvbGwgKHZhbCwgJmV4cHIsIDApOwotKyAgaWYgKChudW0gPT0gTExPTkdfTUFYKSB8fCAobnVtIDw9IDApIHx8IChleHByID09IHZhbCkpCi0gI2Vsc2UKLSAgIG51bSA9IHN0cnRvbCAodmFsLCAmZXhwciwgMCk7Ci0gICBpZiAoKG51bSA9PSBMT05HX01BWCkgfHwgKG51bSA8PSAwKSB8fCAoZXhwciA9PSB2YWwpKQotLS0gCi0yLjYuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L2ZpeF9mb3JfY29tcGlsZV93aXRoX2djYy00LjYuMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg3NzljMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBjb21waWxlciBlcnJvciB3aXRoIGdjYyA0LjYuMAotCi1OaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzA1LzA4Ci0KLXwgZnRzLmM6IEluIGZ1bmN0aW9uICdwYXhfZnRzX3NldCc6Ci18IGZ0cy5jOjQ2OTo3OiBlcnJvcjogcGFyYW1ldGVyICdzcCcgc2V0IGJ1dCBub3QgdXNlZCBbLVdlcnJvcj11bnVzZWQtYnV0LXNldC1wYXJhbWV0ZXJdCi18IGNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCi18IAotfCBtYWtlWzJdOiAqKiogW2Z0cy5vXSBFcnJvciAxCi0KLUluZGV4OiBwYXgtMy40L2xpYi9mdHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9saWIvZnRzLmMKLSsrKyBwYXgtMy40L2xpYi9mdHMuYwotQEAgLTQ2Niw3ICs0NjYsNyBAQCBuYW1lOgkJdCA9IHNwLT5mdHNfcGF0aCArIE5BUFBFTkQocC0+ZnRzCi0gLyogQVJHU1VTRUQgKi8KLSBpbnQKLSBmdHNfc2V0KHNwLCBwLCBpbnN0cikKLS0JRlRTICpzcDsKLSsJRlRTIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSAqc3A7Ci0gCUZUU0VOVCAqcDsKLSAJaW50IGluc3RyOwotIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC9wYXgtMy40X2ZpeF9mb3JfeDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZGJkMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUF1dGhvcjogSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6ICAgVHVlIERlYyA2IDEwOjM0OjUzIDIwMTEgLTA4MDAKLQotICAgIEZpeCBwYXgtMy40IGJ1aWxkIGZvciB4MzIKLSAgICAKLSAgICBvZmZfdCBpcyA4Ynl0ZSBmb3IgeDMyLiAgV2UgbmVlZCB0byBjaGVjayBib3RoIF9GSUxFX09GRlNFVF9CSVRTIGFuZAotICAgIHNpemUgb2Ygb2ZmX3QgdG8gc2VlIGlmIGZpbGUgb2Zmc2V0IGlzIDY0Yml0LiAgVGhpcyBwYXRjaCBhZGRzCi0gICAgQUNfQ0hFQ0tfU0laRU9GKG9mZl90KSBhbmQgY2hlY2tzIFNJWkVPRl9PRkZfVCA9PSA4LgotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzA2Ci0KLUluZGV4OiBwYXgtMy40L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9jb25maWd1cmUuaW4KLSsrKyBwYXgtMy40L2NvbmZpZ3VyZS5pbgotQEAgLTMzLDQgKzMzLDcgQEAgZG5sIENoZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgotIGRubCBDaGVja3MgZm9yIHR5cGVkZWZzLCBzdHJ1Y3R1cmVzLCBhbmQgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzLgotIEFDX0NfQ09OU1QKLSAKLStBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCi0rQUNfQ0hFQ0tfU0laRU9GKGxvbmcpCi0rCi0gQUNfT1VUUFVUKFtNYWtlZmlsZSBsaWIvTWFrZWZpbGUgc3JjL01ha2VmaWxlXSkKLUluZGV4OiBwYXgtMy40L3NyYy9hcl9pby5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL3NyYy9hcl9pby5jCi0rKysgcGF4LTMuNC9zcmMvYXJfaW8uYwotQEAgLTM3OCw3ICszNzgsOCBAQCBhcl9jbG9zZSh2b2lkKQotIAkgKiBjb3VsZCBoYXZlIHdyaXR0ZW4gYW55dGhpbmcgeWV0LgotIAkgKi8KLSAJaWYgKGZybXQgPT0gTlVMTCkgewotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gCQkodm9pZClmcHJpbnRmKGxpc3RmLCAiJXM6IHVua25vd24gZm9ybWF0LCAlcXUgYnl0ZXMgc2tpcHBlZC5cbiIsCi0gI2Vsc2UKLSAJCSh2b2lkKWZwcmludGYobGlzdGYsICIlczogdW5rbm93biBmb3JtYXQsICVsdSBieXRlcyBza2lwcGVkLlxuIiwKLUBAIC0zOTEsNyArMzkyLDggQEAgYXJfY2xvc2Uodm9pZCkKLSAKLSAJaWYgKHN0cmNtcChOTV9DUElPLCBhcmd2MCkgPT0gMCkKLSAJCSh2b2lkKWZwcmludGYobGlzdGYsCi0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAJCSAgICAiJXF1IGJsb2Nrc1xuIiwKLSAjZWxzZQotIAkJICAgICIlbHUgYmxvY2tzXG4iLAotQEAgLTM5OSw3ICs0MDEsOCBAQCBhcl9jbG9zZSh2b2lkKQotIAkJCShyZGNudCA/IHJkY250IDogd3JjbnQpIC8gNTEyMCk7Ci0gCWVsc2UgaWYgKHN0cmNtcChOTV9UQVIsIGFyZ3YwKSAhPSAwKQotIAkJKHZvaWQpZnByaW50ZihsaXN0ZiwKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotIAkJICAgICIlczogJXMgdm9sICVkLCAlbHUgZmlsZXMsICVxdSBieXRlcyByZWFkLCAlcXUgYnl0ZXMgd3JpdHRlbi5cbiIsCi0gI2Vsc2UKLSAJCSAgICAiJXM6ICVzIHZvbCAlZCwgJWx1IGZpbGVzLCAlbHUgYnl0ZXMgcmVhZCwgJWx1IGJ5dGVzIHdyaXR0ZW4uXG4iLAotSW5kZXg6IHBheC0zLjQvc3JjL2NwaW8uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9zcmMvY3Bpby5jCi0rKysgcGF4LTMuNC9zcmMvY3Bpby5jCi1AQCAtMjE4LDcgKzIxOCw4IEBAIHJkX2xuX25tIChBUkNIRCAqYXJjbikKLSAJICovCi0gCWlmICgoYXJjbi0+c2Iuc3Rfc2l6ZSA9PSAwKSB8fAotIAkgICAgKGFyY24tPnNiLnN0X3NpemUgPj0gKG9mZl90KSBzaXplb2YoYXJjbi0+bG5fbmFtZSkpKSB7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAJCXBheHdhcm4gKDEsICJDcGlvIGxpbmsgbmFtZSBsZW5ndGggaXMgaW52YWxpZDogJXF1IiwKLSAJCQkgYXJjbi0+c2Iuc3Rfc2l6ZSk7Ci0gI2Vsc2UKLUluZGV4OiBwYXgtMy40L3NyYy9nZW5fc3Vicy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL3NyYy9nZW5fc3Vicy5jCi0rKysgcGF4LTMuNC9zcmMvZ2VuX3N1YnMuYwotQEAgLTEzMyw3ICsxMzMsOCBAQCBsc19saXN0IChBUkNIRCAqYXJjbiwgdGltZV90IG5vdywgRklMRSAqCi0gICAgKiBwcmludCBkZXZpY2UgaWQncyBmb3IgZGV2aWNlcywgb3Igc2l6ZXMgZm9yIG90aGVyIG5vZGVzCi0gICAgKi8KLSAgIGlmICgoYXJjbi0+dHlwZSA9PSBQQVhfQ0hSKSB8fCAoYXJjbi0+dHlwZSA9PSBQQVhfQkxLKSkKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotICAgICAodm9pZCkgZnByaW50ZiAoZnAsICIlNGx1LCU0bHUgIiwgKHVuc2lnbmVkIGxvbmcpIE1BSk9SIChzYnAtPnN0X3JkZXYpLAotIAkJICAgICh1bnNpZ25lZCBsb25nKSBNSU5PUiAoc2JwLT5zdF9yZGV2KSk7Ci0gI2Vsc2UKLUBAIC0xNDIsNyArMTQzLDggQEAgbHNfbGlzdCAoQVJDSEQgKmFyY24sIHRpbWVfdCBub3csIEZJTEUgKgotICNlbmRpZgotICAgZWxzZQotICAgICB7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgICAgICAodm9pZCkgZnByaW50ZiAoZnAsICIlOXF1ICIsIHNicC0+c3Rfc2l6ZSk7Ci0gI2Vsc2UKLSAgICAgICAodm9pZCkgZnByaW50ZiAoZnAsICIlOWx1ICIsIHNicC0+c3Rfc2l6ZSk7Ci1AQCAtMzM0LDcgKzMzNiw4IEBAIHVsX2FzYyAodV9sb25nIHZhbCwgY2hhciAqc3RyLCBpbnQgbGVuLCAKLSAgIHJldHVybiAoMCk7Ci0gfQotIAotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gLyoKLSAgKiBhc2NfdXFkKCkKLSAgKgljb252ZXJ0IGhleC9vY3RhbCBjaGFyYWN0ZXIgc3RyaW5nIGludG8gYSB1X3F1YWRfdC4gV2UgZG8gbm90IGhhdmUgdG8KLUluZGV4OiBwYXgtMy40L3NyYy9vcHRpb25zLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXgtMy40Lm9yaWcvc3JjL29wdGlvbnMuYwotKysrIHBheC0zLjQvc3JjL29wdGlvbnMuYwotQEAgLTE1NDUsNyArMTU0NSw4IEBAIHN0cl9vZmZ0IChjaGFyICp2YWwpCi0gICBjaGFyICpleHByOwotICAgb2ZmX3QgbnVtLCB0OwotIAotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gICBudW0gPSBzdHJ0b3EgKHZhbCwgJmV4cHIsIDApOwotICAgaWYgKChudW0gPT0gTE9OR19MT05HX01BWCkgfHwgKG51bSA8PSAwKSB8fCAoZXhwciA9PSB2YWwpKQotICNlbHNlCi1JbmRleDogcGF4LTMuNC9zcmMvdGFyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXgtMy40Lm9yaWcvc3JjL3Rhci5jCi0rKysgcGF4LTMuNC9zcmMvdGFyLmMKLUBAIC01OCw3ICs1OCw4IEBACi0gc3RhdGljIHVuc2lnbmVkIGxvbmcgdGFyX2Noa3NtIChjaGFyICosIGludCk7Ci0gc3RhdGljIGNoYXIgKm5hbWVfc3BsaXQgKGNoYXIgKiwgaW50KTsKLSBzdGF0aWMgaW50IHVsX29jdCAodV9sb25nLCBjaGFyICosIGludCwgaW50KTsKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotIHN0YXRpYyBpbnQgdXFkX29jdCAodV9xdWFkX3QsIGNoYXIgKiwgaW50LCBpbnQpOwotICNlbmRpZgotIAotQEAgLTE5Niw3ICsxOTcsOCBAQCB1bF9vY3QgKHVfbG9uZyB2YWwsIHJlZ2lzdGVyIGNoYXIgKnN0ciwgCi0gICByZXR1cm4gKDApOwotIH0KLSAKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotIC8qCi0gICogdXFkX29jdCgpCi0gICoJY29udmVydCBhbiB1X3F1YWRfdCB0byBhbiBvY3RhbCBzdHJpbmcuIG9uZSBvZiBtYW55IG9kZGJhbGwgZmllbGQKLUBAIC00MjcsNyArNDI5LDggQEAgdGFyX3JkIChBUkNIRCAqYXJjbiwgY2hhciAqYnVmKQotIAkJCSAgICAgICAweGZmZik7Ci0gICBhcmNuLT5zYi5zdF91aWQgPSAodWlkX3QpIGFzY191bCAoaGQtPnVpZCwgc2l6ZW9mIChoZC0+dWlkKSwgT0NUKTsKLSAgIGFyY24tPnNiLnN0X2dpZCA9IChnaWRfdCkgYXNjX3VsIChoZC0+Z2lkLCBzaXplb2YgKGhkLT5naWQpLCBPQ1QpOwotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gICBhcmNuLT5zYi5zdF9zaXplID0gKG9mZl90KSBhc2NfdXFkIChoZC0+c2l6ZSwgc2l6ZW9mIChoZC0+c2l6ZSksIE9DVCk7Ci0gI2Vsc2UKLSAgIGFyY24tPnNiLnN0X3NpemUgPSAob2ZmX3QpIGFzY191bCAoaGQtPnNpemUsIHNpemVvZiAoaGQtPnNpemUpLCBPQ1QpOwotQEAgLTY1OSw3ICs2NjIsOCBAQCB0YXJfd3IgKHJlZ2lzdGVyIEFSQ0hEICogYXJjbikKLSAgICAgICAgKiBkYXRhIGZvbGxvd3MgdGhpcyBmaWxlLCBzbyBzZXQgdGhlIHBhZAotICAgICAgICAqLwotICAgICAgIGhkLT5saW5rZmxhZyA9IEFSRUdUWVBFOwotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gICAgICAgaWYgKHVxZF9vY3QgKCh1X3F1YWRfdCkgYXJjbi0+c2Iuc3Rfc2l6ZSwgaGQtPnNpemUsCi0gCQkgICBzaXplb2YgKGhkLT5zaXplKSwgMSkpCi0gI2Vsc2UKLUBAIC04MzQsNyArODM4LDggQEAgdXN0YXJfcmQgKEFSQ0hEICphcmNuLCBjaGFyICpidWYpCi0gICAgKi8KLSAgIGFyY24tPnNiLnN0X21vZGUgPSAobW9kZV90KSAoYXNjX3VsIChoZC0+bW9kZSwgc2l6ZW9mIChoZC0+bW9kZSksIE9DVCkgJgotIAkJCSAgICAgICAweGZmZik7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgIGFyY24tPnNiLnN0X3NpemUgPSAob2ZmX3QpIGFzY191cWQgKGhkLT5zaXplLCBzaXplb2YgKGhkLT5zaXplKSwgT0NUKTsKLSAjZWxzZQotICAgYXJjbi0+c2Iuc3Rfc2l6ZSA9IChvZmZfdCkgYXNjX3VsIChoZC0+c2l6ZSwgc2l6ZW9mIChoZC0+c2l6ZSksIE9DVCk7Ci1AQCAtMTA4MSw3ICsxMDg2LDggQEAgdXN0YXJfd3IgKHJlZ2lzdGVyIEFSQ0hEICogYXJjbikKLSAgICAgICBlbHNlCi0gCWhkLT50eXBlZmxhZyA9IFJFR1RZUEU7Ci0gICAgICAgYXJjbi0+cGFkID0gVEFSX1BBRCAoYXJjbi0+c2Iuc3Rfc2l6ZSk7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgICAgICBpZiAodXFkX29jdCAoKHVfcXVhZF90KSBhcmNuLT5zYi5zdF9zaXplLCBoZC0+c2l6ZSwKLSAJCSAgIHNpemVvZiAoaGQtPnNpemUpLCAzKSkKLSAJewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4XzMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheF8zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZjlhODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4XzMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUG9ydGFibGUgQXJjaGl2ZSBlWGNoYW5nZSIKLURFU0NSSVBUSU9OID0gInBheCAoUG9ydGFibGUgQXJjaGl2ZSBlWGNoYW5nZSkgaXMgdGhlIFBPU0lYIHN0YW5kYXJkIGFyY2hpdmUgdG9vbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9jdnN3ZWIub3BlbmJzZC5vcmcvY2dpLWJpbi9jdnN3ZWIvc3JjL2Jpbi9wYXgvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5ic2Qub3JnL3F1ZXJ5LXByLmh0bWwiCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGIwYjY3NGRmZGM1NmRhYTM4MzJkNDA2OWI4MjBlYTAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3BheC5oO2VuZGxpbmU9NDA7bWQ1PTMwOWQzZTI0MWMxZDgyMDY5MjI4ZTVhNTFlOWI4ZDYwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jcGlvLmg7ZW5kbGluZT00MDttZDU9YzNiNGJiZmY2MTMzYTgzMzg3OTY4NjE3YmJhZThhYzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3Zpcy5oO2VuZGxpbmU9NDA7bWQ1PWIyODNmNzU5YWJkNGE1YWQ3ZTAxNGI4MGY1MWZjMDUzIgotCi1TRUNUSU9OID0gImJhc2UiCi1QUiA9ICJyMiIKLQotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBmdHMgIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy8ke0JQTn0vJHtCUH0udGFyLmJ6Mi9mYmQ5MDIzYjU5MGI0NWFjM2FkZTk1ODcwNzAyYTBkNi8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9mb3JfY29tcGlsZV93aXRoX2djYy00LjYuMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wYXgtMy40X2ZpeF9mb3JfeDMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzZS1zdHJ0b2xsLWluc3RlYWQtb2Ytc3RydG9xLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImZiZDkwMjNiNTkwYjQ1YWMzYWRlOTU4NzA3MDJhMGQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjM2MwNjA0OGUwMjgyODA3N2NmNzc1N2QzZDE0MjI0MTQyOTIzODg5M2I5MWQ1MjlhZjI5YTJlOGNjNTYyM2IiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGliY29udmVydC1hc24xLXBlcmxfMC4yNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJjb252ZXJ0LWFzbjEtcGVybF8wLjI3LmJiCmluZGV4IDE3MGU3ZWMuLjY0NGQ4MjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJjb252ZXJ0LWFzbjEtcGVybF8wLjI3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJjb252ZXJ0LWFzbjEtcGVybF8wLjI3LmJiCkBAIC0xMCw3ICsxMCw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9Db252ZXJ0LUFTTjEtJHtQVn0iCiAKLWluaGVyaXQgY3BhbgoraW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKIAogRVhUUkFfUEVSTEZMQUdTID0gIi1JICR7UEVSTEhPU1RMSUJ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlidGltZWRhdGUtcGVybF8yLjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnRpbWVkYXRlLXBlcmxfMi4zMC5iYgppbmRleCA0Mjc2MTNjLi44ZTE0NjFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlidGltZWRhdGUtcGVybF8yLjMwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ0aW1lZGF0ZS1wZXJsXzIuMzAuYmIKQEAgLTksNyArOSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9UaW1lRGF0ZS0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsXzEuMTIuYmIKaW5kZXggMzQ5OGEyOC4uZmE5Zjk5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjEyLmJiCkBAIC02LDE4ICs2LDIyIEBACiAKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1QUiA9ICJyMyIKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUVUQS55bWw7YmVnaW5saW5lPTIyO2VuZGxpbmU9MjI7bWQ1PTljYTFhNGE5NDE0OTZlN2ZlZWRhYzcyYzRmYjhiMTM3IgorU1JDTkFNRSA9ICJYTUwtTmFtZXNwYWNlU3VwcG9ydCIKIAotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9QL1BFL1BFUklHUklOL1hNTC1OYW1lc3BhY2VTdXBwb3J0LSR7UFZ9LnRhci5neiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM5ZDhhMTE3ZTc2MjBiNWFkZjhkNjljMjk2MTNjZWFiIgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvUC9QRS9QRVJJR1JJTi8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKIFNSQ19VUklbbWQ1c3VtXSA9ICJhODkxNmM2ZDA5NWJjZjA3M2UxMTA4YWYwMmU3OGM5NyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0N2U5OTU4NTlmOGRkMDQxM2FhM2YyMmQzNTBjNGE2MmRhNjUyZTg1NDI2N2FhMDU4NmFlNTQ0YWUyYmFlNWVmIgogCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJYTUxcLU5hbWVzcGFjZVN1cHBvcnRcLSg/UDxwdmVyPihcZCtcLlxkKykpKD8hX1xkKykudGFyIgogCi1TID0gIiR7V09SS0RJUn0vWE1MLU5hbWVzcGFjZVN1cHBvcnQtJHtQVn0iCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtdGVzdC1tb3JlIgogCiBCQkNMQVNTRVhURU5EPSJuYXRpdmUiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LWJhc2UtcGVybF8xLjA5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIKaW5kZXggY2QzYTU4MC4uYjNlMDFlOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIKQEAgLTE5LDYgKzE5LDYgQEAKIAogUyA9ICIke1dPUktESVJ9L1hNTC1TQVgtQmFzZS0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYgppbmRleCBhZDMxYjljLi5jZGNiZWJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzAuOTkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8wLjk5LmJiCkBAIC0yMyw2ICsyMywxMSBAQAogCiBTID0gIiR7V09SS0RJUn0vWE1MLVNBWC0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1yICR7Qn0vdGVzdGZpbGVzICR7RH0ke1BURVNUX1BBVEh9CisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RmaWxlcworfQogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc4ZjkwNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnei5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIkEgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCIKLURFU0NSSVBUSU9OID0gInBpZ3osIHdoaWNoIHN0YW5kcyBmb3IgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCwgaXMgYSBcCi1mdWxseSBmdW5jdGlvbmFsIHJlcGxhY2VtZW50IGZvciBnemlwIHRoYXQgZXhwbG9pdHMgbXVsdGlwbGUgcHJvY2Vzc29ycyBhbmQgXAotbXVsdGlwbGUgY29yZXMgdG8gdGhlIGhpbHQgd2hlbiBjb21wcmVzc2luZyBkYXRhLiBwaWd6IHdhcyB3cml0dGVuIGJ5IE1hcmsgXAotQWRsZXIsIGFuZCB1c2VzIHRoZSB6bGliIGFuZCBwdGhyZWFkIGxpYnJhcmllcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vemxpYi5uZXQvcGlnei8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIlpsaWIgJiBBcGFjaGUtMi4wIgotCi1QUk9WSURFU19jbGFzcy1uYXRpdmUgKz0gImd6aXAtbmF0aXZlIgotCi1ERVBFTkRTID0gInpsaWIiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotZG9faW5zdGFsbF9jbGFzcy10YXJnZXQoKSB7Ci0JIyBJbnN0YWxsIGZpbGVzIGludG8gL2JpbiAoRkhTKSwgd2hpY2ggaXMgdHlwaWNhbCBwbGFjZSBmb3IgZ3ppcAotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JaW5zdGFsbCAke0J9L3BpZ3ogJHtEfSR7YmFzZV9iaW5kaXJ9L3BpZ3oKLQlsbiAtbnNmIHBpZ3ogJHtEfSR7YmFzZV9iaW5kaXJ9L3VucGlnegotCWxuIC1uc2YgcGlneiAke0R9JHtiYXNlX2JpbmRpcn0vcGlnemNhdAotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgJHtCfS9waWd6ICR7RH0ke2JpbmRpcn0vZ3ppcAotCWxuIC1uc2YgZ3ppcCAke0R9JHtiaW5kaXJ9L2d1bnppcAotCWxuIC1uc2YgZ3ppcCAke0R9JHtiaW5kaXJ9L3pjYXQKLX0KLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiODAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJndW56aXAgZ3ppcCB6Y2F0IgotQUxURVJOQVRJVkVfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtndW56aXBdID0gIiR7YmFzZV9iaW5kaXJ9L2d1bnppcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtnemlwXSA9ICIke2Jhc2VfYmluZGlyfS9nemlwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3pjYXRdID0gIiR7YmFzZV9iaW5kaXJ9L3pjYXQiCi1BTFRFUk5BVElWRV9UQVJHRVQgPSAiJHtiYXNlX2JpbmRpcn0vcGlneiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3pfMi4zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0ODMyZGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3pfMi4zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHBpZ3ouaW5jCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9waWd6LmM7YmVnaW5saW5lPTc7ZW5kbGluZT0yMTttZDU9YTIxZDQwNzVjYjAwYWI0Y2ExN2ZjZTVlNzUzNGNhOTUiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vemxpYi5uZXQvJHtCUE59LyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInBpZ3otKD9QPHB2ZXI+LiopXC50YXIiCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tYWRsZXIvcGlnei9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzEwOTA1NzA1MGIxNWVkZjNlYjliYjRkMDgwNTIzNWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzYzZjJmZGIyMDNhYTBiN2I2NDBlNjMzODVlMzhlNWRkNGU1YWFhMDQxYmM4ZTQyYWE5NmYyZWYxNTZiMDZlOCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnel8yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnel8yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU2ZGE5YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuNC5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkEgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCIKK0RFU0NSSVBUSU9OID0gInBpZ3osIHdoaWNoIHN0YW5kcyBmb3IgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCwgaXMgYSBcCitmdWxseSBmdW5jdGlvbmFsIHJlcGxhY2VtZW50IGZvciBnemlwIHRoYXQgZXhwbG9pdHMgbXVsdGlwbGUgcHJvY2Vzc29ycyBhbmQgXAorbXVsdGlwbGUgY29yZXMgdG8gdGhlIGhpbHQgd2hlbiBjb21wcmVzc2luZyBkYXRhLiBwaWd6IHdhcyB3cml0dGVuIGJ5IE1hcmsgXAorQWRsZXIsIGFuZCB1c2VzIHRoZSB6bGliIGFuZCBwdGhyZWFkIGxpYnJhcmllcy4iCitIT01FUEFHRSA9ICJodHRwOi8vemxpYi5uZXQvcGlnei8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIlpsaWIgJiBBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGlnei5jO21kNT05YWU2ZGVlOGNlYmE5NjEwNTk2ZWQwYWRhNDkzZDE0MjtiZWdpbmxpbmU9NztlbmRsaW5lPTIxIgorCitTUkNfVVJJID0gImh0dHA6Ly96bGliLm5ldC8ke0JQTn0vZm9zc2lscy8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZGVmMmY2ZTE5ZDlkODIzMTQ0NWFkYzEzNDlkMzQ2ZGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTRmODE2MjIyYTdiNDI2OWJkMjMyNjgwNTkwYjU3OWNjYzcyNTkxZjFiYjVhZGFmY2Q3MjA4Y2E3N2UxNGY3MyIKKyMgUG9pbnQgdGhpcyBhdCB0aGUgaG9tZXBhZ2UgaW4gY2FzZSAvZm9zc2lscy8gaXNuJ3QgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly96bGliLm5ldC8ke0JQTn0vIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicGlnei0oP1A8cHZlcj4uKilcLnRhciIKKworREVQRU5EUyA9ICJ6bGliIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworZG9faW5zdGFsbCgpIHsKKwkjIEluc3RhbGwgZmlsZXMgaW50byAvYmluIChGSFMpLCB3aGljaCBpcyB0eXBpY2FsIHBsYWNlIGZvciBnemlwCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwlpbnN0YWxsICR7Qn0vcGlneiAke0R9JHtiYXNlX2JpbmRpcn0vcGlnegorCWxuIC1uc2YgcGlneiAke0R9JHtiYXNlX2JpbmRpcn0vdW5waWd6CisJbG4gLW5zZiBwaWd6ICR7RH0ke2Jhc2VfYmluZGlyfS9waWd6Y2F0Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjEyLmJiCmluZGV4IGFkYWJkNzUuLmVjZjIxNWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xMi5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiU3lzdGVtIGFuZCBwcm9jZXNzIG1vbml0b3JpbmcgdXRpbGl0aWVzIgogREVTQ1JJUFRJT04gPSAiUHJvY3BzIGNvbnRhaW5zIGEgc2V0IG9mIHN5c3RlbSB1dGlsaXRpZXMgdGhhdCBwcm92aWRlIHN5c3RlbSBpbmZvcm1hdGlvbiBhYm91dCBwcm9jZXNzZXMgdXNpbmcgXAogdGhlIC9wcm9jIGZpbGVzeXN0ZW0uIFRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBwcm9ncmFtcyBwcywgdG9wLCB2bXN0YXQsIHcsIGtpbGwsIGFuZCBza2lsbC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdG9yaW91cy5vcmcvcHJvY3BzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuY29tL3Byb2Nwcy1uZy9wcm9jcHMiCiBTRUNUSU9OID0gImJhc2UiCiBMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNPSJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXApAQCAtMjMsOCArMjMsNiBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2tpbGwgLS1kaXNhYmxlLW1vZGVybi10b3AiCiAKLUNQUEZMQUdTICs9ICItSSR7U30iCi0KIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQogCVsgIiR7YmluZGlyfSIgIT0gIiR7YmFzZV9iaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaTsgZG9uZQpAQCAtNDQsNyArNDIsNyBAQAogCiBDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZiIKIAotYmluZGlyX3Byb2dzID0gImZyZWUgcGtpbGwgcG1hcCBwZ3JlcCBwd2R4IHNraWxsIHNuaWNlIHRvcCB1cHRpbWUiCitiaW5kaXJfcHJvZ3MgPSAiZnJlZSBwa2lsbCBwbWFwIHBncmVwIHB3ZHggc2tpbGwgc25pY2UgdG9wIHVwdGltZSB3IgogYmFzZV9iaW5kaXJfcHJvZ3MgKz0gImtpbGwgcGlkb2YgcHMgd2F0Y2giCiBiYXNlX3NiaW5kaXJfcHJvZ3MgKz0gInN5c2N0bCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMS1UeXBvLWluLWZ1c2VyLW1ha2VzLU0tb24tYWxsLXRoZS10aW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMS1UeXBvLWluLWZ1c2VyLW1ha2VzLU0tb24tYWxsLXRoZS10aW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTdkNjBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL2ZpbGVzLzAwMDEtVHlwby1pbi1mdXNlci1tYWtlcy1NLW9uLWFsbC10aGUtdGltZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gMzYzOGNjNTViNGQwODg1MWZhYmE0NjYzNWQ3MzdiMjRkMDE2NjY1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJyYWQgSm9yc2NoIDxhbm9taWVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogRnJpLCAyOCBGZWIgMjAxNCAyMTo1NTowMiArMTEwMAotU3ViamVjdDogW1BBVENIXSBUeXBvIGluIGZ1c2VyIG1ha2VzIC1NIG9uIGFsbCB0aGUgdGltZQotCi1CcmFkIGZvdW5kIHRoYXQgZnVzZXIgaGFkIHRoZSAtTSBvcHRpb24gb24gYWxsIHRoZSB0aW1lLgotQSBzaW1wbGUgYnV0IHNpZ25pZmljYW50IHR5cG8gY2F1c2VkIHRoaXMsIHRoYW5rcyB0aGUgdGhlIHBhdGNoLgotCi1CdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzc0MDI3NQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENyYWlnIFNtYWxsIDxjc21hbGxAZW5jLmNvbS5hdT4KLS0tLQotIENoYW5nZUxvZyAgIHwgNCArKysrCi0gc3JjL2Z1c2VyLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggZmQxY2NjZi4uZTVmNzg0YyAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDcgQEAKLStDaGFuZ2VzIGluIDIyLjIyCi0rPT09PT09PT09PT09PT09PQotKwkqIEZpeGVkIHR5cG8gaW4gZnVzZXIgd2hpY2ggaGFzIC1NIG9uIERlYmlhbiAjNzQwMjc1Ci0rCi0gQ2hhbmdlcyBpbiAyMi4yMQotID09PT09PT09PT09PT09PT0KLSAJKiBNaXNzaW5nIGNvbW1hIGluIGZ1c2VyKDEpIGFkZGVkIERlYmlhbiAjNzAyMzkxCi1kaWZmIC0tZ2l0IGEvc3JjL2Z1c2VyLmMgYi9zcmMvZnVzZXIuYwotaW5kZXggYjQ4NWY2NS4uMzg5YjMwMiAxMDA2NDQKLS0tLSBhL3NyYy9mdXNlci5jCi0rKysgYi9zcmMvZnVzZXIuYwotQEAgLTExNzQsNyArMTE3NCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCQl1c2FnZShfKCJObyBwcm9jZXNzIHNwZWNpZmljYXRpb24gZ2l2ZW4iKSk7Ci0gCi0gCS8qIENoZWNrIGlmIC1NIGZsYWcgd2FzIHVzZWQgYW5kIGlmIHNvIGNoZWNrIG1vdW50cyAqLwotLQlpZiAob3B0cyAqIE9QVF9JU01PVU5UUE9JTlQpIHsKLSsJaWYgKG9wdHMgJiBPUFRfSVNNT1VOVFBPSU5UKSB7Ci0gCSAgICBjaGVja19tb3VudHBvaW50cygmbW91bnRzLCAmbmFtZXNfaGVhZCwgJm5hbWVzX3RhaWwpOwotIAl9Ci0gCi0tLSAKLTEuOC40LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMi1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL2ZpbGVzLzAwMDItSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4YWZjYWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMi1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gYWE2NmFmZWNkOGJhOWNjNDEzOWYyNWFiMTVlYzMxNTE3MzQxM2E3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgQmFya2VyIDxwYXVsQHBhdWxiYXJrZXIubWUudWs+Ci1EYXRlOiBXZWQsIDIwIEF1ZyAyMDE0IDEwOjMxOjM3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgPGxpbWl0cy5oPiBmb3IgUEFUSF9NQVgKLQotV2hlbiBidWlsZGluZyBhZ2FpbnN0IG11c2wgbGliYywgUEFUSF9NQVggaXMgZGVmaW5lZCBpbiA8bGltaXRzLmg+LgotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGF1bEBwYXVsYmFya2VyLm1lLnVrPgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIChTaG91bGQgYmUgaW4gbmV4dCByZWxlYXNlIGFmdGVyIDIyLjIxKQotLS0tCi0gc3JjL3BzdHJlZS5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvcHN0cmVlLmMgYi9zcmMvcHN0cmVlLmMKLWluZGV4IDA3MWU2YzQuLjBkMjgyNjAgMTAwNjQ0Ci0tLS0gYS9zcmMvcHN0cmVlLmMKLSsrKyBiL3NyYy9wc3RyZWUuYwotQEAgLTQxLDYgKzQxLDcgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSAjaW5jbHVkZSAiaTE4bi5oIgotICNpbmNsdWRlICJjb21tLmgiCi0tLSAKLTIuMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MuaW5jCmluZGV4IDY2YTc4NGIuLjgyZWY5NDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYwpAQCAtMTYsNiArMTYsMTUgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAogCisjIFVwc3RyZWFtIGhhcyBhIGN1c3RvbSBhdXRvZ2VuLnNoIHdoaWNoIGludm9rZXMgcG8vdXBkYXRlLXBvdGZpbGVzIGFzIHRoZXkgCisjIGRvbid0IHNoaXAgYSBwby9QT1RGSUxFUy5pbiAod2hpY2ggaXMgc2lsbHkpLiAgV2l0aG91dCB0aGF0IGZpbGUgZ2V0dGV4dCAKKyMgZG9lc24ndCBiZWxpZXZlIHBvLyBpcyBhIGdldHRleHQgZGlyZWN0b3J5IGFuZCB3b24ndCBnZW5lcmF0ZSBwby9NYWtlZmlsZS4KK0VYVFJBX0FVVE9SRUNPTkZfcmVtb3ZlID0gIi0tZXhjbHVkZT1hdXRvcG9pbnQiCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAoIGNkICR7U30gJiYgcG8vdXBkYXRlLXBvdGZpbGVzICkKK30KKworCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKIFBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MvMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtc3JjLWRpcmVjdG9yeS1iZWZvcmUtYXR0ZW1wdGluZy10LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNDQ0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MvMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtc3JjLWRpcmVjdG9yeS1iZWZvcmUtYXR0ZW1wdGluZy10LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMjg1ODc3Yjc3NjFkNzQ3MzZhY2EyNjg3ZWQ5YmVmMmY3OGI4MmMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyIE5vdiAyMDE3IDE2OjIxOjIyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBjcmVhdGUgc3JjIGRpcmVjdG9yeSBiZWZvcmUgYXR0ZW1wdGluZyB0byB3cml0ZQorIHRoZXJlCisKK090aGVyd2lzZSBvdXQgb2YgdHJlZSBidWlsZHMgd2lsbCBmYWlsLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA5ZjYxYWI0Li5iNGNlZDdmIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNzksNyArNzksNyBAQCBFWFRSQV9ESVNUID0gc3JjL3NpZ25hbWVzLmMgUkVBRE1FLm1kCisgQ0xFQU5GSUxFUyA9IHNyYy9zaWduYW1lcy5oCisgCisgc3JjL3NpZ25hbWVzLmg6IHNyYy9zaWduYW1lcy5jIE1ha2VmaWxlCistCQlleHBvcnQgTENfQUxMPUMgOyBcCisrCQlleHBvcnQgTENfQUxMPUMgOyBta2RpciAtcCBzcmMgOyBcCisgCQlAQ1BQQCAtZE0gJDwgfFwKKyAJCXRyIC1zICdcdCAnICcgJyB8IHNvcnQgLW4gLWsgMyB8IHNlZCBcCisgCSdzOiNkZWZpbmUgU0lHXChbQS1aXVtBLVpdKlswLTldKlwpIFwoWzAtOV1bMC05XSpcKS4qJFw6e1wgXDIsIlwxIiB9LDpwO2QnIHwgXAorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIyLjIxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIyLjIxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzY0NzNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzY18yMi4yMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgcHNtaXNjLmluYwotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTM1YzBmZDZlYjIwODI4ODI2MmIzODVmYTY1NmYxYmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTczMjNjYWQ2MTkyMTA4NDViNjk2ZDdkNzIyYzM4Mzg1MmIyYWNiNWM0OWI1YjA4NTJjNGYyOWM3N2E4MTQ1YSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHNtaXNjL3BzbWlzYy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UeXBvLWluLWZ1c2VyLW1ha2VzLU0tb24tYWxsLXRoZS10aW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtVUlOVFBUUl9NQVgtaW5zdGVhZC1vZi1fX1dPUkRTSVpFLnBhdGNoIFwKLSAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjA3ZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjAuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBwc21pc2MuaW5jCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmNvbS9wc21pc2MvcHNtaXNjLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1VSU5UUFRSX01BWC1pbnN0ZWFkLW9mLV9fV09SRFNJWkUucGF0Y2ggXAorCSAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2jCoFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gIjY3YjFkYTI2OGY0YzBjZTY4NTk5ODBlM2RmY2ZhZWM1YjI0NDhlODAiCitTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAxLURvLW5vdC1hY2NpZGVudGFseS1vdmVycmlkZS1jb21tYW5kbGluZS1wYXNzZWQtQ0ZMQUcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRG8tbm90LWFjY2lkZW50YWx5LW92ZXJyaWRlLWNvbW1hbmRsaW5lLXBhc3NlZC1DRkxBRy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFkZDQ3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRG8tbm90LWFjY2lkZW50YWx5LW92ZXJyaWRlLWNvbW1hbmRsaW5lLXBhc3NlZC1DRkxBRy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNzc2NzU3YTIzZTk5MzA1ODg5NTBjN2ZjYmM3ODI3ZWM3YTNlNTFjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9Ub209QzM9QTE9QzU9QTE9MjBDaHY9QzM9QTF0YWw/PSA8dGNodmF0YWxAc3VzZS5jb20+Ci1EYXRlOiBNb24sIDQgSmFuIDIwMTYgMTU6NDg6MTkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGFjY2lkZW50YWx5IG92ZXJyaWRlIGNvbW1hbmRsaW5lIHBhc3NlZCBDRkxBR1MuCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogVG9tw6HFoSBDaHbDoXRhbCA8dGNodmF0YWxAc3VzZS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYW4gS2FyYSA8amFja0BzdXNlLmN6PgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDNiYTEzODYuLjE1NTJjMTUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTUzLDcgKzUzLDcgQEAgQVNfSUYoW3Rlc3QgIngke3ByZWZpeH0iID0gInhOT05FIl0sIFsKLSAjID09PT09PT09PT09PT09PT0KLSAjIENoZWNrIGZvciBjZmxhZ3MKLSAjID09PT09PT09PT09PT09PT0KLS1DRkxBR1M9Ii1EX0dOVV9TT1VSQ0UgLVdhbGwgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0rQ0ZMQUdTPSIkQ0ZMQUdTIC1EX0dOVV9TT1VSQ0UgLVdhbGwgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0gQUNfQVJHX0VOQUJMRShbd2Vycm9yXSwKLSAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS13ZXJyb3JdLCBbVHJlYXQgYWxsIHdhcm5pbmdzIGFzIGVycm9ycywgdXNlZnVsIGZvciBkZXZlbG9wbWVudF0pXSwKLSAgICAgW2VuYWJsZV93ZXJyb3I9IiRlbmFibGV2YWwiXSwKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAxLUZpeC1idWlsZC13aXRoLWRpc2FibGVkLWxkYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRml4LWJ1aWxkLXdpdGgtZGlzYWJsZWQtbGRhcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc5ZTQ3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRml4LWJ1aWxkLXdpdGgtZGlzYWJsZWQtbGRhcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLUZyb20gMzlmZDMwY2U1N2UzYzM0YzM2NDk4NjZiZjkzNDVhNzFmMGI3ODY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci1EYXRlOiBNb24sIDQgSmFuIDIwMTYgMTU6MTA6NTMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggZGlzYWJsZWQgbGRhcAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVJlcG9ydGVkLWJ5OiBUb21hcyBDaHZhdGFsIDx0Y2h2YXRhbEBzdXNlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotIHdhcm5xdW90YS5jIHwgMzYgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvd2FybnF1b3RhLmMgYi93YXJucXVvdGEuYwotaW5kZXggMzczNGYwZS4uZTk4NjhjMSAxMDA2NDQKLS0tLSBhL3dhcm5xdW90YS5jCi0rKysgYi93YXJucXVvdGEuYwotQEAgLTEwOSwxMyArMTA5LDEzIEBAIHN0cnVjdCBjb25maWdwYXJhbXMgewotIAljaGFyICp1c2VyX3NpZ25hdHVyZTsKLSAJY2hhciAqZ3JvdXBfbWVzc2FnZTsKLSAJY2hhciAqZ3JvdXBfc2lnbmF0dXJlOwotKwl0aW1lX3QgY2NfYmVmb3JlOwotKyNpZmRlZiBVU0VfTERBUF9NQUlMX0xPT0tVUAotIAlpbnQgdXNlX2xkYXBfbWFpbDsgLyogMCAqLwotKwlpbnQgbGRhcF9pc19zZXR1cDsgLyogMCAqLwotIAlpbnQgbGRhcF9zdGFydHRsczsgLyogMCAqLwotIAlpbnQgbGRhcF90bHM7IC8qIExEQVBfT1BUX1hfVExTX05FVkVSICovCi0gCWludCBsZGFwX3ZlcnM7IC8qIExEQVBfVkVSU0lPTjMgKi8KLS0JdGltZV90IGNjX2JlZm9yZTsKLS0jaWZkZWYgVVNFX0xEQVBfTUFJTF9MT09LVVAKLS0JaW50IGxkYXBfaXNfc2V0dXA7IC8qIDAgKi8KLSAJY2hhciBsZGFwX2hvc3RbQ05GX0JVRkZFUl07Ci0gCWludCBsZGFwX3BvcnQ7Ci0gCWNoYXIgbGRhcF91cmlbQ05GX0JVRkZFUl07Ci1AQCAtNzI5LDEzICs3MjksMTMgQEAgc3RhdGljIGludCByZWFkY29uZmlnZmlsZShjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IGNvbmZpZ3BhcmFtcyAqY29uZmlnKQotIAl9Ci0gCW1haWxkZXZbMF0gPSAwOwotIAljb25maWctPnVzZXJfc2lnbmF0dXJlID0gY29uZmlnLT51c2VyX21lc3NhZ2UgPSBjb25maWctPmdyb3VwX3NpZ25hdHVyZSA9IGNvbmZpZy0+Z3JvdXBfbWVzc2FnZSA9IE5VTEw7Ci0rCWNvbmZpZy0+Y2NfYmVmb3JlID0gLTE7Ci0rCi0rI2lmZGVmIFVTRV9MREFQX01BSUxfTE9PS1VQCi0gCWNvbmZpZy0+dXNlX2xkYXBfbWFpbCA9IDA7Ci0gCWNvbmZpZy0+bGRhcF9zdGFydHRscyA9IDA7Ci0gCWNvbmZpZy0+bGRhcF90bHMgPSBMREFQX09QVF9YX1RMU19ORVZFUjsKLSAJY29uZmlnLT5sZGFwX3ZlcnMgPSBMREFQX1ZFUlNJT04zOwotLQljb25maWctPmNjX2JlZm9yZSA9IC0xOwotLQotLSNpZmRlZiBVU0VfTERBUF9NQUlMX0xPT0tVUAotIAljb25maWctPmxkYXBfcG9ydCA9IGNvbmZpZy0+bGRhcF9pc19zZXR1cCA9IDA7Ci0gCWNvbmZpZy0+bGRhcF9ob3N0WzBdID0gMDsKLSAJY29uZmlnLT5sZGFwX3VyaVswXSA9IDA7Ci1AQCAtODIwLDYgKzgyMCwxOCBAQCBzdGF0aWMgaW50IHJlYWRjb25maWdmaWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgY29uZmlncGFyYW1zICpjb25maWcpCi0gCQkJCWNyZWF0ZV9lb2xuKGNvbmZpZy0+Z3JvdXBfc2lnbmF0dXJlKTsKLSAJCQkJdmVyaWZ5X2Zvcm1hdChjb25maWctPmdyb3VwX3NpZ25hdHVyZSwgIkdST1VQX1NJR05BVFVSRSIpOwotIAkJCX0KLSsJCQllbHNlIGlmICghc3RyY21wKHZhciwgIkNDX0JFRk9SRSIpKSB7Ci0rCQkJCWludCBudW07Ci0rCQkJCWNoYXIgdW5pdFsxMF07Ci0rCi0rCQkJCWlmIChzc2NhbmYodmFsdWUsICIlZCVzIiwgJm51bSwgdW5pdCkgIT0gMikKLSsJCQkJCWdvdG8gY2NfcGFyc2VfZXJyOwotKwkJCQlpZiAoc3RyMnRpbWV1bml0cyhudW0sIHVuaXQsICZjb25maWctPmNjX2JlZm9yZSkgPCAwKSB7Ci0rY2NfcGFyc2VfZXJyOgotKwkJCQkJZGllKDEsIF8oIkNhbm5vdCBwYXJzZSB0aW1lIGF0IENDX0JFRk9SRSB2YXJpYWJsZSAobGluZSAlZCkuXG4iKSwgbGluZSk7Ci0rCQkJCX0KLSsJCQl9Ci0rI2lmZGVmIFVTRV9MREFQX01BSUxfTE9PS1VQCi0gCQkJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJMREFQX01BSUwiKSkgewotIAkJCQlpZihzdHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpID09IDApIAotIAkJCQkJY29uZmlnLT51c2VfbGRhcF9tYWlsID0gMTsKLUBAIC04NDYsMTggKzg1OCw2IEBAIHN0YXRpYyBpbnQgcmVhZGNvbmZpZ2ZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBjb25maWdwYXJhbXMgKmNvbmZpZykKLSAJCQkJZWxzZQotIAkJCQkJY29uZmlnLT5sZGFwX3N0YXJ0dGxzID0gMDsKLSAJCQl9Ci0tCQkJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJDQ19CRUZPUkUiKSkgewotLQkJCQlpbnQgbnVtOwotLQkJCQljaGFyIHVuaXRbMTBdOwotLQotLQkJCQlpZiAoc3NjYW5mKHZhbHVlLCAiJWQlcyIsICZudW0sIHVuaXQpICE9IDIpCi0tCQkJCQlnb3RvIGNjX3BhcnNlX2VycjsKLS0JCQkJaWYgKHN0cjJ0aW1ldW5pdHMobnVtLCB1bml0LCAmY29uZmlnLT5jY19iZWZvcmUpIDwgMCkgewotLWNjX3BhcnNlX2VycjoKLS0JCQkJCWRpZSgxLCBfKCJDYW5ub3QgcGFyc2UgdGltZSBhdCBDQ19CRUZPUkUgdmFyaWFibGUgKGxpbmUgJWQpLlxuIiksIGxpbmUpOwotLQkJCQl9Ci0tCQkJfQotLSNpZmRlZiBVU0VfTERBUF9NQUlMX0xPT0tVUAotIAkJCWVsc2UgaWYgKCFzdHJjbXAodmFyLCAiTERBUF9IT1NUIikpCi0gCQkJCXNzdHJuY3B5KGNvbmZpZy0+bGRhcF9ob3N0LCB2YWx1ZSwgQ05GX0JVRkZFUik7Ci0gCQkJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJMREFQX1BPUlQiKSkKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAxLVVzZS1OR1JPVVBTX01BWC1pbnN0ZWFkLW9mLU5HUk9VUFMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtVXNlLU5HUk9VUFNfTUFYLWluc3RlYWQtb2YtTkdST1VQUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZiMmRhZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtVXNlLU5HUk9VUFNfTUFYLWluc3RlYWQtb2YtTkdST1VQUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gZmVjYTZkMmU1NWQ5OTJiYmUxNzZlZThmYWE3MzRjMTA1ZWIxYjJlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+Ci1EYXRlOiBUdWUsIDI5IE1hciAyMDE2IDIwOjQ4OjA1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBOR1JPVVBTX01BWCBpbnN0ZWFkIG9mIE5HUk9VUFMKLQotTkdSUk9VUFNfTUFYIGlzIHdoYXQgaXMgZGVmaW5lZCBieSBTdVN2MzsgTkdST1VQUyBpcyBub3QgZ3VhcmFudGVlZCBieQotYW55IHN0YW5kYXJkLCBidXQgaXMganVzdCBhbiBhbmNpZW50IEJTRCdpc20uICBTaW5jZSBBbmRyb2lkJ3MgYmlvbmljCi1saWJjIGhhcyB0aGUgZm9ybWVyIGJ1dCBub3QgdGhlIGxhdHRlciwgbGV0J3MgdXNlIE5HUk9VUFNfTUFYIGluc3RlYWQuCi0KLVNpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+Ci1TaWduZWQtb2ZmLWJ5OiBKYW4gS2FyYSA8amFja0BzdXNlLmN6PgotLS0tCi0gcXVvdGEuYyAgICB8IDUgKysrLS0KLSBxdW90YW9wcy5jIHwgNSArKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcXVvdGEuYyBiL3F1b3RhLmMKLWluZGV4IDA0OWRhYzQuLmUxOTVlYWQgMTAwNjQ0Ci0tLS0gYS9xdW90YS5jCi0rKysgYi9xdW90YS5jCi1AQCAtNDgsNiArNDgsNyBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpZmRlZiBSUEMKLSAjaW5jbHVkZSA8cnBjL3JwYy5oPgotICNpbmNsdWRlICJycXVvdGEuaCIKLUBAIC0yOTYsNyArMjk3LDcgQEAgc3RhdGljIGludCBzaG93cXVvdGFzKGludCB0eXBlLCBxaWRfdCBpZCwgaW50IG1udGNudCwgY2hhciAqKm1udCkKLSBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gewotIAlpbnQgbmdyb3VwczsKLS0JZ2lkX3QgZ2lkc2V0W05HUk9VUFNdLCAqZ2lkc2V0cDsKLSsJZ2lkX3QgZ2lkc2V0W05HUk9VUFNfTUFYXSwgKmdpZHNldHA7Ci0gCWludCBpLCByZXQ7Ci0gCXN0cnVjdCBvcHRpb24gbG9uZ19vcHRzW10gPSB7Ci0gCQl7ICJoZWxwIiwgMCwgTlVMTCwgJ2gnIH0sCi1AQCAtNDA1LDcgKzQwNiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQlyZXQgfD0gc2hvd3F1b3RhcyhVU1JRVU9UQSwgZ2V0dWlkKCksIGFyZ2MsIGFyZ3YpOwotIAkJaWYgKGZsYWdzICYgRkxfR1JPVVApIHsKLSAJCQluZ3JvdXBzID0gc3lzY29uZihfU0NfTkdST1VQU19NQVgpOwotLQkJCWlmIChuZ3JvdXBzID4gTkdST1VQUykgewotKwkJCWlmIChuZ3JvdXBzID4gTkdST1VQU19NQVgpIHsKLSAJCQkJZ2lkc2V0cCA9IG1hbGxvYyhuZ3JvdXBzICogc2l6ZW9mKGdpZF90KSk7Ci0gCQkJCWlmICghZ2lkc2V0cCkKLSAJCQkJCWRpZSgxLCBfKCJHaWQgc2V0IGFsbG9jYXRpb24gKCVkKTogJXNcbiIpLCBuZ3JvdXBzLCBzdHJlcnJvcihlcnJubykpOwotZGlmZiAtLWdpdCBhL3F1b3Rhb3BzLmMgYi9xdW90YW9wcy5jCi1pbmRleCAxMzZhZWMzLi41OTBkYzFiIDEwMDY0NAotLS0tIGEvcXVvdGFvcHMuYwotKysrIGIvcXVvdGFvcHMuYwotQEAgLTUxLDYgKzUxLDcgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlICJycXVvdGEuaCIKLUBAIC05Nyw3ICs5OCw3IEBAIHN0cnVjdCBkcXVvdCAqZ2V0cHJpdnMocWlkX3QgaWQsIHN0cnVjdCBxdW90YV9oYW5kbGUgKipoYW5kbGVzLCBpbnQgcXVpZXQpCi0gI2lmIGRlZmluZWQoQlNEX0JFSEFWSU9VUikKLSAJaW50IGosIG5ncm91cHM7Ci0gCXVpZF90IGV1aWQ7Ci0tCWdpZF90IGdpZHNldFtOR1JPVVBTXSwgKmdpZHNldHA7Ci0rCWdpZF90IGdpZHNldFtOR1JPVVBTX01BWF0sICpnaWRzZXRwOwotICNlbmRpZgotIAotIAlmb3IgKGkgPSAwOyBoYW5kbGVzW2ldOyBpKyspIHsKLUBAIC0xMTUsNyArMTE2LDcgQEAgc3RydWN0IGRxdW90ICpnZXRwcml2cyhxaWRfdCBpZCwgc3RydWN0IHF1b3RhX2hhbmRsZSAqKmhhbmRsZXMsIGludCBxdWlldCkKLSAJCQkJaWYgKGdldGV1aWQoKSA9PSAwKQotIAkJCQkJYnJlYWs7Ci0gCQkJCW5ncm91cHMgPSBzeXNjb25mKF9TQ19OR1JPVVBTX01BWCk7Ci0tCQkJCWlmIChuZ3JvdXBzID4gTkdST1VQUykgewotKwkJCQlpZiAobmdyb3VwcyA+IE5HUk9VUFNfTUFYKSB7Ci0gCQkJCQlnaWRzZXRwID0gbWFsbG9jKG5ncm91cHMgKiBzaXplb2YoZ2lkX3QpKTsKLSAJCQkJCWlmICghZ2lkc2V0cCkgewotIAkJCQkJCWdpZDJncm91cChpZCwgbmFtZSk7Ci0tLSAKLTIuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMi1BbGxvdy1idWlsZGluZy1vbi1zeXN0ZW1zLXRoYXQtZG8tbm90LWhhdmUtcnBjLWhlYWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAyLUFsbG93LWJ1aWxkaW5nLW9uLXN5c3RlbXMtdGhhdC1kby1ub3QtaGF2ZS1ycGMtaGVhZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZWE1NDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAyLUFsbG93LWJ1aWxkaW5nLW9uLXN5c3RlbXMtdGhhdC1kby1ub3QtaGF2ZS1ycGMtaGVhZGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotRnJvbSBmMzBlMWFkYTgzMjY0NjNjYzBhZjA0OGFmYTA1OGJjMmYxZGM5MzcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLURhdGU6IFR1ZSwgMjkgTWFyIDIwMTYgMjA6NDg6MDQgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgYnVpbGRpbmcgb24gc3lzdGVtcyB0aGF0IGRvIG5vdCBoYXZlIHJwYyBoZWFkZXIgZmlsZXMKLQotQW5kcm9pZCdzIGJpb25pYyBDIGxpYnJhcnkgZG9lc24ndCBoYXZlIFN1biBSUEMgc3VwcG9ydC4KLQotU2lnbmVkLW9mZi1ieTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLVNpZ25lZC1vZmYtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci0tLS0KLSBNYWtlZmlsZS5hbSB8IDMwICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIHF1b3Rhb3BzLmMgIHwgIDIgKysKLSBzZXRxdW90YS5jICB8ICAyICsrCi0gMyBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDZkN2VhMGUuLjgyZGI5OWYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xLDcgKzEsNSBAQAotIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00Ci0gCi0tQlVJTFRfU09VUkNFUyA9IHJxdW90YS5oIHJxdW90YS5jIHJxdW90YV9jbG50LmMKLS0KLSBkb2NkaXIgPSAkKGRhdGFkaXIpL2RvYy9AUEFDS0FHRUAKLSBkb2NfREFUQSA9IFwKLSAJUkVBRE1FLm1haWxzZXJ2ZXIgXAotQEAgLTEyLDExICsxMCw2IEBAIGRvY19EQVRBID0gXAotIAlkb2MvcXVvdGFzLnByZWZvcm1hdGVkIFwKLSAJZG9jL3F1b3Rhcy0xLmVwcwotIAotLXJwY3N2Y2RpciA9ICQoaW5jbHVkZWRpcikvcnBjc3ZjCi0tcnBjc3ZjX0RBVEEgPSBcCi0tCXJxdW90YS5oIFwKLS0JcnF1b3RhLngKLS0KLSBzeXNjb25mX0RBVEEgPSBcCi0gCXdhcm5xdW90YS5jb25mIFwKLSAJcXVvdGF0YWIgXAotQEAgLTM1LDE1ICsyOCwxMiBAQCBtYW5fTUFOUyA9IFwKLSAJcXVvdGEuMSBcCi0gCXF1b3QuOCBcCi0gCXJlcHF1b3RhLjggXAotLQlycGMucnF1b3RhZC44IFwKLSAJcnF1b3RhLjMgXAotIAlzZXRxdW90YS44IFwKLSAJd2FybnF1b3RhLmNvbmYuNSBcCi0gCXdhcm5xdW90YS44IFwKLSAJeHFtc3RhdHMuOAotIAotLUNMRUFORklMRVMgPSBycXVvdGEuYyBycXVvdGEuaCBycXVvdGFfY2xudC5jCi0tCi0gU1VCRElSUyA9IHBvCi0gCi0gRVhUUkFfRElTVCA9IFwKLUBAIC01NSw5ICs0NSwxNSBAQCBFWFRSQV9ESVNUID0gXAotIAlDaGFuZ2Vsb2cgXAotIAlsZGFwLXNjcmlwdHMKLSAKLS1ub2luc3RfTElCUkFSSUVTID0gXAotLQlsaWJxdW90YS5hIFwKLS0JbGlicnBjY2xpZW50LmEKLStub2luc3RfTElCUkFSSUVTID0gbGlicXVvdGEuYQotKwotK2lmIFdJVEhfUlBDCi0rcnBjc3ZjZGlyID0gJChpbmNsdWRlZGlyKS9ycGNzdmMKLStycGNzdmNfREFUQSA9IFwKLSsJcnF1b3RhLmggXAotKwlycXVvdGEueAotKwotK25vaW5zdF9MSUJSQVJJRVMgKz0gbGlicnBjY2xpZW50LmEKLSAKLSBsaWJycGNjbGllbnRfYV9TT1VSQ0VTID0gXAotIAlycXVvdGEuYyBcCi1AQCAtNjcsOCArNjMsMTAgQEAgbGlicnBjY2xpZW50X2FfU09VUkNFUyA9IFwKLSAJcnF1b3RhX2NsbnQuYwotIGxpYnJwY2NsaWVudF9hX0NGTEFHUyA9IC1Xbm8tdW51c2VkCi0gCi0taWYgV0lUSF9SUEMKLSBSUENMSUJTID0gbGlicnBjY2xpZW50LmEKLStCVUlMVF9TT1VSQ0VTID0gcnF1b3RhLmggcnF1b3RhLmMgcnF1b3RhX2NsbnQuYwotK0NMRUFORklMRVMgPSBycXVvdGEuYyBycXVvdGEuaCBycXVvdGFfY2xudC5jCi0rbWFuX01BTlMgKz0gcnBjLnJxdW90YWQuOAotIGVuZGlmCi0gCi0gbGlicXVvdGFfYV9TT1VSQ0VTID0gXAotQEAgLTIxNyw2ICsyMTUsNyBAQCBjb252ZXJ0cXVvdGFfTERBREQgPSBcCi0gCWxpYnF1b3RhLmEgXAotIAkkKFJQQ0xJQlMpCi0gCi0raWYgV0lUSF9SUEMKLSBycGNfcnF1b3RhZF9TT1VSQ0VTID0gXAotIAlycXVvdGFfc2VydmVyLmMgXAotIAlycXVvdGFfc3ZjLmMgXAotQEAgLTIyNSw2ICsyMjQsNyBAQCBycGNfcnF1b3RhZF9MREFERCA9IFwKLSAJbGlicXVvdGEuYSBcCi0gCSQoV1JBUF9MSUJTKSBcCi0gCSQoUlBDTElCUykKLStlbmRpZgotIAotIHF1b3RhX25sZF9TT1VSQ0VTID0gcXVvdGFfbmxkLmMKLSBxdW90YV9ubGRfQ0ZMQUdTID0gXAotQEAgLTIzNiw2ICsyMzYsNyBAQCBxdW90YV9ubGRfTERBREQgPSBcCi0gCSQoREJVU19MSUJTKSBcCi0gCSQoTElCTkwzX0xJQlMpCi0gCi0raWYgV0lUSF9SUEMKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLQotICMgUnBjZ2VuIGNvbnZlcnNpb25zCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0KLUBAIC0yNTAsNiArMjUxLDcgQEAgcXVvdGFfbmxkX0xEQUREID0gXAotIHJxdW90YV9jbG50LmM6IHJxdW90YS54Ci0gCUBybSAtZiAkQAotIAlAJChSUENHRU4pIC1sIC1vICRAICQ8Ci0rZW5kaWYKLSAKLSAjIC0tLS0tLS0tCi0gIyBRdW90YW9mZgotZGlmZiAtLWdpdCBhL3F1b3Rhb3BzLmMgYi9xdW90YW9wcy5jCi1pbmRleCA0N2VmOWE3Li4xMzZhZWMzIDEwMDY0NAotLS0tIGEvcXVvdGFvcHMuYwotKysrIGIvcXVvdGFvcHMuYwotQEAgLTM0LDcgKzM0LDkgQEAKLSAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0rI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlIDxycGMvcnBjLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxzeXMvZmlsZS5oPgotZGlmZiAtLWdpdCBhL3NldHF1b3RhLmMgYi9zZXRxdW90YS5jCi1pbmRleCA1MWQ3YjNjLi44ZWNkOWMzIDEwMDY0NAotLS0tIGEvc2V0cXVvdGEuYwotKysrIGIvc2V0cXVvdGEuYwotQEAgLTcsNyArNyw5IEBACi0gCi0gI2luY2x1ZGUgImNvbmZpZy5oIgotIAotKyNpZiBkZWZpbmVkKFJQQykKLSAjaW5jbHVkZSA8cnBjL3JwYy5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0tIAotMi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAzLURvbi10LWJ1aWxkLXJwYy5ycXVvdGFkLXdoZW4tZGlzYWJsZS1ycGMtd2FzLXJlcXVlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ1NTM4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gYzdhNzYyMzdlN2E1MWE2OWQwMjM2ZWJmYzE5MWU0NjJmODA1Y2Y0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExhcnMgV2VuZGxlciA8cG9seW5vbWlhbC1jQGdlbnRvby5vcmc+Ci1EYXRlOiBNb24sIDE1IEZlYiAyMDE2IDE0OjQyOjE0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IGJ1aWxkIHJwYy5ycXVvdGFkIHdoZW4gLS1kaXNhYmxlLXJwYyB3YXMgcmVxdWVzdGVkLgotCi1UaGlzIGZpeGVzIGEgYnVjaCBvZiB1bmRlZmluZWQgcmVmZXJlbmNlczoKLQoteDg2XzY0LXBjLWxpbnV4LWdudS1nY2MgIC1tYXJjaD1uYXRpdmUgLW10dW5lPW5hdGl2ZSAtTzIgLXBpcGUgLURfR05VX1NPVVJDRSAtV2EKLWxsIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1mUElDIC1waWUgLVdsLC1PMSAtV2wsLS1oYXNoLXN0Ci15bGU9Z251IC1XbCwtLXNvcnQtY29tbW9uIC1XbCwtLWFzLW5lZWRlZCAtbyBycGMucnF1b3RhZCBycXVvdGFfc2VydmVyLm8gcnF1b3RhXwotc3ZjLm8gc3ZjX3NvY2tldC5vIGxpYnF1b3RhLmEKLXJxdW90YV9zdmMubzogSW4gZnVuY3Rpb24gYHJxdW90YXByb2dfMic6Ci1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MWQzKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX3NldHF1b3RhX3JzbHQnCi1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MWRhKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2V4dF9zZXRxdW90YV9hcmdzJwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDJiMik6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9zZXRxdW90YV9yc2x0JwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDJiOSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9leHRfc2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHgyZmYpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHgzMDYpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZXh0X2dldHF1b3RhX2FyZ3MnCi1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MzFhKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2dldHF1b3RhX3JzbHQnCi1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MzIxKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2V4dF9nZXRxdW90YV9hcmdzJwotcnF1b3RhX3N2Yy5vOiBJbiBmdW5jdGlvbiBgcnF1b3RhcHJvZ18xJzoKLXJxdW90YV9zdmMuYzooLnRleHQrMHgzZjMpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHgzZmEpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHg0ZDIpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHg0ZDkpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHg1MWYpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHg1MjYpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHg1M2EpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHg1NDEpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfYXJncycKLWNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotTWFrZWZpbGU6OTAxOiByZWNpcGUgZm9yIHRhcmdldCAncnBjLnJxdW90YWQnIGZhaWxlZAotCi1TaWduZWQtb2ZmLWJ5OiBMYXJzIFdlbmRsZXIgPHBvbHlub21pYWwtY0BnZW50b28ub3JnPgotU2lnbmVkLW9mZi1ieTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KLS0tLQotIE1ha2VmaWxlLmFtIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDc3Zjg0MDAuLjZkN2VhMGUgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xMTYsOCArMTE2LDExIEBAIHNiaW5fUFJPR1JBTVMgPSBcCi0gCXhxbXN0YXRzIFwKLSAJZWRxdW90YSBcCi0gCXNldHF1b3RhIFwKLS0JY29udmVydHF1b3RhIFwKLSsJY29udmVydHF1b3RhCi0raWYgV0lUSF9SUEMKLStzYmluX1BST0dSQU1TICs9IFwKLSAJcnBjLnJxdW90YWQKLStlbmRpZgotIGlmIFdJVEhfTkVUTElOSwotIHNiaW5fUFJPR1JBTVMgKz0gXAotIAlxdW90YV9ubGQKLS0tIAotMi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDA0LUZpeC13YXJuaW5ncy1kdWUtdG8tbWlzc2luZy1zdGRsaWIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwNC1GaXgtd2FybmluZ3MtZHVlLXRvLW1pc3Npbmctc3RkbGliLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYjRjZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDA0LUZpeC13YXJuaW5ncy1kdWUtdG8tbWlzc2luZy1zdGRsaWIuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gYzRiNTZlZTU4YjliNzZkMjU5ODUzNWNmNjEwOWEyN2IyMmU2MGFiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci1EYXRlOiBXZWQsIDMwIE1hciAyMDE2IDEwOjIxOjEzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB3YXJuaW5ncyBkdWUgdG8gbWlzc2luZyBzdGRsaWIuaAotCi1XaGVuIGNvbXBpbGluZyB3aXRob3V0IFJQQywgd2UgZG8gbm90IGdldCBzdGRsaWIuaCBhdXRvbWF0aWNhbGx5Ci1pbmNsdWRlZCB2aWEgb3RoZXIgaW5jbHVkZXMgYW5kIHRodXMgbWlzcyBzb21lIGZ1bmN0aW9uIGRlZmluaXRpb25zLgotSW5jbHVkZSBzdGRsaWIuaCBleHBsaWNpdGVseS4KLQotU2lnbmVkLW9mZi1ieTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KLS0tLQotIHF1b3Rhb3BzLmMgfCAxICsKLSBzZXRxdW90YS5jIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3F1b3Rhb3BzLmMgYi9xdW90YW9wcy5jCi1pbmRleCA1OTBkYzFiLi41NmNmNjIyIDEwMDY0NAotLS0tIGEvcXVvdGFvcHMuYwotKysrIGIvcXVvdGFvcHMuYwotQEAgLTUyLDYgKzUyLDcgQEAKLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0gCi0gI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlICJycXVvdGEuaCIKLWRpZmYgLS1naXQgYS9zZXRxdW90YS5jIGIvc2V0cXVvdGEuYwotaW5kZXggOGVjZDljMy4uNDIxNjMxZSAxMDA2NDQKLS0tLSBhL3NldHF1b3RhLmMKLSsrKyBiL3NldHF1b3RhLmMKLUBAIC0xNyw2ICsxNyw3IEBACi0gI2luY2x1ZGUgPGdldG9wdC5oPgotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotIAotICNpZiBkZWZpbmVkKFJQQykKLSAjaW5jbHVkZSAicnF1b3RhLmgiCi0tLSAKLTIuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2gKaW5kZXggOWNhMmZmYy4uNDY4N2NhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2gKQEAgLTEsMjAgKzEsMzIgQEAKLVJlcGxhY2UgZ2V0cnBjYnludW1iZXJfciB3aXRoIGdldHJwY2J5bnVtYmVyCitGcm9tIGEzODA4ZmQxNjU4NDcyOThkMDI1OTcxZWIzYzdiZTdkMTFjYWJhOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogV2VkLCA4IE5vdiAyMDE3IDExOjU2OjU1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlcGxhY2UgZ2V0cnBjYnludW1iZXJfciB3aXRoIGdldHJwY2J5bnVtYmVyCisKIG11c2wgYW5kIHVjbGliYyBkb250IGltcGxlbWVudCBpdAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLUluZGV4OiBxdW90YS10b29scy9zdmNfc29ja2V0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBxdW90YS10b29scy5vcmlnL3N2Y19zb2NrZXQuYwotKysrIHF1b3RhLXRvb2xzL3N2Y19zb2NrZXQuYwotQEAgLTU1LDcgKzU1LDggQEAgc3RhdGljIGludCBzdmNfc29ja2V0ICh1X2xvbmcgbnVtYmVyLCBpbgotIAlhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBzdmNfc29ja2V0LmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3N2Y19zb2NrZXQuYyBiL3N2Y19zb2NrZXQuYworaW5kZXggOGE0NDYwNC4uNWJkYWFhMCAxMDA2NDQKKy0tLSBhL3N2Y19zb2NrZXQuYworKysrIGIvc3ZjX3NvY2tldC5jCitAQCAtMzYsNyArMzYsOCBAQCBzdGF0aWMgaW50IGdldF9zZXJ2aWNlX3BvcnQodV9sb25nIG51bWJlciwgY29uc3QgY2hhciAqcHJvdG8pCisgCXN0cnVjdCBzZXJ2ZW50IHNlcnZidWYsICpzZXJ2cCA9IE5VTEw7CisgCWludCByZXQ7CiAgCi0gCWlmICghcG9ydCkgewotLQkJcmV0ID0gZ2V0cnBjYnludW1iZXJfcihudW1iZXIsICZycGNidWYsIHJwY2RhdGEsIHNpemVvZihycGNkYXRhKSwgJnJwY3ApOwotKwkJcnBjcCA9IGdldHJwY2J5bnVtYmVyKG51bWJlcik7Ci0rCQlyZXQgPSAwOwotIAkJaWYgKHJldCA9PSAwICYmIHJwY3AgIT0gTlVMTCkgewotIAkJCS8qIEZpcnN0IHRyeSBuYW1lICovCi0gCQkJcmV0ID0gZ2V0c2VydmJ5bmFtZV9yKHJwY3AtPnJfbmFtZSwgcHJvdG8sICZzZXJ2YnVmLCBzZXJ2ZGF0YSwKKy0JcmV0ID0gZ2V0cnBjYnludW1iZXJfcihudW1iZXIsICZycGNidWYsIHJwY2RhdGEsIHNpemVvZihycGNkYXRhKSwgJnJwY3ApOworKyAgICBycGNwID0gZ2V0cnBjYnludW1iZXIobnVtYmVyKTsKKysgICAgcmV0ID0gMDsKKyAJaWYgKHJldCA9PSAwICYmIHJwY3AgIT0gTlVMTCkgeworIAkJLyogRmlyc3QgdHJ5IG5hbWUgKi8KKyAJCXJldCA9IGdldHNlcnZieW5hbWVfcihycGNwLT5yX25hbWUsIHByb3RvLCAmc2VydmJ1Ziwgc2VydmRhdGEsCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhiMzg1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhXzQuMDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2xzIGZvciBtb25pdG9yaW5nICYgbGltaXRpbmcgdXNlciBkaXNrIHVzYWdlIHBlciBmaWxlc3lzdGVtIgotU0VDVElPTiA9ICJiYXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xODEzNiZhdGlkPTExODEzNiIKLUxJQ0VOU0UgPSAiQlNEICYgR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcXVvdGEuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTMzO21kNT0zMzFjN2Q3Nzc0NGJmZTBhZDI0MDI3ZjA2NTEwMjhlYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ycXVvdGFfc2VydmVyLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmU3ZTBkN2UxMWM2ZjgyMGY4ZmE2MmE1YWY3MTIzMGYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3ZjX3NvY2tldC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTc7bWQ1PTI0ZDVhODc5MmRhNDU5MTA3ODZlZWFjNzUwYmU4Y2ViIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2xpbnV4cXVvdGEvcXVvdGEtdG9vbHMvJHtQVn0vcXVvdGEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtZGlzYWJsZWQtbGRhcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1hY2NpZGVudGFseS1vdmVycmlkZS1jb21tYW5kbGluZS1wYXNzZWQtQ0ZMQUcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZmNudGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX25vbl9wb3NpeF90eXBlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1OR1JPVVBTX01BWC1pbnN0ZWFkLW9mLU5HUk9VUFMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BbGxvdy1idWlsZGluZy1vbi1zeXN0ZW1zLXRoYXQtZG8tbm90LWhhdmUtcnBjLWhlYWRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC13YXJuaW5ncy1kdWUtdG8tbWlzc2luZy1zdGRsaWIuaC5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmIwOWY5YzkzNTE1YzI1YTUyOGJlNTc1NGNkZmI2ZjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWM2YzRkOWFlN2JmMzA1MDZkZDJhYTNkODA1NmM0ZmYyZjhkMDg3OTMwZDdjNzIxNjE2ZjVjMDkzYmRjNjc0YiIKLQotQ1ZFX1BST0RVQ1QgPSAibGludXhfZGlza3F1b3RhIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhL2ZpbGVzL3F1b3RhLXRvb2xzLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9xdW90YS10b29scy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1ERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGUyZnNwcm9ncyBsaWJubCBkYnVzIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dCBwa2djb25maWcKLQotQ0ZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYycsICcnLCBkKX0iCi1MREZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLWx0aXJwYycsICcnLCBkKX0iCi1BU05FRURFRCA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMgcnBjIGJzZCIKLVBBQ0tBR0VDT05GSUdfbGliYy1tdXNsID0gInRjcC13cmFwcGVycyBycGMiCi0KLVBBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLWVuYWJsZS1saWJ3cmFwLC0tZGlzYWJsZS1saWJ3cmFwLHRjcC13cmFwcGVycyIKLVBBQ0tBR0VDT05GSUdbcnBjXSA9ICItLWVuYWJsZS1ycGMsLS1kaXNhYmxlLXJwYyxsaWJ0aXJwYyIKLVBBQ0tBR0VDT05GSUdbYnNkXSA9ICItLWVuYWJsZS1ic2RfYmVoYXZpb3VyPXllcywtLWVuYWJsZS1ic2RfYmVoYXZpb3VyPW5vLCIKLVBBQ0tBR0VDT05GSUdbbGRhcG1haWxdID0gIi0tZW5hYmxlLWxkYXBtYWlsLC0tZGlzYWJsZS1sZGFwbWFpbCxvcGVubGRhcCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2YzNzYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YV80LjA0LmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiVG9vbHMgZm9yIG1vbml0b3JpbmcgJiBsaW1pdGluZyB1c2VyIGRpc2sgdXNhZ2UgcGVyIGZpbGVzeXN0ZW0iCitTRUNUSU9OID0gImJhc2UiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpbnV4cXVvdGEvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTE4MTM2JmF0aWQ9MTE4MTM2IgorTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9xdW90YS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzM7bWQ1PTMzMWM3ZDc3NzQ0YmZlMGFkMjQwMjdmMDY1MTAyOGVjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JxdW90YV9zZXJ2ZXIuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mZTdlMGQ3ZTExYzZmODIwZjhmYTYyYTVhZjcxMjMwZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zdmNfc29ja2V0LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9MjRkNWE4NzkyZGE0NTkxMDc4NmVlYWM3NTBiZThjZWIiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvbGludXhxdW90YS9xdW90YS10b29scy8ke1BWfS9xdW90YS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZmNudGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX25vbl9wb3NpeF90eXBlcy5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjQ2ZjNiMGI1MTQxZjAzMmYyNTY4NDAwNWRhYzQ5ZDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzM1YmUxODg3ZTdmNTFmNTQxNjVlNzc4YWU0M2ZjODU5YzA0ZTQ0ZDg4ODM0ZWNiMmY0NzBlOTFkNGVmOGVkZiIKKworQ1ZFX1BST0RVQ1QgPSAibGludXhfZGlza3F1b3RhIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhL2ZpbGVzL3F1b3RhLXRvb2xzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9xdW90YS10b29scy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGUyZnNwcm9ncyBsaWJubCBkYnVzIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dCBwa2djb25maWcKKworQ0ZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYycsICcnLCBkKX0iCitMREZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLWx0aXJwYycsICcnLCBkKX0iCitBU05FRURFRCA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMgcnBjIGJzZCIKK1BBQ0tBR0VDT05GSUdfbGliYy1tdXNsID0gInRjcC13cmFwcGVycyBycGMiCisKK1BBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLWVuYWJsZS1saWJ3cmFwLC0tZGlzYWJsZS1saWJ3cmFwLHRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbcnBjXSA9ICItLWVuYWJsZS1ycGMsLS1kaXNhYmxlLXJwYyxsaWJ0aXJwYyIKK1BBQ0tBR0VDT05GSUdbYnNkXSA9ICItLWVuYWJsZS1ic2RfYmVoYXZpb3VyPXllcywtLWVuYWJsZS1ic2RfYmVoYXZpb3VyPW5vLCIKK1BBQ0tBR0VDT05GSUdbbGRhcG1haWxdID0gIi0tZW5hYmxlLWxkYXBtYWlsLC0tZGlzYWJsZS1sZGFwbWFpbCxvcGVubGRhcCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3BtYXBwcm9jX2R1bXAtRml4ZWQtdHlwby1pbi1tZW1vcnktbGVhay1wYXRjaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3BtYXBwcm9jX2R1bXAtRml4ZWQtdHlwby1pbi1tZW1vcnktbGVhay1wYXRjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzIzZWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcG1hcHByb2NfZHVtcC1GaXhlZC10eXBvLWluLW1lbW9yeS1sZWFrLXBhdGNoLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gYzQ5YTdlYTYzOWViNzAwODIzZTE3NGZkNjA1YmJiZTE4M2UyMjlhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAxNyBNYXkgMjAxNyAxMDo1MjoyNSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBwbWFwcHJvY19kdW1wOiBGaXhlZCB0eXBvIGluIG1lbW9yeSBsZWFrIHBhdGNoCisKK2NvbW1pdCA3ZWEzNmVlZSBpbnRyb2R1Y2UgYSB0eXBvIHRoYXQgY2F1c2VkCitOSVMgKGFrYSB5cGJpbmQpIHRvIGZhaWwuCisKK1NpZ25lZC1vZmYtYnk6IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcG1hcF9zdmMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IHJwY2JpbmQtMC4yLjQvc3JjL3BtYXBfc3ZjLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBycGNiaW5kLTAuMi40Lm9yaWcvc3JjL3BtYXBfc3ZjLmMKKysrKyBycGNiaW5kLTAuMi40L3NyYy9wbWFwX3N2Yy5jCitAQCAtMzg0LDcgKzM4NCw3IEBAIHBtYXBwcm9jX2R1bXAoc3RydWN0IHN2Y19yZXEgKnJxc3RwIC8qX18KKyAJfQorIAorIGRvbmU6CistCWlmICghc3ZjX2ZyZWVhcmdzKHhwcnQsICh4ZHJwcm9jX3QpIHhkcl9wbWFwLCAoY2hhciAqKU5VTEwpKSB7CisrCWlmICghc3ZjX2ZyZWVhcmdzKHhwcnQsICh4ZHJwcm9jX3QpIHhkcl92b2lkLCAoY2hhciAqKU5VTEwpKSB7CisgCQlpZiAoZGVidWdnaW5nKSB7CisgCQkJLyoodm9pZCkgeGxvZyhMT0dfREVCVUcsICJ1bmFibGUgdG8gZnJlZSBhcmd1bWVudHNcbiIpOyovCisgCQkJaWYgKGRvYWJvcnQpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2Jwcm9jX2NhbGxpdF9jb20tU3RvcC1mcmVlaW5nLWEtc3RhdGljLXBvaW50ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNicHJvY19jYWxsaXRfY29tLVN0b3AtZnJlZWluZy1hLXN0YXRpYy1wb2ludGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMDAwZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNicHJvY19jYWxsaXRfY29tLVN0b3AtZnJlZWluZy1hLXN0YXRpYy1wb2ludGVyLnBhdGNoCkBAIC0wLDAgKzEsMTAwIEBACitGcm9tIDdjNzU5MGFkNTM2YzBlMjRiZWY3OTBjYjFlNjU3MDJmYzU0ZGI1NjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMzAgTWF5IDIwMTcgMTE6Mjc6MjIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gcnBjYnByb2NfY2FsbGl0X2NvbTogU3RvcCBmcmVlaW5nIGEgc3RhdGljIHBvaW50ZXIKKworY29tbWl0IDdlYTM2ZWUgaW50cm9kdWNlZCBhIHN2Y19mcmVlYXJncygpIGNhbGwKK3RoYXQgZW5kZWQgdXAgZnJlZWluZyBzdGF0aWMgcG9pbnRlci4KKworSXQgdHVybnMgb3V0IHRoZSBhbGxvY2F0aW9ucyBmb3IgdGhlIHJtdF9hcmdzCitpcyBub3QgbmVjZXNzYXJ5IC4gVGhlIHhkciByb3V0aW5lcyAoeGRyX2J5dGVzKSB3aWxsCitoYW5kbGUgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB0aGUgbGFyZ2VzdAorcG9zc2libGUgbWVzc2FnZSBzaXplIGlzIFVEUE1TR1NJWkUgKGR1ZSB0byBVRFAgb25seSkKK3doaWNoIGlzIHNtYWxsZXIgdGhhbiBSUENfQlVGX01BWAorCitTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3JwY2Jfc3ZjX2NvbS5jIHwgMzkgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcnBjYl9zdmNfY29tLmMgYi9zcmMvcnBjYl9zdmNfY29tLmMKK2luZGV4IGNiNjNhZmQuLjFmYzIyMjkgMTAwNjQ0CistLS0gYS9zcmMvcnBjYl9zdmNfY29tLmMKKysrKyBiL3NyYy9ycGNiX3N2Y19jb20uYworQEAgLTYxMiw5ICs2MTIsOSBAQCBycGNicHJvY19jYWxsaXRfY29tKHN0cnVjdCBzdmNfcmVxICpycXN0cCwgU1ZDWFBSVCAqdHJhbnNwLAorIAlzdHJ1Y3QgbmV0Y29uZmlnICpuY29uZjsKKyAJc3RydWN0IG5ldGJ1ZiAqY2FsbGVyOworIAlzdHJ1Y3Qgcl9ybXRjYWxsX2FyZ3MgYTsKKy0JY2hhciAqYnVmX2FsbG9jID0gTlVMTCwgKm91dGJ1ZnA7CisrCWNoYXIgKm91dGJ1ZnA7CisgCWNoYXIgKm91dGJ1Zl9hbGxvYyA9IE5VTEw7CistCWNoYXIgYnVmW1JQQ19CVUZfTUFYXSwgb3V0YnVmW1JQQ19CVUZfTUFYXTsKKysJY2hhciAgb3V0YnVmW1JQQ19CVUZfTUFYXTsKKyAJc3RydWN0IG5ldGJ1ZiAqbmEgPSAoc3RydWN0IG5ldGJ1ZiAqKSBOVUxMOworIAlzdHJ1Y3QgcnBjX21zZyBjYWxsX21zZzsKKyAJaW50IG91dGxlbjsKK0BAIC02MzUsMzYgKzYzNSwxMCBAQCBycGNicHJvY19jYWxsaXRfY29tKHN0cnVjdCBzdmNfcmVxICpycXN0cCwgU1ZDWFBSVCAqdHJhbnNwLAorIAl9CisgCWlmIChzaS5zaV9zb2NrdHlwZSAhPSBTT0NLX0RHUkFNKQorIAkJcmV0dXJuOwkvKiBPbmx5IGRhdGFncmFtIHR5cGUgYWNjZXB0ZWQgKi8KKy0Jc2VuZHN6ID0gX19ycGNfZ2V0X3Rfc2l6ZShzaS5zaV9hZiwgc2kuc2lfcHJvdG8sIFVEUE1TR1NJWkUpOworLQlpZiAoc2VuZHN6ID09IDApIHsJLyogZGF0YSB0cmFuc2ZlciBub3Qgc3VwcG9ydGVkICovCistCQlpZiAocmVwbHlfdHlwZSA9PSBSUENCUFJPQ19JTkRJUkVDVCkKKy0JCQlzdmNlcnJfc3lzdGVtZXJyKHRyYW5zcCk7CistCQlyZXR1cm47CistCX0KKy0JLyoKKy0JICogU2hvdWxkIGJlIG11bHRpcGxlIG9mIDQgZm9yIFhEUi4KKy0JICovCistCXNlbmRzeiA9ICgoc2VuZHN6ICsgMykgLyA0KSAqIDQ7CistCWlmIChzZW5kc3ogPiBSUENfQlVGX01BWCkgeworLSNpZmRlZglub3R5ZXQKKy0JCWJ1Zl9hbGxvYyA9IGFsbG9jYShzZW5kc3opOwkJLyogbm90IGluIElEUjI/ICovCistI2Vsc2UKKy0JCWJ1Zl9hbGxvYyA9IG1hbGxvYyhzZW5kc3opOworLSNlbmRpZgkvKiBub3R5ZXQgKi8KKy0JCWlmIChidWZfYWxsb2MgPT0gTlVMTCkgeworLQkJCWlmIChkZWJ1Z2dpbmcpCistCQkJCXhsb2coTE9HX0RFQlVHLAorLQkJCQkJInJwY2Jwcm9jX2NhbGxpdF9jb206ICBObyBNZW1vcnkhXG4iKTsKKy0JCQlpZiAocmVwbHlfdHlwZSA9PSBSUENCUFJPQ19JTkRJUkVDVCkKKy0JCQkJc3ZjZXJyX3N5c3RlbWVycih0cmFuc3ApOworLQkJCXJldHVybjsKKy0JCX0KKy0JCWEucm10X2FyZ3MuYXJncyA9IGJ1Zl9hbGxvYzsKKy0JfSBlbHNlIHsKKy0JCWEucm10X2FyZ3MuYXJncyA9IGJ1ZjsKKy0JfQorKwlzZW5kc3ogPSBVRFBNU0dTSVpFOworIAorIAljYWxsX21zZy5ybV94aWQgPSAwOwkvKiBGb3IgZXJyb3IgY2hlY2tpbmcgcHVycG9zZXMgKi8KKysJbWVtc2V0KCZhLCAwLCBzaXplb2YoYSkpOyAvKiBaZXJvIG91dCB0aGUgaW5wdXQgYnVmZmVyICovCisgCWlmICghc3ZjX2dldGFyZ3ModHJhbnNwLCAoeGRycHJvY190KSB4ZHJfcm10Y2FsbF9hcmdzLCAoY2hhciAqKSAmYSkpIHsKKyAJCWlmIChyZXBseV90eXBlID09IFJQQ0JQUk9DX0lORElSRUNUKQorIAkJCXN2Y2Vycl9kZWNvZGUodHJhbnNwKTsKK0BAIC03MDQsNyArNjc4LDggQEAgcnBjYnByb2NfY2FsbGl0X2NvbShzdHJ1Y3Qgc3ZjX3JlcSAqcnFzdHAsIFNWQ1hQUlQgKnRyYW5zcCwKKyAJaWYgKHJibCA9PSAocnBjYmxpc3RfcHRyKU5VTEwpIHsKKyAjaWZkZWYgUlBDQklORF9ERUJVRworIAkJaWYgKGRlYnVnZ2luZykKKy0JCQl4bG9nKExPR19ERUJVRywgIm5vdCBmb3VuZFxuIik7CisrCQkJeGxvZyhMT0dfREVCVUcsICJwcm9nICVsdSB2ZXJzICVsdTogbm90IGZvdW5kXG4iLCAKKysJCQkJYS5ybXRfcHJvZywgYS5ybXRfdmVycyk7CisgI2VuZGlmCisgCQlpZiAocmVwbHlfdHlwZSA9PSBSUENCUFJPQ19JTkRJUkVDVCkKKyAJCQlzdmNlcnJfbm9wcm9nKHRyYW5zcCk7CitAQCAtOTM3LDggKzkxMiw2IEBAIG91dDoKKyAJfQorIAlpZiAobG9jYWxfdWFkZHIpCisgCQlmcmVlKGxvY2FsX3VhZGRyKTsKKy0JaWYgKGJ1Zl9hbGxvYykKKy0JCWZyZWUoYnVmX2FsbG9jKTsKKyAJaWYgKG91dGJ1Zl9hbGxvYykKKyAJCWZyZWUob3V0YnVmX2FsbG9jKTsKKyAJaWYgKG5hKSB7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzAuMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKaW5kZXggNjBlNDZlZC4uZGNkZWU2YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKQEAgLTE2LDYgKzE2LDggQEAKICAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc29ja2V0IFwKICAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJwY2JpbmQtcGFpci1hbGwtc3ZjX2dldGFyZ3MtY2FsbHMtd2l0aC1zdmNfZnJlZWFyZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcG1hcHByb2NfZHVtcC1GaXhlZC10eXBvLWluLW1lbW9yeS1sZWFrLXBhdGNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JwY2Jwcm9jX2NhbGxpdF9jb20tU3RvcC1mcmVlaW5nLWEtc3RhdGljLXBvaW50ZXIucGF0Y2ggXAogICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICJjZjEwY2Q0MWVkODIyOGZjNTRjMzE2MTkxYzFmMDdmZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzRhOWE1MzBkYzdjMTFlMGQ5MDVhYTU5YmNiMDg0N2MwMDkzMTNmMDJlOThkM2Q3OThhYTk1NjhmNDE0YzY2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWZhaWxlZC13aGlsZS1idWlsZC1kaXItaGEucGF0Y2gKaW5kZXggZThkYjEyYy4uMTI3NGIyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1mYWlsZWQtd2hpbGUtYnVpbGQtZGlyLWhhLnBhdGNoCkBAIC05LDcgKzksOCBAQAogV2UgcmFyZWx5IHVzZSAieWVzOyIgdG8gbmFtZSBidWlsZCBkaXIsIHNvIHMveWVzL3llczsvZwogY291bGQgZml4IHRoZSBpc3N1ZQogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKK2h0dHBzOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9zY3JlZW4uZ2l0L2NvbW1pdC8/aD1zY3JlZW4tdjQmaWQ9OGMyYjQwNjFkMTY3NTZlZTJlZDM3ZjA4ZGIwNjNiODIxNTY1Njk0MwogCiBTaWduZWQtb2ZmLWJ5OiBKaWFuIEthbmcgPGppYW4ua2FuZ0B3aW5kcml2ZXIuY29tPgogLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaAppbmRleCBiNWQ3MWNjLi5hMDFkYzI0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2gKQEAgLTE1LDE5ICsxNSwxNiBAQAogIHNyYy9NYWtlZmlsZS5pbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5pbiBiL3NyYy9NYWtlZmlsZS5pbgotaW5kZXggZTc5MWU3OS4uZDRmN2MwYiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTExMyw3ICsxMTMsNyBAQCB0ZXJtLmg6IHRlcm0uYyB0ZXJtLnNoCi0gCi0ga21hcGRlZi5jOiB0ZXJtLmgKK0luZGV4OiBzY3JlZW4tNC42LjEvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzY3JlZW4tNC42LjEub3JpZy9NYWtlZmlsZS5pbgorKysrIHNjcmVlbi00LjYuMS9NYWtlZmlsZS5pbgorQEAgLTEzMyw3ICsxMzMsNyBAQCBrbWFwZGVmLmM6IHRlcm0uaAorIHR0eS5jOgl0dHkuc2ggCisgCXNoICQoc3JjZGlyKS90dHkuc2ggdHR5LmMKICAKIC1jb21tLmg6IGNvbW0uYyBjb21tLnNoIGNvbmZpZy5oCiArY29tbS5oOiBjb21tLmMgY29tbS5zaCBjb25maWcuaCB0ZXJtLmgKICAJQVdLPSQoQVdLKSBDQz0iJChDQykgJChDRkxBR1MpIiBzcmNkaXI9JHtzcmNkaXJ9IHNoICQoc3JjZGlyKS9jb21tLnNoCiAgCi0gZG9jczoKLS0tIAotMi40LjEKLQorIG9zZGVmLmg6IG9zZGVmLnNoIGNvbmZpZy5oIG9zZGVmLmguaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNkODNhMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC42LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpcGxleGluZyB0ZXJtaW5hbCBtYW5hZ2VyIgotREVTQ1JJUFRJT04gPSAiU2NyZWVuIGlzIGEgZnVsbC1zY3JlZW4gd2luZG93IG1hbmFnZXIgXAotdGhhdCBtdWx0aXBsZXhlcyBhIHBoeXNpY2FsIHRlcm1pbmFsIGJldHdlZW4gc2V2ZXJhbCBcCi1wcm9jZXNzZXMsIHR5cGljYWxseSBpbnRlcmFjdGl2ZSBzaGVsbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9mdW5jPWFkZGl0ZW0mZ3JvdXA9c2NyZWVuIgotCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2NyZWVuLmg7ZW5kbGluZT0yNjttZDU9Mzk3MTE0Mjk4OTI4OWE4MTk4YTU0NDIyMDcwM2MyYmYiCi0KLURFUEVORFMgPSAibmN1cnNlcyBcCi0gICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ID0gImJhc2UtZmlsZXMiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9zY3JlZW4vc2NyZWVuLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2ZpbGU6Ly9zY3JlZW4ucGFtJywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtcmVkdW5kYW50LWNvbXBpbGVyLXNhbml0eS1jaGVja3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vUHJvdmlkZS1jcm9zcy1jb21waWxlLWFsdGVybmF0aXZlcy1mb3ItQUNfVFJZX1JVTi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9Ta2lwLWhvc3QtZmlsZS1zeXN0ZW0tY2hlY2tzLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0F2b2lkLW1pcy1pZGVudGlmeWluZy1zeXN0ZW1zLWFzLVNWUjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWZvci1tdWx0aWpvYi1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWZhaWxlZC13aGlsZS1idWlsZC1kaXItaGEucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEzMmM4OTNhYWJmYWYyMDIwMDc0NzkwMjE1YzhjYWNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiYTlhZjY2Y2I2MjYxNTVkNmFiY2U0NzAzZjQ1Y2NlMGUzMGE1MTE0YTM2OGJkNjM4N2M5NjZjYmJiYjdjNjQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbdXRlbXB0ZXJdID0gImFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPXllcyxhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD1ubyxsaWJ1dGVtcHRlciwiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtcHR5LW1vZGU9MDYyMCAtLXdpdGgtcHR5LWdyb3VwPTUgXAotICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtJywgJy0tZGlzYWJsZS1wYW0nLCBkKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zY3JlZW4ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zY3JlZW4KLQlmaQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCWdyZXAgLXEgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmluZGlyfS9zY3JlZW4gPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQotCi1wa2dfcG9zdHJtXyR7UE59ICgpIHsKLQlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTMzYzMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNi4yLmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiTXVsdGlwbGV4aW5nIHRlcm1pbmFsIG1hbmFnZXIiCitERVNDUklQVElPTiA9ICJTY3JlZW4gaXMgYSBmdWxsLXNjcmVlbiB3aW5kb3cgbWFuYWdlciBcCit0aGF0IG11bHRpcGxleGVzIGEgcGh5c2ljYWwgdGVybWluYWwgYmV0d2VlbiBzZXZlcmFsIFwKK3Byb2Nlc3NlcywgdHlwaWNhbGx5IGludGVyYWN0aXZlIHNoZWxscy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2NyZWVuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2Z1bmM9YWRkaXRlbSZncm91cD1zY3JlZW4iCisKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zY3JlZW4uaDtlbmRsaW5lPTI2O21kNT0zOTcxMTQyOTg5Mjg5YTgxOThhNTQ0MjIwNzAzYzJiZiIKKworREVQRU5EUyA9ICJuY3Vyc2VzIFwKKyAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gPSAiYmFzZS1maWxlcyIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NjcmVlbi9zY3JlZW4tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnZmlsZTovL3NjcmVlbi5wYW0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovL1JlbW92ZS1yZWR1bmRhbnQtY29tcGlsZXItc2FuaXR5LWNoZWNrcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9Qcm92aWRlLWNyb3NzLWNvbXBpbGUtYWx0ZXJuYXRpdmVzLWZvci1BQ19UUllfUlVOLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1NraXAtaG9zdC1maWxlLXN5c3RlbS1jaGVja3Mtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQXZvaWQtbWlzLWlkZW50aWZ5aW5nLXN5c3RlbXMtYXMtU1ZSNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTBmNTI5ZDMzMzNiMTI4ZGZhYTMyNGQ5NzhiYTczYTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWI2OTIyNTIwZTZhMGNlNWUyODc2OGQ2MjBiMGY2NDBhNjYzMTM5N2Y5NWNjYjA0M2I3MGI5MWJiNTAzZmEzYSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1t1dGVtcHRlcl0gPSAiYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9eWVzLGFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPW5vLGxpYnV0ZW1wdGVyLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1wdHktbW9kZT0wNjIwIC0td2l0aC1wdHktZ3JvdXA9NSBcCisgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3NjcmVlbi5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3NjcmVlbgorCWZpCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisJZ3JlcCAtcSAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gJHtiaW5kaXJ9L3NjcmVlbiA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCit9CisKK3BrZ19wb3N0cm1fJHtQTn0gKCkgeworCXByaW50ZiAiJChncmVwIC12ICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMpXG4iID4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiCmluZGV4IGUzMWJlYzIuLmYxMGUzNjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIKQEAgLTQyLDYgKzQyLDEyIEBACiAKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQorCXNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCiB9CiAKIFJQUk9WSURFU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICcvYmluL3NlZCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LmluYwppbmRleCBjYzE4OTY0Li42NzMyMDdmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKQEAgLTYsOCArNiw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lZDgwZmYxYzJiNDA4NDNjZjU3NjhlNTIyOWNmMTZlNSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcGFzc3dkLmM7YmVnaW5saW5lPTg7ZW5kbGluZT0zMDttZDU9ZDgzODg4ZWExNGFlNjE5NTE5ODJkNzcxMjU5NDc2NjEiCiAKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKLURFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIiIKK0RFUEVORFMgPSAidmlydHVhbC9jcnlwdCIKIAogU1JDX1VSSSA9ICJodHRwOi8vcGtnLXNoYWRvdy5hbGlvdGguZGViaWFuLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovL3NoYWRvdy00LjEuMy1kb3RzLWluLXVzZXJuYW1lcy5wYXRjaCBcCkBAIC0xOTAsNyArMTg5LDcgQEAKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtub2xvZ2luLjhdID0gIiR7bWFuZGlyfS9tYW44L25vbG9naW4uOCIKIAogUEFDS0FHRV9XUklURV9ERVBTICs9ICJzaGFkb3ctbmF0aXZlIgotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKK3BrZ19wb3N0aW5zdF8ke1BOfV9jbGFzcy10YXJnZXQgKCkgewogCWlmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KIAkgIHJvb3Rhcmc9Ii0tcm9vdCAkRCIKIAllbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nXzIuMy4xYS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjFhLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTg1YzE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjFhLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgc2hhcmVkIGxpYnJhcnkgZm9yIHRoZSBTLUxhbmcgZXh0ZW5zaW9uIGxhbmd1YWdlIgotCi1ERVNDUklQVElPTiA9ICJTLUxhbmcgaXMgYW4gaW50ZXJwcmV0ZWQgbGFuZ3VhZ2UgYW5kIGEgcHJvZ3JhbW1pbmcgbGlicmFyeS4gIFRoZSBcCi1TLUxhbmcgbGFuZ3VhZ2Ugd2FzIGRlc2lnbmVkIHNvIHRoYXQgaXQgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbnRvIFwKLWEgcHJvZ3JhbSB0byBwcm92aWRlIHRoZSBwcm9ncmFtIHdpdGggYSBwb3dlcmZ1bCBleHRlbnNpb24gbGFuZ3VhZ2UuIFwKLVRoZSBTLUxhbmcgbGlicmFyeSwgcHJvdmlkZWQgaW4gdGhpcyBwYWNrYWdlLCBwcm92aWRlcyB0aGUgUy1MYW5nIFwKLWV4dGVuc2lvbiBsYW5ndWFnZS4gIFMtTGFuZydzIHN5bnRheCByZXNlbWJsZXMgQywgd2hpY2ggbWFrZXMgaXQgZWFzeSBcCi10byByZWNvZGUgUy1MYW5nIHByb2NlZHVyZXMgaW4gQyBpZiB5b3UgbmVlZCB0by4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvc2xhbmcvIgotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJuY3Vyc2VzIHZpcnR1YWwvbGliaWNvbnYiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNTJhMThhNDcyZDRmN2U0NTQ3OWIwNjU2MzcxN2MwMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL25vLXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9udC1saW5rLXRvLWhvc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1hZGQtb3V0cHV0LWluLXRoZS1mb3JtYXQtcmVzdWx0LXRlc3RuYW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Rlcm1pbmZvX2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzUyMzUzMTMwNDJlZDBlNzFlYzcwOGY3Yjg1ZWMyNDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTRmMGMzMDA3ZmRlOTE4MDM5YzA1ODk2NWRmZmRmZDZjNWFlYzBiYWQwZjQyMjcxOTJjYzQ4NjAyMWYwOGMzNiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvIgotUFJFTUlSUk9SU19hcHBlbmQgPSAiXG4gaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy9zbGFuZy8uKiBodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzL3NsYW5nL29sZC8gXG4iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAotQ0xFQU5CUk9LRU4gPSAiMSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1vbmlnIgotIyBUaGVyZSdzIG5vIHdheSB0byB0dXJuIG9mZiBycGF0aHMgYW5kIHNsYW5nIHdpbGwgLXJwYXRoIHRvIHRoZSBkZWZhdWx0IHNlYXJjaAotIyBwYXRoLiBVbnNldCBSUEFUSCB0byBzdG9wIHRoaXMuCi1FWFRSQV9PRU1BS0UgPSAiUlBBVEg9JyciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJwY3JlIgotUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1wY3JlLHBjcmUiCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLXBuZz0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtej0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC16LHpsaWIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGNkICR7U30vYXV0b2NvbmYKLSAgICAjIHNsYW5nIGtlZXBzIGNvbmZpZ3VyZS5hYyBhbmQgcmVzdCBvZiBhdXRvY29uZiBmaWxlcyBpbiBhdXRvY29uZi8gZGlyZWN0b3J5Ci0gICAgIyB3ZSBoYXZlIHRvIGdvIHRoZXJlIHRvIGJlIGFibGUgdG8gcnVuIGdudS1jb25maWdpemUgY2F1c2UgaXQgZXhwZWN0cyBjb25maWd1cmUue2luLGFjfQotICAgICMgdG8gYmUgcHJlc2VudC4gUmVzdWx0aW5nIGZpbGVzIGxhbmQgaW4gYXV0b2NvbmYvYXV0b2NvbmYvIHNvIHdlIG5lZWQgdG8gbW92ZSB0aGVtLgotICAgIGdudS1jb25maWdpemUgLS1mb3JjZSAmJiBtdiBhdXRvY29uZi9jb25maWcuKiAuCi0gICAgIyBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGFsc28gbmVlZCB0byBydW4gYXV0b2NvbmYgbWFudWFsbHkuCi0gICAgYXV0b2NvbmYgJiYgbXYgY29uZmlndXJlIC4uCi0gICAgY2QgJHtCfQotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgc3JjIHN0YXRpYwotCW9lX3J1bm1ha2UgLUMgc3JjL3Rlc3Qgc2x0ZXN0Ci19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCWZvciBmIGluIE1ha2VmaWxlIHNsdGVzdCBydW50ZXN0cy5zaCAqLnNsICouaW5jOyBkbwotCQljcCAke1N9L3NyYy90ZXN0LyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCi0JZG9uZQotCXNlZCAtZSAncy9cIFwkKFRFU1RfUEdNKVwuY1wgYXNzb2NcLmNcIGxpc3RcLmNcIFwkKFNMQU5HTElCKVwvbGlic2xhbmdcLmEvLycgXAotCSAgICAtZSAnL1wkKENDKS4qKFRFU1RfUEdNKS9kJyBcCi0JICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZWZpbGUKLQotCWNwICR7U30vc2xzaC9saWIvcmVxdWlyZS5zbCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LwotCXNlZCAtaSAncy9cLlwuXC9cLlwuXC9zbHNoXC9saWJcL3JlcXVpcmVcLnNsL3JlcXVpcmVcLnNsLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9yZXEuc2wKLQotCWNwICR7U30vZG9jL3RleHQvc2xhbmdmdW4udHh0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCi0Jc2VkIC1pICdzL1wuXC5cL1wuXC5cL2RvY1wvdGV4dFwvc2xhbmdmdW5cLnR4dC9zbGFuZ2Z1blwudHh0LycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9kb2NmdW4uc2wKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vdjIvbW9kdWxlcy8gJHtkYXRhZGlyfS9zbHNoLyIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi1QQVJBTExFTF9NQUtFSU5TVCA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdmZDQxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjIuYmIKQEAgLTAsMCArMSw4MSBAQAorU1VNTUFSWSA9ICJUaGUgc2hhcmVkIGxpYnJhcnkgZm9yIHRoZSBTLUxhbmcgZXh0ZW5zaW9uIGxhbmd1YWdlIgorCitERVNDUklQVElPTiA9ICJTLUxhbmcgaXMgYW4gaW50ZXJwcmV0ZWQgbGFuZ3VhZ2UgYW5kIGEgcHJvZ3JhbW1pbmcgbGlicmFyeS4gIFRoZSBcCitTLUxhbmcgbGFuZ3VhZ2Ugd2FzIGRlc2lnbmVkIHNvIHRoYXQgaXQgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbnRvIFwKK2EgcHJvZ3JhbSB0byBwcm92aWRlIHRoZSBwcm9ncmFtIHdpdGggYSBwb3dlcmZ1bCBleHRlbnNpb24gbGFuZ3VhZ2UuIFwKK1RoZSBTLUxhbmcgbGlicmFyeSwgcHJvdmlkZWQgaW4gdGhpcyBwYWNrYWdlLCBwcm92aWRlcyB0aGUgUy1MYW5nIFwKK2V4dGVuc2lvbiBsYW5ndWFnZS4gIFMtTGFuZydzIHN5bnRheCByZXNlbWJsZXMgQywgd2hpY2ggbWFrZXMgaXQgZWFzeSBcCit0byByZWNvZGUgUy1MYW5nIHByb2NlZHVyZXMgaW4gQyBpZiB5b3UgbmVlZCB0by4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvc2xhbmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJuY3Vyc2VzIHZpcnR1YWwvbGliaWNvbnYiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNTJhMThhNDcyZDRmN2U0NTQ3OWIwNjU2MzcxN2MwMiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL25vLXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9udC1saW5rLXRvLWhvc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGVzdC1hZGQtb3V0cHV0LWluLXRoZS1mb3JtYXQtcmVzdWx0LXRlc3RuYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Rlcm1pbmZvX2ZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzJkNWE3YWEwMjQ2NjI3ZGE0OTBiZTRlMzk5Yzg3Y2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmM5ZTNiMGZjNGY2N2MzYzFmNmQ0M2M5MGMxNmE1YzQyZDExN2I4ZTI4NDU3YzViNDY4MzFiOGI1ZDNhZTMxYSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvIgorUFJFTUlSUk9SU19hcHBlbmQgPSAiXG4gaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy9zbGFuZy8uKiBodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzL3NsYW5nL29sZC8gXG4iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorQ0xFQU5CUk9LRU4gPSAiMSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1vbmlnIgorIyBUaGVyZSdzIG5vIHdheSB0byB0dXJuIG9mZiBycGF0aHMgYW5kIHNsYW5nIHdpbGwgLXJwYXRoIHRvIHRoZSBkZWZhdWx0IHNlYXJjaAorIyBwYXRoLiBVbnNldCBSUEFUSCB0byBzdG9wIHRoaXMuCitFWFRSQV9PRU1BS0UgPSAiUlBBVEg9JyciCisKK1BBQ0tBR0VDT05GSUcgPz89ICJwY3JlIgorUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1wY3JlLHBjcmUiCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLXBuZz0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1wbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtej0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC16LHpsaWIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGNkICR7U30vYXV0b2NvbmYKKyAgICAjIHNsYW5nIGtlZXBzIGNvbmZpZ3VyZS5hYyBhbmQgcmVzdCBvZiBhdXRvY29uZiBmaWxlcyBpbiBhdXRvY29uZi8gZGlyZWN0b3J5CisgICAgIyB3ZSBoYXZlIHRvIGdvIHRoZXJlIHRvIGJlIGFibGUgdG8gcnVuIGdudS1jb25maWdpemUgY2F1c2UgaXQgZXhwZWN0cyBjb25maWd1cmUue2luLGFjfQorICAgICMgdG8gYmUgcHJlc2VudC4gUmVzdWx0aW5nIGZpbGVzIGxhbmQgaW4gYXV0b2NvbmYvYXV0b2NvbmYvIHNvIHdlIG5lZWQgdG8gbW92ZSB0aGVtLgorICAgIGdudS1jb25maWdpemUgLS1mb3JjZSAmJiBtdiBhdXRvY29uZi9jb25maWcuKiAuCisgICAgIyBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGFsc28gbmVlZCB0byBydW4gYXV0b2NvbmYgbWFudWFsbHkuCisgICAgYXV0b2NvbmYgJiYgbXYgY29uZmlndXJlIC4uCisgICAgY2QgJHtCfQorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgc3JjIHN0YXRpYworCW9lX3J1bm1ha2UgLUMgc3JjL3Rlc3Qgc2x0ZXN0Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWZvciBmIGluIE1ha2VmaWxlIHNsdGVzdCBydW50ZXN0cy5zaCAqLnNsICouaW5jOyBkbworCQljcCAke1N9L3NyYy90ZXN0LyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCisJZG9uZQorCXNlZCAtZSAncy9cIFwkKFRFU1RfUEdNKVwuY1wgYXNzb2NcLmNcIGxpc3RcLmNcIFwkKFNMQU5HTElCKVwvbGlic2xhbmdcLmEvLycgXAorCSAgICAtZSAnL1wkKENDKS4qKFRFU1RfUEdNKS9kJyBcCisJICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZWZpbGUKKworCWNwICR7U30vc2xzaC9saWIvcmVxdWlyZS5zbCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LworCXNlZCAtaSAncy9cLlwuXC9cLlwuXC9zbHNoXC9saWJcL3JlcXVpcmVcLnNsL3JlcXVpcmVcLnNsLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9yZXEuc2wKKworCWNwICR7U30vZG9jL3RleHQvc2xhbmdmdW4udHh0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCisJc2VkIC1pICdzL1wuXC5cL1wuXC5cL2RvY1wvdGV4dFwvc2xhbmdmdW5cLnR4dC9zbGFuZ2Z1blwudHh0LycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9kb2NmdW4uc2wKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vdjIvbW9kdWxlcy8gJHtkYXRhZGlyfS9zbHNoLyIKKworUEFSQUxMRUxfTUFLRSA9ICIiCitQQVJBTExFTF9NQUtFSU5TVCA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXQtMy4zL2ZpeC1lcnJvci1yZXR1cm4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LWVycm9yLXJldHVybi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMyOTk1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LWVycm9yLXJldHVybi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVRoaXMgcGF0Y2ggZml4aWVzIHRoZSB3cm9uZyByZXR1cm4gY29kZSBvZiBzdGF0IC1oLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFpoYW5nbGUgWWFuZyA8emhhbmdsZS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBzdGF0LTMuMy9zdGF0LmMub3JpZwkyMDEzLTA4LTIyIDEwOjQ5OjQ1LjAwMDAwMDAwMCArMDgwMAotKysrIHN0YXQtMy4zL3N0YXQuYwkyMDEzLTA4LTIyIDEwOjUwOjMxLjAwMDAwMDAwMCArMDgwMAotQEAgLTg0NSw3ICs4NDUsNyBAQAotICAgICBmcHJpbnRmKHN0ZGVyciwgIlx0XHQlJVMgLSBTZWN1cml0eSBJRCBpbiBTRS1MaW51eFxuIik7Ci0gICAgIGZwcmludGYoc3RkZXJyLCAiXHRcdCUlQyAtIFNlY3VyaXR5IGNvbnRleHQgaW4gU0UtTGludXhcbiIpOwotICAgICBmcHJpbnRmKHN0ZGVyciwgIlx0XHQlJWQgLSBGcmVlIGZpbGUgbm9kZXMgaW4gZmlsZSBzeXN0ZW1cbiIpOwotLSAgICBleGl0KDEpOwotKyAgICBleGl0KDApOwotIH0KLSAgIAotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXQtMy4zL2ZpeC1zZWN1cml0eS1mb3JtYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMwMWVkMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLXN0YXQ6IEZpeGluZyBzZWN1cml0eSBmb3JtYXR0aW5nIGlzc3VlcwotCi1GaXggc2VjdXJpdHkgZm9ybWF0dGluZyBpc3N1ZXMgcmVsYXRlZCB0byBwcmludGYgd2l0aG91dCBOVUxMIGFyZ3VtZW50IAotCi1zdGF0LmM6IEluIGZ1bmN0aW9uICdwcmludF9odW1hbl9hY2Nlc3MnOgotc3RhdC5jOjI5MjoxMzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0gICAgIHByaW50ZiAoYWNjZXNzKTsKLSAgICAgICAgICAgICBeCi1zdGF0LmM6IEluIGZ1bmN0aW9uICdwcmludF9odW1hbl90aW1lJzoKLXN0YXQuYzoyOTk6NTc6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotICAgaWYgKHN0cmZ0aW1lKHN0ciwgNDAsICIlYyIsIGxvY2FsdGltZSh0KSkgPiAwKSBwcmludGYoc3RyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLXN0YXQuYzogSW4gZnVuY3Rpb24gJ3ByaW50X2l0JzoKLXN0YXQuYzo2MTM6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0gICAgICBwcmludGYoYik7Ci0gICAgICBeCi1zdGF0LmM6NjQyOjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotICAgICAgcHJpbnRmKGIpOwotICAgICAgXgotCi1bWU9DVE8gIzk1NTBdCi1baHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05NTUwXQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL3N0YXQuYyBiL3N0YXQuYwotaW5kZXggMWVkMDdhOS4uMmJlNmY2MiAxMDA2NDQKLS0tLSBhL3N0YXQuYwotKysrIGIvc3RhdC5jCi1AQCAtMjg5LDE1ICsyODksMTUgQEAgdm9pZCBwcmludF9odW1hbl9hY2Nlc3Moc3RydWN0IHN0YXQgKnN0YXRidWYpCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgYWNjZXNzWzBdID0gJz8nOwotICAgICB9Ci0tICAgIHByaW50ZiAoYWNjZXNzKTsKLSsgICAgZnB1dHMoYWNjZXNzLHN0ZG91dCk7Ci0gfQotIAotIHZvaWQgcHJpbnRfaHVtYW5fdGltZSh0aW1lX3QgKnQpCi0gewotICAgY2hhciBzdHJbNDBdOwotICAgCi0tICBpZiAoc3RyZnRpbWUoc3RyLCA0MCwgIiVjIiwgbG9jYWx0aW1lKHQpKSA+IDApIHByaW50ZihzdHIpOwotLSAgZWxzZSBwcmludGYoIkNhbm5vdCBjYWxjdWxhdGUgaHVtYW4gcmVhZGFibGUgdGltZSwgc29ycnkiKTsKLSsgIGlmIChzdHJmdGltZShzdHIsIDQwLCAiJWMiLCBsb2NhbHRpbWUodCkpID4gMCkgZnB1dHMoc3RyLHN0ZG91dCk7Ci0rICBlbHNlIGZwdXRzKCJDYW5ub3QgY2FsY3VsYXRlIGh1bWFuIHJlYWRhYmxlIHRpbWUsIHNvcnJ5IixzdGRvdXQpOwotIH0KLSAKLSAvKiBwcmludCBzdGF0ZnMgaW5mbyAqLwotQEAgLTYxMCw3ICs2MTAsNyBAQCB2b2lkIHByaW50X2l0KGNoYXIgKm1hc3RlcmZvcm1hdCwgY2hhciAqZmlsZW5hbWUsCi0gCXsKLSAJICAgIHN0cmNweSAocGZvcm1hdCwgIiUiKTsKLSAJICAgICptKysgPSAnXDAnOwotLQkgICAgcHJpbnRmKGIpOwotKwkgICAgZnB1dHMoYixzdGRvdXQpOwotIAotIAkgICAgLyogY29weSBhbGwgZm9ybWF0IHNwZWNpZmllcnMgdG8gb3VyIGZvcm1hdCBzdHJpbmcgKi8KLSAJICAgIHdoaWxlIChpc2RpZ2l0KCptKSB8fCBzdHJjaHIoIiMwLSsuIEkiLCAqbSkpCi1AQCAtNjM5LDcgKzYzOSw3IEBAIHZvaWQgcHJpbnRfaXQoY2hhciAqbWFzdGVyZm9ybWF0LCBjaGFyICpmaWxlbmFtZSwKLSAJfQotIAllbHNlCi0gCXsKLS0JICAgIHByaW50ZihiKTsKLSsJICAgIGZwdXRzKGIsc3Rkb3V0KTsKLSAJICAgIGIgPSBOVUxMOwotIAl9Ci0gICAgIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0XzMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0XzMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFjOGU4OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdF8zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIkNvbW1hbmQgbGluZSBmaWxlIHN0YXR1cyBkaXNwbGF5IHV0aWxpdHkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC91dGlscy9maWxlLyIKLURFU0NSSVBUSU9OID0gIkRpc3BsYXlzIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGUgdGhhdCB0aGUgc3RhdCgpIGNhbGwgcHJvdmlkZXMgYW5kIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGVzeXN0ZW0gdGhhdCBzdGF0ZnMoKSBwcm92aWRlcy4iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zOTg4NmIwNzdmZDA3MmU4NzZlNWM0YzE2MzEwYjYzMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L3V0aWxzL2ZpbGUvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1zZWN1cml0eS1mb3JtYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWVycm9yLXJldHVybi5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM3ZTI0N2U4ZTQwMGFkOTIwNWYxYjA1MDBiNzI4ZmQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcwNzFmMDM4NGE0MjNhOTM4ZGQ1NDJjMWYwODU0N2EwMjgyNGY2MzU5YWNkM2VmM2Y5NDRiMmM0YzJkMWVlMDkiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9ICR7RH0ke21hbmRpcn0vbWFuMQotCWluc3RhbGwgLW0gNzU1IHN0YXQgJHtEfSR7YmFzZV9iaW5kaXJ9L3N0YXQuc3RhdAotCWluc3RhbGwgLW0gNjQ0IHN0YXQuMSAke0R9JHttYW5kaXJ9L21hbjEKLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gInN0YXQiCi1BTFRFUk5BVElWRV9QUklPUklUWVtzdGF0XSA9ICIyMDAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3RhdCIKLUFMVEVSTkFUSVZFX1RBUkdFVFtzdGF0XSA9ICIke2Jhc2VfYmluZGlyfS9zdGF0LnN0YXQiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJzdGF0LjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdC4xXSA9ICIke21hbmRpcn0vbWFuMS9zdGF0LjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKaW5kZXggODBlYzBhZS4uMzYyYmQzYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYwpAQCAtNCw4ICs0LDggQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5zdWRvLndzL2J1Z3MvIgogU0VDVElPTiA9ICJhZG1pbiIKIExJQ0VOU0UgPSAiSVNDICYgQlNEICYgWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9MSUNFTlNFO21kNT02NTJmYjQzMzRjMTNiNTExNTk3ZDc5NDBlZjhiMzMyMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbHVnaW5zL3N1ZG9lcnMvcmVkYmxhY2suYztiZWdpbmxpbmU9MTtlbmRsaW5lPTQxO21kNT1jZmU0MTExMmY5NmMxOWEwNzQ5MzRkMTI4ZjQ1YzY5MyBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvTElDRU5TRTttZDU9Nzc2NWEzZDc4N2NiNGZlZDNjY2MzYzljZWUwMzBhZjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGx1Z2lucy9zdWRvZXJzL3JlZGJsYWNrLmM7YmVnaW5saW5lPTE7ZW5kbGluZT00MTttZDU9ODA1NzgyYTg0NjY5NzU3MTZmODM3NmIyYmU5YWVkZGUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvcmVhbGxvY2FycmF5LmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNjttZDU9ODViMDkwNWI3OTVkNGQ1OGJmMmUwMDYzNTY0OWVlYzYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZm5tYXRjaC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9Mjc7bWQ1PTY3ZjgzZWU5YmQ0NTY1NTczOTcwODJmOGYxYmUwZWZkIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dldGN3ZC5jO2JlZ2lubGluZT01O2VuZGxpbmU9Mjc7bWQ1PTQ0OWFmNGNjNTdmYzdkNDZmNDIwOTA2MDhiYTNlNjgxIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMHAyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIwcDIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMjRiM2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIwcDIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1yZXF1aXJlIHN1ZG8uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5zdWRvLndzL3N1ZG8vZGlzdC9zdWRvLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDNkYThlNzExY2FjYTZmZDkzZTU3NzUxYmZiNzRhZGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmQ0MmFlMTA1OWU5MzVmNzk1YzY5ZWE5N2IzZGUwOWZlOTQxMGE1OGE3NGI1ZDVlNjgzNmViNTA2N2E0NDVkOSIKLQotREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi1SREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAgICAgICAgICBhY19jdl90eXBlX3JzaXplX3Q9bm8gXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXRtcGZpbGVzLmQ9JHtsaWJkaXJ9L3RtcGZpbGVzLmQnLCAnLS1kaXNhYmxlLXRtcGZpbGVzLmQnLCBkKX0gXAotICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCi0JZmkKLQotCWNobW9kIDQxMTEgJHtEfSR7YmluZGlyfS9zdWRvCi0JY2htb2QgMDQ0MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCi0KLQkjIEV4cGxpY2l0bHkgcmVtb3ZlIHRoZSAke2xvY2Fsc3RhdGVkaXJ9L3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKLQlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3VkbwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8ke0JQTn0vKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1MDE3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMi5iYgpAQCAtMCwwICsxLDM2IEBACityZXF1aXJlIHN1ZG8uaW5jCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5zdWRvLndzL3N1ZG8vZGlzdC9zdWRvLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgICIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjRhYmRlYTQ4ZGI0YzVhYmNkNDEwMTY3YzgwMWNjOGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzI1NmNiMjdjMjA4ODNiMTQzNjBlZGRiZDE3Zjk4OTIyMDczZDEwNGIyMTRjZjY1YWVhY2YxZDljOWI5ZmQwMiIKKworREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAgICAgICAgICBhY19jdl90eXBlX3JzaXplX3Q9bm8gXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXRtcGZpbGVzLmQ9JHtsaWJkaXJ9L3RtcGZpbGVzLmQnLCAnLS1kaXNhYmxlLXRtcGZpbGVzLmQnLCBkKX0gXAorICAgICAgICAgICAgICIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCisJZmkKKworCWNobW9kIDQxMTEgJHtEfSR7YmluZGlyfS9zdWRvCisJY2htb2QgMDQ0MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCisKKwkjIEV4cGxpY2l0bHkgcmVtb3ZlIHRoZSAke2xvY2Fsc3RhdGVkaXJ9L3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKKwlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3VkbworfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8ke0JQTn0vKi5sYSBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXN0cmlwLWluc3RhbGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXN0cmlwLWluc3RhbGwucGF0Y2gKaW5kZXggMDBmYmE3MS4uZDQyNmM4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby1zdHJpcC1pbnN0YWxsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaApAQCAtMSwxMCArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCi1JbmRleDogc3lza2xvZ2QtMS41L01ha2VmaWxlCitJbmRleDogc3lza2xvZ2QtMS41LjEvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXNrbG9nZC0xLjUub3JpZy9NYWtlZmlsZQkyMDA5LTA2LTA5IDEzOjAyOjQxLjAwMDAwMDAwMCArMDIwMAotKysrIHN5c2tsb2dkLTEuNS9NYWtlZmlsZQkyMDA5LTA2LTA5IDEzOjAzOjA2LjAwMDAwMDAwMCArMDIwMAotQEAgLTEyNyw4ICsxMjcsOCBAQAorLS0tIHN5c2tsb2dkLTEuNS4xLm9yaWcvTWFrZWZpbGUKKysrKyBzeXNrbG9nZC0xLjUuMS9NYWtlZmlsZQorQEAgLTEyNyw4ICsxMjcsOCBAQCBjbG9iYmVyOiBjbGVhbgogIAlybSAtZiBzeXNsb2dkIGtsb2dkIGtzeW0gc3lzbG9nX3RzdCBvb3BzX3Rlc3QgVEFHUyB0c3lzbG9nZCB0a2xvZ2QKICAKICBpbnN0YWxsX2V4ZWM6IHN5c2xvZ2Qga2xvZ2QKQEAgLTE0LDQgKzE0LDQgQEAKICsJJHtJTlNUQUxMfSAtbSA1MDAga2xvZ2QgJHtCSU5ESVJ9L2tsb2dkCiAgCiAgaW5zdGFsbF9tYW46Ci0gCSR7SU5TVEFMTH0gLW0gJHtNQU5fUEVSTVN9IHN5c2tsb2dkLjggJHtNQU5ESVJ9L21hbjgvc3lza2xvZ2QuOAorIAkke0lOU1RBTEx9IC1vICR7TUFOX1VTRVJ9IC1nICR7TUFOX0dST1VQfSAtbSAke01BTl9QRVJNU30gc3lza2xvZ2QuOCAke01BTkRJUn0vbWFuOC9zeXNrbG9nZC44CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoCmluZGV4IGMxMjY1MjMuLjFiNjMyOTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoCkBAIC0yMSwxMCArMjEsMTAgQEAKICBzYV9jb21tb24uYyB8IDEgKwogIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCiAKLWRpZmYgLS1naXQgYS9jb21tb24uYyBiL2NvbW1vbi5jCi1pbmRleCBhMjMxNTViLi5hZDg2NDQ2IDEwMDY0NAotLS0tIGEvY29tbW9uLmMKLSsrKyBiL2NvbW1vbi5jCitJbmRleDogc3lzc3RhdC0xMS43LjEvY29tbW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL2NvbW1vbi5jCisrKysgc3lzc3RhdC0xMS43LjEvY29tbW9uLmMKIEBAIC0yMCw2ICsyMCw3IEBACiAgICovCiAgCkBAIC0zMiwxMSArMzIsMTEgQEAKICsjaW5jbHVkZSA8bGltaXRzLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotZGlmZiAtLWdpdCBhL2lvY29uZi5jIGIvaW9jb25mLmMKLWluZGV4IDdkODhjNWQuLjZkNjc2OTEgMTAwNjQ0Ci0tLS0gYS9pb2NvbmYuYwotKysrIGIvaW9jb25mLmMKKyAjaW5jbHVkZSA8c3RkYXJnLmg+CitJbmRleDogc3lzc3RhdC0xMS43LjEvaW9jb25mLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL2lvY29uZi5jCisrKysgc3lzc3RhdC0xMS43LjEvaW9jb25mLmMKIEBAIC0yNyw2ICsyNyw3IEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPGRpcmVudC5oPgpAQCAtNDUsMTAgKzQ1LDEwIEBACiAgCiAgI2luY2x1ZGUgImlvY29uZi5oIgogICNpbmNsdWRlICJjb21tb24uaCIKLWRpZmYgLS1naXQgYS9zYV9jb21tb24uYyBiL3NhX2NvbW1vbi5jCi1pbmRleCBiNzM1MWQ5Li5jOWUzMjk5IDEwMDY0NAotLS0tIGEvc2FfY29tbW9uLmMKLSsrKyBiL3NhX2NvbW1vbi5jCitJbmRleDogc3lzc3RhdC0xMS43LjEvc2FfY29tbW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL3NhX2NvbW1vbi5jCisrKysgc3lzc3RhdC0xMS43LjEvc2FfY29tbW9uLmMKIEBAIC0yMCw2ICsyMCw3IEBACiAgICovCiAgCkBAIC01Niw3ICs1Niw0IEBACiArI2luY2x1ZGUgPGxpbWl0cy5oPgogICNpbmNsdWRlIDxzdHJpbmcuaD4KICAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLS0tIAotMi41LjIKLQorICNpbmNsdWRlIDxzdGRpbnQuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjUuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjUuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJhZjkzMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS41LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgc3lzc3RhdC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjhmNGE1ZDBkZTI5ZjEwNTYxNTNlMjVlN2E5YzUxOGQyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhMzhlZmFhMGNhODVlZTU0ODRkMDQ2YmQ0MjcwMTI5NzkyNjRmZWYxN2YwN2ZkNzg1NTg2MGU1OTI4MTk0ODIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS43LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS43LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY3MzhlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjcuMS5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgc3lzc3RhdC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gImJkY2RhN2M5MDQ4YzdjMjJmYjFmMzBmNzUyODVkMTNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwM2E1OTViMWFmMDMzMGIxODNhMGYxZmViZmNjZjg5ZjE4M2I5NTc1YWUwNTYyYjkxZmRiODc2ZjNlZjFmZWIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIvQ1ZFLTIwMTYtNjMyMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9DVkUtMjAxNi02MzIxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDM1YmNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9DVkUtMjAxNi02MzIxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotRnJvbSA3MzQwZjY3Yjk4NjBlYTA1MzFjMTQ1MGU1YWEyNjFjNTBmNjcxNjVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBQZW5ndWluLkNTLlVDTEEuRURVPgotRGF0ZTogU2F0LCAyOSBPY3QgMjAxNiAyMTowNDo0MCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBXaGVuIGV4dHJhY3RpbmcsIHNraXAgIi4uIiBtZW1iZXJzCi0KLSogTkVXUzogRG9jdW1lbnQgdGhpcy4KLSogc3JjL2V4dHJhY3QuYyAoZXh0cmFjdF9hcmNoaXZlKTogU2tpcCBtZW1iZXJzIHdob3NlIG5hbWVzCi1jb250YWluICIuLiIuCi0KLUNWRTogQ1ZFLTIwMTYtNjMyMQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DaGVycnkgcGlja2VkIGZyb20gY29tbWl0OiA3MzQwZjY3IFdoZW4gZXh0cmFjdGluZywgc2tpcCAiLi4iIG1lbWJlcnMKLQotU2lnbmVkLW9mZi1ieTogU29uYSBTYXJtYWRpIDxzb25hLnNhcm1hZGlAZW5lYS5jb20+Ci0tLS0KLSBORVdTICAgICAgICAgIHwgOCArKysrKysrLQotIHNyYy9leHRyYWN0LmMgfCA4ICsrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwotaW5kZXggNTAxMTY0YS4uZmM5N2NmYyAxMDA2NDQKLS0tLSBhL05FV1MKLSsrKyBiL05FV1MKLUBAIC0xLDYgKzEsMTIgQEAKLS1HTlUgdGFyIE5FV1MgLSBVc2VyIHZpc2libGUgY2hhbmdlcy4gMjAxNi0wNS0xNgotK0dOVSB0YXIgTkVXUyAtIFVzZXIgdmlzaWJsZSBjaGFuZ2VzLiAyMDE2LTEwLTI5Ci0gUGxlYXNlIHNlbmQgR05VIHRhciBidWcgcmVwb3J0cyB0byA8YnVnLXRhckBnbnUub3JnPgotIAotKyogTWVtYmVyIG5hbWVzIGNvbnRhaW5pbmcgJy4uJyBjb21wb25lbnRzIGFyZSBub3cgc2tpcHBlZCB3aGVuIGV4dHJhY3RpbmcuCi0rCi0rVGhpcyBmaXhlcyB0YXIncyBiZWhhdmlvciB0byBtYXRjaCBpdHMgZG9jdW1lbnRhdGlvbiwgYW5kIGlzIGEgYml0Ci0rc2FmZXIgd2hlbiBleHRyYWN0aW5nIHVudHJ1c3RlZCBhcmNoaXZlcyBvdmVyIG9sZCBmaWxlcyAoYW4gdW5zYWZlCi0rcHJhY3RpY2UgdGhhdCB0aGUgdGFyIG1hbnVhbCBoYXMgbG9uZyByZWNvbW1lbmRlZCBhZ2FpbnN0KS4KLSsKLSAMCi0gdmVyc2lvbiAxLjI5IC0gU2VyZ2V5IFBvem55YWtvZmYsIDIwMTYtMDUtMTYKLSAKLWRpZmYgLS1naXQgYS9zcmMvZXh0cmFjdC5jIGIvc3JjL2V4dHJhY3QuYwotaW5kZXggZjk4MjQzMy4uNzkwNDE0OCAxMDA2NDQKLS0tLSBhL3NyYy9leHRyYWN0LmMKLSsrKyBiL3NyYy9leHRyYWN0LmMKLUBAIC0xNjI5LDEyICsxNjI5LDIwIEBAIGV4dHJhY3RfYXJjaGl2ZSAodm9pZCkKLSB7Ci0gICBjaGFyIHR5cGVmbGFnOwotICAgdGFyX2V4dHJhY3Rvcl90IGZ1bjsKLSsgIGJvb2wgc2tpcF9kb3Rkb3RfbmFtZTsKLSAKLSAgIGZhdGFsX2V4aXRfaG9vayA9IGV4dHJhY3RfZmluaXNoOwotIAotICAgc2V0X25leHRfYmxvY2tfYWZ0ZXIgKGN1cnJlbnRfaGVhZGVyKTsKLSAKLSsgIHNraXBfZG90ZG90X25hbWUgPSAoIWFic29sdXRlX25hbWVzX29wdGlvbgotKwkJICAgICAgJiYgY29udGFpbnNfZG90X2RvdCAoY3VycmVudF9zdGF0X2luZm8ub3JpZ19maWxlX25hbWUpKTsKLSsgIGlmIChza2lwX2RvdGRvdF9uYW1lKQotKyAgICBFUlJPUiAoKDAsIDAsIF8oIiVzOiBNZW1iZXIgbmFtZSBjb250YWlucyAnLi4nIiksCi0rCSAgICBxdW90ZWFyZ19jb2xvbiAoY3VycmVudF9zdGF0X2luZm8ub3JpZ19maWxlX25hbWUpKSk7Ci0rCi0gICBpZiAoIWN1cnJlbnRfc3RhdF9pbmZvLmZpbGVfbmFtZVswXQotKyAgICAgIHx8IHNraXBfZG90ZG90X25hbWUKLSAgICAgICB8fCAoaW50ZXJhY3RpdmVfb3B0aW9uCi0gCSAgJiYgIWNvbmZpcm0gKCJleHRyYWN0IiwgY3VycmVudF9zdGF0X2luZm8uZmlsZV9uYW1lKSkpCi0gICAgIHsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyL211c2xfZGlyZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyL211c2xfZGlyZW50LnBhdGNoCmluZGV4IGIwZGMxNmMuLjJkOThlZDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9tdXNsX2RpcmVudC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIvbXVzbF9kaXJlbnQucGF0Y2gKQEAgLTE0LDYgKzE0LDYgQEAKIC0gICAgICAgICAgICAgIGxpbnV4Ki1nbnUqKSBnbF9jdl9zdHJ1Y3RfZGlyZW50X2RfaW5vPSJndWVzc2luZyB5ZXMiIDs7CiArICAgICAgICAgICAgICBsaW51eCotZ251KnxsaW51eCotbXVzbCopCiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfY3Zfc3RydWN0X2RpcmVudF9kX2lubz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR3Vlc3Mgbm8gb24gbmF0aXZlIFdpbmRvd3MuCisgICAgICAgICAgICAgICBtaW5ndyopICAgICAgZ2xfY3Zfc3RydWN0X2RpcmVudF9kX2lubz0iZ3Vlc3Npbmcgbm8iIDs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBkb24ndCBrbm93LCBhc3N1bWUgdGhlIHdvcnN0LgotICAgICAgICAgICAgICAgKikgICAgICAgICAgIGdsX2N2X3N0cnVjdF9kaXJlbnRfZF9pbm89Imd1ZXNzaW5nIG5vIiA7OwotICAgICAgICAgICAgIGVzYWMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjI5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMmQ5YzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIHRhci5pbmMKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtcG9zaXgtYWNscywgLS13aXRob3V0LXBvc2l4LWFjbHMsIGFjbCwiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSArPSAiZmlsZTovL3JlbW92ZS1nZXRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tdXNsX2RpcmVudC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNjMyMS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NTVjZDUzMzk1NWFjYjE4MDRiODNmZDcwMjE4ZGE1MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzZiMTExOTBjMGEzYTY4ODViZGI4ZDYxNDI0ZjJiMzZhNTg3Mjg2OWFhM2Y3ZjY5NWRlYTRiNDg0M2FlMmYyIgotCi1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi0Jcm1kaXIgJHtEfSR7bGliZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4zMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzQzYTZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzAuYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSB0YXIuaW5jCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLXBvc2l4LWFjbHMsIC0td2l0aG91dC1wb3NpeC1hY2xzLCBhY2wsIgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9yZW1vdmUtZ2V0cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbXVzbF9kaXJlbnQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODQwNGU0YzFmYzVhMzAwMDIyOGFiMmI4YWQ2NzRhNjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODc1OTJiODZjYjAzN2M1NTQzNzVmNTg2OGJkZDNjYzU3NzQ4YWVmMzhkNmNiNzQxYzgxMDY1ZjBiZWFjNjNiNyIKKworZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsKCkgeworCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcworCXJtZGlyICR7RH0ke2xpYmRpcn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDFlMDVkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0Zyb20gN2Y4ODc4YWMxYWFmNGExOTk5MmQzOTM3OTc5N2MxNTEzMDFiZWRiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9sZWtzaXkgT2JpdG90c2t5eSA8b29iaXRvdHNAY2lzY28uY29tPgorRGF0ZTogTW9uLCA1IEZlYiAyMDE4IDA4OjI5OjEwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIGNsYW5nCisKK0ZpeCAiZXJyb3I6IG5vbi12b2lkIGZ1bmN0aW9uICdmaXhfb3B0aW9ucycgc2hvdWxkIHJldHVybiBhIHZhbHVlIi4KK0FkZCBmdW5jdGlvbiBwcm90b3R5cGUgdG8gdGNwZC5jIGFuZCBtaXNjZC5jLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogT2xla3NpeSBPYml0b3Rza3l5IDxvb2JpdG90c0BjaXNjby5jb20+CistLS0KKyB2MiAtIGFkZCBmdW5jdGlvbiBwcm90b3R5cGVzCisKKyBmaXhfb3B0aW9ucy5jIHwgMiArLQorIG1pc2NkLmMgICAgICAgfCA0ICsrKysKKyB0Y3BkLmMgICAgICAgIHwgNCArKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2ZpeF9vcHRpb25zLmMgYi9maXhfb3B0aW9ucy5jCitpbmRleCBiNWU4MWI4Li45OTU4ZmY0IDEwMDY0NAorLS0tIGEvZml4X29wdGlvbnMuYworKysrIGIvZml4X29wdGlvbnMuYworQEAgLTI5LDcgKzI5LDcgQEAgc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKSBmaXhfb3B0aW9ucy5jIDEuNiA5Ny8wNC8wOCAwMjoyOToxOSI7CisgCisgLyogZml4X29wdGlvbnMgLSBnZXQgcmlkIG9mIElQLWxldmVsIHNvY2tldCBvcHRpb25zICovCisgCistZml4X29wdGlvbnMocmVxdWVzdCkKKyt2b2lkIGZpeF9vcHRpb25zKHJlcXVlc3QpCisgc3RydWN0IHJlcXVlc3RfaW5mbyAqcmVxdWVzdDsKKyB7CisgI2lmZGVmIElQX09QVElPTlMKK2RpZmYgLS1naXQgYS9taXNjZC5jIGIvbWlzY2QuYworaW5kZXggMWFiODM1Yy4uNzIzYjgzYSAxMDA2NDQKKy0tLSBhL21pc2NkLmMKKysrKyBiL21pc2NkLmMKK0BAIC00MCw2ICs0MCwxMCBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpIG1pc2NkLmMgMS4xMCA5Ni8wMi8xMSAxNzowMTozMCI7CisgI2luY2x1ZGUgInBhdGNobGV2ZWwuaCIKKyAjaW5jbHVkZSAidGNwZC5oIgorIAorKyNpZmRlZiBLSUxMX0lQX09QVElPTlMKKyt2b2lkIGZpeF9vcHRpb25zKHN0cnVjdCByZXF1ZXN0X2luZm8gKik7CisrI2VuZGlmCisrCisgaW50ICAgICBhbGxvd19zZXZlcml0eSA9IFNFVkVSSVRZOwkvKiBydW4tdGltZSBhZGp1c3RhYmxlICovCisgaW50ICAgICBkZW55X3NldmVyaXR5ID0gTE9HX1dBUk5JTkc7CS8qIGRpdHRvICovCisgCitkaWZmIC0tZ2l0IGEvdGNwZC5jIGIvdGNwZC5jCitpbmRleCBkODY1YjljLi5hMTc5ODkxIDEwMDY0NAorLS0tIGEvdGNwZC5jCisrKysgYi90Y3BkLmMKK0BAIC0zOCw2ICszOCwxMCBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpIHRjcGQuYyAxLjEwIDk2LzAyLzExIDE3OjAxOjMyIjsKKyAjaW5jbHVkZSAicGF0Y2hsZXZlbC5oIgorICNpbmNsdWRlICJ0Y3BkLmgiCisgCisrI2lmZGVmIEtJTExfSVBfT1BUSU9OUworK3ZvaWQgZml4X29wdGlvbnMoc3RydWN0IHJlcXVlc3RfaW5mbyAqKTsKKysjZW5kaWYKKysKKyBpbnQgICAgIGFsbG93X3NldmVyaXR5ID0gU0VWRVJJVFk7CS8qIHJ1bi10aW1lIGFkanVzdGFibGUgKi8KKyBpbnQgICAgIGRlbnlfc2V2ZXJpdHkgPSBMT0dfV0FSTklORzsJLyogZGl0dG8gKi8KKyAKKy0tIAorMi4xMC4zLmRpcnR5CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMTJfbWFrZWZpbGVfY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMl9tYWtlZmlsZV9jb25maWcucGF0Y2gKaW5kZXggZTgyODllNC4uZDQ3M2ZiNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMl9tYWtlZmlsZV9jb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMl9tYWtlZmlsZV9jb25maWcucGF0Y2gKQEAgLTEsOSArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAogCi1kaWZmIC1ydU4gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL01ha2VmaWxlIHRjcF93cmFwcGVyc183LjYvTWFrZWZpbGUKLS0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvTWFrZWZpbGUJMjAwMy0wOC0yMSAwMTo0MzozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyB0Y3Bfd3JhcHBlcnNfNy42L01ha2VmaWxlCTIwMDMtMDgtMjEgMDE6NDM6MzUuMDAwMDAwMDAwICswMjAwCi1AQCAtNDUsNyArNDUsNyBAQAorSW5kZXg6IHRjcF93cmFwcGVyc183LjYvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvTWFrZWZpbGUKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L01ha2VmaWxlCitAQCAtNDUsNyArNDUsNyBAQCB3aGF0OgogICMKICAjIFN5c1YuNCBTb2xhcmlzIDIueCBPU0YgQUlYCiAgI1JFQUxfREFFTU9OX0RJUj0vdXNyL3NiaW4KQEAgLTEyLDcgKzEzLDcgQEAKICAjIEJTRCA0LjQKICAjUkVBTF9EQUVNT05fRElSPS91c3IvbGliZXhlYwogICMKLUBAIC01MTIsNiArNTE5LDcgQEAKK0BAIC01MTMsNiArNTEzLDcgQEAgVlNZU0xPRwk9IC1EdnN5c2xvZz1teXZzeXNsb2cKICAjIChleGFtcGxlczogYWxsb3csIGRlbnksIGJhbm5lcnMsIHR3aXN0IGFuZCBzcGF3bikuCiAgIyAKICAjU1RZTEUJPSAtRFBST0NFU1NfT1BUSU9OUwkjIEVuYWJsZSBsYW5ndWFnZSBleHRlbnNpb25zLgpAQCAtMjAsNyArMjEsNyBAQAogIAogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIE9wdGlvbmFsOiBDaGFuZ2luZyB0aGUgZGVmYXVsdCBkaXNwb3NpdGlvbiBvZiBsb2dmaWxlIHJlY29yZHMKLUBAIC01MzUsNiArNTQzLDcgQEAKK0BAIC01MzYsNiArNTM3LDcgQEAgVlNZU0xPRwk9IC1EdnN5c2xvZz1teXZzeXNsb2cKICAjIFRoZSBMT0dfWFhYIG5hbWVzIGJlbG93IGFyZSB0YWtlbiBmcm9tIHRoZSAvdXNyL2luY2x1ZGUvc3lzbG9nLmggZmlsZS4KICAKICBGQUNJTElUWT0gTE9HX01BSUwJIyBMT0dfTUFJTCBpcyB3aGF0IG1vc3Qgc2VuZG1haWwgZGFlbW9ucyB1c2UKQEAgLTI4LDcgKzI5LDcgQEAKICAKICAjIFRoZSBzeXNsb2cgcHJpb3JpdHkgYXQgd2hpY2ggc3VjY2Vzc2Z1bCBjb25uZWN0aW9ucyBhcmUgbG9nZ2VkLgogIAotQEAgLTYzMSw2ICs2NDAsNyBAQAorQEAgLTYzMiw2ICs2MzQsNyBAQCBUQUJMRVMJPSAtREhPU1RTX0RFTlk9XCIvZXRjL2hvc3RzLmRlbnlcCiAgIyBsb29rdXBzIGFsdG9nZXRoZXIsIHNlZSB0aGUgbmV4dCBzZWN0aW9uLgogIAogIFBBUkFOT0lEPSAtRFBBUkFOT0lECkBAIC0zNiw3ICszNyw3IEBACiAgCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMgT3B0aW9uYWw6IHR1cm5pbmcgb2ZmIGhvc3RuYW1lIGxvb2t1cHMKLUBAIC02NDQsNiArNjU0LDcgQEAKK0BAIC02NDUsNiArNjQ4LDcgQEAgUEFSQU5PSUQ9IC1EUEFSQU5PSUQKICAjIG1vZGUgKHNlZSBwcmV2aW91cyBzZWN0aW9uKSBhbmQgY29tbWVudCBvdXQgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9uLgogIAogIEhPU1ROQU1FPSAtREFMV0FZU19IT1NUTkFNRQpAQCAtNDQsNyArNDUsNyBAQAogIAogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMgT3B0aW9uYWw6IFR1cm5pbmcgb24gaG9zdCBBRERSRVNTIGNoZWNraW5nCi1AQCAtNjcwLDYgKzY4MSw3IEBACitAQCAtNjcxLDYgKzY3NSw3IEBAIEhPU1ROQU1FPSAtREFMV0FZU19IT1NUTkFNRQogICMgU29sYXJpcyAyLngsIGFuZCBMaW51eC4gU2VlIHlvdXIgc3lzdGVtIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCiAgIwogICMgS0lMTF9PUFQ9IC1ES0lMTF9JUF9PUFRJT05TCkBAIC01Miw3ICs1Myw3IEBACiAgCiAgIyMgRW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucwogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLUBAIC02NzcsOSArNjg5LDEwIEBACitAQCAtNjc4LDkgKzY4MywxMCBAQCBIT1NUTkFNRT0gLURBTFdBWVNfSE9TVE5BTUUKICAjIFByb3RlY3Rpb24gYWdhaW5zdCB3ZWlyZCBzaGVsbHMgb3Igd2VpcmQgbWFrZSBwcm9ncmFtcy4KICAKICBTSEVMTAk9IC9iaW4vc2gKQEAgLTY1LDcgKzY2LDcgQEAKICAJJChCVUdTKSAkKFNZU1RZUEUpICQoQVVUSCkgJChVTUFTSykgXAogIAktRFJFQUxfREFFTU9OX0RJUj1cIiQoUkVBTF9EQUVNT05fRElSKVwiICQoU1RZTEUpICQoS0lMTF9PUFQpIFwKICAJLURTRVZFUklUWT0kKFNFVkVSSVRZKSAtRFJGQzkzMV9USU1FT1VUPSQoUkZDOTMxX1RJTUVPVVQpIFwKLUBAIC03MTIsMTAgKzcyNSwxMSBAQAorQEAgLTcxMywxMSArNzE5LDEyIEBAIGFsbCBvdGhlcjogY29uZmlnLWNoZWNrIHRjcGQgdGNwZG1hdGNoIHQKICAKICBjb25maWctY2hlY2s6CiAgCUBzZXQgK2U7IHRlc3QgLW4gIiQoUkVBTF9EQUVNT05fRElSKSIgfHwgeyBtYWtlOyBleGl0IDE7IH0KQEAgLTgxLDMgKzgyLDQgQEAKICsJQGlmIFsgISAtZCBzaGFyZWQgXTsgdGhlbiBta2RpciBzaGFyZWQ7IGZpCiAgCiAgJChMSUIpOgkkKExJQl9PQkopCisgCXJtIC1mICQoTElCKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKaW5kZXggMWVmZmVmMS4uM2VjZThjMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiCkBAIC00NSw2ICs0NSw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9zYWZlX2Zpbmdlci44IFwKICAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWZpeC1wYXJhbGxlbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9tdXNsLWRlY2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlNmZhMjVmNzEyMjZkMDkwZjM0ZGUzZjZiMTIyZmI1YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU4ZGY5Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi1TVU1NQVJZID0gIkRvY3VtZW50YXRpb24gc3lzdGVtIGZvciBvbi1saW5lIGluZm9ybWF0aW9uIGFuZCBwcmludGVkIG91dHB1dCIKLURFU0NSSVBUSU9OID0gIlRleGluZm8gaXMgYSBkb2N1bWVudGF0aW9uIHN5c3RlbSB0aGF0IGNhbiBwcm9kdWNlIGJvdGggXAotb25saW5lIGluZm9ybWF0aW9uIGFuZCBwcmludGVkIG91dHB1dCBmcm9tIGEgc2luZ2xlIHNvdXJjZSBmaWxlLiBUaGUgXAotR05VIFByb2plY3QgdXNlcyB0aGUgVGV4aW5mbyBmaWxlIGZvcm1hdCBmb3IgbW9zdCBvZiBpdHMgZG9jdW1lbnRhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGV4aW5mby8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1QUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiB0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZSIKLQotZGVmIGNvbXByZXNzX3BrZyhkKToKLSAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjb21wcmVzc19kb2MnLCBkKToKLSAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCi0gICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgotICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKLSAgICAgICAgICAgICByZXR1cm4gInh6IgotICAgIHJldHVybiAiIgotCi1SREVQRU5EU19pbmZvICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgotCi1ERVBFTkRTID0gInpsaWIgbmN1cnNlcyB0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIG5jdXJzZXMtbmF0aXZlIgotCi1UQVJHRVRfUEFUQ0ggPSAiZmlsZTovL3VzZV9ob3N0X21ha2Vkb2MucGF0Y2giCi1UQVJHRVRfUEFUQ0hfY2xhc3MtbmF0aXZlID0gIiIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3RleGluZm8vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RleGluZm8tNC4xMi16bGliLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtbmF0aXZlLXRvb2xzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpbmstemlwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICAke1RBUkdFVF9QQVRDSH0gXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjliMDhkYWNhOWJmOGVjY2FlOWIwZjg4NGFiYTQxZjllIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwMGE2YmE0OTU4YzJkZDRhNmQ1Y2U2MGYwYTMzNWRhZjdlMzc5ZjUzNzRmMjc2ZjZiYTMxYTIyMWYwMmY2MDYiCi0KLXRleF90ZXhpbmZvID0gInRleG1mL3RleC90ZXhpbmZvIgotCi1pbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIGF1dG90b29sc19kb19jb25maWd1cmUgdXBkYXRlcyBwby9NYWtlZmlsZS5pbi5pbiwgd2UgYWxzbyBuZWVkCi0JIyB1cGRhdGUgcG9fZG9jdW1lbnQuCi0JY3AgLWYgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG9fZG9jdW1lbnQvCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlpZiBbIC1kIHRvb2xzIF07dGhlbgotCQlvZV9ydW5tYWtlIC1DIHRvb2xzL2dudWxpYi9saWIKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlta2RpciAtcCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQotCWluc3RhbGwgLXAgLW02NDQgJHtTfS9kb2MvdGV4aW5mby50ZXggJHtTfS9kb2MvdHhpLT8/LnRleCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQotCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vdGV4aTJhbnkgJHtEfSR7YmluZGlyfS9wb2QydGV4aQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JaW5zdGFsbCAtbSA3NTUgaW5mby9tYWtlZG9jICR7RH0ke2JpbmRpcn0KLX0KLQotUEFDS0FHRVMgKz0gImluZm8gaW5mby1kb2MiCi0KLUZJTEVTX2luZm8gPSAiJHtiaW5kaXJ9L2luZm8gJHtiaW5kaXJ9L2luZm9rZXkgJHtiaW5kaXJ9L2luc3RhbGwtaW5mbyIKLUZJTEVTX2luZm8tZG9jID0gIiR7aW5mb2Rpcn0vaW5mby5pbmZvKiAke2luZm9kaXJ9L2RpciAke2luZm9kaXJ9L2luZm8tKi5pbmZvKiBcCi0gICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZvLjEqICR7bWFuZGlyfS9tYW41L2luZm8uNSogXAotICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvaW5mb2tleS4xKiAke21hbmRpcn0vbWFuMS9pbnN0YWxsLWluZm8uMSoiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9tYWtlaW5mbyAke2JpbmRpcn0vdGV4aSogJHtiaW5kaXJ9L3BkZnRleGkyZHZpICR7YmluZGlyfS9wb2QydGV4aSAke2RhdGFkaXJ9L3RleGluZm8iCi1SREVQRU5EU18ke1BOfSA9ICJwZXJsIgotRklMRVNfJHtQTn0tZG9jID0gIiR7aW5mb2Rpcn0vdGV4aW5mbyogXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30gXAotICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xICR7bWFuZGlyfS9tYW41IgotCi0jIExpZSBhYm91dCBwcm92aWRpbmcgdGhlIExvY2FsZTo6Z2V0dGV4dF94cyBtb2R1bGUuIEl0IGlzIG5vdCBhY3R1YWxseSBidWlsdCwKLSMgYnV0IHRoZSBjb2RlIHdpbGwgdGVzdCBmb3IgaXQgYW5kIGlmIG5vdCBmb3VuZCB1c2UgTG9jYWxlOjpnZXR0ZXh0X3BwIGluc3RlYWQuCi0jIEhvd2V2ZXIsIHRoaXMgY2F1c2VzIGEgZmlsZSBkZXBlbmRlbmN5IG9uIHBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSB0byBiZQotIyBnZW5lcmF0ZWQsIHdoaWNoIG11c3QgYmUgc2F0aXNmaWVkLgotUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsKExvY2FsZTo6Z2V0dGV4dF94cykiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTY2NDU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiCkBAIC0wLDAgKzEsOTAgQEAKK1NVTU1BUlkgPSAiRG9jdW1lbnRhdGlvbiBzeXN0ZW0gZm9yIG9uLWxpbmUgaW5mb3JtYXRpb24gYW5kIHByaW50ZWQgb3V0cHV0IgorREVTQ1JJUFRJT04gPSAiVGV4aW5mbyBpcyBhIGRvY3VtZW50YXRpb24gc3lzdGVtIHRoYXQgY2FuIHByb2R1Y2UgYm90aCBcCitvbmxpbmUgaW5mb3JtYXRpb24gYW5kIHByaW50ZWQgb3V0cHV0IGZyb20gYSBzaW5nbGUgc291cmNlIGZpbGUuIFRoZSBcCitHTlUgUHJvamVjdCB1c2VzIHRoZSBUZXhpbmZvIGZpbGUgZm9ybWF0IGZvciBtb3N0IG9mIGl0cyBkb2N1bWVudGF0aW9uLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90ZXhpbmZvLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHRleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlIgorCitkZWYgY29tcHJlc3NfcGtnKGQpOgorICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2NvbXByZXNzX2RvYycsIGQpOgorICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKKyAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6CisgICAgICAgICAgICAgcmV0dXJuICJnemlwIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKKyAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgorICAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgcmV0dXJuICIiCisKK1JERVBFTkRTX2luZm8gKz0gIiR7QGNvbXByZXNzX3BrZyhkKX0iCisKK0RFUEVORFMgPSAiemxpYiBuY3Vyc2VzIHRleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUgbmN1cnNlcy1uYXRpdmUiCisKK1RBUkdFVF9QQVRDSCA9ICJmaWxlOi8vdXNlX2hvc3RfbWFrZWRvYy5wYXRjaCIKK1RBUkdFVF9QQVRDSF9jbGFzcy1uYXRpdmUgPSAiIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGV4aW5mby8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdGV4aW5mby00LjEyLXpsaWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1uYXRpdmUtdG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGluay16aXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgICR7VEFSR0VUX1BBVENIfSBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTRlOGY3MTQ5ODc2NzkzMDMwZTU1MThkZDhkNmU5NTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDM0MjcyZTQwNDJjNDYxODZkZGNkNjZiZDVkOTgwYzBjYTE0ZmY3MzQ0NDQ2ODZjY2Y4MTMxZjZlYzhiMTQyNyIKKwordGV4X3RleGluZm8gPSAidGV4bWYvdGV4L3RleGluZm8iCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS9nbnVsaWIvbTQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIGF1dG90b29sc19kb19jb25maWd1cmUgdXBkYXRlcyBwby9NYWtlZmlsZS5pbi5pbiwgd2UgYWxzbyBuZWVkCisJIyB1cGRhdGUgcG9fZG9jdW1lbnQuCisJY3AgLWYgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG9fZG9jdW1lbnQvCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwlpZiBbIC1kIHRvb2xzIF07dGhlbgorCQlvZV9ydW5tYWtlIC1DIHRvb2xzL2dudWxpYi9saWIKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlta2RpciAtcCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQorCWluc3RhbGwgLXAgLW02NDQgJHtTfS9kb2MvdGV4aW5mby50ZXggJHtTfS9kb2MvdHhpLT8/LnRleCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQorCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vdGV4aTJhbnkgJHtEfSR7YmluZGlyfS9wb2QydGV4aQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJaW5zdGFsbCAtbSA3NTUgaW5mby9tYWtlZG9jICR7RH0ke2JpbmRpcn0KK30KKworUEFDS0FHRVMgKz0gImluZm8gaW5mby1kb2MiCisKK0ZJTEVTX2luZm8gPSAiJHtiaW5kaXJ9L2luZm8gJHtiaW5kaXJ9L2luZm9rZXkgJHtiaW5kaXJ9L2luc3RhbGwtaW5mbyIKK0ZJTEVTX2luZm8tZG9jID0gIiR7aW5mb2Rpcn0vaW5mby5pbmZvKiAke2luZm9kaXJ9L2RpciAke2luZm9kaXJ9L2luZm8tKi5pbmZvKiBcCisgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZvLjEqICR7bWFuZGlyfS9tYW41L2luZm8uNSogXAorICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvaW5mb2tleS4xKiAke21hbmRpcn0vbWFuMS9pbnN0YWxsLWluZm8uMSoiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9tYWtlaW5mbyAke2JpbmRpcn0vdGV4aSogJHtiaW5kaXJ9L3BkZnRleGkyZHZpICR7YmluZGlyfS9wb2QydGV4aSAke2RhdGFkaXJ9L3RleGluZm8iCitSREVQRU5EU18ke1BOfSA9ICJwZXJsIgorRklMRVNfJHtQTn0tZG9jID0gIiR7aW5mb2Rpcn0vdGV4aW5mbyogXAorICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30gXAorICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xICR7bWFuZGlyfS9tYW41IgorCisjIExpZSBhYm91dCBwcm92aWRpbmcgdGhlIExvY2FsZTo6Z2V0dGV4dF94cyBtb2R1bGUuIEl0IGlzIG5vdCBhY3R1YWxseSBidWlsdCwKKyMgYnV0IHRoZSBjb2RlIHdpbGwgdGVzdCBmb3IgaXQgYW5kIGlmIG5vdCBmb3VuZCB1c2UgTG9jYWxlOjpnZXR0ZXh0X3BwIGluc3RlYWQuCisjIEhvd2V2ZXIsIHRoaXMgY2F1c2VzIGEgZmlsZSBkZXBlbmRlbmN5IG9uIHBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSB0byBiZQorIyBnZW5lcmF0ZWQsIHdoaWNoIG11c3QgYmUgc2F0aXNmaWVkLgorUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsKExvY2FsZTo6Z2V0dGV4dF94cykiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLTEuNy9kZWJpYW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZS0xLjcvZGViaWFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2VhMGUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLTEuNy9kZWJpYW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotLS0tIHRpbWUtMS43Lm9yaWcvY29uZmlndXJlLmluCi0rKysgdGltZS0xLjcvY29uZmlndXJlLmluCi1AQCAtMSwxMSArMSw4IEBACi0gZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCi0gQUNfSU5JVCh0aW1lLmMpCi0tVkVSU0lPTj0xLjcKLS1BQ19TVUJTVChWRVJTSU9OKQotLVBBQ0tBR0U9dGltZQotLUFDX1NVQlNUKFBBQ0tBR0UpCi0rQU1fSU5JVF9BVVRPTUFLRSh0aW1lLCAxLjcpCi0gCi0tQUNfQVJHX1BST0dSQU0KLStBTV9NQUlOVEFJTkVSX01PREUKLSAKLSBkbmwgQ2hlY2tzIGZvciBwcm9ncmFtcy4KLSBBQ19QUk9HX0NDCi1AQCAtMTUsNyArMTIsNyBAQAotIGRubCBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KLSBBQ19IRUFERVJfU1REQwotIEFDX0hFQURFUl9TWVNfV0FJVAotLUFDX0NIRUNLX0hFQURFUlModW5pc3RkLmggc3RyaW5nLmggc3lzL3J1c2FnZS5oKQotK0FDX0NIRUNLX0hFQURFUlModW5pc3RkLmggc3RyaW5nLmggc3lzL3J1c2FnZS5oIHN5cy9yZXNvdXJjZS5oKQotIAotIGRubCBDaGVja3MgZm9yIHR5cGVkZWZzLCBzdHJ1Y3R1cmVzLCBhbmQgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzLgotIEFDX0NfQ09OU1QKLS0tLSB0aW1lLTEuNy5vcmlnL3ZlcnNpb24udGV4aQotKysrIHRpbWUtMS43L3ZlcnNpb24udGV4aQotQEAgLTEsMyArMSwzIEBACi0tQHNldCBVUERBVEVEIDEyIEp1bmUgMTk5NgotK0BzZXQgVVBEQVRFRCA5IE1heSAyMDAyCi0gQHNldCBFRElUSU9OIDEuNwotIEBzZXQgVkVSU0lPTiAxLjcKLS0tLSB0aW1lLTEuNy5vcmlnL3RpbWUuYwotKysrIHRpbWUtMS43L3RpbWUuYwotQEAgLTE0Nyw2ICsxNDcsMTAgQEAKLSAgIE5VTEwKLSB9OwotIAwKLSsKLSsvKiBJZiB0cnVlLCBkbyBub3Qgc2hvdyB0aGUgZXhpdCBtZXNzYWdlICovCi0rc3RhdGljIGJvb2xlYW4gcXVpZXQ7Ci0rCi0gLyogSWYgdHJ1ZSwgc2hvdyBhbiBFbmdsaXNoIGRlc2NyaXB0aW9uIG5leHQgdG8gZWFjaCBzdGF0aXN0aWMuICAqLwotIHN0YXRpYyBib29sZWFuIHZlcmJvc2U7Ci0gCi1AQCAtMTcyLDYgKzE3Niw3IEBACi0gICB7ImhlbHAiLCBub19hcmd1bWVudCwgTlVMTCwgJ2gnfSwKLSAgIHsib3V0cHV0LWZpbGUiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ28nfSwKLSAgIHsicG9ydGFiaWxpdHkiLCBub19hcmd1bWVudCwgTlVMTCwgJ3AnfSwKLSsgIHsicXVpZXQiLCBub19hcmd1bWVudCxOVUxMLCAncSd9LAotICAgeyJ2ZXJib3NlIiwgbm9fYXJndW1lbnQsIE5VTEwsICd2J30sCi0gICB7InZlcnNpb24iLCBub19hcmd1bWVudCwgTlVMTCwgJ1YnfSwKLSAgIHtOVUxMLCBub19hcmd1bWVudCwgTlVMTCwgMH0KLUBAIC0zMzMsNyArMzM4LDggQEAKLSAgIGVsc2UgaWYgKFdJRlNJR05BTEVEIChyZXNwLT53YWl0c3RhdHVzKSkKLSAgICAgZnByaW50ZiAoZnAsICJDb21tYW5kIHRlcm1pbmF0ZWQgYnkgc2lnbmFsICVkXG4iLAotIAkgICAgIFdURVJNU0lHIChyZXNwLT53YWl0c3RhdHVzKSk7Ci0tICBlbHNlIGlmIChXSUZFWElURUQgKHJlc3AtPndhaXRzdGF0dXMpICYmIFdFWElUU1RBVFVTIChyZXNwLT53YWl0c3RhdHVzKSkKLSsgIGVsc2UgaWYgKFdJRkVYSVRFRCAocmVzcC0+d2FpdHN0YXR1cykgJiYgV0VYSVRTVEFUVVMgKHJlc3AtPndhaXRzdGF0dXMpCi0rCSAgICYmICFxdWlldCkKLSAgICAgZnByaW50ZiAoZnAsICJDb21tYW5kIGV4aXRlZCB3aXRoIG5vbi16ZXJvIHN0YXR1cyAlZFxuIiwKLSAJICAgICBXRVhJVFNUQVRVUyAocmVzcC0+d2FpdHN0YXR1cykpOwotIAotQEAgLTUyMyw2ICs1MjksNyBAQAotICAgY2hhciAqZm9ybWF0OwkJCS8qIEZvcm1hdCBmb3VuZCBpbiBlbnZpcm9ubWVudC4gICovCi0gCi0gICAvKiBJbml0aWFsaXplIHRoZSBvcHRpb24gZmxhZ3MuICAqLwotKyAgcXVpZXQgPSBmYWxzZTsKLSAgIHZlcmJvc2UgPSBmYWxzZTsKLSAgIG91dGZpbGUgPSBOVUxMOwotICAgb3V0ZnAgPSBzdGRlcnI7Ci1AQCAtNTM2LDcgKzU0Myw3IEBACi0gICBpZiAoZm9ybWF0KQotICAgICBvdXRwdXRfZm9ybWF0ID0gZm9ybWF0OwotIAotLSAgd2hpbGUgKChvcHRjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICIrYWY6bzpwdlYiLCBsb25nb3B0cywgKGludCAqKSAwKSkKLSsgIHdoaWxlICgob3B0YyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiK2FmOm86cHF2ViIsIGxvbmdvcHRzLCAoaW50ICopIDApKQotIAkgIT0gRU9GKQotICAgICB7Ci0gICAgICAgc3dpdGNoIChvcHRjKQotQEAgLTU1NSw2ICs1NjIsOSBAQAotIAljYXNlICdwJzoKLSAJICBvdXRwdXRfZm9ybWF0ID0gcG9zaXhfZm9ybWF0OwotIAkgIGJyZWFrOwotKwljYXNlICdxJzoKLSsJICBxdWlldCA9IHRydWU7Ci0rCSAgYnJlYWs7Ci0gCWNhc2UgJ3YnOgotIAkgIHZlcmJvc2UgPSB0cnVlOwotIAkgIGJyZWFrOwotQEAgLTY0Miw5ICs2NTIsOSBAQAotICAgZmZsdXNoIChvdXRmcCk7Ci0gCi0gICBpZiAoV0lGU1RPUFBFRCAocmVzLndhaXRzdGF0dXMpKQotLSAgICBleGl0IChXU1RPUFNJRyAocmVzLndhaXRzdGF0dXMpKTsKLSsgICAgZXhpdCAoV1NUT1BTSUcgKHJlcy53YWl0c3RhdHVzKSArIDEyOCk7Ci0gICBlbHNlIGlmIChXSUZTSUdOQUxFRCAocmVzLndhaXRzdGF0dXMpKQotLSAgICBleGl0IChXVEVSTVNJRyAocmVzLndhaXRzdGF0dXMpKTsKLSsgICAgZXhpdCAoV1RFUk1TSUcgKHJlcy53YWl0c3RhdHVzKSArIDEyOCk7Ci0gICBlbHNlIGlmIChXSUZFWElURUQgKHJlcy53YWl0c3RhdHVzKSkKLSAgICAgZXhpdCAoV0VYSVRTVEFUVVMgKHJlcy53YWl0c3RhdHVzKSk7Ci0gfQotQEAgLTY1Nyw3ICs2NjcsNyBAQAotICAgZnByaW50ZiAoc3RyZWFtLCAiXAotIFVzYWdlOiAlcyBbLWFwdlZdIFstZiBmb3JtYXRdIFstbyBmaWxlXSBbLS1hcHBlbmRdIFstLXZlcmJvc2VdXG5cCi0gICAgICAgIFstLXBvcnRhYmlsaXR5XSBbLS1mb3JtYXQ9Zm9ybWF0XSBbLS1vdXRwdXQ9ZmlsZV0gWy0tdmVyc2lvbl1cblwKLS0gICAgICAgWy0taGVscF0gY29tbWFuZCBbYXJnLi4uXVxuIiwKLSsgICAgICAgWy0tcXVpZXRdIFstLWhlbHBdIGNvbW1hbmQgW2FyZy4uLl1cbiIsCi0gCSAgIHByb2dyYW1fbmFtZSk7Ci0gICBleGl0IChzdGF0dXMpOwotIH0KLS0tLSB0aW1lLTEuNy5vcmlnL3Jlc3VzZS5oCi0rKysgdGltZS0xLjcvcmVzdXNlLmgKLUBAIC0zNiwxOSArMzYsOCBAQAotICMgaW5jbHVkZSA8c3lzL3J1c2FnZS5oPgotICNlbHNlCi0gIyBkZWZpbmUgVFZfTVNFQyB0dl91c2VjIC8gMTAwMAotLSMgaWYgSEFWRV9XQUlUMwotKyMgaWYgSEFWRV9TWVNfUkVTT1VSQ0VfSAotICMgIGluY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotLSMgZWxzZQotLS8qIFByb2Nlc3MgcmVzb3VyY2UgdXNhZ2Ugc3RydWN0dXJlLiAgKi8KLS1zdHJ1Y3QgcnVzYWdlCi0tewotLSAgc3RydWN0IHRpbWV2YWwgcnVfdXRpbWU7CS8qIFVzZXIgdGltZSB1c2VkLiAgKi8KLS0gIHN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwkvKiBTeXN0ZW0gdGltZSB1c2VkLiAgKi8KLS0gIGludCBydV9tYXhyc3MsIHJ1X2l4cnNzLCBydV9pZHJzcywgcnVfaXNyc3MsCi0tICBydV9taW5mbHQsIHJ1X21hamZsdCwgcnVfbnN3YXAsIHJ1X2luYmxvY2ssIAotLSAgcnVfb3VibG9jaywgcnVfbXNnc25kLCBydV9tc2dyY3YsIHJ1X25zaWduYWxzLAotLSAgcnVfbnZjc3csIHJ1X25pdmNzdzsKLS19OwotICMgZW5kaWYKLSAjZW5kaWYKLSAKLS0tLSB0aW1lLTEuNy5vcmlnL3RpbWUudGV4aQotKysrIHRpbWUtMS43L3RpbWUudGV4aQotQEAgLTExLDYgKzExLDEyIEBACi0gQGZpbmFsb3V0Ci0gQGVuZCBpZnRleAotIAotK0BkaXJjYXRlZ29yeSBJbmRpdmlkdWFsIHV0aWxpdGllcwotK0BkaXJlbnRyeQotKyogdGltZTogKHRpbWUpLiAgICAgICAgICAgICAgICAgICAgIFJ1biBwcm9ncmFtcyBhbmQgc3VtbWFyaXplCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHJlc291cmNlIHVzYWdlLgotK0BlbmQgZGlyZW50cnkKLSsKLSBAaWZpbmZvCi0gVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgdGhlIEdOVSBAY29kZXt0aW1lfSBjb21tYW5kIGZvciBydW5uaW5nIHByb2dyYW1zCi0gYW5kIHN1bW1hcml6aW5nIHRoZSBzeXN0ZW0gcmVzb3VyY2VzIHRoZXkgdXNlLgotQEAgLTE4NSw2ICsxOTEsMTAgQEAKLSBzeXMgJVMKLSBAZW5kIGV4YW1wbGUKLSAKLStAaXRlbSAtcQotK0BpdGVteCAtLXF1aWV0Ci0rU3VwcHJlc3Mgbm9uLXplcm8gZXJyb3IgY29kZSBmcm9tIHRoZSBleGVjdXRlZCBwcm9ncmFtLgotKwotIEBpdGVtIC12Ci0gQGl0ZW14IC0tdmVyYm9zZQotIEBjaW5kZXggZm9ybWF0Ci0tLS0gdGltZS0xLjcub3JpZy90aW1lLmluZm8KLSsrKyB0aW1lLTEuNy90aW1lLmluZm8KLUBAIC0xLDUgKzEsMTAgQEAKLS1UaGlzIGlzIEluZm8gZmlsZSAuL3RpbWUuaW5mbywgcHJvZHVjZWQgYnkgTWFrZWluZm8tMS41NSBmcm9tIHRoZSBpbnB1dAotLWZpbGUgdGltZS50ZXhpLgotK1RoaXMgaXMgdGltZS5pbmZvLCBwcm9kdWNlZCBieSBtYWtlaW5mbyB2ZXJzaW9uIDQuMSBmcm9tIHRpbWUudGV4aS4KLSsKLStJTkZPLURJUi1TRUNUSU9OIEluZGl2aWR1YWwgdXRpbGl0aWVzCi0rU1RBUlQtSU5GTy1ESVItRU5UUlkKLSsqIHRpbWU6ICh0aW1lKS4gICAgICAgICAgICAgICAgICAgICBSdW4gcHJvZ3JhbXMgYW5kIHN1bW1hcml6ZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSByZXNvdXJjZSB1c2FnZS4KLStFTkQtSU5GTy1ESVItRU5UUlkKLSAKLSAgICBUaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSB0aGUgR05VIGB0aW1lJyBjb21tYW5kIGZvciBydW5uaW5nIHByb2dyYW1zCi0gYW5kIHN1bW1hcml6aW5nIHRoZSBzeXN0ZW0gcmVzb3VyY2VzIHRoZXkgdXNlLgotQEAgLTMxLDcgKzM2LDcgQEAKLSAKLSAqIFJlc291cmNlIE1lYXN1cmVtZW50OjogIE1lYXN1cmluZyBwcm9ncmFtIHJlc291cmNlIHVzZS4KLSAKLS0gLS0gVGhlIERldGFpbGVkIE5vZGUgTGlzdGluZyAtLQotKyAtLS0gVGhlIERldGFpbGVkIE5vZGUgTGlzdGluZyAtLS0KLSAKLSBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2UKLSAKLUBAIC01OCwxNCArNjMsMTQgQEAKLSAgICBUaGUgYHRpbWUnIGNvbW1hbmQgcnVucyBhbm90aGVyIHByb2dyYW0sIHRoZW4gZGlzcGxheXMgaW5mb3JtYXRpb24KLSBhYm91dCB0aGUgcmVzb3VyY2VzIHVzZWQgYnkgdGhhdCBwcm9ncmFtLCBjb2xsZWN0ZWQgYnkgdGhlIHN5c3RlbSB3aGlsZQotIHRoZSBwcm9ncmFtIHdhcyBydW5uaW5nLiAgWW91IGNhbiBzZWxlY3Qgd2hpY2ggaW5mb3JtYXRpb24gaXMgcmVwb3J0ZWQKLS1hbmQgdGhlIGZvcm1hdCBpbiB3aGljaCBpdCBpcyBzaG93biAoKm5vdGUgU2V0dGluZyBGb3JtYXQ6Oi4pLCBvciBoYXZlCi0rYW5kIHRoZSBmb3JtYXQgaW4gd2hpY2ggaXQgaXMgc2hvd24gKCpub3RlIFNldHRpbmcgRm9ybWF0OjopLCBvciBoYXZlCi0gYHRpbWUnIHNhdmUgdGhlIGluZm9ybWF0aW9uIGluIGEgZmlsZSBpbnN0ZWFkIG9mIGRpc3BsYXlpbmcgaXQgb24gdGhlCi0tc2NyZWVuICgqbm90ZSBSZWRpcmVjdGluZzo6LikuCi0rc2NyZWVuICgqbm90ZSBSZWRpcmVjdGluZzo6KS4KLSAKLSAgICBUaGUgcmVzb3VyY2VzIHRoYXQgYHRpbWUnIGNhbiByZXBvcnQgb24gZmFsbCBpbnRvIHRoZSBnZW5lcmFsCi0gY2F0ZWdvcmllcyBvZiB0aW1lLCBtZW1vcnksIGFuZCBJL08gYW5kIElQQyBjYWxscy4gIFNvbWUgc3lzdGVtcyBkbyBub3QKLSBwcm92aWRlIG11Y2ggaW5mb3JtYXRpb24gYWJvdXQgcHJvZ3JhbSByZXNvdXJjZSB1c2U7IGB0aW1lJyByZXBvcnRzCi0tdW5hdmFpbGFibGUgaW5mb3JtYXRpb24gYXMgemVybyB2YWx1ZXMgKCpub3RlIEFjY3VyYWN5OjouKS4KLSt1bmF2YWlsYWJsZSBpbmZvcm1hdGlvbiBhcyB6ZXJvIHZhbHVlcyAoKm5vdGUgQWNjdXJhY3k6OikuCi0gCi0gICAgVGhlIGZvcm1hdCBvZiB0aGUgYHRpbWUnIGNvbW1hbmQgaXM6Ci0gCi1AQCAtMTMyLDYgKzEzNywxMCBAQAotICAgICAgICAgICB1c2VyICVVCi0gICAgICAgICAgIHN5cyAlUwotIAotK2AtcScKLStgLS1xdWlldCcKLSsgICAgIFN1cHByZXNzIG5vbi16ZXJvIGVycm9yIGNvZGUgZnJvbSB0aGUgZXhlY3V0ZWQgcHJvZ3JhbS4KLSsKLSBgLXYnCi0gYC0tdmVyYm9zZScKLSAgICAgIFVzZSB0aGUgYnVpbHQtaW4gdmVyYm9zZSBmb3JtYXQsIHdoaWNoIGRpc3BsYXlzIGVhY2ggYXZhaWxhYmxlCi1AQCAtMTc0LDcgKzE4Myw3IEBACi0gICAgVGhlIHJlc291cmNlIHNwZWNpZmllcnMsIHdoaWNoIGFyZSBhIHN1cGVyc2V0IG9mIHRob3NlIHJlY29nbml6ZWQgYnkKLSB0aGUgYHRjc2gnIGJ1aWx0aW4gYHRpbWUnIGNvbW1hbmQsIGFyZSBsaXN0ZWQgYmVsb3cuICBOb3QgYWxsIHJlc291cmNlcwotIGFyZSBtZWFzdXJlZCBieSBhbGwgdmVyc2lvbnMgb2YgVW5peCwgc28gc29tZSBvZiB0aGUgdmFsdWVzIG1pZ2h0IGJlCi0tcmVwb3J0ZWQgYXMgemVybyAoKm5vdGUgQWNjdXJhY3k6Oi4pLgotK3JlcG9ydGVkIGFzIHplcm8gKCpub3RlIEFjY3VyYWN5OjopLgotIAotICogTWVudToKLSAKLUBAIC0zMDgsMTEgKzMxNywxMSBAQAotIGAtbyBGSUxFJwotIGAtLW91dHB1dD1GSUxFJwotICAgICAgV3JpdGUgdGhlIHJlc291cmNlIHVzZSBzdGF0aXN0aWNzIHRvIEZJTEUuICBCeSBkZWZhdWx0LCB0aGlzCi0tICAgICAqb3ZlcndyaXRlcyogdGhlIGZpbGUsIGRlc3Ryb3lpbmcgdGhlIGZpbGUncyBwcmV2aW91cyBjb250ZW50cy4KLSsgICAgIF9vdmVyd3JpdGVzXyB0aGUgZmlsZSwgZGVzdHJveWluZyB0aGUgZmlsZSdzIHByZXZpb3VzIGNvbnRlbnRzLgotIAotIGAtYScKLSBgLS1hcHBlbmQnCi0tICAgICAqQXBwZW5kKiB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0rICAgICBfQXBwZW5kXyB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0gICAgICBvZiBvdmVyd3JpdGluZyBpdC4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdXNlZnVsIHdpdGggdGhlIGAtbycgb3IKLSAgICAgIGAtLW91dHB1dCcgb3B0aW9uLgotIAotQEAgLTQzNyw3ICs0NDYsNyBAQAotIAotIGAtYScKLSBgLS1hcHBlbmQnCi0tICAgICAqQXBwZW5kKiB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0rICAgICBfQXBwZW5kXyB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0gICAgICBvZiBvdmVyd3JpdGluZyBpdC4KLSAKLSBgLWYgRk9STUFUJwotQEAgLTQ2MiwxNyArNDcxLDE3IEBACi0gCi0gHwotIFRhZyBUYWJsZToKLS1Ob2RlOiBUb3B/OTM0Ci0tTm9kZTogUmVzb3VyY2UgTWVhc3VyZW1lbnR/MTcyNQotLU5vZGU6IFNldHRpbmcgRm9ybWF0fzM2NzgKLS1Ob2RlOiBGb3JtYXQgU3RyaW5nfzQ5MDcKLS1Ob2RlOiBUaW1lIFJlc291cmNlc382MjE0Ci0tTm9kZTogTWVtb3J5IFJlc291cmNlc382ODQ0Ci0tTm9kZTogSS9PIFJlc291cmNlc383NTQ5Ci0tTm9kZTogQ29tbWFuZCBJbmZvfzg3NDcKLS1Ob2RlOiBSZWRpcmVjdGluZ384OTY0Ci0tTm9kZTogRXhhbXBsZXN/OTc1NAotLU5vZGU6IEFjY3VyYWN5fzEyMDY0Ci0tTm9kZTogSW52b2tpbmcgdGltZX8xMzU4NgotK05vZGU6IFRvcH8xMTE1Ci0rTm9kZTogUmVzb3VyY2UgTWVhc3VyZW1lbnR/MTkwOAotK05vZGU6IFNldHRpbmcgRm9ybWF0fzM4NTgKLStOb2RlOiBGb3JtYXQgU3RyaW5nfzUxNjQKLStOb2RlOiBUaW1lIFJlc291cmNlc382NDcwCi0rTm9kZTogTWVtb3J5IFJlc291cmNlc383MTAwCi0rTm9kZTogSS9PIFJlc291cmNlc383ODA1Ci0rTm9kZTogQ29tbWFuZCBJbmZvfzkwMDMKLStOb2RlOiBSZWRpcmVjdGluZ385MjIwCi0rTm9kZTogRXhhbXBsZXN/MTAwMTAKLStOb2RlOiBBY2N1cmFjeX8xMjMyMAotK05vZGU6IEludm9raW5nIHRpbWV/MTM4NDIKLSAfCi0gRW5kIFRhZyBUYWJsZQotLS0tIHRpbWUtMS43Lm9yaWcvdGltZS5odG1sCi0rKysgdGltZS0xLjcvdGltZS5odG1sCi1AQCAtMCwwICsxLDEwMjEgQEAKLSs8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgotKyAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQwL2xvb3NlLmR0ZCI+Ci0rPEhUTUw+Ci0rPCEtLSBDcmVhdGVkIG9uIFNlcHRlbWJlciwgMSAyMDAzIGJ5IHRleGkyaHRtbCAxLjY2IC0tPgotKzwhLS0KLStXcml0dGVuIGJ5OiBMaW9uZWwgQ29ucyA8TGlvbmVsLkNvbnNAY2Vybi5jaD4gKG9yaWdpbmFsIGF1dGhvcikKLSsgICAgICAgICAgICBLYXJsIEJlcnJ5ICA8a2FybEBmcmVlZnJpZW5kcy5vcmc+Ci0rICAgICAgICAgICAgT2xhZiBCYWNobWFubiA8b2JhY2htYW5AbWF0aGVtYXRpay51bmkta2wuZGU+Ci0rICAgICAgICAgICAgYW5kIG1hbnkgb3RoZXJzLgotK01haW50YWluZWQgYnk6IE1hbnkgY3JlYXRpdmUgcGVvcGxlIDxkZXZAdGV4aTJodG1sLmN2c2hvbWUub3JnPgotK1NlbmQgYnVncyBhbmQgc3VnZ2VzdGlvbnMgdG8gPHVzZXJzQHRleGkyaHRtbC5jdnNob21lLm9yZz4KLSsKLSstLT4KLSs8SEVBRD4KLSs8VElUTEU+TWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlPC9USVRMRT4KLSsKLSs8TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iTWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlIj4KLSs8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iTWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlIj4KLSs8TUVUQSBOQU1FPSJyZXNvdXJjZS10eXBlIiBDT05URU5UPSJkb2N1bWVudCI+Ci0rPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotKzxNRVRBIE5BTUU9IkdlbmVyYXRvciIgQ09OVEVOVD0idGV4aTJodG1sIDEuNjYiPgotKwotKzwvSEVBRD4KLSsKLSs8Qk9EWSBMQU5HPSJlbiIgQkdDT0xPUj0iI0ZGRkZGRiIgVEVYVD0iIzAwMDAwMCIgTElOSz0iIzAwMDBGRiIgVkxJTks9IiM4MDAwODAiIEFMSU5LPSIjRkYwMDAwIj4KLSsKLSs8QSBOQU1FPSJTRUNfVG9wIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMT5NZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L0gxPgotKwotKzxQPgotKwotK1RoaXMgZmlsZSBkb2N1bWVudHMgdGhlIHRoZSBHTlUgPENPREU+dGltZTwvQ09ERT4gY29tbWFuZCBmb3IgcnVubmluZyBwcm9ncmFtcwotK2FuZCBzdW1tYXJpemluZyB0aGUgc3lzdGVtIHJlc291cmNlcyB0aGV5IHVzZS4KLStUaGlzIGlzIGVkaXRpb24gMS43LCBmb3IgdmVyc2lvbiAxLjcuCi0rPC9QPgotKzxQPgotKwotKzwvUD4KLSs8VEFCTEUgQk9SREVSPSIwIiBDRUxMU1BBQ0lORz0iMCI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4xLiBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5NZWFzdXJpbmcgcHJvZ3JhbSByZXNvdXJjZSB1c2UuPC9URD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj4KLSs8L1RIPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPiAtLSBUaGUgRGV0YWlsZWQgTm9kZSBMaXN0aW5nIC0tLQotKzwvVEg+PC9UUj4KLSs8VFI+PFRIIENPTFNQQU49IjMiIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+Ci0rPC9USD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5NZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2UKLSs8L1RIPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPgotKzwvVEg+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzIiPjEuMSBTZXR0aW5nIHRoZSBPdXRwdXQgRm9ybWF0PC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+U2VsZWN0aW5nIHRoZSBpbmZvcm1hdGlvbiByZXBvcnRlZCBieSA8Q09ERT50aW1lPC9DT0RFPi48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMzIj4xLjIgVGhlIEZvcm1hdCBTdHJpbmc8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5UaGUgaW5mb3JtYXRpb24gPENPREU+dGltZTwvQ09ERT4gY2FuIHJlcG9ydC48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM4Ij4xLjMgUmVkaXJlY3RpbmcgT3V0cHV0PC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+V3JpdGluZyB0aGUgaW5mb3JtYXRpb24gdG8gYSBmaWxlLjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzkiPjEuNCBFeGFtcGxlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPkV4YW1wbGVzIG9mIHVzaW5nIDxDT0RFPnRpbWU8L0NPREU+LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzEwIj4xLjUgQWNjdXJhY3k8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5MaW1pdGF0aW9ucyBvbiB0aGUgYWNjdXJhY3kgb2YgPENPREU+dGltZTwvQ09ERT4gb3V0cHV0LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzExIj4xLjYgUnVubmluZyB0aGUgPENPREU+dGltZTwvQ09ERT4gQ29tbWFuZDwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlN1bW1hcnkgb2YgdGhlIG9wdGlvbnMgdG8gdGhlIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQuPC9URD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj4KLSs8L1RIPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlRoZSBGb3JtYXQgU3RyaW5nCi0rPC9USD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj4KLSs8L1RIPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM0Ij4xLjIuMSBUaW1lIFJlc291cmNlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzUiPjEuMi4yIE1lbW9yeSBSZXNvdXJjZXM8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM2Ij4xLjIuMyBJL08gUmVzb3VyY2VzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNyI+MS4yLjQgQ29tbWFuZCBJbmZvPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzwvVEFCTEU+Ci0rPFA+Ci0rCi0rPEhSIFNJWkU9MT4KLSs8QSBOQU1FPSJTRUMxIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMyIj4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZsdDsmbHQ7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxBIE5BTUU9IlJlc291cmNlIE1lYXN1cmVtZW50Ij48L0E+Ci0rPEgxPiAxLiBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2UgPC9IMT4KLSs8IS0tZG9jaWQ6OlNFQzE6Oi0tPgotKzxQPgotKwotK1RoZSA8Q09ERT50aW1lPC9DT0RFPiBjb21tYW5kIHJ1bnMgYW5vdGhlciBwcm9ncmFtLCB0aGVuIGRpc3BsYXlzIGluZm9ybWF0aW9uCi0rYWJvdXQgdGhlIHJlc291cmNlcyB1c2VkIGJ5IHRoYXQgcHJvZ3JhbSwgY29sbGVjdGVkIGJ5IHRoZSBzeXN0ZW0gd2hpbGUKLSt0aGUgcHJvZ3JhbSB3YXMgcnVubmluZy4gIFlvdSBjYW4gc2VsZWN0IHdoaWNoIGluZm9ybWF0aW9uIGlzIHJlcG9ydGVkCi0rYW5kIHRoZSBmb3JtYXQgaW4gd2hpY2ggaXQgaXMgc2hvd24gKHNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUMyIj4xLjEgU2V0dGluZyB0aGUgT3V0cHV0IEZvcm1hdDwvQT4pLCBvciBoYXZlCi0rPENPREU+dGltZTwvQ09ERT4gc2F2ZSB0aGUgaW5mb3JtYXRpb24gaW4gYSBmaWxlIGluc3RlYWQgb2YgZGlzcGxheWluZyBpdCBvbiB0aGUKLStzY3JlZW4gKHNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUM4Ij4xLjMgUmVkaXJlY3RpbmcgT3V0cHV0PC9BPikuCi0rPC9QPgotKzxQPgotKwotK1RoZSByZXNvdXJjZXMgdGhhdCA8Q09ERT50aW1lPC9DT0RFPiBjYW4gcmVwb3J0IG9uIGZhbGwgaW50byB0aGUgZ2VuZXJhbAotK2NhdGVnb3JpZXMgb2YgdGltZSwgbWVtb3J5LCBhbmQgSS9PIGFuZCBJUEMgY2FsbHMuICBTb21lIHN5c3RlbXMgZG8gbm90Ci0rcHJvdmlkZSBtdWNoIGluZm9ybWF0aW9uIGFib3V0IHByb2dyYW0gcmVzb3VyY2UgdXNlOyA8Q09ERT50aW1lPC9DT0RFPgotK3JlcG9ydHMgdW5hdmFpbGFibGUgaW5mb3JtYXRpb24gYXMgemVybyB2YWx1ZXMgKHNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMCI+MS41IEFjY3VyYWN5PC9BPikuCi0rPC9QPgotKzxQPgotKwotK1RoZSBmb3JtYXQgb2YgdGhlIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQgaXM6Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT50aW1lIFtvcHRpb248c21hbGw+Li4uPC9zbWFsbD5dIDxWQVI+Y29tbWFuZDwvVkFSPiBbPFZBUj5hcmc8L1ZBUj48c21hbGw+Li4uPC9zbWFsbD5dCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rPEEgTkFNRT0iSURYMSI+PC9BPgotKzxDT0RFPnRpbWU8L0NPREU+IHJ1bnMgdGhlIHByb2dyYW0gPFZBUj5jb21tYW5kPC9WQVI+LCB3aXRoIGFueSBnaXZlbiBhcmd1bWVudHMKLSs8VkFSPmFyZzwvVkFSPjxzbWFsbD4uLi48L3NtYWxsPi4gIFdoZW4gPFZBUj5jb21tYW5kPC9WQVI+IGZpbmlzaGVzLCA8Q09ERT50aW1lPC9DT0RFPiBkaXNwbGF5cwotK2luZm9ybWF0aW9uIGFib3V0IHJlc291cmNlcyB1c2VkIGJ5IDxWQVI+Y29tbWFuZDwvVkFSPi4KLSs8L1A+Ci0rPFA+Ci0rCi0rSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIDxDT0RFPnRpbWU8L0NPREU+IHRvIG1lYXN1cmUgdGhlIHRpbWUgYW5kIG90aGVyCi0rcmVzb3VyY2VzIHVzZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbSA8Q09ERT5ncmVwPC9DT0RFPjoKLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPmVnJCB0aW1lIGdyZXAgbm9ib2R5IC9ldGMvYWxpYXNlcwotK25vYm9keTovZGV2L251bGwKLStldGMtZmlsZXM6bm9ib2R5Ci0rbWlzYy1ncm91cDpub2JvZHkKLSswLjA3dXNlciAwLjUwc3lzdGVtIDA6MDYuNjllbGFwc2VkIDglQ1BVICgwYXZndGV4dCs0ODlhdmdkYXRhIDMyNG1heHJlc2lkZW50KWsKLSs0NmlucHV0cys3b3V0cHV0cyAoNDNtYWpvcisyNTFtaW5vcilwYWdlZmF1bHRzIDBzd2FwcwotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotK01haWwgc3VnZ2VzdGlvbnMgYW5kIGJ1ZyByZXBvcnRzIGZvciBHTlUgPENPREU+dGltZTwvQ09ERT4gdG8KLSs8Q09ERT5idWctZ251LXV0aWxzQHByZXAuYWkubWl0LmVkdTwvQ09ERT4uICBQbGVhc2UgaW5jbHVkZSB0aGUgdmVyc2lvbiBvZgotKzxDT0RFPnRpbWU8L0NPREU+LCB3aGljaCB5b3UgY2FuIGdldCBieSBydW5uaW5nIGA8U0FNUD50aW1lIC0tdmVyc2lvbjwvU0FNUD4nLCBhbmQgdGhlCi0rb3BlcmF0aW5nIHN5c3RlbSBhbmQgQyBjb21waWxlciB5b3UgdXNlZC4KLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFNQQUNJTkc9IjAiPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMiI+MS4xIFNldHRpbmcgdGhlIE91dHB1dCBGb3JtYXQ8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5TZWxlY3RpbmcgdGhlIGluZm9ybWF0aW9uIHJlcG9ydGVkIGJ5IDxDT0RFPnRpbWU8L0NPREU+LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzMiPjEuMiBUaGUgRm9ybWF0IFN0cmluZzwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlRoZSBpbmZvcm1hdGlvbiA8Q09ERT50aW1lPC9DT0RFPiBjYW4gcmVwb3J0LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzgiPjEuMyBSZWRpcmVjdGluZyBPdXRwdXQ8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5Xcml0aW5nIHRoZSBpbmZvcm1hdGlvbiB0byBhIGZpbGUuPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOSI+MS40IEV4YW1wbGVzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+RXhhbXBsZXMgb2YgdXNpbmcgPENPREU+dGltZTwvQ09ERT4uPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPjEuNSBBY2N1cmFjeTwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPkxpbWl0YXRpb25zIG9uIHRoZSBhY2N1cmFjeSBvZiA8Q09ERT50aW1lPC9DT0RFPiBvdXRwdXQuPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTEiPjEuNiBSdW5uaW5nIHRoZSA8Q09ERT50aW1lPC9DT0RFPiBDb21tYW5kPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+U3VtbWFyeSBvZiB0aGUgb3B0aW9ucyB0byB0aGUgPENPREU+dGltZTwvQ09ERT4gY29tbWFuZC48L1REPjwvVFI+Ci0rPC9UQUJMRT4KLSs8UD4KLSsKLSs8QSBOQU1FPSJTZXR0aW5nIEZvcm1hdCI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUMyIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMzIj4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgyPiAxLjEgU2V0dGluZyB0aGUgT3V0cHV0IEZvcm1hdCA8L0gyPgotKzwhLS1kb2NpZDo6U0VDMjo6LS0+Ci0rPFA+Ci0rCi0rPENPREU+dGltZTwvQ09ERT4gdXNlcyBhIDxFTT5mb3JtYXQgc3RyaW5nPC9FTT4gdG8gZGV0ZXJtaW5lIHdoaWNoIGluZm9ybWF0aW9uIHRvCi0rZGlzcGxheSBhYm91dCB0aGUgcmVzb3VyY2VzIHVzZWQgYnkgdGhlIGNvbW1hbmQgaXQgcnVucy4gIFNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUMzIj4xLjIgVGhlIEZvcm1hdCBTdHJpbmc8L0E+LCBmb3IgdGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBmb3JtYXQgc3RyaW5nIGNvbnRlbnRzLgotKzwvUD4KLSs8UD4KLSsKLStZb3UgY2FuIHNwZWNpZnkgYSBmb3JtYXQgc3RyaW5nIHdpdGggdGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIGxpc3RlZAotK2JlbG93LiAgSWYgbm8gZm9ybWF0IGlzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLCBidXQgdGhlCi0rPENPREU+VElNRTwvQ09ERT4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LCBpdHMgdmFsdWUgaXMgdXNlZCBhcyB0aGUgZm9ybWF0Ci0rc3RyaW5nLiAgT3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBmb3JtYXQgYnVpbHQgaW50byA8Q09ERT50aW1lPC9DT0RFPiBpcyB1c2VkOgotKzwvUD4KLSs8UD4KLSsKLSs8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+JVV1c2VyICVTc3lzdGVtICVFZWxhcHNlZCAlUENQVSAoJVh0ZXh0KyVEZGF0YSAlTW1heClrCi0rJUlpbnB1dHMrJU9vdXRwdXRzICglRm1ham9yKyVSbWlub3IpcGFnZWZhdWx0cyAlV3N3YXBzCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rVGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIHNldCB0aGUgZm9ybWF0IGFyZToKLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT4tZiA8VkFSPmZvcm1hdDwvVkFSPjwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tZm9ybWF0PTxWQVI+Zm9ybWF0PC9WQVI+PC9DT0RFPgotKzxERD5Vc2UgPFZBUj5mb3JtYXQ8L1ZBUj4gYXMgdGhlIGZvcm1hdCBzdHJpbmcuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tcDwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tcG9ydGFiaWxpdHk8L0NPREU+Ci0rPEREPlVzZSB0aGUgZm9sbG93aW5nIGZvcm1hdCBzdHJpbmcsIGZvciBjb25mb3JtYW5jZSB3aXRoIFBPU0lYIHN0YW5kYXJkCi0rMTAwMy4yOgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT5yZWFsICVlCi0rdXNlciAlVQotK3N5cyAlUwotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LXE8L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLXF1aWV0PC9DT0RFPgotKzxERD5TdXBwcmVzcyBub24temVybyBlcnJvciBjb2RlIGZyb20gdGhlIGV4ZWN1dGVkIHByb2dyYW0uCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tdjwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tdmVyYm9zZTwvQ09ERT4KLSs8REQ+PEEgTkFNRT0iSURYMiI+PC9BPgotK1VzZSB0aGUgYnVpbHQtaW4gdmVyYm9zZSBmb3JtYXQsIHdoaWNoIGRpc3BsYXlzIGVhY2ggYXZhaWxhYmxlIHBpZWNlIG9mCi0raW5mb3JtYXRpb24gb24gdGhlIHByb2dyYW0ncyByZXNvdXJjZSB1c2Ugb24gaXRzIG93biBsaW5lLCB3aXRoIGFuCi0rRW5nbGlzaCBkZXNjcmlwdGlvbiBvZiBpdHMgbWVhbmluZy4KLSs8L0RMPgotKzxQPgotKwotKzxBIE5BTUU9IkZvcm1hdCBTdHJpbmciPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDMyI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMiI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNCI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMj4gMS4yIFRoZSBGb3JtYXQgU3RyaW5nIDwvSDI+Ci0rPCEtLWRvY2lkOjpTRUMzOjotLT4KLSs8UD4KLSsKLSs8QSBOQU1FPSJJRFgzIj48L0E+Ci0rPEEgTkFNRT0iSURYNCI+PC9BPgotK1RoZSA8RU0+Zm9ybWF0IHN0cmluZzwvRU0+IGNvbnRyb2xzIHRoZSBjb250ZW50cyBvZiB0aGUgPENPREU+dGltZTwvQ09ERT4gb3V0cHV0LgotK0l0IGNvbnNpc3RzIG9mIDxFTT5yZXNvdXJjZSBzcGVjaWZpZXJzPC9FTT4gYW5kIDxFTT5lc2NhcGVzPC9FTT4sIGludGVyc3BlcnNlZAotK3dpdGggcGxhaW4gdGV4dC4KLSs8L1A+Ci0rPFA+Ci0rCi0rQSBiYWNrc2xhc2ggaW50cm9kdWNlcyBhbiA8RU0+ZXNjYXBlPC9FTT4sIHdoaWNoIGlzIHRyYW5zbGF0ZWQKLStpbnRvIGEgc2luZ2xlIHByaW50aW5nIGNoYXJhY3RlciB1cG9uIG91dHB1dC4gIFRoZSB2YWxpZCBlc2NhcGVzIGFyZQotK2xpc3RlZCBiZWxvdy4gIEFuIGludmFsaWQgZXNjYXBlIGlzIG91dHB1dCBhcyBhIHF1ZXN0aW9uIG1hcmsgZm9sbG93ZWQKLStieSBhIGJhY2tzbGFzaC4KLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT5cdDwvQ09ERT4KLSs8REQ+YSB0YWIgY2hhcmFjdGVyCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5cbjwvQ09ERT4KLSs8REQ+YSBuZXdsaW5lCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5cXDwvQ09ERT4KLSs8REQ+YSBsaXRlcmFsIGJhY2tzbGFzaAotKzwvREw+Ci0rPFA+Ci0rCi0rPENPREU+dGltZTwvQ09ERT4gYWx3YXlzIHByaW50cyBhIG5ld2xpbmUgYWZ0ZXIgcHJpbnRpbmcgdGhlIHJlc291cmNlIHVzZQotK2luZm9ybWF0aW9uLCBzbyBub3JtYWxseSBmb3JtYXQgc3RyaW5ncyBkbyBub3QgZW5kIHdpdGggYSBuZXdsaW5lCi0rY2hhcmFjdGVyIChvciBgPFNBTVA+XG48L1NBTVA+JykuCi0rPC9QPgotKzxQPgotKwotK0EgcmVzb3VyY2Ugc3BlY2lmaWVyIGNvbnNpc3RzIG9mIGEgcGVyY2VudCBzaWduIGZvbGxvd2VkIGJ5IGFub3RoZXIKLStjaGFyYWN0ZXIuICBBbiBpbnZhbGlkIHJlc291cmNlIHNwZWNpZmllciBpcyBvdXRwdXQgYXMgYSBxdWVzdGlvbiBtYXJrCi0rZm9sbG93ZWQgYnkgdGhlIGludmFsaWQgY2hhcmFjdGVyLiAgVXNlIGA8U0FNUD4lJTwvU0FNUD4nIHRvIG91dHB1dCBhIGxpdGVyYWwKLStwZXJjZW50IHNpZ24uCi0rPC9QPgotKzxQPgotKwotK1RoZSByZXNvdXJjZSBzcGVjaWZpZXJzLCB3aGljaCBhcmUgYSBzdXBlcnNldCBvZiB0aG9zZSByZWNvZ25pemVkIGJ5IHRoZQotKzxDT0RFPnRjc2g8L0NPREU+IGJ1aWx0aW4gPENPREU+dGltZTwvQ09ERT4gY29tbWFuZCwgYXJlIGxpc3RlZCBiZWxvdy4gIE5vdCBhbGwKLStyZXNvdXJjZXMgYXJlIG1lYXN1cmVkIGJ5IGFsbCB2ZXJzaW9ucyBvZiBVbml4LCBzbyBzb21lIG9mIHRoZSB2YWx1ZXMKLSttaWdodCBiZSByZXBvcnRlZCBhcyB6ZXJvIChzZWUgc2VjdGlvbiA8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPjEuNSBBY2N1cmFjeTwvQT4pLgotKzwvUD4KLSs8UD4KLSsKLSs8VEFCTEUgQk9SREVSPSIwIiBDRUxMU1BBQ0lORz0iMCI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM0Ij4xLjIuMSBUaW1lIFJlc291cmNlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzUiPjEuMi4yIE1lbW9yeSBSZXNvdXJjZXM8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM2Ij4xLjIuMyBJL08gUmVzb3VyY2VzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNyI+MS4yLjQgQ29tbWFuZCBJbmZvPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzwvVEFCTEU+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iVGltZSBSZXNvdXJjZXMiPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDNCI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMyI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNSI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMz4gMS4yLjEgVGltZSBSZXNvdXJjZXMgPC9IMz4KLSs8IS0tZG9jaWQ6OlNFQzQ6Oi0tPgotKzxQPgotKwotKzwvUD4KLSs8REwgQ09NUEFDVD4KLSs8RFQ+PENPREU+RTwvQ09ERT4KLSs8REQ+RWxhcHNlZCByZWFsICh3YWxsIGNsb2NrKSB0aW1lIHVzZWQgYnkgdGhlIHByb2Nlc3MsIGluCi0rW2hvdXJzOl1taW51dGVzOnNlY29uZHMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5lPC9DT0RFPgotKzxERD5FbGFwc2VkIHJlYWwgKHdhbGwgY2xvY2spIHRpbWUgdXNlZCBieSB0aGUgcHJvY2VzcywgaW4KLStzZWNvbmRzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+UzwvQ09ERT4KLSs8REQ+VG90YWwgbnVtYmVyIG9mIENQVS1zZWNvbmRzIHVzZWQgYnkgdGhlIHN5c3RlbSBvbiBiZWhhbGYgb2YgdGhlIHByb2Nlc3MKLSsoaW4ga2VybmVsIG1vZGUpLCBpbiBzZWNvbmRzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+VTwvQ09ERT4KLSs8REQ+VG90YWwgbnVtYmVyIG9mIENQVS1zZWNvbmRzIHRoYXQgdGhlIHByb2Nlc3MgdXNlZCBkaXJlY3RseSAoaW4gdXNlcgotK21vZGUpLCBpbiBzZWNvbmRzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+UDwvQ09ERT4KLSs8REQ+UGVyY2VudGFnZSBvZiB0aGUgQ1BVIHRoYXQgdGhpcyBqb2IgZ290LiAgVGhpcyBpcyBqdXN0IHVzZXIgKyBzeXN0ZW0KLSt0aW1lcyBkaXZpZWQgYnkgdGhlIHRvdGFsIHJ1bm5pbmcgdGltZS4KLSs8L0RMPgotKzxQPgotKwotKzxBIE5BTUU9Ik1lbW9yeSBSZXNvdXJjZXMiPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDNSI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNCI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNiI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMz4gMS4yLjIgTWVtb3J5IFJlc291cmNlcyA8L0gzPgotKzwhLS1kb2NpZDo6U0VDNTo6LS0+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT5NPC9DT0RFPgotKzxERD5NYXhpbXVtIHJlc2lkZW50IHNldCBzaXplIG9mIHRoZSBwcm9jZXNzIGR1cmluZyBpdHMgbGlmZXRpbWUsIGluCi0rS2lsb2J5dGVzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+dDwvQ09ERT4KLSs8REQ+QXZlcmFnZSByZXNpZGVudCBzZXQgc2l6ZSBvZiB0aGUgcHJvY2VzcywgaW4gS2lsb2J5dGVzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+SzwvQ09ERT4KLSs8REQ+QXZlcmFnZSB0b3RhbCAoZGF0YStzdGFjayt0ZXh0KSBtZW1vcnkgdXNlIG9mIHRoZSBwcm9jZXNzLCBpbiBLaWxvYnl0ZXMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5EPC9DT0RFPgotKzxERD5BdmVyYWdlIHNpemUgb2YgdGhlIHByb2Nlc3MncyB1bnNoYXJlZCBkYXRhIGFyZWEsIGluIEtpbG9ieXRlcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPnA8L0NPREU+Ci0rPEREPkF2ZXJhZ2Ugc2l6ZSBvZiB0aGUgcHJvY2VzcydzIHVuc2hhcmVkIHN0YWNrLCBpbiBLaWxvYnl0ZXMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5YPC9DT0RFPgotKzxERD5BdmVyYWdlIHNpemUgb2YgdGhlIHByb2Nlc3MncyBzaGFyZWQgdGV4dCwgaW4gS2lsb2J5dGVzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+WjwvQ09ERT4KLSs8REQ+U3lzdGVtJ3MgcGFnZSBzaXplLCBpbiBieXRlcy4gIFRoaXMgaXMgYSBwZXItc3lzdGVtIGNvbnN0YW50LCBidXQKLSt2YXJpZXMgYmV0d2VlbiBzeXN0ZW1zLgotKzwvREw+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iSS9PIFJlc291cmNlcyI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUM2Ij48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM1Ij4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM3Ij4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgzPiAxLjIuMyBJL08gUmVzb3VyY2VzIDwvSDM+Ci0rPCEtLWRvY2lkOjpTRUM2OjotLT4KLSs8UD4KLSsKLSs8L1A+Ci0rPERMIENPTVBBQ1Q+Ci0rPERUPjxDT0RFPkY8L0NPREU+Ci0rPEREPk51bWJlciBvZiBtYWpvciwgb3IgSS9PLXJlcXVpcmluZywgcGFnZSBmYXVsdHMgdGhhdCBvY2N1cnJlZCB3aGlsZSB0aGUKLStwcm9jZXNzIHdhcyBydW5uaW5nLiAgVGhlc2UgYXJlIGZhdWx0cyB3aGVyZSB0aGUgcGFnZSBoYXMgYWN0dWFsbHkKLSttaWdyYXRlZCBvdXQgb2YgcHJpbWFyeSBtZW1vcnkuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5SPC9DT0RFPgotKzxERD5OdW1iZXIgb2YgbWlub3IsIG9yIHJlY292ZXJhYmxlLCBwYWdlIGZhdWx0cy4gIFRoZXNlIGFyZSBwYWdlcyB0aGF0IGFyZQotK25vdCB2YWxpZCAoc28gdGhleSBmYXVsdCkgYnV0IHdoaWNoIGhhdmUgbm90IHlldCBiZWVuIGNsYWltZWQgYnkgb3RoZXIKLSt2aXJ0dWFsIHBhZ2VzLiAgVGh1cyB0aGUgZGF0YSBpbiB0aGUgcGFnZSBpcyBzdGlsbCB2YWxpZCBidXQgdGhlIHN5c3RlbQotK3RhYmxlcyBtdXN0IGJlIHVwZGF0ZWQuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5XPC9DT0RFPgotKzxERD5OdW1iZXIgb2YgdGltZXMgdGhlIHByb2Nlc3Mgd2FzIHN3YXBwZWQgb3V0IG9mIG1haW4gbWVtb3J5LgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+YzwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIHRpbWVzIHRoZSBwcm9jZXNzIHdhcyBjb250ZXh0LXN3aXRjaGVkIGludm9sdW50YXJpbHkgKGJlY2F1c2UKLSt0aGUgdGltZSBzbGljZSBleHBpcmVkKS4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPnc8L0NPREU+Ci0rPEREPk51bWJlciBvZiB0aW1lcyB0aGF0IHRoZSBwcm9ncmFtIHdhcyBjb250ZXh0LXN3aXRjaGVkIHZvbHVudGFyaWx5LCBmb3IKLStpbnN0YW5jZSB3aGlsZSB3YWl0aW5nIGZvciBhbiBJL08gb3BlcmF0aW9uIHRvIGNvbXBsZXRlLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+STwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIGZpbGUgc3lzdGVtIGlucHV0cyBieSB0aGUgcHJvY2Vzcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPk88L0NPREU+Ci0rPEREPk51bWJlciBvZiBmaWxlIHN5c3RlbSBvdXRwdXRzIGJ5IHRoZSBwcm9jZXNzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+cjwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIHNvY2tldCBtZXNzYWdlcyByZWNlaXZlZCBieSB0aGUgcHJvY2Vzcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPnM8L0NPREU+Ci0rPEREPk51bWJlciBvZiBzb2NrZXQgbWVzc2FnZXMgc2VudCBieSB0aGUgcHJvY2Vzcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPms8L0NPREU+Ci0rPEREPk51bWJlciBvZiBzaWduYWxzIGRlbGl2ZXJlZCB0byB0aGUgcHJvY2Vzcy4KLSs8L0RMPgotKzxQPgotKwotKzxBIE5BTUU9IkNvbW1hbmQgSW5mbyI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUM3Ij48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM2Ij4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM4Ij4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgzPiAxLjIuNCBDb21tYW5kIEluZm8gPC9IMz4KLSs8IS0tZG9jaWQ6OlNFQzc6Oi0tPgotKzxQPgotKwotKzwvUD4KLSs8REwgQ09NUEFDVD4KLSs8RFQ+PENPREU+QzwvQ09ERT4KLSs8REQ+TmFtZSBhbmQgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBvZiB0aGUgY29tbWFuZCBiZWluZyB0aW1lZC4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPng8L0NPREU+Ci0rPEREPkV4aXQgc3RhdHVzIG9mIHRoZSBjb21tYW5kLgotKzwvREw+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iUmVkaXJlY3RpbmciPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDOCI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNyI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOSI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMj4gMS4zIFJlZGlyZWN0aW5nIE91dHB1dCA8L0gyPgotKzwhLS1kb2NpZDo6U0VDODo6LS0+Ci0rPFA+Ci0rCi0rQnkgZGVmYXVsdCwgPENPREU+dGltZTwvQ09ERT4gd3JpdGVzIHRoZSByZXNvdXJjZSB1c2Ugc3RhdGlzdGljcyB0byB0aGUKLStzdGFuZGFyZCBlcnJvciBzdHJlYW0uICBUaGUgb3B0aW9ucyBiZWxvdyBtYWtlIGl0IHdyaXRlIHRoZSBzdGF0aXN0aWNzCi0rdG8gYSBmaWxlIGluc3RlYWQuICBEb2luZyB0aGlzIGNhbiBiZSB1c2VmdWwgaWYgdGhlIHByb2dyYW0geW91J3JlCi0rcnVubmluZyB3cml0ZXMgdG8gdGhlIHN0YW5kYXJkIGVycm9yIG9yIHlvdSdyZSBydW5uaW5nIDxDT0RFPnRpbWU8L0NPREU+Ci0rbm9uaW50ZXJhY3RpdmVseSBvciBpbiB0aGUgYmFja2dyb3VuZC4KLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT4tbyA8VkFSPmZpbGU8L1ZBUj48L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLW91dHB1dD08VkFSPmZpbGU8L1ZBUj48L0NPREU+Ci0rPEREPldyaXRlIHRoZSByZXNvdXJjZSB1c2Ugc3RhdGlzdGljcyB0byA8VkFSPmZpbGU8L1ZBUj4uICBCeSBkZWZhdWx0LCB0aGlzCi0rPEVNPm92ZXJ3cml0ZXM8L0VNPiB0aGUgZmlsZSwgZGVzdHJveWluZyB0aGUgZmlsZSdzIHByZXZpb3VzIGNvbnRlbnRzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LWE8L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLWFwcGVuZDwvQ09ERT4KLSs8REQ+PEVNPkFwcGVuZDwvRU0+IHRoZSByZXNvdXJjZSB1c2UgaW5mb3JtYXRpb24gdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQKLStvZiBvdmVyd3JpdGluZyBpdC4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdXNlZnVsIHdpdGggdGhlIGA8U0FNUD4tbzwvU0FNUD4nIG9yCi0rYDxTQU1QPi0tb3V0cHV0PC9TQU1QPicgb3B0aW9uLgotKzwvREw+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iRXhhbXBsZXMiPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDOSI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOCI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPiAmZ3Q7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDI+IDEuNCBFeGFtcGxlcyA8L0gyPgotKzwhLS1kb2NpZDo6U0VDOTo6LS0+Ci0rPFA+Ci0rCi0rUnVuIHRoZSBjb21tYW5kIGA8U0FNUD53YyAvZXRjL2hvc3RzPC9TQU1QPicgYW5kIHNob3cgdGhlIGRlZmF1bHQgaW5mb3JtYXRpb246Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT5lZyQgdGltZSB3YyAvZXRjL2hvc3RzCi0rICAgICAgMzUgICAgIDExMSAgICAxMTM0IC9ldGMvaG9zdHMKLSswLjAwdXNlciAwLjAxc3lzdGVtIDA6MDAuMDRlbGFwc2VkIDI1JUNQVSAoMGF2Z3RleHQrMGF2Z2RhdGEgMG1heHJlc2lkZW50KWsKLSsxaW5wdXRzKzFvdXRwdXRzICgwbWFqb3IrMG1pbm9yKXBhZ2VmYXVsdHMgMHN3YXBzCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rUnVuIHRoZSBjb21tYW5kIGA8U0FNUD5scyAtRnM8L1NBTVA+JyBhbmQgc2hvdyBqdXN0IHRoZSB1c2VyLCBzeXN0ZW0sIGFuZAotK3dhbGwtY2xvY2sgdGltZToKLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPmVnJCB0aW1lIC1mICZxdW90O1x0JUUgcmVhbCxcdCVVIHVzZXIsXHQlUyBzeXMmcXVvdDsgbHMgLUZzCi0rdG90YWwgMTYKLSsxIGFjY291bnQvICAgICAgMSBkYi8gICAgICAgICAgIDEgbWFpbC8gICAgICAgICAxIHJ1bi8KLSsxIGJhY2t1cHMvICAgICAgMSBlbWFjcy8gICAgICAgIDEgbXNncy8gICAgICAgICAxIHJ3aG8vCi0rMSBjcmFzaC8gICAgICAgIDEgZ2FtZXMvICAgICAgICAxIHByZXNlcnZlLyAgICAgMSBzcG9vbC8KLSsxIGNyb24vICAgICAgICAgMSBsb2cvICAgICAgICAgIDEgcXVvdGFzLyAgICAgICAxIHRtcC8KLSsgICAgICAgIDA6MDAuMDMgcmVhbCwgICAwLjAwIHVzZXIsICAgICAgMC4wMSBzeXMKLSs8L3ByZT48L3RkPjwvdHI+PC90YWJsZT48UD4KLSsKLStFZGl0IHRoZSBmaWxlIGA8VFQ+LmJhc2hyYzwvVFQ+JyBhbmQgaGF2ZSA8Q09ERT50aW1lPC9DT0RFPiBhcHBlbmQgdGhlIGVsYXBzZWQgdGltZQotK2FuZCBudW1iZXIgb2Ygc2lnbmFscyB0byB0aGUgZmlsZSBgPFRUPmxvZzwvVFQ+JywgcmVhZGluZyB0aGUgZm9ybWF0IHN0cmluZwotK2Zyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDxDT0RFPlRJTUU8L0NPREU+OgotKzwvUD4KLSs8UD4KLSsKLSs8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+ZWckIGV4cG9ydCBUSU1FPSZxdW90O1x0JUUsXHQlayZxdW90OyAjIElmIHVzaW5nIGJhc2ggb3Iga3NoCi0rZWckIHNldGVudiBUSU1FICZxdW90O1x0JUUsXHQlayZxdW90OyAjIElmIHVzaW5nIGNzaCBvciB0Y3NoCi0rZWckIHRpbWUgLWEgLW8gbG9nIGVtYWNzIC5iYXNocmMKLStlZyQgY2F0IGxvZwotKyAgICAgICAgMDoxNi41NSwgICAgICAgIDcyNgotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotK1J1biB0aGUgY29tbWFuZCBgPFNBTVA+c2xlZXAgNDwvU0FNUD4nIGFuZCBzaG93IGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgaXQKLSt2ZXJib3NlbHk6Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT5lZyQgdGltZSAtdiBzbGVlcCA0Ci0rICAgICAgICBDb21tYW5kIGJlaW5nIHRpbWVkOiAmcXVvdDtzbGVlcCA0JnF1b3Q7Ci0rICAgICAgICBVc2VyIHRpbWUgKHNlY29uZHMpOiAwLjAwCi0rICAgICAgICBTeXN0ZW0gdGltZSAoc2Vjb25kcyk6IDAuMDUKLSsgICAgICAgIFBlcmNlbnQgb2YgQ1BVIHRoaXMgam9iIGdvdDogMSUKLSsgICAgICAgIEVsYXBzZWQgKHdhbGwgY2xvY2spIHRpbWUgKGg6bW06c3Mgb3IgbTpzcyk6IDA6MDQuMjYKLSsgICAgICAgIEF2ZXJhZ2Ugc2hhcmVkIHRleHQgc2l6ZSAoa2J5dGVzKTogMzYKLSsgICAgICAgIEF2ZXJhZ2UgdW5zaGFyZWQgZGF0YSBzaXplIChrYnl0ZXMpOiAyNAotKyAgICAgICAgQXZlcmFnZSBzdGFjayBzaXplIChrYnl0ZXMpOiAwCi0rICAgICAgICBBdmVyYWdlIHRvdGFsIHNpemUgKGtieXRlcyk6IDYwCi0rICAgICAgICBNYXhpbXVtIHJlc2lkZW50IHNldCBzaXplIChrYnl0ZXMpOiAzMgotKyAgICAgICAgQXZlcmFnZSByZXNpZGVudCBzZXQgc2l6ZSAoa2J5dGVzKTogMjQKLSsgICAgICAgIE1ham9yIChyZXF1aXJpbmcgSS9PKSBwYWdlIGZhdWx0czogMwotKyAgICAgICAgTWlub3IgKHJlY2xhaW1pbmcgYSBmcmFtZSkgcGFnZSBmYXVsdHM6IDAKLSsgICAgICAgIFZvbHVudGFyeSBjb250ZXh0IHN3aXRjaGVzOiAxMQotKyAgICAgICAgSW52b2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlczogMAotKyAgICAgICAgU3dhcHM6IDAKLSsgICAgICAgIEZpbGUgc3lzdGVtIGlucHV0czogMwotKyAgICAgICAgRmlsZSBzeXN0ZW0gb3V0cHV0czogMQotKyAgICAgICAgU29ja2V0IG1lc3NhZ2VzIHNlbnQ6IDAKLSsgICAgICAgIFNvY2tldCBtZXNzYWdlcyByZWNlaXZlZDogMAotKyAgICAgICAgU2lnbmFscyBkZWxpdmVyZWQ6IDEKLSsgICAgICAgIFBhZ2Ugc2l6ZSAoYnl0ZXMpOiA0MDk2Ci0rICAgICAgICBFeGl0IHN0YXR1czogMAotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotKzxBIE5BTUU9IkFjY3VyYWN5Ij48L0E+Ci0rPEhSIFNJWkU9IjYiPgotKzxBIE5BTUU9IlNFQzEwIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM5Ij4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMSI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMj4gMS41IEFjY3VyYWN5IDwvSDI+Ci0rPCEtLWRvY2lkOjpTRUMxMDo6LS0+Ci0rPFA+Ci0rCi0rVGhlIGVsYXBzZWQgdGltZSBpcyBub3QgY29sbGVjdGVkIGF0b21pY2FsbHkgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIHRoZQotK3Byb2dyYW07IGFzIGEgcmVzdWx0LCBpbiBiaXphcnJlIGNpcmN1bXN0YW5jZXMgKGlmIHRoZSA8Q09ERT50aW1lPC9DT0RFPgotK2NvbW1hbmQgZ2V0cyBzdG9wcGVkIG9yIHN3YXBwZWQgb3V0IGluIGJldHdlZW4gd2hlbiB0aGUgcHJvZ3JhbSBiZWluZwotK3RpbWVkIGV4aXRzIGFuZCB3aGVuIDxDT0RFPnRpbWU8L0NPREU+IGNhbGN1bGF0ZXMgaG93IGxvbmcgaXQgdG9vayB0byBydW4pLCBpdAotK2NvdWxkIGJlIG11Y2ggbGFyZ2VyIHRoYW4gdGhlIGFjdHVhbCBleGVjdXRpb24gdGltZS4KLSs8L1A+Ci0rPFA+Ci0rCi0rV2hlbiB0aGUgcnVubmluZyB0aW1lIG9mIGEgY29tbWFuZCBpcyB2ZXJ5IG5lYXJseSB6ZXJvLCBzb21lIHZhbHVlcwotKyhlLmcuLCB0aGUgcGVyY2VudGFnZSBvZiBDUFUgdXNlZCkgbWF5IGJlIHJlcG9ydGVkIGFzIGVpdGhlciB6ZXJvICh3aGljaAotK2lzIHdyb25nKSBvciBhIHF1ZXN0aW9uIG1hcmsuCi0rPC9QPgotKzxQPgotKwotK01vc3QgaW5mb3JtYXRpb24gc2hvd24gYnkgPENPREU+dGltZTwvQ09ERT4gaXMgZGVyaXZlZCBmcm9tIHRoZSA8Q09ERT53YWl0MzwvQ09ERT4KLStzeXN0ZW0gY2FsbC4gIFRoZSBudW1iZXJzIGFyZSBvbmx5IGFzIGdvb2QgYXMgdGhvc2UgcmV0dXJuZWQgYnkKLSs8Q09ERT53YWl0MzwvQ09ERT4uICBNYW55IHN5c3RlbXMgZG8gbm90IG1lYXN1cmUgYWxsIG9mIHRoZSByZXNvdXJjZXMgdGhhdAotKzxDT0RFPnRpbWU8L0NPREU+IGNhbiByZXBvcnQgb247IHRob3NlIHJlc291cmNlcyBhcmUgcmVwb3J0ZWQgYXMgemVyby4gIFRoZQotK3N5c3RlbXMgdGhhdCBtZWFzdXJlIG1vc3Qgb3IgYWxsIG9mIHRoZSByZXNvdXJjZXMgYXJlIGJhc2VkIG9uIDQuMiBvcgotKzQuM0JTRC4gIExhdGVyIEJTRCByZWxlYXNlcyB1c2UgZGlmZmVyZW50IG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUgdGhhdAotK21lYXN1cmVzIGZld2VyIHJlc291cmNlcy4KLSs8L1A+Ci0rPFA+Ci0rCi0rT24gc3lzdGVtcyB0aGF0IGRvIG5vdCBoYXZlIGEgPENPREU+d2FpdDM8L0NPREU+IGNhbGwgdGhhdCByZXR1cm5zIHN0YXR1cwotK2luZm9ybWF0aW9uLCB0aGUgPENPREU+dGltZXM8L0NPREU+IHN5c3RlbSBjYWxsIGlzIHVzZWQgaW5zdGVhZC4gIEl0IHByb3ZpZGVzCi0rbXVjaCBsZXNzIGluZm9ybWF0aW9uIHRoYW4gPENPREU+d2FpdDM8L0NPREU+LCBzbyBvbiB0aG9zZSBzeXN0ZW1zIDxDT0RFPnRpbWU8L0NPREU+Ci0rcmVwb3J0cyBtb3N0IG9mIHRoZSByZXNvdXJjZXMgYXMgemVyby4KLSs8L1A+Ci0rPFA+Ci0rCi0rVGhlIGA8U0FNUD4lSTwvU0FNUD4nIGFuZCBgPFNBTVA+JU88L1NBTVA+JyB2YWx1ZXMgYXJlIGFsbGVnZWRseSBvbmx5ICZxdW90O3JlYWwmcXVvdDsgaW5wdXQKLSthbmQgb3V0cHV0IGFuZCBkbyBub3QgaW5jbHVkZSB0aG9zZSBzdXBwbGllZCBieSBjYWNoaW5nIGRldmljZXMuICBUaGUKLSttZWFuaW5nIG9mICZxdW90O3JlYWwmcXVvdDsgSS9PIHJlcG9ydGVkIGJ5IGA8U0FNUD4lSTwvU0FNUD4nIGFuZCBgPFNBTVA+JU88L1NBTVA+JyBtYXkgYmUKLSttdWRkbGVkIGZvciB3b3Jrc3RhdGlvbnMsIGVzcGVjaWFsbHkgZGlza2xlc3Mgb25lcy4KLSs8L1A+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iSW52b2tpbmcgdGltZSI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUMxMSI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPiAmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgyPiAxLjYgUnVubmluZyB0aGUgPENPREU+dGltZTwvQ09ERT4gQ29tbWFuZCA8L0gyPgotKzwhLS1kb2NpZDo6U0VDMTE6Oi0tPgotKzxQPgotKwotK1RoZSBmb3JtYXQgb2YgdGhlIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQgaXM6Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT50aW1lIFtvcHRpb248c21hbGw+Li4uPC9zbWFsbD5dIDxWQVI+Y29tbWFuZDwvVkFSPiBbPFZBUj5hcmc8L1ZBUj48c21hbGw+Li4uPC9zbWFsbD5dCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rPEEgTkFNRT0iSURYNSI+PC9BPgotKzxDT0RFPnRpbWU8L0NPREU+IHJ1bnMgdGhlIHByb2dyYW0gPFZBUj5jb21tYW5kPC9WQVI+LCB3aXRoIGFueSBnaXZlbiBhcmd1bWVudHMKLSs8VkFSPmFyZzwvVkFSPjxzbWFsbD4uLi48L3NtYWxsPi4gIFdoZW4gPFZBUj5jb21tYW5kPC9WQVI+IGZpbmlzaGVzLCA8Q09ERT50aW1lPC9DT0RFPiBkaXNwbGF5cwotK2luZm9ybWF0aW9uIGFib3V0IHJlc291cmNlcyB1c2VkIGJ5IDxWQVI+Y29tbWFuZDwvVkFSPiAob24gdGhlIHN0YW5kYXJkIGVycm9yCi0rb3V0cHV0LCBieSBkZWZhdWx0KS4gIElmIDxWQVI+Y29tbWFuZDwvVkFSPiBleGl0cyB3aXRoIG5vbi16ZXJvIHN0YXR1cyBvciBpcwotK3Rlcm1pbmF0ZWQgYnkgYSBzaWduYWwsIDxDT0RFPnRpbWU8L0NPREU+IGRpc3BsYXlzIGEgd2FybmluZyBtZXNzYWdlIGFuZCB0aGUKLStleGl0IHN0YXR1cyBvciBzaWduYWwgbnVtYmVyLgotKzwvUD4KLSs8UD4KLSsKLStPcHRpb25zIHRvIDxDT0RFPnRpbWU8L0NPREU+IG11c3QgYXBwZWFyIG9uIHRoZSBjb21tYW5kIGxpbmUgYmVmb3JlCi0rPFZBUj5jb21tYW5kPC9WQVI+LiAgQW55dGhpbmcgb24gdGhlIGNvbW1hbmQgbGluZSBhZnRlciA8VkFSPmNvbW1hbmQ8L1ZBUj4gaXMKLStwYXNzZWQgYXMgYXJndW1lbnRzIHRvIDxWQVI+Y29tbWFuZDwvVkFSPi4KLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT4tbyA8VkFSPmZpbGU8L1ZBUj48L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLW91dHB1dD08VkFSPmZpbGU8L1ZBUj48L0NPREU+Ci0rPEREPldyaXRlIHRoZSByZXNvdXJjZSB1c2Ugc3RhdGlzdGljcyB0byA8VkFSPmZpbGU8L1ZBUj4uCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tYTwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tYXBwZW5kPC9DT0RFPgotKzxERD48RU0+QXBwZW5kPC9FTT4gdGhlIHJlc291cmNlIHVzZSBpbmZvcm1hdGlvbiB0byB0aGUgb3V0cHV0IGZpbGUgaW5zdGVhZAotK29mIG92ZXJ3cml0aW5nIGl0LgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LWYgPFZBUj5mb3JtYXQ8L1ZBUj48L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLWZvcm1hdD08VkFSPmZvcm1hdDwvVkFSPjwvQ09ERT4KLSs8REQ+VXNlIDxWQVI+Zm9ybWF0PC9WQVI+IGFzIHRoZSBmb3JtYXQgc3RyaW5nLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LS1oZWxwPC9DT0RFPgotKzxERD5QcmludCBhIHN1bW1hcnkgb2YgdGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIDxDT0RFPnRpbWU8L0NPREU+IGFuZCBleGl0LgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LXA8L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLXBvcnRhYmlsaXR5PC9DT0RFPgotKzxERD5Vc2UgdGhlIFBPU0lYIGZvcm1hdC4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPi12PC9DT0RFPgotKzxERD48RFQ+PENPREU+LS12ZXJib3NlPC9DT0RFPgotKzxERD48QSBOQU1FPSJJRFg2Ij48L0E+Ci0rVXNlIHRoZSBidWlsdC1pbiB2ZXJib3NlIGZvcm1hdC4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPi1WPC9DT0RFPgotKzxERD48RFQ+PENPREU+LS12ZXJzaW9uPC9DT0RFPgotKzxERD48QSBOQU1FPSJJRFg3Ij48L0E+Ci0rUHJpbnQgdGhlIHZlcnNpb24gbnVtYmVyIG9mIDxDT0RFPnRpbWU8L0NPREU+IGFuZCBleGl0LgotKzwvREw+Ci0rPFA+Ci0rCi0rPEhSIFNJWkU9IjYiPgotKzxBIE5BTUU9IlNFQ19Db250ZW50cyI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDE+VGFibGUgb2YgQ29udGVudHM8L0gxPgotKzxCTE9DS1FVT1RFPgotKzxBIE5BTUU9IlRPQzEiIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4xLiBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L0E+Ci0rPEJSPgotKzxCTE9DS1FVT1RFPgotKzxBIE5BTUU9IlRPQzIiIEhSRUY9InRpbWUuaHRtbCNTRUMyIj4xLjEgU2V0dGluZyB0aGUgT3V0cHV0IEZvcm1hdDwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DMyIgSFJFRj0idGltZS5odG1sI1NFQzMiPjEuMiBUaGUgRm9ybWF0IFN0cmluZzwvQT4KLSs8QlI+Ci0rPEJMT0NLUVVPVEU+Ci0rPEEgTkFNRT0iVE9DNCIgSFJFRj0idGltZS5odG1sI1NFQzQiPjEuMi4xIFRpbWUgUmVzb3VyY2VzPC9BPgotKzxCUj4KLSs8QSBOQU1FPSJUT0M1IiBIUkVGPSJ0aW1lLmh0bWwjU0VDNSI+MS4yLjIgTWVtb3J5IFJlc291cmNlczwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DNiIgSFJFRj0idGltZS5odG1sI1NFQzYiPjEuMi4zIEkvTyBSZXNvdXJjZXM8L0E+Ci0rPEJSPgotKzxBIE5BTUU9IlRPQzciIEhSRUY9InRpbWUuaHRtbCNTRUM3Ij4xLjIuNCBDb21tYW5kIEluZm88L0E+Ci0rPEJSPgotKzwvQkxPQ0tRVU9URT4KLSs8QSBOQU1FPSJUT0M4IiBIUkVGPSJ0aW1lLmh0bWwjU0VDOCI+MS4zIFJlZGlyZWN0aW5nIE91dHB1dDwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DOSIgSFJFRj0idGltZS5odG1sI1NFQzkiPjEuNCBFeGFtcGxlczwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DMTAiIEhSRUY9InRpbWUuaHRtbCNTRUMxMCI+MS41IEFjY3VyYWN5PC9BPgotKzxCUj4KLSs8QSBOQU1FPSJUT0MxMSIgSFJFRj0idGltZS5odG1sI1NFQzExIj4xLjYgUnVubmluZyB0aGUgPENPREU+dGltZTwvQ09ERT4gQ29tbWFuZDwvQT4KLSs8QlI+Ci0rPC9CTE9DS1FVT1RFPgotKzwvQkxPQ0tRVU9URT4KLSs8SFIgU0laRT0xPgotKzxBIE5BTUU9IlNFQ19PVkVSVklFVyI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDE+U2hvcnQgVGFibGUgb2YgQ29udGVudHM8L0gxPgotKzxCTE9DS1FVT1RFPgotKzxBIE5BTUU9IlRPQzEiIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4xLiBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L0E+Ci0rPEJSPgotKwotKzwvQkxPQ0tRVU9URT4KLSs8SFIgU0laRT0xPgotKzxBIE5BTUU9IlNFQ19BYm91dCI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDE+QWJvdXQgdGhpcyBkb2N1bWVudDwvSDE+Ci0rVGhpcyBkb2N1bWVudCB3YXMgZ2VuZXJhdGVkCi0rYnkgCi0rdXNpbmcgPEEgSFJFRj0iaHR0cDovL3RleGkyaHRtbC5jdnNob21lLm9yZyI+PEk+dGV4aTJodG1sPC9JPjwvQT4KLSs8UD48L1A+Ci0rVGhlIGJ1dHRvbnMgaW4gdGhlIG5hdmlnYXRpb24gcGFuZWxzIGhhdmUgdGhlIGZvbGxvd2luZyBtZWFuaW5nOgotKzxQPjwvUD4KLSs8dGFibGUgYm9yZGVyID0gIjEiPgotKzxUUj4KLSs8VEg+IEJ1dHRvbiA8L1RIPgotKzxUSD4gTmFtZSA8L1RIPgotKzxUSD4gR28gdG8gPC9USD4KLSs8VEg+IEZyb20gMS4yLjMgZ28gdG88L1RIPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgWyAmbHQ7IF0gPC9URD4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rQmFjawotKzwvVEQ+Ci0rPFREPgotK3ByZXZpb3VzIHNlY3Rpb24gaW4gcmVhZGluZyBvcmRlcgotKzwvVEQ+Ci0rPFREPgotKzEuMi4yCi0rPC9URD4KLSs8L1RSPgotKzxUUj4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rIFsgJmd0OyBdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK0ZvcndhcmQKLSs8L1REPgotKzxURD4KLStuZXh0IHNlY3Rpb24gaW4gcmVhZGluZyBvcmRlcgotKzwvVEQ+Ci0rPFREPgotKzEuMi40Ci0rPC9URD4KLSs8L1RSPgotKzxUUj4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rIFsgJmx0OyZsdDsgXSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStGYXN0QmFjawotKzwvVEQ+Ci0rPFREPgotK2JlZ2lubmluZyBvZiB0aGlzIGNoYXB0ZXIgb3IgcHJldmlvdXMgY2hhcHRlcgotKzwvVEQ+Ci0rPFREPgotKzEKLSs8L1REPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgWyBVcCBdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK1VwCi0rPC9URD4KLSs8VEQ+Ci0rdXAgc2VjdGlvbgotKzwvVEQ+Ci0rPFREPgotKzEuMgotKzwvVEQ+Ci0rPC9UUj4KLSs8VFI+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotKyBbICZndDsmZ3Q7IF0gPC9URD4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rRmFzdEZvcndhcmQKLSs8L1REPgotKzxURD4KLStuZXh0IGNoYXB0ZXIKLSs8L1REPgotKzxURD4KLSsyCi0rPC9URD4KLSs8L1RSPgotKzxUUj4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rIFtUb3BdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK1RvcAotKzwvVEQ+Ci0rPFREPgotK2NvdmVyICh0b3ApIG9mIGRvY3VtZW50Ci0rPC9URD4KLSs8VEQ+Ci0rICZuYnNwOyAKLSs8L1REPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgW0NvbnRlbnRzXSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStDb250ZW50cwotKzwvVEQ+Ci0rPFREPgotK3RhYmxlIG9mIGNvbnRlbnRzCi0rPC9URD4KLSs8VEQ+Ci0rICZuYnNwOyAKLSs8L1REPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgW0luZGV4XSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStJbmRleAotKzwvVEQ+Ci0rPFREPgotK2NvbmNlcHQgaW5kZXgKLSs8L1REPgotKzxURD4KLSsgJm5ic3A7IAotKzwvVEQ+Ci0rPC9UUj4KLSs8VFI+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotKyBbID8gXSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStBYm91dAotKzwvVEQ+Ci0rPFREPgotK3RoaXMgcGFnZQotKzwvVEQ+Ci0rPFREPgotKyAmbmJzcDsgCi0rPC9URD4KLSs8L1RSPgotKzwvVEFCTEU+Ci0rICAgIDxQPgotKyAgICAgIHdoZXJlIHRoZSA8U1RST05HPiBFeGFtcGxlIDwvU1RST05HPiBhc3N1bWVzIHRoYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24KLSsgICAgICBpcyBhdCA8U1RST05HPiBTdWJzdWJzZWN0aW9uIE9uZS1Ud28tVGhyZWUgPC9TVFJPTkc+IG9mIGEgZG9jdW1lbnQgb2YKLSsgICAgICB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L1A+Ci0rICAgIDxVTD4KLSsgICAgICA8TEk+IDEuIFNlY3Rpb24gT25lCi0rICAgICAgICA8VUw+Ci0rICAgICAgICAgIDxMST4xLjEgU3Vic2VjdGlvbiBPbmUtT25lCi0rICAgICAgICAgICAgPFVMPgotKyAgICAgICAgICAgICAgPExJPi4uLjwvTEk+Ci0rICAgICAgICAgICAgPC9VTD4KLSsgICAgICAgICAgPExJPjEuMiBTdWJzZWN0aW9uIE9uZS1Ud28KLSsgICAgICAgICAgICA8VUw+Ci0rICAgICAgICAgICAgICA8TEk+MS4yLjEgU3Vic3Vic2VjdGlvbiBPbmUtVHdvLU9uZTwvTEk+Ci0rICAgICAgICAgICAgICA8TEk+MS4yLjIgU3Vic3Vic2VjdGlvbiBPbmUtVHdvLVR3bzwvTEk+Ci0rICAgICAgICAgICAgICA8TEk+MS4yLjMgU3Vic3Vic2VjdGlvbiBPbmUtVHdvLVRocmVlICZuYnNwOyAmbmJzcDsKLSsgICAgICAgICAgICAgICAgPFNUUk9ORz4mbHQ7PT0gQ3VycmVudCBQb3NpdGlvbiA8L1NUUk9ORz48L0xJPgotKyAgICAgICAgICAgICAgPExJPjEuMi40IFN1YnN1YnNlY3Rpb24gT25lLVR3by1Gb3VyPC9MST4KLSsgICAgICAgICAgICA8L1VMPgotKyAgICAgICAgICA8L0xJPgotKyAgICAgICAgICA8TEk+MS4zIFN1YnNlY3Rpb24gT25lLVRocmVlCi0rICAgICAgICAgICAgPFVMPgotKyAgICAgICAgICAgICAgPExJPi4uLjwvTEk+Ci0rICAgICAgICAgICAgPC9VTD4KLSsgICAgICAgICAgPC9MST4KLSsgICAgICAgICAgPExJPjEuNCBTdWJzZWN0aW9uIE9uZS1Gb3VyPC9MST4KLSsgICAgICAgIDwvVUw+Ci0rICAgICAgPC9MST4KLSsgICAgPC9VTD4KLSsKLSs8SFIgU0laRT0xPgotKzxCUj4KLSs8Rk9OVCBTSVpFPSItMSI+Ci0rVGhpcyBkb2N1bWVudCB3YXMgZ2VuZXJhdGVkCi0rYnkgPEk+cm9vdDwvST4gb24gPEk+U2VwdGVtYmVyLCAxIDIwMDM8L0k+Ci0rdXNpbmcgPEEgSFJFRj0iaHR0cDovL3RleGkyaHRtbC5jdnNob21lLm9yZyI+PEk+dGV4aTJodG1sPC9JPjwvQT4KLSs8L0ZPTlQ+Ci0rCi0rPC9CT0RZPgotKzwvSFRNTD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIyMGQ3Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2wgdGhhdCBtZWFzdXJlcyBDUFUgcmVzb3VyY2VzIgotREVTQ1JJUFRJT04gPSAidGltZSBtZWFzdXJlcyBtYW55IG9mIHRoZSBDUFUgcmVzb3VyY2VzLCBzdWNoIGFzIHRpbWUgYW5kIFwKLW1lbW9yeSwgdGhhdCBvdGhlciBwcm9ncmFtcyB1c2UuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RpbWUvIgotU0VDVElPTiA9ICJ1dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIiCi0KLWluaGVyaXQgdGV4aW5mbyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gInRpbWUiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJjNTM1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHRpbWUuaW5jCi0KLVBSID0gInIyIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGltZS90aW1lLSR7UFZ9LnRhci5neiBcCi0JICAgZmlsZTovL2RlYmlhbi5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImUzOGQyYjhiMzRiMWNhMjU5Y2Y3YjA1M2NhYWMzMmIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzN2VhNzlhMjUzYmY4NWE4NWFkYTJmN2M2MzJjMTRlNDgxYTVmZDI2MmEzNjJmNmY0ZmQ1OGU2ODYwMTQ5NmQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIzMTQ3YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuOC5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIlRvb2wgdGhhdCBtZWFzdXJlcyBDUFUgcmVzb3VyY2VzIgorREVTQ1JJUFRJT04gPSAidGltZSBtZWFzdXJlcyBtYW55IG9mIHRoZSBDUFUgcmVzb3VyY2VzLCBzdWNoIGFzIHRpbWUgYW5kIFwKK21lbW9yeSwgdGhhdCBvdGhlciBwcm9ncmFtcyB1c2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RpbWUvIgorU0VDVElPTiA9ICJ1dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworaW5oZXJpdCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAidGltZSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGltZS90aW1lLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjRlMDBkY2I4YzNhYjExYzdjZjVhMGQ2OTg4MjhhYzk2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhMmY1NDAxNTU5NjFhMzViYTliODRhZWM1ZTc3ZTNhZTM2Yzc0Y2VjYjQ0ODRkYjQ1NTk2MDYwMWI3YTJlMWIiCisKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAxLUZpeC1NYWtlZmlsZS1xdW90aW5nLWJ1Zy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDEtRml4LU1ha2VmaWxlLXF1b3RpbmctYnVnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDlmYTA5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDEtRml4LU1ha2VmaWxlLXF1b3RpbmctYnVnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLUZyb20gYjUyMGQyMGI4MTIyYTc4M2Y5OWYwODg3NThiNzhkOTI4ZjcwZWUzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjQyOjQ1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBNYWtlZmlsZSBxdW90aW5nIGJ1ZwotCi1Qcm9ibGVtIHdpdGggSU5TVEFMTEFSR1MgcmVwb3J0ZWQgYnkgWmVmcmFtIGluOgotaHR0cHM6Ly9tbS5pY2Fubi5vcmcvcGlwZXJtYWlsL3R6LzIwMTctT2N0b2Jlci8wMjUzNjAuaHRtbAotRml4IHNpbWlsYXIgcHJvYmxlbXMgdG9vLgotKiBNYWtlZmlsZSAoWklDX0lOU1RBTEwsIFZBTElEQVRFX0VOViwgQ0MsIGluc3RhbGwpCi0oSU5TVEFMTCwgdmVyc2lvbiwgSU5TVEFMTEFSR1MsIHJpZ2h0X3Bvc2l4LCBwb3NpeF9yaWdodCkKLShjaGVja19wdWJsaWMpOiBVc2UgYXBvc3Ryb3BoZXMgdG8gcHJldmVudCB1bmRlc2lyYWJsZQotaW50ZXJwcmV0YXRpb24gb2YgbmFtZXMgYnkgdGhlIHNoZWxsLiAgV2Ugc3RpbGwgZG8gbm90IHN1cHBvcnQKLWRpcmVjdG9yeSBuYW1lcyBjb250YWluaW5nIGFwb3N0cm9waGVzIG9yIG5ld2xpbmVzLCBidXQgdGhpcyBpcwotZ29vZCBlbm91Z2guCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0qIE5FV1M6IE1lbnRpb24gdGhpcy4KLS0tLQotIE1ha2VmaWxlIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIE5FV1MgICAgIHwgIDggKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggYzkyZWRjMC4uOTc2NDljYSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTMxMyw3ICszMTMsNyBAQCBaRkxBR1M9Ci0gCi0gIyBIb3cgdG8gdXNlIHppYyB0byBpbnN0YWxsIHR6IGJpbmFyeSBmaWxlcy4KLSAKLS1aSUNfSU5TVEFMTD0JJChaSUMpIC1kICQoREVTVERJUikkKFRaRElSKSAkKExFQVBTRUNPTkRTKQotK1pJQ19JTlNUQUxMPQkkKFpJQykgLWQgJyQoREVTVERJUikkKFRaRElSKScgJChMRUFQU0VDT05EUykKLSAKLSAjIFRoZSBuYW1lIG9mIGEgUG9zaXgtY29tcGxpYW50ICdhd2snIG9uIHlvdXIgc3lzdGVtLgotIEFXSz0JCWF3awotQEAgLTM0MSw4ICszNDEsOCBAQCBTR01MX0NBVEFMT0dfRklMRVM9IFwKLSBWQUxJREFURSA9IG5zZ21scwotIFZBTElEQVRFX0ZMQUdTID0gLXMgLUIgLXdhbGwgLXduby11bnVzZWQtcGFyYW0KLSBWQUxJREFURV9FTlYgPSBcCi0tICBTR01MX0NBVEFMT0dfRklMRVM9JChTR01MX0NBVEFMT0dfRklMRVMpIFwKLS0gIFNHTUxfU0VBUkNIX1BBVEg9JChTR01MX1NFQVJDSF9QQVRIKSBcCi0rICBTR01MX0NBVEFMT0dfRklMRVM9JyQoU0dNTF9DQVRBTE9HX0ZJTEVTKScgXAotKyAgU0dNTF9TRUFSQ0hfUEFUSD0nJChTR01MX1NFQVJDSF9QQVRIKScgXAotICAgU1BfQ0hBUlNFVF9GSVhFRD1ZRVMgXAotICAgU1BfRU5DT0RJTkc9VVRGLTgKLSAKLUBAIC0zOTYsNyArMzk2LDcgQEAgR1pJUEZMQUdTPQktOW4KLSAjTUFLRT0JCW1ha2UKLSAKLSBjYz0JCWNjCi0tQ0M9CQkkKGNjKSAtRFRaRElSPVwiJChUWkRJUilcIgotK0NDPQkJJChjYykgLURUWkRJUj0nIiQoVFpESVIpIicKLSAKLSBBUj0JCWFyCi0gCi1AQCAtNDczLDI5ICs0NzMsMjkgQEAgYWxsOgkJdHpzZWxlY3QgeWVhcmlzdHlwZSB6aWMgemR1bXAgbGlidHouYSAkKFRBQkRBVEEpCi0gQUxMOgkJYWxsIGRhdGUgJChFTkNISUxBREEpCi0gCi0gaW5zdGFsbDoJYWxsICQoREFUQSkgJChSRURPKSAkKE1BTlMpCi0tCQlta2RpciAtcCAkKERFU1RESVIpJChFVENESVIpICQoREVTVERJUikkKFRaRElSKSBcCi0tCQkJJChERVNURElSKSQoTElCRElSKSBcCi0tCQkJJChERVNURElSKSQoTUFORElSKS9tYW4zICQoREVTVERJUikkKE1BTkRJUikvbWFuNSBcCi0tCQkJJChERVNURElSKSQoTUFORElSKS9tYW44Ci0rCQlta2RpciAtcCAnJChERVNURElSKSQoRVRDRElSKScgJyQoREVTVERJUikkKFRaRElSKScgXAotKwkJCSckKERFU1RESVIpJChMSUJESVIpJyBcCi0rCQkJJyQoREVTVERJUikkKE1BTkRJUikvbWFuMycgJyQoREVTVERJUikkKE1BTkRJUikvbWFuNScgXAotKwkJCSckKERFU1RESVIpJChNQU5ESVIpL21hbjgnCi0gCQkkKFpJQ19JTlNUQUxMKSAtbCAkKExPQ0FMVElNRSkgLXAgJChQT1NJWFJVTEVTKQotLQkJY3AgLWYgJChUQUJEQVRBKSAkKERFU1RESVIpJChUWkRJUikvLgotLQkJY3AgdHpzZWxlY3QgemljIHpkdW1wICQoREVTVERJUikkKEVUQ0RJUikvLgotLQkJY3AgbGlidHouYSAkKERFU1RESVIpJChMSUJESVIpLy4KLS0JCSQoUkFOTElCKSAkKERFU1RESVIpJChMSUJESVIpL2xpYnR6LmEKLS0JCWNwIC1mIG5ld2N0aW1lLjMgbmV3dHpzZXQuMyAkKERFU1RESVIpJChNQU5ESVIpL21hbjMvLgotLQkJY3AgLWYgdHpmaWxlLjUgJChERVNURElSKSQoTUFORElSKS9tYW41Ly4KLS0JCWNwIC1mIHR6c2VsZWN0LjggemR1bXAuOCB6aWMuOCAkKERFU1RESVIpJChNQU5ESVIpL21hbjgvLgotKwkJY3AgLWYgJChUQUJEQVRBKSAnJChERVNURElSKSQoVFpESVIpLy4nCi0rCQljcCB0enNlbGVjdCB6aWMgemR1bXAgJyQoREVTVERJUikkKEVUQ0RJUikvLicKLSsJCWNwIGxpYnR6LmEgJyQoREVTVERJUikkKExJQkRJUikvLicKLSsJCSQoUkFOTElCKSAnJChERVNURElSKSQoTElCRElSKS9saWJ0ei5hJwotKwkJY3AgLWYgbmV3Y3RpbWUuMyBuZXd0enNldC4zICckKERFU1RESVIpJChNQU5ESVIpL21hbjMvLicKLSsJCWNwIC1mIHR6ZmlsZS41ICckKERFU1RESVIpJChNQU5ESVIpL21hbjUvLicKLSsJCWNwIC1mIHR6c2VsZWN0LjggemR1bXAuOCB6aWMuOCAnJChERVNURElSKSQoTUFORElSKS9tYW44Ly4nCi0gCi0gSU5TVEFMTDoJQUxMIGluc3RhbGwgZGF0ZS4xCi0tCQlta2RpciAtcCAkKERFU1RESVIpJChCSU5ESVIpICQoREVTVERJUikkKE1BTkRJUikvbWFuMQotLQkJY3AgZGF0ZSAkKERFU1RESVIpJChCSU5ESVIpLy4KLS0JCWNwIC1mIGRhdGUuMSAkKERFU1RESVIpJChNQU5ESVIpL21hbjEvLgotKwkJbWtkaXIgLXAgJyQoREVTVERJUikkKEJJTkRJUiknICckKERFU1RESVIpJChNQU5ESVIpL21hbjEnCi0rCQljcCBkYXRlICckKERFU1RESVIpJChCSU5ESVIpLy4nCi0rCQljcCAtZiBkYXRlLjEgJyQoREVTVERJUikkKE1BTkRJUikvbWFuMS8uJwotIAotIHZlcnNpb246CSQoVkVSU0lPTl9ERVBTKQotIAkJeyAodHlwZSBnaXQpID4vZGV2L251bGwgMj4mMSAmJiBcCi0gCQkgIFY9YGdpdCBkZXNjcmliZSAtLW1hdGNoICdbMC05XVswLTldWzAtOV1bMC05XVthLXpdKicgXAotIAkJCQktLWFiYnJldj03IC0tZGlydHlgIHx8IFwKLS0JCSAgVj0kKFZFUlNJT04pOyB9ICYmIFwKLSsJCSAgVj0nJChWRVJTSU9OKSc7IH0gJiYgXAotIAkJcHJpbnRmICclc1xuJyAiJCRWIiA+JEAub3V0Ci0gCQltdiAkQC5vdXQgJEAKLSAKLUBAIC01MjksMTIgKzUyOSwxMiBAQCBsZWFwc2Vjb25kczoJJChMRUFQX0RFUFMpCi0gIyBBcmd1bWVudHMgdG8gcGFzcyB0byBzdWJtYWtlcyBvZiBpbnN0YWxsX2RhdGEuCi0gIyBUaGV5IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGxhdGVyIHN1Ym1ha2UgYXJndW1lbnRzLgotIElOU1RBTExBUkdTID0gXAotLSBCQUNLV0FSRD0kKEJBQ0tXQVJEKSBcCi0tIERFU1RESVI9JChERVNURElSKSBcCi0rIEJBQ0tXQVJEPSckKEJBQ0tXQVJEKScgXAotKyBERVNURElSPSckKERFU1RESVIpJyBcCi0gIExFQVBTRUNPTkRTPSckKExFQVBTRUNPTkRTKScgXAotICBQQUNLUkFUREFUQT0nJChQQUNLUkFUREFUQSknIFwKLS0gVFpESVI9JChUWkRJUikgXAotLSBZRUFSSVNUWVBFPSQoWUVBUklTVFlQRSkgXAotKyBUWkRJUj0nJChUWkRJUiknIFwKLSsgWUVBUklTVFlQRT0nJChZRUFSSVNUWVBFKScgXAotICBaSUM9JyQoWklDKScKLSAKLSAjICdtYWtlIGluc3RhbGxfZGF0YScgaW5zdGFsbHMgb25lIHNldCBvZiB0eiBiaW5hcnkgZmlsZXMuCi1AQCAtNTU4LDE2ICs1NTgsMTYgQEAgcmlnaHRfb25seToKLSAjIFlvdSBtdXN0IHJlcGxhY2UgYWxsIG9mICQoVFpESVIpIHRvIHN3aXRjaCBmcm9tIG5vdCB1c2luZyBsZWFwIHNlY29uZHMKLSAjIHRvIHVzaW5nIHRoZW0sIG9yIHZpY2UgdmVyc2EuCi0gcmlnaHRfcG9zaXg6CXJpZ2h0X29ubHkKLS0JCXJtIC1mciAkKERFU1RESVIpJChUWkRJUiktbGVhcHMKLS0JCWxuIC1zICQoVFpESVJfQkFTRU5BTUUpICQoREVTVERJUikkKFRaRElSKS1sZWFwcyB8fCBcCi0tCQkgICQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JChUWkRJUiktbGVhcHMgcmlnaHRfb25seQotLQkJJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0kKFRaRElSKS1wb3NpeCBwb3NpeF9vbmx5Ci0rCQlybSAtZnIgJyQoREVTVERJUikkKFRaRElSKS1sZWFwcycKLSsJCWxuIC1zICckKFRaRElSX0JBU0VOQU1FKScgJyQoREVTVERJUikkKFRaRElSKS1sZWFwcycgfHwgXAotKwkJICAkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSckKFRaRElSKS1sZWFwcycgcmlnaHRfb25seQotKwkJJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0nJChUWkRJUiktcG9zaXgnIHBvc2l4X29ubHkKLSAKLSBwb3NpeF9yaWdodDoJcG9zaXhfb25seQotLQkJcm0gLWZyICQoREVTVERJUikkKFRaRElSKS1wb3NpeAotLQkJbG4gLXMgJChUWkRJUl9CQVNFTkFNRSkgJChERVNURElSKSQoVFpESVIpLXBvc2l4IHx8IFwKLS0JCSAgJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0kKFRaRElSKS1wb3NpeCBwb3NpeF9vbmx5Ci0tCQkkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSQoVFpESVIpLWxlYXBzIHJpZ2h0X29ubHkKLSsJCXJtIC1mciAnJChERVNURElSKSQoVFpESVIpLXBvc2l4JwotKwkJbG4gLXMgJyQoVFpESVJfQkFTRU5BTUUpJyAnJChERVNURElSKSQoVFpESVIpLXBvc2l4JyB8fCBcCi0rCQkgICQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JyQoVFpESVIpLXBvc2l4JyBwb3NpeF9vbmx5Ci0rCQkkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSckKFRaRElSKS1sZWFwcycgcmlnaHRfb25seQotIAotICMgVGhpcyBvYnNvbGVzY2VudCBydWxlIGlzIHByZXNlbnQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKLSAjIHR6IHJlbGVhc2VzIDIwMTRnIHRocm91Z2ggMjAxNWcuICBJdCBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5LgotQEAgLTc2NCw3ICs3NjQsNyBAQCBzZXQtdGltZXN0YW1wcy5vdXQ6ICQoRU5DSElMQURBKQotIAotIGNoZWNrX3B1YmxpYzoKLSAJCSQoTUFLRSkgbWFpbnRhaW5lci1jbGVhbgotLQkJJChNQUtFKSAiQ0ZMQUdTPSQoR0NDX0RFQlVHX0ZMQUdTKSIgQUxMCi0rCQkkKE1BS0UpIENGTEFHUz0nJChHQ0NfREVCVUdfRkxBR1MpJyBBTEwKLSAJCW1rZGlyIC1wIHB1YmxpYy5kaXIKLSAJCWZvciBpIGluICQoVERBVEEpIHR6ZGF0YS56aTsgZG8gXAotIAkJICAkKHppYykgLXYgLWQgcHVibGljLmRpciAkJGkgMj4mMSB8fCBleGl0OyBcCi1kaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKLWluZGV4IGJkMmJlYzIuLjc1YWIwOTUgMTAwNjQ0Ci0tLS0gYS9ORVdTCi0rKysgYi9ORVdTCi1AQCAtMSw1ICsxLDEzIEBACi0gTmV3cyBmb3IgdGhlIHR6IGRhdGFiYXNlCi0gCi0rVW5yZWxlYXNlZCwgZXhwZXJpbWVudGFsIGNoYW5nZXMKLSsKLSsgIENoYW5nZXMgdG8gYnVpbGQgcHJvY2VkdXJlCi0rCi0rICAgIFRoZSBNYWtlZmlsZSBub3cgcXVvdGVzIHZhbHVlcyBsaWtlIEJBQ0tXQVJEIG1vcmUgY2FyZWZ1bGx5IHdoZW4KLSsgICAgcGFzc2luZyB0aGVtIHRvIHRoZSBzaGVsbC4gIChQcm9ibGVtIHJlcG9ydGVkIGJ5IFplZnJhbS4pCi0rCi0rCi0gUmVsZWFzZSAyMDE3YyAtIDIwMTctMTAtMjAgMTQ6NDk6MzQgLTA3MDAKLSAKLSAgIEJyaWVmbHk6Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDItUG9ydC16ZHVtcC10by1DOTAtc25wcmludGYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAyLVBvcnQtemR1bXAtdG8tQzkwLXNucHJpbnRmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2FmZTQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDItUG9ydC16ZHVtcC10by1DOTAtc25wcmludGYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotRnJvbSBlMjMxZGE0ZmIyYmViMTdjNjBiNGIxYTVjMjc2MzY2ZDZhNmU0MzNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTc6NTg6MzYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gUG9ydCB6ZHVtcCB0byBDOTAgKyBzbnByaW50ZgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1Qcm9ibGVtIHJlcG9ydGVkIGJ5IEpvbiBTa2VldCBpbjoKLWh0dHBzOi8vbW0uaWNhbm4ub3JnL3BpcGVybWFpbC90ei8yMDE3LU9jdG9iZXIvMDI1MzYyLmh0bWwKLSogTkVXUzogTWVudGlvbiB0aGlzLgotKiB6ZHVtcC5jIChteV9zbnByaW50Zik6IE5ldyBtYWNybyBvciBmdW5jdGlvbi4gIElmIGEgbWFjcm8sIGl0IGlzCi1qdXN0IHNucHJpbnRmLiAgSWYgYSBmdW5jdGlvbiwgaXQgaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCBzbnByaW50Zgotc3RhdGljIGZ1bmN0aW9uLCB3aXRoIGFuIEFUVFJJQlVURV9GT1JNQVQgdG8gcGFjaWZ5IG1vZGVybiBHQ0MuCi1BbGwgdXNlcyBvZiBzbnByaW50ZiBjaGFuZ2VkIHRvIHVzZSBteV9zbnByaW50Zi4gIFRoaXMgd2F5LAotaW5zdGFsbGVycyBkb27igJl0IG5lZWQgdG8gc3BlY2lmeSAtREhBVkVfU05QUklOVEYgaWYgdGhleSBhcmUgdXNpbmcKLWEgcHJlLUM5OSBjb21waWxlciB3aXRoIGEgbGlicmFyeSB0aGF0IGhhcyBzbnByaW50Zi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIE5FV1MgICAgfCAgNCArKysrCi0gemR1bXAuYyB8IDI5ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCi1pbmRleCA3NWFiMDk1Li5kZWEwOGI4IDEwMDY0NAotLS0tIGEvTkVXUwotKysrIGIvTkVXUwotQEAgLTcsNiArNywxMCBAQCBVbnJlbGVhc2VkLCBleHBlcmltZW50YWwgY2hhbmdlcwotICAgICBUaGUgTWFrZWZpbGUgbm93IHF1b3RlcyB2YWx1ZXMgbGlrZSBCQUNLV0FSRCBtb3JlIGNhcmVmdWxseSB3aGVuCi0gICAgIHBhc3NpbmcgdGhlbSB0byB0aGUgc2hlbGwuICAoUHJvYmxlbSByZXBvcnRlZCBieSBaZWZyYW0uKQotIAotKyAgICBCdWlsZGVycyBubyBsb25nZXIgbmVlZCB0byBzcGVjaWZ5IC1ESEFWRV9TTlBSSU5URiBvbiBwbGF0Zm9ybXMKLSsgICAgdGhhdCBoYXZlIHNucHJpbnRmIGFuZCB1c2UgcHJlLUM5OSBjb21waWxlcnMuICAoUHJvYmxlbSByZXBvcnRlZAotKyAgICBieSBKb24gU2tlZXQuKQotKwotIAotIFJlbGVhc2UgMjAxN2MgLSAyMDE3LTEwLTIwIDE0OjQ5OjM0IC0wNzAwCi0gCi1kaWZmIC0tZ2l0IGEvemR1bXAuYyBiL3pkdW1wLmMKLWluZGV4IDhlM2JmM2UuLmQ0ZTYwODQgMTAwNjQ0Ci0tLS0gYS96ZHVtcC5jCi0rKysgYi96ZHVtcC5jCi1AQCAtNzk1LDEyICs3OTUsMTQgQEAgc2hvdyh0aW1lem9uZV90IHR6LCBjaGFyICp6b25lLCB0aW1lX3QgdCwgYm9vbCB2KQotIAkJYWJicm9rKGFiYnIodG1wKSwgem9uZSk7Ci0gfQotIAotLSNpZiAhSEFWRV9TTlBSSU5URgotKyNpZiBIQVZFX1NOUFJJTlRGCi0rIyBkZWZpbmUgbXlfc25wcmludGYgc25wcmludGYKLSsjZWxzZQotICMgaW5jbHVkZSA8c3RkYXJnLmg+Ci0gCi0gLyogQSBzdWJzdGl0dXRlIGZvciBzbnByaW50ZiB0aGF0IGlzIGdvb2QgZW5vdWdoIGZvciB6ZHVtcC4gICovCi0tc3RhdGljIGludAotLXNucHJpbnRmKGNoYXIgKnMsIHNpemVfdCBzaXplLCBjaGFyIGNvbnN0ICpmb3JtYXQsIC4uLikKLStzdGF0aWMgaW50IEFUVFJJQlVURV9GT1JNQVQoKHByaW50ZiwgMywgNCkpCi0rbXlfc25wcmludGYoY2hhciAqcywgc2l6ZV90IHNpemUsIGNoYXIgY29uc3QgKmZvcm1hdCwgLi4uKQotIHsKLSAgIGludCBuOwotICAgdmFfbGlzdCBhcmdzOwotQEAgLTgzOSwxMCArODQxLDEwIEBAIGZvcm1hdF9sb2NhbF90aW1lKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdCB0bSBjb25zdCAqdG0pCi0gewotICAgaW50IHNzID0gdG0tPnRtX3NlYywgbW0gPSB0bS0+dG1fbWluLCBoaCA9IHRtLT50bV9ob3VyOwotICAgcmV0dXJuIChzcwotLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkOiUwMmQiLCBoaCwgbW0sIHNzKQotKwkgID8gbXlfc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkOiUwMmQiLCBoaCwgbW0sIHNzKQotIAkgIDogbW0KLS0JICA/IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiUwMmQ6JTAyZCIsIGhoLCBtbSkKLS0JICA6IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiUwMmQiLCBoaCkpOwotKwkgID8gbXlfc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkIiwgaGgsIG1tKQotKwkgIDogbXlfc25wcmludGYoYnVmLCBzaXplLCAiJTAyZCIsIGhoKSk7Ci0gfQotIAotIC8qIFN0b3JlIGludG8gQlVGLCBvZiBzaXplIFNJWkUsIGEgZm9ybWF0dGVkIFVUQyBvZmZzZXQgZm9yIHRoZQotQEAgLTg3NywxMCArODc5LDEwIEBAIGZvcm1hdF91dGNfb2Zmc2V0KGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdCB0bSBjb25zdCAqdG0sIHRpbWVfdCB0KQotICAgbW0gPSBvZmYgLyA2MCAlIDYwOwotICAgaGggPSBvZmYgLyA2MCAvIDYwOwotICAgcmV0dXJuIChzcyB8fCAxMDAgPD0gaGgKLS0JICA/IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkJTAyZCIsIHNpZ24sIGhoLCBtbSwgc3MpCi0rCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlYyUwMmxkJTAyZCUwMmQiLCBzaWduLCBoaCwgbW0sIHNzKQotIAkgIDogbW0KLS0JICA/IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkIiwgc2lnbiwgaGgsIG1tKQotLQkgIDogc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCIsIHNpZ24sIGhoKSk7Ci0rCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlYyUwMmxkJTAyZCIsIHNpZ24sIGhoLCBtbSkKLSsJICA6IG15X3NucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQiLCBzaWduLCBoaCkpOwotIH0KLSAKLSAvKiBTdG9yZSBpbnRvIEJVRiAob2Ygc2l6ZSBTSVpFKSBhIHF1b3RlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgUC4KLUBAIC05ODMsMTUgKzk4NSwxNiBAQCBpc3RyZnRpbWUoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY2hhciBjb25zdCAqdGltZV9mbXQsCi0gCSAgICBmb3IgKGFicCA9IGFiOyBpc19hbHBoYSgqYWJwKTsgYWJwKyspCi0gCSAgICAgIGNvbnRpbnVlOwotIAkgICAgbGVuID0gKCEqYWJwICYmICphYgotLQkJICAgPyBzbnByaW50ZihiLCBzLCAiJXMiLCBhYikKLSsJCSAgID8gbXlfc25wcmludGYoYiwgcywgIiVzIiwgYWIpCi0gCQkgICA6IGZvcm1hdF9xdW90ZWRfc3RyaW5nKGIsIHMsIGFiKSk7Ci0gCSAgICBpZiAocyA8PSBsZW4pCi0gCSAgICAgIHJldHVybiBmYWxzZTsKLSAJICAgIGIgKz0gbGVuLCBzIC09IGxlbjsKLSAJICB9Ci0tCSAgZm9ybWF0dGVkX2xlbiA9ICh0bS0+dG1faXNkc3QKLS0JCQkgICA/IHNucHJpbnRmKGIsIHMsICYiXHRcdCVkIltzaG93X2FiYnJdLCB0bS0+dG1faXNkc3QpCi0tCQkJICAgOiAwKTsKLSsJICBmb3JtYXR0ZWRfbGVuCi0rCSAgICA9ICh0bS0+dG1faXNkc3QKLSsJICAgICAgID8gbXlfc25wcmludGYoYiwgcywgJiJcdFx0JWQiW3Nob3dfYWJicl0sIHRtLT50bV9pc2RzdCkKLSsJICAgICAgIDogMCk7Ci0gCX0KLSAJYnJlYWs7Ci0gICAgICAgfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThjLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4Yy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVlOWI3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThjLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyBub3RlIHRoYXQgd2UgYWxsb3cgZm9yIHVzIHRvIHVzZSBkYXRhIGxhdGVyIHRoYW4gb3VyIGNvZGUgdmVyc2lvbgotIwotU1VNTUFSWSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgotTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCi0KLVNSQ19VUkkgPSIgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpjb2RlJHtQVn0udGFyLmd6O25hbWU9dHpjb2RlIFwKLSAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIFwKLSAgICAgICAgICAgIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotCi1TUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gImU2ZTBkNGIyY2UzZmE2OTA2ZjMwMzE1N2JlZDI2MTJlIgotU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICIzMWZhN2ZjMGY5NGE2ZmYyZDZiYzg3OGMwYTM1ZThhYjhiNWFhMGU4YjAxNDQ1YTFkNGE4ZjE0Nzc3ZDBlNjY1IgotU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICJjNDEyYjE1MzFhZGVmMWJlN2E2NDVhYjczNGY4NmFjYyIKLVNSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiMjgyNWMzZTRiN2VmNTIwZjI0ZDM5M2JjYzAyOTQyZjk3NjJmZmQzZTdmYzliMjM4NTA3ODllZDhmMjI5MzNmNiIKLQotUyA9ICIke1dPUktESVJ9IgotCi1pbmhlcml0IG5hdGl2ZQotCi1FWFRSQV9PRU1BS0UgKz0gImNjPScke0NDfSciCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4ZC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkzM2E1ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGQuYmIKQEAgLTAsMCArMSwzMCBAQAorIyBub3RlIHRoYXQgd2UgYWxsb3cgZm9yIHVzIHRvIHVzZSBkYXRhIGxhdGVyIHRoYW4gb3VyIGNvZGUgdmVyc2lvbgorIworU1VNTUFSWSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgorTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCisKK1NSQ19VUkkgPSIgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpjb2RlJHtQVn0udGFyLmd6O25hbWU9dHpjb2RlIFwKKyAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIFwKKyAgICAgICAgICAgIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgorCitTUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gIjk2NjEyYjRmNWQ3ZTg4MDRmZDlhMDk4MWMwMjFiZTkwIgorU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICI3ZGU0NGU4NWJhYWQ3NDhkMjE3ZTNmZDYwNzA2ZjU5OWY5YWVjNjhiY2U2MzU2YjE2M2Y1MmIwZGJkNDBhOGQ5IgorU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICI4NzFhN2VmODA4ZWI0MmViYzU1MWFjZGIzZDY2MTU1NCIKK1NSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiNTEwNmVkZGNlYjVmMWFlM2E5MWRiZDM5NjBlMWI4YjExYmEwZGMwODU3OWEzMWNmMDcyNGE3NjkxYjEwYzA1NCIKKworUyA9ICIke1dPUktESVJ9IgorCitpbmhlcml0IG5hdGl2ZQorCitFWFRSQV9PRU1BS0UgKz0gImNjPScke0NDfSciCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThjLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThjLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjVlYzFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE4Yy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1TVU1NQVJZID0gIlRpbWV6b25lIGRhdGEiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCi0KLURFUEVORFMgPSAidHpjb2RlLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotCi1TUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gImM0MTJiMTUzMWFkZWYxYmU3YTY0NWFiNzM0Zjg2YWNjIgotU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICIyODI1YzNlNGI3ZWY1MjBmMjRkMzkzYmNjMDI5NDJmOTc2MmZmZDNlN2ZjOWIyMzg1MDc4OWVkOGYyMjkzM2Y2IgotCi1pbmhlcml0IGFsbGFyY2gKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJ0aW1lem9uZXMgdGltZXpvbmUtYWZyaWNhIHRpbWV6b25lLWFtZXJpY2EgdGltZXpvbmUtYW50YXJjdGljYSBcCi0gICAgICAgICAgICAgdGltZXpvbmUtYXJjdGljIHRpbWV6b25lLWFzaWEgdGltZXpvbmUtYXRsYW50aWMgXAotICAgICAgICAgICAgIHRpbWV6b25lLWF1c3RyYWxpYSB0aW1lem9uZS1ldXJvcGUgdGltZXpvbmUtaW5kaWFuIFwKLSAgICAgICAgICAgICB0aW1lem9uZS1pc28zMTY2LnRhYiB0aW1lem9uZS1wYWNpZmljIHRpbWV6b25lLXpvbmUudGFiIgotCi1TID0gIiR7V09SS0RJUn0iCi0KLURFRkFVTFRfVElNRVpPTkUgPz0gIlVuaXZlcnNhbCIKLUlOU1RBTExfVElNRVpPTkVfRklMRSA/PSAiMSIKLQotVFpPTkVTPSAiYWZyaWNhIGFudGFyY3RpY2EgYXNpYSBhdXN0cmFsYXNpYSBldXJvcGUgbm9ydGhhbWVyaWNhIHNvdXRoYW1lcmljYSAgXAotICAgICAgICAgZmFjdG9yeSBldGNldGVyYSBiYWNrd2FyZCBzeXN0ZW12IFwKLSAgICAgICAgIgotIyBwYWNpZmljbmV3IAotCi1kb19jb21waWxlICgpIHsKLSAgICAgICAgZm9yIHpvbmUgaW4gJHtUWk9ORVN9OyBkbyBcCi0gICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvIC1MIC9kZXYvbnVsbCBcCi0gICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKLSAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXggLUwgL2Rldi9udWxsIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9yaWdodCAtTCAke1N9L2xlYXBzZWNvbmRzIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICBkb25lCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJGV4ZWNfcHJlZml4ICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUFIgJHtTfS8kZXhlY19wcmVmaXggJHtEfS8KLSAgICAgICAgIyBsaWJjIGlzIHJlbW92aW5nIHpvbmVpbmZvIGZpbGVzIGZyb20gcGFja2FnZQotICAgICAgICBjcCAtcFAgIiR7U30vem9uZS50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUCAiJHtTfS96b25lMTk3MC50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUCAiJHtTfS9pc28zMTY2LnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLQotICAgICAgICAjIEluc3RhbGwgZGVmYXVsdCB0aW1lem9uZQotICAgICAgICBpZiBbIC1lICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gXTsgdGhlbgotICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotICAgICAgICAgICAgaWYgWyAiJHtJTlNUQUxMX1RJTUVaT05FX0ZJTEV9IiA9ICIxIiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgZWNobyAke0RFRkFVTFRfVElNRVpPTkV9ID4gJHtEfSR7c3lzY29uZmRpcn0vdGltZXpvbmUKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBsbiAtcyAke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gJHtEfSR7c3lzY29uZmRpcn0vbG9jYWx0aW1lCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJiZXJyb3IgIkRFRkFVTFRfVElNRVpPTkUgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuIgotICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgIGZpCi0KLSAgICAgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlldGNfbHQ9IiREJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCi0Jc3JjPSIkRCR7c3lzY29uZmRpcn0vdGltZXpvbmUiCi0KLQlpZiBbIC1lICR7c3JjfSBdIDsgdGhlbgotCQl0ej0kKHNlZCAtZSAnczojLio6OicgLWUgJ3M6W1s6c3BhY2U6XV0qOjpnJyAtZSAnL14kL2QnICIke3NyY30iKQotCWZpCi0JCi0JaWYgWyAteiAiJHt0en0iIF0gOyB0aGVuCi0JCWV4aXQgMAotCWZpCi0JCi0JaWYgWyAhIC1lICIkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iIF0gOyB0aGVuCi0JCWVjaG8gIllvdSBoYXZlIGFuIGludmFsaWQgVElNRVpPTkUgc2V0dGluZyBpbiAke3NyY30iCi0JCWVjaG8gIllvdXIgJHtldGNfbHR9IGhhcyBiZWVuIHJlc2V0IHRvIFVuaXZlcnNhbDsgZW5qb3khIgotCQl0ej0iVW5pdmVyc2FsIgotCQllY2hvICJVcGRhdGluZyAke2V0Y19sdH0gd2l0aCAkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iCi0JCWlmIFsgLUwgJHtldGNfbHR9IF0gOyB0aGVuCi0JCQlybSAtZiAiJHtldGNfbHR9IgotCQlmaQotCQlsbiAtcyAiJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgIiR7ZXRjX2x0fSIKLQlmaQotfQotCi0jIFBhY2thZ2VzIHByaW1hcmlseSBvcmdhbml6ZWQgYnkgZGlyZWN0b3J5IHdpdGggYSBtYWpvciBjaXR5Ci0jIGluIG1vc3QgdGltZSB6b25lcyBpbiB0aGUgYmFzZSBwYWNrYWdlCi0KLVBBQ0tBR0VTID0gInR6ZGF0YSB0emRhdGEtbWlzYyB0emRhdGEtcG9zaXggdHpkYXRhLXJpZ2h0IHR6ZGF0YS1hZnJpY2EgXAotICAgIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYW50YXJjdGljYSB0emRhdGEtYXJjdGljIHR6ZGF0YS1hc2lhIFwKLSAgICB0emRhdGEtYXRsYW50aWMgdHpkYXRhLWF1c3RyYWxpYSB0emRhdGEtZXVyb3BlIHR6ZGF0YS1wYWNpZmljIgotCi1GSUxFU190emRhdGEtYWZyaWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hZnJpY2EgPSAidHpkYXRhLWFmcmljYSIKLQotRklMRVNfdHpkYXRhLWFtZXJpY2FzICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvKiAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVVMvKiAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9CcmF6aWwvKiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NhbmFkYS8qICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTWV4aWNvLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DaGlsZS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hbWVyaWNhcyA9ICJ0emRhdGEtYW1lcmljYXMiCi0KLUZJTEVTX3R6ZGF0YS1hbnRhcmN0aWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FudGFyY3RpY2EvKiIKLVJQUk9WSURFU190emRhdGEtYW50YXJjdGljYSA9ICJ0emRhdGEtYW50YXJjdGljYSIKLQotRklMRVNfdHpkYXRhLWFyY3RpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BcmN0aWMvKiIKLVJQUk9WSURFU190emRhdGEtYXJjdGljID0gInR6ZGF0YS1hcmN0aWMiCi0KLUZJTEVTX3R6ZGF0YS1hc2lhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvKiAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSW5kaWFuLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NaWRlYXN0LyoiCi1SUFJPVklERVNfdHpkYXRhLWFzaWEgPSAidHpkYXRhLWFzaWEiCi0KLUZJTEVTX3R6ZGF0YS1hdGxhbnRpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdGxhbnRpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1hdGxhbnRpYyA9ICJ0emRhdGEtYXRsYW50aWMiCi0KLUZJTEVTX3R6ZGF0YS1hdXN0cmFsaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhLyoiCi1SUFJPVklERVNfdHpkYXRhLWF1c3RyYWxpYSA9ICJ0emRhdGEtYXVzdHJhbGlhIgotCi1GSUxFU190emRhdGEtZXVyb3BlICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS8qIgotUlBST1ZJREVTX3R6ZGF0YS1ldXJvcGUgPSAidHpkYXRhLWV1cm9wZSIKLQotRklMRVNfdHpkYXRhLXBhY2lmaWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1wYWNpZmljID0gInR6ZGF0YS1wYWNpZmljIgotCi1GSUxFU190emRhdGEtcG9zaXggKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXgvKiIKLVJQUk9WSURFU190emRhdGEtcG9zaXggPSAidHpkYXRhLXBvc2l4IgotCi1GSUxFU190emRhdGEtcmlnaHQgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcmlnaHQvKiIKLVJQUk9WSURFU190emRhdGEtcmlnaHQgPSAidHpkYXRhLXJpZ2h0IgotCi0KLUZJTEVTX3R6ZGF0YS1taXNjICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0N1YmEgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VneXB0ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VpcmUgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ZhY3RvcnkgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCLUVpcmUgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hvbmdrb25nICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ljZWxhbmQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lyYW4gICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lzcmFlbCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phbWFpY2EgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phcGFuICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0t3YWphbGVpbiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0xpYnlhICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05hdmFqbyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvbGFuZCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvcnR1Z2FsICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1NpbmdhcG9yZSAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1R1cmtleSIKLVJQUk9WSURFU190emRhdGEtbWlzYyA9ICJ0emRhdGEtbWlzYyIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL0hvbm9sdWx1ICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0FuY2hvcmFnZSAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0xvc19BbmdlbGVzICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0RlbnZlciAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NoaWNhZ28gICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL05ld19Zb3JrICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NhcmFjYXMgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL1Nhb19QYXVsbyAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTG9uZG9uICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvUGFyaXMgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BZnJpY2EvQ2Fpcm8gICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTW9zY293ICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0R1YmFpICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0thcmFjaGkgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0RoYWthICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0JhbmtvayAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0hvbmdfS29uZyAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL1Rva3lvICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvRGFyd2luICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQWRlbGFpZGUgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQnJpc2JhbmUgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvU3lkbmV5ICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL05vdW1lYSAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DU1Q2Q0RUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1Q1RURUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HQiAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQrMCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQtMCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQwICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HcmVlbndpY2ggICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9IU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1Q3TURUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWiAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWi1DSEFUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QUkMgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QU1Q4UERUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0MgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0sgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VQ1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VVEMgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Vbml2ZXJzYWwgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XLVNVICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9adWx1ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lLnRhYiAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lMTk3MC50YWIgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9pc28zMTY2LnRhYiAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdGMvKiIKLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke0AgIiR7c3lzY29uZmRpcn0vdGltZXpvbmUiIGlmIGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoJ0lOU1RBTExfVElNRVpPTkVfRklMRScpKSBlbHNlICIiIH0iCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vbG9jYWx0aW1lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThkLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThkLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZmNlODAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxOGQuYmIKQEAgLTAsMCArMSwyMTUgQEAKK1NVTU1BUlkgPSAiVGltZXpvbmUgZGF0YSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiUEQgJiBCU0QgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjc5YzlkNmIwMmJjMjc1N2IzZWFmOGY1M2M0M2ZiYSIKKworREVQRU5EUyA9ICJ0emNvZGUtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6ZGF0YSR7UFZ9LnRhci5nejtuYW1lPXR6ZGF0YSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCisKK1NSQ19VUklbdHpkYXRhLm1kNXN1bV0gPSAiODcxYTdlZjgwOGViNDJlYmM1NTFhY2RiM2Q2NjE1NTQiCitTUkNfVVJJW3R6ZGF0YS5zaGEyNTZzdW1dID0gIjUxMDZlZGRjZWI1ZjFhZTNhOTFkYmQzOTYwZTFiOGIxMWJhMGRjMDg1NzlhMzFjZjA3MjRhNzY5MWIxMGMwNTQiCisKK2luaGVyaXQgYWxsYXJjaAorCitSQ09ORkxJQ1RTXyR7UE59ID0gInRpbWV6b25lcyB0aW1lem9uZS1hZnJpY2EgdGltZXpvbmUtYW1lcmljYSB0aW1lem9uZS1hbnRhcmN0aWNhIFwKKyAgICAgICAgICAgICB0aW1lem9uZS1hcmN0aWMgdGltZXpvbmUtYXNpYSB0aW1lem9uZS1hdGxhbnRpYyBcCisgICAgICAgICAgICAgdGltZXpvbmUtYXVzdHJhbGlhIHRpbWV6b25lLWV1cm9wZSB0aW1lem9uZS1pbmRpYW4gXAorICAgICAgICAgICAgIHRpbWV6b25lLWlzbzMxNjYudGFiIHRpbWV6b25lLXBhY2lmaWMgdGltZXpvbmUtem9uZS50YWIiCisKK1MgPSAiJHtXT1JLRElSfSIKKworREVGQVVMVF9USU1FWk9ORSA/PSAiVW5pdmVyc2FsIgorSU5TVEFMTF9USU1FWk9ORV9GSUxFID89ICIxIgorCitUWk9ORVM9ICJhZnJpY2EgYW50YXJjdGljYSBhc2lhIGF1c3RyYWxhc2lhIGV1cm9wZSBub3J0aGFtZXJpY2Egc291dGhhbWVyaWNhICBcCisgICAgICAgICBmYWN0b3J5IGV0Y2V0ZXJhIGJhY2t3YXJkIHN5c3RlbXYgXAorICAgICAgICAiCisjIHBhY2lmaWNuZXcgCisKK2RvX2NvbXBpbGUgKCkgeworICAgICAgICBmb3Igem9uZSBpbiAke1RaT05FU307IGRvIFwKKyAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8gLUwgL2Rldi9udWxsIFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAorICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9wb3NpeCAtTCAvZGV2L251bGwgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvL3JpZ2h0IC1MICR7U30vbGVhcHNlY29uZHMgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgIGRvbmUKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8kZXhlY19wcmVmaXggJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQUiAke1N9LyRleGVjX3ByZWZpeCAke0R9LworICAgICAgICAjIGxpYmMgaXMgcmVtb3Zpbmcgem9uZWluZm8gZmlsZXMgZnJvbSBwYWNrYWdlCisgICAgICAgIGNwIC1wUCAiJHtTfS96b25lLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQICIke1N9L3pvbmUxOTcwLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQICIke1N9L2lzbzMxNjYudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbworCisgICAgICAgICMgSW5zdGFsbCBkZWZhdWx0IHRpbWV6b25lCisgICAgICAgIGlmIFsgLWUgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSBdOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgICAgICAgICBpZiBbICIke0lOU1RBTExfVElNRVpPTkVfRklMRX0iID0gIjEiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBlY2hvICR7REVGQVVMVF9USU1FWk9ORX0gPiAke0R9JHtzeXNjb25mZGlyfS90aW1lem9uZQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGxuIC1zICR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSAke0R9JHtzeXNjb25mZGlyfS9sb2NhbHRpbWUKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmJlcnJvciAiREVGQVVMVF9USU1FWk9ORSBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4iCisgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgZmkKKworICAgICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWV0Y19sdD0iJEQke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKKwlzcmM9IiREJHtzeXNjb25mZGlyfS90aW1lem9uZSIKKworCWlmIFsgLWUgJHtzcmN9IF0gOyB0aGVuCisJCXR6PSQoc2VkIC1lICdzOiMuKjo6JyAtZSAnczpbWzpzcGFjZTpdXSo6OmcnIC1lICcvXiQvZCcgIiR7c3JjfSIpCisJZmkKKwkKKwlpZiBbIC16ICIke3R6fSIgXSA7IHRoZW4KKwkJZXhpdCAwCisJZmkKKwkKKwlpZiBbICEgLWUgIiREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgXSA7IHRoZW4KKwkJZWNobyAiWW91IGhhdmUgYW4gaW52YWxpZCBUSU1FWk9ORSBzZXR0aW5nIGluICR7c3JjfSIKKwkJZWNobyAiWW91ciAke2V0Y19sdH0gaGFzIGJlZW4gcmVzZXQgdG8gVW5pdmVyc2FsOyBlbmpveSEiCisJCXR6PSJVbml2ZXJzYWwiCisJCWVjaG8gIlVwZGF0aW5nICR7ZXRjX2x0fSB3aXRoICREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIKKwkJaWYgWyAtTCAke2V0Y19sdH0gXSA7IHRoZW4KKwkJCXJtIC1mICIke2V0Y19sdH0iCisJCWZpCisJCWxuIC1zICIke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiAiJHtldGNfbHR9IgorCWZpCit9CisKKyMgUGFja2FnZXMgcHJpbWFyaWx5IG9yZ2FuaXplZCBieSBkaXJlY3Rvcnkgd2l0aCBhIG1ham9yIGNpdHkKKyMgaW4gbW9zdCB0aW1lIHpvbmVzIGluIHRoZSBiYXNlIHBhY2thZ2UKKworUEFDS0FHRVMgPSAidHpkYXRhIHR6ZGF0YS1taXNjIHR6ZGF0YS1wb3NpeCB0emRhdGEtcmlnaHQgdHpkYXRhLWFmcmljYSBcCisgICAgdHpkYXRhLWFtZXJpY2FzIHR6ZGF0YS1hbnRhcmN0aWNhIHR6ZGF0YS1hcmN0aWMgdHpkYXRhLWFzaWEgXAorICAgIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIHR6ZGF0YS1ldXJvcGUgdHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1hZnJpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhLyoiCitSUFJPVklERVNfdHpkYXRhLWFmcmljYSA9ICJ0emRhdGEtYWZyaWNhIgorCitGSUxFU190emRhdGEtYW1lcmljYXMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS8qICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VUy8qICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0JyYXppbC8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2FuYWRhLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NZXhpY28vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NoaWxlLyoiCitSUFJPVklERVNfdHpkYXRhLWFtZXJpY2FzID0gInR6ZGF0YS1hbWVyaWNhcyIKKworRklMRVNfdHpkYXRhLWFudGFyY3RpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW50YXJjdGljYS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hbnRhcmN0aWNhID0gInR6ZGF0YS1hbnRhcmN0aWNhIgorCitGSUxFU190emRhdGEtYXJjdGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FyY3RpYy8qIgorUlBST1ZJREVTX3R6ZGF0YS1hcmN0aWMgPSAidHpkYXRhLWFyY3RpYyIKKworRklMRVNfdHpkYXRhLWFzaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS8qICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JbmRpYW4vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01pZGVhc3QvKiIKK1JQUk9WSURFU190emRhdGEtYXNpYSA9ICJ0emRhdGEtYXNpYSIKKworRklMRVNfdHpkYXRhLWF0bGFudGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F0bGFudGljLyoiCitSUFJPVklERVNfdHpkYXRhLWF0bGFudGljID0gInR6ZGF0YS1hdGxhbnRpYyIKKworRklMRVNfdHpkYXRhLWF1c3RyYWxpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvKiIKK1JQUk9WSURFU190emRhdGEtYXVzdHJhbGlhID0gInR6ZGF0YS1hdXN0cmFsaWEiCisKK0ZJTEVTX3R6ZGF0YS1ldXJvcGUgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlLyoiCitSUFJPVklERVNfdHpkYXRhLWV1cm9wZSA9ICJ0emRhdGEtZXVyb3BlIgorCitGSUxFU190emRhdGEtcGFjaWZpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljLyoiCitSUFJPVklERVNfdHpkYXRhLXBhY2lmaWMgPSAidHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1wb3NpeCArPSAiJHtkYXRhZGlyfS96b25laW5mby9wb3NpeC8qIgorUlBST1ZJREVTX3R6ZGF0YS1wb3NpeCA9ICJ0emRhdGEtcG9zaXgiCisKK0ZJTEVTX3R6ZGF0YS1yaWdodCArPSAiJHtkYXRhZGlyfS96b25laW5mby9yaWdodC8qIgorUlBST1ZJREVTX3R6ZGF0YS1yaWdodCA9ICJ0emRhdGEtcmlnaHQiCisKKworRklMRVNfdHpkYXRhLW1pc2MgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQ3ViYSAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWd5cHQgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWlyZSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRmFjdG9yeSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0ItRWlyZSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSG9uZ2tvbmcgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSWNlbGFuZCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXJhbiAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXNyYWVsICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFtYWljYSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFwYW4gICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vS3dhamFsZWluICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTGlieWEgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTmF2YWpvICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9sYW5kICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9ydHVnYWwgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vU2luZ2Fwb3JlICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVHVya2V5IgorUlBST1ZJREVTX3R6ZGF0YS1taXNjID0gInR6ZGF0YS1taXNjIgorCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvSG9ub2x1bHUgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQW5jaG9yYWdlICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTG9zX0FuZ2VsZXMgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvRGVudmVyICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2hpY2FnbyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTmV3X1lvcmsgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2FyYWNhcyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvU2FvX1BhdWxvICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Mb25kb24gICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9QYXJpcyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS9DYWlybyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Nb3Njb3cgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRHViYWkgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvS2FyYWNoaSAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRGhha2EgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvQmFuZ2tvayAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvSG9uZ19Lb25nICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvVG9reW8gICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9EYXJ3aW4gICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9BZGVsYWlkZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9CcmlzYmFuZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9TeWRuZXkgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvTm91bWVhICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NTVDZDRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVDVFRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCswICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVC0wICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVDAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dyZWVud2ljaCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01FVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVDdNRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aLUNIQVQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BSQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BTVDhQRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPSyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VDVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VUQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VuaXZlcnNhbCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1ctU1UgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1dFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1p1bHUgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUudGFiICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUxOTcwLnRhYiAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL2lzbzMxNjYudGFiICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V0Yy8qIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7QCAiJHtzeXNjb25mZGlyfS90aW1lem9uZSIgaWYgYmIudXRpbHMudG9fYm9vbGVhbihkLmdldFZhcignSU5TVEFMTF9USU1FWk9ORV9GSUxFJykpIGVsc2UgIiIgfSIKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwLzEwLWN2ZS0yMDE0LTgxNDAtdGVzdC1jb21wci1lYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvMTAtY3ZlLTIwMTQtODE0MC10ZXN0LWNvbXByLWViLnBhdGNoCmluZGV4IGM5ODlkZjEuLmNhNGFhYWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvMTAtY3ZlLTIwMTQtODE0MC10ZXN0LWNvbXByLWViLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvMTAtY3ZlLTIwMTQtODE0MC10ZXN0LWNvbXByLWViLnBhdGNoCkBAIC05LDkgKzksMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgogCi0tLS0gYS9leHRyYWN0LmMKLSsrKyBiL2V4dHJhY3QuYwotQEAgLTIyMzIsMTAgKzIyMzIsMTcgQEAKK0luZGV4OiB1bnppcDYwL2V4dHJhY3QuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHVuemlwNjAub3JpZy9leHRyYWN0LmMKKysrKyB1bnppcDYwL2V4dHJhY3QuYworQEAgLTIyMzMsMTAgKzIyMzMsMTcgQEAgc3RhdGljIGludCB0ZXN0X2NvbXByX2ViKF9fR19fIGViLCBlYl9zaQogICAgICBpZiAoY29tcHJfb2Zmc2V0IDwgNCkgICAgICAgICAgICAgICAgLyogZmllbGQgaXMgbm90IGNvbXByZXNzZWQ6ICovCiAgICAgICAgICByZXR1cm4gUEtfT0s7ICAgICAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nIGFuZCBzaWduYWwgT0sgKi8KICAKQEAgLTMwLDUgKzMyLDUgQEAKICsgICAgICgoZWJfdWNzaXplID4gMEwpICYmIChlYl9zaXplIDw9IChjb21wcl9vZmZzZXQgKyBFQl9DTVBSSEVBRExFTikpKSkKICsgICAgICAgIHJldHVybiBJWl9FRl9UUlVOQzsgICAgICAgICAgICAgLyogbm8vYmFkIGNvbXByZXNzZWQgZGF0YSEgKi8KICAKLSAgICAgaWYgKAotICNpZmRlZiBJTlRfMTZCSVQKKyAgICAgbWV0aG9kID0gbWFrZXdvcmQoZWIgKyAoRUJfSEVBRFNJWkUgKyBjb21wcl9vZmZzZXQpKTsKKyAgICAgaWYgKChtZXRob2QgPT0gU1RPUkVEKSAmJgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy8wMDAxLXdhdGNoZG9nLXJlbW92ZS1pbnRlcmRlcGVuZGVuY2llcy1vZi13YXRjaGRvZy1hbmQtd2QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nLzAwMDEtd2F0Y2hkb2ctcmVtb3ZlLWludGVyZGVwZW5kZW5jaWVzLW9mLXdhdGNoZG9nLWFuZC13ZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzhlMGNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy8wMDAxLXdhdGNoZG9nLXJlbW92ZS1pbnRlcmRlcGVuZGVuY2llcy1vZi13YXRjaGRvZy1hbmQtd2QucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSBjMWZlMTRmYTViZDE2ODI5MmNjNDY3MDAzNGJjNDhiOTU0ZTlkYWM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMTMgTWFyIDIwMTggMTQ6NDk6NTUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gd2F0Y2hkb2c6IHJlbW92ZSBpbnRlcmRlcGVuZGVuY2llcyBvZiB3YXRjaGRvZyBhbmQKKyB3ZF9rZWVwYWxpdmUgc2VydmljZXMKKworU2luY2Ugd2F0Y2hkb2cgYW5kIHdhdGNoZG9nLWtlZXBhbGl2ZSBwYWNrYWdlcyBjYW4ndCBiZSBpbnN0YWxsZWQKK3RvZ2V0aGVyLCByZW1vdmUgdGhlIGludGVyLWRlcGVuZGVuY2llcyBvZiB3YXRjaGRvZyBhbmQgd2Rfa2VlcGFsaXZlCitzZXJ2aWNlcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIGRlYmlhbi93YXRjaGRvZy5zZXJ2aWNlICAgICB8ICA5ICsrKy0tLS0tLQorIGRlYmlhbi93ZF9rZWVwYWxpdmUuc2VydmljZSB8IDEwICsrKysrLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kZWJpYW4vd2F0Y2hkb2cuc2VydmljZSBiL2RlYmlhbi93YXRjaGRvZy5zZXJ2aWNlCitpbmRleCA3YTJmYzM2Li5mMzFkMWZlIDEwMDY0NAorLS0tIGEvZGViaWFuL3dhdGNoZG9nLnNlcnZpY2UKKysrKyBiL2RlYmlhbi93YXRjaGRvZy5zZXJ2aWNlCitAQCAtMSwxNiArMSwxMyBAQAorIFtVbml0XQorIERlc2NyaXB0aW9uPXdhdGNoZG9nIGRhZW1vbgorLUNvbmZsaWN0cz13ZF9rZWVwYWxpdmUuc2VydmljZQorIEFmdGVyPW11bHRpLXVzZXIudGFyZ2V0CistT25GYWlsdXJlPXdkX2tlZXBhbGl2ZS5zZXJ2aWNlCisgCisgW1NlcnZpY2VdCisgVHlwZT1mb3JraW5nCisgRW52aXJvbm1lbnRGaWxlPS9ldGMvZGVmYXVsdC93YXRjaGRvZworIEV4ZWNTdGFydFByZT0vYmluL3NoIC1jICdbIC16ICIke3dhdGNoZG9nX21vZHVsZX0iIF0gfHwgWyAiJHt3YXRjaGRvZ19tb2R1bGV9IiA9ICJub25lIiBdIHx8IC9zYmluL21vZHByb2JlICR3YXRjaGRvZ19tb2R1bGUnCistRXhlY1N0YXJ0PS9iaW4vc2ggLWMgJ1sgJHJ1bl93YXRjaGRvZyAhPSAxIF0gfHwgZXhlYyAvdXNyL3NiaW4vd2F0Y2hkb2cgJHdhdGNoZG9nX29wdGlvbnMnCistRXhlY1N0b3BQb3N0PS9iaW4vc2ggLWMgJ1sgJHJ1bl93ZF9rZWVwYWxpdmUgIT0gMSBdIHx8IGZhbHNlJworK0V4ZWNTdGFydD0vYmluL3NoIC1jICdbIHgkcnVuX3dhdGNoZG9nICE9IHgxIF0gfHwgZXhlYyAvdXNyL3NiaW4vd2F0Y2hkb2cgJHdhdGNoZG9nX29wdGlvbnMnCisrUElERmlsZT0vdmFyL3J1bi93YXRjaGRvZy5waWQKKyAKKyBbSW5zdGFsbF0KKy1XYW50ZWRCeT1kZWZhdWx0LnRhcmdldAorLQorK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CitkaWZmIC0tZ2l0IGEvZGViaWFuL3dkX2tlZXBhbGl2ZS5zZXJ2aWNlIGIvZGViaWFuL3dkX2tlZXBhbGl2ZS5zZXJ2aWNlCitpbmRleCA0NWIwMThlLi43ZjhiMWRjIDEwMDY0NAorLS0tIGEvZGViaWFuL3dkX2tlZXBhbGl2ZS5zZXJ2aWNlCisrKysgYi9kZWJpYW4vd2Rfa2VlcGFsaXZlLnNlcnZpY2UKK0BAIC0xLDEzICsxLDEzIEBACisgW1VuaXRdCisgRGVzY3JpcHRpb249d2F0Y2hkb2cga2VlcGFsaXZlIGRhZW1vbgorLUJlZm9yZT13YXRjaGRvZy5zZXJ2aWNlIHNodXRkb3duLnRhcmdldAorLUNvbmZsaWN0cz13YXRjaGRvZy5zZXJ2aWNlIHNodXRkb3duLnRhcmdldAorK0FmdGVyPW11bHRpLXVzZXIudGFyZ2V0CisgCisgW1NlcnZpY2VdCisgVHlwZT1mb3JraW5nCisgRW52aXJvbm1lbnRGaWxlPS9ldGMvZGVmYXVsdC93YXRjaGRvZworIEV4ZWNTdGFydFByZT0vYmluL3NoIC1jICdbIC16ICIke3dhdGNoZG9nX21vZHVsZX0iIF0gfHwgWyAiJHt3YXRjaGRvZ19tb2R1bGV9IiA9ICJub25lIiBdIHx8IC9zYmluL21vZHByb2JlICR3YXRjaGRvZ19tb2R1bGUnCistRXhlY1N0YXJ0UHJlPS0vYmluL3N5c3RlbWN0bCByZXNldC1mYWlsZWQgd2F0Y2hkb2cuc2VydmljZQorIEV4ZWNTdGFydD0vdXNyL3NiaW4vd2Rfa2VlcGFsaXZlICR3YXRjaGRvZ19vcHRpb25zCistRXhlY1N0YXJ0UG9zdD0vYmluL3NoIC1jICdsbiAtcyAvdmFyL3J1bi93ZF9rZWVwYWxpdmUucGlkIC9ydW4vc2VuZHNpZ3Mub21pdC5kL3dkX2tlZXBhbGl2ZS5waWQnCistRXhlY1N0b3BQb3N0PS9iaW4vc2ggLWMgJ3JtIC1mIC9ydW4vc2VuZHNpZ3Mub21pdC5kL3dkX2tlZXBhbGl2ZS5waWQnCisrUElERmlsZT0vdmFyL3J1bi93ZF9rZWVwYWxpdmUucGlkCisrCisrW0luc3RhbGxdCisrV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1jb25mLnBhdGNoCmluZGV4IGU2OGFkNTQuLmVjNDRjODAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2F0Y2hkb2ctY29uZi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL3dhdGNoZG9nLWNvbmYucGF0Y2gKQEAgLTEsMTQgKzEsMTYgQEAKIFNpZ25lZC1vZmYtYnk6IERpZWdvIFJvbmRpbmkgPGRpZWdvLm1sQHpvaG8uY29tPgogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiAKLS0tLSB3YXRjaGRvZy01LjEzLm9yaWcvd2F0Y2hkb2cuY29uZgkyMDEzLTAyLTAxIDEyOjE1OjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIHdhdGNoZG9nLTUuMTMvd2F0Y2hkb2cuY29uZgkyMDE0LTExLTEzIDEwOjU5OjQzLjIzMzk0MzAwMCArMDEwMAotQEAgLTIwLDcgKzIwLDcgQEAKLSAjdGVzdC1iaW5hcnkJCT0gCi0gI3Rlc3QtdGltZW91dAkJPSAKK0luZGV4OiB3YXRjaGRvZy01LjE1L3dhdGNoZG9nLmNvbmYKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3YXRjaGRvZy01LjE1Lm9yaWcvd2F0Y2hkb2cuY29uZgorKysrIHdhdGNoZG9nLTUuMTUvd2F0Y2hkb2cuY29uZgorQEAgLTI4LDcgKzI4LDcgQEAKKyAjcmV0cnktdGltZW91dAkJPSA2MAorICNyZXBhaXItbWF4aW11bQkJPSAxCiAgCiAtI3dhdGNoZG9nLWRldmljZQk9IC9kZXYvd2F0Y2hkb2cKICt3YXRjaGRvZy1kZXZpY2UJPSAvZGV2L3dhdGNoZG9nCiAgCiAgIyBEZWZhdWx0cyBjb21waWxlZCBpbnRvIHRoZSBiaW5hcnkKLSAjdGVtcGVyYXR1cmUtZGV2aWNlCT0KKyAjdGVtcGVyYXR1cmUtc2Vuc29yCT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYgppbmRleCAzZDBiNzJlLi4zN2IzN2FlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiCkBAIC0xMCw2ICsxMCw3IEBACiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3dhdGNoZG9nL3dhdGNoZG9nLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtbGludXgtcGFyYW0uaC1mb3ItRVhFQ19QQUdFU0laRS1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2F0Y2hkb2ctcmVtb3ZlLWludGVyZGVwZW5kZW5jaWVzLW9mLXdhdGNoZG9nLWFuZC13ZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly93YXRjaGRvZy1pbml0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3dhdGNoZG9nLWNvbmYucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vd2Rfa2VlcGFsaXZlLmluaXQgXApAQCAtMzYsNyArMzcsOSBAQAogSU5JVFNDUklQVF9OQU1FXyR7UE59LWtlZXBhbGl2ZSA9ICJ3ZF9rZWVwYWxpdmUiCiBJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1rZWVwYWxpdmUgPSAic3RhcnQgMTUgMSAyIDMgNCA1IC4gc3RvcCA4NSAwIDYgLiIKIAotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIndhdGNoZG9nLnNlcnZpY2Ugd2Rfa2VlcGFsaXZlLnNlcnZpY2UiCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWtlZXBhbGl2ZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ3YXRjaGRvZy5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWtlZXBhbGl2ZSA9ICJ3ZF9rZWVwYWxpdmUuc2VydmljZSIKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQpAQCAtNTQsNiArNTcsNyBAQAogCiBGSUxFU18ke1BOfS1rZWVwYWxpdmUgPSAiIFwKICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC93ZF9rZWVwYWxpdmUgXAorICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2Rfa2VlcGFsaXZlLnNlcnZpY2UgXAogICAgICR7c2JpbmRpcn0vd2Rfa2VlcGFsaXZlIFwKICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQuaW5jCmluZGV4IDEyOTllZGIuLjNjZmY2NTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC5pbmMKQEAgLTIsNyArMiw3IEBACiBIT01FUEFHRSA9ICJodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3dnZXQvIgogU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCiBMSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNjc4OTU3YjBjOGU5NjRhYTZjNzBmZDc3NjQxYTcxZSIKIERFUEVORFMgPSAiZ251dGxzIHpsaWIgbGlicGNyZSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCkBAIC0xMCw2ICsxMCw5IEBACiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXNzbD1nbnV0bHMgLS1kaXNhYmxlLXJwYXRoIC0tZGlzYWJsZS1pcmkgXAogICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJnbnV0bHMtcHJlZml4IGFjX2N2X2hlYWRlcl91dWlkX3V1aWRfaD1ubyIKIAorRVhUUkFfT0VNQUtFICs9ICdUT09MQ0hBSU5fT1BUSU9OUz0iJHtUT09MQ0hBSU5fT1BUSU9OU30iIFwKKyAgICAgICAgICAgICAgICAgREVCVUdfUFJFRklYX01BUD0iJHtERUJVR19QUkVGSVhfTUFQfSInCisKIEFMVEVSTkFUSVZFXyR7UE59ID0gIndnZXQiCiBBTFRFUk5BVElWRV8ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQvMDAwMi1pbXByb3ZlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LzAwMDItaW1wcm92ZS1yZXByb2R1Y2liaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc4MWRmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LzAwMDItaW1wcm92ZS1yZXByb2R1Y2liaWxpdHkucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSA3ZjEzNTc1MjlkMjNiMzU2YjQ1ZmJiMGRkNzM4ODU4ODE2MmU0Y2I4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMCBKYW4gMjAxOCAxNDo0MzoyMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBzcmMvTWFrZWZpbGUuYW06IGltcHJvdmUgcmVwcm9kdWNpYmlsaXR5CisKK1JlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSB0aGUgaW50ZXJuYWxseQorZ2VuZXJhdGVkIGZpbGUgdmVyc2lvbi5jLiBUaGUgcmVmZXJlbmNlcyBnZXQgY29tcGlsZWQgaW50bworZXhlY3V0YWJsZXMsIHdoaWNoIGxlYWRzIHRvIG5vbi1yZXByb2R1Y2libGUgYnVpbGRzLgorVGhlIHJlbW92ZWQgcmVmZXJlbmNlcyAoLS1zeXNyb290LCAtZmRlYnVnLXByZWZpeC1tYXApIHdlcmUKK29ubHkgdXNlZCBhcyBwYXJ0IG9mIHRoZSBgd2dldCAtLXZlcnNpb24nIHdoaWNoIGRvIG5vdCBoYXZlCitzaWRlIGVmZmVjdC4KKworLi4uCiskIHdnZXQgLS12ZXJzaW9uCitHTlUgV2dldCAxLjE0IGJ1aWx0IG9uIGxpbnV4LWdudS4KKworK2RpZ2VzdCAraHR0cHMgK2lwdjYgK2lyaSArbGFyZ2UtZmlsZSArbmxzICtudGxtICtvcGllICtzc2wvb3BlbnNzbAorCitXZ2V0cmM6CisgICAgL2V0Yy93Z2V0cmMgKHN5c3RlbSkKK0xvY2FsZTogL3Vzci9zaGFyZS9sb2NhbGUKK0NvbXBpbGU6IGdjYyAtREhBVkVfQ09ORklHX0ggLURTWVNURU1fV0dFVFJDPSIvZXRjL3dnZXRyYyIKKyAgICAtRExPQ0FMRURJUj0iL3Vzci9zaGFyZS9sb2NhbGUiIC1JLiAtSS4uL2xpYiAtSS4uL2xpYiAtTzIgLWcgLXBpcGUKKyAgICAtV2FsbCAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtZmV4Y2VwdGlvbnMgLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nCisgICAgLS1wYXJhbT1zc3AtYnVmZmVyLXNpemU9NCAtZ3JlY29yZC1nY2Mtc3dpdGNoZXMgLW02NCAtbXR1bmU9Z2VuZXJpYworTGluazogZ2NjIC1PMiAtZyAtcGlwZSAtV2FsbCAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtZmV4Y2VwdGlvbnMKKyAgICAtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLS1wYXJhbT1zc3AtYnVmZmVyLXNpemU9NAorICAgIC1ncmVjb3JkLWdjYy1zd2l0Y2hlcyAtbTY0IC1tdHVuZT1nZW5lcmljIC1sc3NsIC1sY3J5cHRvCisgICAgL3Vzci9saWI2NC9saWJzc2wuc28gL3Vzci9saWI2NC9saWJjcnlwdG8uc28gL3Vzci9saWI2NC9saWJ6LnNvCisgICAgLWxkbCAtbHogLWx6IC1saWRuIC1sdXVpZCAtbHBjcmUgZnRwLW9waWUubyBvcGVuc3NsLm8gaHR0cC1udGxtLm8KKyAgICAuLi9saWIvbGliZ251LmEKKy4uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9NYWtlZmlsZS5hbSB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggMjhjMGJlMi4uNDQwODRhMyAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtODcsOSArODcsMTMgQEAgdmVyc2lvbi5jOiAgJCh3Z2V0X1NPVVJDRVMpIC4uL2xpYi9saWJnbnUuYQorIAllY2hvICcjaW5jbHVkZSAidmVyc2lvbi5oIicgPj4gJEAKKyAJZWNobyAnY29uc3QgY2hhciAqdmVyc2lvbl9zdHJpbmcgPSAiQFZFUlNJT05AIjsnID4+ICRACisgCWVjaG8gJ2NvbnN0IGNoYXIgKmNvbXBpbGF0aW9uX3N0cmluZyA9ICInJChDT01QSUxFKSciOycgXAorKwkgICAgfCBzZWQgLWUgInMsJChUT09MQ0hBSU5fT1BUSU9OUyksLGciIFwKKysJICAgICAgICAgIC1lICJzLCQoREVCVUdfUFJFRklYX01BUCksLGciIFwKKyAJICAgIHwgJChFU0NBUEVRVU9URSkgPj4gJEAKKyAJZWNobyAnY29uc3QgY2hhciAqbGlua19zdHJpbmcgPSAiJyQoQ0NMRCkgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSBcCisgCSQoQU1fTERGTEFHUykgJChMREZMQUdTKSAkKExJQlMpICQod2dldF9MREFERCknIjsnIFwKKysJICAgIHwgc2VkIC1lICJzLCQoVE9PTENIQUlOX09QVElPTlMpLCxnIiBcCisrCSAgICAgICAgICAtZSAicywkKERFQlVHX1BSRUZJWF9NQVApLCxnIiBcCisgCSAgICB8ICQoRVNDQVBFUVVPVEUpID4+ICRACisgCisgY3NzLmM6ICQoc3JjZGlyKS9jc3MubAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0L0NWRS0yMDE3LTY1MDgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC9DVkUtMjAxNy02NTA4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWMyOTBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0L0NWRS0yMDE3LTY1MDgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDRkNzI5ZTMyMmZhZTM1OWExYWVmYWFmZWMxMTQ0NzY0YTU0ZThhZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/VGltPTIwUj1DMz1CQ2hzZW4/PSA8dGltLnJ1ZWhzZW5AZ214LmRlPgotRGF0ZTogTW9uLCA2IE1hciAyMDE3IDEwOjA0OjIyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBDUkxGIGluamVjdGlvbiBpbiBXZ2V0IGhvc3QgcGFydAotCi0qIHNyYy91cmwuYyAodXJsX3BhcnNlKTogUmVqZWN0IGNvbnRyb2wgY2hhcmFjdGVycyBpbiBob3N0IHBhcnQgb2YgVVJMCi0KLVJlcG9ydGVkLWJ5OiBPcmFuZ2UgVHNhaQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvd2dldC5naXQvY29tbWl0Lz9pZD00ZDcyOWUzMjJmYWUzNTlhMWFlZmFhZmVjMTE0NDc2NGE1NGU4YWQ0XQotCi1DVkU6IENWRS0yMDE3LTY1MDgKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3VybC5jIHwgMTEgKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3VybC5jIGIvc3JjL3VybC5jCi1pbmRleCA4ZjhmZjBiLi43ZDM2YjI3IDEwMDY0NAotLS0tIGEvc3JjL3VybC5jCi0rKysgYi9zcmMvdXJsLmMKLUBAIC05MjUsNiArOTI1LDE3IEBAIHVybF9wYXJzZSAoY29uc3QgY2hhciAqdXJsLCBpbnQgKmVycm9yLCBzdHJ1Y3QgaXJpICppcmksIGJvb2wgcGVyY2VudF9lbmNvZGUpCi0gICAgICAgdXJsX3VuZXNjYXBlICh1LT5ob3N0KTsKLSAgICAgICBob3N0X21vZGlmaWVkID0gdHJ1ZTsKLSAKLSsgICAgICAvKiBjaGVjayBmb3IgaW52YWxpZCBjb250cm9sIGNoYXJhY3RlcnMgaW4gaG9zdCBuYW1lICovCi0rICAgICAgZm9yIChwID0gdS0+aG9zdDsgKnA7IHArKykKLSsgICAgICAgIHsKLSsgICAgICAgICAgaWYgKGNfaXNjbnRybCgqcCkpCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgdXJsX2ZyZWUodSk7Ci0rICAgICAgICAgICAgICBlcnJvcl9jb2RlID0gUEVfSU5WQUxJRF9IT1NUX05BTUU7Ci0rICAgICAgICAgICAgICBnb3RvIGVycm9yOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsKLSAgICAgICAvKiBBcHBseSBJRE5BIHJlZ2FyZGxlc3Mgb2YgaXJpLT51dGY4X2VuY29kZSBzdGF0dXMgKi8KLSAgICAgICBpZiAob3B0LmVuYWJsZV9pcmkgJiYgaXJpKQotICAgICAgICAgewotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE5LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4YmRlOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXRfMS4xOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vd2dldC93Z2V0LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTY1MDgucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg3Y2VhMzZiNzE2MWZkNDNlM2ZkNTFhNGU4Yjg5Njg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllNGYxMmRhMzhjYzYxNjdkMDc1MmQ5MzRhYmUyN2M3YjE1OTlhOWFmMjk0ZTczODI5YmU3YWM3YjViNGRhNDAiCi0KLXJlcXVpcmUgd2dldC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0XzEuMTkuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0XzEuMTkuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzdkOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXRfMS4xOS41LmJiCkBAIC0wLDAgKzEsOSBAQAorU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3dnZXQvd2dldC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZGI2ZjAzZDY1NTA0MWY4MmViNjRiOGM4YTFmYTdkYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMzkyMTJhYmUxYTczZjJiMjhmNGM2Y2IyMjNjNzM4NTU5Y2FhYzkxZDZlNDE2YTZkOTFkNGI5ZDU1YzlmYWVlIgorCityZXF1aXJlIHdnZXQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZjhkMTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJCYXNpYyBkZXNrdG9wIGludGVncmF0aW9uIGZ1bmN0aW9ucyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3hkZy11dGlscy8iCi1ERVNDUklQVElPTiA9ICJUaGUgeGRnLXV0aWxzIHBhY2thZ2UgaXMgYSBzZXQgb2Ygc2ltcGxlIHNjcmlwdHMgdGhhdCBwcm92aWRlIGJhc2ljIFwKLWRlc2t0b3AgaW50ZWdyYXRpb24gZnVuY3Rpb25zIGZvciBhbnkgRnJlZSBEZXNrdG9wLCBzdWNoIGFzIExpbnV4LiBcCi1UaGV5IGFyZSBpbnRlbmRlZCB0byBwcm92aWRlIGEgc2V0IG9mIGRlZmFjdG8gc3RhbmRhcmRzLiBcCi1UaGUgZm9sbG93aW5nIHNjcmlwdHMgYXJlIHByb3ZpZGVkIGF0IHRoaXMgdGltZTogXAoteGRnLWRlc2t0b3AtaWNvbiBcCi14ZGctZGVza3RvcC1tZW51IFwKLXhkZy1lbWFpbCBcCi14ZGctaWNvbi1yZXNvdXJjZSBcCi14ZGctbWltZSBcCi14ZGctb3BlbiBcCi14ZGctc2NyZWVuc2F2ZXIgXAoteGRnLXRlcm1pbmFsIFwKLSIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNTM2N2E5MDkzNDA5OGQ2YjA1YWYzYjc0NjQwNTAxNCIKLQotU1JDX1VSSSA9ICJodHRwOi8vcG9ydGxhbmQuZnJlZWRlc2t0b3Aub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZWluc3RhdGUteGRnLXRlcm1pbmFsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtYnVpbGQtdGhlLWluLXNjcmlwdC1tYW51YWwucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJkMGFlYzYwMzc3NjlhNWYxMzhmZjQwNGIxYmI0YjE1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwZGQ2M2EyNTc2ZTBiYjE2ZjFhYTc4ZDZkZGY3ZDY3ODQ3ODRhMDk4ZDRkZjE3MTYxY2Q2YTE3YzdiYzQxMjUiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInhkZy11dGlscy0oP1A8cHZlcj4oKFxkK1tcLlwtX10qKSspKChyY3xhbHBoYXxiZXRhKVxkKyk/KVwuKHRhclwuZ3p8dGd6KSIKLQotIyBOZWVkcyBicm9rZW5zZXAgYXMgdGhpcyBkb2Vzbid0IHVzZSBhdXRvbWFrZQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi0jIFRoZSB4cHJvcCByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1ERVBFTkRTID0gInhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJ4cHJvcCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzM5Mjg5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4yLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiQmFzaWMgZGVza3RvcCBpbnRlZ3JhdGlvbiBmdW5jdGlvbnMiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS94ZGctdXRpbHMvIgorREVTQ1JJUFRJT04gPSAiVGhlIHhkZy11dGlscyBwYWNrYWdlIGlzIGEgc2V0IG9mIHNpbXBsZSBzY3JpcHRzIHRoYXQgcHJvdmlkZSBiYXNpYyBcCitkZXNrdG9wIGludGVncmF0aW9uIGZ1bmN0aW9ucyBmb3IgYW55IEZyZWUgRGVza3RvcCwgc3VjaCBhcyBMaW51eC4gXAorVGhleSBhcmUgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIHNldCBvZiBkZWZhY3RvIHN0YW5kYXJkcy4gXAorVGhlIGZvbGxvd2luZyBzY3JpcHRzIGFyZSBwcm92aWRlZCBhdCB0aGlzIHRpbWU6IFwKK3hkZy1kZXNrdG9wLWljb24gXAoreGRnLWRlc2t0b3AtbWVudSBcCit4ZGctZW1haWwgXAoreGRnLWljb24tcmVzb3VyY2UgXAoreGRnLW1pbWUgXAoreGRnLW9wZW4gXAoreGRnLXNjcmVlbnNhdmVyIFwKK3hkZy10ZXJtaW5hbCBcCisiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTUzNjdhOTA5MzQwOThkNmIwNWFmM2I3NDY0MDUwMTQiCisKK1NSQ19VUkkgPSAiaHR0cDovL3BvcnRsYW5kLmZyZWVkZXNrdG9wLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVpbnN0YXRlLXhkZy10ZXJtaW5hbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLXRoZS1pbi1zY3JpcHQtbWFudWFsLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNjFlNzVlYjc2Yzk0ZDE5ZjZmNGYzMzBkOGVlNjI2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NTE5NTJlMmM2YmIyMTIxNGUwYmI1NGUwZGZmYTA1N2QzMGY1NTYzMzAwMjI1YzI0YzE2ZmJhODQ2MjU4YmNjIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ4ZGctdXRpbHMtKD9QPHB2ZXI+KChcZCtbXC5cLV9dKikrKSgocmN8YWxwaGF8YmV0YSlcZCspPylcLih0YXJcLmd6fHRneikiCisKKyMgTmVlZHMgYnJva2Vuc2VwIGFzIHRoaXMgZG9lc24ndCB1c2UgYXV0b21ha2UKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBUaGUgeHByb3AgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworREVQRU5EUyA9ICJ4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCitSREVQRU5EU18ke1BOfSArPSAieHByb3AiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjQuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTA3ZDIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWJLaXQgYmFzZWQgd2ViIGJyb3dzZXIgZm9yIEdOT01FIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGF2YWhpIGxpYm5vdGlmeSBnY3IgXAotCSAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ25vbWUtZGVza3RvcDMgbGlieG1sMi1uYXRpdmUgXAotCSAgIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBqc29uLWdsaWIiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdldHRleHQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXllbHAubTQtZHJvcC10aGUtY2hlY2stZm9yLWl0c3Rvb2wucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjMDIyMWFlYzZhMDg5MzVlNjg1NGVhYTlkZTk0NTFlZiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImZlZjUxNjc2MzEwZDlmMzdlMThjOWIyZDc3ODI1NDIzMmViMTdjY2NkOTg4YzJkMWVjZjQyYzdiMjk2M2ExNTQiCi0KLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aC1kaXN0cmlidXRvci1uYW1lPSR7RElTVFJPfSAtLWVuYWJsZS1kZWJ1Zz1ubyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIHM6aGVscDo6ZyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2dub21lLXNoZWxsL3NlYXJjaC1wcm92aWRlcnMiCi1SREVQRU5EU18ke1BOfSA9ICJpc28tY29kZXMgYWR3YWl0YS1pY29uLXRoZW1lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjI2LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjUwZjc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjI2LjYuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJXZWJLaXQgYmFzZWQgd2ViIGJyb3dzZXIgZm9yIEdOT01FIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGF2YWhpIGxpYm5vdGlmeSBnY3IgXAorCSAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ25vbWUtZGVza3RvcDMgbGlieG1sMi1uYXRpdmUgXAorCSAgIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBqc29uLWdsaWIiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnZXR0ZXh0CitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0dOT01FQk59LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtHTk9NRUJOfS0ke1BWfS50YXIuJHtHTk9NRV9DT01QUkVTU19UWVBFfTtuYW1lPWFyY2hpdmUgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1oZWxwLW1lc29uLmJ1aWxkLWRpc2FibGUtdGhlLXVzZS1vZi15ZWxwLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiODQ0OTk2ODM2NmE2ZjlhYWZmM2FjMjI4ZGRmYzdjNjYiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwMWIxNmFhNTVkMzEyYWUwZjE3ZDMxMzZmOTBkOGM2OGFjNzQ4NzE1ZjExOTQxMmZiMTkxNzAyM2M2ZjYzMGE4IgorCitFWFRSQV9PRU1FU09OICs9ICIgLURkaXN0cmlidXRvcl9uYW1lPSR7RElTVFJPfSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwvc2VhcmNoLXByb3ZpZGVycyIKK1JERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkY2QzOTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAxLWJvb2ttYXJrcy1DaGVjay1mb3ItcmV0dXJuLXZhbHVlLW9mLWZyZWFkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBhYTIxNzZiZTMyZWVkMjU3OGRhODJmMzRkMzExNDhmOTM0YzExYzM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTc6MDM6NDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gYm9va21hcmtzOiBDaGVjayBmb3IgcmV0dXJuIHZhbHVlIG9mIGZyZWFkKCkKLQotRml4ZXMgYmVsb3cgY29tcGlsZXIgZXJyb3IKLWlnbm9yaW5nIHJldHVybiB2YWx1ZSBvZiAnZnJlYWQnLCBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSB3YXJuX3VudXNlZF9yZXN1bHQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYyB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jvb2ttYXJrcy9lcGh5LWJvb2ttYXJrLmMgYi9zcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYwotaW5kZXggZmYwMjM5Yi4uODYzM2NlNCAxMDA2NDQKLS0tLSBhL3NyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jCi0rKysgYi9zcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYwotQEAgLTIxNyw3ICsyMTcsOCBAQCBlcGh5X2Jvb2ttYXJrX2luaXQgKEVwaHlCb29rbWFyayAqc2VsZikKLSAgIGJ5dGVzID0gZ19tYWxsb2MgKG51bV9ieXRlcyk7Ci0gCi0gICBmcCA9IGZvcGVuICgiL2Rldi91cmFuZG9tIiwgInIiKTsKLS0gIGZyZWFkIChieXRlcywgc2l6ZW9mIChndWludDgpLCBudW1fYnl0ZXMsIGZwKTsKLSsgIGlmIChmcmVhZCAoYnl0ZXMsIHNpemVvZiAoZ3VpbnQ4KSwgbnVtX2J5dGVzLCBmcCkgIT0gbnVtX2J5dGVzKQotKyAgICBnX3dhcm5pbmcoIlVuYWJsZSB0byByZWFkIGRhdGEgZnJvbSAvZGV2L3VyYW5kb21cbiIpOwotIAotICAgc2VsZi0+aWQgPSBnX21hbGxvYzAgKElEX0xFTiArIDEpOwotICAgZm9yIChnc2l6ZSBpID0gMDsgaSA8IG51bV9ieXRlczsgaSsrKSB7Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEteWVscC5tNC1kcm9wLXRoZS1jaGVjay1mb3ItaXRzdG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMS15ZWxwLm00LWRyb3AtdGhlLWNoZWNrLWZvci1pdHN0b29sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTg1ZDdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMS15ZWxwLm00LWRyb3AtdGhlLWNoZWNrLWZvci1pdHN0b29sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSAzMGYwM2EyNTZlZmUzNzVhNGQ1YzNhMjRiZjQxNjhlYmYzODBlM2FiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMwIEp1bCAyMDE1IDE1OjEzOjIzICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHllbHAubTQ6IGRyb3AgdGhlIGNoZWNrIGZvciBpdHN0b29sCi0KLUl0IGlzbid0IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZCwgc28gdGhlcmUncyBubyBuZWVkIHRvIHByb3ZpZGUKLWl0IGFzIGEgcmVjaXBlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3RhcmJhbGwtc3BlY2lmaWMgaXNzdWVdCi0tLS0KLSBtNC95ZWxwLm00IHwgNiAtLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL200L3llbHAubTQgYi9tNC95ZWxwLm00Ci1pbmRleCA1ZGI4NDdmLi4xYjZlZGU0IDEwMDY0NAotLS0tIGEvbTQveWVscC5tNAotKysrIGIvbTQveWVscC5tNAotQEAgLTI3LDEyICsyNyw2IEBAIEFDX0FSR19XSVRIKFtoZWxwLWRpcl0sCi0gSEVMUF9ESVI9IiR3aXRoX2hlbHBfZGlyIgotIEFDX1NVQlNUKEhFTFBfRElSKQotIAotLUFDX0FSR19WQVIoW0lUU1RPT0xdLCBbUGF0aCB0byB0aGUgYGl0c3Rvb2xgIGNvbW1hbmRdKQotLUFDX0NIRUNLX1BST0coW0lUU1RPT0xdLCBbaXRzdG9vbF0sIFtpdHN0b29sXSkKLS1pZiB0ZXN0IHgiJElUU1RPT0wiID0geDsgdGhlbgotLSAgQUNfTVNHX0VSUk9SKFtpdHN0b29sIG5vdCBmb3VuZF0pCi0tZmkKLS0KLSBBQ19BUkdfVkFSKFtYTUxMSU5UXSwgW1BhdGggdG8gdGhlIGB4bWxsaW50YCBjb21tYW5kXSkKLSBBQ19DSEVDS19QUk9HKFtYTUxMSU5UXSwgW3htbGxpbnRdLCBbeG1sbGludF0pCi0gaWYgdGVzdCB4IiRYTUxMSU5UIiA9IHg7IHRoZW4KLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDk1MTdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBmYzMxNGZjM2E2NmM5MmZlNzNlMWEwY2VhNGY0OWQxMWIyOWUxZjQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDE1OjUwOjM4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBoZWxwL21lc29uLmJ1aWxkOiBkaXNhYmxlIHRoZSB1c2Ugb2YgeWVscAorCitJbiBwYXJ0aWN1bGFyIHRoaXMgYXZvaWRzIGNhbGxpbmcgaXRzdG9vbCB3aGljaCBvZS1jb3JlIGRvZXNuJ3QgcHJvdmlkZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBoZWxwL21lc29uLmJ1aWxkIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9oZWxwL21lc29uLmJ1aWxkIGIvaGVscC9tZXNvbi5idWlsZAoraW5kZXggZjcyMGFkZC4uY2JmZWIxZSAxMDA2NDQKKy0tLSBhL2hlbHAvbWVzb24uYnVpbGQKKysrKyBiL2hlbHAvbWVzb24uYnVpbGQKK0BAIC00Niw4ICs0Niw4IEBAIGhlbHBfbGluZ3VhcyA9IFsKKyAgICdzdicKKyBdCisgCistZ25vbWUueWVscChtZXNvbi5wcm9qZWN0X25hbWUoKSwKKy0gIHNvdXJjZXM6IGhlbHBfZmlsZXMsCistICBtZWRpYTogaGVscF9tZWRpYSwKKy0gIGxhbmd1YWdlczogaGVscF9saW5ndWFzLAorLSkKKysjZ25vbWUueWVscChtZXNvbi5wcm9qZWN0X25hbWUoKSwKKysjICBzb3VyY2VzOiBoZWxwX2ZpbGVzLAorKyMgIG1lZGlhOiBoZWxwX21lZGlhLAorKyMgIGxhbmd1YWdlczogaGVscF9saW5ndWFzLAorKyMpCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjAuMC5iYgppbmRleCA0NDUwZTE1Li5hNjhlMGY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIKQEAgLTgsNyArOCw3IEBACiBERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBndGsrMyBwMTEta2l0IGdsaWItMi4wIGxpYmdjcnlwdCBcCiAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdsaWJ4c2x0LW5hdGl2ZScsICcnLCBkKX0iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KK2luaGVyaXQgZ25vbWViYXNlIGd0ay1pY29uLWNhY2hlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbgogIyBkZXBlbmRzIG9uIGd0ayszLCBidXQgYWxzbyB4MTEgdGhyb3VnaCBndGsrLXgxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvMDAwMS1GaXgtd2l0aG91dC1saWJ0aWZmLW5vdC1oYXZpbmctYW4tZWZmZWN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvMDAwMS1GaXgtd2l0aG91dC1saWJ0aWZmLW5vdC1oYXZpbmctYW4tZWZmZWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNTRkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi8wMDAxLUZpeC13aXRob3V0LWxpYnRpZmYtbm90LWhhdmluZy1hbi1lZmZlY3QucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA0NjBiZWZjOTkyYWRiMzI0MzRiMDQwOGI0NTNiZTM5YTY4NjZjY2Y4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEwIE9jdCAyMDE3IDE0OjMzOjE4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCAtLXdpdGhvdXQtbGlidGlmZiBub3QgaGF2aW5nIGFuIGVmZmVjdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg3NzBdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMzE1ZTBjYy4uOThlNzgwYyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjc2LDcgKzY3Niw3IEBAIGlmIHRlc3QgeCRnaW9fY2FuX3NuaWZmID0geDsgdGhlbgorICAgQUNfREVGSU5FKEdES19QSVhCVUZfVVNFX0dJT19NSU1FLCAxLCBbRGVmaW5lIGlmIGdpbyBjYW4gc25pZmYgaW1hZ2UgZGF0YV0pCisgZmkKKyAKKy1BTV9DT05ESVRJT05BTChIQVZFX1RJRkYsIHRlc3QgIngkbGlidGlmZl9mb3VuZCIgIT0geCkKKytBTV9DT05ESVRJT05BTChIQVZFX1RJRkYsIHRlc3QgIngkbGlidGlmZl9mb3VuZCIgIT0geG5vKQorIEFNX0NPTkRJVElPTkFMKEhBVkVfUE5HLCB0ZXN0ICJ4JExJQlBORyIgIT0geCkKKyBBTV9DT05ESVRJT05BTChIQVZFX0pQRUcsIHRlc3QgIngkTElCSlBFRyIgIT0geCkKKyBBTV9DT05ESVRJT05BTChIQVZFX0pBU1BFUiwgdGVzdCAieCRMSUJKQVNQRVIiICE9IHgpCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi8wMDAxLXF1ZXJ5bG9hZGVycy1NYWtlLW91dHB1dC1tb3JlLXJlcHJvZHVjaWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtcXVlcnlsb2FkZXJzLU1ha2Utb3V0cHV0LW1vcmUtcmVwcm9kdWNpYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTIxNDE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtcXVlcnlsb2FkZXJzLU1ha2Utb3V0cHV0LW1vcmUtcmVwcm9kdWNpYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSAxMDQ5ZmJkODg3ZTUyZjk0YWZlYjAzZmM3OTQyYzAxYzE0M2ViZGZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IEZyaSwgOSBKdW4gMjAxNyAxMjowMToyNSArMDMwMAotU3ViamVjdDogW1BBVENIXSBxdWVyeWxvYWRlcnM6IE1ha2Ugb3V0cHV0IG1vcmUgcmVwcm9kdWNpYmxlCi0KLVJlcHJvZHVjaWJsZSBidWlsZHMgYXJlIGdvb2Q6IFNvcnQgdGhlIG91dHB1dCBieSBtb2R1bGUgbmFtZSBzbyB0aGF0Ci1zYW1lIGlucHV0IGFsd2F5cyBsZWFkcyB0byBzYW1lIG91dHB1dC4KLQotVGhpcyBzaG91bGQgYWxzbyBtYWtlIGdkay1waXhidWYtcHJpbnQtbWltZS10eXBlcyBvdXRwdXQgYW5kCi1nZGstcGl4YnVmLXRodW1ibmFpbGVyLnRodW1ibmFpbGVyIHJlcHJvZHVjaWJsZS4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzU5MgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGdkay1waXhidWYvcXVlcnlsb2FkZXJzLmMgfCAxMiArKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMgYi9nZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jCi1pbmRleCAzOTU2NzRhLi40YWM5YjI4IDEwMDY0NAotLS0tIGEvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYwotKysrIGIvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYwotQEAgLTM0Niw2ICszNDYsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICNpZmRlZiBVU0VfR01PRFVMRQotICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRoOwotICAgICAgICAgICAgICAgICBHRGlyICpkaXI7Ci0rICAgICAgICAgICAgICAgIEdMaXN0ICpsLCAqbW9kdWxlcyA9IE5VTEw7Ci0gCi0gICAgICAgICAgICAgICAgIHBhdGggPSBnX2dldGVudiAoIkdES19QSVhCVUZfTU9EVUxFRElSIik7Ci0gI2lmZGVmIEdfT1NfV0lOMzIKLUBAIC0zNjUsMTIgKzM2NiwxOSBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBsZW4gPSBzdHJsZW4gKGRlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IFNPRVhUX0xFTiAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNtcCAoZGVudCArIGxlbiAtIFNPRVhUX0xFTiwgU09FWFQpID09IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlcyA9IGdfbGlzdF9wcmVwZW5kIChtb2R1bGVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfc3RyZHVwIChkZW50KSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcXVlcnlfbW9kdWxlIChjb250ZW50cywgcGF0aCwgZGVudCkpCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZBTFNFOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICBnX2Rpcl9jbG9zZSAoZGlyKTsKLSAgICAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgICBtb2R1bGVzID0gZ19saXN0X3NvcnQgKG1vZHVsZXMsIChHQ29tcGFyZUZ1bmMpc3RyY21wKTsKLSsgICAgICAgICAgICAgICAgZm9yIChsID0gbW9kdWxlczsgbCAhPSBOVUxMOyBsID0gbC0+bmV4dCkKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5X21vZHVsZSAoY29udGVudHMsIHBhdGgsIGwtPmRhdGEpKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZBTFNFOwotKwotKyAgICAgICAgICAgICAgICBnX2xpc3RfZnJlZV9mdWxsIChtb2R1bGVzLCBnX2ZyZWUpOwotICNlbHNlCi0gICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKGNvbnRlbnRzLCAiIyBkeW5hbWljIGxvYWRpbmcgb2YgbW9kdWxlcyBub3Qgc3VwcG9ydGVkXG4iKTsKLSAjZW5kaWYKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvZmF0YWwtbG9hZGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvZmF0YWwtbG9hZGVyLnBhdGNoCmluZGV4IDcwMTQ2YzYuLjdkMGQ1NGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmL2ZhdGFsLWxvYWRlci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi9mYXRhbC1sb2FkZXIucGF0Y2gKQEAgLTEsMTEgKzEsMjAgQEAKK0Zyb20gYjZhN2IzMDUyMjQ1NWNhYjM5YTBiOWVhODQ2MzMxMzM4MDE0NmU3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBUdWUsIDEgQXByIDIwMTQgMTc6MjM6MzYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGdkay1waXhidWY6IGFkZCBhbiBvcHRpb24gc28gdGhhdCBsb2FkZXIgZXJyb3JzIGFyZSBmYXRhbAorCiBJZiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzcGVjaWZpZWQgc2V0IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBtYWluKCkgdG8KIG5vbi16ZXJvIGlmIHRoZSBsb2FkZXIgaGFkIGVycm9ycyAobWlzc2luZyBsaWJyYXJpZXMsIGdlbmVyYWxseSkuCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAorLS0tCisgZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYyB8IDE5ICsrKysrKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKwogZGlmZiAtLWdpdCBhL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMgYi9nZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jCi1pbmRleCBhOWNhMDE1Li4zOTU2NzRhIDEwMDY0NAoraW5kZXggYTgxYzgwNC4uMzUwYmVjOCAxMDA2NDQKIC0tLSBhL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKICsrKyBiL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKIEBAIC0xNDYsNyArMTQ2LDcgQEAgd3JpdGVfbG9hZGVyX2luZm8gKEdTdHJpbmcgKmNvbnRlbnRzLCBjb25zdCBjaGFyICpwYXRoLCBHZGtQaXhidWZGb3JtYXQgKmluZm8pCkBAIC00NywxNyArNTYsMTggQEAKICAKICAjaWZkZWYgR19PU19XSU4zMgogICAgICAgICAgZ2NoYXIgKmxpYmRpcjsKLUBAIC0zNjAsNyArMzY1LDggQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgbGVuID0gc3RybGVuIChkZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBTT0VYVF9MRU4gJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAgKGRlbnQgKyBsZW4gLSBTT0VYVF9MRU4sIFNPRVhUKSA9PSAwKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X21vZHVsZSAoY29udGVudHMsIHBhdGgsIGRlbnQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5X21vZHVsZSAoY29udGVudHMsIHBhdGgsIGRlbnQpKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZ19kaXJfY2xvc2UgKGRpcik7Ci1AQCAtMzc4LDcgKzM4NCw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMzcwLDcgKzM3NSw5IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgbW9kdWxlcyA9IGdfbGlzdF9zb3J0IChtb2R1bGVzLCAoR0NvbXBhcmVGdW5jKXN0cmNtcCk7CisgICAgICAgICAgICAgICAgIGZvciAobCA9IG1vZHVsZXM7IGwgIT0gTlVMTDsgbCA9IGwtPm5leHQpCistICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlfbW9kdWxlIChjb250ZW50cywgcGF0aCwgbC0+ZGF0YSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxdWVyeV9tb2R1bGUgKGNvbnRlbnRzLCBwYXRoLCBsLT5kYXRhKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGQUxTRTsKKysKKyAgICAgICAgICAgICAgICAgZ19saXN0X2ZyZWVfZnVsbCAobW9kdWxlcywgZ19mcmVlKTsKKyAjZWxzZQorICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChjb250ZW50cywgIiMgZHluYW1pYyBsb2FkaW5nIG9mIG1vZHVsZXMgbm90IHN1cHBvcnRlZFxuIik7CitAQCAtMzg1LDcgKzM5Miw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5maWxlbmFtZSA9IGdfbG9jYWxlX3RvX3V0ZjggKGluZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCBOVUxMLCBOVUxMLCBOVUxMKTsKICAjZW5kaWYKQEAgLTY3LDcgKzc3LDcgQEAKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBnX2ZyZWUgKGN3ZCk7CiAgICAgICAgICB9Ci1AQCAtMzk0LDUgKzQwMSw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtNDAxLDUgKzQwOSw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIGdfcHJpbnQgKCIlc1xuIiwgY29udGVudHMtPnN0cik7CiAgCkBAIC03NywzICs4Nyw2IEBACiArICAgICAgICBlbHNlCiArICAgICAgICAgICAgICAgIHJldHVybiAwOwogIH0KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5Yzg0YzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjExLmJiCkBAIC0wLDAgKzEsMTAyIEBACitTVU1NQVJZID0gIkltYWdlIGxvYWRpbmcgbGlicmFyeSBmb3IgR1RLKyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKKworTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGstcGl4YnVmL2dkay1waXhidWYuaDtlbmRsaW5lPTI2O21kNT03MmIzOWRhN2NiZGRlMmU2NjUzMjlmZWY2MThlMWQ2YiIKKworU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYtbmF0aXZlIHNoYXJlZC1taW1lLWluZm8iCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9leHRlbmRpbmctbGliaW5zdGFsbC1kZXBlbmRlbmNpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZhdGFsLWxvYWRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmFpbHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC13aXRob3V0LWxpYnRpZmYtbm90LWhhdmluZy1hbi1lZmZlY3QucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZTg0ZTU0ODVjMTdjZTdjMjVkZjc3ZmU3NmViMmQ2YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZTYyYWI4NzI1MDQxMzE1NmVkNzJlZjc1NjM0N2IxMDIwOGMwMGU3NmIyMjJkODJkOWVkMzYxZWQ5ZGRlMmYzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwaXhidWZjYWNoZSBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgbGliX3BhY2thZ2UKKworTElCViA9ICIyLjEwLjAiCisKK0dES19QSVhCVUZfTE9BREVSUyA/PSAicG5nIGpwZWciCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0dES19QSVhCVUZfTE9BREVSU30iCitQQUNLQUdFQ09ORklHX2xpbnV4c3RkYmFzZSA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gJHtHREtfUElYQlVGX0xPQURFUlN9IgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgorCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLWxpYnBuZywtLXdpdGhvdXQtbGlicG5nLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS13aXRoLWxpYmpwZWcsLS13aXRob3V0LWxpYmpwZWcsanBlZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS13aXRoLWxpYnRpZmYsLS13aXRob3V0LWxpYnRpZmYsdGlmZiIKK1BBQ0tBR0VDT05GSUdbanBlZzIwMDBdID0gIi0td2l0aC1saWJqYXNwZXIsLS13aXRob3V0LWxpYmphc3BlcixqYXNwZXIiCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteDExLC0td2l0aG91dC14MTEsdmlydHVhbC9saWJ4MTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS14bGliIgorCisjIEZvciBHSU8gaW1hZ2UgdHlwZSBzbmlmZmluZworUkRFUEVORFNfJHtQTn0gPSAic2hhcmVkLW1pbWUtaW5mbyIKKworRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKK0FMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCisKK0ZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAorICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkke2luY2x1ZGVkaXJ9LyogXAorCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCisiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKK1BBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQorCisgICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQorCisgICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsICdebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKKyAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCisKKyAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKKyAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KKyAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfJXMtcHRlc3QiICUgZC5nZXRWYXIoJ1BOJyksICIgIiArIHBhY2thZ2VzKQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIE1vdmUgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKKwkjIGluIG11bHRpbGliIGJ1aWxkcy4KKwltdiAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgImxpYnBpeGJ1ZmxvYWRlci0qLmxhIiAtZXhlYyBybSBce1x9IFw7CisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAorCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMzNTkwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotU1VNTUFSWSA9ICJJbWFnZSBsb2FkaW5nIGxpYnJhcnkgZm9yIEdUSysiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmd0ay5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLmg7ZW5kbGluZT0yNjttZDU9NzJiMzlkYTdjYmRkZTJlNjY1MzI5ZmVmNjE4ZTFkNmIiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnZGstcGl4YnVmLW5hdGl2ZSBzaGFyZWQtbWltZS1pbmZvIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZXh0ZW5kaW5nLWxpYmluc3RhbGwtZGVwZW5kZW5jaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9mYXRhbC1sb2FkZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhaWx1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1xdWVyeWxvYWRlcnMtTWFrZS1vdXRwdXQtbW9yZS1yZXByb2R1Y2libGUucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlMGFhYTAwNjFlYjEyNjY3YjMyYjI3NDcyMjMwYjk2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDY4ZTUyODNjZGMwYmY5YmRhOTljM2U2YTFkNTJhZDA3YTAzMzY0ZmExODZiNmMyNmNmYzg2ZmNkMzk2YTE5IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwaXhidWZjYWNoZSBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgbGliX3BhY2thZ2UKLQotTElCViA9ICIyLjEwLjAiCi0KLUdES19QSVhCVUZfTE9BREVSUyA/PSAicG5nIGpwZWciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0dES19QSVhCVUZfTE9BREVSU30iCi1QQUNLQUdFQ09ORklHX2xpbnV4c3RkYmFzZSA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gJHtHREtfUElYQlVGX0xPQURFUlN9IgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgotCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLWxpYnBuZywtLXdpdGhvdXQtbGlicG5nLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS13aXRoLWxpYmpwZWcsLS13aXRob3V0LWxpYmpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS13aXRoLWxpYnRpZmYsLS13aXRob3V0LWxpYnRpZmYsdGlmZiIKLVBBQ0tBR0VDT05GSUdbanBlZzIwMDBdID0gIi0td2l0aC1saWJqYXNwZXIsLS13aXRob3V0LWxpYmphc3BlcixqYXNwZXIiCi0KLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteDExLC0td2l0aG91dC14MTEsdmlydHVhbC9saWJ4MTEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS14bGliIgotCi0jIEZvciBHSU8gaW1hZ2UgdHlwZSBzbmlmZmluZwotUkRFUEVORFNfJHtQTn0gPSAic2hhcmVkLW1pbWUtaW5mbyIKLQotRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKLUFMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCi0KLUZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIgXAotCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAotICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkke2luY2x1ZGVkaXJ9LyogXAotCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCi0iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKLVBBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQotCi0gICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQotCi0gICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsICdebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKLSAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCi0KLSAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKLSAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KLSAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfJXMtcHRlc3QiICUgZC5nZXRWYXIoJ1BOJyksICIgIiArIHBhY2thZ2VzKQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIE1vdmUgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKLQkjIGluIG11bHRpbGliIGJ1aWxkcy4KLQltdiAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgImxpYnBpeGJ1ZmxvYWRlci0qLmxhIiAtZXhlYyBybSBce1x9IFw7Ci0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAotCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtRGlzYWJsZS1saWJzZWNjb21wLXN5Y2FsbC1maWx0ZXJpbmctbWVjaGFuaXNtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvMDAwMS1EaXNhYmxlLWxpYnNlY2NvbXAtc3ljYWxsLWZpbHRlcmluZy1tZWNoYW5pc20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBiMDc0MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtRGlzYWJsZS1saWJzZWNjb21wLXN5Y2FsbC1maWx0ZXJpbmctbWVjaGFuaXNtLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gOWRmYWRhMDZmOGQyZTAyZDdhMDRmNzkzYmE2ZTFkNGEyYWE1ZmZiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCA1IE9jdCAyMDE3IDE0OjU0OjE3ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgbGlic2VjY29tcCAoc3ljYWxsIGZpbHRlcmluZyBtZWNoYW5pc20pCisKK1Vwc3RyZWFtIGZvcmdvdCB0byBtYWtlIGl0IG9wdGlvbmFsLCBhbmQgaXQgaXMgbm90IGN1cnJlbnRseSB1c2VkIGluIFlvY3RvCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTEgLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDg2YmNmMWYuLjg5MTFmMTkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE1NywxNyArMTU3LDYgQEAgZWxzZQorIGZpCisgCisgU0VDQ09NUF9QS0c9IiIKKy1kbmwgQ2hlY2sgZm9yIGJ1YmJsZXdyYXAgY29tcGF0aWJsZSBwbGF0Zm9ybQorLWNhc2UgJGhvc3Rfb3MgaW4KKy0gIGxpbnV4KikKKy0gICAgUEtHX0NIRUNLX01PRFVMRVMoTElCU0VDQ09NUCwgW2xpYnNlY2NvbXBdKQorLSAgICBTRUNDT01QX1BLRz0ibGlic2VjY29tcCIKKy0gICAgQUNfREVGSU5FX1VOUVVPVEVEKF9HTlVfU09VUkNFLCAxLCBbRGVmaW5lIHRvIGluY2x1ZGUgR05VIGV4dGVuc2lvbnNdKQorLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9CV1JBUCwgMSwgW0RlZmluZSB0byAxIGlmIEJ1YmJsZXdyYXAgc3VwcG9ydCBpcyBhdmFpbGFibGVdKQorLSAgICBBQ19ERUZJTkUoW0VOQUJMRV9TRUNDT01QXSwgWzFdLCBbRGVmaW5lIGlmIHVzaW5nIHNlY2NvbXBdKQorLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoSU5TVEFMTF9QUkVGSVgsICIkcHJlZml4IiwgW1BhdGggdG8gbGlicmFyeSBpbnN0YWxsIHByZWZpeF0pCistICAgIDs7CistZXNhYworIAorIGRubCBwa2ctY29uZmlnIGRlcGVuZGVuY3kgY2hlY2tzCisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNjMTUyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWFzc3VtZS10aW1lX3QtaXMtbG9uZy5wYXRjaApAQCAtMCwwICsxLDYxIEBACitGcm9tIDkwNDg5MzliNzZiM2JkMTA3ODNhZGI3OWVkMGFhZjZjZDEzODk1Y2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorRGF0ZTogVHVlLCAxMyBEZWMgMjAxNiAyMDozOTo1MSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gZ25vbWUtZGVza3RvcC10aHVtYm5haWw6IGRvbid0IGNvbnZlcnQgdGltZV90IHRvIGxvbmcKKworRXhwbGljaXRseSB1c2Ugc3RyZnRpbWUrc3RycHRpbWUgcmF0aGVyIHRoYW4gc25wcmludGYrYXRvbC4gVGhpcyBmaXhlcyB0aGUKK2J1aWxkIGZvciBYMzIsIHdoZXJlIGxvbmcncyBzaXplIGRvZXNuJ3QgbWF0Y2ggdGhhdCBvZiB0aW1lX3QuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKworCitNb2RpZnkgcGF0Y2ggZGVzY3JpYmVkIGFib3ZlIHRvIGVsaW1pbmF0ZSByZXBsYWNlbWVudCBvZgorCitnX3NucHJpbnRmIChtdGltZV9zdHIsIDIxLCAiJSIgR19HSU5UNjRfRk9STUFULCAoZ2ludDY0KSBtdGltZSkKKword2hpY2ggaXMgbm90IG5lY2Vzc2FyeS4gIFJldGFpbiByZXBsYWNlbWVudCBvZiBhdG9sKCkuCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworLS0tCisgbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jIHwgMTYgKysrKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jIGIvbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jCitpbmRleCBlNTZjM2Q3Li41ZDk2YmYzIDEwMDY0NAorLS0tIGEvbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jCisrKysgYi9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMKK0BAIC0xMjAsNiArMTIwLDggQEAKKyAgKiBTaW5jZTogMi4yCisgICovCisgCisrI2RlZmluZSBfWE9QRU5fU09VUkNFCisrCisgI2luY2x1ZGUgPGNvbmZpZy5oPgorIAorICNpbmNsdWRlIDxnbGliLmg+CitAQCAtMTMxOSw2ICsxMzI2LDcgQEAgZ25vbWVfZGVza3RvcF90aHVtYm5haWxfaXNfdmFsaWQgKEdka1BpeGJ1ZiAgICAgICAgICAqcGl4YnVmLAorIHsKKyAgIGNvbnN0IGNoYXIgKnRodW1iX3VyaSwgKnRodW1iX210aW1lX3N0cjsKKyAgIHRpbWVfdCB0aHVtYl9tdGltZTsKKysgIHN0cnVjdCB0bSB0bXBfbXRpbWU7CisgCisgICB0aHVtYl91cmkgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpVUkkiKTsKKyAgIGlmIChnX3N0cmNtcDAgKHVyaSwgdGh1bWJfdXJpKSAhPSAwKQorQEAgLTEzMjcsNyArMTMzNSwxMSBAQCBnbm9tZV9kZXNrdG9wX3RodW1ibmFpbF9pc192YWxpZCAoR2RrUGl4YnVmICAgICAgICAgICpwaXhidWYsCisgICB0aHVtYl9tdGltZV9zdHIgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpNVGltZSIpOworICAgaWYgKCF0aHVtYl9tdGltZV9zdHIpCisgICAgIHJldHVybiBGQUxTRTsKKy0gIHRodW1iX210aW1lID0gYXRvbCAodGh1bWJfbXRpbWVfc3RyKTsKKysgIGlmICghc3RycHRpbWUgKHRodW1iX210aW1lX3N0ciwgIiVzIiwgJnRtcF9tdGltZSkpCisrICAgIHJldHVybiBGQUxTRTsKKysgIHRodW1iX210aW1lID0gbWt0aW1lICgmdG1wX210aW1lKTsKKysgIGlmICghdGh1bWJfbXRpbWUpCisrICAgIHJldHVybiBGQUxTRTsKKyAgIGlmIChtdGltZSAhPSB0aHVtYl9tdGltZSkKKyAgICAgcmV0dXJuIEZBTFNFOworIAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtY29udmVydC10aW1lX3QtdG8tbG9uZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWNvbnZlcnQtdGltZV90LXRvLWxvbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4YTA2OWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtY29udmVydC10aW1lX3QtdG8tbG9uZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gYWRmYTBjOGY5ZmVjMWZhYWM0YmVhNmE5NGQ5NDdlYTMyZTU4NTkyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1EYXRlOiBUdWUsIDEzIERlYyAyMDE2IDIwOjM5OjUxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdub21lLWRlc2t0b3AtdGh1bWJuYWlsOiBkb24ndCBjb252ZXJ0IHRpbWVfdCB0byBsb25nCi0KLUV4cGxpY2l0bHkgdXNlIHN0cmZ0aW1lK3N0cnB0aW1lIHJhdGhlciB0aGFuIHNucHJpbnRmK2F0b2wuIFRoaXMgZml4ZXMgdGhlCi1idWlsZCBmb3IgWDMyLCB3aGVyZSBsb25nJ3Mgc2l6ZSBkb2Vzbid0IG1hdGNoIHRoYXQgb2YgdGltZV90LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci0tLS0KLSBsaWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMgfCAxNiArKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMgYi9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMKLWluZGV4IDM5NDYzMDkuLmI3NTYzMzMgMTAwNjQ0Ci0tLS0gYS9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMKLSsrKyBiL2xpYmdub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwuYwotQEAgLTEyNiw2ICsxMjYsOCBAQAotICAqIFNpbmNlOiAyLjIKLSAgKi8KLSAKLSsjZGVmaW5lIF9YT1BFTl9TT1VSQ0UKLSsKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotQEAgLTE0ODMsNiArMTQ4NSw3IEBAIHNhdmVfdGh1bWJuYWlsIChHZGtQaXhidWYgICpwaXhidWYsCi0gICBjaGFyICp0bXBfcGF0aCA9IE5VTEw7Ci0gICBpbnQgdG1wX2ZkOwotICAgY2hhciBtdGltZV9zdHJbMjFdOwotKyAgc3RydWN0IHRtICp0bXBfbXRpbWUgPSBOVUxMOwotICAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7Ci0gICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSAgIGNvbnN0IGNoYXIgKndpZHRoLCAqaGVpZ2h0OwotQEAgLTE1MDIsNyArMTUwNSwxMSBAQCBzYXZlX3RodW1ibmFpbCAoR2RrUGl4YnVmICAqcGl4YnVmLAotICAgICBnb3RvIG91dDsKLSAgIGNsb3NlICh0bXBfZmQpOwotIAotLSAgZ19zbnByaW50ZiAobXRpbWVfc3RyLCAyMSwgIiVsZCIsICBtdGltZSk7Ci0rICB0bXBfbXRpbWUgPSBsb2NhbHRpbWUgKCZtdGltZSk7Ci0rICBpZiAoIXRtcF9tdGltZSkKLSsgICAgZ290byBvdXQ7Ci0rICBzdHJmdGltZSAobXRpbWVfc3RyLCAyMSwgIiVzIiwgdG1wX210aW1lKTsKLSsgIGZyZWUgKHRtcF9tdGltZSk7Ci0gICB3aWR0aCA9IGdka19waXhidWZfZ2V0X29wdGlvbiAocGl4YnVmLCAidEVYdDo6VGh1bWI6OkltYWdlOjpXaWR0aCIpOwotICAgaGVpZ2h0ID0gZ2RrX3BpeGJ1Zl9nZXRfb3B0aW9uIChwaXhidWYsICJ0RVh0OjpUaHVtYjo6SW1hZ2U6OkhlaWdodCIpOwotIAotQEAgLTE2OTUsNiArMTcwMiw3IEBAIGdub21lX2Rlc2t0b3BfdGh1bWJuYWlsX2lzX3ZhbGlkIChHZGtQaXhidWYgICAgICAgICAgKnBpeGJ1ZiwKLSB7Ci0gICBjb25zdCBjaGFyICp0aHVtYl91cmksICp0aHVtYl9tdGltZV9zdHI7Ci0gICB0aW1lX3QgdGh1bWJfbXRpbWU7Ci0rICBzdHJ1Y3QgdG0gdG1wX210aW1lOwotICAgCi0gICB0aHVtYl91cmkgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpVUkkiKTsKLSAgIGlmICghdGh1bWJfdXJpKQotQEAgLTE3MDUsNyArMTcxMywxMSBAQCBnbm9tZV9kZXNrdG9wX3RodW1ibmFpbF9pc192YWxpZCAoR2RrUGl4YnVmICAgICAgICAgICpwaXhidWYsCi0gICB0aHVtYl9tdGltZV9zdHIgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpNVGltZSIpOwotICAgaWYgKCF0aHVtYl9tdGltZV9zdHIpCi0gICAgIHJldHVybiBGQUxTRTsKLS0gIHRodW1iX210aW1lID0gYXRvbCAodGh1bWJfbXRpbWVfc3RyKTsKLSsgIGlmICghc3RycHRpbWUgKHRodW1iX210aW1lX3N0ciwgIiVzIiwgJnRtcF9tdGltZSkpCi0rICAgIHJldHVybiBGQUxTRTsKLSsgIHRodW1iX210aW1lID0gbWt0aW1lICgmdG1wX210aW1lKTsKLSsgIGlmICghdGh1bWJfbXRpbWUpCi0rICAgIHJldHVybiBGQUxTRTsKLSAgIGlmIChtdGltZSAhPSB0aHVtYl9tdGltZSkKLSAgICAgcmV0dXJuIEZBTFNFOwotICAgCi0tLSAKLTIuOC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI0LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzFjMjEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI0LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIGxpYnJhcnkgZm9yIHJlYWRpbmcgLmRlc2t0b3AgZmlsZXMiCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLUJQTiA9ICJnbm9tZS1kZXNrdG9wIgotCi1pbmhlcml0IGdub21lIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJhZjdjNmEyNDNkZjdhMzM1YTAxMGJkYzA1YjM0Y2E5MyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjhmYTFkZTY2YTZhNzU5NjNiZmZjNzliMDFhNjA0MzRjNzEyMzdkNDRjNTFiZWNhMDljMGY3MTRhMDMyZDc4NWUiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1jb252ZXJ0LXRpbWVfdC10by1sb25nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1SZW1vdmUtZ25vbWUtY29tbW9uLW1hY3JvLWNhbGxzLnBhdGNoIFwKLSIKLQotREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ2NvbmYgdmlydHVhbC9saWJ4MTEgZ3RrKzMgZ2xpYi0yLjAgc3RhcnR1cC1ub3RpZmljYXRpb24geGtleWJvYXJkLWNvbmZpZyBpc28tY29kZXMgdWRldiIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3RrLWRvYwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXNrdG9wLWRvY3MiCi0KLVBBQ0tBR0VTID0rICJsaWJnbm9tZS1kZXNrdG9wMyIKLUZJTEVTX2xpYmdub21lLWRlc2t0b3AzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7ZGF0YWRpcn0vbGliZ25vbWUtZGVza3RvcCovcG5wLmlkcyAke2RhdGFkaXJ9L2dub21lLyp4bWwiCi0KLVJSRUNPTU1FTkRTX2xpYmdub21lLWRlc2t0b3AzICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5ZGM5YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI2LjIuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJHTk9NRSBsaWJyYXJ5IGZvciByZWFkaW5nIC5kZXNrdG9wIGZpbGVzIgorU0VDVElPTiA9ICJ4MTEvZ25vbWUiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitCUE4gPSAiZ25vbWUtZGVza3RvcCIKKworaW5oZXJpdCBnbm9tZSBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNmNlZTJlY2Q2NzdkODdlYWEwZWI1ZWJmYTdiNDVmYjMiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmNzU2MWE3YTMxM2ZjNDc0YjJjMzkwY2Q5Njk2ZGYxZjVjMWUxNTU2MDgwZTQzZjRhZmUwNDJiMTA2MGU1ZjJhIgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtYXNzdW1lLXRpbWVfdC1pcy1sb25nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWxpYnNlY2NvbXAtc3ljYWxsLWZpbHRlcmluZy1tZWNoYW5pc20ucGF0Y2ggXAorICAgICAgICAgICAiCisKK0RFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdjb25mIHZpcnR1YWwvbGlieDExIGd0ayszIGdsaWItMi4wIHN0YXJ0dXAtbm90aWZpY2F0aW9uIHhrZXlib2FyZC1jb25maWcgaXNvLWNvZGVzIHVkZXYiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGd0ay1kb2MKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVza3RvcC1kb2NzIgorCitQQUNLQUdFUyA9KyAibGliZ25vbWUtZGVza3RvcDMiCitGSUxFU19saWJnbm9tZS1kZXNrdG9wMyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9L2xpYmdub21lLWRlc2t0b3AqL3BucC5pZHMgJHtkYXRhZGlyfS9nbm9tZS8qeG1sIgorCitSUkVDT01NRU5EU19saWJnbm9tZS1kZXNrdG9wMyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKaW5kZXggZTdhYzk3Yi4uOTZlYzk2YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKQEAgLTEsMjkgKzEsMjcgQEAKLUZyb20gZDJiOWFkOGE4MGJmOTMyMGZlMzVjOWFlZThmNTJlNTVlYmQ0MGUwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODhlZDk5NmNjOWUyYjI5NmNhY2ZkYmVlY2U0YmUyOGE5MGJhYjUxMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBEYXRlOiBUdWUsIDMwIE1heSAyMDE3IDE0OjU1OjQ5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IHVzZSBBQ19DQU5PTklDQUxfSE9TVAorU3ViamVjdDogW1BBVENIIDEvMl0gRG9uJ3QgdXNlIEFDX0NBTk9OSUNBTF9IT1NUCiAKIFRoaXMgd29uJ3Qgd29yayB3aGVuIGJ1aWxkaW5nIGFsbGFyY2ggKGFuZCBpcyBvbmx5IHVzZWQgdG8gZmluZCBvdXQgaWYKIHRhcmdldCBpcyB3aW5kb3dzKS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CisKIC0tLQogIGNvbmZpZ3VyZS5hYyB8IDEgLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGQ4NTViN2EuLjY5MDhmNTkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYworSW5kZXg6IGFkd2FpdGEtaWNvbi10aGVtZS0zLjI2LjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYWR3YWl0YS1pY29uLXRoZW1lLTMuMjYuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGFkd2FpdGEtaWNvbi10aGVtZS0zLjI2LjEvY29uZmlndXJlLmFjCiBAQCAtMyw3ICszLDYgQEAgQUNfUFJFUkVRKDIuNTMpCiAgCi0gQUNfSU5JVChbYWR3YWl0YS1pY29uLXRoZW1lXSwgWzMuMjQuMF0sCisgQUNfSU5JVChbYWR3YWl0YS1pY29uLXRoZW1lXSwgWzMuMjYuMV0sCiAgICAgICAgICBbaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9YWR3YWl0YS1pY29uLXRoZW1lXSkKIC1BQ19DQU5PTklDQUxfSE9TVAogIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKICBBQ19DT05GSUdfU1JDRElSKFtpbmRleC50aGVtZS5pbl0pCiAgCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM0MDUzNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2Fkd2FpdGEtaWNvbi10aGVtZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAieDExL2dub21lIgotCi1MSUNFTlNFID0gIkxHUEwtMy4wIHwgQ0MtQlktU0EtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzg0Y2FjODhlNDZmYzA3NjQ3ZWEwN2U2YzI0ZWViN2MiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNjY2FjMGQ2MDBmZmM5MzZkMmFkZmI4MGU5MjQ1YmM1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjZjc5ZmYzYmQzNDAyNTQ3MzdjZTRkMjhiODdmMGNjZWU0YjMzNThjZDNjZDVjZDExZGM3YjQyZjQxYjI3MmEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgQnVpbGQgdXNlcyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyB0byBjcmVhdGUgcG5nIHZlcnNpb25zOgotICAgICAgICAjIG5vIG5lZWQgdG8gc3RvcmUgdGhlIHN2Z3MgYW55bW9yZS4KLQlybSAtZiAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLnN2ZyBcCi0JICAgICAgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL3NjYWxhYmxlLyovKi1zeW1ib2xpYy1ydGwuc3ZnCi19Ci0KLVBBQ0tBR0VTID0gIiR7UE59LWN1cnNvcnMgJHtQTn0tc3ltYm9saWMtaGlyZXMgJHtQTn0tc3ltYm9saWMgJHtQTn0taGlyZXMgJHtQTn0iCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotUkNPTkZMSUNUU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotUlBST1ZJREVTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi0KLUZJTEVTXyR7UE59LWN1cnNvcnMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvY3Vyc29ycy8iCi1GSUxFU18ke1BOfS1zeW1ib2xpYy1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS85Nng5Ni8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzY0eDY0LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNDh4NDgvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8zMngzMi8qLyouc3ltYm9saWMucG5nIgotRklMRVNfJHtQTn0tc3ltYm9saWMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMTZ4MTYvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNHgyNC8qLyouc3ltYm9saWMucG5nIgotRklMRVNfJHtQTn0taGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjU2eDI1Ni8gXAotICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNTEyeDUxMi8iCi1GSUxFU18ke1BOfSA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8gXAotICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL3BrZ2NvbmZpZy9hZHdhaXRhLWljb24tdGhlbWUucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI2LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQzN2Q1ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjYuMS5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2Fkd2FpdGEtaWNvbi10aGVtZS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorCitMSUNFTlNFID0gIkxHUEwtMy4wIHwgQ0MtQlktU0EtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzg0Y2FjODhlNDZmYzA3NjQ3ZWEwN2U2YzI0ZWViN2MiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjNlZjg3ZTc4OTcxMWU1MTMwNzkyZDRiNTM2NmMwMDVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI4YmE3MzkyYzc3NjE5OTZlZmQ3ODA3NzkxNjdlYTZjOTQwZWVkZmIxYmYzN2NmZTliY2NiNzAyMWY1NGQ3OWQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgQnVpbGQgdXNlcyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyB0byBjcmVhdGUgcG5nIHZlcnNpb25zOgorICAgICAgICAjIG5vIG5lZWQgdG8gc3RvcmUgdGhlIHN2Z3MgYW55bW9yZS4KKwlybSAtZiAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLnN2ZyBcCisJICAgICAgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL3NjYWxhYmxlLyovKi1zeW1ib2xpYy1ydGwuc3ZnCit9CisKK1BBQ0tBR0VTID0gIiR7UE59LWN1cnNvcnMgJHtQTn0tc3ltYm9saWMtaGlyZXMgJHtQTn0tc3ltYm9saWMgJHtQTn0taGlyZXMgJHtQTn0iCisKK1JSRVBMQUNFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgorUkNPTkZMSUNUU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgorUlBST1ZJREVTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCisKK0ZJTEVTXyR7UE59LWN1cnNvcnMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvY3Vyc29ycy8iCitGSUxFU18ke1BOfS1zeW1ib2xpYy1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS85Nng5Ni8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzY0eDY0LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNDh4NDgvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8zMngzMi8qLyouc3ltYm9saWMucG5nIgorRklMRVNfJHtQTn0tc3ltYm9saWMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMTZ4MTYvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNHgyNC8qLyouc3ltYm9saWMucG5nIgorRklMRVNfJHtQTn0taGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjU2eDI1Ni8gXAorICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNTEyeDUxMi8iCitGSUxFU18ke1BOfSA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8gXAorICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL3BrZ2NvbmZpZy9hZHdhaXRhLWljb24tdGhlbWUucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mL2NyZWF0ZV9jb25maWdfZGlyZWN0b3J5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZi9jcmVhdGVfY29uZmlnX2RpcmVjdG9yeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDcyZTczCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZi9jcmVhdGVfY29uZmlnX2RpcmVjdG9yeS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworSW4gc29tZSBjaXJjdW1zdGFuY2VzLCBnY29uZiBpc24ndCBhYmxlIHRvIHNhdmUgY29uZmlndXJhdGlvbnMKK2JlY2F1c2Ugfi8uY29uZmlnIGZvbGRlciBha2Egcm9vdF9kaXIgZG9lc24ndCBleGlzdC4KK1RoaXMgaXNzdWUgd2FzIG5vdCBzZWVuIGJlZm9yZSBiZWNhdXNlIH4vLmNvbmZpZyBkaXJlY3RvcnkgaXMgc2hhcmVkCitiZXR3ZWVuIHNldmVyYWwgcGFja2FnZXMgYW5kIG9uZSBvZiB0aG9zZSBwYWNrYWdlcyB1c3VhbGx5IGNyZWF0ZXMgaXQKK2J5IHRoZSB0aW1lIGdjb25mIHdhbnRzIHRvIHVzZSBpdC4KKworVGhpcyBwYXRjaCBtYWtlcyBzdXJlIHRoYXQgZ2NvbmYgY3JlYXRlcyB0aGUgLmNvbmZpZyBkaXJlY3RvcnkgaWYgaXQKK2RvZXNuJ3QgZXhpc3QsIGFsb25nIHdpdGggdGhlIGdjb25mIGRpcmVjdG9yeSBpbnNpZGUgaXQuCisKK1NpZ25lZC1vZmYtYnk6IEphZXdvbiBMZWUgPGphZXdvbi5sZWVAeGlsaW54LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyQHhpbGlueC5jb20+CisKKworSW5kZXg6IEdDb25mLTMuMi42L2JhY2tlbmRzL21hcmt1cC1iYWNrZW5kLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBHQ29uZi0zLjIuNi5vcmlnL2JhY2tlbmRzL21hcmt1cC1iYWNrZW5kLmMKKysrKyBHQ29uZi0zLjIuNi9iYWNrZW5kcy9tYXJrdXAtYmFja2VuZC5jCitAQCAtMjc2LDcgKzI3Niw3IEBAIHJlc29sdmVfYWRkcmVzcyAoY29uc3QgY2hhciAqYWRkcmVzcywKKyAgICAgICAvKiBkaXJfbW9kZSB3aXRob3V0IHNlYXJjaCBiaXRzICovCisgICAgICAgZmlsZV9tb2RlID0gZGlyX21vZGUgJiAofjAxMTEpOworICAgICB9CistICBlbHNlIGlmIChnX21rZGlyIChyb290X2RpciwgZGlyX21vZGUpIDwgMCkKKysgIGVsc2UgaWYgKGdfbWtkaXJfd2l0aF9wYXJlbnRzIChyb290X2RpciwgZGlyX21vZGUpIDwgMCkKKyAgICAgeworICAgICAgIC8qIEVycm9yIG91dCBldmVuIG9uIEVFWElTVCAtIHNob3VsZG4ndCBoYXBwZW4gYW55d2F5ICovCisgICAgICAgZ2NvbmZfc2V0X2Vycm9yIChlcnIsIEdDT05GX0VSUk9SX0ZBSUxFRCwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmZfMy4yLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mXzMuMi42LmJiCmluZGV4IDkyZmQxMmMuLjEyMGFlM2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmZfMy4yLjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZl8zLjIuNi5iYgpAQCAtMTEsNiArMTEsNyBAQAogU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vR0NvbmYvJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS9HQ29uZi0ke1BWfS50YXIueHo7bmFtZT1hcmNoaXZlIFwKICAgICAgICAgICAgZmlsZTovL3JlbW92ZV9wbHVzX2Zyb21faW52YWxpZF9jaGFyYWN0ZXJzX2xpc3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdW5hYmxlLWNvbm5lY3QtZGJ1cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jcmVhdGVfY29uZmlnX2RpcmVjdG9yeS5wYXRjaCBcCiAiCiAKIFNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjJiMTY5OTZkMGU0YjExMjg1NmVlNWM1OTEzMGU4MjJjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWFkZC1hLWxpYi1kaXJzLWVudnZhci1vcHRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWM1MjdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWFkZC1hLWxpYi1kaXJzLWVudnZhci1vcHRpb24ucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorRnJvbSBlNDhmMWUxOGY1ZWE0MTY1NmYwYmExMGZlNjFkNjlkMjYwNGIwMDY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDMgSmFuIDIwMTggMTc6MDI6MDEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2lzY2FubmVyOiBhZGQgYSAtLWxpYi1kaXJzLWVudnZhciBvcHRpb24KKworQnkgZGVmYXVsdCBMRF9MSUJSQVJZX1BBVEggaXMgc2V0IHRvIHRoZSBsaXN0IG9mIHRhcmdldCBsaWJyYXJ5IHBhdGhzOwordGhpcyBicmVha3MgZG93biBpbiBjcm9zcy1jb21waWxhdGlvbiBlbnZpcm9ubWVudCwgYXMgd2UgbmVlZCB0byBydW4gYQorbmF0aXZlIGVtdWxhdGlvbiB3cmFwcGVyIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQgYmluYXJ5IGl0c2VsZi4gVGhpcyBwYXRjaAorYWxsb3dzIGV4cG9ydGluZyB0aG9zZSBwYXRocyB0byBhIGRpZmZlcmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZQord2hpY2ggY2FuIGJlIHBpY2tlZCB1cCBhbmQgdXNlZCBieSB0aGUgd3JhcHBlci4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgZ2lzY2FubmVyL2Njb21waWxlci5weSAgIHwgNCArKy0tCisgZ2lzY2FubmVyL2R1bXBlci5weSAgICAgIHwgMyArKy0KKyBnaXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkgfCAzICsrKworIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL2Njb21waWxlci5weSBiL2dpc2Nhbm5lci9jY29tcGlsZXIucHkKK2luZGV4IDI5ZGUwZWUuLjkyOGVhZTggMTAwNjQ0CistLS0gYS9naXNjYW5uZXIvY2NvbXBpbGVyLnB5CisrKysgYi9naXNjYW5uZXIvY2NvbXBpbGVyLnB5CitAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIENDb21waWxlcihvYmplY3QpOgorIAorICAgICAgICAgICAgIHNlbGYuX2NmbGFnc19ub19kZXByZWNhdGlvbl93YXJuaW5ncyA9ICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorIAorLSAgICBkZWYgZ2V0X2ludGVybmFsX2xpbmtfZmxhZ3Moc2VsZiwgYXJncywgbGlidG9vbCwgbGlicmFyaWVzLCBleHRyYV9saWJyYXJpZXMsIGxpYnBhdGhzKToKKysgICAgZGVmIGdldF9pbnRlcm5hbF9saW5rX2ZsYWdzKHNlbGYsIGFyZ3MsIGxpYnRvb2wsIGxpYnJhcmllcywgZXh0cmFfbGlicmFyaWVzLCBsaWJwYXRocywgbGliX2RpcnNfZW52dmFyKToKKyAgICAgICAgICMgQW4gImludGVybmFsIiBsaW5rIGlzIHdoZXJlIHRoZSBsaWJyYXJ5IHRvIGJlIGludHJvc3BlY3RlZAorICAgICAgICAgIyBpcyBiZWluZyBidWlsdCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgCitAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIENDb21waWxlcihvYmplY3QpOgorICAgICAgICAgaWYgc2VsZi5jaGVja19pc19tc3ZjKCk6CisgICAgICAgICAgICAgcnVudGltZV9wYXRoX2VudnZhciA9IFsnTElCJywgJ1BBVEgnXQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBydW50aW1lX3BhdGhfZW52dmFyID0gWydMRF9MSUJSQVJZX1BBVEgnXQorKyAgICAgICAgICAgIHJ1bnRpbWVfcGF0aF9lbnZ2YXIgPSBbJ0xEX0xJQlJBUllfUEFUSCddIGlmIG5vdCBsaWJfZGlyc19lbnZ2YXIgZWxzZSBbbGliX2RpcnNfZW52dmFyXQorICAgICAgICAgICAgICMgU2VhcmNoIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBmaXJzdAorICAgICAgICAgICAgICMgKFRoaXMgZmxhZyBpcyBub3Qgc3VwcG9ydGVkIG5vciBuZWVkZWQgZm9yIFZpc3VhbCBDKyspCisgICAgICAgICAgICAgYXJncy5hcHBlbmQoJy1MLicpCitkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL2R1bXBlci5weSBiL2dpc2Nhbm5lci9kdW1wZXIucHkKK2luZGV4IDdmNzdiZDIuLmRiOTZkZjYgMTAwNjQ0CistLS0gYS9naXNjYW5uZXIvZHVtcGVyLnB5CisrKysgYi9naXNjYW5uZXIvZHVtcGVyLnB5CitAQCAtMjU5LDcgKzI1OSw4IEBAIGNsYXNzIER1bXBDb21waWxlcihvYmplY3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnRvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saWJyYXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leHRyYV9saWJyYXJpZXMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saWJyYXJ5X3BhdGhzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGlicmFyeV9wYXRocywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYl9kaXJzX2VudnZhcikKKyAgICAgICAgICAgICBhcmdzLmV4dGVuZChwa2dfY29uZmlnX2xpYnMpCisgCisgICAgICAgICBlbHNlOgorZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weSBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQoraW5kZXggMzhhNDVjMS4uYjYwMzg1MCAxMDA3NTUKKy0tLSBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQorKysrIGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5CitAQCAtMTMwLDYgKzEzMCw5IEBAIGRlZiBfZ2V0X29wdGlvbl9wYXJzZXIoKToKKyAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1sZGQtd3JhcHBlciIsCisgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJsZGRfd3JhcHBlciIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0id3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZykiKQorKyAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tbGliLWRpcnMtZW52dmFyIiwKKysgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImxpYl9kaXJzX2VudnZhciIsIGRlZmF1bHQ9Tm9uZSwKKysgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gd3JpdGUgYSBsaXN0IG9mIGxpYnJhcnkgZGlyZWN0b3JpZXMgdG8gKGZvciBydW5uaW5nIHRoZSB0cmFuc2llbnQgYmluYXJ5KSwgaW5zdGVhZCBvZiBzdGFuZGFyZCBMRF9MSUJSQVJZX1BBVEgiKQorICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcHJvZ3JhbS1hcmciLAorICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InByb2dyYW1fYXJncyIsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImV4dHJhIGFyZ3VtZW50cyB0byBwcm9ncmFtIikKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMi1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1naS1sZGQtd3JhLnBhdGNoCmluZGV4IDQ4YTBjODUuLmM2ODJiNDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaApAQCAtMzIsMTAgKzMyLDEwIEBACiAgdGVzdHMvTWFrZWZpbGUuYW0gfCAgNSArKysrLQogIDQgZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggYjA4MGE4OS4uY2U4ZDI5YiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQorSW5kZXg6IGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xLm9yaWcvTWFrZWZpbGUuYW0KKysrKyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL01ha2VmaWxlLmFtCiBAQCAtMjEsNyArMjEsOSBAQCBpbmNsdWRlIE1ha2VmaWxlLWNtcGguYW0KICBpbmNsdWRlIE1ha2VmaWxlLWdpcmVwb3NpdG9yeS5hbQogIGluY2x1ZGUgTWFrZWZpbGUtZ2lzY2FubmVyLmFtCkBAIC00NiwxMCArNDYsMTAgQEAKICBpbmNsdWRlIE1ha2VmaWxlLXRvb2xzLmFtCiAgaW5jbHVkZSBNYWtlZmlsZS1tc3ZjcHJvai5hbQogIAotZGlmZiAtLWdpdCBhL2NvbW1vbi5tayBiL2NvbW1vbi5tawotaW5kZXggZTI2YzYzNy4uOWYzYTY1ZiAxMDA2NDQKLS0tLSBhL2NvbW1vbi5tawotKysrIGIvY29tbW9uLm1rCitJbmRleDogZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS9jb21tb24ubWsKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xLm9yaWcvY29tbW9uLm1rCisrKysgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS9jb21tb24ubWsKIEBAIC02LDYgKzYsMTUgQEAKICAjIG1vZHVsZSBpdHNlbGYuCiAgIwpAQCAtMTMwLDEzICsxMzAsMTMgQEAKICAKICBJTlRST1NQRUNUSU9OX0RPQ1RPT0xfQVJHUyA9IFwKICAgICAgLS1hZGQtaW5jbHVkZS1wYXRoPSQoc3JjZGlyKSBcCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2YzkxZmE1Li4yMTM0MGE1IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNjAsNiArMzYwLDQ4IEBAIGZpCi0gCi0gQUNfU1VCU1QoRVhUUkFfTElOS19GTEFHUykKK0luZGV4OiBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEub3JpZy9jb25maWd1cmUuYWMKKysrKyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL2NvbmZpZ3VyZS5hYworQEAgLTM2Niw2ICszNjYsNDggQEAgZG5sCisgQU1fQ09ORElUSU9OQUwoTVNWQ19CQVNFX05PX1RPT0xTRVRfU0VULCBbdGVzdCB4JE1TVkNfQkFTRV9UT09MU0VUID0geF0pCisgQU1fQ09ORElUSU9OQUwoTVNWQ19OT19UT09MU0VUX1NFVCwgW3Rlc3QgeCRNU1ZDX1RPT0xTRVQgPSB4XSkKICAKICtBQ19BUkdfRU5BQkxFKFtob3N0LWdpXSwKICtbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWhvc3QtZ2ldLFtVc2UgZ29iamVjdCBpbnRyb3NwZWN0aW9uIHRvb2xzIGluc3RhbGxlZCBpbiB0aGUgaG9zdCBzeXN0ZW0gKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyldKV0sCkBAIC0xODMsMTAgKzE4MywxMCBAQAogIEFDX0NPTkZJR19GSUxFUyhbCiAgTWFrZWZpbGUKICB0ZXN0cy9NYWtlZmlsZQotZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IGJkZDBmYTcuLjc1ZGQzYzkgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0luZGV4OiBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL3Rlc3RzL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS5vcmlnL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTEsNiArMSw5IEBACiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbW1vbi5tawogIApAQCAtMTk4LDYgKzE5OCwzIEBACiAgCiAgRVhUUkFfRElTVD0KICBCVUlMVF9TT1VSQ0VTPQotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41Mi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZlNzFhMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41Mi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlkZGxld2FyZSBsYXllciBiZXR3ZWVuIEdPYmplY3QtdXNpbmcgQyBsaWJyYXJpZXMgYW5kIGxhbmd1YWdlIGJpbmRpbmdzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9hY3Rpb24vc2hvdy9Qcm9qZWN0cy9HT2JqZWN0SW50cm9zcGVjdGlvbiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIrICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTBkNTc3NTM1YTM4OThlMWFlNWRiZjBhZTM1MDlhOGMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvY29tcGlsZXIuYztlbmRsaW5lPTIwO21kNT1mYzUwMDdmYzIwMDIyNzIwZTZjMGIwY2RkZTQxZmFiZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXNjYW5uZXIvc291cmNlc2Nhbm5lci5jO2VuZGxpbmU9MjI7bWQ1PTE5NGQ2ZTBjMWQwMDY2MmYzMmQwMzBjZTQ0ZGU4ZDM5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpcmVwb3NpdG9yeS9naXJlZ2lzdGVyZWR0eXBlaW5mby5jO2VuZGxpbmU9MjE7bWQ1PTY2MTg0NzYxMWFlNjk3OTQ2NTQxNWYzMWE3NTliYTI3IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMS41Mi8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmV2ZXJ0LWFuLWluY29tcGxldGUtdXBzdHJlYW0tYXR0ZW1wdC1hdC1jcm9zcy1jb21waS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMzQxNTcwNzM5OTFmOWVlYjBlZDk1MzM1MWI2NWViNjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmVkMGMzOGQ1MmZlMWFhNmZjNGRlZjBjODY4ZmU0ODFjYjg3YjUzMmZjNjk0NzU2YjI2ZDZjZmFiMjlmYWZmNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgcHl0aG9uM25hdGl2ZSBxZW11IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLSMgbmVlZGVkIGZvciB3cml0aW5nIG91dCB0aGUgcWVtdSB3cmFwcGVyIHNjcmlwdAotZXhwb3J0IFNUQUdJTkdfRElSX0hPU1QKLWV4cG9ydCBCCi0KLURFUEVORFNfYXBwZW5kID0gIiBsaWJmZmkgemxpYiBnbGliLTIuMCBweXRob24zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotIyB0YXJnZXQgYnVpbGQgbmVlZHMgcWVtdSB0byBydW4gdGVtcG9yYXJ5IGludHJvc3BlY3Rpb24gYmluYXJpZXMgY3JlYXRlZAotIyBvbiB0aGUgZmx5IGJ5IGctaXItc2Nhbm5lciBhbmQgYSBuYXRpdmUgdmVyc2lvbiBvZiBpdHNlbGYgdG8gcnVuCi0jIG5hdGl2ZSB2ZXJzaW9ucyBvZiBpdHMgb3duIHRvb2xzIGR1cmluZyBidWlsZC4KLSMgQWxzbyBwcmVsaW5rLXJ0bGQgaXMgdXNlZCB0byBmaW5kIG91dCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvZiBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCi0jIChzdGFuZGFyZCBsZGQgZG9lc24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KLURFUEVORFNfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSBwcmVsaW5rLW5hdGl2ZSIKLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImctaXItc2Nhbm5lci1xZW11d3JhcHBlciBnLWlyLXNjYW5uZXItd3JhcHBlciBnLWlyLWNvbXBpbGVyLXdyYXBwZXIgZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgR2lvLTIuMC5naXIgcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgIyBUd2VhayB0aGUgbmF0aXZlIHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBmdWxsIHBhdGggb2YgbmF0aXZlIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKLSAgICAgICAgIyBUaGlzIHJlbW92ZXMgdGhlIHJpc2sgb2YgZXhjZWVkaW5nIExpbnV4IGtlcm5lbCdzIHNoZWJhbmcgbGluZSBsaW1pdCAoMTI4IGJ5dGVzKQotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0Ci0gICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KLSAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXCRHSVJfRVhUUkFfTElCU19QQVRIJywnLmxpYnMnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFVzZSBhIG1vZHVsZXMgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgc28gd2UgZG9uJ3QgbG9hZCByYW5kb20gdGhpbmdzCi0jIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAotZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15Ci0KLSRxZW11X2JpbmFyeSAiXCRAIgotaWYgWyBcJD8gLW5lIDAgXTsgdGhlbgotICAgIGVjaG8gIklmIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlIGlzIGFib3V0IG1pc3NpbmcgLnNvIGxpYnJhcmllcywgdGhlbiBzZXR0aW5nIHVwIEdJUl9FWFRSQV9MSUJTX1BBVEggaW4gdGhlIHJlY2lwZSBzaG91bGQgaGVscC4iCi0gICAgZWNobyAiKHR5cGljYWxseSBsaWtlIHRoaXM6IEdJUl9FWFRSQV9MSUJTX1BBVEg9XCIkIiJ7Qn0vc29tZXRoaW5nLy5saWJzXCIgKSIKLSAgICBleGl0IDEKLWZpCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItc2Nhbm5lciBpdHNlbGYsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMKLSAgICAgICAgIyBmb3IgZ2xpYi1iYXNlZCBwYWNrYWdlcy4gVGhpcyB3cmFwcGVyIGNhbGxzIHRoZSBuYXRpdmUgdmVyc2lvbiBvZiB0aGUgc2Nhbm5lciwgYW5kIHRlbGxzIGl0IHRvIHVzZQotICAgICAgICAjIGEgcWVtdSB3cmFwcGVyIGZvciBydW5uaW5nIHRyYW5zaWVudCB0YXJnZXQgYmluYXJpZXMgcHJvZHVjZWQgYnkgdGhlIHNjYW5uZXIsIGFuZCBhbiBpbmNsdWRlIGRpcmVjdG9yeSAKLSAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQotZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCi0KLWctaXItc2Nhbm5lciAtLXVzZS1iaW5hcnktd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgLS11c2UtbGRkLXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19EQVRBRElSfS9naXItMS4wICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlcgotCi0gICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1jb21waWxlciwgd2hpY2ggcnVucyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgaXQgdGhyb3VnaCBxZW11LgotICAgICAgICAjIGctaXItY29tcGlsZXIgd3JpdGVzIG91dCB0aGUgcmF3IGNvbnRlbnQgb2YgYSBDIHN0cnVjdCB0byBkaXNrLCBhbmQgdGhlcmVmb3JlIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1jb21waWxlciAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCwgd2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIGEgYmluYXJ5IGlzIGJ1aWx0Ci0gICAgICAgICMgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi1wcmVsaW5rLXJ0bGQgLS1yb290PSRTVEFHSU5HX0RJUl9IT1NUICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgotCi0gICAgICAgICMgQWxzbyB0d2VhayB0aGUgdGFyZ2V0IHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBuYXRpdmUgdmVyc2lvbiBvZiBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgotfQotCi0jIENvbmZpZ3VyZSB0YXJnZXQgYnVpbGQgdG8gdXNlIG5hdGl2ZSB0b29scyBvZiBpdHNlbGYgYW5kIHRvIHVzZSBhIHFlbXUgd3JhcHBlcgotIyBhbmQgb3B0aW9uYWxseSB0byBnZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGRhdGEKLUVYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgKz0gIi0tZW5hYmxlLWhvc3QtZ2kgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1naS1jcm9zcy13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWxkZC13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YScsICctLWRpc2FibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2RvY3Rvb2xdID0gIi0tZW5hYmxlLWRvY3Rvb2wsLS1kaXNhYmxlLWRvY3Rvb2wscHl0aG9uMy1tYWtvLCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICAjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi0gICAgICAgIGV4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQotCi0gICAgICAgICMgTmVlZGVkIHRvIHJ1biBnLWlyIHVuaXQgdGVzdHMsIHdoaWNoIHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgYnVpbHQgbGlicmFyaWVzIG90aGVyd2lzZQotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0kQi8ubGlicwotfQotCi0jIE91ciB3cmFwcGVycyBuZWVkIHRvIGJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSwgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdXNlZCAKLSMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBmaWxlcyBmb3IgYWxsIG90aGVyIGdvYmplY3QtYmFzZWQgcGFja2FnZXMKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotfQotCi0jIC50eXBlbGliIGZpbGVzIGFyZSBuZWVkZWQgYXQgcnVudGltZSBhbmQgc28gdGhleSBnbyB0byB0aGUgbWFpbiBwYWNrYWdlCi1GSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7bGliZGlyfS9naXJlcG9zaXRvcnktKi8qLnR5cGVsaWIiCi0KLSMgLmdpciBmaWxlcyBnbyB0byBkZXYgcGFja2FnZSwgYXMgdGhleSdyZSBuZWVkZWQgZm9yIGRldmVsb3BpbmcgKGJ1dCBub3QgZm9yIHJ1bm5pbmcpCi0jIHRoaW5ncyB0aGF0IGRlcGVuZHMgb24gaW50cm9zcGVjdGlvbi4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5naXIiCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotIyB0byBnZW5lcmF0ZSB0cmFuc2llbnQgaW50cm9zcGVjdGlvbiBiaW5hcmllcwotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL2dkdW1wLmMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24iCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZGVwZW5kZW50IHBhY2thZ2VzIChlLmcuIHB5Z29iamVjdCkgdG8gYnVpbGQgdGhlaXIKLSMgdGVzdHN1aXRlcy4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmMgXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmgiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvLmRlYnVnLyIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvKi5hIgotCi0jIHdlIG5lZWQgdGFyZ2V0IHZlcnNpb25zIG9mIGludHJvc3BlY3Rpb24gdG9vbHMgaW4gc3lzcm9vdCBzbyB0aGF0IHRoZXkgY2FuIGJlIHJ1biB2aWEgcWVtdQotIyB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMgaW4gb3RoZXIgcGFja2FnZXMKLVNZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke2JpbmRpcn0iCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MiCi1naV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MoKSB7Ci0gICAgICAgICMgVHdlYWsgdGhlIGJpbmFyeSBuYW1lcyBpbiB0aGUgaW50cm9zcGVjdGlvbiBwa2djb25maWcgZmlsZSwgc28gdGhhdCBpdAotICAgICAgICAjIHBpY2tzIHVwIG91ciB3cmFwcGVycyB3aGljaCBkbyB0aGUgY3Jvc3MtY29tcGlsZSBhbmQgcWVtdSBtYWdpYy4KLSAgICAgICAgc2VkIC1pIFwKLSAgICAgICAgICAgLWUgInN8Z19pcl9zY2FubmVyPS4qfGdfaXJfc2Nhbm5lcj0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXJ8IiBcCi0gICAgICAgICAgIC1lICJzfGdfaXJfY29tcGlsZXI9Lip8Z19pcl9jb21waWxlcj0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyfCIgXAotICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vcGtnY29uZmlnL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMKLX0KLQotIyBOZWVkIHRvIGVuc3VyZSBsZC5zby5jb25mIGV4aXN0cyBzbyBwcmVsaW5rLW5hdGl2ZSB3b3JrcwotIyBib3RoIGJlZm9yZSB3ZSBidWlsZCBhbmQgaWYgd2UgaW5zdGFsbCBmcm9tIHNzdGF0ZQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSIKLXB5dGhvbiBnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlICgpIHsKLSAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCi19Ci0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmQgPSAiIGdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0JbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9Ci0JZGVzdD0ke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0KLQllY2hvICIjIS9iaW4vc2giID4gJGRlc3QKLQllY2hvICJta2RpciAtcCAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9IiA+PiAkZGVzdAotCWVjaG8gImVjaG8gJHtiYXNlX2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAotCWVjaG8gImVjaG8gJHtsaWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKLQljaG1vZCA3NTUgJGRlc3QKLX0KLQotIyBSZW1vdmUgd3JhcHBlciBmaWxlcyBmcm9tIHRoZSBwYWNrYWdlLCBvbmx5IHVzZWQgZm9yIGNyb3NzLWNvbXBpbGluZwotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJnaV9wYWNrYWdlX3ByZXByb2Nlc3MiCi1naV9wYWNrYWdlX3ByZXByb2Nlc3MoKSB7Ci0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKLQlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41NC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWM4MDAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTQuMS5iYgpAQCAtMCwwICsxLDE5MCBAQAorU1VNTUFSWSA9ICJNaWRkbGV3YXJlIGxheWVyIGJldHdlZW4gR09iamVjdC11c2luZyBDIGxpYnJhcmllcyBhbmQgbGFuZ3VhZ2UgYmluZGluZ3MiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL2FjdGlvbi9zaG93L1Byb2plY3RzL0dPYmplY3RJbnRyb3NwZWN0aW9uIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MGQ1Nzc1MzVhMzg5OGUxYWU1ZGJmMGFlMzUwOWE4YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjciCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjU0LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjEyNmMyOWU0ZDU0YWRiZWQyZWQ0ZTJiMDQ0ODNkZTQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4OGRlZDVlNWYwNjRhYjU4YTkzYWFkZWNkNmQ1OGRiMmVjOWQ5NzA2NDg1MzRjNjM4MDdkNGY5YTdiYjg3N2UiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIHB5dGhvbjNuYXRpdmUgcWVtdSBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIG5lZWRlZCBmb3Igd3JpdGluZyBvdXQgdGhlIHFlbXUgd3JhcHBlciBzY3JpcHQKK2V4cG9ydCBTVEFHSU5HX0RJUl9IT1NUCitleHBvcnQgQgorCitERVBFTkRTX2FwcGVuZCA9ICIgbGliZmZpIHpsaWIgZ2xpYi0yLjAgcHl0aG9uMyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKKyMgdGFyZ2V0IGJ1aWxkIG5lZWRzIHFlbXUgdG8gcnVuIHRlbXBvcmFyeSBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzIGNyZWF0ZWQKKyMgb24gdGhlIGZseSBieSBnLWlyLXNjYW5uZXIgYW5kIGEgbmF0aXZlIHZlcnNpb24gb2YgaXRzZWxmIHRvIHJ1bgorIyBuYXRpdmUgdmVyc2lvbnMgb2YgaXRzIG93biB0b29scyBkdXJpbmcgYnVpbGQuCisjIEFsc28gcHJlbGluay1ydGxkIGlzIHVzZWQgdG8gZmluZCBvdXQgbGlicmFyeSBkZXBlbmRlbmNpZXMgb2YgaW50cm9zcGVjdGlvbiBiaW5hcmllcworIyAoc3RhbmRhcmQgbGRkIGRvZXNuJ3Qgd29yayB3aGVuIGNyb3NzLWNvbXBpbGluZykuCitERVBFTkRTX2NsYXNzLXRhcmdldF9hcHBlbmQgPSAiIGdvYmplY3QtaW50cm9zcGVjdGlvbi1uYXRpdmUgcWVtdS1uYXRpdmUgcHJlbGluay1uYXRpdmUiCisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJnLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgZy1pci1zY2FubmVyLXdyYXBwZXIgZy1pci1jb21waWxlci13cmFwcGVyIGctaXItc2Nhbm5lci1sZGR3cmFwcGVyIEdpby0yLjAuZ2lyIHBvc3RpbnN0LWxkc29jb25mLSR7UE59IgorCitkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgICAgICMgVHdlYWsgdGhlIG5hdGl2ZSBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCisgICAgICAgICMgZnVsbCBwYXRoIG9mIG5hdGl2ZSBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCisgICAgICAgICMgVGhpcyByZW1vdmVzIHRoZSByaXNrIG9mIGV4Y2VlZGluZyBMaW51eCBrZXJuZWwncyBzaGViYW5nIGxpbmUgbGltaXQgKDEyOCBieXRlcykKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgIyBXcml0ZSBvdXQgYSBxZW11IHdyYXBwZXIgdGhhdCB3aWxsIGJlIGdpdmVuIHRvIGdpLXNjYW5uZXIgc28gdGhhdCBpdAorICAgICAgICAjIGNhbiBydW4gdGFyZ2V0IGhlbHBlciBiaW5hcmllcyB0aHJvdWdoIHRoYXQuCisgICAgICAgIHFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJFNUQUdJTkdfRElSX0hPU1QnLCBbJ1wkR0lSX0VYVFJBX0xJQlNfUEFUSCcsJy5saWJzJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBVc2UgYSBtb2R1bGVzIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHNvIHdlIGRvbid0IGxvYWQgcmFuZG9tIHRoaW5ncworIyB3aGljaCBtYXkgdGhlbiBnZXQgZGVsZXRlZCAob3IgdGhlaXIgZGVwZW5kZW5jaWVzKSBhbmQgcG90ZW50aWFsbHkgc2VnZmF1bHQKK2V4cG9ydCBHSU9fTU9EVUxFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9naW8vbW9kdWxlcy1kdW1teQorCiskcWVtdV9iaW5hcnkgIlwkQCIKK2lmIFsgXCQ/IC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJJZiB0aGUgYWJvdmUgZXJyb3IgbWVzc2FnZSBpcyBhYm91dCBtaXNzaW5nIC5zbyBsaWJyYXJpZXMsIHRoZW4gc2V0dGluZyB1cCBHSVJfRVhUUkFfTElCU19QQVRIIGluIHRoZSByZWNpcGUgc2hvdWxkIGhlbHAuIgorICAgIGVjaG8gIih0eXBpY2FsbHkgbGlrZSB0aGlzOiBHSVJfRVhUUkFfTElCU19QQVRIPVwiJCIie0J9L3NvbWV0aGluZy8ubGlic1wiICkiCisgICAgZXhpdCAxCitmaQorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLXNjYW5uZXIgaXRzZWxmLCB3aGljaCB3aWxsIGJlIHVzZWQgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzCisgICAgICAgICMgZm9yIGdsaWItYmFzZWQgcGFja2FnZXMuIFRoaXMgd3JhcHBlciBjYWxscyB0aGUgbmF0aXZlIHZlcnNpb24gb2YgdGhlIHNjYW5uZXIsIGFuZCB0ZWxscyBpdCB0byB1c2UKKyAgICAgICAgIyBhIHFlbXUgd3JhcHBlciBmb3IgcnVubmluZyB0cmFuc2llbnQgdGFyZ2V0IGJpbmFyaWVzIHByb2R1Y2VkIGJ5IHRoZSBzY2FubmVyLCBhbmQgYW4gaW5jbHVkZSBkaXJlY3RvcnkgCisgICAgICAgICMgZnJvbSB0aGUgdGFyZ2V0IHN5c3Jvb3QuCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKK2V4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQorCitnLWlyLXNjYW5uZXIgLS1saWItZGlycy1lbnZ2YXI9R0lSX0VYVFJBX0xJQlNfUEFUSCAtLXVzZS1iaW5hcnktd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgLS11c2UtbGRkLXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19EQVRBRElSfS9naXItMS4wICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlcgorCisgICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1jb21waWxlciwgd2hpY2ggcnVucyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgaXQgdGhyb3VnaCBxZW11LgorICAgICAgICAjIGctaXItY29tcGlsZXIgd3JpdGVzIG91dCB0aGUgcmF3IGNvbnRlbnQgb2YgYSBDIHN0cnVjdCB0byBkaXNrLCBhbmQgdGhlcmVmb3JlIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCiske1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1jb21waWxlciAiXCRAIgorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCwgd2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIGEgYmluYXJ5IGlzIGJ1aWx0CisgICAgICAgICMgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCitwcmVsaW5rLXJ0bGQgLS1yb290PSRTVEFHSU5HX0RJUl9IT1NUICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgorCisgICAgICAgICMgQWxzbyB0d2VhayB0aGUgdGFyZ2V0IHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKKyAgICAgICAgIyBuYXRpdmUgdmVyc2lvbiBvZiBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgorfQorCisjIENvbmZpZ3VyZSB0YXJnZXQgYnVpbGQgdG8gdXNlIG5hdGl2ZSB0b29scyBvZiBpdHNlbGYgYW5kIHRvIHVzZSBhIHFlbXUgd3JhcHBlcgorIyBhbmQgb3B0aW9uYWxseSB0byBnZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGRhdGEKK0VYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgKz0gIi0tZW5hYmxlLWhvc3QtZ2kgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1naS1jcm9zcy13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWxkZC13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YScsICctLWRpc2FibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHID89ICIiCitQQUNLQUdFQ09ORklHW2RvY3Rvb2xdID0gIi0tZW5hYmxlLWRvY3Rvb2wsLS1kaXNhYmxlLWRvY3Rvb2wscHl0aG9uMy1tYWtvLCIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICAgICAjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCisgICAgICAgIGV4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQorCisgICAgICAgICMgTmVlZGVkIHRvIHJ1biBnLWlyIHVuaXQgdGVzdHMsIHdoaWNoIHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgYnVpbHQgbGlicmFyaWVzIG90aGVyd2lzZQorICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0kQi8ubGlicworfQorCisjIE91ciB3cmFwcGVycyBuZWVkIHRvIGJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSwgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdXNlZCAKKyMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBmaWxlcyBmb3IgYWxsIG90aGVyIGdvYmplY3QtYmFzZWQgcGFja2FnZXMKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAke0R9JHtiaW5kaXJ9LworfQorCisjIC50eXBlbGliIGZpbGVzIGFyZSBuZWVkZWQgYXQgcnVudGltZSBhbmQgc28gdGhleSBnbyB0byB0aGUgbWFpbiBwYWNrYWdlCitGSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7bGliZGlyfS9naXJlcG9zaXRvcnktKi8qLnR5cGVsaWIiCisKKyMgLmdpciBmaWxlcyBnbyB0byBkZXYgcGFja2FnZSwgYXMgdGhleSdyZSBuZWVkZWQgZm9yIGRldmVsb3BpbmcgKGJ1dCBub3QgZm9yIHJ1bm5pbmcpCisjIHRoaW5ncyB0aGF0IGRlcGVuZHMgb24gaW50cm9zcGVjdGlvbi4KK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5naXIiCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyoucm5jIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGdvYmplY3QtYmFzZWQgcGFja2FnZXMKKyMgdG8gZ2VuZXJhdGUgdHJhbnNpZW50IGludHJvc3BlY3Rpb24gYmluYXJpZXMKK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9nZHVtcC5jIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGRlcGVuZGVudCBwYWNrYWdlcyAoZS5nLiBweWdvYmplY3QpIHRvIGJ1aWxkIHRoZWlyCisjIHRlc3RzdWl0ZXMuCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5jIFwKKyAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5oIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLy5kZWJ1Zy8iCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLyouYSIKKworIyB3ZSBuZWVkIHRhcmdldCB2ZXJzaW9ucyBvZiBpbnRyb3NwZWN0aW9uIHRvb2xzIGluIHN5c3Jvb3Qgc28gdGhhdCB0aGV5IGNhbiBiZSBydW4gdmlhIHFlbXUKKyMgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzIGluIG90aGVyIHBhY2thZ2VzCitTWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtiaW5kaXJ9IgorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgeworICAgICAgICAjIFR3ZWFrIHRoZSBiaW5hcnkgbmFtZXMgaW4gdGhlIGludHJvc3BlY3Rpb24gcGtnY29uZmlnIGZpbGUsIHNvIHRoYXQgaXQKKyAgICAgICAgIyBwaWNrcyB1cCBvdXIgd3JhcHBlcnMgd2hpY2ggZG8gdGhlIGNyb3NzLWNvbXBpbGUgYW5kIHFlbXUgbWFnaWMuCisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgIC1lICJzfGdfaXJfc2Nhbm5lcj0uKnxnX2lyX3NjYW5uZXI9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyfCIgXAorICAgICAgICAgICAtZSAic3xnX2lyX2NvbXBpbGVyPS4qfGdfaXJfY29tcGlsZXI9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcnwiIFwKKyAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjCit9CisKKyMgTmVlZCB0byBlbnN1cmUgbGQuc28uY29uZiBleGlzdHMgc28gcHJlbGluay1uYXRpdmUgd29ya3MKKyMgYm90aCBiZWZvcmUgd2UgYnVpbGQgYW5kIGlmIHdlIGluc3RhbGwgZnJvbSBzc3RhdGUKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUiCitweXRob24gZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSAoKSB7CisgICAgb2UudXRpbHMud3JpdGVfbGRfc29fY29uZihkKQorfQorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kID0gIiBnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MiCitnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MgKCkgeworCW1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQorCWRlc3Q9JHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L3Bvc3RpbnN0LWxkc29jb25mLSR7UE59CisJZWNobyAiIyEvYmluL3NoIiA+ICRkZXN0CisJZWNobyAibWtkaXIgLXAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfSIgPj4gJGRlc3QKKwllY2hvICJlY2hvICR7YmFzZV9saWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKKwllY2hvICJlY2hvICR7bGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0CisJY2htb2QgNzU1ICRkZXN0Cit9CisKKyMgUmVtb3ZlIHdyYXBwZXIgZmlsZXMgZnJvbSB0aGUgcGFja2FnZSwgb25seSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAiZ2lfcGFja2FnZV9wcmVwcm9jZXNzIgorZ2lfcGFja2FnZV9wcmVwcm9jZXNzKCkgeworCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODRhNGYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgZGVza3RvcC13aWRlIEdTZXR0aW5ncyBzY2hlbWFzIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1YjkwNTZhYjZlZmY0MmEwMTE3ZjI5MTJlZGZmNWYyMCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjBmMDZjN2JhMzRjM2E5OWU0ZDU4YjEwODg5NDk2MTMzYzlhYWFkNjY5OGVhMmQ4NDA1ZDQ4MWM3ZjFhN2VhZTEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjI0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYxZmQyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjQuMS5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIkdOT01FIGRlc2t0b3Atd2lkZSBHU2V0dGluZ3Mgc2NoZW1hcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnZXR0ZXh0IGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNzk2YjZhYzFlZmY0NTAyNjFlZGQ1MjFiNzJlN2ZlNmQiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI3NmEzZmEzMDlmOWRlNjA3NGQ2Njg0ODk4NzIxNGYwYjEyODEyNGJhNzE4NGM5NThjMTVhYzc4YThhYzdlZWE3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aysvaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy9oYXJkY29kZWRfbGlidG9vbC5wYXRjaAppbmRleCAxYWU3MjhlLi45ZWI3ZjZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy9oYXJkY29kZWRfbGlidG9vbC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy9oYXJkY29kZWRfbGlidG9vbC5wYXRjaApAQCAtMywxOSArMywyMCBAQAogVXBkYXRlZCB0byBhcHBseSB0byBndGsrLTIuMjQuMTUKIAogU2lnbmVkLW9mZi1ieTogTWFya28gTGluZHF2aXN0IDxjYXpmaTc0QGdtYWlsLmNvbT4KLWRpZmYgLU51cmQgZ3RrKy0yLjI0LjE1L2NvbmZpZ3VyZS5hYyBndGsrLTIuMjQuMTUvY29uZmlndXJlLmFjCi0tLS0gZ3RrKy0yLjI0LjE1L2NvbmZpZ3VyZS5hYwkyMDEzLTAxLTEyIDIwOjUyOjU0LjAwMDAwMDAwMCArMDIwMAotKysrIGd0aystMi4yNC4xNS9jb25maWd1cmUuYWMJMjAxMy0wMi0xMiAyMTozMzozMC42ODk5MjU5NjcgKzAyMDAKLUBAIC00MTUsNyArNDE1LDcgQEAKK0luZGV4OiBndGsrLTIuMjQuMzEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3RrKy0yLjI0LjMxLm9yaWcvY29uZmlndXJlLmFjCisrKysgZ3RrKy0yLjI0LjMxL2NvbmZpZ3VyZS5hYworQEAgLTQxNSw3ICs0MTUsNyBAQCBBQ19NU0dfQ0hFQ0tJTkcoW1doZXRoZXIgdG8gd3JpdGUgZGVwZW5kCiAgY2FzZSAkZW5hYmxlX2V4cGxpY2l0X2RlcHMgaW4KICAgIGF1dG8pCiAgICAgIGV4cG9ydCBTRUQKIC0gICAgZGVwbGlic19jaGVja19tZXRob2Q9YCguL2xpYnRvb2wgLS1jb25maWc7IGVjaG8gJ2V2YWwgZWNobyBcIiRkZXBsaWJzX2NoZWNrX21ldGhvZFwiJykgfCBzaGAKICsgICAgZGVwbGlic19jaGVja19tZXRob2Q9YCguLyRob3N0X2FsaWFzLWxpYnRvb2wgLS1jb25maWc7IGVjaG8gJ2V2YWwgZWNobyBcIiRkZXBsaWJzX2NoZWNrX21ldGhvZFwiJykgfCBzaGAKICAgICAgaWYgdGVzdCAieCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJyE9JyB4cGFzc19hbGwgfHwgdGVzdCAieCRlbmFibGVfc3RhdGljIiA9IHh5ZXMgOyB0aGVuCi0gICAgICAgZW5hYmxlX2V4cGxpY2l0X2RlcHM9eWVzCisgICAgICAgZW5hYmxlX2V4cGxpY2l0X2RlcHM9eWVzICAKICAgICAgZWxzZQotQEAgLTc3NCw3ICs3NzQsNyBAQAorQEAgLTc3Miw3ICs3NzIsNyBAQCBlbHNlCiAgICAgIGRubCBOb3cgd2UgY2hlY2sgdG8gc2VlIGlmIG91ciBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWIgZGVwcwogICAgICBkbmwgKGluIGEgcmF0aGVyIHVnbHkgd2F5IGV2ZW4pCiAgICAgIGlmICRkeW53b3JrczsgdGhlbgpAQCAtMjQsNyArMjUsNyBAQAogICAgICAgICAgbW9kdWxlX2RlcGxpYnNfY2hlY2s9YCRtb2R1bGVfbGlidG9vbF9jb25maWcgfCBcCiAgICAgICAgICAgICAgZ3JlcCAnXltbYS16X11dKmNoZWNrW1thLXpfXV0qX21ldGhvZD1bWydcJyciXV0nIHwgXAogICAgICAgICAgICAgIHNlZCAncy8uKltbJ1wnJyJdXVwoLipcKVtbJ1wnJyJdXSQvXDEvJ2AKLUBAIC0xNTc0LDcgKzE1NzQsNyBAQAorQEAgLTE1NzksNyArMTU3OSw3IEBAIGZpCiAgIyBXZSBhcmUgdXNpbmcgZ21vZHVsZS1uby1leHBvcnQgbm93LCBidXQgSSdtIGxlYXZpbmcgdGhlIHN0cmlwcGluZwogICMgY29kZSBpbiBwbGFjZSBmb3Igbm93LCBzaW5jZSBwYW5nbyBhbmQgYXRrIHN0aWxsIHJlcXVpcmUgZ21vZHVsZS4KICBleHBvcnQgU0VECmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwppbmRleCAwYTM1N2RiLi40MjBlYWQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKQEAgLTM1LDcgKzM1LDYgQEAKICAgICAgICAgICAgICAgICAgLS1lbmFibGUtbW9kdWxlcyBcCiAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jdXBzIFwKICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNvbG9yZCBcCi0gICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSPSR7UkVDSVBFX1NZU1JPT1R9IFwKICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiIiwgIi0tZGlzYWJsZS1ndGstZG9jIiwgZCl9IFwKICAgICAgICAgICAgICAgICAgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCmluZGV4IGFiN2I2NTkuLmNjN2VkZjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyZDIzNjFmMjRiZTFlNTEyMDEwNjNkYmJkYTU3MGRlYmU4NzAyYjZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyM2E1NjMxNTU0MDY5ODBkZmM4Y2Y2ZjdjMmRhNmNjZTBhYzMxMGYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IEZyaSwgMTYgT2N0IDIwMTUgMTY6MzU6MTYgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSCAyLzRdIERvIG5vdCB0cnkgdG8gaW5pdGlhbGl6ZSBHTCB3aXRob3V0IGxpYkdMCkBAIC0xNSwyOSArMTUsMjkgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CisKIC0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgIHwgNyArKysrKysrCisgY29uZmlndXJlLmFjICAgICAgICAgICAgfCA2ICsrKysrKwogIGdkay94MTEvZ2RrdmlzdWFsLXgxMS5jIHwgNSArKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmNDNhYzA5Li45NjVlZWM5IDEwMDY0NAoraW5kZXggNzU3ZmQ3Yy4uMGE0ODg3NSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzQ2LDYgKzM0NiwxMyBAQCBBQ19BUkdfRU5BQkxFKG1pci1iYWNrZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgdGhlIE1pciBnZGsgYmFja2VuZF0pXSwKLSAJCQkgICAgICBbYmFja2VuZF9zZXQ9eWVzXSkKLSAKK0BAIC0zNTEsNiArMzUxLDEyIEBAIEFDX0FSR19FTkFCTEUoY2xvdWRwcm92aWRlcnMsCisgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWNsb3VkcHJvdmlkZXJzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIGxpYmNsb3VkcHJvdmlkZXJzIGludGVncmF0aW9uXSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG91ZHByb3ZpZGVyc19zZXQ9eWVzXSkKICtBQ19BUkdfRU5BQkxFKGdseCwKICsgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtZ2x4XSwKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbV2hlbiBlbmFibGVkIEdkayB3aWxsIHRyeSB0byBpbml0aWFsaXplIEdMWF0pXSkKICtBU19JRihbdGVzdCAieCRlbmFibGVfZ2x4IiAhPSAieG5vIl0sIFsKICsgIEFDX0RFRklORShbSEFWRV9HTFhdLCBbXSwgW0dMWCB3aWxsIGJlIGF2YWlsYWJsZSBhdCBydW50aW1lXSkKICtdKQotKworIAogIGlmIHRlc3QgLXogIiRiYWNrZW5kX3NldCI7IHRoZW4KICAgIGlmIHRlc3QgIiRwbGF0Zm9ybV93aW4zMiIgPSB5ZXM7IHRoZW4KLSAgICAgZW5hYmxlX3dpbjMyX2JhY2tlbmQ9eWVzCiBkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGt2aXN1YWwteDExLmMgYi9nZGsveDExL2dka3Zpc3VhbC14MTEuYwogaW5kZXggODE0NzlkOC4uM2M4YzVjMCAxMDA2NDQKIC0tLSBhL2dkay94MTEvZ2RrdmlzdWFsLXgxMS5jCkBAIC01Niw1ICs1Niw1IEBACiAgCiAgZ2ludAogLS0gCi0yLjEyLjAKKzIuMTQuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCmluZGV4IDljZGVlMGUuLmQyZjEyZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhMmU2YjdjYmJkNmQ3NDFmZWQzOGQ5MWIzNzQyYWE0YTA4Mzk1YWJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkZTM2ZGY3MGQ4N2JhMzQ1M2VkNGYyYjkyZTk5MDAyMWM2NzIzOGY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IFR1ZSwgMjEgSnVuIDIwMTYgMTU6MTE6MzkgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSCAzLzRdIEFkZCAtLWRpc2FibGUtb3BlbmdsIGNvbmZpZ3VyZSBvcHRpb24KQEAgLTE5LDQxICsxOSw0MCBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0V2aWwgZXllIGV4cGVjdGVkIGZyb20gdXBzdHJlYW1dCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorCiAtLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgfCAxMyArKysrKysrLS0KLSBkZW1vcy9ndGstZGVtby9nbGFyZWEuYyAgICAgICAgICAgfCAxNCArKysrKysrKysKLSBkb2NzL3Rvb2xzL01ha2VmaWxlLmFtICAgICAgICAgICAgfCAgOSArKysrLS0KLSBkb2NzL3Rvb2xzL3dpZGdldHMuYyAgICAgICAgICAgICAgfCAgNCArKy0KLSBnZGsvZ2RrZGlzcGxheS5jICAgICAgICAgICAgICAgICAgfCAgNCArKy0KLSBnZGsvZ2RrZ2wuYyAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrCi0gZ2RrL2dka2dsY29udGV4dC5jICAgICAgICAgICAgICAgIHwgIDYgKysrKwotIGdkay9nZGt3aW5kb3cuYyAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKwotIGdkay94MTEvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICB8IDMwICsrKysrKysrKysrKysrKysrLS0tCi0gZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jICAgICAgICAgIHwgIDYgKysrLQotIGdkay94MTEvZ2Rrc2NyZWVuLXgxMS5jICAgICAgICAgICB8ICA1ICsrKysKLSBnZGsveDExL2dka3dpbmRvdy14MTEuYyAgICAgICAgICAgfCAgNCArKysKLSBnZGsveDExL2dka3gtYXV0b2NsZWFudXBzLmggICAgICAgfCAgMiArKwotIGdkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaCAgICB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gZ2RrL3gxMS9nZGt4LXdpdGhvdXQtZ2wtY29udGV4dC5oIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdkay94MTEvZ2RreC5oICAgICAgICAgICAgICAgICAgICB8IDYwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGd0ay9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICB8ICAzICstCi0gZ3RrL2d0a2dsYXJlYS5jICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKysrKysrKysrLQotIGd0ay9pbnNwZWN0b3IvZ2VuZXJhbC5jICAgICAgICAgICB8ICA2ICsrKysKLSB0ZXN0cy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgfCAxMCArKysrKy0tCi0gdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMgIHwgIDIgKysKLSAyMSBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaAorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrLS0KKyBkZW1vcy9ndGstZGVtby9nbGFyZWEuYyAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKysrKworIGRvY3MvdG9vbHMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICB8ICA5ICsrKy0tCisgZG9jcy90b29scy93aWRnZXRzLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKystCisgZ2RrL2dka2Rpc3BsYXkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKystCisgZ2RrL2dka2dsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrCisgZ2RrL2dka2dsY29udGV4dC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKworIGdkay9nZGt3aW5kb3cuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysKKyBnZGsveDExL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrKysrKysrLS0tCisgZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jICAgICAgICAgICAgICAgICAgIHwgIDYgKysrLQorIGdkay94MTEvZ2Rrc2NyZWVuLXgxMS5jICAgICAgICAgICAgICAgICAgICB8ICA1ICsrKworIGdkay94MTEvZ2Rrd2luZG93LXgxMS5jICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKworIGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaCAgICAgICAgICAgICAgICB8ICAyICsrCisgZ2RrL3gxMS97Z2RreC5oID0+IGdka3gtd2l0aC1nbC1jb250ZXh0Lmh9IHwgIDEgLQorIGdkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaCAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGd0ay9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstCisgZ3RrL2d0a2dsYXJlYS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKysrKysrKy0KKyBndGsvaW5zcGVjdG9yL2dlbmVyYWwuYyAgICAgICAgICAgICAgICAgICAgfCAgNiArKysrCisgdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKy0tCisgdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMgICAgICAgICAgIHwgIDIgKysKKyAyMCBmaWxlcyBjaGFuZ2VkLCAyMDIgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCisgcmVuYW1lIGdkay94MTEve2dka3guaCA9PiBnZGt4LXdpdGgtZ2wtY29udGV4dC5ofSAoOTglKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGsveDExL2dka3gtd2l0aG91dC1nbC1jb250ZXh0LmgKLSBkZWxldGUgbW9kZSAxMDA2NDQgZ2RrL3gxMS9nZGt4LmgKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTY1ZWVjOS4uMDBiZjU0NCAxMDA2NDQKK2luZGV4IDBhNDg4NzUuLjZmMGEzYTYgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM0Niw2ICszNDYsMTUgQEAgQUNfQVJHX0VOQUJMRShtaXItYmFja2VuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIHRoZSBNaXIgZ2RrIGJhY2tlbmRdKV0sCi0gCQkJICAgICAgW2JhY2tlbmRfc2V0PXllc10pCi0gCitAQCAtMzUxLDYgKzM1MSwxNSBAQCBBQ19BUkdfRU5BQkxFKGNsb3VkcHJvdmlkZXJzLAorICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1jbG91ZHByb3ZpZGVyc10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBsaWJjbG91ZHByb3ZpZGVycyBpbnRlZ3JhdGlvbl0pXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvdWRwcm92aWRlcnNfc2V0PXllc10pCiArQUNfQVJHX0VOQUJMRShvcGVuZ2wsCiArICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLW9wZW5nbF0sCiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1doZW4gZW5hYmxlZCwgR3RrKyB3aWxsIHVzZSBsaWJlcG94eSBhbmQgZXhwb3NlcyBHdGtHTEFyZWEgd2lkZ2V0IF0pXSkKQEAgLTY2LDE2ICs2NSwxNiBAQAogIEFDX0FSR19FTkFCTEUoZ2x4LAogICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbHhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtXaGVuIGVuYWJsZWQgR2RrIHdpbGwgdHJ5IHRvIGluaXRpYWxpemUgR0xYXSldKQotQEAgLTEzNTIsNyArMTM2MSw3IEBAIENGTEFHUz0iJHNhdmVkX2NmbGFncyIKK0BAIC0xMzcyLDcgKzEzODEsNyBAQCBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCiAgTERGTEFHUz0iJHNhdmVkX2xkZmxhZ3MiCiAgCiAgR0RLX1BBQ0tBR0VTPSIkUEFOR09fUEFDS0FHRVMgZ2RrLXBpeGJ1Zi0yLjAgPj0gZ2RrX3BpeGJ1Zl9yZXF1aXJlZF92ZXJzaW9uIGNhaXJvID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8tZ29iamVjdCA+PSBjYWlyb19yZXF1aXJlZF92ZXJzaW9uIgotLUdES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRNSVJfUEFDS0FHRVMgJGNhaXJvX2JhY2tlbmRzIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24iCi0rR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgJEVQT1hZX1BBQ0tBR0VTIgorLUdES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRNSVJfUEFDS0FHRVMgJGNhaXJvX2JhY2tlbmRzIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24gJENMT1VEUFJPVklERVJfUEFDS0FHRVMiCisrR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgJEVQT1hZX1BBQ0tBR0VTICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTIgogIAogIFBLR19DSEVDS19NT0RVTEVTKEdES19ERVAsICRHREtfUEFDS0FHRVMgJEdES19QUklWQVRFX1BBQ0tBR0VTKQogIEdES19ERVBfTElCUz0iJEdES19FWFRSQV9MSUJTICRHREtfREVQX0xJQlMgJE1BVEhfTElCIgotQEAgLTEzODYsNyArMTM5NSw3IEBAIGZpCitAQCAtMTQwNiw3ICsxNDE1LDcgQEAgZmkKICBQS0dfQ0hFQ0tfTU9EVUxFUyhBVEssICRBVEtfUEFDS0FHRVMpCiAgCiAgR1RLX1BBQ0tBR0VTPSJhdGsgPj0gYXRrX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8gPj0gY2Fpcm9fcmVxdWlyZWRfdmVyc2lvbiBjYWlyby1nb2JqZWN0ID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gZ2RrLXBpeGJ1Zi0yLjAgPj0gZ2RrX3BpeGJ1Zl9yZXF1aXJlZF92ZXJzaW9uIGdpby0yLjAgPj0gZ2xpYl9yZXF1aXJlZF92ZXJzaW9uIgpAQCAtMjEwLDEwICsyMDksMTAgQEAKICAKICAgIHJldHVybiBpbmZvOwogZGlmZiAtLWdpdCBhL2dkay9nZGtkaXNwbGF5LmMgYi9nZGsvZ2RrZGlzcGxheS5jCi1pbmRleCA2YjAxMmNhLi4zMTFjN2Y3IDEwMDY0NAoraW5kZXggNDAyMjVlOS4uYzU1ZTFkZSAxMDA2NDQKIC0tLSBhL2dkay9nZGtkaXNwbGF5LmMKICsrKyBiL2dkay9nZGtkaXNwbGF5LmMKLUBAIC0yNDA5LDcgKzI0MDksOSBAQCBnYm9vbGVhbgorQEAgLTI0MDYsNyArMjQwNiw5IEBAIGdib29sZWFuCiAgZ2RrX2Rpc3BsYXlfbWFrZV9nbF9jb250ZXh0X2N1cnJlbnQgKEdka0Rpc3BsYXkgICAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrR0xDb250ZXh0ICpjb250ZXh0KQogIHsKQEAgLTM0Nyw3ICszNDYsNyBAQAogIAogIC8qKgogZGlmZiAtLWdpdCBhL2dkay9nZGt3aW5kb3cuYyBiL2dkay9nZGt3aW5kb3cuYwotaW5kZXggNjg5ZDY2Ni4uZmI4NDI1NiAxMDA2NDQKK2luZGV4IGMwZTBhN2QuLjQzN2FiMDMgMTAwNjQ0CiAtLS0gYS9nZGsvZ2Rrd2luZG93LmMKICsrKyBiL2dkay9nZGt3aW5kb3cuYwogQEAgLTQ1LDcgKzQ1LDkgQEAKQEAgLTM2MCw3ICszNTksNyBAQAogIAogIC8qIGZvciB0aGUgdXNlIG9mIHJvdW5kKCkgKi8KICAjaW5jbHVkZSAiZmFsbGJhY2stYzg5LmMiCi1AQCAtMjgxOSw2ICsyODIxLDEzIEBAIGdka193aW5kb3dfZ2V0X3BhaW50X2dsX2NvbnRleHQgKEdka1dpbmRvdyAgKndpbmRvdywKK0BAIC0yODIyLDYgKzI4MjQsMTMgQEAgZ2RrX3dpbmRvd19nZXRfcGFpbnRfZ2xfY29udGV4dCAoR2RrV2luZG93ICAqd2luZG93LAogIHsKICAgIEdFcnJvciAqaW50ZXJuYWxfZXJyb3IgPSBOVUxMOwogIApAQCAtMzc0LDcgKzM3Myw3IEBACiAgICBpZiAoX2dka19nbF9mbGFncyAmIEdES19HTF9ESVNBQkxFKQogICAgICB7CiAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCAoZXJyb3IsIEdES19HTF9FUlJPUiwKLUBAIC0yOTU0LDYgKzI5NjMsNyBAQCBnZGtfd2luZG93X2JlZ2luX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgICAgICAgICAgICAqd2luZG93LAorQEAgLTI5NTcsNiArMjk2Niw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCiAgICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgewpAQCAtMzgyLDcgKzM4MSw3IEBACiAgCSAgZ2RrX2dsX2NvbnRleHRfbWFrZV9jdXJyZW50IChjb250ZXh0KTsKICAgICAgICAgICAgLyogV2l0aCBnbCB3ZSBhbHdheXMgbmVlZCBhIHN1cmZhY2UgdG8gY29tYmluZSB0aGUgZ2wKICAgICAgICAgICAgICAgZHJhd2luZyB3aXRoIHRoZSBuYXRpdmUgZHJhd2luZy4gKi8KLUBAIC0yOTY4LDYgKzI5NzgsNyBAQCBnZGtfd2luZG93X2JlZ2luX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgICAgICAgICAgICAqd2luZG93LAorQEAgLTI5NzEsNiArMjk4MSw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCiAgICAgICAgICAgIGdsQmxlbmRGdW5jIChHTF9PTkUsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwogIAogICAgICAgICAgICBnbFZpZXdwb3J0ICgwLCAwLCB3dywgd2gpOwpAQCAtMzkwLDcgKzM4OSw3IEBACiAgICAgICAgICB9CiAgICAgIH0KICAKLUBAIC0zMDMxLDYgKzMwNDIsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCitAQCAtMzAzNCw2ICszMDQ1LDcgQEAgZ2RrX3dpbmRvd19lbmRfcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAqd2luZG93KQogIAogICAgICAgICAgICBnZGtfZ2xfY29udGV4dF9tYWtlX2N1cnJlbnQgKHdpbmRvdy0+Z2xfcGFpbnRfY29udGV4dCk7CiAgCkBAIC0zOTgsNyArMzk3LDcgQEAKICAgICAgICAgICAgaWYgKCFjYWlyb19yZWdpb25faXNfZW1wdHkgKG9wYXF1ZV9yZWdpb24pKQogICAgICAgICAgICAgIGdka19nbF90ZXh0dXJlX2Zyb21fc3VyZmFjZSAod2luZG93LT5jdXJyZW50X3BhaW50LnN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFxdWVfcmVnaW9uKTsKLUBAIC0zMDQxLDYgKzMwNTMsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCitAQCAtMzA0NCw2ICszMDU2LDcgQEAgZ2RrX3dpbmRvd19lbmRfcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAqd2luZG93KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3ctPmN1cnJlbnRfcGFpbnQubmVlZF9ibGVuZF9yZWdpb24pOwogICAgICAgICAgICAgICAgZ2xEaXNhYmxlKEdMX0JMRU5EKTsKICAgICAgICAgICAgICB9CkBAIC00NzksNyArNDc4LDcgQEAKICsKICAtaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2dpdC5tawogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYyBiL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYwotaW5kZXggYWQ2NWUyOS4uOTEzNDVlZSAxMDA2NDQKK2luZGV4IGU5YTI2M2YuLjI4MjlhMzEgMTAwNjQ0CiAtLS0gYS9nZGsveDExL2dka2Rpc3BsYXkteDExLmMKICsrKyBiL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYwogQEAgLTM3LDcgKzM3LDkgQEAKQEAgLTQ5Miw3ICs0OTEsNyBAQAogICNpbmNsdWRlICJnZGstcHJpdmF0ZS5oIgogIAogICNpbmNsdWRlIDxnbGliLmg+Ci1AQCAtMjk5NCw3ICsyOTk2LDkgQEAgZ2RrX3gxMV9kaXNwbGF5X2NsYXNzX2luaXQgKEdka1gxMURpc3BsYXlDbGFzcyAqIGNsYXNzKQorQEAgLTMxNjksNyArMzE3MSw5IEBAIGdka194MTFfZGlzcGxheV9jbGFzc19pbml0IChHZGtYMTFEaXNwbGF5Q2xhc3MgKiBjbGFzcykKICAgIGRpc3BsYXlfY2xhc3MtPnRleHRfcHJvcGVydHlfdG9fdXRmOF9saXN0ID0gX2dka194MTFfZGlzcGxheV90ZXh0X3Byb3BlcnR5X3RvX3V0ZjhfbGlzdDsKICAgIGRpc3BsYXlfY2xhc3MtPnV0ZjhfdG9fc3RyaW5nX3RhcmdldCA9IF9nZGtfeDExX2Rpc3BsYXlfdXRmOF90b19zdHJpbmdfdGFyZ2V0OwogIApAQCAtNTU0LDcxICs1NTMsMjEgQEAKICBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHZGtYMTFLZXltYXAsIGdfb2JqZWN0X3VucmVmKQogIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdka1gxMVNjcmVlbiwgZ19vYmplY3RfdW5yZWYpCiAgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR2RrWDExVmlzdWFsLCBnX29iamVjdF91bnJlZikKLWRpZmYgLS1naXQgYS9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmggYi9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hZTA1ZmE2Ci0tLS0gL2Rldi9udWxsCitkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGt4LmggYi9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmgKK3NpbWlsYXJpdHkgaW5kZXggOTglCityZW5hbWUgZnJvbSBnZGsveDExL2dka3guaAorcmVuYW1lIHRvIGdkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaAoraW5kZXggMWY2NGJjYy4uYWUwNWZhNiAxMDA2NDQKKy0tLSBhL2dkay94MTEvZ2RreC5oCiArKysgYi9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmgKLUBAIC0wLDAgKzEsNTkgQEAKLSsvKiBHREsgLSBUaGUgR0lNUCBEcmF3aW5nIEtpdAotKyAqIENvcHlyaWdodCAoQykgMTk5NS0xOTk3IFBldGVyIE1hdHRpcywgU3BlbmNlciBLaW1iYWxsIGFuZCBKb3NoIE1hY0RvbmFsZAotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5LiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rICovCi0rCi0rLyoKLSsgKiBNb2RpZmllZCBieSB0aGUgR1RLKyBUZWFtIGFuZCBvdGhlcnMgMTk5Ny0yMDAwLiAgU2VlIHRoZSBBVVRIT1JTCi0rICogZmlsZSBmb3IgYSBsaXN0IG9mIHBlb3BsZSBvbiB0aGUgR1RLKyBUZWFtLiAgU2VlIHRoZSBDaGFuZ2VMb2cKLSsgKiBmaWxlcyBmb3IgYSBsaXN0IG9mIGNoYW5nZXMuICBUaGVzZSBmaWxlcyBhcmUgZGlzdHJpYnV0ZWQgd2l0aAotKyAqIEdUSysgYXQgZnRwOi8vZnRwLmd0ay5vcmcvcHViL2d0ay8uCi0rICovCi0rCi0rI2lmbmRlZiBfX0dES19YX0hfXwotKyNkZWZpbmUgX19HREtfWF9IX18KLSsKLSsjaW5jbHVkZSA8Z2RrL2dkay5oPgotKwotKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgotKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KLSsKLSsjZGVmaW5lIF9fR0RLWF9IX0lOU0lERV9fCi0rCi0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExYXBwbGF1bmNoY29udGV4dC5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWN1cnNvci5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZS5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZS1jb3JlLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLXhpMi5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXIuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2VtYW5hZ2VyLWNvcmUuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2VtYW5hZ2VyLXhpMi5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRpc3BsYXkuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkaXNwbGF5bWFuYWdlci5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRuZC5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWdsY29udGV4dC5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWtleXMuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFwcm9wZXJ0eS5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNjcmVlbi5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNlbGVjdGlvbi5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXV0aWxzLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExdmlzdWFsLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExd2luZG93Lmg+Ci0rCi0rI2luY2x1ZGUgPGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaD4KLSsKLSsjdW5kZWYgX19HREtYX0hfSU5TSURFX18KLSsKLSsjZW5kaWYgLyogX19HREtfWF9IX18gKi8KK0BAIC00NSw3ICs0NSw2IEBACisgI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZG5kLmg+CisgI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZ2xjb250ZXh0Lmg+CisgI2luY2x1ZGUgPGdkay94MTEvZ2RreDExa2V5cy5oPgorLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMW1vbml0b3IuaD4KKyAjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFwcm9wZXJ0eS5oPgorICNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNjcmVlbi5oPgorICNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNlbGVjdGlvbi5oPgogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaCBiL2dkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmM5ZTI2MTcKQEAgLTY4Myw3NyArNjMyLDExIEBACiArI3VuZGVmIF9fR0RLWF9IX0lOU0lERV9fCiArCiArI2VuZGlmIC8qIF9fR0RLX1hfSF9fICovCi1kaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGt4LmggYi9nZGsveDExL2dka3guaAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAxZjY0YmNjLi4wMDAwMDAwCi0tLS0gYS9nZGsveDExL2dka3guaAotKysrIC9kZXYvbnVsbAotQEAgLTEsNjAgKzAsMCBAQAotLS8qIEdESyAtIFRoZSBHSU1QIERyYXdpbmcgS2l0Ci0tICogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcgUGV0ZXIgTWF0dGlzLCBTcGVuY2VyIEtpbWJhbGwgYW5kIEpvc2ggTWFjRG9uYWxkCi0tICoKLS0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0tICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0gKgotLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSAqCi0tICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnkuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0gKi8KLS0KLS0vKgotLSAqIE1vZGlmaWVkIGJ5IHRoZSBHVEsrIFRlYW0gYW5kIG90aGVycyAxOTk3LTIwMDAuICBTZWUgdGhlIEFVVEhPUlMKLS0gKiBmaWxlIGZvciBhIGxpc3Qgb2YgcGVvcGxlIG9uIHRoZSBHVEsrIFRlYW0uICBTZWUgdGhlIENoYW5nZUxvZwotLSAqIGZpbGVzIGZvciBhIGxpc3Qgb2YgY2hhbmdlcy4gIFRoZXNlIGZpbGVzIGFyZSBkaXN0cmlidXRlZCB3aXRoCi0tICogR1RLKyBhdCBmdHA6Ly9mdHAuZ3RrLm9yZy9wdWIvZ3RrLy4KLS0gKi8KLS0KLS0jaWZuZGVmIF9fR0RLX1hfSF9fCi0tI2RlZmluZSBfX0dES19YX0hfXwotLQotLSNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0tCi0tI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0tI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgotLQotLSNkZWZpbmUgX19HREtYX0hfSU5TSURFX18KLS0KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFhcHBsYXVuY2hjb250ZXh0Lmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExY3Vyc29yLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLWNvcmUuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2UteGkyLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlbWFuYWdlci5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXItY29yZS5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXIteGkyLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGlzcGxheS5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRpc3BsYXltYW5hZ2VyLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZG5kLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZ2xjb250ZXh0Lmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExa2V5cy5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMW1vbml0b3IuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFwcm9wZXJ0eS5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNjcmVlbi5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNlbGVjdGlvbi5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMXV0aWxzLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExdmlzdWFsLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExd2luZG93Lmg+Ci0tCi0tI2luY2x1ZGUgPGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaD4KLS0KLS0jdW5kZWYgX19HREtYX0hfSU5TSURFX18KLS0KLS0jZW5kaWYgLyogX19HREtfWF9IX18gKi8KIGRpZmYgLS1naXQgYS9ndGsvTWFrZWZpbGUuYW0gYi9ndGsvTWFrZWZpbGUuYW0KLWluZGV4IDQ1ZmI3YzIuLmNlODEwMTEgMTAwNjQ0CitpbmRleCA4NDJjMmY5Li4wOTIxYmM3IDEwMDY0NAogLS0tIGEvZ3RrL01ha2VmaWxlLmFtCiArKysgYi9ndGsvTWFrZWZpbGUuYW0KLUBAIC0xNDExLDE0ICsxNDExLDEzIEBAIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuYzogJChndGtfcHJpdmF0ZV90eXBlX2hfc291cmNlcykgIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuCitAQCAtMTQxNiwxNCArMTQxNiwxMyBAQCBndGtwcml2YXRldHlwZWJ1aWx0aW5zLmM6ICQoZ3RrX3ByaXZhdGVfdHlwZV9oX3NvdXJjZXMpICBndGtwcml2YXRldHlwZWJ1aWx0aW5zLgogIAkmJiBjcCB4Z2VuLWdwdGJjIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuYyAgXAogIAkmJiBybSAtZiB4Z2VuLWdwdGJjCiAgCkBAIC05MTMsNyArNzk2LDcgQEAKICAgIGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZIChnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCAoKSkpCiAgICAgIHsKIGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCBmODZjMTY2Li5iYTFhY2FkIDEwMDY0NAoraW5kZXggZTJkYjZlNC4uZTUxY2YzNCAxMDA2NDQKIC0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCiArKysgYi90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTgwLDggKzgwLDYgQEAgbm9pbnN0X1BST0dSQU1TID0gICQoVEVTVF9QUk9HUykJXApAQCAtOTQ5LDE3ICs4MzIsMTYgQEAKIGluZGV4IDBiM2E1MTkuLjA3YjA5NmYgMTAwNjQ0CiAtLS0gYS90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYwogKysrIGIvdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMKLUBAIC0xMTUsOCArMTE1LDEwIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC0xMTUsNyArMTE1LDkgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9YMTFfREVWSUNFX01BTkFHRVJfQ09SRSAmJgogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9YMTFfREVWSUNFX01BTkFHRVJfWEkyICYmCiAgCSAgYWxsX3R5cGVzW2ldICE9IEdES19UWVBFX1gxMV9ESVNQTEFZX01BTkFHRVIgJiYKICsjaWZkZWYgSEFWRV9PUEVOR0wKICAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfWDExX0dMX0NPTlRFWFQgJiYKLSAjZW5kaWYKICsjZW5kaWYKKyAjZW5kaWYKICAJICAvKiBOb3QgYWxsb3dlZCB0byBmaW5hbGl6ZSBhIEdka1BpeGJ1ZkxvYWRlciB3aXRob3V0IGNhbGxpbmcgZ2RrX3BpeGJ1Zl9sb2FkZXJfY2xvc2UoKSAqLwogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9QSVhCVUZfTE9BREVSICYmCi0gCSAgYWxsX3R5cGVzW2ldICE9IEdES19UWVBFX0RSQVdJTkdfQ09OVEVYVCAmJgogLS0gCi0yLjEyLjAKKzIuMTQuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwNC1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwNC1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjYTU1Y2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDQtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSAzNGY0ZDM5MjhlODIwNmE4OWIwYTYwMWJkZjc5ZDYxOTRiM2NjNzdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFRodSwgOSBKdW4gMjAxNiAxMToyMTozNiArMDMwMAotU3ViamVjdDogW1BBVENIIDQvNF0gY29uZmlndXJlLmFjOiBGaXggd2F5bGFuZC1wcm90b2NvbHMgcGF0aAotCi1UaGUgd2F5bGFuZC1wcm90b2NvbHMgZGlyZWN0b3J5IGlzIHVzZWQgZHVyaW5nIGJ1aWxkOiBGaXggdGhlIHBhdGgKLXRvIHBvaW50IHRvIHN5c3Jvb3Qgc3BlY2lmaWVkIGluIHJlY2lwZS4KLQotTm9ybWFsbHkgUEtHX0NPTkZJR19TWVNST09UX0RJUiBjb3VsZCBiZSB1c2VkIGluIGNvbmZpZ3VyZS5hYyBidXQgdGhhdAotYnJlYWtzIG11bHRpbGliIGd0aysgYXMgaXQgd291bGQgcG9pbnQgdG8gbXVsdGlsaWIgc3lzcm9vdCB3aGVuIHRoZQotKGFsbGFyY2gpIHdheWxhbmQtcHJvdG9jb2xzIGlzIGFjdHVhbGx5IGluIHRoZSBtYWNoaW5lIHN5c3Jvb3QuCi0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAwMGJmNTQ0Li41NTE1OTE1IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC00NjUsNyArNDY1LDcgQEAgZmkKLSBpZiB0ZXN0ICIkZW5hYmxlX3dheWxhbmRfYmFja2VuZCIgPSAieWVzIjsgdGhlbgotICAgIyBGb3IgdGhlIGNhaXJvIGltYWdlIGJhY2tlbmQKLSAgIGNhaXJvX2JhY2tlbmRzPSIkY2Fpcm9fYmFja2VuZHMgY2Fpcm8iCi0tICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCBgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSsgIEFDX1NVQlNUKFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIsICR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2ApCi0gICBHREtfQkFDS0VORFM9IiRHREtfQkFDS0VORFMgd2F5bGFuZCIKLSAgIEdES19XSU5ET1dJTkc9IiRHREtfV0lORE9XSU5HCi0gI2RlZmluZSBHREtfV0lORE9XSU5HX1dBWUxBTkQiCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmE1NDYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBndGsrMy5pbmMKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0aysvJHtNQUpfVkVSfS9ndGsrLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUhhcmRjb2RlZC1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1wcm90b2NvbHMtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjI5Zjg1NDMwY2Y3Y2ZhOGNhOGQwNzAzYmE2NWRiZTExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2YzFmYjhmMjI5YzYyNmEzZDljMGUxY2U2ZWExMzhkZTdmNjRhNWE2YmM3OTlkNDVmYTI4NmZlNDYxYzM0MzciCi0KLVMgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY0ZTgyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjI4LmJiCkBAIC0wLDAgKzEsMTggQEAKK3JlcXVpcmUgZ3RrKzMuaW5jCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YzFmNWFiOTg3ZGRjN2RhYjNlNTk2NjBmODlkY2Q5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjk5NjEyYjAxOGNmZWQ3YjJjNjg5MTY4YWI1MmI2NjgwMjM3MDhlMTdjMzM1ZWI1OTIyNjBkMTg2ZjE1ZTFmIgorCitTID0gIiR7V09SS0RJUn0vZ3RrKy0ke1BWfSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aytfMi4yNC4zMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MzMWJhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotcmVxdWlyZSBndGsrLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNzttZDU9YzU5ZTBiNDQ5MGRkMTM1YTU3MjZlYmY4NTFmOWIxN2YgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9Mjc7bWQ1PTA3ZGIyODVlYzIwOGZiM2UwYmY3ZDg2MWIwNjE0MjAyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI3O21kNT0yNjJkYjVkYjVmNzc2Zjk4NjNlNTZkZjMxNDIzZTI0YyIKLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8yLjI0L2d0aystJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3hzZXR0aW5ncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90b2dnbGUtZm9udC5kaWZmO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb2MtZml4ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3RyaWN0LXByb3RvdHlwZXMucGF0Y2ggXAotCSAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTI2YTEwMDg1ODYwOTRhMmNiYjQ1OTJmZDNmOWVlMTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjhjMTkyMjczMmM3ZWZjMDhkZjQ2NTZhNTM2NmRjYzNhZmRjODc5MTUxMzQwMGRhYzI3NjAwOWI0MDk1NDY1OCIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXhrYiAtLWRpc2FibGUtZ2xpYnRlc3QgLS1kaXNhYmxlLWN1cHMgLS1kaXNhYmxlLXhpbmVyYW1hIgotCi1MSUJWID0gIjIuMTAuMCIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmd0ay1pbW1vZHVsZS0uKiBeZ3RrLXByaW50YmFja2VuZC0uKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGd0a19saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2d0ay0yLjAvJHtMSUJWfScpCi0gICAgaW1tb2R1bGVzX3Jvb3QgPSBvcy5wYXRoLmpvaW4oZ3RrX2xpYmRpciwgJ2ltbW9kdWxlcycpCi0gICAgcHJpbnRtb2R1bGVzX3Jvb3QgPSBvcy5wYXRoLmpvaW4oZ3RrX2xpYmRpciwgJ3ByaW50YmFja2VuZHMnKTsKLQotICAgIGQuc2V0VmFyKCdHVEtJTU1PRFVMRVNfUEFDS0FHRVMnLCAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBpbW1vZHVsZXNfcm9vdCwgJ15pbS0oLiopXC5zbyQnLCAnZ3RrLWltbW9kdWxlLSVzJywgJ0dUSyBpbnB1dCBtb2R1bGUgZm9yICVzJykpKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHByaW50bW9kdWxlc19yb290LCAnXmxpYnByaW50YmFja2VuZC0oLiopXC5zbyQnLCAnZ3RrLXByaW50YmFja2VuZC0lcycsICdHVEsgcHJpbnRiYWNrZW5kIG1vZHVsZSBmb3IgJXMnKQotCi0gICAgaWYgKGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnKSk6Ci0gICAgICAgIGQuc2V0VmFyKGQuZXhwYW5kKCdQS0dfJHtQTn0nKSwgJyR7TUxQUkVGSVh9bGliZ3RrLTIuMCcpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aytfMi4yNC4zMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDcwMzU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aytfMi4yNC4zMi5iYgpAQCAtMCwwICsxLDM0IEBACityZXF1aXJlIGd0aysuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI3O21kNT1jNTllMGI0NDkwZGQxMzVhNTcyNmViZjg1MWY5YjE3ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNzttZDU9MDdkYjI4NWVjMjA4ZmIzZTBiZjdkODYxYjA2MTQyMDIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9Mjc7bWQ1PTI2MmRiNWRiNWY3NzZmOTg2M2U1NmRmMzE0MjNlMjRjIgorU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLzIuMjQvZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8veHNldHRpbmdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2hhcmRjb2RlZF9saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RvZ2dsZS1mb250LmRpZmY7c3RyaXBsZXZlbD0wIFwKKyAgICAgICAgICAgZmlsZTovL2RvYy1maXhlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zdHJpY3QtcHJvdG90eXBlcy5wYXRjaCBcCisJICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNTc0MmFhNDIyNzUyMDNhNDk5YjU5YjRjMzgyYTc4NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNmM4YTkzZGRkYTVlYWJlM2JmZWUxZWIzOTYzNmM5YTAzZDJhNTZjN2I2MjgyOGIzNTliZjE5Nzk0M2M1ODJlIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUteGtiIC0tZGlzYWJsZS1nbGlidGVzdCAtLWRpc2FibGUtY3VwcyAtLWRpc2FibGUteGluZXJhbWEiCisKK0xJQlYgPSAiMi4xMC4wIgorCitQQUNLQUdFU19EWU5BTUlDICs9ICJeZ3RrLWltbW9kdWxlLS4qIF5ndGstcHJpbnRiYWNrZW5kLS4qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgZ3RrX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ3RrLTIuMC8ke0xJQlZ9JykKKyAgICBpbW1vZHVsZXNfcm9vdCA9IG9zLnBhdGguam9pbihndGtfbGliZGlyLCAnaW1tb2R1bGVzJykKKyAgICBwcmludG1vZHVsZXNfcm9vdCA9IG9zLnBhdGguam9pbihndGtfbGliZGlyLCAncHJpbnRiYWNrZW5kcycpOworCisgICAgZC5zZXRWYXIoJ0dUS0lNTU9EVUxFU19QQUNLQUdFUycsICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGltbW9kdWxlc19yb290LCAnXmltLSguKilcLnNvJCcsICdndGstaW1tb2R1bGUtJXMnLCAnR1RLIGlucHV0IG1vZHVsZSBmb3IgJXMnKSkpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcHJpbnRtb2R1bGVzX3Jvb3QsICdebGlicHJpbnRiYWNrZW5kLSguKilcLnNvJCcsICdndGstcHJpbnRiYWNrZW5kLSVzJywgJ0dUSyBwcmludGJhY2tlbmQgbW9kdWxlIGZvciAlcycpCisKKyAgICBpZiAoZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpKToKKyAgICAgICAgZC5zZXRWYXIoZC5leHBhbmQoJ1BLR18ke1BOfScpLCAnJHtNTFBSRUZJWH1saWJndGstMi4wJykKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMyZDgyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1TVU1NQVJZID0gIk5hdGl2ZSBpY29uIHV0aWxzIGZvciBHVEsrIgotREVTQ1JJUFRJT04gPSAiZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIGFuZCBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBidWlsdCBmcm9tIEdUSysgbmF0aXZlbHksIGZvciBidWlsZCB0aW1lIGFuZCBvbi1ob3N0IHBvc3RpbnN0IHNjcmlwdCBleGVjdXRpb24uIgotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnZGstcGl4YnVmLW5hdGl2ZSBsaWJyc3ZnLW5hdGl2ZSIKLQotTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICBmaWxlOi8vUmVtb3ZlLUdkay1kZXBlbmRlbmN5LWZyb20tZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiMjlmODU0MzBjZjdjZmE4Y2E4ZDA3MDNiYTY1ZGJlMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZjMWZiOGYyMjljNjI2YTNkOWMwZTFjZTZlYTEzOGRlN2Y2NGE1YTZiYzc5OWQ0NWZhMjg2ZmU0NjFjMzQzNyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCi0KLVMgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgotCi1pbmhlcml0IHBrZ2NvbmZpZyBuYXRpdmUKLQotIyB2ZXJzaW9ucyA+PSAzLjkwIGFyZSBkZXZlbG9wbWVudCB2ZXJzaW9ucywgb3RoZXJ3aXNlIGxpa2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbXlxkXC5dKD9QPHB2ZXI+M1wuKFsxLThdP1swMjQ2OF0pKyhcLlxkKykrKVwudGFyIgotCi1QS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgotCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KLQkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKLQkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAotCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCi0JZmkKLQlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCi0JCXRvdWNoIGdkay9jb25maWcuaAotCWZpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0JJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAotCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCi0JCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCi0JCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQotCi0JJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAotCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKLQkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAotCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZwotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQyYzA0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4yOC5iYgpAQCAtMCwwICsxLDYzIEBACitTVU1NQVJZID0gIk5hdGl2ZSBpY29uIHV0aWxzIGZvciBHVEsrIgorREVTQ1JJUFRJT04gPSAiZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIGFuZCBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBidWlsdCBmcm9tIEdUSysgbmF0aXZlbHksIGZvciBidWlsZCB0aW1lIGFuZCBvbi1ob3N0IHBvc3RpbnN0IHNjcmlwdCBleGVjdXRpb24uIgorU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnZGstcGl4YnVmLW5hdGl2ZSBsaWJyc3ZnLW5hdGl2ZSIKKworTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICBmaWxlOi8vUmVtb3ZlLUdkay1kZXBlbmRlbmN5LWZyb20tZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiOGMxZjVhYjk4N2RkYzdkYWIzZTU5NjYwZjg5ZGNkOWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDI5OTYxMmIwMThjZmVkN2IyYzY4OTE2OGFiNTJiNjY4MDIzNzA4ZTE3YzMzNWViNTkyMjYwZDE4NmYxNWUxZiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCisKK1MgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgorCitpbmhlcml0IHBrZ2NvbmZpZyBuYXRpdmUKKworIyB2ZXJzaW9ucyA+PSAzLjkwIGFyZSBkZXZlbG9wbWVudCB2ZXJzaW9ucywgb3RoZXJ3aXNlIGxpa2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbXlxkXC5dKD9QPHB2ZXI+M1wuKFsxLThdP1swMjQ2OF0pKyhcLlxkKykrKVwudGFyIgorCitQS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgorCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KKwkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKKwkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAorCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCisJZmkKKwlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCisJCXRvdWNoIGdkay9jb25maWcuaAorCWZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCisJCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCisJCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQorCisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKKwkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAorCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZworfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtZXJyb3Itb3V0LWlmLXBlcmwtaXMtbm90LWZvdW5kLW9yLWl0cy12ZXJzaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWVycm9yLW91dC1pZi1wZXJsLWlzLW5vdC1mb3VuZC1vci1pdHMtdmVyc2lvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE5MDI4Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtZXJyb3Itb3V0LWlmLXBlcmwtaXMtbm90LWZvdW5kLW9yLWl0cy12ZXJzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBlNzMzMjQxZmI1ODBmMDMyZWZiYmU2ODRlYzM1ZDRjOWQyN2YxNTk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDggU2VwIDIwMTYgMTM6Mzg6MzkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGVycm9yIG91dCBpZiBwZXJsIGlzIG5vdCBmb3VuZCBvciBpdHMgdmVyc2lvbiBpcyB0b28KLSBvbGQuCi0KLVRoaXMgYWxsb3dzIHVzZSB0byBhdm9pZCBkZXBlbmRpbmcgb24gcGVybC1uYXRpdmUgaWYgd2UncmUgbm90IGdvaW5nCi10byB1c2UgaXQgKHdoZW4gYXBpLWRvY3MgYXJlIGRpc2FibGVkKS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyYTYxZDZlLi4yOTQxNWJkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNiw3ICszNiw3IEBAIGRubCBDaGVjayBmb3IgUGVybC4KLSBkbmwKLSBBQ19QQVRIX1BST0coW1BFUkxdLCBbcGVybF0pCi0gaWYgdGVzdCAteiAiJFBFUkwiOyB0aGVuCi0tCUFDX01TR19FUlJPUihbcGVybCBub3QgZm91bmRdKQotKwlBQ19NU0dfV0FSTihbcGVybCBub3QgZm91bmRdKQotIGZpCi0gCi0gQUNfTVNHX0NIRUNLSU5HKFtpZiBQZXJsIHZlcnNpb24gPj0gNS4xOC4wXSkKLUBAIC00NCw3ICs0NCw3IEBAIGlmICIkUEVSTCIgLWUgInJlcXVpcmUgdjUuMTguMCI7IHRoZW4KLSAJQUNfTVNHX1JFU1VMVChbeWVzXSkKLSBlbHNlCi0gCUFDX01TR19SRVNVTFQoW25vXSkKLS0JQUNfTVNHX0VSUk9SKFtwZXJsID49IDUuMTguMCBpcyByZXF1aXJlZCBmb3IgZ3RrLWRvY10pCi0rCUFDX01TR19XQVJOKFtwZXJsID49IDUuMTguMCBpcyByZXF1aXJlZCBmb3IgZ3RrLWRvY10pCi0gZmkKLSAKLSBkbmwKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoCmluZGV4IDQ3N2ZjOWEuLjJmZTNhYjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtaGFyZG9jb2RlLXBhdGhzLXRvLXBlcmwtcHl0aG9uLWluLXNjcmlwdHMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDZmYWI4MmI5M2M3YmQzMDFlYjQyNDQ4NTE1YjAyZjdjYjMzMDY4OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDkyODEwMjg3NGJjMjMzOWExZDU3YzZiMTc4ODc3ZTBjNjAwMmNiM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMzEgQXVnIDIwMTYgMTY6NDQ6NDYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGhhcmRvY29kZSBwYXRocyB0byBwZXJsL3B5dGhvbiBpbiBzY3JpcHRzLgorU3ViamVjdDogW1BBVENIIDEvM10gRG8gbm90IGhhcmRvY29kZSBwYXRocyB0byBwZXJsL3B5dGhvbiBpbiBzY3JpcHRzLgogCiBEb2luZyBzbyB3aGVuIHRoZSBpbnRlcnByZXRlcnMgYXJlIHNvbWV3aGVyZSBkZWVwIGluIGEgc3lzcm9vdCBkaXJlY3RvcnkKIGNhbiByZWFjaCB0aGUgc2hlYmFuZyBsaW5lIGxpbWl0LCBhbmQgcmVzdWx0aW5nIHNjcmlwdHMgd291bGRuJ3Qgd29yawpAQCAtOSwxMzEgKzksMTM0IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KLSBndGtkb2MtY2hlY2suaW4gICAgIHwgMiArLQotIGd0a2RvYy1jb21tb24ucGwuaW4gfCAyICstCi0gZ3RrZG9jLWRlcHNjYW4uaW4gICB8IDIgKy0KLSBndGtkb2MtZml4eHJlZi5pbiAgIHwgMiArLQotIGd0a2RvYy1ta2RiLmluICAgICAgfCAyICstCi0gZ3RrZG9jLW1rdG1wbC5pbiAgICB8IDIgKy0KLSBndGtkb2MtcmViYXNlLmluICAgIHwgMiArLQotIGd0a2RvYy1zY2FuLmluICAgICAgfCAyICstCi0gZ3RrZG9jLXNjYW5nb2JqLmluICB8IDIgKy0KLSB0ZXN0cy90b29scy5zaC5pbiAgIHwgNCArKy0tCi0gMTAgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisgZ3RrZG9jLWNoZWNrLmluICAgIHwgMiArLQorIGd0a2RvYy1kZXBzY2FuLmluICB8IDIgKy0KKyBndGtkb2MtZml4eHJlZi5pbiAgfCAyICstCisgZ3RrZG9jLW1rZGIuaW4gICAgIHwgMiArLQorIGd0a2RvYy1ta2h0bWwuaW4gICB8IDIgKy0KKyBndGtkb2MtbWttYW4uaW4gICAgfCAyICstCisgZ3RrZG9jLW1rcGRmLmluICAgIHwgMiArLQorIGd0a2RvYy1yZWJhc2UuaW4gICB8IDIgKy0KKyBndGtkb2Mtc2Nhbi5pbiAgICAgfCAyICstCisgZ3RrZG9jLXNjYW5nb2JqLmluIHwgMiArLQorIHRlc3RzL3Rvb2xzLnNoLmluICB8IDIgKy0KKyAxMSBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2d0a2RvYy1jaGVjay5pbiBiL2d0a2RvYy1jaGVjay5pbgotaW5kZXggNTYwZDY5Yi4uYjYwODU3ZiAxMDA3NTUKK2luZGV4IDhjOGU5MTcuLmY2YTI1ZjYgMTAwNzU1CiAtLS0gYS9ndGtkb2MtY2hlY2suaW4KICsrKyBiL2d0a2RvYy1jaGVjay5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCi0gIwotICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgotZGlmZiAtLWdpdCBhL2d0a2RvYy1jb21tb24ucGwuaW4gYi9ndGtkb2MtY29tbW9uLnBsLmluCi1pbmRleCA0NzQ3Mzk2Li5jZmFkYjc4IDEwMDY0NAotLS0tIGEvZ3RrZG9jLWNvbW1vbi5wbC5pbgotKysrIGIvZ3RrZG9jLWNvbW1vbi5wbC5pbgotQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob247IGNvZGluZzogdXRmLTggLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1kZXBzY2FuLmluIGIvZ3RrZG9jLWRlcHNjYW4uaW4KLWluZGV4IDgzYWYwMWIuLjkxN2UyNDcgMTAwNjQ0CitpbmRleCA5YmZhZjMwLi5hYWRjOTUyIDEwMDY0NAogLS0tIGEvZ3RrZG9jLWRlcHNjYW4uaW4KICsrKyBiL2d0a2RvYy1kZXBzY2FuLmluCiBAQCAtMSw0ICsxLDQgQEAKIC0jIUBQWVRIT05ACi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIAotIGltcG9ydCBnemlwLCBvcy5wYXRoLCByZQorIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KICAKIGRpZmYgLS1naXQgYS9ndGtkb2MtZml4eHJlZi5pbiBiL2d0a2RvYy1maXh4cmVmLmluCi1pbmRleCAzZDllOGQwLi5kNTUxOTBiIDEwMDc1NQoraW5kZXggMGVhMDJkNC4uYmRkNDQzYSAxMDA3NTUKIC0tLSBhL2d0a2RvYy1maXh4cmVmLmluCiArKysgYi9ndGtkb2MtZml4eHJlZi5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob24gLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1ta2RiLmluIGIvZ3RrZG9jLW1rZGIuaW4KLWluZGV4IDhkZDZkNWUuLmQ4MDg3NTAgMTAwNzU1CitpbmRleCA0MmQ1NzMxLi4zYTU2ZDU2IDEwMDc1NQogLS0tIGEvZ3RrZG9jLW1rZGIuaW4KICsrKyBiL2d0a2RvYy1ta2RiLmluCiBAQCAtMSw0ICsxLDQgQEAKLS0jIUBQRVJMQCAtdwotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjIC0qLSBjcGVybCAtKi0KKy0jIUBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIHB5dGhvbjsgY29kaW5nOiB1dGYtOCAtKi0KICAjCiAgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCi1kaWZmIC0tZ2l0IGEvZ3RrZG9jLW1rdG1wbC5pbiBiL2d0a2RvYy1ta3RtcGwuaW4KLWluZGV4IGM2NGRmZDMuLjJmNDZjMTggMTAwNzU1Ci0tLS0gYS9ndGtkb2MtbWt0bXBsLmluCi0rKysgYi9ndGtkb2MtbWt0bXBsLmluCitkaWZmIC0tZ2l0IGEvZ3RrZG9jLW1raHRtbC5pbiBiL2d0a2RvYy1ta2h0bWwuaW4KK2luZGV4IDBkMGExNWQuLjkxNGZmNTUgMTAwNjQ0CistLS0gYS9ndGtkb2MtbWtodG1sLmluCisrKysgYi9ndGtkb2MtbWtodG1sLmluCiBAQCAtMSw0ICsxLDQgQEAKLS0jIUBQRVJMQCAtdwotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjIC0qLSBjcGVybCAtKi0KKy0jIUBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIHB5dGhvbjsgY29kaW5nOiB1dGYtOCAtKi0KKyAjCisgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCitkaWZmIC0tZ2l0IGEvZ3RrZG9jLW1rbWFuLmluIGIvZ3RrZG9jLW1rbWFuLmluCitpbmRleCBjNTQ0NWNkLi42NWRiNzFhIDEwMDY0NAorLS0tIGEvZ3RrZG9jLW1rbWFuLmluCisrKysgYi9ndGtkb2MtbWttYW4uaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBZVEhPTkAKKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gcHl0aG9uOyBjb2Rpbmc6IHV0Zi04IC0qLQorICMKKyAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KK2RpZmYgLS1naXQgYS9ndGtkb2MtbWtwZGYuaW4gYi9ndGtkb2MtbWtwZGYuaW4KK2luZGV4IGU4YzBjMDMuLmY4MDcyMzYgMTAwNzU1CistLS0gYS9ndGtkb2MtbWtwZGYuaW4KKysrKyBiL2d0a2RvYy1ta3BkZi5pbgorQEAgLTEsNCArMSw0IEBACistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob247IGNvZGluZzogdXRmLTggLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1yZWJhc2UuaW4gYi9ndGtkb2MtcmViYXNlLmluCi1pbmRleCAzNzU0ODJkLi5jZjA1YjQ1IDEwMDY0NAoraW5kZXggMTdhNzFjMi4uZWMzZmQyOCAxMDA3NTUKIC0tLSBhL2d0a2RvYy1yZWJhc2UuaW4KICsrKyBiL2d0a2RvYy1yZWJhc2UuaW4KIEBAIC0xLDQgKzEsNCBAQAotLSMhQFBFUkxAIC13Ci0rIyEvdXNyL2Jpbi9lbnYgcGVybAotICMgLSotIGNwZXJsIC0qLQorLSMhQFBZVEhPTkAKKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gcHl0aG9uIC0qLQogICMKICAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KIGRpZmYgLS1naXQgYS9ndGtkb2Mtc2Nhbi5pbiBiL2d0a2RvYy1zY2FuLmluCi1pbmRleCAwNDhlNWM5Li43OGM2MTM2IDEwMDc1NQoraW5kZXggOTU0YzgxMS4uZjQ2MTUwNCAxMDA3NTUKIC0tLSBhL2d0a2RvYy1zY2FuLmluCiArKysgYi9ndGtkb2Mtc2Nhbi5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob24gLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1zY2FuZ29iai5pbiBiL2d0a2RvYy1zY2FuZ29iai5pbgotaW5kZXggZmI2NmI3Ni4uNjdlZThmNyAxMDA2NDQKK2luZGV4IDRjYmUxMzAuLjUyYzJjMjQgMTAwNjQ0CiAtLS0gYS9ndGtkb2Mtc2NhbmdvYmouaW4KICsrKyBiL2d0a2RvYy1zY2FuZ29iai5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob24gLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL3Rlc3RzL3Rvb2xzLnNoLmluIGIvdGVzdHMvdG9vbHMuc2guaW4KLWluZGV4IGExMTRhNDIuLjcwNzM4ODMgMTAwNjQ0CitpbmRleCA0ZDMwMWQwLi41NjVmYzFlIDEwMDY0NAogLS0tIGEvdGVzdHMvdG9vbHMuc2guaW4KICsrKyBiL3Rlc3RzL3Rvb2xzLnNoLmluCi1AQCAtMTEsNyArMTEsNyBAQCBlY2hvICJSdW5uaW5nIHN1aXRlKHMpOiBndGstZG9jLSRzdWl0ZSI7Ci0gCi0gIyB0ZXN0IHBlcmwgc2NyaXB0cwotIGZvciBmaWxlIGluIGd0a2RvYy1jaGVjayBndGtkb2MtZml4eHJlZiBndGtkb2MtbWtkYiBndGtkb2MtbWt0bXBsIGd0a2RvYy1yZWJhc2UgZ3RrZG9jLXNjYW4gZ3RrZG9jLXNjYW5nb2JqIDsgZG8KLS0gIEBQRVJMQCAtY3dUIGB3aGljaCAkZmlsZWAKLSsgIHBlcmwgLWN3VCBgd2hpY2ggJGZpbGVgCi0gICBpZiB0ZXN0ICQ/ID0gMSA7IHRoZW4gZmFpbGVkPWBleHByICRmYWlsZWQgKyAxYDsgZmkKLSAgIHRlc3RlZD1gZXhwciAkdGVzdGVkICsgMWAKK0BAIC0zMSw3ICszMSw3IEBAIGRvbmUKKyAjIFRPRE86IHRlc3QgcHl0aG9uIDIgYW5kIDMgKHB5dGhvbjMgLW1jb21waWxlYWxsIGd0a2RvYy8qLnB5KQorIGZvciBmaWxlIGluIGd0a2RvYy1jaGVjayBndGtkb2MtZGVwc2NhbiBndGtkb2MtZml4eHJlZiBndGtkb2MtbWtkYiBndGtkb2MtbWtodG1sIGd0a2RvYy1ta21hbiBndGtkb2MtbWtwZGYgZ3RrZG9jLXJlYmFzZSBndGtkb2Mtc2NhbmdvYmo7IGRvCisgICAgIGZ1bGxmaWxlPWB3aGljaCAkZmlsZWAKKy0gICAgQFBZVEhPTkAgLW0gcHlfY29tcGlsZSAkZnVsbGZpbGUKKysgICAgcHl0aG9uMyAtbSBweV9jb21waWxlICRmdWxsZmlsZQorICAgICBpZiB0ZXN0ICQ/ICE9IDAgOyB0aGVuIGZhaWxlZD1gZXhwciAkZmFpbGVkICsgMWA7IGZpCisgICAgIHRlc3RlZD1gZXhwciAkdGVzdGVkICsgMWAKICBkb25lCi1AQCAtMzQsNyArMzQsNyBAQCBkb25lCi0gCi0gCi0gIyB0ZXN0IHB5dGhvbiBzY3JpcHRzCi0tQFBZVEhPTkAgLW0gcHlfY29tcGlsZSBgd2hpY2ggZ3RrZG9jLWRlcHNjYW5gCi0rcHl0aG9uIC1tIHB5X2NvbXBpbGUgYHdoaWNoIGd0a2RvYy1kZXBzY2FuYAotIGlmIHRlc3QgJD8gIT0gMCA7IHRoZW4gZmFpbGVkPWBleHByICRmYWlsZWQgKyAxYDsgZmkKLSB0ZXN0ZWQ9YGV4cHIgJHRlc3RlZCArIDFgCi0gCiAtLSAKLTIuOS4zCisyLjE0LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaAppbmRleCAwYzE4MGYyLi4yMWMyZGI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaApAQCAtMSwxNCArMSwyMyBAQAorRnJvbSA3OGJiZjE4NTkzNDE0N2E2OWNlYjRiNjE3ZDQyNGUxMmU3MDk5N2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBUdWUsIDI3IEp1biAyMDE3IDIxOjAwOjU4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBndGstZG9jOiBIYW5kbGUgZmxvYXRpbmcgZ3RrLWRvYyBkZXBlbmRlbmN5CisKIEFsbG93IHRoZSB0ZXN0cyB0byBiZSBleHBsaWNpdGx5IGRpc2FibGVkIHRvIGF2b2lkIGZsb2F0aW5nIGRlcGVuZG5lY3kKIGlzc3Vlcy4gVGhpcyBpcyBub3QgcmVhbGx5IGFuIGlzc3VlIHdpdGggUlNTIGJ1dCBpcyBvbiBwcmV2aW91cyByZWxlYXNlcy4KIAogUlAgMjAxNy82LzI3CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotSW5kZXg6IGd0ay1kb2MtMS4yNS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBndGstZG9jLTEuMjUub3JpZy9jb25maWd1cmUuYWMKLSsrKyBndGstZG9jLTEuMjUvY29uZmlndXJlLmFjCi1AQCAtMTYxLDYgKzE2MSwxMSBAQCBpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA2ODRlMmQxLi5lNWUzYWFiIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNDYsNiArMTQ2LDExIEBAIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgogIAlmaQogIGZpCiAgCkBAIC0yMCw3ICsyOSw3IEBACiAgZG5sIGlmIGdsaWIgaXMgYXZhaWxhYmxlIHdlIGNhbiBlbmFibGUgdGhlIHRlc3RzCiAgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPj0gMi42LjAgZ29iamVjdC0yLjAgPj0gMi42LjBdLAogIAlbCWdsaWJfcHJlZml4PSJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcmVmaXggZ2xpYi0yLjBgIgotQEAgLTE3MSw2ICsxNzYsMTEgQEAgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPgorQEAgLTE1Niw2ICsxNjEsMTEgQEAgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPj0gMi42LjAgZ29iamVjdC0yLjAgPj0gMi42LjBdLAogIAkJYnVpbGRfdGVzdHM9Im5vIgogIAldCiAgKQpAQCAtMzAsNSArMzksOCBAQAogK2ZpCiArCiAgQU1fQ09ORElUSU9OQUwoR1RLX0RPQ19VU0VfTElCVE9PTCwgdGVzdCAtbiAiJExJQlRPT0wiIC1hIHgkZ3RrX2RvY191c2VfbGlidG9vbCA9IHh5ZXMgKQotIGRubCB0aGlzIGVuYWJsZSB0aGUgcnVsZSBpbiB0ZXN0L01ha2VmaWxlLmFtCisgZG5sIHRoaXMgZW5hYmxlcyB0aGUgcnVsZSBpbiB0ZXN0L01ha2VmaWxlLmFtCiAgQU1fQ09ORElUSU9OQUwoQlVJTERfVEVTVFMsIHRlc3QgeCRidWlsZF90ZXN0cyA9IHh5ZXMpCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvbm8tY2xvYmJlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9uby1jbG9iYmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYTIyYjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvbm8tY2xvYmJlci5wYXRjaApAQCAtMCwwICsxLDI3IEBACitJbiBvdXQtb2YtdHJlZSBidWlsZHMgZ3RrLWRvYydzIHNldHVwLWJ1aWxkIHRhcmdldCBjb3BpZXMgYWxsIHRoZSBjb250ZW50IGZyb20gJHNyY2RpciB0byAkYnVpbGRkaXIuCisKK0hvd2V2ZXIsIGlmIHNvbWUgb2YgdGhpcyBjb250ZW50IGlzIHJlZ2VuZXJhdGVkIGF0IGNvbmZpZ3VyZSB0aW1lIHRoaXMgY2FuIGhhcHBlbjoKKworMSkgY29uZmlndXJlIHdyaXRlcyBuZXcgYnVpbGQvdmVyc2lvbi54bWwKKzIpIG1ha2UgY29tcGlsZSBjb3BpZXMgY29udGVudCwgaW5jbHVkaW5nIHRoZSB0YXJiYWxsJ3Mgc3JjL3ZlcnNpb24ueG1sCisgICB0byBidWlsZC92ZXJzaW9uLnhtbCwgYW5kIGdlbmVyYXRlcyBndGstZG9jLgorMykgbWFrZSBpbnN0YWxsIG5vdGljZXMgYnVpbGQvdmVyc2lvbi54bWwgaXMgb2xkZXIgdGhhbiBjb25maWd1cmUuc3RhdHVzLAorICAgc28gcmVnZW5lcmF0ZXMgZ3RrLWRvYy4KKworZ3RrLWRvYyBnZW5lcmF0aW9uIGlzIGEgc2xvdyBwcm9jZXNzIGF0IHRoZSBiZXN0IG9mIHRpbWVzLCBzbyBkb2luZyBpdCB0d2ljZSBpc24ndCBnb29kLgorCitTb2x2ZSB0aGlzIGJ5IGNoYW5naW5nIGNwIC0tZm9yY2UgdG8gY3AgLS1uby1jbG9iYmVyLCBzbyBzZXR1cC1idWlsZCBvbmx5IGNvcGllcworZmlsZXMgd2hpY2ggZG9uJ3QgYWxyZWFkeSBleGlzdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ1NzFdCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvZ3RrLWRvYy5tYWtlIGIvZ3RrLWRvYy5tYWtlCitpbmRleCBmODdlYWFiLi4yNDZmM2MwIDEwMDY0NAorLS0tIGEvZ3RrLWRvYy5tYWtlCisrKysgYi9ndGstZG9jLm1ha2UKK0BAIC0xMTMsMyArMTEzLDMgQEAgc2V0dXAtYnVpbGQuc3RhbXA6CisgCSAgICAgIHRlc3QgLWYgJChhYnNfc3JjZGlyKS8kJGZpbGUgJiYgXAorLQkgICAgICAgIGNwIC1wZiAkKGFic19zcmNkaXIpLyQkZmlsZSAkKGFic19idWlsZGRpcikvJCRmaWxlIHx8IHRydWU7IFwKKysJICAgICAgICBjcCAtcG4gJChhYnNfc3JjZGlyKS8kJGZpbGUgJChhYnNfYnVpbGRkaXIpLyQkZmlsZSB8fCB0cnVlOyBcCisgCSAgICBkb25lOyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvcGtnLWNvbmZpZy1uYXRpdmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvcGtnLWNvbmZpZy1uYXRpdmUucGF0Y2gKaW5kZXggYzc2ODg3MC4uYmZiYzc3NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL3BrZy1jb25maWctbmF0aXZlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaApAQCAtMSwyNCArMSwzMiBAQAotVXNlIG5hdGl2ZSBwa2ctY29uZmlnIHdoZW4gbG9va2luZyBmb3IgZ3RrLWRvYy4KK0Zyb20gNWYxNDU2MjFiNDc4MGNmZDZhNTYzMmZjYzk3YzQ1ZjU3MjkzOGVmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDUgU2VwIDIwMTYgMjI6MjU6NDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIFVzZSBuYXRpdmUgcGtnLWNvbmZpZyB3aGVuIGxvb2tpbmcgZm9yIGd0ay1kb2MuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAotZGlmZiAtLWdpdCBhL2d0ay1kb2MubTQgYi9ndGstZG9jLm00Ci1pbmRleCAzNjc1NTQzLi45NDg4MWFlIDEwMDY0NAotLS0tIGEvZ3RrLWRvYy5tNAotKysrIGIvZ3RrLWRvYy5tNAotQEAgLTEsNiArMSw2IEBACi0gZG5sIC0qLSBtb2RlOiBhdXRvY29uZiAtKi0KKy0tLQorIGd0ay1kb2MubTQgfCA3ICsrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKK0luZGV4OiBndGstZG9jLTEuMjcvZ3RrLWRvYy5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGd0ay1kb2MtMS4yNy5vcmlnL2d0ay1kb2MubTQKKysrKyBndGstZG9jLTEuMjcvZ3RrLWRvYy5tNAorQEAgLTI1LDcgKzI1LDcgQEAKKyAjIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyAjIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIAogLSMgc2VyaWFsIDIKICsjIHNlcmlhbCAyLjEKLQorIAogIGRubCBVc2FnZToKICBkbmwgICBHVEtfRE9DX0NIRUNLKFttaW5pbXVtLWd0ay1kb2MtdmVyc2lvbl0pCi1AQCAtMTAsMTEgKzEwLDE2IEBAIEFDX0RFRlVOKFtHVEtfRE9DX0NIRUNLXSwKK0BAIC0zNSwxMSArMzUsMTYgQEAgQUNfREVGVU4oW0dUS19ET0NfQ0hFQ0tdLAogICAgQUNfQkVGT1JFKFtBQ19QUk9HX0xJQlRPT0xdLFskMF0pZG5sIHNldHVwIGxpYnRvb2wgZmlyc3QKICAgIEFDX0JFRk9SRShbQU1fUFJPR19MSUJUT09MXSxbJDBdKWRubCBzZXR1cCBsaWJ0b29sIGZpcnN0Ci0KKyAKICsgIGd0a2RvY19wa2djb25maWdfc2F2ZT0kUEtHX0NPTkZJRwogKyAgUEtHX0NPTkZJRz1wa2ctY29uZmlnLW5hdGl2ZQogKwpAQCAtMjYsNyArMzQsNyBAQAogICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ3RrLWRvY10pCiAgICBQS0dfQ0hFQ0tfRVhJU1RTKFskZ3RrX2RvY19yZXF1aXJlc10sW2hhdmVfZ3RrX2RvYz15ZXNdLFtoYXZlX2d0a19kb2M9bm9dKQogICAgQUNfTVNHX1JFU1VMVCgkaGF2ZV9ndGtfZG9jKQotCisgCiArICBQS0dfQ09ORklHPSRndGtkb2NfcGtnY29uZmlnX3NhdmUKICsKICAgIGlmIHRlc3QgIiRoYXZlX2d0a19kb2MiID0gIm5vIjsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZWI5OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiRG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZm9yIGdsaWItYmFzZWQgc29mdHdhcmUiCi1ERVNDUklQVElPTiA9ICJHdGstZG9jIGlzIGEgc2V0IG9mIHNjcmlwdHMgdGhhdCBleHRyYWN0IHNwZWNpYWxseSBmb3JtYXR0ZWQgY29tbWVudHMgXAotICAgICAgICAgICAgICAgZnJvbSBnbGliLWJhc2VkIHNvZnR3YXJlIGFuZCBwcm9kdWNlIGEgc2V0IG9mIGh0bWwgZG9jdW1lbnRhdGlvbiBmaWxlcyBmcm9tIHRoZW0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmd0ay5vcmcvZ3RrLWRvYy8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLWluaGVyaXQgZ25vbWViYXNlCi0KLSMgQ29uZmlndXJlIHRoZSBzY3JpcHRzIGNvcnJlY3RseSAoYW5kIGJ1aWxkIHRoZWlyIGRlcGVuZGVuY2llcykgb25seSBpZiB0aGV5IGFyZSBhY3R1YWxseQotIyBnb2luZyB0byBiZSB1c2VkOyBvdGhlcml3c2Ugd2UgbmVlZCBvbmx5IHRoZSBtNC9tYWtlZmlsZSBpbmNsdWRlcyBmcm9tIHRoZSBndGstZG9jIHRhcmJhbGwuCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJhcGktZG9jdW1lbnRhdGlvbiIsICJ3b3JraW5nLXNjcmlwdHMiLCAiIiwgZCl9IgotCi0jIFRoaXMgd2lsbCBjYXVzZSB0YXJnZXQgZ3RrLWRvYyB0byBoYXJkY29kZSBwYXRocyBvZiBuYXRpdmUgZGVwZW5kZW5jaWVzCi0jIGludG8gaXRzIHNjcmlwdHMuIFRoaXMgbWVhbnMgdGhhdCB0YXJnZXQgZ3RrLWRvYyBwYWNrYWdlIGlzIGJyb2tlbjsKLSMgaG9wZWZ1bGx5IG5vIG9uZSBtaW5kcyBiZWNhdXNlIGl0cyBzY3JpcHRzIGFyZSBub3QgdXNlZCBmb3IgYW55dGhpbmcgZHVyaW5nIGJ1aWxkCi0jIGFuZCBzaG91bGRuJ3QgYmUgdXNlZCBvbiB0YXJnZXRzLgotUEFDS0FHRUNPTkZJR1t3b3JraW5nLXNjcmlwdHNdID0gIi0td2l0aC1oaWdobGlnaHQ9c291cmNlLWhpZ2hsaWdodCwtLXdpdGgtaGlnaGxpZ2h0PW5vLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBzb3VyY2UtaGlnaGxpZ2h0LW5hdGl2ZSBwZXJsLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLC0tZGlzYWJsZS10ZXN0cyxnbGliLTIuMCIKLQotIyBXZSBjYW5ub3QgdXNlIGhvc3QgcGVybCwgYmVjYXVzZSBpdCBtYXkgYmUgdG9vIG9sZCBmb3IgZ3RrLWRvYwotRVhUUkFOQVRJVkVQQVRIICs9ICJwZXJsLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYtcGVybC1pcy1ub3QtZm91bmQtb3ItaXRzLXZlcnNpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMGRjNjU3MDk1MzExMmE0NjRhNDA5ZmI5OTI1OGNjYmMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxZWE0NmVkNDAwZTY1MDFmOTc1YWNhYWZlYTMxNDc5Y2VhOGYzMmY5MTFkY2E0ZGZmMDM2ZjU5ZTY0NjRmZDQyIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgRG8gbm90IGNoZWNrIGZvciBYTUwgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBiZWNhdXNlIHRoYXQKLSMgaW5mb3JtYXRpb24gaXMgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZC4gUmVjaXBlCi0jIGRlcGVuZGVuY2llcyBtYWtlIHN1cmUgd2UgaGF2ZSBhbGwgdGhlIHJpZ2h0IGJpdHMuCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAgICAgc2VkIC1pIC1lICdzLF5KSF9DSEVDS19YTUxfQ0FUQUxPRy4qLCwnICR7U30vY29uZmlndXJlLmFjCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NnbWwiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKLUZJTEVTXyR7UE59LWRvYyA9ICIiCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBndGtkb2NfbWFrZWZpbGVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWd0a2RvY19tYWtlZmlsZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgewotICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCi0gICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5Ci0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKLSAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9ndGstZG9jL2RhdGEvZ3RrLWRvYyptYWtlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTUyODExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNy5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIkRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZvciBnbGliLWJhc2VkIHNvZnR3YXJlIgorREVTQ1JJUFRJT04gPSAiR3RrLWRvYyBpcyBhIHNldCBvZiBzY3JpcHRzIHRoYXQgZXh0cmFjdCBzcGVjaWFsbHkgZm9ybWF0dGVkIGNvbW1lbnRzIFwKKyAgICAgICAgICAgICAgIGZyb20gZ2xpYi1iYXNlZCBzb2Z0d2FyZSBhbmQgcHJvZHVjZSBhIHNldCBvZiBodG1sIGRvY3VtZW50YXRpb24gZmlsZXMgZnJvbSB0aGVtIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ndGsub3JnL2d0ay1kb2MvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitpbmhlcml0IGdub21lYmFzZQorCisjIENvbmZpZ3VyZSB0aGUgc2NyaXB0cyBjb3JyZWN0bHkgKGFuZCBidWlsZCB0aGVpciBkZXBlbmRlbmNpZXMpIG9ubHkgaWYgdGhleSBhcmUgYWN0dWFsbHkKKyMgZ29pbmcgdG8gYmUgdXNlZDsgb3RoZXJpd3NlIHdlIG5lZWQgb25seSB0aGUgbTQvbWFrZWZpbGUgaW5jbHVkZXMgZnJvbSB0aGUgZ3RrLWRvYyB0YXJiYWxsLgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiYXBpLWRvY3VtZW50YXRpb24iLCAid29ya2luZy1zY3JpcHRzIiwgIiIsIGQpfSIKKworIyBUaGlzIHdpbGwgY2F1c2UgdGFyZ2V0IGd0ay1kb2MgdG8gaGFyZGNvZGUgcGF0aHMgb2YgbmF0aXZlIGRlcGVuZGVuY2llcworIyBpbnRvIGl0cyBzY3JpcHRzLiBUaGlzIG1lYW5zIHRoYXQgdGFyZ2V0IGd0ay1kb2MgcGFja2FnZSBpcyBicm9rZW47CisjIGhvcGVmdWxseSBubyBvbmUgbWluZHMgYmVjYXVzZSBpdHMgc2NyaXB0cyBhcmUgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZAorIyBhbmQgc2hvdWxkbid0IGJlIHVzZWQgb24gdGFyZ2V0cy4KK1BBQ0tBR0VDT05GSUdbd29ya2luZy1zY3JpcHRzXSA9ICItLXdpdGgtaGlnaGxpZ2h0PXNvdXJjZS1oaWdobGlnaHQsLS13aXRoLWhpZ2hsaWdodD1ubyxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgc291cmNlLWhpZ2hsaWdodC1uYXRpdmUgcHl0aG9uMy1zaXgiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMsZ2xpYi0yLjAiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImIyOTk0OWUwOTY0NzYyZTQ3NGI3MDZjZTIyMTcxNjAyIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZTI2YmQzZjcwODBjNzQ5YjFjYjY2YzQ2YzZiZjgyMzllMmYzMjBhOTQ5OTY0ZmI5YzZkNTZlMWIwYzZkOWE2ZiIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm8tY2xvYmJlci5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLnBhdGNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgRG8gbm90IGNoZWNrIGZvciBYTUwgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBiZWNhdXNlIHRoYXQKKyMgaW5mb3JtYXRpb24gaXMgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZC4gUmVjaXBlCisjIGRlcGVuZGVuY2llcyBtYWtlIHN1cmUgd2UgaGF2ZSBhbGwgdGhlIHJpZ2h0IGJpdHMuCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAgICAgc2VkIC1pIC1lICdzLF5KSF9DSEVDS19YTUxfQ0FUQUxPRy4qLCwnICR7U30vY29uZmlndXJlLmFjCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NnbWwiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKK0ZJTEVTXyR7UE59LWRvYyA9ICIiCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBndGtkb2NfbWFrZWZpbGVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK2d0a2RvY19tYWtlZmlsZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgeworICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCisgICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5CisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKKyAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9ndGstZG9jL2RhdGEvZ3RrLWRvYyptYWtlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2hpY29sb3ItaWNvbi10aGVtZS9oaWNvbG9yLWljb24tdGhlbWVfMC4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzA0NjMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJEZWZhdWx0IGljb24gdGhlbWUgdGhhdCBhbGwgaWNvbiB0aGVtZXMgYXV0b21hdGljYWxseSBpbmhlcml0IGZyb20iCi1IT01FUEFHRSA9ICJodHRwOi8vaWNvbi10aGVtZS5mcmVlZGVza3RvcC5vcmcvd2lraS9IaWNvbG9yVGhlbWUiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjA4YTQ0NjgwOTkxM2ZjOWIzYzcxOGYwZWFlYTA0MjYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ljb24tdGhlbWUuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiNmFhMmIzOTkzYTg4M2Q4NTAxN2M3Y2MwY2ZjMGZiNzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWNjNDVhYzMzMThjMzEyMTJlYTJkOGNiOTllNjQwMjA3MzIzOTNlZTc2MzBmYTZjMTgxMGFmNWY5ODcwMzNjYyIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9oaWNvbG9yLWljb24tdGhlbWUvaGljb2xvci1pY29uLXRoZW1lXzAuMTcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA2NGIxOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE3LmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiRGVmYXVsdCBpY29uIHRoZW1lIHRoYXQgYWxsIGljb24gdGhlbWVzIGF1dG9tYXRpY2FsbHkgaW5oZXJpdCBmcm9tIgorSE9NRVBBR0UgPSAiaHR0cDovL2ljb24tdGhlbWUuZnJlZWRlc2t0b3Aub3JnL3dpa2kvSGljb2xvclRoZW1lIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnLyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYwOGE0NDY4MDk5MTNmYzliM2M3MThmMGVhZWEwNDI2IgorCitTUkNfVVJJID0gImh0dHA6Ly9pY29uLXRoZW1lLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjg0ZWVjOGQ2ZjgxMDI0MGEwNjljNzMxZjE4NzBiNDc0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMxNzQ4NDM1MjI3MWQxOGNiYmNmYWMzODY4ZWFiNzk4ZDY3ZmZmMWI4NDAyZTc0MGJhYTZmZjQxZDU4OGE5ZDgiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjNWQzODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJKU09OLUdMaWIgaW1wbGVtZW50cyBhIGZ1bGwgSlNPTiBwYXJzZXIgdXNpbmcgR0xpYiBhbmQgR09iamVjdCIKLURFU0NSSVBUSU9OID0gIlVzZSBKU09OLUdMaWIgaXQgaXMgcG9zc2libGUgdG8gcGFyc2UgYW5kIGdlbmVyYXRlIHZhbGlkIEpTT05cCi0gZGF0YSBzdHJ1Y3R1cmVzLCB1c2luZyBhIERPTS1saWtlIEFQSS4gSlNPTi1HTGliIGFsc28gb2ZmZXJzIEdPYmplY3QgXAotaW50ZWdyYXRpb24sIHByb3ZpZGluZyB0aGUgYWJpbGl0eSB0byBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIEdPYmplY3QgXAotaW5zdGFuY2VzIHRvIGFuZCBmcm9tIEpTT04gZGF0YSB0eXBlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvSnNvbkdsaWIiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZmYzMWU3ZDA1OTRkZjQ0MzE4ZTEyZmFjZGEzZDA4NmUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmZDU1YTkwMzdkMzllN2ExMGYwZGI2NDMwOWY1ZjAyNjVmYTMyZWM5NjJiZjg1MDY2MDg3YjgzYTI4MDdmNDBhIgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IGxpYl9wYWNrYWdlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIG1hbnBhZ2VzCi0KLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbiAtLXdpdGgteG1sLWNhdGFsb2c9JHtTVEFHSU5HX0VUQ0RJUl9OQVRJVkV9L3htbC9jYXRhbG9nLnhtbCwgLS1kaXNhYmxlLW1hbiwgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS40LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlmZTNjYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvanNvbi1nbGliL2pzb24tZ2xpYl8xLjQuMi5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gIkpTT04tR0xpYiBpbXBsZW1lbnRzIGEgZnVsbCBKU09OIHBhcnNlciB1c2luZyBHTGliIGFuZCBHT2JqZWN0IgorREVTQ1JJUFRJT04gPSAiVXNlIEpTT04tR0xpYiBpdCBpcyBwb3NzaWJsZSB0byBwYXJzZSBhbmQgZ2VuZXJhdGUgdmFsaWQgSlNPTlwKKyBkYXRhIHN0cnVjdHVyZXMsIHVzaW5nIGEgRE9NLWxpa2UgQVBJLiBKU09OLUdMaWIgYWxzbyBvZmZlcnMgR09iamVjdCBcCitpbnRlZ3JhdGlvbiwgcHJvdmlkaW5nIHRoZSBhYmlsaXR5IHRvIHNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgR09iamVjdCBcCitpbnN0YW5jZXMgdG8gYW5kIGZyb20gSlNPTiBkYXRhIHR5cGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9Kc29uR2xpYiIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitERVBFTkRTID0gImdsaWItMi4wIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzNTEwN2UyM2E3YmJiYzcwZjMxYzM0ZjdiOWFkZjFjMyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjJkNzcwOWE0NDc0OWM3MzE4NTk5YTY4MjkzMjJlMDgxOTE1YmRjNzNmNWJlNTA0NTg4MmVkMTIwYmI2ODZkYzgiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBsaWJfcGFja2FnZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBnZXR0ZXh0CisKKyMgVGhpcyBidWlsZHMgYm90aCBBUEkgZG9jcyAodmlhIGd0ay1kb2MpIGFuZCBtYW5wYWdlcworR1RLRE9DX0VOQUJMRV9GTEFHID0gIi1EZG9jcz10cnVlIgorR1RLRE9DX0RJU0FCTEVfRkxBRyA9ICItRGRvY3M9ZmFsc2UiCisKK0dJX0VOQUJMRV9GTEFHID0gIi1EaW50cm9zcGVjdGlvbj10cnVlIgorR0lfRElTQUJMRV9GTEFHID0gIi1EaW50cm9zcGVjdGlvbj1mYWxzZSIKKworRVhUUkFfT0VNRVNPTl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygnR1RLRE9DX0VOQUJMRUQnLCAnVHJ1ZScsICcke0dUS0RPQ19FTkFCTEVfRkxBR30nLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtHVEtET0NfRElTQUJMRV9GTEFHfScsIGQpfSAiCitFWFRSQV9PRU1FU09OX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICcke0dJX0VOQUJMRV9GTEFHfScsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke0dJX0RJU0FCTEVfRkxBR30nLCBkKX0gIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIEZJWE1FOiB0aGVzZSBuZWVkIHRvIGJlIHByb3ZpZGVkIHZpYSBwdGVzdAorICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMgJHtEfSR7bGliZXhlY2Rpcn0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCisjIEN1cnJlbnRseSBpdCdzIG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIGdldHRleHQgaW4gTWVzb24sIHNvIHdlIG5lZWQgdG8gZm9yY2UKKyMgdGhpcyBiYWNrIG9uLgorVVNFX05MU19jbGFzcy1uYXRpdmUgPSAieWVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJndWRldi9saWJndWRldl8yMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmd1ZGV2L2xpYmd1ZGV2XzIzMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ2NzkyNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmd1ZGV2L2xpYmd1ZGV2XzIzMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiR09iamVjdCB3cmFwcGVyIGZvciBsaWJ1ZGV2IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJndWRldiIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjkxNmMxMGM1MWVjNjExMzFlMjQ0YzM5MzZiYmIyZTBjIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiM2IxZWY5OWQ0YTg5ODRjMzUwNDQxMDNkOGRkZmMzY2M1MmM4MDAzNWMzNmFiYWIyYmNjNWUzNTMyZTA2M2Y5NiIKLQotREVQRU5EUyA9ICJnbGliLTIuMCB1ZGV2IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXVtb2NrZGV2IgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gInN5c3RlbWQgKDw9IDIyMCkiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYmd1ZGV2LyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPihcZCspKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJndWRldi9saWJndWRldl8yMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlmZTk2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMyLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiR09iamVjdCB3cmFwcGVyIGZvciBsaWJ1ZGV2IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJndWRldiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImVlNGNiMmI5YzU3M2NkZjM1NGY2ZWQ3NDRmMDFiMTExZDRiNWJlZDM1MDNmZmE5NTZjZWZmZjUwNDg5Yzc4NjAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2OTE0ODUyMzc3MTU2NjY1NTY3YWJmOGEzOGQ4OTIzNiIKKworREVQRU5EUyA9ICJnbGliLTIuMCB1ZGV2IgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXVtb2NrZGV2IgorCitSQ09ORkxJQ1RTXyR7UE59ID0gInN5c3RlbWQgKDw9IDIyMCkiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYmd1ZGV2LyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPihcZCspKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWEwZGMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHJlbmRlcmluZyBTVkcgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9saWJyc3ZnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yc3ZnLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0yNDttZDU9MjBiNDExM2M0OTA5YmJmMGQ2N2UwMDY3NzgzMDJiYzYiCi0KLVNFQ1RJT04gPSAieDExL3V0aWxzIgotREVQRU5EUyA9ICJjYWlybyBnZGstcGl4YnVmIGdsaWItMi4wIGxpYmNyb2NvIGxpYnhtbDIgcGFuZ28iCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBndGstZG9jIHBpeGJ1ZmNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiZmlsZTovL2d0ay1vcHRpb24ucGF0Y2giCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImVhYTVjOGE4YmJlMjYwMGFiNTE5NGMwZDNiMWI2MjFiIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYmZjOGM0ODhjODljMWU3MjEyYzQ3OGJlYjk1YzQxYjQ0NzAxNjM2MTI1YTNlNmRhYjQxMTg3ZjE0ODViNTY0YyIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcGF0aF9HREtfUElYQlVGX1FVRVJZTE9BREVSUz0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIgotCi0jIFRoZSBvbGRlciBsZCAoMi4yMikgb24gdGhlIGhvc3QgKENlbnRvcyA2LjUpIGRvZXNuJ3QgaGF2ZSB0aGUKLSMgLUJzeW1ib2xpYy1mdW5jdGlvbnMgb3B0aW9uLCB3ZSBjYW4gZGlzYWJsZSBpdCBmb3IgbmF0aXZlLgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZW5hYmxlLUJzeW1ib2xpYz1hdXRvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ2RrcGl4YnVmIgotIyBUaGUgZ2RrLXBpeGJ1ZiBsb2FkZXIKLVBBQ0tBR0VDT05GSUdbZ2RrcGl4YnVmXSA9ICItLWVuYWJsZS1waXhidWYtbG9hZGVyLC0tZGlzYWJsZS1waXhidWYtbG9hZGVyLGdkay1waXhidWYtbmF0aXZlIgotIyBHVEsrIHRlc3QgYXBwbGljYXRpb24gKHJzdmctdmlldykKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrMywtLXdpdGhvdXQtZ3RrMyxndGsrMyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBMb2FkYWJsZSBtb2R1bGVzIGRvbid0IG5lZWQgLmEgb3IgLmxhIG9uIExpbnV4Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qL2xvYWRlcnMvKi5hICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyoubGEKLX0KLQotUEFDS0FHRVMgPSsgImxpYnJzdmctZ3RrIHJzdmciCi1GSUxFU19yc3ZnID0gIiR7YmluZGlyfS9yc3ZnKiBcCi0JICAgICAgJHtkYXRhZGlyfS9waXhtYXBzL3N2Zy12aWV3ZXIuc3ZnIFwKLQkgICAgICAke2RhdGFkaXJ9L3RoZW1lcyIKLUZJTEVTX2xpYnJzdmctZ3RrID0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qLyovKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3RodW1ibmFpbGVycy9saWJyc3ZnLnRodW1ibmFpbGVyIgotCi1QSVhCVUZfUEFDS0FHRVMgPSAibGlicnN2Zy1ndGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzc2ZDUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4yMC5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIHJlbmRlcmluZyBTVkcgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9saWJyc3ZnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitSRUNJUEVfTk9fVVBEQVRFX1JFQVNPTiA9ICJWZXJzaW9ucyBmcm9tIDIuNDEuMCByZXF1aXJlcyBSdXN0IGNvbXBpbGVyIHRvIGJ1aWxkIGl0IgorCitMSUNFTlNFID0gIkxHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yc3ZnLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0yNDttZDU9MjBiNDExM2M0OTA5YmJmMGQ2N2UwMDY3NzgzMDJiYzYiCisKK1NFQ1RJT04gPSAieDExL3V0aWxzIgorREVQRU5EUyA9ICJjYWlybyBnZGstcGl4YnVmIGdsaWItMi4wIGxpYmNyb2NvIGxpYnhtbDIgcGFuZ28iCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBwaXhidWZjYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ndGstb3B0aW9uLnBhdGNoIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0OTQ5ZDMxM2IwYzVkOTE2MWE1YzI1OTEwNGFmNTU2OCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImNmZjRkZDNjM2I3OGJmZTk5ZDhmY2ZhZDNiOGJhMWVlZTMyODlhMDgyM2MwZTExOGQ3ODEwNmJlNmI4NGM5MmIiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X3BhdGhfR0RLX1BJWEJVRl9RVUVSWUxPQURFUlM9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKKworIyBUaGUgb2xkZXIgbGQgKDIuMjIpIG9uIHRoZSBob3N0IChDZW50b3MgNi41KSBkb2Vzbid0IGhhdmUgdGhlCisjIC1Cc3ltYm9saWMtZnVuY3Rpb25zIG9wdGlvbiwgd2UgY2FuIGRpc2FibGUgaXQgZm9yIG5hdGl2ZS4KK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWVuYWJsZS1Cc3ltYm9saWM9YXV0byIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdka3BpeGJ1ZiIKKyMgVGhlIGdkay1waXhidWYgbG9hZGVyCitQQUNLQUdFQ09ORklHW2dka3BpeGJ1Zl0gPSAiLS1lbmFibGUtcGl4YnVmLWxvYWRlciwtLWRpc2FibGUtcGl4YnVmLWxvYWRlcixnZGstcGl4YnVmLW5hdGl2ZSIKKyMgR1RLKyB0ZXN0IGFwcGxpY2F0aW9uIChyc3ZnLXZpZXcpCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0azMsLS13aXRob3V0LWd0azMsZ3RrKzMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTG9hZGFibGUgbW9kdWxlcyBkb24ndCBuZWVkIC5hIG9yIC5sYSBvbiBMaW51eAorCXJtIC1mICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyouYSAke0R9JHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyovbG9hZGVycy8qLmxhCit9CisKK1BBQ0tBR0VTID0rICJsaWJyc3ZnLWd0ayByc3ZnIgorRklMRVNfcnN2ZyA9ICIke2JpbmRpcn0vcnN2ZyogXAorCSAgICAgICR7ZGF0YWRpcn0vcGl4bWFwcy9zdmctdmlld2VyLnN2ZyBcCisJICAgICAgJHtkYXRhZGlyfS90aGVtZXMiCitGSUxFU19saWJyc3ZnLWd0ayA9ICIke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi8qLyouc28gXAorICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvbGlicnN2Zy50aHVtYm5haWxlciIKK1JSRUNPTU1FTkRTX2xpYnJzdmctZ3RrID0gImdkay1waXhidWYtYmluIgorCitQSVhCVUZfUEFDS0FHRVMgPSAibGlicnN2Zy1ndGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZGRkYzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotcmVxdWlyZSBjYWlyby5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTczZTk5OWUwYzcyYjVhYzkwMTI0MjRmYTE1N2FkNzciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzL2NhaXJvLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jYWlyby1nZXRfYml0bWFwX3N1cmZhY2UtYnNjMTAzNjc4OS1DVkUtMjAxNy03NDc1LmRpZmYgXCAKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fpcm8tRml4LUNWRS0yMDE3LTk4MTQucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE0NmY1ZjRkMGI0NDM5ZmMzNzkyZmQzNDUyYjdiMTJhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlODc4Nzg2NThmMmM5OTUxYTE0ZmM2NDExNGQ0OTU4YzBlNjVhYzQ3NTMwYjhhYzMwNzhiMmNlNDFiNjZhMDkiCi0KLVBBQ0tBR0VTID0rICJjYWlyby1nb2JqZWN0IGNhaXJvLXNjcmlwdC1pbnRlcnByZXRlciBjYWlyby1wZXJmLXV0aWxzIgotCi1TVU1NQVJZXyR7UE59ID0gIlRoZSBDYWlybyAyRCB2ZWN0b3IgZ3JhcGhpY3MgbGlicmFyeSIKLURFU0NSSVBUSU9OXyR7UE59ID0gIkNhaXJvIGlzIGEgbXVsdGktcGxhdGZvcm0gbGlicmFyeSBwcm92aWRpbmcgYW50aS1hbGlhc2VkIFwKLXZlY3Rvci1iYXNlZCByZW5kZXJpbmcgZm9yIG11bHRpcGxlIHRhcmdldCBiYWNrZW5kcy4gUGF0aHMgY29uc2lzdCBcCi1vZiBsaW5lIHNlZ21lbnRzIGFuZCBjdWJpYyBzcGxpbmVzIGFuZCBjYW4gYmUgcmVuZGVyZWQgYXQgYW55IHdpZHRoIFwKLXdpdGggdmFyaW91cyBqb2luIGFuZCBjYXAgc3R5bGVzLiBBbGwgY29sb3JzIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBcCi1vcHRpb25hbCB0cmFuc2x1Y2VuY2UgKG9wYWNpdHkvYWxwaGEpIGFuZCBjb21iaW5lZCB1c2luZyB0aGUgXAotZXh0ZW5kZWQgUG9ydGVyL0R1ZmYgY29tcG9zaXRpbmcgYWxnZWJyYSBhcyBmb3VuZCBpbiB0aGUgWCBSZW5kZXIgXAotRXh0ZW5zaW9uLiIKLQotU1VNTUFSWV9jYWlyby1nb2JqZWN0ID0gIlRoZSBDYWlybyBsaWJyYXJ5IEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IgotREVTQ1JJUFRJT05fY2Fpcm8tZ29iamVjdCA9ICJBIEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IGZvciB0aGUgQ2Fpcm8gQVBJLiIKLQotU1VNTUFSWV9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIGxpYnJhcnkgc2NyaXB0IGludGVycHJldGVyIgotREVTQ1JJUFRJT05fY2Fpcm8tc2NyaXB0LWludGVycHJldGVyID0gIlRoZSBDYWlybyBzY3JpcHQgaW50ZXJwcmV0ZXIgaW1wbGVtZW50cyBcCi1DYWlyb1NjcmlwdC4gIENhaXJvU2NyaXB0IGlzIHVzZWQgYnkgdHJhY2luZyB1dGlsaXRpZXMgdG8gZW5hYmxlIHRoZSBhYmlsaXR5IFwKLXRvIHJlcGxheSByZW5kZXJpbmcuIgotCi1ERVNDUklQVElPTl9jYWlyby1wZXJmLXV0aWxzID0gIlRoZSBDYWlybyBsaWJyYXJ5IHBlcmZvcm1hbmNlIHV0aWxpdGllcyIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jYWlyby8qLnNvIgotRklMRVNfJHtQTn0tZ29iamVjdCA9ICIke2xpYmRpcn0vbGliY2Fpcm8tZ29iamVjdC5zby4qIgotRklMRVNfJHtQTn0tc2NyaXB0LWludGVycHJldGVyID0gIiR7bGliZGlyfS9saWJjYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIuc28uKiIKLUZJTEVTXyR7UE59LXBlcmYtdXRpbHMgPSAiJHtiaW5kaXJ9L2NhaXJvLXRyYWNlICR7bGliZGlyfS9jYWlyby8qLmxhICR7bGliZGlyfS9jYWlyby9saWJjYWlyby10cmFjZS5zby4qIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jcm0gLXJmICR7RH0ke2JpbmRpcn0vY2Fpcm8tc3BoaW54Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tZmRyKgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLXNwaGlueCoKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tZmRyKgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1zcGhpbngqCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc1Y2ExZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC4xMi5iYgpAQCAtMCwwICsxLDQ2IEBACityZXF1aXJlIGNhaXJvLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNzNlOTk5ZTBjNzJiNWFjOTAxMjQyNGZhMTU3YWQ3NyIKKworU1JDX1VSSSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcmVsZWFzZXMvY2Fpcm8tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NhaXJvLWdldF9iaXRtYXBfc3VyZmFjZS1ic2MxMDM2Nzg5LUNWRS0yMDE3LTc0NzUuZGlmZiBcIAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jYWlyby1GaXgtQ1ZFLTIwMTctOTgxNC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWYwZGI5ZGJmY2EwOTY2YmU4YWNkNjgyZTYzNmQxNjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGM5MGYwMGM1MDBiMjI5OWMwYTMyM2RkOWJlZWFkMmEwMDM1Mzc1MmIyMDkyZWFkNTU4MTM5YmQ2N2Y3YmYxNiIKKworUEFDS0FHRVMgPSsgImNhaXJvLWdvYmplY3QgY2Fpcm8tc2NyaXB0LWludGVycHJldGVyIGNhaXJvLXBlcmYtdXRpbHMiCisKK1NVTU1BUllfJHtQTn0gPSAiVGhlIENhaXJvIDJEIHZlY3RvciBncmFwaGljcyBsaWJyYXJ5IgorREVTQ1JJUFRJT05fJHtQTn0gPSAiQ2Fpcm8gaXMgYSBtdWx0aS1wbGF0Zm9ybSBsaWJyYXJ5IHByb3ZpZGluZyBhbnRpLWFsaWFzZWQgXAordmVjdG9yLWJhc2VkIHJlbmRlcmluZyBmb3IgbXVsdGlwbGUgdGFyZ2V0IGJhY2tlbmRzLiBQYXRocyBjb25zaXN0IFwKK29mIGxpbmUgc2VnbWVudHMgYW5kIGN1YmljIHNwbGluZXMgYW5kIGNhbiBiZSByZW5kZXJlZCBhdCBhbnkgd2lkdGggXAord2l0aCB2YXJpb3VzIGpvaW4gYW5kIGNhcCBzdHlsZXMuIEFsbCBjb2xvcnMgbWF5IGJlIHNwZWNpZmllZCB3aXRoIFwKK29wdGlvbmFsIHRyYW5zbHVjZW5jZSAob3BhY2l0eS9hbHBoYSkgYW5kIGNvbWJpbmVkIHVzaW5nIHRoZSBcCitleHRlbmRlZCBQb3J0ZXIvRHVmZiBjb21wb3NpdGluZyBhbGdlYnJhIGFzIGZvdW5kIGluIHRoZSBYIFJlbmRlciBcCitFeHRlbnNpb24uIgorCitTVU1NQVJZX2NhaXJvLWdvYmplY3QgPSAiVGhlIENhaXJvIGxpYnJhcnkgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkiCitERVNDUklQVElPTl9jYWlyby1nb2JqZWN0ID0gIkEgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkgZm9yIHRoZSBDYWlybyBBUEkuIgorCitTVU1NQVJZX2NhaXJvLXNjcmlwdC1pbnRlcnByZXRlciA9ICJUaGUgQ2Fpcm8gbGlicmFyeSBzY3JpcHQgaW50ZXJwcmV0ZXIiCitERVNDUklQVElPTl9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIHNjcmlwdCBpbnRlcnByZXRlciBpbXBsZW1lbnRzIFwKK0NhaXJvU2NyaXB0LiAgQ2Fpcm9TY3JpcHQgaXMgdXNlZCBieSB0cmFjaW5nIHV0aWxpdGllcyB0byBlbmFibGUgdGhlIGFiaWxpdHkgXAordG8gcmVwbGF5IHJlbmRlcmluZy4iCisKK0RFU0NSSVBUSU9OX2NhaXJvLXBlcmYtdXRpbHMgPSAiVGhlIENhaXJvIGxpYnJhcnkgcGVyZm9ybWFuY2UgdXRpbGl0aWVzIgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY2Fpcm8uc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NhaXJvLyouc28iCitGSUxFU18ke1BOfS1nb2JqZWN0ID0gIiR7bGliZGlyfS9saWJjYWlyby1nb2JqZWN0LnNvLioiCitGSUxFU18ke1BOfS1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLXNjcmlwdC1pbnRlcnByZXRlci5zby4qIgorRklMRVNfJHtQTn0tcGVyZi11dGlscyA9ICIke2JpbmRpcn0vY2Fpcm8tdHJhY2UgJHtsaWJkaXJ9L2NhaXJvLyoubGEgJHtsaWJkaXJ9L2NhaXJvL2xpYmNhaXJvLXRyYWNlLnNvLioiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlybSAtcmYgJHtEfSR7YmluZGlyfS9jYWlyby1zcGhpbngKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby9jYWlyby1mZHIqCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tc3BoaW54KgorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1mZHIqCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vLmRlYnVnL2NhaXJvLXNwaGlueCoKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMC9pbnN0YWxsLWV4YW1wbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wL2luc3RhbGwtZXhhbXBsZXMucGF0Y2gKaW5kZXggM2I2YTcwZS4uY2U5YWIzYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wL2luc3RhbGwtZXhhbXBsZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wL2luc3RhbGwtZXhhbXBsZXMucGF0Y2gKQEAgLTMsMTEgKzMsMTEgQEAKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIAotZGlmZiAtLWdpdCBhL2V4YW1wbGVzL01ha2VmaWxlLmFtIGIvZXhhbXBsZXMvTWFrZWZpbGUuYW0KLWluZGV4IDRiOWI0NDkuLjIzMmNkMTkgMTAwNjQ0Ci0tLS0gYS9leGFtcGxlcy9NYWtlZmlsZS5hbQotKysrIGIvZXhhbXBsZXMvTWFrZWZpbGUuYW0KLUBAIC0zOCw2ICszOCw3IEBAIEFNX0NQUEZMQUdTID0gXAorSW5kZXg6IGNsdXR0ZXItMS4yNi4yL2V4YW1wbGVzL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY2x1dHRlci0xLjI2LjIub3JpZy9leGFtcGxlcy9NYWtlZmlsZS5hbQorKysrIGNsdXR0ZXItMS4yNi4yL2V4YW1wbGVzL01ha2VmaWxlLmFtCitAQCAtMzMsNyArMzMsOCBAQCBBTV9DUFBGTEFHUyA9IFwKICAJLUkkKHRvcF9zcmNkaXIpL2NsdXR0ZXIgXAogIAktSSQodG9wX2J1aWxkZGlyKS9jbHV0dGVyCiAgCkBAIC0xNiwzICsxNiw0IEBACiArZXhhbXBsZV9QUk9HUkFNUyA9ICQoYWxsX2V4YW1wbGVzKQogIAogIEVYVFJBX0RJU1QgPSByZWRoYW5kLnBuZworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYwppbmRleCAyNmFlOTFjLi40Yzg3Nzk4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYwpAQCAtMTUsNyArMTUsMyBAQAogRklMRVNfJHtQTn0gICAgICAgICAgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wL2xpYiouc28iCiBGSUxFU18ke1BOfS1kZXYgICAgICArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSIKIEZJTEVTXyR7UE59LWV4YW1wbGVzICA9ICIke2JpbmRpcn0vdmlkZW8tcGxheWVyICR7YmluZGlyfS92aWRlby1zaW5rIgotCi0jIE5lZWRzIHRvIGJlIGRpc2FibGUgZHVlIHRvIGEgZGVwZW5kZW5jeSBvbiBnc3RyZWFtZXItcGx1Z2lucyBpbnRyb3NwZWN0aW9uIGZpbGVzCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3RrLTEuMF8xLjguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgwNTBkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlIGNsdXR0ZXItZ3RrLTEuMC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjY2OTgyMDdlZTZlM2Q1YTFjMGZmYzBhMjM0NDRlMTJmIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZGEyN2Q0ODYzMjU0OTBhZDNmNjVkMmFiZjk0MTNhZWI4YjRhOGY3YjU1OWU0YjJmNzM1NjdhNTM0NGEyNmI5NCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWd0ay0xLjBfMS44LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMzAwYzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC40LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBjbHV0dGVyLWd0ay0xLjAuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiMzYzYWM5ODc4ZTIzMzdiZTg4N2I4ZWU5ZTFkYTAwZSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjUyMTQ5M2VjMDM4OTczYzc3ZWRjYjhiYzVlYWMyM2VlZDQxNjQ1MTE3ODk0YWFlZTczMDBiMjQ4N2NiNDJiMDYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2gKaW5kZXggYmY1MjYzNy4uNDBiZWJjMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LWV4cGxpY2l0LWVuYWJsaW5nLW9mLWN1bml0LXRlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaApAQCAtMTIsMTEgKzEyLDExIEBACiAgY29uZmlndXJlLmFjIHwgMTQgKysrKysrKysrKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZTMwNDhjNy4uOTE4ZDIxZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTM3LDYgKzEzNywxMiBAQCBBQ19BUkdfRU5BQkxFKGluc3RhbGwtdGVzdC1wcm9ncmFtcywKK0luZGV4OiBsaWJkcm0tMi40LjkxL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmRybS0yLjQuOTEub3JpZy9jb25maWd1cmUuYWMKKysrKyBsaWJkcm0tMi40LjkxL2NvbmZpZ3VyZS5hYworQEAgLTE2Myw2ICsxNjMsMTIgQEAgQUNfQVJHX0VOQUJMRShpbnN0YWxsLXRlc3QtcHJvZ3JhbXMsCiAgCQkgIFtJbnN0YWxsIHRlc3QgcHJvZ3JhbXMgKGRlZmF1bHQ6IG5vKV0pLAogIAkJICBbSU5TVEFMTF9URVNUUz0kZW5hYmxldmFsXSwgW0lOU1RBTExfVEVTVFM9bm9dKQogIApAQCAtMjksOCArMjksOCBAQAogIGRubCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBkbmwgY2hlY2sgY29tcGlsZXIgZmxhZ3MKICBBQ19ERUZVTihbTElCRFJNX0NDX1RSWV9GTEFHXSwgWwotQEAgLTM3Miw3ICszNzgsNyBAQCBpZiB0ZXN0ICJ4JFJBREVPTiIgPSB4eWVzOyB0aGVuCi0gCUFDX0RFRklORShIQVZFX1JBREVPTiwgMSwgW0hhdmUgcmFkZW9uIHN1cHBvcnRdKQorQEAgLTQxMSw3ICs0MTcsNyBAQCBlbHNlCisgCUFDX0RFRklORShIQVZFX1JBREVPTiwgMCkKICBmaQogIAogLWlmIHRlc3QgIngkQU1ER1BVIiAhPSB4bm87IHRoZW4KQEAgLTM4LDggKzM4LDggQEAKICAJIyBEZXRlY3QgY3VuaXQgbGlicmFyeQogIAlQS0dfQ0hFQ0tfTU9EVUxFUyhbQ1VOSVRdLCBbY3VuaXQgPj0gMi4xXSwgW2hhdmVfY3VuaXQ9eWVzXSwgW2hhdmVfY3VuaXQ9bm9dKQogIAkjIElmIHBrZy1jb25maWcgZG9lcyBub3QgZmluZCBjdW5pdCwgY2hlY2sgaXQgdXNpbmcgQUNfQ0hFQ0tfTElCLiAgV2UKLUBAIC0zOTksNyArNDA2LDExIEBAIGlmIHRlc3QgIngkQU1ER1BVIiA9IHh5ZXM7IHRoZW4KLSAJQUNfREVGSU5FKEhBVkVfQ1VOSVQsIFt0ZXN0ICJ4JGhhdmVfY3VuaXQiICE9ICJ4bm8iXSwgW0VuYWJsZSBDVU5JVCBIYXZlIGFtZGdwdSBzdXBwb3J0XSkKK0BAIC00MzYsNyArNDQyLDExIEBAIGlmIHRlc3QgIngkQU1ER1BVIiA9IHh5ZXM7IHRoZW4KKyAJQUNfREVGSU5FKEhBVkVfQU1ER1BVLCAxLCBbSGF2ZSBhbWRncHUgc3VwcG9ydF0pCiAgCiAgCWlmIHRlc3QgIngkaGF2ZV9jdW5pdCIgPSAieG5vIjsgdGhlbgogLQkJQUNfTVNHX1dBUk4oW0NvdWxkIG5vdCBmaW5kIGN1bml0IGxpYnJhcnkuIERpc2FibGluZyBhbWRncHUgdGVzdHNdKQpAQCAtNDksOCArNDksNSBAQAogKwkJCUFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBjdW5pdCBsaWJyYXJ5LiBEaXNhYmxpbmcgYW1kZ3B1IHRlc3RzXSkKICsJCWZpCiAgCWZpCi0gZmkKLSAKLS0tIAotMi4xLjQKLQorIGVsc2UKKyAJQUNfREVGSU5FKEhBVkVfQU1ER1BVLCAwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC44My5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuODMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1Y2I3NWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC44My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCi1zdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAotXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAotYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gIngxMS9iYXNlIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCi1QUk9WSURFUyA9ICJkcm0iCi1ERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMgbGlicGNpYWNjZXNzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnL2xpYmRybS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2luc3RhbGx0ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfT19DTE9FWEVDX3VuZGVjbGFyZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIzODAwOTUzZWQ3NTY0OTg4ODcyZTFlOGM2MWZkZTMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzYTUyNjY5ZGE2MGVhZDYyNTQ4YTM1YmM0MzBhYWZiNmMyZDhkZDIxZWM5ZGJhM2E5MGY5NmVmZjVmZTM2ZDYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBtYW5wYWdlcwotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1jYWlyby10ZXN0cyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdW5pdCBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9tYXAtZXhwZXJpbWVudGFsLWFwaSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWV0bmF2aXYtZXhwZXJpbWVudGFsLWFwaSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtdGVzdC1wcm9ncmFtcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12YWxncmluZCBcCi0gICAgICAgICAgICAgICAgIgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1BTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKLSAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAotICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCi0KLVJSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKLQotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU18ke1BOfS1yYWRlb24gPSAiJHtsaWJkaXJ9L2xpYmRybV9yYWRlb24uc28uKiIKLUZJTEVTXyR7UE59LW5vdXZlYXUgPSAiJHtsaWJkaXJ9L2xpYmRybV9ub3V2ZWF1LnNvLioiCi1GSUxFU18ke1BOfS1vbWFwID0gIiR7bGliZGlyfS9saWJkcm1fb21hcC5zby4qIgotRklMRVNfJHtQTn0taW50ZWwgPSAiJHtsaWJkaXJ9L2xpYmRybV9pbnRlbC5zby4qIgotRklMRVNfJHtQTn0tZXh5bm9zID0gIiR7bGliZGlyfS9saWJkcm1fZXh5bm9zLnNvLioiCi1GSUxFU18ke1BOfS1rbXMgPSAiJHtsaWJkaXJ9L2xpYmttcyouc28uKiIKLUZJTEVTXyR7UE59LWZyZWVkcmVubyA9ICIke2xpYmRpcn0vbGliZHJtX2ZyZWVkcmVuby5zby4qIgotRklMRVNfJHtQTn0tYW1kZ3B1ID0gIiR7bGliZGlyfS9saWJkcm1fYW1kZ3B1LnNvLioiCi1GSUxFU18ke1BOfS1ldG5hdml2ID0gIiR7bGliZGlyfS9saWJkcm1fZXRuYXZpdi5zby4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC45MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuOTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ5MDI4NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuOTEuYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgaW50ZXJmYWNlIHRvIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIHJ1bnRpbWUgbGlicmFyeSBmb3IgYWNjZXNzaW5nIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzLiAgRFJNIFwKK3N0YW5kcyBmb3IgXCJEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXJcIiwgd2hpY2ggaXMgdGhlIGtlcm5lbCBwb3J0aW9uIG9mIHRoZSBcCitcIkRpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmVcIiAoRFJJKS4gIERSSSBpcyByZXF1aXJlZCBmb3IgbWFueSBoYXJkd2FyZSBcCithY2NlbGVyYXRlZCBPcGVuR0wgZHJpdmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAieDExL2Jhc2UiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3hmODZkcm0uYztiZWdpbmxpbmU9OTtlbmRsaW5lPTMyO21kNT1jOGEzYjk2MWFmNzY2N2M1MzA4MTY3NjFlOTQ5ZGM3MSIKK1BST1ZJREVTID0gImRybSIKK0RFUEVORFMgPSAibGlicHRocmVhZC1zdHVicyBsaWJwY2lhY2Nlc3MiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvbGliZHJtLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vaW5zdGFsbHRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9PX0NMT0VYRUNfdW5kZWNsYXJlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjNkODdjZGE5MjcwMGI3MTBhMzdkOWI4ZWRhYTlmNTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjM0YTBlZDBjYzFlZmYwNmY0ODY3NGIxZGE4MWFhZmE2NjFhOWYwMDFlN2E0ZjQzZGRlODEwNzY4ODZkYzgwMCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG1hbnBhZ2VzCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWNhaXJvLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWN1bml0IFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtb21hcC1leHBlcmltZW50YWwtYXBpIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtZXRuYXZpdi1leHBlcmltZW50YWwtYXBpIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC10ZXN0LXByb2dyYW1zIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZhbGdyaW5kIFwKKyAgICAgICAgICAgICAgICAiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW5wYWdlcywgLS1kaXNhYmxlLW1hbnBhZ2VzLCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCisKK0FMTE9XX0VNUFRZXyR7UE59LWRyaXZlcnMgPSAiMSIKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyAke1BOfS1kcml2ZXJzICR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgXAorICAgICAgICAgICAgICR7UE59LWludGVsICR7UE59LWV4eW5vcyAke1BOfS1rbXMgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCisgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKKworUlJFQ09NTUVORFNfJHtQTn0tZHJpdmVycyA9ICIke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwICR7UE59LWludGVsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh5bm9zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgorCitGSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59LXJhZGVvbiA9ICIke2xpYmRpcn0vbGliZHJtX3JhZGVvbi5zby4qIgorRklMRVNfJHtQTn0tbm91dmVhdSA9ICIke2xpYmRpcn0vbGliZHJtX25vdXZlYXUuc28uKiIKK0ZJTEVTXyR7UE59LW9tYXAgPSAiJHtsaWJkaXJ9L2xpYmRybV9vbWFwLnNvLioiCitGSUxFU18ke1BOfS1pbnRlbCA9ICIke2xpYmRpcn0vbGliZHJtX2ludGVsLnNvLioiCitGSUxFU18ke1BOfS1leHlub3MgPSAiJHtsaWJkaXJ9L2xpYmRybV9leHlub3Muc28uKiIKK0ZJTEVTXyR7UE59LWttcyA9ICIke2xpYmRpcn0vbGlia21zKi5zby4qIgorRklMRVNfJHtQTn0tZnJlZWRyZW5vID0gIiR7bGliZGlyfS9saWJkcm1fZnJlZWRyZW5vLnNvLioiCitGSUxFU18ke1BOfS1hbWRncHUgPSAiJHtsaWJkaXJ9L2xpYmRybV9hbWRncHUuc28uKiIKK0ZJTEVTXyR7UE59LWV0bmF2aXYgPSAiJHtsaWJkaXJ9L2xpYmRybV9ldG5hdml2LnNvLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZy8wMDAxLXNyYy1mY3htbC5jLWF2b2lkLWRvdWJsZS1mcmVlLW9mLWZpbGVuYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1zcmMtZmN4bWwuYy1hdm9pZC1kb3VibGUtZnJlZS1vZi1maWxlbmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2E5ZmRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1zcmMtZmN4bWwuYy1hdm9pZC1kb3VibGUtZnJlZS1vZi1maWxlbmFtZS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGExNjNjODFhYzQzMGNkYzI5MmFkZDIwMGYzZTZhMGMwNDhiZTRkN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTEgT2N0IDIwMTcgMTc6NDA6MDkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL2ZjeG1sLmM6IGF2b2lkIGRvdWJsZSBmcmVlKCkgb2YgZmlsZW5hbWUKKworSXQncyBhbHNvIGZyZWVkIGFmdGVyIGJhaWwxLCBzbyBubyBuZWVkIHRvIGRvIGl0IGhlcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMyMjFdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9mY3htbC5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9mY3htbC5jIGIvc3JjL2ZjeG1sLmMKK2luZGV4IDE5Y2U5NmEuLmVkYjYwNTQgMTAwNjQ0CistLS0gYS9zcmMvZmN4bWwuYworKysrIGIvc3JjL2ZjeG1sLmMKK0BAIC0zMzk4LDcgKzMzOTgsNiBAQCBGY0NvbmZpZ1BhcnNlQW5kTG9hZCAoRmNDb25maWcJICAgICpjb25maWcsCisgCisgICAgIGZkID0gRmNPcGVuICgoY2hhciAqKSBmaWxlbmFtZSwgT19SRE9OTFkpOworICAgICBpZiAoZmQgPT0gLTEpIHsKKy0JRmNTdHJGcmVlIChmaWxlbmFtZSk7CisgCWdvdG8gYmFpbDE7CisgICAgIH0KKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA1OGIzNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgZm9udCBjb25maWd1cmF0aW9uIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJGb250Y29uZmlnIGlzIGEgZm9udCBjb25maWd1cmF0aW9uIGFuZCBjdXN0b21pemF0aW9uIGxpYnJhcnksIHdoaWNoIFwKLWRvZXMgbm90IGRlcGVuZCBvbiB0aGUgWCBXaW5kb3cgU3lzdGVtLiBJdCBpcyBkZXNpZ25lZCB0byBsb2NhdGUgXAotZm9udHMgd2l0aGluIHRoZSBzeXN0ZW0gYW5kIHNlbGVjdCB0aGVtIGFjY29yZGluZyB0byByZXF1aXJlbWVudHMgXAotc3BlY2lmaWVkIGJ5IGFwcGxpY2F0aW9ucy4gXAotRm9udGNvbmZpZyBpcyBub3QgYSByYXN0ZXJpemF0aW9uIGxpYnJhcnksIG5vciBkb2VzIGl0IGltcG9zZSBhIFwKLXBhcnRpY3VsYXIgcmFzdGVyaXphdGlvbiBsaWJyYXJ5IG9uIHRoZSBhcHBsaWNhdGlvbi4gVGhlIFgtc3BlY2lmaWMgXAotbGlicmFyeSAnWGZ0JyB1c2VzIGZvbnRjb25maWcgYWxvbmcgd2l0aCBmcmVldHlwZSB0byBzcGVjaWZ5IGFuZCBcCi1yYXN0ZXJpemUgZm9udHMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZvbnRjb25maWcub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1mb250Y29uZmlnIgotCi1MSUNFTlNFID0gIk1JVC1zdHlsZSAmIE1JVCAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2EwNDQ5ZTliYzUzNzA0MDJhOTRjMDAyMDRiZWNhM2QgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZjZnJlZXR5cGUuYztlbmRsaW5lPTQ1O21kNT01ZDk1MTNlMzE5NmExZmJmZGZhOTQwNTFjMDlkZmM4NCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZmNjYWNoZS5jO2JlZ2lubGluZT0xMzY3O2VuZGxpbmU9MTM4MjttZDU9MDMyNmNmZWI0YTczMzNkZDRkZDI1ZmJiYzRiOWYyN2YiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJleHBhdCBmcmVldHlwZSB6bGliIGdwZXJmLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZm9udGNvbmZpZy5vcmcvcmVsZWFzZS9mb250Y29uZmlnLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZXZlcnQtc3RhdGljLXBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZmIwMWZjM2Y0MTc2MGM0MWM2OWUzN2NjNzg0YjY1OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZDVhNmE2NjNmNGM0YTAwZTE5NjUyMzkwMjYyNjY1NGRkMGM0YTc4Njg2Y2JjNmU0NzJmMzM4ZTUwZmRmODA2IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIHdvcmsgYXJvdW5kIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTI4MAotICAgIHJtIC1mICR7U30vc3JjL2Zjb2Jqc2hhc2guaCAke1N9L3NyYy9mY29ianNoYXNoLmdwZXJmCi19Ci0KLVBBQ0tBR0VTID0rICJmb250Y29uZmlnLXV0aWxzIgotRklMRVNfJHtQTn0gPSsgIiR7ZGF0YWRpcn0veG1sLyoiCi1GSUxFU19mb250Y29uZmlnLXV0aWxzID0gIiR7YmluZGlyfS8qIgotCi0jIFdvcmsgYXJvdW5kIHBhc3QgYnJlYWthZ2UgaW4gZGViaWFuLmJiY2xhc3MKLVJQUk9WSURFU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCi1SUkVQTEFDRVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgotUkNPTkZMSUNUU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCi1ERUJJQU5fTk9BVVRPTkFNRV9mb250Y29uZmlnLXV0aWxzID0gIjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyByZWxhdGl2ZV9zeW1saW5rcwotCi1GT05UQ09ORklHX0NBQ0hFX0RJUiA/PSAiJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9mb250Y29uZmlnIgotCi0jIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgZGlyZWN0b3JpZXMKLSMgL3Vzci9zaGFyZS9mb250cyBpcyBhbHJlYWR5IGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHlvdSBjYW4gY2hhbmdlIGl0IHdpdGggLS13aXRoLWRlZmF1bHQtZm9udHMpCi1GT05UQ09ORklHX0ZPTlRfRElSUyA/PSAibm8iCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLWRvY3MgLS13aXRoLWRlZmF1bHQtZm9udHM9JHtkYXRhZGlyfS9mb250cyAtLXdpdGgtY2FjaGUtZGlyPSR7Rk9OVENPTkZJR19DQUNIRV9ESVJ9IC0td2l0aC1hZGQtZm9udHM9JHtGT05UQ09ORklHX0ZPTlRfRElSU30iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0Y2JjZTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjYuYmIKQEAgLTAsMCArMSw1OCBAQAorU1VNTUFSWSA9ICJHZW5lcmljIGZvbnQgY29uZmlndXJhdGlvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiRm9udGNvbmZpZyBpcyBhIGZvbnQgY29uZmlndXJhdGlvbiBhbmQgY3VzdG9taXphdGlvbiBsaWJyYXJ5LCB3aGljaCBcCitkb2VzIG5vdCBkZXBlbmQgb24gdGhlIFggV2luZG93IFN5c3RlbS4gSXQgaXMgZGVzaWduZWQgdG8gbG9jYXRlIFwKK2ZvbnRzIHdpdGhpbiB0aGUgc3lzdGVtIGFuZCBzZWxlY3QgdGhlbSBhY2NvcmRpbmcgdG8gcmVxdWlyZW1lbnRzIFwKK3NwZWNpZmllZCBieSBhcHBsaWNhdGlvbnMuIFwKK0ZvbnRjb25maWcgaXMgbm90IGEgcmFzdGVyaXphdGlvbiBsaWJyYXJ5LCBub3IgZG9lcyBpdCBpbXBvc2UgYSBcCitwYXJ0aWN1bGFyIHJhc3Rlcml6YXRpb24gbGlicmFyeSBvbiB0aGUgYXBwbGljYXRpb24uIFRoZSBYLXNwZWNpZmljIFwKK2xpYnJhcnkgJ1hmdCcgdXNlcyBmb250Y29uZmlnIGFsb25nIHdpdGggZnJlZXR5cGUgdG8gc3BlY2lmeSBhbmQgXAorcmFzdGVyaXplIGZvbnRzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mb250Y29uZmlnLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9Zm9udGNvbmZpZyIKKworTElDRU5TRSA9ICJNSVQtc3R5bGUgJiBNSVQgJiBQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdhMDQ0OWU5YmM1MzcwNDAyYTk0YzAwMjA0YmVjYTNkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9mY2ZyZWV0eXBlLmM7ZW5kbGluZT00NTttZDU9NWQ5NTEzZTMxOTZhMWZiZmRmYTk0MDUxYzA5ZGZjODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZjY2FjaGUuYztiZWdpbmxpbmU9MTM2NztlbmRsaW5lPTEzODI7bWQ1PTAzMjZjZmViNGE3MzMzZGQ0ZGQyNWZiYmM0YjlmMjdmIgorCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAiZXhwYXQgZnJlZXR5cGUgemxpYiBncGVyZi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ZvbnRjb25maWcub3JnL3JlbGVhc2UvZm9udGNvbmZpZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0LXN0YXRpYy1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtZmN4bWwuYy1hdm9pZC1kb3VibGUtZnJlZS1vZi1maWxlbmFtZS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjAwZTc0OGM2N2ZhZDExZTcwNTdhNzFlZDM4NWU4YmRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2NGI5ZWJmMDYwYzllNzcwMTE3MzNhYzlkYzBlMmNlOTI4NzBiNTc0Y2NhMjQwNWUxMWY1MzUzYTY4M2MzMzQiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImZvbnRjb25maWctKD9QPHB2ZXI+XGQrXC5cZCtcLig/ITlcZCspXGQrKSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyB3b3JrIGFyb3VuZCBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyODAKKyAgICBybSAtZiAke1N9L3NyYy9mY29ianNoYXNoLmggJHtTfS9zcmMvZmNvYmpzaGFzaC5ncGVyZgorfQorCitQQUNLQUdFUyA9KyAiZm9udGNvbmZpZy11dGlscyIKK0ZJTEVTXyR7UE59ID0rICIke2RhdGFkaXJ9L3htbC8qIgorRklMRVNfZm9udGNvbmZpZy11dGlscyA9ICIke2JpbmRpcn0vKiIKKworIyBXb3JrIGFyb3VuZCBwYXN0IGJyZWFrYWdlIGluIGRlYmlhbi5iYmNsYXNzCitSUFJPVklERVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgorUlJFUExBQ0VTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKK1JDT05GTElDVFNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgorREVCSUFOX05PQVVUT05BTUVfZm9udGNvbmZpZy11dGlscyA9ICIxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcmVsYXRpdmVfc3ltbGlua3MKKworRk9OVENPTkZJR19DQUNIRV9ESVIgPz0gIiR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvZm9udGNvbmZpZyIKKworIyBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzCisjIC91c3Ivc2hhcmUvZm9udHMgaXMgYWxyZWFkeSBpbmNsdWRlZCBieSBkZWZhdWx0ICh5b3UgY2FuIGNoYW5nZSBpdCB3aXRoIC0td2l0aC1kZWZhdWx0LWZvbnRzKQorRk9OVENPTkZJR19GT05UX0RJUlMgPz0gIm5vIgorCitFWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1kb2NzIC0td2l0aC1kZWZhdWx0LWZvbnRzPSR7ZGF0YWRpcn0vZm9udHMgLS13aXRoLWNhY2hlLWRpcj0ke0ZPTlRDT05GSUdfQ0FDSEVfRElSfSAtLXdpdGgtYWRkLWZvbnRzPSR7Rk9OVENPTkZJR19GT05UX0RJUlN9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlODhlODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkZyZWV0eXBlIGZvbnQgcmVuZGVyaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJGcmVlVHlwZSBpcyBhIHNvZnR3YXJlIGZvbnQgZW5naW5lIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgc21hbGwsIGVmZmljaWVudCwgXAotaGlnaGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBvcnRhYmxlIHdoaWxlIGNhcGFibGUgb2YgcHJvZHVjaW5nIGhpZ2gtcXVhbGl0eSBvdXRwdXQgKGdseXBoIFwKLWltYWdlcykuIEl0IGNhbiBiZSB1c2VkIGluIGdyYXBoaWNzIGxpYnJhcmllcywgZGlzcGxheSBzZXJ2ZXJzLCBmb250IGNvbnZlcnNpb24gdG9vbHMsIHRleHQgXAotaW1hZ2UgZ2VuZXJhdGlvbiB0b29scywgYW5kIG1hbnkgb3RoZXIgcHJvZHVjdHMgYXMgd2VsbC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1mcmVldHlwZSIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJGcmVlVHlwZSB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRS5UWFQ7bWQ1PTRhZjYyMjE1MDZmMjAyNzc0ZWY3NGY2NDkzMjg3OGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvRlRMLlRYVDttZDU9MTNiMjU0MTMyNzRjOWIzYjA5YjYzZTQwMjgyMTZmZjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9HUEx2Mi5UWFQ7bWQ1PThlZjM4MDQ3NmY2NDJjMjBlYmY0MGZlY2IwYWRkMmVjIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mcmVldHlwZS9mcmVldHlwZS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1yaWdodC1saWJ0b29sLnBhdGNoIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjQxM2FjM2VhZjUwOGFkYTAxOWM2Mzk1OWVhODFhOTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTNjNjAzZWQ4NGMzYzI0OTVmOWM5MzMxZmU2YmJhM2JiMGVlNjVlMDZlYzMzMWUwYTBmYjUyMTU4MjkxYjQwYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIKLQotIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCi1BVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKLUNPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgotCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgotIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAotUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKLVBBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgotCi1FWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKLQotVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCi19Ci0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vZnJlZXR5cGUtY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMDU5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOS5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkZyZWV0eXBlIGZvbnQgcmVuZGVyaW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJGcmVlVHlwZSBpcyBhIHNvZnR3YXJlIGZvbnQgZW5naW5lIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgc21hbGwsIGVmZmljaWVudCwgXAoraGlnaGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBvcnRhYmxlIHdoaWxlIGNhcGFibGUgb2YgcHJvZHVjaW5nIGhpZ2gtcXVhbGl0eSBvdXRwdXQgKGdseXBoIFwKK2ltYWdlcykuIEl0IGNhbiBiZSB1c2VkIGluIGdyYXBoaWNzIGxpYnJhcmllcywgZGlzcGxheSBzZXJ2ZXJzLCBmb250IGNvbnZlcnNpb24gdG9vbHMsIHRleHQgXAoraW1hZ2UgZ2VuZXJhdGlvbiB0b29scywgYW5kIG1hbnkgb3RoZXIgcHJvZHVjdHMgYXMgd2VsbC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1mcmVldHlwZSIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJGcmVlVHlwZSB8IEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRS5UWFQ7bWQ1PTRhZjYyMjE1MDZmMjAyNzc0ZWY3NGY2NDkzMjg3OGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvRlRMLlRYVDttZDU9OWYzN2I0ZTZhZmEzZmVmOWRiYTg5MzJiMTZiZDNmOTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9HUEx2Mi5UWFQ7bWQ1PThlZjM4MDQ3NmY2NDJjMjBlYmY0MGZlY2IwYWRkMmVjIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mcmVldHlwZS9mcmVldHlwZS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1yaWdodC1saWJ0b29sLnBhdGNoIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZnJlZXR5cGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTEzYzQwM2MxMTAwMTZmZGM3ZTUzNzIxNmE2NDJiMWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTZmZmJhM2M4Y2VmOTNmNTU3ZDFmNzY3ZDdiYzNkZWU4NjBhYzdhM2FhZmY1ODhhNTIxZTA4MWJjMzZmNGM4YSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIKKworIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKK0NPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgorCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAorUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKK1BBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgorCitFWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKKworVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCit9CisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZnJlZXR5cGUtY29uZmlnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIKaW5kZXggOWUwOWNkMi4uNjlmMjE3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mc3Rlc3RzL2ZzdGVzdHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnN0ZXN0cy9mc3Rlc3RzX2dpdC5iYgpAQCAtOCw3ICs4LDcgQEAKIFBWID0gIjAuMStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdGVzdC1wYW5nby1nZGsuYztlbmRsaW5lPTI0O21kNT0xZWU3NGVjODUxZWNkYTU3ZWI3YWM2Y2MxODBmNzY1NSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJhYjc1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbkdMIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJUaGUgT3BlbkdMIEV4dGVuc2lvbiBXcmFuZ2xlciBMaWJyYXJ5IChHTEVXKSBpcyBhIGNyb3NzLXBsYXRmb3JtIG9wZW4tc291cmNlIEMvQysrIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dsZXcuc291cmNlZm9yZ2UubmV0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD02NzU4NiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTJhYzI1MTU1OGRlNjg1YzZiOTQ3OGQ4OWJlMzE0OWMyIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2dsZXcvZ2xldy8ke1BWfS9nbGV3LSR7UFZ9LnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1zdHJpcC5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJhMmNkN2M5OGYxMzg1NGQyZmNkZGFlMGQyYjIwNDExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM1NzJjMzBhNGU2NDY4OWMzNDJiYTE2MjQxMzBhYzk4OTM2ZDdhZjkwYzMxMDNmOWNlMTJiOGEwYzU3MzY3NjQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dsZXcvZmlsZXMvZ2xldyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9nbGV3Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLWluaGVyaXQgbGliX3BhY2thZ2UgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdvcGVuZ2wnLCAnZWdsLWdsZXMyJywgZCl9IgotCi0jIFRoZSBvcGVuZ2wgYW5kIGVnbC1YWFggb3B0aW9ucyBhcmUgZXhjbHVzaXZlLCBlbmFibGUgb25seSBvbmUuCi1QQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiU1lTVEVNPSdsaW51eCcsLHZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wgbGliZ2x1IGxpYnhleHQgbGlieGkgbGlieG11IgotUEFDS0FHRUNPTkZJR1tlZ2wtZ2xlczJdID0gIlNZU1RFTT0nbGludXgtZWdsJyBHTEVXX05PX0dMVT0nLURHTEVXX05PX0dMVScgTERGTEFHUy5HTD0nLWxFR0wgLWxHTEVTdjInLCx2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0jIE92ZXJyaWRlIFNZU1RFTSAodmlhIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1MpIHRvIGF2b2lkIGNhbGxpbmcgY29uZmlnLmd1ZXNzLAotIyB3ZSdyZSBjcm9zcy1jb21waWxpbmcuIFBhc3Mgb3VyIENGTEFHUyB2aWEgUE9QVCBhcyB0aGF0J3MgdGhlIG9wdGltaXNhdGlvbgotIyB2YXJpYWJsZSBhbmQgc2FmZWx5IG92ZXJ3cml0dGVuLgotRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAotICAgICAgICAgICAgICAgIENDPScke0NDfScgTEQ9JyR7Q0N9JyBTVFJJUD0nJyBcCi0gICAgICAgICAgICAgICAgTERGTEFHUy5FWFRSQT0nJHtMREZMQUdTfScgXAotICAgICAgICAgICAgICAgIFBPUFQ9JyR7Q0ZMQUdTfScgXAotICAgICAgICAgICAgICAgIEdMRVdfUFJFRklYPScke3ByZWZpeH0nIEJJTkRJUj0nJHtiaW5kaXJ9JyBcCi0gICAgICAgICAgICAgICAgTElCRElSPScke2xpYmRpcn0nIElOQ0RJUj0nJHtpbmNsdWRlZGlyfS9HTCcgUEtHRElSPScke2xpYmRpcn0vcGtnY29uZmlnJyIKLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLmFsbAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTcyNWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4xLjAuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJPcGVuR0wgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoZSBPcGVuR0wgRXh0ZW5zaW9uIFdyYW5nbGVyIExpYnJhcnkgKEdMRVcpIGlzIGEgY3Jvc3MtcGxhdGZvcm0gb3Blbi1zb3VyY2UgQy9DKysgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeS4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2xldy5zb3VyY2Vmb3JnZS5uZXQvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTY3NTg2IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MmFjMjUxNTU4ZGU2ODVjNmI5NDc4ZDg5YmUzMTQ5YzIiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvZ2xldy9nbGV3LyR7UFZ9L2dsZXctJHtQVn0udGd6IFwKKyAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjJhYjEyMzMxMDMzZGRmYWE1MGRjMzkzNDUzNDM5ODAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDRkZTkxZTdlNjc2MzAzOWJjMTE5NDAwOTVjZDljN2Y4ODBiYWJhODIxOTZhNzc2NWY3MjdhYzA1YTk5M2M5NSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ2xldy9maWxlcy9nbGV3IgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dsZXcvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ29wZW5nbCcsICdlZ2wtZ2xlczInLCBkKX0iCisKKyMgVGhlIG9wZW5nbCBhbmQgZWdsLVhYWCBvcHRpb25zIGFyZSBleGNsdXNpdmUsIGVuYWJsZSBvbmx5IG9uZS4KK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICJTWVNURU09J2xpbnV4JywsdmlydHVhbC9saWJ4MTEgdmlydHVhbC9saWJnbCBsaWJnbHUgbGlieGV4dCBsaWJ4aSBsaWJ4bXUiCitQQUNLQUdFQ09ORklHW2VnbC1nbGVzMl0gPSAiU1lTVEVNPSdsaW51eC1lZ2wnIEdMRVdfTk9fR0xVPSctREdMRVdfTk9fR0xVJyBMREZMQUdTLkdMPSctbEVHTCAtbEdMRVN2MicsLHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKyMgT3ZlcnJpZGUgU1lTVEVNICh2aWEgUEFDS0FHRUNPTkZJR19DT05GQVJHUykgdG8gYXZvaWQgY2FsbGluZyBjb25maWcuZ3Vlc3MsCisjIHdlJ3JlIGNyb3NzLWNvbXBpbGluZy4gUGFzcyBvdXIgQ0ZMQUdTIHZpYSBQT1BUIGFzIHRoYXQncyB0aGUgb3B0aW1pc2F0aW9uCisjIHZhcmlhYmxlIGFuZCBzYWZlbHkgb3ZlcndyaXR0ZW4uCitFWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCisgICAgICAgICAgICAgICAgQ0M9JyR7Q0N9JyBMRD0nJHtDQ30nIFNUUklQPScnIFwKKyAgICAgICAgICAgICAgICBMREZMQUdTLkVYVFJBPScke0xERkxBR1N9JyBcCisgICAgICAgICAgICAgICAgUE9QVD0nJHtDRkxBR1N9JyBcCisgICAgICAgICAgICAgICAgR0xFV19QUkVGSVg9JyR7cHJlZml4fScgQklORElSPScke2JpbmRpcn0nIFwKKyAgICAgICAgICAgICAgICBMSUJESVI9JyR7bGliZGlyfScgSU5DRElSPScke2luY2x1ZGVkaXJ9L0dMJyBQS0dESVI9JyR7bGliZGlyfS9wa2djb25maWcnIgorCitkb19jb21waWxlKCkgeworCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwuYWxsCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY1ZTVhMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXh0IHNoYXBpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkhhcmZCdXp6IGlzIGFuIE9wZW5UeXBlIHRleHQgc2hhcGluZyBlbmdpbmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9IYXJmQnV6eiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9SGFyZkJ1enoiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUwMjFkZDZkZGE2ZmYxZTZiMTA0NDAwMmZjNjYyYjliIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9oYi11Y2RuL0NPUFlJTkc7bWQ1PTk5NGJhMGYxMjk1ZjE1YjRiZGE0OTk5YTViYmVkZGVmIFwKLSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBjYWlybyBmb250Y29uZmlnIGZyZWV0eXBlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2hhcmZidXp6L3JlbGVhc2UvJHtCUH0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gImQxYWE0NDZlMWU2NTcxNzMxMWMxNWQ5YWMwY2YzMWVlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjZWM0OTMwZmYwYmIyZDBjNDBhZWUyMDMwNzU0NDc5NTRiNjRhOGMyNjk1MjAyNDEzY2M1ZTQyOGM5MDcxMzEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZSBndGstZG9jCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJpY3UiCi1QQUNLQUdFQ09ORklHW2ljdV0gPSAiLS13aXRoLWljdSwtLXdpdGhvdXQtaWN1LGljdSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS13aXRoLWNhaXJvIFwKLSAgICAtLXdpdGgtZm9udGNvbmZpZyBcCi0gICAgLS13aXRoLWZyZWV0eXBlIFwKLSAgICAtLXdpdGgtZ2xpYiBcCi0gICAgLS13aXRob3V0LWdyYXBoaXRlMiBcCi0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS1pY3UgJHtQTn0taWN1LWRldiIKLQotRklMRVNfJHtQTn0taWN1ID0gIiR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28uKiIKLUZJTEVTXyR7UE59LWljdS1kZXYgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5sYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28gXAotICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2hhcmZidXp6LWljdS5wYyBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjcuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS43LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE5YjAyOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS43LjUuYmIKQEAgLTAsMCArMSwzOSBAQAorU1VNTUFSWSA9ICJUZXh0IHNoYXBpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkhhcmZCdXp6IGlzIGFuIE9wZW5UeXBlIHRleHQgc2hhcGluZyBlbmdpbmUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9IYXJmQnV6eiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9SGFyZkJ1enoiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUwMjFkZDZkZGE2ZmYxZTZiMTA0NDAwMmZjNjYyYjliIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9oYi11Y2RuL0NPUFlJTkc7bWQ1PTk5NGJhMGYxMjk1ZjE1YjRiZGE0OTk5YTViYmVkZGVmIFwKKyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBjYWlybyBmb250Y29uZmlnIGZyZWV0eXBlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2hhcmZidXp6L3JlbGVhc2UvJHtCUH0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gIjE0NjZhYjUxZmM1YWFhNmFmNDA2NTkzNjkzOWNlYzYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0NTc0ZTFiMWY2NWNhNjk0Y2I4ZmI2OTA1MzA5NjY1YzAzNjhhZjE4YTMxMjM1N2Y4ZmY4ODZlZTJmMjk1NjMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZSBndGstZG9jCisKK1BBQ0tBR0VDT05GSUcgPz89ICJpY3UiCitQQUNLQUdFQ09ORklHW2ljdV0gPSAiLS13aXRoLWljdSwtLXdpdGhvdXQtaWN1LGljdSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS13aXRoLWNhaXJvIFwKKyAgICAtLXdpdGgtZm9udGNvbmZpZyBcCisgICAgLS13aXRoLWZyZWV0eXBlIFwKKyAgICAtLXdpdGgtZ2xpYiBcCisgICAgLS13aXRob3V0LWdyYXBoaXRlMiBcCisiCisKK1BBQ0tBR0VTID0rICIke1BOfS1pY3UgJHtQTn0taWN1LWRldiIKKworRklMRVNfJHtQTn0taWN1ID0gIiR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28uKiIKK0ZJTEVTXyR7UE59LWljdS1kZXYgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28gXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2hhcmZidXp6LWljdS5wYyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg2NDZkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiSGFyZHdhcmUgYWNjZWxlcmF0ZWQgSlBFRyBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJsaWJqcGVnLXR1cmJvIGlzIGEgZGVyaXZhdGl2ZSBvZiBsaWJqcGVnIHRoYXQgdXNlcyBTSU1EIGluc3RydWN0aW9ucyAoTU1YLCBTU0UyLCBORU9OKSB0byBhY2NlbGVyYXRlIGJhc2VsaW5lIEpQRUcgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24iCi1IT01FUEFHRSA9ICJodHRwOi8vbGlianBlZy10dXJiby5vcmcvIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NkanBlZy5oO2VuZGxpbmU9MTM7bWQ1PTA1YmFiN2M3YWQ4OTlkODViZmJhNjBkYTFhMTI3MWYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2pwZWdsaWIuaDtlbmRsaW5lPTE2O21kNT1mNjdkNzBlNTQ3YTI2NjJjMDc5NzgxYzcyZjg3N2Y3MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kanBlZy5jO2VuZGxpbmU9MTE7bWQ1PWI5MGI2ZDJiNDExOWY5ZTU4MDdjZDI3M2Y1MjVkMmFmIFwKLSIKLURFUEVORFNfYXBwZW5kX3g4Ni02NF9jbGFzcy10YXJnZXQgPSAiIG5hc20tbmF0aXZlIgotREVQRU5EU19hcHBlbmRfeDg2X2NsYXNzLXRhcmdldCAgICA9ICIgbmFzbS1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmI0OTIzZTI5N2E3ZWFhMjU1ZjA4NTExMDE3YTg4MTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTA5ODk0M2IyNzAzODg3MjdhZTYxZGU4MmFkZWM3M2NmOWYwZGJiMjQwYjNiYzhiMTcyNTk1ZWJmNDA1YjUyOCIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmpwZWctdHVyYm8vZmlsZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xpYmpwZWctdHVyYm8vZmlsZXMvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotUEU9ICIxIgotCi0jIERyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGpwZWcKLVBST1ZJREVTID0gImpwZWciCi1SUFJPVklERVNfJHtQTn0gKz0gImpwZWciCi1SUkVQTEFDRVNfJHtQTn0gKz0gImpwZWciCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICJqcGVnIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotIyBBZGQgbmFzbS1uYXRpdmUgZGVwZW5kZW5jeSBjb25zaXN0ZW50bHkgZm9yIGFsbCBidWlsZCBhcmNoZXMgaXMgaGFyZAotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0td2l0aG91dC1zaW1kIgotCi0jIFdvcmsgYXJvdW5kIG1pc3NpbmcgeDMyIEFCSSBzdXBwb3J0Ci1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyBub24tZmxvYXRpbmcgcG9pbnQgQUJJIHN1cHBvcnQgaW4gTUlQUwotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNSVBTUEtHU0ZYX0ZQVSIsICItbmYiLCAiLS13aXRob3V0LXNpbWQiLCAiIiwgZCl9IgotCi0jIFByb3ZpZGUgYSB3b3JrYXJvdW5kIGlmIEFsdGl2ZWMgdW5pdCBpcyBub3QgcHJlc2VudCBpbiBQUEMKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGMgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYzY0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItLXdpdGhvdXQtc2ltZCIsIGQpfSIKLQotUEFDS0FHRVMgPSsgImpwZWctdG9vbHMgbGlidHVyYm9qcGVnIgotCi1ERVNDUklQVElPTl9qcGVnLXRvb2xzID0gIlRoZSBqcGVnLXRvb2xzIHBhY2thZ2UgaW5jbHVkZXMgY2xpZW50IHByb2dyYW1zIHRvIGFjY2VzcyBsaWJqcGVnIGZ1bmN0aW9uYWxpdHkuICBUaGVzZSB0b29scyBhbGxvdyBmb3IgdGhlIGNvbXByZXNzaW9uLCBkZWNvbXByZXNzaW9uLCB0cmFuc2Zvcm1hdGlvbiBhbmQgZGlzcGxheSBvZiBKUEVHIGZpbGVzIGFuZCBiZW5jaG1hcmtpbmcgb2YgdGhlIGxpYmpwZWcgbGlicmFyeS4iCi1GSUxFU19qcGVnLXRvb2xzID0gIiR7YmluZGlyfS8qIgotCi1ERVNDUklQVElPTl9saWJ0dXJib2pwZWcgPSAiQSBTSU1ELWFjY2VsZXJhdGVkIEpQRUcgY29kZWMgd2hpY2ggcHJvdmlkZXMgb25seSBUdXJib0pQRUcgQVBJcyIKLUZJTEVTX2xpYnR1cmJvanBlZyA9ICIke2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGE1YWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjMuYmIKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJIYXJkd2FyZSBhY2NlbGVyYXRlZCBKUEVHIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gImxpYmpwZWctdHVyYm8gaXMgYSBkZXJpdmF0aXZlIG9mIGxpYmpwZWcgdGhhdCB1c2VzIFNJTUQgaW5zdHJ1Y3Rpb25zIChNTVgsIFNTRTIsIE5FT04pIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJqcGVnLXR1cmJvLm9yZy8iCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY2RqcGVnLmg7ZW5kbGluZT0xMzttZDU9ODE4NGJjYzdjNGFjN2I5ZWRjNmE3YmMwMGYyMzFkMGIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanBlZ2xpYi5oO2VuZGxpbmU9MTY7bWQ1PWY2N2Q3MGU1NDdhMjY2MmMwNzk3ODFjNzJmODc3ZjcyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RqcGVnLmM7ZW5kbGluZT0xMTttZDU9YzU5ZTE5ODExYzAwNmNiMzhmODJkNjQ3NzEzNGQzMTQgXAorIgorREVQRU5EU19hcHBlbmRfeDg2LTY0X2NsYXNzLXRhcmdldCA9ICIgbmFzbS1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF94ODZfY2xhc3MtdGFyZ2V0ICAgID0gIiBuYXNtLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3YzgyZjBmNmEzMTMwZWMwNmI4YTRkMGIzMjFjYmNhMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMjQ4OTBlMmJiNDZlMTJlNzJhNzlmN2U5NjVmNDA5ZjRlMTY0NjZkMDBlMWRkMTVkOTNkNzNlZTZiNTkyNTIzIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitQRT0gIjEiCisKKyMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZworUFJPVklERVMgPSAianBlZyIKK1JQUk9WSURFU18ke1BOfSArPSAianBlZyIKK1JSRVBMQUNFU18ke1BOfSArPSAianBlZyIKK1JDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIEFkZCBuYXNtLW5hdGl2ZSBkZXBlbmRlbmN5IGNvbnNpc3RlbnRseSBmb3IgYWxsIGJ1aWxkIGFyY2hlcyBpcyBoYXJkCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LXNpbWQiCisKKyMgV29yayBhcm91bmQgbWlzc2luZyB4MzIgQUJJIHN1cHBvcnQKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi0td2l0aG91dC1zaW1kIiwgIiIsIGQpfSIKKworIyBXb3JrIGFyb3VuZCBtaXNzaW5nIG5vbi1mbG9hdGluZyBwb2ludCBBQkkgc3VwcG9ydCBpbiBNSVBTCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCisKKyMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjNjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgorCitkZWYgZ2V0X2J1aWxkX3RpbWUoZCk6CisgICAgaWYgZC5nZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJykgIT0gTm9uZToKKyAgICAgICAgaW1wb3J0IGRhdGV0aW1lCisgICAgICAgIHJldHVybiAiIC0td2l0aC1idWlsZC1kYXRlPSIrIGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoZmxvYXQoZC5nZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJykpKS5zdHJmdGltZSgiJVklbSVkIikKKyAgICByZXR1cm4gIiIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiJHtAZ2V0X2J1aWxkX3RpbWUoZCl9IgorCitQQUNLQUdFUyA9KyAianBlZy10b29scyBsaWJ0dXJib2pwZWciCisKK0RFU0NSSVBUSU9OX2pwZWctdG9vbHMgPSAiVGhlIGpwZWctdG9vbHMgcGFja2FnZSBpbmNsdWRlcyBjbGllbnQgcHJvZ3JhbXMgdG8gYWNjZXNzIGxpYmpwZWcgZnVuY3Rpb25hbGl0eS4gIFRoZXNlIHRvb2xzIGFsbG93IGZvciB0aGUgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24sIHRyYW5zZm9ybWF0aW9uIGFuZCBkaXNwbGF5IG9mIEpQRUcgZmlsZXMgYW5kIGJlbmNobWFya2luZyBvZiB0aGUgbGlianBlZyBsaWJyYXJ5LiIKK0ZJTEVTX2pwZWctdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCisKK0RFU0NSSVBUSU9OX2xpYnR1cmJvanBlZyA9ICJBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB3aGljaCBwcm92aWRlcyBvbmx5IFR1cmJvSlBFRyBBUElzIgorRklMRVNfbGlidHVyYm9qcGVnID0gIiR7bGliZGlyfS9saWJ0dXJib2pwZWcuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZS9kZXRlY3QtZ3N0X2JvX21hcC1fdW5tYXAtYW5kLXVzZS1pdC1vci1hdm9pZC1pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlL2RldGVjdC1nc3RfYm9fbWFwLV91bm1hcC1hbmQtdXNlLWl0LW9yLWF2b2lkLWl0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MDU0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZS9kZXRlY3QtZ3N0X2JvX21hcC1fdW5tYXAtYW5kLXVzZS1pdC1vci1hdm9pZC1pdC5wYXRjaApAQCAtMCwwICsxLDExNiBAQAorRnJvbSA3NjFiZjk5M2NhNTUwOTVmNDYzODBjMDIzODU4Mzc5MWMxNzk3Mjk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0RhbmllbD0yMEQ9QzM9QURhej89IDxkYW5pZWwuZGlhekBsaW5hcm8ub3JnPgorRGF0ZTogVHVlLCAxMSBKdWwgMjAxNyAxNDo1MDozNyAtMDUwMAorU3ViamVjdDogW1BBVENIIGttc2N1YmVdIERldGVjdCBnc3RfYm9fbWFwL191bm1hcCBhbmQgdXNlIGl0IChvciBhdm9pZCBpdCkKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhvc2UgZnVuY3Rpb25zIGFyZSBub3QgYXZhaWxhYmxlIG9uIGxpYk1hbGksIHRodXMgYnJlYWtpbmcKK2J1aWxkcyBhbmQgY3JlYXRpbmcgaGF2b2MuCisKK1JlbW92aW5nIHRoZSBzcGVjaWZpYyBwYXJ0cyBvZiB0aGUgY29kZSB0aGF0IGRlYWwgd2l0aAorZ2JtX2JvX21hcCgpIGFuZCBnYm1fYm9fdW5tYXAoKSByZW5kZXJzIHRoZSBrbXNjdWJlIHV0aWxpdHkKK2EgbGl0dGxlIGxlc3MgdXNlZnVsLCBidXQgc3RpbGwgdmFsdWFibGUuCisKK1NpZ25lZC1vZmYtYnk6IERhbmllbCBEw61heiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KK0NjOiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+CitSZXZpZXdlZC1ieTogRXJpYyBFbmdlc3Ryb20gPGVyaWMuZW5nZXN0cm9tQGltZ3RlYy5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9tZXNhLWRldi8yMDE3LUp1bHkvMTYzMDIwLmh0bWxdCistLS0KKyBNYWtlZmlsZS5hbSAgIHwgNSArKysrLQorIGNvbmZpZ3VyZS5hYyAgfCAzICsrKworIGdzdC1kZWNvZGVyLmMgfCA3ICsrKysrKy0KKyBrbXNjdWJlLmMgICAgIHwgNCArKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggYTM2MDg3ZC4uYWI0YWRiZiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTQzLDcgKzQzLDYgQEAga21zY3ViZV9TT1VSQ0VTID0gXAorIAljb21tb24uYyBcCisgCWNvbW1vbi5oIFwKKyAJY3ViZS1zbW9vdGguYyBcCistCWN1YmUtdGV4LmMgXAorIAlkcm0tYXRvbWljLmMgXAorIAlkcm0tY29tbW9uLmMgXAorIAlkcm0tY29tbW9uLmggXAorQEAgLTU5LDMgKzU4LDcgQEAga21zY3ViZV9MREFERCArPSAkKEdTVF9MSUJTKQorIGttc2N1YmVfQ0ZMQUdTICs9ICQoR1NUX0NGTEFHUykKKyBrbXNjdWJlX1NPVVJDRVMgKz0gY3ViZS12aWRlby5jIGdzdC1kZWNvZGVyLmMKKyBlbmRpZgorKworK2lmIEVOQUJMRV9HQk1fTUFQCisra21zY3ViZV9TT1VSQ0VTICs9IGN1YmUtdGV4LmMKKytlbmRpZgorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggODM5N2Y3Yi4uYzdmMWY0ZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjUsNSArNjUsOCBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9nYm1fbW9kaWZpZXJzIiA9IHh5ZXM7IHRoZW4KKyAJQUNfREVGSU5FKEhBVkVfR0JNX01PRElGSUVSUywgMSwgW0RlZmluZSBpZiB5b3UgY2FuIHVzZSBHQk0gcHJvcGVydGllcy5dKQorIGZpCisgCisrQUNfQ0hFQ0tfTElCKFtnYm1dLCBbZ2JtX2JvX21hcF0sIFtIQVZFX0dCTV9CT19NQVA9eWVzXSwgW10pCisrQU1fQ09ORElUSU9OQUwoRU5BQkxFX0dCTV9NQVAsIFt0ZXN0ICJ4JEhBVkVfR0JNX0JPX01BUCIgPSAieHllcyJdKQorKworIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQorIEFDX09VVFBVVAorZGlmZiAtLWdpdCBhL2dzdC1kZWNvZGVyLmMgYi9nc3QtZGVjb2Rlci5jCitpbmRleCAyZDZkNTgxLi5iODQ5ODBlIDEwMDY0NAorLS0tIGEvZ3N0LWRlY29kZXIuYworKysrIGIvZ3N0LWRlY29kZXIuYworQEAgLTMzMiw2ICszMzIsNyBAQCBzZXRfbGFzdF9mcmFtZShzdHJ1Y3QgZGVjb2RlciAqZGVjLCBFR0xJbWFnZSBmcmFtZSwgR3N0U2FtcGxlICpzYW1wKQorIAlkZWMtPmxhc3Rfc2FtcCA9IHNhbXA7CisgfQorIAorKyNpZiBIQVZFX0dCTV9CT19NQVAKKyAvLyBUT0RPIHRoaXMgY291bGQgcHJvYmFibHkgYmUgYSBoZWxwZXIgcmUtdXNlZCBieSBjdWJlLXRleDoKKyBzdGF0aWMgaW50CisgYnVmX3RvX2ZkKGNvbnN0IHN0cnVjdCBnYm0gKmdibSwgaW50IHNpemUsIHZvaWQgKnB0cikKK0BAIC0zNTcsNiArMzU4LDcgQEAgYnVmX3RvX2ZkKGNvbnN0IHN0cnVjdCBnYm0gKmdibSwgaW50IHNpemUsIHZvaWQgKnB0cikKKyAKKyAJcmV0dXJuIGZkOworIH0KKysjZW5kaWYKKyAKKyBzdGF0aWMgRUdMSW1hZ2UKKyBidWZmZXJfdG9faW1hZ2Uoc3RydWN0IGRlY29kZXIgKmRlYywgR3N0QnVmZmVyICpidWYpCitAQCAtNDEwLDEyICs0MTIsMTUgQEAgYnVmZmVyX3RvX2ltYWdlKHN0cnVjdCBkZWNvZGVyICpkZWMsIEdzdEJ1ZmZlciAqYnVmKQorIAorIAlpZiAoaXNfZG1hYnVmX21lbSkgeworIAkJZG1hYnVmX2ZkID0gZHVwKGdzdF9kbWFidWZfbWVtb3J5X2dldF9mZChtZW0pKTsKKy0JfSBlbHNlIHsKKysJfQorKyNpZiBIQVZFX0dCTV9CT19NQVAKKysJZWxzZSB7CisgCQlHc3RNYXBJbmZvIG1hcF9pbmZvOworIAkJZ3N0X2J1ZmZlcl9tYXAoYnVmLCAmbWFwX2luZm8sIEdTVF9NQVBfUkVBRCk7CisgCQlkbWFidWZfZmQgPSBidWZfdG9fZmQoZGVjLT5nYm0sIG1hcF9pbmZvLnNpemUsIG1hcF9pbmZvLmRhdGEpOworIAkJZ3N0X2J1ZmZlcl91bm1hcChidWYsICZtYXBfaW5mbyk7CisgCX0KKysjZW5kaWYKKyAKKyAJaWYgKGRtYWJ1Zl9mZCA8IDApIHsKKyAJCUdTVF9FUlJPUigiY291bGQgbm90IG9idGFpbiBETUFCVUYgRkQiKTsKK2RpZmYgLS1naXQgYS9rbXNjdWJlLmMgYi9rbXNjdWJlLmMKK2luZGV4IDNhMmM0ZGQuLjI3NmRjNTUgMTAwNjQ0CistLS0gYS9rbXNjdWJlLmMKKysrKyBiL2ttc2N1YmUuYworQEAgLTE0Miw3ICsxNDIsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJZWxzZSBpZiAobW9kZSA9PSBWSURFTykKKyAJCWVnbCA9IGluaXRfY3ViZV92aWRlbyhnYm0sIHZpZGVvKTsKKyAJZWxzZQorKyNpZiBIQVZFX0dCTV9CT19NQVAKKyAJCWVnbCA9IGluaXRfY3ViZV90ZXgoZ2JtLCBtb2RlKTsKKysjZWxzZQorKwkJcHJpbnRmKCJnYm1fYm9fbWFwKCkgc3VwcG9ydCBtaXNzaW5nXG4iKTsKKysjZW5kaWYKKyAKKyAJaWYgKCFlZ2wpIHsKKyAJCXByaW50ZigiZmFpbGVkIHRvIGluaXRpYWxpemUgRUdMXG4iKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiCmluZGV4IGNhYjY4ZmYuLjViNjRlZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIKQEAgLTcsOCArNyw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9rbXNjdWJlLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9OGIzMDlkNGVlNjdiNzMxNWZmNzM4MTI3MGRkNjMxZmIiCiAKIFNSQ1JFViA9ICIwZDhkZTRjZTNhMDNmMzZhZjE4MTdmOWIwNTg2ZDEzMmFkMmM1ZDJlIgotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL2ttc2N1YmU7YnJhbmNoPW1hc3Rlcjtwcm90b2NvbD1naXQiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1NSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvbWVzYS9rbXNjdWJlO2JyYW5jaD1tYXN0ZXI7cHJvdG9jb2w9Z2l0IFwKKyAgICBmaWxlOi8vZGV0ZWN0LWdzdF9ib19tYXAtX3VubWFwLWFuZC11c2UtaXQtb3ItYXZvaWQtaXQucGF0Y2giCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvQWRkLWZhbGxiYWNrLWRlZmluaXRpb24tZm9yLUVHTC1DQVNULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5Mjk3MjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1BZGQgZmFsbGJhY2sgZGVmaW5pdGlvbiBmb3IgRUdMX0NBU1QKLQotVGhlIEVHTCBBUEkgdXBkYXRlIGZyb20gZDExMTA0ZiBpbnRyb2R1Y2VkIGEgZGVwZW5kZW5jeSBvbiB0aGUKLUVHTF9DQVNUKCkgbWFjcm8sIHByb3ZpZGVkIGJ5IGFuIHVwZGF0ZWQgZWdscGxhdGZvcm0uaC4gR2l2ZW4gdGhhdCB3ZQotZG9uJ3QgcHJvdmlkZSBlZ2xwbGF0Zm9ybS5oLCBhZGQgYSBmYWxsYmFjayBkZWZpbml0aW9uIGZvciBpZiB3ZSdyZQotYnVpbGRpbmcgYWdhaW5zdCBNZXNhIDE3LjAueCBvciBzaW1pbGFyLgotCi1odHRwczovL2J1Z3MuZ2VudG9vLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIzOTI2Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvY29tbWl0L2ViZTNhNTNkYjFjMGJiMzRlMWNhOTYzYjk1ZDFmMjIyMTE1ZjkzZjhdCi0KLVNpZ25lZC1vZmYtYnk6IFRvbSBIb2Noc3RlaW4gPHRvbS5ob2Noc3RlaW5AbnhwLmNvbT4KLQotSW5kZXg6IGxpYmVwb3h5LTEuNC4zL3NyYy9nZW5fZGlzcGF0Y2gucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJlcG94eS0xLjQuMy5vcmlnL3NyYy9nZW5fZGlzcGF0Y2gucHkJMjAxNy0wNi0wNiAwNDoyNDoxMy4wMDAwMDAwMDAgLTA1MDAKLSsrKyBsaWJlcG94eS0xLjQuMy9zcmMvZ2VuX2Rpc3BhdGNoLnB5CTIwMTctMTEtMDYgMTI6NDU6NDMuNTk0OTY2NDczIC0wNjAwCi1AQCAtNDkxLDYgKzQ5MSwxNSBAQAotICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNpbmNsdWRlICJlcG94eS9nbC5oIicpCi0gICAgICAgICAgICAgaWYgc2VsZi50YXJnZXQgPT0gImVnbCI6Ci0gICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNpbmNsdWRlICJFR0wvZWdscGxhdGZvcm0uaCInKQotKyAgICAgICAgICAgICAgICAjIEFjY291bnQgZm9yIG9sZGVyIGVnbHBsYXRmb3JtLmgsIHdoaWNoIGRvZXNuJ3QgZGVmaW5lCi0rICAgICAgICAgICAgICAgICMgdGhlIEVHTF9DQVNUIG1hY3JvLgotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjaWZuZGVmIEVHTF9DQVNUJykKLSsgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpJykKLSsgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2RlZmluZSBFR0xfQ0FTVCh0eXBlLCB2YWx1ZSkgKHN0YXRpY19jYXN0PHR5cGU+KHZhbHVlKSknKQotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZWxzZScpCi0rICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNkZWZpbmUgRUdMX0NBU1QodHlwZSwgdmFsdWUpICgodHlwZSkgKHZhbHVlKSknKQotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZW5kaWYnKQotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZW5kaWYnKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAjIEFkZCBzb21lIHJpZGljdWxvdXMgaW50dHlwZXMuaCByZWRlZmluaXRpb25zIHRoYXQgYXJlCi0gICAgICAgICAgICAgIyBmcm9tIGtocnBsYXRmb3JtLmggYW5kIG5vdCBpbmNsdWRlZCBpbiB0aGUgWE1MLiAgV2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvbm8tdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5L25vLXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYjZjMWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5L25vLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0FkZCBvcHRpb24gdG8gZGlzYWJsZSB0ZXN0cy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvcHVsbC8xNTgpCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggYjJlYmFlZi4uOTYzMmM3YSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTI0Miw3ICsyNDIsMTAgQEAgbGliZXBveHlfaW5jID0gWworIAorIHN1YmRpcignaW5jbHVkZS9lcG94eScpCisgc3ViZGlyKCdzcmMnKQorLXN1YmRpcigndGVzdCcpCisrCisraWYgZ2V0X29wdGlvbigndGVzdHMnKQorKyAgc3ViZGlyKCd0ZXN0JykKKytlbmRpZgorIAorIGlmIGdldF9vcHRpb24oJ2RvY3MnKQorICAgZG94eWdlbiA9IGZpbmRfcHJvZ3JhbSgnZG94eWdlbicsIHJlcXVpcmVkOiBmYWxzZSkKK2RpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0CitpbmRleCBiNWQ3Yzk4Li5kYzMwZTY4IDEwMDY0NAorLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKKysrKyBiL21lc29uX29wdGlvbnMudHh0CitAQCAtMTUsMyArMTUsNyBAQCBvcHRpb24oJ3gxMScsCisgICAgICAgIHR5cGU6ICdib29sZWFuJywKKyAgICAgICAgdmFsdWU6IHRydWUsCisgICAgICAgIGRlc2NyaXB0aW9uOiAnRW5hYmxlIFgxMSBzdXBwb3J0IChHTFggb3IgRUdMLVgxMSknKQorK29wdGlvbigndGVzdHMnLAorKyAgICAgICB0eXBlOiAnYm9vbGVhbicsCisrICAgICAgIHZhbHVlOiB0cnVlLAorKyAgICAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIHRoZSB0ZXN0IHN1aXRlJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTcyMzIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5HTCBmdW5jdGlvbiBwb2ludGVyIG1hbmFnZW1lbnQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU4ZWY0YzgwZDQwMWUwN2JkOWVlOGI2YjU4Y2Y0NjRiIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiYWY0YzNjZTBmYjExNDNiZGM0ZTQzZjg1Njk1YTliZWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGI4MDhhMDZjOTY4NWE2MmZjYTM0YjY4MGFiYjhiYzdmYjJmZGEwNzQ0NzhlMzI5YjA2M2MxZjg3MmI4MjZmNiIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5L3JlbGVhc2VzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLURFUEVORFMgPSAidXRpbC1tYWNyb3MiCi0KLVBBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2wsIC0tZGlzYWJsZS1lZ2wsIHZpcnR1YWwvZWdsIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLWdseCwgLS1kaXNhYmxlLWdseCwgdmlydHVhbC9saWJ4MTEiCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IGVnbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjYTA4NjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4wLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiT3BlbkdMIGZ1bmN0aW9uIHBvaW50ZXIgbWFuYWdlbWVudCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NThlZjRjODBkNDAxZTA3YmQ5ZWU4YjZiNThjZjQ2NGIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25vLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYzZmUzODQ3Nzg5MjU4MjU0ZGNkN2UzZmRiOWU3ZjVlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjOTQ5OTUzOThhNmViZjY5MTYwMGRkYTJlOTY4NWEwY2FjMjYxNDE0MTc1YzJhZGY0NjQ1Y2RmYWI0MmE1ZDUiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9yZWxlYXNlcyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItRGVnbD15ZXMsIC1EZWdsPW5vLCB2aXJ0dWFsL2VnbCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItRGdseD15ZXMsIC1EZ2x4PW5vLCB2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBlZ2wiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdGVzdHM9ZmFsc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLXByZXBlbmQtb3VyLXN5c3Jvb3QtcGF0aC1zby10aGF0LW1ha2UtZmluZHMtb3VyLXdheWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLXByZXBlbmQtb3VyLXN5c3Jvb3QtcGF0aC1zby10aGF0LW1ha2UtZmluZHMtb3VyLXdheWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmYzg0MTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMS1wcmVwZW5kLW91ci1zeXNyb290LXBhdGgtc28tdGhhdC1tYWtlLWZpbmRzLW91ci13YXlsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSBiNDQ4MDhlNDMxMzBkY2QxM2I0M2U1Yjk3OGI5YjI0YWViNGMxMzRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVGh1LCAyMCBPY3QgMjAxNiAxNDo1Nzo1MSArMDIwMAotU3ViamVjdDogW1BBVENIXSBwcmVwZW5kIG91ciBzeXNyb290IHBhdGggc28gdGhhdCBtYWtlIGZpbmRzIG91cgotIHdheWxhbmQtcHJvdG9jb2wgZmlsZXMKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmluIHwgNCArLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDcyNmRlZDMuLjMzNzY2MDAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTEyMDYsNyArMTIwNiw3IEBAIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS12aWRlby13YXlsYW5kLXF0LXRvdWNoXSwgW1F0V2F5bGFuZCBzZXJ2ZXIgc3VwcG9ydCBmb3IKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzIHdheWxhbmQtY2xpZW50IHdheWxhbmQtZWdsIHdheWxhbmQtY3Vyc29yIHhrYmNvbW1vbmAKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgd2F5bGFuZC1jbGllbnQgd2F5bGFuZC1lZ2wgd2F5bGFuZC1jdXJzb3IgeGtiY29tbW9uYAotICAgICAgICAgICAgICAgICBXQVlMQU5EX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9d2F5bGFuZF9zY2FubmVyIHdheWxhbmQtc2Nhbm5lcmAKLS0gICAgICAgICAgICAgICAgV0FZTEFORF9DT1JFX1BST1RPQ09MX0RJUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtY2xpZW50YAotLSAgICAgICAgICAgICAgICBXQVlMQU5EX1BST1RPQ09MU19ESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2AKLSsgICAgICAgICAgICAgICAgV0FZTEFORF9DT1JFX1BST1RPQ09MX0RJUj0ke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1jbGllbnRgCi0rICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX0RJUj0ke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgCi0gICAgICAgICAgICAgICAgIHZpZGVvX3dheWxhbmQ9eWVzCi0gICAgICAgICAgICAgZmkKLSAgICAgICAgIGZpCi0tLSAKLTIuNS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDItQXZvaWQtZmluZGluZy1idWlsZC1ob3N0LXMtd2F5bGFuZC1zY2FubmVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMi1Bdm9pZC1maW5kaW5nLWJ1aWxkLWhvc3Qtcy13YXlsYW5kLXNjYW5uZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4MzczMTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMi1Bdm9pZC1maW5kaW5nLWJ1aWxkLWhvc3Qtcy13YXlsYW5kLXNjYW5uZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGFlODc5MDkxY2Y2NWNiNzAyOTNiMzc1ZWM3ZTYxZWQxMmE5NmQ4YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIgRGVjIDIwMTYgMDk6Mzk6MjUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQXZvaWQgZmluZGluZyBidWlsZCBob3N0J3Mgd2F5bGFuZC1zY2FubmVyCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggMzM3NjYwMC4uMmFhNmVkNCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTIwNCw3ICsxMjA0LDcgQEAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXZpZGVvLXdheWxhbmQtcXQtdG91Y2hdLCBbUXRXYXlsYW5kIHNlcnZlciBzdXBwb3J0IGZvcgotICAgICAgICAgICAgIGlmICRQS0dfQ09ORklHIC0tZXhpc3RzIHdheWxhbmQtY2xpZW50IHdheWxhbmQtc2Nhbm5lciB3YXlsYW5kLXByb3RvY29scyB3YXlsYW5kLWVnbCB3YXlsYW5kLWN1cnNvciBlZ2wgeGtiY29tbW9uIDsgdGhlbgotICAgICAgICAgICAgICAgICBXQVlMQU5EX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3Mgd2F5bGFuZC1jbGllbnQgd2F5bGFuZC1lZ2wgd2F5bGFuZC1jdXJzb3IgeGtiY29tbW9uYAotICAgICAgICAgICAgICAgICBXQVlMQU5EX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyB3YXlsYW5kLWNsaWVudCB3YXlsYW5kLWVnbCB3YXlsYW5kLWN1cnNvciB4a2Jjb21tb25gCi0tICAgICAgICAgICAgICAgIFdBWUxBTkRfU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT13YXlsYW5kX3NjYW5uZXIgd2F5bGFuZC1zY2FubmVyYAotKyAgICAgICAgICAgICAgICBBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdKQotICAgICAgICAgICAgICAgICBXQVlMQU5EX0NPUkVfUFJPVE9DT0xfRElSPSR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLWNsaWVudGAKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfRElSPSR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2AKLSAgICAgICAgICAgICAgICAgdmlkZW9fd2F5bGFuZD15ZXMKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvZml4LWJ1aWxkLWZhaWx1cmUtb24tcHBjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvZml4LWJ1aWxkLWZhaWx1cmUtb24tcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTIwYmNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyL2ZpeC1idWlsZC1mYWlsdXJlLW9uLXBwYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vaGcubGlic2RsLm9yZy9TREwvcmV2LzUxODQxODZkNDM2Nl0KLQotQmFja3BvcnQgcGF0Y2ggZnJvbSB1cHN0cmVhbSB0byBmaXggYnVpbGQgZmFpbHVyZXMgb24gcHBjIGFuZCBwcGM2NC4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgU2FtIExhbnRpbmdhIDxzbG91a2VuQGxpYnNkbC5vcmc+Ci0jIERhdGUgMTQ3NzE1OTMxNSAyNTIwMAotIyBOb2RlIElEIDUxODQxODZkNDM2NjE2OTYxN2I0MzRmNWI3MWM2MThhNzAzNWNkZTQKLSMgUGFyZW50ICA3MWQ0MTQ4ZTMyZGU1MDg4YzRiYzJmMDRjMWU1ZGVkNjQ3YTJiZjgyCi1GaXhlZCBidWcgMzQ2NiAtIENhbid0IGJ1aWxkIDIuMC41IG9uIHBwYzY0Ci0KLS9ob21lL2ZlZG9yYS9TREwyLTIuMC41L3NyYy92aWRlby9TRExfYmxpdF9OLmM6IEluIGZ1bmN0aW9uICdjYWxjX3N3aXp6bGUzMic6Ci0vaG9tZS9mZWRvcmEvU0RMMi0yLjAuNS9zcmMvdmlkZW8vU0RMX2JsaXRfTi5jOjEyNzo1OiBlcnJvcjogSVNPIEM5MCBmb3JiaWRzIG1peGVkIGRlY2xhcmF0aW9ucyBhbmQgY29kZSBbLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnRdCi0gICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIHBsdXMgPSBWRUNVSU5UOF9MSVRFUkFMKDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0gICAgIF4KLQotZGlmZiAtciA3MWQ0MTQ4ZTMyZGUgLXIgNTE4NDE4NmQ0MzY2IHNyYy92aWRlby9TRExfYmxpdF9OLmMKLS0tLSBhL3NyYy92aWRlby9TRExfYmxpdF9OLmMJV2VkIE9jdCAxOSAyMToyMjo0MiAyMDE2IC0wNzAwCi0rKysgYi9zcmMvdmlkZW8vU0RMX2JsaXRfTi5jCVNhdCBPY3QgMjIgMTE6MDE6NTUgMjAxNiAtMDcwMAotQEAgLTExOCwxMiArMTE4LDYgQEAKLSAgICAgICAgIDE2LCA4LCAwLCAyNCwKLSAgICAgICAgIDAsIE5VTEwKLSAgICAgfTsKLS0gICAgaWYgKCFzcmNmbXQpIHsKLS0gICAgICAgIHNyY2ZtdCA9ICZkZWZhdWx0X3BpeGVsX2Zvcm1hdDsKLS0gICAgfQotLSAgICBpZiAoIWRzdGZtdCkgewotLSAgICAgICAgZHN0Zm10ID0gJmRlZmF1bHRfcGl4ZWxfZm9ybWF0OwotLSAgICB9Ci0gICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIHBsdXMgPSBWRUNVSU5UOF9MSVRFUkFMKDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQsIDB4MDQsIDB4MDQsIDB4MDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgsIDB4MDgsIDB4MDgsIDB4MDgsCi1AQCAtMTM2LDYgKzEzMCwxNCBAQAotICAgICBVaW50MzIgZ21hc2sgPSBSRVNISUZUKHNyY2ZtdC0+R3NoaWZ0KSA8PCAoZHN0Zm10LT5Hc2hpZnQpOwotICAgICBVaW50MzIgYm1hc2sgPSBSRVNISUZUKHNyY2ZtdC0+QnNoaWZ0KSA8PCAoZHN0Zm10LT5Cc2hpZnQpOwotICAgICBVaW50MzIgYW1hc2s7Ci0rCi0rICAgIGlmICghc3JjZm10KSB7Ci0rICAgICAgICBzcmNmbXQgPSAmZGVmYXVsdF9waXhlbF9mb3JtYXQ7Ci0rICAgIH0KLSsgICAgaWYgKCFkc3RmbXQpIHsKLSsgICAgICAgIGRzdGZtdCA9ICZkZWZhdWx0X3BpeGVsX2Zvcm1hdDsKLSsgICAgfQotKwotICAgICAvKiBVc2UgemVybyBmb3IgYWxwaGEgaWYgZWl0aGVyIHN1cmZhY2UgZG9lc24ndCBoYXZlIGFscGhhICovCi0gICAgIGlmIChkc3RmbXQtPkFtYXNrKSB7Ci0gICAgICAgICBhbWFzayA9Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyL2xpbmthZ2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi9saW5rYWdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDE4NWIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyL2xpbmthZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1XaGVuIGJ1aWxkaW5nIHVzZSB0aGUgbGlidG9vbCBpbnRlcm1lZGlhdGUgLmxvIGZpbGVzIGluc3RlYWQgb2YgZXhwbGljaXRseSB1c2luZwotdGhlIC5vIGZpbGVzLiBVbmRlciBsaWJ0b29sIGZvby5sbyBpcyB0aGUgbGlidG9vbCBpbnRlcm1lZGlhdGUgd3JhcHBlciwgZm9vLm8gaXMKLWEgc3RhdGljIGJ1aWxkLCBhbmQgLmxpYnMvZm9vLm8gaXMgYSBzaGFyZWQgYnVpbGQuCi0KLUlmIHN0YXRpYyBsaWJyYXJpZXMgaGF2ZSBiZWVuIGRpc2FibGVkIGdsb2JhbGx5IHRoZW4gbGlidG9vbCB3b24ndCBnZW5lcmF0ZSB0aGVtCi1hbmQgZXhwbGljaXQgcmVmZXJlbmNlcyB0byBmb28ubyB3b24ndCBiZSBzYXRpc2ZpZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotUlAKLTIwMTYvMS8xNgotCi0KLUluZGV4OiBTREwyLTIuMC40L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFNETDItMi4wLjQub3JpZy9jb25maWd1cmUuaW4KLSsrKyBTREwyLTIuMC40L2NvbmZpZ3VyZS5pbgotQEAgLTM0NjQsMjMgKzM0NjQsMjMgQEAgZG9uZQotIAotIFZFUlNJT05fT0JKRUNUUz1gZWNobyAkVkVSU0lPTl9TT1VSQ0VTYAotIFZFUlNJT05fREVQRU5EUz1gZWNobyAkVkVSU0lPTl9TT1VSQ0VTYAotLVZFUlNJT05fT0JKRUNUUz1gZWNobyAiJFZFUlNJT05fT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwucmMsJChvYmplY3RzKS9cMS5vLGcnYAotK1ZFUlNJT05fT0JKRUNUUz1gZWNobyAiJFZFUlNJT05fT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwucmMsJChvYmplY3RzKS9cMS5sbyxnJ2AKLSBWRVJTSU9OX0RFUEVORFM9YGVjaG8gIiRWRVJTSU9OX0RFUEVORFMiIHwgc2VkICJzLFxcKFtbXiBdXSpcXCkvXFwoW1teIF1dKlxcKVxcLnJjLFxcXFwKLS1cXCQob2JqZWN0cykvXFwyLm86IFxcMS9cXDIucmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi5yY1xcXFwKLSAJXFwkKFdJTkRSRVMpIFxcJDwgXFwkQCxnImAKLSAKLSBTRExNQUlOX09CSkVDVFM9YGVjaG8gJFNETE1BSU5fU09VUkNFU2AKLSBTRExNQUlOX0RFUEVORFM9YGVjaG8gJFNETE1BSU5fU09VUkNFU2AKLS1TRExNQUlOX09CSkVDVFM9YGVjaG8gIiRTRExNQUlOX09CSkVDVFMiIHwgc2VkICdzLFtbXiBdXSovXChbW14gXV0qXClcLmMsJChvYmplY3RzKS9cMS5vLGcnYAotK1NETE1BSU5fT0JKRUNUUz1gZWNobyAiJFNETE1BSU5fT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwuYywkKG9iamVjdHMpL1wxLmxvLGcnYAotIFNETE1BSU5fREVQRU5EUz1gZWNobyAiJFNETE1BSU5fREVQRU5EUyIgfCBzZWQgInMsXFwoW1teIF1dKlxcKS9cXChbW14gXV0qXFwpXFwuYyxcXFxcCi0tXFwkKG9iamVjdHMpL1xcMi5vOiBcXDEvXFwyLmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi5jXFxcXAotIAlcXCQoUlVOX0NNRF9DQylcXCQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgXFwkKENDKSBcXCQoQ0ZMQUdTKSBcXCQoRVhUUkFfQ0ZMQUdTKSAkREVQRU5ERU5DWV9UUkFDS0lOR19PUFRJT05TIC1jIFxcJDwgLW8gXFwkQCxnImAKLSAKLSBTRExURVNUX09CSkVDVFM9YGVjaG8gJFNETFRFU1RfU09VUkNFU2AKLSBTRExURVNUX0RFUEVORFM9YGVjaG8gJFNETFRFU1RfU09VUkNFU2AKLS1TRExURVNUX09CSkVDVFM9YGVjaG8gIiRTRExURVNUX09CSkVDVFMiIHwgc2VkICdzLFtbXiBdXSovXChbW14gXV0qXClcLmMsJChvYmplY3RzKS9cMS5vLGcnYAotK1NETFRFU1RfT0JKRUNUUz1gZWNobyAiJFNETFRFU1RfT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwuYywkKG9iamVjdHMpL1wxLmxvLGcnYAotIFNETFRFU1RfREVQRU5EUz1gZWNobyAiJFNETFRFU1RfREVQRU5EUyIgfCBzZWQgInMsXFwoW1teIF1dKlxcKS9cXChbW14gXV0qXFwpXFwuYyxcXFxcCi0tXFwkKG9iamVjdHMpL1xcMi5vOiBcXDEvXFwyLmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi5jXFxcXAotIAlcXCQoUlVOX0NNRF9DQylcXCQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgXFwkKENDKSBcXCQoQ0ZMQUdTKSBcXCQoRVhUUkFfQ0ZMQUdTKSAkREVQRU5ERU5DWV9UUkFDS0lOR19PUFRJT05TIC1jIFxcJDwgLW8gXFwkQCxnImAKLSAKLSAjIFNldCBydW50aW1lIHNoYXJlZCBsaWJyYXJ5IHBhdGhzIGFzIG5lZWRlZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJkM2FhZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLVNVTU1BUlkgPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIgotREVTQ1JJUFRJT04gPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIGlzIGEgY3Jvc3MtcGxhdGZvcm0gbXVsdGltZWRpYSBcCi1saWJyYXJ5IGRlc2lnbmVkIHRvIHByb3ZpZGUgbG93IGxldmVsIGFjY2VzcyB0byBhdWRpbywga2V5Ym9hcmQsIG1vdXNlLCBcCi1qb3lzdGljaywgM0QgaGFyZHdhcmUgdmlhIE9wZW5HTCwgYW5kIDJEIHZpZGVvIGZyYW1lYnVmZmVyLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic2RsLm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxpYnNkbC5vcmcvIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT1iMjMwNGFkN2U5MTcxMTAyNzU5MGQzZjEwMmE3NTRiNyIKLQotUFJPVklERVMgPSAidmlydHVhbC9saWJzZGwyIgotCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd2aXJ0dWFsL25hdGl2ZXNkay1saWJ4MTEgbmF0aXZlc2RrLWxpYnhyYW5kciBuYXRpdmVzZGstbGlieHJlbmRlciBuYXRpdmVzZGstbGlieGV4dCcsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vd3d3LmxpYnNkbC5vcmcvcmVsZWFzZS9TREwyLSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL2xpbmthZ2UucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXByZXBlbmQtb3VyLXN5c3Jvb3QtcGF0aC1zby10aGF0LW1ha2UtZmluZHMtb3VyLXdheWwucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLUF2b2lkLWZpbmRpbmctYnVpbGQtaG9zdC1zLXdheWxhbmQtc2Nhbm5lci5wYXRjaCBcCi0gICAgZmlsZTovL2ZpeC1idWlsZC1mYWlsdXJlLW9uLXBwYy5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9TREwyLSR7UFZ9IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDQwNTU0MjRkNTU2YjRhOTA4YWE3NmZhZDYzYWJkM2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDQyMDM4Y2Y1NTk2NTk2OWYyZmYwNmQ5NzYwMzE4MTNkZTY0M2FmOWM5ZWRjOWUzMzFiZDc2MWMyNDJlODc4NSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9zcyAtLWRpc2FibGUtZXNkIC0tZGlzYWJsZS1hcnRzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGlza2F1ZGlvIC0tZGlzYWJsZS1uYXMgLS1kaXNhYmxlLWVzZC1zaGFyZWQgLS1kaXNhYmxlLWVzZHRlc3QgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12aWRlby1kdW1teSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtcHRocmVhZHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNkbC1kbG9wZW4gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0iCi0KLSMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcwotIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKLVBBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSBkaXJlY3RmYiBwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZ2xlczInLCAnJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgPSAiLS1lbmFibGUtYWxzYSAtLWRpc2FibGUtYWxzYXRlc3QsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIsIgotUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICA9ICItLWVuYWJsZS12aWRlby1kaXJlY3RmYiwtLWRpc2FibGUtdmlkZW8tZGlyZWN0ZmIsZGlyZWN0ZmIiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgID0gIi0tZW5hYmxlLXZpZGVvLW9wZW5nbGVzLC0tZGlzYWJsZS12aWRlby1vcGVuZ2xlcyx2aXJ0dWFsL2xpYmdsZXMyIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdICAgICA9ICItLWVuYWJsZS12aWRlby1vcGVuZ2wsLS1kaXNhYmxlLXZpZGVvLW9wZW5nbCx2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3RzbGliXSAgICAgID0gIi0tZW5hYmxlLWlucHV0LXRzbGliLC0tZGlzYWJsZS1pbnB1dC10c2xpYix0c2xpYiIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgPSAiLS1lbmFibGUtdmlkZW8td2F5bGFuZCwtLWRpc2FibGUtdmlkZW8td2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYnhrYmNvbW1vbiIKLVBBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgPSAiLS1lbmFibGUtdmlkZW8teDExLC0tZGlzYWJsZS12aWRlby14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4cmFuZHIgbGlieHJlbmRlciIKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1pbmNsdWRlPWFjaW5jbHVkZSAtLWV4Y2x1ZGU9YXV0b2hlYWRlciIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgICMgUmVtb3ZlIG9sZCBsaWJ0b29sIG1hY3Jvcy4KLSAgICAgICAgTUFDUk9TPSJsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNCIKLSAgICAgICAgZm9yIGkgaW4gJHtNQUNST1N9OyBkbwotICAgICAgICAgICAgICAgcm0gLWYgJHtTfS9hY2luY2x1ZGUvJGkKLSAgICAgICAgZG9uZQotICAgICAgICBleHBvcnQgU1lTUk9PVD0kUEtHX0NPTkZJR19TWVNST09UX0RJUgotfQotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjZjcwZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC44LmJiCkBAIC0wLDAgKzEsNjUgQEAKK1NVTU1BUlkgPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIgorREVTQ1JJUFRJT04gPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIGlzIGEgY3Jvc3MtcGxhdGZvcm0gbXVsdGltZWRpYSBcCitsaWJyYXJ5IGRlc2lnbmVkIHRvIHByb3ZpZGUgbG93IGxldmVsIGFjY2VzcyB0byBhdWRpbywga2V5Ym9hcmQsIG1vdXNlLCBcCitqb3lzdGljaywgM0QgaGFyZHdhcmUgdmlhIE9wZW5HTCwgYW5kIDJEIHZpZGVvIGZyYW1lYnVmZmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic2RsLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxpYnNkbC5vcmcvIgorCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT0wMmVlMjY4MTRkZDA0NGJkNzgzOGFlMjRlMDViODgwZiIKKworUFJPVklERVMgPSAidmlydHVhbC9saWJzZGwyIgorCitERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd2aXJ0dWFsL25hdGl2ZXNkay1saWJ4MTEgbmF0aXZlc2RrLWxpYnhyYW5kciBuYXRpdmVzZGstbGlieHJlbmRlciBuYXRpdmVzZGstbGlieGV4dCcsICcnLCBkKX0iCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vd3d3LmxpYnNkbC5vcmcvcmVsZWFzZS9TREwyLSR7UFZ9LnRhci5neiBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9TREwyLSR7UFZ9IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzgwMGQ3MDVjZWY3NDJjNmE2MzRmMjAyYzM3ZjI2M2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWRjNzdjNTczMDg2NjFkNTc2ZTg0MzM0NGQ4NjM4ZTAyNWE3ODE4YmZmNzNmOGZiZmFiMDljM2M1ZmQwOTJlYyIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9zcyAtLWRpc2FibGUtZXNkIC0tZGlzYWJsZS1hcnRzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGlza2F1ZGlvIC0tZGlzYWJsZS1uYXMgLS1kaXNhYmxlLWVzZC1zaGFyZWQgLS1kaXNhYmxlLWVzZHRlc3QgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12aWRlby1kdW1teSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtcHRocmVhZHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNkbC1kbG9wZW4gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgIgorCisjIG9wZW5nbCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKKyMgYW5kIEJTUCBsYXllcnMgdG8gcGljayBlaXRoZXIgKGRlc2t0b3ApIG9wZW5nbCwgZ2xlczIsIG9yIG5vIEdMCitQQUNLQUdFQ09ORklHX0dMID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EgZGlyZWN0ZmIgcHVsc2VhdWRpbyB4MTEnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kIGdsZXMyJywgJycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2Fsc2FdICAgICAgID0gIi0tZW5hYmxlLWFsc2EgLS1kaXNhYmxlLWFsc2F0ZXN0LC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliLCIKK1BBQ0tBR0VDT05GSUdbZGlyZWN0ZmJdICAgPSAiLS1lbmFibGUtdmlkZW8tZGlyZWN0ZmIsLS1kaXNhYmxlLXZpZGVvLWRpcmVjdGZiLGRpcmVjdGZiIgorUEFDS0FHRUNPTkZJR1tnbGVzMl0gICAgICA9ICItLWVuYWJsZS12aWRlby1vcGVuZ2xlcywtLWRpc2FibGUtdmlkZW8tb3BlbmdsZXMsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsLC0tZGlzYWJsZS12aWRlby1vcGVuZ2wsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1t0c2xpYl0gICAgICA9ICItLWVuYWJsZS1pbnB1dC10c2xpYiwtLWRpc2FibGUtaW5wdXQtdHNsaWIsdHNsaWIiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgID0gIi0tZW5hYmxlLXZpZGVvLXdheWxhbmQsLS1kaXNhYmxlLXZpZGVvLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJ4a2Jjb21tb24iCitQQUNLQUdFQ09ORklHW3gxMV0gICAgICAgID0gIi0tZW5hYmxlLXZpZGVvLXgxMSwtLWRpc2FibGUtdmlkZW8teDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHJhbmRyIGxpYnhyZW5kZXIiCisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0taW5jbHVkZT1hY2luY2x1ZGUgLS1leGNsdWRlPWF1dG9oZWFkZXIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgICAjIFJlbW92ZSBvbGQgbGlidG9vbCBtYWNyb3MuCisgICAgICAgIE1BQ1JPUz0ibGlidG9vbC5tNCBsdH5vYnNvbGV0ZS5tNCBsdG9wdGlvbnMubTQgbHRzdWdhci5tNCBsdHZlcnNpb24ubTQiCisgICAgICAgIGZvciBpIGluICR7TUFDUk9TfTsgZG8KKyAgICAgICAgICAgICAgIHJtIC1mICR7U30vYWNpbmNsdWRlLyRpCisgICAgICAgIGRvbmUKKyAgICAgICAgZXhwb3J0IFNZU1JPT1Q9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18xLjguMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA4MmMxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzEuOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIGZyb20gbGlidmEgcHJvamVjdCIKLQotREVTQ1JJUFRJT04gPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBcCi1hbmQgZXhhbXBsZXMgdG8gZXhlcmNpc2UgVkEtQVBJIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbGlidmEgXAotcHJvamVjdC5WQS1BUEkgaXMgYW4gb3Blbi1zb3VyY2UgbGlicmFyeSBhbmQgQVBJIHNwZWNpZmljYXRpb24sIFwKLXdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBoYXJkd2FyZSBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzIFwKLWZvciB2aWRlbyBwcm9jZXNzaW5nLiBJdCBjb25zaXN0cyBvZiBhIG1haW4gbGlicmFyeSBhbmQgZHJpdmVyLXNwZWNpZmljIFwKLWFjY2VsZXJhdGlvbiBiYWNrZW5kcyBmb3IgZWFjaCBzdXBwb3J0ZWQgaGFyZHdhcmUgdmVuZG9yIgotCi1IT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vMDFvcmcvbGlidmEtdXRpbHMvaXNzdWVzIgotCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjE0OGZjOGFkZjE5ZGM5YWVjMTdjZjljZDI5YTlhNWUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS11dGlscy5naXQ7YnJhbmNoPXYxLjgtYnJhbmNoIgotU1JDUkVWID0gIjAxMWM3MDliOThiNTJkYjNiMTBhZWIzNjFkZmVhOWRhNDM5MzAzNjQiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLXV0aWxzL3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAibGlidmEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotIyBkZXBlbmRzIG9uIGxpYnZhIHdoaWNoIHJlcXVpcmVzIG9wZW5nbAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODAxOGVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjEuMC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgZnJvbSBsaWJ2YSBwcm9qZWN0IgorCitERVNDUklQVElPTiA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIFwKK2FuZCBleGFtcGxlcyB0byBleGVyY2lzZSBWQS1BUEkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsaWJ2YSBcCitwcm9qZWN0LlZBLUFQSSBpcyBhbiBvcGVuLXNvdXJjZSBsaWJyYXJ5IGFuZCBBUEkgc3BlY2lmaWNhdGlvbiwgXAord2hpY2ggcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBjYXBhYmlsaXRpZXMgXAorZm9yIHZpZGVvIHByb2Nlc3NpbmcuIEl0IGNvbnNpc3RzIG9mIGEgbWFpbiBsaWJyYXJ5IGFuZCBkcml2ZXItc3BlY2lmaWMgXAorYWNjZWxlcmF0aW9uIGJhY2tlbmRzIGZvciBlYWNoIHN1cHBvcnRlZCBoYXJkd2FyZSB2ZW5kb3IiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9pc3N1ZXMiCisKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMTQ4ZmM4YWRmMTlkYzlhZWMxN2NmOWNkMjlhOWE1ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiNjY0OWJlNzAzOTA2MDY2NTFjYjYzNjMyMGJmZDQzYzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjZhNzc5MGMzZGNjNTY1MzczNzJjOTBhODMwMzZhMzEzNjE5NGE4YjM5N2U4NGU5N2JmOWNjOTI1NGZhMmM1MSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9yZWxlYXNlcyIKKworREVQRU5EUyA9ICJsaWJ2YSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisjIGRlcGVuZHMgb24gbGlidmEgd2hpY2ggcmVxdWlyZXMgb3BlbmdsCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS44LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzEuOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWVkYTg0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS44LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIlZpZGVvIEFjY2VsZXJhdGlvbiAoVkEpIEFQSSBmb3IgTGludXgiCi1ERVNDUklQVElPTiA9ICJWaWRlbyBBY2NlbGVyYXRpb24gQVBJIChWQSBBUEkpIGlzIGEgbGlicmFyeSAobGliVkEpIFwKLWFuZCBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBlbmFibGVzIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgXAotaGFyZHdhcmUgKEdQVSkgYWNjZWxlcmF0aW9uIGZvciB2aWRlbyBwcm9jZXNzaW5nIG9uIExpbnV4IGFuZCBVTklYIFwKLWJhc2VkIG9wZXJhdGluZyBzeXN0ZW1zLiBBY2NlbGVyYXRlZCBwcm9jZXNzaW5nIGluY2x1ZGVzIHZpZGVvIFwKLWRlY29kaW5nLCB2aWRlbyBlbmNvZGluZywgc3VicGljdHVyZSBibGVuZGluZyBhbmQgcmVuZGVyaW5nLiBUaGUgXAotc3BlY2lmaWNhdGlvbiB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBieSBJbnRlbCBmb3IgaXRzIEdNQSAoR3JhcGhpY3MgXAotTWVkaWEgQWNjZWxlcmF0b3IpIHNlcmllcyBvZiBHUFUgaGFyZHdhcmUsIHRoZSBBUEkgaXMgaG93ZXZlciBub3QgXAotbGltaXRlZCB0byBHUFVzIG9yIEludGVsIHNwZWNpZmljIGhhcmR3YXJlLCBhcyBvdGhlciBoYXJkd2FyZSBhbmQgXAotbWFudWZhY3R1cmVycyBjYW4gYWxzbyBmcmVlbHkgdXNlIHRoaXMgQVBJIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRlZCBcCi12aWRlbyBkZWNvZGluZy4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS9pc3N1ZXMiCi0KLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTQ4OTQwZjk0YWNiMGFmNTgyZTVlZjAzNTM3ODAwZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLmdpdDtwcm90b2NvbD1odHRwO2JyYW5jaD12MS44LWJyYW5jaCAiCi1TUkNSRVYgPSAiNDU3NDcwOTg3Y2M5ZGY1OTc2Y2U4YzcyZmZkNGJmYmQ5YmFhZjBmOSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIl4oP1A8cHZlcj4oXGQrKFwuXGQrKSspKSQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAibGliZHJtIHZpcnR1YWwvbWVzYSB2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9lZ2wiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotRVhUUkFfT0VDT05GID0gImFjX2N2X3Byb2dfV0FZTEFORF9TQ0FOTkVSPXdheWxhbmQtc2Nhbm5lciIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCi0KLVBBQ0tBR0VTID0rICIke1BOfS14MTEgJHtQTn0tdHBpICR7UE59LWdseCAke1BOfS1lZ2wgJHtQTn0td2F5bGFuZCIKLQotUkRFUEVORFNfJHtQTn0tdHBpID0rICIke1BOfSIKLVJERVBFTkRTXyR7UE59LXgxMSA9KyAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS1nbHggPSsgIiR7UE59LXgxMSIKLVJERVBFTkRTXyR7UE59LWVnbCA9KyAiJHtQTn0teDExIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9kcmkvLmRlYnVnIgotCi1GSUxFU18ke1BOfS14MTEgPSsgIiR7bGliZGlyfS9saWJ2YS14MTEqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tdHBpID0rICIke2xpYmRpcn0vbGlidmEtdHBpKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWdseCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWdseCoke1NPTElCU30iCi1GSUxFU18ke1BOfS1lZ2wgPSsgIiR7bGliZGlyfS9saWJ2YS1lZ2wqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0td2F5bGFuZCA9KyAiJHtsaWJkaXJ9L2xpYnZhLXdheWxhbmQqJHtTT0xJQlN9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNjZjYzMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi4xLjAuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJWaWRlbyBBY2NlbGVyYXRpb24gKFZBKSBBUEkgZm9yIExpbnV4IgorREVTQ1JJUFRJT04gPSAiVmlkZW8gQWNjZWxlcmF0aW9uIEFQSSAoVkEgQVBJKSBpcyBhIGxpYnJhcnkgKGxpYlZBKSBcCithbmQgQVBJIHNwZWNpZmljYXRpb24gd2hpY2ggZW5hYmxlcyBhbmQgcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIFwKK2hhcmR3YXJlIChHUFUpIGFjY2VsZXJhdGlvbiBmb3IgdmlkZW8gcHJvY2Vzc2luZyBvbiBMaW51eCBhbmQgVU5JWCBcCitiYXNlZCBvcGVyYXRpbmcgc3lzdGVtcy4gQWNjZWxlcmF0ZWQgcHJvY2Vzc2luZyBpbmNsdWRlcyB2aWRlbyBcCitkZWNvZGluZywgdmlkZW8gZW5jb2RpbmcsIHN1YnBpY3R1cmUgYmxlbmRpbmcgYW5kIHJlbmRlcmluZy4gVGhlIFwKK3NwZWNpZmljYXRpb24gd2FzIG9yaWdpbmFsbHkgZGVzaWduZWQgYnkgSW50ZWwgZm9yIGl0cyBHTUEgKEdyYXBoaWNzIFwKK01lZGlhIEFjY2VsZXJhdG9yKSBzZXJpZXMgb2YgR1BVIGhhcmR3YXJlLCB0aGUgQVBJIGlzIGhvd2V2ZXIgbm90IFwKK2xpbWl0ZWQgdG8gR1BVcyBvciBJbnRlbCBzcGVjaWZpYyBoYXJkd2FyZSwgYXMgb3RoZXIgaGFyZHdhcmUgYW5kIFwKK21hbnVmYWN0dXJlcnMgY2FuIGFsc28gZnJlZWx5IHVzZSB0aGlzIEFQSSBmb3IgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgXAordmlkZW8gZGVjb2RpbmcuIgorCitIT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvaXNzdWVzIgorCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmU0ODk0MGY5NGFjYjBhZjU4MmU1ZWYwMzUzNzgwMGYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIuYnoyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWQ2ZTRmMWQzNmM0MDc1NjYzNDNlOWRkZTVhOTcyYjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjNmYTk1M2ExMWQzMjEwYzNhNGVlNzkwMzFhYmRiZTA4NjNkNWNlMTNkOWIzZjkzZjMxNWYxZWVjNjBhNGIwZiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9yZWxlYXNlcyIKKworREVQRU5EUyA9ICJsaWJkcm0gdmlydHVhbC9tZXNhIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK0VYVFJBX09FQ09ORiA9ICJhY19jdl9wcm9nX1dBWUxBTkRfU0NBTk5FUj13YXlsYW5kLXNjYW5uZXIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgorCitQQUNLQUdFUyA9KyAiJHtQTn0teDExICR7UE59LWdseCAke1BOfS13YXlsYW5kIgorCitSREVQRU5EU18ke1BOfS14MTEgPSsgIiR7UE59IgorUkRFUEVORFNfJHtQTn0tZ2x4ID0rICIke1BOfS14MTEiCisKK0ZJTEVTXyR7UE59LXgxMSA9KyAiJHtsaWJkaXJ9L2xpYnZhLXgxMSoke1NPTElCU30iCitGSUxFU18ke1BOfS1nbHggPSsgIiR7bGliZGlyfS9saWJ2YS1nbHgqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0td2F5bGFuZCA9KyAiJHtsaWJkaXJ9L2xpYnZhLXdheWxhbmQqJHtTT0xJQlN9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2gKaW5kZXggYmQxZTg2My4uZjkwOGQ0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1NYWtlZmlsZS52dWxrYW4uYW0tZXhwbGljdGx5LWFkZC1saWItZXhwYXQtdG8taW50ZWwtLnBhdGNoCkBAIC0yMCwxNyArMjAsMTggQEAKIAogZXhwbGljdGx5IGFkZCBFWFBBVF9MSUJTIHRvIGludGVsJ3MgVlVMS0FOX0xJQl9ERVBTCiAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFttZXNhLWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmddCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCitodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL21lc2EvbWVzYS9jb21taXQvP2lkPTA1ZmM2MmQ4OWY1OWNlMTlhMThiZmQ0ZTYzYTA5NjI0OTEwZDZjYWYKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCiAgc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCi1kaWZmIC0tZ2l0IGEvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSBiL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLWluZGV4IDI3MWIwYTUuLjhmYmUyYzggMTAwNjQ0Ci0tLS0gYS9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCi0rKysgYi9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCitJbmRleDogbWVzYS0xNy4zLjYvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG1lc2EtMTcuMy42Lm9yaWcvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQorKysrIG1lc2EtMTcuMy42L3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KIEBAIC0xNDQsNiArMTQ0LDcgQEAgVlVMS0FOX0xJQl9ERVBTID0gXAogIAkkKExJQkRSTV9MSUJTKSBcCiAgCSQoUFRIUkVBRF9MSUJTKSBcCkBAIC0zOCw3ICszOSw0IEBACiArCSQoRVhQQVRfTElCUykgXAogIAktbG0KICAKLSBpZiBIQVZFX1BMQVRGT1JNX1gxMQotLS0gCi0yLjcuNAotCisgaWYgSEFWRV9QTEFURk9STV9BTkRST0lECmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaAppbmRleCBlYjZmZjRmLi4yNDQ0YjI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2gKQEAgLTE0LDEyICsxNCwxMiBAQAogIGNvbmZpZ3VyZS5hYyB8IDcgKy0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMmM3ZTYzNmZhYy4uZDJiMjM1MDczOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjE3NCwxMiArMjE3NCw3IEBAIGlmIHRlc3QgIngkd2l0aF9wbGF0Zm9ybXMiICE9IHhhdXRvOyB0aGVuCi0gICAgIHdpdGhfZWdsX3BsYXRmb3Jtcz0kd2l0aF9wbGF0Zm9ybXMKK0luZGV4OiBtZXNhLTE3LjMuNi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtZXNhLTE3LjMuNi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG1lc2EtMTcuMy42L2NvbmZpZ3VyZS5hYworQEAgLTE2OTQsMTIgKzE2OTQsNyBAQCBpZiB0ZXN0ICJ4JHdpdGhfcGxhdGZvcm1zIiA9IHhhdXRvOyB0aGVuCisgICAgIHdpdGhfcGxhdGZvcm1zPSR3aXRoX2VnbF9wbGF0Zm9ybXMKICBmaQogIAogLVBLR19DSEVDS19NT0RVTEVTKFtXQVlMQU5EX1NDQU5ORVJdLCBbd2F5bGFuZC1zY2FubmVyXSwKQEAgLTMwLDggKzMwLDUgQEAKIC1maQogK0FDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0pCiAgCi0gIyBEbyBwZXItRUdMIHBsYXRmb3JtIHNldHVwcyBhbmQgY2hlY2tzCi0gZWdsX3BsYXRmb3Jtcz1gSUZTPScsICc7IGVjaG8gJHdpdGhfZWdsX3BsYXRmb3Jtc2AKLS0tIAotMi4xMy4wCi0KKyBQS0dfQ0hFQ0tfRVhJU1RTKFt3YXlsYW5kLXByb3RvY29scyA+PSAkV0FZTEFORF9QUk9UT0NPTFNfUkVRVUlSRURdLCBbaGF2ZV93YXlsYW5kX3Byb3RvY29scz15ZXNdLCBbaGF2ZV93YXlsYW5kX3Byb3RvY29scz1ub10pCisgaWYgdGVzdCAieCRoYXZlX3dheWxhbmRfcHJvdG9jb2xzIiA9IHh5ZXM7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWFjLWZpeC1idWlsZC1hZnRlci1MTFZNLTUuMC1TVk4tcjMwMDcxOC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWFjLWZpeC1idWlsZC1hZnRlci1MTFZNLTUuMC1TVk4tcjMwMDcxOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI3YTNiYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1hYy1maXgtYnVpbGQtYWZ0ZXItTExWTS01LjAtU1ZOLXIzMDA3MTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDk4NjE0MzdlNThmZGQwZGUwMTE5M2ExMDI2MDhkMzRlNTk1Mjk1M2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpc3RvcGggSGFhZyA8aGFhZ2NoK21lc2FkZXZAZnJpY2tlbC5jbHViPgotRGF0ZTogVGh1LCAyMCBBcHIgMjAxNyAxMDozNDoxOCArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gYWM6IGZpeCBidWlsZCBhZnRlciBMTFZNIDUuMCBTVk4gcjMwMDcxOAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi12MjogcHJldmlvdXNseSBnZXRXaXRoRGVyZWZlcmVuY2VhYmxlQnl0ZXMoKSBleGlzdHMsIGJ1dCBhZGRBdHRyKCkgZG9lc24ndCB0YWtlIHRoYXQgdHlwZQotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGFhZyA8aGFhZ2NoK21lc2FkZXZAZnJpY2tlbC5jbHViPgotUmV2aWV3ZWQtYnk6IE5pY29sYWkgSMOkaG5sZSA8bmljb2xhaS5oYWVobmxlQGFtZC5jb20+Ci1UZXN0ZWQtYW5kLXJldmlld2VkLWJ5OiBNaWtlIExvdGhpYW4gPG1pa2VAZmlyZWJ1cm4uY28udWs+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIHNyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcCB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcCBiL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcAotaW5kZXggZDllYTRiMS4uMTFmYTgwOSAxMDA2NDQKLS0tLSBhL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcAotKysrIGIvc3JjL2FtZC9jb21tb24vYWNfbGx2bV9oZWxwZXIuY3BwCi1AQCAtNDQsOSArNDQsMTMgQEAgdHlwZWRlZiBBdHRyaWJ1dGVTZXQgQXR0cmlidXRlTGlzdDsKLSB2b2lkIGFjX2FkZF9hdHRyX2RlcmVmZXJlbmNlYWJsZShMTFZNVmFsdWVSZWYgdmFsLCB1aW50NjRfdCBieXRlcykKLSB7Ci0gICAgbGx2bTo6QXJndW1lbnQgKkEgPSBsbHZtOjp1bndyYXA8bGx2bTo6QXJndW1lbnQ+KHZhbCk7Ci0rI2lmIEhBVkVfTExWTSA8IDB4MDUwMAotICAgIGxsdm06OkF0dHJCdWlsZGVyIEI7Ci0gICAgQi5hZGREZXJlZmVyZW5jZWFibGVBdHRyKGJ5dGVzKTsKLSAgICBBLT5hZGRBdHRyKGxsdm06OkF0dHJpYnV0ZUxpc3Q6OmdldChBLT5nZXRDb250ZXh0KCksIEEtPmdldEFyZ05vKCkgKyAxLCAgQikpOwotKyNlbHNlCi0rICAgQS0+YWRkQXR0cihsbHZtOjpBdHRyaWJ1dGU6OmdldFdpdGhEZXJlZmVyZW5jZWFibGVCeXRlcyhBLT5nZXRDb250ZXh0KCksIGJ5dGVzKSk7Ci0rI2VuZGlmCi0gfQotIAotIGJvb2wgYWNfaXNfc2dwcl9wYXJhbShMTFZNVmFsdWVSZWYgYXJnKQotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLUFsd2F5cy1jaGVjay1mb3ItZXhwYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc1M2M0OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gMWY3ZDc1MjE5M2YwMmQxNWQ1OTIzY2VlOTkyZThmNDZkNGM2ZGYxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDI4IEF1ZyAyMDE3IDEzOjUxOjQ5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogQWx3YXlzIGNoZWNrIGZvciBleHBhdAotCi1leHBhdCB3YXMgbm90IGNoZWNrZWQgaWYgZHJpIHdhcyBub3QgYnVpbHQgbGVhZGluZyB0byBidWlsZCBmYWlsdXJlCi1pbiB2dWxrYW4gZHJpdmVyOiBiYWNrcG9ydCBhIGZpeCAoYSBjb21iaW5hdGlvbiBvZiBtdWx0aXBsZSBjb21taXRzCi10aGF0IHNob3VsZCBlbmQgdXAgaW4gMTcuMykuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxNSArKysrKystLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmZDM0NmM4YWEyLi42NjJmYWVjZWZhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNzc3LDYgKzE3NzcsMTIgQEAgaWYgdGVzdCAieCR3aXRoX2RyaV9kcml2ZXJzIiA9IHhubzsgdGhlbgotICAgICB3aXRoX2RyaV9kcml2ZXJzPScnCi0gZmkKLSAKLSsjIENoZWNrIGZvciBleHBhdAotK1BLR19DSEVDS19NT0RVTEVTKFtFWFBBVF0sIFtleHBhdF0pCi0rUEtHX0NIRUNLX01PRFVMRVMoW0VYUEFUXSwgW2V4cGF0XSwsCi0rICAgIFtQS0dfQ0hFQ0tfTU9EVUxFUyhbRVhQQVRdLCBbZXhwYXQyMV0pXQotKykKLSsKLSBkbmwgSWYgJHdpdGhfZHJpX2RyaXZlcnMgaXMgeWVzLCBkcml2ZXJzIHdpbGwgYmUgYWRkZWQgdGhyb3VnaAotIGRubCBwbGF0Zm9ybSBjaGVja3MuIFNldCBERUZJTkVTIGFuZCBMSUJfREVQUwotIGlmIHRlc3QgIngkZW5hYmxlX2RyaSIgPSB4eWVzOyB0aGVuCi1AQCAtMTgxMCwxNSArMTgxNiw2IEBAIGlmIHRlc3QgIngkZW5hYmxlX2RyaSIgPSB4eWVzOyB0aGVuCi0gICAgICAgICB3aXRoX2RyaV9kcml2ZXJzPSJpOTE1IGk5NjUgbm91dmVhdSByMjAwIHJhZGVvbiBzd3Jhc3QiCi0gICAgIGZpCi0gCi0tICAgICMgQ2hlY2sgZm9yIGV4cGF0Ci0tICAgIFBLR19DSEVDS19NT0RVTEVTKFtFWFBBVF0sIFtleHBhdF0sIFtdLAotLSAgICAgICAgIyBleHBhdCB2ZXJzaW9uIDIuMCBhbmQgZWFybGllciBkbyBub3QgcHJvdmlkZSBleHBhdC5wYwotLSAgICAgICAgW0FDX0NIRUNLX0hFQURFUihbZXhwYXQuaF0sW10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW0V4cGF0IGhlYWRlcnMgcmVxdWlyZWQgZm9yIERSSSBub3QgZm91bmRdKV0pCi0tICAgICAgICAgQUNfQ0hFQ0tfTElCKFtleHBhdF0sW1hNTF9QYXJzZXJDcmVhdGVdLFtdLAotLSAgICAgICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW0V4cGF0IGxpYnJhcnkgcmVxdWlyZWQgZm9yIERSSSBub3QgZm91bmRdKV0pCi0tICAgICAgICAgRVhQQVRfTElCUz0iLWxleHBhdCJdKQotLQotICAgICAjIHB1dCBhbGwgdGhlIG5lY2Vzc2FyeSBsaWJzIHRvZ2V0aGVyCi0gICAgIERSSV9MSUJfREVQUz0iJERSSV9MSUJfREVQUyAkU0VMSU5VWF9MSUJTICRMSUJEUk1fTElCUyAkRVhQQVRfTElCUyAtbG0gJFBUSFJFQURfTElCUyAkRExPUEVOX0xJQlMiCi0gZmkKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXN0LWRyaS1Jbml0aWFsaXNlLW1vZGlmaWVyLXRvLUlOVkFMSUQtZm9yLURSSTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1zdC1kcmktSW5pdGlhbGlzZS1tb2RpZmllci10by1JTlZBTElELWZvci1EUkkyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYmE3ODUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1zdC1kcmktSW5pdGlhbGlzZS1tb2RpZmllci10by1JTlZBTElELWZvci1EUkkyLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNGNiZWNiNjE2ODJhMGVlNDI2ZmFhYTAzZDgyNGZjOGZkN2FlZjgyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhbmllbCBTdG9uZSA8ZGFuaWVsc0Bjb2xsYWJvcmEuY29tPgorRGF0ZTogTW9uLCAyIEFwciAyMDE4IDEzOjIwOjM0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHN0L2RyaTogSW5pdGlhbGlzZSBtb2RpZmllciB0byBJTlZBTElEIGZvciBEUkkyCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1doZW4gYWxsb2NhdGluZyBhIGJ1ZmZlciBmb3IgRFJJMiwgc2V0IHRoZSBtb2RpZmllciB0byBJTlZBTElEIHRvIGluZm9ybQordGhlIGJhY2tlbmQgdGhhdCB3ZSBoYXZlIG5vIHN1cHBsaWVkIG1vZGlmaWVycyBhbmQgaXQgc2hvdWxkIGRvIGl0cyBvd24KK3RoaW5nLiBUaGUgbWlzc2VkIGluaXRpYWxpc2F0aW9uIGZvcmNlZCBsaW5lYXIsIGV2ZW4gaWYgdGhlCitpbXBsZW1lbnRhdGlvbiBoYWQgbWFkZSBvdGhlciBkZWNpc2lvbnMuCisKK1RoaXMgcmVzdWx0ZWQgaW4gVkM0IERSSTIgY2xpZW50cyBmYWlsaW5nIHdpdGg6CisgIE1vZGlmaWVyIDB4MCB2cy4gdGlsaW5nICgweDcwMDAwMDAwMDAwMDAwMSkgbWlzbWF0Y2gKKworU2lnbmVkLW9mZi1ieTogRGFuaWVsIFN0b25lIDxkYW5pZWxzQGNvbGxhYm9yYS5jb20+CitSZXBvcnRlZC1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK1Jldmlld2VkLWJ5OiBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0PgorRml4ZXM6IDNmODUxMzE3MmZmNiAoImdhbGxpdW0vd2luc3lzL2RybTogaW50cm9kdWNlIG1vZGlmaWVyIGZpZWxkIHRvIHdpbnN5c19oYW5kbGUiKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxXQorCitbMV0gaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL21lc2EvY29tbWl0Lz9pZD00Y2JlY2I2MTY4MmEwZWU0MjZmYWFhMDNkODI0ZmM4ZmQ3YWVmODI2CistLS0KKyBzcmMvZ2FsbGl1bS9zdGF0ZV90cmFja2Vycy9kcmkvZHJpMi5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9zdGF0ZV90cmFja2Vycy9kcmkvZHJpMi5jIGIvc3JjL2dhbGxpdW0vc3RhdGVfdHJhY2tlcnMvZHJpL2RyaTIuYworaW5kZXggMzFkMTdkNDZjMi4uNThhNjc1N2YwMyAxMDA2NDQKKy0tLSBhL3NyYy9nYWxsaXVtL3N0YXRlX3RyYWNrZXJzL2RyaS9kcmkyLmMKKysrKyBiL3NyYy9nYWxsaXVtL3N0YXRlX3RyYWNrZXJzL2RyaS9kcmkyLmMKK0BAIC04MDYsNiArODA2LDcgQEAgZHJpMl9hbGxvY2F0ZV90ZXh0dXJlcyhzdHJ1Y3QgZHJpX2NvbnRleHQgKmN0eCwKKyAgICAgICAgICB3aGFuZGxlLmhhbmRsZSA9IGJ1Zi0+bmFtZTsKKyAgICAgICAgICB3aGFuZGxlLnN0cmlkZSA9IGJ1Zi0+cGl0Y2g7CisgICAgICAgICAgd2hhbmRsZS5vZmZzZXQgPSAwOworKyAgICAgICAgIHdoYW5kbGUubW9kaWZpZXIgPSBEUk1fRk9STUFUX01PRF9JTlZBTElEOworICAgICAgICAgIGlmIChzY3JlZW4tPmNhbl9zaGFyZV9idWZmZXIpCisgICAgICAgICAgICAgd2hhbmRsZS50eXBlID0gRFJNX0FQSV9IQU5ETEVfVFlQRV9TSEFSRUQ7CisgICAgICAgICAgZWxzZQorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzhjYWVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWdhbGxpdm0tRml4LWJ1aWxkLWFnYWluc3QtTExWTS1TVk4tcjMwMjU4OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gYTAyYTBkZmRhMjcxMmQzMGFkNjJiOGYwNDIxZWM3YjgyNDRiYTJjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9NaWNoZWw9MjBEPUMzPUE0bnplcj89IDxtaWNoZWwuZGFlbnplckBhbWQuY29tPgotRGF0ZTogV2VkLCAxMCBNYXkgMjAxNyAxNzoyNjowNyArMDkwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZ2FsbGl2bTogRml4IGJ1aWxkIGFnYWluc3QgTExWTSBTVk4gPj0gcjMwMjU4OQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1kZXJlZ2lzdGVyRUhGcmFtZXMgZG9lc24ndCB0YWtlIGFueSBwYXJhbWV0ZXJzIGFueW1vcmUuCi0KLVJldmlld2VkLWJ5OiBWZWRyYW4gTWlsZXRpxIcgPHZlZHJhbkBtaWxldGljLm5ldD4KLVJldmlld2VkLWJ5OiBNYXJlayBPbMWhw6FrIDxtYXJlay5vbHNha0BhbWQuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBzcmMvZ2FsbGl1bS9hdXhpbGlhcnkvZ2FsbGl2bS9scF9ibGRfbWlzYy5jcHAgfCAxMiArKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwIGIvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwCi1pbmRleCAyYTM4OGNiLi4wZTRhNTMxIDEwMDY0NAotLS0tIGEvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwCi0rKysgYi9zcmMvZ2FsbGl1bS9hdXhpbGlhcnkvZ2FsbGl2bS9scF9ibGRfbWlzYy5jcHAKLUBAIC0zNDIsMTQgKzM0MiwyMCBAQCBjbGFzcyBEZWxlZ2F0aW5nSklUTWVtb3J5TWFuYWdlciA6IHB1YmxpYyBCYXNlTWVtb3J5TWFuYWdlciB7Ci0gICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRUhGcmFtZXModWludDhfdCAqQWRkciwgdWludDY0X3QgTG9hZEFkZHIsIHNpemVfdCBTaXplKSB7Ci0gICAgICAgICAgbWdyKCktPnJlZ2lzdGVyRUhGcmFtZXMoQWRkciwgTG9hZEFkZHIsIFNpemUpOwotICAgICAgIH0KLS0gICAgICB2aXJ0dWFsIHZvaWQgZGVyZWdpc3RlckVIRnJhbWVzKHVpbnQ4X3QgKkFkZHIsIHVpbnQ2NF90IExvYWRBZGRyLCBzaXplX3QgU2l6ZSkgewotLSAgICAgICAgIG1ncigpLT5kZXJlZ2lzdGVyRUhGcmFtZXMoQWRkciwgTG9hZEFkZHIsIFNpemUpOwotLSAgICAgIH0KLSAjZWxzZQotICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVIRnJhbWVzKGxsdm06OlN0cmluZ1JlZiBTZWN0aW9uRGF0YSkgewotICAgICAgICAgIG1ncigpLT5yZWdpc3RlckVIRnJhbWVzKFNlY3Rpb25EYXRhKTsKLSAgICAgICB9Ci0gI2VuZGlmCi0rI2lmIEhBVkVfTExWTSA+PSAweDA1MDAKLSsgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWdpc3RlckVIRnJhbWVzKCkgewotKyAgICAgICAgIG1ncigpLT5kZXJlZ2lzdGVyRUhGcmFtZXMoKTsKLSsgICAgICB9Ci0rI2VsaWYgSEFWRV9MTFZNID49IDB4MDMwNAotKyAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZ2lzdGVyRUhGcmFtZXModWludDhfdCAqQWRkciwgdWludDY0X3QgTG9hZEFkZHIsIHNpemVfdCBTaXplKSB7Ci0rICAgICAgICAgbWdyKCktPmRlcmVnaXN0ZXJFSEZyYW1lcyhBZGRyLCBMb2FkQWRkciwgU2l6ZSk7Ci0rICAgICAgfQotKyNlbmRpZgotICAgICAgIHZpcnR1YWwgdm9pZCAqZ2V0UG9pbnRlclRvTmFtZWRGdW5jdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBBYm9ydE9uRmFpbHVyZT10cnVlKSB7Ci0gICAgICAgICAgcmV0dXJuIG1ncigpLT5nZXRQb2ludGVyVG9OYW1lZEZ1bmN0aW9uKE5hbWUsIEFib3J0T25GYWlsdXJlKTsKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9Vc2UtUHl0aG9uLTMtdG8tZXhlY3V0ZS10aGUtc2NyaXB0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9Vc2UtUHl0aG9uLTMtdG8tZXhlY3V0ZS10aGUtc2NyaXB0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjRhYWJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL1VzZS1QeXRob24tMy10by1leGVjdXRlLXRoZS1zY3JpcHRzLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMThjM2U2ODRhODI1OWEwNjQ0MjE0Zjg4YzdlYWQ3ZmEzMTU3M2ZkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBGcmksIDI5IERlYyAyMDE3IDEwOjI3OjU5IC0wMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBQeXRob24gMyB0byBleGVjdXRlIHRoZSBzY3JpcHRzCitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitUaGUgTUVTQSBidWlsZCBzeXN0ZW0gdXNlcyBQeXRob24gMiBidXQgYXMgT0UtQ29yZSBoYXMgbW92ZWQgYXdheSBmcm9tCitpdCwgd2UgY2hhbmdlIGl0IHRvIHVzZSBQeXRob24gMyBpbnN0ZWFkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBjb25maWd1cmF0aW9uIF0KKworU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYjEwN2YwNGMyZS4uMDU1NTQ2MTQyZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTE0LDcgKzExNCw3IEBAIEFDX1BST0dfQ1hYCisgQU1fUFJPR19DQ19DX08KKyBBTV9QUk9HX0FTCisgQVhfQ0hFQ0tfR05VX01BS0UKKy1BQ19DSEVDS19QUk9HUyhbUFlUSE9OMl0sIFtweXRob24yLjcgcHl0aG9uMiBweXRob25dKQorK0FDX0NIRUNLX1BST0dTKFtQWVRIT04yXSwgW3B5dGhvbjMuNSBweXRob24zIHB5dGhvbl0pCisgQUNfUFJPR19TRUQKKyBBQ19QUk9HX01LRElSX1AKKyAKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2gKaW5kZXggYWEzM2ExZS4uZmQ3OTk5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2gKQEAgLTEsMTggKzEsMjQgQEAKLVdoZW4gYnVpbGRpbmcgbGx2bSBmcm9tIGdpdCBvciBzdm4gaXQgZW1iZWRzIHRoZSBzdm4vZ2l0IHJldmlzaW9uIGludG8gaW50ZXJuYWwgdmVyc2lvbiBzdHJpbmcKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitTdWJqZWN0OiBbUEFUQ0hdIFByb3Blcmx5IGdldCBMTFZNIHZlcnNpb24gd2hlbiB1c2luZyBMTFZNIEdpdCByZWxlYXNlcwogCi0kIC9tbnQvYS9vZS9idWlsZC90bXAvd29yay9jb3JlaTctNjQtYmVjLWxpbnV4L21lc2EvMl8xNy4xLjUtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2xpYi9sbHZtNS4wL2xsdm0tY29uZmlnLWhvc3QgLS12ZXJzaW9uCiskIGxsdm0tY29uZmlnLWhvc3QgLS12ZXJzaW9uCiA1LjAuMGdpdC05YTVjMzMzMzg4YwogCi1XZSBuZWVkIHRvIGlnbm9yZSBldmVyeXRoaW5nIGFmdGVyIDUuMC4wIHdoaWNoIGlzIHdoYXQgdGhlIGN1dCBjbWQgaXMgZG9pbmcKK1dlIG5lZWQgdG8gaWdub3JlIGV2ZXJ5dGhpbmcgYWZ0ZXIgNS4wLjAgd2hpY2ggaXMgd2hhdCB0aGUgY3V0IGNtZCBpcworZG9pbmcKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBtZXNhLTE3LjEuNS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtZXNhLTE3LjEuNS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIG1lc2EtMTcuMS41L2NvbmZpZ3VyZS5hYwotQEAgLTk2Nyw3ICs5NjcsNyBAQCBzdHJpcF91bndhbnRlZF9sbHZtX2ZsYWdzKCkgeworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYTAyMTczZjI0NC4uYjEwN2YwNGMyZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtOTk1LDcgKzk5NSw3IEBAIHN0cmlwX3Vud2FudGVkX2xsdm1fZmxhZ3MoKSB7CiAgCiAgbGx2bV9zZXRfZW52aXJvbm1lbnRfdmFyaWFibGVzKCkgewogICAgICBpZiB0ZXN0ICJ4JExMVk1fQ09ORklHIiAhPSB4bm87IHRoZW4KQEAgLTIxLDEyICsyNywxNSBAQAogICAgICAgICAgTExWTV9DUFBGTEFHUz1gc3RyaXBfdW53YW50ZWRfbGx2bV9mbGFncyAiJExMVk1fQ09ORklHIC0tY3BwZmxhZ3MiYAogICAgICAgICAgTExWTV9JTkNMVURFRElSPWAkTExWTV9DT05GSUcgLS1pbmNsdWRlZGlyYAogICAgICAgICAgTExWTV9MSUJESVI9YCRMTFZNX0NPTkZJRyAtLWxpYmRpcmAKLUBAIC0yNTYwLDcgKzI1NjAsNyBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9sbHZtIiA9IHh5ZXM7IHRoZW4KK0BAIC0yNjQ0LDcgKzI2NDQsNyBAQCBkZXRlY3Rfb2xkX2J1Z2d5X2xsdm0oKSB7CisgICAgIGRubCBvdXJzZWx2ZXMuCiAgICAgIGRubCAoU2VlIGh0dHBzOi8vbGx2bS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMykKLSAgICAgaWYgdGVzdCAieCRlbmFibGVfbGx2bV9zaGFyZWRfbGlicyIgPSB4eWVzOyB0aGVuCi0gICAgICAgICBkbmwgV2UgY2FuJ3QgdXNlICRMTFZNX1ZFUlNJT04gYmVjYXVzZSBpdCBoYXMgJ3N2bicgc3RyaXBwZWQgb3V0LAotLSAgICAgICAgTExWTV9TT19OQU1FPUxMVk0tYCRMTFZNX0NPTkZJRyAtLXZlcnNpb25gCi0rICAgICAgICBMTFZNX1NPX05BTUU9TExWTS1gJExMVk1fQ09ORklHIC0tdmVyc2lvbnxjdXQgLWMxLTVgCi0gICAgICAgICBBU19JRihbdGVzdCAtZiAiJExMVk1fTElCRElSL2xpYiRMTFZNX1NPX05BTUUuJElNUF9MSUJfRVhUIl0sIFtsbHZtX2hhdmVfb25lX3NvPXllc10pCisgICAgIGRubCBXZSBjYW4ndCB1c2UgJExMVk1fVkVSU0lPTiBiZWNhdXNlIGl0IGhhcyAnc3ZuJyBzdHJpcHBlZCBvdXQsCistICAgIExMVk1fU09fTkFNRT1MTFZNLWAkTExWTV9DT05GSUcgLS12ZXJzaW9uYAorKyAgICBMTFZNX1NPX05BTUU9TExWTS1gJExMVk1fQ09ORklHIC0tdmVyc2lvbiB8IGN1dCAtYzEtNWAKKyAgICAgQVNfSUYoW3Rlc3QgLWYgIiRMTFZNX0xJQkRJUi9saWIkTExWTV9TT19OQU1FLiRJTVBfTElCX0VYVCJdLCBbbGx2bV9oYXZlX29uZV9zbz15ZXNdKQogIAotICAgICAgICAgaWYgdGVzdCAieCRsbHZtX2hhdmVfb25lX3NvIiA9IHh5ZXM7IHRoZW4KKyAgICAgaWYgdGVzdCAieCRsbHZtX2hhdmVfb25lX3NvIiA9IHh5ZXM7IHRoZW4KKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9yZXBsYWNlX2dsaWJjX2NoZWNrX3dpdGhfbGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvcmVwbGFjZV9nbGliY19jaGVja193aXRoX2xpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjgwZWU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9yZXBsYWNlX2dsaWJjX2NoZWNrX3dpdGhfbGludXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1lbmRpYW5uZXNzIGNoZWNrIGlzIE9TIHdpZGUgYW5kIG5vdCBzcGVjaWZpYyB0byBsaWJjCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIHNyYy91dGlsL3VfZW5kaWFuLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvdXRpbC91X2VuZGlhbi5oIGIvc3JjL3V0aWwvdV9lbmRpYW4uaAotaW5kZXggYjlkNTYzZC4uMmQ1ZWFiOSAxMDA2NDQKLS0tLSBhL3NyYy91dGlsL3VfZW5kaWFuLmgKLSsrKyBiL3NyYy91dGlsL3VfZW5kaWFuLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2lmbmRlZiBVX0VORElBTl9ICi0gI2RlZmluZSBVX0VORElBTl9ICi0gCi0tI2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKEFORFJPSUQpCi0rI2lmIGRlZmluZWQoX19saW51eF9fKQotICNpbmNsdWRlIDxlbmRpYW4uaD4KLSAKLSAjaWYgX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvdnVsa2FuLW1rZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL3Z1bGthbi1ta2Rpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTVlZTVlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvdnVsa2FuLW1rZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gYzc4OTc5ZmQ5NWExYzRmNzMyZjdlNmVkZjBmMzJjNTI0ZTU5NTViOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDEyIEp1bCAyMDE3IDE3OjEwOjA3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW06IGNyZWF0ZSB0YXJnZXQgZGlyZWN0b3JpZXMgd2hlbgotIHJlcXVpcmVkCi0KLUluIG91dC1vZi10cmVlIGJ1aWxkcyBzcmMvaW50ZWwvdnVsa2FuIHdvbid0IGV4aXN0LCBzbyBhbHdheXMgY3JlYXRlIGl0IGJlZm9yZQotd3JpdGluZyBpbnRvIGl0LgotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtIGIvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQotaW5kZXggMzg1N2E1ZGM2Mi4uMjZlOWNkNDEwYyAxMDA2NDQKLS0tLSBhL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLSsrKyBiL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLUBAIC00NCwxMSArNDQsMTMgQEAgRVhUUkFfRElTVCArPSBcCi0gCXZ1bGthbi9UT0RPCi0gCi0gdnVsa2FuL2Rldl9pY2QuanNvbiA6IHZ1bGthbi9kZXZfaWNkLmpzb24uaW4KLSsJJChNS0RJUl9HRU4pCi0gCSQoQU1fVl9HRU4pICQoU0VEKSBcCi0gCQktZSAicyNAYnVpbGRfbGliZGlyQCMke2Fic190b3BfYnVpbGRkaXJ9LyR7TElCX0RJUn0jIiBcCi0gCQk8ICQoc3JjZGlyKS92dWxrYW4vZGV2X2ljZC5qc29uLmluID4gJEAKLSAKLSB2dWxrYW4vaW50ZWxfaWNkLkBob3N0X2NwdUAuanNvbiA6IHZ1bGthbi9pbnRlbF9pY2QuanNvbi5pbgotKwkkKE1LRElSX0dFTikKLSAJJChBTV9WX0dFTikgJChTRUQpIFwKLSAJCS1lICJzI0BpbnN0YWxsX2xpYmRpckAjJHtsaWJkaXJ9IyIgXAotIAkJPCAkKHNyY2RpcikvdnVsa2FuL2ludGVsX2ljZC5qc29uLmluID4gJEAKLS0tIAotMi4xMS4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4zLjguYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjEuNy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTcuMy44LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKaW5kZXggNGYzMWVkMi4uYjUwMWI3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYwpAQCAtMTYsOSArMTYsMTUgQEAKIAogREVQRU5EUyA9ICJleHBhdCBtYWtlZGVwZW5kLW5hdGl2ZSBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgbGlieG1sMi1uYXRpdmUgemxpYiBjaHJwYXRoLXJlcGxhY2VtZW50LW5hdGl2ZSIKIEVYVFJBTkFUSVZFUEFUSCArPSAiY2hycGF0aC1uYXRpdmUiCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbGliZ2xlczEgdmlydHVhbC9saWJnbGVzMiB2aXJ0dWFsL2VnbCB2aXJ0dWFsL21lc2EiCitQUk9WSURFUyA9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ29wZW5nbCcsICd2aXJ0dWFsL2xpYmdsJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2xlcycsICd2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczInLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdlZ2wnLCAndmlydHVhbC9lZ2wnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYm0nLCAndmlydHVhbC9saWJnYm0nLCAnJywgZCl9IFwKKyAgICB2aXJ0dWFsL21lc2EgXAorICAgICIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9uM25hdGl2ZSBnZXR0ZXh0IGRpc3Ryb19mZWF0dXJlc19jaGVjawogCiBBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCB2dWxrYW4iCiAKQEAgLTM0LDcgKzQwLDcgQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgdnVsa2FuJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdvcGVuZ2wgZWdsIGdsZXMgZ2JtIGRyaScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICd4MTEnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAneDExIGRyaTMnLCAnJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB2dWxrYW4nLCAnZHJpMycsICcnLCBkKX0gXAogCQkgICAiCiAKQEAgLTQ1LDcgKzUxLDcgQEAKICMgIngxMSIgcmVxdWlyZXMgIm9wZW5nbCIKIFBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS1nbHgtdGxzLC0tZGlzYWJsZS1nbHgsJHtYMTFfREVQU30iCiBQQUNLQUdFQ09ORklHW3h2bWNdID0gIi0tZW5hYmxlLXh2bWMsLS1kaXNhYmxlLXh2bWMsbGlieHZtYyIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIGxpYmRybSB3YXlsYW5kLXByb3RvY29scyIKIAogRFJJRFJJVkVSUyA9ICJzd3Jhc3QiCiBEUklEUklWRVJTX2FwcGVuZF94ODYgPSAiLHJhZGVvbixyMjAwLG5vdXZlYXUsaTk2NSxpOTE1IgpAQCAtNTksNyArNjUsNyBAQAogVlVMS0FOX0RSSVZFUlMgPSAiIgogVlVMS0FOX0RSSVZFUlNfYXBwZW5kX3g4NiA9ICIsaW50ZWwiCiBWVUxLQU5fRFJJVkVSU19hcHBlbmRfeDg2LTY0ID0gIixpbnRlbCIKLVBBQ0tBR0VDT05GSUdbdnVsa2FuXSA9ICItLXdpdGgtdnVsa2FuLWRyaXZlcnM9JHtWVUxLQU5fRFJJVkVSU30sIC0td2l0aG91dC12dWxrYW4tZHJpdmVycyIKK1BBQ0tBR0VDT05GSUdbdnVsa2FuXSA9ICItLXdpdGgtdnVsa2FuLWRyaXZlcnM9JHtWVUxLQU5fRFJJVkVSU30sIC0td2l0aG91dC12dWxrYW4tZHJpdmVycywgcHl0aG9uMy1tYWtvLW5hdGl2ZSIKIAogUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi0tZW5hYmxlLW9wZW5nbCwgLS1kaXNhYmxlLW9wZW5nbCIKIApAQCAtNzcsMTMgKzgzLDEzIEBACiBHQUxMSVVNRFJJVkVSU19hcHBlbmQgPSIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdpbXgnLCAnLGlteCcsICcnLCBkKX0iCiBHQUxMSVVNRFJJVkVSU19MTFZNMzMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncjYwMCcsICdyYWRlb25zaSxyNjAwJywgJycsIGQpfSIKIFBBQ0tBR0VDT05GSUdbcjYwMF0gPSAiIgotR0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUQgPSAiJHtAYmFzZV92ZXJzaW9uX2xlc3Nfb3JfZXF1YWwoJ01FU0FfTExWTV9SRUxFQVNFJywgJzMuMicsIEZhbHNlLCBsZW4oJyR7R0FMTElVTURSSVZFUlNfTExWTTMzfScpID4gMCwgZCl9IgorR0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUQgPSAiJHtAb2UudXRpbHMudmVyc2lvbl9sZXNzX29yX2VxdWFsKCdNRVNBX0xMVk1fUkVMRUFTRScsICczLjInLCBGYWxzZSwgbGVuKCcke0dBTExJVU1EUklWRVJTX0xMVk0zM30nKSA+IDAsIGQpfSIKIEdBTExJVU1EUklWRVJTX0xMVk0gPSAicjMwMCxzdmdhLG5vdXZlYXUke0AnLCR7R0FMTElVTURSSVZFUlNfTExWTTMzfScgaWYgJHtHQUxMSVVNRFJJVkVSU19MTFZNMzNfRU5BQkxFRH0gZWxzZSAnJ30iCiBHQUxMSVVNRFJJVkVSU19hcHBlbmRfeDg2ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dhbGxpdW0tbGx2bScsICcsJHtHQUxMSVVNRFJJVkVSU19MTFZNfScsICcnLCBkKX0iCiBHQUxMSVVNRFJJVkVSU19hcHBlbmRfeDg2LTY0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dhbGxpdW0tbGx2bScsICcsJHtHQUxMSVVNRFJJVkVSU19MTFZNfScsICcnLCBkKX0iCiAjIGtlZXAgLS13aXRoLWdhbGxpdW0tZHJpdmVycyBzZXBhcmF0ZSwgYmVjYXVzZSB3aGVuIG9ubHkgb25lIG9mIGdhbGxpdW0gdmVyc2lvbnMgaXMgZW5hYmxlZCwgb3RoZXIgMiB3ZXJlIGFkZGluZyAtLXdpdGhvdXQtZ2FsbGl1bS1kcml2ZXJzCiBQQUNLQUdFQ09ORklHW2dhbGxpdW1dICAgICAgPSAiLS1lbmFibGUtdGV4dHVyZS1mbG9hdCAtLXdpdGgtZ2FsbGl1bS1kcml2ZXJzPSR7R0FMTElVTURSSVZFUlN9LCAtLXdpdGhvdXQtZ2FsbGl1bS1kcml2ZXJzIgotTUVTQV9MTFZNX1JFTEVBU0UgPz0gIjUuMCIKK01FU0FfTExWTV9SRUxFQVNFID89ICI2LjAiCiBQQUNLQUdFQ09ORklHW2dhbGxpdW0tbGx2bV0gPSAiLS1lbmFibGUtbGx2bSAtLWVuYWJsZS1sbHZtLXNoYXJlZC1saWJzLCAtLWRpc2FibGUtbGx2bSwgbGx2bSR7TUVTQV9MTFZNX1JFTEVBU0V9IGxsdm0tbmF0aXZlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0AnZWxmdXRpbHMnIGlmICR7R0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUR9IGVsc2UgJyd9IgogZXhwb3J0IFdBTlRfTExWTV9SRUxFQVNFID0gIiR7TUVTQV9MTFZNX1JFTEVBU0V9IgpAQCAtOTksOSArMTA1LDYgQEAKIAogQ0ZMQUdTX2FwcGVuZF9hcm12NSA9ICIgLURNSVNTSU5HXzY0QklUX0FUT01JQ1MiCiAKLSMgTXVsdGlwbGUgdmlydHVhbC9nbCBwcm92aWRlcnMgYmVpbmcgYnVpbHQgYnJlYWtzIHN0YWdpbmcKLUVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgotCiAjIFJlbW92ZSB0aGUgbWVzYSBkZXBlbmRlbmN5IG9uIG1lc2EtZGV2LCBhcyBtZXNhIGlzIGVtcHR5CiBSREVQRU5EU18ke1BOfS1kZXYgPSAiIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4xLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5Y2ZjZTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9tZXNhLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlL21lc2EtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3JlcGxhY2VfZ2xpYmNfY2hlY2tfd2l0aF9saW51eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Z1bGthbi1ta2Rpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWMtZml4LWJ1aWxkLWFmdGVyLUxMVk0tNS4wLVNWTi1yMzAwNzE4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTQwYmI0MjhhMjYzYmQyOGNiZjY0NzhkYWU0NWIyMDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjlmNDcyYTg3NGIxMTIyNDA0ZmEwYmQxM2UyZDZiZjg3ZWIzYjlhZDljMjFkMmYzOTg3MmE5NmQ4M2Q5ZTVmNSIKLQotI2JlY2F1c2Ugd2UgY2Fubm90IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhbGwgYXBwcyB3aWxsIHVzZSBwa2djb25maWcsCi0jbWFrZSBlZ2xwbGF0Zm9ybS5oIGluZGVwZW5kZW50IG9mIE1FU0FfRUdMX05PX1gxMV9IRUFERVIKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2VnbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIHNlZCAtaSAtZSAncy9eI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpJC8jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykgfHwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJzAnLCAnMScsIGQpfS8nICR7RH0ke2luY2x1ZGVkaXJ9L0VHTC9lZ2xwbGF0Zm9ybS5oCi0gICAgZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjMuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjMuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDNmZDNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMy44LmJiCkBAIC0wLDAgKzEsMjMgQEAKK3JlcXVpcmUgJHtCUE59LmluYworCitTUkNfVVJJID0gImh0dHBzOi8vbWVzYS5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZS9tZXNhLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoIFwKKwkgICBmaWxlOi8vVXNlLVB5dGhvbi0zLXRvLWV4ZWN1dGUtdGhlLXNjcmlwdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItaGFyZHdhcmUtZ2xvYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGx2bS1jb25maWctdmVyc2lvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXdpbnN5cy1zdmdhLWRybS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0LWRyaS1Jbml0aWFsaXNlLW1vZGlmaWVyLXRvLUlOVkFMSUQtZm9yLURSSTIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMDNkMWE3OTE1NmFiNjkyNmYyZDI1M2IzNzdlOWQ5ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZjlkOWJmMjgxYzQ4ZTRhOGY1MjI4ODE2NTc3MjYzYjRjNjU1MjQ4ZGM3NjY2ZTc1MDM0YWI0MjI5NTFhNmIxIgorCisjYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKKyNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgc2VkIC1pIC1lICdzL14jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykkLyNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSB8fCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnMCcsICcxJywgZCl9LycgJHtEfSR7aW5jbHVkZWRpcn0vRUdML2VnbHBsYXRmb3JtLmgKKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLURyb3AtaW50cm9zcGVjdGlvbi1tYWNyb3MtZnJvbS1hY2luY2x1ZGUubTQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaAppbmRleCA4MTJkYTIxLi45ZTE2MjZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaApAQCAtNiw3ICs2LDcgQEAKIFRoZXkgdGFrZSBwcmVjZW5kZW5jZSBvdmVyIG91ciBjdXN0b21pemVkIG1hY3JvcywgYW5kIHNvCiBpbnRyb3NwZWN0aW9uIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkuCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW3Vwc3RyZWFtIDVjY2ZlMF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogLS0tCiAgYWNpbmNsdWRlLm00IHwgOTYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMTgsNCArMTE4LDMgQEAKIC1dKQogLS0gCiAyLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JkOWM2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4xNC5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKK0RFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKK3dpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKK3RoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKK2JlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKK2NvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUVuZm9yY2UtcmVjcmVhdGlvbi1vZi1kb2NzLXBhbmdvLnR5cGVzLWl0LWlzLWJ1aWxkLWMucGF0Y2ggXAorIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMThkN2ViOGQ1MmU3ZTQ0NWU3MzNjMTA5ZGRhYTdiNzgiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI5MGFmMWJlYWE3YmY5ZTRjNTJkYjI5ZWMyNTFlYzRmZDBhOGYyY2MxODVkNTIxYWQxZjg4ZDAxYjNhNmExN2UzIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBmb250Y29uZmlnIGZyZWV0eXBlIHZpcnR1YWwvbGliaWNvbnYgY2Fpcm8gaGFyZmJ1enoiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXhmdCwtLXdpdGhvdXQteGZ0LHZpcnR1YWwvbGlieDExIGxpYnhmdCIKKworRVhUUkFfT0VDT05GID0gIiBcCisJICAgICAgICAtLWRpc2FibGUtZGVidWcgXAorCSAgICAgICAgIgorCitMRUFEX1NPTkFNRSA9ICJsaWJwYW5nby0xLjAqIgorTElCViA9ICIxLjguMCIKKworIyBUaGlzIGJpbmFyeSBuZWVkcyB0byBiZSBjb21waWxlZCBmb3IgdGhlIGhvc3QgYXJjaGl0ZWN0dXJlLiAgVGhpcyBpc24ndCBwcmV0dHkhCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJbWFrZSBDQz0iJHtCVUlMRF9DQ30iIENGTEFHUz0iIiBMREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IiBBTV9DUFBGTEFHUz0iJChwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBnbGliLTIuMCkiIGdlbl9hbGxfdW5pY29kZV9MREFERD0iJChwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgZ2xpYi0yLjApIiAtQyAke0J9L3Rlc3RzIGdlbi1hbGwtdW5pY29kZQorCWZpCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9saWJwYW5nbyoke1NPTElCU30iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wYW5nby8ke0xJQlZ9L21vZHVsZXMvKi5sYSIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmVyYXRpb24tZm9udHMgY2FudGFyZWxsLWZvbnRzIgorCitSUFJPVklERVNfJHtQTn0gKz0gInBhbmdvLW1vZHVsZXMgcGFuZ28tbW9kdWxlLWluZGljLWxhbmcgXAorICAgICAgICAgICAgICAgICAgICBwYW5nby1tb2R1bGUtYmFzaWMtZmMgcGFuZ28tbW9kdWxlLWFyYWJpYy1sYW5nIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYzNkMmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKLURFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKLXdpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKLXRoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKLWJlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKLWNvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUVuZm9yY2UtcmVjcmVhdGlvbi1vZi1kb2NzLXBhbmdvLnR5cGVzLWl0LWlzLWJ1aWxkLWMucGF0Y2ggXAotIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNTA3YzY3NDZmYmY1M2ZjOWQ0OGM1NzdmMWUyNjVkZTMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjYTE1MmI3MzgzYTFlOWY3ZmQ3NGFlOTYwMjNkYzY3NzBkYzUwNDM0MTQ3OTNiZmU3NjhmZjA2YjY3NTllNTczIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBmb250Y29uZmlnIGZyZWV0eXBlIHZpcnR1YWwvbGliaWNvbnYgY2Fpcm8gaGFyZmJ1enoiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXhmdCwtLXdpdGhvdXQteGZ0LHZpcnR1YWwvbGlieDExIGxpYnhmdCIKLQotRVhUUkFfQVVUT1JFQ09ORiA9ICIiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotCSAgICAgICAgLS1kaXNhYmxlLWRlYnVnIFwKLQkgICAgICAgICIKLQotTEVBRF9TT05BTUUgPSAibGlicGFuZ28tMS4wKiIKLUxJQlYgPSAiMS44LjAiCi0KLSMgVGhpcyBiaW5hcnkgbmVlZHMgdG8gYmUgY29tcGlsZWQgZm9yIHRoZSBob3N0IGFyY2hpdGVjdHVyZS4gIFRoaXMgaXNuJ3QgcHJldHR5IQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCW1ha2UgQ0M9IiR7QlVJTERfQ0N9IiBDRkxBR1M9IiIgTERGTEFHUz0iJHtCVUlMRF9MREZMQUdTfSIgQU1fQ1BQRkxBR1M9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1jZmxhZ3MgZ2xpYi0yLjApIiBnZW5fYWxsX3VuaWNvZGVfTERBREQ9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1saWJzIGdsaWItMi4wKSIgLUMgJHtCfS90ZXN0cyBnZW4tYWxsLXVuaWNvZGUKLQlmaQotfQotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbGlicGFuZ28qJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGFuZ28vJHtMSUJWfS9tb2R1bGVzLyoubGEiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJlcmF0aW9uLWZvbnRzIGNhbnRhcmVsbC1mb250cyIKLQotUlBST1ZJREVTXyR7UE59ICs9ICJwYW5nby1tb2R1bGVzIHBhbmdvLW1vZHVsZS1pbmRpYy1sYW5nIFwKLSAgICAgICAgICAgICAgICAgICAgcGFuZ28tbW9kdWxlLWJhc2ljLWZjIHBhbmdvLW1vZHVsZS1hcmFiaWMtbGFuZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgppbmRleCBkMjc0YThmLi5iOTM2YWQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIKQEAgLTYsMTAgKzYsMTAgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtY21ha2UtaW5zdGFsbC1iYXNoLWNvbXBsZXRpb25zLWluLXRoZS1yaWdodC1wbGFjZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLVVzZS1GRV9VUFdBUkQtb25seS1pZi1pdHMtZGVmaW5lZC1pbi1mZW52LmgucGF0Y2ggXAogICAgICAgICAgICAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAotIyBGcm9tIDIwMTctMDctMDMKLVNSQ1JFViA9ICJjOGY0ZmQ5ZWViMjk4YTJlZjA4NTU5MjdmMjI2MzRmNzk0ZWYzZWZmIgorIyBGcm9tIDIwMTgtMDItMjYKK1NSQ1JFViA9ICI0Y2UwODg3ZTJmN2Y4NDhkMmJlMmU0MzVhMmQwZjNjODBlNDRlYTNiIgogIyAod2hlbiBQViBnb2VzIGFib3ZlIDEuMCByZW1vdmUgdGhlIHRyYWlsaW5nIHIpCiBQViA9ICIxLjArZ2l0ciR7U1JDUFZ9IgogCkBAIC00MCwxNCArNDAsMTIgQEAKICAgIGZpCiB9CiAKLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke0J9ICdERVNURElSPSR7RH0nIGluc3RhbGwvc3RyaXAKLX0KK09FQ01BS0VfVEFSR0VUX0lOU1RBTEwgPSAiaW5zdGFsbC9zdHJpcCIKIAogUkRFUEVORFNfJHtQTn0gPSAid2FmZmxlIHB5dGhvbjMgcHl0aG9uMy1tYWtvIHB5dGhvbjMtanNvbiBcCi0JcHl0aG9uMy1zdWJwcm9jZXNzIHB5dGhvbjMtbWlzYyBweXRob24zLWltcG9ydGxpYiBcCisJcHl0aG9uMy1taXNjIFwKIAlweXRob24zLXVuaXhhZG1pbiBweXRob24zLXhtbCBweXRob24zLW11bHRpcHJvY2Vzc2luZyBcCi0JcHl0aG9uMy1zaXggcHl0aG9uMy1zaGVsbCBweXRob24zLWlvIHB5dGhvbjMtYXJncGFyc2UgXAorCXB5dGhvbjMtc2l4IHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1pbyBcCiAJcHl0aG9uMy1uZXRzZXJ2ZXIgbWVzYS1kZW1vcyBiYXNoIFwKIAkiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1iaXRzdHJlYW0tdmVyYV8xLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWJpdHN0cmVhbS12ZXJhXzEuMTAuYmIKaW5kZXggYjJlNGNlZi4uNzBiMzJjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWJpdHN0cmVhbS12ZXJhXzEuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWJpdHN0cmVhbS12ZXJhXzEuMTAuYmIKQEAgLTEzLDI2ICsxMywyMCBAQAogCiBGT05UX1BBQ0tBR0VTID0gIiR7UE59IgogCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS90dGYtYml0c3RyZWFtLXZlcmEvMS4xMC90dGYtYml0c3RyZWFtLXZlcmEtJHtQVn0udGFyLmJ6MiIgCi0KLWRvX2luc3RhbGwgKCkgeyAKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtwcmVmaXh9L3NoYXJlL2ZvbnRzL3R0Zi8gCi0gICAgICAgIGZvciBpIGluICoudHRmOyBkbyAKLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAkaSAke0R9JHtwcmVmaXh9L3NoYXJlL2ZvbnRzL3R0Zi8ke2l9IAotICAgICAgICBkb25lIAotCi0JIyBmb250Y29uZmlnIHNoaXBzIHRoaXMgdG9vLiAgbm90IHN1cmUgd2hhdCB0byBkbyBhYm91dCBpdC4KLSAgICAgICAgI2luc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZm9udHMgCi0gICAgICAgICNpbnN0YWxsIC1tIDY0NCBsb2NhbC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2ZvbnRzL2xvY2FsLmNvbmYgCi0KLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3ByZWZpeH0vc2hhcmUvZG9jLyR7QlBOfS8KLSAgICAgICAgZm9yIGkgaW4gKi5UWFQ7IGRvIAotICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICRpICR7RH0ke3ByZWZpeH0vc2hhcmUvZG9jLyR7QlBOfS8kaQotICAgICAgICBkb25lIAotfSAKLQotRklMRVNfJHtQTn0gPSAiL2V0YyAke2RhdGFkaXJ9L2ZvbnRzIgotCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS90dGYtYml0c3RyZWFtLXZlcmEvMS4xMC90dGYtYml0c3RyZWFtLXZlcmEtJHtQVn0udGFyLmJ6MiIKIFNSQ19VUklbbWQ1c3VtXSA9ICJiYjIyYmQ1YjQ2NzVmNWRiZTE3YzY5NjNkOGMwMGVkNiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYjViMjdkZjdiYmIzMTgwMzZlYmRiNzVhY2QzZTk4ZjFiZDZlYjY2MDhmYjcwYTY3ZDQ3OGNkMjQzZDE3OGRjIgorCitkb19pbnN0YWxsICgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9mb250cy90dGYKKyAgICAgICAgZm9yIGkgaW4gKi50dGY7IGRvCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJGkgJHtEfSR7ZGF0YWRpcn0vZm9udHMvdHRmCisgICAgICAgIGRvbmUKKworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2RvY2Rpcn0vJHtCUE59CisgICAgICAgIGZvciBpIGluICouVFhUOyBkbworICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICRpICR7RH0ke2RvY2Rpcn0vJHtCUE59CisgICAgICAgIGRvbmUKK30KKworRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS9mb250cyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E5NmE0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNC4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJPcGVuIEFzc2V0IEltcG9ydCBMaWJyYXJ5IGlzIGEgcG9ydGFibGUgT3BlbiBTb3VyY2UgbGlicmFyeSB0byBpbXBvcnQgXAotICAgICAgICAgICAgICAgdmFyaW91cyB3ZWxsLWtub3duIDNEIG1vZGVsIGZvcm1hdHMgaW4gYSB1bmlmb3JtIG1hbm5lci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFzc2ltcC5vcmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMTE5ZWRlZjA5MTZiMGJkNTExY2IzYzczMTA3NjI3MSIKLQotREVQRU5EUyA9ICJ6bGliIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYXNzaW1wL2Fzc2ltcC5naXQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCi0KLVNSQ1JFViA9ICI1MmM4ZDA2ZjVkNjQ5OGFmZDY2ZGY5ODNkYTM0OGE2YjExMmYxMzE0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURBU1NJTVBfQlVJTERfQVNTSU1QX1RPT0xTPU9GRiAtREFTU0lNUF9CVUlMRF9URVNUUz1PRkYgLURBU1NJTVBfTElCX0lOU1RBTExfRElSPSR7YmFzZWxpYn0iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTRjYmUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMS4wLmJiCkBAIC0wLDAgKzEsMjAgQEAKK0RFU0NSSVBUSU9OID0gIk9wZW4gQXNzZXQgSW1wb3J0IExpYnJhcnkgaXMgYSBwb3J0YWJsZSBPcGVuIFNvdXJjZSBsaWJyYXJ5IHRvIGltcG9ydCBcCisgICAgICAgICAgICAgICB2YXJpb3VzIHdlbGwta25vd24gM0QgbW9kZWwgZm9ybWF0cyBpbiBhIHVuaWZvcm0gbWFubmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYXNzaW1wLm9yZy8iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIxMTllZGVmMDkxNmIwYmQ1MTFjYjNjNzMxMDc2MjcxIgorCitERVBFTkRTID0gInpsaWIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wLmdpdCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworU1JDUkVWID0gIjgwNzk5YmRiZjkwY2U2MjY0NzU2MzU4MTVlZTE4NTM3NzE4YTA1YjEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItREFTU0lNUF9CVUlMRF9BU1NJTVBfVE9PTFM9T0ZGIC1EQVNTSU1QX0JVSUxEX1RFU1RTPU9GRiAtREFTU0lNUF9MSUJfSU5TVEFMTF9ESVI9JHtiYXNlbGlifSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCmluZGV4IDBiODk0MzUuLjVmYzljMmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYgpAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1idWlsZC1kZW1vcy13aXRoLXF1ZXN0aW9uYWJseS1saWNlbnNlZC1kYXRhLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLW9uLXg4Ni5wYXRjaCBcCiAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIFNSQ1JFViA9ICIxOGRmMDBjN2I0Njc3YjA4ODk0ODZlMTY5Nzc4NTdhYTk4Nzk0N2UyIgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiVGhlc2UgYXJlIG5vdCB0aGUgcmVsZWFzZXMgeW91J3JlIGxvb2tpbmcgZm9yIgogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaAppbmRleCAzY2YyNDFkLi5iY2Y4NGE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4vZGVtb3MtRG9uLXQtYnVpbGQtdHJpLW9yLWN1YmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoCkBAIC0xMSw5ICsxMSwxMSBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIAotLS0tIGEvZGVtb3MvQ01ha2VMaXN0cy50eHQKLSsrKyBiL2RlbW9zL0NNYWtlTGlzdHMudHh0Ci1AQCAtNjEsNDYgKzYxLDYgQEAKK0luZGV4OiBnaXQvZGVtb3MvQ01ha2VMaXN0cy50eHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9kZW1vcy9DTWFrZUxpc3RzLnR4dAorKysrIGdpdC9kZW1vcy9DTWFrZUxpc3RzLnR4dAorQEAgLTYzLDQ2ICs2Myw2IEBAIGVsc2VpZihVTklYKQogIGVsc2UoKQogIGVuZGlmKCkKICAKQEAgLTYwLDcgKzYyLDcgQEAKICAKICBpZihXSU4zMikKICAgICAgaW5jbHVkZV9kaXJlY3RvcmllcyAoCi1AQCAtMTE0LDQzICs3NCw2IEBACitAQCAtMTE2LDQzICs3Niw2IEBAIGVuZGlmKCkKICBhZGRfZXhlY3V0YWJsZSgke0FQSV9MT1dFUkNBU0V9aW5mbyB2dWxrYW5pbmZvLmMpCiAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7QVBJX0xPV0VSQ0FTRX1pbmZvICR7TElCUkFSSUVTfSkKICAKQEAgLTEwMyw0ICsxMDUsNCBAQAogLWVuZGlmKCkKICAKICBpZihVTklYKQotICAgICBpbnN0YWxsKFRBUkdFVFMgJHtBUElfTE9XRVJDQVNFfWluZm8gREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0pCisgICAgIGlmKElOU1RBTExfTFZMX0ZJTEVTKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC41MS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC41MS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGUzOWJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNTEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiM0QgZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIGNvbW1vbiBsb2FkZXIiCi1ERVNDUklQVElPTiA9ICJWdWxrYW4gaXMgYSBuZXcgZ2VuZXJhdGlvbiBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgXAotdGhhdCBwcm92aWRlcyBlZmZpY2llbnQgYWNjZXNzIHRvIG1vZGVybiBHUFVzLiBUaGVzZSBwYWNrYWdlcyBcCi1wcm92aWRlIG9ubHkgdGhlIGNvbW1vbiB2ZW5kb3ItYWdub3N0aWMgbGlicmFyeSBsb2FkZXIsIGhlYWRlcnMgYW5kIFwKLXRoZSB2dWxrYW5pbmZvIHV0aWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTk5YzY0N2NhM2Q0ZjZhNGI5ZDg2MjhmNzU3YWFkMTU2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xvYWRlci9sb2FkZXIuYztlbmRsaW5lPTI1O21kNT1hODdjZDU0NDIyOTFjMjNkMWZjZTRlZWNlNGNmZGU5ZCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMuZ2l0O2JyYW5jaD1zZGstMS4wLjUxIFwKLSAgICAgICAgICAgZmlsZTovL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoIFwKLSIKLVNSQ1JFViA9ICI4ZDAyMWU0ZDVhOWY5MTQzNmY0NDYyZGYxZGFmYjIyMjkwOGUyOTZkIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAic2RrLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKLQotaW5oZXJpdCBjbWFrZSBweXRob24zbmF0aXZlIGxpYl9wYWNrYWdlIGRpc3Ryb19mZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKLQotRVhUUkFfT0VDTUFLRSA9ICItREJVSUxEX1dTSV9NSVJfU1VQUE9SVD1PRkYgXAotICAgICAgICAgICAgICAgICAtREJVSUxEX0xBWUVSUz1PRkYgXAotICAgICAgICAgICAgICAgICAtREJVSUxEX1RFU1RTPU9GRiIKLQotIyBtdXN0IGNob29zZSB4MTEgb3Igd2F5bGFuZCBvciBib3RoCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQnLCAnJyAsZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiAtRERFTU9TX1dTSV9TRUxFQ1RJT049WENCLCAtREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T0ZGIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9GRiAtRERFTU9TX1dTSV9TRUxFQ1RJT049V0FZTEFORCwgbGlieGNiIGxpYngxMSBsaWJ4cmFuZHIiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9GRiwgd2F5bGFuZCIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAibWVzYS12dWxrYW4tZHJpdmVycyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzhhODk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC42NS4yLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiM0QgZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIGNvbW1vbiBsb2FkZXIiCitERVNDUklQVElPTiA9ICJWdWxrYW4gaXMgYSBuZXcgZ2VuZXJhdGlvbiBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgXAordGhhdCBwcm92aWRlcyBlZmZpY2llbnQgYWNjZXNzIHRvIG1vZGVybiBHUFVzLiBUaGVzZSBwYWNrYWdlcyBcCitwcm92aWRlIG9ubHkgdGhlIGNvbW1vbiB2ZW5kb3ItYWdub3N0aWMgbGlicmFyeSBsb2FkZXIsIGhlYWRlcnMgYW5kIFwKK3RoZSB2dWxrYW5pbmZvIHV0aWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTk5YzY0N2NhM2Q0ZjZhNGI5ZDg2MjhmNzU3YWFkMTU2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xvYWRlci9sb2FkZXIuYztlbmRsaW5lPTI1O21kNT1hODdjZDU0NDIyOTFjMjNkMWZjZTRlZWNlNGNmZGU5ZCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMuZ2l0O2JyYW5jaD1zZGstMS4wLjY1IFwKKyAgICAgICAgICAgZmlsZTovL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gIjczNDg2YTFhMTY5ZDg2MmQ1MjEwZTJhZDUyMGQ5NTMxOWEyMzgzZmEiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAidnVsa2FuIgorCitpbmhlcml0IGNtYWtlIHB5dGhvbjNuYXRpdmUgbGliX3BhY2thZ2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIngxMSB3YXlsYW5kIgorCitFWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfV1NJX01JUl9TVVBQT1JUPU9GRiBcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfTEFZRVJTPU9GRiBcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfVEVTVFM9T0ZGIgorCisjIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJyAsZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnICxkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9OIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9OIC1EREVNT1NfV1NJX1NFTEVDVElPTj1YQ0IsIC1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PRkYgLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T0ZGIC1EREVNT1NfV1NJX1NFTEVDVElPTj1XQVlMQU5ELCBsaWJ4Y2IgbGlieDExIGxpYnhyYW5kciIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T0ZGLCB3YXlsYW5kIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJtZXNhLXZ1bGthbi1kcml2ZXJzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNS4yLmJiCmluZGV4IGE1MTc5ZGIuLjQzYzNlZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2FmZmxlL3dhZmZsZV8xLjUuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dhZmZsZS93YWZmbGVfMS41LjIuYmIKQEAgLTM1LDYgKzM1LDMgQEAKIAogIyBJIHNheSB2aXJ0dWFsL2xpYmdsLCBhY3R1YWxseSB3YW50cyBlZ2wucGMKIFBBQ0tBR0VDT05GSUdbeDExLWVnbF0gPSAiLUR3YWZmbGVfaGFzX3gxMV9lZ2w9MSwtRHdhZmZsZV9oYXNfeDExX2VnbD0wLHZpcnR1YWwvJHtNTFBSRUZJWH1saWJnbCBsaWJ4Y2IiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzL0ZpbmRXYWZmbGUuY21ha2UgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vY21ha2UvV2FmZmxlLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC8wMDAxLXRvb2xzLUZpeC1yYWNlLWluLWF1dG90b29scy1pbnN0YWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0LzAwMDEtdG9vbHMtRml4LXJhY2UtaW4tYXV0b3Rvb2xzLWluc3RhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2Njc1MzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0LzAwMDEtdG9vbHMtRml4LXJhY2UtaW4tYXV0b3Rvb2xzLWluc3RhbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDVlODg2NGM1YjdhMmUyNThlZWEwNDFiMGVmNjZkYWM3ZmNhYjliN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCA5IEF1ZyAyMDE3IDA5OjQ3OjE0ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRvb2xzOiBGaXggcmFjZSBpbiAoYXV0b3Rvb2xzKSBpbnN0YWxsCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLWV4ZWMvZGF0YSBkaXN0aW5jdGlvbiBpcyBkb25lIGJhc2VkIG9uIGluc3RhbGwgZGlyIHNvIGNvbXBhdCBzY3JpcHRzCi1tdXN0IGJlIG1vdmVkIGluIGV4ZWMgaG9vay4KLQotVGhpcyBzaG91bGQgZml4IHRoaXMgb2NjYXNpb25hbCBmYWlsdXJlOgotfMKgaW5zdGFsbDogY2Fubm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZgotfMKg4oCYL3Vzci9iaW4vbGliaW5wdXQtZGVidWctZXZlbnRzLmNvbXBhdOKAmTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLS0tLQotIHRvb2xzL01ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvTWFrZWZpbGUuYW0gYi90b29scy9NYWtlZmlsZS5hbQotaW5kZXggMmM4NjYwYi4uN2VlOGI5MCAxMDA2NDQKLS0tLSBhL3Rvb2xzL01ha2VmaWxlLmFtCi0rKysgYi90b29scy9NYWtlZmlsZS5hbQotQEAgLTYzLDcgKzYzLDcgQEAgZW5kaWYKLSAKLSBFWFRSQV9ESVNUID0gbWFrZS1wdHJhY2NlbC1ncmFwaHMuc2ggaW5zdGFsbC1jb21wYXQtc2NyaXB0cy5zaCAkKGJpbl9TQ1JJUFRTKQotIAotLWluc3RhbGwtZGF0YS1ob29rOgotK2luc3RhbGwtZXhlYy1ob29rOgotIAkoY2QgJChERVNURElSKSQoYmluZGlyKSAmJiBtdiBsaWJpbnB1dC1saXN0LWRldmljZXMuY29tcGF0IGxpYmlucHV0LWxpc3QtZGV2aWNlcykKLSAJKGNkICQoREVTVERJUikkKGJpbmRpcikgJiYgbXYgbGliaW5wdXQtZGVidWctZXZlbnRzLmNvbXBhdCBsaWJpbnB1dC1kZWJ1Zy1ldmVudHMpCi0gCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMWJhYmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IHRvIGhhbmRsZSBpbnB1dCBkZXZpY2VzIGluIFdheWxhbmQgY29tcG9zaXRvcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmlucHV0LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yMTg0YWVmMzhmZjEzN2VkMzNjZTlhNjNiOWQxZWI4ZiIKLQotREVQRU5EUyA9ICJsaWJldmRldiB1ZGV2IG10ZGV2IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlLyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10b29scy1GaXgtcmFjZS1pbi1hdXRvdG9vbHMtaW5zdGFsbC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4MjQ3ZjBiYjY3MDUyZmZiMjcyYzUwYzNjYjljNTk5OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMzU5MGE5MDM3ZTU2MWE1NzkxYzhiZDNiMzRiZmQzMGZhZDVjYWNkOGNiZWZjMGQ3NWZhZmUzYTQxZDA3MTQ3IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLXdpdGgtbGlidW53aW5kLC0td2l0aG91dC1saWJ1bndpbmQsbGlidW53aW5kIgotUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLS1lbmFibGUtbGlid2Fjb20sLS1kaXNhYmxlLWxpYndhY29tLGxpYndhY29tIgotUEFDS0FHRUNPTkZJR1tndWldID0gIi0tZW5hYmxlLWRlYnVnLWd1aSwtLWRpc2FibGUtZGVidWctZ3VpLGNhaXJvIGd0ayszIgotCi1VREVWRElSID0gImBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YCIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdWRldi1kaXI9JHtVREVWRElSfSAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtdGVzdHMiCi0KLSMgcGFja2FnZSBuYW1lIGNoYW5nZWQgaW4gMS44LjEgdXBncmFkZTogbWFrZSBzdXJlIHBhY2thZ2UgdXBncmFkZXMgd29yawotUlBST1ZJREVTXyR7UE59ID0gImxpYmlucHV0IgotUlJFUExBQ0VTXyR7UE59ID0gImxpYmlucHV0IgotUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJpbnB1dCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjkuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjkuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2E0OWRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuOS40LmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSB0byBoYW5kbGUgaW5wdXQgZGV2aWNlcyBpbiBXYXlsYW5kIGNvbXBvc2l0b3JzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJpbnB1dC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjE4NGFlZjM4ZmYxMzdlZDMzY2U5YTYzYjlkMWViOGYiCisKK0RFUEVORFMgPSAibGliZXZkZXYgdWRldiBtdGRldiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjhiNDNkMDdkMTY5OGZiMjA3YTA0OTJmYzY3NTU0ZDRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiY2RiZDRjNGUzYzJhMmRiMzIyZmJkZjJlZjMyODRmMmU2ZDZmYjdiZTNhZjgwZTZkOGRlNzc4M2Y2NzUxOTAiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYmlucHV0LSg/UDxwdmVyPlxkK1wuXGQrXC4oPyE5XGQrKVxkKykiCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLURsaWJ3YWNvbT10cnVlLC1EbGlid2Fjb209ZmFsc2UsbGlid2Fjb20iCitQQUNLQUdFQ09ORklHW2d1aV0gPSAiLURkZWJ1Zy1ndWk9dHJ1ZSwtRGRlYnVnLWd1aT1mYWxzZSxjYWlybyBndGsrMyIKKworVURFVkRJUiA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdWRldi1kaXI9JHtVREVWRElSfSAtRGRvY3VtZW50YXRpb249ZmFsc2UgLUR0ZXN0cz1mYWxzZSIKKworIyBwYWNrYWdlIG5hbWUgY2hhbmdlZCBpbiAxLjguMSB1cGdyYWRlOiBtYWtlIHN1cmUgcGFja2FnZSB1cGdyYWRlcyB3b3JrCitSUFJPVklERVNfJHtQTn0gPSAibGliaW5wdXQiCitSUkVQTEFDRVNfJHtQTn0gPSAibGliaW5wdXQiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYmlucHV0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY5ZTlmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiQ29sbGVjdGlvbiBvZiBhZGRpdGlvbmFsIFdheWxhbmQgcHJvdG9jb2xzIgotREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBwcm90b2NvbHMgdGhhdCBhZGQgZnVuY3Rpb25hbGl0eSBub3QgXAotYXZhaWxhYmxlIGluIHRoZSBXYXlsYW5kIGNvcmUgcHJvdG9jb2wuIFN1Y2ggcHJvdG9jb2xzIGVpdGhlciBhZGQgXAotY29tcGxldGVseSBuZXcgZnVuY3Rpb25hbGl0eSwgb3IgZXh0ZW5kIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHNvbWUgb3RoZXIgXAotcHJvdG9jb2wgZWl0aGVyIGluIFdheWxhbmQgY29yZSwgb3Igc29tZSBvdGhlciBwcm90b2NvbCBpbiBcCi13YXlsYW5kLXByb3RvY29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM3YjEyYjY3MDJkYTM4Y2EwMjhhY2U1NGFhZTNkNDg0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N0YWJsZS9wcmVzZW50YXRpb24tdGltZS9wcmVzZW50YXRpb24tdGltZS54bWw7ZW5kbGluZT0yNjttZDU9NDY0NmNkN2Q5ZWRjOWZhNTVkYjk0MWYyZDNhN2RjNTMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjg0YTc4NDZjMmI2YTZhM2UyNjVmYzliZTM2NDUzZTYwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3MTljNTFkNzM1NDg2NDk4MzE3MWM1MDgzZTkzYTcyYWM5OTIyOWUyYjQ2MGM0YmIxMDUxM2RlMDg4MzljMGEiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VTID0gIiR7UE59IgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3dheWxhbmQtcHJvdG9jb2xzLnBjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWYxZWUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTMuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCithdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCitjb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCitwcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKK3dheWxhbmQtcHJvdG9jb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMjkzMTIxNDlkYWZjZDRhMGU3MzliYTk0OTk1YTU3NGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDc1OGJjODAwOGQ1MzMyZjQzMWIyYTg0ZmVhN2RlNjRkOTcxY2UyNzBlZDIwODIwNmEwOThmZjJlYmM2OGYzOCIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvZml4cGF0aGlucGNmaWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDM1MjZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvZml4cGF0aGlucGNmaWxlcy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGaXggd2F5bGFuZC1jbGllbnQgYW5kIHdheWxhbmQtc2Nhbm5lciBwYyBmaWxlcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogRmFiaWVuIExhaG91ZGVyZSA8ZmFiaWVuLmxhaG91ZGVyZUBjb2xsYWJvcmEuY28udWs+CisKK0luZGV4OiB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1jbGllbnQucGMuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3YXlsYW5kLTEuMTQuMC5vcmlnL3NyYy93YXlsYW5kLWNsaWVudC5wYy5pbgorKysrIHdheWxhbmQtMS4xNC4wL3NyYy93YXlsYW5kLWNsaWVudC5wYy5pbgorQEAgLTEsNyArMSw3IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorIGRhdGFyb290ZGlyPUBkYXRhcm9vdGRpckAKKy1wa2dkYXRhZGlyPUBkYXRhZGlyQC9AUEFDS0FHRUAKKytwa2dkYXRhZGlyPSR7cGNfc3lzcm9vdGRpcn1AZGF0YWRpckAvQFBBQ0tBR0VACisgbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAKK0luZGV4OiB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1zY2FubmVyLnBjLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2F5bGFuZC0xLjE0LjAub3JpZy9zcmMvd2F5bGFuZC1zY2FubmVyLnBjLmluCisrKysgd2F5bGFuZC0xLjE0LjAvc3JjL3dheWxhbmQtc2Nhbm5lci5wYy5pbgorQEAgLTIsNyArMiw3IEBAIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKyBkYXRhcm9vdGRpcj1AZGF0YXJvb3RkaXJACisgcGtnZGF0YWRpcj1AZGF0YWRpckAvQFBBQ0tBR0VACistd2F5bGFuZF9zY2FubmVyPUBiaW5kaXJAL3dheWxhbmQtc2Nhbm5lcgorK3dheWxhbmRfc2Nhbm5lcj13YXlsYW5kLXNjYW5uZXIKKyAKKyBOYW1lOiBXYXlsYW5kIFNjYW5uZXIKKyBEZXNjcmlwdGlvbjogV2F5bGFuZCBzY2FubmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjEzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5Mzk2YjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJXYXlsYW5kLCBhIHByb3RvY29sIGJldHdlZW4gYSBjb21wb3NpdG9yIGFuZCBjbGllbnRzIgotREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBpcyBhIHByb3RvY29sIGZvciBhIGNvbXBvc2l0b3IgdG8gdGFsayB0byBpdHMgY2xpZW50cyBcCi1hcyB3ZWxsIGFzIGEgQyBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcHJvdG9jb2wuIFRoZSBjb21wb3NpdG9yIGNhbiBiZSBcCi1hIHN0YW5kYWxvbmUgZGlzcGxheSBzZXJ2ZXIgcnVubmluZyBvbiBMaW51eCBrZXJuZWwgbW9kZXNldHRpbmcgYW5kIGV2ZGV2IFwKLWlucHV0IGRldmljZXMsIGFuIFggYXBwbGljYXRpb24sIG9yIGEgd2F5bGFuZCBjbGllbnQgaXRzZWxmLiBUaGUgY2xpZW50cyBjYW4gXAotYmUgdHJhZGl0aW9uYWwgYXBwbGljYXRpb25zLCBYIHNlcnZlcnMgKHJvb3RsZXNzIG9yIGZ1bGxzY3JlZW4pIG9yIG90aGVyIFwKLWRpc3BsYXkgc2VydmVycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIzMWQ4ZjUzYjZhYWYyYjQ5ODVkN2RkNzgxMGE3MGQxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy93YXlsYW5kLXNlcnZlci5jO2VuZGxpbmU9MjQ7bWQ1PWI4ZTA0NjE2NGE3NjZiYjFlZGU4YmEzOGU5ZGNkN2NlIgotCi1ERVBFTkRTID0gImV4cGF0IGxpYnhtbDIgbGliZmZpIHdheWxhbmQtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjYWUxNTJlZDk1NmRhNmRlNTNmOTcyN2JjMWM0NTAzOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OWIwNTJjMDMxYTYxZTg5YWY3Y2M4NzgwODkzZDBkYTFlMzAxNDkyMzUyYWE0NDlkZWU5MzQ1MDQzZTZmZTUxIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0td2l0aC1ob3N0LXNjYW5uZXIiCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0tZGlzYWJsZS1saWJyYXJpZXMiCi0KLSMgV2F5bGFuZCBpbnN0YWxscyBhIE00IG1hY3JvIGZvciBvdGhlciBwcm9qZWN0cyB0byB1c2UsIHdoaWNoIHVzZXMgdGhlIHRhcmdldAotIyBwa2ctY29uZmlnIHRvIGZpbmQgZmlsZXMuICBSZXBsYWNlIHBrZy1jb25maWcgd2l0aCBwa2ctY29uZmlnLW5hdGl2ZS4KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgc2VkIC1lICdzLFBLR19DSEVDS19NT0RVTEVTKC4qKSwsZycgXAotICAgICAgLWUgJ3MsJFBLR19DT05GSUcscGtnLWNvbmZpZy1uYXRpdmUsZycgXAotICAgICAgLWkgJHtEfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00Ci19Ci0KLXN5c3Jvb3Rfc3RhZ2VfYWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgewotCXJtICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00Ci0JY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNCAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsLwotfQotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vd2F5bGFuZCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhOWZmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE0LjAuYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJXYXlsYW5kLCBhIHByb3RvY29sIGJldHdlZW4gYSBjb21wb3NpdG9yIGFuZCBjbGllbnRzIgorREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBpcyBhIHByb3RvY29sIGZvciBhIGNvbXBvc2l0b3IgdG8gdGFsayB0byBpdHMgY2xpZW50cyBcCithcyB3ZWxsIGFzIGEgQyBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcHJvdG9jb2wuIFRoZSBjb21wb3NpdG9yIGNhbiBiZSBcCithIHN0YW5kYWxvbmUgZGlzcGxheSBzZXJ2ZXIgcnVubmluZyBvbiBMaW51eCBrZXJuZWwgbW9kZXNldHRpbmcgYW5kIGV2ZGV2IFwKK2lucHV0IGRldmljZXMsIGFuIFggYXBwbGljYXRpb24sIG9yIGEgd2F5bGFuZCBjbGllbnQgaXRzZWxmLiBUaGUgY2xpZW50cyBjYW4gXAorYmUgdHJhZGl0aW9uYWwgYXBwbGljYXRpb25zLCBYIHNlcnZlcnMgKHJvb3RsZXNzIG9yIGZ1bGxzY3JlZW4pIG9yIG90aGVyIFwKK2Rpc3BsYXkgc2VydmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIzMWQ4ZjUzYjZhYWYyYjQ5ODVkN2RkNzgxMGE3MGQxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy93YXlsYW5kLXNlcnZlci5jO2VuZGxpbmU9MjQ7bWQ1PWI4ZTA0NjE2NGE3NjZiYjFlZGU4YmEzOGU5ZGNkN2NlIgorCitERVBFTkRTID0gImV4cGF0IGxpYnhtbDIgbGliZmZpIHdheWxhbmQtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisJICAgZmlsZTovL2ZpeHBhdGhpbnBjZmlsZXMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDIzNWY2MDc1YzMyYzNiZTYxY2ZmOTRmYTBiOWYxMDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQ4MGNhYmMwOTYxYTc1OWE0MjA5MmUyYzM5YWFiZmMxZWM5YTEzYzg2Yzk4YmJlMmI4MTJmMDA4ZGEyN2FiOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLXdpdGgtaG9zdC1zY2FubmVyIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtbGlicmFyaWVzIgorCisjIFdheWxhbmQgaW5zdGFsbHMgYSBNNCBtYWNybyBmb3Igb3RoZXIgcHJvamVjdHMgdG8gdXNlLCB3aGljaCB1c2VzIHRoZSB0YXJnZXQKKyMgcGtnLWNvbmZpZyB0byBmaW5kIGZpbGVzLiAgUmVwbGFjZSBwa2ctY29uZmlnIHdpdGggcGtnLWNvbmZpZy1uYXRpdmUuCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgIHNlZCAtZSAncyxQS0dfQ0hFQ0tfTU9EVUxFUyguKiksLGcnIFwKKyAgICAgIC1lICdzLCRQS0dfQ09ORklHLHBrZy1jb25maWctbmF0aXZlLGcnIFwKKyAgICAgIC1pICR7RH0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAorfQorCitzeXNyb290X3N0YWdlX2FsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwlybSAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAorCWNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQgJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC8KK30KKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyoke1NPTElCU30iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfSAke2RhdGFkaXJ9L3dheWxhbmQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjRkNzljLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDFjZmMxNDM0YTVkMzg1YTc0ZGU1OTNlYzc2MDE2NzRkYmEzOWUyZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCAxMSBNYXkgMjAxNiAxNjoxNjozMCArMDMwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IEZpeCB3YXlsYW5kLXByb3RvY29scyBwYXRoCi0KLVRoZSB3YXlsYW5kLXByb3RvY29scyBkaXJlY3RvcnkgaXMgdXNlZCBkdXJpbmcgYnVpbGQ6IEZpeCB0aGUgcGF0aAotdG8gcG9pbnQgdG8gc3lzcm9vdCBzcGVjaWZpZWQgaW4gcmVjaXBlLgotCi1Ob3JtYWxseSBQS0dfQ09ORklHX1NZU1JPT1RfRElSIGNvdWxkIGJlIHVzZWQgaW4gY29uZmlndXJlLmFjIGJ1dCB0aGF0Ci1icmVha3MgbXVsdGlsaWIgd2VzdG9uIGFzIGl0IHdvdWxkIHBvaW50IHRvIG11bHRpbGliIHN5c3Jvb3Qgd2hlbiB0aGUKLShhbGxhcmNoKSB3YXlsYW5kLXByb3RvY29scyBpcyBhY3R1YWxseSBpbiB0aGUgbWFjaGluZSBzeXNyb290LgotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xODcsNyArMTg3LDcgQEAgUEtHX0NIRUNLX01PRFVMRVMoTElCSU5QVVRfQkFDS0VORCwgW2xpYgotIFBLR19DSEVDS19NT0RVTEVTKENPTVBPU0lUT1IsIFskQ09NUE9TSVRPUl9NT0RVTEVTXSkKLSAKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhXQVlMQU5EX1BST1RPQ09MUywgW3dheWxhbmQtcHJvdG9jb2xzID49IDEuN10sCi0tCQkgIFthY193YXlsYW5kX3Byb3RvY29sc19wa2dkYXRhZGlyPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgXSkKLSsJCSAgW2FjX3dheWxhbmRfcHJvdG9jb2xzX3BrZ2RhdGFkaXI9JHtXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUn1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYF0pCi0gQUNfU1VCU1QoV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUiwgJGFjX3dheWxhbmRfcHJvdG9jb2xzX3BrZ2RhdGFkaXIpCi0gCi0gQUNfQVJHX0VOQUJMRSh3YXlsYW5kLWNvbXBvc2l0b3IsIFsgIC0tZW5hYmxlLXdheWxhbmQtY29tcG9zaXRvcl0sLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLW1ha2UtZXJyb3ItcG9ydGFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaAppbmRleCBlMjIxM2FjLi4wNjcxYTQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaApAQCAtMTYsOSArMTYsMTEgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3dlc3Rvbi1lcnJvci5oCiAKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjAsNiArNjAsOCBAQCBBQ19DSEVDS19ERUNMKENMT0NLX01PTk9UT05JQyxbXSwKK0luZGV4OiB3ZXN0b24tMy4wLjAvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2VzdG9uLTMuMC4wLm9yaWcvY29uZmlndXJlLmFjCisrKysgd2VzdG9uLTMuMC4wL2NvbmZpZ3VyZS5hYworQEAgLTEwMyw2ICsxMDMsOCBAQCBBQ19DSEVDS19ERUNMKENMT0NLX01PTk9UT05JQyxbXSwKICAJICAgICAgW1sjaW5jbHVkZSA8dGltZS5oPl1dKQogIEFDX0NIRUNLX0hFQURFUlMoW2V4ZWNpbmZvLmhdKQogIApAQCAtMjYsOSArMjgsMTEgQEAKICsKICBBQ19DSEVDS19GVU5DUyhbbWtvc3RlbXAgc3RyY2hybnVsIGluaXRncm91cHMgcG9zaXhfZmFsbG9jYXRlXSkKICAKLSBDT01QT1NJVE9SX01PRFVMRVM9IndheWxhbmQtc2VydmVyID49ICRXQVlMQU5EX1BSRVJFUV9WRVJTSU9OIHBpeG1hbi0xID49IDAuMjUuMiIKKyAjIGNoZWNrIGZvciBsaWJkcm0gYXMgYSBidWlsZC10aW1lIGRlcGVuZGVuY3kgb25seQorSW5kZXg6IHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBiL2xpYndlc3Rvbi93ZXN0b24tZXJyb3IuaAorKysrIHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmgKIEBAIC0wLDAgKzEsMjAgQEAKICsjaWZuZGVmIF9XRVNUT05fRVJST1JfSAogKyNkZWZpbmUgX1dFU1RPTl9FUlJPUl9ICkBAIC01MCw4ICs1NCwxMCBAQAogKwogKyNlbmRpZgogKwotLS0tIGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwotKysrIGIvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYworSW5kZXg6IHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2VzdG9uLTMuMC4wLm9yaWcvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYworKysrIHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCiBAQCAtMzMsNyArMzMsNiBAQAogICNpbmNsdWRlIDxwb2xsLmg+CiAgI2luY2x1ZGUgPGVycm5vLmg+CkBAIC02MCw3ICs2Niw3IEBACiAgI2luY2x1ZGUgPGdldG9wdC5oPgogIAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLUBAIC01OSw2ICs1OCw3IEBACitAQCAtNjAsNiArNTksNyBAQAogICNlbmRpZgogIAogICNpbmNsdWRlICJ3ZXN0b24tbGF1bmNoLmgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL2ZpeC1taXNzaW5nLWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vZml4LW1pc3NpbmctaGVhZGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YzBkNGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL2ZpeC1taXNzaW5nLWhlYWRlci5wYXRjaApAQCAtMCwwICsxLDMwIEBACitPbiB0aGUgbXVzbCBDIGxpYnJhcnksIHRlc3RzL3RpbWVzcGVjLXRleHQuYyBkb2VzIG5vdCBidWlsZCwgd2l0aCB0aGUKK2ZvbGxvd2luZyBlcnJvcjoKKworICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSB0ZXN0cy90aW1lc3BlYy10ZXN0LmM6MzY6MDoKKyAgICAuL3NoYXJlZC90aW1lc3BlYy11dGlsLmg6NDE6MjE6IHdhcm5pbmc6IOKAmHN0cnVjdCB0aW1lc3BlY+KAmSBkZWNsYXJlZAorICAgIGluc2lkZSBwYXJhbWV0ZXIgbGlzdCB3aWxsIG5vdCBiZSB2aXNpYmxlIG91dHNpZGUgb2YgdGhpcyBkZWZpbml0aW9uCisgICAgb3IgZGVjbGFyYXRpb24KKyAgICAgdGltZXNwZWNfc3ViKHN0cnVjdCB0aW1lc3BlYyAqciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgorICAgWy4uLl0KKworSW5kZWVkLCBzdHJ1Y3QgdGltZXNwZWMgaXMgZGVmaW5lZCBpbiB0aW1lLmgsIHNvIHdlIG11c3QgaW5jbHVkZSBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZmE0MWJkZmJjMGI5NjJmZDczYjg5ZjAxYWFiMWE1MzcwYzljMjhlYl0KKworU2lnbmVkLW9mZi1ieTogIllhbm4gRS4gTU9SSU4iIDx5YW5uLm1vcmluLjE5OThAZnJlZS5mcj4KK1Jldmlld2VkLWJ5OiBQZWtrYSBQYWFsYW5lbiA8cGVra2EucGFhbGFuZW5AY29sbGFib3JhLmNvLnVrPgorCitJbmRleDogd2VzdG9uLTMuMC4wL3NoYXJlZC90aW1lc3BlYy11dGlsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZXN0b24tMy4wLjAub3JpZy9zaGFyZWQvdGltZXNwZWMtdXRpbC5oCisrKysgd2VzdG9uLTMuMC4wL3NoYXJlZC90aW1lc3BlYy11dGlsLmgKK0BAIC0yOCw2ICsyOCw3IEBACisgCisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKysjaW5jbHVkZSA8dGltZS5oPgorIAorICNkZWZpbmUgTlNFQ19QRVJfU0VDIDEwMDAwMDAwMDAKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZTFkMDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoCkBAIC0wLDAgKzEsNTUgQEAKK011bHRpLXBsYW5lIHN1Yi1zYW1wbGVkIHRleHR1cmVzIGhhdmUgcGFydGlhbCB3aWR0aC9oZWlnaHQsIGUuZy4KK1lVVjQyMC9JNDIwIGhhcyBhIGZ1bGwtc2l6ZSBZIHBsYW5lLCBmb2xsb3dlZCBieSBhIGhhbGYtd2lkdGgvaGVpZ2h0IFUKK3BsYW5lLCBhbmQgYSBoYWxmLXdpZHRoL2hlaWdodCBWIHBsYW5lLgorCit6d3BfbGludXhfZG1hYnVmX3YxIGFsbG93cyBjbGllbnRzIHRvIHBhc3MgYW4gZXhwbGljaXQgcGl0Y2ggZm9yIGVhY2gKK3BsYW5lLCBidXQgZm9yIHdsX3NobSB0aGlzIG11c3QgYmUgaW5mZXJyZWQuIGdsLXJlbmRlcmVyIHdhcyBjb3JyZWN0bHkKK2FjY291bnRpbmcgZm9yIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHdoZW4gc3Vic2FtcGxpbmcsIGJ1dCB0aGUgcGl0Y2ggd2FzCitiZWluZyB0YWtlbiBhcyB0aGUgcGl0Y2ggZm9yIHRoZSBmaXJzdCBwbGFuZS4KKworVGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZW1lbnRzIGZvciBHU3RyZWFtZXIncyB3YXlsYW5kc2luaywgaW4KK3BhcnRpY3VsYXIsIGFzIHdlbGwgYXMgb3RoZXIgY2xpZW50cy4gRml4IHRoZSBTSE0gdXBsb2FkIHBhdGggdG8KK2NvcnJlY3RseSBzZXQgdGhlIHBpdGNoIGZvciBlYWNoIHBsYW5lLCBhY2NvcmRpbmcgdG8gc3Vic2FtcGxpbmcuCisKK1Rlc3RlZCB3aXRoOgorICAkIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIHdheWxhbmRzaW5rCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xODA3NjcvXQorCitTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgU3RvbmUgPGRhbmllbHNAY29sbGFib3JhLmNvbT4KK0ZpeGVzOiBmZGVlZmU0MjQxOCAoImdsLXJlbmRlcmVyOiBhZGQgc3VwcG9ydCBvZiBXTF9TSE1fRk9STUFUX1lVVjQyMCIpCitSZXBvcnRlZC1ieTogRmFiaWVuIExhaG91ZGVyZSA8ZmFiaWVuLmxhaG91ZGVyZUBjb2xsYWJvcmEuY28udWs+CitCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMDYzCisKKy0tLQorIGxpYndlc3Rvbi9nbC1yZW5kZXJlci5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jIGIvbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMKK2luZGV4IDI0NGNlMzA5Li40MGJmMGJiNiAxMDA2NDQKKy0tLSBhL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jCisrKysgYi9saWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYworQEAgLTE0NDUsMTQgKzE0NDUsMTMgQEAgZ2xfcmVuZGVyZXJfZmx1c2hfZGFtYWdlKHN0cnVjdCB3ZXN0b25fc3VyZmFjZSAqc3VyZmFjZSkKKyAJCWdvdG8gZG9uZTsKKyAJfQorIAorLQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RIX0VYVCwgZ3MtPnBpdGNoKTsKKy0KKyAJaWYgKGdzLT5uZWVkc19mdWxsX3VwbG9hZCkgeworIAkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhFTFNfRVhULCAwKTsKKyAJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XU19FWFQsIDApOworIAkJd2xfc2htX2J1ZmZlcl9iZWdpbl9hY2Nlc3MoYnVmZmVyLT5zaG1fYnVmZmVyKTsKKyAJCWZvciAoaiA9IDA7IGogPCBncy0+bnVtX3RleHR1cmVzOyBqKyspIHsKKyAJCQlnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGdzLT50ZXh0dXJlc1tqXSk7CisrCQkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSF9FWFQsIGdzLT5waXRjaCAvIGdzLT5oc3ViW2pdKTsKKyAJCQlnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKKyAJCQkJICAgICBncy0+Z2xfZm9ybWF0W2pdLAorIAkJCQkgICAgIGdzLT5waXRjaCAvIGdzLT5oc3ViW2pdLAorQEAgLTE0NzcsNiArMTQ3Niw3IEBAIGdsX3JlbmRlcmVyX2ZsdXNoX2RhbWFnZShzdHJ1Y3Qgd2VzdG9uX3N1cmZhY2UgKnN1cmZhY2UpCisgCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1NfRVhULCByLnkxKTsKKyAJCWZvciAoaiA9IDA7IGogPCBncy0+bnVtX3RleHR1cmVzOyBqKyspIHsKKyAJCQlnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGdzLT50ZXh0dXJlc1tqXSk7CisrCQkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSF9FWFQsIGdzLT5waXRjaCAvIGdzLT5oc3ViW2pdKTsKKyAJCQlnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKKyAJCQkJCXIueDEgLyBncy0+aHN1YltqXSwKKyAJCQkJCXIueTEgLyBncy0+dnN1YltqXSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzIuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGIwN2JkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMi4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJXZXN0b24sIGEgV2F5bGFuZCBjb21wb3NpdG9yIgotREVTQ1JJUFRJT04gPSAiV2VzdG9uIGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3OWVlOWU2NmJiMGY5NWQzMzg2YTdhY2FlNzgwYjcwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYndlc3Rvbi9jb21wb3NpdG9yLmM7ZW5kbGluZT0yNjttZDU9ZTM0MmRmNzQ5MTc0YThlZTExMDY1NTgzMTU3YzdhMzgiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5wbmcgXAotICAgICAgICAgICBmaWxlOi8vd2VzdG9uLmRlc2t0b3AgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3h3YXlsYW5kLndlc3Rvbi1zdGFydCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjE1ZjM4OTQ1OTQyYmYyYTkxZmUyNjg3MTQ1ZmI0YzdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0ZTQ0NmFjMjdmMTE4MTk2ZjE2MDlkYWI4OWJiM2NiM2U4MTY1MmQ5ODE0MTRhZDg2MGU3MzNiMzU1MzY1ZDgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1c2VyYWRkIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1ERVBFTkRTID0gImxpYnhrYmNvbW1vbiBnZGstcGl4YnVmIHBpeG1hbiBjYWlybyBnbGliLTIuMCBqcGVnIgotREVQRU5EUyArPSAid2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJpbnB1dCB2aXJ0dWFsL2VnbCBwYW5nbyB3YXlsYW5kLW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNldHVpZC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtcmRwLWNvbXBvc2l0b3IgXAotICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSPSR7UkVDSVBFX1NZU1JPT1R9IFwKLSAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3FlbXV4ODYgPSAiXAotCQlXRVNUT05fTkFUSVZFX0JBQ0tFTkQ9ZmJkZXYtYmFja2VuZC5zbyBcCi0JCSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfcWVtdXg4Ni02NCA9ICJcCi0JCVdFU1RPTl9OQVRJVkVfQkFDS0VORD1mYmRldi1iYWNrZW5kLnNvIFwKLQkJIgotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdrbXMgZmJkZXYgd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQgeDExJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICBjbGllbnRzIGxhdW5jaCIKLSMKLSMgQ29tcG9zaXRvciBjaG9pY2VzCi0jCi0jIFdlc3RvbiBvbiBLTVMKLVBBQ0tBR0VDT05GSUdba21zXSA9ICItLWVuYWJsZS1kcm0tY29tcG9zaXRvciwtLWRpc2FibGUtZHJtLWNvbXBvc2l0b3IsZHJtIHVkZXYgdmlydHVhbC9tZXNhIG10ZGV2IgotIyBXZXN0b24gb24gV2F5bGFuZCAobmVzdGVkIFdlc3RvbikKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZC1jb21wb3NpdG9yLC0tZGlzYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsdmlydHVhbC9tZXNhIgotIyBXZXN0b24gb24gWDExCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXgxMS1jb21wb3NpdG9yLHZpcnR1YWwvbGlieDExIGxpYnhjYiBsaWJ4Y2IgbGlieGN1cnNvciBjYWlybyIKLSMgSGVhZGxlc3MgV2VzdG9uCi1QQUNLQUdFQ09ORklHW2hlYWRsZXNzXSA9ICItLWVuYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yLC0tZGlzYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yIgotIyBXZXN0b24gb24gZnJhbWVidWZmZXIKLVBBQ0tBR0VDT05GSUdbZmJkZXZdID0gIi0tZW5hYmxlLWZiZGV2LWNvbXBvc2l0b3IsLS1kaXNhYmxlLWZiZGV2LWNvbXBvc2l0b3IsdWRldiBtdGRldiIKLSMgd2VzdG9uLWxhdW5jaAotUEFDS0FHRUNPTkZJR1tsYXVuY2hdID0gIi0tZW5hYmxlLXdlc3Rvbi1sYXVuY2gsLS1kaXNhYmxlLXdlc3Rvbi1sYXVuY2gsZHJtIgotIyBWQS1BUEkgZGVza3RvcCByZWNvcmRlcgotUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGktcmVjb3JkZXIsLS1kaXNhYmxlLXZhYXBpLXJlY29yZGVyLGxpYnZhIgotIyBXZXN0b24gd2l0aCBFR0wgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCAtLWVuYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsLS1kaXNhYmxlLWVnbCAtLWRpc2FibGUtc2ltcGxlLWVnbC1jbGllbnRzLHZpcnR1YWwvZWdsIgotIyBXZXN0b24gd2l0aCBjYWlybyBnbGVzdjIgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tjYWlyby1nbGVzdjJdID0gIi0td2l0aC1jYWlyby1nbGVzdjIsLS13aXRoLWNhaXJvPWltYWdlLGNhaXJvIgotIyBXZXN0b24gd2l0aCBsY21zIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbbGNtc10gPSAiLS1lbmFibGUtbGNtcywtLWRpc2FibGUtbGNtcyxsY21zIgotIyBXZXN0b24gd2l0aCB3ZWJwIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbd2VicF0gPSAiLS13aXRoLXdlYnAsLS13aXRob3V0LXdlYnAsbGlid2VicCIKLSMgV2VzdG9uIHdpdGggdW53aW5kaW5nIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLWVuYWJsZS1saWJ1bndpbmQsLS1kaXNhYmxlLWxpYnVud2luZCxsaWJ1bndpbmQiCi0jIFdlc3RvbiB3aXRoIHN5c3RlbWQtbG9naW4gc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLWxvZ2luLC0tZGlzYWJsZS1zeXN0ZW1kLWxvZ2luLHN5c3RlbWQgZGJ1cyIKLSMgV2VzdG9uIHdpdGggWHdheWxhbmQgc3VwcG9ydCAocmVxdWlyZXMgWDExIGFuZCBXYXlsYW5kKQotUEFDS0FHRUNPTkZJR1t4d2F5bGFuZF0gPSAiLS1lbmFibGUteHdheWxhbmQsLS1kaXNhYmxlLXh3YXlsYW5kIgotIyBjb2xvcmQgQ01TIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbY29sb3JkXSA9ICItLWVuYWJsZS1jb2xvcmQsLS1kaXNhYmxlLWNvbG9yZCxjb2xvcmQiCi0jIENsaWVudHMgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tjbGllbnRzXSA9ICItLWVuYWJsZS1jbGllbnRzIC0tZW5hYmxlLXNpbXBsZS1jbGllbnRzIC0tZW5hYmxlLWRlbW8tY2xpZW50cy1pbnN0YWxsLC0tZGlzYWJsZS1jbGllbnRzIC0tZGlzYWJsZS1zaW1wbGUtY2xpZW50cyIKLSMgV2VzdG9uIHdpdGggUEFNIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFdlc3RvbiBkb2Vzbid0IG5lZWQgdGhlIC5sYSBmaWxlcyB0byBsb2FkIG1vZHVsZXMsIHNvIHdpcGUgdGhlbQotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L2xpYndlc3Rvbi0yLyoubGEKLQotCSMgSWYgWDExLCBzaGlwIGEgZGVza3RvcCBmaWxlIHRvIGxhdW5jaCBpdAotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucwotCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCi0KLQkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKLQkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5wbmcgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCi0JZmkKLQotCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCi0JCWluc3RhbGwgLURtIDY0NCAke1dPUktESVJ9L3h3YXlsYW5kLndlc3Rvbi1zdGFydCAke0R9JHtkYXRhZGlyfS93ZXN0b24tc3RhcnQveHdheWxhbmQKLQlmaQotfQotCi1QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAnJHtQTn0teHdheWxhbmQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICBsaWJ3ZXN0b24tMiAke1BOfS1leGFtcGxlcyIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3dlc3RvbiAke2JpbmRpcn0vd2VzdG9uLXRlcm1pbmFsICR7YmluZGlyfS93ZXN0b24taW5mbyAke2JpbmRpcn0vd2VzdG9uLWxhdW5jaCAke2JpbmRpcn0vd2NhcC1kZWNvZGUgJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vJHtCUE59Lyouc28gJHtkYXRhZGlyfSIKLQotRklMRVNfbGlid2VzdG9uLTIgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtsaWJkaXJ9L2xpYndlc3Rvbi0yLyouc28iCi1TVU1NQVJZX2xpYndlc3Rvbi0yID0gIkhlbHBlciBsaWJyYXJ5IGZvciBpbXBsZW1lbnRpbmcgJ3dheWxhbmQgd2luZG93IG1hbmFnZXJzJy4iCi0KLUZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7YmluZGlyfS8qIgotCi1GSUxFU18ke1BOfS14d2F5bGFuZCA9ICIke2xpYmRpcn0vbGlid2VzdG9uLTIveHdheWxhbmQuc28iCi1SREVQRU5EU18ke1BOfS14d2F5bGFuZCArPSAieHNlcnZlci14b3JnLXh3YXlsYW5kIgotCi1SREVQRU5EU18ke1BOfSArPSAieGtleWJvYXJkLWNvbmZpZyIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImxpYmVyYXRpb24tZm9udHMiCi1SUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIndheWxhbmQtcHJvdG9jb2xzIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gd2VzdG9uLWxhdW5jaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMy4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzMuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMGNkYzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzMuMC4wLmJiCkBAIC0wLDAgKzEsMTE0IEBACitTVU1NQVJZID0gIldlc3RvbiwgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCitERVNDUklQVElPTiA9ICJXZXN0b24gaXMgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBhIFdheWxhbmQgY29tcG9zaXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc5ZWU5ZTY2YmIwZjk1ZDMzODZhN2FjYWU3ODBiNzAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlid2VzdG9uL2NvbXBvc2l0b3IuYztlbmRsaW5lPTI2O21kNT1lMzQyZGY3NDkxNzRhOGVlMTEwNjU1ODMxNTdjN2EzOCIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vd2VzdG9uLnBuZyBcCisgICAgICAgICAgIGZpbGU6Ly93ZXN0b24uZGVza3RvcCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2UtZXJyb3ItcG9ydGFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8veHdheWxhbmQud2VzdG9uLXN0YXJ0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBcCisJICAgZmlsZTovL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoIFwKKwkgICBmaWxlOi8vZml4LW1pc3NpbmctaGVhZGVyLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YzQyYTRjNTFhMWI5ZjM1ZDA0MGZhOWQ0NWFkYTM2ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZGUxZDU1ZThkZDcwYzNjYmIzZDFlYzcyZjYwZTYwMDAwMDQxNTc5Y2FhMWQ2YTI2MmJkOWMzNWU5MzcyM2E1IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXNlcmFkZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2VnbAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworREVQRU5EUyA9ICJsaWJ4a2Jjb21tb24gZ2RrLXBpeGJ1ZiBwaXhtYW4gY2Fpcm8gZ2xpYi0yLjAganBlZyIKK0RFUEVORFMgKz0gIndheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliaW5wdXQgdmlydHVhbC9lZ2wgcGFuZ28gd2F5bGFuZC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zZXR1aWQtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJkcC1jb21wb3NpdG9yIFwKKyAgICAgICAgICAgICAgICAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX3FlbXV4ODYgPSAiXAorCQlXRVNUT05fTkFUSVZFX0JBQ0tFTkQ9ZmJkZXYtYmFja2VuZC5zbyBcCisJCSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfcWVtdXg4Ni02NCA9ICJcCisJCVdFU1RPTl9OQVRJVkVfQkFDS0VORD1mYmRldi1iYWNrZW5kLnNvIFwKKwkJIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdrbXMgZmJkZXYgd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQgeDExJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICBjbGllbnRzIGxhdW5jaCIKKyMKKyMgQ29tcG9zaXRvciBjaG9pY2VzCisjCisjIFdlc3RvbiBvbiBLTVMKK1BBQ0tBR0VDT05GSUdba21zXSA9ICItLWVuYWJsZS1kcm0tY29tcG9zaXRvciwtLWRpc2FibGUtZHJtLWNvbXBvc2l0b3IsZHJtIHVkZXYgdmlydHVhbC9tZXNhIG10ZGV2IgorIyBXZXN0b24gb24gV2F5bGFuZCAobmVzdGVkIFdlc3RvbikKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZC1jb21wb3NpdG9yLC0tZGlzYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsdmlydHVhbC9tZXNhIgorIyBXZXN0b24gb24gWDExCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXgxMS1jb21wb3NpdG9yLHZpcnR1YWwvbGlieDExIGxpYnhjYiBsaWJ4Y2IgbGlieGN1cnNvciBjYWlybyIKKyMgSGVhZGxlc3MgV2VzdG9uCitQQUNLQUdFQ09ORklHW2hlYWRsZXNzXSA9ICItLWVuYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yLC0tZGlzYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yIgorIyBXZXN0b24gb24gZnJhbWVidWZmZXIKK1BBQ0tBR0VDT05GSUdbZmJkZXZdID0gIi0tZW5hYmxlLWZiZGV2LWNvbXBvc2l0b3IsLS1kaXNhYmxlLWZiZGV2LWNvbXBvc2l0b3IsdWRldiBtdGRldiIKKyMgd2VzdG9uLWxhdW5jaAorUEFDS0FHRUNPTkZJR1tsYXVuY2hdID0gIi0tZW5hYmxlLXdlc3Rvbi1sYXVuY2gsLS1kaXNhYmxlLXdlc3Rvbi1sYXVuY2gsZHJtIgorIyBWQS1BUEkgZGVza3RvcCByZWNvcmRlcgorUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGktcmVjb3JkZXIsLS1kaXNhYmxlLXZhYXBpLXJlY29yZGVyLGxpYnZhIgorIyBXZXN0b24gd2l0aCBFR0wgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCAtLWVuYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsLS1kaXNhYmxlLWVnbCAtLWRpc2FibGUtc2ltcGxlLWVnbC1jbGllbnRzLHZpcnR1YWwvZWdsIgorIyBXZXN0b24gd2l0aCBjYWlybyBnbGVzdjIgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjYWlyby1nbGVzdjJdID0gIi0td2l0aC1jYWlyby1nbGVzdjIsLS13aXRoLWNhaXJvPWltYWdlLGNhaXJvIgorIyBXZXN0b24gd2l0aCBsY21zIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbbGNtc10gPSAiLS1lbmFibGUtbGNtcywtLWRpc2FibGUtbGNtcyxsY21zIgorIyBXZXN0b24gd2l0aCB3ZWJwIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbd2VicF0gPSAiLS13aXRoLXdlYnAsLS13aXRob3V0LXdlYnAsbGlid2VicCIKKyMgV2VzdG9uIHdpdGggdW53aW5kaW5nIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLWVuYWJsZS1saWJ1bndpbmQsLS1kaXNhYmxlLWxpYnVud2luZCxsaWJ1bndpbmQiCisjIFdlc3RvbiB3aXRoIHN5c3RlbWQtbG9naW4gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLWxvZ2luLC0tZGlzYWJsZS1zeXN0ZW1kLWxvZ2luLHN5c3RlbWQgZGJ1cyIKKyMgV2VzdG9uIHdpdGggWHdheWxhbmQgc3VwcG9ydCAocmVxdWlyZXMgWDExIGFuZCBXYXlsYW5kKQorUEFDS0FHRUNPTkZJR1t4d2F5bGFuZF0gPSAiLS1lbmFibGUteHdheWxhbmQsLS1kaXNhYmxlLXh3YXlsYW5kIgorIyBjb2xvcmQgQ01TIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbY29sb3JkXSA9ICItLWVuYWJsZS1jb2xvcmQsLS1kaXNhYmxlLWNvbG9yZCxjb2xvcmQiCisjIENsaWVudHMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjbGllbnRzXSA9ICItLWVuYWJsZS1jbGllbnRzIC0tZW5hYmxlLXNpbXBsZS1jbGllbnRzIC0tZW5hYmxlLWRlbW8tY2xpZW50cy1pbnN0YWxsLC0tZGlzYWJsZS1jbGllbnRzIC0tZGlzYWJsZS1zaW1wbGUtY2xpZW50cyIKKyMgV2VzdG9uIHdpdGggUEFNIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIFdlc3RvbiBkb2Vzbid0IG5lZWQgdGhlIC5sYSBmaWxlcyB0byBsb2FkIG1vZHVsZXMsIHNvIHdpcGUgdGhlbQorCXJtIC1mICR7RH0vJHtsaWJkaXJ9L2xpYndlc3Rvbi0zLyoubGEKKworCSMgSWYgWDExLCBzaGlwIGEgZGVza3RvcCBmaWxlIHRvIGxhdW5jaCBpdAorCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucworCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCisKKwkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKKwkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5wbmcgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCisJZmkKKworCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisJCWluc3RhbGwgLURtIDY0NCAke1dPUktESVJ9L3h3YXlsYW5kLndlc3Rvbi1zdGFydCAke0R9JHtkYXRhZGlyfS93ZXN0b24tc3RhcnQveHdheWxhbmQKKwlmaQorfQorCitQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAnJHtQTn0teHdheWxhbmQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICBsaWJ3ZXN0b24tMyAke1BOfS1leGFtcGxlcyIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3dlc3RvbiAke2JpbmRpcn0vd2VzdG9uLXRlcm1pbmFsICR7YmluZGlyfS93ZXN0b24taW5mbyAke2JpbmRpcn0vd2VzdG9uLWxhdW5jaCAke2JpbmRpcn0vd2NhcC1kZWNvZGUgJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vJHtCUE59Lyouc28gJHtkYXRhZGlyfSIKKworRklMRVNfbGlid2VzdG9uLTMgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtsaWJkaXJ9L2xpYndlc3Rvbi0zLyouc28iCitTVU1NQVJZX2xpYndlc3Rvbi0zID0gIkhlbHBlciBsaWJyYXJ5IGZvciBpbXBsZW1lbnRpbmcgJ3dheWxhbmQgd2luZG93IG1hbmFnZXJzJy4iCisKK0ZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7YmluZGlyfS8qIgorCitGSUxFU18ke1BOfS14d2F5bGFuZCA9ICIke2xpYmRpcn0vbGlid2VzdG9uLTMveHdheWxhbmQuc28iCitSREVQRU5EU18ke1BOfS14d2F5bGFuZCArPSAieHNlcnZlci14b3JnLXh3YXlsYW5kIgorCitSREVQRU5EU18ke1BOfSArPSAieGtleWJvYXJkLWNvbmZpZyIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImxpYmVyYXRpb24tZm9udHMiCitSUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIndheWxhbmQtcHJvdG9jb2xzIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gd2VzdG9uLWxhdW5jaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uc2VydmljZS5pbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uc2VydmljZS5pbgppbmRleCAzMjRhMjZmLi44N2RjNGY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtLnNlcnZpY2UuaW4KKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbS5zZXJ2aWNlLmluCkBAIC01LDYgKzUsNyBAQAogRW52aXJvbm1lbnRGaWxlPS9ldGMvZGVmYXVsdC94c2VydmVyLW5vZG0KIFVzZXI9QFVTRVJACiBFeGVjU3RhcnQ9L2V0Yy94c2VydmVyLW5vZG0vWHNlcnZlcgorUmVzdGFydD1hbHdheXMKIAogW0luc3RhbGxdCiBBbGlhcz1kaXNwbGF5LW1hbmFnZXIuc2VydmljZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdF8zLjAuYmIKaW5kZXggMzQ1YjU4OS4uYTc3YzU2NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXRfMy4wLmJiCkBAIC02MCw3ICs2MCw3IEBACiAgICAgZmkKIH0KIAotUkRFUEVORFNfJHtQTn0gPSAieGluaXQgJHtAYmFzZV9jb25kaXRpb25hbCgnUk9PVExFU1NfWCcsICcxJywgJ3h1c2VyLWFjY291bnQnLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gPSAieGluaXQgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1JPT1RMRVNTX1gnLCAnMScsICd4dXNlci1hY2NvdW50JywgJycsIGQpfSIKIAogSU5JVFNDUklQVF9OQU1FID0gInhzZXJ2ZXItbm9kbSIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDkgNSAuIHN0b3AgMjAgMCAxIDIgMyA2IC4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUveGN1cnNvci10cmFuc3BhcmVudC10aGVtZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUveGN1cnNvci10cmFuc3BhcmVudC10aGVtZV9naXQuYmIKaW5kZXggNzMzZWJjZS4uYTRhYjdmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvci10cmFuc3BhcmVudC10aGVtZS94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lX2dpdC5iYgpAQCAtMTEsNyArMTEsNyBAQAogUFYgPSAiMC4xLjErZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59O2JyYW5jaD1tYXN0ZXIiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94c2V0L2Rpc2FibGUteGtiLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94c2V0L2Rpc2FibGUteGtiLnBhdGNoCmluZGV4IDk3ZDEzYTMuLmE5N2M3YjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHNldC9kaXNhYmxlLXhrYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hzZXQvZGlzYWJsZS14a2IucGF0Y2gKQEAgLTQsMTEgKzQsMTEgQEAKIAogUmViYXNlIGZvciAxLjIuMSBieTogWXUgS2UgPGtlLnl1QGludGVsLmNvbT4KIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODFjM2FlNC4uMjY2MDFiZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTIsMTEgKzUyLDE1IEBAIFBLR19DSEVDS19NT0RVTEVTKFNFVF9YRVhULCB4ZXh0LAorSW5kZXg6IHhzZXQtMS4yLjMvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0geHNldC0xLjIuMy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIHhzZXQtMS4yLjMvY29uZmlndXJlLmFjCitAQCAtNTMsMTEgKzUzLDE1IEBAIFBLR19DSEVDS19NT0RVTEVTKFNFVF9YRVhULCB4ZXh0LAogIAlBQ19DSEVDS19IRUFERVJTKFtYMTEvZXh0ZW5zaW9ucy9kcG1zLmggWDExL2V4dGVuc2lvbnMvTUlUTWlzYy5oXSwsLFsjaW5jbHVkZSA8WDExL1hsaWIuaD5dKQogIAlDUFBGTEFHUz0iJFNBVkVfQ1BQRkxBR1MiXSxbZWNobyAibm90IGZvdW5kIl0pCiAgCkBAIC0yMiw1ICsyMiw1IEBACiAgCUNQUEZMQUdTPSIkU0FWRV9DUFBGTEFHUyJdLFtlY2hvICJub3QgZm91bmQiXSkKICtmaQogIAotIEFDX0FSR19XSVRIKHhmODZtaXNjLCBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LXhmODZtaXNjXSxbRGlzYWJsZSB4Zjg2bWlzYyBzdXBwb3J0Ll0pLAorIEFDX0FSR19XSVRIKHhmODZtaXNjLCBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LXhmODZtaXNjXSxbRGlzYWJsZSB4Zjg2bWlzYyBzdXBwb3J0Ll0pLAogICAgICAgICAgICAgICAgICBbVVNFX1hGODZNSVNDPSIkd2l0aHZhbCJdLCBbVVNFX1hGODZNSVNDPSJ5ZXMiXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI1LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4yNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjNlYTE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI1LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYwotCi1TVU1NQVJZID0gIkdlbmVyaWMgaW5wdXQgZHJpdmVyIGZvciB0aGUgWC5Pcmcgc2VydmVyIGJhc2VkIG9uIGxpYmlucHV0IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWU2YjIwZWEyZWY5NGE5OTgxNDVmMGVhM2Y3ODhlZTAiCi0KLURFUEVORFMgKz0gImxpYmlucHV0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTQwMDMxMzk2MTRiMjVjYzc2YzlhNGNhZDA1OWRmODkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDg5ZjdkNTkxYzllZjA4NDYzZDQ5NjZlNjFmN2M2ZWE0MzNmNWZjYmI5ZjUzNzBmYjYyMWRhNjM5YTg0YzdlMCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL3hvcmcuY29uZi5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRjMzNkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI2LjAuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKKworU1VNTUFSWSA9ICJHZW5lcmljIGlucHV0IGRyaXZlciBmb3IgdGhlIFguT3JnIHNlcnZlciBiYXNlZCBvbiBsaWJpbnB1dCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVlNmIyMGVhMmVmOTRhOTk4MTQ1ZjBlYTNmNzg4ZWUwIgorCitERVBFTkRTICs9ICJsaWJpbnB1dCIKKworU1JDX1VSSVttZDVzdW1dID0gImRhNDdlZjYyZWFiMWQwZTkyMmE4ZmE5MjlmZjgxNzU4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiY2E1NThmYzIyMjZmMjk1NjkxZjFjZjM0MTJkNGMwZWRlYWE0MzlmNjc3Y2EyNWI1YzlmYWIzMTBkMjM4N2IiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94b3JnLmNvbmYuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMDAxLUFkZC1Db2ZmZWVsYWtlLVBDSS1JRHMtZm9yLVMtU2t1cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMDAxLUFkZC1Db2ZmZWVsYWtlLVBDSS1JRHMtZm9yLVMtU2t1cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmVmMTA1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtQWRkLUNvZmZlZWxha2UtUENJLUlEcy1mb3ItUy1Ta3VzLnBhdGNoCkBAIC0wLDAgKzEsMTE2IEBACitGcm9tIDk2ZDRlOGU3YjhhNjk5ZjBlZjc3ZmE3YjIxMGQ0ZGU1ZjFjNzAzZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaXdlaSBTb25nIDxsaXdlaS5zb25nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDIyIE5vdiAyMDE3IDA4OjU5OjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBDb2ZmZWVsYWtlIFBDSSBJRHMgZm9yIFMgU2t1cworCitBZGQgdGhlIENvZmZlZWxha2UgUENJIElEcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGtlcm5lbCBwYXRjaGVzOgorCitjb21taXQgYjA1NmY4ZjNkNmI5MDBlOGFmZDE5ZjMxMjcxOTE2MDM0NmQyNjNiNAorQXV0aG9yOiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+CitEYXRlOiAgIFRodSBKdW4gOCAxNjo0MTowNSAyMDE3IC0wNzAwCisKKyAgICBkcm0vaTkxNS9jZmw6IEFkZCBDb2ZmZWUgTGFrZSBQQ0kgSURzIGZvciBTIFNrdXMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwMTM5OTA1XQorCitTaWduZWQtb2ZmLWJ5OiBMaXdlaSBTb25nIDxsaXdlaS5zb25nQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvaTkxNV9wY2lpZHMuaCAgICAgfCAgNyArKysrKysrCisgc3JjL2ludGVsX21vZHVsZS5jICAgIHwgMTMgKysrKysrKysrKysrKworIHNyYy9zbmEvZ2VuOV9yZW5kZXIuYyB8IDEyICsrKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2k5MTVfcGNpaWRzLmggYi9zcmMvaTkxNV9wY2lpZHMuaAoraW5kZXggMDM3MGY4MzBjNTQxLi4xMWNjZmE5YzA0N2EgMTAwNjQ0CistLS0gYS9zcmMvaTkxNV9wY2lpZHMuaAorKysrIGIvc3JjL2k5MTVfcGNpaWRzLmgKK0BAIC0zNDAsNCArMzQwLDExIEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzMTg0LCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MzE4NSwgaW5mbykKKyAKKysjZGVmaW5lIElOVEVMX0NGTF9TX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTkwLCBpbmZvKSwgLyogU1JWIEdUMSAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTkzLCBpbmZvKSwgLyogU1JWIEdUMSAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTkxLCBpbmZvKSwgLyogU1JWIEdUMiAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTkyLCBpbmZvKSwgLyogU1JWIEdUMiAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTk2LCBpbmZvKSAgLyogU1JWIEdUMiAqLworKworICNlbmRpZiAvKiBfSTkxNV9QQ0lJRFNfSCAqLworZGlmZiAtLWdpdCBhL3NyYy9pbnRlbF9tb2R1bGUuYyBiL3NyYy9pbnRlbF9tb2R1bGUuYworaW5kZXggNmIwNDg1N2UyODUzLi40ODI3YTY3MjU1ZjAgMTAwNjQ0CistLS0gYS9zcmMvaW50ZWxfbW9kdWxlLmMKKysrKyBiL3NyYy9pbnRlbF9tb2R1bGUuYworQEAgLTEzOCw2ICsxMzgsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9nZW1pbmlsYWtlX2luZm8gPSB7CisgCS5nZW4gPSAwMTEzLAorIH07CisgCisrc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jb2ZmZWVsYWtlX2luZm8gPSB7CisrCS5nZW4gPSAwMTE0LAorK307CisrCisgc3RhdGljIGNvbnN0IFN5bVRhYlJlYyBpbnRlbF9jaGlwc2V0c1tdID0geworIAl7UENJX0NISVBfSTgxMCwJCQkJImk4MTAifSwKKyAJe1BDSV9DSElQX0k4MTBfREMxMDAsCQkJImk4MTAtZGMxMDAifSwKK0BAIC0zMDMsNiArMzA3LDEzIEBAIHN0YXRpYyBjb25zdCBTeW1UYWJSZWMgaW50ZWxfY2hpcHNldHNbXSA9IHsKKyAJezB4NTkxNiwgIkhEIEdyYXBoaWNzIDYyMCJ9LAorIAl7MHg1OTFFLCAiSEQgR3JhcGhpY3MgNjE1In0sCisgCisrCS8qQ29mZmVlbGFrZSovCisrCXsweDNFOTAsICJIRCBHcmFwaGljcyJ9LAorKwl7MHgzRTkzLCAiSEQgR3JhcGhpY3MifSwKKysJezB4M0U5MSwgIkhEIEdyYXBoaWNzIn0sCisrCXsweDNFOTIsICJIRCBHcmFwaGljcyJ9LAorKwl7MHgzRTk2LCAiSEQgR3JhcGhpY3MifSwKKysKKyAJLyogV2hlbiBhZGRpbmcgbmV3IGlkZW50aWZpZXJzLCBhbHNvIHVwZGF0ZToKKyAJICogMS4gaW50ZWxfaWRlbnRpZnkoKQorIAkgKiAyLiBtYW4vaW50ZWwubWFuCitAQCAtMzY4LDYgKzM3OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2lkX21hdGNoIGludGVsX2RldmljZV9tYXRjaFtdID0geworIAorIAlJTlRFTF9HTEtfSURTKCZpbnRlbF9nZW1pbmlsYWtlX2luZm8pLAorIAorKwlJTlRFTF9DRkxfU19JRFMoJmludGVsX2NvZmZlZWxha2VfaW5mbyksCisrCisgCUlOVEVMX1ZHQV9ERVZJQ0UoUENJX01BVENIX0FOWSwgJmludGVsX2dlbmVyaWNfaW5mbyksCisgI2VuZGlmCisgCitkaWZmIC0tZ2l0IGEvc3JjL3NuYS9nZW45X3JlbmRlci5jIGIvc3JjL3NuYS9nZW45X3JlbmRlci5jCitpbmRleCBlNWYxMmM3MjM5NTYuLjdmNDkwNTJjNWVjMSAxMDA2NDQKKy0tLSBhL3NyYy9zbmEvZ2VuOV9yZW5kZXIuYworKysrIGIvc3JjL3NuYS9nZW45X3JlbmRlci5jCitAQCAtMjQ1LDYgKzI0NSwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGd0X2luZm8gZ2xrX2d0X2luZm8gPSB7CisgCS51cmIgPSB7IC5tYXhfdnNfZW50cmllcyA9IDMyMCB9LAorIH07CisgCisrc3RhdGljIGNvbnN0IHN0cnVjdCBndF9pbmZvIGNmbF9ndF9pbmZvID0geworKwkubmFtZSA9ICJDb2ZmZWVsYWtlIChnZW45KSIsCisrCS51cmIgPSB7IC5tYXhfdnNfZW50cmllcyA9IDk2MCB9LAorK307CisrCisgc3RhdGljIGJvb2wgaXNfc2tsKHN0cnVjdCBzbmEgKnNuYSkKKyB7CisgCXJldHVybiBzbmEtPmtnZW0uZ2VuID09IDAxMTA7CitAQCAtMjY1LDYgKzI3MCwxMSBAQCBzdGF0aWMgYm9vbCBpc19nbGsoc3RydWN0IHNuYSAqc25hKQorIAlyZXR1cm4gc25hLT5rZ2VtLmdlbiA9PSAwMTEzOworIH0KKyAKKytzdGF0aWMgYm9vbCBpc19jZmwoc3RydWN0IHNuYSAqc25hKQorK3sKKysJcmV0dXJuIHNuYS0+a2dlbS5nZW4gPT0gMDExNDsKKyt9CisrCisgCisgc3RhdGljIGlubGluZSBib29sIHRvb19sYXJnZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCisgeworQEAgLTQwNDAsNiArNDA1MCw4IEBAIHN0YXRpYyBib29sIGdlbjlfcmVuZGVyX3NldHVwKHN0cnVjdCBzbmEgKnNuYSkKKyAJCXN0YXRlLT5pbmZvID0gJmtibF9ndF9pbmZvOworIAlpZiAoaXNfZ2xrKHNuYSkpCisgCQlzdGF0ZS0+aW5mbyA9ICZnbGtfZ3RfaW5mbzsKKysJaWYgKGlzX2NmbChzbmEpKQorKwkJc3RhdGUtPmluZm8gPSAmY2ZsX2d0X2luZm87CisgCisgCXNuYV9zdGF0aWNfc3RyZWFtX2luaXQoJmdlbmVyYWwpOworIAorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKaW5kZXggMTM4ZGZkZC4uMjYyM2NiMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCkBAIC0xNiw2ICsxNiw3IEBACiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcvZHJpdmVyL3hmODYtdmlkZW8taW50ZWwgXAogICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS14MTEtZHJpMy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hbHdheXNfaW5jbHVkZV94b3JnX3NlcnZlci5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLUNvZmZlZWxha2UtUENJLUlEcy1mb3ItUy1Ta3VzLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZmExOTZhNjZlNTJjMGM2MjRmZTVkMzUwYWY3YTVlN2IiCkBAIC0zNyw3ICszOCw3IEBACiBQQUNLQUdFQ09ORklHW3Rvb2xzXSA9ICItLWVuYWJsZS10b29scywtLWRpc2FibGUtdG9vbHMsbGlieGluZXJhbWEgbGlieHJhbmRyIGxpYnhkYW1hZ2UgbGlieGZpeGVzIGxpYnhjdXJzb3IgbGlieHRzdCBsaWJ4ZXh0IGxpYnhyZW5kZXIiCiAKICMgLS1lbmFibGUta21zLW9ubHkgb3B0aW9uIGlzIHJlcXVpcmVkIGJ5IFJPT1RMRVNTX1gKLUVYVFJBX09FQ09ORiArPSAnJHtAYmFzZV9jb25kaXRpb25hbCggIlJPT1RMRVNTX1giLCAiMSIsICIgLS1lbmFibGUta21zLW9ubHkiLCAiIiwgZCApfScKK0VYVFJBX09FQ09ORiArPSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoICJST09UTEVTU19YIiwgIjEiLCAiIC0tZW5hYmxlLWttcy1vbmx5IiwgIiIsIGQgKX0nCiAKIENPTVBBVElCTEVfSE9TVCA9ICcoaS44Nnx4ODZfNjQpLiotbGludXgnCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwXzAuNC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBfMC40LjUuYmIKaW5kZXggZTY1MjM5NC4uYmVmMzYzNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBfMC40LjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBfMC40LjUuYmIKQEAgLTM2LDYgKzM2LDYgQEAKIAogcHl0aG9uICgpIHsKICAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMgKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ29wZW5nbCcgbm90IGluIERJU1RST19GRUFUVVJFUyIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIidvcGVuZ2wnIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMiKQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMKaW5kZXggZmU0MmYxMS4uYmNhMGFhZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwpAQCAtMzgsMyArMzgsNSBAQAogCiAgICAgcG4gPSBkLmdldFZhcigiUE4iKQogICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcG4sICcgJyArIGFiaSkKKworU0VDVVJJVFlfTERGTEFHUyA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYjY4MmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xMy41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJHZW5lcmljIFBDSSBhY2Nlc3MgbGlicmFyeSBmb3IgWCIKLQotREVTQ1JJUFRJT04gPSAibGlicGNpYWNjZXNzIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIFggdG8gYWNjZXNzIHRoZSBcCi1QQ0kgYnVzIGFuZCBkZXZpY2VzIGluIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgd2F5LiIKLQotcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA0LURvbi10LWluY2x1ZGUtc3lzLWlvLmgtb24tYXJtLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ4MTBhYjE3ZTI0YzE0MThkZWRmNzIwN2ZiMjg0MWQ0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc1MmM1NGU5YjNjMzExYjQzNDdjYjUwYWVhODU2NmZhNDhlYWIyNzQzNDZlYThhMDZmN2YxNWRlMzI0MGI5OTkiCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Mjc3YWFkYTUyMjJiOWEyMmZiZjM0NzFmZjM2ODcwNjgiCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDRhNWM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xNC5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIkdlbmVyaWMgUENJIGFjY2VzcyBsaWJyYXJ5IGZvciBYIgorCitERVNDUklQVElPTiA9ICJsaWJwY2lhY2Nlc3MgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgWCB0byBhY2Nlc3MgdGhlIFwKK1BDSSBidXMgYW5kIGRldmljZXMgaW4gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB3YXkuIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtRG9uLXQtaW5jbHVkZS1zeXMtaW8uaC1vbi1hcm0ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGY0MzZlMTUxZDUxMDZhOWNmYWE3MTg1N2EwNjZkMzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RmNTQzZTEyYWZkNDFmZWE4ZWFjODE3ZTQ4Y2JmZGU1YWVkODgxN2I4MTY3MGE0ZTllNDkzYmIyZjViZjJhNCIKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNzdhYWRhNTIyMmI5YTIyZmJmMzQ3MWZmMzY4NzA2OCIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnB0aHJlYWQtc3R1YnNfMC40LmJiCmluZGV4IGE2OTk4NDEuLmZmYTFjODUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwdGhyZWFkLXN0dWJzXzAuNC5iYgpAQCAtNywxNyArNywxMSBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZWRjMWZlYTAzZDk1OWYwYzJkNzQzZmU1Y2E3NDZhZCIKIAotI0RFUEVORFMgPSAieGNiLXByb3RvIHhwcm90byBsaWJ4YXUgbGlieHNsdC1uYXRpdmUiCi0jIERFUEVORFMgKz0gInhzbHRwcm9jLW5hdGl2ZSBncGVyZi1uYXRpdmUiCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC9saWJwdGhyZWFkLXN0dWJzLSR7UFZ9LnRhci5iejIiCi0KK1NSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC8ke0JQfS50YXIuYnoyIgogU1JDX1VSSVttZDVzdW1dID0gIjQ4YzE1NDQ4NTRhOTRkYjBlNTE0OTljYzNhZmQ3OTdmIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImU0ZDA1OTExYTMxNjVkM2IxODMyMWNjMDY3ZmRkMmYwMjNmMDY0MzZlMzkxYzZhMjhkZmY2MThhNzhkMmU3MzMiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMKIAogUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKIFJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS5pbmMKaW5kZXggYjA0ZWFmYi4uNGFmNDBhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLmluYwpAQCAtMzUsNyArMzUsMyBAQAogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL1hLZXlzeW1EQiAke2RhdGFkaXJ9L1gxMS9YRXJyb3JEQiAke2RhdGFkaXJ9L1gxMS9YY21zLnR4dCIKIEZJTEVTXyR7UE59LXhjYiArPSAiJHtsaWJkaXJ9L2xpYlgxMS14Y2Iuc28uKiIKIEZJTEVTXyR7UE59LWxvY2FsZSArPSAiJHtkYXRhZGlyfS9YMTEvbG9jYWxlICR7bGliZGlyfS9YMTEvbG9jYWxlIgotCi0jIE11bHRpcGxlIGxpYngxMSBkZXJpdmF0aXZlcyBmcm9tIGZyb20gdGhpcyBmaWxlIGFuZCBhcmUgc2VsZWN0ZWQgYnkgdmlydHVhbC9saWJ4MTEKLSMgQSB3b3JsZCBidWlsZCBzaG91bGQgb25seSBidWlsZCB0aGUgY29ycmVjdCB2ZXJzaW9uLCBub3QgYWxsIG9mIHRoZW0uCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGVfZ2l0LmJiCmluZGV4IDdjN2ZhM2QuLjBmZTY1MzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2FsaWJyYXRlX2dpdC5iYgpAQCAtMTYsNyArMTYsNyBAQAogCiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC94b3JnL2xpYi9saWJYQ2FsaWJyYXRlIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC14Y2IucGF0Y2giCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2IvZGlzYWJsZS1jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiL2Rpc2FibGUtY2hlY2sucGF0Y2gKaW5kZXggNTY0MWMwZi4uYzBlZmJkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2IvZGlzYWJsZS1jaGVjay5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYi9kaXNhYmxlLWNoZWNrLnBhdGNoCkBAIC05LDE3ICs5LDE3IEBACiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDZkN2M5YTUuLjIyY2NlYjkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTIxLDcgKzIxLDggQEAgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCi0gCi0gQU1fUEFUSF9QWVRIT04oWzIuNl0pCitJbmRleDogbGlieGNiLTEuMTIvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlieGNiLTEuMTIub3JpZy9jb25maWd1cmUuYWMKKysrKyBsaWJ4Y2ItMS4xMi9jb25maWd1cmUuYWMKK0BAIC0zNiw3ICszNiw4IEBAIGlmIHRlc3QgeCIkSEFWRV9ET1QiID0geG5vOyB0aGVuCisgICAgIEFDX01TR19XQVJOKFtkb3Qgbm90IGZvdW5kIC0gZG94eWdlbiB0YXJnZXRzIHdpbGwgYmUgc2tpcHBlZF0pCisgZmkKICAKIC1QS0dfQ0hFQ0tfTU9EVUxFUyhDSEVDSywgW2NoZWNrID49IDAuOS40XSwgW0hBVkVfQ0hFQ0s9eWVzXSwgW0hBVkVfQ0hFQ0s9bm9dKQogK2RubCBQS0dfQ0hFQ0tfTU9EVUxFUyhDSEVDSywgW2NoZWNrID49IDAuOS40XSwgW0hBVkVfQ0hFQ0s9eWVzXSwgW0hBVkVfQ0hFQ0s9bm9dKQogK0hBVkVfQ0hFQ0s9bm8KICBBTV9DT05ESVRJT05BTChIQVZFX0NIRUNLLCB0ZXN0IHgkSEFWRV9DSEVDSyA9IHh5ZXMpCiAgCi0gQUNfQ09ORklHX0hFQURFUlMoW3NyYy9jb25maWcuaF0pCisgWFNMVFBST0M9bm8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGN1cnNvcl8xLjEuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjdXJzb3JfMS4xLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzYyOTA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGN1cnNvcl8xLjEuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIlhjdXJzb3I6IFggQ3Vyc29yIG1hbmFnZW1lbnQgbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAiWGN1cnNvciBpcyBhIHNpbXBsZSBsaWJyYXJ5IGRlc2lnbmVkIHRvIGhlbHAgbG9jYXRlIGFuZCBcCi1sb2FkIGN1cnNvcnMuIEN1cnNvcnMgY2FuIGJlIGxvYWRlZCBmcm9tIGZpbGVzIG9yIG1lbW9yeS4gQSBsaWJyYXJ5IG9mIFwKLWNvbW1vbiBjdXJzb3JzIGV4aXN0cyB3aGljaCBtYXAgdG8gdGhlIHN0YW5kYXJkIFggY3Vyc29yIG5hbWVzLiBDdXJzb3JzIFwKLWNhbiBleGlzdCBpbiBzZXZlcmFsIHNpemVzIGFuZCB0aGUgbGlicmFyeSBhdXRvbWF0aWNhbGx5IHBpY2tzIHRoZSBiZXN0IFwKLXNpemUuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04OTAyZTY2NDNmN2JjZDc3OTNiMjNkY2Q1ZDgwMzFhNCIKLQotREVQRU5EUyArPSAibGlieHJlbmRlciBsaWJ4Zml4ZXMiCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVBFID0gIjEiCi0KLVhPUkdfUE4gPSAibGliWGN1cnNvciIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFlN2MxN2FmYmJjZTgzZTIyMTU5MTcwNDdjNTdkMWIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjliYzZhY2IyMWNhMTRkYTUxYmRhNWJjOTEyYzg5NTViYzZlNWU0MzNmMGFiMDBjNWU4YmVmODQyNTk2YzMzZGYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjdXJzb3JfMS4xLjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y3Vyc29yXzEuMS4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzlhZjIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y3Vyc29yXzEuMS4xNS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlhjdXJzb3I6IFggQ3Vyc29yIG1hbmFnZW1lbnQgbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAiWGN1cnNvciBpcyBhIHNpbXBsZSBsaWJyYXJ5IGRlc2lnbmVkIHRvIGhlbHAgbG9jYXRlIGFuZCBcCitsb2FkIGN1cnNvcnMuIEN1cnNvcnMgY2FuIGJlIGxvYWRlZCBmcm9tIGZpbGVzIG9yIG1lbW9yeS4gQSBsaWJyYXJ5IG9mIFwKK2NvbW1vbiBjdXJzb3JzIGV4aXN0cyB3aGljaCBtYXAgdG8gdGhlIHN0YW5kYXJkIFggY3Vyc29yIG5hbWVzLiBDdXJzb3JzIFwKK2NhbiBleGlzdCBpbiBzZXZlcmFsIHNpemVzIGFuZCB0aGUgbGlicmFyeSBhdXRvbWF0aWNhbGx5IHBpY2tzIHRoZSBiZXN0IFwKK3NpemUuIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworTElDRU5TRSA9ICJNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04OTAyZTY2NDNmN2JjZDc3OTNiMjNkY2Q1ZDgwMzFhNCIKKworREVQRU5EUyArPSAibGlieHJlbmRlciBsaWJ4Zml4ZXMiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BFID0gIjEiCisKK1hPUkdfUE4gPSAibGliWGN1cnNvciIKKworU1JDX1VSSVttZDVzdW1dID0gIjU4ZmUzNTE0ZTFlNzEzNWNmMzY0MTAxZTcxNGQxYTE0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5NGU2NzBkZDM3Y2QyMzk5NWU2OWFhZTYyNjYyOWQ0YTJkZmU1NzA4ODUxYmJjMTNkMDMyNDAxYjdhM2RmNmIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250Ml8yLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmZiMjkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJYRm9udDI6IFggRm9udCByYXN0ZXJpc2F0aW9uIGxpYnJhcnkiCi0KLURFU0NSSVBUSU9OID0gImxpYlhmb250MiBwcm92aWRlcyB2YXJpb3VzIHNlcnZpY2VzIGZvciBYIHNlcnZlcnMsIG1vc3QgXAotbm90YWJseSBmb250IHNlbGVjdGlvbiBhbmQgcmFzdGVyaXNhdGlvbiAodGhyb3VnaCBleHRlcm5hbCBsaWJyYXJpZXMgXAotc3VjaCBhcyBmcmVldHlwZSkuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNDZjODA0MGYyZjczN2JjZDBjNDM1ZmViMmFiMWMyYyIKLQotREVQRU5EUyArPSAiZnJlZXR5cGUgeHRyYW5zIGZvbnRzcHJvdG8gbGliZm9udGVuYyB6bGliIgotCi1YT1JHX1BOID0gImxpYlhmb250MiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwZDlmNmRkOWMyM2JmNGJjYmZiMDA1MDRiNTY2YmFmNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOWZiYmI0NzVkZGQxNzFiM2E2YTU0Yjk4OWNiYWRlMWY2Zjg3NGZjMzVkNTA1ZWJjNWJlNDI2YmM2ZTRkYjdlIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250Ml8yLjAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMjdhNTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250Ml8yLjAuMy5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlhGb250MjogWCBGb250IHJhc3RlcmlzYXRpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAibGliWGZvbnQyIHByb3ZpZGVzIHZhcmlvdXMgc2VydmljZXMgZm9yIFggc2VydmVycywgbW9zdCBcCitub3RhYmx5IGZvbnQgc2VsZWN0aW9uIGFuZCByYXN0ZXJpc2F0aW9uICh0aHJvdWdoIGV4dGVybmFsIGxpYnJhcmllcyBcCitzdWNoIGFzIGZyZWV0eXBlKS4iCisKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE0NmM4MDQwZjJmNzM3YmNkMGM0MzVmZWIyYWIxYzJjIgorCitERVBFTkRTICs9ICJmcmVldHlwZSB4dHJhbnMgZm9udHNwcm90byBsaWJmb250ZW5jIHpsaWIiCisKK1hPUkdfUE4gPSAibGliWGZvbnQyIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gImI3Y2E4N2RmYWZlYjUyMDViMjhhMWU5MWFjM2VmZTg1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlOGFiN2ZkNzM3Y2NkZmU4N2UxZjAyYjU1ZjIyMWYwYmQ0NTAzYTFjNWYyOGJlNGVkNmE1NDU4NmJhYzljNGUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250XzEuNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTFkZGE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlhGb250OiBYIEZvbnQgcmFzdGVyaXNhdGlvbiBsaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJsaWJYZm9udCBwcm92aWRlcyB2YXJpb3VzIHNlcnZpY2VzIGZvciBYIHNlcnZlcnMsIG1vc3QgXAotbm90YWJseSBmb250IHNlbGVjdGlvbiBhbmQgcmFzdGVyaXNhdGlvbiAodGhyb3VnaCBleHRlcm5hbCBsaWJyYXJpZXMgXAotc3VjaCBhcyBmcmVldHlwZSkuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNDZjODA0MGYyZjczN2JjZDBjNDM1ZmViMmFiMWMyYyIKLQotREVQRU5EUyArPSAiZnJlZXR5cGUgeHRyYW5zIGZvbnRzcHJvdG8gbGliZm9udGVuYyB6bGliIgotUFJPVklERVMgPSAieGZvbnQiCi0KLVBFID0gIjEiCi0KLVhPUkdfUE4gPSAibGliWGZvbnQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjU0ZWU0MmJkMTc4ZDE4ZWJjN2E3M2FhY2ZkZTdmNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDI5NDVlYTY4ZGE0NDcxMDJmM2U2YzJiODk2YzFkMjA2MWZkMTE1ZGU5OTQwNGZhY2MyYWNhM2FkNzAxMGQ3MSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udF8xLjUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlmNzdmYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjQuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJYRm9udDogWCBGb250IHJhc3RlcmlzYXRpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAibGliWGZvbnQgcHJvdmlkZXMgdmFyaW91cyBzZXJ2aWNlcyBmb3IgWCBzZXJ2ZXJzLCBtb3N0IFwKK25vdGFibHkgZm9udCBzZWxlY3Rpb24gYW5kIHJhc3RlcmlzYXRpb24gKHRocm91Z2ggZXh0ZXJuYWwgbGlicmFyaWVzIFwKK3N1Y2ggYXMgZnJlZXR5cGUpLiIKKworcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCisKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTQ2YzgwNDBmMmY3MzdiY2QwYzQzNWZlYjJhYjFjMmMiCisKK0RFUEVORFMgKz0gImZyZWV0eXBlIHh0cmFucyBmb250c3Byb3RvIGxpYmZvbnRlbmMgemxpYiIKK1BST1ZJREVTID0gInhmb250IgorCitQRSA9ICIxIgorCitYT1JHX1BOID0gImxpYlhmb250IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjE2ZWFmMTU2ZWRkNzliNjgwMzhiNmE3YzQ0YWE5ZTliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFhN2Y3NDkwNzc0Yzg3ZjIwNTJkMTQ2ZDFlMGU2NDUxOGQzMmU2ODQ4MTg0YTE4NjU0ZThkMGJiNTc4ODMyNDIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuNy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC43LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZGYxZGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgWEtCIGtleW1hcCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAibGlieGtiY29tbW9uIGlzIGEga2V5bWFwIGNvbXBpbGVyIGFuZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2ggXAotcHJvY2Vzc2VzIGEgcmVkdWNlZCBzdWJzZXQgb2Yga2V5bWFwcyBhcyBkZWZpbmVkIGJ5IHRoZSBYS0Igc3BlY2lmaWNhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnhrYmNvbW1vbi5vcmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTI1ZWQ5ODA5ZTFmOGEwN2NmNGJjZThiMDllOGI4NyIKLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotCi1ERVBFTkRTID0gInV0aWwtbWFjcm9zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTQ3YmE2MDljYjAyMzliOTQ2MjEyN2Q1Y2Y4OTA4ZWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmE1OTMwNWQyZTE5ZTQ3YzI3ZWEwNjVjMmUwZGY5NmViYWM2YTNjNmU5N2UyOGFlNTYyMDA3M2I2MDg0ZTY4YiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnLyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLGxpYnhjYiB4a2V5Ym9hcmQtY29uZmlnLCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC44LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwZDBiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuOC4wLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiR2VuZXJpYyBYS0Iga2V5bWFwIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJsaWJ4a2Jjb21tb24gaXMgYSBrZXltYXAgY29tcGlsZXIgYW5kIHN1cHBvcnQgbGlicmFyeSB3aGljaCBcCitwcm9jZXNzZXMgYSByZWR1Y2VkIHN1YnNldCBvZiBrZXltYXBzIGFzIGRlZmluZWQgYnkgdGhlIFhLQiBzcGVjaWZpY2F0aW9uLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cueGtiY29tbW9uLm9yZyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1MjVlZDk4MDllMWY4YTA3Y2Y0YmNlOGIwOWU4Yjg3IgorTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCisKK0RFUEVORFMgPSAidXRpbC1tYWNyb3MgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZDBlNGM0YTEzN2QwYWM0NWJmNmIzMjhjODRjM2E4MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlODI5MjY1ZGIwNGUwYWViZmIwNTkxYjZkYzMzNzdiNjQ1OTk1NTgxNjc4NDZjM2Y1ZWU1YzVlNTM2NDFmZTZkIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3hrYmNvbW1vbi5vcmcvIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2NzIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsbGlieGNiIHhrZXlib2FyZC1jb25maWcsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzA0YzQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlc18xLjAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiWFJlczogWCBSZXNvdXJjZSBleHRlbnNpb24gbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAibGliWFJlcyBwcm92aWRlcyBhbiBYIFdpbmRvdyBTeXN0ZW0gY2xpZW50IGludGVyZmFjZSB0byBcCi10aGUgUmVzb3VyY2UgZXh0ZW5zaW9uIHRvIHRoZSBYIHByb3RvY29sLiAgVGhlIFJlc291cmNlIGV4dGVuc2lvbiBhbGxvd3MgXAotZm9yIFggY2xpZW50cyB0byBzZWUgYW5kIG1vbml0b3IgdGhlIFggcmVzb3VyY2UgdXNhZ2Ugb2YgdmFyaW91cyBjbGllbnRzIFwKLShwaXhtYXBzLCBldCBhbCkuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Yzg5NDQxYThkZjI2MWJkYzU2NTg3NDY1ZTEzYzdmYSIKLQotREVQRU5EUyArPSAibGlieGV4dCByZXNvdXJjZXByb3RvIgotCi1QRSA9ICIxIgotCi1YT1JHX1BOID0gImxpYlhyZXMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NWVmMjkyMDZhNmI1ODI1NGM4MWJlYTI4ZWM2Yzk1ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNjg5OTA1NGFhODdmODFiMTdiZWNjNjhlODY0NWIyNDBmMTQwNDY0Y2Y5MGM0MjYxNmViYjI2M2VjNWZhMGU1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMzRlNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyZXNfMS4yLjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJYUmVzOiBYIFJlc291cmNlIGV4dGVuc2lvbiBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJsaWJYUmVzIHByb3ZpZGVzIGFuIFggV2luZG93IFN5c3RlbSBjbGllbnQgaW50ZXJmYWNlIHRvIFwKK3RoZSBSZXNvdXJjZSBleHRlbnNpb24gdG8gdGhlIFggcHJvdG9jb2wuICBUaGUgUmVzb3VyY2UgZXh0ZW5zaW9uIGFsbG93cyBcCitmb3IgWCBjbGllbnRzIHRvIHNlZSBhbmQgbW9uaXRvciB0aGUgWCByZXNvdXJjZSB1c2FnZSBvZiB2YXJpb3VzIGNsaWVudHMgXAorKHBpeG1hcHMsIGV0IGFsKS4iCisKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjODk0NDFhOGRmMjYxYmRjNTY1ODc0NjVlMTNjN2ZhIgorCitERVBFTkRTICs9ICJsaWJ4ZXh0IHJlc291cmNlcHJvdG8iCisKK1BFID0gIjEiCisKK1hPUkdfUE4gPSAibGliWHJlcyIKKworU1JDX1VSSVttZDVzdW1dID0gIjVkNmQ0NDNkMWFiYzhlMWY2ZmMxYzU3ZmIyNzcyOWJiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmNzVjMTY0MzQ4OGU2NGE3Y2ZiY2VkMjc0ODZmMGY5NDQ4MDEzMTljODRjMThkM2JkM2RhNmJmMjhjODEyZDQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZS9leHRlbnNpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2UvZXh0ZW5zaW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2M5ZTA1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2UvZXh0ZW5zaW9ucy5wYXRjaApAQCAtMCwwICsxLDE3IEBACitXaXRoIGdsaWJjIDIuMjcgbWVtZmRfY3JlYXRlIGlzIGJlaGluZCBhIF9HTlVfU09VUkNFIGd1YXJkLCBzbyBjYWxsCitBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMgdG8gZ2V0IHRoYXQgZGVmaW5lZC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDBjOTg4NzUuLmViZjRkZWUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTI5LDQgKzI5LDYgQEAgQUNfQ09ORklHX1NSQ0RJUihbTWFrZWZpbGUuYW1dKQorIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCisgCisrQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCisrCisgIyBJbml0aWFsaXplIEF1dG9tYWtlCisgQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBkaXN0LWJ6aXAyXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMi5iYgppbmRleCBhZTM0YjFmLi4xZGYwNjhkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2VfMS4yLmJiCkBAIC0xMyw1ICsxMyw3IEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAorU1JDX1VSSSArPSAiZmlsZTovL2V4dGVuc2lvbnMucGF0Y2giCisKIFNSQ19VUklbbWQ1c3VtXSA9ICI2NjY2MmU3Njg5OTExMmMwZjk5ZTIyZjJmYzc3NWE3ZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjFiMmQxZmQ3OGMxZWZiZTFmMmMxNmRhZTFjYjIzZjhmZDIzMWRjZjg5MTQ2NWI4ZGViZTYzNmE5MDU0YjBjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFhNTFhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCi0KLURFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKLVdpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAotZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCi1XaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCi1zeXN0ZW1zLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKLQotU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZjk0OThlODk1NDkwN2QwYTQ3ZjBmN2IzZDIxZTFlZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMGMxNzA0OWZhZTEyOWZjMTQ4NzU2NTZkYTlhYTMwOTllMzAzMWQ2Y2UwZWUxZDc3YWFlMTkwZmQ5ZWRjZWM1IgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgdXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCi0gICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZDg5NGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMi5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIktleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggV2luZG93IgorCitERVNDUklQVElPTiA9ICJUaGUgbm9uLWFyY2gga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBcCitXaW5kb3cuICBUaGUgZ29hbCBpcyB0byBwcm92aWRlIHRoZSBjb25zaXN0ZW50LCB3ZWxsLXN0cnVjdHVyZWQsIFwKK2ZyZXF1ZW50bHkgcmVsZWFzZWQgb3BlbiBzb3VyY2Ugb2YgWCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGEgZm9yIFggXAorV2luZG93IFN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuICBUaGUgcHJvamVjdCBpcyB0YXJnZXRlZCB0byBYS0ItYmFzZWQgXAorc3lzdGVtcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9YS2V5Ym9hcmRDb25maWciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhrZXlib2FyZC1jb25maWciCisKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU3ZjIxY2E3ZGI5NzVjNjM0NjdkMmU3NjI0YTEyZjkiCisKK1NSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kYXRhL3hrZXlib2FyZC1jb25maWcvJHtCUE59LSR7UFZ9LnRhci5iejIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYjYxZmIzZmQ0MTllODE3ZGY1NzJiMGM4ZDk0YTg4MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZWFlYzk5ODlmYmM0NDMzNThiNDM4NjQ0MzdiN2I2ZDM5Y2FmZjA3ODkwYTRhODA1NTEwNWNlOWZjYWE1OWJkIgorCitTRUNUSU9OID0gIngxMS9saWJzIgorREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgdXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCisgICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NhbGlicmF0ZXByb3RvX2dpdC5iYgppbmRleCAzYTk4OTI2Li5lYjRiNDIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90b19naXQuYmIKQEAgLTE3LDUgKzE3LDUgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ2l0L3hvcmcvcHJvdG8vY2FsaWJyYXRlcHJvdG8gXAogICAgICAgICAgICBmaWxlOi8vZml4LnBhdGNoO2FwcGx5PXllcyIKIFMgPSAiJHtXT1JLRElSfS9naXQiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by9uby1weXRob24tbmF0aXZlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by9uby1weXRob24tbmF0aXZlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWI2MDg4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8vbm8tcHl0aG9uLW5hdGl2ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVVwc3RyZWFtIHVzZXMgQU1fUEFUSF9QWVRIT04gdG8gZmluZCBhIHB5dGhvbiBiaW5hcnkgYW5kIGFzayBpdCB3aGVyZSB0byBpbnN0YWxsCi1saWJyYXJpZXMuICBUaGlzIG1lYW5zIHdlIGVpdGhlciBuZWVkIHRvIGRlcGVuZCBvbiBweXRob24tbmF0aXZlIChsYXJnZSBidWlsZAotZGVwZW5kZW5jeSwgZWFybHkgaW4gdGhlIGJ1aWxkKSBvciB1c2UgdGhlIGhvc3QgcHl0aG9uIChweXRob25kaXIgcmVmbGVjdHMgdGhlCi1ob3N0IGFuZCBub3QgdGhlIHRhcmdldCwgYnJlYWtzIGJ1aWxkcykuCi0KLVRoZSB0aGlyZCBvcHRpb24gaXMgdG8ganVzdCBoYXJkY29kZSB0aGUgcGF0aCB3aGVyZSB0aGUgbW9kdWxlIGdvZXMsIGFzIG1vc3QKLWNhbGxlcnMgb2YgdGhlIGNvZGUgdXNlIHBrZy1jb25maWcgdG8gZmluZCB3aGVyZSBpdCB3YXMgaW5zdGFsbGVkIGFueXdheS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBkMTQwYmZlLi5jN2I2OGRhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNCw3ICsxNCwxMCBAQCBpZiB0ZXN0ICIkWE1MTElOVCIgPSAibm8iOyB0aGVuCi0gICAgQUNfTVNHX1dBUk4oW3htbGxpbnQgbm90IGZvdW5kOyB1bmFibGUgdG8gdmFsaWRhdGUgYWdhaW5zdCBzY2hlbWEuXSkKLSBmaQotCi0tQU1fUEFUSF9QWVRIT04oWzIuNV0pCi0rcHl0aG9uZGlyPSIke2xpYmRpcn0veGNiLXByb3RvIgotK0FDX1NVQlNUKHB5dGhvbmRpcikKLStQWVRIT049InB5dGhvbjMiCi0rQUNfU1VCU1QoUFlUSE9OKQotCi0geGNiaW5jbHVkZWRpcj0nJHtkYXRhZGlyfS94Y2InCi0gQUNfU1VCU1QoeGNiaW5jbHVkZWRpcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMi5iYgppbmRleCBiYzA0YmM0Li4yNWE4MzczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvXzEuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90b18xLjEyLmJiCkBAIC0xMSw4ICsxMSw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzYzYjA4MWNiMTBjMjIzNDM1YjAxZTAwZGMwYWJhNyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZHJpMi54bWw7YmVnaW5saW5lPTI7ZW5kbGluZT0yODttZDU9Zjg3NjNiMTNmZjQzMmU4NTk3ZTBkNjEwY2Y1OThlNjUiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC94Y2ItcHJvdG8tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1weXRob24tbmF0aXZlLnBhdGNoIFwKK1NSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC8ke0JQfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS13aGl0ZXNwYWNlLXVzZS1jb25zaXN0ZW50LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItcHJpbnQtaXMtYS1mdW5jdGlvbi1hbmQtbmVlZHMtcGFyZW50aGVzZXMucGF0Y2ggXAogICAgICAgICAgICAiCkBAIC0yMSw2ICsyMCwxMCBAQAogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAorIyBGb3JjZSB0aGUgdXNlIG9mIFB5dGhvbiAzIGFuZCBhIHNwZWNpZmljIGxpYnJhcnkgcGF0aCBzbyB3ZSBkb24ndCBuZWVkIHRvCisjIGRlcGVuZCBvbiBweXRob24zLW5hdGl2ZQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIlBZVEhPTj1weXRob24zIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JHtsaWJkaXJ9L3hjYi1wcm90byIKKwogUEFDS0FHRVMgKz0gInB5dGhvbi14Y2JnZW4iCiAKIEZJTEVTXyR7UE59ID0gIiIKQEAgLTMyLDkgKzM1LDE5IEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBNYWtlZmlsZSdzIGRvX2luc3RhbGwgY3JlYXRlcyAucHljIGZpbGVzIGZvciBweXRob24zLCBub3cgYWxzbyBjcmVhdGUKLSAgICAjIHRoZW0gZm9yIHB5dGhvbjIgc28gdGhhdCB0aGV5IHdpbGwgYmUgcmVjb3JkZWQgYnkgbWFuaWZlc3QsIGFuZCBjYW4gYmUKLSAgICAjIGNsZWFuZWQgY29ycmVjdGx5LgotICAgIHB5dGhvbiAtbSBweV9jb21waWxlICR7RH0ke2xpYmRpcn0veGNiLXByb3RvL3hjYmdlbi8qLnB5CisjIE5lZWQgdG8gZG8gdGhpcyBkYW5jZSBiZWNhdXNlIHdlJ3JlIGZvcmNpbmcgdGhlIHVzZSBvZiBob3N0IFB5dGhvbiBhYm92ZSBhbmQKKyMgaWYgeGNiLXByb3RvIGlzIGJ1aWx0IHdpdGggUHkzLjUgYW5kIHRoZW4gcmUtdXNlZCBmcm9tIHNzdGF0ZSBvbiBhIGhvc3Qgd2l0aAorIyBQeTMuNiB0aGUgc2Vjb25kIGJ1aWxkIHdpbGwgd3JpdGUgbmV3IGNhY2hlIGZpbGVzIGludG8gdGhlIHN5c3Jvb3Qgd2hpY2ggd29uJ3QKKyMgYmUgbGlzdGVkIGluIHRoZSBtYW5pZmVzdCBzbyB3b24ndCBiZSBkZWxldGVkLCByZXN1bHRpbmcgaW4gYW4gZXJyb3Igb24KKyMgcmVidWlsZHMuICBTb2x2ZSB0aGlzIGJ5IGRlbGV0aW5nIHRoZSBlbnRpcmUgY2FjaGUgZGlyZWN0b3J5IHdoZW4gdGhpcyBwYWNrYWdlCisjIGlzIHJlbW92ZWQgZnJvbSB0aGUgc3lzcm9vdC4KK1NTVEFURVBPU1RJTlNURlVOQ1MgKz0gInhjYl9zc3RhdGVfcG9zdGluc3QiCit4Y2Jfc3N0YXRlX3Bvc3RpbnN0KCkgeworCWlmIFsgIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290IiAtbyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiIF0KKwl0aGVuCisJCWNhdCA8PEVPRiA+JHtTU1RBVEVfSU5TVF9QT1NUUk19CisjIS9iaW4vc2gKK3JtIC1yZiAke2xpYmRpcn0veGNiLXByb3RvL3hjYmdlbi9fX3B5Y2FjaGVfXworRU9GCisJZmkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG8veHByb3RvX2ZpeF9mb3JfeDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90by94cHJvdG9fZml4X2Zvcl94MzIucGF0Y2gKaW5kZXggOGE1ZmY1OC4uNGY5ZWQ5OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90by94cHJvdG9fZml4X2Zvcl94MzIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90by94cHJvdG9fZml4X2Zvcl94MzIucGF0Y2gKQEAgLTEwLDEzICsxMCwxNSBAQAogUmVjZWl2ZWQgdGhpcyBwYXRjaCBmcm9tIEguSi4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzEKIAotLS0tIHhwcm90by03LjAuMjIvWG1kLmgueDMyCTIwMDktMDctMTEgMDQ6MTk6NTAuMDAwMDAwMDAwIC0wNzAwCi0rKysgeHByb3RvLTcuMC4yMi9YbWQuaAkyMDExLTExLTMwIDE3OjE0OjE5LjI5MDM5NTg5MyAtMDgwMAorSW5kZXg6IHhwcm90by03LjAuMzEvWG1kLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB4cHJvdG8tNy4wLjMxLm9yaWcvWG1kLmgKKysrKyB4cHJvdG8tNy4wLjMxL1htZC5oCiBAQCAtNjIsNyArNjIsNiBAQCBTT0ZUV0FSRS4KICAgICAgIGRlZmluZWQoX19pYTY0X18pIHx8IGRlZmluZWQoaWE2NCkgfHwgXAogICAgICAgZGVmaW5lZChfX3NwYXJjNjRfXykgfHwgXAogICAgICAgZGVmaW5lZChfX3MzOTB4X18pIHx8IFwKIC0gICAgIGRlZmluZWQoX19hbWQ2NF9fKSB8fCBkZWZpbmVkKGFtZDY0KSB8fCBcCiAgICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gIyAgZGVmaW5lIExPTkc2NAkJCQkvKiAzMi82NC1iaXQgYXJjaGl0ZWN0dXJlICovCi0gIyBlbmRpZgorICMgIGlmICFkZWZpbmVkKF9fSUxQMzJfXykgLyogYW1kNjQteDMyIGlzIDMyYml0ICovCisgIyAgIGRlZmluZSBMT05HNjQJCQkJLyogMzIvNjQtYml0IGFyY2hpdGVjdHVyZSAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYgppbmRleCA0YzQ0MmJjLi41NDIwYjdkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYgpAQCAtMTAsNyArMTAsNiBAQAogUyA9ICIke1dPUktESVJ9IgogCiBDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mIgotQ09ORkZJTEVTXyR7UE59X2FwcGVuZF9saWJjLW11c2wgPSAiICR7c3lzY29uZmRpcn0vWDExL3hvcmcuY29uZi5kLzEwLXByZWxvYWQtbW9kdWxlcy5jb25mIgogCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgogQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jCmluZGV4IDg2M2Q4MGMuLmNmMjI4NmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYwpAQCAtMTE3LDcgKzExNyw2IEBACiAgICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0vZXRjL1gxMSBcCiAgICAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpcj0vdmFyIFwKICAgICAgICAgICAgICAgICAgLS13aXRoLXhrYi1vdXRwdXQ9L3Zhci9saWIveGtiIFwKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0gXAogIgogCiBPUEVOR0xfUEtHQ09ORklHUyA9ICJkcmkgZ2x4IGdsYW1vciBkcmkzIHhzaG1mZW5jZSIKQEAgLTEzMyw3ICsxMzIsNyBAQAogIyBEUkkzIHJlcXVpcmVzIHhzaG1mZW5jZSB0byBhbHNvIGJlIGVuYWJsZWQKIFBBQ0tBR0VDT05GSUdbZHJpM10gPSAiLS1lbmFibGUtZHJpMywtLWRpc2FibGUtZHJpMyxkcmkzcHJvdG8iCiBQQUNLQUdFQ09ORklHW2dseF0gPSAiLS1lbmFibGUtZ2x4LC0tZGlzYWJsZS1nbHgsZ2xwcm90byB2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbGlieDExIgotUEFDS0FHRUNPTkZJR1tnbGFtb3JdID0gIi0tZW5hYmxlLWdsYW1vciwtLWRpc2FibGUtZ2xhbW9yLGxpYmVwb3h5LGxpYmVnbCIKK1BBQ0tBR0VDT05GSUdbZ2xhbW9yXSA9ICItLWVuYWJsZS1nbGFtb3IsLS1kaXNhYmxlLWdsYW1vcixsaWJlcG94eSB2aXJ0dWFsL2xpYmdibSxsaWJlZ2wiCiBQQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS1lbmFibGUtbGlidW53aW5kLC0tZGlzYWJsZS1saWJ1bndpbmQsbGlidW53aW5kIgogUEFDS0FHRUNPTkZJR1t4c2htZmVuY2VdID0gIi0tZW5hYmxlLXhzaG1mZW5jZSwtLWRpc2FibGUteHNobWZlbmNlLGxpYnhzaG1mZW5jZSIKIFBBQ0tBR0VDT05GSUdbeG1sdG9dID0gIi0td2l0aC14bWx0bywgLS13aXRob3V0LXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEteGY4NnBjaUJ1cy5jLXVzZS1JbnRlbC1kZHgtb25seS1mb3ItcHJlLWdlbjQtaGFyZHdhci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLXhmODZwY2lCdXMuYy11c2UtSW50ZWwtZGR4LW9ubHktZm9yLXByZS1nZW40LWhhcmR3YXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA1ZWVjNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLXhmODZwY2lCdXMuYy11c2UtSW50ZWwtZGR4LW9ubHktZm9yLXByZS1nZW40LWhhcmR3YXIucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSBkNzdjZGM1ZTFlZWUyNjgyMWFiOThjOTQ3YWJlYTUzZmI3YjE4ZmU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2FsaWZvcm5pYSBTdWxsaXZhbiA8Y2FsaWZvcm5pYS5sLnN1bGxpdmFuQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgMTYgTWFyIDIwMTggMTc6MjM6MTEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0geGY4NnBjaUJ1cy5jOiB1c2UgSW50ZWwgZGR4IG9ubHkgZm9yIHByZS1nZW40IGhhcmR3YXJlCisKK1VzZSBpbnRlbCBkZHggb25seSBvbiBwcmUtZ2VuNCBodywgbmV3ZXIgb25lcyB3aWxsIGZhbGwgYmFjayB0byBtb2Rlc2V0dGluZworQXV0aG9yOiBUaW1vIEFhbHRvbmVuIDx0amFhbHRvbkBkZWJpYW4ub3JnPgorCitJbnN0ZWFkIG9mIGRlZmF1bHRpbmcgdG8gdGhlIEludGVsIGRyaXZlciBmb3IgYWxsIEludGVsIGhhcmR3YXJlLCBvbmx5CitkZWZhdWx0IGl0IGZvciBvbGRlciBoYXJkd2FyZSBmb3Igd2hpY2ggaXQgaGFzIHNob3duIHRvIGJlIGJldHRlciBmb3IuCisKK090aGVycyBmYWxsIHRocm91Z2ggdG8gdGhlIC1tb2Rlc2V0dGluZyBkZWZhdWx0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW0RlYmlhbi9GZWRvcmEgcGF0Y2gKK2h0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMveG9yZy14MTEtc2VydmVyL2MvZWU1MTVlNDRiMDdlMzc2ODlhYmY0OGNmMmZmZmI0MTU3OGYzYmMxZF0KKworU2lnbmVkLW9mZi1ieTogQ2FsaWZvcm5pYSBTdWxsaXZhbiA8Y2FsaWZvcm5pYS5sLnN1bGxpdmFuQGludGVsLmNvbT4KKy0tLQorIGh3L3hmcmVlODYvY29tbW9uL3hmODZwY2lCdXMuYyB8IDE4ICsrKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ody94ZnJlZTg2L2NvbW1vbi94Zjg2cGNpQnVzLmMgYi9ody94ZnJlZTg2L2NvbW1vbi94Zjg2cGNpQnVzLmMKK2luZGV4IGU2MWFlMGNkNC4uZDcwYzk5MTk3IDEwMDY0NAorLS0tIGEvaHcveGZyZWU4Ni9jb21tb24veGY4NnBjaUJ1cy5jCisrKysgYi9ody94ZnJlZTg2L2NvbW1vbi94Zjg2cGNpQnVzLmMKK0BAIC0xMTczLDcgKzExNzMsMjMgQEAgeGY4NlZpZGVvUHRyVG9Ecml2ZXJMaXN0KHN0cnVjdCBwY2lfZGV2aWNlICpkZXYsCisgCQljYXNlIDB4MGJlZjoKKyAJCQkvKiBVc2UgZmJkZXYvdmVzYSBkcml2ZXIgb24gT2FrdHJhaWwsIE1lZGZpZWxkLCBDRFYgKi8KKyAJCQlicmVhazsKKy0JCWRlZmF1bHQ6CisrCQkvKiBEZWZhdWx0IHRvIGludGVsIG9ubHkgb24gcHJlLWdlbjQgY2hpcHMgKi8KKysJCWNhc2UgMHgzNTc3OgorKwkJY2FzZSAweDI1NjI6CisrCQljYXNlIDB4MzU4MjoKKysJCWNhc2UgMHgzNThlOgorKwkJY2FzZSAweDI1NzI6CisrCQljYXNlIDB4MjU4MjoKKysJCWNhc2UgMHgyNThhOgorKwkJY2FzZSAweDI1OTI6CisrCQljYXNlIDB4Mjc3MjoKKysJCWNhc2UgMHgyN2EyOgorKwkJY2FzZSAweDI3YWU6CisrCQljYXNlIDB4MjliMjoKKysJCWNhc2UgMHgyOWMyOgorKwkJY2FzZSAweDI5ZDI6CisrCQljYXNlIDB4YTAwMToKKysJCWNhc2UgMHhhMDExOgorIAkJCWRyaXZlckxpc3RbMF0gPSAiaW50ZWwiOworIAkJCWJyZWFrOworICAgICAgICAgfQorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDItY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXNjYW5uZXItYW5kLXByb3RvY29scy1sb2NhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAyLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1zY2FubmVyLWFuZC1wcm90b2NvbHMtbG9jYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZmQwN2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDItY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXNjYW5uZXItYW5kLXByb3RvY29scy1sb2NhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gOTYzNDI4ZjkxNGM0MjI3MGQzMzEyZDRmMGMwODQwNTY1NTIxNTM0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDE2IE5vdiAyMDE2IDAwOjQxOjUxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBjb25maWd1cmUuYWM6IEZpeCB3YXlsYW5kLXNjYW5uZXIgYW5kIHByb3RvY29scyBsb2NhdGlvbnMKLQotV2Ugd2FudCB0byB1c2UgdGhlIHdheWxhbmQtc2Nhbm5lciBpbiBwYXRoIChuYXRpdmUgc3lzcm9vdCkKLWluc3RlYWQgb2YgdXNpbmcgcGtnLWNvbmZpZyB3aGljaCBnaXZlcyB1cyB0YXJnZXQgcGF0aHMuCi0KLVRoZSBwcm90b2NvbHMgcGF0aHMgb24gdGhlIG90aGVyIGhhbmQgbmVlZCB0byBiZSBwcmVmaXhlZCB3aXRoIHRoZQotKGFsbGFyY2gpIHN5c3Jvb3QgYmVjYXVzZSwgYWdhaW4sIHBrZy1jb25maWcgZ2l2ZXMgdXMgdGFyZ2V0IHBhdGhzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDYgKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNThmMTU2Ny4uMzgzYTdkZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjUyNSwxMSArMjUyNSw5IEBAIGlmIHRlc3QgIngkWFdBWUxBTkQiID0geHllczsgdGhlbgotIAkJQUNfTVNHX0VSUk9SKFtYd2F5bGFuZCByZXF1aXJlcyBDTE9DS19NT05PVE9OSUMgc3VwcG9ydC5dKQotIAlmaQotIAotLQlXQVlMQU5EX1BSRUZJWD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcmVmaXggd2F5bGFuZC1jbGllbnRgCi0tCUFDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0sLAotLQkJICAgICBbJHtXQVlMQU5EX1BSRUZJWH0vYmluJFBBVEhfU0VQQVJBVE9SJFBBVEhdKQotKwlBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdKQotIAotLQlBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCBgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSsJQUNfU1VCU1QoV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUiwgJHtXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUn1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSBmaQotIAotIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2M4MDQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotRnJvbSAyMTVmODk0OTY1ZGY1ZmIwYmI0NWIxMDdkODQ1MjRlNzAwZDIwNzNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFsIFNyYiA8bXNyYkBzdXNlLmNvbT4KLURhdGU6IFdlZCwgMjQgTWF5IDIwMTcgMTU6NTQ6NDAgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZGl4OiBEaXNhbGxvdyBHZW5lcmljRXZlbnQgaW4gU2VuZEV2ZW50IHJlcXVlc3QuCi0KLVRoZSBTZW5kRXZlbnQgcmVxdWVzdCBob2xkcyB4RXZlbnQgd2hpY2ggaXMgZXhhY3RseSAzMiBieXRlcyBsb25nLCBubyBtb3JlLAotbm8gbGVzcy4gQm90aCBQcm9jU2VuZEV2ZW50IGFuZCBTUHJvY1NlbmRFdmVudCB2ZXJpZnkgdGhhdCB0aGUgcmVjZWl2ZWQgZGF0YQotZXhhY3RseSBtYXRjaCB0aGUgcmVxdWVzdCBzaXplLiBIb3dldmVyIG5vdGhpbmcgc3RvcHMgdGhlIGNsaWVudCBmcm9tIHBhc3NpbmcKLWluIGV2ZW50IHdpdGggeEV2ZW50Ojp0eXBlID0gR2VuZXJpY0V2ZW50IGFuZCBhbnkgdmFsdWUgb2YKLXhHZW5lcmljRXZlbnQ6Omxlbmd0aC4KLQotSW4gdGhlIGNhc2Ugb2YgUHJvY1NlbmRFdmVudCwgdGhlIGV2ZW50IHdpbGwgYmUgZXZlbnR1YWxseSBwYXNzZWQgdG8KLVdyaXRlRXZlbnRzVG9DbGllbnQgd2hpY2ggd2lsbCBzZWUgdGhhdCBpdCBpcyBHZW5lcmljIGV2ZW50IGFuZCBjb3B5IHRoZQotYXJiaXRyYXJ5IGxlbmd0aCBmcm9tIHRoZSByZWNlaXZlIGJ1ZmZlciAoYW5kIHBvc3NpYmx5IHBhc3QgaXQpIGFuZCBzZW5kIGl0IHRvCi10aGUgb3RoZXIgY2xpZW50LiBUaGlzIGFsbG93cyBjbGllbnRzIHRvIGNvcHkgdW5pdGlhbGl6ZWQgaGVhcCBtZW1vcnkgb3V0IG9mIFgKLXNlcnZlciBvciB0byBjcmFzaCBpdC4KLQotSW4gY2FzZSBvZiBTUHJvY1NlbmRFdmVudCwgaXQgd2lsbCBhdHRlbXB0IHRvIHN3YXAgdGhlIGluY29taW5nIGV2ZW50IGJ5Ci1jYWxsaW5nIGEgc3dhcHBpbmcgZnVuY3Rpb24gZnJvbSB0aGUgRXZlbnRTd2FwVmVjdG9yIGFycmF5LiBUaGUgc3dhcHBlZCBldmVudAotaXMgd3JpdHRlbiB0byB0YXJnZXQgYnVmZmVyLCB3aGljaCBpbiB0aGlzIGNhc2UgaXMgbG9jYWwgeEV2ZW50IHZhcmlhYmxlLiBUaGUKLXhFdmVudCB2YXJpYWJsZSBpcyAzMiBieXRlcyBsb25nLCBidXQgdGhlIHN3YXBwaW5nIGZ1bmN0aW9ucyBmb3IgR2VuZXJpY0V2ZW50cwotZXhwZWN0IHRoYXQgdGhlIHRhcmdldCBidWZmZXIgaGFzIHNpemUgbWF0Y2hpbmcgdGhlIHNpemUgb2YgdGhlIHNvdXJjZQotR2VuZXJpY0V2ZW50LiBUaGlzIGFsbG93cyBjbGllbnRzIHRvIGNhdXNlIHN0YWNrIGJ1ZmZlciBvdmVyZmxvd3MuCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTcmIgPG1zcmJAc3VzZS5jb20+Ci1SZXZpZXdlZC1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEh1dHRlcmVyIDxwZXRlci5odXR0ZXJlckB3aG8tdC5uZXQ+Ci0KLUNWRTogQ1ZFLTIwMTctMTA5NzEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvY29tbWl0Lz9pZD0yMTVmODk0OTY1ZGY1ZmIwYmI0NWIxMDdkODQ1MjRlNzAwZDIwNzNjXQotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZGl4L2V2ZW50cy5jICB8ICAgIDYgKysrKysrCi0gZGl4L3N3YXByZXEuYyB8ICAgIDcgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZGl4L2V2ZW50cy5jIGIvZGl4L2V2ZW50cy5jCi1pbmRleCAzZTNhMDFlLi5kM2EzM2VhIDEwMDY0NAotLS0tIGEvZGl4L2V2ZW50cy5jCi0rKysgYi9kaXgvZXZlbnRzLmMKLUBAIC01MzY2LDYgKzUzNjYsMTIgQEAgUHJvY1NlbmRFdmVudChDbGllbnRQdHIgY2xpZW50KQotICAgICAgICAgY2xpZW50LT5lcnJvclZhbHVlID0gc3R1ZmYtPmV2ZW50LnUudS50eXBlOwotICAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotICAgICB9Ci0rICAgIC8qIEdlbmVyaWMgZXZlbnRzIGNhbiBoYXZlIHZhcmlhYmxlIHNpemUsIGJ1dCBTZW5kRXZlbnQgcmVxdWVzdCBob2xkcwotKyAgICAgICBleGFjdGx5IDMyQiBvZiBldmVudCBkYXRhLiAqLwotKyAgICBpZiAoc3R1ZmYtPmV2ZW50LnUudS50eXBlID09IEdlbmVyaWNFdmVudCkgewotKyAgICAgICAgY2xpZW50LT5lcnJvclZhbHVlID0gc3R1ZmYtPmV2ZW50LnUudS50eXBlOwotKyAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotKyAgICB9Ci0gICAgIGlmIChzdHVmZi0+ZXZlbnQudS51LnR5cGUgPT0gQ2xpZW50TWVzc2FnZSAmJgotICAgICAgICAgc3R1ZmYtPmV2ZW50LnUudS5kZXRhaWwgIT0gOCAmJgotICAgICAgICAgc3R1ZmYtPmV2ZW50LnUudS5kZXRhaWwgIT0gMTYgJiYgc3R1ZmYtPmV2ZW50LnUudS5kZXRhaWwgIT0gMzIpIHsKLWRpZmYgLS1naXQgYS9kaXgvc3dhcHJlcS5jIGIvZGl4L3N3YXByZXEuYwotaW5kZXggNzE5ZTliOC4uNjc4NTA1OSAxMDA2NDQKLS0tLSBhL2RpeC9zd2FwcmVxLmMKLSsrKyBiL2RpeC9zd2FwcmVxLmMKLUBAIC0yOTIsNiArMjkyLDEzIEBAIFNQcm9jU2VuZEV2ZW50KENsaWVudFB0ciBjbGllbnQpCi0gICAgIHN3YXBsKCZzdHVmZi0+ZGVzdGluYXRpb24pOwotICAgICBzd2FwbCgmc3R1ZmYtPmV2ZW50TWFzayk7Ci0gCi0rICAgIC8qIEdlbmVyaWMgZXZlbnRzIGNhbiBoYXZlIHZhcmlhYmxlIHNpemUsIGJ1dCBTZW5kRXZlbnQgcmVxdWVzdCBob2xkcwotKyAgICAgICBleGFjdGx5IDMyQiBvZiBldmVudCBkYXRhLiAqLwotKyAgICBpZiAoc3R1ZmYtPmV2ZW50LnUudS50eXBlID09IEdlbmVyaWNFdmVudCkgewotKyAgICAgICAgY2xpZW50LT5lcnJvclZhbHVlID0gc3R1ZmYtPmV2ZW50LnUudS50eXBlOwotKyAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotKyAgICB9Ci0rCi0gICAgIC8qIFN3YXAgZXZlbnQgKi8KLSAgICAgcHJvYyA9IEV2ZW50U3dhcFZlY3RvcltzdHVmZi0+ZXZlbnQudS51LnR5cGUgJiAwMTc3XTsKLSAgICAgaWYgKCFwcm9jIHx8IHByb2MgPT0gTm90SW1wbGVtZW50ZWQpICAgICAgICAvKiBubyBzd2FwcGluZyBwcm9jOyBpbnZhbGlkIGV2ZW50IHR5cGU/ICovCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL0NWRS0yMDE3LTEwOTcxLTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM5ODg3YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLUZyb20gOGNhZWQ0ZGYzNmIxZjgwMmI0OTkyZWRjZmQyODJjYmVlZWMzNWQ5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhbCBTcmIgPG1zcmJAc3VzZS5jb20+Ci1EYXRlOiBXZWQsIDI0IE1heSAyMDE3IDE1OjU0OjQxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFhpOiBWZXJpZnkgYWxsIGV2ZW50cyBpbiBQcm9jWFNlbmRFeHRlbnNpb25FdmVudC4KLQotVGhlIHJlcXVpcmVtZW50IGlzIHRoYXQgZXZlbnRzIGhhdmUgdHlwZSBpbiByYW5nZQotRVhURU5TSU9OX0VWRU5UX0JBU0UuLmxhc3RFdmVudCwgYnV0IGl0IHdhcyB0ZXN0ZWQKLW9ubHkgZm9yIGZpcnN0IGV2ZW50IG9mIGFsbC4KLQotU2lnbmVkLW9mZi1ieTogTWljaGFsIFNyYiA8bXNyYkBzdXNlLmNvbT4KLVJldmlld2VkLWJ5OiBQZXRlciBIdXR0ZXJlciA8cGV0ZXIuaHV0dGVyZXJAd2hvLXQubmV0PgotU2lnbmVkLW9mZi1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLQotQ1ZFOiBDVkUtMjAxNy0xMDk3MQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcveHNlcnZlci9jb21taXQvP2lkPThjYWVkNGRmMzZiMWY4MDJiNDk5MmVkY2ZkMjgyY2JlZWVjMzVkOWRdCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBYaS9zZW5kZXhldi5jIHwgICAxMiArKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvWGkvc2VuZGV4ZXYuYyBiL1hpL3NlbmRleGV2LmMKLWluZGV4IDFjZjExOGEuLjVlNjNiZmMgMTAwNjQ0Ci0tLS0gYS9YaS9zZW5kZXhldi5jCi0rKysgYi9YaS9zZW5kZXhldi5jCi1AQCAtMTE3LDcgKzExNyw3IEBAIFNQcm9jWFNlbmRFeHRlbnNpb25FdmVudChDbGllbnRQdHIgY2xpZW50KQotIGludAotIFByb2NYU2VuZEV4dGVuc2lvbkV2ZW50KENsaWVudFB0ciBjbGllbnQpCi0gewotLSAgICBpbnQgcmV0OwotKyAgICBpbnQgcmV0LCBpOwotICAgICBEZXZpY2VJbnRQdHIgZGV2OwotICAgICB4RXZlbnQgKmZpcnN0OwotICAgICBYRXZlbnRDbGFzcyAqbGlzdDsKLUBAIC0xNDEsMTAgKzE0MSwxMiBAQCBQcm9jWFNlbmRFeHRlbnNpb25FdmVudChDbGllbnRQdHIgY2xpZW50KQotICAgICAvKiBUaGUgY2xpZW50J3MgZXZlbnQgdHlwZSBtdXN0IGJlIG9uZSBkZWZpbmVkIGJ5IGFuIGV4dGVuc2lvbi4gKi8KLSAKLSAgICAgZmlyc3QgPSAoKHhFdmVudCAqKSAmc3R1ZmZbMV0pOwotLSAgICBpZiAoISgoRVhURU5TSU9OX0VWRU5UX0JBU0UgPD0gZmlyc3QtPnUudS50eXBlKSAmJgotLSAgICAgICAgICAoZmlyc3QtPnUudS50eXBlIDwgbGFzdEV2ZW50KSkpIHsKLS0gICAgICAgIGNsaWVudC0+ZXJyb3JWYWx1ZSA9IGZpcnN0LT51LnUudHlwZTsKLS0gICAgICAgIHJldHVybiBCYWRWYWx1ZTsKLSsgICAgZm9yIChpID0gMDsgaSA8IHN0dWZmLT5udW1fZXZlbnRzOyBpKyspIHsKLSsgICAgICAgIGlmICghKChFWFRFTlNJT05fRVZFTlRfQkFTRSA8PSBmaXJzdFtpXS51LnUudHlwZSkgJiYKLSsgICAgICAgICAgICAoZmlyc3RbaV0udS51LnR5cGUgPCBsYXN0RXZlbnQpKSkgewotKyAgICAgICAgICAgIGNsaWVudC0+ZXJyb3JWYWx1ZSA9IGZpcnN0W2ldLnUudS50eXBlOwotKyAgICAgICAgICAgIHJldHVybiBCYWRWYWx1ZTsKLSsgICAgICAgIH0KLSAgICAgfQotIAotICAgICBsaXN0ID0gKFhFdmVudENsYXNzICopIChmaXJzdCArIHN0dWZmLT5udW1fZXZlbnRzKTsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGJhNDgxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBiYTMzNmIyNDA1MjEyMmIxMzY0ODY5NjFjODJkZWFjNzZiYmRlNDU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFsIFNyYiA8bXNyYkBzdXNlLmNvbT4KLURhdGU6IFdlZCwgMjQgTWF5IDIwMTcgMTU6NTQ6NDIgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gWGk6IERvIG5vdCB0cnkgdG8gc3dhcCBHZW5lcmljRXZlbnQuCi0KLVRoZSBTUHJvY1hTZW5kRXh0ZW5zaW9uRXZlbnQgbXVzdCBub3QgYXR0ZW1wdCB0byBzd2FwIEdlbmVyaWNFdmVudCBiZWNhdXNlCi1pdCBpcyBhc3N1bWluZyB0aGF0IHRoZSBldmVudCBoYXMgZml4ZWQgc2l6ZSBhbmQgZ2l2ZXMgdGhlIHN3YXBwaW5nIGZ1bmN0aW9uCi14RXZlbnQtc2l6ZWQgYnVmZmVyLgotCi1BIEdlbmVyaWNFdmVudCB3b3VsZCBiZSBsYXRlciByZWplY3RlZCBieSBQcm9jWFNlbmRFeHRlbnNpb25FdmVudCBhbnl3YXkuCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTcmIgPG1zcmJAc3VzZS5jb20+Ci1SZXZpZXdlZC1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEh1dHRlcmVyIDxwZXRlci5odXR0ZXJlckB3aG8tdC5uZXQ+Ci0KLUNWRTogQ1ZFLTIwMTctMTA5NzEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvY29tbWl0Lz9pZD1iYTMzNmIyNDA1MjEyMmIxMzY0ODY5NjFjODJkZWFjNzZiYmRlNDU1XQotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gWGkvc2VuZGV4ZXYuYyB8ICAgMTAgKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL1hpL3NlbmRleGV2LmMgYi9YaS9zZW5kZXhldi5jCi1pbmRleCA1ZTYzYmZjLi41YzJlMGZjIDEwMDY0NAotLS0tIGEvWGkvc2VuZGV4ZXYuYwotKysrIGIvWGkvc2VuZGV4ZXYuYwotQEAgLTk1LDkgKzk1LDE3IEBAIFNQcm9jWFNlbmRFeHRlbnNpb25FdmVudChDbGllbnRQdHIgY2xpZW50KQotIAotICAgICBldmVudFAgPSAoeEV2ZW50ICopICZzdHVmZlsxXTsKLSAgICAgZm9yIChpID0gMDsgaSA8IHN0dWZmLT5udW1fZXZlbnRzOyBpKyssIGV2ZW50UCsrKSB7Ci0rICAgICAgICBpZiAoZXZlbnRQLT51LnUudHlwZSA9PSBHZW5lcmljRXZlbnQpIHsKLSsgICAgICAgICAgICBjbGllbnQtPmVycm9yVmFsdWUgPSBldmVudFAtPnUudS50eXBlOwotKyAgICAgICAgICAgIHJldHVybiBCYWRWYWx1ZTsKLSsgICAgICAgIH0KLSsKLSAgICAgICAgIHByb2MgPSBFdmVudFN3YXBWZWN0b3JbZXZlbnRQLT51LnUudHlwZSAmIDAxNzddOwotLSAgICAgICAgaWYgKHByb2MgPT0gTm90SW1wbGVtZW50ZWQpICAgICAvKiBubyBzd2FwcGluZyBwcm9jOyBpbnZhbGlkIGV2ZW50IHR5cGU/ICovCi0rICAgICAgICAvKiBubyBzd2FwcGluZyBwcm9jOyBpbnZhbGlkIGV2ZW50IHR5cGU/ICovCi0rICAgICAgICBpZiAocHJvYyA9PSBOb3RJbXBsZW1lbnRlZCkgewotKyAgICAgICAgICAgIGNsaWVudC0+ZXJyb3JWYWx1ZSA9IGV2ZW50UC0+dS51LnR5cGU7Ci0gICAgICAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotKyAgICAgICAgfQotICAgICAgICAgKCpwcm9jKSAoZXZlbnRQLCAmZXZlbnRUKTsKLSAgICAgICAgICpldmVudFAgPSBldmVudFQ7Ci0gICAgIH0KLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvbWFjcm9fdHdlYWsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvbWFjcm9fdHdlYWsucGF0Y2gKaW5kZXggZWMwZWVhNi4uYzM2ZTRlNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL21hY3JvX3R3ZWFrLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9tYWNyb190d2Vhay5wYXRjaApAQCAtNSwxMyArNSwxMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBZdSBLZSA8a2UueXVAaW50ZWwuY29tPgogCi1kaWZmIC0tZ2l0IGEveG9yZy1zZXJ2ZXIubTQgYi94b3JnLXNlcnZlci5tNAotaW5kZXggYmRlY2Y2Mi4uMDQwZmRiOCAxMDA2NDQKLS0tLSBhL3hvcmctc2VydmVyLm00Ci0rKysgYi94b3JnLXNlcnZlci5tNAorSW5kZXg6IHhvcmctc2VydmVyLTEuMTkuNi94b3JnLXNlcnZlci5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHhvcmctc2VydmVyLTEuMTkuNi5vcmlnL3hvcmctc2VydmVyLm00CisrKysgeG9yZy1zZXJ2ZXItMS4xOS42L3hvcmctc2VydmVyLm00CiBAQCAtMjgsMTAgKzI4LDEyIEBAIGRubAotICMgQ2hlY2tzIGZvciB0aGUgJDEgZGVmaW5lIGluIHhvcmctc2VydmVyLmggKGZyb20gdGhlIHNkaykuICBJZiBpdAotICMgaXMgZGVmaW5lZCwgdGhlbiBhZGQgJDEgdG8gJFJFUVVJUkVEX01PRFVMRVMuCisgIyBDaGVja3MgZm9yIHRoZSBNQUNSTyBkZWZpbmUgaW4geG9yZy1zZXJ2ZXIuaCAoZnJvbSB0aGUgc2RrKS4gIElmIGl0CisgIyBpcyBkZWZpbmVkLCB0aGVuIGFkZCB0aGUgZ2l2ZW4gUFJPVE8gdG8gJFJFUVVJUkVEX01PRFVMRVMuCiAgCiArbTRfcGF0dGVybl9hbGxvdyhQS0dfQ09ORklHX1NZU1JPT1RfRElSKQogKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZWY2YzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLXJlcXVpcmUgeHNlcnZlci14b3JnLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vbXVzbC1hcm0taW5iLW91dGIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUZpeC1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1zY2FubmVyLWFuZC1wcm90b2NvbHMtbG9jYXQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1SZW1vdmUtY2hlY2stZm9yLXVzZVNJR0lPLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMy5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMDE1ZDJmYzRiOWYyYmZlN2E2MjZlZGI2M2E2MmM2NWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjc3YTgxNjZlMDM0NzQ3MTkyMzhkZmUzOTZjZTY3M2M0MjM0NzM1NDY0ZDZkYWRmMjk1OWI2MDBkMjBlNWE5OCIKLQotIyBUaGVzZSBleHRlbnNpb25zIGFyZSBub3cgaW50ZWdyYXRlZCBpbnRvIHRoZSBzZXJ2ZXIsIHNvIGRlY2xhcmUgdGhlIG1pZ3JhdGlvbgotIyBwYXRoIGZvciBpbi1wbGFjZSB1cGdyYWRlcy4KLQotUlJFUExBQ0VTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKLVJQUk9WSURFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCi1SQ09ORkxJQ1RTXyR7UE59ID0gIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4MGNmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjYuYmIKQEAgLTAsMCArMSwzMiBAQAorcmVxdWlyZSB4c2VydmVyLXhvcmcuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9tdXNsLWFybS1pbmItb3V0Yi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtRml4LWNoZWNrLWZvci1DTE9DS19NT05PVE9OSUMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1SZW1vdmUtY2hlY2stZm9yLXVzZVNJR0lPLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS14Zjg2cGNpQnVzLmMtdXNlLUludGVsLWRkeC1vbmx5LWZvci1wcmUtZ2VuNC1oYXJkd2FyLnBhdGNoIFwKKyAgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZTQ3Nzc3ZmYwMzRhMzMxYWVkMjMyMmIwNzg2OTRhOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzMyNTAyZjFkYjAwMGNmMzZhMzc2Y2QwYzAxMGZmZGJmMzJlY2RkN2YxZmEwOGJhN2Y1YmRmOTYwMWNjMTk3IgorCisjIFRoZXNlIGV4dGVuc2lvbnMgYXJlIG5vdyBpbnRlZ3JhdGVkIGludG8gdGhlIHNlcnZlciwgc28gZGVjbGFyZSB0aGUgbWlncmF0aW9uCisjIHBhdGggZm9yIGluLXBsYWNlIHVwZ3JhZGVzLgorCitSUkVQTEFDRVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgorUlBST1ZJREVTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKK1JDT05GTElDVFNfJHtQTn0gPSAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h2aWRlby10ZXN0cy94dmlkZW8tdGVzdHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dmlkZW8tdGVzdHMveHZpZGVvLXRlc3RzX2dpdC5iYgppbmRleCAyNjY3ZGQ4Li4xZDI3NWEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h2aWRlby10ZXN0cy94dmlkZW8tdGVzdHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHZpZGVvLXRlc3RzL3h2aWRlby10ZXN0c19naXQuYmIKQEAgLTgsNyArOCw3IEBACiBQViA9ICIwLjErZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvdGVzdC14dmlkZW8iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1kZXZfdC1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1kZXZfdC1kZWZpbml0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGI3MTU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItZGV2X3QtZGVmaW5pdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gNmI1YmJkZmFhYzdmMjE2ZmU4YTAyYzRjZjI5ZTVlYjJhZWU1YTQwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE1IFNlcCAyMDE1IDAwOjAxOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIGRldl90IGRlZmluaXRpb24KLQotQXZvaWRzIHRoZSBidWlsZCBmYWlsdXJlcyB3aGVuIHN5cy90eXBlcy5oIGRvZXMgbm90IGdldCBpbmNsdWRlZAotaW5kaXJlY3RseSB0aHJvdWdoIG90aGVyIGhlYWRlcnMuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBibGt0cmFjZS5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9ibGt0cmFjZS5oIGIvYmxrdHJhY2UuaAotaW5kZXggMzgwYWVjNy4uOTQ0ZmMwOCAxMDA2NDQKLS0tLSBhL2Jsa3RyYWNlLmgKLSsrKyBiL2Jsa3RyYWNlLmgKLUBAIC01LDYgKzUsNyBAQAotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotICNpbmNsdWRlICJibGt0cmFjZV9hcGkuaCIKLSAjaW5jbHVkZSAicmJ0cmVlLmgiCi0tLSAKLTIuNS4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlL2xkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZS9sZGZsYWdzLnBhdGNoCmluZGV4IGRlYTFhYTIuLmFiOTA1Y2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlL2xkZmxhZ3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvbGRmbGFncy5wYXRjaApAQCAtMTAsNiArMTAsOCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBGYWhhZCBVc21hbiA8ZmFoYWRfdXNtYW5AbWVudG9yLmNvbT4KIAorSW5kZXg6IGdpdC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdpdC5vcmlnL01ha2VmaWxlCiArKysgZ2l0L01ha2VmaWxlCiBAQCAtMSw1ICsxLDYgQEAKQEAgLTE5LDcgKzIxLDcgQEAKICBBTExfQ0ZMQUdTID0gJChDRkxBR1MpIC1EX0dOVV9TT1VSQ0UgLURfTEFSR0VGSUxFX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0CiAgUFJPR1MJPSBibGtwYXJzZSBibGt0cmFjZSB2ZXJpZnlfYmxrcGFyc2UgYmxrcmF3dmVyaWZ5IGJsa2lvbW9uCiAgTElCUwk9IC1scHRocmVhZAotQEAgLTIzLDE5ICsyNCwxOSBAQCBidHJlcGxheS9idHJlcGxheToKK0BAIC0yNiwxOSArMjcsMTkgQEAgYnRyZXBsYXkvYnRyZXBsYXk6CiAgCSQoQ0MpIC1vICQqLm8gLWMgJChBTExfQ0ZMQUdTKSAkPAogIAogIGJsa3BhcnNlOiBibGtwYXJzZS5vIGJsa3BhcnNlX2ZtdC5vIHJidHJlZS5vIGFjdF9tYXNrLm8KQEAgLTQ0LDYgKzQ2LDggQEAKICAKICAkKFBST0dTKTogfCBkZXBlbmQKICAKK0luZGV4OiBnaXQvYnRyZXBsYXkvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9idHJlcGxheS9NYWtlZmlsZQogKysrIGdpdC9idHJlcGxheS9NYWtlZmlsZQogQEAgLTcsNiArNyw3IEBACkBAIC01NSw4ICs1OSw4IEBACiAgT0NGTEFHUwk9IC1VQ09VTlRfSU9TIC1VREVCVUcgLUROREVCVUcKICBYQ0ZMQUdTCT0gLURfR05VX1NPVVJDRSAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKIEBAIC0zMiwxMCArMzMsMTAgQEAgY2xlYW46IGRvY3NjbGVhbgotCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyAkKi5vICQ8Ci0KKyAJJChDQykgJChDRkxBR1MpIC1jIC1vICQqLm8gJDwKKyAKICBidHJlY29yZDogYnRyZWNvcmQubwogLQkkKENDKSAkKENGTEFHUykgLW8gJEAgJChmaWx0ZXIgJS5vLCReKQogKwkkKENDKSAkKENGTEFHUykgLW8gJEAgJChmaWx0ZXIgJS5vLCReKSAkKExERkxBR1MpCkBAIC02Nyw2ICs3MSw4IEBACiAgCiAgZGVwZW5kOgogIAlAJChDQykgLU1NICQoQ0ZMQUdTKSAqLmMgMT4gLmRlcGVuZAorSW5kZXg6IGdpdC9idHQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9idHQvTWFrZWZpbGUKICsrKyBnaXQvYnR0L01ha2VmaWxlCiBAQCAtNyw2ICs3LDcgQEAKQEAgLTg2LDExICs5MiwxMyBAQAogIAogIGlmbmVxICgkKHdpbGRjYXJkIC5kZXBlbmQpLCkKICBpbmNsdWRlIC5kZXBlbmQKK0luZGV4OiBnaXQvaW93YXRjaGVyL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gZ2l0Lm9yaWcvaW93YXRjaGVyL01ha2VmaWxlCiArKysgZ2l0L2lvd2F0Y2hlci9NYWtlZmlsZQogQEAgLTEsNSArMSw2IEBACi0gQyAgICAgID0gZ2NjCi0gQ0ZMQUdTICA9IC1XYWxsIC1PMCAtZyAtVworIENDICAgICAgPSBnY2MKKyBDRkxBR1MgID0gLVdhbGwgLU8yIC1nIC1XIC1XdW51c2VkLXJlc3VsdAogK0xERkxBR1MgPQogIEFMTF9DRkxBR1MgPSAkKENGTEFHUykgLURfR05VX1NPVVJDRSAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKICAKQEAgLTk5LDggKzEwNyw4IEBACiAgCSQoQ0MpIC1vICQqLm8gLWMgJChBTExfQ0ZMQUdTKSAkPAogIAogIGlvd2F0Y2hlcjogYmxrcGFyc2UubyBwbG90Lm8gbWFpbi5vIHRyYWNlcnMubyBtcHN0YXQubyBmaW8ubwotLQkkKENDKSAkKEFMTF9DRkxBR1MpIC1vICRAICQoZmlsdGVyICUubywkXikgLWxtCi0rCSQoQ0MpICQoQUxMX0NGTEFHUykgLW8gJEAgJChmaWx0ZXIgJS5vLCReKSAtbG0gJChMREZMQUdTKQorLQkkKENDKSAkKEFMTF9DRkxBR1MpIC1vICRAICQoZmlsdGVyICUubywkXikgLWxtIC1scnQKKysJJChDQykgJChBTExfQ0ZMQUdTKSAtbyAkQCAkKGZpbHRlciAlLm8sJF4pIC1sbSAkKExERkxBR1MpIC1scnQKICAKICBkZXBlbmQ6CiAgCUAkKENDKSAtTU0gJChBTExfQ0ZMQUdTKSAqLmMgMT4gLmRlcGVuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiCmluZGV4IDc3MDU3NWYuLjY2M2RlMmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIKQEAgLTUsMTMgKzUsMTIgQEAKIAogREVQRU5EUyA9ICJsaWJhaW8iCiAKLVNSQ1JFViA9ICI0M2ZjODcwY2UwNGU5NjNkZWY0NWRmYzBkMWVkNGVhMjFlZjEwZDRiIgorU1JDUkVWID0gImNjYTExM2YyZmUwNzU5YjkxZmQ2YTBlMTBmZGNkYTJjMjhmMThhN2UiCiAKLVBWID0gIjEuMS4wK2dpdCR7U1JDUFZ9IgorUFYgPSAiMS4yLjArZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5kay9ibGt0cmFjZS5naXQgXAogICAgICAgICAgICBmaWxlOi8vbGRmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWRldl90LWRlZmluaXRpb24ucGF0Y2ggXAogIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1tb2R1bGVfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1tb2R1bGVfMS45LmJiCmluZGV4IDU1MmViNmEuLmVkNmQwZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbW9kdWxlXzEuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjkuYmIKQEAgLTksNiArOSw3IEBACiAKIFNSQ19VUkkgKz0gIiBcCiBmaWxlOi8vMDAwMS1EaXNhYmxlLWluc3RhbGxpbmctaGVhZGVyLWZpbGUtcHJvdmlkZWQtYnktYW5vdGhlci1wLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWlvY3RsLmMtRml4LWJ1aWxkLXdpdGgtbGludXgtNC4xMy5wYXRjaCBcCiAiCiAKIEVYVFJBX09FTUFLRT0nS0VSTkVMX0RJUj0iJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IiBQUkVGSVg9IiR7RH0iJwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwppbmRleCA1MDM2NmU3Li5hYjE1YmMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwpAQCAtMywxMSArMyw5IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL253bC5jYy9wdWIvY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eCIKK1NSQ1JFViA9ICI4N2Q5NTlkOWEyNzljMDU1YjM2MWRlOGU3MzBmYWI2YTcxNDRlZGQ3IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiY2I0ZTBlZDllNTkzNzcxNmM3YzhhN2JlODQ4OTViNmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWY0YzBiNDliMzBlMjY3ZDc3NmY3OTQ1NWQwOWM3MGNjOWMxMmM4NmVlZTQwMGEwZDBhMGNkMWQ4ZTQ2Nzk1MCIKLQotUyA9ICIke1dPUktESVJ9L2NyeXB0b2Rldi1saW51eC0ke1BWfSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCiAKIENMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1BZGQtdGhlLWNvbXBpbGUtYW5kLWluc3RhbGwtcnVsZXMtZm9yLWNyeXB0b2Rldi10ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtQWRkLXRoZS1jb21waWxlLWFuZC1pbnN0YWxsLXJ1bGVzLWZvci1jcnlwdG9kZXYtdGVzdC5wYXRjaAppbmRleCAzZjAyOThiLi44NGZkMjdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1BZGQtdGhlLWNvbXBpbGUtYW5kLWluc3RhbGwtcnVsZXMtZm9yLWNyeXB0b2Rldi10ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUFkZC10aGUtY29tcGlsZS1hbmQtaW5zdGFsbC1ydWxlcy1mb3ItY3J5cHRvZGV2LXRlc3QucGF0Y2gKQEAgLTE0LDM3ICsxNCwzNyBAQAogIHRlc3RzL01ha2VmaWxlIHwgICAgOCArKysrKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDMxYzRiM2YuLjJlY2YyYTkgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0zNCw2ICszNCw5IEBAIG1vZHVsZXNfaW5zdGFsbDoKLSAJQGVjaG8gIkluc3RhbGxpbmcgY3J5cHRvZGV2LmggaW4gJChQUkVGSVgpL3Vzci9pbmNsdWRlL2NyeXB0byAuLi4iCi0gCUBpbnN0YWxsIC1EIGNyeXB0by9jcnlwdG9kZXYuaCAkKFBSRUZJWCkvdXNyL2luY2x1ZGUvY3J5cHRvL2NyeXB0b2Rldi5oCitJbmRleDogZ2l0L01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTWFrZWZpbGUKKysrKyBnaXQvTWFrZWZpbGUKK0BAIC0zNSw2ICszNSw5IEBAIG1vZHVsZXNfaW5zdGFsbDoKKyAJJChNQUtFKSAkKEtFUk5FTF9NQUtFX09QVFMpIG1vZHVsZXNfaW5zdGFsbAorIAlpbnN0YWxsIC1tIDY0NCAtRCBjcnlwdG8vY3J5cHRvZGV2LmggJChERVNURElSKS8kKGluY2x1ZGVkaXIpL2NyeXB0by9jcnlwdG9kZXYuaAogIAogK2luc3RhbGxfdGVzdHM6CiArCW1ha2UgLUMgdGVzdHMgaW5zdGFsbCBERVNURElSPSQoUFJFRklYKQogKwogIGNsZWFuOgotIAltYWtlIC1DICQoS0VSTkVMX0RJUikgU1VCRElSUz1gcHdkYCBjbGVhbgorIAkkKE1BS0UpICQoS0VSTkVMX01BS0VfT1BUUykgY2xlYW4KICAJcm0gLWYgJChob3N0cHJvZ3MpICp+Ci1AQCAtNDIsNiArNDUsOSBAQCBjbGVhbjoKK0BAIC00Myw2ICs0Niw5IEBAIGNsZWFuOgogIGNoZWNrOgotIAlDRkxBR1M9JChDUllQVE9ERVZfQ0ZMQUdTKSBLRVJORUxfRElSPSQoS0VSTkVMX0RJUikgbWFrZSAtQyB0ZXN0cyBjaGVjaworIAlDRkxBR1M9JChDUllQVE9ERVZfQ0ZMQUdTKSBLRVJORUxfRElSPSQoS0VSTkVMX0RJUikgJChNQUtFKSAtQyB0ZXN0cyBjaGVjawogIAogK3Rlc3Rwcm9nczoKICsJS0VSTkVMX0RJUj0kKEtFUk5FTF9ESVIpIG1ha2UgLUMgdGVzdHMgdGVzdHByb2dzCiArCiAgQ1BPUFRTID0KLSBpZm5lcSAoJHtTSE9XX1RZUEVTfSwpCisgaWZuZXEgKCQoU0hPV19UWVBFUyksKQogIENQT1BUUyArPSAtLXNob3ctdHlwZXMKLWRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZSBiL3Rlc3RzL01ha2VmaWxlCi1pbmRleCBjOWYwNGU4Li5jZDIwMmFmIDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RzL01ha2VmaWxlCi1AQCAtMTksNiArMTksMTIgQEAgZXhhbXBsZS1hc3luYy1obWFjLW9ianMgOj0gYXN5bmNfaG1hYy5vCi0gZXhhbXBsZS1hc3luYy1zcGVlZC1vYmpzIDo9IGFzeW5jX3NwZWVkLm8KLSBleGFtcGxlLWhhc2hjcnlwdC1zcGVlZC1vYmpzIDo9IGhhc2hjcnlwdF9zcGVlZC5jCitJbmRleDogZ2l0L3Rlc3RzL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdHMvTWFrZWZpbGUKK0BAIC0yMyw2ICsyMywxMiBAQCBiaW5kaXIgPSAkKGV4ZWNwcmVmaXgpL2JpbgorIAorIGFsbDogJChob3N0cHJvZ3MpCiAgCiAraW5zdGFsbDoKICsJaW5zdGFsbCAtZCAgJChERVNURElSKS91c3IvYmluL3Rlc3RzX2NyeXB0b2RldgpAQCAtNTUsOSArNTUsOSBAQAogIGNoZWNrOiAkKGhvc3Rwcm9ncykKICAJLi9jaXBoZXIKICAJLi9obWFjCi1AQCAtMjgsNiArMzQsOCBAQCBjaGVjazogJChob3N0cHJvZ3MpCi0gCS4vY2lwaGVyLWdjbQotIAkuL2NpcGhlci1hZWFkCitAQCAtMzgsNiArNDQsOCBAQCBpbnN0YWxsOgorIAkJaW5zdGFsbCAtbSA3NTUgJCRwcm9nICQoREVTVERJUikvJChiaW5kaXIpOyBcCisgCWRvbmUKICAKICt0ZXN0cHJvZ3M6ICQoaG9zdHByb2dzKQogKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtaW9jdGwuYy1GaXgtYnVpbGQtd2l0aC1saW51eC00LjEzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtaW9jdGwuYy1GaXgtYnVpbGQtd2l0aC1saW51eC00LjEzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MWVmYWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1pb2N0bC5jLUZpeC1idWlsZC13aXRoLWxpbnV4LTQuMTMucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSBmMGQ2OTc3NGFmYjI3ZmZjNjJiZjM1MzQ2NWZiYTE0NWU3MGNiODVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDQgU2VwIDIwMTcgMTE6MDU6MDggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gaW9jdGwuYzogRml4IGJ1aWxkIHdpdGggbGludXggNC4xMworCitnaXQvaW9jdGwuYzoxMTI3OjM6IGVycm9yOiBwb3NpdGlvbmFsIGluaXRpYWxpemF0aW9uIG9mIGZpZWxkIGluICdzdHJ1Y3QnIGRlY2xhcmVkIHdpdGggJ2Rlc2lnbmF0ZWRfaW5pdCcgYXR0cmlidXRlIFstV2Vycm9yPWRlc2lnbmF0ZWQtaW5pdF0KKyAgIHswLCB9LAorICAgIF4KK25vdGU6IChuZWFyIGluaXRpYWxpemF0aW9uIGZvciAndmVyYm9zaXR5X2N0bF9kaXJbMV0nKQorZ2l0L2lvY3RsLmM6MTEzNjozOiBlcnJvcjogcG9zaXRpb25hbCBpbml0aWFsaXphdGlvbiBvZiBmaWVsZCBpbiAnc3RydWN0JyBkZWNsYXJlZCB3aXRoICdkZXNpZ25hdGVkX2luaXQnIGF0dHJpYnV0ZSBbLVdlcnJvcj1kZXNpZ25hdGVkLWluaXRdCisgICB7MCwgfSwKKyAgICBeCisKK0xpbnV4IGtlcm5lbCBoYXMgYWRkZWQgLVdlcnJvcj1kZXNpZ25hdGVkLWluaXQgYXJvdW5kIDQuMTEgKGM4MzRmMGU4YThiKQordHJpZ2dlcmluZyBidWlsZCBlcnJvcnMgd2l0aCBnY2MgNSBhbmQgNiAoYnV0IG5vdCB3aXRoIGdjYyA0KQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gU3RvaWNhIDxjcmlzdGlhbi5zdG9pY2FAbnhwLmNvbT4KKy0tLQorIGlvY3RsLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW9jdGwuYyBiL2lvY3RsLmMKK2luZGV4IDAzODUyMDMuLjhkNGExNjIgMTAwNjQ0CistLS0gYS9pb2N0bC5jCisrKysgYi9pb2N0bC5jCitAQCAtMTEyNCw3ICsxMTI0LDcgQEAgc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgdmVyYm9zaXR5X2N0bF9kaXJbXSA9IHsKKyAJCS5tb2RlICAgICAgICAgICA9IDA2NDQsCisgCQkucHJvY19oYW5kbGVyICAgPSBwcm9jX2RvaW50dmVjLAorIAl9LAorLQl7MCwgfSwKKysJe30sCisgfTsKKyAKKyBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSB2ZXJib3NpdHlfY3RsX3Jvb3RbXSA9IHsKK0BAIC0xMTMzLDcgKzExMzMsNyBAQCBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSB2ZXJib3NpdHlfY3RsX3Jvb3RbXSA9IHsKKyAJCS5tb2RlICAgICAgICAgICA9IDA1NTUsCisgCQkuY2hpbGQgICAgICAgICAgPSB2ZXJib3NpdHlfY3RsX2RpciwKKyAJfSwKKy0JezAsIH0sCisrCXt9LAorIH07Cisgc3RhdGljIHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyICp2ZXJib3NpdHlfc3lzY3RsX2hlYWRlcjsKKyBzdGF0aWMgaW50IF9faW5pdCBpbml0X2NyeXB0b2Rldih2b2lkKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCmluZGV4IGQ3NTk5NDYuLjlhOTBkNDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCkBAIC03LDkgKzcsMTEgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2R0Yy9kdGMuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL21ha2VfaW5zdGFsbC5wYXRjaCBcCi0JICAiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNoZWNrcy1Vc2UtcHJvcGVyLWZvcm1hdC1tb2RpZmllci1mb3Itc2l6ZV90LnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKSIKIAotRVhUUkFfT0VNQUtFPSdQUkVGSVg9IiR7cHJlZml4fSIgTElCRElSPSIke2xpYmRpcn0iIERFU1RESVI9IiR7RH0iJworRVhUUkFfT0VNQUtFPSdOT19QWVRIT049MSBQUkVGSVg9IiR7cHJlZml4fSIgTElCRElSPSIke2xpYmRpcn0iIERFU1RESVI9IiR7RH0iJwogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0yMCw0ICsyMiw0IEBACiBQQUNLQUdFUyA9KyAiJHtQTn0tbWlzYyIKIEZJTEVTXyR7UE59LW1pc2MgPSAiJHtiaW5kaXJ9L2NvbnZlcnQtZHRzdjAgJHtiaW5kaXJ9L2Z0ZHVtcCAke2JpbmRpcn0vZHRkaWZmIgogCi1SREVQRU5EU18ke1BOfS1taXNjICs9ICJiYXNoIgorUkRFUEVORFNfJHtQTn0tbWlzYyArPSAiYmFzaCBkaWZmdXRpbHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLzAwMDEtY2hlY2tzLVVzZS1wcm9wZXItZm9ybWF0LW1vZGlmaWVyLWZvci1zaXplX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLzAwMDEtY2hlY2tzLVVzZS1wcm9wZXItZm9ybWF0LW1vZGlmaWVyLWZvci1zaXplX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiMzg0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvMDAwMS1jaGVja3MtVXNlLXByb3Blci1mb3JtYXQtbW9kaWZpZXItZm9yLXNpemVfdC5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGM3YTRjMzgxNzc5NjEwN2JiODI0YTFmMTczZmFmOTBmYWU0NTM5NmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgorRGF0ZTogV2VkLCAyNyBTZXAgMjAxNyAxNTowNDowOSArMDIwMAorU3ViamVjdDogW1BBVENIXSBjaGVja3M6IFVzZSBwcm9wZXIgZm9ybWF0IG1vZGlmaWVyIGZvciBzaXplX3QKKworVGhlIHNpemUgb2Ygc2l6ZV90IGNhbiB2YXJ5IGJldHdlZW4gYXJjaGl0ZWN0dXJlcywgc28gdXNpbmcgJWxkIGlzbid0Citnb2luZyB0byB3b3JrIG9uIDMyLWJpdCBidWlsZHMuIFVzZSB0aGUgJXp1IG1vZGlmaWVyIHRvIG1ha2Ugc3VyZSBpdCBpcworYWx3YXlzIGNvcnJlY3QuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+CitBY2tlZC1ieTogUm9iIEhlcnJpbmcgPHJvYmhAa2VybmVsLm9yZz4KK1NpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjaGVja3MuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGVja3MuYyBiL2NoZWNrcy5jCitpbmRleCA5MDJmMmUzLi4wOGEzYTI5IDEwMDY0NAorLS0tIGEvY2hlY2tzLmMKKysrKyBiL2NoZWNrcy5jCitAQCAtOTcyLDcgKzk3Miw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX3Byb3BlcnR5X3BoYW5kbGVfYXJncyhzdHJ1Y3QgY2hlY2sgKmMsCisgCWludCBjZWxsLCBjZWxsc2l6ZSA9IDA7CisgCisgCWlmIChwcm9wLT52YWwubGVuICUgc2l6ZW9mKGNlbGxfdCkpIHsKKy0JCUZBSUwoYywgZHRpLCAicHJvcGVydHkgJyVzJyBzaXplICglZCkgaXMgaW52YWxpZCwgZXhwZWN0ZWQgbXVsdGlwbGUgb2YgJWxkIGluIG5vZGUgJXMiLAorKwkJRkFJTChjLCBkdGksICJwcm9wZXJ0eSAnJXMnIHNpemUgKCVkKSBpcyBpbnZhbGlkLCBleHBlY3RlZCBtdWx0aXBsZSBvZiAlenUgaW4gbm9kZSAlcyIsCisgCQkgICAgIHByb3AtPm5hbWUsIHByb3AtPnZhbC5sZW4sIHNpemVvZihjZWxsX3QpLCBub2RlLT5mdWxscGF0aCk7CisgCQlyZXR1cm47CisgCX0KK0BAIC0xMTYzLDcgKzExNjMsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19pbnRlcnJ1cHRzX3Byb3BlcnR5KHN0cnVjdCBjaGVjayAqYywKKyAJCXJldHVybjsKKyAKKyAJaWYgKGlycV9wcm9wLT52YWwubGVuICUgc2l6ZW9mKGNlbGxfdCkpCistCQlGQUlMKGMsIGR0aSwgInByb3BlcnR5ICclcycgc2l6ZSAoJWQpIGlzIGludmFsaWQsIGV4cGVjdGVkIG11bHRpcGxlIG9mICVsZCBpbiBub2RlICVzIiwKKysJCUZBSUwoYywgZHRpLCAicHJvcGVydHkgJyVzJyBzaXplICglZCkgaXMgaW52YWxpZCwgZXhwZWN0ZWQgbXVsdGlwbGUgb2YgJXp1IGluIG5vZGUgJXMiLAorIAkJICAgICBpcnFfcHJvcC0+bmFtZSwgaXJxX3Byb3AtPnZhbC5sZW4sIHNpemVvZihjZWxsX3QpLAorIAkJICAgICBub2RlLT5mdWxscGF0aCk7CisgCistLSAKKzIuMTUuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjL21ha2VfaW5zdGFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoCmluZGV4IDExMjA2MTcuLmNjZjE3YjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoCkBAIC0yLDExICsyLDExIEBACiAKIEluZGV4OiBnaXQvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9NYWtlZmlsZQkyMDExLTExLTAyIDE0OjUyOjE3LjI0MzEwNDc3OSAtMDcwMAotKysrIGdpdC9NYWtlZmlsZQkyMDExLTExLTAyIDE1OjA2OjAxLjU1NTEwNDk4MiAtMDcwMAotQEAgLTE2MSw4ICsxNjEsOCBAQAotIAkkKElOU1RBTEwpIC1kICQoREVTVERJUikkKEJJTkRJUikKLSAJJChJTlNUQUxMKSAkKEJJTikgJChTQ1JJUFRTKSAkKERFU1RESVIpJChCSU5ESVIpCistLS0gZ2l0Lm9yaWcvTWFrZWZpbGUKKysrKyBnaXQvTWFrZWZpbGUKK0BAIC0xNjgsOCArMTY4LDggQEAgaW5zdGFsbC1iaW46IGFsbCAkKFNDUklQVFMpCisgaW5zdGFsbC1saWI6IGFsbAorIAlAJChWRUNITykgSU5TVEFMTC1MSUIKICAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChMSUJESVIpCiAtCSQoSU5TVEFMTCkgJChMSUJGRFRfbGliKSAkKERFU1RESVIpJChMSUJESVIpCiAtCWxuIC1zZiAkKG5vdGRpciAkKExJQkZEVF9saWIpKSAkKERFU1RESVIpJChMSUJESVIpLyQoTElCRkRUX3NvbmFtZSkKQEAgLTE0LDQgKzE0LDQgQEAKICsJbG4gLXNmICQoTElCRkRUX3NvbmFtZSkgJChERVNURElSKSQoTElCRElSKS8kKG5vdGRpciAkKExJQkZEVF9saWIpKQogIAlsbiAtc2YgJChMSUJGRFRfc29uYW1lKSAkKERFU1RESVIpJChMSUJESVIpL2xpYmZkdC4kKFNIQVJFRExJQl9FWFQpCiAgCSQoSU5TVEFMTCkgLW0gNjQ0ICQoTElCRkRUX2FyY2hpdmUpICQoREVTVERJUikkKExJQkRJUikKLSAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChJTkNMVURFRElSKQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS40LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZGI3YmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgZHRjLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLQkJICAgIGZpbGU6Ly9saWJmZHQvbGliZmR0Lmg7YmVnaW5saW5lPTM7ZW5kbGluZT01MjttZDU9ZmIzNjA5NjMxNTFmOGVjMmQ2YzA2YjA1NWJjYmI2OGMiCi0KLVNSQ1JFViA9ICI1NThjZDgxYmRkNDMyNzY5YjU5YmZmMDEyNDBjNDRmODJjZmIxYTlkIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTQ2Y2ZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNS5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIGR0Yy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR1BMO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisJCSAgICBmaWxlOi8vbGliZmR0L2xpYmZkdC5oO2JlZ2lubGluZT0zO2VuZGxpbmU9NTI7bWQ1PWZiMzYwOTYzMTUxZjhlYzJkNmMwNmIwNTViY2JiNjhjIgorCitTUkNSRVYgPSAiMjJhNjVjNTMzMWMyMjk3OWQ0MTY3MzhlYjc1NmI5NTQxNjcyZTAwZCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgppbmRleCAzYTM5OTJhLi44Y2NkOGNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgpAQCAtMTIsNiArMTIsNyBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC10b29scy5naXQiCiBTID0gIiR7V09SS0RJUn0iCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKIGRvX2NvbXBpbGUoKSB7IAogCToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY4OWJlYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1TVU1NQVJZID0gIktleGVjIGZhc3QgcmVib290IHRvb2xzIgotREVTQ1JJUFRJT04gPSAiS2V4ZWMgaXMgYSBmYXN0IHJlYm9vdCBmZWF0dXJlIHRoYXQgbGV0cyB5b3UgcmVib290IHRvIGEgbmV3IExpbnV4IGtlcm5lbCIKLUFVVEhPUiA9ICJFcmljIEJpZWRlcm1hbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwva2V4ZWMvIgotU0VDVElPTiA9ICJrZXJuZWwvdXNlcmxhbmQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE1YmVkMmY2MGQzNTc2MThjYTE2MWFkNTM5ZjdjMGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2V4ZWMva2V4ZWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1hZjEwZjZhZTRhODcxNTk2NWU2NDhhYTY4N2FkM2UwOSIKLURFUEVORFMgPSAiemxpYiB4eiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8va2R1bXAgXAotICAgICAgICAgICBmaWxlOi8va2R1bXAuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9rZHVtcC5zZXJ2aWNlIFwKLSIKLQotUFIgPSAicjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKnxwb3dlcnBjLip8bWlwcy4qKS0obGludXh8ZnJlZWJzZC4qKScKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICMgUmVtb3ZlIHRoZSBwcmVwYWNrYWdlZCBjb25maWcuaCBmcm9tIHRoZSBzb3VyY2UgdHJlZSBhcyBpdCBvdmVycmlkZXMKLSAgICAjIHRoZSBzYW1lIGZpbGUgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSBhbmQgcGxhY2VkIGluIHRoZSBidWlsZCB0cmVlCi0gICAgcm0gLWYgJHtTfS9pbmNsdWRlL2NvbmZpZy5oCi0KLSAgICAjIFJlbW92ZSB0aGUgJyouZCcgZmlsZSB0byBtYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSwotICAgIGZvciBkZXAgaW4gYGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICcqLmQnYDsgZG8KLSAgICAgICAgZGVwX25vX2Q9ImBlY2hvICRkZXAgfCBzZWQgJ3MjLmQkIyMnYCIKLSAgICAgICAgIyBSZW1vdmUgZmlsZS5kIHdoZW4gdGhlcmUgaXMgYSBmaWxlLm8KLSAgICAgICAgaWYgWyAtZiAiJGRlcF9ub19kLm8iIF07IHRoZW4KLSAgICAgICAgICAgIHJtIC1mICRkZXAKLSAgICAgICAgZmkKLSAgICBkb25lCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWFybTY0LURpc2FibGUtUElDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1hcm02NC1EaXNhYmxlLVBJQy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRlOTRkNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWFybTY0LURpc2FibGUtUElDLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAzYmI3M2U1ZTU2NDliNDU1ZTE1ZDVjYTNhN2FkMWE5MGM0OTYwOTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMTE6NTQ6MzYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gYXJtNjQ6IERpc2FibGUgUElDCi0KLUZpeAotfCBjYzE6IHNvcnJ5LCB1bmltcGxlbWVudGVkOiBjb2RlIG1vZGVsICdsYXJnZScgd2l0aCAtZlBJQwotfCBtYWtlOiAqKiogW01ha2VmaWxlOjExODogcHVyZ2F0b3J5L2FyY2gvYXJtNjQvZW50cnkub10gRXJyb3IgMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHB1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZSBiL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlCi1pbmRleCA2MzZhYmVhLi44MDA2OGNhIDEwMDY0NAotLS0tIGEvcHVyZ2F0b3J5L2FyY2gvYXJtNjQvTWFrZWZpbGUKLSsrKyBiL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlCi1AQCAtMSw2ICsxLDcgQEAKLSAKLSBhcm02NF9QVVJHQVRPUllfRVhUUkFfQ0ZMQUdTID0gXAotIAktbWNtb2RlbD1sYXJnZSBcCi0rCS1mbm8tUElDIFwKLSAJLWZuby1zdGFjay1wcm90ZWN0b3IgXAotIAktZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIFwKLSAJLVd1bmRlZiBcCi0tLSAKLTIuMTMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWtleGVjLWV4bnRlbmQtdGhlLXNlbWFudGljcy1vZi1rZXhlY19pb21lbV9mb3JfZWFjaF8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWtleGVjLWV4bnRlbmQtdGhlLXNlbWFudGljcy1vZi1rZXhlY19pb21lbV9mb3JfZWFjaF8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMmYyOGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1rZXhlYy1leG50ZW5kLXRoZS1zZW1hbnRpY3Mtb2Yta2V4ZWNfaW9tZW1fZm9yX2VhY2hfLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotRnJvbSAwMmVlZDBmOGYyNzQ4ZmQ3NTc5ZjY5ZTUzNzM0NDViNTJiMmI4NzU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLURhdGU6IE1vbiwgMTcgT2N0IDIwMTYgMTM6NTY6NTggKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzldIGtleGVjOiBleG50ZW5kIHRoZSBzZW1hbnRpY3Mgb2Yga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZQotCi1UaGUgY3VycmVudCBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKCkgY291bnRzIHVwIGFsbCB0aGUgbGluZXMgZm9yIHdoaWNoCi1hIGNhbGxiYWNrIGZ1bmN0aW9uIHJldHVybnMgemVybygwKSBvciBwb3NpdGl2ZSwgYW5kIG90aGVyd2lzZSBpdCBzdG9wcwotZnVydGhlciBzY2FubmluZy4KLVRoaXMgYmVoYXZpb3IgaXMgaW5jb3ZlbmllbnQgaW4gc29tZSBjYXNlcy4gRm9yIGluc3RhbmNlLCBvbiBhcm02NCwgd2Ugd2FudAotdG8gY291bnQgdXAgIlN5c3RlbSBSQU0iIGVudHJpZXMsIGJ1dCBuZWVkIHRvIHNraXAgInJlc2VydmVkIiBlbnRyaWVzLgotCi1TbyB0aGlzIHBhdGNoIGV4dGVuZHMgdGhlIHNlbWFudGljcyBzbyB0aGF0IHdlIHdpbGwgY29udGludWUgdG8gc2Nhbgotc3VjY2VlZGluZyBlbnRyaWVzIGJ1dCBub3QgY291bnQgbGluZXMgZm9yIHdoaWNoIGEgY2FsbGJhY2sgZnVuY3Rpb24KLXJldHVybnMgcG9zaXRpdmUuCi0KLVRoZSBjdXJyZW50IHVzZXJzIG9mIGtleGVjX2lvbWVtX2Zvcl9lYWNoX2xpbmUoKSwgYXJtLCBzaCBhbmQgeDg2LCB3aWxsIG5vdAotYmUgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UgYmVjYXVzZQotKiBhcm0KLSAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyAtMSBvciAwLCBhbmQgdGhlIHJldHVybiB2YWx1ZSBvZgotICBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKCkgd2lsbCBuZXZlciBiZSB1c2VkLgotKiBzaCwgeDg2Ci0gIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBtYXkgcmV0dXJuICgtMSBmb3Igc2gsKSAwIG9yIDEsIGJ1dCBhbHdheXMgcmV0dXJucwotICAxIG9uY2Ugd2UgaGF2ZSByZWFjaGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIGFsbG93ZWQuCi0gIEV2ZW4gc28gdGhlIGN1cnJlbnQga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZSgpIGNvdW50cyB0aGVtIHVwLgotICBUaGlzIGNoYW5nZSBhY3R1YWxseSBmaXhlcyB0aGlzIGJ1Zy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvdGFrYWhpcm8uYWthc2hpL2tleGVjLXRvb2xzLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9rZXhlYy1pb21lbS5jIHwgMTUgKysrKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9rZXhlYy1pb21lbS5jIGIva2V4ZWMva2V4ZWMtaW9tZW0uYwotaW5kZXggNDg1YTJlOC4uMGEwMjc3YSAxMDA2NDQKLS0tLSBhL2tleGVjL2tleGVjLWlvbWVtLmMKLSsrKyBiL2tleGVjL2tleGVjLWlvbWVtLmMKLUBAIC0xOCw2ICsxOCw5IEBACi0gICogSXRlcmF0ZSBvdmVyIGVhY2ggbGluZSBpbiB0aGUgZmlsZSByZXR1cm5lZCBieSBwcm9jX2lvbWVtKCkuIElmIG1hdGNoIGlzCi0gICogTlVMTCBvciBpZiB0aGUgbGluZSBtYXRjaGVzIHdpdGggb3VyIG1hdGNoLXBhdHRlcm4gdGhlbiBjYWxsIHRoZQotICAqIGNhbGxiYWNrIGlmIG5vbi1OVUxMLgotKyAqIElmIG1hdGNoIGlzIE5VTEwsIGNhbGxiYWNrIHNob3VsZCByZXR1cm4gYSBuZWdhdGl2ZSBpZiBlcnJvci4KLSsgKiBPdGhlcndpc2UgdGhlIGludGVyYXRpb24gZ29lcyBvbiwgaW5jcmVtZW50aW5nIG5yIGJ1dCBvbmx5IGlmIGNhbGxiYWNrCi0rICogcmV0dXJucyAwIChtYXRjaGVkKS4KLSAgKgotICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGxpbmVzIG1hdGNoZWQuCi0gICovCi1AQCAtMzcsNyArNDAsNyBAQCBpbnQga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZShjaGFyICptYXRjaCwKLSAJY2hhciAqc3RyOwotIAlpbnQgY29uc3VtZWQ7Ci0gCWludCBjb3VudDsKLS0JaW50IG5yID0gMDsKLSsJaW50IG5yID0gMCwgcmV0OwotIAotIAlmcCA9IGZvcGVuKGlvbWVtLCAiciIpOwotIAlpZiAoIWZwKQotQEAgLTUwLDExICs1MywxMyBAQCBpbnQga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZShjaGFyICptYXRjaCwKLSAJCXN0ciA9IGxpbmUgKyBjb25zdW1lZDsKLSAJCXNpemUgPSBlbmQgLSBzdGFydCArIDE7Ci0gCQlpZiAoIW1hdGNoIHx8IG1lbWNtcChzdHIsIG1hdGNoLCBzdHJsZW4obWF0Y2gpKSA9PSAwKSB7Ci0tCQkJaWYgKGNhbGxiYWNrCi0tCQkJICAgICYmIGNhbGxiYWNrKGRhdGEsIG5yLCBzdHIsIHN0YXJ0LCBzaXplKSA8IDApIHsKLS0JCQkJYnJlYWs7Ci0rCQkJaWYgKGNhbGxiYWNrKSB7Ci0rCQkJCXJldCA9IGNhbGxiYWNrKGRhdGEsIG5yLCBzdHIsIHN0YXJ0LCBzaXplKTsKLSsJCQkJaWYgKHJldCA8IDApCi0rCQkJCQlicmVhazsKLSsJCQkJZWxzZSBpZiAocmV0ID09IDApCi0rCQkJCQlucisrOwotIAkJCX0KLS0JCQlucisrOwotIAkJfQotIAl9Ci0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtdm1jb3JlLWRtZXNnLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtdm1jb3JlLWRtZXNnLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBjMmY2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLXZtY29yZS1kbWVzZy1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGQ4MTE4NzVhNDFiNDYyODA0MGFiYWFkYTNkYTI5YjdiOTU5MmU3NTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCA5IEphbiAyMDE2IDE3OjE2OjE2IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZtY29yZS1kbWVzZzogRGVmaW5lIF9HTlVfU09VUkNFCi0KLWxvZmZfdCBpcyBndWFyZGVkIHdpdGggX0dOVV9TT1VSQ0Ugb24gc29tZSBDIGxpYnJhcnkgaW1wbGVtZW50YXRpb25zCi1lLmcuIG11c2wgc2luY2UgdGhpcyB0eXBlIGlzIG5vdCBkZWZpbmVkIGJ5IFBPU0lYLiBEZWZpbmUgX0dOVV9TT1VSQ0UgdG8KLWluY2x1ZGUgdGhpcyBkZWZpbmUsIGl0IHNob3VsZCBoZWxwIGNvbXBpbGluZyBvbiBtdXNsIHdoaWxlIG5vdGhpbmcKLWNoYW5nZXMgZm9yIGdsaWJjIGJhc2VkIHN5c3RlbXMgc2luY2UgdGhlcmUgX0dOVV9TT1VSQ0UgaXMgYWxyZWFkeQotZGVmaW5lZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0gdm1jb3JlLWRtZXNnL3ZtY29yZS1kbWVzZy5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS92bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMgYi92bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMKLWluZGV4IDAzNjQ2MzYuLmE4ZjU2ZGYgMTAwNjQ0Ci0tLS0gYS92bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMKLSsrKyBiL3ZtY29yZS1kbWVzZy92bWNvcmUtZG1lc2cuYwotQEAgLTEsNCArMSw1IEBACi0gI2RlZmluZSBfWE9QRU5fU09VUkNFIDYwMAotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFIDEKLSAjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLXg4Ni14ODZfNjQtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS14ODYteDg2XzY0LUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYwMWY1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLXg4Ni14ODZfNjQtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLQotCi1Gcm9tIDE1NTBmODFiZjE4ODZhYTA1MjBkYTBiNjE4MWNkNjFjMWE3NWQ0YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmF0eXVzaCBBbmFuZCA8cGFuYW5kQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDE0IE1hciAyMDE3IDE3OjU5OjIyICswNTMwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSB4ODYveDg2XzY0OiBGaXggZm9ybWF0IHdhcm5pbmcgd2l0aCBkaWUoKQotCi1GZWRvcmEga29qaSB1c2VzIGdjYyB2ZXJzaW9uIDcuMC4xLTAuMTIuZmMyNywgYW5kIGl0IGdlbmVyYXRlcyBhIGJ1aWxkCi13YXJuaW5nCi0KLSAgIGtleGVjL2FyY2gvaTM4Ni9rZXhlYy1lbGYteDg2LmM6Mjk5OjM6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nCi0gICBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLSAgICAgICBkaWUoZXJyb3JfbXNnKTsKLSAgICAgICBefn4KLSAgICBjYzE6IHNvbWUgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLQotZXJyb3JfbXNnIGNhbiBoYXZlIGEgZm9ybWF0IHNwZWNpZmllciBhcyB3ZWxsIGluIHN0cmluZy4gSW4gc3VjaCBjYXNlcywKLWlmIHRoZXJlIGlzIG5vIG90aGVyIGFyZ3VtZW50cyBmb3IgdGhlIGZvcm1hdCB2YXJpYWJsZSB0aGVuIGNvZGUgd2lsbAotdHJ5IHRvIGFjY2VzcyBhIG5vbiBleGlzdGluZyBhcmd1bWVudC4gVGhlcmVmb3JlLCB1c2UgMXN0IGFyZ3VtZW50IGFzCi1mb3JtYXQgc3BlY2lmaWVyIGZvciBzdHJpbmcgcHJpbnQgYW5kIHBhc3MgZXJyb3JfbXNnIGFzIHRoZSBzdHJpbmcgdG8gYmUKLXByaW50ZWQuCi0KLVdoaWxlIGRvaW5nIHRoYXQsYWxzbyB1c2UgY29uc3QgcXVhbGlmaWVyIGJlZm9yZSAiY2hhciAqZXJyb3JfbXNnIi4KLQotU2lnbmVkLW9mZi1ieTogUHJhdHl1c2ggQW5hbmQgPHBhbmFuZEByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogU2ltb24gSG9ybWFuIDxob3Jtc0B2ZXJnZS5uZXQuYXU+Ci0tLS0KLSBrZXhlYy9hcmNoL2kzODYva2V4ZWMtZWxmLXg4Ni5jICAgICAgfCA0ICsrLS0KLSBrZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYteDg2XzY0LmMgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvaTM4Ni9rZXhlYy1lbGYteDg2LmMgYi9rZXhlYy9hcmNoL2kzODYva2V4ZWMtZWxmLXg4Ni5jCi1pbmRleCBkZTAwZGNiLi5mZWRmMDMxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9pMzg2L2tleGVjLWVsZi14ODYuYwotKysrIGIva2V4ZWMvYXJjaC9pMzg2L2tleGVjLWVsZi14ODYuYwotQEAgLTkxLDcgKzkxLDcgQEAgaW50IGVsZl94ODZfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuLAotIAljaGFyICpjb21tYW5kX2xpbmUgPSBOVUxMLCAqbW9kaWZpZWRfY21kbGluZSA9IE5VTEw7Ci0gCWNvbnN0IGNoYXIgKmFwcGVuZCA9IE5VTEw7Ci0gCWNoYXIgKnRtcF9jbWRsaW5lID0gTlVMTDsKLS0JY2hhciAqZXJyb3JfbXNnID0gTlVMTDsKLSsJY29uc3QgY2hhciAqZXJyb3JfbXNnID0gTlVMTDsKLSAJaW50IHJlc3VsdDsKLSAJaW50IGNvbW1hbmRfbGluZV9sZW47Ci0gCWNvbnN0IGNoYXIgKnJhbWRpc2s7Ci1AQCAtMjk2LDYgKzI5Niw2IEBAIG91dDoKLSAJZnJlZShjb21tYW5kX2xpbmUpOwotIAlmcmVlKG1vZGlmaWVkX2NtZGxpbmUpOwotIAlpZiAoZXJyb3JfbXNnKQotLQkJZGllKGVycm9yX21zZyk7Ci0rCQlkaWUoIiVzIiwgZXJyb3JfbXNnKTsKLSAJcmV0dXJuIHJlc3VsdDsKLSB9Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXg4Nl82NC5jIGIva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXg4Nl82NC5jCi1pbmRleCBhZTY1NjkyLi5hZDIyMzExIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXg4Nl82NC5jCi0rKysgYi9rZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYteDg2XzY0LmMKLUBAIC05OSw3ICs5OSw3IEBAIGludCBlbGZfeDg2XzY0X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbiwKLSAjZGVmaW5lIEFSR19TVFlMRV9OT05FICAyCi0gCWludCBvcHQ7Ci0gCWludCByZXN1bHQgPSAwOwotLQljaGFyICplcnJvcl9tc2cgPSBOVUxMOwotKwljb25zdCBjaGFyICplcnJvcl9tc2cgPSBOVUxMOwotIAotIAkvKiBTZWUgb3B0aW9ucy5oIGFuZCBhZGQgYW55IG5ldyBvcHRpb25zIHRoZXJlIHRvbyEgKi8KLSAJc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewotQEAgLTI3Niw2ICsyNzYsNiBAQCBvdXQ6Ci0gCWZyZWUoY29tbWFuZF9saW5lKTsKLSAJZnJlZShtb2RpZmllZF9jbWRsaW5lKTsKLSAJaWYgKGVycm9yX21zZykKLS0JCWRpZShlcnJvcl9tc2cpOwotKwkJZGllKCIlcyIsIGVycm9yX21zZyk7Ci0gCXJldHVybiByZXN1bHQ7Ci0gfQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMi1rZXhlYy1nZW5lcmFsaXplLWFuZC1yZW5hbWUtZ2V0X2tlcm5lbF9zdGV4dF9zeW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAyLWtleGVjLWdlbmVyYWxpemUtYW5kLXJlbmFtZS1nZXRfa2VybmVsX3N0ZXh0X3N5bS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUzZjEzYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAyLWtleGVjLWdlbmVyYWxpemUtYW5kLXJlbmFtZS1nZXRfa2VybmVsX3N0ZXh0X3N5bS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi1Gcm9tIGQyOWYzN2JiNmU5MTE0YWJhOTZjNjA2MTAzYjExMGY1MTFiZWU5YTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmF0eXVzaCBBbmFuZCA8cGFuYW5kQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDIgTm92IDIwMTYgMTU6MDU6MjUgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSCAyLzldIGtleGVjOiBnZW5lcmFsaXplIGFuZCByZW5hbWUgZ2V0X2tlcm5lbF9zdGV4dF9zeW0oKQotCi1nZXRfa2VybmVsX3N0ZXh0X3N5bSgpIGhhcyBiZWVuIGRlZmluZWQgZm9yIGJvdGggYXJtIGFuZCBpMzg2LiBPdGhlcgotYXJjaGl0ZWN0dXJlIG1pZ2h0IG5lZWQgc29tZSBvdGhlciBrZXJuZWwgc3ltYm9sIGFkZHJlc3MuIFRoZXJlZm9yZSByZXdyaXRlCi10aGlzIGZ1bmN0aW9uIGFzIGdlbmVyaWMgZnVuY3Rpb24gdG8gZ2V0IGFueSBrZXJuZWwgc3ltYm9sIGFkZHJlc3MuCi0KLU1vcmUgb3Zlciwga2FsbHN5bXMgaXMgbm90IGFyY2ggc3BlY2lmaWMgcmVwcmVzZW50YXRpb24sIHRoZXJlZm9yZSBoYXZlCi1jb21tb24gZnVuY3Rpb24gZm9yIGFsbCBhcmNoZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IFByYXR5dXNoIEFuYW5kIDxwYW5hbmRAcmVkaGF0LmNvbT4KLVtjcmVhdGVkIHN5bWJvbHMuY10KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8ICAxICsKLSBrZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMgIHwgNDAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGtleGVjL2FyY2gvaTM4Ni9jcmFzaGR1bXAteDg2LmMgfCAyOSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGtleGVjL2tleGVjLmggICAgICAgICAgICAgICAgICAgfCAgMiArKwotIGtleGVjL3N5bWJvbHMuYyAgICAgICAgICAgICAgICAgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDUgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGtleGVjL3N5bWJvbHMuYwotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvTWFrZWZpbGUgYi9rZXhlYy9NYWtlZmlsZQotaW5kZXggMzlmMzY1Zi4uMmI0ZmIzZCAxMDA2NDQKLS0tLSBhL2tleGVjL01ha2VmaWxlCi0rKysgYi9rZXhlYy9NYWtlZmlsZQotQEAgLTI2LDYgKzI2LDcgQEAgS0VYRUNfU1JDU19iYXNlICs9IGtleGVjL2tlcm5lbF92ZXJzaW9uLmMKLSBLRVhFQ19TUkNTX2Jhc2UgKz0ga2V4ZWMvbHptYS5jCi0gS0VYRUNfU1JDU19iYXNlICs9IGtleGVjL3psaWIuYwotIEtFWEVDX1NSQ1NfYmFzZSArPSBrZXhlYy9rZXhlYy14ZW4uYwotK0tFWEVDX1NSQ1NfYmFzZSArPSBrZXhlYy9zeW1ib2xzLmMKLSAKLSBLRVhFQ19HRU5FUkFURURfU1JDUyArPSAkKFBVUkdBVE9SWV9IRVhfQykKLSAKLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMgYi9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMKLWluZGV4IDRhODliNWUuLjI0NWMyMWEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtL2NyYXNoZHVtcC1hcm0uYwotQEAgLTczLDQ4ICs3MywxMCBAQCBzdGF0aWMgc3RydWN0IGNyYXNoX2VsZl9pbmZvIGVsZl9pbmZvID0gewotIAotIGV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgdXNlcl9wYWdlX29mZnNldDsKLSAKLS0vKiBSZXRyaWV2ZSBrZXJuZWwgX3N0ZXh0IHN5bWJvbCB2aXJ0dWFsIGFkZHJlc3MgZnJvbSAvcHJvYy9rYWxsc3ltcyAqLwotLXN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0X2tlcm5lbF9zdGV4dF9zeW0odm9pZCkKLS17Ci0tCWNvbnN0IGNoYXIgKmthbGxzeW1zID0gIi9wcm9jL2thbGxzeW1zIjsKLS0JY29uc3QgY2hhciAqc3RleHQgPSAiX3N0ZXh0IjsKLS0JY2hhciBzeW1bMTI4XTsKLS0JY2hhciBsaW5lWzEyOF07Ci0tCUZJTEUgKmZwOwotLQl1bnNpZ25lZCBsb25nIGxvbmcgdmFkZHIgPSAwOwotLQljaGFyIHR5cGU7Ci0tCi0tCWZwID0gZm9wZW4oa2FsbHN5bXMsICJyIik7Ci0tCWlmICghZnApIHsKLS0JCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXNcbiIsIGthbGxzeW1zKTsKLS0JCXJldHVybiAwOwotLQl9Ci0tCi0tCXdoaWxlKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZnApICE9IE5VTEwpIHsKLS0JCXVuc2lnbmVkIGxvbmcgbG9uZyBhZGRyOwotLQotLQkJaWYgKHNzY2FuZihsaW5lLCAiJUx4ICVjICVzIiwgJmFkZHIsICZ0eXBlLCBzeW0pICE9IDMpCi0tCQkJY29udGludWU7Ci0tCi0tCQlpZiAoc3RyY21wKHN5bSwgc3RleHQpID09IDApIHsKLS0JCQlkYmdwcmludGYoImtlcm5lbCBzeW1ib2wgJXMgdmFkZHIgPSAlI2xseFxuIiwgc3RleHQsIGFkZHIpOwotLQkJCXZhZGRyID0gYWRkcjsKLS0JCQlicmVhazsKLS0JCX0KLS0JfQotLQotLQlmY2xvc2UoZnApOwotLQotLQlpZiAodmFkZHIgPT0gMCkKLS0JCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGdldCBrZXJuZWwgJXMgc3ltYm9sIGFkZHJlc3NcbiIsIHN0ZXh0KTsKLS0KLS0JcmV0dXJuIHZhZGRyOwotLX0KLS0KLSBzdGF0aWMgaW50IGdldF9rZXJuZWxfcGFnZV9vZmZzZXQoc3RydWN0IGtleGVjX2luZm8gKmluZm8sCi0gCQlzdHJ1Y3QgY3Jhc2hfZWxmX2luZm8gKmVsZl9pbmZvKQotIHsKLS0JdW5zaWduZWQgbG9uZyBsb25nIHN0ZXh0X3N5bV9hZGRyID0gZ2V0X2tlcm5lbF9zdGV4dF9zeW0oKTsKLSsJdW5zaWduZWQgbG9uZyBsb25nIHN0ZXh0X3N5bV9hZGRyID0gZ2V0X2tlcm5lbF9zeW0oIl9zdGV4dCIpOwotIAlpZiAoc3RleHRfc3ltX2FkZHIgPT0gMCkgewotIAkJaWYgKHVzZXJfcGFnZV9vZmZzZXQgIT0gKC0xVUxMKSkgewotIAkJCWVsZl9pbmZvLT5wYWdlX29mZnNldCA9IHVzZXJfcGFnZV9vZmZzZXQ7Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9pMzg2L2NyYXNoZHVtcC14ODYuYyBiL2tleGVjL2FyY2gvaTM4Ni9jcmFzaGR1bXAteDg2LmMKLWluZGV4IGFiODMzZDQuLmFiZjgyYTUgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2kzODYvY3Jhc2hkdW1wLXg4Ni5jCi0rKysgYi9rZXhlYy9hcmNoL2kzODYvY3Jhc2hkdW1wLXg4Ni5jCi1AQCAtMTAyLDM1ICsxMDIsNiBAQCBzdGF0aWMgaW50IGdldF9rZXJuZWxfcGFkZHIoc3RydWN0IGtleGVjX2luZm8gKlVOVVNFRChpbmZvKSwKLSAJcmV0dXJuIC0xOwotIH0KLSAKLS0vKiBSZXRyaWV2ZSBrZXJuZWwgc3ltYm9sIHZpcnR1YWwgYWRkcmVzcyBmcm9tIC9wcm9jL2thbGxzeW1zICovCi0tc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRfa2VybmVsX3N5bShjb25zdCBjaGFyICpzeW1ib2wpCi0tewotLQljb25zdCBjaGFyICprYWxsc3ltcyA9ICIvcHJvYy9rYWxsc3ltcyI7Ci0tCWNoYXIgc3ltWzEyOF07Ci0tCWNoYXIgbGluZVsxMjhdOwotLQlGSUxFICpmcDsKLS0JdW5zaWduZWQgbG9uZyBsb25nIHZhZGRyOwotLQljaGFyIHR5cGU7Ci0tCi0tCWZwID0gZm9wZW4oa2FsbHN5bXMsICJyIik7Ci0tCWlmICghZnApIHsKLS0JCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXNcbiIsIGthbGxzeW1zKTsKLS0JCXJldHVybiAwOwotLQl9Ci0tCi0tCXdoaWxlKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZnApICE9IE5VTEwpIHsKLS0JCWlmIChzc2NhbmYobGluZSwgIiVMeCAlYyAlcyIsICZ2YWRkciwgJnR5cGUsIHN5bSkgIT0gMykKLS0JCQljb250aW51ZTsKLS0JCWlmIChzdHJjbXAoc3ltLCBzeW1ib2wpID09IDApIHsKLS0JCQlkYmdwcmludGYoImtlcm5lbCBzeW1ib2wgJXMgdmFkZHIgPSAlMTZsbHhcbiIsIHN5bWJvbCwgdmFkZHIpOwotLQkJCXJldHVybiB2YWRkcjsKLS0JCX0KLS0JfQotLQotLQlmcHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBnZXQga2VybmVsICVzIHN5bWJvbCBhZGRyZXNzXG4iLCBzeW1ib2wpOwotLQlyZXR1cm4gMDsKLS19Ci0tCi0gLyogUmV0cmlldmUgaW5mbyByZWdhcmRpbmcgdmlydHVhbCBhZGRyZXNzIGtlcm5lbCBoYXMgYmVlbiBjb21waWxlZCBmb3IgYW5kCi0gICogc2l6ZSBvZiB0aGUga2VybmVsIGZyb20gL3Byb2Mva2NvcmUuIEN1cnJlbnQgL3Byb2Mva2NvcmUgcGFyc2luZyBmcm9tCi0gICogZnJvbSBrZXhlYy10b29scyBmYWlscyBiZWNhdXNlIG9mIG1hbGZvcm1lZCBlbGYgbm90ZXMuIEEga2VybmVsIHBhdGNoIGhhcwotZGlmZiAtLWdpdCBhL2tleGVjL2tleGVjLmggYi9rZXhlYy9rZXhlYy5oCi1pbmRleCA5MTk0ZjFjLi5iNGZhZmFkIDEwMDY0NAotLS0tIGEva2V4ZWMva2V4ZWMuaAotKysrIGIva2V4ZWMva2V4ZWMuaAotQEAgLTMxMiw0ICszMTIsNiBAQCBpbnQgeGVuX2tleGVjX2xvYWQoc3RydWN0IGtleGVjX2luZm8gKmluZm8pOwotIGludCB4ZW5fa2V4ZWNfdW5sb2FkKHVpbnQ2NF90IGtleGVjX2ZsYWdzKTsKLSB2b2lkIHhlbl9rZXhlY19leGVjKHZvaWQpOwotIAotK2V4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0X2tlcm5lbF9zeW0oY29uc3QgY2hhciAqdGV4dCk7Ci0rCi0gI2VuZGlmIC8qIEtFWEVDX0ggKi8KLWRpZmYgLS1naXQgYS9rZXhlYy9zeW1ib2xzLmMgYi9rZXhlYy9zeW1ib2xzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lYTZlMzI3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9rZXhlYy9zeW1ib2xzLmMKLUBAIC0wLDAgKzEsNDEgQEAKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgImtleGVjLmgiCi0rCi0rLyogUmV0cmlldmUga2VybmVsIHN5bWJvbCB2aXJ0dWFsIGFkZHJlc3MgZnJvbSAvcHJvYy9rYWxsc3ltcyAqLwotK3Vuc2lnbmVkIGxvbmcgbG9uZyBnZXRfa2VybmVsX3N5bShjb25zdCBjaGFyICp0ZXh0KQotK3sKLSsJY29uc3QgY2hhciAqa2FsbHN5bXMgPSAiL3Byb2Mva2FsbHN5bXMiOwotKwljaGFyIHN5bVsxMjhdOwotKwljaGFyIGxpbmVbMTI4XTsKLSsJRklMRSAqZnA7Ci0rCXVuc2lnbmVkIGxvbmcgbG9uZyB2YWRkciA9IDA7Ci0rCWNoYXIgdHlwZTsKLSsKLSsJZnAgPSBmb3BlbihrYWxsc3ltcywgInIiKTsKLSsJaWYgKCFmcCkgewotKwkJZnByaW50ZihzdGRlcnIsICJDYW5ub3Qgb3BlbiAlc1xuIiwga2FsbHN5bXMpOwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSsJd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZnApICE9IE5VTEwpIHsKLSsJCXVuc2lnbmVkIGxvbmcgbG9uZyBhZGRyOwotKwotKwkJaWYgKHNzY2FuZihsaW5lLCAiJUx4ICVjICVzIiwgJmFkZHIsICZ0eXBlLCBzeW0pICE9IDMpCi0rCQkJY29udGludWU7Ci0rCi0rCQlpZiAoc3RyY21wKHN5bSwgdGV4dCkgPT0gMCkgewotKwkJCWRiZ3ByaW50Zigia2VybmVsIHN5bWJvbCAlcyB2YWRkciA9ICUjbGx4XG4iLAotKwkJCQkJCQkJdGV4dCwgYWRkcik7Ci0rCQkJdmFkZHIgPSBhZGRyOwotKwkJCWJyZWFrOwotKwkJfQotKwl9Ci0rCi0rCWZjbG9zZShmcCk7Ci0rCi0rCWlmICh2YWRkciA9PSAwKQotKwkJZnByaW50ZihzdGRlcnIsICJDYW5ub3QgZ2V0IGtlcm5lbCAlcyBzeW1ib2wgYWRkcmVzc1xuIiwgdGV4dCk7Ci0rCi0rCXJldHVybiB2YWRkcjsKLSt9Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDItcHBjLUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDItcHBjLUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmExYzA2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAyLXBwYy1GaXgtZm9ybWF0LXdhcm5pbmctd2l0aC1kaWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDFjOTU2ZmM4YzZiNjMyNGQ4ZDM4YmJhNWY5ZTYwYTAxODA1MWM2ZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogVGh1LCAxNiBNYXIgMjAxNyAxNTozOTowNiArMDIwMAotU3ViamVjdDogW1BBVENIIDIvMl0gcHBjOiBGaXggZm9ybWF0IHdhcm5pbmcgd2l0aCBkaWUoKQotCi1FbmFibGUgY29tcGlsaW5nIGtleGVjLXRvb2xzIGZvciBwcGMgd2l0aCAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eS4KLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtNYWlsaW5nIGxpc3RdCi0tLS0KLSBrZXhlYy9hcmNoL3BwYy9rZXhlYy1lbGYtcHBjLmMgICAgfCAyICstCi0ga2V4ZWMvYXJjaC9wcGMva2V4ZWMtdUltYWdlLXBwYy5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtZWxmLXBwYy5jIGIva2V4ZWMvYXJjaC9wcGMva2V4ZWMtZWxmLXBwYy5jCi1pbmRleCAyOTFmMDZkLi5hZDQzYWQxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtZWxmLXBwYy5jCi0rKysgYi9rZXhlYy9hcmNoL3BwYy9rZXhlYy1lbGYtcHBjLmMKLUBAIC00NTMsNyArNDUzLDcgQEAgb3V0OgotIAlpZiAoIXRtcF9jbWRsaW5lKQotIAkJZnJlZShjb21tYW5kX2xpbmUpOwotIAlpZiAoZXJyb3JfbXNnKQotLQkJZGllKGVycm9yX21zZyk7Ci0rCQlkaWUoIiVzIiwgZXJyb3JfbXNnKTsKLSAKLSAJcmV0dXJuIHJlc3VsdDsKLSB9Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtdUltYWdlLXBwYy5jIGIva2V4ZWMvYXJjaC9wcGMva2V4ZWMtdUltYWdlLXBwYy5jCi1pbmRleCA1ZWVjNmU0Li5lOGY3YWRjIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtdUltYWdlLXBwYy5jCi0rKysgYi9rZXhlYy9hcmNoL3BwYy9rZXhlYy11SW1hZ2UtcHBjLmMKLUBAIC0zMDYsNyArMzA2LDcgQEAgb3V0OgotIAlpZiAoIXRtcF9jbWRsaW5lKQotIAkJZnJlZShjb21tYW5kX2xpbmUpOwotIAlpZiAoZXJyb3JfbXNnKQotLQkJZGllKGVycm9yX21zZyk7Ci0rCQlkaWUoIiVzIiwgZXJyb3JfbXNnKTsKLSAJcmV0dXJuIHJldDsKLSB9Ci0gCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAzLWFybTY0LWlkZW50aWZ5LVBIWVNfT0ZGU0VULWNvcnJlY3RseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDMtYXJtNjQtaWRlbnRpZnktUEhZU19PRkZTRVQtY29ycmVjdGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTFjMzE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDMtYXJtNjQtaWRlbnRpZnktUEhZU19PRkZTRVQtY29ycmVjdGx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotRnJvbSAxNmRmMTcwYWQ0ODA4ZDEyYWNkNWU5MTlhYzRmNmU3ZjMzYTI0N2IzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLURhdGU6IFRodSwgMSBTZXAgMjAxNiAxMDo1Nzo0MiArMDkwMAotU3ViamVjdDogW1BBVENIIDMvOV0gYXJtNjQ6IGlkZW50aWZ5IFBIWVNfT0ZGU0VUIGNvcnJlY3RseQotCi1EdWUgdG8gdGhlIGtlcm5lbCBwYXRjaCwgY29tbWl0IGU3Y2QxOTAzODVkMSAoImFybTY0OiBtYXJrIHJlc2VydmVkCi1tZW1ibG9jayByZWdpb25zIGV4cGxpY2l0bHkgaW4gaW9tZW0iKSwgdGhlIGN1cnJlbnQgY29kZSB3aWxsIG5vdCBiZSBhYmxlCi10byBpZGVudGlmeSB0aGUgY29ycmVjdCB2YWx1ZSBvZiBQSFlTX09GRlNFVCBpZiBzb21lICJyZXNlcnZlZCIgbWVtb3J5Ci1yZWdpb24sIHdoaWNoIGlzIGxpa2VseSB0byBiZSBVRUZJIHJ1bnRpbWUgc2VydmljZXMgY29kZS9kYXRhLCBleGlzdHMgYXQKLWFuIGFkZHJlc3MgYmVsb3cgdGhlIGZpcnN0ICJTeXN0ZW0gUkFNIiByZWdpb25zLgotCi1UaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oICAgICAgIHwgIDcgKysrKysrKwotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYyB8IDEyICsrKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQga2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmggYi9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43ZmQ2NmViCi0tLS0gL2Rldi9udWxsCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLUBAIC0wLDAgKzEsNyBAQAotKyNpZm5kZWYgSU9NRU1fSAotKyNkZWZpbmUgSU9NRU1fSAotKwotKyNkZWZpbmUgU1lTVEVNX1JBTQkJIlN5c3RlbSBSQU1cbiIKLSsjZGVmaW5lIElPTUVNX1JFU0VSVkVECQkicmVzZXJ2ZWRcbiIKLSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLWluZGV4IDJlODgzOWEuLjhhYzgxMWQgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTIxLDYgKzIxLDcgQEAKLSAjaW5jbHVkZSAiY3Jhc2hkdW1wLWFybTY0LmgiCi0gI2luY2x1ZGUgImR0LW9wcy5oIgotICNpbmNsdWRlICJmczJkdC5oIgotKyNpbmNsdWRlICJpb21lbS5oIgotICNpbmNsdWRlICJrZXhlYy1zeXNjYWxsLmgiCi0gI2luY2x1ZGUgImFyY2gvb3B0aW9ucy5oIgotIAotQEAgLTQ3NSw3ICs0NzYsMTQgQEAgc3RhdGljIGludCBnZXRfbWVtb3J5X3Jhbmdlc19pb21lbV9jYih2b2lkICpkYXRhLCBpbnQgbnIsIGNoYXIgKnN0ciwKLSAJCXJldHVybiAtMTsKLSAKLSAJciA9IChzdHJ1Y3QgbWVtb3J5X3JhbmdlICopZGF0YSArIG5yOwotLQlyLT50eXBlID0gUkFOR0VfUkFNOwotKwotKwlpZiAoIXN0cm5jbXAoc3RyLCBTWVNURU1fUkFNLCBzdHJsZW4oU1lTVEVNX1JBTSkpKQotKwkJci0+dHlwZSA9IFJBTkdFX1JBTTsKLSsJZWxzZSBpZiAoIXN0cm5jbXAoc3RyLCBJT01FTV9SRVNFUlZFRCwgc3RybGVuKElPTUVNX1JFU0VSVkVEKSkpCi0rCQlyLT50eXBlID0gUkFOR0VfUkVTRVJWRUQ7Ci0rCWVsc2UKLSsJCXJldHVybiAxOwotKwotIAlyLT5zdGFydCA9IGJhc2U7Ci0gCXItPmVuZCA9IGJhc2UgKyBsZW5ndGggLSAxOwotIAotQEAgLTQ5NCw3ICs1MDIsNyBAQCBzdGF0aWMgaW50IGdldF9tZW1vcnlfcmFuZ2VzX2lvbWVtX2NiKHZvaWQgKmRhdGEsIGludCBuciwgY2hhciAqc3RyLAotIHN0YXRpYyBpbnQgZ2V0X21lbW9yeV9yYW5nZXNfaW9tZW0oc3RydWN0IG1lbW9yeV9yYW5nZSAqYXJyYXksCi0gCXVuc2lnbmVkIGludCAqY291bnQpCi0gewotLQkqY291bnQgPSBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKCJTeXN0ZW0gUkFNXG4iLAotKwkqY291bnQgPSBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKE5VTEwsCi0gCQlnZXRfbWVtb3J5X3Jhbmdlc19pb21lbV9jYiwgYXJyYXkpOwotIAotIAlpZiAoISpjb3VudCkgewotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA0LWFybTY0LWtkdW1wLWlkZW50aWZ5LW1lbW9yeS1yZWdpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNC1hcm02NC1rZHVtcC1pZGVudGlmeS1tZW1vcnktcmVnaW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY2MDBmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA0LWFybTY0LWtkdW1wLWlkZW50aWZ5LW1lbW9yeS1yZWdpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAKLUZyb20gNDhhNGM3ODc0ZDgyNjRkZGJmYWVjMmU5ODU4ZDc4NjZhMmQyZWI2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1EYXRlOiBXZWQsIDUgQXVnIDIwMTUgMTM6MTY6MzAgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzldIGFybTY0OiBrZHVtcDogaWRlbnRpZnkgbWVtb3J5IHJlZ2lvbnMKLQotVGhlIGZvbGxvd2luZyByZWdpb25zIG5lZWQgdG8gYmUgaWRlbnRpZmllZCBmb3IgbGF0ZXIgdXNlOgotIGEpIG1lbW9yeSByZWdpb25zIHdoaWNoIGJlbG9uZyB0byB0aGUgMXN0IGtlcm5lbAotIGIpIHVzYWJsZSBtZW1vcnkgcmVzZXJ2ZWQgZm9yIGNyYXNoIGR1bXAga2VybmVsCi0KLVdlIGdvIHRocm91Z2ggL3Byb2MvaW9tZW0gdG8gZmluZCBvdXQgYSkgYW5kIGIpIHdoaWNoIGFyZSBtYXJrZWQKLWFzICJTeXN0ZW0gUkFNIiBhbmQgIkNyYXNoIGtlcm5lbCIsIHJlc3BlY3RpdmVseS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvdGFrYWhpcm8uYWthc2hpL2tleGVjLXRvb2xzLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlICAgICAgICAgIHwgICAyICsKLSBrZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jIHwgMTAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSBrZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oIHwgIDE0ICsrKysrLQotIGtleGVjL2FyY2gvYXJtNjQvaW9tZW0uaCAgICAgICAgICAgfCAgIDEgKwotIDQgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlIGIva2V4ZWMvYXJjaC9hcm02NC9NYWtlZmlsZQotaW5kZXggNzRiNjc3Zi4uMmQ0YWUwZSAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUKLUBAIC02LDYgKzYsOCBAQCBhcm02NF9GUzJEVF9JTkNMVURFICs9IFwKLSAKLSBhcm02NF9EVF9PUFMgKz0ga2V4ZWMvZHQtb3BzLmMKLSAKLSthcm02NF9NRU1fUkVHSU9OUyA9IGtleGVjL21lbV9yZWdpb25zLmMKLSsKLSBhcm02NF9DUFBGTEFHUyArPSAtSSAkKHNyY2Rpcikva2V4ZWMvCi0gCi0gYXJtNjRfS0VYRUNfU1JDUyArPSBcCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLWluZGV4IGQyMjcyYzguLmRjYWNhNDMgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi1AQCAtMSw1ICsxLDEzIEBACi0gLyoKLSAgKiBBUk02NCBjcmFzaGR1bXAuCi0rICogICAgIHBhcnRseSBkZXJpdmVkIGZyb20gYXJtIGltcGxlbWVudGF0aW9uCi0rICoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBMaW5hcm8gTGltaXRlZAotKyAqIEF1dGhvcjogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKLSsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAgKi8KLSAKLSAjZGVmaW5lIF9HTlVfU09VUkNFCi1AQCAtMTAsMTIgKzE4LDEwMiBAQAotICNpbmNsdWRlICJrZXhlYy5oIgotICNpbmNsdWRlICJjcmFzaGR1bXAuaCIKLSAjaW5jbHVkZSAiY3Jhc2hkdW1wLWFybTY0LmgiCi0rI2luY2x1ZGUgImlvbWVtLmgiCi0gI2luY2x1ZGUgImtleGVjLWFybTY0LmgiCi0gI2luY2x1ZGUgImtleGVjLWVsZi5oIgotKyNpbmNsdWRlICJtZW1fcmVnaW9ucy5oIgotIAotLXN0cnVjdCBtZW1vcnlfcmFuZ2VzIHVzYWJsZW1lbV9yZ25zID0ge307Ci0rLyogbWVtb3J5IHJhbmdlcyBvbiBjcmFzaGVkIGtlcm5lbCAqLwotK3N0YXRpYyBzdHJ1Y3QgbWVtb3J5X3JhbmdlIGNyYXNoX21lbW9yeV9yYW5nZXNbQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVNdOwotK3N0YXRpYyBzdHJ1Y3QgbWVtb3J5X3JhbmdlcyBjcmFzaF9tZW1vcnlfcmducyA9IHsKLSsJLnNpemUgPSAwLAotKwkubWF4X3NpemUgPSBDUkFTSF9NQVhfTUVNT1JZX1JBTkdFUywKLSsJLnJhbmdlcyA9IGNyYXNoX21lbW9yeV9yYW5nZXMsCi0rfTsKLSsKLSsvKiBtZW1vcnkgcmFuZ2UgcmVzZXJ2ZWQgZm9yIGNyYXNoa2VybmVsICovCi0rc3RydWN0IG1lbW9yeV9yYW5nZSBjcmFzaF9yZXNlcnZlZF9tZW07Ci0rc3RydWN0IG1lbW9yeV9yYW5nZXMgdXNhYmxlbWVtX3JnbnMgPSB7Ci0rCS5zaXplID0gMCwKLSsJLm1heF9zaXplID0gMSwKLSsJLnJhbmdlcyA9ICZjcmFzaF9yZXNlcnZlZF9tZW0sCi0rfTsKLSsKLSsvKgotKyAqIGlvbWVtX3JhbmdlX2NhbGxiYWNrKCkgLSBjYWxsYmFjayBjYWxsZWQgZm9yIGVhY2ggaW9tZW0gcmVnaW9uCi0rICogQGRhdGE6IG5vdCB1c2VkCi0rICogQG5yOiBub3QgdXNlZAotKyAqIEBzdHI6IG5hbWUgb2YgdGhlIG1lbW9yeSByZWdpb24KLSsgKiBAYmFzZTogc3RhcnQgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IHJlZ2lvbgotKyAqIEBsZW5ndGg6IHNpemUgb2YgdGhlIG1lbW9yeSByZWdpb24KLSsgKgotKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgZm9yIGVhY2ggbWVtb3J5IHJlZ2lvbiBmb3VuZCBpbiAvcHJvYy9pb21lbS4KLSsgKiBJdCBsb2NhdGVzIHN5c3RlbSBSQU0gYW5kIGNyYXNoa2VybmVsIHJlc2VydmVkIG1lbW9yeSBhbmQgcGxhY2VzIHRoZXNlIHRvCi0rICogdmFyaWFibGVzLCByZXNwZWN0aXZlbHksIGNyYXNoX21lbW9yeV9yYW5nZXMgYW5kIGNyYXNoX3Jlc2VydmVkX21lbS4KLSsgKi8KLSsKLStzdGF0aWMgaW50IGlvbWVtX3JhbmdlX2NhbGxiYWNrKHZvaWQgKlVOVVNFRChkYXRhKSwgaW50IFVOVVNFRChuciksCi0rCQkJCWNoYXIgKnN0ciwgdW5zaWduZWQgbG9uZyBsb25nIGJhc2UsCi0rCQkJCXVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgpCi0rewotKwlpZiAoc3RybmNtcChzdHIsIENSQVNIX0tFUk5FTCwgc3RybGVuKENSQVNIX0tFUk5FTCkpID09IDApCi0rCQlyZXR1cm4gbWVtX3JlZ2lvbnNfYWRkKCZ1c2FibGVtZW1fcmducywKLSsJCQkJICAgICAgIGJhc2UsIGxlbmd0aCwgUkFOR0VfUkFNKTsKLSsJZWxzZSBpZiAoc3RybmNtcChzdHIsIFNZU1RFTV9SQU0sIHN0cmxlbihTWVNURU1fUkFNKSkgPT0gMCkKLSsJCXJldHVybiBtZW1fcmVnaW9uc19hZGQoJmNyYXNoX21lbW9yeV9yZ25zLAotKwkJCQkgICAgICAgYmFzZSwgbGVuZ3RoLCBSQU5HRV9SQU0pOwotKwotKwlyZXR1cm4gMDsKLSt9Ci0gCi0gaW50IGlzX2NyYXNoa2VybmVsX21lbV9yZXNlcnZlZCh2b2lkKQotIHsKLSsJaWYgKCFjcmFzaF9yZXNlcnZlZF9tZW0uZW5kKQotKwkJa2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZShOVUxMLCBpb21lbV9yYW5nZV9jYWxsYmFjaywgTlVMTCk7Ci0rCi0rCXJldHVybiBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQgIT0gY3Jhc2hfcmVzZXJ2ZWRfbWVtLmVuZDsKLSt9Ci0rCi0rLyoKLSsgKiBjcmFzaF9nZXRfbWVtb3J5X3JhbmdlcygpIC0gcmVhZCBzeXN0ZW0gcGh5c2ljYWwgbWVtb3J5Ci0rICoKLSsgKiBGdW5jdGlvbiByZWFkcyB0aHJvdWdoIHN5c3RlbSBwaHlzaWNhbCBtZW1vcnkgYW5kIHN0b3JlcyBmb3VuZCBtZW1vcnkKLSsgKiByZWdpb25zIGluIGNyYXNoX21lbW9yeV9yYW5nZXMuCi0rICogUmVnaW9ucyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4KLSsgKgotKyAqIFJldHVybnMgMCBpbiBjYXNlIG9mIHN1Y2Nlc3MgYW5kIC0xIG90aGVyd2lzZSAoZXJybm8gaXMgc2V0KS4KLSsgKi8KLStzdGF0aWMgaW50IGNyYXNoX2dldF9tZW1vcnlfcmFuZ2VzKHZvaWQpCi0rewotKwkvKgotKwkgKiBGaXJzdCByZWFkIGFsbCBtZW1vcnkgcmVnaW9ucyB0aGF0IGNhbiBiZSBjb25zaWRlcmVkIGFzCi0rCSAqIHN5c3RlbSBtZW1vcnkgaW5jbHVkaW5nIHRoZSBjcmFzaCBhcmVhLgotKwkgKi8KLSsJaWYgKCF1c2FibGVtZW1fcmducy5zaXplKQotKwkJa2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZShOVUxMLCBpb21lbV9yYW5nZV9jYWxsYmFjaywgTlVMTCk7Ci0rCi0rCS8qIGFsbG93IG9ubHkgYSBzaW5nbGUgcmVnaW9uIGZvciBjcmFzaCBkdW1wIGtlcm5lbCAqLwotKwlpZiAodXNhYmxlbWVtX3JnbnMuc2l6ZSAhPSAxKSB7Ci0rCQllcnJubyA9IEVJTlZBTDsKLSsJCXJldHVybiAtMTsKLSsJfQotKwotKwlkYmdwcmludF9tZW1fcmFuZ2UoIlJlc2VydmVkIG1lbW9yeSByYW5nZSIsICZjcmFzaF9yZXNlcnZlZF9tZW0sIDEpOwotKwotKwlpZiAobWVtX3JlZ2lvbnNfZXhjbHVkZSgmY3Jhc2hfbWVtb3J5X3JnbnMsICZjcmFzaF9yZXNlcnZlZF9tZW0pKSB7Ci0rCQlmcHJpbnRmKHN0ZGVyciwKLSsJCQkiRXJyb3I6IE51bWJlciBvZiBjcmFzaCBtZW1vcnkgcmFuZ2VzIGV4Y2VkZWVkIHRoZSBtYXggbGltaXRcbiIpOwotKwkJZXJybm8gPSBFTk9NRU07Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSsJLyoKLSsJICogTWFrZSBzdXJlIHRoYXQgdGhlIG1lbW9yeSByZWdpb25zIGFyZSBzb3J0ZWQuCi0rCSAqLwotKwltZW1fcmVnaW9uc19zb3J0KCZjcmFzaF9tZW1vcnlfcmducyk7Ci0rCi0rCWRiZ3ByaW50X21lbV9yYW5nZSgiQ29yZWR1bXAgbWVtb3J5IHJhbmdlcyIsCi0rCQkJICAgY3Jhc2hfbWVtb3J5X3JnbnMucmFuZ2VzLCBjcmFzaF9tZW1vcnlfcmducy5zaXplKTsKLSsKLSAJcmV0dXJuIDA7Ci0gfQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmggYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oCi1pbmRleCBmMzNjN2EyLi4wN2EwZWQwIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotQEAgLTEsMTIgKzEsMjIgQEAKLSAvKgotICAqIEFSTTY0IGNyYXNoZHVtcC4KLSsgKgotKyAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE2IExpbmFybyBMaW1pdGVkCi0rICogQXV0aG9yOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotKyAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotICAqLwotIAotLSNpZiAhZGVmaW5lZChDUkFTSERVTVBfQVJNNjRfSCkKLSsjaWZuZGVmIENSQVNIRFVNUF9BUk02NF9ICi0gI2RlZmluZSBDUkFTSERVTVBfQVJNNjRfSAotIAotICNpbmNsdWRlICJrZXhlYy5oIgotIAotKyNkZWZpbmUgQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVMJMzIKLSsKLSBleHRlcm4gc3RydWN0IG1lbW9yeV9yYW5nZXMgdXNhYmxlbWVtX3JnbnM7Ci0rZXh0ZXJuIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfcmVzZXJ2ZWRfbWVtOwotIAotLSNlbmRpZgotKyNlbmRpZiAvKiBDUkFTSERVTVBfQVJNNjRfSCAqLwotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaCBiL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotaW5kZXggN2ZkNjZlYi4uMjBjZGE4NyAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oCi1AQCAtMiw2ICsyLDcgQEAKLSAjZGVmaW5lIElPTUVNX0gKLSAKLSAjZGVmaW5lIFNZU1RFTV9SQU0JCSJTeXN0ZW0gUkFNXG4iCi0rI2RlZmluZSBDUkFTSF9LRVJORUwJCSJDcmFzaCBrZXJuZWxcbiIKLSAjZGVmaW5lIElPTUVNX1JFU0VSVkVECQkicmVzZXJ2ZWRcbiIKLSAKLSAjZW5kaWYKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNS1hcm02NC1rZHVtcC1hZGQtZWxmLWNvcmUtaGVhZGVyLXNlZ21lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA1LWFybTY0LWtkdW1wLWFkZC1lbGYtY29yZS1oZWFkZXItc2VnbWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU1MzViNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA1LWFybTY0LWtkdW1wLWFkZC1lbGYtY29yZS1oZWFkZXItc2VnbWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi1Gcm9tIDc2OWRhMjU2MjdjZWJiMmE1M2NhZWU1ZDViZTc4YTMyZDM3NmFkYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogV2VkLCA1IEF1ZyAyMDE1IDEzOjQ1OjE1ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggNS85XSBhcm02NDoga2R1bXA6IGFkZCBlbGYgY29yZSBoZWFkZXIgc2VnbWVudAotCi1FbGYgY29yZSBoZWFkZXIgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSBmb3IgdGhlIGNvcmVkdW1wIG9mCi10aGUgMXN0IGtlcm5lbCwgaW5jbHVkaW5nIGl0cyBwaHlzY2FsIG1lbW9yeSBsYXlvdXQgYXMgd2VsbCBhcyBjcHUgcmVnaXN0ZXIKLXN0YXRlcyBhdCB0aGUgcGFuaWMuCi1UaGUgc2VnbWVudCBpcyBhbGxvY2F0ZWQgaW5zaWRlIHRoZSByZXNlcnZlZCBtZW1vcnkgb2YgY3Jhc2ggZHVtcCBrZXJuZWwuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyB8IDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaCB8ICAzICsrCi0ga2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oICAgICAgICAgICB8ICAyICsKLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jIHwgMTAgKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi1pbmRleCBkY2FjYTQzLi44MzQ2MTMxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotQEAgLTM5LDYgKzM5LDM5IEBAIHN0cnVjdCBtZW1vcnlfcmFuZ2VzIHVzYWJsZW1lbV9yZ25zID0gewotIAkucmFuZ2VzID0gJmNyYXNoX3Jlc2VydmVkX21lbSwKLSB9OwotIAotK3N0cnVjdCBtZW1vcnlfcmFuZ2UgZWxmY29yZWhkcl9tZW07Ci0rCi0rc3RhdGljIHN0cnVjdCBjcmFzaF9lbGZfaW5mbyBlbGZfaW5mbyA9IHsKLSsJLmNsYXNzCQk9IEVMRkNMQVNTNjQsCi0rI2lmIChfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKQotKwkuZGF0YQkJPSBFTEZEQVRBMkxTQiwKLSsjZWxzZQotKwkuZGF0YQkJPSBFTEZEQVRBMk1TQiwKLSsjZW5kaWYKLSsJLm1hY2hpbmUJPSBFTV9BQVJDSDY0LAotK307Ci0rCi0rLyoKLSsgKiBOb3RlOiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgY29ycmVjdCBvbmx5IGlmICFDT05GSUdfUkFORE9NSVpFX0JBU0UuCi0rICovCi0rc3RhdGljIHVpbnQ2NF90IGdldF9rZXJuZWxfcGFnZV9vZmZzZXQodm9pZCkKLSt7Ci0rCWludCBpOwotKwotKwlpZiAoZWxmX2luZm8ua2Vybl92YWRkcl9zdGFydCA9PSBVSU5UNjRfTUFYKQotKwkJcmV0dXJuIFVJTlQ2NF9NQVg7Ci0rCi0rCS8qIEN1cnJlbnQgbWF4IHZpcnR1YWwgbWVtb3J5IHJhbmdlIGlzIDQ4LWJpdHMuICovCi0rCWZvciAoaSA9IDQ4OyBpID4gMDsgaS0tKQotKwkJaWYgKCEoZWxmX2luZm8ua2Vybl92YWRkcl9zdGFydCAmICgxVUwgPDwgaSkpKQotKwkJCWJyZWFrOwotKwotKwlpZiAoaSA8PSAwKQotKwkJcmV0dXJuIFVJTlQ2NF9NQVg7Ci0rCWVsc2UKLSsJCXJldHVybiBVSU5UNjRfTUFYIDw8IGk7Ci0rfQotKwotIC8qCi0gICogaW9tZW1fcmFuZ2VfY2FsbGJhY2soKSAtIGNhbGxiYWNrIGNhbGxlZCBmb3IgZWFjaCBpb21lbSByZWdpb24KLSAgKiBAZGF0YTogbm90IHVzZWQKLUBAIC02Miw2ICs5NSwxMCBAQCBzdGF0aWMgaW50IGlvbWVtX3JhbmdlX2NhbGxiYWNrKHZvaWQgKlVOVVNFRChkYXRhKSwgaW50IFVOVVNFRChuciksCi0gCWVsc2UgaWYgKHN0cm5jbXAoc3RyLCBTWVNURU1fUkFNLCBzdHJsZW4oU1lTVEVNX1JBTSkpID09IDApCi0gCQlyZXR1cm4gbWVtX3JlZ2lvbnNfYWRkKCZjcmFzaF9tZW1vcnlfcmducywKLSAJCQkJICAgICAgIGJhc2UsIGxlbmd0aCwgUkFOR0VfUkFNKTsKLSsJZWxzZSBpZiAoc3RybmNtcChzdHIsIEtFUk5FTF9DT0RFLCBzdHJsZW4oS0VSTkVMX0NPREUpKSA9PSAwKQotKwkJZWxmX2luZm8ua2Vybl9wYWRkcl9zdGFydCA9IGJhc2U7Ci0rCWVsc2UgaWYgKHN0cm5jbXAoc3RyLCBLRVJORUxfREFUQSwgc3RybGVuKEtFUk5FTF9EQVRBKSkgPT0gMCkKLSsJCWVsZl9pbmZvLmtlcm5fc2l6ZSA9IGJhc2UgKyBsZW5ndGggLSBlbGZfaW5mby5rZXJuX3BhZGRyX3N0YXJ0OwotIAotIAlyZXR1cm4gMDsKLSB9Ci1AQCAtMTE1LDUgKzE1Miw2NCBAQCBzdGF0aWMgaW50IGNyYXNoX2dldF9tZW1vcnlfcmFuZ2VzKHZvaWQpCi0gCWRiZ3ByaW50X21lbV9yYW5nZSgiQ29yZWR1bXAgbWVtb3J5IHJhbmdlcyIsCi0gCQkJICAgY3Jhc2hfbWVtb3J5X3JnbnMucmFuZ2VzLCBjcmFzaF9tZW1vcnlfcmducy5zaXplKTsKLSAKLSsJLyoKLSsJICogRm9yIGFkZGl0aW9uYWwga2VybmVsIGNvZGUvZGF0YSBzZWdtZW50LgotKwkgKiBrZXJuX3BhZGRyX3N0YXJ0L2tlcm5fc2l6ZSBhcmUgZGV0ZXJtaW5lZCBpbiBpb21lbV9yYW5nZV9jYWxsYmFjawotKwkgKi8KLSsJZWxmX2luZm8ua2Vybl92YWRkcl9zdGFydCA9IGdldF9rZXJuZWxfc3ltKCJfdGV4dCIpOwotKwlpZiAoIWVsZl9pbmZvLmtlcm5fdmFkZHJfc3RhcnQpCi0rCQllbGZfaW5mby5rZXJuX3ZhZGRyX3N0YXJ0ID0gVUlOVDY0X01BWDsKLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKy8qCi0rICogbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoKSAtIGxvYWQgdGhlIGVsZiBjb3JlIGhlYWRlcgotKyAqIEBpbmZvOiBrZXhlYyBpbmZvIHN0cnVjdHVyZQotKyAqCi0rICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGFuZCBsb2FkcyBhbiBhZGRpdGlvbmFsIHNlZ21lbnQgb2YgZWxmIGNvcmUgaGVhZGVyCi0rIDogd2hpY2ggaXMgdXNlZCB0byBjb25zdHJ1Y3QgL3Byb2Mvdm1jb3JlIG9uIGNyYXNoIGR1bXAga2VybmVsLgotKyAqCi0rICogUmV0dXJuIDAgaW4gY2FzZSBvZiBzdWNjZXNzIGFuZCAtMSBpbiBjYXNlIG9mIGVycm9yLgotKyAqLwotKwotK2ludCBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbykKLSt7Ci0rCXVuc2lnbmVkIGxvbmcgZWxmY29yZWhkcjsKLSsJdW5zaWduZWQgbG9uZyBidWZzejsKLSsJdm9pZCAqYnVmOwotKwlpbnQgZXJyOwotKwotKwkvKgotKwkgKiBGaXJzdCBmZXRjaCBhbGwgdGhlIG1lbW9yeSAoUkFNKSByYW5nZXMgdGhhdCB3ZSBhcmUgZ29pbmcgdG8KLSsJICogcGFzcyB0byB0aGUgY3Jhc2ggZHVtcCBrZXJuZWwgZHVyaW5nIHBhbmljLgotKwkgKi8KLSsKLSsJZXJyID0gY3Jhc2hfZ2V0X21lbW9yeV9yYW5nZXMoKTsKLSsKLSsJaWYgKGVycikKLSsJCXJldHVybiBlcnI7Ci0rCi0rCWVsZl9pbmZvLnBhZ2Vfb2Zmc2V0ID0gZ2V0X2tlcm5lbF9wYWdlX29mZnNldCgpOwotKwlkYmdwcmludGYoIiVzOiBwYWdlX29mZnNldDogICAlMDE2bGx4XG4iLCBfX2Z1bmNfXywKLSsJCQllbGZfaW5mby5wYWdlX29mZnNldCk7Ci0rCi0rCWVyciA9IGNyYXNoX2NyZWF0ZV9lbGY2NF9oZWFkZXJzKGluZm8sICZlbGZfaW5mbywKLSsJCQljcmFzaF9tZW1vcnlfcmducy5yYW5nZXMsIGNyYXNoX21lbW9yeV9yZ25zLnNpemUsCi0rCQkJJmJ1ZiwgJmJ1ZnN6LCBFTEZfQ09SRV9IRUFERVJfQUxJR04pOwotKwotKwlpZiAoZXJyKQotKwkJcmV0dXJuIGVycjsKLSsKLSsJZWxmY29yZWhkciA9IGFkZF9idWZmZXJfcGh5c192aXJ0KGluZm8sIGJ1ZiwgYnVmc3osIGJ1ZnN6LCAwLAotKwkJY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0LCBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kLAotKwkJLTEsIDApOwotKwotKwllbGZjb3JlaGRyX21lbS5zdGFydCA9IGVsZmNvcmVoZHI7Ci0rCWVsZmNvcmVoZHJfbWVtLmVuZCA9IGVsZmNvcmVoZHIgKyBidWZzeiAtIDE7Ci0rCi0rCWRiZ3ByaW50ZigiJXM6IGVsZmNvcmVoZHIgMHglbGx4LTB4JWxseFxuIiwgX19mdW5jX18sCi0rCQkJZWxmY29yZWhkcl9tZW0uc3RhcnQsIGVsZmNvcmVoZHJfbWVtLmVuZCk7Ci0rCi0gCXJldHVybiAwOwotIH0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotaW5kZXggMDdhMGVkMC4uZGE3NWEyZCAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmgKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmgKLUBAIC0xOCw1ICsxOCw4IEBACi0gCi0gZXh0ZXJuIHN0cnVjdCBtZW1vcnlfcmFuZ2VzIHVzYWJsZW1lbV9yZ25zOwotIGV4dGVybiBzdHJ1Y3QgbWVtb3J5X3JhbmdlIGNyYXNoX3Jlc2VydmVkX21lbTsKLStleHRlcm4gc3RydWN0IG1lbW9yeV9yYW5nZSBlbGZjb3JlaGRyX21lbTsKLSsKLStleHRlcm4gaW50IGxvYWRfY3Jhc2hkdW1wX3NlZ21lbnRzKHN0cnVjdCBrZXhlY19pbmZvICppbmZvKTsKLSAKLSAjZW5kaWYgLyogQ1JBU0hEVU1QX0FSTTY0X0ggKi8KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmggYi9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLWluZGV4IDIwY2RhODcuLmQ0ODY0YmIgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotQEAgLTIsNiArMiw4IEBACi0gI2RlZmluZSBJT01FTV9ICi0gCi0gI2RlZmluZSBTWVNURU1fUkFNCQkiU3lzdGVtIFJBTVxuIgotKyNkZWZpbmUgS0VSTkVMX0NPREUJCSJLZXJuZWwgY29kZVxuIgotKyNkZWZpbmUgS0VSTkVMX0RBVEEJCSJLZXJuZWwgZGF0YVxuIgotICNkZWZpbmUgQ1JBU0hfS0VSTkVMCQkiQ3Jhc2gga2VybmVsXG4iCi0gI2RlZmluZSBJT01FTV9SRVNFUlZFRAkJInJlc2VydmVkXG4iCi0gCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLWluZGV4IGRhZjhiZjAuLmM3MGEzN2EgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi1AQCAtMTE5LDYgKzExOSwxNiBAQCBpbnQgZWxmX2FybTY0X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICprZXJuZWxfYnVmLAotIAlkYmdwcmludGYoIiVzOiBQRSBmb3JtYXQ6ICAgICAgJXNcbiIsIF9fZnVuY19fLAotIAkJKGFybTY0X2hlYWRlcl9jaGVja19wZV9zaWcoaGVhZGVyKSA/ICJ5ZXMiIDogIm5vIikpOwotIAotKwlpZiAoaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCkgewotKwkJLyogY3JlYXRlIGFuZCBpbml0aWFsaXplIGVsZiBjb3JlIGhlYWRlciBzZWdtZW50ICovCi0rCQlyZXN1bHQgPSBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhpbmZvKTsKLSsJCWlmIChyZXN1bHQpIHsKLSsJCQlkYmdwcmludGYoIiVzOiBDcmVhdGluZyBlZmxjb3JlaGRyIGZhaWxlZC5cbiIsCi0rCQkJCQkJCQlfX2Z1bmNfXyk7Ci0rCQkJZ290byBleGl0OwotKwkJfQotKwl9Ci0rCi0gCS8qIGxvYWQgdGhlIGtlcm5lbCAqLwotIAlyZXN1bHQgPSBlbGZfZXhlY19sb2FkKCZlaGRyLCBpbmZvKTsKLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNi1hcm02NC1rZHVtcC1zZXQtdXAta2VybmVsLWltYWdlLXNlZ21lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA2LWFybTY0LWtkdW1wLXNldC11cC1rZXJuZWwtaW1hZ2Utc2VnbWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE0OTU1MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA2LWFybTY0LWtkdW1wLXNldC11cC1rZXJuZWwtaW1hZ2Utc2VnbWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi1Gcm9tIDQwNzljOTNhYzU0NTNlZjVmNzg4OWFiNjQ5MjBjMWU5NDI3NjkwZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogVHVlLCAxNyBGZWIgMjAxNSAxNjowNjo1NSArMDkwMAotU3ViamVjdDogW1BBVENIIDYvOV0gYXJtNjQ6IGtkdW1wOiBzZXQgdXAga2VybmVsIGltYWdlIHNlZ21lbnQKLQotT24gYXJtNjQsIHdlIGNhbiB1c2UgdGhlIHNhbWUga2VybmVsIGltYWdlIGFzIDFzdCBrZXJuZWwsIGJ1dAotd2UgaGF2ZSB0byBtb2RpZnkgdGhlIGVudHJ5IHBvaW50IGFzIHdlbGwgYXMgc2VnbWVudHMnIGFkZHJlc3NlcwotaW4gdGhlIGtlcm5lbCdzIGVsZiBoZWFkZXIgaW4gb3JkZXIgdG8gbG9hZCB0aGVtIGludG8gY29ycmVjdCBwbGFjZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyB8IDIzICsrKysrKysrKysrKysrKysrKysrKysrCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaCB8ICAxICsKLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgICAgIHwgMjUgKysrKysrKysrKysrKysrKysrKystLS0tLQotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMgfCAxMCArKysrKysrKystCi0gNCBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLWluZGV4IDgzNDYxMzEuLjk1MTczMjkgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi1AQCAtMjEzLDMgKzIxMywyNiBAQCBpbnQgbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoc3RydWN0IGtleGVjX2luZm8gKmluZm8pCi0gCi0gCXJldHVybiAwOwotIH0KLSsKLSsvKgotKyAqIGVfZW50cnkgYW5kIHBfcGFkZHIgYXJlIGFjdHVhbGx5IGluIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4KLSsgKiBUaG9zZSB2YWx1ZXMgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIHBoeXNjYWwgYWRkcmVzc2VzIGJ5Ci0rICogdXNpbmcgdmlydF90b19waHlzKCkuCi0rICogU28gbGV0J3MgZ2V0IHJlYWR5IGZvciBsYXRlciB1c2Ugc28gdGhlIG1lbW9yeSBiYXNlIChwaHlzX29mZnNldCkKLSsgKiB3aWxsIGJlIGNvcnJlY3RseSByZXBsYWNlZCB3aXRoIGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydC4KLSsgKi8KLSt2b2lkIG1vZGlmeV9laGRyX2Zvcl9jcmFzaGR1bXAoc3RydWN0IG1lbV9laGRyICplaGRyKQotK3sKLSsJc3RydWN0IG1lbV9waGRyICpwaGRyOwotKwlpbnQgaTsKLSsKLSsJZWhkci0+ZV9lbnRyeSArPSAtIGFybTY0X21lbS5waHlzX29mZnNldCArIGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydDsKLSsKLSsJZm9yIChpID0gMDsgaSA8IGVoZHItPmVfcGhudW07IGkrKykgewotKwkJcGhkciA9ICZlaGRyLT5lX3BoZHJbaV07Ci0rCQlpZiAocGhkci0+cF90eXBlICE9IFBUX0xPQUQpCi0rCQkJY29udGludWU7Ci0rCQlwaGRyLT5wX3BhZGRyICs9Ci0rCQkJKC1hcm02NF9tZW0ucGh5c19vZmZzZXQgKyBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQpOwotKwl9Ci0rfQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmggYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oCi1pbmRleCBkYTc1YTJkLi4zODJmNTcxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotQEAgLTIxLDUgKzIxLDYgQEAgZXh0ZXJuIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfcmVzZXJ2ZWRfbWVtOwotIGV4dGVybiBzdHJ1Y3QgbWVtb3J5X3JhbmdlIGVsZmNvcmVoZHJfbWVtOwotIAotIGV4dGVybiBpbnQgbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoc3RydWN0IGtleGVjX2luZm8gKmluZm8pOwotK2V4dGVybiB2b2lkIG1vZGlmeV9laGRyX2Zvcl9jcmFzaGR1bXAoc3RydWN0IG1lbV9laGRyICplaGRyKTsKLSAKLSAjZW5kaWYgLyogQ1JBU0hEVU1QX0FSTTY0X0ggKi8KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLWluZGV4IDhhYzgxMWQuLmNlYzRlNDEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTMwNywxMiArMzA3LDI3IEBAIHVuc2lnbmVkIGxvbmcgYXJtNjRfbG9jYXRlX2tlcm5lbF9zZWdtZW50KHN0cnVjdCBrZXhlY19pbmZvICppbmZvKQotIHsKLSAJdW5zaWduZWQgbG9uZyBob2xlOwotIAotLQlob2xlID0gbG9jYXRlX2hvbGUoaW5mbywKLS0JCWFybTY0X21lbS50ZXh0X29mZnNldCArIGFybTY0X21lbS5pbWFnZV9zaXplLAotLQkJTWlCKDIpLCAwLCBVTE9OR19NQVgsIDEpOwotKwlpZiAoaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCkgewotKwkJdW5zaWduZWQgbG9uZyBob2xlX2VuZDsKLSsKLSsJCWhvbGUgPSAoY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0IDwgbWVtX21pbiA/Ci0rCQkJCW1lbV9taW4gOiBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQpOwotKwkJaG9sZSA9IF9BTElHTl9VUChob2xlLCBNaUIoMikpOwotKwkJaG9sZV9lbmQgPSBob2xlICsgYXJtNjRfbWVtLnRleHRfb2Zmc2V0ICsgYXJtNjRfbWVtLmltYWdlX3NpemU7Ci0rCi0rCQlpZiAoKGhvbGVfZW5kID4gbWVtX21heCkgfHwKLSsJCSAgICAoaG9sZV9lbmQgPiBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kKSkgewotKwkJCWRiZ3ByaW50ZigiJXM6IENyYXNoIGtlcm5lbCBvdXQgb2YgcmFuZ2VcbiIsIF9fZnVuY19fKTsKLSsJCQlob2xlID0gVUxPTkdfTUFYOwotKwkJfQotKwl9IGVsc2UgewotKwkJaG9sZSA9IGxvY2F0ZV9ob2xlKGluZm8sCi0rCQkJYXJtNjRfbWVtLnRleHRfb2Zmc2V0ICsgYXJtNjRfbWVtLmltYWdlX3NpemUsCi0rCQkJTWlCKDIpLCAwLCBVTE9OR19NQVgsIDEpOwotIAotLQlpZiAoaG9sZSA9PSBVTE9OR19NQVgpCi0tCQlkYmdwcmludGYoIiVzOiBsb2NhdGVfaG9sZSBmYWlsZWRcbiIsIF9fZnVuY19fKTsKLSsJCWlmIChob2xlID09IFVMT05HX01BWCkKLSsJCQlkYmdwcmludGYoIiVzOiBsb2NhdGVfaG9sZSBmYWlsZWRcbiIsIF9fZnVuY19fKTsKLSsJfQotIAotIAlyZXR1cm4gaG9sZTsKLSB9Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLWluZGV4IGM3MGEzN2EuLjg0MmNlMjEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi1AQCAtOSw2ICs5LDcgQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2VsZi5oPgotIAotKyNpbmNsdWRlICJjcmFzaGR1bXAtYXJtNjQuaCIKLSAjaW5jbHVkZSAia2V4ZWMtYXJtNjQuaCIKLSAjaW5jbHVkZSAia2V4ZWMtZWxmLmgiCi0gI2luY2x1ZGUgImtleGVjLXN5c2NhbGwuaCIKLUBAIC0xMDUsNyArMTA2LDggQEAgaW50IGVsZl9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqa2VybmVsX2J1ZiwKLSAJfQotIAotIAlhcm02NF9tZW0udnBfb2Zmc2V0ID0gX0FMSUdOX0RPV04oZWhkci5lX2VudHJ5LCBNaUIoMikpOwotLQlhcm02NF9tZW0udnBfb2Zmc2V0IC09IGtlcm5lbF9zZWdtZW50IC0gZ2V0X3BoeXNfb2Zmc2V0KCk7Ci0rCWlmICghKGluZm8tPmtleGVjX2ZsYWdzICYgS0VYRUNfT05fQ1JBU0gpKQotKwkJYXJtNjRfbWVtLnZwX29mZnNldCAtPSBrZXJuZWxfc2VnbWVudCAtIGdldF9waHlzX29mZnNldCgpOwotIAotIAlkYmdwcmludGYoIiVzOiBrZXJuZWxfc2VnbWVudDogJTAxNmx4XG4iLCBfX2Z1bmNfXywga2VybmVsX3NlZ21lbnQpOwotIAlkYmdwcmludGYoIiVzOiB0ZXh0X29mZnNldDogICAgJTAxNmx4XG4iLCBfX2Z1bmNfXywKLUBAIC0xMjcsNiArMTI5LDEyIEBAIGludCBlbGZfYXJtNjRfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmtlcm5lbF9idWYsCi0gCQkJCQkJCQlfX2Z1bmNfXyk7Ci0gCQkJZ290byBleGl0OwotIAkJfQotKwotKwkJLyoKLSsJCSAqIG9mZnNldCBhZGRyZXNzZXMgaW4gb3JkZXIgdG8gZml0IHZtbGludXgKLSsJCSAqIChlbGZfZXhlYykgaW50byBjcmFzaCBrZXJuZWwncyBtZW1vcnkKLSsJCSAqLwotKwkJbW9kaWZ5X2VoZHJfZm9yX2NyYXNoZHVtcCgmZWhkcik7Ci0gCX0KLSAKLSAJLyogbG9hZCB0aGUga2VybmVsICovCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDctYXJtNjQta2R1bXAtc2V0LXVwLW90aGVyLXNlZ21lbnRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNy1hcm02NC1rZHVtcC1zZXQtdXAtb3RoZXItc2VnbWVudHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3NDU0NjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNy1hcm02NC1rZHVtcC1zZXQtdXAtb3RoZXItc2VnbWVudHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDA3YWQxNGUxMjY2NTIyMWQ3NTRmZGU4ZTQ3YzMyYWMxOGMyNDU4NmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogRnJpLCAzMSBKdWwgMjAxNSAyMDowMTozOSArMDkwMAotU3ViamVjdDogW1BBVENIIDcvOV0gYXJtNjQ6IGtkdW1wOiBzZXQgdXAgb3RoZXIgc2VnbWVudHMKLQotV2UgbWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBvdGhlciBzZWdtZW50cywgaW5pdHJkIGFuZCBkZXZpY2UtdHJlZSBibG9iLAotYWxzbyBiZSBsb2FkZWQgaW50byB0aGUgcmVzZXJ2ZWQgbWVtb3J5IG9mIGNyYXNoIGR1bXAga2VybmVsLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5saW5hcm8ub3JnL3Blb3BsZS90YWthaGlyby5ha2FzaGkva2V4ZWMtdG9vbHMuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYyB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLWluZGV4IGNlYzRlNDEuLjc4YTAwMzUgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTM3NCw3ICszNzQsMTAgQEAgaW50IGFybTY0X2xvYWRfb3RoZXJfc2VnbWVudHMoc3RydWN0IGtleGVjX2luZm8gKmluZm8sCi0gCS8qIFB1dCB0aGUgb3RoZXIgc2VnbWVudHMgYWZ0ZXIgdGhlIGltYWdlLiAqLwotIAotIAlob2xlX21pbiA9IGltYWdlX2Jhc2UgKyBhcm02NF9tZW0uaW1hZ2Vfc2l6ZTsKLS0JaG9sZV9tYXggPSBVTE9OR19NQVg7Ci0rCWlmIChpbmZvLT5rZXhlY19mbGFncyAmIEtFWEVDX09OX0NSQVNIKQotKwkJaG9sZV9tYXggPSBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kOwotKwllbHNlCi0rCQlob2xlX21heCA9IFVMT05HX01BWDsKLSAKLSAJaWYgKGFybTY0X29wdHMuaW5pdHJkKSB7Ci0gCQlpbml0cmRfYnVmID0gc2x1cnBfZmlsZShhcm02NF9vcHRzLmluaXRyZCwgJmluaXRyZF9zaXplKTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwOC1hcm02NC1rZHVtcC1hZGQtRFQtcHJvcGVydGllcy10by1jcmFzaC1kdW1wLWtlcm5lbC1zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwOC1hcm02NC1rZHVtcC1hZGQtRFQtcHJvcGVydGllcy10by1jcmFzaC1kdW1wLWtlcm5lbC1zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWMzZDg1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDgtYXJtNjQta2R1bXAtYWRkLURULXByb3BlcnRpZXMtdG8tY3Jhc2gtZHVtcC1rZXJuZWwtcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi1Gcm9tIDIzYmY3YWMxODljYzNiODdjZWI5ZDFkM2I2OWI1YzQ4MTUzNTRhZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogV2VkLCAyNyBKYW4gMjAxNiAxMzozODozOSArMDkwMAotU3ViamVjdDogW1BBVENIIDgvOV0gYXJtNjQ6IGtkdW1wOiBhZGQgRFQgcHJvcGVydGllcyB0byBjcmFzaCBkdW1wIGtlcm5lbCdzCi0gZHRiCi0KLVdlIHBhc3MgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHRvIGNyYXNoIGR1bXAga2VybmVsOgotbGludXgsZWxmY29yZWhkcjogZWxmIGNvcmUgaGVhZGVyIHNlZ21lbnQsCi0JCSAgc2FtZSBhcyAiZWxmY29yZWhkcj0iIGtlcm5lbCBwYXJhbWV0ZXIgb24gb3RoZXIgYXJjaHMKLWxpbnV4LHVzYWJsZS1tZW1vcnktcmFuZ2U6IHVzYWJsZSBtZW1vcnkgcmVzZXJ2ZWQgZm9yIGNyYXNoIGR1bXAga2VybmVsCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jICAgICB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyB8ICA1IC0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLWluZGV4IDc4YTAwMzUuLmE4ZmI2NGYgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTEyOCw5ICsxMjgsNiBAQCBpbnQgYXJjaF9wcm9jZXNzX29wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJY2FzZSBPUFRfSU5JVFJEOgotIAkJCWFybTY0X29wdHMuaW5pdHJkID0gb3B0YXJnOwotIAkJCWJyZWFrOwotLQkJY2FzZSBPUFRfUEFOSUM6Ci0tCQkJZGllKCJsb2FkLXBhbmljICgtcCkgbm90IHN1cHBvcnRlZCIpOwotLQkJCWJyZWFrOwotIAkJZGVmYXVsdDoKLSAJCQlicmVhazsgLyogSWdub3JlIGNvcmUgYW5kIHVua25vd24gb3B0aW9ucy4gKi8KLSAJCX0KLUBAIC0yODUsOCArMjgyLDEyIEBAIG9uX3N1Y2Nlc3M6Ci0gICogc2V0dXBfMm5kX2R0YiAtIFNldHVwIHRoZSAybmQgc3RhZ2Uga2VybmVsJ3MgZHRiLgotICAqLwotIAotLXN0YXRpYyBpbnQgc2V0dXBfMm5kX2R0YihzdHJ1Y3QgZHRiICpkdGIsIGNoYXIgKmNvbW1hbmRfbGluZSkKLStzdGF0aWMgaW50IHNldHVwXzJuZF9kdGIoc3RydWN0IGR0YiAqZHRiLCBjaGFyICpjb21tYW5kX2xpbmUsIGludCBvbl9jcmFzaCkKLSB7Ci0rCWNoYXIgKm5ld19idWY7Ci0rCWludCBuZXdfc2l6ZTsKLSsJaW50IG5vZGVvZmZzZXQ7Ci0rCXVpbnQ2NF90IHJhbmdlWzJdOwotIAlpbnQgcmVzdWx0OwotIAotIAlyZXN1bHQgPSBmZHRfY2hlY2tfaGVhZGVyKGR0Yi0+YnVmKTsKLUBAIC0yOTgsOCArMjk5LDcyIEBAIHN0YXRpYyBpbnQgc2V0dXBfMm5kX2R0YihzdHJ1Y3QgZHRiICpkdGIsIGNoYXIgKmNvbW1hbmRfbGluZSkKLSAKLSAJcmVzdWx0ID0gc2V0X2Jvb3RhcmdzKGR0YiwgY29tbWFuZF9saW5lKTsKLSAKLSsJLyogcmVtb3ZlIHRob3NlIGFueXdheSAqLwotKwlub2Rlb2Zmc2V0ID0gZmR0X3BhdGhfb2Zmc2V0KGR0Yi0+YnVmLCAiL2Nob3NlbiIpOwotKwlmZHRfZGVscHJvcChkdGItPmJ1Ziwgbm9kZW9mZnNldCwgImxpbnV4LGNyYXNoa2VybmVsLWJhc2UiKTsKLSsJZmR0X2RlbHByb3AoZHRiLT5idWYsIG5vZGVvZmZzZXQsICJsaW51eCxjcmFzaGtlcm5lbC1zaXplIik7Ci0rCi0rCWlmIChvbl9jcmFzaCkgewotKwkJbm9kZW9mZnNldCA9IGZkdF9wYXRoX29mZnNldChkdGItPmJ1ZiwgIi9jaG9zZW4iKTsKLSsJCWZkdF9kZWxwcm9wKGR0Yi0+YnVmLCBub2Rlb2Zmc2V0LCAibGludXgsZWxmY29yZWhkciIpOwotKwkJZmR0X2RlbHByb3AoZHRiLT5idWYsIG5vZGVvZmZzZXQsICJsaW51eCx1c2FibGUtbWVtb3J5LXJhbmdlIik7Ci0rCQluZXdfc2l6ZSA9IGZkdF90b3RhbHNpemUoZHRiLT5idWYpCi0rCQkJKyAyICogKHNpemVvZihzdHJ1Y3QgZmR0X3Byb3BlcnR5KQotKwkJCQkJKyBGRFRfVEFHQUxJR04oc2l6ZW9mKHJhbmdlKSkpCi0rCQkJKyBzdHJsZW4oImxpbnV4LGVsZmNvcmVoZHIiKSArIDEKLSsJCQkrIHN0cmxlbigibGludXgsdXNhYmxlLW1lbW9yeS1yYW5nZSIpICsgMTsKLSsKLSsJCW5ld19idWYgPSB4bWFsbG9jKG5ld19zaXplKTsKLSsJCXJlc3VsdCA9IGZkdF9vcGVuX2ludG8oZHRiLT5idWYsIG5ld19idWYsIG5ld19zaXplKTsKLSsJCWlmIChyZXN1bHQpIHsKLSsJCQlkYmdwcmludGYoIiVzOiBmZHRfb3Blbl9pbnRvIGZhaWxlZDogJXNcbiIsIF9fZnVuY19fLAotKwkJCQlmZHRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rCQkJcmVzdWx0ID0gLUVOT1NQQzsKLSsJCQlnb3RvIG9uX2Vycm9yOwotKwkJfQotKwotKwkJcmFuZ2VbMF0gPSBjcHVfdG9fYmU2NChlbGZjb3JlaGRyX21lbS5zdGFydCk7Ci0rCQlyYW5nZVsxXSA9IGNwdV90b19iZTY0KGVsZmNvcmVoZHJfbWVtLmVuZAotKwkJCQktIGVsZmNvcmVoZHJfbWVtLnN0YXJ0ICsgMSk7Ci0rCQlub2Rlb2Zmc2V0ID0gZmR0X3BhdGhfb2Zmc2V0KG5ld19idWYsICIvY2hvc2VuIik7Ci0rCQlyZXN1bHQgPSBmZHRfc2V0cHJvcChuZXdfYnVmLCBub2Rlb2Zmc2V0LCAibGludXgsZWxmY29yZWhkciIsCi0rCQkJCSh2b2lkICopcmFuZ2UsIHNpemVvZihyYW5nZSkpOwotKwkJaWYgKHJlc3VsdCkgewotKwkJCWRiZ3ByaW50ZigiJXM6IGZkdF9zZXRwcm9wIGZhaWxlZDogJXNcbiIsIF9fZnVuY19fLAotKwkJCQlmZHRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rCQkJcmVzdWx0ID0gLUVJTlZBTDsKLSsJCQlnb3RvIG9uX2Vycm9yOwotKwkJfQotKwotKwkJcmFuZ2VbMF0gPSBjcHVfdG9fYmU2NChjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQpOwotKwkJcmFuZ2VbMV0gPSBjcHVfdG9fYmU2NChjcmFzaF9yZXNlcnZlZF9tZW0uZW5kCi0rCQkJCS0gY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0ICsgMSk7Ci0rCQlub2Rlb2Zmc2V0ID0gZmR0X3BhdGhfb2Zmc2V0KG5ld19idWYsICIvY2hvc2VuIik7Ci0rCQlyZXN1bHQgPSBmZHRfc2V0cHJvcChuZXdfYnVmLCBub2Rlb2Zmc2V0LAotKwkJCQkibGludXgsdXNhYmxlLW1lbW9yeS1yYW5nZSIsCi0rCQkJCSh2b2lkICopcmFuZ2UsIHNpemVvZihyYW5nZSkpOwotKwkJaWYgKHJlc3VsdCkgewotKwkJCWRiZ3ByaW50ZigiJXM6IGZkdF9zZXRwcm9wIGZhaWxlZDogJXNcbiIsIF9fZnVuY19fLAotKwkJCQlmZHRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rCQkJcmVzdWx0ID0gLUVJTlZBTDsKLSsJCQlnb3RvIG9uX2Vycm9yOwotKwkJfQotKwotKwkJZmR0X3BhY2sobmV3X2J1Zik7Ci0rCQlkdGItPmJ1ZiA9IG5ld19idWY7Ci0rCQlkdGItPnNpemUgPSBmZHRfdG90YWxzaXplKG5ld19idWYpOwotKwl9Ci0rCi0gCWR1bXBfcmVzZXJ2ZW1hcChkdGIpOwotIAotKwotKwlyZXR1cm4gcmVzdWx0OwotKwotK29uX2Vycm9yOgotKwlmcHJpbnRmKHN0ZGVyciwgImtleGVjOiAlcyBmYWlsZWQuXG4iLCBfX2Z1bmNfXyk7Ci0rCWlmIChuZXdfYnVmKQotKwkJZnJlZShuZXdfYnVmKTsKLSsKLSAJcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi1AQCAtMzY2LDcgKzQzMSw4IEBAIGludCBhcm02NF9sb2FkX290aGVyX3NlZ21lbnRzKHN0cnVjdCBrZXhlY19pbmZvICppbmZvLAotIAkJfQotIAl9Ci0gCi0tCXJlc3VsdCA9IHNldHVwXzJuZF9kdGIoJmR0YiwgY29tbWFuZF9saW5lKTsKLSsJcmVzdWx0ID0gc2V0dXBfMm5kX2R0YigmZHRiLCBjb21tYW5kX2xpbmUsCi0rCQkJaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCk7Ci0gCi0gCWlmIChyZXN1bHQpCi0gCQlyZXR1cm4gLUVGQUlMRUQ7Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLWluZGV4IDg0MmNlMjEuLmIxN2EzMWEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi1AQCAtNDcsMTEgKzQ3LDYgQEAgaW50IGVsZl9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqa2VybmVsX2J1ZiwKLSAJaW50IHJlc3VsdDsKLSAJaW50IGk7Ci0gCi0tCWlmIChpbmZvLT5rZXhlY19mbGFncyAmIEtFWEVDX09OX0NSQVNIKSB7Ci0tCQlmcHJpbnRmKHN0ZGVyciwgImtleGVjOiBrZHVtcCBub3QgeWV0IHN1cHBvcnRlZCBvbiBhcm02NFxuIik7Ci0tCQlyZXR1cm4gLUVGQUlMRUQ7Ci0tCX0KLS0KLSAJcmVzdWx0ID0gYnVpbGRfZWxmX2V4ZWNfaW5mbyhrZXJuZWxfYnVmLCBrZXJuZWxfc2l6ZSwgJmVoZHIsIDApOwotIAotIAlpZiAocmVzdWx0IDwgMCkgewotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA5LWFybTY0LWtkdW1wLUFkZC1zdXBwb3J0LWZvci1iaW5hcnktaW1hZ2UtZmlsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA5LWFybTY0LWtkdW1wLUFkZC1zdXBwb3J0LWZvci1iaW5hcnktaW1hZ2UtZmlsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMWMwMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwOS1hcm02NC1rZHVtcC1BZGQtc3VwcG9ydC1mb3ItYmluYXJ5LWltYWdlLWZpbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSA1YTQ5NThmMDFhNzkzYzNlN2Y0NDBmNWJhZTc1NjY2YTQzNDljYzUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUHJhdHl1c2ggQW5hbmQgPHBhbmFuZEByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAxNCBNYXkgMjAxNSAxMToyNTozNyArMDUzMAotU3ViamVjdDogW1BBVENIIDkvOV0gYXJtNjQ6IGtkdW1wOiBBZGQgc3VwcG9ydCBmb3IgYmluYXJ5IGltYWdlIGZpbGVzCi0KLVRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IHRvIHVzZSBiaW5hcnkgaW1hZ2UgaWUgYXJjaC9hcm02NC9ib290L0ltYWdlIHdpdGgKLWtkdW1wLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5saW5hcm8ub3JnL3Blb3BsZS90YWthaGlyby5ha2FzaGkva2V4ZWMtdG9vbHMuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBQcmF0eXVzaCBBbmFuZCA8cGFuYW5kQHJlZGhhdC5jb20+Ci1bdGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc6IGEgYml0IHJld29ya2VkXQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWltYWdlLWFybTY0LmMgfCAxMiArKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1pbWFnZS1hcm02NC5jIGIva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1pbWFnZS1hcm02NC5jCi1pbmRleCA5NjBlZDk2Li45ODJlNDMxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1pbWFnZS1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWltYWdlLWFybTY0LmMKLUBAIC00LDcgKzQsOSBAQAotIAotICNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAKLSsjaW5jbHVkZSAiY3Jhc2hkdW1wLWFybTY0LmgiCi0gI2luY2x1ZGUgImtleGVjLWFybTY0LmgiCi0rI2luY2x1ZGUgImtleGVjLXN5c2NhbGwuaCIKLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gaW50IGltYWdlX2FybTY0X3Byb2JlKGNvbnN0IGNoYXIgKmtlcm5lbF9idWYsIG9mZl90IGtlcm5lbF9zaXplKQotQEAgLTU4LDYgKzYwLDE2IEBAIGludCBpbWFnZV9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqa2VybmVsX2J1ZiwKLSAJZGJncHJpbnRmKCIlczogUEUgZm9ybWF0OiAgICAgICVzXG4iLCBfX2Z1bmNfXywKLSAJCShhcm02NF9oZWFkZXJfY2hlY2tfcGVfc2lnKGhlYWRlcikgPyAieWVzIiA6ICJubyIpKTsKLSAKLSsJaWYgKGluZm8tPmtleGVjX2ZsYWdzICYgS0VYRUNfT05fQ1JBU0gpIHsKLSsJCS8qIGNyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBlbGYgY29yZSBoZWFkZXIgc2VnbWVudCAqLwotKwkJcmVzdWx0ID0gbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoaW5mbyk7Ci0rCQlpZiAocmVzdWx0KSB7Ci0rCQkJZGJncHJpbnRmKCIlczogQ3JlYXRpbmcgZWZsY29yZWhkciBmYWlsZWQuXG4iLAotKwkJCQkJCQkJX19mdW5jX18pOwotKwkJCWdvdG8gZXhpdDsKLSsJCX0KLSsJfQotKwotIAkvKiBsb2FkIHRoZSBrZXJuZWwgKi8KLSAJYWRkX3NlZ21lbnRfcGh5c192aXJ0KGluZm8sIGtlcm5lbF9idWYsIGtlcm5lbF9zaXplLAotIAkJCWtlcm5lbF9zZWdtZW50ICsgYXJtNjRfbWVtLnRleHRfb2Zmc2V0LAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZXhlYy1hYXJjaDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMva2V4ZWMtYWFyY2g2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAzZjU4Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZXhlYy1hYXJjaDY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODAxICswLDAgQEAKLUZyb206IEdlb2ZmIExldmFuZCA8Z2VvZmZAaW5mcmFkZWFkLm9yZz4KLURhdGU6IE1vbiwgMTUgSnVsIDIwMTMgMjM6MzI6MzYgKzAwMDAgKC0wNzAwKQotU3ViamVjdDogQWRkIGFybTY0IHN1cHBvcnQKLVgtR2l0LVVybDogaHR0cHM6Ly9naXQubGluYXJvLm9yZy9naXR3ZWI/cD1wZW9wbGUlMkZnZW9mZiUyRmtleGVjLXRvb2xzLmdpdDthPWNvbW1pdGRpZmZfcGxhaW47aD1mYmY1YWM2YzJjNzBlYzBmNmRhMmI5ZmY1NjNlNTczOTk5NzUyYzAxCi0KLUFkZCBhcm02NCBzdXBwb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEdlb2ZmIExldmFuZCA8Z2VvZmZAaW5mcmFkZWFkLm9yZz4KLQotR2V0IHBhdGNoIGZyb206Ci1odHRwczovL2ZlZG9yYXBlb3BsZS5vcmcvfmhydy9hYXJjaDY0L2Zvci1mZWRvcmEva2V4ZWMtYWFyY2g2NC5wYXRjaAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLQotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyAKLSBrZXhlYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIAotIGtleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgMTMgKwotIGtleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMgICAgICB8ICAzMDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBrZXhlYy9hcmNoL2FybTY0L2luY2x1ZGUvYXJjaC9vcHRpb25zLmggfCAgIDI2ICsrCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jICAgICAgICAgIHwgIDE3NyArKysrKysrKysrKysrKysrKysKLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmggICAgICAgICAgfCAgIDIwICsrCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyAgICAgIHwgIDExNCArKysrKysrKysrKwotIGtleGVjL2tleGVjLXN5c2NhbGwuaCAgICAgICAgICAgICAgICAgICB8ICAgIDkgCi0ga2V4ZWMva2V4ZWMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAKLSBwdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZSAgICAgICAgICAgfCAgICA3IAotIDExIGZpbGVzIGNoYW5nZWQsIDY3NSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGtleGVjLXRvb2xzLTIuMC4xMC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9jb25maWd1cmUuYWMKLUBAIC0zNiw2ICszNiw5IEBAIGNhc2UgJHRhcmdldF9jcHUgaW4KLSAJCUFSQ0g9InBwYzY0IgotIAkJU1VCQVJDSD0iTEUiCi0gCQk7OwotKwlhYXJjaDY0KiApCi0rCQlBUkNIPSJhcm02NCIKLSsJCTs7Ci0gCWFybSogKQotIAkJQVJDSD0iYXJtIgotIAkJOzsKLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrZXhlYy10b29scy0yLjAuMTAub3JpZy9rZXhlYy9NYWtlZmlsZQotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9NYWtlZmlsZQotQEAgLTcxLDYgKzcxLDcgQEAgS0VYRUNfU1JDUwkJCSs9ICQoJChBUkNIKV9GUzJEVCkKLSAKLSBpbmNsdWRlICQoc3JjZGlyKS9rZXhlYy9hcmNoL2FscGhhL01ha2VmaWxlCi0gaW5jbHVkZSAkKHNyY2Rpcikva2V4ZWMvYXJjaC9hcm0vTWFrZWZpbGUKLStpbmNsdWRlICQoc3JjZGlyKS9rZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlCi0gaW5jbHVkZSAkKHNyY2Rpcikva2V4ZWMvYXJjaC9pMzg2L01ha2VmaWxlCi0gaW5jbHVkZSAkKHNyY2Rpcikva2V4ZWMvYXJjaC9pYTY0L01ha2VmaWxlCi0gaW5jbHVkZSAkKHNyY2Rpcikva2V4ZWMvYXJjaC9tNjhrL01ha2VmaWxlCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9NYWtlZmlsZQotQEAgLTAsMCArMSwxMyBAQAotKwotK2FybTY0X0tFWEVDX1NSQ1MgKz0gXAotKwlrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgXAotKwlrZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jIFwKLSsJa2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotKwotK2FybTY0X0FSQ0hfUkVVU0VfSU5JVFJEID0KLSthcm02NF9BRERfU0VHTUVOVCA9Ci0rYXJtNjRfVklSVF9UT19QSFlTID0KLSsKLStkaXN0ICs9ICQoYXJtNjRfS0VYRUNfU1JDUykgXAotKwlrZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlIFwKLSsJa2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5oCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotQEAgLTAsMCArMSwzMDUgQEAKLSsvKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uICh2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UpLgotKyAqLwotKwotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy5oIgotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy1lbGYuaCIKLSsjaW5jbHVkZSAiLi4vLi4vY3Jhc2hkdW1wLmgiCi0rCi0raW50IGlzX2NyYXNoa2VybmVsX21lbV9yZXNlcnZlZCh2b2lkKQotK3sKLSsJcmV0dXJuIDA7Ci0rfQotKwotKyNpZiAwCi0rLyoKLSsgKiBVc2VkIHRvIHNhdmUgdmFyaW91cyBtZW1vcnkgcmFuZ2VzL3JlZ2lvbnMgbmVlZGVkIGZvciB0aGUgY2FwdHVyZWQKLSsgKiBrZXJuZWwgdG8gYm9vdC4gKGxpbWUgbWVtbWFwPSBvcHRpb24gaW4gb3RoZXIgYXJjaHMpCi0rICovCi0rc3RhdGljIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfbWVtb3J5X3Jhbmdlc1tDUkFTSF9NQVhfTUVNT1JZX1JBTkdFU107Ci0rc3RydWN0IG1lbW9yeV9yYW5nZXMgdXNhYmxlbWVtX3JnbnMgPSB7Ci0rICAgIC5zaXplID0gMCwKLSsgICAgLnJhbmdlcyA9IGNyYXNoX21lbW9yeV9yYW5nZXMsCi0rfTsKLSsKLSsvKiBtZW1vcnkgcmFuZ2UgcmVzZXJ2ZWQgZm9yIGNyYXNoa2VybmVsICovCi0rc3RhdGljIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfcmVzZXJ2ZWRfbWVtOwotKwotK3N0YXRpYyBzdHJ1Y3QgY3Jhc2hfZWxmX2luZm8gZWxmX2luZm8gPSB7Ci0rCS5jbGFzcwkJPSBFTEZDTEFTUzMyLAotKwkuZGF0YQkJPSBFTEZEQVRBMkxTQiwKLSsJLm1hY2hpbmUJPSBFTV9BUk0sCi0rCS5wYWdlX29mZnNldAk9IFBBR0VfT0ZGU0VULAotK307Ci0rCi0rdW5zaWduZWQgbG9uZyBwaHlzX29mZnNldDsKLSsKLSsvKioKLSsgKiBjcmFzaF9yYW5nZV9jYWxsYmFjaygpIC0gY2FsbGJhY2sgY2FsbGVkIGZvciBlYWNoIGlvbWVtIHJlZ2lvbgotKyAqIEBkYXRhOiBub3QgdXNlZAotKyAqIEBucjogbm90IHVzZWQKLSsgKiBAc3RyOiBuYW1lIG9mIHRoZSBtZW1vcnkgcmVnaW9uCi0rICogQGJhc2U6IHN0YXJ0IGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSByZWdpb24KLSsgKiBAbGVuZ3RoOiBzaXplIG9mIHRoZSBtZW1vcnkgcmVnaW9uCi0rICoKLSsgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIGZvciBlYWNoIG1lbW9yeSByZWdpb24gZm91bmQgaW4gL3Byb2MvaW9tZW0uIEl0Ci0rICogbG9jYXRlcyBzeXN0ZW0gUkFNIGFuZCBjcmFzaGtlcm5lbCByZXNlcnZlZCBtZW1vcnkgYW5kIHBsYWNlcyB0aGVzZSB0bwotKyAqIHZhcmlhYmxlczogQGNyYXNoX21lbW9yeV9yYW5nZXMgYW5kIEBjcmFzaF9yZXNlcnZlZF9tZW0uIE51bWJlciBvZiBtZW1vcnkKLSsgKiByZWdpb25zIGlzIHBsYWNlZCBpbiBAY3Jhc2hfbWVtb3J5X25yX3Jhbmdlcy4KLSsgKi8KLStzdGF0aWMgaW50IGNyYXNoX3JhbmdlX2NhbGxiYWNrKHZvaWQgKlVOVVNFRChkYXRhKSwgaW50IFVOVVNFRChuciksCi0rCQkJCWNoYXIgKnN0ciwgdW5zaWduZWQgbG9uZyBiYXNlLAotKwkJCQl1bnNpZ25lZCBsb25nIGxlbmd0aCkKLSt7Ci0rCXN0cnVjdCBtZW1vcnlfcmFuZ2UgKnJhbmdlOwotKwotKwlpZiAodXNhYmxlbWVtX3JnbnMuc2l6ZSA+PSBDUkFTSF9NQVhfTUVNT1JZX1JBTkdFUykKLSsJCXJldHVybiAxOwotKwotKwlyYW5nZSA9IHVzYWJsZW1lbV9yZ25zLnJhbmdlcyArIHVzYWJsZW1lbV9yZ25zLnNpemU7Ci0rCi0rCWlmIChzdHJuY21wKHN0ciwgIlN5c3RlbSBSQU1cbiIsIDExKSA9PSAwKSB7Ci0rCQlyYW5nZS0+c3RhcnQgPSBiYXNlOwotKwkJcmFuZ2UtPmVuZCA9IGJhc2UgKyBsZW5ndGggLSAxOwotKwkJcmFuZ2UtPnR5cGUgPSBSQU5HRV9SQU07Ci0rCQl1c2FibGVtZW1fcmducy5zaXplKys7Ci0rCX0gZWxzZSBpZiAoc3RybmNtcChzdHIsICJDcmFzaCBrZXJuZWxcbiIsIDEzKSA9PSAwKSB7Ci0rCQljcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQgPSBiYXNlOwotKwkJY3Jhc2hfcmVzZXJ2ZWRfbWVtLmVuZCA9IGJhc2UgKyBsZW5ndGggLSAxOwotKwkJY3Jhc2hfcmVzZXJ2ZWRfbWVtLnR5cGUgPSBSQU5HRV9SQU07Ci0rCX0KLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKy8qKgotKyAqIGNyYXNoX2V4Y2x1ZGVfcmFuZ2UoKSAtIGV4Y2x1ZGVzIG1lbW9yeSByZWdpb24gcmVzZXJ2ZWQgZm9yIGNyYXNoa2VybmVsCi0rICoKLSsgKiBGdW5jdGlvbiBsb2NhdGVzIHdoZXJlIGNyYXNoa2VybmVsIHJlc2VydmVkIG1lbW9yeSBpcyBhbmQgcmVtb3ZlcyB0aGF0IHJlZ2lvbgotKyAqIGZyb20gdGhlIGF2YWlsYWJsZSBtZW1vcnkgcmVnaW9ucy4KLSsgKi8KLStzdGF0aWMgdm9pZCBjcmFzaF9leGNsdWRlX3JhbmdlKHZvaWQpCi0rewotKwljb25zdCBzdHJ1Y3QgbWVtb3J5X3JhbmdlICpyYW5nZSA9ICZjcmFzaF9yZXNlcnZlZF9tZW07Ci0rCWludCBpOwotKwotKwlmb3IgKGkgPSAwOyBpIDwgdXNhYmxlbWVtX3JnbnMuc2l6ZTsgaSsrKSB7Ci0rCQlzdHJ1Y3QgbWVtb3J5X3JhbmdlICpyID0gdXNhYmxlbWVtX3JnbnMucmFuZ2VzICsgaTsKLSsKLSsJCS8qCi0rCQkgKiBXZSBhc3N1bWUgdGhhdCBjcmFzaCBhcmVhIGlzIGZ1bGx5IGNvbnRhaW5lZCBpbgotKwkJICogc29tZSBsYXJnZXIgbWVtb3J5IGFyZWEuCi0rCQkgKi8KLSsJCWlmIChyLT5zdGFydCA8PSByYW5nZS0+c3RhcnQgJiYgci0+ZW5kID49IHJhbmdlLT5lbmQpIHsKLSsJCQlzdHJ1Y3QgbWVtb3J5X3JhbmdlICpuZXc7Ci0rCQkJLyoKLSsJCQkgKiBMZXQncyBzcGxpdCB0aGlzIGFyZWEgaW50byAyIHNtYWxsZXIgb25lcyBhbmQKLSsJCQkgKiByZW1vdmUgZXhjbHVkZWQgcmFuZ2UgZnJvbSBiZXR3ZWVuLiBGaXJzdCBjcmVhdGUKLSsJCQkgKiBuZXcgZW50cnkgZm9yIHRoZSByZW1haW5pbmcgYXJlYS4KLSsJCQkgKi8KLSsJCQluZXcgPSB1c2FibGVtZW1fcmducy5yYW5nZXMgKyB1c2FibGVtZW1fcmducy5zaXplOwotKwkJCW5ldy0+c3RhcnQgPSByYW5nZS0+ZW5kICsgMTsKLSsJCQluZXctPmVuZCA9IHItPmVuZDsKLSsJCQl1c2FibGVtZW1fcmducy5zaXplKys7Ci0rCQkJLyoKLSsJCQkgKiBOZXh0IHVwZGF0ZSB0aGlzIGFyZWEgdG8gZW5kIGJlZm9yZSBleGNsdWRlZCByYW5nZS4KLSsJCQkgKi8KLSsJCQlyLT5lbmQgPSByYW5nZS0+c3RhcnQgLSAxOwotKwkJCWJyZWFrOwotKwkJfQotKwl9Ci0rfQotKwotK3N0YXRpYyBpbnQgcmFuZ2VfY21wKGNvbnN0IHZvaWQgKmExLCBjb25zdCB2b2lkICphMikKLSt7Ci0rCWNvbnN0IHN0cnVjdCBtZW1vcnlfcmFuZ2UgKnIxID0gYTE7Ci0rCWNvbnN0IHN0cnVjdCBtZW1vcnlfcmFuZ2UgKnIyID0gYTI7Ci0rCi0rCWlmIChyMS0+c3RhcnQgPiByMi0+c3RhcnQpCi0rCQlyZXR1cm4gMTsKLSsJaWYgKHIxLT5zdGFydCA8IHIyLT5zdGFydCkKLSsJCXJldHVybiAtMTsKLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKy8qKgotKyAqIGNyYXNoX2dldF9tZW1vcnlfcmFuZ2VzKCkgLSByZWFkIHN5c3RlbSBwaHlzaWNhbCBtZW1vcnkKLSsgKgotKyAqIEZ1bmN0aW9uIHJlYWRzIHRocm91Z2ggc3lzdGVtIHBoeXNpY2FsIG1lbW9yeSBhbmQgc3RvcmVzIGZvdW5kIG1lbW9yeSByZWdpb25zCi0rICogaW4gQGNyYXNoX21lbW9yeV9yYW5nZXMuIE51bWJlciBvZiBtZW1vcnkgcmVnaW9ucyBmb3VuZCBpcyBwbGFjZWQgaW4KLSsgKiBAY3Jhc2hfbWVtb3J5X25yX3Jhbmdlcy4gUmVnaW9ucyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4KLSsgKgotKyAqIFJldHVybnMgJTAgaW4gY2FzZSBvZiBzdWNjZXNzIGFuZCAlLTEgb3RoZXJ3aXNlIChlcnJubyBpcyBzZXQpLgotKyAqLwotK3N0YXRpYyBpbnQgY3Jhc2hfZ2V0X21lbW9yeV9yYW5nZXModm9pZCkKLSt7Ci0rCS8qCi0rCSAqIEZpcnN0IHJlYWQgYWxsIG1lbW9yeSByZWdpb25zIHRoYXQgY2FuIGJlIGNvbnNpZGVyZWQgYXMKLSsJICogc3lzdGVtIG1lbW9yeSBpbmNsdWRpbmcgdGhlIGNyYXNoIGFyZWEuCi0rCSAqLwotKwlrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKE5VTEwsIGNyYXNoX3JhbmdlX2NhbGxiYWNrLCBOVUxMKTsKLSsKLSsJaWYgKHVzYWJsZW1lbV9yZ25zLnNpemUgPCAxKSB7Ci0rCQllcnJubyA9IEVJTlZBTDsKLSsJCXJldHVybiAtMTsKLSsJfQotKwotKwkvKgotKwkgKiBFeGNsdWRlIG1lbW9yeSByZXNlcnZlZCBmb3IgY3Jhc2hrZXJuZWwgKHRoaXMgbWF5IHJlc3VsdCBhIHNwbGl0IG1lbW9yeQotKwkgKiByZWdpb24pLgotKwkgKi8KLSsJY3Jhc2hfZXhjbHVkZV9yYW5nZSgpOwotKwotKwkvKgotKwkgKiBNYWtlIHN1cmUgdGhhdCB0aGUgbWVtb3J5IHJlZ2lvbnMgYXJlIHNvcnRlZC4KLSsJICovCi0rCXFzb3J0KHVzYWJsZW1lbV9yZ25zLnJhbmdlcywgdXNhYmxlbWVtX3JnbnMuc2l6ZSwKLSsJICAgICAgc2l6ZW9mKCp1c2FibGVtZW1fcmducy5yYW5nZXMpLCByYW5nZV9jbXApOwotKwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rLyoqCi0rICogY21kbGluZV9hZGRfZWxmY29yZWhkcigpIC0gYWRkcyBlbGZjb3JlaGRyPSB0byBAY21kbGluZQotKyAqIEBjbWRsaW5lOiBidWZmZXIgd2hlcmUgcGFyYW1ldGVyIGlzIHBsYWNlZAotKyAqIEBlbGZjb3JlaGRyOiBwaHlzaWNhbCBhZGRyZXNzIG9mIGVsZmNvcmVoZHIKLSsgKgotKyAqIEZ1bmN0aW9uIGFwcGVuZHMgJ2VsZmNvcmVoZHI9c3RhcnQnIGF0IHRoZSBlbmQgb2YgdGhlIGNvbW1hbmQgbGluZSBnaXZlbiBpbgotKyAqIEBjbWRsaW5lLiBOb3RlIHRoYXQgQGNtZGxpbmUgbXVzdCBiZSBhdCBsZWFzdCAlQ09NTUFORF9MSU5FX1NJWkUgYnl0ZXMgbG9uZwotKyAqIChpbmNsdW5kaW5nICVOVUwpLgotKyAqLwotK3N0YXRpYyB2b2lkIGNtZGxpbmVfYWRkX2VsZmNvcmVoZHIoY2hhciAqY21kbGluZSwgdW5zaWduZWQgbG9uZyBlbGZjb3JlaGRyKQotK3sKLSsJY2hhciBidWZbQ09NTUFORF9MSU5FX1NJWkVdOwotKwlpbnQgYnVmbGVuOwotKwotKwlidWZsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXMgZWxmY29yZWhkcj0lI2x4IiwKLSsJCQkgIGNtZGxpbmUsIGVsZmNvcmVoZHIpOwotKwlpZiAoYnVmbGVuIDwgMCkKLSsJCWRpZSgiRmFpbGVkIHRvIGNvbnN0cnVjdCBlbGZjb3JlaGRyPSBjb21tYW5kIGxpbmUgcGFyYW1ldGVyXG4iKTsKLSsJaWYgKGJ1ZmxlbiA+PSBzaXplb2YoYnVmKSkKLSsJCWRpZSgiQ29tbWFuZCBsaW5lIG92ZXJmbG93XG4iKTsKLSsKLSsJKHZvaWQpIHN0cm5jcHkoY21kbGluZSwgYnVmLCBDT01NQU5EX0xJTkVfU0laRSk7Ci0rCWNtZGxpbmVbQ09NTUFORF9MSU5FX1NJWkUgLSAxXSA9ICdcMCc7Ci0rfQotKwotKy8qKgotKyAqIGNtZGxpbmVfYWRkX21lbSgpIC0gYWRkcyBtZW09IHBhcmFtZXRlciB0byBrZXJuZWwgY29tbWFuZCBsaW5lCi0rICogQGNtZGxpbmU6IGJ1ZmZlciB3aGVyZSBwYXJhbWV0ZXIgaXMgcGxhY2VkCi0rICogQHNpemU6IHNpemUgb2YgdGhlIGtlcm5lbCByZXNlcnZlZCBtZW1vcnkgKGluIGJ5dGVzKQotKyAqCi0rICogVGhpcyBmdW5jdGlvbiBhcHBlbmRzICdtZW09c2l6ZScgYXQgdGhlIGVuZCBvZiB0aGUgY29tbWFuZCBsaW5lIGdpdmVuIGluCi0rICogQGNtZGxpbmUuIE5vdGUgdGhhdCBAY21kbGluZSBtdXN0IGJlIGF0IGxlYXN0ICVDT01NQU5EX0xJTkVfU0laRSBieXRlcyBsb25nCi0rICogKGluY2x1ZGluZyAlTlVMKS4KLSsgKi8KLStzdGF0aWMgdm9pZCBjbWRsaW5lX2FkZF9tZW0oY2hhciAqY21kbGluZSwgdW5zaWduZWQgbG9uZyBzaXplKQotK3sKLSsJY2hhciBidWZbQ09NTUFORF9MSU5FX1NJWkVdOwotKwlpbnQgYnVmbGVuOwotKwotKwlidWZsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXMgbWVtPSVsZEsiLCBjbWRsaW5lLCBzaXplID4+IDEwKTsKLSsJaWYgKGJ1ZmxlbiA8IDApCi0rCQlkaWUoIkZhaWxlZCB0byBjb25zdHJ1Y3QgbWVtPSBjb21tYW5kIGxpbmUgcGFyYW1ldGVyXG4iKTsKLSsJaWYgKGJ1ZmxlbiA+PSBzaXplb2YoYnVmKSkKLSsJCWRpZSgiQ29tbWFuZCBsaW5lIG92ZXJmbG93XG4iKTsKLSsKLSsJKHZvaWQpIHN0cm5jcHkoY21kbGluZSwgYnVmLCBDT01NQU5EX0xJTkVfU0laRSk7Ci0rCWNtZGxpbmVbQ09NTUFORF9MSU5FX1NJWkUgLSAxXSA9ICdcMCc7Ci0rfQotKwotK3N0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgcmFuZ2Vfc2l6ZShjb25zdCBzdHJ1Y3QgbWVtb3J5X3JhbmdlICpyKQotK3sKLSsJcmV0dXJuIHItPmVuZCAtIHItPnN0YXJ0ICsgMTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgZHVtcF9tZW1vcnlfcmFuZ2VzKHZvaWQpCi0rewotKwlpbnQgaTsKLSsKLSsJaWYgKCFrZXhlY19kZWJ1ZykKLSsJCXJldHVybjsKLSsKLSsJZGJncHJpbnRmKCJjcmFzaGtlcm5lbDogWyUjbGx4IC0gJSNsbHhdICglbGRNKVxuIiwKLSsJCSAgY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0LCBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kLAotKwkJICAodW5zaWduZWQgbG9uZylyYW5nZV9zaXplKCZjcmFzaF9yZXNlcnZlZF9tZW0pID4+IDIwKTsKLSsKLSsJZm9yIChpID0gMDsgaSA8IHVzYWJsZW1lbV9yZ25zLnNpemU7IGkrKykgewotKwkJc3RydWN0IG1lbW9yeV9yYW5nZSAqciA9IHVzYWJsZW1lbV9yZ25zLnJhbmdlcyArIGk7Ci0rCQlkYmdwcmludGYoIm1lbW9yeSByYW5nZTogWyUjbGx4IC0gJSNsbHhdICglbGRNKVxuIiwKLSsJCQkgIHItPnN0YXJ0LCByLT5lbmQsICh1bnNpZ25lZCBsb25nKXJhbmdlX3NpemUocikgPj4gMjApOwotKwl9Ci0rfQotKwotKy8qKgotKyAqIGxvYWRfY3Jhc2hkdW1wX3NlZ21lbnRzKCkgLSBsb2FkcyBhZGRpdGlvbmFsIHNlZ21lbnRzIG5lZWRlZCBmb3Iga2R1bXAKLSsgKiBAaW5mbzoga2V4ZWMgaW5mbyBzdHJ1Y3R1cmUKLSsgKiBAbW9kX2NtZGxpbmU6IGtlcm5lbCBjb21tYW5kIGxpbmUKLSsgKgotKyAqIFRoaXMgZnVuY3Rpb24gbG9hZHMgYWRkaXRpb25hbCBzZWdtZW50cyB3aGljaCBhcmUgbmVlZGVkIGZvciB0aGUgZHVtcCBjYXB0dXJlCi0rICoga2VybmVsLiBJdCBhbHNvIHVwZGF0ZXMga2VybmVsIGNvbW1hbmQgbGluZSBwYXNzZWQgaW4gQG1vZF9jbWRsaW5lIHRvIGhhdmUKLSsgKiByaWdodCBwYXJhbWV0ZXJzIGZvciB0aGUgZHVtcCBjYXB0dXJlIGtlcm5lbC4KLSsgKgotKyAqIFJldHVybiAlMCBpbiBjYXNlIG9mIHN1Y2Nlc3MgYW5kICUtMSBpbiBjYXNlIG9mIGVycm9yLgotKyAqLwotK2ludCBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbywgY2hhciAqbW9kX2NtZGxpbmUpCi0rewotKwl1bnNpZ25lZCBsb25nIGVsZmNvcmVoZHI7Ci0rCXVuc2lnbmVkIGxvbmcgYnVmc3o7Ci0rCXZvaWQgKmJ1ZjsKLSsJaW50IGVycjsKLSsKLSsJLyoKLSsJICogRmlyc3QgZmV0Y2ggYWxsIHRoZSBtZW1vcnkgKFJBTSkgcmFuZ2VzIHRoYXQgd2UgYXJlIGdvaW5nIHRvIHBhc3MgdG8KLSsJICogdGhlIGNyYXNoZHVtcCBrZXJuZWwgZHVyaW5nIHBhbmljLgotKwkgKi8KLSsJZXJyID0gY3Jhc2hfZ2V0X21lbW9yeV9yYW5nZXMoKTsKLSsJaWYgKGVycikKLSsJCXJldHVybiBlcnI7Ci0rCi0rCS8qCi0rCSAqIE5vdyB0aGF0IHdlIGhhdmUgbWVtb3J5IHJlZ2lvbnMgc29ydGVkLCB3ZSBjYW4gdXNlIGZpcnN0IG1lbW9yeQotKwkgKiByZWdpb24gYXMgUEhZU19PRkZTRVQuCi0rCSAqLwotKwlwaHlzX29mZnNldCA9IHVzYWJsZW1lbV9yZ25zLnJhbmdlcy0+c3RhcnQ7Ci0rCWRiZ3ByaW50ZigicGh5c19vZmZzZXQ6ICUjbHhcbiIsIHBoeXNfb2Zmc2V0KTsKLSsKLSsJZXJyID0gY3Jhc2hfY3JlYXRlX2VsZjMyX2hlYWRlcnMoaW5mbywgJmVsZl9pbmZvLAotKwkJCQkJIHVzYWJsZW1lbV9yZ25zLnJhbmdlcywKLSsJCQkJCSB1c2FibGVtZW1fcmducy5zaXplLCAmYnVmLCAmYnVmc3osCi0rCQkJCQkgRUxGX0NPUkVfSEVBREVSX0FMSUdOKTsKLSsJaWYgKGVycikKLSsJCXJldHVybiBlcnI7Ci0rCi0rCS8qCi0rCSAqIFdlIGFsbG9jYXRlIEVMRiBjb3JlIGhlYWRlciBmcm9tIHRoZSBlbmQgb2YgdGhlIG1lbW9yeSBhcmVhIHJlc2VydmVkCi0rCSAqIGZvciB0aGUgY3Jhc2hrZXJuZWwuIFdlIGFsaWduIHRoZSBoZWFkZXIgdG8gU0VDVElPTl9TSVpFICh3aGljaCBpcwotKwkgKiAxTUIpIHNvIHRoYXQgYXZhaWxhYmxlIG1lbW9yeSBwYXNzZWQgaW4ga2VybmVsIGNvbW1hbmQgbGluZSB3aWxsIGJlCi0rCSAqIGFsaWduZWQgdG8gMU1CLiBUaGlzIGlzIGJlY2F1c2Uga2VybmVsIGNyZWF0ZV9tYXBwaW5nKCkgd2FudHMgbWVtb3J5Ci0rCSAqIHJlZ2lvbnMgdG8gYmUgYWxpZ25lZCB0byBTRUNUSU9OX1NJWkUuCi0rCSAqLwotKwllbGZjb3JlaGRyID0gYWRkX2J1ZmZlcl9waHlzX3ZpcnQoaW5mbywgYnVmLCBidWZzeiwgYnVmc3osIDEgPDwgMjAsCi0rCQkJCQkgIGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydCwKLSsJCQkJCSAgY3Jhc2hfcmVzZXJ2ZWRfbWVtLmVuZCwgLTEsIDApOwotKwotKwlkYmdwcmludGYoImVsZmNvcmVoZHI6ICUjbHhcbiIsIGVsZmNvcmVoZHIpOwotKwljbWRsaW5lX2FkZF9lbGZjb3JlaGRyKG1vZF9jbWRsaW5lLCBlbGZjb3JlaGRyKTsKLSsKLSsJLyoKLSsJICogQWRkICdtZW09c2l6ZScgcGFyYW1ldGVyIHRvIGR1bXAgY2FwdHVyZSBrZXJuZWwgY29tbWFuZCBsaW5lLiBUaGlzCi0rCSAqIHByZXZlbnRzIHRoZSBkdW1wIGNhcHR1cmUga2VybmVsIGZyb20gdXNpbmcgYW55IG90aGVyIG1lbW9yeSByZWdpb25zCi0rCSAqIHdoaWNoIGJlbG9uZyB0byB0aGUgcHJpbWFyeSBrZXJuZWwuCi0rCSAqLwotKwljbWRsaW5lX2FkZF9tZW0obW9kX2NtZGxpbmUsIGVsZmNvcmVoZHIgLSBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQpOwotKwotKwlkdW1wX21lbW9yeV9yYW5nZXMoKTsKLSsJZGJncHJpbnRmKCJrZXJuZWwgY29tbWFuZCBsaW5lOiBcIiVzXCJcbiIsIG1vZF9jbWRsaW5lKTsKLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKyNlbmRpZgotKwotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2luY2x1ZGUvYXJjaC9vcHRpb25zLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9pbmNsdWRlL2FyY2gvb3B0aW9ucy5oCi1AQCAtMCwwICsxLDI2IEBACi0rI2lmbmRlZiBLRVhFQ19BUkNIX0FSTTY0X09QVElPTlNfSAotKyNkZWZpbmUgS0VYRUNfQVJDSF9BUk02NF9PUFRJT05TX0gKLSsKLSsvLyNkZWZpbmUgT1BUX0FSQ0hfTUFYCSgoT1BUX01BWCkrMCkKLSsKLSsjZGVmaW5lIE9QVF9BUFBFTkQJKChPUFRfTUFYKSswKQotKyNkZWZpbmUgT1BUX1JBTURJU0sJKChPUFRfTUFYKSsxKQotKyNkZWZpbmUgT1BUX0RUQgkJKChPUFRfTUFYKSsyKQotKwotKyNkZWZpbmUgT1BUX0FSQ0hfTUFYCSgoT1BUX01BWCkrMykKLSsKLSsKLSsjZGVmaW5lIEtFWEVDX0FSQ0hfT1BUSU9OUyBcCi0rCUtFWEVDX09QVElPTlMgXAotKwl7ICJhcHBlbmQiLCAgICAgICAxLCBOVUxMLCBPUFRfQVBQRU5EIH0sIFwKLSsJeyAiY29tbWFuZC1saW5lIiwgMSwgTlVMTCwgT1BUX0FQUEVORCB9LCBcCi0rCXsgImR0YiIsICAgICAgICAgIDEsIE5VTEwsIE9QVF9EVEIgfSwgXAotKwl7ICJpbml0cmQiLCAgICAgICAxLCBOVUxMLCBPUFRfUkFNRElTSyB9LCBcCi0rCXsgInJhbWRpc2siLCAgICAgIDEsIE5VTEwsIE9QVF9SQU1ESVNLIH0sIFwKLSsKLSsjZGVmaW5lIEtFWEVDX0FSQ0hfT1BUX1NUUiBLRVhFQ19PUFRfU1RSIC8qIE9ubHkgYWNjZXB0IGxvbmcgYXJjaCBvcHRpb25zLiAqLwotKwotKyNkZWZpbmUgS0VYRUNfQUxMX09QVElPTlMgS0VYRUNfQVJDSF9PUFRJT05TCi0rI2RlZmluZSBLRVhFQ19BTExfT1BUX1NUUiBLRVhFQ19BUkNIX09QVF9TVFIKLSsKLSsjZW5kaWYgLyogS0VYRUNfQVJDSF9BUk02NF9PUFRJT05TX0ggKi8KLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTAsMCArMSwxNzcgQEAKLSsvKgotKyAqIEFSTTY0IGtleGVjIHN1cHBvcnQuCi0rICovCi0rCi0rI2RlZmluZSBfR05VX1NPVVJDRQotKwotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsvLyNpbmNsdWRlIDxsaW51eC9rZXhlYy5oPgotKwotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy5oIgotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy1zeXNjYWxsLmgiCi0rI2luY2x1ZGUgImtleGVjLWFybTY0LmgiCi0rCi0rCi0rdm9pZCBhcmNoX3VzYWdlKHZvaWQpCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAtPlxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsKLSsJcHJpbnRmKAotKyIgICAgIC0tYXBwZW5kPVNUUklORyAgICAgICBTZXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgdG8gU1RSSU5HLlxuIgotKyIgICAgIC0tY29tbWFuZC1saW5lPVNUUklORyBTZXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgdG8gU1RSSU5HLlxuIgotKyIgICAgIC0tZHRiPUZJTEUgICAgICAgICAgICBVc2UgRklMRSBhcyB0aGUgZGV2aWNlIHRyZWUgYmxvYi5cbiIKLSsiICAgICAtLWluaXRyZD1GSUxFICAgICAgICAgVXNlIEZJTEUgYXMgdGhlIGtlcm5lbCBpbml0aWFsIHJhbWRpc2suXG4iCi0rIiAgICAgLS1yYW1kaXNrPUZJTEUgICAgICAgIFVzZSBGSUxFIGFzIHRoZSBrZXJuZWwgaW5pdGlhbCByYW1kaXNrLlxuIik7Ci0rCi0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IDwtXG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotK30KLSsKLStpbnQgYXJjaF9wcm9jZXNzX29wdGlvbnMoaW50IFVOVVNFRChhcmdjKSwgY2hhciAqKlVOVVNFRChhcmd2KSkKLSt7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IGRvXG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rY29uc3Qgc3RydWN0IGFyY2hfbWFwX2VudHJ5IGFyY2hlc1tdID0gewotKwl7ICJhYXJjaDY0IiwgS0VYRUNfQVJDSF9BUk02NCB9LAotKwl7IE5VTEwsIDAgfSwKLSt9OwotKwotK3ZvaWQgYXJjaF91cGRhdGVfcHVyZ2F0b3J5KHN0cnVjdCBrZXhlY19pbmZvICpVTlVTRUQoaW5mbykpCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBkb1xuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSt9Ci0rCi0rdW5zaWduZWQgbG9uZyB2aXJ0X3RvX3BoeXModW5zaWduZWQgbG9uZyBhZGRyKQotK3sKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogJTAxNmx4IC0+ICUwMTZseFxuIiwgX19mdW5jX18sIF9fTElORV9fLCBhZGRyLAotKwkJYWRkciArIDB4MDgwMDAwMDAwVUwpOwotKwlyZXR1cm4gYWRkciArIDB4MDgwMDAwMDAwVUw7Ci0rfQotKwotK3ZvaWQgYWRkX3NlZ21lbnQoc3RydWN0IGtleGVjX2luZm8gKmluZm8sIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1ZnN6LAotKwl1bnNpZ25lZCBsb25nIGJhc2UsIHNpemVfdCBtZW1zeikKLSt7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IC0+XG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotKwlhZGRfc2VnbWVudF9waHlzX3ZpcnQoaW5mbywgYnVmLCBidWZzeiwgYmFzZSwgbWVtc3osIDEpOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiA8LVxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSt9Ci0rCi0rc3RhdGljIGludCBnZXRfbWVtb3J5X3Jhbmdlc18xKHN0cnVjdCBtZW1vcnlfcmFuZ2UgKipyYW5nZSwgaW50ICpyYW5nZXMsCi0rCQkJdW5zaWduZWQgbG9uZyBrZXhlY19mbGFncykKLSt7Ci0rCXN0YXRpYyBzdHJ1Y3QgbWVtb3J5X3JhbmdlIG1lbW9yeV9yYW5nZVtLRVhFQ19TRUdNRU5UX01BWF07Ci0rCWNvbnN0IGNoYXIgKmlvbWVtOwotKwlpbnQgcmFuZ2VfY291bnQgPSAwOwotKwljaGFyIGxpbmVbTUFYX0xJTkVdOwotKwlGSUxFICpmcDsKLSsKLSsJaW9tZW0gPSBwcm9jX2lvbWVtKCk7Ci0rCWZwID0gZm9wZW4oaW9tZW0sICJyIik7Ci0rCi0rCWlmICghZnApIHsKLSsJCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXM6ICVzXG4iLAotKwkJCWlvbWVtLCBzdHJlcnJvcihlcnJubykpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0rCWRiZ3ByaW50ZigibWVtb3J5IHJhbmdlczpcbiIpOwotKwotKwl3aGlsZShmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGZwKSAhPSAwKSB7Ci0rCQlzdHJ1Y3QgbWVtb3J5X3JhbmdlIHI7Ci0rCQljaGFyICpzdHI7Ci0rCQlpbnQgY29uc3VtZWQ7Ci0rCi0rCQlpZiAocmFuZ2VfY291bnQgPj0gS0VYRUNfU0VHTUVOVF9NQVgpCi0rCQkJYnJlYWs7Ci0rCi0rCQlpZiAoc3NjYW5mKGxpbmUsICIlTHgtJUx4IDogJW4iLCAmci5zdGFydCwgJnIuZW5kLCAmY29uc3VtZWQpCi0rCQkJIT0gMikKLSsJCQljb250aW51ZTsKLSsKLSsJCXN0ciA9IGxpbmUgKyBjb25zdW1lZDsKLSsJCXIuZW5kKys7Ci0rCi0rCQlpZiAobWVtY21wKHN0ciwgIlN5c3RlbSBSQU1cbiIsIDExKSkgewotKwkJCWRiZ3ByaW50ZigiIFNraXA6ICUwMTZMeCAtICUwMTZMeCA6ICVzIiwgci5zdGFydCwgci5lbmQsCi0rCQkJCXN0cik7Ci0rCQkJY29udGludWU7Ci0rCQl9Ci0rCi0rCQlyLnR5cGUgPSBSQU5HRV9SQU07Ci0rCQltZW1vcnlfcmFuZ2VbcmFuZ2VfY291bnRdID0gcjsKLSsJCXJhbmdlX2NvdW50Kys7Ci0rCi0rCQlkYmdwcmludGYoIiBBZGQ6ICAlMDE2THggLSAlMDE2THggOiAlcyIsIHIuc3RhcnQsIHIuZW5kLCBzdHIpOwotKwl9Ci0rCi0rCWZjbG9zZShmcCk7Ci0rCSpyYW5nZSA9IG1lbW9yeV9yYW5nZTsKLSsJKnJhbmdlcyA9IHJhbmdlX2NvdW50OwotKwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGludCBnZXRfbWVtb3J5X3Jhbmdlc18yKHN0cnVjdCBtZW1vcnlfcmFuZ2UgKipyYW5nZSwgaW50ICpyYW5nZXMsCi0rCQkgICAgICB1bnNpZ25lZCBsb25nIFVOVVNFRChrZXhlY19mbGFncykpCi0rewotKwlzdGF0aWMgc3RydWN0IG1lbW9yeV9yYW5nZSBtZW1vcnlfcmFuZ2VbMl07Ci0rCi0rCW1lbW9yeV9yYW5nZVswXS5zdGFydCA9IDB4MDgwMDAwMDAwOwotKwltZW1vcnlfcmFuZ2VbMF0uZW5kICAgPSAweDEwMDAwMDAwMDsKLSsJbWVtb3J5X3JhbmdlWzBdLnR5cGUgPSBSQU5HRV9SQU07Ci0rCi0rCW1lbW9yeV9yYW5nZVsxXS5zdGFydCA9IDB4OTAwMDAwMDAwOwotKwltZW1vcnlfcmFuZ2VbMV0uZW5kICAgPSAweDg4MDAwMDAwMDsKLSsJbWVtb3J5X3JhbmdlWzFdLnR5cGUgPSBSQU5HRV9SQU07Ci0rCi0rCSpyYW5nZSA9IG1lbW9yeV9yYW5nZTsKLSsJKnJhbmdlcyA9IHNpemVvZihtZW1vcnlfcmFuZ2UpIC8gc2l6ZW9mKG1lbW9yeV9yYW5nZVswXSk7Ci0rCi0rCXJldHVybiAwOwotK30KLSsKLStpbnQgZ2V0X21lbW9yeV9yYW5nZXMoc3RydWN0IG1lbW9yeV9yYW5nZSAqKnJhbmdlLCBpbnQgKnJhbmdlcywKLSsJCQl1bnNpZ25lZCBsb25nIGtleGVjX2ZsYWdzKQotK3sKLSsJLyogRklYTUU6IFNob3VsZCBnZXQgdGhpcyBpbmZvIGZyb20gZGV2aWNlIHRyZWUuICovCi0rCQotKwlyZXR1cm4gZ2V0X21lbW9yeV9yYW5nZXNfMShyYW5nZSwgcmFuZ2VzLCBrZXhlY19mbGFncyk7Ci0rfQotKwotK3N0cnVjdCBmaWxlX3R5cGUgZmlsZV90eXBlW10gPSB7Ci0rCXsgImVsZi1hcm02NCIsIGVsZl9hcm02NF9wcm9iZSwgZWxmX2FybTY0X2xvYWQsIGVsZl9hcm02NF91c2FnZSB9LAotK307Ci0rCi0raW50IGZpbGVfdHlwZXMgPSBzaXplb2YoZmlsZV90eXBlKSAvIHNpemVvZihmaWxlX3R5cGVbMF0pOwotKwotK2ludCBhcmNoX2NvbXBhdF90cmFtcG9saW5lKHN0cnVjdCBrZXhlY19pbmZvICppbmZvKQotK3sKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZG9cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rCXJldHVybiAwOwotK30KLSsKLSt2b2lkIGFyY2hfcmV1c2VfaW5pdHJkKHZvaWQpCi0rewotK30KLSsKLStpbnQgbWFjaGluZV92ZXJpZnlfZWxmX3JlbChzdHJ1Y3QgbWVtX2VoZHIgKmVoZHIpCi0rewotKwkodm9pZCllaGRyOwotKwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBkb1xuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJcmV0dXJuIDA7Ci0rfQotKwotK3ZvaWQgbWFjaGluZV9hcHBseV9lbGZfcmVsKHN0cnVjdCBtZW1fZWhkciAqZWhkciwgdW5zaWduZWQgbG9uZyByX3R5cGUsCi0rCXZvaWQgKmxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgdmFsdWUpCi0rewotKwkodm9pZCllaGRyOwotKwkodm9pZClyX3R5cGU7Ci0rCSh2b2lkKWxvY2F0aW9uOwotKwkodm9pZClhZGRyZXNzOwotKwkodm9pZCl2YWx1ZTsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZG9cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rfQotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5oCi1AQCAtMCwwICsxLDIwIEBACi0rLyoKLSsgKiBBUk02NCBrZXhlYyBzdXBwb3J0LgotKyAqLwotKwotKyNpZiAhZGVmaW5lZChLRVhFQ19BUk02NF9IKQotKyNkZWZpbmUgS0VYRUNfQVJNNjRfSAotKwotKy8qICNpbmNsdWRlIDxsaW51eC9rZXhlYy5oPiBGSVhNRTogdGhpcyBpcyBicm9rZW4gKi8KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgIi4uLy4uL2tleGVjLmgiCi0rCi0rI2RlZmluZSBLRVhFQ19TRUdNRU5UX01BWCAxNiAvKiBGSVhNRTogdGhpcyBzaG91bGQgY29tZSBmcm9tIDxsaW51eC9rZXhlYy5oPiAqLwotKwotK2ludCBlbGZfYXJtNjRfcHJvYmUoY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4pOwotK2ludCBlbGZfYXJtNjRfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuLAotKwlzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbyk7Ci0rdm9pZCBlbGZfYXJtNjRfdXNhZ2Uodm9pZCk7Ci0rCi0rI2VuZGlmCi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi1AQCAtMCwwICsxLDExNCBAQAotKy8qCi0rICogQVJNNjQga2V4ZWMgc3VwcG9ydC4KLSsgKi8KLSsKLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0rCi0rI2luY2x1ZGUgPGVsZi5oPgotKyNpbmNsdWRlIDxnZXRvcHQuaD4KLSsKLSsjaW5jbHVkZSAiLi4vLi4va2V4ZWMtc3lzY2FsbC5oIgotKwotKyNpbmNsdWRlICJrZXhlYy1hcm02NC5oIgotKyNpbmNsdWRlICJhcmNoL29wdGlvbnMuaCIKLSsKLSsjaWYgIWRlZmluZWQoRU1fQUFSQ0g2NCkKLSsjIGRlZmluZSBFTV9BQVJDSDY0IDE4MwotKyNlbmRpZgotKwotK2ludCBlbGZfYXJtNjRfcHJvYmUoY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4pCi0rewotKwlpbnQgcmVzdWx0OwotKwlzdHJ1Y3QgbWVtX2VoZHIgZWhkcjsKLSsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogLT5cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rCQotKwlyZXN1bHQgPSBidWlsZF9lbGZfZXhlY19pbmZvKGJ1ZiwgbGVuLCAmZWhkciwgMCk7Ci0rCi0rCWlmIChyZXN1bHQgPCAwKSB7Ci0rCQlkYmdwcmludGYoIk5vdCBhbiBFTEYgZXhlY3V0YWJsZVxuIik7Ci0rCQlnb3RvIG91dDsKLSsJfQotKwotKwlpZiAoZWhkci5lX21hY2hpbmUgIT0gRU1fQUFSQ0g2NCkgewotKwkJZGJncHJpbnRmKCJOb3QgYW4gQUFSQ0g2NCBleGVjdXRhYmxlXG4iKTsKLSsJCXJlc3VsdCA9IC0xOwotKwkJZ290byBvdXQ7Ci0rCX0KLSsKLSsJcmVzdWx0ID0gMDsKLSsKLStvdXQ6Ci0rCWZyZWVfZWxmX2luZm8oJmVoZHIpOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiA8LVxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0raW50IGVsZl9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4sCi0rCQkJc3RydWN0IGtleGVjX2luZm8gKmluZm8pCi0rewotKwlzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0rCQlLRVhFQ19BUkNIX09QVElPTlMKLSsJCXsgMCB9Ci0rCX07Ci0rCXN0YXRpYyBjb25zdCBjaGFyIHNob3J0X29wdGlvbnNbXSA9IEtFWEVDX09QVF9TVFIgIiI7Ci0rCWNvbnN0IGNoYXIgKmNvbW1hbmRfbGluZSA9IE5VTEw7Ci0rCXVuc2lnbmVkIGludCBjb21tYW5kX2xpbmVfbGVuID0gMDsKLSsJY29uc3QgY2hhciAqcmFtZGlzayA9IE5VTEw7Ci0rCWNvbnN0IGNoYXIgKmR0YiA9IE5VTEw7Ci0rCWludCBvcHQ7Ci0rCXN0cnVjdCBtZW1fZWhkciBlaGRyOwotKwlpbnQgcmVzdWx0OwotKwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAtPlxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsKLSsJd2hpbGUgKChvcHQgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCBzaG9ydF9vcHRpb25zLCBvcHRpb25zLCAwKSkKLSsJCSE9IC0xKSB7Ci0rCQlzd2l0Y2ggKG9wdCkgewotKwkJZGVmYXVsdDoKLSsJCQlpZiAob3B0IDwgT1BUX01BWCkgLyogSWdub3JlIGNvcmUgb3B0aW9ucyAqLwotKwkJCQlicmVhazsKLSsJCWNhc2UgT1BUX0FQUEVORDoKLSsJCQljb21tYW5kX2xpbmUgPSBvcHRhcmc7Ci0rCQkJY29tbWFuZF9saW5lX2xlbiA9IHN0cmxlbihjb21tYW5kX2xpbmUpICsgMTsKLSsJCQlicmVhazsKLSsJCWNhc2UgT1BUX1JBTURJU0s6Ci0rCQkJcmFtZGlzayA9IG9wdGFyZzsKLSsJCQlicmVhazsKLSsJCWNhc2UgT1BUX0RUQjoKLSsJCQlkdGIgPSBvcHRhcmc7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCX0KLSsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogY29tbWFuZF9saW5lOiAlc1xuIiwgX19mdW5jX18sIF9fTElORV9fLCBjb21tYW5kX2xpbmUpOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiByYW1kaXNrOiAlc1xuIiwgX19mdW5jX18sIF9fTElORV9fLCByYW1kaXNrKTsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZHRiOiAlc1xuIiwgX19mdW5jX18sIF9fTElORV9fLCBkdGIpOwotKwotKwlpZiAoaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCkgewotKwkJZnByaW50ZihzdGRlcnIsICJrZXhlYzoga2R1bXAgbm90IHlldCBzdXBwb3J0ZWQgb24gYXJtNjRcbiIpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0rCXJlc3VsdCA9IGJ1aWxkX2VsZl9leGVjX2luZm8oYnVmLCBsZW4sICZlaGRyLCAwKTsKLSsKLSsJaWYgKHJlc3VsdCA8IDApIHsKLSsJCWZyZWVfZWxmX2luZm8oJmVoZHIpOwotKwkJZnByaW50ZihzdGRlcnIsICIlczolZDogZnJlZV9lbGZfaW5mbyBmYWlsZWRcbiIsIF9fZnVuY19fLAotKwkJCV9fTElORV9fKTsKLSsJCXJldHVybiByZXN1bHQ7Ci0rCX0KLSsKLSsJZWxmX2V4ZWNfYnVpbGRfbG9hZChpbmZvLCAmZWhkciwgYnVmLCBsZW4sIDApOwotKwotKwlpbmZvLT5lbnRyeSA9ICh2b2lkKikweDgwMDgwMDAwVUw7ICAvLyBGSVhNRQotKwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiA8LVxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJcmV0dXJuIDA7Ci0rfQotKwotK3ZvaWQgZWxmX2FybTY0X3VzYWdlKHZvaWQpCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAtPlxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogPC1cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rfQotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9rZXhlYy1zeXNjYWxsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrZXhlYy10b29scy0yLjAuMTAub3JpZy9rZXhlYy9rZXhlYy1zeXNjYWxsLmgKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMva2V4ZWMtc3lzY2FsbC5oCi1AQCAtMzksOCArMzksOCBAQAotICNpZmRlZiBfX3MzOTBfXwotICNkZWZpbmUgX19OUl9rZXhlY19sb2FkCQkyNzcKLSAjZW5kaWYKLS0jaWZkZWYgX19hcm1fXwotLSNkZWZpbmUgX19OUl9rZXhlY19sb2FkCQlfX05SX1NZU0NBTExfQkFTRSArIDM0NyAgCi0rI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FybTY0X18pCi0rI2RlZmluZSBfX05SX2tleGVjX2xvYWQJCV9fTlJfU1lTQ0FMTF9CQVNFICsgMzQ3Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19taXBzX18pCi0gI2RlZmluZSBfX05SX2tleGVjX2xvYWQgICAgICAgICAgICAgICAgNDMxMQotQEAgLTEwOCw2ICsxMDgsOCBAQCBzdGF0aWMgaW5saW5lIGxvbmcga2V4ZWNfZmlsZV9sb2FkKGludCBrCi0gI2RlZmluZSBLRVhFQ19BUkNIX1BQQzY0ICAgKDIxIDw8IDE2KQotICNkZWZpbmUgS0VYRUNfQVJDSF9JQV82NCAgICg1MCA8PCAxNikKLSAjZGVmaW5lIEtFWEVDX0FSQ0hfQVJNICAgICAoNDAgPDwgMTYpCi0rI2RlZmluZSBLRVhFQ19BUkNIX0FSTTY0ICAgKDE4MyA8PCAxNikKLSsvKiAjZGVmaW5lIEtFWEVDX0FSQ0hfQUFSQ0g2NCAoMTgzIDw8IDE2KSAqLwotICNkZWZpbmUgS0VYRUNfQVJDSF9TMzkwICAgICgyMiA8PCAxNikKLSAjZGVmaW5lIEtFWEVDX0FSQ0hfU0ggICAgICAoNDIgPDwgMTYpCi0gI2RlZmluZSBLRVhFQ19BUkNIX01JUFNfTEUgKDEwIDw8IDE2KQotQEAgLTE1Myw1ICsxNTUsOCBAQCBzdGF0aWMgaW5saW5lIGxvbmcga2V4ZWNfZmlsZV9sb2FkKGludCBrCi0gI2lmZGVmIF9fbTY4a19fCi0gI2RlZmluZSBLRVhFQ19BUkNIX05BVElWRQlLRVhFQ19BUkNIXzY4SwotICNlbmRpZgotKyNpZiBkZWZpbmVkKF9fYXJtNjRfXykKLSsjZGVmaW5lIEtFWEVDX0FSQ0hfTkFUSVZFCUtFWEVDX0FSQ0hfQVJNNjQKLSsjZW5kaWYKLSAKLSAjZW5kaWYgLyogS0VYRUNfU1lTQ0FMTF9IICovCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2tleGVjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrZXhlYy10b29scy0yLjAuMTAub3JpZy9rZXhlYy9rZXhlYy5jCi0rKysga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2tleGVjLmMKLUBAIC02NjQsNiArNjY0LDggQEAgc3RhdGljIGludCBteV9sb2FkKGNvbnN0IGNoYXIgKnR5cGUsIGludAotIAltZW1zZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7Ci0gCWluZm8ua2V4ZWNfZmxhZ3MgPSBrZXhlY19mbGFnczsKLSAKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZG9cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rCi0gCXJlc3VsdCA9IDA7Ci0gCWlmIChhcmdjIC0gZmlsZWluZCA8PSAwKSB7Ci0gCQlmcHJpbnRmKHN0ZGVyciwgIk5vIGtlcm5lbCBzcGVjaWZpZWRcbiIpOwotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZQotQEAgLTAsMCArMSw3IEBACi0rIwotKyMgUHVyZ2F0b3J5IGFybTY0Ci0rIwotKwotK2FybTY0X1BVUkdBVE9SWV9TUkNTID0KLSsKLStkaXN0ICs9IHB1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlICQoYXJtNjRfUFVSR0FUT1JZX1NSQ1MpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNjM5OGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotcmVxdWlyZSBrZXhlYy10b29scy5pbmMKLWV4cG9ydCBMREZMQUdTID0gIi1MJHtTVEFHSU5HX0xJQkRJUn0iCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC16bGliPXllcyIKLQotU1JDX1VSSSArPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXBvd2VycGMtY2hhbmdlLXRoZS1tZW1vcnktc2l6ZS1saW1pdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1wdXJnYXRvcnktUGFzcy1yLWRpcmVjdGx5LXRvLWxpbmtlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS12bWNvcmUtZG1lc2ctRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWtleGVjLWV4bnRlbmQtdGhlLXNlbWFudGljcy1vZi1rZXhlY19pb21lbV9mb3JfZWFjaF8ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDIta2V4ZWMtZ2VuZXJhbGl6ZS1hbmQtcmVuYW1lLWdldF9rZXJuZWxfc3RleHRfc3ltLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWFybTY0LWlkZW50aWZ5LVBIWVNfT0ZGU0VULWNvcnJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNC1hcm02NC1rZHVtcC1pZGVudGlmeS1tZW1vcnktcmVnaW9ucy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNS1hcm02NC1rZHVtcC1hZGQtZWxmLWNvcmUtaGVhZGVyLXNlZ21lbnQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDYtYXJtNjQta2R1bXAtc2V0LXVwLWtlcm5lbC1pbWFnZS1zZWdtZW50LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA3LWFybTY0LWtkdW1wLXNldC11cC1vdGhlci1zZWdtZW50cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwOC1hcm02NC1rZHVtcC1hZGQtRFQtcHJvcGVydGllcy10by1jcmFzaC1kdW1wLWtlcm5lbC1zLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA5LWFybTY0LWtkdW1wLUFkZC1zdXBwb3J0LWZvci1iaW5hcnktaW1hZ2UtZmlsZXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMTAta2V4ZWMtQVJNLUZpeC1hZGRfYnVmZmVyX3BoeXNfdmlydC1hbGlnbi1pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS14ODYteDg2XzY0LUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1wcGMtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy14MzIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1QSUUtZHVyaW5nLWxpbmsucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtYXJtNjQtRGlzYWJsZS1QSUMucGF0Y2ggXAotICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjJiMmM1ZTZiMjlkNDY3ZDZlOTlkNTg3ZmI2YjdjZjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjNlNjk1MTlkMmFjY2VkMjU2ODQzYjFlOGYxZWNmYTAwZDliNTRmYTA3NDQ5ZWQ3OGYwNWI5MTkzZjIzOTM3MCIKLQotU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKLQotUEFDS0FHRVMgPSsgImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKLQotRklMRVNfa2V4ZWMgPSAiJHtzYmluZGlyfS9rZXhlYyIKLUZJTEVTX2tkdW1wID0gIiR7c2JpbmRpcn0va2R1bXAgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjb25maWcva2R1bXAuY29uZiBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcCBcCi0gICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2tkdW1wLWhlbHBlciBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UgXAotIgotCi1GSUxFU192bWNvcmUtZG1lc2cgPSAiJHtzYmluZGlyfS92bWNvcmUtZG1lc2ciCi0KLWluaGVyaXQgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gImtkdW1wIgotSU5JVFNDUklQVF9OQU1FX2tkdW1wID0gImtkdW1wIgotSU5JVFNDUklQVF9QQVJBTVNfa2R1bXAgPSAic3RhcnQgNTYgMiAzIDQgNSAuIHN0b3AgNTYgMCAxIDYgLiIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZwotCi0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcAotICAgICAgICBmaQotCi0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlCi0gICAgICAgICAgICAgICAgc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKLSAgICAgICAgZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmI0ODMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE2LmJiCkBAIC0wLDAgKzEsODYgQEAKKworU1VNTUFSWSA9ICJLZXhlYyBmYXN0IHJlYm9vdCB0b29scyIKK0RFU0NSSVBUSU9OID0gIktleGVjIGlzIGEgZmFzdCByZWJvb3QgZmVhdHVyZSB0aGF0IGxldHMgeW91IHJlYm9vdCB0byBhIG5ldyBMaW51eCBrZXJuZWwiCitBVVRIT1IgPSAiRXJpYyBCaWVkZXJtYW4iCitIT01FUEFHRSA9ICJodHRwOi8va2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL2tleGVjLyIKK1NFQ1RJT04gPSAia2VybmVsL3VzZXJsYW5kIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVhNWJlZDJmNjBkMzU3NjE4Y2ExNjFhZDUzOWY3YzBhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2tleGVjL2tleGVjLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9YWYxMGY2YWU0YTg3MTU5NjVlNjQ4YWE2ODdhZDNlMDkiCitERVBFTkRTID0gInpsaWIgeHoiCisKK1BSID0gInIxIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcCBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2tkdW1wLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1wb3dlcnBjLWNoYW5nZS10aGUtbWVtb3J5LXNpemUtbGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wdXJnYXRvcnktUGFzcy1yLWRpcmVjdGx5LXRvLWxpbmtlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWtleGVjLUFSTS1GaXgtYWRkX2J1ZmZlcl9waHlzX3ZpcnQtYWxpZ24taXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8va2V4ZWMteDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1QSUUtZHVyaW5nLWxpbmsucGF0Y2ggXAorICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTE5ODk2OGRlNzliNWRlZDk2Zjk3ZjNjMmVhOTYzN2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2YxN2ZjOTliZjc3YzliMzlmMDZlZTg4YWMwZTg2ZDAzNDljNGEwYzNmODIxNGEzY2M3OGVlY2U4NzJmNmYzYSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitleHBvcnQgTERGTEFHUyA9ICItTCR7U1RBR0lOR19MSUJESVJ9IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtemxpYj15ZXMiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIFJlbW92ZSB0aGUgcHJlcGFja2FnZWQgY29uZmlnLmggZnJvbSB0aGUgc291cmNlIHRyZWUgYXMgaXQgb3ZlcnJpZGVzCisgICAgIyB0aGUgc2FtZSBmaWxlIGdlbmVyYXRlZCBieSBjb25maWd1cmUgYW5kIHBsYWNlZCBpbiB0aGUgYnVpbGQgdHJlZQorICAgIHJtIC1mICR7U30vaW5jbHVkZS9jb25maWcuaAorCisgICAgIyBSZW1vdmUgdGhlICcqLmQnIGZpbGUgdG8gbWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKKyAgICBmb3IgZGVwIGluIGBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAnKi5kJ2A7IGRvCisgICAgICAgIGRlcF9ub19kPSJgZWNobyAkZGVwIHwgc2VkICdzIy5kJCMjJ2AiCisgICAgICAgICMgUmVtb3ZlIGZpbGUuZCB3aGVuIHRoZXJlIGlzIGEgZmlsZS5vCisgICAgICAgIGlmIFsgLWYgIiRkZXBfbm9fZC5vIiBdOyB0aGVuCisgICAgICAgICAgICBybSAtZiAkZGVwCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCisgICAgICAgIGZpCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIKKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKKyAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQorICAgICAgICBmaQorfQorCitQQUNLQUdFUyA9KyAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorUlJFQ09NTUVORFNfJHtQTn0gPSAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgorCitGSUxFU19rZXhlYyA9ICIke3NiaW5kaXJ9L2tleGVjIgorRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZSBcCisiCisKK0ZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfTkFNRV9rZHVtcCA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfUEFSQU1TX2tkdW1wID0gInN0YXJ0IDU2IDIgMyA0IDUgLiBzdG9wIDU2IDAgMSA2IC4iCisKK1NFQ1VSSVRZX1BJRV9DRkxBR1NfcmVtb3ZlID0gIi1mUElFIC1waWUiCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKnxwb3dlcnBjLip8bWlwcy4qKS0obGludXh8ZnJlZWJzZC4qKScKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2QvZGVwbW9kd3JhcHBlci1jcm9zc18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2RlcG1vZHdyYXBwZXItY3Jvc3NfMS4wLmJiCmluZGV4IDQ0ZDAxM2YuLjlhMTcyNjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2QvZGVwbW9kd3JhcHBlci1jcm9zc18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9kZXBtb2R3cmFwcGVyLWNyb3NzXzEuMC5iYgpAQCAtMTEsNiArMTEsNyBAQAogU1NUQVRFX1NDQU5fRklMRVMgKz0gImRlcG1vZHdyYXBwZXIiCiBFWFRSQV9TVEFHSU5HX0ZJWE1FUyArPSAiUEtHREFUQV9ESVIiCiAKK0RFUEVORFMgKz0gImttb2QtbmF0aXZlIgogZG9fcG9wdWxhdGVfc3lzcm9vdFtkZXBlbmRzXSA9ICIiCiAKIGRvX2luc3RhbGwoKSB7CkBAIC0yMywxNyArMjQsMTMgQEAKICAgICBlY2hvICJVc2FnZTogZGVwbW9kd3JhcHBlciAtYSAtYiByb290ZnMgS0VSTkVMX1ZFUlNJT04iID4mMgogICAgIGV4aXQgMQogZmkKLWlmIFsgISAtciAke1BLR0RBVEFfRElSfS9rZXJuZWwtZGVwbW9kL2tlcm5lbC1hYml2ZXJzaW9uIF07IHRoZW4KLSAgICBlY2hvICJVbmFibGUgdG8gcmVhZDogJHtQS0dEQVRBX0RJUn0va2VybmVsLWRlcG1vZC9rZXJuZWwtYWJpdmVyc2lvbiIgPiYyCi1lbHNlCi0gICAga2VybmVsYWJpPVwkKGNhdCAke1BLR0RBVEFfRElSfS9rZXJuZWwtZGVwbW9kL2tlcm5lbC1hYml2ZXJzaW9uKQotICAgIGlmIFsgIlwka2VybmVsYWJpIiAhPSAiXCQ0IiBdOyB0aGVuCi0gICAgICAgIGVjaG8gIkVycm9yOiBLZXJuZWwgdmVyc2lvbiBcJDQgZG9lcyBub3QgbWF0Y2gga2VybmVsLWFiaXZlcnNpb24gKFwka2VybmVsYWJpKSIgPiYyCi0gICAgICAgIGV4aXQgMQotICAgIGZpCisKK2tlcm5lbGFiaT0iIgoraWYgWyAtciAiJHtQS0dEQVRBX0RJUn0va2VybmVsLWRlcG1vZC9rZXJuZWwtYWJpdmVyc2lvbiIgXTsgdGhlbgorICAgIGtlcm5lbGFiaT1cJChjYXQgIiR7UEtHREFUQV9ESVJ9L2tlcm5lbC1kZXBtb2Qva2VybmVsLWFiaXZlcnNpb24iKQogZmkKIAotaWYgWyAhIC1yICR7UEtHREFUQV9ESVJ9L2tlcm5lbC1kZXBtb2QvU3lzdGVtLm1hcC1cJDQgXTsgdGhlbgoraWYgWyAhIC1yICR7UEtHREFUQV9ESVJ9L2tlcm5lbC1kZXBtb2QvU3lzdGVtLm1hcC1cJDQgXSB8fCBbICJcJGtlcm5lbGFiaSIgIT0gIlwkNCIgXTsgdGhlbgogICAgIGVjaG8gIlVuYWJsZSB0byByZWFkOiAke1BLR0RBVEFfRElSfS9rZXJuZWwtZGVwbW9kL1N5c3RlbS5tYXAtXCQ0IiA+JjIKICAgICBleGVjIGVudiBkZXBtb2QgIlwkMSIgIlwkMiIgIlwkMyIgIlwkNCIKIGVsc2UKQEAgLTQ1LDQgKzQyLDUgQEAKIAogU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgogCitQQUNLQUdFUyA9ICIiCiBpbmhlcml0IG5vcGFja2FnZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QuaW5jCmluZGV4IDdmYjEwYjUuLjI5ODg1ZmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kLmluYwpAQCAtMTQsOSArMTQsOSBAQAogICAgICAgICAgICAgICAgICAgICIKIGluaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgcGtnY29uZmlnIG1hbnBhZ2VzCiAKLVNSQ1JFViA9ICJlZjQyNTdiNTljNDMwN2I4YzYyN2Q4OWYzYzdmMWZlZWRiMzI1ODJmIgorU1JDUkVWID0gImFjYTRlY2ExMDNkNjY5OTU0M2Y3ZWQ2NjMzMzVjMjhjMmU5OTA4YmIiCiAjIExvb2tvdXQgZm9yIFBWIGJ1bXAgdG9vIHdoZW4gU1JDUkVWIGlzIGNoYW5nZWQKLVBWID0gIjI0K2dpdCR7U1JDUFZ9IgorUFYgPSAiMjUrZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9rZXJuZWwva21vZC9rbW9kLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9kZXBtb2Qtc2VhcmNoLmNvbmYgXApAQCAtMzUsOSArMzUsNyBAQAogUEFDS0FHRUNPTkZJR1tsb2dnaW5nXSA9ICIgLS1lbmFibGUtbG9nZ2luZywtLWRpc2FibGUtbG9nZ2luZyIKIFBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLCAtLWRpc2FibGUtbWFucGFnZXMsIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKIAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICAgICBndGtkb2NpemUgLS1kb2NkaXIgJHtTfS9saWJrbW9kL2RvY3MgLS1zcmNkaXIgJHtTfQotfQorR1RLRE9DX0RPQ0RJUiA9ICIke1N9L2xpYmttb2QvZG9jcyIKIAogZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CiAJc2VkIC1pICdzI31saWJ0b29sI30ke1RBUkdFVF9TWVN9LWxpYnRvb2wjJyAke0J9L2RvbHRsaWJ0b29sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKaW5kZXggZmVhZmNiOS4uNWY0NWZjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaApAQCAtMTEsMTAgKzExLDEwIEBACiAgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlYjBmOWQxLi5hNTM5OTY4IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKK0luZGV4OiBnaXQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZ2l0L2NvbmZpZ3VyZS5hYwogQEAgLTE0LDcgKzE0LDcgQEAgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCiAgQUNfU1lTX0xBUkdFRklMRQogIEFDX1BSRUZJWF9ERUZBVUxUKFsvdXNyXSkKQEAgLTIzLDcgKzIzLDQgQEAKICtBTV9JTklUX0FVVE9NQUtFKFtjaGVjay1uZXdzIGZvcmVpZ24gMS4xMSBzaWxlbnQtcnVsZXMgdGFyLXBheCBuby1kaXN0LWd6aXAgZGlzdC14eiBzdWJkaXItb2JqZWN0cyBjb2xvci10ZXN0cyBzZXJpYWwtdGVzdHNdKQogIEFNX1NJTEVOVF9SVUxFUyhbeWVzXSkKICBMVF9JTklUKFtkaXNhYmxlLXN0YXRpYyBwaWMtb25seV0pCi0gCi0tLSAKLTEuOS4xCi0KKyBET0xUCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QvZml4LU9fQ0xPRVhFQy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9maXgtT19DTE9FWEVDLnBhdGNoCmluZGV4IDgxNjFkNjEuLjVkOWQ0MGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9maXgtT19DTE9FWEVDLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9maXgtT19DTE9FWEVDLnBhdGNoCkBAIC0xOCwxMiArMTgsMTIgQEAKICBsaWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaCB8ICAgIDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAotZGlmZiAtLWdpdCBhL2xpYmttb2QvbGlia21vZC1pbnRlcm5hbC5oIGIvbGlia21vZC9saWJrbW9kLWludGVybmFsLmgKLWluZGV4IDAxODAxMjQuLjEwMGI0MGYgMTAwNjQ0Ci0tLS0gYS9saWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaAotKysrIGIvbGlia21vZC9saWJrbW9kLWludGVybmFsLmgKLUBAIC05LDYgKzksMTAgQEAKLSAjaW5jbHVkZSAibWFjcm8uaCIKK0luZGV4OiBnaXQvbGlia21vZC9saWJrbW9kLWludGVybmFsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9saWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaAorKysrIGdpdC9saWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaAorQEAgLTEwLDYgKzEwLDEwIEBACisgCiAgI2luY2x1ZGUgImxpYmttb2QuaCIKICAKICsjaWZuZGVmIE9fQ0xPRVhFQwpAQCAtMzMsNiArMzMsMyBAQAogIHN0YXRpYyBfYWx3YXlzX2lubGluZV8gX3ByaW50Zl9mb3JtYXRfKDIsIDMpIHZvaWQKICAJa21vZF9sb2dfbnVsbChzdHJ1Y3Qga21vZF9jdHggKmN0eCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pIHt9CiAgCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvMDAwMS1SZWN0aWZ5LXRoZS1mdW5jdGlvbi1zaWduYXR1cmVzLXRvLWZpeC1wcm90b3R5cGUtbWlzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS8wMDAxLVJlY3RpZnktdGhlLWZ1bmN0aW9uLXNpZ25hdHVyZXMtdG8tZml4LXByb3RvdHlwZS1taXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyNDgxMzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS8wMDAxLVJlY3RpZnktdGhlLWZ1bmN0aW9uLXNpZ25hdHVyZXMtdG8tZml4LXByb3RvdHlwZS1taXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1Gcm9tIGRiMTEyNzM5ZGM0ZjYwOGE5NjhiODEwNGIzODI5NTVkYzNkOTZjYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IFNlcCAyMDE1IDA3OjQwOjEwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlY3RpZnkgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgdG8gZml4IHByb3RvdHlwZSBtaXNtYXRjaGVzCi0KLWNsYW5nIGlzIGxlc3MgZm9yZ2l2aW5nIHdoZW4gaXQgY29tZXMgdG8gY29kaW5nIHN0YW5kYXJkcywgY29ycmVjdCB0aGUKLWZ1bmN0aW9uIHNpZ25hdHVyZXMgdG8gcmVmbGVjdCB0aGUgZnVuY3Rpb24gbG9naWMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBmc3luYy5jICAgICAgfCA3ICsrKystLS0KLSBsYXRlbmN5dG9wLmggfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9mc3luYy5jIGIvZnN5bmMuYwotaW5kZXggODJkZmYwZS4uNWNlZmJhOSAxMDA2NDQKLS0tLSBhL2ZzeW5jLmMKLSsrKyBiL2ZzeW5jLmMKLUBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBmc3luY19maWxlcyB7Ci0gc3RhdGljIEdMaXN0ICpmc3luY19kYXRhOwotIAotIAotLXN0YXRpYyBjaGFpbl9maWxlKHN0cnVjdCBmc3luY19wcm9jZXNzICpwcm9jLCBjaGFyICpmaWxlbmFtZSkKLStzdGF0aWMgdm9pZCBjaGFpbl9maWxlKHN0cnVjdCBmc3luY19wcm9jZXNzICpwcm9jLCBjaGFyICpmaWxlbmFtZSkKLSB7Ci0gCXN0cnVjdCBmc3luY19maWxlcyAqZmlsZTsKLSAJR0xpc3QgKml0ZW07Ci1AQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgY2hhaW5fZmlsZShzdHJ1Y3QgZnN5bmNfcHJvY2VzcyAqcHJvYywgY2hhciAqZmlsZW5hbWUpCi0gCXByb2MtPmZpbGVzID0gZ19saXN0X2FwcGVuZChwcm9jLT5maWxlcywgZmlsZSk7Ci0gfQotIAotLXN0YXRpYyByZXBvcnRfZmlsZShjaGFyICpwcm9jZXNzLCBjaGFyICpmaWxlKQotK3N0YXRpYyB2b2lkIHJlcG9ydF9maWxlKGNoYXIgKnByb2Nlc3MsIGNoYXIgKmZpbGUpCi0gewotIAlzdHJ1Y3QgZnN5bmNfcHJvY2VzcyAqcHJvYzsKLSAJR0xpc3QgKml0ZW07Ci1AQCAtMTU3LDkgKzE1NywxMCBAQCBpbnQgZW5hYmxlX2ZzeW5jX3RyYWNlcih2b2lkKQotIAl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2N1cnJlbnRfdHJhY2VyIiwgImZzeW5jIik7CQotIAl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2l0ZXJfY3RybCIsICJmdHJhY2VfcHJpbnRrIik7CQotIAl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfb24iLCAiMSIpOwotKwlyZXR1cm4gcmV0OwotIH0KLSAKLS1pbnQgZGlzYWJsZV9mc3luY190cmFjZXIodm9pZCkKLSt2b2lkIGRpc2FibGVfZnN5bmNfdHJhY2VyKHZvaWQpCi0gewotIAl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfb24iLCAiMCIpOwotIH0KLWRpZmYgLS1naXQgYS9sYXRlbmN5dG9wLmggYi9sYXRlbmN5dG9wLmgKLWluZGV4IDUzOTRkNzMuLjlkMTA3YTggMTAwNjQ0Ci0tLS0gYS9sYXRlbmN5dG9wLmgKLSsrKyBiL2xhdGVuY3l0b3AuaAotQEAgLTU0LDUgKzU0LDUgQEAgZXh0ZXJuIGNoYXIgKnRyYW5zbGF0ZShjaGFyICpsaW5lKTsKLSBleHRlcm4gdm9pZCBpbml0X3RyYW5zbGF0aW9ucyhjaGFyICpmaWxlbmFtZSk7Ci0gZXh0ZXJuIGludCBmc3luY19kaXNwbGF5KGludCBkdXJhdGlvbik7Ci0gZXh0ZXJuIGludCBlbmFibGVfZnN5bmNfdHJhY2VyKHZvaWQpOwotLWV4dGVybiBpbnQgZGlzYWJsZV9mc3luY190cmFjZXIodm9pZCk7Ci0rZXh0ZXJuIHZvaWQgZGlzYWJsZV9mc3luY190cmFjZXIodm9pZCk7Ci0gZXh0ZXJuIHZvaWQgdXBkYXRlX2xpc3Qodm9pZCk7Ci0tLSAKLTIuNS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1mc3luYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1mc3luYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg0OGNjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3AtMC41L2xhdGVuY3l0b3AtZnN5bmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1saW51eDogc3lzZnM6IHVzZSB0cmFjaW5nX29uIGFzIHRyYWNpbmdfZW5hYmxlZCBpcyBkZXByZWNhdGVkCi0KLXRyYWNpbmdfZW5hYmxlZCB1c2UgaW4gdGhlIGtlcm5lbCBpcyBiZWluZyBkZXByZWNhdGVkIGFzIHBlciBjb21taXQKLTY3NTJhYjRhOWMzMCBbdHJhY2luZzogRGVwcmVjYXRlIHRyYWNpbmdfZW5hYmxlZCBmb3IgdHJhY2luZ19vbl0gaW4KLXRoZSBsaW51eCBtYWlubGluZSBrZXJuZWwuIHRyYWNpbmdfZW5hYmxlZCB1c2Ugd2lsbCBnZW5lcmF0ZSBhIHdhcm5pbmcKLWFuZCBtYXkgbm8gbG9uZ2VyIGZ1bmN0aW9uIGFzIGV4cGVjdGVkLCB0aGVyZWZvcmUgbW92ZSB0byB1c2UgdHJhY2luZ19vbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IERlbm5pcyBIYWxsIDxkZW5uaXMuaGFsbEB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogbGF0ZW5jeXRvcC0wLjUvZnN5bmMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxhdGVuY3l0b3AtMC41Lm9yaWcvZnN5bmMuYwkyMDEyLTA4LTAzIDEwOjQ1OjQ5LjAwMDAwMDAwMCAtMDQwMAotKysrIGxhdGVuY3l0b3AtMC41L2ZzeW5jLmMJMjAxMi0wOC0wMyAxMDo0ODozOS4wMDAwMDAwMDAgLTA0MDAKLUBAIC0xNDksMTkgKzE0OSwxOSBAQAotICAqIGNkIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcKLSAgKiBlY2hvIGZzeW5jID4gY3VycmVudF90cmFjZXIKLSAgKiBlY2hvIGZ0cmFjZV9wcmludGsgPiBpdGVyX2N0cmwgCi0tICogZWNobyAxID4gdHJhY2luZ19lbmFibGVkCi0rICogZWNobyAxID4gdHJhY2luZ19vbgotICAqLwotIAlyZXQgPSBzeXN0ZW0oIi9iaW4vbW91bnQgLXQgZGVidWdmcyBub25lIC9zeXMva2VybmVsL2RlYnVnLyIpOwotIAlpZiAoIXJldCkgCi0gCQlyZXR1cm4gLTE7Ci0gCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvY3VycmVudF90cmFjZXIiLCAiZnN5bmMiKTsJCi0gCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvaXRlcl9jdHJsIiwgImZ0cmFjZV9wcmludGsiKTsJCi0tCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2luZ19lbmFibGVkIiwgIjEiKTsKLSsJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX29uIiwgIjEiKTsKLSB9Ci0gCi0gaW50IGRpc2FibGVfZnN5bmNfdHJhY2VyKHZvaWQpCi0gewotLQl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfZW5hYmxlZCIsICIwIik7Ci0rCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2luZ19vbiIsICIwIik7Ci0gfQotIAotIAotQEAgLTMzOSw4ICszMzksOCBAQAotIAkJaWYgKGN1cmR1cmF0aW9uID4gNSkKLSAJCQljdXJkdXJhdGlvbiA9IDU7Ci0gCQkvKiBjbGVhciB0aGUgZnRyYWNlIGJ1ZmZlciAqLwotLQkJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX2VuYWJsZWQiLCAiMCIpOwotLQkJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX2VuYWJsZWQiLCAiMSIpOwotKwkJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX29uIiwgIjAiKTsKLSsJCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2luZ19vbiIsICIxIik7Ci0gCQlrZXkgPSBzZWxlY3QoMSwgJnJmZHMsIE5VTEwsIE5VTEwsICZlbmQpOwotIAkJcGFyc2VfZnRyYWNlKCk7Ci0gCQlwcmludF9nbG9iYWxfbGlzdCgpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLW1ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLW1ha2VmaWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTQ3ZmRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1tYWtlZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotU2lnbmVkLW9mZi1ieTogSmFjayBNaXRjaGVsbCA8amFjay5taXRjaGVsbEBkYmJyb2FkY2FzdC5jby51az4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUub3JpZyBiL01ha2VmaWxlCi1pbmRleCAxNmEyMzY5Li5mYTc5N2EyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUub3JpZwotKysrIGIvTWFrZWZpbGUKLUBAIC0xLDEwICsxLDExIEBACi0tIyBGSVhNRTogVXNlIGF1dG9jb25mID8KLS1IQVNfR1RLX0dVSSA9IDEKLSsjCi0rIwotIAotIERFU1RESVIgPQotIFNCSU5ESVIgPSAvdXNyL3NiaW4KLSBYQ0ZMQUdTID0gLVcgIC1nIGBwa2ctY29uZmlnIC0tY2ZsYWdzIGdsaWItMi4wYCAtRF9GT1JUSUZZX1NPVVJDRT0yIC1Xbm8tc2lnbi1jb21wYXJlCi0tTERGID0gLVdsLC0tYXMtbmVlZGVkIGBwa2ctY29uZmlnIC0tbGlicyBnbGliLTIuMGAgICAtbG5jdXJzZXN3IAotK0xERiA9IC1XbCwtLWFzLW5lZWRlZCBgcGtnLWNvbmZpZyAtLWxpYnMgZ2xpYi0yLjBgICAgLWxuY3Vyc2VzICQoTERGTEFHUykKLStDQyA/PSBnY2MKLSAKLSBPQkpTPSBsYXRlbmN5dG9wLm8gdGV4dF9kaXNwbGF5Lm8gdHJhbnNsYXRlLm8gZnN5bmMubwotIAotQEAgLTI2LDE2ICsyNywxNyBAQCBlbmRpZgotIAotICMgV2Ugd3JpdGUgZXhwbGljaXR5IHRoaXMgImltcGxpY2l0IHJ1bGUiCi0gJS5vIDogJS5jCi0tCWdjYyAtYyAkKENGTEFHUykgJChYQ0ZMQUdTKSAkPCAtbyAkQAotKwkkKENDKSAtYyAkKENGTEFHUykgJChYQ0ZMQUdTKSAkPCAtbyAkQAotIAotIGxhdGVuY3l0b3A6ICAkKE9CSlMpIGxhdGVuY3l0b3AuaCBNYWtlZmlsZQotLQlnY2MgJChDRkxBR1MpICQoT0JKUykgJChMREYpIC1vIGxhdGVuY3l0b3AgCi0rCSQoQ0MpICQoQ0ZMQUdTKSAkKE9CSlMpICQoTERGKSAtbyBsYXRlbmN5dG9wCi0gCi0gY2xlYW46Ci0gCXJtIC1mICp+IGxhdGVuY3l0b3AgREVBREpPRSAqLm8KLSAKLSBpbnN0YWxsOiBsYXRlbmN5dG9wCi0gCW1rZGlyIC1wICQoREVTVERJUikvdXNyL3NoYXJlL2xhdGVuY3l0b3AKLSsJbWtkaXIgLXAgJChERVNURElSKS8kKFNCSU5ESVIpCi0gCWluc3RhbGwgLW0gMDY0NCBsYXRlbmN5dG9wLnRyYW5zICQoREVTVERJUikvdXNyL3NoYXJlL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC50cmFucwotIAlpbnN0YWxsIC1tIDA2NDQgKi5wbmcgJChERVNURElSKS91c3Ivc2hhcmUvbGF0ZW5jeXRvcC8KLSAJaW5zdGFsbCAtbSAwNzU1IGxhdGVuY3l0b3AgJChERVNURElSKSQoU0JJTkRJUikvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3BfMC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wXzAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIxOTQ3MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3BfMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCB0b29sIGZvciBtZWFzdXJpbmcgYW5kIGZpeGluZyBsYXRlbmN5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5sYXRlbmN5dG9wLm9yZy8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9sYXRlbmN5dG9wLmM7ZW5kbGluZT0yMzttZDU9ZWU5ZWE5YjE0MTUzNTZlNTczNGFkYWQ0YTg3ZGM3ZmEiCi0KLWluaGVyaXQgcGtnY29uZmlnCi0KLURFUEVORFMgPSAidmlydHVhbC9saWJpbnRsIG5jdXJzZXMgZ2xpYi0yLjAiCi0KLVBSID0gInIzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy8ke0JQTn0vJHtCUH0udGFyLmd6LzczYmIzMzcxYzZlZTBiMGU2OGUyNTI4OTAyN2U4NjVjLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgICBmaWxlOi8vbGF0ZW5jeXRvcC1tYWtlZmlsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbGF0ZW5jeXRvcC1mc3luYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1SZWN0aWZ5LXRoZS1mdW5jdGlvbi1zaWduYXR1cmVzLXRvLWZpeC1wcm90b3R5cGUtbWlzLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjczYmIzMzcxYzZlZTBiMGU2OGUyNTI4OTAyN2U4NjVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllN2Y3MmZiZWE3YmQ5MThlNzEyMTJhMWVhYmFhZDg0ODhkMmM2MDIyMDVkMmUzYzk1ZDYyY2Q1N2U5MjAzZWYiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbeDExXSA9ICIsLGd0aysiCi0KLUVYVFJBX09FTUFLRV9YID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICdIQVNfR1RLX0dVST0xJywgJycsIGQpfSIKLQotI0NGTEFHUyArPSAiJHtMREZMQUdTfSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9ICR7RVhUUkFfT0VNQUtFX1h9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vZmlsZXMvMDAwMS1NYWtlZmlsZS1BZGQtTERGTEFHUy12YXJpYWJsZS10by1TTERGTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9maWxlcy8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLXRvLVNMREZMQUdTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTlhN2Y3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9maWxlcy8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLXRvLVNMREZMQUdTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAyNzJhOGEwNjlhOGY1ZjA2YTFlNWRmYTBlZjEyZjVmOTI5ODQ3MjhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTm9vciA8bm9vcl9haHNhbkBtZW50b3IuY29tPgotRGF0ZTogV2VkLCAxMiBBdWcgMjAxNSAyMDo1NDowMCArMDUwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogQWRkIExERkxBR1MgdmFyaWFibGUgdG8gU0xERkxBR1MuCi0KLSogQWRkIExERkxBR1MgdmFyaWFibGUgdG8gU0xERkxBR1Mgc28gdGhhdCBleHRyYSBsaW5rZXIKLSAgZmxhZ3MgY2FuIGJlIHNlbnQgdmlhIHRoaXMgdmFyaWFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtwZXJmbW9uMi1saWJwZm00LWNvbW1pdHNAbGlzdHMuc291cmNlZm9yZ2UubmV0XQotCi1TaWduZWQtb2ZmLWJ5OiBOb29yIEFoc2FuIDxub29yX2Foc2FuQG1lbnRvci5jb20+Ci0tLS0KLSBsaWIvTWFrZWZpbGUgfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKLWluZGV4IDFjYzg3NjUuLjRiZDkyZWYgMTAwNjQ0Ci0tLS0gYS9saWIvTWFrZWZpbGUKLSsrKyBiL2xpYi9NYWtlZmlsZQotQEAgLTE4Nyw3ICsxODcsNyBAQCBDRkxBR1MgKz0gLURDT05GSUdfUEZNTElCX0NFTEwKLSBlbmRpZgotIAotIGlmZXEgKCQoU1lTKSxMaW51eCkKLS1TTERGTEFHUz0tc2hhcmVkIC1XbCwtc29uYW1lIC1XbCwkKFZMSUJQRk0pCi0rU0xERkxBR1M9JChMREZMQUdTKSAtc2hhcmVkIC1XbCwtc29uYW1lIC1XbCwkKFZMSUJQRk0pCi0gU0xJQlBGTT1saWJwZm0uc28uJChWRVJTSU9OKS4kKFJFVklTSU9OKS4kKEFHRSkKLSBWTElCUEZNPWxpYnBmbS5zby4kKFZFUlNJT04pCi0gU09MSUJFWFQ9c28KLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vZmlsZXMvZml4LW1pc2xlYWRpbmctaW5kZW50YXRpb24tZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vZmlsZXMvZml4LW1pc2xlYWRpbmctaW5kZW50YXRpb24tZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZDQ3ZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2ZpbGVzL2ZpeC1taXNsZWFkaW5nLWluZGVudGF0aW9uLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUZpeCBjb21waWxlIGVycm9yOgotCi18IHN5c3RfY291bnQuYzozNDY6MzogZXJyb3I6IHRoaXMgJ2ZvcicgY2xhdXNlIGRvZXMgbm90IGd1YXJkLi4uIFstV2Vycm9yPW1pc2xlYWRpbmctaW5kZW50YXRpb25dIAotfCAgICBmb3IoYz1jbWluIDsgYyA8IGNtYXg7IGMrKykgCi18ICAgICAgIF5+fiAKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9wZXJmX2V4YW1wbGVzL3N5c3RfY291bnQuYyBiL3BlcmZfZXhhbXBsZXMvc3lzdF9jb3VudC5jCi1pbmRleCAwZDUzMDc4Li4yZGZiOWI5IDEwMDY0NAotLS0tIGEvcGVyZl9leGFtcGxlcy9zeXN0X2NvdW50LmMKLSsrKyBiL3BlcmZfZXhhbXBsZXMvc3lzdF9jb3VudC5jCi1AQCAtMzQzLDggKzM0Myw5IEBAIG1lYXN1cmUodm9pZCkKLSAKLSAJCWZvciAoZGVsYXkgPSAxIDsgZGVsYXkgPD0gb3B0aW9ucy5kZWxheTsgZGVsYXkrKykgewotIAotLQkJZm9yKGM9Y21pbiA7IGMgPCBjbWF4OyBjKyspCi0tCQkJc3RhcnRfY3B1KGMpOwotKwkJCWZvcihjPWNtaW4gOyBjIDwgY21heDsgYysrKSB7Ci0rCQkJCXN0YXJ0X2NwdShjKTsKLSsJCQl9Ci0gCi0gCQkJaWYgKDApIHsKLSAJCQkJdHYudHZfc2VjID0gMDsKLUBAIC0zNTMsOCArMzU0LDkgQEAgbWVhc3VyZSh2b2lkKQotIAkJCX0gZWxzZQotIAkJCQlzbGVlcCgxKTsKLSAKLS0JCWZvcihjPWNtaW4gOyBjIDwgY21heDsgYysrKQotLQkJCXN0b3BfY3B1KGMpOwotKwkJCWZvcihjPWNtaW4gOyBjIDwgY21heDsgYysrKSB7Ci0rCQkJCXN0b3BfY3B1KGMpOwotKwkJCX0KLSAKLSAJCQlmb3IoYyA9IGNtaW47IGMgPCBjbWF4OyBjKyspIHsKLSAJCQkJcHJpbnRmKCIjICUnZHMgLS0tLS1cbiIsIGRlbGF5KTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9saWJwZm00XzQuNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMzZlYWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIk1vbml0b3JpbmcgdG9vbHMgZXhwbG9pdGluZyB0aGUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBldmVudHMiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBsaWJyYXJ5LCBjYWxsZWQgbGlicGZtNCB3aGljaCBpcyB1c2VkIHRvIGRldmVsb3AgXAotbW9uaXRvcmluZyB0b29scyBleHBsb2l0aW5nIHRoZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGV2ZW50cyBzdWNoIGFzIHRob3NlIFwKLXByb3ZpZGVkIGJ5IHRoZSBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXQgKFBNVSkgb2YgbW9kZXJuIHByb2Nlc3NvcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3BlcmZtb24yLnNvdXJjZWZvcmdlLm5ldC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTQ0ODIyJmF0aWQ9NzU5OTUzJnNvdXJjZT1uYXZiYXIiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGRlNDg4ZjNiZDQ0MjRlMzA4ZTJlMzk5Y2I5OWM3ODgiCi0KLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICJwb3dlcnBjNjQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9wZXJmbW9uMi8ke0JQTn0vbGlicGZtLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLXRvLVNMREZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1taXNsZWFkaW5nLWluZGVudGF0aW9uLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1MDc3YjkwMjI0NDBlNDk1MWQ5NmYyZDBlNzNiZDQ4NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YWIxZTViMDQ3MjU1MGY5MDM3YTg4MDA4MzRmNmJjM2I5Mjc2OTAwNzBmNjlmYWMwYjY3Mjg0YjRiMDVmZDVmIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9wZXJmbW9uMi9maWxlcy9saWJwZm00LyIKLQotRVhUUkFfT0VNQUtFID0gIkRFU1RESVI9XCIke0R9XCIgUFJFRklYPVwiJHtwcmVmaXh9XCIgTElCRElSPVwiJHtsaWJkaXJ9XCIgTERDT05GSUc9XCJ0cnVlXCIiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX3Bvd2VycGMgPSAiIEFSQ0g9XCJwb3dlcnBjXCIiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX3Bvd2VycGM2NCA9ICIgQVJDSD1cInBvd2VycGNcIiBCSVRNT0RFPVwiNjRcIiIKLQotUyA9ICIke1dPUktESVJ9L2xpYnBmbS0ke1BWfSIKLQotZG9faW5zdGFsbCAoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIKaW5kZXggOTA1NGIzMy4uOGQ2ZjJmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYgpAQCAtMzcsNiArMzcsNyBAQAogICAgICYgRmlybXdhcmUtYXRoOWstaHRjIFwKICAgICAmIEZpcm13YXJlLXBoYW5mdyBcCiAgICAgJiBGaXJtd2FyZS1xYXQgXAorICAgICYgRmlybXdhcmUtcWNvbSBcCiAgICAgJiBGaXJtd2FyZS1xbGExMjgwIFwKICAgICAmIEZpcm13YXJlLXFsYTJ4eHggXAogICAgICYgRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIFwKQEAgLTkwLDEyICs5MSwxMyBAQAogICAgIGZpbGU6Ly9MSUNFTkNFLk1hcnZlbGw7bWQ1PTlkZGVhMTczNGE0YmFmM2M3OGQ4NDUxNTFmNDJhMzdhIFwKICAgICBmaWxlOi8vTElDRU5DRS5tb3hhO21kNT0xMDg2NjE0NzY3ZDhjY2Y3NDRhOTIzMjg5ZDNkNDI2MSBcCiAgICAgZmlsZTovL0xJQ0VOQ0UubXlyaTEwZ2VfZmlybXdhcmU7bWQ1PTQyZTMyZmI4OWY2Yjk1OWNhMjIyZTI1YWM4ZGY4ZmVkIFwKLSAgICBmaWxlOi8vTElDRU5DRS5OZXRyb25vbWU7bWQ1PWNkMmEzZTZlZmZlM2NkZjQyNzMxNTc1YjhlOTQ3N2VkIFwKKyAgICBmaWxlOi8vTElDRU5DRS5OZXRyb25vbWU7bWQ1PTRhZGQwOGYyNTc3MDg2ZDQ0NDQ3OTk2NTAzY2RkZjVmIFwKICAgICBmaWxlOi8vTElDRU5DRS5udmlkaWE7bWQ1PTQ0MjhhOTIyZWQzYmEyY2VlYzk1ZjA3NmE0ODhjZTA3IFwKICAgICBmaWxlOi8vTElDRU5DRS5PTFBDO21kNT01YjkxN2Y5ZDhjMDYxOTkxYmU0ZjZmNWYxMDg3MTljZCBcCiAgICAgZmlsZTovL0xJQ0VOQ0Uub3Blbi1hdGg5ay1odGMtZmlybXdhcmU7bWQ1PTFiMzNjOWY0ZDE3YmM0ZDQ1N2JkYjIzNzI3MDQ2ODM3IFwKICAgICBmaWxlOi8vTElDRU5DRS5waGFuZnc7bWQ1PTk1NGRjZWMwZTA1MWY5NDA5ODEyYjU2MWVhNzQzYmZhIFwKICAgICBmaWxlOi8vTElDRU5DRS5xYXRfZmlybXdhcmU7bWQ1PTllN2Q4YmVhNzc2MTJkN2NjN2Q5ZTliNTRiNjIzMDYyIFwKKyAgICBmaWxlOi8vTElDRU5TRS5xY29tO21kNT0xNjRlMzM2MmE1MzhlYjExZDNhYzUxZThlMTM0Mjk0YiBcCiAgICAgZmlsZTovL0xJQ0VOQ0UucWxhMTI4MDttZDU9ZDY4OTU3MzJlNjIyZDk1MDYwOTA5MzIyM2EyYzRmNWQgXAogICAgIGZpbGU6Ly9MSUNFTkNFLnFsYTJ4eHg7bWQ1PTUwNTg1NWU5MjFiNzVmMWJlNGE0MzdhZDliNzlkZmYwIFwKICAgICBmaWxlOi8vTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXIzazttZDU9YjVmZTI0NGZiMmI1MzIzMTFkZTE0NzJhM2JjMDZkYTUgXApAQCAtMTE2LDcgKzExOCw3IEBACiAgICAgZmlsZTovL0xJQ0VOQ0UueGM0MDAwO21kNT0wZmY1MWQyZGM0OWZjZTA0ODE0YzkxNTUwODEwOTJmMCBcCiAgICAgZmlsZTovL0xJQ0VOQ0UueGM1MDAwO21kNT0xZTE3MGMxMzE3NTMyM2MzMmM3ZjRkMDk5OGQ1M2Y2NiBcCiAgICAgZmlsZTovL0xJQ0VOQ0UueGM1MDAwYzttZDU9MTJiMDJlZmEzMDQ5ZGI2NWQ1MjRhZWI0MThkZDg3Y2EgXAotICAgIGZpbGU6Ly9XSEVOQ0U7bWQ1PTAzOGVkYmM5ZTc0NDE3MWQ4YjYyMzVlMDIyNDAyOGJhIFwKKyAgICBmaWxlOi8vV0hFTkNFO21kNT02ZjQ2OTg2ZjRlOTEzZWYxNmI3NjVjMjMxOWNjNTE0MSBcCiAiCiAKICMgVGhlc2UgYXJlIG5vdCBjb21tb24gbGljZW5zZXMsIHNldCBOT19HRU5FUklDX0xJQ0VOU0UgZm9yIHRoZW0KQEAgLTE1Niw2ICsxNTgsNyBAQAogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0aDlrLWh0Y10gPSAiTElDRU5DRS5vcGVuLWF0aDlrLWh0Yy1maXJtd2FyZSIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1waGFuZnddID0gIkxJQ0VOQ0UucGhhbmZ3IgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFhdF0gPSAiTElDRU5DRS5xYXRfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWNvbV0gPSAiTElDRU5TRS5xY29tIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFsYTEyODBdID0gIkxJQ0VOQ0UucWxhMTI4MCIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xbGEyeHh4XSA9ICJMSUNFTkNFLnFsYTJ4eHgiCiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrXSA9ICJMSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrIgpAQCAtMTc4LDEzICsxODEsMTMgQEAKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBjXSA9ICJMSUNFTkNFLnhjNTAwMGMiCiBOT19HRU5FUklDX0xJQ0VOU0VbV0hFTkNFXSA9ICJXSEVOQ0UiCiAKLVNSQ1JFViA9ICJiZjA0MjkxMzA5ZDMxNjljMGFkM2I4ZGI1MjU2NDIzNWJiZDA4ZTMwIgorU1JDUkVWID0gIjhmYzJkNGU1NTY4NWJmNzNiNmY3NzUyMzgzZGE5MDY3NDA0YTc0YmIiCiBQRSA9ICIxIgogUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9maXJtd2FyZS9saW51eC1maXJtd2FyZS5naXQiCiAKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0yNDksMTQgKzI1MiwxOSBAQAogICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2MCBcCiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjY1IFwKICAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjVkICR7UE59LWl3bHdpZmktODAwMGMgJHtQTn0taXdsd2lmaS04MjY1IFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTkwMDAgXAogICAgICAgICAgICAgICR7UE59LWl3bHdpZmktbWlzYyBcCiAgICAgICAgICAgICAgJHtQTn0taWJ0LWxpY2Vuc2UgJHtQTn0taWJ0ICR7UE59LWlidC1taXNjIFwKICAgICAgICAgICAgICAke1BOfS1pYnQtMTEtNSAke1BOfS1pYnQtMTItMTYgJHtQTn0taWJ0LWh3LTM3LTcgJHtQTn0taWJ0LWh3LTM3LTggXAorICAgICAgICAgICAgICR7UE59LWlidC0xNyBcCiAgICAgICAgICAgICAgJHtQTn0taTkxNS1saWNlbnNlICR7UE59LWk5MTUgXAogICAgICAgICAgICAgICR7UE59LWFkc3Atc3N0LWxpY2Vuc2UgJHtQTn0tYWRzcC1zc3QgXAogICAgICAgICAgICAgICR7UE59LWJueDItbWlwcyBcCiAgICAgICAgICAgICAgJHtQTn0tbmV0cm9ub21lLWxpY2Vuc2UgJHtQTn0tbmV0cm9ub21lIFwKICAgICAgICAgICAgICAke1BOfS1xYXQgJHtQTn0tcWF0LWxpY2Vuc2UgXAorICAgICAgICAgICAgICR7UE59LXFjb20tbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS12ZW51cy0xLjggJHtQTn0tcWNvbS12ZW51cy00LjIgXAorICAgICAgICAgICAgICR7UE59LXFjb20tYWRyZW5vLWEzeHggJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCBcCiAgICAgICAgICAgICAgJHtQTn0td2hlbmNlLWxpY2Vuc2UgXAogICAgICAgICAgICAgICR7UE59LWxpY2Vuc2UgXAogICAgICAgICAgICAgICIKQEAgLTU5Niw2ICs2MDQsNyBAQAogTElDRU5TRV8ke1BOfS1pd2x3aWZpLTcyNjVkICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLTgwMDBjICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLTgyNjUgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTkwMDAgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLW1pc2MgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLWxpY2Vuc2UgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogCkBAIC02MjIsNiArNjMxLDcgQEAKIEZJTEVTXyR7UE59LWl3bHdpZmktNzI2NWQgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2NUQtKi51Y29kZSIKIEZJTEVTXyR7UE59LWl3bHdpZmktODAwMGMgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktODAwMEMtKi51Y29kZSIKIEZJTEVTXyR7UE59LWl3bHdpZmktODI2NSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS04MjY1LSoudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTkwMDAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktOTAwMC0qLnVjb2RlIgogRklMRVNfJHtQTn0taXdsd2lmaS1taXNjICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLSoudWNvZGUiCiAKIFJERVBFTkRTXyR7UE59LWl3bHdpZmktMTM1LTYgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKQEAgLTY0NSw2ICs2NTUsNyBAQAogUkRFUEVORFNfJHtQTn0taXdsd2lmaS03MjY1ZCAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taXdsd2lmaS04MDAwYyAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taXdsd2lmaS04MjY1ICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS05MDAwICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taXdsd2lmaS1taXNjICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgogCiAjIC1pd2x3aWZpLW1pc2MgaXMgYSAiY2F0Y2ggYWxsIiBwYWNrYWdlIHRoYXQgaW5jbHVkZXMgYWxsIHRoZSBpd2x3aWZpCkBAIC02NzAsNiArNjgxLDcgQEAKIExJQ0VOU0VfJHtQTn0taWJ0LWh3LTM3LTggPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pYnQtMTEtNSAgICA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCiBMSUNFTlNFXyR7UE59LWlidC0xMi0xNiAgID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taWJ0LTE3ID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKIExJQ0VOU0VfJHtQTn0taWJ0LW1pc2MgICAgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgogCiBGSUxFU18ke1BOfS1pYnQtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuaWJ0X2Zpcm13YXJlIgpAQCAtNjc3LDEyICs2ODksMTQgQEAKIEZJTEVTXyR7UE59LWlidC1ody0zNy04ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LWh3LTM3LjgqLmJzZXEiCiBGSUxFU18ke1BOfS1pYnQtMTEtNSAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMS01LnNmaSAvbGliL2Zpcm13YXJlL2ludGVsL2lidC0xMS01LmRkYyIKIEZJTEVTXyR7UE59LWlidC0xMi0xNiAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTEyLTE2LnNmaSAvbGliL2Zpcm13YXJlL2ludGVsL2lidC0xMi0xNi5kZGMiCitGSUxFU18ke1BOfS1pYnQtMTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5zZmkgL2xpYi9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5kZGMiCiBGSUxFU18ke1BOfS1pYnQtbWlzYyAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2lidC0qIgogCiBSREVQRU5EU18ke1BOfS1pYnQtaHctMzctNyA9ICIke1BOfS1pYnQtbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWlidC1ody0zNy44ID0gIiR7UE59LWlidC1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taWJ0LTExLTUgICAgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCiBSREVQRU5EU18ke1BOfS1pYnQtMTItMTYgICA9ICIke1BOfS1pYnQtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWlidC0xNyA9ICIke1BOfS1pYnQtbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWlidC1taXNjICAgID0gIiR7UE59LWlidC1saWNlbnNlIgogCiBBTExPV19FTVBUWV8ke1BOfS1pYnQ9ICIxIgpAQCAtNzA3LDYgKzcyMSwxOCBAQAogRklMRVNfJHtQTn0tcWF0ICAgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3FhdCouYmluIgogUkRFUEVORFNfJHtQTn0tcWF0ICAgICAgICA9ICIke1BOfS1xYXQtbGljZW5zZSIKIAorIyBGb3IgUUNPTSBWUFUvR1BVCitMSUNFTlNFXyR7UE59LXFjb20tbGljZW5zZSA9ICJGaXJtd2FyZS1xY29tIgorRklMRVNfJHtQTn0tcWNvbS1saWNlbnNlICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLnFjb20gJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL05PVElDRS50eHQiCitGSUxFU18ke1BOfS1xY29tLXZlbnVzLTEuOCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vdmVudXMtMS44LyoiCitGSUxFU18ke1BOfS1xY29tLXZlbnVzLTQuMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vdmVudXMtNC4yLyoiCitGSUxFU18ke1BOfS1xY29tLWFkcmVuby1hM3h4ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9hMzAwXyouZncgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hMzAwXyouZnciCitGSUxFU18ke1BOfS1xY29tLWFkcmVuby1hNTMwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9hNTMwKi4qIgorUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy0xLjggPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy00LjIgPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLWFkcmVuby1hNTMwID0gIiR7UE59LXFjb20tbGljZW5zZSIKKwogIyBGb3Igb3RoZXIgZmlybXdhcmVzCiAjIE1heWJlIHNwbGl0IG91dCB0byBzZXBhcmF0ZSBwYWNrYWdlcyB3aGVuIG5lZWRlZC4KIExJQ0VOU0VfJHtQTn0gPSAiXApAQCAtNzM3LDYgKzc2Myw3IEBACiAgICAgJiBGaXJtd2FyZS1hdGg5ay1odGMgXAogICAgICYgRmlybXdhcmUtcGhhbmZ3IFwKICAgICAmIEZpcm13YXJlLXFhdCBcCisgICAgJiBGaXJtd2FyZS1xY29tIFwKICAgICAmIEZpcm13YXJlLXFsYTEyODAgXAogICAgICYgRmlybXdhcmUtcWxhMnh4eCBcCiAgICAgJiBGaXJtd2FyZS1yOGE3Nzl4X3VzYjMgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYwppbmRleCAxNjU3ZGY2Li45OTAzYzA2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYwpAQCAtNzgsNyArNzgsNyBAQAogfQogCiBkb19pbnN0YWxsX2FybW11bHRpbGliICgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYXNtL2F1eHZlYy5oIGFzbS9iaXRzcGVybG9uZy5oIGFzbS9ieXRlb3JkZXIuaCBhc20vZmNudGwuaCBhc20vaHdjYXAuaCBhc20vaW9jdGxzLmggYXNtL2t2bS5oIGFzbS9tbWFuLmggYXNtL3BhcmFtLmggYXNtL3BlcmZfcmVncy5oCisJb2VfbXVsdGlsaWJfaGVhZGVyIGFzbS9hdXh2ZWMuaCBhc20vYml0c3BlcmxvbmcuaCBhc20vYnl0ZW9yZGVyLmggYXNtL2ZjbnRsLmggYXNtL2h3Y2FwLmggYXNtL2lvY3Rscy5oIGFzbS9rdm0uaCBhc20va3ZtX3BhcmEuaCBhc20vbW1hbi5oIGFzbS9wYXJhbS5oIGFzbS9wZXJmX3JlZ3MuaCBhc20vYnBmX3BlcmZfZXZlbnQuaAogCW9lX211bHRpbGliX2hlYWRlciBhc20vcG9zaXhfdHlwZXMuaCBhc20vcHRyYWNlLmggIGFzbS9zZXR1cC5oICBhc20vc2lnY29udGV4dC5oIGFzbS9zaWdpbmZvLmggYXNtL3NpZ25hbC5oIGFzbS9zdGF0LmggIGFzbS9zdGF0ZnMuaCBhc20vc3dhYi5oICBhc20vdHlwZXMuaCBhc20vdW5pc3RkLmgKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YjI0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA4OTc3MzYxNjZmZDcwOTkwNmE1ZmRmMTZlYjIzZjhmZGRmZjc3MGI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDEgTWFyIDIwMTggMTg6MzE6MDEgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gaWZfZXRoZXI6IG1vdmUgbXVzbGMgZXRoaGRyIHByb3RlY3Rpb24gdG8gdWFwaSBmaWxlCisKK1NpZ25lZC1vZmYtYnk6IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBpbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaCB8IDYgKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAoraW5kZXggMTUzYzljMi4uN2I2OWI3MyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCisrKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAorQEAgLTE0OSw2ICsxNDksMTIgQEAKKyAgKglUaGlzIGlzIGFuIEV0aGVybmV0IGZyYW1lIGhlYWRlci4KKyAgKi8KKyAKKysjaWZkZWYgX05FVElORVRfSUZfRVRIRVJfSCAvKiBtdXNsICovCisrI2RlZmluZSBfX1VBUElfREVGX0VUSEhEUiAwCisrI2Vsc2UgLyogZ2xpYmMgdXNlcyBfX05FVElORVRfSUZfRVRIRVJfSCwgYW5kIGluY2x1ZGVzIHRoZSBrZXJuZWwgaGVhZGVyLiAqLworKyNkZWZpbmUgX19VQVBJX0RFRl9FVEhIRFIgMQorKyNlbmRpZgorKworIC8qIGFsbG93IGxpYmNzIGxpa2UgbXVzbCB0byBkZWFjdGl2YXRlIHRoaXMsIGdsaWJjIGRvZXMgbm90IGltcGxlbWVudCB0aGlzLiAqLworICNpZm5kZWYgX19VQVBJX0RFRl9FVEhIRFIKKyAjZGVmaW5lIF9fVUFQSV9ERUZfRVRISERSCQkxCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoCmluZGV4IDhiYjc3NWMuLjA2NGEzOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAgaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmggfCAyNSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCitJbmRleDogbGludXgtNC4xNS9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpbnV4LTQuOC1yYzQub3JpZy9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAotKysrIGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLUBAIC00OCwxMyArNDgsMTIgQEAKKy0tLSBsaW51eC00LjE1Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgJMjAxOC0wMi0wNSAxNzozNzo0NC43MjQzMTQzNzkgLTA1MDAKKysrKyBsaW51eC00LjE1L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCTIwMTgtMDItMDUgMTc6Mzg6MDIuMTQ4OTEzODIwIC0wNTAwCitAQCAtNDksMTMgKzQ5LDEyIEBACiAgI2lmbmRlZiBfVUFQSV9MSUJDX0NPTVBBVF9ICiAgI2RlZmluZSBfVUFQSV9MSUJDX0NPTVBBVF9ICiAgCkBAIC0zMyw3ICszMyw3IEBACiAgICogdGhhdCB3b3VsZCBhbHJlYWR5IGJlIGRlZmluZWQuICovCiAgCiAgI2RlZmluZSBfX1VBUElfREVGX0lGX0lGQ09ORiAwCi1AQCAtOTgsMTUgKzk3LDcgQEAKK0BAIC05OSwxNSArOTgsNyBAQAogICNkZWZpbmUgX19VQVBJX0RFRl9JTl9DTEFTUwkJMAogIAogICNkZWZpbmUgX19VQVBJX0RFRl9JTjZfQUREUgkJMApAQCAtNDksNyArNDksNyBAQAogICNkZWZpbmUgX19VQVBJX0RFRl9TT0NLQUREUl9JTjYJCTAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSVBWNl9NUkVRCQkwCiAgI2RlZmluZSBfX1VBUElfREVGX0lQUFJPVE9fVjYJCTAKLUBAIC0xMTQsMTAgKzEwNSwxMCBAQAorQEAgLTExNSwxMCArMTA2LDEwIEBACiAgI2RlZmluZSBfX1VBUElfREVGX0lONl9QS1RJTkZPCQkwCiAgI2RlZmluZSBfX1VBUElfREVGX0lQNl9NVFVJTkZPCQkwCiAgCkBAIC02Miw3ICs2Miw3IEBACiAgICogX19VQVBJX0RFRl8qIGRlZmluZXMgYW5kIGFkanVzdCBhcHByb3ByaWF0ZWx5LiAqLwogICNkZWZpbmUgX19VQVBJX0RFRl9JTl9BRERSCQkxCiAgI2RlZmluZSBfX1VBUElfREVGX0lOX0lQUFJPVE8JCTEKLUBAIC0xMjcsNyArMTE4LDcgQEAKK0BAIC0xMjgsNyArMTE5LDcgQEAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSU5fQ0xBU1MJCTEKICAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSU42X0FERFIJCTEKQEAgLTcxLDE4ICs3MSwxOCBAQAogICAqIGNvb3JkaW5hdGUuICovCiAgI2RlZmluZSBfX1VBUElfREVGX0lONl9BRERSX0FMVAkJMQogICNkZWZpbmUgX19VQVBJX0RFRl9TT0NLQUREUl9JTjYJCTEKLUBAIC0xNDksNyArMTQwLDcgQEAKLSAvKiBJZiB3ZSBkaWQgbm90IHNlZSBhbnkgaGVhZGVycyBmcm9tIGFueSBzdXBwb3J0ZWQgQyBsaWJyYXJpZXMsCitAQCAtMTcwLDcgKzE2MSw3IEBACiAgICogb3Igd2UgYXJlIGJlaW5nIGluY2x1ZGVkIGluIHRoZSBrZXJuZWwsIHRoZW4gZGVmaW5lIGV2ZXJ5dGhpbmcKLSAgKiB0aGF0IHdlIG5lZWQuICovCisgICogdGhhdCB3ZSBuZWVkLiBDaGVjayBmb3IgcHJldmlvdXMgX19VQVBJXyogZGVmaW5pdGlvbnMgdG8gZ2l2ZQorICAqIHVuc3VwcG9ydGVkIEMgbGlicmFyaWVzIGEgd2F5IHRvIG9wdCBvdXQgb2YgYW55IGtlcm5lbCBkZWZpbml0aW9uLiAqLwogLSNlbHNlIC8qICFkZWZpbmVkKF9fR0xJQkNfXykgKi8KICsjZWxzZSAvKiBfX0tFUk5FTF9fICovCiAgCiAgLyogRGVmaW5pdGlvbnMgZm9yIGlmLmggKi8KLSAjZGVmaW5lIF9fVUFQSV9ERUZfSUZfSUZDT05GIDEKLUBAIC0xODIsNiArMTczLDYgQEAKLSAvKiBEZWZpbml0aW9ucyBmb3IgeGF0dHIuaCAqLworICNpZm5kZWYgX19VQVBJX0RFRl9JRl9JRkNPTkYKK0BAIC0yNjIsNiArMjUzLDYgQEAKICAjZGVmaW5lIF9fVUFQSV9ERUZfWEFUVFIJCTEKKyAjZW5kaWYKICAKIC0jZW5kaWYgLyogX19HTElCQ19fICovCiArI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDItbGliYy1jb21wYXQuaC1wcmV2ZW50LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtZXRoaGRyLnBhdGNoCmluZGV4IDhkYzFlZGMuLmZiN2UxZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaApAQCAtMTEsMzcgKzExLDExIEBACiAgaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmggfCA2ICsrKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCitJbmRleDogbGludXgtNC4xNS9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpbnV4LTQuOC1yYzQub3JpZy9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAotKysrIGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKLUBAIC0yMiw2ICsyMiw3IEBACi0gI2RlZmluZSBfVUFQSV9MSU5VWF9JRl9FVEhFUl9ICi0gCi0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0rI2luY2x1ZGUgPGxpbnV4L2xpYmMtY29tcGF0Lmg+Ci0gCi0gLyoKLSAgKglJRUVFIDgwMi4zIEV0aGVybmV0IG1hZ2ljIGNvbnN0YW50cy4gIFRoZSBmcmFtZSBzaXplcyBvbWl0IHRoZSBwcmVhbWJsZQotQEAgLTEzOCwxMSArMTM5LDEyIEBACi0gICoJVGhpcyBpcyBhbiBFdGhlcm5ldCBmcmFtZSBoZWFkZXIuCi0gICovCi0gCi0rI2lmIF9fVUFQSV9ERUZfRVRISERSCi0gc3RydWN0IGV0aGhkciB7Ci0gCXVuc2lnbmVkIGNoYXIJaF9kZXN0W0VUSF9BTEVOXTsJLyogZGVzdGluYXRpb24gZXRoIGFkZHIJKi8KLSAJdW5zaWduZWQgY2hhcgloX3NvdXJjZVtFVEhfQUxFTl07CS8qIHNvdXJjZSBldGhlciBhZGRyCSovCi0gCV9fYmUxNgkJaF9wcm90bzsJCS8qIHBhY2tldCB0eXBlIElEIGZpZWxkCSovCi0gfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKLS0KLSsjZW5kaWYKLSAKLSAjZW5kaWYgLyogX1VBUElfTElOVVhfSUZfRVRIRVJfSCAqLwotSW5kZXg6IGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaW51eC00LjgtcmM0Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLSsrKyBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCi1AQCAtNTAsNiArNTAsMTIgQEAKKy0tLSBsaW51eC00LjE1Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgJMjAxOC0wMi0wNSAxNzo0MDo0Mi4zMzgzNzA3MzEgLTA1MDAKKysrKyBsaW51eC00LjE1L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCTIwMTgtMDItMDUgMTc6NDA6NDIuMzM0MzcwNjAzIC0wNTAwCitAQCAtNTEsNiArNTEsMTIgQEAKICAKICAjaWZuZGVmIF9fS0VSTkVMX18gLyogd2UncmUgdXNlZCBmcm9tIHVzZXJzcGFjZSAqLwogIApAQCAtNTIsNSArMjYsNSBAQAogKyNlbmRpZgogKwogIC8qIENvb3JkaW5hdGUgd2l0aCBsaWJjIG5ldC9pZi5oIGhlYWRlci4gKi8KLSAjaWYgZGVmaW5lZChfTkVUX0lGX0gpICYmIGRlZmluZWQoX19VU0VfTUlTQykKKyAjaWYgZGVmaW5lZChfTkVUX0lGX0gpCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZDBhYmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc180LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBsaW51eC1saWJjLWhlYWRlcnMuaW5jCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLXJlbW92ZS1pbmNsdXNpb24tb2Ytc3lzaW5mby5oLWluLWtlcm5lbC5oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLW11c2wtX2RvZXNfLWRlZmluZS1JRkZfTE9XRVJfVVAtRE9STUFOLnBhdGNoIFwKLSAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImZjNDU0MTU3ZTJkMDI0ZDQwMWE2MDkwNWQ2NDgxYzZiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE0NWMzYmVjZDRkMDhjZTQxMWMxNDYyOGE5NDlkMDhlMjQzM2Q4Y2RlY2E5MjAzNmM3MDEzOTgwZTkzODU4YWIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTUuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xNS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZGI0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTUuNy5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGxpbnV4LWxpYmMtaGVhZGVycy5pbmMKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtbXVzbC1fZG9lc18tZGVmaW5lLUlGRl9MT1dFUl9VUC1ET1JNQU4ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoIFwKKyAgICIKKworCitTUkNfVVJJW21kNXN1bV0gPSAiODE4NmNlNjNjNDg5MTk5YjU4YjZhNThhZDJhMjRhOTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2Q0NGRmNGIyM2EzZTBlZGMxNGJlNjNkZjk1ZDc2OGI5NjAwYjMxYzM1YmUwNWZiODlmOTMyMjY5MDdmYzhjNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCmluZGV4IGMxYjViNzcuLjhiYmZhMjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgpAQCAtNjksNiArNjksMTMgQEAKICAgICAgICAgICAgICAgICBjcCAke0J9L2FyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8gJGtlcm5lbGRpci9hcmNoL3Bvd2VycGMvbGliL2NydHNhdnJlcy5vCiAgICAgICAgIGZpCiAKKyAgICAgICAgIyBSZW1vdmUgZml4ZGVwL29ianRvb2wgYXMgdGhleSB3b24ndCBiZSB0YXJnZXQgYmluYXJpZXMKKyAgICAgICAgZm9yIGkgaW4gZml4ZGVwIG9ianRvb2w7IGRvCisgICAgICAgICAgICAgICAgaWYgWyAtZSAka2VybmVsZGlyL3Rvb2xzL29ianRvb2wvJGkgXTsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgcm0gLXJmICRrZXJuZWxkaXIvdG9vbHMvb2JqdG9vbC8kaQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKwogICAgICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQogfQogIyBFbnN1cmUgd2UgZG9uJ3QgcmFjZSBhZ2FpbnN0ICJtYWtlIHNjcmlwdHMiIGR1cmluZyBjcGlvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKaW5kZXggNTg1MmI0Mi4uNDIwMWZhZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgpAQCAtMjgsMTAgKzI4LDEzIEBACiBTUkNSRVZfbWFjaGluZSA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIsICJsaW51eC15b2N0by1kZXYiLCAiJHtBVVRPUkVWfSIsICIyOTU5NDQwNGQ3ZmU3M2NkODBlYWE0ZWU4YzQzZGNjNTM5NzBjNjBlIiwgZCl9JwogU1JDUkVWX21ldGEgPz0gJyR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiLCAibGludXgteW9jdG8tZGV2IiwgIiR7QVVUT1JFVn0iLCAiMjk1OTQ0MDRkN2ZlNzNjZDgwZWFhNGVlOGM0M2RjYzUzOTcwYzYwZSIsIGQpfScKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xMi1yYysiCitMSU5VWF9WRVJTSU9OID89ICI0LjE2LXJjKyIKIExJTlVYX1ZFUlNJT05fRVhURU5TSU9OID89ICIteW9jdG9kZXYtJHtMSU5VWF9LRVJORUxfVFlQRX0iCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCiBDT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXVhcm18cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCkiCiAKIEtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDMxYmY5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKLX0KLQotU1JDUkVWX21hY2hpbmUgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWV0YSA/PSAiMWQ5YTgyMDAxODRhZjIyZjg5ODFmYTI0YjBlODJhZjQ5Yzc5ODhkZCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEwLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTA7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xMC4xNyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTIuYmIKaW5kZXggNjRiMWRhMS4uNWVkYzBmYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEyLmJiCkBAIC03LDE3ICs3LDE3IEBACiAjIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCiAjIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgogcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKKyAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQogfQogCi1TUkNSRVZfbWFjaGluZSA/PSAiZGE3NzVhYTlhYWI0MWU4YTJiNGU5YjQ0ZmZlMjY4NDQ2YzUxNzU5ZiIKLVNSQ1JFVl9tZXRhID89ICI0ZjgyNWVlYjc4M2EyNzkyMTZlZTQ1ZWQzYjlhNjNkZDY4MzdmN2Q3IgorU1JDUkVWX21hY2hpbmUgPz0gIjcwNWQwMzUwN2EwYzEwZGNiZjljYWQzZmY3MGY1ZDYwYjcwZjJkOTkiCitTUkNSRVZfbWV0YSA/PSAiNDYxNzFkZTE5MjIwYzQ5ZDY3MDU0NDAxN2NmYmVmZmMxZWM3MGU4MCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yMCIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjQiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMzA2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE0LmJiCkBAIC0wLDAgKzEsNDEgQEAKK0tCUkFOQ0ggPz0gInY0LjE0L3N0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQorIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKKyMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKKyMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCitweXRob24gKCkgeworICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIgYW5kIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCit9CisKK1NSQ1JFVl9tYWNoaW5lID89ICI3MjcyZTkxMzJmZGFhZjBkZDc4YmM5NGU5ZjI5N2FhZjczNDUyOTgyIgorU1JDUkVWX21ldGEgPz0gImVhOTMzMDg5NGVlYTcyN2JkMTY1NTU2OWIxNmYzMzg5NzZiNzI1NjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNDtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSU5VWF9WRVJTSU9OID89ICI0LjE0LjMwIgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitMSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVwcGN8cWVtdW1pcHMpIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWQzZWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xNS5iYgpAQCAtMCwwICsxLDQxIEBACitLQlJBTkNIID89ICJ2NC4xNS9zdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKKyMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCisjIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCisjIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgorcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorfQorCitTUkNSRVZfbWFjaGluZSA/PSAiOTEwODRkMDMwYmM4NDFjNDgzYzMxZTg2NjQyODljNzk0MGFhNTUwNiIKK1NSQ1JFVl9tZXRhID89ICI5MzlkOTM1YjBjOTkyYzZmMWU1MWE3YTFjOWU0ZmJlNmVmM2MzMTc0IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTU7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xNS4xMyIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzUzOGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQotIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKLSMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKLSMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCi1weXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQotfQotCi1TUkNSRVZfbWFjaGluZSA/PSAiZDVlZmVlZWI5MjhhMDExMWZjMTg3ZmQxZThkMDNkMmU0ZTM1ZDRhMCIKLVNSQ1JFVl9tZXRhID89ICJiMTQ5ZDE0Y2NhZTgzNDlhYjMzZTEwMWY2YWYyMzNhMTJmNGIxN2JhIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuNC5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC40LjExMyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMwMTZlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKLX0KLQotU1JDUkVWX21hY2hpbmUgPz0gIjkwZDFmZmEzNmNiZDM2NzIyNjM4Yzk3YzFiYjQ2YTU4NzRkYmUyOGUiCi1TUkNSRVZfbWV0YSA/PSAiMDc3NGVhY2VhMmE3ZDNhMTUwNTk0NTMzYjhjODBkMGMwYmZkZmRlZCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjkuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC45O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuOS44MiIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjIzNDk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL3RpbnkvY29tbW9uLXBjIgotTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKLUtDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi1MSU5VWF9WRVJTSU9OID89ICI0LjEwLjE3IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1TUkNSRVZfbWFjaGluZSA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tZXRhID89ICIxZDlhODIwMDE4NGFmMjJmODk4MWZhMjRiMGU4MmFmNDljNzk4OGRkIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTAuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9GRUFUVVJFUyA9ICIiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYgppbmRleCAwYmJkOGUyLi4zMTMwN2E2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiCkBAIC00LDEzICs0LDEzIEBACiAKIHJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjAiCitMSU5VWF9WRVJTSU9OID89ICI0LjEyLjI0IgogCiBLTUVUQSA9ICJrZXJuZWwtbWV0YSIKIEtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgogCi1TUkNSRVZfbWFjaGluZSA/PSAiNjBiNjQ5OTcxOTQwNzM3ZGM3ZTNhN2YyNDdjNjJmZmJkN2M4MmU0YyIKLVNSQ1JFVl9tZXRhID89ICI0ZjgyNWVlYjc4M2EyNzkyMTZlZTQ1ZWQzYjlhNjNkZDY4MzdmN2Q3IgorU1JDUkVWX21hY2hpbmUgPz0gImY5ZDY3Nzc3YjA3YWM5Nzk2NjE4NmMxYjU2ZGI3OGFmZTJhMTZmOTIiCitTUkNSRVZfbWV0YSA/PSAiNDYxNzFkZTE5MjIwYzQ5ZDY3MDU0NDAxN2NmYmVmZmMxZWM3MGU4MCIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YmVlMDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTQuYmIKQEAgLTAsMCArMSwyOCBAQAorS0JSQU5DSCA/PSAidjQuMTQvc3RhbmRhcmQvdGlueS9jb21tb24tcGMiCitMSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgorS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTQuMzAiCisKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgorREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK1NSQ1JFVl9tYWNoaW5lID89ICJhZDMxODk2NjMwZjhiZjZhNDU5MTY0MjYzYWRjMGE4ZmFmOTg0ZDllIgorU1JDUkVWX21ldGEgPz0gImVhOTMzMDg5NGVlYTcyN2JkMTY1NTU2OWIxNmYzMzg5NzZiNzI1NjMiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNDtkZXN0c3VmZml4PSR7S01FVEF9IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9GRUFUVVJFUyA9ICIiCisKK0tFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWI5Y2EzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE1LmJiCkBAIC0wLDAgKzEsMjUgQEAKK0tCUkFOQ0ggPz0gInY0LjE1L3N0YW5kYXJkL3RpbnkvY29tbW9uLXBjIgorTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKK0tDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCitMSU5VWF9WRVJTSU9OID89ICI0LjE1LjEzIgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitTUkNSRVZfbWFjaGluZSA/PSAiOTEwODRkMDMwYmM4NDFjNDgzYzMxZTg2NjQyODljNzk0MGFhNTUwNiIKK1NSQ1JFVl9tZXRhID89ICI5MzlkOTM1YjBjOTkyYzZmMWU1MWE3YTFjOWU0ZmJlNmVmM2MzMTc0IgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTU7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRkVBVFVSRVMgPSAiIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTk4MTg5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvdGlueS9jb21tb24tcGMiCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgotS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuNC4xMTMiCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLVNSQ1JFVl9tYWNoaW5lID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgotU1JDUkVWX21ldGEgPz0gImIxNDlkMTRjY2FlODM0OWFiMzNlMTAxZjZhZjIzM2ExMmY0YjE3YmEiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC40LmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuNDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDQ2ODAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvdGlueS9jb21tb24tcGMiCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgotS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuOS44MiIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotU1JDUkVWX21hY2hpbmUgPz0gImViM2IyMDc5ZWE0M2I0NTFlMDZiZTQ0M2Y4YmMxNDY3MzZmOWM0YmMiCi1TUkNSRVZfbWV0YSA/PSAiMDc3NGVhY2VhMmE3ZDNhMTUwNTk0NTMzYjhjODBkMGMwYmZkZmRlZCIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjkuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC45O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCmluZGV4IDljMWY2MWIuLjNiYjg3MmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKQEAgLTEyLDkgKzEyLDkgQEAKICMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgbmV0d29yayBhY2Nlc3MgcmVxdWlyZWQKICMgYnkgdGhlIHVzZSBvZiBBVVRPUkVWIFNSQ1JFVnMsIHdoaWNoIGFyZSB0aGUgZGVmYXVsdCBmb3IgdGhpcyByZWNpcGUuCiBweXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSBkLmdldFZhcigiUE4iKToKKyAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gZC5nZXRWYXIoIlBOIik6CiAgICAgICAgIGQuZGVsVmFyKCJCQl9ET05UX0NBQ0hFIikKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gJXMgdG8gZW5hYmxlIGl0IiAlIChkLmdldFZhcigiUE4iKSkpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gJXMgdG8gZW5hYmxlIGl0IiAlIChkLmdldFZhcigiUE4iKSkpCiB9CiAKIERFUEVORFMgKz0gInh6LW5hdGl2ZSBiYy1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZlM2NjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcwotS0JSQU5DSF9xZW11YXJtICA/PSAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAic3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAic3RhbmRhcmQvbXRpLW1hbHRhMzIiCi1LQlJBTkNIX3FlbXVwcGMgID89ICJzdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11eDg2ICA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gImFlMTJlMTljZWNjMTlhZjY2ZjY0YTUwNTM4OTA5Y2IxY2FkMTg1ZjkiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiYjcxYjgwZmQ2NzlhMTdkZmI0ZjczYjM1MjI2M2M0OTI3M2Y3MjFkNCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJjMWQ4YzQ0MDhiOGFlZGQ4OGVlYjZjY2M4OWNlODM0ZGQ0MWIzZjA5IgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjhiYjEzNWU3MTAzN2M0NjE3NWJiY2M3YWNmMzg3MzA5YjJlMTcxMzMiCi1TUkNSRVZfbWFjaGluZSA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tZXRhID89ICIxZDlhODIwMDE4NGFmMjJmODk4MWZhMjRiMGU4MmFmNDljNzk4OGRkIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTAuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTA7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xMC4xNyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiCmluZGV4IGZhYmYwZjUuLjhkNTYwMTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYgpAQCAtMTEsMjAgKzExLDIyIEBACiBLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCiBLQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgogCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI0MmNmNGQ2YTFiYzg0YjkwNjgxY2I4MmFkOTVjMTI5Mzg3ZDc2YjRiIgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI2MGI2NDk5NzE5NDA3MzdkYzdlM2E3ZjI0N2M2MmZmYmQ3YzgyZTRjIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjU3MTMxNWE1NTI2YjllMjIyNjJjZjk5YmFlN2MwZGQ2ZTViZDIwNGMiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI2MGI2NDk5NzE5NDA3MzdkYzdlM2E3ZjI0N2M2MmZmYmQ3YzgyZTRjIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiNjBiNjQ5OTcxOTQwNzM3ZGM3ZTNhN2YyNDdjNjJmZmJkN2M4MmU0YyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjYwYjY0OTk3MTk0MDczN2RjN2UzYTdmMjQ3YzYyZmZiZDdjODJlNGMiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICJlNzg4OWJhMThmMDYwMzY4ZDRhYjM1ZTcwYjA3NjcyOGQ3M2JhNjIyIgotU1JDUkVWX21hY2hpbmUgPz0gIjYwYjY0OTk3MTk0MDczN2RjN2UzYTdmMjQ3YzYyZmZiZDdjODJlNGMiCi1TUkNSRVZfbWV0YSA/PSAiNGY4MjVlZWI3ODNhMjc5MjE2ZWU0NWVkM2I5YTYzZGQ2ODM3ZjdkNyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjQ1ODI0YzYwY2EzN2Y0MTRhNWFjNTc4M2U5NzAzMzhkYjlhNWEyYWYiCitTUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gImY5ZDY3Nzc3YjA3YWM5Nzk2NjE4NmMxYjU2ZGI3OGFmZTJhMTZmOTIiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiNjZmNzQxYjBiM2QwOTNlNmI2ZGYwZjQ0MTIwOTEzZWYzYTI1OWUyMyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gImY5ZDY3Nzc3YjA3YWM5Nzk2NjE4NmMxYjU2ZGI3OGFmZTJhMTZmOTIiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJmOWQ2Nzc3N2IwN2FjOTc5NjYxODZjMWI1NmRiNzhhZmUyYTE2ZjkyIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiZjlkNjc3NzdiMDdhYzk3OTY2MTg2YzFiNTZkYjc4YWZlMmExNmY5MiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImM1ZDgzOGM5ZTI2YmQ2NTdiNDlkZmUyOGIxMTVlNWJjNGI1ODA4NTAiCitTUkNSRVZfbWFjaGluZSA/PSAiZjlkNjc3NzdiMDdhYzk3OTY2MTg2YzFiNTZkYjc4YWZlMmExNmY5MiIKK1NSQ1JFVl9tZXRhID89ICI0NjE3MWRlMTkyMjBjNDlkNjcwNTQ0MDE3Y2ZiZWZmYzFlYzcwZTgwIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTIuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yMCIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitMSU5VWF9WRVJTSU9OID89ICI0LjEyLjI0IgogCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjE0MmY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNC5iYgpAQCAtMCwwICsxLDQ3IEBACitLQlJBTkNIID89ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCisjIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCitLQlJBTkNIX3FlbXVhcm0gID89ICJ2NC4xNC9zdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKK0tCUkFOQ0hfcWVtdWFybTY0ID89ICJ2NC4xNC9zdGFuZGFyZC9xZW11YXJtNjQiCitLQlJBTkNIX3FlbXVtaXBzID89ICJ2NC4xNC9zdGFuZGFyZC9tdGktbWFsdGEzMiIKK0tCUkFOQ0hfcWVtdXBwYyAgPz0gInY0LjE0L3N0YW5kYXJkL3FlbXVwcGMiCitLQlJBTkNIX3FlbXV4ODYgID89ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9xZW11eDg2LTY0ID89ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NC4xNC9zdGFuZGFyZC9tdGktbWFsdGE2NCIKKworU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiZDYyNjhmYzM0NjBkMzkwNGZkNDkwODdmN2E4MjJlZmJhYWI5YmZlOCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiYzk0MTg5ODQzYjhhZDYyY2FmZTlhMzA3ZTdmN2Q2MDc0MTY5MDUwNSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI0YWZkOTIzNDdiMmIzNWRjOGUwMDA2NzEyZjhmYTAwYWM1N2YyYTM2IgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiZThhZjVjOWI2NWM1MTg3ZDE0OGVjZDExYmQ3OTc5NDg5NDYwY2E2NCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gIjc0ZjZjZDJiNjk3NmUzNzQ5MTc3OWZjYjFiYzQ5NjZkM2E2MTQ5MmMiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICI3NGY2Y2QyYjY5NzZlMzc0OTE3NzlmY2IxYmM0OTY2ZDNhNjE0OTJjIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiOTg2M2IzMjdlNzcwYjQyYjhjMThkYTNlMGNmYWYwNmU4Zjk5YWU5NyIKK1NSQ1JFVl9tYWNoaW5lID89ICI3NGY2Y2QyYjY5NzZlMzc0OTE3NzlmY2IxYmM0OTY2ZDNhNjE0OTJjIgorU1JDUkVWX21ldGEgPz0gImVhOTMzMDg5NGVlYTcyN2JkMTY1NTU2OWIxNmYzMzg5NzZiNzI1NjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xNC4zMCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYmQ3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE1LmJiCkBAIC0wLDAgKzEsNDcgQEAKK0tCUkFOQ0ggPz0gInY0LjE1L3N0YW5kYXJkL2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInY0LjE1L3N0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorS0JSQU5DSF9xZW11YXJtNjQgPz0gInY0LjE1L3N0YW5kYXJkL3FlbXVhcm02NCIKK0tCUkFOQ0hfcWVtdW1pcHMgPz0gInY0LjE1L3N0YW5kYXJkL210aS1tYWx0YTMyIgorS0JSQU5DSF9xZW11cHBjICA/PSAidjQuMTUvc3RhbmRhcmQvcWVtdXBwYyIKK0tCUkFOQ0hfcWVtdXg4NiAgPz0gInY0LjE1L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInY0LjE1L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXVtaXBzNjQgPz0gInY0LjE1L3N0YW5kYXJkL210aS1tYWx0YTY0IgorCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI0YjY5MDJiNDJmNDc1OTM5MjgxMTdiMmZmMDkwMGNkOTY1Y2Y2NDQzIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI5MTA4NGQwMzBiYzg0MWM0ODNjMzFlODY2NDI4OWM3OTQwYWE1NTA2IgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjE5YmEyZDg0Mzc1MGZmNjVkOGZlNTkwYWNkZmM5OWFlYTYxNTM5NDUiCitTUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI5MTA4NGQwMzBiYzg0MWM0ODNjMzFlODY2NDI4OWM3OTQwYWE1NTA2IgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiOTEwODRkMDMwYmM4NDFjNDgzYzMxZTg2NjQyODljNzk0MGFhNTUwNiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjkxMDg0ZDAzMGJjODQxYzQ4M2MzMWU4NjY0Mjg5Yzc5NDBhYTU1MDYiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI5NzAwMGMzZjQ2NjQ2NDNiYWM3ODI4YmJkYzA0OGY3ZWMyMTZjYzMxIgorU1JDUkVWX21hY2hpbmUgPz0gIjkxMDg0ZDAzMGJjODQxYzQ4M2MzMWU4NjY0Mjg5Yzc5NDBhYTU1MDYiCitTUkNSRVZfbWV0YSA/PSAiOTM5ZDkzNWIwYzk5MmM2ZjFlNTFhN2ExYzllNGZiZTZlZjNjMzE3NCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNTtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSU5VWF9WRVJTSU9OID89ICI0LjE1LjEzIgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2MxNmQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgotS0JSQU5DSF9xZW11YXJtNjQgPz0gInN0YW5kYXJkL3FlbXVhcm02NCIKLUtCUkFOQ0hfcWVtdW1pcHMgPz0gInN0YW5kYXJkL210aS1tYWx0YTMyIgotS0JSQU5DSF9xZW11cHBjICA/PSAic3RhbmRhcmQvcWVtdXBwYyIKLUtCUkFOQ0hfcWVtdXg4NiAgPz0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgotCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI0MDBjMGYzOWI5NTRjZDhmZmZkZjUzZTZlYzk3ODUyYjczZmVhN2FmIgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gImZiMDNhOTQ3MjM2N2I2YzE3NzcyOWFjNjMxMzI2YWFmZDVkMTdjOTIiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICIyNmI4YmExODZhNmQzOTcyOGZjMTUxMGJkMjI2NDExMGM3NTg0MmY1IgotU1JDUkVWX21hY2hpbmUgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWV0YSA/PSAiYjE0OWQxNGNjYWU4MzQ5YWIzM2UxMDFmNmFmMjMzYTEyZjRiMTdiYSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjQuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuNDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI0LjQuMTEzIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVhMTY1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCi1LQlJBTkNIX3FlbXVhcm0gID89ICJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKLUtCUkFOQ0hfcWVtdWFybTY0ID89ICJzdGFuZGFyZC9xZW11YXJtNjQiCi1LQlJBTkNIX3FlbXVtaXBzID89ICJzdGFuZGFyZC9tdGktbWFsdGEzMiIKLUtCUkFOQ0hfcWVtdXBwYyAgPz0gInN0YW5kYXJkL3FlbXVwcGMiCi1LQlJBTkNIX3FlbXV4ODYgID89ICJzdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11eDg2LTY0ID89ICJzdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11bWlwczY0ID89ICJzdGFuZGFyZC9tdGktbWFsdGE2NCIKLQotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiMjMzNjllYjdlMDdjODM5ZmE3M2E4YzFlODVhYmEzN2EwN2JmMTRjMSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICJjYWI5ZTA1OTQ0Nzg3OGY1MzgzZjkxYTA1ZGIxMjgxM2Y2OWNiZmMxIgotU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gImViM2IyMDc5ZWE0M2I0NTFlMDZiZTQ0M2Y4YmMxNDY3MzZmOWM0YmMiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiYzJlNWVmODNiNjEyZDUwZjUwZmFmZWVkOTkzMGRiZWEzMDJmYmU4YyIKLVNSQ1JFVl9tYWNoaW5lID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgotU1JDUkVWX21ldGEgPz0gIjA3NzRlYWNlYTJhN2QzYTE1MDU5NDUzM2I4YzgwZDBjMGJmZGZkZWQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC45LmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00Ljk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC45LjgyIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkODFkYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQmFiZWx0cmFjZSAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKLURFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vYmFiZWx0cmFjZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvYmFiZWx0cmFjZSIKLQotTElDRU5TRSA9ICJNSVQgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2YmExNWRkNzZhMjQ4ZTFkZDUyNmJjYTBlMjEyNWZhIgotCi1ERVBFTkRTID0gImdsaWItMi4wIHV0aWwtbGludXggcG9wdCBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZWZmaWNpb3MuY29tL2ZpbGVzL2JhYmVsdHJhY2UvYmFiZWx0cmFjZS0ke1BWfS50YXIuYnoyIFwKLSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZWJ1Zy1pbmZvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGNlYzI3NDVhYzMxNjY0OTc5MWM0M2Y0MTZkNzFlYTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjI0OWZlZTViZWJhNjU3NzMxZjVkNmE4NGM1Mjk2YzY1MTdmNTQ0YmZiZTc1NzFiZDFmZDdhZjIzNzI2MTM3YyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyOTQwMmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS40LmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiQmFiZWx0cmFjZSAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKK0RFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vYmFiZWx0cmFjZS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvYmFiZWx0cmFjZSIKKworTElDRU5TRSA9ICJNSVQgJiBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2YmExNWRkNzZhMjQ4ZTFkZDUyNmJjYTBlMjEyNWZhIgorCitERVBFTkRTID0gImdsaWItMi4wIHV0aWwtbGludXggcG9wdCBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZWZmaWNpb3MuY29tL2ZpbGVzL2JhYmVsdHJhY2UvYmFiZWx0cmFjZS0ke1BWfS50YXIuYnoyIFwKKyIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZWJ1Zy1pbmZvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2U4Y2RhZmVjM2FjMDM0NmEzODk4NzBlODdiZjEzNDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTY0MzAzOTkyM2EwYWJjNzVhMjViM2Q1OTRjZWUwMDE3NDIzYjU3ZjEwZDJiNjI1ZTk2ZWQxZThkNDg5MWZjMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuOS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKaW5kZXggNmU5MmMyMi4uOTM2MjZkZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKQEAgLTI1LDYgKzI1LDcgQEAKIFBBQ0tBR0VDT05GSUdba21vZF0gPSAiLS1lbmFibGUta21vZCwgLS1kaXNhYmxlLWttb2QsIGttb2QiCiBQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCiBQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAibHR0bmctdXN0IgorUEFDS0FHRUNPTkZJR19yZW1vdmVfcmlzY3Y2NCA9ICJsdHRuZy11c3QiCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvbHR0bmctdG9vbHMvbHR0bmctdG9vbHMtJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly94MzIucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdC9sdHRuZy11c3QtZG9jLWV4YW1wbGVzLWRpc2FibGUucGF0Y2gKaW5kZXggMGYxOGM1ZC4uYmZmODUyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3QvbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoCkBAIC02LDEzICs2LDEyIEBACiAKIFNpZ25lZC1vZmYtYnk6IFRvbSBaYW51c3NpIDx0b20uemFudXNzaUBpbnRlbC5jb20+CiAKLUluZGV4OiBkb2MvTWFrZWZpbGUuYW0KK0luZGV4OiBsdHRuZy11c3QtMi45LjEvZG9jL01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9kb2MvTWFrZWZpbGUuYW0KLSsrKyBiL2RvYy9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw0IEBACistLS0gbHR0bmctdXN0LTIuOS4xLm9yaWcvZG9jL01ha2VmaWxlLmFtCisrKysgbHR0bmctdXN0LTIuOS4xL2RvYy9NYWtlZmlsZS5hbQorQEAgLTEsMyArMSwzIEBACiAtU1VCRElSUyA9IC4gbWFuIGV4YW1wbGVzCiArU1VCRElSUyA9IC4gbWFuCiAgCi0gZGlzdF9tYW5fTUFOUyA9IG1hbi9sdHRuZy1nZW4tdHAuMSBcCi0gCW1hbi9sdHRuZy11c3QuMyBcCisgZGlzdF9kb2NfREFUQSA9IGphdmEtYWdlbnQudHh0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9tYWtlLW1vZC1zY3JpcHRzL21ha2UtbW9kLXNjcmlwdHNfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbWFrZS1tb2Qtc2NyaXB0cy9tYWtlLW1vZC1zY3JpcHRzXzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2M1OGM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbWFrZS1tb2Qtc2NyaXB0cy9tYWtlLW1vZC1zY3JpcHRzXzEuMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkJ1aWxkIHRvb2xzIG5lZWRlZCBieSBleHRlcm5hbCBtb2R1bGVzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0dQTC0yLjA7bWQ1PTgwMWY4MDk4MGQxNzFkZDY0MjU2MTA4MzNhMjJkYmU2IgorCitpbmhlcml0IGtlcm5lbC1hcmNoCitpbmhlcml0IHBrZ2NvbmZpZworCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2NvbmZpZ3VyZVtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIgb3BlbnNzbC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2NvbXBpbGVbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX2NvbXBpbGVfa2VybmVsbW9kdWxlcyIKKworREVQRU5EUyArPSAiYmMtbmF0aXZlIgorCitFWFRSQV9PRU1BS0UgPSAiIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDUFA9IiR7QlVJTERfQ1BQfSIiCisKKyMgQnVpbGQgc29tZSBob3N0IHRvb2xzIHVuZGVyIHdvcmstc2hhcmVkLiAgQ0MsIExELCBhbmQgQVIgYXJlIHByb2JhYmx5CisjIG5vdCB1c2VkLCBidXQgdGhpcyBpcyB0aGUgaGlzdG9yaWNhbCB3YXkgb2YgaW52b2tpbmcgIm1ha2Ugc2NyaXB0cyIuCisjCitkb19jb25maWd1cmUoKSB7CisJdW5zZXQgQ0ZMQUdTIENQUEZMQUdTIENYWEZMQUdTIExERkxBR1MKKwlvZV9ydW5tYWtlIENDPSIke0tFUk5FTF9DQ30iIExEPSIke0tFUk5FTF9MRH0iIEFSPSIke0tFUk5FTF9BUn0iIFwKKwkgICAgICAgICAgIC1DICR7U1RBR0lOR19LRVJORUxfRElSfSBPPSR7U1RBR0lOR19LRVJORUxfQlVJTERESVJ9IHNjcmlwdHMgcHJlcGFyZQorCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMDE2NTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0tV2lkZSBQcm9maWxlciIKLURFU0NSSVBUSU9OID0gIk9Qcm9maWxlIGlzIGEgc3lzdGVtLXdpZGUgcHJvZmlsZXIgZm9yIExpbnV4IHN5c3RlbXMsIGNhcGFibGUgXAotb2YgcHJvZmlsaW5nIGFsbCBydW5uaW5nIGNvZGUgYXQgbG93IG92ZXJoZWFkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9vcHJvZmlsZS5zb3VyY2Vmb3JnZS5uZXQvbmV3cy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTYxOTEmYXRpZD0xMTYxOTEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJvcGFnZW50L29wYWdlbnQuaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTI2O21kNT00ZjE2ZjcyYzdhNDkzZDhhNDcwNGFhMThkMDNkMTVjNiBcCi0gICAgICAgICAgICAgICAgICAgIgotU0VDVElPTiA9ICJkZXZlbCIKLQotREVQRU5EUyA9ICJwb3B0IGJpbnV0aWxzIgotUkRFUEVORFNfJHtQTn0gPSAiYmludXRpbHMtc3ltbGlua3MiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtdm1saW51eCIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9LyR7QlBOfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS8ke0JQTn0vbGliKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS9saWIqLmEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2FjaW5jbHVkZS5tNCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wcm9maWxlLWNyb3NzLWNvbXBpbGUtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3Jvb3QtaG9tZS1kaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1GVEJGUy1wcm9ibGVtLXdpdGgtR0NDLTYucGF0Y2ggXAotIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAib3Byb2ZpbGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9vcHJvZmlsZS9maWxlcy9vcHJvZmlsZS8iCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wucGF0Y2giCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWtlcm5lbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IC0td2l0aG91dC14IGFjX2N2X3Byb2dfWFNMVFBST0M9IgotZG9fY29uZmlndXJlICgpIHsKLQljcCAke1dPUktESVJ9L2FjaW5jbHVkZS5tNCAke1N9LwotCWF1dG90b29sc19kb19jb25maWd1cmUKLX0KLQotRVhUUkFfT0VNQUtFID0gIlNSQ0RJUj0ke1BURVNUX1BBVEh9L2xpYnV0aWwrKy90ZXN0cyIKLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSBjaGVjawotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXN1YmRpcnM9ImxpYmRiL3Rlc3RzIGxpYnV0aWwrKy90ZXN0cyBsaWJyZWdleC90ZXN0cyBsaWJ1dGlsL3Rlc3RzIGxpYm9wL3Rlc3RzIGxpYmRiL3Rlc3RzICIKLQlmb3IgdG9vbHRlc3QgaW4gJHtzdWJkaXJzfQotCWRvCi0JCWZpbmQgJHt0b29sdGVzdH0gLXBlcm0gL3U9eCAtdHlwZSBmfCBjcGlvIC1wdmR1ICR7RH0ke1BURVNUX1BBVEh9Ci0JZG9uZQotCi0JIyBuZWVkZWQgYnkgc29tZSBsaWJvcCB0ZXN0cwotCWNwIC1yIGV2ZW50cyAke0R9JHtQVEVTVF9QQVRIfQotCi0JIyBuZWVkZWQgYnkgbGlicmVnZXggcmVnZXhfdGVzdAotCWNwIGxpYnJlZ2V4L3N0bC5wYXQgJHtEfSR7UFRFU1RfUEFUSH0vbGlicmVnZXgKLQljcCBsaWJyZWdleC90ZXN0cy9tYW5nbGVkLW5hbWUgJHtEfSR7UFRFU1RfUEFUSH0vbGlicmVnZXgvdGVzdHMKLQotCSMgbmVlZGVkIGJ5IGxpdHV0aWwrKyBmaWxlX21hbmlwX3Rlc3RzCi0JY3AgJHtTfS9saWJ1dGlsKysvdGVzdHMvZmlsZV9tYW5pcF90ZXN0cy5jcHAgXAotCQlsaWJ1dGlsKysvdGVzdHMvZmlsZV9tYW5pcF90ZXN0cy5vICR7RH0ke1BURVNUX1BBVEh9L2xpYnV0aWwrKy90ZXN0cwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlODU2MmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gMzRiMGQ5YjFhMzJmYjQwNGEzMDMyN2E3YWU4OTMxYzdjNzU1ODNiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotRGF0ZTogVHVlLCA5IEZlYiAyMDE2IDAyOjAwOjI5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBybWIoKSBkZWZpbml0aW9uIGZvciBOSU9TMiBhcmNoaXRlY3R1cmUKLQotU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHA6Ly9tYXJjLmluZm8vP2w9b3Byb2ZpbGUtbGlzdCZtPTE0NTUwMTkxNTkzMTg3NCZ3PTIgXQotLS0tCi0gbGlicGVyZl9ldmVudHMvb3BlcmZfdXRpbHMuaCB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJwZXJmX2V2ZW50cy9vcGVyZl91dGlscy5oIGIvbGlicGVyZl9ldmVudHMvb3BlcmZfdXRpbHMuaAotaW5kZXggMzI5NTRjYy4uODI3MGU1MyAxMDA2NDQKLS0tLSBhL2xpYnBlcmZfZXZlbnRzL29wZXJmX3V0aWxzLmgKLSsrKyBiL2xpYnBlcmZfZXZlbnRzL29wZXJmX3V0aWxzLmgKLUBAIC0xNzgsNiArMTc4LDExIEBAIHZvaWQgb3BfcmVsZWFzZV9yZXNvdXJjZXModm9pZCk7Ci0gI2RlZmluZSBjcHVfcmVsYXgoKQlhc20gdm9sYXRpbGUoIiIgOjo6ICJtZW1vcnkiKQotICNlbmRpZgotIAotKyNpZmRlZiBfX25pb3MyX18KLSsjZGVmaW5lIHJtYigpCQlhc20gdm9sYXRpbGUoIiIgOjo6ICJtZW1vcnkiKQotKyNkZWZpbmUgY3B1X3JlbGF4KCkJYXNtIHZvbGF0aWxlKCIiIDo6OiAibWVtb3J5IikKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX190aWxlX18KLSAjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgotICNkZWZpbmUgcm1iKCkJCV9faW5zbl9tZigpCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtRml4LUZUQkZTLXByb2JsZW0td2l0aC1HQ0MtNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtRml4LUZUQkZTLXByb2JsZW0td2l0aC1HQ0MtNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM3MmZkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS8wMDAxLUZpeC1GVEJGUy1wcm9ibGVtLXdpdGgtR0NDLTYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDM5ZDRkNDZhMGJkNTA0YWM3MDhmZmU3MmRmODdiZjc0Y2QxMmFkMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBXaWxsaWFtIENvaGVuIDx3Y29oZW5AcmVkaGF0LmNvbT4KLURhdGU6IEZyaSwgNSBGZWIgMjAxNiAxNzozMDoxOSAtMDUwMAotU3ViamVjdDogW1BBVENIXSBGaXggRlRCRlMgcHJvYmxlbSB3aXRoIEdDQy02Ci0KLUdDQy02IGlzIHBpY2tpZXIgYWJvdXQgc29tZSBvZiB0aGUgdHlwZSBjb252ZXJzaW9ucyBjYXVzaW5nIHRoZSBGZWRvcmEKLTI0IG1hc3MgcmVidWlsZCB0aGUgYnVpbGQgb2Ygb3Byb2ZpbGUgZmFpbGVkIHdpdGg6Ci0KLW1ha2VbM106IEVudGVyaW5nIGRpcmVjdG9yeSAnL2J1aWxkZGlyL2J1aWxkL0JVSUxEL29wcm9maWxlLTEuMS4wL2xpYnV0aWwrKycKLWcrKyAtREhBVkVfQ09ORklHX0ggLUkuIC1JLi4gIC1JIC4uL2xpYnV0aWwgLUkgLi4vbGlib3AgLUkgLi4vbGlicHAgICAtVyAtV2FsbCAtZm5vLWNvbW1vbiAtZnRlbXBsYXRlLWRlcHRoLTUwIC1PMiAtZyAtcGlwZSAtV2FsbCAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtZmV4Y2VwdGlvbnMgLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIC0tcGFyYW09c3NwLWJ1ZmZlci1zaXplPTQgLWdyZWNvcmQtZ2NjLXN3aXRjaGVzIC1zcGVjcz0vdXNyL2xpYi9ycG0vcmVkaGF0L3JlZGhhdC1oYXJkZW5lZC1jYzEgLW0zMiAtbWFyY2g9aTY4NiAtbXR1bmU9YXRvbSAtZmFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1jIC1vIG9wX2JmZC5vIG9wX2JmZC5jcHAKLW9wX2JmZC5jcHA6IEluIG1lbWJlciBmdW5jdGlvbiAndm9pZCBvcF9iZmQ6OmdldF9zeW1ib2xfcmFuZ2Uoc3ltYm9sX2luZGV4X3QsIGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQmLCBsb25nIGxvbmcgdW5zaWduZWQgaW50JikgY29uc3QnOgotb3BfYmZkLmNwcDo1Mzg6NDc6IGVycm9yOiBjYW5ub3QgY29udmVydCAnc3RkOjpvc3RyZWFtIHtha2Egc3RkOjpiYXNpY19vc3RyZWFtPGNoYXI+fScgdG8gJ2NvbnN0IGJvb2wnIGluIGluaXRpYWxpemF0aW9uCi0gIGJvb2wgY29uc3QgdmVyYm9zZSA9IGN2ZXJiIDw8ICh2YmZkICYgdmxldmVsMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLW9wX2JmZC5jcHA6NTQ2Ojc6IGVycm9yOiBpbiBhcmd1bWVudCB0byB1bmFyeSAhCi0gIGlmICghdmVyYm9zZSkKLSAgICAgICBefn5+fn5+Ci0KLUF2b2lkIHRoZSBpbnRlcm1lZGlhdGUgYm9vbCB0eXBlIHRvIG1ha2UgR0NDLTYgaGFwcHkuCi0KLVNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gQ29oZW4gPHdjb2hlbkByZWRoYXQuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBsaWJ1dGlsKysvb3BfYmZkLmNwcCB8IDQgKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnV0aWwrKy9vcF9iZmQuY3BwIGIvbGlidXRpbCsrL29wX2JmZC5jcHAKLWluZGV4IDM4OWM5MjAuLmYyZWI0MmIgMTAwNjQ0Ci0tLS0gYS9saWJ1dGlsKysvb3BfYmZkLmNwcAotKysrIGIvbGlidXRpbCsrL29wX2JmZC5jcHAKLUBAIC01MzUsMTUgKzUzNSwxMyBAQCB2b2lkIG9wX2JmZDo6Z2V0X3N5bWJvbF9yYW5nZShzeW1ib2xfaW5kZXhfdCBzeW1faWR4LAotIHsKLSAJb3BfYmZkX3N5bWJvbCBjb25zdCAmIHN5bSA9IHN5bXNbc3ltX2lkeF07Ci0gCi0tCWJvb2wgY29uc3QgdmVyYm9zZSA9IGN2ZXJiIDw8ICh2YmZkICYgdmxldmVsMSk7Ci0tCi0gCWlmIChhbm9uX29iaikKLSAJCXN0YXJ0ID0gc3ltLnZtYSgpOwotIAllbHNlCi0gCQlzdGFydCA9IHN5bS5maWxlcG9zKCk7Ci0gCWVuZCA9IHN0YXJ0ICsgc3ltLnNpemUoKTsKLSAKLS0JaWYgKCF2ZXJib3NlKQotKwlpZiAoIShjdmVyYiA8PCAodmJmZCAmIHZsZXZlbDEpKSkKLSAJCXJldHVybjsKLSAKLSAJaW9fc3RhdGUgc3RhdGUoY3ZlcmIgPDwgKHZiZmQgJiB2bGV2ZWwxKSk7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2FjaW5jbHVkZS5tNCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2FjaW5jbHVkZS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVlY2Q5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hY2luY2x1ZGUubTQKKysrIC9kZXYvbnVsbApAQCAtMSw1ODEgKzAsMCBAQAotZG5sIEFYX0tFUk5FTF9PUFRJT04ob3B0aW9uLCBhY3Rpb24taWYtZm91bmQsIGFjdGlvbi1pZi1ub3QtZm91bmQpCi1kbmwgc2VlIGlmIGF1dG9jb25mLmggZGVmaW5lcyB0aGUgb3B0aW9uCi1BQ19ERUZVTihbQVhfS0VSTkVMX09QVElPTl0sIFsKLVNBVkVfQ0ZMQUdTPSRDRkxBR1MKLUNGTEFHUz0iLUkkS0lOQyAtTzIgLURfX0tFUk5FTF9fIgotQUNfVFJZX0NPTVBJTEUoIFsjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+XSwKLVsKLSNpZm5kZWYgJDEKLWJyZWFrX21lX2hhcmQoXFxcKTsKLSNlbmRpZgotXSxbJDJdLFskM10sKQotQ0ZMQUdTPSRTQVZFX0NGTEFHUwotXSkKLQotZG5sIEhhbmRsZSB0aGUgMi40IG1vZHVsZSBpbnNpZGUgbW9kdWxlLwotQUNfREVGVU4oW0FYX0NPTkZJR19NT0RVTEVdLAotWwotaWYgdGVzdCAhIC1mICRLSU5DL2xpbnV4L2F1dG9jb25mLmg7IHRoZW4KLQlBQ19NU0dfRVJST1IoW25vIHN1aXRhYmx5IGNvbmZpZ3VyZWQga2VybmVsIGluY2x1ZGUgdHJlZSBmb3VuZF0pCi1maQotCi1kbmwgIC0tLSBHZXQgTGludXgga2VybmVsIHZlcnNpb24gYW5kIGNvbXBpbGUgcGFyYW1ldGVycyAtLS0KLQotQUNfU1VCU1QoS1ZFUlMpCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBrZXJuZWwgdmVyc2lvbl0pCi1kbmwgaXQncyBsaWtlIHRoaXMgdG8gaGFuZGxlIG1hbmRyYWtlJ3MgZnViYXIgdmVyc2lvbi5oIC0gYnVnICM0NzE0NDgKLWV2YWwgS1ZFUlM9YGdjYyAtSSRLSU5DIC1FIC1kTSAkS0lOQy9saW51eC92ZXJzaW9uLmggfCBncmVwIC13IFVUU19SRUxFQVNFIHwgYXdrICd7cHJpbnQgJFtdM30nYAotQUNfTVNHX1JFU1VMVChbJEtWRVJTXSkKLWNhc2UgIiRLVkVSUyIgaW4KLTIuMi4qfDIuNC4qKSA7OwotKikgQUNfTVNHX0VSUk9SKFtVbnN1cHBvcnRlZCBrZXJuZWwgdmVyc2lvbl0pCi1lc2FjCi0KLWRubCBDaGVjayBmb3IgdGhlIG1pbmltYWwga2VybmVsIHZlcnNpb24gc3VwcG9ydGVkCi1BQ19NU0dfQ0hFQ0tJTkcoW2tlcm5lbCB2ZXJzaW9uXSkKLUFYX0tFUk5FTF9WRVJTSU9OKDIsIDIsIDEwLCA8PSwgQUNfTVNHX1JFU1VMVChbb2tdKSwgQUNfTVNHX0VSUk9SKFtjaGVjayBodG1sIGRvY3VtZW50YXRpb24gaW5zdGFsbCBzZWN0aW9uXSkpCi0KLWRubCBsaW51eC9zcGlubG9jay5oIGFkZGVkIGF0IHNvbWUgcG9pbnQgaW4gcGFzdAotQUNfTVNHX0NIRUNLSU5HKFtmb3IgJEtJTkMvbGludXgvc3BpbmxvY2suaF0pCi1pZiB0ZXN0IC1mICRLSU5DL2xpbnV4L3NwaW5sb2NrLmg7IHRoZW4KLQlFWFRSQV9DRkxBR1NfTU9EVUxFPSIkRVhUUkFfQ0ZMQUdTX01PRFVMRSAtREhBVkVfTElOVVhfU1BJTkxPQ0tfSEVBREVSIgotCUFDX01TR19SRVNVTFQoW3llc10pCi1lbHNlCi0JQUNfTVNHX1JFU1VMVChbbm9dKQotZmkKLQotQUNfTVNHX0NIRUNLSU5HKFtmb3IgcnRjX2xvY2tdKQotZ2NjIC1JJEtJTkMgLUUgJEtJTkMvbGludXgvbWMxNDY4MThydGMuaCB8IGdyZXAgcnRjX2xvY2sgPi9kZXYvbnVsbAotaWYgdGVzdCAiJD8iIC1lcSAwOyB0aGVuCi0JRVhUUkFfQ0ZMQUdTX01PRFVMRT0iJEVYVFJBX0NGTEFHU19NT0RVTEUgLURSVENfTE9DSyIKLQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQotZWxzZQotCUFDX01TR19SRVNVTFQoW25vXSkKLWZpCi0JIAotYXJjaD0idW5rbm93biIKLUFDX01TR19DSEVDS0lORyhmb3IgeDg2LTY0IGFyY2hpdGVjdHVyZSkKLUFYX0tFUk5FTF9PUFRJT04oQ09ORklHX1g4Nl82NCwgeDg2NjQ9MSwgeDg2NjQ9MCkKLUFYX01TR19SRVNVTFRfWU4oJHg4NjY0KQotQlVJTERfSEFNTUVSPW5vCi1pZiB0ZXN0ICIkeDg2NjQiIC1lcSAxOyB0aGVuCi0JYXJjaD0ieDg2IgotCUJVSUxEX0hBTU1FUj15ZXMKLWVsc2UKLQlBQ19NU0dfQ0hFQ0tJTkcoZm9yIHg4NiBhcmNoaXRlY3R1cmUpCi0JQVhfS0VSTkVMX09QVElPTihDT05GSUdfWDg2LCB4ODY9MSwgeDg2PTApCi0JQVhfS0VSTkVMX09QVElPTihDT05GSUdfWDg2X1dQX1dPUktTX09LLCB4ODY9MSwgeDg2PSR4ODYpCi0JQVhfTVNHX1JFU1VMVF9ZTigkeDg2KQotCXRlc3QgIiR4ODYiID0gMSAmJiBhcmNoPSJ4ODYiCi0JCi0JaWYgdGVzdCAiJGFyY2giID0gInVua25vd24iOyB0aGVuCi0gIAkJQUNfTVNHX0NIRUNLSU5HKGZvciBpYTY0IGFyY2hpdGVjdHVyZSkKLSAgCQlBWF9LRVJORUxfT1BUSU9OKENPTkZJR19JQTY0LCBpYTY0PTEsIGlhNjQ9MCkKLSAgCQlBWF9NU0dfUkVTVUxUX1lOKCRpYTY0KQotICAJCXRlc3QgIiRpYTY0IiA9IDEgJiYgYXJjaD0iaWE2NCIKLQlmaQotCi1maQotQUNfU1VCU1QoQlVJTERfSEFNTUVSKQotCi10ZXN0ICIkYXJjaCIgPSAidW5rbm93biIgJiYgQUNfTVNHX0VSUk9SKFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSkKLQotZG5sIGNoZWNrIHRvIHNlZSBpZiBrZXJuZWwgdmVyaW9uIGFwcHJvcHJpYXRlIGZvciBhcmNoCi1BQ19NU0dfQ0hFQ0tJTkcoYXJjaC9rZXJuZWwgdmVyc2lvbiBjb21iaW5hdGlvbikKLWNhc2UgIiRhcmNoIiBpbgotaWE2NCkKLQlBWF9LRVJORUxfVkVSU0lPTigyLCA0LCAxOCwgPCwgQUNfTVNHX1JFU1VMVChbb2tdKSwKLQkJQUNfTVNHX0VSUk9SKFt1bnN1cHBvcnRlZCBhcmNoL2tlcm5lbF0pKSA7OwotKikgQUNfTVNHX1JFU1VMVChbb2tdKQotZXNhYwotCi1kbmwgZm9yIG5vdyB3ZSBkbyBub3Qgc3VwcG9ydCBQUkVFTVBUIHBhdGNoCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwcmVlbXB0IHBhdGNoXSkKLUFYX0tFUk5FTF9PUFRJT04oQ09ORklHX1BSRUVNUFQscHJlZW1wdD0xLHByZWVtcHQ9MCkKLUFYX01TR19SRVNVTFRfWU4oWyRwcmVlbXB0XSkKLXRlc3QgIiRwcmVlbXB0IiA9IDAgfHwgQUNfTVNHX0VSUk9SKFt1bnN1cHBvcnRlZCBrZXJuZWwgY29uZmlndXJhdGlvbiA6IENPTkZJR19QUkVFTVBUXSkKLQotQUNfU1VCU1QoS0lOQykKLQotTU9ESU5TVEFMTERJUj0vbGliL21vZHVsZXMvJEtWRVJTCi0gCi1PUFJPRklMRV9NT0RVTEVfQVJDSD0kYXJjaAotQUNfU1VCU1QoT1BST0ZJTEVfTU9EVUxFX0FSQ0gpCi1dCi0pCi0KLWRubCBBWF9NU0dfUkVTVUxUX1lOKGEpCi1kbmwgcmVzdWx0cyAieWVzIiBpZmYgYT09MSwgIm5vIiBlbHNlCi1BQ19ERUZVTihbQVhfTVNHX1JFU1VMVF9ZTl0sIFt4PW5vCi10ZXN0ICJ4JDEiID0gIngxIiAmJiB4PXllcwotQUNfTVNHX1JFU1VMVCgkeCldKQotCi1kbmwgQVhfTUFMTE9DX0FUVFJJQlVURSAtIHNlZSBpZiBnY2Mgd2lsbCB0YWtlIF9fYXR0cmlidXRlX18oKG1hbGxvYykpCi1BQ19ERUZVTihbQVhfTUFMTE9DX0FUVFJJQlVURV0sCi1bCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgbWFsbG9jIGF0dHJpYnV0ZSBpcyB1bmRlcnN0b29kXSkKLVNBVkVfQ0ZMQUdTPSRDRkxBR1MKLUNGTEFHUz0iLVdlcnJvciAkQ0ZMQUdTIgotQUNfVFJZX0NPTVBJTEUoLFsKLXZvaWQgbW9ua2V5KCkgX19hdHRyaWJ1dGVfXygobWFsbG9jKSk7Ci1dLEFDX01TR19SRVNVTFQoW3llc10pOyBBQ19ERUZJTkUoTUFMTE9DX0FUVFJJQlVURV9PSywgMSwgW3doZXRoZXIgbWFsbG9jIGF0dHJpYnV0ZSBpcyB1bmRlcnN0b29kXSksIEFDX01TR19SRVNVTFQoW25vXSkpCi1DRkxBR1M9JFNBVkVfQ0ZMQUdTIAotXQotKQotCi1kbmwgYnVpbHRpbl9leHBlY3QgaXMgdXNlZCBpbiBtb2R1bGUgd2UgY2FuJ3QgYWRkIHRoYXQgaW4gY29uZmlnLmgKLUFDX0RFRlVOKFtBWF9CVUlMVElOX0VYUEVDVF0sCi1bCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgX19idWlsdGluX2V4cGVjdCBpcyB1bmRlcnN0b29kXSkKLVNBVkVfQ0ZMQUdTPSRDRkxBR1MKLUNGTEFHUz0iLVdlcnJvciAkQ0ZMQUdTIgotQUNfVFJZX0xJTksoLFsKLWludCBpOwotaWYgKF9fYnVpbHRpbl9leHBlY3QoaSwgMCkpIHsgfQotXSwKLUFDX01TR19SRVNVTFQoW3llc10pOyBFWFRSQV9DRkxBR1NfTU9EVUxFPSIkRVhUUkFfQ0ZMQUdTX01PRFVMRSAtREVYUEVDVF9PSyIsCi1BQ19NU0dfUkVTVUxUKFtub10pOykKLUNGTEFHUz0kU0FWRV9DRkxBR1MgCi1dCi0pIAotCi1kbmwgQVhfRVhUUkFfRElSUyAtIExldCB1c2VyIHNwZWNpZnkgZXh0cmEgZGlycyBmb3IgaW5jbHVkZS9saWJzCi1BQ19ERUZVTihbQVhfRVhUUkFfRElSU10sCi1bCi1BQ19BUkdfV0lUSChleHRyYS1pbmNsdWRlcywKLVsgIC0td2l0aC1leHRyYS1pbmNsdWRlcz1ESVIgICAgYWRkIGV4dHJhIGluY2x1ZGUgcGF0aHNdLAotICB1c2VfZXh0cmFfaW5jbHVkZXM9IiR3aXRodmFsIiwKLSAgdXNlX2V4dHJhX2luY2x1ZGVzPU5PCi0pCi1pZiB0ZXN0IC1uICIkdXNlX2V4dHJhX2luY2x1ZGVzIiAmJiBcCi0gICAgICAgIHRlc3QgIiR1c2VfZXh0cmFfaW5jbHVkZXMiICE9ICJOTyI7IHRoZW4KLSAgYWNfc2F2ZV9pZnM9JElGUwotICBJRlM9JzonCi0gIGZvciBkaXIgaW4gJHVzZV9leHRyYV9pbmNsdWRlczsgZG8KLSAgICBleHRyYV9pbmNsdWRlcz0iJGV4dHJhX2luY2x1ZGVzIC1JJGRpciIKLSAgZG9uZQotICBJRlM9JGFjX3NhdmVfaWZzCi0gIENQUEZMQUdTPSIkQ1BQRkxBR1MgJGV4dHJhX2luY2x1ZGVzIgotZmkKLQotQUNfQVJHX1dJVEgoZXh0cmEtbGlicywKLVsgIC0td2l0aC1leHRyYS1saWJzPURJUiAgICAgICAgYWRkIGV4dHJhIGxpYnJhcnkgcGF0aHNdLAotICB1c2VfZXh0cmFfbGlicz0kd2l0aHZhbCwKLSAgdXNlX2V4dHJhX2xpYnM9Tk8KLSkKLWlmIHRlc3QgLW4gIiR1c2VfZXh0cmFfbGlicyIgJiYgXAotICAgICAgICB0ZXN0ICIkdXNlX2V4dHJhX2xpYnMiICE9ICJOTyI7IHRoZW4KLSAgIGFjX3NhdmVfaWZzPSRJRlMKLSAgIElGUz0nOicKLSAgIGZvciBkaXIgaW4gJHVzZV9leHRyYV9saWJzOyBkbwotICAgICBleHRyYV9saWJyYXJpZXM9IiRleHRyYV9saWJyYXJpZXMgLUwkZGlyIgotICAgZG9uZQotICAgSUZTPSRhY19zYXZlX2lmcwotICAgTERGTEFHUz0iJExERkxBR1MgJGV4dHJhX2xpYnJhcmllcyIKLWZpCi1dCi0pCi0KLWRubCBBWF9QT1BUX0NPTlNUIC0gY2hlY2sgcG9wdCBwcm90b3R5cGUKLUFDX0RFRlVOKFtBWF9QT1BUX0NPTlNUXSwKLVsKLUFDX01TR19DSEVDS0lORyhbcG9wdCBwcm90b3R5cGVdKQotU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKLUNYWEZMQUdTPSItV2Vycm9yICRDWFhGTEFHUyIKLUFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8cG9wdC5oPl0sCi1bCi1pbnQgYzsgY2hhciAqKnY7Ci1wb3B0R2V0Q29udGV4dCgwLCBjLCB2LCAwLCAwKTsKLV0sCi1BQ19NU0dfUkVTVUxUKFt0YWtlcyBjaGFyICoqXSk7LAotQUNfTVNHX1JFU1VMVChbdGFrZXMgY29uc3QgY2hhciAqKl0pOyBBQ19ERUZJTkUoQ09OU1RfUE9QVCwgMSwgW3doZXRoZXIgcG9wdCBwcm90b3R5cGUgdGFrZXMgYSBjb25zdCBjaGFyICoqXSkpCi1DWFhGTEFHUz0iJFNBVkVfQ1hYRkxBR1MiCi1dCi0pCi0KLWRubCBBWF9DSEVDS19TU1RSRUFNIC0gY2hlY2sgaWYgbG9jYWwgc3N0cmVhbSBpcyBuZWVkZWQgdG8gY29tcGlsZSBPSwotQUNfREVGVU4oW0FYX0NIRUNLX1NTVFJFQU1dLAotWwotQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIHVzZSBpbmNsdWRlZCBzc3RyZWFtXSkKLUFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3N0cmVhbT5dLCBbXSwgCi1BQ19NU0dfUkVTVUxUKFtub10pOywKLUFDX01TR19SRVNVTFQoW3llc10pOyBPUF9DWFhGTEFHUz0iJE9QX0NYWEZMQUdTIC1JXCR7dG9wX3NyY2Rpcn0vaW5jbHVkZSIpCi1dCi0pCi0KLWRubCBBWF9DSEVDS19UWVBFREVGKHR5cGVkZWZfbmFtZSwgdHlwZSwgYWN0aW9uLWlmLXRydWUsIGFjdGlvbi1pZi1mYWxzZSkKLWRubCBleGVjIGFjdGlvbi1pZi10cnVlIGlmIHR5cGVkZWZfbmFtZSBpcyBhIHR5cGVkZWYgdG8gdHlwZSBlbHNlIGV4ZWMgCi1kbmwgYWN0aW9uLWlmLWZhbHNlCi1kbmwgY3VycmVudGx5IHdvcmsgb25seSB3aXRoIHR5cGUgdHlwZWRlZidlZCBpbiBzdGRkZWYuaAotQUNfREVGVU4oW0FYX0NIRUNLX1RZUEVERUZdLCBbCi1kbmwgQUNfTEFOR19QVVNIKEMpIG5vdCBpbiBhdXRvY29uZiAyLjEzCi1BQ19MQU5HX1NBVkUKLUFDX0xBTkdfQwotU0FWRV9DRkxBR1M9JENGTEFHUwotQ0ZMQUdTPSItV2Vycm9yICRDRkxBR1MiCi0KLUFDX1RSWV9DT01QSUxFKAotICBbCi0gICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgXSwKLSAgWwotICB0eXBlZGVmIHZvaWQgKCpmY3QxKSgkMSk7Ci0gIHR5cGVkZWYgdm9pZCAoKmZjdDIpKCQyKTsKLSAgZmN0MSBmMSA9IDA7Ci0gIGZjdDIgZjIgPSAwOwotICBpZiAoZjEgPT0gZjIpIHt9Ci0gIF0sCi1bJDNdLFskNF0pCi0KLUNGTEFHUz0kU0FWRV9DRkxBR1MKLUFDX0xBTkdfUkVTVE9SRQotXSkKLQotCi1kbmwgQVhfVFlQRURFRkVEX05BTUUodHlwZWRlZl9uYW1lLCBjYW5kaWRhdGVfbGlzdCwgdmFyX25hbWUpCi1kbmwgc2V0IHZhcl9uYW1lIHRvIHRoZSB0eXBlZGVmIG5hbWUgb2YgJDEgd2hpY2ggbXVzdCBiZSBpbiBjYW5kaXRhdGVfbGlzdAotZG5sIGVsc2UgcHJvZHVjZSBhIGZhdGFsIGVycm9yCi1BQ19ERUZVTihbQVhfVFlQRURFRkVEX05BTUVdLCBbCi0JQUNfTVNHX0NIRUNLSU5HKFt0eXBlIG9mICQxXSkKLQlmb3IgZiBpbiAkMjsgZG8KLQkJQVhfQ0hFQ0tfVFlQRURFRigkMSwgJGYsICQzPSIkZiIsICQzPSIiKQotCQlpZiB0ZXN0IC1uICIkeyQzfSI7IHRoZW4KLQkJCWJyZWFrCi0JCWZpCi0JZG9uZQotCWlmIHRlc3QgLW4gIiR7JDN9IjsgdGhlbgotCQlBQ19NU0dfUkVTVUxUKFskeyQzfV0pCi0JZWxzZQotCQlBQ19NU0dfRVJST1IoW25vdCBmb3VuZF0pCi0JZmkKLV0pCi0KLWRubCBmaW5kIGEgYmluYXJ5IGluIHRoZSBwYXRoCi1BQ19ERUZVTihbUVRfRklORF9QQVRIXSwKLVsKLQlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkMV0pCi0JQUNfQ0FDSEVfVkFMKHF0X2N2X3BhdGhfJDEsCi0JWwotCQlxdF9jdl9wYXRoXyQxPSJOT05FIgotCQlpZiB0ZXN0IC1uICIkJDIiOyB0aGVuCi0JCQlxdF9jdl9wYXRoXyQxPSIkJDIiOwotCQllbHNlCi0JCQlkaXJzPSIkMyIKLQkJCXF0X3NhdmVfSUZTPSRJRlMKLQkJCUlGUz0nOicKLQkJCWZvciBkaXIgaW4gJFBBVEg7IGRvCi0JCQkJZGlycz0iJGRpcnMgJGRpciIKLQkJCWRvbmUKLQkJCUlGUz0kcXRfc2F2ZV9JRlMKLSAKLQkJCWZvciBkaXIgaW4gJGRpcnM7IGRvCi0JCQkJaWYgdGVzdCAteCAiJGRpci8kMSI7IHRoZW4KLQkJCQkJaWYgdGVzdCAtbiAiJDUiOyB0aGVuCi0JCQkJCQlldmFsc3RyPSIkZGlyLyQxICQ1IDI+JjEgIgotCQkJCQkJaWYgZXZhbCAkZXZhbHN0cjsgdGhlbgotCQkJCQkJCXF0X2N2X3BhdGhfJDE9IiRkaXIvJDEiCi0JCQkJCQkJYnJlYWsKLQkJCQkJCWZpCi0JCQkJCWVsc2UKLQkJCQkJCXF0X2N2X3BhdGhfJDE9IiRkaXIvJDEiCi0JCQkJCQlicmVhawotCQkJCQlmaQotCQkJCWZpCi0JCQlkb25lCi0JCWZpCi0JXSkKLSAKLQlpZiB0ZXN0IC16ICIkcXRfY3ZfcGF0aF8kMSIgfHwgdGVzdCAiJHF0X2N2X3BhdGhfJDEiID0gIk5PTkUiOyB0aGVuCi0JCUFDX01TR19SRVNVTFQobm90IGZvdW5kKQotCQkkNAotCWVsc2UKLQkJQUNfTVNHX1JFU1VMVCgkcXRfY3ZfcGF0aF8kMSkKLQkJJDI9JHF0X2N2X3BhdGhfJDEKLQlmaQotXSkKLQotZG5sIEZpbmQgdGhlIHVpYyBjb21waWxlciBvbiB0aGUgcGF0aCBvciBpbiBxdF9jdl9kaXIKLUFDX0RFRlVOKFtRVF9GSU5EX1VJQ10sCi1bCi0JUVRfRklORF9QQVRIKHVpYywgYWNfdWljLCAkcXRfY3ZfZGlyL2JpbikKLQlpZiB0ZXN0IC16ICIkYWNfdWljIiAtYSAiJEZBVEFMIiA9IDE7IHRoZW4KLQkJQUNfTVNHX0VSUk9SKFt1aWMgYmluYXJ5IG5vdCBmb3VuZCBpbiBcJFBBVEggb3IgJHF0X2N2X2Rpci9iaW4gIV0pCi0JZmkKLV0pCi0gCi1kbmwgRmluZCB0aGUgcmlnaHQgbW9jIGluIHBhdGgvcXRfY3ZfZGlyCi1BQ19ERUZVTihbUVRfRklORF9NT0NdLAotWwotCVFUX0ZJTkRfUEFUSChtb2MyLCBhY19tb2MyLCAkcXRfY3ZfZGlyL2JpbikKLQlRVF9GSU5EX1BBVEgobW9jLCBhY19tb2MxLCAkcXRfY3ZfZGlyL2JpbikKLQotCWlmIHRlc3QgLW4gIiRhY19tb2MxIiAtYSAtbiAiJGFjX21vYzIiOyB0aGVuCi0JCWRubCBmb3VuZCBib3RoLiBQcmVmZXIgUXQzJ3MgaWYgaXQgZXhpc3RzIGVsc2UgbW9jMgotCQkkYWNfbW9jMSAtdiAyPiYxIHwgZ3JlcCAiUXQgMyIgPi9kZXYvbnVsbAotCQlpZiB0ZXN0ICIkPyIgPSAwOyB0aGVuCi0JCQlhY19tb2M9JGFjX21vYzE7Ci0JCWVsc2UKLQkJCWFjX21vYz0kYWNfbW9jMjsKLQkJZmkKLQllbHNlCi0JCWlmIHRlc3QgLW4gIiRhY19tb2MxIjsgdGhlbgotCQkJYWNfbW9jPSRhY19tb2MxOwotCQllbHNlCi0JCQlhY19tb2M9JGFjX21vYzI7Ci0JCWZpCi0JZmkKLQotCWlmIHRlc3QgLXogIiRhY19tb2MiICAtYSAiJEZBVEFMIiA9IDE7IHRoZW4KLQkJQUNfTVNHX0VSUk9SKFttb2MgYmluYXJ5IG5vdCBmb3VuZCBpbiBcJFBBVEggb3IgJHF0X2N2X2Rpci9iaW4gIV0pCi0JZmkKLV0pCi0KLWRubCBjaGVjayBhIHBhcnRpY3VsYXIgbGlibmFtZQotQUNfREVGVU4oW1FUX1RSWV9MSU5LXSwKLVsKLQlTQVZFX0xJQlM9IiRMSUJTIgotCUxJQlM9IiRMSUJTICQxIgotCUFDX1RSWV9MSU5LKFsKLQkjaW5jbHVkZSA8cWdsb2JhbC5oPgotCSNpbmNsdWRlIDxxc3RyaW5nLmg+Ci0JCV0sCi0JWwotCVFTdHJpbmcgcygibWFuZ2xlX2ZhaWx1cmUiKTsKLQkjaWYgKFFUX1ZFUlNJT04gPCAyMjEpCi0JYnJlYWtfbWVfKFxcXCk7Ci0JI2VuZGlmCi0JXSwKLQlxdF9jdl9saWJuYW1lPSQxLAotCSkKLQlMSUJTPSIkU0FWRV9MSUJTIgotXSkKLSAKLWRubCBjaGVjayB3ZSBjYW4gZG8gYSBjb21waWxlCi1BQ19ERUZVTihbUVRfQ0hFQ0tfQ09NUElMRV0sCi1bCi0JQUNfTVNHX0NIRUNLSU5HKFtmb3IgUXQgbGlicmFyeSBuYW1lXSkKLSAKLQlBQ19DQUNIRV9WQUwocXRfY3ZfbGlibmFtZSwKLQlbCi0JCUFDX0xBTkdfQ1BMVVNQTFVTCi0JCVNBVkVfQ1hYRkxBR1M9JENYWEZMQUdTCi0JCUNYWEZMQUdTPSIkQ1hYRkxBR1MgJFFUX0lOQ0xVREVTICRRVF9MREZMQUdTIiAKLQotCQlmb3IgbGlibmFtZSBpbiAtbHF0LW10IC1scXQzIC1scXQyIC1scXQ7Ci0JCWRvCi0JCQlRVF9UUllfTElOSygkbGlibmFtZSkKLQkJCWlmIHRlc3QgLW4gIiRxdF9jdl9saWJuYW1lIjsgdGhlbgotCQkJCWJyZWFrOwotCQkJZmkKLQkJZG9uZQotCi0JCUNYWEZMQUdTPSRTQVZFX0NYWEZMQUdTCi0JXSkKLQotCWlmIHRlc3QgLXogIiRxdF9jdl9saWJuYW1lIjsgdGhlbgotCQlBQ19NU0dfUkVTVUxUKFtmYWlsZWRdKSAKLQkJaWYgdGVzdCAiJEZBVEFMIiA9IDEgOyB0aGVuCi0JCQlBQ19NU0dfRVJST1IoW0Nhbm5vdCBjb21waWxlIGEgc2ltcGxlIFF0IGV4ZWN1dGFibGUuIENoZWNrIHlvdSBoYXZlIHRoZSByaWdodCBcJFFURElSICFdKQotCQlmaQotCWVsc2UKLQkJQUNfTVNHX1JFU1VMVChbJHF0X2N2X2xpYm5hbWVdKQotCWZpCi1dKQotCi1kbmwgZ2V0IFF0IHZlcnNpb24gd2UncmUgdXNpbmcKLUFDX0RFRlVOKFtRVF9HRVRfVkVSU0lPTl0sCi1bCi0JQUNfQ0FDSEVfQ0hFQ0soW1F0IHZlcnNpb25dLGx5eF9jdl9xdHZlcnNpb24sCi0JWwotCQlBQ19MQU5HX0NQTFVTUExVUwotCQlTQVZFX0NQUEZMQUdTPSRDUFBGTEFHUwotCQlDUFBGTEFHUz0iJENQUEZMQUdTICRRVF9JTkNMVURFUyIKLQotCQljYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHFnbG9iYWwuaD4KLSIlJSUiUVRfVkVSU0lPTl9TVFIiJSUlIgotRU9GCi0JCWx5eF9jdl9xdHZlcnNpb249YChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwgXAotCQkJZ3JlcCAnXiIlJSUiJyAgMj4vZGV2L251bGwgfCBcCi0JCQlzZWQgLWUgJ3MvIiUlJSIvL2cnIC1lICdzLyIvL2cnYAotCQlybSAtZiBjb25mdGVzdC4kYWNfZXh0Ci0JCUNQUEZMQUdTPSRTQVZFX0NQUEZMQUdTCi0JXSkKLSAKLQlRVF9WRVJTSU9OPSRseXhfY3ZfcXR2ZXJzaW9uCi0JQUNfU1VCU1QoUVRfVkVSU0lPTikKLV0pCi0gCi1kbmwgc3RhcnQgaGVyZSAKLUFDX0RFRlVOKFtRVF9ET19JVF9BTExdLAotWwotCWRubCBQbGVhc2UgbGVhdmUgdGhpcyBhbG9uZS4gSSB1c2UgdGhpcyBmaWxlIGluCi0JZG5sIG9wcm9maWxlLgotCUZBVEFMPTAKLQotCUFDX0FSR19XSVRIKHF0LWRpciwgWyAgLS13aXRoLXF0LWRpciAgICAgICAgICAgd2hlcmUgdGhlIHJvb3Qgb2YgUXQgaXMgaW5zdGFsbGVkIF0sCi0JCVsgcXRfY3ZfZGlyPWBldmFsIGVjaG8gIiR3aXRodmFsIi9gIF0pCi0JIAotCUFDX0FSR19XSVRIKHF0LWluY2x1ZGVzLCBbICAtLXdpdGgtcXQtaW5jbHVkZXMgICAgICB3aGVyZSB0aGUgUXQgaW5jbHVkZXMgYXJlLiBdLAotCQlbIHF0X2N2X2luY2x1ZGVzPWBldmFsIGVjaG8gIiR3aXRodmFsImAgXSkKLSAKLQlBQ19BUkdfV0lUSChxdC1saWJyYXJpZXMsIFsgIC0td2l0aC1xdC1saWJyYXJpZXMgICAgIHdoZXJlIHRoZSBRdCBsaWJyYXJ5IGlzIGluc3RhbGxlZC5dLAotCQlbICBxdF9jdl9saWJyYXJpZXM9YGV2YWwgZWNobyAiJHdpdGh2YWwiYCBdKQotCi0JZG5sIHBheSBhdHRlbnRpb24gdG8gJFFURElSIHVubGVzcyBvdmVycmlkZGVuCi0JaWYgdGVzdCAteiAiJHF0X2N2X2RpciI7IHRoZW4KLQkJcXRfY3ZfZGlyPSRRVERJUgotCWZpCi0gCi0JZG5sIGRlcml2ZSBpbmMvbGliIGlmIG5lZWRlZAotCWlmIHRlc3QgLW4gIiRxdF9jdl9kaXIiOyB0aGVuCi0JCWlmIHRlc3QgLXogIiRxdF9jdl9pbmNsdWRlcyI7IHRoZW4KLQkJCXF0X2N2X2luY2x1ZGVzPSRxdF9jdl9kaXIvaW5jbHVkZQotCQlmaQotCQlpZiB0ZXN0IC16ICIkcXRfY3ZfbGlicmFyaWVzIjsgdGhlbgotCQkJcXRfY3ZfbGlicmFyaWVzPSRxdF9jdl9kaXIvbGliCi0JCWZpCi0JZmkKLQotCWRubCBmbGFncyBmb3IgY29tcGlsYXRpb24KLQlRVF9JTkNMVURFUz0KLQlRVF9MREZMQUdTPQotCWlmIHRlc3QgLW4gIiRxdF9jdl9pbmNsdWRlcyI7IHRoZW4KLQkJUVRfSU5DTFVERVM9Ii1JJHF0X2N2X2luY2x1ZGVzIgotCWZpCi0JaWYgdGVzdCAtbiAiJHF0X2N2X2xpYnJhcmllcyI7IHRoZW4KLQkJUVRfTERGTEFHUz0iLUwkcXRfY3ZfbGlicmFyaWVzIgotCWZpCi0JQUNfU1VCU1QoUVRfSU5DTFVERVMpCi0JQUNfU1VCU1QoUVRfTERGTEFHUykKLSAKLQlRVF9GSU5EX01PQwotCU1PQz0kYWNfbW9jCi0JQUNfU1VCU1QoTU9DKQotCVFUX0ZJTkRfVUlDCi0JVUlDPSRhY191aWMKLQlBQ19TVUJTVChVSUMpCi0KLQlRVF9DSEVDS19DT01QSUxFCi0gCi0JUVRfTElCPSRxdF9jdl9saWJuYW1lOwotCUFDX1NVQlNUKFFUX0xJQikKLQotCWlmIHRlc3QgLW4gIiRxdF9jdl9saWJuYW1lIjsgdGhlbgotCQlRVF9HRVRfVkVSU0lPTgotCWZpCi1dKQotCi1kbmwgQVhfQ1hYRkxBR1NfT1BUSU9OUyh2YXItbmFtZSwgb3B0aW9uKQotZG5sIGFkZCBvcHRpb24gdG8gdmFyLW5hbWUgaWYgJENYWCBzdXBwb3J0IGl0LgotQUNfREVGVU4oW0FYX0NIRUNLX1BSRUNPTVBJTEVEX0hFQURFUl0sIFsKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciAke0NYWH0gc3VwcG9ydCBwcmVjb21waWxlZCBoZWFkZXJdKQotQUNfTEFOR19TQVZFCi1BQ19MQU5HX0NQTFVTUExVUwotU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKLWRubCB3ZSBjb25zaWRlciB0aGFuIGlmIC1XaW52YWxpZC1wY2ggaXMgYWNjZXB0ZWQgcGNoIHdpbGwgd29ya3MgLi4uCi1DWFhGTEFHUz0tV2ludmFsaWQtcGNoCi1kbmwgYnV0IHdlIGRvbid0IHdhbnQgLVdpbnZhbGlkLXBjaCBlbHNlIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCBkdWUgLVdlcnJvciBhbmQKLWRubCB0aGUgZmFjdCB0aGFuIHNvbWUgcGNoIHdpbGwgYmUgaW52YWxpZCBmb3IgdGhlIGdpdmVuIGNvbXBpbGF0aW9uIG9wdGlvbgotQUNfVFJZX0NPTVBJTEUoLFs7XSxBQ19NU0dfUkVTVUxUKFt5ZXNdKTsgJDE9IiR7JDF9IC1pbmNsdWRlIGJpdHMvc3RkYysrLmgiLCBBQ19NU0dfUkVTVUxUKFtub10pKQotQ1hYRkxBR1M9JFNBVkVfQ1hYRkxBR1MKLUFDX0xBTkdfUkVTVE9SRQotXSkKLQotZG5sIEFYX0NIRUNLX0RPQ0JPT0sKLUFDX0RFRlVOKFtBWF9DSEVDS19ET0NCT09LXSwgWwotIyBJdCdzIGp1c3QgcnVkZSB0byBnbyBvdmVyIHRoZSBuZXQgdG8gYnVpbGQKLVhTTFRQUk9DX0ZMQUdTPS0tbm9uZXQKLURPQ0JPT0tfUk9PVD0KLWlmIHRlc3QgISAtZiAvZXRjL3htbC9jYXRhbG9nOyB0aGVuCi0JZm9yIGkgaW4gL3Vzci9zaGFyZS9zZ21sL2RvY2Jvb2svc3R5bGVzaGVldC94c2wvbndhbHNoIC91c3Ivc2hhcmUvc2dtbC9kb2Nib29rL3hzbC1zdHlsZXNoZWV0cy87Ci0JZG8KLQkJaWYgdGVzdCAtZCAiJGkiOyB0aGVuCi0JCQlET0NCT09LX1JPT1Q9JGkKLQkJZmkKLQlkb25lCi0KLQkjIExhc3QgcmVzb3J0IC0gdHJ5IG5ldAotCWlmIHRlc3QgLXogIiRET0NCT09LX1JPT1QiOyB0aGVuCi0JCVhTTFRQUk9DX0ZMQUdTPQotCWZpCi1lbHNlCi0JWE1MX0NBVEFMT0c9L2V0Yy94bWwvY2F0YWxvZwotCUNBVF9FTlRSWV9TVEFSVD0nPCEtLScKLQlDQVRfRU5UUllfRU5EPSctLT4nCi1maQotCi1BQ19DSEVDS19QUk9HKFhTTFRQUk9DLHhzbHRwcm9jLHhzbHRwcm9jLCkKLVhTTFRQUk9DX1dPUktTPW5vCi1pZiB0ZXN0IC1uICIkWFNMVFBST0MiOyB0aGVuCi0JQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHhzbHRwcm9jIHdvcmtzXSkKLQotCWlmIHRlc3QgLW4gIiRYTUxfQ0FUQUxPRyI7IHRoZW4KLQkJREJfRklMRT0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsL2N1cnJlbnQveGh0bWwvZG9jYm9vay54c2wiCi0JZWxzZQotCQlEQl9GSUxFPSIkRE9DQk9PS19ST09UL2RvY2Jvb2sueHNsIgotCWZpCi0KLQkkWFNMVFBST0MgJFhTTFRQUk9DX0ZMQUdTICREQl9GSUxFID4vZGV2L251bGwgMj4mMSA8PCBFTkQKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9J0lTTy04ODU5LTEnPz4KLTwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIiAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiPgotPGJvb2sgaWQ9InRlc3QiPgotPC9ib29rPgotRU5ECi0JaWYgdGVzdCAiJD8iID0gMDsgdGhlbgotCQlYU0xUUFJPQ19XT1JLUz15ZXMKLQlmaQotCUFDX01TR19SRVNVTFQoJFhTTFRQUk9DX1dPUktTKQotZmkKLUFNX0NPTkRJVElPTkFMKGhhdmVfeHNsdHByb2MsIHRlc3QgIiRYU0xUUFJPQ19XT1JLUyIgPSAieWVzIikKLQotQUNfU1VCU1QoWE1MX0NBVEFMT0cpCi1BQ19TVUJTVChYU0xUUFJPQ19GTEFHUykKLUFDX1NVQlNUKERPQ0JPT0tfUk9PVCkKLUFDX1NVQlNUKENBVF9FTlRSWV9TVEFSVCkKLUFDX1NVQlNUKENBVF9FTlRSWV9FTkQpCi1dKQotCi1kbmwgQVhfQ0ZMQUdTX09QVElPTlModmFyLW5hbWUsIG9wdGlvbikKLWRubCBhZGQgb3B0aW9uIHRvIHZhci1uYW1lIGlmICRDQyBzdXBwb3J0IGl0LgotQUNfREVGVU4oW0FYX0NGTEFHU19PUFRJT05dLCBbCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJHtDQ30gJDIgaXMgdW5kZXJzdG9vZF0pCi1BQ19MQU5HX1NBVkUKLUFDX0xBTkdfQwotU0FWRV9DRkxBR1M9JENGTEFHUwotQ0ZMQUdTPSQyCi1BQ19UUllfQ09NUElMRSgsWztdLEFDX01TR19SRVNVTFQoW3llc10pOyAkMT0iJHskMX0gJDIiLEFDX01TR19SRVNVTFQoW25vXSkpCi1DRkxBR1M9JFNBVkVfQ0ZMQUdTCi1BQ19MQU5HX1JFU1RPUkUKLV0pCi0KLQotZG5sIEFYX0NYWEZMQUdTX09QVElPTlModmFyLW5hbWUsIG9wdGlvbikKLWRubCBhZGQgb3B0aW9uIHRvIHZhci1uYW1lIGlmICRDWFggc3VwcG9ydCBpdC4KLUFDX0RFRlVOKFtBWF9DWFhGTEFHU19PUFRJT05dLCBbCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJHtDWFh9ICQyIGlzIHVuZGVyc3Rvb2RdKQotQUNfTEFOR19TQVZFCi1BQ19MQU5HX0NQTFVTUExVUwotU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKLUNYWEZMQUdTPSQyCi1BQ19UUllfQ09NUElMRSgsWztdLEFDX01TR19SRVNVTFQoW3llc10pOyAkMT0iJHskMX0gJDIiLEFDX01TR19SRVNVTFQoW25vXSkpCi1DWFhGTEFHUz0kU0FWRV9DWFhGTEFHUwotQUNfTEFOR19SRVNUT1JFCi1dKQotCi1kbmwgQVhfQ09QWV9JRl9DSEFOR0Uoc291cmNlLCBkZXN0KQotZG5sIGNvcHkgc291cmNlIHRvIGRlc3QgaWYgdGhleSBkb24ndCBjb21wYXJlIGVxdWFsbHkgb3IgaWYgZGVzdCBkb2Vzbid0IGV4aXN0Ci1BQ19ERUZVTihbQVhfQ09QWV9JRl9DSEFOR0VdLCBbCi1pZiB0ZXN0IC1yICQyOyB0aGVuCi0JaWYgY21wICQxICQyID4gL2Rldi9udWxsOyB0aGVuCi0JCWVjaG8gJDIgaXMgdW5jaGFuZ2VkCi0JZWxzZQotCQljcCAtZiAkMSAkMgotCWZpCi1lbHNlCi0JY3AgLWYgJDEgJDIKLWZpCi1dKQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvYXV0b21ha2UtZm9yZWlnbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjliYjZjNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hdXRvbWFrZS1mb3JlaWduLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotb3Byb2ZpbGUgZG9lc24ndCB3YW50IEdOVS1sZXZlbHMgb2YgYXV0b21ha2Ugc3RyaWN0bmVzcyBzbyB0ZWxsIGl0IHRvIGJlICJmb3JlaWduIi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA1NzQwNTg1Li5jZjZjMzE2IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNiArMTYgQEAgQUNfQ09ORklHX1NSQ0RJUihbbGlib3Avb3BfY29uZmlnLmhdKQotLUFNX0lOSVRfQVVUT01BS0UKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL211c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWRiNDA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL211c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1GaXggZ2xpYmMtaXNtcyBzbyB0aGF0IG9wcm9maWxlIGJ1aWxkcyB3aXRoIG11c2wuCi0KLVBhdGNoIHRha2VuIGZyb20gb3BlbndydCAoaHR0cHM6Ly9naXRodWIuY29tL29wZW53cnQtbWlycm9yL29wZW53cnQvYmxvYi9tYXN0ZXIvcGFja2FnZS9kZXZlbC9vcHJvZmlsZS9wYXRjaGVzLzEwMC1tdXNsLnBhdGNoKQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLS0tLSBhL3BlX3Byb2ZpbGluZy9vcGVyZi5jcHAKLSsrKyBiL3BlX3Byb2ZpbGluZy9vcGVyZi5jcHAKLUBAIC04NTcsMTEgKzg1NywxNCBAQCBzdGF0aWMgaW50IF9fZGVsZXRlX29sZF9wcmV2aW91c19zYW1wbGVfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGZsYWcgIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEZUVyAqZnR3YnVmIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQotIHsKLSsJaW50IGVycjsKLSsKLSAJaWYgKHJlbW92ZShmcGF0aCkpIHsKLSsJCWVyciA9IGVycm5vOwotIAkJcGVycm9yKCJzYW1wbGUgZGF0YSByZW1vdmFsIGVycm9yIik7Ci0tCQlyZXR1cm4gRlRXX1NUT1A7Ci0rCQlyZXR1cm4gZXJyOwotIAl9IGVsc2UgewotLQkJcmV0dXJuIEZUV19DT05USU5VRTsKLSsJCXJldHVybiAwOwotIAl9Ci0gfQotIAotQEAgLTg5Niw3ICs4OTksNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3NhbXBsZV9kYXRhKHZvaWQpCi0gCQlyZXR1cm47Ci0gCi0gCWlmICghb3BlcmZfb3B0aW9uczo6YXBwZW5kKSB7Ci0tICAgICAgICAgICAgICAgIGludCBmbGFncyA9IEZUV19ERVBUSCB8IEZUV19BQ1RJT05SRVRWQUw7Ci0rICAgICAgICAgICAgICAgIGludCBmbGFncyA9IEZUV19ERVBUSDsKLSAJCWVycm5vID0gMDsKLSAJCWlmIChuZnR3KHByZXZpb3VzX3NhbXBsZWRpci5jX3N0cigpLCBfX2RlbGV0ZV9vbGRfcHJldmlvdXNfc2FtcGxlX2RhdGEsIDMyLCBmbGFncykgIT0wICYmCi0gCQkJCWVycm5vICE9IEVOT0VOVCkgewotLS0tIGEvbGlib3Avb3BfZXZlbnRzLmMKLSsrKyBiL2xpYm9wL29wX2V2ZW50cy5jCi1AQCAtODMsNyArODMsNyBAQCBzdGF0aWMgaW50IHBhcnNlX2hleChjaGFyIGNvbnN0ICogc3RyKQotIHN0YXRpYyB1NjQgcGFyc2VfbG9uZ19oZXgoY2hhciBjb25zdCAqIHN0cikKLSB7Ci0gCXU2NCB2YWx1ZTsKLS0JaWYgKHNzY2FuZihzdHIsICIlTHgiLCAmdmFsdWUpICE9IDEpCi0rCWlmIChzc2NhbmYoc3RyLCAiMHglbGx4IiwgJnZhbHVlKSAhPSAxKQotIAkJcGFyc2VfZXJyb3IoImV4cGVjdGVkIGxvbmcgaGV4YWRlY2ltYWwgdmFsdWUiKTsKLSAKLSAJZmZsdXNoKHN0ZGVycik7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9vcHJvZmlsZS1jcm9zcy1jb21waWxlLXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvb3Byb2ZpbGUtY3Jvc3MtY29tcGlsZS10ZXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVmYTk1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9vcHJvZmlsZS1jcm9zcy1jb21waWxlLXRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotUHJldmVudCBydW5uaW5nIGNoZWNrIHRlc3RzIG9uIGhvc3QgaWYgY3Jvc3MgY29tcGlsaW5nCi0KLVRoaXMgcGF0Y2ggZW5hYmxlcyBydW5uaW5nIHRoZSAnbWFrZSBjaGVjaycgdGVzdHMgb24gdGhlIHRhcmdldAotaW4gYSBjcm9zcy1jb21waWxlZCBlbnZpcm9ubWVudC4gSWYgbm90IGNyb3NzLWNvbXBpbGluZywgdGhlbiAnbWFrZQotIGNoZWNrJyBidWlsZHMgYW5kIGV4ZWN1dGVzIHRoZSB0ZXN0czsgbm8gY2hhbmdlIGZyb20gdGhpcyBwYXRjaC4KLUluIGEgY3Jvc3MtY29tcGlsaW5nIGVudmlyb25tZW50LCB0aGUgbWFrZSB2YXJpYWJsZSBDUk9TU19DT01QSUxFIGlzCi1zZXQgd2hpY2ggYnlwYXNzZXMgYXNzaWdpbmcgdGVzdHMgdG8gdGhlIG1ha2VrZmlsZSB2YXJpYWJsZSBURVNUUy4KLVNpbmNlIFRFU1RTIGlzIGVtcHR5LCB0aGUgJ21ha2UgY2hlY2snIHByb2Nlc3MgbmV2ZXIgdHJpZXMgdG8gcnVuIHRoZQotdGVzdHMgb24gdGhlIGhvc3RzLiAgT24gdGhlIHRhcmdldCwgdGhlIHRlc3RzIG11c3QgYmUgcnVuIG1hbnVhbGx5LgotCi1BbHNvLCBpbiB0aGUgbGlidXRpbCsrIHRlc3RzLCBhIG1ha2VmaWxlIHZhcmlhYmxlIFNSQ0RJUiBpcyBwYXNzZWQgaW50bwotdGhlIGNvbXBpbGF0aW9uIHBoYXNlLCBwb2ludGluZyB0byB0aGUgcnVudGltZSBsb2NhdGlvbiBvZiB0aGUgdGVzdAotJ2ZpbGUtbWFuaXAtdGVzdHMnLiAgVGhlIG1lY2hhbmlzbSB1c2VkIGZvciBhIGhvc3QgdGVzdCwgYmFzZWQgb24KLSd0b3BkaXInIGRvZXNuJ3Qgd29yay4gIEluc3RlYWQsIGlmIENST1NTX0NPTVBJTEUgaXMgc2V0LCB0aGUKLW1ha2VmaWxlIHRha2VzIHRoZSBwYXRoIG9mIFNSQ0RJUiBmcm9tIHRoZSBidWlsZCBlbnZpcm9ubWVudCBhbmQgbm90Ci1mcm9tIGFuIGV4cHJlc3Npb24gYmFzZWQgb24gdGhlIGhvc3QgcGF0aCAndG9wZGlyJy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IERhdmUgTGVybmVyIDxkYXZlLmxlcm5lckB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA0MWVjZTY0Li5jZTVhMTZmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zOTIsNiArMzkyLDcgQEAgQUNfQVJHX0VOQUJMRShhY2NvdW50LWNoZWNrLAotIAllbmFibGVfYWNjb3VudF9jaGVjaz0kZW5hYmxldmFsLCBlbmFibGVfYWNjb3VudF9jaGVjaz15ZXMpCi0gCi0gQU1fQ09ORElUSU9OQUwoQ0hFQ0tfQUNDT1VOVCwgdGVzdCAieCRlbmFibGVfYWNjb3VudF9jaGVjayIgPSAieHllcyIpCi0rQU1fQ09ORElUSU9OQUwoQ1JPU1NfQ09NUElMRSwgdGVzdCAieCRjcm9zc19jb21waWxpbmciID0gInh5ZXMiKQotIAotIEFDX1NVQlNUKE9QX0NGTEFHUykKLSBBQ19TVUJTVChPUF9DWFhGTEFHUykKLWRpZmYgLS1naXQgYS9saWJkYi90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYmRiL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA4YTY5MDAzLi5kODIwMDkwIDEwMDY0NAotLS0tIGEvbGliZGIvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmRiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTMsNCArMTMsNiBAQCBjaGVja19QUk9HUkFNUyA9IGRiX3Rlc3QKLSBkYl90ZXN0X1NPVVJDRVMgPSBkYl90ZXN0LmMKLSBkYl90ZXN0X0xEQUREID0gLi4vbGlib2RiLmEgLi4vLi4vbGlidXRpbC9saWJ1dGlsLmEKLSAKLStpZiAhIENST1NTX0NPTVBJTEUKLSBURVNUUyA9ICR7Y2hlY2tfUFJPR1JBTVN9Ci0rZW5kaWYKLWRpZmYgLS1naXQgYS9saWJvcC90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYm9wL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA4YTc5ZWI1Li42ZDQxN2M0IDEwMDY0NAotLS0tIGEvbGlib3AvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYm9wL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMzMsNCArMzMsNiBAQCBsb2FkX2V2ZW50c19maWxlc190ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9Ci0gbWFuZ2xlX3Rlc3RzX1NPVVJDRVMgPSBtYW5nbGVfdGVzdHMuYwotIG1hbmdsZV90ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9Ci0gCi0raWYgISBDUk9TU19DT01QSUxFCi0gVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfSB1dGY4X2NoZWNrZXIuc2gKLStlbmRpZgotZGlmZiAtLWdpdCBhL2xpYnJlZ2V4L3Rlc3RzL01ha2VmaWxlLmFtIGIvbGlicmVnZXgvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDZmMTk4MzguLjFkMTc2ZjkgMTAwNjQ0Ci0tLS0gYS9saWJyZWdleC90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvbGlicmVnZXgvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xOCw0ICsxOCw2IEBAIGphdmFfdGVzdF9MREFERCA9IFwKLSAKLSBFWFRSQV9ESVNUID0gbWFuZ2xlZC1uYW1lLmluCi0gCi0raWYgISBDUk9TU19DT01QSUxFCi0gVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfQotK2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtIGIvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA1MWFmMDMxLi5hMDFlYTJkIDEwMDY0NAotLS0tIGEvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9saWJ1dGlsKysvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xLDcgKzEsOSBAQAotIAotIFJFQUxQQVRIPSByZWFkbGluayAtZgotIAotK2lmICEgQ1JPU1NfQ09NUElMRQotIFNSQ0RJUiA6PSAkKHNoZWxsICQoUkVBTFBBVEgpICQodG9wZGlyKS9saWJ1dGlsKysvdGVzdHMvICkKLStlbmRpZgotIAotIEFNX0NQUEZMQUdTID0gXAotIAktSSAke3RvcF9zcmNkaXJ9L2xpYnV0aWwrKyAtRCBTUkNESVI9IlwiJChTUkNESVIpL1wiIiBAT1BfQ1BQRkxBR1NACi1AQCAtNDYsNCArNDgsNiBAQCBjYWNoZWRfdmFsdWVfdGVzdHNfTERBREQgPSAke0NPTU1PTl9MSUJTfQotIHV0aWxpdHlfdGVzdHNfU09VUkNFUyA9IHV0aWxpdHlfdGVzdHMuY3BwCi0gdXRpbGl0eV90ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9Ci0gCi0raWYgISBDUk9TU19DT01QSUxFCi0gVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfQotK2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlidXRpbC90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYnV0aWwvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IGRmY2Q2ZWMuLmU4ODMxYjUgMTAwNjQ0Ci0tLS0gYS9saWJ1dGlsL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9saWJ1dGlsL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTIsNCArMTIsNiBAQCBmaWxlX3Rlc3RzX0xEQUREID0gLi4vbGlidXRpbC5hCi0gc3RyaW5nX3Rlc3RzX1NPVVJDRVMgPSBzdHJpbmdfdGVzdHMuYwotIHN0cmluZ190ZXN0c19MREFERCA9IC4uL2xpYnV0aWwuYQotIAotK2lmICEgQ1JPU1NfQ09NUElMRQotIFRFU1RTID0gJHtjaGVja19QUk9HUkFNU30KLStlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvcm9vdC1ob21lLWRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3Jvb3QtaG9tZS1kaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlYWY2YTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvcm9vdC1ob21lLWRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLW9wcm9maWxlOiBEZXRlcm1pbmUgdGhlIHJvb3QgaG9tZSBkaXJlY3RvcnkgZHluYW1pY2FsbHkKLQotVGhpcyBjb21taXQgZGV0ZWN0cyB0aGUgcm9vdCBob21lIGRpcmVjdG9yeSBkeW5hbWljYWxseSB3aXRoIGNoYW5nZXMgdG8KLXRoZSBvcHJvZmlsZSBndWkgYXBwIHNvdXJjZS4KLQotVGhlIGNvbW1pdCByZXBsYWNlcyBhbiBlYXJsaWVyIGZpeCB0aGF0IGRldGVjdGVkIGFuZCBhZGp1c3RlZCBhCi0nbm9uLXN0YW5kYXJkJyByb290IGhvbWUgZGlyZWN0b3J5IGF0IGJ1aWxkIHRpbWUuICBUaGUgYWR2YW50YWdlIG9mIHRoaXMKLXBhdGNoIGlzIHRoYXQgdGhlIG9wcm9maWxlIHRvb2xzIGFyZSBhZGp1c3RlZCB0byB0aGUgY3VycmVudCBydW4tdGltZQotcGF0aCB0byB+cm9vdCwgbm90IHRoZSBidWlsZCB0aW1lIHBhdGguCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IERhdmUgTGVybmVyIDxkYXZlLmxlcm5lckB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLmh0bWwKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcHJvZmlsZS0xLjAuMC5vcmlnL2RvYy9vcHJvZmlsZS5odG1sCTIwMTQtMTEtMDMgMTc6NTU6MzEuNTExMDM0ODU3ICswMDAwCi0rKysgb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLmh0bWwJMjAxNC0xMS0wMyAxNzo1NzoyNi40MTUwMzc5ODggKzAwMDAKLUBAIC0xNTYzLDggKzE1NjMsOCBAQAotIAkJPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+bXVzdDwvZW0+PC9zcGFuPiBzdG9wIGl0IGluIGEgY29udHJvbGxlZCBtYW5uZXIgaW4gb3JkZXIgdG8gcHJvY2VzcwotIAkJdGhlIHByb2ZpbGUgZGF0YSBpdCBoYXMgY29sbGVjdGVkLiAgVXNlIDxjb2RlIGNsYXNzPSJjb2RlIj5raWxsIC1TSUdJTlQgJmx0O29wZXJmLVBJRCZndDs8L2NvZGU+Ci0gCQlmb3IgdGhpcyBwdXJwb3NlLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHdoZW4gcnVubmluZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4KLS0JCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vcm9vdDwvY29kZT4gb3IgYSBzdWJkaXJlY3RvcnkKLS0JCW9mIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L3Jvb3Q8L2NvZGU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KLSsJCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5+cm9vdDwvY29kZT4gb3IgYSBzdWJkaXJlY3RvcnkKLSsJCW9mIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+fnJvb3Q8L2NvZGU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KLSAJCTwvcD4KLSAgICAgICAgICAgICAgIDwvZGQ+Ci0gICAgICAgICAgICAgICA8ZHQ+Ci1JbmRleDogb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLnhtbAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wcm9maWxlLTEuMC4wLm9yaWcvZG9jL29wcm9maWxlLnhtbAkyMDE0LTExLTAzIDE3OjU1OjMxLjUxNTAzNDg1NyArMDAwMAotKysrIG9wcm9maWxlLTEuMC4wL2RvYy9vcHJvZmlsZS54bWwJMjAxNC0xMS0wMyAxNzo1ODowMy43MTkwMzkwMDUgKzAwMDAKLUBAIC02NTQsOCArNjU0LDggQEAKLSAJCTxlbXBoYXNpcz5tdXN0PC9lbXBoYXNpcz4gc3RvcCBpdCBpbiBhIGNvbnRyb2xsZWQgbWFubmVyIGluIG9yZGVyIHRvIHByb2Nlc3MKLSAJCXRoZSBwcm9maWxlIGRhdGEgaXQgaGFzIGNvbGxlY3RlZC4gIFVzZSA8Y29kZT5raWxsIC1TSUdJTlQgJmx0O29wZXJmLVBJRCZndDs8L2NvZGU+Ci0gCQlmb3IgdGhpcyBwdXJwb3NlLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHdoZW4gcnVubmluZyA8Y29tbWFuZD5vcGVyZjwvY29tbWFuZD4KLS0JCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGZpbGVuYW1lPi9yb290PC9maWxlbmFtZT4gb3IgYSBzdWJkaXJlY3RvcnkKLS0JCW9mIDxmaWxlbmFtZT4vcm9vdDwvZmlsZW5hbWU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KLSsJCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGZpbGVuYW1lPn5yb290PC9maWxlbmFtZT4gb3IgYSBzdWJkaXJlY3RvcnkKLSsJCW9mIDxmaWxlbmFtZT5+cm9vdDwvZmlsZW5hbWU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KLSAJCTwvcGFyYT48L2xpc3RpdGVtPgotIAk8L3Zhcmxpc3RlbnRyeT4KLSAJPHZhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgxNGJlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9ydW4tcHRlc3QKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIS9iaW4vc2gKLQotc2F2ZWRfZGlyPSRQV0QKLWZvciBkaXIgaW4gKi90ZXN0cyA7IGRvCi0JY2QgJGRpcgotCWZvciBhdGVzdCBpbiAqIDsgZG8KLQkJaWYgWyBcKCAteCAkYXRlc3QgXCkgLWEgXCggLWYgJGF0ZXN0IFwpIF0gOyB0aGVuCi0JCQkuLyRhdGVzdCA+ICR7YXRlc3R9LnN0ZG91dCAyPiAke2F0ZXN0fS5zdGRlcnIKLQkJCWlmIFsgJD8gPSAwIF0gOyB0aGVuCi0JCQkJZWNobyAiUEFTUzogJGRpciAkYXRlc3QiCi0JCQkJcm0gJHthdGVzdH0uc3Rkb3V0ICR7YXRlc3R9LnN0ZGVycgotCQkJZWxzZQotCQkJCWVjaG8gIkZBSUw6ICR7ZGlyfS8ke2F0ZXN0fSIKLQkJCWZpCi0JCWZpCi0JZG9uZQotCWNkICRzYXZlZF9kaXIKLWRvbmUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGVfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJhOTRhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgb3Byb2ZpbGUuaW5jCi0KLURFUEVORFMgKz0gInZpcnR1YWwva2VybmVsIgotREVQRU5EU19hcHBlbmRfcG93ZXJwYzY0ID0gIiBsaWJwZm00IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjQ4YzRjMDY5Zjk0NzZmNDI3ZmE3MTk1NTYzZjk4NjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2Y3NTlhNmRlMWE2MDMzZDVkZmM5M2JkYTEyOWE5ZjJlMTI4YWVjYzQyMzhjYzY1N2ZlYjA4MDFkMWIwMzY2YyIKLQotUyA9ICIke1dPUktESVJ9L29wcm9maWxlLSR7UFZ9IgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKaW5kZXggYjc5Yjk3My4uNTFmNTU5NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgpAQCAtMjIsMTEgKzIyLDE0IEBACiBQQUNLQUdFQ09ORklHW3N5c3RlbXRhcF0gPSAiLE5PX1NEVD0xLHN5c3RlbXRhcCIKIFBBQ0tBR0VDT05GSUdbanZtdGldID0gIixOT19KVk1UST0xIgogCisjIGxpYmF1ZGl0IHN1cHBvcnQgd291bGQgbmVlZCBzY3JpcHRpbmcgdG8gYmUgZW5hYmxlZAorUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLE5PX0xJQkFVRElUPTEsYXVkaXQiCisKIERFUEVORFMgPSAiIFwKICAgICB2aXJ0dWFsLyR7TUxQUkVGSVh9bGliYyBcCiAgICAgJHtNTFBSRUZJWH1lbGZ1dGlscyBcCiAgICAgJHtNTFBSRUZJWH1iaW51dGlscyBcCi0gICAgYmlzb24gZmxleCB4eiBcCisgICAgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIHh6IFwKICAgICB4bWx0by1uYXRpdmUgXAogICAgIGFzY2lpZG9jLW5hdGl2ZSBcCiAiCkBAIC0zNSw5ICszOCwxMCBAQAogCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL3BlcmYiCiAKLWluaGVyaXQgbGludXgta2VybmVsLWJhc2Uga2VybmVsLWFyY2ggcHl0aG9ubmF0aXZlCitpbmhlcml0IGxpbnV4LWtlcm5lbC1iYXNlIGtlcm5lbC1hcmNoCiAKICMgbmVlZGVkIGZvciBidWlsZGluZyB0aGUgdG9vbHMvcGVyZiBQeXRob24gYmluZGluZ3MKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3B5dGhvbm5hdGl2ZScsICcnLCBkKX0KIGluaGVyaXQgcHl0aG9uLWRpcgogZXhwb3J0IFBZVEhPTl9TSVRFUEFDS0FHRVNfRElSCiAKQEAgLTQ3LDcgKzUxLDggQEAKIGRvX3BvcHVsYXRlX2xpY1tkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fcGF0Y2giCiAKICMgbmVlZGVkIGZvciBidWlsZGluZyB0aGUgdG9vbHMvcGVyZiBQZXJsIGJpbmRpbmcKLWluaGVyaXQgcGVybG5hdGl2ZSBjcGFuLWJhc2UKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3BlcmxuYXRpdmUnLCAnJywgZCl9Citpbmhlcml0IGNwYW4tYmFzZQogIyBFbnYgdmFyIHdoaWNoIHRlbGxzIHBlcmwgaWYgaXQgc2hvdWxkIHVzZSBob3N0IChubykgb3IgdGFyZ2V0ICh5ZXMpIHNldHRpbmdzCiBleHBvcnQgUEVSTENPTkZJR1RBUkdFVCA9ICIke0Bpc190YXJnZXQoZCl9IgogZXhwb3J0IFBFUkxfSU5DID0gIiR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3BlcmwvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0vQ09SRSIKQEAgLTU2LDcgKzYxLDcgQEAKIAogaW5oZXJpdCBrZXJuZWxzcmMKIAotQiA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfSIKK1MgPSAiJHtXT1JLRElSfS8ke0JQfSIKIFNQRFhfUyA9ICIke1N9L3Rvb2xzL3BlcmYiCiAKICMgVGhlIExERkxBR1MgaXMgcmVxdWlyZWQgb3Igc29tZSBvbGQga2VybmVscyBmYWlscyBkdWUgbWlzc2luZwpAQCAtOTIsNiArOTcsMTcgQEAKICAgICAnaW5mb2Rpcj0ke0Bvcy5wYXRoLnJlbHBhdGgoaW5mb2RpciwgcHJlZml4KX0nIFwKICIKIAorUEVSRl9TUkMgPz0gIk1ha2VmaWxlIFwKKyAgICAgICAgICAgICBpbmNsdWRlIFwKKyAgICAgICAgICAgICB0b29scy9hcmNoIFwKKyAgICAgICAgICAgICB0b29scy9idWlsZCBcCisgICAgICAgICAgICAgdG9vbHMvaW5jbHVkZSBcCisgICAgICAgICAgICAgdG9vbHMvbGliIFwKKyAgICAgICAgICAgICB0b29scy9NYWtlZmlsZSBcCisgICAgICAgICAgICAgdG9vbHMvcGVyZiBcCisgICAgICAgICAgICAgdG9vbHMvc2NyaXB0cyBcCisiCisKIFBFUkZfRVhUUkFfTERGTEFHUyA9ICIiCiAKICMgTUlQUyBOMzIKQEAgLTExNCwxMSArMTMwLDIyIEBACiAJZmkKIH0KIAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICMgRml4IGZvciByZWJ1aWxkaW5nCi0gICAgcm0gLXJmICR7Qn0vCi0gICAgbWtkaXIgLXAgJHtCfS8KK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImNvcHlfcGVyZl9zb3VyY2VfZnJvbV9rZXJuZWwiCitweXRob24gY29weV9wZXJmX3NvdXJjZV9mcm9tX2tlcm5lbCgpIHsKKyAgICBzb3VyY2VzID0gKGQuZ2V0VmFyKCJQRVJGX1NSQyIpIG9yICIiKS5zcGxpdCgpCisgICAgc3JjX2RpciA9IGQuZ2V0VmFyKCJTVEFHSU5HX0tFUk5FTF9ESVIiKQorICAgIGRlc3RfZGlyID0gZC5nZXRWYXIoIlMiKQorICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0X2RpcikKKyAgICBmb3IgcyBpbiBzb3VyY2VzOgorICAgICAgICBzcmMgPSBvZS5wYXRoLmpvaW4oc3JjX2RpciwgcykKKyAgICAgICAgZGVzdCA9IG9lLnBhdGguam9pbihkZXN0X2RpciwgcykKKyAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgorICAgICAgICAgICAgb2UucGF0aC5jb3B5aGFyZGxpbmt0cmVlKHNyYywgZGVzdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKHNyYywgZGVzdCkKK30KIAorZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogICAgICMgSWYgYnVpbGRpbmcgYSBtdWx0bGliIGJhc2VkIHBlcmYsIHRoZSBpbmNvcnJlY3QgbGlicmFyeSBwYXRoIHdpbGwgYmUKICAgICAjIGRldGVjdGVkIGJ5IHBlcmYsIHNpbmNlIGl0IHRyaWdnZXJzIHZpYTogaWZlcSAoJChBUkNIKSx4ODZfNjQpLiBJbiBhIDMyIGJpdAogICAgICMgYnVpbGQsIHdpdGggYSA2NCBiaXQgbXVsdGlsaWIsIHRoZSBhcmNoIHdvbid0IG1hdGNoIGFuZCB0aGUgZGV0ZWN0aW9uIG9mIGEgCkBAIC0yMTQsMjAgKzI0MSwyMSBAQAogUkRFUEVORFNfJHtQTn0gKz0gImVsZnV0aWxzIGJhc2giCiBSREVQRU5EU18ke1BOfS1kb2MgKz0gIm1hbiIKIFJERVBFTkRTXyR7UE59LWFyY2hpdmUgPSsgImJhc2giCi1SREVQRU5EU18ke1BOfS1weXRob24gPSsgImJhc2ggcHl0aG9uIHB5dGhvbi1tb2R1bGVzIgorUkRFUEVORFNfJHtQTn0tcHl0aG9uID0rICJiYXNoIHB5dGhvbiBweXRob24tbW9kdWxlcyAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhdWRpdCcsICdhdWRpdC1weXRob24nLCAnJywgZCl9IgogUkRFUEVORFNfJHtQTn0tcGVybCA9KyAiYmFzaCBwZXJsIHBlcmwtbW9kdWxlcyIKIFJERVBFTkRTXyR7UE59LXRlc3RzID0rICJweXRob24iCiAKIFJTVUdHRVNUU19TQ1JJUFRJTkcgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJyR7UE59LXBlcmwgJHtQTn0tcHl0aG9uJywgJycsZCl9IgogUlNVR0dFU1RTXyR7UE59ICs9ICIke1BOfS1hcmNoaXZlICR7UE59LXRlc3RzICR7UlNVR0dFU1RTX1NDUklQVElOR30iCiAKLSNGSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfS9wZXJmLWNvcmUgJHtleGVjX3ByZWZpeH0vbGliZXhlYy9wZXJmLWNvcmUgL3Vzci9saWI2NC90cmFjZWV2ZW50ICR7bGliZGlyfS90cmFjZWV2ZW50IgogRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0vcGVyZi1jb3JlICR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMvcGVyZi1jb3JlICR7bGliZGlyfS90cmFjZWV2ZW50IgogRklMRVNfJHtQTn0tYXJjaGl2ZSA9ICIke2xpYmRpcn0vcGVyZi9wZXJmLWNvcmUvcGVyZi1hcmNoaXZlIgogRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtsaWJkaXJ9L3BlcmYvcGVyZi1jb3JlL3Rlc3RzICR7bGliZXhlY2Rpcn0vcGVyZi1jb3JlL3Rlc3RzIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9wZXJmL3BlcmYtY29yZS9zY3JpcHRzL3B5dGhvbiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLUZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtsaWJleGVjZGlyfS9wZXJmLWNvcmUvc2NyaXB0cy9weXRob24vKiIKLUZJTEVTXyR7UE59LXBlcmwgPSAiJHtsaWJkaXJ9L3BlcmYvcGVyZi1jb3JlL3NjcmlwdHMvcGVybCIKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vcGVyZi1jb3JlL3NjcmlwdHMvcHl0aG9uIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tcGVybCA9ICIke2xpYmV4ZWNkaXJ9L3BlcmYtY29yZS9zY3JpcHRzL3BlcmwiCiAKIAogSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUPSIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3AvMDAwMS1pbmNsdWRlLXJxdWlyZWQtaGVhZGVycy1mb3ItdHlwZWRlZnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcC8wMDAxLWluY2x1ZGUtcnF1aXJlZC1oZWFkZXJzLWZvci10eXBlZGVmcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZkNjMxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcC8wMDAxLWluY2x1ZGUtcnF1aXJlZC1oZWFkZXJzLWZvci10eXBlZGVmcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gMDg1NmQ4MTQ1ZDE4N2E3ZTVhNDk2MjUyNDdhYmU0M2ExM2Y5NWFjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE1IFNlcCAyMDE1IDE5OjM2OjI4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgcnF1aXJlZCBoZWFkZXJzIGZvciB0eXBlZGVmcwotCi10aW1ldmFsIHN0cnVjdCBuZWVkcyB0byBpbmNsdWRlIHN5cy90aW1lLmggYW5kIHNwcmludGYoKSB1c2FnZSByZXF1aXJlcwotdG8gaW5jbHVkZSBzdGRpby5oIGhlYWRlcnMgZnJvbSBzeXN0ZW0KLQotRml4ZXMKLXNyYy9wZXJmL3BlcmZfYnVuZGxlLmNwcDoxNDE6MjogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ3NwcmludGYnOyBkaWQgeW91IG1lYW4gJ3Zzd3ByaW50Zic/Ci1zcmMvZGV2aWNlcy9kZXZmcmVxLmg6MzU6MTg6IGVycm9yOiBmaWVsZCBoYXMgaW5jb21wbGV0ZSB0eXBlICdzdHJ1Y3QgdGltZXZhbCcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvZGV2aWNlcy9kZXZmcmVxLmggICAgfCAxICsKLSBzcmMvcGVyZi9wZXJmX2J1bmRsZS5jcHAgfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2RldmljZXMvZGV2ZnJlcS5oIGIvc3JjL2RldmljZXMvZGV2ZnJlcS5oCi1pbmRleCAxNmE2MGZiLi40YmVkZTdjIDEwMDY0NAotLS0tIGEvc3JjL2RldmljZXMvZGV2ZnJlcS5oCi0rKysgYi9zcmMvZGV2aWNlcy9kZXZmcmVxLmgKLUBAIC0yNSw2ICsyNSw3IEBACi0gI2lmbmRlZiBfSU5DTFVERV9HVUFSRF9ERVZGUkVRX0gKLSAjZGVmaW5lIF9JTkNMVURFX0dVQVJEX0RFVkZSRVFfSAotIAotKyNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlICJkZXZpY2UuaCIKLSAjaW5jbHVkZSAiLi4vcGFyYW1ldGVycy9wYXJhbWV0ZXJzLmgiCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL3BlcmYvcGVyZl9idW5kbGUuY3BwIGIvc3JjL3BlcmYvcGVyZl9idW5kbGUuY3BwCi1pbmRleCBjZjFhZTExLi4yMzJmODk0IDEwMDY0NAotLS0tIGEvc3JjL3BlcmYvcGVyZl9idW5kbGUuY3BwCi0rKysgYi9zcmMvcGVyZi9wZXJmX2J1bmRsZS5jcHAKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2luY2x1ZGUgPGFsZ29yaXRobT4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLS0tIAotMi41LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDdhM2U3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUG93ZXIgdXNhZ2UgdG9vbCIKLURFU0NSSVBUSU9OID0gIkxpbnV4IHRvb2wgdG8gZGlhZ25vc2UgaXNzdWVzIHdpdGggcG93ZXIgY29uc3VtcHRpb24gYW5kIHBvd2VyIG1hbmFnZW1lbnQuIgotSE9NRVBBR0UgPSAiaHR0cDovLzAxLm9yZy9wb3dlcnRvcC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5sZXNzd2F0dHMub3JnLyIKLURFUEVORFMgPSAibmN1cnNlcyBsaWJubCBwY2l1dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vMDEub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvZG93bmxvYWRzL3Bvd2VydG9wL3Bvd2VydG9wLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtcnF1aXJlZC1oZWFkZXJzLWZvci10eXBlZGVmcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNTVmZWRiNjkyMDNlNDgwODAxYjE4YmQ3Yjg4NjI0MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhODdiNTYzZjczMTA2YmFiZmEzZTc0ZGNmOTJmMjUyOTM4YzA2MWUzMDlhY2UyMGEzNjEzNThiYmZhNTc5YzVhIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly8wMS5vcmcvcG93ZXJ0b3AvZG93bmxvYWRzIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi0jIHdlIGRvIG5vdCB3YW50IGxpYm5jdXJzZXN3IGlmIHdlIGNhbgotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBjb25maWd1cmUuYWMgY2hlY2tzIGZvciBkZWx3aW4oKSBpbiAibmN1cnNlc3cgbmN1cnNlcyIgc28gbGV0J3MgZHJvcCBmaXJzdCBvbmUKLSAgICBzZWQgLWkgLWUgInMvbmN1cnNlc3cvL2ciICR7U30vY29uZmlndXJlLmFjCi0gICAgbWtkaXIgLXAgJHtCfS9zcmMvdHVuaW5nLwotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLUFMVEVSTkFUSVZFXyR7UE59ID0gInBvd2VydG9wIgotQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2VydG9wXSA9ICIke3NiaW5kaXJ9L3Bvd2VydG9wIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2VydG9wXSA9ICIke3NiaW5kaXJ9L3Bvd2VydG9wIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZTU0NDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjkuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJQb3dlciB1c2FnZSB0b29sIgorREVTQ1JJUFRJT04gPSAiTGludXggdG9vbCB0byBkaWFnbm9zZSBpc3N1ZXMgd2l0aCBwb3dlciBjb25zdW1wdGlvbiBhbmQgcG93ZXIgbWFuYWdlbWVudC4iCitIT01FUEFHRSA9ICJodHRwOi8vMDEub3JnL3Bvd2VydG9wLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxlc3N3YXR0cy5vcmcvIgorREVQRU5EUyA9ICJuY3Vyc2VzIGxpYm5sIHBjaXV0aWxzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIgorCitTUkNfVVJJID0gImh0dHA6Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9kb3dubG9hZHMvcG93ZXJ0b3AvcG93ZXJ0b3AtdiR7UFZ9LnRhci5neiBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ODM1MThjNWM0NDM0YzZlOWI5YzU4YzM5MjA5NTBiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYTdmYjdkOGU5YTAwZjA1ZTdkOGE3YTI4NjZkODU5Mjk3NDFlMGQwM2E1YmY0MGNhYjIyZDIwMjFjOTU5MjUwIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly8wMS5vcmcvcG93ZXJ0b3AvZG93bmxvYWRzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicG93ZXJ0b3AtW3ZdPyg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCitTID0gIiR7V09SS0RJUn0vJHtCUE59LXYke1BWfSIKKworIyB3ZSBkbyBub3Qgd2FudCBsaWJuY3Vyc2VzdyBpZiB3ZSBjYW4KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgY29uZmlndXJlLmFjIGNoZWNrcyBmb3IgZGVsd2luKCkgaW4gIm5jdXJzZXN3IG5jdXJzZXMiIHNvIGxldCdzIGRyb3AgZmlyc3Qgb25lCisgICAgc2VkIC1pIC1lICJzL25jdXJzZXN3Ly9nIiAke1N9L2NvbmZpZ3VyZS5hYworICAgIG1rZGlyIC1wICR7Qn0vc3JjL3R1bmluZy8KK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCitBTFRFUk5BVElWRV8ke1BOfSA9ICJwb3dlcnRvcCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtwb3dlcnRvcF0gPSAiJHtzYmluZGlyfS9wb3dlcnRvcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb3dlcnRvcF0gPSAiJHtzYmluZGlyfS9wb3dlcnRvcCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Bdm9pZC1idWlsZGluZy1kb2NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLUF2b2lkLWJ1aWxkaW5nLWRvY3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMmYzNTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLUF2b2lkLWJ1aWxkaW5nLWRvY3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDI3ZGY1MjFjNjhlN2M4YjViMDUwZGFiMTVmNDBhYTE1ZmQwMzYyM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCA0IE1heSAyMDE2IDE0OjU4OjI0ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIGJ1aWxkaW5nIGRvY3MKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gfCAyICstCi0gbTQveWVscC5tNCAgfCA2IC0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBiOTE5YTNmLi4zYTM4NTFkIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMSw0ICsxLDQgQEAKLS1TVUJESVJTID0gZGFlbW9uIGRhdGEgaGVscCBsaWIgcG8gc3JjIHRvb2xzIHRlc3RzCi0rU1VCRElSUyA9IGRhZW1vbiBkYXRhIGxpYiBwbyBzcmMgdG9vbHMgdGVzdHMKLSAKLSBFWFRSQV9ESVNUID0gQVVUSE9SUyB0YXAtdGVzdCBDT1BZSU5HLmdwbC0yCi0gCi1kaWZmIC0tZ2l0IGEvbTQveWVscC5tNCBiL200L3llbHAubTQKLWluZGV4IDVkYjg0N2YuLjFiNmVkZTQgMTAwNjQ0Ci0tLS0gYS9tNC95ZWxwLm00Ci0rKysgYi9tNC95ZWxwLm00Ci1AQCAtMjcsMTIgKzI3LDYgQEAgQUNfQVJHX1dJVEgoW2hlbHAtZGlyXSwKLSBIRUxQX0RJUj0iJHdpdGhfaGVscF9kaXIiCi0gQUNfU1VCU1QoSEVMUF9ESVIpCi0gCi0tQUNfQVJHX1ZBUihbSVRTVE9PTF0sIFtQYXRoIHRvIHRoZSBgaXRzdG9vbGAgY29tbWFuZF0pCi0tQUNfQ0hFQ0tfUFJPRyhbSVRTVE9PTF0sIFtpdHN0b29sXSwgW2l0c3Rvb2xdKQotLWlmIHRlc3QgeCIkSVRTVE9PTCIgPSB4OyB0aGVuCi0tICBBQ19NU0dfRVJST1IoW2l0c3Rvb2wgbm90IGZvdW5kXSkKLS1maQotLQotIEFDX0FSR19WQVIoW1hNTExJTlRdLCBbUGF0aCB0byB0aGUgYHhtbGxpbnRgIGNvbW1hbmRdKQotIEFDX0NIRUNLX1BST0coW1hNTExJTlRdLCBbeG1sbGludF0sIFt4bWxsaW50XSkKLSBpZiB0ZXN0IHgiJFhNTExJTlQiID0geDsgdGhlbgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRGlzYWJsZS1jaGVjay1mb3ItcG9sa2l0LWZvci1VSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDg1MjMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA3NjVkNTc4MTQ1ZTMxZGRjOTQ5NWFkZmFiODAzN2FkZTMzYzZhOWNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFdlZCwgNCBNYXkgMjAxNiAxMDo1OTozNiArMDMwMAotU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIGNoZWNrIGZvciBwb2xraXQgZm9yIFVJCi0KLVRoZSBjaGVjayBpcyBub3QgdGVjaG5pY2FsbHkgcmVxdWlyZWQ6IHN5c3Byb2YganVzdCBuZWVkcwotdG8gYmUgYWJsZSB0byBhY2Nlc3Mgc3lzdGVtIHBlcmYgY291bnRlcnMgYXQgcnVudGltZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODU1OTU5Ny4uZWNmOTNhZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTMxLDggKzEzMSw4IEBAIEFTX0lGKFt0ZXN0ICIkZW5hYmxlX2d0ayIgPSBhdXRvXSxbCi0gCUFTX0lGKFt0ZXN0ICIkaGF2ZV9ndGsiID0gInllcyIgJiYgdGVzdCAiJGhhdmVfcG9sa2l0IiA9ICJ5ZXMiXSxbZW5hYmxlX2d0az15ZXNdLFtlbmFibGVfZ3RrPW5vXSkKLSBdKQotIEFTX0lGKFt0ZXN0ICIkZW5hYmxlX2d0ayIgPSAieWVzIl0sWwotLQlBU19JRihbdGVzdCAiJGhhdmVfZ3RrIiA9ICJ5ZXMiICYmIHRlc3QgIiRoYXZlX3BvbGtpdCIgPSAieWVzIl0sW10sWwotLQkJQUNfTVNHX0VSUk9SKFstLWVuYWJsZS1ndGsgcmVxdWlyZXMgZ3RrKy0zLjAgPj0gZ3RrX3JlcXVpcmVkX3ZlcnNpb24gYW5kIHBvbGtpdC1nb2JqZWN0LTFdKQotKwlBU19JRihbdGVzdCAiJGhhdmVfZ3RrIiA9ICJ5ZXMiXSxbXSxbCi0rCQlBQ19NU0dfRVJST1IoWy0tZW5hYmxlLWd0ayByZXF1aXJlcyBndGsrLTMuMCA+PSBndGtfcmVxdWlyZWRfdmVyc2lvbl0pCi0gCV0pCi0gXSkKLSBBTV9DT05ESVRJT05BTChFTkFCTEVfR1RLLCB0ZXN0ICIkZW5hYmxlX2d0ayIgPSAieWVzIikKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjhmZGNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBjMjQ5NWE0YzA0MmU2YTY3NWRhNjliYWIyMGNjMzY2OTM5MWU4ZTJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDE4OjM4OjI2ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBEbyBub3QgYnVpbGQgYW55dGhpbmcgaW4gaGVscC8gYXMgaXQgcmVxdWlyZXMgaXRzdG9vbC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBtZXNvbi5idWlsZCB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA0YWMzOTM0Li44YzQzNjlhIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMTE2LDcgKzExNiw2IEBAIHN1YmRpcigndG9vbHMnKQorIHN1YmRpcigndGVzdHMnKQorIAorIHN1YmRpcignZGF0YScpCistc3ViZGlyKCdoZWxwJykKKyBzdWJkaXIoJ3BvJykKKyAKKyBtZXNvbi5hZGRfaW5zdGFsbF9zY3JpcHQoJ2J1aWxkLWF1eC9tZXNvbl9wb3N0X2luc3RhbGwuc2gnKQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXBvbGtpdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1wb2xraXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1OGQ5OTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXBvbGtpdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gMmI0MDA1ZDcyZDMzOTM5MzNhNzkxNGJlMTAyZWE2NTUwNWM1MzZjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDIxIEp1bCAyMDE2IDExOjUzOjMxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQWRkIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBwb2xraXQKLQotQ2hhbmdlcyB0aGUgY29uZmlndXJlIGJlaGF2aW91ciBmcm9tIGF1dG9kZXRlY3RpbmcgdGhlIHBvbGtpdCBieSBkZWZhdWx0Ci10byBoYXZpbmcgYW4gb3B0aW9uIHRvIGRpc2FibGUgaXQgZXhwbGljaXRseQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA4ICsrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyMjQ2ZDVhLi4zZDNmZTBmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMDQsMTAgKzEwNCwxOCBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhHVEssCi0gICAgICAgICAgICAgICAgICAgW2d0aystMy4wID49IGd0a19yZXF1aXJlZF92ZXJzaW9uXSwKLSAgICAgICAgICAgICAgICAgICBbaGF2ZV9ndGs9eWVzXSwKLSAgICAgICAgICAgICAgICAgICBbaGF2ZV9ndGs9bm9dKQotK0FDX0FSR19FTkFCTEUoW3BvbGtpdF0sCi0rICAgICAgICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtcG9sa2l0XSwgW0RvIG5vdCB1c2UgUG9sa2l0XSksCi0rICAgICAgICAgICAgICAgICAgIFtlbmFibGVfcG9sa2l0PSIkZW5hYmxldmFsIl0sIFtlbmFibGVfcG9sa2l0PSJ5ZXMiXSkKLSsKLStBU19JRihbdGVzdCAieCRlbmFibGVfcG9sa2l0IiA9ICJ4eWVzIl0sIFsKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhQT0xLSVQsCi0gICAgICAgICAgICAgICAgICAgW3BvbGtpdC1nb2JqZWN0LTFdLAotICAgICAgICAgICAgICAgICAgIFtoYXZlX3BvbGtpdD15ZXNdLAotICAgICAgICAgICAgICAgICAgIFtoYXZlX3BvbGtpdD1ub10pCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotK0FNX0NPTkRJVElPTkFMKFtIQVZFX1BPTEtJVF0sIFt0ZXN0ICJ4JGVuYWJsZV9wb2xraXQiID0gInh5ZXMiXSkKLSsKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhTWVNURU1ELAotICAgICAgICAgICAgICAgICAgIFtsaWJzeXN0ZW1kID49IHN5c3RlbWRfcmVxdWlyZWRfdmVyc2lvbl0sCi0gICAgICAgICAgICAgICAgICAgW2hhdmVfc3lzdGVtZD15ZXNdLAotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlhMjdiZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0td2lkZSBQZXJmb3JtYW5jZSBQcm9maWxlciBmb3IgTGludXgiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnN5c3Byb2YuY29tIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3AtYXBwbGljYXRpb24uYztlbmRsaW5lPTE3O21kNT00MGU1NTU3N2VmMTIyYzg4ZmUyMDA1MmFjZGE2NDg3NSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1wb2xraXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQXZvaWQtYnVpbGRpbmctZG9jcy5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMmI0NGFlMWQ4Y2Q4OTk0MTcyOTRhOWM0NTA5ZDc4NzAiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwNTRlZWJlMmFmYjZmZTNjMDZhYzhjNDZiYzA0NWM0MmY2NzVkNGZkNjRlNmYxNmNiYzYwMmQ1YzdjZTI3YmVjIgotCi1BVVRPVE9PTFNfQVVYRElSID0gIiR7U30vYnVpbGQtYXV4IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtY29tcGlsZS13YXJuaW5ncyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnJHtHVEszRElTVFJPRkVBVFVSRVN9JywgJ2d0aycsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLC0tZGlzYWJsZS1ndGssZ3RrKzMiCi1QQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LC0tZGlzYWJsZS1wb2xraXQscG9sa2l0IGRidXMiCi0KLVNPTElCUyA9ICIuc28iCi1GSUxFU19TT0xJQlNERVYgPSAiIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3N5c3Byb2YyLnNlcnZpY2UnLCAnJywgZCl9IgotCi0jIFdlIGRvIG5vdCB5ZXQgd29yayBmb3IgYWFyY2g2NC4KLUNPTVBBVElCTEVfSE9TVCA9ICJeKD8hYWFyY2g2NCkuKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjI2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ODliNTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNi4xLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiU3lzdGVtLXdpZGUgUGVyZm9ybWFuY2UgUHJvZmlsZXIgZm9yIExpbnV4IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zeXNwcm9mLmNvbSIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NwLWFwcGxpY2F0aW9uLmM7ZW5kbGluZT0xNzttZDU9NDBlNTU1NzdlZjEyMmM4OGZlMjAwNTJhY2RhNjQ4NzUiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgbGlieG1sMi1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2ZjlmOTQ3OTYwYmE3OWJiMTI2OWQ4ZWU0OWI3ZGI3OCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQ4YjlkNWMyMjQ2Njk2ZTRhMzc3NmEzMTI3MzFkYzdjMDE0ZmJkMzM0NzhiYjE0ZDU1MTJjNmYxZjM1YTNiMTEiCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vZGVmaW5lLU5UX0dOVV9CVUlMRF9JRC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgJyR7R1RLM0RJU1RST0ZFQVRVUkVTfScsICdndGsnLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tndGtdID0gIi1EZW5hYmxlX2d0az10cnVlLC1EZW5hYmxlX2d0az1mYWxzZSxndGsrMyIKK1BBQ0tBR0VDT05GSUdbc3lzcHJvZmRdID0gIi1Ed2l0aF9zeXNwcm9mZD1idW5kbGVkLC1Ed2l0aF9zeXNwcm9mZD1ub25lLHBvbGtpdCIKKworU09MSUJTID0gIi5zbyIKK0ZJTEVTX1NPTElCU0RFViA9ICIiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXNwcm9mZCcsICdzeXNwcm9mMi5zZXJ2aWNlJywgJycsIGQpfSIKKworIyBXZSBkbyBub3QgeWV0IHdvcmsgZm9yIGFhcmNoNjQuCitDT01QQVRJQkxFX0hPU1QgPSAiXig/IWFhcmNoNjQpLioiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kIFwKKyAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1BZGRlZC1hLWNvdXBsZS1vZi1zbWFsbC1zeXNyb290LWZpeGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUFkZGVkLWEtY291cGxlLW9mLXNtYWxsLXN5c3Jvb3QtZml4ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjZWI1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1BZGRlZC1hLWNvdXBsZS1vZi1zbWFsbC1zeXNyb290LWZpeGVzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYTcxNDY1ODcyNzIwNmQyYTk4YTcxOTRiN2U2ZDI5ZGJkM2UyN2I4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhdmlkIFNtaXRoIDxkc21pdGhAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMTkgTWFyIDIwMTggMTY6NTA6MDUgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkZWQgYSBjb3VwbGUgb2Ygc21hbGwgc3lzcm9vdCBmaXhlcy4KKworKiB0YXBzZXRzLmN4eCAoZHdhcmZfYnVpbGRlcjo6YnVpbGQpOiBGaXggY29tbWl0IDRmZmVjZGRmNS4KKyAgKHBhdGhfcmVtb3ZlX3N5c3Jvb3QpOiBGaXggZXh0cmEgJy8nIHByZXNlbnQgYXQgc3RhcnQgb2YgcGF0aHMuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgdGFwc2V0cy5jeHggfCAxMCArKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC90YXBzZXRzLmN4eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3RhcHNldHMuY3h4CisrKysgZ2l0L3RhcHNldHMuY3h4CitAQCAtMTM5NSw3ICsxMzk1LDggQEAgc3RyaW5nIHBhdGhfcmVtb3ZlX3N5c3Jvb3QoY29uc3Qgc3lzdGVtdAorICAgc3RyaW5nIHJldHZhbCA9IHBhdGg7CisgICBpZiAoIXNlc3Muc3lzcm9vdC5lbXB0eSgpICYmCisgICAgICAgKHBvcyA9IHJldHZhbC5maW5kKHNlc3Muc3lzcm9vdCkpICE9IHN0cmluZzo6bnBvcykKKy0gICAgcmV0dmFsLnJlcGxhY2UocG9zLCBzZXNzLnN5c3Jvb3QubGVuZ3RoKCksICIvIik7CisrICAgIHJldHZhbC5yZXBsYWNlKHBvcywgc2Vzcy5zeXNyb290Lmxlbmd0aCgpLAorKwkJICAgKHNlc3Muc3lzcm9vdC5iYWNrKCkgPT0gJy8nID8gIi8iOiAiIikpOworICAgcmV0dXJuIHJldHZhbDsKKyB9CisgCitAQCAtODQxMiw4ICs4NDEzLDExIEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKKyAKKyAgICAgICAvLyBQUjEzMzM4OiB1bnF1b3RlIGdsb2IgcmVzdWx0cworICAgICAgIG1vZHVsZV9uYW1lID0gdW5lc2NhcGVfZ2xvYl9jaGFycyAobW9kdWxlX25hbWUpOworLSAgICAgIHVzZXJfcGF0aCA9IGZpbmRfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUsICIiLCBzZXNzLnN5c2Vudik7IC8vIGNhbm9uaWNhbGl6ZSBpdAorLSAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KSkKKysgICAgICB1c2VyX3BhdGggPSBmaW5kX2V4ZWN1dGFibGUgKG1vZHVsZV9uYW1lLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KTsgLy8gY2Fub25pY2FsaXplIGl0CisrICAgICAgLy8gTm90ZSB3ZSBkb24ndCBuZWVkIHRvIHBhc3MgdGhlIHN5c3Jvb3QgdG8KKysgICAgICAvLyBpc19mdWxseV9yZXNvbHZlZCgpLCBzaW5jZSB3ZSBqdXN0IHBhc3NlZCBpdCB0bworKyAgICAgIC8vIGZpbmRfZXhlY3V0YWJsZSgpLgorKyAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCAiIiwgc2Vzcy5zeXNlbnYpKQorICAgICAgICAgdGhyb3cgU0VNQU5USUNfRVJST1IoX0YoImNhbm5vdCBmaW5kIGV4ZWN1dGFibGUgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX3BhdGgudG9fc3RyaW5nKCkuY19zdHIoKSkpOworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLURlbGF5LWFkZGluZy1zeXNyb290LXBhdGgtdG8tbW9kdWxlLW5hbWUtaW4tY2FzZS1vZi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRGVsYXktYWRkaW5nLXN5c3Jvb3QtcGF0aC10by1tb2R1bGUtbmFtZS1pbi1jYXNlLW9mLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTk1MWEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLURlbGF5LWFkZGluZy1zeXNyb290LXBhdGgtdG8tbW9kdWxlLW5hbWUtaW4tY2FzZS1vZi0ucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSA0ZmZlY2RkZjU0MzNkNjVhNmYwMTI0MTk5MGM5ZDUxNjU4NmIxYzc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CitEYXRlOiBNb24sIDE5IE1hciAyMDE4IDA4OjUzOjUxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIERlbGF5IGFkZGluZyBzeXNyb290IHBhdGggdG8gbW9kdWxlIG5hbWUgaW4gY2FzZSBvZiBub24KKyBhYnNvbHV0ZSBleGVjdXRhYmxlCisKK0N1cnJlbnQgc3RhcCBjb2RlIGFkZHMgc3lzcm9vdCBwcmVtYXR1cmVseSBmb3IgcHJvYmVzIHRoYXQgc3BlY2lmeSBub24KK2Fic29sdXRlIHBhdGggbmFtZSwgaS5lIGxpa2UgImZvbyIsIHNvIHdoZW4gZmluZF9leGVjdXRhYmxlIGNhbGxlZCBpdAorcmVjZWl2ZXMgZnVsbCBwYXRoIGFzIDxzeXNyb290Pi9mb28gYW5kIGZpbmRfZXhlY3V0YWJsZSBkb2VzIG5vdCBzZWFyY2gKK1BBVEggd2hpbGUgYXBwbHlpbmcgc3lzcm9vdC4KKworRml4IGRlbGF5cyBhZGRpbmcgc3lzcm9vdCB0aWxsIHBhdGggaW5zaWRlIG9mIHN5c3Jvb3QgaXMgc2VhcmNoZWQgZmlyc3QuCisKK0Fsc28gZml4IG1pc3Npbmcgc3lzcm9vdCBhZGRpdGlvbiBpbiBnbG9iIGV4cGFuc2lvbiBjYXNlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KKy0tLQorIHRhcHNldHMuY3h4IHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvdGFwc2V0cy5jeHgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90YXBzZXRzLmN4eAorKysrIGdpdC90YXBzZXRzLmN4eAorQEAgLTc0Niw3ICs3NDYsNyBAQCBiYXNlX3F1ZXJ5OjpiYXNlX3F1ZXJ5KGR3ZmxwcCAmIGR3LCBsaXRlCisgICAgICAgICAgICAgICBwaWRfdmFsID0gMDsKKyAgICAgICAgICAgICAgIGdldF9zdHJpbmdfcGFyYW0ocGFyYW1zLCBUT0tfUFJPQ0VTUywgbW9kdWxlX3ZhbCk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICBtb2R1bGVfdmFsID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfdmFsLCAiIiwgc2Vzcy5zeXNlbnYpOworKyAgICAgICAgICBtb2R1bGVfdmFsID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfdmFsLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KTsKKyAgICAgICAgICAgaWYgKCFpc19mdWxseV9yZXNvbHZlZChtb2R1bGVfdmFsLCAiIiwgc2Vzcy5zeXNlbnYpKQorICAgICAgICAgICAgIHRocm93IFNFTUFOVElDX0VSUk9SKF9GKCJjYW5ub3QgZmluZCBleGVjdXRhYmxlICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV92YWwudG9fc3RyaW5nKCkuY19zdHIoKSkpOworQEAgLTgyODcsNyArODI4Nyw2IEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKKyAgICAgICAgICAgICB9CisgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICBtb2R1bGVfbmFtZSA9IChzdHJpbmcpc2Vzcy5zeXNyb290ICsgKHN0cmluZyltb2R1bGVfbmFtZTsKKyAgICAgICAgICAgICAgIGZpbGxlZF9wYXJhbWV0ZXJzW1RPS19QUk9DRVNTXSA9IG5ldyBsaXRlcmFsX3N0cmluZyhtb2R1bGVfbmFtZSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorQEAgLTgzMjEsNyArODMyMCw4IEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKKyAgICAgICAgICAgYXNzZXJ0IChsaXQpOworIAorICAgICAgICAgICAvLyBFdmFsdWF0ZSBnbG9iIGhlcmUsIGFuZCBjYWxsIGRlcml2ZV9wcm9iZXMgcmVjdXJzaXZlbHkgd2l0aCBlYWNoIG1hdGNoLgorLSAgICAgICAgICBjb25zdCBhdXRvJiBnbG9icyA9IGdsb2JfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUpOworKyAgICAgICAgICBjb25zdCBhdXRvJiBnbG9icyA9IGdsb2JfZXhlY3V0YWJsZSAoc2Vzcy5zeXNyb290CisrCQkJCQkgICAgICAgKyBzdHJpbmcobW9kdWxlX25hbWUpKTsKKyAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0c19wcmUgPSBmaW5pc2hlZF9yZXN1bHRzLnNpemUoKTsKKyAgICAgICAgICAgZm9yIChhdXRvIGl0ID0gZ2xvYnMuYmVnaW4oKTsgaXQgIT0gZ2xvYnMuZW5kKCk7ICsraXQpCisgICAgICAgICAgICAgeworQEAgLTg0MTMsNyArODQxMyw3IEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKKyAgICAgICAvLyBQUjEzMzM4OiB1bnF1b3RlIGdsb2IgcmVzdWx0cworICAgICAgIG1vZHVsZV9uYW1lID0gdW5lc2NhcGVfZ2xvYl9jaGFycyAobW9kdWxlX25hbWUpOworICAgICAgIHVzZXJfcGF0aCA9IGZpbmRfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUsICIiLCBzZXNzLnN5c2Vudik7IC8vIGNhbm9uaWNhbGl6ZSBpdAorLSAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCAiIiwgc2Vzcy5zeXNlbnYpKQorKyAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KSkKKyAgICAgICAgIHRocm93IFNFTUFOVElDX0VSUk9SKF9GKCJjYW5ub3QgZmluZCBleGVjdXRhYmxlICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9wYXRoLnRvX3N0cmluZygpLmNfc3RyKCkpKTsKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXgtUFIyMjU1MS1ieS11cGRhdGluZy10aGUtdXNlLW9mLXRpbWVycy1mb3ItdGhlLTQuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUZpeC1QUjIyNTUxLWJ5LXVwZGF0aW5nLXRoZS11c2Utb2YtdGltZXJzLWZvci10aGUtNC4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYwYzNiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXgtUFIyMjU1MS1ieS11cGRhdGluZy10aGUtdXNlLW9mLXRpbWVycy1mb3ItdGhlLTQuLnBhdGNoCkBAIC0wLDAgKzEsMjc3IEBACitGcm9tIGZiYjI2ZTE3YTRjMDI2ZjA1YTQ5N2ZjNWQ1ODQ1MTZiYWQzYjY5NTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYXZpZCBTbWl0aCA8ZHNtaXRoQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDYgRGVjIDIwMTcgMTQ6Mzc6NDIgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IFBSMjI1NTEgYnkgdXBkYXRpbmcgdGhlIHVzZSBvZiB0aW1lcnMgZm9yIHRoZSA0LjE1Cisga2VybmVsLgorCisqIHJ1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oOiBOZXcgZmlsZS4KKyogcnVudGltZS90aW1lLmM6IFVwZGF0ZSB0aW1lciBjYWxsYmFjayBmdW5jdGlvbiBwYXJhbWV0ZXIgdHlwZS4gVXBkYXRlCisgIHRpbWVyIGluaXRpYWxpemF0aW9uLgorKiBydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jOiBEaXR0by4KKyogcnVudGltZS90cmFuc3BvcnQvdHJhbnNwb3J0LmM6IERpdHRvLgorKiB0YXBzZXQtdGltZXJzLmN4eCAodGltZXJfZGVyaXZlZF9wcm9iZV9ncm91cDo6ZW1pdF9tb2R1bGVfZGVjbHMpOgorICBEaXR0by4gSGFuZGxlIG9sZCBhbmQgbmV3IHRpbWVyIGNhbGxiYWNrIGludGVyZmFjZS4KKyogcnVudGltZS9saW51eC9ydW50aW1lLmg6IEluY2x1ZGUgdGltZXJfY29tcGF0aWJpbGl0eS5oIGluc3RlYWQgb2YgdGltZXIuaC4KKyogdGFwc2V0L2xpbnV4L3Njc2kuc3RwOiBEaXR0by4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CisKKy0tLQorIHJ1bnRpbWUvbGludXgvcnVudGltZS5oICAgICAgICAgICAgIHwgIDIgKy0KKyBydW50aW1lL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaCB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBydW50aW1lL3RpbWUuYyAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrLS0KKyBydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jICAgICAgICB8ICA4ICsrLS0KKyBydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYyAgICAgICB8IDEzICsrKy0tLS0KKyB0YXBzZXQtdGltZXJzLmN4eCAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrLS0KKyB0YXBzZXQvbGludXgvc2NzaS5zdHAgICAgICAgICAgICAgICB8ICAyICstCisgNyBmaWxlcyBjaGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oCisKK2RpZmYgLS1naXQgYS9ydW50aW1lL2xpbnV4L3J1bnRpbWUuaCBiL3J1bnRpbWUvbGludXgvcnVudGltZS5oCitpbmRleCA5YzU4NWEyLi5kZjliNzRjIDEwMDY0NAorLS0tIGEvcnVudGltZS9saW51eC9ydW50aW1lLmgKKysrKyBiL3J1bnRpbWUvbGludXgvcnVudGltZS5oCitAQCAtMzQsNyArMzQsNyBAQAorICNpbmNsdWRlIDxsaW51eC9jb21wYXQuaD4KKyAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyAjaW5jbHVkZSA8bGludXgvbW0uaD4KKy0jaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKysjaW5jbHVkZSAidGltZXJfY29tcGF0aWJpbGl0eS5oIgorICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorICNpbmNsdWRlIDxsaW51eC9wcm9maWxlLmg+CisgI2luY2x1ZGUgPGxpbnV4L3JjdXBkYXRlLmg+CitkaWZmIC0tZ2l0IGEvcnVudGltZS9saW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmggYi9ydW50aW1lL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFjMDNkZTkKKy0tLSAvZGV2L251bGwKKysrKyBiL3J1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oCitAQCAtMCwwICsxLDc2IEBACisrLyoKKysgKiBsaW51eC90aW1lci5oIGNvbXBhdGliaWxpdHkgZGVmaW5lcyBhbmQgaW5saW5lcworKyAqIENvcHlyaWdodCAoQykgMjAxNyBSZWQgSGF0IEluYy4KKysgKgorKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHN5c3RlbXRhcCwgYW5kIGlzIGZyZWUgc29mdHdhcmUuICBZb3UgY2FuCisrICogcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbAorKyAqIFB1YmxpYyBMaWNlbnNlIChHUEwpOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQorKyAqIGxhdGVyIHZlcnNpb24uCisrICovCisrCisrI2lmbmRlZiBfVElNRVJfQ09NUEFUSUJJTElUWV9IXworKyNkZWZpbmUgX1RJTUVSX0NPTVBBVElCSUxJVFlfSF8KKysKKysjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKysKKysvKgorKyAqIFN0YXJ0aW5nIHdpdGggdGhlIDQuMTUga2VybmVsLCB0aGUgdGltZXIgaW50ZXJmYWNlCisrICogY2hhbmdlZC4gT3JpZ2luYWxseSwgeW91J2QgZG8gc29tZXRoaW5nIGxpa2U6CisrICoKKysgKiAgIHN0YXRpYyB2b2lkIHRpbWVyX2Z1bmModW5zaWduZWQgbG9uZyB2YWwpOworKyAqCisrICogICBpbml0X3RpbWVyKCZ0aW1lcik7CisrICogICB0aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9SRUxBWV9USU1FUl9JTlRFUlZBTDsKKysgKiAgIHRpbWVyLmZ1bmN0aW9uID0gdGltZXJfZnVuYzsKKysgKiAgIHRpbWVyLmRhdGEgPSAwOworKyAqICAgYWRkX3RpbWVyKCZ0aW1lcik7CisrICoKKysgKiBUaGUgJ2RhdGEnIHBhcmFtZXRlciB3b3VsZCBnZXQgcGFzc2VkIHRvIHRoZSBjYWxsYmFjaworKyAqIGZ1bmN0aW9uLiBTdGFydGluZyB3aXRoIDQuMTUsIHlvdSdkIGRvIHNvbWV0aGluZyBsaWtlIHRoaXM6CisrICoKKysgKiAgIHN0YXRpYyB2b2lkIHRpbWVyX2Z1bmMoc3RydWN0IHRpbWVyX2xpc3QgKnZhbCk7CisrICoKKysgKiAgIHRpbWVyX3NldHVwKCZ0aW1lciwgdGltZXJfZnVuYywgMCk7CisrICogICB0aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9SRUxBWV9USU1FUl9JTlRFUlZBTDsKKysgKiAgIGFkZF90aW1lcigmdGltZXIpOworKyAqICAgCisrICogV2l0aCB0aGUgbmV3IGNvZGUsIHRoZSB0aW1lciB0aGF0IGNhdXNlZCB0aGUgY2FsbGJhY2sgZ2V0cyBwYXNzZWQKKysgKiB0byB0aGUgdGltZXIgY2FsbGJhY2sgZnVuY3Rpb24uIFRoZSAnZGF0YScgZmllbGQgaGFzIGJlZW4gcmVtb3ZlZC4KKysgKgorKyAqIFNvLCB3ZSdyZSBnb2luZyB0byB1c2UgdGhlIG5ldyBpbnRlcmZhY2UuIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2VzCisrICogYmV0d2VlbiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gcGFyYW1ldGVyIHR5cGUsIHdlJ2xsIGRlZmluZSBhIG5ldworKyAqIHR5cGUsICdzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QnLgorKyAqCisrICogSWYgY29kZSBuZWVkcyB0byBmaWd1cmUgb3V0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9sZCBhbmQgbmV3CisrICogaW50ZXJmYWNlLCBpdCBzaG91bGQgdGVzdCB0aGUgVElNRVJfVFJBQ0VfRkxBR01BU0sgZGVmaW5lICh3aGljaAorKyAqIG9ubHkgZXhpc3RzIGluIHRoZSBuZXcgaW50ZXJmYWNlKS4KKysgKi8KKysKKysjaWYgZGVmaW5lZChUSU1FUl9UUkFDRV9GTEFHTUFTSykgCisrLyogVGhpcyBpcyB0aGUgPj0gNC4xNSBrZXJuZWwgaW50ZXJmYWNlLiAqLworKworK3R5cGVkZWYgc3RydWN0IHRpbWVyX2xpc3QgKiBzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3Q7CisrCisrI2Vsc2UKKysvKiBUaGlzIGlzIHRoZSA8IDQuMTUga2VybmVsIGludGVyZmFjZS4gKi8KKysKKyt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90OworKworKy8qKgorKyAqIHRpbWVyX3NldHVwIC0gcHJlcGFyZSBhIHRpbWVyIGZvciBmaXJzdCB1c2UKKysgKiBAdGltZXI6IHRoZSB0aW1lciBpbiBxdWVzdGlvbgorKyAqIEBjYWxsYmFjazogdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aW1lciBleHBpcmVzCisrICogQGZsYWdzOiBhbnkgVElNRVJfKiBmbGFncyAobm90ZSB0aGF0IGFueXRoaW5nIG90aGVyIHRoYW4gMCBpcyBhbgorKyAqIAkgICBlcnJvciwgc2luY2UgdGhpcyBjb21wYXRpYmlsaXR5IGZ1bmN0aW9uIGNhbid0IHN1cHBvcnQgYW55CisrICoJICAgb2YgdGhlIFRJTUVSXyogZmxhZ3MpCisrICovCisrI2RlZmluZSB0aW1lcl9zZXR1cCh0aW1lciwgY2FsbGJhY2ssIGZsYWdzKQkJCVwKKysJewkJCQkJCQlcCisrCQlpbml0X3RpbWVyKCh0aW1lcikpOwkJCQlcCisrCQkodGltZXIpLT5mdW5jdGlvbiA9IGNhbGxiYWNrOwkJCVwKKysJCSh0aW1lciktPmRhdGEgPSAwOwkJCQlcCisrCQlCVUlMRF9CVUdfT05fWkVSTygoZmxhZ3MpICE9IDApOwkJXAorKwl9CisrI2VuZGlmCisrCisrI2VuZGlmIC8qIF9USU1FUl9DT01QQVRJQklMSVRZX0hfICovCitkaWZmIC0tZ2l0IGEvcnVudGltZS90aW1lLmMgYi9ydW50aW1lL3RpbWUuYworaW5kZXggMmU2NjZkNS4uOTFjZWFmYSAxMDA2NDQKKy0tLSBhL3J1bnRpbWUvdGltZS5jCisrKysgYi9ydW50aW1lL3RpbWUuYworQEAgLTE2OCwxMCArMTY4LDEwIEBAIF9fc3RwX3RpbWVfc21wX2NhbGxiYWNrKHZvaWQgKnZhbCkKKyAKKyAvKiBUaGUgdGltZXIgY2FsbGJhY2sgaXMgaW4gYSBzb2Z0SVJRIC0tIGludGVycnVwdHMgZW5hYmxlZC4gKi8KKyBzdGF0aWMgdm9pZAorLV9fc3RwX3RpbWVfdGltZXJfY2FsbGJhY2sodW5zaWduZWQgbG9uZyB2YWwpCisrX19zdHBfdGltZV90aW1lcl9jYWxsYmFjayhzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QgdW51c2VkKQorIHsKKyAgICAgc3RwX3RpbWVfdCAqdGltZSA9X19zdHBfdGltZV9sb2NhbF91cGRhdGUoKTsKKy0gICAgKHZvaWQpIHZhbDsKKysgICAgKHZvaWQpIHVudXNlZDsKKyAKKyAgICAgLyogUFI2NDgxOiBtYWtlIHN1cmUgSVJRcyBhcmUgZW5hYmxlZCBiZWZvcmUgcmVzZXR0aW5nIHRoZSB0aW1lcgorICAgICAgICAoSVJRcyBhcmUgZGlzYWJsZWQgYW5kIHRoZW4gcmVlbmFibGVkIGluCitAQCAtMjAwLDkgKzIwMCw4IEBAIF9fc3RwX2luaXRfdGltZSh2b2lkICppbmZvKQorICAgICB0aW1lLT5mcmVxID0gX19zdHBfZ2V0X2ZyZXEoKTsKKyAgICAgX19zdHBfdGltZV9sb2NhbF91cGRhdGUoKTsKKyAKKy0gICAgaW5pdF90aW1lcigmdGltZS0+dGltZXIpOworKyAgICB0aW1lcl9zZXR1cCgmdGltZS0+dGltZXIsIF9fc3RwX3RpbWVfdGltZXJfY2FsbGJhY2ssIDApOworICAgICB0aW1lLT50aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9USU1FX1NZTkNfSU5URVJWQUw7CistICAgIHRpbWUtPnRpbWVyLmZ1bmN0aW9uID0gX19zdHBfdGltZV90aW1lcl9jYWxsYmFjazsKKyAKKyAjaWZuZGVmIFNUQVBDT05GX0FERF9USU1FUl9PTgorICAgICBhZGRfdGltZXIoJnRpbWUtPnRpbWVyKTsKK2RpZmYgLS1naXQgYS9ydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jIGIvcnVudGltZS90cmFuc3BvcnQvcmVsYXlfdjIuYworaW5kZXggZjgxZDc1ZC4uMTM1OTUxYSAxMDA2NDQKKy0tLSBhL3J1bnRpbWUvdHJhbnNwb3J0L3JlbGF5X3YyLmMKKysrKyBiL3J1bnRpbWUvdHJhbnNwb3J0L3JlbGF5X3YyLmMKK0BAIC0zMCw3ICszMCw3IEBACisgI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KKyAjaW5jbHVkZSA8bGludXgvbW0uaD4KKyAjaW5jbHVkZSA8bGludXgvcmVsYXkuaD4KKy0jaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKysjaW5jbHVkZSAiLi4vbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oIgorICNpbmNsdWRlICIuLi91aWRnaWRfY29tcGF0aWJpbGl0eS5oIgorICNpbmNsdWRlICJyZWxheV9jb21wYXQuaCIKKyAKK0BAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIHZvaWQgX19zdHBfcmVsYXlfd2FrZXVwX3JlYWRlcnMoc3RydWN0IHJjaGFuX2J1ZiAqYnVmKQorIAkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZidWYtPnJlYWRfd2FpdCk7CisgfQorIAorLXN0YXRpYyB2b2lkIF9fc3RwX3JlbGF5X3dha2V1cF90aW1lcih1bnNpZ25lZCBsb25nIHZhbCkKKytzdGF0aWMgdm9pZCBfX3N0cF9yZWxheV93YWtldXBfdGltZXIoc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90IHVudXNlZCkKKyB7CisgI2lmZGVmIFNUUF9CVUxLTU9ERQorIAlpbnQgaTsKK0BAIC0xNTEsMTAgKzE1MSw4IEBAIHN0YXRpYyB2b2lkIF9fc3RwX3JlbGF5X3dha2V1cF90aW1lcih1bnNpZ25lZCBsb25nIHZhbCkKKyBzdGF0aWMgdm9pZCBfX3N0cF9yZWxheV90aW1lcl9pbml0KHZvaWQpCisgeworIAlhdG9taWNfc2V0KCZfc3RwX3JlbGF5X2RhdGEud2FrZXVwLCAwKTsKKy0JaW5pdF90aW1lcigmX3N0cF9yZWxheV9kYXRhLnRpbWVyKTsKKysJdGltZXJfc2V0dXAoJl9zdHBfcmVsYXlfZGF0YS50aW1lciwgX19zdHBfcmVsYXlfd2FrZXVwX3RpbWVyLCAwKTsKKyAJX3N0cF9yZWxheV9kYXRhLnRpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgU1RQX1JFTEFZX1RJTUVSX0lOVEVSVkFMOworLQlfc3RwX3JlbGF5X2RhdGEudGltZXIuZnVuY3Rpb24gPSBfX3N0cF9yZWxheV93YWtldXBfdGltZXI7CistCV9zdHBfcmVsYXlfZGF0YS50aW1lci5kYXRhID0gMDsKKyAJYWRkX3RpbWVyKCZfc3RwX3JlbGF5X2RhdGEudGltZXIpOworIAlzbXBfbWIoKTsKKyB9CitkaWZmIC0tZ2l0IGEvcnVudGltZS90cmFuc3BvcnQvdHJhbnNwb3J0LmMgYi9ydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYworaW5kZXggMzQwMGYyMi4uMzIwZmQxOCAxMDA2NDQKKy0tLSBhL3J1bnRpbWUvdHJhbnNwb3J0L3RyYW5zcG9ydC5jCisrKysgYi9ydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYworQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgdm9pZCBfc3RwX2RldGFjaCh2b2lkKQorIH0KKyAKKyAKKy1zdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHVuc2lnbmVkIGxvbmcgdmFsKTsKKytzdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdCB1bnVzZWQpOworIAorIC8qCisgICogQ2FsbGVkIHdoZW4gc3RhcGlvIG9wZW5zIHRoZSBjb250cm9sIGNoYW5uZWwuCitAQCAtMzIwLDEzICszMjAsMTIgQEAgc3RhdGljIHZvaWQgX3N0cF9hdHRhY2godm9pZCkKKyB7CisgCWRidWdfdHJhbnMoMSwgImF0dGFjaFxuIik7CisgCV9zdHBfcGlkID0gY3VycmVudC0+cGlkOworLSAgaWYgKF9zdHBfbmFtZXNwYWNlc19waWQgPCAxKQorLSAgICBfc3RwX25hbWVzcGFjZXNfcGlkID0gX3N0cF9waWQ7CisrCWlmIChfc3RwX25hbWVzcGFjZXNfcGlkIDwgMSkKKysJCV9zdHBfbmFtZXNwYWNlc19waWQgPSBfc3RwX3BpZDsKKyAJX3N0cF90cmFuc3BvcnRfZGF0YV9mc19vdmVyd3JpdGUoMCk7CistCWluaXRfdGltZXIoJl9zdHBfY3RsX3dvcmtfdGltZXIpOworKworKwl0aW1lcl9zZXR1cCgmX3N0cF9jdGxfd29ya190aW1lciwgX3N0cF9jdGxfd29ya19jYWxsYmFjaywgMCk7CisgCV9zdHBfY3RsX3dvcmtfdGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyBTVFBfQ1RMX1RJTUVSX0lOVEVSVkFMOworLQlfc3RwX2N0bF93b3JrX3RpbWVyLmZ1bmN0aW9uID0gX3N0cF9jdGxfd29ya19jYWxsYmFjazsKKy0JX3N0cF9jdGxfd29ya190aW1lci5kYXRhPSAwOworIAlhZGRfdGltZXIoJl9zdHBfY3RsX3dvcmtfdGltZXIpOworIH0KKyAKK0BAIC0zNDEsNyArMzQwLDcgQEAgc3RhdGljIHZvaWQgX3N0cF9hdHRhY2godm9pZCkKKyAgKglub3RpZmllZC4gUmVzY2hlZHVsZXMgaXRzZWxmIGlmIHNvbWVvbmUgaXMgc3RpbGwgYXR0YWNoZWQKKyAgKgl0byB0aGUgY21kIGNoYW5uZWwuCisgICovCistc3RhdGljIHZvaWQgX3N0cF9jdGxfd29ya19jYWxsYmFjayh1bnNpZ25lZCBsb25nIHZhbCkKKytzdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdCB1bnVzZWQpCisgeworIAlpbnQgZG9faW8gPSAwOworIAl1bnNpZ25lZCBsb25nIGZsYWdzOworZGlmZiAtLWdpdCBhL3RhcHNldC10aW1lcnMuY3h4IGIvdGFwc2V0LXRpbWVycy5jeHgKK2luZGV4IDFhNDBiY2QuLjBhYjRkNjkgMTAwNjQ0CistLS0gYS90YXBzZXQtdGltZXJzLmN4eAorKysrIGIvdGFwc2V0LXRpbWVycy5jeHgKK0BAIC0xMjIsOSArMTIyLDEzIEBAIHRpbWVyX2Rlcml2ZWRfcHJvYmVfZ3JvdXA6OmVtaXRfbW9kdWxlX2RlY2xzIChzeXN0ZW10YXBfc2Vzc2lvbiYgcykKKyAgIHMub3AtPm5ld2xpbmUoLTEpIDw8ICJ9OyI7CisgICBzLm9wLT5uZXdsaW5lKCk7CisgCistICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0YXRpYyB2b2lkIGVudGVyX3RpbWVyX3Byb2JlICh1bnNpZ25lZCBsb25nIHZhbCkgeyI7CisrICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0YXRpYyB2b2lkIGVudGVyX3RpbWVyX3Byb2JlIChzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QgdmFsKSB7IjsKKysgIHMub3AtPm5ld2xpbmUoKSA8PCAiI2lmIGRlZmluZWQoVElNRVJfVFJBQ0VfRkxBR01BU0spIjsKKysgIHMub3AtPm5ld2xpbmUoMSkgPDwgInN0cnVjdCBzdGFwX3RpbWVyX3Byb2JlKiBzdHAgPSBjb250YWluZXJfb2YodmFsLCBzdHJ1Y3Qgc3RhcF90aW1lcl9wcm9iZSwgdGltZXJfbGlzdCk7IjsKKysgIHMub3AtPm5ld2xpbmUoLTEpIDw8ICIjZWxzZSI7CisgICBzLm9wLT5uZXdsaW5lKDEpIDw8ICJzdHJ1Y3Qgc3RhcF90aW1lcl9wcm9iZSogc3RwID0gJiBzdGFwX3RpbWVyX3Byb2JlcyBbdmFsXTsiOworLSAgcy5vcC0+bmV3bGluZSgpIDw8ICJpZiAoKGF0b21pY19yZWFkIChzZXNzaW9uX3N0YXRlKCkpID09IFNUQVBfU0VTU0lPTl9TVEFSVElORykgfHwiOworKyAgcy5vcC0+bmV3bGluZSgtMSkgPDwgIiNlbmRpZiI7CisrICBzLm9wLT5uZXdsaW5lKDEpIDw8ICJpZiAoKGF0b21pY19yZWFkIChzZXNzaW9uX3N0YXRlKCkpID09IFNUQVBfU0VTU0lPTl9TVEFSVElORykgfHwiOworICAgcy5vcC0+bmV3bGluZSgpIDw8ICIgICAgKGF0b21pY19yZWFkIChzZXNzaW9uX3N0YXRlKCkpID09IFNUQVBfU0VTU0lPTl9SVU5OSU5HKSkiOworICAgcy5vcC0+bmV3bGluZSgxKSA8PCAibW9kX3RpbWVyICgmIHN0cC0+dGltZXJfbGlzdCwgamlmZmllcyArICI7CisgICBlbWl0X2ludGVydmFsIChzLm9wKTsKK0BAIC0xNDgsOSArMTUyLDExIEBAIHRpbWVyX2Rlcml2ZWRfcHJvYmVfZ3JvdXA6OmVtaXRfbW9kdWxlX2luaXQgKHN5c3RlbXRhcF9zZXNzaW9uJiBzKQorICAgcy5vcC0+bmV3bGluZSgpIDw8ICJmb3IgKGk9MDsgaTwiIDw8IHByb2Jlcy5zaXplKCkgPDwgIjsgaSsrKSB7IjsKKyAgIHMub3AtPm5ld2xpbmUoMSkgPDwgInN0cnVjdCBzdGFwX3RpbWVyX3Byb2JlKiBzdHAgPSAmIHN0YXBfdGltZXJfcHJvYmVzIFtpXTsiOworICAgcy5vcC0+bmV3bGluZSgpIDw8ICJwcm9iZV9wb2ludCA9IHN0cC0+cHJvYmUtPnBwOyI7CistICBzLm9wLT5uZXdsaW5lKCkgPDwgImluaXRfdGltZXIgKCYgc3RwLT50aW1lcl9saXN0KTsiOworLSAgcy5vcC0+bmV3bGluZSgpIDw8ICJzdHAtPnRpbWVyX2xpc3QuZnVuY3Rpb24gPSAmIGVudGVyX3RpbWVyX3Byb2JlOyI7CisrCisrICBzLm9wLT5uZXdsaW5lKCkgPDwgInRpbWVyX3NldHVwICgmIHN0cC0+dGltZXJfbGlzdCwgZW50ZXJfdGltZXJfcHJvYmUsIDApOyI7CisrICBzLm9wLT5uZXdsaW5lKCkgPDwgIiNpZiAhZGVmaW5lZChUSU1FUl9UUkFDRV9GTEFHTUFTSykiOworICAgcy5vcC0+bmV3bGluZSgpIDw8ICJzdHAtPnRpbWVyX2xpc3QuZGF0YSA9IGk7IjsgLy8gTkI6IGltcG9ydGFudCEKKysgIHMub3AtPm5ld2xpbmUoKSA8PCAiI2VuZGlmIjsKKyAgIC8vIGNvcHkgdGltZXIgcmVuZXcgY2FsY3VsYXRpb25zIGZyb20gYWJvdmUgOi0oCisgICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0cC0+dGltZXJfbGlzdC5leHBpcmVzID0gamlmZmllcyArICI7CisgICBlbWl0X2ludGVydmFsIChzLm9wKTsKK2RpZmYgLS1naXQgYS90YXBzZXQvbGludXgvc2NzaS5zdHAgYi90YXBzZXQvbGludXgvc2NzaS5zdHAKK2luZGV4IDQ0ZjY4NmMuLjM1Nzc5NDIgMTAwNjQ0CistLS0gYS90YXBzZXQvbGludXgvc2NzaS5zdHAKKysrKyBiL3RhcHNldC9saW51eC9zY3NpLnN0cAorQEAgLTE0LDcgKzE0LDcgQEAKKyAjaW5jbHVkZSA8c2NzaS9zY3NpX2NtbmQuaD4KKyAjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgorICNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPgorLSNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorKyNpbmNsdWRlICJsaW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmgiCisgI2luY2x1ZGUgPGxpbnV4L2Jsa2Rldi5oPgorICV9CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXhlcy1mb3ItZ2NjLTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYjBiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoCkBAIC0wLDAgKzEsMjE1IEBACitGcm9tIDRmZmUwMGYxZDllYWMzMzJkOTI4ZjdkYzAxZmUyNTBkYzMyYjFiYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGFuIENveCA8c2NveEByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAxMyBGZWIgMjAxOCAyMjozODowMyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBGaXhlcyBmb3IgZ2NjIDgKKworKiBpbmNsdWRlcy9zeXMvc2R0LmggKF9fU0RUX0NPTkRfU0lHTkVEKTogIEFkZCBDVCwgY2FzdCB0eXBlIGFyZ3VtZW50CisKK0F1dGhvcjogV2lsbCBDb2hlbiA8d2NvaGVuLnJlZGhhdC5jb20+CisKKyogc3RhcC1zZXJ2ZXJkLmN4eCAoZ2VuZXJhdGVfbW9rLCBoYW5kbGVSZXF1ZXN0LCBoYW5kbGVfY29ubmVjdGlvbik6CisgIENhdGNoIGZvcm1hdCBvdmVyZmxvdworCisqIHRyYW5zbGF0ZS5jeHggKHRyYW5zbGF0ZV9wYXNzKTogVXNlIHJlZiBpbiBjYXRjaC4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIGluY2x1ZGVzL3N5cy9zZHQuaCB8IDIwICsrKysrKysrLS0tLS0tLS0KKyBzdGFwLXNlcnZlcmQuY3h4ICAgfCA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KKyB0cmFuc2xhdGUuY3h4ICAgICAgfCAgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlcy9zeXMvc2R0LmggYi9pbmNsdWRlcy9zeXMvc2R0LmgKK2luZGV4IDk0MGY3NDQ4My4uYzBjNWE0OTJjIDEwMDY0NAorLS0tIGEvaW5jbHVkZXMvc3lzL3NkdC5oCisrKysgYi9pbmNsdWRlcy9zeXMvc2R0LmgKK0BAIC0xMTksOCArMTE5LDggQEAgc3RydWN0IF9fc2R0X3R5cGUKKyAgIAorICNkZWZpbmUgX19TRFRfQUxXQVlTX1NJR05FRChUKSBcCisgdGVtcGxhdGU8PiBzdHJ1Y3QgX19zZHRfdHlwZTxUPiB7IHN0YXRpYyBjb25zdCBib29sIF9fc2R0X3NpZ25lZCA9IHRydWU7IH07CistI2RlZmluZSBfX1NEVF9DT05EX1NJR05FRChUKSBcCistdGVtcGxhdGU8PiBzdHJ1Y3QgX19zZHRfdHlwZTxUPiB7IHN0YXRpYyBjb25zdCBib29sIF9fc2R0X3NpZ25lZCA9ICgoVCkoLTEpIDwgMSk7IH07CisrI2RlZmluZSBfX1NEVF9DT05EX1NJR05FRChULENUKQkJCQkJCVwKKyt0ZW1wbGF0ZTw+IHN0cnVjdCBfX3NkdF90eXBlPFQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgX19zZHRfc2lnbmVkID0gKChDVCkoLTEpIDwgMSk7IH07CisgX19TRFRfQUxXQVlTX1NJR05FRChzaWduZWQgY2hhcikKKyBfX1NEVF9BTFdBWVNfU0lHTkVEKHNob3J0KQorIF9fU0RUX0FMV0FZU19TSUdORUQoaW50KQorQEAgLTE0MSwxNCArMTQxLDE0IEBAIF9fU0RUX0FMV0FZU19TSUdORUQoY29uc3Qgdm9sYXRpbGUgc2hvcnQpCisgX19TRFRfQUxXQVlTX1NJR05FRChjb25zdCB2b2xhdGlsZSBpbnQpCisgX19TRFRfQUxXQVlTX1NJR05FRChjb25zdCB2b2xhdGlsZSBsb25nKQorIF9fU0RUX0FMV0FZU19TSUdORUQoY29uc3Qgdm9sYXRpbGUgbG9uZyBsb25nKQorLV9fU0RUX0NPTkRfU0lHTkVEKGNoYXIpCistX19TRFRfQ09ORF9TSUdORUQod2NoYXJfdCkKKy1fX1NEVF9DT05EX1NJR05FRCh2b2xhdGlsZSBjaGFyKQorLV9fU0RUX0NPTkRfU0lHTkVEKHZvbGF0aWxlIHdjaGFyX3QpCistX19TRFRfQ09ORF9TSUdORUQoY29uc3QgY2hhcikKKy1fX1NEVF9DT05EX1NJR05FRChjb25zdCB3Y2hhcl90KQorLV9fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIGNoYXIpCistX19TRFRfQ09ORF9TSUdORUQoY29uc3Qgdm9sYXRpbGUgd2NoYXJfdCkKKytfX1NEVF9DT05EX1NJR05FRChjaGFyLCBjaGFyKQorK19fU0RUX0NPTkRfU0lHTkVEKHdjaGFyX3QsIHdjaGFyX3QpCisrX19TRFRfQ09ORF9TSUdORUQodm9sYXRpbGUgY2hhciwgY2hhcikKKytfX1NEVF9DT05EX1NJR05FRCh2b2xhdGlsZSB3Y2hhcl90LCB3Y2hhcl90KQorK19fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IGNoYXIsIGNoYXIpCisrX19TRFRfQ09ORF9TSUdORUQoY29uc3Qgd2NoYXJfdCwgd2NoYXJfdCkKKytfX1NEVF9DT05EX1NJR05FRChjb25zdCB2b2xhdGlsZSBjaGFyLCBjaGFyKQorK19fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIHdjaGFyX3QsIHdjaGFyX3QpCisgI2lmIGRlZmluZWQgKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDQpKQorIC8qIF9fU0RUX0NPTkRfU0lHTkVEKGNoYXIxNl90KSAqLworIC8qIF9fU0RUX0NPTkRfU0lHTkVEKGNoYXIzMl90KSAqLworZGlmZiAtLWdpdCBhL3N0YXAtc2VydmVyZC5jeHggYi9zdGFwLXNlcnZlcmQuY3h4CitpbmRleCA3Y2Y3NmM2MTcuLjQxZjc3ZWU5ZSAxMDA2NDQKKy0tLSBhL3N0YXAtc2VydmVyZC5jeHgKKysrKyBiL3N0YXAtc2VydmVyZC5jeHgKK0BAIC0xNjA3LDYgKzE2MDcsNyBAQCBnZW5lcmF0ZV9tb2soc3RyaW5nICZtb2tfZmluZ2VycHJpbnQpCisgICBjaGFyIHRtcGRpcltQQVRIX01BWF0gPSB7ICdcMCcgfTsKKyAgIHN0cmluZyBwdWJsaWNfY2VydF9wYXRoLCBwcml2YXRlX2NlcnRfcGF0aCwgZGVzdGRpcjsKKyAgIG1vZGVfdCBvbGRfdW1hc2s7CisrICBpbnQgcmV0bGVuOworIAorICAgbW9rX2ZpbmdlcnByaW50LmNsZWFyICgpOworIAorQEAgLTE2MzEsNyArMTYzMiwxNCBAQCBnZW5lcmF0ZV9tb2soc3RyaW5nICZtb2tfZmluZ2VycHJpbnQpCisgICAgIH0KKyAKKyAgIC8vIE1ha2UgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHN0b3JlIHJlc3VsdHMgaW4uCistICBzbnByaW50ZiAodG1wZGlyLCBQQVRIX01BWCwgIiVzL3N0YXAtc2VydmVyLlhYWFhYWCIsIG1va19wYXRoLmNfc3RyICgpKTsKKysgIHJldGxlbiA9IHNucHJpbnRmICh0bXBkaXIsIFBBVEhfTUFYLCAiJXMvc3RhcC1zZXJ2ZXIuWFhYWFhYIiwgbW9rX3BhdGguY19zdHIgKCkpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiQ291bGQgbm90IGNyZWF0ZSAlcyBuYW1lIiwgInRlbXBvcmFyeSBkaXJlY3RvcnkiKSk7CisrICAgICAgdG1wZGlyWzBdID0gJ1wwJzsKKysgICAgICBnb3RvIGNsZWFudXA7CisrICAgIH0KKysKKyAgIGlmIChta2R0ZW1wICh0bXBkaXIpID09IE5VTEwpCisgICAgIHsKKyAgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJDb3VsZCBub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgJXM6ICVzIiwgdG1wZGlyLCAKK0BAIC0xNzA0LDYgKzE3MTIsNyBAQCBoYW5kbGVSZXF1ZXN0IChjb25zdCBzdHJpbmcgJnJlcXVlc3REaXJOYW1lLCBjb25zdCBzdHJpbmcgJnJlc3BvbnNlRGlyTmFtZSwgc3RyaQorICAgdW5zaWduZWQgdTsKKyAgIHVuc2lnbmVkIGk7CisgICBGSUxFKiBmOworKyAgaW50IHJldGxlbjsKKyAKKyAgIC8vIFNhdmUgdGhlIHNlcnZlciB2ZXJzaW9uLiBEbyB0aGlzIGVhcmx5LCBzbyB0aGUgY2xpZW50IGtub3dzIHdoYXQgdmVyc2lvbiBvZiB0aGUgc2VydmVyCisgICAvLyBpdCBpcyBkZWFsaW5nIHdpdGgsIGV2ZW4gaWYgdGhlIHJlcXVlc3QgaXMgbm90IGZ1bGx5IGNvbXBsZXRlZC4KK0BAIC0xNzgyLDcgKzE3OTEsMTIgQEAgaGFuZGxlUmVxdWVzdCAoY29uc3Qgc3RyaW5nICZyZXF1ZXN0RGlyTmFtZSwgY29uc3Qgc3RyaW5nICZyZXNwb25zZURpck5hbWUsIHN0cmkKKyAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICAgICBjaGFyICphcmc7CisgCistICAgICAgc25wcmludGYgKHN0YXBhcmdmaWxlLCBQQVRIX01BWCwgIiVzL2FyZ3YlZCIsIHJlcXVlc3REaXJOYW1lLmNfc3RyICgpLCBpKTsKKysgICAgICByZXRsZW4gPSBzbnByaW50ZiAoc3RhcGFyZ2ZpbGUsIFBBVEhfTUFYLCAiJXMvYXJndiVkIiwgcmVxdWVzdERpck5hbWUuY19zdHIgKCksIGkpOworKyAgICAgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKKysgICAgICAgIHsKKysgICAgICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJwYXRoIikpOworKyAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisgCisgICAgICAgcmMgPSBzdGF0KHN0YXBhcmdmaWxlLCAmIHN0KTsKKyAgICAgICBpZiAocmMpIGJyZWFrOworQEAgLTE4ODgsNyArMTkwMiwxNSBAQCBoYW5kbGVSZXF1ZXN0IChjb25zdCBzdHJpbmcgJnJlcXVlc3REaXJOYW1lLCBjb25zdCBzdHJpbmcgJnJlc3BvbnNlRGlyTmFtZSwgc3RyaQorICAgICB7CisgICAgICAgZ2xvYl90IGdsb2JiZXI7CisgICAgICAgY2hhciBwYXR0ZXJuW1BBVEhfTUFYXTsKKy0gICAgICBzbnByaW50ZiAocGF0dGVybiwgUEFUSF9NQVgsICIlcy8qLmtvIiwgbmV3X3N0YXB0bXBkaXIuY19zdHIoKSk7CisrICAgICAgaW50IHJldGxlbjsKKysKKysgICAgICByZXRsZW4gPSBzbnByaW50ZiAocGF0dGVybiwgUEFUSF9NQVgsICIlcy8qLmtvIiwgbmV3X3N0YXB0bXBkaXIuY19zdHIoKSk7CisrICAgICAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICAgICAgeworKyAgICAgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInBhdHRlcm4iKSk7CisrICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysKKyAgICAgICByYyA9IGdsb2IgKHBhdHRlcm4sIEdMT0JfRVJSLCBOVUxMLCAmZ2xvYmJlcik7CisgICAgICAgaWYgKHJjKQorICAgICAgICAgc2VydmVyX2Vycm9yIChfRigiVW5hYmxlIHRvIGZpbmQgYSBtb2R1bGUgaW4gJXMiLCBuZXdfc3RhcHRtcGRpci5jX3N0cigpKSk7CitAQCAtMjE2NCw2ICsyMTg2LDcgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5IGZvciBlYWNoIGNvbm5lY3Rpb24uKi8KKyAgIHZlY3RvcjxzdHJpbmc+ICAgICBhcmd2OworICAgUFJJbnQzMiAgICAgICAgICAgIGJ5dGVzUmVhZDsKKysgIGludAkJICAgICByZXRsZW47CisgCisgICAvKiBEZXRhdGNoIHRvIGF2b2lkIGEgbWVtb3J5IGxlYWsgKi8KKyAgIGlmKG1heF90aHJlYWRzID4gMCkKK0BAIC0yMjEzLDcgKzIyMzYsMTMgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAjZW5kaWYKKyAKKyAgIHNlY1N0YXR1cyA9IFNFQ0ZhaWx1cmU7CistICBzbnByaW50Zih0bXBkaXIsIFBBVEhfTUFYLCAiJXMvc3RhcC1zZXJ2ZXIuWFhYWFhYIiwgZ2V0ZW52KCJUTVBESVIiKSA/OiAiL3RtcCIpOworKyAgcmV0bGVuID0gc25wcmludGYodG1wZGlyLCBQQVRIX01BWCwgIiVzL3N0YXAtc2VydmVyLlhYWFhYWCIsIGdldGVudigiVE1QRElSIikgPzogIi90bXAiKTsKKysgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKKysgICAgeworKyAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkVycm9yIGNyZWF0aW5nICVzIG5hbWUiLCAidGVtcG9yYXJ5IGRpcmVjdG9yeSIpKTsKKysgICAgICB0bXBkaXJbMF09MDsgLyogcHJldmVudCAvYmluL3JtICovCisrICAgICAgZ290byBjbGVhbnVwOworKyAgICB9CisgICByYzEgPSBta2R0ZW1wKHRtcGRpcik7CisgICBpZiAoISByYzEpCisgICAgIHsKK0BAIC0yMjIzLDkgKzIyNTIsMjAgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAgICAgfQorIAorICAgLyogQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGVzIG5hbWVzIGFuZCBkaXJlY3Rvcmllcy4gICovCistICBzbnByaW50ZiAocmVxdWVzdEZpbGVOYW1lLCBQQVRIX01BWCwgIiVzL3JlcXVlc3QuemlwIiwgdG1wZGlyKTsKKysgIHJldGxlbiA9IHNucHJpbnRmIChyZXF1ZXN0RmlsZU5hbWUsIFBBVEhfTUFYLCAiJXMvcmVxdWVzdC56aXAiLCB0bXBkaXIpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJyZXF1ZXN0LnppcCBwYXRoIikpOworKyAgICAgIGdvdG8gY2xlYW51cDsKKysgICAgfQorKworKyAgcmV0bGVuID0gc25wcmludGYgKHJlcXVlc3REaXJOYW1lLCBQQVRIX01BWCwgIiVzL3JlcXVlc3QiLCB0bXBkaXIpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJyZXF1ZXN0IGRpcmVjdG9yeSBwYXRoIikpOworKyAgICAgIGdvdG8gY2xlYW51cDsKKysgICAgfQorIAorLSAgc25wcmludGYgKHJlcXVlc3REaXJOYW1lLCBQQVRIX01BWCwgIiVzL3JlcXVlc3QiLCB0bXBkaXIpOworICAgcmMgPSBta2RpcihyZXF1ZXN0RGlyTmFtZSwgMDcwMCk7CisgICBpZiAocmMpCisgICAgIHsKK0BAIC0yMjMzLDcgKzIyNzMsMTMgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAgICAgICBnb3RvIGNsZWFudXA7CisgICAgIH0KKyAKKy0gIHNucHJpbnRmIChyZXNwb25zZURpck5hbWUsIFBBVEhfTUFYLCAiJXMvcmVzcG9uc2UiLCB0bXBkaXIpOworKyAgcmV0bGVuID0gc25wcmludGYgKHJlc3BvbnNlRGlyTmFtZSwgUEFUSF9NQVgsICIlcy9yZXNwb25zZSIsIHRtcGRpcik7CisrICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCisrICAgIHsKKysgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInJlc3BvbnNlIGRpcmVjdG9yeSBwYXRoIikpOworKyAgICAgIGdvdG8gY2xlYW51cDsKKysgICAgfQorKworICAgcmMgPSBta2RpcihyZXNwb25zZURpck5hbWUsIDA3MDApOworICAgaWYgKHJjKQorICAgICB7CitAQCAtMjI0Myw3ICsyMjg5LDEyIEBAIGhhbmRsZV9jb25uZWN0aW9uICh2b2lkICphcmcpCisgICAvLyBTZXQgdGhpcyBlYXJseSwgc2luY2UgaXQgZ2V0cyB1c2VkIGZvciBlcnJvcnMgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIGNsaWVudC4KKyAgIHN0YXBzdGRlcnIgPSBzdHJpbmcocmVzcG9uc2VEaXJOYW1lKSArICIvc3RkZXJyIjsKKyAKKy0gIHNucHJpbnRmIChyZXNwb25zZUZpbGVOYW1lLCBQQVRIX01BWCwgIiVzL3Jlc3BvbnNlLnppcCIsIHRtcGRpcik7CisrICByZXRsZW4gPSBzbnByaW50ZiAocmVzcG9uc2VGaWxlTmFtZSwgUEFUSF9NQVgsICIlcy9yZXNwb25zZS56aXAiLCB0bXBkaXIpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJyZXNwb25zZS56aXAgcGF0aCIpKTsKKysgICAgICBnb3RvIGNsZWFudXA7CisrICAgIH0KKyAKKyAgIC8qIFJlYWQgZGF0YSBmcm9tIHRoZSBzb2NrZXQuCisgICAgKiBJZiB0aGUgdXNlciBpcyByZXF1ZXN0aW5nL3JlcXVpcmluZyBhdXRoZW50aWNhdGlvbiwgYXV0aGVudGljYXRlCitkaWZmIC0tZ2l0IGEvdHJhbnNsYXRlLmN4eCBiL3RyYW5zbGF0ZS5jeHgKK2luZGV4IDEyNDBhODBlYy4uNGFkZTA2ZmRkIDEwMDY0NAorLS0tIGEvdHJhbnNsYXRlLmN4eAorKysrIGIvdHJhbnNsYXRlLmN4eAorQEAgLTc4NjAsNyArNzg2MCw3IEBAIHRyYW5zbGF0ZV9wYXNzIChzeXN0ZW10YXBfc2Vzc2lvbiYgcykKKyAJICBpZiAodmVyc2lvbnMuc2l6ZSgpID49IDMgJiYgcy52ZXJib3NlID4gMSkKKyAJICAgIGNsb2cgPDwgX0YoImlnbm9yaW5nIGV4dHJhIHBhcnRzIG9mIGNvbXBhdCB2ZXJzaW9uOiAlcyIsIHMuY29tcGF0aWJsZS5jX3N0cigpKSA8PCBlbmRsOworIAl9CistICAgICAgY2F0Y2ggKGNvbnN0IHJ1bnRpbWVfZXJyb3IpCisrICAgICAgY2F0Y2ggKGNvbnN0IHJ1bnRpbWVfZXJyb3ImKQorIAl7CisgCSAgdGhyb3cgU0VNQU5USUNfRVJST1IoX0YoInBhcnNlIGVycm9yIGluIGNvbXBhdGliaWxpdHkgdmVyc2lvbjogJXMiLCBzLmNvbXBhdGlibGUuY19zdHIoKSkpOworIAl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtTWFrZS1zdXJlLXN5c3Jvb3QtcGF0aHMtZG9uLXQtZW5kLXdpdGgtYS1zbGFzaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1NYWtlLXN1cmUtc3lzcm9vdC1wYXRocy1kb24tdC1lbmQtd2l0aC1hLXNsYXNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZDkwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtTWFrZS1zdXJlLXN5c3Jvb3QtcGF0aHMtZG9uLXQtZW5kLXdpdGgtYS1zbGFzaC5wYXRjaApAQCAtMCwwICsxLDEyOCBAQAorRnJvbSA0MWVmYWQwNDczMGJlODk4ODlkMTQ4MzcxOWY5YTZjOTM5NmRjMjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGF2aWQgU21pdGggPGRzbWl0aEByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAxNCBNYXIgMjAxOCAxNzowNToyNSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIHN1cmUgc3lzcm9vdCBwYXRocyBkb24ndCBlbmQgd2l0aCBhIHNsYXNoLgorCisqIHNlc3Npb24uY3h4IChwYXJzZV9jbWRsaW5lKTogTWFrZSBzdXJlIGEgc3lzcm9vdCBwYXRoIGRvZXMgbm90IGVuZCB3aXRoCisgIGEgJy8nLCBzaW5jZSB3ZSBidWlsZCBwYXRocyBsaWtlOiBzeXNyb290ICsgIi9saWIvbW9kdWxlcyIuIElmIHRoZQorICBzeXNyb290IHBhdGggZW5kcyB3aXRoIGEgJy8nLCB3ZSBlbmQgdXAgd2l0aCBwYXRocyBsaWtlCisgICcvU1lTUk9PVC8vbGliL21vZHVsZXMnLgorICAoc2V0dXBfa2VybmVsX3JlbGVhc2UpOiBUYWtlIGEgc3RyaW5nIHBhcmFtZXRlciwgbm90IGEgY2hhcmFjdGVyIHBvaW50ZXIuCisqIHNlc3Npb24uaDogVXBkYXRlIHNldHVwX2tlcm5lbF9yZWxlYXNlKCkgcHJvdG90eXBlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KKy0tLQorIHNlc3Npb24uY3h4IHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQorIHNlc3Npb24uaCAgIHwgIDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvc2Vzc2lvbi5jeHgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zZXNzaW9uLmN4eAorKysrIGdpdC9zZXNzaW9uLmN4eAorQEAgLTcyMiw2ICs3MjIsOSBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgICBjbGllbnRfb3B0aW9uc19kaXNhbGxvd2VkX2Zvcl91bnByaXZpbGVnZWQgPSAiIjsKKyAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBhZGRpdGlvbmFsX3Vud2luZHN5bV9tb2R1bGVzOworICAgc3RydWN0IHJsaW1pdCBvdXJfcmxpbWl0OworKyAgYm9vbCBzeXNyb290X29wdGlvbl9zZWVuID0gZmFsc2U7CisrICBzdHJpbmcga2VybmVsX3JlbGVhc2VfdmFsdWU7CisrCisgICB3aGlsZSAodHJ1ZSkKKyAgICAgeworICAgICAgIGNoYXIgKiBudW1fZW5kcHRyOworQEAgLTg4Nyw3ICs4OTAsNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgCSAgICAvLyBOb3RlIHRoYXQgJy0nIG11c3QgY29tZSBsYXN0IGluIGEgcmVnZXggYnJhY2tldCBleHByZXNzaW9uLgorICAgICAgICAgICAgIGFzc2VydF9yZWdleHBfbWF0Y2goIi1yIHBhcmFtZXRlciBmcm9tIGNsaWVudCIsIG9wdGFyZywgIl5bYS16MC05Xy4rLV0rJCIpOworIAkgIHNlcnZlcl9hcmdzLnB1c2hfYmFjayAoc3RyaW5nICgiLSIpICsgKGNoYXIpZ3JjICsgb3B0YXJnKTsKKy0gICAgICAgICAgc2V0dXBfa2VybmVsX3JlbGVhc2Uob3B0YXJnKTsKKysJICBrZXJuZWxfcmVsZWFzZV92YWx1ZSA9IG9wdGFyZzsKKyAgICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICBjYXNlICdhJzoKK0BAIC0xNDczLDcgKzE0NzYsNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgCSAgaWYgKGNsaWVudF9vcHRpb25zKSB7CisgCSAgICAgIGNlcnIgPDwgX0YoIkVSUk9SOiAlcyBpbnZhbGlkIHdpdGggJXMiLCAiLS1zeXNyb290IiwgIi0tY2xpZW50LW9wdGlvbnMiKSA8PCBlbmRsOworIAkgICAgICByZXR1cm4gMTsKKy0JICB9IGVsc2UgaWYgKCFzeXNyb290LmVtcHR5KCkpIHsKKysJICB9IGVsc2UgaWYgKHN5c3Jvb3Rfb3B0aW9uX3NlZW4pIHsKKyAJICAgICAgY2VyciA8PCAiRVJST1I6IG11bHRpcGxlIC0tc3lzcm9vdCBvcHRpb25zIG5vdCBzdXBwb3J0ZWQiIDw8IGVuZGw7CisgCSAgICAgIHJldHVybiAxOworIAkgIH0gZWxzZSB7CitAQCAtMTQ4NywxMSArMTQ5MCwxNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgCisgCSAgICAgIHN5c3Jvb3QgPSBzdHJpbmcoc3BhdGgpOworIAkgICAgICBmcmVlIChzcGF0aCk7CistCSAgICAgIGlmIChzeXNyb290W3N5c3Jvb3Quc2l6ZSgpIC0gMV0gIT0gJy8nKQorLQkJICBzeXNyb290LmFwcGVuZCgiLyIpOworIAorLQkgICAgICBicmVhazsKKysJICAgICAgLy8gV2UgZG8gcGF0aCBjcmVhdGlvbiBsaWtlIHRoaXM6CisrCSAgICAgIC8vICAgc3lzcm9vdCArICIvbGliL21vZHVsZXMiCisrCSAgICAgIC8vIFNvLCB3ZSBkb24ndCB3YW50IHRoZSBzeXNyb290IHBhdGggdG8gZW5kIHdpdGggYSAnLycsCisrCSAgICAgIC8vIG90aGVyd2lzZSB3ZSdsbCBlbmQgdXAgd2l0aCAnL2Zvby8vbGliL21vZHVsZXMnLgorKwkgICAgICBpZiAoc3lzcm9vdC5iYWNrKCkgPT0gJy8nKSB7CisrCQkgIHN5c3Jvb3QucG9wX2JhY2soKTsKKysJICAgICAgfQorIAkgIH0KKysJICBzeXNyb290X29wdGlvbl9zZWVuID0gdHJ1ZTsKKysJICBicmVhazsKKyAKKyAJY2FzZSBMT05HX09QVF9TWVNFTlY6CisgCSAgaWYgKGNsaWVudF9vcHRpb25zKSB7CitAQCAtMTUwMSw3ICsxNTEwLDcgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnBhcnNlX2NtZGxpbmUgKGludCBhcgorIAkgICAgICBzdHJpbmcgc3lzZW52X3N0ciA9IG9wdGFyZzsKKyAJICAgICAgc3RyaW5nIHZhbHVlOworIAkgICAgICBzaXplX3QgcG9zOworLQkgICAgICBpZiAoc3lzcm9vdC5lbXB0eSgpKSB7CisrCSAgICAgIGlmICghIHN5c3Jvb3Rfb3B0aW9uX3NlZW4pIHsKKyAJCSAgY2VyciA8PCAiRVJST1I6IC0tc3lzZW52IG11c3QgZm9sbG93IC0tc3lzcm9vdCIgPDwgZW5kbDsKKyAJCSAgcmV0dXJuIDE7CisgCSAgICAgIH0KK0BAIC0xNjQ2LDYgKzE2NTUsMTUgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnBhcnNlX2NtZGxpbmUgKGludCBhcgorIAl9CisgICAgIH0KKyAKKysgIGlmICghIGtlcm5lbF9yZWxlYXNlX3ZhbHVlLmVtcHR5KCkpCisrICB7CisrICAgICAgc2V0dXBfa2VybmVsX3JlbGVhc2Uoa2VybmVsX3JlbGVhc2VfdmFsdWUpOworKyAgfQorKyAgZWxzZSBpZiAoISBzeXNyb290LmVtcHR5KCkpCisrICB7CisrICAgICAga2VybmVsX2J1aWxkX3RyZWUgPSBzeXNyb290ICsgIi9saWIvbW9kdWxlcy8iICsga2VybmVsX3JlbGVhc2UgICsgIi9idWlsZCI7CisrICB9CisrCisgICByZXR1cm4gMDsKKyB9CisgCitAQCAtMjE1Miw3ICsyMTcwLDcgQEAgdm9pZCBzeXN0ZW10YXBfc2Vzc2lvbjo6aW5zZXJ0X2xvYWRlZF9tbworIH0KKyAKKyB2b2lkCistc3lzdGVtdGFwX3Nlc3Npb246OnNldHVwX2tlcm5lbF9yZWxlYXNlIChjb25zdCBjaGFyKiBrc3RyKSAKKytzeXN0ZW10YXBfc2Vzc2lvbjo6c2V0dXBfa2VybmVsX3JlbGVhc2UgKGNvbnN0IHN0cmluZyYga3N0cikgCisgeworICAgLy8gU29tZXRpbWVzIHdlIG1heSBnZXQgZHVwZXMgaGVyZS4uLiBlLmcuIGEgc2VydmVyIG1heSBoYXZlIGEgZnVsbAorICAgLy8gLXIgL3BhdGgvdG8va2VybmVsIGZvbGxvd2VkIGJ5IGEgY2xpZW50J3MgLXIga2VybmVsLgorQEAgLTIxODMsNyArMjIwMSw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpzZXR1cF9rZXJuZWxfcmVsZWFzZQorICAgZWxzZQorICAgICB7CisgICAgICAgdXBkYXRlX3JlbGVhc2Vfc3lzcm9vdCA9IHRydWU7CistICAgICAga2VybmVsX3JlbGVhc2UgPSBzdHJpbmcgKGtzdHIpOworKyAgICAgIGtlcm5lbF9yZWxlYXNlID0ga3N0cjsKKyAgICAgICBpZiAoIWtlcm5lbF9yZWxlYXNlLmVtcHR5KCkpCisgICAgICAgICBrZXJuZWxfYnVpbGRfdHJlZSA9ICIvbGliL21vZHVsZXMvIiArIGtlcm5lbF9yZWxlYXNlICsgIi9idWlsZCI7CisgCitJbmRleDogZ2l0L3Nlc3Npb24uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Nlc3Npb24uaAorKysrIGdpdC9zZXNzaW9uLmgKK0BAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgorIAorICAgLy8gTkI6IEl0IGlzIHZlcnkgaW1wb3J0YW50IGZvciBhbGwgb2YgdGhlIGFib3ZlIChhbmQgYmVsb3cpIGZpZWxkcworICAgLy8gdG8gYmUgY2xlYXJlZCBpbiB0aGUgc3lzdGVtdGFwX3Nlc3Npb24gY3RvciAoc2Vzc2lvbi5jeHgpLgorLSAgdm9pZCBzZXR1cF9rZXJuZWxfcmVsZWFzZSAoY29uc3QgY2hhcioga3N0cik7CisrICB2b2lkIHNldHVwX2tlcm5lbF9yZWxlYXNlIChjb25zdCBzdGQ6OnN0cmluZyYga3N0cik7CisgICB2b2lkIGluc2VydF9sb2FkZWRfbW9kdWxlcyAoKTsKKyAKKyAgIC8vIGNvbW1hbmQgbGluZSBwYXJzaW5nCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtVXNlLXN5c3Jvb3Qtd2hlbi1sb29raW5nLWZvci10aGUtU3lzdGVtLm1hcC1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLVVzZS1zeXNyb290LXdoZW4tbG9va2luZy1mb3ItdGhlLVN5c3RlbS5tYXAtZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjgyMGIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLVVzZS1zeXNyb290LXdoZW4tbG9va2luZy1mb3ItdGhlLVN5c3RlbS5tYXAtZmlsZS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDQzNjA2M2Q1ZTQ3MzhhOWIwMzUzNWQzMzBhMjI0MmJlNTExOGU3NDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYXZpZCBTbWl0aCA8ZHNtaXRoQHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDggTWFyIDIwMTggMTY6MDE6NTggLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHN5c3Jvb3Qgd2hlbiBsb29raW5nIGZvciB0aGUgU3lzdGVtLm1hcCBmaWxlLgorCitBZGQgc3lzcm9vdCB0byBzeXN0ZW1fbWFwX3BhdGggKyAiL2Jvb3QvU3lzdGVtLm1hcCIgY2FzZS4gT3RoZXJ3aXNlCitzdGFwIHRyaWVzIHRvIGxvb2sgc3ltYm9scyBvbiBob3N0IHN5c3RlbSBhbmQgaXQgcHJvZHVjZSBlcnJvciBsaWtlIHRoaXM6CisKKz4gS2VybmVsIHN5bWJvbCB0YWJsZSAvYm9vdC9TeXN0ZW0ubWFwLTQuOS43OC15b2N0by1zdGFuZGFyZCB1bmF2YWlsYWJsZSwgKE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgc2Vzc2lvbi5jeHggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiBnaXQvc2Vzc2lvbi5jeHgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zZXNzaW9uLmN4eAorKysrIGdpdC9zZXNzaW9uLmN4eAorQEAgLTIwMTMsNyArMjAxMyw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9rZXJuZWxfZnVuY3Rpb24KKyAJY2xvZyA8PCBfRigiS2VybmVsIHN5bWJvbCB0YWJsZSAlcyB1bmF2YWlsYWJsZSwgKCVzKSIsCisgCQkgICBzeXN0ZW1fbWFwX3BhdGguY19zdHIoKSwgc3RyZXJyb3IoZXJybm8pKSA8PCBlbmRsOworIAorLSAgICAgIHN5c3RlbV9tYXBfcGF0aCA9ICIvYm9vdC9TeXN0ZW0ubWFwLSIgKyBrZXJuZWxfcmVsZWFzZTsKKysgICAgICBzeXN0ZW1fbWFwX3BhdGggPSBzeXNyb290ICsgIi9ib290L1N5c3RlbS5tYXAtIiArIGtlcm5lbF9yZWxlYXNlOworICAgICAgIHN5c3RlbV9tYXAuY2xlYXIoKTsKKyAgICAgICBzeXN0ZW1fbWFwLm9wZW4oc3lzdGVtX21hcF9wYXRoLmNfc3RyKCksIGlmc3RyZWFtOjppbik7CisgICAgICAgaWYgKCEgc3lzdGVtX21hcC5pc19vcGVuKCkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtX3N0cF91bW9kdWxlX3JlbG9jYXRlLW5lZWRzLXRhcmdldC1maWxlLXBhdGgtbm90LWhvcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1fc3RwX3Vtb2R1bGVfcmVsb2NhdGUtbmVlZHMtdGFyZ2V0LWZpbGUtcGF0aC1ub3QtaG9zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MTgxYTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtX3N0cF91bW9kdWxlX3JlbG9jYXRlLW5lZWRzLXRhcmdldC1maWxlLXBhdGgtbm90LWhvcy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDE4M2M3YTdhODE2NzMzM2M4NzM1MjVmNzkwODkxMzgzN2I4ZGMzY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KK0RhdGU6IFR1ZSwgMjAgTWFyIDIwMTggMTI6NDE6MDUgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gX3N0cF91bW9kdWxlX3JlbG9jYXRlIG5lZWRzIHRhcmdldCBmaWxlIHBhdGgsIG5vdCBob3N0IGZpbGUKKyBwYXRoCisKK1N0cmlwIG9mIHN5c3Jvb3QgZnJvbSBtb2R1bGUgbmFtZSBpcyByZXF1aXJlZCB3aGVuIF9zdHBfdW1vZHVsZV9yZWxvY2F0ZQorY2FsbCBpcyBnZW5lcmF0ZWQuIE90aGVyd2lzZSBwYXRoIHdvbid0IG1hdGNoIHBhdGggb24gdGFyZ2V0IGFuZCBjb3VsZAord2lsbCBmYWlsIHRvIGNhbGN1bGF0ZWQgYWRkcmVzcyB3aXRoaW4gdGhlIGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgbG9jMnN0YXAuY3h4IHwgNSArKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xvYzJzdGFwLmN4eCBiL2xvYzJzdGFwLmN4eAoraW5kZXggNDgxOGVlMC4uZTA5OTU0ZiAxMDA2NDQKKy0tLSBhL2xvYzJzdGFwLmN4eAorKysrIGIvbG9jMnN0YXAuY3h4CitAQCAtMTcsNiArMTcsNyBAQAorIAorICNpbmNsdWRlICJsb2Myc3RhcC5oIgorICNpbmNsdWRlICJkd2ZscHAuaCIKKysjaW5jbHVkZSAidGFwc2V0cy5oIgorIAorICNpZiAhIF9FTEZVVElMU19QUkVSRVEoMCwgMTUzKQorICNkZWZpbmUgRFdfT1BfR05VX2VudHJ5X3ZhbHVlIDB4ZjMKK0BAIC0xMDYsNyArMTA3LDkgQEAgbG9jYXRpb25fY29udGV4dDo6dHJhbnNsYXRlX2FkZHJlc3MoRHdhcmZfQWRkciBhZGRyKQorICAgICAgICAgICBjID0gIi8qIHByYWdtYTp2bWEgKi8gIgorICAgICAgICAgICAgICAgIih7IHVuc2lnbmVkIGxvbmcgYWRkciA9IDA7ICIKKyAgICAgICAgICAgICAgICJhZGRyID0gX3N0cF91bW9kdWxlX3JlbG9jYXRlIChcIiIKKy0gICAgICAgICAgICAgICsgcmVzb2x2ZV9wYXRoKGR3LT5tb2R1bGVfbmFtZS5jX3N0cigpKSArICJcIiwgIgorKyAgICAgICAgICAgICAgKyBwYXRoX3JlbW92ZV9zeXNyb290KGR3LT5zZXNzLAorKwkJCQkgICAgcmVzb2x2ZV9wYXRoKGR3LT5tb2R1bGVfbmFtZS5jX3N0cigpKSkKKysJICAgICAgKyAiXCIsICIKKyAgICAgICAgICAgICAgICsgbGV4X2Nhc3RfaGV4IChhZGRyKQorIAkgICAgICArICIsIGN1cnJlbnQpOyBhZGRyOyB9KSI7CisgCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1kZWJ1Z2luZm8tbG9va3VwLXdpdGgtc3lzcm9vdC1jYXNlLWRvLW5vdC1yZW1vdmUtc3lzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLWRlYnVnaW5mby1sb29rdXAtd2l0aC1zeXNyb290LWNhc2UtZG8tbm90LXJlbW92ZS1zeXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYwNjQyZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1kZWJ1Z2luZm8tbG9va3VwLXdpdGgtc3lzcm9vdC1jYXNlLWRvLW5vdC1yZW1vdmUtc3lzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYjI5ZTQ0OGUxMjA0MGVkOGY0ZDgzNzQzYTE0ZGIwZjEzOGE3Y2M2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorRGF0ZTogV2VkLCAxNCBNYXIgMjAxOCAxNjo1NDowOCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBkZWJ1Z2luZm8gbG9va3VwIHdpdGggc3lzcm9vdCBjYXNlIGRvIG5vdCByZW1vdmUgc3lzcm9vdCBmcm9tCisgZmlsZV9uYW1lCisKK0lmIHN5c3Jvb3Qgb3B0aW9uIGlzIHBhc3NlZCwgYW5kIGRlYnVnIHN5bWJvbHMgcmVzaWRlIGluIHN5c3Jvb3QgYWxvbmcKK3dpdGggZXhlY3V0YWJsZSA8Zm9vPiBpbiA8Zm9vX2Rpcj4vLmRlYnVnLzxmb29fZmlsZT4gZGlyZWN0b3J5LAorc3RhcCBmYWlscyB0byBmaW5kIGRlYnVnaW5mbyBiZWNhdXNlIGl0IHN0cmlwcyBvdXQgc3lzcm9vdCBwYXRoCitmcm9tIGZpbGVfbmFtZSBzbyBkd2ZsX3N0YW5kYXJkX2ZpbmRfZGVidWdpbmZvIGVuZHMgdXAgbG9va2luZyBhdAoraG9zdCA8Zm9vX2Rpcj4vLmRlYnVnLzxmb29fZmlsZT4gcmF0aGVyIHRoZW4gY2hlY2tpbmcKKzxzeXNyb290Pi88Zm9vX2Rpcj4vLmRlYnVnLzxmb29fZmlsZT4uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgc2V0dXBkd2ZsLmN4eCB8IDEyIC0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwZHdmbC5jeHggYi9zZXR1cGR3ZmwuY3h4CitpbmRleCAxMWUwYmIyLi4yYTg3OTgyIDEwMDY0NAorLS0tIGEvc2V0dXBkd2ZsLmN4eAorKysrIGIvc2V0dXBkd2ZsLmN4eAorQEAgLTYyNywxOCArNjI3LDYgQEAgaW50ZXJuYWxfZmluZF9kZWJ1Z2luZm8gKER3ZmxfTW9kdWxlICptb2QsCisgCisgICBjYWxsX2R3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm86CisgCistICBpZiAoY3VycmVudF9zZXNzaW9uX2Zvcl9maW5kX2RlYnVnaW5mbykKKy0gICAgeworLSAgICAgIHN0cmluZyBzeXNyb290ID0gY3VycmVudF9zZXNzaW9uX2Zvcl9maW5kX2RlYnVnaW5mby0+c3lzcm9vdCArICIvKiI7CistICAgICAgaW50ICAgIGZvdW5kICAgPSBmbm1hdGNoKHN5c3Jvb3QuY19zdHIoKSwgZmlsZV9uYW1lLCAwKTsKKy0KKy0gICAgICBpZiAoZm91bmQpCistCXsKKy0JICBmaWxlX25hbWUgPSBmaWxlX25hbWUKKy0JICAgICsgY3VycmVudF9zZXNzaW9uX2Zvcl9maW5kX2RlYnVnaW5mby0+c3lzcm9vdC5sZW5ndGgoKSAtIDE7CistCX0KKy0gICAgfQorLQorICAgLyogQ2FsbCB0aGUgb3JpZ2luYWwgZHdmbF9zdGFuZGFyZF9maW5kX2RlYnVnaW5mbyAqLworICAgcmV0dXJuIGR3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm8obW9kLCB1c2VyZGF0YSwgbW9kbmFtZSwgYmFzZSwKKyAgICAgICAgICAgICAgIGZpbGVfbmFtZSwgZGVidWdsaW5rX2ZpbGUsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy1mb2xsb3ctdS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLWZvbGxvdy11LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZTdkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy1mb2xsb3ctdS5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDdlMTFmMTI5ZmYzNzBjZTVmMzk4MTJjZTJhZTZjZTQwODE4YTM0N2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KK0RhdGU6IFRodSwgMjIgTWFyIDIwMTggMTY6MDI6MDIgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzcm9vdDogZml4IHNob3J0IHJlbGVhc2UgLXIgb3B0aW9uIGhhbmRsaW5nIGZvbGxvdyB1cAorCitJbiBjYXNlIG9mIHN5c3Jvb3Qgc2V0IGFuZCBzaG9ydCByZWxlYXNlIC1yIG9wdGlvbiBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlCit0byBwYXNzIHNob3J0IHJlbGVhc2UgbmFtZSBpbnRvIGR3ZmxfbGludXhfa2VybmVsX3JlcG9ydF9vZmZsaW5lCitmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBub3QgYXdhcmUgYWJvdXQgc3lzcm9vdCBhbmQgaXQgd29uJ3QgbG9vayBmb3IKK2tlcm5lbCBtb2R1bGVzIHVuZGVyIHN5c3Jvb3QgZGlyZWN0b3J5LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KKy0tLQorIHNldHVwZHdmbC5jeHggfCAxMCArKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXBkd2ZsLmN4eCBiL3NldHVwZHdmbC5jeHgKK2luZGV4IGM0MTlhZmEuLjBjZjU4MTAgMTAwNjQ0CistLS0gYS9zZXR1cGR3ZmwuY3h4CisrKysgYi9zZXR1cGR3ZmwuY3h4CitAQCAtMzY3LDcgKzM2NywxNSBAQCBzZXR1cF9kd2ZsX2tlcm5lbCAodW5zaWduZWQgKm1vZHVsZXNfZm91bmQsIHN5c3RlbXRhcF9zZXNzaW9uICZzKQorICAgLy8gaGFyZC1jb2RlIHRoaXMgbWFnaWMgaGVyZS4KKyAgIHN0cmluZyBsaWJfcGF0aCA9IHMuc3lzcm9vdCArICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UgKyAiL2J1aWxkIjsKKyAgIGlmIChzLmtlcm5lbF9idWlsZF90cmVlID09IGxpYl9wYXRoKQorLSAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX3JlbGVhc2U7CisrICAgIHsKKysgICAgICBpZiAocy5zeXNyb290ICE9ICIiKQorKyAgICAgICAgLy8gSWYgd2UgaGF2ZSBzeXNyb290IHNldCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIHBhc3MKKysgICAgICAgIC8vIHNob3J0IHJlbGVhc2UgdG8gZHdmbCwgaXQgd29uJ3QgdGFrZSBhIHN5c3Jvb3QgaW50bworKyAgICAgICAgLy8gYWNjb3VudC4gTGV0J3MgY29uc3RydWN0IGZ1bGwgcGF0aCBpbiBzdWNoIGNhc2UuCisrCWVsZnV0aWxzX2tlcm5lbF9wYXRoID0gc3RyaW5nKHMuc3lzcm9vdCArICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UpOworKyAgICAgIGVsc2UKKysJZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzLmtlcm5lbF9yZWxlYXNlOworKyAgICB9CisgICBlbHNlCisgICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfYnVpbGRfdHJlZTsKKyAgIG9mZmxpbmVfbW9kdWxlc19mb3VuZCA9IDA7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMxZDYyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gYTljZTg5YmNkMmQ3ODcyOGZhZWY1OWJkYTYwZTc1NTEwOTcyY2Q1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorRGF0ZTogV2VkLCAxNCBNYXIgMjAxOCAxNzowOTo0NCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBzeXNyb290OiBmaXggc2hvcnQgcmVsZWFzZSAtciBvcHRpb24gaGFuZGxpbmcKKworKiBzZXR1cGR3ZmwuY3h4IChkZWJ1Z2luZm9fcGF0aF9pbnNlcnRfc3lzcm9vdCk6IEFkZCBhICcvJyB0byB0aGUgZW5kIG9mCisgIHRoZSBzeXNyb290IGZvciBwYXRoX2luc2VydF9zeXNyb290KCkuCisgIChzZXR1cF9kd2ZsX2tlcm5lbCk6IFNpbXBsaWZ5IGxvZ2ljIHdoZW4gZmluZGluZyB0aGUga2VybmVsIHBhdGggdG8gc2VuZAorICB0byBlbGZ1dGlscy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CistLS0KKyBzZXR1cGR3ZmwuY3h4IHwgMTkgKysrKysrKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXBkd2ZsLmN4eCBiL3NldHVwZHdmbC5jeHgKK2luZGV4IDJhODc5ODIuLmY2YzMxNTcgMTAwNjQ0CistLS0gYS9zZXR1cGR3ZmwuY3h4CisrKysgYi9zZXR1cGR3ZmwuY3h4CitAQCAtMzM5LDYgKzMzOSwxMyBAQCBzdGF0aWMgY2hhciAqIHBhdGhfaW5zZXJ0X3N5c3Jvb3Qoc3RyaW5nIHN5c3Jvb3QsIHN0cmluZyBwYXRoKQorIAorIHZvaWQgZGVidWdpbmZvX3BhdGhfaW5zZXJ0X3N5c3Jvb3Qoc3RyaW5nIHN5c3Jvb3QpCisgeworKyAgLy8gRklYTUU6IFRoaXMgaXMgYSBzaG9ydC10ZXJtIGZpeCwgdW50aWwgd2UgZXhwZWN0IHN5c3Jvb3QgcGF0aHMgdG8KKysgIC8vIGFsd2F5cyBlbmQgd2l0aCBhICcvJyAoYW5kIG5ldmVyIGJlIGVtcHR5KS4KKysgIC8vCisrICAvLyBUaGUgcGF0aF9pbnNlcnRfc3lzcm9vdCgpIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBzeXNyb290IGhhcyBhICcvJworKyAgLy8gb24gdGhlIGVuZC4gTWFrZSBzdXJlIHRoYXQgaXMgdHJ1ZS4KKysgIGlmIChzeXNyb290LmJhY2soKSAhPSAnLycpCisrICAgIHN5c3Jvb3QucHVzaF9iYWNrKCcvJyk7CisgICBkZWJ1Z2luZm9fcGF0aCA9IHBhdGhfaW5zZXJ0X3N5c3Jvb3Qoc3lzcm9vdCwgZGVidWdpbmZvX3BhdGgpOworICAgZGVidWdpbmZvX3Vzcl9wYXRoID0gcGF0aF9pbnNlcnRfc3lzcm9vdChzeXNyb290LCBkZWJ1Z2luZm9fdXNyX3BhdGgpOworIH0KK0BAIC0zNTgsMTMgKzM2NSwxMSBAQCBzZXR1cF9kd2ZsX2tlcm5lbCAodW5zaWduZWQgKm1vZHVsZXNfZm91bmQsIHN5c3RlbXRhcF9zZXNzaW9uICZzKQorICAgLy8gbm8gd2F5IHRvIHNldCB0aGUgZHdmbF9jYWxsYmFjay5kZWJ1Z2luZm9fcGF0aCBhbmQgYWx3YXlzCisgICAvLyBwYXNzcyB0aGUgcGxhaW4ga2VybmVsX3JlbGVhc2UgaGVyZS4gIFNvIGluc3RlYWQgd2UgaGF2ZSB0bworICAgLy8gaGFyZC1jb2RlIHRoaXMgbWFnaWMgaGVyZS4KKy0gICBzdHJpbmcgbGliX3BhdGggPSAiL2xpYi9tb2R1bGVzLyIgKyBzLmtlcm5lbF9yZWxlYXNlICsgIi9idWlsZCI7CistICAgaWYgKHMua2VybmVsX2J1aWxkX3RyZWUgPT0gc3RyaW5nKHMuc3lzcm9vdCArIGxpYl9wYXRoKSB8fAorLSAgICAgICAocy5rZXJuZWxfYnVpbGRfdHJlZSA9PSBsaWJfcGF0aAorLQkmJiBzLnN5c3Jvb3QgPT0gIi8iKSkKKy0gICAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX3JlbGVhc2U7CistICAgZWxzZQorLSAgICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfYnVpbGRfdHJlZTsKKysgIHN0cmluZyBsaWJfcGF0aCA9IHMuc3lzcm9vdCArICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UgKyAiL2J1aWxkIjsKKysgIGlmIChzLmtlcm5lbF9idWlsZF90cmVlID09IGxpYl9wYXRoKQorKyAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX3JlbGVhc2U7CisrICBlbHNlCisrICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfYnVpbGRfdHJlZTsKKyAgIG9mZmxpbmVfbW9kdWxlc19mb3VuZCA9IDA7CisgCisgICAvLyBGaXJzdCB0cnkgdG8gcmVwb3J0IGZ1bGwgcGF0aCBtb2R1bGVzLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtaGFuZGxlLXN5bWJvbGljLWxpbmtzLXdpdGgtYWJzb2x1dGUtbmFtZS1yZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1oYW5kbGUtc3ltYm9saWMtbGlua3Mtd2l0aC1hYnNvbHV0ZS1uYW1lLXJlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTNkMzlhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtaGFuZGxlLXN5bWJvbGljLWxpbmtzLXdpdGgtYWJzb2x1dGUtbmFtZS1yZWwucGF0Y2gKQEAgLTAsMCArMSwxMTcgQEAKK0Zyb20gMjA0MTA4NWQxYTcwMDIwMWRjMDg4OTkxY2E4MTM2ZTc5MzViZjQyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorRGF0ZTogV2VkLCAyMSBNYXIgMjAxOCAxMTozNToyNiAtMDUwMAorU3ViamVjdDogW1BBVENIXSBzeXNyb290OiBoYW5kbGUgc3ltYm9saWMgbGlua3Mgd2l0aCBhYnNvbHV0ZSBuYW1lIHJlbGF0aXZlIHRvCisgc3lzcm9vdAorCitJbiBjYXNlIG9mIHN5bWJvbGljIGxpbmsgZm91bmQgdW5kZXIgc3lzcm9vdCBwb2ludCB0byBhYnNvbHV0ZSBwYXRoLAoraW5zdGVhZCBvZiB0cnlpbmcgdG8gbG9vayBmb3Igc3VjaCBhYnNvbHV0ZSBwYXRoIGluIGhvc3Qgc3lzdGVtLAorYXBwbHkgc3lzcm9vdCBwcmVmaXggZmlyc3QuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgdXRpbC5jeHggfCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKykKKworSW5kZXg6IGdpdC91dGlsLmN4eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3V0aWwuY3h4CisrKysgZ2l0L3V0aWwuY3h4CitAQCAtNDQxLDYgKzQ0MSw2NCBAQCBzcGxpdF9saW5lcyhjb25zdCBjaGFyICpidWYsIHNpemVfdCBuKQorICAgcmV0dXJuIGxpbmVzOworIH0KKyAKKytzdGF0aWMgc3RyaW5nCisrZm9sbG93X2xpbmsoY29uc3Qgc3RyaW5nJiBuYW1lLCBjb25zdCBzdHJpbmcmIHN5c3Jvb3QpCisreworKyAgY2hhciAqbGlua25hbWU7CisrICBzc2l6ZV90IHI7CisrICBzdHJpbmcgcmV0cGF0aDsKKysgIHN0cnVjdCBzdGF0IHN0OworKworKyAgY29uc3QgY2hhciAqZiA9IG5hbWUuY19zdHIoKTsKKysKKysgIGxzdGF0KGYsICZzdCk7CisrCisrICBsaW5rbmFtZSA9IChjaGFyICopIG1hbGxvYyhzdC5zdF9zaXplICsgMSk7CisrCisrICBpZiAobGlua25hbWUpCisrICAgIHsKKysgICAgICByID0gcmVhZGxpbmsoZiwgbGlua25hbWUsIHN0LnN0X3NpemUgKyAxKTsKKysgICAgICBsaW5rbmFtZVtzdC5zdF9zaXplXSA9ICdcMCc7CisrICAgICAgLyoKKysgICAgICAgKiBJZiB3ZSBoYXZlIG5vbi1lbXB0eSBzeXNyb290IGFuZCB3ZSBnb3QgbGluayB0aGF0CisrICAgICAgICogcG9pbnRzIHRvIGFic29sdXRlIHBhdGggbmFtZSwgd2UgbmVlZCB0byBsb29rIGF0CisrICAgICAgICogdGhpcyBwYXRoIHJlbGF0aXZlIHRvIHN5c3Jvb3QgaXRzZWxmLiBhY2Nlc3MgYW5kCisrICAgICAgICogc3RhdCB3aWxsIGZvbGxvdyBzeW1ib2xpYyBsaW5rcyBjb3JyZWN0bHkgb25seSBpbgorKyAgICAgICAqIGNhc2Ugd2l0aCBlbXB0eSBzeXNyb290LgorKyAgICAgICAqLworKyAgICAgIHdoaWxlIChyICE9IC0xICYmIGxpbmtuYW1lICYmIGxpbmtuYW1lWzBdID09ICcvJykKKysJeworKwkgIHN0cmluZyBmbmFtZTEgPSBzeXNyb290ICsgbGlua25hbWU7CisrCSAgY29uc3QgY2hhciAqZjEgPSBmbmFtZTEuY19zdHIoKTsKKysJICBpZiAoYWNjZXNzKGYxLCBYX09LKSA9PSAwCisrCSAgICAgICYmIHN0YXQoZjEsICZzdCkgPT0gMAorKwkgICAgICAmJiBTX0lTUkVHKHN0LnN0X21vZGUpKQorKwkgICAgeworKwkgICAgICByZXRwYXRoID0gZm5hbWUxOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJICBlbHNlIGlmIChsc3RhdChmMSwgJnN0KSA9PSAwCisrCQkgICAmJiBTX0lTTE5LKHN0LnN0X21vZGUpKQorKwkgICAgeworKwkgICAgICBmcmVlKGxpbmtuYW1lKTsKKysJICAgICAgbGlua25hbWUgPSAoY2hhciAqKSBtYWxsb2Moc3Quc3Rfc2l6ZSArIDEpOworKwkgICAgICBpZiAobGlua25hbWUpCisrCQl7CisrCQkgIHIgPSByZWFkbGluayhmMSwgbGlua25hbWUsIHN0LnN0X3NpemUgKyAxKTsKKysJCSAgbGlua25hbWVbc3Quc3Rfc2l6ZV0gPSAnXDAnOworKwkJfQorKwkgICAgfQorKwkgIGVsc2UKKysJICAgIHsKKysJICAgICAgYnJlYWs7CisrCSAgICB9CisrCX0KKysgICAgfQorKyAgZnJlZShsaW5rbmFtZSk7CisrCisrICByZXR1cm4gcmV0cGF0aDsKKyt9CisrCisgLy8gUmVzb2x2ZSBhbiBleGVjdXRhYmxlIG5hbWUgdG8gYSBjYW5vbmljYWwgZnVsbCBwYXRoIG5hbWUsIHdpdGggdGhlCisgLy8gc2FtZSBwb2xpY3kgYXMgZXhlY3ZwKCkuICBBIHByb2dyYW0gbmFtZSBub3QgY29udGFpbmluZyBhIHNsYXNoCisgLy8gd2lsbCBiZSBzZWFyY2hlZCBhbG9uZyB0aGUgJFBBVEguCitAQCAtNDY1LDYgKzUyMywxNCBAQCBzdHJpbmcgZmluZF9leGVjdXRhYmxlKGNvbnN0IHN0cmluZyYgbmFtCisgICBpZiAobmFtZS5maW5kKCcvJykgIT0gc3RyaW5nOjpucG9zKSAvLyBzbGFzaCBpbiB0aGUgcGF0aCBhbHJlYWR5PworICAgICB7CisgICAgICAgcmV0cGF0aCA9IHN5c3Jvb3QgKyBuYW1lOworKworKyAgICAgIGNvbnN0IGNoYXIgKmYgPSByZXRwYXRoLmNfc3RyKCk7CisrICAgICAgaWYgKHN5c3Jvb3QgIT0gIiIKKysJICAmJiBsc3RhdChmLCAmc3QpID09IDAKKysJICAmJiBTX0lTTE5LKHN0LnN0X21vZGUpKQorKwl7CisrCSAgcmV0cGF0aCA9IGZvbGxvd19saW5rKGYsIHN5c3Jvb3QpOworKwl9CisgICAgIH0KKyAgIGVsc2UgLy8gTm9wZSwgc2VhcmNoICRQQVRILgorICAgICB7CitAQCAtNDkzLDYgKzU1OSwxNiBAQCBzdHJpbmcgZmluZF9leGVjdXRhYmxlKGNvbnN0IHN0cmluZyYgbmFtCisgICAgICAgICAgICAgICAgICAgcmV0cGF0aCA9IGZuYW1lOworICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICBlbHNlIGlmIChzeXNyb290ICE9ICIiCisrICAgICAgICAgICAgICAgICAgICAgICAmJiBsc3RhdChmLCAmc3QpID09IDAKKysgICAgICAgICAgICAgICAgICAgICAgICYmIFNfSVNMTksoc3Quc3RfbW9kZSkpCisrCQl7CisrCQkgIHJldHBhdGggPSBmb2xsb3dfbGluayhmLCBzeXNyb290KTsKKysJCSAgaWYgKHJldHBhdGggIT0gIiIpCisrCQkgICAgeworKwkJICAgICAgYnJlYWs7CisrCQkgICAgfQorKwkJfQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9zeXN0ZW1fbWFwX2xvY2F0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9zeXN0ZW1fbWFwX2xvY2F0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTNhZjVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvc3lzdGVtX21hcF9sb2NhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLXN5c3RlbXRhcDogQ3Jvc3MgY29tcGlsYXRpb24gZml4Ci0KLVRoaXMgaXMgYSBjcm9zcyBjb21waWxhdGlvbiBmaXguIEl0IGFsbG93cyBzeXN0ZW10YXAgdG8gZmluZAotdGhlIGtlcm5lbCBtYXAgZmlsZSBpbiB0aGUgcmlnaHQgcGxhY2UsIGkuZS4gaW4gdGhlIGtlcm5lbCBidWlsZCB0cmVlLgotV2l0aG91dCB0aGlzIGZpeCBpdCB0YWtlcyBhIG1hcCBmaWxlIGZyb20gdGhlIGJ1aWxkIGhvc3QsIGlmIGF2YWlsYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1pa2hhaWwgRHVybmV2IDxtaWtoYWlsX2R1cm5ldkBtZW50b3IuY29tPgotCi1JbmRleDogZ2l0L3Nlc3Npb24uY3h4Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvc2Vzc2lvbi5jeHgKLSsrKyBnaXQvc2Vzc2lvbi5jeHgKLUBAIC0xNjM0LDcgKzE2MzQsNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2Vfa2VybmVsX2Z1bmN0aW9uCi0gCWNsb2cgPDwgX0YoIktlcm5lbCBzeW1ib2wgdGFibGUgJXMgdW5hdmFpbGFibGUsICglcykiLAotIAkJICAgc3lzdGVtX21hcF9wYXRoLmNfc3RyKCksIHN0cmVycm9yKGVycm5vKSkgPDwgZW5kbDsKLSAKLS0gICAgICBzeXN0ZW1fbWFwX3BhdGggPSAiL2Jvb3QvU3lzdGVtLm1hcC0iICsga2VybmVsX3JlbGVhc2U7Ci0rICAgICAgc3lzdGVtX21hcF9wYXRoID0ga2VybmVsX2J1aWxkX3RyZWUgKyAiL1N5c3RlbS5tYXAtIiArIGtlcm5lbF9yZWxlYXNlOwotICAgICAgIHN5c3RlbV9tYXAuY2xlYXIoKTsKLSAgICAgICBzeXN0ZW1fbWFwLm9wZW4oc3lzdGVtX21hcF9wYXRoLmNfc3RyKCksIGlmc3RyZWFtOjppbik7Ci0gICAgICAgaWYgKCEgc3lzdGVtX21hcC5pc19vcGVuKCkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCmluZGV4IDQ3NWIyMDcuLmIyODBmNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCkBAIC0zLDkgKzMsNyBAQAogCiByZXF1aXJlIHN5c3RlbXRhcF9naXQuaW5jCiAKLURFUEVORFMgPSAiYm9vc3QgZWxmdXRpbHMiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWNvcmUgYmFzaCBwZXJsIgorREVQRU5EUyA9ICJlbGZ1dGlscyIKIAogRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbGliZWxmPSR7U1RBR0lOR19ESVJfVEFSR0VUfSAtLXdpdGhvdXQtcnBtIFwKICAgICAgICAgICAgIC0td2l0aG91dC1uc3MgLS13aXRob3V0LWF2YWhpIC0td2l0aG91dC1keW5pbnN0IFwKQEAgLTE4LDcgKzE2LDggQEAKIAogRVhUUkFfT0VDT05GICs9ICIke1NUQVBfRE9DU30gIgogCi1QQUNLQUdFQ09ORklHID8/PSAic3FsaXRlIG1vbml0b3IgcHl0aG9uMy1wcm9iZXMiCitQQUNLQUdFQ09ORklHID8/PSAidHJhbnNsYXRvciBzcWxpdGUgbW9uaXRvciBweXRob24zLXByb2JlcyIKK1BBQ0tBR0VDT05GSUdbdHJhbnNsYXRvcl0gPSAiLS1lbmFibGUtdHJhbnNsYXRvciwtLWRpc2FibGUtdHJhbnNsYXRvcixib29zdCxweXRob24zLWNvcmUgYmFzaCBwZXJsIgogUEFDS0FHRUNPTkZJR1tsaWJ2aXJ0XSA9ICItLWVuYWJsZS1saWJ2aXJ0LC0tZGlzYWJsZS1saWJ2aXJ0LGxpYnZpcnQiCiBQQUNLQUdFQ09ORklHW3NxbGl0ZV0gPSAiLS1lbmFibGUtc3FsaXRlLC0tZGlzYWJsZS1zcWxpdGUsc3FsaXRlMyIKIFBBQ0tBR0VDT05GSUdbbW9uaXRvcl0gPSAiLS1lbmFibGUtbW9uaXRvciwtLWRpc2FibGUtbW9uaXRvcixuY3Vyc2VzIGpzb24tYyIKQEAgLTI2LDQgKzI1LDEyIEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZQogCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICBpZiBbICEgLWYgJHtEfSR7YmluZGlyfS9zdGFwIF07IHRoZW4KKyAgICAgICMgdHJhbnNsYXRvciBkaXNhYmxlZCBjYXNlLCBuZWVkIHRvIGxlYXZlIG9ubHkgbWluaW1hbCBydW50aW1lCisgICAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0vJHtQTn0KKyAgICAgIHJtICR7RH0ke2xpYmV4ZWNkaXJ9LyR7UE59L3N0YXAtZW52CisgICBmaQorfQorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYwppbmRleCAzZGM2ODhhLi5lMmY1MjA0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCkBAIC0xLDEwICsxLDkgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLVNSQ1JFViA9ICI0NWQwZTdhMDlhMTVhMjEwNzhkMGViZjJkYjUxNzVlZDllODcwMTRlIgotUFYgPSAiMy4xIgorU1JDUkVWID0gIjQwNTFjNzBjOTMxOGM4Mzc5ODEzODRjYmIyM2YzZTllYjFiZDA4OTIiCitQViA9ICIzLjIiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L3N5c3RlbXRhcC5naXQgXAotICAgICAgICAgICBmaWxlOi8vc3lzdGVtX21hcF9sb2NhdGlvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJ2aXJ0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3gzMl9hYmlfdGltZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9tb25pdG9yLW9wdGlvbi5wYXRjaCBcCkBAIC0xMywxMCArMTIsMjEgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1weXRob24tbW9kdWxlcy10by1jb3JyZWN0LWxpYnJhcnktZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGRydW4tcmVtb3ZlLXF1b3Rlcy1hcm91bmQtSS1pbmNsdWRlLWxpbmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1zdGFwcnVuLXN0YXBicGYtZG9uLXQtc3VwcG9ydC1pbnN0YWxsaW5nLWEtbm9uLXJvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtUFIyMjU1MS1ieS11cGRhdGluZy10aGUtdXNlLW9mLXRpbWVycy1mb3ItdGhlLTQuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXN5c3Jvb3Qtd2hlbi1sb29raW5nLWZvci10aGUtU3lzdGVtLm1hcC1maWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZGVidWdpbmZvLWxvb2t1cC13aXRoLXN5c3Jvb3QtY2FzZS1kby1ub3QtcmVtb3ZlLXN5cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2Utc3VyZS1zeXNyb290LXBhdGhzLWRvbi10LWVuZC13aXRoLWEtc2xhc2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGVsYXktYWRkaW5nLXN5c3Jvb3QtcGF0aC10by1tb2R1bGUtbmFtZS1pbi1jYXNlLW9mLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZGVkLWEtY291cGxlLW9mLXNtYWxsLXN5c3Jvb3QtZml4ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1fc3RwX3Vtb2R1bGVfcmVsb2NhdGUtbmVlZHMtdGFyZ2V0LWZpbGUtcGF0aC1ub3QtaG9zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzcm9vdC1oYW5kbGUtc3ltYm9saWMtbGlua3Mtd2l0aC1hYnNvbHV0ZS1uYW1lLXJlbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmctZm9sbG93LXUucGF0Y2ggXAogICAgICAgICAgICAiCiAKLSMgc3lzdGVtdGFwIGRvZXNuJ3Qgc3VwcG9ydCBtaXBzCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YXJtfGFhcmNoNjQpLiotbGludXgnCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YXJtfGFhcmNoNjR8bWljcm9ibGF6ZWVsfG1pcHMpLiotbGludXgnCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKaW5kZXggMDAyZWU2NS4uMGExNzg5YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKQEAgLTEsMTEgKzEsMTEgQEAKLVNSQ1JFViA9ICIwMjE3MTBlMTA3M2ZlMjAzMzQxYjQyN2NkMWE0YmFjNTc3ZWM4OTljIgotUFYgPSAiMi42LjEiCitTUkNSRVYgPSAiN2QwMTQ3YmJiYTNlZDFkNWVmNmVlYTRlZWMzZjBhZDRjOThmMDJiNSIKK1BWID0gIjIuNyIKIAogaW5oZXJpdCBwa2djb25maWcKIAogRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vdHJhY2UtY21kOiIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcm9zdGVkdC90cmFjZS1jbWQuZ2l0O2JyYW5jaD10cmFjZS1jbWQtc3RhYmxlLXYyLjYgXAorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcm9zdGVkdC90cmFjZS1jbWQuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2Jsa3RyYWNlLWFwaS1jb21wYXRpYmlsaXR5LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1zby10aGF0LVBBVEhfTUFYLWlzLWRlZmluZWQtYW4taXNzdS5wYXRjaCBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi9DaGVjay1pZi13b3JkZXhwLWZ1bmN0aW9uLWlzLXN1cHBvcnRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL0NoZWNrLWlmLXdvcmRleHAtZnVuY3Rpb24taXMtc3VwcG9ydGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTVlNDhhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL0NoZWNrLWlmLXdvcmRleHAtZnVuY3Rpb24taXMtc3VwcG9ydGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAzNDA4ZjhlNzg3NzZiMTJmMTMxZTQzMzc0OTcyMTYwMmY4N2UwYTcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkhvbmcgSC4gUGhhbSIgPGhvbmcucGhhbUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyOSBBdWcgMjAxNCAxNzoxMzo1NSArMDMwMAotU3ViamVjdDogW1BBVENIXSBDaGVjayBpZiB3b3JkZXhwIGZ1bmN0aW9uIGlzIHN1cHBvcnRlZAotCi1lZ2xpYmMgY291bGQgYmUgY29uZmlndXJlZCB0byBidWlsZCB3aXRob3V0IHdvcmRleHAsIHNvIGl0IGlzIG5vdCBlbm91Z2gKLXRvIGNoZWNrIGlmIHdvcmRleHAuaCBleGlzdHMgKHRoZSBoZWFkZXIgZmlsZSBjb3VsZCBiZSBpbnN0YWxsZWQsIGJ1dCBpdCdzCi1wb3NzaWJsZSB0aGF0IHRoZSB3b3JkZXhwKCkgZnVuY3Rpb24gaXMgbm90IHN1cHBvcnRlZCkuICBBbiBhZGRpdGlvbmFsCi1jaGVjayBpZiB3b3JkZXhwKCkgaXMgc3VwcG9ydGVkIGJ5IHRoZSBzeXN0ZW0gQyBsaWJyYXJ5IGlzIG5lZWRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25nIEguIFBoYW0gPGhvbmcucGhhbUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgIHwgNSArKysrLQotIHNyYy91c2VyZmlsZS5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5NDkwZDM5Li5iMDhhOTBhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yOTUsNyArMjk1LDEwIEBAIGZpCi0gQUNfU1VCU1QoQUxTQV9ERVBMSUJTKQotIAotIGRubCBDaGVjayBmb3IgaGVhZGVycwotLUFDX0NIRUNLX0hFQURFUlMoW3dvcmRleHAuaCBlbmRpYW4uaCBzeXMvZW5kaWFuLmggc3lzL3NobS5oXSkKLStBQ19DSEVDS19IRUFERVJTKFt3b3JkZXhwLmggZW5kaWFuLmggc3lzL2VuZGlhbi5oIHN5cy9zaG0uaF0sCi0rICBkbmwgTWFrZSBzdXJlIHdvcmRleHAgaXMgc3VwcG9ydGVkIGJ5IHRoZSBDIGxpYnJhcnkKLSsgIEFDX0NIRUNLX0ZVTkNTKFt3b3JkZXhwXSkKLSspCi0gCi0gZG5sIENoZWNrIGZvciByZXNtZ3Igc3VwcG9ydC4uLgotIEFDX01TR19DSEVDS0lORyhmb3IgcmVzbWdyIHN1cHBvcnQpCi1kaWZmIC0tZ2l0IGEvc3JjL3VzZXJmaWxlLmMgYi9zcmMvdXNlcmZpbGUuYwotaW5kZXggNzI3NzlkYS4uZTlkMTNlNiAxMDA2NDQKLS0tLSBhL3NyYy91c2VyZmlsZS5jCi0rKysgYi9zcmMvdXNlcmZpbGUuYwotQEAgLTMyLDcgKzMyLDcgQEAKLSAgKiBzdG9yZXMgdGhlIGZpcnN0IG1hdGNoaW5lIG9uZS4gIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMgc3RyZHVwJ2VkLgotICAqLwotIAotLSNpZmRlZiBIQVZFX1dPUkRFWFBfSAotKyNpZiAoZGVmaW5lZChIQVZFX1dPUkRFWFBfSCkgJiYgZGVmaW5lZChIQVZFX1dPUkRFWFApKQotICNpbmNsdWRlIDx3b3JkZXhwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotIGludCBzbmRfdXNlcl9maWxlKGNvbnN0IGNoYXIgKmZpbGUsIGNoYXIgKipyZXN1bHQpCi0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNDQ1ODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotRnJvbSBjMmMxM2NmMGM0Njk4NjJjZDM5YjJhNjk4NjIwMDIzMzFhYjdjOGNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgOSBGZWIgMjAxNiAxNDowMToxOCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBhdm9pZCBpbmNsdWRpbmcgPHN5cy9wb2xsLmg+IGRpcmVjdGx5Ci0KLUZpeGVzIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gYnVpbGRpbmcgd2l0aCBtdXNsIGxpYmMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gYXNlcnZlci9hc2VydmVyLmMgICAgICAgICB8IDIgKy0KLSBpbmNsdWRlL2Fzb3VuZGxpYi1oZWFkLmggIHwgMiArLQotIGluY2x1ZGUvYXNvdW5kbGliLmggICAgICAgfCAyICstCi0gaW5jbHVkZS9sb2NhbC5oICAgICAgICAgICB8IDIgKy0KLSBzcmMvY29udHJvbC9jb250cm9sLmMgICAgIHwgMiArLQotIHNyYy9jb250cm9sL2NvbnRyb2xfc2htLmMgfCAyICstCi0gc3JjL3BjbS9wY21fZGlyZWN0LmMgICAgICB8IDIgKy0KLSBzcmMvcGNtL3BjbV9tbWFwLmMgICAgICAgIHwgMiArLQotIHNyYy9wY20vcGNtX3NoYXJlLmMgICAgICAgfCAyICstCi0gc3JjL3BjbS9wY21fc2htLmMgICAgICAgICB8IDIgKy0KLSBzcmMvc2VxL3NlcS5jICAgICAgICAgICAgIHwgMiArLQotIHNyYy9zaG1hcmVhLmMgICAgICAgICAgICAgfCAyICstCi0gMTIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hc2VydmVyL2FzZXJ2ZXIuYyBiL2FzZXJ2ZXIvYXNlcnZlci5jCi1pbmRleCBhYzIwNzA2Li40NmY3MzFhIDEwMDY0NAotLS0tIGEvYXNlcnZlci9hc2VydmVyLmMKLSsrKyBiL2FzZXJ2ZXIvYXNlcnZlci5jCi1AQCAtMjAsNyArMjAsNyBAQAotIAotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAjaW5jbHVkZSA8c3lzL3Vpby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNvdW5kbGliLWhlYWQuaCBiL2luY2x1ZGUvYXNvdW5kbGliLWhlYWQuaAotaW5kZXggMWVjNjExZS4uMjFlMzJjNiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYXNvdW5kbGliLWhlYWQuaAotKysrIGIvaW5jbHVkZS9hc291bmRsaWItaGVhZC5oCi1AQCAtMzUsNiArMzUsNiBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc291bmRsaWIuaCBiL2luY2x1ZGUvYXNvdW5kbGliLmgKLWluZGV4IDNjMjc2NmUuLmE1NDYxOTQgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2Fzb3VuZGxpYi5oCi0rKysgYi9pbmNsdWRlL2Fzb3VuZGxpYi5oCi1AQCAtMzUsNyArMzUsNyBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbG9jYWwuaCBiL2luY2x1ZGUvbG9jYWwuaAotaW5kZXggMzE3ZjJlMy4uNmE0M2E0NyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbG9jYWwuaAotKysrIGIvaW5jbHVkZS9sb2NhbC5oCi1AQCAtNDcsNyArNDcsNyBAQAotICNlcnJvciBIZWFkZXIgZGVmaW5pbmcgZW5kaWFubmVzcyBub3QgZGVmaW5lZAotICNlbmRpZgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaWYgZGVmaW5lZChfX2xpbnV4X18pCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbnRyb2wvY29udHJvbC5jIGIvc3JjL2NvbnRyb2wvY29udHJvbC5jCi1pbmRleCA2YzAwYjhlLi5mZDBjMzAzIDEwMDY0NAotLS0tIGEvc3JjL2NvbnRyb2wvY29udHJvbC5jCi0rKysgYi9zcmMvY29udHJvbC9jb250cm9sLmMKLUBAIC05MCw3ICs5MCw3IEBAIEkvTyBvcGVyYXRpb25zLgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8c3RkYm9vbC5oPgotICNpbmNsdWRlICJjb250cm9sX2xvY2FsLmgiCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbnRyb2wvY29udHJvbF9zaG0uYyBiL3NyYy9jb250cm9sL2NvbnRyb2xfc2htLmMKLWluZGV4IGJkMDdkNGEuLjlhMmUyNjggMTAwNjQ0Ci0tLS0gYS9zcmMvY29udHJvbC9jb250cm9sX3NobS5jCi0rKysgYi9zcmMvY29udHJvbC9jb250cm9sX3NobS5jCi1AQCAtMjcsNyArMjcsNyBAQAotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAjaW5jbHVkZSA8c3lzL3Vpby5oPgotICNpbmNsdWRlIDxzeXMvbW1hbi5oPgotZGlmZiAtLWdpdCBhL3NyYy9wY20vcGNtX2RpcmVjdC5jIGIvc3JjL3BjbS9wY21fZGlyZWN0LmMKLWluZGV4IGMzOTI1Y2MuLjE4ZjFkZDUgMTAwNjQ0Ci0tLS0gYS9zcmMvcGNtL3BjbV9kaXJlY3QuYwotKysrIGIvc3JjL3BjbS9wY21fZGlyZWN0LmMKLUBAIC0zMCw3ICszMCw3IEBACi0gI2luY2x1ZGUgPGdycC5oPgotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgPHN5cy9zZW0uaD4KLSAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLWRpZmYgLS1naXQgYS9zcmMvcGNtL3BjbV9tbWFwLmMgYi9zcmMvcGNtL3BjbV9tbWFwLmMKLWluZGV4IDE5NDgyODkuLjRjZjIyMGEgMTAwNjQ0Ci0tLS0gYS9zcmMvcGNtL3BjbV9tbWFwLmMKLSsrKyBiL3NyYy9wY20vcGNtX21tYXAuYwotQEAgLTIyLDcgKzIyLDcgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8bWFsbG9jLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0gI2lmZGVmIEhBVkVfU1lTX1NITV9ICi0gI2luY2x1ZGUgPHN5cy9zaG0uaD4KLWRpZmYgLS1naXQgYS9zcmMvcGNtL3BjbV9zaGFyZS5jIGIvc3JjL3BjbS9wY21fc2hhcmUuYwotaW5kZXggNWQ4YWFmMi4uMjFhNTdmYyAxMDA2NDQKLS0tLSBhL3NyYy9wY20vcGNtX3NoYXJlLmMKLSsrKyBiL3NyYy9wY20vcGNtX3NoYXJlLmMKLUBAIC0zNCw3ICszNCw3IEBACi0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDxtYXRoLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gI2luY2x1ZGUgInBjbV9sb2NhbC5oIgotIAotZGlmZiAtLWdpdCBhL3NyYy9wY20vcGNtX3NobS5jIGIvc3JjL3BjbS9wY21fc2htLmMKLWluZGV4IGE4MTVhYzYuLjRlZTk1OGMgMTAwNjQ0Ci0tLS0gYS9zcmMvcGNtL3BjbV9zaG0uYwotKysrIGIvc3JjL3BjbS9wY21fc2htLmMKLUBAIC0zNiw3ICszNiw3IEBACi0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotZGlmZiAtLWdpdCBhL3NyYy9zZXEvc2VxLmMgYi9zcmMvc2VxL3NlcS5jCi1pbmRleCA5Mjc5ODMwLi5kMjAyN2NiIDEwMDY0NAotLS0tIGEvc3JjL3NlcS9zZXEuYwotKysrIGIvc3JjL3NlcS9zZXEuYwotQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIGV2ZW50X2ZpbHRlcihzbmRfc2VxX3QgKnNlcSwgc25kX3NlcV9ldmVudF90ICpldikKLSAKLSAqLwotIAotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgInNlcV9sb2NhbC5oIgotIAotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1kaWZmIC0tZ2l0IGEvc3JjL3NobWFyZWEuYyBiL3NyYy9zaG1hcmVhLmMKLWluZGV4IDk4NDNhYTguLmVhYTcxZjAgMTAwNjQ0Ci0tLS0gYS9zcmMvc2htYXJlYS5jCi0rKysgYi9zcmMvc2htYXJlYS5jCi1AQCAtMjcsNyArMjcsNyBAQAotICNpbmNsdWRlIDxtYWxsb2MuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAjaW5jbHVkZSA8c3lzL3NobS5oPgotICNpbmNsdWRlICJsaXN0LmgiCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2RlYWUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1TVU1NQVJZID0gIkFMU0Egc291bmQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NvY2tldC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjY7bWQ1PTExZmY4OWE4YTdhNGE2OTBhNWM3OGVmZmU4MTU5NTQ1IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL2xpYi8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL0NoZWNrLWlmLXdvcmRleHAtZnVuY3Rpb24taXMtc3VwcG9ydGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyOWZhM2U2OTEyMmQzY2YzZThmMGUwMWEwY2IxZDE4MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MWJiODcwYzE0ZDFjN2MyNjkyMTMyODVlZWVkODc0ZmEzZDI4MTEyMDc3ZGIwNjFhM2FmODAxMGQwODg1Yjc2IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotcmVxdWlyZSBhbHNhLWZwdS5pbmMKLUVYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2Fsc2FfZnB1X3NldHRpbmcoYmIsIGQpfSAiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXB5dGhvbiIKLQotUEFDS0FHRVMgPSsgImFsc2Etc2VydmVyIGxpYmFzb3VuZCBhbHNhLWNvbmYgYWxzYS1kb2MiCi1GSUxFU19saWJhc291bmQgPSAiJHtsaWJkaXJ9L2xpYmFzb3VuZC5zby4qIgotRklMRVNfYWxzYS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19hbHNhLWNvbmYgPSAiJHtkYXRhZGlyfS9hbHNhLyIKLQotUkRFUEVORFNfbGliYXNvdW5kID0gImFsc2EtY29uZiIKLQotIyBhbHNhLWxpYiBnZXRzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gYWxzYS1saWItZGV2IGRlcGVuZGVuY2llcywgYnV0IHRoZQotIyBhbHNhLWxpYiBwYWNrYWdlIGRvZXNuJ3QgZXhpc3QuIGxpYmFzb3VuZCBpcyB0aGUgcmVhbCBsaWJyYXJ5IHBhY2thZ2UuCi1SREVQRU5EU18ke1BOfS1kZXYgPSAibGliYXNvdW5kIgotCi0jIHVwZ3JhZGUgcGF0aAotUlBST1ZJREVTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLVJSRVBMQUNFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi1SQ09ORkxJQ1RTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLQotUlBST1ZJREVTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKLVJSRVBMQUNFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCi1SQ09ORkxJQ1RTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzViZjEwNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS41LmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiQUxTQSBzb3VuZCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc29ja2V0LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNjttZDU9MTFmZjg5YThhN2E0YTY5MGE1Yzc4ZWZmZTgxNTk1NDUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvbGliLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiYTJiNDY1YzNhNTI2NWQ4YTU3ZjNmZjM5YzZjNGZjMjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjRmNjhhZDNjNmRhMzZiMGI1MjQxYWMzYzc5OGE3YTcxZTBlOTdkNTFmOTcyZTlmNzIzYjNmMjBhOTY1MGFlNiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK3JlcXVpcmUgYWxzYS1mcHUuaW5jCitFWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9hbHNhX2ZwdV9zZXR0aW5nKGJiLCBkKX0gIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1weXRob24iCisKK1BBQ0tBR0VTID0rICJhbHNhLXNlcnZlciBsaWJhc291bmQgYWxzYS1jb25mIGFsc2EtZG9jIgorRklMRVNfbGliYXNvdW5kID0gIiR7bGliZGlyfS9saWJhc291bmQuc28uKiIKK0ZJTEVTX2Fsc2Etc2VydmVyID0gIiR7YmluZGlyfS8qIgorRklMRVNfYWxzYS1jb25mID0gIiR7ZGF0YWRpcn0vYWxzYS8iCisKK1JERVBFTkRTX2xpYmFzb3VuZCA9ICJhbHNhLWNvbmYiCisKKyMgYWxzYS1saWIgZ2V0cyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIGFsc2EtbGliLWRldiBkZXBlbmRlbmNpZXMsIGJ1dCB0aGUKKyMgYWxzYS1saWIgcGFja2FnZSBkb2Vzbid0IGV4aXN0LiBsaWJhc291bmQgaXMgdGhlIHJlYWwgbGlicmFyeSBwYWNrYWdlLgorUkRFUEVORFNfJHtQTn0tZGV2ID0gImxpYmFzb3VuZCIKKworIyB1cGdyYWRlIHBhdGgKK1JQUk9WSURFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCitSUkVQTEFDRVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCisKK1JQUk9WSURFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCitSUkVQTEFDRVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgorUkNPTkZMSUNUU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Zjc5YjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBQbHVnaW5zIgotSE9NRVBBR0UgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotIyBUaGUgcHJpbWFyeSBsaWNlbnNlIG9mIGFsc2EtcGx1Z2lucyBpcyBMR1BMdjIuMS4KLSMKLSMgbTQvYXR0cmlidXRlcy5tNCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisuIG00L2F0dHJpYnV0ZXMubTQgaXMgcGFydCBvZiB0aGUKLSMgYnVpbGQgc3lzdGVtLCBhbmQgZG9lc24ndCBhZmZlY3QgdGhlIGxpY2Vuc2luZyBvZiB0aGUgYnVpbGQgcmVzdWx0LgotIwotIyBUaGUgc2FtcGxlcmF0ZSBwbHVnaW4gc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrIHRvIGJlIGNvbnNpc3RlbnQKLSMgd2l0aCB0aGUgbGlic2FtcGxlcmF0ZSBsaWNlbnNlLiBIb3dldmVyLCBpZiB0aGUgbGljZW5zZWUgaGFzIGEgY29tbWVyY2lhbAotIyBsaWNlbnNlIGZvciBsaWJzYW1wbGVyYXRlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4gbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCi0jIG9mIExHUEx2Mi4xIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHBsdWdpbnMuCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCi0gICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICBmaWxlOi8vbTQvYXR0cmlidXRlcy5tNDtlbmRsaW5lPTMzO21kNT1iMjU5NThkYTQ0YzAyMjMxZTM2NDFmMWJjY2VmNTNlYiBcCi0gICAgICAgIGZpbGU6Ly9yYXRlL3JhdGVfc2FtcGxlcmF0ZS5jO2VuZGxpbmU9MzU7bWQ1PWZkNzdiY2U4NWY0YTMzOGMwZThhYjE4NDMwYjY5ZmFlIFwKLSIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvcGx1Z2lucy8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImRlNTExMzBhNzQ0NGI3OWIyZGQzYzI1ZTI4NDIwNzU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzMGQxYzNiZGFlYjA1OGYyYTAzNjA3YTMzYjllMTZlZTUzNjliZmQzMGE5NmJjMDliZDJjNjliNGRkZDFhOGEiCi0KLURFUEVORFMgKz0gImFsc2EtbGliIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIlwKLSAgICAgICAgc2FtcGxlcmF0ZSBcCi0gICAgICAgIHNwZWV4ZHNwIFwKLSAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMsbGliYXYiCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdbbWFlbW8tcGx1Z2luXSA9ICItLWVuYWJsZS1tYWVtby1wbHVnaW4sLS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKLVBBQ0tBR0VDT05GSUdbbWFlbW8tcmVzb3VyY2UtbWFuYWdlcl0gPSAiLS1lbmFibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlciwtLWRpc2FibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlcixkYnVzIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3NhbXBsZXJhdGVdID0gIi0tZW5hYmxlLXNhbXBsZXJhdGUsLS1kaXNhYmxlLXNhbXBsZXJhdGUsbGlic2FtcGxlcmF0ZTAiCi1QQUNLQUdFQ09ORklHW3NwZWV4ZHNwXSA9ICItLXdpdGgtc3BlZXg9bGliLC0td2l0aC1zcGVleD1ubyxzcGVleGRzcCIKLQotUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAnYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZicsICcnLCBkKX0iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYmFzb3VuZC1tb2R1bGUtLioiCi0KLSMgVGhlIGFsc2EtcGx1Z2lucyBwYWNrYWdlIGRvZXNuJ3QgaXRzZWxmIGNvbnRhaW4gYW55dGhpbmcsIGl0IGp1c3QgZGVwZW5kcyBvbgotIyBhbGwgYnVpbHQgcGx1Z2lucy4KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtICR7RH0ke2xpYmRpcn0vYWxzYS1saWIvKi5sYQotCi0JIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMsIHNvIGp1c3QgZHJvcCB0aGUgLmV4YW1wbGUgc3VmZml4LgotCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KLQkJbXYgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZi5leGFtcGxlICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKLQlmaQotfQotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKLSAgICBwbHVnaW5kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycpCi0gICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsICdebGliYXNvdW5kX21vZHVsZV8oLiopXC5zbyQnLCAnbGliYXNvdW5kLW1vZHVsZS0lcycsICdBbHNhIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKSkKLSAgICBkLnNldFZhcigiUkRFUEVORFNfYWxzYS1wbHVnaW5zIiwgcGFja2FnZXMpCi19Ci0KLSMgVGhlIHJhdGUgcGx1Z2lucyBjcmVhdGUgc29tZSBzeW1saW5rcy4gRm9yIGV4YW1wbGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbgotIyBjcmVhdGVzIHRoZXNlIGxpbmtzIHRvIHRoZSBtYWluIHBsdWdpbiBmaWxlOgotIwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2Jlc3Quc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9saW5lYXIuc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9tZWRpdW0uc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9vcmRlci5zbwotIwotIyBUaGUgb3RoZXIgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzaW1pbGFyIGxpbmtzLiBXZSBoYXZlIHRvIGFkZCB0aGUgbGlua3MgdG8KLSMgRklMRVMgbWFudWFsbHksIGJlY2F1c2UgZG9fc3BsaXRfcGFja2FnZXMoKSBza2lwcyB0aGUgbGlua3MgKHdoaWNoIGlzIGdvb2QsCi0jIGJlY2F1c2Ugd2Ugd291bGRuJ3Qgd2FudCBkb19zcGxpdF9wYWNrYWdlcygpIHRvIGNyZWF0ZSBzZXBhcmF0ZSBwYWNrYWdlcyBmb3IKLSMgdGhlIHN5bWxpbmtzKS4KLSMKLSMgVGhlIHN5bWxpbmtzIGNhdXNlIFFBIGVycm9ycywgYmVjYXVzZSB1c3VhbGx5IGl0J3MgYSBidWcgaWYgYSBub24KLSMgLWRldi8tZGJnLy1uYXRpdmVzZGsgcGFja2FnZSBjb250YWlucyBsaW5rcyB0byAuc28gZmlsZXMsIGJ1dCBpbiB0aGlzIGNhc2UKLSMgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBzbyB3ZSBkaXNhYmxlIHRoZSBRQSBjaGVja3MuCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX2xhdmNyYXRlXyouc28iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSA9ICJkZXYtc28iCi0KLSMgNTAtcHVsc2VhdWRpby5jb25mIGRlZmluZXMgYSBkZXZpY2UgbmFtZWQgInB1bHNlIiB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gdXNlCi0jIGlmIHRoZXkgZXhwbGljaXRseSB3YW50IHRvIHVzZSB0aGUgUHVsc2VBdWRpbyBwbHVnaW4uCi0jIDk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIGNvbmZpZ3VyZXMgdGhlICJkZWZhdWx0IiBkZXZpY2UgdG8gdXNlIHRoZQotIyBQdWxzZUF1ZGlvIHBsdWdpbi4KLUZJTEVTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY29uZi1wdWxzZSBcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY3RsLXB1bHNlIFwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1wY20tcHVsc2UgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZDBhY2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjUuYmIKQEAgLTAsMCArMSwxMDMgQEAKK1NVTU1BUlkgPSAiQUxTQSBQbHVnaW5zIgorSE9NRVBBR0UgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworIyBUaGUgcHJpbWFyeSBsaWNlbnNlIG9mIGFsc2EtcGx1Z2lucyBpcyBMR1BMdjIuMS4KKyMKKyMgbTQvYXR0cmlidXRlcy5tNCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisuIG00L2F0dHJpYnV0ZXMubTQgaXMgcGFydCBvZiB0aGUKKyMgYnVpbGQgc3lzdGVtLCBhbmQgZG9lc24ndCBhZmZlY3QgdGhlIGxpY2Vuc2luZyBvZiB0aGUgYnVpbGQgcmVzdWx0LgorIworIyBUaGUgc2FtcGxlcmF0ZSBwbHVnaW4gc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrIHRvIGJlIGNvbnNpc3RlbnQKKyMgd2l0aCB0aGUgbGlic2FtcGxlcmF0ZSBsaWNlbnNlLiBIb3dldmVyLCBpZiB0aGUgbGljZW5zZWUgaGFzIGEgY29tbWVyY2lhbAorIyBsaWNlbnNlIGZvciBsaWJzYW1wbGVyYXRlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4gbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCisjIG9mIExHUEx2Mi4xIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHBsdWdpbnMuCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCisgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICBmaWxlOi8vbTQvYXR0cmlidXRlcy5tNDtlbmRsaW5lPTMzO21kNT1iMjU5NThkYTQ0YzAyMjMxZTM2NDFmMWJjY2VmNTNlYiBcCisgICAgICAgIGZpbGU6Ly9yYXRlL3JhdGVfc2FtcGxlcmF0ZS5jO2VuZGxpbmU9MzU7bWQ1PWZkNzdiY2U4NWY0YTMzOGMwZThhYjE4NDMwYjY5ZmFlIFwKKyIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvcGx1Z2lucy8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImY4OThiMGU2ZThhY2YzZjZmODJiYzJhMGYwYzg0YTk3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc5N2RhNWY4ZjUzMzc5ZmJlYTI4ODE3YmM0NjZkZTE2YWZmZDJjMDc4NDllODRmMWFmOGQ1ZTIyZjdiYjdmMWMiCisKK0RFUEVORFMgKz0gImFsc2EtbGliIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gIlwKKyAgICAgICAgc2FtcGxlcmF0ZSBcCisgICAgICAgIHNwZWV4ZHNwIFwKKyAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMsbGliYXYiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcGx1Z2luXSA9ICItLWVuYWJsZS1tYWVtby1wbHVnaW4sLS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcmVzb3VyY2UtbWFuYWdlcl0gPSAiLS1lbmFibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlciwtLWRpc2FibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlcixkYnVzIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCitQQUNLQUdFQ09ORklHW3NhbXBsZXJhdGVdID0gIi0tZW5hYmxlLXNhbXBsZXJhdGUsLS1kaXNhYmxlLXNhbXBsZXJhdGUsbGlic2FtcGxlcmF0ZTAiCitQQUNLQUdFQ09ORklHW3NwZWV4ZHNwXSA9ICItLXdpdGgtc3BlZXg9bGliLC0td2l0aC1zcGVleD1ubyxzcGVleGRzcCIKKworUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAnYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZicsICcnLCBkKX0iCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYmFzb3VuZC1tb2R1bGUtLioiCisKKyMgVGhlIGFsc2EtcGx1Z2lucyBwYWNrYWdlIGRvZXNuJ3QgaXRzZWxmIGNvbnRhaW4gYW55dGhpbmcsIGl0IGp1c3QgZGVwZW5kcyBvbgorIyBhbGwgYnVpbHQgcGx1Z2lucy4KK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtICR7RH0ke2xpYmRpcn0vYWxzYS1saWIvKi5sYQorCisJIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMsIHNvIGp1c3QgZHJvcCB0aGUgLmV4YW1wbGUgc3VmZml4LgorCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJbXYgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZi5leGFtcGxlICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKKwlmaQorfQorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBwbHVnaW5kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycpCisgICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsICdebGliYXNvdW5kX21vZHVsZV8oLiopXC5zbyQnLCAnbGliYXNvdW5kLW1vZHVsZS0lcycsICdBbHNhIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKSkKKyAgICBkLnNldFZhcigiUkRFUEVORFNfYWxzYS1wbHVnaW5zIiwgcGFja2FnZXMpCit9CisKKyMgVGhlIHJhdGUgcGx1Z2lucyBjcmVhdGUgc29tZSBzeW1saW5rcy4gRm9yIGV4YW1wbGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbgorIyBjcmVhdGVzIHRoZXNlIGxpbmtzIHRvIHRoZSBtYWluIHBsdWdpbiBmaWxlOgorIworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2Jlc3Quc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9saW5lYXIuc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9tZWRpdW0uc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9vcmRlci5zbworIworIyBUaGUgb3RoZXIgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzaW1pbGFyIGxpbmtzLiBXZSBoYXZlIHRvIGFkZCB0aGUgbGlua3MgdG8KKyMgRklMRVMgbWFudWFsbHksIGJlY2F1c2UgZG9fc3BsaXRfcGFja2FnZXMoKSBza2lwcyB0aGUgbGlua3MgKHdoaWNoIGlzIGdvb2QsCisjIGJlY2F1c2Ugd2Ugd291bGRuJ3Qgd2FudCBkb19zcGxpdF9wYWNrYWdlcygpIHRvIGNyZWF0ZSBzZXBhcmF0ZSBwYWNrYWdlcyBmb3IKKyMgdGhlIHN5bWxpbmtzKS4KKyMKKyMgVGhlIHN5bWxpbmtzIGNhdXNlIFFBIGVycm9ycywgYmVjYXVzZSB1c3VhbGx5IGl0J3MgYSBidWcgaWYgYSBub24KKyMgLWRldi8tZGJnLy1uYXRpdmVzZGsgcGFja2FnZSBjb250YWlucyBsaW5rcyB0byAuc28gZmlsZXMsIGJ1dCBpbiB0aGlzIGNhc2UKKyMgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBzbyB3ZSBkaXNhYmxlIHRoZSBRQSBjaGVja3MuCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX2xhdmNyYXRlXyouc28iCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSA9ICJkZXYtc28iCisKKyMgNTAtcHVsc2VhdWRpby5jb25mIGRlZmluZXMgYSBkZXZpY2UgbmFtZWQgInB1bHNlIiB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gdXNlCisjIGlmIHRoZXkgZXhwbGljaXRseSB3YW50IHRvIHVzZSB0aGUgUHVsc2VBdWRpbyBwbHVnaW4uCisjIDk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIGNvbmZpZ3VyZXMgdGhlICJkZWZhdWx0IiBkZXZpY2UgdG8gdXNlIHRoZQorIyBQdWxzZUF1ZGlvIHBsdWdpbi4KK0ZJTEVTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY29uZi1wdWxzZSBcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY3RsLXB1bHNlIFwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1wY20tcHVsc2UgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy8wMDAxLWFzMTBrMS1NYWtlLW91dHB1dF90cmFtX2xpbmUtc3RhdGljLWlubGluZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvMDAwMS1hczEwazEtTWFrZS1vdXRwdXRfdHJhbV9saW5lLXN0YXRpYy1pbmxpbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNDlhMzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy8wMDAxLWFzMTBrMS1NYWtlLW91dHB1dF90cmFtX2xpbmUtc3RhdGljLWlubGluZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gMWU1OTI2ZGY3NGEzNWZlMmNkOTBiYzU5ZjUyNjRhODcxNWM5NDA0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgU2VwIDIwMTUgMDg6MTY6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXMxMGsxOiBNYWtlIG91dHB1dF90cmFtX2xpbmUoKSBzdGF0aWMgaW5saW5lCi0KLVRoZSBmdW5jdGlvbiBpcyBub3QgdXNlZCBpbiBhbnkgb3RoZXIgZmlsZSwgaXRzIGJldHRlciB0byBtYWtlIGl0IHN0YXRpYwotaW5saW5lIHNvIGNvbXBpbGVyIGhhcyBhIGJldHRlciBjaGFuY2Ugb2Ygb3B0aW1pemluZyBoZXJlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gYXMxMGsxL2FzMTBrMS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYXMxMGsxL2FzMTBrMS5jIGIvYXMxMGsxL2FzMTBrMS5jCi1pbmRleCA5NmFmMGMzLi5kMDc2NmZkIDEwMDY0NAotLS0tIGEvYXMxMGsxL2FzMTBrMS5jCi0rKysgYi9hczEwazEvYXMxMGsxLmMKLUBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBhc19leGl0KGNvbnN0IGNoYXIgKm1lc3NhZ2UpCi0gCWV4aXQoMSk7Ci0gfQotIAotLWlubGluZSB2b2lkIG91dHB1dF90cmFtX2xpbmUoIHN0cnVjdCBsaXN0X2hlYWQgKmxpbmVfaGVhZCwgaW50IHR5cGUpewotK3N0YXRpYyBpbmxpbmUgdm9pZCBvdXRwdXRfdHJhbV9saW5lKCBzdHJ1Y3QgbGlzdF9oZWFkICpsaW5lX2hlYWQsIGludCB0eXBlKXsKLSAgICAgICAgIAotICAgICAgICAgc3RydWN0IHRyYW0gKnRyYW1fc3ltOwotICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZW50cnk7Ci0tLSAKLTIuNS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvYXV0b3Rvb2xzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9hdXRvdG9vbHMucGF0Y2gKaW5kZXggMzE5ZjI1ZC4uMmU3NDk2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9hdXRvdG9vbHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9hdXRvdG9vbHMucGF0Y2gKQEAgLTIwLDcgKzIwLDcgQEAKIC0tLSBhbHNhLXRvb2xzLTEuMC4yNC4xLW9yaWcvL01ha2VmaWxlCTIwMTEtMDctMDYgMTE6Mjc6NDAuMjA3NjY1MDAwICswODAwCiArKysgYWxzYS10b29scy0xLjAuMjQuMS9NYWtlZmlsZQkyMDExLTA3LTE0IDE1OjA4OjA4Ljg3NzY2NTAwOSArMDgwMAogQEAgLTEsOCArMSw4IEBACi0gVkVSU0lPTiA9IDEuMS4wCisgVkVSU0lPTiA9IDEuMS41CiAgVE9QID0gLgogLVNVQkRJUlMgPSBhczEwazEgZW52eTI0Y29udHJvbCBoZHNwbG9hZGVyIGhkc3Bjb25mIGhkc3BtaXhlciBcCiArU1VCRElSUyA9IGFzMTBrMSBlbnZ5MjRjb250cm9sIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvbWFrZWZpbGVfbm9fZ3RrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tYWtlZmlsZV9ub19ndGsucGF0Y2gKaW5kZXggOWJkNjg0OC4uNTQzNzNkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tYWtlZmlsZV9ub19ndGsucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tYWtlZmlsZV9ub19ndGsucGF0Y2gKQEAgLTE0LDcgKzE0LDcgQEAKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQogQEAgLTEsOSArMSw5IEBACi0gVkVSU0lPTiA9IDEuMS4wCisgVkVSU0lPTiA9IDEuMS41CiAgVE9QID0gLgogLVNVQkRJUlMgPSBhczEwazEgZW52eTI0Y29udHJvbCBcCiAtCSAgbWl4YXJ0bG9hZGVyIHBjeGhybG9hZGVyIHJtZWRpZ2ljb250cm9sIHNiMTZfY3NwIHNlcSBzc2NhcGVfY3RsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTk3YzBlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIkFkdmFuY2VkIHRvb2xzIGZvciBjZXJ0YWluIEFMU0Egc291bmQgY2FyZCBkcml2ZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyKyIKLURFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBnbGliLTIuMCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaGRzcGxvYWRlci9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZDEwazEvQ09QWUlORy5MSUI7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi90b29scy8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2F1dG90b29scy5wYXRjaCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJycsICdmaWxlOi8vbWFrZWZpbGVfbm9fZ3RrLnBhdGNoJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovL2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFzMTBrMS1NYWtlLW91dHB1dF90cmFtX2xpbmUtc3RhdGljLWlubGluZS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImIyM2VhYWU2ODdkNTU0MTBiOTI1ODdjMjA1M2IzMDFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4OGYxZGNkNjg3MjEyMTM4M2VkZWQ1ZmEyNGUzMjhlNjhjNTRlNTI3ZGI0NTQ3ZTE0MzVkNWVhYmMyYjY3MDkiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotRVhUUkFfT0VNQUtFICs9ICJHSVRDT01QSUxFX0FSR1M9Jy0taG9zdD0ke0hPU1RfU1lTfSAtLWJ1aWxkPSR7QlVJTERfU1lTfSAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSAtLXByZWZpeD0ke3ByZWZpeH0nIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ3RrKycsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2d0aytdID0gIiwsZ3RrKyBndGsrMywiCi0KLSMgY29uZmlndXJlLmFjLy5pbiBkb2Vzbid0IGV4aXN0IHNvIGZvcmNlIGNvcHkKLUFVVE9UT09MU19DT1BZQUNMT0NBTCA9ICIxIgotCi1kb19jb21waWxlX3ByZXBlbmQgKCkgewotICAgICNBdXRvbWFrZSBkaXIgaXMgbm90IGNvcnJlY3RseSBkZXRlY3RlZCBpbiBjcm9zcyBjb21waWxhdGlvbiBjYXNlCi0gICAgZXhwb3J0IEFVVE9NQUtFX0RJUj0iJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikiCi0gICAgZXhwb3J0IEFDTE9DQUxfRkxBR1M9Ii0tc3lzdGVtLWFjZGlyPSR7QUNMT0NBTERJUn0vICR7QUNMT0NBTEVYVFJBUEFUSH0iCi0KLSAgICBjcCAke1dPUktESVJ9L2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCAke1N9L2hkYWphY2tzZW5zZXRlc3QvZ2l0Y29tcGlsZQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9sZDEwazEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmU0M2FhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuNS5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gIkFkdmFuY2VkIHRvb2xzIGZvciBjZXJ0YWluIEFMU0Egc291bmQgY2FyZCBkcml2ZXJzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyKyIKK0RFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBnbGliLTIuMCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaGRzcGxvYWRlci9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZDEwazEvQ09QWUlORy5MSUI7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi90b29scy8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2F1dG90b29scy5wYXRjaCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJycsICdmaWxlOi8vbWFrZWZpbGVfbm9fZ3RrLnBhdGNoJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovL2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjNhZmI5MmViMWI0ZjJlZGM4NjkxNDk4ZTU3YzNlYzc4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjM2M2NTY3ZGU4MzUyMjNlZTdkNjk0ODdiOGMyMmZiMzk1YTJlOGM2MTMzNDFiMGM5NmU2YTVmNmEyYmQ1MzQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworRVhUUkFfT0VNQUtFICs9ICJHSVRDT01QSUxFX0FSR1M9Jy0taG9zdD0ke0hPU1RfU1lTfSAtLWJ1aWxkPSR7QlVJTERfU1lTfSAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSAtLXByZWZpeD0ke3ByZWZpeH0nIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ3RrKycsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2d0aytdID0gIiwsZ3RrKyBndGsrMywiCisKKyMgY29uZmlndXJlLmFjLy5pbiBkb2Vzbid0IGV4aXN0IHNvIGZvcmNlIGNvcHkKK0FVVE9UT09MU19DT1BZQUNMT0NBTCA9ICIxIgorCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworICAgICNBdXRvbWFrZSBkaXIgaXMgbm90IGNvcnJlY3RseSBkZXRlY3RlZCBpbiBjcm9zcyBjb21waWxhdGlvbiBjYXNlCisgICAgZXhwb3J0IEFVVE9NQUtFX0RJUj0iJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikiCisgICAgZXhwb3J0IEFDTE9DQUxfRkxBR1M9Ii0tc3lzdGVtLWFjZGlyPSR7QUNMT0NBTERJUn0vICR7QUNMT0NBTEVYVFJBUEFUSH0iCisKKyAgICBjcCAke1dPUktESVJ9L2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCAke1N9L2hkYWphY2tzZW5zZXRlc3QvZ2l0Y29tcGlsZQorfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9sZDEwazEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS41LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLzAwMDEtYWxzYWN0bC1kb24tdC1sZXQtc3lzdGVtZC11bml0LXJlc3RvcmUtdGhlLXZvbHVtZS13aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoCmluZGV4IGU1NzhkZmUuLjkwN2NhNWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4YzNlMGVmOTYyNTA2NmMyYmI2N2VlM2QyYjhjZDM3ZmQ0NGVhZGFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiOWQ0MWI3ODQ2NTcxNTJhNGM1NjgzYTk0NThkZmZhYjU1N2YwNjg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KIERhdGU6IEZyaSwgMjkgQXVnIDIwMTQgMTg6NTg6NTYgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gYWxzYWN0bDogZG9uJ3QgbGV0IHN5c3RlbWQgdW5pdCByZXN0b3JlIHRoZSB2b2x1bWUgd2hlbgpAQCAtMjIsNyArMjIsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYWxzYWN0bC9NYWtlZmlsZS5hbSBiL2Fsc2FjdGwvTWFrZWZpbGUuYW0KLWluZGV4IGNhYzgwOTQuLmZmODY1ZGMgMTAwNjQ0CitpbmRleCA5MGZhYjlkLi4xOTA1MjVhIDEwMDY0NAogLS0tIGEvYWxzYWN0bC9NYWtlZmlsZS5hbQogKysrIGIvYWxzYWN0bC9NYWtlZmlsZS5hbQogQEAgLTM4LDkgKzM4LDEwIEBAIGluc3RhbGwtZGF0YS1ob29rOgpAQCAtNDAsMTcgKzQwLDE3IEBACiAgCiAgYWxzYS1zdGF0ZS5zZXJ2aWNlOiBhbHNhLXN0YXRlLnNlcnZpY2UuaW4KIGRpZmYgLS1naXQgYS9hbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluIGIvYWxzYWN0bC9hbHNhLXJlc3RvcmUuc2VydmljZS5pbgotaW5kZXggMjg4NDA5OC4uYmFjM2NjYyAxMDA2NDQKK2luZGV4IDgwZmQ1ZmQuLjZiZWIzNmQgMTAwNjQ0CiAtLS0gYS9hbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluCiArKysgYi9hbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluCi1AQCAtOCw2ICs4LDcgQEAgRGVzY3JpcHRpb249U2F2ZS9SZXN0b3JlIFNvdW5kIENhcmQgU3RhdGUKK0BAIC03LDYgKzcsNyBAQAorIERlc2NyaXB0aW9uPVNhdmUvUmVzdG9yZSBTb3VuZCBDYXJkIFN0YXRlCiAgQ29uZGl0aW9uUGF0aEV4aXN0cz0hQGRhZW1vbnN3aXRjaEAKICBDb25kaXRpb25QYXRoRXhpc3RzR2xvYj0vZGV2L3NuZC9jb250cm9sKgotIEFmdGVyPWFsc2Etc3RhdGUuc2VydmljZQogK0NvbmRpdGlvblBhdGhFeGlzdHM9QGxvY2Fsc3RhdGVkaXJAL2xpYi9hbHNhL2Fzb3VuZC5zdGF0ZQogIAogIFtTZXJ2aWNlXQogIFR5cGU9b25lc2hvdAogLS0gCi0yLjcuMC5yYzMKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhmNGI4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBzb3VuZCB1dGlsaXRpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYWxzYWN0bC91dGlscy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWZlOTUyNmIwNTVlMjQ2YjU1NTg4MDlhNWFlMjVjMGI5IgotREVQRU5EUyA9ICJhbHNhLWxpYiBuY3Vyc2VzIGxpYnNhbXBsZXJhdGUwIgotCi1QQUNLQUdFQ09ORklHID8/PSAidWRldiIKLQotIyBhbHNhYmF0IGNhbiBiZSBidWlsdCBhbHNvIHdpdGhvdXQgZmZ0dyBzdXBwb3J0ICh3aXRoIHJlZHVjZWQgZnVuY3Rpb25hbGl0eSkuCi0jIEl0IHdvdWxkIGJlIGJldHRlciB0byBhbHdheXMgZW5hYmxlIGFsc2FiYXQsIGJ1dCBwcm92aWRlIGFuIG9wdGlvbiBmb3IKLSMgZW5hYmxpbmcvZGlzYWJsaW5nIGZmdHcuIFRoZSBjb25maWd1cmUgc2NyaXB0IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0LCBob3dldmVyCi0jIChhdCBsZWFzdCBpbiBhbnkgb2J2aW91cyB3YXkpLCBzbyBmb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBhbHNhYmF0IHdpdGggZmZ0dwotIyBvciBubyBhbHNhYmF0IGF0IGFsbC4KLVBBQ0tBR0VDT05GSUdbYmF0XSA9ICItLWVuYWJsZS1iYXQsLS1kaXNhYmxlLWJhdCxmZnR3ZiIKLQotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLXdpdGgtdWRldi1ydWxlcy1kaXI9YHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgL3J1bGVzLmQsLHVkZXYiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS14bWx0bywgLS1kaXNhYmxlLXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi91dGlscy9hbHNhLXV0aWxzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMWUzOTM0Y2E1YmQyMmE4MGMyNzI4OWQxYjBhZGNkYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzgzMTA0NGRlOTJjNWJmMzNiZjMzNjVhM2YzNmU0OTM5N2Y0MTkxZTkzNGRmNDYwYWUxY2ExNTEzOGM5ZDlkIgotCi0jIE9uIGJ1aWxkIG1hY2hpbmVzIHdpdGggcHl0aG9uLWRvY3V0aWxzIChub3QgcHl0aG9uMy1kb2N1dGlscyAhISkgaW5zdGFsbGVkCi0jIHJzdDJtYW4gKG5vdCByc3QybWFuLnB5KSBpcyBkZXRlY3RlZCBhbmQgY29tcGlsZSBmYWlscyB3aXRoCi0jIHwgbWFrZVsxXTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJ2Fsc2F1Y20uMScsIG5lZWRlZCBieSAnYWxsLWFtJy4gIFN0b3AuCi0jIEF2b2lkIHRoaXMgYnkgZGlzYWJsaW5nIGV4cGljaXRseQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1yc3QybWFuIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBtYW5wYWdlcwotCi0jIFRoaXMgYXJlIGFsbCBwYWNrYWdlcyB0aGF0IHdlIG5lZWQgdG8gbWFrZS4gQWxzbywgdGhlIG5vdyBlbXB0eSBhbHNhLXV0aWxzCi0jIGlwayBkZXBlbmRzIG9uIHRoZW0uCi0KLUFMU0FfVVRJTFNfUEtHUyA9ICJcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ2Fsc2EtdXRpbHMtYWxzYWJhdCcsICcnLCBkKX0gXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F0cGxnIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLW1pZGkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXBsYXkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFjb25uZWN0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWllY3NldCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1zcGVha2VydGVzdCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxbmV0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFkdW1wIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FjdGwgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWxvb3AgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXVjbSBcCi0gICAgICAgICAgICAiCi0KLVBBQ0tBR0VTICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCi1SREVQRU5EU18ke1BOfSArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgotCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FiYXQgICAgID0gIiR7YmluZGlyfS9hbHNhYmF0IgotRklMRVNfYWxzYS11dGlscy1hbHNhdHBsZyAgICA9ICIke2JpbmRpcn0vYWxzYXRwbGciCi1GSUxFU19hbHNhLXV0aWxzLWFwbGF5ICAgICAgID0gIiR7YmluZGlyfS9hcGxheSAke2JpbmRpcn0vYXJlY29yZCIKLUZJTEVTX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgPSAiJHtiaW5kaXJ9L2FtaXhlciIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgPSAiJHtiaW5kaXJ9L2Fsc2FtaXhlciIKLUZJTEVTX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgPSAiJHtiaW5kaXJ9L3NwZWFrZXItdGVzdCAke2RhdGFkaXJ9L3NvdW5kcy9hbHNhLyAke2RhdGFkaXJ9L2Fsc2Evc3BlYWtlci10ZXN0LyIKLUZJTEVTX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5bWlkaSAke2JpbmRpcn0vYXJlY29yZG1pZGkgJHtiaW5kaXJ9L2FtaWRpIgotRklMRVNfYWxzYS11dGlscy1hY29ubmVjdCAgICA9ICIke2JpbmRpcn0vYWNvbm5lY3QiCi1GSUxFU19hbHNhLXV0aWxzLWFzZXFuZXQgICAgID0gIiR7YmluZGlyfS9hc2VxbmV0IgotRklMRVNfYWxzYS11dGlscy1pZWNzZXQgICAgICA9ICIke2JpbmRpcn0vaWVjc2V0IgotRklMRVNfYWxzYS11dGlscy1hbHNhY3RsICAgICA9ICIke3NiaW5kaXJ9L2Fsc2FjdGwgKi91ZGV2L3J1bGVzLmQgKi8qL3VkZXYvcnVsZXMuZCAke3N5c3RlbWRfdW5pdGRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYSAke2RhdGFkaXJ9L2Fsc2EvaW5pdC8iCi1GSUxFU19hbHNhLXV0aWxzLWFzZXFkdW1wICAgID0gIiR7YmluZGlyfS9hc2VxZHVtcCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgPSAiJHtiaW5kaXJ9L2Fsc2Fsb29wIgotRklMRVNfYWxzYS11dGlscy1hbHNhdWNtICAgICA9ICIke2JpbmRpcn0vYWxzYXVjbSIKLQotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FiYXQgICAgICA9ICJDb21tYW5kLWxpbmUgc291bmQgdGVzdGVyIGZvciBBTFNBIHNvdW5kIGNhcmQgZHJpdmVyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F0cGxnICAgICA9ICJDb252ZXJ0cyB0b3BvbG9neSB0ZXh0IGZpbGVzIGludG8gYmluYXJ5IGZvcm1hdCBmb3Iga2VybmVsIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFwbGF5ICAgICAgICA9ICJQbGF5IChhbmQgcmVjb3JkKSBzb3VuZCBmaWxlcyB1c2luZyBBTFNBIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFtaXhlciAgICAgICA9ICJDb21tYW5kLWxpbmUgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgID0gIm5jdXJzZXMtYmFzZWQgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgID0gIkFMU0Egc3Vycm91bmQgc3BlYWtlciB0ZXN0IHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgID0gIk1pc2NlbGxhbmVvdXMgTUlESSB1dGlsaXRpZXMgZm9yIEFMU0EiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgID0gIkFMU0Egc2VxdWVuY2VyIGNvbm5lY3Rpb24gbWFuYWdlciIKLVNVTU1BUllfYWxzYS11dGlscy1hc2VxbmV0ICAgICAgPSAiTmV0d29yayBjbGllbnQvc2VydmVyIGZvciBBTFNBIHNlcXVlbmNlciIKLVNVTU1BUllfYWxzYS11dGlscy1pZWNzZXQgICAgICAgPSAiQUxTQSB1dGlsaXR5IGZvciBzZXR0aW5nL3Nob3dpbmcgSUVDOTU4IChTL1BESUYpIHN0YXR1cyBiaXRzIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FjdGwgICAgICA9ICJTYXZlcy9yZXN0b3JlcyBBTFNBLXNldHRpbmdzIGluIC9ldGMvYXNvdW5kLnN0YXRlIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFkdW1wICAgICA9ICJTaG93cyB0aGUgZXZlbnRzIHJlY2VpdmVkIGF0IGFuIEFMU0Egc2VxdWVuY2VyIHBvcnQiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgID0gIkFMU0EgUENNIGxvb3BiYWNrIHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgID0gIkFMU0EgVXNlIENhc2UgTWFuYWdlciIKLQotUlJFQ09NTUVORFNfYWxzYS11dGlscy1hbHNhY3RsID0gImFsc2Etc3RhdGVzIgotCi1BTExPV19FTVBUWV9hbHNhLXV0aWxzID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgV2UgZG9uJ3Qgc2hpcCB0aGlzIGhlcmUgYmVjYXVzZSBpdCByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gYmFzaC4KLQkjIFNlZSBhbHNhLXV0aWxzLXNjcmlwdHNfJHtQVn0uYmIKLQlybSAke0R9JHtzYmluZGlyfS9hbHNhY29uZgotCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaAotCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaAotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndWRldicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCi0JCSMgVGhpcyBpcyB3aGVyZSBhbHNhLXV0aWxzIHdpbGwgaW5zdGFsbCBpdHMgcnVsZXMgaWYgd2UgZG9uJ3QgdGVsbCBpdCBhbnl0aGluZyBlbHNlLgotCQlybSAtcmYgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldgotCQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfQotCWZpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzIxNWJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNS5iYgpAQCAtMCwwICsxLDEwOCBAQAorU1VNTUFSWSA9ICJBTFNBIHNvdW5kIHV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hbHNhY3RsL3V0aWxzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmU5NTI2YjA1NWUyNDZiNTU1ODgwOWE1YWUyNWMwYjkiCitERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgbGlic2FtcGxlcmF0ZTAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IgorCisjIGFsc2FiYXQgY2FuIGJlIGJ1aWx0IGFsc28gd2l0aG91dCBmZnR3IHN1cHBvcnQgKHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5KS4KKyMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGFsd2F5cyBlbmFibGUgYWxzYWJhdCwgYnV0IHByb3ZpZGUgYW4gb3B0aW9uIGZvcgorIyBlbmFibGluZy9kaXNhYmxpbmcgZmZ0dy4gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBzdXBwb3J0IHRoYXQsIGhvd2V2ZXIKKyMgKGF0IGxlYXN0IGluIGFueSBvYnZpb3VzIHdheSksIHNvIGZvciBub3cgd2Ugb25seSBzdXBwb3J0IGFsc2FiYXQgd2l0aCBmZnR3CisjIG9yIG5vIGFsc2FiYXQgYXQgYWxsLgorUEFDS0FHRUNPTkZJR1tiYXRdID0gIi0tZW5hYmxlLWJhdCwtLWRpc2FibGUtYmF0LGZmdHdmIgorCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LXJ1bGVzLWRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCwtLXdpdGgtdWRldi1ydWxlcy1kaXI9L3Vud2FudGVkL3J1bGVzLmQsdWRldiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLXhtbHRvLCAtLWRpc2FibGUteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3V0aWxzL2Fsc2EtdXRpbHMtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsc2FjdGwtZG9uLXQtbGV0LXN5c3RlbWQtdW5pdC1yZXN0b3JlLXRoZS12b2x1bWUtd2gucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImRmZTZlYTE0N2E1ZTA3YTA1NjkxOTU5MWMyZjVkYWMzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyMGJkMjg1ZTkxZGI2ZTdmZDdkYjNjOWVjNmY1NWIwMmYzNTQ0OWZmMjczYzc4NDQ3ODBhYzZhNWEzZGUyZTgiCisKKyMgT24gYnVpbGQgbWFjaGluZXMgd2l0aCBweXRob24tZG9jdXRpbHMgKG5vdCBweXRob24zLWRvY3V0aWxzICEhKSBpbnN0YWxsZWQKKyMgcnN0Mm1hbiAobm90IHJzdDJtYW4ucHkpIGlzIGRldGVjdGVkIGFuZCBjb21waWxlIGZhaWxzIHdpdGgKKyMgfCBtYWtlWzFdOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCAnYWxzYXVjbS4xJywgbmVlZGVkIGJ5ICdhbGwtYW0nLiAgU3RvcC4KKyMgQXZvaWQgdGhpcyBieSBkaXNhYmxpbmcgZXhwaWNpdGx5CitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJzdDJtYW4iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIG1hbnBhZ2VzCisKKyMgVGhpcyBhcmUgYWxsIHBhY2thZ2VzIHRoYXQgd2UgbmVlZCB0byBtYWtlLiBBbHNvLCB0aGUgbm93IGVtcHR5IGFsc2EtdXRpbHMKKyMgaXBrIGRlcGVuZHMgb24gdGhlbS4KKworQUxTQV9VVElMU19QS0dTID0gIlwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiYXQnLCAnYWxzYS11dGlscy1hbHNhYmF0JywgJycsIGQpfSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbWl4ZXIgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXRwbGcgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtbWlkaSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hcGxheSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbWl4ZXIgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWNvbm5lY3QgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtaWVjc2V0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFuZXQgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcWR1bXAgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWN0bCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbG9vcCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdWNtIFwKKyAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKK1JERVBFTkRTXyR7UE59ICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCisKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgPSAiJHtiaW5kaXJ9L2Fsc2FiYXQiCitGSUxFU19hbHNhLXV0aWxzLWFsc2F0cGxnICAgID0gIiR7YmluZGlyfS9hbHNhdHBsZyIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5ICR7YmluZGlyfS9hcmVjb3JkIgorRklMRVNfYWxzYS11dGlscy1hbWl4ZXIgICAgICA9ICIke2JpbmRpcn0vYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1hbHNhbWl4ZXIgICA9ICIke2JpbmRpcn0vYWxzYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1zcGVha2VydGVzdCA9ICIke2JpbmRpcn0vc3BlYWtlci10ZXN0ICR7ZGF0YWRpcn0vc291bmRzL2Fsc2EvICR7ZGF0YWRpcn0vYWxzYS9zcGVha2VyLXRlc3QvIgorRklMRVNfYWxzYS11dGlscy1taWRpICAgICAgICA9ICIke2JpbmRpcn0vYXBsYXltaWRpICR7YmluZGlyfS9hcmVjb3JkbWlkaSAke2JpbmRpcn0vYW1pZGkiCitGSUxFU19hbHNhLXV0aWxzLWFjb25uZWN0ICAgID0gIiR7YmluZGlyfS9hY29ubmVjdCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgPSAiJHtiaW5kaXJ9L2FzZXFuZXQiCitGSUxFU19hbHNhLXV0aWxzLWllY3NldCAgICAgID0gIiR7YmluZGlyfS9pZWNzZXQiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FjdGwgICAgID0gIiR7c2JpbmRpcn0vYWxzYWN0bCAqL3VkZXYvcnVsZXMuZCAqLyovdWRldi9ydWxlcy5kICR7c3lzdGVtZF91bml0ZGlyfSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHNhICR7ZGF0YWRpcn0vYWxzYS9pbml0LyIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgPSAiJHtiaW5kaXJ9L2FzZXFkdW1wIgorRklMRVNfYWxzYS11dGlscy1hbHNhbG9vcCAgICA9ICIke2JpbmRpcn0vYWxzYWxvb3AiCitGSUxFU19hbHNhLXV0aWxzLWFsc2F1Y20gICAgID0gIiR7YmluZGlyfS9hbHNhdWNtIgorCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgID0gIkNvbW1hbmQtbGluZSBzb3VuZCB0ZXN0ZXIgZm9yIEFMU0Egc291bmQgY2FyZCBkcml2ZXIiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgID0gIkNvbnZlcnRzIHRvcG9sb2d5IHRleHQgZmlsZXMgaW50byBiaW5hcnkgZm9ybWF0IGZvciBrZXJuZWwiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgID0gIlBsYXkgKGFuZCByZWNvcmQpIHNvdW5kIGZpbGVzIHVzaW5nIEFMU0EiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgID0gIkNvbW1hbmQtbGluZSBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbWl4ZXIgICAgPSAibmN1cnNlcy1iYXNlZCBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1zcGVha2VydGVzdCAgPSAiQUxTQSBzdXJyb3VuZCBzcGVha2VyIHRlc3QgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1taWRpICAgICAgICAgPSAiTWlzY2VsbGFuZW91cyBNSURJIHV0aWxpdGllcyBmb3IgQUxTQSIKK1NVTU1BUllfYWxzYS11dGlscy1hY29ubmVjdCAgICAgPSAiQUxTQSBzZXF1ZW5jZXIgY29ubmVjdGlvbiBtYW5hZ2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFuZXQgICAgICA9ICJOZXR3b3JrIGNsaWVudC9zZXJ2ZXIgZm9yIEFMU0Egc2VxdWVuY2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWllY3NldCAgICAgICA9ICJBTFNBIHV0aWxpdHkgZm9yIHNldHRpbmcvc2hvd2luZyBJRUM5NTggKFMvUERJRikgc3RhdHVzIGJpdHMiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgID0gIlNhdmVzL3Jlc3RvcmVzIEFMU0Etc2V0dGluZ3MgaW4gL2V0Yy9hc291bmQuc3RhdGUiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgID0gIlNob3dzIHRoZSBldmVudHMgcmVjZWl2ZWQgYXQgYW4gQUxTQSBzZXF1ZW5jZXIgcG9ydCIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbG9vcCAgICAgPSAiQUxTQSBQQ00gbG9vcGJhY2sgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhdWNtICAgICAgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIgorCitSUkVDT01NRU5EU19hbHNhLXV0aWxzLWFsc2FjdGwgPSAiYWxzYS1zdGF0ZXMiCisKK0FMTE9XX0VNUFRZX2Fsc2EtdXRpbHMgPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBXZSBkb24ndCBzaGlwIHRoaXMgaGVyZSBiZWNhdXNlIGl0IHJlcXVpcmVzIGEgZGVwZW5kZW5jeSBvbiBiYXNoLgorCSMgU2VlIGFsc2EtdXRpbHMtc2NyaXB0c18ke1BWfS5iYgorCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2Fjb25mCisJcm0gJHtEfSR7c2JpbmRpcn0vYWxzYS1pbmZvLnNoCisJcm0gLWYgJHtEfSR7c2JpbmRpcn0vYWxzYWJhdC10ZXN0LnNoCisKKwkjIElmIHVkZXYgaXMgZGlzYWJsZWQsIHdlIHRvbGQgY29uZmlndXJlIHRvIGluc3RhbGwgdGhlIHJ1bGVzCisJIyBpbiAvdW53YW50ZWQsIHNvIHdlIGNhbiByZW1vdmUgdGhlbSBub3cuIElmIHVkZXYgaXMgZW5hYmxlZCwKKwkjIHRoZW4gL3Vud2FudGVkIHdvbid0IGV4aXN0IGFuZCB0aGlzIHdpbGwgaGF2ZSBubyBlZmZlY3QuCisJcm0gLXJmICR7RH0vdW53YW50ZWQKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnLzAwMDEtYnVpbGQtZml4LWZvci1taXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvMDAwMS1idWlsZC1maXgtZm9yLW1pcHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmODIyNGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvMDAwMS1idWlsZC1maXgtZm9yLW1pcHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIGYzNGM1NjcwNDViZWE1YTdkZWQ5YmNmYThlNzg1Y2ZkMjRjYzdkZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTaGl2cmFqIFBhdGlsIDxzaGl2cmFqLnBhdGlsQGltZ3RlYy5jb20+Ci1EYXRlOiBUdWUsIDQgQXByIDIwMTcgMTg6NTY6MDEgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSF0gYnVpbGQgZml4IGZvciBtaXBzCi0KLVNpZ25lZC1vZmYtYnk6IFNoaXZyYWogUGF0aWwgPHNoaXZyYWoucGF0aWxAaW1ndGVjLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFJvbmFsZCBTLiBCdWx0amUgPHJzYnVsdGplQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX2luaXRfbWlwcy5jIHwgMyArKy0KLSBsaWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgICAgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMgYi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMKLWluZGV4IDMzMWNmYWMxMTUuLmU5ODc2OThkNjYgMTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMKLSsrKyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9pbml0X21pcHMuYwotQEAgLTE4LDcgKzE4LDggQEAKLSAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gICovCi0gCi0tI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Yy5oIgotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKLSAjaW5jbHVkZSAibGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21pcHMuaCIKLSAKLSAjaWYgSEFWRV9NU0EKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgYi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKLWluZGV4IDZhM2IyODE1ZmQuLjk2M2M2NGM4NjEgMTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKLSsrKyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYwotQEAgLTE4LDcgKzE4LDcgQEAKLSAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gICovCi0gCi0tI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Yy5oIgotKyNpbmNsdWRlICJsaWJhdmNvZGVjL2hldmNkZWMuaCIKLSAjaW5jbHVkZSAibGliYXZ1dGlsL21pcHMvZ2VuZXJpY19tYWNyb3NfbXNhLmgiCi0gI2luY2x1ZGUgImhldmNwcmVkX21pcHMuaCIKLSAKLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YmFhMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDEyNGViMjAyZTcwNjc4NTM5NTQ0ZjYyNjhlZmM5ODEzMWYxOWZhNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/PUU1PUFEPTk5PUU2PUI1PUE5PTIwYW5kPTIwPUU1PUJDPUEwPUU2PUI0PUFBPUU0PUJBPUFFPTI4Pz0KLSA9P1VURi04P3E/PUU2PTlDPTlCPUU1PTg4PTlEPTI5Pz0gPHRvbnkuc2ggYW5kIHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KLURhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMDE6MTU6MjggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvcm1kZWM6IEZpeCBEb1MgZHVlIHRvIGxhY2sgb2YgZW9mIGNoZWNrCi0KLUZpeGVzOiBsb29wLml2cgotCi1Gb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDA1NAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmZvcm1hdC9ybWRlYy5jIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3JtZGVjLmMgYi9saWJhdmZvcm1hdC9ybWRlYy5jCi1pbmRleCAxNzhlYWVhLi5kNmQ3ZDljIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvcm1kZWMuYwotKysrIGIvbGliYXZmb3JtYXQvcm1kZWMuYwotQEAgLTEyMjMsOCArMTIyMywxMSBAQCBzdGF0aWMgaW50IGl2cl9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCi0gICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIiVzID0gJyVzJ1xuIiwga2V5LCB2YWwpOwotICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IDQpIHsKLSAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiJXMgPSAnMHgiLCBrZXkpOwotLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBsZW47IGorKykKLSsgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbGVuOyBqKyspIHsKLSsgICAgICAgICAgICAgICAgaWYgKGF2aW9fZmVvZihwYikpCi0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIiVYIiwgYXZpb19yOChwYikpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiJ1xuIik7Ci0gICAgICAgICB9IGVsc2UgaWYgKGxlbiA9PSA0ICYmIHR5cGUgPT0gMyAmJiAhc3RybmNtcChrZXksICJTdHJlYW1Db3VudCIsIHRsZW4pKSB7Ci0gICAgICAgICAgICAgbmJfc3RyZWFtcyA9IHZhbHVlID0gYXZpb19yYjMyKHBiKTsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdkMGQxYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gNGYwNWUyZTJkYzFhODlmMzhjZDlmMDk2MGE2NTYxMDgzZDcxNGYxZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci1EYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjE1OjMwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L212ZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjawotCi1GaXhlczogbG9vcC5tdgotCi1Gb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDA1NQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmZvcm1hdC9tdmRlYy5jIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L212ZGVjLmMgYi9saWJhdmZvcm1hdC9tdmRlYy5jCi1pbmRleCAwZTEyYzhjLi5mN2FhNGNiIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvbXZkZWMuYwotKysrIGIvbGliYXZmb3JtYXQvbXZkZWMuYwotQEAgLTM0Miw2ICszNDIsOCBAQCBzdGF0aWMgaW50IG12X3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqYXZjdHgpCi0gICAgICAgICAgICAgdWludDMyX3QgcG9zICAgPSBhdmlvX3JiMzIocGIpOwotICAgICAgICAgICAgIHVpbnQzMl90IGFzaXplID0gYXZpb19yYjMyKHBiKTsKLSAgICAgICAgICAgICB1aW50MzJfdCB2c2l6ZSA9IGF2aW9fcmIzMihwYik7Ci0rICAgICAgICAgICAgaWYgKGF2aW9fZmVvZihwYikpCi0rICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICAgICAgIGF2aW9fc2tpcChwYiwgOCk7Ci0gICAgICAgICAgICAgYXZfYWRkX2luZGV4X2VudHJ5KGFzdCwgcG9zLCB0aW1lc3RhbXAsIGFzaXplLCAwLCBBVklOREVYX0tFWUZSQU1FKTsKLSAgICAgICAgICAgICBhdl9hZGRfaW5kZXhfZW50cnkodnN0LCBwb3MgKyBhc2l6ZSwgaSwgdnNpemUsIDAsIEFWSU5ERVhfS0VZRlJBTUUpOwotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODhiMzU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSA5NmYyNGQxYmVlN2ZlN2JhYzA4ZTJiN2M3NGRiMWEwNDZjOWRjMGRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yMGFuZD0yMD1FNT1CQz1BMD1FNj1CND1BQT1FND1CQT1BRT0yOD89Ci0gPT9VVEYtOD9xPz1FNj05Qz05Qj1FNT04OD05RD0yOT89IDx0b255LnNoIGFuZCB3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+Ci1EYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjE1OjI5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L3JsMjogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKLQotRml4ZXM6IGxvb3AucmwyCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MDU2Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L3JsMi5jIHwgMTUgKysrKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ybDIuYyBiL2xpYmF2Zm9ybWF0L3JsMi5jCi1pbmRleCAwYmVjOGYxLi5lYjE2ODJkIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvcmwyLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L3JsMi5jCi1AQCAtMTcwLDEyICsxNzAsMjEgQEAgc3RhdGljIGF2X2NvbGQgaW50IHJsMl9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCi0gICAgIH0KLSAKLSAgICAgLyoqIHJlYWQgb2Zmc2V0IGFuZCBzaXplIHRhYmxlcyAqLwotLSAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKQotKyAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKSB7Ci0rICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgIGNodW5rX3NpemVbaV0gPSBhdmlvX3JsMzIocGIpOwotLSAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKQotKyAgICB9Ci0rICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspIHsKLSsgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICAgY2h1bmtfb2Zmc2V0W2ldID0gYXZpb19ybDMyKHBiKTsKLS0gICAgZm9yKGk9MDsgaSA8IGZyYW1lX2NvdW50O2krKykKLSsgICAgfQotKyAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKSB7Ci0rICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgIGF1ZGlvX3NpemVbaV0gPSBhdmlvX3JsMzIocGIpICYgMHhGRkZGOwotKyAgICB9Ci0gCi0gICAgIC8qKiBidWlsZCB0aGUgc2FtcGxlIGluZGV4ICovCi0gICAgIGZvcihpPTA7aTxmcmFtZV9jb3VudDtpKyspewotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzAxZDIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSA3ZjllYzU1OTNlMDQ4MjcyNDllN2FlYjQ2NmRhMDZhOThhMGQ3MzI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yMGFuZD0yMD1FNT1CQz1BMD1FNj1CND1BQT1FND1CQT1BRT0yOD89Ci0gPT9VVEYtOD9xPz1FNj05Qz05Qj1FNT04OD05RD0yOT89IDx0b255LnNoIGFuZCB3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+Ci1EYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDEyOjM3OjI1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2FzZmRlYzogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKLQotRml4ZXM6IGxvb3AuYXNmCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MDU3Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L2FzZmRlY19mLmMgfCA2ICsrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jIGIvbGliYXZmb3JtYXQvYXNmZGVjX2YuYwotaW5kZXggYmUwOWE5Mi4uZjNhY2JhZSAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKLUBAIC03NDksMTMgKzc0OSwxNSBAQCBzdGF0aWMgaW50IGFzZl9yZWFkX21hcmtlcihBVkZvcm1hdENvbnRleHQgKnMsIGludDY0X3Qgc2l6ZSkKLSAgICAgY291bnQgPSBhdmlvX3JsMzIocGIpOyAgICAvLyBtYXJrZXJzIGNvdW50Ci0gICAgIGF2aW9fcmwxNihwYik7ICAgICAgICAgICAgLy8gcmVzZXJ2ZWQgMiBieXRlcwotICAgICBuYW1lX2xlbiA9IGF2aW9fcmwxNihwYik7IC8vIG5hbWUgbGVuZ3RoCi0tICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lX2xlbjsgaSsrKQotLSAgICAgICAgYXZpb19yOChwYik7IC8vIHNraXAgdGhlIG5hbWUKLSsgICAgYXZpb19za2lwKHBiLCBuYW1lX2xlbik7Ci0gCi0gICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgICBpbnQ2NF90IHByZXNfdGltZTsKLSAgICAgICAgIGludCBuYW1lX2xlbjsKLSAKLSsgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKwotICAgICAgICAgYXZpb19ybDY0KHBiKTsgICAgICAgICAgICAgLy8gb2Zmc2V0LCA4IGJ5dGVzCi0gICAgICAgICBwcmVzX3RpbWUgPSBhdmlvX3JsNjQocGIpOyAvLyBwcmVzZW50YXRpb24gdGltZQotICAgICAgICAgcHJlc190aW1lIC09IGFzZi0+aGRyLnByZXJvbGwgKiAxMDAwMDsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU4MDNjZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLUZyb20gN2VjNDE0ODkyZGRjYWQ4ODMxMzg0ODQ5NGI2ZmM1ZjQzN2M5Y2E0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci1EYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDAxOjI2OjU4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2hsczogRml4IERvUyBkdWUgdG8gaW5maW5pdGUgbG9vcAotCi1GaXhlczogbG9vcC5tM3UKLQotVGhlIGRlZmF1bHQgbWF4IGl0ZXJhdGlvbiBjb3VudCBvZiAxMDAwIGlzIGFyYml0cmFyeSBhbmQgaWRlYXMgZm9yIGEgYmV0dGVyIHNvbHV0aW9uIGFyZSB3ZWxjb21lCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi0KLVByZXZpb3VzIHZlcnNpb24gcmV2aWV3ZWQtYnk6IFN0ZXZlbiBMaXUgPGxpbmdqaXVqaWFua2VAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDA1OAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBkb2MvZGVtdXhlcnMudGV4aSB8IDE4ICsrKysrKysrKysrKysrKysrKwotIGxpYmF2Zm9ybWF0L2hscy5jIHwgIDcgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZG9jL2RlbXV4ZXJzLnRleGkgYi9kb2MvZGVtdXhlcnMudGV4aQotaW5kZXggMjlhMjNkNC4uNzNkYzBmZSAxMDA2NDQKLS0tLSBhL2RvYy9kZW11eGVycy50ZXhpCi0rKysgYi9kb2MvZGVtdXhlcnMudGV4aQotQEAgLTMwMCw2ICszMDAsMjQgQEAgdXNlZCB0byBlbmQgdGhlIG91dHB1dCB2aWRlbyBhdCB0aGUgbGVuZ3RoIG9mIHRoZSBzaG9ydGVzdCBpbnB1dCBmaWxlLAotIHdoaWNoIGluIHRoaXMgY2FzZSBpcyBAZmlsZXtpbnB1dC5tcDR9IGFzIHRoZSBHSUYgaW4gdGhpcyBleGFtcGxlIGxvb3BzCi0gaW5maW5pdGVseS4KLSAKLStAc2VjdGlvbiBobHMKLSsKLStITFMgZGVtdXhlcgotKwotK0l0IGFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25zOgotKwotK0B0YWJsZSBAb3B0aW9uCi0rQGl0ZW0gbGl2ZV9zdGFydF9pbmRleAotK3NlZ21lbnQgaW5kZXggdG8gc3RhcnQgbGl2ZSBzdHJlYW1zIGF0IChuZWdhdGl2ZSB2YWx1ZXMgYXJlIGZyb20gdGhlIGVuZCkuCi0rCi0rQGl0ZW0gYWxsb3dlZF9leHRlbnNpb25zCi0rJywnIHNlcGFyYXRlZCBsaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IGhscyBpcyBhbGxvd2VkIHRvIGFjY2Vzcy4KLSsKLStAaXRlbSBtYXhfcmVsb2FkCi0rTWF4aW11bSBudW1iZXIgb2YgdGltZXMgYSBpbnN1ZmZpY2llbnQgbGlzdCBpcyBhdHRlbXB0ZWQgdG8gYmUgcmVsb2FkZWQuCi0rRGVmYXVsdCB2YWx1ZSBpcyAxMDAwLgotK0BlbmQgdGFibGUKLSsKLSBAc2VjdGlvbiBpbWFnZTIKLSAKLSBJbWFnZSBmaWxlIGRlbXV4ZXIuCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvaGxzLmMgYi9saWJhdmZvcm1hdC9obHMuYwotaW5kZXggMDE3MzFiZC4uMDk5NTM0NSAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L2hscy5jCi0rKysgYi9saWJhdmZvcm1hdC9obHMuYwotQEAgLTIwNSw2ICsyMDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBITFNDb250ZXh0IHsKLSAgICAgQVZEaWN0aW9uYXJ5ICphdmlvX29wdHM7Ci0gICAgIGludCBzdHJpY3Rfc3RkX2NvbXBsaWFuY2U7Ci0gICAgIGNoYXIgKmFsbG93ZWRfZXh0ZW5zaW9uczsKLSsgICAgaW50IG1heF9yZWxvYWQ7Ci0gfSBITFNDb250ZXh0OwotIAotIHN0YXRpYyBpbnQgcmVhZF9jaG9tcF9saW5lKEFWSU9Db250ZXh0ICpzLCBjaGFyICpidWYsIGludCBtYXhsZW4pCi1AQCAtMTI2Myw2ICsxMjY0LDcgQEAgc3RhdGljIGludCByZWFkX2RhdGEodm9pZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSkKLSAgICAgSExTQ29udGV4dCAqYyA9IHYtPnBhcmVudC0+cHJpdl9kYXRhOwotICAgICBpbnQgcmV0LCBpOwotICAgICBpbnQganVzdF9vcGVuZWQgPSAwOwotKyAgICBpbnQgcmVsb2FkX2NvdW50ID0gMDsKLSAKLSByZXN0YXJ0OgotICAgICBpZiAoIXYtPm5lZWRlZCkKLUBAIC0xMjk0LDYgKzEyOTYsOSBAQCByZXN0YXJ0OgotICAgICAgICAgcmVsb2FkX2ludGVydmFsID0gZGVmYXVsdF9yZWxvYWRfaW50ZXJ2YWwodik7Ci0gCi0gcmVsb2FkOgotKyAgICAgICAgcmVsb2FkX2NvdW50Kys7Ci0rICAgICAgICBpZiAocmVsb2FkX2NvdW50ID4gYy0+bWF4X3JlbG9hZCkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9FT0Y7Ci0gICAgICAgICBpZiAoIXYtPmZpbmlzaGVkICYmCi0gICAgICAgICAgICAgYXZfZ2V0dGltZV9yZWxhdGl2ZSgpIC0gdi0+bGFzdF9sb2FkX3RpbWUgPj0gcmVsb2FkX2ludGVydmFsKSB7Ci0gICAgICAgICAgICAgaWYgKChyZXQgPSBwYXJzZV9wbGF5bGlzdChjLCB2LT51cmwsIHYsIE5VTEwpKSA8IDApIHsKLUBAIC0yMTUwLDYgKzIxNTUsOCBAQCBzdGF0aWMgY29uc3QgQVZPcHRpb24gaGxzX29wdGlvbnNbXSA9IHsKLSAgICAgICAgIE9GRlNFVChhbGxvd2VkX2V4dGVuc2lvbnMpLCBBVl9PUFRfVFlQRV9TVFJJTkcsCi0gICAgICAgICB7LnN0ciA9ICIzZ3AsYWFjLGF2aSxmbGFjLG1rdixtM3U4LG00YSxtNHMsbTR2LG1wZyxtb3YsbXAyLG1wMyxtcDQsbXBlZyxtcGVndHMsb2dnLG9ndixvZ2EsdHMsdm9iLHdhdiJ9LAotICAgICAgICAgSU5UX01JTiwgSU5UX01BWCwgRkxBR1N9LAotKyAgICB7Im1heF9yZWxvYWQiLCAiTWF4aW11bSBudW1iZXIgb2YgdGltZXMgYSBpbnN1ZmZpY2llbnQgbGlzdCBpcyBhdHRlbXB0ZWQgdG8gYmUgcmVsb2FkZWQiLAotKyAgICAgICAgT0ZGU0VUKG1heF9yZWxvYWQpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gMTAwMH0sIDAsIElOVF9NQVgsIEZMQUdTfSwKLSAgICAge05VTEx9Ci0gfTsKLSAKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRmZGUwYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gN2U4MGI2M2VjZDI1OWQ2OWQzODM2MjNlNzViMzE4YmYyYmQ0OTFmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9MjBhbmQ9MjA9RTU9QkM9QTA9RTY9QjQ9QUE9RTQ9QkE9QUU9Mjg/PQotID0/VVRGLTg/cT89RTY9OUM9OUI9RTU9ODg9OUQ9Mjk/PSA8dG9ueS5zaCBhbmQgd2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgotRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMToxNToyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9jaW5lZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjawotCi1GaXhlczogbG9vcC5jaW5lCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MDU5Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L2NpbmVkZWMuYyB8IDYgKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvY2luZWRlYy5jIGIvbGliYXZmb3JtYXQvY2luZWRlYy5jCi1pbmRleCA3NjNiOTNiLi5kZTM0ZmI5IDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvY2luZWRlYy5jCi0rKysgYi9saWJhdmZvcm1hdC9jaW5lZGVjLmMKLUBAIC0yNjcsOCArMjY3LDEyIEBAIHN0YXRpYyBpbnQgY2luZV9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKmF2Y3R4KQotIAotICAgICAvKiBwYXJzZSBpbWFnZSBvZmZzZXRzICovCi0gICAgIGF2aW9fc2VlayhwYiwgb2ZmSW1hZ2VPZmZzZXRzLCBTRUVLX1NFVCk7Ci0tICAgIGZvciAoaSA9IDA7IGkgPCBzdC0+ZHVyYXRpb247IGkrKykKLSsgICAgZm9yIChpID0gMDsgaSA8IHN0LT5kdXJhdGlvbjsgaSsrKSB7Ci0rICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsKLSAgICAgICAgIGF2X2FkZF9pbmRleF9lbnRyeShzdCwgYXZpb19ybDY0KHBiKSwgaSwgMCwgMCwgQVZJTkRFWF9LRVlGUkFNRSk7Ci0rICAgIH0KLSAKLSAgICAgcmV0dXJuIDA7Ci0gfQotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE2OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTY5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTI4NGZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTY5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSA5ZDAwZmI5ZDcwZWU4YzBjYzcwMDJiODkzMThjNWJlMDBmMWJiZGFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yOD1FNj05OT05Mz1FOT1CQj05MT0yOT89Ci0gPHRvbnkuc2hAYWxpYmFiYS1pbmMuY29tPgotRGF0ZTogVHVlLCAyOSBBdWcgMjAxNyAyMzo1OToyMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9teGZkZWM6IEZpeCBTaWduIGVycm9yIGluIG14Zl9yZWFkX3ByaW1lcl9wYWNrKCkKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotRml4ZXM6IDIwMTcwODI5Qi5teGYKLQotQ28tQXV0aG9yOiDlvKDmtKrkuq4o5pyb5YidKSIgPHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MTY5Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L214ZmRlYy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXhmZGVjLmMgYi9saWJhdmZvcm1hdC9teGZkZWMuYwotaW5kZXggNmFkYjc3ZC4uOTE3MzFhNyAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L214ZmRlYy5jCi0rKysgYi9saWJhdmZvcm1hdC9teGZkZWMuYwotQEAgLTUwMCw3ICs1MDAsNyBAQCBzdGF0aWMgaW50IG14Zl9yZWFkX3ByaW1lcl9wYWNrKHZvaWQgKmFyZywgQVZJT0NvbnRleHQgKnBiLCBpbnQgdGFnLCBpbnQgc2l6ZSwgVQotICAgICAgICAgYXZwcml2X3JlcXVlc3Rfc2FtcGxlKHBiLCAiUHJpbWVyIHBhY2sgaXRlbSBsZW5ndGggJWQiLCBpdGVtX2xlbik7Ci0gICAgICAgICByZXR1cm4gQVZFUlJPUl9QQVRDSFdFTENPTUU7Ci0gICAgIH0KLS0gICAgaWYgKGl0ZW1fbnVtID4gNjU1MzYpIHsKLSsgICAgaWYgKGl0ZW1fbnVtID4gNjU1MzYgfHwgaXRlbV9udW0gPCAwKSB7Ci0gICAgICAgICBhdl9sb2cobXhmLT5mYywgQVZfTE9HX0VSUk9SLCAiaXRlbV9udW0gJWQgaXMgdG9vIGxhcmdlXG4iLCBpdGVtX251bSk7Ci0gICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgfQotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE3MC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODYwMTI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA5MDBmMzk2OTJjYTAzMzdhOThhN2NmMDQ3ZTRlMjYxMTA3MTgxMGMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yOD1FNj05OT05Mz1FOT1CQj05MT0yOT89Ci0gPHRvbnkuc2hAYWxpYmFiYS1pbmMuY29tPgotRGF0ZTogVHVlLCAyOSBBdWcgMjAxNyAyMzo1OToyMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9teGZkZWM6IEZpeCBEb1MgaXNzdWVzIGluCi0gbXhmX3JlYWRfaW5kZXhfZW50cnlfYXJyYXkoKQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1GaXhlczogMjAxNzA4MjlBLm14ZgotCi1Dby1BdXRob3I6IOW8oOa0quS6rijmnJvliJ0pIiA8d2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgotRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQxNzAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZmb3JtYXQvbXhmZGVjLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9teGZkZWMuYyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCi1pbmRleCBmOGQwZjllLi42YWRiNzdkIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvbXhmZGVjLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCi1AQCAtODk5LDYgKzg5OSw4IEBAIHN0YXRpYyBpbnQgbXhmX3JlYWRfaW5kZXhfZW50cnlfYXJyYXkoQVZJT0NvbnRleHQgKnBiLCBNWEZJbmRleFRhYmxlU2VnbWVudCAqc2VnCi0gICAgIHNlZ21lbnQtPm5iX2luZGV4X2VudHJpZXMgPSBhdmlvX3JiMzIocGIpOwotIAotICAgICBsZW5ndGggPSBhdmlvX3JiMzIocGIpOwotKyAgICBpZihzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzICYmIGxlbmd0aCA8IDExKQotKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gCi0gICAgIGlmICghKHNlZ21lbnQtPnRlbXBvcmFsX29mZnNldF9lbnRyaWVzPWF2X2NhbGxvYyhzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzLCBzaXplb2YoKnNlZ21lbnQtPnRlbXBvcmFsX29mZnNldF9lbnRyaWVzKSkpIHx8Ci0gICAgICAgICAhKHNlZ21lbnQtPmZsYWdfZW50cmllcyAgICAgICAgICA9IGF2X2NhbGxvYyhzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzLCBzaXplb2YoKnNlZ21lbnQtPmZsYWdfZW50cmllcykpKSB8fAotQEAgLTkwOSw2ICs5MTEsOCBAQCBzdGF0aWMgaW50IG14Zl9yZWFkX2luZGV4X2VudHJ5X2FycmF5KEFWSU9Db250ZXh0ICpwYiwgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKnNlZwotICAgICB9Ci0gCi0gICAgIGZvciAoaSA9IDA7IGkgPCBzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzOyBpKyspIHsKLSsgICAgICAgIGlmKGF2aW9fZmVvZihwYikpCi0rICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgICBzZWdtZW50LT50ZW1wb3JhbF9vZmZzZXRfZW50cmllc1tpXSA9IGF2aW9fcjgocGIpOwotICAgICAgICAgYXZpb19yOChwYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEtleUZyYW1lT2Zmc2V0ICovCi0gICAgICAgICBzZWdtZW50LT5mbGFnX2VudHJpZXNbaV0gPSBhdmlvX3I4KHBiKTsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE3MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJhZTIwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE3MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gYzI0YmNiNTUzNjUwYjkxZTllZmYxNWVmNmU1NGNhNzNkZTI0NTNiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9Mjg9RTY9OTk9OTM9RTk9QkI9OTE9Mjk/PQotIDx0b255LnNoQGFsaWJhYmEtaW5jLmNvbT4KLURhdGU6IFR1ZSwgMjkgQXVnIDIwMTcgMjM6NTk6MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvbnN2ZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjayBpbgotIG5zdnNfZmlsZV9vZmZzZXQgbG9vcC4KLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotRml4ZXM6IDIwMTcwODI5Lm5zdgotCi1Dby1BdXRob3I6IOW8oOa0quS6rijmnJvliJ0pIiA8d2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgotRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQxNzEKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZmb3JtYXQvbnN2ZGVjLmMgfCA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbnN2ZGVjLmMgYi9saWJhdmZvcm1hdC9uc3ZkZWMuYwotaW5kZXggYzZkZGI2Ny4uZDhjZTY1NiAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L25zdmRlYy5jCi0rKysgYi9saWJhdmZvcm1hdC9uc3ZkZWMuYwotQEAgLTMzNSw4ICszMzUsMTEgQEAgc3RhdGljIGludCBuc3ZfcGFyc2VfTlNWZl9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQotICAgICAgICAgaWYgKCFuc3YtPm5zdnNfZmlsZV9vZmZzZXQpCi0gICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKLSAKLS0gICAgICAgIGZvcihpPTA7aTx0YWJsZV9lbnRyaWVzX3VzZWQ7aSsrKQotKyAgICAgICAgZm9yKGk9MDtpPHRhYmxlX2VudHJpZXNfdXNlZDtpKyspIHsKLSsgICAgICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgICAgICAgbnN2LT5uc3ZzX2ZpbGVfb2Zmc2V0W2ldID0gYXZpb19ybDMyKHBiKSArIHNpemU7Ci0rICAgICAgICB9Ci0gCi0gICAgICAgICBpZih0YWJsZV9lbnRyaWVzID4gdGFibGVfZW50cmllc191c2VkICYmCi0gICAgICAgICAgICBhdmlvX3JsMzIocGIpID09IE1LVEFHKCdUJywnTycsJ0MnLCcyJykpIHsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUwMjAzNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gOWNiNGViNzcyODM5YzVlMWRlMjg1NWQxMjZiZjc0ZmYxNmQxMzM4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci1EYXRlOiBUdWUsIDUgU2VwIDIwMTcgMDA6MTY6MjkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvbW92OiBGaXggRG9TIGluIHJlYWRfdGZyYSgpCi0KLUZpeGVzOiBNaXNzaW5nIEVPRiBjaGVjayBpbiBsb29wCi1ObyB0ZXN0Y2FzZQotCi1Gb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDIyMgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmZvcm1hdC9tb3YuYyB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L21vdi5jIGIvbGliYXZmb3JtYXQvbW92LmMKLWluZGV4IDk5NGU5YzYuLjI1MTk3MDcgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9tb3YuYwotKysrIGIvbGliYXZmb3JtYXQvbW92LmMKLUBAIC02MDk0LDYgKzYwOTQsMTMgQEAgc3RhdGljIGludCByZWFkX3RmcmEoTU9WQ29udGV4dCAqbW92LCBBVklPQ29udGV4dCAqZikKLSAgICAgfQotICAgICBmb3IgKGkgPSAwOyBpIDwgaW5kZXgtPml0ZW1fY291bnQ7IGkrKykgewotICAgICAgICAgaW50NjRfdCB0aW1lLCBvZmZzZXQ7Ci0rCi0rICAgICAgICBpZiAoYXZpb19mZW9mKGYpKSB7Ci0rICAgICAgICAgICAgaW5kZXgtPml0ZW1fY291bnQgPSAwOwotKyAgICAgICAgICAgIGF2X2ZyZWVwKCZpbmRleC0+aXRlbXMpOwotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICAgICAgfQotKwotICAgICAgICAgaWYgKHZlcnNpb24gPT0gMSkgewotICAgICAgICAgICAgIHRpbWUgICA9IGF2aW9fcmI2NChmKTsKLSAgICAgICAgICAgICBvZmZzZXQgPSBhdmlvX3JiNjQoZik7Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjIzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxZmVmNmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGFmYzljNjgzZWQ5ZGIwMWVkYjM1N2JjOGMxOWVkYWQ0MjgyYjNhOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotRGF0ZTogVHVlLCA1IFNlcCAyMDE3IDAwOjE2OjI5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2FzZmRlYzogRml4IERvUyBpbiBhc2ZfYnVpbGRfc2ltcGxlX2luZGV4KCkKLQotRml4ZXM6IE1pc3NpbmcgRU9GIGNoZWNrIGluIGxvb3AKLU5vIHRlc3RjYXNlCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MjIzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L2FzZmRlY19mLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvYXNmZGVjX2YuYyBiL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKLWluZGV4IGYzYWNiYWUuLmNjNjQ4YjkgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCi0rKysgYi9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCi1AQCAtMTYxMCw2ICsxNjEwLDExIEBAIHN0YXRpYyBpbnQgYXNmX2J1aWxkX3NpbXBsZV9pbmRleChBVkZvcm1hdENvbnRleHQgKnMsIGludCBzdHJlYW1faW5kZXgpCi0gICAgICAgICAgICAgaW50NjRfdCBwb3MgICAgICAgPSBzLT5pbnRlcm5hbC0+ZGF0YV9vZmZzZXQgKyBzLT5wYWNrZXRfc2l6ZSAqIChpbnQ2NF90KXBrdG51bTsKLSAgICAgICAgICAgICBpbnQ2NF90IGluZGV4X3B0cyA9IEZGTUFYKGF2X3Jlc2NhbGUoaXRpbWUsIGksIDEwMDAwKSAtIGFzZi0+aGRyLnByZXJvbGwsIDApOwotIAotKyAgICAgICAgICAgIGlmIChhdmlvX2Zlb2Yocy0+cGIpKSB7Ci0rICAgICAgICAgICAgICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZW5kOwotKyAgICAgICAgICAgIH0KLSsKLSAgICAgICAgICAgICBpZiAocG9zICE9IGxhc3RfcG9zKSB7Ci0gICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICJwa3RudW06JWQsIHBrdGN0OiVkICBwdHM6ICUiUFJJZDY0IlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBrdG51bSwgcGt0Y3QsIGluZGV4X3B0cyk7Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjI1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNjg0NWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0hdIGZmcHJvYmU6IEZpeCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2l0aCBjb2xvciBwcmltYXJpZXMKLQotRm91bmQtYnk6IEFELWxhYiBvZiB2ZW51c3RlY2gKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQyMjUKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gZmZwcm9iZS5jIHwgMTUgKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9mZnByb2JlLmMgYi9mZnByb2JlLmMKLWluZGV4IGEyMTlmYzEuLmRmMjJiMzAgMTAwNjQ0Ci0tLS0gYS9mZnByb2JlLmMKLSsrKyBiL2ZmcHJvYmUuYwotQEAgLTE4OTksNiArMTg5OSwxNiBAQCBzdGF0aWMgdm9pZCBwcmludF9wa3Rfc2lkZV9kYXRhKFdyaXRlckNvbnRleHQgKncsCi0gICAgIHdyaXRlcl9wcmludF9zZWN0aW9uX2Zvb3Rlcih3KTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgcHJpbnRfcHJpbWFyaWVzKFdyaXRlckNvbnRleHQgKncsIGVudW0gQVZDb2xvclByaW1hcmllcyBjb2xvcl9wcmltYXJpZXMpCi0rewotKyAgICBjb25zdCBjaGFyICp2YWwgPSBhdl9jb2xvcl9wcmltYXJpZXNfbmFtZShjb2xvcl9wcmltYXJpZXMpOwotKyAgICBpZiAoIXZhbCB8fCBjb2xvcl9wcmltYXJpZXMgPT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVEKSB7Ci0rCXByaW50X3N0cl9vcHQoImNvbG9yX3ByaW1hcmllcyIsICJ1bmtub3duIik7Ci0rICAgIH0gZWxzZSB7Ci0rCXByaW50X3N0cigiY29sb3JfcHJpbWFyaWVzIiwgdmFsKTsKLSsgICAgfQotK30KLSsKLSBzdGF0aWMgdm9pZCBjbGVhcl9sb2coaW50IG5lZWRfbG9jaykKLSB7Ci0gICAgIGludCBpOwotQEAgLTI0MjAsMTAgKzI0MzAsNyBAQCBzdGF0aWMgaW50IHNob3dfc3RyZWFtKFdyaXRlckNvbnRleHQgKncsIEFWRm9ybWF0Q29udGV4dCAqZm10X2N0eCwgaW50IHN0cmVhbV9pZAotICAgICAgICAgZWxzZQotICAgICAgICAgICAgIHByaW50X3N0cl9vcHQoImNvbG9yX3RyYW5zZmVyIiwgYXZfY29sb3JfdHJhbnNmZXJfbmFtZShwYXItPmNvbG9yX3RyYykpOwotIAotLSAgICAgICAgaWYgKHBhci0+Y29sb3JfcHJpbWFyaWVzICE9IEFWQ09MX1BSSV9VTlNQRUNJRklFRCkKLS0gICAgICAgICAgICBwcmludF9zdHIoImNvbG9yX3ByaW1hcmllcyIsIGF2X2NvbG9yX3ByaW1hcmllc19uYW1lKHBhci0+Y29sb3JfcHJpbWFyaWVzKSk7Ci0tICAgICAgICBlbHNlCi0tICAgICAgICAgICAgcHJpbnRfc3RyX29wdCgiY29sb3JfcHJpbWFyaWVzIiwgYXZfY29sb3JfcHJpbWFyaWVzX25hbWUocGFyLT5jb2xvcl9wcmltYXJpZXMpKTsKLSsgICAgICAgIHByaW50X3ByaW1hcmllcyh3LCBwYXItPmNvbG9yX3ByaW1hcmllcyk7Ci0gCi0gICAgICAgICBpZiAocGFyLT5jaHJvbWFfbG9jYXRpb24gIT0gQVZDSFJPTUFfTE9DX1VOU1BFQ0lGSUVEKQotICAgICAgICAgICAgIHByaW50X3N0cigiY2hyb21hX2xvY2F0aW9uIiwgYXZfY2hyb21hX2xvY2F0aW9uX25hbWUocGFyLT5jaHJvbWFfbG9jYXRpb24pKTsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfMy4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFlYmVjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi1TVU1NQVJZID0gIkEgY29tcGxldGUsIGNyb3NzLXBsYXRmb3JtIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlvIGFuZCB2aWRlby4iCi1ERVNDUklQVElPTiA9ICJGRm1wZWcgaXMgdGhlIGxlYWRpbmcgbXVsdGltZWRpYSBmcmFtZXdvcmssIGFibGUgdG8gZGVjb2RlLCBlbmNvZGUsIHRyYW5zY29kZSwgXAotICAgICAgICAgICAgICAgbXV4LCBkZW11eCwgc3RyZWFtLCBmaWx0ZXIgYW5kIHBsYXkgcHJldHR5IG11Y2ggYW55dGhpbmcgdGhhdCBodW1hbnMgYW5kIG1hY2hpbmVzIFwKLSAgICAgICAgICAgICAgIGhhdmUgY3JlYXRlZC4gSXQgc3VwcG9ydHMgdGhlIG1vc3Qgb2JzY3VyZSBhbmNpZW50IGZvcm1hdHMgdXAgdG8gdGhlIGN1dHRpbmcgZWRnZS4iCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsgJiBNSVQiCi1MSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGliYXZjb2RlYyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZkZXZpY2UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2ZmlsdGVyID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmZvcm1hdCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZ1dGlsID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJwb3N0cHJvYyA9ICJHUEx2MisiCi1MSUNFTlNFX2xpYnN3cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnN3c2NhbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWZpeC1mb3ItbWlwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1NS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE2OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE3MC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE3MS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDIyMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDIyMy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDIyNS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjc0M2RjNjZlYmU2NzE4MDI4M2I5MmQwMjlmNjkwZDBmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQyYTkwMDJjZGM2YjUzM2I1OTcyODgyNzE4NmMwNDRhZDAyYmE2NDg0MWYxYjdjZDZjMjE3Nzk4NzU0NTNhMWUiCi0KLSMgQnVpbGQgZmFpbHMgd2hlbiB0aHVtYiBpcyBlbmFibGVkOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTcKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi0jIFNob3VsZCBiZSBBUEkgY29tcGF0aWJsZSB3aXRoIGxpYmF2ICh3aGljaCB3YXMgYSBmb3JrIG9mIGZmbXBlZykKLSMgbGlicG9zdHByb2Mgd2FzIHByZXZpb3VzbHkgcGFja2FnZWQgZnJvbSBhIHNlcGFyYXRlIHJlY2lwZQotUFJPVklERVMgPSAibGliYXYgbGlicG9zdHByb2MiCi0KLURFUEVORFMgPSAiYWxzYS1saWIgemxpYiBsaWJvZ2cgeWFzbS1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiYXZkZXZpY2UgYXZmaWx0ZXIgYXZjb2RlYyBhdmZvcm1hdCBzd3Jlc2FtcGxlIHN3c2NhbGUgcG9zdHByb2MgXAotICAgICAgICAgICAgICAgICAgIGJ6bGliIGdwbCBsem1hIHRoZW9yYSB4MjY0IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4dicsICcnLCBkKX0iCi0KLSMgbGlicmFyaWVzIHRvIGJ1aWxkIGluIGFkZGl0aW9uIHRvIGF2dXRpbAotUEFDS0FHRUNPTkZJR1thdmRldmljZV0gPSAiLS1lbmFibGUtYXZkZXZpY2UsLS1kaXNhYmxlLWF2ZGV2aWNlIgotUEFDS0FHRUNPTkZJR1thdmZpbHRlcl0gPSAiLS1lbmFibGUtYXZmaWx0ZXIsLS1kaXNhYmxlLWF2ZmlsdGVyIgotUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjIgotUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS1lbmFibGUtYXZmb3JtYXQsLS1kaXNhYmxlLWF2Zm9ybWF0IgotUEFDS0FHRUNPTkZJR1tzd3Jlc2FtcGxlXSA9ICItLWVuYWJsZS1zd3Jlc2FtcGxlLC0tZGlzYWJsZS1zd3Jlc2FtcGxlIgotUEFDS0FHRUNPTkZJR1tzd3NjYWxlXSA9ICItLWVuYWJsZS1zd3NjYWxlLC0tZGlzYWJsZS1zd3NjYWxlIgotUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLS1lbmFibGUtcG9zdHByb2MsLS1kaXNhYmxlLXBvc3Rwcm9jIgotUEFDS0FHRUNPTkZJR1thdnJlc2FtcGxlXSA9ICItLWVuYWJsZS1hdnJlc2FtcGxlLC0tZGlzYWJsZS1hdnJlc2FtcGxlIgotCi0jIGZlYXR1cmVzIHRvIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbYnpsaWJdID0gIi0tZW5hYmxlLWJ6bGliLC0tZGlzYWJsZS1iemxpYixiemlwMiIKLVBBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCIKLVBBQ0tBR0VDT05GSUdbZ3NtXSA9ICItLWVuYWJsZS1saWJnc20sLS1kaXNhYmxlLWxpYmdzbSxsaWJnc20iCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWluZGV2PWphY2ssLS1kaXNhYmxlLWluZGV2PWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdbbGlidm9yYmlzXSA9ICItLWVuYWJsZS1saWJ2b3JiaXMsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCi1QQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHoiCi1QQUNLQUdFQ09ORklHW21wM2xhbWVdID0gIi0tZW5hYmxlLWxpYm1wM2xhbWUsLS1kaXNhYmxlLWxpYm1wM2xhbWUsbGFtZSIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzY2hyb2VkaW5nZXJdID0gIi0tZW5hYmxlLWxpYnNjaHJvZWRpbmdlciwtLWRpc2FibGUtbGlic2Nocm9lZGluZ2VyLHNjaHJvZWRpbmdlciIKLVBBQ0tBR0VDT05GSUdbc2RsMl0gPSAiLS1lbmFibGUtc2RsMiwtLWRpc2FibGUtc2RsMix2aXJ0dWFsL2xpYnNkbDIiCi1QQUNLQUdFQ09ORklHW3NwZWV4XSA9ICItLWVuYWJsZS1saWJzcGVleCwtLWRpc2FibGUtbGlic3BlZXgsc3BlZXgiCi1QQUNLQUdFQ09ORklHW3RoZW9yYV0gPSAiLS1lbmFibGUtbGlidGhlb3JhLC0tZGlzYWJsZS1saWJ0aGVvcmEsbGlidGhlb3JhIgotUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgotUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgotUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLWxpYnZweCwtLWRpc2FibGUtbGlidnB4LGxpYnZweCIKLVBBQ0tBR0VDT05GSUdbeDI2NF0gPSAiLS1lbmFibGUtbGlieDI2NCwtLWRpc2FibGUtbGlieDI2NCx4MjY0IgotUEFDS0FHRUNPTkZJR1t4dl0gPSAiLS1lbmFibGUtb3V0ZGV2PXh2LC0tZGlzYWJsZS1vdXRkZXY9eHYsbGlieHYiCi0KLSMgQ2hlY2sgY29kZWNzIHRoYXQgcmVxdWlyZSAtLWVuYWJsZS1ub25mcmVlCi1VU0VfTk9ORlJFRSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1BBQ0tBR0VDT05GSUcnLCBbICdvcGVuc3NsJyBdLCAneWVzJywgJycsIGQpfSIKLQotZGVmIGNwdShkKToKLSAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKLSAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgotICAgICAgICAgICAgcmV0dXJuIGFyZ1s2Ol0KLSAgICByZXR1cm4gJ2dlbmVyaWMnCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAotICAgIC0tZW5hYmxlLXBpYyBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCi0gICAgLS1kaXNhYmxlLWxpYnhjYiBcCi0gICAgLS1kaXNhYmxlLWxpYnhjYi1zaG0gXAotICAgIC0tZGlzYWJsZS1saWJ4Y2IteGZpeGVzIFwKLSAgICAtLWRpc2FibGUtbGlieGNiLXNoYXBlIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnVVNFX05PTkZSRUUnLCAneWVzJywgJy0tZW5hYmxlLW5vbmZyZWUnLCAnJywgZCl9IFwKLSAgICBcCi0gICAgLS1jcm9zcy1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCi0gICAgXAotICAgIC0tbGQ9IiR7Q0NMRH0iIFwKLSAgICAtLWNjPSIke0NDfSIgXAotICAgIC0tY3h4PSIke0NYWH0iIFwKLSAgICAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gXAotICAgIC0tdGFyZ2V0LW9zPSJsaW51eCIgXAotICAgIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUgXAotICAgIC0tZXh0cmEtY2ZsYWdzPSIke1RBUkdFVF9DRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IiBcCi0gICAgLS1leHRyYS1sZGZsYWdzPSIke1RBUkdFVF9MREZMQUdTfSIgXAotICAgIC0tc3lzcm9vdD0iJHtTVEFHSU5HX0RJUl9UQVJHRVR9IiBcCi0gICAgLS1lbmFibGUtaGFyZGNvZGVkLXRhYmxlcyBcCi0gICAgJHtFWFRSQV9GRkNPTkZ9IFwKLSAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tc2hsaWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS9mZm1wZWcgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBVkFJTFRVTkVTJywgJ21pcHMzMnIyJywgJycsICctLWRpc2FibGUtbWlwc2RzcCAtLWRpc2FibGUtbWlwc2RzcHIyJywgZCl9IFwKLSAgICAtLWNwdT0ke0BjcHUoZCl9IFwKLSAgICAtLXBrZy1jb25maWc9cGtnLWNvbmZpZyBcCi0iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbGludXgtZ251eDMyID0gIiAtLWRpc2FibGUtYXNtIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLVBBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKLSAgICAgICAgICAgICBsaWJhdmRldmljZSBcCi0gICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAotICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKLSAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJhdnV0aWwgXAotICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKLSAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJzd3NjYWxlIgotCi1GSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgotRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgotRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgotRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgotRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgotRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgotRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCi0KLSMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3OWNmN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjQuMi5iYgpAQCAtMCwwICsxLDE1MSBAQAorU1VNTUFSWSA9ICJBIGNvbXBsZXRlLCBjcm9zcy1wbGF0Zm9ybSBzb2x1dGlvbiB0byByZWNvcmQsIGNvbnZlcnQgYW5kIHN0cmVhbSBhdWRpbyBhbmQgdmlkZW8uIgorREVTQ1JJUFRJT04gPSAiRkZtcGVnIGlzIHRoZSBsZWFkaW5nIG11bHRpbWVkaWEgZnJhbWV3b3JrLCBhYmxlIHRvIGRlY29kZSwgZW5jb2RlLCB0cmFuc2NvZGUsIFwKKyAgICAgICAgICAgICAgIG11eCwgZGVtdXgsIHN0cmVhbSwgZmlsdGVyIGFuZCBwbGF5IHByZXR0eSBtdWNoIGFueXRoaW5nIHRoYXQgaHVtYW5zIGFuZCBtYWNoaW5lcyBcCisgICAgICAgICAgICAgICBoYXZlIGNyZWF0ZWQuIEl0IHN1cHBvcnRzIHRoZSBtb3N0IG9ic2N1cmUgYW5jaWVudCBmb3JtYXRzIHVwIHRvIHRoZSBjdXR0aW5nIGVkZ2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjIrICYgTEdQTHYyLjErICYgTUlUIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFX2xpYmF2Y29kZWMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2ZGV2aWNlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmZpbHRlciA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZmb3JtYXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2dXRpbCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGlicG9zdHByb2MgPSAiR1BMdjIrIgorTElDRU5TRV9saWJzd3Jlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJzd3NjYWxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiY2JmNGVhZDIyN2ZjZWRkZGY1NGM4NjAxMzcwNWE5ODgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmI5MmU5NTc4ZWY4YjNlNDllZWFiMjI5ZTY5MzA1ZjVmNGNiYzFmZGFhMjJlOTI3ZmM3ZmNhMThhY2NjZDc0MCIKKworIyBCdWlsZCBmYWlscyB3aGVuIHRodW1iIGlzIGVuYWJsZWQ6IGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxNworQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCisKKyMgU2hvdWxkIGJlIEFQSSBjb21wYXRpYmxlIHdpdGggbGliYXYgKHdoaWNoIHdhcyBhIGZvcmsgb2YgZmZtcGVnKQorIyBsaWJwb3N0cHJvYyB3YXMgcHJldmlvdXNseSBwYWNrYWdlZCBmcm9tIGEgc2VwYXJhdGUgcmVjaXBlCitQUk9WSURFUyA9ICJsaWJhdiBsaWJwb3N0cHJvYyIKKworREVQRU5EUyA9ICJhbHNhLWxpYiB6bGliIGxpYm9nZyB5YXNtLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJhdmRldmljZSBhdmZpbHRlciBhdmNvZGVjIGF2Zm9ybWF0IHN3cmVzYW1wbGUgc3dzY2FsZSBwb3N0cHJvYyBcCisgICAgICAgICAgICAgICAgICAgYnpsaWIgZ3BsIGx6bWEgdGhlb3JhIHgyNjQgXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3h2JywgJycsIGQpfSIKKworIyBsaWJyYXJpZXMgdG8gYnVpbGQgaW4gYWRkaXRpb24gdG8gYXZ1dGlsCitQQUNLQUdFQ09ORklHW2F2ZGV2aWNlXSA9ICItLWVuYWJsZS1hdmRldmljZSwtLWRpc2FibGUtYXZkZXZpY2UiCitQQUNLQUdFQ09ORklHW2F2ZmlsdGVyXSA9ICItLWVuYWJsZS1hdmZpbHRlciwtLWRpc2FibGUtYXZmaWx0ZXIiCitQQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMiCitQQUNLQUdFQ09ORklHW2F2Zm9ybWF0XSA9ICItLWVuYWJsZS1hdmZvcm1hdCwtLWRpc2FibGUtYXZmb3JtYXQiCitQQUNLQUdFQ09ORklHW3N3cmVzYW1wbGVdID0gIi0tZW5hYmxlLXN3cmVzYW1wbGUsLS1kaXNhYmxlLXN3cmVzYW1wbGUiCitQQUNLQUdFQ09ORklHW3N3c2NhbGVdID0gIi0tZW5hYmxlLXN3c2NhbGUsLS1kaXNhYmxlLXN3c2NhbGUiCitQQUNLQUdFQ09ORklHW3Bvc3Rwcm9jXSA9ICItLWVuYWJsZS1wb3N0cHJvYywtLWRpc2FibGUtcG9zdHByb2MiCitQQUNLQUdFQ09ORklHW2F2cmVzYW1wbGVdID0gIi0tZW5hYmxlLWF2cmVzYW1wbGUsLS1kaXNhYmxlLWF2cmVzYW1wbGUiCisKKyMgZmVhdHVyZXMgdG8gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tiemxpYl0gPSAiLS1lbmFibGUtYnpsaWIsLS1kaXNhYmxlLWJ6bGliLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwtLWRpc2FibGUtZ3BsIgorUEFDS0FHRUNPTkZJR1tnc21dID0gIi0tZW5hYmxlLWxpYmdzbSwtLWRpc2FibGUtbGliZ3NtLGxpYmdzbSIKK1BBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtaW5kZXY9amFjaywtLWRpc2FibGUtaW5kZXY9amFjayxqYWNrIgorUEFDS0FHRUNPTkZJR1tsaWJ2b3JiaXNdID0gIi0tZW5hYmxlLWxpYnZvcmJpcywtLWRpc2FibGUtbGlidm9yYmlzLGxpYnZvcmJpcyIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiIKK1BBQ0tBR0VDT05GSUdbbXAzbGFtZV0gPSAiLS1lbmFibGUtbGlibXAzbGFtZSwtLWRpc2FibGUtbGlibXAzbGFtZSxsYW1lIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NkbDJdID0gIi0tZW5hYmxlLXNkbDIsLS1kaXNhYmxlLXNkbDIsdmlydHVhbC9saWJzZGwyIgorUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtbGlic3BlZXgsLS1kaXNhYmxlLWxpYnNwZWV4LHNwZWV4IgorUEFDS0FHRUNPTkZJR1t0aGVvcmFdID0gIi0tZW5hYmxlLWxpYnRoZW9yYSwtLWRpc2FibGUtbGlidGhlb3JhLGxpYnRoZW9yYSIKK1BBQ0tBR0VDT05GSUdbdmFhcGldID0gIi0tZW5hYmxlLXZhYXBpLC0tZGlzYWJsZS12YWFwaSxsaWJ2YSIKK1BBQ0tBR0VDT05GSUdbdmRwYXVdID0gIi0tZW5hYmxlLXZkcGF1LC0tZGlzYWJsZS12ZHBhdSxsaWJ2ZHBhdSIKK1BBQ0tBR0VDT05GSUdbdnB4XSA9ICItLWVuYWJsZS1saWJ2cHgsLS1kaXNhYmxlLWxpYnZweCxsaWJ2cHgiCitQQUNLQUdFQ09ORklHW3gyNjRdID0gIi0tZW5hYmxlLWxpYngyNjQsLS1kaXNhYmxlLWxpYngyNjQseDI2NCIKK1BBQ0tBR0VDT05GSUdbeHZdID0gIi0tZW5hYmxlLW91dGRldj14diwtLWRpc2FibGUtb3V0ZGV2PXh2LGxpYnh2IgorCisjIENoZWNrIGNvZGVjcyB0aGF0IHJlcXVpcmUgLS1lbmFibGUtbm9uZnJlZQorVVNFX05PTkZSRUUgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdQQUNLQUdFQ09ORklHJywgWyAnb3BlbnNzbCcgXSwgJ3llcycsICcnLCBkKX0iCisKK2RlZiBjcHUoZCk6CisgICAgZm9yIGFyZyBpbiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTJykgb3IgJycpLnNwbGl0KCk6CisgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctbWNwdT0nKToKKyAgICAgICAgICAgIHJldHVybiBhcmdbNjpdCisgICAgcmV0dXJuICdnZW5lcmljJworCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtc3RyaXBwaW5nIFwKKyAgICAtLWVuYWJsZS1waWMgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtcHRocmVhZHMgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2IgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2Itc2htIFwKKyAgICAtLWRpc2FibGUtbGlieGNiLXhmaXhlcyBcCisgICAgLS1kaXNhYmxlLWxpYnhjYi1zaGFwZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRV9OT05GUkVFJywgJ3llcycsICctLWVuYWJsZS1ub25mcmVlJywgJycsIGQpfSBcCisgICAgXAorICAgIC0tY3Jvc3MtcHJlZml4PSR7VEFSR0VUX1BSRUZJWH0gXAorICAgIFwKKyAgICAtLWxkPSIke0NDTER9IiBcCisgICAgLS1jYz0iJHtDQ30iIFwKKyAgICAtLWN4eD0iJHtDWFh9IiBcCisgICAgLS1hcmNoPSR7VEFSR0VUX0FSQ0h9IFwKKyAgICAtLXRhcmdldC1vcz0ibGludXgiIFwKKyAgICAtLWVuYWJsZS1jcm9zcy1jb21waWxlIFwKKyAgICAtLWV4dHJhLWNmbGFncz0iJHtUQVJHRVRfQ0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIgXAorICAgIC0tZXh0cmEtbGRmbGFncz0iJHtUQVJHRVRfTERGTEFHU30iIFwKKyAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAorICAgIC0tZW5hYmxlLWhhcmRjb2RlZC10YWJsZXMgXAorICAgICR7RVhUUkFfRkZDT05GfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnQVZBSUxUVU5FUycsICdtaXBzMzJyMicsICcnLCAnLS1kaXNhYmxlLW1pcHNkc3AgLS1kaXNhYmxlLW1pcHNkc3ByMicsIGQpfSBcCisgICAgLS1jcHU9JHtAY3B1KGQpfSBcCisgICAgLS1wa2ctY29uZmlnPXBrZy1jb25maWcgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKKworZG9fY29uZmlndXJlKCkgeworICAgICR7U30vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQorfQorCitQQUNLQUdFUyA9KyAibGliYXZjb2RlYyBcCisgICAgICAgICAgICAgbGliYXZkZXZpY2UgXAorICAgICAgICAgICAgIGxpYmF2ZmlsdGVyIFwKKyAgICAgICAgICAgICBsaWJhdmZvcm1hdCBcCisgICAgICAgICAgICAgbGliYXZyZXNhbXBsZSBcCisgICAgICAgICAgICAgbGliYXZ1dGlsIFwKKyAgICAgICAgICAgICBsaWJwb3N0cHJvYyBcCisgICAgICAgICAgICAgbGlic3dyZXNhbXBsZSBcCisgICAgICAgICAgICAgbGlic3dzY2FsZSIKKworRklMRVNfbGliYXZjb2RlYyA9ICIke2xpYmRpcn0vbGliYXZjb2RlYyR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2ZGV2aWNlID0gIiR7bGliZGlyfS9saWJhdmRldmljZSR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2ZmlsdGVyID0gIiR7bGliZGlyfS9saWJhdmZpbHRlciR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2Zm9ybWF0ID0gIiR7bGliZGlyfS9saWJhdmZvcm1hdCR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYmF2cmVzYW1wbGUke1NPTElCU30iCitGSUxFU19saWJhdnV0aWwgPSAiJHtsaWJkaXJ9L2xpYmF2dXRpbCR7U09MSUJTfSIKK0ZJTEVTX2xpYnBvc3Rwcm9jID0gIiR7bGliZGlyfS9saWJwb3N0cHJvYyR7U09MSUJTfSIKK0ZJTEVTX2xpYnN3cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYnN3cmVzYW1wbGUke1NPTElCU30iCitGSUxFU19saWJzd3NjYWxlID0gIiR7bGliZGlyfS9saWJzd3NjYWxlJHtTT0xJQlN9IgorCisjIGZmbXBlZyBkaXNhYmxlcyBQSUMgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4geDg2LTMyKQorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmNvZGVjID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZGV2aWNlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZmlsdGVyID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Zm9ybWF0ID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2dXRpbCA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnJlc2FtcGxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3c2NhbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dyZXNhbXBsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJwb3N0cHJvYyA9ICJ0ZXh0cmVsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2E4NzJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBhMWQ3YzU4MjM5MmM4YmM4N2ZhOTQxMWFmNzdiMjBlMDExOTQ0MzU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI1IEphbiAyMDE4IDE3OjU1OjAyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGdzdC9nc3RwbHVnaW5sb2FkZXIuYzogd2hlbiBlbnYgdmFyIGlzIHNldCBkbyBub3QgZmFsbAorIHRocm91Z2ggdG8gc3lzdGVtIHBsdWdpbiBzY2FubmVyCisKK0lmIHdlIHNldCBhIGN1c3RvbSBHU1RfUExVR0lOX1NDQU5ORVIgZW52IHZhciwgdGhlbiB3ZSBwcm9iYWJseSB3YW50IHRvIHVzZSB0aGF0IGFuZCBvbmx5IHRoYXQuCisKK0ZhbGxpbmcgdGhyb3VnaCB0byB0aGUgb25lIGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtIGlzIHByb2JsYW1hdGljIGluIGNyb3NzLWNvbXBpbGF0aW9uCitlbnZpcm9uZW1udHMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvbmUgcG9pbnRlZCB0byBieSB0aGUgZW52IHZhciBzdWNjZWVkZWQgb3IgZmFpbGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgZ3N0L2dzdHBsdWdpbmxvYWRlci5jIHwgNCArLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3N0L2dzdHBsdWdpbmxvYWRlci5jIGIvZ3N0L2dzdHBsdWdpbmxvYWRlci5jCitpbmRleCA0MzA4MjlkLi4zYTc1NzMxIDEwMDY0NAorLS0tIGEvZ3N0L2dzdHBsdWdpbmxvYWRlci5jCisrKysgYi9nc3QvZ3N0cGx1Z2lubG9hZGVyLmMKK0BAIC00NzEsOSArNDcxLDcgQEAgZ3N0X3BsdWdpbl9sb2FkZXJfc3Bhd24gKEdzdFBsdWdpbkxvYWRlciAqIGxvYWRlcikKKyAgICAgaGVscGVyX2JpbiA9IGdfc3RyZHVwIChlbnYpOworICAgICByZXMgPSBnc3RfcGx1Z2luX2xvYWRlcl90cnlfaGVscGVyIChsb2FkZXIsIGhlbHBlcl9iaW4pOworICAgICBnX2ZyZWUgKGhlbHBlcl9iaW4pOworLSAgfQorLQorLSAgaWYgKCFyZXMpIHsKKysgIH0gZWxzZSB7CisgICAgIEdTVF9MT0cgKCJUcnlpbmcgaW5zdGFsbGVkIHBsdWdpbiBzY2FubmVyIik7CisgCisgI2lmZGVmIEdfT1NfV0lOMzIKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvZ3RrLWRvYy10d2Vha3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2d0ay1kb2MtdHdlYWtzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NmM3OGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2d0ay1kb2MtdHdlYWtzLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gNzAxOGNhMWM0YmYyNmM4MzE3ZTdmY2QyZTdlNGU2NDgxOTVmNDJjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDIwIERlYyAyMDE3IDEzOjAzOjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGdzdHJlYW1lcjogdXNlIGEgcGF0Y2ggaW5zdGVhZCBvZiBzZWQgdG8gZml4IGd0ay1kb2MKKworUGF0Y2ggdGhlIGd0ay1kb2MgbWFrZWZpbGVzIHNvIHRoYXQgdGhlIHFlbXUgd3JhcHBlciBpcyB1c2VkIHRvIHJ1biB0cmFuc2llbnQKK2JpbmFyaWVzIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseS4KKworQWxzbyBzdWJzdGl0dXRlIGEgYm9ndXMgcGx1Z2luIHNjYW5uZXIsIGFzIHRyeWluZyB0byBydW4gdGhlIHJlYWwgb25lIGlzIGNhdXNpbmcKK2lzc3VlcyBkdXJpbmcgYnVpbGQgb24geDg2XzY0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKKy0tLQorIGNvbW1vbi9ndGstZG9jLm1hayB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29tbW9uL2d0ay1kb2MubWFrIGIvY29tbW9uL2d0ay1kb2MubWFrCitpbmRleCAzZjgzNDkxLi5lNWNiMGQxIDEwMDY0NAorLS0tIGEvY29tbW9uL2d0ay1kb2MubWFrCisrKysgYi9jb21tb24vZ3RrLWRvYy5tYWsKK0BAIC02LDExICs2LDExIEBACisgaWYgR1RLX0RPQ19VU0VfTElCVE9PTAorIEdUS0RPQ19DQyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgJChDQykgJChJTkNMVURFUykgJChHVEtET0NfREVQU19DRkxBR1MpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKKyBHVEtET0NfTEQgPSAkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpICQoR1RLRE9DX0RFUFNfTElCUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykKKy1HVEtET0NfUlVOID0gJChMSUJUT09MKSAtLW1vZGU9ZXhlY3V0ZQorK0dUS0RPQ19SVU4gPSAkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyCisgZWxzZQorIEdUS0RPQ19DQyA9ICQoQ0MpICQoSU5DTFVERVMpICQoR1RLRE9DX0RFUFNfQ0ZMQUdTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCisgR1RLRE9DX0xEID0gJChDQykgJChHVEtET0NfREVQU19MSUJTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgJChMREZMQUdTKQorLUdUS0RPQ19SVU4gPQorK0dUS0RPQ19SVU4gPSAkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyCisgZW5kaWYKKyAKKyAjIFdlIHNldCBHUEFUSCBoZXJlOyB0aGlzIGdpdmVzIHVzIHNlbWFudGljcyBmb3IgR05VIG1ha2UKK0BAIC0xMDEsNiArMTAxLDcgQEAgc2Nhbi1idWlsZC5zdGFtcDogJChIRklMRV9HTE9CKSAkKENGSUxFX0dMT0IpCisgCSAgICBHU1RfUExVR0lOX1BBVEhfMV8wPQkJCQkJXAorIAkgICAgR1NUX1JFR0lTVFJZXzFfMD1kb2MtcmVnaXN0cnkueG1sCQkJCVwKKyAJICAgICQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKQkJCQkJXAorKwkgICAgR1NUX1BMVUdJTl9TQ0FOTkVSXzFfMD0iJCh0b3BfYnVpbGRkaXIpL2xpYnMvZ3N0L2hlbHBlcnMvZ3N0LXBsdWdpbi1zY2FubmVyLWR1bW15IiBcCisgCSAgICBDQz0iJChHVEtET0NfQ0MpIiBMRD0iJChHVEtET0NfTEQpIiBSVU49IiQoR1RLRE9DX1JVTikiCVwKKyAJICAgIENGTEFHUz0iJChHVEtET0NfQ0ZMQUdTKSAkKENGTEFHUykiCQkJCVwKKyAJICAgIExERkxBR1M9IiQoR1RLRE9DX0xJQlMpICQoTERGTEFHUykiCQkJCVwKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzLzAwMDEtTWFrZS1wbGF5ZXItZXhhbXBsZXMtaW5zdGFsbGFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlcy8wMDAxLU1ha2UtcGxheWVyLWV4YW1wbGVzLWluc3RhbGxhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMzhiYWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlcy8wMDAxLU1ha2UtcGxheWVyLWV4YW1wbGVzLWluc3RhbGxhYmxlLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gNzU1ZjZkYWIwNzU2NWFjYTdiNmFlZmFjYWQ4YmU2NWRlMzY0ZmY3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDE3IEF1ZyAyMDE3IDExOjA3OjAyICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgcGxheWVyIGV4YW1wbGVzIGluc3RhbGxhYmxlCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbVXBzdHJlYW0gY29uc2lkZXJzIHRoZXNlIGNvZGUgZXhhbXBsZXMsIGZvciBub3cgYSBsZWFzdF0KKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3NzgyNworLS0tCisgcGxheWJhY2svcGxheWVyL2dzdC1wbGF5L21lc29uLmJ1aWxkIHwgMSArCisgcGxheWJhY2svcGxheWVyL2d0ay9tZXNvbi5idWlsZCAgICAgIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3BsYXliYWNrL3BsYXllci9nc3QtcGxheS9tZXNvbi5idWlsZCBiL3BsYXliYWNrL3BsYXllci9nc3QtcGxheS9tZXNvbi5idWlsZAoraW5kZXggNzE5YjU1Yi4uYTU2ZmUxMyAxMDA2NDQKKy0tLSBhL3BsYXliYWNrL3BsYXllci9nc3QtcGxheS9tZXNvbi5idWlsZAorKysrIGIvcGxheWJhY2svcGxheWVyL2dzdC1wbGF5L21lc29uLmJ1aWxkCitAQCAtOCw1ICs4LDYgQEAgZXhlY3V0YWJsZSgnZ3N0LXBsYXknLAorICAgICBbJ2dzdC1wbGF5LmMnLAorICAgICAgJ2dzdC1wbGF5LWtiLmMnLAorICAgICAgJ2dzdC1wbGF5LWtiLmgnXSwKKysgICAgaW5zdGFsbDogdHJ1ZSwKKyAgICAgZGVwZW5kZW5jaWVzIDogW2dzdF9kZXAsIGdzdHBsYXllcl9kZXAsIG1fZGVwXSkKKyAKK2RpZmYgLS1naXQgYS9wbGF5YmFjay9wbGF5ZXIvZ3RrL21lc29uLmJ1aWxkIGIvcGxheWJhY2svcGxheWVyL2d0ay9tZXNvbi5idWlsZAoraW5kZXggMDhhYWU0Zi4uNjcxYTY1ZCAxMDA2NDQKKy0tLSBhL3BsYXliYWNrL3BsYXllci9ndGsvbWVzb24uYnVpbGQKKysrKyBiL3BsYXliYWNrL3BsYXllci9ndGsvbWVzb24uYnVpbGQKK0BAIC0xOCw1ICsxOCw2IEBAIGV4ZWN1dGFibGUoJ2d0ay1wbGF5JywKKyAgICAgICBndGtfcGxheV9yZXNvdXJjZXMsCisgICAgICAnZ3RrLXZpZGVvLXJlbmRlcmVyLmgnLAorICAgICAgJ2d0ay12aWRlby1yZW5kZXJlci5jJ10sCisrICAgIGluc3RhbGw6IHRydWUsCisgICAgIGRlcGVuZGVuY2llcyA6IFtnbGliX2RlcCwgZ29iamVjdF9kZXAsIGdtb2R1bGVfZGVwLCBnc3RfZGVwLCBnc3R0YWdfZGVwLCBnc3RwbGF5ZXJfZGVwLCBndGtfZGVwLCB4MTFfZGVwXSkKKyAKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9nc3QtcGxheWVyLmRlc2t0b3AgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlcy9nc3QtcGxheWVyLmRlc2t0b3AKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9nc3QtcGxheWVyLmRlc2t0b3AKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzL2dzdC1wbGF5ZXIuZGVza3RvcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtZXhhbXBsZXNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtZXhhbXBsZXNfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkODdmMjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlc19naXQuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJHU3RyZWFtZXIgZXhhbXBsZXMgKGluY2x1ZGluZyBndGstcGxheSwgZ3N0LXBsYXkpIgorTElDRU5TRSA9ICJMR1BMLTIuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wbGF5YmFjay9wbGF5ZXIvZ3RrL2d0ay1wbGF5LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZjhjNzJkYWUzZDM2ODIzZWM3MTZhOWViY2FlNTkzYjkiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIGd0ayszIGdsaWItMi4wLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1wbGF5ZXItZXhhbXBsZXMtaW5zdGFsbGFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3N0LXBsYXllci5kZXNrdG9wIgorCitTUkNSRVYgPSAiNDgyNDdjNmFiNjgwN2Q2YWUxNzljZjY1M2NiZGM2NDcxNGQzMzEzYyIKK1BWID0gIjAuMC4xK2dpdCR7U1JDUFZ9IgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtbSAwNjQ0IC1EICR7V09SS0RJUn0vZ3N0LXBsYXllci5kZXNrdG9wICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9nc3QtcGxheWVyLmRlc2t0b3AKK30KKworUkRFUEVORFNfJHtQTn0gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1wbGF5YmFjayIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtbWV0YSBcCisgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLW1ldGEgXAorICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLW1ldGEgXAorICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgImdzdHJlYW1lcjEuMC1saWJhdiIsICIiLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS1tZXRhIiwgIiIsIGQpfSIKK1JQUk9WSURFU18ke1BOfSArPSAiZ3N0LXBsYXllciBnc3QtcGxheWVyLWJpbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXJfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmU4ZmRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllcl9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkdTdHJlYW1lciBwbGF5YmFjayBoZWxwZXIgbGlicmFyeSBhbmQgZXhhbXBsZXMiCi1MSUNFTlNFID0gIkxHUEwtMi4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2d0ay9ndGstcGxheS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWY4YzcyZGFlM2QzNjgyM2VjNzE2YTllYmNhZTU5M2I5IgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBndGsrMyBnbGliLTIuMC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zZHJvZWdlL2dzdC1wbGF5ZXIuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL2dzdC1wbGF5ZXIuZGVza3RvcCIKLQotU1JDUkVWID0gImVlM2MyMjZjODI3NjdhMDg5NzQzZTRlMDYwNTg3NDNlNjdmNzNjZGIiCi1QViA9ICIwLjAuMStnaXQke1NSQ1BWfSIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQl0b3VjaCAke1N9L0NoYW5nZUxvZwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1tIDA2NDQgLUQgJHtXT1JLRElSfS9nc3QtcGxheWVyLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2dzdC1wbGF5ZXIuZGVza3RvcAotfQotCi1SREVQRU5EU18ke1BOfSA9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXBsYXliYWNrIgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1tZXRhIFwKLSAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QtbWV0YSBcCi0gICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQtbWV0YSBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAiZ3N0cmVhbWVyMS4wLWxpYmF2IiwgIiIsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LW1ldGEiLCAiIiwgZCl9IgotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1iaW4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjEyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYyNTg1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTIuNC5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkdzdHJlYW1lciB2YWxpZGF0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJBIFRvb2wgdG8gdGVzdCBHU3RyZWFtZXIgY29tcG9uZW50cyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9nc3QtdmFsaWRhdGUvMS4xMi4zLmh0bWwiCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7QlBOfS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiYmMwNzRkNDk2NzcwODFmOWMyN2RlMTFhMDkxNjU3NDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjlkYTlkZmU2ZTVkNmY1YmEzYjM4YzU3NTJiNDJkM2Y5Mjc3MTU5MDQ5NDJiNDA1YzI5MjRkM2NiNzdhZmJhMSIKKworREVQRU5EUyA9ICJqc29uLWdsaWIgZ2xpYi0yLjAgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCitSUkVDT01NRU5EU18ke1BOfSA9ICJnaXQiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvKiAke2xpYmRpcn0vZ3N0LXZhbGlkYXRlLWxhdW5jaGVyLyogJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKiIKKworaW5oZXJpdCBwa2djb25maWcgZ2V0dGV4dCBhdXRvdG9vbHMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKyMgV2l0aCBndGstZG9jIGVuYWJsZWQgdGhpcyByZWNpcGUgZmFpbHMgdG8gYnVpbGQsIHNvIGZvcmNpYmx5IGRpc2FibGUgaXQ6CisjIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS9nc3QtdmFsaWRhdGUtc2NhbjogbGluZSAxMTc6CisjIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS8ubGlicy9sdC1nc3QtdmFsaWRhdGUtc2NhbjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorR1RLRE9DX0VOQUJMRUQgPSAiRmFsc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNWJiZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtbGliYXYuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGliYXYvZ3N0YXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1hNzUyYzM1MjY3ZDgyNzZmZDljYTNkYjY5OTRmY2E5YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODc4OGFlY2MwMzJhMjg3MjI3YjRiZDIzOWQxYjk5OGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWJiNzM1YjliYjIxOGI2NTJhZTQwNzFlYTZmNmJlOGVhYWU1NWU5ZDMyMzNhZWMyZjM2Yjg4MmEyNzU0MmRiMyIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1saWJhdi0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjU0N2JhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi40LmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLWxpYmF2LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYmF2L2dzdGF2Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9YTc1MmMzNTI2N2Q4Mjc2ZmQ5Y2EzZGI2OTk0ZmNhOWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LWxpYmF2L2dzdC1saWJhdi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1oZXZjcHJlZF9tc2EuYy1GaXgtYnVpbGQtYnktSW5jbHVkaW5nLWxpYmF2Y29kZWMtaGV2LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjhhODUxYmYyZTQ3NWU5MGEzZmRhYzk1MDZlM2U0ZGJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJhNTZhYTVkMmQ4Y2Q5MTJmMmJjZTE3ZjE3NDcxM2QyYzQxN2NhMjk4ZjFmOWMyOGVlNjZkNGFhMWUxZDllNjIiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtbGliYXYtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFkNDU3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotaW5jbHVkZSBnc3RyZWFtZXIxLjAtb214LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vbXgvZ3N0b214Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NWM4ZTFmY2EzMjcwNDQ4OGU3NmQyYmE5ZGRmYTkzNWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1vbXgvZ3N0LW9teC0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0YTE0MDRhMjBiNzJlNGFiNmU4MjY1MDAyMThlYzMwOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjIyMzk4ZjQ1YTAyN2U5NzdkMmI1MzA5NjI1ZWM5MWNkY2FmMGRhODc1MWNiYzdmNTk2ZDYzOWE0NWJhMjk4IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LW9teC0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmN2VhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi40LmJiCkBAIC0wLDAgKzEsMTEgQEAKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLW9teC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb214L2dzdG9teC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTVjOGUxZmNhMzI3MDQ0ODhlNzZkMmJhOWRkZmE5MzVmIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3Qtb214L2dzdC1vbXgtJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZWI4ZDVhZTNiNjljZmVlZDlkYzc3YzU5MjEwNjI0N2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTAyNWZhMjQyNDJlYzg2OGZlMGZmMWU2NmQ4MDZhMTA3MGJjYmM3YzE0YTk4N2E4OWNkYzMzOTVkMGQ1NmQ1ZiIKKworUyA9ICIke1dPUktESVJ9L2dzdC1vbXgtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKaW5kZXggN2JlMTVkOS4uY2EyZWE5ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYwpAQCAtMjIsNyArMjIsNyBAQAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmIgdnVsa2FuJywgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKLSAgICBiejIgY3VybCBkYXNoIGR0bHMgaGxzIG5lb24gcnN2ZyBzYmMgc21vb3Roc3RyZWFtaW5nIHNuZGZpbGUgdXZjaDI2NCB3ZWJwIFwKKyAgICBiejIgY3VybCBkYXNoIGR0bHMgaGxzIHJzdmcgc2JjIHNtb290aHN0cmVhbWluZyBzbmRmaWxlIHV2Y2gyNjQgd2VicCBcCiAiCiAKIFBBQ0tBR0VDT05GSUdbYXNzcmVuZGVyXSAgICAgICA9ICItLWVuYWJsZS1hc3NyZW5kZXIsLS1kaXNhYmxlLWFzc3JlbmRlcixsaWJhc3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLVByZXBlbmQtUEtHX0NPTkZJR19TWVNST09UX0RJUi10by1wa2ctY29uZmlnLW91dHB1dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtUHJlcGVuZC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLXRvLXBrZy1jb25maWctb3V0cHV0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGQ5M2FiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtUHJlcGVuZC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLXRvLXBrZy1jb25maWctb3V0cHV0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSA3YzhmNjhjNTQyODM4MGI5MzA1NzlkYzllZjI3Yzg1MzI2NDQ0OGZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTUgTWF5IDIwMTcgMTU6MDY6MTEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gUHJlcGVuZCBQS0dfQ09ORklHX1NZU1JPT1RfRElSIHRvIHBrZy1jb25maWcgb3V0cHV0Ci0KLUluIGNyb3NzIGVudmlyb25tZW50IHdlIGhhdmUgdG8gcHJlcGVuZCB0aGUgc3lzcm9vdCB0byB0aGUgcGF0aCBmb3VuZCBieQotcGtnY29uZmlnIHNpbmNlIHRoZSBwYXRoIHJldHVybmVkIGZyb20gcGtnY29uZmlnIGRvZXMgbm90IGhhdmUgc3lzcm9vdCBwcmVmaXhlZAotaXQgZW5kcyB1cCB1c2luZyB0aGUgZmlsZXMgZnJvbSBob3N0IHN5c3RlbS4gSWYgYnVpbGQgaG9zdCBoYXMgd2F5bGFuZCBpbnN0YWxsZWQKLXRoZSBidWlsZCB3aWxsIHN1Y2NlZWQgYnV0IGlmIHlvdSBkb250IGhhdmUgd2F5bGFuZC1wcm90b2NvbHMgaW5zdGFsbGVkIG9uIGJ1aWxkCi1ob3N0IHRoZW4gaXQgd29udCBmaW5kIHRoZSBmaWxlcyBvbiBidWlsZCBob3N0Ci0KLVRoaXMgc2hvdWxkIHdvcmsgb2sgd2l0aCBub24gc3lzcm9vdGVkIGJ1aWxkcyB0b28gc2luY2UKLWluIHRob3NlIGNhc2VzIFBLR19DT05GSUdfU1lTUk9PVF9ESVIgd2lsbCBiZSBlbXB0eQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlMzA3YmU2Li44M2NkZWIwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yMjcyLDcgKzIyNzIsNyBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShXQVlMQU5ELCBbd2F5bGFuZCBzaW5rXSwgd2F5bGFuZCAsIFsKLSAgIFBLR19DSEVDS19NT0RVTEVTKFdBWUxBTkQsIHdheWxhbmQtY2xpZW50ID49IDEuNC4wIGxpYmRybSA+PSAyLjQuNTUgd2F5bGFuZC1wcm90b2NvbHMgPj0gMS40LCBbCi0gICAgIGlmIHRlc3QgIngkd2F5bGFuZF9zY2FubmVyIiAhPSAieCI7IHRoZW4KLSAgICAgICBIQVZFX1dBWUxBTkQ9InllcyIKLS0gICAgICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCBgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSsgICAgICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCAke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQotICAgICBlbHNlCi0gICAgICAgQUNfTVNHX1JFU1VMVChbd2F5bGFuZC1zY2FubmVyIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSB3YXlsYW5kIHBsdWdpbl0pCi0gICAgICAgSEFWRV9XQVlMQU5EPSJubyIKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2gKaW5kZXggZDUyYWZkNS4uYWQ4NjMyOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoCkBAIC0xOCwxMSArMTgsMTEgQEAKICBjb25maWd1cmUuYWMgfCAgIDIzICsrKysrKysrKysrKysrKysrLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDBlOTVjNWMuLjEyMTUzYjQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE5MDEsNiArMTkwMSwxNSBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDSFJPTUFQUklOVCwgW2Nocm9tYXByaW50XSwgY2hyb21hcHJpbnQsIFsKK0luZGV4OiBnc3QtcGx1Z2lucy1iYWQtMS4xMi4zL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhZC0xLjEyLjMub3JpZy9jb25maWd1cmUuYWMKKysrKyBnc3QtcGx1Z2lucy1iYWQtMS4xMi4zL2NvbmZpZ3VyZS5hYworQEAgLTIxMzksNiArMjEzOSwxNSBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDSFJPTUFQUklOVCwgW2Nocm9tCiAgXSkKICAKICBkbmwgKioqIEN1cmwgKioqCkBAIC0zNyw4ICszNyw4IEBACiArCiAgdHJhbnNsaXQoZG5tLCBtLCBsKSBBTV9DT05ESVRJT05BTChVU0VfQ1VSTCwgdHJ1ZSkKICBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDVVJMLCBbQ3VybCBwbHVnaW5dLCBjdXJsLCBbCi0gICBQS0dfQ0hFQ0tfTU9EVUxFUyhDVVJMLCBsaWJjdXJsID49IDcuMjEuMCwgWwotQEAgLTE5MTUsMTIgKzE5MjQsMTQgQEAgQUdfR1NUX0NIRUNLX0ZFQVRVUkUoQ1VSTCwgW0N1cmwgcGx1Z2luXSwgY3VybCwgWworICAgUEtHX0NIRUNLX01PRFVMRVMoQ1VSTCwgbGliY3VybCA+PSA3LjM1LjAsIFsKK0BAIC0yMTYxLDEyICsyMTcwLDE0IEBAIEFHX0dTVF9DSEVDS19GRUFUVVJFKENVUkwsIFtDdXJsIHBsdWdpbl0KICAgIF0pCiAgICBBQ19TVUJTVChDVVJMX0NGTEFHUykKICAgIEFDX1NVQlNUKENVUkxfTElCUykKQEAgLTU5LDYgKzU5LDMgQEAKICAgIEFNX0NPTkRJVElPTkFMKFVTRV9TU0gyLCB0ZXN0ICJ4JEhBVkVfU1NIMiIgPSAieHllcyIpCiAgICBBQ19TVUJTVChTU0gyX0NGTEFHUykKICAgIEFDX1NVQlNUKFNTSDJfTElCUykKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMjFkYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSAiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2ggXAotICAgIGZpbGU6Ly9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXZrZGlzcGxheS1Vc2UtaWZkZWYtZm9yLXBsYXRmb3JtLXNwZWNpZmljLWRlZmluZXMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLXZ1bGthbi1Vc2UtdGhlLWdlbmVyYXRlZC12ZXJzaW9uLW9mLXZrY29uZmlnLmgucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjU2ODNmMGVhOTFmOWUxZTA2MTNiMGY2ZjcyOTk4MGE3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljMmM3ZWRkZTRmNTlkNzRlYjQxNGUwNzAxYzU1MTMxZjU2MmU1YzYwNWEzY2U5YjA5MTc1NGYxMDZjMDllMzciCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYWQtJHtQVn0iCi0KLUVYVFJBX09FQ09ORiArPSAiV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0iCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmM3ZmZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi40LmJiCkBAIC0wLDAgKzEsMjQgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MjE2ODJlNGU4ZmVhNTI0MTNmZDI2YzYwYWNiOTA3ZTUgIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhZC9nc3QtcGx1Z2lucy1iYWQtJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaCBcCisgICAgZmlsZTovL2ZpeC1tYXliZS11bmluaXRpYWxpemVkLXdhcm5pbmdzLXdoZW4tY29tcGlsaW5nLXdpdGgtT3MucGF0Y2ggXAorICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCisgICAgZmlsZTovL2Vuc3VyZS12YWxpZC1zZW50aW5lbHMtZm9yLWdzdF9zdHJ1Y3R1cmVfZ2V0LWV0Yy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwOS1nbGltYWdlc2luay1Eb3ducmFuay10by1tYXJnaW5hbC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCisgICAgZmlsZTovL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtdmtkaXNwbGF5LVVzZS1pZmRlZi1mb3ItcGxhdGZvcm0tc3BlY2lmaWMtZGVmaW5lcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItdnVsa2FuLVVzZS10aGUtZ2VuZXJhdGVkLXZlcnNpb24tb2Ytdmtjb25maWcuaC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNjRiZjE2Y2YxNWVkYWFiMWMwZTAyYzhkZWU3MTcwZDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGM3ODU3YmUxNjY4NmQ1YzFiYTZlMzRiZDMzODY2NGQzZDQ1OTlkMzI3MTRhOGVjYTVjOGE0MWExMDFlMmQwOCIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhZC0ke1BWfSIKKworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaAppbmRleCAwYThiYzliLi42NjE2ZTJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2gKQEAgLTIwLDExICsyMCwxMSBAQAogIGdzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbSAgICAgIHwgIDggKysrKy0tLS0KICAxMSBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLWluZGV4IGJjN2Y1M2EuLjBlZjVmODYgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLUBAIC0zNSw3ICszNSw3IEBAIEdzdEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YWxsb2NhdG9ycy1ACitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCisrKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KK0BAIC0zNiw3ICszNiw3IEBAIEdzdEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKEkKICAJCS0tYy1pbmNsdWRlICJnc3QvYWxsb2NhdG9ycy9hbGxvY2F0b3JzLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCkBAIC0zMyw3ICszMyw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0YWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotQEAgLTU5LDcgKzU5LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTYwLDcgKzYwLDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC00MiwxMSArNDIsMTEgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotaW5kZXggZGNjMmZlMC4uZGMwNzZjYiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLUBAIC00OCw4ICs0OCw4IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhcHAtQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KK0BAIC00OCw4ICs0OCw4IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0tYy1pbmNsdWRlICJnc3QvYXBwL2FwcC5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtNTcsMTEgKzU3LDExIEBACiAgCQktLWxpYnJhcnk9bGliZ3N0YXBwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotaW5kZXggMjM3NDE5Ni4uMjk1ZWI0MiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCi1AQCAtMTA2LDEyICsxMDYsMTIgQEAgR3N0QXVkaW8tQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YXVkaW8tQEdTVF9BUElfVkUKK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQorQEAgLTE2NywxMiArMTY3LDEyIEBAIEdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1MKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAgCQktLWMtaW5jbHVkZSAiZ3N0L2F1ZGlvL2F1ZGlvLmgiIFwKQEAgLTc4LDcgKzc4LDcgQEAKICAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTE0MCw4ICsxNDAsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtMjAxLDggKzIwMSw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCkBAIC04OSwxMSArODksMTEgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2ZmdC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KLWluZGV4IGY1NDUzNTQuLjFiYjYyNDMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi1AQCAtNjIsNyArNjIsNyBAQCBHc3RGZnQtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0ZmZ0LUBHU1RfQVBJX1ZFUlNJTworSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KKysrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCitAQCAtNjMsNyArNjMsNyBAQCBHc3RGZnQtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFCiAgCQktLWMtaW5jbHVkZSAiZ3N0L2ZmdC9mZnQuaCIgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKQEAgLTEwMiw3ICsxMDIsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdGZmdC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotQEAgLTg2LDcgKzg2LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTg3LDcgKzg3LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0xMTEsMTEgKzExMSwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLWluZGV4IDkxZGMyMTQuLmRjOGUxZDMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLUBAIC04NCwxNCArODQsMTQgQEAgR3N0UGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RwYnV0aWxzLUBHU1RfQVAKK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KKysrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQorQEAgLTg1LDE0ICs4NSwxNCBAQCBHc3RQYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRSCiAgCQktLWMtaW5jbHVkZSAiZ3N0L3BidXRpbHMvcGJ1dGlscy5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMTM0LDcgKzEzNCw3IEBACiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKICAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2F1ZGlvLyIgXAotQEAgLTEyNCw4ICsxMjQsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtMTI1LDggKzEyNSw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMTQ1LDExICsxNDUsMTEgQEAKICAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCiAgCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCiAgCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYXVkaW8vIiBcCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotaW5kZXggM2JkOGZjMC4uMGExMTVjYyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotQEAgLTQxLDggKzQxLDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQorSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCitAQCAtNDIsOCArNDIsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MKICAjCQktLWMtaW5jbHVkZSAiZ3N0L3JpZmYvcmlmZi5oIiBcCiAgIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL3RhZyBcCiAgIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL2F1ZGlvIFwKQEAgLTE2MCw3ICsxNjAsNyBAQAogICMJCS0tbGlicmFyeT1saWJnc3RyaWZmLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAjCQktLWluY2x1ZGU9R3N0QXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAogICMJCS0taW5jbHVkZT1Hc3RUYWctQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTczLDggKzczLDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQorQEAgLTc0LDggKzc0LDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTCiAgIwkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKICAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vdGFnIFwKICAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vYXVkaW8gXApAQCAtMTcxLDExICsxNzEsMTEgQEAKICAjCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKICAjCiAgI0NMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotaW5kZXggZjU0NDVjMS4uNTI3YzBiNCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLUBAIC02MCw4ICs2MCw4IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHAtQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KK0BAIC02MSw4ICs2MSw4IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0tYy1pbmNsdWRlICJnc3QvcnRwL3J0cC5oIiBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXApAQCAtMTg2LDcgKzE4Niw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0cnRwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTg4LDggKzg4LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTg5LDggKzg5LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0xOTcsMTEgKzE5NywxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi1pbmRleCA5YjBiMjU4Li40ZjZkOWY4IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi1AQCAtNjcsNyArNjcsNyBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSUworSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCitAQCAtNjgsNyArNjgsNyBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL3NkcCBcCkBAIC0yMTAsNyArMjEwLDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3RydHNwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1HaW8tMi4wIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTk3LDcgKzk3LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTk4LDcgKzk4LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpLy4uL3NkcCBcCkBAIC0yMTksMTEgKzIxOSwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQotaW5kZXggMGUxNDliOC4uOWFhMDUxMiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLUBAIC0yOSw3ICsyOSw3IEBAIEdzdFNkcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KK0BAIC0zMCw3ICszMCw3IEBAIEdzdFNkcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0td2Fybi1hbGwgXAogIAkJLS1jLWluY2x1ZGUgImdzdC9zZHAvc2RwLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCkBAIC0yMzIsNyArMjMyLDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWxpYnRvb2w9IiQoTElCVE9PTCkiIFwKLUBAIC01Myw3ICs1Myw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKK0BAIC01NCw3ICs1NCw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMjQxLDExICsyNDEsMTEgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQotaW5kZXggY2FmYWZkMy4uYmE5OTI3OSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLUBAIC00MCw4ICs0MCw4IEBAIEdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R0YWctQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KK0BAIC01OSw4ICs1OSw4IEBAIEdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0tYy1pbmNsdWRlICJnc3QvdGFnL3RhZy5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMjU2LDMzICsyNTYsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdHRhZy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC02OCw4ICs2OCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTID0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCi1pbmRleCBhYzY0ZWIzLi4zNDJjOGM2IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KLUBAIC0xMTEsOCArMTExLDggQEAgR3N0VmlkZW8tQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0dmlkZW8tQEdTVF9BUElfVkUKLSAJCS0tYy1pbmNsdWRlICJnc3QvdmlkZW8vdmlkZW8uaCIgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTEzOSw4ICsxMzksOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtODcsOCArODcsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9CiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKQEAgLTI5Myw2ICsyNjcsMjkgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi0tLSAKLTIuNi4yCi0KK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQorQEAgLTExNiw4ICsxMTYsOCBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TCisgCQktLWMtaW5jbHVkZSAiZ3N0L3ZpZGVvL3ZpZGVvLmgiIFwKKyAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCisgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCistCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKKy0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKKyAJCS0tbGlicmFyeT1saWJnc3R2aWRlby1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKKyAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKK0BAIC0xNDQsOCArMTQ0LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQorIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCisgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKKyAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCistCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKKy0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKKyAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQorIAorIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRlMGI4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNTRjZTkzNDU3MjcxNzVmZjY2ZDE3YjY3ZmY1MWY1OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYXNlL2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1zdWJwYXJzZS1zZXQtbmVlZF9zZWdtZW50LWFmdGVyLXNpbmstcGFkLXJlY2VpdmVkLUdTLnBhdGNoIFwKLSAgICBmaWxlOi8vbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjc3ZjUzNzljNGNhNjc3NjE2YjQxNWUzYjNmZjk1NTc4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUwNjdkY2UzYWZlMTk3YTk1MzZmZWEwMTA3Yzc3MjEzZmFiNTM2ZGZmNGEyMTNiMDdmYzYwMzc4ZDU1MTA2NzUiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ4OTViYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEyLjQuYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNTRjZTkzNDU3MjcxNzVmZjY2ZDE3YjY3ZmY1MWY1OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYXNlL2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1zdWJwYXJzZS1zZXQtbmVlZF9zZWdtZW50LWFmdGVyLXNpbmstcGFkLXJlY2VpdmVkLUdTLnBhdGNoIFwKKyAgICBmaWxlOi8vbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImIzNWIwNDA3MWY2OWI4YWI2OWE3ZjNhNDk3ZmYwMTMxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjMzA2YjAzZGYwMjEyZjFiODkwMzc4NGUyOWJiMzQ5MzMxOWJhMTllYmViZjEzYjBjNTZhMTc4NzAyOTIyODIiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtdjRsMi1GaXgtNEstY29sb3JpbWV0cnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyLUZpeC00Sy1jb2xvcmltZXRyeS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc4ODE4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyLUZpeC00Sy1jb2xvcmltZXRyeS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gNTQ1NjQ2Y2NjYmEyNDMyMzZlMTAzNjJmZTczMjVmODliZTU3ZGExZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KLURhdGU6IFR1ZSwgMTggSnVsIDIwMTcgMTE6Mjg6MzcgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gdjRsMjogRml4IDRLIGNvbG9yaW1ldHJ5Ci0KLVNpbmNlIDEuNiwgdGhlIHRyYW5zZmVyIGZ1bmN0aW9uIGZvciBCVDIwMjAgaGFzIGJlZW4gY2hhbmdlZCBmcm9tIEJUNzA5Ci10byBCVDIwMjBfMTIuIEl0J3MgdGhlIHNhbWUgZnVuY3Rpb24sIGJ1dCB3aXRoIG1vcmUgcHJlY2lzaW9uLiBBcyBhIHNpZGUKLWVmZmVjdCwgdGhlIFY0TDIgY29sb3Jwc2FjZSBkaWRuJ3QgbWF0Y2ggR1N0cmVhbWVyIGNvbG9yc3BhY2UuIFdoZW4KLUdTdHJlYW1lciBlbmRlZCB1cCBtYWtpbmcgYSBndWVzcywgaXQgd291bGQgbm90IG1hdGNoIGFueXRoaW5nIHN1cHBvcnRlZAotYnkgVjRMMiBhbnltb3JlLiBUaGlzIHRoaXMgYnkgdXNpbmcgQlQyMDIwXzEyIGZvciBCVDIwMjAgY29sb3JzcGFjZSBhbmQKLUJUMjAyMCB0cmFuc2ZlciBmdW5jdGlvbiBpbiByZXBsYWNlbWVudCBvZiBCVDcwOSB3aGVuZXZlciBhIDRLCi1yZXNvbHV0aW9uIGlzIGRldGVjdGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIERlY2hlc25lIDxuaWNvbGFzLmRlY2hlc25lQGxpbmFyby5vcmc+Ci0KLS0tLQotIHN5cy92NGwyL2dzdHY0bDJvYmplY3QuYyB8IDcgKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMgYi9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKLWluZGV4IDYxMjQ0NDU1Zi4uYWFlMmM1NWU3IDEwMDY0NAotLS0tIGEvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jCi0rKysgYi9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKLUBAIC0xOTYwLDcgKzE5NjAsNyBAQCBnc3RfdjRsMl9vYmplY3RfZ2V0X2NvbG9yc3BhY2UgKHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10LAotICAgICBjYXNlIFY0TDJfQ09MT1JTUEFDRV9CVDIwMjA6Ci0gICAgICAgY2luZm8tPnJhbmdlID0gR1NUX1ZJREVPX0NPTE9SX1JBTkdFXzE2XzIzNTsKLSAgICAgICBjaW5mby0+bWF0cml4ID0gR1NUX1ZJREVPX0NPTE9SX01BVFJJWF9CVDIwMjA7Ci0tICAgICAgY2luZm8tPnRyYW5zZmVyID0gR1NUX1ZJREVPX1RSQU5TRkVSX0JUNzA5OwotKyAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDIwMjBfMTI7Ci0gICAgICAgY2luZm8tPnByaW1hcmllcyA9IEdTVF9WSURFT19DT0xPUl9QUklNQVJJRVNfQlQyMDIwOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIFY0TDJfQ09MT1JTUEFDRV9TTVBURTI0ME06Ci1AQCAtMjA2Miw3ICsyMDYyLDEwIEBAIGdzdF92NGwyX29iamVjdF9nZXRfY29sb3JzcGFjZSAoc3RydWN0IHY0bDJfZm9ybWF0ICpmbXQsCi0gCi0gICBzd2l0Y2ggKHRyYW5zZmVyKSB7Ci0gICAgIGNhc2UgVjRMMl9YRkVSX0ZVTkNfNzA5OgotLSAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDcwOTsKLSsgICAgICBpZiAoZm10LT5mbXQucGl4LmhlaWdodCA+IDIxNjApCi0rICAgICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfQlQyMDIwXzEyOwotKyAgICAgIGVsc2UKLSsgICAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDcwOTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBWNEwyX1hGRVJfRlVOQ19TUkdCOgotICAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9TUkdCOwotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NTkzYzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtZ3N0cnRwbXA0Z3BheS1zZXQtZGFmYXVsdC12YWx1ZS1mb3ItTVBFRzQtd2l0aG91dC1jby5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVsLWZvci1nc3Rfc3RydWN0dXJlX2dldC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtdjRsMi1GaXgtNEstY29sb3JpbWV0cnkucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjIwMjU0MjE3ZDk4MDU0ODQ1MzJlMDhmZjFjM2FhMjk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1OTFlZTcyMDhhYjMwMjg5YTMwNjU4YTgyYjc2YmY4NzE2OWM5Mjc1NzJkOWI3OTRmM2E0MWVkNDhlMWVlOTYiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgotCi1SUFJPVklERVNfJHtQTn0tcHVsc2VhdWRpbyArPSAiJHtQTn0tcHVsc2UiCi1SUFJPVklERVNfJHtQTn0tc291cCArPSAiJHtQTn0tc291cGh0dHBzcmMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDYwOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuNC5iYgpAQCAtMCwwICsxLDIwIEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3JlcGxheWdhaW4vcmdhbmFseXNpcy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PWI2MGViZWZkNWIyZjVhOGUwY2FiNmJmZWUzOTFhNWZlIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWdvb2QvZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWdzdHJ0cG1wNGdwYXktc2V0LWRhZmF1bHQtdmFsdWUtZm9yLU1QRUc0LXdpdGhvdXQtY28ucGF0Y2ggXAorICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCisgICAgZmlsZTovL2Vuc3VyZS12YWxpZC1zZW50aW5lbC1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImJkZjQ3OTFhMmI3ODhlYzZhMTQ5YjgxZmY0MDMyMDM4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY0OWY0OWJlYzYwODkyZDQ3ZWU2NzMxYjkyMjY2OTc0YzcyMzU1NGRhMWM2NjQ5ZjIxMjk2MDk3NzE1ZWI5NTciCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgorCitSUFJPVklERVNfJHtQTn0tcHVsc2VhdWRpbyArPSAiJHtQTn0tcHVsc2UiCitSUFJPVklERVNfJHtQTn0tc291cCArPSAiJHtQTn0tc291cGh0dHBzcmMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk1NmM4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jaGVjay9lbGVtZW50cy94aW5nbXV4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NGM3NzFiOGFmMTg4NzI0ODU1Y2I5OWNhZGQzOTAwNjgiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtdWdseS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZWI2MzkwMjE5MDVhMzJjZjMwMTNjYTViYWMxYjY5NGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWNjMzk0MmJiZjNlYTg3ZGEzZTM1NDM3ZDRlMDE0ZTk5MWIxMDNkYjIyYTYxNzRmNjJhOThjODljM2Y1ZjQ2NiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODMzMzUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuNC5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3hpbmdtdXguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT00Yzc3MWI4YWYxODg3MjQ4NTVjYjk5Y2FkZDM5MDA2OCIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMmI4MzZmYjI3NDdmNmFlM2ExYTZmMzNhOWQ4Yzk1MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYzE2NWI4ZDg4OGVkMzUwYWNkOGU2YWM5ZjZmZTA2NTA4ZTZmY2MwYTNhZmM2Y2NjOWZiZWIzMGRmOWJlNTIyIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtdWdseS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKaW5kZXggYzQwZDM5OC4uNTkwNmU0YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKQEAgLTUsNiArNSw4IEBACiAKIERFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdsaWItMi4wLW5hdGl2ZSIKIAorU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9ndGstZG9jLXR3ZWFrcy5wYXRjaCIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwogCiBhY3BhdGhzID0gIi1JICR7U30vY29tbW9uL200IC1JICR7U30vbTQiCkBAIC0zNCwyMSArMzYsNiBAQAogCXJtIC1mICIke1N9L2NvbW1vbi9tNC9ndGstZG9jLm00IgogfQogCi0jIGdzdHJlYW1lciBpcyBub3QgdXNpbmcgc3lzdGVtLXdpZGUgbWFrZWZpbGVzICh3aGljaCB3ZSBwYXRjaCBpbiBndGtkb2MgcmVjaXBlLAotIyBidXQgaXRzIG93biBjdXN0b20gb25lcywgd2hpY2ggd2UgaGF2ZSB0byBwYXRjaCBoZXJlCi1wYXRjaF9ndGtfZG9jX21ha2VmaWxlcygpIHsKLSAgICAgICAgIyBQYXRjaCB0aGUgZ3RrLWRvYyBtYWtlZmlsZXMgc28gdGhhdCB0aGUgcWVtdSB3cmFwcGVyIGlzIHVzZWQgdG8gcnVuIHRyYW5zaWVudCBiaW5hcmllcwotICAgICAgICAjIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseQotICAgICAgICAjIEFsc28gc3Vic3RpdHV0ZSBhIGJvZ3VzIHBsdWdpbiBzY2FubmVyLCBhcyB0cnlpbmcgdG8gcnVuIHRoZSByZWFsIG9uZSBpcyBjYXVzaW5nIGlzc3VlcyBkdXJpbmcgYnVpbGQgb24geDg2XzY0LgotICAgICAgICBzZWQgLWkgXAotICAgICAgICAgICAtZSAic3xHVEtET0NfUlVOID0uKnxHVEtET0NfUlVOID0gXCQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXJ8IiBcCi0gICAgICAgICAgIC1lICJzfFwkKEdUS0RPQ19FWFRSQV9FTlZJUk9OTUVOVCl8XCQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKSBHU1RfUExVR0lOX1NDQU5ORVJfMV8wPVwkKHRvcF9idWlsZGRpcikvbGlicy9nc3QvaGVscGVycy9nc3QtcGx1Z2luLXNjYW5uZXItZHVtbXl8IiBcCi0gICAgICAgICAgICR7U30vY29tbW9uL2d0ay1kb2MqbWFrCi19Ci0KLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUgcGF0Y2hfZ3RrX2RvY19tYWtlZmlsZXMiCitkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIgogCiBQQUNLQUdFU19EWU5BTUlDID0gIl4ke1BOfS0uKiIKLQotIyBxZW11LW1pcHM2NDogZXJyb3Igd2hpbGUgbG9hZGluZyBzaGFyZWQgbGlicmFyaWVzOiAuLi4vcmVjaXBlLXN5c3Jvb3QvdXNyL2xpYi9saWJndGhyZWFkLTIuMC5zby4wOiBFTEYgZmlsZSBkYXRhIGVuY29kaW5nIG5vdCBsaXR0bGUtZW5kaWFuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbi5pbmMKaW5kZXggOTYxYjkzMC4uMzYxZjBiYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24uaW5jCkBAIC04LDggKzgsNiBAQAogCiBQTlJFQUwgPSAiZ3N0LXB5dGhvbiIKIAotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtQTlJFQUx9LyR7UE5SRUFMfS0ke1BWfS50YXIueHoiCi0KIFMgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0dXRpbHMzLWJhc2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZGMwNWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcHl0aG9uLmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkYTVjOWZhNDIyOTBiYzMwMDY2NjFjODY5ZTA3NmZmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNGNjMzJhZDQ2YTY1M2UxYWUyZjI3YWMyYTE2MDc4YjAwMDc1YzkxMDZiMjc4NGExYThkMWYzMWM1MDY5ZTQ3IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZWMzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi40LmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcHl0aG9uLmluYworCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMWZkMDQ2ZWE3ODE3MzZhNzk0ZjlmNTUyZDc3YzUwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGNlNmFmNjYxNWM5YTQ0MGMxOTI4YzMxMjU5YTc4MjI2NTE2ZDA2YmYxYTY1Zjg4OGM2ZDEwOTgyNmZhM2VhIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYwppbmRleCA2ODE3M2NlLi4zNzc2ZjkyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCkBAIC0zLDE4ICszLDIxIEBACiBTRUNUSU9OID0gIm11bHRpbWVkaWEiCiBMSUNFTlNFID0gIkxHUEx2MiIKIAotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgbGliY2dyb3VwIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgbGliY2hlY2siCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgogCiBQTlJFQUwgPSAiZ3N0LXJ0c3Atc2VydmVyIgogCiBTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXVzaW5nLWludHJvc3BlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2d0ay1kb2MtdHdlYWtzLnBhdGNoIgogCiBTID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCiAKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZXhhbXBsZXMgLS1kaXNhYmxlLXRlc3RzIgorCiAjIFN0YXJ0aW5nIHdpdGggMS44LjAgZ3N0LXJ0c3Atc2VydmVyIGluY2x1ZGVzIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW5zIGFzIHdlbGwKIExJQlYgPSAiMS4wIgogcmVxdWlyZSBnc3QtcGx1Z2lucy1wYWNrYWdlLmluYwpAQCAtMjQsMTcgKzI3LDUgQEAKICAgICAgICAgcm0gIiR7U30vY29tbW9uL200L3BrZy5tNCIgfHwgdHJ1ZQogfQogCi0jIGdzdHJlYW1lciBpcyBub3QgdXNpbmcgc3lzdGVtLXdpZGUgbWFrZWZpbGVzICh3aGljaCB3ZSBwYXRjaCBpbiBndGtkb2MgcmVjaXBlLAotIyBidXQgaXRzIG93biBjdXN0b20gb25lcywgd2hpY2ggd2UgaGF2ZSB0byBwYXRjaCBoZXJlCi1wYXRjaF9ndGtfZG9jX21ha2VmaWxlcygpIHsKLSAgICAgICAgIyBQYXRjaCB0aGUgZ3RrLWRvYyBtYWtlZmlsZXMgc28gdGhhdCB0aGUgcWVtdSB3cmFwcGVyIGlzIHVzZWQgdG8gcnVuIHRyYW5zaWVudCBiaW5hcmllcwotICAgICAgICAjIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseQotICAgICAgICBzZWQgLWkgXAotICAgICAgICAgICAtZSAic3xHVEtET0NfUlVOID0uKnxHVEtET0NfUlVOID0gXCQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXJ8IiBcCi0gICAgICAgICAgICR7U30vY29tbW9uL2d0ay1kb2MqbWFrCi19Citkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIgogCi1kb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIHBhdGNoX2d0a19kb2NfbWFrZWZpbGVzIgotCi0jIE5lZWRzIHRvIGJlIGRpc2FibGUgZHVlIHRvIGEgZGVwZW5kZW5jeSBvbiBnc3RyZWFtZXItcGx1Z2lucyBpbnRyb3NwZWN0aW9uIGZpbGVzCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDI2Y2NhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMjI3NTdjYWIxODNmNWI5NzAwODZlOTEwMWM2MGE5OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOGJhOTI2NGU4YWU2ZTQ0MDI5MzMyOGU3NTllNDA0NTZmMTYxYWE2NjA3N2IzMTQzZGQwNzU4MTEzNjE5MGIzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTY4ZGNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi40LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZDcwYTk3MzVmNThkYTIxZDBmNWNlZGY0OGNjYWRkMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NjYwMTEyZWJkNTk4MzhmMTA1NDc5NmIzODEwOWRjYmUzMmYwYTA0MGUzYTI1MmE2OGE4MTA1NWFlYWE1NmE5IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJkOWY4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXZhYXBpLmluYwotU1JDX1VSSVttZDVzdW1dID0gImJlYTAxNWYzMzY5NmExNWFkOTU3NWZiNzFhZjg2MmVkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzYzcxNGUwNDc0YjNjN2FlNmZmODg4NGFlYmY4NTAzYTFiYzNkZWQzMzVmYTJkMmIyYWMzMTc4ODQ2NjE2M2EiCi0KLURFUEVORFMgKz0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGYyMzAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi40LmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtdmFhcGkuaW5jCitTUkNfVVJJW21kNXN1bV0gPSAiMjE0OTk4MmNkYjM0ODEzOWJjYTk0NmJiNjM3NjZmNGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWMyZDc3MjQyZTFmMzBjNGQxMzk0NjM2Y2FlOWY2ODc3MjI4YTAxNzk2MGZjYTk2ODgxZTAwODBkOGI2ZTljOSIKKworREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jCmluZGV4IDMyOTE5MzQuLmMyZGYxZjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMKQEAgLTE2LDYgKzE2LDggQEAKIAogU1JDX1VSSV9hcHBlbmQgPSAiIFwKICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyAgICBmaWxlOi8vZ3RrLWRvYy10d2Vha3MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2ggXAogIgogCiBQQUNLQUdFQ09ORklHID8/PSAiIgpAQCAtNTIsMTkgKzU0LDcgQEAKICAgICAgICAgcm0gLWYgIiR7U30vY29tbW9uL200L2d0ay1kb2MubTQiCiB9CiAKLSMgZ3N0cmVhbWVyIGlzIG5vdCB1c2luZyBzeXN0ZW0td2lkZSBtYWtlZmlsZXMgKHdoaWNoIHdlIHBhdGNoIGluIGd0a2RvYyByZWNpcGUsCi0jIGJ1dCBpdHMgb3duIGN1c3RvbSBvbmVzLCB3aGljaCB3ZSBoYXZlIHRvIHBhdGNoIGhlcmUKLXBhdGNoX2d0a19kb2NfbWFrZWZpbGVzKCkgewotICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCi0gICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5Ci0gICAgICAgICMgQWxzbyBzdWJzdGl0dXRlIGEgYm9ndXMgcGx1Z2luIHNjYW5uZXIsIGFzIHRyeWluZyB0byBydW4gdGhlIHJlYWwgb25lIGlzIGNhdXNpbmcgaXNzdWVzIGR1cmluZyBidWlsZCBvbiB4ODZfNjQuCi0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKLSAgICAgICAgICAgLWUgInN8XCQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKXxcJChHVEtET0NfRVhUUkFfRU5WSVJPTk1FTlQpIEdTVF9QTFVHSU5fU0NBTk5FUl8xXzA9XCQodG9wX2J1aWxkZGlyKS9saWJzL2dzdC9oZWxwZXJzL2dzdC1wbHVnaW4tc2Nhbm5lci1kdW1teXwiIFwKLSAgICAgICAgICAgJHtTfS9jb21tb24vZ3RrLWRvYyptYWsKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSBwYXRjaF9ndGtfZG9jX21ha2VmaWxlcyIKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImRlbGV0ZV9wa2dfbTRfZmlsZSIKIAogZG9fY29tcGlsZV9wcmVwZW5kKCkgewogICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9nc3QvLmxpYnM6JHtCfS9saWJzL2dzdC9iYXNlLy5saWJzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1jb25maWd1cmUtQWRkLXN3aXRjaGVzLWZvci1lbmFibGluZy1kaXNhYmxpbmctbGliZHctLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1jb25maWd1cmUtQWRkLXN3aXRjaGVzLWZvci1lbmFibGluZy1kaXNhYmxpbmctbGliZHctLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTMyZmQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDEtY29uZmlndXJlLUFkZC1zd2l0Y2hlcy1mb3ItZW5hYmxpbmctZGlzYWJsaW5nLWxpYmR3LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gYTBjYjQxYmE3MjkxM2VkYTA2MDQ5ZDI2NmVjNDNlYThmNTJiNWJlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KLURhdGU6IEZyaSwgMTEgQXVnIDIwMTcgMjE6MjE6MzYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBBZGQgc3dpdGNoZXMgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBsaWJkdyBhbmQKLSBsaWJ1bndpbmQKLQotW09yaWdpbmFsIHBhdGNoIG1vZGlmaWVkIHRvIGJlIGFwcGxpY2FibGUgdG8gMS4xMi4yXQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODE5M10KLQotU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYjZiMjkyMy4uMzJkZDgyNyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODIxLDE1ICs4MjEsNDEgQEAgZmkKLSBBTV9DT05ESVRJT05BTChIQVZFX0dUSywgdGVzdCAieCRIQVZFX0dUSyIgPSAieHllcyIpCi0gCi0gZG5sIGxpYnVud2luZCBpcyBvcHRpb25hbGx5IHVzZWQgYnkgdGhlIGxlYWtzIHRyYWNlcgotLVBLR19DSEVDS19NT0RVTEVTKFVOV0lORCwgbGlidW53aW5kLCBIQVZFX1VOV0lORD15ZXMsIEhBVkVfVU5XSU5EPW5vKQotLWlmIHRlc3QgIngkSEFWRV9VTldJTkQiID0gInh5ZXMiOyB0aGVuCi0tICBBQ19ERUZJTkUoSEFWRV9VTldJTkQsIDEsIFtsaWJ1bndpbmQgYXZhaWxhYmxlXSkKLStBQ19BUkdfV0lUSChbdW53aW5kXSxbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC11bndpbmQ9eWVzfG5vfGF1dG9dLFt1c2UgbGlidW53aW5kXSldLAotKyAgICAgICAgICAgIFtdLCBbd2l0aF91bndpbmQ9YXV0b10pCi0raWYgWyB0ZXN0ICJ4JHt3aXRoX3Vud2luZH0iICE9ICJ4bm8iIF07IHRoZW4KLSsgIFBLR19DSEVDS19NT0RVTEVTKFVOV0lORCwgW2xpYnVud2luZF0sCi0rICAgICAgWwotKyAgICAgICAgSEFWRV9VTldJTkQ9eWVzCi0rICAgICAgICBBQ19ERUZJTkUoSEFWRV9VTldJTkQsIDEsIFtsaWJ1bndpbmQgYXZhaWxhYmxlXSkKLSsgICAgICBdLAotKyAgICAgIFsKLSsgICAgICAgIEhBVkVfVU5XSU5EPW5vCi0rICAgICAgICBpZiBbIHRlc3QgIngke3dpdGhfdW53aW5kfSIgPSAieHllcyIgXTsgdGhlbgotKyAgICAgICAgICBBQ19NU0dfRVJST1IoW2NvdWxkIG5vdCBmaW5kIGxpYnVud2luZF0pCi0rICAgICAgICBmaQotKyAgICAgIF0pCi0rZWxzZQotKyAgSEFWRV9VTldJTkQ9bm8KLSBmaQotIAotIGRubCBsaWJkdyBpcyBvcHRpb25hbGx5IHVzZWQgdG8gYWRkIHNvdXJjZSBsaW5lcyBhbmQgbnVtYmVycyB0byBiYWNrdHJhY2VzCi0tUEtHX0NIRUNLX01PRFVMRVMoRFcsIGxpYmR3LCBIQVZFX0RXPXllcywgSEFWRV9EVz1ubykKLS1pZiB0ZXN0ICJ4JEhBVkVfRFciID0gInh5ZXMiOyB0aGVuCi0tICBBQ19ERUZJTkUoSEFWRV9EVywgMSwgW2xpYmR3IGF2YWlsYWJsZV0pCi0rQUNfQVJHX1dJVEgoW2R3XSxbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kdz15ZXN8bm98YXV0b10sW3VzZSBsaWJkd10pXSwKLSsgICAgICAgICAgICBbXSwgW3dpdGhfZHc9YXV0b10pCi0raWYgWyB0ZXN0ICJ4JHt3aXRoX2R3fSIgIT0gInhubyIgXTsgdGhlbgotKyAgUEtHX0NIRUNLX01PRFVMRVMoRFcsIFtsaWJkd10sCi0rICAgICAgWwotKyAgICAgICAgSEFWRV9EVz15ZXMKLSsgICAgICAgIEFDX0RFRklORShIQVZFX0RXLCAxLCBbbGliZHcgYXZhaWxhYmxlXSkKLSsgICAgICBdLAotKyAgICAgIFsKLSsgICAgICAgIEhBVkVfRFc9bm8KLSsgICAgICAgIGlmIFsgdGVzdCAieCR7d2l0aF9kd30iID0gInh5ZXMiIF07IHRoZW4KLSsgICAgICAgICAgQUNfTVNHX0VSUk9SKFtjb3VsZCBub3QgZmluZCBsaWJkd10pCi0rICAgICAgICBmaQotKyAgICAgIF0pCi0rZWxzZQotKyAgSEFWRV9EVz1ubwotIGZpCi0gCi0gZG5sIENoZWNrIGZvciBiYWNrdHJhY2UoKSBmcm9tIGxpYmMKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDQxYTU5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZTA1OTEzODQ4MTIwNWVlMmM2ZmMxYzA3OWMwMTZkMGQiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtc3dpdGNoZXMtZm9yLWVuYWJsaW5nLWRpc2FibGluZy1saWJkdy0ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjQ3NDg4NjA2MjE2MDdmZmQ5NjI0NGZiNzljODZjMjM4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmZGUzZjM5YTJlYTk4NGY5ZTA3Y2UwOTI1MDI4NWNlOTFmNmUzNjE5ZDE4Njg4OWY3NWI1MTU0ZWNmOTk0YmEiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3RyZWFtZXItJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFiMjM5NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuNC5iYgpAQCAtMCwwICsxLDE0IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L2dzdC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PWUwNTkxMzg0ODEyMDVlZTJjNmZjMWMwNzljMDE2ZDBkIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdHJlYW1lci9nc3RyZWFtZXItJHtQVn0udGFyLnh6IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZDI2OGYyZTg5MWNjZTFhYzA4MzJmMWNjNDY3ZDRlYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YTg3MDRhYTRjMmVlYjA0ZGExOTJjNGE5OTQyZjk0Zjg2MGFjMWE1ODVkZTkwZDlmOTE0YmFjMjZhOTcwNjc0IgorCitTID0gIiR7V09SS0RJUn0vZ3N0cmVhbWVyLSR7UFZ9IgorCitDVkVfUFJPRFVDVCA9ICJnc3RyZWFtZXIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lL2xhbWUtMy45OS41X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi54LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZS9sYW1lLTMuOTkuNV9maXhfZm9yX2F1dG9tYWtlLTEuMTIueC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFiYWVmMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lL2xhbWUtMy45OS41X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi54LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUZpeCB0aGlzIGtpbmQgb2YgZXJyb3JzIHdpdGggYXV0b21ha2UgMS4xMi54OgotfCBkb2MvbWFuL01ha2VmaWxlLmFtOjM6IGVycm9yOiBhdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbiBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQKLXwgYXV0b3JlY29uZjogYXV0b21ha2UgZmFpbGVkIHdpdGggZXhpdCBzdGF0dXM6IDEKLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLTIwMTIvMDcvMTMKLQotSW5kZXg6IGxhbWUtMy45OS41L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxhbWUtMy45OS41Lm9yaWcvY29uZmlndXJlLmluCi0rKysgbGFtZS0zLjk5LjUvY29uZmlndXJlLmluCi1AQCAtNzcsOSArNzcsNiBAQCBpZiB0ZXN0ICIke0dDQ30iID0gInllcyI7IHRoZW4KLSAJQUNfTVNHX1JFU1VMVCgke0dDQ192ZXJzaW9ufSkKLSBmaQotIAotLWRubCBtb3JlIGF1dG9tYWtlIHN0dWZmCi0tQU1fQ19QUk9UT1RZUEVTCi0tCi0gQUNfQ0hFQ0tfSEVBREVSKGRtYWxsb2MuaCkKLSBpZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9kbWFsbG9jX2h9IiA9ICJ5ZXMiOyB0aGVuCi0gCUFNX1dJVEhfRE1BTExPQwotSW5kZXg6IGxhbWUtMy45OS41L2RvYy9odG1sL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGFtZS0zLjk5LjUub3JpZy9kb2MvaHRtbC9NYWtlZmlsZS5hbQotKysrIGxhbWUtMy45OS41L2RvYy9odG1sL01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDYgQEAKLSAjIyAkSWQ6IE1ha2VmaWxlLmFtLHYgMS43IDIwMTAvMDkvMzAgMjA6NTg6NDAgamF6MDAxIEV4cCAkCi0gCi0tQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24gYW5zaTJrbnIKLStBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotIAotIGRvY2RpciA9ICQoZGF0YWRpcikvZG9jCi0gcGtnZG9jZGlyID0gJChkb2NkaXIpLyQoUEFDS0FHRSkKLUluZGV4OiBsYW1lLTMuOTkuNS9saWJtcDNsYW1lL2kzODYvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsYW1lLTMuOTkuNS5vcmlnL2xpYm1wM2xhbWUvaTM4Ni9NYWtlZmlsZS5hbQotKysrIGxhbWUtMy45OS41L2xpYm1wM2xhbWUvaTM4Ni9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw2IEBACi0gIyMgJElkOiBNYWtlZmlsZS5hbSx2IDEuMjYgMjAxMS8wNC8wNCAwOTo0MjozNCBhbGVpZGluZ2VyIEV4cCAkCi0gCi0tQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24gJCh0b3Bfc3JjZGlyKS9hbnNpMmtucgotK0FVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCi0gCi0gREVGUyA9IEBERUZTQCBAQ09ORklHX0RFRlNACi0gCi1JbmRleDogbGFtZS0zLjk5LjUvZG9jL21hbi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxhbWUtMy45OS41Lm9yaWcvZG9jL21hbi9NYWtlZmlsZS5hbQotKysrIGxhbWUtMy45OS41L2RvYy9tYW4vTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAotICMjICRJZDogTWFrZWZpbGUuYW0sdiAxLjEgMjAwMC8xMC8yMiAxMTozOTo0NCBhbGVpZGluZ2VyIEV4cCAkCi0gCi0tQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24gYW5zaTJrbnIKLStBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotIAotIG1hbl9NQU5TID0gbGFtZS4xCi0gRVhUUkFfRElTVCA9ICR7bWFuX01BTlN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuMTAwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjEwMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjZhYzdlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjEwMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkhpZ2ggcXVhbGl0eSBNUDMgYXVkaW8gZW5jb2RlciIKK0hPTUVQQUdFID0gImh0dHA6Ly9sYW1lLnNvdXJjZWZvcmdlLm5ldC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MjkwJmF0aWQ9MTAwMjkwIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJMR1BMdjIrIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitERVBFTkRTID0gIm5jdXJzZXMgZ2V0dGV4dC1uYXRpdmUiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM0NmJkYTAwZmZiYjBiYTFkYWMyMmY4ZDA4N2Y1NGQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvbGFtZS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWEyMjU4MTgyYzU5M2MzOThkMTVhNDgyNjIxMzBhOTJiIFwKKyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbGFtZS9sYW1lLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9uby1ndGsxLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODNlMjYwYWNiZTQzODliNTRmZTA4ZTBiZGJmN2NkZGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRmZTM2Y2FiODczNzk0MDM4YWUyYzEyMTA1NTdhZDM0ODU3YTRiNmJkYzUxNTc4NWQxZGE5ZTE3NWIxZGExZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VTICs9ICJsaWJtcDNsYW1lIGxpYm1wM2xhbWUtZGV2IgorRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L2xhbWUiCitGSUxFU19saWJtcDNsYW1lID0gIiR7bGliZGlyfS9saWJtcDNsYW1lLnNvLioiCitGSUxFU19saWJtcDNsYW1lLWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS8qIgorRklMRVNfJHtQTn0tZGV2ID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9sYW1lL2xhbWVfMy45OS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjk5LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0Nzc2MTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjk5LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkhpZ2ggcXVhbGl0eSBNUDMgYXVkaW8gZW5jb2RlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9sYW1lLnNvdXJjZWZvcmdlLm5ldC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MjkwJmF0aWQ9MTAwMjkwIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotCi1ERVBFTkRTID0gIm5jdXJzZXMgZ2V0dGV4dC1uYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM0NmJkYTAwZmZiYjBiYTFkYWMyMmY4ZDA4N2Y1NGQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvbGFtZS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWEyMjU4MTgyYzU5M2MzOThkMTVhNDgyNjIxMzBhOTJiIFwKLSIKLVBSID0gInIxIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9sYW1lL2xhbWUtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25vLWd0azEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGFtZS0zLjk5LjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLngucGF0Y2ggIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODQ4MzViMzEzZDRhOGI2OGY1MzQ5ODE2ZDMzZTA3Y2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjQzNDZiNDE1OGU0YWYzYmQ5ZjJlMTk0YmIyM2ViNDczYzc1ZmI3Mzc3MDExNTIzMzUzMTk2YjE5YjlhMjNmZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VTICs9ICJsaWJtcDNsYW1lIGxpYm1wM2xhbWUtZGV2IgotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L2xhbWUiCi1GSUxFU19saWJtcDNsYW1lID0gIiR7bGliZGlyfS9saWJtcDNsYW1lLnNvLioiCi1GSUxFU19saWJtcDNsYW1lLWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS8qIgotRklMRVNfJHtQTn0tZGV2ID0gIiIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX3g4NiA9ICIgYWNfY3ZfaGVhZGVyX2VtbWludHJpbl9oPW5vIGFjX2N2X2hlYWRlcl94bW1pbnRyaW5faD1ubyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvZ2cvbGlib2dnXzEuMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9nZy9saWJvZ2dfMS4zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNDJlMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9nZy9saWJvZ2dfMS4zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIk9nZyBiaXRzdHJlYW0gYW5kIGZyYW1pbmcgbGliYXJ5IgotREVTQ1JJUFRJT04gPSAibGlib2dnIGlzIHRoZSBiaXRzdHJlYW0gYW5kIGZyYW1pbmcgbGlicmFyeSBcCi1mb3IgdGhlIE9nZyBwcm9qZWN0LiBJdCBwcm92aWRlcyBmdW5jdGlvbnMgd2hpY2ggYXJlIFwKLW5lY2Vzc2FyeSB0byBjb2RlYyBsaWJyYXJpZXMgbGlrZSBsaWJ2b3JiaXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3hpcGgub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly90cmFjLnhpcGgub3JnL25ld3RpY2tldCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGIxYjdhNjY4YjJhNmY0N2IyYWY4OGZiMDA4YWQ1NTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9vZ2cvb2dnLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xMTttZDU9ZWRhODEyODU2ZjEzYTNiMTMyNmViOGYwMjBjYzNiMGIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy9vZ2cvJHtCUH0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWMzYTM0MzA5ZDhiOTg2NDA4MjdlNWQwOTkxYTQwMTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Y2ODdjY2RkNWFjOGI1MmQ3NjMyOGZiYmZlYmM3MGM0NTlhNDBlYTg5MWRiZjNkY2NiNzRhMjEwODI2ZTc5YiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvZ2cvbGlib2dnXzEuMy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkODhmMWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuMy5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIk9nZyBiaXRzdHJlYW0gYW5kIGZyYW1pbmcgbGliYXJ5IgorREVTQ1JJUFRJT04gPSAibGlib2dnIGlzIHRoZSBiaXRzdHJlYW0gYW5kIGZyYW1pbmcgbGlicmFyeSBcCitmb3IgdGhlIE9nZyBwcm9qZWN0LiBJdCBwcm92aWRlcyBmdW5jdGlvbnMgd2hpY2ggYXJlIFwKK25lY2Vzc2FyeSB0byBjb2RlYyBsaWJyYXJpZXMgbGlrZSBsaWJ2b3JiaXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3hpcGgub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly90cmFjLnhpcGgub3JnL25ld3RpY2tldCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGIxYjdhNjY4YjJhNmY0N2IyYWY4OGZiMDA4YWQ1NTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9vZ2cvb2dnLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xMTttZDU9ZWRhODEyODU2ZjEzYTNiMTMyNmViOGYwMjBjYzNiMGIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy9vZ2cvJHtCUH0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiODdlZDc0MjA0N2YwNjUwNDZlYjZjMzY3NDVkODcxYjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGYzZmM2MTc4YTUzM2QzOTIwNjRmMTQ3NzZiMjNjMzk3ZWQ0YjlmNDhmNWRlMjk3YWJhNzNiNjQzZjk1NWMwOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NmVhMTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJQTkcgaW1hZ2UgZm9ybWF0IGRlY29kaW5nIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnBuZy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMaWJwbmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZjIxZTRlMWY3OTU4MTBiNWVhNDkxYjMzM2JjNmVhMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmcuaDtlbmRsaW5lPTE0NDttZDU9YWYzMDBjNDE5YTQ1YzUzYThkMmRhYTBiN2QxNjdhNjYiCi1ERVBFTkRTID0gInpsaWIiCi0KLUxJQlYgPSAiMTYiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjFiMzRlYWI0NDAyNjNlMzJjZmEzOWQxOTQxM2ZhZDU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzMmE2MDJkZTA0OTE2YjJiNWNlNmY5MDE4MjljYWY0MTk1MTllNmExNmNjOWNkN2MxYzkxMTg3ZDNlZThiNDEiCi0KLU1JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9LyR7UFZ9LyAke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS9vbGRlci1yZWxlYXNlcy8ke1BWfS8iCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGlicG5nLWNvbmZpZyAke2JpbmRpcn0vbGlicG5nMTYtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyBzeW1ib2xzCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibmVvbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vZmYiICxkKX0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS10b29scyIKLQotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9L3BuZy1maXgtaXR4dCAke2JpbmRpcn0vcG5nZml4ICR7YmluZGlyfS9wbmdjcCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MmQwMzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzQuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJQTkcgaW1hZ2UgZm9ybWF0IGRlY29kaW5nIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnBuZy5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMaWJwbmciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZGI3MTdhMDVhMjBlMzZmMmZhNjczMjY1YmQzMTU2OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmcuaDtlbmRsaW5lPTE0NDttZDU9M2FjOWZkMjUwYTg3ODZhZTU4MWUzNDI1NGJmNzk0MjkiCitERVBFTkRTID0gInpsaWIiCisKK0xJQlYgPSAiMTYiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImMwNWI2Y2E3MTkwYTVlMzg3Yjc4NjU3ZGJlNTUzNmIyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmMWU5NjBkOTJjZTNiM2FiZDAzZDA2ZGZlYzk2MzdkZmJkMjJmZWJmMTA3YTUzNmI0NGY3YTQ3YzYwNjU5ZjYiCisKK01JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9LyR7UFZ9LyAke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS9vbGRlci1yZWxlYXNlcy8ke1BWfS8iCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vbGlicG5nLm9yZy9wdWIvcG5nL2xpYnBuZy5odG1sIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYnBuZy1jb25maWcgJHtiaW5kaXJ9L2xpYnBuZzE2LWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZworCisjIFdvcmsgYXJvdW5kIG1pc3Npbmcgc3ltYm9scworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm5lb24iLCAiLS1lbmFibGUtYXJtLW5lb249b24iLCAiLS1lbmFibGUtYXJtLW5lb249b2ZmIiAsZCl9IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCisKK0ZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS9wbmctZml4LWl0eHQgJHtiaW5kaXJ9L3BuZ2ZpeCAke2JpbmRpcn0vcG5nY3AiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEwNjg4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZGI5NjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1Gcm9tIDMzM2JhNTU5OWU4N2JkNzc0NzUxNmQ3ODYzZDYxNzY0ZTRjYTJkOTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgotRGF0ZTogRnJpLCAzMCBKdW4gMjAxNyAxNzoyOTo0NCArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IGluCi0gVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFhYWFgoKSBmdW5jdGlvbnMgYXNzb2NpYXRlZCB3aXRoIExPTkc4L1NMT05HOAotIGRhdGEgdHlwZSwgcmVwbGFjZSBhc3NlcnRpb24gdGhhdCB0aGUgZmlsZSBpcyBCaWdUSUZGLCBieSBhIG5vbi1mYXRhbCBlcnJvci4KLSBGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzEyIFJlcG9ydGVkIGJ5IHRlYW0KLSBPV0wzMzcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0LzYxNzNhNTdkMzllMDRkNjhiMTM5ZjhjMWFhNDk5YTI0ZGJlNzRiYTFdCi0KLUNWRTogQ1ZFLTIwMTctMTA2ODgKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICB8ICA4ICsrKysrKysrCi0gbGlidGlmZi90aWZfZGlyd3JpdGUuYyB8IDIwICsrKysrKysrKysrKysrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCAwMjQwZjBiLi40MmVhZWI3IDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE3LTA2LTMwICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotKwkqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IGluIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRYWFhYKCkKLSsJZnVuY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBMT05HOC9TTE9ORzggZGF0YSB0eXBlLCByZXBsYWNlIGFzc2VydGlvbiB0aGF0Ci0rCXRoZSBmaWxlIGlzIEJpZ1RJRkYsIGJ5IGEgbm9uLWZhdGFsIGVycm9yLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzEyCi0rCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0rCi0gMjAxNy0wNi0yNiAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9qYmlnLmM6IGZpeCBtZW1vcnkgbGVhayBpbiBlcnJvciBjb2RlIHBhdGggb2YgSkJJR0RlY29kZSgpCi1kaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyd3JpdGUuYyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLWluZGV4IDI5NjdkYTUuLjhkNjY4NmIgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCi0rKysgYi9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCi1AQCAtMjExMSw3ICsyMTExLDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRMb25nOChUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkaXIsIHVpCi0gewotIAl1aW50NjQgbTsKLSAJYXNzZXJ0KHNpemVvZih1aW50NjQpPT04KTsKLS0JYXNzZXJ0KHRpZi0+dGlmX2ZsYWdzJlRJRkZfQklHVElGRik7Ci0rCWlmKCAhKHRpZi0+dGlmX2ZsYWdzJlRJRkZfQklHVElGRikgKSB7Ci0rCQlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwiVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZExvbmc4IiwiTE9ORzggbm90IGFsbG93ZWQgZm9yIENsYXNzaWNUSUZGIik7Ci0rCQlyZXR1cm4oMCk7Ci0rCX0KLSAJbT12YWx1ZTsKLSAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKLSAJCVRJRkZTd2FiTG9uZzgoJm0pOwotQEAgLTIxMjQsNyArMjEyNywxMCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzhBcnJheShUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkaQotIHsKLSAJYXNzZXJ0KGNvdW50PDB4MjAwMDAwMDApOwotIAlhc3NlcnQoc2l6ZW9mKHVpbnQ2NCk9PTgpOwotLQlhc3NlcnQodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKTsKLSsJaWYoICEodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKSApIHsKLSsJCVRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCJUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzgiLCJMT05HOCBub3QgYWxsb3dlZCBmb3IgQ2xhc3NpY1RJRkYiKTsKLSsJCXJldHVybigwKTsKLSsJfQotIAlpZiAodGlmLT50aWZfZmxhZ3MmVElGRl9TV0FCKQotIAkJVElGRlN3YWJBcnJheU9mTG9uZzgodmFsdWUsY291bnQpOwotIAlyZXR1cm4oVElGRldyaXRlRGlyZWN0b3J5VGFnRGF0YSh0aWYsbmRpcixkaXIsdGFnLFRJRkZfTE9ORzgsY291bnQsY291bnQqOCx2YWx1ZSkpOwotQEAgLTIxMzYsNyArMjE0MiwxMCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkU2xvbmc4KFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpciwgdQotIHsKLSAJaW50NjQgbTsKLSAJYXNzZXJ0KHNpemVvZihpbnQ2NCk9PTgpOwotLQlhc3NlcnQodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKTsKLSsJaWYoICEodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKSApIHsKLSsJCVRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCJUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzgiLCJTTE9ORzggbm90IGFsbG93ZWQgZm9yIENsYXNzaWNUSUZGIik7Ci0rCQlyZXR1cm4oMCk7Ci0rCX0KLSAJbT12YWx1ZTsKLSAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKLSAJCVRJRkZTd2FiTG9uZzgoKHVpbnQ2NCopKCZtKSk7Ci1AQCAtMjE0OSw3ICsyMTU4LDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRTbG9uZzhBcnJheShUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkCi0gewotIAlhc3NlcnQoY291bnQ8MHgyMDAwMDAwMCk7Ci0gCWFzc2VydChzaXplb2YoaW50NjQpPT04KTsKLS0JYXNzZXJ0KHRpZi0+dGlmX2ZsYWdzJlRJRkZfQklHVElGRik7Ci0rCWlmKCAhKHRpZi0+dGlmX2ZsYWdzJlRJRkZfQklHVElGRikgKSB7Ci0rCQlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwiVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZExvbmc4IiwiU0xPTkc4IG5vdCBhbGxvd2VkIGZvciBDbGFzc2ljVElGRiIpOwotKwkJcmV0dXJuKDApOwotKwl9Ci0gCWlmICh0aWYtPnRpZl9mbGFncyZUSUZGX1NXQUIpCi0gCQlUSUZGU3dhYkFycmF5T2ZMb25nOCgodWludDY0Kil2YWx1ZSxjb3VudCk7Ci0gCXJldHVybihUSUZGV3JpdGVEaXJlY3RvcnlUYWdEYXRhKHRpZixuZGlyLGRpcix0YWcsVElGRl9TTE9ORzgsY291bnQsY291bnQqOCx2YWx1ZSkpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMTMzNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTExMzM1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDhlNzYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTExMzM1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSBlOGIxNWNjZjhjOWM1OTMwMDBmODIwMmNmMzRjYzZjNGI5MzZkMDFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KLURhdGU6IFNhdCwgMTUgSnVsIDIwMTcgMTE6MTM6NDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiB0b29scy90aWZmMnBkZi5jOiBwcmV2ZW50IGhlYXAgYnVmZmVyIG92ZXJmbG93IHdyaXRlIGluCi0gIlJhdyIgbW9kZSBvbiBQbGFuYXJDb25maWc9Q29udGlnIGlucHV0IGltYWdlcy4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzE1IFJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vdmFkei9saWJ0aWZmL2NvbW1pdC82OWJmZWVjMjQ3ODk5Nzc2YjFiMzk2NjUxYWRiNDc0MzZlNWYxNTU2XQotCi1DVkU6IENWRS0yMDE3LTExMzU1Ci0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgfCA3ICsrKysrKysKLSB0b29scy90aWZmMnBkZi5jIHwgNyArKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDQyZWFlYjcuLjY5ODBkYTggMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMCBAQAotKzIwMTctMDctMTUgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogdG9vbHMvdGlmZjJwZGYuYzogcHJldmVudCBoZWFwIGJ1ZmZlciBvdmVyZmxvdyB3cml0ZSBpbiAiUmF3IgotKwltb2RlIG9uIFBsYW5hckNvbmZpZz1Db250aWcgaW5wdXQgaW1hZ2VzLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzE1Ci0rCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0rCi0gMjAxNy0wNi0zMCAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiBpbiBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkWFhYWCgpCi1kaWZmIC0tZ2l0IGEvdG9vbHMvdGlmZjJwZGYuYyBiL3Rvb2xzL3RpZmYycGRmLmMKLWluZGV4IGRiMTk2ZTAuLmNkMWUyMzUgMTAwNjQ0Ci0tLS0gYS90b29scy90aWZmMnBkZi5jCi0rKysgYi90b29scy90aWZmMnBkZi5jCi1AQCAtMTczNyw3ICsxNzM3LDEyIEBAIHZvaWQgdDJwX3JlYWRfdGlmZl9kYXRhKFQyUCogdDJwLCBUSUZGKiBpbnB1dCl7Ci0gCSAgICByZXR1cm47Ci0gCi0gCXQycC0+cGRmX3RyYW5zY29kZSA9IFQyUF9UUkFOU0NPREVfRU5DT0RFOwotLQlpZih0MnAtPnBkZl9ub3Bhc3N0aHJvdWdoPT0wKXsKLSsgICAgICAgIC8qIEl0IHNlZW1zIHRoYXQgVDJQX1RSQU5TQ09ERV9SQVcgbW9kZSBkb2Vzbid0IHN1cHBvcnQgc2VwYXJhdGUtPmNvbnRpZyAqLwotKyAgICAgICAgLyogY29udmVyc2lvbi4gQXQgbGVhc3QgdDJwX3JlYWRfdGlmZl9zaXplIGFuZCB0MnBfcmVhZF90aWZmX3NpemVfdGlsZSAqLwotKyAgICAgICAgLyogZG8gbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBudW1iZXIgb2Ygc2FtcGxlcywgYW5kIHRodXMgKi8KLSsgICAgICAgIC8qIHRoYXQgY2FuIGNhdXNlIGhlYXAgYnVmZmVyIG92ZXJmbG93cyBzdWNoIGFzIGluICovCi0rICAgICAgICAvKiBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzE1ICovCi0rCWlmKHQycC0+cGRmX25vcGFzc3Rocm91Z2g9PTAgJiYgdDJwLT50aWZmX3BsYW5hciE9UExBTkFSQ09ORklHX1NFUEFSQVRFKXsKLSAjaWZkZWYgQ0NJVFRfU1VQUE9SVAotIAkJaWYodDJwLT50aWZmX2NvbXByZXNzaW9uPT1DT01QUkVTU0lPTl9DQ0lUVEZBWDQgIAotIAkJCSl7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEzNzI2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MGZmYTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDUzMTdjZTIxNTkzNmNlNjExODQ2NTU3YmIxMDRiNDlkM2I0YzgzNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgotRGF0ZTogV2VkLCAyMyBBdWcgMjAxNyAxMzoyMTo0MSArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IHJlcGxhY2UgYXNzZXJ0aW9uIHJlbGF0ZWQgdG8gbm90Ci0gZmluZGluZyB0aGUgU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcgUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0L2Y5MWNhODNhMjFhNmE1ODMwNTBlNWE1NzU1Y2UxNDQxYjJiZjFkN2VdCi0KLUNWRTogQ1ZFLTIwMTctMTM3MjYKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICB8IDcgKysrKysrKwotIGxpYnRpZmYvdGlmX2RpcndyaXRlLmMgfCA3ICsrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggNjk4MGRhOC4uM2UyOTlkOSAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNy0wOC0yMyAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiByZWxhdGVkIHRvIG5vdCBmaW5kaW5nIHRoZQotKwlTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2suCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcKLSsJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLSsKLSAyMDE3LTA3LTE1ICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotIAkqIHRvb2xzL3RpZmYycGRmLmM6IHByZXZlbnQgaGVhcCBidWZmZXIgb3ZlcmZsb3cgd3JpdGUgaW4gIlJhdyIKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotaW5kZXggOGQ2Njg2Yi4uMTQwOTBhZSAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLUBAIC04MjEsNyArODIxLDEyIEBAIFRJRkZXcml0ZURpcmVjdG9yeVNlYyhUSUZGKiB0aWYsIGludCBpc2ltYWdlLCBpbnQgaW1hZ2Vkb25lLCB1aW50NjQqIHBkaXJvZmYpCi0gCQkJVElGRkRpckVudHJ5KiBuYjsKLSAJCQlmb3IgKG5hPTAsIG5iPWRpcjsgOyBuYSsrLCBuYisrKQotIAkJCXsKLS0JCQkJYXNzZXJ0KG5hPG5kaXIpOwotKwkJCQlpZiggbmEgPT0gbmRpciApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsbW9kdWxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGZpbmQgU3ViSUZEIHRhZyIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFkOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotIAkJCQlpZiAobmItPnRkaXJfdGFnPT1USUZGVEFHX1NVQklGRCkKLSAJCQkJCWJyZWFrOwotIAkJCX0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIyOGMyZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gYTVlODI0NWNjNjc2NDZmN2I0NDhiNGNhMjkyNThlYWFjNDE4MTAyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+Ci1EYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDEzOjMzOjQyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZGlyd3JpdGUuYzogcmVwbGFjZSBhc3NlcnRpb24gdG8gdGFnIHZhbHVlIG5vdAotIGZpdHRpbmcgb24gdWludDMyIHdoZW4gc2VsZWN0aW5nIHRoZSB2YWx1ZSBvZiBTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2sgKGluCi0gVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKCkpLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjggUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLQotU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrIChpbiBUSUZGV3JpdGVEaXJlY3RvcnlTZWMoKSkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0L2I2YWYxMzdiZjllZjg1MmYxYTQ4YTUwYTVhZmI4OGY5ZTlkYTAxY2NdCi0KLUNWRTogQ1ZFLTIwMTctMTM3MjcKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICB8IDEwICsrKysrKysrKy0KLSBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIHwgIDkgKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCAzZTI5OWQ5Li44ZjVlZmU5IDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDcgKzEsMTUgQEAKLSAyMDE3LTA4LTIzICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotKwkqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IHJlcGxhY2UgYXNzZXJ0aW9uIHRvIHRhZyB2YWx1ZSBub3QgZml0dGluZwotKwlvbiB1aW50MzIgd2hlbiBzZWxlY3RpbmcgdGhlIHZhbHVlIG9mIFN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjawotKwkoaW4gVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKCkpLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzI4Ci0rCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0rCi0rMjAxNy0wOC0yMyAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiByZWxhdGVkIHRvIG5vdCBmaW5kaW5nIHRoZQotLQlTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2suCi0rCVN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjayAoaW4gVElGRldyaXRlRGlyZWN0b3J5U2VjKCkpCi0gCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcKLSAJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLSAKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotaW5kZXggMTQwOTBhZS4uZjBhNGJhYSAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLUBAIC0xOTQ5LDcgKzE5NDksMTQgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpcikKLSAJCWZvciAocD0wOyBwIDwgdGlmLT50aWZfZGlyLnRkX25zdWJpZmQ7IHArKykKLSAJCXsKLSAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQocGEgIT0gMCk7Ci0tCQkJYXNzZXJ0KCpwYSA8PSAweEZGRkZGRkZGVUwpOwotKwotKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvdWxkIGhhcHBlbiBpZiBhbiBjbGFzc2ljVElGRiBoYXMgYSBTdWJJRkQgb2YgdHlwZSBMT05HOCAod2hpY2ggaXMgaWxsZWdhbCkgKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiggKnBhID4gMHhGRkZGRkZGRlVMKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsbW9kdWxlLCJJbGxlZ2FsIHZhbHVlIGZvciBTdWJJRkQgdGFnIik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9USUZGZnJlZShvKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKDApOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAJCQkqcGIrKz0odWludDMyKSgqcGErKyk7Ci0gCQl9Ci0gCQluPVRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRJZmRBcnJheSh0aWYsbmRpcixkaXIsVElGRlRBR19TVUJJRkQsdGlmLT50aWZfZGlyLnRkX25zdWJpZmQsbyk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTE4MDEzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTgwMTMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc4ZTBkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTE4MDEzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMjkzYzhiMDI5OGU5MWQyMGJhNTEyOTFlMjM1MWFiN2QxMTA2NzFkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+CitEYXRlOiBTdW4sIDMxIERlYyAyMDE3IDE1OjA5OjQxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYnRpZmYvdGlmX3ByaW50LmM6IFRJRkZQcmludERpcmVjdG9yeSgpOiBmaXggbnVsbCBwb2ludGVyCisgZGVyZWZlcmVuY2Ugb24gY29ycnVwdGVkIGZpbGUuIEZpeGVzCisgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc3MAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRsYWIuY29tL2xpYnRpZmYvbGlidGlmZi9jb21taXQvYzZmNDFkZjdiNTgxNDAyZGZiYTNjMTlhMWUzZGY0NDU0YzU1MWEwMV0KKworQ1ZFOiBDVkUtMjAxNy0xODAxMworCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJ0aWZmL3RpZl9wcmludC5jIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9wcmludC5jIGIvbGlidGlmZi90aWZfcHJpbnQuYworaW5kZXggMjRkNGI5OC4uZjQ5NGNmYiAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX3ByaW50LmMKKysrKyBiL2xpYnRpZmYvdGlmX3ByaW50LmMKK0BAIC02NjcsMTMgKzY2NywxMyBAQCBUSUZGUHJpbnREaXJlY3RvcnkoVElGRiogdGlmLCBGSUxFKiBmZCwgbG9uZyBmbGFncykKKyAjaWYgZGVmaW5lZChfX1dJTjMyX18pICYmIChkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKSkKKyAJCQlmcHJpbnRmKGZkLCAiICAgICUzbHU6IFslOEk2NHUsICU4STY0dV1cbiIsCisgCQkJICAgICh1bnNpZ25lZCBsb25nKSBzLAorLQkJCSAgICAodW5zaWduZWQgX19pbnQ2NCkgdGQtPnRkX3N0cmlwb2Zmc2V0W3NdLAorLQkJCSAgICAodW5zaWduZWQgX19pbnQ2NCkgdGQtPnRkX3N0cmlwYnl0ZWNvdW50W3NdKTsKKysJCQkgICAgdGQtPnRkX3N0cmlwb2Zmc2V0ID8gKHVuc2lnbmVkIF9faW50NjQpIHRkLT50ZF9zdHJpcG9mZnNldFtzXSA6IDAsCisrCQkJICAgIHRkLT50ZF9zdHJpcGJ5dGVjb3VudCA/ICh1bnNpZ25lZCBfX2ludDY0KSB0ZC0+dGRfc3RyaXBieXRlY291bnRbc10gOiAwKTsKKyAjZWxzZQorIAkJCWZwcmludGYoZmQsICIgICAgJTNsdTogWyU4bGx1LCAlOGxsdV1cbiIsCisgCQkJICAgICh1bnNpZ25lZCBsb25nKSBzLAorLQkJCSAgICAodW5zaWduZWQgbG9uZyBsb25nKSB0ZC0+dGRfc3RyaXBvZmZzZXRbc10sCistCQkJICAgICh1bnNpZ25lZCBsb25nIGxvbmcpIHRkLT50ZF9zdHJpcGJ5dGVjb3VudFtzXSk7CisrCQkJICAgIHRkLT50ZF9zdHJpcG9mZnNldCA/ICh1bnNpZ25lZCBsb25nIGxvbmcpIHRkLT50ZF9zdHJpcG9mZnNldFtzXSA6IDAsCisrCQkJICAgIHRkLT50ZF9zdHJpcGJ5dGVjb3VudCA/ICh1bnNpZ25lZCBsb25nIGxvbmcpIHRkLT50ZF9zdHJpcGJ5dGVjb3VudFtzXSA6IDApOworICNlbmRpZgorIAl9CisgfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05MTQ3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTE0Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM5MjI4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05MTQ3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA2ICswLDAgQEAKLUZyb20gMGFjZjAxZmVhNzE0YWY1NzNiODE0ZTEwY2YxMDVjMzM1OWEyMzZjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFRodSwgMSBKdW4gMjAxNyAxMjo0NDowNCArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2RpcmluZm8uYywgdGlmX2RpcnJlYWQuYzogYWRkIF9USUZGQ2hlY2tGaWVsZElzVmFsaWRGb3JDb2RlYygpLAotYW5kIHVzZSBpdCBpbiBUSUZGUmVhZERpcmVjdG9yeSgpIHNvIGFzIHRvIGlnbm9yZSBmaWVsZHMgd2hvc2UgdGFnIGlzIGEKLWNvZGVjLXNwZWNpZmllZCB0YWcgYnV0IHRoaXMgY29kZWMgaXMgbm90IGVuYWJsZWQuIFRoaXMgYXZvaWRzIFRJRkZHZXRGaWVsZCgpCi10byBiZWhhdmUgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGNvZGVjIGlzIGVuYWJsZWQgb3Igbm90LCBhbmQKLXRodXMgY2FuIGF2b2lkIHN0YWNrIGJhc2VkIGJ1ZmZlciBvdmVyZmxvd3MgaW4gYSBudW1iZXIgb2YgVElGRiB1dGlsaXRpZXMKLXN1Y2ggYXMgdGlmZnNwbGl0LCB0aWZmY21wLCB0aHVtYm5haWwsIGV0Yy4KLVBhdGNoIGRlcml2ZWQgZnJvbSAwMDYzLUhhbmRsZS1wcm9wZXJseS1DT0RFQy1zcGVjaWZpYy10YWdzLnBhdGNoCi0oaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MCkgYnkgUmFwaGHDq2wgSGVydHpvZy4KLUZpeGVzOgotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MAotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MwotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYyNSAoQ1ZFLTIwMTYtMTAwOTUpCi1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTY0IChDVkUtMjAxNS03NTU0KQotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2MSAoQ1ZFLTIwMTYtNTMxOCkKLWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0OTkgKENWRS0yMDE0LTgxMjgpCi1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDQxCi1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vdmFkei9saWJ0aWZmL2NvbW1pdC80ZDRmYTBiNjhhZTlhZTAzODk1OWVlNGY2OWViZTI4OGVjODkyZjA2XQotCi1DVkU6IENWRS0yMDE3LTkxNDcKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgIHwgIDIwICsrKysrKysrKysKLSBsaWJ0aWZmL3RpZl9kaXIuaCAgICAgfCAgIDEgKwotIGxpYnRpZmYvdGlmX2RpcmluZm8uYyB8IDEwMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGxpYnRpZmYvdGlmX2RpcnJlYWQuYyB8ICAgNCArKwotIDQgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggZWU4ZDlkMC4uNTczOTI5MiAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDIzIEBACi0rMjAxNy0wNi0wMSAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9kaXJpbmZvLmMsIHRpZl9kaXJyZWFkLmM6IGFkZCBfVElGRkNoZWNrRmllbGRJc1ZhbGlkRm9yQ29kZWMoKSwKLSsJYW5kIHVzZSBpdCBpbiBUSUZGUmVhZERpcmVjdG9yeSgpIHNvIGFzIHRvIGlnbm9yZSBmaWVsZHMgd2hvc2UgdGFnIGlzIGEKLSsJY29kZWMtc3BlY2lmaWVkIHRhZyBidXQgdGhpcyBjb2RlYyBpcyBub3QgZW5hYmxlZC4gVGhpcyBhdm9pZHMgVElGRkdldEZpZWxkKCkKLSsJdG8gYmVoYXZlIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBjb2RlYyBpcyBlbmFibGVkIG9yIG5vdCwgYW5kCi0rCXRodXMgY2FuIGF2b2lkIHN0YWNrIGJhc2VkIGJ1ZmZlciBvdmVyZmxvd3MgaW4gYSBudW1iZXIgb2YgVElGRiB1dGlsaXRpZXMKLSsJc3VjaCBhcyB0aWZmc3BsaXQsIHRpZmZjbXAsIHRodW1ibmFpbCwgZXRjLgotKwlQYXRjaCBkZXJpdmVkIGZyb20gMDA2My1IYW5kbGUtcHJvcGVybHktQ09ERUMtc3BlY2lmaWMtdGFncy5wYXRjaAotKwkoaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MCkgYnkgUmFwaGHDq2wgSGVydHpvZy4KLSsJRml4ZXM6Ci0rCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODAKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MwotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI1IChDVkUtMjAxNi0xMDA5NSkKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NCAoQ1ZFLTIwMTUtNzU1NCkKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2MSAoQ1ZFLTIwMTYtNTMxOCkKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ5OSAoQ1ZFLTIwMTQtODEyOCkKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ0MQotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMzCi0rCi0gMjAxNy0wNS0yMSAgQm9iIEZyaWVzZW5oYWhuICA8YmZyaWVzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KLSAKLSAJKiBjb25maWd1cmUuYWM6IGxpYnRpZmYgNC4wLjggcmVsZWFzZWQuCi1kaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyLmggYi9saWJ0aWZmL3RpZl9kaXIuaAotaW5kZXggZTEyYjQ0Yi4uNTIwNmJlNCAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2Rpci5oCi0rKysgYi9saWJ0aWZmL3RpZl9kaXIuaAotQEAgLTI5MSw2ICsyOTEsNyBAQCBzdHJ1Y3QgX1RJRkZGaWVsZCB7Ci0gZXh0ZXJuIGludCBfVElGRk1lcmdlRmllbGRzKFRJRkYqLCBjb25zdCBUSUZGRmllbGRbXSwgdWludDMyKTsKLSBleHRlcm4gY29uc3QgVElGRkZpZWxkKiBfVElGRkZpbmRPclJlZ2lzdGVyRmllbGQoVElGRiAqLCB1aW50MzIsIFRJRkZEYXRhVHlwZSk7Ci0gZXh0ZXJuICBUSUZGRmllbGQqIF9USUZGQ3JlYXRlQW5vbkZpZWxkKFRJRkYgKiwgdWludDMyLCBUSUZGRGF0YVR5cGUpOwotK2V4dGVybiBpbnQgX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKFRJRkYgKnRpZiwgdHRhZ190IHRhZyk7Ci0gCi0gI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0gfQotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2RpcmluZm8uYyBiL2xpYnRpZmYvdGlmX2RpcmluZm8uYwotaW5kZXggMGM4ZWY0Mi4uOTdjMGRmMCAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcmluZm8uYwotKysrIGIvbGlidGlmZi90aWZfZGlyaW5mby5jCi1AQCAtOTU2LDYgKzk1NiwxMDkgQEAgVElGRk1lcmdlRmllbGRJbmZvKFRJRkYqIHRpZiwgY29uc3QgVElGRkZpZWxkSW5mbyBpbmZvW10sIHVpbnQzMiBuKQotIAlyZXR1cm4gMDsKLSB9Ci0gCi0raW50Ci0rX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKFRJRkYgKnRpZiwgdHRhZ190IHRhZykKLSt7Ci0rCS8qIEZpbHRlciBvdXQgbm9uLWNvZGVjIHNwZWNpZmljIHRhZ3MgKi8KLSsJc3dpdGNoICh0YWcpIHsKLSsJICAgIC8qIFNoYXJlZCB0YWdzICovCi0rCSAgICBjYXNlIFRJRkZUQUdfUFJFRElDVE9SOgotKwkgICAgLyogSlBFRyB0YWdzICovCi0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR1RBQkxFUzoKLSsJICAgIC8qIE9KUEVHIHRhZ3MgKi8KLSsJICAgIGNhc2UgVElGRlRBR19KUEVHSUZPRkZTRVQ6Ci0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR0lGQllURUNPVU5UOgotKwkgICAgY2FzZSBUSUZGVEFHX0pQRUdRVEFCTEVTOgotKwkgICAgY2FzZSBUSUZGVEFHX0pQRUdEQ1RBQkxFUzoKLSsJICAgIGNhc2UgVElGRlRBR19KUEVHQUNUQUJMRVM6Ci0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR1BST0M6Ci0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR1JFU1RBUlRJTlRFUlZBTDoKLSsJICAgIC8qIENDSVRUKiAqLwotKwkgICAgY2FzZSBUSUZGVEFHX0JBREZBWExJTkVTOgotKwkgICAgY2FzZSBUSUZGVEFHX0NMRUFORkFYREFUQToKLSsJICAgIGNhc2UgVElGRlRBR19DT05TRUNVVElWRUJBREZBWExJTkVTOgotKwkgICAgY2FzZSBUSUZGVEFHX0dST1VQM09QVElPTlM6Ci0rCSAgICBjYXNlIFRJRkZUQUdfR1JPVVA0T1BUSU9OUzoKLSsJCWJyZWFrOwotKwkgICAgZGVmYXVsdDoKLSsJCXJldHVybiAxOwotKwl9Ci0rCS8qIENoZWNrIGlmIGNvZGVjIHNwZWNpZmljIHRhZ3MgYXJlIGFsbG93ZWQgZm9yIHRoZSBjdXJyZW50Ci0rCSAqIGNvbXByZXNzaW9uIHNjaGVtZSAoY29kZWMpICovCi0rCXN3aXRjaCAodGlmLT50aWZfZGlyLnRkX2NvbXByZXNzaW9uKSB7Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0xaVzoKLSsJCWlmICh0YWcgPT0gVElGRlRBR19QUkVESUNUT1IpCi0rCQkgICAgcmV0dXJuIDE7Ci0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fUEFDS0JJVFM6Ci0rCQkvKiBObyBjb2RlYy1zcGVjaWZpYyB0YWdzICovCi0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fVEhVTkRFUlNDQU46Ci0rCQkvKiBObyBjb2RlYy1zcGVjaWZpYyB0YWdzICovCi0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fTkVYVDoKLSsJCS8qIE5vIGNvZGVjLXNwZWNpZmljIHRhZ3MgKi8KLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9KUEVHOgotKwkJaWYgKHRhZyA9PSBUSUZGVEFHX0pQRUdUQUJMRVMpCi0rCQkgICAgcmV0dXJuIDE7Ci0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fT0pQRUc6Ci0rCQlzd2l0Y2ggKHRhZykgewotKwkJICAgIGNhc2UgVElGRlRBR19KUEVHSUZPRkZTRVQ6Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0pQRUdJRkJZVEVDT1VOVDoKLSsJCSAgICBjYXNlIFRJRkZUQUdfSlBFR1FUQUJMRVM6Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0pQRUdEQ1RBQkxFUzoKLSsJCSAgICBjYXNlIFRJRkZUQUdfSlBFR0FDVEFCTEVTOgotKwkJICAgIGNhc2UgVElGRlRBR19KUEVHUFJPQzoKLSsJCSAgICBjYXNlIFRJRkZUQUdfSlBFR1JFU1RBUlRJTlRFUlZBTDoKLSsJCQlyZXR1cm4gMTsKLSsJCX0KLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9DQ0lUVFJMRToKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fQ0NJVFRSTEVXOgotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9DQ0lUVEZBWDM6Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0NDSVRURkFYNDoKLSsJCXN3aXRjaCAodGFnKSB7Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0JBREZBWExJTkVTOgotKwkJICAgIGNhc2UgVElGRlRBR19DTEVBTkZBWERBVEE6Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0NPTlNFQ1VUSVZFQkFERkFYTElORVM6Ci0rCQkJcmV0dXJuIDE7Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0dST1VQM09QVElPTlM6Ci0rCQkJaWYgKHRpZi0+dGlmX2Rpci50ZF9jb21wcmVzc2lvbiA9PSBDT01QUkVTU0lPTl9DQ0lUVEZBWDMpCi0rCQkJICAgIHJldHVybiAxOwotKwkJCWJyZWFrOwotKwkJICAgIGNhc2UgVElGRlRBR19HUk9VUDRPUFRJT05TOgotKwkJCWlmICh0aWYtPnRpZl9kaXIudGRfY29tcHJlc3Npb24gPT0gQ09NUFJFU1NJT05fQ0NJVFRGQVg0KQotKwkJCSAgICByZXR1cm4gMTsKLSsJCQlicmVhazsKLSsJCX0KLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9KQklHOgotKwkJLyogTm8gY29kZWMtc3BlY2lmaWMgdGFncyAqLwotKwkJYnJlYWs7Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0RFRkxBVEU6Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0FET0JFX0RFRkxBVEU6Ci0rCQlpZiAodGFnID09IFRJRkZUQUdfUFJFRElDVE9SKQotKwkJICAgIHJldHVybiAxOwotKwkJYnJlYWs7Ci0rCSAgIGNhc2UgQ09NUFJFU1NJT05fUElYQVJMT0c6Ci0rCQlpZiAodGFnID09IFRJRkZUQUdfUFJFRElDVE9SKQotKwkJICAgIHJldHVybiAxOwotKwkJYnJlYWs7Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX1NHSUxPRzoKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fU0dJTE9HMjQ6Ci0rCQkvKiBObyBjb2RlYy1zcGVjaWZpYyB0YWdzICovCi0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fTFpNQToKLSsJCWlmICh0YWcgPT0gVElGRlRBR19QUkVESUNUT1IpCi0rCQkgICAgcmV0dXJuIDE7Ci0rCQlicmVhazsKLSsKLSsJfQotKwlyZXR1cm4gMDsKLSt9Ci0rCi0gLyogdmltOiBzZXQgdHM9OCBzdHM9OCBzdz04IG5vZXQ6ICovCi0gCi0gLyoKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJyZWFkLmMgYi9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKLWluZGV4IDFkNGYwYjkuLmYxZGMzZDcgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotQEAgLTM1ODAsNiArMzU4MCwxMCBAQCBUSUZGUmVhZERpcmVjdG9yeShUSUZGKiB0aWYpCi0gCQkJCQkJCWdvdG8gYmFkOwotIAkJCQkJCWRwLT50ZGlyX3RhZz1JR05PUkU7Ci0gCQkJCQkJYnJlYWs7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIV9USUZGQ2hlY2tGaWVsZElzVmFsaWRGb3JDb2RlYyh0aWYsIGRwLT50ZGlyX3RhZykgKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRwLT50ZGlyX3RhZz1JR05PUkU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAJCQkJfQotIAkJCX0KLSAJCX0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTk5MzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2ODRkZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTk5MzUucGF0Y2gKQEAgLTAsMCArMSwxNjAgQEAKK0Zyb20gYWJiMDA1NWQyMWM1MmE5OTI1MzE0ZDViMDYyOGZiMmI2MzA3NjE5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJyaWFuIE1heSA8YnJpYW5AbGludXhwZW5ndWlucy54eXo+CitEYXRlOiBUaHUsIDcgRGVjIDIwMTcgMDc6NDY6NDcgKzExMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGlmZjJwZGY6IEZpeCBDVkUtMjAxNy05OTM1CisKK0ZpeCBmb3IgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcwNAorCitUaGlzIHZ1bG5lcmFiaWxpdHkgLSBhdCBsZWFzdCBmb3IgdGhlIHN1cHBsaWVkIHRlc3QgY2FzZSAtIGlzIGJlY2F1c2Ugd2UKK2Fzc3VtZSB0aGF0IGEgdGlmZiB3aWxsIG9ubHkgaGF2ZSBvbmUgdHJhbnNmZXIgZnVuY3Rpb24gdGhhdCBpcyB0aGUgc2FtZQorZm9yIGFsbCBwYWdlcy4gVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgdGhlIFRJRkYgc3RhbmRhcmRzLgorCitXZSB0aGFuIHJlYWQgdGhlIHRyYW5zZmVyIGZ1bmN0aW9uIGZvciBldmVyeSBwYWdlLiAgRGVwZW5kaW5nIG9uIHRoZQordHJhbnNmZXIgZnVuY3Rpb24sIHdlIGFsbG9jYXRlIGVpdGhlciAyIG9yIDQgYnl0ZXMgdG8gdGhlIFhSRUYgYnVmZmVyLgorV2UgYWxsb2NhdGUgdGhpcyBtZW1vcnkgYWZ0ZXIgd2UgcmVhZCBpbiB0aGUgdHJhbnNmZXIgZnVuY3Rpb24gZm9yIHRoZQorcGFnZS4KKworRm9yIHRoZSBmaXJzdCBleHBsb2l0IC0gUE9DMSwgdGhpcyBmaWxlIGhhcyAzIHBhZ2VzLiBGb3IgdGhlIGZpcnN0IHBhZ2UKK3dlIGFsbG9jYXRlIDIgZXh0cmEgZXh0cmEgWFJFRiBlbnRyaWVzLiBUaGVuIGZvciB0aGUgbmV4dCBwYWdlIDIgbW9yZQorZW50cmllcy4gVGhlbiBmb3IgdGhlIGxhc3QgcGFnZSB0aGUgdHJhbnNmZXIgZnVuY3Rpb24gY2hhbmdlcyBhbmQgd2UKK2FsbG9jYXRlIDQgbW9yZSBlbnRyaWVzLgorCitXaGVuIHdlIHJlYWQgdGhlIGZpbGUgaW50byBtZW1vcnksIHdlIGFzc3VtZSB3ZSBoYXZlIDQgYnl0ZXMgZXh0cmEgZm9yCitlYWNoIGFuZCBldmVyeSBwYWdlIChhcyBwZXIgdGhlIGxhc3QgdHJhbnNmZXIgZnVuY3Rpb24gd2UgcmVhZCkuIFdoaWNoCitpcyBub3QgY29ycmVjdCwgd2Ugb25seSBoYXZlIDIgYnl0ZXMgZXh0cmEgZm9yIHRoZSBmaXJzdCAyIHBhZ2VzLiBBcyBhCityZXN1bHQsIHdlIGVuZCB1cCB3cml0aW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLgorCitUaGVyZSBhcmUgYWxzbyBzb21lIHJlbGF0ZWQgaXNzdWVzIHRoYXQgdGhpcyBhbHNvIGZpeGVzLiBGb3IgZXhhbXBsZSwKK1RJRkZHZXRGaWVsZCBjYW4gcmV0dXJuIHVuaW5pdGFsaXplZCBwb2ludGVyIHZhbHVlcywgYW5kIHRoZSBsb2dpYyB0bworZGV0ZWN0IGEgTj0zIHZzIE49MSB0cmFuc2ZlciBmdW5jdGlvbiBzZWVtZWQgcmF0aGVyIHN0cmFuZ2UuCisKK0l0IGlzIGFsc28gc3RyYW5nZSB0aGF0IHdlIGRlY2xhcmUgdGhlIHRyYW5zZmVyIGZ1bmN0aW9ucyB0byBiZSBvZiB0eXBlCitmbG9hdCwgd2hlbiB0aGUgc3RhbmRhcmQgc2F5cyB0aGV5IGFyZSB1bnNpZ25lZCAxNiBiaXQgdmFsdWVzLiBUaGlzIGlzCitmaXhlZCBpbiBhbm90aGVyIHBhdGNoLgorCitUaGlzIHBhdGNoIHdpbGwgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIE4gdmFsdWUgZm9yIGV2ZXJ5IHRyYW5zZmVyCitmdW5jdGlvbiBpcyB0aGUgc2FtZSBmb3IgZXZlcnkgcGFnZS4gSWYgdGhpcyBjaGFuZ2VzLCB3ZSBhYm9ydCB3aXRoIGFuCitlcnJvci4gSW4gdGhlb3J5LCB3ZSBzaG91bGQgcGVyaGFwcyBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciBmdW5jdGlvbgoraXRzZWxmIGlzIGlkZW50aWNhbCBmb3IgZXZlcnkgcGFnZSwgaG93ZXZlciB3ZSBkb24ndCBkbyB0aGF0IGR1ZSB0byB0aGUKK2NvbmZ1c2lvbiBvZiB0aGUgdHlwZSBvZiB0aGUgZGF0YSBpbiB0aGUgdHJhbnNmZXIgZnVuY3Rpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGxhYi5jb20vbGlidGlmZi9saWJ0aWZmL2NvbW1pdC8zZGQ4ZjZhMzU3OTgxYTQwOTBmMTI2YWI5MDI1MDU2YzkzOGI2OTQwXQorCitDVkU6IENWRS0yMDE3LTk5MzUKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgbGlidGlmZi90aWZfZGlyLmMgfCAgMyArKysKKyB0b29scy90aWZmMnBkZi5jICB8IDY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyLmMgYi9saWJ0aWZmL3RpZl9kaXIuYworaW5kZXggZjAwZjgwOC4uYzM2YTVmMyAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX2Rpci5jCisrKysgYi9saWJ0aWZmL3RpZl9kaXIuYworQEAgLTEwNjcsNiArMTA2Nyw5IEBAIF9USUZGVkdldEZpZWxkKFRJRkYqIHRpZiwgdWludDMyIHRhZywgdmFfbGlzdCBhcCkKKyAJCQlpZiAodGQtPnRkX3NhbXBsZXNwZXJwaXhlbCAtIHRkLT50ZF9leHRyYXNhbXBsZXMgPiAxKSB7CisgCQkJCSp2YV9hcmcoYXAsIHVpbnQxNioqKSA9IHRkLT50ZF90cmFuc2ZlcmZ1bmN0aW9uWzFdOworIAkJCQkqdmFfYXJnKGFwLCB1aW50MTYqKikgPSB0ZC0+dGRfdHJhbnNmZXJmdW5jdGlvblsyXTsKKysJCQl9IGVsc2UgeworKwkJCQkqdmFfYXJnKGFwLCB1aW50MTYqKikgPSBOVUxMOworKwkJCQkqdmFfYXJnKGFwLCB1aW50MTYqKikgPSBOVUxMOworIAkJCX0KKyAJCQlicmVhazsKKyAJCWNhc2UgVElGRlRBR19SRUZFUkVOQ0VCTEFDS1dISVRFOgorZGlmZiAtLWdpdCBhL3Rvb2xzL3RpZmYycGRmLmMgYi90b29scy90aWZmMnBkZi5jCitpbmRleCA0NTRiZWZiLi4wYjU5NzNlIDEwMDY0NAorLS0tIGEvdG9vbHMvdGlmZjJwZGYuYworKysrIGIvdG9vbHMvdGlmZjJwZGYuYworQEAgLTEwNDcsNiArMTA0Nyw4IEBAIHZvaWQgdDJwX3JlYWRfdGlmZl9pbml0KFQyUCogdDJwLCBUSUZGKiBpbnB1dCl7CisgCXVpbnQxNiBwYWdlbj0wOworIAl1aW50MTYgcGFnZWQ9MDsKKyAJdWludDE2IHh1aW50MTY9MDsKKysJdWludDE2IHRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50PTA7CisrCWZsb2F0KiB0aWZmX3RyYW5zZmVyZnVuY3Rpb25bM107CisgCisgCWRpcmVjdG9yeWNvdW50PVRJRkZOdW1iZXJPZkRpcmVjdG9yaWVzKGlucHV0KTsKKyAJdDJwLT50aWZmX3BhZ2VzID0gKFQyUF9QQUdFKikgX1RJRkZtYWxsb2MoVElGRlNhZmVNdWx0aXBseSh0bXNpemVfdCxkaXJlY3Rvcnljb3VudCxzaXplb2YoVDJQX1BBR0UpKSk7CitAQCAtMTE0NywyNiArMTE0OSw0OCBAQCB2b2lkIHQycF9yZWFkX3RpZmZfaW5pdChUMlAqIHQycCwgVElGRiogaW5wdXQpeworICAgICAgICAgICAgICAgICB9CisgI2VuZGlmCisgCQlpZiAoVElGRkdldEZpZWxkKGlucHV0LCBUSUZGVEFHX1RSQU5TRkVSRlVOQ1RJT04sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblswXSksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsyXSkpKSB7CistCQkJaWYoKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdICE9IChmbG9hdCopIE5VTEwpICYmCistICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzJdICE9IChmbG9hdCopIE5VTEwpICYmCistICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdICE9CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdKSkgeworLQkJCQl0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50ID0gMzsKKy0JCQkJdDJwLT50aWZmX3BhZ2VzW2ldLnBhZ2VfZXh0cmEgKz0gNDsKKy0JCQkJdDJwLT5wZGZfeHJlZmNvdW50ICs9IDQ7CistCQkJfSBlbHNlIHsKKy0JCQkJdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudCA9IDE7CistCQkJCXQycC0+dGlmZl9wYWdlc1tpXS5wYWdlX2V4dHJhICs9IDI7CistCQkJCXQycC0+cGRmX3hyZWZjb3VudCArPSAyOworLQkJCX0KKy0JCQlpZih0MnAtPnBkZl9taW5vcnZlcnNpb24gPCAyKQorLQkJCQl0MnAtPnBkZl9taW5vcnZlcnNpb24gPSAyOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYodGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0aWZmX3RyYW5zZmVyZnVuY3Rpb25bMl0pKSkgeworKworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKCh0aWZmX3RyYW5zZmVyZnVuY3Rpb25bMV0gIT0gKGZsb2F0KikgTlVMTCkgJiYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAodGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzJdICE9IChmbG9hdCopIE5VTEwpCisrICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ9MzsKKysgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudD0xOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKy0JCQl0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50PTA7CisrCQkJdGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ9MDsKKyAJCX0KKysKKysgICAgICAgICAgICAgICAgaWYgKGkgPiAwKXsKKysgICAgICAgICAgICAgICAgICAgIGlmICh0aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudCAhPSB0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50KXsKKysgICAgICAgICAgICAgICAgICAgICAgICBUSUZGRXJyb3IoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJRkYyUERGX01PRFVMRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpZmZlcmVudCB0cmFuc2ZlciBmdW5jdGlvbiBvbiBwYWdlICVkIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT50MnBfZXJyb3IgPSBUMlBfRVJSX0VSUk9SOworKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICB0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50ID0gdGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ7CisrICAgICAgICAgICAgICAgIHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdID0gdGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdOworKyAgICAgICAgICAgICAgICB0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSA9IHRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXTsKKysgICAgICAgICAgICAgICAgdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMl0gPSB0aWZmX3RyYW5zZmVyZnVuY3Rpb25bMl07CisrICAgICAgICAgICAgICAgIGlmKHRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50ID09IDMpeworKyAgICAgICAgICAgICAgICAgICAgICAgIHQycC0+dGlmZl9wYWdlc1tpXS5wYWdlX2V4dHJhICs9IDQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT5wZGZfeHJlZmNvdW50ICs9IDQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYodDJwLT5wZGZfbWlub3J2ZXJzaW9uIDwgMikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQycC0+cGRmX21pbm9ydmVyc2lvbiA9IDI7CisrICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQgPT0gMSl7CisrICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT50aWZmX3BhZ2VzW2ldLnBhZ2VfZXh0cmEgKz0gMjsKKysgICAgICAgICAgICAgICAgICAgICAgICB0MnAtPnBkZl94cmVmY291bnQgKz0gMjsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZih0MnAtPnBkZl9taW5vcnZlcnNpb24gPCAyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT5wZGZfbWlub3J2ZXJzaW9uID0gMjsKKysgICAgICAgICAgICAgICAgfQorKworIAkJaWYoIFRJRkZHZXRGaWVsZCgKKyAJCQlpbnB1dCwgCisgCQkJVElGRlRBR19JQ0NQUk9GSUxFLCAKK0BAIC0xODI4LDkgKzE4NTIsOCBAQCB2b2lkIHQycF9yZWFkX3RpZmZfZGF0YShUMlAqIHQycCwgVElGRiogaW5wdXQpeworIAkJCSAmKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdKSwKKyAJCQkgJih0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsyXSkpKSB7CisgCQlpZigodDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMV0gIT0gKGZsb2F0KikgTlVMTCkgJiYKKy0gICAgICAgICAgICAgICAgICAgKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzJdICE9IChmbG9hdCopIE5VTEwpICYmCistICAgICAgICAgICAgICAgICAgICh0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSAhPQorLSAgICAgICAgICAgICAgICAgICAgdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMF0pKSB7CisrICAgICAgICAgICAgICAgICAgICh0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsyXSAhPSAoZmxvYXQqKSBOVUxMKQorKyAgICAgICAgICAgICAgICAgICkgeworIAkJCXQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ9MzsKKyAJCX0gZWxzZSB7CisgCQkJdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudD0xOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05OTM2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM5OTM2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05OTM2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA2MmVmZWE3NjU5MjY0NzQyNmRlZWM1NTkyZmQ3Mjc0ZDVjOTUwNjQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KLURhdGU6IE1vbiwgMjYgSnVuIDIwMTcgMTU6MTk6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9qYmlnLmM6IGZpeCBtZW1vcnkgbGVhayBpbiBlcnJvciBjb2RlIHBhdGggb2YKLSBKQklHRGVjb2RlKCkgRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcwNiBSZXBvcnRlZAotIGJ5IHRlYW0gT1dMMzM3Ci0KLSogbGlidGlmZi90aWZfanBlZy5jOiBlcnJvciBvdXQgYXQgZGVjb2RpbmcgdGltZSBpZiBhbnRpY2lwYXRlZCBsaWJqcGVnCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vdmFkei9saWJ0aWZmL2NvbW1pdC9mZThkNzE2NTk1NmI4OGRmNDgzNzAzNGE5MTYxZGM1ZmQyMGNmNjdhXQotCi1DVkU6IENWRS0yMDE3LTk5MzYKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgIHwgNiArKysrKysKLSBsaWJ0aWZmL3RpZl9qYmlnLmMgfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCA1NzM5MjkyLi4wMjQwZjBiIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDYtMjYgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogbGlidGlmZi90aWZfamJpZy5jOiBmaXggbWVtb3J5IGxlYWsgaW4gZXJyb3IgY29kZSBwYXRoIG9mIEpCSUdEZWNvZGUoKQotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA2Ci0rCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0rCi0gMjAxNy0wNi0wMSAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9kaXJpbmZvLmMsIHRpZl9kaXJyZWFkLmM6IGFkZCBfVElGRkNoZWNrRmllbGRJc1ZhbGlkRm9yQ29kZWMoKSwKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9qYmlnLmMgYi9saWJ0aWZmL3RpZl9qYmlnLmMKLWluZGV4IDVmNWY3NWUuLmM3NWYzMWQgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9qYmlnLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2piaWcuYwotQEAgLTk0LDYgKzk0LDcgQEAgc3RhdGljIGludCBKQklHRGVjb2RlKFRJRkYqIHRpZiwgdWludDgqIGJ1ZmZlciwgdG1zaXplX3Qgc2l6ZSwgdWludDE2IHMpCi0gCQkJICAgICBqYmdfc3RyZXJyb3IoZGVjb2RlU3RhdHVzKQotICNlbmRpZgotIAkJCSAgICAgKTsKLSsJCWpiZ19kZWNfZnJlZSgmZGVjb2Rlcik7Ci0gCQlyZXR1cm4gMDsKLSAJfQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxOC01Nzg0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTgtNTc4NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDYwMDFkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTgtNTc4NC5wYXRjaApAQCAtMCwwICsxLDEzNSBAQAorRnJvbSA2Y2RlYTE1MjEzYmU2YjY3ZDlmODM4MGM3YmI0MGUzMjVkM2FkYWNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0aGFuIEJha2VyIDxuYXRoYW5iQGxlbm92by1jaHJvbWUuY29tPgorRGF0ZTogVHVlLCA2IEZlYiAyMDE4IDEwOjEzOjU3IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBmb3IgYnVnIDI3NzIKKworSXQgaXMgcG9zc2libGUgdG8gY3JhZnQgYSBUSUZGIGRvY3VtZW50IHdoZXJlIHRoZSBJRkQgbGlzdCBpcyBjaXJjdWxhciwKK2xlYWRpbmcgdG8gYW4gaW5maW5pdGUgbG9vcCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjaGFpbi4gVGhlIGxpYnRpZmYKK2RpcmVjdG9yeSByZWFkZXIgaGFzIGEgZmFpbHNhZmUgdGhhdCB3aWxsIGJyZWFrIG91dCBvZiB0aGlzIGxvb3AgYWZ0ZXIKK3JlYWRpbmcgNjU1MzUgZGlyZWN0b3J5IGVudHJpZXMsIGJ1dCBpdCB3aWxsIGNvbnRpbnVlIHByb2Nlc3NpbmcsCitjb25zdW1pbmcgdGltZSBhbmQgcmVzb3VyY2VzIHRvIHByb2Nlc3Mgd2hhdCBpcyBlc3NlbnRpYWxseSBhIGJvZ3VzIFRJRkYKK2RvY3VtZW50LgorCitUaGlzIGNoYW5nZSBmaXhlcyB0aGUgYWJvdmUgYmVoYXZpb3IgYnkgYnJlYWtpbmcgb3V0IG9mIHByb2Nlc3Npbmcgd2hlbgorYSBUSUZGIGRvY3VtZW50IGhhcyA+PSA2NTUzNSBkaXJlY3RvcmllcyBhbmQgdGVybWluYXRpbmcgd2l0aCBhbiBlcnJvci4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0bGFiLmNvbS9saWJ0aWZmL2xpYnRpZmYvY29tbWl0LzQ3Mzg1MWQyMTFjZjg4MDVhMTYxODIwMzM3Y2E3NGNjOTYxNWQ2ZWZdCisKK0NWRTogQ1ZFLTIwMTgtNTc4NAorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBjb250cmliL2FkZHRpZmZvL3RpZl9vdmVydmlldy5jIHwgMTQgKysrKysrKysrKysrKy0KKyB0b29scy90aWZmMnBkZi5jICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKworIHRvb2xzL3RpZmZjcm9wLmMgICAgICAgICAgICAgICAgfCAxMyArKysrKysrKysrKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29udHJpYi9hZGR0aWZmby90aWZfb3ZlcnZpZXcuYyBiL2NvbnRyaWIvYWRkdGlmZm8vdGlmX292ZXJ2aWV3LmMKK2luZGV4IGM2MWZmYmIuLjAzYjM1NzMgMTAwNjQ0CistLS0gYS9jb250cmliL2FkZHRpZmZvL3RpZl9vdmVydmlldy5jCisrKysgYi9jb250cmliL2FkZHRpZmZvL3RpZl9vdmVydmlldy5jCitAQCAtNjUsNiArNjUsOCBAQAorICMgIGRlZmluZSBNQVgoYSxiKSAgICAgICgoYT5iKSA/IGEgOiBiKQorICNlbmRpZgorIAorKyNkZWZpbmUgVElGRl9ESVJfTUFYICA2NTUzNAorKworIHZvaWQgVElGRkJ1aWxkT3ZlcnZpZXdzKCBUSUZGICosIGludCwgaW50ICosIGludCwgY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCopKGRvdWJsZSx2b2lkKiksIHZvaWQgKiApOworIAorQEAgLTkxLDYgKzkzLDcgQEAgdWludDMyIFRJRkZfV3JpdGVPdmVydmlldyggVElGRiAqaFRJRkYsIHVpbnQzMiBuWFNpemUsIHVpbnQzMiBuWVNpemUsCisgeworICAgICB0b2ZmX3QJbkJhc2VEaXJPZmZzZXQ7CisgICAgIHRvZmZfdAluT2Zmc2V0OworKyAgICB0ZGlyX3QJaU51bURpcjsKKyAKKyAgICAgKHZvaWQpIGJVc2VTdWJJRkRzOworIAorQEAgLTE0Nyw3ICsxNTAsMTYgQEAgdWludDMyIFRJRkZfV3JpdGVPdmVydmlldyggVElGRiAqaFRJRkYsIHVpbnQzMiBuWFNpemUsIHVpbnQzMiBuWVNpemUsCisgICAgICAgICByZXR1cm4gMDsKKyAKKyAgICAgVElGRldyaXRlRGlyZWN0b3J5KCBoVElGRiApOworLSAgICBUSUZGU2V0RGlyZWN0b3J5KCBoVElGRiwgKHRkaXJfdCkgKFRJRkZOdW1iZXJPZkRpcmVjdG9yaWVzKGhUSUZGKS0xKSApOworKyAgICBpTnVtRGlyID0gVElGRk51bWJlck9mRGlyZWN0b3JpZXMoaFRJRkYpOworKyAgICBpZiggaU51bURpciA+IFRJRkZfRElSX01BWCApCisrICAgIHsKKysgICAgICAgIFRJRkZFcnJvckV4dCggVElGRkNsaWVudGRhdGEoaFRJRkYpLAorKyAgICAgICAgICAgICAgICAgICAgICAiVElGRl9Xcml0ZU92ZXJ2aWV3IiwKKysgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgYCVzJyBoYXMgdG9vIG1hbnkgZGlyZWN0b3JpZXMuXG4iLAorKyAgICAgICAgICAgICAgICAgICAgICBUSUZGRmlsZU5hbWUoaFRJRkYpICk7CisrICAgICAgICBleGl0KC0xKTsKKysgICAgfQorKyAgICBUSUZGU2V0RGlyZWN0b3J5KCBoVElGRiwgKHRkaXJfdCkgKGlOdW1EaXIgLSAxKSApOworIAorICAgICBuT2Zmc2V0ID0gVElGRkN1cnJlbnREaXJPZmZzZXQoIGhUSUZGICk7CisgCitkaWZmIC0tZ2l0IGEvdG9vbHMvdGlmZjJwZGYuYyBiL3Rvb2xzL3RpZmYycGRmLmMKK2luZGV4IDBiNTk3M2UuLmVmNWQ2YTAgMTAwNjQ0CistLS0gYS90b29scy90aWZmMnBkZi5jCisrKysgYi90b29scy90aWZmMnBkZi5jCitAQCAtNjgsNiArNjgsOCBAQCBleHRlcm4gaW50IGdldG9wdChpbnQsIGNoYXIqKiwgY2hhciopOworIAorICNkZWZpbmUgUFNfVU5JVF9TSVpFCTcyLjBGCisgCisrI2RlZmluZSBUSUZGX0RJUl9NQVggICAgNjU1MzQKKysKKyAvKiBUaGlzIHR5cGUgaXMgb2YgUERGIGNvbG9yIHNwYWNlcy4gKi8KKyB0eXBlZGVmIGVudW0geworIAlUMlBfQ1NfQklMRVZFTCA9IDB4MDEsCS8qIEJpbGV2ZWwsIGJsYWNrIGFuZCB3aGl0ZSAqLworQEAgLTEwNTEsNiArMTA1MywxNCBAQCB2b2lkIHQycF9yZWFkX3RpZmZfaW5pdChUMlAqIHQycCwgVElGRiogaW5wdXQpeworIAlmbG9hdCogdGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzNdOworIAorIAlkaXJlY3Rvcnljb3VudD1USUZGTnVtYmVyT2ZEaXJlY3RvcmllcyhpbnB1dCk7CisrCWlmKGRpcmVjdG9yeWNvdW50ID4gVElGRl9ESVJfTUFYKSB7CisrCQlUSUZGRXJyb3IoCisrCQkJVElGRjJQREZfTU9EVUxFLAorKwkJCSJUSUZGIGNvbnRhaW5zIHRvbyBtYW55IGRpcmVjdG9yaWVzLCAlcyIsCisrCQkJVElGRkZpbGVOYW1lKGlucHV0KSk7CisrCQl0MnAtPnQycF9lcnJvciA9IFQyUF9FUlJfRVJST1I7CisrCQlyZXR1cm47CisrCX0KKyAJdDJwLT50aWZmX3BhZ2VzID0gKFQyUF9QQUdFKikgX1RJRkZtYWxsb2MoVElGRlNhZmVNdWx0aXBseSh0bXNpemVfdCxkaXJlY3Rvcnljb3VudCxzaXplb2YoVDJQX1BBR0UpKSk7CisgCWlmKHQycC0+dGlmZl9wYWdlcz09TlVMTCl7CisgCQlUSUZGRXJyb3IoCitkaWZmIC0tZ2l0IGEvdG9vbHMvdGlmZmNyb3AuYyBiL3Rvb2xzL3RpZmZjcm9wLmMKK2luZGV4IGM2OTE3N2UuLmM2MGNiMzggMTAwNjQ0CistLS0gYS90b29scy90aWZmY3JvcC5jCisrKysgYi90b29scy90aWZmY3JvcC5jCitAQCAtMjE3LDYgKzIxNyw4IEBAIGV4dGVybiBpbnQgZ2V0b3B0KGludCBhcmdjLCBjaGFyICogY29uc3QgYXJndltdLCBjb25zdCBjaGFyICpvcHRzdHJpbmcpOworICNkZWZpbmUgRFVNUF9URVhUICAgMQorICNkZWZpbmUgRFVNUF9SQVcgICAgMgorIAorKyNkZWZpbmUgVElGRl9ESVJfTUFYICA2NTUzNAorKworIC8qIE9mZnNldHMgaW50byBidWZmZXIgZm9yIG1hcmdpbnMgYW5kIGZpeGVkIHdpZHRoIGFuZCBsZW5ndGggc2VnbWVudHMgKi8KKyBzdHJ1Y3Qgb2Zmc2V0IHsKKyAgIHVpbnQzMiAgdG1hcmdpbjsKK0BAIC0yMjMzLDcgKzIyMzUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCisgICAgIHBhZ2VOdW0gPSAtMTsKKyAgIGVsc2UKKyAgICAgdG90YWxfaW1hZ2VzID0gMDsKKy0gIC8qIHJlYWQgbXVsdGlwbGUgaW5wdXQgZmlsZXMgYW5kIHdyaXRlIHRvIG91dHB1dCBmaWxlKHMpICovCisrICAvKiBSZWFkIG11bHRpcGxlIGlucHV0IGZpbGVzIGFuZCB3cml0ZSB0byBvdXRwdXQgZmlsZShzKSAqLworICAgd2hpbGUgKG9wdGluZCA8IGFyZ2MgLSAxKQorICAgICB7CisgICAgIGluID0gVElGRk9wZW4gKGFyZ3Zbb3B0aW5kXSwgInIiKTsKK0BAIC0yMjQxLDcgKzIyNDMsMTQgQEAgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQorICAgICAgIHJldHVybiAoLTMpOworIAorICAgICAvKiBJZiBvbmx5IG9uZSBpbnB1dCBmaWxlIGlzIHNwZWNpZmllZCwgd2UgY2FuIHVzZSBkaXJlY3RvcnkgY291bnQgKi8KKy0gICAgdG90YWxfaW1hZ2VzID0gVElGRk51bWJlck9mRGlyZWN0b3JpZXMoaW4pOyAKKysgICAgdG90YWxfaW1hZ2VzID0gVElGRk51bWJlck9mRGlyZWN0b3JpZXMoaW4pOworKyAgICBpZiAodG90YWxfaW1hZ2VzID4gVElGRl9ESVJfTUFYKQorKyAgICAgIHsKKysgICAgICBUSUZGRXJyb3IgKFRJRkZGaWxlTmFtZShpbiksICJGaWxlIGNvbnRhaW5zIHRvbyBtYW55IGRpcmVjdG9yaWVzIik7CisrICAgICAgaWYgKG91dCAhPSBOVUxMKQorKyAgICAgICAgKHZvaWQpIFRJRkZDbG9zZShvdXQpOworKyAgICAgIHJldHVybiAoMSk7CisrICAgICAgfQorICAgICBpZiAoaW1hZ2VfY291bnQgPT0gMCkKKyAgICAgICB7CisgICAgICAgZGlybnVtID0gMDsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvbGlidG9vbDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9saWJ0b29sMi5wYXRjaAppbmRleCA0NTcyMDJlLi5hODRjNjg4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9saWJ0b29sMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9saWJ0b29sMi5wYXRjaApAQCAtNCwxMyArNCwxMyBAQAogIGNvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IHRpZmYtMy45LjUvY29uZmlndXJlLmFjCitJbmRleDogdGlmZi00LjAuOS9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTMuOS41Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgdGlmZi0zLjkuNS9jb25maWd1cmUuYWMKKy0tLSB0aWZmLTQuMC45Lm9yaWcvY29uZmlndXJlLmFjCisrKysgdGlmZi00LjAuOS9jb25maWd1cmUuYWMKIEBAIC0yNyw3ICsyNyw3IEBAIGRubCBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHAKICBBQ19QUkVSRVEoMi42NCkKLSBBQ19JTklUKFtMaWJUSUZGIFNvZnR3YXJlXSxbMy45LjVdLFt0aWZmQGxpc3RzLm1hcHRvb2xzLm9yZ10sW3RpZmZdKQorIEFDX0lOSVQoW0xpYlRJRkYgU29mdHdhcmVdLFs0LjAuOV0sW3RpZmZAbGlzdHMubWFwdG9vbHMub3JnXSxbdGlmZl0pCiAgQUNfQ09ORklHX0FVWF9ESVIoY29uZmlnKQogLUFDX0NPTkZJR19NQUNST19ESVIobTQpCiArZG5sIEFDX0NPTkZJR19NQUNST19ESVIobTQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJlZTZmOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJQcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgVGFnIEltYWdlIEZpbGUgRm9ybWF0IChUSUZGKSIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zNGRhM2RiNDZmYWI3NTAxOTkyZjk2MTVkN2UxNThjZiIKLQotQ1ZFX1BST0RVQ1QgPSAibGlidGlmZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3NnZW8ub3JnL2xpYnRpZmYvdGlmZi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGlidG9vbDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTE0Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05OTM2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwNjg4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTExMzM1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNzI2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNzI3LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYTdkMWMxMzE4NDE2ZGRmMzZkNWY2ZmE0NjAwMDY5YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OWQ3YTVhOGNjZDkyMDU5OTEzZjI0Njg3N2RiOTVhMjkxOGU2YzA0ZmI5ZDQzZmQ3NGU1YzMzOTBkYWMyOTEwIgotCi0jIGV4Y2x1ZGUgYmV0YXMKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInRpZmYtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTID0gImF4X2N2X2NoZWNrX2dsX2xpYmdsPW5vIgotCi1QQUNLQUdFQ09ORklHID89ICJjeHgganBlZyB6bGliIGx6bWEgXAotICAgICAgICAgICAgICAgICAgc3RyaXAtY2hvcHBpbmcgZXh0cmFzYW1wbGUtYXMtYWxwaGEgY2hlY2steWNiY3Itc3Vic2FtcGxpbmciCi0KLVBBQ0tBR0VDT05GSUdbY3h4XSA9ICItLWVuYWJsZS1jeHgsLS1kaXNhYmxlLWN4eCwsIgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWcsIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIsIgotUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLWVuYWJsZS1sem1hLC0tZGlzYWJsZS1sem1hLHh6LCIKLQotIyBDb252ZXJ0IHNpbmdsZS1zdHJpcCB1bmNvbXByZXNzZWQgaW1hZ2VzIHRvIG11bHRpcGxlIHN0cmlwcyBvZiBzcGVjaWZpZWQKLSMgc2l6ZSAoZGVmYXVsdDogODE5MikgdG8gcmVkdWNlIG1lbW9yeSB1c2FnZQotUEFDS0FHRUNPTkZJR1tzdHJpcC1jaG9wcGluZ10gPSAiLS1lbmFibGUtc3RyaXAtY2hvcHBpbmcsLS1kaXNhYmxlLXN0cmlwLWNob3BwaW5nLCwiCi0KLSMgVHJlYXQgYSBmb3VydGggc2FtcGxlIHdpdGggbm8gRVhUUkFTQU1QTEVfIHZhbHVlIGFzIGJlaW5nIEFTU09DQUxQSEEKLVBBQ0tBR0VDT05GSUdbZXh0cmFzYW1wbGUtYXMtYWxwaGFdID0gIi0tZW5hYmxlLWV4dHJhc2FtcGxlLWFzLWFscGhhLC0tZGlzYWJsZS1leHRyYXNhbXBsZS1hcy1hbHBoYSwsIgotCi0jIENvbnRyb2wgcGlja2luZyB1cCBZQ2JDciBzdWJzYW1wbGUgaW5mby4gRGlzYWJsZSB0byBzdXBwb3J0IGZpbGVzIGxhY2tpbmcKLSMgdGhlIHRhZwotUEFDS0FHRUNPTkZJR1tjaGVjay15Y2Jjci1zdWJzYW1wbGluZ10gPSAiLS1lbmFibGUtY2hlY2steWNiY3Itc3Vic2FtcGxpbmcsLS1kaXNhYmxlLWNoZWNrLXljYmNyLXN1YnNhbXBsaW5nLCwiCi0KLSMgU3VwcG9ydCBhIG1lY2hhbmlzbSBhbGxvd2luZyByZWFkaW5nIGxhcmdlIHN0cmlwcyAodXN1YWxseSBvbmUgc3RyaXAgZmlsZXMpCi0jIGluIGNodW5rcyB3aGVuIHVzaW5nIFRJRkZSZWFkU2NhbmxpbmUuIEV4cGVyaW1lbnRhbCA0LjArIGZlYXR1cmUKLVBBQ0tBR0VDT05GSUdbY2h1bmt5LXN0cmlwLXJlYWRdID0gIi0tZW5hYmxlLWNodW5reS1zdHJpcC1yZWFkLC0tZGlzYWJsZS1jaHVua3ktc3RyaXAtcmVhZCwsIgotCi1QQUNLQUdFUyA9KyAidGlmZnh4IHRpZmYtdXRpbHMiCi1GSUxFU190aWZmeHggPSAiJHtsaWJkaXJ9L2xpYnRpZmZ4eC5zby4qIgotRklMRVNfdGlmZi11dGlscyA9ICIke2JpbmRpcn0vKiIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgb2VfbXVsdGlsaWJfaGVhZGVyIHRpZmZjb25mLmgKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzNiYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOS5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIlByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBUYWcgSW1hZ2UgRmlsZSBGb3JtYXQgKFRJRkYpIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTM0ZGEzZGI0NmZhYjc1MDE5OTJmOTYxNWQ3ZTE1OGNmIgorCitDVkVfUFJPRFVDVCA9ICJsaWJ0aWZmIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5vc2dlby5vcmcvbGlidGlmZi90aWZmLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ0b29sMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05OTM1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE4MDEzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTU3ODQucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjU0YmFkMjExMjc5Y2M5M2ViNGZjYTMxYmE5YmZkYzc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZlN2JkZWVjMmMzMTA3MzRlNzM0ZDE5YWFlM2E3MWViZTM3YTRkODQyZTBlMjNkYmIxYjg5MjFjMDAyNmNmY2QiCisKKyMgZXhjbHVkZSBiZXRhcworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidGlmZi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitpbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYXhfY3ZfY2hlY2tfZ2xfbGliZ2w9bm8iCisKK1BBQ0tBR0VDT05GSUcgPz0gImN4eCBqcGVnIHpsaWIgbHptYSBcCisgICAgICAgICAgICAgICAgICBzdHJpcC1jaG9wcGluZyBleHRyYXNhbXBsZS1hcy1hbHBoYSBjaGVjay15Y2Jjci1zdWJzYW1wbGluZyIKKworUEFDS0FHRUNPTkZJR1tjeHhdID0gIi0tZW5hYmxlLWN4eCwtLWRpc2FibGUtY3h4LCwiCitQQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZywiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiwiCitQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHosIgorCisjIENvbnZlcnQgc2luZ2xlLXN0cmlwIHVuY29tcHJlc3NlZCBpbWFnZXMgdG8gbXVsdGlwbGUgc3RyaXBzIG9mIHNwZWNpZmllZAorIyBzaXplIChkZWZhdWx0OiA4MTkyKSB0byByZWR1Y2UgbWVtb3J5IHVzYWdlCitQQUNLQUdFQ09ORklHW3N0cmlwLWNob3BwaW5nXSA9ICItLWVuYWJsZS1zdHJpcC1jaG9wcGluZywtLWRpc2FibGUtc3RyaXAtY2hvcHBpbmcsLCIKKworIyBUcmVhdCBhIGZvdXJ0aCBzYW1wbGUgd2l0aCBubyBFWFRSQVNBTVBMRV8gdmFsdWUgYXMgYmVpbmcgQVNTT0NBTFBIQQorUEFDS0FHRUNPTkZJR1tleHRyYXNhbXBsZS1hcy1hbHBoYV0gPSAiLS1lbmFibGUtZXh0cmFzYW1wbGUtYXMtYWxwaGEsLS1kaXNhYmxlLWV4dHJhc2FtcGxlLWFzLWFscGhhLCwiCisKKyMgQ29udHJvbCBwaWNraW5nIHVwIFlDYkNyIHN1YnNhbXBsZSBpbmZvLiBEaXNhYmxlIHRvIHN1cHBvcnQgZmlsZXMgbGFja2luZworIyB0aGUgdGFnCitQQUNLQUdFQ09ORklHW2NoZWNrLXljYmNyLXN1YnNhbXBsaW5nXSA9ICItLWVuYWJsZS1jaGVjay15Y2Jjci1zdWJzYW1wbGluZywtLWRpc2FibGUtY2hlY2steWNiY3Itc3Vic2FtcGxpbmcsLCIKKworIyBTdXBwb3J0IGEgbWVjaGFuaXNtIGFsbG93aW5nIHJlYWRpbmcgbGFyZ2Ugc3RyaXBzICh1c3VhbGx5IG9uZSBzdHJpcCBmaWxlcykKKyMgaW4gY2h1bmtzIHdoZW4gdXNpbmcgVElGRlJlYWRTY2FubGluZS4gRXhwZXJpbWVudGFsIDQuMCsgZmVhdHVyZQorUEFDS0FHRUNPTkZJR1tjaHVua3ktc3RyaXAtcmVhZF0gPSAiLS1lbmFibGUtY2h1bmt5LXN0cmlwLXJlYWQsLS1kaXNhYmxlLWNodW5reS1zdHJpcC1yZWFkLCwiCisKK1BBQ0tBR0VTID0rICJ0aWZmeHggdGlmZi11dGlscyIKK0ZJTEVTX3RpZmZ4eCA9ICIke2xpYmRpcn0vbGlidGlmZnh4LnNvLioiCitGSUxFU190aWZmLXV0aWxzID0gIiR7YmluZGlyfS8qIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBvZV9tdWx0aWxpYl9oZWFkZXIgdGlmZmNvbmYuaAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTctMTQ2MzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAzNmI5NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMyLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gMzk3MDRjZTE2ODM1ZTVjMDE5YmIwM2Y2YTk0ZGMxZjA2Nzc0MDZjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9HdWlkbz0yMEc9QzM9QkNudGhlcj89IDxhZ3hAc2lneGNwdS5vcmc+CitEYXRlOiBXZWQsIDE1IE5vdiAyMDE3IDE4OjIyOjU5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIENWRS0yMDE3LTE0NjMyOiB2b3JiaXNfYW5hbHlzaXNfaGVhZGVyX291dDogRG9uJ3QgY2xlYXIgb3BiCisgaWYgbm90IGluaXRpYWxpemVkCisKK0lmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHdpdGhpbiB0aGUgYWxsb3dlZCByYW5nZQord2UgY2FsbCBvZ2diYWNrX3dyaXRlY2xlYXIgYWx0b3VnaCBpdCdzIG5vdCBpbml0aWFsaXplZCB5ZXQuCisKK1RoaXMgZml4ZXMKKworICAgID0yMzM3MT09IEludmFsaWQgZnJlZSgpIC8gZGVsZXRlIC8gZGVsZXRlW10gLyByZWFsbG9jKCkKKyAgICA9PTIzMzcxPT0gICAgYXQgMHg0QzJDRTFCOiBmcmVlICh2Z19yZXBsYWNlX21hbGxvYy5jOjUzMCkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg4MjlDQTMxOiBvZ2dwYWNrX3dyaXRlY2xlYXIgKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlib2dnLnNvLjAuOC4yKQorICAgID09MjMzNzE9PSAgICBieSAweDg0Qjk2RUU6IHZvcmJpc19hbmFseXNpc19oZWFkZXJvdXQgKGluZm8uYzo2NTIpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4OUZCQ0JDQzogPz8/IChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L3NveC9saWJzb3hfZm10X3ZvcmJpcy5zbykKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg0RTUyNEYxOiA/Pz8gKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlic294LnNvLjIuMC4xKQorICAgID09MjMzNzE9PSAgICBieSAweDRFNTJDQ0E6IHNveF9vcGVuX3dyaXRlIChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYnNveC5zby4yLjAuMSkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHgxMEQ4MkE6IG9wZW5fb3V0cHV0X2ZpbGUgKHNveC5jOjE1NTYpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4MTBEODJBOiBwcm9jZXNzIChzb3guYzoxNzUzKQorICAgID09MjMzNzE9PSAgICBieSAweDEwRDgyQTogbWFpbiAoc294LmM6MzAxMikKKyAgICA9PTIzMzcxPT0gIEFkZHJlc3MgMHg2ODc2OGM4IGlzIDQ4OCBieXRlcyBpbnNpZGUgYSBibG9jayBvZiBzaXplIDg4MCBhbGxvYydkCisgICAgPT0yMzM3MT09ICAgIGF0IDB4NEMyQkIxRjogbWFsbG9jICh2Z19yZXBsYWNlX21hbGxvYy5jOjI5OCkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg0QzJERTlGOiByZWFsbG9jICh2Z19yZXBsYWNlX21hbGxvYy5jOjc4NSkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg0RTU0NUMyOiBsc3hfcmVhbGxvYyAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJzb3guc28uMi4wLjEpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4OUZCQzlBMDogPz8/IChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L3NveC9saWJzb3hfZm10X3ZvcmJpcy5zbykKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg0RTUyNEYxOiA/Pz8gKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlic294LnNvLjIuMC4xKQorICAgID09MjMzNzE9PSAgICBieSAweDRFNTJDQ0E6IHNveF9vcGVuX3dyaXRlIChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYnNveC5zby4yLjAuMSkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHgxMEQ4MkE6IG9wZW5fb3V0cHV0X2ZpbGUgKHNveC5jOjE1NTYpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4MTBEODJBOiBwcm9jZXNzIChzb3guYzoxNzUzKQorICAgID09MjMzNzE9PSAgICBieSAweDEwRDgyQTogbWFpbiAoc294LmM6MzAxMikKKworYXMgc2VlbiB3aGVuIHVzaW5nIHRoZSB0ZXN0Y2FzZSBmcm9tIENWRS0yMDE3LTExMzMzIHdpdGgKKzAwOGQyM2I3ODJiZTA5YzhkNzViYTgxOTBiMTc5NGFiZDY2YzcxMjEgYXBwbGllZC4gSG93ZXZlciB0aGUgZXJyb3Igd2FzCit0aGVyZSBiZWZvcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTctMTQ2MzIKKworUmVmZXJlbmNlIHRvIHVwc3RyZWFtIHBhdGNoOgoraHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9dm9yYmlzLmdpdDthPWNvbW1pdGRpZmY7aD1jMWMyODMxZmM3MzA2ZDVmYmQ3YmM4MDAzMjRlZmQxMmIyOGQzMjdmCisKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIGxpYi9pbmZvLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2xpYi9pbmZvLmMgYi9saWIvaW5mby5jCitpbmRleCA4MWI3NTU3Li40ZDgyNTY4IDEwMDY0NAorLS0tIGEvbGliL2luZm8uYworKysrIGIvbGliL2luZm8uYworQEAgLTU4NCw2ICs1ODQsNyBAQCBpbnQgdm9yYmlzX2FuYWx5c2lzX2hlYWRlcm91dCh2b3JiaXNfZHNwX3N0YXRlICp2LAorICAgcHJpdmF0ZV9zdGF0ZSAqYj12LT5iYWNrZW5kX3N0YXRlOworIAorICAgaWYoIWJ8fHZpLT5jaGFubmVsczw9MHx8dmktPmNoYW5uZWxzPjI1Nil7CisrICAgIGIgPSBOVUxMOworICAgICByZXQ9T1ZfRUZBVUxUOworICAgICBnb3RvIGVycl9vdXQ7CisgICB9CistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDYzMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOWU2ODgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDYzMy5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDA3ZWRhNTVmMzM2ZTVjNDRkZmMwZTRhMWUyMTYyOGZhZWQ3MjU1ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/R3VpZG89MjBHPUMzPUJDbnRoZXI/PSA8YWd4QHNpZ3hjcHUub3JnPgorRGF0ZTogVHVlLCAzMSBPY3QgMjAxNyAxODozMjo0NiArMDEwMAorU3ViamVjdDogW1BBVENIXSBDVkUtMjAxNy0xNDYzMzogRG9uJ3QgYWxsb3cgZm9yIG1vcmUgdGhhbiAyNTYgY2hhbm5lbHMKKworT3RoZXJ3aXNlCisKKyBmb3IoaT0wO2k8dmktPmNoYW5uZWxzO2krKyl7CisgICAgICAvKiB0aGUgZW5jb2RlciBzZXR1cCBhc3N1bWVzIHRoYXQgYWxsIHRoZSBtb2RlcyB1c2VkIGJ5IGFueQorICAgICAgICAgc3BlY2lmaWMgYml0cmF0ZSB0d2Vha2luZyB1c2UgdGhlIHNhbWUgZmxvb3IgKi8KKyAgICAgIGludCBzdWJtYXA9aW5mby0+Y2htdXhsaXN0W2ldOworCitvdmVycmVhZHMgbGF0ZXIgaW4gbWFwcGluZzBfZm9yd2FyZCBzaW5jZSBjaG11eGxpc3QgaXMgYSBmaXhlZCBhcnJheSBvZgorMjU2IGVsZW1lbnRzIG1heC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNDYzMworCitSZWZlcmVuY2UgdG8gdXBzdHJlYW0gcGF0Y2g6CitodHRwczovL2dpdC54aXBoLm9yZy8/cD12b3JiaXMuZ2l0O2E9Y29tbWl0ZGlmZjtoPTY2N2NlYjRhYWI2MGMxZjc0MDYwMTQzYmIyNGU1ZjQyN2IzY2NlNWYKKworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgbGliL2luZm8uYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9pbmZvLmMgYi9saWIvaW5mby5jCitpbmRleCBlNDQ3YTBjLi44MWI3NTU3IDEwMDY0NAorLS0tIGEvbGliL2luZm8uYworKysrIGIvbGliL2luZm8uYworQEAgLTU4Myw3ICs1ODMsNyBAQCBpbnQgdm9yYmlzX2FuYWx5c2lzX2hlYWRlcm91dCh2b3JiaXNfZHNwX3N0YXRlICp2LAorICAgb2dncGFja19idWZmZXIgb3BiOworICAgcHJpdmF0ZV9zdGF0ZSAqYj12LT5iYWNrZW5kX3N0YXRlOworIAorLSAgaWYoIWJ8fHZpLT5jaGFubmVsczw9MCl7CisrICBpZighYnx8dmktPmNoYW5uZWxzPD0wfHx2aS0+Y2hhbm5lbHM+MjU2KXsKKyAgICAgcmV0PU9WX0VGQVVMVDsKKyAgICAgZ290byBlcnJfb3V0OworICAgfQorLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTgtNTE0Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE4LTUxNDYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ0MDUyYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE4LTUxNDYucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0Zyb20gM2EwMTdmNTkxNDU3YmY2ZTgwMjMxYjU2M2JmODNlZTU4M2ZkYmNhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBEYWVkZSA8ZGFlZGUwMDNAdW1uLmVkdT4KK0RhdGU6IFRodSwgMTUgTWFyIDIwMTggMTQ6MTU6MzEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQ1ZFLTIwMTgtNTE0NjogUHJldmVudCBvdXQtb2YtYm91bmRzIHdyaXRlIGluIGNvZGVib29rCisgZGVjb2RpbmcuCisKK0NvZGVib29rcyB0aGF0IGFyZSBub3QgYW4gZXhhY3QgZGl2aXNvciBvZiB0aGUgcGFydGl0aW9uIHNpemUgYXJlIG5vdwordHJ1bmNhdGVkIHRvIGZpdCB3aXRoaW4gdGhlIHBhcnRpdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxOC01MTQ2CisKK1JlZmVyZW5jZSB0byB1cHN0cmVhbSBwYXRjaDoKK2h0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPXZvcmJpcy5naXQ7YT1jb21taXRkaWZmO2g9NjY3Y2ViNGFhYjYwYzFmNzQwNjAxNDNiYjI0ZTVmNDI3YjNjY2U1ZgorCitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CistLS0KKyBsaWIvY29kZWJvb2suYyB8IDQ4ICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9jb2RlYm9vay5jIGIvbGliL2NvZGVib29rLmMKK2luZGV4IDhiNzY2ZTguLjcwMjJmZDIgMTAwNjQ0CistLS0gYS9saWIvY29kZWJvb2suYworKysrIGIvbGliL2NvZGVib29rLmMKK0BAIC0zODcsNyArMzg3LDcgQEAgbG9uZyB2b3JiaXNfYm9va19kZWNvZGV2c19hZGQoY29kZWJvb2sgKmJvb2ssZmxvYXQgKmEsb2dncGFja19idWZmZXIgKmIsaW50IG4peworICAgICAgIHRbaV0gPSBib29rLT52YWx1ZWxpc3QrZW50cnlbaV0qYm9vay0+ZGltOworICAgICB9CisgICAgIGZvcihpPTAsbz0wO2k8Ym9vay0+ZGltO2krKyxvKz1zdGVwKQorLSAgICAgIGZvciAoaj0wO2o8c3RlcDtqKyspCisrICAgICAgZm9yIChqPTA7bytqPG4gJiYgajxzdGVwO2orKykKKyAgICAgICAgIGFbbytqXSs9dFtqXVtpXTsKKyAgIH0KKyAgIHJldHVybigwKTsKK0BAIC0zOTksNDEgKzM5OSwxMiBAQCBsb25nIHZvcmJpc19ib29rX2RlY29kZXZfYWRkKGNvZGVib29rICpib29rLGZsb2F0ICphLG9nZ3BhY2tfYnVmZmVyICpiLGludCBuKXsKKyAgICAgaW50IGksaixlbnRyeTsKKyAgICAgZmxvYXQgKnQ7CisgCistICAgIGlmKGJvb2stPmRpbT44KXsKKy0gICAgICBmb3IoaT0wO2k8bjspeworLSAgICAgICAgZW50cnkgPSBkZWNvZGVfcGFja2VkX2VudHJ5X251bWJlcihib29rLGIpOworLSAgICAgICAgaWYoZW50cnk9PS0xKXJldHVybigtMSk7CistICAgICAgICB0ICAgICA9IGJvb2stPnZhbHVlbGlzdCtlbnRyeSpib29rLT5kaW07CistICAgICAgICBmb3IgKGo9MDtqPGJvb2stPmRpbTspCistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgIH0KKy0gICAgfWVsc2V7CistICAgICAgZm9yKGk9MDtpPG47KXsKKy0gICAgICAgIGVudHJ5ID0gZGVjb2RlX3BhY2tlZF9lbnRyeV9udW1iZXIoYm9vayxiKTsKKy0gICAgICAgIGlmKGVudHJ5PT0tMSlyZXR1cm4oLTEpOworLSAgICAgICAgdCAgICAgPSBib29rLT52YWx1ZWxpc3QrZW50cnkqYm9vay0+ZGltOworLSAgICAgICAgaj0wOworLSAgICAgICAgc3dpdGNoKChpbnQpYm9vay0+ZGltKXsKKy0gICAgICAgIGNhc2UgODoKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgICBjYXNlIDc6CistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgICAgY2FzZSA2OgorLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKKy0gICAgICAgIGNhc2UgNToKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgICBjYXNlIDQ6CistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgICAgY2FzZSAzOgorLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKKy0gICAgICAgIGNhc2UgMjoKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgICBjYXNlIDE6CistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgICAgY2FzZSAwOgorLSAgICAgICAgICBicmVhazsKKy0gICAgICAgIH0KKy0gICAgICB9CisrICAgIGZvcihpPTA7aTxuOyl7CisrICAgICAgZW50cnkgPSBkZWNvZGVfcGFja2VkX2VudHJ5X251bWJlcihib29rLGIpOworKyAgICAgIGlmKGVudHJ5PT0tMSlyZXR1cm4oLTEpOworKyAgICAgIHQgICAgID0gYm9vay0+dmFsdWVsaXN0K2VudHJ5KmJvb2stPmRpbTsKKysgICAgICBmb3Ioaj0wO2k8biAmJiBqPGJvb2stPmRpbTspCisrICAgICAgICBhW2krK10rPXRbaisrXTsKKyAgICAgfQorICAgfQorICAgcmV0dXJuKDApOworQEAgLTQ3MSwxMiArNDQyLDEzIEBAIGxvbmcgdm9yYmlzX2Jvb2tfZGVjb2RldnZfYWRkKGNvZGVib29rICpib29rLGZsb2F0ICoqYSxsb25nIG9mZnNldCxpbnQgY2gsCisgICBsb25nIGksaixlbnRyeTsKKyAgIGludCBjaHB0cj0wOworICAgaWYoYm9vay0+dXNlZF9lbnRyaWVzPjApeworLSAgICBmb3IoaT1vZmZzZXQvY2g7aTwob2Zmc2V0K24pL2NoOyl7CisrICAgIGludCBtPShvZmZzZXQrbikvY2g7CisrICAgIGZvcihpPW9mZnNldC9jaDtpPG07KXsKKyAgICAgICBlbnRyeSA9IGRlY29kZV9wYWNrZWRfZW50cnlfbnVtYmVyKGJvb2ssYik7CisgICAgICAgaWYoZW50cnk9PS0xKXJldHVybigtMSk7CisgICAgICAgeworICAgICAgICAgY29uc3QgZmxvYXQgKnQgPSBib29rLT52YWx1ZWxpc3QrZW50cnkqYm9vay0+ZGltOworLSAgICAgICAgZm9yIChqPTA7ajxib29rLT5kaW07aisrKXsKKysgICAgICAgIGZvciAoaj0wO2k8bSAmJiBqPGJvb2stPmRpbTtqKyspeworICAgICAgICAgICBhW2NocHRyKytdW2ldKz10W2pdOworICAgICAgICAgICBpZihjaHB0cj09Y2gpeworICAgICAgICAgICAgIGNocHRyPTA7CistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpc18xLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy41LmJiCmluZGV4IDU2YzViMGEuLjIwZjg4N2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy41LmJiCkBAIC0xMiw2ICsxMiw5IEBACiAKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy92b3JiaXMvJHtCUH0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDYzMy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDYzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC01MTQ2LnBhdGNoIFwKICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMjhjYjI4MDk3YzA3YTczNWQ2YWY1NmU1OThlMWM5MGYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTRmOTRhOTUyN2ZmMGE4ODQ3N2JlMGE3MWMwYmFiMDlhNGMzZmViZTBlZDg3OGIyNDgyNDkwNmNkNGIwZTFkMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjUuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyOTA2OWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjEwLmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiQXVkaW8gZGVjb2RlciBmb3IgTVBFRy0xIExheWVyIDEvMi8zIgorREVTQ1JJUFRJT04gPSAiVGhlIGNvcmUgb2YgbXBnMTIzIGlzIGFuIE1QRUctMSBMYXllciAxLzIvMyBkZWNvZGluZyBsaWJyYXJ5LCB3aGljaCBjYW4gYmUgdXNlZCBieSBvdGhlciBwcm9ncmFtcy4gXAorbXBnMTIzIGFsc28gY29tZXMgd2l0aCBhIGNvbW1hbmQtbGluZSB0b29sIHdoaWNoIGNhbiBwbGF5YmFjayB1c2luZyBBTFNBLCBQdWxzZUF1ZGlvLCBPU1MsIGFuZCBzZXZlcmFsIG90aGVyIEFQSXMsIFwKK2FuZCBhbHNvIGNhbiB3cml0ZSB0aGUgZGVjb2RlZCBhdWRpbyB0byBXQVYuIgorSE9NRVBBR0UgPSAiaHR0cDovL21wZzEyMy5kZS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9tcGcxMjMvYnVncy8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTg2NzUzNjM4ZDNjZjI1MTI1MjhiOTkwNzliYzRmMyIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5tcGcxMjMuZGUvZG93bmxvYWQvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYTMyY2FhNjFkNDFkOGJlNzk3ZjBiMDRhMWI0M2FkOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YzEzMzdhZWUyZTRiZjk5MzI5OTg1MWM3MGI3ZGIxMWZhZWM3ODUzMDNjZmNhM2E1YzNlYjVmMzI5YmE3MDIzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworIyBUaGUgb3B0aW9ucyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZvciBjb25maWd1cmF0aW9uIHNjcmlwdC4KKyMgSWYgYm90aCBhbHNhIGFuZCBwdWxzZWF1ZGlvIGFyZSBzcGVjaWZpZWQgKGFzIGluIHRoZSBkZWZhdWx0IGRpc3RybyBmZWF0dXJlcykKKyMgcHVsc2VhdWRpbyB0YWtlcyBwcmVjZWRlbmNlLgorUEFDS0FHRUNPTkZJR19BTFNBID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCBkKX0iCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlYXVkaW8nLCAnJHtQQUNLQUdFQ09ORklHX0FMU0F9JywgZCl9IgorCitQQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPWFsc2EsLGFsc2EtbGliIgorUEFDS0FHRUNPTkZJR1tlc2RdID0gIiwsZXNvdW5kIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICIsLGphY2siCitQQUNLQUdFQ09ORklHW29wZW5hbF0gPSAiLCxvcGVuYWwtc29mdCIKK1BBQ0tBR0VDT05GSUdbcG9ydGF1ZGlvXSA9ICIsLHBvcnRhdWRpby12MTkiCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPXB1bHNlLCxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1tzZGxdID0gIiwsbGlic2RsIgorCisjIEZvbGxvd2luZyBhcmUgcG9zc2libGUgc291bmQgb3V0cHV0IG1vZHVsZXM6CisjIGFsc2EgYXJ0cyBjb3JlYXVkaW8gZHVtbXkgZXNkIGphY2sgbmFzIG9wZW5hbCBvczIgb3NzIHBvcnRhdWRpbyBwdWxzZSBzZGwgc25kaW8gc3VuIHRpbnlhbHNhIHdpbjMyIHdpbjMyX3dhc2FwaQorQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYWxzYSBlc2QgamFjayBvcGVuYWwgcG9ydGF1ZGlvIHNkbCcsIGQpfSIKK0FVRElPTU9EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdwdWxzZScsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS13aXRoLWF1ZGlvPScke0FVRElPTU9EU30nIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1jcHU9bmVvbicsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2FsdGl2ZWMnLCAnLS13aXRoLWNwdT1hbHRpdmVjJywgJycsIGQpfSBcCisiCisjIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKKyN8IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKKyN8IHtzdGFuZGFyZCBpbnB1dH06NDc6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGBzbXVsbCByNSxyNixyNyxyNCcKKyN8IHtzdGFuZGFyZCBpbnB1dH06NDg6IEVycm9yOiBzaGlmdHMgaW4gQ01QL01PViBpbnN0cnVjdGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHVuaWZpZWQgc3ludGF4IC0tIGBtb3YgcjUscjUsbHNyIzI0JworIy4uLgorI3wgbWFrZVszXTogKioqIFtlcXVhbGl6ZXIubG9dIEVycm9yIDEKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiODYxOTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZzEyMy9tcGcxMjNfMS4yNS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJBdWRpbyBkZWNvZGVyIGZvciBNUEVHLTEgTGF5ZXIgMS8yLzMiCi1ERVNDUklQVElPTiA9ICJUaGUgY29yZSBvZiBtcGcxMjMgaXMgYW4gTVBFRy0xIExheWVyIDEvMi8zIGRlY29kaW5nIGxpYnJhcnksIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IG90aGVyIHByb2dyYW1zLiBcCi1tcGcxMjMgYWxzbyBjb21lcyB3aXRoIGEgY29tbWFuZC1saW5lIHRvb2wgd2hpY2ggY2FuIHBsYXliYWNrIHVzaW5nIEFMU0EsIFB1bHNlQXVkaW8sIE9TUywgYW5kIHNldmVyYWwgb3RoZXIgQVBJcywgXAotYW5kIGFsc28gY2FuIHdyaXRlIHRoZSBkZWNvZGVkIGF1ZGlvIHRvIFdBVi4iCi1IT01FUEFHRSA9ICJodHRwOi8vbXBnMTIzLmRlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL21wZzEyMy9idWdzLyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlODY3NTM2MzhkM2NmMjUxMjUyOGI5OTA3OWJjNGYzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3Lm1wZzEyMy5kZS9kb3dubG9hZC8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjQzMzM2YmVmNzhmNjdjMmU2NmM0ZjZjMjg4Y2ExZWIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmMDQ1OGM5Yjg3Nzk5YmMyYzliZjk0NTUyNzljYzRkMzA1ZTI0NWRiNDNiNTFhMzllZjI3YWZlMDI1YzVhOGUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIFRoZSBvcHRpb25zIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgZm9yIGNvbmZpZ3VyYXRpb24gc2NyaXB0LgotIyBJZiBib3RoIGFsc2EgYW5kIHB1bHNlYXVkaW8gYXJlIHNwZWNpZmllZCAoYXMgaW4gdGhlIGRlZmF1bHQgZGlzdHJvIGZlYXR1cmVzKQotIyBwdWxzZWF1ZGlvIHRha2VzIHByZWNlZGVuY2UuCi1QQUNLQUdFQ09ORklHX0FMU0EgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYScsIGQpfSIKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCAncHVsc2VhdWRpbycsICcke1BBQ0tBR0VDT05GSUdfQUxTQX0nLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS13aXRoLWRlZmF1bHQtYXVkaW89YWxzYSwsYWxzYS1saWIiCi1QQUNLQUdFQ09ORklHW2VzZF0gPSAiLCxlc291bmQiCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIiwsamFjayIKLVBBQ0tBR0VDT05GSUdbb3BlbmFsXSA9ICIsLG9wZW5hbC1zb2Z0IgotUEFDS0FHRUNPTkZJR1twb3J0YXVkaW9dID0gIiwscG9ydGF1ZGlvLXYxOSIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS13aXRoLWRlZmF1bHQtYXVkaW89cHVsc2UsLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3NkbF0gPSAiLCxsaWJzZGwiCi0KLSMgRm9sbG93aW5nIGFyZSBwb3NzaWJsZSBzb3VuZCBvdXRwdXQgbW9kdWxlczoKLSMgYWxzYSBhcnRzIGNvcmVhdWRpbyBkdW1teSBlc2QgamFjayBuYXMgb3BlbmFsIG9zMiBvc3MgcG9ydGF1ZGlvIHB1bHNlIHNkbCBzbmRpbyBzdW4gdGlueWFsc2Egd2luMzIgd2luMzJfd2FzYXBpCi1BVURJT01PRFMgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdhbHNhIGVzZCBqYWNrIG9wZW5hbCBwb3J0YXVkaW8gc2RsJywgZCl9IgotQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlJywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLXdpdGgtYXVkaW89JyR7QVVESU9NT0RTfScgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ25lb24nLCAnLS13aXRoLWNwdT1uZW9uJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYWx0aXZlYycsICctLXdpdGgtY3B1PWFsdGl2ZWMnLCAnJywgZCl9IFwKLSIKLSMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQotI3wge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgotI3wge3N0YW5kYXJkIGlucHV0fTo0NzogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHNtdWxsIHI1LHI2LHI3LHI0JwotI3wge3N0YW5kYXJkIGlucHV0fTo0ODogRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByNSxyNSxsc3IjMjQnCi0jLi4uCi0jfCBtYWtlWzNdOiAqKiogW2VxdWFsaXplci5sb10gRXJyb3IgMQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKaW5kZXggZmRiZjVhYi4uODE4OWE1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKQEAgLTE2MCw3ICsxNjAsNyBAQAogfQogCiBVU0VSQUREX1BBQ0tBR0VTID0gInB1bHNlYXVkaW8tc2VydmVyIgotR1JPVVBBRERfUEFSQU1fcHVsc2VhdWRpby1zZXJ2ZXIgPSAicHVsc2UiCitHUk9VUEFERF9QQVJBTV9wdWxzZWF1ZGlvLXNlcnZlciA9ICItLXN5c3RlbSBwdWxzZSIKIFVTRVJBRERfUEFSQU1fcHVsc2VhdWRpby1zZXJ2ZXIgPSAiLS1zeXN0ZW0gLS1ob21lIC92YXIvcnVuL3B1bHNlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZ3JvdXBzIGF1ZGlvLHB1bHNlIC0tZ2lkIHB1bHNlIHB1bHNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLW1lbWZkLXdyYXBwZXJzLW9ubHktZGVmaW5lLW1lbWZkX2NyZWF0ZS1pZi1ub3QtYWxyZWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtbWVtZmQtd3JhcHBlcnMtb25seS1kZWZpbmUtbWVtZmRfY3JlYXRlLWlmLW5vdC1hbHJlYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzkxZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLW1lbWZkLXdyYXBwZXJzLW9ubHktZGVmaW5lLW1lbWZkX2NyZWF0ZS1pZi1ub3QtYWxyZWEucGF0Y2gKQEAgLTAsMCArMSw2NiBAQAorRnJvbSAwY2I2NmMwYzVhYWZkNDhiNjNhNzU1ODYwNzQ2ZTcwYWZiMzMyYzhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorRGF0ZTogV2VkLCAyNCBKYW4gMjAxOCAwMzo1MTo0OSArMDIwMAorU3ViamVjdDogW1BBVENIXSBtZW1mZC13cmFwcGVyczogb25seSBkZWZpbmUgbWVtZmRfY3JlYXRlKCkgaWYgbm90IGFscmVhZHkKKyBkZWZpbmVkCisKK2dsaWJjIDIuMjcgaXMgdG8gYmUgcmVsZWFzZWQgc29vbiwgYW5kIGl0IHdpbGwgcHJvdmlkZSBtZW1mZF9jcmVhdGUoKS4KK0lmIGdsaWJjIHByb3ZpZGVzIHRoZSBmdW5jdGlvbiwgd2UgbXVzdCBub3QgZGVmaW5lIGl0IG91cnNlbHZlcywKK290aGVyd2lzZSBidWlsZGluZyBmYWlscyBkdWUgdG8gY29uZmxpY3QgYmV0d2VlbiB0aGUgdHdvIGltcGxlbWVudGF0aW9ucworb2YgdGhlIHNhbWUgZnVuY3Rpb24uCisKK0J1Z0xpbms6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDczMworLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9hdHRhY2htZW50LmNnaT9pZD0xMzY5MjddCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgIHwgMyArKysKKyBzcmMvcHVsc2Vjb3JlL21lbWZkLXdyYXBwZXJzLmggfCA3ICsrKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNzdiNWZmNS4uM2E3MWZkOCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjA3LDYgKzYwNyw5IEBAIEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9tZW1mZCIgPSAieHllcyIgJiYgdGVzdCAieCRIQVZFX01FTUZEIiA9ICJ4MCJdLAorICAgICBbQUNfTVNHX0VSUk9SKFsqKiogWW91ciBMaW51eCBrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBtZW1mZCBzaGFyZWQgbWVtb3J5LgorICAgICAgICAgICAgICAgICAgICoqKiBVc2UgbGludXggdjMuMTcgb3IgaGlnaGVyIGZvciBzdWNoIGEgZmVhdHVyZS5dKV0pCisgCisrQVNfSUYoW3Rlc3QgIngkSEFWRV9NRU1GRCIgPSAieDEiXSwKKysgICAgQUNfQ0hFQ0tfRlVOQ1MoW21lbWZkX2NyZWF0ZV0pKQorKworIEFDX1NVQlNUKEhBVkVfTUVNRkQpCisgQU1fQ09ORElUSU9OQUwoW0hBVkVfTUVNRkRdLCBbdGVzdCAieCRIQVZFX01FTUZEIiA9IHgxXSkKKyBBU19JRihbdGVzdCAieCRIQVZFX01FTUZEIiA9ICJ4MSJdLCBBQ19ERUZJTkUoW0hBVkVfTUVNRkRdLCAxLCBbSGF2ZSBtZW1mZCBzaGFyZWQgbWVtb3J5Ll0pKQorZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvbWVtZmQtd3JhcHBlcnMuaCBiL3NyYy9wdWxzZWNvcmUvbWVtZmQtd3JhcHBlcnMuaAoraW5kZXggM2JlZDliMi4uYzdhYWRmZCAxMDA2NDQKKy0tLSBhL3NyYy9wdWxzZWNvcmUvbWVtZmQtd3JhcHBlcnMuaAorKysrIGIvc3JjL3B1bHNlY29yZS9tZW1mZC13cmFwcGVycy5oCitAQCAtMjAsMTMgKzIwLDE0IEBACisgICBMaWNlbnNlIGFsb25nIHdpdGggUHVsc2VBdWRpbzsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoqKi8KKyAKKy0jaWZkZWYgSEFWRV9NRU1GRAorKyNpZiBkZWZpbmVkKEhBVkVfTUVNRkQpICYmICFkZWZpbmVkKEhBVkVfTUVNRkRfQ1JFQVRFKQorIAorICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorICNpbmNsdWRlIDxmY250bC5oPgorIAorIC8qCistICogTm8gZ2xpYmMgd3JhcHBlcnMgZXhpc3QgZm9yIG1lbWZkX2NyZWF0ZSgyKSwgc28gcHJvdmlkZSBvdXIgb3duLgorKyAqIEJlZm9yZSBnbGliYyB2ZXJzaW9uIDIuMjcgdGhlcmUgd2FzIG5vIHdyYXBwZXIgZm9yIG1lbWZkX2NyZWF0ZSgyKSwKKysgKiBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgb3VyIG93bi4KKyAgKgorICAqIEFsc28gZGVmaW5lIG1lbWZkIGZjbnRsIHNlYWxpbmcgbWFjcm9zLiBXaGlsZSB0aGV5IGFyZSBhbHJlYWR5CisgICogZGVmaW5lZCBpbiB0aGUga2VybmVsIGhlYWRlciBmaWxlIDxsaW51eC9mY250bC5oPiwgdGhhdCBmaWxlIGFzCitAQCAtNjMsNiArNjQsNiBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKSB7CisgI2RlZmluZSBGX1NFQUxfV1JJVEUgICAgMHgwMDA4ICAvKiBwcmV2ZW50IHdyaXRlcyAqLworICNlbmRpZgorIAorLSNlbmRpZiAvKiBIQVZFX01FTUZEICovCisrI2VuZGlmIC8qIEhBVkVfTUVNRkQgJiYgIUhBVkVfTUVNRkRfQ1JFQVRFICovCisgCisgI2VuZGlmCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8tZGlzY3Vzcy1pb2NoYW5uZWwtZG9uLXQtdXNlLXZhcmlhYmxlLWxlbmd0aC1hcnJheS1pbi11bmlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vcHVsc2VhdWRpby1kaXNjdXNzLWlvY2hhbm5lbC1kb24tdC11c2UtdmFyaWFibGUtbGVuZ3RoLWFycmF5LWluLXVuaW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWI1NmFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vcHVsc2VhdWRpby1kaXNjdXNzLWlvY2hhbm5lbC1kb24tdC11c2UtdmFyaWFibGUtbGVuZ3RoLWFycmF5LWluLXVuaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSBwYXRjaHdvcmsgU2F0IEZlYiAgNCAxMjoxOTowMSAyMDE3Ci1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKLVN1YmplY3Q6IFtwdWxzZWF1ZGlvLWRpc2N1c3NdIGlvY2hhbm5lbDogZG9uJ3QgdXNlIHZhcmlhYmxlIGxlbmd0aCBhcnJheSBpbgotIHVuaW9uCi1Gcm9tOiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci1YLVBhdGNod29yay1JZDogMTM2ODg1Ci1NZXNzYWdlLUlkOiA8MjAxNzAyMDQxMjE5MDEuMTc0MjgtMS10YW51a0Bpa2kuZmk+Ci1UbzogcHVsc2VhdWRpby1kaXNjdXNzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwotRGF0ZTogU2F0LCAgNCBGZWIgMjAxNyAxNDoxOTowMSArMDIwMAotCi1DbGFuZyBkaWRuJ3QgbGlrZSB0aGUgdmFyaWFibGUgbGVuZ3RoIGFycmF5OgotCi1wdWxzZWNvcmUvaW9jaGFubmVsLmM6MzU4OjE3OiBlcnJvcjogZmllbGRzIG11c3QgaGF2ZSBhIGNvbnN0YW50IHNpemU6Ci0ndmFyaWFibGUgbGVuZ3RoIGFycmF5IGluIHN0cnVjdHVyZScgZXh0ZW5zaW9uIHdpbGwgbmV2ZXIgYmUgc3VwcG9ydGVkCi0gICAgICAgIHVpbnQ4X3QgZGF0YVtDTVNHX1NQQUNFKHNpemVvZihpbnQpICogbmZkKV07Ci0gICAgICAgICAgICAgICAgXgotCi1Db21taXQgNDUxZDFkNjc2MiBpbnRyb2R1Y2VkIHRoZSB2YXJpYWJsZSBsZW5ndGggYXJyYXkgaW4gb3JkZXIgdG8gaGF2ZQotdGhlIGNvcnJlY3QgdmFsdWUgaW4gbXNnX2NvbnRyb2xsZW4uIFRoaXMgcGF0Y2ggcmV2ZXJ0cyB0aGF0IGNvbW1pdCBhbmQKLXVzZXMgYSBkaWZmZXJlbnQgd2F5IHRvIGFjaGlldmUgdGhlIHNhbWUgZ29hbC4KLQotQnVnTGluazogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0NTgKLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIHNyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMgfCAxMCArKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMgYi9zcmMvcHVsc2Vjb3JlL2lvY2hhbm5lbC5jCi1pbmRleCA4YWNlMjk3ZmYuLjg5NzMzNzUyMiAxMDA2NDQKLS0tLSBhL3NyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMKLSsrKyBiL3NyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMKLUBAIC0zNTUsNyArMzU1LDcgQEAgc3NpemVfdCBwYV9pb2NoYW5uZWxfd3JpdGVfd2l0aF9mZHMocGFfaW9jaGFubmVsKmlvLCBjb25zdCB2b2lkKmRhdGEsIHNpemVfdCBsLAotICAgICBzdHJ1Y3QgaW92ZWMgaW92OwotICAgICB1bmlvbiB7Ci0gICAgICAgICBzdHJ1Y3QgY21zZ2hkciBoZHI7Ci0tICAgICAgICB1aW50OF90IGRhdGFbQ01TR19TUEFDRShzaXplb2YoaW50KSAqIG5mZCldOwotKyAgICAgICAgdWludDhfdCBkYXRhW0NNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBNQVhfQU5DSUxfREFUQV9GRFMpXTsKLSAgICAgfSBjbXNnOwotIAotICAgICBwYV9hc3NlcnQoaW8pOwotQEAgLTM4Miw3ICszODIsMTMgQEAgc3NpemVfdCBwYV9pb2NoYW5uZWxfd3JpdGVfd2l0aF9mZHMocGFfaW9jaGFubmVsKmlvLCBjb25zdCB2b2lkKmRhdGEsIHNpemVfdCBsLAotICAgICBtaC5tc2dfaW92ID0gJmlvdjsKLSAgICAgbWgubXNnX2lvdmxlbiA9IDE7Ci0gICAgIG1oLm1zZ19jb250cm9sID0gJmNtc2c7Ci0tICAgIG1oLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGNtc2cpOwotKwotKyAgICAvKiBJZiB3ZSBmb2xsb3dlZCB0aGUgZXhhbXBsZSBvbiB0aGUgY21zZyBtYW4gcGFnZSwgd2UnZCB1c2UKLSsgICAgICogc2l6ZW9mKGNtc2cuZGF0YSkgaGVyZSwgYnV0IGlmIG5mZCA8IE1BWF9BTkNJTF9EQVRBX0ZEUywgdGhlbiB0aGUgZGF0YQotKyAgICAgKiBidWZmZXIgaXMgbGFyZ2VyIHRoYW4gbmVlZGVkLCBhbmQgdGhlIGtlcm5lbCBkb2Vzbid0IGxpa2UgaXQgaWYgd2Ugc2V0Ci0rICAgICAqIG1zZ19jb250cm9sbGVuIHRvIGEgbGFyZ2VyIHRoYW4gbmVjZXNzYXJ5IHZhbHVlLiBUaGUgY29tbWl0IG1lc3NhZ2UgZm9yCi0rICAgICAqIGNvbW1pdCA0NTFkMWQ2NzYyIGNvbnRhaW5zIGEgbG9uZ2VyIGV4cGxhbmF0aW9uLiAqLwotKyAgICBtaC5tc2dfY29udHJvbGxlbiA9IENNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBuZmQpOwotIAotICAgICBpZiAoKHIgPSBzZW5kbXNnKGlvLT5vZmQsICZtaCwgTVNHX05PU0lHTkFMKSkgPj0gMCkgewotICAgICAgICAgaW8tPndyaXRhYmxlID0gaW8tPmh1bmd1cCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTM0YWZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgcHVsc2VhdWRpby5pbmMKLQotU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGFkc3AtTWFrZS1pdC1jb21waWxlLW9uLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B1bHNlYXVkaW8tZGlzY3Vzcy1pb2NoYW5uZWwtZG9uLXQtdXNlLXZhcmlhYmxlLWxlbmd0aC1hcnJheS1pbi11bmlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfcHVsc2UgXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjQ5NTBkMjc5OWJmNTVhYjkxZjZiN2Y5OTBiN2YwOTcxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzMTg2ODI0ZGU5ZjBkMjA5NWRlZDVkMGQwZGIwNDA1ZGM3MzEzMzk4M2MyZmJiMzcyOTE1NDdlMzc0NjJmNTciCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBta2RpciAtcCAke1N9L2xpYmx0ZGwKLSAgICBjcCAke1NUQUdJTkdfTElCRElSfS9saWJsdGRsKiAke1N9L2xpYmx0ZGwKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDUzMDJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMS4xLmJiCkBAIC0wLDAgKzEsMTUgQEAKK3JlcXVpcmUgcHVsc2VhdWRpby5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGFkc3AtTWFrZS1pdC1jb21waWxlLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wNF9wdWxzZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbWZkLXdyYXBwZXJzLW9ubHktZGVmaW5lLW1lbWZkX2NyZWF0ZS1pZi1ub3QtYWxyZWEucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMzkwZGUzODIzMWQ1Y2RkNmI0M2FkYTg5MzllYjc0ZjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjI1MjFjNTI1YTc3MTY2MTg5ZTNjYjkxNjlmNzVjMmVlMmI4MmZhM2ZjZjk0NzYwMjRmYmMyYzNhNmM5Y2Q5ZSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIG1rZGlyIC1wICR7U30vbGlibHRkbAorICAgIGNwICR7U1RBR0lOR19MSUJESVJ9L2xpYmx0ZGwqICR7U30vbGlibHRkbAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMC42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNTY1ZTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiV2ViUCBpcyBhbiBpbWFnZSBmb3JtYXQgZGVzaWduZWQgZm9yIHRoZSBXZWIiCi1ERVNDUklQVElPTiA9ICJXZWJQIGlzIGEgbWV0aG9kIG9mIGxvc3N5IGFuZCBsb3NzbGVzcyBjb21wcmVzc2lvbiB0aGF0IGNhbiBiZSBcCi0gICAgICAgICAgICAgICB1c2VkIG9uIGEgbGFyZ2UgdmFyaWV0eSBvZiBwaG90b2dyYXBoaWMsIHRyYW5zbHVjZW50IGFuZCBcCi0gICAgICAgICAgICAgICBncmFwaGljYWwgaW1hZ2VzIGZvdW5kIG9uIHRoZSB3ZWIuIFRoZSBkZWdyZWUgb2YgbG9zc3kgXAotICAgICAgICAgICAgICAgY29tcHJlc3Npb24gaXMgYWRqdXN0YWJsZSBzbyBhIHVzZXIgY2FuIGNob29zZSB0aGUgdHJhZGUtb2ZmIFwKLSAgICAgICAgICAgICAgIGJldHdlZW4gZmlsZSBzaXplIGFuZCBpbWFnZSBxdWFsaXR5LiBXZWJQIHR5cGljYWxseSBhY2hpZXZlcyBcCi0gICAgICAgICAgICAgICBhbiBhdmVyYWdlIG9mIDMwJSBtb3JlIGNvbXByZXNzaW9uIHRoYW4gSlBFRyBhbmQgSlBFRyAyMDAwLCBcCi0gICAgICAgICAgICAgICB3aXRob3V0IGxvc3Mgb2YgaW1hZ2UgcXVhbGl0eS4iCi1IT01FUEFHRSA9ICJodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9zcGVlZC93ZWJwLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZThkZWU5MzJjMjZmMmRhYjUwM2FiZjcwYzk2ZDhiYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9QQVRFTlRTO21kNT1jNjkyNmQwY2IwN2QyOTZmODg2YWI2ZTBjYzVhODViNyIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxOWE2ZTkyNmFiMTcyMTI2OGRmMDMxNjFiODRiYjRhMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjOTI4MTE5MjI5ZDRmOGYzNWUyMDExM2ZmYjYxZjI4MWVkYTI2NzYzNGE4ZGMyMjg1YWY0YjBlZTI3Y2YyYjQwIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC9pbmRleC5odG1sIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZXhwZXJpbWVudGFsIFwKLSAgICAtLWRpc2FibGUtd2ljIFwKLSAgICAtLWVuYWJsZS1saWJ3ZWJwbXV4IFwKLSAgICAtLWVuYWJsZS1saWJ3ZWJwZGVtdXggXAotICAgIC0tZW5hYmxlLXRocmVhZGluZyBcCi0iCi0jIERvIG5vdCB0cnVzdCBjb25maWd1cmUgdG8gZGV0ZXJtaW5lIGlmIG5lb24gaXMgYXZhaWxhYmxlLgotIwotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm0gPSAiIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsIm5lb24iLCItLWVuYWJsZS1uZW9uIiwiLS1kaXNhYmxlLW5lb24iLGQpfSBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi0KLSMgbGlid2VicGRlY29kZXIgaXMgYSBzdWJzZXQgb2YgbGlid2VicCwgZG9uJ3QgYnVpbGQgaXQgdW5sZXNzIHJlcXVlc3RlZAotUEFDS0FHRUNPTkZJR1tkZWNvZGVyXSA9ICItLWVuYWJsZS1saWJ3ZWJwZGVjb2RlciwtLWRpc2FibGUtbGlid2VicGRlY29kZXIiCi0KLSMgQXBwbHkgZm9yIGV4YW1wbGVzIHByb2dyYW1zOiBjd2VicCBhbmQgZHdlYnAKLVBBQ0tBR0VDT05GSUdbZ2lmXSA9ICItLWVuYWJsZS1naWYsLS1kaXNhYmxlLWdpZixnaWZsaWIiCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1wbmcsLS1kaXNhYmxlLXBuZywsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLWVuYWJsZS10aWZmLC0tZGlzYWJsZS10aWZmLHRpZmYiCi0KLSMgQXBwbHkgb25seSBmb3IgZXhhbXBsZSBwcm9ncmFtIHZ3ZWJwCi1QQUNLQUdFQ09ORklHW2dsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsbWVzYS1nbHV0IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ2lmMndlYnAiCi0KLURFU0NSSVBUSU9OXyR7UE59LWdpZjJ3ZWJwID0gIlNpbXBsZSB0b29sIHRvIGNvbnZlcnQgYW5pbWF0ZWQgR0lGcyB0byBXZWJQIgotRklMRVNfJHtQTn0tZ2lmMndlYnAgPSAiJHtiaW5kaXJ9L2dpZjJ3ZWJwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMC42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlkNGQ3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMC42LjEuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJXZWJQIGlzIGFuIGltYWdlIGZvcm1hdCBkZXNpZ25lZCBmb3IgdGhlIFdlYiIKK0RFU0NSSVBUSU9OID0gIldlYlAgaXMgYSBtZXRob2Qgb2YgbG9zc3kgYW5kIGxvc3NsZXNzIGNvbXByZXNzaW9uIHRoYXQgY2FuIGJlIFwKKyAgICAgICAgICAgICAgIHVzZWQgb24gYSBsYXJnZSB2YXJpZXR5IG9mIHBob3RvZ3JhcGhpYywgdHJhbnNsdWNlbnQgYW5kIFwKKyAgICAgICAgICAgICAgIGdyYXBoaWNhbCBpbWFnZXMgZm91bmQgb24gdGhlIHdlYi4gVGhlIGRlZ3JlZSBvZiBsb3NzeSBcCisgICAgICAgICAgICAgICBjb21wcmVzc2lvbiBpcyBhZGp1c3RhYmxlIHNvIGEgdXNlciBjYW4gY2hvb3NlIHRoZSB0cmFkZS1vZmYgXAorICAgICAgICAgICAgICAgYmV0d2VlbiBmaWxlIHNpemUgYW5kIGltYWdlIHF1YWxpdHkuIFdlYlAgdHlwaWNhbGx5IGFjaGlldmVzIFwKKyAgICAgICAgICAgICAgIGFuIGF2ZXJhZ2Ugb2YgMzAlIG1vcmUgY29tcHJlc3Npb24gdGhhbiBKUEVHIGFuZCBKUEVHIDIwMDAsIFwKKyAgICAgICAgICAgICAgIHdpdGhvdXQgbG9zcyBvZiBpbWFnZSBxdWFsaXR5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3NwZWVkL3dlYnAvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlOGRlZTkzMmMyNmYyZGFiNTAzYWJmNzBjOTZkOGJiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBVEVOVFM7bWQ1PWM2OTI2ZDBjYjA3ZDI5NmY4ODZhYjZlMGNjNWE4NWI3IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImI0OWNlOWMzZTNlOWFjYWU0ZDkxYmNhNDRiYjg1YTcyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2NTAzYzc4MmQ5ZjE1MWJhYTMyNTU5MWMzNTc5YzY4ZWQ3MDBmZmM2MmQ0ZjVhMzJmZWVhZDBmZjAxN2Q4YWIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwL2luZGV4Lmh0bWwiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1leHBlcmltZW50YWwgXAorICAgIC0tZGlzYWJsZS13aWMgXAorICAgIC0tZW5hYmxlLWxpYndlYnBtdXggXAorICAgIC0tZW5hYmxlLWxpYndlYnBkZW11eCBcCisgICAgLS1lbmFibGUtdGhyZWFkaW5nIFwKKyIKKyMgRG8gbm90IHRydXN0IGNvbmZpZ3VyZSB0byBkZXRlcm1pbmUgaWYgbmVvbiBpcyBhdmFpbGFibGUuCisjCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybSA9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIi0tZW5hYmxlLW5lb24iLCItLWRpc2FibGUtbmVvbiIsZCl9IFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKKworIyBsaWJ3ZWJwZGVjb2RlciBpcyBhIHN1YnNldCBvZiBsaWJ3ZWJwLCBkb24ndCBidWlsZCBpdCB1bmxlc3MgcmVxdWVzdGVkCitQQUNLQUdFQ09ORklHW2RlY29kZXJdID0gIi0tZW5hYmxlLWxpYndlYnBkZWNvZGVyLC0tZGlzYWJsZS1saWJ3ZWJwZGVjb2RlciIKKworIyBBcHBseSBmb3IgZXhhbXBsZXMgcHJvZ3JhbXM6IGN3ZWJwIGFuZCBkd2VicAorUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0tZW5hYmxlLWdpZiwtLWRpc2FibGUtZ2lmLGdpZmxpYiIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLCxsaWJwbmciCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKKworIyBBcHBseSBvbmx5IGZvciBleGFtcGxlIHByb2dyYW0gdndlYnAKK1BBQ0tBR0VDT05GSUdbZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCxtZXNhLWdsdXQiCisKK1BBQ0tBR0VTID0rICIke1BOfS1naWYyd2VicCIKKworREVTQ1JJUFRJT05fJHtQTn0tZ2lmMndlYnAgPSAiU2ltcGxlIHRvb2wgdG8gY29udmVydCBhbmltYXRlZCBHSUZzIHRvIFdlYlAiCitGSUxFU18ke1BOfS1naWYyd2VicCA9ICIke2JpbmRpcn0vZ2lmMndlYnAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0L2Rvbi10LWRlZmF1bHQtdG8tY29ydGV4LWE5LXdpdGgtbmVvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvZG9uLXQtZGVmYXVsdC10by1jb3J0ZXgtYTktd2l0aC1uZW9uLnBhdGNoCmluZGV4IDczZjJhYWMuLjA2NWUzYjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvZG9uLXQtZGVmYXVsdC10by1jb3J0ZXgtYTktd2l0aC1uZW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvZG9uLXQtZGVmYXVsdC10by1jb3J0ZXgtYTktd2l0aC1uZW9uLnBhdGNoCkBAIC0xLDIwICsxLDMzIEBACi0tbWFyY2ggZmxhZyBpcyBub3QgaW4gQ0ZMQUdTIHNvIHRoaXMgd2lsbCBhbHdheXMgZGVmYXVsdCB0byAtbWNwdT1jb3J0ZXgtYTgKLS1tZnB1PW5lb24uCitGcm9tIGE3MmJmNDk5YTA2NzRmYzc1ZWVkZjE1MDA4YjQyNGUyOGY2N2U0YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CitEYXRlOiBGcmksIDIgRmViIDIwMTggMTU6MTA6MDggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZG9udCBkZWZhdWx0IHRvIGNvcnRleC1hOSB3aXRoIG5lb24KKworLW1hcmNoIGZsYWcgaXMgbm90IGluIENGTEFHUyBzbyB0aGlzIHdpbGwgYWx3YXlzIGRlZmF1bHQgdG8KKyAtbWNwdT1jb3J0ZXgtYTggLW1mcHU9bmVvbi4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgY29uZmlndXJlIHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggOWQxNTg2Yy4uMzEwOWVjNCAxMDA3NTUKK2luZGV4IDBlM2VmMjMuLjk1NWI5OTMgMTAwNzU1CiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQotQEAgLTg3NCw5ICs4NzQsNiBAQCBpZiBbICRhc20gPSBhdXRvIC1hIFwoICRBUkNIID0gWDg2IC1vICRBUkNIID0gWDg2XzY0IFwpIF0gOyB0aGVuCitAQCAtOTExLDkgKzkxMSw2IEBAIGlmIFsgJGFzbSA9IGF1dG8gLWEgXCggJEFSQ0ggPSBYODYgLW8gJEFSQ0ggPSBYODZfNjQgXCkgXSA7IHRoZW4KICBmaQogIAogIGlmIFsgJGFzbSA9IGF1dG8gLWEgJEFSQ0ggPSBBUk0gXSA7IHRoZW4KIC0gICAgIyBzZXQgZmxhZ3Mgc28gbmVvbiBpcyBidWlsdCBieSBkZWZhdWx0Ci0tICAgIGVjaG8gJENGTEFHUyB8IGdyZXAgLUVxICcoLW1jcHV8LW1hcmNofC1tZnB1KScgfHwgQ0ZMQUdTPSIkQ0ZMQUdTIC1tY3B1PWNvcnRleC1hOCAtbWZwdT1uZW9uIgorLSAgICBbICRjb21waWxlciA9PSBDTCBdIHx8IGVjaG8gJENGTEFHUyB8IGdyZXAgLUVxICcoLW1jcHV8LW1hcmNofC1tZnB1KScgfHwgQ0ZMQUdTPSIkQ0ZMQUdTIC1tY3B1PWNvcnRleC1hOCAtbWZwdT1uZW9uIgogLQotICAgICBpZiAgY2NfY2hlY2sgJycgJycgJ19fYXNtX18oInJldiBpcCwgaXAiKTsnIDsgdGhlbiAgICAgIGRlZmluZSBIQVZFX0FSTVY2Ci0gICAgICAgICBjY19jaGVjayAnJyAnJyAnX19hc21fXygibW92dCByMCwgIzAiKTsnICAgICAgICAgJiYgZGVmaW5lIEhBVkVfQVJNVjZUMgotICAgICAgICAgY2NfY2hlY2sgJycgJycgJ19fYXNtX18oInZhZGQuaTE2IHEwLCBxMCwgcTAiKTsnICYmIGRlZmluZSBIQVZFX05FT04KKyAgICAgY2NfY2hlY2sgJycgJycgJ19fYXNtX18oImFkZCByMCwgcjEsIHIyIik7JyAmJiBkZWZpbmUgSEFWRV9BUk1fSU5MSU5FX0FTTQorICAgICBpZiBbICRjb21waWxlciA9IENMIF0gJiYgY3BwX2NoZWNrICcnICcnICdkZWZpbmVkKF9NX0FSTSkgJiYgX01fQVJNID49IDcnIDsgdGhlbgorICAgICAgICAgZGVmaW5lIEhBVkVfQVJNVjYKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgppbmRleCBjNTQ3NmM3Li5jNDQ1ZDE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgpAQCAtNiwxNyArNiwxNyBAQAogTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCiAKLURFUEVORFMgPSAieWFzbS1uYXRpdmUiCitERVBFTkRTID0gIm5hc20tbmF0aXZlIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWlycm9yL3gyNjQ7YnJhbmNoPXN0YWJsZSBcCiAgICAgICAgICAgIGZpbGU6Ly9kb24tdC1kZWZhdWx0LXRvLWNvcnRleC1hOS13aXRoLW5lb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vRml4LVgzMi1idWlsZC1ieS1kaXNhYmxpbmctYXNtLnBhdGNoIFwKICAgICAgICAgICAgIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKLVNSQ1JFViA9ICIyYjc0MWY4MWU1MWY5MmQwNTNkODdhNDlmNTlmZjEwMjY1NTNhMGY2IgorU1JDUkVWID0gImU5YTU5MDNlZGY4Y2E1OWVmMjBlNmY0ODk0YzE5NmYxMzVhZjczNWUiCiAKLVBWID0gInIyNzMxK2dpdCR7U1JDUFZ9IgorUFYgPSAicjI4NTQrZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTQzLDYgKzQzLDggQEAKICAgICAgICAgICAgICAgICcKIAogZG9fY29uZmlndXJlKCkgeworICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5zdWIgJHtTfQogICAgIC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L2ltYWdlcy9jb3JlLWltYWdlLXJ0LXNkay5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiCmluZGV4IDdjMWU1YmYuLjBmN2YwOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiCkBAIC01LDcgKzUsNyBAQAogIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMuCiBweXRob24gKCkgewogICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCiB9CiAKIERFU0NSSVBUSU9OID0gIlNtYWxsIGltYWdlIGNhcGFibGUgb2YgYm9vdGluZyBhIGRldmljZSB3aXRoIGEgdGVzdCBzdWl0ZSBhbmQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9pbWFnZXMvY29yZS1pbWFnZS1ydC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQuYmIKaW5kZXggZDhiYjA0YS4uOWNiOTNiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9pbWFnZXMvY29yZS1pbWFnZS1ydC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L2ltYWdlcy9jb3JlLWltYWdlLXJ0LmJiCkBAIC01LDcgKzUsNyBAQAogIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMuCiBweXRob24gKCkgewogICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCiB9CiAKIERFU0NSSVBUSU9OID0gIkEgc21hbGwgaW1hZ2UganVzdCBjYXBhYmxlIG9mIGFsbG93aW5nIGEgZGV2aWNlIHRvIGJvb3QgcGx1cyBhIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvaHdsYXRkZXRlY3RfMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8xLjEuYmIKaW5kZXggMDEyYjJkZC4uNWY2MWM0ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8xLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8xLjEuYmIKQEAgLTIyLDUgKzIyLDUgQEAKIH0KIAogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vZGlzdC1wYWNrYWdlcy9od2xhdGRldGVjdC5weSIKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMgcHl0aG9uMy1zdWJwcm9jZXNzIHB5dGhvbjMtdGV4dHV0aWxzIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlICIKIFJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtaHdsYXQtZGV0ZWN0b3IiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCmluZGV4IDQzMzZjNTAuLjQ5NmYwNGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCkBAIC0yNiw2ICsyNiw2IEBACiAgICAgICAgIGNwICR7V09SS0RJUn0vcnRfYm1hcmsucHkgJHtEfSR7UFRFU1RfUEFUSH0KIH0KIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBzdHJlc3MgcHl0aG9uMyBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1tdWx0aXByb2Nlc3NpbmcgcHl0aG9uMy1kYXRldGltZSBweXRob24zLXJlIHB5dGhvbjMtbGFuZyBweXRob24zLW1pc2MiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIHN0cmVzcyBweXRob24zIHB5dGhvbjMtbXVsdGlwcm9jZXNzaW5nIHB5dGhvbjMtZGF0ZXRpbWUgcHl0aG9uMy1taXNjIgogCiBGSUxFU18ke1BOfSArPSAiJHtwcmVmaXh9L3NyYy9iYWNrZmlyZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKaW5kZXggOTdjY2VkNy4uMjI0NDI4ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKQEAgLTQ2LDcgKzQ2LDcgQEAKIFNVTU1BUllfJHtQTn0tYXBwcyA9ICJTYXRvIGRlc2t0b3AgLSBhcHBsaWNhdGlvbnMiCiBSREVQRU5EU18ke1BOfS1hcHBzID0gIlwKICAgICBsM2FmcGFkIFwKLSAgICBnc3QtcGxheWVyIFwKKyAgICBnc3QtZXhhbXBsZXMgXAogICAgIG1hdGNoYm94LXRlcm1pbmFsIFwKICAgICBzYXRvLXNjcmVlbnNob3QgXAogICAgICR7RklMRU1BTkFHRVJ9IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGNtYW5mbS9wY21hbmZtXzEuMi41LmJiCmluZGV4IDc1ZmY3NzMuLjQxMjdhMDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4yLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjIuNS5iYgpAQCAtOSw5ICs5LDYgQEAKIFNFQ1RJT04gPSAieDExIgogREVQRU5EUyA9ICJndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiBsaWJmbSBpbnRsdG9vbC1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgogCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFhcmNoNjQuKnxhcm0uKnxtaXBzLip8cG93ZXJwYy4qfHNoLiopLShsaW51eHxmcmVlYnNkLiopJwotCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wY21hbmZtL3BjbWFuZm0tJHtQVn0udGFyLnh6IFwKIAkgICBmaWxlOi8vZ25vbWUtZnMtZGlyZWN0b3J5LnBuZyBcCiAJICAgZmlsZTovL2dub21lLWZzLXJlZ3VsYXIucG5nIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtQ2xhcmlmeS1jb25kaXRpb25zLXRvLWF2b2lkLWNvbXBpbGVyLWVycm9ycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtQ2xhcmlmeS1jb25kaXRpb25zLXRvLWF2b2lkLWNvbXBpbGVyLWVycm9ycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlhYTE1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLUNsYXJpZnktY29uZGl0aW9ucy10by1hdm9pZC1jb21waWxlci1lcnJvcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDcyZjJlOTA0M2VmNTA5OTkyZGZhNjE3OTE2MzhkYjg3YmYwYWUzN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA2IERlYyAyMDE2IDAxOjIwOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIENsYXJpZnkgY29uZGl0aW9ucyB0byBhdm9pZCBjb21waWxlciBlcnJvcnMKLQotRml4IGVycm9ycyBwb2ludGVkIG91dCBieSBjbGFuZwotCi1lcnJvcjogbG9naWNhbCBub3QgaXMgb25seSBhcHBsaWVkIHRvIHRoZSBsZWZ0IGhhbmQgc2lkZSBvZiB0aGlzIGJpdHdpc2Ugb3BlcmF0b3IgWy1XZXJyb3IsLVdsb2dpY2FsLW5vdC1wYXJlbnRoZXNlc10KLXwgICAgICAgICBpZiAob25seV9pbW11dGFibGUgJiYgIWNvcHktPmZsYWdzW2ldICYgRkxBR19JTU1VVEFCTEUpIGNvbnRpbnVlOwotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBzaWducG9zdC5jIHwgMiArLQotIHRyYWNrcy5jICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zaWducG9zdC5jIGIvc2lnbnBvc3QuYwotaW5kZXggYWEyZTEzYS4uMmUyZGZmMiAxMDA2NDQKLS0tLSBhL3NpZ25wb3N0LmMKLSsrKyBiL3NpZ25wb3N0LmMKLUBAIC0yODQsNyArMjg0LDcgQEAgc3RhdGljIGludCBjaGVja19udW1zKGdhbWVfc3RhdGUgKm9yaWcsIGdhbWVfc3RhdGUgKmNvcHksIGludCBvbmx5X2ltbXV0YWJsZSkKLSAgICAgaW50IGksIHJldCA9IDE7Ci0gICAgIGFzc2VydChjb3B5LT5uID09IG9yaWctPm4pOwotICAgICBmb3IgKGkgPSAwOyBpIDwgY29weS0+bjsgaSsrKSB7Ci0tICAgICAgICBpZiAob25seV9pbW11dGFibGUgJiYgIWNvcHktPmZsYWdzW2ldICYgRkxBR19JTU1VVEFCTEUpIGNvbnRpbnVlOwotKyAgICAgICAgaWYgKG9ubHlfaW1tdXRhYmxlICYmICEoY29weS0+ZmxhZ3NbaV0gJiBGTEFHX0lNTVVUQUJMRSkpIGNvbnRpbnVlOwotICAgICAgICAgYXNzZXJ0KGNvcHktPm51bXNbaV0gPj0gMCk7Ci0gICAgICAgICBhc3NlcnQoY29weS0+bnVtc1tpXSA8PSBjb3B5LT5uKTsKLSAgICAgICAgIGlmIChjb3B5LT5udW1zW2ldICE9IG9yaWctPm51bXNbaV0pIHsKLWRpZmYgLS1naXQgYS90cmFja3MuYyBiL3RyYWNrcy5jCi1pbmRleCA1YjI3MzUwLi5jYTQ0Y2UxIDEwMDY0NAotLS0tIGEvdHJhY2tzLmMKLSsrKyBiL3RyYWNrcy5jCi1AQCAtMTA3Miw3ICsxMDcyLDcgQEAgc3RhdGljIGludCBzb2x2ZV9jaGVja19zaW5nbGVfc3ViKGdhbWVfc3RhdGUgKnN0YXRlLCBpbnQgc2ksIGludCBpZCwgaW50IG4sCi0gICAgICAgICB4ID0gaSV3OwotICAgICAgICAgeSA9IGkvdzsKLSAgICAgICAgIGlmIChhYnMob3gteCkgPiAxIHx8IGFicyhveS15KSA+IDEpIHsKLS0gICAgICAgICAgICBpZiAoIXN0YXRlLT5zZmxhZ3NbaV0gJiBTX1RSQUNLKQotKyAgICAgICAgICAgIGlmICghKHN0YXRlLT5zZmxhZ3NbaV0gJiBTX1RSQUNLKSkKLSAgICAgICAgICAgICAgICAgZGlkICs9IHNvbHZlX3NldF9zZmxhZyhzdGF0ZSwgeCwgeSwgU19OT1RSQUNLLCB3aGF0KTsKLSAgICAgICAgIH0KLSAgICAgfQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCmluZGV4IGRlY2QyYTguLmJmZDgxNzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCkBAIC03LDE4ICs3LDE3IEBACiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTMzYmNkNGJjZThmM2MxOTdmMmFlZmJkYmQyZDI5OWJjIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZGE2MTEwZDRlZDEyMjVhMjg3ZWFiMmJmMGFjMDE5M2IiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnRhcnRhcnVzLm9yZy9zaW1vbi9wdXp6bGVzLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wYWxpc2FkZS1GaXgtd2FybmluZ3Mtd2l0aC1jbGFuZy1vbi1hcm0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1DbGFyaWZ5LWNvbmRpdGlvbnMtdG8tYXZvaWQtY29tcGlsZXItZXJyb3JzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLVduby1lcnJvci1mb3JtYXQtb3ZlcmZsb3ctaWYtdGhlLWNvbXBpbGVyLXN1cHBvci5wYXRjaCBcCiAgICAgICAgICAgICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgotU1JDUkVWID0gIjhkZmU1Y2VjMzFlNzg0ZTRlY2UyOTU1ZWNjOGNjMzVlZTdlOGZiYjMiCi1QRSA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgorU1JDUkVWID0gIjJhZGYwMDUyZDY2ZWFlODhjN2E1ZTU1ZTY3ZmUxNmUxM2Y3MDE4YjUiCitQRSA9ICIyIgogUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3J4dnQtdW5pY29kZS9yeHZ0LXVuaWNvZGUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3J4dnQtdW5pY29kZS9yeHZ0LXVuaWNvZGUuaW5jCmluZGV4IDRkNWRhYTYuLmI1NjhmMDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9yeHZ0LXVuaWNvZGUvcnh2dC11bmljb2RlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcnh2dC11bmljb2RlL3J4dnQtdW5pY29kZS5pbmMKQEAgLTEyLDcgKzEyLDcgQEAKIAkgICBmaWxlOi8vcnh2dC5kZXNrdG9wIFwKIAkgICBmaWxlOi8vcnh2dC5wbmciCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKIFBST1ZJREVTID0gInZpcnR1YWwveC10ZXJtaW5hbC1lbXVsYXRvciIKIEFMVEVSTkFUSVZFXyR7UE59ID0gIngtdGVybWluYWwtZW11bGF0b3IiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vc2V0dGluZ3MtZGFlbW9uL3NldHRpbmdzLWRhZW1vbl8wLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vc2V0dGluZ3MtZGFlbW9uXzAuMC4yLmJiCmluZGV4IGNlYWVjY2EuLmJiNmI2OWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vc2V0dGluZ3MtZGFlbW9uXzAuMC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vc2V0dGluZ3MtZGFlbW9uXzAuMC4yLmJiCkBAIC0xMCw3ICsxMCw3IEBACiAjIFNSQ1JFViB0YWdnZWQgMC4wLjIKIFNSQ1JFViA9ICJiMmU1ZGE1MDJmOGM1ZmY3NWU5ZTZkYTc3MTM3MmVmOGU0MGZkOWEyIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy94c2V0dGluZ3MtZGFlbW9uIFwKLSAgICAgICAgICAgZmlsZTovL2FkZHNvdW5ka2V5cy5wYXRjaDthcHBseT15ZXMgXAorICAgICAgICAgICBmaWxlOi8vYWRkc291bmRrZXlzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzcwc2V0dGluZ3MtZGFlbW9uLnNoIFwKICAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1nbGVzMy1oZWFkZXItd2hlbi1nbGVzMi1pcy1lbmFibGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtZ2xlczMtaGVhZGVyLXdoZW4tZ2xlczItaXMtZW5hYmxlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTU3NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtZ2xlczMtaGVhZGVyLXdoZW4tZ2xlczItaXMtZW5hYmxlZC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGFkZjNkNGM5ZDQxMzNiZDY5OTU1OTBkOTIxYzBjY2FlYzUyNTRkYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCaGFyZ2F2YSBTcmVla2FudGFwcGEgR2F5YXRocmkKKyA8YmhhcmdhdmEuc3JlZWthbnRhcHBhLWdheWF0aHJpQHhpbGlueC5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDE2OjA5OjMxIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBnbGVzMyBoZWFkZXIgd2hlbiBnbGVzMiBpcyBlbmFibGVkCisKK0EgR0xFUyAyIGFwcGxpY2F0aW9uIHNob3VsZCBub3QgdXNlIGdsMy5oLgorRml4IHRoZSBnbGVzMyBoZWFkZXIgZmFpbHVyZSB3aGlsZSBjb21waWxpbmcgd2Via2l0Z3RrLgorCitGQUlMRUQ6CitTb3VyY2UvV2ViQ29yZS9DTWFrZUZpbGVzL1dlYkNvcmUuZGlyL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAubworICAgICAgICAgICBefn5+fn5+fn5+fn5+Citjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitJbXBvcnRlZCBwYXRjaCBmcm9tOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDA4CisKK1NpZ25lZC1vZmYtYnk6IEJoYXJnYXZhIFNyZWVrYW50YXBwYSBHYXlhdGhyaSA8YmhhcmdhdmEuc3JlZWthbnRhcHBhLWdheWF0aHJpQHhpbGlueC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYW5qdWt1bWFyIE1hdGhhIDxtYW5qdWt1bWFyLmhhcnRoaWtvdGUtbWF0aGFAeGlsaW54LmNvbT4KKy0tLQorIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKK2luZGV4IDU5OWRjYzAuLjQ2ZDJmZDQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisrKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCitAQCAtMzEsNyArMzEsNiBAQAorICNlbGlmIFVTRShPUEVOR0xfRVNfMikKKyAjZGVmaW5lIEdMX0dMRVhUX1BST1RPVFlQRVMgMQorICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKy0jaW5jbHVkZSA8R0xFUzMvZ2wzLmg+CisgI2VuZGlmCisKKyAjaWYgVVNFKEdMWCkKKy0tCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVdlYktpdE1hY3Jvcy1BcHBlbmQtdG8tSS1hbmQtbm90LXRvLWlzeXN0ZW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVdlYktpdE1hY3Jvcy1BcHBlbmQtdG8tSS1hbmQtbm90LXRvLWlzeXN0ZW0ucGF0Y2gKaW5kZXggZGZkYzExNi4uOWZjMTQyMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1XZWJLaXRNYWNyb3MtQXBwZW5kLXRvLUktYW5kLW5vdC10by1pc3lzdGVtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaApAQCAtMTYsNiArMTYsNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KICBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSAgICAgICAgICAgfCA2ICsrKy0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC42LmJiCmluZGV4IDlmYWMwNDQuLmMyOWZhN2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTguNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjE4LjYuYmIKQEAgLTIxLDYgKzIxLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4LWNvbmZpZ3VyZS1mYWlsdXJlLWFhcmNoNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtZ2xlczMtaGVhZGVyLXdoZW4tZ2xlczItaXMtZW5hYmxlZC5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImMxYTU0ODU5NTEzNWVlNzVhZDNiZjJlMThhYzgzMTEyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0OGQxOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLVNVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgY29tcGFuaW9uIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJhcHIgZXhwYXQgZ2RibSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xNThhYTBiMWVmZTBjMTJmMjNkNGIwMDdkZGI5YTVkYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2FwdV92ZXJzaW9uLmg7ZW5kbGluZT0xNzttZDU9ODA2Njg1YTg0ZTcxZjEwYzgwMTQ0YzQ4ZWIzNWRmNDIiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWdmaXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYjAzZGJmZjYwNzI4YTRmNGMzM2Y1ZDkyOWU4YjM1YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODNlZjRkNTllNmFjOWEzNmM3ZDNmZDg3YWQ3YjlkYjdhZDhhZTI5YzA2YjlkZDhmZjIyZGRhMWNjNDE2Mzg5IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXCAKLQkJLS13aXRob3V0LW9kYmMgXAotCQktLXdpdGhvdXQtcGdzcWwgXAotCQktLXdpdGgtZGJtPWdkYm0gXAotCQktLXdpdGgtZ2RibT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLQkJLS13aXRob3V0LXNxbGl0ZTIgXAotCQktLXdpdGgtZXhwYXQ9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSIKLQotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcKLQotUFIgPSAicjEiCi0KLU9FX0JJTkNPTkZJR19FWFRSQV9NQU5HTEUgPSAiIC1lICdzOmxvY2F0aW9uPXNvdXJjZTpsb2NhdGlvbj1pbnN0YWxsZWQ6JyIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlpZiBbICIke0NMQVNTT1ZFUlJJREV9IiA9ICJjbGFzcy10YXJnZXQiIF07IHRoZW4KLQkJY3AgJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci9hcHJfcnVsZXMubWsgJHtCfS9idWlsZC9ydWxlcy5tawotCWZpCi19Ci1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JbWtkaXIgJHtCfS9idWlsZAotCWNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYXByL2Fwcl9ydWxlcy5tayAke0J9L2J1aWxkL3J1bGVzLm1rCi19Ci1kb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlzZWQgLWkgInMjTElCVE9PTD1cJChTSEVMTCkgXCQoYXByX2J1aWxkZGlyKSNMSUJUT09MPVwkKFNIRUxMKSAke1NUQUdJTkdfQklORElSX05BVElWRX0jIiAke0J9L2J1aWxkL3J1bGVzLm1rCi0JIyBzb21ldGltZXMgdGhlcmUgaXNuJ3QgU0hFTEwKLQlzZWQgLWkgInMjTElCVE9PTD1cJChhcHJfYnVpbGRkaXIpI0xJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IyIgJHtCfS9idWlsZC9ydWxlcy5tawotfQotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY3AgJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci9hcHJfcnVsZXMubWsgJHtTfS9idWlsZC9ydWxlcy5tawotfQotCi1kb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQlzZWQgLWkgInMjXChhcHJfYnVpbGRkaXJcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlzZWQgLWkgInMjXChhcHJfYnVpbGRlcnNcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlzZWQgLWkgInMjXCh0b3BfYnVpbGRkaXJcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlzZWQgLWkgInMjXChMSUJUT09MPVwkKGFwcl9idWlsZGRpcilcKS4qI1wxL2xpYnRvb2wjIiAke0J9L2J1aWxkL3J1bGVzLm1rCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAotCSAgICAgICAtZSAncyxBUFVfU09VUkNFX0RJUj0uKixBUFJfU09VUkNFX0RJUj0sZycgXAotCSAgICAgICAtZSAncyxBUFVfQlVJTERfRElSPS4qLEFQUl9CVUlMRF9ESVI9LGcnICR7RH0ke2JpbmRpcn0vYXB1LTEtY29uZmlnCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJjcnlwdG8iCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tjcnlwdG9dID0gIi0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gLS13aXRoLWNyeXB0bywtLXdpdGhvdXQtY3J5cHRvLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0td2l0aC1zcWxpdGUzPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LXNxbGl0ZTMsc3FsaXRlMyIKLQotI2ZpbGVzICR7bGliZGlyfS9hcHItdXRpbC0xLyouc28gYXJlIG5vdCBzeW1saW5rcyBidXQgbG9hZGFibGUgbW9kdWxlcyB0aHVzIHRoZXkgYXJlIHBhY2thZ2VkIGluICR7UE59Ci1GSUxFU18ke1BOfSAgICAgKz0gIiR7bGliZGlyfS9hcHItdXRpbC0xL2Fwcioke1NPTElCU30gJHtsaWJkaXJ9L2Fwci11dGlsLTEvYXByKiR7U09MSUJTREVWfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2FwcnV0aWwuZXhwICR7bGliZGlyfS9hcHItdXRpbC0xLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9hcHItdXRpbC0xLyouYSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyIKLQotaW5oZXJpdCBwdGVzdAotCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIGdsaWJjLWdjb252LWlzbzg4NTktMiBnbGliYy1nY29udi11dGYtNyIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQljZCAke0J9L3Rlc3QKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JdD0ke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JbWtkaXIgJHQKLQlmb3IgaSBpbiB0ZXN0YWxsIGRhdGE7IGRvIFwKLQkgIGNwIC1yICR7Qn0vdGVzdC8kaSAkdDsgXAotCWRvbmUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YjQzMDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4xLmJiCkBAIC0wLDAgKzEsOTMgQEAKK1NVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgY29tcGFuaW9uIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJhcHIgZXhwYXQgZ2RibSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xNThhYTBiMWVmZTBjMTJmMjNkNGIwMDdkZGI5YTVkYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2FwdV92ZXJzaW9uLmg7ZW5kbGluZT0xNzttZDU9ODA2Njg1YTg0ZTcxZjEwYzgwMTQ0YzQ4ZWIzNWRmNDIiCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWdmaXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZDUwMmI5YTg2NzBhODAxMmM0ZDkwYzMxYTg0OTU1ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNjVlNDA3MTNkYTU3ZDAwNDEyM2I2MzE5ODI4YmU3ZjEyNzNmYmM2NDkwZTE0NTg3NGVlMTE3N2UxMTJjNDU5IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXCAKKwkJLS13aXRob3V0LW9kYmMgXAorCQktLXdpdGhvdXQtcGdzcWwgXAorCQktLXdpdGgtZGJtPWdkYm0gXAorCQktLXdpdGgtZ2RibT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKKwkJLS13aXRob3V0LXNxbGl0ZTIgXAorCQktLXdpdGgtZXhwYXQ9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSIKKworCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcKKworT0VfQklOQ09ORklHX0VYVFJBX01BTkdMRSA9ICIgLWUgJ3M6bG9jYXRpb249c291cmNlOmxvY2F0aW9uPWluc3RhbGxlZDonIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCWlmIFsgIiR7Q0xBU1NPVkVSUklERX0iID0gImNsYXNzLXRhcmdldCIgXTsgdGhlbgorCQljcCAke1NUQUdJTkdfREFUQURJUn0vYXByL2Fwcl9ydWxlcy5tayAke0J9L2J1aWxkL3J1bGVzLm1rCisJZmkKK30KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlta2RpciAke0J9L2J1aWxkCisJY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hcHIvYXByX3J1bGVzLm1rICR7Qn0vYnVpbGQvcnVsZXMubWsKK30KK2RvX2NvbmZpZ3VyZV9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCXNlZCAtaSAicyNMSUJUT09MPVwkKFNIRUxMKSBcJChhcHJfYnVpbGRkaXIpI0xJQlRPT0w9XCQoU0hFTEwpICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKKwkjIHNvbWV0aW1lcyB0aGVyZSBpc24ndCBTSEVMTAorCXNlZCAtaSAicyNMSUJUT09MPVwkKGFwcl9idWlsZGRpcikjTElCVE9PTD0ke1NUQUdJTkdfQklORElSX05BVElWRX0jIiAke0J9L2J1aWxkL3J1bGVzLm1rCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcCAke1NUQUdJTkdfREFUQURJUn0vYXByL2Fwcl9ydWxlcy5tayAke1N9L2J1aWxkL3J1bGVzLm1rCit9CisKK2RvX2NvbmZpZ3VyZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCXNlZCAtaSAicyNcKGFwcl9idWlsZGRpclwpPS4qI1wxPSR7U1RBR0lOR19EQVRBRElSfS9idWlsZC0xIyIgJHtCfS9idWlsZC9ydWxlcy5taworCXNlZCAtaSAicyNcKGFwcl9idWlsZGVyc1wpPS4qI1wxPSR7U1RBR0lOR19EQVRBRElSfS9idWlsZC0xIyIgJHtCfS9idWlsZC9ydWxlcy5taworCXNlZCAtaSAicyNcKHRvcF9idWlsZGRpclwpPS4qI1wxPSR7U1RBR0lOR19EQVRBRElSfS9idWlsZC0xIyIgJHtCfS9idWlsZC9ydWxlcy5taworCXNlZCAtaSAicyNcKExJQlRPT0w9XCQoYXByX2J1aWxkZGlyKVwpLiojXDEvbGlidG9vbCMiICR7Qn0vYnVpbGQvcnVsZXMubWsKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCXNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyBcCisJICAgICAgIC1lICdzLEFQVV9TT1VSQ0VfRElSPS4qLEFQUl9TT1VSQ0VfRElSPSxnJyBcCisJICAgICAgIC1lICdzLEFQVV9CVUlMRF9ESVI9LiosQVBSX0JVSUxEX0RJUj0sZycgJHtEfSR7YmluZGlyfS9hcHUtMS1jb25maWcKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gImNyeXB0byIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCitQQUNLQUdFQ09ORklHW2NyeXB0b10gPSAiLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSAtLXdpdGgtY3J5cHRvLC0td2l0aG91dC1jcnlwdG8sb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS13aXRoLXNxbGl0ZTM9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSwtLXdpdGhvdXQtc3FsaXRlMyxzcWxpdGUzIgorCisjZmlsZXMgJHtsaWJkaXJ9L2Fwci11dGlsLTEvKi5zbyBhcmUgbm90IHN5bWxpbmtzIGJ1dCBsb2FkYWJsZSBtb2R1bGVzIHRodXMgdGhleSBhcmUgcGFja2FnZWQgaW4gJHtQTn0KK0ZJTEVTXyR7UE59ICAgICArPSAiJHtsaWJkaXJ9L2Fwci11dGlsLTEvYXByKiR7U09MSUJTfSAke2xpYmRpcn0vYXByLXV0aWwtMS9hcHIqJHtTT0xJQlNERVZ9IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vYXBydXRpbC5leHAgJHtsaWJkaXJ9L2Fwci11dGlsLTEvKi5sYSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2Fwci11dGlsLTEvKi5hIgorCitJTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIgorCitpbmhlcml0IHB0ZXN0CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1nY29udi1pc284ODU5LTEgZ2xpYmMtZ2NvbnYtaXNvODg1OS0yIGdsaWJjLWdjb252LXV0Zi03IgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCWNkICR7Qn0vdGVzdAorCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlta2RpciAkdAorCWZvciBpIGluIHRlc3RhbGwgZGF0YTsgZG8gXAorCSAgY3AgLXIgJHtCfS90ZXN0LyRpICR0OyBcCisJZG9uZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWU5MmFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLUZyb20gZjI2ZThiODhkMmM5MGVkN2ViOWQ0ZTI3NjQxMmIwOTIzYzIzZDEwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE0IERlYyAyMDE2IDE4OjEzOjA4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFwcjogZml4IG9mZl90IHNpemUgZG9lc24ndCBtYXRjaCBpbiBnbGliYyB3aGVuIGNyb3NzCi0gY29tcGlsaW5nCi0KLUluIGNvbmZpZ3VyZS5pbiwgaXQgY29udGFpbnMgdGhlIGZvbGxvd2luZzoKLQotCUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBvZmZfdCwgOCkKLQotdGhlIG1hY3JvICJBUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEIiB3YXMgZGVmaW5lZCBpbiBidWlsZC9hcHJfY29tbW9uLm00LAotaXQgdXNlIHRoZSAiQUNfVFJZX1JVTiIgbWFjcm8sIHRoaXMgbWFjcm8gbGV0IHRoZSBvZmZfdCB0byA4LCB3aGVuIGNyb3NzCi1jb21waWxpbmcgZW5hYmxlLgotCi1TbyBpdCB3YXMgaGFyZGNvZGVkIGZvciBjcm9zcyBjb21waWxpbmcsIHdlIHNob3VsZCBkZXRlY3QgaXQgZHluYW1pYyBiYXNlZCBvbgotdGhlIHN5c3Jvb3QncyBnbGliYy4gV2UgY2hhbmdlIGl0IHRvIHRoZSBmb2xsb3dpbmc6Ci0KLQlBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCi0KLVRoZSBzYW1lIGZvciB0aGUgZm9sbG93aW5nIGhhcmRjb2RlZCB0eXBlcyBmb3IgY3Jvc3MgY29tcGlsaW5nOgotCi0JcGlkX3QJOAotCXNzaXplX3QJOAotCXNpemVfdAk4Ci0Jb2ZmX3QJOAotCi1DaGFuZ2UgdGhlIGFib3ZlIGNvcnJlc3BvbmRpbmdseS4KLQotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUuaW4gfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggOWQ1N2FlNi4uNWIxOTk0MCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTY4MSw3ICsxNjgxLDcgQEAgZWxzZQotICAgICBzb2NrbGVuX3RfdmFsdWU9ImludCIKLSBmaQotIAotLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBwaWRfdCwgOCkKLStBQ19DSEVDS19TSVpFT0YocGlkX3QpCi0gCi0gaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9waWRfdCIgPSAiJGFjX2N2X3NpemVvZl9zaG9ydCI7IHRoZW4KLSAgICAgcGlkX3RfZm10PScjZGVmaW5lIEFQUl9QSURfVF9GTVQgImhkIicKLUBAIC0xNzUwLDcgKzE3NTAsNyBAQCBBUFJfQ0hFQ0tfVFlQRVNfQ09NUEFUSUJMRShzc2l6ZV90LCBsb25nLCBbc3NpemVfdF9mbXQ9ImxkIl0pCi0gQVBSX0NIRUNLX1RZUEVTX0NPTVBBVElCTEUoc2l6ZV90LCB1bnNpZ25lZCBpbnQsIFtzaXplX3RfZm10PSJ1Il0pCi0gQVBSX0NIRUNLX1RZUEVTX0NPTVBBVElCTEUoc2l6ZV90LCB1bnNpZ25lZCBsb25nLCBbc2l6ZV90X2ZtdD0ibHUiXSkKLSAKLS1BUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+XSwgc3NpemVfdCwgOCkKLStBQ19DSEVDS19TSVpFT0Yoc3NpemVfdCkKLSAKLSBBQ19NU0dfQ0hFQ0tJTkcoW3doaWNoIGZvcm1hdCB0byB1c2UgZm9yIGFwcl9zc2l6ZV90XSkKLSBpZiB0ZXN0IC1uICIkc3NpemVfdF9mbXQiOyB0aGVuCi1AQCAtMTc2Nyw3ICsxNzY3LDcgQEAgZmkKLSAKLSBzc2l6ZV90X2ZtdD0iI2RlZmluZSBBUFJfU1NJWkVfVF9GTVQgXCIkc3NpemVfdF9mbXRcIiIKLSAKLS1BUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEKFsjaW5jbHVkZSA8c3RkZGVmLmg+XSwgc2l6ZV90LCA4KQotK0FDX0NIRUNLX1NJWkVPRihzaXplX3QpCi0gCi0gQUNfTVNHX0NIRUNLSU5HKFt3aGljaCBmb3JtYXQgdG8gdXNlIGZvciBhcHJfc2l6ZV90XSkKLSBpZiB0ZXN0IC1uICIkc2l6ZV90X2ZtdCI7IHRoZW4KLUBAIC0xNzg0LDcgKzE3ODQsNyBAQCBmaQotIAotIHNpemVfdF9mbXQ9IiNkZWZpbmUgQVBSX1NJWkVfVF9GTVQgXCIkc2l6ZV90X2ZtdFwiIgotIAotLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBvZmZfdCwgOCkKLStBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCi0gCi0gaWYgdGVzdCAiJHthY19jdl9zaXplb2Zfb2ZmX3R9JHthcHJfY3ZfdXNlX2xmczY0fSIgPSAiNHllcyI7IHRoZW4KLSAgICAgIyBFbmFibGUgTEZTCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYnVpbGQtYnVpbGRjaGVjay5zaC1pbXByb3ZlLWxpYnRvb2wtZGV0ZWN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1idWlsZC1idWlsZGNoZWNrLnNoLWltcHJvdmUtbGlidG9vbC1kZXRlY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3YzE5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYnVpbGQtYnVpbGRjaGVjay5zaC1pbXByb3ZlLWxpYnRvb2wtZGV0ZWN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNGVmZGMwNmZiMTdiOGEwMGE5ZWNhOTIzY2FhMTc2YmU3NDFkMWUwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMSBGZWIgMjAxOCAxNDo1NjoxMyArMDgwMAorU3ViamVjdDogW1BBVENIIDEvN10gYnVpbGQvYnVpbGRjaGVjay5zaDogaW1wcm92ZSBsaWJ0b29sIGRldGVjdGlvbgorCitTdXBwb3J0IGN1c3RvbWl6ZSBsaWJ0b29sIGJ5IHZhcmlhYmxlIGFzc2lnbmluZywgaXQgaXMgaGVscGZ1bAorZm9yIGNyb3NzIGNvbXBpbGVpbmcgKHN1Y2ggYXMgbGlidG9vbD1hYXJjaDY0LWxpbnV4LWxpYnRvb2wpCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL2Fwci9wdWxsLzhdCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBidWlsZC9idWlsZGNoZWNrLnNoIHwgNCArKystCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGQvYnVpbGRjaGVjay5zaCBiL2J1aWxkL2J1aWxkY2hlY2suc2gKK2luZGV4IGFiNWRmNDQuLmYxOTFhNDEgMTAwNzU1CistLS0gYS9idWlsZC9idWlsZGNoZWNrLnNoCisrKysgYi9idWlsZC9idWlsZGNoZWNrLnNoCitAQCAtNDAsNyArNDAsOSBAQCBmaQorICMgb3V0cHV0IGlzIG11bHRpbGluZSBmcm9tIDEuNSBvbndhcmRzCisgCisgIyBSZXF1aXJlIGxpYnRvb2wgMS40IG9yIG5ld2VyCistbGlidG9vbD1gYnVpbGQvUHJpbnRQYXRoIGdsaWJ0b29sMSBnbGlidG9vbCBsaWJ0b29sIGxpYnRvb2wxNSBsaWJ0b29sMTRgCisraWYgdGVzdCAteiAiJGxpYnRvb2wiOyB0aGVuCisrICBsaWJ0b29sPWBidWlsZC9QcmludFBhdGggZ2xpYnRvb2wxIGdsaWJ0b29sIGxpYnRvb2wgbGlidG9vbDE1IGxpYnRvb2wxNGAKKytmaQorIGx0X3B2ZXJzaW9uPWAkbGlidG9vbCAtLXZlcnNpb24gMj4vZGV2L251bGx8c2VkIC1lICdzLyhbXildKikvL2c7cy9eW14wLTldKi8vO3MvWy0gXS4qLy9nO3EnYAorIGlmIHRlc3QgLXogIiRsdF9wdmVyc2lvbiI7IHRoZW4KKyAgIGVjaG8gImJ1aWxkY29uZjogbGlidG9vbCBub3QgZm91bmQuIgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItYXByLVJlbW92ZS13b3JrZGlyLXBhdGgtcmVmZXJlbmNlcy1mcm9tLWluc3RhbGxlZC1hcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItYXByLVJlbW92ZS13b3JrZGlyLXBhdGgtcmVmZXJlbmNlcy1mcm9tLWluc3RhbGxlZC1hcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmU3MDZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMi1hcHItUmVtb3ZlLXdvcmtkaXItcGF0aC1yZWZlcmVuY2VzLWZyb20taW5zdGFsbGVkLWFwLnBhdGNoCkBAIC0wLDAgKzEsNzQgQEAKK0Zyb20gNTkyNWIyMGRhOGJiYzM0ZDliZjVhNWRjYTEyM2VmMzg4NjRkNDNjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMzAgSmFuIDIwMTggMDk6Mzk6MDYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzddIGFwcjogUmVtb3ZlIHdvcmtkaXIgcGF0aCByZWZlcmVuY2VzIGZyb20gaW5zdGFsbGVkIGFwcgorIGZpbGVzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK1RoZSBnZW5lcmF0ZWQgYGFwci0xLWNvbmZpZycgaXMgdXNlZCBieSBvdGhlciByZWNpcGVzIGF0IGJ1aWxkIHRpbWUgb3IKK3BhY2thZ2VzIGF0IHRhcmdldCBydW4gdGltZSwgdGhlIHdvcmtkaXIgcGF0aCBjYXVzZWQgY29uZnVzaW9uLgorCitSZWJhc2UgdG8gMS42LjMKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYXByLWNvbmZpZy5pbiB8IDI2ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hcHItY29uZmlnLmluIGIvYXByLWNvbmZpZy5pbgoraW5kZXggODRiNDA3My4uYmJiZjY1MSAxMDA2NDQKKy0tLSBhL2Fwci1jb25maWcuaW4KKysrKyBiL2Fwci1jb25maWcuaW4KK0BAIC0xNTIsMTQgKzE1Miw3IEBAIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgIGZsYWdzPSIkZmxhZ3MgJExERkxBR1MiCisgICAgIDs7CisgICAgIC0taW5jbHVkZXMpCistICAgIGlmIHRlc3QgIiRsb2NhdGlvbiIgPSAiaW5zdGFsbGVkIjsgdGhlbgorICAgICAgICAgZmxhZ3M9IiRmbGFncyAtSSRpbmNsdWRlZGlyICRFWFRSQV9JTkNMVURFUyIKKy0gICAgZWxpZiB0ZXN0ICIkbG9jYXRpb24iID0gInNvdXJjZSI7IHRoZW4KKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUkkQVBSX1NPVVJDRV9ESVIvaW5jbHVkZSAkRVhUUkFfSU5DTFVERVMiCistICAgIGVsc2UKKy0gICAgICAgICMgdGhpcyBpcyBmb3IgVlBBVEggYnVpbGRzCistICAgICAgICBmbGFncz0iJGZsYWdzIC1JJEFQUl9CVUlMRF9ESVIvaW5jbHVkZSAtSSRBUFJfU09VUkNFX0RJUi9pbmNsdWRlICRFWFRSQV9JTkNMVURFUyIKKy0gICAgZmkKKyAgICAgOzsKKyAgICAgLS1zcmNkaXIpCisgICAgIGVjaG8gJEFQUl9TT1VSQ0VfRElSCitAQCAtMTgxLDI5ICsxNzQsMTQgQEAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KKyAgICAgZXhpdCAwCisgICAgIDs7CisgICAgIC0tbGluay1sZCkKKy0gICAgaWYgdGVzdCAiJGxvY2F0aW9uIiA9ICJpbnN0YWxsZWQiOyB0aGVuCistICAgICAgICAjIyMgYXZvaWQgdXNpbmcgLUwgaWYgbGliZGlyIGlzIGEgInN0YW5kYXJkIiBsb2NhdGlvbiBsaWtlIC91c3IvbGliCistICAgICAgICBmbGFncz0iJGZsYWdzIC1MJGxpYmRpciAtbCR7QVBSX0xJQk5BTUV9IgorLSAgICBlbHNlCistICAgICAgICAjIyMgdGhpcyBzdXJlbHkgY2FuJ3Qgd29yayBzaW5jZSB0aGUgbGlicmFyeSBpcyBpbiAubGlicz8KKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUwkQVBSX0JVSUxEX0RJUiAtbCR7QVBSX0xJQk5BTUV9IgorLSAgICBmaQorKyAgICAgICAgZmxhZ3M9IiRmbGFncyAtbCR7QVBSX0xJQk5BTUV9IgorICAgICA7OworICAgICAtLWxpbmstbGlidG9vbCkKKyAgICAgIyBJZiB0aGUgTEFfRklMRSBleGlzdHMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlLCB1c2UgaXQuICBJZiB3ZSdyZQorICAgICAjIGluc3RhbGxlZCBhbmQgdGhlIExBX0ZJTEUgZG9lcyBub3QgZXhpc3QsIGFzc3VtZSB0byB1c2UgLUwvLWwKKyAgICAgIyAodGhlIExBX0ZJTEUgbWF5IG5vdCBoYXZlIGJlZW4gaW5zdGFsbGVkKS4gIElmIHdlJ3JlIGJ1aWxkaW5nIG91cnNlbHZlcywKKyAgICAgIyB3ZSdsbCBhc3N1bWUgdGhhdCBhdCBzb21lIHBvaW50IHRoZSAubGEgZmlsZSBiZSBjcmVhdGVkLgorLSAgICBpZiB0ZXN0IC1mICIkTEFfRklMRSI7IHRoZW4KKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgJExBX0ZJTEUiCistICAgIGVsaWYgdGVzdCAiJGxvY2F0aW9uIiA9ICJpbnN0YWxsZWQiOyB0aGVuCistICAgICAgICAjIyMgYXZvaWQgdXNpbmcgLUwgaWYgbGliZGlyIGlzIGEgInN0YW5kYXJkIiBsb2NhdGlvbiBsaWtlIC91c3IvbGliCistICAgICAgICAjIFNpbmNlIHRoZSB1c2VyIGlzIHNwZWNpZnlpbmcgdGhleSBhcmUgbGlua2luZyB3aXRoIGxpYnRvb2wsIHdlCistICAgICAgICAjICprbm93KiB0aGF0IC1SIHdpbGwgYmUgcmVjb2duaXplZCBieSBsaWJ0b29sLgorLSAgICAgICAgZmxhZ3M9IiRmbGFncyAtTCRsaWJkaXIgLVIkbGliZGlyIC1sJHtBUFJfTElCTkFNRX0iCistICAgIGVsc2UKKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgJExBX0ZJTEUiCistICAgIGZpCisrICAgICAgICBmbGFncz0iJGZsYWdzIC1sJHtBUFJfTElCTkFNRX0iCisgICAgIDs7CisgICAgIC0tc2hsaWItcGF0aC12YXIpCisgICAgIGVjaG8gIiRTSExJQlBBVEhfVkFSIgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QwZGRkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAyLWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDk0ZDFjYTAyNjZhMGY5YzA0NDZmMTI5OWI1NGY3NTJlODdiOGE2OTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMgTWFyIDIwMTcgMjI6MjQ6MTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gZXhwbGljaXRseSBsaW5rIGxpYmFwciBhZ2FpbnN0IHBodHJlYWQgdG8gbWFrZSBnb2xkIGhhcHB5IG9uCi0gdGVzdAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9tdXRleGF0dHJfaW5pdCcKLXwgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3knCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9tdXRleF90cnlsb2NrJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfYXR0cl9zZXRzdGFja3NpemUnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9jcmVhdGUnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9qb2luJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfZGV0YWNoJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfc2lnbWFzaycKLXwgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX29uY2UnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9rZXlfY3JlYXRlJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfZ2V0c3BlY2lmaWMnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9rZXlfZGVsZXRlJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfc2V0c3BlY2lmaWMnCi18IGNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotfCBNYWtlZmlsZToxMTQ6IHJlY2lwZSBmb3IgdGFyZ2V0ICdnbG9iYWxtdXRleGNoaWxkJyBmYWlsZWQKLXwgbWFrZVsxXTogKioqIFtnbG9iYWxtdXRleGNoaWxkXSBFcnJvciAxCi18IG1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS9zdXBlcmFuZHkvdG1wL29lLWNvcmUtZ2xpYmMvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC1hbmdzdHJvbS1saW51eC1nbnVlYWJpL2Fwci8xLjUuMi1yMC9hcHItMS41LjIvdGVzdCcKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA1YjE5OTQwLi5jZGY0ZDU4IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC03NjYsNiArNzY2LDcgQEAgZWxzZQotICAgICAgICAgICBBUFJfUFRIUkVBRFNfQ0hFQ0tfUkVTVE9SRSBdICkKLSAgICAgZmkKLSAgICAgaWYgdGVzdCAiJHB0aHJlYWRoIiA9ICIxIjsgdGhlbgotKyAgICAgICAgQVBSX0FERFRPKExJQlMsWy1scHRocmVhZF0pCi0gICAgICAgICBBUFJfQ0hFQ0tfUFRIUkVBRF9HRVRTUEVDSUZJQ19UV09fQVJHUwotICAgICAgICAgQVBSX0NIRUNLX1BUSFJFQURfQVRUUl9HRVRERVRBQ0hTVEFURV9PTkVfQVJHCi0gICAgICAgICBBUFJfQ0hFQ0tfUFRIUkVBRF9SRUNVUlNJVkVfTVVURVgKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMy1NYWtlZmlsZS5pbi1jb25maWd1cmUuaW4tc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAzLU1ha2VmaWxlLmluLWNvbmZpZ3VyZS5pbi1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGQ1M2JkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMy1NYWtlZmlsZS5pbi1jb25maWd1cmUuaW4tc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSBkNTAyOGMxMGYxNTZjMjI0NDc1YjM0MGNmYjFiYTAyNWQ2Nzk3MjQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyIEZlYiAyMDE4IDE1OjUxOjQyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMy83XSBNYWtlZmlsZS5pbi9jb25maWd1cmUuaW46IHN1cHBvcnQgY3Jvc3MgY29tcGlsaW5nCisKK1doaWxlIGNyb3NzIGNvbXBpbGluZywgdGhlIHRvb2xzL2dlbl90ZXN0X2NoYXIgY291bGQgbm90CitiZSBleGVjdXRlZCBhdCBidWlsZCB0aW1lLCB1c2UgQVhfUFJPR19DQ19GT1JfQlVJTEQgdG8KK2J1aWxkIG5hdGl2ZSB0b29scy9nZW5fdGVzdF9jaGFyCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL2Fwci9wdWxsLzhdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICB8IDEwICsrKy0tLS0tLS0KKyBjb25maWd1cmUuaW4gfCAgMyArKysKKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDVmYjc2MGUuLjg2NzVmOTAgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC00Niw3ICs0Niw3IEBAIExUX1ZFUlNJT04gPSBATFRfVkVSU0lPTkAKKyAKKyBDTEVBTl9UQVJHRVRTID0gYXByLWNvbmZpZy5vdXQgYXByLmV4cCBleHBvcnRzLmMgZXhwb3J0X3ZhcnMuYyAubWFrZS5kaXJzIFwKKyAJYnVpbGQvYXByX3J1bGVzLm91dCB0b29scy9nZW5fdGVzdF9jaGFyQEVYRUVYVEAgXAorLQl0b29scy9nZW5fdGVzdF9jaGFyLm8gdG9vbHMvZ2VuX3Rlc3RfY2hhci5sbyBcCisrCXRvb2xzL2dlbl90ZXN0X2NoYXIubyBcCisgCWluY2x1ZGUvcHJpdmF0ZS9hcHJfZXNjYXBlX3Rlc3RfY2hhci5oCisgRElTVENMRUFOX1RBUkdFVFMgPSBjb25maWcuY2FjaGUgY29uZmlnLmxvZyBjb25maWcuc3RhdHVzIFwKKyAJaW5jbHVkZS9hcHIuaCBpbmNsdWRlL2FyY2gvdW5peC9hcHJfcHJpdmF0ZS5oIFwKK0BAIC0xMzEsMTMgKzEzMSw5IEBAIGNoZWNrOiAkKFRBUkdFVF9MSUIpCisgZXRhZ3M6CisgCWV0YWdzIGBmaW5kIC4gLW5hbWUgJyouW2NoXSdgCisgCistT0JKRUNUU19nZW5fdGVzdF9jaGFyID0gdG9vbHMvZ2VuX3Rlc3RfY2hhci5sbyAkKExPQ0FMX0xJQlMpCistdG9vbHMvZ2VuX3Rlc3RfY2hhci5sbzogdG9vbHMvZ2VuX3Rlc3RfY2hhci5jCisrdG9vbHMvZ2VuX3Rlc3RfY2hhckBFWEVFWFRAOiB0b29scy9nZW5fdGVzdF9jaGFyLmMKKyAJJChBUFJfTUtESVIpIHRvb2xzCistCSQoTFRfQ09NUElMRSkKKy0KKy10b29scy9nZW5fdGVzdF9jaGFyQEVYRUVYVEA6ICQoT0JKRUNUU19nZW5fdGVzdF9jaGFyKQorLQkkKExJTktfUFJPRykgJChPQkpFQ1RTX2dlbl90ZXN0X2NoYXIpICQoQUxMX0xJQlMpCisrCSQoQ0NfRk9SX0JVSUxEKSAkKENGTEFHU19GT1JfQlVJTEQpICQ8IC1vICRACisgCisgaW5jbHVkZS9wcml2YXRlL2Fwcl9lc2NhcGVfdGVzdF9jaGFyLmg6IHRvb2xzL2dlbl90ZXN0X2NoYXJARVhFRVhUQAorIAkkKEFQUl9NS0RJUikgaW5jbHVkZS9wcml2YXRlCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCA3MTlmMzMxLi4zNjExMjBmIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC0xODMsNiArMTgzLDkgQEAgZG5sIGNhbiBvbmx5IGJlIHVzZWQgb25jZSB3aXRoaW4gYSBjb25maWd1cmUgc2NyaXB0LCBzbyB0aGlzIHByZXZlbnRzIGEKKyBkbmwgcHJlbG9hZCBzZWN0aW9uIGZyb20gaW52b2tpbmcgdGhlIG1hY3JvIHRvIGdldCBjb21waWxlciBpbmZvLgorIEFDX1BST0dfQ0MKKyAKKytkbmwgQ2hlY2sgYnVpbGQgQ0MgZm9yIGdlbl90ZXN0X2NoYXIgY29tcGlsaW5nIHdoaWNoIGlzIGV4ZWN1dGVkIGF0IGJ1aWxkIHRpbWUuCisrQVhfUFJPR19DQ19GT1JfQlVJTEQKKysKKyBkbmwgQUNfUFJPR19TRUQgaXMgb25seSBhdmFsaWFibGUgaW4gcmVjZW50IGF1dG9jb25mIHZlcnNpb25zLgorIGRubCBVc2UgQUNfQ0hFQ0tfUFJPRyBpbnN0ZWFkIGlmIEFDX1BST0dfU0VEIGlzIG5vdCBwcmVzZW50LgorIGlmZGVmKFtBQ19QUk9HX1NFRF0sCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNC1GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA0LUZpeC1wYWNrZXQtZGlzY2FyZHMtSFRUUC1yZWRpcmVjdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGZjMDdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNC1GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA3OTI1ZWIxNzY2YTAwY2NlZTA1YzZlODBiMWQzNGYxNjNhMDRiN2IxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAzMCBKYW4gMjAxOCAwOTo0MzozNCArMDgwMAorU3ViamVjdDogW1BBVENIIDQvN10gRml4IHBhY2tldCBkaXNjYXJkcyBIVFRQIHJlZGlyZWN0LgorCitEaXNjb25uZWN0IHRoZSBjb25uZWN0aW9uIGJ5IHBvbGwoKSB0aW1lb3V0LgorSWYgdGltZW91dD0wIGFuZCBhcHJfd2FpdF9mb3JfaW9fb3JfdGltZW91dCgpPUFQUl9USU1FVVAgdGhlbgorYXByX3NvY2tldF9yZWN2KCkgcmV0dXJucyBFQUdBSU4uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBOb3JpYWtpIFlvc2hpdGFuZSA8eW9zaGl0YW5lLm5yc0BjbnQubmNvcy5uZWMuY28uanA+CitTaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaS53YW5nQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAxLjYuMworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBuZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL25ldHdvcmtfaW8vdW5peC9zZW5kcmVjdi5jIGIvbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMKK2luZGV4IDRjMGUwYTYuLjFiZGFmYmEgMTAwNjQ0CistLS0gYS9uZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYworKysrIGIvbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMKK0BAIC04NSw2ICs4NSwxMCBAQCBhcHJfc3RhdHVzX3QgYXByX3NvY2tldF9yZWN2KGFwcl9zb2NrZXRfdCAqc29jaywgY2hhciAqYnVmLCBhcHJfc2l6ZV90ICpsZW4pCisgICAgICAgICAgICAgICAgICAgICAgICYmIChzb2NrLT50aW1lb3V0ID4gMCkpIHsKKyBkb19zZWxlY3Q6CisgICAgICAgICBhcnYgPSBhcHJfd2FpdF9mb3JfaW9fb3JfdGltZW91dChOVUxMLCBzb2NrLCAxKTsKKysgICAgICAgIGlmICgoYXJ2ID09IEFQUl9USU1FVVApICYmIChzb2NrLT50aW1lb3V0ID09IDApKSB7CisrICAgICAgICAgICAgKmxlbiA9IDA7CisrICAgICAgICAgICAgcmV0dXJuIEVBR0FJTjsKKysgICAgICAgIH0KKyAgICAgICAgIGlmIChhcnYgIT0gQVBSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAqbGVuID0gMDsKKyAgICAgICAgICAgICByZXR1cm4gYXJ2OworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDUtY29uZmlndXJlLmluLWZpeC1MVEZMQUdTLXRvLW1ha2UtaXQtd29yay13aXRoLWNjYWNoZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDUtY29uZmlndXJlLmluLWZpeC1MVEZMQUdTLXRvLW1ha2UtaXQtd29yay13aXRoLWNjYWNoZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjYzNGU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNS1jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gMmU2NmNlY2UwYzNhZGZmOTI3MzMzMzIxMTEyMDRkZGMxZDczMGEwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxOSBOb3YgMjAxNSAxODoyNTozOCAtMDgwMAorU3ViamVjdDogW1BBVENIIDUvN10gY29uZmlndXJlLmluOiBmaXggTFRGTEFHUyB0byBtYWtlIGl0IHdvcmsgd2l0aCBjY2FjaGUKKworV2hlbiBjY2FjaGUgaXMgZW5hYmxlZCwgbGlidG9vbCByZXF1aXJlcyAtLXRhZz1DQyB3aGVuIHVzZSBjY2FjaGUsCitvdGhlcndpc2Ugd2hlbiBidWlsZGluZyBhcHItdXRpbCB3aXRoIGNjYWNoZSBlbmFibGVkOgorCit8IGxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgorfCBsaWJ0b29sOiBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKK3wgbGlidG9vbDogY29tcGlsZTogdW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uCit8IG1ha2VbMV06ICoqKiBbYnVja2V0cy9hcHJfYnVja2V0cy5sb10gRXJyb3IgMQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDM2MTEyMGYuLjNiMTA0MjIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTI0OSw3ICsyNDksNyBAQCBjYXNlICRob3N0IGluCisgICAgIDs7CisgKikKKyAgICAgaWYgdGVzdCAieCRMVEZMQUdTIiA9ICJ4IjsgdGhlbgorLSAgICAgICAgTFRGTEFHUz0nLS1zaWxlbnQnCisrICAgICAgICBMVEZMQUdTPSctLXNpbGVudCAtLXRhZz1DQycKKyAgICAgZmkKKyAgICAgaWYgdGVzdCAiJGV4cGVyaW1lbnRhbF9saWJ0b29sIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgICAjIFVzZSBhIGN1c3RvbS1tYWRlIGxpYnRvb2wgcmVwbGFjZW1lbnQKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA2LWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA2LWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY1ZTdlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDYtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaApAQCAtMCwwICsxLDc4IEBACitGcm9tIGY0ZDZlNDVlZDVkMmNjZmZkMWFmNGMyY2NkZjcwOTliYTBkY2UxMzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNCBEZWMgMjAxNiAxODoxMzowOCArMDgwMAorU3ViamVjdDogW1BBVENIIDYvN10gYXByOiBmaXggb2ZmX3Qgc2l6ZSBkb2Vzbid0IG1hdGNoIGluIGdsaWJjIHdoZW4gY3Jvc3MKKyBjb21waWxpbmcKKworSW4gY29uZmlndXJlLmluLCBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nOgorCisJQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIG9mZl90LCA4KQorCit0aGUgbWFjcm8gIkFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQiIHdhcyBkZWZpbmVkIGluIGJ1aWxkL2Fwcl9jb21tb24ubTQsCitpdCB1c2UgdGhlICJBQ19UUllfUlVOIiBtYWNybywgdGhpcyBtYWNybyBsZXQgdGhlIG9mZl90IHRvIDgsIHdoZW4gY3Jvc3MKK2NvbXBpbGluZyBlbmFibGUuCisKK1NvIGl0IHdhcyBoYXJkY29kZWQgZm9yIGNyb3NzIGNvbXBpbGluZywgd2Ugc2hvdWxkIGRldGVjdCBpdCBkeW5hbWljIGJhc2VkIG9uCit0aGUgc3lzcm9vdCdzIGdsaWJjLiBXZSBjaGFuZ2UgaXQgdG8gdGhlIGZvbGxvd2luZzoKKworCUFDX0NIRUNLX1NJWkVPRihvZmZfdCkKKworVGhlIHNhbWUgZm9yIHRoZSBmb2xsb3dpbmcgaGFyZGNvZGVkIHR5cGVzIGZvciBjcm9zcyBjb21waWxpbmc6CisKKwlwaWRfdAk4CisJc3NpemVfdAk4CisJc2l6ZV90CTgKKwlvZmZfdAk4CisKK0NoYW5nZSB0aGUgYWJvdmUgY29ycmVzcG9uZGluZ2x5LgorCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCAzYjEwNDIyLi5hMjI3ZTcyIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC0xNzY5LDcgKzE3NjksNyBAQCBlbHNlCisgICAgIHNvY2tsZW5fdF92YWx1ZT0iaW50IgorIGZpCisgCistQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIHBpZF90LCA4KQorK0FDX0NIRUNLX1NJWkVPRihwaWRfdCkKKyAKKyBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3BpZF90IiA9ICIkYWNfY3Zfc2l6ZW9mX3Nob3J0IjsgdGhlbgorICAgICBwaWRfdF9mbXQ9JyNkZWZpbmUgQVBSX1BJRF9UX0ZNVCAiaGQiJworQEAgLTE4MzgsNyArMTgzOCw3IEBAIEFQUl9DSEVDS19UWVBFU19DT01QQVRJQkxFKHNzaXplX3QsIGxvbmcsIFtzc2l6ZV90X2ZtdD0ibGQiXSkKKyBBUFJfQ0hFQ0tfVFlQRVNfQ09NUEFUSUJMRShzaXplX3QsIHVuc2lnbmVkIGludCwgW3NpemVfdF9mbXQ9InUiXSkKKyBBUFJfQ0hFQ0tfVFlQRVNfQ09NUEFUSUJMRShzaXplX3QsIHVuc2lnbmVkIGxvbmcsIFtzaXplX3RfZm10PSJsdSJdKQorIAorLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBzc2l6ZV90LCA4KQorK0FDX0NIRUNLX1NJWkVPRihzc2l6ZV90KQorIAorIEFDX01TR19DSEVDS0lORyhbd2hpY2ggZm9ybWF0IHRvIHVzZSBmb3IgYXByX3NzaXplX3RdKQorIGlmIHRlc3QgLW4gIiRzc2l6ZV90X2ZtdCI7IHRoZW4KK0BAIC0xODU1LDcgKzE4NTUsNyBAQCBmaQorIAorIHNzaXplX3RfZm10PSIjZGVmaW5lIEFQUl9TU0laRV9UX0ZNVCBcIiRzc2l6ZV90X2ZtdFwiIgorIAorLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzdGRkZWYuaD5dLCBzaXplX3QsIDgpCisrQUNfQ0hFQ0tfU0laRU9GKHNpemVfdCkKKyAKKyBBQ19NU0dfQ0hFQ0tJTkcoW3doaWNoIGZvcm1hdCB0byB1c2UgZm9yIGFwcl9zaXplX3RdKQorIGlmIHRlc3QgLW4gIiRzaXplX3RfZm10IjsgdGhlbgorQEAgLTE4NzIsNyArMTg3Miw3IEBAIGZpCisgCisgc2l6ZV90X2ZtdD0iI2RlZmluZSBBUFJfU0laRV9UX0ZNVCBcIiRzaXplX3RfZm10XCIiCisgCistQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIG9mZl90LCA4KQorK0FDX0NIRUNLX1NJWkVPRihvZmZfdCkKKyAKKyBpZiB0ZXN0ICIke2FjX2N2X3NpemVvZl9vZmZfdH0ke2Fwcl9jdl91c2VfbGZzNjR9IiA9ICI0eWVzIjsgdGhlbgorICAgICAjIEVuYWJsZSBMRlMKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA3LWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA3LWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc2MGIwMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDctZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIGM2YWZjNGE0YTc2NjQ3OGNiNmFhNmI0M2E1MDA1MTg4MWI2MzE4ZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CitEYXRlOiBGcmksIDMgTWFyIDIwMTcgMjI6MjQ6MTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA3LzddIGV4cGxpY2l0bHkgbGluayBsaWJhcHIgYWdhaW5zdCBwaHRyZWFkIHRvIG1ha2UgZ29sZCBoYXBweQorIG9uIHRlc3QKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfbXV0ZXhhdHRyX2luaXQnCit8IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZScKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95JworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfbXV0ZXhfdHJ5bG9jaycKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfY3JlYXRlJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfam9pbicKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2RldGFjaCcKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX3NpZ21hc2snCit8IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9vbmNlJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfa2V5X2NyZWF0ZScKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2dldHNwZWNpZmljJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfa2V5X2RlbGV0ZScKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX3NldHNwZWNpZmljJworfCBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKK3wgTWFrZWZpbGU6MTE0OiByZWNpcGUgZm9yIHRhcmdldCAnZ2xvYmFsbXV0ZXhjaGlsZCcgZmFpbGVkCit8IG1ha2VbMV06ICoqKiBbZ2xvYmFsbXV0ZXhjaGlsZF0gRXJyb3IgMQorfCBtYWtlWzFdOiBMZWF2aW5nIGRpcmVjdG9yeSAnL2hvbWUvc3VwZXJhbmR5L3RtcC9vZS1jb3JlLWdsaWJjL3dvcmsvY29ydGV4YTd0MmhmLW5lb24tdmZwdjQtYW5nc3Ryb20tbGludXgtZ251ZWFiaS9hcHIvMS41LjItcjAvYXByLTEuNS4yL3Rlc3QnCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuaW4gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggYTIyN2U3Mi4uY2JjMGY5MCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtNzg0LDYgKzc4NCw3IEBAIGVsc2UKKyAgICAgICAgICAgQVBSX1BUSFJFQURTX0NIRUNLX1JFU1RPUkUgXSApCisgICAgIGZpCisgICAgIGlmIHRlc3QgIiRwdGhyZWFkaCIgPSAiMSI7IHRoZW4KKysgICAgICAgIEFQUl9BRERUTyhMSUJTLFstbHB0aHJlYWRdKQorICAgICAgICAgQVBSX0NIRUNLX1BUSFJFQURfR0VUU1BFQ0lGSUNfVFdPX0FSR1MKKyAgICAgICAgIEFQUl9DSEVDS19QVEhSRUFEX0FUVFJfR0VUREVUQUNIU1RBVEVfT05FX0FSRworICAgICAgICAgQVBSX0NIRUNLX1BUSFJFQURfUkVDVVJTSVZFX01VVEVYCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODA1YjhiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL0ZpeC1wYWNrZXQtZGlzY2FyZHMtSFRUUC1yZWRpcmVjdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZpeCBwYWNrZXQgZGlzY2FyZHMgSFRUUCByZWRpcmVjdC4KLQotRGlzY29ubmVjdCB0aGUgY29ubmVjdGlvbiBieSBwb2xsKCkgdGltZW91dC4KLUlmIHRpbWVvdXQ9MCBhbmQgYXByX3dhaXRfZm9yX2lvX29yX3RpbWVvdXQoKT1BUFJfVElNRVVQIHRoZW4KLWFwcl9zb2NrZXRfcmVjdigpIHJldHVybnMgRUFHQUlOLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTm9yaWFraSBZb3NoaXRhbmUgPHlvc2hpdGFuZS5ucnNAY250Lm5jb3MubmVjLmNvLmpwPgotU2lnbmVkLW9mZi1ieTogTGkgV2FuZyA8bGkud2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMgfCAgICA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9uZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYyBiL25ldHdvcmtfaW8vdW5peC9zZW5kcmVjdi5jCi1pbmRleCBjMTMzYTI2Li5lOGZhZjE1IDEwMDY0NAotLS0tIGEvbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMKLSsrKyBiL25ldHdvcmtfaW8vdW5peC9zZW5kcmVjdi5jCi1AQCAtODUsNiArODUsMTAgQEAgYXByX3N0YXR1c190IGFwcl9zb2NrZXRfcmVjdihhcHJfc29ja2V0X3QgKnNvY2ssIGNoYXIgKmJ1ZiwgYXByX3NpemVfdCAqbGVuKQotICAgICAgICAgICAgICAgICAgICAgICAmJiAoc29jay0+dGltZW91dCA+IDApKSB7Ci0gZG9fc2VsZWN0OgotICAgICAgICAgYXJ2ID0gYXByX3dhaXRfZm9yX2lvX29yX3RpbWVvdXQoTlVMTCwgc29jaywgMSk7Ci0rICAgICAgICBpZiAoKGFydiA9PSBBUFJfVElNRVVQKSAmJiAoc29jay0+dGltZW91dCA9PSAwKSkgewotKyAgICAgICAgICAgICpsZW4gPSAwOwotKyAgICAgICAgICAgIHJldHVybiBFQUdBSU47Ci0rICAgICAgICB9Ci0gICAgICAgICBpZiAoYXJ2ICE9IEFQUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgKmxlbiA9IDA7Ci0gICAgICAgICAgICAgcmV0dXJuIGFydjsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jbGVhbnVwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY2xlYW51cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY3ODRlMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jbGVhbnVwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1JbmRleDogYXByLTEuNC4yL2J1aWxkL2J1aWxkY2hlY2suc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhcHItMS40LjIub3JpZy9idWlsZC9idWlsZGNoZWNrLnNoCTIwMDktMTEtMTMgMDg6Mjc6MTYuMDAwMDAwMDAwICswODAwCi0rKysgYXByLTEuNC4yL2J1aWxkL2J1aWxkY2hlY2suc2gJMjAxMC0xMS0yNiAxNTo0NDowMC4wMDAwMDAwMDAgKzA4MDAKLUBAIC0zMiwzNSArMzIsNCBAQAotIGVjaG8gImJ1aWxkY29uZjogYXV0b2NvbmYgdmVyc2lvbiAkYWNfdmVyc2lvbiAob2spIgotIGZpCi0gCi0tIyBTYW1wbGUgbGlidG9vbCAtLXZlcnNpb24gb3V0cHV0czoKLS0jIGx0bWFpbi5zaCAoR05VIGxpYnRvb2wpIDEuMy4zICgxLjM4NS4yLjE4MSAxOTk5LzA3LzAyIDE1OjQ5OjExKQotLSMgbHRtYWluLnNoIChHTlUgbGlidG9vbCAxLjEzNjEgMjAwNC8wMS8wMiAyMzoxMDo1MikgMS41YQotLSMgb3V0cHV0IGlzIG11bHRpbGluZSBmcm9tIDEuNSBvbndhcmRzCi0tCi0tIyBSZXF1aXJlIGxpYnRvb2wgMS40IG9yIG5ld2VyCi0tbGlidG9vbD1gYnVpbGQvUHJpbnRQYXRoIGdsaWJ0b29sMSBnbGlidG9vbCBsaWJ0b29sIGxpYnRvb2wxNSBsaWJ0b29sMTRgCi0tbHRfcHZlcnNpb249YCRsaWJ0b29sIC0tdmVyc2lvbiAyPi9kZXYvbnVsbHxzZWQgLWUgJ3MvKFteKV0qKS8vZztzL15bXjAtOV0qLy87cy9bLSBdLiovL2c7cSdgCi0taWYgdGVzdCAteiAiJGx0X3B2ZXJzaW9uIjsgdGhlbgotLWVjaG8gImJ1aWxkY29uZjogbGlidG9vbCBub3QgZm91bmQuIgotLWVjaG8gIiAgICAgICAgICAgWW91IG5lZWQgbGlidG9vbCB2ZXJzaW9uIDEuNCBvciBuZXdlciBpbnN0YWxsZWQiCi0tZWNobyAiICAgICAgICAgICB0byBidWlsZCBBUFIgZnJvbSBTVk4uIgotLWV4aXQgMQotLWZpCi0tbHRfdmVyc2lvbj1gZWNobyAkbHRfcHZlcnNpb258c2VkIC1lICdzL1woW2Etel0qXCkkLy5cMS8nYAotLUlGUz0uOyBzZXQgJGx0X3ZlcnNpb247IElGUz0nICcKLS1sdF9zdGF0dXM9Imdvb2QiCi0taWYgdGVzdCAiJDEiID0gIjEiOyB0aGVuCi0tICAgaWYgdGVzdCAiJDIiIC1sdCAiNCI7IHRoZW4KLS0gICAgICBsdF9zdGF0dXM9ImJhZCIKLS0gICBmaQotLWZpCi0taWYgdGVzdCAkbHRfc3RhdHVzID0gImdvb2QiOyB0aGVuCi0tICAgZWNobyAiYnVpbGRjb25mOiBsaWJ0b29sIHZlcnNpb24gJGx0X3B2ZXJzaW9uIChvaykiCi0tICAgZXhpdCAwCi0tZmkKLS0KLS1lY2hvICJidWlsZGNvbmY6IGxpYnRvb2wgdmVyc2lvbiAkbHRfcHZlcnNpb24gZm91bmQuIgotLWVjaG8gIiAgICAgICAgICAgWW91IG5lZWQgbGlidG9vbCB2ZXJzaW9uIDEuNCBvciBuZXdlciBpbnN0YWxsZWQiCi0tZWNobyAiICAgICAgICAgICB0byBidWlsZCBBUFIgZnJvbSBTVk4uIgotLQotLWV4aXQgMQotK2V4aXQgMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY29uZmlnZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY29uZmlnZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDVjNGY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NvbmZpZ2ZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotSW5kZXg6IGFwci0xLjMuMy9hcHItY29uZmlnLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXByLTEuMy4zLm9yaWcvYXByLWNvbmZpZy5pbgkyMDA5LTAxLTEyIDE1OjE2OjMxLjAwMDAwMDAwMCArMDAwMAotKysrIGFwci0xLjMuMy9hcHItY29uZmlnLmluCTIwMDktMDEtMTIgMTU6MTk6MjUuMDAwMDAwMDAwICswMDAwCi1AQCAtMTUyLDE0ICsxNTIsNyBAQAotICAgICBmbGFncz0iJGZsYWdzICRMREZMQUdTIgotICAgICA7OwotICAgICAtLWluY2x1ZGVzKQotLSAgICBpZiB0ZXN0ICIkbG9jYXRpb24iID0gImluc3RhbGxlZCI7IHRoZW4KLSAgICAgICAgIGZsYWdzPSIkZmxhZ3MgLUkkaW5jbHVkZWRpciAkRVhUUkFfSU5DTFVERVMiCi0tICAgIGVsaWYgdGVzdCAiJGxvY2F0aW9uIiA9ICJzb3VyY2UiOyB0aGVuCi0tICAgICAgICBmbGFncz0iJGZsYWdzIC1JJEFQUl9TT1VSQ0VfRElSL2luY2x1ZGUgJEVYVFJBX0lOQ0xVREVTIgotLSAgICBlbHNlCi0tICAgICAgICAjIHRoaXMgaXMgZm9yIFZQQVRIIGJ1aWxkcwotLSAgICAgICAgZmxhZ3M9IiRmbGFncyAtSSRBUFJfQlVJTERfRElSL2luY2x1ZGUgLUkkQVBSX1NPVVJDRV9ESVIvaW5jbHVkZSAkRVhUUkFfSU5DTFVERVMiCi0tICAgIGZpCi0gICAgIDs7Ci0gICAgIC0tc3JjZGlyKQotICAgICBlY2hvICRBUFJfU09VUkNFX0RJUgotQEAgLTE4MSwyOSArMTY3LDE0IEBACi0gICAgIGV4aXQgMAotICAgICA7OwotICAgICAtLWxpbmstbGQpCi0tICAgIGlmIHRlc3QgIiRsb2NhdGlvbiIgPSAiaW5zdGFsbGVkIjsgdGhlbgotLSAgICAgICAgIyMjIGF2b2lkIHVzaW5nIC1MIGlmIGxpYmRpciBpcyBhICJzdGFuZGFyZCIgbG9jYXRpb24gbGlrZSAvdXNyL2xpYgotLSAgICAgICAgZmxhZ3M9IiRmbGFncyAtTCRsaWJkaXIgLWwke0FQUl9MSUJOQU1FfSIKLS0gICAgZWxzZQotLSAgICAgICAgIyMjIHRoaXMgc3VyZWx5IGNhbid0IHdvcmsgc2luY2UgdGhlIGxpYnJhcnkgaXMgaW4gLmxpYnM/Ci0tICAgICAgICBmbGFncz0iJGZsYWdzIC1MJEFQUl9CVUlMRF9ESVIgLWwke0FQUl9MSUJOQU1FfSIKLS0gICAgZmkKLSsgICAgICAgIGZsYWdzPSIkZmxhZ3MgLWwke0FQUl9MSUJOQU1FfSIKLSAgICAgOzsKLSAgICAgLS1saW5rLWxpYnRvb2wpCi0gICAgICMgSWYgdGhlIExBX0ZJTEUgZXhpc3RzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSwgdXNlIGl0LiAgSWYgd2UncmUKLSAgICAgIyBpbnN0YWxsZWQgYW5kIHRoZSBMQV9GSUxFIGRvZXMgbm90IGV4aXN0LCBhc3N1bWUgdG8gdXNlIC1MLy1sCi0gICAgICMgKHRoZSBMQV9GSUxFIG1heSBub3QgaGF2ZSBiZWVuIGluc3RhbGxlZCkuICBJZiB3ZSdyZSBidWlsZGluZyBvdXJzZWx2ZXMsCi0gICAgICMgd2UnbGwgYXNzdW1lIHRoYXQgYXQgc29tZSBwb2ludCB0aGUgLmxhIGZpbGUgYmUgY3JlYXRlZC4KLS0gICAgaWYgdGVzdCAtZiAiJExBX0ZJTEUiOyB0aGVuCi0tICAgICAgICBmbGFncz0iJGZsYWdzICRMQV9GSUxFIgotLSAgICBlbGlmIHRlc3QgIiRsb2NhdGlvbiIgPSAiaW5zdGFsbGVkIjsgdGhlbgotLSAgICAgICAgIyMjIGF2b2lkIHVzaW5nIC1MIGlmIGxpYmRpciBpcyBhICJzdGFuZGFyZCIgbG9jYXRpb24gbGlrZSAvdXNyL2xpYgotLSAgICAgICAgIyBTaW5jZSB0aGUgdXNlciBpcyBzcGVjaWZ5aW5nIHRoZXkgYXJlIGxpbmtpbmcgd2l0aCBsaWJ0b29sLCB3ZQotLSAgICAgICAgIyAqa25vdyogdGhhdCAtUiB3aWxsIGJlIHJlY29nbml6ZWQgYnkgbGlidG9vbC4KLS0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUwkbGliZGlyIC1SJGxpYmRpciAtbCR7QVBSX0xJQk5BTUV9IgotLSAgICBlbHNlCi0tICAgICAgICBmbGFncz0iJGZsYWdzICRMQV9GSUxFIgotLSAgICBmaQotKyAgICAgICAgZmxhZ3M9IiRmbGFncyAtbCR7QVBSX0xJQk5BTUV9IgotICAgICA7OwotICAgICAtLXNobGliLXBhdGgtdmFyKQotICAgICBlY2hvICIkU0hMSUJQQVRIX1ZBUiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTIxZWViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGQ0MzkwOTNhYTA3YTQ4NmY1NTkyMDZhYzllNTgwOGE2YTE4MjE4Y2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTkgTm92IDIwMTUgMTg6MjU6MzggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmluOiBmaXggTFRGTEFHUyB0byBtYWtlIGl0IHdvcmsgd2l0aCBjY2FjaGUKLQotV2hlbiBjY2FjaGUgaXMgZW5hYmxlZCwgbGlidG9vbCByZXF1aXJlcyAtLXRhZz1DQyB3aGVuIHVzZSBjY2FjaGUsCi1vdGhlcndpc2Ugd2hlbiBidWlsZGluZyBhcHItdXRpbCB3aXRoIGNjYWNoZSBlbmFibGVkOgotCi18IGxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgotfCBsaWJ0b29sOiBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKLXwgbGlidG9vbDogY29tcGlsZTogdW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uCi18IG1ha2VbMV06ICoqKiBbYnVja2V0cy9hcHJfYnVja2V0cy5sb10gRXJyb3IgMQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuaW4gfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDVhNGE5ODguLjlkNTdhZTYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTI0Niw3ICsyNDYsNyBAQCBjYXNlICRob3N0IGluCi0gICAgIDs7Ci0gKikKLSAgICAgaWYgdGVzdCAieCRMVEZMQUdTIiA9ICJ4IjsgdGhlbgotLSAgICAgICAgTFRGTEFHUz0nLS1zaWxlbnQnCi0rICAgICAgICBMVEZMQUdTPSctLXNpbGVudCAtLXRhZz1DQycKLSAgICAgZmkKLSAgICAgaWYgdGVzdCAiJGV4cGVyaW1lbnRhbF9saWJ0b29sIiA9ICJ5ZXMiOyB0aGVuCi0gICAgICAgICAjIFVzZSBhIGN1c3RvbS1tYWRlIGxpYnRvb2wgcmVwbGFjZW1lbnQKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jb25maWd1cmVfZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jb25maWd1cmVfZml4ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1MTQwMDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY29uZmlndXJlX2ZpeGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1JbmRleDogYXByLTEuMy4zL2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFwci0xLjMuMy5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIGFwci0xLjMuMy9jb25maWd1cmUuaW4KLUBAIC03OTQsMzkgKzc5NCw2IEBAIEFDX0NIRUNLX0ZVTkNTKFttbWFwIG11bm1hcCBzaG1fb3BlbiBzaG0KLSAgICAgICAgICAgICAgICAgY3JlYXRlX2FyZWFdKQotIAotIEFQUl9DSEVDS19ERUZJTkUoTUFQX0FOT04sIHN5cy9tbWFuLmgpCi0tQUNfQ0hFQ0tfRklMRSgvZGV2L3plcm8pCi0tCi0tIyBOb3QgYWxsIHN5c3RlbXMgY2FuIG1tYXAgL2Rldi96ZXJvIChzdWNoIGFzIEhQLVVYKS4gIENoZWNrIGZvciB0aGF0LgotLWlmIHRlc3QgIiRhY19jdl9mdW5jX21tYXAiID0gInllcyIgJiYKLS0gICB0ZXN0ICIkYWNfY3ZfZmlsZV9fZGV2X3plcm8iID0gInllcyI7IHRoZW4KLS0gICAgQUNfTVNHX0NIRUNLSU5HKGZvciBtbWFwIHRoYXQgY2FuIG1hcCAvZGV2L3plcm8pCi0tICAgIEFDX1RSWV9SVU4oWwotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLS0jaW5jbHVkZSA8ZmNudGwuaD4KLS0jaWZkZWYgSEFWRV9TWVNfTU1BTl9ICi0tI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0tI2VuZGlmCi0tICAgIGludCBtYWluKCkKLS0gICAgewotLSAgICAgICAgaW50IGZkOwotLSAgICAgICAgdm9pZCAqbTsKLS0gICAgICAgIGZkID0gb3BlbigiL2Rldi96ZXJvIiwgT19SRFdSKTsKLS0gICAgICAgIGlmIChmZCA8IDApIHsKLS0gICAgICAgICAgICByZXR1cm4gMTsKLS0gICAgICAgIH0KLS0gICAgICAgIG0gPSBtbWFwKDAsIHNpemVvZih2b2lkKiksIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgMCk7Ci0tICAgICAgICBpZiAobSA9PSAodm9pZCAqKS0xKSB7ICAvKiBha2EgTUFQX0ZBSUxFRCAqLwotLSAgICAgICAgICAgIHJldHVybiAyOwotLSAgICAgICAgfQotLSAgICAgICAgaWYgKG11bm1hcChtLCBzaXplb2Yodm9pZCopKSA8IDApIHsKLS0gICAgICAgICAgICByZXR1cm4gMzsKLS0gICAgICAgIH0KLS0gICAgICAgIHJldHVybiAwOwotLSAgICB9XSwgW10sIFthY19jdl9maWxlX19kZXZfemVybz1ub10sIFthY19jdl9maWxlX19kZXZfemVybz1ub10pCi0tCi0tICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2ZpbGVfX2Rldl96ZXJvKQotLWZpCi0gCi0gIyBOb3cgd2UgZGV0ZXJtaW5lIHdoaWNoIG9uZSBpcyBvdXIgYW5vbnltb3VzIHNobWVtIHByZWZlcmVuY2UuCi0gaGF2ZXNobWdldGFub249IjAiCi1AQCAtMTUxOCwxMyArMTQ4NSwxNCBAQCBlbHNlCi0gICAgIGJpZ2VuZGlhbj0wCi0gZmkKLSAKLS1BUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2luY2x1ZGUgPHN5cy91aW8uaD5dLHN0cnVjdCBpb3ZlYywwKQotLWlmIHRlc3QgIiRhY19jdl9zaXplb2Zfc3RydWN0X2lvdmVjIiA9ICIwIjsgdGhlbgotLSAgICBoYXZlX2lvdmVjPTAKLS1lbHNlCi0tICAgIGhhdmVfaW92ZWM9MQotLWZpCi0rI0FQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjI2luY2x1ZGUgPHN5cy91aW8uaD5dLHN0cnVjdCBpb3ZlYywwKQotKyNpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3N0cnVjdF9pb3ZlYyIgPSAiMCI7IHRoZW4KLSsjICAgIGhhdmVfaW92ZWM9MAotKyNlbHNlCi0rIyAgICBoYXZlX2lvdmVjPTEKLSsjZmkKLStoYXZlX2lvdmVjPTEKLSAKLSBBQ19TVUJTVCh2b2lkcF9zaXplKQotIEFDX1NVQlNUKHNob3J0X3ZhbHVlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvdXBncmFkZS1hbmQtZml4LTEuNS4xLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvdXBncmFkZS1hbmQtZml4LTEuNS4xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjQ5OWY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL3VwZ3JhZGUtYW5kLWZpeC0xLjUuMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLU1ha2VmaWxlLmluOiBmaXggY3Jvc3MgY29tcGlsaW5nIGZhaWxlZAotCi1UaGUgdG9vbHMvZ2VuX3Rlc3RfY2hhciB3YXMgaW52b2tlZCBhdCBidWlsZCB0aW1lLAotYW5kIGl0IGRpZG4ndCB3b3JrIGZvciB0aGUgY3Jvc3MgY29tcGlsaW5nLCBzbyB3ZQotY29tcGlsZSBpdCB3aXRoICRCVUlMRF9DQy4KLQotUmVtb3ZlIHRoZSAndG9vbHMnIGRpciBjcmVhdGlvbiwgaXQgYWx3YXlzIGV4aXN0ZWQuCi1BbmQgaXQgY2F1c2VkIGdlbl90ZXN0X2NoYXIgdW5leHBlY3RlZCByZWJ1aWx0IGF0Ci1kb19pbnN0YWxsIHRpbWUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluIHwgMTAgKystLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCBhMmE1MTk0Li41ZmUwMjhmIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNDYsNyArNDYsNiBAQCBMVF9WRVJTSU9OID0gQExUX1ZFUlNJT05ACi0gCi0gQ0xFQU5fVEFSR0VUUyA9IGFwci1jb25maWcub3V0IGFwci5leHAgZXhwb3J0cy5jIGV4cG9ydF92YXJzLmMgLm1ha2UuZGlycyBcCi0gCWJ1aWxkL2Fwcl9ydWxlcy5vdXQgdG9vbHMvZ2VuX3Rlc3RfY2hhckBFWEVFWFRAIFwKLS0JdG9vbHMvZ2VuX3Rlc3RfY2hhci5vIHRvb2xzL2dlbl90ZXN0X2NoYXIubG8gXAotIAlpbmNsdWRlL3ByaXZhdGUvYXByX2VzY2FwZV90ZXN0X2NoYXIuaAotIERJU1RDTEVBTl9UQVJHRVRTID0gY29uZmlnLmNhY2hlIGNvbmZpZy5sb2cgY29uZmlnLnN0YXR1cyBcCi0gCWluY2x1ZGUvYXByLmggaW5jbHVkZS9hcmNoL3VuaXgvYXByX3ByaXZhdGUuaCBcCi1AQCAtMTI5LDEzICsxMjgsOCBAQCBjaGVjazogJChUQVJHRVRfTElCKQotIGV0YWdzOgotIAlldGFncyBgZmluZCAuIC1uYW1lICcqLltjaF0nYAotIAotLU9CSkVDVFNfZ2VuX3Rlc3RfY2hhciA9IHRvb2xzL2dlbl90ZXN0X2NoYXIubG8gJChMT0NBTF9MSUJTKQotLXRvb2xzL2dlbl90ZXN0X2NoYXIubG86IHRvb2xzL2dlbl90ZXN0X2NoYXIuYwotLQkkKEFQUl9NS0RJUikgdG9vbHMKLS0JJChMVF9DT01QSUxFKQotLQotLXRvb2xzL2dlbl90ZXN0X2NoYXJARVhFRVhUQDogJChPQkpFQ1RTX2dlbl90ZXN0X2NoYXIpCi0tCSQoTElOS19QUk9HKSAkKE9CSkVDVFNfZ2VuX3Rlc3RfY2hhcikgJChBTExfTElCUykKLSt0b29scy9nZW5fdGVzdF9jaGFyQEVYRUVYVEA6IHRvb2xzL2dlbl90ZXN0X2NoYXIuYwotKwkkKEJVSUxEX0NDKSAkKENGTEFHU19GT1JfQlVJTEQpICQ8IC1vICRACi0gCi0gaW5jbHVkZS9wcml2YXRlL2Fwcl9lc2NhcGVfdGVzdF9jaGFyLmg6IHRvb2xzL2dlbl90ZXN0X2NoYXJARVhFRVhUQAotIAkkKEFQUl9NS0RJUikgaW5jbHVkZS9wcml2YXRlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmVlZDUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLVNVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9hcHIuYXBhY2hlLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gInV0aWwtbGludXgiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRkZmQ0Y2QyMTY4MjhjOGNhZTVkZTVhMTJmMzg0NGM4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvYXByX2xpYi5oO2VuZGxpbmU9MTc7bWQ1PWVlNDJmYTc1NzVkYzQwNTgwYTllMDFjMWI3NWZhZTk2IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsZWFudXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlnZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGdyYWRlLWFuZC1maXgtMS41LjEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlODFhODUxOTY3Yzc5YjVjZTliZmJjOTA5ZTRiZjczNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOTEwOWNlYTM3N2JhYjAwMjhiYmExOWE5MmI1YjBlODk2MDNkZjllYWIwNWMwZjdkYmQ0ZGQ4M2Q0OGRjZWJkIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbGliX3BhY2thZ2UgYmluY29uZmlnIG11bHRpbGliX2hlYWRlciBwdGVzdAotCi1PRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCi0KLSMgQWRkZWQgdG8gZml4IHNvbWUgaXNzdWVzIHdpdGggY21ha2UuIFJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9ibXdjYXJpdC9tZXRhLXJvcy9pc3N1ZXMvNjgjaXNzdWVjb21tZW50LTE5ODk2OTI4Ci1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYXByX2N2X211dGV4X3JlY3Vyc2l2ZT15ZXMiCi0KLSMgQWxzbyBzdXBwcmVzcyB0cnlpbmcgdG8gdXNlIHNjdHAuCi0jCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vIGFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm8iCi0KLSMgT3RoZXJ3aXNlIGxpYnRvb2wgZmFpbHMgdG8gY29tcGlsZSBhcHItdXRpbHMKLSMgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgotIyB4ODZfNjQtbGludXgtbGlidG9vbDogICBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKLUNDQUNIRSA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBBdm9pZCBhYnNvbHV0ZSBwYXRocyBmb3IgZ3JlcCBzaW5jZSBpdCBjYXVzZXMgZmFpbHVyZXMKLQkjIHdoZW4gdXNpbmcgc3N0YXRlIGJldHdlZW4gZGlmZmVyZW50IGhvc3RzIHdpdGggZGlmZmVyZW50Ci0JIyBpbnN0YWxsIHBhdGhzIGZvciBncmVwLgotCWV4cG9ydCBHUkVQPSJncmVwIgotCi0JY2QgJHtTfQotCS4vYnVpbGRjb25mCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2Fwci5leHAgJHtkYXRhZGlyfS9idWlsZC0xLyoiCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCi0KLSNmb3Igc29tZSByZWFzb24sIGJ1aWxkL2xpYnRvb2wubTQgaGFuZGxlZCBieSBidWlsZGNvbmYgc3RpbGwgYmUgb3ZlcndyaXR0ZW4KLSN3aGVuIGF1dG9jb25mLCBzbyBoYW5kbGUgaXQgYWdhaW4uCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXNlZCAtaSAtZSAncy9MSUJUT09MPVwoLipcKXRvcF9idWlsZC9MSUJUT09MPVwxYXByX2J1aWxkLycgJHtTfS9idWlsZC9saWJ0b29sLm00Ci0Jc2VkIC1pIC1lICdzL0xJQlRPT0w9XCguKlwpdG9wX2J1aWxkL0xJQlRPT0w9XDFhcHJfYnVpbGQvJyAke1N9L2J1aWxkL2Fwcl9ydWxlcy5tawotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYXByLmgKLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnICR7RH0ke2RhdGFkaXJ9L2J1aWxkLTEvYXByX3J1bGVzLm1rCi0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKLQkgICAgICAgLWUgJ3MsQVBSX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKLQkgICAgICAgLWUgJ3MsQVBSX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2Fwci0xLWNvbmZpZwotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiYXByX3J1bGVzLm1rIGxpYnRvb2wiCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLQotYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0JZD0ke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2FwcgotCWluc3RhbGwgLWQgJGQvCi0JY3AgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsgJGQvCi0Jc2VkIC1pIHMsYXByX2J1aWxkZGlyPS4qLGFwcl9idWlsZGRpcj0sZyAkZC9hcHJfcnVsZXMubWsKLQlzZWQgLWkgcyxhcHJfYnVpbGRlcnM9LiosYXByX2J1aWxkZXJzPSxnICRkL2Fwcl9ydWxlcy5tawotCXNlZCAtaSBzLExJQlRPT0w9LiosTElCVE9PTD0ke0hPU1RfU1lTfS1saWJ0b29sLGcgJGQvYXByX3J1bGVzLm1rCi0Jc2VkIC1pIHMsXCRcKGFwcl9idWlsZGVyc1wpLCR7U1RBR0lOR19EQVRBRElSfS9hcHIvLGcgJGQvYXByX3J1bGVzLm1rCi0JY3AgJHtTfS9idWlsZC9ta2Rpci5zaCAkZC8KLQljcCAke1N9L2J1aWxkL21ha2VfZXhwb3J0cy5hd2sgJGQvCi0JY3AgJHtTfS9idWlsZC9tYWtlX3Zhcl9leHBvcnQuYXdrICRkLwotCWNwICR7U30vJHtIT1NUX1NZU30tbGlidG9vbCAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2J1aWxkLTEvbGlidG9vbAotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCWNkICR7U30vdGVzdAotCW9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlta2RpciAtcCAkdC8ubGlicwotCWNwIC1yICR7U30vdGVzdC9kYXRhICR0LwotCWNwIC1yICR7U30vdGVzdC8ubGlicy8qLnNvICR0Ly5saWJzLwotCWNwICR7U30vdGVzdC9wcm9jX2NoaWxkICR0LwotCWNwICR7U30vdGVzdC9yZWFkY2hpbGQgJHQvCi0JY3AgJHtTfS90ZXN0L3NvY2tjaGlsZCAkdC8KLQljcCAke1N9L3Rlc3Qvc29ja3BlcmYgJHQvCi0JY3AgJHtTfS90ZXN0L3Rlc3RhbGwgJHQvCi0JY3AgJHtTfS90ZXN0L3RyeXJlYWQgJHQvCi19Ci0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdiODc4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4zLmJiCkBAIC0wLDAgKzEsMTE3IEBACitTVU1NQVJZID0gIkFwYWNoZSBQb3J0YWJsZSBSdW50aW1lIChBUFIpIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJ1dGlsLWxpbnV4IgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00ZGZkNGNkMjE2ODI4YzhjYWU1ZGU1YTEyZjM4NDRjOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2Fwcl9saWIuaDtlbmRsaW5lPTE3O21kNT1lZTQyZmE3NTc1ZGM0MDU4MGE5ZTAxYzFiNzVmYWU5NiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vYXByLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWJ1aWxkY2hlY2suc2gtaW1wcm92ZS1saWJ0b29sLWRldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWFwci1SZW1vdmUtd29ya2Rpci1wYXRoLXJlZmVyZW5jZXMtZnJvbS1pbnN0YWxsZWQtYXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1NYWtlZmlsZS5pbi1jb25maWd1cmUuaW4tc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTJmMmEzNDk0ODNhZDZmMTJkYjQ5YmEwMWZiZmRiZmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTMxZjA2ZDE2ZDdhYWJkMDk3ZmE5OTJhMzNlZWMyYjZhZjM5NjJmOTNlNmQ1NzBhOWJkNGQ4NWU5NTk5MzE3MiIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpYl9wYWNrYWdlIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKKworT0VfQklOQ09ORklHX0VYVFJBX01BTkdMRSA9ICIgLWUgJ3M6bG9jYXRpb249c291cmNlOmxvY2F0aW9uPWluc3RhbGxlZDonIgorCisjIEFkZGVkIHRvIGZpeCBzb21lIGlzc3VlcyB3aXRoIGNtYWtlLiBSZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vYm13Y2FyaXQvbWV0YS1yb3MvaXNzdWVzLzY4I2lzc3VlY29tbWVudC0xOTg5NjkyOAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFwcl9jdl9tdXRleF9yZWN1cnNpdmU9eWVzIgorCisjIEFsc28gc3VwcHJlc3MgdHJ5aW5nIHRvIHVzZSBzY3RwLgorIworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD1ubyBhY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPW5vIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3Zfc2l6ZW9mX3N0cnVjdF9pb3ZlYz15ZXMiCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfZmlsZV9fZGV2X3plcm89eWVzIgorCisjIE90aGVyd2lzZSBsaWJ0b29sIGZhaWxzIHRvIGNvbXBpbGUgYXByLXV0aWxzCisjIHg4Nl82NC1saW51eC1saWJ0b29sOiBjb21waWxlOiB1bmFibGUgdG8gaW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24KKyMgeDg2XzY0LWxpbnV4LWxpYnRvb2w6ICAgZXJyb3I6IHNwZWNpZnkgYSB0YWcgd2l0aCAnLS10YWcnCitDQ0FDSEUgPSAiIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgQXZvaWQgYWJzb2x1dGUgcGF0aHMgZm9yIGdyZXAgc2luY2UgaXQgY2F1c2VzIGZhaWx1cmVzCisJIyB3aGVuIHVzaW5nIHNzdGF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBob3N0cyB3aXRoIGRpZmZlcmVudAorCSMgaW5zdGFsbCBwYXRocyBmb3IgZ3JlcC4KKwlleHBvcnQgR1JFUD0iZ3JlcCIKKworCWNkICR7U30KKwlsaWJ0b29sPScke0hPU1RfU1lTfS1saWJ0b29sJyAuL2J1aWxkY29uZgorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9hcHIuZXhwICR7ZGF0YWRpcn0vYnVpbGQtMS8qIgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgorCisjZm9yIHNvbWUgcmVhc29uLCBidWlsZC9saWJ0b29sLm00IGhhbmRsZWQgYnkgYnVpbGRjb25mIHN0aWxsIGJlIG92ZXJ3cml0dGVuCisjd2hlbiBhdXRvY29uZiwgc28gaGFuZGxlIGl0IGFnYWluLgorZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlzZWQgLWkgLWUgJ3MvTElCVE9PTD1cKC4qXCl0b3BfYnVpbGQvTElCVE9PTD1cMWFwcl9idWlsZC8nICR7U30vYnVpbGQvbGlidG9vbC5tNAorCXNlZCAtaSAtZSAncy9MSUJUT09MPVwoLipcKXRvcF9idWlsZC9MSUJUT09MPVwxYXByX2J1aWxkLycgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJb2VfbXVsdGlsaWJfaGVhZGVyIGFwci5oCisJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hcHIKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCXNlZCAtaSAtZSAncywke0RFQlVHX1BSRUZJWF9NQVB9LCxnJyBcCisJICAgICAgIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnICR7RH0ke2RhdGFkaXJ9L2J1aWxkLTEvYXByX3J1bGVzLm1rCisJc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKKwkgICAgICAgLWUgJ3MsQVBSX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKKwkgICAgICAgLWUgJ3MsQVBSX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2Fwci0xLWNvbmZpZworfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiYXByX3J1bGVzLm1rIGxpYnRvb2wiCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyIKKworYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CisJZD0ke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2FwcgorCWluc3RhbGwgLWQgJGQvCisJY3AgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsgJGQvCisJc2VkIC1pIHMsYXByX2J1aWxkZGlyPS4qLGFwcl9idWlsZGRpcj0sZyAkZC9hcHJfcnVsZXMubWsKKwlzZWQgLWkgcyxhcHJfYnVpbGRlcnM9LiosYXByX2J1aWxkZXJzPSxnICRkL2Fwcl9ydWxlcy5taworCXNlZCAtaSBzLExJQlRPT0w9LiosTElCVE9PTD0ke0hPU1RfU1lTfS1saWJ0b29sLGcgJGQvYXByX3J1bGVzLm1rCisJc2VkIC1pIHMsXCRcKGFwcl9idWlsZGVyc1wpLCR7U1RBR0lOR19EQVRBRElSfS9hcHIvLGcgJGQvYXByX3J1bGVzLm1rCisJY3AgJHtTfS9idWlsZC9ta2Rpci5zaCAkZC8KKwljcCAke1N9L2J1aWxkL21ha2VfZXhwb3J0cy5hd2sgJGQvCisJY3AgJHtTfS9idWlsZC9tYWtlX3Zhcl9leHBvcnQuYXdrICRkLworCWNwICR7U30vJHtIT1NUX1NZU30tbGlidG9vbCAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2J1aWxkLTEvbGlidG9vbAorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCWNkICR7U30vdGVzdAorCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlta2RpciAtcCAkdC8ubGlicworCWNwIC1yICR7U30vdGVzdC9kYXRhICR0LworCWNwIC1yICR7U30vdGVzdC8ubGlicy8qLnNvICR0Ly5saWJzLworCWNwICR7U30vdGVzdC9wcm9jX2NoaWxkICR0LworCWNwICR7U30vdGVzdC9yZWFkY2hpbGQgJHQvCisJY3AgJHtTfS90ZXN0L3NvY2tjaGlsZCAkdC8KKwljcCAke1N9L3Rlc3Qvc29ja3BlcmYgJHQvCisJY3AgJHtTfS90ZXN0L3Rlc3RhbGwgJHQvCisJY3AgJHtTfS90ZXN0L3RyeXJlYWQgJHQvCit9CisKK2V4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMGU0MTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3OTM4OGZiYzRkYzdmMjczOTQ1NTZkZDM4OWFlYjU5NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MGRjOTBhYzRmNzRiOGZmZTk2YTkzNjNjMjUyMDhhNDQzYjM4MWJhY2VjZmVmZWE2ZGU1NDlmMjBlZDY5NTdkIgotCi1ERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGF0ayBhdC1zcGkyLWNvcmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLSMgVGhlIGF0LXNwaTItY29yZSByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ25vbWUgJHtQTn0tZ3RrMiIKLQotRklMRVNfJHtQTn0tZ25vbWUgPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0zLjAvZ3RrLW1vZHVsZXMiCi1GSUxFU18ke1BOfS1ndGsyID0gIiR7bGliZGlyfS9ndGstMi4wL21vZHVsZXMvbGliYXRrLWJyaWRnZS4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjE3YmI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI2LjEuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJBVC1TUEkgMiBUb29sa2l0IEJyaWRnZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZWVlYzZjZWFkMzM1MGRjYTQ4YTIzNTI3MWMxMDViM2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjRmMGMyN2I2MWRiZmZiYTdhNWI1YmEyZmY4OGM4Y2VlMTBmZjhkYWM3NzRmYTViNzljZTkwNjg1MzYyM2I3NSIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBhdGsgYXQtc3BpMi1jb3JlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCisjIFRoZSBhdC1zcGkyLWNvcmUgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWdub21lICR7UE59LWd0azIiCisKK0ZJTEVTXyR7UE59LWdub21lID0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMy4wL2d0ay1tb2R1bGVzIgorRklMRVNfJHtQTn0tZ3RrMiA9ICIke2xpYmRpcn0vZ3RrLTIuMC9tb2R1bGVzL2xpYmF0ay1icmlkZ2UuKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtYnVpbGQtQWRkLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2gKaW5kZXggNDEwM2VhYS4uMWY4YzlmMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDJmNDdjOTc1ZWJlNTJiNjkxNmE0NWFkZTAyM2FlM2JhYzIxYmIwZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZhMzc2NzYyYjkyNDA0YjllM2M0MzAwNTRiOGMzMzQxY2EwZmRkOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAyMSBKdW4gMjAxNiAxNjowMDowMiArMDMwMAogU3ViamVjdDogW1BBVENIXSBidWlsZDogQWRkIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIKQEAgLTgsMjkgKzgsMzAgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc5MTFdCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorCiAtLS0KICBidXMvTWFrZWZpbGUuYW0gfCAyICstCi0gY29uZmlndXJlLmFjICAgIHwgNyArKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjb25maWd1cmUuYWMgICAgfCA5ICsrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvYnVzL01ha2VmaWxlLmFtIGIvYnVzL01ha2VmaWxlLmFtCi1pbmRleCBiMTg5ZTAyLi41MmZiYjBiIDEwMDY0NAoraW5kZXggNjg4ZjgyYS4uMTBjZGU2MiAxMDA2NDQKIC0tLSBhL2J1cy9NYWtlZmlsZS5hbQogKysrIGIvYnVzL01ha2VmaWxlLmFtCi1AQCAtMjYsNyArMjYsNyBAQCBkYnVzc2VydmljZV9EQVRBID0gb3JnLmExMXkuQnVzLnNlcnZpY2UKLSBvcmcuYTExeS5CdXMuc2VydmljZTogb3JnLmExMXkuQnVzLnNlcnZpY2UuaW4KLSAJc2VkIC1lICQoc3Vic3RpdHV0aW9ucykgJDwgPiAkQC50bXAgJiYgbXYgJEAudG1wICRACitAQCAtMjksNyArMjksNyBAQCBvcmcuYTExeS5CdXMuc2VydmljZTogb3JnLmExMXkuQnVzLnNlcnZpY2UuaW4KKyBFWFRSQV9ESVNUICs9IG9yZy5hMTF5LkJ1cy5zZXJ2aWNlLmluCisgQ0xFQU5GSUxFUyArPSBvcmcuYTExeS5CdXMuc2VydmljZQogIAogLXN5c3RlbWRfdXNlcmRpciA9ICQocHJlZml4KS9saWIvc3lzdGVtZC91c2VyCiArc3lzdGVtZF91c2VyZGlyID0gJChzeXN0ZW1kdXNlcnVuaXRkaXIpCiAgc3lzdGVtZF91c2VyX0RBVEEgPSBhdC1zcGktZGJ1cy1idXMuc2VydmljZQogIGF0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlOiBhdC1zcGktZGJ1cy1idXMuc2VydmljZS5pbiBNYWtlZmlsZQotIAlzZWQgLWUgJChzdWJzdGl0dXRpb25zKSAkPCA+ICRALnRtcCAmJiBtdiAkQC50bXAgJEAKKyAJJChBTV9WX0dFTikgJChTRUQpIC1lICQoc3Vic3RpdHV0aW9ucykgJDwgPiAkQC50bXAgJiYgbXYgJEAudG1wICRACiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmOTA2MWMyLi4yYjhlZWVkIDEwMDY0NAoraW5kZXggOGM0ZmNhMi4uMTQxNWNjYSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTgzLDYgKzE4MywxMyBAQCBlbHNlCitAQCAtMTQ2LDYgKzE0NiwxNSBAQCBlbHNlCiAgZmkKICBBQ19TVUJTVChEQlVTX1NFUlZJQ0VTX0RJUikKICAKQEAgLTQxLDkgKzQyLDExIEBACiArICAgICAgICAgICAgW3dpdGhfc3lzdGVtZHVzZXJ1bml0ZGlyPSQoJFBLR19DT05GSUcgLS12YXJpYWJsZT1zeXN0ZW1kdXNlcnVuaXRkaXIgc3lzdGVtZCldKQogK0FDX1NVQlNUKFtzeXN0ZW1kdXNlcnVuaXRkaXJdLCBbJHdpdGhfc3lzdGVtZHVzZXJ1bml0ZGlyXSkKICsKLSBBQ19QQVRIX1BST0coR0xJQl9NS0VOVU1TLCBnbGliLW1rZW51bXMpCisrQUNfUEFUSF9QUk9HKEdMSUJfTUtFTlVNUywgZ2xpYi1ta2VudW1zKQorKworIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDSyhbMS4zMi4wXSkKICAKLSBHT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0soWzAuOS42XSkKKyBBQ19TVUJTVChMSUJUT09MX0VYUE9SVF9PUFRJT05TKQogLS0gCi0yLjEuNAorMi4xNC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtbmxzLm00LVRha2UtaXQtZnJvbS1nZXR0ZXh0LTAuMTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZS8wMDAxLW5scy5tNC1UYWtlLWl0LWZyb20tZ2V0dGV4dC0wLjE1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWE1MWQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtbmxzLm00LVRha2UtaXQtZnJvbS1nZXR0ZXh0LTAuMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGMzMjA3OTljOTQxZDQyYTliN2UzNTE4MDUzNTk2OTRlYTNiMzZkMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCA1IEFwciAyMDE1IDA5OjA4OjM4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5scy5tNDogVGFrZSBpdCBmcm9tIGdldHRleHQtMC4xNQotCi1JdCBvdGhlcndpc2UgZXhwZWN0cyBnZXR0ZXh0IHRvIHByb3ZpZGUgaXQuIExldHMgZ28gaW5kZXBlbmRlbnQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBtNC9ubHMubTQgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBtNC9ubHMubTQKLQotZGlmZiAtLWdpdCBhL200L25scy5tNCBiL200L25scy5tNAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjJjOGZlNjkKLS0tLSAvZGV2L251bGwKLSsrKyBiL200L25scy5tNAotQEAgLTAsMCArMSwzMCBAQAotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMywgMjAwNS0yMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSBub3QgaW4gdGhlIHB1YmxpYyBkb21haW4uCi0rCi0rZG5sIEF1dGhvcnM6Ci0rZG5sIFVscmljaCBEcmVwcGVyIGRyZXBwZXJAY3lnbnVzLmNvbSwgMTk5NS0yMDAwLgotK2RubCBCcnVubyBIYWlibGUgaGFpYmxlQGNsaXNwLmNvbnMub3JnLCAyMDAwLTIwMDMuCi0rCi0rQUNfUFJFUkVRKDIuNTApCi0rCi0rQUNfREVGVU4oW0FNX05MU10sCi0rWwotK0FDX01TR19DSEVDS0lORyhbd2hldGhlciBOTFMgaXMgcmVxdWVzdGVkXSkKLStkbmwgRGVmYXVsdCBpcyBlbmFibGVkIE5MUwotK0FDX0FSR19FTkFCTEUobmxzLAotK1sgLS1kaXNhYmxlLW5scyBkbyBub3QgdXNlIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0XSwKLStVU0VfTkxTPSRlbmFibGV2YWwsIFVTRV9OTFM9eWVzKQotK0FDX01TR19SRVNVTFQoJFVTRV9OTFMpCi0rQUNfU1VCU1QoVVNFX05MUykKLStdKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2ODdhZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJBc3Npc3RpdmUgVGVjaG5vbG9neSBTZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZSAoZGJ1cyBjb3JlKSIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ubHMubTQtVGFrZS1pdC1mcm9tLWdldHRleHQtMC4xNS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjFkMGE0NzFlNjkzMjkyOTM0YTczZjI4OGViZmYzNWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWU5MGQwNjRiOTM3YWFjZmU3OWE5NjIzMmFjN2U2M2QyOGQ3MTZlODViZDlmZjQzMzNmODY1MzA1YTk1OWI1YiIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIHZpcnR1YWwvbGlieDExIGxpYnhpIGxpYnh0c3QgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBndGstZG9jIGdldHRleHQgc3lzdGVtZCBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS14ZXZpZSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWRidXMtZGFlbW9uZGlyPSR7YmluZGlyfSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvYWNjZXNzaWJpbGl0eS1zZXJ2aWNlcy8qLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGVmYXVsdHMvYXQtc3BpMiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vYXQtc3BpLWRidXMtYnVzLnNlcnZpY2XCoFwKLSAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI2LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIxZWUzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjYuMi5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIkFzc2lzdGl2ZSBUZWNobm9sb2d5IFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChkYnVzIGNvcmUpIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjRhMDQyZTRjODAxZmRiNzkzNzg4Yjc0OWVhYjIxNDg1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4MGUwY2RmNWUzZDcxMzQwMDMxNWI2M2M3ZGVmZmE1NjEwMzJhNmMzNzI4OTIxMWQ4YWZjZmFhMjY3YzI2MTUiCisKK0RFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCB2aXJ0dWFsL2xpYngxMSBsaWJ4aSBsaWJ4dHN0IgorCitpbmhlcml0IGF1dG90b29scyBndGstZG9jIGdldHRleHQgc3lzdGVtZCBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAgLS13aXRoLWRidXMtZGFlbW9uZGlyPSR7YmluZGlyfSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvYWNjZXNzaWJpbGl0eS1zZXJ2aWNlcy8qLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGVmYXVsdHMvYXQtc3BpMiBcCisgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vYXQtc3BpLWRidXMtYnVzLnNlcnZpY2XCoFwKKyAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MjMxOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJBY2Nlc3NpYmlsaXR5IHRvb2xraXQgZm9yIEdOT01FIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0dBUC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAieDExL2xpYnMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGt1dGlsLmM7ZW5kbGluZT0xODttZDU9NmZkMzFjZDJmZGM5YjMwZjYxOWNhOGQ4MTliYzEyZDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0ay5oO2VuZGxpbmU9MTg7bWQ1PWZjZDc3MTAxODdlMGVhZTQ4NWUzNTZjMzBkMWIwYzNiIgotCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzNzQ3YTgwMDg5ZGZhM2MwYmJjZjIxYWRmZmY5OTY4YiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImJiMmRhYTlhODA4YzczYTdhNzlkMjk4M2YzMzNlMGJhNzRiZTQyZmM1MWUzYmExZmFmMjU1MWE2MzY0ODdhNDkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWdsaWJ0ZXN0IFwKLSAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODViNTk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNi4xLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiQWNjZXNzaWJpbGl0eSB0b29sa2l0IGZvciBHTk9NRSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9HQVAvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9saWJzIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrdXRpbC5jO2VuZGxpbmU9MTg7bWQ1PTZmZDMxY2QyZmRjOWIzMGY2MTljYThkODE5YmMxMmQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGsuaDtlbmRsaW5lPTE4O21kNT1mY2Q3NzEwMTg3ZTBlYWU0ODVlMzU2YzMwZDFiMGMzYiIKKworREVQRU5EUyA9ICJnbGliLTIuMCIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2NkZGNjMzEzYjlhM2VmZDE5YjJkZGYwNzliYTY4ZjUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlZjAwZmY2YjgzODUxZGRkYzhkYjM4YjRkOWZhZWZmYjk5NTcyYmExNTBiMDY2NGVlMDJlNDZmMDE1ZWE5N2NiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoCmluZGV4IDBiMzUwYmUuLmYzOTI0NjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtaW5zdWZmaWNpZW50LXF1b3Rpbmctb2YucGF0Y2gKQEAgLTM1LDYxICszNSw1NiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLYW1pbCBEdWRrYSA8a2R1ZGthQHJlZGhhdC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdC9jcC50ZXN0ICAgICAgICAgICAgfCAyICstCi0gdGVzdC9taXNjLnRlc3QgICAgICAgICAgfCA2ICsrKy0tLQotIHRlc3Qvc2JpdHMtcmVzdG9yZS50ZXN0IHwgNiArKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3Rlc3QvY3AudGVzdCBiL3Rlc3QvY3AudGVzdAotaW5kZXggMDg2N2Y2My4uYTkyNzE5NSAxMDA2NDQKLS0tLSBhL3Rlc3QvY3AudGVzdAotKysrIGIvdGVzdC9jcC50ZXN0Ci1AQCAtOSw3ICs5LDcgQEAgVGhlIGNwIHV0aWxpdHkgc2hvdWxkIG9ubHkgY29weSBBQ0xzIGlmIGAtcCcgaXMgZ2l2ZW4uCitJbmRleDogYWNsLTIuMi41Mi90ZXN0L2NwLnRlc3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhY2wtMi4yLjUyLm9yaWcvdGVzdC9jcC50ZXN0CisrKysgYWNsLTIuMi41Mi90ZXN0L2NwLnRlc3QKK0BAIC05LDcgKzksNyBAQCBUaGUgY3AgdXRpbGl0eSBzaG91bGQgb25seSBjb3B5IEFDTHMgaWYKICAJPiAtcnctcnctci0tKwotCisgCQogIAkkIGNwIGYgZwogLQkkIGxzIC1sIGcgfCBhd2sgLS0gJ3sgcHJpbnQgJDEgfScgfCBzZWQgJ3MvXC4kLy9nJwogKwkkIGxzIC1sIGcgfCBhd2sgLS0gJ3sgcHJpbnQgJDEgfScgfCBzZWQgJ3MvXFwuJC8vZycKICAJPiAtcnctci0tci0tCi0KKyAJCiAgCSQgcm0gZwotZGlmZiAtLWdpdCBhL3Rlc3QvbWlzYy50ZXN0IGIvdGVzdC9taXNjLnRlc3QKLWluZGV4IDZlOTgwNTMuLjI5MzcyYjcgMTAwNjQ0Ci0tLS0gYS90ZXN0L21pc2MudGVzdAotKysrIGIvdGVzdC9taXNjLnRlc3QKK0luZGV4OiBhY2wtMi4yLjUyL3Rlc3QvbWlzYy50ZXN0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYWNsLTIuMi41Mi5vcmlnL3Rlc3QvbWlzYy50ZXN0CisrKysgYWNsLTIuMi41Mi90ZXN0L21pc2MudGVzdAogQEAgLTI1NCw3ICsyNTQsNyBAQCBBZGQgc29tZSB1c2VycyBhbmQgZ3JvdXBzCiAgU3ltbGluayBpbiBkaXJlY3Rvcnkgd2l0aCBkZWZhdWx0IEFDTD8KLQorIAkgCiAgCSQgbG4gLXMgZCBkL2wKIC0JJCBscyAtZGwgZC9sIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCiArCSQgbHMgLWRsIGQvbCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKICAJPiBscnd4cnd4cnd4Ci0KKyAKICAJJCBscyAtZGwgLUwgZC9sIHwgYXdrICd7cHJpbnQgJDF9JwogQEAgLTM0Myw3ICszNDMsNyBAQCBSZW1vdmUgdGhlIGRlZmF1bHQgQUNMCiAgUmVzZXQgdG8gYmFzZSBlbnRyaWVzCi0KKyAJIAogIAkkIHNldGZhY2wgLWIgZAogLQkkIGxzIC1kbCBkIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCiArCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCiAgCT4gZHJ3eHIteC0tLQotCisgCiAgCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKIEBAIC0zNTUsNyArMzU1LDcgQEAgUmVzZXQgdG8gYmFzZSBlbnRyaWVzCiAgTm93LCBjaG1vZCBzaG91bGQgY2hhbmdlIHRoZSBncm91cF9vYmogZW50cnkKLQorIAkgCiAgCSQgY2htb2QgNzc1IGQKIC0JJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXC4kLy9nJwogKwkkIGxzIC1kbCBkIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cXC4kLy9nJwogIAk+IGRyd3hyd3hyLXgKLQorIAkKICAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZAotZGlmZiAtLWdpdCBhL3Rlc3Qvc2JpdHMtcmVzdG9yZS50ZXN0IGIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKLWluZGV4IGRlMjEzNDAuLjU4OTliMGEgMTAwNjQ0Ci0tLS0gYS90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAotKysrIGIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKLUBAIC0xMywxMCArMTMsMTAgQEAgRW5zdXJlIHNldHRpbmcgb2YgU1VJRC9TR0lEL3N0aWNreSB2aWEgLS1yZXN0b3JlIHdvcmtzCitJbmRleDogYWNsLTIuMi41Mi90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFjbC0yLjIuNTIub3JpZy90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAorKysrIGFjbC0yLjIuNTIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKK0BAIC0xMywxMCArMTMsMTAgQEAgRW5zdXJlIHNldHRpbmcgb2YgU1VJRC9TR0lEL3N0aWNreSB2aWEgLQogIAkkIHRvdWNoIGQvZwogIAkkIHRvdWNoIGQvdQogIAkkIHNldGZhY2wgLS1yZXN0b3JlIGQuYWNsCkBAIC0xMDMsNiArOTgsMyBAQAogKwkkIGxzIC1kbCBkL2cgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCiAgCT4gLXJ3LXItU3ItLQogIAkkIHJtIC1SZiBkCi0tLQotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMKaW5kZXggZTZmNGM3Mi4uMTMzOWVjYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9lYS1hY2wuaW5jCkBAIC0xNyw3ICsxNyw3IEBACiBFWFRSQV9PRU1BS0UgPSAiUEtHX0xJQl9ESVI9JHtiYXNlX2xpYmRpcn0gUEtHX0RFVkxJQl9ESVI9JHtsaWJkaXJ9IgogCiBkb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgaW5zdGFsbC1saWIgaW5zdGFsbC1kZXYgRElTVF9ST09UPSIke0R9IgorCW9lX3J1bm1ha2UgaW5zdGFsbCBpbnN0YWxsLWxpYiBpbnN0YWxsLWRldiBESVNUX1JPT1Q9IiR7RH0iIFpJUD0iZ3ppcCAtbiIKIH0KIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ibWFwLXRvb2xzL2JtYXAtdG9vbHNfMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjQuYmIKaW5kZXggNzBiNmU5MS4uOWQ4MTkxZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjQuYmIKQEAgLTksMTAgKzksMTIgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ludGVsL2JtYXAtdG9vbHMuZ2l0IgotU1JDUkVWID0gIjlkYWQ3MjQxMDRkZjI2NTQ0MjIyNjk3MmExZTMxMDgxM2Y5ZmZjYmEiCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRneiIKIAotUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ODM0MjAxODM2MTFhYTEzN2NiYWY2OGE5MWVmMGQ3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMDY0ODkxMjcwYzE4MGMxOTBmNDE5MjViMGY2ZmI5Y2VjYWMzMDU2ZjExNjhkMjU5MmRiZTkwZTVmMjI2YzBhIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcyIKIAogUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1tbWFwIHB5dGhvbjMtc2V0dXB0b29scyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MDEzZjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCi0KLVNVTU1BUlkgPSAiUG9ydGFibGUgQm9vc3QuSmFtIGJ1aWxkIHRvb2wgZm9yIGJvb3N0IgotU0VDVElPTiA9ICJkZXZlbCIKLQotaW5oZXJpdCBuYXRpdmUKLQotU1JDX1VSSSArPSAiZmlsZTovL2JqYW0tbmF0aXZlLWJ1aWxkLWJqYW0uZGVidWcucGF0Y2giCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgLi9ib290c3RyYXAuc2ggLS13aXRoLXRvb2xzZXQ9Z2NjCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LwotICAgICMgaW5zdGFsbCB1bnN0cmlwcGVkIHZlcnNpb24gZm9yIGJqYW0KLSAgICBpbnN0YWxsIC1jIC1tIDc1NSBiamFtLmRlYnVnICR7RH0ke2JpbmRpcn0vYmphbQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJjODZhMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY2LjAuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSBib29zdC0ke1BWfS5pbmMKKworU1VNTUFSWSA9ICJQb3J0YWJsZSBCb29zdC5KYW0gYnVpbGQgdG9vbCBmb3IgYm9vc3QiCitTRUNUSU9OID0gImRldmVsIgorCitpbmhlcml0IG5hdGl2ZQorCitTUkNfVVJJICs9ICJmaWxlOi8vYmphbS1uYXRpdmUtYnVpbGQtYmphbS5kZWJ1Zy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYS1zdHJhbmdlLWFzc2VydC10eXBvLWhvdy13YXMtdGhpcy1yZWxlYXNlZC13aXRoLnBhdGNoIgorCitkb19jb21waWxlKCkgeworICAgIC4vYm9vdHN0cmFwLnNoIC0td2l0aC10b29sc2V0PWdjYworfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KKyAgICAjIGluc3RhbGwgdW5zdHJpcHBlZCB2ZXJzaW9uIGZvciBiamFtCisgICAgaW5zdGFsbCAtYyAtbSA3NTUgYmphbS5kZWJ1ZyAke0R9JHtiaW5kaXJ9L2JqYW0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY0LjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjQuMC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjN2IxYTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjQuMC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0jIFRoZSBCb29zdCB3ZWIgc2l0ZSBwcm92aWRlcyBmcmVlIHBlZXItcmV2aWV3ZWQgcG9ydGFibGUKLSMgQysrIHNvdXJjZSBsaWJyYXJpZXMuIFRoZSBlbXBoYXNpcyBpcyBvbiBsaWJyYXJpZXMgd2hpY2gKLSMgd29yayB3ZWxsIHdpdGggdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5LiBUaGUgbGlicmFyaWVzIGFyZQotIyBpbnRlbmRlZCB0byBiZSB3aWRlbHkgdXNlZnVsLCBhbmQgYXJlIGluIHJlZ3VsYXIgdXNlIGJ5Ci0jIHRob3VzYW5kcyBvZiBwcm9ncmFtbWVycyBhY3Jvc3MgYSBicm9hZCBzcGVjdHJ1bSBvZiBhcHBsaWNhdGlvbnMuCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy8iCi1MSUNFTlNFID0gIkJTTC0xLjAgJiBNSVQgJiBQeXRob24tMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRV8xXzAudHh0O21kNT1lNDIyNGNjYWVjYjE0ZDk0MmM3MWQzMWJlZjIwZDc4YyIKLQotQk9PU1RfVkVSID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIikpfSIKLUJPT1NUX01BSiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpWzA6Ml0pfSIKLUJPT1NUX1AgPSAiYm9vc3RfJHtCT09TVF9WRVJ9IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2Jvb3N0L2Jvb3N0LyR7UFZ9LyR7Qk9PU1RfUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5M2VlY2NlMmFiZWQ5ZDI0NDJjOTY3NjkxNDcwOTM0OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3YmNjNWNhYWNlOTdiYWE5NDg5MzFkNzEyZWE1ZjM3MDM4ZGJiMWM1ZDg5YjQzYWQ0ZGVmNGVkN2NiNjgzMzMyIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvdXNlcnMvZG93bmxvYWQvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYm9vc3RvcmcvcmVsZWFzZS8oP1A8cHZlcj4uKikvc291cmNlLyIKLQotUyA9ICIke1dPUktESVJ9LyR7Qk9PU1RfUH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42Ni4wLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY2LjAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMmI4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42Ni4wLmluYwpAQCAtMCwwICsxLDIxIEBACisjIFRoZSBCb29zdCB3ZWIgc2l0ZSBwcm92aWRlcyBmcmVlIHBlZXItcmV2aWV3ZWQgcG9ydGFibGUKKyMgQysrIHNvdXJjZSBsaWJyYXJpZXMuIFRoZSBlbXBoYXNpcyBpcyBvbiBsaWJyYXJpZXMgd2hpY2gKKyMgd29yayB3ZWxsIHdpdGggdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5LiBUaGUgbGlicmFyaWVzIGFyZQorIyBpbnRlbmRlZCB0byBiZSB3aWRlbHkgdXNlZnVsLCBhbmQgYXJlIGluIHJlZ3VsYXIgdXNlIGJ5CisjIHRob3VzYW5kcyBvZiBwcm9ncmFtbWVycyBhY3Jvc3MgYSBicm9hZCBzcGVjdHJ1bSBvZiBhcHBsaWNhdGlvbnMuCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy8iCitMSUNFTlNFID0gIkJTTC0xLjAgJiBNSVQgJiBQeXRob24tMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRV8xXzAudHh0O21kNT1lNDIyNGNjYWVjYjE0ZDk0MmM3MWQzMWJlZjIwZDc4YyIKKworQk9PU1RfVkVSID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIikpfSIKK0JPT1NUX01BSiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpWzA6Ml0pfSIKK0JPT1NUX1AgPSAiYm9vc3RfJHtCT09TVF9WRVJ9IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2Jvb3N0L2Jvb3N0LyR7UFZ9LyR7Qk9PU1RfUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMmRmYmQ2YzcxN2JlNGE3YmIyZDg4MDE4ZWFjY2Y3NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NzIxODE4MjUzZTZhMDk4OTU4MzE5MmY5Njc4MmM0YTk4ZWI2MjA0OTY1MzE2ZGY5ZjVhZDc1ODE5MjI1Y2E5IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvdXNlcnMvZG93bmxvYWQvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYm9vc3RvcmcvcmVsZWFzZS8oP1A8cHZlcj4uKikvc291cmNlLyIKKworUyA9ICIke1dPUktESVJ9LyR7Qk9PU1RfUH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwppbmRleCA0MWZjOTBmLi4wNDYxZWM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKQEAgLTEzNSwyOSArMTM1LDcgQEAKIAogIyB1c2UgUEFSQUxMRUxfTUFLRSB0byBzcGVlZCB1cCB0aGUgYnVpbGQsIGJ1dCBsaW1pdCBpdCBieSAtaiA2NCwgZ3JlYXRlciBwYXJhbGxlbGlzbSBjYXVzZXMgYmphbSB0byBzZWdmYXVsdCBvciB0byBpZ25vcmUgLWoKICMgaHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0Lzc2MzQKLWRlZiBnZXRfYm9vc3RfcGFyYWxsZWxfbWFrZShkKToKLSAgICBwbSA9IGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJykKLSAgICBpZiBwbToKLSAgICAgICAgIyBsb29rIGZvciAnLWonIGFuZCB0aHJvdyBvdGhlciBvcHRpb25zIChlLmcuICctbCcpIGF3YXkKLSAgICAgICAgIyBiZWNhdXNlIHRoZXkgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBpbiBiamFtCi0gICAgICAgIHBtID0gcG0uc3BsaXQoKQotICAgICAgICB3aGlsZSBwbToKLSAgICAgICAgICAgIHYgPSBOb25lCi0gICAgICAgICAgICBvcHQgPSBwbS5wb3AoMCkKLSAgICAgICAgICAgIGlmIG9wdCA9PSAnLWonOgotICAgICAgICAgICAgICAgIHYgPSBwbS5wb3AoMCkKLSAgICAgICAgICAgIGVsaWYgb3B0LnN0YXJ0c3dpdGgoJy1qJyk6Ci0gICAgICAgICAgICAgICAgdiA9IG9wdFsyOl0uc3RyaXAoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB2ID0gTm9uZQotCi0gICAgICAgICAgICBpZiB2OgotICAgICAgICAgICAgICAgIHYgPSBtaW4oNjQsIGludCh2KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gJy1qJyArIHN0cih2KQotCi0gICAgcmV0dXJuICIiCi0KLUJPT1NUX1BBUkFMTEVMX01BS0UgPSAiJHtAZ2V0X2Jvb3N0X3BhcmFsbGVsX21ha2UoZCl9IgorQk9PU1RfUEFSQUxMRUxfTUFLRSA9ICIke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsICctaiVkJywgbGltaXQ9NjQpfSIKIEJKQU1fT1BUUyAgICA9ICcke0JPT1NUX1BBUkFMTEVMX01BS0V9IC1kKzIgLXEgXAogCQkke0JKQU1fVE9PTFN9IFwKIAkJLXNCT09TVF9CVUlMRF9VU0VSX0NPTkZJRz0ke1dPUktESVJ9L3VzZXItY29uZmlnLmphbSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1ib29zdC1hc2lvLWRldGFpbC1zb2NrZXRfdHlwZXMuaHBwLWZpeC1wb2xsLmgtaW5jbHVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtYm9vc3QtYXNpby1kZXRhaWwtc29ja2V0X3R5cGVzLmhwcC1maXgtcG9sbC5oLWluY2x1ZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE4NWFhYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1ib29zdC1hc2lvLWRldGFpbC1zb2NrZXRfdHlwZXMuaHBwLWZpeC1wb2xsLmgtaW5jbHVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA0MDE5MjMwMTEzMGRjZDkxM2FhNmQ5Y2I5ZGJhOWU1ZjhkYmQ5ZDE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBEcmFzemlrPz0gPGFkcmFzemlrQHR5Y29pbnQuY29tPgotRGF0ZTogV2VkLCAyNCBBdWcgMjAxNiAyMTowMTo0MyArMDEwMAotU3ViamVjdDogW1BBVENIIDEvNF0gdXNlIFBPU0lYIHBvbGwuaCBpbnN0ZWFkIG9mIHN5cy9wb2xsLmgKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotUE9TSVggc3BlY2lmaWVzIHRoYXQgPHBvbGwuaD4gaXMgdGhlIGNvcnJlY3QgaGVhZGVyIHRvCi1pbmNsdWRlIGZvciBwb2xsKCkKLSAgaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMvcG9sbC5odG1sCi13aGVyZWFzIDxzeXMvcG9sbC5oPiBpcyBvbmx5IG5lZWRlZCBmb3IgYW5jaWVudCBnbGliYyAoPDIuMyksCi1zbyBsZXQncyBmb2xsb3cgUE9TSVggaW5zdGVhZC4KLQotQXMgYSBzaWRlLWVmZmVjdCwgdGhpcyBzaWxlbmNlcyBhIHdhcm5pbmcgd2hlbiBjb21waWxpbmcKLWFnYWluc3QgdGhlIG11c2wgQy1saWJyYXJ5OgotCi1JbiBmaWxlIGluY2x1ZGVkIGZyb20gLi9ib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwOjYxOjAsCi0gICAgICAgICAgICAgICAgIGZyb20gLi9ib29zdC9hc2lvL2lwL2FkZHJlc3NfdjQuaHBwOjIxLAotICAgICAgICAgICAgICAgICBmcm9tIC4vYm9vc3QvYXNpby9pcC9hZGRyZXNzLmhwcDoyMSwKLSAgICAgICAgICAgICAgICAgZnJvbSBsaWJzL2xvZy9zcmMvaW5pdF9mcm9tX3NldHRpbmdzLmNwcDo2NToKLTxzeXNyb290Pi91c3IvaW5jbHVkZS9zeXMvcG9sbC5oOjE6Mjogd2FybmluZzogI3dhcm5pbmcgcmVkaXJlY3RpbmcgaW5jb3JyZWN0ICNpbmNsdWRlIDxzeXMvcG9sbC5oPiB0byA8cG9sbC5oPiBbLVdjcHBdCi0gI3dhcm5pbmcgcmVkaXJlY3RpbmcgaW5jb3JyZWN0ICNpbmNsdWRlIDxzeXMvcG9sbC5oPiB0byA8cG9sbC5oPgotICBefn5+fn5+Ci0KLWV0Yy4KLQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBodHRwczovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvMTI0MTkKLSBib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYm9vc3QvYXNpby9kZXRhaWwvc29ja2V0X3R5cGVzLmhwcCBiL2Jvb3N0L2FzaW8vZGV0YWlsL3NvY2tldF90eXBlcy5ocHAKLWluZGV4IGU4YzcxMDkuLjdlNjVkM2MgMTAwNjQ0Ci0tLS0gYS9ib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwCi0rKysgYi9ib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwCi1AQCAtNTgsNyArNTgsNyBAQAotICNlbHNlCi0gIyBpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAjIGlmICFkZWZpbmVkKF9fU1lNQklBTjMyX18pCi0tIyAgaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjICBpbmNsdWRlIDxwb2xsLmg+Ci0gIyBlbmRpZgotICMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtY29ycmVjdC1lcnJvci13aGljaC1hcHBlYXJlZC13aGVuLWNvbXBpbGluZy1ub24tYy1jby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk2MDA1ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSAwMmZhNWNlZTFiOGQwMzIxNzg3MTEzZTJkYzEwYjE2MmM2NTdmMzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFJhbWV5IDxyYW1leUBycnNkLmNvbT4KLURhdGU6IFdlZCwgMSBGZWIgMjAxNyAxNjo0Mzo1OSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBjb3JyZWN0IGVycm9yIHdoaWNoIGFwcGVhcmVkIHdoZW4gY29tcGlsaW5nIG5vbiBjKysgY29tcGxpYW50Ci0gY29kZSBmb3IgYXJyYXlzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2V4cGVjdGVkIHRvIGJlIHJlbGVhc2VkIGluIHYxLjY1XQotCi0tLS0KLSBib29zdC9zZXJpYWxpemF0aW9uL2FycmF5LmhwcCB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9ib29zdC9zZXJpYWxpemF0aW9uL2FycmF5LmhwcCBiL2Jvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXkuaHBwCi1pbmRleCA2MTcwOGIzLi42MTJkMWE2IDEwMDY0NAotLS0tIGEvYm9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheS5ocHAKLSsrKyBiL2Jvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXkuaHBwCi1AQCAtMjMsNiArMjMsOCBAQCBuYW1lc3BhY2Ugc3RkewotIH0gLy8gbmFtZXNwYWNlIHN0ZAotICNlbmRpZgotIAotKyNpbmNsdWRlIDxib29zdC9zZXJpYWxpemF0aW9uL2FycmF5X3dyYXBwZXIuaHBwPgotKwotICNpZm5kZWYgQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0gCi0gI2luY2x1ZGUgPGFycmF5PgotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMi1Eb24tdC1zZXQtdXAtbTMyLW02NC13ZS1kby10aGF0LW91cnNlbHZlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoCmluZGV4IGU5YzdlNGMuLjI2ZjNjYmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoCkBAIC0xLDk3ICsxLDY1IEBACi1Gcm9tIGMwZTc4NWY4ZGEyY2FhNjYxNzA1MmIxYzdiMzQ3ZTBkZmZiMTUyMGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGU0ZDNhNzQ3MGIzMDc2OTM2NjBkMDQxMjczMmU3MjY2ZDE3MzhkOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgogRGF0ZTogVHVlLCAxMyBEZWMgMjAxNiAxMDoyOToxNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvM10gRG9uJ3Qgc2V0IHVwIC1tMzIvLW02NCwgd2UgZG8gdGhhdCBvdXJzZWx2ZXMKK1N1YmplY3Q6IFtQQVRDSCA2LzZdIERvbid0IHNldCB1cCAtbTMyLy1tNjQsIHdlIGRvIHRoYXQgb3Vyc2VsdmVzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKwogLS0tCi0gdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gfCAxMCAtLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGRlbGV0aW9ucygtKQorIHRvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtIHwgMzkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotaW5kZXggMGYzNDZhNS4uOTQyZjE0MSAxMDA2NDQKK2luZGV4IGU0ZmM2YzMyLi4zNzkxNGZkMCAxMDA2NDQKIC0tLSBhL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCiArKysgYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotQEAgLTUwOSw3ICs1MDksNiBAQCBydWxlIGNvbXBpbGUuYysrLnBjaCAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7CitAQCAtMzM3LDQ1ICszMzcsNiBAQCBydWxlIHNldC1hZGRyZXNzLW1vZGVsLW9wdGlvbnMgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQorICAgICB7CisgICAgICAgICBsb2NhbCBvcHRpb24gOworICAgICAgICAgbG9jYWwgdGFyZ2V0LW9zID0gWyBmZWF0dXJlLmdldC12YWx1ZXMgdGFyZ2V0LW9zIDogJChwcm9wZXJ0aWVzKSBdIDsKKy0gICAgICAgIGlmICQodGFyZ2V0LW9zKSA9IGFpeAorLSAgICAgICAgeworLSAgICAgICAgICAgIGlmICQobW9kZWwpID0gMzIKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1tYWl4MzIgOworLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBvcHRpb24gPSAtbWFpeDY0IDsKKy0gICAgICAgICAgICB9CistICAgICAgICB9CistICAgICAgICBlbHNlIGlmICQodGFyZ2V0LW9zKSA9IGhwdXgKKy0gICAgICAgIHsKKy0gICAgICAgICAgICBpZiAkKG1vZGVsKSA9IDMyCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBvcHRpb24gPSAtbWlscDMyIDsKKy0gICAgICAgICAgICB9CistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgb3B0aW9uID0gLW1scDY0IDsKKy0gICAgICAgICAgICB9CistICAgICAgICB9CistICAgICAgICBlbHNlCistICAgICAgICB7CistICAgICAgICAgICAgbG9jYWwgYXJjaCA9IFsgZmVhdHVyZS5nZXQtdmFsdWVzIGFyY2hpdGVjdHVyZSA6ICQocHJvcGVydGllcykgXSA7CistICAgICAgICAgICAgaWYgJChhcmNoKSA9IHBvd2VyIHx8ICQoYXJjaCkgPSBzcGFyYyB8fCAkKGFyY2gpID0geDg2CistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBpZiAkKG1vZGVsKSA9IDMyCistICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1tMzIgOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGVsc2UgaWYgJChtb2RlbCkgPSA2NAorLSAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBvcHRpb24gPSAtbTY0IDsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAjIEZvciBkYXJ3aW4sIHRoZSBtb2RlbCBjYW4gYmUgMzJfNjQuIGRhcndpbi5qYW0gd2lsbCBoYW5kbGUgdGhhdAorLSAgICAgICAgICAgICMgb24gaXRzIG93bi4KKy0gICAgICAgIH0KKyAgICAgICAgIE9QVElPTlMgb24gJCh0YXJnZXRzKSArPSAkKG9wdGlvbikgOworICAgICB9CiAgfQotIAotIGFjdGlvbnMgY29tcGlsZS5jKysucGNoCi1AQCAtNTIxLDcgKzUyMCw2IEBAIHJ1bGUgY29tcGlsZS5jLnBjaCAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gfQotIAotIGFjdGlvbnMgY29tcGlsZS5jLnBjaAotQEAgLTUzMyw3ICs1MzEsNiBAQCBydWxlIGNvbXBpbGUuYysrLnByZXByb2Nlc3MgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtdGhyZWFkaW5nICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gICAgIHNldHVwLWZwaWMgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLS0gICAgc2V0dXAtYWRkcmVzcy1tb2RlbCAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotIAotICAgICAjIFNvbWUgZXh0ZW5zaW9ucyBhcmUgY29tcGlsZWQgYXMgQysrIGJ5IGRlZmF1bHQuIEZvciBvdGhlcnMsIHdlIG5lZWQgdG8KLSAgICAgIyBwYXNzIC14IGMrKy4gV2UgY291bGQgYWx3YXlzIHBhc3MgLXggYysrIGJ1dCBkaXN0Y2MgZG9lcyBub3Qgd29yayB3aXRoIGl0LgotQEAgLTU0OCw3ICs1NDUsNiBAQCBydWxlIGNvbXBpbGUuYy5wcmVwcm9jZXNzICggdGFyZ2V0cyAqIDogc291cmNlcyAqIDogcHJvcGVydGllcyAqICkKLSB7Ci0gICAgIHNldHVwLXRocmVhZGluZyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotICAgICBzZXR1cC1mcGljICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0tICAgIHNldHVwLWFkZHJlc3MtbW9kZWwgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAKLSAgICAgIyBJZiB3ZSB1c2UgdGhlIG5hbWUgZysrIHRoZW4gZGVmYXVsdCBmaWxlIHN1ZmZpeCAtPiBsYW5ndWFnZSBtYXBwaW5nIGRvZXMKLSAgICAgIyBub3Qgd29yay4gU28gaGF2ZSB0byBwYXNzIC14IG9wdGlvbi4gTWF5YmUsIHdlIGNhbiB3b3JrIGFyb3VuZCB0aGlzIGJ5Ci1AQCAtNTY0LDcgKzU2MCw2IEBAIHJ1bGUgY29tcGlsZS5jKysgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtdGhyZWFkaW5nICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gICAgIHNldHVwLWZwaWMgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLS0gICAgc2V0dXAtYWRkcmVzcy1tb2RlbCAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotIAotICAgICAjIFNvbWUgZXh0ZW5zaW9ucyBhcmUgY29tcGlsZWQgYXMgQysrIGJ5IGRlZmF1bHQuIEZvciBvdGhlcnMsIHdlIG5lZWQgdG8KLSAgICAgIyBwYXNzIC14IGMrKy4gV2UgY291bGQgYWx3YXlzIHBhc3MgLXggYysrIGJ1dCBkaXN0Y2MgZG9lcyBub3Qgd29yayB3aXRoIGl0LgotQEAgLTU5NCw3ICs1ODksNiBAQCBydWxlIGNvbXBpbGUuYyAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gCi0gICAgICMgSWYgd2UgdXNlIHRoZSBuYW1lIGcrKyB0aGVuIGRlZmF1bHQgZmlsZSBzdWZmaXggLT4gbGFuZ3VhZ2UgbWFwcGluZyBkb2VzCi0gICAgICMgbm90IHdvcmsuIFNvIGhhdmUgdG8gcGFzcyAteCBvcHRpb24uIE1heWJlLCB3ZSBjYW4gd29yayBhcm91bmQgdGhpcyBieQotQEAgLTYxMCw3ICs2MDQsNiBAQCBydWxlIGNvbXBpbGUuZm9ydHJhbiAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gfQotIAotIGFjdGlvbnMgY29tcGlsZS5jKysgYmluZCBQQ0hfRklMRQotQEAgLTY0MSw3ICs2MzQsNiBAQCBhY3Rpb25zIGNvbXBpbGUuZm9ydHJhbgotIHJ1bGUgY29tcGlsZS5hc20gKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gICAgIExBTkcgb24gJCg8KSA9ICIteCBhc3NlbWJsZXItd2l0aC1jcHAiIDsKLSB9Ci0gCi1AQCAtOTUwLDcgKzk0Miw2IEBAIHJ1bGUgcXVvdGUtcnBhdGggKCB0YXJnZXRzICogKQotIHJ1bGUgbGluayAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLS0gICAgc2V0dXAtYWRkcmVzcy1tb2RlbCAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotICAgICBTUEFDRSBvbiAkKHRhcmdldHMpID0gIiAiIDsKLSAgICAgIyBTZXJpYWxpemUgZXhlY3V0aW9uIG9mIHRoZSAnbGluaycgYWN0aW9uLCBzaW5jZSBydW5uaW5nIE4gbGlua3MgaW4KLSAgICAgIyBwYXJhbGxlbCBpcyBqdXN0IHNsb3dlci4gRm9yIG5vdywgc2VyaWFsaXplIG9ubHkgZ2NjIGxpbmtzLCBpdCBtaWdodCBiZSBhCi1AQCAtMTAxOCw3ICsxMDA5LDYgQEAgYWN0aW9ucyBwaWVjZW1lYWwgYXJjaGl2ZQotIHJ1bGUgbGluay5kbGwgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtdGhyZWFkaW5nICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0tICAgIHNldHVwLWFkZHJlc3MtbW9kZWwgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgU1BBQ0Ugb24gJCh0YXJnZXRzKSA9ICIgIiA7Ci0gICAgIEpBTV9TRU1BUEhPUkUgb24gJCh0YXJnZXRzKSA9IDxzPmdjYy1saW5rLXNlbWFwaG9yZSA7Ci0gICAgIHF1b3RlLXJwYXRoICQodGFyZ2V0cykgOwogLS0gCi0yLjguMAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMy1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoCmluZGV4IDZiYjI1ZjguLmZiNmQ5NzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDMtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaApAQCAtMSwyMCArMSwyMSBAQAotRnJvbSA3YzQ5NTI1ODEyNTY3ZjEyMTk3MDZjNGVkMzMwYjNiZDJjYzhlOTRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwODY4NzYxZTdkMmQ3NWQ0NzIwOTBlM2VmOTZmM2QyZjljZWQyN2YzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KIERhdGU6IFR1ZSwgMTMgRGVjIDIwMTYgMTA6Mjk6MzIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIERvbid0IHNldCB1cCBhcmNoL2luc3RydWN0aW9uLXNldCBmbGFncywgd2UgZG8gdGhhdAorU3ViamVjdDogW1BBVENIIDUvNl0gRG9uJ3Qgc2V0IHVwIGFyY2gvaW5zdHJ1Y3Rpb24tc2V0IGZsYWdzLCB3ZSBkbyB0aGF0CiAgb3Vyc2VsdmVzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKwogLS0tCi0gdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gfCAxMjEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyMSBkZWxldGlvbnMoLSkKKyB0b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbSB8IDEyNyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTI3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotaW5kZXggOTQyZjE0MS4uZDA2MmMyMCAxMDA2NDQKK2luZGV4IGUzYjFiOTUyLi5lNGZjNmMzMiAxMDA2NDQKIC0tLSBhL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCiArKysgYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotQEAgLTEwNjgsMTI0ICsxMDY4LDMgQEAgbG9jYWwgcnVsZSBjcHUtZmxhZ3MgKCB0b29sc2V0IHZhcmlhYmxlIDogYXJjaGl0ZWN0dXJlIDogaW5zdHJ1Y3Rpb24tc2V0ICsgOgorQEAgLTEyNzYsMTMwICsxMjc2LDMgQEAgbG9jYWwgcnVsZSBjcHUtZmxhZ3MgKCB0b29sc2V0IHZhcmlhYmxlIDogYXJjaGl0ZWN0dXJlIDogaW5zdHJ1Y3Rpb24tc2V0ICsgOgogICAgICAgICAgPGFyY2hpdGVjdHVyZT4kKGFyY2hpdGVjdHVyZSkvPGluc3RydWN0aW9uLXNldD4kKGluc3RydWN0aW9uLXNldCkKICAgICAgICAgIDogJCh2YWx1ZXMpIDsKICB9CkBAIC02MCw2ICs2MSwxMCBAQAogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGNvcmUtYXZ4LWkgOiAtbWFyY2g9Y29yZS1hdngtaSA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogaXZ5LWJyaWRnZSA6IC1tYXJjaD1jb3JlLWF2eC1pIDsKIC1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBoYXN3ZWxsIDogLW1hcmNoPWNvcmUtYXZ4LWkgLW1hdngyIC1tZm1hIC1tYm1pIC1tYm1pMiAtbWx6Y250IDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBicm9hZHdlbGwgOiAtbWFyY2g9YnJvYWR3ZWxsIDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBza3lsYWtlIDogLW1hcmNoPXNreWxha2UgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IHNreWxha2UtYXZ4NTEyIDogLW1hcmNoPXNreWxha2UtYXZ4NTEyIDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBjYW5ub25sYWtlIDogLW1hcmNoPXNreWxha2UtYXZ4NTEyIC1tYXZ4NTEydmJtaSAtbWF2eDUxMmlmbWEgLW1zaGEgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGs2IDogLW1hcmNoPWs2IDsKIC1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBrNi0yIDogLW1hcmNoPWs2LTIgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGs2LTMgOiAtbWFyY2g9azYtMyA7CkBAIC04MSw4ICs4NiwxMCBAQAogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJkdmVyMSA6IC1tYXJjaD1iZHZlcjEgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJkdmVyMiA6IC1tYXJjaD1iZHZlcjIgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJkdmVyMyA6IC1tYXJjaD1iZHZlcjMgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJkdmVyNCA6IC1tYXJjaD1iZHZlcjQgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJ0dmVyMSA6IC1tYXJjaD1idHZlcjEgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJ0dmVyMiA6IC1tYXJjaD1idHZlcjIgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IHpudmVyMSA6IC1tYXJjaD16bnZlcjEgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IHdpbmNoaXAtYzYgOiAtbWFyY2g9d2luY2hpcC1jNiA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogd2luY2hpcDIgOiAtbWFyY2g9d2luY2hpcDIgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGMzIDogLW1hcmNoPWMzIDsKQEAgLTE0MCw0ICsxNDcsNSBAQAogLSMgQUlYIHZhcmlhbnQgb2YgUlMvNjAwMCAmIFBvd2VyUEMKIC10b29sc2V0LmZsYWdzIGdjYyBBUk9QVElPTlMgPGFkZHJlc3MtbW9kZWw+NjQvPHRhcmdldC1vcz5haXggOiAiLVg2NCIgOwogLS0gCi0yLjguMAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42NC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWMyMGUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1yZXF1aXJlIGJvb3N0LSR7UFZ9LmluYwotcmVxdWlyZSBib29zdC5pbmMKLQotU1JDX1VSSSArPSAiXAotICAgIGZpbGU6Ly9hcm0taW50cmluc2ljcy5wYXRjaCBcCi0gICAgZmlsZTovL2Jvb3N0LUNWRS0yMDEyLTI2NzcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWJvb3N0LWFzaW8tZGV0YWlsLXNvY2tldF90eXBlcy5ocHAtZml4LXBvbGwuaC1pbmNsdWQucGF0Y2ggXAotICAgIGZpbGU6Ly9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLUFwcGx5LWJvb3N0LTEuNjIuMC1uby1mb3JjZWQtZmxhZ3MucGF0Y2gucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42Ni4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYjgyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42Ni4wLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCityZXF1aXJlIGJvb3N0LmluYworCitTUkNfVVJJICs9ICJcCisgICAgZmlsZTovL2FybS1pbnRyaW5zaWNzLnBhdGNoIFwKKyAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCisgICAgZmlsZTovL2Jvb3N0LW1hdGgtZGlzYWJsZS1wY2gtZm9yLWdjYy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtQXBwbHktYm9vc3QtMS42Mi4wLW5vLWZvcmNlZC1mbGFncy5wYXRjaC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItRG9uLXQtc2V0LXVwLW0zMi1tNjQtd2UtZG8tdGhhdC1vdXJzZWx2ZXMucGF0Y2ggXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtRml4LWEtc3RyYW5nZS1hc3NlcnQtdHlwby1ob3ctd2FzLXRoaXMtcmVsZWFzZWQtd2l0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLUZpeC1hLXN0cmFuZ2UtYXNzZXJ0LXR5cG8taG93LXdhcy10aGlzLXJlbGVhc2VkLXdpdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc1MTMzZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLUZpeC1hLXN0cmFuZ2UtYXNzZXJ0LXR5cG8taG93LXdhcy10aGlzLXJlbGVhc2VkLXdpdGgucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA1Njg1NTI3MzY0MTk4NTk3ZjI1ZmMxYzYyMzZjYjY0Y2JjM2RlNDRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDQgT2N0IDIwMTcgMTg6MTY6MDggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGEgc3RyYW5nZSBhc3NlcnQgdHlwbzsgaG93IHdhcyB0aGlzIHJlbGVhc2VkIHdpdGhvdXQKKyBub3RpY2luZz8KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRvb2xzL2J1aWxkL3NyYy9lbmdpbmUvZGVidWdnZXIuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90b29scy9idWlsZC9zcmMvZW5naW5lL2RlYnVnZ2VyLmMgYi90b29scy9idWlsZC9zcmMvZW5naW5lL2RlYnVnZ2VyLmMKK2luZGV4IDgwMmYyNjIuLjE1MmE3ZTYgMTAwNjQ0CistLS0gYS90b29scy9idWlsZC9zcmMvZW5naW5lL2RlYnVnZ2VyLmMKKysrKyBiL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvZGVidWdnZXIuYworQEAgLTEwOTIsNyArMTA5Miw3IEBAIHN0YXRpYyB2b2lkIGRlYnVnX3N0YXJ0X2NoaWxkKCBpbnQgYXJnYywgY29uc3QgY2hhciAqICogYXJndiApCisgICAgIFBST0NFU1NfSU5GT1JNQVRJT04gcGkgPSB7IE5VTEwsIE5VTEwsIDAsIDAgfTsKKyAgICAgU1RBUlRVUElORk8gc2kgPSB7IHNpemVvZiggU1RBUlRVUElORk8gKSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAgfTsKKy0gICAgYXNzZXJ0KCBERUJVR19TVEFURSA9PSBERUJVR19OT19DSElMRCApOworKyAgICBhc3NlcnQoIGRlYnVnX3N0YXRlID09IERFQlVHX05PX0NISUxEICk7CisgICAgIGlmICggISBDcmVhdGVQaXBlKCAmcGlwZTFbIDAgXSwgJnBpcGUxWyAxIF0sICZzYSwgMCApICkKKyAgICAgeworICAgICAgICAgcHJpbnRmKCJpbnRlcm5hbCBlcnJvclxuIik7CitAQCAtMTE3Niw3ICsxMTc2LDcgQEAgc3RhdGljIHZvaWQgZGVidWdfc3RhcnRfY2hpbGQoIGludCBhcmdjLCBjb25zdCBjaGFyICogKiBhcmd2ICkKKyAgICAgaW50IHJlYWRfZmQ7CisgICAgIGludCBwaWQ7CisgICAgIGludCBpOworLSAgICBhc3NlcnQoIERFQlVHX1NUQVRFID09IERFQlVHX05PX0NISUxEICk7CisrICAgIGFzc2VydCggZGVidWdfc3RhdGUgPT0gREVCVUdfTk9fQ0hJTEQgKTsKKyAgICAgcGlwZShwaXBlMSk7CisgICAgIHBpcGUocGlwZTIpOworICAgICBwaWQgPSBmb3JrKCk7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlcy8wMDAzLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLXJlbGF0aXZlLXN5bWxpbmtzLWZyb20tRVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlcy8wMDAzLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLXJlbGF0aXZlLXN5bWxpbmtzLWZyb20tRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJkOTY3ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzLzAwMDMtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy11c2UtcmVsYXRpdmUtc3ltbGlua3MtZnJvbS1FVC5wYXRjaApAQCAtMCwwICsxLDcxIEBACitGcm9tIGE5ZmMxM2IyYWVlNTU2NTVkNThmY2I3N2EzMTgwZmE5OWY5NjQzOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YW5kcmUuZHJhc3ppa0BqY2kuY29tPgorRGF0ZTogV2VkLCAyOCBNYXIgMjAxOCAxNjo0NTowNSArMDEwMAorU3ViamVjdDogW1BBVENIXSB1cGRhdGUtY2EtY2VydGlmaWNhdGVzOiB1c2UgcmVsYXRpdmUgc3ltbGlua3MgZnJvbQorICRFVENDRVJUU0RJUgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCit1cGRhdGUtY2EtY2VydGlmaWNhdGVzIHN5bWxpbmtzICh0cnVzdGVkKSBjZXJ0aWZpY2F0ZXMKK2Zyb20gJENFUlRTRElSIG9yICRMT0NBTENFUlRTRElSIGludG8gJEVUQ0NFUlRTRElSLgordXBkYXRlLWNhLWNlcnRpZmljYXRlcyBjYW4gY2FsbCBob29rIHNjcmlwdHMgaW5zdGFsbGVkCitpbnRvIC9ldGMvY2EtY2VydGlmaWNhdGVzL3VwZGF0ZS5kLiBUaG9zZSBzY3JpcHRzIGFyZQorcGFzc2VkIHRoZSBwZW0gZmlsZSBpbiAvZXRjL3NzbC9jZXJ0cy8gdGhhdCB3YXMgYWRkZWQgb3IKK3JlbW92ZWQgaW4gdGhpcyBydW4gYW5kIHRob3NlIHBlbSBmaWxlcyBhcmUgYWJzb2x1dGUKK3N5bWxpbmtzIGludG8gJENFUlRTRElSIG9yICRMT0NBTENFUlRTRElSIGF0IHRoZSBtb21lbnQuCisKK1doZW4gcnVubmluZyB1cGRhdGUtY2EtY2VydGlmaWNhdGVzIGR1cmluZyBpbWFnZSBidWlsZAordGltZSwgdGhleSB0aHVzbHkgYWxsIHBvaW50IGludG8gdGhlIGhvc3QncyBmaWxlIHN5c3RlbSwKK25vdCBpbnRvIHRoZSAkU1lTUk9PVC4gVGhpcyBtZWFuczoKKyogdGhlIGhvc3QncyBmaWxlIHN5c3RlbSBsYXlvdXQgbXVzdCBtYXRjaCB0aGUgb25lCisgIHByb2R1Y2VkIGJ5IE9FLCBhbmQKKyogaXQgYWxzbyBtZWFucyB0aGF0IHRoZSBob3N0IG11c3QgaGF2ZSBpbnN0YWxsZWQgdGhlIHNhbWUKKyAgKG9yIG1vcmUpIGNlcnRpZmljYXRlcyBhcyB0aGUgdGFyZ2V0IGluICRDRVJUU0RJUiBhbmQKKyAgJExPQ0FMQ0VSVFNESVIKKworVGhpcyBpcyBhIHByb2JsZW0gd2hlbiB3YW50aW5nIHRvIGV4ZWN1dGUgaG9vayBzY3JpcHRzLAorYmVjYXVzZSB0aGV5IGFsbCBuZWVkIHRvIGJlIHRhdWdodCBhYm91dCAkU1lTUk9PVCwgYW5kCitiZWhhdmUgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhleSdyZSBjYWxsZWQKK2F0IGltYWdlIGJ1aWxkIHRpbWUsIG9yIG9uIHRoZSB0YXJnZXQsIGFzIG90aGVyd2lzZSB0aGV5Cit3aWxsIGJlIHRyeWluZyB0byBhY3R1YWxseSByZWFkIHRoZSBob3N0J3MgY2VydGlmaWNhdGVzCitmcm9tICRDRVJUU0RJUiBvciAkTE9DQUxDRVJUU0RJUi4KKworVGhpcyBhbHNvIGlzIGEgcHJvYmxlbSB3aGVuIHJ1bm5pbmcgYW55dGhpbmcgZWxzZSBkdXJpbmcKK2ltYWdlIGJ1aWxkIHRpbWUgdGhhdCBkZXBlbmRzIG9uIHRoZSB0cnVzdGVkIENBCitjZXJ0aWZpY2F0ZXMuCisKK0NoYW5naW5nIHRoZSBzeW1saW5rIHRvIGJlIHJlbGF0aXZlIHNvbHZlcyBhbGwgb2YgdGhlc2UKK3Byb2JsZW1zLiBEbyBzby4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhbmRyZS5kcmFzemlrQGpjaS5jb20+CistLS0KKyBzYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgYi9zYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKK2luZGV4IDAwZjgwYzcuLjdlOTExYTkgMTAwNzU1CistLS0gYS9zYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKKysrKyBiL3NiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworQEAgLTI5LDYgKzI5LDcgQEAgQ0VSVFNESVI9JFNZU1JPT1QvdXNyL3NoYXJlL2NhLWNlcnRpZmljYXRlcworIExPQ0FMQ0VSVFNESVI9JFNZU1JPT1QvdXNyL2xvY2FsL3NoYXJlL2NhLWNlcnRpZmljYXRlcworIENFUlRCVU5ETEU9Y2EtY2VydGlmaWNhdGVzLmNydAorIEVUQ0NFUlRTRElSPSRTWVNST09UL2V0Yy9zc2wvY2VydHMKKytGU1JPT1Q9Li4vLi4vLi4vICMgdG8gZ2V0IGZyb20gJEVUQ0NFUlRTRElSIHRvIHRoZSByb290IG9mIHRoZSBmaWxlIHN5c3RlbQorIEhPT0tTRElSPSRTWVNST09UL2V0Yy9jYS1jZXJ0aWZpY2F0ZXMvdXBkYXRlLmQKKyAKKyB3aGlsZSBbICQjIC1ndCAwIF07CitAQCAtMTI1LDkgKzEyNiwxMCBAQCBhZGQoKSB7CisgICBQRU09IiRFVENDRVJUU0RJUi8kKGJhc2VuYW1lICIkQ0VSVCIgLmNydCB8IHNlZCAtZSAncy8gL18vZycgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWUgJ3MvWygpXS89L2cnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1lICdzLywvXy9nJykucGVtIgorLSAgaWYgISB0ZXN0IC1lICIkUEVNIiB8fCBbICIkKHJlYWRsaW5rICIkUEVNIikiICE9ICIke0NFUlQjIyRTWVNST09UfSIgXQorKyAgRFNUPSIkKGVjaG8gJHtDRVJUfSB8IHNlZCAtZSAic3xeJFNZU1JPT1R8fCIgLWUgInN8Xi98JEZTUk9PVHwiICkiCisrICBpZiAhIHRlc3QgLWUgIiRQRU0iIHx8IFsgIiQocmVhZGxpbmsgIiRQRU0iKSIgIT0gIiR7RFNUfSIgXQorICAgdGhlbgorLSAgICBsbiAtc2YgIiR7Q0VSVCMjJFNZU1JPT1R9IiAiJFBFTSIKKysgICAgbG4gLXNmICIke0RTVH0iICIkUEVNIgorICAgICBlY2hvICIrJFBFTSIgPj4gIiRBRERFRCIKKyAgIGZpCisgICAjIEFkZCB0cmFpbGluZyBuZXdsaW5lIHRvIGNlcnRpZmljYXRlLCBpZiBpdCBpcyBtaXNzaW5nICgjNjM1NTcwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNzA3MTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgppbmRleCBlNGZmYmQzLi4zNTAyOTQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgpAQCAtMTYsMTUgKzE2LDE3IEBACiAKIFNSQ1JFViA9ICIzNGI4ZTE5ZTU0MWI4YWY0MDc2NjE2YjJlMTcwYzdhNzBjZGFkZWQwIgogCi1TUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9jb2xsYWItbWFpbnQvY2EtY2VydGlmaWNhdGVzLmdpdCBcCitTUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL2NhLWNlcnRpZmljYXRlcy5naXQ7cHJvdG9jb2w9aHR0cHMgXAogICAgICAgICAgICBmaWxlOi8vMDAwMi11cGRhdGUtY2EtY2VydGlmaWNhdGVzLXVzZS1TWVNST09ULnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy1kb24tdC11c2UtRGViaWFuaXNtcy1pbi1ydW4tcC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtY2EtY2VydGlmaWNhdGVzLXN1cHBvcnQtVG95Ym94LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2RlZmF1bHQtc3lzcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zYmluZGlyLnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vc2JpbmRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLXJlbGF0aXZlLXN5bWxpbmtzLWZyb20tRVQucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCi1TWVNST09UX0RJUlNfY2xhc3MtbmF0aXZlICs9ICIvZXRjIgorU1lTUk9PVF9ESVJTX2NsYXNzLW5hdGl2ZSArPSAiJHtzeXNjb25mZGlyfSAke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcyIKIAogaW5oZXJpdCBhbGxhcmNoCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvMDAwMS1yZXBsYWNlLWtyYjUtY29uZmlnLXdpdGgtcGtnLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvMDAwMS1yZXBsYWNlLWtyYjUtY29uZmlnLXdpdGgtcGtnLWNvbmZpZy5wYXRjaAppbmRleCA3NGU1ZDk5Li5hN2RiMWIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC8wMDAxLXJlcGxhY2Uta3JiNS1jb25maWctd2l0aC1wa2ctY29uZmlnLnBhdGNoCkBAIC0xLDE3ICsxLDIxIEBACi1bUEFUQ0hdIHJlcGxhY2Uga3JiNS1jb25maWcgd2l0aCBwa2ctY29uZmlnCitGcm9tIGVkNzBmMDYyMzcwOGI4YTZjMWY1OGE1ZDI0M2Q4N2M1ZmY0NWIyNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI2IEFwciAyMDE2IDEzOjEzOjAxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlcGxhY2Uga3JiNS1jb25maWcgd2l0aCBwa2ctY29uZmlnCiAKIFVwc3RyZWFtLVN0YXR1czogIFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgfCA2ICsrKy0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGU5OWIzMDMuLmRjOTNmMzkgMTAwNjQ0CitpbmRleCA1NTY5YTI2Li41NmIwMzgwIDEwMDc1NQogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMTk2LDcgKzExOTYsNyBAQCBBQ19BUkdfV0lUSChnc3NhcGksCitAQCAtMTI5MCw3ICsxMjkwLDcgQEAgQUNfQVJHX1dJVEgoZ3NzYXBpLAogICAgZmkKICBdKQogIApAQCAtMjAsNyArMjQsNyBAQAogIAogIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIEdTUy1BUEkgc3VwcG9ydCBpcyByZXF1ZXN0ZWRdKQotQEAgLTEyMDcsNyArMTIwNyw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgorQEAgLTEzMDEsNyArMTMwMSw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgogICAgICAgaWYgdGVzdCAtbiAiJGhvc3RfYWxpYXMiIC1hIC1mICIkR1NTQVBJX1JPT1QvYmluLyRob3N0X2FsaWFzLWtyYjUtY29uZmlnIjsgdGhlbgogICAgICAgICAgR1NTQVBJX0lOQ1M9YCRHU1NBUElfUk9PVC9iaW4vJGhvc3RfYWxpYXMta3JiNS1jb25maWcgLS1jZmxhZ3MgZ3NzYXBpYAogICAgICAgZWxpZiB0ZXN0IC1mICIkS1JCNUNPTkZJRyI7IHRoZW4KQEAgLTI5LDcgKzMzLDcgQEAKICAgICAgIGVsaWYgdGVzdCAiJEdTU0FQSV9ST09UIiAhPSAieWVzIjsgdGhlbgogICAgICAgICAgR1NTQVBJX0lOQ1M9Ii1JJEdTU0FQSV9ST09UL2luY2x1ZGUiCiAgICAgICBmaQotQEAgLTEzMDAsNyArMTMwMCw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgorQEAgLTEzOTQsNyArMTM5NCw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgogICAgICAgICAgZWxpZiB0ZXN0IC1mICIkS1JCNUNPTkZJRyI7IHRoZW4KICAgICAgICAgICAgIGRubCBrcmI1LWNvbmZpZyBkb2Vzbid0IGhhdmUgLS1saWJzLW9ubHktTCBvciBzaW1pbGFyLCBwdXQgZXZlcnl0aGluZwogICAgICAgICAgICAgZG5sIGludG8gTElCUwpAQCAtMzgsNiArNDIsMyBAQAogICAgICAgICAgICAgTElCUz0iJGdzc19saWJzICRMSUJTIgogICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FzZSAkaG9zdCBpbgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAwOTkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAwOTkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2ZmYxYjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMDk5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSBjOTMzMmZhNWU4NGYyNGRhMzAwYjQyYjFhOTMxYWRlOTI5ZDNlMjdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KLURhdGU6IFR1ZSwgMSBBdWcgMjAxNyAxNzoxNzowNiArMDIwMAotU3ViamVjdDogW1BBVENIXSBmaWxlOiBvdXRwdXQgdGhlIGNvcnJlY3QgYnVmZmVyIHRvIHRoZSB1c2VyCi0KLVJlZ3Jlc3Npb24gYnJvdWdodCBieSA3YzMxMmY4NGVhOTMwZDggKEFwcmlsIDIwMTcpCi0KLUNWRTogQ1ZFLTIwMTctMTAwMDA5OQotCi1CdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcwODA5Qy5odG1sCi0KLUNyZWRpdCB0byBPU1MtRnV6eiBmb3IgdGhlIGRpc2NvdmVyeQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1odHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2NvbW1pdC9jOTMzMmZhNWU4NGYyNGRhMzAwYjQyYjFhOTMxYWRlOTI5ZDNlMjdkCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliL2ZpbGUuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9maWxlLmMgYi9saWIvZmlsZS5jCi1pbmRleCBiZDQyNmVhYzIuLjY2NmNiZTc1YiAxMDA2NDQKLS0tLSBhL2xpYi9maWxlLmMKLSsrKyBiL2xpYi9maWxlLmMKLUBAIC00OTksMTEgKzQ5OSwxMSBAQCBzdGF0aWMgQ1VSTGNvZGUgZmlsZV9kbyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCi0gICAgICAgICAgICAgIEN1cmxfbW9udGhbdG0tPnRtX21vbl0sCi0gICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCi0gICAgICAgICAgICAgIHRtLT50bV9taW4sCi0gICAgICAgICAgICAgIHRtLT50bV9zZWMpOwotLSAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT1RILCBidWYsIDApOwotKyAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT1RILCBoZWFkZXIsIDApOwotICAgICBpZighcmVzdWx0KQotICAgICAgIC8qIHNldCB0aGUgZmlsZSBzaXplIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHBvc3QgdHJhbnNmZXIgKi8KLSAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgZXhwZWN0ZWRfc2l6ZSk7Ci0gICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NGYxZGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAzNThiMmIxMzFhZDZjMDk1Njk2ZjIwZGNmYTYyYjgzMDUyNjNmODk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIFN0ZW5iZXJnIDxkYW5pZWxAaGF4eC5zZT4KLURhdGU6IFR1ZSwgMSBBdWcgMjAxNyAxNzoxNjo0NiArMDIwMAotU3ViamVjdDogW1BBVENIXSB0ZnRwOiByZWplY3QgZmlsZSBuYW1lIGxlbmd0aHMgdGhhdCBkb24ndCBmaXQKLQotLi4uIGFuZCB0aGVyZWJ5IGF2b2lkIHRlbGxpbmcgc2VuZCgpIHRvIHNlbmQgb2ZmIG1vcmUgYnl0ZXMgdGhhbiB0aGUKLXNpemUgb2YgdGhlIGJ1ZmZlciEKLQotQ1ZFOiBDVkUtMjAxNy0xMDAwMTAwCi0KLUJ1ZzogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAxNzA4MDlCLmh0bWwKLVJlcG9ydGVkLWJ5OiBFdmVuIFJvdWF1bHQKLQotQ3JlZGl0IHRvIE9TUy1GdXp6IGZvciB0aGUgZGlzY292ZXJ5Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvY29tbWl0LzM1OGIyYjEzMWFkNmMwOTU2OTZmMjBkY2ZhNjJiODMwNTI2M2Y4OTgKLQotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvdGZ0cC5jIHwgICAgNyArKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3RmdHAuYyBiL2xpYi90ZnRwLmMKLWluZGV4IDAyYmQ4NDIuLmY2ZjRiY2UgMTAwNjQ0Ci0tLS0gYS9saWIvdGZ0cC5jCi0rKysgYi9saWIvdGZ0cC5jCi1AQCAtNSw3ICs1LDcgQEAKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAotICAqCi0tICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KLSsgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE3LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKLSAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi1AQCAtNDkxLDYgKzQ5MSwxMSBAQCBzdGF0aWMgQ1VSTGNvZGUgdGZ0cF9zZW5kX2ZpcnN0KHRmdHBfc3RhdGVfZGF0YV90ICpzdGF0ZSwgdGZ0cF9ldmVudF90IGV2ZW50KQotICAgICBpZihyZXN1bHQpCi0gICAgICAgcmV0dXJuIHJlc3VsdDsKLSAKLSsgICAgaWYoc3RybGVuKGZpbGVuYW1lKSA+IChzdGF0ZS0+Ymxrc2l6ZSAtIHN0cmxlbihtb2RlKSAtIDQpKSB7Ci0rICAgICAgZmFpbGYoZGF0YSwgIlRGVFAgZmlsZSBuYW1lIHRvbyBsb25nXG4iKTsKLSsgICAgICByZXR1cm4gQ1VSTEVfVEZUUF9JTExFR0FMOyAvKiB0b28gbG9uZyBmaWxlIG5hbWUgZmllbGQgKi8KLSsgICAgfQotKwotICAgICBzbnByaW50ZigoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGErMiwKLSAgICAgICAgICAgICAgc3RhdGUtPmJsa3NpemUsCi0gICAgICAgICAgICAgICIlcyVjJXMlYyIsIGZpbGVuYW1lLCAnXDAnLCAgbW9kZSwgJ1wwJyk7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzAwZmZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLUZyb20gNDUzZTdhN2EwM2EyY2VjNzQ5YWJkMzg3OGE0OGU3MjhjNTE1Y2NhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmllbCBTdGVuYmVyZyA8ZGFuaWVsQGhheHguc2U+Ci1EYXRlOiBUdWUsIDEgQXVnIDIwMTcgMTc6MTY6MDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2xvYjogZG8gbm90IGNvbnRpbnVlIHBhcnNpbmcgYWZ0ZXIgYSBzdHJ0b3VsKCkgb3ZlcmZsb3cKLSByYW5nZQotCi1BZGRlZCB0ZXN0IDEyODkgdG8gdmVyaWZ5LgotCi1DVkU6IENWRS0yMDE3LTEwMDAxMDEKLQotQnVnOiBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDE3MDgwOUEuaHRtbAotUmVwb3J0ZWQtYnk6IEJyaWFuIENhcnBlbnRlcgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1odHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2NvbW1pdC80NTNlN2E3YTAzYTJjZWM3NDlhYmQzODc4YTQ4ZTcyOGM1MTVjY2E3Ci0KLVJlYmFzZSB0aGUgdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgY2hhbmdlcyBmb3IgY3VybCA3LjU0LjEuCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3Rvb2xfdXJsZ2xvYi5jICAgICAgfCAgNSArKysrLQotIHRlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIHwgIDIgKy0KLSB0ZXN0cy9kYXRhL3Rlc3QxMjg5ICAgICB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9kYXRhL3Rlc3QxMjg5Ci0KLWRpZmYgLS1naXQgYS9zcmMvdG9vbF91cmxnbG9iLmMgYi9zcmMvdG9vbF91cmxnbG9iLmMKLWluZGV4IDZiMWVjZTAuLmQ1NmRjZDkgMTAwNjQ0Ci0tLS0gYS9zcmMvdG9vbF91cmxnbG9iLmMKLSsrKyBiL3NyYy90b29sX3VybGdsb2IuYwotQEAgLTI3Myw3ICsyNzMsMTAgQEAgc3RhdGljIENVUkxjb2RlIGdsb2JfcmFuZ2UoVVJMR2xvYiAqZ2xvYiwgY2hhciAqKnBhdHRlcm5wLAotICAgICAgICAgfQotICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAgbWF4X24gPSBzdHJ0b3VsKHBhdHRlcm4sICZlbmRwLCAxMCk7Ci0tICAgICAgICBpZihlcnJubyB8fCAoKmVuZHAgPT0gJzonKSkgewotKyAgICAgICAgaWYoZXJybm8pCi0rICAgICAgICAgIC8qIG92ZXJmbG93ICovCi0rICAgICAgICAgIGVuZHAgPSBOVUxMOwotKyAgICAgICAgZWxzZSBpZigqZW5kcCA9PSAnOicpIHsKLSAgICAgICAgICAgcGF0dGVybiA9IGVuZHArMTsKLSAgICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAgICBzdGVwX24gPSBzdHJ0b3VsKHBhdHRlcm4sICZlbmRwLCAxMCk7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYwotaW5kZXggMTU1MzIwYS4uN2FkYmVlNiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCi0rKysgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYwotQEAgLTEzMiw3ICsxMzIsNyBAQCB0ZXN0MTI1MiB0ZXN0MTI1MyB0ZXN0MTI1NCB0ZXN0MTI1NSB0ZXN0MTI1NiB0ZXN0MTI1NyB0ZXN0MTI1OCB0ZXN0MTI1OSBcCi0gdGVzdDEyNjAgdGVzdDEyNjEgdGVzdDEyNjIgXAotIFwKLSB0ZXN0MTI4MCB0ZXN0MTI4MSB0ZXN0MTI4MiB0ZXN0MTI4MyB0ZXN0MTI4NCB0ZXN0MTI4NSB0ZXN0MTI4NiB0ZXN0MTI4NyBcCi0tdGVzdDEyODggXAotK3Rlc3QxMjg4IHRlc3QxMjg5IFwKLSBcCi0gdGVzdDEzMDAgdGVzdDEzMDEgdGVzdDEzMDIgdGVzdDEzMDMgdGVzdDEzMDQgdGVzdDEzMDUgdGVzdDEzMDYgdGVzdDEzMDcgXAotIHRlc3QxMzA4IHRlc3QxMzA5IHRlc3QxMzEwIHRlc3QxMzExIHRlc3QxMzEyIHRlc3QxMzEzIHRlc3QxMzE0IHRlc3QxMzE1IFwKLWRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMjg5IGIvdGVzdHMvZGF0YS90ZXN0MTI4OQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ2NzljYzAKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3RzL2RhdGEvdGVzdDEyODkKLUBAIC0wLDAgKzEsMzUgQEAKLSs8dGVzdGNhc2U+Ci0rPGluZm8+Ci0rPGtleXdvcmRzPgotK0hUVFAKLStIVFRQIEdFVAotK2dsb2JiaW5nCi0rPC9rZXl3b3Jkcz4KLSs8L2luZm8+Ci0rCi0rIwotKyMgU2VydmVyLXNpZGUKLSs8cmVwbHk+Ci0rPC9yZXBseT4KLSsKLSsjIENsaWVudC1zaWRlCi0rPGNsaWVudD4KLSs8c2VydmVyPgotK2h0dHAKLSs8L3NlcnZlcj4KLSs8bmFtZT4KLStnbG9iYmluZyB3aXRoIG92ZXJmbG93IGFuZCBiYWQgc3ludHh4Ci0rPC9uYW1lPgotKzxjb21tYW5kPgotK2h0dHA6Ly91ciUyMFswLTYwMDAwMDAwMDAwMDAwMDAwMDAwCi0rPC9jb21tYW5kPgotKzwvY2xpZW50PgotKwotKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCi0rPHZlcmlmeT4KLSsjIGN1cmw6ICgzKSBbZ2xvYmJpbmddIGJhZCByYW5nZSBpbiBjb2x1bW4gCi0rPGVycm9yY29kZT4KLSszCi0rPC9lcnJvcmNvZGU+Ci0rPC92ZXJpZnk+Ci0rPC90ZXN0Y2FzZT4KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIwNzk4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAyNTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotRnJvbSAxYjJlYmE2Zjk3NDVjMDY0ZjcyODNlMGFkYThmNDZkZjlkOWQ2ZTQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAwMDoyNjo1MCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBGVFA6IHplcm8gdGVybWluYXRlIHRoZSBlbnRyeSBwYXRoIGV2ZW4gb24gYmFkIGlucHV0Ci0KLS4uLiBhIHNpbmdsZSBkb3VibGUgcXVvdGUgY291bGQgbGVhdmUgdGhlIGVudHJ5IHBhdGggYnVmZmVyIHdpdGhvdXQgYSB6ZXJvCi10ZXJtaW5hdGluZyBieXRlLiBDVkUtMjAxNy0xMDAwMjU0Ci0KLVRlc3QgMTE1MiBhZGRlZCB0byB2ZXJpZnkuCi0KLVJlcG9ydGVkLWJ5OiBNYXggRHltb25kCi1CdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcxMDA0Lmh0bWwKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xMDAwMjU0Ci1TaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvZnRwLmMgICAgICAgICAgICAgICB8ICA3ICsrKystLQotIHRlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIHwgIDIgKysKLSB0ZXN0cy9kYXRhL3Rlc3QxMTUyICAgICB8IDYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2RhdGEvdGVzdDExNTIKLQotZGlmZiAtLWdpdCBhL2xpYi9mdHAuYyBiL2xpYi9mdHAuYwotaW5kZXggNWVkZWMzNy4uNDkzZGJmOSAxMDA2NDQKLS0tLSBhL2xpYi9mdHAuYwotKysrIGIvbGliL2Z0cC5jCi1AQCAtMjgyNiw2ICsyODI2LDcgQEAgc3RhdGljIENVUkxjb2RlIGZ0cF9zdGF0ZW1hY2hfYWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKLSAgICAgICAgIGNvbnN0IHNpemVfdCBidWZfc2l6ZSA9IGRhdGEtPnNldC5idWZmZXJfc2l6ZTsKLSAgICAgICAgIGNoYXIgKmRpcjsKLSAgICAgICAgIGNoYXIgKnN0b3JlOwotKyAgICAgICAgYm9vbCBlbnRyeV9leHRyYWN0ZWQgPSBGQUxTRTsKLSAKLSAgICAgICAgIGRpciA9IG1hbGxvYyhucmVhZCArIDEpOwotICAgICAgICAgaWYoIWRpcikKLUBAIC0yODU3LDcgKzI4NTgsNyBAQCBzdGF0aWMgQ1VSTGNvZGUgZnRwX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgIC8qIGVuZCBvZiBwYXRoICovCi0tICAgICAgICAgICAgICAgICpzdG9yZSA9ICdcMCc7IC8qIHplcm8gdGVybWluYXRlICovCi0rICAgICAgICAgICAgICAgIGVudHJ5X2V4dHJhY3RlZCA9IFRSVUU7Ci0gICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBnZXQgb3V0IG9mIHRoaXMgbG9vcCAqLwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLUBAIC0yODY2LDcgKzI4NjcsOSBAQCBzdGF0aWMgQ1VSTGNvZGUgZnRwX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQotICAgICAgICAgICAgIHN0b3JlKys7Ci0gICAgICAgICAgICAgcHRyKys7Ci0gICAgICAgICAgIH0KLS0KLSsgICAgICAgICAgKnN0b3JlID0gJ1wwJzsgLyogemVybyB0ZXJtaW5hdGUgKi8KLSsgICAgICAgIH0KLSsgICAgICAgIGlmKGVudHJ5X2V4dHJhY3RlZCkgewotICAgICAgICAgICAvKiBJZiB0aGUgcGF0aCBuYW1lIGRvZXMgbm90IGxvb2sgbGlrZSBhbiBhYnNvbHV0ZSBwYXRoIChpLmUuOiBpdAotICAgICAgICAgICAgICBkb2VzIG5vdCBzdGFydCB3aXRoIGEgJy8nKSwgd2UgcHJvYmFibHkgbmVlZCBzb21lIHNlcnZlci1kZXBlbmRlbnQKLSAgICAgICAgICAgICAgYWRqdXN0bWVudHMuIEZvciBleGFtcGxlLCB0aGlzIGlzIHRoZSBjYXNlIHdoZW4gY29ubmVjdGluZyB0bwotZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIGIvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKLWluZGV4IDdhZGJlZTYuLjUyODQ2NTQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kYXRhL01ha2VmaWxlLmluYwotKysrIGIvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKLUBAIC0xMjEsNiArMTIxLDggQEAgdGVzdDExMjAgdGVzdDExMjEgdGVzdDExMjIgdGVzdDExMjMgdGVzdDExMjQgdGVzdDExMjUgdGVzdDExMjYgdGVzdDExMjcgXAotIHRlc3QxMTI4IHRlc3QxMTI5IHRlc3QxMTMwIHRlc3QxMTMxIHRlc3QxMTMyIHRlc3QxMTMzIHRlc3QxMTM0IHRlc3QxMTM1IFwKLSB0ZXN0MTEzNiB0ZXN0MTEzNyB0ZXN0MTEzOCB0ZXN0MTEzOSB0ZXN0MTE0MCB0ZXN0MTE0MSB0ZXN0MTE0MiB0ZXN0MTE0MyBcCi0gdGVzdDExNDQgdGVzdDExNDUgdGVzdDExNDYgXAotK3Rlc3QxMTUyIFwKLStcCi0gdGVzdDEyMDAgdGVzdDEyMDEgdGVzdDEyMDIgdGVzdDEyMDMgdGVzdDEyMDQgdGVzdDEyMDUgdGVzdDEyMDYgdGVzdDEyMDcgXAotIHRlc3QxMjA4IHRlc3QxMjA5IHRlc3QxMjEwIHRlc3QxMjExIHRlc3QxMjEyIHRlc3QxMjEzIHRlc3QxMjE0IHRlc3QxMjE1IFwKLSB0ZXN0MTIxNiB0ZXN0MTIxNyB0ZXN0MTIxOCB0ZXN0MTIxOSBcCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTE1MiBiL3Rlc3RzL2RhdGEvdGVzdDExNTIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hYThjMGE3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy9kYXRhL3Rlc3QxMTUyCi1AQCAtMCwwICsxLDYxIEBACi0rPHRlc3RjYXNlPgotKzxpbmZvPgotKzxrZXl3b3Jkcz4KLStGVFAKLStQQVNWCi0rTElTVAotKzwva2V5d29yZHM+Ci0rPC9pbmZvPgotKyMKLSsjIFNlcnZlci1zaWRlCi0rPHJlcGx5PgotKzxzZXJ2ZXJjbWQ+Ci0rUkVQTFkgUFdEIDI1NyAianVzdCBvbmUKLSs8L3NlcnZlcmNtZD4KLSsKLSsjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKLSsjIEZUUCBzZXJ2ZXIKLSs8ZGF0YSBtb2RlPSJ0ZXh0Ij4KLSt0b3RhbCAyMAotK2Ryd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KLStkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuLgotK2Ryd3hyLXhyLXggICAyIDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgTWF5ICAyICAxOTk2IGN1cmwtcmVsZWFzZXMKLSstci0tci0tci0tICAgMSAwICAgICAgICAxICAgICAgICAgICAgIDM1IEp1bCAxNiAgMTk5NiBSRUFETUUKLStscnd4cnd4cnd4ICAgMSAwICAgICAgICAxICAgICAgICAgICAgICA3IERlYyAgOSAgMTk5OSBiaW4gLT4gdXNyL2JpbgotK2RyLXhyLXhyLXggICAyIDAgICAgICAgIDEgICAgICAgICAgICA1MTIgT2N0ICAxICAxOTk3IGRldgotK2Ryd3hyd3hyd3ggICAyIDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgTWF5IDI5IDE2OjA0IGRvd25sb2FkLmh0bWwKLStkci14ci14ci14ICAgMiAwICAgICAgICAxICAgICAgICAgICAgNTEyIE5vdiAzMCAgMTk5NSBldGMKLStkcnd4cnd4cnd4ICAgMiA5OCAgICAgICAxICAgICAgICAgICAgNTEyIE9jdCAzMCAxNDozMyBwdWIKLStkci14ci14ci14ICAgNSAwICAgICAgICAxICAgICAgICAgICAgNTEyIE9jdCAgMSAgMTk5NyB1c3IKLSs8L2RhdGE+Ci0rPC9yZXBseT4KLSsKLSsjCi0rIyBDbGllbnQtc2lkZQotKzxjbGllbnQ+Ci0rPHNlcnZlcj4KLStmdHAKLSs8L3NlcnZlcj4KLSsgPG5hbWU+Ci0rRlRQIHdpdGggdW5ldmVuIHF1b3RlIGluIFBXRCByZXNwb25zZQotKyA8L25hbWU+Ci0rIDxjb21tYW5kPgotK2Z0cDovLyVIT1NUSVA6JUZUUFBPUlQvdGVzdC0xMTUyLwotKzwvY29tbWFuZD4KLSs8L2NsaWVudD4KLSsKLSsjCi0rIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKLSs8dmVyaWZ5PgotKzxwcm90b2NvbD4KLStVU0VSIGFub255bW91cwotK1BBU1MgZnRwQGV4YW1wbGUuY29tCi0rUFdECi0rQ1dEIHRlc3QtMTE1MgotK0VQU1YKLStUWVBFIEEKLStMSVNUCi0rUVVJVAotKzwvcHJvdG9jb2w+Ci0rPC92ZXJpZnk+Ci0rPC90ZXN0Y2FzZT4KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvY29uZmlndXJlX2FjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9jb25maWd1cmVfYWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YmQzMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9jb25maWd1cmVfYWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6ICBQZW5kaW5nCi0KLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjgxLDcgKzI4MSw3IEBAIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAKLSBDVVJMX0NIRUNLX0NPTVBJTEVSCi0gQ1VSTF9TRVRfQ09NUElMRVJfQkFTSUNfT1BUUwotLUNVUkxfU0VUX0NPTVBJTEVSX0RFQlVHX09QVFMKLStkbmwgQ1VSTF9TRVRfQ09NUElMRVJfREVCVUdfT1BUUwotIENVUkxfU0VUX0NPTVBJTEVSX09QVElNSVpFX09QVFMKLSBDVVJMX1NFVF9DT01QSUxFUl9XQVJOSU5HX09QVFMKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY4YmJlYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL3JlcHJvZHVjaWJsZS1ta2hlbHAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDFmZTkyZmQzZGQ2NGM3MjI4ZjZmZjQxZTNmYzE2YzRmMjM5MjQ3MWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAwODoyODoyNSAtMDcwMAotU3ViamVjdDogbWtoZWxwLnBsOiBzdXBwb3J0IHJlcHJvZHVjaWJsZSBidWlsZAotCi1EbyBub3QgZ2VuZXJhdGUgbGluZSB3aXRoIHRoZSBjdXJyZW50IGRhdGUsIHN1Y2ggYXM6Ci0KLSogR2VuZXJhdGlvbiB0aW1lOiBUdWUgT2N0LTI0IDE4OjAxOjQxIDIwMTcKLQotVGhpcyB3aWxsIGltcHJvdmUgcmVwcm9kdWNpYmlsaXR5LiBUaGUgZ2VuZXJhdGVkIHN0cmluZyBpcyBvbmx5Ci1wYXJ0IG9mIGEgY29tbWVudCwgc28gdGhlcmUgc2hvdWxkIGJlIG5vIGFkdmVyc2UgY29uc2VxdWVuY2VzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvcHVsbC8yMDI2IF0KLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL3NyYy9ta2hlbHAucGwgYi9zcmMvbWtoZWxwLnBsCi1pbmRleCAyNzBkYWEyLi43NTdmMDI0IDEwMDc1NQotLS0tIGEvc3JjL21raGVscC5wbAotKysrIGIvc3JjL21raGVscC5wbAotQEAgLTEwMiwxMSArMTAyLDkgQEAgd2hpbGUoPFJFQUQ+KSB7Ci0gfQotIGNsb3NlKFJFQUQpOwotIAotLSRub3cgPSBsb2NhbHRpbWU7Ci0gcHJpbnQgPDxIRUFECi0gLyoKLSAgKiBORVZFUiBFVkVSIGVkaXQgdGhpcyBtYW51YWxseSwgZml4IHRoZSBta2hlbHAucGwgc2NyaXB0IGluc3RlYWQhCi0tICogR2VuZXJhdGlvbiB0aW1lOiAkbm93Ci0gICovCi0gI2lmZGVmIFVTRV9NQU5VQUwKLSAjaW5jbHVkZSAidG9vbF9odWdlaGVscC5oIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjU0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThmMDUzMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHRvb2wgYW5kIGxpYnJhcnkgZm9yIGNsaWVudC1zaWRlIFVSTCB0cmFuc2ZlcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vY3VybC5oYXh4LnNlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpc3QuY2dpP2xpc3Q9Y3VybC10cmFja2VyIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTg7bWQ1PTNhMzQ5NDJmNGFlM2ZiZjFhMzAzMTYwNzE0ZTY2NGFjIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQvY3VybC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDA5OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwMDAxMDEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaCBcCi0iCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAotICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaCBcCi0iCi0KLSMgY3VybCBsaWtlcyB0byBzZXQgLWcwIGluIENGTEFHUywgc28gd2Ugc3RvcCBpdAotIyBmcm9tIG11Y2tpbmcgYXJvdW5kIHdpdGggZGVidWcgb3B0aW9ucwotIwotU1JDX1VSSSArPSAiIGZpbGU6Ly9jb25maWd1cmVfYWMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YjZlYjcyMmY1MTJlN2EyNDg1NWZmMDg0ZjU0ZmU1NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZGZjNGRmMmQwMDFlZTBjNDRlYzA3MTE4NmU3NzAwNDYyNDkyNjNjNDkxZmNhZTQ4ZGYwZTFhM2NhOGYyNWEwIgotCi1DVkVfUFJPRFVDVCA9ICJsaWJjdXJsIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gZ251dGxzIHByb3h5IHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKLQotIyAnYXJlcycgYW5kICd0aHJlYWRlZC1yZXNvbHZlcicgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZQotUEFDS0FHRUNPTkZJR1thcmVzXSA9ICItLWVuYWJsZS1hcmVzLC0tZGlzYWJsZS1hcmVzLGMtYXJlcyIKLVBBQ0tBR0VDT05GSUdbZGljdF0gPSAiLS1lbmFibGUtZGljdCwtLWRpc2FibGUtZGljdCwiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKLVBBQ0tBR0VDT05GSUdbZ29waGVyXSA9ICItLWVuYWJsZS1nb3BoZXIsLS1kaXNhYmxlLWdvcGhlciwiCi1QQUNLQUdFQ09ORklHW2ltYXBdID0gIi0tZW5hYmxlLWltYXAsLS1kaXNhYmxlLWltYXAsIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCwiCi1QQUNLQUdFQ09ORklHW2xkYXBzXSA9ICItLWVuYWJsZS1sZGFwcywtLWRpc2FibGUtbGRhcHMsIgotUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0td2l0aC1saWJpZG4sLS13aXRob3V0LWxpYmlkbixsaWJpZG4iCi1QQUNLQUdFQ09ORklHW2xpYnNzaDJdID0gIi0td2l0aC1saWJzc2gyLC0td2l0aG91dC1saWJzc2gyLGxpYnNzaDIiCi1QQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgotUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKLVBBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgotUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKLVBBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCi1QQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgotUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1t0ZWxuZXRdID0gIi0tZW5hYmxlLXRlbG5ldCwtLWRpc2FibGUtdGVsbmV0LCIKLVBBQ0tBR0VDT05GSUdbdGZ0cF0gPSAiLS1lbmFibGUtdGZ0cCwtLWRpc2FibGUtdGZ0cCwiCi1QQUNLQUdFQ09ORklHW3RocmVhZGVkLXJlc29sdmVyXSA9ICItLWVuYWJsZS10aHJlYWRlZC1yZXNvbHZlciwtLWRpc2FibGUtdGhyZWFkZWQtcmVzb2x2ZXIiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uLywtLXdpdGhvdXQtemxpYix6bGliIgotUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKLVBBQ0tBR0VDT05GSUdbbmdodHRwMl0gPSAiLS13aXRoLW5naHR0cDIsLS13aXRob3V0LW5naHR0cDIsbmdodHRwMiIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtY3J5cHRvLWF1dGggXAotICAgIC0td2l0aC1jYS1idW5kbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCi0gICAgLS13aXRob3V0LWxpYm1ldGFsaW5rIFwKLSAgICAtLXdpdGhvdXQtbGlicHNsIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGN1cmwvY3VybGJ1aWxkLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCSMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gY3VybC1jb25maWcKLQlzZWQgLWkgXAotCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzLC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgJHtEfSR7YmluZGlyfS9jdXJsLWNvbmZpZwotfQotCi1QQUNLQUdFUyA9KyAibGliJHtCUE59IgotCi1GSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKLVJSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiY2EtY2VydGlmaWNhdGVzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42MC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjYwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUwNGZhNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42MC4wLmJiCkBAIC0wLDAgKzEsNzAgQEAKK1NVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHRvb2wgYW5kIGxpYnJhcnkgZm9yIGNsaWVudC1zaWRlIFVSTCB0cmFuc2ZlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vY3VybC5oYXh4LnNlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpc3QuY2dpP2xpc3Q9Y3VybC10cmFja2VyIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTg7bWQ1PTNhMzQ5NDJmNGFlM2ZiZjFhMzAzMTYwNzE0ZTY2NGFjIgorCitTUkNfVVJJID0gImh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQvY3VybC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmQyYWFiZjc4ZGVkNmE5YWVjOGE1NDUzMmZkNmI1ZDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODk3ZGZiMjIwNGJkOTliZTMyODI3OWY4OGY1NWI3YzYxNTkyMjE2YjA1NDJmY2JlOTk1YzYwYWE5Mjg3MWU5YiIKKworQ1ZFX1BST0RVQ1QgPSAibGliY3VybCIKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IGdudXRscyBwcm94eSB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gImlwdjYgcHJveHkgc3NsIHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCisKKyMgJ2FyZXMnIGFuZCAndGhyZWFkZWQtcmVzb2x2ZXInIGFyZSBtdXR1YWxseSBleGNsdXNpdmUKK1BBQ0tBR0VDT05GSUdbYXJlc10gPSAiLS1lbmFibGUtYXJlcywtLWRpc2FibGUtYXJlcyxjLWFyZXMiCitQQUNLQUdFQ09ORklHW2RpY3RdID0gIi0tZW5hYmxlLWRpY3QsLS1kaXNhYmxlLWRpY3QsIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2dvcGhlcl0gPSAiLS1lbmFibGUtZ29waGVyLC0tZGlzYWJsZS1nb3BoZXIsIgorUEFDS0FHRUNPTkZJR1tpbWFwXSA9ICItLWVuYWJsZS1pbWFwLC0tZGlzYWJsZS1pbWFwLCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLCIKK1BBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCitQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbjIsLS13aXRob3V0LWxpYmlkbjIsbGliaWRuMiIKK1BBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKK1BBQ0tBR0VDT05GSUdbbmdodHRwMl0gPSAiLS13aXRoLW5naHR0cDIsLS13aXRob3V0LW5naHR0cDIsbmdodHRwMiIKK1BBQ0tBR0VDT05GSUdbcG9wM10gPSAiLS1lbmFibGUtcG9wMywtLWRpc2FibGUtcG9wMywiCitQQUNLQUdFQ09ORklHW3Byb3h5XSA9ICItLWVuYWJsZS1wcm94eSwtLWRpc2FibGUtcHJveHksIgorUEFDS0FHRUNPTkZJR1tydG1wZHVtcF0gPSAiLS13aXRoLWxpYnJ0bXAsLS13aXRob3V0LWxpYnJ0bXAscnRtcGR1bXAiCitQQUNLQUdFQ09ORklHW3J0c3BdID0gIi0tZW5hYmxlLXJ0c3AsLS1kaXNhYmxlLXJ0c3AsIgorUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXNtYiwtLWRpc2FibGUtc21iLCIKK1BBQ0tBR0VDT05GSUdbc210cF0gPSAiLS1lbmFibGUtc210cCwtLWRpc2FibGUtc210cCwiCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLS13aXRoLXNzbCAtLXdpdGgtcmFuZG9tPS9kZXYvdXJhbmRvbSwtLXdpdGhvdXQtc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgorUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKK1BBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLC0td2l0aG91dC16bGliLHpsaWIiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZW5hYmxlLWNyeXB0by1hdXRoIFwKKyAgICAtLXdpdGgtY2EtYnVuZGxlPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQgXAorICAgIC0td2l0aG91dC1saWJtZXRhbGluayBcCisgICAgLS13aXRob3V0LWxpYnBzbCBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwkjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGN1cmwtY29uZmlnCisJc2VkIC1pIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAncywtLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgICR7RH0ke2JpbmRpcn0vY3VybC1jb25maWcKK30KKworUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKKworRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCitSUkVDT01NRU5EU19saWIke0JQTn0gKz0gImNhLWNlcnRpZmljYXRlcyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0venNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgppbmRleCBmYjRiZWZiLi4wOTNlZTQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIKQEAgLTEyLDkgKzEyLDExIEBACiBTVU1NQVJZID0gIkJlcmtlbGV5IERhdGFiYXNlIHY1IgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL2RhdGFiYXNlL2RhdGFiYXNlLXRlY2hub2xvZ2llcy9iZXJrZWxleWRiL292ZXJ2aWV3L2luZGV4Lmh0bWwiCiBMSUNFTlNFID0gIlNsZWVweWNhdCIKLVZJUlRVQUxfTkFNRSA/PSAidmlydHVhbC9kYiIKIFJDT05GTElDVFNfJHtQTn0gPSAiZGIzIgogCitDVkVfUFJPRFVDVCA9ICJvcmFjbGVfYmVya2VsZXlfZGIiCitDVkVfVkVSU0lPTiA9ICIxMS4yLiR7UFZ9IgorCiBQUiA9ICJyMSIKIFBFID0gIjEiCiAKQEAgLTM3LDE1ICszOSw2IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzCiAKLSMgUHV0IHZpcnR1YWwvZGIgaW4gYW55IGFwcHJvcHJpYXRlIHByb3ZpZGVyIG9mIGEKLSMgcmVsYXRpb25hbCBkYXRhYmFzZSwgdXNlIGl0IGFzIGEgZGVwZW5kZW5jeSBpbgotIyBwbGFjZSBvZiBhIHNwZWNpZmljIGRiIGFuZCB1c2U6Ci0jCi0jIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2RiCi0jCi0jIHRvIHNlbGVjdCB0aGUgY29ycmVjdCBkYiBpbiB0aGUgYnVpbGQgKGRpc3RybykgLmNvbmYKLVBST1ZJREVTICs9ICIke1ZJUlRVQUxfTkFNRX0iCi0KICMgVGhlIGV4ZWN1dGFibGVzIGdvIGluIGEgc2VwYXJhdGUgcGFja2FnZSAtIHR5cGljYWxseSB0aGVyZQogIyBpcyBubyBuZWVkIHRvIGluc3RhbGwgdGhlc2UgdW5sZXNzIGRvaW5nIHJlYWwgZGF0YWJhc2UKICMgbWFuYWdlbWVudCBvbiB0aGUgc3lzdGVtLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg1N2Q0Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiAmIFNNQUlMX0dQTCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWYwMWE1MjAzZDUwNTEyZmM0ODMwYjQzMzJiNjk2YTlmIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTcwNDAyVDIxMTczMlovcG9vbC9tYWluL2QvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHoiCi0jIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQotIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvJHtCUE59LyIKLQotU1JDX1VSSVttZDVzdW1dID0gImVlNWZjZWNhYWIwNzFiZDBjOTNlOGEwY2VlNjVkNmM0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2NDQ2Y2Q0YzBkMzA5ZmQzMWEwNjgyYzVjMmYwN2Y3NjEzZmI4NjdmNzY5NDE0YjljYzUxZjE1NWFkNzMxNzIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzOnRlbXBmaWxlLjEgd2hpY2guMTp3aGljaC4xOmcnICR7U30vTWFrZWZpbGUuYW0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KLSAgICAgICAgIyBEZWJpYW4gcGxhY2VzIHNvbWUgdXRpbHMgaW50byAke2Jhc2VfYmluZGlyfSBhcyBkb2VzIGJ1c3lib3gKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICAgICAgZm9yIGFwcCBpbiBydW4tcGFydHMgdGVtcGZpbGU7IGRvCi0gICAgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9LyRhcHAgJHtEfSR7YmFzZV9iaW5kaXJ9LyRhcHAKLSAgICAgICAgZG9uZQotICAgIGZpCi19Ci0KLSMgTm90ZSB0aGF0IHdlIHBhY2thZ2UgdGhlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgbmFtZS4KLSMKLVBBQ0tBR0VTID0rICIke1BOfS1ydW4tcGFydHMiCi1GSUxFU18ke1BOfS1ydW4tcGFydHMgPSAiJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzLmRlYmlhbnV0aWxzIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tcnVuLXBhcnRzIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFk9IjMwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkLXNoZWxsIGluc3RhbGxrZXJuZWwgcmVtb3ZlLXNoZWxsIHNhdmVsb2cgdGVtcGZpbGUgd2hpY2giCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LXJ1bi1wYXJ0cyA9ICI2MCIKLUFMVEVSTkFUSVZFXyR7UE59LXJ1bi1wYXJ0cyA9ICJydW4tcGFydHMiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ3aGljaC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoLjFdID0gIiR7bWFuZGlyfS9tYW4xL3doaWNoLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVthZGQtc2hlbGxdPSIke3NiaW5kaXJ9L2FkZC1zaGVsbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0YWxsa2VybmVsXT0iJHtzYmluZGlyfS9pbnN0YWxsa2VybmVsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3JlbW92ZS1zaGVsbF09IiR7c2JpbmRpcn0vcmVtb3ZlLXNoZWxsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bi1wYXJ0c109IiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzYXZlbG9nXT0iJHtiaW5kaXJ9L3NhdmVsb2ciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdGVtcGZpbGVdPSIke2Jhc2VfYmluZGlyfS90ZW1wZmlsZSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaF09IiR7YmluZGlyfS93aGljaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAwZTZmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNC5iYgpAQCAtMCwwICsxLDU3IEBACitTVU1NQVJZID0gIk1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzIHNwZWNpZmljIHRvIERlYmlhbiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBTTUFJTF9HUEwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1mMDFhNTIwM2Q1MDUxMmZjNDgzMGI0MzMyYjY5NmE5ZiIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE4MDEyOVQxNjQ3MjdaL3Bvb2wvbWFpbi9kLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IgorIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKKyMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNmRjZDQ5NmI0Zjc5YjNjNDUyYzNhNzRjMmQzZjg5YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMDYxYWI5OWFlYTYxZjg5MjA0M2I3NjI0YjAyMWFiNWIxOTNlOWM2YmJmZDQ3NGRhMGZiY2RkNTA2YmUxZWIyIgorCitTID0gIiR7V09SS0RJUn0vJHtCUE59IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSAnczp0ZW1wZmlsZS4xIHdoaWNoLjE6d2hpY2guMTpnJyAke1N9L01ha2VmaWxlLmFtCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisgICAgICAgICMgRGViaWFuIHBsYWNlcyBzb21lIHV0aWxzIGludG8gJHtiYXNlX2JpbmRpcn0gYXMgZG9lcyBidXN5Ym94CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgICAgIGZvciBhcHAgaW4gcnVuLXBhcnRzIHRlbXBmaWxlOyBkbworICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS8kYXBwICR7RH0ke2Jhc2VfYmluZGlyfS8kYXBwCisgICAgICAgIGRvbmUKKyAgICBmaQorfQorCisjIE5vdGUgdGhhdCB3ZSBwYWNrYWdlIHRoZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIG5hbWUuCisjCitQQUNLQUdFUyA9KyAiJHtQTn0tcnVuLXBhcnRzIgorRklMRVNfJHtQTn0tcnVuLXBhcnRzID0gIiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cy5kZWJpYW51dGlscyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXJ1bi1wYXJ0cyIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZPSIzMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImFkZC1zaGVsbCBpbnN0YWxsa2VybmVsIHJlbW92ZS1zaGVsbCBzYXZlbG9nIHRlbXBmaWxlIHdoaWNoIgorCitBTFRFUk5BVElWRV9QUklPUklUWV8ke1BOfS1ydW4tcGFydHMgPSAiNjAiCitBTFRFUk5BVElWRV8ke1BOfS1ydW4tcGFydHMgPSAicnVuLXBhcnRzIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAid2hpY2guMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaC4xXSA9ICIke21hbmRpcn0vbWFuMS93aGljaC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkLXNoZWxsXT0iJHtzYmluZGlyfS9hZGQtc2hlbGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaW5zdGFsbGtlcm5lbF09IiR7c2JpbmRpcn0vaW5zdGFsbGtlcm5lbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZW1vdmUtc2hlbGxdPSIke3NiaW5kaXJ9L3JlbW92ZS1zaGVsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW4tcGFydHNdPSIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2F2ZWxvZ109IiR7YmluZGlyfS9zYXZlbG9nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbXBmaWxlXT0iJHtiYXNlX2JpbmRpcn0vdGVtcGZpbGUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2hdPSIke2JpbmRpcn0vd2hpY2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmJlMTQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5L3ZhbHVlIGRhdGFiYXNlIGxpYnJhcnkgd2l0aCBleHRlbnNpYmxlIGhhc2hpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RibS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjQxZGExYjlmZTQyZTY0MmNiYjJjMjRkNWUwYzRkMjQiCi0KLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dkYm0vZ2RibS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4OTI5ZGNkYTJhOGRlM2ZkMjM2N2JkYmY2Njc2OTM3NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZDI1MmNiZDdkNzkzZjdiMTJiY2NlYWRkZGE5OGQyNTdjMTRmNGQxODkwZDg1MWMzODZjMzcyMDcwMDBhMjUzIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gbGliX3BhY2thZ2UgcHRlc3QKLQotIyBOZWVkZWQgZm9yIGRibSBweXRob24gbW9kdWxlCi1FWFRSQV9PRUNPTkYgPSAiLWVuYWJsZS1saWJnZGJtLWNvbXBhdCIKLQotIyBTdG9wIHByZXNlbmNlIG9mIGRibS9uYmRtIG9uIHRoZSBob3N0IGNvbnRhbWluYXRpbmcgYnVpbGRzCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfbGliX25kYm1fbWFpbj1ubyBhY19jdl9saWJfZGJtX21haW49bm8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICMgQ3JlYXRlIGEgc3ltbGluayB0byBuZGJtLmggYW5kIGdkYm0uaCBpbiBpbmNsdWRlL2dkYm0gdG8gbGV0IG90aGVyIHBhY2thZ2VzIHRvIGZpbmQKLSAgICAjIHRoZXNlIGhlYWRlcnMKLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2dkYm0KLSAgICBsbiAtc2YgLi4vbmRibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL25kYm0uaAotICAgIGxuIC1zZiAuLi9nZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vZ2RibS5oCi19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJkaWZmdXRpbHMiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBidWlsZHRlc3RzCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1jb21wYXQgXAotICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tY29tcGF0ID0gIiR7bGliZGlyfS9saWJnZGJtX2NvbXBhdCR7U09MSUJTfSBcCi0gICAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ZTU2OTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTQuMS5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIktleS92YWx1ZSBkYXRhYmFzZSBsaWJyYXJ5IHdpdGggZXh0ZW5zaWJsZSBoYXNoaW5nIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYm0vIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI0MWRhMWI5ZmU0MmU2NDJjYmIyYzI0ZDVlMGM0ZDI0IgorCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nZGJtL2dkYm0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzJkZGNiMzg5N2VmYTBmNTc0ODRhZjJiZDRmNGY4NDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2RjZWZmMDBmZmUwMTQ0OTViZWQzYWVkNzFjNzkxMGFhODhiZjI5Mzc5Zjc5NWFiYzBmNDZkNGVlNWY4YmM1ZiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIGxpYl9wYWNrYWdlIHB0ZXN0CisKKyMgTmVlZGVkIGZvciBkYm0gcHl0aG9uIG1vZHVsZQorRVhUUkFfT0VDT05GID0gIi1lbmFibGUtbGliZ2RibS1jb21wYXQiCisKKyMgU3RvcCBwcmVzZW5jZSBvZiBkYm0vbmJkbSBvbiB0aGUgaG9zdCBjb250YW1pbmF0aW5nIGJ1aWxkcworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2xpYl9uZGJtX21haW49bm8gYWNfY3ZfbGliX2RibV9tYWluPW5vIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjIENyZWF0ZSBhIHN5bWxpbmsgdG8gbmRibS5oIGFuZCBnZGJtLmggaW4gaW5jbHVkZS9nZGJtIHRvIGxldCBvdGhlciBwYWNrYWdlcyB0byBmaW5kCisgICAgIyB0aGVzZSBoZWFkZXJzCisgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9nZGJtCisgICAgbG4gLXNmIC4uL25kYm0uaCAke0R9LyR7aW5jbHVkZWRpcn0vZ2RibS9uZGJtLmgKKyAgICBsbiAtc2YgLi4vZ2RibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL2dkYm0uaAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZGlmZnV0aWxzIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMgYnVpbGR0ZXN0cworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tY29tcGF0IFwKKyAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LWNvbXBhdCA9ICIke2xpYmRpcn0vbGliZ2RibV9jb21wYXQke1NPTElCU30gXAorICAgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKaW5kZXggNjY1MzY3Ni4uMWU0NzkyNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCkBAIC0xOCwxMyArMTgsMTMgQEAKICBjb25maWd1cmUuYWMgfCAxMSAtLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMSBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODU3ZWEzYi4uMzU5ZTkxOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjA3LDE1ICs2MDcsNiBAQCBjYXNlICRob3N0IGluCi0gICAgIEdNUF9JTkNMVURFX01QTihhcm0vYXJtLWRlZnMubTQpCi0gICAgIENBTExJTkdfQ09OVkVOVElPTlNfT0JKUz0nYXJtMzJjYWxsLmxvIGFybTMyY2hlY2subG8nCitJbmRleDogZ21wLTYuMS4yL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdtcC02LjEuMi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdtcC02LjEuMi9jb25maWd1cmUuYWMKK0BAIC02MDQsMTUgKzYwNCw2IEBAIGNhc2UgJGhvc3QgaW4KKyAgICAgYW55XzMyX3Rlc3RsaXN0PSJzaXplb2YtbG9uZy00IgorICAgICBhbnlfNjRfdGVzdGxpc3Q9InNpemVvZi1sb25nLTgiCiAgCiAtICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIGNsYW5nLCB3aGljaCBpcyBub3QgY29udGVudCB3aXRoIGZsYWdzIGxpa2UgLW1mcHU9bmVvbgogLSAgICAjIGFsb25lLgpAQCAtMzgsNyArMzgsNyBAQAogICAgICAjIEZJWE1FOiBXZSBtYWtlIG1hbmRhdG9yeSBjb21waWxlciBvcHRpb25zIG9wdGlvbmFsIGhlcmUuICBXZSBzaG91bGQKICAgICAgIyBlaXRoZXIgZW5mb3JjZSB0aGVtLCBvciBvcmdhbmlzZSB0byBzdHJpcCBwYXRocyBhcyB0aGUgY29ycmVzcG9uZGluZwogICAgICAjIG9wdGlvbnMgZmFpbC4KLUBAIC02ODYsOCArNjc3LDYgQEAgY2FzZSAkaG9zdCBpbgorQEAgLTc0Niw4ICs3MzcsNiBAQCBjYXNlICRob3N0IGluCiAgCTs7CiAgICAgICAgKikKICAJcGF0aD0iYXJtIgpAQCAtNDcsNiArNDcsMyBAQAogIAk7OwogICAgICBlc2FjCiAgICAgIDs7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL2FtZDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKaW5kZXggNTY0ZDEyZC4uMzkzNTU4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogZ21wLTUuMC4zL2xvbmdsb25nLmgKK0luZGV4OiBnbXAtNi4xLjIvbG9uZ2xvbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdtcC01LjAuMy5vcmlnL2xvbmdsb25nLmgKLSsrKyBnbXAtNS4wLjMvbG9uZ2xvbmcuaAotQEAgLTk5NCw4ICs5OTQsMTAgQEAgZXh0ZXJuIFVXdHlwZSBfX01QTih1ZGl2X3Fybm5kKSBfUFJPVE8gKAorLS0tIGdtcC02LjEuMi5vcmlnL2xvbmdsb25nLmgKKysrKyBnbXAtNi4xLjIvbG9uZ2xvbmcuaAorQEAgLTEwMzYsOCArMTAzNiwxMCBAQCBleHRlcm4gVVd0eXBlIF9fTVBOKHVkaXZfcXJubmQpIChVV3R5cGUKICAgICBjb3VudCBpcyBvbmx5IGFuIGludC4gKi8KICAjZGVmaW5lIGNvdW50X3RyYWlsaW5nX3plcm9zKGNvdW50LCB4KQkJCQkJXAogICAgZG8gewkJCQkJCQkJCVwKQEAgLTE0LDUgKzE0LDUgQEAKICsgICAgX19hc21fXyAoImJzZnEgJTEsJTAiIDogIj1yIiAoX19jYnRtcCkgOiAicm0iICgoVURJdHlwZSkoeCkpKTsJXAogKyAgICAoY291bnQpID0gX19jYnRtcDsJCQkJCQkJXAogICAgfSB3aGlsZSAoMCkKLSAjZW5kaWYgLyogeDg2XzY0ICovCisgI2VuZGlmIC8qIF9fYW1kNjRfXyAqLwogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvdXNlLWluY2x1ZGVkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaAppbmRleCA3NDkwNGEyLi42YjA4OWNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaApAQCAtMSwxNSArMSwxNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLUluZGV4OiBnbXAtNC4yLjQvTWFrZWZpbGUuYW0KK0luZGV4OiBnbXAtNi4xLjIvTWFrZWZpbGUuYW0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbXAtNC4yLjQub3JpZy9NYWtlZmlsZS5hbQkyMDA4LTA5LTEwIDE5OjMxOjI3LjAwMDAwMDAwMCArMDAwMAotKysrIGdtcC00LjIuNC9NYWtlZmlsZS5hbQkyMDA5LTA3LTA2IDIwOjE5OjE5LjAwMDAwMDAwMCArMDAwMAotQEAgLTEwNiw3ICsxMDYsNyBAQAotICMgYnV0IGFueW9uZSBrbm93bGVkZ2FibGUgZW5vdWdoIHRvIGJlIHBsYXlpbmcgd2l0aCBleGVjX3ByZWZpeCB3aWxsIGJlIGFibGUKKy0tLSBnbXAtNi4xLjIub3JpZy9NYWtlZmlsZS5hbQorKysrIGdtcC02LjEuMi9NYWtlZmlsZS5hbQorQEAgLTEzMCw3ICsxMzAsNyBAQCBFWFRSQV9ESVNUICs9IGdtcHh4LmgKKyAjIGJ1dCBhbnlvbmUga25vd2xlZGdlYWJsZSBlbm91Z2ggdG8gYmUgcGxheWluZyB3aXRoIGV4ZWNfcHJlZml4IHdpbGwgYmUgYWJsZQogICMgdG8gYWRkcmVzcyB0aGF0LgogICMKIC1pbmNsdWRlZXhlY2RpciA9ICQoZXhlY19wcmVmaXgpL2luY2x1ZGUKICtpbmNsdWRlZXhlY2RpciA9ICQoaW5jbHVkZWRpcikKICBpbmNsdWRlX0hFQURFUlMgPSAkKEdNUFhYX0hFQURFUlNfT1BUSU9OKQotIG5vZGlzdF9pbmNsdWRlZXhlY19IRUFERVJTID0gZ21wLmggJChNUEJTRF9IRUFERVJTX09QVElPTikKLSBsaWJfTFRMSUJSQVJJRVMgPSBsaWJnbXAubGEgJChHTVBYWF9MVExJQlJBUklFU19PUFRJT04pICQoTVBCU0RfTFRMSUJSQVJJRVNfT1BUSU9OKQorIG5vZGlzdF9pbmNsdWRlZXhlY19IRUFERVJTID0gZ21wLmgKKyBsaWJfTFRMSUJSQVJJRVMgPSBsaWJnbXAubGEgJChHTVBYWF9MVExJQlJBUklFU19PUFRJT04pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtY29uZmlndXJlLmFjLXVzZS1hLWN1c3RvbS12YWx1ZS1mb3ItdGhlLWxvY2F0aW9uLW9mLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTNhNjRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtY29uZmlndXJlLmFjLXVzZS1hLWN1c3RvbS12YWx1ZS1mb3ItdGhlLWxvY2F0aW9uLW9mLS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDBiOTcxNDhjM2FhZDA5OTNhOWFlYjA4ODU5NmZhNjNhMmZlYzUzMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjIgSmFuIDIwMTggMTg6MDA6MjEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiB1c2UgYSBjdXN0b20gdmFsdWUgZm9yIHRoZSBsb2NhdGlvbiBvZgorIGdwZy1hZ2VudCBzb2NrZXQgaW4gdGhlIGZpbGVzeXN0ZW0KKworVGhpcyBzaG91bGQgYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBob3N0IGdwZy1hZ2VudCBvYnNlcnZlZCBvbiBhdXRvYnVpbGRlcnMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpYywgYW5kIG9ubHkgZm9yIC1uYXRpdmVdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMzgyZWYxZC4uMDU3MGQ3YyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTgxOCw3ICsxODE4LDcgQEAgQUNfREVGSU5FX1VOUVVPVEVEKEdQR0NPTkZfRElTUF9OQU1FLCAiR1BHQ29uZiIsCisgCisgQUNfREVGSU5FX1VOUVVPVEVEKEdQR1RBUl9OQU1FLCAiZ3BndGFyIiwgW1RoZSBuYW1lIG9mIHRoZSBncGd0YXIgdG9vbF0pCisgCistQUNfREVGSU5FX1VOUVVPVEVEKEdQR19BR0VOVF9TT0NLX05BTUUsICJTLmdwZy1hZ2VudCIsCisrQUNfREVGSU5FX1VOUVVPVEVEKEdQR19BR0VOVF9TT0NLX05BTUUsICJTLmdwZy1hZ2VudC55b2N0by1uYXRpdmUiLAorICAgICAgICAgICAgICAgICAgICBbVGhlIG5hbWUgb2YgdGhlIGFnZW50IHNvY2tldF0pCisgQUNfREVGSU5FX1VOUVVPVEVEKEdQR19BR0VOVF9FWFRSQV9TT0NLX05BTUUsICJTLmdwZy1hZ2VudC5leHRyYSIsCisgICAgICAgICAgICAgICAgICAgIFtUaGUgbmFtZSBvZiB0aGUgYWdlbnQgc29ja2V0IGZvciByZW1vdGUgYWNjZXNzXSkKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE3NmRkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBQcml2YWN5IEd1YXJkIC0gZW5jcnlwdGlvbiBhbmQgc2lnbmluZyB0b29scyAoMi54KSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xODlhZjhhZmNhNmQ2MDc1YmE2YzllMGFhODA3NzYyNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEwzO21kNT1hMmI2YmYyY2IzOGVlNTI2MTllNjBmMzBhMWZjNzI1NyIKLQotREVQRU5EUyA9ICJucHRoIGxpYmFzc3VhbiBsaWJrc2JhIHpsaWIgYnppcDIgcmVhZGxpbmUgbGliZ2NyeXB0IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1wdGgtaW5zdGVhZC1vZi1wdGgtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWF1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzg5ZjE2OTQ5ZmFlMmQwMDNkMzg3ZjQ5ZTlkYTRiNzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDQ1MTRhMGJlMGY3YTFmZjI2MzE5MzMzMDAxOWViNGI1M2M4MmYwZjVlMjMwYWYzYzE0ZGYzNzEyNzFhNDVlNiIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1sZGFwIFwKLQkJLS1kaXNhYmxlLWNjaWQtZHJpdmVyIFwKLQkJLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLXdpdGgtYnppcDI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLXdpdGgtcmVhZGxpbmU9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLWVuYWJsZS1ncGctaXMtZ3BnMiBcCi0gICAgICAgICAgICAgICAiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9rc2JhLm00Ci0Jcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKLQlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Ci19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS1lbmFibGUtZ251dGxzLCAtLWRpc2FibGUtZ251dGxzLCBnbnV0bHMiCi1QQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0tZW5hYmxlLXNxbGl0ZSwgLS1kaXNhYmxlLXNxbGl0ZSwgc3FsaXRlMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2YxYThmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi40LmJiCkBAIC0wLDAgKzEsNTAgQEAKK1NVTU1BUlkgPSAiR05VIFByaXZhY3kgR3VhcmQgLSBlbmNyeXB0aW9uIGFuZCBzaWduaW5nIHRvb2xzICgyLngpIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4OWFmOGFmY2E2ZDYwNzViYTZjOWUwYWE4MDc3NjI2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWEyYjZiZjJjYjM4ZWU1MjYxOWU2MGYzMGExZmM3MjU3IgorCitERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLXB0aC1pbnN0ZWFkLW9mLXB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy11c2UtYS1jdXN0b20tdmFsdWUtZm9yLXRoZS1sb2NhdGlvbi1vZi0ucGF0Y2giCisKKworU1JDX1VSSVttZDVzdW1dID0gIjcwOWU1YWY1YmJhODRkMjUxYzUyMDIyMmU3MjA5NzJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwMWEzZTY0NzgwZmRmYTZkNzY3MGRlMDg4MGFhNWM5ZDU4OWIzZGI3YTcwOTg5NzlkNzYwNmNlYzU0NmYyZWMiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbGRhcCBcCisJCS0tZGlzYWJsZS1jY2lkLWRyaXZlciBcCisJCS0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS13aXRoLWJ6aXAyPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS13aXRoLXJlYWRsaW5lPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS1lbmFibGUtZ3BnLWlzLWdwZzIgXAorICAgICAgICAgICAgICAgIgorUlJFQ09NTUVORFNfJHtQTn0gPSAicGluZW50cnkiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKKwlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAorCXJtIC1mICR7U30vbTQva3NiYS5tNAorCXJtIC1mICR7U30vbTQvbGliZ2NyeXB0Lm00Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWxuIC1zZiBncGcyICR7RH0ke2JpbmRpcn0vZ3BnCisJbG4gLXNmIGdwZ3YyICR7RH0ke2JpbmRpcn0vZ3BndgorfQorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywgLS1kaXNhYmxlLWdudXRscywgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsIC0tZGlzYWJsZS1zcWxpdGUsIHNxbGl0ZTMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jCmluZGV4IDI5YjVkZDYuLjdiY2I5MTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMKQEAgLTIxLDcgKzIxLDcgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWcgcGtnY29uZmlnIGdldHRleHQgbGliX3BhY2thZ2UgZ3RrLWRvYwogCi1QQUNLQUdFQ09ORklHID8/PSAibGliaWRuIHpsaWIiCitQQUNLQUdFQ09ORklHID8/PSAibGliaWRuIgogCiAjIFlvdSBtdXN0IGFsc28gaGF2ZSBDT05GSUdfU0VDQ09NUCBlbmFibGVkIGluIHRoZSBrZXJuZWwgZm9yCiAjIHNlY2NvbXAgdG8gd29yay4KQEAgLTMyLDcgKzMyLDYgQEAKIFBBQ0tBR0VDT05GSUdbbGlidGFzbjFdID0gIi0td2l0aC1pbmNsdWRlZC1saWJ0YXNuMT1ubywtLXdpdGgtaW5jbHVkZWQtbGlidGFzbjEsbGlidGFzbjEiCiBQQUNLQUdFQ09ORklHW3AxMS1raXRdID0gIi0td2l0aC1wMTEta2l0LC0td2l0aG91dC1wMTEta2l0LHAxMS1raXQiCiBQQUNLQUdFQ09ORklHW3RwbV0gPSAiLS13aXRoLXRwbSwtLXdpdGhvdXQtdHBtLHRyb3VzZXJzIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgogCiBFWFRSQV9PRUNPTkYgPSAiIFwKICAgICAtLWVuYWJsZS1kb2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoCmluZGV4IGYwYjdjYTIuLmI2ZTdiYzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1zZWQtY29tbWFuZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2gKQEAgLTE0LDE5ICsxNCwxNiBAQAogIGNvbmZpZ3VyZS5hYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNjkwN2IyMS4uN2M3MGQ5ZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTQ4LDcgKzk0OCw3IEBAIFlFQVI9YGRhdGUgKyVZYAorSW5kZXg6IGdudXRscy0zLjUuMTYvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ251dGxzLTMuNS4xNi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdudXRscy0zLjUuMTYvY29uZmlndXJlLmFjCitAQCAtOTU1LDcgKzk1NSw3IEBAIFlFQVI9YGRhdGUgKyVZYAogIEFDX1NVQlNUKFtZRUFSXSwgJFlFQVIpCiAgCiAgZm9yIGkgaW4gJHtzcmNkaXJ9L3NyYy8qLWFyZ3MuYy5iYWsgJHtzcmNkaXJ9L3NyYy8qLWFyZ3MuaC5iYWs7IGRvCiAtCW5hbT0kKGJhc2VuYW1lICRpfHNlZCAncy8uYmFrLy9nJykKICsJbmFtPSQoYmFzZW5hbWUgJGl8c2VkICdzL1wuYmFrJC8vJykKICAJaWYgdGVzdCAiJGNyZWF0ZV9saWJvcHRzX2xpbmtzIiA9ICJ5ZXMiO3RoZW4KKyAJCXJtIC1mICJzcmMvJG5hbS5zdGFtcCIKICAJCXJtIC1mICJzcmMvJG5hbSIKLSAJCUFDX0NPTkZJR19MSU5LUyhbc3JjLyRuYW06JGldKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvdXNlLXBrZy1jb25maWctdG8tbG9jYXRlLXpsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUxNDFhNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLUZyb20gMTgwODEwNjhhOTdjMDAwMTVhYWJjNWZhMzIxNjY0OTUxNDU4ZWEwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+Ci1EYXRlOiBGcmksIDkgSnVuIDIwMTcgMTU6MjA6MzEgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gRnJvbSBjZWU4MGFmMWZlOTNmNWI3Njc2NWFmZWViZmNjM2I5MDI3NjhmNWQ2IE1vbiBTZXAgMTcKLSAwMDowMDowMCAyMDAxIEZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+IERhdGU6IFR1ZSwgMjYgTWF5Ci0gMjAxNSAyMTo0MToyNCAtMDcwMCBTdWJqZWN0OiBbUEFUQ0hdIHVzZSBwa2ctY29uZmlnIHRvIGxvY2F0ZSB6bGliCi0KLUFDX0xJQl9IQVZFX0xJTktGTEFHUyBjYW4gc29tZXRpbWVzIGZpbmQgaG9zdCBsaWJzIGFuZCBpcyB0aGVyZWZvcmUgbm90Ci1yb2J1c3Qgd2hlbiBjcm9zcy1jb21waWxpbmcuIFJlbW92ZSBpdCBmb3IgemxpYiBhbmQgdXNlIFBLR19DSEVDS19NT0RVTEVTCi1pbnN0ZWFkLgotCi1SZW1vdmluZyBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgZm9yIHpsaWIgYWxzbyByZW1vdmVzIHRoZSAtLXdpdGgtbGliei1wcmVmaXgKLWNvbmZpZ3VyZSBvcHRpb24uIElmIHpsaWIgc3VwcG9ydCBpcyBlbmFibGVkLCB0aGVuIGZhaWx1cmUgdG8gZmluZCB6bGliIHZpYQotcGtnLWNvbmZpZyBpcyBub3cgdHJlYXRlZCBhcyBhIGZhdGFsIGVycm9yLgotCi1DaGFuZ2UgYmFzZWQgb24gQ2hyb21lT1MgZ251dGxzIDIuMTIuMjMgY3Jvc3MtY29tcGlsZSBmaXhlcyBwYXRjaDoKLQotICBodHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tLyMvYy8yNzE2NjEvCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLQotUmViYXNlIG9uIGdudXRscyAzLjUuMTMKLQotU2lnbmVkLW9mZi1ieTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDI1ICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzY1MjY4ZS4uZjZhMThhYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzM1LDI4ICs3MzUsMjEgQEAgQUNfQVJHX1dJVEgoemxpYiwgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC16bGliXSwKLSBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gaW5jbHVkZSB6bGliIGNvbXByZXNzaW9uIHN1cHBvcnRdKQotIGlmIHRlc3QgeCRhY196bGliICE9IHhubzsgdGhlbgotICBBQ19NU0dfUkVTVUxUKHllcykKLS0gQUNfTElCX0hBVkVfTElOS0ZMQUdTKHosLCBbI2luY2x1ZGUgPHpsaWIuaD5dLCBbY29tcHJlc3MgKDAsIDAsIDAsIDApO10pCi0tIGlmIHRlc3QgeCRhY19jdl9saWJ6ICE9IHh5ZXM7IHRoZW4KLS0gICBBQ19NU0dfV0FSTigKLS0qKiogCi0tKioqIFpMSUIgd2FzIG5vdCBmb3VuZC4gWW91IHdpbGwgbm90IGJlIGFibGUgdG8gdXNlIFpMSUIgY29tcHJlc3Npb24uKQotLSBmaQotIGVsc2UKLSAgQUNfTVNHX1JFU1VMVChubykKLSBmaQotIAotLVBLR19DSEVDS19FWElTVFMoemxpYiwgWkxJQl9IQVNfUEtHQ09ORklHPXksIFpMSUJfSEFTX1BLR0NPTkZJRz1uKQotLQotIGlmIHRlc3QgeCRhY196bGliICE9IHhubzsgdGhlbgotLSAgaWYgdGVzdCAiJFpMSUJfSEFTX1BLR0NPTkZJRyIgPSAieSIgOyB0aGVuCi0tICAgIGlmIHRlc3QgIngkR05VVExTX1JFUVVJUkVTX1BSSVZBVEUiID0geDsgdGhlbgotLSAgICAgIEdOVVRMU19SRVFVSVJFU19QUklWQVRFPSJSZXF1aXJlcy5wcml2YXRlOiB6bGliIgotLSAgICBlbHNlCi0tICAgICAgR05VVExTX1JFUVVJUkVTX1BSSVZBVEU9IiRHTlVUTFNfUkVRVUlSRVNfUFJJVkFURSwgemxpYiIKLS0gICAgZmkKLS0gICAgTElCWl9QQz0iIgotKyAgUEtHX0NIRUNLX01PRFVMRVMoWkxJQiwgemxpYikKLSsgIEhBVkVfTElCWj15ZXMKLSsgIEFDX0RFRklORShbSEFWRV9MSUJaXSwgWzFdLCBbemxpYiBpcyBlbmFibGVkXSkKLSsgIEFDX1NVQlNUKEhBVkVfTElCWikKLSsgIExUTElCWj0kWkxJQl9MSUJTCi0rICBBQ19TVUJTVChMVExJQlopCi0rICBpZiB0ZXN0ICJ4JEdOVVRMU19SRVFVSVJFU19QUklWQVRFIiA9IHg7IHRoZW4KLSsgICAgR05VVExTX1JFUVVJUkVTX1BSSVZBVEU9IlJlcXVpcmVzLnByaXZhdGU6IHpsaWIiCi0gICBlbHNlCi0tICAgIExJQlpfUEM9JExJQloKLSsgICAgR05VVExTX1JFUVVJUkVTX1BSSVZBVEU9IiRHTlVUTFNfUkVRVUlSRVNfUFJJVkFURSwgemxpYiIKLSAgIGZpCi0gZmkKLSBBQ19TVUJTVChMSUJaX1BDKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuMTMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZDdkMDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy41LjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBnbnV0bHMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VzZS1wa2ctY29uZmlnLXRvLWxvY2F0ZS16bGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZmQ0MWFkODY1NzI5MzNjMjM3OWI0Y2MzMjFhMDk1OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3OWY1NDgwYWQxOThkYWQ1YmM3OGUwNzVmNGE0MGM0YTMxNWExYjIwNzI2NjY5MTlkMmQwNWEwOGFlYzEzMDk2IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MjRhMjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMS5iYgpAQCAtMCwwICsxLDkgQEAKK3JlcXVpcmUgZ251dGxzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YjY1YWUzZmZlZjU5ZjNlZWVkNTFhNjE2NmZmMTJiMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGIxMGQyYzk5OTRiYzAzMjgyNDMxNDcxNGQwZTg0YzBmMTliZGIzZDcxNWQ4ZWQ1NWJlYjczNjRhOGViYWVkIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL0NWRS0yMDE3LTEwNzkwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS9DVkUtMjAxNy0xMDc5MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU4NDM4MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL0NWRS0yMDE3LTEwNzkwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotRnJvbSBkOGQ4MDVlMWYyZTY3OTliYjJkZmY0ODcxYTg1OThkYzgzMDg4YTM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmlrb3MgTWF2cm9naWFubm9wb3Vsb3MgPG5tYXZAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMjIgSnVuIDIwMTcgMTY6MzE6MzcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gX2FzbjFfY2hlY2tfaWRlbnRpZmllcjogc2FmZXIgYWNjZXNzIHRvIHZhbHVlcyByZWFkCi0KLVNpZ25lZC1vZmYtYnk6IE5pa29zIE1hdnJvZ2lhbm5vcG91bG9zIDxubWF2QHJlZGhhdC5jb20+Ci0KLWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9bGlidGFzbjEuZ2l0O2E9Y29tbWl0O2g9ZDhkODA1ZTFmMmU2Nzk5YmIyZGZmNDg3MWE4NTk4ZGM4MzA4OGEzOQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DVkU6IENWRS0yMDE3LTEwNzkwCi0KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPFl1ZS5UYW9Ad2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliL3BhcnNlcl9hdXguYyB8ICAgMTcgKysrKysrKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9wYXJzZXJfYXV4LmMgYi9saWIvcGFyc2VyX2F1eC5jCi1pbmRleCA5NzZhYjM4Li43ODZlYTY0IDEwMDY0NAotLS0tIGEvbGliL3BhcnNlcl9hdXguYwotKysrIGIvbGliL3BhcnNlcl9hdXguYwotQEAgLTk1NSw3ICs5NTUsNyBAQCBfYXNuMV9jaGVja19pZGVudGlmaWVyIChhc24xX25vZGUgbm9kZSkKLSAJICBpZiAocDIgPT0gTlVMTCkKLSAJICAgIHsKLSAJICAgICAgaWYgKHAtPnZhbHVlKQotLQkJX2FzbjFfc3RyY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgcC0+dmFsdWUpOwotKwkJX2FzbjFfc3RyX2NweSAoX2FzbjFfaWRlbnRpZmllck1pc3NpbmcsIHNpemVvZihfYXNuMV9pZGVudGlmaWVyTWlzc2luZyksIChjaGFyKilwLT52YWx1ZSk7Ci0gCSAgICAgIGVsc2UKLSAJCV9hc24xX3N0cmNweSAoX2FzbjFfaWRlbnRpZmllck1pc3NpbmcsICIobnVsbCkiKTsKLSAJICAgICAgcmV0dXJuIEFTTjFfSURFTlRJRklFUl9OT1RfRk9VTkQ7Ci1AQCAtOTY4LDkgKzk2OCwxNSBAQCBfYXNuMV9jaGVja19pZGVudGlmaWVyIChhc24xX25vZGUgbm9kZSkKLSAJICBpZiAocDIgJiYgKHR5cGVfZmllbGQgKHAyLT50eXBlKSA9PSBBU04xX0VUWVBFX0RFRkFVTFQpKQotIAkgICAgewotIAkgICAgICBfYXNuMV9zdHJfY3B5IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksIG5vZGUtPm5hbWUpOwotLQkgICAgICBfYXNuMV9zdHJfY2F0IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksICIuIik7Ci0tCSAgICAgIF9hc24xX3N0cl9jYXQgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgKGNoYXIgKikgcDItPnZhbHVlKTsKLS0JICAgICAgX2FzbjFfc3RyY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgcDItPnZhbHVlKTsKLSsJICAgICAgaWYgKHAyLT52YWx1ZSkKLSsJICAgICAgICB7Ci0rCSAgICAgICAgICBfYXNuMV9zdHJfY2F0IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksICIuIik7Ci0rCSAgICAgICAgICBfYXNuMV9zdHJfY2F0IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksIChjaGFyICopIHAyLT52YWx1ZSk7Ci0rCSAgICAgICAgICBfYXNuMV9zdHJfY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgc2l6ZW9mKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nKSwgKGNoYXIqKXAyLT52YWx1ZSk7Ci0rCSAgICAgICAgfQotKwkgICAgICBlbHNlCi0rCQlfYXNuMV9zdHJjcHkgKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nLCAiKG51bGwpIik7Ci0rCi0gCSAgICAgIHAyID0gYXNuMV9maW5kX25vZGUgKG5vZGUsIG5hbWUyKTsKLSAJICAgICAgaWYgKCFwMiB8fCAodHlwZV9maWVsZCAocDItPnR5cGUpICE9IEFTTjFfRVRZUEVfT0JKRUNUX0lEKSB8fAotIAkJICAhKHAyLT50eXBlICYgQ09OU1RfQVNTSUdOKSkKLUBAIC05OTAsNyArOTk2LDggQEAgX2FzbjFfY2hlY2tfaWRlbnRpZmllciAoYXNuMV9ub2RlIG5vZGUpCi0gCQkgIF9hc24xX3N0cl9jcHkgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgbm9kZS0+bmFtZSk7Ci0gCQkgIF9hc24xX3N0cl9jYXQgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgIi4iKTsKLSAJCSAgX2FzbjFfc3RyX2NhdCAobmFtZTIsIHNpemVvZiAobmFtZTIpLCAoY2hhciAqKSBwMi0+dmFsdWUpOwotLQkJICBfYXNuMV9zdHJjcHkgKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nLCBwMi0+dmFsdWUpOwotKwkJICBfYXNuMV9zdHJfY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgc2l6ZW9mKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nKSwgKGNoYXIqKXAyLT52YWx1ZSk7Ci0rCi0gCQkgIHAyID0gYXNuMV9maW5kX25vZGUgKG5vZGUsIG5hbWUyKTsKLSAJCSAgaWYgKCFwMiB8fCAodHlwZV9maWVsZCAocDItPnR5cGUpICE9IEFTTjFfRVRZUEVfT0JKRUNUX0lEKQotIAkJICAgICAgfHwgIShwMi0+dHlwZSAmIENPTlNUX0FTU0lHTikpCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTc1NzFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgQVNOLjEgYW5kIERFUiBtYW5pcHVsYXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidGFzbjEvIgotCi1MSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKLUxJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtlbmRsaW5lPTg7bWQ1PWMzODAzYTNlOGNhNWFiNWViMWU1OTEyZmFhNDA1MzUxIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidGFzbjEvbGlidGFzbjEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3RkaW50Lm00LXJlaW50cm9kdWNlLUdOVUxJQl9PVkVSUklERVNfV0lOVF9ULWNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwNzkwLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVjNzI0YmQxZjczYWFmNGEzMTE4MzNlMWNkMjk3YjIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY3NTNkYTJlNjIxMjU3ZjMzZjViMDUxY2MxMTRkNDE3ZTUyMDZhMDgxOGZlMGIxZWNmZDYxNTNmNzA5MzQ3NTMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQyMjM4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMy5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIEFTTi4xIGFuZCBERVIgbWFuaXB1bGF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRhc24xLyIKKworTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9SRUFETUU7ZW5kbGluZT04O21kNT1jMzgwM2EzZThjYTVhYjVlYjFlNTkxMmZhYTQwNTM1MSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYnRhc24xL2xpYnRhc24xLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0ZGludC5tNC1yZWludHJvZHVjZS1HTlVMSUJfT1ZFUlJJREVTX1dJTlRfVC1jaGVjay5wYXRjaCBcCisgICAgICAgICAgICIKKworREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZTJiYTRkMzA4ODExOWI0OGU3NTMxYTcwMzY2OWM1MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZTUyOGU4YzMxN2RkZDE1NjIzMGM0ZTMxZDA4MmNkMTNlN2RkZWI3YTU0ODI0YmU4MjYzMjIwOTU1MGM4Y2NhIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZyBsaWJfcGFja2FnZSBndGstZG9jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtcGtnY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtcGtnY29uZmlnLnBhdGNoCmluZGV4IDE0YTQzZWUuLmYxOTk3ZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLXBrZ2NvbmZpZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1wa2djb25maWcucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDhhZTE0OTAzNWM5N2QyN2NkMmM2MjQ3MDRkMTY1MTgwNmM1MzU3N2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDI2NWZhZjhmZTBhY2FjYTIwNDNhMjQ4YTRkZjAyYjA4NjhmZmE2ZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KIERhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDA6MDggLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzVdIHBrZ2NvbmZpZworU3ViamVjdDogW1BBVENIIDEvNF0gcGtnY29uZmlnCiAKIFVwZGF0ZSBncGdtZSB0byB1c2UgcGtnY29uZmlnIGluc3RlYWQgb2YgLWNvbmZpZyBmaWxlcyBzaW5jZSBpdHMKIHNpbXBsZXIgYW5kIGxlc3MgZXJyb3IgcHJvbmUgd2hlbiBjcm9zcyBjb21waWxpbmcuCkBAIC0yNSwxMCArMjUsMTAgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2dwZ21lLnBjLmluCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDBkYWM2Y2UuLjZhOWU1MDcgMTAwNjQ0CitpbmRleCA2ZWE0YmNkLi4yYTBkNTI4IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC04NjYsNiArODY2LDcgQEAgQUNfQ09ORklHX0ZJTEVTKE1ha2VmaWxlIHNyYy9NYWtlZmlsZQorQEAgLTg4Nyw2ICs4ODcsNyBAQCBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUgc3JjL01ha2VmaWxlCiAgICAgICAgICAgICAgICAgIHNyYy92ZXJzaW9uaW5mby5yYwogICAgICAgICAgICAgICAgICBzcmMvZ3BnbWUuaCkKICBBQ19DT05GSUdfRklMRVMoc3JjL2dwZ21lLWNvbmZpZywgY2htb2QgK3ggc3JjL2dwZ21lLWNvbmZpZykKQEAgLTI5OSw1ICsyOTksNSBAQAogK1JlcXVpcmVzOiBsaWJhc3N1YW4gZ3BnLWVycm9yCiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKIC0tIAotMi44LjEKKzEuOC4zLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2gKaW5kZXggZjFmOGM5MS4uZDIwMjcxZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoCkBAIC0xLDI5ICsxLDI4IEBACi1Gcm9tIGZiMTY1YzliZDk2YWNhOGM5ZWUzZTQ1MDljOWI2ZTM1ZDIzOGFkMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDAyOjAyOjQ3IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBncGdtZS9sYW5nL3B5dGhvbjogZ3BnLWVycm9yLWNvbmZpZyBzaG91bGQgbm90IGJlIHVzZWQuCitGcm9tIDMwZjdhNjk0Y2M0NTY4ZWNiMjRmNzdjODNhNjEyM2VkM2Y0MDc1ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDEwOjQ0OjE5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGdwZ21lL2xhbmcvcHl0aG9uOiBncGctZXJyb3ItY29uZmlnIHNob3VsZCBub3QgYmUgdXNlZAogCi1ncGctZXJyb3ItY29uZmlnIHdhcyBtb2RpZmllZCBieSBPRSB0byBhbHdheXMgcmV0dXJuIGFuIGVycm9yLiAgU28gd2Ugd2FudAotdG8gZmluZCBhbiBhbHRlcm5hdGl2ZSB3YXkgdG8gcmV0cmlldmUgd2hhdGV2ZXIgaXQgaXMgd2UgbmVlZC4gIEl0IHR1cm5zCi1vdXQgdGhhdCB0aGUgc3lzdGVtIGlzIGp1c3QgdHJ5aW5nIHRvIGZpbmQgdGhlIHBhdGggdG8gdGhlIGdwZy1lcnJvci5oLCB3aGljaAotd2UgY2FuIHB1bGwgaW4gZnJvbSB0aGUgU1RBR0lOR19JTkMgZW52aXJvbm1lbnQuCitncGctZXJyb3ItY29uZmlnIHdhcyBtb2RpZmllZCBieSBPRSB0byBhbHdheXMgcmV0dXJuIGFuIGVycm9yLgorU28gd2Ugd2FudCB0byBmaW5kIGFuIGFsdGVybmF0aXZlIHdheSB0byByZXRyaWV2ZSB3aGF0ZXZlciBpdAoraXMgd2UgbmVlZC4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBPRV0KIAogU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgogCi1SZWJhc2UgdG8gMS45LjAKK1Jld29yayB0byAxLjEwLjAKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCi0gbGFuZy9weXRob24vc2V0dXAucHkuaW4gfCAxNSArKy0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKyBsYW5nL3B5dGhvbi9zZXR1cC5weS5pbiB8IDEwICstLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbiBiL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCi1pbmRleCBiZjRlZmEzLi43YzM0NDg3IDEwMDc1NQoraW5kZXggZjlkZGEyMC4uOWY1ZDYxZiAxMDA3NTUKIC0tLSBhL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCiArKysgYi9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbgotQEAgLTI0LDcgKzI0LDYgQEAgaW1wb3J0IGdsb2IKK0BAIC0yNiw3ICsyNiw2IEBAIGltcG9ydCBzaHV0aWwKICBpbXBvcnQgc3VicHJvY2VzcwogIAogICMgT3V0LW9mLXRyZWUgYnVpbGQgb2YgdGhlIGdwZyBiaW5kaW5ncy4KQEAgLTMxLDM1ICszMCwyMiBAQAogIGdwZ21lX2NvbmZpZ19mbGFncyA9IFsiLS10aHJlYWQ9cHRocmVhZCJdCiAgZ3BnbWVfY29uZmlnID0gWyJncGdtZS1jb25maWciXSArIGdwZ21lX2NvbmZpZ19mbGFncwogIGdwZ21lX2ggPSAiIgotQEAgLTUyLDEzICs1MSw2IEBAIGVsc2U6Ci0gICAgIGRldm51bGwgPSBvcGVuKG9zLmRldm51bGwsICJ3IikKK0BAIC0xNzQsMTQgKzE3Myw3IEBAIGNsYXNzIEJ1aWxkRXh0Rmlyc3RIYWNrKGJ1aWxkKToKICAKLSB0cnk6Ci0tICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChncGdfZXJyb3JfY29uZmlnICsgWyctLXZlcnNpb24nXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1kZXZudWxsKQotLWV4Y2VwdDoKLS0gICAgc3lzLmV4aXQoIkNvdWxkIG5vdCBmaW5kIGdwZy1lcnJvci1jb25maWcuICAiICsKLS0gICAgICAgICAgICAgIlBsZWFzZSBpbnN0YWxsIHRoZSBsaWJncGctZXJyb3IgZGV2ZWxvcG1lbnQgcGFja2FnZS4iKQorICAgICBkZWYgX2dlbmVyYXRlX2Vycm9yc19pKHNlbGYpOgorIAorLSAgICAgICAgdHJ5OgorLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChncGdfZXJyb3JfY29uZmlnICsgWyctLXZlcnNpb24nXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PWRldm51bGwpCistICAgICAgICBleGNlcHQ6CistICAgICAgICAgICAgc3lzLmV4aXQoIkNvdWxkIG5vdCBmaW5kIGdwZy1lcnJvci1jb25maWcuICAiICsKKy0gICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIGluc3RhbGwgdGhlIGxpYmdwZy1lcnJvciBkZXZlbG9wbWVudCBwYWNrYWdlLiIpCiAtCi0tdHJ5OgotICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoZ3BnbWVfY29uZmlnICsgWyctLXZlcnNpb24nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1kZXZudWxsKQotIGV4Y2VwdDoKLUBAIC04MSwxMiArNzMsOSBAQCBpZiBub3QgKG1ham9yID4gMSBvciAobWFqb3IgPT0gMSBhbmQgbWlub3IgPj0gNykpOgotIGlmIG5vdCBncGdtZV9oOgotICAgICBncGdtZV9oID0gb3MucGF0aC5qb2luKGdldGNvbmZpZygicHJlZml4IilbMF0sICJpbmNsdWRlIiwgImdwZ21lLmgiKQorLSAgICAgICAgZ3BnX2Vycm9yX2NvbnRlbnQgPSBzZWxmLl9yZWFkX2hlYWRlcigiZ3BnLWVycm9yLmgiLCBnZXRjb25maWcoImNmbGFncyIsIGNvbmZpZz1ncGdfZXJyb3JfY29uZmlnKSkKKysgICAgICAgIGdwZ19lcnJvcl9jb250ZW50ID0gc2VsZi5fcmVhZF9oZWFkZXIoImdwZy1lcnJvci5oIiwgb3MuZW52aXJvbi5nZXQoJ0NGTEFHUycpLnNwbGl0KCkpCiAgCi0tZ3BnX2Vycm9yX3ByZWZpeCA9IGdldGNvbmZpZygicHJlZml4IiwgY29uZmlnPWdwZ19lcnJvcl9jb25maWcpWzBdCi0tZ3BnX2Vycm9yX2ggPSBvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLCAiZ3BnLWVycm9yLmgiKQotK2dwZ19lcnJvcl9oID0gb3MucGF0aC5qb2luKG9zLmdldGVudignU1RBR0lOR19JTkNESVInKSwgImdwZy1lcnJvci5oIikKLSBpZiBub3Qgb3MucGF0aC5leGlzdHMoZ3BnX2Vycm9yX2gpOgotLSAgICBncGdfZXJyb3JfaCA9IFwKLS0gICAgICAgIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKiIsICJncGctZXJyb3IuaCIpKVswXQotKyAgICBzeXMuZXhpdCgiZ3BnX2Vycm9yX2ggbm90IGZvdW5kOiAlcyIgJSBncGdfZXJyb3JfaCkKLSAKLSBwcmludCgiQnVpbGRpbmcgcHl0aG9uIGdwZyBtb2R1bGUgdXNpbmcge30gYW5kIHt9LiIuZm9ybWF0KGdwZ21lX2gsIGdwZ19lcnJvcl9oKSkKLSAKKyAgICAgICAgIGZpbHRlcl9yZSA9IHJlLmNvbXBpbGUocidHUEdfRVJSX1teIF0qID0nKQorICAgICAgICAgcmV3cml0ZV9yZSA9IHJlLmNvbXBpbGUocicgKiguKikgPSAuKicpCiAtLSAKLTIuOC4xCisxLjguMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKaW5kZXggZDM4MzMxMS4uN2M5Y2NjYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDYyMzMyZWVjNzUyZGQ3OTBmNGRkMDcxZGZiMGRiZTg2YmUzNzcyMDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDU6MzQgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzVdIENvcnJlY3RseSBpbnN0YWxsIHB5dGhvbiBtb2R1bGVzCitGcm9tIDkzYWFlMzRlZTcwYjhkNTBiMzFhMTlhNjVkNmFjODI5MGNiMTQ4YWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDMwIEphbiAyMDE4IDE1OjI4OjQ5ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBDb3JyZWN0bHkgaW5zdGFsbCBweXRob24gbW9kdWxlcwogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KQEAgLTksMjIgKzksMjUgQEAKIFJlYmFzZSB0byAxLjkuMAogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAxLjEwLjAKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIC0tLQogIGxhbmcvcHl0aG9uL01ha2VmaWxlLmFtIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCi1pbmRleCBkOTFlYWQ5Li42N2Y3Y2RjIDEwMDY0NAoraW5kZXggOGQ3NGNiZC4uY2U0ZjBhNSAxMDA2NDQKIC0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCiArKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQotQEAgLTEwNiw2ICsxMDYsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWw6Ci0gCSAgY2QgcHl0aG9uJCR7VkVSU0lPTn0tZ3BnIDsgXAotIAkgICQkUFlUSE9OIHNldHVwLnB5IGluc3RhbGwgXAotIAkgIC0tcHJlZml4ICQoREVTVERJUikkKHByZWZpeCkgXAorQEAgLTkxLDYgKzkxLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsOgorIAkgIC0tYnVpbGQtYmFzZT0iJCQoYmFzZW5hbWUgIiQke1BZVEhPTn0iKS1ncGciIFwKKyAJICBpbnN0YWxsIFwKKyAJICAtLXByZWZpeCAiJChERVNURElSKSQocHJlZml4KSIgXAogKwkgIC0taW5zdGFsbC1saWI9JChERVNURElSKSR7cHl0aG9uZGlyfSBcCi0gCSAgLS1yZWNvcmQgZmlsZXMudHh0IFwKICAJICAtLXZlcmJvc2UgOyBcCi0gCSAgY2F0IGZpbGVzLnR4dCA+PiAuLi9pbnN0YWxsX2ZpbGVzLnR4dCA7IFwKKyAJZG9uZQorIAogLS0gCi0yLjguMQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNC1weXRob24taW1wb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaAppbmRleCA5MzA3MTAzLi5kMmIwMzlkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNC1weXRob24taW1wb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGNjYmYwMjhlZWE4ODE1ZDNiMTZkNmMzNGI1MjcyNTNhNmIxMDhlYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDMyZWNjM2YwNTgzMDcwNjBlNDBhZjg2MTI3Y2QyMjYyNDhhNzNjNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwMjowNjo0NSAtMDQwMAotU3ViamVjdDogW1BBVENIIDQvNV0gcHl0aG9uIGltcG9ydAorU3ViamVjdDogW1BBVENIIDMvNF0gcHl0aG9uIGltcG9ydAogCiBEb24ndCBjaGVjayBmb3Igb3V0cHV0IG9uIHN0ZGVyciB0byBrbm93IGlmIGFuIGltcG9ydCB3b3JrZWQsIGhvc3QgaW5wdXRyYyBhbmQKIHN5c3Jvb3QgcmVhZGxpbmUgY2FuIGNhdXNlIHdhcm5pbmdzIG9uIHN0ZGVyci4KQEAgLTMwLDUgKzMwLDUgQEAKICAJZWxzZQogIAkJQUNfTVNHX1JFU1VMVChbbm9dKQogLS0gCi0yLjguMQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDUtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaAppbmRleCA3YTZjYzdiLi45NjNhZTg3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDA2NGFlNDQ0MWUyYzExMzI5NzQ4YTE4MTU3OTg4ZjllOTUzZjk3NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZkY2VkYzRkZDA1NWFmOTAyNzE5YjFhMWNiMTBkYWE5MzVhMjdmNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTMgQXByIDIwMTcgMTY6NDA6MjcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIGdwZ21lLWNvbmZpZzogc2tpcCBhbGwgL2xpYiogb3IgL3Vzci9saWIqIGRpcmVjdG9yaWVzIGluCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBncGdtZS1jb25maWc6IHNraXAgYWxsIC9saWIqIG9yIC91c3IvbGliKiBkaXJlY3RvcmllcyBpbgogIG91dHB1dAogCiBUaGUgbG9naWMgd2FzIG5vdCB3b3JraW5nIGluIG11bHRpbGliIHNldHVwcyB3aGljaCB1c2Ugb3RoZXIKQEAgLTI3LDUgKzI3LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAtTCp8LWwqKQogLS0gCi0yLjguMQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNi1maXgtYnVpbGQtcGF0aC1pc3N1ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA2LWZpeC1idWlsZC1wYXRoLWlzc3VlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYzg5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNi1maXgtYnVpbGQtcGF0aC1pc3N1ZS5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDE4MGE1NjY5ZTRhMTNhNTUwYjFiMGRjZWYxNjg5YjZjMDQ3MGZlNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDExOjAxOjA5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBidWlsZCBwYXRoIGlzc3VlCisKK0dldCB0aGUgIi0tcm9vdCIgZGlyZWN0b3J5IHN1cHBsaWVkIHRvIHRoZSAiaW5zdGFsbCIgY29tbWFuZCwKK2FuZCB1c2UgaXQgYXMgYSBwcmVmaXggdG8gc3RyaXAgb2ZmIHRoZSBwdXJwb3J0ZWQgZmlsZW5hbWUKK2VuY29kZWQgaW4gYnl0ZWNvZGUgZmlsZXMuCisKK1NpbmNlIC0tcm9vdCBhZGRlZCwgd2UgbmVlZCB0byB0d2VhayAtLXByZWZpeCBhbmQgLS1pbnN0YWxsLWxpYgordG8gdXNlIHJlbGF0aXZlIHBhdGguCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtnbnVwZy1kZXZlbEBnbnVwZy5vcmddCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0gYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQoraW5kZXggY2U0ZjBhNS4uNWE0NjhmMSAxMDA2NDQKKy0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCisrKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTkwLDggKzkwLDkgQEAgaW5zdGFsbC1leGVjLWxvY2FsOgorIAkgIGJ1aWxkIFwKKyAJICAtLWJ1aWxkLWJhc2U9IiQkKGJhc2VuYW1lICIkJHtQWVRIT059IiktZ3BnIiBcCisgCSAgaW5zdGFsbCBcCistCSAgLS1wcmVmaXggIiQoREVTVERJUikkKHByZWZpeCkiIFwKKy0JICAtLWluc3RhbGwtbGliPSQoREVTVERJUikke3B5dGhvbmRpcn0gXAorKwkgIC0tcm9vdD0ke0RFU1RESVJ9IFwKKysJICAtLXByZWZpeCAiJChwcmVmaXgpIiBcCisrCSAgLS1pbnN0YWxsLWxpYj0ke3B5dGhvbmRpcn0gXAorIAkgIC0tdmVyYm9zZSA7IFwKKyAJZG9uZQorIAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDctcXQtcHl0aG9uLUFkZC12YXJpYWJsZXMtdG8tdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UzNzQ1YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsNzggQEAKK0Zyb20gZjQ3ZThjNmY5ZTQ2MTgwMzQ2OGE2NDU4MWQzNjQwZDg3MzM1MmVhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMSBGZWIgMjAxOCAxMDoxNDozMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBxdC9weXRob246IEFkZCB2YXJpYWJsZXMgdG8gdGVzdHMKKworKiBjb25maWd1cmUuYWMsIGxhbmcvcHl0aG9uL01ha2VmaWxlLmFtOgorICBOZXcgdmFyaWFibGUgdG8gYGxhbmcvcHl0aG9uJywgc2V0IHRvIGBsYW5nL3B5dGhvbicgaWYgUlVOX0xBTkdfUFlUSE9OX1RFU1RTCisKKyogY29uZmlndXJlLmFjLCBsYW5nL3F0L01ha2VmaWxlLmFtOgorICBOZXcgdmFyaWFibGUgdG8gYGxhbmcvcXQnLCBzZXQgdG8gYGxhbmcvcXQnIGlmIFJVTl9MQU5HX1FUX1RFU1RTCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtnbnVwZy1kZXZlbEBnbnVwZy5vcmddCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgIHwgMTEgKysrKysrKysrKysKKyBsYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSB8ICAzICsrKworIGxhbmcvcXQvTWFrZWZpbGUuYW0gICAgIHwgIDggKysrKysrKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNjA4YzM3Ni4uZmFkNzQ2NyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTM2LDYgKzUzNiwxNyBAQCBBQ19BUkdfRU5BQkxFKGcxMy10ZXN0LAorICAgICAgICAgIHJ1bl9nMTNfdGVzdD0kZW5hYmxldmFsKQorIEFNX0NPTkRJVElPTkFMKFJVTl9HMTNfVEVTVFMsIHRlc3QgIiRydW5fZzEzX3Rlc3QiID0gInllcyIpCisgCisrcnVuX2xhbmdfcHl0aG9uX3Rlc3Q9InllcyIKKytBQ19BUkdfRU5BQkxFKGxhbmctcHl0aG9uLXRlc3QsCisrICBBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWxhbmctcHl0aG9uLXRlc3RdLCBbZGlzYWJsZSBQeXRob24gcmVncmVzc2lvbiB0ZXN0XSksCisrICAgICAgICAgcnVuX2xhbmdfcHl0aG9uX3Rlc3Q9JGVuYWJsZXZhbCkKKytBTV9DT05ESVRJT05BTChSVU5fTEFOR19QWVRIT05fVEVTVFMsIHRlc3QgIiRydW5fbGFuZ19weXRob25fdGVzdCIgPSAieWVzIikKKysKKytydW5fbGFuZ19xdF90ZXN0PSJ5ZXMiCisrQUNfQVJHX0VOQUJMRShsYW5nLXF0LXRlc3QsCisrICBBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWxhbmctcXQtdGVzdF0sIFtkaXNhYmxlIFF0IHJlZ3Jlc3Npb24gdGVzdF0pLAorKyAgICAgICAgIHJ1bl9sYW5nX3F0X3Rlc3Q9JGVuYWJsZXZhbCkKKytBTV9DT05ESVRJT05BTChSVU5fTEFOR19RVF9URVNUUywgdGVzdCAiJHJ1bl9sYW5nX3F0X3Rlc3QiID0gInllcyIpCisgCisgIyBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KKyBBQ19DSEVDS19IRUFERVJTX09OQ0UoW2xvY2FsZS5oIHN5cy9zZWxlY3QuaCBzeXMvdWlvLmggYXJncC5oCitkaWZmIC0tZ2l0IGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0gYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQoraW5kZXggOGQ3NGNiZC4uNDNiNWQxZSAxMDA2NDQKKy0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCisrKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTI0LDcgKzI0LDEwIEBAIEVYVFJBX0RJU1QgPSBcCisgCWV4YW1wbGVzIFwKKyAJc3JjCisgCisraWYgUlVOX0xBTkdfUFlUSE9OX1RFU1RTCisgU1VCRElSUyA9IC4gdGVzdHMKKytlbmRpZgorKworIAorIC5QSE9OWTogcHJlcGFyZQorIHByZXBhcmU6IGNvcHlzdGFtcAorZGlmZiAtLWdpdCBhL2xhbmcvcXQvTWFrZWZpbGUuYW0gYi9sYW5nL3F0L01ha2VmaWxlLmFtCitpbmRleCBhYjg1OTYwLi5hMjQ0ZWRlIDEwMDY0NAorLS0tIGEvbGFuZy9xdC9NYWtlZmlsZS5hbQorKysrIGIvbGFuZy9xdC9NYWtlZmlsZS5hbQorQEAgLTE5LDYgKzE5LDEyIEBACisgIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKyAjIDAyMTExLTEzMDcsIFVTQQorIAorLVNVQkRJUlMgPSBzcmMgdGVzdHMgZG9jCisraWYgUlVOX0xBTkdfUVRfVEVTVFMKKytxdHRlc3RzID0gdGVzdHMKKytlbHNlCisrcXR0ZXN0cyA9CisrZW5kaWYKKysKKytTVUJESVJTID0gc3JjICR7cXR0ZXN0c30gZG9jCisgCisgRVhUUkFfRElTVCA9IFJFQURNRQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS4xMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMTVmM2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS4xMC4wLmJiCkBAIC0wLDAgKzEsODYgQEAKK1NVTU1BUlkgPSAiSGlnaC1sZXZlbCBHbnVQRyBlbmNyeXB0aW9uL3NpZ25pbmcgQVBJIgorREVTQ1JJUFRJT04gPSAiR251UEcgTWFkZSBFYXN5IChHUEdNRSkgaXMgYSBsaWJyYXJ5IGRlc2lnbmVkIHRvIG1ha2UgYWNjZXNzIHRvIEdudVBHIGVhc2llciBmb3IgYXBwbGljYXRpb25zLiBJdCBwcm92aWRlcyBhIEhpZ2gtTGV2ZWwgQ3J5cHRvIEFQSSBmb3IgZW5jcnlwdGlvbiwgZGVjcnlwdGlvbiwgc2lnbmluZywgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBhbmQga2V5IG1hbmFnZW1lbnQiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9ncGdtZS5odG1sIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGdtZS5oLmluO2VuZGxpbmU9MjM7bWQ1PTlkMTU3ZDA4YTY5MDU5MzQ0ZTZmODJhYmQyZDI1NzgxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9lbmdpbmUuaDtlbmRsaW5lPTIyO21kNT00YjZkOGJhMzEzZDliNTY0Y2M0ZDRjZmIxNjQwYWY5ZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ncGdtZS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1maXgtYnVpbGQtcGF0aC1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3OGIxNTMzYzU5MzQ3ODk4MmVlMmZjNTQ4MjYwYzU2MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYThmZWQxMTk3YzNiOTljMzVmNDAzMDY2YmIzNDRhMjYyMjRkMjkyYWZjMDQ4Y2ZkZmM0Y2NkNTY5MGEwNjkzIgorCitERVBFTkRTID0gImxpYmdwZy1lcnJvciBsaWJhc3N1YW4iCitSREVQRU5EU18ke1BOfS1jcHAgKz0gImxpYnN0ZGMrKyIKKworUkRFUEVORFNfcHl0aG9uMi1ncGcgKz0gInB5dGhvbi11bml4YWRtaW4iCitSREVQRU5EU19weXRob24zLWdwZyArPSAicHl0aG9uMy11bml4YWRtaW4iCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZ3BnbWUtY29uZmlnIgorCisjIE5vdGUgc2VsZWN0IHB5dGhvbjIgb3IgcHl0aG9uMywgYnV0IHlvdSBjYW4ndCBzZWxlY3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uMl0gPSAiLCxweXRob24gc3dpZy1uYXRpdmUsIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICIsLHB5dGhvbjMgc3dpZy1uYXRpdmUsIgorCisjIERlZmF1bHQgaW4gY29uZmlndXJlLmFjOiAiY2wgY3BwIHB5dGhvbiBxdCIKKyMgU3VwcG9ydGVkOiAiY2wgY3BwIHB5dGhvbiBweXRob24yIHB5dGhvbjMgcXQiCisjIHB5dGhvbiBzYXlzICdzZWFyY2ggYW5kIGZpbmQgcHl0aG9uMiBvciBweXRob24zJworCisjIEJ1aWxkaW5nIHRoZSBDKysgYmluZGluZ3MgZm9yIG5hdGl2ZSByZXF1aXJlcyBhIEMrKyBjb21waWxlciB3aXRoIEMrKzExCisjIHN1cHBvcnQuIFNpbmNlIHRoZXNlIGJpbmRpbmdzIGFyZSBjdXJyZW50bHkgbm90IG5lZWRlZCwgd2UgY2FuIGRpc2FibGUgdGhlbS4KK0RFRkFVTFRfTEFOR1VBR0VTID0gIiIKK0RFRkFVTFRfTEFOR1VBR0VTX2NsYXNzLXRhcmdldCA9ICJjcHAiCitMQU5HVUFHRVMgPz0gIiR7REVGQVVMVF9MQU5HVUFHRVN9IgorTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJyBweXRob24yJywgJycsIGQpfSIKK0xBTkdVQUdFUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICcgcHl0aG9uMycsICcnLCBkKX0iCisKK1BZVEhPTl9JTkhFUklUID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9ubmF0aXZlJywgJycsIGQpfSIKK1BZVEhPTl9JTkhFUklUIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9IgorCitFWFRSQV9PRUNPTkYgKz0gJy0tZW5hYmxlLWxhbmd1YWdlcz0iJHtMQU5HVUFHRVN9IiBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ncGdjb25mLXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3BnLXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3Bnc20tdGVzdCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nMTMtdGVzdCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1sYW5nLXF0LXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGFuZy1weXRob24tdGVzdCBcCisnCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyAke1BZVEhPTl9JTkhFUklUfQorCitleHBvcnQgUEtHX0NPTkZJRz0ncGtnLWNvbmZpZycKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tY3BwIgorUEFDS0FHRVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9uMi1ncGcgJywgJycsIGQpfSIKK1BBQ0tBR0VTID0uICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMtZ3BnICcsICcnLCBkKX0iCisKK0ZJTEVTXyR7UE59LWNwcCA9ICIke2xpYmRpcn0vbGliZ3BnbWVwcC5zby4qIgorRklMRVNfcHl0aG9uMi1ncGcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK0ZJTEVTX3B5dGhvbjMtZ3BnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY29tbW9uLWxpc3Avc291cmNlL2dwZ21lLyogXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vY21ha2UvKiBcCisiCisKK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRF9fZXJyb3JfdF9kZWZpbmVkICIKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQorCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00CisJcm0gLWYgJHtTfS9tNC9saWJhc3N1YW4ubTQKKwlybSAtZiAke1N9L200L3B5dGhvbi5tNAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuOS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjVjMzQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLVNVTU1BUlkgPSAiSGlnaC1sZXZlbCBHbnVQRyBlbmNyeXB0aW9uL3NpZ25pbmcgQVBJIgotREVTQ1JJUFRJT04gPSAiR251UEcgTWFkZSBFYXN5IChHUEdNRSkgaXMgYSBsaWJyYXJ5IGRlc2lnbmVkIHRvIG1ha2UgYWNjZXNzIHRvIEdudVBHIGVhc2llciBmb3IgYXBwbGljYXRpb25zLiBJdCBwcm92aWRlcyBhIEhpZ2gtTGV2ZWwgQ3J5cHRvIEFQSSBmb3IgZW5jcnlwdGlvbiwgZGVjcnlwdGlvbiwgc2lnbmluZywgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBhbmQga2V5IG1hbmFnZW1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9ncGdtZS5odG1sIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGdtZS5oLmluO2VuZGxpbmU9MjM7bWQ1PTlkMTU3ZDA4YTY5MDU5MzQ0ZTZmODJhYmQyZDI1NzgxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9lbmdpbmUuaDtlbmRsaW5lPTIyO21kNT00YjZkOGJhMzEzZDliNTY0Y2M0ZDRjZmIxNjQwYWY5ZCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ncGdtZS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFlMDBiYjhlZjA0ZDFkMDVkNWEwZjE5ZTE0Mzg1NGMzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiMjlmZWRiOGJmYWQ3NzVlNzBlYWZhYzViMDU5MDYyMTY4M2IyZDk4NjlkYjk5NDU2OGU2NDAxZjQwMzRjZWIiCi0KLURFUEVORFMgPSAibGliZ3BnLWVycm9yIGxpYmFzc3VhbiIKLVJERVBFTkRTXyR7UE59LWNwcCArPSAibGlic3RkYysrIgotCi1SREVQRU5EU19weXRob24yLWdwZyArPSAicHl0aG9uLXVuaXhhZG1pbiIKLVJERVBFTkRTX3B5dGhvbjMtZ3BnICs9ICJweXRob24zLXVuaXhhZG1pbiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGdtZS1jb25maWciCi0KLSMgTm90ZSBzZWxlY3QgcHl0aG9uMiBvciBweXRob24zLCBidXQgeW91IGNhbid0IHNlbGVjdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUKLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIgotUEFDS0FHRUNPTkZJR1tweXRob24yXSA9ICIsLHB5dGhvbiBzd2lnLW5hdGl2ZSwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIiwscHl0aG9uMyBzd2lnLW5hdGl2ZSwiCi0KLSMgRGVmYXVsdCBpbiBjb25maWd1cmUuYWM6ICJjbCBjcHAgcHl0aG9uIHF0IgotIyBTdXBwb3J0ZWQ6ICJjbCBjcHAgcHl0aG9uIHB5dGhvbjIgcHl0aG9uMyBxdCIKLSMgcHl0aG9uIHNheXMgJ3NlYXJjaCBhbmQgZmluZCBweXRob24yIG9yIHB5dGhvbjMnCi0KLSMgQnVpbGRpbmcgdGhlIEMrKyBiaW5kaW5ncyBmb3IgbmF0aXZlIHJlcXVpcmVzIGEgQysrIGNvbXBpbGVyIHdpdGggQysrMTEKLSMgc3VwcG9ydC4gU2luY2UgdGhlc2UgYmluZGluZ3MgYXJlIGN1cnJlbnRseSBub3QgbmVlZGVkLCB3ZSBjYW4gZGlzYWJsZSB0aGVtLgotREVGQVVMVF9MQU5HVUFHRVMgPSAiIgotREVGQVVMVF9MQU5HVUFHRVNfY2xhc3MtdGFyZ2V0ID0gImNwcCIKLUxBTkdVQUdFUyA/PSAiJHtERUZBVUxUX0xBTkdVQUdFU30iCi1MQU5HVUFHRVMgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAnIHB5dGhvbjInLCAnJywgZCl9IgotTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJyBweXRob24zJywgJycsIGQpfSIKLQotUFlUSE9OX0lOSEVSSVQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob25uYXRpdmUnLCAnJywgZCl9IgotUFlUSE9OX0lOSEVSSVQgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiArPSAnLS1lbmFibGUtbGFuZ3VhZ2VzPSIke0xBTkdVQUdFU30iJwotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgJHtQWVRIT05fSU5IRVJJVH0KLQotZXhwb3J0IFBLR19DT05GSUc9J3BrZy1jb25maWcnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWNwcCIKLVBBQ0tBR0VTID0uICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ3B5dGhvbjItZ3BnICcsICcnLCBkKX0iCi1QQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLWdwZyAnLCAnJywgZCl9IgotCi1GSUxFU18ke1BOfS1jcHAgPSAiJHtsaWJkaXJ9L2xpYmdwZ21lcHAuc28uKiIKLUZJTEVTX3B5dGhvbjItZ3BnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1GSUxFU19weXRob24zLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NvbW1vbi1saXNwL3NvdXJjZS9ncGdtZS8qIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NtYWtlLyogXAotIgotCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURfX2Vycm9yX3RfZGVmaW5lZCAiCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9weXRob24ubTQKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LmluYwppbmRleCBhMWVmOWVjLi45ODMxMThjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UuaW5jCkBAIC0xNyw2ICsxNyw4IEBACiAKIEJJTkNPTkZJRyA9ICIke2JpbmRpcn0vaWN1LWNvbmZpZyIKIAorSUNVX01BSk9SX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZwogCiAjIElDVSBuZWVkcyB0aGUgbmF0aXZlIGJ1aWxkIGRpcmVjdG9yeSBhcyBhbiBhcmd1bWVudCB0byBpdHMgLS13aXRoLWNyb3NzLWJ1aWxkIG9wdGlvbiB3aGVuCkBAIC0yNiw2ICsyOCw4IEBACiBFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIiIKIEVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRoLWNyb3NzLWJ1aWxkPSR7U1RBR0lOR19JQ1VfRElSX05BVElWRX0iCiAKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2JlJywgJyAtLXdpdGgtZGF0YS1wYWNrYWdpbmc9YXJjaGl2ZScsICcnLCBkKX0iCitUQVJHRVRfQ1hYRkxBR1NfYXBwZW5kID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2JlJywgJyAtRElDVV9EQVRBX0RJUj1cXCIiJHtkYXRhZGlyfS8ke0JQTn0vJHtQVn1cXCIiJywgJycsIGQpfSIKIAogIyBzdHJ0b2RfbCgpIGlzIG5vdCBzdXBwb3J0ZWQgYnkgbXVzbDsgYWxzbyB4bG9jYWxlLmggaXMgbWlzc2luZwogIyBJdCBpcyBub3QgcG9zc2libGUgdG8gZGlzYWJsZSBpdHMgdXNlIHZpYSBjb25maWd1cmUgc3dpdGNoZXMgb3IgZW52IHZhcnMKQEAgLTM0LDYgKzM4LDE1IEBACiAgICAgc2VkIC1pIC1lICdzLERVX0hBVkVfU1RSVE9EX0w9MSxEVV9IQVZFX1NUUlRPRF9MPTAsJyAke1N9L2NvbmZpZ3VyZS5hYwogfQogCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwkjIE1ha2Ugc3VyZSBjZXJ0YWluIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBkbyBub3QgZW5kIHVwIGJlaW5nIGNvbXBpbGVkCisJIyBpbiB0aGUgaW1hZ2UuIFRoaXMgb25seSBhZmZlY3RzIGxpYmljdXR1IGFuZCBpY3UtZGJnCisJc2VkICBcCisJICAgIC1lICdzLERVX0JVSUxEPSxEVV9CVUlMRF91bnVzZWQ9LGcnIFwKKwkgICAgLWUgJy9eQ1BQRkxBR1MuKi8gcywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1pICR7Qn0vdG9vbHMvdG9vbHV0aWwvTWFrZWZpbGUKK30KKwogUFJFUFJPQ0VTU19SRUxPQ0FURV9ESVJTID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7UFZ9IgogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewogCW1rZGlyIC1wICR7RH0vJHtTVEFHSU5HX0lDVV9ESVJfTkFUSVZFfS9jb25maWcKQEAgLTQ0LDYgKzU3LDIzIEBACiAJY3AgLXIgJHtCfS90b29scyAke0R9LyR7U1RBR0lOR19JQ1VfRElSX05BVElWRX0KIH0KIAorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICMgVGhlIG5hdGl2ZSBwa2dkYXRhIGNhbiBub3QgZ2VuZXJhdGUgdGhlIGNvcnJlY3QgZGF0YSBmaWxlLgorICAgICMgVXNlIGljdXBrZyB0byByZS1nZW5lcmF0ZSBpdC4KKyAgICBpZiBbICIke1NJVEVJTkZPX0VORElBTk5FU1N9IiA9ICJiZSIgXSA7IHRoZW4KKyAgICAgICAgcm0gLWYgJHtEfS8ke2RhdGFkaXJ9LyR7QlBOfS8ke1BWfS9pY3VkdCR7SUNVX01BSk9SX1ZFUn1iLmRhdAorICAgICAgICBpY3Vwa2cgLXRiICR7U30vZGF0YS9pbi9pY3VkdCR7SUNVX01BSk9SX1ZFUn1sLmRhdCAke0R9LyR7ZGF0YWRpcn0vJHtCUE59LyR7UFZ9L2ljdWR0JHtJQ1VfTUFKT1JfVkVSfWIuZGF0CisgICAgZmkKKwkKKwkjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMuLi4KKwlzZWQgLWkgIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgICR7RH0vJHtiaW5kaXJ9L2ljdS1jb25maWcgJHtEfS8ke2xpYmRpcn0vJHtCUE59LyR7UFZ9L01ha2VmaWxlLmluYyBcCisJICAgICR7RH0vJHtsaWJkaXJ9LyR7QlBOfS8ke1BWfS9wa2dkYXRhLmluYworfQorCiBQQUNLQUdFUyA9KyAibGliaWN1ZGF0YSBsaWJpY3V1YyBsaWJpY3VpMThuIGxpYmljdXR1IGxpYmljdWlvIgogCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvMDAwMS1pMThuLURyb3AtaW5jbHVkZS14bG9jYWxlLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaAppbmRleCBhZGQwZDc2Li5mMGM0OWUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaApAQCAtMSwzMSArMSwzNCBAQAotRnJvbSBjNDI1NGZkOGZmMTg4OGNhMjg1ZTMyNDJiODEyMDEwMzU3Y2UyYjNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkNmI1N2MxYjRlYjlhMjRkOWQ5NTM0MmE5NjFjOTM5NDY1MzljOTNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMjQgSnVuIDIwMTcgMjI6NTI6NDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gaTE4bjogRHJvcCBpbmNsdWRlIDx4bG9jYWxlLmg+CitTdWJqZWN0OiBbUEFUQ0ggMy80XSBpMThuOiBEcm9wIGluY2x1ZGUgPHhsb2NhbGUuaD4KIAogZ2xpYmMgMi4yNiBkcm9wcyB0aGlzIGhlYWRlcgogCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKLSBpMThuL2RpZ2l0bHN0LmNwcCB8IDYgKy0tLS0tCistLS0KKyBzb3VyY2UvaTE4bi9kaWdpdGxzdC5jcHAgfCA2ICstLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNSBkZWxldGlvbnMoLSkKIAotSW5kZXg6IHNvdXJjZS9pMThuL2RpZ2l0bHN0LmNwcAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNvdXJjZS5vcmlnL2kxOG4vZGlnaXRsc3QuY3BwCi0rKysgc291cmNlL2kxOG4vZGlnaXRsc3QuY3BwCi1AQCAtNjEsMTEgKzYxLDcgQEAKK2RpZmYgLS1naXQgYS9zb3VyY2UvaTE4bi9kaWdpdGxzdC5jcHAgYi9zb3VyY2UvaTE4bi9kaWdpdGxzdC5jcHAKK2luZGV4IDhlODZmYTcuLjBiZGJiMmMgMTAwNjQ0CistLS0gYS9pMThuL2RpZ2l0bHN0LmNwcAorKysrIGIvaTE4bi9kaWdpdGxzdC5jcHAKK0BAIC02MiwxMSArNjIsNyBAQAogICNlbmRpZgogIAogICNpZiBVX1VTRV9TVFJUT0RfTAotLSMgaWYgVV9QTEFURk9STV9VU0VTX09OTFlfV0lOMzJfQVBJIHx8IFVfUExBVEZPUk0gPT0gVV9QRl9DWUdXSU4KLS0jICAgaW5jbHVkZSA8bG9jYWxlLmg+Ci0tIyBlbHNlCistIyBpZiBVX0hBVkVfWExPQ0FMRV9ICiAtIyAgIGluY2x1ZGUgPHhsb2NhbGUuaD4KKy0jIGVsc2UKKy0jICAgaW5jbHVkZSA8bG9jYWxlLmg+CiAtIyBlbmRpZgogKyMgaW5jbHVkZSA8bG9jYWxlLmg+CiAgI2VuZGlmCiAgCiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9DVkUtMjAxNy0xNDk1Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L0NWRS0yMDE3LTE0OTUyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzU5ZWZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L0NWRS0yMDE3LTE0OTUyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBmYzgzY2Q4MzI3MjVkMzk2ODAxMWYxMTg2MzdiOWY1ZDIxMmU4NzE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAxMCBOb3YgMjAxNyAxNjo1MToyNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBSZW1vdmVkIHJlZHVuZGFudCBVVmVjdG9yIGVudHJ5IGNsZWFuIHVwIGZ1bmN0aW9uIGNhbGwuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMTQ5NTIKLQotU2lnbmVkLW9mZi1ieTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotLS0tCi0gaTE4bi96b25lbWV0YS5jcHAgfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaTE4bi96b25lbWV0YS5jcHAgYi9pMThuL3pvbmVtZXRhLmNwcAotaW5kZXggODRhOTY1Ny4uZTE2M2IwMCAxMDA2NDQKLS0tLSBhL2kxOG4vem9uZW1ldGEuY3BwCi0rKysgYi9pMThuL3pvbmVtZXRhLmNwcAotQEAgLTY5MCw3ICs2OTAsNiBAQCBab25lTWV0YTo6Y3JlYXRlTWV0YXpvbmVNYXBwaW5ncyhjb25zdCBVbmljb2RlU3RyaW5nICZ0emlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICBtek1hcHBpbmdzID0gbmV3IFVWZWN0b3IoZGVsZXRlT2xzb25Ub01ldGFNYXBwaW5nRW50cnksIE5VTEwsIHN0YXR1cyk7Ci0gICAgICAgICAgICAgICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbXpNYXBwaW5nczsKLS0gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVPbHNvblRvTWV0YU1hcHBpbmdFbnRyeShlbnRyeSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgdXBydl9mcmVlKGVudHJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgIH0KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ZpeC1pbnN0YWxsLW1hbngucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9maXgtaW5zdGFsbC1tYW54LnBhdGNoCmluZGV4IGVjNjNmNTAuLjgxODZmYjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ZpeC1pbnN0YWxsLW1hbngucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvZml4LWluc3RhbGwtbWFueC5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gMzA2M2E5MjExNjY5YmVlNjczODQwZWU4MWY4MWQzMDY5OWI5YjcwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBGcmksIDkgT2N0IDIwMTUgMTc6NTA6NDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIGljdTogZml4IGluc3RhbGwgcmFjZQorCiBUaGUgZ2VuZXJpYyByZWN1cnNpdmUgdGFyZ2V0IGNhbGxzIHRhcmdldC1sb2NhbCBzbyBhbHNvIGFkZGluZyBpdCB0byB0aGUKIGRlcGVuZGVuY3kgbGlzdCByZXN1bHRzIGluIHJhY2VzIGR1ZSB0byBpbnN0YWxsLWxvY2FsIGJlaW5nIGV4ZWN1dGVkIHR3aWNlIGluCiBwYXJhbGxlbC4gIEZvciBleGFtcGxlLCBpbnN0YWxsLW1hbnggY2FuIGZhaWwgaWYgdGhlIHR3byBpbnN0YWxsIHByb2Nlc3NlcyByYWNlCkBAIC05LDEyICsxNCwxNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCistLS0KKyBzb3VyY2UvTWFrZWZpbGUuaW4gfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDlkYjZjNTIuLjM0NDFhZmEgMTAwNjQ0CitkaWZmIC0tZ2l0IGEvc291cmNlL01ha2VmaWxlLmluIGIvc291cmNlL01ha2VmaWxlLmluCitpbmRleCBjMWRiMTViLi40OTQ4ZGViIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuaW4KICsrKyBiL01ha2VmaWxlLmluCi1AQCAtNzEsNyArNzEsNyBAQCBFWFRSQV9EQVRBID0KK0BAIC03Myw3ICs3Myw3IEBAIEVYVFJBX0RBVEEgPQogIAogICMjIExpc3Qgb2YgcGhvbnkgdGFyZ2V0cwogIC5QSE9OWSA6IGFsbCBhbGwtbG9jYWwgYWxsLXJlY3Vyc2l2ZSBpbnN0YWxsIGluc3RhbGwtbG9jYWwgaW5zdGFsbC11ZGF0YSBpbnN0YWxsLXVkYXRhLWZpbGVzIGluc3RhbGwtdWRhdGEtZGxscwkJXApAQCAtMjMsNyArMzEsNyBAQAogIGRpc3RjbGVhbi1sb2NhbCBkaXN0Y2xlYW4tcmVjdXJzaXZlIGRvYyBkaXN0IGRpc3QtbG9jYWwgZGlzdC1yZWN1cnNpdmUJXAogIGNoZWNrIGNoZWNrLWxvY2FsIGNoZWNrLXJlY3Vyc2l2ZSBjbGVhbi1yZWN1cnNpdmUtd2l0aC10d2lzdCBpbnN0YWxsLWljdSBcCiAgZG9jIGluc3RhbGwtZG9jIHRlc3RzIGljdTRqLWRhdGEgaWN1NGotZGF0YS1pbnN0YWxsIHVwZGF0ZS13aW5kb3dzLW1ha2VmaWxlcyB4Y2hlY2stbG9jYWwgeGNoZWNrLXJlY3Vyc2l2ZSB4cGVyZiB4Y2hlY2sgeHBlcmYtcmVjdXJzaXZlIFwKLUBAIC04MiwxMCArODIsMTAgQEAgY2hlY2stZXhoYXVzdGl2ZSBjaGVjay1leGhhdXN0aXZlLWxvY2FsIGNoZWNrLWV4aGF1c3RpdmUtcmVjdXJzaXZlIHJlbGVhc2VEaXN0CitAQCAtODQsOSArODQsOSBAQCBjaGVjay1leGhhdXN0aXZlIGNoZWNrLWV4aGF1c3RpdmUtbG9jYWwgY2hlY2stZXhoYXVzdGl2ZS1yZWN1cnNpdmUgcmVsZWFzZURpc3QKICAKICAjIyBMaXN0IG9mIHN0YW5kYXJkIHRhcmdldHMKICBhbGw6IGFsbC1sb2NhbCBhbGwtcmVjdXJzaXZlCkBAIC0zMSwxMyArMzksMTEgQEAKICtpbnN0YWxsOiBpbnN0YWxsLXJlY3Vyc2l2ZQogIGNsZWFuOiBjbGVhbi1yZWN1cnNpdmUtd2l0aC10d2lzdCBjbGVhbi1sb2NhbAogLWRpc3RjbGVhbiA6IGRpc3RjbGVhbi1yZWN1cnNpdmUgZGlzdGNsZWFuLWxvY2FsCi0tZGlzdDogZGlzdC1yZWN1cnNpdmUgZGlzdC1sb2NhbAogK2Rpc3RjbGVhbiA6IGRpc3RjbGVhbi1yZWN1cnNpdmUKLStkaXN0OiBkaXN0LXJlY3Vyc2l2ZQorIGRpc3Q6IGRpc3QtcmVjdXJzaXZlCiAgY2hlY2s6IGFsbCBjaGVjay1yZWN1cnNpdmUKICBjaGVjay1yZWN1cnNpdmU6IGFsbAotIHhjaGVjazogYWxsIHhjaGVjay1yZWN1cnNpdmUKLUBAIC0zNTIsNyArMzUyLDcgQEAgY29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSAkKHNyY2RpcikvY29tbW9uL3VuaWNvZGUvdXZlcm51bS5oCitAQCAtMzUwLDcgKzM1MCw3IEBAIGNvbmZpZy5zdGF0dXM6ICQoc3JjZGlyKS9jb25maWd1cmUgJChzcmNkaXIpL2NvbW1vbi91bmljb2RlL3V2ZXJudW0uaAogIAogIGluc3RhbGwtbWFueDogJChNQU5YX0ZJTEVTKQogIAkkKE1LSU5TVEFMTERJUlMpICQoREVTVERJUikkKG1hbmRpcikvbWFuJChTRUNUSU9OKQpAQCAtNDYsMyArNTIsNiBAQAogIAogIGNvbmZpZy8lLiQoU0VDVElPTik6ICQoc3JjZGlyKS9jb25maWcvJS4kKFNFQ1RJT04pLmluCiAgCWNkICQodG9wX2J1aWxkZGlyKSBcCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNTkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZiMWJlOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotcmVxdWlyZSBpY3UuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PWZlOWUxZjJjNTAwNDY2ZDhmMThkZjJjZDA2OGU0Yjc0IgotCi1kZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1CQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKLVNSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0OTUyLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1NDkyM2ZhOWZhYjViMmI4M2YyMzVmYjcyNTIzZGUzNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MTMyZmRhZjkzNzk0MjlkMDA0MDA1MjE3ZjEwZTAwYjdkMjMxOWQwZmVhMjJiZGZkZGVmODk5MWM0NWI3NWZlIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzYwLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg1YTkyYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzYwLjIuYmIKQEAgLTAsMCArMSwyOSBAQAorcmVxdWlyZSBpY3UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PTY3NWYyZDA2OTQzNGQ4YTFlNGU2YjBkY2Y0Mzc5MjI2IgorCitkZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitCQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKKyAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0Mzg2MWIxMjc3NDRiM2MwYjlkN2YzODZmNGI5ZmE0MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMDczZWE4ZjM1YjkyNmQ3MGJiMzNlNjU3NzUwOGFhNjQyYThiMzE2YTgwM2YxMWJlMjBhZjM4NDgxMWRiNDE4IgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmM2Q1M2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiSVNPIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGN1cnJlbmN5LCBzY3JpcHQgY29kZXMgYW5kIHRoZWlyIHRyYW5zbGF0aW9ucyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotU1JDX1VSSSA9ICJodHRwczovL3BrZy1pc29jb2Rlcy5hbGlvdGguZGViaWFuLm9yZy9kb3dubG9hZHMvaXNvLWNvZGVzLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5YmExNzNiNjlkNDM2MDAwMzQxNGYyMzgzNzU5N2E5MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MzM1ZTAzMDFjZDc3Y2Q0ZWUwMTliZjVkMzcwOWFhNzkzMDlkNDlkZDY2ZTg1YmEzNTBjYWY2N2UwMGIwMGNkIgotCi0jIGluaGVyaXQgZ2V0dGV4dCBjYW5ub3QgYmUgdXNlZCwgYmVjYXVzZSBpdCBhZGRzIGdldHRleHQtbmF0aXZlIHRvIEJBU0VERVBFTkRTIHdoaWNoCi0jIGFyZSBpbmhpYml0ZWQgYnkgYWxsYXJjaAotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94bWwvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43Ny5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ2MTNhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzcuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJJU08gbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY3VycmVuY3ksIHNjcmlwdCBjb2RlcyBhbmQgdGhlaXIgdHJhbnNsYXRpb25zIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImh0dHBzOi8vcGtnLWlzb2NvZGVzLmFsaW90aC5kZWJpYW4ub3JnL2Rvd25sb2Fkcy9pc28tY29kZXMtJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjlkMGQwNmNmYjQ2MzQ0MjhiMzAwODQ1ZWRjZDcxNDBhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxY2Q3M2E0YzZmOTVkOTQ3NGViZmNmZmQ0ZTA2NTIyMzg1NzcyMGYyNDg1OGU1NjRmNDQwOWIxOWY3ZjBkOTAiCisKKyMgaW5oZXJpdCBnZXR0ZXh0IGNhbm5vdCBiZSB1c2VkLCBiZWNhdXNlIGl0IGFkZHMgZ2V0dGV4dC1uYXRpdmUgdG8gQkFTRURFUEVORFMgd2hpY2gKKyMgYXJlIGluaGliaXRlZCBieSBhbGxhcmNoCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIgorCitpbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3htbC8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbi9saWJhc3N1YW4tYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW4vbGliYXNzdWFuLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaAppbmRleCBiNmNjZGRhLi41MjViMDc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbi9saWJhc3N1YW4tYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuL2xpYmFzc3Vhbi1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKQEAgLTYsMzIgKzYsMTUgQEAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KIAotSW5kZXg6IGxpYmFzc3Vhbi0yLjEuMi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmFzc3Vhbi0yLjEuMi5vcmlnL01ha2VmaWxlLmFtCi0rKysgbGliYXNzdWFuLTIuMS4yL01ha2VmaWxlLmFtCi1AQCAtMjQsMTAgKzI0LDEzIEBAIEFVVE9NQUtFX09QVElPTlMgPSBkaXN0LWJ6aXAyIG5vLWRpc3QtZ3oKLSAjIChBIHN1aXRhYmxlIGdpdGxvZy10by1jaGFuZ2Vsb2cgc2NyaXB0IGNhbiBiZSBmb3VuZCBpbiBHbnVQRyBtYXN0ZXIuKQotIEdJVExPR19UT19DSEFOR0VMT0c9Z2l0bG9nLXRvLWNoYW5nZWxvZwotIAotK3BrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKLStwa2djb25maWdfREFUQSA9IGxpYmFzc3Vhbi5wYwotKwotIEVYVFJBX0RJU1QgPSBhdXRvZ2VuLnNoIGF1dG9nZW4ucmMgUkVBRE1FLkdJVCAgICAgICAgIAkgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICBDaGFuZ2VMb2ctMjAxMSBkb2MvQ2hhbmdlTG9nLTIwMTEgc3JjL0NoYW5nZUxvZy0yMDExIAlcCi0gICAgICAgICAgICAgIHRlc3RzL0NoYW5nZUxvZy0yMDExIGNvbnRyaWIvQ2hhbmdlTG9nLTIwMTEgICAgIAkJXAotLSAgICAgICAgICAgICBidWlsZC1hdXgvZ2l0LWxvZy1mb290ZXIgYnVpbGQtYXV4L2dpdC1sb2ctZml4Ci0rICAgICAgICAgICAgIGJ1aWxkLWF1eC9naXQtbG9nLWZvb3RlciBidWlsZC1hdXgvZ2l0LWxvZy1maXggbGliYXNzdWFuLnBjLmluCi0gCi0gU1VCRElSUyA9IG00IHNyYyBkb2MgdGVzdHMKLSAKLUluZGV4OiBsaWJhc3N1YW4tMi4xLjIvbGliYXNzdWFuLnBjLmluCitmb3J3YXJkIHBvcnRlZCB0byAyLjQuNAorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKK0luZGV4OiBsaWJhc3N1YW4tMi40LjQvbGliYXNzdWFuLnBjLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgbGliYXNzdWFuLTIuMS4yL2xpYmFzc3Vhbi5wYy5pbgotQEAgLTAsMCArMSwxNCBAQAotK3ByZWZpeD1AcHJlZml4QAotK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKysrKyBsaWJhc3N1YW4tMi40LjQvbGliYXNzdWFuLnBjLmluCitAQCAtMCwwICsxLDEzIEBACisrcHJlZml4PUBleGVjX3ByZWZpeEAKICtsaWJkaXI9QGxpYmRpckAKICtpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAogK2FwaV92ZXJzaW9uPUBMSUJBU1NVQU5fQ09ORklHX0FQSV9WRVJTSU9OQApAQCAtNDQsMjQgKzI3LDQyIEBACiArTGliczogLUwke2xpYmRpcn0gLWxhc3N1YW4KICtMaWJzLnByaXZhdGU6IC1sZ3BnLWVycm9yCiArQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KLUluZGV4OiBsaWJhc3N1YW4tMi4xLjIvY29uZmlndXJlLmFjCitJbmRleDogbGliYXNzdWFuLTIuNC40L01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliYXNzdWFuLTIuMS4yLm9yaWcvY29uZmlndXJlLmFjCi0rKysgbGliYXNzdWFuLTIuMS4yL2NvbmZpZ3VyZS5hYwotQEAgLTQzOSw3ICs0MzksNyBAQCBBQ19DT05GSUdfRklMRVMoW2RvYy9NYWtlZmlsZV0pCistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0yNSwxMCArMjUsMTMgQEAgRElTVENIRUNLX0NPTkZJR1VSRV9GTEFHUyA9IC0tZW5hYmxlLWRvYworICMgKEEgc3VpdGFibGUgZ2l0bG9nLXRvLWNoYW5nZWxvZyBzY3JpcHQgY2FuIGJlIGZvdW5kIGluIEdudVBHIG1hc3Rlci4pCisgR0lUTE9HX1RPX0NIQU5HRUxPRz1naXRsb2ctdG8tY2hhbmdlbG9nCisgCisrcGtnY29uZmlnZGlyID0gJChsaWJkaXIpL3BrZ2NvbmZpZworK3BrZ2NvbmZpZ19EQVRBID0gbGliYXNzdWFuLnBjCisrCisgRVhUUkFfRElTVCA9IGF1dG9nZW4uc2ggYXV0b2dlbi5yYyBSRUFETUUuR0lUIFZFUlNJT04gICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICBDaGFuZ2VMb2ctMjAxMSBkb2MvQ2hhbmdlTG9nLTIwMTEgc3JjL0NoYW5nZUxvZy0yMDExIAlcCisgICAgICAgICAgICAgIHRlc3RzL0NoYW5nZUxvZy0yMDExIGNvbnRyaWIvQ2hhbmdlTG9nLTIwMTEgICAgIAkJXAorLSAgICAgICAgICAgICBidWlsZC1hdXgvZ2l0LWxvZy1mb290ZXIgYnVpbGQtYXV4L2dpdC1sb2ctZml4CisrICAgICAgICAgICAgIGJ1aWxkLWF1eC9naXQtbG9nLWZvb3RlciBidWlsZC1hdXgvZ2l0LWxvZy1maXggbGliYXNzdWFuLnBjLmluCisgCisgaWYgQlVJTERfRE9DCisgZG9jID0gZG9jCitJbmRleDogMi40LjQtcjAvbGliYXNzdWFuLTIuNC40L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC00ODUsNiArNDg1LDcgQEAgQUNfQ09ORklHX0ZJTEVTKFtkb2MvTWFrZWZpbGVdKQogIEFDX0NPTkZJR19GSUxFUyhbdGVzdHMvTWFrZWZpbGVdKQogIEFDX0NPTkZJR19GSUxFUyhbc3JjL2xpYmFzc3Vhbi1jb25maWddLCBbY2htb2QgK3ggc3JjL2xpYmFzc3Vhbi1jb25maWddKQogIEFDX0NPTkZJR19GSUxFUyhbc3JjL3ZlcnNpb25pbmZvLnJjXSkKLS0KICtBQ19DT05GSUdfRklMRVMoW2xpYmFzc3Vhbi5wY10pCisgCiAgQUNfT1VUUFVUCiAgCi0gZWNobyAiCi1JbmRleDogbGliYXNzdWFuLTIuMS4yL3NyYy9saWJhc3N1YW4ubTQKK0luZGV4OiBsaWJhc3N1YW4tMi40LjQvc3JjL2xpYmFzc3Vhbi5tNAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmFzc3Vhbi0yLjEuMi5vcmlnL3NyYy9saWJhc3N1YW4ubTQKLSsrKyBsaWJhc3N1YW4tMi4xLjIvc3JjL2xpYmFzc3Vhbi5tNAotQEAgLTE1LDE4ICsxNSw2IEBAIGRubCBSZXR1cm5zIG9rIHNldCB0byB5ZXMgb3Igbm8uCistLS0gYS9zcmMvbGliYXNzdWFuLm00CisrKysgYi9zcmMvbGliYXNzdWFuLm00CitAQCAtMTYsMTggKzE2LDYgQEAgZG5sIFJldHVybnMgb2sgc2V0IHRvIHllcyBvciBuby4KICBkbmwKICBBQ19ERUZVTihbX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCiAgWyBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCkBAIC04MCw3ICs4MSw3IEBACiAgCiAgICB0bXA9aWZlbHNlKFskMV0sICwxOjAuOS4yLCQxKQogICAgaWYgZWNobyAiJHRtcCIgfCBncmVwICc6JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgotQEAgLTM3LDUxICsyNSwxMiBAQCBBQ19ERUZVTihbX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCitAQCAtMzgsNTEgKzI2LDEyIEBAIEFDX0RFRlVOKFtfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OXSwKICAgICAgbWluX2xpYmFzc3Vhbl92ZXJzaW9uPSIkdG1wIgogICAgZmkKICAKQEAgLTEwNSw3ICsxMDYsNyBAQAogLQogLSAgICBpZiB0ZXN0ICIkbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KIC0gICAgICAgIG9rPXllcwotLSAgICBlbHNlIAorLSAgICBlbHNlCiAtICAgICAgICBpZiB0ZXN0ICIkbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KIC0gICAgICAgICAgICBpZiB0ZXN0ICIkbWlub3IiIC1ndCAiJHJlcV9taW5vciI7IHRoZW4KIC0gICAgICAgICAgICAgICBvaz15ZXMKQEAgLTEzNCw3ICsxMzUsNyBAQAogICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgogICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtMSUJBU1NVQU4gQVBJIHZlcnNpb25dKQogICAgICAgICAgaWYgdGVzdCAiJHJlcV9saWJhc3N1YW5fYXBpIiAtZXEgIiR0bXAiIDsgdGhlbgotQEAgLTk2LDcgKzQ1LDcgQEAgQUNfREVGVU4oW19BTV9QQVRIX0xJQkFTU1VBTl9DT01NT05dLAorQEAgLTk3LDcgKzQ2LDcgQEAgQUNfREVGVU4oW19BTV9QQVRIX0xJQkFTU1VBTl9DT01NT05dLAogIAogICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KICAgICAgaWYgdGVzdCB4IiRob3N0IiAhPSB4IDsgdGhlbgpAQCAtMTQzLDcgKzE0NCw3IEBACiAgICAgICAgaWYgdGVzdCB4IiRsaWJhc3N1YW5fY29uZmlnX2hvc3QiICE9IHhub25lIDsgdGhlbgogICAgICAgICAgaWYgdGVzdCB4IiRsaWJhc3N1YW5fY29uZmlnX2hvc3QiICE9IHgiJGhvc3QiIDsgdGhlbgogICAgQUNfTVNHX1dBUk4oW1sKLUBAIC0xMzcsMTIgKzg2LDggQEAgZG5sCitAQCAtMTM4LDEyICs4Nyw4IEBAIGRubAogIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkFTU1VBTl0sCiAgWyBfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OKCQxKQogICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi40LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNmMyNzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi40LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIklQQyBsaWJyYXJ5IHVzZWQgYnkgR251UEcgYW5kIEdQR01FIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9saWJhc3N1YW4vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWRvYyA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Fzc3Vhbi5jO2VuZGxpbmU9MjA7bWQ1PTBmNDY1NTQ0MTgzNDA1MDU1ZWMxNzk4NjlmYzViNWJhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9hc3N1YW4tZGVmcy5oO2VuZGxpbmU9MjA7bWQ1PTIwY2Q1NTUzNTI2MGNhMTc3OWVkYWU1YzdiODBiMjFlIgotCi1ERVBFTkRTID0gImxpYmdwZy1lcnJvciIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJhc3N1YW4vbGliYXNzdWFuLSR7UFZ9LnRhci5iejIgXAotCSAgIGZpbGU6Ly9saWJhc3N1YW4tYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGUwMWE3YzcyZDNlNWQxNTQ0ODEyMzA2NjhlNmViNWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjI4NDNhM2JkYjI1NmY1OWJlNDk4NDJhYmYyNGRhNzY3MDAzNTQyOTNhMDY2ZDgyYWRlODEzNGJiNWFhMmI3MSIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJhc3N1YW4tY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5Ci0Jcm0gLWYgJHtTfS9tNC8qLm00Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi41LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRkNWYxNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4xLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiSVBDIGxpYnJhcnkgdXNlZCBieSBHbnVQRyBhbmQgR1BHTUUiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmFzc3Vhbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKKworTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0tZG9jID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyN2RlZmUxZTk2YzJlMWVjZDRlMGM5YmU4OTY3OTQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvYXNzdWFuLmM7ZW5kbGluZT0yMDttZDU9YWI5MjE0M2E1YTJhZGFiZDA2ZDc5OTRkMTQ2N2VhNWNcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvYXNzdWFuLWRlZnMuaDtlbmRsaW5lPTIwO21kNT0xNWQ5NTBjODNlODI5NzhlMzViMzVlNzkwZDdlNGQzOSIKKworREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliYXNzdWFuL2xpYmFzc3Vhbi0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2xpYmFzc3Vhbi1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjQzNTRiN2FlMjk2ODk0ZjIzMmFkYTIyNmEwNjJkN2Q3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3Zjk2YzM3YjRmMmFhYzI4OWYwYmMxYmFjZmE4YmQ4YjRiMjA5YTQ4OGQzZDE1ZTIyMjljYjZjYzliMjY0NDkiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGliYXNzdWFuLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQorCXJtIC1mICR7U30vbTQvKi5tNAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzLzAwMDEtQWRkLWluaXRpYWwtbmlvczItYXJjaGl0ZWN0dXJlLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzLzAwMDEtQWRkLWluaXRpYWwtbmlvczItYXJjaGl0ZWN0dXJlLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwNTEwNzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wcy8wMDAxLUFkZC1pbml0aWFsLW5pb3MyLWFyY2hpdGVjdHVyZS1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotRnJvbSA0YjAwNWVlNTY4OTgzMDllOGFmYmE5YjNjNDhjZjk0ZjBmNWY3OGU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1EYXRlOiBUdWUsIDE1IE1hciAyMDE2IDEwOjA5OjI2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBpbml0aWFsIG5pb3MyIGFyY2hpdGVjdHVyZSBzdXBwb3J0Ci0KLSogc3JjL01ha2VmaWxlLmFtIChub2Jhc2VfcHJpdmF0ZV9IRUFERVJTKTogQWRkIG5pb3MyLmguCi0qIHNyYy9hdG9taWNfb3BzLmg6IEluY2x1ZGUgbmlvczIuaCBpZiBfX25pb3MyX18uCi0qIHNyYy9hdG9taWNfb3BzL3N5c2RlcHMvZ2NjL25pb3MyLmg6IE5ldyBmaWxlLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBodHRwczovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wcy5naXQgNGIwMDVlZTU2ODk4MzA5ZThhZmJhOWIzYzQ4Y2Y5NGYwZjVmNzhlNCBdCi0tLS0KLSBzcmMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIHNyYy9hdG9taWNfb3BzLmggICAgICAgICAgICAgICAgICAgfCAgMyArKysKLSBzcmMvYXRvbWljX29wcy9zeXNkZXBzL2djYy9uaW9zMi5oIHwgMTcgKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2F0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaAotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCBmYzA5YjI3Li5kNDYzNDI3IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC03OSw2ICs3OSw3IEBAIG5vYmFzZV9wcml2YXRlX0hFQURFUlMgPSBhdG9taWNfb3BzL2FvX3ZlcnNpb24uaCBcCi0gICAgICAgICAgIGF0b21pY19vcHMvc3lzZGVwcy9nY2MvaWE2NC5oIFwKLSAgICAgICAgICAgYXRvbWljX29wcy9zeXNkZXBzL2djYy9tNjhrLmggXAotICAgICAgICAgICBhdG9taWNfb3BzL3N5c2RlcHMvZ2NjL21pcHMuaCBcCi0rICAgICAgICAgIGF0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaCBcCi0gICAgICAgICAgIGF0b21pY19vcHMvc3lzZGVwcy9nY2MvcG93ZXJwYy5oIFwKLSAgICAgICAgICAgYXRvbWljX29wcy9zeXNkZXBzL2djYy9zMzkwLmggXAotICAgICAgICAgICBhdG9taWNfb3BzL3N5c2RlcHMvZ2NjL3NoLmggXAotZGlmZiAtLWdpdCBhL3NyYy9hdG9taWNfb3BzLmggYi9zcmMvYXRvbWljX29wcy5oCi1pbmRleCAzM2ZlMDBlLi5lYzAyYmE0IDEwMDY0NAotLS0tIGEvc3JjL2F0b21pY19vcHMuaAotKysrIGIvc3JjL2F0b21pY19vcHMuaAotQEAgLTI2Miw2ICsyNjIsOSBAQAotICMgaWYgZGVmaW5lZChfX202OGtfXykKLSAjICAgaW5jbHVkZSAiYXRvbWljX29wcy9zeXNkZXBzL2djYy9tNjhrLmgiCi0gIyBlbmRpZiAvKiBfX202OGtfXyAqLwotKyMgaWYgZGVmaW5lZChfX25pb3MyX18pCi0rIyAgIGluY2x1ZGUgImF0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaCIKLSsjIGVuZGlmIC8qIF9fbmlvczJfXyAqLwotICMgaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fUFBDX18pIFwKLSAgICAgIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX3BwYzY0X18pCi0gIyAgIGluY2x1ZGUgImF0b21pY19vcHMvc3lzZGVwcy9nY2MvcG93ZXJwYy5oIgotZGlmZiAtLWdpdCBhL3NyYy9hdG9taWNfb3BzL3N5c2RlcHMvZ2NjL25pb3MyLmggYi9zcmMvYXRvbWljX29wcy9zeXNkZXBzL2djYy9uaW9zMi5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjQwMmNiYgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2F0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaAotQEAgLTAsMCArMSwxNyBAQAotKy8qCi0rICogQ29weXJpZ2h0IChDKSAyMDE2IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotKyAqCi0rICogVEhJUyBNQVRFUklBTCBJUyBQUk9WSURFRCBBUyBJUywgV0lUSCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZIEVYUFJFU1NFRAotKyAqIE9SIElNUExJRUQuIEFOWSBVU0UgSVMgQVQgWU9VUiBPV04gUklTSy4KLSsgKgotKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gdXNlIG9yIGNvcHkgdGhpcyBwcm9ncmFtCi0rICogZm9yIGFueSBwdXJwb3NlLCBwcm92aWRlZCB0aGUgYWJvdmUgbm90aWNlcyBhcmUgcmV0YWluZWQgb24gYWxsIGNvcGllcy4KLSsgKiBQZXJtaXNzaW9uIHRvIG1vZGlmeSB0aGUgY29kZSBhbmQgdG8gZGlzdHJpYnV0ZSBtb2RpZmllZCBjb2RlIGlzIGdyYW50ZWQsCi0rICogcHJvdmlkZWQgdGhlIGFib3ZlIG5vdGljZXMgYXJlIHJldGFpbmVkLCBhbmQgYSBub3RpY2UgdGhhdCB0aGUgY29kZSB3YXMKLSsgKiBtb2RpZmllZCBpcyBpbmNsdWRlZCB3aXRoIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLgotKyAqLwotKwotKyNpbmNsdWRlICIuLi90ZXN0X2FuZF9zZXRfdF9pc19hb190LmgiCi0rI2luY2x1ZGUgImdlbmVyaWMuaCIKLSsKLSsjZGVmaW5lIEFPX1RfSVNfSU5UCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDYzZDg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgYXRvbWljIGludGVnZXIgb3BlcmF0aW9ucyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pdm1haS9saWJhdG9taWNfb3BzLyIKLVNFQ1RJT04gPSAib3B0aW9uYWwiCi1QUk9WSURFUyArPSAibGliYXRvbWljcy1vcHMiCi1MSUNFTlNFID0gIkdQTHYyICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0xJQ0VOU0lORy50eHQ7bWQ1PWUwMGRkNWM4YWMwM2ExNGM1YWU1MjI1YTQ1MjVmYTJkIFwKLQkJICAgIgotUFYgLj0gIitnaXQke1NSQ1BWfSIKLQotU1JDUkVWID0gIjczYzYwYzVlZjFlZDM3MDExMTU0OWVlNWFhYjZkNDAyMGJhNzBlZDQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wcyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YjQxNjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi4yLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhdG9taWMgaW50ZWdlciBvcGVyYXRpb25zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2l2bWFpL2xpYmF0b21pY19vcHMvIgorU0VDVElPTiA9ICJvcHRpb25hbCIKK1BST1ZJREVTICs9ICJsaWJhdG9taWNzLW9wcyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvTElDRU5TSU5HLnR4dDttZDU9ZTAwZGQ1YzhhYzAzYTE0YzVhZTUyMjVhNDUyNWZhMmQgXAorCQkgICAiCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorU1JDQlJBTkNIID89ICJyZWxlYXNlLTdfNiIKKworU1JDUkVWID0gIjVhZTRiNGFlZWEyYmFmMTM3NTJkMDdlMzAzOGM0N2Y3MGYwNmRjYWMiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wczticmFuY2g9JHtTUkNCUkFOQ0h9IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoCmluZGV4IGU5N2UzMGUuLjU0NjE3YjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtUmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAxLVJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2gKQEAgLTQsNiArNCw3IEBACiBTdWJqZWN0OiBbUEFUQ0ggMS8zXSBSZXBsYWNlIF9fQkVHSU5fREVDTFMgYW5kIF9fRU5EX0RFQ0xTCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CiAtLS0KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCkBAIC0xMywxNCArMTQsMTQgQEAKICBpbmNsdWRlL2JzZC9ubGlzdC5oICAgICAgICAgIHwgMTAgKysrKysrKystLQogIGluY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmggfCAxMCArKysrKysrKy0tCiAgaW5jbHVkZS9ic2Qvc3RkaW8uaCAgICAgICAgICB8IDEwICsrKysrKysrLS0KLSBpbmNsdWRlL2JzZC9zdGRsaWIuaCAgICAgICAgIHwgMTAgKysrKysrKystLQotIGluY2x1ZGUvYnNkL3N0cmluZy5oICAgICAgICAgfCAxMCArKysrKysrKy0tCisgaW5jbHVkZS9ic2Qvc3RkbGliLmggICAgICAgICB8IDEyICsrKysrKysrKy0tLQorIGluY2x1ZGUvYnNkL3N0cmluZy5oICAgICAgICAgfCAxMiArKysrKysrKystLS0KICBpbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmggICAgIHwgMTAgKysrKysrKystLQogIGluY2x1ZGUvYnNkL3VuaXN0ZC5oICAgICAgICAgfCAxMCArKysrKysrKy0tCiAgaW5jbHVkZS9ic2QvdmlzLmggICAgICAgICAgICB8IDEwICsrKysrKysrLS0KICBpbmNsdWRlL2JzZC93Y2hhci5oICAgICAgICAgIHwgMTAgKysrKysrKystLQogIHNyYy9oYXNoL3NoYTUxMi5oICAgICAgICAgICAgfCAxMCArKysrKysrKy0tCi0gMTMgZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQorIDEzIGZpbGVzIGNoYW5nZWQsIDEwNiBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL2Vyci5oIGIvaW5jbHVkZS9ic2QvZXJyLmgKIGluZGV4IDEyZmQwNTEuLjQzZGZjMzIgMTAwNjQ0CkBAIC01MCw3ICs1MSw3IEBACiAgCiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvbGlidXRpbC5oIGIvaW5jbHVkZS9ic2QvbGlidXRpbC5oCi1pbmRleCBlYmI2MTYwLi4yOGI5MTlkIDEwMDY0NAoraW5kZXggNDViM2IxNS4uOWM5MzZlNSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL2xpYnV0aWwuaAogKysrIGIvaW5jbHVkZS9ic2QvbGlidXRpbC5oCiBAQCAtNTMsNyArNTMsMTAgQEAgc3RydWN0IHBpZGZoIHsKQEAgLTc4LDcgKzc5LDcgQEAKICAvKiBodW1hbml6ZV9udW1iZXIoMykgKi8KICAjZGVmaW5lIEhOX0RFQ0lNQUwgICAgICAgICAgICAgIDB4MDEKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9tZDUuaCBiL2luY2x1ZGUvYnNkL21kNS5oCi1pbmRleCA5YTc1ZmFkLi4zNTMxZmQ2IDEwMDY0NAoraW5kZXggNWYzYWU0Ni4uNWQ4MGU1YyAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL21kNS5oCiArKysgYi9pbmNsdWRlL2JzZC9tZDUuaAogQEAgLTMwLDcgKzMwLDEwIEBAIHR5cGVkZWYgc3RydWN0IE1ENUNvbnRleHQgewpAQCAtMTAzLDE0ICsxMDQsMTQgQEAKICsjZW5kaWYKICsvKiBfX0VORF9ERUNMUyAqLwogIAotICNlbmRpZiAvKiBfTUQ1X0hfICovCisgI2VuZGlmIC8qIExJQkJTRF9NRDVfSCAqLwogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL25saXN0LmggYi9pbmNsdWRlL2JzZC9ubGlzdC5oCi1pbmRleCAyNzMwMjM3Li4wMzg5YWI3IDEwMDY0NAoraW5kZXggY2IyOTdlOC4uZTYzYmJiZCAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL25saXN0LmgKICsrKyBiL2luY2x1ZGUvYnNkL25saXN0LmgKLUBAIC0zMCw4ICszMCwxNCBAQAotICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAjaW5jbHVkZSA8YS5vdXQuaD4KK0BAIC04OCw4ICs4OCwxNCBAQCBzdHJ1Y3Qgbmxpc3QgeworIAorICNkZWZpbmUgTl9GT1JNQVQJIiUwOHgiCS8qIG5hbWVsaXN0IHZhbHVlIGZvcm1hdDsgWFhYICovCiAgCiAtX19CRUdJTl9ERUNMUwogKy8qIF9fQkVHSU5fREVDTFMgKi8KQEAgLTEyNiw3ICsxMjcsNyBAQAogIAogICNlbmRpZgogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmggYi9pbmNsdWRlL2JzZC9yZWFkcGFzc3BocmFzZS5oCi1pbmRleCBlMWRhY2MzLi43NmUwZDMzIDEwMDY0NAoraW5kZXggMTQ3NDRiOC4uZmE3MzM2MSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmgKICsrKyBiL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmgKIEBAIC0zNCw4ICszNCwxNCBAQApAQCAtMTQ1LDEzICsxNDYsMTMgQEAKICsjZW5kaWYKICsvKiBfX0VORF9ERUNMUyAqLwogIAotICNlbmRpZiAvKiAhX1JFQURQQVNTUEhSQVNFX0hfICovCisgI2VuZGlmIC8qICFMSUJCU0RfUkVBRFBBU1NQSFJBU0VfSCAqLwogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3N0ZGlvLmggYi9pbmNsdWRlL2JzZC9zdGRpby5oCi1pbmRleCA3Njk3NDI1Li5iNWIzZWZkIDEwMDY0NAoraW5kZXggNGI2OTk4My4uMTg2NDViNyAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3N0ZGlvLmgKICsrKyBiL2luY2x1ZGUvYnNkL3N0ZGlvLmgKLUBAIC00MSw3ICs0MSwxMCBAQAotICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK0BAIC00NSw3ICs0NSwxMCBAQAorICNlbmRpZgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAKIC1fX0JFR0lOX0RFQ0xTCkBAIC0xNjIsNyArMTYzLDcgQEAKICBjb25zdCBjaGFyICpmbXRjaGVjayhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiAgCiAgLyogWFhYOiBUaGUgZnVuY3Rpb24gcmVxdWlyZXMgY29vcGVyYXRpb24gZnJvbSB0aGUgc3lzdGVtIGxpYmMgdG8gc3RvcmUgdGhlCi1AQCAtNjksNyArNzIsMTAgQEAgRklMRSAqZnVub3Blbihjb25zdCB2b2lkICpjb29raWUsCitAQCAtNzMsNyArNzYsMTAgQEAgRklMRSAqZnVub3Blbihjb25zdCB2b2lkICpjb29raWUsCiAgI2RlZmluZSBmd29wZW4oY29va2llLCBmbikgZnVub3Blbihjb29raWUsIE5VTEwsIGZuLCBOVUxMLCBOVUxMKQogIAogIGludCBmcHVyZ2UoRklMRSAqZnApOwpAQCAtMTc1LDcgKzE3Niw3IEBACiAgI2VuZGlmCiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvc3RkbGliLmggYi9pbmNsdWRlL2JzZC9zdGRsaWIuaAotaW5kZXggMDYwNGNhZC4uYjlmMDUxNSAxMDA2NDQKK2luZGV4IGViYzk2MzguLmM0YjU0YjYgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2JzZC9zdGRsaWIuaAogKysrIGIvaW5jbHVkZS9ic2Qvc3RkbGliLmgKIEBAIC00Niw3ICs0NiwxMCBAQApAQCAtMTg5LDggKzE5MCwxNyBAQAogKyNlbmRpZgogIHVpbnQzMl90IGFyYzRyYW5kb20odm9pZCk7CiAgdm9pZCBhcmM0cmFuZG9tX3N0aXIodm9pZCk7Ci0gdm9pZCBhcmM0cmFuZG9tX2FkZHJhbmRvbSh1X2NoYXIgKmRhdCwgaW50IGRhdGxlbik7Ci1AQCAtNzMsNiArNzYsOSBAQCBsb25nIGxvbmcgc3RydG9udW0oY29uc3QgY2hhciAqbnB0ciwgbG9uZyBsb25nIG1pbnZhbCwgbG9uZyBsb25nIG1heHZhbCwKKyB2b2lkIGFyYzRyYW5kb21fYWRkcmFuZG9tKHVuc2lnbmVkIGNoYXIgKmRhdCwgaW50IGRhdGxlbik7CitAQCAtNjcsNyArNzAsNyBAQCBpbnQgc3JhZGl4c29ydChjb25zdCB1bnNpZ25lZCBjaGFyICoqYmFzZSwgaW50IG5tZW1iLAorICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRhYmxlLCB1bnNpZ25lZCBlbmRieXRlKTsKKyAKKyB2b2lkICpyZWFsbG9jZih2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKKy0jaWYgZGVmaW5lZChfR05VX1NPVVJDRSkgJiYgZGVmaW5lZChfX0dMSUJDX18pICYmICFfX0dMSUJDX1BSRVJFUSgyLCAyNikKKysjaWYgZGVmaW5lZChfR05VX1NPVVJDRSkgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgdm9pZCAqcmVhbGxvY2FycmF5KHZvaWQgKnB0ciwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSk7CisgI2VuZGlmCisgCitAQCAtNzUsNiArNzgsOSBAQCBsb25nIGxvbmcgc3RydG9udW0oY29uc3QgY2hhciAqbnB0ciwgbG9uZyBsb25nIG1pbnZhbCwgbG9uZyBsb25nIG1heHZhbCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVycnN0cik7CiAgCiAgY2hhciAqZ2V0YnNpemUoaW50ICpoZWFkZXJsZW5wLCBsb25nICpibG9ja3NpemVwKTsKQEAgLTIwMiwxMCArMjEyLDEwIEBACiAgCiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvc3RyaW5nLmggYi9pbmNsdWRlL2JzZC9zdHJpbmcuaAotaW5kZXggZWUyZjk1My4uZmJmOGM1NCAxMDA2NDQKK2luZGV4IDY3OThiZjYuLmZhMTE5M2YgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2JzZC9zdHJpbmcuaAogKysrIGIvaW5jbHVkZS9ic2Qvc3RyaW5nLmgKLUBAIC0zNiwxMyArMzYsMTkgQEAKK0BAIC0zNiwxNSArMzYsMjEgQEAKICAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogIApAQCAtMjE5LDcgKzIyOSwxMCBAQAogIGNoYXIgKnN0cm5zdHIoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpmaW5kLCBzaXplX3Qgc3RyX2xlbik7CiAgdm9pZCBzdHJtb2RlKG1vZGVfdCBtb2RlLCBjaGFyICpzdHIpOwogIAorLSNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIV9fR0xJQkNfUFJFUkVRKDIsIDI1KQorKyNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKICB2b2lkIGV4cGxpY2l0X2J6ZXJvKHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbik7CisgI2VuZGlmCiAtX19FTkRfREVDTFMKICsjaWZkZWYgX19jcGx1c3BsdXMKICt9CkBAIC0yMjgsNyArMjQxLDcgQEAKICAKICAjZW5kaWYKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmggYi9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmgKLWluZGV4IGUzYzQyZTkuLjQwZDBhNTIgMTAwNjQ0CitpbmRleCBmZjMwY2FjLi40NjAwZjZiIDEwMDY0NAogLS0tIGEvaW5jbHVkZS9ic2Qvc3RyaW5nbGlzdC5oCiArKysgYi9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmgKIEBAIC00MywxMiArNDMsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgX3N0cmluZ2xpc3QgewpAQCAtMjUxLDcgKzI2NCw3IEBACiArI2VuZGlmCiArLyogX19FTkRfREVDTFMgKi8KICAKLSAjZW5kaWYgLyogX1NUUklOR0xJU1RfSCAqLworICNlbmRpZiAvKiBMSUJCU0RfU1RSSU5HTElTVF9IICovCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvdW5pc3RkLmggYi9pbmNsdWRlL2JzZC91bmlzdGQuaAogaW5kZXggMWY5YzVmOC4uNWIyZjRjNyAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3VuaXN0ZC5oCkBAIC0yODAsNyArMjkzLDcgQEAKICAKICAjZW5kaWYKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC92aXMuaCBiL2luY2x1ZGUvYnNkL3Zpcy5oCi1pbmRleCA4MzVkMmQ2Li42M2M5NTFlIDEwMDY0NAoraW5kZXggOTcwZGZkZC4uNjIxZDNjNiAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3Zpcy5oCiArKysgYi9pbmNsdWRlL2JzZC92aXMuaAogQEAgLTc0LDcgKzc0LDEwIEBACkBAIC0zMDUsNyArMzE4LDcgQEAKICsjZW5kaWYKICsvKiBfX0VORF9ERUNMUyAqLwogIAotICNlbmRpZiAvKiAhX1ZJU19IXyAqLworICNlbmRpZiAvKiAhTElCQlNEX1ZJU19IICovCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvd2NoYXIuaCBiL2luY2x1ZGUvYnNkL3djaGFyLmgKIGluZGV4IDMzYTUwMGUuLmFhNzA3NDIgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2JzZC93Y2hhci5oCkBAIC0zNTksNSArMzcyLDUgQEAKICAKICAjZW5kaWYgLyogIV9TSEE1MTJfSF8gKi8KIC0tIAotMi4xMC4yCisxLjkuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODI1NDNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKLQotU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZyb20gQlNEIHN5c3RlbXMiCi1ERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdXNlZnVsIGZ1bmN0aW9ucyBjb21tb25seSBmb3VuZCBvbiBCU0Qgc3lzdGVtcywgXAotICAgICAgICAgICAgICAgYW5kIGxhY2tpbmcgb24gb3RoZXJzIGxpa2UgR05VIHN5c3RlbXMsIHRodXMgbWFraW5nIGl0IGVhc2llciB0byBwb3J0IFwKLSAgICAgICAgICAgICAgIHByb2plY3RzIHdpdGggc3Ryb25nIEJTRCBvcmlnaW5zLCB3aXRob3V0IG5lZWRpbmcgdG8gZW1iZWQgdGhlIHNhbWUgXAotICAgICAgICAgICAgICAgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluIG9uIGVhY2ggcHJvamVjdC4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgotIyBUaGVyZSBzZWVtcyB0byBiZSBtb3JlIGxpY2Vuc2VzIHVzZWQgaW4gdGhlIGNvZGUsIEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUsIGNvbXBsZXRlIGxpc3Q6Ci0jIE9FIEAgfi9wcm9qZWN0cy9saWJic2QgJCBncmVwIF5MaWNlbnNlOiBDT1BZSU5HICB8IHNvcnQKLSMgTGljZW5zZTogQlNELTItY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtTmV0QlNECi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1hdXRob3IKLSMgTGljZW5zZTogQlNELTItY2xhdXNlLXZlcmJhdGltCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKLSMgTGljZW5zZTogQlNELTMtY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1QZXRlci1XZW1tCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1SZWdlbnRzCi0jIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1DaHJpc3RvcGhlci1HLURlbWV0cmlvdQotIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtTmllbHMtUHJvdm9zCi0jIExpY2Vuc2U6IEJTRC01LWNsYXVzZS1QZXRlci1XZW1tCi0jIExpY2Vuc2U6IEJlZXJ3YXJlCi0jIExpY2Vuc2U6IEV4cGF0Ci0jIExpY2Vuc2U6IElTQwotIyBMaWNlbnNlOiBJU0MtT3JpZ2luYWwKLSMgTGljZW5zZTogcHVibGljLWRvbWFpbgotIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluLUNvbGluLVBsdW1iCi1MSUNFTlNFID0gIkJTRC00LUNsYXVzZSAmIElTQyAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDhmYzRlNjZiZTQ1MjY3MTVkYWIwOWM1ZmJhNWU5ZTgiCi1TRUNUSU9OID0gImxpYnMiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1zcmMtbGliYnNkLW92ZXJsYXkucGMuaW4tU2V0LUNmbGFncy10by11c2UtSS1pbnN0ZWFkLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCAgPSAiIFwKLSAgICBmaWxlOi8vMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0YWI3YmVjNjM5YWYxN2QwYWFjYjUwMjIyYjQ3OTExMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjdmYmY5ZGYxZjQ5YWYxMWY3ZjY4NjY5MTA1N2M4YzBhNzYxM2FlNWE4NzA1NzdiZWY5MTU1ZGUzOWY5Njg3IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTJhODVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjcuYmIKQEAgLTAsMCArMSw1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZyb20gQlNEIHN5c3RlbXMiCitERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdXNlZnVsIGZ1bmN0aW9ucyBjb21tb25seSBmb3VuZCBvbiBCU0Qgc3lzdGVtcywgXAorICAgICAgICAgICAgICAgYW5kIGxhY2tpbmcgb24gb3RoZXJzIGxpa2UgR05VIHN5c3RlbXMsIHRodXMgbWFraW5nIGl0IGVhc2llciB0byBwb3J0IFwKKyAgICAgICAgICAgICAgIHByb2plY3RzIHdpdGggc3Ryb25nIEJTRCBvcmlnaW5zLCB3aXRob3V0IG5lZWRpbmcgdG8gZW1iZWQgdGhlIHNhbWUgXAorICAgICAgICAgICAgICAgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluIG9uIGVhY2ggcHJvamVjdC4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgorIyBUaGVyZSBzZWVtcyB0byBiZSBtb3JlIGxpY2Vuc2VzIHVzZWQgaW4gdGhlIGNvZGUsIEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUsIGNvbXBsZXRlIGxpc3Q6CisjIE9FIEAgfi9wcm9qZWN0cy9saWJic2QgJCBncmVwIF5MaWNlbnNlOiBDT1BZSU5HICB8IHNvcnQKKyMgTGljZW5zZTogQlNELTItY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtTmV0QlNECisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1hdXRob3IKKyMgTGljZW5zZTogQlNELTItY2xhdXNlLXZlcmJhdGltCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKKyMgTGljZW5zZTogQlNELTMtY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1QZXRlci1XZW1tCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1SZWdlbnRzCisjIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1DaHJpc3RvcGhlci1HLURlbWV0cmlvdQorIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtTmllbHMtUHJvdm9zCisjIExpY2Vuc2U6IEJTRC01LWNsYXVzZS1QZXRlci1XZW1tCisjIExpY2Vuc2U6IEJlZXJ3YXJlCisjIExpY2Vuc2U6IEV4cGF0CisjIExpY2Vuc2U6IElTQworIyBMaWNlbnNlOiBJU0MtT3JpZ2luYWwKKyMgTGljZW5zZTogcHVibGljLWRvbWFpbgorIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluLUNvbGluLVBsdW1iCitMSUNFTlNFID0gIkJTRC00LUNsYXVzZSAmIElTQyAmIFBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDhmYzRlNjZiZTQ1MjY3MTVkYWIwOWM1ZmJhNWU5ZTgiCitTRUNUSU9OID0gImxpYnMiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1zcmMtbGliYnNkLW92ZXJsYXkucGMuaW4tU2V0LUNmbGFncy10by11c2UtSS1pbnN0ZWFkLnBhdGNoIFwKKyIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCAgPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOWU2OTgwZmJmZTQ0Zjk0ZmQ5MmI4OWEzM2NjZTY3ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTQ4ZjEwZTVhZjVhMDhiMWUyMjg4OWNlODQzMTViMWViZTQxNTA1YjAxNWM5NTk2YmFkMDNmZDEzYTEyYjMxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMzQxOTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgID0gIkNoZWNrIC0gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBjb2RlIgotSE9NRVBBR0UgPSAiaHR0cDovL2NoZWNrLnNvdXJjZWZvcmdlLm5ldC8iCi1TRUNUSU9OID0gImRldmVsIgotCi1MSUNFTlNFICA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2NoZWNrL2NoZWNrLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTNjNWU1Yzc3ZDA5MGUxMDNhMTdmM2VkN2ZkN2Q4YjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjVmNTA3NjZhYTZmOGZlNWEyZGY3NTI2NjZjYTAxYTk1MGFkZDQ1MDc5YWEwNjQxNmI4Mzc2NWIxY2Y3MTA1MiIKLQotUyA9ICIke1dPUktESVJ9L2NoZWNrLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdGV4aW5mbwotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9BV0tfUEFUSD0ke2JpbmRpcn0vZ2F3ayIKLQotUlJFUExBQ0VTXyR7UE59ID0gImNoZWNrICg8PSAwLjkuNSkiCi1SREVQRU5EU18ke1BOfSArPSAiZ2F3ayIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2NDZkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xMi4wLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgID0gIkNoZWNrIC0gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBjb2RlIgorSE9NRVBBR0UgPSAiaHR0cDovL2NoZWNrLnNvdXJjZWZvcmdlLm5ldC8iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFICA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS9jaGVjay9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9jaGVjay0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMzFiMTdjNjA3NTgyMGE0MzQxMTk1OTI5NDExODZmNzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDY0MjAxMDk4YmVlMDBlOTBmNWM0YmRmYTk0YTVkM2VhZDhkNjQxZjkwMjViNTYwYTI3NzU1YTgzYjgyNDIzNCIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliY2hlY2svY2hlY2svcmVsZWFzZXMvIgorCitTID0gIiR7V09SS0RJUn0vY2hlY2stJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB0ZXhpbmZvCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX0FXS19QQVRIPSR7YmluZGlyfS9nYXdrIgorCitSUkVQTEFDRVNfJHtQTn0gPSAiY2hlY2sgKDw9IDAuOS41KSIKK1JERVBFTkRTXyR7UE59ICs9ICJnYXdrIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jb18wLjYuMTIuYmIKaW5kZXggYjBhZjc1OS4uZDg2ZGRkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiCkBAIC05LDEyICs5LDEyIEBACiAKIFNFQ1RJT04gPSAieDExL3V0aWxzIgogREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ4bWwyIHpsaWIiCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIEVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtQnN5bWJvbGljPWF1dG8iCiAKIEJJTkNPTkZJRyA9ICIke2JpbmRpcn0vY3JvY28tMC42LWNvbmZpZyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBndGstZG9jIGJpbmNvbmZpZy1kaXNhYmxlZAoraW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBiaW5jb25maWctZGlzYWJsZWQKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYmMwOTg0ZmNlMDc4YmEyY2UyOWY5NTAwYzZiOWRkY2UiCiBTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZGM0YjU1NDZjOWZiNDI4MGE1MDE3ZTI3MDdmYmQ0ODM5MDM0ZWQxYWJhNWI3ZDQzNzIyMTJmMzRmODRmODYwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzQwZGEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiV3JhcHBlciBsaWJyYXJ5IGZvciBldmRldiBkZXZpY2VzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJldmRldi8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlULVgiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NWFhZTBkMzhmZWVhNmZkYTk3Y2EzODFjYjkxMzJlYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJldmRldi9saWJldmRldi5oO2VuZGxpbmU9MjE7bWQ1PTdmZjRmMGI1MTEzMjUyYzJmMWE4MjhlMGJiYWQ5OGQxIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2xpYmV2ZGV2LyR7QlB9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRmMWNmYWVlOGQ3NWVhM2ZiYmZlYjk5YTk4NzMwOTUyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImExZTU5ZTM3YTJmMGQzOTdmZmQ3ZTgzYjczYWYwZTYzOGRiODNiOGRkMDg5MDJlZjBmNjUxYTIxY2MxZGQ0MjIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMzgwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjguYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJXcmFwcGVyIGxpYnJhcnkgZm9yIGV2ZGV2IGRldmljZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmV2ZGV2LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQtWCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1YWFlMGQzOGZlZWE2ZmRhOTdjYTM4MWNiOTEzMmViIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmV2ZGV2L2xpYmV2ZGV2Lmg7ZW5kbGluZT0yMTttZDU9N2ZmNGYwYjUxMTMyNTJjMmYxYTgyOGUwYmJhZDk4ZDEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvbGliZXZkZXYvJHtCUH0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzI1YThjMzkzOWU0YWQ1OWE1ZTllNWUxZTM1NDgzMmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA4M2Q4MWU0NjYwOWRhOGJhODBjYjgyNmMwMmQ5MDgwNzY0YTZkZWMzM2M4MjY3Y2NiN2UxNTg4MzNkNGM2ZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvMDAwMS10ZXN0LWZpeC0zMmJpdC1saW51eC1yZWdyZXNzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50LzAwMDEtdGVzdC1maXgtMzJiaXQtbGludXgtcmVncmVzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmQwODIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50LzAwMDEtdGVzdC1maXgtMzJiaXQtbGludXgtcmVncmVzcy5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDY5YTM4MTNjNTEzYzg0ZTAyMjEyMjUwYzNkNWI4YTAyZWNlZmE2OTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxNSBKYW4gMjAxOCAwODowMDozMyArMDAwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0OiBmaXggMzJiaXQgbGludXggcmVncmVzcworCitUaGlzIHBhdGNoIGNvbWVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xpYmV2ZW50L2xpYmV2ZW50LmdpdCwKK3RoZSBjb21taXQgaXMgNjNjNGJmNzhkNmFmM2M2ZmY0NmQyZThlNGI1M2RkOWY1NzdhOWNhOQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgIHwgMSArCisgdGVzdC9yZWdyZXNzX3V0aWwuYyB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA3NTI4ZDM3Li5lNjRjYjFmIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02NjMsNiArNjYzLDcgQEAgQUNfQ0hFQ0tfU0laRU9GKHNob3J0KQorIEFDX0NIRUNLX1NJWkVPRihzaXplX3QpCisgQUNfQ0hFQ0tfU0laRU9GKHZvaWQgKikKKyBBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCisrQUNfQ0hFQ0tfU0laRU9GKHRpbWVfdCkKKyAKKyBBQ19DSEVDS19UWVBFUyhbc3RydWN0IGluNl9hZGRyLCBzdHJ1Y3Qgc29ja2FkZHJfaW42LCBzYV9mYW1pbHlfdCwgc3RydWN0IGFkZHJpbmZvLCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZV0sICwgLAorIFsjZGVmaW5lIF9HTlVfU09VUkNFCitkaWZmIC0tZ2l0IGEvdGVzdC9yZWdyZXNzX3V0aWwuYyBiL3Rlc3QvcmVncmVzc191dGlsLmMKK2luZGV4IGVmNmExNDguLjBjN2VhZmIgMTAwNjQ0CistLS0gYS90ZXN0L3JlZ3Jlc3NfdXRpbC5jCisrKysgYi90ZXN0L3JlZ3Jlc3NfdXRpbC5jCitAQCAtMTQxMiwxMCArMTQxMiwxMiBAQCBzdGF0aWMgc3RydWN0IGRhdGVfcmZjMTEyM19jYXNlIHsKKyAJeyAgMTI4OTQzMzYwMCwgIlRodSwgMTEgTm92IDIwMTAgMDA6MDA6MDAgR01UIn0sCisgCXsgIDEzMjM2NDgwMDAsICJNb24sIDEyIERlYyAyMDExIDAwOjAwOjAwIEdNVCJ9LAorICNpZm5kZWYgX1dJTjMyCisrI2lmIEVWRU5UX19TSVpFT0ZfVElNRV9UID4gNAorIAkvKiogSW4gd2luMzIgY2FzZSB3ZSBoYXZlIG1heCAgICIyMzo1OTo1OSBKYW51YXJ5IDE4LCAyMDM4LCBVVEMiIGZvciB0aW1lMzIgKi8KKyAJeyAgNDI5NDk2NzI5NiwgIlN1biwgMDcgRmViIDIxMDYgMDY6Mjg6MTYgR01UIn0gLyogMl4zMiAqLywKKyAJLyoqIEluIHdpbjMyIGNhc2Ugd2UgaGF2ZSBtYXggIjIzOjU5OjU5LCBEZWNlbWJlciAzMSwgMzAwMCwgVVRDIiBmb3IgdGltZTY0ICovCisgCXsyNTM0MDIzMDA3OTksICJGcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVCJ9IC8qIGxvbmcgbG9uZyBmdXR1cmUgbm8gb25lIGNhbiBpbWFnaW5lICovLAorKyNlbmRpZiAvKiB0aW1lX3QgIT0gMzJiaXQgKi8KKyAJeyAgMTQ1NjcwNDAwMCwgIk1vbiwgMjkgRmViIDIwMTYgMDA6MDA6MDAgR01UIn0gLyogbGVhcCB5ZWFyICovLAorICNlbmRpZgorIAl7ICAxNDM1NzA4ODAwLCAiV2VkLCAwMSBKdWwgMjAxNSAwMDowMDowMCBHTVQifSAvKiBsZWFwIHNlY29uZCAqLywKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuOC5iYgppbmRleCAxMjcwZDYyLi44M2NlNDY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS44LmJiCkBAIC05LDYgKzksNyBAQAogU1JDX1VSSSA9ICIgXAogICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJldmVudC9saWJldmVudC9yZWxlYXNlcy9kb3dubG9hZC9yZWxlYXNlLSR7UFZ9LXN0YWJsZS8ke0JQfS1zdGFibGUudGFyLmd6IFwKICAgICBmaWxlOi8vTWFrZWZpbGUtbWlzc2luZy10ZXN0LWRpci5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtdGVzdC1maXgtMzJiaXQtbGludXgtcmVncmVzcy5wYXRjaCBcCiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpL25vdC13aW4zMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpL25vdC13aW4zMi5wYXRjaAppbmRleCAxZTkwMTI1Li44MGM0MGE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS9ub3Qtd2luMzIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvbm90LXdpbjMyLnBhdGNoCkBAIC0xMSwxMiArMTEsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAotLS0tIGEvY29uZmlndXJlLmFjfgkyMDE0LTExLTEyIDExOjU2OjUxLjAwMDAwMDAwMCArMDAwMAotKysrIGIvY29uZmlndXJlLmFjCTIwMTYtMDItMDQgMTQ6MDI6NTMuNzY1NzEwNTMyICswMDAwCi1AQCAtNTkzLDUgKzU5Myw1IEBACitJbmRleDogbGliZmZpLTMuMi4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmZmaS0zLjIuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmZmaS0zLjIuMS9jb25maWd1cmUuYWMKK0BAIC01OTIsNyArNTkyLDcgQEAgQUNfQVJHX0VOQUJMRShwdXJpZnktc2FmZXR5LAorIAogICMgVGhlc2UgdmFyaWFibGVzIGFyZSBvbmx5IGV2ZXIgdXNlZCB3aGVuIHdlIGNyb3NzLWJ1aWxkIHRvIFg4Nl9XSU4zMi4KICAjIEFuZCB3ZSBvbmx5IHN1cHBvcnQgdGhpcyB3aXRoIEdDQywgc28uLi4KIC1pZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KICtpZiBmYWxzZTsgdGhlbgogICAgaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKLSAgICAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgorICAgICB0b29sZXhlY2Rpcj0iJHtleGVjX3ByZWZpeH0iLyckKHRhcmdldF9hbGlhcyknCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0tZXh0cmFfMS4yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0tZXh0cmFfMS4yLjUuYmIKaW5kZXggMDEzNDU3Mi4uYzBmZDgzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLWV4dHJhXzEuMi41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbS1leHRyYV8xLjIuNS5iYgpAQCAtNSw3ICs1LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9mbS1leHRyYS5oO2JlZ2lubGluZT04O2VuZGxpbmU9MjE7bWQ1PWVmMWY4NGRhNjRiM2MwMWNjYTQ0NzIxMmY3ZWY2MDA3IgogCiBTRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUiCitERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUiCiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3BjbWFuZm0vbGliZm0tJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbmxzLm00LVRha2UtaXQtZnJvbS1nZXR0ZXh0LTAuMTUucGF0Y2ggXApAQCAtMTgsNiArMTgsNiBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWV4dHJhLW9ubHkgLS13aXRoLWd0az1ubyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQKIAogZG9fY29uZmlndXJlW2RpcnNdID0rICIke1N9L200IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0vMDAwMS1FbmNsb3NlLXRleHQtaW4tcHJvZ3JhbWxpc3RpbmctaW50by1DREFUQS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGU1MzI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2gKQEAgLTAsMCArMSw3NiBAQAorRnJvbSBlZDRjYThjMGIxN2ZmNWQzYzc2OGI5MjQwOWMxNzg3ZTNmM2YxODQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcml5IEdyeXRzZW5rbyA8YW5kcmVqQHJlcC5raWV2LnVhPgorRGF0ZTogU3VuLCAyNiBOb3YgMjAxNyAyMjozMDoxNSArMDIwMAorU3ViamVjdDogW1BBVENIIDIvMl0gRW5jbG9zZSB0ZXh0IGluIDxwcm9ncmFtbGlzdGluZz4gaW50byA8IVtDREFUQVsKKworTmV3IGd0ay1kb2MgZmFpbHMgb24gdGFnLWxpa2UgZGF0YSBpbiBpdC4KK1NlZSBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1ODUKK1RoYXQgaXMgZGVmaW5pdGVseSBidWcgb2YgZ3RrLWRvYyBidXQgbGV0IHdvcmthcm91bmQgaXQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmx4ZGUub3JnL2dpdHdlYi8/cD1seGRlL2xpYmZtLmdpdDthPWNvbW1pdDtoPWIwNzJlZTA0MDA0MzJkNzJmZGY4NmJhOWZlZDc0YTdlMGVjMTFlYzFdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNlL2ZtLW1vZHVsZS5jIHwgMTIgKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2ZtLW1vZHVsZS5jIGIvc3JjL2Jhc2UvZm0tbW9kdWxlLmMKK2luZGV4IGQzNjRiMmQuLjJlOGM5NzggMTAwNjQ0CistLS0gYS9zcmMvYmFzZS9mbS1tb2R1bGUuYworKysrIGIvc3JjL2Jhc2UvZm0tbW9kdWxlLmMKK0BAIC00NCw3ICs0NCw3IEBACisgICogb2YgdGhhdCB0eXBlIHNob3VsZCBpbmNsdWRlOgorICAqIDxleGFtcGxlIGlkPSJleGFtcGxlLWZtLWR1bW15LWgiPgorICAqIDx0aXRsZT5TYW1wbGUgb2YgZm0tZHVtbXkuaDwvdGl0bGU+CistICogPHByb2dyYW1saXN0aW5nPgorKyAqIDxwcm9ncmFtbGlzdGluZz48IVtDREFUQVsKKyAgKiAjaW5jbHVkZSA8bGliZm0vZm0uaD4KKyAgKgorICAqICNkZWZpbmUgRk1fTU9EVUxFX2R1bW15X1ZFUlNJT04gMQorQEAgLTU0LDcgKzU0LDcgQEAKKyAgKiB9IEZtRHVtbXlJbml0OworICAqCisgICogZXh0ZXJuIEZtRHVtbXlJbml0IGZtX21vZHVsZV9pbml0X2R1bW15OworLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+CisrICogXV0+PC9wcm9ncmFtbGlzdGluZz4KKyAgKiA8L2V4YW1wbGU+CisgICogVGhlIEZNX01PRFVMRV9kdW1teV9WRVJTSU9OIGlzIGEgbnVtYmVyIHdoaWNoIHNob3VsZCBiZSBpbmNyZWFzZWQgZWFjaAorICAqIHRpbWUgc29tZXRoaW5nIGluIEZtRHVtbXlJbml0IHN0cnVjdHVyZSBpcyBjaGFuZ2VkLiBUaGUgRm1EdW1teUluaXQKK0BAIC02NSw3ICs2NSw3IEBACisgICogbW9kdWxlIGhhbmRsaW5nIGluIHlvdXIgY29kZToKKyAgKiA8ZXhhbXBsZSBpZD0iZXhhbXBsZS1mbS1kdW1teS13aWRnZXQtYyI+CisgICogPHRpdGxlPlNhbXBsZSBvZiBmbS1kdW1teS13aWRnZXQuYzwvdGl0bGU+CistICogPHByb2dyYW1saXN0aW5nPgorKyAqIDxwcm9ncmFtbGlzdGluZz48IVtDREFUQVsKKyAgKiAjaW5jbHVkZSAiZm0tZHVtbXkuaCIKKyAgKgorICAqIEZNX01PRFVMRV9ERUZJTkVfVFlQRShkdW1teSwgRm1EdW1teUluaXQsIDEpCitAQCAtODcsNyArODcsNyBAQAorICAqICAgICAgICAgcmVzdWx0ID0gbW9kdWxlLT5nZXRfbmV3KCJ0ZXN0IHNhbXBsZSIpOworICAqICAgICByZXR1cm4gcmVzdWx0OworICAqIH0KKy0gKiA8L3Byb2dyYW1saXN0aW5nPgorKyAqIF1dPjwvcHJvZ3JhbWxpc3Rpbmc+CisgICogPC9leGFtcGxlPgorICAqCisgICogVGhpcmQgdGhpbmcgYXBwbGljYXRpb24gc2hvdWxkIGRvIGlzIHRvIHJlZ2lzdGVyIG1vZHVsZSB0eXBlIG9uIHRoZQorQEAgLTEwOCw3ICsxMDgsNyBAQAorICAqIGludGVyZmFjZSAoc2VlIHRoZSBmbS1kdW1teS5oIGhlYWRlciBleGFtcGxlIGFib3ZlKToKKyAgKiA8ZXhhbXBsZSBpZD0iZXhhbXBsZS1mbS1kdW1teS10ZXN0LWMiPgorICAqIDx0aXRsZT5TYW1wbGUgb2YgbW9kdWxlIGR1bW15L3Rlc3Q8L3RpdGxlPgorLSAqIDxwcm9ncmFtbGlzdGluZz4KKysgKiA8cHJvZ3JhbWxpc3Rpbmc+PCFbQ0RBVEFbCisgICogI2luY2x1ZGUgImZtLWR1bW15LmgiCisgICoKKyAgKiBGTV9ERUZJTkVfTU9EVUxFKGR1bW15LCB0ZXN0KQorQEAgLTEyMSw3ICsxMjEsNyBAQAorICAqIEZtRHVtbXlJbml0IGZtX21vZHVsZV9pbml0X2R1bW15ID0geworICAqICAgICBmbV9kdW1teV90ZXN0X2dldF9uZXc7CisgICogfTsKKy0gKiA8L3Byb2dyYW1saXN0aW5nPgorKyAqIF1dPjwvcHJvZ3JhbWxpc3Rpbmc+CisgICogPC9leGFtcGxlPgorICAqIFRoZSBmbV9tb2R1bGVfaW5pdF9kdW1teSBzaG91bGQgYmUgZXhhY3RseSB0aGUgc2FtZSBzdHJ1Y3R1cmUgdGhhdCBpcworICAqIGRlZmluZWQgaW4gdGhlIGhlYWRlciBmaWxlIGFib3ZlLgorLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiCmluZGV4IDFkZGRkZmQuLjU5NjQwODMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjIuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4yLjUuYmIKQEAgLTksMjIgKzksMzYgQEAKIAogCiBTRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJnbGliLTIuMCBwYW5nbyBndGsrMyBtZW51LWNhY2hlIGludGx0b29sLW5hdGl2ZSBsaWJleGlmIGxpYmZtLWV4dHJhIGdldHRleHQtbmF0aXZlIgorREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgcGFuZ28gZ3RrKzMgbWVudS1jYWNoZSBpbnRsdG9vbC1uYXRpdmUgbGliZXhpZiBsaWJmbS1leHRyYSIKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcGNtYW5mbS9saWJmbS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZWN0bHktY2hlY2stdGhlLXN0YW1wLWZpbGUtdGhhdC1pbmRpY2F0ZXMtaWYtd2UtLnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZWN0bHktY2hlY2stdGhlLXN0YW1wLWZpbGUtdGhhdC1pbmRpY2F0ZXMtaWYtd2UtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJhMWJhOWFlNWU5MjBmMzhiNjQ3ZGQ1MTFlZGQ2YzgwNyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzA2YmIxMDIwY2Y1ZjJkNmY1YTkyMjZmNjkyY2UxOTg1OTQ3MTM0ZGNmMmJkZTY0Mjc4YmQwNDIwNzc5YjVhIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCiBBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKIAogRVhUUkFfT0VDT05GID0gIi0td2l0aC1ndGs9MyIKIAogZG9fY29uZmlndXJlW2RpcnNdID0rICIke1N9L200IgogCitQQUNLQUdFUyA9KyAibGliZm0tZ3RrIgogUEFDS0FHRVMgKz0gIiR7UE59LW1pbWUiCitGSUxFU19saWJmbS1ndGsgPSAiIFwKKyAgICAke2xpYmRpcn0vbGliZm0tZ3RrKnNvLiogXAorICAgICR7bGliZGlyfS9saWJmbS9tb2R1bGVzL2d0ayogXAorICAgICR7YmluZGlyfS9saWJmbS1wcmVmLWFwcHMgXAorICAgICR7YmluZGlyfS9seHNob3J0Y3V0IFwKKyAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9saWJmbS1wcmVmLWFwcHMuZGVza3RvcCBcCisgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvbHhzaG9ydGN1dC5kZXNrdG9wIFwKKyAgICAke2RhdGFkaXJ9L2xpYmZtL2ltYWdlcy9mb2xkZXIucG5nIFwKKyAgICAke2RhdGFkaXJ9L2xpYmZtL2ltYWdlcy91bmtub3duLnBuZyBcCisgICAgJHtkYXRhZGlyfS9saWJmbS91aS8qLnVpIFwKKyIKIEZJTEVTXyR7UE59LW1pbWUgPSAiJHtkYXRhZGlyfS9taW1lLyIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA1LWVjYy1BZGQtaW5wdXQtdmFsaWRhdGlvbi1mb3ItWDI1NTE5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA1LWVjYy1BZGQtaW5wdXQtdmFsaWRhdGlvbi1mb3ItWDI1NTE5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmZkZDc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNS1lY2MtQWRkLWlucHV0LXZhbGlkYXRpb24tZm9yLVgyNTUxOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi1Gcm9tIGVmNTcwZTNkMjc3M2MxMjEyNmU3ZDNmY2RjNGRiOWVmODBhNWUyMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLURhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMTg6MTM6MjggKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZWNjOiBBZGQgaW5wdXQgdmFsaWRhdGlvbiBmb3IgWDI1NTE5LgotCi0qIGNpcGhlci9lY2MuYyAoZWNjX2RlY3J5cHRfcmF3KTogQWRkIGlucHV0IHZhbGlkYXRpb24uCi0qIG1waS9lYy5jIChlY19wX2luaXQpOiBVc2Ugc2NyYXRjaCBidWZmZXIgZm9yIGJhZCBwb2ludHMuCi0oX2djcnlfbXBpX2VjX2JhZF9wb2ludCk6IE5ldy4KLQotLS0KLQotRm9sbG93aW5nIGlzIHRoZSBwYXBlciBkZXNjcmliaW5nIHRoZSBhdHRhY2s6Ci0KLSAgICBNYXkgdGhlIEZvdXJ0aCBCZSBXaXRoIFlvdTogQSBNaWNyb2FyY2hpdGVjdHVyYWwgU2lkZSBDaGFubmVsIEF0dGFjawotICAgIG9uIFJlYWwtV29ybGQgQXBwbGljYXRpb25zIG9mIEN1cnZlMjU1MTkKLSAgICBieSBEYW5pZWwgR2Vua2luLCBMdWtlIFZhbGVudGEsIGFuZCBZdXZhbCBZYXJvbQotCi1JbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgd2UgZG8gb3V0cHV0IGNoZWNraW5nIGFuZCBpdCByZXN1bHRzIGFuCi1lcnJvciBmb3IgdGhvc2UgYmFkIHBvaW50cy4gIEhvd2V2ZXIsIHdoZW4gYXR0YWNrZWQsIHRoZSBjb21wdXRhdGlvbgotd2lsbCBkb25lIHdpdGggbGVhayBvZiBwcml2YXRlIGtleSwgZXZlbiBpdCB3aWxsIHJlc3VsdHMgZXJyb3JzLiAgVG8KLW1pdGlnYXRlIGxlYWssIHdlIGFkZGVkIGlucHV0IHZhbGlkYXRpb24uCi0KLU5vdGUgdGhhdCB3ZSBvbmx5IGxpc3QgYmFkIHBvaW50cyB3aXRoIE1TQj0wLiAgQnkgWDI1NTE5LCBNU0IgaXMKLWFsd2F5cyBjbGVhcmVkLgotCi1JbiBmdXR1cmUsIHdlIHNob3VsZCBpbXBsZW1lbnQgY29uc3RhbnQtdGltZSBmaWVsZCBjb21wdXRhdGlvbi4gIFRoZW4sCi10aGlzIGlucHV0IHZhbGlkYXRpb24gY291bGQgYmUgcmVtb3ZlZCwgaWYgcGVyZm9ybWFuY2UgaXMgaW1wb3J0YW50Ci1hbmQgd2UgYXJlIHN1cmUgZm9yIG5vIGxlYWsuCi0KLUNWRS1pZDogQ1ZFLTIwMTctMDM3OQotU2lnbmVkLW9mZi1ieTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMDM3OQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2lwaGVyL2VjYy5jIHwgMTcgKysrKysrKysrKysrKysrLS0KLSBtcGkvZWMuYyAgICAgfCA1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KLSBzcmMvbXBpLmggICAgfCAgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL2VjYy5jIGIvY2lwaGVyL2VjYy5jCi1pbmRleCBlMjViZjA5Li40ZTNlNWIxIDEwMDY0NAotLS0tIGEvY2lwaGVyL2VjYy5jCi0rKysgYi9jaXBoZXIvZWNjLmMKLUBAIC0xNjI4LDkgKzE2MjgsMjIgQEAgZWNjX2RlY3J5cHRfcmF3IChnY3J5X3NleHBfdCAqcl9wbGFpbiwgZ2NyeV9zZXhwX3Qgc19kYXRhLCBnY3J5X3NleHBfdCBrZXlwYXJtcykKLSAgIGlmIChEQkdfQ0lQSEVSKQotICAgICBsb2dfcHJpbnRwbnQgKCJlY2NfZGVjcnlwdCAgICBrRyIsICZrRywgTlVMTCk7Ci0gCi0tICBpZiAoIShmbGFncyAmIFBVQktFWV9GTEFHX0RKQl9UV0VBSykKLSsgIGlmICgoZmxhZ3MgJiBQVUJLRVlfRkxBR19ESkJfVFdFQUspKQotKyAgICB7Ci0gICAgICAgLyogRm9yIFgyNTUxOSwgYnkgaXRzIGRlZmluaXRpb24sIHZhbGlkYXRpb24gc2hvdWxkIG5vdCBiZSBkb25lLiAgKi8KLS0gICAgICAmJiAhX2djcnlfbXBpX2VjX2N1cnZlX3BvaW50ICgma0csIGVjKSkKLSsgICAgICAvKiAoSW5zdGVhZCwgd2UgZG8gb3V0cHV0IGNoZWNrLikKLSsgICAgICAgKgotKyAgICAgICAqIEhvd2V2ZXIsIHRvIG1pdGlnYXRlIHNlY3JldCBrZXkgbGVhayBmcm9tIG91ciBpbXBsZW1lbnRhdGlvbiwKLSsgICAgICAgKiB3ZSBhbHNvIGRvIGlucHV0IHZhbGlkYXRpb24gaGVyZS4gIEZvciBjb25zdGFudC10aW1lCi0rICAgICAgICogaW1wbGVtZW50YXRpb24sIHdlIGNhbiByZW1vdmUgdGhpcyBpbnB1dCB2YWxpZGF0aW9uLgotKyAgICAgICAqLwotKyAgICAgIGlmIChfZ2NyeV9tcGlfZWNfYmFkX3BvaW50ICgma0csIGVjKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgcmMgPSBHUEdfRVJSX0lOVl9EQVRBOwotKyAgICAgICAgICBnb3RvIGxlYXZlOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmICghX2djcnlfbXBpX2VjX2N1cnZlX3BvaW50ICgma0csIGVjKSkKLSAgICAgewotICAgICAgIHJjID0gR1BHX0VSUl9JTlZfREFUQTsKLSAgICAgICBnb3RvIGxlYXZlOwotZGlmZiAtLWdpdCBhL21waS9lYy5jIGIvbXBpL2VjLmMKLWluZGV4IGEwZjczNTcuLjRjMTY2MDMgMTAwNjQ0Ci0tLS0gYS9tcGkvZWMuYwotKysrIGIvbXBpL2VjLmMKLUBAIC0zOTYsNiArMzk2LDI5IEBAIGVjX2dldF90d29faW52X3AgKG1waV9lY190IGVjKQotIH0KLSAKLSAKLStzdGF0aWMgY29uc3QgY2hhciAqY3VydmUyNTUxOV9iYWRfcG9pbnRzW10gPSB7Ci0rICAiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwKLSsgICIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEiLAotKyAgIjB4MDBiODQ5NWYxNjA1NjI4NmZkYjEzMjljZWI4ZDA5ZGE2YWM0OWZmMWZhZTM1NjE2YWViODQxM2I3YzdhZWJlMCIsCi0rICAiMHg1NzExOWZkMGRkNGUyMmQ4ODY4ZTFjNThjNDVjNDQwNDViZWY4MzljNTViMWQwYjEyNDhjNTBhM2JjOTU5YzVmIiwKLSsgICIweDdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWMiLAotKyAgIjB4N2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlZCIsCi0rICAiMHg3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVlIiwKLSsgIE5VTEwKLSt9OwotKwotK3N0YXRpYyBnY3J5X21waV90Ci0rc2NhbnZhbCAoY29uc3QgY2hhciAqc3RyaW5nKQotK3sKLSsgIGdwZ19lcnJfY29kZV90IHJjOwotKyAgZ2NyeV9tcGlfdCB2YWw7Ci0rCi0rICByYyA9IF9nY3J5X21waV9zY2FuICgmdmFsLCBHQ1JZTVBJX0ZNVF9IRVgsIHN0cmluZywgMCwgTlVMTCk7Ci0rICBpZiAocmMpCi0rICAgIGxvZ19mYXRhbCAoInNjYW5uaW5nIEVDQyBwYXJhbWV0ZXIgZmFpbGVkOiAlc1xuIiwgZ3BnX3N0cmVycm9yIChyYykpOwotKyAgcmV0dXJuIHZhbDsKLSt9Ci0rCi0gCi0gLyogVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplZCBhIGNvbnRleHQgZm9yIGVsbGlwdGljIGN1cnZlIGJhc2VkIG9uIHRoZQotICAgIGZpZWxkIEdGKHApLiAgUCBpcyB0aGUgcHJpbWUgc3BlY2lmeWluZyB0aGlzIGZpZWxkLCBBIGlzIHRoZSBmaXJzdAotQEAgLTQzNCw5ICs0NTcsMTcgQEAgZWNfcF9pbml0IChtcGlfZWNfdCBjdHgsIGVudW0gZ2NyeV9tcGlfZWNfbW9kZWxzIG1vZGVsLAotIAotICAgX2djcnlfbXBpX2VjX2dldF9yZXNldCAoY3R4KTsKLSAKLS0gIC8qIEFsbG9jYXRlIHNjcmF0Y2ggdmFyaWFibGVzLiAgKi8KLS0gIGZvciAoaT0wOyBpPCBESU0oY3R4LT50LnNjcmF0Y2gpOyBpKyspCi0tICAgIGN0eC0+dC5zY3JhdGNoW2ldID0gbXBpX2FsbG9jX2xpa2UgKGN0eC0+cCk7Ci0rICBpZiAobW9kZWwgPT0gTVBJX0VDX01PTlRHT01FUlkpCi0rICAgIHsKLSsgICAgICBmb3IgKGk9MDsgaTwgRElNKGN0eC0+dC5zY3JhdGNoKSAmJiBjdXJ2ZTI1NTE5X2JhZF9wb2ludHNbaV07IGkrKykKLSsgICAgICAgIGN0eC0+dC5zY3JhdGNoW2ldID0gc2NhbnZhbCAoY3VydmUyNTUxOV9iYWRfcG9pbnRzW2ldKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogQWxsb2NhdGUgc2NyYXRjaCB2YXJpYWJsZXMuICAqLwotKyAgICAgIGZvciAoaT0wOyBpPCBESU0oY3R4LT50LnNjcmF0Y2gpOyBpKyspCi0rICAgICAgICBjdHgtPnQuc2NyYXRjaFtpXSA9IG1waV9hbGxvY19saWtlIChjdHgtPnApOwotKyAgICB9Ci0gCi0gICAvKiBQcmVwYXJlIGZvciBmYXN0IHJlZHVjdGlvbi4gICovCi0gICAvKiBGSVhNRTogbmVlZCBhIHRlc3QgZm9yIE5JU1QgdmFsdWVzLiAgSG93ZXZlciBpdCBkb2VzIG5vdCBnYWluIHVzCi1AQCAtMTU3MiwzICsxNjAzLDE3IEBAIF9nY3J5X21waV9lY19jdXJ2ZV9wb2ludCAoZ2NyeV9tcGlfcG9pbnRfdCBwb2ludCwgbXBpX2VjX3QgY3R4KQotIAotICAgcmV0dXJuIHJlczsKLSB9Ci0rCi0rCi0raW50Ci0rX2djcnlfbXBpX2VjX2JhZF9wb2ludCAoZ2NyeV9tcGlfcG9pbnRfdCBwb2ludCwgbXBpX2VjX3QgY3R4KQotK3sKLSsgIGludCBpOwotKyAgZ2NyeV9tcGlfdCB4X2JhZDsKLSsKLSsgIGZvciAoaSA9IDA7ICh4X2JhZCA9IGN0eC0+dC5zY3JhdGNoW2ldKTsgaSsrKQotKyAgICBpZiAoIW1waV9jbXAgKHBvaW50LT54LCB4X2JhZCkpCi0rICAgICAgcmV0dXJuIDE7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3JjL21waS5oIGIvc3JjL21waS5oCi1pbmRleCBiNTM4NWI1Li5hZWJhN2Y4IDEwMDY0NAotLS0tIGEvc3JjL21waS5oCi0rKysgYi9zcmMvbXBpLmgKLUBAIC0yOTYsNiArMjk2LDcgQEAgdm9pZCBfZ2NyeV9tcGlfZWNfbXVsX3BvaW50IChtcGlfcG9pbnRfdCByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY3J5X21waV90IHNjYWxhciwgbXBpX3BvaW50X3QgcG9pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGlfZWNfdCBjdHgpOwotIGludCAgX2djcnlfbXBpX2VjX2N1cnZlX3BvaW50IChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBjdHgpOwotK2ludCBfZ2NyeV9tcGlfZWNfYmFkX3BvaW50IChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBjdHgpOwotIAotIGdjcnlfbXBpX3QgX2djcnlfbXBpX2VjX2VjMm9zIChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBlY3R4KTsKLSAKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDYtRml4LWJ1aWxkaW5nLUFBcmNoMzItQ0UtaW1wbGVtZW50YXRpb25zLXdoZW4tdGFyZ2V0LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWI5ZmQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotRnJvbSA0YTdhYTMwYWU5ZjNjZTc5OGRkODg2YzJmMmQ0MTY0YzQzMDI3NzQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS2l2aWxpbm5hIDxqdXNzaS5raXZpbGlubmFAaWtpLmZpPgotRGF0ZTogU2F0LCAyOSBKdWwgMjAxNyAxNDozNDoyMyArMDMwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGRpbmcgQUFyY2gzMiBDRSBpbXBsZW1lbnRhdGlvbnMgd2hlbiB0YXJnZXQgaXMgQVJNdjYKLSBhcmNoCi0KLSogY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TOiBTZWxlY3QgQVJNdjggYXJjaGl0ZWN1cmUuCi0qIGNpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlM6IERpdHRvLgotKiBjaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlM6IERpdHRvLgotKiBjaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUzogRGl0dG8uCi0qIGNvbmZpZ3VyZS5hYyAoZ2NyeV9jdl9nY2NfaW5saW5lX2FzbV9hYXJjaDMyX2NyeXB0byk6IERpdHRvLgotLS0KLQotUmFzcGJpYW4gZGlzdHJpYnV0aW9uIGRlZmF1bHRzIHRvIEFSTXY2IGFyY2hpdGVjdHVyZSB0aHVzICdyYml0JwotaW5zdHJ1Y3Rpb24gaXMgbm90IGF2YWlsYWJsZSB3aXRoIGRlZmF1bHQgY29tcGlsZXIgZmxhZ3MuIFBhdGNoCi1hZGRzIGV4cGxpY2l0IGFyY2hpdGVjdHVyZSBzZWxlY3Rpb24gZm9yIEFSTXY4IHRvIGVuYWJsZSAncmJpdCcKLXVzYWdlIHdpdGggQVJNdjgvQUFyY2gzMi1DRSBhc3NlbWJseSBpbXBsZW1lbnRhdGlvbnMgb2YgU0hBLAotR0hBU0ggYW5kIEFFUy4KLQotUmVwb3J0ZWQtYnk6IENocmlzIEhvcnJ5IDx6ZXJiZXlAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogSnVzc2kgS2l2aWxpbm5hIDxqdXNzaS5raXZpbGlubmFAaWtpLmZpPgotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0tLS0KLSBjaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMgfCAxICsKLSBjaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TICAgfCAxICsKLSBjaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMgICAgICAgfCAxICsKLSBjaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUyAgICAgfCAxICsKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgfCAxICsKLSA1IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TCi1pbmRleCBiNjFhNzg3MS4uMWRlNjZhMTYgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMKLSsrKyBiL2NpcGhlci9jaXBoZXItZ2NtLWFybXY4LWFhcmNoMzItY2UuUwotQEAgLTI0LDYgKzI0LDcgQEAKLSAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKQotIAotIC5zeW50YXggdW5pZmllZAotKy5hcmNoIGFybXY4LWEKLSAuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4Ci0gLmFybQotIAotZGlmZiAtLWdpdCBhL2NpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlMgYi9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCi1pbmRleCBmMzc1ZjY3My4uNWM4ZmEzYzAgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCi0rKysgYi9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCi1AQCAtMjQsNiArMjQsNyBAQAotICAgICBkZWZpbmVkKEhBVkVfR0NDX0lOTElORV9BU01fQUFSQ0gzMl9DUllQVE8pCi0gCi0gLnN5bnRheCB1bmlmaWVkCi0rLmFyY2ggYXJtdjgtYQotIC5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjgKLSAuYXJtCi0gCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TCi1pbmRleCBiMGJjNWZmZS4uYmYyYjIzM2IgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMKLSsrKyBiL2NpcGhlci9zaGExLWFybXY4LWFhcmNoMzItY2UuUwotQEAgLTI0LDYgKzI0LDcgQEAKLSAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKSAmJiBkZWZpbmVkKFVTRV9TSEExKQotIAotIC5zeW50YXggdW5pZmllZAotKy5hcmNoIGFybXY4LWEKLSAuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4Ci0gLmFybQotIAotZGlmZiAtLWdpdCBhL2NpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL3NoYTI1Ni1hcm12OC1hYXJjaDMyLWNlLlMKLWluZGV4IDIwNDFhMjM3Li4yYjE3YWIxYiAxMDA2NDQKLS0tLSBhL2NpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TCi0rKysgYi9jaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUwotQEAgLTI0LDYgKzI0LDcgQEAKLSAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKSAmJiBkZWZpbmVkKFVTRV9TSEEyNTYpCi0gCi0gLnN5bnRheCB1bmlmaWVkCi0rLmFyY2ggYXJtdjgtYQotIC5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjgKLSAuYXJtCi0gCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyN2ZhYTdmNC4uNjZlN2NkNjcgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE2MTksNiArMTYxOSw3IEBAIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIEdDQyBpbmxpbmUgYXNzZW1ibGVyIHN1cHBvcnRzIEFBcmNoMzIgQ3J5cHRvIEV4dGVuc2lvbiBpCi0gICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRSgKLSAgICAgICAgICAgW1tfX2FzbV9fKAotICAgICAgICAgICAgICAgICAiLnN5bnRheCB1bmlmaWVkXG5cdCIKLSsgICAgICAgICAgICAgICAgIi5hcmNoIGFybXY4LWFcblx0IgotICAgICAgICAgICAgICAgICAiLmFybVxuXHQiCi0gICAgICAgICAgICAgICAgICIuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4XG5cdCIKLSAKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyOTgyZjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaGljIGxpYnJhcnkgYmFzZWQgb24gdGhlIGNvZGUgZnJvbSBHbnVQRyIKLUhPTUVQQUdFID0gImh0dHA6Ly9kaXJlY3RvcnkuZnNmLm9yZy9wcm9qZWN0L2xpYmdjcnlwdC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLVNFQ1RJT04gPSAibGlicyIKLQotIyBoZWxwZXIgcHJvZ3JhbSBnY3J5cHRybmQgYW5kIGdldHJhbmRvbSBhcmUgdW5kZXIgR1BMLCByZXN0IExHUEwKLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgR1BMdjMrIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWRldiA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNFTlNFX2R1bXBzZXhwLWRldiA9ICJHUEx2MysiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiIKLQotREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ2NyeXB0L2xpYmdjcnlwdC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYW5kLXVzZS1wa2ctY29uZmlnLWZvci1saWJnY3J5cHQtaW5zdGVhZC1vZi1jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtYmVuY2gtc2xvcGUuYy13b3JrYXJvdW5kLUlDRS1mYWlsdXJlLW9uLW1pcHMtdy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC10ZXN0cy1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtZWNjLUFkZC1pbnB1dC12YWxpZGF0aW9uLWZvci1YMjU1MTkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxMTBjZTQzNTJmOWVhNmY1NjBiZGM2YzU2NDRhZTkzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmU0NzBiN2YyZDNhNzAzZTg3NDdmMDVhOGMxOWQ5ZTEwZTI2ZWJmMmQ1ZjNkNzFmZjc1YTQwZjUwNGUxMmVlIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYmdjcnlwdC1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWFzbSIKLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJjYXBhYmlsaXRpZXMiCi1QQUNLQUdFQ09ORklHW2NhcGFiaWxpdGllc10gPSAiLS13aXRoLWNhcGFiaWxpdGllcywtLXdpdGhvdXQtY2FwYWJpbGl0aWVzLGxpYmNhcCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGlzIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aGUgb25lIGluIGFjbG9jYWwtY29weQotCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00Ci19Ci0KLSMgbGliZ2NyeXB0LnBjIGlzIGFkZGVkIGxvY2FsbHkgYW5kIHRodXMgaW5zdGFsbGVkIGhlcmUKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnCi0JaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vc3JjL2xpYmdjcnlwdC5wYyAke0R9LyR7bGliZGlyfS9wa2djb25maWcvCi19Ci0KLVBBQ0tBR0VTID0rICJkdW1wc2V4cC1kZXYiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2htYWMyNTYiCi1GSUxFU19kdW1wc2V4cC1kZXYgKz0gIiR7YmluZGlyfS9kdW1wc2V4cCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzZlNjUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjIuYmIKQEAgLTAsMCArMSw1MyBAQAorU1VNTUFSWSA9ICJHZW5lcmFsIHB1cnBvc2UgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IGJhc2VkIG9uIHRoZSBjb2RlIGZyb20gR251UEciCitIT01FUEFHRSA9ICJodHRwOi8vZGlyZWN0b3J5LmZzZi5vcmcvcHJvamVjdC9saWJnY3J5cHQvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCitTRUNUSU9OID0gImxpYnMiCisKKyMgaGVscGVyIHByb2dyYW0gZ2NyeXB0cm5kIGFuZCBnZXRyYW5kb20gYXJlIHVuZGVyIEdQTCwgcmVzdCBMR1BMCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyAmIEdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS1kZXYgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDRU5TRV9kdW1wc2V4cC1kZXYgPSAiR1BMdjMrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYiCisKK0RFUEVORFMgPSAibGliZ3BnLWVycm9yIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdjcnlwdC9saWJnY3J5cHQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hbmQtdXNlLXBrZy1jb25maWctZm9yLWxpYmdjcnlwdC1pbnN0ZWFkLW9mLWNvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1iZW5jaC1zbG9wZS5jLXdvcmthcm91bmQtSUNFLWZhaWx1cmUtb24tbWlwcy13LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXRlc3RzLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImNmYjBiNWM3OWVhYjA3Njg2YjY4OTgxNjBhNDA3MTM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4MDY0Y2FlNzU1ODE0NGIxM2VmMGViODcwOTM0MTIzODBlZmExNmM0ZWUzMGFkMTJlY2I1NDg4NmE1MjRjMDciCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGliZ2NyeXB0LWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYXNtIgorRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MRkxBR1M9Jy0tdGFnPUNDJyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImNhcGFiaWxpdGllcyIKK1BBQ0tBR0VDT05GSUdbY2FwYWJpbGl0aWVzXSA9ICItLXdpdGgtY2FwYWJpbGl0aWVzLC0td2l0aG91dC1jYXBhYmlsaXRpZXMsbGliY2FwIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBFbHNlIHRoaXMgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZSBvbmUgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKK30KKworIyBsaWJnY3J5cHQucGMgaXMgYWRkZWQgbG9jYWxseSBhbmQgdGh1cyBpbnN0YWxsZWQgaGVyZQorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvbGliZ2NyeXB0LnBjICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZy8KK30KKworUEFDS0FHRVMgPSsgImR1bXBzZXhwLWRldiIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaG1hYzI1NiIKK0ZJTEVTX2R1bXBzZXhwLWRldiArPSAiJHtiaW5kaXJ9L2R1bXBzZXhwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4yNy5iYgppbmRleCBiMmUyZDUwLi5iNzRmMDc5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIKQEAgLTIxLDcgKzIxLDcgQEAKIAogQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGctZXJyb3ItY29uZmlnIgogCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIGdldHRleHQKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgZ2V0dGV4dCBtdWx0aWxpYl9oZWFkZXIKIENQUEZMQUdTICs9ICItUCIKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKIAlUQVJHRVRfRklMRT1saW51eC1nbnUKQEAgLTUzLDYgKzUzLDcgQEAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogCSMgd2UgZG9uJ3QgaGF2ZSBjb21tb24gbGlzcCBpbiBPRQogCXJtIC1yZiAiJHtEfSR7ZGF0YWRpcn0vY29tbW9uLWxpc3AvIgorCW9lX211bHRpbGliX2hlYWRlciBncGctZXJyb3IuaCBncGdydC5oCiB9CiAKIEZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2dwZy1lcnJvciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWwvUmVtb3ZlLWNtYWtlLWNoZWNrLWZvci1QZXJsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbC9SZW1vdmUtY21ha2UtY2hlY2stZm9yLVBlcmwucGF0Y2gKaW5kZXggYzVjMGNiMC4uYjUwZjUwZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbC9SZW1vdmUtY21ha2UtY2hlY2stZm9yLVBlcmwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbC9SZW1vdmUtY21ha2UtY2hlY2stZm9yLVBlcmwucGF0Y2gKQEAgLTE0LDExICsxNCwxMSBAQAogIENNYWtlTGlzdHMudHh0IHwgMyArLS0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBkNWFhZDgwLi41Y2M5ODYzIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtOTEsOCArOTEsNyBAQCBpZihTSEFSRURfT05MWSkKK0luZGV4OiBsaWJpY2FsLTIuMC4wL0NNYWtlTGlzdHMudHh0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliaWNhbC0yLjAuMC5vcmlnL0NNYWtlTGlzdHMudHh0CisrKysgbGliaWNhbC0yLjAuMC9DTWFrZUxpc3RzLnR4dAorQEAgLTExNiw4ICsxMTYsNyBAQCBpZihTSEFSRURfT05MWSkKICAgIHNldChMSUJSQVJZX1RZUEUgU0hBUkVEKQogIGVuZGlmKCkKICAKQEAgLTI2LDggKzI2LDUgQEAKIC1maW5kX3BhY2thZ2UoUGVybCBSRVFVSVJFRCkKICtzZXQoUEVSTF9FWEVDVVRBQkxFIHBlcmwpCiAgCi0gIyBNU1ZDIHNwZWNpZmljIGRlZmluaXRpb25zCi0gaWYoV0lOMzIpCi0tLSAKLTIuMS40Ci0KKyAjIEVuc3VyZSBmaW5kaW5nIDY0Yml0IGxpYnMgd2hlbiB1c2luZyA2NC1iaXQgY29tcGlsZXJzCisgaWYoQ01BS0VfQ0xfNjQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzIuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8yLjAuMC5iYgppbmRleCBkNGZlODY4Li5kY2MyMWNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzIuMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMi4wLjAuYmIKQEAgLTE3LDUgKzE3LDMgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL3JlbGVhc2VzIgogCiBpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYS9rc2JhLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJrc2JhL2xpYmtzYmEva3NiYS1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKaW5kZXggZDI4ZGZkOS4uNWFmZTZkZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYS9rc2JhLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlia3NiYS9saWJrc2JhL2tzYmEtYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoCkBAIC02LDEzICs2LDEzIEBACiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIAotSW5kZXg6IGxpYmtzYmEtMS4zLjAvTWFrZWZpbGUuYW0KK0luZGV4OiBsaWJrc2JhLTEuMy41L01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlia3NiYS0xLjMuMC5vcmlnL01ha2VmaWxlLmFtCTIwMTQtMDUtMTMgMjE6Mzk6MjIuMzkwMzg1NjQ2ICswMDAwCi0rKysgbGlia3NiYS0xLjMuMC9NYWtlZmlsZS5hbQkyMDE0LTA1LTEzIDIxOjM5OjIyLjQ2MjM4NTY0NiArMDAwMAotQEAgLTIxLDYgKzIxLDkgQEAKKy0tLSBsaWJrc2JhLTEuMy41Lm9yaWcvTWFrZWZpbGUuYW0KKysrKyBsaWJrc2JhLTEuMy41L01ha2VmaWxlLmFtCitAQCAtMjAsNiArMjAsOSBAQAorIAogIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00IC1JIGdsL200Ci0gQVVUT01BS0VfT1BUSU9OUyA9IGRpc3QtYnppcDIgbm8tZGlzdC1nemlwCiAgCiArcGtnY29uZmlnZGlyID0gJHtsaWJkaXJ9L3BrZ2NvbmZpZwogK3BrZ2NvbmZpZ19EQVRBID0ga3NiYS5wYwpAQCAtMjAsMTEgKzIwLDExIEBACiAgIyAoQSBzdWl0YWJsZSBnaXRsb2ctdG8tY2hhbmdlbG9nIHNjcmlwdCBjYW4gYmUgZm91bmQgaW4gR251UEcgbWFzdGVyLikKICBHSVRMT0dfVE9fQ0hBTkdFTE9HPWdpdGxvZy10by1jaGFuZ2Vsb2cKICAKLUluZGV4OiBsaWJrc2JhLTEuMy4wL2NvbmZpZ3VyZS5hYworSW5kZXg6IGxpYmtzYmEtMS4zLjUvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlia3NiYS0xLjMuMC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA1LTEzIDIxOjM5OjIyLjM5MDM4NTY0NiArMDAwMAotKysrIGxpYmtzYmEtMS4zLjAvY29uZmlndXJlLmFjCTIwMTQtMDUtMTMgMjE6Mzk6MjIuNDYyMzg1NjQ2ICswMDAwCi1AQCAtNDAwLDYgKzQwMCw3IEBACistLS0gbGlia3NiYS0xLjMuNS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmtzYmEtMS4zLjUvY29uZmlndXJlLmFjCitAQCAtNDE0LDYgKzQxNCw3IEBAIGdsL01ha2VmaWxlCiAgc3JjL01ha2VmaWxlCiAgc3JjL2tzYmEtY29uZmlnCiAgc3JjL3ZlcnNpb25pbmZvLnJjCkBAIC0zMiwxMCArMzIsMTAgQEAKICB0ZXN0cy9NYWtlZmlsZQogIGRvYy9NYWtlZmlsZQogIF0pCi1JbmRleDogbGlia3NiYS0xLjMuMC9rc2JhLnBjLmluCitJbmRleDogbGlia3NiYS0xLjMuNS9rc2JhLnBjLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgbGlia3NiYS0xLjMuMC9rc2JhLnBjLmluCTIwMTQtMDUtMTMgMjE6Mzk6MjIuNDYyMzg1NjQ2ICswMDAwCistLS0gL2Rldi9udWxsCisrKysgbGlia3NiYS0xLjMuNS9rc2JhLnBjLmluCiBAQCAtMCwwICsxLDE3IEBACiArcHJlZml4PUBwcmVmaXhACiArZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QApAQCAtNTQsMTEgKzU0LDExIEBACiArTGlicy5wcml2YXRlOiAtTCR7bGliZGlyfSAtbGdwZy1lcnJvcgogK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CiArCi1JbmRleDogbGlia3NiYS0xLjMuMC9zcmMva3NiYS5tNAorSW5kZXg6IGxpYmtzYmEtMS4zLjUvc3JjL2tzYmEubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJrc2JhLTEuMy4wLm9yaWcvc3JjL2tzYmEubTQJMjAxNC0wNS0xMyAyMTozOToyMi4zOTAzODU2NDYgKzAwMDAKLSsrKyBsaWJrc2JhLTEuMy4wL3NyYy9rc2JhLm00CTIwMTQtMDUtMTMgMjE6NDk6MDMuNjUwMzgyNjk2ICswMDAwCi1AQCAtMjIsMTggKzIyLDcgQEAKKy0tLSBsaWJrc2JhLTEuMy41Lm9yaWcvc3JjL2tzYmEubTQKKysrKyBsaWJrc2JhLTEuMy41L3NyYy9rc2JhLm00CitAQCAtMjIsMTggKzIyLDcgQEAgZG5sIHdpdGggYSBjaGFuZ2VkIEFQSS4KICBkbmwKICBBQ19ERUZVTihbQU1fUEFUSF9LU0JBXSwKICBbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQpAQCAtNzcsNyArNzcsNyBAQAogICAgdG1wPWlmZWxzZShbJDFdLCAsMToxLjAuMCwkMSkKICAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KICAgICAgIHJlcV9rc2JhX2FwaT1gZWNobyAiJHRtcCIgICAgIHwgc2VkICdzL1woLipcKTpcKC4qXCkvXDEvJ2AKLUBAIC00Myw0OCArMzIsMTMgQEAKK0BAIC00Myw0OCArMzIsMTMgQEAgQUNfREVGVU4oW0FNX1BBVEhfS1NCQV0sCiAgICAgICBtaW5fa3NiYV92ZXJzaW9uPSIkdG1wIgogICAgZmkKICAKQEAgLTEyOSw3ICsxMjksNyBAQAogICAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCiAgICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW0tTQkEgQVBJIHZlcnNpb25dKQogICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9rc2JhX2FwaSIgLWVxICIkdG1wIiA7IHRoZW4KLUBAIC05NywxMCArNTEsOCBAQAorQEAgLTk3LDEwICs1MSw4IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0tTQkFdLAogICAgICAgZmkKICAgIGZpCiAgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgIGlmIHRlc3QgeCIkbGlia3NiYV9jb25maWdfaG9zdCIgIT0geG5vbmUgOyB0aGVuCiAgICAgICAgaWYgdGVzdCB4IiRsaWJrc2JhX2NvbmZpZ19ob3N0IiAhPSB4IiRob3N0IiA7IHRoZW4KICAgIEFDX01TR19XQVJOKFtbCi1AQCAtMTE0LDggKzY2LDYgQEAKK0BAIC0xMTQsOCArNjYsNiBAQCBBQ19ERUZVTihbQU1fUEFUSF9LU0JBXSwKICAgICAgICBmaQogICAgICBmaQogICAgZWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYV8xLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJrc2JhL2xpYmtzYmFfMS4zLjUuYmIKaW5kZXggMzZiNjY3MC4uYTdlYTUzZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYV8xLjMuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlia3NiYS9saWJrc2JhXzEuMy41LmJiCkBAIC0yNCwzICsyNCw1IEBACiAJIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKIAlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAogfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJtcGMvbGlibXBjXzEuMC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ODEzMjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1yZXF1aXJlIGxpYm1wYy5pbmMKLQotREVQRU5EUyA9ICJnbXAgbXBmciIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9tcGMvbXBjLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ2YTFkNWY4ZGRlYTNhYmQyY2MzZTk4ZjU4MzUyZDI2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYxN2RlY2M2ZWEwOTg4OWZiMDhlZGUzMzA5MTdhMDBiMTY4MDliOGRiODhjMjljMzFiZmJiNDljYmY4OGVjYzMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3Lm11bHRpcHJlY2lzaW9uLm9yZy9pbmRleC5waHA/cHJvZz1tcGMmcGFnZT1kb3dubG9hZCIKLQotUyA9ICIke1dPUktESVJ9L21wYy0ke1BWfSIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibXBjL2xpYm1wY18xLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDI1ZDM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4xLjAuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBsaWJtcGMuaW5jCisKK0RFUEVORFMgPSAiZ21wIG1wZnIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvbXBjL21wYy0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MTI1NDA0ZTQxZTQ4MmVjNjgyODJhMmU2ODdmNmM3MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTg1YzUzODE0M2MxMjA4ZGNiMWFjNDJjZWRhZDZmZjUyZTI2N2I0N2U1Zjk3MDE4M2EzZTc1MTI1YjQzYzJlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5tdWx0aXByZWNpc2lvbi5vcmcvbXBjL2Rvd25sb2FkLmh0bWwiCisKK1MgPSAiJHtXT1JLRElSfS9tcGMtJHtQVn0iCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC8wMDAxLVBBVENILWZpeC1saWJubC0zLjQuMC1tdXNsLWNvbXBpbGUtcHJvYmxlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC8wMDAxLVBBVENILWZpeC1saWJubC0zLjQuMC1tdXNsLWNvbXBpbGUtcHJvYmxlbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjBhMjk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sLzAwMDEtUEFUQ0gtZml4LWxpYm5sLTMuNC4wLW11c2wtY29tcGlsZS1wcm9ibGVtLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGxpYm5sLTMuNC4wIG11c2wgY29tcGlsZSBwcm9ibGVtICAKK0F2b2lkIGluNl9hZGRyIHJlZGVmaW5pdGlvbgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oIHwgMSAtCisgaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lwdjYuaCAgICAgIHwgMSAtCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oIGIvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oCitpbmRleCBmMjQwNTBiLi44Zjc0OTBjIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oCisrKysgYi9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaWZfYnJpZGdlLmgKK0BAIC0xNSw3ICsxNSw2IEBACisgCisgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CistI2luY2x1ZGUgPGxpbnV4L2luNi5oPgorIAorICNkZWZpbmUgU1lTRlNfQlJJREdFX0FUVFIJImJyaWRnZSIKKyAjZGVmaW5lIFNZU0ZTX0JSSURHRV9GREIJImJyZm9yd2FyZCIKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaXB2Ni5oIGIvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lwdjYuaAoraW5kZXggZTA1ZTY4NC4uZjE2MzQ5ZCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pcHY2LmgKKysrKyBiL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pcHY2LmgKK0BAIC0yLDcgKzIsNiBAQAorICNkZWZpbmUgX0lQVjZfSAorIAorICNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CistI2luY2x1ZGUgPGxpbnV4L2luNi5oPgorIAorIC8qIFRoZSBsYXRlc3QgZHJhZnRzIGRlY2xhcmVkIGluY3JlYXNlIGluIG1pbmltYWwgbXR1IHVwIHRvIDEyODAuICovCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC9maXgtcGt0bG9jX3N5bnRheF9oLXJhY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmwvZml4LXBrdGxvY19zeW50YXhfaC1yYWNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWFhMGJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC9maXgtcGt0bG9jX3N5bnRheF9oLXJhY2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLWxpYm5sIGhhcyBwcm9ncmVzc2VkIHRvIDAuMy4yIGFuZCB0aGVyZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW55Ci0ibWFrZSAtaiIgaXNzdWVzIHdpdGggdGhpcyBidWlsZCBhZnRlciBteSBsaW1pdGVkIHRlc3Rpbmcgb24gdGhhdAotbmV3ZXIgdmVyc2lvbiBzbyB3ZSBjYW4gYXNzdW1lIHRoaXMgaXNzdWUgaXMgZml4ZWQgdXBzdHJlYW0KLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxtYXJ0aW4uamFuc2FAZ21haWwuY29tPgotCi1JbmRleDogbGlibmwtMy4yLjI1L2xpYi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYm5sLTMuMi4yNS5vcmlnL2xpYi9NYWtlZmlsZS5hbQotKysrIGxpYm5sLTMuMi4yNS9saWIvTWFrZWZpbGUuYW0KLUBAIC00Niw5ICs0NiwxMiBAQCBDTEVBTkZJTEVTID0gXAotIAotICMgSGFjayB0byBhdm9pZCB1c2luZyB5bHdyYXAuIEl0IGRvZXMgbm90IGZ1bmN0aW9uIGNvcnJlY3RseSBpbiBjb21iaW5hdGlvbgotICMgd2l0aCAtLWhlYWRlci1maWxlPQotK3JvdXRlL3BrdGxvYy5sbzogcm91dGUvcGt0bG9jX3N5bnRheC5oIHJvdXRlL3BrdGxvY19ncmFtbWFyLmgKLStyb3V0ZS9wa3Rsb2NfZ3JhbW1hci5oOiByb3V0ZS9wa3Rsb2NfZ3JhbW1hci5jCi0gcm91dGUvcGt0bG9jX2dyYW1tYXIuYzogcm91dGUvcGt0bG9jX2dyYW1tYXIubAotIAkkKEFNX1ZfR0VOKSAkKE1LRElSX1ApIHJvdXRlOyAkKEZMRVgpIC0taGVhZGVyLWZpbGU9cm91dGUvcGt0bG9jX2dyYW1tYXIuaCAkKExGTEFHUykgLW8gJEAgJF4KLSAKLStyb3V0ZS9wa3Rsb2Nfc3ludGF4Lmg6IHJvdXRlL3BrdGxvY19zeW50YXguYwotIHJvdXRlL3BrdGxvY19zeW50YXguYzogcm91dGUvcGt0bG9jX3N5bnRheC55Ci0gCSQoQU1fVl9HRU4pICQoTUtESVJfUCkgcm91dGU7ICQoWUFDQykgLWQgJChZRkxBR1MpIC1vICRAICReCi0gCi1AQCAtMTAyLDcgKzEwNSw5IEBAIEJVSUxUX1NPVVJDRVMgPSBcCi0gCXJvdXRlL2Nscy9lbWF0Y2hfZ3JhbW1hci5jIFwKLSAJcm91dGUvY2xzL2VtYXRjaF9zeW50YXguYyBcCi0gCXJvdXRlL3BrdGxvY19ncmFtbWFyLmMgXAotLQlyb3V0ZS9wa3Rsb2Nfc3ludGF4LmMKLSsgICByb3V0ZS9wa3Rsb2Nfc3ludGF4LmMgXAotKyAgIHJvdXRlL3BrdGxvY19zeW50YXguaCBcCi0rICAgcm91dGUvcGt0bG9jX2dyYW1tYXIuaAotIAotIEVYVFJBX0RJU1QgPSBcCi0gCXJvdXRlL3BrdGxvY19ncmFtbWFyLmwgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuMi4yOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjIuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNDgzOWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuMi4yOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhcHBsaWNhdGlvbnMgZGVhbGluZyB3aXRoIG5ldGxpbmsgc29ja2V0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuaW5mcmFkZWFkLm9yZy9+dGdyL2xpYm5sLyIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotCi1QRSA9ICIxIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aG9tMzExLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQTn0ke0BkLmdldFZhcignUFYnKS5yZXBsYWNlKCcuJywnXycpfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LXBrdGxvY19zeW50YXhfaC1yYWNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wYy1maWxlLnBhdGNoIFwKLSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGhvbTMxMS8ke0JQTn0vcmVsZWFzZXMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhOGJhNjJhNWM0Zjg4M2Y0ZTQ5M2E0NmQxZjM3MzNmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYmViNTkzZGM2YWJmZmZhMThhNWM3ODdiMjc4ODQ5NzljMWI3ZTdmMWZkNDY4YzgwMWUzY2M5MzhhNjg1OTIyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYm5sLTMuc28uKiBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibmwuc28uKiBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9IgotUlJFUExBQ0VTXyR7UE59ID0gImxpYm5sMiIKLVJDT05GTElDVFNfJHtQTn0gPSAibGlibmwyIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGlibmwvY2xpLyovKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyouYSIKLQotUEFDS0FHRVMgKz0gIiR7UE59LWNsaSAke1BOfS1nZW5sICR7UE59LWlkaWFnICR7UE59LW5mICR7UE59LXJvdXRlICR7UE59LXhmcm0iCi1GSUxFU18ke1BOfS1jbGkgICA9ICIke2xpYmRpcn0vbGlibmwtY2xpLTMuc28uKiBcCi0gICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibmwvY2xpLyovKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2VubC1jdHJsLWxpc3QgXAotICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2lkaWFnLXNvY2tldC1kZXRhaWxzIFwKLSAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9uZi0qIFwKLSAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9ubC0qIgotRklMRVNfJHtQTn0tZ2VubCAgPSAiJHtsaWJkaXJ9L2xpYm5sLWdlbmwtMy5zby4qIFwKLSAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJubC1nZW5sLnNvLioiCi1GSUxFU18ke1BOfS1pZGlhZyA9ICIke2xpYmRpcn0vbGlibmwtaWRpYWctMy5zby4qIgotRklMRVNfJHtQTn0tbmYgICAgPSAiJHtsaWJkaXJ9L2xpYm5sLW5mLTMuc28uKiIKLUZJTEVTXyR7UE59LXJvdXRlID0gIiR7bGliZGlyfS9saWJubC1yb3V0ZS0zLnNvLioiCi1GSUxFU18ke1BOfS14ZnJtICA9ICIke2xpYmRpcn0vbGlibmwteGZybS0zLnNvLioiCi1SUkVQTEFDRVNfJHtQTn0tZ2VubCA9ICJsaWJubC1nZW5sMiIKLVJDT05GTElDVFNfJHtQTn0tZ2VubCA9ICJsaWJubC1nZW5sMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGRjNjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuNC4wLmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhcHBsaWNhdGlvbnMgZGVhbGluZyB3aXRoIG5ldGxpbmsgc29ja2V0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaW5mcmFkZWFkLm9yZy9+dGdyL2xpYm5sLyIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCitQRSA9ICIxIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aG9tMzExLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQTn0ke0BkLmdldFZhcignUFYnKS5yZXBsYWNlKCcuJywnXycpfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LXBjLWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1QQVRDSC1maXgtbGlibmwtMy40LjAtbXVzbC1jb21waWxlLXByb2JsZW0ucGF0Y2ggXAorIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Rob20zMTEvJHtCUE59L3JlbGVhc2VzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGY3MTkxMGMwM2RiMzYzYjQxZTJlYTYyMDU3YTQzMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjcyODc2MzdhZTcxYzZkYjZmODllMTQyMmM5OTVmMDQwN2ZmMmZlNTBjZWNkNjFhMzEyYjZhOWIwOTIxZjViZiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJubC0zLnNvLiogXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5sLnNvLiogXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSIKK1JSRVBMQUNFU18ke1BOfSA9ICJsaWJubDIiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYm5sMiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyoubGEiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9saWJubC9jbGkvKi8qLmEiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1jbGkgJHtQTn0tZ2VubCAke1BOfS1pZGlhZyAke1BOfS1uZiAke1BOfS1yb3V0ZSAke1BOfS14ZnJtIgorRklMRVNfJHtQTn0tY2xpICAgPSAiJHtsaWJkaXJ9L2xpYm5sLWNsaS0zLnNvLiogXAorICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyouc28gXAorICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dlbmwtY3RybC1saXN0IFwKKyAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9pZGlhZy1zb2NrZXQtZGV0YWlscyBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbmYtKiBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbmwtKiIKK0ZJTEVTXyR7UE59LWdlbmwgID0gIiR7bGliZGlyfS9saWJubC1nZW5sLTMuc28uKiBcCisgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibmwtZ2VubC5zby4qIgorRklMRVNfJHtQTn0taWRpYWcgPSAiJHtsaWJkaXJ9L2xpYm5sLWlkaWFnLTMuc28uKiIKK0ZJTEVTXyR7UE59LW5mICAgID0gIiR7bGliZGlyfS9saWJubC1uZi0zLnNvLioiCitGSUxFU18ke1BOfS1yb3V0ZSA9ICIke2xpYmRpcn0vbGlibmwtcm91dGUtMy5zby4qIgorRklMRVNfJHtQTn0teGZybSAgPSAiJHtsaWJkaXJ9L2xpYm5sLXhmcm0tMy5zby4qIgorUlJFUExBQ0VTXyR7UE59LWdlbmwgPSAibGlibmwtZ2VubDIiCitSQ09ORkxJQ1RTXyR7UE59LWdlbmwgPSAibGlibmwtZ2VubDIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvbGlicGNyZTItQ1ZFLTIwMTctNzE4Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhM2JmZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotbGlicGNyZTItMTAuMjM6IEZpeCBDVkUtMjAxNy03MTg2Ci0KLUEgZnV6eiBvbiBsaWJwY3JlMSB0aHJvdWdoIHRoZSBwY3JldGVzdCB1dGlsaXR5IHJldmVhbGVkIGFuIGludmFsaWQgcmVhZCBpbiB0aGUKLWxpYnJhcnkuIEZvciB3aG8gaXMgaW50ZXJlc3RlZCBpbiBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcsIHdpbGwKLWZvbGxvdyBhIGZlZWRiYWNrIGZyb20gdXBzdHJlYW06Ci0KLVRoaXMgd2FzIGEgZ2VudWluZSBidWcgaW4gdGhlIDMyLWJpdCBsaWJyYXJ5LiBUaGFua3MgZm9yIGZpbmRpbmcgaXQuIFRoZSBjcmFzaAotd2FzIGNhdXNlZCBieSB0cnlpbmcgdG8gZmluZCBhIFVuaWNvZGUgcHJvcGVydHkgZm9yIGEgY29kZSB2YWx1ZSBncmVhdGVyIHRoYW4KLTB4MTBmZmZmLCB0aGUgVW5pY29kZSBtYXhpbXVtLCB3aGVuIHJ1bm5pbmcgaW4gbm9uLVVURiBtb2RlICh3aGVyZSBjaGFyYWN0ZXIKLXZhbHVlcyBjYW4gYmUgdXAgdG8gMHhmZmZmZmZmZikuCi0KLVRoZSBjb21wbGV0ZSBBU2FuIG91dHB1dDoKLQotIyBwY3JldGVzdCAtMzIgLWQgJEZJTEUKLT09MTQ3ODg9PUVSUk9SOiBBZGRyZXNzU2FuaXRpemVyOiBTRUdWIG9uIHVua25vd24gYWRkcmVzcyAweDdmMWJiZmZlZDRkZiAocGMgMHg3ZjFiYmVlM2ZlNmIgYnAgMHg3ZmZmOGI1MGQ4YzAgc3AgMHg3ZmZmOGI1MGQzYTAgVDApCi09PTE0Nzg4PT1UaGUgc2lnbmFsIGlzIGNhdXNlZCBieSBhIFJFQUQgbWVtb3J5IGFjY2Vzcy4KLSAgICAjMCAweDdmMWJiZWUzZmU2YSBpbiBtYXRjaCAvdG1wL3BvcnRhZ2UvZGV2LWxpYnMvbGlicGNyZS04LjQwL3dvcmsvcGNyZS04LjQwL3BjcmVfZXhlYy5jOjU0NzM6MTgKLSAgICAjMSAweDdmMWJiZWUwOTIyNiBpbiBwY3JlMzJfZXhlYyAvdG1wL3BvcnRhZ2UvZGV2LWxpYnMvbGlicGNyZS04LjQwL3dvcmsvcGNyZS04LjQwL3BjcmVfZXhlYy5jOjY5MzY6OAotICAgICMyIDB4NTI3ZDZjIGluIG1haW4gL3RtcC9wb3J0YWdlL2Rldi1saWJzL2xpYnBjcmUtOC40MC93b3JrL3BjcmUtOC40MC9wY3JldGVzdC5jOjUyMTg6OQotICAgICMzIDB4N2YxYmJkZGQ2NzhmIGluIF9fbGliY19zdGFydF9tYWluIC90bXAvcG9ydGFnZS9zeXMtbGlicy9nbGliYy0yLjIzLXIzL3dvcmsvZ2xpYmMtMi4yMy9jc3UvLi4vY3N1L2xpYmMtc3RhcnQuYzoyODkKLSAgICAjNCAweDQxYjQzOCBpbiBfaW5pdCAoL3Vzci9iaW4vcGNyZXRlc3QrMHg0MWI0MzgpCi0KLUFkZHJlc3NTYW5pdGl6ZXIgY2FuIG5vdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mby4KLVNVTU1BUlk6IEFkZHJlc3NTYW5pdGl6ZXI6IFNFR1YgL3RtcC9wb3J0YWdlL2Rldi1saWJzL2xpYnBjcmUtOC40MC93b3JrL3BjcmUtOC40MC9wY3JlX2V4ZWMuYzo1NDczOjE4IGluIG1hdGNoCi09PTE0Nzg4PT1BQk9SVElORwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3Zjcy5wY3JlLm9yZy9wY3JlMi9jb2RlL3RydW5rL3NyYy9wY3JlMl91Y2QuYz92aWV3PXBhdGNoJnIxPTMxNiZyMj02NzAmc29ydGJ5PWRhdGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly92Y3MucGNyZS5vcmcvcGNyZTIvY29kZS90cnVuay9zcmMvcGNyZTJfaW50ZXJuYWwuaD92aWV3PXBhdGNoJnIxPTYwMCZyMj02NzAmc29ydGJ5PWRhdGVdCi1DVkU6IENWRS0yMDE3LTcxODYKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSB0cnVuay9zcmMvcGNyZTJfdWNkLmMgIDIwMTUvMDcvMTcgMTU6NDQ6NTEgMzE2Ci0rKysgdHJ1bmsvc3JjL3BjcmUyX3VjZC5jICAyMDE3LzAyLzI0IDE4OjI1OjMyIDY3MAotQEAgLTQxLDYgKzQxLDIwIEBACi0gCi0gY29uc3QgY2hhciAqUFJJVih1bmljb2RlX3ZlcnNpb24pID0gIjguMC4wIjsKLSAKLSsvKiBJZiB0aGUgMzItYml0IGxpYnJhcnkgaXMgcnVuIGluIG5vbi0zMi1iaXQgbW9kZSwgY2hhcmFjdGVyIHZhbHVlcwotK2dyZWF0ZXIgdGhhbiAweDEwZmZmZiBtYXkgYmUgZW5jb3VudGVyZWQuIEZvciB0aGVzZSB3ZSBzZXQgdXAgYQotK3NwZWNpYWwgcmVjb3JkLiAqLwotKwotKyNpZiBQQ1JFMl9DT0RFX1VOSVRfV0lEVEggPT0gMzIKLStjb25zdCB1Y2RfcmVjb3JkIFBSSVYoZHVtbXlfdWNkX3JlY29yZClbXSA9IHt7Ci0rICB1Y3BfQ29tbW9uLCAgICAvKiBzY3JpcHQgKi8KLSsgIHVjcF9DbiwgICAgICAgIC8qIHR5cGUgdW5hc3NpZ25lZCAqLwotKyAgdWNwX2diT3RoZXIsICAgLyogZ3JhcGhlbWUgYnJlYWsgcHJvcGVydHkgKi8KLSsgIDAsICAgICAgICAgICAgIC8qIGNhc2Ugc2V0ICovCi0rICAwLCAgICAgICAgICAgICAvKiBvdGhlciBjYXNlICovCi0rICB9fTsKLSsjZW5kaWYKLSsKLSAvKiBXaGVuIHJlY29tcGlsaW5nIHRhYmxlcyB3aXRoIGEgbmV3IFVuaWNvZGUgdmVyc2lvbiwgcGxlYXNlIGNoZWNrIHRoZQotIHR5cGVzIGluIHRoaXMgc3RydWN0dXJlIGRlZmluaXRpb24gZnJvbSBwY3JlMl9pbnRlcm5hbC5oICh0aGUgYWN0dWFsCi0gZmllbGQgbmFtZXMgd2lsbCBiZSBkaWZmZXJlbnQpOgotLS0tIHRydW5rL3NyYy9wY3JlMl9pbnRlcm5hbC5oIDIwMTYvMTEvMTkgMTI6NDY6MjQgNjAwCi0rKysgdHJ1bmsvc3JjL3BjcmUyX2ludGVybmFsLmggMjAxNy8wMi8yNCAxODoyNTozMiA2NzAKLUBAIC0xNzc0LDEwICsxNzc0LDE3IEBACi0gLyogVUNEIGFjY2VzcyBtYWNyb3MgKi8KLSAKLSAjZGVmaW5lIFVDRF9CTE9DS19TSVpFIDEyOAotLSNkZWZpbmUgR0VUX1VDRChjaCkgKFBSSVYodWNkX3JlY29yZHMpICsgXAotKyNkZWZpbmUgUkVBTF9HRVRfVUNEKGNoKSAoUFJJVih1Y2RfcmVjb3JkcykgKyBcCi0gICAgICAgICBQUklWKHVjZF9zdGFnZTIpW1BSSVYodWNkX3N0YWdlMSlbKGludCkoY2gpIC8gVUNEX0JMT0NLX1NJWkVdICogXAotICAgICAgICAgVUNEX0JMT0NLX1NJWkUgKyAoaW50KShjaCkgJSBVQ0RfQkxPQ0tfU0laRV0pCi0gCi0rI2lmIFBDUkUyX0NPREVfVU5JVF9XSURUSCA9PSAzMgotKyNkZWZpbmUgR0VUX1VDRChjaCkgKChjaCA+IE1BWF9VVEZfQ09ERV9QT0lOVCk/IFwKLSsgIFBSSVYoZHVtbXlfdWNkX3JlY29yZCkgOiBSRUFMX0dFVF9VQ0QoY2gpKQotKyNlbHNlCi0rI2RlZmluZSBHRVRfVUNEKGNoKSBSRUFMX0dFVF9VQ0QoY2gpCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBVQ0RfQ0hBUlRZUEUoY2gpICAgIEdFVF9VQ0QoY2gpLT5jaGFydHlwZQotICNkZWZpbmUgVUNEX1NDUklQVChjaCkgICAgICBHRVRfVUNEKGNoKS0+c2NyaXB0Ci0gI2RlZmluZSBVQ0RfQ0FURUdPUlkoY2gpICAgIFBSSVYodWNwX2dlbnR5cGUpW1VDRF9DSEFSVFlQRShjaCldCi1AQCAtMTgzNCw2ICsxODQxLDkgQEAKLSAjZGVmaW5lIF9wY3JlMl9kZWZhdWx0X2NvbXBpbGVfY29udGV4dCBQQ1JFMl9TVUZGSVgoX3BjcmUyX2RlZmF1bHRfY29tcGlsZV9jb250ZXh0XykKLSAjZGVmaW5lIF9wY3JlMl9kZWZhdWx0X21hdGNoX2NvbnRleHQgICBQQ1JFMl9TVUZGSVgoX3BjcmUyX2RlZmF1bHRfbWF0Y2hfY29udGV4dF8pCi0gI2RlZmluZSBfcGNyZTJfZGVmYXVsdF90YWJsZXMgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl9kZWZhdWx0X3RhYmxlc18pCi0rI2lmIFBDUkUyX0NPREVfVU5JVF9XSURUSCA9PSAzMgotKyNkZWZpbmUgX3BjcmUyX2R1bW15X3VjZF9yZWNvcmQgICAgICAgIFBDUkUyX1NVRkZJWChfcGNyZTJfZHVtbXlfdWNkX3JlY29yZF8pCi0rI2VuZGlmCi0gI2RlZmluZSBfcGNyZTJfaHNwYWNlX2xpc3QgICAgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl9oc3BhY2VfbGlzdF8pCi0gI2RlZmluZSBfcGNyZTJfdnNwYWNlX2xpc3QgICAgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl92c3BhY2VfbGlzdF8pCi0gI2RlZmluZSBfcGNyZTJfdWNkX2Nhc2VsZXNzX3NldHMgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl91Y2RfY2FzZWxlc3Nfc2V0c18pCi1AQCAtMTg1OCw2ICsxODY4LDkgQEAKLSBleHRlcm4gY29uc3QgdWludDMyX3QgICAgICAgICAgICAgICAgICBQUklWKHZzcGFjZV9saXN0KVtdOwotIGV4dGVybiBjb25zdCB1aW50MzJfdCAgICAgICAgICAgICAgICAgIFBSSVYodWNkX2Nhc2VsZXNzX3NldHMpW107Ci0gZXh0ZXJuIGNvbnN0IHVjZF9yZWNvcmQgICAgICAgICAgICAgICAgUFJJVih1Y2RfcmVjb3JkcylbXTsKLSsjaWYgUENSRTJfQ09ERV9VTklUX1dJRFRIID09IDMyCi0rZXh0ZXJuIGNvbnN0IHVjZF9yZWNvcmQgICAgICAgICAgICAgICAgUFJJVihkdW1teV91Y2RfcmVjb3JkKVtdOwotKyNlbmRpZgotIGV4dGVybiBjb25zdCB1aW50OF90ICAgICAgICAgICAgICAgICAgIFBSSVYodWNkX3N0YWdlMSlbXTsKLSBleHRlcm4gY29uc3QgdWludDE2X3QgICAgICAgICAgICAgICAgICBQUklWKHVjZF9zdGFnZTIpW107Ci0gZXh0ZXJuIGNvbnN0IHVpbnQzMl90ICAgICAgICAgICAgICAgICAgUFJJVih1Y3BfZ2J0YWJsZSlbXTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTg3ODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy04Nzg2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWZhZmMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTg3ODYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi1saWJwY3JlMi0xMC4yMzogRml4IENWRS0yMDE3LTg3ODYKLQotVGhlIHBjcmUydGVzdC5jIGluIFBDUkUyIDEwLjIzIGFsbG93cyByZW1vdGUgYXR0YWNrZXJzIHRvIGNhdXNlIGEgZGVuaWFsIG9mCi1zZXJ2aWNlIChoZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdykgb3IgcG9zc2libHkgaGF2ZSB1bnNwZWNpZmllZCBvdGhlciBpbXBhY3QKLXZpYSBhIGNyYWZ0ZWQgcmVndWxhciBleHByZXNzaW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3Zjcy5wY3JlLm9yZy9wY3JlMi9jb2RlL3RydW5rL3NyYy9wY3JlMnRlc3QuYz9yMT02OTImcjI9Njk3JnZpZXc9cGF0Y2hdCi1DVkU6IENWRS0yMDE3LTg3ODYKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSB0cnVuay9zcmMvcGNyZTJ0ZXN0LmMgIDIwMTcvMDMvMjEgMTY6MTg6NTQgNjkyCi0rKysgdHJ1bmsvc3JjL3BjcmUydGVzdC5jICAyMDE3LzAzLzIxIDE4OjM2OjEzIDY5NwotQEAgLTEwMTcsOSArMTAxNyw5IEBACi0gICBpZiAodGVzdF9tb2RlID09IFBDUkU4X01PREUpIFwKLSAgICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzgoYSxHKGIsOCksRyhHKGIsOCksX3NpemUpKTsgXAotICAgZWxzZSBpZiAodGVzdF9tb2RlID09IFBDUkUxNl9NT0RFKSBcCi0tICAgIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8xNihhLEcoYiwxNiksRyhHKGIsMTYpLF9zaXplKSk7IFwKLSsgICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUvMikpOyBcCi0gICBlbHNlIFwKLS0gICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzMyKGEsRyhiLDMyKSxHKEcoYiwzMiksX3NpemUpKQotKyAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZS80KSkKLSAKLSAjZGVmaW5lIFBDUkUyX0dFVF9PVkVDVE9SX0NPVU5UKGEsYikgXAotICAgaWYgKHRlc3RfbW9kZSA9PSBQQ1JFOF9NT0RFKSBcCi1AQCAtMTM5OSw2ICsxMzk5LDkgQEAKLSAKLSAvKiAtLS0tLSBDb21tb24gbWFjcm9zIGZvciB0d28tbW9kZSBjYXNlcyAtLS0tLSAqLwotIAotKyNkZWZpbmUgQllURU9ORSAoQklUT05FLzgpCi0rI2RlZmluZSBCWVRFVFdPIChCSVRUV08vOCkKLSsKLSAjZGVmaW5lIENBU1RGTEQodCxhLGIpIFwKLSAgICgodGVzdF9tb2RlID09IEcoRyhQQ1JFLEJJVE9ORSksX01PREUpKT8gKHQpKEcoYSxCSVRPTkUpLT5iKSA6IFwKLSAgICAgKHQpKEcoYSxCSVRUV08pLT5iKSkKLUBAIC0xNDgxLDkgKzE0ODQsOSBAQAotIAotICNkZWZpbmUgUENSRTJfR0VUX0VSUk9SX01FU1NBR0UocixhLGIpIFwKLSAgIGlmICh0ZXN0X21vZGUgPT0gRyhHKFBDUkUsQklUT05FKSxfTU9ERSkpIFwKLS0gICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVE9ORSkoYSxHKGIsQklUT05FKSxHKEcoYixCSVRPTkUpLF9zaXplKSk7IFwKLSsgICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVE9ORSkoYSxHKGIsQklUT05FKSxHKEcoYixCSVRPTkUpLF9zaXplL0JZVEVPTkUpKTsgXAotICAgZWxzZSBcCi0tICAgIHIgPSBHKHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXyxCSVRUV08pKGEsRyhiLEJJVFRXTyksRyhHKGIsQklUVFdPKSxfc2l6ZSkpCi0rICAgIHIgPSBHKHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXyxCSVRUV08pKGEsRyhiLEJJVFRXTyksRyhHKGIsQklUVFdPKSxfc2l6ZS9CWVRFVFdPKSkKLSAKLSAjZGVmaW5lIFBDUkUyX0dFVF9PVkVDVE9SX0NPVU5UKGEsYikgXAotICAgaWYgKHRlc3RfbW9kZSA9PSBHKEcoUENSRSxCSVRPTkUpLF9NT0RFKSkgXAotQEAgLTE5MDQsNyArMTkwNyw3IEBACi0gI2RlZmluZSBQQ1JFMl9ERkFfTUFUQ0goYSxiLGMsZCxlLGYsZyxoLGksaikgXAotICAgYSA9IHBjcmUyX2RmYV9tYXRjaF8xNihHKGIsMTYpLChQQ1JFMl9TUFRSMTYpYyxkLGUsZixHKGcsMTYpLGgsaSxqKQotICNkZWZpbmUgUENSRTJfR0VUX0VSUk9SX01FU1NBR0UocixhLGIpIFwKLS0gIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8xNihhLEcoYiwxNiksRyhHKGIsMTYpLF9zaXplKSkKLSsgIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8xNihhLEcoYiwxNiksRyhHKGIsMTYpLF9zaXplLzIpKQotICNkZWZpbmUgUENSRTJfR0VUX09WRUNUT1JfQ09VTlQoYSxiKSBhID0gcGNyZTJfZ2V0X292ZWN0b3JfY291bnRfMTYoRyhiLDE2KSkKLSAjZGVmaW5lIFBDUkUyX0dFVF9TVEFSVENIQVIoYSxiKSBhID0gcGNyZTJfZ2V0X3N0YXJ0Y2hhcl8xNihHKGIsMTYpKQotICNkZWZpbmUgUENSRTJfSklUX0NPTVBJTEUocixhLGIpIHIgPSBwY3JlMl9qaXRfY29tcGlsZV8xNihHKGEsMTYpLGIpCi1AQCAtMjAwMCw3ICsyMDAzLDcgQEAKLSAjZGVmaW5lIFBDUkUyX0RGQV9NQVRDSChhLGIsYyxkLGUsZixnLGgsaSxqKSBcCi0gICBhID0gcGNyZTJfZGZhX21hdGNoXzMyKEcoYiwzMiksKFBDUkUyX1NQVFIzMiljLGQsZSxmLEcoZywzMiksaCxpLGopCi0gI2RlZmluZSBQQ1JFMl9HRVRfRVJST1JfTUVTU0FHRShyLGEsYikgXAotLSAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzMyKGEsRyhiLDMyKSxHKEcoYiwzMiksX3NpemUpKQotKyAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzMyKGEsRyhiLDMyKSxHKEcoYiwzMiksX3NpemUvNCkpCi0gI2RlZmluZSBQQ1JFMl9HRVRfT1ZFQ1RPUl9DT1VOVChhLGIpIGEgPSBwY3JlMl9nZXRfb3ZlY3Rvcl9jb3VudF8zMihHKGIsMzIpKQotICNkZWZpbmUgUENSRTJfR0VUX1NUQVJUQ0hBUihhLGIpIGEgPSBwY3JlMl9nZXRfc3RhcnRjaGFyXzMyKEcoYiwzMikpCi0gI2RlZmluZSBQQ1JFMl9KSVRfQ09NUElMRShyLGEsYikgciA9IHBjcmUyX2ppdF9jb21waWxlXzMyKEcoYSwzMiksYikKLUBAIC0yODg5LDcgKzI4OTIsNyBAQAotICAgewotICAgaWYgKHBidWZmZXIzMiAhPSBOVUxMKSBmcmVlKHBidWZmZXIzMik7Ci0gICBwYnVmZmVyMzJfc2l6ZSA9IDQqbGVuICsgNDsKLS0gIGlmIChwYnVmZmVyMzJfc2l6ZSA8IDI1NikgcGJ1ZmZlcjMyX3NpemUgPSAyNTY7Ci0rICBpZiAocGJ1ZmZlcjMyX3NpemUgPCA1MTIpIHBidWZmZXIzMl9zaXplID0gNTEyOwotICAgcGJ1ZmZlcjMyID0gKHVpbnQzMl90ICopbWFsbG9jKHBidWZmZXIzMl9zaXplKTsKLSAgIGlmIChwYnVmZmVyMzIgPT0gTlVMTCkKLSAgICAgewotQEAgLTc2MDAsNyArNzYwMyw4IEBACi0gICBpbnQgZXJyY29kZTsKLSAgIGNoYXIgKmVuZHB0cjsKLSAKLS0vKiBFbnN1cmUgdGhlIHJlbGV2YW50IG5vbi04LWJpdCBidWZmZXIgaXMgYXZhaWxhYmxlLiAqLwotKy8qIEVuc3VyZSB0aGUgcmVsZXZhbnQgbm9uLTgtYml0IGJ1ZmZlciBpcyBhdmFpbGFibGUuIEVuc3VyZSB0aGF0IGl0IGlzIGF0IAotK2xlYXN0IDEyOCBjb2RlIHVuaXRzLCBiZWNhdXNlIGl0IGlzIHVzZWQgZm9yIHJldHJpZXZpbmcgZXJyb3IgbWVzc2FnZXMuICovCi0gCi0gI2lmZGVmIFNVUFBPUlRfUENSRTJfMTYKLSAgIGlmICh0ZXN0X21vZGUgPT0gUENSRTE2X01PREUpCi1AQCAtNzYyMCw3ICs3NjI0LDcgQEAKLSAjaWZkZWYgU1VQUE9SVF9QQ1JFMl8zMgotICAgaWYgKHRlc3RfbW9kZSA9PSBQQ1JFMzJfTU9ERSkKLSAgICAgewotLSAgICBwYnVmZmVyMzJfc2l6ZSA9IDI1NjsKLSsgICAgcGJ1ZmZlcjMyX3NpemUgPSA1MTI7Ci0gICAgIHBidWZmZXIzMiA9ICh1aW50MzJfdCAqKW1hbGxvYyhwYnVmZmVyMzJfc2l6ZSk7Ci0gICAgIGlmIChwYnVmZmVyMzIgPT0gTlVMTCkKLSAgICAgICB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9wY3JlLWNyb3NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvcGNyZS1jcm9zcy5wYXRjaAppbmRleCA5NTE2Y2FmLi44NzFjZGZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9wY3JlLWNyb3NzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL3BjcmUtY3Jvc3MucGF0Y2gKQEAgLTksMTEgKzksMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAzOGYxZDQxLi4yYmRlMDgzIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjk4LDkgKzI5OCwyMSBAQCBiaW5fU0NSSVBUUyA9IHBjcmUyLWNvbmZpZworSW5kZXg6IHBjcmUyLTEwLjMwL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGNyZTItMTAuMzAub3JpZy9NYWtlZmlsZS5hbQorKysrIHBjcmUyLTEwLjMwL01ha2VmaWxlLmFtCitAQCAtMzI1LDkgKzMyNSwyMSBAQCBiaW5fU0NSSVBUUyA9IHBjcmUyLWNvbmZpZwogICMjIHRvIGNvcHkgYSBkaXN0cmlidXRlZCBzZXQgb2YgdGFibGVzIHRoYXQgYXJlIGRlZmluZWQgZm9yIEFTQ0lJIGNvZGUuIEluIHRoaXMKICAjIyBjYXNlLCBkZnRhYmxlcyBpcyBub3QgbmVlZGVkLgogIApAQCAtMzUsMTMgKzM1LDEzIEBACiAgc3JjL3BjcmUyX2NoYXJ0YWJsZXMuYzogZGZ0YWJsZXMkKEVYRUVYVCkKICAJcm0gLWYgJEAKICAJLi9kZnRhYmxlcyQoRVhFRVhUKSAkQAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZDdjNTdhYS4uZDZlYjBhYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTksNiArNTksMjMgQEAgdGhlbgotICAgZmkKLSBmaQorSW5kZXg6IHBjcmUyLTEwLjMwL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBjcmUyLTEwLjMwLm9yaWcvY29uZmlndXJlLmFjCisrKysgcGNyZTItMTAuMzAvY29uZmlndXJlLmFjCitAQCAtNjAsNiArNjAsMjMgQEAgZmkKKyAjIFRoaXMgaXMgYSBuZXcgdGhpbmcgcmVxdWlyZWQgdG8gc3RvcCBhIHdhcm5pbmcgZnJvbSBhdXRvbWFrZSAxLjEyCisgbTRfaWZkZWYoW0FNX1BST0dfQVJdLCBbQU1fUFJPR19BUl0pCiAgCiAraWYgdGVzdCB4IiRjcm9zc19jb21waWxpbmciID0geHllczsgdGhlbgogKyAgICBDQ19GT1JfQlVJTEQ9IiR7Q0NfRk9SX0JVSUxELWdjY30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4yMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTJiMDI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlcmUgYXJlIHR3byBtYWpvciB2ZXJzaW9ucyBvZiB0aGUgUENSRSBsaWJyYXJ5LiBUaGUgXAotbmV3ZXN0IHZlcnNpb24gaXMgUENSRTIsIHdoaWNoIGlzIGEgcmUtd29ya2luZyBvZiB0aGUgb3JpZ2luYWwgUENSRSBcCi1saWJyYXJ5IHRvIHByb3ZpZGUgYW4gZW50aXJlbHkgbmV3IEFQSS4gVGhlIG9yaWdpbmFsLCB2ZXJ5IHdpZGVseSBcCi1kZXBsb3llZCBQQ1JFIGxpYnJhcnkncyBBUEkgYW5kIGZlYXR1cmUgYXJlIHN0YWJsZSwgZnV0dXJlIHJlbGVhc2VzIFwKLSB3aWxsIGJlIGZvciBidWdmaXhlcyBvbmx5LiBBbGwgbmV3IGZ1dHVyZSBmZWF0dXJlcyB3aWxsIGJlIHRvIFBDUkUyLCBcCi1ub3QgdGhlIG9yaWdpbmFsIFBDUkUgOC54IHNlcmllcy4iCi1TVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIHZlcnNpb24gMiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0zZGUzNGRmNDllMWZlM2MzYjU5YTA4ZGZmMjE0NDg4YiIKLQotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlMi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlicGNyZTItQ1ZFLTIwMTctODc4Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImIyY2QwMGNhN2UyNDA0OTA0MDA5OWIwYTQ2YmIzNjQ5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRmYzc5YjkxODc3MWYwMmQzMzk2OGJkMzRhNzQ5YWQ3NDg3ZmExMDE0YWViNzg3ZmFkMjlkZDM5MmI3OGM1NmUiCi0KLUNWRV9QUk9EVUNUID0gInBjcmUyIgotCi1TID0gIiR7V09SS0RJUn0vcGNyZTItJHtQVn0iCi0KLVBST1ZJREVTICs9ICJwY3JlMiIKLURFUEVORFMgKz0gImJ6aXAyIHpsaWIiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vcGNyZTItY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1uZXdsaW5lLWlzLWxmIFwKLSAgICAtLWVuYWJsZS1yZWJ1aWxkLWNoYXJ0YWJsZXMgXAotICAgIC0td2l0aC1saW5rLXNpemU9MiBcCi0gICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKLSIKLQotIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KLSMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KLUJVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0vc3JjIgotQ0ZMQUdTICs9ICItRF9SRUVOVFJBTlQiCi1DWFhGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxzdGRjKysiCi0KLWV4cG9ydCBDQ0xEX0ZPUl9CVUlMRCA9IiR7QlVJTERfQ0NMRH0iCi0KLVBBQ0tBR0VTID0rICJwY3JlMmdyZXAgcGNyZTJncmVwLWRvYyBwY3JlMnRlc3QgcGNyZTJ0ZXN0LWRvYyIKLQotU1VNTUFSWV9wY3JlMmdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgotU1VNTUFSWV9wY3JlMmdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCi1TVU1NQVJZX3BjcmUydGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCi1TVU1NQVJZX3BjcmUydGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKLQotRklMRVNfcGNyZTJncmVwID0gIiR7YmluZGlyfS9wY3JlMmdyZXAiCi1GSUxFU19wY3JlMmdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUyZ3JlcC4xIgotRklMRVNfcGNyZTJ0ZXN0ID0gIiR7YmluZGlyfS9wY3JlMnRlc3QiCi1GSUxFU19wY3JlMnRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUydGVzdC4xIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YzJkNjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zMC5iYgpAQCAtMCwwICsxLDYxIEBACitERVNDUklQVElPTiA9ICJUaGVyZSBhcmUgdHdvIG1ham9yIHZlcnNpb25zIG9mIHRoZSBQQ1JFIGxpYnJhcnkuIFRoZSBcCituZXdlc3QgdmVyc2lvbiBpcyBQQ1JFMiwgd2hpY2ggaXMgYSByZS13b3JraW5nIG9mIHRoZSBvcmlnaW5hbCBQQ1JFIFwKK2xpYnJhcnkgdG8gcHJvdmlkZSBhbiBlbnRpcmVseSBuZXcgQVBJLiBUaGUgb3JpZ2luYWwsIHZlcnkgd2lkZWx5IFwKK2RlcGxveWVkIFBDUkUgbGlicmFyeSdzIEFQSSBhbmQgZmVhdHVyZSBhcmUgc3RhYmxlLCBmdXR1cmUgcmVsZWFzZXMgXAorIHdpbGwgYmUgZm9yIGJ1Z2ZpeGVzIG9ubHkuIEFsbCBuZXcgZnV0dXJlIGZlYXR1cmVzIHdpbGwgYmUgdG8gUENSRTIsIFwKK25vdCB0aGUgb3JpZ2luYWwgUENSRSA4Lnggc2VyaWVzLiIKK1NVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMgdmVyc2lvbiAyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTEyZDU1ZTE1YTBjNmRhNWM2NDViYTQwMzgyYmQzMjkzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUyLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkM2FkZjRiMTMwZWVkODU0YTUzMDM5MGYwMDAyMGE2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MGJkNDFjNjA1ZDMwZTM3NDU3NzFlYjgxOTI4ZDc3OWYxNTgwODFhNTFiMmYzMTRiYmNjMWY3M2RlNTc3M2RiIgorCitDVkVfUFJPRFVDVCA9ICJwY3JlMiIKKworUyA9ICIke1dPUktESVJ9L3BjcmUyLSR7UFZ9IgorCitQUk9WSURFUyArPSAicGNyZTIiCitERVBFTkRTICs9ICJiemlwMiB6bGliIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUyLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCisgICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKKyAgICAtLXdpdGgtbGluay1zaXplPTIgXAorICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCisgICAgLS1lbmFibGUtcGNyZTItMTYgXAorICAgIC0tZW5hYmxlLXBjcmUyLTMyIFwKKyIKKyMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCisjIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCitCVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9L3NyYyIKK0NGTEFHUyArPSAiLURfUkVFTlRSQU5UIgorQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgorCitleHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgorCitQQUNLQUdFUyA9KyAibGlicGNyZTItMTYgbGlicGNyZTItMzIgcGNyZTJncmVwIHBjcmUyZ3JlcC1kb2MgcGNyZTJ0ZXN0IHBjcmUydGVzdC1kb2MiCisKK1NVTU1BUllfcGNyZTJncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKK1NVTU1BUllfcGNyZTJncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgorU1VNTUFSWV9wY3JlMnRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorU1VNTUFSWV9wY3JlMnRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCisKK0ZJTEVTX2xpYnBjcmUyLTE2ID0gIiR7bGliZGlyfS9saWJwY3JlMi0xNi5zby4qIgorRklMRVNfbGlicGNyZTItMzIgPSAiJHtsaWJkaXJ9L2xpYnBjcmUyLTMyLnNvLioiCitGSUxFU19wY3JlMmdyZXAgPSAiJHtiaW5kaXJ9L3BjcmUyZ3JlcCIKK0ZJTEVTX3BjcmUyZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJncmVwLjEiCitGSUxFU19wY3JlMnRlc3QgPSAiJHtiaW5kaXJ9L3BjcmUydGVzdCIKK0ZJTEVTX3BjcmUydGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJ0ZXN0LjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYgppbmRleCAwZWFlZDE4Li4wMTg3YzA4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQxLmJiCkBAIC04MCw0ICs4MCw4IEBACiAJZm9yIGkgaW4gUnVuVGVzdCBSdW5HcmVwVGVzdCB0ZXN0LWRyaXZlcjsgXAogCSAgZG8gY3AgJHtTfS8kaSAkdDsgXAogCWRvbmUKKwkjIFNraXAgdGhlIGZyX0ZSIGxvY2FsZSB0ZXN0LiBJZiB0aGUgbG9jYWxlIGZyX0ZSIGlzIGZvdW5kLCBpdCBpcyB0ZXN0ZWQuCisJIyBJZiBub3QgZm91bmQsIHRoZSB0ZXN0IGlzIHNraXBwZWQuIFRoZSB0ZXN0IHByb2dyYW0gYXNzdW1lcyBmcl9GUiBpcyBub24tVVRGLTgKKwkjIGxvY2FsZSBzbyB0aGUgdGVzdCBmYWlscyBpZiBmcl9GUiBpcyBVVEYtOCBsb2NhbGUuCisJc2VkIC1pIC1lICdzOmRvMz15ZXM6ZG8zPW5vOmcnICR7RH0ke1BURVNUX1BBVEh9L1J1blRlc3QgCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGMzOWY1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IHByb3ZpZGluZyBhdXRvbWF0aWMgcHJveHkgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnByb3h5L2xpYnByb3h5IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHJveHkvbGlicHJveHkvaXNzdWVzIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly91dGlscy9wcm94eS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PTU1MTUyYTEwMDZkN2RhZmJlZjMyYmFmOWMzMGE5OWMwIgotCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlNzUxNGY3OGY1NDMyMjEwZTE3YTAxYjZiNjE4ZGRlMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMjVkMDQ2ODUwMzQ2YTUwNWMwNjE3NjQ2ZjFlNjhiNjYwMDkyZWZhZGY2NjU1NDhhODljMjgwOTAwMjYyZWE2IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnByb3h5L2xpYnByb3h5L3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGlicHJveHktKD9QPHB2ZXI+LiopXC50YXIiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2dub21lJywgJycsIGQpfSBnbm9tZTMiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItRFdJVEhfR05PTUU9eWVzLC1EV0lUSF9HTk9NRT1ubyxnY29uZiIKLVBBQ0tBR0VDT05GSUdbZ25vbWUzXSA9ICItRFdJVEhfR05PTUUzPXllcywtRFdJVEhfR05PTUUzPW5vIgotCi1FWFRSQV9PRUNNQUtFICs9ICIgXAotICAgIC1EV0lUSF9LREU0PW5vIFwKLSAgICAtRFdJVEhfTU9aSlM9bm8gXAotICAgIC1EV0lUSF9OTT1ubyBcCi0gICAgLURXSVRIX1BFUkw9bm8gXAotICAgIC1EV0lUSF9QWVRIT049bm8gXAotICAgIC1EV0lUSF9XRUJLSVQ9bm8gXAotICAgIC1ETElCX0lOU1RBTExfRElSPSR7bGliZGlyfSBcCi0gICAgLURMSUJFWEVDX0lOU1RBTExfRElSPSR7bGliZXhlY2Rpcn0gXAotIgotU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vJHtQVn0vbW9kdWxlcyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MWM5ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE1LmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBwcm92aWRpbmcgYXV0b21hdGljIHByb3h5IGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwcm94eS9saWJwcm94eSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnByb3h5L2xpYnByb3h5L2lzc3VlcyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdXRpbHMvcHJveHkuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT01NTE1MmExMDA2ZDdkYWZiZWYzMmJhZjljMzBhOTljMCIKKworREVQRU5EUyA9ICJnbGliLTIuMCIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZjZiMWQyYTFlMTdhOTljZDNkZWJhYWU2ZDA0YWIxNTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjU0ZGI0NjQxMjBjOTUzNDY1NDU5MGI2NjgzYzdmYTM4ODdiM2RhZDBjYTFjNGNkNDEyYWYyNGZiZmNhNmQ0ZiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwcm94eS9saWJwcm94eS9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYnByb3h5LSg/UDxwdmVyPi4qKVwudGFyIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdnbm9tZScsICcnLCBkKX0gZ25vbWUzIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLURXSVRIX0dOT01FPXllcywtRFdJVEhfR05PTUU9bm8sZ2NvbmYiCitQQUNLQUdFQ09ORklHW2dub21lM10gPSAiLURXSVRIX0dOT01FMz15ZXMsLURXSVRIX0dOT01FMz1ubyIKKworRVhUUkFfT0VDTUFLRSArPSAiIFwKKyAgICAtRFdJVEhfS0RFND1ubyBcCisgICAgLURXSVRIX01PWkpTPW5vIFwKKyAgICAtRFdJVEhfTk09bm8gXAorICAgIC1EV0lUSF9QRVJMPW5vIFwKKyAgICAtRFdJVEhfUFlUSE9OPW5vIFwKKyAgICAtRFdJVEhfV0VCS0lUPW5vIFwKKyAgICAtRExJQl9JTlNUQUxMX0RJUj0ke2xpYmRpcn0gXAorICAgIC1ETElCRVhFQ19JTlNUQUxMX0RJUj0ke2xpYmV4ZWNkaXJ9IFwKKyIKK1NFQ1VSSVRZX1BJRV9DRkxBR1NfcmVtb3ZlID0gIi1mUElFIC1waWUiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vJHtCUE59LyR7UFZ9L21vZHVsZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU4LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU4LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5Zjk1ZTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi41OC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBIVFRQIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gaW4gQyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvbGlic291cCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDIgc3FsaXRlMyBpbnRsdG9vbC1uYXRpdmUiCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJzb3VwLyR7U0hSVF9WRVJ9L2xpYnNvdXAtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWIzM2FkYjQ1OWMyMjgzZWZjNWM3ZDA5Y2NkYmJjZmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDQyMzAwY2ExYjFiZjhhM2JiZjJmNzg4MjAzMjg3ZmY4NjI1NDJkNGZjMDQ4ZjE5YTkyYTA2OGEyN2QxN2I3MiIKLQotUyA9ICIke1dPUktESVJ9L2xpYnNvdXAtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi0jIGxpYnNvdXAtZ25vbWUgaXMgZW50aXJlbHkgZGVwcmVjYXRlZCBhbmQganVzdCBzdHVicyBpbiAyLjQyIG9ud2FyZHMuIERpc2FibGUgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItLXdpdGgtZ25vbWUsLS13aXRob3V0LWdub21lIgotUEFDS0FHRUNPTkZJR1tnc3NhcGldID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXZhbGEiCi0KLSMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCi0jIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAotIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKLSMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKLQotIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KLVJSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmU3ZmY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42MC4zLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiQW4gSFRUUCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGluIEMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYnNvdXAiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIgorCitTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vbGlic291cC8ke1NIUlRfVkVSfS9saWJzb3VwLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjRjZjg5MzdkMTYxZDNkZDcxYTY1ZjE2ODRlMzE3ODI0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiMGRjNzYyZjIzYWJlNGUwZDI5Yjc3MzcwZTUzOWZkMzVmMzFkOGU4ZTAzMThkNmRkY2NmZjM5NWJlNjhhMjIiCisKK1MgPSAiJHtXT1JLRElSfS9saWJzb3VwLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKKworIyBsaWJzb3VwLWdub21lIGlzIGVudGlyZWx5IGRlcHJlY2F0ZWQgYW5kIGp1c3Qgc3R1YnMgaW4gMi40MiBvbndhcmRzLiBEaXNhYmxlIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSIKK1BBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS12YWxhIgorCisjIFdoZW4gYnVpbHQgd2l0aG91dCBnbm9tZSBzdXBwb3J0LCBsaWJzb3VwLTIuNCB3aWxsIGNvbnRhaW4gb25seSBvbmUgc2hhcmVkIGxpYgorIyBhbmQgd2lsbCB0aGVyZWZvcmUgYmVjb21lIHN1YmplY3QgdG8gcmVuYW1pbmcgYnkgZGViaWFuLmJiY2xhc3MuIFByZXZlbnQKKyMgcmVuYW1pbmcgaW4gb3JkZXIgdG8ga2VlcCB0aGUgcGFja2FnZSBuYW1lIGNvbnNpc3RlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCisjIGdub21lIHN1cHBvcnQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KK0RFQklBTl9OT0FVVE9OQU1FXyR7UE59ID0gIjEiCisKKyMgZ2xpYi1uZXR3b3JraW5nIGlzIG5lZWRlZCBmb3IgU1NMLCBwcm94aWVzLCBldGMuCitSUkVDT01NRU5EU18ke1BOfSA9ICJnbGliLW5ldHdvcmtpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy9pY29udi1tNC1yZW1vdmUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy9pY29udi1tNC1yZW1vdmUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKaW5kZXggZDQ0ODkxNi4uOWU4Y2UyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmcvaWNvbnYtbTQtcmVtb3ZlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nL2ljb252LW00LXJlbW92ZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gOGQ5OWEzNjg2MTU2NTZhODM1ZjU1MDIzMjZhZmQzMWNlYzJjZWJmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMzA1NjIwNjViYTllNGMyMzhlNzYxMDBiNWY5ZjBjNWFkZDBlNjM1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDE2IFNlcCAyMDEzIDE4OjE2OjEyICswODAwCitEYXRlOiBUdWUsIDUgRGVjIDIwMTcgMDk6MzA6MzYgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIHRoZSB0ZXN0IHRvIGNvbnZlcnQgZXVjLWpwCiAKIFJlbW92ZSB0aGUgdGVzdCAiVGVzdCBhZ2FpbnN0IEhQLVVYIDExLjExIGJ1ZzoKQEAgLTEzLDI4ICsxMyw0NCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCi0gZ251bGliLW00L2ljb252Lm00IHwgICAxMSAtLS0tLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgMCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKy0tLQorIGdudWxpYi1tNC9pY29udi5tNCB8IDIzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIzIGRlbGV0aW9ucygtKQogCi1JbmRleDogbGlidW5pc3RyaW5nLTAuOS40L2dudWxpYi1tNC9pY29udi5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnVuaXN0cmluZy0wLjkuNC5vcmlnL2dudWxpYi1tNC9pY29udi5tNAkyMDE0LTExLTAzIDE3OjQxOjI5Ljc1NTAxMTkxNyArMDAwMAotKysrIGxpYnVuaXN0cmluZy0wLjkuNC9nbnVsaWItbTQvaWNvbnYubTQJMjAxNC0xMS0wMyAxNzo0MzowMy43OTUwMTQ0ODAgKzAwMDAKLUBAIC0xNTksMTcgKzE1OSw2IEBACitkaWZmIC0tZ2l0IGEvZ251bGliLW00L2ljb252Lm00IGIvZ251bGliLW00L2ljb252Lm00CitpbmRleCBiMzNlY2QwLi43M2I2YWExIDEwMDY0NAorLS0tIGEvZ251bGliLW00L2ljb252Lm00CisrKysgYi9nbnVsaWItbTQvaWNvbnYubTQKK0BAIC0xNjUsMjkgKzE2NSw2IEBAIEFDX0RFRlVOKFtBTV9JQ09OVl9MSU5LXSwKICAgICAgICB9CiAgICB9CiAgI2VuZGlmCiAtICAvKiBUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOiBObyBjb252ZXJ0ZXIgZnJvbSBFVUMtSlAgdG8gVVRGLTggaXMKIC0gICAgIHByb3ZpZGVkLiAgKi8KLS0gIGlmICgvKiBUcnkgc3RhbmRhcmRpemVkIG5hbWVzLiAgKi8KLS0gICAgICBpY29udl9vcGVuICgiVVRGLTgiLCAiRVVDLUpQIikgPT0gKGljb252X3QpKC0xKQotLSAgICAgIC8qIFRyeSBJUklYLCBPU0YvMSBuYW1lcy4gICovCi0tICAgICAgJiYgaWNvbnZfb3BlbiAoIlVURi04IiwgImV1Y0pQIikgPT0gKGljb252X3QpKC0xKQotLSAgICAgIC8qIFRyeSBBSVggbmFtZXMuICAqLwotLSAgICAgICYmIGljb252X29wZW4gKCJVVEYtOCIsICJJQk0tZXVjSlAiKSA9PSAoaWNvbnZfdCkoLTEpCi0tICAgICAgLyogVHJ5IEhQLVVYIG5hbWVzLiAgKi8KLS0gICAgICAmJiBpY29udl9vcGVuICgidXRmOCIsICJldWNKUCIpID09IChpY29udl90KSgtMSkpCi0tICAgIHJlc3VsdCB8PSAxNjsKKy0gIHsKKy0gICAgLyogVHJ5IHN0YW5kYXJkaXplZCBuYW1lcy4gICovCistICAgIGljb252X3QgY2QxID0gaWNvbnZfb3BlbiAoIlVURi04IiwgIkVVQy1KUCIpOworLSAgICAvKiBUcnkgSVJJWCwgT1NGLzEgbmFtZXMuICAqLworLSAgICBpY29udl90IGNkMiA9IGljb252X29wZW4gKCJVVEYtOCIsICJldWNKUCIpOworLSAgICAvKiBUcnkgQUlYIG5hbWVzLiAgKi8KKy0gICAgaWNvbnZfdCBjZDMgPSBpY29udl9vcGVuICgiVVRGLTgiLCAiSUJNLWV1Y0pQIik7CistICAgIC8qIFRyeSBIUC1VWCBuYW1lcy4gICovCistICAgIGljb252X3QgY2Q0ID0gaWNvbnZfb3BlbiAoInV0ZjgiLCAiZXVjSlAiKTsKKy0gICAgaWYgKGNkMSA9PSAoaWNvbnZfdCkoLTEpICYmIGNkMiA9PSAoaWNvbnZfdCkoLTEpCistICAgICAgICAmJiBjZDMgPT0gKGljb252X3QpKC0xKSAmJiBjZDQgPT0gKGljb252X3QpKC0xKSkKKy0gICAgICByZXN1bHQgfD0gMTY7CistICAgIGlmIChjZDEgIT0gKGljb252X3QpKC0xKSkKKy0gICAgICBpY29udl9jbG9zZSAoY2QxKTsKKy0gICAgaWYgKGNkMiAhPSAoaWNvbnZfdCkoLTEpKQorLSAgICAgIGljb252X2Nsb3NlIChjZDIpOworLSAgICBpZiAoY2QzICE9IChpY29udl90KSgtMSkpCistICAgICAgaWNvbnZfY2xvc2UgKGNkMyk7CistICAgIGlmIChjZDQgIT0gKGljb252X3QpKC0xKSkKKy0gICAgICBpY29udl9jbG9zZSAoY2Q0KTsKKy0gIH0KICAgIHJldHVybiByZXN1bHQ7Ci0gfV1dKV0sCi0gICAgICAgICBbYW1fY3ZfZnVuY19pY29udl93b3Jrcz15ZXNdLAorIF1dKV0sCisgICAgICAgICAgIFthbV9jdl9mdW5jX2ljb252X3dvcmtzPXllc10sICwKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmdfMC45LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc3YTIxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIEMgYW5kIFVuaWNvZGUgc3RyaW5ncyIKLQotREVTQ1JJUFRJT04gPSAiVGV4dCBmaWxlcyBhcmUgbm93YWRheXMgdXN1YWxseSBlbmNvZGVkIGluIFVuaWNvZGUsIGFuZCBtYXlcCi0gY29uc2lzdCBvZiB2ZXJ5IGRpZmZlcmVudCBzY3JpcHRzIGZyb20gTGF0aW4gbGV0dGVycyB0byBDaGluZXNlIEhhbnppXAotIHdpdGggbWFueSBraW5kcyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgYWNjZW50cywgcmlnaHQtdG8tbGVmdCB3cml0aW5nXAotIG1hcmtzLCBoeXBoZW5zLCBSb21hbiBudW1iZXJzLCBhbmQgbXVjaCBtb3JlLiBCdXQgdGhlIFBPU0lYIHBsYXRmb3JtXAotIEFQSXMgZm9yIHRleHQgZG8gbm90IGNvbnRhaW4gYWRlcXVhdGUgZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGhcCi0gcGFydGljdWxhciBwcm9wZXJ0aWVzIG9mIG1hbnkgVW5pY29kZSBjaGFyYWN0ZXJzLiBJbiBmYWN0LCB0aGUgUE9TSVhcCi0gQVBJcyBmb3IgdGV4dCBoYXZlIHNldmVyYWwgYXNzdW1wdGlvbnMgYXQgdGhlaXIgYmFzZSB3aGljaCBkb24ndCBob2xkXAotIGZvciBVbmljb2RlIHRleHQuICBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmdcCi0gVW5pY29kZSBzdHJpbmdzIGFuZCBmb3IgbWFuaXB1bGF0aW5nIEMgc3RyaW5ncyBhY2NvcmRpbmcgdG8gdGhlIFVuaWNvZGVcCi0gc3RhbmRhcmQuICBUaGlzIHBhY2thZ2UgY29udGFpbnMgZG9jdW1lbnRhdGlvbi4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ1bmlzdHJpbmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiTEdQTHYzKyB8IEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NDU7ZW5kbGluZT02NTttZDU9MDgyODdkMTZiYThkODM5ZmFlZDhkMmRjMTRkN2Q2YTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL2xpYnVuaXN0cmluZy50ZXhpO21kNT1iODZjOWZkN2FjYWFjNjIzMDE3MjM5NjQwNjMxOTEyYyBcCi0gICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vaWNvbnYtbTQtcmVtb3ZlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjhlNjYzNDU0YWEzNzIxODFlZThlNDZlZGFhM2JhNGM4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljZTA4MWNiZWUxOTUxYjU1NTk3YjMwZTcwMzBiZGE5ZDdiMmYwMzRlZjkwMWExMzVmZjNhMDIwYmU1YTQxZTUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nXzAuOS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmdfMC45LjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI3Y2JhNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nXzAuOS45LmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIEMgYW5kIFVuaWNvZGUgc3RyaW5ncyIKKworREVTQ1JJUFRJT04gPSAiVGV4dCBmaWxlcyBhcmUgbm93YWRheXMgdXN1YWxseSBlbmNvZGVkIGluIFVuaWNvZGUsIGFuZCBtYXlcCisgY29uc2lzdCBvZiB2ZXJ5IGRpZmZlcmVudCBzY3JpcHRzIGZyb20gTGF0aW4gbGV0dGVycyB0byBDaGluZXNlIEhhbnppXAorIHdpdGggbWFueSBraW5kcyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgYWNjZW50cywgcmlnaHQtdG8tbGVmdCB3cml0aW5nXAorIG1hcmtzLCBoeXBoZW5zLCBSb21hbiBudW1iZXJzLCBhbmQgbXVjaCBtb3JlLiBCdXQgdGhlIFBPU0lYIHBsYXRmb3JtXAorIEFQSXMgZm9yIHRleHQgZG8gbm90IGNvbnRhaW4gYWRlcXVhdGUgZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGhcCisgcGFydGljdWxhciBwcm9wZXJ0aWVzIG9mIG1hbnkgVW5pY29kZSBjaGFyYWN0ZXJzLiBJbiBmYWN0LCB0aGUgUE9TSVhcCisgQVBJcyBmb3IgdGV4dCBoYXZlIHNldmVyYWwgYXNzdW1wdGlvbnMgYXQgdGhlaXIgYmFzZSB3aGljaCBkb24ndCBob2xkXAorIGZvciBVbmljb2RlIHRleHQuICBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmdcCisgVW5pY29kZSBzdHJpbmdzIGFuZCBmb3IgbWFuaXB1bGF0aW5nIEMgc3RyaW5ncyBhY2NvcmRpbmcgdG8gdGhlIFVuaWNvZGVcCisgc3RhbmRhcmQuICBUaGlzIHBhY2thZ2UgY29udGFpbnMgZG9jdW1lbnRhdGlvbi4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ1bmlzdHJpbmcvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiTEdQTHYzKyB8IEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NDU7ZW5kbGluZT02NTttZDU9MDgyODdkMTZiYThkODM5ZmFlZDhkMmRjMTRkN2Q2YTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL2xpYnVuaXN0cmluZy50ZXhpO21kNT1lZmI4MGEzNzk5YTYwZjk1ZmVhZjgwNjYxZDRmMjA0YyBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vaWNvbnYtbTQtcmVtb3ZlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjRmNjg5ZTM3ZTRjM2JkNjdkZTU3ODZhYTUxZDk4YjEzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1ZTkwYzA4ZjllNTQyN2NhM2EyYzBjNTNmMTlhYTM4YjI1YzUwMDkxMzUxMGFkMjVhZmVmODY0NDhiZWE4NGEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kL0FkZC1BT19SRVFVSVJFX0NBUy10by1maXgtYnVpbGQtb24tQVJNLXY2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2gKaW5kZXggMGRmZjJjOC4uYzhmYWNhNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2gKQEAgLTI4LDEwICsyOCwxMCBAQAogIGluY2x1ZGUvbGlidW53aW5kX2kuaCB8IDEgKwogIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvYWNpbmNsdWRlLm00IGIvYWNpbmNsdWRlLm00Ci1pbmRleCA0OTdmN2MyLi45YzE1YWYxIDEwMDY0NAotLS0tIGEvYWNpbmNsdWRlLm00Ci0rKysgYi9hY2luY2x1ZGUubTQKK0luZGV4OiBsaWJ1bndpbmQtMS4yLjEvYWNpbmNsdWRlLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlidW53aW5kLTEuMi4xLm9yaWcvYWNpbmNsdWRlLm00CisrKysgbGlidW53aW5kLTEuMi4xL2FjaW5jbHVkZS5tNAogQEAgLTIyLDExICsyMiw1IEBAIGZpXSkKICBBQ19ERUZVTihbQ0hFQ0tfQVRPTUlDX09QU10sCiAgW2RubCBDaGVjayB3aGV0aGVyIHRoZSBzeXN0ZW0gaGFzIHRoZSBhdG9taWNfb3BzIHBhY2thZ2UgaW5zdGFsbGVkLgpAQCAtNDUsMTggKzQ1LDE1IEBACiAtIyAgQUNfQ0hFQ0tfTElCKGF0b21pY19vcHMsIG1haW4pCiArICBBQ19DSEVDS19MSUIoYXRvbWljX29wcywgbWFpbikKICBdKQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlidW53aW5kX2kuaCBiL2luY2x1ZGUvbGlidW53aW5kX2kuaAotaW5kZXggMjNmNjE1ZS4uZGVhYmRmZCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbGlidW53aW5kX2kuaAotKysrIGIvaW5jbHVkZS9saWJ1bndpbmRfaS5oCi1AQCAtOTUsNiArOTUsNyBAQCBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0gCShwdGhyZWFkX211dGV4X3VubG9jayAhPSBOVUxMID8gcHRocmVhZF9tdXRleF91bmxvY2sgKGwpIDogMCkKK0luZGV4OiBsaWJ1bndpbmQtMS4yLjEvaW5jbHVkZS9saWJ1bndpbmRfaS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlidW53aW5kLTEuMi4xLm9yaWcvaW5jbHVkZS9saWJ1bndpbmRfaS5oCisrKysgbGlidW53aW5kLTEuMi4xL2luY2x1ZGUvbGlidW53aW5kX2kuaAorQEAgLTExNiw2ICsxMTYsNyBAQCBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFCisgICAgICAgICAocHRocmVhZF9tdXRleF91bmxvY2sgIT0gTlVMTCA/IHB0aHJlYWRfbXV0ZXhfdW5sb2NrIChsKSA6IDApCiAgCiAgI2lmZGVmIEhBVkVfQVRPTUlDX09QU19ICiArIyBkZWZpbmUgQU9fUkVRVUlSRV9DQVMKICAjIGluY2x1ZGUgPGF0b21pY19vcHMuaD4KICBzdGF0aWMgaW5saW5lIGludAogIGNtcHhjaGdfcHRyICh2b2lkICphZGRyLCB2b2lkICpvbGQsIHZvaWQgKm5ldykKLS0tIAotMS45LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvZml4LW1pcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9maXgtbWlwcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAyMjIzNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9maXgtbWlwcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDVmMzU0Y2I3YjljODRkYWUwMDZmMGViZDhhZDdhNzhkN2UyYWFkMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYXZlIFdhdHNvbiA8ZGF2ZWp3YXRzb25AZmIuY29tPgotRGF0ZTogV2VkLCAyNSBKYW4gMjAxNyAxNjoxODowMiAtMDgwMAotU3ViamVjdDogW1BBVENIXSBtaXBzL3RpbGVneDogQWRkIG1pc3NpbmcgdW53aW5kX2kuaCBoZWFkZXIgZmlsZQotCi1yZXBvcnRlZC1ieTogSm9obiBLbmlnaHQgPEpvaG4uS25pZ2h0QGJlbGtpbi5jb20+Ci0tLS0KLSBzcmMvTWFrZWZpbGUuYW0gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCA1ZDg3NDc1NS4uN2RlNGM0MjUgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTI4MCw3ICsyODAsNyBAQCBsaWJ1bndpbmRfaHBwYV9sYV9TT1VSQ0VTX2hwcGEgPSAkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2hwcGFfY29tbW9uKQlcCi0gCWhwcGEvR3Jlc3VtZS5jIGhwcGEvR3N0ZXAuYwotIAotICMgVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBnbyBpbmZvIGxpYnVud2luZCBhbmQgbGlidW53aW5kLW1pcHM6Ci0tbm9pbnN0X0hFQURFUlMgKz0gbWlwcy9pbml0LmggbWlwcy9vZmZzZXRzLmgKLStub2luc3RfSEVBREVSUyArPSBtaXBzL2luaXQuaCBtaXBzL29mZnNldHMuaCBtaXBzL3Vud2luZF9pLmgKLSBsaWJ1bndpbmRfbGFfU09VUkNFU19taXBzX2NvbW1vbiA9ICQobGlidW53aW5kX2xhX1NPVVJDRVNfY29tbW9uKQkgICAgXAotIAltaXBzL2lzX2ZwcmVnLmMgbWlwcy9yZWduYW1lLmMKLSAKLUBAIC0yOTksNyArMjk5LDcgQEAgbGlidW53aW5kX21pcHNfbGFfU09VUkNFU19taXBzID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19taXBzX2NvbW1vbikJICAgIFwKLSAJbWlwcy9HaXNfc2lnbmFsX2ZyYW1lLmMgbWlwcy9HcmVncy5jIG1pcHMvR3Jlc3VtZS5jIG1pcHMvR3N0ZXAuYwotIAotICMgVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBnbyBpbmZvIGxpYnVud2luZCBhbmQgbGlidW53aW5kLXRpbGVneDoKLS1ub2luc3RfSEVBREVSUyArPSB0aWxlZ3gvaW5pdC5oIHRpbGVneC9vZmZzZXRzLmgKLStub2luc3RfSEVBREVSUyArPSB0aWxlZ3gvaW5pdC5oIHRpbGVneC9vZmZzZXRzLmggdGlsZWd4L3Vud2luZF9pLmgKLSBsaWJ1bndpbmRfbGFfU09VUkNFU190aWxlZ3hfY29tbW9uID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19jb21tb24pCSAgICBcCi0gCXRpbGVneC9pc19mcHJlZy5jIHRpbGVneC9yZWduYW1lLmMKLSAKLWRpZmYgLS1naXQgYS9zcmMvbWlwcy91bndpbmRfaS5oIGIvc3JjL21pcHMvdW53aW5kX2kuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjMzODJkY2YKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9taXBzL3Vud2luZF9pLmgKLUBAIC0wLDAgKzEsNDMgQEAKLSsvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDA4IENvZGVTb3VyY2VyeQotKwotK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIGxpYnVud2luZC4KLSsKLStQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSthIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsKLStUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKwotK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQotK0xJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KLStPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLStXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0rCi0rI2lmbmRlZiB1bndpbmRfaV9oCi0rI2RlZmluZSB1bndpbmRfaV9oCi0rCi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKwotKyNpbmNsdWRlIDxsaWJ1bndpbmQtbWlwcy5oPgotKwotKyNpbmNsdWRlICJsaWJ1bndpbmRfaS5oIgotKwotKyNkZWZpbmUgbWlwc19sb2NrICAgICAgICAgICAgICAgICAgICAgICBVTldfT0JKKGxvY2spCi0rI2RlZmluZSBtaXBzX2xvY2FsX3Jlc3VtZSAgICAgICAgICAgICAgIFVOV19PQkoobG9jYWxfcmVzdW1lKQotKyNkZWZpbmUgbWlwc19sb2NhbF9hZGRyX3NwYWNlX2luaXQgICAgICBVTldfT0JKKGxvY2FsX2FkZHJfc3BhY2VfaW5pdCkKLSsKLStleHRlcm4gaW50IG1pcHNfbG9jYWxfcmVzdW1lICh1bndfYWRkcl9zcGFjZV90IGFzLCB1bndfY3Vyc29yX3QgKmN1cnNvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7Ci0rCi0rZXh0ZXJuIHZvaWQgbWlwc19sb2NhbF9hZGRyX3NwYWNlX2luaXQgKHZvaWQpOwotKwotKyNlbmRpZiAvKiB1bndpbmRfaV9oICovCi1kaWZmIC0tZ2l0IGEvc3JjL3RpbGVneC91bndpbmRfaS5oIGIvc3JjL3RpbGVneC91bndpbmRfaS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYWFjN2JlMwotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL3RpbGVneC91bndpbmRfaS5oCi1AQCAtMCwwICsxLDQ0IEBACi0rLyogbGlidW53aW5kIC0gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB1bndpbmQgbGlicmFyeQotKyAgIENvcHlyaWdodCAoQykgMjAwOCBDb2RlU291cmNlcnkKLSsKLStUaGlzIGZpbGUgaXMgcGFydCBvZiBsaWJ1bndpbmQuCi0rCi0rUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0rYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0rIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLStkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLStwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSt0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rCi0rVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLStpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSsKLStUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLStFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLStNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotK05PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKLStMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCi0rT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCi0rV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLwotKwotKyNpZm5kZWYgdW53aW5kX2lfaAotKyNkZWZpbmUgdW53aW5kX2lfaAotKwotKyNpbmNsdWRlIDxtZW1vcnkuaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rCi0rI2luY2x1ZGUgPGxpYnVud2luZC10aWxlZ3guaD4KLSsKLSsjaW5jbHVkZSAibGlidW53aW5kX2kuaCIKLSsKLSsjZGVmaW5lIHRpbGVneF9sb2NhbF9yZXN1bWUgICAgICAgICAgICBVTldfT0JKKGxvY2FsX3Jlc3VtZSkKLSsjZGVmaW5lIHRpbGVneF9sb2NhbF9hZGRyX3NwYWNlX2luaXQgICBVTldfT0JKKGxvY2FsX2FkZHJfc3BhY2VfaW5pdCkKLSsKLStleHRlcm4gaW50IHRpbGVneF9sb2NhbF9yZXN1bWUgKHVud19hZGRyX3NwYWNlX3QgYXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bndfY3Vyc29yX3QgKmN1cnNvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7Ci0rCi0rZXh0ZXJuIHZvaWQgdGlsZWd4X2xvY2FsX2FkZHJfc3BhY2VfaW5pdCAodm9pZCk7Ci0rCi0rI2VuZGlmIC8qIHVud2luZF9pX2ggKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdhNzYyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi4xLmJiCkBAIC0wLDAgKzEsMjMgQEAKK3JlcXVpcmUgbGlidW53aW5kLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiMDZiYTllNjBkOTJmZDZmNTVjZDlkYWRiMDg0ZGYxOWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2YzZWNiOTBlMjhjYmU1M2ZiYTdhNGEyN2NjY2U3YWFkMTg4ZDMyMTBiYjE5NjRhOTIzYTczMWEyN2E3NWFjYiIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuc2F2YW5uYWgubm9uZ251Lm9yZy9yZWxlYXNlcy9saWJ1bndpbmQvbGlidW53aW5kLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9BZGQtQU9fUkVRVUlSRV9DQVMtdG8tZml4LWJ1aWxkLW9uLUFSTS12Ni5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJhY2t0cmFjZS1Vc2Utb25seS13aXRoLWdsaWJjLWFuZC11Y2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS14ODYtU3R1Yi1vdXQteDg2X2xvY2FsX3Jlc3VtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi1taXBzLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGQta25vYnMtdG8tZGlzYWJsZS1lbmFibGUtdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wcGMzMi1Db25zaWRlci11Y29udGV4dC1taXNtYXRjaGVzLWJldHdlZW4tZ2xpYmMtYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnVud2luZC0xLjEteDMyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLWhlYWRlci1jb25mbGljdC5wYXRjaCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtdGVzdHMgIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ny8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKK0xERkxBR1MgKz0gIi1XbCwteixyZWxybywteixub3cgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYzMTJmMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF8xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1yZXF1aXJlIGxpYnVud2luZC5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImVlZmNiNWQ3Zjc4ZmRjOGYxZWQxNzJhMjZlYTQyMDJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkZTM4ZmZiZGM4OGJkNjk0ZDEwMDgxODY1ODcxY2QyYmZiYjAyYWQ4ZWY5ZTE2MDZhZWUxOGQ2NTUzMmI5OTIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnNhdmFubmFoLm5vbmdudS5vcmcvcmVsZWFzZXMvbGlidW53aW5kL2xpYnVud2luZC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1iYWNrdHJhY2UtVXNlLW9ubHktd2l0aC1nbGliYy1hbmQtdWNsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEteDg2LVN0dWItb3V0LXg4Nl9sb2NhbF9yZXN1bWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtb24tbWlwcy1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWtub2JzLXRvLWRpc2FibGUtZW5hYmxlLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHBjMzItQ29uc2lkZXItdWNvbnRleHQtbWlzbWF0Y2hlcy1iZXR3ZWVuLWdsaWJjLWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ1bndpbmQtMS4xLXgzMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtbWlwcy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC1oZWFkZXItY29uZmxpY3QucGF0Y2giCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLXRlc3RzICIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODcvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1MREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWNiMjBiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2Vyc3BhY2UgUkNVIChyZWFkLWNvcHktdXBkYXRlKSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91cmN1IgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vbHR0bmcub3JnL3Byb2plY3QvaXNzdWVzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1NDhkMjg3MzcyODlkNzVhOGYxZTAxYmEyZmQ3ODI1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy91cmN1Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0zMjttZDU9NGRlMGQ2OGQzYTk5NzY0MzcxNTAzNmQyMjA5YWUxZDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjY5ZGFiODViNjkyOWMzNzgzMzhiOTUwNGFkYzZhZWE3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdjYjU4YTdiYTUxNTExOTgwODdmMDI1ZGM4ZDE5ZDg5MThlOWM2ZDU2NzcyZjAzOTY5NmMxMTFkOWFhZDMxOTAiCi0KLVMgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgotaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU5YzA0YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4xLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiVXNlcnNwYWNlIFJDVSAocmVhZC1jb3B5LXVwZGF0ZSkgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXJjdSIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2x0dG5nLm9yZy9wcm9qZWN0L2lzc3VlcyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTQ4ZDI4NzM3Mjg5ZDc1YThmMWUwMWJhMmZkNzgyNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvdXJjdS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MzI7bWQ1PTRkZTBkNjhkM2E5OTc2NDM3MTUwMzZkMjIwOWFlMWQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91YXRvbWljL3g4Ni5oO2JlZ2lubGluZT00O2VuZGxpbmU9MjE7bWQ1PTU4ZTUwYmJkOGEyZjA3M2JiNTUwMGU2NTU0YWYwZDBiIgorCitTUkNfVVJJID0gImh0dHA6Ly9sdHRuZy5vcmcvZmlsZXMvdXJjdS91c2Vyc3BhY2UtcmN1LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyODFhMmY5MmZkYzM5YzQwYWQ2Yjc2ZjY2MzFmZGJkNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzA5MjIwYmU0NDM1ZGMyN2ZjZDIyZDI5MTcwN2I5NGI5N2YxNTllMGM0NDJmYmNkNjBjMTY4ZjhmNzllYjA2IgorCitTID0gIiR7V09SS0RJUn0vdXNlcnNwYWNlLXJjdS0ke1BWfSIKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0NQUEZMQUdTX2FwcGVuZF9yaXNjdjY0ICA9ICIgLXB0aHJlYWQgLURfUkVFTlRSQU5UIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLUNoZWNrLWZvci1pbnRlZ2VyLW92ZXJmbG93LWluLXhzbHRBZGRUZXh0U3RyaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLUNoZWNrLWZvci1pbnRlZ2VyLW92ZXJmbG93LWluLXhzbHRBZGRUZXh0U3RyaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2FhYWNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1DaGVjay1mb3ItaW50ZWdlci1vdmVyZmxvdy1pbi14c2x0QWRkVGV4dFN0cmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLUZyb20gMDhhYjI3NzRiODcwZGUxYzdiNWE0ODY5M2RmNzVlODE1NGFkZGFlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgV2VsbG5ob2ZlciA8d2VsbG5ob2ZlckBhZXZ1bS5kZT4KLURhdGU6IFRodSwgMTIgSmFuIDIwMTcgMTU6Mzk6NTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgaW4geHNsdEFkZFRleHRTdHJpbmcKLQotTGltaXQgYnVmZmVyIHNpemUgaW4geHNsdEFkZFRleHRTdHJpbmcgdG8gSU5UX01BWC4gVGhlIGlzc3VlIGNhbiBiZQotZXhwbG9pdGVkIHRvIHRyaWdnZXIgYW4gb3V0IG9mIGJvdW5kcyB3cml0ZSBvbiA2NC1iaXQgc3lzdGVtcy4KLQotT3JpZ2luYWxseSByZXBvcnRlZCB0byBDaHJvbWl1bToKLQotaHR0cHM6Ly9jcmJ1Zy5jb20vNjc2NjIzCi0KLUNWRTogQ1ZFLTIwMTctNTAyOQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0dXMuY29tPgotCi0tLS0KLSBsaWJ4c2x0L3RyYW5zZm9ybS5jICAgICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKystLS0KLSBsaWJ4c2x0L3hzbHRJbnRlcm5hbHMuaCB8ICA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJ4c2x0L3RyYW5zZm9ybS5jIGIvbGlieHNsdC90cmFuc2Zvcm0uYwotaW5kZXggNTE5MTMzZi4uMDJiZmYzNCAxMDA2NDQKLS0tLSBhL2xpYnhzbHQvdHJhbnNmb3JtLmMKLSsrKyBiL2xpYnhzbHQvdHJhbnNmb3JtLmMKLUBAIC04MTMsMTMgKzgxMywzMiBAQCB4c2x0QWRkVGV4dFN0cmluZyh4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciBjdHh0LCB4bWxOb2RlUHRyIHRhcmdldCwKLSAgICAgICAgIHJldHVybih0YXJnZXQpOwotIAotICAgICBpZiAoY3R4dC0+bGFzdHRleHQgPT0gdGFyZ2V0LT5jb250ZW50KSB7Ci0rICAgICAgICBpbnQgbWluU2l6ZTsKLSAKLS0JaWYgKGN0eHQtPmxhc3R0dXNlICsgbGVuID49IGN0eHQtPmxhc3R0c2l6ZSkgewotKyAgICAgICAgLyogQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgYWNjb3VudGluZyBmb3IgTlVMIHRlcm1pbmF0b3IuICovCi0rICAgICAgICBpZiAobGVuID49IElOVF9NQVggLSBjdHh0LT5sYXN0dHVzZSkgewotKyAgICAgICAgICAgIHhzbHRUcmFuc2Zvcm1FcnJvcihjdHh0LCBOVUxMLCB0YXJnZXQsCi0rICAgICAgICAgICAgICAgICJ4c2x0Q29weVRleHQ6IHRleHQgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwotKyAgICAgICAgICAgIHJldHVybihOVUxMKTsKLSsgICAgICAgIH0KLSsgICAgICAgIG1pblNpemUgPSBjdHh0LT5sYXN0dHVzZSArIGxlbiArIDE7Ci0rCi0rICAgICAgICBpZiAoY3R4dC0+bGFzdHRzaXplIDwgbWluU2l6ZSkgewotIAkgICAgeG1sQ2hhciAqbmV3YnVmOwotIAkgICAgaW50IHNpemU7Ci0rICAgICAgICAgICAgaW50IGV4dHJhOwotKwotKyAgICAgICAgICAgIC8qIERvdWJsZSBidWZmZXIgc2l6ZSBidXQgaW5jcmVhc2UgYnkgYXQgbGVhc3QgMTAwIGJ5dGVzLiAqLwotKyAgICAgICAgICAgIGV4dHJhID0gbWluU2l6ZSA8IDEwMCA/IDEwMCA6IG1pblNpemU7Ci0rCi0rICAgICAgICAgICAgLyogQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cuICovCi0rICAgICAgICAgICAgaWYgKGV4dHJhID4gSU5UX01BWCAtIGN0eHQtPmxhc3R0c2l6ZSkgewotKyAgICAgICAgICAgICAgICBzaXplID0gSU5UX01BWDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgZWxzZSB7Ci0rICAgICAgICAgICAgICAgIHNpemUgPSBjdHh0LT5sYXN0dHNpemUgKyBleHRyYTsKLSsgICAgICAgICAgICB9Ci0gCi0tCSAgICBzaXplID0gY3R4dC0+bGFzdHRzaXplICsgbGVuICsgMTAwOwotLQkgICAgc2l6ZSAqPSAyOwotIAkgICAgbmV3YnVmID0gKHhtbENoYXIgKikgeG1sUmVhbGxvYyh0YXJnZXQtPmNvbnRlbnQsc2l6ZSk7Ci0gCSAgICBpZiAobmV3YnVmID09IE5VTEwpIHsKLSAJCXhzbHRUcmFuc2Zvcm1FcnJvcihjdHh0LCBOVUxMLCB0YXJnZXQsCi1kaWZmIC0tZ2l0IGEvbGlieHNsdC94c2x0SW50ZXJuYWxzLmggYi9saWJ4c2x0L3hzbHRJbnRlcm5hbHMuaAotaW5kZXggMDYwYjE3OC4uNWFkMTc3MSAxMDA2NDQKLS0tLSBhL2xpYnhzbHQveHNsdEludGVybmFscy5oCi0rKysgYi9saWJ4c2x0L3hzbHRJbnRlcm5hbHMuaAotQEAgLTE3NTQsOCArMTc1NCw4IEBAIHN0cnVjdCBfeHNsdFRyYW5zZm9ybUNvbnRleHQgewotICAgICAgKiBTcGVlZCBvcHRpbWl6YXRpb24gd2hlbiBjb2FsZXNjaW5nIHRleHQgbm9kZXMKLSAgICAgICovCi0gICAgIGNvbnN0IHhtbENoYXIgICpsYXN0dGV4dDsJCS8qIGxhc3QgdGV4dCBub2RlIGNvbnRlbnQgKi8KLS0gICAgdW5zaWduZWQgaW50ICAgIGxhc3R0c2l6ZTsJCS8qIGxhc3QgdGV4dCBub2RlIHNpemUgKi8KLS0gICAgdW5zaWduZWQgaW50ICAgIGxhc3R0dXNlOwkJLyogbGFzdCB0ZXh0IG5vZGUgdXNlICovCi0rICAgIGludCAgICAgICAgICAgICBsYXN0dHNpemU7CQkvKiBsYXN0IHRleHQgbm9kZSBzaXplICovCi0rICAgIGludCAgICAgICAgICAgICBsYXN0dHVzZTsJCS8qIGxhc3QgdGV4dCBub2RlIHVzZSAqLwotICAgICAvKgotICAgICAgKiBQZXIgQ29udGV4dCBEZWJ1Z2dpbmcKLSAgICAgICovCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1MaW5rLWxpYnJhcmllcy13aXRoLWxpYm0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0LzAwMDEtTGluay1saWJyYXJpZXMtd2l0aC1saWJtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmZmZWJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1MaW5rLWxpYnJhcmllcy13aXRoLWxpYm0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDQ4N2UyZjdlMzVkYWQzZGVlYzc5NzhjZTQ0NzhhM2Q0ZWE1MDcwZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogRnJpLCAxMCBGZWIgMjAxNyAxNDoyNjo1OSArMDIwMAotU3ViamVjdDogW1BBVENIXSBMaW5rIGxpYnJhcmllcyB3aXRoIGxpYm0KLQotT3RoZXJ3aXNlIGxpbmtpbmcgdGhlIHJlc3VsdGluZyBsaWJyYXJpZXMgdG8gYSBiaW5hcnkgKGUuZy4geHNsdHByb2MpCi1mYWlscyB3aGVuIHVzaW5nIGdvbGQgbGlua2VyOgotfMKgLi4vbGlieHNsdC8ubGlicy9saWJ4c2x0LnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAnZm1vZCcKLXzCoC4uL2xpYnhzbHQvLmxpYnMvbGlieHNsdC5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3BvdycKLXzCoC4uL2xpYmV4c2x0Ly5saWJzL2xpYmV4c2x0LnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAnZmxvb3InCi18wqBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW21haWxpbmcgbGlzdCwgRmViIDEwIDIwMTddCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gbGliZXhzbHQvTWFrZWZpbGUuYW0gfCAyICstCi0gbGlieHNsdC9NYWtlZmlsZS5hbSAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJleHNsdC9NYWtlZmlsZS5hbSBiL2xpYmV4c2x0L01ha2VmaWxlLmFtCi1pbmRleCAxY2Y1MTM4Li41NDQ5NTI0IDEwMDY0NAotLS0tIGEvbGliZXhzbHQvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmV4c2x0L01ha2VmaWxlLmFtCi1AQCAtMjcsNyArMjcsNyBAQCBsaWJleHNsdF9sYV9TT1VSQ0VTID0gICAgICAgICAgICAgICAgICAgXAotIAlsaWJleHNsdC5oCQkJXAotIAlkeW5hbWljLmMKLSAKLS1saWJleHNsdF9sYV9MSUJBREQgPSAkKHRvcF9idWlsZGRpcikvbGlieHNsdC9saWJ4c2x0LmxhICQoRVhUUkFfTElCUykgJChMSUJHQ1JZUFRfTElCUykKLStsaWJleHNsdF9sYV9MSUJBREQgPSAkKHRvcF9idWlsZGRpcikvbGlieHNsdC9saWJ4c2x0LmxhICQoRVhUUkFfTElCUykgJChMSUJHQ1JZUFRfTElCUykgJChNX0xJQlMpCi0gbGliZXhzbHRfbGFfTERGTEFHUyA9ICQoV0lOMzJfRVhUUkFfTERGTEFHUykgLXZlcnNpb24taW5mbyAkKExJQkVYU0xUX1ZFUlNJT05fSU5GTykKLSAKLSBtYW5fTUFOUyA9IGxpYmV4c2x0LjMKLWRpZmYgLS1naXQgYS9saWJ4c2x0L01ha2VmaWxlLmFtIGIvbGlieHNsdC9NYWtlZmlsZS5hbQotaW5kZXggZDlmZWQ2OC4uOWQ0NGMzZCAxMDA2NDQKLS0tLSBhL2xpYnhzbHQvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYnhzbHQvTWFrZWZpbGUuYW0KLUBAIC02Miw3ICs2Miw3IEBAIGVsc2UKLSBMSUJYU0xUX1ZFUlNJT05fU0NSSVBUID0KLSBlbmRpZgotIAotLWxpYnhzbHRfbGFfTElCQUREID0gJChMSUJYTUxfTElCUykgJChFWFRSQV9MSUJTKQotK2xpYnhzbHRfbGFfTElCQUREID0gJChMSUJYTUxfTElCUykgJChNX0xJQlMpICQoRVhUUkFfTElCUykKLSBsaWJ4c2x0X2xhX0xERkxBR1MgPQkJCQkJXAotIAkJJChXSU4zMl9FWFRSQV9MREZMQUdTKQkJCVwKLSAJCSQoTElCWFNMVF9WRVJTSU9OX1NDUklQVCkJCVwKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtZ2NyeXB0LWFuZC1saWJ4bWwyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtZ2NyeXB0LWFuZC1saWJ4bWwyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTg2NzA2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLWdjcnlwdC1hbmQtbGlieG1sMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi1Gcm9tIGVkNzFhYzk1NDhhMmJiNmVjZDJkYzVhZDg4MGM2MDQ5NzVmODcyYjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMiBKdW4gMjAxNiAxNDoyMDowNCArMDMwMAotU3ViamVjdDogW1BBVENIXSBVc2UgcGtnLWNvbmZpZyB0byBmaW5kIGdjcnlwdCBhbmQgbGlieG1sMi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtsaWJ4bWwyIGlzIHVwc3RyZWFtYWJsZV0KLQotUlAgMjAxNC81LzIyCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmluIHwgNzAgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA4YmRmNDVhLi4wYjJiMzEyIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0zNzcsNiArMzc3LDggQEAgQUNfU1VCU1QocHl0aG9uZGlyKQotIEFDX1NVQlNUKFBZVEhPTl9TVUJESVIpCi0gQUNfU1VCU1QoUFlUSE9OX0xJQlMpCi0gCi0rUEtHX1BST0dfUEtHX0NPTkZJRwotKwotIEFDX0FSR19XSVRIKGNyeXB0bywgWyAgLS13aXRoLWNyeXB0byAgICAgICAgICAgQWRkIGNyeXB0byBzdXBwb3J0IHRvIGV4c2x0IChvbildKQotIFdJVEhfQ1JZUFRPPTAKLSBDUllQVE9fVEVTVERJUj0KLUBAIC0zOTQsMjcgKzM5NiwxNCBAQCBjYXNlICRob3N0IGluCi0gICAgIENSWVBUT19URVNURElSPWNyeXB0bwotICAgICA7OwotICAgKikKLS0gICAgQUNfUEFUSF9UT09MKExJQkdDUllQVF9DT05GSUcsIGxpYmdjcnlwdC1jb25maWcsIG5vKQotLSAgICBpZiB0ZXN0ICIkTElCR0NSWVBUX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KLS0gICAgICBMSUJHQ1JZUFRfVkVSU0lPTj1gJExJQkdDUllQVF9DT05GSUcgLS12ZXJzaW9uYAotLSAgICAgIGlmIHRlc3QgVkVSU0lPTl9UT19OVU1CRVIoZWNobyAkTElCR0NSWVBUX1ZFUlNJT04pIC1sdCBWRVJTSU9OX1RPX05VTUJFUihlY2hvICIxLjEuNDIiKQotLSAgICAgIHRoZW4KLS0gICAgICAgIExJQkdDUllQVF9DRkxBR1M9IiIKLS0gICAgICAgIExJQkdDUllQVF9MSUJTPSIiCi0tICAgICAgICBlY2hvICdnY3J5cHQgbGlicmFyeSB2ZXJzaW9uIDwgMS4xLjQyIC0gQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBub3QgYmUgYXZhaWxhYmxlLicKLS0gICAgICBlbHNlCi0tICAgICAgICBMSUJHQ1JZUFRfQ0ZMQUdTPWAkTElCR0NSWVBUX0NPTkZJRyAkbGliZ2NyeXB0X2NvbmZpZ19hcmdzIC0tY2ZsYWdzYAotLSAgICAgICAgTElCR0NSWVBUX0xJQlM9YCRMSUJHQ1JZUFRfQ09ORklHICRsaWJnY3J5cHRfY29uZmlnX2FyZ3MgLS1saWJzYAotLSAgICAgICAgQUNfREVGSU5FKEhBVkVfR0NSWVBULCAxLCBbRGVmaW5lIGlmIGdjcnlwdCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS5dKQotLSAgICAgICAgZWNobyAnQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBiZSBhdmFpbGFibGUuJwotKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHQ1JZUFQsIFtsaWJnY3J5cHQgPj0gMS4xLjQyXSwgWwotKyAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9HQ1JZUFQsIDEsIFtEZWZpbmUgaWYgZ2NyeXB0IGxpYnJhcnkgaXMgYXZhaWxhYmxlLl0pCi0rICAgICAgICAgIGVjaG8gJ0NyeXB0byBleHRlbnNpb25zIHdpbGwgYmUgYXZhaWxhYmxlLicKLSAgICAgICAgIFdJVEhfQ1JZUFRPPTEKLSAgICAgICAgIENSWVBUT19URVNURElSPWNyeXB0bwotLSAgICAgIGZpCi0tICAgIGVsc2UKLS0gICAgICBMSUJHQ1JZUFRfQ0ZMQUdTPSIiCi0tICAgICAgTElCR0NSWVBUX0xJQlM9IiIKLS0gICAgICBlY2hvICdDcnlwdG8gZXh0ZW5zaW9ucyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIEluc3RhbGwgbGliZ2NyeXB0IGFuZCByZWNvbmZpZ3VyZSB0byBtYWtlIGF2YWlsYWJsZS4nCi0tICAgIGZpCi0rICAgICAgIF0sIFsKLSsgICAgICAgICAgZWNobyAnQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBub3QgYmUgYXZhaWxhYmxlLiBJbnN0YWxsIGxpYmdjcnlwdCA+PSAxLjEuNDIgYW5kIHJlY29uZmlndXJlIHRvIG1ha2UgYXZhaWxhYmxlLicKLSsgICAgICAgIF0pCi0gZXNhYwotIGZpCi0gQUNfU1VCU1QoV0lUSF9DUllQVE8pCi1AQCAtNDc2LDI0ICs0NjUsOCBAQCBkbmwgb3JpZ2luYWwgd29yayAtIE1hdGhpZXUgTGFjYWdlIDMwLzAzLzIwMDAKLSBkbmwgc29tZSB0d2Vha2luZyAtIERhdmlkIEjDpHJkZW1hbiAzMC8xMC8yMDAxCi0gZG5sCi0gCi0tTElCWE1MX0NPTkZJR19QUkVGSVg9IiIKLSBMSUJYTUxfU1JDPSIiCi0gCi0tQUNfQVJHX1dJVEgobGlieG1sLXByZWZpeCwKLS0gICAgICAgIFsgIC0td2l0aC1saWJ4bWwtcHJlZml4PVtQRlhdCQlTcGVjaWZ5IGxvY2F0aW9uIG9mIGxpYnhtbCBjb25maWddLAotLQlMSUJYTUxfQ09ORklHX1BSRUZJWD0kd2l0aHZhbAotLSkKLS0gICAgICAgIAotLUFDX0FSR19XSVRIKGxpYnhtbC1pbmNsdWRlLXByZWZpeCwKLS0gICAgICAgIFsgIC0td2l0aC1saWJ4bWwtaW5jbHVkZS1wcmVmaXg9W1BGWF0JU3BlY2lmeSBsb2NhdGlvbiBvZiBsaWJ4bWwgaGVhZGVyc10sCi0tICAgICAgICBMSUJYTUxfQ0ZMQUdTPSItSSR3aXRodmFsIgotLSkKLS0KLS1BQ19BUkdfV0lUSChsaWJ4bWwtbGlicy1wcmVmaXgsCi0tICAgICAgICBbICAtLXdpdGgtbGlieG1sLWxpYnMtcHJlZml4PVtQRlhdCVNwZWNpZnkgbG9jYXRpb24gb2YgbGlieG1sIGxpYnNdLAotLSAgICAgICAgTElCWE1MX0xJQlM9Ii1MJHdpdGh2YWwiCi0tKQotLQotIEFDX0FSR19XSVRIKGxpYnhtbC1zcmMsCi0gCVsgIC0td2l0aC1saWJ4bWwtc3JjPVtESVJdICAgICAgICAgICAgICBGb3IgbGlieG1sIHRoYXRzIG5vdCBpbnN0YWxsZWQgeWV0IChzZXRzIGFsbCB0aHJlZSBhYm92ZSldLAotIAlMSUJYTUxfU1JDPSIkd2l0aHZhbCIKLUBAIC01NTYsMjggKzUyOSw5IEBAIHRoZW4KLSAJZmkKLSBmaQotIAotLWRubAotLWRubCBtYWtlIHN1cmUgeG1sMi1jb25maWcgaXMgZXhlY3V0YWJsZSwKLS1kbmwgdGVzdCB2ZXJzaW9uIGFuZCBpbml0IG91ciB2YXJpYWJsZXMKLS1kbmwKLS0KLS1pZiAke1hNTF9DT05GSUd9IC0tbGlicyBwcmludCA+IC9kZXYvbnVsbCAyPiYxCi0tdGhlbgotLQlYTUxWRVJTPWAkWE1MX0NPTkZJRyAtLXZlcnNpb25gCi0tCWlmIHRlc3QgVkVSU0lPTl9UT19OVU1CRVIoZWNobyAkWE1MVkVSUykgLWdlIFZFUlNJT05fVE9fTlVNQkVSKGVjaG8gJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OKQotLQl0aGVuCi0tCQlBQ19NU0dfUkVTVUxUKCRYTUxWRVJTIGZvdW5kKQotLQllbHNlCi0tCQlBQ19NU0dfRVJST1IoVmVyc2lvbiAkWE1MVkVSUyBmb3VuZC4gWW91IG5lZWQgYXQgbGVhc3QgbGlieG1sMiAkTElCWE1MX1JFUVVJUkVEX1ZFUlNJT04gZm9yIHRoaXMgdmVyc2lvbiBvZiBsaWJ4c2x0KQotLQlmaQotLQlMSUJYTUxfTElCUz0iJExJQlhNTF9MSUJTIGAkWE1MX0NPTkZJRyAtLWxpYnNgIgotLQlpZiB0ZXN0ICJ4JExJQlhNTF9TUkMiID0gIngiOyB0aGVuCi0tCQlMSUJYTUxfQ0ZMQUdTPSIkTElCWE1MX0NGTEFHUyBgJFhNTF9DT05GSUcgLS1jZmxhZ3NgIgotLQlmaQotLWVsc2UKLS0JQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCBsaWJ4bWwyIGFueXdoZXJlLCBjaGVjayBmdHA6Ly94bWxzb2Z0Lm9yZy8uXSkKLS1maQotLQotK1BLR19DSEVDS19NT0RVTEVTKExJQlhNTCwgW2xpYnhtbC0yLjAgPj0gJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OXSwsCi0rICAgIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxpYnhtbC0yLjAgPj0gJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OIGFueXdoZXJlLCBjaGVjayBmdHA6Ly94bWxzb2Z0Lm9yZy8uXSldCi0rKQotIAotIEFDX1NVQlNUKENGTEFHUykKLSBBQ19TVUJTVChDUFBGTEFHUykKLUBAIC02MDIsNyArNTU2LDcgQEAgZmkKLSAKLSBpZiB0ZXN0ICIkd2l0aF9wbHVnaW5zIiA9ICJ5ZXMiIDsgdGhlbgotICAgQUNfTVNHX0NIRUNLSU5HKFtsaWJ4bWwyIG1vZHVsZSBzdXBwb3J0XSkKLS0gIFdJVEhfTU9EVUxFUz0iYCRYTUxfQ09ORklHIC0tbW9kdWxlc2AiCi0rICBXSVRIX01PRFVMRVM9ImAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPW1vZHVsZXMgbGlieG1sLTIuMGAiCi0gICBpZiB0ZXN0ICIke1dJVEhfTU9EVUxFU30iID0gIjEiOyB0aGVuCi0gICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgZWxzZQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0L3BrZ2NvbmZpZ19maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0L3BrZ2NvbmZpZ19maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YTgwMTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC9wa2djb25maWdfZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1JbmRleDogbGlieHNsdC0xLjEuMjcvbGliZXhzbHQucGMuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4c2x0LTEuMS4yNy5vcmlnL2xpYmV4c2x0LnBjLmluCi0rKysgbGlieHNsdC0xLjEuMjcvbGliZXhzbHQucGMuaW4KLUBAIC04LDUgKzgsNSBAQCBOYW1lOiBsaWJleHNsdAotIFZlcnNpb246IEBMSUJFWFNMVF9WRVJTSU9OQAotIERlc2NyaXB0aW9uOiBFWFNMVCBFeHRlbnNpb24gbGlicmFyeQotIFJlcXVpcmVzOiBsaWJ4bWwtMi4wCi0tTGliczogQEVYU0xUX0xJQkRJUkAgQEVYU0xUX0xJQlNACi0rTGliczogLWxleHNsdCBARVhTTFRfTElCRElSQCBARVhTTFRfTElCU0AKLSBDZmxhZ3M6IEBFWFNMVF9JTkNMVURFRElSQAotSW5kZXg6IGxpYnhzbHQtMS4xLjI3L2xpYnhzbHQucGMuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4c2x0LTEuMS4yNy5vcmlnL2xpYnhzbHQucGMuaW4KLSsrKyBsaWJ4c2x0LTEuMS4yNy9saWJ4c2x0LnBjLmluCi1AQCAtOCw1ICs4LDUgQEAgTmFtZTogbGlieHNsdAotIFZlcnNpb246IEBWRVJTSU9OQAotIERlc2NyaXB0aW9uOiBYU0xUIGxpYnJhcnkgdmVyc2lvbiAyLgotIFJlcXVpcmVzOiBsaWJ4bWwtMi4wCi0tTGliczogQFhTTFRfTElCRElSQCBAWFNMVF9MSUJTQCBARVhUUkFfTElCU0AKLStMaWJzOiAtbHhzbHQgQFhTTFRfTElCRElSQCBAWFNMVF9MSUJTQCBARVhUUkFfTElCU0AKLSBDZmxhZ3M6IEBYU0xUX0lOQ0xVREVESVJACmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4yOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjExYmMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBYU0xUIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8veG1sc29mdC5vcmcvWFNMVC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTBjZDlhMDdhZmJlYjI0MDI2YzliMDNhZWNmZWJhNDU4IgotCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImxpYnhtbDIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3htbHNvZnQub3JnL3NvdXJjZXMvbGlieHNsdC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnX2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtZ2NyeXB0LWFuZC1saWJ4bWwyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTGluay1saWJyYXJpZXMtd2l0aC1saWJtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2stZm9yLWludGVnZXItb3ZlcmZsb3ctaW4teHNsdEFkZFRleHRTdHJpbmcucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMTI5ZDNjNDRjMDIyZGUzYjlkY2Y2ZDZmMjg4ZDcyZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNTk3NmUzODU3ODM3ZTc2MTdiMjlmMjI0OWViYjVlZWFjMzRlMjQ5MjA4ZDMxZjFmYmY3YTZiYTdhNDA5MGNlIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsaWJ4c2x0LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1TID0gIiR7V09SS0RJUn0vbGlieHNsdC0ke1BWfSIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS94c2x0LWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBsaWJfcGFja2FnZQotCi0jIFdlIGRvbid0IERFUEVORCBvbiBiaW51dGlscyBmb3IgYW5zaWRlY2wuaCBzbyBlbnN1cmUgd2UgZG9uJ3QgdXNlIHRoZSBoZWFkZXIKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlzZWQgLWkgLWUgJ3MvYW5zaWRlY2wuaC8vJyAke1N9L2NvbmZpZ3VyZS5pbgotCi0JIyBUaGUgdGltZXN0YW1wcyBpbiB0aGUgMS4xLjI4IHRhcmJhbGwgYXJlIG1lc3NlZCB1cCBjYXVzaW5nIHRoaXMgZmlsZSB0bwotCSMgYXBwZWFyIG91dCBvZiBkYXRlLiAgVG91Y2ggaXQgc28gdGhhdCB3ZSBkb24ndCB0cnkgdG8gcmVnZW5lcmF0ZSBpdC4KLQl0b3VjaCAke1N9L2RvYy94c2x0cHJvYy4xCi19Ci0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtcHl0aG9uIC0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbWVtLWRlYnVnIC0td2l0aG91dC1jcnlwdG8iCi0jIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgcmVjaXBlIGhhZCAke1BOfS11dGlscwotUlBST1ZJREVTXyR7UE59LWJpbiArPSAiJHtQTn0tdXRpbHMiCi1SQ09ORkxJQ1RTXyR7UE59LWJpbiArPSAiJHtQTn0tdXRpbHMiCi1SUkVQTEFDRVNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKLQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L3hzbHRwcm9jIFhNTF9DQVRBTE9HX0ZJTEVTPSR7c3lzY29uZmRpcn0veG1sL2NhdGFsb2cueG1sCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlieHNsdC1wbHVnaW5zIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veHNsdENvbmYuc2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmEwM2Y3NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjMyLmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiR05PTUUgWFNMVCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3htbHNvZnQub3JnL1hTTFQvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0wY2Q5YTA3YWZiZWIyNDAyNmM5YjAzYWVjZmViYTQ1OCIKKworU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJsaWJ4bWwyIgorCitTUkNfVVJJID0gImh0dHA6Ly94bWxzb2Z0Lm9yZy9zb3VyY2VzL2xpYnhzbHQtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjFmYzcyZjk4ZTk4YmY0NDQzZjE2NTExNjVmM2FhMTQ2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUyNmVjZDBhYmFmNGE3Nzg5MDQxNjIyYzM5NTBjMGU3ZjJjNGM4ODM1NDcxNTE1ZmQ3N2VlYzY4NGEzNTU0NjAiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYnhzbHQtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK1MgPSAiJHtXT1JLRElSfS9saWJ4c2x0LSR7UFZ9IgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3hzbHQtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIGxpYl9wYWNrYWdlCisKKyMgV2UgZG9uJ3QgREVQRU5EIG9uIGJpbnV0aWxzIGZvciBhbnNpZGVjbC5oIHNvIGVuc3VyZSB3ZSBkb24ndCB1c2UgdGhlIGhlYWRlcgorZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXNlZCAtaSAtZSAncy9hbnNpZGVjbC5oLy8nICR7U30vY29uZmlndXJlLmFjCisKKwkjIFRoZSB0aW1lc3RhbXBzIGluIHRoZSAxLjEuMjggdGFyYmFsbCBhcmUgbWVzc2VkIHVwIGNhdXNpbmcgdGhpcyBmaWxlIHRvCisJIyBhcHBlYXIgb3V0IG9mIGRhdGUuICBUb3VjaCBpdCBzbyB0aGF0IHdlIGRvbid0IHRyeSB0byByZWdlbmVyYXRlIGl0LgorCXRvdWNoICR7U30vZG9jL3hzbHRwcm9jLjEKK30KKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1weXRob24gLS13aXRob3V0LWRlYnVnIC0td2l0aG91dC1tZW0tZGVidWcgLS13aXRob3V0LWNyeXB0byIKKyMgb2xkZXIgdmVyc2lvbnMgb2YgdGhpcyByZWNpcGUgaGFkICR7UE59LXV0aWxzCitSUFJPVklERVNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKK1JDT05GTElDVFNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKK1JSRVBMQUNFU18ke1BOfS1iaW4gKz0gIiR7UE59LXV0aWxzIgorCisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0veHNsdHByb2MgWE1MX0NBVEFMT0dfRklMRVM9JHtzeXNjb25mZGlyfS94bWwvY2F0YWxvZy54bWwKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJ4c2x0LXBsdWdpbnMiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94c2x0Q29uZi5zaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem8vYWNpbmNsdWRlLm00IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem8vYWNpbmNsdWRlLm00CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGQyY2NkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvL2FjaW5jbHVkZS5tNAorKysgL2Rldi9udWxsCkBAIC0xLDM1OCArMCwwIEBACi0KLUFDX0RFRlVOKFttZnhfQUNDX0NIRUNLX0VORElBTl0sIFsKLUFDX0NfQklHRU5ESUFOKFtBQ19ERUZJTkUoQUNDX0FCSV9CSUdfRU5ESUFOLDEsW0RlZmluZSB0byAxIGlmIHlvdXIgbWFjaGluZSBpcyBiaWcgZW5kaWFuLl0pXSxbQUNfREVGSU5FKEFDQ19BQklfTElUVExFX0VORElBTiwxLFtEZWZpbmUgdG8gMSBpZiB5b3VyIG1hY2hpbmUgaXMgbGl0dGxlIGVuZGlhbi5dKV0pCi1dKSMKLQotQUNfREVGVU4oW21meF9BQ0NfQ0hFQ0tfSEVBREVSU10sIFsKLUFDX0hFQURFUl9USU1FCi1BQ19DSEVDS19IRUFERVJTKFthc3NlcnQuaCBjdHlwZS5oIGRpcmVudC5oIGVycm5vLmggZmNudGwuaCBmbG9hdC5oIGxpbWl0cy5oIG1hbGxvYy5oIG1lbW9yeS5oIHNldGptcC5oIHNpZ25hbC5oIHN0ZGFyZy5oIHN0ZGRlZi5oIHN0ZGludC5oIHN0ZGlvLmggc3RkbGliLmggc3RyaW5nLmggc3RyaW5ncy5oIHRpbWUuaCB1bmlzdGQuaCB1dGltZS5oIHN5cy9zdGF0Lmggc3lzL3RpbWUuaCBzeXMvdHlwZXMuaCBzeXMvd2FpdC5oXSkKLV0pIwotCi1BQ19ERUZVTihbbWZ4X0FDQ19DSEVDS19GVU5DU10sIFsKLUFDX0NIRUNLX0ZVTkNTKGFjY2VzcyBhbGxvY2EgYXRleGl0IGF0b2kgYXRvbCBjaG1vZCBjaG93biBjdGltZSBkaWZmdGltZSBmc3RhdCBnZXR0aW1lb2ZkYXkgZ210aW1lIGxvY2FsdGltZSBsb25nam1wIGxzdGF0IG1lbWNtcCBtZW1jcHkgbWVtbW92ZSBtZW1zZXQgbWt0aW1lIHFzb3J0IHJhaXNlIHNldGptcCBzaWduYWwgc25wcmludGYgc3RyY2FzZWNtcCBzdHJjaHIgc3RyZHVwIHN0cmVycm9yIHN0cmZ0aW1lIHN0cmljbXAgc3RybmNhc2VjbXAgc3RybmljbXAgc3RycmNociBzdHJzdHIgdGltZSB1bWFzayB1dGltZSB2c25wcmludGYpCi1dKSMKLQotCi1BQ19ERUZVTihbbWZ4X0FDQ19DSEVDS19TSVpFT0ZdLCBbCi1BQ19DSEVDS19TSVpFT0Yoc2hvcnQpCi1BQ19DSEVDS19TSVpFT0YoaW50KQotQUNfQ0hFQ0tfU0laRU9GKGxvbmcpCi0KLUFDX0NIRUNLX1NJWkVPRihsb25nIGxvbmcpCi1BQ19DSEVDS19TSVpFT0YoX19pbnQxNikKLUFDX0NIRUNLX1NJWkVPRihfX2ludDMyKQotQUNfQ0hFQ0tfU0laRU9GKF9faW50NjQpCi0KLUFDX0NIRUNLX1NJWkVPRih2b2lkICopCi1BQ19DSEVDS19TSVpFT0Yoc2l6ZV90KQotQUNfQ0hFQ0tfU0laRU9GKHB0cmRpZmZfdCkKLV0pIwotCi0KLSMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIC8vIENoZWNrIGZvciBBQ0NfY29uZm9ybWFuY2UKLSMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1BQ19ERUZVTihbbWZ4X0FDQ19BQ0NDSEtdLCBbCi1tZnhfdG1wPSQxCi1tZnhfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKLWRubCBpbiBNYWtlZmlsZS5pbiAkKElOQ0xVREVTKSB3aWxsIGJlIGJlZm9yZSAkKENQUEZMQUdTKSwgc28gd2UgbWltaWMgdGhpcyBoZXJlCi10ZXN0ICJYJG1meF90bXAiID0gIlgiIHx8IENQUEZMQUdTPSIkbWZ4X3RtcCAkQ1BQRkxBR1MiCi0KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB5b3VyIGNvbXBpbGVyIHBhc3NlcyB0aGUgQUNDIGNvbmZvcm1hbmNlIHRlc3RdKQotCi1BQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1BST0dSQU0oCi1bWyNkZWZpbmUgQUNDX0NPTkZJR19OT19IRUFERVIgMQotI2luY2x1ZGUgImFjYy9hY2MuaCIKLSNpbmNsdWRlICJhY2MvYWNjX2luY2QuaCIKLSN1bmRlZiBBQ0NDSEtfQVNTRVJUCi0jZGVmaW5lIEFDQ0NIS19BU1NFUlQoZXhwcikgICAgIEFDQ19DT01QSUxFX1RJTUVfQVNTRVJUX0hFQURFUihleHByKQotI2luY2x1ZGUgImFjYy9hY2NfY2hrLmNoIgotI3VuZGVmIEFDQ0NIS19BU1NFUlQKLXN0YXRpYyB2b2lkIHRlc3RfYWNjX2NvbXBpbGVfdGltZV9hc3NlcnQodm9pZCkgewotI2RlZmluZSBBQ0NDSEtfQVNTRVJUKGV4cHIpICAgICBBQ0NfQ09NUElMRV9USU1FX0FTU0VSVChleHByKQotI2luY2x1ZGUgImFjYy9hY2NfY2hrLmNoIgotI3VuZGVmIEFDQ0NIS19BU1NFUlQKLX0KLSN1bmRlZiBOREVCVUcKLSNpbmNsdWRlIDxhc3NlcnQuaD4KLXN0YXRpYyBpbnQgdGVzdF9hY2NfcnVuX3RpbWVfYXNzZXJ0KGludCByKSB7Ci0jZGVmaW5lIEFDQ0NIS19BU1NFUlQoZXhwcikgICAgIGFzc2VydChleHByKTsKLSNpbmNsdWRlICJhY2MvYWNjX2Noay5jaCIKLSN1bmRlZiBBQ0NDSEtfQVNTRVJUCi1yZXR1cm4gcjsKLX0KLV1dLCBbWwotdGVzdF9hY2NfY29tcGlsZV90aW1lX2Fzc2VydCgpOwotaWYgKHRlc3RfYWNjX3J1bl90aW1lX2Fzc2VydCgxKSAhPSAxKSByZXR1cm4gMTsKLV1dCi0pXSkKLQotbWZ4X3RtcD1GQUlMRUQKLV9BQ19DT01QSUxFX0lGRUxTRShbXSwgW21meF90bXA9eWVzXSkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19leHQgY29uZnRlc3QuJGFjX29iamV4dAotCi1DUFBGTEFHUz0kbWZ4X3NhdmVfQ1BQRkxBR1MKLQotQUNfTVNHX1JFU1VMVChbJG1meF90bXBdKQotY2FzZSB4JG1meF90bXAgaW4KLSAgeHBhc3NlZCB8IHh5ZXMpIDs7Ci0gICopCi0gICAgQUNfTVNHX05PVElDRShbXSkKLSAgICBBQ19NU0dfTk9USUNFKFtZb3VyIGNvbXBpbGVyIGZhaWxlZCB0aGUgQUNDIGNvbmZvcm1hbmNlIHRlc3QgLSBmb3IgZGV0YWlscyBzZWUgXSkKLSAgICBBQ19NU0dfTk9USUNFKFtgY29uZmlnLmxvZycuIFBsZWFzZSBjaGVjayB0aGF0IGxvZyBmaWxlIGFuZCBjb25zaWRlciBzZW5kaW5nXSkKLSAgICBBQ19NU0dfTk9USUNFKFthIHBhdGNoIG9yIGJ1Zy1yZXBvcnQgdG8gPCR7UEFDS0FHRV9CVUdSRVBPUlR9Pi5dKQotICAgIEFDX01TR19OT1RJQ0UoW1RoYW5rcyBmb3IgeW91ciBzdXBwb3J0Ll0pCi0gICAgQUNfTVNHX05PVElDRShbXSkKLSAgICBBQ19NU0dfRVJST1IoW0FDQyBjb25mb3JtYW5jZSB0ZXN0IGZhaWxlZC4gU3RvcC5dKQotZG5sICAgIEFTX0VYSVQKLSAgICA7OwotZXNhYwotXSkjIG1meF9BQ0NfQUNDQ0hLCi0KLQotIyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgLy8gQ2hlY2sgZm9yIEFDQ19jb25mb3JtYW5jZQotIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLUFDX0RFRlVOKFttZnhfTUlOSUFDQ19BQ0NDSEtdLCBbCi1tZnhfdG1wPSQxCi1tZnhfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKLWRubCBpbiBNYWtlZmlsZS5pbiAkKElOQ0xVREVTKSB3aWxsIGJlIGJlZm9yZSAkKENQUEZMQUdTKSwgc28gd2UgbWltaWMgdGhpcyBoZXJlCi10ZXN0ICJYJG1meF90bXAiID0gIlgiIHx8IENQUEZMQUdTPSIkbWZ4X3RtcCAkQ1BQRkxBR1MiCi0KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB5b3VyIGNvbXBpbGVyIHBhc3NlcyB0aGUgQUNDIGNvbmZvcm1hbmNlIHRlc3RdKQotCi1BQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1BST0dSQU0oCi1bWyNkZWZpbmUgQUNDX0NPTkZJR19OT19IRUFERVIgMQotI2RlZmluZSBBQ0NfV0FOVF9BQ0NfSU5DRF9IIDEKLSNpbmNsdWRlICQyCi0KLSNkZWZpbmUgQUNDX1dBTlRfQUNDX0NIS19DSCAxCi0jdW5kZWYgQUNDQ0hLX0FTU0VSVAotI2RlZmluZSBBQ0NDSEtfQVNTRVJUKGV4cHIpICAgICBBQ0NfQ09NUElMRV9USU1FX0FTU0VSVF9IRUFERVIoZXhwcikKLSNpbmNsdWRlICQyCi0KLSNkZWZpbmUgQUNDX1dBTlRfQUNDX0NIS19DSCAxCi0jdW5kZWYgQUNDQ0hLX0FTU0VSVAotI2RlZmluZSBBQ0NDSEtfQVNTRVJUKGV4cHIpICAgICBBQ0NfQ09NUElMRV9USU1FX0FTU0VSVChleHByKQotc3RhdGljIHZvaWQgdGVzdF9hY2NfY29tcGlsZV90aW1lX2Fzc2VydCh2b2lkKSB7Ci0jaW5jbHVkZSAkMgotfQotCi0jdW5kZWYgTkRFQlVHCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jZGVmaW5lIEFDQ19XQU5UX0FDQ19DSEtfQ0ggMQotI3VuZGVmIEFDQ0NIS19BU1NFUlQKLSNkZWZpbmUgQUNDQ0hLX0FTU0VSVChleHByKSAgYXNzZXJ0KGV4cHIpOwotc3RhdGljIGludCB0ZXN0X2FjY19ydW5fdGltZV9hc3NlcnQoaW50IHIpIHsKLSNpbmNsdWRlICQyCi1yZXR1cm4gcjsKLX0KLV1dLCBbWwotdGVzdF9hY2NfY29tcGlsZV90aW1lX2Fzc2VydCgpOwotaWYgKHRlc3RfYWNjX3J1bl90aW1lX2Fzc2VydCgxKSAhPSAxKSByZXR1cm4gMTsKLV1dCi0pXSkKLQotbWZ4X3RtcD1GQUlMRUQKLV9BQ19DT01QSUxFX0lGRUxTRShbXSwgW21meF90bXA9eWVzXSkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19leHQgY29uZnRlc3QuJGFjX29iamV4dAotCi1DUFBGTEFHUz0kbWZ4X3NhdmVfQ1BQRkxBR1MKLQotQUNfTVNHX1JFU1VMVChbJG1meF90bXBdKQotY2FzZSB4JG1meF90bXAgaW4KLSAgeHBhc3NlZCB8IHh5ZXMpIDs7Ci0gICopCi0gICAgQUNfTVNHX05PVElDRShbXSkKLSAgICBBQ19NU0dfTk9USUNFKFtZb3VyIGNvbXBpbGVyIGZhaWxlZCB0aGUgQUNDIGNvbmZvcm1hbmNlIHRlc3QgLSBmb3IgZGV0YWlscyBzZWUgXSkKLSAgICBBQ19NU0dfTk9USUNFKFtgY29uZmlnLmxvZycuIFBsZWFzZSBjaGVjayB0aGF0IGxvZyBmaWxlIGFuZCBjb25zaWRlciBzZW5kaW5nXSkKLSAgICBBQ19NU0dfTk9USUNFKFthIHBhdGNoIG9yIGJ1Zy1yZXBvcnQgdG8gPCR7UEFDS0FHRV9CVUdSRVBPUlR9Pi5dKQotICAgIEFDX01TR19OT1RJQ0UoW1RoYW5rcyBmb3IgeW91ciBzdXBwb3J0Ll0pCi0gICAgQUNfTVNHX05PVElDRShbXSkKLSAgICBBQ19NU0dfRVJST1IoW0FDQyBjb25mb3JtYW5jZSB0ZXN0IGZhaWxlZC4gU3RvcC5dKQotZG5sICAgIEFTX0VYSVQKLSAgICA7OwotZXNhYwotXSkjIG1meF9NSU5JQUNDX0FDQ0NISwotCi0KLQotIyBzZXJpYWwgMQotCi1BQ19ERUZVTihbbWZ4X1BST0dfQ1BQRkxBR1NdLCBbCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlIEMgcHJlcHJvY2Vzc29yIG5lZWRzIHNwZWNpYWwgZmxhZ3NdKQotCi1BQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1BST0dSQU0oCi1bWyNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpZiAoMzI3NjcgPj0gNDI5NDk2NzI5NXVsKSB8fCAoNjU1MzV1ID49IDQyOTQ5NjcyOTV1bCkKLSMgIGluY2x1ZGUgInlvdXIgQyBwcmVwcm9jZXNzb3IgaXMgYnJva2VuIDEiCi0jZWxpZiAoMHhmZmZmdSA9PSAweGZmZmZmZmZmdWwpCi0jICBpbmNsdWRlICJ5b3VyIEMgcHJlcHJvY2Vzc29yIGlzIGJyb2tlbiAyIgotI2VsaWYgKDMyNzY3ID49IFVMT05HX01BWCkgfHwgKDY1NTM1dSA+PSBVTE9OR19NQVgpCi0jICBpbmNsdWRlICJ5b3VyIEMgcHJlcHJvY2Vzc29yIGlzIGJyb2tlbiAzIgotI2VuZGlmCi1dXSwgW1sgXV0KLSldKQotCi1tZnhfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKLW1meF90bXA9RVJST1IKLWZvciBtZnhfYXJnIGluICIiIC1uby1jcHAtcHJlY29tcAotZG8KLSAgQ1BQRkxBR1M9IiRtZnhfYXJnICRtZnhfc2F2ZV9DUFBGTEFHUyIKLSAgX0FDX0NPTVBJTEVfSUZFTFNFKFtdLAotW21meF90bXA9JG1meF9hcmcKLWJyZWFrXSkKLWRvbmUKLUNQUEZMQUdTPSRtZnhfc2F2ZV9DUFBGTEFHUwotcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBjb25mdGVzdC4kYWNfb2JqZXh0Ci1jYXNlIHgkbWZ4X3RtcCBpbgotICB4KQotICAgIEFDX01TR19SRVNVTFQoW25vbmUgbmVlZGVkXSkgOzsKLSAgeEVSUk9SKQotICAgIEFDX01TR19SRVNVTFQoW0VSUk9SXSkKLSAgICBBQ19NU0dfRVJST1IoW3lvdXIgQyBwcmVwcm9jZXNzb3IgaXMgYnJva2VuIC0gZm9yIGRldGFpbHMgc2VlIGNvbmZpZy5sb2ddKQotICAgIDs7Ci0gICopCi0gICAgQUNfTVNHX1JFU1VMVChbJG1meF90bXBdKQotICAgIENQUEZMQUdTPSIkbWZ4X3RtcCAkQ1BQRkxBR1MiCi0gICAgOzsKLWVzYWMKLV0pIyBtZnhfUFJPR19DUFBGTEFHUwotCi0KLQotIyBzZXJpYWwgMwotCi1BQ19ERUZVTihbbWZ4X0NIRUNLX0hFQURFUl9TQU5FX0xJTUlUU19IXSwgWwotQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgbGltaXRzLmggaXMgc2FuZV0sCi1tZnhfY3ZfaGVhZGVyX3NhbmVfbGltaXRzX2gsCi1bQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpZiAoMzI3NjcgPj0gNDI5NDk2NzI5NXVsKSB8fCAoNjU1MzV1ID49IDQyOTQ5NjcyOTV1bCkKLSMgIGlmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKQotIyAgICBlcnJvciAieW91ciBwcmVwcm9jZXNzb3IgaXMgYnJva2VuIC0gdXNlIGNvbXBpbGVyIG9wdGlvbiAtbm8tY3BwLXByZWNvbXAiCi0jICBlbHNlCi0jICAgIGluY2x1ZGUgInlvdXIgcHJlcHJvY2Vzc29yIGlzIGJyb2tlbiIKLSMgIGVuZGlmCi0jZW5kaWYKLSNkZWZpbmUgTUZYXzB4ZmZmZiAgICAgICAgICAweGZmZmYKLSNkZWZpbmUgTUZYXzB4ZmZmZmZmZmZMICAgICA0Mjk0OTY3Mjk1dWwKLSNpZiAhZGVmaW5lZChDSEFSX0JJVCkgfHwgKENIQVJfQklUICE9IDgpCi0jICBpbmNsdWRlICJlcnJvciBDSEFSX0JJVCIKLSNlbmRpZgotI2lmICFkZWZpbmVkKFVDSEFSX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIFVDSEFSX01BWCAxIgotI2VuZGlmCi0jaWYgIWRlZmluZWQoVVNIUlRfTUFYKQotIyAgaW5jbHVkZSAiZXJyb3IgVVNIUlRfTUFYIDEiCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChVSU5UX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIFVJTlRfTUFYIDEiCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChVTE9OR19NQVgpCi0jICBpbmNsdWRlICJlcnJvciBVTE9OR19NQVggMSIKLSNlbmRpZgotI2lmICFkZWZpbmVkKFNIUlRfTUFYKQotIyAgaW5jbHVkZSAiZXJyb3IgU0hSVF9NQVggMSIKLSNlbmRpZgotI2lmICFkZWZpbmVkKElOVF9NQVgpCi0jICBpbmNsdWRlICJlcnJvciBJTlRfTUFYIDEiCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChMT05HX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIExPTkdfTUFYIDEiCi0jZW5kaWYKLSNpZiAoVUNIQVJfTUFYIDwgMSkKLSMgIGluY2x1ZGUgImVycm9yIFVDSEFSX01BWCAyIgotI2VuZGlmCi0jaWYgKFVTSFJUX01BWCA8IDEpCi0jICBpbmNsdWRlICJlcnJvciBVU0hSVF9NQVggMiIKLSNlbmRpZgotI2lmIChVSU5UX01BWCA8IDEpCi0jICBpbmNsdWRlICJlcnJvciBVSU5UX01BWCAyIgotI2VuZGlmCi0jaWYgKFVMT05HX01BWCA8IDEpCi0jICBpbmNsdWRlICJlcnJvciBVTE9OR19NQVggMiIKLSNlbmRpZgotI2lmIChVQ0hBUl9NQVggPCAweGZmKQotIyAgaW5jbHVkZSAiZXJyb3IgVUNIQVJfTUFYIDMiCi0jZW5kaWYKLSNpZiAoVVNIUlRfTUFYIDwgTUZYXzB4ZmZmZikKLSMgIGluY2x1ZGUgImVycm9yIFVTSFJUX01BWCAzIgotI2VuZGlmCi0jaWYgKFVJTlRfTUFYIDwgTUZYXzB4ZmZmZikKLSMgIGluY2x1ZGUgImVycm9yIFVJTlRfTUFYIDMiCi0jZW5kaWYKLSNpZiAoVUxPTkdfTUFYIDwgTUZYXzB4ZmZmZmZmZmZMKQotIyAgaW5jbHVkZSAiZXJyb3IgVUxPTkdfTUFYIDMiCi0jZW5kaWYKLSNpZiAoVVNIUlRfTUFYID4gVUlOVF9NQVgpCi0jICBpbmNsdWRlICJlcnJvciBVU0hSVF9NQVggdnMgVUlOVF9NQVgiCi0jZW5kaWYKLSNpZiAoVUlOVF9NQVggPiBVTE9OR19NQVgpCi0jICBpbmNsdWRlICJlcnJvciBVSU5UX01BWCB2cyBVTE9OR19NQVgiCi0jZW5kaWYKLV1dLCBbWwotI2lmIChVU0hSVF9NQVggPT0gTUZYXzB4ZmZmZikKLXsgdHlwZWRlZiBjaGFyIGFfc2hvcnQyYVsxIC0gMiAqICEoc2l6ZW9mKHNob3J0KSA9PSAyKV07IH0KLSNlbGlmIChVU0hSVF9NQVggPj0gTUZYXzB4ZmZmZikKLXsgdHlwZWRlZiBjaGFyIGFfc2hvcnQyYlsxIC0gMiAqICEoc2l6ZW9mKHNob3J0KSA+IDIpXTsgfQotI2VuZGlmCi0jaWYgKFVJTlRfTUFYID09IE1GWF8weGZmZmYpCi17IHR5cGVkZWYgY2hhciBhX2ludDJhWzEgLSAyICogIShzaXplb2YoaW50KSA9PSAyKV07IH0KLSNlbGlmIChVSU5UX01BWCA+PSBNRlhfMHhmZmZmKQoteyB0eXBlZGVmIGNoYXIgYV9pbnQyYlsxIC0gMiAqICEoc2l6ZW9mKGludCkgPiAyKV07IH0KLSNlbmRpZgotI2lmIChVTE9OR19NQVggPT0gTUZYXzB4ZmZmZikKLXsgdHlwZWRlZiBjaGFyIGFfbG9uZzJhWzEgLSAyICogIShzaXplb2YobG9uZykgPT0gMildOyB9Ci0jZWxpZiAoVUxPTkdfTUFYID49IE1GWF8weGZmZmYpCi17IHR5cGVkZWYgY2hhciBhX2xvbmcyYlsxIC0gMiAqICEoc2l6ZW9mKGxvbmcpID4gMildOyB9Ci0jZW5kaWYKLSNpZiAoVVNIUlRfTUFYID09IE1GWF8weGZmZmZmZmZmTCkKLXsgdHlwZWRlZiBjaGFyIGFfc2hvcnQ0YVsxIC0gMiAqICEoc2l6ZW9mKHNob3J0KSA9PSA0KV07IH0KLSNlbGlmIChVU0hSVF9NQVggPj0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9zaG9ydDRiWzEgLSAyICogIShzaXplb2Yoc2hvcnQpID4gNCldOyB9Ci0jZW5kaWYKLSNpZiAoVUlOVF9NQVggPT0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9pbnQ0YVsxIC0gMiAqICEoc2l6ZW9mKGludCkgPT0gNCldOyB9Ci0jZWxpZiAoVUlOVF9NQVggPj0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9pbnQ0YlsxIC0gMiAqICEoc2l6ZW9mKGludCkgPiA0KV07IH0KLSNlbmRpZgotI2lmIChVTE9OR19NQVggPT0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9sb25nNGFbMSAtIDIgKiAhKHNpemVvZihsb25nKSA9PSA0KV07IH0KLSNlbGlmIChVTE9OR19NQVggPj0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9sb25nNGJbMSAtIDIgKiAhKHNpemVvZihsb25nKSA+IDQpXTsgfQotI2VuZGlmCi1dXSldLAotW21meF9jdl9oZWFkZXJfc2FuZV9saW1pdHNfaD15ZXNdLAotW21meF9jdl9oZWFkZXJfc2FuZV9saW1pdHNfaD1ub10pXSkKLV0pCi0KLSMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIC8vIHN0YW5kYXJkCi0jICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotQUNfREVGVU4oW21meF9MWk9fQ0hFQ0tfRU5ESUFOXSwgWwotQUNfQ19CSUdFTkRJQU4oW0FDX0RFRklORShMWk9fQUJJX0JJR19FTkRJQU4sMSxbRGVmaW5lIHRvIDEgaWYgeW91ciBtYWNoaW5lIGlzIGJpZyBlbmRpYW4uXSldLFtBQ19ERUZJTkUoTFpPX0FCSV9MSVRUTEVfRU5ESUFOLDEsW0RlZmluZSB0byAxIGlmIHlvdXIgbWFjaGluZSBpcyBsaXR0bGUgZW5kaWFuLl0pXSkKLV0pIwotCi0KLSMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIC8vCi0jICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotZG5sIG1vcmUgdHlwZXMgd2hpY2ggYXJlIG5vdCB5ZXQgY292ZXJlZCBieSBBQ0MKLQotQUNfREVGVU4oW21meF9DSEVDS19TSVpFT0ZdLCBbCi1BQ19DSEVDS19TSVpFT0YoX19pbnQzMikKLUFDX0NIRUNLX1NJWkVPRihpbnRtYXhfdCkKLUFDX0NIRUNLX1NJWkVPRih1aW50bWF4X3QpCi1BQ19DSEVDS19TSVpFT0YoaW50cHRyX3QpCi1BQ19DSEVDS19TSVpFT0YodWludHB0cl90KQotCi1BQ19DSEVDS19TSVpFT0YoZmxvYXQpCi1BQ19DSEVDS19TSVpFT0YoZG91YmxlKQotQUNfQ0hFQ0tfU0laRU9GKGxvbmcgZG91YmxlKQotCi1BQ19DSEVDS19TSVpFT0YoZGV2X3QpCi1BQ19DSEVDS19TSVpFT0YoZnBvc190KQotQUNfQ0hFQ0tfU0laRU9GKG1vZGVfdCkKLUFDX0NIRUNLX1NJWkVPRihvZmZfdCkKLUFDX0NIRUNLX1NJWkVPRihzc2l6ZV90KQotQUNfQ0hFQ0tfU0laRU9GKHRpbWVfdCkKLV0pIwotCi0KLQotQUNfREVGVU4oW21meF9DSEVDS19MSUJfV0lOTU1dLCBbCi1pZiB0ZXN0ICJYJEdDQyIgPSBYeWVzOyB0aGVuCi1jYXNlICRob3N0X29zIGluCi1jeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0gICAgIHRlc3QgIlgkTElCUyIgIT0gIlgiICYmIExJQlM9IiRMSUJTICIKLSAgICAgTElCUz0iJHtMSUJTfS1sd2lubW0iIDs7Ci0qKQotICAgICA7OwotZXNhYwotZmkKLV0pIwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem9fMi4xMC5iYgppbmRleCA0OTBkMjMwLi44ZWVmZWMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjEwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvXzIuMTAuYmIKQEAgLTgsNyArOCw2IEBACiBTUkNfVVJJID0gImh0dHA6Ly93d3cub2Jlcmh1bWVyLmNvbS9vcGVuc291cmNlL2x6by9kb3dubG9hZC9sem8tJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLW1lbWNweS1pbnN0ZWFkLW9mLXJlaW52ZW50aW5nLWl0LnBhdGNoIFwKIAkgICBmaWxlOi8vMDAwMS1BZGQtcGtnY29uZmlnZGlyLXRvLXNvbHZlLXRoZS11bmRlZmluZS1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hY2luY2x1ZGUubTQgXAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgIgogCkBAIC0xOSwxMCArMTgsNiBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkIgogCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JY3AgJHtXT1JLRElSfS9hY2luY2x1ZGUubTQgJHtTfS8KLX0KLQogZG9faW5zdGFsbF9wdGVzdCgpIHsKIAl0PSR7RH0ke1BURVNUX1BBVEh9CiAJY3AgJHtTfS91dGlsL2NoZWNrLnNoICR0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjNmOTE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1TVU1NQVJZID0gIkMgbGlicmFyeSBmb3IgbXVsdGlwbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGNvbXB1dGF0aW9ucyB3aXRoIGV4YWN0IHJvdW5kaW5nIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tcGZyLm9yZy8iCi1MSUNFTlNFID0gIkxHUEx2MysiCi1TRUNUSU9OID0gImRldmVsIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzMuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl8zLjEuNS5iYgppbmRleCAyZDU5YzRhLi5hNzhjMGJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzMuMS41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnJfMy4xLjUuYmIKQEAgLTEsNiArMSwxMCBAQAotcmVxdWlyZSBtcGZyLmluYworU1VNTUFSWSA9ICJDIGxpYnJhcnkgZm9yIG11bHRpcGxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBjb21wdXRhdGlvbnMgd2l0aCBleGFjdCByb3VuZGluZyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubXBmci5vcmcvIgorTElDRU5TRSA9ICJMR1BMdjMrIgorU0VDVElPTiA9ICJkZXZlbCIKIAotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKwogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAogCQkgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiIKIERFUEVORFMgPSAiZ21wIgpAQCAtMTMsNiArMTcsNCBAQAogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5tcGZyLm9yZy9tcGZyLWN1cnJlbnQvIgogCi1TID0gIiR7V09SS0RJUn0vbXBmci0ke1BWfSIKLQogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25lb24vbmVvbl8wLjMwLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uXzAuMzAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc5MmM1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uXzAuMzAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gSFRUUCBhbmQgV2ViREFWIGNsaWVudCBsaWJyYXJ5IHdpdGggYSBDIGludGVyZmFjZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cud2ViZGF2Lm9yZy9uZW9uLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9DT1BZSU5HLkxJQjttZDU9ZjMwYTk3MTZlZjM3NjJlMzQ2N2EyZjYyYmY3OTBmMGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL25lX3V0aWxzLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9MmNhY2E2MDk1MzhlZGRhYTZmNmFkZjEyMGEyMTgwMzciCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy53ZWJkYXYub3JnLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTI4ZDc3YmYxNDAzMmQ3ZjUwNDZiMzkzMDcwNGVmNDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGIwYmQ4Y2RlYzMyOWI0OGY1M2E2ZjAwMTk5YzkyZDViYTQwYjBmMDE1YjE1MzcxOGQxYjE1ZDNkOTY3ZmJjYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZwotCi0jIEVuYWJsZSBnbnV0bHMgb3Igb3BlbnNzbCwgbm90IGJvdGgKLVBBQ0tBR0VDT05GSUcgPz0gImV4cGF0IGdudXRscyBsaWJwcm94eSB3ZWJkYXYgemxpYiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImV4cGF0IGdudXRscyB3ZWJkYXYgemxpYiIKLQotUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0LC0td2l0aG91dC1leHBhdCxleHBhdCIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtc3NsPWdudXRscywsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnc3NhcGldID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotUEFDS0FHRUNPTkZJR1tsaWJwcm94eV0gPSAiLS13aXRoLWxpYnByb3h5LC0td2l0aG91dC1saWJwcm94eSxsaWJwcm94eSIKLVBBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLXNzbD1vcGVuc3NsLCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1t3ZWJkYXZdID0gIi0tZW5hYmxlLXdlYmRhdiwtLWRpc2FibGUtd2ViZGF2LCIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1zaGFyZWQiCi0KLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotCW9lX3J1bm1ha2UgLUMgdGVzdAotfQotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L25lb24tY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvZmlsZXMvQWRkLXRhcmdldC10by1vbmx5LWJ1aWxkLXRlc3RzLW5vdC1ydW4tdGhlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvZmlsZXMvQWRkLXRhcmdldC10by1vbmx5LWJ1aWxkLXRlc3RzLW5vdC1ydW4tdGhlbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNkYTc3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL2ZpbGVzL0FkZC10YXJnZXQtdG8tb25seS1idWlsZC10ZXN0cy1ub3QtcnVuLXRoZW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDQ2ZWRmMDFjYzk4ZGI5ZjlmZWVjOTg0ODk3ODM2ZGZkZDI2YmRjOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCAxMiBBdWcgMjAxNSAyMzoyNzoyNyArMDMwMAotU3ViamVjdDogW1BBVENIXSBBZGQgdGFyZ2V0IHRvIG9ubHkgYnVpbGQgdGVzdHMgKG5vdCBydW4gdGhlbSkKLQotTm90IHNlbmRpbmcgdXBzdHJlYW0gYXMgdGhpcyBpcyBvbmx5IGEgc3RhcnQgb2YgYSBzb2x1dGlvbiB0bwotaW5zdGFsbGFibGUgdGVzdHM6IEl0J3MgdXNlZnVsIGZvciB1cyBhbHJlYWR5IGFzIGlzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vdCBhIGNvbXBsZXRlIHNvbHV0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gICAgICAgICAgIHwgMyArKysKLSB0ZXN0c3VpdGUvTWFrZWZpbGUuaW4gfCAyICsrCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDA4ZWZiN2QuLjc5MDkzNDIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC01NSw2ICs1NSw5IEBAIGNsZWFuIGRpc3RjbGVhbiBtb3N0bHljbGVhbiBtYWludGFpbmVyLWNsZWFuIHRhZ3M6Ci0gCSAgZWNobyAiTWFraW5nICRAIGluICQkZCIgOyAoY2QgJCRkICYmICQoTUFLRSkgJEApOyBkb25lCi0gCSQoTUFLRSkgJEAtaGVyZQotIAotK2J1aWxkdGVzdDoKLSsJZWNobyAiTWFraW5nICRAIGluIHRlc3RzdWl0ZSIgOyAoY2QgdGVzdHN1aXRlICYmICQoTUFLRSkgJEApCi0rCi0gY2hlY2staGVyZToKLSAJdHJ1ZQotIAotZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbiBiL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgotaW5kZXggNmJjMTkwNy4uYmI2NWJmMCAxMDA2NDQKLS0tLSBhL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgotKysrIGIvdGVzdHN1aXRlL01ha2VmaWxlLmluCi1AQCAtMTE2LDYgKzExNiw4IEBAICQoVEFSR0VUUykgJChFWFRSQV9UQVJHRVRTKTogdGVzdHV0aWxzLiQoT0JKRVhUKSAuLi9uZXR0bGUtaW50ZXJuYWwuJChPQkpFWFQpIFwKLSAjIGRhdGEuCi0gVkFMR1JJTkQgPSB2YWxncmluZCAtLWVycm9yLWV4aXRjb2RlPTEgLS1sZWFrLWNoZWNrPWZ1bGwgLS1zaG93LXJlYWNoYWJsZT15ZXMgQElGX0FTTUAgLS1wYXJ0aWFsLWxvYWRzLW9rPXllcwotIAotK2J1aWxkdGVzdDogJChUU19BTEwpCi0rCi0gIyBUaGUgUEFUSCB1cGRhdGUgaXMgZm9yIGxvY2F0aW5nIGRsbHMgb24gdypuZG93cy4KLSBjaGVjazogJChUU19BTEwpCi0gCUxEX0xJQlJBUllfUEFUSD0uLi8ubGliIFBBVEg9Ii4uLy5saWI6JCRQQVRIIiBzcmNkaXI9IiQoc3JjZGlyKSIgXAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvY2hlY2staGVhZGVyLWZpbGVzLW9mLW9wZW5zc2wtb25seS1pZi1lbmFibGVfLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy4zL2NoZWNrLWhlYWRlci1maWxlcy1vZi1vcGVuc3NsLW9ubHktaWYtZW5hYmxlXy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcyMTZiYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvY2hlY2staGVhZGVyLWZpbGVzLW9mLW9wZW5zc2wtb25seS1pZi1lbmFibGVfLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSBmZmVlNmI1ZjYyMDRhMDIxMGY3MTc5NjhlYzZjZTUxNGQ3MGFjY2ExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDkgRGVjIDIwMTYgMTU6MjM6MTcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbmV0dGxlOiBjaGVjayBoZWFkZXIgZmlsZXMgb2Ygb3BlbnNzbCBvbmx5IGlmCi0gJ2VuYWJsZV9vcGVuc3NsPXllcycuCi0KLVRoZSBvcmlnaW5hbCBjb25maWd1cmUgc2NyaXB0IGNoZWNrcyBvcGVuc3NsIGhlYWRlciBmaWxlcyB0byBnZW5lcmF0ZQotY29uZmlnLmggZXZlbiBpZiAnZW5hYmxlX29wZW5zc2wnIGlzIG5vdCBzZXQgdG8geWVzLCB0aGlzIG1hZGUgaW5jb25zaXN0ZW50Ci1idWlsZGluZyBmb3IgbmV0dGxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEhhaXFpbmcgQmFpIDxIYWlxaW5nLkJhaUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgOCArKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDRlYWQ1MmMuLjk4Mjc2MGYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE4NSw5ICsxODUsMTEgQEAgQUNfSEVBREVSX1RJTUUKLSBBQ19DSEVDS19TSVpFT0YobG9uZykKLSBBQ19DSEVDS19TSVpFT0Yoc2l6ZV90KQotIAotLUFDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvYmxvd2Zpc2guaCBvcGVuc3NsL2Rlcy5oIG9wZW5zc2wvY2FzdC5oIG9wZW5zc2wvYWVzLmggb3BlbnNzbC9lY2RzYS5oXSwsCi0tW2VuYWJsZV9vcGVuc3NsPW5vCi0tIGJyZWFrXSkKLStpZiB0ZXN0ICJ4JGVuYWJsZV9vcGVuc3NsIiA9ICJ4eWVzIjsgdGhlbgotKyAgQUNfQ0hFQ0tfSEVBREVSUyhbb3BlbnNzbC9ibG93ZmlzaC5oIG9wZW5zc2wvZGVzLmggb3BlbnNzbC9jYXN0Lmggb3BlbnNzbC9hZXMuaCBvcGVuc3NsL2VjZHNhLmhdLCwKLSsgIFtlbmFibGVfb3BlbnNzbD1ubwotKyAgYnJlYWtdKQotK2ZpCi0gCi0gQUNfQ0hFQ0tfSEVBREVSUyhbdmFsZ3JpbmQvbWVtY2hlY2suaF0pCi0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L0FkZC10YXJnZXQtdG8tb25seS1idWlsZC10ZXN0cy1ub3QtcnVuLXRoZW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAwNzA2MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0FkZCB0YXJnZXQgdG8gb25seSBidWlsZCB0ZXN0cyAobm90IHJ1biB0aGVtKQorCitOb3Qgc2VuZGluZyB1cHN0cmVhbSBhcyB0aGlzIGlzIG9ubHkgYSBzdGFydCBvZiBhIHNvbHV0aW9uIHRvCitpbnN0YWxsYWJsZSB0ZXN0czogSXQncyB1c2VmdWwgZm9yIHVzIGFscmVhZHkgYXMgaXMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGEgY29tcGxldGUgc29sdXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitSZWZhY3RvcmVkIGZvciAzLjQKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCitJbmRleDogbmV0dGxlLTMuNC9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ldHRsZS0zLjQub3JpZy9NYWtlZmlsZS5pbgorKysrIG5ldHRsZS0zLjQvTWFrZWZpbGUuaW4KK0BAIC01NSw2ICs1NSw5IEBAIGNsZWFuIGRpc3RjbGVhbiBtb3N0bHljbGVhbiBtYWludGFpbmVyLWMKKyAJICBlY2hvICJNYWtpbmcgJEAgaW4gJCRkIiA7IChjZCAkJGQgJiYgJChNQUtFKSAkQCk7IGRvbmUKKyAJJChNQUtFKSAkQC1oZXJlCisgCisrYnVpbGR0ZXN0OgorKwllY2hvICJNYWtpbmcgJEAgaW4gdGVzdHN1aXRlIiA7IChjZCB0ZXN0c3VpdGUgJiYgJChNQUtFKSAkQCkKKysKKyBjaGVjay1oZXJlOgorIAl0cnVlCisgCitJbmRleDogbmV0dGxlLTMuNC90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXR0bGUtMy40Lm9yaWcvdGVzdHN1aXRlL01ha2VmaWxlLmluCisrKysgbmV0dGxlLTMuNC90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KK0BAIC0xMzEsNiArMTMxLDggQEAgJChUQVJHRVRTKSAkKEVYVFJBX1RBUkdFVFMpOiB0ZXN0dXRpbHMuJAorICMgZGF0YS4KKyBWQUxHUklORCA9IHZhbGdyaW5kIC0tZXJyb3ItZXhpdGNvZGU9MSAtLWxlYWstY2hlY2s9ZnVsbCAtLXNob3ctcmVhY2hhYmxlPXllcyBASUZfQVNNQCAtLXBhcnRpYWwtbG9hZHMtb2s9eWVzCisgCisrYnVpbGR0ZXN0OiAkKFRTX0FMTCkKKysKKyAjIFRoZSBQQVRIIHVwZGF0ZSBpcyBmb3Igd2luZG93cyBkbGxzLCBEWUxEX0xJQlJBUllfUEFUSCBpcyBmb3IgT1NYLgorIGNoZWNrOiAkKFRTX0FMTCkKKyAJTERfTElCUkFSWV9QQVRIPS4uLy5saWIgUEFUSD0iLi4vLmxpYjokJFBBVEgiIERZTERfTElCUkFSWV9QQVRIPS4uLy5saWIgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L2NoZWNrLWhlYWRlci1maWxlcy1vZi1vcGVuc3NsLW9ubHktaWYtZW5hYmxlXy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVmMjY2NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBmZmVlNmI1ZjYyMDRhMDIxMGY3MTc5NjhlYzZjZTUxNGQ3MGFjY2ExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDkgRGVjIDIwMTYgMTU6MjM6MTcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbmV0dGxlOiBjaGVjayBoZWFkZXIgZmlsZXMgb2Ygb3BlbnNzbCBvbmx5IGlmCisgJ2VuYWJsZV9vcGVuc3NsPXllcycuCisKK1RoZSBvcmlnaW5hbCBjb25maWd1cmUgc2NyaXB0IGNoZWNrcyBvcGVuc3NsIGhlYWRlciBmaWxlcyB0byBnZW5lcmF0ZQorY29uZmlnLmggZXZlbiBpZiAnZW5hYmxlX29wZW5zc2wnIGlzIG5vdCBzZXQgdG8geWVzLCB0aGlzIG1hZGUgaW5jb25zaXN0ZW50CitidWlsZGluZyBmb3IgbmV0dGxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEhhaXFpbmcgQmFpIDxIYWlxaW5nLkJhaUB3aW5kcml2ZXIuY29tPgorCityZWZhY3RvcmVkIGZvciAzLjQuIHBlbmRpbmcgbm90IGluIGFzIG9mIDMuNAorCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworSW5kZXg6IG5ldHRsZS0zLjQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0dGxlLTMuNC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG5ldHRsZS0zLjQvY29uZmlndXJlLmFjCitAQCAtMTg1LDkgKzE4NSwxMSBAQCBBQ19IRUFERVJfVElNRQorIEFDX0NIRUNLX1NJWkVPRihsb25nKQorIEFDX0NIRUNLX1NJWkVPRihzaXplX3QpCisgCistQUNfQ0hFQ0tfSEVBREVSUyhbb3BlbnNzbC9ldnAuaCBvcGVuc3NsL2VjZHNhLmhdLCwKKy1bZW5hYmxlX29wZW5zc2w9bm8KKy0gYnJlYWtdKQorK2lmIHRlc3QgIngkZW5hYmxlX29wZW5zc2wiID0gInh5ZXMiOyB0aGVuCisrICBBQ19DSEVDS19IRUFERVJTKFtvcGVuc3NsL2V2cC5oIG9wZW5zc2wvZWNkc2EuaF0sLAorKyAgW2VuYWJsZV9vcGVuc3NsPW5vCisrICAgYnJlYWtdKQorK2ZpCisgCisgIyBGb3IgdXNlIGJ5IHRoZSB0ZXN0c3VpdGUKKyBBQ19DSEVDS19IRUFERVJTKFt2YWxncmluZC9tZW1jaGVjay5oXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuMy9kbG9wZW4tdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9kbG9wZW4tdGVzdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy4zL2Rsb3Blbi10ZXN0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjQvZGxvcGVuLXRlc3QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvZmlsZXMvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9maWxlcy9ydW4tcHRlc3QKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9ydW4tcHRlc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY1MWZiNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkEgbG93IGxldmVsIGNyeXB0b2dyYXBoaWMgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubHlzYXRvci5saXUuc2Uvfm5pc3NlL25ldHRsZS8iCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgKz0gImdtcCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmx5c2F0b3IubGl1LnNlL35uaXNzZS9hcmNoaXZlLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibmV0dGxlLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdAotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9wZW5zc2wiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgIGlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCAtYSAtZSAke1N9L2FjbG9jYWwubTQgXTsgdGhlbgotICAgICAgICAgICAgICAgY3AgJHtTfS9hY2xvY2FsLm00ICR7U30vYWNpbmNsdWRlLm00Ci0gICAgICAgZmkKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSBidWlsZHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCi0gICAgICAgIGluc3RhbGwgJHtTfS90ZXN0c3VpdGUvZ29sZC1idWcudHh0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KLSAgICAgICAgaW5zdGFsbCAke1N9L3Rlc3RzdWl0ZS8qLXRlc3QgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLwotICAgICAgICAjIHRvb2xzIGNhbiBiZSBmb3VuZCBpbiBQQVRILCBub3QgaW4gLi4vdG9vbHMvCi0gICAgICAgIHNlZCAtaSAtZSAnc3wuLi90b29scy98fCcgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLyotdGVzdAotICAgICAgICBpbnN0YWxsICR7Qn0vdGVzdHN1aXRlLyotdGVzdCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk1MTY3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIG5ldHRsZS5pbmMKLQotTElDRU5TRSA9ICJMR1BMdjMrIHwgR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NlcnBlbnQtZGVjcnlwdC5jO2JlZ2lubGluZT0xNDtlbmRsaW5lPTM2O21kNT1jYTBkMjIwYmM0MTNlMTg0MmVjYzUwNzY5MGNlNDE2ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zZXJwZW50LXNldC1rZXkuYztiZWdpbmxpbmU9MTQ7ZW5kbGluZT0zNjttZDU9Y2EwZDIyMGJjNDEzZTE4NDJlY2M1MDc2OTBjZTQxNmUiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgICAgIGZpbGU6Ly9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICAgZmlsZTovL2Rsb3Blbi10ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEwZjk2OWY3OGE0NjM3MDRhZTczNTI5OTc4MTQ4ZGJlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2OTQyNjI3ZDVkMGNhMTE3MjBmZWMxOGQ4MWZjMzhmN2VmODM3ZWE0MTk3YzFmNjMwZTcxY2UwZDQ3MGIxMWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EzY2M2NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuNC5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIkEgbG93IGxldmVsIGNyeXB0b2dyYXBoaWMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubHlzYXRvci5saXUuc2Uvfm5pc3NlL25ldHRsZS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MysgfCBHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSdjM7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2VycGVudC1kZWNyeXB0LmM7YmVnaW5saW5lPTE0O2VuZGxpbmU9MzY7bWQ1PWNhMGQyMjBiYzQxM2UxODQyZWNjNTA3NjkwY2U0MTZlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NlcnBlbnQtc2V0LWtleS5jO2JlZ2lubGluZT0xNDtlbmRsaW5lPTM2O21kNT1jYTBkMjIwYmM0MTNlMTg0MmVjYzUwNzY5MGNlNDE2ZSIKKworREVQRU5EUyArPSAiZ21wIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisgICAgICAgICAgICBmaWxlOi8vZGxvcGVuLXRlc3QucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGMwZjEzMDI4MjY0OTkyZjU4ZTY3YjRlODkxNWY1M2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWU3YTQyZGYwMjY1NTBiODVkYWNhODM4OWI2YTYwYmE2MzEzYjA1NjdmMzc0MzkyZTU0OTE4NTg4YTQxMWU5NCIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibmV0dGxlLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdAorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1vcGVuc3NsIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgICAgICBvZV9ydW5tYWtlIGJ1aWxkdGVzdAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KKyAgICAgICAgaW5zdGFsbCAke1N9L3Rlc3RzdWl0ZS9nb2xkLWJ1Zy50eHQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLworICAgICAgICBpbnN0YWxsICR7U30vdGVzdHN1aXRlLyotdGVzdCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCisgICAgICAgICMgdG9vbHMgY2FuIGJlIGZvdW5kIGluIFBBVEgsIG5vdCBpbiAuLi90b29scy8KKyAgICAgICAgc2VkIC1pIC1lICdzfC4uL3Rvb2xzL3x8JyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvKi10ZXN0CisgICAgICAgIGluc3RhbGwgJHtCfS90ZXN0c3VpdGUvKi10ZXN0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgppbmRleCA1NGRlNzBjLi5lN2RiNmFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgpAQCAtMTksMyArMTksNSBAQAogCiBGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlibnB0aC5zby4qIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLVNTSVpFX01BWC1hbmQtU0laRV9NQVgtZGVmaW5pdGkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItU1NJWkVfTUFYLWFuZC1TSVpFX01BWC1kZWZpbml0aS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNiZGQ4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItU1NJWkVfTUFYLWFuZC1TSVpFX01BWC1kZWZpbml0aS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gZjc1NTFlYzU4ZTJmMGE4OTIyOTVlMGMyYTY1MDA4MzEwMWUxMmM1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDIwIE1heSAyMDE3IDEzOjI0OjI2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZm9yIFNTSVpFX01BWCBhbmQgU0laRV9NQVggZGVmaW5pdGlvbnMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBwci90ZXN0cy9wcmZ6LmMgfCA0ICsrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wci90ZXN0cy9wcmZ6LmMgYi9wci90ZXN0cy9wcmZ6LmMKLWluZGV4IDBjNWE0MzIuLjljMTc1OTAgMTAwNjQ0Ci0tLS0gYS9wci90ZXN0cy9wcmZ6LmMKLSsrKyBiL3ByL3Rlc3RzL3ByZnouYwotQEAgLTEwLDcgKzEwLDkgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0KLSsjaWZkZWYgWFBfVU5JWAotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjZW5kaWYKLSBpbnQKLSBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSB7Ci0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2gKaW5kZXggYzJiNzI1OC4uZjEyYWNjOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaApAQCAtNDksNCArNDksNCBAQAogLSAgICAgICAgICAgIFBSX01EX0FTRklMRVM9b3NfTGludXhfcHBjLnMKICAgICAgICAgIGZpCiAgICAgICAgICA7OwotICAgICBtNjhrKQorICAgICBlc2FjICAgIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2gKaW5kZXggYTdlNzg1My4uZWNjNmQzMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoCkBAIC0xMSwxMiArMTEsMTIgQEAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogbnNwci00LjguOS9tb3ppbGxhL25zcHJwdWIvcHIvdGVzdHMvTWFrZWZpbGUuaW4KK0luZGV4OiBuc3ByL3ByL3Rlc3RzL01ha2VmaWxlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNwcnB1Yi5vcmlnL3ByL3Rlc3RzL01ha2VmaWxlLmluCTIwMTItMDItMTEgMDA6MDE6MTAuNDc2MjIwNTA1ICswMjAwCi0rKysgbnNwcnB1Yi9wci90ZXN0cy9NYWtlZmlsZS5pbgkyMDEyLTAyLTEwIDIzOjU3OjQwLjAwMDAwMDAwMCArMDIwMAotQEAgLTM3OSw3ICszNzksNyBAQAotIGVuZGlmCistLS0gbnNwci5vcmlnL3ByL3Rlc3RzL01ha2VmaWxlLmluCisrKysgbnNwci9wci90ZXN0cy9NYWtlZmlsZS5pbgorQEAgLTMxNSw3ICszMTUsNyBAQCBpZmVxICgkKE9TX0FSQ0gpLCBTdW5PUykKKyBlbmRpZiAjIFN1bk9TCiAgCiAgaWZlcSAoLCQoZmlsdGVyLW91dCBMaW51eCBHTlUgR05VXyUsJChPU19BUkNIKSkpCiAtICAgIExET1BUUyArPSAtWGxpbmtlciAtcnBhdGggJChBQlNPTFVURV9MSUJfRElSKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGVmOTk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi1TVU1NQVJZID0gIk5ldHNjYXBlIFBvcnRhYmxlIFJ1bnRpbWUgTGlicmFyeSIKLUhPTUVQQUdFID0gICJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25zcHIvIgotTElDRU5TRSA9ICJHUEwtMi4wIHwgTVBMLTIuMCB8IExHUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29uZmlndXJlLmluO2JlZ2lubGluZT0zO2VuZGxpbmU9NjttZDU9OTBjMmZkZWUzOGU0NWQ2MzAyYWJjZmU0NzVjOGI1YzUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW47YmVnaW5saW5lPTQ7ZW5kbGluZT0zODttZDU9YmVkYTFkYmI5OGE1MTVmNTU3ZDNlNThlZjA2YmNhOTkiCi1TRUNUSU9OID0gImxpYnMvbmV0d29yayIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9uc3ByL3JlbGVhc2VzL3Yke1BWfS9zcmMvbnNwci0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1TU0laRV9NQVgtYW5kLVNJWkVfTUFYLWRlZmluaXRpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3ByLnBjLmluIFwKLSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgQ0ZMQUdTPScke0NGTEFHU30gLURfUFJfUE9MTF9BVkFJTEFCTEUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9PRkY2NF9UIC1EX1BSX0lORVQ2IC1EX1BSX0hBVkVfSU5FVF9OVE9QIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfR0VUSE9TVEJZTkFNRTIgLURfUFJfSEFWRV9HRVRBRERSSU5GTyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9JTkVUNl9QUk9CRSAtRE5PX0RMT1BFTl9OVUxMJyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MmZkODk2M2E0YjM5NGY2MmQ0M2JhNjA0ZjAzZmFiNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YjMxMDJkOTc2NjU1MDRhZWVlNzMzNjNjMTFhMjFjMDYyYWQ2N2EyNTIyMjQyMzY4YjdmMDE5Zjk2YTUzY2QxIgotCi1DVkVfUFJPRFVDVCA9ICJuZXRzY2FwZV9wb3J0YWJsZV9ydW50aW1lIgotCi1TID0gIiR7V09SS0RJUn0vbnNwci0ke1BWfS9uc3ByIgotCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gInBlcmwiCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotVEVTVFMgPSAiIFwKLSAgICBhY2NlcHQgXAotICAgIGFjY2VwdHJlYWQgXAotICAgIGFjY2VwdHJlYWRlbXUgXAotICAgIGFmZmluaXR5IFwKLSAgICBhbGFybSBcCi0gICAgYW5vbmZtIFwKLSAgICBhdG9taWMgXAotICAgIGF0dGFjaCBcCi0gICAgYmlnZmlsZSBcCi0gICAgY2xlYW51cCBcCi0gICAgY2x0c3J2ICBcCi0gICAgY29uY3VyIFwKLSAgICBjdmFyIFwKLSAgICBjdmFyMiBcCi0gICAgZGxsdGVzdCBcCi0gICAgZHRvYSBcCi0gICAgZXJyY29kZXMgXAotICAgIGV4aXQgXAotICAgIGZkY2FjaCBcCi0gICAgZmlsZWlvIFwKLSAgICBmb3JlaWduIFwKLSAgICBmb3JtYXR0bSBcCi0gICAgZnN5bmMgXAotICAgIGdldGhvc3QgXAotICAgIGdldHByb3RvIFwKLSAgICBpMmwgXAotICAgIGluaXRjbGsgXAotICAgIGlucnZhbCBcCi0gICAgaW5zdHJ1bXQgXAotICAgIGludHJpbyBcCi0gICAgaW50cnVwdCBcCi0gICAgaW9fdGltZW91dCBcCi0gICAgaW9jb250aHIgXAotICAgIGpvaW4gXAotICAgIGpvaW5rayBcCi0gICAgam9pbmt1IFwKLSAgICBqb2ludWsgXAotICAgIGpvaW51dSBcCi0gICAgbGF5ZXIgXAotICAgIGxhenlpbml0IFwKLSAgICBsaWJmaWxlbmFtZSBcCi0gICAgbGx0ZXN0IFwKLSAgICBsb2NrIFwKLSAgICBsb2NrZmlsZSBcCi0gICAgbG9nZmlsZSBcCi0gICAgbG9nZ2VyIFwKLSAgICBtYW55X2N2IFwKLSAgICBtdWx0aXdhaXQgXAotICAgIG5hbWVzaG0xIFwKLSAgICBuYmxheWVyIFwKLSAgICBub25ibG9jayBcCi0gICAgbnRpb3RvIFwKLSAgICBudG9oIFwKLSAgICBvcF8ybG9uZyBcCi0gICAgb3BfZXhjbCBcCi0gICAgb3BfZmlsbmYgXAotICAgIG9wX2ZpbG9rIFwKLSAgICBvcF9ub2ZpbCBcCi0gICAgcGFyZW50IFwKLSAgICBwYXJzZXRtIFwKLSAgICBwZWVrIFwKLSAgICBwZXJmIFwKLSAgICBwaXBlcGluZyBcCi0gICAgcGlwZXBpbmcyIFwKLSAgICBwaXBlc2VsZiBcCi0gICAgcG9sbF9ubSBcCi0gICAgcG9sbF90byBcCi0gICAgcG9sbGFibGUgXAotICAgIHByZnRlc3QgXAotICAgIHByaW1ibG9rIFwKLSAgICBwcm92aWRlciBcCi0gICAgcHJwb2xsbWwgXAotICAgIHJhbmZpbGUgXAotICAgIHJhbmRzZWVkIFwKLSAgICByZWluaXQgXAotICAgIHJ3bG9ja3Rlc3QgXAotICAgIHNlbF9zcGQgXAotICAgIHNlbGN0X2VyIFwKLSAgICBzZWxjdF9ubSBcCi0gICAgc2VsY3RfdG8gXAotICAgIHNlbGludHIgXAotICAgIHNlbWEgXAotICAgIHNlbWFlcnIgXAotICAgIHNlbWFwaW5nIFwKLSAgICBzZW5kemxmIFwKLSAgICBzZXJ2ZXJfdGVzdCBcCi0gICAgc2VydnJfa2sgXAotICAgIHNlcnZyX3VrIFwKLSAgICBzZXJ2cl9rdSBcCi0gICAgc2VydnJfdXUgXAotICAgIHNob3J0X3RocmVhZCBcCi0gICAgc2lncGlwZSBcCi0gICAgc29ja2V0IFwKLSAgICBzb2Nrb3B0IFwKLSAgICBzb2NrcGluZyBcCi0gICAgc3ByaW50ZiBcCi0gICAgc3RhY2sgXAotICAgIHN0ZGlvIFwKLSAgICBzdHIyYWRkciBcCi0gICAgc3Ryb2QgXAotICAgIHN3aXRjaCBcCi0gICAgc3lzdGVtIFwKLSAgICB0ZXN0Yml0IFwKLSAgICB0ZXN0ZmlsZSBcCi0gICAgdGhyZWFkcyBcCi0gICAgdGltZW1hYyBcCi0gICAgdGltZXRlc3QgXAotICAgIHRwZCBcCi0gICAgdWRwc3J2IFwKLSAgICB2ZXJjaGVjayBcCi0gICAgdmVyc2lvbiBcCi0gICAgd3JpdGV2IFwKLSAgICB4bm90aWZ5IFwKLSAgICB6ZXJvbGVuIgotCi1pbmhlcml0IGF1dG90b29scwotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlvZV9ydW5tYWtlIENST1NTX0NPTVBJTEU9MSBDRkxBR1M9Ii1EWFBfVU5JWCAke0JVSUxEX0NGTEFHU30iIExERkxBR1M9IiIgQ0M9IiR7QlVJTERfQ0N9IiAtQyBjb25maWcgZXhwb3J0Ci19Ci0KLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotCW9lX3J1bm1ha2UgLUMgcHIvdGVzdHMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtRCAke1dPUktESVJ9L25zcHIucGMuaW4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYwotICAgIHNlZCAtaSAgXAotICAgIC1lICdzOk5TUFJWRVJTSU9OOiR7UFZ9OmcnIFwKLSAgICAtZSAnczpPRVBSRUZJWDoke3ByZWZpeH06ZycgXAotICAgIC1lICdzOk9FTElCRElSOiR7bGliZGlyfTpnJyBcCi0gICAgLWUgJ3M6T0VJTkNESVI6JHtpbmNsdWRlZGlyfTpnJyBcCi0gICAgLWUgJ3M6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcnIFwKLSAgICAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3ByLnBjCi0KLSAgICBta2RpciAtcCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5wbCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5zaCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLSAgICBjZCAke0J9L3ByL3Rlc3RzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7VEVTVFN9ICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotCi0gICAgIyBkZWxldGUgY29tcGlsZS1ldC5wbCBhbmQgcGVyci5wcm9wZXJ0aWVzIGZyb20gJHtiaW5kaXJ9IGJlY2F1c2UgdGhlc2UgYXJlCi0gICAgIyBvbmx5IHVzZWQgdG8gZ2VuZXJhdGUgcHJlcnIuYyBhbmQgcHJlcnIuaCBmaWxlcyBmcm9tIHByZXJyLmV0IGF0IGNvbXBpbGUKLSAgICAjIHRpbWUKLSAgICBybSAke0R9JHtiaW5kaXJ9L2NvbXBpbGUtZXQucGwgJHtEfSR7YmluZGlyfS9wcmVyci5wcm9wZXJ0aWVzCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9uc3ByL3Rlc3RzLyogJHtsaWJkaXJ9L3BrZ2NvbmZpZyBcCi0gICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8qICR7ZGF0YWRpcn0vYWNsb2NhbC8qICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMmM4NzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTkuYmIKQEAgLTAsMCArMSwxOTAgQEAKK1NVTU1BUlkgPSAiTmV0c2NhcGUgUG9ydGFibGUgUnVudGltZSBMaWJyYXJ5IgorSE9NRVBBR0UgPSAgImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbnNwci8iCitMSUNFTlNFID0gIkdQTC0yLjAgfCBNUEwtMi4wIHwgTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb25maWd1cmUuaW47YmVnaW5saW5lPTM7ZW5kbGluZT02O21kNT05MGMyZmRlZTM4ZTQ1ZDYzMDJhYmNmZTQ3NWM4YjVjNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbjtiZWdpbmxpbmU9NDtlbmRsaW5lPTM4O21kNT1iZWRhMWRiYjk4YTUxNWY1NTdkM2U1OGVmMDZiY2E5OSIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvdiR7UFZ9L3NyYy9uc3ByLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1zcmNkaXItZnJvbS1jb25maWd1cmUtaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNwci5wYy5pbiBcCisiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTX2FwcGVuZF9saWJjLW11c2wgPSAiIENGTEFHUz0nJHtDRkxBR1N9IC1EX1BSX1BPTExfQVZBSUxBQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfT0ZGNjRfVCAtRF9QUl9JTkVUNiAtRF9QUl9IQVZFX0lORVRfTlRPUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9IQVZFX0dFVEhPU1RCWU5BTUUyIC1EX1BSX0hBVkVfR0VUQUREUklORk8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSU5FVDZfUFJPQkUgLUROT19ETE9QRU5fTlVMTCciCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9uc3ByL3JlbGVhc2VzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInYoP1A8cHZlcj5cZCsoXC5cZCspKykvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTFkMjcyODJhZDYyODZiNjlkNmI5ZmQwNzIwMWQzZGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmVkOTU5MTdmYTIyNzc5MTBkMWQxY2YzNjAzMDYwN2RjY2MwYmE1MjJiYmEwOGUyYWYxM2MxMTNkY2Q4ZjcyOSIKKworQ1ZFX1BST0RVQ1QgPSAibmV0c2NhcGVfcG9ydGFibGVfcnVudGltZSIKKworUyA9ICIke1dPUktESVJ9L25zcHItJHtQVn0vbnNwciIKKworUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJwZXJsIgorVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK1RFU1RTID0gIiBcCisgICAgYWNjZXB0IFwKKyAgICBhY2NlcHRyZWFkIFwKKyAgICBhY2NlcHRyZWFkZW11IFwKKyAgICBhZmZpbml0eSBcCisgICAgYWxhcm0gXAorICAgIGFub25mbSBcCisgICAgYXRvbWljIFwKKyAgICBhdHRhY2ggXAorICAgIGJpZ2ZpbGUgXAorICAgIGNsZWFudXAgXAorICAgIGNsdHNydiAgXAorICAgIGNvbmN1ciBcCisgICAgY3ZhciBcCisgICAgY3ZhcjIgXAorICAgIGRsbHRlc3QgXAorICAgIGR0b2EgXAorICAgIGVycmNvZGVzIFwKKyAgICBleGl0IFwKKyAgICBmZGNhY2ggXAorICAgIGZpbGVpbyBcCisgICAgZm9yZWlnbiBcCisgICAgZm9ybWF0dG0gXAorICAgIGZzeW5jIFwKKyAgICBnZXRob3N0IFwKKyAgICBnZXRwcm90byBcCisgICAgaTJsIFwKKyAgICBpbml0Y2xrIFwKKyAgICBpbnJ2YWwgXAorICAgIGluc3RydW10IFwKKyAgICBpbnRyaW8gXAorICAgIGludHJ1cHQgXAorICAgIGlvX3RpbWVvdXQgXAorICAgIGlvY29udGhyIFwKKyAgICBqb2luIFwKKyAgICBqb2lua2sgXAorICAgIGpvaW5rdSBcCisgICAgam9pbnVrIFwKKyAgICBqb2ludXUgXAorICAgIGxheWVyIFwKKyAgICBsYXp5aW5pdCBcCisgICAgbGliZmlsZW5hbWUgXAorICAgIGxsdGVzdCBcCisgICAgbG9jayBcCisgICAgbG9ja2ZpbGUgXAorICAgIGxvZ2ZpbGUgXAorICAgIGxvZ2dlciBcCisgICAgbWFueV9jdiBcCisgICAgbXVsdGl3YWl0IFwKKyAgICBuYW1lc2htMSBcCisgICAgbmJsYXllciBcCisgICAgbm9uYmxvY2sgXAorICAgIG50aW90byBcCisgICAgbnRvaCBcCisgICAgb3BfMmxvbmcgXAorICAgIG9wX2V4Y2wgXAorICAgIG9wX2ZpbG5mIFwKKyAgICBvcF9maWxvayBcCisgICAgb3Bfbm9maWwgXAorICAgIHBhcmVudCBcCisgICAgcGFyc2V0bSBcCisgICAgcGVlayBcCisgICAgcGVyZiBcCisgICAgcGlwZXBpbmcgXAorICAgIHBpcGVwaW5nMiBcCisgICAgcGlwZXNlbGYgXAorICAgIHBvbGxfbm0gXAorICAgIHBvbGxfdG8gXAorICAgIHBvbGxhYmxlIFwKKyAgICBwcmZ0ZXN0IFwKKyAgICBwcmltYmxvayBcCisgICAgcHJvdmlkZXIgXAorICAgIHBycG9sbG1sIFwKKyAgICByYW5maWxlIFwKKyAgICByYW5kc2VlZCBcCisgICAgcmVpbml0IFwKKyAgICByd2xvY2t0ZXN0IFwKKyAgICBzZWxfc3BkIFwKKyAgICBzZWxjdF9lciBcCisgICAgc2VsY3Rfbm0gXAorICAgIHNlbGN0X3RvIFwKKyAgICBzZWxpbnRyIFwKKyAgICBzZW1hIFwKKyAgICBzZW1hZXJyIFwKKyAgICBzZW1hcGluZyBcCisgICAgc2VuZHpsZiBcCisgICAgc2VydmVyX3Rlc3QgXAorICAgIHNlcnZyX2trIFwKKyAgICBzZXJ2cl91ayBcCisgICAgc2VydnJfa3UgXAorICAgIHNlcnZyX3V1IFwKKyAgICBzaG9ydF90aHJlYWQgXAorICAgIHNpZ3BpcGUgXAorICAgIHNvY2tldCBcCisgICAgc29ja29wdCBcCisgICAgc29ja3BpbmcgXAorICAgIHNwcmludGYgXAorICAgIHN0YWNrIFwKKyAgICBzdGRpbyBcCisgICAgc3RyMmFkZHIgXAorICAgIHN0cm9kIFwKKyAgICBzd2l0Y2ggXAorICAgIHN5c3RlbSBcCisgICAgdGVzdGJpdCBcCisgICAgdGVzdGZpbGUgXAorICAgIHRocmVhZHMgXAorICAgIHRpbWVtYWMgXAorICAgIHRpbWV0ZXN0IFwKKyAgICB0cGQgXAorICAgIHVkcHNydiBcCisgICAgdmVyY2hlY2sgXAorICAgIHZlcnNpb24gXAorICAgIHdyaXRldiBcCisgICAgeG5vdGlmeSBcCisgICAgemVyb2xlbiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJb2VfcnVubWFrZSBDUk9TU19DT01QSUxFPTEgQ0ZMQUdTPSItRFhQX1VOSVggJHtCVUlMRF9DRkxBR1N9IiBMREZMQUdTPSIiIENDPSIke0JVSUxEX0NDfSIgLUMgY29uZmlnIGV4cG9ydAorfQorCitkb19jb21waWxlX2FwcGVuZCgpIHsKKwlvZV9ydW5tYWtlIC1DIHByL3Rlc3RzCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLUQgJHtXT1JLRElSfS9uc3ByLnBjLmluICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKKyAgICBzZWQgLWkgIFwKKyAgICAtZSAnczpOU1BSVkVSU0lPTjoke1BWfTpnJyBcCisgICAgLWUgJ3M6T0VQUkVGSVg6JHtwcmVmaXh9OmcnIFwKKyAgICAtZSAnczpPRUxJQkRJUjoke2xpYmRpcn06ZycgXAorICAgIC1lICdzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn06ZycgXAorICAgIC1lICdzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnJyBcCisgICAgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYworCisgICAgbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMucGwgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMuc2ggJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgY2QgJHtCfS9wci90ZXN0cworICAgIGluc3RhbGwgLW0gMDc1NSAke1RFU1RTfSAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKworICAgICMgZGVsZXRlIGNvbXBpbGUtZXQucGwgYW5kIHBlcnIucHJvcGVydGllcyBmcm9tICR7YmluZGlyfSBiZWNhdXNlIHRoZXNlIGFyZQorICAgICMgb25seSB1c2VkIHRvIGdlbmVyYXRlIHByZXJyLmMgYW5kIHByZXJyLmggZmlsZXMgZnJvbSBwcmVyci5ldCBhdCBjb21waWxlCisgICAgIyB0aW1lCisgICAgcm0gJHtEfSR7YmluZGlyfS9jb21waWxlLWV0LnBsICR7RH0ke2JpbmRpcn0vcHJlcnIucHJvcGVydGllcworfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zbyIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbnNwci90ZXN0cy8qICR7bGliZGlyfS9wa2djb25maWcgXAorICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKiAke2RhdGFkaXJ9L2FjbG9jYWwvKiAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtQnVnLTE0Mzc3MzQtVXNlLXNucHJpbnRmLWluLXNpZ24uYy1yLXR0YXViZXJ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1CdWctMTQzNzczNC1Vc2Utc25wcmludGYtaW4tc2lnbi5jLXItdHRhdWJlcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMxMGYzMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtQnVnLTE0Mzc3MzQtVXNlLXNucHJpbnRmLWluLXNpZ24uYy1yLXR0YXViZXJ0LnBhdGNoCkBAIC0wLDAgKzEsMTE5IEBACitGcm9tIDZmN2Q3YmU5OTk3YmE2NzI3YTVhZDdjMzgwMGRmOTA1MTE2MGRjMTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gVGhvbXNvbiA8bWFydGluLnRob21zb25AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMyBGZWIgMjAxOCAxMjozMDo1OCArMTEwMAorU3ViamVjdDogW1BBVENIXSBCdWcgMTQzNzczNCAtIFVzZSBzbnByaW50ZiBpbiBzaWduLmMsIHI9dHRhdWJlcnQKKworLS1IRy0tCitleHRyYSA6IHJlYmFzZV9zb3VyY2UgOiA5NzkyMWVjZTcxZmY4NmIxOGQzMmI4OTE1OTE2MDgyOTBlZWQ0ZDgzCistLS0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbnNzLWRldi9uc3MvY29tbWl0LzBhOTA3OGIzY2RlOTdhZGQ3YzgyNWM5ZDEzNDY3YTg0MDFhZDBjODgjZGlmZi1iNDI1MTIxNTFkYzEzNzUzNzA5MWY4MjNmNzcwMTgwNC5wYXRjaF0KKworIG5zcy9jbWQvc2lnbnRvb2wvc2lnbi5jIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL25zcy9jbWQvc2lnbnRvb2wvc2lnbi5jIGIvbnNzL2NtZC9zaWdudG9vbC9zaWduLmMKK2luZGV4IDZlNzc2MDY5YS4uNmY4ZTQzOTQ2IDEwMDY0NAorLS0tIGEvbnNzL2NtZC9zaWdudG9vbC9zaWduLmMKKysrKyBiL25zcy9jbWQvc2lnbnRvb2wvc2lnbi5jCitAQCAtNDMsNiArNDMsNyBAQCBTaWduQXJjaGl2ZShjaGFyICp0cmVlLCBjaGFyICprZXlOYW1lLCBjaGFyICp6aXBfZmlsZSwgaW50IGphdmFzY3JpcHQsCisgICAgIGludCBzdGF0dXM7CisgICAgIGNoYXIgdGVtcGZuW0ZOU0laRV0sIGZ1bGxmbltGTlNJWkVdOworICAgICBpbnQga2V5VHlwZSA9IHJzYUtleTsKKysgICAgaW50IGNvdW50OworIAorICAgICBtZXRhZmlsZSA9IG1ldGFfZmlsZTsKKyAgICAgb3B0aW1pemUgPSBfb3B0aW1pemU7CitAQCAtODEsOSArODIsMTggQEAgU2lnbkFyY2hpdmUoY2hhciAqdHJlZSwgY2hhciAqa2V5TmFtZSwgY2hhciAqemlwX2ZpbGUsIGludCBqYXZhc2NyaXB0LAorICAgICAgICAgfQorIAorICAgICAgICAgLyogcnNhL2RzYSB0byB6aXAgKi8KKy0gICAgICAgIHNwcmludGYodGVtcGZuLCAiTUVUQS1JTkYvJXMuJXMiLCBiYXNlLCAoa2V5VHlwZSA9PSBkc2FLZXkgPyAiZHNhIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJyc2EiKSk7CistICAgICAgICBzcHJpbnRmKGZ1bGxmbiwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKKysgICAgICAgIGNvdW50ID0gc25wcmludGYodGVtcGZuLCBzaXplb2YodGVtcGZuKSwgIk1FVEEtSU5GLyVzLiVzIiwgYmFzZSwgKGtleVR5cGUgPT0gZHNhS2V5ID8gImRzYSIgOiAicnNhIikpOworKyAgICAgICAgaWYgKGNvdW50ID49IHNpemVvZih0ZW1wZm4pKSB7CisrICAgICAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIGtleSBtZXRhZGF0YVxuIik7CisrICAgICAgICAgICAgZXJyb3JDb3VudCsrOworKyAgICAgICAgICAgIGV4aXQoRVJSWCk7CisrICAgICAgICB9CisrICAgICAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7CisrICAgICAgICBpZiAoY291bnQgPj0gc2l6ZW9mKGZ1bGxmbikpIHsKKysgICAgICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUga2V5IG1ldGFkYXRhXG4iKTsKKysgICAgICAgICAgICBlcnJvckNvdW50Kys7CisrICAgICAgICAgICAgZXhpdChFUlJYKTsKKysgICAgICAgIH0KKyAgICAgICAgIEp6aXBBZGQoZnVsbGZuLCB0ZW1wZm4sIHppcGZpbGUsIGNvbXByZXNzaW9uX2xldmVsKTsKKyAKKyAgICAgICAgIC8qIExvb3AgdGhyb3VnaCBhbGwgZmlsZXMgJiBzdWJkaXJlY3RvcmllcywgYWRkIHRvIGFyY2hpdmUgKi8KK0BAIC05MywyMCArMTAzLDQ0IEBAIFNpZ25BcmNoaXZlKGNoYXIgKnRyZWUsIGNoYXIgKmtleU5hbWUsIGNoYXIgKnppcF9maWxlLCBpbnQgamF2YXNjcmlwdCwKKyAgICAgfQorICAgICAvKiBtZiB0byB6aXAgKi8KKyAgICAgc3RyY3B5KHRlbXBmbiwgIk1FVEEtSU5GL21hbmlmZXN0Lm1mIik7CistICAgIHNwcmludGYoZnVsbGZuLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOworKyAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7CisrICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgeworKyAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIG1hbmlmZXN0XG4iKTsKKysgICAgICAgIGVycm9yQ291bnQrKzsKKysgICAgICAgIGV4aXQoRVJSWCk7CisrICAgIH0KKyAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworIAorICAgICAvKiBzZiB0byB6aXAgKi8KKy0gICAgc3ByaW50Zih0ZW1wZm4sICJNRVRBLUlORi8lcy5zZiIsIGJhc2UpOworLSAgICBzcHJpbnRmKGZ1bGxmbiwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKKysgICAgY291bnQgPSBzbnByaW50Zih0ZW1wZm4sIHNpemVvZih0ZW1wZm4pLCAiTUVUQS1JTkYvJXMuc2YiLCBiYXNlKTsKKysgICAgaWYgKGNvdW50ID49IHNpemVvZih0ZW1wZm4pKSB7CisrICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUgc2YgbWV0YWRhdGFcbiIpOworKyAgICAgICAgZXJyb3JDb3VudCsrOworKyAgICAgICAgZXhpdChFUlJYKTsKKysgICAgfQorKyAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7CisrICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgeworKyAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIHNmIG1ldGFkYXRhXG4iKTsKKysgICAgICAgIGVycm9yQ291bnQrKzsKKysgICAgICAgIGV4aXQoRVJSWCk7CisrICAgIH0KKyAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworIAorICAgICAvKiBBZGQgdGhlIHJzYS9kc2EgZmlsZSB0byB0aGUgemlwIGFyY2hpdmUgbm9ybWFsbHkgKi8KKyAgICAgaWYgKCF4cGlfYXJjKSB7CisgICAgICAgICAvKiByc2EvZHNhIHRvIHppcCAqLworLSAgICAgICAgc3ByaW50Zih0ZW1wZm4sICJNRVRBLUlORi8lcy4lcyIsIGJhc2UsIChrZXlUeXBlID09IGRzYUtleSA/ICJkc2EiCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInJzYSIpKTsKKy0gICAgICAgIHNwcmludGYoZnVsbGZuLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOworKyAgICAgICAgY291bnQgPSBzbnByaW50Zih0ZW1wZm4sIHNpemVvZih0ZW1wZm4pLCAiTUVUQS1JTkYvJXMuJXMiLCBiYXNlLCAoa2V5VHlwZSA9PSBkc2FLZXkgPyAiZHNhIiA6ICJyc2EiKSk7CisrICAgICAgICBpZiAoY291bnQgPj0gc2l6ZW9mKHRlbXBmbikpIHsKKysgICAgICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUga2V5IG1ldGFkYXRhXG4iKTsKKysgICAgICAgICAgICBlcnJvckNvdW50Kys7CisrICAgICAgICAgICAgZXhpdChFUlJYKTsKKysgICAgICAgIH0KKysgICAgICAgIGNvdW50ID0gc25wcmludGYoZnVsbGZuLCBzaXplb2YoZnVsbGZuKSwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKKysgICAgICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgeworKyAgICAgICAgICAgIFBSX2ZwcmludGYoZXJyb3JGRCwgInVuYWJsZSB0byB3cml0ZSBrZXkgbWV0YWRhdGFcbiIpOworKyAgICAgICAgICAgIGVycm9yQ291bnQrKzsKKysgICAgICAgICAgICBleGl0KEVSUlgpOworKyAgICAgICAgfQorICAgICAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworICAgICB9CisgCitAQCAtNDA4LDYgKzQ0Miw3IEBAIHN0YXRpYyBpbnQKKyBtYW5pZmVzdG9feHBpX2ZuKGNoYXIgKnJlbHBhdGgsIGNoYXIgKmJhc2VkaXIsIGNoYXIgKnJlbGRpciwgY2hhciAqZmlsZW5hbWUsIHZvaWQgKmFyZykKKyB7CisgICAgIGNoYXIgZnVsbG5hbWVbRk5TSVpFXTsKKysgICAgaW50IGNvdW50OworIAorICAgICBpZiAodmVyYm9zaXR5ID49IDApIHsKKyAgICAgICAgIFBSX2ZwcmludGYob3V0cHV0RkQsICItLT4gJXNcbiIsIHJlbHBhdGgpOworQEAgLTQyMSw3ICs0NTYsMTAgQEAgbWFuaWZlc3RvX3hwaV9mbihjaGFyICpyZWxwYXRoLCBjaGFyICpiYXNlZGlyLCBjaGFyICpyZWxkaXIsIGNoYXIgKmZpbGVuYW1lLCB2b2kKKyAgICAgICAgIGlmICghUExfSGFzaFRhYmxlTG9va3VwKGV4dGVuc2lvbnMsIGV4dCkpCisgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKy0gICAgc3ByaW50ZihmdWxsbmFtZSwgIiVzLyVzIiwgYmFzZWRpciwgcmVscGF0aCk7CisrICAgIGNvdW50ID0gc25wcmludGYoZnVsbG5hbWUsIHNpemVvZihmdWxsbmFtZSksICIlcy8lcyIsIGJhc2VkaXIsIHJlbHBhdGgpOworKyAgICBpZiAoY291bnQgPj0gc2l6ZW9mKGZ1bGxuYW1lKSkgeworKyAgICAgICAgcmV0dXJuIDE7CisrICAgIH0KKyAgICAgSnppcEFkZChmdWxsbmFtZSwgcmVscGF0aCwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworIAorICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1idWlsZC1oYWNsLXBvbHkxMzA1LWFhcmNoNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtYnVpbGQtaGFjbC1wb2x5MTMwNS1hYXJjaDY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNzZmODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtYnVpbGQtaGFjbC1wb2x5MTMwNS1hYXJjaDY0LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKKyMgSEcgY2hhbmdlc2V0IHBhdGNoCisjIFVzZXIgRGFpa2kgVWVubyA8ZHVlbm9AcmVkaGF0LmNvbT4KKyMgRGF0ZSAxNTE2NzEwNTc0IC0zNjAwCisjICAgICAgVHVlIEphbiAyMyAxMzoyOTozNCAyMDE4ICswMTAwCisjIE5vZGUgSUQgMjdmMjdjZTIxYzJjNmZmNWE0N2ZhOWUxN2M0MzhiMDAwMzY2YzljOQorIyBQYXJlbnQgIGJlMWRjYTVhYzgwNTQxZDNiODFhOGRhOWQ0Mjg1NGQ4YjFjY2VlZmIKK0J1aWxkIEhhY2xfUG9seTEzMDVfNjQubyBvbiBhYXJjaDY0IGV2ZW4gd2l0aCBtYWtlCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK2h0dHBzOi8vYnVnMTQzMjQ1NS5ibW9hdHRhY2htZW50cy5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9ODk0NDY5MQorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKK0luZGV4OiBuc3MtMy4zNS9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5zcy0zLjM1Lm9yaWcvbnNzL2xpYi9mcmVlYmwvTWFrZWZpbGUKKysrKyBuc3MtMy4zNS9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQorQEAgLTUzMyw3ICs1MzMsMTIgQEAgaWZuZGVmIE5TU19ESVNBQkxFX0NIQUNIQVBPTFkKKyAgICAgICAgICAgICBFWFRSQV9TUkNTICs9IGNoYWNoYTIwX3ZlYy5jCisgICAgICAgICBlbmRpZgorICAgICBlbHNlCistICAgICAgICBFWFRSQV9TUkNTICs9IHBvbHkxMzA1LmMKKysgICAgICAgIGlmZXEgKCQoQ1BVX0FSQ0gpLGFhcmNoNjQpCisrICAgICAgICAgICAgRVhUUkFfU1JDUyArPSBIYWNsX1BvbHkxMzA1XzY0LmMKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBFWFRSQV9TUkNTICs9IHBvbHkxMzA1LmMKKysgICAgICAgIGVuZGlmCisrCisgICAgICAgICBFWFRSQV9TUkNTICs9IGNoYWNoYTIwLmMKKyAgICAgICAgIFZFUklGSUVEX1NSQ1MgKz0gSGFjbF9DaGFjaGEyMC5jCisgICAgIGVuZGlmICMgeDg2XzY0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjMxLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjMxLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYjliZGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4zMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUzICswLDAgQEAKLVNVTU1BUlkgPSAiTW96aWxsYSdzIFNTTCBhbmQgVExTIGltcGxlbWVudGF0aW9uIgotREVTQ1JJUFRJT04gPSAiTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcyAoTlNTKSBpcyBhIHNldCBvZiBsaWJyYXJpZXMgXAotZGVzaWduZWQgdG8gc3VwcG9ydCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBvZiBcCi1zZWN1cml0eS1lbmFibGVkIGNsaWVudCBhbmQgc2VydmVyIGFwcGxpY2F0aW9ucy4gXAotQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggTlNTIGNhbiBzdXBwb3J0IFNTTCB2MiBhbmQgdjMsIFwKLVRMUywgUEtDUyA1LCBQS0NTIDcsIFBLQ1MgMTEsIFBLQ1MgMTIsIFMvTUlNRSwgWC41MDkgXAotdjMgY2VydGlmaWNhdGVzLCBhbmQgb3RoZXIgc2VjdXJpdHkgc3RhbmRhcmRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvc2VjdXJpdHkvcGtpL25zcy8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKLQotVkVSU0lPTl9ESVIgPSAiJHtAZC5nZXRWYXIoJ0JQJykudXBwZXIoKS5yZXBsYWNlKCctJywgJ18nKS5yZXBsYWNlKCcuJywgJ18nKSArICdfUlRNJ30iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzLyR7VkVSU0lPTl9ESVJ9L3NyYy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbnNzLnBjLmluIFwKLSAgICAgICAgICAgZmlsZTovL3NpZ25saWJzLnNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYmI0NGYxMzk0MjUwZDJjZjZlYzNjMmUzZDcxZmEyMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MzM0MzkyMTRkYzAzZWU2MGU4NmQxNDE5YzE5ZTE1Njg5OThiMDc3NmRkZTk4N2Y0MWZhNzBjZWQ2Y2QwOGRjIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9OU1NfUmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOU1NfKD9QPHB2ZXI+LispX3JlbGVhc2Vfbm90ZXMiCi0KLWluaGVyaXQgc2l0ZWluZm8KLQotREVQRU5EUyA9ICJzcWxpdGUzIG5zcHIgemxpYiBuc3MtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAic3FsaXRlMy1uYXRpdmUgbnNwci1uYXRpdmUgemxpYi1uYXRpdmUiCi1SREVQRU5EU18ke1BOfS1zbWltZSA9ICJwZXJsIgotCi1URCA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0IgotVERTID0gIiR7U30vdGVudGF0aXZlLWRpc3Qtc3RhZ2luZyIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2xpYmMtbXVzbCAoKSB7Ci0gICAgc2VkIC1pIC1lICcvLURIQVZFX1NZU19DREVGU19IL2QnICR7U30vbnNzL2xpYi9kYm0vY29uZmlnL2NvbmZpZy5tawotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGV4cG9ydCBOU1BSX0lOQ0xVREVfRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfQotICAgIGV4cG9ydCBOU1BSX0xJQl9ESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9Ci0gICAgZXhwb3J0IE5TU19FTkFCTEVfV0VSUk9SPTAKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICBleHBvcnQgTERGTEFHUz0iIgotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICMgTmVlZCB0byBzZXQgUlBBVEggc28gdGhhdCBjaHJwYXRoIHdpbGwgZG8gaXRzIGpvYiBjb3JyZWN0bHkKLSAgICBSUEFUSD0iLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSIKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCi0gICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCi0gICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtCVUlMRF9DRkxBR1N9IgotICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQotCi0gICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQotICAgIGV4cG9ydCBGUkVFQkxfTE9XSEFTSD0xCi0KLSAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQotICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCi0gICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQotICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCi0KLSAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKLSAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4Ci0gICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKLQotICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjNjQKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1taXBzCi0gICAgZWxzZQotICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKLSAgICBmaQotCi0gICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV82ND0xCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQotICAgIGZpCi0KLSAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKLQotICAgICMgV2UgY2FuIG1vZGlmeSBDQyBpbiB0aGUgZW52aXJvbm1lbnQsIGJ1dCBpZiB3ZSBzZXQgaXQgdmlhIGFuCi0gICAgIyBhcmd1bWVudCB0byBtYWtlLCBuc2luc3RhbGwsIGEgaG9zdCBwcm9ncmFtLCB3aWxsIGFsc28gYnVpbGQgd2l0aCBpdCEKLSAgICAjCi0gICAgIyBuc3MgcHJldHR5IG11Y2ggZG9lcyBpdHMgb3duIHRoaW5nIHdpdGggQ0ZMQUdTLCBzbyB3ZSBwdXQgdGhlbSBpbnRvIENDLgotICAgICMgT3B0aW1pemF0aW9uIHdpbGwgZ2V0IGNsb2JiZXJlZCwgYnV0IG1vc3Qgb2YgdGhlIHN0dWZmIHdpbGwgc3Vydml2ZS4KLSAgICAjIFRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGlzIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlIGZvciBkZWJ1ZwotICAgICMgc291cmNlIGZpbGVzIGFuZCBDRkxBR1MgZG9lcyB0aGF0LiAgTm90aGluZyB1c2VzIENDQy4KLSAgICAjCi0gICAgZXhwb3J0IENDPSIke0NDfSAke0NGTEFHU30iCi0gICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAotICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAotICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCi19Ci1kb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKLQotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIGV4cG9ydCBMREZMQUdTPSIiCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQotICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgotICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQotCi0gICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQotCi0gICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KLSAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQotICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKLSAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKLSAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQotCi0gICAgZXhwb3J0IE9TX1JFTEVBU0U9My40Ci0gICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAotICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4Ci0KLSAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYwotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYzY0Ci0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9bWlwcwotICAgIGVsc2UKLSAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCi0gICAgZmkKLSAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFXzY0PTEKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFX1gzMj0xCi0gICAgZmkKLQotICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQotCi0gICAgbWFrZSAtQyAuL25zcyBcCi0gICAgICAgIENDQz0iJHtDWFh9IiBcCi0gICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCi0gICAgICAgIFNPVVJDRV9MSUJfRElSPSIke1REfS8ke2xpYmRpcn0iIFwKLSAgICAgICAgU09VUkNFX0JJTl9ESVI9IiR7VER9LyR7YmluZGlyfSIgXAotICAgICAgICBpbnN0YWxsCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LwotICAgIGZvciBmaWxlIGluICR7U30vZGlzdC8qLk9CSi9saWIvKi5zbzsgZG8KLSAgICAgICAgZWNobyAiSW5zdGFsbGluZyBgYmFzZW5hbWUgJGZpbGVgLi4uIgotICAgICAgICBjcCAkZmlsZSAgJHtEfS8ke2xpYmRpcn0vCi0gICAgZG9uZQotCi0gICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc28uKjsgZG8KLSAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiBdOyB0aGVuCi0gICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQotICAgICAgICAgICAgbG4gLXNmICQoYmFzZW5hbWUgJHNoYXJlZF9saWIpICR7RH0vJHtsaWJkaXJ9LyQoYmFzZW5hbWUgJHNoYXJlZF9saWIgLjFvZSkKLSAgICAgICAgZmkKLSAgICBkb25lCi0gICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc287IGRvCi0gICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgLWEgISAtZSAke0R9LyR7bGliZGlyfS8kc2hhcmVkX2xpYiBdOyB0aGVuCi0gICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQotICAgICAgICBmaQotICAgIGRvbmUKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMKLSAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMyBkaXN0L3B1YmxpYy9uc3MvKgotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQotICAgIGZvciBiaW5hcnkgaW4gJHtURH0vJHtiaW5kaXJ9Lyo7IGRvCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IC10ICR7RH0vJHtiaW5kaXJ9ICRiaW5hcnkKLSAgICBkb25lCi19Ci1kb19pbnN0YWxsW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBDcmVhdGUgZW1wdHkgLmNoayBmaWxlcyBmb3IgdGhlIE5TUyBsaWJyYXJpZXMgYXQgYnVpbGQgdGltZS4gVGhleSBjb3VsZAotICAgICMgYmUgcmVnZW5lcmF0ZWQgYXQgdGFyZ2V0J3MgYm9vdCB0aW1lLgotICAgIGZvciBmaWxlIGluIGxpYnNvZnRva24zLmNoayBsaWJmcmVlYmwzLmNoayBsaWJuc3NkYm0zLmNoazsgZG8KLSAgICAgICAgdG91Y2ggJHtEfS8ke2xpYmRpcn0vJGZpbGUKLSAgICAgICAgY2htb2QgNzU1ICR7RH0vJHtsaWJkaXJ9LyRmaWxlCi0gICAgZG9uZQotICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7V09SS0RJUn0vc2lnbmxpYnMuc2ggJHtEfS8ke2JpbmRpcn0vc2lnbmxpYnMuc2gKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCi0gICAgc2VkICdzLyVOU1NfVkVSU0lPTiUvJHtQVn0vJyAke1dPUktESVJ9L25zcy5wYy5pbiB8IHNlZCAncy8lTlNQUl9WRVJTSU9OJS80LjkuMi8nID4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VQUkVGSVg6JHtwcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VMSUJESVI6JHtsaWJkaXJ9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VJTkNESVI6JHtpbmNsdWRlZGlyfS9uc3MzOmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAjIENyZWF0ZSBhIGJsYW5rIGNlcnRpZmljYXRlCi0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLwotICAgIHRvdWNoIC4vZW1wdHlfcGFzc3dvcmQKLSAgICBjZXJ0dXRpbCAtTiAtZCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvIC1mIC4vZW1wdHlfcGFzc3dvcmQKLSAgICBjaG1vZCA2NDQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLyouZGIKLSAgICBybSAuL2VtcHR5X3Bhc3N3b3JkCi19Ci0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAibnNzLW5hdGl2ZSIKLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0gICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KLSAgICAgICAgZm9yIEkgaW4gJEQke2xpYmRpcn0vbGliKi5jaGs7IGRvCi0gICAgICAgICAgICBETj1gZGlybmFtZSAkSWAKLSAgICAgICAgICAgIEJOPWBiYXNlbmFtZSAkSSAuY2hrYAotICAgICAgICAgICAgRk49JEROLyRCTi5zbwotICAgICAgICAgICAgc2hsaWJzaWduIC1pICRGTgotICAgICAgICAgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0gICAgICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgZWxzZQotICAgICAgICBzaWdubGlicy5zaAotICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1zbWltZSIKLUZJTEVTXyR7UE59LXNtaW1lID0gIlwKLSAgICAke2JpbmRpcn0vc21pbWUgXAotIgotRklMRVNfJHtQTn0gPSAiXAotICAgICR7c3lzY29uZmRpcn0gXAotICAgICR7YmluZGlyfSBcCi0gICAgJHtsaWJkaXJ9L2xpYiouY2hrIFwKLSAgICAke2xpYmRpcn0vbGliKi5zbyBcCi0gICAgIgotRklMRVNfJHtQTn0tZGV2ID0gIlwKLSAgICAke2xpYmRpcn0vbnNzIFwKLSAgICAke2xpYmRpcn0vcGtnY29uZmlnLyogXAotICAgICR7aW5jbHVkZWRpcn0vKiBcCi0gICAgIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjM1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZjE5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjM1LmJiCkBAIC0wLDAgKzEsMjU1IEBACitTVU1NQVJZID0gIk1vemlsbGEncyBTU0wgYW5kIFRMUyBpbXBsZW1lbnRhdGlvbiIKK0RFU0NSSVBUSU9OID0gIk5ldHdvcmsgU2VjdXJpdHkgU2VydmljZXMgKE5TUykgaXMgYSBzZXQgb2YgbGlicmFyaWVzIFwKK2Rlc2lnbmVkIHRvIHN1cHBvcnQgY3Jvc3MtcGxhdGZvcm0gZGV2ZWxvcG1lbnQgb2YgXAorc2VjdXJpdHktZW5hYmxlZCBjbGllbnQgYW5kIHNlcnZlciBhcHBsaWNhdGlvbnMuIFwKK0FwcGxpY2F0aW9ucyBidWlsdCB3aXRoIE5TUyBjYW4gc3VwcG9ydCBTU0wgdjIgYW5kIHYzLCBcCitUTFMsIFBLQ1MgNSwgUEtDUyA3LCBQS0NTIDExLCBQS0NTIDEyLCBTL01JTUUsIFguNTA5IFwKK3YzIGNlcnRpZmljYXRlcywgYW5kIG90aGVyIHNlY3VyaXR5IHN0YW5kYXJkcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3NlY3VyaXR5L3BraS9uc3MvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1QTC0yLjAgfCAoTVBMLTIuMCAmIEdQTC0yLjArKSB8IChNUEwtMi4wICYgTEdQTC0yLjErKSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbnNzL0NPUFlJTkc7bWQ1PTNiMWU4OGUxYjljMGI1YTRiMjg4MWQ0NmNjZTA2YTE4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL25zcy9saWIvZnJlZWJsL21waS9kb2MvTElDRU5TRTttZDU9NDkxZjE1OGQwOWQ5NDg0NjZhZmNlODVkNmYxZmUxOGYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFLU1QTDttZDU9NWQ0MjVjOGYzMTU3ZGJmMjEyZGIyZWM1M2Q5ZTUxMzIiCisKK1ZFUlNJT05fRElSID0gIiR7QGQuZ2V0VmFyKCdCUCcpLnVwcGVyKCkucmVwbGFjZSgnLScsICdfJykucmVwbGFjZSgnLicsICdfJykgKyAnX1JUTSd9IgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL21vemlsbGEub3JnL3NlY3VyaXR5L25zcy9yZWxlYXNlcy8ke1ZFUlNJT05fRElSfS9zcmMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL25zcy5wYy5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9zaWdubGlicy5zaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5zcy1maXgtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNzLW5vLXJwYXRoLWZvci1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1pbmNvcnJlY3Qtc2hlYmFuZy1vZi1wZXJsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wcWcuYy1VTExfYWRkZW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0ZpeC1jb21waWxhdGlvbi1mb3ItWDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcy1idWlsZC1oYWNsLXBvbHkxMzA1LWFhcmNoNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1CdWctMTQzNzczNC1Vc2Utc25wcmludGYtaW4tc2lnbi5jLXItdHRhdWJlcnQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NDY3ZWM5ZTY1YzVhZWIzMjU0YTUwMjUwNDkwZjVmNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNDEyN2RlMDliZWRlMzlmNWZkMGY3ODlkMzNjMzUwNGM1ZDI2MWU2OWVhMDMwMjJkNDZiMzE5YjNlMzJmNmZhIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9OU1NfUmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOU1NfKD9QPHB2ZXI+LispX3JlbGVhc2Vfbm90ZXMiCisKK2luaGVyaXQgc2l0ZWluZm8KKworREVQRU5EUyA9ICJzcWxpdGUzIG5zcHIgemxpYiBuc3MtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAic3FsaXRlMy1uYXRpdmUgbnNwci1uYXRpdmUgemxpYi1uYXRpdmUiCitSREVQRU5EU18ke1BOfS1zbWltZSA9ICJwZXJsIgorCitURCA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0IgorVERTID0gIiR7U30vdGVudGF0aXZlLWRpc3Qtc3RhZ2luZyIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2xpYmMtbXVzbCAoKSB7CisgICAgc2VkIC1pIC1lICcvLURIQVZFX1NZU19DREVGU19IL2QnICR7U30vbnNzL2xpYi9kYm0vY29uZmlnL2NvbmZpZy5taworfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIGV4cG9ydCBOU1BSX0lOQ0xVREVfRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfQorICAgIGV4cG9ydCBOU1BSX0xJQl9ESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9CisgICAgZXhwb3J0IE5TU19FTkFCTEVfV0VSUk9SPTAKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICBleHBvcnQgTERGTEFHUz0iIgorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICMgTmVlZCB0byBzZXQgUlBBVEggc28gdGhhdCBjaHJwYXRoIHdpbGwgZG8gaXRzIGpvYiBjb3JyZWN0bHkKKyAgICBSUEFUSD0iLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSIKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCisgICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCisgICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtCVUlMRF9DRkxBR1N9IgorICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQorCisgICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQorICAgIGV4cG9ydCBGUkVFQkxfTE9XSEFTSD0xCisKKyAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQorICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCisgICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQorICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQorICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCisKKyAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKKyAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4CisgICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKKworICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjNjQKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1taXBzCisgICAgZWxzZQorICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKKyAgICBmaQorCisgICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV82ND0xCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQorICAgIGZpCisKKyAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKKworICAgICMgV2UgY2FuIG1vZGlmeSBDQyBpbiB0aGUgZW52aXJvbm1lbnQsIGJ1dCBpZiB3ZSBzZXQgaXQgdmlhIGFuCisgICAgIyBhcmd1bWVudCB0byBtYWtlLCBuc2luc3RhbGwsIGEgaG9zdCBwcm9ncmFtLCB3aWxsIGFsc28gYnVpbGQgd2l0aCBpdCEKKyAgICAjCisgICAgIyBuc3MgcHJldHR5IG11Y2ggZG9lcyBpdHMgb3duIHRoaW5nIHdpdGggQ0ZMQUdTLCBzbyB3ZSBwdXQgdGhlbSBpbnRvIENDLgorICAgICMgT3B0aW1pemF0aW9uIHdpbGwgZ2V0IGNsb2JiZXJlZCwgYnV0IG1vc3Qgb2YgdGhlIHN0dWZmIHdpbGwgc3Vydml2ZS4KKyAgICAjIFRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGlzIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlIGZvciBkZWJ1ZworICAgICMgc291cmNlIGZpbGVzIGFuZCBDRkxBR1MgZG9lcyB0aGF0LiAgTm90aGluZyB1c2VzIENDQy4KKyAgICAjCisgICAgZXhwb3J0IENDPSIke0NDfSAke0NGTEFHU30iCisgICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAorICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAorICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCit9Citkb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKKworCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGV4cG9ydCBMREZMQUdTPSIiCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQorICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgorICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQorCisgICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQorCisgICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KKyAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQorICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKKyAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKKyAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQorCisgICAgZXhwb3J0IE9TX1JFTEVBU0U9My40CisgICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAorICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4CisKKyAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYzY0CisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9bWlwcworICAgIGVsc2UKKyAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCisgICAgZmkKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgbWFrZSAtQyAuL25zcyBcCisgICAgICAgIENDQz0iJHtDWFh9IiBcCisgICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCisgICAgICAgIFNPVVJDRV9MSUJfRElSPSIke1REfS8ke2xpYmRpcn0iIFwKKyAgICAgICAgU09VUkNFX0JJTl9ESVI9IiR7VER9LyR7YmluZGlyfSIgXAorICAgICAgICBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LworICAgIGZvciBmaWxlIGluICR7U30vZGlzdC8qLk9CSi9saWIvKi5zbzsgZG8KKyAgICAgICAgZWNobyAiSW5zdGFsbGluZyBgYmFzZW5hbWUgJGZpbGVgLi4uIgorICAgICAgICBjcCAkZmlsZSAgJHtEfS8ke2xpYmRpcn0vCisgICAgZG9uZQorCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc28uKjsgZG8KKyAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICAgICAgbG4gLXNmICQoYmFzZW5hbWUgJHNoYXJlZF9saWIpICR7RH0vJHtsaWJkaXJ9LyQoYmFzZW5hbWUgJHNoYXJlZF9saWIgLjFvZSkKKyAgICAgICAgZmkKKyAgICBkb25lCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc287IGRvCisgICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgLWEgISAtZSAke0R9LyR7bGliZGlyfS8kc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICBmaQorICAgIGRvbmUKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMKKyAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMyBkaXN0L3B1YmxpYy9uc3MvKgorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgIGZvciBiaW5hcnkgaW4gJHtURH0vJHtiaW5kaXJ9Lyo7IGRvCisgICAgICAgIGluc3RhbGwgLW0gNzU1IC10ICR7RH0vJHtiaW5kaXJ9ICRiaW5hcnkKKyAgICBkb25lCit9Citkb19pbnN0YWxsW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBDcmVhdGUgZW1wdHkgLmNoayBmaWxlcyBmb3IgdGhlIE5TUyBsaWJyYXJpZXMgYXQgYnVpbGQgdGltZS4gVGhleSBjb3VsZAorICAgICMgYmUgcmVnZW5lcmF0ZWQgYXQgdGFyZ2V0J3MgYm9vdCB0aW1lLgorICAgIGZvciBmaWxlIGluIGxpYnNvZnRva24zLmNoayBsaWJmcmVlYmwzLmNoayBsaWJuc3NkYm0zLmNoazsgZG8KKyAgICAgICAgdG91Y2ggJHtEfS8ke2xpYmRpcn0vJGZpbGUKKyAgICAgICAgY2htb2QgNzU1ICR7RH0vJHtsaWJkaXJ9LyRmaWxlCisgICAgZG9uZQorICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7V09SS0RJUn0vc2lnbmxpYnMuc2ggJHtEfS8ke2JpbmRpcn0vc2lnbmxpYnMuc2gKKworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCisgICAgc2VkICdzLyVOU1NfVkVSU0lPTiUvJHtQVn0vJyAke1dPUktESVJ9L25zcy5wYy5pbiB8IHNlZCAncy8lTlNQUl9WRVJTSU9OJS80LjkuMi8nID4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VQUkVGSVg6JHtwcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VMSUJESVI6JHtsaWJkaXJ9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VJTkNESVI6JHtpbmNsdWRlZGlyfS9uc3MzOmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAjIENyZWF0ZSBhIGJsYW5rIGNlcnRpZmljYXRlCisgICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLworICAgIHRvdWNoIC4vZW1wdHlfcGFzc3dvcmQKKyAgICBjZXJ0dXRpbCAtTiAtZCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvIC1mIC4vZW1wdHlfcGFzc3dvcmQKKyAgICBjaG1vZCA2NDQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLyouZGIKKyAgICBybSAuL2VtcHR5X3Bhc3N3b3JkCit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAibnNzLW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KKyAgICAgICAgZm9yIEkgaW4gJEQke2xpYmRpcn0vbGliKi5jaGs7IGRvCisgICAgICAgICAgICBETj1gZGlybmFtZSAkSWAKKyAgICAgICAgICAgIEJOPWBiYXNlbmFtZSAkSSAuY2hrYAorICAgICAgICAgICAgRk49JEROLyRCTi5zbworICAgICAgICAgICAgc2hsaWJzaWduIC1pICRGTgorICAgICAgICAgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisgICAgICAgICAgICAgICAgZXhpdCAxCisgICAgICAgICAgICBmaQorICAgICAgICBkb25lCisgICAgZWxzZQorICAgICAgICBzaWdubGlicy5zaAorICAgIGZpCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1zbWltZSIKK0ZJTEVTXyR7UE59LXNtaW1lID0gIlwKKyAgICAke2JpbmRpcn0vc21pbWUgXAorIgorRklMRVNfJHtQTn0gPSAiXAorICAgICR7c3lzY29uZmRpcn0gXAorICAgICR7YmluZGlyfSBcCisgICAgJHtsaWJkaXJ9L2xpYiouY2hrIFwKKyAgICAke2xpYmRpcn0vbGliKi5zbyBcCisgICAgIgorRklMRVNfJHtQTn0tZGV2ID0gIlwKKyAgICAke2xpYmRpcn0vbnNzIFwKKyAgICAke2xpYmRpcn0vcGtnY29uZmlnLyogXAorICAgICR7aW5jbHVkZWRpcn0vKiBcCisgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjAuMC9ncGctZXJyb3JfcGtjb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMS4wL2dwZy1lcnJvcl9wa2NvbmYucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjAuMC9ncGctZXJyb3JfcGtjb25mLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4xLjAvZ3BnLWVycm9yX3BrY29uZi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMC4wL2xpYmFzc3Vhbl9wa2djb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMS4wL2xpYmFzc3Vhbl9wa2djb25mLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4wLjAvbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjEuMC9saWJhc3N1YW5fcGtnY29uZi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTlhY2QzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29sbGVjdGlvbiBvZiBzaW1wbGUgUElOIG9yIHBhc3NwaHJhc2UgZW50cnkgZGlhbG9ncyIKLURFU0NSSVBUSU9OID0gIlwKLQlQaW5lbnRyeSBpcyBhIGNvbGxlY3Rpb24gb2Ygc2ltcGxlIFBJTiBvciBwYXNzcGhyYXNlIGVudHJ5IGRpYWxvZ3Mgd2hpY2ggXAotCXV0aWxpemUgdGhlIEFzc3VhbiBwcm90b2NvbCBhcyBkZXNjcmliZWQgYnkgdGhlIGFlZ3lwdGVuIHByb2plY3Q7IHNlZSBcCi0JaHR0cDovL3d3dy5nbnVwZy5vcmcvYWVneXB0ZW4vIGZvciBkZXRhaWxzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9waW5lbnRyeS9pbmRleC5lbi5odG1sIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNiYmQ3OTRlMmEwYTI4OWI5ZGZjYzlmNTEzZDE5OTZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSBsaWJhc3N1YW4gbGliZ3BnLWVycm9yIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJhc3N1YW5fcGtnY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ncGctZXJyb3JfcGtjb25mLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRhM2ZhZDhiMzFmOWI0YzU1MjZjODgzNzQ5NTAxNWRjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE2NzJjMmVkYzFmZWIwMzYwNzViMTg3YzA3NzM3ODdiMmFmZDA1NDRmNTUwMjVjNjQ1YTcxYjRjMmY3OTI3NWEiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnBhdGggLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1waW5lbnRyeS1xdDUgIFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm5jdXJzZXMgbGliY2FwIgotCi1QQUNLQUdFQ09ORklHW25jdXJzZXNdID0gIi0tZW5hYmxlLW5jdXJzZXMgIC0td2l0aC1uY3Vyc2VzLWluY2x1ZGUtZGlyPSR7U1RBR0lOR19JTkNESVJ9LCAtLWRpc2FibGUtbmN1cnNlcywgbmN1cnNlcyIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLCAtLXdpdGhvdXQtbGliY2FwLCBsaWJjYXAiCi1QQUNLQUdFQ09ORklHW3F0XSA9ICItLWVuYWJsZS1waW5lbnRyeS1xdCwgLS1kaXNhYmxlLXBpbmVudHJ5LXF0LCBxdDQteDExIgotUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItLWVuYWJsZS1waW5lbnRyeS1ndGsyLCAtLWRpc2FibGUtcGluZW50cnktZ3RrMiwgZ3RrKyBnbGliLTIuMCIKLQotI1RvIHVzZSBsaWJzZWNyZXQsIGFkZCBtZXRhLWdub21lCi1QQUNLQUdFQ09ORklHW3NlY3JldF0gPSAiLS1lbmFibGUtbGlic2VjcmV0LCAtLWRpc2FibGUtbGlic2VjcmV0LCBsaWJzZWNyZXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVhYTI2MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjEuMC5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIkNvbGxlY3Rpb24gb2Ygc2ltcGxlIFBJTiBvciBwYXNzcGhyYXNlIGVudHJ5IGRpYWxvZ3MiCitERVNDUklQVElPTiA9ICJcCisJUGluZW50cnkgaXMgYSBjb2xsZWN0aW9uIG9mIHNpbXBsZSBQSU4gb3IgcGFzc3BocmFzZSBlbnRyeSBkaWFsb2dzIHdoaWNoIFwKKwl1dGlsaXplIHRoZSBBc3N1YW4gcHJvdG9jb2wgYXMgZGVzY3JpYmVkIGJ5IHRoZSBhZWd5cHRlbiBwcm9qZWN0OyBzZWUgXAorCWh0dHA6Ly93d3cuZ251cGcub3JnL2FlZ3lwdGVuLyBmb3IgZGV0YWlscy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvcGluZW50cnkvaW5kZXguZW4uaHRtbCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jYmJkNzk0ZTJhMGEyODliOWRmY2M5ZjUxM2QxOTk2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgbGliYXNzdWFuIGxpYmdwZy1lcnJvciIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3BnLWVycm9yX3BrY29uZi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzODI5MzE1Y2IwYTFlOWNlZGMwNWZmZTZkZWY3YTJjNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ODA3NjY4NmZhNzI0YTI5MGVhNDljZGYwZDFjMGMxNTAwOTA3ZDFiNzU5YTNiY2JmYmVjMDI5M2U4ZjU2NTcwIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJwYXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcGluZW50cnktcXQ1ICBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJuY3Vyc2VzIGxpYmNhcCIKKworUEFDS0FHRUNPTkZJR1tuY3Vyc2VzXSA9ICItLWVuYWJsZS1uY3Vyc2VzICAtLXdpdGgtbmN1cnNlcy1pbmNsdWRlLWRpcj0ke1NUQUdJTkdfSU5DRElSfSwgLS1kaXNhYmxlLW5jdXJzZXMsIG5jdXJzZXMiCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwgLS13aXRob3V0LWxpYmNhcCwgbGliY2FwIgorUEFDS0FHRUNPTkZJR1txdF0gPSAiLS1lbmFibGUtcGluZW50cnktcXQsIC0tZGlzYWJsZS1waW5lbnRyeS1xdCwgcXQ0LXgxMSIKK1BBQ0tBR0VDT05GSUdbZ3RrMl0gPSAiLS1lbmFibGUtcGluZW50cnktZ3RrMiwgLS1kaXNhYmxlLXBpbmVudHJ5LWd0azIsIGd0aysgZ2xpYi0yLjAiCisKKyNUbyB1c2UgbGlic2VjcmV0LCBhZGQgbWV0YS1nbm9tZQorUEFDS0FHRUNPTkZJR1tzZWNyZXRdID0gIi0tZW5hYmxlLWxpYnNlY3JldCwgLS1kaXNhYmxlLWxpYnNlY3JldCwgbGlic2VjcmV0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTViNzFjMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMS4xLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQSBDIHByb2dyYW0gdG8gcnVuIGFsbCBpbnN0YWxsZWQgcHRlc3RzIgorREVTQ1JJUFRJT04gPSAiVGhlIHB0ZXN0LXJ1bm5lcjIgcGFja2FnZSBpbnN0YWxscyBhIHB0ZXN0LXJ1bm5lciBcCitwcm9ncmFtIHdoaWNoIGxvb3BzIHRocm91Z2ggYWxsIGluc3RhbGxlZCBwdGVzdCB0ZXN0IHN1aXRlcyBhbmQgXAorcnVucyB0aGVtIGluIHNlcXVlbmNlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3B0ZXN0LXJ1bm5lcjIvYWJvdXQvIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ1JFViA9ICIxNjQxM2Q3MWNjMDZiMDJhNmQ4NTljMzVhMDE3Y2M0OWI4ODI4M2Y3IgorUFYgPSAiMi4xLjErZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHRlc3QtcnVubmVyMiIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9wdGVzdC1ydW5uZXIiCisKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3B0ZXN0LXJ1bm5lciAke0R9JHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lcgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWMxZGFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBDIHByb2dyYW0gdG8gcnVuIGFsbCBpbnN0YWxsZWQgcHRlc3RzIgotREVTQ1JJUFRJT04gPSAiVGhlIHB0ZXN0LXJ1bm5lcjIgcGFja2FnZSBpbnN0YWxscyBhIHB0ZXN0LXJ1bm5lciBcCi1wcm9ncmFtIHdoaWNoIGxvb3BzIHRocm91Z2ggYWxsIGluc3RhbGxlZCBwdGVzdCB0ZXN0IHN1aXRlcyBhbmQgXAotcnVucyB0aGVtIGluIHNlcXVlbmNlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3B0ZXN0LXJ1bm5lcjIvYWJvdXQvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ1JFViA9ICI4YTkzODMyZGFkNjIxNTM1ZTkwYWE4ZTFmYjc0YWU1YmE3NDNmYzNlIgotUFYgPSAiMi4xK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3B0ZXN0LXJ1bm5lcjIiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vcHRlc3QtcnVubmVyIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS9wdGVzdC1ydW5uZXIgJHtEfSR7YmluZGlyfS9wdGVzdC1ydW5uZXIKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JlYWRfZXJyb3JfbXNnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcmVhZF9lcnJvcl9tc2cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFhMTNiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JlYWRfZXJyb3JfbXNnLnBhdGNoCkBAIC0wLDAgKzEsOTggQEAKK3JuZy10b29sczogbW9kaWZ5ICdyZWFkIGVycm9yJyBtZXNzYWdlCisKK01ha2UgdGhlICdyZWFkIGVycm9yJyBtZXNzYWdlIG1vcmUgZGVzY3JpcHRpdmUuCisKK0NvcGllZCBmcm9tIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9hdHRhY2htZW50LmNnaT9pZD0xMjk1ODU3CithbmQgbW9kaWZpZWQgaW4gb25lIHBsYWNlIHRvIGFwcGx5IHN1Y2Nlc3NmdWxseS4gIEVycm9yIG1lc3NhZ2UgZHVyaW5nCitib290c3RyYXAgbW9kaWZpZWQgdG8gc2hvdyBkZXZpY2UgbmFtZS4KKworVXBzdHJlYW0tU3RhdHVzOiBwZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworCistLS0gYS9ybmdkLmMKKysrKyBiL3JuZ2QuYworQEAgLTI0Nyw4ICsyNDcsMTEgQEAgc3RhdGljIHZvaWQgZG9fbG9vcChpbnQgcmFuZG9tX3N0ZXApCisgCQkJCWNvbnRpbnVlOwkvKiBmYWlsZWQsIG5vIHdvcmsgKi8KKyAKKyAJCQlyZXR2YWwgPSBpdGVyLT54cmVhZChidWYsIHNpemVvZiBidWYsIGl0ZXIpOworLQkJCWlmIChyZXR2YWwpCisrCQkJaWYgKHJldHZhbCkgeworKwkJCQltZXNzYWdlKExPR19EQUVNT058TE9HX0VSUiwKKysJCQkJCSJFcnJvciByZWFkaW5nIGZyb20gZW50cm9weSBzb3VyY2VcbiIpOworIAkJCQljb250aW51ZTsJLyogZmFpbGVkLCBubyB3b3JrICovCisrCQkJfQorIAorIAkJCXdvcmtfZG9uZSA9IHRydWU7CisgCistLS0gYS9ybmdkX2VudHNvdXJjZS5jCisrKysgYi9ybmdkX2VudHNvdXJjZS5jCitAQCAtNjMsMTAgKzYzLDggQEAgaW50IHhyZWFkKHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdAorIAkJc2l6ZSAtPSByOworIAl9CisgCistCWlmIChzaXplKSB7CistCQltZXNzYWdlKExPR19EQUVNT058TE9HX0VSUiwgInJlYWQgZXJyb3JcbiIpOworKwlpZiAoc2l6ZSkKKyAJCXJldHVybiAtMTsKKy0JfQorIAlyZXR1cm4gMDsKKyB9CisgCitAQCAtMTUyLDcgKzE1MCw3IEBAIGVycm9yX291dDoKKyB9CisgCisgLyogSW5pdGlhbGl6ZSBlbnRyb3B5IHNvdXJjZSAqLworLXN0YXRpYyBpbnQgZGlzY2FyZF9pbml0aWFsX2RhdGEoc3RydWN0IHJuZyAqZW50X3NyYykKKytzdGF0aWMgaW50IGRpc2NhcmRfaW5pdGlhbF9kYXRhKHN0cnVjdCBybmcgKmVudF9zcmMsIGludCAqYnVmKQorIHsKKyAJLyogVHJhc2ggMzIgYml0cyBvZiB3aGF0IGlzIHByb2JhYmx5IHN0YWxlIChub24tcmFuZG9tKQorIAkgKiBpbml0aWFsIHN0YXRlIGZyb20gdGhlIFJORy4gIEZvciBJbnRlbCdzLCA4IGJpdHMgd291bGQKK0BAIC0xNjQsMTAgKzE2MiwxMiBAQCBzdGF0aWMgaW50IGRpc2NhcmRfaW5pdGlhbF9kYXRhKHN0cnVjdCByCisgCXhyZWFkKHRlbXBidWYsIHNpemVvZih0ZW1wYnVmKSwgZW50X3NyYyk7CisgCisgCS8qIFJldHVybiAzMiBiaXRzIG9mIGJvb3RzdHJhcCBkYXRhICovCistCXhyZWFkKHRlbXBidWYsIHNpemVvZih0ZW1wYnVmKSwgZW50X3NyYyk7CisrCWlmICh4cmVhZCh0ZW1wYnVmLCBzaXplb2YodGVtcGJ1ZiksIGVudF9zcmMpICE9IDApCisrCQlyZXR1cm4gLTE7CisgCistCXJldHVybiB0ZW1wYnVmWzBdIHwgKHRlbXBidWZbMV0gPDwgOCkgfAorKwkqYnVmID0gdGVtcGJ1ZlswXSB8ICh0ZW1wYnVmWzFdIDw8IDgpIHwKKyAJCSh0ZW1wYnVmWzJdIDw8IDE2KSB8ICh0ZW1wYnVmWzNdIDw8IDI0KTsKKysJcmV0dXJuIDA7CisgfQorIAorIC8qCitAQCAtMTc1LDYgKzE3NSw4IEBAIHN0YXRpYyBpbnQgZGlzY2FyZF9pbml0aWFsX2RhdGEoc3RydWN0IHIKKyAgKi8KKyBpbnQgaW5pdF9lbnRyb3B5X3NvdXJjZShzdHJ1Y3Qgcm5nICplbnRfc3JjKQorIHsKKysJaW50IGJvb3RzdHJhcDsKKysKKyAJZW50X3NyYy0+cm5nX2ZkID0gb3BlbihlbnRfc3JjLT5ybmdfbmFtZSwgT19SRE9OTFkpOworIAlpZiAoZW50X3NyYy0+cm5nX2ZkID09IC0xKSB7CisgCQlyZXR1cm4gMTsKK0BAIC0xODIsNyArMTg0LDExIEBAIGludCBpbml0X2VudHJvcHlfc291cmNlKHN0cnVjdCBybmcgKmVudF8KKyAJc3JjX2xpc3RfYWRkKGVudF9zcmMpOworIAkvKiBCb290c3RyYXAgRklQUyB0ZXN0cyAqLworIAllbnRfc3JjLT5maXBzY3R4ID0gbWFsbG9jKHNpemVvZihmaXBzX2N0eF90KSk7CistCWZpcHNfaW5pdChlbnRfc3JjLT5maXBzY3R4LCBkaXNjYXJkX2luaXRpYWxfZGF0YShlbnRfc3JjKSk7CisrCWlmIChkaXNjYXJkX2luaXRpYWxfZGF0YShlbnRfc3JjLCAmYm9vdHN0cmFwKSAhPSAwKSB7CisrCQltZXNzYWdlKExPR19FUlJ8TE9HX0lORk8sICJSZWFkIGZhaWx1cmUgaW4gJXMgZHVyaW5nIGJvb3RzdHJhcFxuIixlbnRfc3JjLT5ybmdfbmFtZSk7CisrCQlyZXR1cm4gMTsKKysJfQorKwlmaXBzX2luaXQoZW50X3NyYy0+Zmlwc2N0eCwgYm9vdHN0cmFwKTsKKyAJcmV0dXJuIDA7CisgfQorIAorLS0tIGEvcm5ndGVzdC5jCisrKysgYi9ybmd0ZXN0LmMKK0BAIC0zMzUsNiArMzM1LDcgQEAgc3RhdGljIGludCBkaXNjYXJkX2luaXRpYWxfZGF0YSh2b2lkKQorIAorIAlyZXR1cm4gdGVtcGJ1ZlswXSB8ICh0ZW1wYnVmWzFdIDw8IDgpIHwKKyAJCSh0ZW1wYnVmWzJdIDw8IDE2KSB8ICh0ZW1wYnVmWzNdIDw8IDI0KTsKKysKKyB9CisgCisgc3RhdGljIHZvaWQgZG9fcm5nX2ZpcHNfdGVzdF9sb29wKCB2b2lkICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc181LmJiCmluZGV4IDRhNjZiZWQuLmIzYzlmZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNS5iYgpAQCAtNyw2ICs3LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWFyZ3VtZW50LXRvLWNvbnRyb2wtdGhlLWxpYmFyZ3AtZGVwZW5kZW5jeS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly91bmRlcnF1b3RlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3JuZy10b29scy01LWZpeC10ZXh0cmVscy1vbi1QSUMteDg2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlYWRfZXJyb3JfbXNnLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2luaXQgXAogICAgICAgICAgICBmaWxlOi8vZGVmYXVsdCBcCiAgICAgICAgICAgIGZpbGU6Ly9ybmdkLnNlcnZpY2UgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NlcmYvc2VyZi9ub3JwYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NlcmYvc2VyZi9ub3JwYXRoLnBhdGNoCmluZGV4IDM4MGY1ZDAuLmMzOTI0NDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zZXJmL3NlcmYvbm9ycGF0aC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2VyZi9zZXJmL25vcnBhdGgucGF0Y2gKQEAgLTUsMTEgKzUsMTEgQEAKIAogUlAgMjAxNC83LzE3CiAKLUluZGV4OiBzZXJmLTEuMy42L1NDb25zdHJ1Y3QKK0luZGV4OiBzZXJmLTEuMy45L1NDb25zdHJ1Y3QKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzZXJmLTEuMy42Lm9yaWcvU0NvbnN0cnVjdAkyMDE0LTA3LTE3IDE5OjU3OjU3LjcyNDM4OTE1MCArMDAwMAotKysrIHNlcmYtMS4zLjYvU0NvbnN0cnVjdAkyMDE0LTA3LTE3IDIwOjA0OjIxLjc4NDM5OTYxNiArMDAwMAotQEAgLTIxOCw4ICsyMTgsNyBAQAorLS0tIHNlcmYtMS4zLjkub3JpZy9TQ29uc3RydWN0CisrKysgc2VyZi0xLjMuOS9TQ29uc3RydWN0CitAQCAtMjI0LDggKzIyNCw3IEBAIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgogIGVsc2U6CiAgICBMSUJOQU1FU1RBVElDID0gJ3NlcmYtJHtNQUpPUn0nCiAgCkBAIC0xNyw5ICsxNyw5IEBACiAtICAgICAgICAgICBQREI9JyR7VEFSR0VULmZpbGViYXNlfS5wZGInKQogK2Vudi5BcHBlbmQoUERCPScke1RBUkdFVC5maWxlYmFzZX0ucGRiJykKICAKLSAjZm9yIGkgaW4gZW52OgotICMgICAgcHJpbnQoc3RyKGVudltpXSkpCi1AQCAtMzcxLDEyICszNzAsNiBAQAorIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAjICBsaW5rZmxhZ3MuYXBwZW5kKCctV2wsLWluc3RhbGxfbmFtZSxAZXhlY3V0YWJsZV9wYXRoLyVzLmR5bGliJyAlIChMSUJOQU1FLCkpCitAQCAtMzg1LDEyICszODQsNiBAQCBpZiBnc3NhcGkgYW5kIENBTExPVVRfT0tBWToKICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgIGVudi5BcHBlbmQoQ1BQREVGSU5FUz1bJ1NFUkZfSEFWRV9TU1BJJ10pCiAgCkBAIC0zMiw4ICszMiw4IEBACiAgIyBTZXQgdXAgdGhlIGNvbnN0cnVjdGlvbiBvZiBzZXJmLSoucGMKICBwa2djb25maWcgPSBlbnYuVGV4dGZpbGUoJ3NlcmYtJWQucGMnICUgKE1BSk9SLCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi5GaWxlKCdidWlsZC9zZXJmLnBjLmluJyksCi1AQCAtNDQ2LDcgKzQzOSw2IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICBFTlY9eydQQVRIJyA6IG9zLmVudmlyb25bJ1BBVEgnXX0pKQorQEAgLTQ2MSw3ICs0NTQsNiBAQCBlbHNlOgorICAgVEVTVF9FWEVTID0gWyBvcy5wYXRoLmpvaW4oJ3Rlc3QnLCAnJXMnICUgKHByb2cpKSBmb3IgcHJvZyBpbiBURVNUX1BST0dSQU1TIF0KICAKICAjIEZpbmQgdGhlIChkeW5hbWljKSBsaWJyYXJ5IGluIHRoaXMgZGlyZWN0b3J5CiAtdGVudi5SZXBsYWNlKFJQQVRIPXRoaXNkaXIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9pbnN0YWxsLWRhdGEtaG9vay5wYXRjaAppbmRleCAzYzlmMWVhLi4yNjJmZjc1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2gKQEAgLTgsMTYgKzgsMTggQEAKIAogU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgogCi0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC00NCw3ICs0NCw5IEBAICQocGtnY29uZmlnX0RBVEEpOiBjb25maWcuc3RhdHVzCi0gQElOVExUT09MX1hNTF9SVUxFQAotIEBJTlRMVE9PTF9ERVNLVE9QX1JVTEVACitJbmRleDogc2hhcmVkLW1pbWUtaW5mby0xLjkvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzaGFyZWQtbWltZS1pbmZvLTEuOS5vcmlnL01ha2VmaWxlLmFtCisrKysgc2hhcmVkLW1pbWUtaW5mby0xLjkvTWFrZWZpbGUuYW0KK0BAIC01MCw3ICs1MCw5IEBAIGVsc2UKKyAgIHVwZGF0ZV9taW1lX2RhdGFiYXNlPSIkKHRvcF9idWlsZGRpcikvdXBkYXRlLW1pbWUtZGF0YWJhc2UkKEVYRUVYVCkiCisgZW5kaWYKICAKIC1pbnN0YWxsLWRhdGEtaG9vazogaW5zdGFsbC1iaW5QUk9HUkFNUwogKyMgZG8gTk9UIG1ha2UgdGhpcyBkZXBlbmRlbnQgb24gYW55dGhpbmchCiArIwogK2luc3RhbGwtZGF0YS1ob29rOgogIGlmIEVOQUJMRV9VUERBVEVfTUlNRURCCi0gCSQoREVTVERJUikiJChiaW5kaXIpL3VwZGF0ZS1taW1lLWRhdGFiYXNlIiAtViAiJChERVNURElSKSQoZGF0YWRpcikvbWltZSIKKyAJJCh1cGRhdGVfbWltZV9kYXRhYmFzZSkgLVYgIiQoREVTVERJUikkKGRhdGFkaXIpL21pbWUiCiAgZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vcGFyYWxsZWxtYWtlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2gKaW5kZXggODRjNGQwMy4uZmVhMzRhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2gKQEAgLTExLDE3ICsxMSwxNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+CiAKLUluZGV4OiBzaGFyZWQtbWltZS1pbmZvLTEuMC9NYWtlZmlsZS5hbQorSW5kZXg6IHNoYXJlZC1taW1lLWluZm8tMS45L01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2hhcmVkLW1pbWUtaW5mby0xLjAub3JpZy9NYWtlZmlsZS5hbQotKysrIHNoYXJlZC1taW1lLWluZm8tMS4wL01ha2VmaWxlLmFtCistLS0gc2hhcmVkLW1pbWUtaW5mby0xLjkub3JpZy9NYWtlZmlsZS5hbQorKysrIHNoYXJlZC1taW1lLWluZm8tMS45L01ha2VmaWxlLmFtCiBAQCAtMSw1ICsxLDMgQEAKIC1TVUJESVJTPS4gcG8KIC0KICBBTV9DUFBGTEFHUyA9ICQoQUxMX0NGTEFHUykKICAKICBwYWNrYWdlc2RpciA9ICQoZGF0YWRpcikvbWltZS9wYWNrYWdlcwotQEAgLTcyLDggKzcwLDcgQEAgdW5pbnN0YWxsLWhvb2s6CitAQCAtODEsOCArNzksNyBAQCBlbmRpZgogIAogIGFsbDogJChkZWZhdWx0bWFrZWRlcHMpCiAgCkBAIC0yOSw1ICsyOSw1IEBACiAtCSQoQU1fVl9HRU4pICQoTUFLRSkgLUMgcG8gc2hhcmVkLW1pbWUtaW5mby5wb3QKICtjcmVhdGUtcG90OiBwbwogIAotIGNoZWNrOiBjcmVhdGUtcG90IGZyZWVkZXNrdG9wLm9yZy54bWwgdXBkYXRlLW1pbWUtZGF0YWJhc2UgY2hlY2stdHJhbnNsYXRpb25zCi0gCWlmIHRlc3QgLWUgJCh0b3BfYnVpbGRkaXIpL2ZyZWVkZXNrdG9wLm9yZy54bWw7IHRoZW4gXAorIGxvY2FsLXRlc3Q6IGNyZWF0ZS1wb3QgZnJlZWRlc2t0b3Aub3JnLnhtbCB1cGRhdGUtbWltZS1kYXRhYmFzZSQoRVhFRVhUKQorIGlmIENST1NTX0NPTVBJTElORwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ5ZDk5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBzaGFyZWQtbWltZS1pbmZvLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vcGFyYWxsZWxtYWtlLnBhdGNoIFwKLQkgICAgZmlsZTovL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjZkY2FkY2U3NjQ2MDU1NTJmYzk1NjU2M2VmYTA1OGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmFmNTVlZjFhMDMxOTgwNWI3NGFiNDBkMzMxYTM5NjJjOTA1NDc3ZDc2YzA4NmY0OWUzNGRjOTYzNjM1ODllOSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjliMjczZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS45LmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBzaGFyZWQtbWltZS1pbmZvLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vcGFyYWxsZWxtYWtlLnBhdGNoIFwKKwkgICAgZmlsZTovL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDUxMDM4ODliOTEyNDI4NTBhYTQ3ZjA5MzI1ZTc5OGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWMwMTMzZWM0ZTIyOGU0MWJkZjUyZjcyNmQyNzFhMmQ4MjE0OTljMmFiOTdhZmQzYWEzZDZjZjQzZWZjZGM4MyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvc3FsaXRlMy1maXgtQ1ZFLTIwMTctMTM2ODUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL2ZpbGVzL3NxbGl0ZTMtZml4LUNWRS0yMDE3LTEzNjg1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWM0MjhjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvc3FsaXRlMy1maXgtQ1ZFLTIwMTctMTM2ODUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1GaXggQ1ZFLTIwMTctMTM2ODUKLQotVGhlIGR1bXBfY2FsbGJhY2sgZnVuY3Rpb24gaW4gU1FMaXRlIDMuMjAuMCBhbGxvd3MgcmVtb3RlIGF0dGFja2VycyB0bwotY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZSAoRVhDX0JBRF9BQ0NFU1MgYW5kIGFwcGxpY2F0aW9uIGNyYXNoKSB2aWEgYQotY3JhZnRlZCBmaWxlLgotCi1SZWZlcmVuY2VzOgotaHR0cHM6Ly9zcWxpdGUub3JnL3NyYy9pbmZvLzAyZjBmNGM1NGYyODE5YjMKLWh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9zcWxpdGUtdXNlcnMlNDBtYWlsaW5nbGlzdHMuc3FsaXRlLm9yZy9tc2cxMDUzMTQuaHRtbAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NxbGl0ZS5vcmcvc3JjL2luZm8vY2YwZDM3MTVjYWFjOTE0OV0KLQotQ1ZFOiBDVkUtMjAxNy0xMzY4NQotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IHNyYy9zaGVsbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzcmMvc2hlbGwuYwotKysrIHNyYy9zaGVsbC5jCi1AQCAtMjY1NywxMCArMjY1NywxMSBAQAotICAgaW50ICphaVR5cGUgICAgICAvKiBDb2x1bW4gdHlwZXMgKi8KLSApewotICAgaW50IGk7Ci0gICBTaGVsbFN0YXRlICpwID0gKFNoZWxsU3RhdGUqKXBBcmc7Ci0gCi0rICBpZiggYXpBcmc9PTAgKSByZXR1cm4gMDsKLSAgIHN3aXRjaCggcC0+Y01vZGUgKXsKLSAgICAgY2FzZSBNT0RFX0xpbmU6IHsKLSAgICAgICBpbnQgdyA9IDU7Ci0gICAgICAgaWYoIGF6QXJnPT0wICkgYnJlYWs7Ci0gICAgICAgZm9yKGk9MDsgaTxuQXJnOyBpKyspewotQEAgLTMwMDcsMTAgKzMwMDgsMTEgQEAKLSAqLwotIHN0YXRpYyBpbnQgY2FwdHVyZU91dHB1dENhbGxiYWNrKHZvaWQgKnBBcmcsIGludCBuQXJnLCBjaGFyICoqYXpBcmcsIGNoYXIgKipheil7Ci0gICBTaGVsbFRleHQgKnAgPSAoU2hlbGxUZXh0KilwQXJnOwotICAgaW50IGk7Ci0gICBVTlVTRURfUEFSQU1FVEVSKGF6KTsKLSsgIGlmKCBhekFyZz09MCApIHJldHVybiAwOwotICAgaWYoIHAtPm4gKSBhcHBlbmRUZXh0KHAsICJ8IiwgMCk7Ci0gICBmb3IoaT0wOyBpPG5Bcmc7IGkrKyl7Ci0gICAgIGlmKCBpICkgYXBwZW5kVGV4dChwLCAiLCIsIDApOwotICAgICBpZiggYXpBcmdbaV0gKSBhcHBlbmRUZXh0KHAsIGF6QXJnW2ldLCAwKTsKLSAgIH0KLUBAIC0zODg4LDExICszODkwLDExIEBACi0gICBjb25zdCBjaGFyICp6VHlwZTsKLSAgIGNvbnN0IGNoYXIgKnpTcWw7Ci0gICBTaGVsbFN0YXRlICpwID0gKFNoZWxsU3RhdGUgKilwQXJnOwotIAotICAgVU5VU0VEX1BBUkFNRVRFUihhek5vdFVzZWQpOwotLSAgaWYoIG5BcmchPTMgKSByZXR1cm4gMTsKLSsgIGlmKCBuQXJnIT0zIHx8IGF6QXJnPT0wICkgcmV0dXJuIDA7Ci0gICB6VGFibGUgPSBhekFyZ1swXTsKLSAgIHpUeXBlID0gYXpBcmdbMV07Ci0gICB6U3FsID0gYXpBcmdbMl07Ci0gCi0gICBpZiggc3RyY21wKHpUYWJsZSwgInNxbGl0ZV9zZXF1ZW5jZSIpPT0wICl7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUwODI1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBzcWxpdGUzLmluYwotCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3FsaXRlMy5oO2VuZGxpbmU9MTE7bWQ1PTc4NmQzZGM1ODFlZmYwM2Y0ZmQ5ZTRhNzdlZDAwYzY2IgotCi1TUkNfVVJJID0gIlwKLSAgaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMTcvc3FsaXRlLWF1dG9jb25mLSR7U1FMSVRFX1BWfS50YXIuZ3ogXAotICBmaWxlOi8vc3FsaXRlMy1maXgtQ1ZFLTIwMTctMTM2ODUucGF0Y2ggXAotICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTI2MmEyOGI3M2NjMzMwZTdlODM1MjBjOGNlMTRlNGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzgxNGM2ZjYyOWZmOTM5NjhiMmIzN2E3MDQ5N2NmZTk4YjM2NmJmNTg3YTIyNjFhNTZhNWY3NTBhZjZhZTZhMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmODg2NTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMi4wLmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgc3FsaXRlMy5pbmMKKworTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NxbGl0ZTMuaDtlbmRsaW5lPTExO21kNT03ODZkM2RjNTgxZWZmMDNmNGZkOWU0YTc3ZWQwMGM2NiIKKworU1JDX1VSSSA9ICJcCisgIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8yMDE4L3NxbGl0ZS1hdXRvY29uZi0ke1NRTElURV9QVn0udGFyLmd6IFwKKyAgIgorU1JDX1VSSVttZDVzdW1dID0gIjk2YjU2NDhkNTQyZThhZmE2YWI3ZmZiOGRiOGRkYzNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI4MjRhYjEyMzhiNzA2YmM2NjEyNzMyMGFmYmRmZmIwOTYzNjExMzBlMjMyOTFmMjY5MjhhMDI3Yjg4NWM2MTIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ4LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ4LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3MjA4NDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC40OC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsIHRlcm1pbmFsIGVtdWxhdG9yIEdUSysgd2lkZ2V0IGxpYnJhcnkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9dnRlIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1ERVBFTkRTID0gImdsaWItMi4wIGd0ayszIGxpYnBjcmUyIGludGx0b29sLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSBncGVyZi1uYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLSMgdmFwaWdlbi5tNCBpcyByZXF1aXJlZCB3aGVuIHZhbGEgaXMgbm90IHByZXNlbnQgKGJ1dCB0aGUgb25lIGZyb20gdmFsYSBzaG91bGQgYmUgdXNlZCBub3JtYWxseSkKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvbi10LWVuYWJsZS1zdGFjay1wcm90ZWN0aW9uLWJ5LWRlZmF1bHQucGF0Y2ggXAotICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsYScsICcnLCAnZmlsZTovLzAwMDEtQWRkLW00LXZhcGlnZW4ubTQucGF0Y2gnLCBkKSB9IFwKLSAgICAgICAgICAgICIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImIzMDA2NzVhYzVmMjY5YWE2ZWI0OGZlODlhMGQ3MjZkIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYTNhOWZiMTgyNzQwYjM5MmE0NWNkM2Y0NmZhNjFhOTg1ZjY4YmI2YjE4MTdiNTJkYWVjMjIwMzRjNDYxNThjMyIKLQotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCi0KLSMgSW5zdGVhZCBvZiAiaW5oZXJpdCB2YWxhIiB3ZSBkbyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgaGVyZSBzbyB3ZSBjYW4KLSMgc2V0IERFUEVORFMgYmFzZWQgb24gUEFDS0FHRUNPTkZJRy4KLQotIyBPdXIgcGF0Y2hlZCB2ZXJzaW9uIG9mIFZhbGEgbG9va3MgaW4gU1RBR0lOR19EQVRBRElSIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFNUQUdJTkdfREFUQURJUgotIyBVcHN0cmVhbSBWYWxhID49IDAuMTEgbG9va3MgaW4gWERHX0RBVEFfRElSUyBmb3IgLnZhcGkgZmlsZXMKLWV4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKLQotIyBIZWxwIGctaXItc2Nhbm5lciBmaW5kIHRoZSAuc28gZm9yIGxpbmtpbmcKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vc3JjLy5saWJzIgotfQotCi0jIFBhY2thZ2UgYWRkaXRpb25hbCBmaWxlcwotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3ZhbGEvdmFwaS8qIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgotUEFDS0FHRUNPTkZJR1t2YWxhXSA9ICItLWVuYWJsZS12YWxhLC0tZGlzYWJsZS12YWxhLHZhbGEtbmF0aXZlIHZhbGEiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3QtYXBwbGljYXRpb24iCi0KLSMgbGlidG9vbCBhZGRzICItbm9zdGRsaWIiIHdoZW4gZysrIGlzIHVzZWQuIFRoaXMgYnJlYWtzIFBJRSBidWlsZHMuCi0jIFVzZSBsaWJ0b29sLWNyb3NzICh3aGljaCBoYXMgYSBoYWNrIHRvIHByZXZlbnQgdGhhdCkgaW5zdGVhZC4KLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTD0ke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIgotCi1QQUNLQUdFUyA9KyAibGlidnRlIgotRklMRVNfbGlidnRlID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjllZTMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41MC4yLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiVmlydHVhbCB0ZXJtaW5hbCBlbXVsYXRvciBHVEsrIHdpZGdldCBsaWJyYXJ5IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PXZ0ZSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBsaWJwY3JlMiBpbnRsdG9vbC1uYXRpdmUgbGlieG1sMi1uYXRpdmUgZ3BlcmYtbmF0aXZlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCisjIHZhcGlnZW4ubTQgaXMgcmVxdWlyZWQgd2hlbiB2YWxhIGlzIG5vdCBwcmVzZW50IChidXQgdGhlIG9uZSBmcm9tIHZhbGEgc2hvdWxkIGJlIHVzZWQgbm9ybWFsbHkpCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Eb24tdC1lbmFibGUtc3RhY2stcHJvdGVjdGlvbi1ieS1kZWZhdWx0LnBhdGNoIFwKKyAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3ZhbGEnLCAnJywgJ2ZpbGU6Ly8wMDAxLUFkZC1tNC12YXBpZ2VuLm00LnBhdGNoJywgZCkgfSBcCisgICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIxOTEyY2ZkMWQ5Y2RkMzBjZWJlYjkwODUwN2FjYWRjNSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjc5ZGQzMTZiZmFmZjQ4ZjJmYjc0ZDA2NmJhYWUwZDgzMGUxZjQ0NDM2Nzk2ZmU0MTBhNTcyOTdlNWM1ZjA5Y2YiCisKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgorCisjIEluc3RlYWQgb2YgImluaGVyaXQgdmFsYSIgd2UgZG8gdGhlIHJlbGV2YW50IHNldHRpbmdzIGhlcmUgc28gd2UgY2FuCisjIHNldCBERVBFTkRTIGJhc2VkIG9uIFBBQ0tBR0VDT05GSUcuCisKKyMgT3VyIHBhdGNoZWQgdmVyc2lvbiBvZiBWYWxhIGxvb2tzIGluIFNUQUdJTkdfREFUQURJUiBmb3IgLnZhcGkgZmlsZXMKK2V4cG9ydCBTVEFHSU5HX0RBVEFESVIKKyMgVXBzdHJlYW0gVmFsYSA+PSAwLjExIGxvb2tzIGluIFhER19EQVRBX0RJUlMgZm9yIC52YXBpIGZpbGVzCitleHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn0iCisKKyMgSGVscCBnLWlyLXNjYW5uZXIgZmluZCB0aGUgLnNvIGZvciBsaW5raW5nCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy8ubGlicyIKK30KKworIyBQYWNrYWdlIGFkZGl0aW9uYWwgZmlsZXMKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS92YWxhL3ZhcGkvKiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKK1BBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLS1lbmFibGUtdmFsYSwtLWRpc2FibGUtdmFsYSx2YWxhLW5hdGl2ZSB2YWxhIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10ZXN0LWFwcGxpY2F0aW9uIgorCisjIGxpYnRvb2wgYWRkcyAiLW5vc3RkbGliIiB3aGVuIGcrKyBpcyB1c2VkLiBUaGlzIGJyZWFrcyBQSUUgYnVpbGRzLgorIyBVc2UgbGlidG9vbC1jcm9zcyAod2hpY2ggaGFzIGEgaGFjayB0byBwcmV2ZW50IHRoYXQpIGluc3RlYWQuCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCIKKworUEFDS0FHRVMgPSsgImxpYnZ0ZSIKK0ZJTEVTX2xpYnZ0ZSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybS1saW51eCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtLWxpbnV4CmluZGV4IGU2YjlhNzIuLmZiM2M4MWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtLWxpbnV4CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtLWxpbnV4CkBAIC0zLDcgKzMsNiBAQAogYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQogYWNfY3Zfc2l6ZW9mX3djaGFyX3Q9JHthY19jdl9zaXplb2Zfd2NoYXJfdD0xfQogYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2NoYXI9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfY2hhcj0xfQotYWNfY3Zfc2l6ZW9mX2Jvb2w9JHthY19jdl9zaXplb2ZfYm9vbD0xfQogYWNfY3Zfc2l6ZW9mX2NoYXJfcD0ke2FjX2N2X3NpemVvZl9pbnRfcD00fQogYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KIGFjX2N2X3NpemVvZl9pbnRfcD0ke2FjX2N2X3NpemVvZl9pbnRfcD00fQpAQCAtMTQyLDcgKzE0MSw2IEBACiBjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9JHtjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PXllc30KIGNsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD0ke2NsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD15ZXN9Ci1hY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICNkYnVzCiBhY19jdl9oYXZlX2Fic3RyYWN0X3NvY2tldHM9JHthY19jdl9oYXZlX2Fic3RyYWN0X3NvY2tldHM9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbgppbmRleCA1Y2NjMTRmLi5mZjU1MjMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbgpAQCAtMTgsNCArMTgsNCBAQAogIyBweXRob246IGRlYWN0aXZhdGUgYSBydW50aW1lIGNoZWNrIGZvciBpcHY2LXN1cHBvcnQgaW4gcHl0aG9uID49Mi43LjEgdGhhdCBmYWlscyB3aGVuIGNyb3NzLWNvbXBpbGluZwogYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm8KIAotYWNfY3ZfcGF0aF9TRUQ9c2VkCithY19jdl9wYXRoX1NFRD0ke2FjX2N2X3BhdGhfU0VEPXNlZH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKaW5kZXggMjk1ODcxNi4uNzFlYzk2MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKQEAgLTQ4LDYgKzQ4LDcgQEAKIAogIyBjb3JldXRpbHMKIGdsX2N2X2Z1bmNfZnN0YXRhdF96ZXJvX2ZsYWc9JHtnbF9jdl9mdW5jX2ZzdGF0YXRfemVyb19mbGFnPXllc30KK2dsX2N2X2hhdmVfcHJvY191cHRpbWU9JHtnbF9jdl9oYXZlX3Byb2NfdXB0aW1lPXllc30KIAogIyBteXNxbAogYWNfY3Zfc3lzX3Jlc3RhcnRhYmxlX3N5c2NhbGxzPSR7YWNfY3Zfc3lzX3Jlc3RhcnRhYmxlX3N5c2NhbGxzPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLW11c2wgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi1tdXNsCmluZGV4IDI2ZmMxMDMuLjFiNGZjMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLW11c2wKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbXVzbApAQCAtMTIsNiArMTIsNyBAQAogYWNfY3ZfZnVuY19wb3NpeF9nZXRwd3VpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRwd3VpZF9yPXllc30KIGFjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj15ZXN9CiBhY19jdl9mdW5jX2dldGFkZHJpbmZvPSR7YWNfY3ZfZnVuY19nZXRhZGRyaW5mbz15ZXN9CithY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICMgZ2xpYgogZ2xpYl9jdl9zdHJsY3B5PSR7Z2xpYl9jdl9zdHJsY3B5PW5vfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24KaW5kZXggNGZiZjU4Yy4uYzVlMzU0YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uCkBAIC01Myw3ICs1Myw2IEBACiBjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9JHtjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PXllc30KIGNsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD0ke2NsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD15ZXN9Ci1hY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICMgY3ZzCiBjdnNfY3ZfZnVuY19wcmludGZfcHRyPSR7Y3ZzX2N2X2Z1bmNfcHJpbnRmX3B0cj15ZXN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pY3JvYmxhemUtbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pY3JvYmxhemUtbGludXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZhNDBjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWljcm9ibGF6ZS1saW51eApAQCAtMCwwICsxLDU0IEBACisjIGdlbmVyYWwKK2FjX2N2X3ZhX3ZhbF9jb3B5PSR7YWNfY3ZfdmFfdmFsX2NvcHk9eWVzfQorYWNfY3Zfc2l6ZW9mX19faW50NjQ9JHthY19jdl9zaXplb2ZfX19pbnQ2ND0wfQorYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQorYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KK2FjX2N2X3NpemVvZl9sb25nPSR7YWNfY3Zfc2l6ZW9mX2xvbmc9NH0KK2FjX2N2X3NpemVvZl9sb25nX2ludD0ke2FjX2N2X3NpemVvZl9sb25nX2ludD00fQorYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZz0ke2FjX2N2X3NpemVvZl9sb25nX2xvbmc9OH0KK2FjX2N2X3NpemVvZl9zaG9ydD0ke2FjX2N2X3NpemVvZl9zaG9ydD0yfQorYWNfY3Zfc2l6ZW9mX3Nob3J0X2ludD0ke2FjX2N2X3NpemVvZl9zaG9ydF9pbnQ9Mn0KK2FjX2N2X3NpemVvZl9zaXplX3Q9JHthY19jdl9zaXplb2Zfc2l6ZV90PTR9CithY19jdl9zaXplb2Zfc3NpemVfdD0ke2FjX2N2X3NpemVvZl9zaXplX3Q9NH0KK2FjX2N2X3NpemVvZl92b2lkX3A9JHthY19jdl9zaXplb2Zfdm9pZF9wPTR9CithY19jdl9zaXplb2ZfZmxvYXQ9JHthY19jdl9zaXplb2ZfZmxvYXQ9NH0KK2FjX2N2X3NpemVvZl9kb3VibGU9JHthY19jdl9zaXplb2ZfZG91YmxlPTh9CithY19jdl9zaXplb2ZfbG9uZ19kb3VibGU9JHthY19jdl9zaXplb2ZfbG9uZ19kb3VibGU9OH0KK2FjX2N2X3NpemVvZl91bnNpZ25lZD0ke2FjX2N2X3NpemVvZl91bnNpZ25lZD00fQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2NoYXI9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfY2hhcj0xfQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX3Nob3J0PSR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX3Nob3J0PTJ9CithY19jdl9zaXplb2ZfdW5zaWduZWRfaW50PSR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2ludD00fQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2xvbmc9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfbG9uZz00fQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2xvbmdfbG9uZz0ke2FjX2N2X3NpemVvZl91bnNpZ25lZF9sb25nX2xvbmc9OH0KK2FjX2N2X3NpemVvZl9zaWduZWRfY2hhcj0ke2FjX2N2X3NpemVvZl9zaWduZWRfY2hhcj0xfQorYWNfY3ZfdWNoYXI9JHthY19jdl91Y2hhcj1ub30KK2FjX2N2X3VpbnQ9JHthY19jdl91aW50PXllc30KK2FjX2N2X3Vsb25nPSR7YWNfY3ZfdWxvbmc9eWVzfQorYWNfY3ZfdXNob3J0PSR7YWNfY3ZfdXNob3J0PXllc30KKworIyBnbGliCitnbGliX2N2X3N0YWNrX2dyb3dzPSR7Z2xpYl9jdl9zdGFja19ncm93cz1ub30KK2dsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KK2dsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9CitnbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KK2dsaWJfY3Zfc2FuZV9yZWFsbG9jPSR7Z2xpYl9jdl9zYW5lX3JlYWxsb2M9eWVzfQorZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KK2dsaWJfY3ZfdmFfY29weT0ke2dsaWJfY3ZfdmFfY29weT15ZXN9CitnbGliX2N2X3ZhX3ZhbF9jb3B5PSR7Z2xpYl9jdl92YV92YWxfY29weT15ZXN9CitnbGliX2N2X19fdmFfY29weT0ke2dsaWJfY3ZfX192YV9jb3B5PXllc30KKworIyBnbGliLTIuMAorZ2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PSR7Z2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQorYWNfY3ZfYWxpZ25vZl9ndWludDMyPTQKK2FjX2N2X2FsaWdub2ZfZ3VpbnQ2ND04CithY19jdl9hbGlnbm9mX3Vuc2lnbmVkX2xvbmc9NAorZ2xpYl9jdl9zaXplb2ZfZ211dGV4PSR7Z2xpYl9jdl9zaXplb2ZfZ211dGV4PTI0fQorZ2xpYl9jdl9zaXplb2ZfaW50bWF4X3Q9JHtnbGliX2N2X3NpemVvZl9pbnRtYXhfdD04fQorZ2xpYl9jdl9zaXplb2ZfcHRyZGlmZl90PSR7Z2xpYl9jdl9zaXplb2ZfcHRyZGlmZl90PTR9CitnbGliX2N2X3NpemVvZl9zaXplX3Q9JHtnbGliX2N2X3NpemVvZl9zaXplX3Q9NH0KK2dsaWJfY3Zfc2l6ZW9mX3N5c3RlbV90aHJlYWQ9JHtnbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPTR9CitnbGliX2N2X3N5c191c2VfcGlkX25pY2VuZXNzX3N1cnJvZ2F0ZT0ke2dsaWJfY3Zfc3lzX3VzZV9waWRfbmljZW5lc3Nfc3Vycm9nYXRlPXllc30KKworIyBzdGFydHVwLW5vdGlmaWNhdGlvbgorbGZfY3Zfc2FuZV9yZWFsbG9jPXllcworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eAppbmRleCA1YmFlNzQ4Li42N2EzZmM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbmlvczItbGludXgKQEAgLTIzMiw3ICsyMzIsNiBAQAogYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQogYWNfY3Zfc2l6ZW9mX3djaGFyX3Q9JHthY19jdl9zaXplb2Zfd2NoYXJfdD0xfQogYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2NoYXI9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfY2hhcj0xfQotYWNfY3Zfc2l6ZW9mX2Jvb2w9JHthY19jdl9zaXplb2ZfYm9vbD0xfQogYWNfY3Zfc2l6ZW9mX2NoYXJfcD0ke2FjX2N2X3NpemVvZl9pbnRfcD00fQogYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KIGFjX2N2X3NpemVvZl9pbnRfcD0ke2FjX2N2X3NpemVvZl9pbnRfcD00fQpAQCAtMzcyLDcgKzM3MSw2IEBACiBjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9JHtjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PXllc30KIGNsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD0ke2NsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD15ZXN9Ci1hY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICNkYnVzCiBhY19jdl9oYXZlX2Fic3RyYWN0X3NvY2tldHM9JHthY19jdl9oYXZlX2Fic3RyYWN0X3NvY2tldHM9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9wb3dlcnBjMzItbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eAppbmRleCAwNmQ5NjFmLi5mMzdlOTE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eApAQCAtMSw2ICsxLDUgQEAKIGFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ubwogYWNfY3Zfc2l6ZW9mX19faW50NjQ9JHthY19jdl9zaXplb2ZfX19pbnQ2ND0wfQotYWNfY3Zfc2l6ZW9mX2Jvb2w9JHthY19jdl9zaXplb2ZfYm9vbD0xfQogYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQogYWNfY3Zfc2l6ZW9mX2NoYXJfcD0ke2FjX2N2X3NpemVvZl9jaGFyX3A9NH0KIGFjX2N2X3NpemVvZl9kb3VibGU9JHthY19jdl9zaXplb2ZfZG91YmxlPTh9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Jpc2N2MzItbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Jpc2N2MzItbGludXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdkZTYyOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvcmlzY3YzMi1saW51eApAQCAtMCwwICsxLDExIEBACisjIGdlbmVyYWwKK2FjX2N2X2FsaWdub2ZfZ3VpbnQzMj00CithY19jdl9hbGlnbm9mX2d1aW50NjQ9OAorYWNfY3ZfYWxpZ25vZl91bnNpZ25lZF9sb25nPTQKKworIyBnbGliLTIuMAorZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99CitnbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQorCisjIHN0YXJ0dXAtbm90aWZpY2F0aW9uCitsZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9yaXNjdjY0LWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9yaXNjdjY0LWxpbnV4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YmM1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Jpc2N2NjQtbGludXgKQEAgLTAsMCArMSwxMSBAQAorIyBnZW5lcmFsCithY19jdl9hbGlnbm9mX2d1aW50MzI9NAorYWNfY3ZfYWxpZ25vZl9ndWludDY0PTgKK2FjX2N2X2FsaWdub2ZfdW5zaWduZWRfbG9uZz04CisKKyMgZ2xpYi0yLjAKK2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQorZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KKworIyBzdGFydHVwLW5vdGlmaWNhdGlvbgorbGZfY3Zfc2FuZV9yZWFsbG9jPSR7bGZfY3Zfc2FuZV9yZWFsbG9jPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvc2gtY29tbW9uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KaW5kZXggZmM0ZDZhZC4uOTdjOTY5MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KQEAgLTIyNyw3ICsyMjcsNiBAQAogY2xhbWF2X2F2X2Z1bmNfd29ya2luZ19zbnByaW50Zl9sb25nPSR7Y2xhbWF2X2F2X2Z1bmNfd29ya2luZ19zbnByaW50Zl9sb25nPXllc30KIGNsYW1hdl9hdl9oYXZlX2luX3BvcnRfdD0ke2NsYW1hdl9hdl9oYXZlX2luX3BvcnRfdD15ZXN9CiBjbGFtYXZfYXZfaGF2ZV9pbl9hZGRyX3Q9JHtjbGFtYXZfYXZfaGF2ZV9pbl9hZGRyX3Q9eWVzfQotYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD0ke2FjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9eWVzfQogCiAjIGxpYm5ldCAKIGFjX2N2X2xibF91bmFsaWduZWRfZmFpbD0ke2FjX2N2X2xibF91bmFsaWduZWRfZmFpbD1ub30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2J1aWxkaGlzdG9yeS1kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvYnVpbGRoaXN0b3J5LWRpZmYKaW5kZXggZTc5Y2I3YS4uNzA4MDViMCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvYnVpbGRoaXN0b3J5LWRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvYnVpbGRoaXN0b3J5LWRpZmYKQEAgLTM4LDcgKzM4LDcgQEAKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYScsICctLXJlcG9ydC1hbGwnLAogICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3JlcG9ydF9hbGwnLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nRmFsc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlJlcG9ydCBhbGwgY2hhbmdlcywgbm90IGp1c3QgdGhlIGRlZmF1bHQgc2lnbmlmaWNhbnQgb25lcyIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCAnLS0tc2lnbmF0dXJlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLApAQCAtNTMsNiArNTMsMTAgQEAKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZScsICctLWV4Y2x1ZGUtcGF0aCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J2FwcGVuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJFeGNsdWRlIHBhdGggZnJvbSB0aGUgb3V0cHV0IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsICctLWNvbG91cicsCisgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPSgneWVzJywgJ25vJywgJ2F1dG8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ImF1dG8iLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iV2hldGhlciB0byBjb2xvdXJpc2UgKGRlZmF1bHRzIHRvIGF1dG8pIikKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdyZXZpc2lvbnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IFsnYnVpbGQtbWludXMtMScsICdIRUFEJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICBuYXJncz0nKicsCkBAIC0xMDcsMTAgKzExMSwxMSBAQAogICAgIGVsaWYgbGVuKGFyZ3MucmV2aXNpb25zKSA9PSAyOgogICAgICAgICBmcm9tcmV2LCB0b3JldiA9IGFyZ3MucmV2aXNpb25zCiAKLSAgICBmcm9tIG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcyBpbXBvcnQgcHJvY2Vzc19jaGFuZ2VzCi0KKyAgICBmcm9tIG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcyBpbXBvcnQgaW5pdF9jb2xvdXJzLCBwcm9jZXNzX2NoYW5nZXMKICAgICBpbXBvcnQgZ2l0ZGIKIAorICAgIGluaXRfY29sb3Vycyh7InllcyI6IFRydWUsICJubyI6IEZhbHNlLCAiYXV0byI6IHN5cy5zdGRvdXQuaXNhdHR5KCl9W2FyZ3MuY29sb3VyXSkKKwogICAgIHRyeToKICAgICAgICAgY2hhbmdlcyA9IHByb2Nlc3NfY2hhbmdlcyhhcmdzLmJ1aWxkaGlzdG9yeV9kaXIsIGZyb21yZXYsIHRvcmV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucmVwb3J0X2FsbCwgYXJncy5yZXBvcnRfdmVyLCBhcmdzLnNpZ3MsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL2JidmFycy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYmJ2YXJzLnB5CmluZGV4IGQ4ZDA1OTQuLjI4NmI1YTkgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYmJ2YXJzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYmJ2YXJzLnB5CkBAIC0yMyw2MiArMjMsMzggQEAKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgcmUKIAorIyBTZXQgdXAgc3lzLnBhdGggdG8gbGV0IHVzIGltcG9ydCB0aW5mb2lsCitzY3JpcHRzX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKSkKK2xpYl9wYXRoID0gc2NyaXB0c19wYXRoICsgJy9saWInCitzeXMucGF0aC5pbnNlcnQoMCwgbGliX3BhdGgpCitpbXBvcnQgc2NyaXB0cGF0aAorc2NyaXB0cGF0aC5hZGRfYml0YmFrZV9saWJfcGF0aCgpCitpbXBvcnQgYmIudGluZm9pbAorCiBkZWYgdXNhZ2UoKToKLSAgICBwcmludCgnVXNhZ2U6ICVzIC1kIEZJTEVOQU1FIFstZCBGSUxFTkFNRV0qIC1tIE1FVEFESVIgWy1tIE1BVEFESVJdKicgJSBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKSkKKyAgICBwcmludCgnVXNhZ2U6ICVzIC1kIEZJTEVOQU1FIFstZCBGSUxFTkFNRV0qJyAlIG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pKQogICAgIHByaW50KCcgIC1kIEZJTEVOQU1FICAgICAgICAgZG9jdW1lbnRhdGlvbiBmaWxlIHRvIHNlYXJjaCcpCiAgICAgcHJpbnQoJyAgLWgsIC0taGVscCAgICAgICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhpdCcpCi0gICAgcHJpbnQoJyAgLW0gTUVUQURJUiAgICAgICAgICBtZXRhIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIHJlY2lwZXMnKQogICAgIHByaW50KCcgIC10IEZJTEVOQU1FICAgICAgICAgZG9jdW1lbnRhdGlvbiBjb25maWcgZmlsZSAoZm9yIGRvYyB0YWdzKScpCiAgICAgcHJpbnQoJyAgLVQgICAgICAgICAgICAgICAgICBPbmx5IGRpc3BsYXkgdmFyaWFibGVzIHdpdGggZG9jIHRhZ3MgKHJlcXVpcmVzIC10KScpCiAKLWRlZiByZWNpcGVfYmJ2YXJzKHJlY2lwZSk6Ci0gICAgJycnIFJldHVybiBhIHVuaXF1ZSBzZXQgb2YgZXZlcnkgYmJ2YXIgZW5jb3VudGVyZWQgaW4gdGhlIHJlY2lwZSAnJycKLSAgICBwcm9nID0gcmUuY29tcGlsZSgiW0EtWl9dKyIpCi0gICAgdnNldCA9IHNldCgpCi0gICAgdHJ5OgotICAgICAgICByID0gb3BlbihyZWNpcGUpCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgotICAgICAgICBwcmludCgnV0FSTklORzogRmFpbGVkIHRvIG9wZW4gcmVjaXBlICcsIHJlY2lwZSkKLSAgICAgICAgcHJpbnQoZXJyLmFyZ3NbMV0pCitkZWYgYmJ2YXJfaXNfZG9jdW1lbnRlZCh2YXIsIGRvY3VtZW50ZWRfdmFycyk6CisgICAgJycnIENoZWNrIGlmIHZhcmlhYmxlICh2YXIpIGlzIGluIHRoZSBsaXN0IG9mIGRvY3VtZW50ZWQgdmFyaWFibGVzKGRvY3VtZW50ZWRfdmFycykgJycnCisgICAgaWYgdmFyIGluIGRvY3VtZW50ZWRfdmFyczoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGZvciBsaW5lIGluIHI6Ci0gICAgICAgICMgU3RyaXAgYW55IGNvbW1lbnRzIGZyb20gdGhlIGxpbmUKLSAgICAgICAgbGluZSA9IGxpbmUucnNwbGl0KCcjJylbMF0KLSAgICAgICAgdnNldCA9IHZzZXQudW5pb24oc2V0KHByb2cuZmluZGFsbChsaW5lKSkpCi0gICAgci5jbG9zZSgpCitkZWYgY29sbGVjdF9kb2N1bWVudGVkX3ZhcnMoZG9jZmlsZXMpOgorICAgICcnJyBXYWxrIHRoZSBkb2NmaWxlcyBhbmQgY29sbGVjdCB0aGUgZG9jdW1lbnRlZCB2YXJpYWJsZXMgJycnCisgICAgZG9jdW1lbnRlZF92YXJzID0gW10KKyAgICBwcm9nID0gcmUuY29tcGlsZSgiLiooJHxbXkEtWl9dKTxnbG9zc2VudHJ5IGlkPVwndmFyLSIpCisgICAgdmFyX3Byb2cgPSByZS5jb21waWxlKCc8Z2xvc3NlbnRyeSBpZD1cJ3Zhci0oLiopXCc+JykKKyAgICBmb3IgZCBpbiBkb2NmaWxlczoKKyAgICAgICAgd2l0aCBvcGVuKGQpIGFzIGY6CisgICAgICAgICAgICBkb2N1bWVudGVkX3ZhcnMgKz0gdmFyX3Byb2cuZmluZGFsbChmLnJlYWQoKSkKIAotICAgIGJidmFycyA9IHt9Ci0gICAgZm9yIHYgaW4gdnNldDoKLSAgICAgICAgYmJ2YXJzW3ZdID0gMQotCi0gICAgcmV0dXJuIGJidmFycwotCi1kZWYgY29sbGVjdF9iYnZhcnMobWV0YWRpcik6Ci0gICAgJycnIFdhbGsgdGhlIG1ldGFkaXIgYW5kIGNvbGxlY3QgdGhlIGJidmFycyBmcm9tIGVhY2ggcmVjaXBlIGZvdW5kICcnJwotICAgIGJidmFycyA9IHt9Ci0gICAgZm9yIHJvb3QsZGlycyxmaWxlcyBpbiBvcy53YWxrKG1ldGFkaXIpOgotICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgIGlmIG5hbWUuZmluZCgiLmJiIikgPj0gMDoKLSAgICAgICAgICAgICAgICBmb3Iga2V5IGluIHJlY2lwZV9iYnZhcnMob3MucGF0aC5qb2luKHJvb3QsbmFtZSkpLmtleXMoKToKLSAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIGJidmFyczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJidmFyc1trZXldID0gYmJ2YXJzW2tleV0gKyAxCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYnZhcnNba2V5XSA9IDEKLSAgICByZXR1cm4gYmJ2YXJzCi0KLWRlZiBiYnZhcl9pc19kb2N1bWVudGVkKHZhciwgZG9jZmlsZXMpOgotICAgIHByb2cgPSByZS5jb21waWxlKCIuKigkfFteQS1aX10pJXMoW15BLVpfXXwkKSIgJSAodmFyKSkKLSAgICBmb3IgZG9jIGluIGRvY2ZpbGVzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmID0gb3Blbihkb2MpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGVycjoKLSAgICAgICAgICAgIHByaW50KCdXQVJOSU5HOiBGYWlsZWQgdG8gb3BlbiBkb2MgJywgZG9jKQotICAgICAgICAgICAgcHJpbnQoZXJyLmFyZ3NbMV0pCi0gICAgICAgIGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICBpZiBwcm9nLm1hdGNoKGxpbmUpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGYuY2xvc2UoKQotICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBkb2N1bWVudGVkX3ZhcnMKIAogZGVmIGJidmFyX2RvY3RhZyh2YXIsIGRvY2NvbmYpOgogICAgIHByb2cgPSByZS5jb21waWxlKCdeJXNcW2RvY1xdICo9ICoiKC4qKSInICUgKHZhcikpCkBAIC0xMDAsOCArNzYsNyBAQAogCiBkZWYgbWFpbigpOgogICAgIGRvY2ZpbGVzID0gW10KLSAgICBtZXRhZGlycyA9IFtdCi0gICAgYmJ2YXJzID0ge30KKyAgICBiYnZhcnMgPSBzZXQoKQogICAgIHVuZG9jdW1lbnRlZCA9IFtdCiAgICAgZG9jY29uZiA9ICIiCiAgICAgb25seWRvY3RhZ3MgPSBGYWxzZQpAQCAtMTI0LDEyICs5OSw2IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHByaW50KCdFUlJPUjogZG9jdW1lbnRhdGlvbiBmaWxlICVzIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZScgJSBhKQogICAgICAgICAgICAgICAgIHN5cy5leGl0KDMpCi0gICAgICAgIGVsaWYgbyA9PSAnLW0nOgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihhKToKLSAgICAgICAgICAgICAgICBtZXRhZGlycy5hcHBlbmQoYSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ0VSUk9SOiBtZXRhIGRpcmVjdG9yeSAlcyBpcyBub3QgYSBkaXJlY3RvcnknICUgYSkKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCg0KQogICAgICAgICBlbGlmIG8gPT0gIi10IjoKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGEpOgogICAgICAgICAgICAgICAgIGRvY2NvbmYgPSBhCkBAIC0xNDMsNDMgKzExMiw2OCBAQAogICAgICAgICB1c2FnZSgpCiAgICAgICAgIHN5cy5leGl0KDUpCiAKLSAgICBpZiBsZW4obWV0YWRpcnMpID09IDA6Ci0gICAgICAgIHByaW50KCdFUlJPUjogbm8gbWV0YWRpciBzcGVjaWZpZWQnKQotICAgICAgICB1c2FnZSgpCi0gICAgICAgIHN5cy5leGl0KDYpCi0KICAgICBpZiBvbmx5ZG9jdGFncyBhbmQgZG9jY29uZiA9PSAiIjoKICAgICAgICAgcHJpbnQoJ0VSUk9SOiBubyBkb2Njb25mIHNwZWNpZmllZCcpCiAgICAgICAgIHVzYWdlKCkKICAgICAgICAgc3lzLmV4aXQoNykKIAotICAgICMgQ29sbGVjdCBhbGwgdGhlIHZhcmlhYmxlIG5hbWVzIGZyb20gdGhlIHJlY2lwZXMgaW4gdGhlIG1ldGFkaXJzCi0gICAgZm9yIG0gaW4gbWV0YWRpcnM6Ci0gICAgICAgIGZvciBrZXksY250IGluIGNvbGxlY3RfYmJ2YXJzKG0pLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBrZXkgaW4gYmJ2YXJzOgotICAgICAgICAgICAgICAgIGJidmFyc1trZXldID0gYmJ2YXJzW2tleV0gKyBjbnQKKyAgICBwcm9nID0gcmUuY29tcGlsZSgiXlteYS16XSokIikKKyAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSkKKyAgICAgICAgcGFyc2VyID0gYmIuY29kZXBhcnNlci5QeXRob25QYXJzZXIoJ3BhcnNlcicsIE5vbmUpCisgICAgICAgIGRhdGFzdG9yZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEKKworICAgICAgICBkZWYgYmJ2YXJzX3VwZGF0ZShkYXRhKToKKyAgICAgICAgICAgIGlmIHByb2cubWF0Y2goZGF0YSk6CisgICAgICAgICAgICAgICAgYmJ2YXJzLmFkZChkYXRhKQorICAgICAgICAgICAgaWYgdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXJGbGFnKGRhdGEsICdweXRob24nKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBhcnNlci5wYXJzZV9weXRob24odGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoZGF0YSkpCisgICAgICAgICAgICAgICAgZXhjZXB0IGJiLmRhdGFfc21hcnQuRXhwYW5zaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBmb3IgdmFyIGluIHBhcnNlci5yZWZlcmVuY2VzOgorICAgICAgICAgICAgICAgICAgICBpZiBwcm9nLm1hdGNoKHZhcik6CisgICAgICAgICAgICAgICAgICAgICAgICBiYnZhcnMuYWRkKHZhcikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYmJ2YXJzW2tleV0gPSBjbnQKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkVmFyID0gZGF0YXN0b3JlLmV4cGFuZFdpdGhSZWZzKGRhdGFzdG9yZS5nZXRWYXIoZGF0YSwgRmFsc2UpLCBkYXRhKQorICAgICAgICAgICAgICAgICAgICBmb3IgdmFyIGluIGV4cGFuZGVkVmFyLnJlZmVyZW5jZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwcm9nLm1hdGNoKHZhcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJ2YXJzLmFkZCh2YXIpCisgICAgICAgICAgICAgICAgZXhjZXB0IGJiLmRhdGFfc21hcnQuRXhwYW5zaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIFVzZSB0aW5mb2lsIHRvIGNvbGxlY3QgYWxsIHRoZSB2YXJpYWJsZSBuYW1lcyBnbG9iYWxseQorICAgICAgICBmb3IgZGF0YSBpbiBkYXRhc3RvcmU6CisgICAgICAgICAgICBiYnZhcnNfdXBkYXRlKGRhdGEpCisKKyAgICAgICAgIyBDb2xsZWN0IHZhcmlhYmxlcyBmcm9tIGFsbCByZWNpcGVzCisgICAgICAgIGZvciByZWNpcGUgaW4gdGluZm9pbC5hbGxfcmVjaXBlX2ZpbGVzKHZhcmlhbnRzPUZhbHNlKToKKyAgICAgICAgICAgIHByaW50KCJDaGVja2luZyAlcyIgJSByZWNpcGUpCisgICAgICAgICAgICBmb3IgZGF0YSBpbiB0aW5mb2lsLnBhcnNlX3JlY2lwZV9maWxlKHJlY2lwZSk6CisgICAgICAgICAgICAgICAgYmJ2YXJzX3VwZGF0ZShkYXRhKQorCisgICAgZG9jdW1lbnRlZF92YXJzID0gY29sbGVjdF9kb2N1bWVudGVkX3ZhcnMoZG9jZmlsZXMpCiAKICAgICAjIENoZWNrIGVhY2ggdmFyIGZvciBkb2N1bWVudGF0aW9uCiAgICAgdmFybGVuID0gMAotICAgIGZvciB2IGluIGJidmFycy5rZXlzKCk6CisgICAgZm9yIHYgaW4gYmJ2YXJzOgogICAgICAgICBpZiBsZW4odikgPiB2YXJsZW46CiAgICAgICAgICAgICB2YXJsZW4gPSBsZW4odikKLSAgICAgICAgaWYgbm90IGJidmFyX2lzX2RvY3VtZW50ZWQodiwgZG9jZmlsZXMpOgorICAgICAgICBpZiBub3QgYmJ2YXJfaXNfZG9jdW1lbnRlZCh2LCBkb2N1bWVudGVkX3ZhcnMpOgogICAgICAgICAgICAgdW5kb2N1bWVudGVkLmFwcGVuZCh2KQogICAgIHVuZG9jdW1lbnRlZC5zb3J0KCkKICAgICB2YXJsZW4gPSB2YXJsZW4gKyAxCiAKICAgICAjIFJlcG9ydCBhbGwgdW5kb2N1bWVudGVkIHZhcmlhYmxlcwogICAgIHByaW50KCdGb3VuZCAlZCB1bmRvY3VtZW50ZWQgYmIgdmFyaWFibGVzIChvdXQgb2YgJWQpOicgJSAobGVuKHVuZG9jdW1lbnRlZCksIGxlbihiYnZhcnMpKSkKLSAgICBoZWFkZXIgPSAnJXMlcyVzJyAlIChzdHIoIlZBUklBQkxFIikubGp1c3QodmFybGVuKSwgc3RyKCJDT1VOVCIpLmxqdXN0KDYpLCBzdHIoIkRPQ1RBRyIpLmxqdXN0KDcpKQorICAgIGhlYWRlciA9ICclcyVzJyAlIChzdHIoIlZBUklBQkxFIikubGp1c3QodmFybGVuKSwgc3RyKCJET0NUQUciKS5sanVzdCg3KSkKICAgICBwcmludChoZWFkZXIpCiAgICAgcHJpbnQoc3RyKCIiKS5sanVzdChsZW4oaGVhZGVyKSwgJz0nKSkKICAgICBmb3IgdiBpbiB1bmRvY3VtZW50ZWQ6CiAgICAgICAgIGRvY3RhZyA9IGJidmFyX2RvY3RhZyh2LCBkb2Njb25mKQogICAgICAgICBpZiBub3Qgb25seWRvY3RhZ3Mgb3Igbm90IGRvY3RhZyA9PSAiIjoKLSAgICAgICAgICAgIHByaW50KCclcyVzJXMnICUgKHYubGp1c3QodmFybGVuKSwgc3RyKGJidmFyc1t2XSkubGp1c3QoNiksIGRvY3RhZykpCisgICAgICAgICAgICBwcmludCgnJXMlcycgJSAodi5sanVzdCh2YXJsZW4pLCBkb2N0YWcpKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL2J1aWxkLXBlcmYtdGVzdC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYnVpbGQtcGVyZi10ZXN0LnNoCmluZGV4IDdkOTkyMjguLjlhMDkxZWQgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYnVpbGQtcGVyZi10ZXN0LnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYnVpbGQtcGVyZi10ZXN0LnNoCkBAIC0yODMsNyArMjgzLDcgQEAKIAogdGVzdDFfcDEgKCkgewogICAgIGxvZyAiUnVubmluZyBUZXN0IDEsIHBhcnQgMS8zOiBNZWFzdXJlIHdhbGwgY2xvY2sgb2YgYml0YmFrZSAkSU1BR0UgYW5kIHNpemUgb2YgdG1wLyBkaXIiCi0gICAgYmJub3RpbWUgJElNQUdFIC1jIGZldGNoYWxsCisgICAgYmJub3RpbWUgJElNQUdFIC0tcnVuYWxsPWZldGNoCiAgICAgZG9fcm10bXAKICAgICBkb19ybXNzdGF0ZQogICAgIGRvX3N5bmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTIuNy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTIuNy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNTg2YjMyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MjEgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0KLSMgZ2VuZXJhdGUgUHl0aG9uIE1hbmlmZXN0IGZvciB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotIyAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgotIyAoQykgMjAwNyBKZXJlbXkgTGFpbmUKLSMgbGljZW5zZWQgdW5kZXIgTUlULCBzZWUgQ09QWUlORy5NSVQKLSMKLSMgSnVuZSAyMiwgMjAxMSAtLSBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0jICAqIFVwZGF0ZWQgdG8gbm8gbG9uZ2VyIGdlbmVyYXRlIHNwZWNpYWwgLWRiZyBwYWNrYWdlLCBpbnN0ZWFkIHVzZSB0aGUKLSMgICAgc2luZ2xlIHN5c3RlbSAtZGJnCi0jICAqIFVwZGF0ZSB2ZXJzaW9uIHdpdGggIi4xIiB0byBpbmRpY2F0ZSB0aGlzIGNoYW5nZQotIwotIyBGZWJydWFyeSAyNiwgMjAxNyAtLSBNaW5nIExpdSA8cGV0ZXIueC5saXVAZXh0ZXJuYWwuYXRsYXNjb3Bjby5jb20+Ci0jICAqIFVwZGF0ZWQgdG8gc3VwcG9ydCBnZW5lcmF0aW5nIG1hbmlmZXN0IGZvciBuYXRpdmUgcHl0aG9uCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWltcG9ydCBhcmdwYXJzZQotCi1WRVJTSU9OID0gIjIuNy4yIgotCi1fX2F1dGhvcl9fID0gIk1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPiIKLV9fdmVyc2lvbl9fID0gIjIwMTEwMjIyLjIiCi0KLWNsYXNzIE1ha2VmaWxlTWFrZXI6Ci0KLSAgICBkZWYgX19pbml0X18oIHNlbGYsIG91dGZpbGUsIGlzTmF0aXZlICk6Ci0gICAgICAgICIiImluaXRpYWxpemUiIiIKLSAgICAgICAgc2VsZi5wYWNrYWdlcyA9IHt9Ci0gICAgICAgIHNlbGYuZXhjbHVkZWRfcGtncyA9IFtdCi0gICAgICAgIHNlbGYudGFyZ2V0UHJlZml4ID0gIiR7bGliZGlyfS9weXRob24lcy8iICUgVkVSU0lPTls6M10KLSAgICAgICAgc2VsZi5pc05hdGl2ZSA9IGlzTmF0aXZlCi0gICAgICAgIHNlbGYub3V0cHV0ID0gb3V0ZmlsZQotICAgICAgICBzZWxmLm91dCggIiIiCi0jIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBBVVRPIEdFTkVSQVRFRDogTWFudWFsIGVkaXRzIHdpbGwgYmUgbG9zdCBuZXh0IHRpbWUgSSByZWdlbmVyYXRlIHRoZSBmaWxlLgotIyBHZW5lcmF0b3I6ICclcyVzJyBWZXJzaW9uICVzIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+Ci0iIiIgJSAoIHN5cy5hcmd2WzBdLCAnIC0tbmF0aXZlJyBpZiBpc05hdGl2ZSBlbHNlICcnLCBfX3ZlcnNpb25fXyApICkKLQotICAgICMKLSAgICAjIGhlbHBlciBmdW5jdGlvbnMKLSAgICAjCi0KLSAgICBkZWYgb3V0KCBzZWxmLCBkYXRhICk6Ci0gICAgICAgICIiInByaW50IGEgbGluZSB0byB0aGUgb3V0cHV0IGZpbGUiIiIKLSAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoICIlc1xuIiAlIGRhdGEgKQotCi0gICAgZGVmIHNldFByZWZpeCggc2VsZiwgdGFyZ2V0UHJlZml4ICk6Ci0gICAgICAgICIiInNldCBhIGZpbGUgcHJlZml4IGZvciBhZGRQYWNrYWdlIGZpbGVzIiIiCi0gICAgICAgIHNlbGYudGFyZ2V0UHJlZml4ID0gdGFyZ2V0UHJlZml4Ci0KLSAgICBkZWYgZG9Qcm9sb2coIHNlbGYgKToKLSAgICAgICAgc2VsZi5vdXQoICIiIiAiIiIgKQotICAgICAgICBzZWxmLm91dCggIiIgKQotCi0gICAgZGVmIGFkZFBhY2thZ2UoIHNlbGYsIG5hbWUsIGRlc2NyaXB0aW9uLCBkZXBlbmRlbmNpZXMsIGZpbGVuYW1lcywgbW9kX2V4Y2x1ZGUgPSBGYWxzZSApOgotICAgICAgICAiIiJhZGQgYSBwYWNrYWdlIHRvIHRoZSBNYWtlZmlsZSIiIgotICAgICAgICBpZiB0eXBlKCBmaWxlbmFtZXMgKSA9PSB0eXBlKCAiIiApOgotICAgICAgICAgICAgZmlsZW5hbWVzID0gZmlsZW5hbWVzLnNwbGl0KCkKLSAgICAgICAgZnVsbEZpbGVuYW1lcyA9IFtdCi0gICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXM6Ci0gICAgICAgICAgICBpZiBmaWxlbmFtZVswXSAhPSAiJCI6Ci0gICAgICAgICAgICAgICAgZnVsbEZpbGVuYW1lcy5hcHBlbmQoICIlcyVzIiAlICggc2VsZi50YXJnZXRQcmVmaXgsIGZpbGVuYW1lICkgKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmdWxsRmlsZW5hbWVzLmFwcGVuZCggZmlsZW5hbWUgKQotICAgICAgICBpZiBtb2RfZXhjbHVkZToKLSAgICAgICAgICAgIHNlbGYuZXhjbHVkZWRfcGtncy5hcHBlbmQoIG5hbWUgKQotICAgICAgICBzZWxmLnBhY2thZ2VzW25hbWVdID0gZGVzY3JpcHRpb24sIGRlcGVuZGVuY2llcywgZnVsbEZpbGVuYW1lcwotCi0gICAgZGVmIGRvQm9keSggc2VsZiApOgotICAgICAgICAiIiJnZW5lcmF0ZSBib2R5IG9mIE1ha2VmaWxlIiIiCi0KLSAgICAgICAgZ2xvYmFsIFZFUlNJT04KLQotICAgICAgICAjCi0gICAgICAgICMgZ2VuZXJhdGUgcnByb3ZpZGVzIGxpbmUgZm9yIG5hdGl2ZQotICAgICAgICAjCi0KLSAgICAgICAgaWYgc2VsZi5pc05hdGl2ZToKLSAgICAgICAgICAgIHBrZ2xpc3QgPSBbXQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gWycke1BOfS1tb2R1bGVzJ10gKyBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6Ci0gICAgICAgICAgICAgICAgcGtnbGlzdC5hcHBlbmQoJyVzLW5hdGl2ZScgJSBuYW1lLnJlcGxhY2UoJyR7UE59JywgJ3B5dGhvbicpKQotCi0gICAgICAgICAgICBzZWxmLm91dCgnUlBST1ZJREVTICs9ICIlcyInICUgIiAiLmpvaW4ocGtnbGlzdCkpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjCi0gICAgICAgICMgZ2VuZXJhdGUgcHJvdmlkZXMgbGluZQotICAgICAgICAjCi0KLSAgICAgICAgcHJvdmlkZUxpbmUgPSAnUFJPVklERVMrPSInCi0gICAgICAgIGZvciBuYW1lIGluIHNvcnRlZChzZWxmLnBhY2thZ2VzKToKLSAgICAgICAgICAgIHByb3ZpZGVMaW5lICs9ICIlcyAiICUgbmFtZQotICAgICAgICBwcm92aWRlTGluZSArPSAnIicKLQotICAgICAgICBzZWxmLm91dCggcHJvdmlkZUxpbmUgKQotICAgICAgICBzZWxmLm91dCggIiIgKQotCi0gICAgICAgICMKLSAgICAgICAgIyBnZW5lcmF0ZSBwYWNrYWdlIGxpbmUKLSAgICAgICAgIwotCi0gICAgICAgIHBhY2thZ2VMaW5lID0gJ1BBQ0tBR0VTPSIke1BOfS1kYmcgJwotICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6Ci0gICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoIiR7UE59LWRpc3R1dGlscyIpOgotICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gIiR7UE59LWRpc3R1dGlscyI6Ci0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VMaW5lICs9ICIlcy1zdGF0aWNkZXYgJXMgIiAlIChuYW1lLCBuYW1lKQotICAgICAgICAgICAgZWxpZiBuYW1lICE9ICcke1BOfS1kYmcnOgotICAgICAgICAgICAgICAgIHBhY2thZ2VMaW5lICs9ICIlcyAiICUgbmFtZQotICAgICAgICBwYWNrYWdlTGluZSArPSAnJHtQTn0tbW9kdWxlcyInCi0KLSAgICAgICAgc2VsZi5vdXQoIHBhY2thZ2VMaW5lICkKLSAgICAgICAgc2VsZi5vdXQoICIiICkKLQotICAgICAgICAjCi0gICAgICAgICMgZ2VuZXJhdGUgcGFja2FnZSB2YXJpYWJsZXMKLSAgICAgICAgIwotCi0gICAgICAgIGZvciBuYW1lLCBkYXRhIGluIHNvcnRlZChzZWxmLnBhY2thZ2VzLml0ZW1zKCkpOgotICAgICAgICAgICAgZGVzYywgZGVwcywgZmlsZXMgPSBkYXRhCi0KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgd3JpdGUgb3V0IHRoZSBkZXNjcmlwdGlvbiwgcmV2aXNpb24gYW5kIGRlcGVuZGVuY2llcwotICAgICAgICAgICAgIwotICAgICAgICAgICAgc2VsZi5vdXQoICdTVU1NQVJZXyVzPSIlcyInICUgKCBuYW1lLCBkZXNjICkgKQotICAgICAgICAgICAgc2VsZi5vdXQoICdSREVQRU5EU18lcz0iJXMiJyAlICggbmFtZSwgZGVwcyApICkKLQotICAgICAgICAgICAgbGluZSA9ICdGSUxFU18lcz0iJyAlIG5hbWUKLQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBjaGVjayB3aGljaCBkaXJlY3RvcmllcyB0byBtYWtlIGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5Ci0gICAgICAgICAgICAjCi0KLSAgICAgICAgICAgIGRpcnNldCA9IHt9ICMgaWYgcHl0aG9uIGhhZCBhIHNldC1kYXRhdHlwZSB0aGlzIHdvdWxkIGJlIHN1ZmZpY2llbnQuIGZvciBub3csIHdlJ3JlIHVzaW5nIGEgZGljdCBpbnN0ZWFkLgotICAgICAgICAgICAgZm9yIHRhcmdldCBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBkaXJzZXRbb3MucGF0aC5kaXJuYW1lKCB0YXJnZXQgKV0gPSBUcnVlCi0KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgZ2VuZXJhdGUgd2hpY2ggZmlsZXMgdG8gY29weSBmb3IgdGhlIHRhcmdldCAoLWRmUiBiZWNhdXNlIHdob2xlIGRpcmVjdG9yaWVzIGFyZSBhbHNvIGFsbG93ZWQpCi0gICAgICAgICAgICAjCi0KLSAgICAgICAgICAgIGZvciB0YXJnZXQgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgbGluZSArPSAiJXMgIiAlIHRhcmdldAotCi0gICAgICAgICAgICBsaW5lICs9ICciJwotICAgICAgICAgICAgc2VsZi5vdXQoIGxpbmUgKQotICAgICAgICAgICAgc2VsZi5vdXQoICIiICkKLQotICAgICAgICBzZWxmLm91dCggJ1NVTU1BUllfJHtQTn0tbW9kdWxlcz0iQWxsIFB5dGhvbiBtb2R1bGVzIicgKQotICAgICAgICBsaW5lID0gJ1JERVBFTkRTXyR7UE59LW1vZHVsZXM9IicKLQotICAgICAgICBmb3IgbmFtZSwgZGF0YSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcy5pdGVtcygpKToKLSAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIFsnJHtQTn0tZGV2JywgJyR7UE59LWRpc3R1dGlscy1zdGF0aWNkZXYnXSBhbmQgbmFtZSBub3QgaW4gc2VsZi5leGNsdWRlZF9wa2dzOgotICAgICAgICAgICAgICAgIGxpbmUgKz0gIiVzICIgJSBuYW1lCi0KLSAgICAgICAgc2VsZi5vdXQoICIlcyBcIiIgJSBsaW5lICkKLSAgICAgICAgc2VsZi5vdXQoICdBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiJyApCi0KLSAgICBkZWYgZG9FcGlsb2coIHNlbGYgKToKLSAgICAgICAgc2VsZi5vdXQoICIiIiIiIiApCi0gICAgICAgIHNlbGYub3V0KCAiIiApCi0KLSAgICBkZWYgbWFrZSggc2VsZiApOgotICAgICAgICBzZWxmLmRvUHJvbG9nKCkKLSAgICAgICAgc2VsZi5kb0JvZHkoKQotICAgICAgICBzZWxmLmRvRXBpbG9nKCkKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlciggZGVzY3JpcHRpb249J2dlbmVyYXRlIHB5dGhvbiBtYW5pZmVzdCcgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoICctbicsICctLW5hdGl2ZScsIGhlbHA9J2dlbmVyYXRlIG1hbmlmZXN0IGZvciBuYXRpdmUgcHl0aG9uJywgYWN0aW9uPSdzdG9yZV90cnVlJyApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCggJ291dGZpbGUnLCBtZXRhdmFyPSdPVVRQVVRfRklMRScsIG5hcmdzPSc/JywgZGVmYXVsdD0nJywgaGVscD0nT3V0cHV0IGZpbGUgKGRlZmF1bHRzIHRvIHN0ZG91dCknICkKLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgaWYgYXJncy5vdXRmaWxlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy51bmxpbmsoIGFyZ3Mub3V0ZmlsZSApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBzeXMuZXhjX2NsZWFyKCkKLSAgICAgICAgb3V0ZmlsZSA9IG9wZW4oIGFyZ3Mub3V0ZmlsZSwgInciICkKLSAgICBlbHNlOgotICAgICAgICBvdXRmaWxlID0gc3lzLnN0ZG91dAotCi0gICAgbSA9IE1ha2VmaWxlTWFrZXIoIG91dGZpbGUsIGFyZ3MubmF0aXZlICkKLQotICAgICMgQWRkIHBhY2thZ2VzIGhlcmUuIE9ubHkgc3BlY2lmeSBkbG9wZW4tc3R5bGUgbGlicmFyeSBkZXBlbmRlbmNpZXMgaGVyZSwgbm8gbGRkLXN0eWxlIGRlcGVuZGVuY2llcyEKLSAgICAjIFBhcmFtZXRlcnM6IHJldmlzaW9uLCBuYW1lLCBkZXNjcmlwdGlvbiwgZGVwZW5kZW5jaWVzLCBmaWxlbmFtZXMKLSAgICAjCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb3JlIiwgIlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIiwgIiR7UE59LWxhbmcgJHtQTn0tcmUiLAotICAgICJfX2Z1dHVyZV9fLiogX2FiY29sbC4qIGFiYy4qIGFzdC4qIGNvcHkuKiBjb3B5X3JlZy4qIENvbmZpZ1BhcnNlci4qICIgKwotICAgICJnZW5lcmljcGF0aC4qIGdldG9wdC4qIGxpbmVjYWNoZS4qIG5ldy4qICIgKwotICAgICJvcy4qIHBvc2l4cGF0aC4qIHN0cnVjdC4qICIgKwotICAgICJ3YXJuaW5ncy4qIHNpdGUuKiBzdGF0LiogIiArCi0gICAgIlVzZXJEaWN0LiogVXNlckxpc3QuKiBVc2VyU3RyaW5nLiogIiArCi0gICAgImxpYi1keW5sb2FkL2JpbmFzY2lpLnNvIGxpYi1keW5sb2FkL19zdHJ1Y3Quc28gbGliLWR5bmxvYWQvdGltZS5zbyAiICsKLSAgICAibGliLWR5bmxvYWQveHJlYWRsaW5lcy5zbyB0eXBlcy4qIHBsYXRmb3JtLiogJHtiaW5kaXJ9L3B5dGhvbiogIiAgKwotICAgICJfd2Vha3JlZnNldC4qIHN5c2NvbmZpZy4qIF9zeXNjb25maWdkYXRhLiogIiArCi0gICAgIiR7aW5jbHVkZWRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZyouaCAiICsKLSAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZWN1c3RvbWl6ZS5weSAiKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGV2IiwgIlB5dGhvbiBkZXZlbG9wbWVudCBwYWNrYWdlIiwgIiR7UE59LWNvcmUiLAotICAgICIke2luY2x1ZGVkaXJ9ICIgKwotICAgICIke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSAiICsKLSAgICAiJHtsaWJkaXJ9LyoubGEgIiArCi0gICAgIiR7bGliZGlyfS8qLmEgIiArCi0gICAgIiR7bGliZGlyfS8qLm8gIiArCi0gICAgIiR7bGliZGlyfS9wa2djb25maWcgIiArCi0gICAgIiR7YmFzZV9saWJkaXJ9LyouYSAiICsKLSAgICAiJHtiYXNlX2xpYmRpcn0vKi5vICIgKwotICAgICIke2RhdGFkaXJ9L2FjbG9jYWwgIiArCi0gICAgIiR7ZGF0YWRpcn0vcGtnY29uZmlnICIgKwotICAgICJjb25maWcvTWFrZWZpbGUgIikKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LTJ0bzMiLCAiUHl0aG9uIGF1dG9tYXRlZCBQeXRob24gMiB0byAzIGNvZGUgdHJhbnNsYXRvciIsICIke1BOfS1jb3JlIiwKLSAgICAiJHtiaW5kaXJ9LzJ0bzMgbGliMnRvMyIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWlkbGUiLCAiUHl0aG9uIEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQiLCAiJHtQTn0tY29yZSAke1BOfS10a2ludGVyIiwKLSAgICAiJHtiaW5kaXJ9L2lkbGUgaWRsZWxpYiIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXB5ZG9jIiwgIlB5dGhvbiBpbnRlcmFjdGl2ZSBoZWxwIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LXN0cmluZ29sZCAke1BOfS1yZSIsCi0gICAgIiR7YmluZGlyfS9weWRvYyBweWRvYy4qIHB5ZG9jX2RhdGEiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXNtdHBkIiwgIlB5dGhvbiBTaW1wbGUgTWFpbCBUcmFuc3BvcnQgRGFlbW9uIiwgIiR7UE59LWNvcmUgJHtQTn0tbmV0c2VydmVyICR7UE59LWVtYWlsICR7UE59LW1pbWUiLAotICAgICIke2JpbmRpcn0vc210cGQuKiBzbXRwZC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1hdWRpbyIsICJQeXRob24gQXVkaW8gSGFuZGxpbmciLCAiJHtQTn0tY29yZSIsCi0gICAgIndhdmUuKiBjaHVuay4qIHNuZGhkci4qIGxpYi1keW5sb2FkL29zc2F1ZGlvZGV2LnNvIGxpYi1keW5sb2FkL2F1ZGlvb3Auc28gYXVkaW9kZXYuKiBzdW5hdWRpby4qIHN1bmF1LiogdG9haWZmLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWJzZGRiIiwgIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIEJlcmtlbGV5IERhdGFiYXNlIiwgIiR7UE59LWNvcmUiLAotICAgICJic2RkYiBsaWItZHlubG9hZC9fYnNkZGIuc28iICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb2RlY3MiLCAiUHl0aG9uIGNvZGVjcywgZW5jb2RpbmdzICYgaTE4biBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyIsCi0gICAgImNvZGVjcy4qIGVuY29kaW5ncyBnZXR0ZXh0LiogbG9jYWxlLiogbGliLWR5bmxvYWQvX2xvY2FsZS5zbyBsaWItZHlubG9hZC9fY29kZWNzKiBsaWItZHlubG9hZC9fbXVsdGlieXRlY29kZWMuc28gbGliLWR5bmxvYWQvdW5pY29kZWRhdGEuc28gc3RyaW5ncHJlcC4qIHhkcmxpYi4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb21waWxlIiwgIlB5dGhvbiBieXRlY29kZSBjb21waWxhdGlvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUiLAotICAgICJweV9jb21waWxlLiogY29tcGlsZWFsbC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb21waWxlciIsICJQeXRob24gY29tcGlsZXIgc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAiY29tcGlsZXIiICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb21wcmVzc2lvbiIsICJQeXRob24gaGlnaC1sZXZlbCBjb21wcmVzc2lvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0temxpYiIsCi0gICAgImd6aXAuKiB6aXBmaWxlLiogdGFyZmlsZS4qIGxpYi1keW5sb2FkL2J6Mi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tY3J5cHQiLCAiUHl0aG9uIGJhc2ljIGNyeXB0b2dyYXBoaWMgYW5kIGhhc2hpbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAiaGFzaGxpYi4qIG1kNS4qIHNoYS4qIGxpYi1keW5sb2FkL2NyeXB0LnNvIGxpYi1keW5sb2FkL19oYXNobGliLnNvIGxpYi1keW5sb2FkL19zaGEyNTYuc28gbGliLWR5bmxvYWQvX3NoYTUxMi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tdGV4dHV0aWxzIiwgIlB5dGhvbiBvcHRpb24gcGFyc2luZywgdGV4dCB3cmFwcGluZyBhbmQgQ1NWIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1yZSAke1BOfS1zdHJpbmdvbGQiLAotICAgICJsaWItZHlubG9hZC9fY3N2LnNvIGNzdi4qIG9wdHBhcnNlLiogdGV4dHdyYXAuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tY3Vyc2VzIiwgIlB5dGhvbiBjdXJzZXMgc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAiY3Vyc2VzIGxpYi1keW5sb2FkL19jdXJzZXMuc28gbGliLWR5bmxvYWQvX2N1cnNlc19wYW5lbC5zbyIgKSAjIGRpcmVjdG9yeSArIGxvdyBsZXZlbCBtb2R1bGUKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWN0eXBlcyIsICJQeXRob24gQyB0eXBlcyBzdXBwb3J0IiwgIiR7UE59LWNvcmUiLAotICAgICJjdHlwZXMgbGliLWR5bmxvYWQvX2N0eXBlcy5zbyBsaWItZHlubG9hZC9fY3R5cGVzX3Rlc3Quc28iICkgIyBkaXJlY3RvcnkgKyBsb3cgbGV2ZWwgbW9kdWxlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1kYXRldGltZSIsICJQeXRob24gY2FsZW5kYXIgYW5kIHRpbWUgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWNvZGVjcyIsCi0gICAgIl9zdHJwdGltZS4qIGNhbGVuZGFyLiogbGliLWR5bmxvYWQvZGF0ZXRpbWUuc28iICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWRiIiwgIlB5dGhvbiBmaWxlLWJhc2VkIGRhdGFiYXNlIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgImFueWRibS4qIGR1bWJkYm0uKiB3aGljaGRiLiogIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1kZWJ1Z2dlciIsICJQeXRob24gZGVidWdnZXIiLCAiJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LXJlICR7UE59LXN0cmluZ29sZCAke1BOfS1zaGVsbCAke1BOfS1wcHJpbnQiLAotICAgICJiZGIuKiBwZGIuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGlmZmxpYiIsICJQeXRob24gaGVscGVycyBmb3IgY29tcHV0aW5nIGRlbHRhcyBiZXR3ZWVuIG9iamVjdHMiLCAiJHtQTn0tbGFuZyAke1BOfS1yZSIsCi0gICAgImRpZmZsaWIuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiIsICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoc3RhdGljIGxpYnJhcmllcykiLCAiJHtQTn0tZGlzdHV0aWxzIiwKLSAgICAiY29uZmlnL2xpYiouYSIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWRpc3R1dGlscyIsICJQeXRob24gRGlzdHJpYnV0aW9uIFV0aWxpdGllcyIsICIke1BOfS1jb3JlICR7UE59LWVtYWlsIiwKLSAgICAiY29uZmlnIGRpc3R1dGlscyIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWRvY3Rlc3QiLCAiUHl0aG9uIGZyYW1ld29yayBmb3IgcnVubmluZyBleGFtcGxlcyBpbiBkb2NzdHJpbmdzIiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyAke1BOfS1pbyAke1BOfS1yZSAke1BOfS11bml0dGVzdCAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliIiwKLSAgICAiZG9jdGVzdC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1lbWFpbCIsICJQeXRob24gZW1haWwgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LXJlICR7UE59LW1pbWUgJHtQTn0tYXVkaW8gJHtQTn0taW1hZ2UgJHtQTn0tbmV0Y2xpZW50IiwKLSAgICAiaW1hcGxpYi4qIGVtYWlsIiApICMgcGFja2FnZQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZmNudGwiLCAiUHl0aG9uJ3MgZmNudGwgaW50ZXJmYWNlIiwgIiR7UE59LWNvcmUiLAotICAgICJsaWItZHlubG9hZC9mY250bC5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0taG90c2hvdCIsICJQeXRob24gaG90c2hvdCBwZXJmb3JtYW5jZSBwcm9maWxlciIsICIke1BOfS1jb3JlIiwKLSAgICAiaG90c2hvdCBsaWItZHlubG9hZC9faG90c2hvdC5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0taHRtbCIsICJQeXRob24gSFRNTCBwcm9jZXNzaW5nIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgImZvcm1hdHRlci4qIGh0bWxlbnRpdHlkZWZzLiogaHRtbGxpYi4qIG1hcmt1cGJhc2UuKiBzZ21sbGliLiogSFRNTFBhcnNlci4qICIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0taW1wb3J0bGliIiwgIlB5dGhvbiBpbXBvcnQgaW1wbGVtZW50YXRpb24gbGlicmFyeSIsICIke1BOfS1jb3JlIiwKLSAgICAiaW1wb3J0bGliIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1nZGJtIiwgIlB5dGhvbiBHTlUgZGF0YWJhc2Ugc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvZ2RibS5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0taW1hZ2UiLCAiUHl0aG9uIGdyYXBoaWNhbCBpbWFnZSBoYW5kbGluZyIsICIke1BOfS1jb3JlIiwKLSAgICAiY29sb3JzeXMuKiBpbWdoZHIuKiBsaWItZHlubG9hZC9pbWFnZW9wLnNvIGxpYi1keW5sb2FkL3JnYmltZy5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0taW8iLCAiUHl0aG9uIGxvdy1sZXZlbCBJL08iLCAiJHtQTn0tY29yZSAke1BOfS1tYXRoICR7UE59LXRleHR1dGlscyAke1BOfS1uZXRjbGllbnQgJHtQTn0tY29udGV4dGxpYiIsCi0gICAgImxpYi1keW5sb2FkL19zb2NrZXQuc28gbGliLWR5bmxvYWQvX2lvLnNvIGxpYi1keW5sb2FkL19zc2wuc28gbGliLWR5bmxvYWQvc2VsZWN0LnNvIGxpYi1keW5sb2FkL3Rlcm1pb3Muc28gbGliLWR5bmxvYWQvY1N0cmluZ0lPLnNvICIgKwotICAgICJwaXBlcy4qIHNvY2tldC4qIHNzbC4qIHRlbXBmaWxlLiogU3RyaW5nSU8uKiBpby4qIF9weWlvLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWpzb24iLCAiUHl0aG9uIEpTT04gc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LW1hdGggJHtQTn0tcmUgJHtQTn0tY29kZWNzIiwKLSAgICAianNvbiBsaWItZHlubG9hZC9fanNvbi5zbyIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWxhbmciLCAiUHl0aG9uIGxvdy1sZXZlbCBsYW5ndWFnZSBzdXBwb3J0IiwgIiR7UE59LWNvcmUiLAotICAgICJsaWItZHlubG9hZC9fYmlzZWN0LnNvIGxpYi1keW5sb2FkL19jb2xsZWN0aW9ucy5zbyBsaWItZHlubG9hZC9faGVhcHEuc28gbGliLWR5bmxvYWQvX3dlYWtyZWYuc28gbGliLWR5bmxvYWQvX2Z1bmN0b29scy5zbyAiICsKLSAgICAibGliLWR5bmxvYWQvYXJyYXkuc28gbGliLWR5bmxvYWQvaXRlcnRvb2xzLnNvIGxpYi1keW5sb2FkL29wZXJhdG9yLnNvIGxpYi1keW5sb2FkL3BhcnNlci5zbyAiICsKLSAgICAiYXRleGl0LiogYmlzZWN0LiogY29kZS4qIGNvZGVvcC4qIGNvbGxlY3Rpb25zLiogZGlzLiogZnVuY3Rvb2xzLiogaGVhcHEuKiBpbnNwZWN0Lioga2V5d29yZC4qIG9wY29kZS4qIHN5bWJvbC4qIHJlcHIuKiB0b2tlbi4qICIgKwotICAgICJ0b2tlbml6ZS4qIHRyYWNlYmFjay4qIHdlYWtyZWYuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbG9nZ2luZyIsICJQeXRob24gbG9nZ2luZyBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1waWNrbGUgJHtQTn0tc3RyaW5nb2xkIiwKLSAgICAibG9nZ2luZyIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LW1haWxib3giLCAiUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1taW1lIiwKLSAgICAibWFpbGJveC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1tYXRoIiwgIlB5dGhvbiBtYXRoIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1jcnlwdCIsCi0gICAgImxpYi1keW5sb2FkL2NtYXRoLnNvIGxpYi1keW5sb2FkL21hdGguc28gbGliLWR5bmxvYWQvX3JhbmRvbS5zbyByYW5kb20uKiBzZXRzLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LW1pbWUiLCAiUHl0aG9uIE1JTUUgaGFuZGxpbmcgQVBJcyIsICIke1BOfS1jb3JlICR7UE59LWlvIiwKLSAgICAibWltZXRvb2xzLiogdXUuKiBxdW9wcmkuKiByZmM4MjIuKiBNaW1lV3JpdGVyLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LW1tYXAiLCAiUHl0aG9uIG1lbW9yeS1tYXBwZWQgZmlsZSBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0taW8iLAotICAgICJsaWItZHlubG9hZC9tbWFwLnNvICIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbXVsdGlwcm9jZXNzaW5nIiwgIlB5dGhvbiBtdWx0aXByb2Nlc3Npbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LWxhbmcgJHtQTn0tcGlja2xlICR7UE59LXRocmVhZGluZyAke1BOfS1jdHlwZXMgJHtQTn0tbW1hcCIsCi0gICAgImxpYi1keW5sb2FkL19tdWx0aXByb2Nlc3Npbmcuc28gbXVsdGlwcm9jZXNzaW5nIiApICMgcGFja2FnZQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbmV0Y2xpZW50IiwgIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBjbGllbnRzIiwgIiR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tZGF0ZXRpbWUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1pbWUiLAotICAgICIqQ29va2llKi4qICIgKwotICAgICJiYXNlNjQuKiBjb29raWVsaWIuKiBmdHBsaWIuKiBnb3BoZXJsaWIuKiBobWFjLiogaHR0cGxpYi4qIG1pbWV0eXBlcy4qIG5udHBsaWIuKiBwb3BsaWIuKiBzbXRwbGliLiogdGVsbmV0bGliLiogdXJsbGliLiogdXJsbGliMi4qIHVybHBhcnNlLiogdXVpZC4qIHJmYzgyMi4qIG1pbWV0b29scy4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1uZXRzZXJ2ZXIiLCAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIHNlcnZlcnMiLCAiJHtQTn0tY29yZSAke1BOfS1uZXRjbGllbnQgJHtQTn0tc2hlbGwgJHtQTn0tdGhyZWFkaW5nIiwKLSAgICAiY2dpLiogKkhUVFBTZXJ2ZXIuKiBTb2NrZXRTZXJ2ZXIuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbnVtYmVycyIsICJQeXRob24gbnVtYmVyIEFQSXMiLCAiJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LXJlIiwKLSAgICAiZGVjaW1hbC4qIGZyYWN0aW9ucy4qIG51bWJlcnMuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tcGlja2xlIiwgIlB5dGhvbiBzZXJpYWxpc2F0aW9uL3BlcnNpc3RlbmNlIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0taW8gJHtQTn0tcmUiLAotICAgICJwaWNrbGUuKiBzaGVsdmUuKiBsaWItZHlubG9hZC9jUGlja2xlLnNvIHBpY2tsZXRvb2xzLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXBrZ3V0aWwiLCAiUHl0aG9uIHBhY2thZ2UgZXh0ZW5zaW9uIHV0aWxpdHkgc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAicGtndXRpbC4qIikKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXBsaXN0bGliIiwgIkdlbmVyYXRlIGFuZCBwYXJzZSBNYWMgT1MgWCAucGxpc3QgZmlsZXMiLCAiJHtQTn0tY29yZSAke1BOfS1kYXRldGltZSAke1BOfS1pbyIsCi0gICAgInBsaXN0bGliLioiKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tcHByaW50IiwgIlB5dGhvbiBwcmV0dHktcHJpbnQgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvIiwKLSAgICAicHByaW50LioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXByb2ZpbGUiLCAiUHl0aG9uIGJhc2ljIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tdGV4dHV0aWxzIiwKLSAgICAicHJvZmlsZS4qIHBzdGF0cy4qIGNQcm9maWxlLiogbGliLWR5bmxvYWQvX2xzcHJvZi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tcmUiLCAiUHl0aG9uIFJlZ3VsYXIgRXhwcmVzc2lvbiBBUElzIiwgIiR7UE59LWNvcmUiLAotICAgICJyZS4qIHNyZS4qIHNyZV9jb21waWxlLiogc3JlX2NvbnN0YW50cyogc3JlX3BhcnNlLioiICkgIyBfc3JlIGlzIGJ1aWx0aW4KLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXJlYWRsaW5lIiwgIlB5dGhvbiByZWFkbGluZSBzdXBwb3J0IiwgIiR7UE59LWNvcmUiLAotICAgICJsaWItZHlubG9hZC9yZWFkbGluZS5zbyBybGNvbXBsZXRlci4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1yZXNvdXJjZSIsICJQeXRob24gcmVzb3VyY2UgY29udHJvbCBpbnRlcmZhY2UiLCAiJHtQTn0tY29yZSIsCi0gICAgImxpYi1keW5sb2FkL3Jlc291cmNlLnNvIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1zaGVsbCIsICJQeXRob24gc2hlbGwtbGlrZSBmdW5jdGlvbmFsaXR5IiwgIiR7UE59LWNvcmUgJHtQTn0tcmUiLAotICAgICJjbWQuKiBjb21tYW5kcy4qIGRpcmNhY2hlLiogZm5tYXRjaC4qIGdsb2IuKiBwb3BlbjIuKiBzaGxleC4qIHNodXRpbC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1yb2JvdHBhcnNlciIsICJQeXRob24gcm9ib3RzLnR4dCBwYXJzZXIiLCAiJHtQTn0tY29yZSAke1BOfS1uZXRjbGllbnQiLAotICAgICJyb2JvdHBhcnNlci4qIikKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXN1YnByb2Nlc3MiLCAiUHl0aG9uIHN1YnByb2Nlc3Mgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LXJlICR7UE59LWZjbnRsICR7UE59LXBpY2tsZSIsCi0gICAgInN1YnByb2Nlc3MuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tc3FsaXRlMyIsICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tbGFuZyAke1BOfS1jcnlwdCAke1BOfS1pbyAke1BOfS10aHJlYWRpbmcgJHtQTn0temxpYiIsCi0gICAgImxpYi1keW5sb2FkL19zcWxpdGUzLnNvIHNxbGl0ZTMvZGJhcGkyLiogc3FsaXRlMy9fX2luaXRfXy4qIHNxbGl0ZTMvZHVtcC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1zcWxpdGUzLXRlc3RzIiwgIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQgdGVzdHMiLCAiJHtQTn0tY29yZSAke1BOfS1zcWxpdGUzIiwKLSAgICAic3FsaXRlMy90ZXN0IiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1zdHJpbmdvbGQiLCAiUHl0aG9uIHN0cmluZyBBUElzIFtkZXByZWNhdGVkXSIsICIke1BOfS1jb3JlICR7UE59LXJlIiwKLSAgICAibGliLWR5bmxvYWQvc3Ryb3Auc28gc3RyaW5nLiogc3RyaW5nb2xkLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXN5c2xvZyIsICJQeXRob24gc3lzbG9nIGludGVyZmFjZSIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvc3lzbG9nLnNvIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10ZXJtaW5hbCIsICJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvIiwKLSAgICAicHR5LiogdHR5LioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXRlc3RzIiwgIlB5dGhvbiB0ZXN0cyIsICIke1BOfS1jb3JlICR7UE59LW1vZHVsZXMiLAotICAgICJ0ZXN0IiwgVHJ1ZSApICMgcGFja2FnZQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tdGhyZWFkaW5nIiwgIlB5dGhvbiB0aHJlYWRpbmcgJiBzeW5jaHJvbml6YXRpb24gc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWxhbmciLAotICAgICJfdGhyZWFkaW5nX2xvY2FsLiogZHVtbXlfdGhyZWFkLiogZHVtbXlfdGhyZWFkaW5nLiogbXV0ZXguKiB0aHJlYWRpbmcuKiBRdWV1ZS4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10a2ludGVyIiwgIlB5dGhvbiBUY2wvVGsgYmluZGluZ3MiLCAiJHtQTn0tY29yZSIsCi0gICAgImxpYi1keW5sb2FkL190a2ludGVyLnNvIGxpYi10ayIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXVuaXR0ZXN0IiwgIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIiwgIiR7UE59LWNvcmUgJHtQTn0tc3RyaW5nb2xkICR7UE59LWxhbmcgJHtQTn0taW8gJHtQTn0tZGlmZmxpYiAke1BOfS1wcHJpbnQgJHtQTn0tc2hlbGwiLAotICAgICJ1bml0dGVzdC8iICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXVuaXhhZG1pbiIsICJQeXRob24gVW5peCBhZG1pbmlzdHJhdGlvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUiLAotICAgICJsaWItZHlubG9hZC9uaXMuc28gbGliLWR5bmxvYWQvZ3JwLnNvIGxpYi1keW5sb2FkL3B3ZC5zbyBnZXRwYXNzLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXhtbCIsICJQeXRob24gYmFzaWMgWE1MIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1yZSIsCi0gICAgImxpYi1keW5sb2FkL19lbGVtZW50dHJlZS5zbyBsaWItZHlubG9hZC9weWV4cGF0LnNvIHhtbCB4bWxsaWIuKiIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXhtbHJwYyIsICJQeXRob24gWE1MLVJQQyBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0teG1sICR7UE59LW5ldHNlcnZlciAke1BOfS1sYW5nIiwKLSAgICAieG1scnBjbGliLiogU2ltcGxlWE1MUlBDU2VydmVyLiogRG9jWE1MUlBDU2VydmVyLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXpsaWIiLCAiUHl0aG9uIHpsaWIgY29tcHJlc3Npb24gc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvemxpYi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbWFpbGJveCIsICJQeXRob24gbWFpbGJveCBmb3JtYXQgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LW1pbWUiLAotICAgICJtYWlsYm94LioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWFyZ3BhcnNlIiwgIlB5dGhvbiBjb21tYW5kIGxpbmUgYXJndW1lbnQgcGFyc2VyIiwgIiR7UE59LWNvcmUgJHtQTn0tY29kZWNzICR7UE59LXRleHR1dGlscyIsCi0gICAgImFyZ3BhcnNlLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWNvbnRleHRsaWIiLCAiUHl0aG9uIHV0aWxpdGllcyBmb3Igd2l0aC1zdGF0ZW1lbnQiICsKLSAgICAiY29udGV4dHMuIiwgIiR7UE59LWNvcmUiLAotICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb250ZXh0bGliLioiICkKLQotICAgIG0ubWFrZSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0zLjUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0zLjUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDYzNTJmOGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMy41LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDMzICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotCi0jIGdlbmVyYXRlIFB5dGhvbiBNYW5pZmVzdCBmb3IgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSMgKEMpIDIwMDItMjAxMCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KLSMgKEMpIDIwMDcgSmVyZW15IExhaW5lCi0jIGxpY2Vuc2VkIHVuZGVyIE1JVCwgc2VlIENPUFlJTkcuTUlUCi0jCi0jIEp1bmUgMjIsIDIwMTEgLS0gTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotIyAgKiBVcGRhdGVkIHRvIG5vIGxvbmdlciBnZW5lcmF0ZSBzcGVjaWFsIC1kYmcgcGFja2FnZSwgaW5zdGVhZCB1c2UgdGhlCi0jICAgIHNpbmdsZSBzeXN0ZW0gLWRiZwotIyAgKiBVcGRhdGUgdmVyc2lvbiB3aXRoICIuMSIgdG8gaW5kaWNhdGUgdGhpcyBjaGFuZ2UKLSMKLSMgMjAxNCBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotIyBBZGRlZCBweXRob24zIHN1cHBvcnQKLSMKLSMgRmVicnVhcnkgMjYsIDIwMTcgLS0gTWluZyBMaXUgPHBldGVyLngubGl1QGV4dGVybmFsLmF0bGFzY29wY28uY29tPgotIyAqIFVwZGF0ZWQgdG8gc3VwcG9ydCBnZW5lcmF0aW5nIG1hbmlmZXN0IGZvciBuYXRpdmUgcHl0aG9uMwotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBvcnQgYXJncGFyc2UKLQotVkVSU0lPTiA9ICIzLjUuMCIKLQotX19hdXRob3JfXyA9ICJNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4iCi1fX3ZlcnNpb25fXyA9ICIyMDE0MDEzMSIKLQotY2xhc3MgTWFrZWZpbGVNYWtlcjoKLQotICAgIGRlZiBfX2luaXRfXyggc2VsZiwgb3V0ZmlsZSwgaXNOYXRpdmUgKToKLSAgICAgICAgIiIiaW5pdGlhbGl6ZSIiIgotICAgICAgICBzZWxmLnBhY2thZ2VzID0ge30KLSAgICAgICAgc2VsZi5leGNsdWRlZF9wa2dzID0gW10KLSAgICAgICAgc2VsZi50YXJnZXRQcmVmaXggPSAiJHtsaWJkaXJ9L3B5dGhvbiVzLyIgJSBWRVJTSU9OWzozXQotICAgICAgICBzZWxmLmlzTmF0aXZlID0gaXNOYXRpdmUKLSAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRmaWxlCi0gICAgICAgIHNlbGYub3V0KCAiIiIKLSMgV0FSTklORzogVGhpcyBmaWxlIGlzIEFVVE8gR0VORVJBVEVEOiBNYW51YWwgZWRpdHMgd2lsbCBiZSBsb3N0IG5leHQgdGltZSBJIHJlZ2VuZXJhdGUgdGhlIGZpbGUuCi0jIEdlbmVyYXRvcjogJyVzJXMnIFZlcnNpb24gJXMgKEMpIDIwMDItMjAxMCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KLSIiIiAlICggc3lzLmFyZ3ZbMF0sICcgLS1uYXRpdmUnIGlmIGlzTmF0aXZlIGVsc2UgJycsIF9fdmVyc2lvbl9fICkgKQotCi0gICAgIwotICAgICMgaGVscGVyIGZ1bmN0aW9ucwotICAgICMKLQotICAgIGRlZiBvdXQoIHNlbGYsIGRhdGEgKToKLSAgICAgICAgIiIicHJpbnQgYSBsaW5lIHRvIHRoZSBvdXRwdXQgZmlsZSIiIgotICAgICAgICBzZWxmLm91dHB1dC53cml0ZSggIiVzXG4iICUgZGF0YSApCi0KLSAgICBkZWYgc2V0UHJlZml4KCBzZWxmLCB0YXJnZXRQcmVmaXggKToKLSAgICAgICAgIiIic2V0IGEgZmlsZSBwcmVmaXggZm9yIGFkZFBhY2thZ2UgZmlsZXMiIiIKLSAgICAgICAgc2VsZi50YXJnZXRQcmVmaXggPSB0YXJnZXRQcmVmaXgKLQotICAgIGRlZiBkb1Byb2xvZyggc2VsZiApOgotICAgICAgICBzZWxmLm91dCggIiIiICIiIiApCi0gICAgICAgIHNlbGYub3V0KCAiIiApCi0KLSAgICBkZWYgYWRkUGFja2FnZSggc2VsZiwgbmFtZSwgZGVzY3JpcHRpb24sIGRlcGVuZGVuY2llcywgZmlsZW5hbWVzLCBtb2RfZXhjbHVkZSA9IEZhbHNlICk6Ci0gICAgICAgICIiImFkZCBhIHBhY2thZ2UgdG8gdGhlIE1ha2VmaWxlIiIiCi0gICAgICAgIGlmIHR5cGUoIGZpbGVuYW1lcyApID09IHR5cGUoICIiICk6Ci0gICAgICAgICAgICBmaWxlbmFtZXMgPSBmaWxlbmFtZXMuc3BsaXQoKQotICAgICAgICBmdWxsRmlsZW5hbWVzID0gW10KLSAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lczoKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lWzBdICE9ICIkIjoKLSAgICAgICAgICAgICAgICBmdWxsRmlsZW5hbWVzLmFwcGVuZCggIiVzJXMiICUgKCBzZWxmLnRhcmdldFByZWZpeCwgZmlsZW5hbWUgKSApCi0gICAgICAgICAgICAgICAgZnVsbEZpbGVuYW1lcy5hcHBlbmQoICIlcyVzIiAlICggc2VsZi50YXJnZXRQcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5weWNhY2hlUGF0aCggZmlsZW5hbWUgKSApICkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZnVsbEZpbGVuYW1lcy5hcHBlbmQoIGZpbGVuYW1lICkKLSAgICAgICAgaWYgbW9kX2V4Y2x1ZGU6Ci0gICAgICAgICAgICBzZWxmLmV4Y2x1ZGVkX3BrZ3MuYXBwZW5kKCBuYW1lICkKLSAgICAgICAgc2VsZi5wYWNrYWdlc1tuYW1lXSA9IGRlc2NyaXB0aW9uLCBkZXBlbmRlbmNpZXMsIGZ1bGxGaWxlbmFtZXMKLQotICAgIGRlZiBweWNhY2hlUGF0aCggc2VsZiwgZmlsZW5hbWUgKToKLSAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZSggZmlsZW5hbWUgKQotICAgICAgICBiYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoIGZpbGVuYW1lICkKLSAgICAgICAgaWYgJy4nIGluIGJhc2VuYW1lOgotICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbiggZGlybmFtZSwgJ19fcHljYWNoZV9fJywgYmFzZW5hbWUgKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbiggZGlybmFtZSwgYmFzZW5hbWUsICdfX3B5Y2FjaGVfXycgKQotCi0gICAgZGVmIGRvQm9keSggc2VsZiApOgotICAgICAgICAiIiJnZW5lcmF0ZSBib2R5IG9mIE1ha2VmaWxlIiIiCi0KLSAgICAgICAgZ2xvYmFsIFZFUlNJT04KLQotICAgICAgICAjCi0gICAgICAgICMgZ2VuZXJhdGUgcnByb3ZpZGVzIGxpbmUgZm9yIG5hdGl2ZQotICAgICAgICAjCi0KLSAgICAgICAgaWYgc2VsZi5pc05hdGl2ZToKLSAgICAgICAgICAgIHBrZ2xpc3QgPSBbXQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gWycke1BOfS1tb2R1bGVzJ10gKyBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6Ci0gICAgICAgICAgICAgICAgcGtnbGlzdC5hcHBlbmQoJyVzLW5hdGl2ZScgJSBuYW1lLnJlcGxhY2UoJyR7UE59JywgJ3B5dGhvbjMnKSkKLQotICAgICAgICAgICAgc2VsZi5vdXQoJ1JQUk9WSURFUyArPSAiJXMiJyAlICIgIi5qb2luKHBrZ2xpc3QpKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIwotICAgICAgICAjIGdlbmVyYXRlIHByb3ZpZGVzIGxpbmUKLSAgICAgICAgIwotCi0gICAgICAgIHByb3ZpZGVMaW5lID0gJ1BST1ZJREVTKz0iJwotICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6Ci0gICAgICAgICAgICBwcm92aWRlTGluZSArPSAiJXMgIiAlIG5hbWUKLSAgICAgICAgcHJvdmlkZUxpbmUgKz0gJyInCi0KLSAgICAgICAgc2VsZi5vdXQoIHByb3ZpZGVMaW5lICkKLSAgICAgICAgc2VsZi5vdXQoICIiICkKLQotICAgICAgICAjCi0gICAgICAgICMgZ2VuZXJhdGUgcGFja2FnZSBsaW5lCi0gICAgICAgICMKLQotICAgICAgICBwYWNrYWdlTGluZSA9ICdQQUNLQUdFUz0iJHtQTn0tZGJnICcKLSAgICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKHNlbGYucGFja2FnZXMpOgotICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCIke1BOfS1kaXN0dXRpbHMiKToKLSAgICAgICAgICAgICAgICBpZiBuYW1lID09ICIke1BOfS1kaXN0dXRpbHMiOgotICAgICAgICAgICAgICAgICAgICBwYWNrYWdlTGluZSArPSAiJXMtc3RhdGljZGV2ICVzICIgJSAobmFtZSwgbmFtZSkKLSAgICAgICAgICAgIGVsaWYgbmFtZSAhPSAnJHtQTn0tZGJnJzoKLSAgICAgICAgICAgICAgICBwYWNrYWdlTGluZSArPSAiJXMgIiAlIG5hbWUKLSAgICAgICAgcGFja2FnZUxpbmUgKz0gJyR7UE59LW1vZHVsZXMiJwotCi0gICAgICAgIHNlbGYub3V0KCBwYWNrYWdlTGluZSApCi0gICAgICAgIHNlbGYub3V0KCAiIiApCi0KLSAgICAgICAgIwotICAgICAgICAjIGdlbmVyYXRlIHBhY2thZ2UgdmFyaWFibGVzCi0gICAgICAgICMKLQotICAgICAgICBmb3IgbmFtZSwgZGF0YSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcy5pdGVtcygpKToKLSAgICAgICAgICAgIGRlc2MsIGRlcHMsIGZpbGVzID0gZGF0YQotCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIHdyaXRlIG91dCB0aGUgZGVzY3JpcHRpb24sIHJldmlzaW9uIGFuZCBkZXBlbmRlbmNpZXMKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIHNlbGYub3V0KCAnU1VNTUFSWV8lcz0iJXMiJyAlICggbmFtZSwgZGVzYyApICkKLSAgICAgICAgICAgIHNlbGYub3V0KCAnUkRFUEVORFNfJXM9IiVzIicgJSAoIG5hbWUsIGRlcHMgKSApCi0KLSAgICAgICAgICAgIGxpbmUgPSAnRklMRVNfJXM9IicgJSBuYW1lCi0KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgY2hlY2sgd2hpY2ggZGlyZWN0b3JpZXMgdG8gbWFrZSBpbiB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeQotICAgICAgICAgICAgIwotCi0gICAgICAgICAgICBkaXJzZXQgPSB7fSAjIGlmIHB5dGhvbiBoYWQgYSBzZXQtZGF0YXR5cGUgdGhpcyB3b3VsZCBiZSBzdWZmaWNpZW50LiBmb3Igbm93LCB3ZSdyZSB1c2luZyBhIGRpY3QgaW5zdGVhZC4KLSAgICAgICAgICAgIGZvciB0YXJnZXQgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgZGlyc2V0W29zLnBhdGguZGlybmFtZSggdGFyZ2V0ICldID0gVHJ1ZQotCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIGdlbmVyYXRlIHdoaWNoIGZpbGVzIHRvIGNvcHkgZm9yIHRoZSB0YXJnZXQgKC1kZlIgYmVjYXVzZSB3aG9sZSBkaXJlY3RvcmllcyBhcmUgYWxzbyBhbGxvd2VkKQotICAgICAgICAgICAgIwotCi0gICAgICAgICAgICBmb3IgdGFyZ2V0IGluIGZpbGVzOgotICAgICAgICAgICAgICAgIGxpbmUgKz0gIiVzICIgJSB0YXJnZXQKLQotICAgICAgICAgICAgbGluZSArPSAnIicKLSAgICAgICAgICAgIHNlbGYub3V0KCBsaW5lICkKLSAgICAgICAgICAgIHNlbGYub3V0KCAiIiApCi0KLSAgICAgICAgc2VsZi5vdXQoICdTVU1NQVJZXyR7UE59LW1vZHVsZXM9IkFsbCBQeXRob24gbW9kdWxlcyInICkKLSAgICAgICAgbGluZSA9ICdSREVQRU5EU18ke1BOfS1tb2R1bGVzPSInCi0KLSAgICAgICAgZm9yIG5hbWUsIGRhdGEgaW4gc29ydGVkKHNlbGYucGFja2FnZXMuaXRlbXMoKSk6Ci0gICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBbJyR7UE59LWRldicsICcke1BOfS1kaXN0dXRpbHMtc3RhdGljZGV2J10gYW5kIG5hbWUgbm90IGluIHNlbGYuZXhjbHVkZWRfcGtnczoKLSAgICAgICAgICAgICAgICBsaW5lICs9ICIlcyAiICUgbmFtZQotCi0gICAgICAgIHNlbGYub3V0KCAiJXMgXCIiICUgbGluZSApCi0gICAgICAgIHNlbGYub3V0KCAnQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcyA9ICIxIicgKQotCi0gICAgZGVmIGRvRXBpbG9nKCBzZWxmICk6Ci0gICAgICAgIHNlbGYub3V0KCAiIiIiIiIgKQotICAgICAgICBzZWxmLm91dCggIiIgKQotCi0gICAgZGVmIG1ha2UoIHNlbGYgKToKLSAgICAgICAgc2VsZi5kb1Byb2xvZygpCi0gICAgICAgIHNlbGYuZG9Cb2R5KCkKLSAgICAgICAgc2VsZi5kb0VwaWxvZygpCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoIGRlc2NyaXB0aW9uPSdnZW5lcmF0ZSBweXRob24zIG1hbmlmZXN0JyApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCggJy1uJywgJy0tbmF0aXZlJywgaGVscD0nZ2VuZXJhdGUgbWFuaWZlc3QgZm9yIG5hdGl2ZSBweXRob24zJywgYWN0aW9uPSdzdG9yZV90cnVlJyApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCggJ291dGZpbGUnLCBtZXRhdmFyPSdPVVRQVVRfRklMRScsIG5hcmdzPSc/JywgZGVmYXVsdD0nJywgaGVscD0nT3V0cHV0IGZpbGUgKGRlZmF1bHRzIHRvIHN0ZG91dCknICkKLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgaWYgYXJncy5vdXRmaWxlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy51bmxpbmsoIGFyZ3Mub3V0ZmlsZSApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBzeXMuZXhjX2NsZWFyKCkKLSAgICAgICAgb3V0ZmlsZSA9IG9wZW4oIGFyZ3Mub3V0ZmlsZSwgInciICkKLSAgICBlbHNlOgotICAgICAgICBvdXRmaWxlID0gc3lzLnN0ZG91dAotCi0gICAgbSA9IE1ha2VmaWxlTWFrZXIoIG91dGZpbGUsIGFyZ3MubmF0aXZlICkKLQotICAgICMgQWRkIHBhY2thZ2VzIGhlcmUuIE9ubHkgc3BlY2lmeSBkbG9wZW4tc3R5bGUgbGlicmFyeSBkZXBlbmRlbmNpZXMgaGVyZSwgbm8gbGRkLXN0eWxlIGRlcGVuZGVuY2llcyEKLSAgICAjIFBhcmFtZXRlcnM6IHJldmlzaW9uLCBuYW1lLCBkZXNjcmlwdGlvbiwgZGVwZW5kZW5jaWVzLCBmaWxlbmFtZXMKLSAgICAjCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb3JlIiwgIlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIiwgIiR7UE59LWxhbmcgJHtQTn0tcmUgJHtQTn0tcmVwcmxpYiAke1BOfS1jb2RlY3MgJHtQTn0taW8gJHtQTn0tbWF0aCIsCi0gICAgIl9fZnV0dXJlX18uKiBfYWJjb2xsLiogYWJjLiogYXN0LiogY29weS4qIGNvcHlyZWcuKiBjb25maWdwYXJzZXIuKiAiICsKLSAgICAiZ2VuZXJpY3BhdGguKiBnZXRvcHQuKiBsaW5lY2FjaGUuKiBuZXcuKiAiICsKLSAgICAib3MuKiBwb3NpeHBhdGguKiBzdHJ1Y3QuKiAiICsKLSAgICAid2FybmluZ3MuKiBzaXRlLiogc3RhdC4qICIgKwotICAgICJVc2VyRGljdC4qIFVzZXJMaXN0LiogVXNlclN0cmluZy4qICIgKwotICAgICJsaWItZHlubG9hZC9iaW5hc2NpaS4qLnNvIGxpYi1keW5sb2FkL19zdHJ1Y3QuKi5zbyBsaWItZHlubG9hZC90aW1lLiouc28gIiArCi0gICAgImxpYi1keW5sb2FkL3hyZWFkbGluZXMuKi5zbyB0eXBlcy4qIHBsYXRmb3JtLiogJHtiaW5kaXJ9L3B5dGhvbiogIiAgKyAKLSAgICAiX3dlYWtyZWZzZXQuKiBzeXNjb25maWcuKiBfc3lzY29uZmlnZGF0YS4qICIgKwotICAgICIke2luY2x1ZGVkaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcqLmggIiArCi0gICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbGxlY3Rpb25zICIgKwotICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fY29sbGVjdGlvbnNfYWJjLiogIiArCi0gICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zaXRlYnVpbHRpbnMuKiAiICsKLSAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZWN1c3RvbWl6ZS5weSAiKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGV2IiwgIlB5dGhvbiBkZXZlbG9wbWVudCBwYWNrYWdlIiwgIiR7UE59LWNvcmUiLAotICAgICIke2luY2x1ZGVkaXJ9ICIgKwotICAgICIke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSAiICsKLSAgICAiJHtsaWJkaXJ9LyoubGEgIiArCi0gICAgIiR7bGliZGlyfS8qLmEgIiArCi0gICAgIiR7bGliZGlyfS8qLm8gIiArCi0gICAgIiR7bGliZGlyfS9wa2djb25maWcgIiArCi0gICAgIiR7YmFzZV9saWJkaXJ9LyouYSAiICsKLSAgICAiJHtiYXNlX2xpYmRpcn0vKi5vICIgKwotICAgICIke2RhdGFkaXJ9L2FjbG9jYWwgIiArCi0gICAgIiR7ZGF0YWRpcn0vcGtnY29uZmlnICIgKwotICAgICJjb25maWcqL01ha2VmaWxlICIpCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS0ydG8zIiwgIlB5dGhvbiBhdXRvbWF0ZWQgUHl0aG9uIDIgdG8gMyBjb2RlIHRyYW5zbGF0b3IiLCAiJHtQTn0tY29yZSIsCi0gICAgImxpYjJ0bzMiICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1pZGxlIiwgIlB5dGhvbiBJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50IiwgIiR7UE59LWNvcmUgJHtQTn0tdGtpbnRlciIsCi0gICAgIiR7YmluZGlyfS9pZGxlIGlkbGVsaWIiICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1weWRvYyIsICJQeXRob24gaW50ZXJhY3RpdmUgaGVscCBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tcmUiLAotICAgICIke2JpbmRpcn0vcHlkb2MgcHlkb2MuKiBweWRvY19kYXRhIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1zbXRwZCIsICJQeXRob24gU2ltcGxlIE1haWwgVHJhbnNwb3J0IERhZW1vbiIsICIke1BOfS1jb3JlICR7UE59LW5ldHNlcnZlciAke1BOfS1lbWFpbCAke1BOfS1taW1lIiwKLSAgICAiJHtiaW5kaXJ9L3NtdHBkLiogc210cGQuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tYXVkaW8iLCAiUHl0aG9uIEF1ZGlvIEhhbmRsaW5nIiwgIiR7UE59LWNvcmUiLAotICAgICJ3YXZlLiogY2h1bmsuKiBzbmRoZHIuKiBsaWItZHlubG9hZC9vc3NhdWRpb2Rldi4qLnNvIGxpYi1keW5sb2FkL2F1ZGlvb3AuKi5zbyBhdWRpb2Rldi4qIHN1bmF1ZGlvLiogc3VuYXUuKiB0b2FpZmYuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tYXJncGFyc2UiLCAiUHl0aG9uIGNvbW1hbmQgbGluZSBhcmd1bWVudCBwYXJzZXIiLCAiJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0tdGV4dHV0aWxzIiwKLSAgICAiYXJncGFyc2UuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tYXN5bmNpbyIsICJQeXRob24gQXN5bmNocm9ub3VzIEkvTywgZXZlbnQgbG9vcCwgY29yb3V0aW5lcyBhbmQgdGFza3MiLCAiJHtQTn0tY29yZSIsCi0gICAgImFzeW5jaW8iICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWNvZGVjcyIsICJQeXRob24gY29kZWNzLCBlbmNvZGluZ3MgJiBpMThuIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1sYW5nIiwKLSAgICAiY29kZWNzLiogZW5jb2RpbmdzIGdldHRleHQuKiBsb2NhbGUuKiBsaWItZHlubG9hZC9fbG9jYWxlLiouc28gbGliLWR5bmxvYWQvX2NvZGVjcyogbGliLWR5bmxvYWQvX211bHRpYnl0ZWNvZGVjLiouc28gbGliLWR5bmxvYWQvdW5pY29kZWRhdGEuKi5zbyBzdHJpbmdwcmVwLiogeGRybGliLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWNvbXBpbGUiLCAiUHl0aG9uIGJ5dGVjb2RlIGNvbXBpbGF0aW9uIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgInB5X2NvbXBpbGUuKiBjb21waWxlYWxsLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWNvbXByZXNzaW9uIiwgIlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0taW1wb3J0bGliICR7UE59LXRocmVhZGluZyAke1BOfS1zaGVsbCIsCi0gICAgImd6aXAuKiB6aXBmaWxlLiogdGFyZmlsZS4qIGxpYi1keW5sb2FkL2J6Mi4qLnNvIGxpYi1keW5sb2FkL3psaWIuKi5zbyBiejIucHkgbHptYS5weSBfY29tcHJlc3Npb24ucHkiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWNyeXB0IiwgIlB5dGhvbiBiYXNpYyBjcnlwdG9ncmFwaGljIGFuZCBoYXNoaW5nIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgImhhc2hsaWIuKiBtZDUuKiBzaGEuKiBsaWItZHlubG9hZC9jcnlwdC4qLnNvIGxpYi1keW5sb2FkL19oYXNobGliLiouc28gbGliLWR5bmxvYWQvX3NoYTI1Ni4qLnNvIGxpYi1keW5sb2FkL19zaGE1MTIuKi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tdGV4dHV0aWxzIiwgIlB5dGhvbiBvcHRpb24gcGFyc2luZywgdGV4dCB3cmFwcGluZyBhbmQgQ1NWIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1yZSAke1BOfS1zdHJpbmdvbGQiLAotICAgICJsaWItZHlubG9hZC9fY3N2Liouc28gY3N2Liogb3B0cGFyc2UuKiB0ZXh0d3JhcC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jdXJzZXMiLCAiUHl0aG9uIGN1cnNlcyBzdXBwb3J0IiwgIiR7UE59LWNvcmUiLAotICAgICJjdXJzZXMgbGliLWR5bmxvYWQvX2N1cnNlcy4qLnNvIGxpYi1keW5sb2FkL19jdXJzZXNfcGFuZWwuKi5zbyIgKSAjIGRpcmVjdG9yeSArIGxvdyBsZXZlbCBtb2R1bGUKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWN0eXBlcyIsICJQeXRob24gQyB0eXBlcyBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tc3VicHJvY2VzcyIsCi0gICAgImN0eXBlcyBsaWItZHlubG9hZC9fY3R5cGVzLiouc28gbGliLWR5bmxvYWQvX2N0eXBlc190ZXN0Liouc28iICkgIyBkaXJlY3RvcnkgKyBsb3cgbGV2ZWwgbW9kdWxlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1kYXRldGltZSIsICJQeXRob24gY2FsZW5kYXIgYW5kIHRpbWUgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWNvZGVjcyIsCi0gICAgIl9zdHJwdGltZS4qIGNhbGVuZGFyLiogZGF0ZXRpbWUuKiBsaWItZHlubG9hZC9fZGF0ZXRpbWUuKi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGIiLCAiUHl0aG9uIGZpbGUtYmFzZWQgZGF0YWJhc2Ugc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAiYW55ZGJtLiogZHVtYmRibS4qIHdoaWNoZGIuKiBkYm0gbGliLWR5bmxvYWQvX2RibS4qLnNvIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1kZWJ1Z2dlciIsICJQeXRob24gZGVidWdnZXIiLCAiJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LXJlICR7UE59LXN0cmluZ29sZCAke1BOfS1zaGVsbCAke1BOfS1wcHJpbnQgJHtQTn0taW1wb3J0bGliICR7UE59LXBrZ3V0aWwiLAotICAgICJiZGIuKiBwZGIuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGlmZmxpYiIsICJQeXRob24gaGVscGVycyBmb3IgY29tcHV0aW5nIGRlbHRhcyBiZXR3ZWVuIG9iamVjdHMiLCAiJHtQTn0tbGFuZyAke1BOfS1yZSIsCi0gICAgImRpZmZsaWIuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiIsICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoc3RhdGljIGxpYnJhcmllcykiLCAiJHtQTn0tZGlzdHV0aWxzIiwKLSAgICAiY29uZmlnL2xpYiouYSIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWRpc3R1dGlscyIsICJQeXRob24gRGlzdHJpYnV0aW9uIFV0aWxpdGllcyIsICIke1BOfS1jb3JlICR7UE59LWVtYWlsIiwKLSAgICAiY29uZmlnIGRpc3R1dGlscyIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWRvY3Rlc3QiLCAiUHl0aG9uIGZyYW1ld29yayBmb3IgcnVubmluZyBleGFtcGxlcyBpbiBkb2NzdHJpbmdzIiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyAke1BOfS1pbyAke1BOfS1yZSAke1BOfS11bml0dGVzdCAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliIiwKLSAgICAiZG9jdGVzdC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1lbWFpbCIsICJQeXRob24gZW1haWwgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LXJlICR7UE59LW1pbWUgJHtQTn0tYXVkaW8gJHtQTn0taW1hZ2UgJHtQTn0tbmV0Y2xpZW50IiwKLSAgICAiaW1hcGxpYi4qIGVtYWlsIiApICMgcGFja2FnZQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZW51bSIsICJQeXRob24gc3VwcG9ydCBmb3IgZW51bWVyYXRpb25zIiwgIiR7UE59LWNvcmUiLAotICAgICJlbnVtLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWZjbnRsIiwgIlB5dGhvbidzIGZjbnRsIGludGVyZmFjZSIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvZmNudGwuKi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0taHRtbCIsICJQeXRob24gSFRNTCBwcm9jZXNzaW5nIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgImZvcm1hdHRlci4qIGh0bWxlbnRpdHlkZWZzLiogaHRtbCBodG1sbGliLiogbWFya3VwYmFzZS4qIHNnbWxsaWIuKiBIVE1MUGFyc2VyLiogIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1pbXBvcnRsaWIiLCAiUHl0aG9uIGltcG9ydCBpbXBsZW1lbnRhdGlvbiBsaWJyYXJ5IiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyIsCi0gICAgImltcG9ydGxpYiBpbXAuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZ2RibSIsICJQeXRob24gR05VIGRhdGFiYXNlIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgImxpYi1keW5sb2FkL19nZGJtLiouc28iICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWltYWdlIiwgIlB5dGhvbiBncmFwaGljYWwgaW1hZ2UgaGFuZGxpbmciLCAiJHtQTn0tY29yZSIsCi0gICAgImNvbG9yc3lzLiogaW1naGRyLiogbGliLWR5bmxvYWQvaW1hZ2VvcC4qLnNvIGxpYi1keW5sb2FkL3JnYmltZy4qLnNvIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1pbyIsICJQeXRob24gbG93LWxldmVsIEkvTyIsICIke1BOfS1jb3JlICR7UE59LW1hdGgiLAotICAgICJsaWItZHlubG9hZC9fc29ja2V0Liouc28gbGliLWR5bmxvYWQvX2lvLiouc28gbGliLWR5bmxvYWQvX3NzbC4qLnNvIGxpYi1keW5sb2FkL3NlbGVjdC4qLnNvIGxpYi1keW5sb2FkL3Rlcm1pb3MuKi5zbyBsaWItZHlubG9hZC9jU3RyaW5nSU8uKi5zbyAiICsKLSAgICAiaXBhZGRyZXNzLiogcGlwZXMuKiBzb2NrZXQuKiBzc2wuKiB0ZW1wZmlsZS4qIFN0cmluZ0lPLiogaW8uKiBfcHlpby4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1qc29uIiwgIlB5dGhvbiBKU09OIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1tYXRoICR7UE59LXJlIiwKLSAgICAianNvbiBsaWItZHlubG9hZC9fanNvbi4qLnNvIiApICMgcGFja2FnZQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbGFuZyIsICJQeXRob24gbG93LWxldmVsIGxhbmd1YWdlIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1pbXBvcnRsaWIiLAotICAgICJsaWItZHlubG9hZC9fYmlzZWN0Liouc28gbGliLWR5bmxvYWQvX2NvbGxlY3Rpb25zLiouc28gbGliLWR5bmxvYWQvX2hlYXBxLiouc28gbGliLWR5bmxvYWQvX3dlYWtyZWYuKi5zbyBsaWItZHlubG9hZC9fZnVuY3Rvb2xzLiouc28gIiArCi0gICAgImxpYi1keW5sb2FkL2FycmF5Liouc28gbGliLWR5bmxvYWQvaXRlcnRvb2xzLiouc28gbGliLWR5bmxvYWQvb3BlcmF0b3IuKi5zbyBsaWItZHlubG9hZC9wYXJzZXIuKi5zbyAiICsKLSAgICAiYXRleGl0LiogYmlzZWN0LiogY29kZS4qIGNvZGVvcC4qIGNvbGxlY3Rpb25zLiogX2NvbGxlY3Rpb25zX2FiYy4qIGNvbnRleHRsaWIuKiBkaXMuKiBmdW5jdG9vbHMuKiBoZWFwcS4qIGluc3BlY3QuKiBrZXl3b3JkLiogb3Bjb2RlLiogb3BlcmF0b3IuKiBzeW1ib2wuKiByZXByLiogdG9rZW4uKiAiICsKLSAgICAidG9rZW5pemUuKiB0cmFjZWJhY2suKiB3ZWFrcmVmLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWxvZ2dpbmciLCAiUHl0aG9uIGxvZ2dpbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LWxhbmcgJHtQTn0tcGlja2xlICR7UE59LXN0cmluZ29sZCIsCi0gICAgImxvZ2dpbmciICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1tYWlsYm94IiwgIlB5dGhvbiBtYWlsYm94IGZvcm1hdCBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tbWltZSIsCi0gICAgIm1haWxib3guKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbWF0aCIsICJQeXRob24gbWF0aCBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tY3J5cHQiLAotICAgICJsaWItZHlubG9hZC9jbWF0aC4qLnNvIGxpYi1keW5sb2FkL21hdGguKi5zbyBsaWItZHlubG9hZC9fcmFuZG9tLiouc28gcmFuZG9tLiogc2V0cy4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1taW1lIiwgIlB5dGhvbiBNSU1FIGhhbmRsaW5nIEFQSXMiLCAiJHtQTn0tY29yZSAke1BOfS1pbyIsCi0gICAgIm1pbWV0b29scy4qIHV1LiogcXVvcHJpLiogcmZjODIyLiogTWltZVdyaXRlci4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1tbWFwIiwgIlB5dGhvbiBtZW1vcnktbWFwcGVkIGZpbGUgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvIiwKLSAgICAibGliLWR5bmxvYWQvbW1hcC4qLnNvICIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbXVsdGlwcm9jZXNzaW5nIiwgIlB5dGhvbiBtdWx0aXByb2Nlc3Npbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LWxhbmcgJHtQTn0tcGlja2xlICR7UE59LXRocmVhZGluZyAke1BOfS1jdHlwZXMgJHtQTn0tbW1hcCIsCi0gICAgImxpYi1keW5sb2FkL19tdWx0aXByb2Nlc3NpbmcuKi5zbyBtdWx0aXByb2Nlc3NpbmciICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1uZXRjbGllbnQiLCAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIGNsaWVudHMiLCAiJHtQTn0tYXJncGFyc2UgJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1kYXRldGltZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWltZSAke1BOfS1odG1sIiwKLSAgICAiKkNvb2tpZSouKiAiICsKLSAgICAiYmFzZTY0LiogY29va2llbGliLiogZnRwbGliLiogZ29waGVybGliLiogaG1hYy4qIGh0dHAqIGh0dHBsaWIuKiBtaW1ldHlwZXMuKiBubnRwbGliLiogcG9wbGliLiogc210cGxpYi4qIHRlbG5ldGxpYi4qIHVybGxpYiAgdXVpZC4qIHJmYzgyMi4qIG1pbWV0b29scy4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1uZXRzZXJ2ZXIiLCAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIHNlcnZlcnMiLCAiJHtQTn0tY29yZSAke1BOfS1uZXRjbGllbnQgJHtQTn0tc2hlbGwgJHtQTn0tdGhyZWFkaW5nIiwKLSAgICAiY2dpLiogc29ja2V0c2VydmVyLiogKkhUVFBTZXJ2ZXIuKiBTb2NrZXRTZXJ2ZXIuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbnVtYmVycyIsICJQeXRob24gbnVtYmVyIEFQSXMiLCAiJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LXJlIiwKLSAgICAiZGVjaW1hbC4qIGZyYWN0aW9ucy4qIG51bWJlcnMuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tcGlja2xlIiwgIlB5dGhvbiBzZXJpYWxpc2F0aW9uL3BlcnNpc3RlbmNlIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0taW8gJHtQTn0tcmUiLAotICAgICJfY29tcGF0X3BpY2tsZS4qIHBpY2tsZS4qIHNoZWx2ZS4qIGxpYi1keW5sb2FkL2NQaWNrbGUuKi5zbyBwaWNrbGV0b29scy4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1wa2d1dGlsIiwgIlB5dGhvbiBwYWNrYWdlIGV4dGVuc2lvbiB1dGlsaXR5IHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgInBrZ3V0aWwuKiIpCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1wcHJpbnQiLCAiUHl0aG9uIHByZXR0eS1wcmludCBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0taW8iLAotICAgICJwcHJpbnQuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tcHJvZmlsZSIsICJQeXRob24gYmFzaWMgcGVyZm9ybWFuY2UgcHJvZmlsaW5nIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS10ZXh0dXRpbHMiLAotICAgICJwcm9maWxlLiogcHN0YXRzLiogY1Byb2ZpbGUuKiBsaWItZHlubG9hZC9fbHNwcm9mLiouc28iICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXJlIiwgIlB5dGhvbiBSZWd1bGFyIEV4cHJlc3Npb24gQVBJcyIsICIke1BOfS1jb3JlIiwKLSAgICAicmUuKiBzcmUuKiBzcmVfY29tcGlsZS4qIHNyZV9jb25zdGFudHMqIHNyZV9wYXJzZS4qIiApICMgX3NyZSBpcyBidWlsdGluCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1yZWFkbGluZSIsICJQeXRob24gcmVhZGxpbmUgc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvcmVhZGxpbmUuKi5zbyBybGNvbXBsZXRlci4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1yZXBybGliIiwgIlB5dGhvbiBhbHRlcm5hdGUgcmVwcigpIGltcGxlbWVudGF0aW9uIiwgIiR7UE59LWNvcmUiLAotICAgICJyZXBybGliLnB5IiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1yZXNvdXJjZSIsICJQeXRob24gcmVzb3VyY2UgY29udHJvbCBpbnRlcmZhY2UiLCAiJHtQTn0tY29yZSIsCi0gICAgImxpYi1keW5sb2FkL3Jlc291cmNlLiouc28iICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXNlbGVjdG9ycyIsICJQeXRob24gSGlnaC1sZXZlbCBJL08gbXVsdGlwbGV4aW5nIiwgIiR7UE59LWNvcmUiLAotICAgICJzZWxlY3RvcnMuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tc2hlbGwiLCAiUHl0aG9uIHNoZWxsLWxpa2UgZnVuY3Rpb25hbGl0eSIsICIke1BOfS1jb3JlICR7UE59LXJlICR7UE59LWNvbXByZXNzaW9uIiwKLSAgICAiY21kLiogY29tbWFuZHMuKiBkaXJjYWNoZS4qIGZubWF0Y2guKiBnbG9iLiogcG9wZW4yLiogc2hsZXguKiBzaHV0aWwuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tc2lnbmFsIiwgIlB5dGhvbiBzZXQgaGFuZGxlcnMgZm9yIGFzeW5jaHJvbm91cyBldmVudHMgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWVudW0iLAotICAgICJzaWduYWwuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tc3VicHJvY2VzcyIsICJQeXRob24gc3VicHJvY2VzcyBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tZmNudGwgJHtQTn0tcGlja2xlICR7UE59LXRocmVhZGluZyAke1BOfS1zaWduYWwgJHtQTn0tc2VsZWN0b3JzIiwKLSAgICAic3VicHJvY2Vzcy4qIGxpYi1keW5sb2FkL19wb3NpeHN1YnByb2Nlc3MuKi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tc3FsaXRlMyIsICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tbGFuZyAke1BOfS1jcnlwdCAke1BOfS1pbyAke1BOfS10aHJlYWRpbmciLAotICAgICJsaWItZHlubG9hZC9fc3FsaXRlMy4qLnNvIHNxbGl0ZTMvZGJhcGkyLiogc3FsaXRlMy9fX2luaXRfXy4qIHNxbGl0ZTMvZHVtcC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1zcWxpdGUzLXRlc3RzIiwgIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQgdGVzdHMiLCAiJHtQTn0tY29yZSAke1BOfS1zcWxpdGUzIiwKLSAgICAic3FsaXRlMy90ZXN0IiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1zdHJpbmdvbGQiLCAiUHl0aG9uIHN0cmluZyBBUElzIFtkZXByZWNhdGVkXSIsICIke1BOfS1jb3JlICR7UE59LXJlIiwKLSAgICAibGliLWR5bmxvYWQvc3Ryb3AuKi5zbyBzdHJpbmcuKiBzdHJpbmdvbGQuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tc3lzbG9nIiwgIlB5dGhvbiBzeXNsb2cgaW50ZXJmYWNlIiwgIiR7UE59LWNvcmUiLAotICAgICJsaWItZHlubG9hZC9zeXNsb2cuKi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tdGVybWluYWwiLCAiUHl0aG9uIHRlcm1pbmFsIGNvbnRyb2xsaW5nIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1pbyIsCi0gICAgInB0eS4qIHR0eS4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10ZXN0cyIsICJQeXRob24gdGVzdHMiLCAiJHtQTn0tY29yZSAke1BOfS1jb21wcmVzc2lvbiIsCi0gICAgInRlc3QiLCBUcnVlICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10aHJlYWRpbmciLCAiUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyIsCi0gICAgIl90aHJlYWRpbmdfbG9jYWwuKiBkdW1teV90aHJlYWQuKiBkdW1teV90aHJlYWRpbmcuKiBtdXRleC4qIHRocmVhZGluZy4qIHF1ZXVlLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXRraW50ZXIiLCAiUHl0aG9uIFRjbC9UayBiaW5kaW5ncyIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvX3RraW50ZXIuKi5zbyBsaWItdGsgdGtpbnRlciIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXR5cGluZyIsICJQeXRob24gdHlwaW5nIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgInR5cGluZy4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS11bml0dGVzdCIsICJQeXRob24gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayIsICIke1BOfS1jb3JlICR7UE59LXN0cmluZ29sZCAke1BOfS1sYW5nICR7UE59LWlvICR7UE59LWRpZmZsaWIgJHtQTn0tcHByaW50ICR7UE59LXNoZWxsIiwKLSAgICAidW5pdHRlc3QvIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS11bml4YWRtaW4iLCAiUHl0aG9uIFVuaXggYWRtaW5pc3RyYXRpb24gc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvbmlzLiouc28gbGliLWR5bmxvYWQvZ3JwLiouc28gbGliLWR5bmxvYWQvcHdkLiouc28gZ2V0cGFzcy4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS14bWwiLCAiUHl0aG9uIGJhc2ljIFhNTCBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tcmUiLAotICAgICJsaWItZHlubG9hZC9fZWxlbWVudHRyZWUuKi5zbyBsaWItZHlubG9hZC9weWV4cGF0Liouc28geG1sIHhtbGxpYi4qIiApICMgcGFja2FnZQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0teG1scnBjIiwgIlB5dGhvbiBYTUwtUlBDIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS14bWwgJHtQTn0tbmV0c2VydmVyICR7UE59LWxhbmcgJHtQTn0tcHlkb2MiLAotICAgICJ4bWxycGNsaWIuKiBTaW1wbGVYTUxSUENTZXJ2ZXIuKiBEb2NYTUxSUENTZXJ2ZXIuKiB4bWxycGMiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LW1haWxib3giLCAiUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1taW1lIiwKLSAgICAibWFpbGJveC4qIiApCi0KLSAgICBtLm1ha2UoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi95b2N0by1ic3Ata2VybmVsLXVwZGF0ZS5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIveW9jdG8tYnNwLWtlcm5lbC11cGRhdGUuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGIzYWE3MDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi95b2N0by1ic3Ata2VybmVsLXVwZGF0ZS5zaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLSMhL2Jpbi9zaAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgIHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUKLSMgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyAgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQotIwotIyBEZXNjcmlwdGlvbjogY3JlYXRlcyBhIG5ldyBzZXQgb2Yga2VybmVsIHRlbXBsYXRlcyBiYXNlZCBvbiB2ZXJzaW9uCi0jCi0KLXNldCAtbyBub3Vuc2V0Ci1zZXQgLW8gZXJyZXhpdAotCi1pZiBbICQjIC1uZSA0IF07IHRoZW4KLSAgICBjYXQgPDwgRU9GCi11c2FnZTogJDAgZnJvbV9tYXlvciBmcm9tX21pbm9yIHRvX21heW9yIHRvX21pbm9yCi1FT0YKLSAgICBleGl0IDEKLWVsc2UKLSAgICBmbWE9JDEgIyBmcm9tIG1heW9yCi0gICAgZm1pPSQyICMgZnJvbSBtaW5vcgotICAgIHRtYT0kMyAjIHRvIG1heW9yCi0gICAgdG1pPSQ0ICMgdG8gbWlub3IKLWZpCi0KLXBva3k9JChyZWFkbGluayAtZSAkKGRpcm5hbWUgJChkaXJuYW1lICQoZGlybmFtZSAkMCkpKSkKLWFyY2g9JHBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaAotCi0KLSMgY29weS9yZW5hbWUgdGVtcGxhdGVzCi1mb3IgZnJvbSBpbiAkKGxzIC0xICRhcmNoLyovcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8qXyRmbWFcLiRmbWkuYmJhcHBlbmQpCi1kbwotICAgIHRvPSQoZWNobyAkZnJvbSB8IHNlZCBzLyRmbWFcLiRmbWkvJHRtYVwuJHRtaS8pCi0gICAgY3AgJGZyb20gJHRvCi1kb25lCi0KLSMgcmVwbGFjZSB2ZXJzaW9ucyBzdHJpbmcgaW5zaWRlIG5ldyB0ZW1wbGF0ZXMKLWZvciBiYmFwcGVuZCBpbiAkKGxzIC0xICRhcmNoLyovcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8qXyR0bWFcLiR0bWkuYmJhcHBlbmQpCi1kbwotICAgIHNlZCAtaSAxcy8kZm1hXC4kZm1pLyR0bWFcLiR0bWkvICRiYmFwcGVuZAotICAgIHNlZCAtaSBcJHMvJGZtYVwuJGZtaS8kdG1hXC4kdG1pLyAkYmJhcHBlbmQKLWRvbmUKLQotIyB1cGRhdGUgdGhlIG5vaW5zdGFsbCBmaWxlcwotZm9yIG5vaW5zdGFsbCBpbiAkKGxzIC0xICRhcmNoLyovcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsKQotZG8KLSAgICBzZWQgLWkgcy8kZm1hXC4kZm1pLyR0bWFcLiR0bWkvZyAkbm9pbnN0YWxsOwotZG9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY3Jvc3N0YXAgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jcm9zc3RhcAppbmRleCAzOTczOWJiLi5lMzNmYTRhIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jcm9zc3RhcAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jcm9zc3RhcApAQCAtMSwxNSArMSwyMiBAQAotIyEvYmluL2Jhc2gKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKICMKLSMgUnVuIGEgc3lzdGVtdGFwIHNjcmlwdCBvbiByZW1vdGUgdGFyZ2V0CisjIEJ1aWxkIGEgc3lzdGVtdGFwIHNjcmlwdCBmb3IgYSBnaXZlbiBpbWFnZSwga2VybmVsCiAjCi0jIEV4YW1wbGVzIChydW4gb24gYnVpbGQgaG9zdCwgdGFyZ2V0IGlzIDE5Mi4xNjguMS54eHgpOgotIyAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52IgotIyAgICQgY2Qgfi9teS9zeXN0ZW10YXAvc2NyaXB0cyIKKyMgRWZmZWN0aXZlbHkgc2NyaXB0IGV4dHJhY3RzIG5lZWRlZCBpbmZvcm1hdGlvbiBmcm9tIHNldCBvZgorIyAnYml0YmFrZSAtZScgY29tbWFuZHMgYW5kIGNvbnRydWN0cyBwcm9wZXIgaW52b2NhdGlvbiBvZiBzdGFwIG9uCisjIGhvc3QgdG8gYnVpbGQgc3lzdGVtdGFwIHNjcmlwdCBmb3IgYSBnaXZlbiB0YXJnZXQuCiAjCi0jICAgJCBjcm9zc3RhcCByb290QDE5Mi4xNjguMS54eHggbXlzY3JpcHQuc3RwIgotIyAgICQgY3Jvc3N0YXAgcm9vdEAxOTIuMTY4LjEueHh4IG15c2NyaXB0LXdpdGgtYXJncy5zdHAgOTkgbmluZXR5bmluZSIKKyMgQnkgZGVmYXVsdCBzY3JpcHQgd2lsbCBjb21waWxlIHNjcmlwdG5hbWUua28gdGhhdCBjb3VsZCBiZSBjb3BpZWQKKyMgdG8gdGFnZXQgYW5kIGFjdGl2YXRlZCB3aXRoICdzdGFwcnVuIHNjcmlwdG5hbWUua28nIGNvbW1hbmQuIE9yIGlmCisjIC0tcmVtb3RlIHVzZXJAaG9zdG5hbWUgb3B0aW9uIGlzIHNwZWNpZmllZCBzY3JpcHQgd2lsbCBidWlsZCwgbG9hZAorIyBleGVjdXRlIHNjcmlwdCBvbiB0YXJnZXQuCiAjCi0jIENvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uCisjIFRoaXMgc2NyaXB0IGlzIHZlcnkgc2ltaWxhciBhbmQgaW5zcGlyZWQgYnkgY3Jvc3N0YXAgc2hlbGwgc2NyaXB0LgorIyBUaGUgbWFqb3IgZGlmZmVyZW5jZSB0aGF0IHRoaXMgc2NyaXB0IHN1cHBvcnRzIHVzZXItbGFuZCByZWxhdGVkCisjIHN5c3RlbXRhcCBzY3JpcHQsIHdoZXJlYXMgY3Jvc3N0YXAgY291bGQgZGVhbCBvbmx5IHdpdGggc2NyaXB0cworIyByZWxhdGVkIHRvIGtlcm5lbC4KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE4LCBDaXNjbyBTeXN0ZW1zLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMjUsMTMxICszMiw0MzggQEAKICMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIAotZnVuY3Rpb24gdXNhZ2UoKSB7Ci0gICAgZWNobyAiVXNhZ2U6ICQwIDx1c2VyQGhvc3RuYW1lPiA8c3l0ZW10YXAtc2NyaXB0PiBbYWRkaXRpb25hbCBzeXN0ZW10YXAtc2NyaXB0IGFyZ3NdIgotfQoraW1wb3J0IHN5cworaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IG9zCitpbXBvcnQgb3B0cGFyc2UKIAotZnVuY3Rpb24gc2V0dXBfdXNhZ2UoKSB7Ci0gICAgZWNobyAiIgotICAgIGVjaG8gIidjcm9zc3RhcCcgcmVxdWlyZXMgYSBsb2NhbCBzZGsgYnVpbGQgb2YgdGhlIHRhcmdldCBzeXN0ZW0iCi0gICAgZWNobyAiKG9yIGEgYnVpbGQgdGhhdCBpbmNsdWRlcyAndG9vbHMtcHJvZmlsZScpIGluIG9yZGVyIHRvIGJ1aWxkIgotICAgIGVjaG8gImtlcm5lbCBtb2R1bGVzIHRoYXQgY2FuIHByb2JlIHRoZSB0YXJnZXQgc3lzdGVtLiIKLSAgICBlY2hvICIiCi0gICAgZWNobyAiUHJhY3RpY2FsbHkgc3BlYWtpbmcsIHRoYXQgbWVhbnMgeW91IG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZzoiCi0gICAgZWNobyAiICAtIElmIHlvdSdyZSBydW5uaW5nIGEgcHJlLWJ1aWx0IGltYWdlLCBkb3dubG9hZCB0aGUgcmVsZWFzZSIKLSAgICBlY2hvICIgICAgYW5kL29yIEJTUCB0YXJiYWxscyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4iCi0gICAgZWNobyAiICAtIElmIHlvdSdyZSB3b3JraW5nIGZyb20gZ2l0IHNvdXJjZXMsIGp1c3QgY2xvbmUgdGhlIG1ldGFkYXRhIgotICAgIGVjaG8gIiAgICBhbmQgQlNQIGxheWVycyBuZWVkZWQgdG8gYnVpbGQgdGhlIGltYWdlIHlvdSdsbCBiZSBib290aW5nLiIKLSAgICBlY2hvICIgIC0gTWFrZSBzdXJlIHlvdSdyZSBwcm9wZXJseSBzZXQgdXAgdG8gYnVpbGQgYSBuZXcgaW1hZ2UgKHNlZSIKLSAgICBlY2hvICIgICAgdGhlIEJTUCBSRUFETUUgYW5kL29yIHRoZSB3aWRlbHkgYXZhaWxhYmxlIGJhc2ljIGRvY3VtZW50YXRpb24iCi0gICAgZWNobyAiICAgIHRoYXQgZGlzY3Vzc2VzIGhvdyB0byBidWlsZCBpbWFnZXMpLiIKLSAgICBlY2hvICIgIC0gQnVpbGQgYW4gLXNkayB2ZXJzaW9uIG9mIHRoZSBpbWFnZSBlLmcuOiIKLSAgICBlY2hvICIgICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvLXNkayIKLSAgICBlY2hvICIgIE9SIgotICAgIGVjaG8gIiAgLSBCdWlsZCBhIG5vbi1zZGsgaW1hZ2UgYnV0IGluY2x1ZGUgdGhlIHByb2ZpbGluZyB0b29sczoiCi0gICAgZWNobyAiICAgICAgWyBlZGl0IGxvY2FsLmNvbmYgYW5kIGFkZCAndG9vbHMtcHJvZmlsZScgdG8gdGhlIGVuZCBvZiIKLSAgICBlY2hvICIgICAgICAgIHRoZSBFWFRSQV9JTUFHRV9GRUFUVVJFUyB2YXJpYWJsZSBdIgotICAgIGVjaG8gIiAgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLXNhdG8iCi0gICAgZWNobyAiIgotICAgIGVjaG8gIiAgWyBOT1RFIHRoYXQgJ2Nyb3NzdGFwJyBuZWVkcyB0byBiZSBhYmxlIHRvIHNzaCBpbnRvIHRoZSB0YXJnZXQiCi0gICAgZWNobyAiICAgIHN5c3RlbSwgd2hpY2ggaXNuJ3QgZW5hYmxlZCBieSBkZWZhdWx0IGluIC1taW5pbWFsIGltYWdlcy4gXSIKLSAgICBlY2hvICIiCi0gICAgZWNobyAiT25jZSB5b3UndmUgYnVpbGQgdGhlIGltYWdlIG9uIHRoZSBob3N0IHN5c3RlbSwgeW91J3JlIHJlYWR5IHRvIgotICAgIGVjaG8gImJvb3QgaXQgKG9yIHRoZSBlcXVpdmFsZW50IHByZS1idWlsdCBpbWFnZSkgYW5kIHVzZSAnY3Jvc3N0YXAnIgotICAgIGVjaG8gInRvIHByb2JlIGl0ICh5b3UgbmVlZCB0byBzb3VyY2UgdGhlIGVudmlyb25tZW50IGFzIHVzdWFsIGZpcnN0KToiCi0gICAgZWNobyAiIgotICAgIGVjaG8gIiAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiIKLSAgICBlY2hvICIgICAgJCBjZCB+L215L3N5c3RlbXRhcC9zY3JpcHRzIgotICAgIGVjaG8gIiAgICAkIGNyb3NzdGFwIHJvb3RAMTkyLjE2OC4xLnh4eCBteXNjcmlwdC5zdHAiCi0gICAgZWNobyAiIgotfQorY2xhc3MgU3RhcChvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzY3JpcHQsIG1vZHVsZSwgcmVtb3RlKToKKyAgICAgICAgc2VsZi5zY3JpcHQgPSBzY3JpcHQKKyAgICAgICAgc2VsZi5tb2R1bGUgPSBtb2R1bGUKKyAgICAgICAgc2VsZi5yZW1vdGUgPSByZW1vdGUKKyAgICAgICAgc2VsZi5zdGFwID0gTm9uZQorICAgICAgICBzZWxmLnN5c3Jvb3QgPSBOb25lCisgICAgICAgIHNlbGYucnVudGltZSA9IE5vbmUKKyAgICAgICAgc2VsZi50YXBzZXQgPSBOb25lCisgICAgICAgIHNlbGYuYXJjaCA9IE5vbmUKKyAgICAgICAgc2VsZi5jcm9zc19jb21waWxlID0gTm9uZQorICAgICAgICBzZWxmLmtlcm5lbF9yZWxlYXNlID0gTm9uZQorICAgICAgICBzZWxmLnRhcmdldF9wYXRoID0gTm9uZQorICAgICAgICBzZWxmLnRhcmdldF9sZF9saWJyYXJ5X3BhdGggPSBOb25lCiAKLWZ1bmN0aW9uIHN5c3RlbXRhcF90YXJnZXRfYXJjaCgpIHsKLSAgICBTWVNURU1UQVBfVEFSR0VUX0FSQ0g9JDEKLSAgICBjYXNlICRTWVNURU1UQVBfVEFSR0VUX0FSQ0ggaW4KLSAgICAgICAgaT84NikKLSAgICAgICAgICAgIFNZU1RFTVRBUF9UQVJHRVRfQVJDSD0iaTM4NiIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIHg4Nj82NCopCi0gICAgICAgICAgICBTWVNURU1UQVBfVEFSR0VUX0FSQ0g9Ing4Nl82NCIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGFybSopCi0gICAgICAgICAgICBTWVNURU1UQVBfVEFSR0VUX0FSQ0g9ImFybSIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIHBvd2VycGMqKQotICAgICAgICAgICAgU1lTVEVNVEFQX1RBUkdFVF9BUkNIPSJwb3dlcnBjIgotICAgICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICAgIDs7Ci0gICAgZXNhYwotfQorICAgICAgICBpZiBub3Qgc2VsZi5yZW1vdGU6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5tb2R1bGU6CisgICAgICAgICAgICAgICAgIyBkZXJpdmUgbW9kdWxlIG5hbWUgZnJvbSBzY3JpcHQKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZSA9IG9zLnBhdGguYmFzZW5hbWUoc2VsZi5zY3JpcHQpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5tb2R1bGVbLTQ6XSA9PSAiLnN0cCI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlID0gc2VsZi5tb2R1bGVbOi00XQorICAgICAgICAgICAgICAgICAgICAjIHJlcGxhY2UgLSBpZiBhbnkgd2l0aCBfCisgICAgICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlID0gc2VsZi5tb2R1bGUucmVwbGFjZSgiLSIsICJfIikKIAotaWYgWyAkIyAtbHQgMiBdOyB0aGVuCi0JdXNhZ2UKLQlleGl0IDEKLWZpCisgICAgZGVmIGNvbW1hbmQoc2VsZiwgYXJncyk6CisgICAgICAgIHJldCA9IFtdCisgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zdGFwKQogCi1pZiBbIC16ICIkQlVJTERESVIiIF07IHRoZW4KLSAgICBlY2hvICJFcnJvcjogVW5hYmxlIHRvIGZpbmQgdGhlIEJVSUxERElSIGVudmlyb25tZW50IHZhcmlhYmxlLiIKLSAgICBlY2hvICJEaWQgeW91IGZvcmdldCB0byBzb3VyY2UgeW91ciBidWlsZCBzeXN0ZW0gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0PyIKLSAgICBleGl0IDEKLWZpCisgICAgICAgIGlmIHNlbGYucmVtb3RlOgorICAgICAgICAgICAgcmV0LmFwcGVuZCgiLS1yZW1vdGUiKQorICAgICAgICAgICAgcmV0LmFwcGVuZChzZWxmLnJlbW90ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldC5hcHBlbmQoIi1wNCIpCisgICAgICAgICAgICByZXQuYXBwZW5kKCItbSIpCisgICAgICAgICAgICByZXQuYXBwZW5kKHNlbGYubW9kdWxlKQogCi1wdXNoZCAkUFdECi1jZCAkQlVJTERESVIKLUJJVEJBS0VfVkFSUz1gYml0YmFrZSAtZSB2aXJ0dWFsL2tlcm5lbGAKLXBvcGQKKyAgICAgICAgcmV0LmFwcGVuZCgiLWEiKQorICAgICAgICByZXQuYXBwZW5kKHNlbGYuYXJjaCkKIAotU1RBR0lOR19CSU5ESVJfVE9PTENIQUlOPSQoZWNobyAiJEJJVEJBS0VfVkFSUyIgfCBncmVwIF5TVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU4gXAotICB8IGN1dCAtZCAnPScgLWYyIHwgY3V0IC1kICciJyAtZjIpCi1TVEFHSU5HX0JJTkRJUl9UT09MUFJFRklYPSQoZWNobyAiJEJJVEJBS0VfVkFSUyIgfCBncmVwIF5UQVJHRVRfUFJFRklYIFwKLSAgfCBjdXQgLWQgJz0nIC1mMiB8IGN1dCAtZCAnIicgLWYyKQotVEFSR0VUX0FSQ0g9JChlY2hvICIkQklUQkFLRV9WQVJTIiB8IGdyZXAgXlRSQU5TTEFURURfVEFSR0VUX0FSQ0ggXAotICB8IGN1dCAtZCAnPScgLWYyIHwgY3V0IC1kICciJyAtZjIpCi1UQVJHRVRfS0VSTkVMX0JVSUxERElSPSQoZWNobyAiJEJJVEJBS0VfVkFSUyIgfCBncmVwIF5CPSBcCi0gIHwgY3V0IC1kICc9JyAtZjIgfCBjdXQgLWQgJyInIC1mMikKKyAgICAgICAgcmV0LmFwcGVuZCgiLUIiKQorICAgICAgICByZXQuYXBwZW5kKCJDUk9TU19DT01QSUxFPSIgKyBzZWxmLmNyb3NzX2NvbXBpbGUpCiAKLSMgQnVpbGQgYW5kIHBvcHVsYXRlIHRoZSByZWNpcGUtc3lzcm9vdC1uYXRpdmUgd2l0aCBzeXN0ZW10YXAtbmF0aXZlCi1wdXNoZCAkUFdECi1jZCAkQlVJTERESVIKLUJJVEJBS0VfVkFSUz1gYml0YmFrZSAtZSBzeXN0ZW10YXAtbmF0aXZlYAotcG9wZAotU1lTVEVNVEFQX0hPU1RfSU5TVEFMTERJUj0kKGVjaG8gIiRCSVRCQUtFX1ZBUlMiIHwgZ3JlcCBeU1RBR0lOR19ESVJfTkFUSVZFIFwKLSAgfCBjdXQgLWQgJz0nIC1mMiB8IGN1dCAtZCAnIicgLWYyKQorICAgICAgICByZXQuYXBwZW5kKCItciIpCisgICAgICAgIHJldC5hcHBlbmQoc2VsZi5rZXJuZWxfcmVsZWFzZSkKIAotc3lzdGVtdGFwX3RhcmdldF9hcmNoICIkVEFSR0VUX0FSQ0giCisgICAgICAgIHJldC5hcHBlbmQoIi1JIikKKyAgICAgICAgcmV0LmFwcGVuZChzZWxmLnRhcHNldCkKIAotaWYgWyAhIC1kICRUQVJHRVRfS0VSTkVMX0JVSUxERElSIF0gfHwKLSAgIFsgISAtZiAkVEFSR0VUX0tFUk5FTF9CVUlMRERJUi92bWxpbnV4IF07IHRoZW4KLSAgICBlY2hvIC1lICJcbkVycm9yOiBObyB0YXJnZXQga2VybmVsIGJ1aWxkIGZvdW5kLiIKLSAgICBlY2hvIC1lICJEaWQgeW91IGZvcmdldCB0byBjcmVhdGUgYSBsb2NhbCBidWlsZCBvZiB5b3VyIGltYWdlPyIKLSAgICBzZXR1cF91c2FnZQotICAgIGV4aXQgMQotZmkKKyAgICAgICAgcmV0LmFwcGVuZCgiLVIiKQorICAgICAgICByZXQuYXBwZW5kKHNlbGYucnVudGltZSkKIAotaWYgWyAhIC1mICRTWVNURU1UQVBfSE9TVF9JTlNUQUxMRElSL3Vzci9iaW4vc3RhcCBdOyB0aGVuCi0gICAgZWNobyAtZSAiXG5FcnJvcjogTmF0aXZlIChob3N0KSBzeXN0ZW10YXAgbm90IGZvdW5kLiIKLSAgICBlY2hvIC1lICJEaWQgeW91IGFjY2lkZW50YWxseSBidWlsZCBhIGxvY2FsIG5vbi1zZGsgaW1hZ2U/IChvciBmb3JnZXQgdG8iCi0gICAgZWNobyAtZSAiYWRkICd0b29scy1wcm9maWxlJyB0byBFWFRSQV9JTUFHRV9GRUFUVVJFUyBpbiB5b3VyIGxvY2FsLmNvbmYpPyIKLSAgICBlY2hvIC1lICJZb3UgY2FuIGFsc286IGJpdGJha2UgLWMgYWRkdG9fcmVjaXBlX3N5c3Jvb3Qgc3lzdGVtdGFwLW5hdGl2ZSIKLSAgICBzZXR1cF91c2FnZQotICAgIGV4aXQgMQotZmkKKyAgICAgICAgaWYgc2VsZi5zeXNyb290OgorICAgICAgICAgICAgcmV0LmFwcGVuZCgiLS1zeXNyb290IikKKyAgICAgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zeXNyb290KQogCi10YXJnZXRfdXNlcl9ob3N0bmFtZT0iJDEiCi1mdWxsX3NjcmlwdF9uYW1lPSIkMiIKLXNjcmlwdF9uYW1lPSQoYmFzZW5hbWUgIiQyIikKLXNjcmlwdF9iYXNlPSR7c2NyaXB0X25hbWUlLip9Ci1zaGlmdCAyCisgICAgICAgICAgICByZXQuYXBwZW5kKCItLXN5c2Vudj1QQVRIPSIgKyBzZWxmLnRhcmdldF9wYXRoKQorICAgICAgICAgICAgcmV0LmFwcGVuZCgiLS1zeXNlbnY9TERfTElCUkFSWV9QQVRIPSIgKyBzZWxmLnRhcmdldF9sZF9saWJyYXJ5X3BhdGgpCiAKLSR7U1lTVEVNVEFQX0hPU1RfSU5TVEFMTERJUn0vdXNyL2Jpbi9zdGFwIFwKLSAgLWEgJHtTWVNURU1UQVBfVEFSR0VUX0FSQ0h9IFwKLSAgLUIgQ1JPU1NfQ09NUElMRT0iJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LyR7U1RBR0lOR19CSU5ESVJfVE9PTFBSRUZJWH0iIFwKLSAgLXIgJHtUQVJHRVRfS0VSTkVMX0JVSUxERElSfSBcCi0gIC1JICR7U1lTVEVNVEFQX0hPU1RfSU5TVEFMTERJUn0vdXNyL3NoYXJlL3N5c3RlbXRhcC90YXBzZXQgXAotICAtUiAke1NZU1RFTVRBUF9IT1NUX0lOU1RBTExESVJ9L3Vzci9zaGFyZS9zeXN0ZW10YXAvcnVudGltZSBcCi0gIC0tcmVtb3RlPSR0YXJnZXRfdXNlcl9ob3N0bmFtZSBcCi0gIC1tICRzY3JpcHRfYmFzZSBcCi0gICAkZnVsbF9zY3JpcHRfbmFtZSAiJEAiCisgICAgICAgIHJldCA9IHJldCArIGFyZ3MKIAotZXhpdCAwCisgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zY3JpcHQpCisgICAgICAgIHJldHVybiByZXQKKworICAgIGRlZiBhZGRpdGlvbmFsX2Vudmlyb25tZW50KHNlbGYpOgorICAgICAgICByZXQgPSB7fQorICAgICAgICByZXRbIlNZU1RFTVRBUF9ERUJVR0lORk9fUEFUSCJdID0gIis6LmRlYnVnOmJ1aWxkIgorICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgZW52aXJvbm1lbnQoc2VsZik6CisgICAgICAgIHJldCA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIGFkZGl0aW9uYWwgPSBzZWxmLmFkZGl0aW9uYWxfZW52aXJvbm1lbnQoKQorICAgICAgICBmb3IgZSBpbiBhZGRpdGlvbmFsOgorICAgICAgICAgICAgcmV0W2VdID0gYWRkaXRpb25hbFtlXQorICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgZGlzcGxheV9jb21tYW5kKHNlbGYsIGFyZ3MpOgorICAgICAgICBhZGRpdGlvbmFsX2VudiA9IHNlbGYuYWRkaXRpb25hbF9lbnZpcm9ubWVudCgpCisgICAgICAgIGNvbW1hbmQgPSBzZWxmLmNvbW1hbmQoYXJncykKKworICAgICAgICBwcmludCgiIyEvYmluL3NoIikKKyAgICAgICAgZm9yIGUgaW4gYWRkaXRpb25hbF9lbnY6CisgICAgICAgICAgICBwcmludCgiZXhwb3J0ICVzPVwiJXNcIiIgJSAoZSwgYWRkaXRpb25hbF9lbnZbZV0pKQorICAgICAgICBwcmludCgiICIuam9pbihjb21tYW5kKSkKKworY2xhc3MgQml0YmFrZUVudkludm9jYXRpb25FeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKKworY2xhc3MgQml0YmFrZUVudihvYmplY3QpOgorICAgIEJJVEJBS0U9ImJpdGJha2UiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFja2FnZSk6CisgICAgICAgIHNlbGYucGFja2FnZSA9IHBhY2thZ2UKKyAgICAgICAgc2VsZi5jbWQgPSBCaXRiYWtlRW52LkJJVEJBS0UgKyAiIC1lICIgKyBzZWxmLnBhY2thZ2UKKyAgICAgICAgc2VsZi5wb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5jbWQsIHNoZWxsPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgc2VsZi5fX2xpbmVzID0gc2VsZi5wb3Blbi5zdGRvdXQucmVhZGxpbmVzKCkKKyAgICAgICAgc2VsZi5wb3Blbi53YWl0KCkKKworICAgICAgICBzZWxmLmxpbmVzID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fX2xpbmVzOgorICAgICAgICAgICAgICAgIHNlbGYubGluZXMuYXBwZW5kKGxpbmUuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgZGVmIGdldF92YXJzKHNlbGYsIHZhcnMpOgorICAgICAgICBpZiBzZWxmLnBvcGVuLnJldHVybmNvZGU6CisgICAgICAgICAgICByYWlzZSBCaXRiYWtlRW52SW52b2NhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAiXG5GYWlsZWQgdG8gZXhlY3V0ZSAnIiArIHNlbGYuY21kICsKKyAgICAgICAgICAgICAgICAiJyB3aXRoIHRoZSBmb2xsb3dpbmcgbWVzc2FnZTpcbiIgKworICAgICAgICAgICAgICAgICcnLmpvaW4oc2VsZi5saW5lcykpCisKKyAgICAgICAgc2VhcmNoX3BhdHRlcm5zID0gW10KKyAgICAgICAgcmV0ZGljdCA9IHt9CisgICAgICAgIGZvciB2YXIgaW4gdmFyczoKKyAgICAgICAgICAgICMgcmVndWxhciBub3QgZXhwb3J0ZWQgdmFyaWFibGUKKyAgICAgICAgICAgIHJleHByID0gIl4iICsgdmFyICsgIj1cIiguKilcIiIKKyAgICAgICAgICAgIHJlX2NvbXBpbGVkID0gcmUuY29tcGlsZShyZXhwcikKKyAgICAgICAgICAgIHNlYXJjaF9wYXR0ZXJucy5hcHBlbmQoKHZhciwgcmVfY29tcGlsZWQpKQorCisgICAgICAgICAgICAjIGV4cG9ydGVkIHZhcmlhYmxlCisgICAgICAgICAgICByZXhwciA9ICJeZXhwb3J0ICIgKyB2YXIgKyAiPVwiKC4qKVwiIgorICAgICAgICAgICAgcmVfY29tcGlsZWQgPSByZS5jb21waWxlKHJleHByKQorICAgICAgICAgICAgc2VhcmNoX3BhdHRlcm5zLmFwcGVuZCgodmFyLCByZV9jb21waWxlZCkpCisKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYubGluZXM6CisgICAgICAgICAgICAgICAgZm9yIHZhciwgcmV4cHIgaW4gc2VhcmNoX3BhdHRlcm5zOgorICAgICAgICAgICAgICAgICAgICBtID0gcmV4cHIubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbS5ncm91cCgxKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0ZGljdFt2YXJdID0gdmFsdWUKKworICAgICAgICAjIGZpbGwgdmFyaWFibGVzIHZhbHVlcyBpbiBvcmRlciBob3cgdGhleSB3ZXJlIHJlcXVlc3RlZAorICAgICAgICByZXQgPSBbXQorICAgICAgICBmb3IgdmFyIGluIHZhcnM6CisgICAgICAgICAgICByZXQuYXBwZW5kKHJldGRpY3QuZ2V0KHZhcikpCisKKyAgICAgICAgIyBpZiBpdCBpcyBzaW5nbGUgdmFsdWUgbGlzdCByZXR1cm4gaXQgYXMgc2NhbGFyLCBub3QgdGhlIGxpc3QKKyAgICAgICAgaWYgbGVuKHJldCkgPT0gMToKKyAgICAgICAgICAgIHJldCA9IHJldFswXQorCisgICAgICAgIHJldHVybiByZXQKKworY2xhc3MgUGFyYW1EaXNjb3Zlcnkob2JqZWN0KToKKyAgICBTWU1CT0xTX0NIRUNLX01FU1NBR0UgPSAiIiIKK1dBUk5JTkc6IGltYWdlICclcycgZG9lcyBub3QgaGF2ZSBkYmctcGtncyBJTUFHRV9GRUFUVVJFUyBlbmFibGVkIGFuZCBubworImltYWdlLWNvbWJpbmVkLWRiZyIgaW4gaW5oZXJpdGVkIGNsYXNzZXMgaXMgc3BlY2lmaWVkLiBBcyByZXN1bHQgdGhlIGltYWdlCitkb2VzIG5vdCBoYXZlIHN5bWJvbHMgZm9yIHVzZXItbGFuZCBwcm9jZXNzZXMgRFdBUkYgYmFzZWQgcHJvYmVzLiBDb25zaWRlcgorYWRkaW5nICdkYmctcGtncycgdG8gRVhUUkFfSU1BR0VfRkVBVFVSRVMgb3IgYWRkaW5nICJpbWFnZS1jb21iaW5lZC1kYmciIHRvCitVU0VSX0NMQVNTRVMuIEkuZSBhZGQgdGhpcyBsaW5lICdVU0VSX0NMQVNTRVMgKz0gImltYWdlLWNvbWJpbmVkLWRiZyInIHRvCitsb2NhbC5jb25mIGZpbGUuCisKK09yIHlvdSBtYXkgdXNlIElNQUdFX0dFTl9ERUJVR0ZTPSIxIiBvcHRpb24sIGFuZCB0aGVuIGFmdGVyIGJ1aWxkIHlvdSBuZWVkCityZWNvbWJpbmUvdW5wYWNrIGltYWdlIGFuZCBpbWFnZS1kYmcgdGFyYmFsbHMgYW5kIHBhc3MgcmVzdWx0aW5nIGRpciBsb2NhdGlvbgord2l0aCAtLXN5c3Jvb3Qgb3B0aW9uLgorIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW1hZ2UpOgorICAgICAgICBzZWxmLmltYWdlID0gaW1hZ2UKKworICAgICAgICBzZWxmLmltYWdlX3Jvb3RmcyA9IE5vbmUKKyAgICAgICAgc2VsZi5pbWFnZV9mZWF0dXJlcyA9IE5vbmUKKyAgICAgICAgc2VsZi5pbWFnZV9nZW5fZGVidWdmcyA9IE5vbmUKKyAgICAgICAgc2VsZi5pbmhlcml0ID0gTm9uZQorICAgICAgICBzZWxmLmJhc2VfYmluZGlyID0gTm9uZQorICAgICAgICBzZWxmLmJhc2Vfc2JpbmRpciA9IE5vbmUKKyAgICAgICAgc2VsZi5iYXNlX2xpYmRpciA9IE5vbmUKKyAgICAgICAgc2VsZi5iaW5kaXIgPSBOb25lCisgICAgICAgIHNlbGYuc2JpbmRpciA9IE5vbmUKKyAgICAgICAgc2VsZi5saWJkaXIgPSBOb25lCisKKyAgICAgICAgc2VsZi5zdGFnaW5nX2JpbmRpcl90b29sY2hhaW4gPSBOb25lCisgICAgICAgIHNlbGYudGFyZ2V0X3ByZWZpeCA9IE5vbmUKKyAgICAgICAgc2VsZi50YXJnZXRfYXJjaCA9IE5vbmUKKyAgICAgICAgc2VsZi50YXJnZXRfa2VybmVsX2J1aWxkZGlyID0gTm9uZQorCisgICAgICAgIHNlbGYuc3RhZ2luZ19kaXJfbmF0aXZlID0gTm9uZQorCisgICAgICAgIHNlbGYuaW1hZ2VfY29tYmluZWRfZGJnID0gRmFsc2UKKworICAgIGRlZiBkaXNjb3ZlcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5pbWFnZToKKyAgICAgICAgICAgIGJlbnZfaW1hZ2UgPSBCaXRiYWtlRW52KHNlbGYuaW1hZ2UpCisgICAgICAgICAgICAoc2VsZi5pbWFnZV9yb290ZnMsCisgICAgICAgICAgICAgc2VsZi5pbWFnZV9mZWF0dXJlcywKKyAgICAgICAgICAgICBzZWxmLmltYWdlX2dlbl9kZWJ1Z2ZzLAorICAgICAgICAgICAgIHNlbGYuaW5oZXJpdCwKKyAgICAgICAgICAgICBzZWxmLmJhc2VfYmluZGlyLAorICAgICAgICAgICAgIHNlbGYuYmFzZV9zYmluZGlyLAorICAgICAgICAgICAgIHNlbGYuYmFzZV9saWJkaXIsCisgICAgICAgICAgICAgc2VsZi5iaW5kaXIsCisgICAgICAgICAgICAgc2VsZi5zYmluZGlyLAorICAgICAgICAgICAgIHNlbGYubGliZGlyCisgICAgICAgICAgICApID0gYmVudl9pbWFnZS5nZXRfdmFycygKKyAgICAgICAgICAgICAgICAgKCJJTUFHRV9ST09URlMiLAorICAgICAgICAgICAgICAgICAgIklNQUdFX0ZFQVRVUkVTIiwKKyAgICAgICAgICAgICAgICAgICJJTUFHRV9HRU5fREVCVUdGUyIsCisgICAgICAgICAgICAgICAgICAiSU5IRVJJVCIsCisgICAgICAgICAgICAgICAgICAiYmFzZV9iaW5kaXIiLAorICAgICAgICAgICAgICAgICAgImJhc2Vfc2JpbmRpciIsCisgICAgICAgICAgICAgICAgICAiYmFzZV9saWJkaXIiLAorICAgICAgICAgICAgICAgICAgImJpbmRpciIsCisgICAgICAgICAgICAgICAgICAic2JpbmRpciIsCisgICAgICAgICAgICAgICAgICAibGliZGlyIgorICAgICAgICAgICAgICAgICAgKSkKKworICAgICAgICBiZW52X2tlcm5lbCA9IEJpdGJha2VFbnYoInZpcnR1YWwva2VybmVsIikKKyAgICAgICAgKHNlbGYuc3RhZ2luZ19iaW5kaXJfdG9vbGNoYWluLAorICAgICAgICAgc2VsZi50YXJnZXRfcHJlZml4LAorICAgICAgICAgc2VsZi50YXJnZXRfYXJjaCwKKyAgICAgICAgIHNlbGYudGFyZ2V0X2tlcm5lbF9idWlsZGRpcgorICAgICAgICApID0gYmVudl9rZXJuZWwuZ2V0X3ZhcnMoCisgICAgICAgICAgICAgKCJTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU4iLAorICAgICAgICAgICAgICAiVEFSR0VUX1BSRUZJWCIsCisgICAgICAgICAgICAgICJUUkFOU0xBVEVEX1RBUkdFVF9BUkNIIiwKKyAgICAgICAgICAgICAgIkIiCisgICAgICAgICAgICApKQorCisgICAgICAgIGJlbnZfc3lzdGVtdGFwID0gQml0YmFrZUVudigic3lzdGVtdGFwLW5hdGl2ZSIpCisgICAgICAgIChzZWxmLnN0YWdpbmdfZGlyX25hdGl2ZQorICAgICAgICApID0gYmVudl9zeXN0ZW10YXAuZ2V0X3ZhcnMoWyJTVEFHSU5HX0RJUl9OQVRJVkUiXSkKKworICAgICAgICBpZiBzZWxmLmluaGVyaXQ6CisgICAgICAgICAgICBpZiAiaW1hZ2UtY29tYmluZWQtZGJnIiBpbiBzZWxmLmluaGVyaXQuc3BsaXQoKToKKyAgICAgICAgICAgICAgICBzZWxmLmltYWdlX2NvbWJpbmVkX2RiZyA9IFRydWUKKworICAgIGRlZiBjaGVjayhzZWxmLCBzeXNyb290X29wdGlvbik6CisgICAgICAgIHJldCA9IFRydWUKKyAgICAgICAgaWYgc2VsZi5pbWFnZV9yb290ZnM6CisgICAgICAgICAgICBzeXNyb290ID0gc2VsZi5pbWFnZV9yb290ZnMKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHNlbGYuaW1hZ2Vfcm9vdGZzKToKKyAgICAgICAgICAgICAgICBwcmludCgiRVJST1I6IENhbm5vdCBmaW5kICciICsgc3lzcm9vdCArCisgICAgICAgICAgICAgICAgICAgICAgIicgZGlyZWN0b3J5LiBXYXMgJyIgKyBzZWxmLmltYWdlICsgIicgaW1hZ2UgYnVpbHQ/IikKKyAgICAgICAgICAgICAgICByZXQgPSBGYWxzZQorCisgICAgICAgIHN0YXAgPSBzZWxmLnN0YWdpbmdfZGlyX25hdGl2ZSArICIvdXNyL2Jpbi9zdGFwIgorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoc3RhcCk6CisgICAgICAgICAgICBwcmludCgiRVJST1I6IENhbm5vdCBmaW5kICciICsgc3RhcCArCisgICAgICAgICAgICAgICAgICAiJy4gV2FzICdzeXN0ZW10YXAtbmF0aXZlJyBidWlsdD8iKQorICAgICAgICAgICAgcmV0ID0gRmFsc2UKKworICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihzZWxmLnRhcmdldF9rZXJuZWxfYnVpbGRkaXIpOgorICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiBDYW5ub3QgZmluZCAnIiArIHNlbGYudGFyZ2V0X2tlcm5lbF9idWlsZGRpciArCisgICAgICAgICAgICAgICAgICAiJyBkaXJlY3RvcnkuIFdhcyAna2VybmVsL3ZpcnR1YWwnIGJ1aWx0PyIpCisgICAgICAgICAgICByZXQgPSBGYWxzZQorCisgICAgICAgIGlmIG5vdCBzeXNyb290X29wdGlvbiBhbmQgc2VsZi5pbWFnZV9yb290ZnM6CisgICAgICAgICAgICBkYmdfcGtnc19mb3VuZCA9IEZhbHNlCisKKyAgICAgICAgICAgIGlmIHNlbGYuaW1hZ2VfZmVhdHVyZXM6CisgICAgICAgICAgICAgICAgaW1hZ2VfZmVhdHVyZXMgPSBzZWxmLmltYWdlX2ZlYXR1cmVzLnNwbGl0KCkKKyAgICAgICAgICAgICAgICBpZiAiZGJnLXBrZ3MiIGluIGltYWdlX2ZlYXR1cmVzOgorICAgICAgICAgICAgICAgICAgICBkYmdfcGtnc19mb3VuZCA9IFRydWUKKworICAgICAgICAgICAgaWYgbm90IGRiZ19wa2dzX2ZvdW5kIFwKKyAgICAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5pbWFnZV9jb21iaW5lZF9kYmc6CisgICAgICAgICAgICAgICAgcHJpbnQoUGFyYW1EaXNjb3ZlcnkuU1lNQk9MU19DSEVDS19NRVNTQUdFICUgKHNlbGYuaW1hZ2UpKQorCisgICAgICAgIGlmIG5vdCByZXQ6CisgICAgICAgICAgICBwcmludCgiIikKKworICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgX19tYXBfc3lzdGVtdGFwX2FyY2goc2VsZik6CisgICAgICAgIGEgPSBzZWxmLnRhcmdldF9hcmNoCisgICAgICAgIHJldCA9IGEKKyAgICAgICAgaWYgICByZS5tYXRjaCgnKGF0aGxvbnx4ODYuNjQpJCcsIGEpOgorICAgICAgICAgICAgcmV0ID0gJ3g4Nl82NCcKKyAgICAgICAgZWxpZiByZS5tYXRjaCgnaS44NiQnLCBhKToKKyAgICAgICAgICAgIHJldCA9ICdpMzg2JworICAgICAgICBlbGlmIHJlLm1hdGNoKCdhcm0kJywgYSk6CisgICAgICAgICAgICByZXQgPSAnYXJtJworICAgICAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0JCcsIGEpOgorICAgICAgICAgICAgcmV0ID0gJ2FybTY0JworICAgICAgICBlbGlmIHJlLm1hdGNoKCdtaXBzKGlzYXwpKDMyfDY0fCkocjZ8KShlbHwpJCcsIGEpOgorICAgICAgICAgICAgcmV0ID0gJ21pcHMnCisgICAgICAgIGVsaWYgcmUubWF0Y2goJ3AocGN8b3dlcnBjKSh8NjQpJywgYSk6CisgICAgICAgICAgICByZXQgPSAncG93ZXJwYycKKyAgICAgICAgcmV0dXJuIHJldAorCisgICAgZGVmIGZpbGxfc3RhcChzZWxmLCBzdGFwKToKKyAgICAgICAgc3RhcC5zdGFwID0gc2VsZi5zdGFnaW5nX2Rpcl9uYXRpdmUgKyAiL3Vzci9iaW4vc3RhcCIKKyAgICAgICAgaWYgbm90IHN0YXAuc3lzcm9vdDoKKyAgICAgICAgICAgIGlmIHNlbGYuaW1hZ2Vfcm9vdGZzOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuaW1hZ2VfY29tYmluZWRfZGJnOgorICAgICAgICAgICAgICAgICAgICBzdGFwLnN5c3Jvb3QgPSBzZWxmLmltYWdlX3Jvb3RmcyArICItZGJnIgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHN0YXAuc3lzcm9vdCA9IHNlbGYuaW1hZ2Vfcm9vdGZzCisgICAgICAgIHN0YXAucnVudGltZSA9IHNlbGYuc3RhZ2luZ19kaXJfbmF0aXZlICsgIi91c3Ivc2hhcmUvc3lzdGVtdGFwL3J1bnRpbWUiCisgICAgICAgIHN0YXAudGFwc2V0ID0gc2VsZi5zdGFnaW5nX2Rpcl9uYXRpdmUgKyAiL3Vzci9zaGFyZS9zeXN0ZW10YXAvdGFwc2V0IgorICAgICAgICBzdGFwLmFyY2ggPSBzZWxmLl9fbWFwX3N5c3RlbXRhcF9hcmNoKCkKKyAgICAgICAgc3RhcC5jcm9zc19jb21waWxlID0gc2VsZi5zdGFnaW5nX2JpbmRpcl90b29sY2hhaW4gKyAiLyIgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0X3ByZWZpeAorICAgICAgICBzdGFwLmtlcm5lbF9yZWxlYXNlID0gc2VsZi50YXJnZXRfa2VybmVsX2J1aWxkZGlyCisKKyAgICAgICAgIyBkbyB3ZSBoYXZlIHN0YW5kYXJkIHRoYXQgdGVsbHMgaW4gd2hpY2ggb3JkZXIgdGhlc2UgbmVlZCB0byBhcHBlYXIKKyAgICAgICAgdGFyZ2V0X3BhdGggPSBbXQorICAgICAgICBpZiBzZWxmLnNiaW5kaXI6CisgICAgICAgICAgICB0YXJnZXRfcGF0aC5hcHBlbmQoc2VsZi5zYmluZGlyKQorICAgICAgICBpZiBzZWxmLmJpbmRpcjoKKyAgICAgICAgICAgIHRhcmdldF9wYXRoLmFwcGVuZChzZWxmLmJpbmRpcikKKyAgICAgICAgaWYgc2VsZi5iYXNlX3NiaW5kaXI6CisgICAgICAgICAgICB0YXJnZXRfcGF0aC5hcHBlbmQoc2VsZi5iYXNlX3NiaW5kaXIpCisgICAgICAgIGlmIHNlbGYuYmFzZV9iaW5kaXI6CisgICAgICAgICAgICB0YXJnZXRfcGF0aC5hcHBlbmQoc2VsZi5iYXNlX2JpbmRpcikKKyAgICAgICAgc3RhcC50YXJnZXRfcGF0aCA9ICI6Ii5qb2luKHRhcmdldF9wYXRoKQorCisgICAgICAgIHRhcmdldF9sZF9saWJyYXJ5X3BhdGggPSBbXQorICAgICAgICBpZiBzZWxmLmxpYmRpcjoKKyAgICAgICAgICAgIHRhcmdldF9sZF9saWJyYXJ5X3BhdGguYXBwZW5kKHNlbGYubGliZGlyKQorICAgICAgICBpZiBzZWxmLmJhc2VfbGliZGlyOgorICAgICAgICAgICAgdGFyZ2V0X2xkX2xpYnJhcnlfcGF0aC5hcHBlbmQoc2VsZi5iYXNlX2xpYmRpcikKKyAgICAgICAgc3RhcC50YXJnZXRfbGRfbGlicmFyeV9wYXRoID0gIjoiLmpvaW4odGFyZ2V0X2xkX2xpYnJhcnlfcGF0aCkKKworCitkZWYgbWFpbigpOgorICAgIHVzYWdlID0gIiIidXNhZ2U6ICVwcm9nIC1zIDxzeXN0ZW10YXAtc2NyaXB0PiBbb3B0aW9uc10gWy0tIFtzeXN0ZW10YXAgb3B0aW9uc11dCisKKyVwcm9nIGNyb3NzIGNvbXBpbGUgZ2l2ZW4gU3lzdGVtVGFwIHNjcmlwdCBhZ2FpbnN0IGdpdmVuIGltYWdlLCBrZXJuZWwKKworSXQgbmVlZHMgdG8gcnVuIGluIGVudmlyb250bWVudCBzZXQgZm9yIGJpdGJha2UgLSBpdCB1c2VzIGJpdGJha2UgLWUKK2ludm9jYXRpb25zIHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIHRvIGNvbnN0cnVjdCBwcm9wZXIgc3RhcCBjcm9zcyBidWlsZAoraW52b2NhdGlvbiBhcmd1bWVudHMuIEl0IGFzc3VtZXMgdGhhdCBzeXN0ZW10YXAtbmF0aXZlIGlzIGJ1aWx0IGluIGdpdmVuCitiaXRiYWtlIHdvcmtzcGFjZS4KKworQW55dGhpbmcgYWZ0ZXIgLS0gb3B0aW9uIGlzIHBhc3NlZCBkaXJlY3RseSB0byBzdGFwLgorCitMZWdhY3kgc2NyaXB0IGludm9jYXRpb24gc3R5bGUgc3VwcG9ydGVkIGJ1dCBkZXByZWNpYXRlZDoKKyAgJXByb2cgPHVzZXJAaG9zdG5hbWU+IDxzeXRlbXRhcC1zY3JpcHQ+IFtzeXN0ZW10YXAgb3B0aW9uc10KKworVG8gZW5hYmxlIG1vc3Qgb3V0IG9mIHN5c3RlbXRhcCB0aGUgZm9sbG93aW5nIHNpdGUuY29uZiBvciBsb2NhbC5jb25mCitjb25maWd1cmF0aW9uIGlzIHJlY29tbWVuZGVkOgorCisjIGVuYWJsZXMgc3ltYm9sICsgdGFyZ2V0IGJpbmFyaWVzIHJvb3Rmcy1kYmcgaW4gd29ya3NwYWNlCitJTUFHRV9HRU5fREVCVUdGUyA9ICIxIgorSU1BR0VfRlNUWVBFU19ERUJVR0ZTID0gInRhci5iejIiCitVU0VSX0NMQVNTRVMgKz0gImltYWdlLWNvbWJpbmVkLWRiZyIKKworIyBlbmFibGVzIGtlcm5lbCBkZWJ1ZyBzeW1ib2xzCitLRVJORUxfRVhUUkFfRkVBVFVSRVNfYXBwZW5kID0gIiBmZWF0dXJlcy9kZWJ1Zy9kZWJ1Zy1rZXJuZWwuc2NjIgorCisjIG1pbmltYWwsIGp1c3QgcnVuLXRpbWUgc3lzdGVtdGFwIGNvbmZpZ3VyYXRpb24gaW4gdGFyZ2V0IGltYWdlCitQQUNLQUdFQ09ORklHX3BuLXN5c3RlbXRhcCA9ICJtb25pdG9yIgorCisjIGFkZCBzeXN0ZW10YXAgcnVuLXRpbWUgaW50byB0YXJnZXQgaW1hZ2UgaWYgaXQgaXMgbm90IHRoZXJlIHlldAorSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIHN5c3RlbXRhcCIKKyIiIgorICAgIG9wdGlvbl9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9dXNhZ2UpCisKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIi1zIiwgIi0tc2NyaXB0IiwgZGVzdD0ic2NyaXB0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ic3BlY2lmeSBpbnB1dCBzY3JpcHQgRklMRSBuYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YXZhcj0iRklMRSIpCisKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIi1pIiwgIi0taW1hZ2UiLCBkZXN0PSJpbWFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InNwZWNpZnkgaW1hZ2UgbmFtZSBmb3Igd2hpY2ggc2NyaXB0IHNob3VsZCBiZSBjb21waWxlZCIpCisKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIi1yIiwgIi0tcmVtb3RlIiwgZGVzdD0icmVtb3RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ic3BlY2lmeSB1c2VybmFtZUBob3N0bmFtZSBvZiByZW1vdGUgdGFyZ2V0IHRvIHJ1biBzY3JpcHQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uYWwsIGl0IGFzc3VtZXMgdGhhdCByZW1vdGUgdGFyZ2V0IGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIHNzaCIpCisKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIi1tIiwgIi0tbW9kdWxlIiwgZGVzdD0ibW9kdWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ic3BlY2lmeSBtb2R1bGUgbmFtZSwgb3B0aW9uYWwsIGhhcyBlZmZlY3Qgb25seSBpZiAtLXJlbW90ZSBpcyBub3QgdXNlZCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWYgbm90IHNwZWNpZmllZCBtb2R1bGUgbmFtZSB3aWxsIGJlIGRlcml2ZWQgZnJvbSBwYXNzZWQgc2NyaXB0IG5hbWUiKQorCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIteSIsICItLXN5c3Jvb3QiLCBkZXN0PSJzeXNyb290IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXhwbGljaXRlbHkgc3BlY2lmeSBpbWFnZSBzeXNyb290IGxvY2F0aW9uLiBNYXkgbmVlZCB0byB1c2UgaXQgaW4gY2FzZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGVuIElNQUdFX0dFTl9ERUJVR0ZTPVwiMVwiIG9wdGlvbiBpcyB1c2VkIGFuZCByZWNvbWJpbmVkIHdpdGggc3ltYm9scyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBkaWZmZXJlbnQgbG9jYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhdmFyPSJESVIiKQorCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCItbyIsICItLW91dCIsIGRlc3Q9Im91dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Im91dHB1dCBzaGVsbCBzY3JpcHQgdGhhdCBlcXV2aXZhbGVudCBpbnZvY2F0aW9uIG9mIHRoaXMgc2NyaXB0IHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2l2ZW4gc2V0IG9mIGFyZ3VtZW50cywgaW4gZ2l2ZW4gYml0YmFrZSBlbnZpcm9ubWVudC4gSXQgY291bGQgYmUgc3RvcmVkIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlcGFyYXRlIHNoZWxsIHNjcmlwdCBhbmQgY291bGQgYmUgcmVwZWF0ZWQgd2l0aG91dCBpbmN1cmluZyBiaXRiYWtlIC1lICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9jYXRpb24gb3ZlcmhlYWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlKQorCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCItZCIsICItLWRlYnVnIiwgZGVzdD0iZGVidWciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJlbmFibGUgZGVidWcgb3V0cHV0LiBVc2UgdGhpcyBvcHRpb24gdG8gc2VlIHJlc3VsdGluZyBzdGFwIGludm9jYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlKQorCisgICAgIyBpcyBpbnZvY2F0aW9uIGZvbGxvdyBzeW50YXggZnJvbSBvcmlnbmFsIGNyb3NzdGFwIHNoZWxsIHNjcmlwdAorICAgIGxlZ2FjeV9hcmdzID0gRmFsc2UKKworICAgICMgY2hlY2sgaWYgd2UgY2FsbGVkIHRoZSBsZWdhY3kgd2F5CisgICAgaWYgbGVuKHN5cy5hcmd2KSA+PSAzOgorICAgICAgICBpZiBzeXMuYXJndlsxXS5maW5kKCJAIikgIT0gLTEgYW5kIG9zLnBhdGguZXhpc3RzKHN5cy5hcmd2WzJdKToKKyAgICAgICAgICAgIGxlZ2FjeV9hcmdzID0gVHJ1ZQorCisgICAgICAgICAgICAjIGZpbGwgb3B0aW9ucyB2YWx1ZXMgZm9yIGxlZ2FjeSBpbnZvY2F0aW9uIGNhc2UKKyAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRwYXJzZS5WYWx1ZXMKKyAgICAgICAgICAgIG9wdGlvbnMuc2NyaXB0ID0gc3lzLmFyZ3ZbMl0KKyAgICAgICAgICAgIG9wdGlvbnMucmVtb3RlID0gc3lzLmFyZ3ZbMV0KKyAgICAgICAgICAgIG9wdGlvbnMuaW1hZ2UgPSBOb25lCisgICAgICAgICAgICBvcHRpb25zLm1vZHVsZSA9IE5vbmUKKyAgICAgICAgICAgIG9wdGlvbnMuc3lzcm9vdCA9IE5vbmUKKyAgICAgICAgICAgIG9wdGlvbnMub3V0ID0gTm9uZQorICAgICAgICAgICAgb3B0aW9ucy5kZWJ1ZyA9IE5vbmUKKyAgICAgICAgICAgIHJlbWFpbmluZ19hcmdzID0gc3lzLmFyZ3ZbMzpdCisKKyAgICBpZiBub3QgbGVnYWN5X2FyZ3M6CisgICAgICAgIChvcHRpb25zLCByZW1haW5pbmdfYXJncykgPSBvcHRpb25fcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaWYgbm90IG9wdGlvbnMuc2NyaXB0IG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhvcHRpb25zLnNjcmlwdCk6CisgICAgICAgIHByaW50KCInLXMgRklMRScgb3B0aW9uIGlzIG1pc3NpbmdcbiIpCisgICAgICAgIG9wdGlvbl9wYXJzZXIucHJpbnRfaGVscCgpCisgICAgZWxzZToKKyAgICAgICAgc3RhcCA9IFN0YXAob3B0aW9ucy5zY3JpcHQsIG9wdGlvbnMubW9kdWxlLCBvcHRpb25zLnJlbW90ZSkKKyAgICAgICAgZGlzY292ZXJ5ID0gUGFyYW1EaXNjb3Zlcnkob3B0aW9ucy5pbWFnZSkKKyAgICAgICAgZGlzY292ZXJ5LmRpc2NvdmVyKCkKKyAgICAgICAgaWYgbm90IGRpc2NvdmVyeS5jaGVjayhvcHRpb25zLnN5c3Jvb3QpOgorICAgICAgICAgICAgb3B0aW9uX3BhcnNlci5wcmludF9oZWxwKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN0YXAuc3lzcm9vdCA9IG9wdGlvbnMuc3lzcm9vdAorICAgICAgICAgICAgZGlzY292ZXJ5LmZpbGxfc3RhcChzdGFwKQorCisgICAgICAgICAgICBpZiBvcHRpb25zLm91dDoKKyAgICAgICAgICAgICAgICBzdGFwLmRpc3BsYXlfY29tbWFuZChyZW1haW5pbmdfYXJncykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY21kID0gc3RhcC5jb21tYW5kKHJlbWFpbmluZ19hcmdzKQorICAgICAgICAgICAgICAgIGVudiA9IHN0YXAuZW52aXJvbm1lbnQoKQorCisgICAgICAgICAgICAgICAgaWYgb3B0aW9ucy5kZWJ1ZzoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAiLmpvaW4oY21kKSkKKworICAgICAgICAgICAgICAgIG9zLmV4ZWN2ZShjbWRbMF0sIGNtZCwgZW52KQorCittYWluKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2RldnRvb2wgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9kZXZ0b29sCmluZGV4IDUyOTJmMTguLmQ2ODFhMTkgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2RldnRvb2wKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvZGV2dG9vbApAQCAtMTEzLDIyICsxMTMsMzAgQEAKICAgICBleHRlcm5hbHNyY19yZSA9IHJlLmNvbXBpbGUocideRVhURVJOQUxTUkMoX3BuLShbXiA9XSspKT8gKj0gKiIoW14iXSopIiQnKQogICAgIGZvciBmbiBpbiBnbG9iLmdsb2Iob3MucGF0aC5qb2luKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgJ2FwcGVuZHMnLCAnKi5iYmFwcGVuZCcpKToKICAgICAgICAgd2l0aCBvcGVuKGZuLCAncicpIGFzIGY6CisgICAgICAgICAgICBwbnZhbHVlcyA9IHt9CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgogICAgICAgICAgICAgICAgIHJlcyA9IGV4dGVybmFsc3JjX3JlLm1hdGNoKGxpbmUucnN0cmlwKCkpCiAgICAgICAgICAgICAgICAgaWYgcmVzOgotICAgICAgICAgICAgICAgICAgICBwbiA9IHJlcy5ncm91cCgyKSBvciBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoZm4pKVswXS5zcGxpdCgnXycpWzBdCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXBuID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGZuKSlbMF0uc3BsaXQoJ18nKVswXQorICAgICAgICAgICAgICAgICAgICBwbiA9IHJlcy5ncm91cCgyKSBvciByZWNpcGVwbgogICAgICAgICAgICAgICAgICAgICAjIEZpbmQgdGhlIHJlY2lwZSBmaWxlIHdpdGhpbiB0aGUgd29ya3NwYWNlLCBpZiBhbnkKICAgICAgICAgICAgICAgICAgICAgYmJmaWxlID0gb3MucGF0aC5iYXNlbmFtZShmbikucmVwbGFjZSgnLmJiYXBwZW5kJywgJy5iYicpLnJlcGxhY2UoJyUnLCAnKicpCiAgICAgICAgICAgICAgICAgICAgIHJlY2lwZWZpbGUgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlY2lwZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiZmlsZSkpCiAgICAgICAgICAgICAgICAgICAgIGlmIHJlY2lwZWZpbGU6CiAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVmaWxlID0gcmVjaXBlZmlsZVswXQotICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VbcG5dID0geydzcmN0cmVlJzogcmVzLmdyb3VwKDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYmFwcGVuZCc6IGZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNpcGVmaWxlJzogcmVjaXBlZmlsZX0KLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdGb3VuZCByZWNpcGUgJXMnICUgd29ya3NwYWNlW3BuXSkKKyAgICAgICAgICAgICAgICAgICAgcG52YWx1ZXNbJ3NyY3RyZWUnXSA9IHJlcy5ncm91cCgzKQorICAgICAgICAgICAgICAgICAgICBwbnZhbHVlc1snYmJhcHBlbmQnXSA9IGZuCisgICAgICAgICAgICAgICAgICAgIHBudmFsdWVzWydyZWNpcGVmaWxlJ10gPSByZWNpcGVmaWxlCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJyMgc3JjdHJlZWJhc2U6ICcpOgorICAgICAgICAgICAgICAgICAgICBwbnZhbHVlc1snc3JjdHJlZWJhc2UnXSA9IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpCisgICAgICAgICAgICBpZiBwbnZhbHVlczoKKyAgICAgICAgICAgICAgICBpZiBub3QgcG52YWx1ZXMuZ2V0KCdzcmN0cmVlYmFzZScsIE5vbmUpOgorICAgICAgICAgICAgICAgICAgICBwbnZhbHVlc1snc3JjdHJlZWJhc2UnXSA9IHBudmFsdWVzWydzcmN0cmVlJ10KKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0ZvdW5kIHJlY2lwZSAlcycgJSBwbnZhbHVlcykKKyAgICAgICAgICAgICAgICB3b3Jrc3BhY2VbcG5dID0gcG52YWx1ZXMKIAogZGVmIGNyZWF0ZV93b3Jrc3BhY2UoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICBpZiBhcmdzLmxheWVycGF0aDoKQEAgLTE1Nyw2ICsxNjUsNyBAQAogICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX1BBVFRFUk5fd29ya3NwYWNlbGF5ZXIgPSAiXiQnICsgJ3tMQVlFUkRJUn0vIlxuJykKICAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QQVRURVJOX0lHTk9SRV9FTVBUWV93b3Jrc3BhY2VsYXllciA9ICIxIlxuJykKICAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QUklPUklUWV93b3Jrc3BhY2VsYXllciA9ICI5OSJcbicpCisgICAgICAgICAgICBmLndyaXRlKCdMQVlFUlNFUklFU19DT01QQVRfd29ya3NwYWNlbGF5ZXIgPSAiJHtMQVlFUlNFUklFU19DT01QQVRfY29yZX0iXG4nKQogICAgICAgICAjIEFkZCBhIFJFQURNRSBmaWxlCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4od29ya3NwYWNlZGlyLCAnUkVBRE1FJyksICd3JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoJ1RoaXMgbGF5ZXIgd2FzIGNyZWF0ZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBkZXZ0b29sIHV0aWxpdHkgaW4gb3JkZXIgdG9cbicpCkBAIC0xODIsNyArMTkxLDExIEBACiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJibGF5ZXJzX2NvbmYpOgogICAgICAgICBsb2dnZXIuZXJyb3IoJ1VuYWJsZSB0byBmaW5kIGJibGF5ZXJzLmNvbmYnKQogICAgICAgICByZXR1cm4KLSAgICBfLCBhZGRlZCA9IGJiLnV0aWxzLmVkaXRfYmJsYXllcnNfY29uZihiYmxheWVyc19jb25mLCB3b3Jrc3BhY2VkaXIsIGNvbmZpZy53b3Jrc3BhY2VfcGF0aCkKKyAgICBpZiBvcy5wYXRoLmFic3BhdGgod29ya3NwYWNlZGlyKSAhPSBvcy5wYXRoLmFic3BhdGgoY29uZmlnLndvcmtzcGFjZV9wYXRoKToKKyAgICAgICAgcmVtb3ZlZGlyID0gY29uZmlnLndvcmtzcGFjZV9wYXRoCisgICAgZWxzZToKKyAgICAgICAgcmVtb3ZlZGlyID0gTm9uZQorICAgIF8sIGFkZGVkID0gYmIudXRpbHMuZWRpdF9iYmxheWVyc19jb25mKGJibGF5ZXJzX2NvbmYsIHdvcmtzcGFjZWRpciwgcmVtb3ZlZGlyKQogICAgIGlmIGFkZGVkOgogICAgICAgICBsb2dnZXIuaW5mbygnRW5hYmxpbmcgd29ya3NwYWNlIGxheWVyIGluIGJibGF5ZXJzLmNvbmYnKQogICAgIGlmIGNvbmZpZy53b3Jrc3BhY2VfcGF0aCAhPSB3b3Jrc3BhY2VkaXI6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9kaXN0cm8vYnVpbGQtcmVjaXBlLWxpc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9kaXN0cm8vYnVpbGQtcmVjaXBlLWxpc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjE2Mjc2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2Rpc3Ryby9idWlsZC1yZWNpcGUtbGlzdC5weQpAQCAtMCwwICsxLDEyOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIworIyBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorIyB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisjIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisjIG1vcmUgZGV0YWlscy4KKyMKKworaW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgY3N2CitpbXBvcnQgc3lzCitpbXBvcnQgYXJncGFyc2UKKworX192ZXJzaW9uX18gPSAiMC4xLjAiCisKKyMgc2V0IG9mIEJQTnMKK3JlY2lwZW5hbWVzID0gc2V0KCkKKyMgbWFwIG9mIHJlY2lwZSAtPiBkYXRhCithbGxyZWNpcGVzID0ge30KKworZGVmIG1ha2VfYnBuKHJlY2lwZSk6CisgICAgcHJlZml4ZXMgPSAoIm5hdGl2ZXNkay0iLCkKKyAgICBzdWZmaXhlcyA9ICgiLW5hdGl2ZSIsICItY3Jvc3MiLCAiLWluaXRpYWwiLCAiLWludGVybWVkaWF0ZSIsICItY3Jvc3NzZGsiLCAiLWNyb3NzLWNhbmFkaWFuIikKKyAgICBmb3IgaXggaW4gcHJlZml4ZXMgKyBzdWZmaXhlczoKKyAgICAgICAgaWYgaXggaW4gcmVjaXBlOgorICAgICAgICAgICAgcmVjaXBlID0gcmVjaXBlLnJlcGxhY2UoaXgsICIiKQorICAgIHJldHVybiByZWNpcGUKKworZGVmIGdhdGhlcl9yZWNpcGVzKHJvd3MpOgorICAgIGZvciByb3cgaW4gcm93czoKKyAgICAgICAgcmVjaXBlID0gcm93WzBdCisgICAgICAgIGJwbiA9IG1ha2VfYnBuKHJlY2lwZSkKKyAgICAgICAgaWYgYnBuIG5vdCBpbiByZWNpcGVuYW1lczoKKyAgICAgICAgICAgIHJlY2lwZW5hbWVzLmFkZChicG4pCisgICAgICAgIGlmIHJlY2lwZSBub3QgaW4gYWxscmVjaXBlczoKKyAgICAgICAgICAgIGFsbHJlY2lwZXNbcmVjaXBlXSA9IHJvdworCitkZWYgZ2VuZXJhdGVfcmVjaXBlX2xpc3QoKToKKyAgICAjIG1hY2hpbmUgbGlzdAorICAgIG1hY2hpbmVfbGlzdCA9ICggInFlbXVhcm02NCIsICJxZW11YXJtIiwgInFlbXVtaXBzNjQiLCAicWVtdW1pcHMiLCAicWVtdXBwYyIsICJxZW11eDg2LTY0IiwgInFlbXV4ODYiICkKKyAgICAjIHNldCBmaWxlbmFtZSBmb3JtYXQKKyAgICBmbmZvcm1hdCA9ICdkaXN0cm9kYXRhLiVzLmNzdicKKworICAgICMgc3RvcmUgYWxsIGRhdGEgZmlsZXMgaW4gZGlzdHJvZGF0YQorICAgIGRhdGFkaXIgPSAnZGlzdHJvZGF0YScKKworICAgICMgY3JlYXRlIHRoZSBkaXJlY3RvcnkgaWYgaXQgZG9lcyBub3QgZXhpc3RzCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRhdGFkaXIpOgorICAgICAgICBvcy5ta2RpcihkYXRhZGlyKQorCisgICAgIyBkb2luZyBiaXRiYWtlIGRpc3Ryb2RhdGEKKyAgICBmb3IgbWFjaGluZSBpbiBtYWNoaW5lX2xpc3Q6CisgICAgICAgIG9zLnN5c3RlbSgnTUFDSElORT0nKyBtYWNoaW5lICsgJyBiaXRiYWtlIC1rIHVuaXZlcnNlIC1jIGRpc3Ryb2RhdGEnKQorICAgICAgICBzaHV0aWwuY29weSgndG1wL2xvZy9kaXN0cm9kYXRhLmNzdicsICdkaXN0cm9kYXRhLycgKyBmbmZvcm1hdCAlIG1hY2hpbmUpCisKKyAgICBmb3IgbWFjaGluZSBpbiBtYWNoaW5lX2xpc3Q6CisgICAgICAgIHdpdGggb3BlbignZGlzdHJvZGF0YS8nICsgZm5mb3JtYXQgJSBtYWNoaW5lKSBhcyBmOgorICAgICAgICAgICAgcmVhZGVyID0gY3N2LnJlYWRlcihmKQorICAgICAgICAgICAgcm93cyA9IHJlYWRlci5fX2l0ZXJfXygpCisgICAgICAgICAgICBnYXRoZXJfcmVjaXBlcyhyb3dzKQorCisgICAgd2l0aCBvcGVuKCdyZWNpcGUtbGlzdC50eHQnLCAndycpIGFzIGY6CisgICAgICAgIGZvciByZWNpcGUgaW4gc29ydGVkKHJlY2lwZW5hbWVzKToKKyAgICAgICAgICAgIGYud3JpdGUoIiVzXG4iICUgcmVjaXBlKQorICAgIHByaW50KCJmaWxlIDogcmVjaXBlLWxpc3QudHh0IGlzIGNyZWF0ZWQgd2l0aCAlZCBlbnRyaWVzLiIgJSBsZW4ocmVjaXBlbmFtZXMpKQorCisgICAgd2l0aCBvcGVuKCdhbGwtcmVjaXBlLWxpc3QudHh0JywgJ3cnKSBhcyBmOgorICAgICAgICBmb3IgcmVjaXBlLCByb3cgaW4gc29ydGVkKGFsbHJlY2lwZXMuaXRlbXMoKSk6CisgICAgICAgICAgICBmLndyaXRlKCIlc1xuIiAlICcsJy5qb2luKHJvdykpCisKKworZGVmIGRpZmZfZm9yX25ld19yZWNpcGVzKHJlY2lwZTEsIHJlY2lwZTIpOgorICAgIHByZXZfcmVjaXBlX3BhdGggPSByZWNpcGUxICsgJy8nCisgICAgY3Vycl9yZWNpcGVfcGF0aCA9IHJlY2lwZTIgKyAnLycKKyAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocHJldl9yZWNpcGVfcGF0aCArICdyZWNpcGUtbGlzdC50eHQnKSBvciBub3Qgb3MucGF0aC5pc2ZpbGUoY3Vycl9yZWNpcGVfcGF0aCArICdyZWNpcGUtbGlzdC50eHQnKToKKyAgICAgICAgcHJpbnQoInJlY2lwZSBmaWxlcyBkbyBub3QgZXhpc3RzLiBwbGVhc2UgdmVyaWZ5IHRoYXQgdGhlIGZpbGUgZXhpc3RzLiIpCisgICAgICAgIGV4aXQoMSkKKworICAgIGltcG9ydCBjc3YKKworICAgIHByZXYgPSBbXQorICAgIG5ldyA9IFtdCisKKyAgICB3aXRoIG9wZW4ocHJldl9yZWNpcGVfcGF0aCArICdyZWNpcGUtbGlzdC50eHQnKSBhcyBmOgorICAgICAgICBwcmV2ID0gZi5yZWFkbGluZXMoKQorCisgICAgd2l0aCBvcGVuKGN1cnJfcmVjaXBlX3BhdGggKyAncmVjaXBlLWxpc3QudHh0JykgYXMgZjoKKyAgICAgICAgbmV3ID0gZi5yZWFkbGluZXMoKQorCisgICAgdXBkYXRlcyA9IFtdCisgICAgZm9yIHBuIGluIG5ldzoKKyAgICAgICAgaWYgbm90IHBuIGluIHByZXY6CisgICAgICAgICAgICB1cGRhdGVzLmFwcGVuZChwbi5yc3RyaXAoKSkKKworICAgIGFsbHJlY2lwZSA9IFtdCisgICAgd2l0aCBvcGVuKHJlY2lwZTEgKyAnXycgKyByZWNpcGUyICsgJ19uZXdfcmVjaXBlX2xpc3QudHh0JywndycpIGFzIGRyOgorICAgICAgICB3aXRoIG9wZW4oY3Vycl9yZWNpcGVfcGF0aCArICdhbGwtcmVjaXBlLWxpc3QudHh0JykgYXMgZjoKKyAgICAgICAgICAgIHJlYWRlciA9IGNzdi5yZWFkZXIoZiwgZGVsaW1pdGVyPScsJykKKyAgICAgICAgICAgIGZvciByb3cgaW4gcmVhZGVyOgorICAgICAgICAgICAgICAgIGlmIHJvd1swXSBpbiB1cGRhdGVzOgorICAgICAgICAgICAgICAgICAgICBkci53cml0ZSgiJXMsJXMsJXMiICUgKHJvd1swXSwgcm93WzNdLCByb3dbNV0pKQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4ocm93Wzk6XSkgPiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgZHIud3JpdGUoIiwlcyIgJSAnLCcuam9pbihyb3dbOTpdKSkKKyAgICAgICAgICAgICAgICAgICAgZHIud3JpdGUoIlxuIikKKworZGVmIG1haW4oYXJndik6CisgICAgaWYgYXJndlswXSA9PSAiZ2VuZXJhdGVfcmVjaXBlX2xpc3QiOgorICAgICAgICBnZW5lcmF0ZV9yZWNpcGVfbGlzdCgpCisgICAgZWxpZiBhcmd2WzBdID09ICJjb21wYXJlX3JlY2lwZSI6CisgICAgICAgIGRpZmZfZm9yX25ld19yZWNpcGVzKGFyZ3ZbMV0sIGFyZ3ZbMl0pCisgICAgZWxzZToKKyAgICAgICAgcHJpbnQoIm5vIHN1Y2ggb3B0aW9uLiBjaG9vc2UgZWl0aGVyICdnZW5lcmF0ZV9yZWNpcGVfbGlzdCcgb3IgJ2NvbXBhcmVfcmVjaXBlJyIpCisKKyAgICBleGl0KDApCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdHJ5OgorICAgICAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6XSkpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBwcmludCgiRXhjZXB0aW9uIDoiLCBlKQorICAgICAgICBzeXMuZXhpdCgxKQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9kaXN0cm8vZGlzdHJvY29tcGFyZS5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2Rpc3Ryby9kaXN0cm9jb21wYXJlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkwODc2MGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9kaXN0cm8vZGlzdHJvY29tcGFyZS5zaApAQCAtMCwwICsxLDEyMyBAQAorIyEvdXNyL2Jpbi9lbnYgYmFzaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorIworIyBkaXN0cm9jb21wYXJlLnNoIDogcHJvdmlkZXMgY2FwYWJpbGl0eSB0byBnZXQgYSBsaXN0IG9mIG5ldyBwYWNrYWdlcworIyAgICAgICAgICAgICAgICAgICAgYmFzZWQgb24gdHdvIGRpc3RpbmN0IGJyYW5jaGVzLiBUaGlzIHNjcmlwdCB0YWtlcworIyAgICAgICAgICAgICAgICAgICAgMiBwYXJhbWV0ZXJzOyBlaXRoZXIgYSBjb21taXQtaXNoIG9yIGEgYnJhbmNoIG5hbWUKKyMKKyMgICAgICAgICAgICAgICAgICAgIFRvIHJ1biA6IGRpc3Ryb2NvbXBhcmUuc2ggPG9sZGVyIGhhc2g+IDxuZXdlciBoYXNoPgorIyAgICAgICAgICAgICAgICAgICAgRS5nLiBkaXN0cm9jb21wYXJlLnNoIG1vcnR5IDkyYWEwZTcKKyMgICAgICAgICAgICAgICAgICAgIEUuZy4gZGlzdHJvY29tcGFyZS5zaCBtb3J0eSBweXJvCisjCisKKyMgZ2V0IGlucHV0IGFzIHZlcnNpb24KK3ByZXZpb3VzX3ZlcnNpb249JDEKK2N1cnJlbnRfdmVyc2lvbj0kMgorCisjIHNldCBwcmV2aW91cyBhbmQgY3VycmVudCB2ZXJzaW9uCitpZiBbIC16ICIkMiIgXTsgdGhlbgorICAgIHByZXZpb3VzX3ZlcnNpb249JDEKKyAgICBjdXJyZW50X3ZlcnNpb249ImN1cnJlbnQiCitmaQorCisjIGdldCBzY3JpcHQgbG9jYXRpb24uIFRoYXQncyB3aGVyZSB0aGUgc291cmNlIHN1cHBvc2VkbHkgbG9jYXRlZCBhcyB3ZWxsLgorc2NyaXB0ZGlyPSIkKCByZWFscGF0aCAkKGRpcm5hbWUgIiR7QkFTSF9TT1VSQ0VbMF19IiApKSIKK3NvdXJjZWRpcj0iJCggcmVhbHBhdGggJHNjcmlwdGRpci8uLi8uLiApIgorCisjIGNyZWF0ZSB3b3JraW5nIGRpcmVjdG9yeQord29ya2Rpcj0kKG1rdGVtcCAtZCkKKworIyBwcmVwYXJlIHRvIHJvbGxiYWNrIHRvIHRoZSBicmFuY2ggaWYgbm90IHNpbWlsYXIKK2JyYW5jaD1gY2QgJHNvdXJjZWRpcjsgZ2l0IGJyYW5jaCB8IGdyZXAgXCogfCBjdXQgLWQgJyAnIC1mMmAKKworIyBzZXQgY3VycmVudCB3b3JrZGlyIHRvIHN0b3JlIGZpbmFsIHJlc3VsdAorY3VycmVudHdvcmtkaXI9YHB3ZGAKKworIyBwZXJzaXN0cyB0aGUgZmlsZSBhZnRlciBsb2NhbCByZXBvIGNoYW5nZQorY3AgJHNjcmlwdGRpci9idWlsZC1yZWNpcGUtbGlzdC5weSAkd29ya2RpcgorCisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2Z1bmN0aW9uIGJha2VfZGlzdHJvZGF0YSB7CisgICAgIyBnZXQgdG8gc291cmNlIGRpcmVjdG9yeSBvZiB0aGUgZ2l0CisgICAgY2QgJHNvdXJjZWRpcgorCisgICAgIyBjaGFuZ2UgdGhlIGJyYW5jaCAvIGNvbW1pdC4gRG8gbm90IGNoYW5nZSBpZiBpbnB1dCBpcyBjdXJyZW50CisgICAgaWYgWyAiJDEiICE9ICJjdXJyZW50IiBdOyB0aGVuCisgICAgICAgIG91dHB1dD0kKGdpdCBjaGVja291dCAkMSAyPiYxKQorCisgICAgICAgICMgZXhpdCBpZiBnaXQgZmFpbHMKKyAgICAgICAgaWYgW1sgJG91dHB1dCA9PSAqImVycm9yIiogXV07IHRoZW4KKyAgICAgICAgICAgIGVjaG8gImdpdCBlcnJvciA6ICRvdXRwdXQiCisgICAgICAgICAgICBlY2hvICJleGl0aW5nIC4uLiAiCisgICAgICAgICAgICBybSAtcmYgJHdvcmtkaXIKKyAgICAgICAgICAgIGV4aXQKKyAgICAgICAgZmkKKyAgICBmaQorCisgICAgIyBtYWtlIHRtcCBhcyB3b3JrZGlyCisgICAgY2QgJHdvcmtkaXIKKworICAgICMgc291cmNlIG9lLWluaXQgdG8gZ2VuZXJhdGUgYSBuZXcgYnVpbGQgZm9sZGVyCisgICAgc291cmNlICRzb3VyY2VkaXIvb2UtaW5pdC1idWlsZC1lbnYgJDEKKworICAgICMgaWYgZmlsZSBhbHJlYWR5IGV4aXN0cyB3aXRoIGRpc3Ryb2RhdGEsIGRvIG5vdCBhcHBlbmQKKyAgICBpZiAhIGdyZXAgLXEgImRpc3Ryb2RhdGEiICJjb25mL2xvY2FsLmNvbmYiOyB0aGVuCisgICAgICAgICMgYWRkIGluaGVyaXQgZGlzdHJvZGF0YSB0byBsb2NhbC5jb25mIHRvIGVuYWJsZSBkaXN0cm9kYXRhIGZlYXR1cmUKKyAgICAgICAgZWNobyAnSU5IRVJJVCArPSAiZGlzdHJvZGF0YSInID4+IGNvbmYvbG9jYWwuY29uZgorICAgIGZpCisKKyAgICAjIHVzZSBmcm9tIHRtcAorICAgICR3b3JrZGlyL2J1aWxkLXJlY2lwZS1saXN0LnB5IGdlbmVyYXRlX3JlY2lwZV9saXN0Cit9CisKK2Jha2VfZGlzdHJvZGF0YSAkcHJldmlvdXNfdmVyc2lvbgorYmFrZV9kaXN0cm9kYXRhICRjdXJyZW50X3ZlcnNpb24KKworIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitjZCAkd29ya2RpcgorCisjIGNvbXBhcmUgdGhlIDIgZ2VuZXJhdGVkIHJlY2lwZS1saXN0LnR4dAorJHdvcmtkaXIvYnVpbGQtcmVjaXBlLWxpc3QucHkgY29tcGFyZV9yZWNpcGUgJHByZXZpb3VzX3ZlcnNpb24gJGN1cnJlbnRfdmVyc2lvbgorCisjIGNvcHkgZmluYWwgcmVzdWx0IHRvIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKK2NwICR3b3JrZGlyLypfbmV3X3JlY2lwZV9saXN0LnR4dCAkY3VycmVudHdvcmtkaXIKKworaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisgICAgcm0gLXJmICR3b3JrZGlyLyRwcmV2aW91c192ZXJzaW9uCisgICAgcm0gLXJmICR3b3JrZGlyLyRjdXJyZW50X3ZlcnNpb24KKyAgICBybSAkd29ya2Rpci9idWlsZC1yZWNpcGUtbGlzdC5weQorICAgICMgcHJlc2VydmUgdGhlIHJlc3VsdCBpbiAvdG1wL2Rpc3Ryb2RhdGEgaWYgZmFpbCB0byBjb3B5IHRoZSByZXN1bHQgb3ZlcgorICAgIGV4aXQKK2ZpCisKKyMgY2xlYW51cAorcm0gLXJmICR3b3JrZGlyCisKKyMgcGVyZm9ybSByb2xsYmFjayBicmFuY2gKK2NkICRzb3VyY2VkaXIKK2N1cnJlbnRicmFuY2g9YGdpdCBicmFuY2ggfCBncmVwIFwqIHwgY3V0IC1kICcgJyAtZjJgCitpZiBbICIkY3VycmVudGJyYW5jaCIgIT0gIiRicmFuY2giIF07IHRoZW4KKyAgICBnaXQgY2hlY2tvdXQgJGJyYW5jaAorZmkKKworY2QgJGN1cnJlbnR3b3JrZGlyCisKKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3AvX19pbml0X18ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmJiNmUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3AvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jCi0jIFlvY3RvIEJTUCB0b29scyBsaWJyYXJ5Ci0jCi0jIENvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyBBVVRIT1JTCi0jIFRvbSBaYW51c3NpIDx0b20uemFudXNzaSAoYXRdIGludGVsLmNvbT4KLSMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3AvZW5naW5lLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9lbmdpbmUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YTE1YmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9lbmdpbmUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMxICswLDAgQEAKLSMgZXg6dHM9NDpzdz00OnN0cz00OmV0Ci0jIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyBERVNDUklQVElPTgotIyBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSB0ZW1wbGF0aW5nIGVuZ2luZSB1c2VkIGJ5ICd5b2N0by1ic3AnIHRvCi0jIGNyZWF0ZSBCU1BzLiAgVGhlIEJTUCB0ZW1wbGF0ZXMgYXJlIHNpbXBseSB0aGUgc2V0IG9mIGZpbGVzIGV4cGVjdGVkCi0jIHRvIGFwcGVhciBpbiBhIGdlbmVyYXRlZCBCU1AsIG1hcmtlZCB1cCB3aXRoIGEgc21hbGwgc2V0IG9mIHRhZ3MKLSMgdXNlZCB0byBjdXN0b21pemUgdGhlIG91dHB1dC4gIFRoZSBlbmdpbmUgcGFyc2VzIHRocm91Z2ggdGhlCi0jIHRlbXBsYXRlcyBhbmQgZ2VuZXJhdGVzIGEgUHl0aG9uIHByb2dyYW0gY29udGFpbmluZyBhbGwgdGhlIGxvZ2ljCi0jIGFuZCBpbnB1dCBlbGVtZW50cyBuZWVkZWQgdG8gZGlzcGxheSBhbmQgcmV0cmlldmUgQlNQLXNwZWNpZmljCi0jIGluZm9ybWF0aW9uIGZyb20gdGhlIHVzZXIuICBUaGUgcmVzdWx0aW5nIHByb2dyYW0gdXNlcyB0aG9zZSByZXN1bHRzCi0jIHRvIGdlbmVyYXRlIHRoZSBmaW5hbCBCU1AgZmlsZXMuCi0jCi0jIEFVVEhPUlMKLSMgVG9tIFphbnVzc2kgPHRvbS56YW51c3NpIChhdF0gaW50ZWwuY29tPgotIwotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAotZnJvbSAudGFncyBpbXBvcnQgKgotaW1wb3J0IHNobGV4Ci1pbXBvcnQganNvbgotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzaHV0aWwKLQotY2xhc3MgTGluZShtZXRhY2xhc3M9QUJDTWV0YSk6Ci0gICAgIiIiCi0gICAgR2VuZXJpYyAoYWJzdHJhY3QpIGNvbnRhaW5lciByZXByZXNlbnRpbmcgYSBsaW5lIHRoYXQgd2lsbCBhcHBlYXIKLSAgICBpbiB0aGUgQlNQLWdlbmVyYXRpbmcgcHJvZ3JhbS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lKToKLSAgICAgICAgc2VsZi5saW5lID0gbGluZQotICAgICAgICBzZWxmLmdlbmVyYXRlZF9saW5lID0gIiIKLSAgICAgICAgc2VsZi5wcmlvID0gc3lzLm1heHNpemUKLSAgICAgICAgc2VsZi5kaXNjYXJkID0gRmFsc2UKLQotICAgIEBhYnN0cmFjdG1ldGhvZAotICAgIGRlZiBnZW4oc2VsZiwgY29udGV4dCA9IE5vbmUpOgotICAgICAgICAiIiIKLSAgICAgICAgR2VuZXJhdGUgdGhlIGZpbmFsIGV4ZWN1dGFibGUgbGluZSB0aGF0IHdpbGwgYXBwZWFyIGluIHRoZQotICAgICAgICBCU1AtZ2VuZXJhdGlvbiBwcm9ncmFtLgotICAgICAgICAiIiIKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGVzY2FwZShzZWxmLCBsaW5lKToKLSAgICAgICAgIiIiCi0gICAgICAgIEVzY2FwZSBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzIHVudGlsIEkgZmluZAotICAgICAgICBzb21ldGhpbmcgYmV0dGVyIChyZS5lc2NhcGUoKSBlc2NhcGVzIHdheSB0b28gbXVjaCkuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gbGluZS5yZXBsYWNlKCJcXCIsICJcXFxcIikucmVwbGFjZSgiXCIiLCAiXFxcIiIpLnJlcGxhY2UoIiciLCAiXFwnIikKLQotICAgIGRlZiBwYXJzZV9lcnJvcihzZWxmLCBtc2csIGxpbmVubywgbGluZSk6Ci0gICAgICAgICByYWlzZSBTeW50YXhFcnJvcigiJXM6ICVzIiAlIChtc2csIGxpbmUpKQotCi0KLWNsYXNzIE5vcm1hbExpbmUoTGluZSk6Ci0gICAgIiIiCi0gICAgQ29udGFpbmVyIGZvciBub3JtYWwgKG5vbi10YWcpIGxpbmVzLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lKToKLSAgICAgICAgTGluZS5fX2luaXRfXyhzZWxmLCBsaW5lKQotICAgICAgICBzZWxmLmlzX2ZpbGVuYW1lID0gRmFsc2UKLSAgICAgICAgc2VsZi5pc19kaXJuYW1lID0gRmFsc2UKLSAgICAgICAgc2VsZi5vdXRfZmlsZWJhc2UgPSBOb25lCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgaWYgc2VsZi5pc19maWxlbmFtZToKLSAgICAgICAgICAgIGxpbmUgPSAiY3VycmVudF9maWxlID0gXCIiICsgb3MucGF0aC5qb2luKHNlbGYub3V0X2ZpbGViYXNlLCBzZWxmLmVzY2FwZShzZWxmLmxpbmUpKSArICJcIjsgb2YgPSBvcGVuKGN1cnJlbnRfZmlsZSwgXCJ3XCIpIgotICAgICAgICBlbGlmIHNlbGYuaXNfZGlybmFtZToKLSAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRfZmlsZWJhc2UsIHNlbGYuZXNjYXBlKHNlbGYubGluZSkpCi0gICAgICAgICAgICBsaW5lID0gImlmIG5vdCBvcy5wYXRoLmV4aXN0cyhcIiIgKyBkaXJuYW1lICsgIlwiKTogb3MubWtkaXIoXCIiICsgZGlybmFtZSArICJcIikiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lID0gIm9mLndyaXRlKFwiIiArIHNlbGYuZXNjYXBlKHNlbGYubGluZSkgKyAiXFxuXCIpIgotICAgICAgICByZXR1cm4gbGluZQotCi0KLWNsYXNzIENvZGVMaW5lKExpbmUpOgotICAgICIiIgotICAgIENvbnRhaW5lciBmb3IgUHl0aG9uIGNvZGUgdGFnIGxpbmVzLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lKToKLSAgICAgICAgTGluZS5fX2luaXRfXyhzZWxmLCBsaW5lKQotCi0gICAgZGVmIGdlbihzZWxmLCBjb250ZXh0ID0gTm9uZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLmxpbmUKLQotCi1jbGFzcyBBc3NpZ25tZW50OgotICAgICIiIgotICAgIFJlcHJlc2VudGF0aW9uIG9mIGV2ZXJ5dGhpbmcgd2Uga25vdyBhYm91dCB7ez1uYW1lIH19IHRhZ3MuCi0gICAgSW5zdGFuY2VzIG9mIHRoZXNlIGFyZSB1c2VkIGJ5IEFzc2lnbm1lbnQgbGluZXMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQsIG5hbWUpOgotICAgICAgICBzZWxmLnN0YXJ0ID0gc3RhcnQKLSAgICAgICAgc2VsZi5lbmQgPSBlbmQKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotCi0KLWNsYXNzIEFzc2lnbm1lbnRMaW5lKE5vcm1hbExpbmUpOgotICAgICIiIgotICAgIENvbnRhaW5lciBmb3Igbm9ybWFsIGxpbmVzIGNvbnRhaW5pbmcgYXNzaWdubWVudCB0YWdzLiAgQXNzaWdubWVudAotICAgIHRhZ3MgbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgJ3N0YXJ0JyB2YWx1ZS4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZSk6Ci0gICAgICAgIE5vcm1hbExpbmUuX19pbml0X18oc2VsZiwgbGluZSkKLSAgICAgICAgc2VsZi5hc3NpZ25tZW50cyA9IFtdCi0KLSAgICBkZWYgYWRkX2Fzc2lnbm1lbnQoc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSk6Ci0gICAgICAgIHNlbGYuYXNzaWdubWVudHMuYXBwZW5kKEFzc2lnbm1lbnQoc3RhcnQsIGVuZCwgbmFtZSkpCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgbGluZSA9IHNlbGYuZXNjYXBlKHNlbGYubGluZSkKLQotICAgICAgICBmb3IgYXNzaWdubWVudCBpbiBzZWxmLmFzc2lnbm1lbnRzOgotICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSAiXCIgKyAiICsgYXNzaWdubWVudC5uYW1lICsgIiArIFwiIgotICAgICAgICAgICAgaWR4ID0gbGluZS5maW5kKEFTU0lHTl9UQUcpCi0gICAgICAgICAgICBsaW5lID0gbGluZVs6aWR4XSArIHJlcGxhY2VtZW50ICsgbGluZVtpZHggKyBhc3NpZ25tZW50LmVuZCAtIGFzc2lnbm1lbnQuc3RhcnQ6XQotICAgICAgICBpZiBzZWxmLmlzX2ZpbGVuYW1lOgotICAgICAgICAgICAgcmV0dXJuICJjdXJyZW50X2ZpbGUgPSBcIiIgKyBvcy5wYXRoLmpvaW4oc2VsZi5vdXRfZmlsZWJhc2UsIGxpbmUpICsgIlwiOyBvZiA9IG9wZW4oY3VycmVudF9maWxlLCBcIndcIikiCi0gICAgICAgIGVsaWYgc2VsZi5pc19kaXJuYW1lOgotICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm91dF9maWxlYmFzZSwgbGluZSkKLSAgICAgICAgICAgIHJldHVybiAiaWYgbm90IG9zLnBhdGguZXhpc3RzKFwiIiArIGRpcm5hbWUgKyAiXCIpOiBvcy5ta2RpcihcIiIgKyBkaXJuYW1lICsgIlwiKSIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAib2Yud3JpdGUoXCIiICsgbGluZSArICJcXG5cIikiCi0KLQotY2xhc3MgSW5wdXRMaW5lKExpbmUpOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yIElucHV0IGxpbmVzLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pOgotICAgICAgICBMaW5lLl9faW5pdF9fKHNlbGYsIHRhZykKLSAgICAgICAgc2VsZi5wcm9wcyA9IHByb3BzCi0gICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5wcmlvID0gaW50KHByb3BzWyJwcmlvIl0pCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHNlbGYucHJpbyA9IHN5cy5tYXhzaXplCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVwZW5kc19vbiA9IHNlbGYucHJvcHNbImRlcGVuZHMtb24iXQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRlcGVuZHNfb25fdmFsID0gc2VsZi5wcm9wc1siZGVwZW5kcy1vbi12YWwiXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vICdkZXBlbmRzLW9uLXZhbCcgZm9yICdkZXBlbmRzLW9uJyBwcm9wZXJ0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubywgc2VsZi5saW5lKQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLQotY2xhc3MgRWRpdEJveElucHV0TGluZShJbnB1dExpbmUpOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yICdlZGl0Ym94JyBJbnB1dCBsaW5lcy4KLQotICAgIHByb3BzOgotICAgICAgICBuYW1lOiBleGFtcGxlIC0gIkxvYWQgYWRkcmVzcyIKLSAgICAgICAgbXNnOiBleGFtcGxlIC0gIlBsZWFzZSBlbnRlciB0aGUgbG9hZCBhZGRyZXNzIgotICAgIHJlc3VsdDoKLSAgICAgICAgU2V0cyB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIHNwZWNpZmllZCBieSAnbmFtZScgdG8KLSAgICAgICAgd2hhdGV2ZXIgdGhlIHVzZXIgdHlwZWQuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubyk6Ci0gICAgICAgIElucHV0TGluZS5fX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgSW5wdXRMaW5lLmdlbihzZWxmLCBjb250ZXh0KQotICAgICAgICBuYW1lID0gc2VsZi5wcm9wc1sibmFtZSJdCi0gICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgc2VsZi5wYXJzZV9lcnJvcigiTm8gaW5wdXQgJ25hbWUnIHByb3BlcnR5IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYubGluZSkKLSAgICAgICAgbXNnID0gc2VsZi5wcm9wc1sibXNnIl0KLSAgICAgICAgaWYgbm90IG1zZzoKLSAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGlucHV0ICdtc2cnIHByb3BlcnR5IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYubGluZSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9IHNlbGYucHJvcHNbImRlZmF1bHQiXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9ICIiCi0KLSAgICAgICAgbXNnICs9ICIgW2RlZmF1bHQ6ICIgKyBkZWZhdWx0X2Nob2ljZSArICJdIgotCi0gICAgICAgIGxpbmUgPSBuYW1lICsgIiA9IGRlZmF1bHQoaW5wdXQoXCIiICsgbXNnICsgIiBcIiksICIgKyBuYW1lICsgIikiCi0KLSAgICAgICAgcmV0dXJuIGxpbmUKLQotCi1jbGFzcyBHaXRSZXBvRWRpdEJveElucHV0TGluZShFZGl0Qm94SW5wdXRMaW5lKToKLSAgICAiIiIKLSAgICBCYXNlIGNsYXNzIGZvciAnZWRpdGJveCcgSW5wdXQgbGluZXMgZm9yIHVzZXIgaW5wdXQgb2YgcmVtb3RlIGdpdAotICAgIHJlcG9zLiAgVGhpcyBjbGFzcyB2ZXJpZmllcyB0aGUgZXhpc3RlbmNlIGFuZCBjb25uZWN0aXZpdHkgb2YgdGhlCi0gICAgc3BlY2lmaWVkIGdpdCByZXBvLgotCi0gICAgcHJvcHM6Ci0gICAgICAgIG5hbWU6IGV4YW1wbGUgLSAiTG9hZCBhZGRyZXNzIgotICAgICAgICBtc2c6IGV4YW1wbGUgLSAiUGxlYXNlIGVudGVyIHRoZSBsb2FkIGFkZHJlc3MiCi0gICAgcmVzdWx0OgotICAgICAgICBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgc3BlY2lmaWVkIGJ5ICduYW1lJyB0bwotICAgICAgICB3aGF0ZXZlciB0aGUgdXNlciB0eXBlZC4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKToKLSAgICAgICAgRWRpdEJveElucHV0TGluZS5fX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgRWRpdEJveElucHV0TGluZS5nZW4oc2VsZiwgY29udGV4dCkKLSAgICAgICAgbmFtZSA9IHNlbGYucHJvcHNbIm5hbWUiXQotICAgICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGlucHV0ICduYW1lJyBwcm9wZXJ0eSBmb3VuZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vLCBzZWxmLmxpbmUpCi0gICAgICAgIG1zZyA9IHNlbGYucHJvcHNbIm1zZyJdCi0gICAgICAgIGlmIG5vdCBtc2c6Ci0gICAgICAgICAgICBzZWxmLnBhcnNlX2Vycm9yKCJObyBpbnB1dCAnbXNnJyBwcm9wZXJ0eSBmb3VuZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vLCBzZWxmLmxpbmUpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVmYXVsdF9jaG9pY2UgPSBzZWxmLnByb3BzWyJkZWZhdWx0Il0KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgZGVmYXVsdF9jaG9pY2UgPSAiIgotCi0gICAgICAgIG1zZyArPSAiIFtkZWZhdWx0OiAiICsgZGVmYXVsdF9jaG9pY2UgKyAiXSIKLQotICAgICAgICBsaW5lID0gbmFtZSArICIgPSBnZXRfdmVyaWZpZWRfZ2l0X3JlcG8oXCIiICsgbXNnICsgIlwiLCIgKyBuYW1lICsgIikiCi0KLSAgICAgICAgcmV0dXJuIGxpbmUKLQotCi1jbGFzcyBGaWxlRWRpdEJveElucHV0TGluZShFZGl0Qm94SW5wdXRMaW5lKToKLSAgICAiIiIKLSAgICBCYXNlIGNsYXNzIGZvciAnZWRpdGJveCcgSW5wdXQgbGluZXMgZm9yIHVzZXIgaW5wdXQgb2YgZXhpc3RpbmcKLSAgICBmaWxlcy4gIFRoaXMgY2xhc3MgdmVyaWZpZXMgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUuCi0KLSAgICBwcm9wczoKLSAgICAgICAgbmFtZTogZXhhbXBsZSAtICJMb2FkIGFkZHJlc3MiCi0gICAgICAgIG1zZzogZXhhbXBsZSAtICJQbGVhc2UgZW50ZXIgdGhlIGxvYWQgYWRkcmVzcyIKLSAgICByZXN1bHQ6Ci0gICAgICAgIFNldHMgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgJ25hbWUnIHRvCi0gICAgICAgIHdoYXRldmVyIHRoZSB1c2VyIHR5cGVkLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pOgotICAgICAgICBFZGl0Qm94SW5wdXRMaW5lLl9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubykKLQotICAgIGRlZiBnZW4oc2VsZiwgY29udGV4dCA9IE5vbmUpOgotICAgICAgICBFZGl0Qm94SW5wdXRMaW5lLmdlbihzZWxmLCBjb250ZXh0KQotICAgICAgICBuYW1lID0gc2VsZi5wcm9wc1sibmFtZSJdCi0gICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgc2VsZi5wYXJzZV9lcnJvcigiTm8gaW5wdXQgJ25hbWUnIHByb3BlcnR5IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYubGluZSkKLSAgICAgICAgbXNnID0gc2VsZi5wcm9wc1sibXNnIl0KLSAgICAgICAgaWYgbm90IG1zZzoKLSAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGlucHV0ICdtc2cnIHByb3BlcnR5IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYubGluZSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9IHNlbGYucHJvcHNbImRlZmF1bHQiXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9ICIiCi0KLSAgICAgICAgbXNnICs9ICIgW2RlZmF1bHQ6ICIgKyBkZWZhdWx0X2Nob2ljZSArICJdIgotCi0gICAgICAgIGxpbmUgPSBuYW1lICsgIiA9IGdldF92ZXJpZmllZF9maWxlKFwiIiArIG1zZyArICJcIiwiICsgbmFtZSArICIsIFRydWUpIgotCi0gICAgICAgIHJldHVybiBsaW5lCi0KLQotY2xhc3MgQm9vbGVhbklucHV0TGluZShJbnB1dExpbmUpOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yIGJvb2xlYW4gSW5wdXQgbGluZXMuCi0gICAgcHJvcHM6Ci0gICAgICAgIG5hbWU6IGV4YW1wbGUgLSAia2V5Ym9hcmQiCi0gICAgICAgIG1zZzogIGV4YW1wbGUgLSAiR290IGtleWJvYXJkPyIKLSAgICByZXN1bHQ6Ci0gICAgICAgIFNldHMgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgJ25hbWUnIHRvICJ5ZXMiIG9yICJubyIKLSAgICAgICAgZXhhbXBsZSAtIGtleWJvYXJkID0gInllcyIKLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKToKLSAgICAgICAgSW5wdXRMaW5lLl9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubykKLQotICAgIGRlZiBnZW4oc2VsZiwgY29udGV4dCA9IE5vbmUpOgotICAgICAgICBJbnB1dExpbmUuZ2VuKHNlbGYsIGNvbnRleHQpCi0gICAgICAgIG5hbWUgPSBzZWxmLnByb3BzWyJuYW1lIl0KLSAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICBzZWxmLnBhcnNlX2Vycm9yKCJObyBpbnB1dCAnbmFtZScgcHJvcGVydHkgZm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubywgc2VsZi5saW5lKQotICAgICAgICBtc2cgPSBzZWxmLnByb3BzWyJtc2ciXQotICAgICAgICBpZiBub3QgbXNnOgotICAgICAgICAgICAgc2VsZi5wYXJzZV9lcnJvcigiTm8gaW5wdXQgJ21zZycgcHJvcGVydHkgZm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubywgc2VsZi5saW5lKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRlZmF1bHRfY2hvaWNlID0gc2VsZi5wcm9wc1siZGVmYXVsdCJdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGRlZmF1bHRfY2hvaWNlID0gIiIKLQotICAgICAgICBtc2cgKz0gIiBbZGVmYXVsdDogIiArIGRlZmF1bHRfY2hvaWNlICsgIl0iCi0KLSAgICAgICAgbGluZSA9IG5hbWUgKyAiID0gYm9vbGVhbihpbnB1dChcIiIgKyBtc2cgKyAiIFwiKSwgIiArIG5hbWUgKyAiKSIKLQotICAgICAgICByZXR1cm4gbGluZQotCi0KLWNsYXNzIExpc3RJbnB1dExpbmUoSW5wdXRMaW5lLCBtZXRhY2xhc3M9QUJDTWV0YSk6Ci0gICAgIiIiCi0gICAgQmFzZSBjbGFzcyBmb3IgTGlzdC1iYXNlZCBJbnB1dCBsaW5lcy4gZS5nLiBDaG9pY2VsaXN0LCBDaGVja2xpc3QuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKToKLSAgICAgICAgSW5wdXRMaW5lLl9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubykKLSAgICAgICAgc2VsZi5jaG9pY2VzID0gW10KLQotICAgIGRlZiBnZW5fY2hvaWNlcGFpcl9saXN0KHNlbGYpOgotICAgICAgICAiIiJHZW5lcmF0ZSBhIGxpc3Qgb2YgMi1pdGVtIHZhbDpkZXNjIGxpc3RzIGZyb20gc2VsZi5jaG9pY2VzLiIiIgotICAgICAgICBpZiBub3Qgc2VsZi5jaG9pY2VzOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBjaG9pY2VwYWlyX2xpc3QgPSBsaXN0KCkKLQotICAgICAgICBmb3IgY2hvaWNlIGluIHNlbGYuY2hvaWNlczoKLSAgICAgICAgICAgIGNob2ljZXBhaXIgPSBbXQotICAgICAgICAgICAgY2hvaWNlcGFpci5hcHBlbmQoY2hvaWNlLnZhbCkKLSAgICAgICAgICAgIGNob2ljZXBhaXIuYXBwZW5kKGNob2ljZS5kZXNjKQotICAgICAgICAgICAgY2hvaWNlcGFpcl9saXN0LmFwcGVuZChjaG9pY2VwYWlyKQotCi0gICAgICAgIHJldHVybiBjaG9pY2VwYWlyX2xpc3QKLQotICAgIGRlZiBnZW5fZGVnZW5lcmF0ZV9jaG9pY2VwYWlyX2xpc3Qoc2VsZiwgY2hvaWNlcyk6Ci0gICAgICAgICIiIkdlbmVyYXRlIGEgbGlzdCBvZiAyLWl0ZW0gdmFsOmRlc2Mgd2l0aCB2YWw9ZGVzYyBmcm9tIHBhc3NlZC1pbiBjaG9pY2VzLiIiIgotICAgICAgICBjaG9pY2VwYWlyX2xpc3QgPSBsaXN0KCkKLQotICAgICAgICBmb3IgY2hvaWNlIGluIGNob2ljZXM6Ci0gICAgICAgICAgICBjaG9pY2VwYWlyID0gW10KLSAgICAgICAgICAgIGNob2ljZXBhaXIuYXBwZW5kKGNob2ljZSkKLSAgICAgICAgICAgIGNob2ljZXBhaXIuYXBwZW5kKGNob2ljZSkKLSAgICAgICAgICAgIGNob2ljZXBhaXJfbGlzdC5hcHBlbmQoY2hvaWNlcGFpcikKLQotICAgICAgICByZXR1cm4gY2hvaWNlcGFpcl9saXN0Ci0KLSAgICBkZWYgZXhlY19saXN0Z2VuX2ZuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIEV4ZWN1dGUgdGhlIGxpc3QtZ2VuZXJhdGluZyBmdW5jdGlvbiBjb250YWluZWQgYXMgYSBzdHJpbmcgaW4KLSAgICAgICAgdGhlICJnZW4iIHByb3BlcnR5LgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dmFsID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmbmFtZSA9IHNlbGYucHJvcHNbImdlbiJdCi0gICAgICAgICAgICBtb2RzcGxpdCA9IGZuYW1lLnNwbGl0KCcuJykKLSAgICAgICAgICAgIG1vZF9mbiA9IG1vZHNwbGl0LnBvcCgpCi0gICAgICAgICAgICBtb2QgPSAnLicuam9pbihtb2RzcGxpdCkKLQotICAgICAgICAgICAgX19pbXBvcnRfXyhtb2QpCi0gICAgICAgICAgICAjIHB5dGhvbiAyLjcgaGFzIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzIHVzaW5nIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlCi0gICAgICAgICAgICBtID0gc3lzLm1vZHVsZXNbbW9kXQotCi0gICAgICAgICAgICBmbiA9IGdldGF0dHIobSwgbW9kX2ZuKQotICAgICAgICAgICAgaWYgbm90IGZuOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoImNvdWxkbid0IGxvYWQgZnVuY3Rpb24gc3BlY2lmaWVkIGZvciAnZ2VuJyBwcm9wZXJ0eSAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYubGluZSkKLSAgICAgICAgICAgIHJldHZhbCA9IGZuKGNvbnRleHQpCi0gICAgICAgICAgICBpZiBub3QgcmV0dmFsOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoImZ1bmN0aW9uIHNwZWNpZmllZCBmb3IgJ2dlbicgcHJvcGVydHkgcmV0dXJuZWQgbm90aGluZyAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYubGluZSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIHJldHVybiByZXR2YWwKLQotICAgIGRlZiBnZW5fY2hvaWNlc19zdHIoc2VsZiwgY2hvaWNlcGFpcnMpOgotICAgICAgICAiIiIKLSAgICAgICAgR2VuZXJhdGUgYSBudW1iZXJlZCBsaXN0IG9mIGNob2ljZXMgZnJvbSBhIGxpc3Qgb2YgY2hvaWNlcGFpcnMKLSAgICAgICAgZm9yIGRpc3BsYXkgdG8gdGhlIHVzZXIuCi0gICAgICAgICIiIgotICAgICAgICBjaG9pY2VzX3N0ciA9ICIiCi0KLSAgICAgICAgZm9yIGksIGNob2ljZXBhaXIgaW4gZW51bWVyYXRlKGNob2ljZXBhaXJzKToKLSAgICAgICAgICAgIGNob2ljZXNfc3RyICs9ICJcdCIgKyBzdHIoaSArIDEpICsgIikgIiArIGNob2ljZXBhaXJbMV0gKyAiXG4iCi0KLSAgICAgICAgcmV0dXJuIGNob2ljZXNfc3RyCi0KLSAgICBkZWYgZ2VuX2Nob2ljZXNfdmFsX3N0cihzZWxmLCBjaG9pY2VwYWlycyk6Ci0gICAgICAgICIiIgotICAgICAgICBHZW5lcmF0ZSBhbiBhcnJheSBvZiBjaG9pY2UgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCi0gICAgICAgIG51bWJlcmVkIGxpc3QgZ2VuZXJhdGVkIGJ5IGdlbl9jaG9pY2VzX3N0cigpLgotICAgICAgICAiIiIKLSAgICAgICAgY2hvaWNlc192YWxfbGlzdCA9ICJbIgotCi0gICAgICAgIGZvciBpLCBjaG9pY2VwYWlyIGluIGVudW1lcmF0ZShjaG9pY2VwYWlycyk6Ci0gICAgICAgICAgICBjaG9pY2VzX3ZhbF9saXN0ICs9ICJcIiIgKyBjaG9pY2VwYWlyWzBdICsgIlwiLCIKLSAgICAgICAgY2hvaWNlc192YWxfbGlzdCArPSAiXSIKLQotICAgICAgICByZXR1cm4gY2hvaWNlc192YWxfbGlzdAotCi0gICAgZGVmIGdlbl9jaG9pY2VzX3ZhbF9saXN0KHNlbGYsIGNob2ljZXBhaXJzKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdlbmVyYXRlIGFuIGFycmF5IG9mIGNob2ljZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUKLSAgICAgICAgbnVtYmVyZWQgbGlzdCBnZW5lcmF0ZWQgYnkgZ2VuX2Nob2ljZXNfc3RyKCkuCi0gICAgICAgICIiIgotICAgICAgICBjaG9pY2VzX3ZhbF9saXN0ID0gW10KLQotICAgICAgICBmb3IgaSwgY2hvaWNlcGFpciBpbiBlbnVtZXJhdGUoY2hvaWNlcGFpcnMpOgotICAgICAgICAgICAgY2hvaWNlc192YWxfbGlzdC5hcHBlbmQoY2hvaWNlcGFpclswXSkKLQotICAgICAgICByZXR1cm4gY2hvaWNlc192YWxfbGlzdAotCi0gICAgZGVmIGdlbl9jaG9pY2VzX2xpc3Qoc2VsZiwgY29udGV4dCA9IE5vbmUsIGNoZWNrbGlzdCA9IEZhbHNlKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdlbmVyYXRlIGFuIGFycmF5IG9mIGNob2ljZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUKLSAgICAgICAgbnVtYmVyZWQgbGlzdCBnZW5lcmF0ZWQgYnkgZ2VuX2Nob2ljZXNfc3RyKCkuCi0gICAgICAgICIiIgotICAgICAgICBjaG9pY2VzID0gc2VsZi5leGVjX2xpc3RnZW5fZm4oY29udGV4dCkKLSAgICAgICAgaWYgY2hvaWNlczoKLSAgICAgICAgICAgIGlmIGxlbihjaG9pY2VzKSA9PSAwOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGVudHJpZXMgYXZhaWxhYmxlIGZvciBpbnB1dCBsaXN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vLCBzZWxmLmxpbmUpCi0gICAgICAgICAgICBjaG9pY2VwYWlycyA9IHNlbGYuZ2VuX2RlZ2VuZXJhdGVfY2hvaWNlcGFpcl9saXN0KGNob2ljZXMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBsZW4oc2VsZi5jaG9pY2VzKSA9PSAwOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGVudHJpZXMgYXZhaWxhYmxlIGZvciBpbnB1dCBsaXN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vLCBzZWxmLmxpbmUpCi0gICAgICAgICAgICBjaG9pY2VwYWlycyA9IHNlbGYuZ2VuX2Nob2ljZXBhaXJfbGlzdCgpCi0KLSAgICAgICAgcmV0dXJuIGNob2ljZXBhaXJzCi0KLSAgICBkZWYgZ2VuX2Nob2ljZXMoc2VsZiwgY29udGV4dCA9IE5vbmUsIGNoZWNrbGlzdCA9IEZhbHNlKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdlbmVyYXRlIGFuIGFycmF5IG9mIGNob2ljZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUKLSAgICAgICAgbnVtYmVyZWQgbGlzdCBnZW5lcmF0ZWQgYnkgZ2VuX2Nob2ljZXNfc3RyKCksIGRpc3BsYXkgaXQgdG8KLSAgICAgICAgdGhlIHVzZXIsIGFuZCBwcm9jZXNzIHRoZSByZXN1bHQuCi0gICAgICAgICIiIgotICAgICAgICBtc2cgPSBzZWxmLnByb3BzWyJtc2ciXQotICAgICAgICBpZiBub3QgbXNnOgotICAgICAgICAgICAgc2VsZi5wYXJzZV9lcnJvcigiTm8gaW5wdXQgJ21zZycgcHJvcGVydHkgZm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubywgc2VsZi5saW5lKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRlZmF1bHRfY2hvaWNlID0gc2VsZi5wcm9wc1siZGVmYXVsdCJdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGRlZmF1bHRfY2hvaWNlID0gIiIKLQotICAgICAgICBtc2cgKz0gIiBbZGVmYXVsdDogIiArIGRlZmF1bHRfY2hvaWNlICsgIl0iCi0KLSAgICAgICAgY2hvaWNlcGFpcnMgPSBzZWxmLmdlbl9jaG9pY2VzX2xpc3QoY29udGV4dCwgY2hlY2tsaXN0KQotCi0gICAgICAgIGNob2ljZXNfc3RyID0gc2VsZi5nZW5fY2hvaWNlc19zdHIoY2hvaWNlcGFpcnMpCi0gICAgICAgIGNob2ljZXNfdmFsX2xpc3QgPSBzZWxmLmdlbl9jaG9pY2VzX3ZhbF9saXN0KGNob2ljZXBhaXJzKQotICAgICAgICBpZiBjaGVja2xpc3Q6Ci0gICAgICAgICAgICBjaG9pY2V2YWwgPSBkZWZhdWx0KGZpbmRfY2hvaWNldmFscyhpbnB1dChtc2cgKyAiXG4iICsgY2hvaWNlc19zdHIpLCBjaG9pY2VzX3ZhbF9saXN0KSwgZGVmYXVsdF9jaG9pY2UpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjaG9pY2V2YWwgPSBkZWZhdWx0KGZpbmRfY2hvaWNldmFsKGlucHV0KG1zZyArICJcbiIgKyBjaG9pY2VzX3N0ciksIGNob2ljZXNfdmFsX2xpc3QpLCBkZWZhdWx0X2Nob2ljZSkKLQotICAgICAgICByZXR1cm4gY2hvaWNldmFsCi0KLQotZGVmIGZpbmRfY2hvaWNldmFsKGNob2ljZV9zdHIsIGNob2ljZV9saXN0KToKLSAgICAiIiIKLSAgICBUYWtlIG51bWJlciBhcyBzdHJpbmcgYW5kIHJldHVybiB2YWwgc3RyaW5nIGZyb20gY2hvaWNlX2xpc3QsCi0gICAgZW1wdHkgc3RyaW5nIGlmIG9vYi4gIGNob2ljZV9saXN0IGlzIGEgc2ltcGxlIHB5dGhvbiBsaXN0LgotICAgICIiIgotICAgIGNob2ljZV92YWwgPSAiIgotCi0gICAgdHJ5OgotICAgICAgICBjaG9pY2VfaWR4ID0gaW50KGNob2ljZV9zdHIpCi0gICAgICAgIGlmIGNob2ljZV9pZHggPD0gbGVuKGNob2ljZV9saXN0KToKLSAgICAgICAgICAgIGNob2ljZV9pZHggLT0gMQotICAgICAgICAgICAgY2hvaWNlX3ZhbCA9IGNob2ljZV9saXN0W2Nob2ljZV9pZHhdCi0gICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgIHBhc3MKLQotICAgIHJldHVybiBjaG9pY2VfdmFsCi0KLQotZGVmIGZpbmRfY2hvaWNldmFscyhjaG9pY2Vfc3RyLCBjaG9pY2VfbGlzdCk6Ci0gICAgIiIiCi0gICAgVGFrZSBudW1iZXJzIGFzIHNwYWNlLXNlcGFyYXRlZCBzdHJpbmcgYW5kIHJldHVybiB2YWxzIGxpc3QgZnJvbQotICAgIGNob2ljZV9saXN0LCBlbXB0eSBsaXN0IGlmIG9vYi4gIGNob2ljZV9saXN0IGlzIGEgc2ltcGxlIHB5dGhvbgotICAgIGxpc3QuCi0gICAgIiIiCi0gICAgY2hvaWNlX3ZhbHMgPSBbXQotCi0gICAgY2hvaWNlcyA9IGNob2ljZV9zdHIuc3BsaXQoKQotICAgIGZvciBjaG9pY2UgaW4gY2hvaWNlczoKLSAgICAgICAgY2hvaWNlX3ZhbHMuYXBwZW5kKGZpbmRfY2hvaWNldmFsKGNob2ljZSwgY2hvaWNlX2xpc3QpKQotCi0gICAgcmV0dXJuIGNob2ljZV92YWxzCi0KLQotZGVmIGRlZmF1bHQoaW5wdXRfc3RyLCBuYW1lKToKLSAgICAiIiIKLSAgICBSZXR1cm4gZGVmYXVsdCBpZiBubyBpbnB1dF9zdHIsIG90aGVyd2lzZSBzdHJpcHBlZCBpbnB1dF9zdHIuCi0gICAgIiIiCi0gICAgaWYgbm90IGlucHV0X3N0cjoKLSAgICAgICAgcmV0dXJuIG5hbWUKLQotICAgIHJldHVybiBpbnB1dF9zdHIuc3RyaXAoKQotCi0KLWRlZiB2ZXJpZnlfZ2l0X3JlcG8oZ2l0dXJsKToKLSAgICAiIiIKLSAgICBWZXJpZnkgdGhhdCB0aGUgZ2l0dXJsIHBhc3NlZCBpbiBjYW4gYmUgY29ubmVjdGVkIHRvLiAgVGhpcyBjYW4gYmUKLSAgICB1c2VkIGFzIGEgY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGdpdmVuIHJlcG8gYW5kL29yIGJhc2ljCi0gICAgZ2l0IHJlbW90ZSBjb25uZWN0aXZpdHkuCi0KLSAgICBSZXR1cm5zIFRydWUgaWYgdGhlIGNvbm5lY3Rpb24gd2FzIHN1Y2Nlc3NmdWwsIGZhbHMgb3RoZXJ3aXNlCi0gICAgIiIiCi0gICAgaWYgbm90IGdpdHVybDoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBnaXRjbWQgPSAiZ2l0IGxzLXJlbW90ZSAlcyA+IC9kZXYvbnVsbCAyPiYxIiAlIChnaXR1cmwpCi0gICAgcmMgPSBzdWJwcm9jZXNzLmNhbGwoZ2l0Y21kLCBzaGVsbD1UcnVlKQotICAgIGlmIHJjID09IDA6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgZ2V0X3ZlcmlmaWVkX2dpdF9yZXBvKGlucHV0X3N0ciwgbmFtZSk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGdpdCByZXBvIGlmIHZlcmlmaWVkLCBvdGhlcndpc2UgbG9vcCBmb3JldmVyIGFza2luZyB1c2VyCi0gICAgZm9yIGZpbGVuYW1lLgotICAgICIiIgotICAgIG1zZyA9IGlucHV0X3N0ci5zdHJpcCgpICsgIiAiCi0KLSAgICBnaXR1cmwgPSBkZWZhdWx0KGlucHV0KG1zZyksIG5hbWUpCi0KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBpZiB2ZXJpZnlfZ2l0X3JlcG8oZ2l0dXJsKToKLSAgICAgICAgICAgIHJldHVybiBnaXR1cmwKLSAgICAgICAgZ2l0dXJsID0gZGVmYXVsdChpbnB1dChtc2cpLCBuYW1lKQotCi0KLWRlZiBnZXRfdmVyaWZpZWRfZmlsZShpbnB1dF9zdHIsIG5hbWUsIGZpbGVuYW1lX2Nhbl9iZV9udWxsKToKLSAgICAiIiIKLSAgICBSZXR1cm4gZmlsZW5hbWUgaWYgdGhlIGZpbGUgZXhpc3RzLCBvdGhlcndpc2UgbG9vcCBmb3JldmVyIGFza2luZwotICAgIHVzZXIgZm9yIGZpbGVuYW1lLgotICAgICIiIgotICAgIG1zZyA9IGlucHV0X3N0ci5zdHJpcCgpICsgIiAiCi0KLSAgICBmaWxlbmFtZSA9IGRlZmF1bHQoaW5wdXQobXNnKSwgbmFtZSkKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGlmIG5vdCBmaWxlbmFtZSBhbmQgZmlsZW5hbWVfY2FuX2JlX251bGw6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUpOgotICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCi0gICAgICAgIGZpbGVuYW1lID0gZGVmYXVsdChpbnB1dChtc2cpLCBuYW1lKQotCi0KLWRlZiByZXBsYWNlX2ZpbGUocmVwbGFjZV90aGlzLCB3aXRoX3RoaXMpOgotICAgICIiIgotICAgIFJlcGxhY2UgdGhlIGdpdmVuIGZpbGUgd2l0aCB0aGUgY29udGVudHMgb2YgZmlsZW5hbWUsIHJldGFpbmluZwotICAgIHRoZSBvcmlnaW5hbCBmaWxlbmFtZS4KLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIHJlcGxhY2VfdGhpcy5jbG9zZSgpCi0gICAgICAgIHNodXRpbC5jb3B5KHdpdGhfdGhpcywgcmVwbGFjZV90aGlzLm5hbWUpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHBhc3MKLQotCi1kZWYgYm9vbGVhbihpbnB1dF9zdHIsIG5hbWUpOgotICAgICIiIgotICAgIFJldHVybiBsb3dlcmNhc2UgdmVyc2lvbiBvZiBmaXJzdCBjaGFyIGluIHN0cmluZywgb3IgdmFsdWUgaW4gbmFtZS4KLSAgICAiIiIKLSAgICBpZiBub3QgaW5wdXRfc3RyOgotICAgICAgICByZXR1cm4gbmFtZQotCi0gICAgc3RyID0gaW5wdXRfc3RyLmxvd2VyKCkuc3RyaXAoKQotICAgIGlmIHN0ciBhbmQgc3RyWzBdID09ICJ5IiBvciBzdHJbMF0gPT0gIm4iOgotICAgICAgICByZXR1cm4gc3RyWzBdCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIG5hbWUKLQotCi1kZWYgc3RyaXBfYmFzZShpbnB1dF9zdHIpOgotICAgICIiIgotICAgIHN0cmlwICcvYmFzZScgb2ZmIHRoZSBlbmQgb2YgaW5wdXRfc3RyLCBzbyB3ZSBjYW4gdXNlICdiYXNlJyBpbgotICAgIHRoZSBicmFuY2ggbmFtZXMgd2UgcHJlc2VudCB0byB0aGUgdXNlci4KLSAgICAiIiIKLSAgICBpZiBpbnB1dF9zdHIgYW5kIGlucHV0X3N0ci5lbmRzd2l0aCgiL2Jhc2UiKToKLSAgICAgICAgcmV0dXJuIGlucHV0X3N0cls6LWxlbigiL2Jhc2UiKV0KLSAgICByZXR1cm4gaW5wdXRfc3RyLnN0cmlwKCkKLQotCi1kZWZlcnJlZF9jaG9pY2VzID0ge30KLQotZGVmIGdlbl9jaG9pY2VzX2RlZmVyKGlucHV0X2xpbmUsIGNvbnRleHQsIGNoZWNrbGlzdCA9IEZhbHNlKToKLSAgICAiIiIKLSAgICBTYXZlIHRoZSBjb250ZXh0IGhhc2hlZCB0aGUgbmFtZSBvZiB0aGUgaW5wdXQgaXRlbSwgd2hpY2ggd2lsbCBiZQotICAgIHBhc3NlZCB0byB0aGUgZ2VuIGZ1bmN0aW9uIGxhdGVyLgotICAgICIiIgotICAgIG5hbWUgPSBpbnB1dF9saW5lLnByb3BzWyJuYW1lIl0KLQotICAgIHRyeToKLSAgICAgICAgbmFtZWFwcGVuZCA9IGlucHV0X2xpbmUucHJvcHNbIm5hbWVhcHBlbmQiXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgbmFtZWFwcGVuZCA9ICIiCi0KLSAgICB0cnk6Ci0gICAgICAgIGJyYW5jaGVzX2Jhc2UgPSBpbnB1dF9saW5lLnByb3BzWyJicmFuY2hlc19iYXNlIl0KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIGJyYW5jaGVzX2Jhc2UgPSAiIgotCi0gICAgZmlsZW5hbWUgPSBpbnB1dF9saW5lLnByb3BzWyJmaWxlbmFtZSJdCi0KLSAgICBjbG9zZXRhZ19zdGFydCA9IGZpbGVuYW1lLmZpbmQoQ0xPU0VfVEFHKQotCi0gICAgaWYgY2xvc2V0YWdfc3RhcnQgIT0gLTE6Ci0gICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbY2xvc2V0YWdfc3RhcnQgKyBsZW4oQ0xPU0VfVEFHKTpdCi0KLSAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN0cmlwKCkKLSAgICBmaWxlbmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdCi0KLSAgICBjYXB0dXJlZF9jb250ZXh0ID0gY2FwdHVyZV9jb250ZXh0KGNvbnRleHQpCi0gICAgY29udGV4dFsiZmlsZW5hbWUiXSA9IGZpbGVuYW1lCi0gICAgY2FwdHVyZWRfY29udGV4dFsiZmlsZW5hbWUiXSA9IGZpbGVuYW1lCi0gICAgY29udGV4dFsibmFtZWFwcGVuZCJdID0gbmFtZWFwcGVuZAotICAgIGNhcHR1cmVkX2NvbnRleHRbIm5hbWVhcHBlbmQiXSA9IG5hbWVhcHBlbmQKLSAgICBjb250ZXh0WyJicmFuY2hlc19iYXNlIl0gPSBicmFuY2hlc19iYXNlCi0gICAgY2FwdHVyZWRfY29udGV4dFsiYnJhbmNoZXNfYmFzZSJdID0gYnJhbmNoZXNfYmFzZQotCi0gICAgZGVmZXJyZWRfY2hvaWNlID0gKGlucHV0X2xpbmUsIGNhcHR1cmVkX2NvbnRleHQsIGNoZWNrbGlzdCkKLSAgICBrZXkgPSBuYW1lICsgIl8iICsgZmlsZW5hbWUgKyAiXyIgKyBuYW1lYXBwZW5kCi0gICAgZGVmZXJyZWRfY2hvaWNlc1trZXldID0gZGVmZXJyZWRfY2hvaWNlCi0KLQotZGVmIGludm9rZV9kZWZlcnJlZF9jaG9pY2VzKG5hbWUpOgotICAgICIiIgotICAgIEludm9rZSB0aGUgY2hvaWNlIGdlbmVyYXRpb24gZnVuY3Rpb24gdXNpbmcgdGhlIGNvbnRleHQgaGFzaGVkIGJ5Ci0gICAgJ25hbWUnLgotICAgICIiIgotICAgIGRlZmVycmVkX2Nob2ljZSA9IGRlZmVycmVkX2Nob2ljZXNbbmFtZV0KLSAgICBpbnB1dF9saW5lID0gZGVmZXJyZWRfY2hvaWNlWzBdCi0gICAgY29udGV4dCA9IGRlZmVycmVkX2Nob2ljZVsxXQotICAgIGNoZWNrbGlzdCA9IGRlZmVycmVkX2Nob2ljZVsyXQotCi0gICAgY29udGV4dFsibmFtZSJdID0gbmFtZQotCi0gICAgY2hvaWNlcyA9IGlucHV0X2xpbmUuZ2VuX2Nob2ljZXMoY29udGV4dCwgY2hlY2tsaXN0KQotCi0gICAgcmV0dXJuIGNob2ljZXMKLQotCi1jbGFzcyBDaG9pY2VsaXN0SW5wdXRMaW5lKExpc3RJbnB1dExpbmUpOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yIGNob2ljZWxpc3QgSW5wdXQgbGluZXMuCi0gICAgcHJvcHM6Ci0gICAgICAgIG5hbWU6IGV4YW1wbGUgLSAieHNlcnZlcl9jaG9pY2UiCi0gICAgICAgIG1zZzogIGV4YW1wbGUgLSAiUGxlYXNlIHNlbGVjdCBhbiB4c2VydmVyIGZvciB0aGlzIG1hY2hpbmUiCi0gICAgcmVzdWx0OgotICAgICAgICBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgc3BlY2lmaWVkIGJ5ICduYW1lJyB0byB3aGljaGV2ZXIgQ2hvaWNlIHdhcyBjaG9zZW4KLSAgICAgICAgZXhhbXBsZSAtIHhzZXJ2ZXJfY2hvaWNlID0gInhzZXJ2ZXJfdmVzYSIKLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKToKLSAgICAgICAgTGlzdElucHV0TGluZS5fX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgSW5wdXRMaW5lLmdlbihzZWxmLCBjb250ZXh0KQotCi0gICAgICAgIGdlbl9jaG9pY2VzX2RlZmVyKHNlbGYsIGNvbnRleHQpCi0gICAgICAgIG5hbWUgPSBzZWxmLnByb3BzWyJuYW1lIl0KLSAgICAgICAgbmFtZWFwcGVuZCA9IGNvbnRleHRbIm5hbWVhcHBlbmQiXQotICAgICAgICBmaWxlbmFtZSA9IGNvbnRleHRbImZpbGVuYW1lIl0KLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9IHNlbGYucHJvcHNbImRlZmF1bHQiXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9ICIiCi0KLSAgICAgICAgbGluZSA9IG5hbWUgKyAiID0gZGVmYXVsdChpbnZva2VfZGVmZXJyZWRfY2hvaWNlcyhcIiIgKyBuYW1lICsgIl8iICsgZmlsZW5hbWUgKyAiXyIgKyBuYW1lYXBwZW5kICsgIlwiKSwgXCIiICsgZGVmYXVsdF9jaG9pY2UgKyAiXCIpIgotCi0gICAgICAgIHJldHVybiBsaW5lCi0KLQotY2xhc3MgTGlzdFZhbElucHV0TGluZShJbnB1dExpbmUpOgotICAgICIiIgotICAgIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGNob2ljZSBhbmQgY2hlY2tib3ggSW5wdXQgbGluZXMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubyk6Ci0gICAgICAgIElucHV0TGluZS5fX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi52YWwgPSBzZWxmLnByb3BzWyJ2YWwiXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBzZWxmLnBhcnNlX2Vycm9yKCJObyBpbnB1dCAndmFsJyBwcm9wZXJ0eSBmb3VuZCIsIHNlbGYubGluZW5vLCBzZWxmLmxpbmUpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5kZXNjID0gc2VsZi5wcm9wc1sibXNnIl0KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgc2VsZi5wYXJzZV9lcnJvcigiTm8gaW5wdXQgJ21zZycgcHJvcGVydHkgZm91bmQiLCBzZWxmLmxpbmVubywgc2VsZi5saW5lKQotCi0KLWNsYXNzIENob2ljZUlucHV0TGluZShMaXN0VmFsSW5wdXRMaW5lKToKLSAgICAiIiIKLSAgICBCYXNlIGNsYXNzIGZvciBjaG9pY2VsaXN0IGl0ZW0gSW5wdXQgbGluZXMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubyk6Ci0gICAgICAgIExpc3RWYWxJbnB1dExpbmUuX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKQotCi0gICAgZGVmIGdlbihzZWxmLCBjb250ZXh0ID0gTm9uZSk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLQotY2xhc3MgQ2hlY2tsaXN0SW5wdXRMaW5lKExpc3RJbnB1dExpbmUpOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yIGNoZWNrbGlzdCBJbnB1dCBsaW5lcy4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKToKLSAgICAgICAgTGlzdElucHV0TGluZS5fX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgSW5wdXRMaW5lLmdlbihzZWxmLCBjb250ZXh0KQotCi0gICAgICAgIGdlbl9jaG9pY2VzX2RlZmVyKHNlbGYsIGNvbnRleHQsIFRydWUpCi0gICAgICAgIG5hbWUgPSBzZWxmLnByb3BzWyJuYW1lIl0KLSAgICAgICAgbmFtZWFwcGVuZCA9IGNvbnRleHRbIm5hbWVhcHBlbmQiXQotICAgICAgICBmaWxlbmFtZSA9IGNvbnRleHRbImZpbGVuYW1lIl0KLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9IHNlbGYucHJvcHNbImRlZmF1bHQiXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9ICIiCi0KLSAgICAgICAgbGluZSA9IG5hbWUgKyAiID0gZGVmYXVsdChpbnZva2VfZGVmZXJyZWRfY2hvaWNlcyhcIiIgKyBuYW1lICsgIl8iICsgZmlsZW5hbWUgKyAiXyIgKyBuYW1lYXBwZW5kICsgIlwiKSwgXCIiICsgZGVmYXVsdF9jaG9pY2UgKyAiXCIpIgotCi0gICAgICAgIHJldHVybiBsaW5lCi0KLQotY2xhc3MgQ2hlY2tJbnB1dExpbmUoTGlzdFZhbElucHV0TGluZSk6Ci0gICAgIiIiCi0gICAgQmFzZSBjbGFzcyBmb3IgY2hlY2tsaXN0IGl0ZW0gSW5wdXQgbGluZXMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubyk6Ci0gICAgICAgIExpc3RWYWxJbnB1dExpbmUuX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKQotCi0gICAgZGVmIGdlbihzZWxmLCBjb250ZXh0ID0gTm9uZSk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLQotZGlybmFtZV9zdWJzdGl0dXRpb25zID0ge30KLQotY2xhc3MgU3Vic3RyYXRlQmFzZShvYmplY3QpOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yIGJvdGggZXhwYW5kZWQgYW5kIHVuZXhwYW5kZWQgZmlsZSBhbmQgZGlyIGNvbnRhaW5lcgotICAgIG9iamVjdHMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBmaWxlYmFzZSwgb3V0X2ZpbGViYXNlKToKLSAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCi0gICAgICAgIHNlbGYuZmlsZWJhc2UgPSBmaWxlYmFzZQotICAgICAgICBzZWxmLnRyYW5zbGF0ZWRfZmlsZW5hbWUgPSBmaWxlbmFtZQotICAgICAgICBzZWxmLm91dF9maWxlYmFzZSA9IG91dF9maWxlYmFzZQotICAgICAgICBzZWxmLnJhd19saW5lcyA9IFtdCi0gICAgICAgIHNlbGYuZXhwYW5kZWRfbGluZXMgPSBbXQotICAgICAgICBzZWxmLnByZXZfY2hvaWNlbGlzdCA9IE5vbmUKLQotICAgIGRlZiBwYXJzZV9lcnJvcihzZWxmLCBtc2csIGxpbmVubywgbGluZSk6Ci0gICAgICAgICByYWlzZSBTeW50YXhFcnJvcigiJXM6IFslczogJWRdOiAlcyIgJSAobXNnLCBzZWxmLmZpbGVuYW1lLCBsaW5lbm8sIGxpbmUpKQotCi0gICAgZGVmIGV4cGFuZF9pbnB1dF90YWcoc2VsZiwgdGFnLCBsaW5lbm8pOgotICAgICAgICAiIiIKLSAgICAgICAgSW5wdXQgdGFncyBjb25zaXN0IG9mIHRoZSB3b3JkICdpbnB1dCcgYXQgdGhlIGJlZ2lubmluZywKLSAgICAgICAgZm9sbG93ZWQgYnkgbmFtZTp2YWx1ZSBwcm9wZXJ0eSBwYWlycyB3aGljaCBhcmUgY29udmVydGVkIGludG8KLSAgICAgICAgYSBkaWN0aW9uYXJ5LgotICAgICAgICAiIiIKLSAgICAgICAgcHJvcHN0ciA9IHRhZ1tsZW4oSU5QVVRfVEFHKTpdCi0KLSAgICAgICAgcHJvcHMgPSBkaWN0KHByb3Auc3BsaXQoIjoiLCAxKSBmb3IgcHJvcCBpbiBzaGxleC5zcGxpdChwcm9wc3RyKSkKLSAgICAgICAgcHJvcHNbImZpbGVuYW1lIl0gPSBzZWxmLmZpbGVuYW1lCi0KLSAgICAgICAgaW5wdXRfdHlwZSA9IHByb3BzW0lOUFVUX1RZUEVfUFJPUEVSVFldCi0gICAgICAgIGlmIG5vdCBwcm9wc1tJTlBVVF9UWVBFX1BST1BFUlRZXToKLSAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGlucHV0ICd0eXBlJyBwcm9wZXJ0eSBmb3VuZCIsIGxpbmVubywgdGFnKQotCi0gICAgICAgIGlmIGlucHV0X3R5cGUgPT0gImJvb2xlYW4iOgotICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW5JbnB1dExpbmUocHJvcHMsIHRhZywgbGluZW5vKQotICAgICAgICBpZiBpbnB1dF90eXBlID09ICJlZGl0IjoKLSAgICAgICAgICAgIHJldHVybiBFZGl0Qm94SW5wdXRMaW5lKHByb3BzLCB0YWcsIGxpbmVubykKLSAgICAgICAgaWYgaW5wdXRfdHlwZSA9PSAiZWRpdC1naXQtcmVwbyI6Ci0gICAgICAgICAgICByZXR1cm4gR2l0UmVwb0VkaXRCb3hJbnB1dExpbmUocHJvcHMsIHRhZywgbGluZW5vKQotICAgICAgICBpZiBpbnB1dF90eXBlID09ICJlZGl0LWZpbGUiOgotICAgICAgICAgICAgcmV0dXJuIEZpbGVFZGl0Qm94SW5wdXRMaW5lKHByb3BzLCB0YWcsIGxpbmVubykKLSAgICAgICAgZWxpZiBpbnB1dF90eXBlID09ICJjaG9pY2VsaXN0IjoKLSAgICAgICAgICAgIHNlbGYucHJldl9jaG9pY2VsaXN0ID0gQ2hvaWNlbGlzdElucHV0TGluZShwcm9wcywgdGFnLCBsaW5lbm8pCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5wcmV2X2Nob2ljZWxpc3QKLSAgICAgICAgZWxpZiBpbnB1dF90eXBlID09ICJjaG9pY2UiOgotICAgICAgICAgICAgaWYgbm90IHNlbGYucHJldl9jaG9pY2VsaXN0OgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIkZvdW5kICdjaG9pY2UnIGlucHV0IHRhZyBidXQgbm8gcHJldmlvdXMgY2hvaWNlbGlzdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIHRhZykKLSAgICAgICAgICAgIGNob2ljZSA9IENob2ljZUlucHV0TGluZShwcm9wcywgdGFnLCBsaW5lbm8pCi0gICAgICAgICAgICBzZWxmLnByZXZfY2hvaWNlbGlzdC5jaG9pY2VzLmFwcGVuZChjaG9pY2UpCi0gICAgICAgICAgICByZXR1cm4gY2hvaWNlCi0gICAgICAgIGVsaWYgaW5wdXRfdHlwZSA9PSAiY2hlY2tsaXN0IjoKLSAgICAgICAgICAgIHJldHVybiBDaGVja2xpc3RJbnB1dExpbmUocHJvcHMsIHRhZywgbGluZW5vKQotICAgICAgICBlbGlmIGlucHV0X3R5cGUgPT0gImNoZWNrIjoKLSAgICAgICAgICAgIHJldHVybiBDaGVja0lucHV0TGluZShwcm9wcywgdGFnLCBsaW5lbm8pCi0KLSAgICBkZWYgZXhwYW5kX2Fzc2lnbm1lbnRfdGFnKHNlbGYsIHN0YXJ0LCBsaW5lLCBsaW5lbm8pOgotICAgICAgICAiIiIKLSAgICAgICAgRXhwYW5kIGFsbCB0YWdzIGluIGEgbGluZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGV4cGFuZGVkX2xpbmUgPSBBc3NpZ25tZW50TGluZShsaW5lLnJzdHJpcCgpKQotCi0gICAgICAgIHdoaWxlIHN0YXJ0ICE9IC0xOgotICAgICAgICAgICAgZW5kID0gbGluZS5maW5kKENMT1NFX1RBRywgc3RhcnQpCi0gICAgICAgICAgICBpZiBlbmQgPT0gLTE6Ci0gICAgICAgICAgICAgICAgc2VsZi5wYXJzZV9lcnJvcigiTm8gY2xvc2UgdGFnIGZvdW5kIGZvciBhc3NpZ25tZW50IHRhZyIsIGxpbmVubywgbGluZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmFtZSA9IGxpbmVbc3RhcnQgKyBsZW4oQVNTSUdOX1RBRyk6ZW5kXS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgZXhwYW5kZWRfbGluZS5hZGRfYXNzaWdubWVudChzdGFydCwgZW5kICsgbGVuKENMT1NFX1RBRyksIG5hbWUpCi0gICAgICAgICAgICAgICAgc3RhcnQgPSBsaW5lLmZpbmQoQVNTSUdOX1RBRywgZW5kKQotCi0gICAgICAgIHJldHVybiBleHBhbmRlZF9saW5lCi0KLSAgICBkZWYgZXhwYW5kX3RhZyhzZWxmLCBsaW5lLCBsaW5lbm8pOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJucyBhIHByb2Nlc3NlZCB0YWcgbGluZSwgb3IgTm9uZSBpZiB0aGVyZSB3YXMgbm8gdGFnCi0KLSAgICAgICAgVGhlIHJ1bGVzIGZvciB0YWdzIGFyZSB2ZXJ5IHNpbXBsZToKLSAgICAgICAgICAgIC0gTm8gbmVzdGVkIHRhZ3MKLSAgICAgICAgICAgIC0gVGFncyBzdGFydCB3aXRoIHt7IGFuZCBlbmQgd2l0aCB9fQotICAgICAgICAgICAgLSBBbiBhc3NpZ24gdGFnLCB7ez0sIGNhbiBhcHBlYXIgYW55d2hlcmUgYW5kIHdpbGwKLSAgICAgICAgICAgICAgYmUgcmVwbGFjZWQgd2l0aCB3aGF0IHRoZSBhc3NpZ25tZW50IGV2YWx1YXRlcyB0bwotICAgICAgICAgICAgLSBBbnkgb3RoZXIgdGFnIG9jY3VwaWVzIHRoZSB3aG9sZSBsaW5lIGl0IGlzIG9uCi0gICAgICAgICAgICAgICAgLSBpZiB0aGVyZSdzIGFueXRoaW5nIGVsc2Ugb24gdGhlIHRhZyBsaW5lLCBpdCdzIGFuIGVycm9yCi0gICAgICAgICAgICAgICAgLSBpZiBpdCBzdGFydHMgd2l0aCAnaW5wdXQnLCBpdCdzIGFuIGlucHV0IHRhZyBhbmQKLSAgICAgICAgICAgICAgICAgIHdpbGwgb25seSBiZSB1c2VkIGZvciBwcm9tcHRpbmcgYW5kIHNldHRpbmcgdmFyaWFibGVzCi0gICAgICAgICAgICAgICAgLSBhbnl0aGluZyBlbHNlIGlzIHN0cmFpZ2h0IFB5dGhvbgotICAgICAgICAgICAgICAgIC0gdGFncyBhcmUgaW4gZWZmZWN0IG9ubHkgdW50aWwgdGhlIG5leHQgYmxhbmsgbGluZSBvciB0YWcgb3IgJ3Bhc3MnIHRhZwotICAgICAgICAgICAgICAgIC0gd2UgZG9uJ3QgaGF2ZSBpbmRlbnRhdGlvbiBpbiB0YWdzLCBidXQgd2UgbmVlZCBzb21lIHdheSB0byBlbmQgYSBibG9jawotICAgICAgICAgICAgICAgICAgZm9yY2VmdWxseSB3aXRob3V0IGJsYW5rIGxpbmVzIG9yIG90aGVyIHRhZ3MgLSB0aGF0J3MgdGhlICdwYXNzJyB0YWcKLSAgICAgICAgICAgICAgICAtIHRvZG86IGltcGxlbWVudCBwYXNzIHRhZwotICAgICAgICAgICAgICAgIC0gZGlyZWN0b3JpZXMgYW5kIGZpbGVuYW1lcyBjYW4gaGF2ZSB0YWdzIGFzIHdlbGwsIGJ1dCBvbmx5IGFzc2lnbm1lbnQKLSAgICAgICAgICAgICAgICAgIGFuZCAnaWYnIGNvZGUgbGluZXMKLSAgICAgICAgICAgICAgICAtIGRpcmVjdG9yaWVzIGFuZCBmaWxlbmFtZXMgYXJlIHRoZSBvbmx5IGNhc2Ugd2hlcmUgbm9ybWFsIHRhZ3MgY2FuCi0gICAgICAgICAgICAgICAgICBjb2V4aXN0IHdpdGggbm9ybWFsIHRleHQgb24gdGhlIHNhbWUgJ2xpbmUnCi0gICAgICAgICIiIgotICAgICAgICBzdGFydCA9IGxpbmUuZmluZChBU1NJR05fVEFHKQotICAgICAgICBpZiBzdGFydCAhPSAtMToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmV4cGFuZF9hc3NpZ25tZW50X3RhZyhzdGFydCwgbGluZSwgbGluZW5vKQotCi0gICAgICAgIHN0YXJ0ID0gbGluZS5maW5kKE9QRU5fVEFHKQotICAgICAgICBpZiBzdGFydCA9PSAtMToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgZW5kID0gbGluZS5maW5kKENMT1NFX1RBRywgMCkKLSAgICAgICAgaWYgZW5kID09IC0xOgotICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGNsb3NlIHRhZyBmb3VuZCBmb3Igb3BlbiB0YWciLCBsaW5lbm8sIGxpbmUpCi0KLSAgICAgICAgdGFnID0gbGluZVtzdGFydCArIGxlbihPUEVOX1RBRyk6ZW5kXS5zdHJpcCgpCi0KLSAgICAgICAgaWYgbm90IHRhZy5sc3RyaXAoKS5zdGFydHN3aXRoKElOUFVUX1RBRyk6Ci0gICAgICAgICAgICByZXR1cm4gQ29kZUxpbmUodGFnKQotCi0gICAgICAgIHJldHVybiBzZWxmLmV4cGFuZF9pbnB1dF90YWcodGFnLCBsaW5lbm8pCi0KLSAgICBkZWYgYXBwZW5kX3RyYW5zbGF0ZWRfZmlsZW5hbWUoc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICAiIiIKLSAgICAgICAgU2ltcGx5IGFwcGVuZCBmaWxlbmFtZSB0byB0cmFuc2xhdGVkX2ZpbGVuYW1lCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnRyYW5zbGF0ZWRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi50cmFuc2xhdGVkX2ZpbGVuYW1lLCBmaWxlbmFtZSkKLQotICAgIGRlZiBnZXRfc3Vic3RpdHV0ZWRfZmlsZV9vcl9kaXJfbmFtZShzZWxmLCBmaXJzdF9saW5lLCB0YWcpOgotICAgICAgICAiIiIKLSAgICAgICAgSWYgZmlsZSBvciBkaXIgbmFtZXMgY29udGFpbiBuYW1lIHN1YnN0aXR1dGlvbnMsIHJldHVybiB0aGUgbmFtZQotICAgICAgICB0byBzdWJzdGl0dXRlLiAgTm90ZSB0aGF0IHRoaXMgaXMganVzdCB0aGUgZmlsZSBvciBkaXJuYW1lIGFuZAotICAgICAgICBkb2Vzbid0IGluY2x1ZGUgdGhlIHBhdGguCi0gICAgICAgICIiIgotICAgICAgICBmaWxlbmFtZSA9IGZpcnN0X2xpbmUuZmluZCh0YWcpCi0gICAgICAgIGlmIGZpbGVuYW1lICE9IC0xOgotICAgICAgICAgICAgZmlsZW5hbWUgKz0gbGVuKHRhZykKLSAgICAgICAgc3Vic3RpdHV0ZWRfZmlsZW5hbWUgPSBmaXJzdF9saW5lW2ZpbGVuYW1lOl0uc3RyaXAoKQotICAgICAgICB0aGlzID0gc3Vic3RpdHV0ZWRfZmlsZW5hbWUuZmluZCgiIHRoaXMiKQotICAgICAgICBpZiB0aGlzICE9IC0xOgotICAgICAgICAgICAgaGVhZCwgdGFpbCA9IG9zLnBhdGguc3BsaXQoc2VsZi5maWxlbmFtZSkKLSAgICAgICAgICAgIHN1YnN0aXR1dGVkX2ZpbGVuYW1lID0gc3Vic3RpdHV0ZWRfZmlsZW5hbWVbOnRoaXMgKyAxXSArIHRhaWwKLSAgICAgICAgICAgIGlmIHRhZyA9PSBESVJOQU1FX1RBRzogIyBnZXQgcmlkIG9mIC5ub2luc3RhbGwgaW4gZGlybmFtZQotICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVkX2ZpbGVuYW1lID0gc3Vic3RpdHV0ZWRfZmlsZW5hbWUuc3BsaXQoJy4nKVswXQotCi0gICAgICAgIHJldHVybiBzdWJzdGl0dXRlZF9maWxlbmFtZQotCi0gICAgZGVmIGdldF9zdWJzdGl0dXRlZF9maWxlbmFtZShzZWxmLCBmaXJzdF9saW5lKToKLSAgICAgICAgIiIiCi0gICAgICAgIElmIGEgZmlsZW5hbWUgY29udGFpbnMgYSBuYW1lIHN1YnN0aXR1dGlvbiwgcmV0dXJuIHRoZSBuYW1lIHRvCi0gICAgICAgIHN1YnN0aXR1dGUuICBOb3RlIHRoYXQgdGhpcyBpcyBqdXN0IHRoZSBmaWxlbmFtZSBhbmQgZG9lc24ndAotICAgICAgICBpbmNsdWRlIHRoZSBwYXRoLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X3N1YnN0aXR1dGVkX2ZpbGVfb3JfZGlyX25hbWUoZmlyc3RfbGluZSwgRklMRU5BTUVfVEFHKQotCi0gICAgZGVmIGdldF9zdWJzdGl0dXRlZF9kaXJuYW1lKHNlbGYsIGZpcnN0X2xpbmUpOgotICAgICAgICAiIiIKLSAgICAgICAgSWYgYSBkaXJuYW1lIGNvbnRhaW5zIGEgbmFtZSBzdWJzdGl0dXRpb24sIHJldHVybiB0aGUgbmFtZSB0bwotICAgICAgICBzdWJzdGl0dXRlLiAgTm90ZSB0aGF0IHRoaXMgaXMganVzdCB0aGUgZGlybmFtZSBhbmQgZG9lc24ndAotICAgICAgICBpbmNsdWRlIHRoZSBwYXRoLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X3N1YnN0aXR1dGVkX2ZpbGVfb3JfZGlyX25hbWUoZmlyc3RfbGluZSwgRElSTkFNRV9UQUcpCi0KLSAgICBkZWYgc3Vic3RpdHV0ZV9maWxlbmFtZShzZWxmLCBmaXJzdF9saW5lKToKLSAgICAgICAgIiIiCi0gICAgICAgIEZpbmQgdGhlIGZpbGVuYW1lIGluIGZpcnN0X2xpbmUgYW5kIGFwcGVuZCBpdCB0byB0cmFuc2xhdGVkX2ZpbGVuYW1lLgotICAgICAgICAiIiIKLSAgICAgICAgc3Vic3RpdHV0ZWRfZmlsZW5hbWUgPSBzZWxmLmdldF9zdWJzdGl0dXRlZF9maWxlbmFtZShmaXJzdF9saW5lKQotICAgICAgICBzZWxmLmFwcGVuZF90cmFuc2xhdGVkX2ZpbGVuYW1lKHN1YnN0aXR1dGVkX2ZpbGVuYW1lKTsKLQotICAgIGRlZiBzdWJzdGl0dXRlX2Rpcm5hbWUoc2VsZiwgZmlyc3RfbGluZSk6Ci0gICAgICAgICIiIgotICAgICAgICBGaW5kIHRoZSBkaXJuYW1lIGluIGZpcnN0X2xpbmUgYW5kIGFwcGVuZCBpdCB0byB0cmFuc2xhdGVkX2ZpbGVuYW1lLgotICAgICAgICAiIiIKLSAgICAgICAgc3Vic3RpdHV0ZWRfZGlybmFtZSA9IHNlbGYuZ2V0X3N1YnN0aXR1dGVkX2Rpcm5hbWUoZmlyc3RfbGluZSkKLSAgICAgICAgc2VsZi5hcHBlbmRfdHJhbnNsYXRlZF9maWxlbmFtZShzdWJzdGl0dXRlZF9kaXJuYW1lKTsKLQotICAgIGRlZiBpc19maWxlbmFtZV9zdWJzdGl0dXRpb24oc2VsZiwgbGluZSk6Ci0gICAgICAgICIiIgotICAgICAgICBEbyB3ZSBoYXZlIGEgZmlsZW5hbWUgc3VidXN0aXRpb24/Ci0gICAgICAgICIiIgotICAgICAgICBpZiBsaW5lLmZpbmQoRklMRU5BTUVfVEFHKSAhPSAtMToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGlzX2Rpcm5hbWVfc3Vic3RpdHV0aW9uKHNlbGYsIGxpbmUpOgotICAgICAgICAiIiIKLSAgICAgICAgRG8gd2UgaGF2ZSBhIGRpcm5hbWUgc3VidXN0aXRpb24/Ci0gICAgICAgICIiIgotICAgICAgICBpZiBsaW5lLmZpbmQoRElSTkFNRV9UQUcpICE9IC0xOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgdHJhbnNsYXRlX2Rpcm5hbWUoc2VsZiwgZmlyc3RfbGluZSk6Ci0gICAgICAgICIiIgotICAgICAgICBKdXN0IHNhdmUgdGhlIGZpcnN0X2xpbmUgbWFwcGVkIGJ5IGZpbGVuYW1lLiAgVGhlIGxhdGVyIHBhc3MKLSAgICAgICAgdGhyb3VnaCB0aGUgZGlyZWN0b3JpZXMgd2lsbCBsb29rIGZvciBhIGRpcm5hbWUubm9pbnN0YWxsCi0gICAgICAgIG1hdGNoIGFuZCBncmFiIHRoZSBzdWJzdGl0dXRpb24gbGluZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGRpcm5hbWVfc3Vic3RpdHV0aW9uc1tzZWxmLmZpbGVuYW1lXSA9IGZpcnN0X2xpbmUKLQotICAgIGRlZiB0cmFuc2xhdGVfZGlybmFtZXNfaW5fcGF0aChzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRyYW5zbGF0ZSBkaXJuYW1lcyBiZWxvdyB0aGlzIGZpbGUgb3IgZGlyLCBub3QgaW5jbHVkaW5nIHRhaWwuCi0gICAgICAgIGRpcm5hbWVfc3Vic3RpdGl0aW9ucyBpcyBrZXllZCBvbiBhY3R1YWwgdW50cmFuc2xhdGVkIGZpbGVuYW1lcy4KLSAgICAgICAgdHJhbnNsYXRlZF9wYXRoIGNvbnRhaW5zIHRoZSBzdWJzaXRpdHV0aW9ucyBmb3IgZWFjaCBlbGVtZW50LgotICAgICAgICAiIiIKLSAgICAgICAgcmVtYWluZGVyID0gcGF0aFtsZW4oc2VsZi5maWxlYmFzZSkrMTpdCi0gICAgICAgIHRyYW5zbGF0ZWRfcGF0aCA9IHVudHJhbnNsYXRlZF9wYXRoID0gc2VsZi5maWxlYmFzZQotCi0gICAgICAgIHVudHJhbnNsYXRlZF9kaXJzID0gcmVtYWluZGVyLnNwbGl0KG9zLnNlcCkKLQotICAgICAgICBmb3IgZGlyIGluIHVudHJhbnNsYXRlZF9kaXJzOgotICAgICAgICAgICAga2V5ID0gb3MucGF0aC5qb2luKHVudHJhbnNsYXRlZF9wYXRoLCBkaXIgKyAnLm5vaW5zdGFsbCcpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmlyc3RfbGluZSA9IGRpcm5hbWVfc3Vic3RpdHV0aW9uc1trZXldCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgdHJhbnNsYXRlZF9wYXRoID0gb3MucGF0aC5qb2luKHRyYW5zbGF0ZWRfcGF0aCwgZGlyKQotICAgICAgICAgICAgICAgIHVudHJhbnNsYXRlZF9wYXRoID0gb3MucGF0aC5qb2luKHVudHJhbnNsYXRlZF9wYXRoLCBkaXIpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHN1YnN0aXR1dGVkX2RpciA9IHNlbGYuZ2V0X3N1YnN0aXR1dGVkX2Rpcm5hbWUoZmlyc3RfbGluZSkKLSAgICAgICAgICAgIHRyYW5zbGF0ZWRfcGF0aCA9IG9zLnBhdGguam9pbih0cmFuc2xhdGVkX3BhdGgsIHN1YnN0aXR1dGVkX2RpcikKLSAgICAgICAgICAgIHVudHJhbnNsYXRlZF9wYXRoID0gb3MucGF0aC5qb2luKHVudHJhbnNsYXRlZF9wYXRoLCBkaXIpCi0KLSAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRfcGF0aAotCi0gICAgZGVmIHRyYW5zbGF0ZV9maWxlX29yX2Rpcl9uYW1lKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgT3JpZ2luYWxseSB3ZSB3ZXJlIGFsbG93ZWQgdG8gdXNlIG9wZW4vY2xvc2UvYXNzaWduIHRhZ3MgYW5kIHB5dGhvbgotICAgICAgICBjb2RlIGluIHRoZSBmaWxlbmFtZSwgd2hpY2ggZml0IGluIG5pY2VseSB3aXRoIHRoZSB3YXkgd2UKLSAgICAgICAgcHJvY2Vzc2VkIHRoZSB0ZW1wbGF0ZXMgYW5kIGdlbmVyYXRlZCBjb2RlLiAgTm93IHRoYXQgd2UgY2FuJ3QKLSAgICAgICAgZG8gdGhhdCwgd2UgbWFrZSB0aG9zZSB0YWdzIHByb3BlciBmaWxlIGNvbnRlbnRzIGFuZCBoYXZlIHRoaXMKLSAgICAgICAgcGFzcyBzdWJzdGl0dXRlIHRoZSBuaWNlIGJ1dCBub24tZnVuY3Rpb25hbCBuYW1lcyB3aXRoIHRob3NlCi0gICAgICAgICdzdHJhbmdlJyBvbmVzLCBhbmQgdGhlbiBwcm9jZWVkIGFzIHVzdWFsLgotCi0gICAgICAgIFNvLCBpZiBmaWxlcyBvciBtYXRjaGluZyBkaXI8Lm5vaW5zdGFsbD4gZmlsZXMgY29udGFpbgotICAgICAgICBmaWxlbmFtZSBzdWJzdGl0dXRpb25zLCB0aGlzIGZ1bmN0aW9uIHRyYW5zbGF0ZXMgdGhlbSBpbnRvIHRoZQotICAgICAgICBjb3JyZXNwb25kaW5nICdzdHJhbmdlJyBuYW1lcywgd2hpY2ggZnV0dXJlIHBhc3NlcyB3aWxsIGV4cGFuZAotICAgICAgICBhcyB0aGV5IGFsd2F5cyBoYXZlLiAgVGhlIHJlc3VsdGluZyBwYXRobmFtZSBpcyBrZXB0IGluIHRoZQotICAgICAgICBmaWxlIG9yIGRpcmVjdG9yeSdzIHRyYW5zbGF0ZWRfZmlsZW5hbWUuICBBbm90aGVyIHdheSB0byB0aGluawotICAgICAgICBhYm91dCBpdCBpcyB0aGF0IHNlbGYuZmlsZW5hbWUgaXMgdGhlIGlucHV0IGZpbGVuYW1lLCBhbmQKLSAgICAgICAgdHJhbnNsYXRlZF9maWxlbmFtZSBpcyB0aGUgb3V0cHV0IGZpbGVuYW1lIGJlZm9yZSBleHBhbnNpb24uCi0gICAgICAgICIiIgotICAgICAgICAjIHJlbW92ZSBsZWFmIGZpbGUgb3IgZGlybmFtZQotICAgICAgICBoZWFkLCB0YWlsID0gb3MucGF0aC5zcGxpdChzZWxmLmZpbGVuYW1lKQotICAgICAgICB0cmFuc2xhdGVkX3BhdGggPSBzZWxmLnRyYW5zbGF0ZV9kaXJuYW1lc19pbl9wYXRoKGhlYWQpCi0gICAgICAgIHNlbGYudHJhbnNsYXRlZF9maWxlbmFtZSA9IHRyYW5zbGF0ZWRfcGF0aAotCi0gICAgICAgICMgVGhpcyBpcyBhIGRpcm5hbWUgLSBkb2VzIGl0IGhhdmUgYSBtYXRjaGluZyAubm9pbnN0YWxsIHdpdGgKLSAgICAgICAgIyBhIHN1YnN0aXR1dGlvbj8gIElmIHNvLCBhcHBseSB0aGUgZGlybmFtZSBzdWJzaXRpdHV0aW9uLgotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoc2VsZi5maWxlbmFtZSk6Ci0gICAgICAgICAgICBrZXkgPSBzZWxmLmZpbGVuYW1lICsgIi5ub2luc3RhbGwiCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmlyc3RfbGluZSA9IGRpcm5hbWVfc3Vic3RpdHV0aW9uc1trZXldCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi5hcHBlbmRfdHJhbnNsYXRlZF9maWxlbmFtZSh0YWlsKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgc2VsZi5zdWJzdGl0dXRlX2Rpcm5hbWUoZmlyc3RfbGluZSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGYgPSBvcGVuKHNlbGYuZmlsZW5hbWUpCi0gICAgICAgIGZpcnN0X2xpbmUgPSBmLnJlYWRsaW5lKCkKLSAgICAgICAgZi5jbG9zZSgpCi0KLSAgICAgICAgIyBUaGlzIGlzIGEgbm9ybWFsIGZpbGVuYW1lIG5vdCBuZWVkaW5nIHRyYW5zbGF0aW9uLCBqdXN0IHVzZQotICAgICAgICAjIGl0IGFzLWlzLgotICAgICAgICBpZiBub3QgZmlyc3RfbGluZSBvciBub3QgZmlyc3RfbGluZS5zdGFydHN3aXRoKCIjIik6Ci0gICAgICAgICAgICBzZWxmLmFwcGVuZF90cmFuc2xhdGVkX2ZpbGVuYW1lKHRhaWwpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjIElmIHdlIGhhdmUgYSBmaWxlbmFtZSBzdWJzdGl0dXRpb24gKGZpcnN0IGxpbmUgaW4gdGhlIGZpbGUKLSAgICAgICAgIyBpcyBhIEZJTEVOQU1FX1RBRyBsaW5lKSBkbyB0aGUgc3Vic3RpdHV0aW9uIG5vdy4gIElmIHdlIGhhdmUKLSAgICAgICAgIyBhIGRpcm5hbWUgc3Vic3RpdHV0aW9uIChESVJOQU1FX1RBRyBpbiBkaXJuYW1lLm5vaW5zdGFsbAotICAgICAgICAjIG1ldGEtZmlsZSksIGhhc2ggaXQgc28gd2UgY2FuIGFwcGx5IGl0IHdoZW4gd2Ugc2VlIHRoZQotICAgICAgICAjIG1hdGNoaW5nIGRpcm5hbWUgbGF0ZXIuICBPdGhlcndpc2Ugd2UgaGF2ZSBhIHJlZ3VsYXIKLSAgICAgICAgIyBmaWxlbmFtZSwganVzdCB1c2UgaXQgYXMtaXMuCi0gICAgICAgIGlmIHNlbGYuaXNfZmlsZW5hbWVfc3Vic3RpdHV0aW9uKGZpcnN0X2xpbmUpOgotICAgICAgICAgICAgc2VsZi5zdWJzdGl0dXRlX2ZpbGVuYW1lKGZpcnN0X2xpbmUpCi0gICAgICAgIGVsaWYgc2VsZi5pc19kaXJuYW1lX3N1YnN0aXR1dGlvbihmaXJzdF9saW5lKToKLSAgICAgICAgICAgIHNlbGYudHJhbnNsYXRlX2Rpcm5hbWUoZmlyc3RfbGluZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXBwZW5kX3RyYW5zbGF0ZWRfZmlsZW5hbWUodGFpbCkKLQotICAgIGRlZiBleHBhbmRfZmlsZV9vcl9kaXJfbmFtZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIEV4cGFuZCBmaWxlIG9yIGRpciBuYW1lcyBpbnRvIGNvZGVsaW5lLiAgRGlybmFtZXMgYW5kCi0gICAgICAgIGZpbGVuYW1lcyBjYW4gb25seSBoYXZlIGFzc2lnbm1lbnRzIG9yIGlmIHN0YXRlbWVudHMuICBGaXJzdAotICAgICAgICB0cmFuc2xhdGUgaWYgc3RhdGVtZW50cyBpbnRvIENvZGVMaW5lICsgKGRpcm5hbWUgb3IgZmlsZW5hbWUKLSAgICAgICAgY3JlYXRpb24pLgotICAgICAgICAiIiIKLSAgICAgICAgbGluZW5vID0gMAotCi0gICAgICAgIGxpbmUgPSBzZWxmLnRyYW5zbGF0ZWRfZmlsZW5hbWVbbGVuKHNlbGYuZmlsZWJhc2UpOl0KLSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCIvIik6Ci0gICAgICAgICAgICBsaW5lID0gbGluZVsxOl0KLSAgICAgICAgb3BlbnRhZ19zdGFydCA9IC0xCi0KLSAgICAgICAgc3RhcnQgPSBsaW5lLmZpbmQoT1BFTl9UQUcpCi0gICAgICAgIHdoaWxlIHN0YXJ0ICE9IC0xOgotICAgICAgICAgICAgaWYgbm90IGxpbmVbc3RhcnQ6XS5zdGFydHN3aXRoKEFTU0lHTl9UQUcpOgotICAgICAgICAgICAgICAgIG9wZW50YWdfc3RhcnQgPSBzdGFydAotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBzdGFydCArPSBsZW4oQVNTSUdOX1RBRykKLSAgICAgICAgICAgIHN0YXJ0ID0gbGluZS5maW5kKE9QRU5fVEFHLCBzdGFydCkKLQotICAgICAgICBpZiBvcGVudGFnX3N0YXJ0ICE9IC0xOgotICAgICAgICAgICAgZW5kID0gbGluZS5maW5kKENMT1NFX1RBRywgb3BlbnRhZ19zdGFydCkKLSAgICAgICAgICAgIGlmIGVuZCA9PSAtMToKLSAgICAgICAgICAgICAgICBzZWxmLnBhcnNlX2Vycm9yKCJObyBjbG9zZSB0YWcgZm91bmQgZm9yIG9wZW4gdGFnIiwgbGluZW5vLCBsaW5lKQotICAgICAgICAgICAgIyB3ZSBoYXZlIGEge3sgdGFnIGkuZS4gY29kZQotICAgICAgICAgICAgdGFnID0gbGluZVtvcGVudGFnX3N0YXJ0ICsgbGVuKE9QRU5fVEFHKTplbmRdLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCB0YWcubHN0cmlwKCkuc3RhcnRzd2l0aChJRl9UQUcpOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk9ubHkgJ2lmJyB0YWdzIGFyZSBhbGxvd2VkIGluIGZpbGUgb3IgZGlyZWN0b3J5IG5hbWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgbGluZSkKLSAgICAgICAgICAgIHNlbGYuZXhwYW5kZWRfbGluZXMuYXBwZW5kKENvZGVMaW5lKHRhZykpCi0KLSAgICAgICAgICAgICMgZXZlcnl0aGluZyBhZnRlciB9fSBpcyB0aGUgYWN0dWFsIGZpbGVuYW1lIChwb3NzaWJseSB3aXRoIGFzc2lnbm1lbnRzKQotICAgICAgICAgICAgIyBldmVyeXRoaW5nIGJlZm9yZSBpcyB0aGUgcGF0aG5hbWUKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lWzpvcGVudGFnX3N0YXJ0XSArIGxpbmVbZW5kICsgbGVuKENMT1NFX1RBRyk6XS5zdHJpcCgpCi0KLSAgICAgICAgYXNzaWduX3N0YXJ0ID0gbGluZS5maW5kKEFTU0lHTl9UQUcpCi0gICAgICAgIGlmIGFzc2lnbl9zdGFydCAhPSAtMToKLSAgICAgICAgICAgIGFzc2lnbm1lbnRfdGFnID0gc2VsZi5leHBhbmRfYXNzaWdubWVudF90YWcoYXNzaWduX3N0YXJ0LCBsaW5lLCBsaW5lbm8pCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYsIFN1YnN0cmF0ZUZpbGUpOgotICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRfdGFnLmlzX2ZpbGVuYW1lID0gVHJ1ZQotICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRfdGFnLm91dF9maWxlYmFzZSA9IHNlbGYub3V0X2ZpbGViYXNlCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc2VsZiwgU3Vic3RyYXRlRGlyKToKLSAgICAgICAgICAgICAgICBhc3NpZ25tZW50X3RhZy5pc19kaXJuYW1lID0gVHJ1ZQotICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRfdGFnLm91dF9maWxlYmFzZSA9IHNlbGYub3V0X2ZpbGViYXNlCi0gICAgICAgICAgICBzZWxmLmV4cGFuZGVkX2xpbmVzLmFwcGVuZChhc3NpZ25tZW50X3RhZykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIG5vcm1hbF9saW5lID0gTm9ybWFsTGluZShsaW5lKQotICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYsIFN1YnN0cmF0ZUZpbGUpOgotICAgICAgICAgICAgbm9ybWFsX2xpbmUuaXNfZmlsZW5hbWUgPSBUcnVlCi0gICAgICAgICAgICBub3JtYWxfbGluZS5vdXRfZmlsZWJhc2UgPSBzZWxmLm91dF9maWxlYmFzZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc2VsZiwgU3Vic3RyYXRlRGlyKToKLSAgICAgICAgICAgIG5vcm1hbF9saW5lLmlzX2Rpcm5hbWUgPSBUcnVlCi0gICAgICAgICAgICBub3JtYWxfbGluZS5vdXRfZmlsZWJhc2UgPSBzZWxmLm91dF9maWxlYmFzZQotICAgICAgICBzZWxmLmV4cGFuZGVkX2xpbmVzLmFwcGVuZChub3JtYWxfbGluZSkKLQotICAgIGRlZiBleHBhbmQoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBFeHBhbmQgdGhlIGZpbGUgb3IgZGlyIG5hbWUgZmlyc3QsIGV2ZW50dWFsbHkgdGhpcyBlbmRzIHVwCi0gICAgICAgIGNyZWF0aW5nIHRoZSBmaWxlIG9yIGRpci4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYudHJhbnNsYXRlX2ZpbGVfb3JfZGlyX25hbWUoKQotICAgICAgICBzZWxmLmV4cGFuZF9maWxlX29yX2Rpcl9uYW1lKCkKLQotCi1jbGFzcyBTdWJzdHJhdGVGaWxlKFN1YnN0cmF0ZUJhc2UpOgotICAgICIiIgotICAgIENvbnRhaW5lciBmb3IgYm90aCBleHBhbmRlZCBhbmQgdW5leHBhbmRlZCBzdWJzdHJhdGUgZmlsZXMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBmaWxlYmFzZSwgb3V0X2ZpbGViYXNlKToKLSAgICAgICAgU3Vic3RyYXRlQmFzZS5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgZmlsZWJhc2UsIG91dF9maWxlYmFzZSkKLQotICAgIGRlZiByZWFkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJhd19saW5lczoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBmID0gb3BlbihzZWxmLmZpbGVuYW1lKQotICAgICAgICBzZWxmLnJhd19saW5lcyA9IGYucmVhZGxpbmVzKCkKLQotICAgIGRlZiBleHBhbmQoc2VsZik6Ci0gICAgICAgICIiIkV4cGFuZCB0aGUgY29udGVudHMgb2YgYWxsIHRlbXBsYXRlIHRhZ3MgaW4gdGhlIGZpbGUuIiIiCi0gICAgICAgIFN1YnN0cmF0ZUJhc2UuZXhwYW5kKHNlbGYpCi0gICAgICAgIHNlbGYucmVhZCgpCi0KLSAgICAgICAgZm9yIGxpbmVubywgbGluZSBpbiBlbnVtZXJhdGUoc2VsZi5yYXdfbGluZXMpOgotICAgICAgICAgICAgIyBvbmx5IGZpcnN0IGxpbmUgY2FuIGJlIGEgZmlsZW5hbWUgc3Vic3RpdGl0aW9uCi0gICAgICAgICAgICBpZiBsaW5lbm8gPT0gMCBhbmQgbGluZS5zdGFydHN3aXRoKCIjIikgYW5kIEZJTEVOQU1FX1RBRyBpbiBsaW5lOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgc2tpcCBpdCAtIHdlJ3ZlIGFscmVhZHkgZXhwYW5kZWQgaXQKLSAgICAgICAgICAgIGV4cGFuZGVkX2xpbmUgPSBzZWxmLmV4cGFuZF90YWcobGluZSwgbGluZW5vICsgMSkgIyBodW1hbnMgbm90IDAtYmFzZWQKLSAgICAgICAgICAgIGlmIG5vdCBleHBhbmRlZF9saW5lOgotICAgICAgICAgICAgICAgIGV4cGFuZGVkX2xpbmUgPSBOb3JtYWxMaW5lKGxpbmUucnN0cmlwKCkpCi0gICAgICAgICAgICBzZWxmLmV4cGFuZGVkX2xpbmVzLmFwcGVuZChleHBhbmRlZF9saW5lKQotCi0gICAgZGVmIGdlbihzZWxmLCBjb250ZXh0ID0gTm9uZSk6Ci0gICAgICAgICIiIkdlbmVyYXRlIHRoZSBjb2RlIHRoYXQgZ2VuZXJhdGVzIHRoZSBCU1AuIiIiCi0gICAgICAgIGJhc2VfaW5kZW50ID0gMAotCi0gICAgICAgIGluZGVudCA9IG5ld19pbmRlbnQgPSBiYXNlX2luZGVudAotCi0gICAgICAgIGZvciBsaW5lIGluIHNlbGYuZXhwYW5kZWRfbGluZXM6Ci0gICAgICAgICAgICBnZW5saW5lID0gbGluZS5nZW4oY29udGV4dCkKLSAgICAgICAgICAgIGlmIG5vdCBnZW5saW5lOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIElucHV0TGluZSk6Ci0gICAgICAgICAgICAgICAgbGluZS5nZW5lcmF0ZWRfbGluZSA9IGdlbmxpbmUKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgZ2VubGluZS5zdGFydHN3aXRoKE9QRU5fU1RBUlQpOgotICAgICAgICAgICAgICAgIGlmIGluZGVudCA9PSAxOgotICAgICAgICAgICAgICAgICAgICBiYXNlX2luZGVudCA9IDEKLSAgICAgICAgICAgIGlmIGluZGVudDoKLSAgICAgICAgICAgICAgICBpZiBnZW5saW5lID09IEJMQU5LTElORV9TVFIgb3IgKG5vdCBnZW5saW5lLnN0YXJ0c3dpdGgoTk9STUFMX1NUQVJUKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBnZW5saW5lLnN0YXJ0c3dpdGgoT1BFTl9TVEFSVCkpOgotICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSBuZXdfaW5kZW50ID0gYmFzZV9pbmRlbnQKLSAgICAgICAgICAgIGlmIGdlbmxpbmUuZW5kc3dpdGgoIjoiKToKLSAgICAgICAgICAgICAgICBuZXdfaW5kZW50ID0gYmFzZV9pbmRlbnQgKyAxCi0gICAgICAgICAgICBsaW5lLmdlbmVyYXRlZF9saW5lID0gKGluZGVudCAqIElOREVOVF9TVFIpICsgZ2VubGluZQotICAgICAgICAgICAgaW5kZW50ID0gbmV3X2luZGVudAotCi0KLWNsYXNzIFN1YnN0cmF0ZURpcihTdWJzdHJhdGVCYXNlKToKLSAgICAiIiIKLSAgICBDb250YWluZXIgZm9yIGJvdGggZXhwYW5kZWQgYW5kIHVuZXhwYW5kZWQgc3Vic3RyYXRlIGRpcnMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBmaWxlYmFzZSwgb3V0X2ZpbGViYXNlKToKLSAgICAgICAgU3Vic3RyYXRlQmFzZS5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgZmlsZWJhc2UsIG91dF9maWxlYmFzZSkKLQotICAgIGRlZiBleHBhbmQoc2VsZik6Ci0gICAgICAgIFN1YnN0cmF0ZUJhc2UuZXhwYW5kKHNlbGYpCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgIiIiR2VuZXJhdGUgdGhlIGNvZGUgdGhhdCBnZW5lcmF0ZXMgdGhlIEJTUC4iIiIKLSAgICAgICAgaW5kZW50ID0gbmV3X2luZGVudCA9IDAKLSAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5leHBhbmRlZF9saW5lczoKLSAgICAgICAgICAgIGdlbmxpbmUgPSBsaW5lLmdlbihjb250ZXh0KQotICAgICAgICAgICAgaWYgbm90IGdlbmxpbmU6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGdlbmxpbmUuZW5kc3dpdGgoIjoiKToKLSAgICAgICAgICAgICAgICBuZXdfaW5kZW50ID0gMQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuZXdfaW5kZW50ID0gMAotICAgICAgICAgICAgbGluZS5nZW5lcmF0ZWRfbGluZSA9IChpbmRlbnQgKiBJTkRFTlRfU1RSKSArIGdlbmxpbmUKLSAgICAgICAgICAgIGluZGVudCA9IG5ld19pbmRlbnQKLQotCi1kZWYgZXhwYW5kX3RhcmdldCh0YXJnZXQsIGFsbF9maWxlcywgb3V0X2ZpbGViYXNlKToKLSAgICAiIiIKLSAgICBFeHBhbmQgdGhlIGNvbnRlbnRzIG9mIGFsbCB0ZW1wbGF0ZSB0YWdzIGluIHRoZSB0YXJnZXQuICBUaGlzCi0gICAgbWVhbnMgcmVtb3ZpbmcgdGFncyBhbmQgY2F0ZWdvcml6aW5nIG9yIGNyZWF0aW5nIGxpbmVzIHNvIHRoYXQKLSAgICBmdXR1cmUgcGFzc2VzIGNhbiBwcm9jZXNzIGFuZCBwcmVzZW50IGlucHV0IGxpbmVzIGFuZCBnZW5lcmF0ZSB0aGUKLSAgICBjb3JyZXNwb25kaW5nIGxpbmVzIG9mIHRoZSBQeXRob24gcHJvZ3JhbSB0aGF0IHdpbGwgYmUgZXhlYydlZCB0bwotICAgIGFjdHVhbGx5IHByb2R1Y2UgdGhlIGZpbmFsIEJTUC4gICdhbGxfZmlsZXMnIGluY2x1ZGVzIGRpcmVjdG9yaWVzLgotICAgICIiIgotICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHRhcmdldCk6Ci0gICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgifiIpIG9yIGZpbGUuZW5kc3dpdGgoIiMiKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihyb290LCBmaWxlKQotICAgICAgICAgICAgc2ZpbGUgPSBTdWJzdHJhdGVGaWxlKGYsIHRhcmdldCwgb3V0X2ZpbGViYXNlKQotICAgICAgICAgICAgc2ZpbGUuZXhwYW5kKCkKLSAgICAgICAgICAgIGFsbF9maWxlcy5hcHBlbmQoc2ZpbGUpCi0KLSAgICAgICAgZm9yIGRpciBpbiBkaXJzOgotICAgICAgICAgICAgZCA9IG9zLnBhdGguam9pbihyb290LCBkaXIpCi0gICAgICAgICAgICBzZGlyID0gU3Vic3RyYXRlRGlyKGQsIHRhcmdldCwgb3V0X2ZpbGViYXNlKQotICAgICAgICAgICAgc2Rpci5leHBhbmQoKQotICAgICAgICAgICAgYWxsX2ZpbGVzLmFwcGVuZChzZGlyKQotCi0KLWRlZiBnZW5fcHJvZ3JhbV9tYWNoaW5lX2xpbmVzKG1hY2hpbmUsIHByb2dyYW1fbGluZXMpOgotICAgICIiIgotICAgIFVzZSB0aGUgaW5wdXQgdmFsdWVzIHdlIGdvdCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCi0gICAgIiIiCi0gICAgbGluZSA9ICJtYWNoaW5lID0gXCIiICsgbWFjaGluZSArICJcIiIKLSAgICBwcm9ncmFtX2xpbmVzLmFwcGVuZChsaW5lKQotCi0gICAgbGluZSA9ICJsYXllcl9uYW1lID0gXCIiICsgbWFjaGluZSArICJcIiIKLSAgICBwcm9ncmFtX2xpbmVzLmFwcGVuZChsaW5lKQotCi0KLWRlZiBzb3J0X2lucHV0bGluZXMoaW5wdXRfbGluZXMpOgotICAgICIiIlNvcnQgaW5wdXQgbGluZXMgYWNjb3JkaW5nIHRvIHByaW9yaXR5IChwb3NpdGlvbikuIiIiCi0gICAgaW5wdXRfbGluZXMuc29ydChrZXkgPSBsYW1iZGEgbDogbC5wcmlvKQotCi0KLWRlZiBmaW5kX3BhcmVudF9kZXBlbmRlbmN5KGxpbmVzLCBkZXBlbmRzX29uKToKLSAgICBmb3IgaSwgbGluZSBpbiBsaW5lczoKLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBDb2RlTGluZSk6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBsaW5lLnByb3BzWyJuYW1lIl0gPT0gZGVwZW5kc19vbjoKLSAgICAgICAgICAgIHJldHVybiBpCi0KLSAgICByZXR1cm4gLTEKLQotCi1kZWYgcHJvY2Vzc19pbnB1dGxpbmVfZGVwZW5kZW5jaWVzKGlucHV0X2xpbmVzLCBhbGxfaW5wdXRsaW5lcyk6Ci0gICAgIiIiSWYgYW55IGlucHV0IGxpbmVzIGRlcGVuZCBvbiBvdGhlcnMsIHB1dCB0aGUgb3RoZXJzIGZpcnN0LiIiIgotICAgIGZvciBsaW5lIGluIGlucHV0X2xpbmVzOgotICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIElucHV0TGluZUdyb3VwKToKLSAgICAgICAgICAgIGdyb3VwX2lucHV0bGluZXMgPSBbXQotICAgICAgICAgICAgcHJvY2Vzc19pbnB1dGxpbmVfZGVwZW5kZW5jaWVzKGxpbmUuZ3JvdXAsIGdyb3VwX2lucHV0bGluZXMpCi0gICAgICAgICAgICBsaW5lLmdyb3VwID0gZ3JvdXBfaW5wdXRsaW5lcwotICAgICAgICAgICAgYWxsX2lucHV0bGluZXMuYXBwZW5kKGxpbmUpCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgQ29kZUxpbmUpIG9yIGlzaW5zdGFuY2UobGluZSwgTm9ybWFsTGluZSk6Ci0gICAgICAgICAgICBhbGxfaW5wdXRsaW5lcy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVwZW5kc19vbiA9IGxpbmUucHJvcHNbImRlcGVuZHMtb24iXQotICAgICAgICAgICAgZGVwZW5kc19jb2RlbGluZSA9ICJpZiAiICsgbGluZS5wcm9wc1siZGVwZW5kcy1vbiJdICsgIiA9PSBcIiIgKyBsaW5lLnByb3BzWyJkZXBlbmRzLW9uLXZhbCJdICsgIlwiOiIKLSAgICAgICAgICAgIGFsbF9pbnB1dGxpbmVzLmFwcGVuZChDb2RlTGluZShkZXBlbmRzX2NvZGVsaW5lKSkKLSAgICAgICAgICAgIGFsbF9pbnB1dGxpbmVzLmFwcGVuZChsaW5lKQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBhbGxfaW5wdXRsaW5lcy5hcHBlbmQobGluZSkKLQotCi1kZWYgY29uZGl0aW9uYWxfZmlsZW5hbWUoZmlsZW5hbWUpOgotICAgICIiIgotICAgIENoZWNrIGlmIHRoZSBmaWxlbmFtZSBpdHNlbGYgY29udGFpbnMgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQuICBJZgotICAgIHNvLCByZXR1cm4gYSBjb2RlbGluZSBmb3IgaXQuCi0gICAgIiIiCi0gICAgb3BlbnRhZ19zdGFydCA9IGZpbGVuYW1lLmZpbmQoT1BFTl9UQUcpCi0KLSAgICBpZiBvcGVudGFnX3N0YXJ0ICE9IC0xOgotICAgICAgICBpZiBmaWxlbmFtZVtvcGVudGFnX3N0YXJ0Ol0uc3RhcnRzd2l0aChBU1NJR05fVEFHKToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGVuZCA9IGZpbGVuYW1lLmZpbmQoQ0xPU0VfVEFHLCBvcGVudGFnX3N0YXJ0KQotICAgICAgICBpZiBlbmQgPT0gLTE6Ci0gICAgICAgICAgICBwcmludCgiTm8gY2xvc2UgdGFnIGZvdW5kIGZvciBvcGVuIHRhZyBpbiBmaWxlbmFtZSAlcyIgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgIyB3ZSBoYXZlIGEge3sgdGFnIGkuZS4gY29kZQotICAgICAgICB0YWcgPSBmaWxlbmFtZVtvcGVudGFnX3N0YXJ0ICsgbGVuKE9QRU5fVEFHKTplbmRdLnN0cmlwKCkKLSAgICAgICAgaWYgbm90IHRhZy5sc3RyaXAoKS5zdGFydHN3aXRoKElGX1RBRyk6Ci0gICAgICAgICAgICBwcmludCgiT25seSAnaWYnIHRhZ3MgYXJlIGFsbG93ZWQgaW4gZmlsZSBvciBkaXJlY3RvcnkgbmFtZXMsIGZpbGVuYW1lOiAlcyIgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgcmV0dXJuIENvZGVMaW5lKHRhZykKLQotICAgIHJldHVybiBOb25lCi0KLQotY2xhc3MgSW5wdXRMaW5lR3JvdXAoSW5wdXRMaW5lKToKLSAgICAiIiIKLSAgICBJbnB1dExpbmUgdGhhdCBkb2VzIG5vdGhpbmcgYnV0IGdyb3VwIG90aGVyIGlucHV0IGxpbmVzCi0gICAgY29ycmVzcG9uZGluZyB0byBhbGwgdGhlIGlucHV0IGxpbmVzIGluIGEgU3Vic3RyYXRlRmlsZSBzbyB0aGV5Ci0gICAgY2FuIGJlIGdlbmVyYXRlZCBhcyBhIGdyb3VwLiAgcHJpbyBpcyB0aGUgb25seSBwcm9wZXJ0eSB1c2VkLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb2RlbGluZSk6Ci0gICAgICAgIElucHV0TGluZS5fX2luaXRfXyhzZWxmLCB7fSwgIiIsIDApCi0gICAgICAgIHNlbGYuZ3JvdXAgPSBbXQotICAgICAgICBzZWxmLnByaW8gPSBzeXMubWF4c2l6ZQotICAgICAgICBzZWxmLmdyb3VwLmFwcGVuZChjb2RlbGluZSkKLQotICAgIGRlZiBhcHBlbmQoc2VsZiwgbGluZSk6Ci0gICAgICAgIHNlbGYuZ3JvdXAuYXBwZW5kKGxpbmUpCi0gICAgICAgIGlmIGxpbmUucHJpbyA8IHNlbGYucHJpbzoKLSAgICAgICAgICAgIHNlbGYucHJpbyA9IGxpbmUucHJpbwotCi0gICAgZGVmIGxlbihzZWxmKToKLSAgICAgICAgcmV0dXJuIGxlbihzZWxmLmdyb3VwKQotCi0KLWRlZiBnYXRoZXJfaW5wdXRsaW5lcyhmaWxlcyk6Ci0gICAgIiIiCi0gICAgR2F0aGVyIGFsbCB0aGUgSW5wdXRMaW5lcyAtIHdlIHdhbnQgdG8gZ2VuZXJhdGUgdGhlbSBmaXJzdC4KLSAgICAiIiIKLSAgICBhbGxfaW5wdXRsaW5lcyA9IFtdCi0gICAgaW5wdXRfbGluZXMgPSBbXQotCi0gICAgZm9yIGZpbGUgaW4gZmlsZXM6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgU3Vic3RyYXRlRmlsZSk6Ci0gICAgICAgICAgICBncm91cCA9IE5vbmUKLSAgICAgICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlLnRyYW5zbGF0ZWRfZmlsZW5hbWUpCi0KLSAgICAgICAgICAgIGNvZGVsaW5lID0gY29uZGl0aW9uYWxfZmlsZW5hbWUoYmFzZW5hbWUpCi0gICAgICAgICAgICBpZiBjb2RlbGluZToKLSAgICAgICAgICAgICAgICBncm91cCA9IElucHV0TGluZUdyb3VwKGNvZGVsaW5lKQotCi0gICAgICAgICAgICBoYXZlX2NvbmRpdGlvbiA9IEZhbHNlCi0gICAgICAgICAgICBjb25kaXRpb25fdG9fd3JpdGUgPSBOb25lCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBmaWxlLmV4cGFuZGVkX2xpbmVzOgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgQ29kZUxpbmUpOgotICAgICAgICAgICAgICAgICAgICBoYXZlX2NvbmRpdGlvbiA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX3RvX3dyaXRlID0gbGluZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgSW5wdXRMaW5lKToKLSAgICAgICAgICAgICAgICAgICAgaWYgZ3JvdXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25kaXRpb25fdG9fd3JpdGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX3RvX3dyaXRlLnByaW8gPSBsaW5lLnByaW8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fdG9fd3JpdGUuZGlzY2FyZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5hcHBlbmQoY29uZGl0aW9uX3RvX3dyaXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl90b193cml0ZSA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmFwcGVuZChsaW5lKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29uZGl0aW9uX3RvX3dyaXRlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl90b193cml0ZS5wcmlvID0gbGluZS5wcmlvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX3RvX3dyaXRlLmRpc2NhcmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfbGluZXMuYXBwZW5kKGNvbmRpdGlvbl90b193cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fdG9fd3JpdGUgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9saW5lcy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBjb25kaXRpb25fdG9fd3JpdGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fdG9fd3JpdGUgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGlmIGhhdmVfY29uZGl0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpbmUubGluZS5zdHJpcCgpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuZGlzY2FyZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9saW5lcy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgICAgICAgICAgaGF2ZV9jb25kaXRpb24gPSBGYWxzZQotCi0gICAgICAgICAgICBpZiBncm91cCBhbmQgZ3JvdXAubGVuKCkgPiAxOgotICAgICAgICAgICAgICAgIGlucHV0X2xpbmVzLmFwcGVuZChncm91cCkKLQotICAgIHNvcnRfaW5wdXRsaW5lcyhpbnB1dF9saW5lcykKLSAgICBwcm9jZXNzX2lucHV0bGluZV9kZXBlbmRlbmNpZXMoaW5wdXRfbGluZXMsIGFsbF9pbnB1dGxpbmVzKQotCi0gICAgcmV0dXJuIGFsbF9pbnB1dGxpbmVzCi0KLQotZGVmIHJ1bl9wcm9ncmFtX2xpbmVzKGxpbmVsaXN0LCBjb2RlZHVtcCk6Ci0gICAgIiIiCi0gICAgRm9yIGEgc2luZ2xlIGZpbGUsIHByaW50IGFsbCB0aGUgcHl0aG9uIGNvZGUgaW50byBhIGJ1ZiBhbmQgZXhlY3V0ZSBpdC4KLSAgICAiIiIKLSAgICBidWYgPSAiXG4iLmpvaW4obGluZWxpc3QpCi0KLSAgICBpZiBjb2RlZHVtcDoKLSAgICAgICAgb2YgPSBvcGVuKCJic3BnZW4ub3V0IiwgInciKQotICAgICAgICBvZi53cml0ZShidWYpCi0gICAgICAgIG9mLmNsb3NlKCkKLSAgICBleGVjKGJ1ZikKLQotCi1kZWYgZ2VuX3RhcmdldChmaWxlcywgY29udGV4dCA9IE5vbmUpOgotICAgICIiIgotICAgIEdlbmVyYXRlIHRoZSBweXRob24gY29kZSBmb3IgZWFjaCBmaWxlLgotICAgICIiIgotICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICBmaWxlLmdlbihjb250ZXh0KQotCi0KLWRlZiBnZW5fcHJvZ3JhbV9oZWFkZXJfbGluZXMocHJvZ3JhbV9saW5lcyk6Ci0gICAgIiIiCi0gICAgR2VuZXJhdGUgYW55IGltcG9ydHMgd2UgbmVlZC4KLSAgICAiIiIKLSAgICBwcm9ncmFtX2xpbmVzLmFwcGVuZCgiY3VycmVudF9maWxlID0gXCJcIiIpCi0KLQotZGVmIGdlbl9zdXBwbGllZF9wcm9wZXJ0eV92YWxzKHByb3BlcnRpZXMsIHByb2dyYW1fbGluZXMpOgotICAgICIiIgotICAgIEdlbmVyYXRlIHVzZXItc3BlY2lmaWVkIGVudHJpZXMgZm9yIGlucHV0IHZhbHVlcyBpbnN0ZWFkIG9mCi0gICAgZ2VuZXJhdGluZyBpbnB1dCBwcm9tcHRzLgotICAgICIiIgotICAgIGZvciBuYW1lLCB2YWwgaW4gcHJvcGVydGllcy5pdGVtcygpOgotICAgICAgICBwcm9ncmFtX2xpbmUgPSBuYW1lICsgIiA9IFwiIiArIHZhbCArICJcIiIKLSAgICAgICAgcHJvZ3JhbV9saW5lcy5hcHBlbmQocHJvZ3JhbV9saW5lKQotCi0KLWRlZiBnZW5faW5pdGlhbF9wcm9wZXJ0eV92YWxzKGlucHV0X2xpbmVzLCBwcm9ncmFtX2xpbmVzKToKLSAgICAiIiIKLSAgICBHZW5lcmF0ZSBudWxsIG9yIGRlZmF1bHQgZW50cmllcyBmb3IgaW5wdXQgdmFsdWVzLCBzbyB3ZSBkb24ndAotICAgIGhhdmUgdW5kZWZpbmVkIHZhcmlhYmxlcy4KLSAgICAiIiIKLSAgICBmb3IgbGluZSBpbiBpbnB1dF9saW5lczoKLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBJbnB1dExpbmVHcm91cCk6Ci0gICAgICAgICAgICBnZW5faW5pdGlhbF9wcm9wZXJ0eV92YWxzKGxpbmUuZ3JvdXAsIHByb2dyYW1fbGluZXMpCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgSW5wdXRMaW5lKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBuYW1lID0gbGluZS5wcm9wc1sibmFtZSJdCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3ZhbCA9ICJcIiIgKyBsaW5lLnByb3BzWyJkZWZhdWx0Il0gKyAiXCIiCi0gICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3ZhbCA9ICJcIlwiIgotICAgICAgICAgICAgICAgIHByb2dyYW1fbGluZSA9IG5hbWUgKyAiID0gIiArIGRlZmF1bHRfdmFsCi0gICAgICAgICAgICAgICAgcHJvZ3JhbV9saW5lcy5hcHBlbmQocHJvZ3JhbV9saW5lKQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotCi1kZWYgZ2VuX3Byb2dyYW1faW5wdXRfbGluZXMoaW5wdXRfbGluZXMsIHByb2dyYW1fbGluZXMsIGNvbnRleHQsIGluX2dyb3VwID0gRmFsc2UpOgotICAgICIiIgotICAgIEdlbmVyYXRlIG9ubHkgdGhlIGlucHV0IGxpbmVzIHVzZWQgZm9yIHByb21wdGluZyB0aGUgdXNlci4gIEZvcgotICAgIHRoYXQsIHdlIG9ubHkgaGF2ZSBpbnB1dCBsaW5lcyBhbmQgQ29kZUxpbmVzIHRoYXQgYWZmZWN0IHRoZSBuZXh0Ci0gICAgaW5wdXQgbGluZS4KLSAgICAiIiIKLSAgICBpbmRlbnQgPSBuZXdfaW5kZW50ID0gMAotCi0gICAgZm9yIGxpbmUgaW4gaW5wdXRfbGluZXM6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgSW5wdXRMaW5lR3JvdXApOgotICAgICAgICAgICAgZ2VuX3Byb2dyYW1faW5wdXRfbGluZXMobGluZS5ncm91cCwgcHJvZ3JhbV9saW5lcywgY29udGV4dCwgVHJ1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIG5vdCBsaW5lLmxpbmUuc3RyaXAoKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgZ2VubGluZSA9IGxpbmUuZ2VuKGNvbnRleHQpCi0gICAgICAgIGlmIG5vdCBnZW5saW5lOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgZ2VubGluZS5lbmRzd2l0aCgiOiIpOgotICAgICAgICAgICAgbmV3X2luZGVudCArPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBpbmRlbnQgPiAxIG9yIChub3QgaW5fZ3JvdXAgYW5kIGluZGVudCk6Ci0gICAgICAgICAgICAgICAgbmV3X2luZGVudCAtPSAxCi0KLSAgICAgICAgbGluZS5nZW5lcmF0ZWRfbGluZSA9IChpbmRlbnQgKiBJTkRFTlRfU1RSKSArIGdlbmxpbmUKLSAgICAgICAgcHJvZ3JhbV9saW5lcy5hcHBlbmQobGluZS5nZW5lcmF0ZWRfbGluZSkKLQotICAgICAgICBpbmRlbnQgPSBuZXdfaW5kZW50Ci0KLQotZGVmIGdlbl9wcm9ncmFtX2xpbmVzKHRhcmdldF9maWxlcywgcHJvZ3JhbV9saW5lcyk6Ci0gICAgIiIiCi0gICAgR2VuZXJhdGUgdGhlIHByb2dyYW0gbGluZXMgdGhhdCBtYWtlIHVwIHRoZSBCU1AgZ2VuZXJhdGlvbgotICAgIHByb2dyYW0uICBUaGlzIGFwcGVuZHMgdGhlIGdlbmVyYXRlZCBsaW5lcyBvZiBhbGwgdGFyZ2V0X2ZpbGVzIHRvCi0gICAgcHJvZ3JhbV9saW5lcywgYW5kIHNraXBzIGlucHV0IGxpbmVzLCB3aGljaCBhcmUgZGVhbHQgd2l0aAotICAgIHNlcGFyYXRlbHksIG9yIG9taXR0ZWQuCi0gICAgIiIiCi0gICAgZm9yIGZpbGUgaW4gdGFyZ2V0X2ZpbGVzOgotICAgICAgICBpZiBmaWxlLmZpbGVuYW1lLmVuZHN3aXRoKCJub2luc3RhbGwiKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgZm9yIGxpbmUgaW4gZmlsZS5leHBhbmRlZF9saW5lczoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgSW5wdXRMaW5lKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgbGluZS5kaXNjYXJkOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHByb2dyYW1fbGluZXMuYXBwZW5kKGxpbmUuZ2VuZXJhdGVkX2xpbmUpCi0KLQotZGVmIGNyZWF0ZV9jb250ZXh0KG1hY2hpbmUsIGFyY2gsIHNjcmlwdHNfcGF0aCk6Ci0gICAgIiIiCi0gICAgQ3JlYXRlIGEgY29udGV4dCBvYmplY3QgZm9yIHVzZSBpbiBkZWZlcnJlZCBmdW5jdGlvbiBpbnZvY2F0aW9uLgotICAgICIiIgotICAgIGNvbnRleHQgPSB7fQotCi0gICAgY29udGV4dFsibWFjaGluZSJdID0gbWFjaGluZQotICAgIGNvbnRleHRbImFyY2giXSA9IGFyY2gKLSAgICBjb250ZXh0WyJzY3JpcHRzX3BhdGgiXSA9IHNjcmlwdHNfcGF0aAotCi0gICAgcmV0dXJuIGNvbnRleHQKLQotCi1kZWYgY2FwdHVyZV9jb250ZXh0KGNvbnRleHQpOgotICAgICIiIgotICAgIENyZWF0ZSBhIGNvbnRleHQgb2JqZWN0IGZvciB1c2UgaW4gZGVmZXJyZWQgZnVuY3Rpb24gaW52b2NhdGlvbi4KLSAgICAiIiIKLSAgICBjYXB0dXJlZF9jb250ZXh0ID0ge30KLQotICAgIGNhcHR1cmVkX2NvbnRleHRbIm1hY2hpbmUiXSA9IGNvbnRleHRbIm1hY2hpbmUiXQotICAgIGNhcHR1cmVkX2NvbnRleHRbImFyY2giXSA9IGNvbnRleHRbImFyY2giXQotICAgIGNhcHR1cmVkX2NvbnRleHRbInNjcmlwdHNfcGF0aCJdID0gY29udGV4dFsic2NyaXB0c19wYXRoIl0KLQotICAgIHJldHVybiBjYXB0dXJlZF9jb250ZXh0Ci0KLQotZGVmIGV4cGFuZF90YXJnZXRzKGNvbnRleHQsIGJzcF9vdXRwdXRfZGlyLCBleHBhbmRfY29tbW9uPVRydWUpOgotICAgICIiIgotICAgIEV4cGFuZCBhbGwgdGhlIHRhZ3MgaW4gYm90aCB0aGUgY29tbW9uIGFuZCBtYWNoaW5lLXNwZWNpZmljCi0gICAgJ3RhcmdldHMnLgotCi0gICAgSWYgZXhwYW5kX2NvbW1vbiBpcyBGYWxzZSwgZG9uJ3QgZXhwYW5kIHRoZSBjb21tb24gdGFyZ2V0ICh0aGlzCi0gICAgb3B0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIHNwZWNpYWwtcHVycG9zZSBsYXllcnMpLgotICAgICIiIgotICAgIHRhcmdldF9maWxlcyA9IFtdCi0KLSAgICBtYWNoaW5lID0gY29udGV4dFsibWFjaGluZSJdCi0gICAgYXJjaCA9IGNvbnRleHRbImFyY2giXQotICAgIHNjcmlwdHNfcGF0aCA9IGNvbnRleHRbInNjcmlwdHNfcGF0aCJdCi0KLSAgICBsaWJfcGF0aCA9IHNjcmlwdHNfcGF0aCArICcvbGliJwotICAgIGJzcF9wYXRoID0gbGliX3BhdGggKyAnL2JzcCcKLSAgICBhcmNoX3BhdGggPSBic3BfcGF0aCArICcvc3Vic3RyYXRlL3RhcmdldC9hcmNoJwotCi0gICAgaWYgZXhwYW5kX2NvbW1vbjoKLSAgICAgICAgY29tbW9uID0gb3MucGF0aC5qb2luKGFyY2hfcGF0aCwgImNvbW1vbiIpCi0gICAgICAgIGV4cGFuZF90YXJnZXQoY29tbW9uLCB0YXJnZXRfZmlsZXMsIGJzcF9vdXRwdXRfZGlyKQotCi0gICAgYXJjaGVzID0gb3MubGlzdGRpcihhcmNoX3BhdGgpCi0gICAgaWYgYXJjaCBub3QgaW4gYXJjaGVzIG9yIGFyY2ggPT0gImNvbW1vbiI6Ci0gICAgICAgIHByaW50KCJJbnZhbGlkIGthcmNoLCBleGl0aW5nXG4iKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgdGFyZ2V0ID0gb3MucGF0aC5qb2luKGFyY2hfcGF0aCwgYXJjaCkKLSAgICBleHBhbmRfdGFyZ2V0KHRhcmdldCwgdGFyZ2V0X2ZpbGVzLCBic3Bfb3V0cHV0X2RpcikKLQotICAgIGdlbl90YXJnZXQodGFyZ2V0X2ZpbGVzLCBjb250ZXh0KQotCi0gICAgcmV0dXJuIHRhcmdldF9maWxlcwotCi0KLWRlZiB5b2N0b19jb21tb25fY3JlYXRlKG1hY2hpbmUsIHRhcmdldCwgc2NyaXB0c19wYXRoLCBsYXllcl9vdXRwdXRfZGlyLCBjb2RlZHVtcCwgcHJvcGVydGllc19maWxlLCBwcm9wZXJ0aWVzX3N0cj0iIiwgZXhwYW5kX2NvbW1vbj1UcnVlKToKLSAgICAiIiIKLSAgICBDb21tb24gbGF5ZXItY3JlYXRpb24gY29kZQotCi0gICAgbWFjaGluZSAtIHVzZXItZGVmaW5lZCBtYWNoaW5lIG5hbWUgKGlmIG5lZWRlZCwgd2lsbCBnZW5lcmF0ZSAnbWFjaGluZScgdmFyKQotICAgIHRhcmdldCAtIHRoZSAndGFyZ2V0JyB0aGUgbGF5ZXIgd2lsbCBiZSBiYXNlZCBvbiwgbXVzdCBiZSBvbmUgaW4KLSAgICAgICAgICAgc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaAotICAgIHNjcmlwdHNfcGF0aCAtIGFic29sdXRlIHBhdGggdG8geW9jdG8gL3NjcmlwdHMgZGlyCi0gICAgbGF5ZXJfb3V0cHV0X2RpciAtIGRpcm5hbWUgdG8gY3JlYXRlIGZvciBsYXllcgotICAgIGNvZGVkdW1wIC0gZHVtcCBnZW5lcmF0ZWQgY29kZSB0byBic3BnZW4ub3V0Ci0gICAgcHJvcGVydGllc19maWxlIC0gdXNlIHZhbHVlcyBmcm9tIHRoaXMgZmlsZSBpZiBub25lbXB0eSBpLmUgbm8gcHJvbXB0aW5nCi0gICAgcHJvcGVydGllc19zdHIgLSB1c2UgdmFsdWVzIGZyb20gdGhpcyBzdHJpbmcgaWYgbm9uZW1wdHkgaS5lIG5vIHByb21wdGluZwotICAgIGV4cGFuZF9jb21tb24gLSBib29sZWFuLCB1c2UgdGhlIGNvbnRlbnRzIG9mIChmb3IgYnNwIGxheWVycykgYXJjaC9jb21tb24KLSAgICAiIiIKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhsYXllcl9vdXRwdXRfZGlyKToKLSAgICAgICAgcHJpbnQoIlxubGF5ZXIgb3V0cHV0IGRpciBhbHJlYWR5IGV4aXN0cywgZXhpdGluZy4gKCVzKSIgJSBsYXllcl9vdXRwdXRfZGlyKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgcHJvcGVydGllcyA9IE5vbmUKLQotICAgIGlmIHByb3BlcnRpZXNfZmlsZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW5maWxlID0gb3Blbihwcm9wZXJ0aWVzX2ZpbGUsICJyIikKLSAgICAgICAgICAgIHByb3BlcnRpZXMgPSBqc29uLmxvYWQoaW5maWxlKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJDb3VsZG4ndCBvcGVuIHByb3BlcnRpZXMgZmlsZSAlcyBmb3IgcmVhZGluZywgZXhpdGluZyIgJSBwcm9wZXJ0aWVzX2ZpbGUpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJXcm9uZyBmb3JtYXQgb24gcHJvcGVydGllcyBmaWxlICVzLCBleGl0aW5nIiAlIHByb3BlcnRpZXNfZmlsZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpZiBwcm9wZXJ0aWVzX3N0ciBhbmQgbm90IHByb3BlcnRpZXM6Ci0gICAgICAgIHByb3BlcnRpZXMgPSBqc29uLmxvYWRzKHByb3BlcnRpZXNfc3RyKQotCi0gICAgb3MubWtkaXIobGF5ZXJfb3V0cHV0X2RpcikKLQotICAgIGNvbnRleHQgPSBjcmVhdGVfY29udGV4dChtYWNoaW5lLCB0YXJnZXQsIHNjcmlwdHNfcGF0aCkKLSAgICB0YXJnZXRfZmlsZXMgPSBleHBhbmRfdGFyZ2V0cyhjb250ZXh0LCBsYXllcl9vdXRwdXRfZGlyLCBleHBhbmRfY29tbW9uKQotCi0gICAgaW5wdXRfbGluZXMgPSBnYXRoZXJfaW5wdXRsaW5lcyh0YXJnZXRfZmlsZXMpCi0KLSAgICBwcm9ncmFtX2xpbmVzID0gW10KLQotICAgIGdlbl9wcm9ncmFtX2hlYWRlcl9saW5lcyhwcm9ncmFtX2xpbmVzKQotCi0gICAgZ2VuX2luaXRpYWxfcHJvcGVydHlfdmFscyhpbnB1dF9saW5lcywgcHJvZ3JhbV9saW5lcykKLQotICAgIGlmIHByb3BlcnRpZXM6Ci0gICAgICAgIGdlbl9zdXBwbGllZF9wcm9wZXJ0eV92YWxzKHByb3BlcnRpZXMsIHByb2dyYW1fbGluZXMpCi0KLSAgICBnZW5fcHJvZ3JhbV9tYWNoaW5lX2xpbmVzKG1hY2hpbmUsIHByb2dyYW1fbGluZXMpCi0KLSAgICBpZiBub3QgcHJvcGVydGllczoKLSAgICAgICAgZ2VuX3Byb2dyYW1faW5wdXRfbGluZXMoaW5wdXRfbGluZXMsIHByb2dyYW1fbGluZXMsIGNvbnRleHQpCi0KLSAgICBnZW5fcHJvZ3JhbV9saW5lcyh0YXJnZXRfZmlsZXMsIHByb2dyYW1fbGluZXMpCi0KLSAgICBydW5fcHJvZ3JhbV9saW5lcyhwcm9ncmFtX2xpbmVzLCBjb2RlZHVtcCkKLQotCi1kZWYgeW9jdG9fbGF5ZXJfY3JlYXRlKGxheWVyX25hbWUsIHNjcmlwdHNfcGF0aCwgbGF5ZXJfb3V0cHV0X2RpciwgY29kZWR1bXAsIHByb3BlcnRpZXNfZmlsZSwgcHJvcGVydGllcz0iIik6Ci0gICAgIiIiCi0gICAgQ3JlYXRlIHlvY3RvIGxheWVyCi0KLSAgICBsYXllcl9uYW1lIC0gdXNlci1kZWZpbmVkIGxheWVyIG5hbWUKLSAgICBzY3JpcHRzX3BhdGggLSBhYnNvbHV0ZSBwYXRoIHRvIHlvY3RvIC9zY3JpcHRzIGRpcgotICAgIGxheWVyX291dHB1dF9kaXIgLSBkaXJuYW1lIHRvIGNyZWF0ZSBmb3IgbGF5ZXIKLSAgICBjb2RlZHVtcCAtIGR1bXAgZ2VuZXJhdGVkIGNvZGUgdG8gYnNwZ2VuLm91dAotICAgIHByb3BlcnRpZXNfZmlsZSAtIHVzZSB2YWx1ZXMgZnJvbSB0aGlzIGZpbGUgaWYgbm9uZW1wdHkgaS5lIG5vIHByb21wdGluZwotICAgIHByb3BlcnRpZXMgLSB1c2UgdmFsdWVzIGZyb20gdGhpcyBzdHJpbmcgaWYgbm9uZW1wdHkgaS5lIG5vIHByb21wdGluZwotICAgICIiIgotICAgIHlvY3RvX2NvbW1vbl9jcmVhdGUobGF5ZXJfbmFtZSwgImxheWVyIiwgc2NyaXB0c19wYXRoLCBsYXllcl9vdXRwdXRfZGlyLCBjb2RlZHVtcCwgcHJvcGVydGllc19maWxlLCBwcm9wZXJ0aWVzLCBGYWxzZSkKLQotICAgIHByaW50KCJcbk5ldyBsYXllciBjcmVhdGVkIGluICVzLlxuIiAlIGxheWVyX291dHB1dF9kaXIpCi0gICAgcHJpbnQoIkRvbid0IGZvcmdldCB0byBhZGQgaXQgdG8geW91ciBCQkxBWUVSUyAoZm9yIGRldGFpbHMgc2VlICVzL1JFQURNRSkuIiAlIGxheWVyX291dHB1dF9kaXIpCi0KLQotZGVmIHlvY3RvX2JzcF9jcmVhdGUobWFjaGluZSwgYXJjaCwgc2NyaXB0c19wYXRoLCBic3Bfb3V0cHV0X2RpciwgY29kZWR1bXAsIHByb3BlcnRpZXNfZmlsZSwgcHJvcGVydGllcz1Ob25lKToKLSAgICAiIiIKLSAgICBDcmVhdGUgYnNwCi0KLSAgICBtYWNoaW5lIC0gdXNlci1kZWZpbmVkIG1hY2hpbmUgbmFtZQotICAgIGFyY2ggLSB0aGUgYXJjaCB0aGUgYnNwIHdpbGwgYmUgYmFzZWQgb24sIG11c3QgYmUgb25lIGluCi0gICAgICAgICAgIHNjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gKLSAgICBzY3JpcHRzX3BhdGggLSBhYnNvbHV0ZSBwYXRoIHRvIHlvY3RvIC9zY3JpcHRzIGRpcgotICAgIGJzcF9vdXRwdXRfZGlyIC0gZGlybmFtZSB0byBjcmVhdGUgZm9yIEJTUAotICAgIGNvZGVkdW1wIC0gZHVtcCBnZW5lcmF0ZWQgY29kZSB0byBic3BnZW4ub3V0Ci0gICAgcHJvcGVydGllc19maWxlIC0gdXNlIHZhbHVlcyBmcm9tIHRoaXMgZmlsZSBpZiBub25lbXB0eSBpLmUgbm8gcHJvbXB0aW5nCi0gICAgcHJvcGVydGllcyAtIHVzZSB2YWx1ZXMgZnJvbSB0aGlzIHN0cmluZyBpZiBub25lbXB0eSBpLmUgbm8gcHJvbXB0aW5nCi0gICAgIiIiCi0gICAgeW9jdG9fY29tbW9uX2NyZWF0ZShtYWNoaW5lLCBhcmNoLCBzY3JpcHRzX3BhdGgsIGJzcF9vdXRwdXRfZGlyLCBjb2RlZHVtcCwgcHJvcGVydGllc19maWxlLCBwcm9wZXJ0aWVzKQotCi0gICAgcHJpbnQoIlxuTmV3ICVzIEJTUCBjcmVhdGVkIGluICVzIiAlIChhcmNoLCBic3Bfb3V0cHV0X2RpcikpCi0KLQotZGVmIHByaW50X2RpY3QoaXRlbXMsIGluZGVudCA9IDApOgotICAgICIiIgotICAgIFByaW50IHRoZSB2YWx1ZXMgaW4gYSBwb3NzaWJseSBuZXN0ZWQgZGljdGlvbmFyeS4KLSAgICAiIiIKLSAgICBmb3Iga2V5LCB2YWwgaW4gaXRlbXMuaXRlbXMoKToKLSAgICAgICAgcHJpbnQoIiAgICAiKmluZGVudCArICJcIiVzXCIgOiIgJSBrZXkpCi0gICAgICAgIGlmIHR5cGUodmFsKSA9PSBkaWN0OgotICAgICAgICAgICAgcHJpbnQoInsiKQotICAgICAgICAgICAgcHJpbnRfZGljdCh2YWwsIGluZGVudCArIDEpCi0gICAgICAgICAgICBwcmludCgiICAgICIqaW5kZW50ICsgIn0iKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIiVzIiAlIHZhbCkKLQotCi1kZWYgZ2V0X3Byb3BlcnRpZXMoaW5wdXRfbGluZXMpOgotICAgICIiIgotICAgIEdldCB0aGUgY29tcGxldGUgc2V0IG9mIHByb3BlcnRpZXMgZm9yIGFsbCB0aGUgaW5wdXQgaXRlbXMgaW4gdGhlCi0gICAgQlNQLCBhcyBhIHBvc3NpYmx5IG5lc3RlZCBkaWN0aW9uYXJ5LgotICAgICIiIgotICAgIHByb3BlcnRpZXMgPSB7fQotCi0gICAgZm9yIGxpbmUgaW4gaW5wdXRfbGluZXM6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgSW5wdXRMaW5lR3JvdXApOgotICAgICAgICAgICAgc3RhdGVtZW50ID0gbGluZS5ncm91cFswXS5saW5lCi0gICAgICAgICAgICBncm91cF9wcm9wZXJ0aWVzID0gZ2V0X3Byb3BlcnRpZXMobGluZS5ncm91cCkKLSAgICAgICAgICAgIHByb3BlcnRpZXNbc3RhdGVtZW50XSA9IGdyb3VwX3Byb3BlcnRpZXMKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobGluZSwgSW5wdXRMaW5lKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBDaG9pY2VJbnB1dExpbmUpOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBwcm9wcyA9IGxpbmUucHJvcHMKLSAgICAgICAgaXRlbSA9IHt9Ci0gICAgICAgIG5hbWUgPSBwcm9wc1sibmFtZSJdCi0gICAgICAgIGZvciBrZXksIHZhbCBpbiBwcm9wcy5pdGVtcygpOgotICAgICAgICAgICAgaWYgbm90IGtleSA9PSAibmFtZSI6Ci0gICAgICAgICAgICAgICAgaXRlbVtrZXldID0gdmFsCi0gICAgICAgIHByb3BlcnRpZXNbbmFtZV0gPSBpdGVtCi0KLSAgICByZXR1cm4gcHJvcGVydGllcwotCi0KLWRlZiB5b2N0b19sYXllcl9saXN0X3Byb3BlcnRpZXMoYXJjaCwgc2NyaXB0c19wYXRoLCBwcm9wZXJ0aWVzX2ZpbGUsIGV4cGFuZF9jb21tb249VHJ1ZSk6Ci0gICAgIiIiCi0gICAgTGlzdCB0aGUgY29tcGxldGUgc2V0IG9mIHByb3BlcnRpZXMgZm9yIGFsbCB0aGUgaW5wdXQgaXRlbXMgaW4gdGhlCi0gICAgbGF5ZXIuICBJZiBwcm9wZXJ0aWVzX2ZpbGUgaXMgbm9uLW51bGwsIHdyaXRlIHRoZSBjb21wbGV0ZSBzZXQgb2YKLSAgICBwcm9wZXJ0aWVzIGFzIGEgbmVzdGVkIEpTT04gb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gYSBwb3NzaWJseQotICAgIG5lc3RlZCBkaWN0aW9uYXJ5LgotICAgICIiIgotICAgIGNvbnRleHQgPSBjcmVhdGVfY29udGV4dCgidW51c2VkIiwgYXJjaCwgc2NyaXB0c19wYXRoKQotICAgIHRhcmdldF9maWxlcyA9IGV4cGFuZF90YXJnZXRzKGNvbnRleHQsICJ1bnVzZWQiLCBleHBhbmRfY29tbW9uKQotCi0gICAgaW5wdXRfbGluZXMgPSBnYXRoZXJfaW5wdXRsaW5lcyh0YXJnZXRfZmlsZXMpCi0KLSAgICBwcm9wZXJ0aWVzID0gZ2V0X3Byb3BlcnRpZXMoaW5wdXRfbGluZXMpCi0gICAgaWYgcHJvcGVydGllc19maWxlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvZiA9IG9wZW4ocHJvcGVydGllc19maWxlLCAidyIpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IG9wZW4gcHJvcGVydGllcyBmaWxlICVzIGZvciB3cml0aW5nLCBleGl0aW5nIiAlIHByb3BlcnRpZXNfZmlsZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAganNvbi5kdW1wKHByb3BlcnRpZXMsIG9mLCBpbmRlbnQ9MSkKLSAgICBlbHNlOgotICAgICAgICBwcmludF9kaWN0KHByb3BlcnRpZXMpCi0KLQotZGVmIHNwbGl0X25lc3RlZF9wcm9wZXJ0eShwcm9wZXJ0eSk6Ci0gICAgIiIiCi0gICAgQSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBmb3JtIHgueSBkZXNjcmliZXMgYSBuZXN0ZWQgcHJvcGVydHkKLSAgICBpLmUuIHRoZSBwcm9wZXJ0eSB5IGlzIGNvbnRhaW5lZCB3aXRoaW4geCBhbmQgY2FuIGJlIGFkZHJlc3NlZAotICAgIHVzaW5nIHN0YW5kYXJkIEpTT04gc3ludGF4IGZvciBuZXN0ZWQgcHJvcGVydGllcy4gIE5vdGUgdGhhdCBpZiBhCi0gICAgcHJvcGVydHkgbmFtZSBpdHNlbGYgY29udGFpbnMgJy4nLCBpdCBzaG91bGQgYmUgY29udGFpbmVkIGluCi0gICAgZG91YmxlIHF1b3Rlcy4KLSAgICAiIiIKLSAgICBzcGxpdHRhYmxlX3Byb3BlcnR5ID0gIiIKLSAgICBpbl9xdW90ZXMgPSBGYWxzZQotICAgIGZvciBjIGluIHByb3BlcnR5OgotICAgICAgICBpZiBjID09ICcuJyBhbmQgbm90IGluX3F1b3RlczoKLSAgICAgICAgICAgIHNwbGl0dGFibGVfcHJvcGVydHkgKz0gJ1xuJwotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgYyA9PSAnIic6Ci0gICAgICAgICAgICBpbl9xdW90ZXMgPSBub3QgaW5fcXVvdGVzCi0gICAgICAgIHNwbGl0dGFibGVfcHJvcGVydHkgKz0gYwotCi0gICAgc3BsaXRfcHJvcGVydGllcyA9IHNwbGl0dGFibGVfcHJvcGVydHkuc3BsaXQoJ1xuJykKLQotICAgIGlmIGxlbihzcGxpdF9wcm9wZXJ0aWVzKSA+IDE6Ci0gICAgICAgIHJldHVybiBzcGxpdF9wcm9wZXJ0aWVzCi0KLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiBmaW5kX2lucHV0X2xpbmVfZ3JvdXAoc3Vic3RyaW5nLCBpbnB1dF9saW5lcyk6Ci0gICAgIiIiCi0gICAgRmluZCBhbmQgcmV0dXJuIHRoZSBJbnB1dExpbmVHcm91cCBjb250YWluaW5nIHRoZSBzcGVjaWZpZWQgc3Vic3RyaW5nLgotICAgICIiIgotICAgIGZvciBsaW5lIGluIGlucHV0X2xpbmVzOgotICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIElucHV0TGluZUdyb3VwKToKLSAgICAgICAgICAgIGlmIHN1YnN0cmluZyBpbiBsaW5lLmdyb3VwWzBdLmxpbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLQotICAgIHJldHVybiBOb25lCi0KLQotZGVmIGZpbmRfaW5wdXRfbGluZShuYW1lLCBpbnB1dF9saW5lcyk6Ci0gICAgIiIiCi0gICAgRmluZCB0aGUgaW5wdXQgbGluZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4KLSAgICAiIiIKLSAgICBmb3IgbGluZSBpbiBpbnB1dF9saW5lczoKLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBJbnB1dExpbmVHcm91cCk6Ci0gICAgICAgICAgICBsID0gZmluZF9pbnB1dF9saW5lKG5hbWUsIGxpbmUuZ3JvdXApCi0gICAgICAgICAgICBpZiBsOgotICAgICAgICAgICAgICAgIHJldHVybiBsCi0KLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBJbnB1dExpbmUpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIGxpbmUucHJvcHNbIm5hbWUiXSA9PSBuYW1lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZQotICAgICAgICAgICAgICAgIGlmIGxpbmUucHJvcHNbIm5hbWUiXSArICJfIiArIGxpbmUucHJvcHNbIm5hbWVhcHBlbmQiXSA9PSBuYW1lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgIHJldHVybiBOb25lCi0KLQotZGVmIHByaW50X3ZhbHVlcyh0eXBlLCB2YWx1ZXNfbGlzdCk6Ci0gICAgIiIiCi0gICAgUHJpbnQgdGhlIHZhbHVlcyBpbiB0aGUgZ2l2ZW4gbGlzdCBvZiB2YWx1ZXMuCi0gICAgIiIiCi0gICAgaWYgdHlwZSA9PSAiY2hvaWNlbGlzdCI6Ci0gICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXNfbGlzdDoKLSAgICAgICAgICAgIHByaW50KCJbXCIlc1wiLCBcIiVzXCJdIiAlICh2YWx1ZVswXSwgdmFsdWVbMV0pKQotICAgIGVsaWYgdHlwZSA9PSAiYm9vbGVhbiI6Ci0gICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXNfbGlzdDoKLSAgICAgICAgICAgIHByaW50KCJbXCIlc1wiLCBcIiVzXCJdIiAlICh2YWx1ZVswXSwgdmFsdWVbMV0pKQotCi0KLWRlZiB5b2N0b19sYXllcl9saXN0X3Byb3BlcnR5X3ZhbHVlcyhhcmNoLCBwcm9wZXJ0eSwgc2NyaXB0c19wYXRoLCBwcm9wZXJ0aWVzX2ZpbGUsIGV4cGFuZF9jb21tb249VHJ1ZSk6Ci0gICAgIiIiCi0gICAgTGlzdCB0aGUgcG9zc2libGUgdmFsdWVzIGZvciBhIGdpdmVuIGlucHV0IHByb3BlcnR5LiAgSWYKLSAgICBwcm9wZXJ0aWVzX2ZpbGUgaXMgbm9uLW51bGwsIHdyaXRlIHRoZSBjb21wbGV0ZSBzZXQgb2YgcHJvcGVydGllcwotICAgIGFzIGEgSlNPTiBvYmplY3QgY29ycmVzcG9uZGluZyB0byBhbiBhcnJheSBvZiBwb3NzaWJsZSB2YWx1ZXMuCi0gICAgIiIiCi0gICAgY29udGV4dCA9IGNyZWF0ZV9jb250ZXh0KCJ1bnVzZWQiLCBhcmNoLCBzY3JpcHRzX3BhdGgpCi0gICAgY29udGV4dFsibmFtZSJdID0gcHJvcGVydHkKLQotICAgIHRhcmdldF9maWxlcyA9IGV4cGFuZF90YXJnZXRzKGNvbnRleHQsICJ1bnVzZWQiLCBleHBhbmRfY29tbW9uKQotCi0gICAgaW5wdXRfbGluZXMgPSBnYXRoZXJfaW5wdXRsaW5lcyh0YXJnZXRfZmlsZXMpCi0KLSAgICBwcm9wZXJ0aWVzID0gZ2V0X3Byb3BlcnRpZXMoaW5wdXRfbGluZXMpCi0KLSAgICBuZXN0ZWRfcHJvcGVydGllcyA9IHNwbGl0X25lc3RlZF9wcm9wZXJ0eShwcm9wZXJ0eSkKLSAgICBpZiBuZXN0ZWRfcHJvcGVydGllczoKLSAgICAgICAgIyBjdXJyZW50bHkgdGhlIG91dGVyIHByb3BlcnR5IG9mIGEgbmVzdGVkIHByb3BlcnR5IGFsd2F5cwotICAgICAgICAjIGNvcnJlc3BvbmRzIHRvIGFuIGlucHV0IGxpbmUgZ3JvdXAKLSAgICAgICAgaW5wdXRfbGluZV9ncm91cCA9IGZpbmRfaW5wdXRfbGluZV9ncm91cChuZXN0ZWRfcHJvcGVydGllc1swXSwgaW5wdXRfbGluZXMpCi0gICAgICAgIGlmIGlucHV0X2xpbmVfZ3JvdXA6Ci0gICAgICAgICAgICBpbnB1dF9saW5lc1s6XSA9IGlucHV0X2xpbmVfZ3JvdXAuZ3JvdXBbMTpdCi0gICAgICAgICAgICAjIFRoZSBpbm5lciBwcm9wZXJ0eSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSBuYW1lIGlzIHRoZQotICAgICAgICAgICAgIyBhY3R1YWwgcHJvcGVydHkgbmFtZSB3ZSB3YW50LCBzbyByZXNldCB0byB0aGF0Ci0gICAgICAgICAgICBwcm9wZXJ0eSA9IG5lc3RlZF9wcm9wZXJ0aWVzWzFdCi0KLSAgICBpbnB1dF9saW5lID0gZmluZF9pbnB1dF9saW5lKHByb3BlcnR5LCBpbnB1dF9saW5lcykKLSAgICBpZiBub3QgaW5wdXRfbGluZToKLSAgICAgICAgcHJpbnQoIkNvdWxkbid0IGZpbmQgdmFsdWVzIGZvciBwcm9wZXJ0eSAlcyIgJSBwcm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuCi0KLSAgICB2YWx1ZXNfbGlzdCA9IFtdCi0KLSAgICB0eXBlID0gaW5wdXRfbGluZS5wcm9wc1sidHlwZSJdCi0gICAgaWYgdHlwZSA9PSAiYm9vbGVhbiI6Ci0gICAgICAgIHZhbHVlc19saXN0LmFwcGVuZChbInkiLCAibiJdKQotICAgIGVsaWYgdHlwZSA9PSAiY2hvaWNlbGlzdCIgb3IgdHlwZSA9PSAiY2hlY2tsaXN0IjoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZ2VuX2ZuID0gaW5wdXRfbGluZS5wcm9wc1siZ2VuIl0KLSAgICAgICAgICAgIGlmIG5lc3RlZF9wcm9wZXJ0aWVzOgotICAgICAgICAgICAgICAgIGNvbnRleHRbImZpbGVuYW1lIl0gPSBuZXN0ZWRfcHJvcGVydGllc1swXQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dFsiYnJhbmNoZXNfYmFzZSJdID0gaW5wdXRfbGluZS5wcm9wc1siYnJhbmNoZXNfYmFzZSJdCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0WyJicmFuY2hlc19iYXNlIl0gPSBOb25lCi0gICAgICAgICAgICB2YWx1ZXNfbGlzdCA9IGlucHV0X2xpbmUuZ2VuX2Nob2ljZXNfbGlzdChjb250ZXh0LCBGYWxzZSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgZm9yIGNob2ljZSBpbiBpbnB1dF9saW5lLmNob2ljZXM6Ci0gICAgICAgICAgICAgICAgY2hvaWNlcGFpciA9IFtdCi0gICAgICAgICAgICAgICAgY2hvaWNlcGFpci5hcHBlbmQoY2hvaWNlLnZhbCkKLSAgICAgICAgICAgICAgICBjaG9pY2VwYWlyLmFwcGVuZChjaG9pY2UuZGVzYykKLSAgICAgICAgICAgICAgICB2YWx1ZXNfbGlzdC5hcHBlbmQoY2hvaWNlcGFpcikKLQotICAgIGlmIHByb3BlcnRpZXNfZmlsZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb2YgPSBvcGVuKHByb3BlcnRpZXNfZmlsZSwgInciKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJDb3VsZG4ndCBvcGVuIHByb3BlcnRpZXMgZmlsZSAlcyBmb3Igd3JpdGluZywgZXhpdGluZyIgJSBwcm9wZXJ0aWVzX2ZpbGUpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgICAgIGpzb24uZHVtcCh2YWx1ZXNfbGlzdCwgb2YpCi0KLSAgICBwcmludF92YWx1ZXModHlwZSwgdmFsdWVzX2xpc3QpCi0KLQotZGVmIHlvY3RvX2JzcF9saXN0KGFyZ3MsIHNjcmlwdHNfcGF0aCk6Ci0gICAgIiIiCi0gICAgUHJpbnQgYXZhaWxhYmxlIGFyY2hpdGVjdHVyZXMsIG9yIHRoZSBjb21wbGV0ZSBsaXN0IG9mIHByb3BlcnRpZXMKLSAgICBkZWZpbmVkIGJ5IHRoZSBCU1AsIG9yIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIGEgcGFydGljdWxhciBCU1AKLSAgICBwcm9wZXJ0eS4KLSAgICAiIiIKLSAgICBpZiBhcmdzLmthcmNoID09ICJrYXJjaCI6Ci0gICAgICAgIGxpYl9wYXRoID0gc2NyaXB0c19wYXRoICsgJy9saWInCi0gICAgICAgIGJzcF9wYXRoID0gbGliX3BhdGggKyAnL2JzcCcKLSAgICAgICAgYXJjaF9wYXRoID0gYnNwX3BhdGggKyAnL3N1YnN0cmF0ZS90YXJnZXQvYXJjaCcKLSAgICAgICAgcHJpbnQoIkFyY2hpdGVjdHVyZXMgYXZhaWxhYmxlOiIpCi0gICAgICAgIGZvciBhcmNoIGluIG9zLmxpc3RkaXIoYXJjaF9wYXRoKToKLSAgICAgICAgICAgIGlmIGFyY2ggPT0gImNvbW1vbiIgb3IgYXJjaCA9PSAibGF5ZXIiOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBwcmludCgiICAgICVzIiAlIGFyY2gpCi0gICAgICAgIHJldHVybgotCi0gICAgaWYgYXJncy5wcm9wZXJ0aWVzOgotICAgICAgICB5b2N0b19sYXllcl9saXN0X3Byb3BlcnRpZXMoYXJncy5rYXJjaCwgc2NyaXB0c19wYXRoLCBhcmdzLnByb3BlcnRpZXNfZmlsZSkKLSAgICBlbGlmIGFyZ3MucHJvcGVydHk6Ci0gICAgICAgIHlvY3RvX2xheWVyX2xpc3RfcHJvcGVydHlfdmFsdWVzKGFyZ3Mua2FyY2gsIGFyZ3MucHJvcGVydHksIHNjcmlwdHNfcGF0aCwgYXJncy5wcm9wZXJ0aWVzX2ZpbGUpCi0KLQotCi1kZWYgeW9jdG9fbGF5ZXJfbGlzdChhcmdzLCBzY3JpcHRzX3BhdGgsIHByb3BlcnRpZXNfZmlsZSk6Ci0gICAgIiIiCi0gICAgUHJpbnQgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgaW5wdXQgcHJvcGVydGllcyBkZWZpbmVkIGJ5IHRoZSBsYXllciwKLSAgICBvciB0aGUgcG9zc2libGUgdmFsdWVzIGZvciBhIHBhcnRpY3VsYXIgbGF5ZXIgcHJvcGVydHkuCi0gICAgIiIiCi0gICAgaWYgbGVuKGFyZ3MpIDwgMToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBpZiBsZW4oYXJncykgPCAxIG9yIGxlbihhcmdzKSA+IDI6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaWYgbGVuKGFyZ3MpID09IDE6Ci0gICAgICAgIGlmIGFyZ3NbMF0gPT0gInByb3BlcnRpZXMiOgotICAgICAgICAgICAgeW9jdG9fbGF5ZXJfbGlzdF9wcm9wZXJ0aWVzKCJsYXllciIsIHNjcmlwdHNfcGF0aCwgcHJvcGVydGllc19maWxlLCBGYWxzZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaWYgbGVuKGFyZ3MpID09IDI6Ci0gICAgICAgIGlmIGFyZ3NbMF0gPT0gInByb3BlcnR5IjoKLSAgICAgICAgICAgIHlvY3RvX2xheWVyX2xpc3RfcHJvcGVydHlfdmFsdWVzKCJsYXllciIsIGFyZ3NbMV0sIHNjcmlwdHNfcGF0aCwgcHJvcGVydGllc19maWxlLCBGYWxzZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgcmV0dXJuIFRydWUKLQotCi1kZWYgbWFwX3N0YW5kYXJkX2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpOgotICAgICIiIgotICAgIFJldHVybiB0aGUgbGludXgteW9jdG8gYnNwIGJyYW5jaCB0byB1c2Ugd2l0aCB0aGUgc3BlY2lmaWVkCi0gICAga2JyYW5jaC4gIFRoaXMgaGFuZGxlcyB0aGUgLXN0YW5kYXJkIHZhcmlhbnRzIGZvciAzLjQgYW5kIDMuODsgdGhlCi0gICAgb3RoZXIgdmFyaWFudHMgZG9uJ3QgbmVlZCBtYXBwaW5ncy4KLSAgICAiIiIKLSAgICBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjoKLSAgICAgICAga2JyYW5jaCA9IG5ld19rYnJhbmNoCi0gICAgZWxzZToKLSAgICAgICAga2JyYW5jaCA9IGV4aXN0aW5nX2ticmFuY2gKLQotICAgIGlmIGticmFuY2guc3RhcnRzd2l0aCgic3RhbmRhcmQvY29tbW9uLXBjLTY0Iik6Ci0gICAgICAgIHJldHVybiAiYnNwL2NvbW1vbi1wYy02NC9jb21tb24tcGMtNjQtc3RhbmRhcmQuc2NjIgotICAgIGlmIGticmFuY2guc3RhcnRzd2l0aCgic3RhbmRhcmQvY29tbW9uLXBjIik6Ci0gICAgICAgIHJldHVybiAiYnNwL2NvbW1vbi1wYy9jb21tb24tcGMtc3RhbmRhcmQuc2NjIgotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAia3R5cGVzL3N0YW5kYXJkL3N0YW5kYXJkLnNjYyIKLQotCi1kZWYgbWFwX3ByZWVtcHRfcnRfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIHRoZSBsaW51eC15b2N0byBic3AgYnJhbmNoIHRvIHVzZSB3aXRoIHRoZSBzcGVjaWZpZWQKLSAgICBrYnJhbmNoLiAgVGhpcyBoYW5kbGVzIHRoZSAtcHJlZW1wdC1ydCB2YXJpYW50cyBmb3IgMy40IGFuZCAzLjg7Ci0gICAgdGhlIG90aGVyIHZhcmlhbnRzIGRvbid0IG5lZWQgbWFwcGluZ3MuCi0gICAgIiIiCi0gICAgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6Ci0gICAgICAgIGticmFuY2ggPSBuZXdfa2JyYW5jaAotICAgIGVsc2U6Ci0gICAgICAgIGticmFuY2ggPSBleGlzdGluZ19rYnJhbmNoCi0KLSAgICBpZiBrYnJhbmNoLnN0YXJ0c3dpdGgoInN0YW5kYXJkL3ByZWVtcHQtcnQvY29tbW9uLXBjLTY0Iik6Ci0gICAgICAgIHJldHVybiAiYnNwL2NvbW1vbi1wYy02NC9jb21tb24tcGMtNjQtcHJlZW1wdC1ydC5zY2MiCi0gICAgaWYga2JyYW5jaC5zdGFydHN3aXRoKCJzdGFuZGFyZC9wcmVlbXB0LXJ0L2NvbW1vbi1wYyIpOgotICAgICAgICByZXR1cm4gImJzcC9jb21tb24tcGMvY29tbW9uLXBjLXByZWVtcHQtcnQuc2NjIgotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAia3R5cGVzL3ByZWVtcHQtcnQvcHJlZW1wdC1ydC5zY2MiCi0KLQotZGVmIG1hcF90aW55X2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpOgotICAgICIiIgotICAgIFJldHVybiB0aGUgbGludXgteW9jdG8gYnNwIGJyYW5jaCB0byB1c2Ugd2l0aCB0aGUgc3BlY2lmaWVkCi0gICAga2JyYW5jaC4gIFRoaXMgaGFuZGxlcyB0aGUgLXRpbnkgdmFyaWFudHMgZm9yIDMuNCBhbmQgMy44OyB0aGUKLSAgICBvdGhlciB2YXJpYW50cyBkb24ndCBuZWVkIG1hcHBpbmdzLgotICAgICIiIgotICAgIGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOgotICAgICAgICBrYnJhbmNoID0gbmV3X2ticmFuY2gKLSAgICBlbHNlOgotICAgICAgICBrYnJhbmNoID0gZXhpc3Rpbmdfa2JyYW5jaAotCi0gICAgaWYga2JyYW5jaC5zdGFydHN3aXRoKCJzdGFuZGFyZC90aW55L2NvbW1vbi1wYyIpOgotICAgICAgICByZXR1cm4gImJzcC9jb21tb24tcGMvY29tbW9uLXBjLXRpbnkuc2NjIgotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAia3R5cGVzL3RpbnkvdGlueS5zY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL2hlbHAucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL2hlbHAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1ZDQ0NmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9oZWxwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA1NCArMCwwIEBACi0jIGV4OnRzPTQ6c3c9NDpzdHM9NDpldAotIyAtKi0gdGFiLXdpZHRoOiA0OyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsIEludGVsIENvcnBvcmF0aW9uLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLSMKLSMgREVTQ1JJUFRJT04KLSMgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBzb21lIGJhc2ljIGhlbHAgaW52b2NhdGlvbiBmdW5jdGlvbnMgYWxvbmcKLSMgd2l0aCB0aGUgYnVsayBvZiB0aGUgaGVscCB0b3BpYyB0ZXh0IGZvciB0aGUgWW9jdG8gQlNQIFRvb2xzLgotIwotIyBBVVRIT1JTCi0jIFRvbSBaYW51c3NpIDx0b20uemFudXNzaSAoYXRdIGludGVsLmNvbT4KLSMKLQotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBsb2dnaW5nCi0KLQotZGVmIHN1YmNvbW1hbmRfZXJyb3IoYXJncyk6Ci0gICAgbG9nZ2luZy5pbmZvKCJpbnZhbGlkIHN1YmNvbW1hbmQgJXMiICUgYXJnc1swXSkKLQotCi1kZWYgZGlzcGxheV9oZWxwKHN1YmNvbW1hbmQsIHN1YmNvbW1hbmRzKToKLSAgICAiIiIKLSAgICBEaXNwbGF5IGhlbHAgZm9yIHN1YmNvbW1hbmQuCi0gICAgIiIiCi0gICAgaWYgc3ViY29tbWFuZCBub3QgaW4gc3ViY29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaGVscCA9IHN1YmNvbW1hbmRzLmdldChzdWJjb21tYW5kLCBzdWJjb21tYW5kX2Vycm9yKVsyXQotICAgIHBhZ2VyID0gc3VicHJvY2Vzcy5Qb3BlbignbGVzcycsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSkKLSAgICBwYWdlci5jb21tdW5pY2F0ZShieXRlcyhoZWxwLCAnVVRGLTgnKSkKLQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIHlvY3RvX2hlbHAoYXJncywgdXNhZ2Vfc3RyLCBzdWJjb21tYW5kcyk6Ci0gICAgIiIiCi0gICAgU3ViY29tbWFuZCBoZWxwIGRpc3BhdGNoZXIuCi0gICAgIiIiCi0gICAgaWYgbGVuKGFyZ3MpID09IDEgb3Igbm90IGRpc3BsYXlfaGVscChhcmdzWzFdLCBzdWJjb21tYW5kcyk6Ci0gICAgICAgIHByaW50KHVzYWdlX3N0cikKLQotCi1kZWYgaW52b2tlX3N1YmNvbW1hbmQoYXJncywgcGFyc2VyLCBtYWluX2NvbW1hbmRfdXNhZ2UsIHN1YmNvbW1hbmRzKToKLSAgICAiIiIKLSAgICBEaXNwYXRjaCB0byBzdWJjb21tYW5kIGhhbmRsZXIgYm9ycm93ZWQgZnJvbSBjb21iby1sYXllci4KLSAgICBTaG91bGQgdXNlIGFyZ3BhcnNlLCBidXQgaGFzIHRvIHdvcmsgaW4gMi42LgotICAgICIiIgotICAgIGlmIG5vdCBhcmdzOgotICAgICAgICBsb2dnaW5nLmVycm9yKCJObyBzdWJjb21tYW5kIHNwZWNpZmllZCwgZXhpdGluZyIpCi0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICBlbGlmIGFyZ3NbMF0gPT0gImhlbHAiOgotICAgICAgICB5b2N0b19oZWxwKGFyZ3MsIG1haW5fY29tbWFuZF91c2FnZSwgc3ViY29tbWFuZHMpCi0gICAgZWxpZiBhcmdzWzBdIG5vdCBpbiBzdWJjb21tYW5kczoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiVW5zdXBwb3J0ZWQgc3ViY29tbWFuZCAlcywgZXhpdGluZ1xuIiAlIChhcmdzWzBdKSkKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgIGVsc2U6Ci0gICAgICAgIHVzYWdlID0gc3ViY29tbWFuZHMuZ2V0KGFyZ3NbMF0sIHN1YmNvbW1hbmRfZXJyb3IpWzFdCi0gICAgICAgIHN1YmNvbW1hbmRzLmdldChhcmdzWzBdLCBzdWJjb21tYW5kX2Vycm9yKVswXShhcmdzWzE6XSwgdXNhZ2UpCi0KLQotIyMKLSMgeW9jdG8tYnNwIGhlbHAgYW5kIHVzYWdlIHN0cmluZ3MKLSMjCi0KLXlvY3RvX2JzcF91c2FnZSA9ICIiIgotCi0gQ3JlYXRlIGEgY3VzdG9taXplZCBZb2N0byBCU1AgbGF5ZXIuCi0KLSB1c2FnZTogeW9jdG8tYnNwIFstLXZlcnNpb25dIFstLWhlbHBdIENPTU1BTkQgW0FSR1NdCi0KLSBDdXJyZW50ICd5b2N0by1ic3AnIGNvbW1hbmRzIGFyZToKLSAgICBjcmVhdGUgICAgICAgICAgICBDcmVhdGUgYSBuZXcgWW9jdG8gQlNQCi0gICAgbGlzdCAgICAgICAgICAgICAgTGlzdCBhdmFpbGFibGUgdmFsdWVzIGZvciBvcHRpb25zIGFuZCBCU1AgcHJvcGVydGllcwotCi0gU2VlICd5b2N0by1ic3AgaGVscCBDT01NQU5EJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuCi0iIiIKLQoteW9jdG9fYnNwX2hlbHBfdXNhZ2UgPSAiIiIKLQotIHVzYWdlOiB5b2N0by1ic3AgaGVscCA8c3ViY29tbWFuZD4KLQotIFRoaXMgY29tbWFuZCBkaXNwbGF5cyBkZXRhaWxlZCBoZWxwIGZvciB0aGUgc3BlY2lmaWVkIHN1YmNvbW1hbmQuCi0iIiIKLQoteW9jdG9fYnNwX2NyZWF0ZV91c2FnZSA9ICIiIgotCi0gQ3JlYXRlIGEgbmV3IFlvY3RvIEJTUAotCi0gdXNhZ2U6IHlvY3RvLWJzcCBjcmVhdGUgPGJzcC1uYW1lPiA8a2FyY2g+IFstbyA8RElSTkFNRT4gfCAtLW91dGRpciA8RElSTkFNRT5dCi0gICAgICAgICAgICBbLWkgPEpTT04gUFJPUEVSVFkgRklMRT4gfCAtLWluZmlsZSA8SlNPTiBQUk9QRVJUWV9GSUxFPl0KLSAgICAgICAgICAgIFstYyB8IC0tY29kZWR1bXBdIFstcyB8IC0tc2tpcC1naXQtY2hlY2tdCi0KLSBUaGlzIGNvbW1hbmQgY3JlYXRlcyBhIFlvY3RvIEJTUCBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuCi0gVGhlIG5ldyBCU1Agd2lsbCBiZSBhIG5ldyBZb2N0byBCU1AgbGF5ZXIgY29udGFpbmVkIGJ5IGRlZmF1bHQgd2l0aGluCi0gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgc3BlY2lmaWVkIGFzICdtZXRhLWJzcC1uYW1lJy4gIFRoZSAtbyBvcHRpb24KLSBjYW4gYmUgdXNlZCB0byBwbGFjZSB0aGUgQlNQIGxheWVyIGluIGEgZGlyZWN0b3J5IHdpdGggYSBkaWZmZXJlbnQKLSBuYW1lIGFuZCBsb2NhdGlvbi4KLQotIFRoZSB2YWx1ZSBvZiB0aGUgJ2thcmNoJyBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyB0aGUgc2V0IG9mIGZpbGVzIHRoYXQKLSB3aWxsIGJlIGdlbmVyYXRlZCBmb3IgdGhlIEJTUCwgYWxvbmcgd2l0aCB0aGUgc3BlY2lmaWMgc2V0IG9mCi0gJ3Byb3BlcnRpZXMnIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGZpbGwgb3V0IHRoZSBCU1Atc3BlY2lmaWMgcG9ydGlvbnMKLSBvZiB0aGUgQlNQLiAgVGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhlICdrYXJjaCcgcGFyYW1ldGVyIGNhbiBiZQotIGxpc3RlZCB2aWEgJ3lvY3RvLWJzcCBsaXN0IGthcmNoJy4KLQotIE5PVEU6IE9uY2UgY3JlYXRlZCwgeW91IHNob3VsZCBhZGQgeW91ciBuZXcgbGF5ZXIgdG8geW91cgotIGJibGF5ZXJzLmNvbmYgZmlsZSBpbiBvcmRlciBmb3IgaXQgdG8gYmUgc3Vic2VxdWVudGx5IHNlZW4gYW5kCi0gbW9kaWZpZWQgYnkgdGhlIHlvY3RvLWtlcm5lbCB0b29sLgotCi0gU2VlICd5b2N0byBic3AgaGVscCBjcmVhdGUnIGZvciBtb3JlIGRldGFpbGVkIGluc3RydWN0aW9ucy4KLSIiIgotCi15b2N0b19ic3BfY3JlYXRlX2hlbHAgPSAiIiIKLQotTkFNRQotICAgIHlvY3RvLWJzcCBjcmVhdGUgLSBDcmVhdGUgYSBuZXcgWW9jdG8gQlNQCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8tYnNwIGNyZWF0ZSA8YnNwLW5hbWU+IDxrYXJjaD4gWy1vIDxESVJOQU1FPiB8IC0tb3V0ZGlyIDxESVJOQU1FPl0KLSAgICAgICAgWy1pIDxKU09OIFBST1BFUlRZIEZJTEU+IHwgLS1pbmZpbGUgPEpTT04gUFJPUEVSVFlfRklMRT5dCi0gICAgICAgIFstYyB8IC0tY29kZWR1bXBdIFstcyB8IC0tc2tpcC1naXQtY2hlY2tdCi0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIGNyZWF0ZXMgYSBZb2N0byBCU1AgYmFzZWQgb24gdGhlIHNwZWNpZmllZAotICAgIHBhcmFtZXRlcnMuICBUaGUgbmV3IEJTUCB3aWxsIGJlIGEgbmV3IFlvY3RvIEJTUCBsYXllciBjb250YWluZWQKLSAgICBieSBkZWZhdWx0IHdpdGhpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBzcGVjaWZpZWQgYXMKLSAgICAnbWV0YS1ic3AtbmFtZScuICBUaGUgLW8gb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHBsYWNlIHRoZSBCU1AgbGF5ZXIKLSAgICBpbiBhIGRpcmVjdG9yeSB3aXRoIGEgZGlmZmVyZW50IG5hbWUgYW5kIGxvY2F0aW9uLgotCi0gICAgVGhlIHZhbHVlIG9mIHRoZSAna2FyY2gnIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBzZXQgb2YgZmlsZXMKLSAgICB0aGF0IHdpbGwgYmUgZ2VuZXJhdGVkIGZvciB0aGUgQlNQLCBhbG9uZyB3aXRoIHRoZSBzcGVjaWZpYyBzZXQgb2YKLSAgICAncHJvcGVydGllcycgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZmlsbCBvdXQgdGhlIEJTUC1zcGVjaWZpYwotICAgIHBvcnRpb25zIG9mIHRoZSBCU1AuICBUaGUgcG9zc2libGUgdmFsdWVzIGZvciB0aGUgJ2thcmNoJyBwYXJhbWV0ZXIKLSAgICBjYW4gYmUgbGlzdGVkIHZpYSAneW9jdG8tYnNwIGxpc3Qga2FyY2gnLgotCi0gICAgVGhlIEJTUC1zcGVjaWZpYyBwcm9wZXJ0aWVzIHRoYXQgZGVmaW5lIHRoZSB2YWx1ZXMgdGhhdCB3aWxsIGJlCi0gICAgdXNlZCB0byBnZW5lcmF0ZSBhIHBhcnRpY3VsYXIgQlNQIGNhbiBiZSBzcGVjaWZpZWQgb24gdGhlCi0gICAgY29tbWFuZC1saW5lIHVzaW5nIHRoZSAtaSBvcHRpb24gYW5kIHN1cHBseWluZyBhIEpTT04gb2JqZWN0Ci0gICAgY29uc2lzdGluZyBvZiB0aGUgc2V0IG9mIG5hbWU6dmFsdWUgcGFpcnMgbmVlZGVkIGJ5IHRoZSBCU1AuCi0KLSAgICBJZiB0aGUgLWkgb3B0aW9uIGlzIG5vdCB1c2VkLCB0aGUgdXNlciB3aWxsIGJlIGludGVyYWN0aXZlbHkKLSAgICBwcm9tcHRlZCBmb3IgZWFjaCBvZiB0aGUgcmVxdWlyZWQgcHJvcGVydHkgdmFsdWVzLCB3aGljaCB3aWxsIHRoZW4KLSAgICBiZSB1c2VkIGFzIHZhbHVlcyBmb3IgQlNQIGdlbmVyYXRpb24uCi0KLSAgICBUaGUgc2V0IG9mIHByb3BlcnRpZXMgYXZhaWxhYmxlIGZvciBhIGdpdmVuIGFyY2hpdGVjdHVyZSBjYW4gYmUKLSAgICBsaXN0ZWQgdXNpbmcgdGhlICd5b2N0by1ic3AgbGlzdCcgY29tbWFuZC4KLQotICAgIFNwZWNpZnlpbmcgLWMgY2F1c2VzIHRoZSBQeXRob24gY29kZSBnZW5lcmF0ZWQgYW5kIGV4ZWN1dGVkIHRvCi0gICAgY3JlYXRlIHRoZSBCU1AgdG8gYmUgZHVtcGVkIHRvIHRoZSAnYnNwZ2VuLm91dCcgZmlsZSBpbiB0aGUKLSAgICBjdXJyZW50IGRpcmVjdG9yeSwgYW5kIGlzIHVzZWZ1bCBmb3IgZGVidWdnaW5nLgotCi0gICAgTk9URTogT25jZSBjcmVhdGVkLCB5b3Ugc2hvdWxkIGFkZCB5b3VyIG5ldyBsYXllciB0byB5b3VyCi0gICAgYmJsYXllcnMuY29uZiBmaWxlIGluIG9yZGVyIGZvciBpdCB0byBiZSBzdWJzZXF1ZW50bHkgc2VlbiBhbmQKLSAgICBtb2RpZmllZCBieSB0aGUgeW9jdG8ta2VybmVsIHRvb2wuCi0KLSAgICBGb3IgZXhhbXBsZSwgYXNzdW1pbmcgeW91ciBwb2t5IHJlcG8gaXMgYXQgL3BhdGgvdG8vcG9reSwgeW91ciBuZXcKLSAgICBCU1AgbGF5ZXIgaXMgYXQgL3BhdGgvdG8vcG9reS9tZXRhLW15YnNwLCBhbmQgeW91ciBidWlsZCBkaXJlY3RvcnkKLSAgICBpcyAvcGF0aC90by9idWlsZDoKLQotICAgICQgZ2VkaXQgL3BhdGgvdG8vYnVpbGQvY29uZi9iYmxheWVycy5jb25mCi0KLSAgICBCQkxBWUVSUyA/PSAiIFxcCi0gICAgICAvcGF0aC90by9wb2t5L21ldGEgXFwKLSAgICAgIC9wYXRoL3RvL3Bva3kvbWV0YS1wb2t5IFxcCi0gICAgICAvcGF0aC90by9wb2t5L21ldGEtbXlic3AgXFwKLSAgICAgICIKLSIiIgotCi15b2N0b19ic3BfbGlzdF91c2FnZSA9ICIiIgotCi0gdXNhZ2U6IHlvY3RvLWJzcCBsaXN0IGthcmNoCi0gICAgICAgIHlvY3RvLWJzcCBsaXN0IDxrYXJjaD4gLS1wcm9wZXJ0aWVzCi0gICAgICAgICAgICAgICAgWy1vIDxKU09OIFBST1BFUlRZIEZJTEU+IHwgLS1vdXRmaWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQotICAgICAgICB5b2N0by1ic3AgbGlzdCA8a2FyY2g+IC0tcHJvcGVydHkgPHh4eD4KLSAgICAgICAgICAgICAgICBbLW8gPEpTT04gUFJPUEVSVFkgRklMRT4gfCAtLW91dGZpbGUgPEpTT04gUFJPUEVSVFlfRklMRT5dCi0KLSBUaGlzIGNvbW1hbmQgZW51bWVyYXRlcyB0aGUgY29tcGxldGUgc2V0IG9mIHBvc3NpYmxlIHZhbHVlcyBmb3IgYQotIHNwZWNpZmllZCBvcHRpb24gb3IgcHJvcGVydHkgbmVlZGVkIGJ5IHRoZSBCU1AgY3JlYXRpb24gcHJvY2Vzcy4KLQotIFRoZSBmaXJzdCBmb3JtIGVudW1lcmF0ZXMgYWxsIHRoZSBwb3NzaWJsZSB2YWx1ZXMgdGhhdCBleGlzdCBhbmQgY2FuCi0gYmUgc3BlY2lmaWVkIGZvciB0aGUgJ2thcmNoJyBwYXJhbWV0ZXIgdG8gdGhlICd5b2N0byBic3AgY3JlYXRlJwotIGNvbW1hbmQuCi0KLSBUaGUgc2Vjb25kIGZvcm0gZW51bWVyYXRlcyBhbGwgdGhlIHBvc3NpYmxlIHByb3BlcnRpZXMgdGhhdCBleGlzdCBhbmQKLSBtdXN0IGhhdmUgdmFsdWVzIHNwZWNpZmllZCBmb3IgdGhlbSBpbiB0aGUgJ3lvY3RvIGJzcCBjcmVhdGUnIGNvbW1hbmQKLSBmb3IgdGhlIGdpdmVuICdrYXJjaCcuCi0KLSBUaGUgdGhpcmQgZm9ybSBlbnVtZXJhdGVzIGFsbCB0aGUgcG9zc2libGUgdmFsdWVzIHRoYXQgZXhpc3QgYW5kIGNhbgotIGJlIHNwZWNpZmllZCBmb3IgYW55IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgdGhlIGdpdmVuCi0gJ2thcmNoJyBpbiB0aGUgJ3lvY3RvIGJzcCBjcmVhdGUnIGNvbW1hbmQuCi0KLSBTZWUgJ3lvY3RvLWJzcCBoZWxwIGxpc3QnIGZvciBtb3JlIGRldGFpbHMuCi0iIiIKLQoteW9jdG9fYnNwX2xpc3RfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8tYnNwIGxpc3QgLSBMaXN0IGF2YWlsYWJsZSB2YWx1ZXMgZm9yIG9wdGlvbnMgYW5kIEJTUCBwcm9wZXJ0aWVzCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8tYnNwIGxpc3Qga2FyY2gKLSAgICB5b2N0by1ic3AgbGlzdCA8a2FyY2g+IC0tcHJvcGVydGllcwotICAgICAgICAgICAgWy0tbyA8SlNPTiBQUk9QRVJUWSBGSUxFPiB8IC1vdXRmaWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQotICAgIHlvY3RvLWJzcCBsaXN0IDxrYXJjaD4gLS1wcm9wZXJ0eSA8eHh4PgotICAgICAgICAgICAgWy0tbyA8SlNPTiBQUk9QRVJUWSBGSUxFPiB8IC1vdXRmaWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQotCi1ERVNDUklQVElPTgotICAgIFRoaXMgY29tbWFuZCBlbnVtZXJhdGVzIHRoZSBjb21wbGV0ZSBzZXQgb2YgcG9zc2libGUgdmFsdWVzIGZvciBhCi0gICAgc3BlY2lmaWVkIG9wdGlvbiBvciBwcm9wZXJ0eSBuZWVkZWQgYnkgdGhlIEJTUCBjcmVhdGlvbiBwcm9jZXNzLgotCi0gICAgVGhlIGZpcnN0IGZvcm0gZW51bWVyYXRlcyBhbGwgdGhlIHBvc3NpYmxlIHZhbHVlcyB0aGF0IGV4aXN0IGFuZAotICAgIGNhbiBiZSBzcGVjaWZpZWQgZm9yIHRoZSAna2FyY2gnIHBhcmFtZXRlciB0byB0aGUgJ3lvY3RvIGJzcAotICAgIGNyZWF0ZScgY29tbWFuZC4gIEV4YW1wbGUgb3V0cHV0IGZvciB0aGUgJ2xpc3Qga2FyY2gnIGNvbW1hbmQ6Ci0KLSAgICAkIHlvY3RvLWJzcCBsaXN0IGthcmNoCi0gICAgQXJjaGl0ZWN0dXJlcyBhdmFpbGFibGU6Ci0gICAgICAgIGFybQotICAgICAgICBwb3dlcnBjCi0gICAgICAgIGkzODYKLSAgICAgICAgbWlwcwotICAgICAgICBtaXBzNjQKLSAgICAgICAgeDg2XzY0Ci0gICAgICAgIHFlbXUKLQotICAgIFRoZSBzZWNvbmQgZm9ybSBlbnVtZXJhdGVzIGFsbCB0aGUgcG9zc2libGUgcHJvcGVydGllcyB0aGF0IGV4aXN0Ci0gICAgYW5kIG11c3QgaGF2ZSB2YWx1ZXMgc3BlY2lmaWVkIGZvciB0aGVtIGluIHRoZSAneW9jdG8gYnNwIGNyZWF0ZScKLSAgICBjb21tYW5kIGZvciB0aGUgZ2l2ZW4gJ2thcmNoJy4gIFRoaXMgY29tbWFuZCBpcyBtYWlubHkgbWVhbnQgdG8KLSAgICBhbGxvdyB0aGUgZGV2ZWxvcG1lbnQgdXNlciBpbnRlcmZhY2UgYWx0ZXJuYXRpdmVzIHRvIHRoZSBkZWZhdWx0Ci0gICAgdGV4dC1iYXNlZCBwcm9tcHRpbmcgaW50ZXJmYWNlLiAgSWYgdGhlIC1vIG9wdGlvbiBpcyBzcGVjaWZpZWQsCi0gICAgdGhlIGxpc3Qgb2YgcHJvcGVydGllcywgaW4gYWRkaXRpb24gdG8gYmVpbmcgZGlzcGxheWVkLCB3aWxsIGJlCi0gICAgd3JpdHRlbiB0byB0aGUgc3BlY2lmaWVkIGZpbGUgYXMgYSBKU09OIG9iamVjdC4gIEluIHRoaXMgY2FzZSwgdGhlCi0gICAgb2JqZWN0IHdpbGwgY29uc2lzdCBvZiB0aGUgc2V0IG9mIG5hbWU6dmFsdWUgcGFpcnMgY29ycmVzcG9uZGluZwotICAgIHRvIHRoZSAocG9zc2libHkgbmVzdGVkKSBkaWN0aW9uYXJ5IG9mIHByb3BlcnRpZXMgZGVmaW5lZCBieSB0aGUKLSAgICBpbnB1dCBzdGF0ZW1lbnRzIHVzZWQgYnkgdGhlIEJTUC4gIFNvbWUgZXhhbXBsZSBvdXRwdXQgZm9yIHRoZQotICAgICdsaXN0IC0tcHJvcGVydGllcycgY29tbWFuZDoKLQotICAgICQgeW9jdG8tYnNwIGxpc3QgYXJtIC0tcHJvcGVydGllcwotICAgICJ0b3VjaHNjcmVlbiIgOiB7Ci0gICAgICAgICJtc2ciIDogRG9lcyB5b3VyIEJTUCBoYXZlIGEgdG91Y2hzY3JlZW4/ICh5L04pCi0gICAgICAgICJkZWZhdWx0IiA6IG4KLSAgICAgICAgInR5cGUiIDogYm9vbGVhbgotICAgIH0KLSAgICAidWJvb3RfbG9hZGFkZHJlc3MiIDogewotICAgICAgICAibXNnIiA6IFBsZWFzZSBzcGVjaWZ5IGEgdmFsdWUgZm9yIFVCT09UX0xPQURBRERSRVNTLgotICAgICAgICAiZGVmYXVsdCIgOiAweDgwMDA4MDAwCi0gICAgICAgICJ0eXBlIiA6IGVkaXQKLSAgICAgICAgInByaW8iIDogNDAKLSAgICB9Ci0gICAgImtlcm5lbF9jaG9pY2UiIDogewotICAgICAgICAicHJpbyIgOiAxMAotICAgICAgICAiZGVmYXVsdCIgOiBsaW51eC15b2N0b18zLjIKLSAgICAgICAgImRlcGVuZHMtb24iIDogdXNlX2RlZmF1bHRfa2VybmVsCi0gICAgICAgICJkZXBlbmRzLW9uLXZhbCIgOiBuCi0gICAgICAgICJtc2ciIDogUGxlYXNlIGNob29zZSB0aGUga2VybmVsIHRvIHVzZSBpbiB0aGlzIEJTUCA9PgotICAgICAgICAidHlwZSIgOiBjaG9pY2VsaXN0Ci0gICAgICAgICJnZW4iIDogYnNwLmtlcm5lbC5rZXJuZWxzCi0gICAgfQotICAgICJpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b18zLjAiOiIgOiB7Ci0gICAgICAgICJiYXNlX2ticmFuY2hfbGludXhfeW9jdG9fM18wIiA6IHsKLSAgICAgICAgICAgICJwcmlvIiA6IDIwCi0gICAgICAgICAgICAiZGVmYXVsdCIgOiB5b2N0by9zdGFuZGFyZAotICAgICAgICAgICAgImRlcGVuZHMtb24iIDogbmV3X2ticmFuY2hfbGludXhfeW9jdG9fM18wCi0gICAgICAgICAgICAiZGVwZW5kcy1vbi12YWwiIDogeQotICAgICAgICAgICAgIm1zZyIgOiBQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbiA9PgotICAgICAgICAgICAgInR5cGUiIDogY2hvaWNlbGlzdAotICAgICAgICAgICAgImdlbiIgOiBic3Aua2VybmVsLmFsbF9icmFuY2hlcwotICAgIH0KLSAgICAuCi0gICAgLgotICAgIC4KLQotICAgIEVhY2ggZW50cnkgaW4gdGhlIG91dHB1dCBjb25zaXN0cyBvZiB0aGUgbmFtZSBvZiB0aGUgaW5wdXQgZWxlbWVudAotICAgIGUuZy4gInRvdWNoc2NyZWVuIiwgZm9sbG93ZWQgYnkgdGhlIHByb3BlcnRpZXMgZGVmaW5lZCBmb3IgdGhhdAotICAgIGVsZW1lbnQgZW5jbG9zZWQgaW4gYnJhY2VzLiAgVGhpcyBpbmZvcm1hdGlvbiBzaG91bGQgcHJvdmlkZQotICAgIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gY3JlYXRlIGEgY29tcGxldGUgdXNlciBpbnRlcmZhY2Ugd2l0aC4KLSAgICBUd28gZmVhdHVyZXMgb2YgdGhlIHNjaGVtZSBwcm92aWRlIGZvciBjb25kaXRpb25hbCBpbnB1dC4gIEZpcnN0LAotICAgIGlmIGEgUHl0aG9uICJpZiIgc3RhdGVtZW50IGFwcGVhcnMgaW4gcGxhY2Ugb2YgYW4gaW5wdXQgZWxlbWVudAotICAgIG5hbWUsIHRoZSBzZXQgb2YgZW5jbG9zZWQgaW5wdXQgZWxlbWVudHMgYXBwbHkgYW5kIHNob3VsZCBiZQotICAgIHByZXNlbnRlZCB0byB0aGUgdXNlciBvbmx5IGlmIHRoZSAnaWYnIHN0YXRlbWVudCBldmFsdWF0ZXMgdG8KLSAgICB0cnVlLiAgVGhlIHRlc3QgaW4gdGhlIGlmIHN0YXRlbWVudCB3aWxsIGFsd2F5cyByZWZlcmVuY2UgYW5vdGhlcgotICAgIGlucHV0IGVsZW1lbnQgaW4gdGhlIGxpc3QsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGVsZW1lbnQgYmVpbmcKLSAgICB0ZXN0ZWQgc2hvdWxkIGJlIHByZXNlbnRlZCB0byB0aGUgdXNlciBiZWZvcmUgdGhlIGVsZW1lbnRzCi0gICAgZW5jbG9zZWQgYnkgdGhlIGlmIGJsb2NrLiAgU2Vjb25kbHksIGluIGEgc2ltaWxhciB3YXksIHNvbWUKLSAgICBlbGVtZW50cyBjb250YWluICJkZXBlbmRzLW9uIiBhbmQgZGVwZW5kcy1vbi12YWwiIHRhZ3MsIHdoaWNoIG1lYW4KLSAgICB0aGF0IHRoZSBhZmZlY3RlZCBpbnB1dCBlbGVtZW50IHNob3VsZCBvbmx5IGJlIHByZXNlbnRlZCB0byB0aGUKLSAgICB1c2VyIGlmIHRoZSBlbGVtZW50IGl0IGRlcGVuZHMgb24gaGFzIGFscmVhZHkgYmVlbiBwcmVzZW50ZWQgdG8KLSAgICB0aGUgdXNlciBhbmQgdGhlIHVzZXIgaGFzIHNlbGVjdGVkIHRoZSBzcGVjaWZpZWQgdmFsdWUgZm9yIHRoYXQKLSAgICBlbGVtZW50LgotCi0gICAgVGhlIHRoaXJkIGZvcm0gZW51bWVyYXRlcyBhbGwgdGhlIHBvc3NpYmxlIHZhbHVlcyB0aGF0IGV4aXN0IGFuZAotICAgIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGFueSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSBnaXZlbgotICAgICdrYXJjaCcgaW4gdGhlICd5b2N0byBic3AgY3JlYXRlJyBjb21tYW5kLiAgSWYgdGhlIC1vIG9wdGlvbiBpcwotICAgIHNwZWNpZmllZCwgdGhlIGxpc3Qgb2YgdmFsdWVzIGZvciB0aGUgZ2l2ZW4gcHJvcGVydHksIGluIGFkZGl0aW9uCi0gICAgdG8gYmVpbmcgZGlzcGxheWVkLCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIHNwZWNpZmllZCBmaWxlIGFzIGEKLSAgICBKU09OIG9iamVjdC4gIEluIHRoaXMgY2FzZSwgdGhlIG9iamVjdCB3aWxsIGNvbnNpc3Qgb2YgdGhlIHNldCBvZgotICAgIG5hbWU6dmFsdWUgcGFpcnMgY29ycmVzcG9uZGluZyB0byB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzCi0gICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm9wZXJ0eS4KLQotICAgICQgeW9jdG8tYnNwIGxpc3QgaTM4NiAtLXByb3BlcnR5IHhzZXJ2ZXJfY2hvaWNlCi0gICAgICAgIFsieHNlcnZlcl92ZXNhIiwgIlZFU0EgeHNlcnZlciBzdXBwb3J0Il0KLSAgICAgICAgWyJ4c2VydmVyX2k5MTUiLCAiaTkxNSB4c2VydmVyIHN1cHBvcnQiXQotCi0gICAgJCB5b2N0by1ic3AgbGlzdCBhcm0gLS1wcm9wZXJ0eSBiYXNlX2ticmFuY2hfbGludXhfeW9jdG9fM18wCi0gICAgICAgIEdldHRpbmcgYnJhbmNoZXMgZnJvbSByZW1vdGUgcmVwbyBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by0zLjAuLi4KLSAgICAgICAgWyJ5b2N0by9iYXNlIiwgInlvY3RvL2Jhc2UiXQotICAgICAgICBbInlvY3RvL2VnMjB0IiwgInlvY3RvL2VnMjB0Il0KLSAgICAgICAgWyJ5b2N0by9nbWE1MDAiLCAieW9jdG8vZ21hNTAwIl0KLSAgICAgICAgWyJ5b2N0by9wdnIiLCAieW9jdG8vcHZyIl0KLSAgICAgICAgWyJ5b2N0by9zdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIsICJ5b2N0by9zdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyJdCi0gICAgICAgIFsieW9jdG8vc3RhbmRhcmQvYmFzZSIsICJ5b2N0by9zdGFuZGFyZC9iYXNlIl0KLSAgICAgICAgWyJ5b2N0by9zdGFuZGFyZC9jZWRhcnRyYWlsIiwgInlvY3RvL3N0YW5kYXJkL2NlZGFydHJhaWwiXQotICAgICAgICAuCi0gICAgICAgIC4KLSAgICAgICAgLgotICAgICAgICBbInlvY3RvL3N0YW5kYXJkL3FlbXUtcHBjMzIiLCAieW9jdG8vc3RhbmRhcmQvcWVtdS1wcGMzMiJdCi0gICAgICAgIFsieW9jdG8vc3RhbmRhcmQvcm91dGVyc3RhdGlvbnBybyIsICJ5b2N0by9zdGFuZGFyZC9yb3V0ZXJzdGF0aW9ucHJvIl0KLQotICAgIFRoZSB0aGlyZCBmb3JtIGFzIHdlbGwgaXMgbWVhbnQgbWFpbmx5IGZvciBkZXZlbG9wZXJzIG9mCi0gICAgYWx0ZXJuYXRpdmUgaW50ZXJmYWNlcyAtIGl0IGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIGZldGNoIHRoZQotICAgIHBvc3NpYmxlIHZhbHVlcyBmb3IgYSBnaXZlbiBpbnB1dCBlbGVtZW50IG9uLWRlbWFuZC4gIFRoaXMKLSAgICBvbi1kZW1hbmQgY2FwYWJpbGl0eSBpcyBlc3BlY2lhbGx5IHZhbHVhYmxlIGZvciBlbGVtZW50cyB0aGF0Ci0gICAgcmVxdWlyZSByZWxhdGl2ZWx5IGV4cGVuc2l2ZSByZW1vdGUgb3BlcmF0aW9ucyB0byBmdWxmaWxsLCBzdWNoIGFzCi0gICAgdGhlIGV4YW1wbGUgdGhhdCByZXR1cm5zIHRoZSBzZXQgb2YgYnJhbmNoZXMgYXZhaWxhYmxlIGluIGEgcmVtb3RlCi0gICAgZ2l0IHRyZWUgYWJvdmUuCi0KLSIiIgotCi0jIwotIyB5b2N0by1rZXJuZWwgaGVscCBhbmQgdXNhZ2Ugc3RyaW5ncwotIyMKLQoteW9jdG9fa2VybmVsX3VzYWdlID0gIiIiCi0KLSBNb2RpZnkgYW5kIGxpc3QgWW9jdG8gQlNQIGtlcm5lbCBjb25maWcgaXRlbXMgYW5kIHBhdGNoZXMuCi0KLSB1c2FnZTogeW9jdG8ta2VybmVsIFstLXZlcnNpb25dIFstLWhlbHBdIENPTU1BTkQgW0FSR1NdCi0KLSBDdXJyZW50ICd5b2N0by1rZXJuZWwnIGNvbW1hbmRzIGFyZToKLSAgIGNvbmZpZyBsaXN0ICAgICAgIExpc3QgdGhlIG1vZGlmaWFibGUgc2V0IG9mIGJhcmUga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciBhIEJTUAotICAgY29uZmlnIGFkZCAgICAgICAgQWRkIG9yIG1vZGlmeSBiYXJlIGtlcm5lbCBjb25maWcgb3B0aW9ucyBmb3IgYSBCU1AKLSAgIGNvbmZpZyBybSAgICAgICAgIFJlbW92ZSBiYXJlIGtlcm5lbCBjb25maWcgb3B0aW9ucyBmcm9tIGEgQlNQCi0gICBwYXRjaCBsaXN0ICAgICAgICBMaXN0IHRoZSBwYXRjaGVzIGFzc29jaWF0ZWQgd2l0aCBhIEJTUAotICAgcGF0Y2ggYWRkICAgICAgICAgUGF0Y2ggdGhlIFlvY3RvIGtlcm5lbCBmb3IgYSBCU1AKLSAgIHBhdGNoIHJtICAgICAgICAgIFJlbW92ZSBwYXRjaGVzIGZyb20gYSBCU1AKLSAgIGZlYXR1cmUgbGlzdCAgICAgIExpc3QgdGhlIGZlYXR1cmVzIHVzZWQgYnkgYSBCU1AKLSAgIGZlYXR1cmUgYWRkICAgICAgIEhhdmUgYSBCU1AgdXNlIGEgZmVhdHVyZQotICAgZmVhdHVyZSBybSAgICAgICAgSGF2ZSBhIEJTUCBzdG9wIHVzaW5nIGEgZmVhdHVyZQotICAgZmVhdHVyZXMgbGlzdCAgICAgTGlzdCB0aGUgZmVhdHVyZXMgYXZhaWxhYmxlIHRvIEJTUHMKLSAgIGZlYXR1cmUgZGVzY3JpYmUgIERlc2NyaWJlIGEgcGFydGljdWxhciBmZWF0dXJlCi0gICBmZWF0dXJlIGNyZWF0ZSAgICBDcmVhdGUgYSBuZXcgQlNQLWxvY2FsIGZlYXR1cmUKLSAgIGZlYXR1cmUgZGVzdHJveSAgIFJlbW92ZSBhIEJTUC1sb2NhbCBmZWF0dXJlCi0KLSBTZWUgJ3lvY3RvLWtlcm5lbCBoZWxwIENPTU1BTkQnIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGEgc3BlY2lmaWMgY29tbWFuZC4KLQotIiIiCi0KLQoteW9jdG9fa2VybmVsX2hlbHBfdXNhZ2UgPSAiIiIKLQotIHVzYWdlOiB5b2N0by1rZXJuZWwgaGVscCA8c3ViY29tbWFuZD4KLQotIFRoaXMgY29tbWFuZCBkaXNwbGF5cyBkZXRhaWxlZCBoZWxwIGZvciB0aGUgc3BlY2lmaWVkIHN1YmNvbW1hbmQuCi0iIiIKLQoteW9jdG9fa2VybmVsX2NvbmZpZ19saXN0X3VzYWdlID0gIiIiCi0KLSBMaXN0IHRoZSBtb2RpZmlhYmxlIHNldCBvZiBiYXJlIGtlcm5lbCBjb25maWcgb3B0aW9ucyBmb3IgYSBCU1AKLQotIHVzYWdlOiB5b2N0by1rZXJuZWwgY29uZmlnIGxpc3QgPGJzcC1uYW1lPgotCi0gVGhpcyBjb21tYW5kIGxpc3RzIHRoZSAnbW9kaWZpYWJsZScgY29uZmlnIGl0ZW1zIGZvciBhIEJTUCBpLmUuIHRoZQotIGl0ZW1zIHdoaWNoIGFyZSBlbGlnaWJsZSBmb3IgbW9kaWZpY2F0aW9uIG9yIHJlbW92YWwgYnkgb3RoZXIKLSB5b2N0by1rZXJuZWwgY29tbWFuZHMuCi0KLSAnbW9kaWZpYWJsZScgY29uZmlnIGl0ZW1zIGFyZSB0aGUgY29uZmlnIGl0ZW1zIGNvbnRhaW5lZCBhIEJTUCdzCi0gdXNlci1jb25maWcuY2ZnIGJhc2UgY29uZmlnLgotIiIiCi0KLQoteW9jdG9fa2VybmVsX2NvbmZpZ19saXN0X2hlbHAgPSAiIiIKLQotTkFNRQotICAgIHlvY3RvLWtlcm5lbCBjb25maWcgbGlzdCAtIExpc3QgdGhlIG1vZGlmaWFibGUgc2V0IG9mIGJhcmUga2VybmVsCi0gICAgY29uZmlnIG9wdGlvbnMgZm9yIGEgQlNQCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8ta2VybmVsIGNvbmZpZyBsaXN0IDxic3AtbmFtZT4KLQotREVTQ1JJUFRJT04KLSAgICBUaGlzIGNvbW1hbmQgbGlzdHMgdGhlICdtb2RpZmlhYmxlJyBjb25maWcgaXRlbXMgZm9yIGEgQlNQCi0gICAgaS5lLiB0aGUgaXRlbXMgd2hpY2ggYXJlIGVsaWdpYmxlIGZvciBtb2RpZmljYXRpb24gb3IgcmVtb3ZhbCBieQotICAgIG90aGVyIHlvY3RvLWtlcm5lbCBjb21tYW5kcy4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9jb25maWdfYWRkX3VzYWdlID0gIiIiCi0KLSBBZGQgb3IgbW9kaWZ5IGJhcmUga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciBhIEJTUAotCi0gdXNhZ2U6IHlvY3RvLWtlcm5lbCBjb25maWcgYWRkIDxic3AtbmFtZT4gWzxDT05GSUdfWFhYPXg+IC4uLl0KLQotIFRoaXMgY29tbWFuZCBhZGRzIG9uZSBvciBtb3JlIENPTkZJR19YWFg9eCBpdGVtcyB0byBhIEJTUCdzIHVzZXItY29uZmlnLmNmZwotIGJhc2UgY29uZmlnLgotIiIiCi0KLQoteW9jdG9fa2VybmVsX2NvbmZpZ19hZGRfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIGNvbmZpZyBhZGQgLSBBZGQgb3IgbW9kaWZ5IGJhcmUga2VybmVsIGNvbmZpZyBvcHRpb25zCi0gICAgZm9yIGEgQlNQCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8ta2VybmVsIGNvbmZpZyBhZGQgPGJzcC1uYW1lPiBbPENPTkZJR19YWFg9eD4gLi4uXQotCi1ERVNDUklQVElPTgotICAgIFRoaXMgY29tbWFuZCBhZGRzIG9uZSBvciBtb3JlIENPTkZJR19YWFg9eCBpdGVtcyB0byBhIEJTUCdzCi0gICAgZm9vLmNmZyBiYXNlIGNvbmZpZy4KLQotICAgIE5PVEU6IEl0J3MgdXAgdG8gdGhlIHVzZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZSBjb25maWcKLSAgICBvcHRpb25zIGJlaW5nIGFkZGVkIG1ha2Ugc2Vuc2Ugb3Igbm90IC0gdGhpcyBjb21tYW5kIGRvZXMgbm8KLSAgICBzYW5pdHkgY2hlY2tpbmcgb3IgdmVyaWZpY2F0aW9uIG9mIGFueSBraW5kIHRvIGVuc3VyZSB0aGF0IGEKLSAgICBjb25maWcgb3B0aW9uIHJlYWxseSBtYWtlcyBzZW5zZSBhbmQgd2lsbCBhY3R1YWxseSBiZSBzZXQgaW4gaW4KLSAgICB0aGUgZmluYWwgY29uZmlnLiAgRm9yIGV4YW1wbGUsIGlmIGEgY29uZmlnIG9wdGlvbiBkZXBlbmRzIG9uCi0gICAgb3RoZXIgY29uZmlnIG9wdGlvbnMsIGl0IHdpbGwgYmUgdHVybmVkIG9mZiBieSBrY29uZmlnIGlmIHRoZQotICAgIG90aGVyIG9wdGlvbnMgYXJlbid0IHNldCBjb3JyZWN0bHkuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfY29uZmlnX3JtX3VzYWdlID0gIiIiCi0KLSBSZW1vdmUgYmFyZSBrZXJuZWwgY29uZmlnIG9wdGlvbnMgZnJvbSBhIEJTUAotCi0gdXNhZ2U6IHlvY3RvLWtlcm5lbCBjb25maWcgcm0gPGJzcC1uYW1lPgotCi0gVGhpcyBjb21tYW5kIHJlbW92ZXMgKHR1cm5zIG9mZikgb25lIG9yIG1vcmUgQ09ORklHX1hYWCBpdGVtcyBmcm9tIGEKLSBCU1AncyB1c2VyLWNvbmZpZy5jZmcgYmFzZSBjb25maWcuCi0KLSBUaGUgc2V0IG9mIGNvbmZpZyBpdGVtcyBhdmFpbGFibGUgdG8gYmUgcmVtb3ZlZCBieSB0aGlzIGNvbW1hbmQgZm9yIGEKLSBCU1AgaXMgbGlzdGVkIGFuZCB0aGUgdXNlciBwcm9tcHRlZCBmb3IgdGhlIHNwZWNpZmljIGl0ZW1zIHRvIHJlbW92ZS4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9jb25maWdfcm1faGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIGNvbmZpZyBybSAtIFJlbW92ZSBiYXJlIGtlcm5lbCBjb25maWcgb3B0aW9ucyBmcm9tIGEKLSAgICBCU1AKLQotU1lOT1BTSVMKLSAgICB5b2N0by1rZXJuZWwgY29uZmlnIHJtIDxic3AtbmFtZT4KLQotREVTQ1JJUFRJT04KLSAgICBUaGlzIGNvbW1hbmQgcmVtb3ZlcyAodHVybnMgb2ZmKSBvbmUgb3IgbW9yZSBDT05GSUdfWFhYIGl0ZW1zIGZyb20gYQotICAgIEJTUCdzIHVzZXItY29uZmlnLmNmZyBiYXNlIGNvbmZpZy4KLQotICAgIFRoZSBzZXQgb2YgY29uZmlnIGl0ZW1zIGF2YWlsYWJsZSB0byBiZSByZW1vdmVkIGJ5IHRoaXMgY29tbWFuZAotICAgIGZvciBhIEJTUCBpcyBsaXN0ZWQgYW5kIHRoZSB1c2VyIHByb21wdGVkIGZvciB0aGUgc3BlY2lmaWMgaXRlbXMKLSAgICB0byByZW1vdmUuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfcGF0Y2hfbGlzdF91c2FnZSA9ICIiIgotCi0gTGlzdCB0aGUgcGF0Y2hlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGtlcm5lbCBmb3IgYSBCU1AKLQotIHVzYWdlOiB5b2N0by1rZXJuZWwgcGF0Y2ggbGlzdCA8YnNwLW5hbWU+Ci0KLSBUaGlzIGNvbW1hbmQgbGlzdHMgdGhlIHBhdGNoZXMgYXNzb2NpYXRlZCB3aXRoIGEgQlNQLgotCi0gTk9URTogdGhpcyBvbmx5IGFwcGxpZXMgdG8gcGF0Y2hlcyBsaXN0ZWQgaW4gdGhlIGtlcm5lbCByZWNpcGUncwotIHVzZXItcGF0Y2hlcy5zY2MgZmlsZSAoYW5kIGN1cnJlbnRseSByZXBlYXRlZCBpbiBpdHMgU1JDX1VSSSkuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfcGF0Y2hfbGlzdF9oZWxwID0gIiIiCi0KLU5BTUUKLSAgICB5b2N0by1rZXJuZWwgcGF0Y2ggbGlzdCAtIExpc3QgdGhlIHBhdGNoZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXJuZWwKLSAgICBmb3IgYSBCU1AKLQotU1lOT1BTSVMKLSAgICB5b2N0by1rZXJuZWwgcGF0Y2ggbGlzdCA8YnNwLW5hbWU+Ci0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIGxpc3RzIHRoZSBwYXRjaGVzIGFzc29jaWF0ZWQgd2l0aCBhIEJTUC4KLQotICAgIE5PVEU6IHRoaXMgb25seSBhcHBsaWVzIHRvIHBhdGNoZXMgbGlzdGVkIGluIHRoZSBrZXJuZWwgcmVjaXBlJ3MKLSAgICB1c2VyLXBhdGNoZXMuc2NjIGZpbGUgKGFuZCBjdXJyZW50bHkgcmVwZWF0ZWQgaW4gaXRzIFNSQ19VUkkpLgotIiIiCi0KLQoteW9jdG9fa2VybmVsX3BhdGNoX2FkZF91c2FnZSA9ICIiIgotCi0gUGF0Y2ggdGhlIFlvY3RvIGtlcm5lbCBmb3IgYSBzcGVjaWZpYyBCU1AKLQotIHVzYWdlOiB5b2N0by1rZXJuZWwgcGF0Y2ggYWRkIDxic3AtbmFtZT4gWzxQQVRDSD4gLi4uXQotCi0gVGhpcyBjb21tYW5kIGFkZHMgb25lIG9yIG1vcmUgcGF0Y2hlcyB0byBhIEJTUCdzIG1hY2hpbmUgYnJhbmNoLiAgVGhlCi0gcGF0Y2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgQlNQJ3MgbGludXgteW9jdG8ga2VybmVsIHVzZXItcGF0Y2hlcy5zY2MKLSBmaWxlIChhbmQgY3VycmVudGx5IHJlcGVhdGVkIGluIGl0cyBTUkNfVVJJKSBhbmQgd2lsbCBiZSBndWFyYW50ZWVkCi0gdG8gYmUgYXBwbGllZCBpbiB0aGUgb3JkZXIgc3BlY2lmaWVkLgotIiIiCi0KLQoteW9jdG9fa2VybmVsX3BhdGNoX2FkZF9oZWxwID0gIiIiCi0KLU5BTUUKLSAgICB5b2N0by1rZXJuZWwgcGF0Y2ggYWRkIC0gUGF0Y2ggdGhlIFlvY3RvIGtlcm5lbCBmb3IgYSBzcGVjaWZpYyBCU1AKLQotU1lOT1BTSVMKLSAgICB5b2N0by1rZXJuZWwgcGF0Y2ggYWRkIDxic3AtbmFtZT4gWzxQQVRDSD4gLi4uXQotCi1ERVNDUklQVElPTgotICAgIFRoaXMgY29tbWFuZCBhZGRzIG9uZSBvciBtb3JlIHBhdGNoZXMgdG8gYSBCU1AncyBtYWNoaW5lIGJyYW5jaC4KLSAgICBUaGUgcGF0Y2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgQlNQJ3MgbGludXgteW9jdG8ga2VybmVsCi0gICAgdXNlci1wYXRjaGVzLnNjYyBmaWxlIChhbmQgY3VycmVudGx5IHJlcGVhdGVkIGluIGl0cyBTUkNfVVJJKSBhbmQKLSAgICB3aWxsIGJlIGd1YXJhbnRlZWQgdG8gYmUgYXBwbGllZCBpbiB0aGUgb3JkZXIgc3BlY2lmaWVkLgotCi0gICAgTk9URTogSXQncyB1cCB0byB0aGUgdXNlciB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIHBhdGNoZXMKLSAgICBiZWluZyBhZGRlZCBtYWtlcyBzZW5zZSBvciBub3QgLSB0aGlzIGNvbW1hbmQgZG9lcyBubyBzYW5pdHkKLSAgICBjaGVja2luZyBvciB2ZXJpZmljYXRpb24gb2YgYW55IGtpbmQgdG8gZW5zdXJlIHRoYXQgYSBwYXRjaCBjYW4KLSAgICBhY3R1YWxseSBiZSBhcHBsaWVkIHRvIHRoZSBCU1AncyBrZXJuZWwgYnJhbmNoOyBpdCdzIGFzc3VtZWQgdGhhdAotICAgIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGRvbmUgdGhhdC4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9wYXRjaF9ybV91c2FnZSA9ICIiIgotCi0gUmVtb3ZlIGEgcGF0Y2ggZnJvbSB0aGUgWW9jdG8ga2VybmVsIGZvciBhIHNwZWNpZmljIEJTUAotCi0gdXNhZ2U6IHlvY3RvLWtlcm5lbCBwYXRjaCBybSA8YnNwLW5hbWU+Ci0KLSBUaGlzIGNvbW1hbmQgcmVtb3ZlcyBvbmUgb3IgbW9yZSBwYXRjaGVzIGZyb20gYSBCU1AncyBtYWNoaW5lIGJyYW5jaC4KLSBUaGUgcGF0Y2ggd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIEJTUCdzIGxpbnV4LXlvY3RvIGtlcm5lbAotIHVzZXItcGF0Y2hlcy5zY2MgZmlsZSAoYW5kIGN1cnJlbnRseSByZXBlYXRlZCBpbiBpdHMgU1JDX1VSSSkgYW5kCi0ga2VybmVsIFNSQ19VUkkgZGlyLgotCi0gVGhlIHNldCBvZiBwYXRjaGVzIGF2YWlsYWJsZSB0byBiZSByZW1vdmVkIGJ5IHRoaXMgY29tbWFuZCBmb3IgYSBCU1AKLSBpcyBsaXN0ZWQgYW5kIHRoZSB1c2VyIHByb21wdGVkIGZvciB0aGUgc3BlY2lmaWMgcGF0Y2hlcyB0byByZW1vdmUuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfcGF0Y2hfcm1faGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIHBhdGNoIHJtIC0gUmVtb3ZlIGEgcGF0Y2ggZnJvbSB0aGUgWW9jdG8ga2VybmVsIGZvciBhIHNwZWNpZmljIEJTUAotCi1TWU5PUFNJUwotICAgIHlvY3RvLWtlcm5lbCBwYXRjaCBybSA8YnNwLW5hbWU+Ci0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIHJlbW92ZXMgb25lIG9yIG1vcmUgcGF0Y2hlcyBmcm9tIGEgQlNQJ3MgbWFjaGluZQotICAgIGJyYW5jaC4gIFRoZSBwYXRjaCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgQlNQJ3MgbGludXgteW9jdG8KLSAgICBrZXJuZWwgdXNlci1wYXRjaGVzLnNjYyBmaWxlIChhbmQgY3VycmVudGx5IHJlcGVhdGVkIGluIGl0cwotICAgIFNSQ19VUkkpLgotCi0gICAgVGhlIHNldCBvZiBwYXRjaGVzIGF2YWlsYWJsZSB0byBiZSByZW1vdmVkIGJ5IHRoaXMgY29tbWFuZCBmb3IgYQotICAgIEJTUCBpcyBsaXN0ZWQgYW5kIHRoZSB1c2VyIHByb21wdGVkIGZvciB0aGUgc3BlY2lmaWMgcGF0Y2hlcyB0bwotICAgIHJlbW92ZS4KLSIiIgotCi15b2N0b19rZXJuZWxfZmVhdHVyZV9saXN0X3VzYWdlID0gIiIiCi0KLSBMaXN0IHRoZSBCU1AgZmVhdHVyZXMgdGhhdCBhcmUgYmVpbmcgdXNlZCBieSBhIEJTUAotCi0gdXNhZ2U6IHlvY3RvLWtlcm5lbCBmZWF0dXJlIGxpc3QgPGJzcC1uYW1lPgotCi0gVGhpcyBjb21tYW5kIGxpc3RzIHRoZSBmZWF0dXJlcyBiZWluZyB1c2VkIGJ5IGEgQlNQIGkuZS4gdGhlIGZlYXR1cmVzCi0gd2hpY2ggYXJlIGVsaWdpYmxlIGZvciBtb2RpZmljYXRpb24gb3IgcmVtb3ZhbCBieSBvdGhlciB5b2N0by1rZXJuZWwKLSBjb21tYW5kcy4KLQotICdtb2RpZmlhYmxlJyBmZWF0dXJlcyBhcmUgdGhlIGZlYXR1cmVzIGxpc3RlZCBpbiBhIEJTUCdzCi0gdXNlci1mZWF0dXJlcy5zY2MgZmlsZS4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9mZWF0dXJlX2xpc3RfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmUgbGlzdCAtIExpc3QgdGhlIG1vZGlmaWFibGUgc2V0IG9mIGZlYXR1cmVzCi0gICAgYmVpbmcgdXNlZCBieSBhIEJTUAotCi1TWU5PUFNJUwotICAgIHlvY3RvLWtlcm5lbCBmZWF0dXJlIGxpc3QgPGJzcC1uYW1lPgotCi1ERVNDUklQVElPTgotICAgIFRoaXMgY29tbWFuZCBsaXN0cyB0aGUgJ21vZGlmaWFibGUnIGZlYXR1cmVzIGJlaW5nIHVzZWQgYnkgYSBCU1AKLSAgICBpLmUuIHRoZSBmZWF0dXJlcyB3aGljaCBhcmUgZWxpZ2libGUgZm9yIG1vZGlmaWNhdGlvbiBvciByZW1vdmFsCi0gICAgYnkgb3RoZXIgeW9jdG8ta2VybmVsIGNvbW1hbmRzLgotIiIiCi0KLQoteW9jdG9fa2VybmVsX2ZlYXR1cmVfYWRkX3VzYWdlID0gIiIiCi0KLSBBZGQgdG8gb3IgbW9kaWZ5IHRoZSBsaXN0IG9mIGZlYXR1cmVzIGJlaW5nIHVzZWQgZm9yIGEgQlNQCi0KLSB1c2FnZTogeW9jdG8ta2VybmVsIGZlYXR1cmUgYWRkIDxic3AtbmFtZT4gWy94eHh4L3l5eXkvZmVhdHVyZS5zY2MgLi4uXQotCi0gVGhpcyBjb21tYW5kIGFkZHMgb25lIG9yIG1vcmUgZmVhdHVyZSBpdGVtcyB0byBhIEJTUCdzIGtlcm5lbAotIHVzZXItZmVhdHVyZXMuc2NjIGZpbGUsIHdoaWNoIGlzIHRoZSBmaWxlIHVzZWQgdG8gbWFuYWdlIGZlYXR1cmVzIGluCi0gYSB5b2N0by1ic3AtZ2VuZXJhdGVkIEJTUC4gIEZlYXR1cmVzIHRvIGJlIGFkZGVkIG11c3QgYmUgc3BlY2lmaWVkIGFzCi0gZnVsbHktcXVhbGlmaWVkIGZlYXR1cmUgbmFtZXMuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfZmVhdHVyZV9hZGRfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmUgYWRkIC0gQWRkIHRvIG9yIG1vZGlmeSB0aGUgbGlzdCBvZiBmZWF0dXJlcwotICAgIGJlaW5nIHVzZWQgZm9yIGEgQlNQCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmUgYWRkIDxic3AtbmFtZT4gWy94eHh4L3l5eXkvZmVhdHVyZS5zY2MgLi4uXQotCi1ERVNDUklQVElPTgotICAgIFRoaXMgY29tbWFuZCBhZGRzIG9uZSBvciBtb3JlIGZlYXR1cmUgaXRlbXMgdG8gYSBCU1AncwotICAgIHVzZXItZmVhdHVyZXMuc2NjIGZpbGUsIHdoaWNoIGlzIHRoZSBmaWxlIHVzZWQgdG8gbWFuYWdlIGZlYXR1cmVzCi0gICAgaW4gYSB5b2N0by1ic3AtZ2VuZXJhdGVkIEJTUC4gIEZlYXR1cmVzIHRvIGJlIGFkZGVkIG11c3QgYmUKLSAgICBzcGVjaWZpZWQgYXMgZnVsbHktcXVhbGlmaWVkIGZlYXR1cmUgbmFtZXMuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfZmVhdHVyZV9ybV91c2FnZSA9ICIiIgotCi0gUmVtb3ZlIGEgZmVhdHVyZSBmcm9tIHRoZSBsaXN0IG9mIGZlYXR1cmVzIGJlaW5nIHVzZWQgZm9yIGEgQlNQCi0KLSB1c2FnZTogeW9jdG8ta2VybmVsIGZlYXR1cmUgcm0gPGJzcC1uYW1lPgotCi0gVGhpcyBjb21tYW5kIHJlbW92ZXMgKHR1cm5zIG9mZikgb25lIG9yIG1vcmUgZmVhdHVyZXMgZnJvbSBhIEJTUCdzCi0gdXNlci1mZWF0dXJlcy5zY2MgZmlsZSwgd2hpY2ggaXMgdGhlIGZpbGUgdXNlZCB0byBtYW5hZ2UgZmVhdHVyZXMgaW4KLSBhIHlvY3RvLWJzcC1nZW5lcmF0ZWQgQlNQLgotCi0gVGhlIHNldCBvZiBmZWF0dXJlcyBhdmFpbGFibGUgdG8gYmUgcmVtb3ZlZCBieSB0aGlzIGNvbW1hbmQgZm9yIGEgQlNQCi0gaXMgbGlzdGVkIGFuZCB0aGUgdXNlciBwcm9tcHRlZCBmb3IgdGhlIHNwZWNpZmljIGl0ZW1zIHRvIHJlbW92ZS4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9mZWF0dXJlX3JtX2hlbHAgPSAiIiIKLQotTkFNRQotICAgIHlvY3RvLWtlcm5lbCBmZWF0dXJlIHJtIC0gUmVtb3ZlIGEgZmVhdHVyZSBmcm9tIHRoZSBsaXN0IG9mCi0gICAgZmVhdHVyZXMgYmVpbmcgdXNlZCBmb3IgYSBCU1AKLQotU1lOT1BTSVMKLSAgICB5b2N0by1rZXJuZWwgZmVhdHVyZSBybSA8YnNwLW5hbWU+Ci0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIHJlbW92ZXMgKHR1cm5zIG9mZikgb25lIG9yIG1vcmUgZmVhdHVyZXMgZnJvbSBhIEJTUCdzCi0gICAgdXNlci1mZWF0dXJlcy5zY2MgZmlsZSwgd2hpY2ggaXMgdGhlIGZpbGUgdXNlZCB0byBtYW5hZ2UgZmVhdHVyZXMKLSAgICBpbiBhIHlvY3RvLWJzcC1nZW5lcmF0ZWQgQlNQLgotCi0gICAgVGhlIHNldCBvZiBmZWF0dXJlcyBhdmFpbGFibGUgdG8gYmUgcmVtb3ZlZCBieSB0aGlzIGNvbW1hbmQgZm9yIGEKLSAgICBCU1AgaXMgbGlzdGVkIGFuZCB0aGUgdXNlciBwcm9tcHRlZCBmb3IgdGhlIHNwZWNpZmljIGl0ZW1zIHRvCi0gICAgcmVtb3ZlLgotIiIiCi0KLQoteW9jdG9fa2VybmVsX2F2YWlsYWJsZV9mZWF0dXJlc19saXN0X3VzYWdlID0gIiIiCi0KLSBMaXN0IHRoZSBzZXQgb2Yga2VybmVsIGZlYXR1cmVzIGF2YWlsYWJsZSB0byBhIEJTUAotCi0gdXNhZ2U6IHlvY3RvLWtlcm5lbCBmZWF0dXJlcyBsaXN0IDxic3AtbmFtZT4KLQotIFRoaXMgY29tbWFuZCBsaXN0cyB0aGUgY29tcGxldGUgc2V0IG9mIGtlcm5lbCBmZWF0dXJlcyBhdmFpbGFibGUgdG8gYQotIEJTUC4gIFRoaXMgaW5jbHVkZXMgdGhlIGZlYXR1cmVzIGNvbnRhaW5lZCBpbiBsaW51eC15b2N0byBtZXRhCi0gYnJhbmNoZXMgYXMgd2VsbCBhcyByZWNpcGUtc3BhY2UgZmVhdHVyZXMgZGVmaW5lZCBsb2NhbGx5IHRvIHRoZSBCU1AuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfYXZhaWxhYmxlX2ZlYXR1cmVzX2xpc3RfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmVzIGxpc3QgLSBMaXN0IHRoZSBzZXQgb2Yga2VybmVsIGZlYXR1cmVzCi0gICAgYXZhaWxhYmxlIHRvIGEgQlNQCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmVzIGxpc3QgPGJzcC1uYW1lPgotCi1ERVNDUklQVElPTgotICAgICBUaGlzIGNvbW1hbmQgbGlzdHMgdGhlIGNvbXBsZXRlIHNldCBvZiBrZXJuZWwgZmVhdHVyZXMgYXZhaWxhYmxlCi0gICAgIHRvIGEgQlNQLiAgVGhpcyBpbmNsdWRlcyB0aGUgZmVhdHVyZXMgY29udGFpbmVkIGluIGxpbnV4LXlvY3RvCi0gICAgIG1ldGEgYnJhbmNoZXMgYXMgd2VsbCBhcyByZWNpcGUtc3BhY2UgZmVhdHVyZXMgZGVmaW5lZCBsb2NhbGx5IHRvCi0gICAgIHRoZSBCU1AuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfZmVhdHVyZV9kZXNjcmliZV91c2FnZSA9ICIiIgotCi0gUHJpbnQgdGhlIGRlc2NyaXB0aW9uIGFuZCBjb21wYXRpYmlsaXR5IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIGtlcm5lbCBmZWF0dXJlCi0KLSB1c2FnZTogeW9jdG8ta2VybmVsIGZlYXR1cmUgZGVzY3JpYmUgPGJzcC1uYW1lPiBbL3h4eHgveXl5eS9mZWF0dXJlLnNjYyAuLi5dCi0KLSBUaGlzIGNvbW1hbmQgcHJpbnRzIHRoZSBkZXNjcmlwdGlvbiBhbmQgY29tcGF0aWJpbGl0eSBvZiBhIHNwZWNpZmljCi0gZmVhdHVyZSBpbiB0aGUgZm9ybWF0ICdkZXNjcmlwdGlvbiBbY29tcGF0aWJpbGl0eV0uCi0iIiIKLQotCi15b2N0b19rZXJuZWxfZmVhdHVyZV9kZXNjcmliZV9oZWxwID0gIiIiCi0KLU5BTUUKLSAgICB5b2N0by1rZXJuZWwgZmVhdHVyZSBkZXNjcmliZSAtIHByaW50IHRoZSBkZXNjcmlwdGlvbiBhbmQKLSAgICBjb21wYXRpYmlsaXR5IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIGtlcm5lbCBmZWF0dXJlCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmUgZGVzY3JpYmUgPGJzcC1uYW1lPiBbL3h4eHgveXl5eS9mZWF0dXJlLnNjYyAuLi5dCi0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIHByaW50cyB0aGUgZGVzY3JpcHRpb24gYW5kIGNvbXBhdGliaWxpdHkgb2YgYQotICAgIHNwZWNpZmljIGZlYXR1cmUgaW4gdGhlIGZvcm1hdCAnZGVzY3JpcHRpb24gW2NvbXBhdGliaWxpdHldLiAgSWYKLSAgICB0aGUgZmVhdHVyZSBkb2Vzbid0IGRlZmluZSBhIGRlc2NyaXB0aW9uIG9yIGNvbXBhdGliaWxpdHksIGEKLSAgICBzdHJpbmcgd2l0aCBnZW5lcmljIHVua25vd24gdmFsdWVzIHdpbGwgYmUgcHJpbnRlZC4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9mZWF0dXJlX2NyZWF0ZV91c2FnZSA9ICIiIgotCi0gQ3JlYXRlIGEgcmVjaXBlLXNwYWNlIGtlcm5lbCBmZWF0dXJlIGluIGEgQlNQCi0KLSB1c2FnZTogeW9jdG8ta2VybmVsIGZlYXR1cmUgY3JlYXRlIDxic3AtbmFtZT4gbmV3ZmVhdHVyZS5zY2MgXAotICAgICAgICAiRmVhdHVyZSBEZXNjcmlwdGlvbiIgY2FwYWJpbGl0aWVzIFs8Q09ORklHX1hYWD14PiAuLi5dIFs8UEFUQ0g+IC4uLl0KLQotIFRoaXMgY29tbWFuZCBjcmVhdGVzIGEgbmV3IGtlcm5lbCBmZWF0dXJlIGZyb20gdGhlIGJhcmUgY29uZmlnCi0gb3B0aW9ucyBhbmQgcGF0Y2hlcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQtbGluZS4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9mZWF0dXJlX2NyZWF0ZV9oZWxwID0gIiIiCi0KLU5BTUUKLSAgICB5b2N0by1rZXJuZWwgZmVhdHVyZSBjcmVhdGUgLSBjcmVhdGUgYSByZWNpcGUtc3BhY2Uga2VybmVsIGZlYXR1cmUKLSAgICBpbiBhIEJTUAotCi1TWU5PUFNJUwotICAgIHlvY3RvLWtlcm5lbCBmZWF0dXJlIGNyZWF0ZSA8YnNwLW5hbWU+IG5ld2ZlYXR1cmUuc2NjIFwKLSAgICAgICAgIkZlYXR1cmUgRGVzY3JpcHRpb24iIGNhcGFiaWxpdGllcyBbPENPTkZJR19YWFg9eD4gLi4uXSBbPFBBVENIPiAuLi5dCi0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIGNyZWF0ZXMgYSBuZXcga2VybmVsIGZlYXR1cmUgZnJvbSB0aGUgYmFyZSBjb25maWcKLSAgICBvcHRpb25zIGFuZCBwYXRjaGVzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZC1saW5lLiAgVGhlIG5ldwotICAgIGZlYXR1cmUgd2lsbCBiZSBjcmVhdGVkIGluIHJlY2lwZS1zcGFjZSwgc3BlY2lmaWNhbGx5IGluIGVpdGhlcgotICAgIHRoZSBrZXJuZWwgLmJiYXBwZW5kJ3MgL2ZpbGVzL2NmZyBvciAvZmlsZXMvZmVhdHVyZXMgc3ViZGlyZWN0b3J5LAotICAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgZmVhdHVyZSBjb250YWlucyBjb25maWcgaXRlbXMgb25seQotICAgIG9yIGNvbmZpZyBpdGVtcyBhbG9uZyB3aXRoIHBhdGNoZXMuICBUaGUgbmFtZWQgZmVhdHVyZSBtdXN0IGVuZAotICAgIHdpdGggLnNjYyBhbmQgbXVzdCBub3QgY29udGFpbiBhIGZlYXR1cmUgZGlyZWN0b3J5IHRvIGNvbnRhaW4gdGhlCi0gICAgZmVhdHVyZSAodGhpcyB3aWxsIGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseSksIGFuZCBhIGZlYXR1cmUKLSAgICBkZXNjcmlwdGlvbiBpbiBkb3VibGUtcXVvdGVzIGFsb25nIHdpdGggYSBjYXBhYmlsaXRpZXMgc3RyaW5nCi0gICAgKHdoaWNoIGZvciB0aGUgdGltZSBiZWluZyBjYW4gYmUgb25lIG9mOiAnYWxsJyBvciAnYm9hcmQnKS4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9mZWF0dXJlX2Rlc3Ryb3lfdXNhZ2UgPSAiIiIKLQotIERlc3Ryb3kgYSByZWNpcGUtc3BhY2Uga2VybmVsIGZlYXR1cmUgaW4gYSBCU1AKLQotIHVzYWdlOiB5b2N0by1rZXJuZWwgZmVhdHVyZSBkZXN0cm95IDxic3AtbmFtZT4gZmVhdHVyZS5zY2MKLQotIFRoaXMgY29tbWFuZCBkZXN0cm95cyBhIGtlcm5lbCBmZWF0dXJlIGRlZmluZWQgaW4gdGhlIHNwZWNpZmllZCBCU1AncwotIHJlY2lwZS1zcGFjZSBrZXJuZWwgZGVmaW5pdGlvbi4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9mZWF0dXJlX2Rlc3Ryb3lfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmUgZGVzdHJveSA8YnNwLW5hbWU+IGZlYXR1cmUuc2NjIC0gZGVzdHJveSBhCi0gICAgcmVjaXBlLXNwYWNlIGtlcm5lbCBmZWF0dXJlIGluIGEgQlNQCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmUgZGVzdHJveSA8YnNwLW5hbWU+IGZlYXR1cmUuc2NjCi0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIGRlc3Ryb3lzIGEga2VybmVsIGZlYXR1cmUgZGVmaW5lZCBpbiB0aGUgc3BlY2lmaWVkCi0gICAgQlNQJ3MgcmVjaXBlLXNwYWNlIGtlcm5lbCBkZWZpbml0aW9uLiAgVGhlIG5hbWVkIGZlYXR1cmUgbXVzdCBlbmQKLSAgICB3aXRoIC5zY2MgYW5kIG11c3Qgbm90IGNvbnRhaW4gYSBmZWF0dXJlIGRpcmVjdG9yeSB0byBjb250YWluIHRoZQotICAgIGZlYXR1cmUgKHRoaXMgd2lsbCBiZSBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHkpLiAgSWYgdGhlIGtlcm5lbAotICAgIGZlYXR1cmUgaXMgaW4gdXNlIGJ5IGEgQlNQLCBpdCBjYW4ndCBiZSByZW1vdmVkIHVudGlsIHRoZSBCU1AKLSAgICBzdG9wcyB1c2luZyBpdCAoc2VlIHlvY3RvLWtlcm5lbCBmZWF0dXJlIHJtIHRvIHN0b3AgdXNpbmcgaXQpLgotIiIiCi0KLSMjCi0jIHlvY3RvLWxheWVyIGhlbHAgYW5kIHVzYWdlIHN0cmluZ3MKLSMjCi0KLXlvY3RvX2xheWVyX3VzYWdlID0gIiIiCi0KLSBDcmVhdGUgYSBnZW5lcmljIFlvY3RvIGxheWVyLgotCi0gdXNhZ2U6IHlvY3RvLWxheWVyIFstLXZlcnNpb25dIFstLWhlbHBdIENPTU1BTkQgW0FSR1NdCi0KLSBDdXJyZW50ICd5b2N0by1sYXllcicgY29tbWFuZHMgYXJlOgotICAgIGNyZWF0ZSAgICAgICAgICAgIENyZWF0ZSBhIG5ldyBnZW5lcmljIFlvY3RvIGxheWVyCi0gICAgbGlzdCAgICAgICAgICAgICAgTGlzdCBhdmFpbGFibGUgdmFsdWVzIGZvciBpbnB1dCBvcHRpb25zIGFuZCBwcm9wZXJ0aWVzCi0KLSBTZWUgJ3lvY3RvLWxheWVyIGhlbHAgQ09NTUFORCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYSBzcGVjaWZpYyBjb21tYW5kLgotIiIiCi0KLXlvY3RvX2xheWVyX2hlbHBfdXNhZ2UgPSAiIiIKLQotIHVzYWdlOiB5b2N0by1sYXllciBoZWxwIDxzdWJjb21tYW5kPgotCi0gVGhpcyBjb21tYW5kIGRpc3BsYXlzIGRldGFpbGVkIGhlbHAgZm9yIHRoZSBzcGVjaWZpZWQgc3ViY29tbWFuZC4KLSIiIgotCi15b2N0b19sYXllcl9jcmVhdGVfdXNhZ2UgPSAiIiIKLQotIFdBUk5JTkc6IHRoaXMgcGx1Z2luIHdpbGwgYmUgcmVtb3ZlZCBzdGFydGluZyAyLjUgZGV2ZWxvcG1lbnQgaW4gZmF2b3VyCi0gb2YgdXNpbmcgJ2JpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcicgc2NyaXB0L3BsdWdpbiwgb2ZmZXJpbmcgYSBzaW5nbGUKLSBzY3JpcHQgdG8gbWFuYWdlIGxheWVycy4KLQotIENyZWF0ZSBhIG5ldyBnZW5lcmljIFlvY3RvIGxheWVyCi0KLSB1c2FnZTogeW9jdG8tbGF5ZXIgY3JlYXRlIDxsYXllci1uYW1lPiBbbGF5ZXJfcHJpb3JpdHldCi0gICAgICAgICAgICBbLW8gPERJUk5BTUU+IHwgLS1vdXRkaXIgPERJUk5BTUU+XQotICAgICAgICAgICAgWy1pIDxKU09OIFBST1BFUlRZIEZJTEU+IHwgLS1pbmZpbGUgPEpTT04gUFJPUEVSVFlfRklMRT5dCi0KLSBUaGlzIGNvbW1hbmQgY3JlYXRlcyBhIGdlbmVyaWMgWW9jdG8gbGF5ZXIgYmFzZWQgb24gdGhlIHNwZWNpZmllZAotIHBhcmFtZXRlcnMuICBUaGUgbmV3IGxheWVyIHdpbGwgYmUgYSBuZXcgWW9jdG8gbGF5ZXIgY29udGFpbmVkIGJ5Ci0gZGVmYXVsdCB3aXRoaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgc3BlY2lmaWVkIGFzCi0gJ21ldGEtbGF5ZXItbmFtZScuICBUaGUgLW8gb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHBsYWNlIHRoZSBsYXllciBpbiBhCi0gZGlyZWN0b3J5IHdpdGggYSBkaWZmZXJlbnQgbmFtZSBhbmQgbG9jYXRpb24uCi0KLSBJZiBsYXllcl9wcmlvcml0eSBpcyBzcGVjaWZpZWQsIGEgc2ltcGxlIGxheWVyIHdpbGwgYmUgY3JlYXRlZCB1c2luZwotIHRoZSBnaXZlbiBsYXllciBwcmlvcml0eSwgYW5kIHRoZSB1c2VyIHdpbGwgbm90IGJlIHByb21wdGVkIGZvcgotIGZ1cnRoZXIgaW5wdXQuCi0KLSBOT1RFOiBPbmNlIGNyZWF0ZWQsIHlvdSBzaG91bGQgYWRkIHlvdXIgbmV3IGxheWVyIHRvIHlvdXIKLSBiYmxheWVycy5jb25mIGZpbGUgaW4gb3JkZXIgZm9yIGl0IHRvIGJlIHN1YnNlcXVlbnRseSBzZWVuIGFuZAotIG1vZGlmaWVkIGJ5IHRoZSB5b2N0by1rZXJuZWwgdG9vbC4gIEluc3RydWN0aW9ucyBmb3IgZG9pbmcgdGhpcyBjYW4KLSBiZSBmb3VuZCBpbiB0aGUgUkVBRE1FIGZpbGUgZ2VuZXJhdGVkIGluIHRoZSBsYXllcidzIHRvcC1sZXZlbAotIGRpcmVjdG9yeS4KLQotIFNlZSAneW9jdG8gbGF5ZXIgaGVscCBjcmVhdGUnIGZvciBtb3JlIGRldGFpbGVkIGluc3RydWN0aW9ucy4KLSIiIgotCi15b2N0b19sYXllcl9jcmVhdGVfaGVscCA9ICIiIgotCi1XQVJOSU5HOiB0aGlzIHBsdWdpbiB3aWxsIGJlIHJlbW92ZWQgc3RhcnRpbmcgMi41IGRldmVsb3BtZW50IGluIGZhdm91cgotb2YgdXNpbmcgJ2JpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcicgc2NyaXB0L3BsdWdpbiwgb2ZmZXJpbmcgYSBzaW5nbGUKLXNjcmlwdCB0byBtYW5hZ2UgbGF5ZXJzLgotCi1OQU1FCi0gICAgeW9jdG8tbGF5ZXIgY3JlYXRlIC0gQ3JlYXRlIGEgbmV3IGdlbmVyaWMgWW9jdG8gbGF5ZXIKLQotU1lOT1BTSVMKLSAgICB5b2N0by1sYXllciBjcmVhdGUgPGxheWVyLW5hbWU+IFtsYXllcl9wcmlvcml0eV0KLSAgICAgICAgWy1vIDxESVJOQU1FPiB8IC0tb3V0ZGlyIDxESVJOQU1FPl0KLSAgICAgICAgWy1pIDxKU09OIFBST1BFUlRZIEZJTEU+IHwgLS1pbmZpbGUgPEpTT04gUFJPUEVSVFlfRklMRT5dCi0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIGNyZWF0ZXMgYSBnZW5lcmljIFlvY3RvIGxheWVyIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQKLSAgICBwYXJhbWV0ZXJzLiAgVGhlIG5ldyBsYXllciB3aWxsIGJlIGEgbmV3IFlvY3RvIGxheWVyIGNvbnRhaW5lZCBieQotICAgIGRlZmF1bHQgd2l0aGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IHNwZWNpZmllZCBhcwotICAgICdtZXRhLWxheWVyLW5hbWUnLiAgVGhlIC1vIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBwbGFjZSB0aGUgbGF5ZXIKLSAgICBpbiBhIGRpcmVjdG9yeSB3aXRoIGEgZGlmZmVyZW50IG5hbWUgYW5kIGxvY2F0aW9uLgotCi0gICAgSWYgbGF5ZXJfcHJpb3JpdHkgaXMgc3BlY2lmaWVkLCBhIHNpbXBsZSBsYXllciB3aWxsIGJlIGNyZWF0ZWQKLSAgICB1c2luZyB0aGUgZ2l2ZW4gbGF5ZXIgcHJpb3JpdHksIGFuZCB0aGUgdXNlciB3aWxsIG5vdCBiZSBwcm9tcHRlZAotICAgIGZvciBmdXJ0aGVyIGlucHV0LgotCi0gICAgVGhlIGxheWVyLXNwZWNpZmljIHByb3BlcnRpZXMgdGhhdCBkZWZpbmUgdGhlIHZhbHVlcyB0aGF0IHdpbGwgYmUKLSAgICB1c2VkIHRvIGdlbmVyYXRlIHRoZSBsYXllciBjYW4gYmUgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kLWxpbmUKLSAgICB1c2luZyB0aGUgLWkgb3B0aW9uIGFuZCBzdXBwbHlpbmcgYSBKU09OIG9iamVjdCBjb25zaXN0aW5nIG9mIHRoZQotICAgIHNldCBvZiBuYW1lOnZhbHVlIHBhaXJzIG5lZWRlZCBieSB0aGUgbGF5ZXIuCi0KLSAgICBJZiB0aGUgLWkgb3B0aW9uIGlzIG5vdCB1c2VkLCB0aGUgdXNlciB3aWxsIGJlIGludGVyYWN0aXZlbHkKLSAgICBwcm9tcHRlZCBmb3IgZWFjaCBvZiB0aGUgcmVxdWlyZWQgcHJvcGVydHkgdmFsdWVzLCB3aGljaCB3aWxsIHRoZW4KLSAgICBiZSB1c2VkIGFzIHZhbHVlcyBmb3IgbGF5ZXIgZ2VuZXJhdGlvbi4KLQotICAgIFRoZSBzZXQgb2YgcHJvcGVydGllcyBhdmFpbGFibGUgY2FuIGJlIGxpc3RlZCB1c2luZyB0aGUKLSAgICAneW9jdG8tbGF5ZXIgbGlzdCcgY29tbWFuZC4KLQotICAgIFNwZWNpZnlpbmcgLWMgY2F1c2VzIHRoZSBQeXRob24gY29kZSBnZW5lcmF0ZWQgYW5kIGV4ZWN1dGVkIHRvCi0gICAgY3JlYXRlIHRoZSBsYXllciB0byBiZSBkdW1wZWQgdG8gdGhlICdic3BnZW4ub3V0JyBmaWxlIGluIHRoZQotICAgIGN1cnJlbnQgZGlyZWN0b3J5LCBhbmQgaXMgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuCi0KLSAgICBOT1RFOiBPbmNlIGNyZWF0ZWQsIHlvdSBzaG91bGQgYWRkIHlvdXIgbmV3IGxheWVyIHRvIHlvdXIKLSAgICBiYmxheWVycy5jb25mIGZpbGUgaW4gb3JkZXIgZm9yIGl0IHRvIGJlIHN1YnNlcXVlbnRseSBzZWVuIGFuZAotICAgIG1vZGlmaWVkIGJ5IHRoZSB5b2N0by1rZXJuZWwgdG9vbC4gIEluc3RydWN0aW9ucyBmb3IgZG9pbmcgdGhpcwotICAgIGNhbiBiZSBmb3VuZCBpbiB0aGUgUkVBRE1FIGZpbGUgZ2VuZXJhdGVkIGluIHRoZSBsYXllcidzIHRvcC1sZXZlbAotICAgIGRpcmVjdG9yeS4KLQotICAgIEZvciBleGFtcGxlLCBhc3N1bWluZyB5b3VyIHBva3kgcmVwbyBpcyBhdCAvcGF0aC90by9wb2t5LCB5b3VyIG5ldwotICAgIGxheWVyIGlzIGF0IC9wYXRoL3RvL3Bva3kvbWV0YS1teWxheWVyLCBhbmQgeW91ciBidWlsZCBkaXJlY3RvcnkKLSAgICBpcyAvcGF0aC90by9idWlsZDoKLQotICAgICQgZ2VkaXQgL3BhdGgvdG8vYnVpbGQvY29uZi9iYmxheWVycy5jb25mCi0KLSAgICBCQkxBWUVSUyA/PSAiIFxcCi0gICAgICAvcGF0aC90by9wb2t5L21ldGEgXFwKLSAgICAgIC9wYXRoL3RvL3Bva3kvbWV0YS15b2N0byBcXAotICAgICAgL3BhdGgvdG8vcG9reS9tZXRhLW15bGF5ZXIgXFwKLSAgICAgICIKLSIiIgotCi15b2N0b19sYXllcl9saXN0X3VzYWdlID0gIiIiCi0KLSB1c2FnZTogeW9jdG8tbGF5ZXIgbGlzdCBwcm9wZXJ0aWVzCi0gICAgICAgICAgICAgICAgWy1vIDxKU09OIFBST1BFUlRZIEZJTEU+IHwgLS1vdXRmaWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQotICAgICAgICB5b2N0by1sYXllciBsaXN0IHByb3BlcnR5IDx4eHg+Ci0gICAgICAgICAgICAgICAgWy1vIDxKU09OIFBST1BFUlRZIEZJTEU+IHwgLS1vdXRmaWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQotCi0gVGhpcyBjb21tYW5kIGVudW1lcmF0ZXMgdGhlIGNvbXBsZXRlIHNldCBvZiBwb3NzaWJsZSB2YWx1ZXMgZm9yIGEKLSBzcGVjaWZpZWQgb3B0aW9uIG9yIHByb3BlcnR5IG5lZWRlZCBieSB0aGUgbGF5ZXIgY3JlYXRpb24gcHJvY2Vzcy4KLQotIFRoZSBmaXJzdCBmb3JtIGVudW1lcmF0ZXMgYWxsIHRoZSBwb3NzaWJsZSBwcm9wZXJ0aWVzIHRoYXQgZXhpc3QgYW5kCi0gbXVzdCBoYXZlIHZhbHVlcyBzcGVjaWZpZWQgZm9yIHRoZW0gaW4gdGhlICd5b2N0by1sYXllciBjcmVhdGUnCi0gY29tbWFuZC4KLQotIFRoZSBzZWNvbmQgZm9ybSBlbnVtZXJhdGVzIGFsbCB0aGUgcG9zc2libGUgdmFsdWVzIHRoYXQgZXhpc3QgYW5kIGNhbgotIGJlIHNwZWNpZmllZCBmb3IgYW55IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnRpZXMgaW4gdGhlICd5b2N0by1sYXllcgotIGNyZWF0ZScgY29tbWFuZC4KLQotIFNlZSAneW9jdG8tbGF5ZXIgaGVscCBsaXN0JyBmb3IgbW9yZSBkZXRhaWxzLgotIiIiCi0KLXlvY3RvX2xheWVyX2xpc3RfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8tbGF5ZXIgbGlzdCAtIExpc3QgYXZhaWxhYmxlIHZhbHVlcyBmb3IgbGF5ZXIgaW5wdXQgb3B0aW9ucyBhbmQgcHJvcGVydGllcwotCi1TWU5PUFNJUwotICAgIHlvY3RvLWxheWVyIGxpc3QgcHJvcGVydGllcwotICAgICAgICAgICAgWy0tbyA8SlNPTiBQUk9QRVJUWSBGSUxFPiB8IC1vdXRmaWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQotICAgIHlvY3RvLWxheWVyIGxpc3QgcHJvcGVydHkgPHh4eD4KLSAgICAgICAgICAgIFstLW8gPEpTT04gUFJPUEVSVFkgRklMRT4gfCAtb3V0ZmlsZSA8SlNPTiBQUk9QRVJUWV9GSUxFPl0KLQotREVTQ1JJUFRJT04KLSAgICBUaGlzIGNvbW1hbmQgZW51bWVyYXRlcyB0aGUgY29tcGxldGUgc2V0IG9mIHBvc3NpYmxlIHZhbHVlcyBmb3IgYQotICAgIHNwZWNpZmllZCBvcHRpb24gb3IgcHJvcGVydHkgbmVlZGVkIGJ5IHRoZSBsYXllciBjcmVhdGlvbiBwcm9jZXNzLgotCi0gICAgVGhlIGZpcnN0IGZvcm0gZW51bWVyYXRlcyBhbGwgdGhlIHBvc3NpYmxlIHByb3BlcnRpZXMgdGhhdCBleGlzdAotICAgIGFuZCBtdXN0IGhhdmUgdmFsdWVzIHNwZWNpZmllZCBmb3IgdGhlbSBpbiB0aGUgJ3lvY3RvLWxheWVyCi0gICAgY3JlYXRlJyBjb21tYW5kLiAgVGhpcyBjb21tYW5kIGlzIG1haW5seSBtZWFudCB0byBhaWQgdGhlCi0gICAgZGV2ZWxvcG1lbnQgb2YgdXNlciBpbnRlcmZhY2UgYWx0ZXJuYXRpdmVzIHRvIHRoZSBkZWZhdWx0Ci0gICAgdGV4dC1iYXNlZCBwcm9tcHRpbmcgaW50ZXJmYWNlLiAgSWYgdGhlIC1vIG9wdGlvbiBpcyBzcGVjaWZpZWQsCi0gICAgdGhlIGxpc3Qgb2YgcHJvcGVydGllcywgaW4gYWRkaXRpb24gdG8gYmVpbmcgZGlzcGxheWVkLCB3aWxsIGJlCi0gICAgd3JpdHRlbiB0byB0aGUgc3BlY2lmaWVkIGZpbGUgYXMgYSBKU09OIG9iamVjdC4gIEluIHRoaXMgY2FzZSwgdGhlCi0gICAgb2JqZWN0IHdpbGwgY29uc2lzdCBvZiB0aGUgc2V0IG9mIG5hbWU6dmFsdWUgcGFpcnMgY29ycmVzcG9uZGluZwotICAgIHRvIHRoZSAocG9zc2libHkgbmVzdGVkKSBkaWN0aW9uYXJ5IG9mIHByb3BlcnRpZXMgZGVmaW5lZCBieSB0aGUKLSAgICBpbnB1dCBzdGF0ZW1lbnRzIHVzZWQgYnkgdGhlIEJTUC4gIFNvbWUgZXhhbXBsZSBvdXRwdXQgZm9yIHRoZQotICAgICdsaXN0IHByb3BlcnRpZXMnIGNvbW1hbmQ6Ci0KLSAgICAkIHlvY3RvLWxheWVyIGxpc3QgcHJvcGVydGllcwotICAgICJleGFtcGxlX2JiYXBwZW5kX25hbWUiIDogewotICAgICAgICAiZGVmYXVsdCIgOiBleGFtcGxlCi0gICAgICAgICJtc2ciIDogUGxlYXNlIGVudGVyIHRoZSBuYW1lIHlvdSdkIGxpa2UgdG8gdXNlIGZvciB5b3VyIGJiYXBwZW5kIGZpbGU6Ci0gICAgICAgICJ0eXBlIiA6IGVkaXQKLSAgICAgICAgInByaW8iIDogMjAKLSAgICAgICAgImZpbGVuYW1lIiA6IC9ob21lL3Ryei95b2N0by95b2N0by1sYXllci1kZXYvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9sYXllci1xdWVzdGlvbnMubm9pbnN0YWxsCi0gICAgfQotICAgICJjcmVhdGVfZXhhbXBsZV9yZWNpcGUiIDogewotICAgICAgICAiZGVmYXVsdCIgOiBuCi0gICAgICAgICJtc2ciIDogV291bGQgeW91IGxpa2UgdG8gaGF2ZSBhbiBleGFtcGxlIHJlY2lwZSBjcmVhdGVkPyAoeS9uKQotICAgICAgICAidHlwZSIgOiBib29sZWFuCi0gICAgICAgICJwcmlvIiA6IDIwCi0gICAgICAgICJmaWxlbmFtZSIgOiAvaG9tZS90cnoveW9jdG8veW9jdG8tbGF5ZXItZGV2L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvbGF5ZXItcXVlc3Rpb25zLm5vaW5zdGFsbAotICAgIH0KLSAgICAiZXhhbXBsZV9yZWNpcGVfbmFtZSIgOiB7Ci0gICAgICAgICJkZWZhdWx0IiA6IGV4YW1wbGUKLSAgICAgICAgIm1zZyIgOiBQbGVhc2UgZW50ZXIgdGhlIG5hbWUgeW91J2QgbGlrZSB0byB1c2UgZm9yIHlvdXIgZXhhbXBsZSByZWNpcGU6Ci0gICAgICAgICJ0eXBlIiA6IGVkaXQKLSAgICAgICAgInByaW8iIDogMjAKLSAgICAgICAgImZpbGVuYW1lIiA6IC9ob21lL3Ryei95b2N0by95b2N0by1sYXllci1kZXYvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9sYXllci1xdWVzdGlvbnMubm9pbnN0YWxsCi0gICAgfQotICAgICJsYXllcl9wcmlvcml0eSIgOiB7Ci0gICAgICAgICJkZWZhdWx0IiA6IDYKLSAgICAgICAgIm1zZyIgOiBQbGVhc2UgZW50ZXIgdGhlIGxheWVyIHByaW9yaXR5IHlvdSdkIGxpa2UgdG8gdXNlIGZvciB0aGUgbGF5ZXI6Ci0gICAgICAgICJ0eXBlIiA6IGVkaXQKLSAgICAgICAgInByaW8iIDogMjAKLSAgICAgICAgImZpbGVuYW1lIiA6IC9ob21lL3Ryei95b2N0by95b2N0by1sYXllci1kZXYvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9sYXllci1xdWVzdGlvbnMubm9pbnN0YWxsCi0gICAgfQotICAgICJjcmVhdGVfZXhhbXBsZV9iYmFwcGVuZCIgOiB7Ci0gICAgICAgICJkZWZhdWx0IiA6IG4KLSAgICAgICAgIm1zZyIgOiBXb3VsZCB5b3UgbGlrZSB0byBoYXZlIGFuIGV4YW1wbGUgYmJhcHBlbmQgZmlsZSBjcmVhdGVkPyAoeS9uKQotICAgICAgICAidHlwZSIgOiBib29sZWFuCi0gICAgICAgICJwcmlvIiA6IDIwCi0gICAgICAgICJmaWxlbmFtZSIgOiAvaG9tZS90cnoveW9jdG8veW9jdG8tbGF5ZXItZGV2L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvbGF5ZXItcXVlc3Rpb25zLm5vaW5zdGFsbAotICAgIH0KLSAgICAiZXhhbXBsZV9iYmFwcGVuZF92ZXJzaW9uIiA6IHsKLSAgICAgICAgImRlZmF1bHQiIDogMC4xCi0gICAgICAgICJtc2ciIDogUGxlYXNlIGVudGVyIHRoZSB2ZXJzaW9uIG51bWJlciB5b3UnZCBsaWtlIHRvIHVzZSBmb3IgeW91ciBiYmFwcGVuZCBmaWxlICh0aGlzIHNob3VsZCBtYXRjaCB0aGUgcmVjaXBlIHlvdSdyZSBhcHBlbmRpbmcgdG8pOgotICAgICAgICAidHlwZSIgOiBlZGl0Ci0gICAgICAgICJwcmlvIiA6IDIwCi0gICAgICAgICJmaWxlbmFtZSIgOiAvaG9tZS90cnoveW9jdG8veW9jdG8tbGF5ZXItZGV2L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvbGF5ZXItcXVlc3Rpb25zLm5vaW5zdGFsbAotICAgIH0KLQotICAgIEVhY2ggZW50cnkgaW4gdGhlIG91dHB1dCBjb25zaXN0cyBvZiB0aGUgbmFtZSBvZiB0aGUgaW5wdXQgZWxlbWVudAotICAgIGUuZy4gImxheWVyX3ByaW9yaXR5IiwgZm9sbG93ZWQgYnkgdGhlIHByb3BlcnRpZXMgZGVmaW5lZCBmb3IgdGhhdAotICAgIGVsZW1lbnQgZW5jbG9zZWQgaW4gYnJhY2VzLiAgVGhpcyBpbmZvcm1hdGlvbiBzaG91bGQgcHJvdmlkZQotICAgIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gY3JlYXRlIGEgY29tcGxldGUgdXNlciBpbnRlcmZhY2UuICBUd28KLSAgICBmZWF0dXJlcyBvZiB0aGUgc2NoZW1lIHByb3ZpZGUgZm9yIGNvbmRpdGlvbmFsIGlucHV0LiAgRmlyc3QsIGlmIGEKLSAgICBQeXRob24gImlmIiBzdGF0ZW1lbnQgYXBwZWFycyBpbiBwbGFjZSBvZiBhbiBpbnB1dCBlbGVtZW50IG5hbWUsCi0gICAgdGhlIHNldCBvZiBlbmNsb3NlZCBpbnB1dCBlbGVtZW50cyBhcHBseSBhbmQgc2hvdWxkIGJlIHByZXNlbnRlZAotICAgIHRvIHRoZSB1c2VyIG9ubHkgaWYgdGhlICdpZicgc3RhdGVtZW50IGV2YWx1YXRlcyB0byB0cnVlLiAgVGhlCi0gICAgdGVzdCBpbiB0aGUgaWYgc3RhdGVtZW50IHdpbGwgYWx3YXlzIHJlZmVyZW5jZSBhbm90aGVyIGlucHV0Ci0gICAgZWxlbWVudCBpbiB0aGUgbGlzdCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBiZWluZyB0ZXN0ZWQKLSAgICBzaG91bGQgYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGJlZm9yZSB0aGUgZWxlbWVudHMgZW5jbG9zZWQgYnkKLSAgICB0aGUgaWYgYmxvY2suICBTZWNvbmRseSwgaW4gYSBzaW1pbGFyIHdheSwgc29tZSBlbGVtZW50cyBjb250YWluCi0gICAgImRlcGVuZHMtb24iIGFuZCBkZXBlbmRzLW9uLXZhbCIgdGFncywgd2hpY2ggbWVhbiB0aGF0IHRoZQotICAgIGFmZmVjdGVkIGlucHV0IGVsZW1lbnQgc2hvdWxkIG9ubHkgYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGlmIHRoZQotICAgIGVsZW1lbnQgaXQgZGVwZW5kcyBvbiBoYXMgYWxyZWFkeSBiZWVuIHByZXNlbnRlZCB0byB0aGUgdXNlciBhbmQKLSAgICB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgdGhlIHNwZWNpZmllZCB2YWx1ZSBmb3IgdGhhdCBlbGVtZW50LgotCi0gICAgVGhlIHNlY29uZCBmb3JtIGVudW1lcmF0ZXMgYWxsIHRoZSBwb3NzaWJsZSB2YWx1ZXMgdGhhdCBleGlzdCBhbmQKLSAgICBjYW4gYmUgc3BlY2lmaWVkIGZvciBhbnkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydGllcyBpbiB0aGUKLSAgICAneW9jdG8tbGF5ZXIgY3JlYXRlJyBjb21tYW5kLiAgSWYgdGhlIC1vIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHRoZQotICAgIGxpc3Qgb2YgdmFsdWVzIGZvciB0aGUgZ2l2ZW4gcHJvcGVydHksIGluIGFkZGl0aW9uIHRvIGJlaW5nCi0gICAgZGlzcGxheWVkLCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIHNwZWNpZmllZCBmaWxlIGFzIGEgSlNPTiBvYmplY3QuCi0gICAgSW4gdGhpcyBjYXNlLCB0aGUgb2JqZWN0IHdpbGwgY29uc2lzdCBvZiB0aGUgc2V0IG9mIG5hbWU6dmFsdWUKLSAgICBwYWlycyBjb3JyZXNwb25kaW5nIHRvIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMgYXNzb2NpYXRlZAotICAgIHdpdGggdGhlIHByb3BlcnR5LgotCi0gICAgJCB5b2N0by1sYXllciBsaXN0IHByb3BlcnR5IGxheWVyX3ByaW9yaXR5Ci0gICAgIFtubyBvdXRwdXQgLSBsYXllcl9wcmlvcml0eSBpcyBhIHRleHQgZmllbGQgdGhhdCBoYXMgbm8gZW51bWVyYWJsZSB2YWx1ZXNdCi0KLSAgICBUaGUgc2Vjb25kIGZvcm0gYXMgd2VsbCBpcyBtZWFudCBtYWlubHkgZm9yIGRldmVsb3BlcnMgb2YKLSAgICBhbHRlcm5hdGl2ZSBpbnRlcmZhY2VzIC0gaXQgYWxsb3dzIHRoZSBkZXZlbG9wZXIgdG8gZmV0Y2ggdGhlCi0gICAgcG9zc2libGUgdmFsdWVzIGZvciBhIGdpdmVuIGlucHV0IGVsZW1lbnQgb24tZGVtYW5kLiAgVGhpcwotICAgIG9uLWRlbWFuZCBjYXBhYmlsaXR5IGlzIGVzcGVjaWFsbHkgdmFsdWFibGUgZm9yIGVsZW1lbnRzIHRoYXQKLSAgICByZXF1aXJlIHJlbGF0aXZlbHkgZXhwZW5zaXZlIHJlbW90ZSBvcGVyYXRpb25zIHRvIGZ1bGZpbGwsIHN1Y2ggYXMKLSAgICB0aGUgZXhhbXBsZSB0aGF0IHJldHVybnMgdGhlIHNldCBvZiBicmFuY2hlcyBhdmFpbGFibGUgaW4gYSByZW1vdGUKLSAgICBnaXQgdHJlZSBhYm92ZS4KLQotIiIiCi0KLSMjCi0jIHRlc3QgY29kZQotIyMKLQotdGVzdF9ic3BfcHJvcGVydGllcyA9IHsKLSAgICAnc21wJzogJ3llcycsCi0gICAgJ3RvdWNoc2NyZWVuJzogJ3llcycsCi0gICAgJ2tleWJvYXJkJzogJ25vJywKLSAgICAneHNlcnZlcic6ICd5ZXMnLAotICAgICd4c2VydmVyX2Nob2ljZSc6ICd4c2VydmVyLWk5MTUnLAotICAgICdmZWF0dXJlcyc6IFsnZ29vZGZlYXR1cmUnLCAnZ3JlYXRmZWF0dXJlJ10sCi0gICAgJ3R1bmVmaWxlJzogJ3R1bmUtcXVhcmsnLAotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL2tlcm5lbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Ava2VybmVsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2VlMzI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Ava2VybmVsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA2OSArMCwwIEBACi0jIGV4OnRzPTQ6c3c9NDpzdHM9NDpldAotIyAtKi0gdGFiLXdpZHRoOiA0OyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsIEludGVsIENvcnBvcmF0aW9uLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLSMKLSMgREVTQ1JJUFRJT04KLSMgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyB0aGUga2VybmVsLXJlbGF0ZWQgZnVuY3Rpb25zIHVzZWQgYnkKLSMgJ3lvY3RvLWtlcm5lbCcgdG8gbWFuYWdlIGtlcm5lbCBjb25maWcgaXRlbXMgYW5kIHBhdGNoZXMgZm9yIFlvY3RvCi0jIEJTUHMuCi0jCi0jIEFVVEhPUlMKLSMgVG9tIFphbnVzc2kgPHRvbS56YW51c3NpIChhdF0gaW50ZWwuY29tPgotIwotCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKLWZyb20gLnRhZ3MgaW1wb3J0ICoKLWltcG9ydCBnbG9iCi1pbXBvcnQgc3VicHJvY2VzcwotZnJvbSAuZW5naW5lIGltcG9ydCBjcmVhdGVfY29udGV4dAotCi1kZWYgZmluZF9iYmxheWVycygpOgotICAgICIiIgotICAgIEZpbmQgYW5kIHJldHVybiBhIHNhbml0aXplZCBsaXN0IG9mIHRoZSBsYXllcnMgZm91bmQgaW4gQkJMQVlFUlMuCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb25bIkJVSUxERElSIl0KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHByaW50KCJCVUlMRERJUiBub3QgZm91bmQsIGV4aXRpbmcuIChEaWQgeW91IGZvcmdldCB0byBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnY/KSIpCi0gICAgICAgIHN5cy5leGl0KDEpCi0gICAgYmJsYXllcnNfY29uZiA9IG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZiIpCi0KLSAgICBsYXllcnMgPSBbXQotCi0gICAgYml0YmFrZV9lbnZfY21kID0gImJpdGJha2UgLWUiCi0gICAgYml0YmFrZV9lbnZfbGluZXMgPSBzdWJwcm9jZXNzLlBvcGVuKGJpdGJha2VfZW52X2NtZCwgc2hlbGw9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0LnJlYWQoKS5kZWNvZGUoJ3V0Zi04JykKLQotICAgIGlmIG5vdCBiaXRiYWtlX2Vudl9saW5lczoKLSAgICAgICAgcHJpbnQoIkNvdWxkbid0IGdldCAnJXMnIG91dHB1dCwgZXhpdGluZy4iICUgYml0YmFrZV9lbnZfY21kKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZm9yIGxpbmUgaW4gYml0YmFrZV9lbnZfbGluZXMuc3BsaXQoJ1xuJyk6Ci0gICAgICAgIGJibGF5ZXJzID0gZ2V0X2xpbmVfdmFsKGxpbmUsICJCQkxBWUVSUyIpCi0gICAgICAgIGlmIChiYmxheWVycyk6Ci0gICAgICAgICAgICBicmVhawotCi0gICAgaWYgbm90IGJibGF5ZXJzOgotICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBCQkxBWUVSUyBpbiAlcyBvdXRwdXQsIGV4aXRpbmcuIiAlIGJpdGJha2VfZW52X2NtZCkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIHJhd19sYXllcnMgPSBiYmxheWVycy5zcGxpdCgpCi0KLSAgICBmb3IgbGF5ZXIgaW4gcmF3X2xheWVyczoKLSAgICAgICAgaWYgbGF5ZXIgPT0gJ0JCTEFZRVJTJyBvciAnPScgaW4gbGF5ZXI6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKQotCi0gICAgcmV0dXJuIGxheWVycwotCi0KLWRlZiBnZXRfbGluZV92YWwobGluZSwga2V5KToKLSAgICAiIiIKLSAgICBFeHRyYWN0IHRoZSB2YWx1ZSBmcm9tIHRoZSBWQVI9InZhbCIgc3RyaW5nCi0gICAgIiIiCi0gICAgaWYgbGluZS5zdGFydHN3aXRoKGtleSArICI9Iik6Ci0gICAgICAgIHN0cmlwcGVkX2xpbmUgPSBsaW5lLnNwbGl0KCc9JylbMV0KLSAgICAgICAgc3RyaXBwZWRfbGluZSA9IHN0cmlwcGVkX2xpbmUucmVwbGFjZSgnXCInLCAnJykKLSAgICAgICAgcmV0dXJuIHN0cmlwcGVkX2xpbmUKLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiBmaW5kX21ldGFfbGF5ZXIoKToKLSAgICAiIiIKLSAgICBGaW5kIGFuZCByZXR1cm4gdGhlIG1ldGEgbGF5ZXIgaW4gQkJMQVlFUlMuCi0gICAgIiIiCi0gICAgbGF5ZXJzID0gZmluZF9iYmxheWVycygpCi0KLSAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzOgotICAgICAgICBpZiBsYXllci5lbmRzd2l0aCgibWV0YSIpOgotICAgICAgICAgICAgcmV0dXJuIGxheWVyCi0KLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiBmaW5kX2JzcF9sYXllcihtYWNoaW5lKToKLSAgICAiIiIKLSAgICBGaW5kIGFuZCByZXR1cm4gYSBtYWNoaW5lJ3MgQlNQIGxheWVyIGluIEJCTEFZRVJTLgotICAgICIiIgotICAgIGxheWVycyA9IGZpbmRfYmJsYXllcnMoKQotCi0gICAgZm9yIGxheWVyIGluIGxheWVyczoKLSAgICAgICAgaWYgbGF5ZXIuZW5kc3dpdGgobWFjaGluZSk6Ci0gICAgICAgICAgICByZXR1cm4gbGF5ZXIKLQotICAgIHByaW50KCJVbmFibGUgdG8gZmluZCB0aGUgQlNQIGxheWVyIGZvciBtYWNoaW5lICVzLiIgJSBtYWNoaW5lKQotICAgIHByaW50KCJQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGxpc3RlZCBpbiBiYmxheWVycy5jb25mIikKLSAgICBzeXMuZXhpdCgxKQotCi0KLWRlZiBnZW5fY2hvaWNlc19zdHIoY2hvaWNlcyk6Ci0gICAgIiIiCi0gICAgR2VuZXJhdGUgYSBudW1iZXJlZCBsaXN0IG9mIGNob2ljZXMgZnJvbSBhIGxpc3Qgb2YgY2hvaWNlcyBmb3IKLSAgICBkaXNwbGF5IHRvIHRoZSB1c2VyLgotICAgICIiIgotICAgIGNob2ljZXNfc3RyID0gIiIKLQotICAgIGZvciBpLCBjaG9pY2UgaW4gZW51bWVyYXRlKGNob2ljZXMpOgotICAgICAgICBjaG9pY2VzX3N0ciArPSAiXHQiICsgc3RyKGkgKyAxKSArICIpICIgKyBjaG9pY2UgKyAiXG4iCi0KLSAgICByZXR1cm4gY2hvaWNlc19zdHIKLQotCi1kZWYgb3Blbl91c2VyX2ZpbGUoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCB1c2VyZmlsZSwgbW9kZSk6Ci0gICAgIiIiCi0gICAgRmluZCBvbmUgb2YgdGhlIHVzZXIgZmlsZXMgKHVzZXItY29uZmlnLmNmZywgdXNlci1wYXRjaGVzLnNjYykKLSAgICBhc3NvY2lhdGVkIHdpdGggdGhlIG1hY2hpbmUgKGNvdWxkIGJlIGluIGZpbGVzLywKLSAgICBsaW51eC15b2N0by1jdXN0b20vLCBldGMpLiAgUmV0dXJucyB0aGUgb3BlbiBmaWxlIGlmIGZvdW5kLCBOb25lCi0gICAgb3RoZXJ3aXNlLgotCi0gICAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgY2xvc2luZyB0aGUgZmlsZSByZXR1cm5lZC4KLSAgICAiIiIKLSAgICBsYXllciA9IGZpbmRfYnNwX2xheWVyKG1hY2hpbmUpCi0gICAgbGludXhkaXIgPSBvcy5wYXRoLmpvaW4obGF5ZXIsICJyZWNpcGVzLWtlcm5lbC9saW51eCIpCi0gICAgbGludXhkaXJfbGlzdCA9IG9zLmxpc3RkaXIobGludXhkaXIpCi0gICAgZm9yIGZpbGVvYmogaW4gbGludXhkaXJfbGlzdDoKLSAgICAgICAgZmlsZW9ial9wYXRoID0gb3MucGF0aC5qb2luKGxpbnV4ZGlyLCBmaWxlb2JqKQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZpbGVvYmpfcGF0aCk6Ci0gICAgICAgICAgICB1c2VyZmlsZV9uYW1lID0gb3MucGF0aC5qb2luKGZpbGVvYmpfcGF0aCwgdXNlcmZpbGUpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZiA9IG9wZW4odXNlcmZpbGVfbmFtZSwgbW9kZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZgotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiByZWFkX2NvbmZpZ19pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUpOgotICAgICIiIgotICAgIEZpbmQgYW5kIHJldHVybiBhIGxpc3Qgb2YgY29uZmlnIGl0ZW1zIChDT05GSUdfWFhYKSBpbiBhIG1hY2hpbmUncwotICAgIHVzZXItZGVmaW5lZCBjb25maWcgZnJhZ21lbnQgWyR7bWFjaGluZX0tdXNlci1jb25maWcuY2ZnXS4KLSAgICAiIiIKLSAgICBjb25maWdfaXRlbXMgPSBbXQotCi0gICAgZiA9IG9wZW5fdXNlcl9maWxlKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgbWFjaGluZSsiLXVzZXItY29uZmlnLmNmZyIsICJyIikKLSAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKLSAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgcyA9IGxpbmUuc3RyaXAoKQotICAgICAgICBpZiBzIGFuZCBub3Qgcy5zdGFydHN3aXRoKCIjIik6Ci0gICAgICAgICAgICBjb25maWdfaXRlbXMuYXBwZW5kKHMpCi0gICAgZi5jbG9zZSgpCi0KLSAgICByZXR1cm4gY29uZmlnX2l0ZW1zCi0KLQotZGVmIHdyaXRlX2NvbmZpZ19pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGNvbmZpZ19pdGVtcyk6Ci0gICAgIiIiCi0gICAgV3JpdGUgKHJlcGxhY2UpIHRoZSBsaXN0IG9mIGNvbmZpZyBpdGVtcyAoQ09ORklHX1hYWCkgaW4gYQotICAgIG1hY2hpbmUncyB1c2VyLWRlZmluZWQgY29uZmlnIGZyYWdtZW50IFske21hY2hpbmV9PXVzZXItY29uZmlnLmNmZ10uCi0gICAgIiIiCi0gICAgZiA9IG9wZW5fdXNlcl9maWxlKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgbWFjaGluZSsiLXVzZXItY29uZmlnLmNmZyIsICJ3IikKLSAgICBmb3IgaXRlbSBpbiBjb25maWdfaXRlbXM6Ci0gICAgICAgIGYud3JpdGUoaXRlbSArICJcbiIpCi0gICAgZi5jbG9zZSgpCi0KLSAgICBrZXJuZWxfY29udGVudHNfY2hhbmdlZChzY3JpcHRzX3BhdGgsIG1hY2hpbmUpCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9jb25maWdfbGlzdChzY3JpcHRzX3BhdGgsIG1hY2hpbmUpOgotICAgICIiIgotICAgIERpc3BsYXkgdGhlIGxpc3Qgb2YgY29uZmlnIGl0ZW1zIChDT05GSUdfWFhYKSBpbiBhIG1hY2hpbmUncwotICAgIHVzZXItZGVmaW5lZCBjb25maWcgZnJhZ21lbnQgWyR7bWFjaGluZX0tdXNlci1jb25maWcuY2ZnXS4KLSAgICAiIiIKLSAgICBjb25maWdfaXRlbXMgPSByZWFkX2NvbmZpZ19pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUpCi0KLSAgICBwcmludCgiVGhlIGN1cnJlbnQgc2V0IG9mIG1hY2hpbmUtc3BlY2lmaWMga2VybmVsIGNvbmZpZyBpdGVtcyBmb3IgJXMgaXM6IiAlIG1hY2hpbmUpCi0gICAgcHJpbnQoZ2VuX2Nob2ljZXNfc3RyKGNvbmZpZ19pdGVtcykpCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9jb25maWdfcm0oc2NyaXB0c19wYXRoLCBtYWNoaW5lKToKLSAgICAiIiIKLSAgICBEaXNwbGF5IHRoZSBsaXN0IG9mIGNvbmZpZyBpdGVtcyAoQ09ORklHX1hYWCkgaW4gYSBtYWNoaW5lJ3MKLSAgICB1c2VyLWRlZmluZWQgY29uZmlnIGZyYWdtZW50IFske21hY2hpbmV9LXVzZXItY29uZmlnLmNmZ10sIHByb21wdCB0aGUgdXNlcgotICAgIGZvciBvbmUgb3IgbW9yZSB0byByZW1vdmUsIGFuZCByZW1vdmUgdGhlbS4KLSAgICAiIiIKLSAgICBjb25maWdfaXRlbXMgPSByZWFkX2NvbmZpZ19pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUpCi0KLSAgICBwcmludCgiU3BlY2lmeSB0aGUga2VybmVsIGNvbmZpZyBpdGVtcyB0byByZW1vdmU6IikKLSAgICBpbnAgPSBpbnB1dChnZW5fY2hvaWNlc19zdHIoY29uZmlnX2l0ZW1zKSkKLSAgICBybV9jaG9pY2VzID0gaW5wLnNwbGl0KCkKLSAgICBybV9jaG9pY2VzLnNvcnQoKQotCi0gICAgcmVtb3ZlZCA9IFtdCi0KLSAgICBmb3IgY2hvaWNlIGluIHJldmVyc2VkKHJtX2Nob2ljZXMpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZHggPSBpbnQoY2hvaWNlKSAtIDEKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwcmludCgiSW52YWxpZCBjaG9pY2UgKCVzKSwgZXhpdGluZyIgJSBjaG9pY2UpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBpZiBpZHggPCAwIG9yIGlkeCA+PSBsZW4oY29uZmlnX2l0ZW1zKToKLSAgICAgICAgICAgIHByaW50KCJJbnZhbGlkIGNob2ljZSAoJWQpLCBleGl0aW5nIiAlIChpZHggKyAxKSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIHJlbW92ZWQuYXBwZW5kKGNvbmZpZ19pdGVtcy5wb3AoaWR4KSkKLQotICAgIHdyaXRlX2NvbmZpZ19pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGNvbmZpZ19pdGVtcykKLQotICAgIHByaW50KCJSZW1vdmVkIGl0ZW1zOiIpCi0gICAgZm9yIHIgaW4gcmVtb3ZlZDoKLSAgICAgICAgcHJpbnQoIlx0JXMiICUgcikKLQotCi1kZWYgeW9jdG9fa2VybmVsX2NvbmZpZ19hZGQoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBjb25maWdfaXRlbXMpOgotICAgICIiIgotICAgIEFkZCBvbmUgb3IgbW9yZSBjb25maWcgaXRlbXMgKENPTkZJR19YWFgpIHRvIGEgbWFjaGluZSdzCi0gICAgdXNlci1kZWZpbmVkIGNvbmZpZyBmcmFnbWVudCBbJHttYWNoaW5lfS11c2VyLWNvbmZpZy5jZmddLgotICAgICIiIgotICAgIG5ld19pdGVtcyA9IFtdCi0gICAgZHVwX2l0ZW1zID0gW10KLQotICAgIGN1cl9pdGVtcyA9IHJlYWRfY29uZmlnX2l0ZW1zKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLQotICAgIGZvciBpdGVtIGluIGNvbmZpZ19pdGVtczoKLSAgICAgICAgaWYgbm90IGl0ZW0uc3RhcnRzd2l0aCgiQ09ORklHIikgb3IgKG5vdCAiPXkiIGluIGl0ZW0gYW5kIG5vdCAiPW0iIGluIGl0ZW0pOgotICAgICAgICAgICAgcHJpbnQoIkludmFsaWQgY29uZmlnIGl0ZW0gKCVzKSwgZXhpdGluZyIgJSBpdGVtKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgaWYgaXRlbSBub3QgaW4gY3VyX2l0ZW1zIGFuZCBpdGVtIG5vdCBpbiBuZXdfaXRlbXM6Ci0gICAgICAgICAgICBuZXdfaXRlbXMuYXBwZW5kKGl0ZW0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkdXBfaXRlbXMuYXBwZW5kKGl0ZW0pCi0KLSAgICBpZiBsZW4obmV3X2l0ZW1zKSA+IDA6Ci0gICAgICAgIGN1cl9pdGVtcy5leHRlbmQobmV3X2l0ZW1zKQotICAgICAgICB3cml0ZV9jb25maWdfaXRlbXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBjdXJfaXRlbXMpCi0gICAgICAgIHByaW50KCJBZGRlZCBpdGVtJXM6IiAlICgiIiBpZiBsZW4obmV3X2l0ZW1zKT09MSBlbHNlICJzIikpCi0gICAgICAgIGZvciBuIGluIG5ld19pdGVtczoKLSAgICAgICAgICAgIHByaW50KCJcdCVzIiAlIG4pCi0KLSAgICBpZiBsZW4oZHVwX2l0ZW1zKSA+IDA6Ci0gICAgICAgIG91dHB1dD0iVGhlIGZvbGxvd2luZyBpdGVtJXMgYWxyZWFkeSBleGlzdCVzIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIGlnbm9yaW5nICVzOiIgJSBcCi0gICAgICAgICAgICAoKCIiLCJzIiwgIml0IikgaWYgbGVuKGR1cF9pdGVtcyk9PTEgZWxzZSAoInMiLCAiIiwgInRoZW0iICkpCi0gICAgICAgIHByaW50KG91dHB1dCkKLSAgICAgICAgZm9yIG4gaW4gZHVwX2l0ZW1zOgotICAgICAgICAgICAgcHJpbnQoIlx0JXMiICUgbikKLQotZGVmIGZpbmRfY3VycmVudF9rZXJuZWwoYnNwX2xheWVyLCBtYWNoaW5lKToKLSAgICAiIiIKLSAgICBEZXRlcm1pbmUgdGhlIGtlcm5lbCBhbmQgdmVyc2lvbiBjdXJyZW50bHkgYmVpbmcgdXNlZCBpbiB0aGUgQlNQLgotICAgICIiIgotICAgIG1hY2hpbmVfY29uZiA9IG9zLnBhdGguam9pbihic3BfbGF5ZXIsICJjb25mL21hY2hpbmUvIiArIG1hY2hpbmUgKyAiLmNvbmYiKQotCi0gICAgcHJlZmVycmVkX2tlcm5lbCA9IHByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbiA9IHByZWZlcnJlZF92ZXJzaW9uX3Zhcm5hbWUgPSBOb25lCi0KLSAgICBmID0gb3BlbihtYWNoaW5lX2NvbmYsICJyIikKLSAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKLSAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgaWYgbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpOgotICAgICAgICAgICAgcHJlZmVycmVkX2tlcm5lbCA9IGxpbmUuc3BsaXQoKVstMV0KLSAgICAgICAgICAgIHByZWZlcnJlZF9rZXJuZWwgPSBwcmVmZXJyZWRfa2VybmVsLnJlcGxhY2UoJ1wiJywnJykKLSAgICAgICAgICAgIHByZWZlcnJlZF92ZXJzaW9uX3Zhcm5hbWUgPSAiUFJFRkVSUkVEX1ZFUlNJT05fIiArIHByZWZlcnJlZF9rZXJuZWwKLSAgICAgICAgaWYgcHJlZmVycmVkX3ZlcnNpb25fdmFybmFtZSBhbmQgbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgocHJlZmVycmVkX3ZlcnNpb25fdmFybmFtZSk6Ci0gICAgICAgICAgICBwcmVmZXJyZWRfa2VybmVsX3ZlcnNpb24gPSBsaW5lLnNwbGl0KClbLTFdCi0gICAgICAgICAgICBwcmVmZXJyZWRfa2VybmVsX3ZlcnNpb24gPSBwcmVmZXJyZWRfa2VybmVsX3ZlcnNpb24ucmVwbGFjZSgnXCInLCcnKQotICAgICAgICAgICAgcHJlZmVycmVkX2tlcm5lbF92ZXJzaW9uID0gcHJlZmVycmVkX2tlcm5lbF92ZXJzaW9uLnJlcGxhY2UoJyUnLCcnKQotCi0gICAgaWYgcHJlZmVycmVkX2tlcm5lbCBhbmQgcHJlZmVycmVkX2tlcm5lbF92ZXJzaW9uOgotICAgICAgICByZXR1cm4gcHJlZmVycmVkX2tlcm5lbCArICJfIiArIHByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbgotICAgIGVsaWYgcHJlZmVycmVkX2tlcm5lbDoKLSAgICAgICAgcmV0dXJuIHByZWZlcnJlZF9rZXJuZWwKLQotCi1kZWYgZmluZF9maWxlc2RpcihzY3JpcHRzX3BhdGgsIG1hY2hpbmUpOgotICAgICIiIgotICAgIEZpbmQgdGhlIG5hbWUgb2YgdGhlICdmaWxlcycgZGlyIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWFjaGluZQotICAgIChjb3VsZCBiZSBpbiBmaWxlcy8sIGxpbnV4LXlvY3RvLWN1c3RvbS8sIGV0YykuICBSZXR1cm5zIHRoZSBuYW1lCi0gICAgb2YgdGhlIGZpbGVzIGRpciBpZiBmb3VuZCwgTm9uZSBvdGhlcndpc2UuCi0gICAgIiIiCi0gICAgbGF5ZXIgPSBmaW5kX2JzcF9sYXllcihtYWNoaW5lKQotICAgIGZpbGVzZGlyID0gTm9uZQotICAgIGxpbnV4ZGlyID0gb3MucGF0aC5qb2luKGxheWVyLCAicmVjaXBlcy1rZXJuZWwvbGludXgiKQotICAgIGxpbnV4ZGlyX2xpc3QgPSBvcy5saXN0ZGlyKGxpbnV4ZGlyKQotICAgIGZvciBmaWxlb2JqIGluIGxpbnV4ZGlyX2xpc3Q6Ci0gICAgICAgIGZpbGVvYmpfcGF0aCA9IG9zLnBhdGguam9pbihsaW51eGRpciwgZmlsZW9iaikKLSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihmaWxlb2JqX3BhdGgpOgotICAgICAgICAgICAgIyB0aGlzIGNvdWxkIGJlIGZpbGVzLyBvciBsaW51eC15b2N0by1jdXN0b20vLCB3ZSBoYXZlIG5vIHdheSBvZiBkaXN0aW5ndWlzaGluZwotICAgICAgICAgICAgIyBzbyB3ZSB0YWtlIHRoZSBmaXJzdCAoYW5kIG5vcm1hbGx5IG9ubHkpIGRpciB3ZSBmaW5kIGFzIHRoZSAnZmlsZXNkaXInCi0gICAgICAgICAgICBmaWxlc2RpciA9IGZpbGVvYmpfcGF0aAotCi0gICAgcmV0dXJuIGZpbGVzZGlyCi0KLQotZGVmIHJlYWRfcGF0Y2hfaXRlbXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lKToKLSAgICAiIiIKLSAgICBGaW5kIGFuZCByZXR1cm4gYSBsaXN0IG9mIHBhdGNoIGl0ZW1zIGluIGEgbWFjaGluZSdzIHVzZXItZGVmaW5lZAotICAgIHBhdGNoIGxpc3QgWyR7bWFjaGluZX0tdXNlci1wYXRjaGVzLnNjY10uCi0gICAgIiIiCi0gICAgcGF0Y2hfaXRlbXMgPSBbXQotCi0gICAgZiA9IG9wZW5fdXNlcl9maWxlKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgbWFjaGluZSsiLXVzZXItcGF0Y2hlcy5zY2MiLCAiciIpCi0gICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCi0gICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgIHMgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgaWYgcyBhbmQgbm90IHMuc3RhcnRzd2l0aCgiIyIpOgotICAgICAgICAgICAgZmllbGRzID0gcy5zcGxpdCgpCi0gICAgICAgICAgICBpZiBub3QgZmllbGRzWzBdID09ICJwYXRjaCI6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHBhdGNoX2l0ZW1zLmFwcGVuZChmaWVsZHNbMV0pCi0gICAgZi5jbG9zZSgpCi0KLSAgICByZXR1cm4gcGF0Y2hfaXRlbXMKLQotCi1kZWYgd3JpdGVfcGF0Y2hfaXRlbXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBwYXRjaF9pdGVtcyk6Ci0gICAgIiIiCi0gICAgV3JpdGUgKHJlcGxhY2UpIHRoZSBsaXN0IG9mIHBhdGNoZXMgaW4gYSBtYWNoaW5lJ3MgdXNlci1kZWZpbmVkCi0gICAgcGF0Y2ggbGlzdCBbJHttYWNoaW5lfS11c2VyLXBhdGNoZXMuc2NjXS4KLSAgICAiIiIKLSAgICBmID0gb3Blbl91c2VyX2ZpbGUoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBtYWNoaW5lKyItdXNlci1wYXRjaGVzLnNjYyIsICJ3IikKLSAgICBmb3IgaXRlbSBpbiBwYXRjaF9pdGVtczoKLSAgICAgICAgZi53cml0ZSgicGF0Y2ggIiArIGl0ZW0gKyAiXG4iKQotICAgIGYuY2xvc2UoKQotCi0gICAga2VybmVsX2NvbnRlbnRzX2NoYW5nZWQoc2NyaXB0c19wYXRoLCBtYWNoaW5lKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfcGF0Y2hfbGlzdChzY3JpcHRzX3BhdGgsIG1hY2hpbmUpOgotICAgICIiIgotICAgIERpc3BsYXkgdGhlIGxpc3Qgb2YgcGF0Y2hlcyBpbiBhIG1hY2hpbmUncyB1c2VyLWRlZmluZWQgcGF0Y2ggbGlzdAotICAgIFske21hY2hpbmV9LXVzZXItcGF0Y2hlcy5zY2NdLgotICAgICIiIgotICAgIHBhdGNoZXMgPSByZWFkX3BhdGNoX2l0ZW1zKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLQotICAgIHByaW50KCJUaGUgY3VycmVudCBzZXQgb2YgbWFjaGluZS1zcGVjaWZpYyBwYXRjaGVzIGZvciAlcyBpczoiICUgbWFjaGluZSkKLSAgICBwcmludChnZW5fY2hvaWNlc19zdHIocGF0Y2hlcykpCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9wYXRjaF9ybShzY3JpcHRzX3BhdGgsIG1hY2hpbmUpOgotICAgICIiIgotICAgIFJlbW92ZSBvbmUgb3IgbW9yZSBwYXRjaGVzIGZyb20gYSBtYWNoaW5lJ3MgdXNlci1kZWZpbmVkIHBhdGNoCi0gICAgbGlzdCBbJHttYWNoaW5lfS11c2VyLXBhdGNoZXMuc2NjXS4KLSAgICAiIiIKLSAgICBwYXRjaGVzID0gcmVhZF9wYXRjaF9pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUpCi0KLSAgICBwcmludCgiU3BlY2lmeSB0aGUgcGF0Y2hlcyB0byByZW1vdmU6IikKLSAgICBpbnAgPSBpbnB1dChnZW5fY2hvaWNlc19zdHIocGF0Y2hlcykpCi0gICAgcm1fY2hvaWNlcyA9IGlucC5zcGxpdCgpCi0gICAgcm1fY2hvaWNlcy5zb3J0KCkKLQotICAgIHJlbW92ZWQgPSBbXQotCi0gICAgZmlsZXNkaXIgPSBmaW5kX2ZpbGVzZGlyKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLSAgICBpZiBub3QgZmlsZXNkaXI6Ci0gICAgICAgIHByaW50KCJDb3VsZG4ndCBybSBwYXRjaChlcykgc2luY2Ugd2UgY291bGRuJ3QgZmluZCBhICdmaWxlcycgZGlyIikKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGZvciBjaG9pY2UgaW4gcmV2ZXJzZWQocm1fY2hvaWNlcyk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlkeCA9IGludChjaG9pY2UpIC0gMQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJJbnZhbGlkIGNob2ljZSAoJXMpLCBleGl0aW5nIiAlIGNob2ljZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGlmIGlkeCA8IDAgb3IgaWR4ID49IGxlbihwYXRjaGVzKToKLSAgICAgICAgICAgIHByaW50KCJJbnZhbGlkIGNob2ljZSAoJWQpLCBleGl0aW5nIiAlIChpZHggKyAxKSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGZpbGVzZGlyX3BhdGNoID0gb3MucGF0aC5qb2luKGZpbGVzZGlyLCBwYXRjaGVzW2lkeF0pCi0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVzZGlyX3BhdGNoKToKLSAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlc2Rpcl9wYXRjaCkKLSAgICAgICAgcmVtb3ZlZC5hcHBlbmQocGF0Y2hlc1tpZHhdKQotICAgICAgICBwYXRjaGVzLnBvcChpZHgpCi0KLSAgICB3cml0ZV9wYXRjaF9pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIHBhdGNoZXMpCi0KLSAgICBwcmludCgiUmVtb3ZlZCBwYXRjaGVzOiIpCi0gICAgZm9yIHIgaW4gcmVtb3ZlZDoKLSAgICAgICAgcHJpbnQoIlx0JXMiICUgcikKLQotCi1kZWYgeW9jdG9fa2VybmVsX3BhdGNoX2FkZChzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIHBhdGNoZXMpOgotICAgICIiIgotICAgIEFkZCBvbmUgb3IgbW9yZSBwYXRjaGVzIHRvIGEgbWFjaGluZSdzIHVzZXItZGVmaW5lZCBwYXRjaCBsaXN0Ci0gICAgWyR7bWFjaGluZX0tdXNlci1wYXRjaGVzLnNjY10uCi0gICAgIiIiCi0gICAgZXhpc3RpbmdfcGF0Y2hlcyA9IHJlYWRfcGF0Y2hfaXRlbXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lKQotCi0gICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6Ci0gICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUocGF0Y2gpIGluIGV4aXN0aW5nX3BhdGNoZXM6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgYWRkIHBhdGNoICglcykgc2luY2UgaXQncyBhbHJlYWR5IGJlZW4gYWRkZWQiICUgb3MucGF0aC5iYXNlbmFtZShwYXRjaCkpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZmlsZXNkaXIgPSBmaW5kX2ZpbGVzZGlyKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLSAgICBpZiBub3QgZmlsZXNkaXI6Ci0gICAgICAgIHByaW50KCJDb3VsZG4ndCBhZGQgcGF0Y2ggKCVzKSBzaW5jZSB3ZSBjb3VsZG4ndCBmaW5kIGEgJ2ZpbGVzJyBkaXIgdG8gYWRkIGl0IHRvIiAlIG9zLnBhdGguYmFzZW5hbWUocGF0Y2gpKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgbmV3X3BhdGNoZXMgPSBbXQotCi0gICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShwYXRjaCk6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBwYXRjaCAoJXMpLCBleGl0aW5nIiAlIHBhdGNoKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGNoKQotICAgICAgICBmaWxlc2Rpcl9wYXRjaCA9IG9zLnBhdGguam9pbihmaWxlc2RpciwgYmFzZW5hbWUpCi0gICAgICAgIHNodXRpbC5jb3B5ZmlsZShwYXRjaCwgZmlsZXNkaXJfcGF0Y2gpCi0gICAgICAgIG5ld19wYXRjaGVzLmFwcGVuZChiYXNlbmFtZSkKLQotICAgIGN1cl9pdGVtcyA9IHJlYWRfcGF0Y2hfaXRlbXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lKQotICAgIGN1cl9pdGVtcy5leHRlbmQobmV3X3BhdGNoZXMpCi0gICAgd3JpdGVfcGF0Y2hfaXRlbXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBjdXJfaXRlbXMpCi0KLSAgICBwcmludCgiQWRkZWQgcGF0Y2hlczoiKQotICAgIGZvciBuIGluIG5ld19wYXRjaGVzOgotICAgICAgICBwcmludCgiXHQlcyIgJSBuKQotCi0KLWRlZiBpbmNfcHIobGluZSk6Ci0gICAgIiIiCi0gICAgQWRkIDEgdG8gdGhlIFBSIHZhbHVlIGluIHRoZSBnaXZlbiBiYmFwcGVuZCBQUiBsaW5lLiAgRm9yIHRoZSBQUgotICAgIGxpbmVzIGluIGtlcm5lbCAuYmJhcHBlbmRzIGFmdGVyIG1vZGlmaWNhdGlvbnMuICBIYW5kbGVzIFBScyBvZgotICAgIHRoZSBmb3JtIFBSIDo9ICIke1BSfS4xIiBhcyB3ZWxsIGFzIFBSID0gInIwIi4KLSAgICAiIiIKLSAgICBpZHggPSBsaW5lLmZpbmQoIlwiIikKLQotICAgIHByX3N0ciA9IGxpbmVbaWR4Ol0KLSAgICBwcl9zdHIgPSBwcl9zdHIucmVwbGFjZSgnXCInLCcnKQotICAgIGZpZWxkcyA9IHByX3N0ci5zcGxpdCgnLicpCi0gICAgaWYgbGVuKGZpZWxkcykgPiAxOgotICAgICAgICBmaWVsZHNbMV0gPSBzdHIoaW50KGZpZWxkc1sxXSkgKyAxKQotICAgICAgICBwcl9zdHIgPSAiXCIiICsgJy4nLmpvaW4oZmllbGRzKSArICJcIlxuIgotICAgIGVsc2U6Ci0gICAgICAgIHByX3ZhbCA9IHByX3N0clsxOl0KLSAgICAgICAgcHJfc3RyID0gIlwiIiArICJyIiArIHN0cihpbnQocHJfdmFsKSArIDEpICsgIlwiXG4iCi0gICAgaWR4MiA9IGxpbmUuZmluZCgiXCIiLCBpZHggKyAxKQotICAgIGxpbmUgPSBsaW5lWzppZHhdICsgcHJfc3RyCi0gICAgCi0gICAgcmV0dXJuIGxpbmUKLQotCi1kZWYga2VybmVsX2NvbnRlbnRzX2NoYW5nZWQoc2NyaXB0c19wYXRoLCBtYWNoaW5lKToKLSAgICAiIiIKLSAgICBEbyB3aGF0IHdlIG5lZWQgdG8gZG8gdG8gbm90aWZ5IHRoZSBzeXN0ZW0gdGhhdCB0aGUga2VybmVsCi0gICAgcmVjaXBlJ3MgY29udGVudHMgaGF2ZSBjaGFuZ2VkLgotICAgICIiIgotICAgIGxheWVyID0gZmluZF9ic3BfbGF5ZXIobWFjaGluZSkKLQotICAgIGtlcm5lbCA9IGZpbmRfY3VycmVudF9rZXJuZWwobGF5ZXIsIG1hY2hpbmUpCi0gICAgaWYgbm90IGtlcm5lbDoKLSAgICAgICAgcHJpbnQoIkNvdWxkbid0IGRldGVybWluZSB0aGUga2VybmVsIGZvciB0aGlzIEJTUCwgZXhpdGluZy4iKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAga2VybmVsX2JiZmlsZSA9IG9zLnBhdGguam9pbihsYXllciwgInJlY2lwZXMta2VybmVsL2xpbnV4LyIgKyBrZXJuZWwgKyAiLmJiYXBwZW5kIikKLSAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoa2VybmVsX2JiZmlsZSk6Ci0gICAgICAgIGtlcm5lbF9iYmZpbGUgPSBvcy5wYXRoLmpvaW4obGF5ZXIsICJyZWNpcGVzLWtlcm5lbC9saW51eC8iICsga2VybmVsICsgIi5iYiIpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShrZXJuZWxfYmJmaWxlKToKLSAgICAgICAgICAgIHJldHVybgotICAgIGtlcm5lbF9iYmZpbGVfcHJldiA9IGtlcm5lbF9iYmZpbGUgKyAiLnByZXYiCi0gICAgc2h1dGlsLmNvcHlmaWxlKGtlcm5lbF9iYmZpbGUsIGtlcm5lbF9iYmZpbGVfcHJldikKLQotICAgIGlmaWxlID0gb3BlbihrZXJuZWxfYmJmaWxlX3ByZXYsICJyIikKLSAgICBvZmlsZSA9IG9wZW4oa2VybmVsX2JiZmlsZSwgInciKQotICAgIGlmaWxlX2xpbmVzID0gaWZpbGUucmVhZGxpbmVzKCkKLSAgICBmb3IgaWZpbGVfbGluZSBpbiBpZmlsZV9saW5lczoKLSAgICAgICAgaWYgaWZpbGVfbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoIlBSIik6Ci0gICAgICAgICAgICBpZmlsZV9saW5lID0gaW5jX3ByKGlmaWxlX2xpbmUpCi0gICAgICAgIG9maWxlLndyaXRlKGlmaWxlX2xpbmUpCi0gICAgb2ZpbGUuY2xvc2UoKQotICAgIGlmaWxlLmNsb3NlKCkKLQotCi1kZWYga2VybmVscyhjb250ZXh0KToKLSAgICAiIiIKLSAgICBSZXR1cm4gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGtlcm5lbHMgaW4gdGhlIEJTUCBpLmUuIGNvcnJlc3BvbmRpbmcKLSAgICB0byB0aGUga2VybmVsIC5iYmFwcGVuZHMgZm91bmQgaW4gdGhlIGxheWVyLgotICAgICIiIgotICAgIGFyY2hkaXIgPSBvcy5wYXRoLmpvaW4oY29udGV4dFsic2NyaXB0c19wYXRoIl0sICJsaWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC8iICsgY29udGV4dFsiYXJjaCJdKQotICAgIGtlcm5kaXIgPSBvcy5wYXRoLmpvaW4oYXJjaGRpciwgInJlY2lwZXMta2VybmVsL2xpbnV4IikKLSAgICBiYmdsb2IgPSBvcy5wYXRoLmpvaW4oa2VybmRpciwgIiouYmJhcHBlbmQiKQotCi0gICAgYmJhcHBlbmRzID0gZ2xvYi5nbG9iKGJiZ2xvYikKLQotICAgIGtlcm5lbHMgPSBbXQotCi0gICAgZm9yIGtlcm5lbCBpbiBiYmFwcGVuZHM6Ci0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGtlcm5lbCkpWzBdCi0gICAgICAgIGlkeCA9IGZpbGVuYW1lLmZpbmQoQ0xPU0VfVEFHKQotICAgICAgICBpZiBpZHggIT0gLTE6Ci0gICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lW2lkeCArIGxlbihDTE9TRV9UQUcpOl0uc3RyaXAoKQotICAgICAgICBrZXJuZWxzLmFwcGVuZChmaWxlbmFtZSkKLQotICAgIGtlcm5lbHMuYXBwZW5kKCJjdXN0b20iKQotCi0gICAgcmV0dXJuIGtlcm5lbHMKLQotCi1kZWYgZXh0cmFjdF9naXR1cmwoZmlsZSk6Ci0gICAgIiIiCi0gICAgRXh0cmFjdCB0aGUgZ2l0IHVybCBvZiB0aGUga2VybmVsIHJlcG8gZnJvbSB0aGUga2VybmVsIHJlY2lwZSdzCi0gICAgU1JDX1VSSS4KLSAgICAiIiIKLSAgICB1cmwgPSBOb25lCi0gICAgZiA9IG9wZW4oZmlsZSwgInIiKQotICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiU1JDX1VSSSIpOgotICAgICAgICAgICAgbGluZSA9IGxpbmVbbGVuKCJTUkNfVVJJIik6XS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIj0iKToKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZVsxOl0uc3RyaXAoKQotICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiXCIiKToKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbMTpdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICAgICAgcHJvdCA9ICJnaXQiCi0gICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGxpbmUuc3BsaXQoIjsiKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHMuc3RhcnRzd2l0aCgiZ2l0Oi8vIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gcwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcy5zdGFydHN3aXRoKCJwcm90b2NvbD0iKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ID0gcy5zcGxpdCgiPSIpWzFdCi0gICAgICAgICAgICAgICAgICAgIGlmIHVybDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHByb3QgKyB1cmxbMzpdCi0gICAgcmV0dXJuIHVybAotCi0KLWRlZiBmaW5kX2dpdHVybChjb250ZXh0KToKLSAgICAiIiIKLSAgICBGaW5kIHRoZSBnaXQgdXJsIG9mIHRoZSBrZXJuZWwgcmVwbyBmcm9tIHRoZSBrZXJuZWwgcmVjaXBlJ3MKLSAgICBTUkNfVVJJLgotICAgICIiIgotICAgIG5hbWUgPSBjb250ZXh0WyJuYW1lIl0KLSAgICBmaWxlYmFzZSA9IGNvbnRleHRbImZpbGVuYW1lIl0KLSAgICBzY3JpcHRzX3BhdGggPSBjb250ZXh0WyJzY3JpcHRzX3BhdGgiXQotCi0gICAgbWV0YV9sYXllciA9IGZpbmRfbWV0YV9sYXllcigpCi0KLSAgICBrZXJuZGlyID0gb3MucGF0aC5qb2luKG1ldGFfbGF5ZXIsICJyZWNpcGVzLWtlcm5lbC9saW51eCIpCi0gICAgYmJnbG9iID0gb3MucGF0aC5qb2luKGtlcm5kaXIsICIqLmJiIikKLSAgICBiYnMgPSBnbG9iLmdsb2IoYmJnbG9iKQotICAgIGZvciBrZXJuZWwgaW4gYmJzOgotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShrZXJuZWwpKVswXQotICAgICAgICBpZiBmaWxlbmFtZSBpbiBmaWxlYmFzZToKLSAgICAgICAgICAgIGdpdHVybCA9IGV4dHJhY3RfZ2l0dXJsKGtlcm5lbCkKLSAgICAgICAgICAgIHJldHVybiBnaXR1cmwKLSAgICAKLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiByZWFkX2ZlYXR1cmVzKHNjcmlwdHNfcGF0aCwgbWFjaGluZSk6Ci0gICAgIiIiCi0gICAgRmluZCBhbmQgcmV0dXJuIGEgbGlzdCBvZiBmZWF0dXJlcyBpbiBhIG1hY2hpbmUncyB1c2VyLWRlZmluZWQKLSAgICBmZWF0dXJlcyBmcmFnbWVudCBbJHttYWNoaW5lfS11c2VyLWZlYXR1cmVzLnNjY10uCi0gICAgIiIiCi0gICAgZmVhdHVyZXMgPSBbXQotCi0gICAgZiA9IG9wZW5fdXNlcl9maWxlKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgbWFjaGluZSsiLXVzZXItZmVhdHVyZXMuc2NjIiwgInIiKQotICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICBzID0gbGluZS5zdHJpcCgpCi0gICAgICAgIGlmIHMgYW5kIG5vdCBzLnN0YXJ0c3dpdGgoIiMiKToKLSAgICAgICAgICAgIGZlYXR1cmVfaW5jbHVkZSA9IHMuc3BsaXQoKQotICAgICAgICAgICAgZmVhdHVyZXMuYXBwZW5kKGZlYXR1cmVfaW5jbHVkZVsxXS5zdHJpcCgpKQotICAgIGYuY2xvc2UoKQotCi0gICAgcmV0dXJuIGZlYXR1cmVzCi0KLQotZGVmIHdyaXRlX2ZlYXR1cmVzKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgZmVhdHVyZXMpOgotICAgICIiIgotICAgIFdyaXRlIChyZXBsYWNlKSB0aGUgbGlzdCBvZiBmZWF0dXJlIGl0ZW1zIGluIGEKLSAgICBtYWNoaW5lJ3MgdXNlci1kZWZpbmVkIGZlYXR1cmVzIGZyYWdtZW50IFske21hY2hpbmV9PXVzZXItZmVhdHVyZXMuY2ZnXS4KLSAgICAiIiIKLSAgICBmID0gb3Blbl91c2VyX2ZpbGUoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBtYWNoaW5lKyItdXNlci1mZWF0dXJlcy5zY2MiLCAidyIpCi0gICAgZm9yIGl0ZW0gaW4gZmVhdHVyZXM6Ci0gICAgICAgIGYud3JpdGUoImluY2x1ZGUgIiArIGl0ZW0gKyAiXG4iKQotICAgIGYuY2xvc2UoKQotCi0gICAga2VybmVsX2NvbnRlbnRzX2NoYW5nZWQoc2NyaXB0c19wYXRoLCBtYWNoaW5lKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9saXN0KHNjcmlwdHNfcGF0aCwgbWFjaGluZSk6Ci0gICAgIiIiCi0gICAgRGlzcGxheSB0aGUgbGlzdCBvZiBmZWF0dXJlcyB1c2VkIGluIGEgbWFjaGluZSdzIHVzZXItZGVmaW5lZAotICAgIGZlYXR1cmVzIGZyYWdtZW50IFske21hY2hpbmV9LXVzZXItZmVhdHVyZXMuc2NjXS4KLSAgICAiIiIKLSAgICBmZWF0dXJlcyA9IHJlYWRfZmVhdHVyZXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lKQotCi0gICAgcHJpbnQoIlRoZSBjdXJyZW50IHNldCBvZiBtYWNoaW5lLXNwZWNpZmljIGZlYXR1cmVzIGZvciAlcyBpczoiICUgbWFjaGluZSkKLSAgICBwcmludChnZW5fY2hvaWNlc19zdHIoZmVhdHVyZXMpKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9ybShzY3JpcHRzX3BhdGgsIG1hY2hpbmUpOgotICAgICIiIgotICAgIERpc3BsYXkgdGhlIGxpc3Qgb2YgZmVhdHVyZXMgdXNlZCBpbiBhIG1hY2hpbmUncyB1c2VyLWRlZmluZWQKLSAgICBmZWF0dXJlcyBmcmFnbWVudCBbJHttYWNoaW5lfS11c2VyLWZlYXR1cmVzLnNjY10sIHByb21wdCB0aGUgdXNlcgotICAgIGZvciBvbmUgb3IgbW9yZSB0byByZW1vdmUsIGFuZCByZW1vdmUgdGhlbS4KLSAgICAiIiIKLSAgICBmZWF0dXJlcyA9IHJlYWRfZmVhdHVyZXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lKQotCi0gICAgcHJpbnQoIlNwZWNpZnkgdGhlIGZlYXR1cmVzIHRvIHJlbW92ZToiKQotICAgIGlucCA9IGlucHV0KGdlbl9jaG9pY2VzX3N0cihmZWF0dXJlcykpCi0gICAgcm1fY2hvaWNlcyA9IGlucC5zcGxpdCgpCi0gICAgcm1fY2hvaWNlcy5zb3J0KCkKLQotICAgIHJlbW92ZWQgPSBbXQotCi0gICAgZm9yIGNob2ljZSBpbiByZXZlcnNlZChybV9jaG9pY2VzKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWR4ID0gaW50KGNob2ljZSkgLSAxCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcHJpbnQoIkludmFsaWQgY2hvaWNlICglcyksIGV4aXRpbmciICUgY2hvaWNlKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgaWYgaWR4IDwgMCBvciBpZHggPj0gbGVuKGZlYXR1cmVzKToKLSAgICAgICAgICAgIHByaW50KCJJbnZhbGlkIGNob2ljZSAoJWQpLCBleGl0aW5nIiAlIChpZHggKyAxKSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIHJlbW92ZWQuYXBwZW5kKGZlYXR1cmVzLnBvcChpZHgpKQotCi0gICAgd3JpdGVfZmVhdHVyZXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBmZWF0dXJlcykKLQotICAgIHByaW50KCJSZW1vdmVkIGZlYXR1cmVzOiIpCi0gICAgZm9yIHIgaW4gcmVtb3ZlZDoKLSAgICAgICAgcHJpbnQoIlx0JXMiICUgcikKLQotCi1kZWYgeW9jdG9fa2VybmVsX2ZlYXR1cmVfYWRkKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgZmVhdHVyZXMpOgotICAgICIiIgotICAgIEFkZCBvbmUgb3IgbW9yZSBmZWF0dXJlcyBhIG1hY2hpbmUncyB1c2VyLWRlZmluZWQgZmVhdHVyZXMKLSAgICBmcmFnbWVudCBbJHttYWNoaW5lfS11c2VyLWZlYXR1cmVzLnNjY10uCi0gICAgIiIiCi0gICAgbmV3X2l0ZW1zID0gW10KLQotICAgIGZvciBpdGVtIGluIGZlYXR1cmVzOgotICAgICAgICBpZiBub3QgaXRlbS5lbmRzd2l0aCgiLnNjYyIpOgotICAgICAgICAgICAgcHJpbnQoIkludmFsaWQgZmVhdHVyZSAoJXMpLCBleGl0aW5nIiAlIGl0ZW0pCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBuZXdfaXRlbXMuYXBwZW5kKGl0ZW0pCi0KLSAgICBjdXJfaXRlbXMgPSByZWFkX2ZlYXR1cmVzKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLSAgICBjdXJfaXRlbXMuZXh0ZW5kKG5ld19pdGVtcykKLQotICAgIHdyaXRlX2ZlYXR1cmVzKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgY3VyX2l0ZW1zKQotCi0gICAgcHJpbnQoIkFkZGVkIGZlYXR1cmVzOiIpCi0gICAgZm9yIG4gaW4gbmV3X2l0ZW1zOgotICAgICAgICBwcmludCgiXHQlcyIgJSBuKQotCi0KLWRlZiBmaW5kX2ZlYXR1cmVfdXJsKGdpdF91cmwpOgotICAgICIiIgotICAgIEZpbmQgdGhlIHVybCBvZiB0aGUga2Vybi1mZWF0dXJlcy5yYyBrZXJuZWwgZm9yIHRoZSBrZXJuZWwgcmVwbwotICAgIHNwZWNpZmllZCBmcm9tIHRoZSBCU1AncyBrZXJuZWwgcmVjaXBlIFNSQ19VUkkuCi0gICAgIiIiCi0gICAgZmVhdHVyZV91cmwgPSAiIgotICAgIGlmIGdpdF91cmwuc3RhcnRzd2l0aCgiZ2l0Oi8vIik6Ci0gICAgICAgIGdpdF91cmwgPSBnaXRfdXJsW2xlbigiZ2l0Oi8vIik6XS5zdHJpcCgpCi0gICAgICAgIHMgPSBnaXRfdXJsLnNwbGl0KCIvIikKLSAgICAgICAgaWYgc1sxXS5lbmRzd2l0aCgiLmdpdCIpOgotICAgICAgICAgICAgc1sxXSA9IHNbMV1bOmxlbihzWzFdKSAtIGxlbigiLmdpdCIpXQotICAgICAgICBmZWF0dXJlX3VybCA9ICJodHRwOi8vIiArIHNbMF0gKyAiL2NnaXQvY2dpdC5jZ2kvIiArIHNbMV0gKyBcCi0gICAgICAgICAgICAiL3BsYWluL21ldGEvY2ZnL2tlcm4tZmVhdHVyZXMucmM/aD1tZXRhIgotCi0gICAgcmV0dXJuIGZlYXR1cmVfdXJsCi0KLQotZGVmIGZpbmRfZmVhdHVyZV9kZXNjKGxpbmVzKToKLSAgICAiIiIKLSAgICBGaW5kIHRoZSBmZWF0dXJlIGRlc2NyaXB0aW9uIGFuZCBjb21wYXRpYmlsaXR5IGluIHRoZSBwYXNzZWQtaW4KLSAgICBzZXQgb2YgbGluZXMuICBSZXR1cm5zIGEgc3RyaW5nIHN0cmluZyBvZiB0aGUgZm9ybSAnZGVzYwotICAgIFtjb21wYXRdJy4KLSAgICAiIiIKLSAgICBkZXNjID0gIm5vIGRlc2NyaXB0aW9uIGF2YWlsYWJsZSIKLSAgICBjb21wYXQgPSAidW5rbm93biIKLQotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICBpZHggPSBsaW5lLmZpbmQoIktGRUFUVVJFX0RFU0NSSVBUSU9OIikKLSAgICAgICAgaWYgaWR4ICE9IC0xOgotICAgICAgICAgICAgZGVzYyA9IGxpbmVbaWR4ICsgbGVuKCJLRkVBVFVSRV9ERVNDUklQVElPTiIpOl0uc3RyaXAoKQotICAgICAgICAgICAgaWYgZGVzYy5zdGFydHN3aXRoKCJcIiIpOgotICAgICAgICAgICAgICAgIGRlc2MgPSBkZXNjWzE6XQotICAgICAgICAgICAgICAgIGlmIGRlc2MuZW5kc3dpdGgoIlwiIik6Ci0gICAgICAgICAgICAgICAgICAgIGRlc2MgPSBkZXNjWzotMV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlkeCA9IGxpbmUuZmluZCgiS0ZFQVRVUkVfQ09NUEFUSUJJTElUWSIpCi0gICAgICAgICAgICBpZiBpZHggIT0gLTE6Ci0gICAgICAgICAgICAgICAgY29tcGF0ID0gbGluZVtpZHggKyBsZW4oIktGRUFUVVJFX0NPTVBBVElCSUxJVFkiKTpdLnN0cmlwKCkKLQotICAgIHJldHVybiBkZXNjICsgIiBbIiArIGNvbXBhdCArICJdIgotCi0KLWRlZiBwcmludF9mZWF0dXJlX2Rlc2NzKGxheWVyLCBmZWF0dXJlX2Rpcik6Ci0gICAgIiIiCi0gICAgUHJpbnQgdGhlIGZlYXR1cmUgZGVzY3JpcHRpb25zIGZvciB0aGUgZmVhdHVyZXMgaW4gZmVhdHVyZV9kaXIuCi0gICAgIiIiCi0gICAga2VybmVsX2ZpbGVzX2ZlYXR1cmVzID0gb3MucGF0aC5qb2luKGxheWVyLCAicmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVfZGlyKQotICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGtlcm5lbF9maWxlc19mZWF0dXJlcyk6Ci0gICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgifiIpIG9yIGZpbGUuZW5kc3dpdGgoIiMiKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgiLnNjYyIpOgotICAgICAgICAgICAgICAgIGZ1bGxwYXRoID0gb3MucGF0aC5qb2luKGxheWVyLCAicmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZV9kaXIgKyAiLyIgKyBmaWxlKQotICAgICAgICAgICAgICAgIGYgPSBvcGVuKGZ1bGxwYXRoKQotICAgICAgICAgICAgICAgIGZlYXR1cmVfZGVzYyA9IGZpbmRfZmVhdHVyZV9kZXNjKGYucmVhZGxpbmVzKCkpCi0gICAgICAgICAgICAgICAgcHJpbnQoZmVhdHVyZV9kaXIgKyAiLyIgKyBmaWxlICsgIjogIiArIGZlYXR1cmVfZGVzYykKLQotCi1kZWYgeW9jdG9fa2VybmVsX2F2YWlsYWJsZV9mZWF0dXJlc19saXN0KHNjcmlwdHNfcGF0aCwgbWFjaGluZSk6Ci0gICAgIiIiCi0gICAgRGlzcGxheSB0aGUgbGlzdCBvZiBhbGwgdGhlIGtlcm5lbCBmZWF0dXJlcyBhdmFpbGFibGUgZm9yIHVzZSBpbgotICAgIEJTUHMsIGFzIGdhdGhlcmVkIGZyb20gdGhlIHNldCBvZiBmZWF0dXJlIHNvdXJjZXMuCi0gICAgIiIiCi0gICAgbGF5ZXIgPSBmaW5kX2JzcF9sYXllcihtYWNoaW5lKQotICAgIGtlcm5lbCA9IGZpbmRfY3VycmVudF9rZXJuZWwobGF5ZXIsIG1hY2hpbmUpCi0gICAgaWYgbm90IGtlcm5lbDoKLSAgICAgICAgcHJpbnQoIkNvdWxkbid0IGRldGVybWluZSB0aGUga2VybmVsIGZvciB0aGlzIEJTUCwgZXhpdGluZy4iKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgY29udGV4dCA9IGNyZWF0ZV9jb250ZXh0KG1hY2hpbmUsICJhcmNoIiwgc2NyaXB0c19wYXRoKQotICAgIGNvbnRleHRbIm5hbWUiXSA9ICJuYW1lIgotICAgIGNvbnRleHRbImZpbGVuYW1lIl0gPSBrZXJuZWwKLSAgICBnaXR1cmwgPSBmaW5kX2dpdHVybChjb250ZXh0KQotICAgIGZlYXR1cmVfdXJsID0gZmluZF9mZWF0dXJlX3VybChnaXR1cmwpCi0KLSAgICBmZWF0dXJlX2NtZCA9ICJ3Z2V0IC1xIC1PIC0gIiArIGZlYXR1cmVfdXJsCi0gICAgdG1wID0gc3VicHJvY2Vzcy5Qb3BlbihmZWF0dXJlX2NtZCwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0LnJlYWQoKS5kZWNvZGUoJ3V0Zi04JykKLQotICAgIHByaW50KCJUaGUgY3VycmVudCBzZXQgb2Yga2VybmVsIGZlYXR1cmVzIGF2YWlsYWJsZSB0byAlcyBpczpcbiIgJSBtYWNoaW5lKQotCi0gICAgaWYgdG1wOgotICAgICAgICB0bXBsaW5lID0gdG1wLnNwbGl0KCJcbiIpCi0gICAgICAgIGluX2tlcm5lbF9vcHRpb25zID0gRmFsc2UKLSAgICAgICAgZm9yIGxpbmUgaW4gdG1wbGluZToKLSAgICAgICAgICAgIGlmIG5vdCAiPSIgaW4gbGluZToKLSAgICAgICAgICAgICAgICBpZiBpbl9rZXJuZWxfb3B0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBpZiAia2VybmVsLW9wdGlvbnMiIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGluX2tlcm5lbF9vcHRpb25zID0gVHJ1ZQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBpbl9rZXJuZWxfb3B0aW9uczoKLSAgICAgICAgICAgICAgICBmZWF0dXJlX2RlZiA9IGxpbmUuc3BsaXQoIj0iKQotICAgICAgICAgICAgICAgIGZlYXR1cmVfdHlwZSA9IGZlYXR1cmVfZGVmWzBdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBmZWF0dXJlID0gZmVhdHVyZV9kZWZbMV0uc3RyaXAoKQotICAgICAgICAgICAgICAgIGRlc2MgPSBnZXRfZmVhdHVyZV9kZXNjKGdpdHVybCwgZmVhdHVyZSkKLSAgICAgICAgICAgICAgICBwcmludCgiJXM6ICVzIiAlIChmZWF0dXJlLCBkZXNjKSkKLQotICAgIHByaW50KCJbbG9jYWxdIikKLQotICAgIHByaW50X2ZlYXR1cmVfZGVzY3MobGF5ZXIsICJjZmciKQotICAgIHByaW50X2ZlYXR1cmVfZGVzY3MobGF5ZXIsICJmZWF0dXJlcyIpCi0KLQotZGVmIGZpbmRfZmVhdHVyZV9kZXNjX3VybChnaXRfdXJsLCBmZWF0dXJlKToKLSAgICAiIiIKLSAgICBGaW5kIHRoZSB1cmwgb2YgdGhlIGtlcm5lbCBmZWF0dXJlIGluIHRoZSBrZXJuZWwgcmVwbyBzcGVjaWZpZWQKLSAgICBmcm9tIHRoZSBCU1AncyBrZXJuZWwgcmVjaXBlIFNSQ19VUkkuCi0gICAgIiIiCi0gICAgZmVhdHVyZV9kZXNjX3VybCA9ICIiCi0gICAgaWYgZ2l0X3VybC5zdGFydHN3aXRoKCJnaXQ6Ly8iKToKLSAgICAgICAgZ2l0X3VybCA9IGdpdF91cmxbbGVuKCJnaXQ6Ly8iKTpdLnN0cmlwKCkKLSAgICAgICAgcyA9IGdpdF91cmwuc3BsaXQoIi8iKQotICAgICAgICBpZiBzWzFdLmVuZHN3aXRoKCIuZ2l0Iik6Ci0gICAgICAgICAgICBzWzFdID0gc1sxXVs6bGVuKHNbMV0pIC0gbGVuKCIuZ2l0IildCi0gICAgICAgIGZlYXR1cmVfZGVzY191cmwgPSAiaHR0cDovLyIgKyBzWzBdICsgIi9jZ2l0L2NnaXQuY2dpLyIgKyBzWzFdICsgXAotICAgICAgICAgICAgIi9wbGFpbi9tZXRhL2NmZy9rZXJuZWwtY2FjaGUvIiArIGZlYXR1cmUgKyAiP2g9bWV0YSIKLQotICAgIHJldHVybiBmZWF0dXJlX2Rlc2NfdXJsCi0KLQotZGVmIGdldF9mZWF0dXJlX2Rlc2MoZ2l0X3VybCwgZmVhdHVyZSk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGEgZmVhdHVyZSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybSAnZGVzY3JpcHRpb24gW2NvbXBhdGliaWxpdHldCi0gICAgQlNQcywgYXMgZ2F0aGVyZWQgZnJvbSB0aGUgc2V0IG9mIGZlYXR1cmUgc291cmNlcy4KLSAgICAiIiIKLSAgICBmZWF0dXJlX2Rlc2NfdXJsID0gZmluZF9mZWF0dXJlX2Rlc2NfdXJsKGdpdF91cmwsIGZlYXR1cmUpCi0gICAgZmVhdHVyZV9kZXNjX2NtZCA9ICJ3Z2V0IC1xIC1PIC0gIiArIGZlYXR1cmVfZGVzY191cmwKLSAgICB0bXAgPSBzdWJwcm9jZXNzLlBvcGVuKGZlYXR1cmVfZGVzY19jbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpCi0KLSAgICByZXR1cm4gZmluZF9mZWF0dXJlX2Rlc2ModG1wLnNwbGl0KCJcbiIpKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9kZXNjcmliZShzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGZlYXR1cmUpOgotICAgICIiIgotICAgIERpc3BsYXkgdGhlIGRlc2NyaXB0aW9uIG9mIGEgc3BlY2lmaWMga2VybmVsIGZlYXR1cmUgYXZhaWxhYmxlIGZvcgotICAgIHVzZSBpbiBhIEJTUC4KLSAgICAiIiIKLSAgICBsYXllciA9IGZpbmRfYnNwX2xheWVyKG1hY2hpbmUpCi0KLSAgICBrZXJuZWwgPSBmaW5kX2N1cnJlbnRfa2VybmVsKGxheWVyLCBtYWNoaW5lKQotICAgIGlmIG5vdCBrZXJuZWw6Ci0gICAgICAgIHByaW50KCJDb3VsZG4ndCBkZXRlcm1pbmUgdGhlIGtlcm5lbCBmb3IgdGhpcyBCU1AsIGV4aXRpbmcuIikKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGNvbnRleHQgPSBjcmVhdGVfY29udGV4dChtYWNoaW5lLCAiYXJjaCIsIHNjcmlwdHNfcGF0aCkKLSAgICBjb250ZXh0WyJuYW1lIl0gPSAibmFtZSIKLSAgICBjb250ZXh0WyJmaWxlbmFtZSJdID0ga2VybmVsCi0gICAgZ2l0dXJsID0gZmluZF9naXR1cmwoY29udGV4dCkKLQotICAgIGRlc2MgPSBnZXRfZmVhdHVyZV9kZXNjKGdpdHVybCwgZmVhdHVyZSkKLQotICAgIHByaW50KGRlc2MpCi0KLQotZGVmIGNoZWNrX2ZlYXR1cmVfbmFtZShmZWF0dXJlX25hbWUpOgotICAgICIiIgotICAgIFNhbml0eS1jaGVjayB0aGUgZmVhdHVyZSBuYW1lIGZvciBjcmVhdGUvZGVzdHJveS4gIFJldHVybiBGYWxzZSBpZiBub3QgT0suCi0gICAgIiIiCi0gICAgaWYgbm90IGZlYXR1cmVfbmFtZS5lbmRzd2l0aCgiLnNjYyIpOgotICAgICAgICBwcmludCgiSW52YWxpZCBmZWF0dXJlIG5hbWUgKG11c3QgZW5kIHdpdGggLnNjYykgWyVzXSwgZXhpdGluZyIgJSBmZWF0dXJlX25hbWUpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaWYgIi8iIGluIGZlYXR1cmVfbmFtZToKLSAgICAgICAgcHJpbnQoIkludmFsaWQgZmVhdHVyZSBuYW1lIChkb24ndCBzcGVjaWZ5IGRpcmVjdG9yeSkgWyVzXSwgZXhpdGluZyIgJSBmZWF0dXJlX25hbWUpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgcmV0dXJuIFRydWUKLQotCi1kZWYgY2hlY2tfY3JlYXRlX2lucHV0KGZlYXR1cmVfaXRlbXMpOgotICAgICIiIgotICAgIFNhbml0eS1jaGVjayB0aGUgY3JlYXRlIGlucHV0LiAgUmV0dXJuIEZhbHNlIGlmIG5vdCBPSy4KLSAgICAiIiIKLSAgICBpZiBub3QgY2hlY2tfZmVhdHVyZV9uYW1lKGZlYXR1cmVfaXRlbXNbMF0pOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGlmIGZlYXR1cmVfaXRlbXNbMV0uZW5kc3dpdGgoIi5wYXRjaCIpIG9yIGZlYXR1cmVfaXRlbXNbMV0uc3RhcnRzd2l0aCgiQ09ORklHXyIpOgotICAgICAgICBwcmludCgiTWlzc2luZyBkZXNjcmlwdGlvbiBhbmQvb3IgY29tcGF0aWJpbHR5IFslc10sIGV4aXRpbmciICUgZmVhdHVyZV9pdGVtc1sxXSkKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBpZiBmZWF0dXJlX2l0ZW1zWzJdLmVuZHN3aXRoKCIucGF0Y2giKSBvciBmZWF0dXJlX2l0ZW1zWzJdLnN0YXJ0c3dpdGgoIkNPTkZJR18iKToKLSAgICAgICAgcHJpbnQoIk1pc3NpbmcgZGVzY3JpcHRpb24gYW5kL29yIGNvbXBhdGliaWxpdHkgWyVzXSwgZXhpdGluZyIgJSBmZWF0dXJlX2l0ZW1zWzFdKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2NyZWF0ZShzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGZlYXR1cmVfaXRlbXMpOgotICAgICIiIgotICAgIENyZWF0ZSBhIHJlY2lwZS1zcGFjZSBrZXJuZWwgZmVhdHVyZSBpbiBhIEJTUC4KLSAgICAiIiIKLSAgICBpZiBub3QgY2hlY2tfY3JlYXRlX2lucHV0KGZlYXR1cmVfaXRlbXMpOgotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZmVhdHVyZSA9IGZlYXR1cmVfaXRlbXNbMF0KLSAgICBmZWF0dXJlX2Jhc2VuYW1lID0gZmVhdHVyZS5zcGxpdCgiLiIpWzBdCi0gICAgZmVhdHVyZV9kZXNjcmlwdGlvbiA9IGZlYXR1cmVfaXRlbXNbMV0KLSAgICBmZWF0dXJlX2NvbXBhdCA9IGZlYXR1cmVfaXRlbXNbMl0KLQotICAgIHBhdGNoZXMgPSBbXQotICAgIGNmZ19pdGVtcyA9IFtdCi0KLSAgICBmb3IgaXRlbSBpbiBmZWF0dXJlX2l0ZW1zWzM6XToKLSAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgiLnBhdGNoIik6Ci0gICAgICAgICAgICBwYXRjaGVzLmFwcGVuZChpdGVtKQotICAgICAgICBlbGlmIGl0ZW0uc3RhcnRzd2l0aCgiQ09ORklHIik6Ci0gICAgICAgICAgICBpZiAoIj15IiBpbiBpdGVtIG9yICI9bSIgaW4gaXRlbSk6Ci0gICAgICAgICAgICAgICAgY2ZnX2l0ZW1zLmFwcGVuZChpdGVtKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIkludmFsaWQgZmVhdHVyZSBpdGVtIChtdXN0IGJlIC5wYXRjaCBvciBDT05GSUdfKikgWyVzXSwgZXhpdGluZyIgJSBpdGVtKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGZlYXR1cmVfZGlybmFtZSA9ICJjZmciCi0gICAgaWYgcGF0Y2hlczoKLSAgICAgICAgZmVhdHVyZV9kaXJuYW1lID0gImZlYXR1cmVzIgotCi0gICAgZmlsZXNkaXIgPSBmaW5kX2ZpbGVzZGlyKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLSAgICBpZiBub3QgZmlsZXNkaXI6Ci0gICAgICAgIHByaW50KCJDb3VsZG4ndCBhZGQgZmVhdHVyZSAoJXMpLCBubyAnZmlsZXMnIGRpciBmb3VuZCIgJSBmZWF0dXJlKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZmVhdGRpciA9IG9zLnBhdGguam9pbihmaWxlc2RpciwgZmVhdHVyZV9kaXJuYW1lKQotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmZWF0ZGlyKToKLSAgICAgICAgb3MubWtkaXIoZmVhdGRpcikKLQotICAgIGZvciBwYXRjaCBpbiBwYXRjaGVzOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocGF0Y2gpOgotICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IGZpbmQgcGF0Y2ggKCVzKSwgZXhpdGluZyIgJSBwYXRjaCkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRjaCkKLSAgICAgICAgZmVhdGRpcl9wYXRjaCA9IG9zLnBhdGguam9pbihmZWF0ZGlyLCBiYXNlbmFtZSkKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHBhdGNoLCBmZWF0ZGlyX3BhdGNoKQotCi0gICAgbmV3X2NmZ19maWxlbmFtZSA9IG9zLnBhdGguam9pbihmZWF0ZGlyLCBmZWF0dXJlX2Jhc2VuYW1lICsgIi5jZmciKQotICAgIG5ld19jZmdfZmlsZSA9IG9wZW4obmV3X2NmZ19maWxlbmFtZSwgInciKQotICAgIGZvciBjZmdfaXRlbSBpbiBjZmdfaXRlbXM6Ci0gICAgICAgIG5ld19jZmdfZmlsZS53cml0ZShjZmdfaXRlbSArICJcbiIpCi0gICAgbmV3X2NmZ19maWxlLmNsb3NlKCkKLQotICAgIG5ld19mZWF0dXJlX2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKGZlYXRkaXIsIGZlYXR1cmVfYmFzZW5hbWUgKyAiLnNjYyIpCi0gICAgbmV3X2ZlYXR1cmVfZmlsZSA9IG9wZW4obmV3X2ZlYXR1cmVfZmlsZW5hbWUsICJ3IikKLSAgICBuZXdfZmVhdHVyZV9maWxlLndyaXRlKCJkZWZpbmUgS0ZFQVRVUkVfREVTQ1JJUFRJT04gXCIiICsgZmVhdHVyZV9kZXNjcmlwdGlvbiArICJcIlxuIikKLSAgICBuZXdfZmVhdHVyZV9maWxlLndyaXRlKCJkZWZpbmUgS0ZFQVRVUkVfQ09NUEFUSUJJTElUWSAiICsgZmVhdHVyZV9jb21wYXQgKyAiXG5cbiIpCi0KLSAgICBmb3IgcGF0Y2ggaW4gcGF0Y2hlczoKLSAgICAgICAgcGF0Y2hfZGlyLCBwYXRjaF9maWxlID0gb3MucGF0aC5zcGxpdChwYXRjaCkKLSAgICAgICAgbmV3X2ZlYXR1cmVfZmlsZS53cml0ZSgicGF0Y2ggIiArIHBhdGNoX2ZpbGUgKyAiXG4iKQotCi0gICAgbmV3X2ZlYXR1cmVfZmlsZS53cml0ZSgia2NvbmYgbm9uLWhhcmR3YXJlICIgKyBmZWF0dXJlX2Jhc2VuYW1lICsgIi5jZmdcbiIpCi0gICAgbmV3X2ZlYXR1cmVfZmlsZS5jbG9zZSgpCi0KLSAgICBwcmludCgiQWRkZWQgZmVhdHVyZToiKQotICAgIHByaW50KCJcdCVzIiAlIGZlYXR1cmVfZGlybmFtZSArICIvIiArIGZlYXR1cmUpCi0KLQotZGVmIGZlYXR1cmVfaW5fdXNlKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgZmVhdHVyZSk6Ci0gICAgIiIiCi0gICAgRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBmZWF0dXJlIGlzIGluIHVzZSBieSB0aGUgQlNQLgotICAgIFJldHVybiBUcnVlIGlmIHNvLCBGYWxzZSBvdGhlcndpc2UuCi0gICAgIiIiCi0gICAgZmVhdHVyZXMgPSByZWFkX2ZlYXR1cmVzKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLSAgICBmb3IgZiBpbiBmZWF0dXJlczoKLSAgICAgICAgaWYgZiA9PSBmZWF0dXJlOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgZmVhdHVyZV9yZW1vdmUoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBmZWF0dXJlKToKLSAgICAiIiIKLSAgICBSZW1vdmUgdGhlIHNwZWNpZmllZCBmZWF0dXJlIGZyb20gdGhlIGF2YWlsYWJsZSByZWNpcGUtc3BhY2UKLSAgICBmZWF0dXJlcyBkZWZpbmVkIGZvciB0aGUgQlNQLgotICAgICIiIgotICAgIGZlYXR1cmVzID0gcmVhZF9mZWF0dXJlcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUpCi0gICAgbmV3X2ZlYXR1cmVzID0gW10KLSAgICBmb3IgZiBpbiBmZWF0dXJlczoKLSAgICAgICAgaWYgZiA9PSBmZWF0dXJlOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgbmV3X2ZlYXR1cmVzLmFwcGVuZChmKQotICAgIHdyaXRlX2ZlYXR1cmVzKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgbmV3X2ZlYXR1cmVzKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9kZXN0cm95KHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgZmVhdHVyZSk6Ci0gICAgIiIiCi0gICAgUmVtb3ZlIGEgcmVjaXBlLXNwYWNlIGtlcm5lbCBmZWF0dXJlIGZyb20gYSBCU1AuCi0gICAgIiIiCi0gICAgaWYgbm90IGNoZWNrX2ZlYXR1cmVfbmFtZShmZWF0dXJlKToKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGlmIGZlYXR1cmVfaW5fdXNlKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgImZlYXR1cmVzLyIgKyBmZWF0dXJlKSBvciBcCi0gICAgICAgICAgICBmZWF0dXJlX2luX3VzZShzY3JpcHRzX3BhdGgsIG1hY2hpbmUsICJjZmcvIiArIGZlYXR1cmUpOgotICAgICAgICBwcmludCgiRmVhdHVyZSAlcyBpcyBpbiB1c2UgKHVzZSAnZmVhdHVyZSBybScgdG8gdW4tdXNlIGl0IGZpcnN0KSwgZXhpdGluZyIgJSBmZWF0dXJlKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZmlsZXNkaXIgPSBmaW5kX2ZpbGVzZGlyKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLSAgICBpZiBub3QgZmlsZXNkaXI6Ci0gICAgICAgIHByaW50KCJDb3VsZG4ndCBkZXN0cm95IGZlYXR1cmUgKCVzKSwgbm8gJ2ZpbGVzJyBkaXIgZm91bmQiICUgZmVhdHVyZSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGZlYXR1cmVfZGlybmFtZSA9ICJmZWF0dXJlcyIKLSAgICBmZWF0ZGlyID0gb3MucGF0aC5qb2luKGZpbGVzZGlyLCBmZWF0dXJlX2Rpcm5hbWUpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZlYXRkaXIpOgotICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBmZWF0dXJlIGRpcmVjdG9yeSAoJXMpIiAlIGZlYXR1cmVfZGlybmFtZSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGZlYXR1cmVfZnFuID0gb3MucGF0aC5qb2luKGZlYXRkaXIsIGZlYXR1cmUpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZlYXR1cmVfZnFuKToKLSAgICAgICAgZmVhdHVyZV9kaXJuYW1lID0gImNmZyIKLSAgICAgICAgZmVhdGRpciA9IG9zLnBhdGguam9pbihmaWxlc2RpciwgZmVhdHVyZV9kaXJuYW1lKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZmVhdGRpcik6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBmZWF0dXJlIGRpcmVjdG9yeSAoJXMpIiAlIGZlYXR1cmVfZGlybmFtZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGZlYXR1cmVfZnFuID0gb3MucGF0aC5qb2luKGZlYXRkaXIsIGZlYXR1cmVfZmlsZW5hbWUpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmZWF0dXJlX2Zxbik6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBmZWF0dXJlICglcykiICUgZmVhdHVyZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBmID0gb3BlbihmZWF0dXJlX2ZxbiwgInIiKQotICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICBzID0gbGluZS5zdHJpcCgpCi0gICAgICAgIGlmIHMuc3RhcnRzd2l0aCgicGF0Y2ggIikgb3Igcy5zdGFydHN3aXRoKCJrY29uZiAiKToKLSAgICAgICAgICAgIHNwbGl0X2xpbmUgPSBzLnNwbGl0KCkKLSAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGZlYXRkaXIsIHNwbGl0X2xpbmVbLTFdKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlbmFtZSkKLSAgICBmLmNsb3NlKCkKLSAgICBvcy5yZW1vdmUoZmVhdHVyZV9mcW4pCi0KLSAgICBmZWF0dXJlX3JlbW92ZShzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGZlYXR1cmUpCi0KLSAgICBwcmludCgiUmVtb3ZlZCBmZWF0dXJlOiIpCi0gICAgcHJpbnQoIlx0JXMiICUgZmVhdHVyZV9kaXJuYW1lICsgIi8iICsgZmVhdHVyZSkKLQotCi1kZWYgYmFzZV9icmFuY2hlcyhjb250ZXh0KToKLSAgICAiIiIKLSAgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBiYXNlIGJyYW5jaGVzIGZvdW5kIGluIHRoZSBrZXJuZWwgZ2l0IHJlcG8uCi0gICAgIiIiCi0gICAgZ2l0dXJsID0gZmluZF9naXR1cmwoY29udGV4dCkKLQotICAgIHByaW50KCJHZXR0aW5nIGJyYW5jaGVzIGZyb20gcmVtb3RlIHJlcG8gJXMuLi4iICUgZ2l0dXJsKQotCi0gICAgZ2l0Y21kID0gImdpdCBscy1yZW1vdGUgJXMgKmhlYWRzKiAyPiYxIiAlIChnaXR1cmwpCi0gICAgdG1wID0gc3VicHJvY2Vzcy5Qb3BlbihnaXRjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpCi0KLSAgICBicmFuY2hlcyA9IFtdCi0KLSAgICBpZiB0bXA6Ci0gICAgICAgIHRtcGxpbmUgPSB0bXAuc3BsaXQoIlxuIikKLSAgICAgICAgZm9yIGxpbmUgaW4gdG1wbGluZToKLSAgICAgICAgICAgIGlmIGxlbihsaW5lKT09MDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIG5vdCBsaW5lLmVuZHN3aXRoKCJiYXNlIik6Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZHggPSBsaW5lLmZpbmQoInJlZnMvaGVhZHMvIikKLSAgICAgICAgICAgIGticmFuY2ggPSBsaW5lW2lkeCArIGxlbigicmVmcy9oZWFkcy8iKTpdCi0gICAgICAgICAgICBpZiBrYnJhbmNoLmZpbmQoIi8iKSA9PSAtMSBhbmQga2JyYW5jaC5maW5kKCJiYXNlIikgPT0gLTE6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlkeCA9IGticmFuY2guZmluZCgiYmFzZSIpCi0gICAgICAgICAgICBicmFuY2hlcy5hcHBlbmQoa2JyYW5jaFs6aWR4IC0gMV0pCi0KLSAgICByZXR1cm4gYnJhbmNoZXMKLQotCi1kZWYgYWxsX2JyYW5jaGVzKGNvbnRleHQpOgotICAgICIiIgotICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSBicmFuY2hlcyBmb3VuZCBpbiB0aGUga2VybmVsIGdpdCByZXBvLgotICAgICIiIgotICAgIGdpdHVybCA9IGZpbmRfZ2l0dXJsKGNvbnRleHQpCi0KLSAgICBwcmludCgiR2V0dGluZyBicmFuY2hlcyBmcm9tIHJlbW90ZSByZXBvICVzLi4uIiAlIGdpdHVybCkKLQotICAgIGdpdGNtZCA9ICJnaXQgbHMtcmVtb3RlICVzICpoZWFkcyogMj4mMSIgJSAoZ2l0dXJsKQotICAgIHRtcCA9IHN1YnByb2Nlc3MuUG9wZW4oZ2l0Y21kLCBzaGVsbD1UcnVlLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQucmVhZCgpLmRlY29kZSgndXRmLTgnKQotCi0gICAgYnJhbmNoZXMgPSBbXQotCi0gICAgYmFzZV9wcmVmaXhlcyA9IE5vbmUKLQotICAgIHRyeToKLSAgICAgICAgYnJhbmNoZXNfYmFzZSA9IGNvbnRleHRbImJyYW5jaGVzX2Jhc2UiXQotICAgICAgICBpZiBicmFuY2hlc19iYXNlOgotICAgICAgICAgICAgYmFzZV9wcmVmaXhlcyA9IGJyYW5jaGVzX2Jhc2Uuc3BsaXQoIjoiKQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotCi0gICAgYXJjaCA9IGNvbnRleHRbImFyY2giXQotCi0gICAgaWYgdG1wOgotICAgICAgICB0bXBsaW5lID0gdG1wLnNwbGl0KCJcbiIpCi0gICAgICAgIGZvciBsaW5lIGluIHRtcGxpbmU6Ci0gICAgICAgICAgICBpZiBsZW4obGluZSk9PTA6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZHggPSBsaW5lLmZpbmQoInJlZnMvaGVhZHMvIikKLSAgICAgICAgICAgIGticmFuY2ggPSBsaW5lW2lkeCArIGxlbigicmVmcy9oZWFkcy8iKTpdCi0gICAgICAgICAgICBrYnJhbmNoX3ByZWZpeCA9IGticmFuY2gucnNwbGl0KCIvIiwgMSlbMF0KLQotICAgICAgICAgICAgaWYgYmFzZV9wcmVmaXhlczoKLSAgICAgICAgICAgICAgICBmb3IgYmFzZV9wcmVmaXggaW4gYmFzZV9wcmVmaXhlczoKLSAgICAgICAgICAgICAgICAgICAgaWYga2JyYW5jaF9wcmVmaXggPT0gYmFzZV9wcmVmaXg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hlcy5hcHBlbmQoa2JyYW5jaCkKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBpZiAoa2JyYW5jaC5maW5kKCIvIikgIT0gLTEgYW5kCi0gICAgICAgICAgICAgICAgKGticmFuY2guZmluZCgic3RhbmRhcmQiKSAhPSAtMSBvciBrYnJhbmNoLmZpbmQoImJhc2UiKSAhPSAtMSkgb3IKLSAgICAgICAgICAgICAgICBrYnJhbmNoID09ICJiYXNlIik6Ci0gICAgICAgICAgICAgICAgYnJhbmNoZXMuYXBwZW5kKGticmFuY2gpCi0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgIHJldHVybiBicmFuY2hlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtLy5naXRpZ25vcmUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vLmdpdGlnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5ZGUyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vLmdpdGlnbm9yZQorKysgL2Rldi9udWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9jb25mL21hY2hpbmUvbWFjaGluZS5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjQ3NTBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9jb25mL21hY2hpbmUvbWFjaGluZS5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5jb25mCi0jQFRZUEU6IE1hY2hpbmUKLSNATkFNRToge3s9bWFjaGluZX19Ci0KLSNAREVTQ1JJUFRJT046IE1hY2hpbmUgY29uZmlndXJhdGlvbiBmb3Ige3s9bWFjaGluZX19IHN5c3RlbXMKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToieHNlcnZlciIgcHJpbzoiNTAiIG1zZzoiRG8geW91IG5lZWQgc3VwcG9ydCBmb3IgWD8gKHkvbikiIGRlZmF1bHQ6InkiIH19Ci17eyBpZiB4c2VydmVyID09ICJ5IjogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKLVhTRVJWRVIgPz0gInhzZXJ2ZXIteG9yZyBcCi0gICAgICAgICAgIHhmODYtdmlkZW8tZmJkZXYgXAotICAgICAgICAgICAiCi0KLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAiIGtlcm5lbC1tb2R1bGVzIGtlcm5lbC1kZXZpY2V0cmVlIgotCi1FWFRSQV9JTUFHRURFUEVORFMgKz0gInUtYm9vdCIKLQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToidHVuZWZpbGUiIHByaW86IjQwIiBtc2c6IldoaWNoIG1hY2hpbmUgdHVuaW5nIHdvdWxkIHlvdSBsaWtlIHRvIHVzZT8iIGRlZmF1bHQ6InR1bmVfY29ydGV4YTgiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9hcm0xMTM2amZfcyIgbXNnOiJhcm0xMTM2amYtcyB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2FybTkyMHQiIG1zZzoiYXJtOTIwdCB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2FybTkyNmVqcyIgbXNnOiJhcm05MjZlanMgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9hcm05dGRtaSIgbXNnOiJhcm05dGRtaSB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2NvcnRleGE1IiBtc2c6ImNvcnRleGE1IHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfY29ydGV4YTciIG1zZzoiY29ydGV4YTcgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9jb3J0ZXhhOCIgbXNnOiJjb3J0ZXhhOCB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2NvcnRleGE5IiBtc2c6ImNvcnRleGE5IHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfY29ydGV4YTE1IiBtc2c6ImNvcnRleGExNSB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2NvcnRleG0xIiBtc2c6ImNvcnRleG0xIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfY29ydGV4bTMiIG1zZzoiY29ydGV4bTMgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9jb3J0ZXhyNCIgbXNnOiJjb3J0ZXhyNCB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2VwOTMxMiIgbXNnOiJlcDkzMTIgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9pd21teHQiIG1zZzoiaXdtbXh0IHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfc3Ryb25nYXJtMTEwMCIgbXNnOiJzdHJvbmdhcm0xMTAwIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfeHNjYWxlIiBtc2c6InhzY2FsZSB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2FybTExMzZqZl9zIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTM2amYtcy5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2FybTkyMHQiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTkyMHQuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9hcm05MjZlanMiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTkyNmVqcy5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2FybTl0ZG1pIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm05dGRtaS5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcnRleGE1IjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNS5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcnRleGE3IjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNy5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcnRleGE4IjogfX0KLURFRkFVTFRUVU5FID89ICJjb3J0ZXhhOGhmLW5lb24iCi1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTguaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9jb3J0ZXhhOSI6IH19Ci1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTkuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9jb3J0ZXhhMTUiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGExNS5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcnRleG0xIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhtMS5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcnRleG0zIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhtMy5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcnRleHI0IjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhyNC5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2VwOTMxMiI6IH19Ci1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtZXA5MzEyLmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfaXdtbXh0IjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pd21teHQuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9zdHJvbmdhcm0xMTAwIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1zdHJvbmdhcm0xMTAwLmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfeHNjYWxlIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS14c2NhbGUuaW5jCi0KLUlNQUdFX0ZTVFlQRVMgKz0gInRhci5iejIgamZmczIiCi1FWFRSQV9JTUFHRUNNRF9qZmZzMiA9ICItbG5wICIKLQotU0VSSUFMX0NPTlNPTEUgPSAiMTE1MjAwIHR0eU8wIgotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iOiBwcmVmZXJyZWRfa2VybmVsID0gImxpbnV4LXlvY3RvLWN1c3RvbSIgfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLWRldiI6IHByZWZlcnJlZF9rZXJuZWwgPSAibGludXgteW9jdG8tZGV2IiB9fQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIiBvciBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiIDogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAie3s9cHJlZmVycmVkX2tlcm5lbH19IgotCi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsID0ga2VybmVsX2Nob2ljZS5zcGxpdCgnXycpWzBdIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsX3ZlcnNpb24gPSBrZXJuZWxfY2hvaWNlLnNwbGl0KCdfJylbMV0gfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIGtlcm5lbF9jaG9pY2UgIT0gImxpbnV4LXlvY3RvLWRldiI6IH19Ci1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gInt7PXByZWZlcnJlZF9rZXJuZWx9fSIKLVBSRUZFUlJFRF9WRVJTSU9OX3t7PXByZWZlcnJlZF9rZXJuZWx9fSA/PSAie3s9cHJlZmVycmVkX2tlcm5lbF92ZXJzaW9ufX0lIgotCi1LRVJORUxfSU1BR0VUWVBFID0gInVJbWFnZSIKLUtFUk5FTF9ERVZJQ0VUUkVFID0gImFtMzM1eC1ib25lLmR0YiBhbTMzNXgtYm9uZWJsYWNrLmR0YiIKLUtFUk5FTF9FWFRSQV9BUkdTICs9ICJMT0FEQUREUj0ke1VCT09UX0VOVFJZUE9JTlR9IgotCi1TUExfQklOQVJZID0gIk1MTyIKLVVCT09UX1NVRkZJWCA9ICJpbWciCi17eyBpbnB1dCB0eXBlOiJlZGl0IiBuYW1lOiJ1Ym9vdF9tYWNoaW5lIiBwcmlvOiI0MCIgbXNnOiJQbGVhc2Ugc3BlY2lmeSBhIHZhbHVlIGZvciBVQk9PVF9NQUNISU5FOiIgZGVmYXVsdDoiYW0zMzV4X2V2bV9jb25maWciIH19Ci1VQk9PVF9NQUNISU5FID0gInt7PXVib290X21hY2hpbmV9fSIKLXt7IGlucHV0IHR5cGU6ImVkaXQiIG5hbWU6InVib290X2VudHJ5cG9pbnQiIHByaW86IjQwIiBtc2c6IlBsZWFzZSBzcGVjaWZ5IGEgdmFsdWUgZm9yIFVCT09UX0VOVFJZUE9JTlQ6IiBkZWZhdWx0OiIweDgwMDA4MDAwIiB9fQotVUJPT1RfRU5UUllQT0lOVCA9ICJ7ez11Ym9vdF9lbnRyeXBvaW50fX0iCi17eyBpbnB1dCB0eXBlOiJlZGl0IiBuYW1lOiJ1Ym9vdF9sb2FkYWRkcmVzcyIgcHJpbzoiNDAiIG1zZzoiUGxlYXNlIHNwZWNpZnkgYSB2YWx1ZSBmb3IgVUJPT1RfTE9BREFERFJFU1M6IiBkZWZhdWx0OiIweDgwMDA4MDAwIiB9fQotVUJPT1RfTE9BREFERFJFU1MgPSAie3s9dWJvb3RfbG9hZGFkZHJlc3N9fSIKLQotTUFDSElORV9GRUFUVVJFUyA9ICJ1c2JnYWRnZXQgdXNiaG9zdCB2ZmF0IGFsc2EiCi0KLUlNQUdFX0JPT1RfRklMRVMgPz0gInUtYm9vdC4ke1VCT09UX1NVRkZJWH0gTUxPIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvbWFjaGluZS5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ0MmQwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3s9bWFjaGluZX19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lL3hvcmcuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUveG9yZy5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzUyODkzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUveG9yZy5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYgeHNlcnZlciA9PSAieSI6IH19IHRoaXMKLVNlY3Rpb24gIk1vZHVsZSIKLQlMb2FkCSJleHRtb2QiCi0JTG9hZAkiZGJlIgotCUxvYWQJImdseCIKLQlMb2FkCSJmcmVldHlwZSIKLQlMb2FkCSJ0eXBlMSIKLQlMb2FkCSJyZWNvcmQiCi0JTG9hZAkiZHJpIgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJNb25pdG9yIgotCUlkZW50aWZpZXIJIkJ1aWx0aW4gRGVmYXVsdCBNb25pdG9yIgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJEZXZpY2UiCi0JSWRlbnRpZmllcgkiQnVpbHRpbiBEZWZhdWx0IGZiZGV2IERldmljZSAwIgotCURyaXZlcgkJIm9tYXBmYiIKLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiU2NyZWVuIgotCUlkZW50aWZpZXIJIkJ1aWx0aW4gRGVmYXVsdCBmYmRldiBTY3JlZW4gMCIKLQlEZXZpY2UJCSJCdWlsdGluIERlZmF1bHQgZmJkZXYgRGV2aWNlIDAiCi0JTW9uaXRvcgkJIkJ1aWx0aW4gRGVmYXVsdCBNb25pdG9yIgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJTZXJ2ZXJMYXlvdXQiCi0JSWRlbnRpZmllcgkiQnVpbHRpbiBEZWZhdWx0IExheW91dCIKLQlTY3JlZW4JCSJCdWlsdGluIERlZmF1bHQgZmJkZXYgU2NyZWVuIDAiCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIlNlcnZlckZsYWdzIgotCU9wdGlvbgkJIkRvbnRaYXAiICAiMCIKLUVuZFNlY3Rpb24KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA4MzAwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18wLjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIHhzZXJ2ZXIgPT0gInkiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUwZDkyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fSBmaWxlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtbm9uX2hhcmR3YXJlLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLW5vbl9oYXJkd2FyZS5jZmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliZmM5MGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtbm9uX2hhcmR3YXJlLmNmZworKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS1ub25faGFyZHdhcmUuY2ZnCi0jCi0jIE1pc2NlbGxhbmVvdXMgZmlsZXN5c3RlbXMKLSMKLUNPTkZJR19ORlNfREVGX0ZJTEVfSU9fU0laRT0xMDI0Ci0KLSMKLSMgTXVsdGlwbGUgRGV2aWNlIFN1cHBvcnQKLSMKLSMgQ09ORklHX01EIGlzIG5vdCBzZXQKLQotIyBLZXJuZWwgRmVhdHVyZXMKLSMKLUNPTkZJR19OT19IWj15Ci0KLSMKLSMgQ1BVSWRsZQotIwotQ09ORklHX0NQVV9JRExFPXkKLUNPTkZJR19DUFVfSURMRV9HT1ZfTEFEREVSPXkKLUNPTkZJR19DUFVfSURMRV9HT1ZfTUVOVT15Ci0KLSMKLSMgS2VybmVsIGhhY2tpbmcKLSMKLUNPTkZJR19ERUJVR19GUz15Ci0KLSMKLSMgUG93ZXIgbWFuYWdlbWVudCBvcHRpb25zCi0jCi1DT05GSUdfUE1fREVCVUc9eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtcHJlZW1wdC1ydC5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE2OTY2Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS1wcmVlbXB0LXJ0LnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggYXJtCi0KLWluY2x1ZGUge3s9bWFwX3ByZWVtcHRfcnRfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci1kZWZpbmUgS1RZUEUge3s9bmV3X2ticmFuY2h9fQotYnJhbmNoIHt7PW1hY2hpbmV9fQotCi1pbmNsdWRlIHt7PW1hY2hpbmV9fS5zY2MKLQotIyBkZWZhdWx0IHBvbGljeSBmb3IgcHJlZW1wdC1ydCBrZXJuZWxzCi1pbmNsdWRlIGZlYXR1cmVzL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC5zY2MKLWluY2x1ZGUgZmVhdHVyZXMvcHJvZmlsaW5nL3Byb2ZpbGluZy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE4ODE1Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCBhcm0KLQotaW5jbHVkZSB7ez1tYXBfc3RhbmRhcmRfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fSBub3BhdGNoCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwotCi0jIGRlZmF1bHQgcG9saWN5IGZvciBzdGFuZGFyZCBrZXJuZWxzCi1pbmNsdWRlIGZlYXR1cmVzL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC5zY2MKLWluY2x1ZGUgZmVhdHVyZXMvcHJvZmlsaW5nL3Byb2ZpbGluZy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdGlueS5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMWI3ZTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdGlueS5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdGlueS5zY2MKLWRlZmluZSBLTUFDSElORSB7ez1tYWNoaW5lfX0KLQotZGVmaW5lIEtBUkNIIGFybQotCi1pbmNsdWRlIHt7PW1hcF90aW55X2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpfX0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3NDg5ZTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgyNzU5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1wYXRjaGVzLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3Zjc0N2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1wYXRjaGVzLnNjYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyZTFhZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuY2ZnCisrKyAvZGV2L251bGwKQEAgLTEsMzIxICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5jZmcKLSMKLSMgU3lzdGVtIFR5cGUKLSMKLUNPTkZJR19BUkNIX09NQVA9eQotCi0jCi0jIFRJIE9NQVAgSW1wbGVtZW50YXRpb25zCi0jCi0jIENPTkZJR19BUkNIX09NQVAyIGlzIG5vdCBzZXQKLUNPTkZJR19BUkNIX09NQVAzPXkKLQotIwotIyBUSSBPTUFQIENvbW1vbiBGZWF0dXJlcwotIwotQ09ORklHX0FSQ0hfT01BUDJQTFVTPXkKLQotIwotIyBPTUFQIEZlYXR1cmUgU2VsZWN0aW9ucwotIwotQ09ORklHX09NQVBfMzJLX1RJTUVSPXkKLUNPTkZJR19PTUFQXzMyS19USU1FUl9IWj0xMjgKLUNPTkZJR19PTUFQX0RNX1RJTUVSPXkKLUNPTkZJR19PTUFQX1JFU0VUX0NMT0NLUz15Ci1DT05GSUdfT01BUF9TTUFSVFJFRkxFWD15Ci1DT05GSUdfT01BUF9TTUFSVFJFRkxFWF9DTEFTUzM9eQotQ09ORklHX09NQVBfTUJPWF9GV0s9bQotQ09ORklHX09NQVBfTUJPWF9LRklGT19TSVpFPTI1NgotCi0jCi0jIE9NQVAgQm9hcmQgVHlwZQotIwotQ09ORklHX01BQ0hfT01BUDNfQkVBR0xFPXkKLQotIwotIyBQcm9jZXNzb3IgRmVhdHVyZXMKLSMKLUNPTkZJR19BUk1fVEhVTUJFRT15Ci1DT05GSUdfQVJNX0VSUkFUQV80MzA5NzM9eQotCi0jCi0jIEtlcm5lbCBGZWF0dXJlcwotIwotQ09ORklHX0xFRFM9eQotCi0KLSMKLSMgU2VyaWFsIGRyaXZlcnMKLSMKLUNPTkZJR19TRVJJQUxfT01BUD15Ci1DT05GSUdfU0VSSUFMX09NQVBfQ09OU09MRT15Ci0KLSMKLSMgQXQgbGVhc3Qgb25lIGVtdWxhdGlvbiBtdXN0IGJlIHNlbGVjdGVkCi0jCi1DT05GSUdfVkZQPXkKLUNPTkZJR19ORU9OPXkKLQotIwotIyBQb3dlciBtYW5hZ2VtZW50IG9wdGlvbnMKLSMKLUNPTkZJR19QTT15Ci1DT05GSUdfUE1fUlVOVElNRT15Ci0KLSMKLSMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucwotIwotQ09ORklHX01URD15Ci1DT05GSUdfTVREX0NNRExJTkVfUEFSVFM9eQotIwotIyBVc2VyIE1vZHVsZXMgQW5kIFRyYW5zbGF0aW9uIExheWVycwotIwotQ09ORklHX01URF9CTEtERVZTPXkKLUNPTkZJR19NVERfQkxPQ0s9eQotCi0jCi0jIFJBTS9ST00vRmxhc2ggY2hpcCBkcml2ZXJzCi0jCi1DT05GSUdfTVREX0NGST15Ci1DT05GSUdfTVREX0NGSV9JTlRFTEVYVD15Ci0KLSMKLSMgRGlzay1Pbi1DaGlwIERldmljZSBEcml2ZXJzCi0jCi1DT05GSUdfTVREX05BTkQ9eQotCi1DT05GSUdfTVREX05BTkRfT01BUDI9eQotCi1DT05GSUdfTVREX1VCST15Ci0KLSMKLSMgU0NTSSBkZXZpY2Ugc3VwcG9ydAotIwotQ09ORklHX1NDU0k9eQotCi0jCi0jIFNDU0kgc3VwcG9ydCB0eXBlIChkaXNrLCB0YXBlLCBDRC1ST00pCi0jCi1DT05GSUdfQkxLX0RFVl9TRD15Ci0KLSMKLSMgRXRoZXJuZXQgKDEwIG9yIDEwME1iaXQpCi0jCi1DT05GSUdfU01TQzkxMVg9eQotQ09ORklHX1VTQl9ORVRfU01TQzk1WFg9eQotCi0jCi0jIFVzZXJsYW5kIGludGVyZmFjZXMKLSMKLUNPTkZJR19JTlBVVF9FVkRFVj15Ci0KLSMKLSMgSW5wdXQgRGV2aWNlIERyaXZlcnMKLSMKLUNPTkZJR19LRVlCT0FSRF9UV0w0MDMwPXkKLUNPTkZJR19JTlBVVF9UT1VDSFNDUkVFTj15Ci1DT05GSUdfVE9VQ0hTQ1JFRU5fQURTNzg0Nj15Ci0KLSMKLSMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0Ci0jCi1DT05GSUdfSTJDPXkKLUNPTkZJR19JMkNfT01BUD15Ci1DT05GSUdfU1BJPXkKLUNPTkZJR19TUElfTUFTVEVSPXkKLUNPTkZJR19TUElfT01BUDI0WFg9eQotCi0jCi0jIEkyQyBHUElPIGV4cGFuZGVyczoKLSMKLUNPTkZJR19HUElPX1RXTDQwMzA9eQotCi0jCi0jIFNQSSBHUElPIGV4cGFuZGVyczoKLSMKLUNPTkZJR19PTUFQX1dBVENIRE9HPXkKLUNPTkZJR19XQVRDSERPR19OT1dBWU9VVD15Ci0KLSMKLSMgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVycwotIwotQ09ORklHX1RXTDQwMzBfQ09SRT15Ci1DT05GSUdfUkVHVUxBVE9SPXkKLUNPTkZJR19SRUdVTEFUT1JfRFVNTVk9eQotQ09ORklHX1JFR1VMQVRPUl9UV0w0MDMwPXkKLQotIwotIyBHcmFwaGljcyBzdXBwb3J0Ci0jCi1DT05GSUdfRkI9eQotQ09ORklHX0RSTT1tCi0jIENPTkZJR19WR0FTVEFURSBpcyBub3Qgc2V0Ci0jIENPTkZJR19WSURFT19PVVRQVVRfQ09OVFJPTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GSVJNV0FSRV9FRElEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX0REQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9CT09UX1ZFU0FfU1VQUE9SVCBpcyBub3Qgc2V0Ci1DT05GSUdfRkJfQ0ZCX0ZJTExSRUNUPXkKLUNPTkZJR19GQl9DRkJfQ09QWUFSRUE9eQotQ09ORklHX0ZCX0NGQl9JTUFHRUJMSVQ9eQotIyBDT05GSUdfRkJfQ0ZCX1JFVl9QSVhFTFNfSU5fQllURSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9TWVNfRklMTFJFQ1QgaXMgbm90IHNldAotIyBDT05GSUdfRkJfU1lTX0NPUFlBUkVBIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX1NZU19JTUFHRUJMSVQgaXMgbm90IHNldAotIyBDT05GSUdfRkJfRk9SRUlHTl9FTkRJQU4gaXMgbm90IHNldAotIyBDT05GSUdfRkJfU1lTX0ZPUFMgaXMgbm90IHNldAotIyBDT05GSUdfRkJfU1ZHQUxJQiBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9NQUNNT0RFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9CQUNLTElHSFQgaXMgbm90IHNldAotQ09ORklHX0ZCX01PREVfSEVMUEVSUz15Ci0jIENPTkZJR19GQl9USUxFQkxJVFRJTkcgaXMgbm90IHNldAotCi0jCi0jIEZyYW1lIGJ1ZmZlciBoYXJkd2FyZSBkcml2ZXJzCi0jCi0jIENPTkZJR19GQl9TMUQxM1hYWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9UTUlPIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX1ZJUlRVQUwgaXMgbm90IHNldAotIyBDT05GSUdfRkJfTUVUUk9OT01FIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX01CODYyWFggaXMgbm90IHNldAotIyBDT05GSUdfRkJfQlJPQURTSEVFVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9PTUFQX0JPT1RMT0FERVJfSU5JVCBpcyBub3Qgc2V0Ci1DT05GSUdfT01BUDJfVlJBTT15Ci1DT05GSUdfT01BUDJfVlJGQj15Ci1DT05GSUdfT01BUDJfRFNTPXkKLUNPTkZJR19PTUFQMl9WUkFNX1NJWkU9MTQKLUNPTkZJR19PTUFQMl9EU1NfREVCVUdfU1VQUE9SVD15Ci0jIENPTkZJR19PTUFQMl9EU1NfQ09MTEVDVF9JUlFfU1RBVFMgaXMgbm90IHNldAotQ09ORklHX09NQVAyX0RTU19EUEk9eQotIyBDT05GSUdfT01BUDJfRFNTX1JGQkkgaXMgbm90IHNldAotQ09ORklHX09NQVAyX0RTU19WRU5DPXkKLSMgQ09ORklHX09NQVAyX0RTU19TREkgaXMgbm90IHNldAotQ09ORklHX09NQVAyX0RTU19EU0k9eQotIyBDT05GSUdfT01BUDJfRFNTX0ZBS0VfVlNZTkMgaXMgbm90IHNldAotQ09ORklHX09NQVAyX0RTU19NSU5fRkNLX1BFUl9QQ0s9MAotQ09ORklHX0ZCX09NQVAyPXkKLUNPTkZJR19GQl9PTUFQMl9ERUJVR19TVVBQT1JUPXkKLUNPTkZJR19GQl9PTUFQMl9OVU1fRkJTPTIKLQotIwotIyBPTUFQMi8zIERpc3BsYXkgRGV2aWNlIERyaXZlcnMKLSMKLUNPTkZJR19QQU5FTF9HRU5FUklDX0RQST15Ci1DT05GSUdfUEFORUxfRFZJPXkKLUNPTkZJR19QQU5FTF9TSEFSUF9MUzAzN1Y3RFcwMT15Ci0jIENPTkZJR19QQU5FTF9MR1BISUxJUFNfTEIwMzVRMDIgaXMgbm90IHNldAotIyBDT05GSUdfUEFORUxfVEFBTCBpcyBub3Qgc2V0Ci1DT05GSUdfUEFORUxfVFBPX1REMDQzTVRFQTE9bQotIyBDT05GSUdfQkFDS0xJR0hUX0xDRF9TVVBQT1JUIGlzIG5vdCBzZXQKLUNPTkZJR19CQUNLTElHSFRfQ0xBU1NfREVWSUNFPXkKLQotIwotIyBEaXNwbGF5IGRldmljZSBzdXBwb3J0Ci0jCi1DT05GSUdfRElTUExBWV9TVVBQT1JUPXkKLUNPTkZJR19EVU1NWV9DT05TT0xFPXkKLSMgQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfREVURUNUX1BSSU1BUlkgaXMgbm90IHNldAotQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfUk9UQVRJT049eQotIyBDT05GSUdfRk9OVFMgaXMgbm90IHNldAotQ09ORklHX0ZPTlRfOHg4PXkKLUNPTkZJR19GT05UXzh4MTY9eQotIyBDT05GSUdfTE9HT19MSU5VWF9NT05PIGlzIG5vdCBzZXQKLSMgQ09ORklHX0xPR09fTElOVVhfVkdBMTYgaXMgbm90IHNldAotCi0jCi0jIENvbnNvbGUgZGlzcGxheSBkcml2ZXIgc3VwcG9ydAotIwotQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEU9eQotQ09ORklHX0xPR089eQotIyBDT05GSUdfVkdBX0NPTlNPTEUgaXMgbm90IHNldAotCi0jIERNQSBEZXZpY2VzCi1DT05GSUdfRE1BREVWSUNFUz15Ci1DT05GSUdfRE1BX09NQVA9eQotQ09ORklHX0RNQV9PRj15Ci0KLUNPTkZJR19TT1VORD15Ci1DT05GSUdfU05EPXkKLUNPTkZJR19TTkRfU09DPXkKLUNPTkZJR19TTkRfT01BUF9TT0M9eQotQ09ORklHX1NORF9PTUFQX1NPQ19PTUFQX1RXTDQwMzA9eQotCi0jCi0jIFVTQiBJbnB1dCBEZXZpY2VzCi0jCi1DT05GSUdfVVNCPXkKLUNPTkZJR19VU0JfU1VQUE9SVD15Ci0KLSMKLSMgTWlzY2VsbGFuZW91cyBVU0Igb3B0aW9ucwotIwotQ09ORklHX1VTQl9PVEc9eQotIyBDT05GSUdfVVNCX09UR19XSElURUxJU1QgaXMgbm90IHNldAotCi0jCi0jIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycwotIwotQ09ORklHX1VTQl9FSENJX0hDRD15Ci1DT05GSUdfVVNCX0VIQ0lfVFRfTkVXU0NIRUQ9eQotQ09ORklHX1VTQl9FSENJX1JPT1RfSFVCX1RUPXkKLUNPTkZJR19VU0JfTVVTQl9IRFJDPXkKLUNPTkZJR19VU0JfTVVTQl9PTUFQMlBMVVM9eQotQ09ORklHX1VTQl9PTUFQPXkKLQotIwotIyBPTUFQIDM0M3ggaGlnaCBzcGVlZCBVU0Igc3VwcG9ydAotIwotQ09ORklHX1VTQl9NVVNCX09URz15Ci1DT05GSUdfVVNCX0dBREdFVF9NVVNCX0hEUkM9eQotQ09ORklHX1VTQl9NVVNCX0hEUkNfSENEPXkKLUNPTkZJR19VU0JfSU5WRU5UUkFfRE1BPXkKLQotIwotIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCi0jCi0KLSMKLSMgbWF5IGFsc28gYmUgbmVlZGVkOyBzZWUgVVNCX1NUT1JBR0UgSGVscCBmb3IgbW9yZSBpbmZvcm1hdGlvbgotIwotQ09ORklHX1VTQl9TVE9SQUdFPXkKLQotIwotIyBVU0IgTWlzY2VsbGFuZW91cyBkcml2ZXJzCi0jCi1DT05GSUdfVVNCX0dBREdFVD15Ci1DT05GSUdfVVNCX0dBREdFVF9EVUFMU1BFRUQ9eQotQ09ORklHX1VTQl9PVEdfVVRJTFM9eQotQ09ORklHX1RXTDQwMzBfVVNCPXkKLQotIyBVU0IgZ2FkZ2V0IG1vZHVsZXMKLUNPTkZJR19VU0JfR19OQ009eQotQ09ORklHX1VTQl9NQVNTX1NUT1JBR0U9eQotCi1DT05GSUdfTU1DPXkKLQotIwotIyBNTUMvU0QgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKLSMKLUNPTkZJR19NTUNfT01BUF9IUz15Ci0KLSMKLSMgUmVhbCBUaW1lIENsb2NrCi0jCi1DT05GSUdfUlRDX0xJQj15Ci1DT05GSUdfUlRDX0NMQVNTPXkKLUNPTkZJR19SVENfRFJWX1RXTDQwMzA9eQotCi0jCi0jIERPUy9GQVQvTlQgRmlsZXN5c3RlbXMKLSMKLUNPTkZJR19WRkFUX0ZTPXkKLQotIwotIyBNdWx0aW1lZGlhIGNvcmUgc3VwcG9ydAotIwotCi0jIENPTkZJR19WSURFT19IRUxQRVJfQ0hJUFNfQVVUTyBpcyBub3Qgc2V0Ci0KLSMKLSMgQWR2YW5jZWQgUG93ZXIgTWFuYWdlbWVudCBFbXVsYXRpb24gc3VwcG9ydAotIwotQ09ORklHX0FQTV9FTVVMQVRJT049eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjM4NjZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LnNjYwota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LmNmZwota2NvbmYgbm9uLWhhcmR3YXJlIHt7bWFjaGluZX19LW5vbl9oYXJkd2FyZS5jZmcKLQotaW5jbHVkZSBmZWF0dXJlcy91c2ItbmV0L3VzYi1uZXQuc2NjCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTdmMGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMikga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQotCi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCB1c2VfZGVmYXVsdF9rZXJuZWwgPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJlZDI3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZTk0M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmM2UxMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmQxODE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuNCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmYmVjYjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEwIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg3NGM5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTIiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgwOWM3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjQiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vQ09QWUlORy5NSVQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vQ09QWUlORy5NSVQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiOTUwZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL0NPUFlJTkcuTUlUCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSAKLW9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIAotaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyAKLXRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgCi1jb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgCi1mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi1UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiAKLWFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi1USEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiAKLUlNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCAKLUZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSAKLUFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgCi1MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCAKLU9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gCi1USEUgU09GVFdBUkUuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vUkVBRE1FIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI4NjU5Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vUkVBRE1FCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLVRoaXMgUkVBRE1FIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gb24gYnVpbGRpbmcgdGhlIG1ldGEte3s9bWFjaGluZX19Ci1CU1AgbGF5ZXIsIGFuZCBib290aW5nIHRoZSBpbWFnZXMgY29udGFpbmVkIGluIHRoZSAvYmluYXJ5IGRpcmVjdG9yeS4KLVBsZWFzZSBzZWUgdGhlIGNvcnJlc3BvbmRpbmcgc2VjdGlvbnMgYmVsb3cgZm9yIGRldGFpbHMuCi0KLQotRGVwZW5kZW5jaWVzCi09PT09PT09PT09PT0KLQotVGhpcyBsYXllciBkZXBlbmRzIG9uOgotCi0gIFVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZQotICBicmFuY2g6IG1hc3RlcgotCi0gIFVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUKLSAgbGF5ZXJzOiBtZXRhCi0gIGJyYW5jaDogbWFzdGVyCi0KLSAgVVJJOiBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy94eHh4Ci0gIGxheWVyczogeHh4eAotICBicmFuY2g6IG1hc3RlcgotCi0KLVBhdGNoZXMKLT09PT09PT0KLQotUGxlYXNlIHN1Ym1pdCBhbnkgcGF0Y2hlcyBhZ2FpbnN0IHRoaXMgQlNQIHRvIHRoZSBZb2N0byBtYWlsaW5nIGxpc3QKLSh5b2N0b0B5b2N0b3Byb2plY3Qub3JnKSBhbmQgY2M6IHRoZSBtYWludGFpbmVyOgotCi1NYWludGFpbmVyOiBYWFggWVlZWVlZIDx4eHgueXl5eXl5QHp6enp6LmNvbT4KLQotUGxlYXNlIHNlZSB0aGUgbWV0YS14eHh4L01BSU5UQUlORVJTIGZpbGUgZm9yIG1vcmUgZGV0YWlscy4KLQotCi1UYWJsZSBvZiBDb250ZW50cwotPT09PT09PT09PT09PT09PT0KLQotICBJLiBCdWlsZGluZyB0aGUgbWV0YS17ez1tYWNoaW5lfX0gQlNQIGxheWVyCi0gSUkuIEJvb3RpbmcgdGhlIGltYWdlcyBpbiAvYmluYXJ5Ci0KLQotSS4gQnVpbGRpbmcgdGhlIG1ldGEte3s9bWFjaGluZX19IEJTUCBsYXllcgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0tLS0gcmVwbGFjZSB3aXRoIHNwZWNpZmljIGluc3RydWN0aW9ucyBmb3IgeW91ciBsYXllciAtLS0KLQotSW4gb3JkZXIgdG8gYnVpbGQgYW4gaW1hZ2Ugd2l0aCBCU1Agc3VwcG9ydCBmb3IgYSBnaXZlbiByZWxlYXNlLCB5b3UKLW5lZWQgdG8gZG93bmxvYWQgdGhlIGNvcnJlc3BvbmRpbmcgQlNQIHRhcmJhbGwgZnJvbSB0aGUgJ0JvYXJkIFN1cHBvcnQKLVBhY2thZ2UgKEJTUCkgRG93bmxvYWRzJyBwYWdlIG9mIHRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGUuCi0KLUhhdmluZyBkb25lIHRoYXQsIGFuZCBhc3N1bWluZyB5b3UgZXh0cmFjdGVkIHRoZSBCU1AgdGFyYmFsbCBjb250ZW50cwotYXQgdGhlIHRvcC1sZXZlbCBvZiB5b3VyIHlvY3RvIGJ1aWxkIHRyZWUsIHlvdSBjYW4gYnVpbGQgYQote3s9bWFjaGluZX19IGltYWdlIGJ5IGFkZGluZyB0aGUgbG9jYXRpb24gb2YgdGhlIG1ldGEte3s9bWFjaGluZX19Ci1sYXllciB0byBiYmxheWVycy5jb25mLCBhbG9uZyB3aXRoIGFueSBvdGhlciBsYXllcnMgbmVlZGVkICh0byBhY2Nlc3MKLWNvbW1vbiBtZXRhZGF0YSBzaGFyZWQgYmV0d2VlbiBCU1BzKSBlLmcuOgotCi0gIHlvY3RvL21ldGEteHh4eCBcCi0gIHlvY3RvL21ldGEteHh4eC9tZXRhLXt7PW1hY2hpbmV9fSBcCi0KLVRvIGVuYWJsZSB0aGUge3s9bWFjaGluZX19IGxheWVyLCBhZGQgdGhlIHt7PW1hY2hpbmV9fSBNQUNISU5FIHRvIGxvY2FsLmNvbmY6Ci0KLSAgTUFDSElORSA/PSAie3s9bWFjaGluZX19IgotCi1Zb3Ugc2hvdWxkIHRoZW4gYmUgYWJsZSB0byBidWlsZCBhIHt7PW1hY2hpbmV9fSBpbWFnZSBhcyBzdWNoOgotCi0gICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52Ci0gICQgYml0YmFrZSBjb3JlLWltYWdlLXNhdG8KLQotQXQgdGhlIGVuZCBvZiBhIHN1Y2Nlc3NmdWwgYnVpbGQsIHlvdSBzaG91bGQgaGF2ZSBhIGxpdmUgaW1hZ2UgdGhhdAoteW91IGNhbiBib290IGZyb20gYSBVU0IgZmxhc2ggZHJpdmUgKHNlZSBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGRvCi10aGF0IGJlbG93LCBpbiB0aGUgc2VjdGlvbiAnQm9vdGluZyB0aGUgaW1hZ2VzIGZyb20gL2JpbmFyeScpLgotCi1BcyBhbiBhbHRlcm5hdGl2ZSB0byBkb3dubG9hZGluZyB0aGUgQlNQIHRhcmJhbGwsIHlvdSBjYW4gYWxzbyB3b3JrCi1kaXJlY3RseSBmcm9tIHRoZSBtZXRhLXh4eHggZ2l0IHJlcG9zaXRvcnkuICBGb3IgZWFjaCBCU1AgaW4gdGhlCi0nbWV0YS14eHh4JyByZXBvc2l0b3J5LCB0aGVyZSBhcmUgbXVsdGlwbGUgYnJhbmNoZXMsIG9uZSBjb3JyZXNwb25kaW5nCi10byBlYWNoIG1ham9yIHJlbGVhc2Ugc3RhcnRpbmcgd2l0aCAnbGF2ZXJuZScgKDAuOTApLCBpbiBhZGRpdGlvbiB0bwotdGhlIGxhdGVzdCBjb2RlIHdoaWNoIHRyYWNrcyB0aGUgY3VycmVudCBtYXN0ZXIgKG5vdGUgdGhhdCBub3QgYWxsCi1CU1BzIGFyZSBwcmVzZW50IGluIGV2ZXJ5IHJlbGVhc2UpLiAgSW5zdGVhZCBvZiBleHRyYWN0aW5nIGEgQlNQCi10YXJiYWxsIGF0IHRoZSB0b3AgbGV2ZWwgb2YgeW91ciB5b2N0byBidWlsZCB0cmVlLCB5b3UgY2FuCi1lcXVpdmFsZW50bHkgY2hlY2sgb3V0IHRoZSBhcHByb3ByaWF0ZSBicmFuY2ggZnJvbSB0aGUgbWV0YS14eHh4Ci1yZXBvc2l0b3J5IGF0IHRoZSBzYW1lIGxvY2F0aW9uLgotCi0KLUlJLiBCb290aW5nIHRoZSBpbWFnZXMgaW4gL2JpbmFyeQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLS0tLSByZXBsYWNlIHdpdGggc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyIHBsYXRmb3JtIC0tLQotCi1UaGlzIEJTUCBjb250YWlucyBib290YWJsZSBsaXZlIGltYWdlcywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZGlyZWN0bHkKLWJvb3QgWW9jdG8gb2ZmIG9mIGEgVVNCIGZsYXNoIGRyaXZlLgotCi1VbmRlciBMaW51eCwgaW5zZXJ0IGEgVVNCIGZsYXNoIGRyaXZlLiAgQXNzdW1pbmcgdGhlIFVTQiBmbGFzaCBkcml2ZQotdGFrZXMgZGV2aWNlIC9kZXYvc2RmLCB1c2UgZGQgdG8gY29weSB0aGUgbGl2ZSBpbWFnZSB0byBpdC4gIEZvcgotZXhhbXBsZToKLQotIyBkZCBpZj1jb3JlLWltYWdlLXNhdG8te3s9bWFjaGluZX19LTIwMTAxMjA3MDUzNzM4LmhkZGltZyBvZj0vZGV2L3NkZgotIyBzeW5jCi0jIGVqZWN0IC9kZXYvc2RmCi0KLVRoaXMgc2hvdWxkIGdpdmUgeW91IGEgYm9vdGFibGUgVVNCIGZsYXNoIGRldmljZS4gIEluc2VydCB0aGUgZGV2aWNlCi1pbnRvIGEgYm9vdGFibGUgVVNCIHNvY2tldCBvbiB0aGUgdGFyZ2V0LCBhbmQgcG93ZXIgb24uICBUaGlzIHNob3VsZAotcmVzdWx0IGluIGEgc3lzdGVtIGJvb3RlZCB0byB0aGUgU2F0byBncmFwaGljYWwgZGVza3RvcC4KLQotSWYgeW91IHdhbnQgYSB0ZXJtaW5hbCwgdXNlIHRoZSBhcnJvd3MgYXQgdGhlIHRvcCBvZiB0aGUgVUkgdG8gbW92ZSB0bwotZGlmZmVyZW50IHBhZ2VzIG9mIGF2YWlsYWJsZSBhcHBsaWNhdGlvbnMsIG9uZSBvZiB3aGljaCBpcyBuYW1lZAotJ1Rlcm1pbmFsJy4gIENsaWNraW5nIHRoYXQgc2hvdWxkIGdpdmUgeW91IGEgcm9vdCB0ZXJtaW5hbC4KLQotSWYgeW91IHdhbnQgdG8gc3NoIGludG8gdGhlIHN5c3RlbSwgeW91IGNhbiB1c2UgdGhlIHJvb3QgdGVybWluYWwgdG8KLWlmY29uZmlnIHRoZSBJUCBhZGRyZXNzIGFuZCB1c2UgdGhhdCB0byBzc2ggaW4uICBUaGUgcm9vdCBwYXNzd29yZCBpcwotZW1wdHksIHNvIHRvIGxvZyBpbiB0eXBlICdyb290JyBmb3IgdGhlIHVzZXIgbmFtZSBhbmQgaGl0ICdFbnRlcicgYXQKLXRoZSBQYXNzd29yZCBwcm9tcHQ6IGFuZCB5b3Ugc2hvdWxkIGJlIGluLgotCi0tLS0tCi0KLUlmIHlvdSBmaW5kIHlvdSdyZSBnZXR0aW5nIGNvcnJ1cHQgaW1hZ2VzIG9uIHRoZSBVU0IgKGl0IGRvZXNuJ3Qgc2hvdwotdGhlIHN5c2xpbnV4IGJvb3Q6IHByb21wdCwgb3IgdGhlIGJvb3Q6IHByb21wdCBjb250YWlucyBzdHJhbmdlCi1jaGFyYWN0ZXJzKSwgdHJ5IGRvaW5nIHRoaXMgZmlyc3Q6Ci0KLSMgZGQgaWY9L2Rldi96ZXJvIG9mPS9kZXYvc2RmIGJzPTFNIGNvdW50PTUxMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL1JFQURNRS5zb3VyY2VzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL1JFQURNRS5zb3VyY2VzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzRjYjdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9SRUFETUUuc291cmNlcworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSBzb3VyY2VzIGZvciB0aGUgcGFja2FnZXMgY29tcHJpc2luZyB0aGUgaW1hZ2VzIHNoaXBwZWQgd2l0aCB0aGlzCi1CU1AgY2FuIGJlIGZvdW5kIGF0IHRoZSBmb2xsb3dpbmcgbG9jYXRpb246Ci0KLWh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8KLQotVGhlIG1ldGFkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGltYWdlcyBzaGlwcGVkIHdpdGggdGhpcyBCU1AsIGluCi1hZGRpdGlvbiB0byB0aGUgY29kZSBjb250YWluZWQgaW4gdGhpcyBCU1AsIGNhbiBiZSBmb3VuZCBhdCB0aGUKLWZvbGxvd2luZyBsb2NhdGlvbjoKLQotaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2Rvd25sb2Fkcy95b2N0by0xLjEvcG9reS1lZGlzb24tNi4wLnRhci5iejIKLQotVGhlIG1ldGFkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGltYWdlcyBzaGlwcGVkIHdpdGggdGhpcyBCU1AsIGluCi1hZGRpdGlvbiB0byB0aGUgY29kZSBjb250YWluZWQgaW4gdGhpcyBCU1AsIGNhbiBhbHNvIGJlIGZvdW5kIGF0IHRoZQotZm9sbG93aW5nIGxvY2F0aW9uczoKLQotZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reS5naXQKLWdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL21ldGEteHh4eApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL2JpbmFyeS8uZ2l0aWdub3JlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL2JpbmFyeS8uZ2l0aWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9iaW5hcnkvLmdpdGlnbm9yZQorKysgL2Rldi9udWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL2NvbmYvbGF5ZXIuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTUyOWY0NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vY29uZi9sYXllci5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKLUJCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgotCi0jIFdlIGhhdmUgYSByZWNpcGVzLSogZGlyZWN0b3JpZXMsIGFkZCB0byBCQkZJTEVTCi1CQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiIFwKLQkke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgotCi1CQkZJTEVfQ09MTEVDVElPTlMgKz0gInt7PW1hY2hpbmV9fSIKLUJCRklMRV9QQVRURVJOX3t7PW1hY2hpbmV9fSA9ICJeJHtMQVlFUkRJUn0vIgotQkJGSUxFX1BSSU9SSVRZX3t7PW1hY2hpbmV9fSA9ICI2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvci9tYWNoaW5lLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IvbWFjaGluZS5ub2luc3RhbGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NDJkMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvci9tYWNoaW5lLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3s9bWFjaGluZX19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1ic3AvZm9ybWZhY3Rvci9mb3JtZmFjdG9yL21hY2hpbmUvbWFjaGNvbmZpZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IvbWFjaGluZS9tYWNoY29uZmlnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjg1ZDM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IvbWFjaGluZS9tYWNoY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jIEFzc3VtZSBhIFVTQiBtb3VzZSBhbmQga2V5Ym9hcmQgYXJlIGNvbm5lY3RlZAote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidG91Y2hzY3JlZW4iIG1zZzoiRG9lcyB5b3VyIEJTUCBoYXZlIGEgdG91Y2hzY3JlZW4/ICh5L24pIiBkZWZhdWx0OiJuIiB9fQotSEFWRV9UT1VDSFNDUkVFTj17ez10b3VjaHNjcmVlbn19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJrZXlib2FyZCIgbXNnOiJEb2VzIHlvdXIgQlNQIGhhdmUgYSBrZXlib2FyZD8gKHkvbikiIGRlZmF1bHQ6InkiIH19Ci1IQVZFX0tFWUJPQVJEPXt7PWtleWJvYXJkfX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3JfMC4wLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvcl8wLjAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNDgwNGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvcl8wLjAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2M2RkZGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJjdXN0b21fa2VybmVsX3JlbW90ZSIgcHJpbzoiMjAiIG1zZzoiSXMgdGhlIGN1c3RvbSBrZXJuZWwgeW91J2QgbGlrZSB0byB1c2UgaW4gYSByZW1vdGUgZ2l0IHJlcG8/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSIgYW5kIGN1c3RvbV9rZXJuZWxfcmVtb3RlID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImVkaXQtZ2l0LXJlcG8iIG5hbWU6ImN1c3RvbV9rZXJuZWxfcmVtb3RlX3BhdGgiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBlbnRlciB0aGUgZnVsbCBVUkkgdG8gdGhlIHJlbW90ZSBnaXQgcmVwbyAodGhlIGRlZmF1bHQgY29ycmVzcG9uZHMgdG8gbGludXgtc3RhYmxlIHYzLjE2LjMpIiBkZWZhdWx0OiJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc3RhYmxlL2xpbnV4LXN0YWJsZS5naXQifX0KLQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIiBhbmQgY3VzdG9tX2tlcm5lbF9yZW1vdGUgPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiZWRpdC1naXQtcmVwbyIgbmFtZToiY3VzdG9tX2tlcm5lbF9sb2NhbF9wYXRoIiBwcmlvOiIyMCIgbXNnOiJZb3UndmUgaW5kaWNhdGVkIHRoYXQgeW91J3JlIG5vdCB1c2luZyBhIHJlbW90ZSBnaXQgcmVwby4gIFBsZWFzZSBlbnRlciB0aGUgZnVsbCBwYXRoIHRvIHRoZSBsb2NhbCBnaXQgcmVwbyB5b3Ugd2FudCB0byB1c2UgKHRoZSBkZWZhdWx0IGFzc3VtZXMgYSBsb2NhbCBsaW51eC1zdGFibGUgdjMuMTYuMykiIGRlZmF1bHQ6Ii9ob21lL3Ryei95b2N0by9rZXJuZWxzL2xpbnV4LXN0YWJsZS5naXQifX0KLQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIjogfX0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6ImN1c3RvbV9rZXJuZWxfbmVlZF9rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCB0byB1c2UgYSBzcGVjaWZpYyAobm9uLW1hc3RlcikgYnJhbmNoPyAoeS9uKSIgZGVmYXVsdDoibiJ9fQotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIGFuZCBjdXN0b21fa2VybmVsX25lZWRfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJlZGl0IiBuYW1lOiJjdXN0b21fa2VybmVsX2ticmFuY2giIHByaW86IjIwIiBtc2c6IlBsZWFzZSBlbnRlciB0aGUgYnJhbmNoIHlvdSB3YW50IHRvIHVzZSAodGhlIGRlZmF1bHQgYnJhbmNoIGNvcnJlc3BvbmRzIHRvIHRoZSBsaW51eC1zdGFibGUgJ2xpbnV4LTMuMTYueScgYnJhbmNoKToiIGRlZmF1bHQ6ImxpbnV4LTMuMTYueSJ9fQotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iOiB9fQote3sgaW5wdXQgdHlwZToiZWRpdCIgbmFtZToiY3VzdG9tX2tlcm5lbF9zcmNyZXYiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBlbnRlciB0aGUgU1JDUkVWIChjb21taXQgaWQpIHlvdSdkIGxpa2UgdG8gdXNlICh1c2UgJyR7QVVUT1JFVn0nIHRvIHRyYWNrIHRoZSBjdXJyZW50IEhFQUQpOiIgZGVmYXVsdDoiJHtBVVRPUkVWfSJ9fQotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iOiB9fQote3sgaW5wdXQgdHlwZToiZWRpdCIgbmFtZToiY3VzdG9tX2tlcm5lbF9saW51eF92ZXJzaW9uIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgZW50ZXIgdGhlIExpbnV4IHZlcnNpb24gb2YgdGhlIGtlcm5lbCB5b3UndmUgc3BlY2lmaWVkOiIgZGVmYXVsdDoiMy4xNi4zIn19Ci0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJlZGl0IiBuYW1lOiJjdXN0b21fa2VybmVsX2xpbnV4X3ZlcnNpb25fZXh0ZW5zaW9uIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgZW50ZXIgYSBMaW51eCB2ZXJzaW9uIGV4dGVuc2lvbiBpZiB5b3Ugd2FudCAoaXQgd2lsbCBzaG93IHVwIGF0IHRoZSBlbmQgb2YgdGhlIGtlcm5lbCBuYW1lIHNob3duIGJ5IHVuYW1lKToiIGRlZmF1bHQ6Ii1jdXN0b20ifX0KLQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIjogfX0KLXt7IGlucHV0IHR5cGU6ImVkaXQtZmlsZSIgbmFtZToiY3VzdG9tX2tlcm5lbF9kZWZjb25maWciIHByaW86IjIwIiBtc2c6Ikl0J3MgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIHRoYXQgY3VzdG9tIGtlcm5lbHMgYmUgYnVpbHQgdXNpbmcgYSBkZWZjb25maWcuICBQbGVhc2UgZW50ZXIgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVmY29uZmlnIGZvciB5b3VyIGtlcm5lbCAoTk9URTogaWYgeW91IGRvbid0IHNwZWNpZnkgYSBkZWZjb25maWcgdGhlIGtlcm5lbCBwcm9iYWJseSB3b24ndCBidWlsZCBvciBib290KToiIGRlZmF1bHQ6IiJ9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiYTQyMjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSI6IH19IHRoaXMKLSMgVGhpcyBmaWxlIHdhcyBkZXJpdmVkIGZyb20gdGhlIGxpbnV4LXlvY3RvLWN1c3RvbS5iYiByZWNpcGUgaW4KLSMgb2UtY29yZS4KLSMKLSMgbGludXgteW9jdG8tY3VzdG9tLmJiOgotIwotIyAgIEEgeW9jdG8tYnNwLWdlbmVyYXRlZCBrZXJuZWwgcmVjaXBlIHRoYXQgdXNlcyB0aGUgbGludXgteW9jdG8gYW5kCi0jICAgb2UtY29yZSBrZXJuZWwgY2xhc3NlcyB0byBhcHBseSBhIHN1YnNldCBvZiB5b2N0byBrZXJuZWwKLSMgICBtYW5hZ2VtZW50IHRvIGdpdCBtYW5hZ2VkIGtlcm5lbCByZXBvc2l0b3JpZXMuCi0jCi0jIFdhcm5pbmc6Ci0jCi0jICAgQnVpbGRpbmcgdGhpcyBrZXJuZWwgd2l0aG91dCBwcm92aWRpbmcgYSBkZWZjb25maWcgb3IgQlNQCi0jICAgY29uZmlndXJhdGlvbiB3aWxsIHJlc3VsdCBpbiBidWlsZCBvciBib290IGVycm9ycy4gVGhpcyBpcyBub3QgYQotIyAgIGJ1Zy4KLSMKLSMgTm90ZXM6Ci0jCi0jICAgcGF0Y2hlczogcGF0Y2hlcyBjYW4gYmUgbWVyZ2VkIGludG8gdG8gdGhlIHNvdXJjZSBnaXQgdHJlZSBpdHNlbGYsCi0jICAgICAgICAgICAgYWRkZWQgdmlhIHRoZSBTUkNfVVJJLCBvciBjb250cm9sbGVkIHZpYSBhIEJTUAotIyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uCi0jCi0jICAgZXhhbXBsZSBjb25maWd1cmF0aW9uIGFkZGl0aW9uOgotIyAgICAgICAgICAgIFNSQ19VUkkgKz0gImZpbGU6Ly9zbXAuY2ZnIgotIyAgIGV4YW1wbGUgcGF0Y2ggYWRkaXRpb246Ci0jICAgICAgICAgICAgU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtbGludXgtdmVyc2lvbi10d2Vhay5wYXRjaAotIyAgIGV4YW1wbGUgZmVhdHVyZSBhZGRpdGlvbjoKLSMgICAgICAgICAgICBTUkNfVVJJICs9ICJmaWxlOi8vZmVhdHVyZS5zY2MiCi0jCi0KLWluaGVyaXQga2VybmVsCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIGFuZCBjdXN0b21fa2VybmVsX3JlbW90ZSA9PSAieSI6IH19Ci1TUkNfVVJJID0gInt7PWN1c3RvbV9rZXJuZWxfcmVtb3RlX3BhdGh9fTtwcm90b2NvbD1naXQ7YmFyZWNsb25lPTE7YnJhbmNoPSR7S0JSQU5DSH0iCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIGFuZCBjdXN0b21fa2VybmVsX3JlbW90ZSA9PSAibiI6IH19Ci1TUkNfVVJJID0gImdpdDovL3t7PWN1c3RvbV9rZXJuZWxfbG9jYWxfcGF0aH19O3Byb3RvY29sPWZpbGU7YmFyZWNsb25lPTE7YnJhbmNoPSR7S0JSQU5DSH0iCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9kZWZjb25maWciCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIGFuZCBjdXN0b21fa2VybmVsX25lZWRfa2JyYW5jaCA9PSAieSIgYW5kIGN1c3RvbV9rZXJuZWxfa2JyYW5jaCBhbmQgY3VzdG9tX2tlcm5lbF9rYnJhbmNoICE9ICJtYXN0ZXIiOiB9fQotS0JSQU5DSCA9ICJ7ez1jdXN0b21fa2VybmVsX2ticmFuY2h9fSIKLQotTElOVVhfVkVSU0lPTiA/PSAie3s9Y3VzdG9tX2tlcm5lbF9saW51eF92ZXJzaW9ufX0iCi1MSU5VWF9WRVJTSU9OX0VYVEVOU0lPTiA/PSAie3s9Y3VzdG9tX2tlcm5lbF9saW51eF92ZXJzaW9uX2V4dGVuc2lvbn19IgotCi1TUkNSRVY9Int7PWN1c3RvbV9rZXJuZWxfc3JjcmV2fX0iCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE3ZDIwNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIjogfX0gbGludXgteW9jdG8tY3VzdG9tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL2RlZmNvbmZpZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vZGVmY29uZmlnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWIwZmZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vZGVmY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jCi0jIFBsYWNlaG9sZGVyIGZvciBjdXN0b20gZGVmYXVsdCBrZXJuZWwgY29uZmlndXJhdGlvbi4gIHlvY3RvLWJzcCB3aWxsCi0jIHJlcGxhY2UgdGhpcyBmaWxlIHdpdGggYSB1c2VyLXNwZWNpZmllZCBkZWZjb25maWcuCi0jCi17eyBpZiBjdXN0b21fa2VybmVsX2RlZmNvbmZpZzogcmVwbGFjZV9maWxlKG9mLCBjdXN0b21fa2VybmVsX2RlZmNvbmZpZykgfX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS11c2VyLWNvbmZpZy5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjIzMDlkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS11c2VyLWNvbmZpZy5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcKLSMKLSMgVXNlZCBieSB5b2N0by1rZXJuZWwgdG8gbWFuYWdlIGNvbmZpZyBvcHRpb25zLgotIwotIyB5b2N0by1rZXJuZWwgbWF5IGNoYW5nZSB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGluIGFueQotIyB3YXkgaXQgc2VlcyBmaXQsIGluY2x1ZGluZyByZW1vdmluZyBjb21tZW50cyBsaWtlIHRoaXMsCi0jIHNvIGRvbid0IG1hbnVhbGx5IG1ha2UgYW55IG1vZGlmaWNhdGlvbnMgeW91IGRvbid0IHdhbnQKLSMgdG8gbG9zZS4KLSMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgyNzU5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMTEzOGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjCi0jCi0jIFVzZWQgYnkgeW9jdG8ta2VybmVsIHRvIG1hbmFnZSBwYXRjaGVzLgotIwotIyB5b2N0by1rZXJuZWwgbWF5IGNoYW5nZSB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGluIGFueQotIyB3YXkgaXQgc2VlcyBmaXQsIGluY2x1ZGluZyByZW1vdmluZyBjb21tZW50cyBsaWtlIHRoaXMsCi0jIHNvIGRvbid0IG1hbnVhbGx5IG1ha2UgYW55IG1vZGlmaWNhdGlvbnMgeW91IGRvbid0IHdhbnQKLSMgdG8gbG9zZS4KLSMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL21hY2hpbmUuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmE4MjAxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5jZmcKLSMKLSMgQSBjb252ZW5pZW50IHBsYWNlIHRvIGFkZCBjb25maWcgb3B0aW9ucywgbm90aGluZyBtb3JlLgotIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZDNlZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLnNjYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5zY2MKLSMKLSMgVGhlIHRvcC1sZXZlbCAnZmVhdHVyZScgZm9yIHRoZSB7ez1tYWNoaW5lfX0gY3VzdG9tIGtlcm5lbC4KLSMKLSMgRXNzZW50aWFsbHkgdGhpcyBpcyBhIGNvbnZlbmllbnQgdG9wLWxldmVsIGNvbnRhaW5lciBvciBzdGFydGluZwotIyBwb2ludCBmb3IgYWRkaW5nIGxvd2VyLWxldmVsIGNvbmZpZyBmcmFnZW1lbnRzIGFuZCBmZWF0dXJlcy4KLSMKLQotIyB7ez1tYWNoaW5lfX0uY2ZnIGluIHRoZSBsaW51eC15b2N0by1jdXN0b20gc3ViZGlyIGlzIGp1c3QgYQotIyBjb252ZW5pZW50IHBsYWNlIGZvciBhZGRpbmcgcmFuZG9tIGNvbmZpZyBmcmFnbWVudHMuCi0KLWtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS5jZmcKLQotIyBUaGVzZSBhcmUgdXNlZCBieSB5b2N0by1rZXJuZWwgdG8gYWRkIGNvbmZpZyBmcmFnbWVudHMgYW5kIGZlYXR1cmVzLgotIyBEb24ndCByZW1vdmUgaWYgeW91IHBsYW4gb24gdXNpbmcgeW9jdG8ta2VybmVsIHdpdGggdGhpcyBCU1AuCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0NWMxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L2NvbmYvbWFjaGluZS9tYWNoaW5lLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uY29uZgotI0BUWVBFOiBNYWNoaW5lCi0jQE5BTUU6IHt7PW1hY2hpbmV9fQotCi0jQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIHt7PW1hY2hpbmV9fSBzeXN0ZW1zCi0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSI6IHByZWZlcnJlZF9rZXJuZWwgPSAibGludXgteW9jdG8tY3VzdG9tIiB9fQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbCA9ICJsaW51eC15b2N0by1kZXYiIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIG9yIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLWRldiIgOiB9fQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsfX0iCi0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIGtlcm5lbF9jaG9pY2UgIT0gImxpbnV4LXlvY3RvLWRldiI6IHByZWZlcnJlZF9rZXJuZWwgPSBrZXJuZWxfY2hvaWNlLnNwbGl0KCdfJylbMF0gfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIGtlcm5lbF9jaG9pY2UgIT0gImxpbnV4LXlvY3RvLWRldiI6IHByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbiA9IGtlcm5lbF9jaG9pY2Uuc3BsaXQoJ18nKVsxXSB9fQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAie3s9cHJlZmVycmVkX2tlcm5lbH19IgotUFJFRkVSUkVEX1ZFUlNJT05fe3s9cHJlZmVycmVkX2tlcm5lbH19ID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsX3ZlcnNpb259fSUiCi0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6InR1bmVmaWxlIiBwcmlvOiI0MCIgbXNnOiJXaGljaCBtYWNoaW5lIHR1bmluZyB3b3VsZCB5b3UgbGlrZSB0byB1c2U/IiBkZWZhdWx0OiJ0dW5lX2NvcmUyIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfaTU4NiIgbXNnOiJpNTg2IHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfYXRvbSIgbXNnOiJBdG9tIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfY29yZTIiIG1zZzoiQ29yZTIgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9pNTg2IjogfX0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pNTg2LmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfYXRvbSI6IH19Ci1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXRvbS5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcmUyIjogfX0KLURFRkFVTFRUVU5FPSJjb3JlMi0zMiIKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlMi5pbmMKLQotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKLQotTUFDSElORV9GRUFUVVJFUyArPSAid2lmaSBlZmkgcGNiaW9zIgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ4c2VydmVyIiBwcmlvOiI1MCIgbXNnOiJEbyB5b3UgbmVlZCBzdXBwb3J0IGZvciBYPyAoeS9uKSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgeHNlcnZlciA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJ4c2VydmVyX2Nob2ljZSIgcHJpbzoiNTAiIG1zZzoiUGxlYXNlIHNlbGVjdCBhbiB4c2VydmVyIGZvciB0aGlzIG1hY2hpbmU6IiBkZWZhdWx0OiJ4c2VydmVyX3Zlc2EiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieHNlcnZlcl92ZXNhIiBtc2c6IlZFU0EgeHNlcnZlciBzdXBwb3J0IiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InhzZXJ2ZXJfaTkxNSIgbXNnOiJpOTE1IHhzZXJ2ZXIgc3VwcG9ydCIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ4c2VydmVyX2k5NjUiIG1zZzoiaTk2NSB4c2VydmVyIHN1cHBvcnQiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieHNlcnZlcl9mYmRldiIgbXNnOiJmYmRldiB4c2VydmVyIHN1cHBvcnQiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieHNlcnZlcl9tb2Rlc2V0dGluZyIgbXNnOiJtb2Rlc2V0dGluZyB4c2VydmVyIHN1cHBvcnQiIH19Ci0KLXt7IGlmIHhzZXJ2ZXIgPT0gInkiIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0b180LjgiIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0b180LjQiIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0b180LjEiIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB4c2VydmVyX2Nob2ljZSA9ICJ4c2VydmVyX2k5MTUiIH19Ci0KLXt7IGlmIHhzZXJ2ZXIgPT0gInkiOiB9fQotWFNFUlZFUiA/PSAiJHtYU0VSVkVSX1g4Nl9CQVNFfSBcCi0gICAgICAgICAgICR7WFNFUlZFUl9YODZfRVhUfSBcCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfdmVzYSI6IH19Ci0gICAgICAgICAgICR7WFNFUlZFUl9YODZfVkVTQX0gXAote3sgaWYgeHNlcnZlciA9PSAieSIgYW5kIHhzZXJ2ZXJfY2hvaWNlID09ICJ4c2VydmVyX2k5MTUiOiB9fQotICAgICAgICAgICAke1hTRVJWRVJfWDg2X0k5MTV9IFwKLXt7IGlmIHhzZXJ2ZXIgPT0gInkiIGFuZCB4c2VydmVyX2Nob2ljZSA9PSAieHNlcnZlcl9pOTY1IjogfX0KLSAgICAgICAgICAgJHtYU0VSVkVSX1g4Nl9JOTY1fSBcCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfZmJkZXYiOiB9fQotICAgICAgICAgICAke1hTRVJWRVJfWDg2X0ZCREVWfSBcCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfbW9kZXNldHRpbmciOiB9fQotICAgICAgICAgICAke1hTRVJWRVJfWDg2X01PREVTRVRUSU5HfSBcCi17eyBpZiB4c2VydmVyID09ICJ5IjogfX0KLSAgICAgICAgICAgIgotCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJsaW51eC1maXJtd2FyZSB2ODZkIGVlZS1hY3BpLXNjcmlwdHMiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfcG4tbWF0Y2hib3gtcGFuZWwtMiA9ICIgLS13aXRoLWJhdHRlcnk9YWNwaSIKLQotR0xJQkNfQURET05TID0gIm5wdGwiCi0KLXt7IGlmIHhzZXJ2ZXIgPT0gInkiIGFuZCB4c2VydmVyX2Nob2ljZSA9PSAieHNlcnZlcl92ZXNhIjogfX0KLUFQUEVORCArPSAidmlkZW89dmVzYWZiIHZnYT0weDMxOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ0MmQwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvbWFjaGluZS5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1kaXJuYW1lIHt7PW1hY2hpbmV9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUveG9yZy5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUveG9yZy5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzlhMGYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lL3hvcmcuY29uZgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIHhzZXJ2ZXIgPT0gInkiOiB9fSB0aGlzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA4MzAwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiB4c2VydmVyID09ICJ5IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUwZDkyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIjogfX0gZmlsZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE0NmUyMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtcHJlZW1wdC1ydC5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tcHJlZW1wdC1ydC5zY2MKLWRlZmluZSBLTUFDSElORSB7ez1tYWNoaW5lfX0KLQotZGVmaW5lIEtBUkNIIGkzODYKLQotaW5jbHVkZSB7ez1tYXBfcHJlZW1wdF9ydF9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19Ci17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwotCi0jIGRlZmF1bHQgcG9saWN5IGZvciBwcmVlbXB0LXJ0IGtlcm5lbHMKLWluY2x1ZGUgY2ZnL3VzYi1tYXNzLXN0b3JhZ2Uuc2NjCi1pbmNsdWRlIGNmZy9ib290LWxpdmUuc2NjCi1pbmNsdWRlIGZlYXR1cmVzL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC5zY2MKLWluY2x1ZGUgZmVhdHVyZXMvcHJvZmlsaW5nL3Byb2ZpbGluZy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtc3RhbmRhcmQuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGQxY2E1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCBpMzg2Ci0KLWluY2x1ZGUge3s9bWFwX3N0YW5kYXJkX2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpfX0gbm9wYXRjaAote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci1kZWZpbmUgS1RZUEUge3s9bmV3X2ticmFuY2h9fQotYnJhbmNoIHt7PW1hY2hpbmV9fQotCi1pbmNsdWRlIHt7PW1hY2hpbmV9fS5zY2MKLQotIyBkZWZhdWx0IHBvbGljeSBmb3Igc3RhbmRhcmQga2VybmVscwotaW5jbHVkZSBjZmcvdXNiLW1hc3Mtc3RvcmFnZS5zY2MKLWluY2x1ZGUgY2ZnL2Jvb3QtbGl2ZS5zY2MKLWluY2x1ZGUgZmVhdHVyZXMvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLnNjYwotaW5jbHVkZSBmZWF0dXJlcy9wcm9maWxpbmcvcHJvZmlsaW5nLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTM3M2IzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS10aW55LnNjYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS10aW55LnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggaTM4NgotCi1pbmNsdWRlIHt7PW1hcF90aW55X2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpfX0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItY29uZmlnLmNmZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjllZmRjYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODViZTI2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1wYXRjaGVzLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzU5ZGFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU1Yjg4Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuY2ZnCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LmNmZwotQ09ORklHX1g4Nl8zMj15Ci0jIE11c3QgZXhwbGljaXRseSBkaXNhYmxlIDY0QklUCi0jIENPTkZJR182NEJJVCBpcyBub3Qgc2V0Ci0KLUNPTkZJR19NQVRPTT15Ci1DT05GSUdfUFJJTlRLPXkKLQotIyBCYXNpYyBoYXJkd2FyZSBzdXBwb3J0IGZvciB0aGUgYm94IC0gbmV0d29yaywgVVNCLCBQQ0ksIHNvdW5kCi1DT05GSUdfTkVUREVWSUNFUz15Ci1DT05GSUdfQVRBPXkKLUNPTkZJR19BVEFfR0VORVJJQz15Ci1DT05GSUdfQVRBX1NGRj15Ci1DT05GSUdfUENJPXkKLUNPTkZJR19NTUM9eQotQ09ORklHX01NQ19TREhDST15Ci1DT05GSUdfVVNCX1NVUFBPUlQ9eQotQ09ORklHX1VTQj15Ci1DT05GSUdfVVNCX0FSQ0hfSEFTX0VIQ0k9eQotQ09ORklHX1I4MTY5PXkKLUNPTkZJR19QQVRBX1NDSD15Ci1DT05GSUdfTU1DX1NESENJX1BDST15Ci1DT05GSUdfVVNCX0VIQ0lfSENEPXkKLUNPTkZJR19QQ0lFUE9SVEJVUz15Ci1DT05GSUdfTkVUPXkKLUNPTkZJR19VU0JfVUhDSV9IQ0Q9eQotQ09ORklHX1VTQl9PSENJX0hDRD15Ci1DT05GSUdfQkxLX0RFVl9TRD15Ci1DT05GSUdfQ0hSX0RFVl9TRz15Ci1DT05GSUdfU09VTkQ9eQotQ09ORklHX1NORD15Ci1DT05GSUdfU05EX0hEQV9JTlRFTD15Ci1DT05GSUdfU0FUQV9BSENJPXkKLUNPTkZJR19BR1A9eQotQ09ORklHX1BNPXkKLUNPTkZJR19BQ1BJPXkKLUNPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQ9eQotQ09ORklHX0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0U9eQotQ09ORklHX0lOUFVUPXkKLQotIyBNYWtlIHN1cmUgdGhlc2UgYXJlIG9uLCBvdGhlcndpc2UgdGhlIGJvb3R1cCB3b24ndCBiZSBmdW4KLUNPTkZJR19FWFQzX0ZTPXkKLUNPTkZJR19VTklYPXkKLUNPTkZJR19JTkVUPXkKLUNPTkZJR19NT0RVTEVTPXkKLUNPTkZJR19TSE1FTT15Ci1DT05GSUdfVE1QRlM9eQotQ09ORklHX1BBQ0tFVD15Ci0KLSMgTmVlZGVkIGZvciBib290aW5nIChhbmQgdXNpbmcpIFVTQiBtZW1vcnkgc3RpY2tzCi1DT05GSUdfQkxLX0RFVl9MT09QPXkKLUNPTkZJR19OTFNfQ09ERVBBR0VfNDM3PXkKLUNPTkZJR19OTFNfSVNPODg1OV8xPXkKLQotQ09ORklHX1JEX0daSVA9eQotCi0jIE5lZWRlZCBmb3IgYm9vdGluZyAoYW5kIHVzaW5nKSBDRCBpbWFnZXMKLUNPTkZJR19CTEtfREVWX1NSPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTRjNTRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uc2NjCi1rY29uZiBoYXJkd2FyZSB7ez1tYWNoaW5lfX0uY2ZnCi0KLWluY2x1ZGUgZmVhdHVyZXMvaW50ZWwtZTF4eHh4L2ludGVsLWUxMDAuc2NjCi1pbmNsdWRlIGZlYXR1cmVzL2ludGVsLWUxeHh4eC9pbnRlbC1lMXh4eHguc2NjCi0KLXt7IGlmIHhzZXJ2ZXIgPT0gInkiIGFuZCB4c2VydmVyX2Nob2ljZSA9PSAieHNlcnZlcl9pOTE1IiBvciB4c2VydmVyX2Nob2ljZSA9PSAieHNlcnZlcl9pOTY1IjogfX0KLWluY2x1ZGUgZmVhdHVyZXMvaTkxNS9pOTE1LnNjYwotCi1pbmNsdWRlIGZlYXR1cmVzL3NlcmlhbC84MjUwLnNjYwotaW5jbHVkZSBmZWF0dXJlcy9lcmljc3Nvbi0zZy9mNTUyMWd3LnNjYwotCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfdmVzYSI6IH19Ci1pbmNsdWRlIGNmZy92ZXNhZmIuc2NjCi0KLWluY2x1ZGUgY2ZnL3VzYi1tYXNzLXN0b3JhZ2Uuc2NjCi1pbmNsdWRlIGNmZy9ib290LWxpdmUuc2NjCi1pbmNsdWRlIGZlYXR1cmVzL3Bvd2VyL2ludGVsLnNjYwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTdmMGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMiJ9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJlZDI3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLWRldiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19Igote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZTk0M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuMTAiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmM2UxMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuMTIiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmQxODE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuNCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjQiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NjE2ZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xMCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkOnN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQ6c3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBkNTdmNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEyIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQ6c3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZDpzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE5ZDQ3NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuNCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkOnN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQ6c3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC40IgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvQ09QWUlORy5NSVQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9DT1BZSU5HLk1JVApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlkZTM1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9DT1BZSU5HLk1JVAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLW9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi1pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi10byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi1jb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLWZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi1hbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLUlNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi1BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi1MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgotVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvUkVBRE1FIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTY1MjdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVRoaXMgUkVBRE1FIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gb24gdGhlIGNvbnRlbnRzIG9mIHRoZQote3s9bGF5ZXJfbmFtZX19IGxheWVyLgotCi1QbGVhc2Ugc2VlIHRoZSBjb3JyZXNwb25kaW5nIHNlY3Rpb25zIGJlbG93IGZvciBkZXRhaWxzLgotCi0KLURlcGVuZGVuY2llcwotPT09PT09PT09PT09Ci0KLVRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKLQotICBVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UKLSAgYnJhbmNoOiBtYXN0ZXIKLQotICBVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlCi0gIGxheWVyczogbWV0YQotICBicmFuY2g6IG1hc3RlcgotCi0gIFVSSTogZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveHh4eAotICBsYXllcnM6IHh4eHgKLSAgYnJhbmNoOiBtYXN0ZXIKLQotCi1QYXRjaGVzCi09PT09PT09Ci0KLVBsZWFzZSBzdWJtaXQgYW55IHBhdGNoZXMgYWdhaW5zdCB0aGUge3s9bGF5ZXJfbmFtZX19IGxheWVyIHRvIHRoZQoteHh4eCBtYWlsaW5nIGxpc3QgKHh4eHhAenp6ei5vcmcpIGFuZCBjYzogdGhlIG1haW50YWluZXI6Ci0KLU1haW50YWluZXI6IFhYWCBZWVlZWVkgPHh4eC55eXl5eXlAenp6enouY29tPgotCi0KLVRhYmxlIG9mIENvbnRlbnRzCi09PT09PT09PT09PT09PT09PQotCi0gIEkuIEFkZGluZyB0aGUge3s9bGF5ZXJfbmFtZX19IGxheWVyIHRvIHlvdXIgYnVpbGQKLSBJSS4gTWlzYwotCi0KLUkuIEFkZGluZyB0aGUge3s9bGF5ZXJfbmFtZX19IGxheWVyIHRvIHlvdXIgYnVpbGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotLS0tIHJlcGxhY2Ugd2l0aCBzcGVjaWZpYyBpbnN0cnVjdGlvbnMgZm9yIHRoZSB7ez1sYXllcl9uYW1lfX0gbGF5ZXIgLS0tCi0KLUluIG9yZGVyIHRvIHVzZSB0aGlzIGxheWVyLCB5b3UgbmVlZCB0byBtYWtlIHRoZSBidWlsZCBzeXN0ZW0gYXdhcmUgb2YKLWl0LgotCi1Bc3N1bWluZyB0aGUge3s9bGF5ZXJfbmFtZX19IGxheWVyIGV4aXN0cyBhdCB0aGUgdG9wLWxldmVsIG9mIHlvdXIKLXlvY3RvIGJ1aWxkIHRyZWUsIHlvdSBjYW4gYWRkIGl0IHRvIHRoZSBidWlsZCBzeXN0ZW0gYnkgYWRkaW5nIHRoZQotbG9jYXRpb24gb2YgdGhlIHt7PWxheWVyX25hbWV9fSBsYXllciB0byBiYmxheWVycy5jb25mLCBhbG9uZyB3aXRoIGFueQotb3RoZXIgbGF5ZXJzIG5lZWRlZC4gZS5nLjoKLQotICBCQkxBWUVSUyA/PSAiIFwKLSAgICAvcGF0aC90by95b2N0by9tZXRhIFwKLSAgICAvcGF0aC90by95b2N0by9tZXRhLXBva3kgXAotICAgIC9wYXRoL3RvL3lvY3RvL21ldGEteW9jdG8tYnNwIFwKLSAgICAvcGF0aC90by95b2N0by9tZXRhLXt7PWxheWVyX25hbWV9fSBcCi0gICAgIgotCi0KLUlJLiBNaXNjCi09PT09PT09PQotCi0tLS0gcmVwbGFjZSB3aXRoIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHRoZSB7ez1sYXllcl9uYW1lfX0gbGF5ZXIgLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9jb25mL2xheWVyLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZmZlMTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvY29uZi9sYXllci5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKLUJCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgotCi0jIFdlIGhhdmUgcmVjaXBlcy0qIGRpcmVjdG9yaWVzLCBhZGQgdG8gQkJGSUxFUwotQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiBcCi0JJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCIKLQotQkJGSUxFX0NPTExFQ1RJT05TICs9ICJ7ez1sYXllcl9uYW1lfX0iCi1CQkZJTEVfUEFUVEVSTl97ez1sYXllcl9uYW1lfX0gPSAiXiR7TEFZRVJESVJ9LyIKLUJCRklMRV9QUklPUklUWV97ez1sYXllcl9uYW1lfX0gPSAie3s9bGF5ZXJfcHJpb3JpdHl9fSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL2xheWVyLXF1ZXN0aW9ucy5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9sYXllci1xdWVzdGlvbnMubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmE4OWMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL2xheWVyLXF1ZXN0aW9ucy5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi17eyBpbnB1dCB0eXBlOiJlZGl0IiBuYW1lOiJsYXllcl9wcmlvcml0eSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGVudGVyIHRoZSBsYXllciBwcmlvcml0eSB5b3UnZCBsaWtlIHRvIHVzZSBmb3IgdGhlIGxheWVyOiIgZGVmYXVsdDoiNiJ9fQotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJjcmVhdGVfZXhhbXBsZV9yZWNpcGUiIHByaW86IjIwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIGhhdmUgYW4gZXhhbXBsZSByZWNpcGUgY3JlYXRlZD8gKHkvbikiIGRlZmF1bHQ6Im4ifX0KLQote3sgaWYgY3JlYXRlX2V4YW1wbGVfcmVjaXBlID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImVkaXQiIG5hbWU6ImV4YW1wbGVfcmVjaXBlX25hbWUiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBlbnRlciB0aGUgbmFtZSB5b3UnZCBsaWtlIHRvIHVzZSBmb3IgeW91ciBleGFtcGxlIHJlY2lwZToiIGRlZmF1bHQ6ImV4YW1wbGUifX0KLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToiY3JlYXRlX2V4YW1wbGVfYmJhcHBlbmQiIHByaW86IjIwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIGhhdmUgYW4gZXhhbXBsZSBiYmFwcGVuZCBmaWxlIGNyZWF0ZWQ/ICh5L24pIiBkZWZhdWx0OiJuIn19Ci0KLXt7IGlmIGNyZWF0ZV9leGFtcGxlX2JiYXBwZW5kID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImVkaXQiIG5hbWU6ImV4YW1wbGVfYmJhcHBlbmRfbmFtZSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGVudGVyIHRoZSBuYW1lIHlvdSdkIGxpa2UgdG8gdXNlIGZvciB5b3VyIGJiYXBwZW5kIGZpbGU6IiBkZWZhdWx0OiJleGFtcGxlIn19Ci0KLXt7IGlmIGNyZWF0ZV9leGFtcGxlX2JiYXBwZW5kID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImVkaXQiIG5hbWU6ImV4YW1wbGVfYmJhcHBlbmRfdmVyc2lvbiIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGVudGVyIHRoZSB2ZXJzaW9uIG51bWJlciB5b3UnZCBsaWtlIHRvIHVzZSBmb3IgeW91ciBiYmFwcGVuZCBmaWxlICh0aGlzIHNob3VsZCBtYXRjaCB0aGUgcmVjaXBlIHlvdSdyZSBhcHBlbmRpbmcgdG8pOiIgZGVmYXVsdDoiMC4xIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQubm9pbnN0YWxsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlLWJiYXBwZW5kLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU5NGU2NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7eyBpZiBjcmVhdGVfZXhhbXBsZV9iYmFwcGVuZCA9PSAieSI6IH19IHJlY2lwZXMtZXhhbXBsZS1iYmFwcGVuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlLWJiYXBwZW5kL2V4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC12ZXJzaW9uLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlLWJiYXBwZW5kL2V4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC12ZXJzaW9uLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTMxMzMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS1iYmFwcGVuZC9leGFtcGxlLWJiYXBwZW5kL2V4YW1wbGUtYmJhcHBlbmQtdmVyc2lvbi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9ZXhhbXBsZV9iYmFwcGVuZF9uYW1lfX1fe3s9ZXhhbXBsZV9iYmFwcGVuZF92ZXJzaW9ufX0uYmJhcHBlbmQKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59LSR7UFZ9OiIKLQotIwotIyBUaGlzIC5iYmFwcGVuZCBkb2Vzbid0IHlldCBkbyBhbnl0aGluZyAtIHJlcGxhY2UgdGhpcyB0ZXh0IHdpdGgKLSMgbW9kaWZpY2F0aW9ucyB0byB0aGUgZXhhbXBsZV8wLjEuYmIgcmVjaXBlLCBvciB3aGF0ZXZlciByZWNpcGUgaXQgaXMKLSMgdGhhdCB5b3Ugd2FudCB0byBtb2RpZnkgd2l0aCB0aGlzIC5iYmFwcGVuZCAobWFrZSBzdXJlIHlvdSBjaGFuZ2UKLSMgdGhlIHJlY2lwZSBuYW1lIChQTikgYW5kIHZlcnNpb24gKFBWKSB0byBtYXRjaCkuCi0jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC9leGFtcGxlLWJiYXBwZW5kLXZlcnNpb24ubm9pbnN0YWxsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlLWJiYXBwZW5kL2V4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC12ZXJzaW9uLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZkZjhhOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC9leGFtcGxlLWJiYXBwZW5kLXZlcnNpb24ubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7ez1leGFtcGxlX2JiYXBwZW5kX25hbWV9fS17ez1leGFtcGxlX2JiYXBwZW5kX3ZlcnNpb259fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlLWJiYXBwZW5kL2V4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC12ZXJzaW9uL2V4YW1wbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC9leGFtcGxlLWJiYXBwZW5kLXZlcnNpb24vZXhhbXBsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAwMGEzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC9leGFtcGxlLWJiYXBwZW5kLXZlcnNpb24vZXhhbXBsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSMKLSMgVGhpcyBpcyBhIG5vbi1mdW5jdGlvbmFsIHBsYWNlaG9sZGVyIGZpbGUsIGhlcmUgZm9yIGV4YW1wbGUgcHVycG9zZXMKLSMgb25seS4KLSMKLSMgSWYgeW91IGhhZCBhIHBhdGNoIGZvciB5b3VyIHJlY2lwZSwgeW91J2QgcHV0IGl0IGluIHRoaXMgZGlyZWN0b3J5Ci0jIGFuZCByZWZlcmVuY2UgaXQgZnJvbSB5b3VyIHJlY2lwZSdzIFNSQ19VUkk6Ci0jCi0jICBTUkNfVVJJICs9ICJmaWxlOi8vZXhhbXBsZS5wYXRjaCIKLSMKLSMgTm90ZSB0aGF0IHlvdSBjb3VsZCBhbHNvIHJlbmFtZSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBwYXRjaAotIyB0byByZW1vdmUgdGhlIHZlcnNpb24gbnVtYmVyIG9yIHNpbXBseSByZW5hbWUgaXQgJ2ZpbGVzJy4gIERvaW5nIHNvCi0jIGFsbG93cyB5b3UgdG8gdXNlIHRoZSBzYW1lIGRpcmVjdG9yeSBmb3IgbXVsdGlwbGUgcmVjaXBlcy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDA2OWIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1kaXJuYW1lIHt7IGlmIGNyZWF0ZV9leGFtcGxlX3JlY2lwZSA9PSAieSI6IH19IHJlY2lwZXMtZXhhbXBsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlL2V4YW1wbGUvZXhhbXBsZS1yZWNpcGUtMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlL2V4YW1wbGUvZXhhbXBsZS1yZWNpcGUtMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTM0ZDM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS9leGFtcGxlL2V4YW1wbGUtcmVjaXBlLTAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PWV4YW1wbGVfcmVjaXBlX25hbWV9fV8wLjEuYmIKLSMKLSMgVGhpcyBmaWxlIHdhcyBkZXJpdmVkIGZyb20gdGhlICdIZWxsbyBXb3JsZCEnIGV4YW1wbGUgcmVjaXBlIGluIHRoZQotIyBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSMKLQotU1VNTUFSWSA9ICJTaW1wbGUgaGVsbG93b3JsZCBhcHBsaWNhdGlvbiIKLVNFQ1RJT04gPSAiZXhhbXBsZXMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgotCi1TUkNfVVJJID0gImZpbGU6Ly9oZWxsb3dvcmxkLmMiCi0KLVMgPSAiJHtXT1JLRElSfSIKLQotZG9fY29tcGlsZSgpIHsKLQkgICAgICR7Q0N9ICR7TERGTEFHU30gaGVsbG93b3JsZC5jIC1vIGhlbGxvd29ybGQKLX0KLQotZG9faW5zdGFsbCgpIHsKLQkgICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCSAgICAgaW5zdGFsbCAtbSAwNzU1IGhlbGxvd29ybGQgJHtEfSR7YmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlL2V4YW1wbGUvZXhhbXBsZS1yZWNpcGUtMC4xLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS9leGFtcGxlL2V4YW1wbGUtcmVjaXBlLTAuMS5ub2luc3RhbGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzMTljMTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlL2V4YW1wbGUvZXhhbXBsZS1yZWNpcGUtMC4xLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3s9ZXhhbXBsZV9yZWNpcGVfbmFtZX19LTAuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlL2V4YW1wbGUvZXhhbXBsZS1yZWNpcGUtMC4xL2V4YW1wbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUvZXhhbXBsZS9leGFtcGxlLXJlY2lwZS0wLjEvZXhhbXBsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAwMGEzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUvZXhhbXBsZS9leGFtcGxlLXJlY2lwZS0wLjEvZXhhbXBsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSMKLSMgVGhpcyBpcyBhIG5vbi1mdW5jdGlvbmFsIHBsYWNlaG9sZGVyIGZpbGUsIGhlcmUgZm9yIGV4YW1wbGUgcHVycG9zZXMKLSMgb25seS4KLSMKLSMgSWYgeW91IGhhZCBhIHBhdGNoIGZvciB5b3VyIHJlY2lwZSwgeW91J2QgcHV0IGl0IGluIHRoaXMgZGlyZWN0b3J5Ci0jIGFuZCByZWZlcmVuY2UgaXQgZnJvbSB5b3VyIHJlY2lwZSdzIFNSQ19VUkk6Ci0jCi0jICBTUkNfVVJJICs9ICJmaWxlOi8vZXhhbXBsZS5wYXRjaCIKLSMKLSMgTm90ZSB0aGF0IHlvdSBjb3VsZCBhbHNvIHJlbmFtZSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBwYXRjaAotIyB0byByZW1vdmUgdGhlIHZlcnNpb24gbnVtYmVyIG9yIHNpbXBseSByZW5hbWUgaXQgJ2ZpbGVzJy4gIERvaW5nIHNvCi0jIGFsbG93cyB5b3UgdG8gdXNlIHRoZSBzYW1lIGRpcmVjdG9yeSBmb3IgbXVsdGlwbGUgcmVjaXBlcy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS9leGFtcGxlL2V4YW1wbGUtcmVjaXBlLTAuMS9oZWxsb3dvcmxkLmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUvZXhhbXBsZS9leGFtcGxlLXJlY2lwZS0wLjEvaGVsbG93b3JsZC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWYyZTQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS9leGFtcGxlL2V4YW1wbGUtcmVjaXBlLTAuMS9oZWxsb3dvcmxkLmMKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLSNpbmNsdWRlIDxzdGRpby5oPgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gICAgcHJpbnRmKCJIZWxsbyBXb3JsZCFcbiIpOwotCi0gICAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzLy5naXRpZ25vcmUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzLy5naXRpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy8uZ2l0aWdub3JlCisrKyAvZGV2L251bGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdkYTI1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL2NvbmYvbWFjaGluZS9tYWNoaW5lLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uY29uZgotI0BUWVBFOiBNYWNoaW5lCi0jQE5BTUU6IHt7PW1hY2hpbmV9fQotCi0jQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIHt7PW1hY2hpbmV9fSBzeXN0ZW1zCi0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzIuaW5jCi0KLU1BQ0hJTkVfRkVBVFVSRVMgPSAic2NyZWVuIGtleWJvYXJkIHBjaSB1c2Job3N0IGV4dDIgZXh0MyBzZXJpYWwiCi0KLUtFUk5FTF9JTUFHRVRZUEUgPSAidm1saW51eCIKLUtFUk5FTF9BTFRfSU1BR0VUWVBFID0gInZtbGludXguYmluIgotS0VSTkVMX0lNQUdFX1NUUklQX0VYVFJBX1NFQ1RJT05TICA9ICIuY29tbWVudCIKLQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIjogcHJlZmVycmVkX2tlcm5lbCA9ICJsaW51eC15b2N0by1jdXN0b20iIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsID0gImxpbnV4LXlvY3RvLWRldiIgfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSIgb3Iga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IiA6IH19Ci1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gInt7PXByZWZlcnJlZF9rZXJuZWx9fSIKLQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbCA9IGtlcm5lbF9jaG9pY2Uuc3BsaXQoJ18nKVswXSB9fQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbF92ZXJzaW9uID0ga2VybmVsX2Nob2ljZS5zcGxpdCgnXycpWzFdIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiB9fQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsfX0iCi1QUkVGRVJSRURfVkVSU0lPTl97ez1wcmVmZXJyZWRfa2VybmVsfX0gPz0gInt7PXByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbn19JSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToieHNlcnZlciIgcHJpbzoiNTAiIG1zZzoiRG8geW91IG5lZWQgc3VwcG9ydCBmb3IgWD8gKHkvbikiIGRlZmF1bHQ6InkiIH19Ci17eyBpZiB4c2VydmVyID09ICJ5IjogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKLVhTRVJWRVIgPz0gInhzZXJ2ZXIteG9yZyBcCi0gICAgICAgICAgICB4Zjg2LXZpZGVvLWZiZGV2IgotCi1TRVJJQUxfQ09OU09MRSA9ICIxMTUyMDAgdHR5UzAiCi1VU0VfVlQgPz0gIjAiCi0KLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAiIGtlcm5lbC1tb2R1bGVzIgotCi1JTUFHRV9GU1RZUEVTID89ICJqZmZzMiB0YXIuYnoyIgotSkZGUzJfRVJBU0VCTE9DSyA9ICIweDEwMDAwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUwZDkyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIjogfX0gZmlsZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEyODI1NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtcHJlZW1wdC1ydC5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tcHJlZW1wdC1ydC5zY2MKLWRlZmluZSBLTUFDSElORSB7ez1tYWNoaW5lfX0KLQotZGVmaW5lIEtBUkNIIG1pcHMKLQotaW5jbHVkZSB7ez1tYXBfcHJlZW1wdF9ydF9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19Ci17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNGYzZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MKLWRlZmluZSBLTUFDSElORSB7ez1tYWNoaW5lfX0KLQotZGVmaW5lIEtBUkNIIG1pcHMKLQotaW5jbHVkZSB7ez1tYXBfc3RhbmRhcmRfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fSBub3BhdGNoCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGYzOTViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS10aW55LnNjYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS10aW55LnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggbWlwcwotCi1pbmNsdWRlIHt7PW1hcF90aW55X2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpfX0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItY29uZmlnLmNmZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0ODllNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWJlMjZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3Zjc0N2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZTQ3NjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LmNmZwotQ09ORklHX01JUFM9eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MmZkYzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LnNjYwota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LmNmZwotCi1pbmNsdWRlIGNmZy91c2ItbWFzcy1zdG9yYWdlLnNjYwotaW5jbHVkZSBjZmcvZnMvdmZhdC5zY2MKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE3ZjBlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIjogfX0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InVzZV9kZWZhdWx0X2tlcm5lbCIgcHJpbzoiMTAiIG1zZzoiV291bGQgeW91IGxpa2UgdG8gdXNlIHRoZSBkZWZhdWx0ICg0LjEyKSBrZXJuZWw/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIHVzZV9kZWZhdWx0X2tlcm5lbCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJrZXJuZWxfY2hvaWNlIiBnZW46ImJzcC5rZXJuZWwua2VybmVscyIgcHJpbzoiMTAiIG1zZzoiUGxlYXNlIGNob29zZSB0aGUga2VybmVsIHRvIHVzZSBpbiB0aGlzIEJTUDoiIGRlZmF1bHQ6ImxpbnV4LXlvY3RvXzQuMTIifX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZWQyNzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiV291bGQgeW91IGxpa2UgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWU5NDNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEwIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjNlMTA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEyIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJkMTgxNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjQiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC40IgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmJlY2I1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTAiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NzRjOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xMiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MDljNzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjQiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuNCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC8uZ2l0aWdub3JlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0Ly5naXRpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0Ly5naXRpZ25vcmUKKysrIC9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L2NvbmYvbWFjaGluZS9tYWNoaW5lLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThlZWEyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5jb25mCi0jQFRZUEU6IE1hY2hpbmUKLSNATkFNRToge3s9bWFjaGluZX19Ci0KLSNAREVTQ1JJUFRJT046IE1hY2hpbmUgY29uZmlndXJhdGlvbiBmb3Ige3s9bWFjaGluZX19IHN5c3RlbXMKLQotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHM2NC5pbmMKLQotTUFDSElORV9GRUFUVVJFUyA9ICJwY2kgZXh0MiBleHQzIHNlcmlhbCIKLQotS0VSTkVMX0lNQUdFVFlQRSA9ICJ2bWxpbnV4IgotS0VSTkVMX0FMVF9JTUFHRVRZUEUgPSAidm1saW51eC5iaW4iCi1LRVJORUxfSU1BR0VfU1RSSVBfRVhUUkFfU0VDVElPTlMgID0gIi5jb21tZW50IgotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iOiBwcmVmZXJyZWRfa2VybmVsID0gImxpbnV4LXlvY3RvLWN1c3RvbSIgfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLWRldiI6IHByZWZlcnJlZF9rZXJuZWwgPSAibGludXgteW9jdG8tZGV2IiB9fQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIiBvciBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiIDogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAie3s9cHJlZmVycmVkX2tlcm5lbH19IgotCi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsID0ga2VybmVsX2Nob2ljZS5zcGxpdCgnXycpWzBdIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsX3ZlcnNpb24gPSBrZXJuZWxfY2hvaWNlLnNwbGl0KCdfJylbMV0gfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIGtlcm5lbF9jaG9pY2UgIT0gImxpbnV4LXlvY3RvLWRldiI6IH19Ci1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gInt7PXByZWZlcnJlZF9rZXJuZWx9fSIKLVBSRUZFUlJFRF9WRVJTSU9OX3t7PXByZWZlcnJlZF9rZXJuZWx9fSA/PSAie3s9cHJlZmVycmVkX2tlcm5lbF92ZXJzaW9ufX0lIgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ4c2VydmVyIiBwcmlvOiI1MCIgbXNnOiJEbyB5b3UgbmVlZCBzdXBwb3J0IGZvciBYPyAoeS9uKSIgZGVmYXVsdDoieSIgfX0KLXt7IGlmIHhzZXJ2ZXIgPT0gInkiOiB9fQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA/PSAieHNlcnZlci14b3JnIgotWFNFUlZFUiA/PSAieHNlcnZlci14b3JnIFwKLSAgICAgICAgICAgIHhmODYtdmlkZW8tZmJkZXYiCi0KLVNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlTMCIKLVVTRV9WVCA/PSAiMCIKLQotTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICIga2VybmVsLW1vZHVsZXMiCi0KLUlNQUdFX0ZTVFlQRVMgPz0gImpmZnMyIHRhci5iejIiCi1KRkZTMl9FUkFTRUJMT0NLID0gIjB4MTAwMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUwZDkyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fSBmaWxlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtcHJlZW1wdC1ydC5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEyODI1NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS1wcmVlbXB0LXJ0LnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggbWlwcwotCi1pbmNsdWRlIHt7PW1hcF9wcmVlbXB0X3J0X2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpfX0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNGYzZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtc3RhbmRhcmQuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggbWlwcwotCi1pbmNsdWRlIHt7PW1hcF9zdGFuZGFyZF9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19IG5vcGF0Y2gKLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS10aW55LnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGYzOTViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXRpbnkuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCBtaXBzCi0KLWluY2x1ZGUge3s9bWFwX3Rpbnlfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci1kZWZpbmUgS1RZUEUge3s9bmV3X2ticmFuY2h9fQotYnJhbmNoIHt7PW1hY2hpbmV9fQotCi1pbmNsdWRlIHt7PW1hY2hpbmV9fS5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItY29uZmlnLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItY29uZmlnLmNmZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjllZmRjYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODViZTI2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzU5ZGFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNjOTA2Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uY2ZnCi0jU09DCi1DT05GSUdfQ0FWSVVNX09DVEVPTl9TT0M9eQotQ09ORklHX0NBVklVTV9DTjYzWFhQMT15Ci1DT05GSUdfQ0FWSVVNX09DVEVPTl9DVk1TRUdfU0laRT0yCi0KLSNLZXJuZWwKLUNPTkZJR19TTVA9eQotQ09ORklHX05SX0NQVVM9MzIKLSNFeGVjdXRhYmxlIGZpbGUgZm9ybWF0cwotQ09ORklHX01JUFMzMl9DT01QQVQ9eQotQ09ORklHX01JUFMzMl9PMzI9eQotQ09ORklHX01JUFMzMl9OMzI9eQotCi0KLSNQQ0kKLUNPTkZJR19QQ0k9eQotQ09ORklHX1BDSV9NU0k9eQotCi0jSTJDCi1DT05GSUdfSTJDPXkKLUNPTkZJR19JMkNfT0NURU9OPXkKLQotQ09ORklHX0hXX1JBTkRPTV9PQ1RFT049eQotCi0jU1BJCi1DT05GSUdfU1BJPXkKLUNPTkZJR19TUElfT0NURU9OPXkKLQotI01pc2MKLUNPTkZJR19FRVBST01fQVQyND15Ci1DT05GSUdfRUVQUk9NX0FUMjU9eQotQ09ORklHX09DVEVPTl9XRFQ9eQotCi1DT05GSUdfU1RBR0lORz15Ci0KLSNFdGhlcm5ldAotQ09ORklHX09DVEVPTl9FVEhFUk5FVD15Ci1DT05GSUdfT0NURU9OX01HTVRfRVRIRVJORVQ9eQotQ09ORklHX01ESU9fT0NURU9OPXkKLQotI1BIWQotQ09ORklHX01BUlZFTExfUEhZPXkKLUNPTkZJR19CUk9BRENPTV9QSFk9eQotQ09ORklHX0JDTTg3WFhfUEhZPXkKLQotCi0jVVNCCi1DT05GSUdfVVNCPXkKLUNPTkZJR19PQ1RFT05fVVNCPXkKLUNPTkZJR19VU0JfT0NURU9OX0VIQ0k9eQotQ09ORklHX1VTQl9PQ1RFT05fT0hDST15Ci1DT05GSUdfVVNCX09DVEVPTjJfQ09NTU9OPXkKLQotQ09ORklHX01URD15Ci1DT05GSUdfTVREX0JMT0NLPXkKLUNPTkZJR19NVERfQ0ZJPXkKLUNPTkZJR19NVERfQ0ZJX0FNRFNURD15Ci1DT05GSUdfTVREX0NNRExJTkVfUEFSVFM9eQotCi1DT05GSUdfU0VSSUFMXzgyNTA9eQotQ09ORklHX1NFUklBTF84MjUwX0NPTlNPTEU9eQotQ09ORklHX1NFUklBTF84MjUwX05SX1VBUlRTPTIKLUNPTkZJR19TRVJJQUxfODI1MF9SVU5USU1FX1VBUlRTPTIKLUNPTkZJR19TRVJJQUxfODI1MF9EVz15Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkyZmRjOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5zY2MKLWtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS5jZmcKLQotaW5jbHVkZSBjZmcvdXNiLW1hc3Mtc3RvcmFnZS5zY2MKLWluY2x1ZGUgY2ZnL2ZzL3ZmYXQuc2NjCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTdmMGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMikga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQotCi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCB1c2VfZGVmYXVsdF9rZXJuZWwgPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJlZDI3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZTk0M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmM2UxMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmQxODE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuNCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzNmE5NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEwIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvZWRnZXJvdXRlciIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9lZGdlcm91dGVyIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMzM2MzMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTIiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9lZGdlcm91dGVyIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2VkZ2Vyb3V0ZXIiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QxODU2Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvZWRnZXJvdXRlciIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9lZGdlcm91dGVyIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjQiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjLy5naXRpZ25vcmUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjLy5naXRpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy8uZ2l0aWdub3JlCisrKyAvZGV2L251bGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzUyYjk3Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL2NvbmYvbWFjaGluZS9tYWNoaW5lLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uY29uZgotI0BUWVBFOiBNYWNoaW5lCi0jQE5BTUU6IHt7PW1hY2hpbmV9fQotCi0jQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIHt7PW1hY2hpbmV9fSBzeXN0ZW1zCi0KLVRBUkdFVF9GUFUgPSAiIgotCi17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJ0dW5lZmlsZSIgcHJpbzoiNDAiIG1zZzoiV2hpY2ggbWFjaGluZSB0dW5pbmcgd291bGQgeW91IGxpa2UgdG8gdXNlPyIgZGVmYXVsdDoidHVuZV9wcGNlMzAwYzMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9wcGM0NzYiIG1zZzoicHBjNDc2IHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfcHBjNjAzZSIgbXNnOiJwcGM2MDNlIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfcHBjNzQwMCIgbXNnOiJwcGM3NDAwIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfcHBjZTMwMGMyIiBtc2c6InBwY2UzMDBjMiB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX3BwY2UzMDBjMyIgbXNnOiJwcGNlMzAwYzMgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9wcGNlNTAwIiBtc2c6InBwY2U1MDAgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9wcGNlNTAwbWMiIG1zZzoicHBjZTUwMG1jIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfcHBjZTUwMHYyIiBtc2c6InBwY2U1MDB2MiB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX3BwY2U1NTAwIiBtc2c6InBwY2U1NTAwIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfcHBjZTY1MDAiIG1zZzoicHBjZTY1MDAgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9wb3dlcjUiIG1zZzoicG93ZXI1IHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfcG93ZXI2IiBtc2c6InBvd2VyNiB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX3Bvd2VyNyIgbXNnOiJwb3dlcjcgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9wcGM0NzYiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwYzQ3Ni5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX3BwYzYwM2UiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwYzYwM2UuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9wcGM3NDAwIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGM3NDAwLmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfcHBjZTMwMGMyIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlMzAwYzIuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9wcGNlMzAwYzMiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2UzMDBjMy5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX3BwY2U1MDAiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDAuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9wcGNlNTAwbWMiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDBtYy5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX3BwY2U1MDB2MiI6IH19Ci1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTUwMHYyLmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfcHBjZTU1MDAiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1NTAwLmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfcHBjZTY1MDAiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U2NTAwLmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfcG93ZXI1IjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjUuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9wb3dlcjYiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyNi5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX3Bvd2VyNyI6IH19Ci1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI3LmluYwotCi1LRVJORUxfSU1BR0VUWVBFID0gInVJbWFnZSIKLQotRVhUUkFfSU1BR0VERVBFTkRTICs9ICJ1LWJvb3QiCi1VQk9PVF9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJNUEM4MzE1RVJEQl9jb25maWciCi0KLVNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlTMCIKLQotTUFDSElORV9GRUFUVVJFUyA9ICJrZXlib2FyZCBwY2kgZXh0MiBleHQzIHNlcmlhbCIKLQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIjogcHJlZmVycmVkX2tlcm5lbCA9ICJsaW51eC15b2N0by1jdXN0b20iIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsID0gImxpbnV4LXlvY3RvLWRldiIgfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSIgb3Iga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IiA6IH19Ci1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gInt7PXByZWZlcnJlZF9rZXJuZWx9fSIKLQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbCA9IGtlcm5lbF9jaG9pY2Uuc3BsaXQoJ18nKVswXSB9fQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbF92ZXJzaW9uID0ga2VybmVsX2Nob2ljZS5zcGxpdCgnXycpWzFdIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiB9fQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsfX0iCi1QUkVGRVJSRURfVkVSU0lPTl97ez1wcmVmZXJyZWRfa2VybmVsfX0gPz0gInt7PXByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbn19JSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToieHNlcnZlciIgcHJpbzoiNTAiIG1zZzoiRG8geW91IG5lZWQgc3VwcG9ydCBmb3IgWD8gKHkvbikiIGRlZmF1bHQ6InkiIH19Ci17eyBpZiB4c2VydmVyID09ICJ5IjogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKLVhTRVJWRVIgPz0gInhzZXJ2ZXIteG9yZyBcCi0gICAgICAgICAgIHhmODYtdmlkZW8tZmJkZXYiCi0KLVBSRUZFUlJFRF9WRVJTSU9OX3UtYm9vdCA/PSAidjIwMTYuMDElIgote3sgaW5wdXQgdHlwZToiZWRpdCIgbmFtZToidWJvb3RfZW50cnlwb2ludCIgcHJpbzoiNDAiIG1zZzoiUGxlYXNlIHNwZWNpZnkgYSB2YWx1ZSBmb3IgVUJPT1RfRU5UUllQT0lOVDoiIGRlZmF1bHQ6IjB4MDAwMDAwMDAiIH19Ci1VQk9PVF9FTlRSWVBPSU5UID0gInt7PXVib290X2VudHJ5cG9pbnR9fSIKLQote3sgaW5wdXQgdHlwZToiZWRpdCIgbmFtZToia2VybmVsX2RldmljZXRyZWUiIHByaW86IjQwIiBtc2c6IlBsZWFzZSBzcGVjaWZ5IGEgW2FyY2gvcG93ZXJwYy9ib290L2R0cy94eHhdIHZhbHVlIGZvciBLRVJORUxfREVWSUNFVFJFRToiIGRlZmF1bHQ6Im1wYzgzMTVlcmRiLmR0cyIgfX0KLUtFUk5FTF9ERVZJQ0VUUkVFID0gIiR7U30vYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL3t7PWtlcm5lbF9kZXZpY2V0cmVlfX0iCi0KLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAiIGtlcm5lbC1tb2R1bGVzIgotCi1JTUFHRV9GU1RZUEVTID89ICJqZmZzMiB0YXIuYnoyIgotSkZGUzJfRVJBU0VCTE9DSyA9ICIweDQwMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTBkOTJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fSBmaWxlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXByZWVtcHQtcnQuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXByZWVtcHQtcnQuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWNjZmI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS1wcmVlbXB0LXJ0LnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggcG93ZXJwYwotCi1pbmNsdWRlIHt7PW1hcF9wcmVlbXB0X3J0X2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpfX0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtc3RhbmRhcmQuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE2NmZjZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtc3RhbmRhcmQuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggcG93ZXJwYwotCi1pbmNsdWRlIHt7PW1hcF9zdGFuZGFyZF9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19IG5vcGF0Y2gKLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdGlueS5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdGlueS5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MDFmZDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXRpbnkuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCBwb3dlcnBjCi0KLWluY2x1ZGUge3s9bWFwX3Rpbnlfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci1kZWZpbmUgS1RZUEUge3s9bmV3X2ticmFuY2h9fQotYnJhbmNoIHt7PW1hY2hpbmV9fQotCi1pbmNsdWRlIHt7PW1hY2hpbmV9fS5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzQ4OWU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4Mjc1OWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1wYXRjaGVzLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2Y3NDdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YmZlMWZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LmNmZwotLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdBUk5JTkcKLS4KLS4gVGhpcyBmaWxlIGlzIGEga2VybmVsIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQsIGFuZCBub3QgYSBmdWxsIGtlcm5lbAotLiBjb25maWd1cmF0aW9uIGZpbGUuICBUaGUgZmluYWwga2VybmVsIGNvbmZpZ3VyYXRpb24gaXMgbWFkZSB1cCBvZgotLiBhbiBhc3NlbWJseSBvZiBwcm9jZXNzZWQgZnJhZ21lbnRzLCBlYWNoIG9mIHdoaWNoIGlzIGRlc2lnbmVkIHRvCi0uIGNhcHR1cmUgYSBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uIChlLmcuIHBsYXRmb3JtCi0uIGNvbmZpZ3VyYXRpb24sIGZlYXR1cmUgY29uZmlndXJhdGlvbiwgYW5kIGJvYXJkIHNwZWNpZmljIGhhcmR3YXJlCi0uIGNvbmZpZ3VyYXRpb24pLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24ga2VybmVsIGNvbmZpZ3VyYXRpb24sIHBsZWFzZQotLiBjb25zdWx0IHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24uCi0uCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotQ09ORklHX1BQQzMyPXkKLUNPTkZJR19QUENfT0Y9eQotQ09ORklHX1BQQ19VREJHXzE2NTUwPXkKLQotIwotIyBQcm9jZXNzb3Igc3VwcG9ydAotIwotQ09ORklHX1BQQ184M3h4PXkKLQotIwotIyBQbGF0Zm9ybSBzdXBwb3J0Ci0jCi1DT05GSUdfTVBDODMxeF9SREI9eQotIyBDT05GSUdfUFBDX0NIUlAgaXMgbm90IHNldAotIyBDT05GSUdfUFBDX1BNQUMgaXMgbm90IHNldAotCi0jCi0jIEJ1cyBvcHRpb25zCi0jCi1DT05GSUdfUENJPXkKLQotIwotIyBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCi0jCi1DT05GSUdfTVREPXkKLUNPTkZJR19NVERfUEFSVElUSU9OUz15Ci1DT05GSUdfTVREX0NNRExJTkVfUEFSVFM9eQotQ09ORklHX01URF9PRl9QQVJUUz15Ci0KLSMKLSMgVXNlciBNb2R1bGVzIEFuZCBUcmFuc2xhdGlvbiBMYXllcnMKLSMKLUNPTkZJR19NVERfQ0hBUj15Ci1DT05GSUdfTVREX0JMT0NLPXkKLQotIwotIyBSQU0vUk9NL0ZsYXNoIGNoaXAgZHJpdmVycwotIwotQ09ORklHX01URF9DRkk9eQotQ09ORklHX01URF9DRklfQU1EU1REPXkKLQotIwotIyBNYXBwaW5nIGRyaXZlcnMgZm9yIGNoaXAgYWNjZXNzCi0jCi1DT05GSUdfTVREX1BIWVNNQVBfT0Y9eQotCi0jCi0jIE5BTkQgRmxhc2ggRGV2aWNlIERyaXZlcnMKLSMKLUNPTkZJR19NVERfTkFORD15Ci0KLSMKLSMgRXRoZXJuZXQgKDEwMDAgTWJpdCkKLSMKLUNPTkZJR19HSUFORkFSPXkKLQotIwotIyBTZXJpYWwgZHJpdmVycwotIwotQ09ORklHX1NFUklBTF84MjUwPXkKLUNPTkZJR19TRVJJQUxfODI1MF9DT05TT0xFPXkKLUNPTkZJR19TRVJJQUxfODI1MF9OUl9VQVJUUz0yCi0KLSMKLSMgV2F0Y2hkb2cgRGV2aWNlIERyaXZlcnMKLSMKLUNPTkZJR184eHh4X1dEVD15Ci0KLSMKLSMgSTJDIHN1cHBvcnQKLSMKLUNPTkZJR19JMkM9eQotQ09ORklHX0kyQ19DSEFSREVWPXkKLQotIwotIyBJMkMgSGFyZHdhcmUgQnVzIHN1cHBvcnQKLSMKLUNPTkZJR19JMkNfTVBDPXkKLQotQ09ORklHX1NFTlNPUlNfTE03NT15Ci0KLUNPTkZJR19NSVNDX0RFVklDRVM9eQotCi0jCi0jIE1pc2NlbGxhbmVvdXMgSTJDIENoaXAgc3VwcG9ydAotIwotQ09ORklHX0VFUFJPTV9BVDI0PXkKLQotIwotIyBTUEkgc3VwcG9ydAotIwotQ09ORklHX1NQST15Ci0jIENPTkZJR19TUElfREVCVUcgaXMgbm90IHNldAotQ09ORklHX1NQSV9NQVNURVI9eQotCi0jCi0jIFNQSSBNYXN0ZXIgQ29udHJvbGxlciBEcml2ZXJzCi0jCi1DT05GSUdfU1BJX01QQzh4eHg9eQotCi0jCi0jIFNQSSBQcm90b2NvbCBNYXN0ZXJzCi0jCi1DT05GSUdfSFdNT049eQotCi0jCi0jIFNDU0kgZGV2aWNlIHN1cHBvcnQKLSMKLUNPTkZJR19TQ1NJPXkKLUNPTkZJR19CTEtfREVWX1NEPXkKLUNPTkZJR19DSFJfREVWX1NHPXkKLUNPTkZJR19TQ1NJX0xPR0dJTkc9eQotCi1DT05GSUdfQVRBPXkKLUNPTkZJR19BVEFfVkVSQk9TRV9FUlJPUj15Ci1DT05GSUdfU0FUQV9GU0w9eQotQ09ORklHX0FUQV9TRkY9eQotCi0jCi0jIFVTQiBzdXBwb3J0Ci0jCi1DT05GSUdfVVNCPW0KLUNPTkZJR19VU0JfREVWSUNFRlM9eQotCi0jCi0jIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycwotIwotQ09ORklHX1VTQl9FSENJX0hDRD1tCi1DT05GSUdfVVNCX0VIQ0lfRlNMPXkKLUNPTkZJR19VU0JfU1RPUkFHRT1tCi0KLSMKLSMgUmVhbCBUaW1lIENsb2NrCi0jCi1DT05GSUdfUlRDX0NMQVNTPXkKLQotIwotIyBJMkMgUlRDIGRyaXZlcnMKLSMKLUNPTkZJR19SVENfRFJWX0RTMTMwNz15Ci0KLUNPTkZJR19LR0RCXzgyNTA9bQotCi1DT05GSUdfQ1JZUFRPX0RFVl9UQUxJVE9TPW0KLQotQ09ORklHX0ZTTF9ETUE9eQotCi1DT05GSUdfTU1DPXkKLUNPTkZJR19NTUNfU1BJPW0KLQotQ09ORklHX1VTQl9GU0xfTVBIX0RSX09GPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWJiOTdlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5zY2MKLWtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS5jZmcKLQotaW5jbHVkZSBjZmcvdXNiLW1hc3Mtc3RvcmFnZS5zY2MKLWluY2x1ZGUgY2ZnL2ZzL3ZmYXQuc2NjCi0KLWluY2x1ZGUgY2ZnL2RtYWVuZ2luZS5zY2MKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE3ZjBlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIjogfX0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InVzZV9kZWZhdWx0X2tlcm5lbCIgcHJpbzoiMTAiIG1zZzoiV291bGQgeW91IGxpa2UgdG8gdXNlIHRoZSBkZWZhdWx0ICg0LjEyKSBrZXJuZWw/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIHVzZV9kZWZhdWx0X2tlcm5lbCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJrZXJuZWxfY2hvaWNlIiBnZW46ImJzcC5rZXJuZWwua2VybmVscyIgcHJpbzoiMTAiIG1zZzoiUGxlYXNlIGNob29zZSB0aGUga2VybmVsIHRvIHVzZSBpbiB0aGlzIEJTUDoiIGRlZmF1bHQ6ImxpbnV4LXlvY3RvXzQuMTIifX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZWQyNzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiV291bGQgeW91IGxpa2UgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWU5NDNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEwIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjNlMTA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEyIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJkMTgxNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjQiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC40IgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmJlY2I1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTAiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NzRjOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xMiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MDljNzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjQiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuNCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE4ODg1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L2NvbmYvbWFjaGluZS9tYWNoaW5lLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uY29uZgotI0BUWVBFOiBNYWNoaW5lCi0jQE5BTUU6IHt7PW1hY2hpbmV9fQotCi0jQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIHt7PW1hY2hpbmV9fSBzeXN0ZW1zCi0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSI6IHByZWZlcnJlZF9rZXJuZWwgPSAibGludXgteW9jdG8tY3VzdG9tIiB9fQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbCA9ICJsaW51eC15b2N0by1kZXYiIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIG9yIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLWRldiIgOiB9fQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsfX0iCi0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIGtlcm5lbF9jaG9pY2UgIT0gImxpbnV4LXlvY3RvLWRldiI6IHByZWZlcnJlZF9rZXJuZWwgPSBrZXJuZWxfY2hvaWNlLnNwbGl0KCdfJylbMF0gfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIGtlcm5lbF9jaG9pY2UgIT0gImxpbnV4LXlvY3RvLWRldiI6IHByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbiA9IGtlcm5lbF9jaG9pY2Uuc3BsaXQoJ18nKVsxXSB9fQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAie3s9cHJlZmVycmVkX2tlcm5lbH19IgotUFJFRkVSUkVEX1ZFUlNJT05fe3s9cHJlZmVycmVkX2tlcm5lbH19ID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsX3ZlcnNpb259fSUiCi0KLXt7IGlmIHFlbXVhcmNoID09ICJpMzg2IiBvciBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmdsID89ICJtZXNhIgotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliZ2xlczEgPz0gIm1lc2EiCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJnbGVzMiA/PSAibWVzYSIKLQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToicWVtdWFyY2giIHByaW86IjUiIG1zZzoiV2hpY2ggcWVtdSBhcmNoaXRlY3R1cmUgd291bGQgeW91IGxpa2UgdG8gdXNlPyIgZGVmYXVsdDoiaTM4NiIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJpMzg2IiBtc2c6ImkzODYgICAgKDMyLWJpdCkiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieDg2XzY0IiBtc2c6Ing4Nl82NCAgKDY0LWJpdCkiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoiYXJtIiBtc2c6IkFSTSAgICAgKDMyLWJpdCkiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoicG93ZXJwYyIgbXNnOiJQb3dlclBDICgzMi1iaXQpIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6Im1pcHMiIG1zZzoiTUlQUyAgICAoMzItYml0KSIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJtaXBzNjQiIG1zZzoiTUlQUzY0ICAoNjQtYml0KSIgfX0KLXt7IGlmIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pNTg2LmluYwote3sgaWYgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Ci1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCi1ERUZBVUxUVFVORSA/PSAiY29yZTItNjQiCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCi17eyBpZiBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm05MjZlanMuaW5jCi17eyBpZiBxZW11YXJjaCA9PSAicG93ZXJwYyI6IH19Ci1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNzQwMC5pbmMKLXt7IGlmIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzIuaW5jCi17eyBpZiBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzNjQuaW5jCi0KLXt7IGlmIHFlbXVhcmNoID09ICJpMzg2IiBvciBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLU1BQ0hJTkVfRkVBVFVSRVMgKz0gIng4NiIKLUtFUk5FTF9JTUFHRVRZUEUgPSAiYnpJbWFnZSIKLVNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlTMCIKLVhTRVJWRVIgPSAieHNlcnZlci14b3JnIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnbWVzYS1kcml2ZXItc3dyYXN0JywgJycsIGQpfSBcCi0gICAgICAgICAgIHhmODYtdmlkZW8tdm13YXJlIgotCi17eyBpZiBxZW11YXJjaCA9PSAiYXJtIjogfX0KLUtFUk5FTF9JTUFHRVRZUEUgPSAiekltYWdlIgotU0VSSUFMX0NPTlNPTEUgPSAiMTE1MjAwIHR0eUFNQTAiCi0KLXt7IGlmIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLUtFUk5FTF9JTUFHRVRZUEUgPSAidm1saW51eCIKLVNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlTMCIKLQote3sgaWYgcWVtdWFyY2ggPT0gIm1pcHMiIG9yIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQotS0VSTkVMX0lNQUdFVFlQRSA9ICJ2bWxpbnV4IgotS0VSTkVMX0FMVF9JTUFHRVRZUEUgPSAidm1saW51eC5iaW4iCi1TRVJJQUxfQ09OU09MRSA9ICIxMTUyMDAgdHR5UzAiCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gIiBrZXJuZWwtbW9kdWxlcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1jb3JlL2luaXQtaWZ1cGRvd24vaW5pdC1pZnVwZG93bi9tYWNoaW5lLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1jb3JlL2luaXQtaWZ1cGRvd24vaW5pdC1pZnVwZG93bi9tYWNoaW5lLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ0MmQwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMtY29yZS9pbml0LWlmdXBkb3duL2luaXQtaWZ1cGRvd24vbWFjaGluZS5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1kaXJuYW1lIHt7PW1hY2hpbmV9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bi9pbml0LWlmdXBkb3duL21hY2hpbmUvaW50ZXJmYWNlcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1jb3JlL2luaXQtaWZ1cGRvd24vaW5pdC1pZnVwZG93bi9tYWNoaW5lL2ludGVyZmFjZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2OTY3NzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bi9pbml0LWlmdXBkb3duL21hY2hpbmUvaW50ZXJmYWNlcworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotIyAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcyAtLSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIGlmdXAoOCksIGlmZG93big4KQotIAotIyBUaGUgbG9vcGJhY2sgaW50ZXJmYWNlCi1hdXRvIGxvCi1pZmFjZSBsbyBpbmV0IGxvb3BiYWNrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMtY29yZS9pbml0LWlmdXBkb3duL2luaXQtaWZ1cGRvd25fMS4wLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bi9pbml0LWlmdXBkb3duXzEuMC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJkOTkxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMtY29yZS9pbml0LWlmdXBkb3duL2luaXQtaWZ1cGRvd25fMS4wLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUubm9pbnN0YWxsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDQyZDAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3s9bWFjaGluZX19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvbWFjaGluZS94b3JnLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvbWFjaGluZS94b3JnLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiZGRlNzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUveG9yZy5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotCi1TZWN0aW9uICJGaWxlcyIKLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiSW5wdXREZXZpY2UiCi0gICAgSWRlbnRpZmllciAgICAiR2VuZXJpYyBLZXlib2FyZCIKLSAgICBEcml2ZXIgICAgICAgICJldmRldiIKLSAgICBPcHRpb24gICAgICAgICJDb3JlS2V5Ym9hcmQiCi0gICAgT3B0aW9uICAgICAgICAiRGV2aWNlIiAgICAgICIvZGV2L2lucHV0L2J5LXBhdGgvcGxhdGZvcm0taTgwNDItc2VyaW8tMC1ldmVudC1rYmQiCi0gICAgT3B0aW9uICAgICAgICAiWGtiUnVsZXMiICAgICJ4b3JnIgotICAgIE9wdGlvbiAgICAgICAgIlhrYk1vZGVsIiAgICAiZXZkZXYiCi0gICAgT3B0aW9uICAgICAgICAiWGtiTGF5b3V0IiAgICAidXMiCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIklucHV0RGV2aWNlIgotICAgIElkZW50aWZpZXIgICAgIkNvbmZpZ3VyZWQgTW91c2UiCi17eyBpZiBxZW11YXJjaCA9PSAiYXJtIiBvciBxZW11YXJjaCA9PSAicG93ZXJwYyIgb3IgcWVtdWFyY2ggPT0gIm1pcHMiIG9yIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQotICAgIERyaXZlciAgICAgICAgIm1vdXNlIgote3sgaWYgcWVtdWFyY2ggPT0gImkzODYiIG9yIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQotICAgIERyaXZlciAgICAgICAgInZtbW91c2UiCi0KLSAgICBPcHRpb24gICAgICAgICJDb3JlUG9pbnRlciIKLSAgICBPcHRpb24gICAgICAgICJEZXZpY2UiICAgICAgICAiL2Rldi9pbnB1dC9taWNlIgotICAgIE9wdGlvbiAgICAgICAgIlByb3RvY29sIiAgICAgICAgIkltUFMvMiIKLSAgICBPcHRpb24gICAgICAgICJaQXhpc01hcHBpbmciICAgICAgICAiNCA1IgotICAgIE9wdGlvbiAgICAgICAgIkVtdWxhdGUzQnV0dG9ucyIgICAgInRydWUiCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIklucHV0RGV2aWNlIgotICAgIElkZW50aWZpZXIgICAgIlFlbXUgVGFibGV0IgotICAgIERyaXZlciAgICAgICAgImV2ZGV2IgotICAgIE9wdGlvbiAgICAgICAgIkNvcmVQb2ludGVyIgotICAgIE9wdGlvbiAgICAgICAgIkRldmljZSIgICAgICAgICIvZGV2L2lucHV0L3RvdWNoc2NyZWVuMCIKLSAgICBPcHRpb24gICAgICAgICJVU0IiICAgICAgICAgICAib24iCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIkRldmljZSIKLSAgICBJZGVudGlmaWVyICAgICJHcmFwaGljcyBDb250cm9sbGVyIgote3sgaWYgcWVtdWFyY2ggPT0gImFybSIgb3IgcWVtdWFyY2ggPT0gInBvd2VycGMiIG9yIHFlbXVhcmNoID09ICJtaXBzIiBvciBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLSAgICBEcml2ZXIgICAgICAgICJmYmRldiIKLXt7IGlmIHFlbXVhcmNoID09ICJpMzg2IiBvciBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLSAgICBEcml2ZXIgICAgICAgICJ2bXdhcmUiCi0KLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiTW9uaXRvciIKLSAgICBJZGVudGlmaWVyICAgICJHZW5lcmljIE1vbml0b3IiCi0gICAgT3B0aW9uICAgICAgICAiRFBNUyIKLSAgICAjIDEwMjR4NjAwIDU5Ljg1IEh6IChDVlQpIGhzeW5jOiAzNy4zNSBrSHo7IHBjbGs6IDQ5LjAwIE1IegotICAgIE1vZGVsaW5lICIxMDI0eDYwMF82MC4wMCIgICA0OS4wMCAgMTAyNCAxMDcyIDExNjggMTMxMiAgNjAwIDYwMyA2MTMgNjI0IC1oc3luYyArdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA2MEh6IChJbmR1c3RyeSBzdGFuZGFyZCkgaHN5bmM6IDMxLjVrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMjUuMiAgNjQwICA2NTYgIDc1MiAgODAwICAgIDQ4MCAgNDkwICA0OTIgIDUyNSAtaHN5bmMgLXZzeW5jCi0gICAgIyA2NDB4NDgwIEAgNzJIeiAoVkVTQSkgaHN5bmM6IDM3LjlrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMzEuNSAgNjQwICA2NjQgIDcwNCAgODMyICAgIDQ4MCAgNDg5ICA0OTEgIDUyMCAtaHN5bmMgLXZzeW5jCi0gICAgIyA2NDB4NDgwIEAgNzVIeiAoVkVTQSkgaHN5bmM6IDM3LjVrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMzEuNSAgNjQwICA2NTYgIDcyMCAgODQwICAgIDQ4MCAgNDgxICA0ODQgIDUwMCAtaHN5bmMgLXZzeW5jCi0gICAgIyA2NDB4NDgwIEAgODVIeiAoVkVTQSkgaHN5bmM6IDQzLjNrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMzYuMCAgNjQwICA2OTYgIDc1MiAgODMyICAgIDQ4MCAgNDgxICA0ODQgIDUwOSAtaHN5bmMgLXZzeW5jCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIlNjcmVlbiIKLSAgICBJZGVudGlmaWVyICAgICJEZWZhdWx0IFNjcmVlbiIKLSAgICBEZXZpY2UgICAgICAgICJHcmFwaGljcyBDb250cm9sbGVyIgotICAgIE1vbml0b3IgICAgICAgICJHZW5lcmljIE1vbml0b3IiCi0gICAgU3ViU2VjdGlvbiAiRGlzcGxheSIKLSAgICAgICAgTW9kZXMgICAgICI2NDB4NDgwIgotICAgIEVuZFN1YlNlY3Rpb24KLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiU2VydmVyTGF5b3V0IgotICAgIElkZW50aWZpZXIgICAgIkRlZmF1bHQgTGF5b3V0IgotICAgIFNjcmVlbiAgICAgICAgIkRlZmF1bHQgU2NyZWVuIgotICAgIElucHV0RGV2aWNlICAgICJHZW5lcmljIEtleWJvYXJkIgotICAgICMgSW5wdXREZXZpY2UgICAgIkNvbmZpZ3VyZWQgTW91c2UiCi0gICAgSW5wdXREZXZpY2UgICAgIlFFTVUgVGFibGV0IgotICAgIE9wdGlvbiAgICAgICAgICJBbGxvd0VtcHR5SW5wdXQiICJubyIKLUVuZFNlY3Rpb24KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18wLjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmQ5OTFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18wLjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmI1MjgzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fSBmaWxlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgxYjg1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtcHJlZW1wdC1ydC5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tcHJlZW1wdC1ydC5zY2MKLWRlZmluZSBLTUFDSElORSB7ez1tYWNoaW5lfX0KLQotZGVmaW5lIEtBUkNIIHt7PXFlbXVhcmNofX0KLQotaW5jbHVkZSB7ez1tYXBfcHJlZW1wdF9ydF9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19Ci17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzY2Y2NDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MKLWRlZmluZSBLTUFDSElORSB7ez1tYWNoaW5lfX0KLQotZGVmaW5lIEtBUkNIIHt7PXFlbXVhcmNofX0KLQote3sgaWYgcWVtdWFyY2ggPT0gImkzODYiIG9yIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQotaW5jbHVkZSB7ez1tYXBfc3RhbmRhcmRfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fSBub3BhdGNoCi17eyBpZiBxZW11YXJjaCA9PSAiYXJtIjogfX0KLWluY2x1ZGUgYnNwL2FybS12ZXJzYXRpbGUtOTI2ZWpzL2FybS12ZXJzYXRpbGUtOTI2ZWpzLXN0YW5kYXJkIG5vcGF0Y2gKLXt7IGlmIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLWluY2x1ZGUgYnNwL3FlbXUtcHBjMzIvcWVtdS1wcGMzMi1zdGFuZGFyZCBub3BhdGNoCi17eyBpZiBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci1pbmNsdWRlIGJzcC9tdGktbWFsdGEzMi9tdGktbWFsdGEzMi1iZS1zdGFuZGFyZCBub3BhdGNoCi17eyBpZiBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLWluY2x1ZGUgYnNwL210aS1tYWx0YTY0L210aS1tYWx0YTY0LWJlLXN0YW5kYXJkIG5vcGF0Y2gKLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdGlueS5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdGlueS5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZDRjNmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXRpbnkuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCB7ez1xZW11YXJjaH19Ci0KLWluY2x1ZGUge3s9bWFwX3Rpbnlfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci1kZWZpbmUgS1RZUEUge3s9bmV3X2ticmFuY2h9fQotYnJhbmNoIHt7PW1hY2hpbmV9fQotCi1pbmNsdWRlIHt7PW1hY2hpbmV9fS5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWVmZGNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODI3NTllLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1wYXRjaGVzLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM1OWRhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1wYXRjaGVzLnNjYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmYTRlZDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LmNmZwote3sgaWYgcWVtdWFyY2ggPT0gImkzODYiOiB9fQotIyBDT05GSUdfNjRCSVQgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNWQwYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LnNjYwota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LmNmZwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTdmMGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMiJ9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdiOWNlZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLWRldiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19Igote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHlvdXIgbmV3IEJTUCBicmFuY2ggb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhbiBleGlzdGluZyBtYWNoaW5lIGJyYW5jaCB0byB1c2UgZm9yIHRoaXMgQlNQOiIgZGVmYXVsdDoic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAicG93ZXJwYyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3FlbXVwcGMiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJ4ODZfNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiAgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJ4ODZfNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiAgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGEzMiIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHM2NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGE2NCIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpZiBxZW11YXJjaCAhPSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiV291bGQgeW91IGxpa2UgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzBmZDE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEwIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJhcm0iIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJhcm0iIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvY29tbW9uLXBjIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpZiBxZW11YXJjaCAhPSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNlYjIxNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19Igote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiYXJtIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiYXJtIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2NvbW1vbi1wYyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwcyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHM2NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHM2NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmFiYzIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuNCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19Igote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiYXJtIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiYXJtIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2NvbW1vbi1wYyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwcyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHM2NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHM2NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC40IgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTFkOTZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTAiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB5b3VyIG5ldyBCU1AgYnJhbmNoIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYW4gZXhpc3RpbmcgbWFjaGluZSBicmFuY2ggdG8gdXNlIGZvciB0aGlzIEJTUDoiIGRlZmF1bHQ6InN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAicG93ZXJwYyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9xZW11cHBjIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL210aS1tYWx0YTMyIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL210aS1tYWx0YTY0IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdjZTM3ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEyIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgeW91ciBuZXcgQlNQIGJyYW5jaCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGFuIGV4aXN0aW5nIG1hY2hpbmUgYnJhbmNoIHRvIHVzZSBmb3IgdGhpcyBCU1A6IiBkZWZhdWx0OiJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvcWVtdXBwYyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGEzMiIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGE2NCIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlmIHFlbXVhcmNoICE9ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWJlOTEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgeW91ciBuZXcgQlNQIGJyYW5jaCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGFuIGV4aXN0aW5nIG1hY2hpbmUgYnJhbmNoIHRvIHVzZSBmb3IgdGhpcyBCU1A6IiBkZWZhdWx0OiJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvcWVtdXBwYyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGEzMiIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGE2NCIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlmIHFlbXVhcmNoICE9ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuNCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC8uZ2l0aWdub3JlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0Ly5naXRpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0Ly5naXRpZ25vcmUKKysrIC9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L2NvbmYvbWFjaGluZS9tYWNoaW5lLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRiODI1MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5jb25mCi0jQFRZUEU6IE1hY2hpbmUKLSNATkFNRToge3s9bWFjaGluZX19Ci0KLSNAREVTQ1JJUFRJT046IE1hY2hpbmUgY29uZmlndXJhdGlvbiBmb3Ige3s9bWFjaGluZX19IHN5c3RlbXMKLQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIjogcHJlZmVycmVkX2tlcm5lbCA9ICJsaW51eC15b2N0by1jdXN0b20iIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsID0gImxpbnV4LXlvY3RvLWRldiIgfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSIgb3Iga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IiA6IH19Ci1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gInt7PXByZWZlcnJlZF9rZXJuZWx9fSIKLQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbCA9IGtlcm5lbF9jaG9pY2Uuc3BsaXQoJ18nKVswXSB9fQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbF92ZXJzaW9uID0ga2VybmVsX2Nob2ljZS5zcGxpdCgnXycpWzFdIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiB9fQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsfX0iCi1QUkVGRVJSRURfVkVSU0lPTl97ez1wcmVmZXJyZWRfa2VybmVsfX0gPz0gInt7PXByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbn19JSIKLQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToidHVuZWZpbGUiIHByaW86IjQwIiBtc2c6IldoaWNoIG1hY2hpbmUgdHVuaW5nIHdvdWxkIHlvdSBsaWtlIHRvIHVzZT8iIGRlZmF1bHQ6InR1bmVfY29yZTIiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9jb3JlMiIgbXNnOiJDb3JlMiB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2NvcmVpNyIgbXNnOiJDb3JlaTcgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9jb3JlMiI6IH19Ci1ERUZBVUxUVFVORSA/PSAiY29yZTItNjQiCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9jb3JlaTciOiB9fQotREVGQVVMVFRVTkUgPz0gImNvcmVpNy02NCIKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlaTcuaW5jCi0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCi0KLU1BQ0hJTkVfRkVBVFVSRVMgKz0gIndpZmkgZWZpIHBjYmlvcyIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToieHNlcnZlciIgcHJpbzoiNTAiIG1zZzoiRG8geW91IG5lZWQgc3VwcG9ydCBmb3IgWD8gKHkvbikiIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIHhzZXJ2ZXIgPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToieHNlcnZlcl9jaG9pY2UiIHByaW86IjUwIiBtc2c6IlBsZWFzZSBzZWxlY3QgYW4geHNlcnZlciBmb3IgdGhpcyBtYWNoaW5lOiIgZGVmYXVsdDoieHNlcnZlcl9pOTE1IiB9fQotCi17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieHNlcnZlcl92ZXNhIiBtc2c6IlZFU0EgeHNlcnZlciBzdXBwb3J0IiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InhzZXJ2ZXJfaTkxNSIgbXNnOiJpOTE1IHhzZXJ2ZXIgc3VwcG9ydCIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ4c2VydmVyX2k5NjUiIG1zZzoiaTk2NSB4c2VydmVyIHN1cHBvcnQiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieHNlcnZlcl9mYmRldiIgbXNnOiJmYmRldiB4c2VydmVyIHN1cHBvcnQiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieHNlcnZlcl9tb2Rlc2V0dGluZyIgbXNnOiJtb2Rlc2V0dGluZyB4c2VydmVyIHN1cHBvcnQiIH19Ci17eyBpZiB4c2VydmVyID09ICJ5IjogfX0KLVhTRVJWRVIgPz0gIiR7WFNFUlZFUl9YODZfQkFTRX0gXAotICAgICAgICAgICAke1hTRVJWRVJfWDg2X0VYVH0gXAote3sgaWYgeHNlcnZlciA9PSAieSIgYW5kIHhzZXJ2ZXJfY2hvaWNlID09ICJ4c2VydmVyX3Zlc2EiOiB9fQotICAgICAgICAgICAke1hTRVJWRVJfWDg2X1ZFU0F9IFwKLXt7IGlmIHhzZXJ2ZXIgPT0gInkiIGFuZCB4c2VydmVyX2Nob2ljZSA9PSAieHNlcnZlcl9pOTE1IjogfX0KLSAgICAgICAgICAgJHtYU0VSVkVSX1g4Nl9JOTE1fSBcCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfaTk2NSI6IH19Ci0gICAgICAgICAgICR7WFNFUlZFUl9YODZfSTk2NX0gXAote3sgaWYgeHNlcnZlciA9PSAieSIgYW5kIHhzZXJ2ZXJfY2hvaWNlID09ICJ4c2VydmVyX2ZiZGV2IjogfX0KLSAgICAgICAgICAgJHtYU0VSVkVSX1g4Nl9GQkRFVn0gXAote3sgaWYgeHNlcnZlciA9PSAieSIgYW5kIHhzZXJ2ZXJfY2hvaWNlID09ICJ4c2VydmVyX21vZGVzZXR0aW5nIjogfX0KLSAgICAgICAgICAgJHtYU0VSVkVSX1g4Nl9NT0RFU0VUVElOR30gXAote3sgaWYgeHNlcnZlciA9PSAieSI6IH19Ci0gICAgICAgICAgICIKLQotTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyArPSAibGludXgtZmlybXdhcmUgdjg2ZCBlZWUtYWNwaS1zY3JpcHRzIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3BuLW1hdGNoYm94LXBhbmVsLTIgPSAiIC0td2l0aC1iYXR0ZXJ5PWFjcGkiCi0KLUdMSUJDX0FERE9OUyA9ICJucHRsIgotCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfdmVzYSI6IH19Ci1BUFBFTkQgKz0gInZpZGVvPXZlc2FmYiB2Z2E9MHgzMTgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDQyZDAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7ez1tYWNoaW5lfX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUveG9yZy5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvbWFjaGluZS94b3JnLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjOWEwZjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvbWFjaGluZS94b3JnLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiB4c2VydmVyID09ICJ5IjogfX0gdGhpcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDgzMDAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYgeHNlcnZlciA9PSAieSI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTBkOTJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1kaXJuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19IGZpbGVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXByZWVtcHQtcnQuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmVlZWNkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXByZWVtcHQtcnQuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXByZWVtcHQtcnQuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCB4ODZfNjQKLQotaW5jbHVkZSB7ez1tYXBfcHJlZW1wdF9ydF9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19Ci17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwotCi0jIGRlZmF1bHQgcG9saWN5IGZvciBwcmVlbXB0LXJ0IGtlcm5lbHMKLWluY2x1ZGUgY2ZnL3VzYi1tYXNzLXN0b3JhZ2Uuc2NjCi1pbmNsdWRlIGNmZy9ib290LWxpdmUuc2NjCi1pbmNsdWRlIGZlYXR1cmVzL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC5zY2MKLWluY2x1ZGUgZmVhdHVyZXMvcHJvZmlsaW5nL3Byb2ZpbGluZy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJiMjkxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCB4ODZfNjQKLQotaW5jbHVkZSB7ez1tYXBfc3RhbmRhcmRfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fSBub3BhdGNoCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwotCi0jIGRlZmF1bHQgcG9saWN5IGZvciBzdGFuZGFyZCBrZXJuZWxzCi1pbmNsdWRlIGNmZy91c2ItbWFzcy1zdG9yYWdlLnNjYwotaW5jbHVkZSBjZmcvYm9vdC1saXZlLnNjYwotaW5jbHVkZSBmZWF0dXJlcy9sYXRlbmN5dG9wL2xhdGVuY3l0b3Auc2NjCi1pbmNsdWRlIGZlYXR1cmVzL3Byb2ZpbGluZy9wcm9maWxpbmcuc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS10aW55LnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTM3MDZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXRpbnkuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCB4ODZfNjQKLQotaW5jbHVkZSB7ez1tYXBfdGlueV9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19Ci17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzQ4OWU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItY29uZmlnLmNmZworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4Mjc1OWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2Y3NDdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjkwZGRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZworKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5jZmcKLUNPTkZJR19QUklOVEs9eQotCi0jIEJhc2ljIGhhcmR3YXJlIHN1cHBvcnQgZm9yIHRoZSBib3ggLSBuZXR3b3JrLCBVU0IsIFBDSSwgc291bmQgICAgICAgICAgICAgICAgICAgICAKLUNPTkZJR19ORVRERVZJQ0VTPXkKLUNPTkZJR19BVEE9eQotQ09ORklHX0FUQV9HRU5FUklDPXkKLUNPTkZJR19BVEFfU0ZGPXkKLUNPTkZJR19QQ0k9eQotQ09ORklHX01NQz15Ci1DT05GSUdfTU1DX1NESENJPXkKLUNPTkZJR19VU0JfU1VQUE9SVD15Ci1DT05GSUdfVVNCPXkKLUNPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15Ci1DT05GSUdfUjgxNjk9eQotQ09ORklHX1BBVEFfU0NIPXkKLUNPTkZJR19NTUNfU0RIQ0lfUENJPXkKLUNPTkZJR19VU0JfRUhDSV9IQ0Q9eQotQ09ORklHX1BDSUVQT1JUQlVTPXkKLUNPTkZJR19ORVQ9eQotQ09ORklHX1VTQl9VSENJX0hDRD15Ci1DT05GSUdfQkxLX0RFVl9TRD15Ci1DT05GSUdfQ0hSX0RFVl9TRz15Ci1DT05GSUdfU09VTkQ9eQotQ09ORklHX1NORD15Ci1DT05GSUdfU05EX0hEQV9JTlRFTD15Ci0KLSMgTWFrZSBzdXJlIHRoZXNlIGFyZSBvbiwgb3RoZXJ3aXNlIHRoZSBib290dXAgd29uJ3QgYmUgZnVuICAgICAgICAgICAgICAgICAgICAgICAgIAotQ09ORklHX0VYVDNfRlM9eQotQ09ORklHX1VOSVg9eQotQ09ORklHX0lORVQ9eQotQ09ORklHX01PRFVMRVM9eQotQ09ORklHX1NITUVNPXkKLUNPTkZJR19UTVBGUz15Ci1DT05GSUdfUEFDS0VUPXkKLQotQ09ORklHX0kyQz15ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi1DT05GSUdfQUdQPXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLUNPTkZJR19QTT15ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotQ09ORklHX0FDUEk9eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi1DT05GSUdfSU5QVVQ9eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotIyBOZWVkZWQgZm9yIGJvb3RpbmcgKGFuZCB1c2luZykgVVNCIG1lbW9yeSBzdGlja3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi1DT05GSUdfQkxLX0RFVl9MT09QPXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLUNPTkZJR19OTFNfQ09ERVBBR0VfNDM3PXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotQ09ORklHX05MU19JU084ODU5XzE9eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLUNPTkZJR19SRF9HWklQPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQyMGQxOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uc2NjCi1rY29uZiBoYXJkd2FyZSB7ez1tYWNoaW5lfX0uY2ZnCi0KLWluY2x1ZGUgZmVhdHVyZXMvc2VyaWFsLzgyNTAuc2NjCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfdmVzYSI6IH19Ci1pbmNsdWRlIGNmZy92ZXNhZmIuc2NjCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfaTkxNSIgb3IgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfaTk2NSI6IH19Ci1pbmNsdWRlIGZlYXR1cmVzL2k5MTUvaTkxNS5zY2MKLQotaW5jbHVkZSBjZmcvdXNiLW1hc3Mtc3RvcmFnZS5zY2MKLWluY2x1ZGUgZmVhdHVyZXMvcG93ZXIvaW50ZWwuc2NjCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTdmMGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMikga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQotCi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCB1c2VfZGVmYXVsdF9rZXJuZWwgPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJlZDI3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZTk0M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmM2UxMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmQxODE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuNCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmYmVjYjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEwIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg3NGM5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTIiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgwOWM3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjQiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3RhZ3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3RhZ3MucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MTk0MjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC90YWdzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotIyBleDp0cz00OnN3PTQ6c3RzPTQ6ZXQKLSMgLSotIHRhYi13aWR0aDogNDsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEyLCBJbnRlbCBDb3Jwb3JhdGlvbi4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKLSMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0jIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0jIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCi0jCi0jIERFU0NSSVBUSU9OCi0jIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgcGxhY2UgdG8gZGVmaW5lIGNvbW1vbiBjb25zdGFudHMgZm9yIHRoZQotIyBZb2N0byBCU1AgVG9vbHMuCi0jCi0jIEFVVEhPUlMKLSMgVG9tIFphbnVzc2kgPHRvbS56YW51c3NpIChhdF0gaW50ZWwuY29tPgotIwotCi1PUEVOX1RBRyA9ICAgICAie3siCi1DTE9TRV9UQUcgPSAgICAifX0iCi1BU1NJR05fVEFHID0gICAie3s9IgotSU5QVVRfVEFHID0gICAgImlucHV0IgotSUZfVEFHID0gICAgICAgImlmIgotRklMRU5BTUVfVEFHID0gInlvY3RvLWJzcC1maWxlbmFtZSIKLURJUk5BTUVfVEFHID0gICJ5b2N0by1ic3AtZGlybmFtZSIKLQotSU5ERU5UX1NUUiA9ICAiICAgICIKLQotQkxBTktMSU5FX1NUUiA9ICJvZi53cml0ZShcIlxcblwiKSIKLU5PUk1BTF9TVEFSVCA9ICAib2Yud3JpdGUiCi1PUEVOX1NUQVJUID0gICAgImN1cnJlbnRfZmlsZSA9IgotCi1JTlBVVF9UWVBFX1BST1BFUlRZID0gInR5cGUiCi0KLVNSQ19VUklfRklMRSA9ICJmaWxlOi8vIgotCi1HSVRfQ0hFQ0tfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLWRldi5naXQiCi0KLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL19faW5pdF9fLnB5CmluZGV4IDI4OGM0NTcuLjI2MTg0MTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL19faW5pdF9fLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL19faW5pdF9fLnB5CkBAIC01Niw5ICs1NiwxMSBAQAogICAgICAgICBwcmlvcml0eSA9IGxkYXRhLmdldFZhcignQkJGSUxFX1BSSU9SSVRZXyVzJyAlIG5hbWUpCiAgICAgICAgIHBhdHRlcm4gPSBsZGF0YS5nZXRWYXIoJ0JCRklMRV9QQVRURVJOXyVzJyAlIG5hbWUpCiAgICAgICAgIGRlcGVuZHMgPSBsZGF0YS5nZXRWYXIoJ0xBWUVSREVQRU5EU18lcycgJSBuYW1lKQorICAgICAgICBjb21wYXQgPSBsZGF0YS5nZXRWYXIoJ0xBWUVSU0VSSUVTX0NPTVBBVF8lcycgJSBuYW1lKQogICAgICAgICBjb2xsZWN0aW9uc1tuYW1lXVsncHJpb3JpdHknXSA9IHByaW9yaXR5CiAgICAgICAgIGNvbGxlY3Rpb25zW25hbWVdWydwYXR0ZXJuJ10gPSBwYXR0ZXJuCiAgICAgICAgIGNvbGxlY3Rpb25zW25hbWVdWydkZXBlbmRzJ10gPSBkZXBlbmRzCisgICAgICAgIGNvbGxlY3Rpb25zW25hbWVdWydjb21wYXQnXSA9IGNvbXBhdAogCiAgICAgcmV0dXJuIGNvbGxlY3Rpb25zCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL2NvbW1vbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL2NvbW1vbi5weQppbmRleCBhMTNjMTA4Li4xYmVmNjFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9jb21tb24ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZXMvY29tbW9uLnB5CkBAIC01MSwzICs1MSw4IEBACiAgICAgICAgIG1zZyA9IGNvbXBhcmVfc2lnbmF0dXJlcyhzZWxmLnRkWydzaWdzJ10sIGN1cnJfc2lncykKICAgICAgICAgaWYgbXNnIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdBZGRpbmcgbGF5ZXIgJXMgY2hhbmdlZCBzaWduYXR1cmVzLlxuJXMnICUgKHNlbGYudGMubGF5ZXJbJ25hbWUnXSwgbXNnKSkKKworICAgIGRlZiB0ZXN0X2xheWVyc2VyaWVzX2NvbXBhdChzZWxmKToKKyAgICAgICAgZm9yIGNvbGxlY3Rpb25fbmFtZSwgY29sbGVjdGlvbl9kYXRhIGluIHNlbGYudGMubGF5ZXJbJ2NvbGxlY3Rpb25zJ10uaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xsZWN0aW9uX2RhdGFbJ2NvbXBhdCddLCAiQ29sbGVjdGlvbiAlcyBmcm9tIGxheWVyICVzIGRvZXMgbm90IHNldCBjb21wYXRpYmxlIG9lLWNvcmUgdmVyc2lvbnMgdmlhIExBWUVSU0VSSUVTX0NPTVBBVF9jb2xsZWN0aW9uLiIgXAorICAgICAgICAgICAgICAgICAlIChjb2xsZWN0aW9uX25hbWUsIHNlbGYudGMubGF5ZXJbJ25hbWUnXSkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL19faW5pdF9fLnB5CmluZGV4IDk0ZTNkN2QuLjg5ZjA5OGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL19faW5pdF9fLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL19faW5pdF9fLnB5CkBAIC0yMjAsNiArMjIwLDIwIEBACiAgICAgICAgIGNvbW1pdF9jbWQgKz0gWyctbScsIGNvbW1pdG1zZ10KICAgICAgICAgYmIucHJvY2Vzcy5ydW4oY29tbWl0X2NtZCwgY3dkPXJlcG9kaXIpCiAKKyAgICAjIEVuc3VyZSBzaW5nbGV0YXNrLmxvY2sgKGFzIHVzZWQgYnkgZXh0ZXJuYWxzcmMuYmJjbGFzcykgaXMgaWdub3JlZCBieSBnaXQKKyAgICBleGNsdWRlcyA9IFtdCisgICAgZXhjbHVkZWZpbGUgPSBvcy5wYXRoLmpvaW4ocmVwb2RpciwgJy5naXQnLCAnaW5mbycsICdleGNsdWRlJykKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihleGNsdWRlZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgZXhjbHVkZXMgPSBmLnJlYWRsaW5lcygpCisgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICBwYXNzCisgICAgaWYgJ3NpbmdsZXRhc2subG9ja1xuJyBub3QgaW4gZXhjbHVkZXM6CisgICAgICAgIGV4Y2x1ZGVzLmFwcGVuZCgnc2luZ2xldGFzay5sb2NrXG4nKQorICAgIHdpdGggb3BlbihleGNsdWRlZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICBmb3IgbGluZSBpbiBleGNsdWRlczoKKyAgICAgICAgICAgIGYud3JpdGUobGluZSkKKwogICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgY2hlY2tvdXQgLWIgJXMnICUgZGV2YnJhbmNoLCBjd2Q9cmVwb2RpcikKICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IHRhZyAtZiAlcycgJSBiYXNldGFnLCBjd2Q9cmVwb2RpcikKIApAQCAtMzM3LDMgKzM1MSwzMyBAQAogICAgICAgICAgICAgZm9yIHBuIGluIG5ld3VubG9ja2VkOgogICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAnICsgcG4pCiAgICAgICAgICAgICBmLndyaXRlKCciJykKKworZGVmIGNoZWNrX3ByZXJlbGVhc2VfdmVyc2lvbih2ZXIsIG9wZXJhdGlvbik6CisgICAgaWYgJ3ByZScgaW4gdmVyIG9yICdyYycgaW4gdmVyOgorICAgICAgICBsb2dnZXIud2FybmluZygnVmVyc2lvbiAiJXMiIGxvb2tzIGxpa2UgYSBwcmUtcmVsZWFzZSB2ZXJzaW9uLiAnCisgICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGF0IGlzIHRoZSBjYXNlLCBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbiBkb2VzblwndCBhcHBlYXIgdG8gZ28gYmFja3dhcmRzIHdoZW4geW91ICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2xhdGVyIHVwZ3JhZGUgdG8gdGhlIGZpbmFsIHJlbGVhc2UgdmVyc2lvbiwgaXQgaXMgJworICAgICAgICAgICAgICAgICAgICAgICAncmVjb21tbWVuZGVkIHRoYXQgaW5zdGVhZCB5b3UgdXNlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJzxjdXJyZW50IHZlcnNpb24+KzxwcmUtcmVsZWFzZSB2ZXJzaW9uPiBlLmcuIGlmICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3VwZ3JhZGluZyBmcm9tIDEuOSB0byAyLjAtcmMyIHVzZSAiMS45KzIuMC1yYzIiLiAnCisgICAgICAgICAgICAgICAgICAgICAgICdJZiB5b3UgcHJlZmVyIG5vdCB0byByZXNldCBhbmQgcmUtdHJ5LCB5b3UgY2FuIGNoYW5nZSAnCisgICAgICAgICAgICAgICAgICAgICAgICd0aGUgdmVyc2lvbiBhZnRlciAlcyBzdWNjZWVkcyB1c2luZyAiZGV2dG9vbCByZW5hbWUiICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGggLVYvLS12ZXJzaW9uLicgJSAodmVyLCBvcGVyYXRpb24pKQorCitkZWYgY2hlY2tfZ2l0X3JlcG9fZGlydHkocmVwb2Rpcik6CisgICAgIiIiQ2hlY2sgaWYgYSBnaXQgcmVwb3NpdG9yeSBpcyBjbGVhbiBvciBub3QiIiIKKyAgICBzdGRvdXQsIF8gPSBiYi5wcm9jZXNzLnJ1bignZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbicsIGN3ZD1yZXBvZGlyKQorICAgIHJldHVybiBzdGRvdXQKKworZGVmIGNoZWNrX2dpdF9yZXBvX29wKHNyY3RyZWUsIGlnbm9yZWRpcnM9Tm9uZSk6CisgICAgIiIiQ2hlY2sgaWYgYSBnaXQgcmVwb3NpdG9yeSBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcmViYXNlIiIiCisgICAgc3Rkb3V0LCBfID0gYmIucHJvY2Vzcy5ydW4oJ2dpdCByZXYtcGFyc2UgLS1zaG93LXRvcGxldmVsJywgY3dkPXNyY3RyZWUpCisgICAgdG9wbGV2ZWxkaXIgPSBzdGRvdXQuc3RyaXAoKQorICAgIGlmIGlnbm9yZWRpcnMgYW5kIHRvcGxldmVsZGlyIGluIGlnbm9yZWRpcnM6CisgICAgICAgIHJldHVybgorICAgIGdpdGRpciA9IG9zLnBhdGguam9pbih0b3BsZXZlbGRpciwgJy5naXQnKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihnaXRkaXIsICdyZWJhc2UtbWVyZ2UnKSk6CisgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcigiU291cmNlIHRyZWUgJXMgYXBwZWFycyB0byBiZSBpbiB0aGUgbWlkZGxlIG9mIGEgcmViYXNlIC0gcGxlYXNlIHJlc29sdmUgdGhpcyBmaXJzdCIgJSBzcmN0cmVlKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihnaXRkaXIsICdyZWJhc2UtYXBwbHknKSk6CisgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcigiU291cmNlIHRyZWUgJXMgYXBwZWFycyB0byBiZSBpbiB0aGUgbWlkZGxlIG9mICdnaXQgYW0nIG9yICdnaXQgYXBwbHknIC0gcGxlYXNlIHJlc29sdmUgdGhpcyBmaXJzdCIgJSBzcmN0cmVlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZGVwbG95LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZGVwbG95LnB5CmluZGV4IDljYzQ5MjcuLjUyZTI2MWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2RlcGxveS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9kZXBsb3kucHkKQEAgLTIxMyw5ICsyMTMsNyBAQAogCiAgICAgICAgIHNjcF9wb3J0ID0gJycKICAgICAgICAgc3NoX3BvcnQgPSAnJwotICAgICAgICBpZiBub3QgYXJncy5wb3J0OgotICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCJJZiB5b3Ugc3BlY2lmeSAtUC8tLXBvcnQgdGhlbiB5b3UgbXVzdCBwcm92aWRlIHRoZSBwb3J0IHRvIGJlIHVzZWQgdG8gY29ubmVjdCB0byB0aGUgdGFyZ2V0IikKLSAgICAgICAgZWxzZToKKyAgICAgICAgaWYgYXJncy5wb3J0OgogICAgICAgICAgICAgc2NwX3BvcnQgPSAiLVAgJXMiICUgYXJncy5wb3J0CiAgICAgICAgICAgICBzc2hfcG9ydCA9ICItcCAlcyIgJSBhcmdzLnBvcnQKIApAQCAtMjgwLDkgKzI3OCw3IEBACiAKICAgICBzY3BfcG9ydCA9ICcnCiAgICAgc3NoX3BvcnQgPSAnJwotICAgIGlmIG5vdCBhcmdzLnBvcnQ6Ci0gICAgICAgIHJhaXNlIERldnRvb2xFcnJvcigiSWYgeW91IHNwZWNpZnkgLVAvLS1wb3J0IHRoZW4geW91IG11c3QgcHJvdmlkZSB0aGUgcG9ydCB0byBiZSB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIHRhcmdldCIpCi0gICAgZWxzZToKKyAgICBpZiBhcmdzLnBvcnQ6CiAgICAgICAgIHNjcF9wb3J0ID0gIi1QICVzIiAlIGFyZ3MucG9ydAogICAgICAgICBzc2hfcG9ydCA9ICItcCAlcyIgJSBhcmdzLnBvcnQKIApAQCAtMzI4LDcgKzMyNCw3IEBACiAgICAgcGFyc2VyX2RlcGxveS5hZGRfYXJndW1lbnQoJy1uJywgJy0tZHJ5LXJ1bicsIGhlbHA9J0xpc3QgZmlsZXMgdG8gYmUgZGVwbG95ZWQgb25seScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX2RlcGxveS5hZGRfYXJndW1lbnQoJy1wJywgJy0tbm8tcHJlc2VydmUnLCBoZWxwPSdEbyBub3QgcHJlc2VydmUgZXhpc3RpbmcgZmlsZXMnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl9kZXBsb3kuYWRkX2FyZ3VtZW50KCctLW5vLWNoZWNrLXNwYWNlJywgaGVscD0nRG8gbm90IGNoZWNrIGZvciBhdmFpbGFibGUgc3BhY2UgYmVmb3JlIGRlcGxveWluZycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCi0gICAgcGFyc2VyX2RlcGxveS5hZGRfYXJndW1lbnQoJy1QJywgJy0tcG9ydCcsIGRlZmF1bHQ9JzIyJywgaGVscD0nUG9ydCB0byB1c2UgZm9yIGNvbm5lY3Rpb24gdG8gdGhlIHRhcmdldCcpCisgICAgcGFyc2VyX2RlcGxveS5hZGRfYXJndW1lbnQoJy1QJywgJy0tcG9ydCcsIGhlbHA9J1NwZWNpZnkgcG9ydCB0byB1c2UgZm9yIGNvbm5lY3Rpb24gdG8gdGhlIHRhcmdldCcpCiAKICAgICBzdHJpcF9vcHRzID0gcGFyc2VyX2RlcGxveS5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKHJlcXVpcmVkPUZhbHNlKQogICAgIHN0cmlwX29wdHMuYWRkX2FyZ3VtZW50KCctUycsICctLXN0cmlwJywKQEAgLTM1MCw1ICszNDYsNSBAQAogICAgIHBhcnNlcl91bmRlcGxveS5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2hvdy1zdGF0dXMnLCBoZWxwPSdTaG93IHByb2dyZXNzL3N0YXR1cyBvdXRwdXQnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl91bmRlcGxveS5hZGRfYXJndW1lbnQoJy1hJywgJy0tYWxsJywgaGVscD0nVW5kZXBsb3kgYWxsIHJlY2lwZXMgZGVwbG95ZWQgb24gdGhlIHRhcmdldCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX3VuZGVwbG95LmFkZF9hcmd1bWVudCgnLW4nLCAnLS1kcnktcnVuJywgaGVscD0nTGlzdCBmaWxlcyB0byBiZSB1bmRlcGxveWVkIG9ubHknLCBhY3Rpb249J3N0b3JlX3RydWUnKQotICAgIHBhcnNlcl91bmRlcGxveS5hZGRfYXJndW1lbnQoJy1QJywgJy0tcG9ydCcsIGRlZmF1bHQ9JzIyJywgaGVscD0nUG9ydCB0byB1c2UgZm9yIGNvbm5lY3Rpb24gdG8gdGhlIHRhcmdldCcpCisgICAgcGFyc2VyX3VuZGVwbG95LmFkZF9hcmd1bWVudCgnLVAnLCAnLS1wb3J0JywgaGVscD0nU3BlY2lmeSBwb3J0IHRvIHVzZSBmb3IgY29ubmVjdGlvbiB0byB0aGUgdGFyZ2V0JykKICAgICBwYXJzZXJfdW5kZXBsb3kuc2V0X2RlZmF1bHRzKGZ1bmM9dW5kZXBsb3kpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zZWFyY2gucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zZWFyY2gucHkKaW5kZXggMDU0OTg1Yi4uYjRmMjA5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc2VhcmNoLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3NlYXJjaC5weQpAQCAtMzYsNDQgKzM2LDc0IEBACiAKICAgICAgICAga2V5d29yZF9yYyA9IHJlLmNvbXBpbGUoYXJncy5rZXl3b3JkKQogCi0gICAgICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKHBrZ2RhdGFfZGlyKToKLSAgICAgICAgICAgIHBmbiA9IG9zLnBhdGguam9pbihwa2dkYXRhX2RpciwgZm4pCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocGZuKToKKyAgICAgICAgZGVmIHByaW50X21hdGNoKHBuKToKKyAgICAgICAgICAgIHJkID0gcGFyc2VfcmVjaXBlKGNvbmZpZywgdGluZm9pbCwgcG4sIFRydWUpCisgICAgICAgICAgICBpZiBub3QgcmQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBzdW1tYXJ5ID0gcmQuZ2V0VmFyKCdTVU1NQVJZJykKKyAgICAgICAgICAgIGlmIHN1bW1hcnkgPT0gcmQuZXhwYW5kKGRlZnN1bW1hcnkpOgorICAgICAgICAgICAgICAgIHN1bW1hcnkgPSAnJworICAgICAgICAgICAgcHJpbnQoIiVzICAlcyIgJSAocG4ubGp1c3QoMjApLCBzdW1tYXJ5KSkKKworCisgICAgICAgIG1hdGNoZXMgPSBbXQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwa2dkYXRhX2Rpcik6CisgICAgICAgICAgICBmb3IgZm4gaW4gb3MubGlzdGRpcihwa2dkYXRhX2Rpcik6CisgICAgICAgICAgICAgICAgcGZuID0gb3MucGF0aC5qb2luKHBrZ2RhdGFfZGlyLCBmbikKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocGZuKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIHBhY2thZ2VzID0gW10KKyAgICAgICAgICAgICAgICBtYXRjaCA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYga2V5d29yZF9yYy5zZWFyY2goZm4pOgorICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IFRydWUKKworICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHBmbiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ1BBQ0tBR0VTOicpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyA9IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpLnNwbGl0KCkKKworICAgICAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5d29yZF9yYy5zZWFyY2gocGtnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHBrZ2RhdGFfZGlyLCAncnVudGltZScsIHBrZyArICcucGFja2FnZWQnKSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihwa2dkYXRhX2RpciwgJ3J1bnRpbWUnLCBwa2cpLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAnOiAnIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXRsaW5lID0gbGluZS5zcGxpdCgnOicsIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gc3BsaXRsaW5lWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzcGxpdGxpbmVbMV0uc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIFsnUEtHXyVzJyAlIHBrZywgJ0RFU0NSSVBUSU9OJywgJ0ZJTEVTX0lORk8nXSBvciBrZXkuc3RhcnRzd2l0aCgnRklMRVJQUk9WSURFU18nKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBrZXl3b3JkX3JjLnNlYXJjaCh2YWx1ZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgICAgICAgICBwcmludF9tYXRjaChmbikKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoZm4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dnZXIud2FybmluZygnUGFja2FnZSBkYXRhIGlzIG5vdCBhdmFpbGFibGUsIHJlc3VsdHMgbWF5IGJlIGxpbWl0ZWQnKQorCisgICAgICAgIGZvciByZWNpcGUgaW4gdGluZm9pbC5hbGxfcmVjaXBlcygpOgorICAgICAgICAgICAgaWYgYXJncy5maXhlZF9zZXR1cCBhbmQgJ25hdGl2ZXNkaycgaW4gcmVjaXBlLmluaGVyaXRzKCk6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgcGFja2FnZXMgPSBbXQogICAgICAgICAgICAgbWF0Y2ggPSBGYWxzZQotICAgICAgICAgICAgaWYga2V5d29yZF9yYy5zZWFyY2goZm4pOgorICAgICAgICAgICAgaWYga2V5d29yZF9yYy5zZWFyY2gocmVjaXBlLnBuKToKICAgICAgICAgICAgICAgICBtYXRjaCA9IFRydWUKLQotICAgICAgICAgICAgaWYgbm90IG1hdGNoOgotICAgICAgICAgICAgICAgIHdpdGggb3BlbihwZm4sICdyJykgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnUEFDS0FHRVM6Jyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKS5zcGxpdCgpCi0KLSAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgotICAgICAgICAgICAgICAgICAgICBpZiBrZXl3b3JkX3JjLnNlYXJjaChwa2cpOgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgcHJvdiBpbiByZWNpcGUucHJvdmlkZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIGtleXdvcmRfcmMuc2VhcmNoKHByb3YpOgogICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocGtnZGF0YV9kaXIsICdydW50aW1lJywgcGtnICsgJy5wYWNrYWdlZCcpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4ocGtnZGF0YV9kaXIsICdydW50aW1lJywgcGtnKSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICc6ICcgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0bGluZSA9IGxpbmUuc3BsaXQoJzonLCAxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gc3BsaXRsaW5lWzBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNwbGl0bGluZVsxXS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleSBpbiBbJ1BLR18lcycgJSBwa2csICdERVNDUklQVElPTicsICdGSUxFU19JTkZPJ10gb3Iga2V5LnN0YXJ0c3dpdGgoJ0ZJTEVSUFJPVklERVNfJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBrZXl3b3JkX3JjLnNlYXJjaCh2YWx1ZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgcmQgPSBwYXJzZV9yZWNpcGUoY29uZmlnLCB0aW5mb2lsLCBmbiwgVHJ1ZSkKLSAgICAgICAgICAgICAgICBzdW1tYXJ5ID0gcmQuZ2V0VmFyKCdTVU1NQVJZJykKLSAgICAgICAgICAgICAgICBpZiBzdW1tYXJ5ID09IHJkLmV4cGFuZChkZWZzdW1tYXJ5KToKLSAgICAgICAgICAgICAgICAgICAgc3VtbWFyeSA9ICcnCi0gICAgICAgICAgICAgICAgcHJpbnQoIiVzICAlcyIgJSAoZm4ubGp1c3QoMjApLCBzdW1tYXJ5KSkKKyAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgIGZvciBycHJvdiBpbiByZWNpcGUucnByb3ZpZGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5d29yZF9yYy5zZWFyY2gocnByb3YpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBtYXRjaCBhbmQgbm90IHJlY2lwZS5wbiBpbiBtYXRjaGVzOgorICAgICAgICAgICAgICAgIHByaW50X21hdGNoKHJlY2lwZS5wbikKICAgICBmaW5hbGx5OgogICAgICAgICB0aW5mb2lsLnNodXRkb3duKCkKIApAQCAtODIsNyArMTEyLDcgQEAKIGRlZiByZWdpc3Rlcl9jb21tYW5kcyhzdWJwYXJzZXJzLCBjb250ZXh0KToKICAgICAiIiJSZWdpc3RlciBkZXZ0b29sIHN1YmNvbW1hbmRzIGZyb20gdGhpcyBwbHVnaW4iIiIKICAgICBwYXJzZXJfc2VhcmNoID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdzZWFyY2gnLCBoZWxwPSdTZWFyY2ggYXZhaWxhYmxlIHJlY2lwZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nU2VhcmNoZXMgZm9yIGF2YWlsYWJsZSB0YXJnZXQgcmVjaXBlcy4gTWF0Y2hlcyBvbiByZWNpcGUgbmFtZSwgcGFja2FnZSBuYW1lLCBkZXNjcmlwdGlvbiBhbmQgaW5zdGFsbGVkIGZpbGVzLCBhbmQgcHJpbnRzIHRoZSByZWNpcGUgbmFtZSBvbiBtYXRjaC4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nU2VhcmNoZXMgZm9yIGF2YWlsYWJsZSByZWNpcGVzLiBNYXRjaGVzIG9uIHJlY2lwZSBuYW1lLCBwYWNrYWdlIG5hbWUsIGRlc2NyaXB0aW9uIGFuZCBpbnN0YWxsZWQgZmlsZXMsIGFuZCBwcmludHMgdGhlIHJlY2lwZSBuYW1lIGFuZCBzdW1tYXJ5IG9uIG1hdGNoLicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwPSdpbmZvJykKLSAgICBwYXJzZXJfc2VhcmNoLmFkZF9hcmd1bWVudCgna2V5d29yZCcsIGhlbHA9J0tleXdvcmQgdG8gc2VhcmNoIGZvciAocmVndWxhciBleHByZXNzaW9uIHN5bnRheCBhbGxvd2VkKScpCi0gICAgcGFyc2VyX3NlYXJjaC5zZXRfZGVmYXVsdHMoZnVuYz1zZWFyY2gsIG5vX3dvcmtzcGFjZT1UcnVlKQorICAgIHBhcnNlcl9zZWFyY2guYWRkX2FyZ3VtZW50KCdrZXl3b3JkJywgaGVscD0nS2V5d29yZCB0byBzZWFyY2ggZm9yIChyZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4IGFsbG93ZWQsIHVzZSBxdW90ZXMgdG8gYXZvaWQgc2hlbGwgZXhwYW5zaW9uKScpCisgICAgcGFyc2VyX3NlYXJjaC5zZXRfZGVmYXVsdHMoZnVuYz1zZWFyY2gsIG5vX3dvcmtzcGFjZT1UcnVlLCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQppbmRleCBiZWVhMGQ0Li5hMWU4ZTFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQpAQCAtMzAsMTEgKzMwLDEzIEBACiBpbXBvcnQgZ2xvYgogaW1wb3J0IGZpbGVjbXAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0Ci1mcm9tIGRldnRvb2wgaW1wb3J0IGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQsIHNldHVwX3RpbmZvaWwsIGNoZWNrX3dvcmtzcGFjZV9yZWNpcGUsIHVzZV9leHRlcm5hbF9idWlsZCwgc2V0dXBfZ2l0X3JlcG8sIHJlY2lwZV90b19hcHBlbmQsIGdldF9iYmNsYXNzZXh0ZW5kX3RhcmdldHMsIHVwZGF0ZV91bmxvY2tlZHNpZ3MsIERldnRvb2xFcnJvcgorZnJvbSBkZXZ0b29sIGltcG9ydCBleGVjX2J1aWxkX2Vudl9jb21tYW5kLCBzZXR1cF90aW5mb2lsLCBjaGVja193b3Jrc3BhY2VfcmVjaXBlLCB1c2VfZXh0ZXJuYWxfYnVpbGQsIHNldHVwX2dpdF9yZXBvLCByZWNpcGVfdG9fYXBwZW5kLCBnZXRfYmJjbGFzc2V4dGVuZF90YXJnZXRzLCB1cGRhdGVfdW5sb2NrZWRzaWdzLCBjaGVja19wcmVyZWxlYXNlX3ZlcnNpb24sIGNoZWNrX2dpdF9yZXBvX2RpcnR5LCBjaGVja19naXRfcmVwb19vcCwgRGV2dG9vbEVycm9yCiBmcm9tIGRldnRvb2wgaW1wb3J0IHBhcnNlX3JlY2lwZQogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignZGV2dG9vbCcpCiAKK292ZXJyaWRlX2JyYW5jaF9wcmVmaXggPSAnZGV2dG9vbC1vdmVycmlkZS0nCisKIAogZGVmIGFkZChhcmdzLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UpOgogICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAnYWRkJyBzdWJjb21tYW5kIiIiCkBAIC0yOTgsNiArMzAwLDggQEAKIAogICAgICAgICBfYWRkX21kNShjb25maWcsIHJlY2lwZW5hbWUsIGFwcGVuZGZpbGUpCiAKKyAgICAgICAgY2hlY2tfcHJlcmVsZWFzZV92ZXJzaW9uKHJkLmdldFZhcignUFYnKSwgJ2RldnRvb2wgYWRkJykKKwogICAgICAgICBsb2dnZXIuaW5mbygnUmVjaXBlICVzIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgY3JlYXRlZDsgZnVydGhlciBlZGl0aW5nIG1heSBiZSByZXF1aXJlZCB0byBtYWtlIGl0IGZ1bGx5IGZ1bmN0aW9uYWwnICUgcmVjaXBlZmlsZSkKIAogICAgIGZpbmFsbHk6CkBAIC0zMzksMTkgKzM0Myw0NSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyb20gd29ya2luZy4gWW91IHdpbGwgbmVlZCB0byBkaXNhYmxlIHRoaXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpcnN0LiIgJSBwbikKIAotZGVmIF9tb3ZlX2ZpbGUoc3JjLCBkc3QpOgotICAgICIiIk1vdmUgYSBmaWxlLiBDcmVhdGVzIGFsbCB0aGUgZGlyZWN0b3J5IGNvbXBvbmVudHMgb2YgZGVzdGluYXRpb24gcGF0aC4iIiIKK2RlZiBfZHJ5X3J1bl9jb3B5KHNyYywgZHN0LCBkcnlfcnVuX291dGRpciwgYmFzZV9vdXRkaXIpOgorICAgICIiIkNvbW1vbiBmdW5jdGlvbiBmb3IgY29weWluZyBhIGZpbGUgdG8gdGhlIGRyeSBydW4gb3V0cHV0IGRpcmVjdG9yeSIiIgorICAgIHJlbHBhdGggPSBvcy5wYXRoLnJlbHBhdGgoZHN0LCBiYXNlX291dGRpcikKKyAgICBpZiByZWxwYXRoLnN0YXJ0c3dpdGgoJy4uJyk6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW5jb3JyZWN0IGJhc2UgcGF0aCAlcyBmb3IgcGF0aCAlcycgJSAoYmFzZV9vdXRkaXIsIGRzdCkpCisgICAgZHN0ID0gb3MucGF0aC5qb2luKGRyeV9ydW5fb3V0ZGlyLCByZWxwYXRoKQogICAgIGRzdF9kID0gb3MucGF0aC5kaXJuYW1lKGRzdCkKICAgICBpZiBkc3RfZDoKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRzdF9kKQotICAgIHNodXRpbC5tb3ZlKHNyYywgZHN0KQorICAgICMgRG9uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzLCBvdGhlcndpc2UgaW4gdGhlIGNhc2Ugb2YgYW4gdXBncmFkZQorICAgICMgdGhlIGRyeS1ydW4gd3JpdHRlbiBvdXQgcmVjaXBlIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCBhbiB1bm1vZGlmaWVkCisgICAgIyB2ZXJzaW9uCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRzdCk6CisgICAgICAgIHNodXRpbC5jb3B5KHNyYywgZHN0KQogCi1kZWYgX2NvcHlfZmlsZShzcmMsIGRzdCk6CitkZWYgX21vdmVfZmlsZShzcmMsIGRzdCwgZHJ5X3J1bl9vdXRkaXI9Tm9uZSwgYmFzZV9vdXRkaXI9Tm9uZSk6CisgICAgIiIiTW92ZSBhIGZpbGUuIENyZWF0ZXMgYWxsIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50cyBvZiBkZXN0aW5hdGlvbiBwYXRoLiIiIgorICAgIGRyeV9ydW5fc3VmZml4ID0gJyAoZHJ5LXJ1biknIGlmIGRyeV9ydW5fb3V0ZGlyIGVsc2UgJycKKyAgICBsb2dnZXIuZGVidWcoJ01vdmluZyAlcyB0byAlcyVzJyAlIChzcmMsIGRzdCwgZHJ5X3J1bl9zdWZmaXgpKQorICAgIGlmIGRyeV9ydW5fb3V0ZGlyOgorICAgICAgICAjIFdlIHdhbnQgdG8gY29weSBoZXJlLCBub3QgbW92ZQorICAgICAgICBfZHJ5X3J1bl9jb3B5KHNyYywgZHN0LCBkcnlfcnVuX291dGRpciwgYmFzZV9vdXRkaXIpCisgICAgZWxzZToKKyAgICAgICAgZHN0X2QgPSBvcy5wYXRoLmRpcm5hbWUoZHN0KQorICAgICAgICBpZiBkc3RfZDoKKyAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkc3RfZCkKKyAgICAgICAgc2h1dGlsLm1vdmUoc3JjLCBkc3QpCisKK2RlZiBfY29weV9maWxlKHNyYywgZHN0LCBkcnlfcnVuX291dGRpcj1Ob25lKToKICAgICAiIiJDb3B5IGEgZmlsZS4gQ3JlYXRlcyBhbGwgdGhlIGRpcmVjdG9yeSBjb21wb25lbnRzIG9mIGRlc3RpbmF0aW9uIHBhdGguIiIiCi0gICAgZHN0X2QgPSBvcy5wYXRoLmRpcm5hbWUoZHN0KQotICAgIGlmIGRzdF9kOgotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZHN0X2QpCi0gICAgc2h1dGlsLmNvcHkoc3JjLCBkc3QpCisgICAgZHJ5X3J1bl9zdWZmaXggPSAnIChkcnktcnVuKScgaWYgZHJ5X3J1bl9vdXRkaXIgZWxzZSAnJworICAgIGxvZ2dlci5kZWJ1ZygnQ29weWluZyAlcyB0byAlcyVzJyAlIChzcmMsIGRzdCwgZHJ5X3J1bl9zdWZmaXgpKQorICAgIGlmIGRyeV9ydW5fb3V0ZGlyOgorICAgICAgICBfZHJ5X3J1bl9jb3B5KHNyYywgZHN0LCBkcnlfcnVuX291dGRpciwgYmFzZV9vdXRkaXIpCisgICAgZWxzZToKKyAgICAgICAgZHN0X2QgPSBvcy5wYXRoLmRpcm5hbWUoZHN0KQorICAgICAgICBpZiBkc3RfZDoKKyAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkc3RfZCkKKyAgICAgICAgc2h1dGlsLmNvcHkoc3JjLCBkc3QpCiAKIGRlZiBfZ2l0X2xzX3RyZWUocmVwb2RpciwgdHJlZWlzaD0nSEVBRCcsIHJlY3Vyc2l2ZT1GYWxzZSk6CiAgICAgIiIiTGlzdCBjb250ZW50cyBvZiBhIGdpdCB0cmVlaXNoIiIiCkBAIC0zOTcsNyArNDI3LDcgQEAKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ2V4dHJhY3QnIHN1YmNvbW1hbmQiIiIKICAgICBpbXBvcnQgYmIKIAotICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoKQorICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoLCB0cmFja2luZz1UcnVlKQogICAgIGlmIG5vdCB0aW5mb2lsOgogICAgICAgICAjIEVycm9yIGFscmVhZHkgc2hvd24KICAgICAgICAgcmV0dXJuIDEKQEAgLTQwNyw3ICs0MzcsNyBAQAogICAgICAgICAgICAgcmV0dXJuIDEKIAogICAgICAgICBzcmN0cmVlID0gb3MucGF0aC5hYnNwYXRoKGFyZ3Muc3JjdHJlZSkKLSAgICAgICAgaW5pdGlhbF9yZXYgPSBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwgYXJncy5rZWVwX3RlbXAsIGFyZ3MuYnJhbmNoLCBGYWxzZSwgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlLCBhcmdzLmZpeGVkX3NldHVwLCByZCwgdGluZm9pbCkKKyAgICAgICAgaW5pdGlhbF9yZXYsIF8gPSBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwgYXJncy5rZWVwX3RlbXAsIGFyZ3MuYnJhbmNoLCBGYWxzZSwgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlLCBhcmdzLmZpeGVkX3NldHVwLCByZCwgdGluZm9pbCwgbm9fb3ZlcnJpZGVzPWFyZ3Mubm9fb3ZlcnJpZGVzKQogICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHRyZWUgZXh0cmFjdGVkIHRvICVzJyAlIHNyY3RyZWUpCiAKICAgICAgICAgaWYgaW5pdGlhbF9yZXY6CkBAIC00MjEsNyArNDUxLDcgQEAKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ3N5bmMnIHN1YmNvbW1hbmQiIiIKICAgICBpbXBvcnQgYmIKIAotICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoKQorICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoLCB0cmFja2luZz1UcnVlKQogICAgIGlmIG5vdCB0aW5mb2lsOgogICAgICAgICAjIEVycm9yIGFscmVhZHkgc2hvd24KICAgICAgICAgcmV0dXJuIDEKQEAgLTQzMSw3ICs0NjEsNyBAQAogICAgICAgICAgICAgcmV0dXJuIDEKIAogICAgICAgICBzcmN0cmVlID0gb3MucGF0aC5hYnNwYXRoKGFyZ3Muc3JjdHJlZSkKLSAgICAgICAgaW5pdGlhbF9yZXYgPSBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwgYXJncy5rZWVwX3RlbXAsIGFyZ3MuYnJhbmNoLCBUcnVlLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGFyZ3MuZml4ZWRfc2V0dXAsIHJkLCB0aW5mb2lsKQorICAgICAgICBpbml0aWFsX3JldiwgXyA9IF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBhcmdzLmtlZXBfdGVtcCwgYXJncy5icmFuY2gsIFRydWUsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSwgYXJncy5maXhlZF9zZXR1cCwgcmQsIHRpbmZvaWwsIG5vX292ZXJyaWRlcz1UcnVlKQogICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHRyZWUgJXMgc3luY2hyb25pemVkJyAlIHNyY3RyZWUpCiAKICAgICAgICAgaWYgaW5pdGlhbF9yZXY6CkBAIC00NDIsNyArNDcyLDcgQEAKICAgICAgICAgdGluZm9pbC5zaHV0ZG93bigpCiAKIAotZGVmIF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBrZWVwX3RlbXAsIGRldmJyYW5jaCwgc3luYywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlLCBmaXhlZF9zZXR1cCwgZCwgdGluZm9pbCk6CitkZWYgX2V4dHJhY3Rfc291cmNlKHNyY3RyZWUsIGtlZXBfdGVtcCwgZGV2YnJhbmNoLCBzeW5jLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGZpeGVkX3NldHVwLCBkLCB0aW5mb2lsLCBub19vdmVycmlkZXM9RmFsc2UpOgogICAgICIiIkV4dHJhY3Qgc291cmNlcyBvZiBhIHJlY2lwZSIiIgogICAgIGltcG9ydCBvZS5yZWNpcGV1dGlscwogICAgIGltcG9ydCBvZS5wYXRjaApAQCAtNDcyLDYgKzUwMiwxNiBAQAogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc3JjdHJlZSkKICAgICAgICAgb3Mucm1kaXIoc3JjdHJlZSkKIAorICAgIGV4dHJhX292ZXJyaWRlcyA9IFtdCisgICAgaWYgbm90IG5vX292ZXJyaWRlczoKKyAgICAgICAgaGlzdG9yeSA9IGQudmFyaGlzdG9yeS52YXJpYWJsZSgnU1JDX1VSSScpCisgICAgICAgIGZvciBldmVudCBpbiBoaXN0b3J5OgorICAgICAgICAgICAgaWYgbm90ICdmbGFnJyBpbiBldmVudDoKKyAgICAgICAgICAgICAgICBpZiBldmVudFsnb3AnXS5zdGFydHN3aXRoKCgnX2FwcGVuZFsnLCAnX3ByZXBlbmRbJykpOgorICAgICAgICAgICAgICAgICAgICBleHRyYV9vdmVycmlkZXMuYXBwZW5kKGV2ZW50WydvcCddLnNwbGl0KCdbJylbMV0uc3BsaXQoJ10nKVswXSkKKyAgICAgICAgaWYgZXh0cmFfb3ZlcnJpZGVzOgorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1NSQ19VUkkgY29udGFpbnMgc29tZSBjb25kaXRpb25hbCBhcHBlbmRzL3ByZXBlbmRzIC0gd2lsbCBjcmVhdGUgYnJhbmNoZXMgdG8gcmVwcmVzZW50IHRoZXNlJykKKwogICAgIGluaXRpYWxfcmV2ID0gTm9uZQogCiAgICAgYXBwZW5kZXhpc3RlZCA9IEZhbHNlCkBAIC01MTQsNiArNTU0LDggQEAKICAgICAgICAgICAgIGlmIG5vdCBpc19rZXJuZWxfeW9jdG86CiAgICAgICAgICAgICAgICAgZi53cml0ZSgnUEFUQ0hUT09MID0gImdpdCJcbicpCiAgICAgICAgICAgICAgICAgZi53cml0ZSgnUEFUQ0hfQ09NTUlUX0ZVTkNUSU9OUyA9ICIxIlxuJykKKyAgICAgICAgICAgIGlmIGV4dHJhX292ZXJyaWRlczoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCdERVZUT09MX0VYVFJBX09WRVJSSURFUyA9ICIlcyJcbicgJSAnOicuam9pbihleHRyYV9vdmVycmlkZXMpKQogICAgICAgICAgICAgZi53cml0ZSgnaW5oZXJpdCBkZXZ0b29sLXNvdXJjZVxuJykKICAgICAgICAgICAgIGYud3JpdGUoJyMjIy0tLSBfZXh0cmFjdF9zb3VyY2VcbicpCiAKQEAgLTU0MiwxMSArNTg0LDE1IEBACiAgICAgICAgIGlmIG5vdCByZXM6CiAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ0V4dHJhY3Rpbmcgc291cmNlIGZvciAlcyBmYWlsZWQnICUgcG4pCiAKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnaW5pdGlhbF9yZXYnKSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgaW5pdGlhbF9yZXYgPSBmLnJlYWQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlbXBkaXIsICdpbml0aWFsX3JldicpLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgaW5pdGlhbF9yZXYgPSBmLnJlYWQoKQogCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3NyY3N1YmRpcicpLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBzcmNzdWJkaXIgPSBmLnJlYWQoKQorICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnc3Jjc3ViZGlyJyksICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICBzcmNzdWJkaXIgPSBmLnJlYWQoKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBzb3VyY2UgZXh0cmFjdGlvbiAtIHRoZSBkZXZ0b29sLXNvdXJjZSBjbGFzcyB3YXMgbm90IGFjdGl2ZSBvciBkaWQgbm90IGZ1bmN0aW9uIGNvcnJlY3RseTpcbiVzJyAlIHN0cihlKSkKKyAgICAgICAgc3Jjc3ViZGlyX3JlbCA9IG9zLnBhdGgucmVscGF0aChzcmNzdWJkaXIsIG9zLnBhdGguam9pbih0ZW1wZGlyLCAnd29ya2RpcicpKQogCiAgICAgICAgIHRlbXBkaXJfbG9jYWxkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ29lLWxvY2FsLWZpbGVzJykKICAgICAgICAgc3JjdHJlZV9sb2NhbGRpciA9IG9zLnBhdGguam9pbihzcmN0cmVlLCAnb2UtbG9jYWwtZmlsZXMnKQpAQCAtNjEzLDcgKzY1OSw3IEBACiAgICAgICAgICAgICBsb2dnZXIuaW5mbygnUHJlc2VydmluZyB0ZW1wb3JhcnkgZGlyZWN0b3J5ICVzJyAlIHRlbXBkaXIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHRlbXBkaXIpCi0gICAgcmV0dXJuIGluaXRpYWxfcmV2CisgICAgcmV0dXJuIGluaXRpYWxfcmV2LCBzcmNzdWJkaXJfcmVsCiAKIGRlZiBfYWRkX21kNShjb25maWcsIHJlY2lwZW5hbWUsIGZpbGVuYW1lKToKICAgICAiIiJSZWNvcmQgY2hlY2tzdW0gb2YgYSBmaWxlIChvciByZWN1cnNpdmVseSBmb3IgYSBkaXJlY3RvcnkpIHRvIHRoZSBtZDUtZmlsZSBvZiB0aGUgd29ya3NwYWNlIiIiCkBAIC02NzAsMTIgKzcxNiwxMyBAQAogICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAnbW9kaWZ5JyBzdWJjb21tYW5kIiIiCiAgICAgaW1wb3J0IGJiCiAgICAgaW1wb3J0IG9lLnJlY2lwZXV0aWxzCisgICAgaW1wb3J0IG9lLnBhdGNoCiAKICAgICBpZiBhcmdzLnJlY2lwZW5hbWUgaW4gd29ya3NwYWNlOgogICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoInJlY2lwZSAlcyBpcyBhbHJlYWR5IGluIHlvdXIgd29ya3NwYWNlIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnJlY2lwZW5hbWUpCiAKLSAgICB0aW5mb2lsID0gc2V0dXBfdGluZm9pbChiYXNlcGF0aD1iYXNlcGF0aCkKKyAgICB0aW5mb2lsID0gc2V0dXBfdGluZm9pbChiYXNlcGF0aD1iYXNlcGF0aCwgdHJhY2tpbmc9VHJ1ZSkKICAgICB0cnk6CiAgICAgICAgIHJkID0gcGFyc2VfcmVjaXBlKGNvbmZpZywgdGluZm9pbCwgYXJncy5yZWNpcGVuYW1lLCBUcnVlKQogICAgICAgICBpZiBub3QgcmQ6CkBAIC03MTAsMTQgKzc1NywxNiBAQAogCiAgICAgICAgIGluaXRpYWxfcmV2ID0gTm9uZQogICAgICAgICBjb21taXRzID0gW10KKyAgICAgICAgY2hlY2tfY29tbWl0cyA9IEZhbHNlCiAgICAgICAgIGlmIG5vdCBhcmdzLm5vX2V4dHJhY3Q6Ci0gICAgICAgICAgICBpbml0aWFsX3JldiA9IF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBhcmdzLmtlZXBfdGVtcCwgYXJncy5icmFuY2gsIEZhbHNlLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGFyZ3MuZml4ZWRfc2V0dXAsIHJkLCB0aW5mb2lsKQorICAgICAgICAgICAgaW5pdGlhbF9yZXYsIF8gPSBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwgYXJncy5rZWVwX3RlbXAsIGFyZ3MuYnJhbmNoLCBGYWxzZSwgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlLCBhcmdzLmZpeGVkX3NldHVwLCByZCwgdGluZm9pbCwgbm9fb3ZlcnJpZGVzPWFyZ3Mubm9fb3ZlcnJpZGVzKQogICAgICAgICAgICAgaWYgbm90IGluaXRpYWxfcmV2OgogICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHRyZWUgZXh0cmFjdGVkIHRvICVzJyAlIHNyY3RyZWUpCiAgICAgICAgICAgICAjIEdldCBsaXN0IG9mIGNvbW1pdHMgc2luY2UgdGhpcyByZXZpc2lvbgogICAgICAgICAgICAgKHN0ZG91dCwgXykgPSBiYi5wcm9jZXNzLnJ1bignZ2l0IHJldi1saXN0IC0tcmV2ZXJzZSAlcy4uSEVBRCcgJSBpbml0aWFsX3JldiwgY3dkPXNyY3RyZWUpCiAgICAgICAgICAgICBjb21taXRzID0gc3Rkb3V0LnNwbGl0KCkKKyAgICAgICAgICAgIGNoZWNrX2NvbW1pdHMgPSBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc3JjdHJlZSwgJy5naXQnKSk6CiAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiBpdCdzIGEgdHJlZSBwcmV2aW91c2x5IGV4dHJhY3RlZCBieSB1cwpAQCAtNzI1LDYgKzc3NCw4IEBACiAgICAgICAgICAgICAgICAgICAgIChzdGRvdXQsIF8pID0gYmIucHJvY2Vzcy5ydW4oJ2dpdCBicmFuY2ggLS1jb250YWlucyBkZXZ0b29sLWJhc2UnLCBjd2Q9c3JjdHJlZSkKICAgICAgICAgICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvcjoKICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0ID0gJycKKyAgICAgICAgICAgICAgICBpZiBzdGRvdXQ6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrX2NvbW1pdHMgPSBUcnVlCiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKICAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcqJyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAoc3Rkb3V0LCBfKSA9IGJiLnByb2Nlc3MucnVuKCdnaXQgcmV2LXBhcnNlIGRldnRvb2wtYmFzZScsIGN3ZD1zcmN0cmVlKQpAQCAtNzM0LDYgKzc4NSwzMyBAQAogICAgICAgICAgICAgICAgICAgICAoc3Rkb3V0LCBfKSA9IGJiLnByb2Nlc3MucnVuKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCBjd2Q9c3JjdHJlZSkKICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbF9yZXYgPSBzdGRvdXQucnN0cmlwKCkKIAorICAgICAgICBicmFuY2hfcGF0Y2hlcyA9IHt9CisgICAgICAgIGlmIGNoZWNrX2NvbW1pdHM6CisgICAgICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGFyZSBvdmVycmlkZSBicmFuY2hlcworICAgICAgICAgICAgKHN0ZG91dCwgXykgPSBiYi5wcm9jZXNzLnJ1bignZ2l0IGJyYW5jaCcsIGN3ZD1zcmN0cmVlKQorICAgICAgICAgICAgYnJhbmNoZXMgPSBbXQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnJzdHJpcCgpLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICAgICBicmFuY2huYW1lID0gbGluZVsyOl0ucnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBicmFuY2huYW1lLnN0YXJ0c3dpdGgob3ZlcnJpZGVfYnJhbmNoX3ByZWZpeCk6CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaGVzLmFwcGVuZChicmFuY2huYW1lKQorICAgICAgICAgICAgaWYgYnJhbmNoZXM6CisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ1NSQ19VUkkgaXMgY29uZGl0aW9uYWxseSBvdmVycmlkZGVuIGluIHRoaXMgcmVjaXBlLCB0aHVzIHNldmVyYWwgJXMqIGJyYW5jaGVzIGhhdmUgYmVlbiBjcmVhdGVkLCBvbmUgZm9yIGVhY2ggb3ZlcnJpZGUgdGhhdCBtYWtlcyBjaGFuZ2VzIHRvIFNSQ19VUkkuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IG1ha2UgY2hhbmdlcyB0byB0aGUgJXMgYnJhbmNoIGZpcnN0LCB0aGVuIGNoZWNrb3V0IGFuZCByZWJhc2UgZWFjaCAlcyogYnJhbmNoIGFuZCB1cGRhdGUgYW55IHVuaXF1ZSBwYXRjaGVzIHRoZXJlIChkdXBsaWNhdGVzIG9uIHRob3NlIGJyYW5jaGVzIHdpbGwgYmUgaWdub3JlZCBieSBkZXZ0b29sIGZpbmlzaC91cGRhdGUtcmVjaXBlKScgJSAob3ZlcnJpZGVfYnJhbmNoX3ByZWZpeCwgYXJncy5icmFuY2gsIG92ZXJyaWRlX2JyYW5jaF9wcmVmaXgpKQorICAgICAgICAgICAgYnJhbmNoZXMuaW5zZXJ0KDAsIGFyZ3MuYnJhbmNoKQorICAgICAgICAgICAgc2Vlbl9wYXRjaGVzID0gW10KKyAgICAgICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXM6CisgICAgICAgICAgICAgICAgYnJhbmNoX3BhdGNoZXNbYnJhbmNoXSA9IFtdCisgICAgICAgICAgICAgICAgKHN0ZG91dCwgXykgPSBiYi5wcm9jZXNzLnJ1bignZ2l0IGxvZyBkZXZ0b29sLWJhc2UuLiVzJyAlIGJyYW5jaCwgY3dkPXNyY3RyZWUpCisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgob2UucGF0Y2guR2l0QXBwbHlUcmVlLnBhdGNoX2xpbmVfcHJlZml4KToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdwYXRjaCA9IGxpbmVbbGVuKG9lLnBhdGNoLkdpdEFwcGx5VHJlZS5wYXRjaF9saW5lX3ByZWZpeCk6XS5zcGxpdCgnOicsIDEpWy0xXS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3JpZ3BhdGNoIGluIHNlZW5fcGF0Y2hlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuX3BhdGNoZXMuYXBwZW5kKG9yaWdwYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hfcGF0Y2hlc1ticmFuY2hdLmFwcGVuZChvcmlncGF0Y2gpCisKKyAgICAgICAgIyBOZWVkIHRvIGdyYWIgdGhpcyBoZXJlIGluIGNhc2UgdGhlIHNvdXJjZSBpcyB3aXRoaW4gYSBzdWJkaXJlY3RvcnkKKyAgICAgICAgc3JjdHJlZWJhc2UgPSBzcmN0cmVlCisKICAgICAgICAgIyBDaGVjayB0aGF0IHJlY2lwZSBpc24ndCB1c2luZyBhIHNoYXJlZCB3b3JrZGlyCiAgICAgICAgIHMgPSBvcy5wYXRoLmFic3BhdGgocmQuZ2V0VmFyKCdTJykpCiAgICAgICAgIHdvcmtkaXIgPSBvcy5wYXRoLmFic3BhdGgocmQuZ2V0VmFyKCdXT1JLRElSJykpCkBAIC03NDgsNyArODI2LDggQEAKICAgICAgICAgICAgICMgTG9jYWwgZmlsZXMgY2FuIGJlIG1vZGlmaWVkL3RyYWNrZWQgaW4gc2VwYXJhdGUgc3ViZGlyIHVuZGVyIHNyY3RyZWUKICAgICAgICAgICAgICMgTW9zdGx5IHVzZWZ1bCBmb3IgcGFja2FnZXMgd2l0aCBTICE9IFdPUktESVIKICAgICAgICAgICAgIGYud3JpdGUoJ0ZJTEVTUEFUSF9wcmVwZW5kIDo9ICIlczoiXG4nICUKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNyY3RyZWUsICdvZS1sb2NhbC1maWxlcycpKQorICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3JjdHJlZWJhc2UsICdvZS1sb2NhbC1maWxlcycpKQorICAgICAgICAgICAgZi53cml0ZSgnIyBzcmN0cmVlYmFzZTogJXNcbicgJSBzcmN0cmVlYmFzZSkKIAogICAgICAgICAgICAgZi53cml0ZSgnXG5pbmhlcml0IGV4dGVybmFsc3JjXG4nKQogICAgICAgICAgICAgZi53cml0ZSgnIyBOT1RFOiBXZSB1c2UgcG4tIG92ZXJyaWRlcyBoZXJlIHRvIGF2b2lkIGFmZmVjdGluZyBtdWx0aXBsZSB2YXJpYW50cyBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgcmVjaXBlIHVzZXMgQkJDTEFTU0VYVEVORFxuJykKQEAgLTc3Miw2ICs4NTEsMTEgQEAKICAgICAgICAgICAgICAgICBmLndyaXRlKCdcbiMgaW5pdGlhbF9yZXY6ICVzXG4nICUgaW5pdGlhbF9yZXYpCiAgICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcjIGNvbW1pdDogJXNcbicgJSBjb21taXQpCisgICAgICAgICAgICBpZiBicmFuY2hfcGF0Y2hlczoKKyAgICAgICAgICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaF9wYXRjaGVzOgorICAgICAgICAgICAgICAgICAgICBpZiBicmFuY2ggPT0gYXJncy5icmFuY2g6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcjIHBhdGNoZXNfJXM6ICVzXG4nICUgKGJyYW5jaCwgJywnLmpvaW4oYnJhbmNoX3BhdGNoZXNbYnJhbmNoXSkpKQogCiAgICAgICAgIHVwZGF0ZV91bmxvY2tlZHNpZ3MoYmFzZXBhdGgsIHdvcmtzcGFjZSwgYXJncy5maXhlZF9zZXR1cCwgW3BuXSkKIApAQCAtOTc3LDIxICsxMDYxLDI5IEBACiAgICAgcmV0dXJuIDAKIAogCi1kZWYgX2dldF9wYXRjaHNldF9yZXZzKHNyY3RyZWUsIHJlY2lwZV9wYXRoLCBpbml0aWFsX3Jldj1Ob25lKToKK2RlZiBfZ2V0X3BhdGNoc2V0X3JldnMoc3JjdHJlZSwgcmVjaXBlX3BhdGgsIGluaXRpYWxfcmV2PU5vbmUsIGZvcmNlX3BhdGNoX3JlZnJlc2g9RmFsc2UpOgogICAgICIiIkdldCBpbml0aWFsIGFuZCB1cGRhdGUgcmV2IG9mIGEgcmVjaXBlLiBUaGVzZSBhcmUgdGhlIHN0YXJ0IHBvaW50IG9mIHRoZQogICAgIHdob2xlIHBhdGNoc2V0IGFuZCBzdGFydCBwb2ludCBmb3IgdGhlIHBhdGNoZXMgdG8gYmUgcmUtZ2VuZXJhdGVkL3VwZGF0ZWQuCiAgICAgIiIiCiAgICAgaW1wb3J0IGJiCiAKKyAgICAjIEdldCBjdXJyZW50IGJyYW5jaAorICAgIHN0ZG91dCwgXyA9IGJiLnByb2Nlc3MucnVuKCdnaXQgcmV2LXBhcnNlIC0tYWJicmV2LXJlZiBIRUFEJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c3JjdHJlZSkKKyAgICBicmFuY2huYW1lID0gc3Rkb3V0LnJzdHJpcCgpCisKICAgICAjIFBhcnNlIGluaXRpYWwgcmV2IGZyb20gcmVjaXBlIGlmIG5vdCBzcGVjaWZpZWQKICAgICBjb21taXRzID0gW10KKyAgICBwYXRjaGVzID0gW10KICAgICB3aXRoIG9wZW4ocmVjaXBlX3BhdGgsICdyJykgYXMgZjoKICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIyBpbml0aWFsX3JldjonKToKICAgICAgICAgICAgICAgICBpZiBub3QgaW5pdGlhbF9yZXY6CiAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxfcmV2ID0gbGluZS5zcGxpdCgnOicpWy0xXS5zdHJpcCgpCi0gICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnIyBjb21taXQ6Jyk6CisgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnIyBjb21taXQ6JykgYW5kIG5vdCBmb3JjZV9wYXRjaF9yZWZyZXNoOgogICAgICAgICAgICAgICAgIGNvbW1pdHMuYXBwZW5kKGxpbmUuc3BsaXQoJzonKVstMV0uc3RyaXAoKSkKKyAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCcjIHBhdGNoZXNfJXM6JyAlIGJyYW5jaG5hbWUpOgorICAgICAgICAgICAgICAgIHBhdGNoZXMgPSBsaW5lLnNwbGl0KCc6JylbLTFdLnN0cmlwKCkuc3BsaXQoJywnKQogCiAgICAgdXBkYXRlX3JldiA9IGluaXRpYWxfcmV2CiAgICAgY2hhbmdlZF9yZXZzID0gTm9uZQpAQCAtMTAxMCw3ICsxMTAyLDcgQEAKICAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuRXhlY3V0aW9uRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZQogCi0gICAgICAgIGlmIHN0ZG91dCBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lIGFuZCBub3QgZm9yY2VfcGF0Y2hfcmVmcmVzaDoKICAgICAgICAgICAgIGNoYW5nZWRfcmV2cyA9IFtdCiAgICAgICAgICAgICBmb3IgbGluZSBpbiBzdGRvdXQuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnKyAnKToKQEAgLTEwMTgsNyArMTExMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIHJldiBpbiBuZXdjb21taXRzOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZF9yZXZzLmFwcGVuZChyZXYpCiAKLSAgICByZXR1cm4gaW5pdGlhbF9yZXYsIHVwZGF0ZV9yZXYsIGNoYW5nZWRfcmV2cworICAgIHJldHVybiBpbml0aWFsX3JldiwgdXBkYXRlX3JldiwgY2hhbmdlZF9yZXZzLCBwYXRjaGVzCiAKIGRlZiBfcmVtb3ZlX2ZpbGVfZW50cmllcyhzcmN1cmksIGZpbGVsaXN0KToKICAgICAiIiJSZW1vdmUgZmlsZTovLyBlbnRyaWVzIGZyb20gU1JDX1VSSSIiIgpAQCAtMTA0NCw4ICsxMTM2LDExIEBACiAgICAgICAgICAgICBzcmN1cmkuaW5zZXJ0KGksIG5ld2VudHJ5KQogICAgICAgICAgICAgYnJlYWsKIAotZGVmIF9yZW1vdmVfc291cmNlX2ZpbGVzKGFwcGVuZCwgZmlsZXMsIGRlc3RwYXRoKToKK2RlZiBfcmVtb3ZlX3NvdXJjZV9maWxlcyhhcHBlbmQsIGZpbGVzLCBkZXN0cGF0aCwgbm9fcmVwb3J0X3JlbW92ZT1GYWxzZSwgZHJ5X3J1bj1GYWxzZSk6CiAgICAgIiIiVW5saW5rIGV4aXN0aW5nIHBhdGNoIGZpbGVzIiIiCisKKyAgICBkcnlfcnVuX3N1ZmZpeCA9ICcgKGRyeS1ydW4pJyBpZiBkcnlfcnVuIGVsc2UgJycKKwogICAgIGZvciBwYXRoIGluIGZpbGVzOgogICAgICAgICBpZiBhcHBlbmQ6CiAgICAgICAgICAgICBpZiBub3QgZGVzdHBhdGg6CkBAIC0xMDUzLDE5ICsxMTQ4LDIxIEBACiAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRlc3RwYXRoLCBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpKQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1JlbW92aW5nIGZpbGUgJXMnICUgcGF0aCkKLSAgICAgICAgICAgICMgRklYTUUgImdpdCBybSIgaGVyZSB3b3VsZCBiZSBuaWNlIGlmIHRoZSBmaWxlIGluIHF1ZXN0aW9uIGlzCi0gICAgICAgICAgICAjICAgICAgIHRyYWNrZWQKLSAgICAgICAgICAgICMgRklYTUUgdGhlcmUncyBhIGNoYW5jZSB0aGF0IHRoaXMgZmlsZSBpcyByZWZlcnJlZCB0byBieQotICAgICAgICAgICAgIyAgICAgICBhbm90aGVyIHJlY2lwZSwgaW4gd2hpY2ggY2FzZSBkZWxldGluZyB3b3VsZG4ndCBiZSB0aGUKLSAgICAgICAgICAgICMgICAgICAgcmlnaHQgdGhpbmcgdG8gZG8KLSAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQotICAgICAgICAgICAgIyBSZW1vdmUgZGlyZWN0b3J5IGlmIGVtcHR5Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3Mucm1kaXIob3MucGF0aC5kaXJuYW1lKHBhdGgpKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgb3NlOgotICAgICAgICAgICAgICAgIGlmIG9zZS5lcnJubyAhPSBlcnJuby5FTk9URU1QVFk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBpZiBub3Qgbm9fcmVwb3J0X3JlbW92ZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnUmVtb3ZpbmcgZmlsZSAlcyVzJyAlIChwYXRoLCBkcnlfcnVuX3N1ZmZpeCkpCisgICAgICAgICAgICBpZiBub3QgZHJ5X3J1bjoKKyAgICAgICAgICAgICAgICAjIEZJWE1FICJnaXQgcm0iIGhlcmUgd291bGQgYmUgbmljZSBpZiB0aGUgZmlsZSBpbiBxdWVzdGlvbiBpcworICAgICAgICAgICAgICAgICMgICAgICAgdHJhY2tlZAorICAgICAgICAgICAgICAgICMgRklYTUUgdGhlcmUncyBhIGNoYW5jZSB0aGF0IHRoaXMgZmlsZSBpcyByZWZlcnJlZCB0byBieQorICAgICAgICAgICAgICAgICMgICAgICAgYW5vdGhlciByZWNpcGUsIGluIHdoaWNoIGNhc2UgZGVsZXRpbmcgd291bGRuJ3QgYmUgdGhlCisgICAgICAgICAgICAgICAgIyAgICAgICByaWdodCB0aGluZyB0byBkbworICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgICAgICMgUmVtb3ZlIGRpcmVjdG9yeSBpZiBlbXB0eQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIob3MucGF0aC5kaXJuYW1lKHBhdGgpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG9zZToKKyAgICAgICAgICAgICAgICAgICAgaWYgb3NlLmVycm5vICE9IGVycm5vLkVOT1RFTVBUWToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKIAogZGVmIF9leHBvcnRfcGF0Y2hlcyhzcmN0cmVlLCByZCwgc3RhcnRfcmV2LCBkZXN0ZGlyLCBjaGFuZ2VkX3JldnM9Tm9uZSk6CkBAIC0xMDg1LDYgKzExODIsNyBAQAogCiAgICAgZXhpc3RpbmdfcGF0Y2hlcyA9IGRpY3QoKG9zLnBhdGguYmFzZW5hbWUocGF0aCksIHBhdGgpIGZvciBwYXRoIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9wYXRjaGVzKHJkKSkKKyAgICBsb2dnZXIuZGVidWcoJ0V4aXN0aW5nIHBhdGNoZXM6ICVzJyAlIGV4aXN0aW5nX3BhdGNoZXMpCiAKICAgICAjIEdlbmVyYXRlIHBhdGNoZXMgZnJvbSBHaXQsIGV4Y2x1ZGUgbG9jYWwgZmlsZXMgZGlyZWN0b3J5CiAgICAgcGF0Y2hfcGF0aHNwZWMgPSBfZ2l0X2V4Y2x1ZGVfcGF0aChzcmN0cmVlLCAnb2UtbG9jYWwtZmlsZXMnKQpAQCAtMTE2Niw3ICsxMjY0LDcgQEAKICAgICByZXR1cm4gRmFsc2UKIAogCi1kZWYgX2V4cG9ydF9sb2NhbF9maWxlcyhzcmN0cmVlLCByZCwgZGVzdGRpcik6CitkZWYgX2V4cG9ydF9sb2NhbF9maWxlcyhzcmN0cmVlLCByZCwgZGVzdGRpciwgc3JjdHJlZWJhc2UpOgogICAgICIiIkNvcHkgbG9jYWwgZmlsZXMgZnJvbSBzcmN0cmVlIHRvIGdpdmVuIGxvY2F0aW9uLgogICAgICAgIFJldHVybnMgdGhyZWUtdHVwbGUgb2YgZGljdHM6CiAgICAgICAgICAxLiB1cGRhdGVkIC0gZmlsZXMgdGhhdCBhbHJlYWR5IGV4aXN0IGluIFNSQ1VSSQpAQCAtMTE4Niw3ICsxMjg0LDcgQEAKICAgICB1cGRhdGVkID0gT3JkZXJlZERpY3QoKQogICAgIGFkZGVkID0gT3JkZXJlZERpY3QoKQogICAgIHJlbW92ZWQgPSBPcmRlcmVkRGljdCgpCi0gICAgbG9jYWxfZmlsZXNfZGlyID0gb3MucGF0aC5qb2luKHNyY3RyZWUsICdvZS1sb2NhbC1maWxlcycpCisgICAgbG9jYWxfZmlsZXNfZGlyID0gb3MucGF0aC5qb2luKHNyY3RyZWViYXNlLCAnb2UtbG9jYWwtZmlsZXMnKQogICAgIGdpdF9maWxlcyA9IF9naXRfbHNfdHJlZShzcmN0cmVlKQogICAgIGlmICdvZS1sb2NhbC1maWxlcycgaW4gZ2l0X2ZpbGVzOgogICAgICAgICAjIElmIHRyYWNrZWQgYnkgR2l0LCB0YWtlIHRoZSBmaWxlcyBmcm9tIHNyY3RyZWUgSEVBRC4gRmlyc3QgZ2V0CkBAIC0xMTk5LDkgKzEyOTcsOSBAQAogICAgICAgICBuZXdfc2V0ID0gbGlzdChfZ2l0X2xzX3RyZWUoc3JjdHJlZSwgdHJlZSwgVHJ1ZSkua2V5cygpKQogICAgIGVsaWYgb3MucGF0aC5pc2Rpcihsb2NhbF9maWxlc19kaXIpOgogICAgICAgICAjIElmIG5vdCB0cmFja2VkIGJ5IEdpdCwganVzdCBjb3B5IGZyb20gd29ya2luZyBjb3B5Ci0gICAgICAgIG5ld19zZXQgPSBfbHNfdHJlZShvcy5wYXRoLmpvaW4oc3JjdHJlZSwgJ29lLWxvY2FsLWZpbGVzJykpCisgICAgICAgIG5ld19zZXQgPSBfbHNfdHJlZShsb2NhbF9maWxlc19kaXIpCiAgICAgICAgIGJiLnByb2Nlc3MucnVuKFsnY3AnLCAnLWF4JywKLSAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzcmN0cmVlLCAnb2UtbG9jYWwtZmlsZXMnLCAnLicpLCBkZXN0ZGlyXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihsb2NhbF9maWxlc19kaXIsICcuJyksIGRlc3RkaXJdKQogICAgIGVsc2U6CiAgICAgICAgIG5ld19zZXQgPSBbXQogCkBAIC0xMjY2LDEzICsxMzY0LDE2IEBACiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihyZWNpcGVkaXIsIHJkLmdldFZhcignQlBOJykpCiAKIAotZGVmIF91cGRhdGVfcmVjaXBlX3NyY3JldihzcmN0cmVlLCByZCwgYXBwZW5kbGF5ZXJkaXIsIHdpbGRjYXJkX3ZlcnNpb24sIG5vX3JlbW92ZSk6CitkZWYgX3VwZGF0ZV9yZWNpcGVfc3JjcmV2KHJlY2lwZW5hbWUsIHdvcmtzcGFjZSwgc3JjdHJlZSwgcmQsIGFwcGVuZGxheWVyZGlyLCB3aWxkY2FyZF92ZXJzaW9uLCBub19yZW1vdmUsIG5vX3JlcG9ydF9yZW1vdmUsIGRyeV9ydW5fb3V0ZGlyPU5vbmUpOgogICAgICIiIkltcGxlbWVudCB0aGUgJ3NyY3JldicgbW9kZSBvZiB1cGRhdGUtcmVjaXBlIiIiCiAgICAgaW1wb3J0IGJiCiAgICAgaW1wb3J0IG9lLnJlY2lwZXV0aWxzCiAKKyAgICBkcnlfcnVuX3N1ZmZpeCA9ICcgKGRyeS1ydW4pJyBpZiBkcnlfcnVuX291dGRpciBlbHNlICcnCisKICAgICByZWNpcGVmaWxlID0gcmQuZ2V0VmFyKCdGSUxFJykKLSAgICBsb2dnZXIuaW5mbygnVXBkYXRpbmcgU1JDUkVWIGluIHJlY2lwZSAlcycgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKQorICAgIHJlY2lwZWRpciA9IG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkKKyAgICBsb2dnZXIuaW5mbygnVXBkYXRpbmcgU1JDUkVWIGluIHJlY2lwZSAlcyVzJyAlIChyZWNpcGVkaXIsIGRyeV9ydW5fc3VmZml4KSkKIAogICAgICMgR2V0IEhFQUQgcmV2aXNpb24KICAgICB0cnk6CkBAIC0xMjkyLDkgKzEzOTMsMTEgQEAKICAgICBzcmN1cmkgPSBvcmlnX3NyY191cmkuc3BsaXQoKQogICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbCcpCiAgICAgdXBkYXRlX3NyY3VyaSA9IEZhbHNlCisgICAgYXBwZW5kZmlsZSA9IE5vbmUKICAgICB0cnk6CiAgICAgICAgIGxvY2FsX2ZpbGVzX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPXRlbXBkaXIpCi0gICAgICAgIHVwZF9mLCBuZXdfZiwgZGVsX2YgPSBfZXhwb3J0X2xvY2FsX2ZpbGVzKHNyY3RyZWUsIHJkLCBsb2NhbF9maWxlc19kaXIpCisgICAgICAgIHNyY3RyZWViYXNlID0gd29ya3NwYWNlW3JlY2lwZW5hbWVdWydzcmN0cmVlYmFzZSddCisgICAgICAgIHVwZF9mLCBuZXdfZiwgZGVsX2YgPSBfZXhwb3J0X2xvY2FsX2ZpbGVzKHNyY3RyZWUsIHJkLCBsb2NhbF9maWxlc19kaXIsIHNyY3RyZWViYXNlKQogICAgICAgICBpZiBub3Qgbm9fcmVtb3ZlOgogICAgICAgICAgICAgIyBGaW5kIGxpc3Qgb2YgZXhpc3RpbmcgcGF0Y2hlcyBpbiByZWNpcGUgZmlsZQogICAgICAgICAgICAgcGF0Y2hlc19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj10ZW1wZGlyKQpAQCAtMTMxNiwyOSArMTQxOSwzNiBAQAogICAgICAgICAgICAgaWYgdXBkYXRlX3NyY3VyaToKICAgICAgICAgICAgICAgICByZW1vdmV2YWx1ZXMgID0geydTUkNfVVJJJzogcmVtb3ZlZGVudHJpZXN9CiAgICAgICAgICAgICAgICAgcGF0Y2hmaWVsZHNbJ1NSQ19VUkknXSA9ICdcXFxuICAgICcuam9pbihzcmN1cmkpCi0gICAgICAgICAgICBfLCBkZXN0cGF0aCA9IG9lLnJlY2lwZXV0aWxzLmJiYXBwZW5kX3JlY2lwZSgKLSAgICAgICAgICAgICAgICAgICAgcmQsIGFwcGVuZGxheWVyZGlyLCBmaWxlcywgd2lsZGNhcmR2ZXI9d2lsZGNhcmRfdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFsaW5lcz1wYXRjaGZpZWxkcywgcmVtb3ZldmFsdWVzPXJlbW92ZXZhbHVlcykKKyAgICAgICAgICAgIGlmIGRyeV9ydW5fb3V0ZGlyOgorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdDcmVhdGluZyBiYmFwcGVuZCAoZHJ5LXJ1biknKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcHBlbmRmaWxlLCBkZXN0cGF0aCA9IG9lLnJlY2lwZXV0aWxzLmJiYXBwZW5kX3JlY2lwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJkLCBhcHBlbmRsYXllcmRpciwgZmlsZXMsIHdpbGRjYXJkdmVyPXdpbGRjYXJkX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWxpbmVzPXBhdGNoZmllbGRzLCByZW1vdmV2YWx1ZXM9cmVtb3ZldmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Rfb3V0cHV0PWRyeV9ydW5fb3V0ZGlyKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmlsZXNfZGlyID0gX2RldGVybWluZV9maWxlc19kaXIocmQpCiAgICAgICAgICAgICBmb3IgYmFzZXBhdGgsIHBhdGggaW4gdXBkX2YuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXBkYXRpbmcgZmlsZSAlcycgJSBiYXNlcGF0aCkKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXBkYXRpbmcgZmlsZSAlcyVzJyAlIChiYXNlcGF0aCwgZHJ5X3J1bl9zdWZmaXgpKQogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNhYnMoYmFzZXBhdGgpOgogICAgICAgICAgICAgICAgICAgICAjIE9yaWdpbmFsIGZpbGUgKHByb2JhYmx5IHdpdGggc3ViZGlyIHBvaW50aW5nIGluc2lkZSBzb3VyY2UgdHJlZSkKICAgICAgICAgICAgICAgICAgICAgIyBzbyB3ZSBkbyBub3Qgd2FudCB0byBtb3ZlIGl0LCBqdXN0IGNvcHkKLSAgICAgICAgICAgICAgICAgICAgX2NvcHlfZmlsZShiYXNlcGF0aCwgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgX2NvcHlfZmlsZShiYXNlcGF0aCwgcGF0aCwgZHJ5X3J1bl9vdXRkaXI9ZHJ5X3J1bl9vdXRkaXIsIGJhc2Vfb3V0ZGlyPXJlY2lwZWRpcikKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBfbW92ZV9maWxlKG9zLnBhdGguam9pbihsb2NhbF9maWxlc19kaXIsIGJhc2VwYXRoKSwgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgX21vdmVfZmlsZShvcy5wYXRoLmpvaW4obG9jYWxfZmlsZXNfZGlyLCBiYXNlcGF0aCksIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJ5X3J1bl9vdXRkaXI9ZHJ5X3J1bl9vdXRkaXIsIGJhc2Vfb3V0ZGlyPXJlY2lwZWRpcikKICAgICAgICAgICAgICAgICB1cGRhdGVfc3JjdXJpPSBUcnVlCiAgICAgICAgICAgICBmb3IgYmFzZXBhdGgsIHBhdGggaW4gbmV3X2YuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQWRkaW5nIG5ldyBmaWxlICVzJyAlIGJhc2VwYXRoKQorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdBZGRpbmcgbmV3IGZpbGUgJXMlcycgJSAoYmFzZXBhdGgsIGRyeV9ydW5fc3VmZml4KSkKICAgICAgICAgICAgICAgICBfbW92ZV9maWxlKG9zLnBhdGguam9pbihsb2NhbF9maWxlc19kaXIsIGJhc2VwYXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihmaWxlc19kaXIsIGJhc2VwYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihmaWxlc19kaXIsIGJhc2VwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV9vdXRkaXI9cmVjaXBlZGlyKQogICAgICAgICAgICAgICAgIHNyY3VyaS5hcHBlbmQoJ2ZpbGU6Ly8lcycgJSBiYXNlcGF0aCkKICAgICAgICAgICAgICAgICB1cGRhdGVfc3JjdXJpID0gVHJ1ZQogICAgICAgICAgICAgaWYgdXBkYXRlX3NyY3VyaToKICAgICAgICAgICAgICAgICBwYXRjaGZpZWxkc1snU1JDX1VSSSddID0gJyAnLmpvaW4oc3JjdXJpKQotICAgICAgICAgICAgb2UucmVjaXBldXRpbHMucGF0Y2hfcmVjaXBlKHJkLCByZWNpcGVmaWxlLCBwYXRjaGZpZWxkcykKKyAgICAgICAgICAgIHJldCA9IG9lLnJlY2lwZXV0aWxzLnBhdGNoX3JlY2lwZShyZCwgcmVjaXBlZmlsZSwgcGF0Y2hmaWVsZHMsIHJlZGlyZWN0X291dHB1dD1kcnlfcnVuX291dGRpcikKICAgICBmaW5hbGx5OgogICAgICAgICBzaHV0aWwucm10cmVlKHRlbXBkaXIpCiAgICAgaWYgbm90ICdnaXQ6Ly8nIGluIG9yaWdfc3JjX3VyaToKQEAgLTEzNDYsNDcgKzE0NTYsNjIgQEAKICAgICAgICAgICAgICAgICAgICAgJ3BvaW50IHRvIGEgZ2l0IHJlcG9zaXRvcnkgd2hlcmUgeW91IGhhdmUgcHVzaGVkIHlvdXIgJwogICAgICAgICAgICAgICAgICAgICAnY2hhbmdlcycpCiAKLSAgICBfcmVtb3ZlX3NvdXJjZV9maWxlcyhhcHBlbmRsYXllcmRpciwgcmVtb3ZlX2ZpbGVzLCBkZXN0cGF0aCkKLSAgICByZXR1cm4gVHJ1ZQorICAgIF9yZW1vdmVfc291cmNlX2ZpbGVzKGFwcGVuZGxheWVyZGlyLCByZW1vdmVfZmlsZXMsIGRlc3RwYXRoLCBub19yZXBvcnRfcmVtb3ZlLCBkcnlfcnVuPWRyeV9ydW5fb3V0ZGlyKQorICAgIHJldHVybiBUcnVlLCBhcHBlbmRmaWxlLCByZW1vdmVfZmlsZXMKIAotZGVmIF91cGRhdGVfcmVjaXBlX3BhdGNoKHJlY2lwZW5hbWUsIHdvcmtzcGFjZSwgc3JjdHJlZSwgcmQsIGFwcGVuZGxheWVyZGlyLCB3aWxkY2FyZF92ZXJzaW9uLCBub19yZW1vdmUsIGluaXRpYWxfcmV2KToKK2RlZiBfdXBkYXRlX3JlY2lwZV9wYXRjaChyZWNpcGVuYW1lLCB3b3Jrc3BhY2UsIHNyY3RyZWUsIHJkLCBhcHBlbmRsYXllcmRpciwgd2lsZGNhcmRfdmVyc2lvbiwgbm9fcmVtb3ZlLCBub19yZXBvcnRfcmVtb3ZlLCBpbml0aWFsX3JldiwgZHJ5X3J1bl9vdXRkaXI9Tm9uZSwgZm9yY2VfcGF0Y2hfcmVmcmVzaD1GYWxzZSk6CiAgICAgIiIiSW1wbGVtZW50IHRoZSAncGF0Y2gnIG1vZGUgb2YgdXBkYXRlLXJlY2lwZSIiIgogICAgIGltcG9ydCBiYgogICAgIGltcG9ydCBvZS5yZWNpcGV1dGlscwogCiAgICAgcmVjaXBlZmlsZSA9IHJkLmdldFZhcignRklMRScpCisgICAgcmVjaXBlZGlyID0gb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpCiAgICAgYXBwZW5kID0gd29ya3NwYWNlW3JlY2lwZW5hbWVdWydiYmFwcGVuZCddCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGFwcGVuZCk6CiAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcigndW5hYmxlIHRvIGZpbmQgd29ya3NwYWNlIGJiYXBwZW5kIGZvciByZWNpcGUgJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZW5hbWUpCiAKLSAgICBpbml0aWFsX3JldiwgdXBkYXRlX3JldiwgY2hhbmdlZF9yZXZzID0gX2dldF9wYXRjaHNldF9yZXZzKHNyY3RyZWUsIGFwcGVuZCwgaW5pdGlhbF9yZXYpCisgICAgaW5pdGlhbF9yZXYsIHVwZGF0ZV9yZXYsIGNoYW5nZWRfcmV2cywgZmlsdGVyX3BhdGNoZXMgPSBfZ2V0X3BhdGNoc2V0X3JldnMoc3JjdHJlZSwgYXBwZW5kLCBpbml0aWFsX3JldiwgZm9yY2VfcGF0Y2hfcmVmcmVzaCkKICAgICBpZiBub3QgaW5pdGlhbF9yZXY6CiAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignVW5hYmxlIHRvIGZpbmQgaW5pdGlhbCByZXZpc2lvbiAtIHBsZWFzZSBzcGVjaWZ5ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpdCB3aXRoIC0taW5pdGlhbC1yZXYnKQogCisgICAgYXBwZW5kZmlsZSA9IE5vbmUKICAgICBkbF9kaXIgPSByZC5nZXRWYXIoJ0RMX0RJUicpCiAgICAgaWYgbm90IGRsX2Rpci5lbmRzd2l0aCgnLycpOgogICAgICAgICBkbF9kaXIgKz0gJy8nCiAKKyAgICBkcnlfcnVuX3N1ZmZpeCA9ICcgKGRyeS1ydW4pJyBpZiBkcnlfcnVuX291dGRpciBlbHNlICcnCisKICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2wnKQogICAgIHRyeToKICAgICAgICAgbG9jYWxfZmlsZXNfZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9dGVtcGRpcikKLSAgICAgICAgdXBkX2YsIG5ld19mLCBkZWxfZiA9IF9leHBvcnRfbG9jYWxfZmlsZXMoc3JjdHJlZSwgcmQsIGxvY2FsX2ZpbGVzX2RpcikKKyAgICAgICAgaWYgZmlsdGVyX3BhdGNoZXM6CisgICAgICAgICAgICB1cGRfZiA9IHt9CisgICAgICAgICAgICBuZXdfZiA9IHt9CisgICAgICAgICAgICBkZWxfZiA9IHt9CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzcmN0cmVlYmFzZSA9IHdvcmtzcGFjZVtyZWNpcGVuYW1lXVsnc3JjdHJlZWJhc2UnXQorICAgICAgICAgICAgdXBkX2YsIG5ld19mLCBkZWxfZiA9IF9leHBvcnRfbG9jYWxfZmlsZXMoc3JjdHJlZSwgcmQsIGxvY2FsX2ZpbGVzX2Rpciwgc3JjdHJlZWJhc2UpCiAKICAgICAgICAgcmVtb3ZlX2ZpbGVzID0gW10KICAgICAgICAgaWYgbm90IG5vX3JlbW92ZToKICAgICAgICAgICAgICMgR2V0IGFsbCBwYXRjaGVzIGZyb20gc291cmNlIHRyZWUgYW5kIGNoZWNrIGlmIGFueSBzaG91bGQgYmUgcmVtb3ZlZAogICAgICAgICAgICAgYWxsX3BhdGNoZXNfZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9dGVtcGRpcikKLSAgICAgICAgICAgIHVwZF9wLCBuZXdfcCwgZGVsX3AgPSBfZXhwb3J0X3BhdGNoZXMoc3JjdHJlZSwgcmQsIGluaXRpYWxfcmV2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfcGF0Y2hlc19kaXIpCisgICAgICAgICAgICBfLCBfLCBkZWxfcCA9IF9leHBvcnRfcGF0Y2hlcyhzcmN0cmVlLCByZCwgaW5pdGlhbF9yZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfcGF0Y2hlc19kaXIpCiAgICAgICAgICAgICAjIFJlbW92ZSBkZWxldGVkIGxvY2FsIGZpbGVzIGFuZCAgcGF0Y2hlcwogICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzID0gbGlzdChkZWxfZi52YWx1ZXMoKSkgKyBsaXN0KGRlbF9wLnZhbHVlcygpKQogCiAgICAgICAgICMgR2V0IHVwZGF0ZWQgcGF0Y2hlcyBmcm9tIHNvdXJjZSB0cmVlCiAgICAgICAgIHBhdGNoZXNfZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9dGVtcGRpcikKLSAgICAgICAgdXBkX3AsIG5ld19wLCBkZWxfcCA9IF9leHBvcnRfcGF0Y2hlcyhzcmN0cmVlLCByZCwgdXBkYXRlX3JldiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzX2RpciwgY2hhbmdlZF9yZXZzKQorICAgICAgICB1cGRfcCwgbmV3X3AsIF8gPSBfZXhwb3J0X3BhdGNoZXMoc3JjdHJlZSwgcmQsIHVwZGF0ZV9yZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzX2RpciwgY2hhbmdlZF9yZXZzKQorICAgICAgICBsb2dnZXIuZGVidWcoJ1ByZS1maWx0ZXJpbmc6IHVwZGF0ZTogJXMsIG5ldzogJXMnICUgKGRpY3QodXBkX3ApLCBkaWN0KG5ld19wKSkpCisgICAgICAgIGlmIGZpbHRlcl9wYXRjaGVzOgorICAgICAgICAgICAgbmV3X3AgPSB7fQorICAgICAgICAgICAgdXBkX3AgPSB7azp2IGZvciBrLHYgaW4gdXBkX3AuaXRlbXMoKSBpZiBrIGluIGZpbHRlcl9wYXRjaGVzfQorICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzID0gW2YgZm9yIGYgaW4gcmVtb3ZlX2ZpbGVzIGlmIGYgaW4gZmlsdGVyX3BhdGNoZXNdCiAgICAgICAgIHVwZGF0ZWZpbGVzID0gRmFsc2UKICAgICAgICAgdXBkYXRlcmVjaXBlID0gRmFsc2UKICAgICAgICAgZGVzdHBhdGggPSBOb25lCkBAIC0xNDA1LDEwICsxNTMwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBbJ2ZpbGU6Ly8nICsgb3MucGF0aC5iYXNlbmFtZShpdGVtKSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtIGluIHJlbWFpbmluZ10KICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZXZhbHVlcyA9IHsnU1JDX1VSSSc6IHJlbW92ZWRlbnRyaWVzICsgcmVtYWluaW5nfQotICAgICAgICAgICAgICAgIF8sIGRlc3RwYXRoID0gb2UucmVjaXBldXRpbHMuYmJhcHBlbmRfcmVjaXBlKAorICAgICAgICAgICAgICAgIGFwcGVuZGZpbGUsIGRlc3RwYXRoID0gb2UucmVjaXBldXRpbHMuYmJhcHBlbmRfcmVjaXBlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZCwgYXBwZW5kbGF5ZXJkaXIsIGZpbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZHZlcj13aWxkY2FyZF92ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmV2YWx1ZXM9cmVtb3ZldmFsdWVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmV2YWx1ZXM9cmVtb3ZldmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdF9vdXRwdXQ9ZHJ5X3J1bl9vdXRkaXIpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdObyBwYXRjaGVzIG9yIGxvY2FsIHNvdXJjZSBmaWxlcyBuZWVkZWQgdXBkYXRpbmcnKQogICAgICAgICBlbHNlOgpAQCAtMTQxOSw5ICsxNTQ1LDExIEBACiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2FicyhiYXNlcGF0aCk6CiAgICAgICAgICAgICAgICAgICAgICMgT3JpZ2luYWwgZmlsZSAocHJvYmFibHkgd2l0aCBzdWJkaXIgcG9pbnRpbmcgaW5zaWRlIHNvdXJjZSB0cmVlKQogICAgICAgICAgICAgICAgICAgICAjIHNvIHdlIGRvIG5vdCB3YW50IHRvIG1vdmUgaXQsIGp1c3QgY29weQotICAgICAgICAgICAgICAgICAgICBfY29weV9maWxlKGJhc2VwYXRoLCBwYXRoKQorICAgICAgICAgICAgICAgICAgICBfY29weV9maWxlKGJhc2VwYXRoLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLCBiYXNlX291dGRpcj1yZWNpcGVkaXIpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgX21vdmVfZmlsZShvcy5wYXRoLmpvaW4obG9jYWxfZmlsZXNfZGlyLCBiYXNlcGF0aCksIHBhdGgpCisgICAgICAgICAgICAgICAgICAgIF9tb3ZlX2ZpbGUob3MucGF0aC5qb2luKGxvY2FsX2ZpbGVzX2RpciwgYmFzZXBhdGgpLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLCBiYXNlX291dGRpcj1yZWNpcGVkaXIpCiAgICAgICAgICAgICAgICAgdXBkYXRlZmlsZXMgPSBUcnVlCiAgICAgICAgICAgICBmb3IgYmFzZXBhdGgsIHBhdGggaW4gdXBkX3AuaXRlbXMoKToKICAgICAgICAgICAgICAgICBwYXRjaGZuID0gb3MucGF0aC5qb2luKHBhdGNoZXNfZGlyLCBiYXNlcGF0aCkKQEAgLTE0MzMsMzkgKzE1NjEsNDUgQEAKICAgICAgICAgICAgICAgICAgICAgX3JlcGxhY2Vfc3JjdXJpX2VudHJ5KHNyY3VyaSwgYmFzZXBhdGgsICdmaWxlOi8vJXMnICUgYmFzZXBhdGgpCiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXJlY2lwZSA9IFRydWUKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXBkYXRpbmcgcGF0Y2ggJXMnICUgYmFzZXBhdGgpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdNb3ZpbmcgbmV3IHBhdGNoICVzIHRvICVzJyAlIChwYXRjaGZuLCBwYXRoKSkKLSAgICAgICAgICAgICAgICBfbW92ZV9maWxlKHBhdGNoZm4sIHBhdGgpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdVcGRhdGluZyBwYXRjaCAlcyVzJyAlIChiYXNlcGF0aCwgZHJ5X3J1bl9zdWZmaXgpKQorICAgICAgICAgICAgICAgIF9tb3ZlX2ZpbGUocGF0Y2hmbiwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLCBiYXNlX291dGRpcj1yZWNpcGVkaXIpCiAgICAgICAgICAgICAgICAgdXBkYXRlZmlsZXMgPSBUcnVlCiAgICAgICAgICAgICAjIEFkZCBhbnkgbmV3IGZpbGVzCiAgICAgICAgICAgICBmb3IgYmFzZXBhdGgsIHBhdGggaW4gbmV3X2YuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQWRkaW5nIG5ldyBmaWxlICVzJyAlIGJhc2VwYXRoKQorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdBZGRpbmcgbmV3IGZpbGUgJXMlcycgJSAoYmFzZXBhdGgsIGRyeV9ydW5fc3VmZml4KSkKICAgICAgICAgICAgICAgICBfbW92ZV9maWxlKG9zLnBhdGguam9pbihsb2NhbF9maWxlc19kaXIsIGJhc2VwYXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihmaWxlc19kaXIsIGJhc2VwYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihmaWxlc19kaXIsIGJhc2VwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV9vdXRkaXI9cmVjaXBlZGlyKQogICAgICAgICAgICAgICAgIHNyY3VyaS5hcHBlbmQoJ2ZpbGU6Ly8lcycgJSBiYXNlcGF0aCkKICAgICAgICAgICAgICAgICB1cGRhdGVyZWNpcGUgPSBUcnVlCiAgICAgICAgICAgICBmb3IgYmFzZXBhdGgsIHBhdGggaW4gbmV3X3AuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQWRkaW5nIG5ldyBwYXRjaCAlcycgJSBiYXNlcGF0aCkKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQWRkaW5nIG5ldyBwYXRjaCAlcyVzJyAlIChiYXNlcGF0aCwgZHJ5X3J1bl9zdWZmaXgpKQogICAgICAgICAgICAgICAgIF9tb3ZlX2ZpbGUob3MucGF0aC5qb2luKHBhdGNoZXNfZGlyLCBiYXNlcGF0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZmlsZXNfZGlyLCBiYXNlcGF0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZmlsZXNfZGlyLCBiYXNlcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkcnlfcnVuX291dGRpcj1kcnlfcnVuX291dGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Vfb3V0ZGlyPXJlY2lwZWRpcikKICAgICAgICAgICAgICAgICBzcmN1cmkuYXBwZW5kKCdmaWxlOi8vJXMnICUgYmFzZXBhdGgpCiAgICAgICAgICAgICAgICAgdXBkYXRlcmVjaXBlID0gVHJ1ZQogICAgICAgICAgICAgIyBVcGRhdGUgcmVjaXBlLCBpZiBuZWVkZWQKICAgICAgICAgICAgIGlmIF9yZW1vdmVfZmlsZV9lbnRyaWVzKHNyY3VyaSwgcmVtb3ZlX2ZpbGVzKVswXToKICAgICAgICAgICAgICAgICB1cGRhdGVyZWNpcGUgPSBUcnVlCiAgICAgICAgICAgICBpZiB1cGRhdGVyZWNpcGU6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1VwZGF0aW5nIHJlY2lwZSAlcycgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKQotICAgICAgICAgICAgICAgIG9lLnJlY2lwZXV0aWxzLnBhdGNoX3JlY2lwZShyZCwgcmVjaXBlZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydTUkNfVVJJJzogJyAnLmpvaW4oc3JjdXJpKX0pCisgICAgICAgICAgICAgICAgaWYgbm90IGRyeV9ydW5fb3V0ZGlyOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXBkYXRpbmcgcmVjaXBlICVzJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0ID0gb2UucmVjaXBldXRpbHMucGF0Y2hfcmVjaXBlKHJkLCByZWNpcGVmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J1NSQ19VUkknOiAnICcuam9pbihzcmN1cmkpfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Rfb3V0cHV0PWRyeV9ydW5fb3V0ZGlyKQogICAgICAgICAgICAgZWxpZiBub3QgdXBkYXRlZmlsZXM6CiAgICAgICAgICAgICAgICAgIyBOZWl0aGVyIHBhdGNoZXMgbm9yIHJlY2lwZSB3ZXJlIHVwZGF0ZWQKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnTm8gcGF0Y2hlcyBvciBmaWxlcyBuZWVkIHVwZGF0aW5nJykKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIE5vbmUsIFtdCiAgICAgZmluYWxseToKICAgICAgICAgc2h1dGlsLnJtdHJlZSh0ZW1wZGlyKQogCi0gICAgX3JlbW92ZV9zb3VyY2VfZmlsZXMoYXBwZW5kbGF5ZXJkaXIsIHJlbW92ZV9maWxlcywgZGVzdHBhdGgpCi0gICAgcmV0dXJuIFRydWUKKyAgICBfcmVtb3ZlX3NvdXJjZV9maWxlcyhhcHBlbmRsYXllcmRpciwgcmVtb3ZlX2ZpbGVzLCBkZXN0cGF0aCwgbm9fcmVwb3J0X3JlbW92ZSwgZHJ5X3J1bj1kcnlfcnVuX291dGRpcikKKyAgICByZXR1cm4gVHJ1ZSwgYXBwZW5kZmlsZSwgcmVtb3ZlX2ZpbGVzCiAKIGRlZiBfZ3Vlc3NfcmVjaXBlX3VwZGF0ZV9tb2RlKHNyY3RyZWUsIHJkYXRhKToKICAgICAiIiJHdWVzcyB0aGUgcmVjaXBlIHVwZGF0ZSBtb2RlIHRvIHVzZSIiIgpAQCAtMTQ4OSwxOCArMTYyMyw3MyBAQAogCiAgICAgcmV0dXJuICdwYXRjaCcKIAotZGVmIF91cGRhdGVfcmVjaXBlKHJlY2lwZW5hbWUsIHdvcmtzcGFjZSwgcmQsIG1vZGUsIGFwcGVuZGxheWVyZGlyLCB3aWxkY2FyZF92ZXJzaW9uLCBub19yZW1vdmUsIGluaXRpYWxfcmV2KToKK2RlZiBfdXBkYXRlX3JlY2lwZShyZWNpcGVuYW1lLCB3b3Jrc3BhY2UsIHJkLCBtb2RlLCBhcHBlbmRsYXllcmRpciwgd2lsZGNhcmRfdmVyc2lvbiwgbm9fcmVtb3ZlLCBpbml0aWFsX3Jldiwgbm9fcmVwb3J0X3JlbW92ZT1GYWxzZSwgZHJ5X3J1bl9vdXRkaXI9Tm9uZSwgbm9fb3ZlcnJpZGVzPUZhbHNlLCBmb3JjZV9wYXRjaF9yZWZyZXNoPUZhbHNlKToKICAgICBzcmN0cmVlID0gd29ya3NwYWNlW3JlY2lwZW5hbWVdWydzcmN0cmVlJ10KICAgICBpZiBtb2RlID09ICdhdXRvJzoKICAgICAgICAgbW9kZSA9IF9ndWVzc19yZWNpcGVfdXBkYXRlX21vZGUoc3JjdHJlZSwgcmQpCiAKLSAgICBpZiBtb2RlID09ICdzcmNyZXYnOgotICAgICAgICB1cGRhdGVkID0gX3VwZGF0ZV9yZWNpcGVfc3JjcmV2KHNyY3RyZWUsIHJkLCBhcHBlbmRsYXllcmRpciwgd2lsZGNhcmRfdmVyc2lvbiwgbm9fcmVtb3ZlKQotICAgIGVsaWYgbW9kZSA9PSAncGF0Y2gnOgotICAgICAgICB1cGRhdGVkID0gX3VwZGF0ZV9yZWNpcGVfcGF0Y2gocmVjaXBlbmFtZSwgd29ya3NwYWNlLCBzcmN0cmVlLCByZCwgYXBwZW5kbGF5ZXJkaXIsIHdpbGRjYXJkX3ZlcnNpb24sIG5vX3JlbW92ZSwgaW5pdGlhbF9yZXYpCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCd1cGRhdGVfcmVjaXBlOiBpbnZhbGlkIG1vZGUgJXMnICUgbW9kZSkKLSAgICByZXR1cm4gdXBkYXRlZAorICAgIG92ZXJyaWRlX2JyYW5jaGVzID0gW10KKyAgICBtYWluYnJhbmNoID0gTm9uZQorICAgIHN0YXJ0YnJhbmNoID0gTm9uZQorICAgIGlmIG5vdCBub19vdmVycmlkZXM6CisgICAgICAgIHN0ZG91dCwgXyA9IGJiLnByb2Nlc3MucnVuKCdnaXQgYnJhbmNoJywgY3dkPXNyY3RyZWUpCisgICAgICAgIG90aGVyX2JyYW5jaGVzID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGJyYW5jaG5hbWUgPSBsaW5lWzI6XQorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcqICcpOgorICAgICAgICAgICAgICAgIHN0YXJ0YnJhbmNoID0gYnJhbmNobmFtZQorICAgICAgICAgICAgaWYgYnJhbmNobmFtZS5zdGFydHN3aXRoKG92ZXJyaWRlX2JyYW5jaF9wcmVmaXgpOgorICAgICAgICAgICAgICAgIG92ZXJyaWRlX2JyYW5jaGVzLmFwcGVuZChicmFuY2huYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvdGhlcl9icmFuY2hlcy5hcHBlbmQoYnJhbmNobmFtZSkKKworICAgICAgICBpZiBvdmVycmlkZV9icmFuY2hlczoKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnX3VwZGF0ZV9yZWNpcGU6IG92ZXJyaWRlIGJyYW5jaGVzOiAlcycgJSBvdmVycmlkZV9icmFuY2hlcykKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnX3VwZGF0ZV9yZWNpcGU6IG90aGVyIGJyYW5jaGVzOiAlcycgJSBvdGhlcl9icmFuY2hlcykKKyAgICAgICAgICAgIGlmIHN0YXJ0YnJhbmNoLnN0YXJ0c3dpdGgob3ZlcnJpZGVfYnJhbmNoX3ByZWZpeCk6CisgICAgICAgICAgICAgICAgaWYgbGVuKG90aGVyX2JyYW5jaGVzKSA9PSAxOgorICAgICAgICAgICAgICAgICAgICBtYWluYnJhbmNoID0gb3RoZXJfYnJhbmNoZXNbMV0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ1VuYWJsZSB0byBkZXRlcm1pbmUgbWFpbiBicmFuY2ggLSBwbGVhc2UgY2hlY2sgb3V0IHRoZSBtYWluIGJyYW5jaCBpbiBzb3VyY2UgdHJlZSBmaXJzdCcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1haW5icmFuY2ggPSBzdGFydGJyYW5jaAorCisgICAgY2hlY2tlZG91dCA9IE5vbmUKKyAgICBhbnl1cGRhdGVkID0gRmFsc2UKKyAgICBhcHBlbmRmaWxlID0gTm9uZQorICAgIGFsbHJlbW92ZWQgPSBbXQorICAgIGlmIG92ZXJyaWRlX2JyYW5jaGVzOgorICAgICAgICBsb2dnZXIuaW5mbygnSGFuZGxpbmcgbWFpbiBicmFuY2ggKCVzKS4uLicgJSBtYWluYnJhbmNoKQorICAgICAgICBpZiBzdGFydGJyYW5jaCAhPSBtYWluYnJhbmNoOgorICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBjaGVja291dCAlcycgJSBtYWluYnJhbmNoLCBjd2Q9c3JjdHJlZSkKKyAgICAgICAgY2hlY2tlZG91dCA9IG1haW5icmFuY2gKKyAgICB0cnk6CisgICAgICAgIGJyYW5jaGxpc3QgPSBbbWFpbmJyYW5jaF0gKyBvdmVycmlkZV9icmFuY2hlcworICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaGxpc3Q6CisgICAgICAgICAgICBjcmQgPSBiYi5kYXRhLmNyZWF0ZUNvcHkocmQpCisgICAgICAgICAgICBpZiBicmFuY2ggIT0gbWFpbmJyYW5jaDoKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnSGFuZGxpbmcgYnJhbmNoICVzLi4uJyAlIGJyYW5jaCkKKyAgICAgICAgICAgICAgICBvdmVycmlkZSA9IGJyYW5jaFtsZW4ob3ZlcnJpZGVfYnJhbmNoX3ByZWZpeCk6XQorICAgICAgICAgICAgICAgIGNyZC5hcHBlbmRWYXIoJ09WRVJSSURFUycsICc6JXMnICUgb3ZlcnJpZGUpCisgICAgICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBjaGVja291dCAlcycgJSBicmFuY2gsIGN3ZD1zcmN0cmVlKQorICAgICAgICAgICAgICAgIGNoZWNrZWRvdXQgPSBicmFuY2gKKworICAgICAgICAgICAgaWYgbW9kZSA9PSAnc3JjcmV2JzoKKyAgICAgICAgICAgICAgICB1cGRhdGVkLCBhcHBlbmRmLCByZW1vdmVkID0gX3VwZGF0ZV9yZWNpcGVfc3JjcmV2KHJlY2lwZW5hbWUsIHdvcmtzcGFjZSwgc3JjdHJlZSwgY3JkLCBhcHBlbmRsYXllcmRpciwgd2lsZGNhcmRfdmVyc2lvbiwgbm9fcmVtb3ZlLCBub19yZXBvcnRfcmVtb3ZlLCBkcnlfcnVuX291dGRpcikKKyAgICAgICAgICAgIGVsaWYgbW9kZSA9PSAncGF0Y2gnOgorICAgICAgICAgICAgICAgIHVwZGF0ZWQsIGFwcGVuZGYsIHJlbW92ZWQgPSBfdXBkYXRlX3JlY2lwZV9wYXRjaChyZWNpcGVuYW1lLCB3b3Jrc3BhY2UsIHNyY3RyZWUsIGNyZCwgYXBwZW5kbGF5ZXJkaXIsIHdpbGRjYXJkX3ZlcnNpb24sIG5vX3JlbW92ZSwgbm9fcmVwb3J0X3JlbW92ZSwgaW5pdGlhbF9yZXYsIGRyeV9ydW5fb3V0ZGlyLCBmb3JjZV9wYXRjaF9yZWZyZXNoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ3VwZGF0ZV9yZWNpcGU6IGludmFsaWQgbW9kZSAlcycgJSBtb2RlKQorICAgICAgICAgICAgaWYgdXBkYXRlZDoKKyAgICAgICAgICAgICAgICBhbnl1cGRhdGVkID0gVHJ1ZQorICAgICAgICAgICAgaWYgYXBwZW5kZjoKKyAgICAgICAgICAgICAgICBhcHBlbmRmaWxlID0gYXBwZW5kZgorICAgICAgICAgICAgYWxscmVtb3ZlZC5leHRlbmQocmVtb3ZlZCkKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBzdGFydGJyYW5jaCBhbmQgY2hlY2tlZG91dCAhPSBzdGFydGJyYW5jaDoKKyAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgY2hlY2tvdXQgJXMnICUgc3RhcnRicmFuY2gsIGN3ZD1zcmN0cmVlKQorCisgICAgcmV0dXJuIGFueXVwZGF0ZWQsIGFwcGVuZGZpbGUsIGFsbHJlbW92ZWQKIAogZGVmIHVwZGF0ZV9yZWNpcGUoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ3VwZGF0ZS1yZWNpcGUnIHN1YmNvbW1hbmQiIiIKQEAgLTE1MjEsNyArMTcxMCwxMiBAQAogICAgICAgICBpZiBub3QgcmQ6CiAgICAgICAgICAgICByZXR1cm4gMQogCi0gICAgICAgIHVwZGF0ZWQgPSBfdXBkYXRlX3JlY2lwZShhcmdzLnJlY2lwZW5hbWUsIHdvcmtzcGFjZSwgcmQsIGFyZ3MubW9kZSwgYXJncy5hcHBlbmQsIGFyZ3Mud2lsZGNhcmRfdmVyc2lvbiwgYXJncy5ub19yZW1vdmUsIGFyZ3MuaW5pdGlhbF9yZXYpCisgICAgICAgIGRyeV9ydW5fb3V0cHV0ID0gTm9uZQorICAgICAgICBkcnlfcnVuX291dGRpciA9IE5vbmUKKyAgICAgICAgaWYgYXJncy5kcnlfcnVuOgorICAgICAgICAgICAgZHJ5X3J1bl9vdXRwdXQgPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4PSdkZXZ0b29sJykKKyAgICAgICAgICAgIGRyeV9ydW5fb3V0ZGlyID0gZHJ5X3J1bl9vdXRwdXQubmFtZQorICAgICAgICB1cGRhdGVkLCBfLCBfID0gX3VwZGF0ZV9yZWNpcGUoYXJncy5yZWNpcGVuYW1lLCB3b3Jrc3BhY2UsIHJkLCBhcmdzLm1vZGUsIGFyZ3MuYXBwZW5kLCBhcmdzLndpbGRjYXJkX3ZlcnNpb24sIGFyZ3Mubm9fcmVtb3ZlLCBhcmdzLmluaXRpYWxfcmV2LCBkcnlfcnVuX291dGRpcj1kcnlfcnVuX291dGRpciwgbm9fb3ZlcnJpZGVzPWFyZ3Mubm9fb3ZlcnJpZGVzLCBmb3JjZV9wYXRjaF9yZWZyZXNoPWFyZ3MuZm9yY2VfcGF0Y2hfcmVmcmVzaCkKIAogICAgICAgICBpZiB1cGRhdGVkOgogICAgICAgICAgICAgcmYgPSByZC5nZXRWYXIoJ0ZJTEUnKQpAQCAtMTU1MCw2ICsxNzQ0LDcgQEAKIAogZGVmIF9yZXNldChyZWNpcGVzLCBub19jbGVhbiwgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICAiIiJSZXNldCBvbmUgb3IgbW9yZSByZWNpcGVzIiIiCisgICAgaW1wb3J0IG9lLnBhdGgKIAogICAgIGRlZiBjbGVhbl9wcmVmZXJyZWRfcHJvdmlkZXIocG4sIGxheWVyY29uZl9wYXRoKToKICAgICAgICAgIiIiUmVtb3ZlIFBSRUZFUlJFRF9QUk9WSURFUiBmcm9tIGxheWVyLmNvbmYnIiIiCkBAIC0xNTk2LDYgKzE3OTEsMTMgQEAKICAgICBmb3IgcG4gaW4gcmVjaXBlczoKICAgICAgICAgX2NoZWNrX3ByZXNlcnZlKGNvbmZpZywgcG4pCiAKKyAgICAgICAgYXBwZW5kZmlsZSA9IHdvcmtzcGFjZVtwbl1bJ2JiYXBwZW5kJ10KKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoYXBwZW5kZmlsZSk6CisgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IGhhcHBlbiwgYnV0IGlzIHBvc3NpYmxlIGlmIGRldnRvb2wgZXJyb3JlZCBvdXQgcHJpb3IgdG8KKyAgICAgICAgICAgICMgd3JpdGluZyB0aGUgbWQ1IGZpbGUuIFdlIG5lZWQgdG8gZGVsZXRlIHRoaXMgaGVyZSBvciB0aGUgcmVjaXBlIHdvbid0CisgICAgICAgICAgICAjIGFjdHVhbGx5IGJlIHJlc2V0CisgICAgICAgICAgICBvcy5yZW1vdmUoYXBwZW5kZmlsZSkKKwogICAgICAgICBwcmVzZXJ2ZXBhdGggPSBvcy5wYXRoLmpvaW4oY29uZmlnLndvcmtzcGFjZV9wYXRoLCAnYXR0aWMnLCBwbiwgcG4pCiAgICAgICAgIGRlZiBwcmVzZXJ2ZWRpcihvcmlnZGlyKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9yaWdkaXIpOgpAQCAtMTYwOCwyMCArMTgxMCwyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVkaXIob3MucGF0aC5qb2luKHJvb3QsIGRuKSkKICAgICAgICAgICAgICAgICBvcy5ybWRpcihvcmlnZGlyKQogCi0gICAgICAgIHByZXNlcnZlZGlyKG9zLnBhdGguam9pbihjb25maWcud29ya3NwYWNlX3BhdGgsICdyZWNpcGVzJywgcG4pKQorICAgICAgICByZWNpcGVmaWxlID0gd29ya3NwYWNlW3BuXVsncmVjaXBlZmlsZSddCisgICAgICAgIGlmIHJlY2lwZWZpbGUgYW5kIG9lLnBhdGguaXNfcGF0aF9wYXJlbnQoY29uZmlnLndvcmtzcGFjZV9wYXRoLCByZWNpcGVmaWxlKToKKyAgICAgICAgICAgICMgVGhpcyBzaG91bGQgYWx3YXlzIGJlIHRydWUgaWYgcmVjaXBlZmlsZSBpcyBzZXQsIGJ1dCBqdXN0IGluIGNhc2UKKyAgICAgICAgICAgIHByZXNlcnZlZGlyKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSkKICAgICAgICAgIyBXZSBkb24ndCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGlzIGRpciBuZXh0IHRvIGFwcGVuZHMsIGJ1dCB0aGUgdXNlciBjYW4KICAgICAgICAgcHJlc2VydmVkaXIob3MucGF0aC5qb2luKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgJ2FwcGVuZHMnLCBwbikpCiAKLSAgICAgICAgc3JjdHJlZSA9IHdvcmtzcGFjZVtwbl1bJ3NyY3RyZWUnXQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyY3RyZWUpOgotICAgICAgICAgICAgaWYgb3MubGlzdGRpcihzcmN0cmVlKToKKyAgICAgICAgc3JjdHJlZWJhc2UgPSB3b3Jrc3BhY2VbcG5dWydzcmN0cmVlYmFzZSddCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjdHJlZWJhc2UpOgorICAgICAgICAgICAgaWYgb3MubGlzdGRpcihzcmN0cmVlYmFzZSk6CiAgICAgICAgICAgICAgICAgIyBXZSBkb24ndCB3YW50IHRvIHJpc2sgd2lwaW5nIG91dCBhbnkgd29yayBpbiBwcm9ncmVzcwogICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdMZWF2aW5nIHNvdXJjZSB0cmVlICVzIGFzLWlzOyBpZiB5b3Ugbm8gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb25nZXIgbmVlZCBpdCB0aGVuIHBsZWFzZSBkZWxldGUgaXQgbWFudWFsbHknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBzcmN0cmVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgc3JjdHJlZWJhc2UpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgVGhpcyBpcyB1bmxpa2VseSwgYnV0IGlmIGl0J3MgZW1wdHkgd2UgY2FuIGp1c3QgcmVtb3ZlIGl0Ci0gICAgICAgICAgICAgICAgb3Mucm1kaXIoc3JjdHJlZSkKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihzcmN0cmVlYmFzZSkKIAogICAgICAgICBjbGVhbl9wcmVmZXJyZWRfcHJvdmlkZXIocG4sIGNvbmZpZy53b3Jrc3BhY2VfcGF0aCkKIApAQCAtMTY1Niw5ICsxODYxLDcgQEAKICAgICAgICAgbGF5ZXJkaXIgPSBsYXllcnMuZ2V0KCdtZXRhJywgTm9uZSkKICAgICBlbHNlOgogICAgICAgICBsYXllcmRpciA9IGxheWVycy5nZXQobGF5ZXJuYW1lLCBOb25lKQotICAgIGlmIGxheWVyZGlyOgotICAgICAgICBsYXllcmRpciA9IG9zLnBhdGguYWJzcGF0aChsYXllcmRpcikKLSAgICByZXR1cm4gbGF5ZXJkaXIgb3IgbGF5ZXJuYW1lCisgICAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChsYXllcmRpciBvciBsYXllcm5hbWUpCiAKIGRlZiBmaW5pc2goYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ2ZpbmlzaCcgc3ViY29tbWFuZCIiIgpAQCAtMTY2Nyw2ICsxODcwLDIwIEBACiAKICAgICBjaGVja193b3Jrc3BhY2VfcmVjaXBlKHdvcmtzcGFjZSwgYXJncy5yZWNpcGVuYW1lKQogCisgICAgZHJ5X3J1bl9zdWZmaXggPSAnIChkcnktcnVuKScgaWYgYXJncy5kcnlfcnVuIGVsc2UgJycKKworICAgICMgR3JhYiB0aGUgZXF1aXZhbGVudCBvZiBDT1JFQkFTRSB3aXRob3V0IGhhdmluZyB0byBpbml0aWFsaXNlIHRpbmZvaWwKKyAgICBjb3JlYmFzZWRpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJywgJy4uJykpCisKKyAgICBzcmN0cmVlID0gd29ya3NwYWNlW2FyZ3MucmVjaXBlbmFtZV1bJ3NyY3RyZWUnXQorICAgIGNoZWNrX2dpdF9yZXBvX29wKHNyY3RyZWUsIFtjb3JlYmFzZWRpcl0pCisgICAgZGlydHkgPSBjaGVja19naXRfcmVwb19kaXJ0eShzcmN0cmVlKQorICAgIGlmIGRpcnR5OgorICAgICAgICBpZiBhcmdzLmZvcmNlOgorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ1NvdXJjZSB0cmVlIGlzIG5vdCBjbGVhbiwgY29udGludWluZyBhcyByZXF1ZXN0ZWQgYnkgLWYvLS1mb3JjZScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ1NvdXJjZSB0cmVlIGlzIG5vdCBjbGVhbjpcblxuJXNcbkVuc3VyZSB5b3UgaGF2ZSBjb21taXR0ZWQgeW91ciBjaGFuZ2VzIG9yIHVzZSAtZi8tLWZvcmNlIGlmIHlvdSBhcmUgc3VyZSB0aGVyZVwncyBub3RoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29tbWl0dGVkJyAlIGRpcnR5KQorCiAgICAgbm9fY2xlYW4gPSBGYWxzZQogICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoLCB0cmFja2luZz1UcnVlKQogICAgIHRyeToKQEAgLTE2NzUsNyArMTg5Miw5IEBACiAgICAgICAgICAgICByZXR1cm4gMQogCiAgICAgICAgIGRlc3RsYXllcmRpciA9IF9nZXRfbGF5ZXIoYXJncy5kZXN0aW5hdGlvbiwgdGluZm9pbC5jb25maWdfZGF0YSkKLSAgICAgICAgb3JpZ2xheWVyZGlyID0gb2UucmVjaXBldXRpbHMuZmluZF9sYXllcmRpcihyZC5nZXRWYXIoJ0ZJTEUnKSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IHJkLmdldFZhcignRklMRScpCisgICAgICAgIHJlY2lwZWRpciA9IG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKQorICAgICAgICBvcmlnbGF5ZXJkaXIgPSBvZS5yZWNpcGV1dGlscy5maW5kX2xheWVyZGlyKHJlY2lwZWZpbGUpCiAKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGVzdGxheWVyZGlyKToKICAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignVW5hYmxlIHRvIGZpbmQgbGF5ZXIgb3IgZGlyZWN0b3J5IG1hdGNoaW5nICIlcyInICUgYXJncy5kZXN0aW5hdGlvbikKQEAgLTE2OTQsNiArMTkxMyw4IEBACiAgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJyMgb3JpZ2luYWxfZmlsZXM6Jyk6CiAgICAgICAgICAgICAgICAgICAgIG9yaWdmaWxlbGlzdCA9IGxpbmUuc3BsaXQoJzonKVsxXS5zcGxpdCgpCiAKKyAgICAgICAgZGVzdGxheWVyYmFzZWRpciA9IG9lLnJlY2lwZXV0aWxzLmZpbmRfbGF5ZXJkaXIoZGVzdGxheWVyZGlyKQorCiAgICAgICAgIGlmIG9yaWdsYXllcmRpciA9PSBjb25maWcud29ya3NwYWNlX3BhdGg6CiAgICAgICAgICAgICAjIFJlY2lwZSBmaWxlIGl0c2VsZiBpcyBpbiB3b3Jrc3BhY2UsIHVwZGF0ZSBpdCB0aGVyZSBmaXJzdAogICAgICAgICAgICAgYXBwZW5kbGF5ZXJkaXIgPSBOb25lCkBAIC0xNzA3LDcgKzE5MjgsNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcigiVW5hYmxlIHRvIGRldGVybWluZSBkZXN0aW5hdGlvbiBsYXllciBwYXRoIC0gY2hlY2sgdGhhdCAlcyBzcGVjaWZpZXMgYW4gYWN0dWFsIGxheWVyIGFuZCAlcy9jb25mL2xheWVyLmNvbmYgc3BlY2lmaWVzIEJCRklMRVMuIFlvdSBtYXkgYWxzbyBuZWVkIHRvIHNwZWNpZnkgYSBtb3JlIGNvbXBsZXRlIHBhdGguIiAlIChhcmdzLmRlc3RpbmF0aW9uLCBkZXN0bGF5ZXJkaXIpKQogICAgICAgICAgICAgIyBXYXJuIGlmIHRoZSBsYXllciBpc24ndCBpbiBiYmxheWVycy5jb25mICh0aGUgY29kZSB0byBjcmVhdGUgYSBiYmFwcGVuZCB3aWxsIGRvIHRoaXMgaW4gb3RoZXIgY2FzZXMpCiAgICAgICAgICAgICBsYXllcmRpcnMgPSBbb3MucGF0aC5hYnNwYXRoKGxheWVyZGlyKSBmb3IgbGF5ZXJkaXIgaW4gcmQuZ2V0VmFyKCdCQkxBWUVSUycpLnNwbGl0KCldCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5hYnNwYXRoKGRlc3RsYXllcmRpcikgaW4gbGF5ZXJkaXJzOgorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguYWJzcGF0aChkZXN0bGF5ZXJiYXNlZGlyKSBpbiBsYXllcmRpcnM6CiAgICAgICAgICAgICAgICAgYmIud2FybignU3BlY2lmaWVkIGRlc3RpbmF0aW9uIGxheWVyIGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZCBpbiBiYmxheWVycy5jb25mLCBzbyB0aGUgJXMgcmVjaXBlIHdpbGwgbm93IGJlIHVuYXZhaWxhYmxlIGluIHlvdXIgY3VycmVudCBjb25maWd1cmF0aW9uIHVudGlsIHlvdSBhZGQgdGhlIGxheWVyIHRoZXJlJyAlIGFyZ3MucmVjaXBlbmFtZSkKIAogICAgICAgICBlbGlmIGRlc3RsYXllcmRpciA9PSBvcmlnbGF5ZXJkaXI6CkBAIC0xNzE5LDM3ICsxOTQwLDEwMyBAQAogICAgICAgICAgICAgYXBwZW5kbGF5ZXJkaXIgPSBkZXN0bGF5ZXJkaXIKICAgICAgICAgICAgIGRlc3RwYXRoID0gTm9uZQogCisgICAgICAgICMgQWN0dWFsbHkgdXBkYXRlIHRoZSByZWNpcGUgLyBiYmFwcGVuZAorICAgICAgICByZW1vdmluZ19vcmlnaW5hbCA9IChvcmlncGF0aCBhbmQgb3JpZ2ZpbGVsaXN0IGFuZCBvZS5yZWNpcGV1dGlscy5maW5kX2xheWVyZGlyKG9yaWdwYXRoKSA9PSBkZXN0bGF5ZXJiYXNlZGlyKQorICAgICAgICBkcnlfcnVuX291dHB1dCA9IE5vbmUKKyAgICAgICAgZHJ5X3J1bl9vdXRkaXIgPSBOb25lCisgICAgICAgIGlmIGFyZ3MuZHJ5X3J1bjoKKyAgICAgICAgICAgIGRyeV9ydW5fb3V0cHV0ID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0nZGV2dG9vbCcpCisgICAgICAgICAgICBkcnlfcnVuX291dGRpciA9IGRyeV9ydW5fb3V0cHV0Lm5hbWUKKyAgICAgICAgdXBkYXRlZCwgYXBwZW5kZmlsZSwgcmVtb3ZlZCA9IF91cGRhdGVfcmVjaXBlKGFyZ3MucmVjaXBlbmFtZSwgd29ya3NwYWNlLCByZCwgYXJncy5tb2RlLCBhcHBlbmRsYXllcmRpciwgd2lsZGNhcmRfdmVyc2lvbj1UcnVlLCBub19yZW1vdmU9RmFsc2UsIG5vX3JlcG9ydF9yZW1vdmU9cmVtb3Zpbmdfb3JpZ2luYWwsIGluaXRpYWxfcmV2PWFyZ3MuaW5pdGlhbF9yZXYsIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLCBub19vdmVycmlkZXM9YXJncy5ub19vdmVycmlkZXMsIGZvcmNlX3BhdGNoX3JlZnJlc2g9YXJncy5mb3JjZV9wYXRjaF9yZWZyZXNoKQorICAgICAgICByZW1vdmVkID0gW29zLnBhdGgucmVscGF0aChwdGgsIHJlY2lwZWRpcikgZm9yIHB0aCBpbiByZW1vdmVkXQorCiAgICAgICAgICMgUmVtb3ZlIGFueSBvbGQgZmlsZXMgaW4gdGhlIGNhc2Ugb2YgYW4gdXBncmFkZQotICAgICAgICBpZiBvcmlncGF0aCBhbmQgb3JpZ2ZpbGVsaXN0IGFuZCBvZS5yZWNpcGV1dGlscy5maW5kX2xheWVyZGlyKG9yaWdwYXRoKSA9PSBvZS5yZWNpcGV1dGlscy5maW5kX2xheWVyZGlyKGRlc3RsYXllcmRpcik6CisgICAgICAgIGlmIHJlbW92aW5nX29yaWdpbmFsOgogICAgICAgICAgICAgZm9yIGZuIGluIG9yaWdmaWxlbGlzdDoKICAgICAgICAgICAgICAgICBmbnAgPSBvcy5wYXRoLmpvaW4ob3JpZ3BhdGgsIGZuKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGZucCkKLSAgICAgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAjIEFjdHVhbGx5IHVwZGF0ZSB0aGUgcmVjaXBlIC8gYmJhcHBlbmQKLSAgICAgICAgX3VwZGF0ZV9yZWNpcGUoYXJncy5yZWNpcGVuYW1lLCB3b3Jrc3BhY2UsIHJkLCBhcmdzLm1vZGUsIGFwcGVuZGxheWVyZGlyLCB3aWxkY2FyZF92ZXJzaW9uPVRydWUsIG5vX3JlbW92ZT1GYWxzZSwgaW5pdGlhbF9yZXY9YXJncy5pbml0aWFsX3JldikKKyAgICAgICAgICAgICAgICBpZiBmbiBpbiByZW1vdmVkIG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocmVjaXBlZGlyLCBmbikpOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnUmVtb3ZpbmcgZmlsZSAlcyVzJyAlIChmbnAsIGRyeV9ydW5fc3VmZml4KSkKKyAgICAgICAgICAgICAgICBpZiBub3QgYXJncy5kcnlfcnVuOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZm5wKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgaWYgb3JpZ2xheWVyZGlyID09IGNvbmZpZy53b3Jrc3BhY2VfcGF0aCBhbmQgZGVzdHBhdGg6CiAgICAgICAgICAgICAjIFJlY2lwZSBmaWxlIGl0c2VsZiBpcyBpbiB0aGUgd29ya3NwYWNlIC0gbmVlZCB0byBtb3ZlIGl0IGFuZCBhbnkKICAgICAgICAgICAgICMgYXNzb2NpYXRlZCBmaWxlcyB0byB0aGUgc3BlY2lmaWVkIGxheWVyCiAgICAgICAgICAgICBub19jbGVhbiA9IFRydWUKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdNb3ZpbmcgcmVjaXBlIGZpbGUgdG8gJXMnICUgZGVzdHBhdGgpCi0gICAgICAgICAgICByZWNpcGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUocmQuZ2V0VmFyKCdGSUxFJykpCisgICAgICAgICAgICBsb2dnZXIuaW5mbygnTW92aW5nIHJlY2lwZSBmaWxlIHRvICVzJXMnICUgKGRlc3RwYXRoLCBkcnlfcnVuX3N1ZmZpeCkpCiAgICAgICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhyZWNpcGVkaXIpOgogICAgICAgICAgICAgICAgIGZvciBmbiBpbiBmaWxlczoKICAgICAgICAgICAgICAgICAgICAgc3JjcGF0aCA9IG9zLnBhdGguam9pbihyb290LCBmbikKICAgICAgICAgICAgICAgICAgICAgcmVscHRoID0gb3MucGF0aC5yZWxwYXRoKG9zLnBhdGguZGlybmFtZShzcmNwYXRoKSwgcmVjaXBlZGlyKQogICAgICAgICAgICAgICAgICAgICBkZXN0ZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihkZXN0cGF0aCwgcmVscHRoKSkKLSAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCi0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKHNyY3BhdGgsIG9zLnBhdGguam9pbihkZXN0ZGlyLCBmbikpCisgICAgICAgICAgICAgICAgICAgIGRlc3RmcCA9IG9zLnBhdGguam9pbihkZXN0ZGlyLCBmbikKKyAgICAgICAgICAgICAgICAgICAgX21vdmVfZmlsZShzcmNwYXRoLCBkZXN0ZnAsIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLCBiYXNlX291dGRpcj1kZXN0cGF0aCkKIAorICAgICAgICBpZiBkcnlfcnVuX291dGRpcjoKKyAgICAgICAgICAgIGltcG9ydCBkaWZmbGliCisgICAgICAgICAgICBjb21wYXJlbGlzdCA9IFtdCisgICAgICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhkcnlfcnVuX291dGRpcik6CisgICAgICAgICAgICAgICAgZm9yIGZuIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBvdXRmID0gb3MucGF0aC5qb2luKHJvb3QsIGZuKQorICAgICAgICAgICAgICAgICAgICByZWxmID0gb3MucGF0aC5yZWxwYXRoKG91dGYsIGRyeV9ydW5fb3V0ZGlyKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ2RyeS1ydW46IG91dHB1dCBmaWxlICVzJyAlIHJlbGYpCisgICAgICAgICAgICAgICAgICAgIGlmIGZuLmVuZHN3aXRoKCcuYmInKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9yaWdmaWxlbGlzdCBhbmQgb3JpZ3BhdGggYW5kIGRlc3RwYXRoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTmVlZCB0byBtYXRjaCB0aGlzIHVwIHdpdGggdGhlIHByZS11cGdyYWRlIHJlY2lwZSBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG9yaWdmIGluIG9yaWdmaWxlbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3JpZ2YuZW5kc3dpdGgoJy5iYicpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZWxpc3QuYXBwZW5kKChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9yaWdwYXRoLCBvcmlnZikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGRlc3RwYXRoLCByZWxmKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDb21wYXJlIHRvIHRoZSBleGlzdGluZyByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlbGlzdC5hcHBlbmQoKHJlY2lwZWZpbGUsIG91dGYsIHJlY2lwZWZpbGUpKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGZuLmVuZHN3aXRoKCcuYmJhcHBlbmQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFwcGVuZGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoYXBwZW5kZmlsZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVsaXN0LmFwcGVuZCgoYXBwZW5kZmlsZSwgb3V0ZiwgYXBwZW5kZmlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZWxpc3QuYXBwZW5kKChOb25lLCBvdXRmLCBhcHBlbmRmaWxlKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlc3RwYXRoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZWRlc3QgPSBkZXN0cGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBhcHBlbmRmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZWRlc3QgPSBvcy5wYXRoLmRpcm5hbWUoYXBwZW5kZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlZGVzdCA9IG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGZwID0gb3MucGF0aC5qb2luKHJlY2lwZWRlc3QsIHJlbGYpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZXN0ZnApOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVsaXN0LmFwcGVuZCgoZGVzdGZwLCBvdXRmLCBkZXN0ZnApKQorICAgICAgICAgICAgb3V0cHV0ID0gJycKKyAgICAgICAgICAgIGZvciBvbGRmaWxlLCBuZXdmaWxlLCBuZXdmaWxlc2hvdyBpbiBjb21wYXJlbGlzdDoKKyAgICAgICAgICAgICAgICBpZiBvbGRmaWxlOgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob2xkZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICAgICAgb2xkbGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgb2xkZmlsZSA9ICcvZGV2L251bGwnCisgICAgICAgICAgICAgICAgICAgIG9sZGxpbmVzID0gW10KKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4obmV3ZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBuZXdsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgbmV3ZmlsZXNob3c6CisgICAgICAgICAgICAgICAgICAgIG5ld2ZpbGVzaG93ID0gbmV3ZmlsZQorICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihvbGRsaW5lcywgbmV3bGluZXMsIG9sZGZpbGUsIG5ld2ZpbGVzaG93KQorICAgICAgICAgICAgICAgIGRpZmZsaW5lcyA9IGxpc3QoZGlmZikKKyAgICAgICAgICAgICAgICBpZiBkaWZmbGluZXM6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSAnJy5qb2luKGRpZmZsaW5lcykKKyAgICAgICAgICAgIGlmIG91dHB1dDoKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnRGlmZiBvZiBjaGFuZ2VkIGZpbGVzOlxuJXMnICUgb3V0cHV0KQogICAgIGZpbmFsbHk6CiAgICAgICAgIHRpbmZvaWwuc2h1dGRvd24oKQogCiAgICAgIyBFdmVyeXRoaW5nIGVsc2UgaGFzIHN1Y2NlZWRlZCwgd2UgY2FuIG5vdyByZXNldAotICAgIF9yZXNldChbYXJncy5yZWNpcGVuYW1lXSwgbm9fY2xlYW49bm9fY2xlYW4sIGNvbmZpZz1jb25maWcsIGJhc2VwYXRoPWJhc2VwYXRoLCB3b3Jrc3BhY2U9d29ya3NwYWNlKQorICAgIGlmIGFyZ3MuZHJ5X3J1bjoKKyAgICAgICAgbG9nZ2VyLmluZm8oJ1Jlc2V0dGluZyByZWNpcGUgKGRyeS1ydW4pJykKKyAgICBlbHNlOgorICAgICAgICBfcmVzZXQoW2FyZ3MucmVjaXBlbmFtZV0sIG5vX2NsZWFuPW5vX2NsZWFuLCBjb25maWc9Y29uZmlnLCBiYXNlcGF0aD1iYXNlcGF0aCwgd29ya3NwYWNlPXdvcmtzcGFjZSkKIAogICAgIHJldHVybiAwCiAKQEAgLTE4MDMsNiArMjA5MCw3IEBACiAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXNhbWUtZGlyJywgJy1zJywgaGVscD0nQnVpbGQgaW4gc2FtZSBkaXJlY3RvcnkgYXMgc291cmNlJywgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tbm8tc2FtZS1kaXInLCBoZWxwPSdGb3JjZSBidWlsZCBpbiBhIHNlcGFyYXRlIGJ1aWxkIGRpcmVjdG9yeScsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgcGFyc2VyX21vZGlmeS5hZGRfYXJndW1lbnQoJy0tYnJhbmNoJywgJy1iJywgZGVmYXVsdD0iZGV2dG9vbCIsIGhlbHA9J05hbWUgZm9yIGRldmVsb3BtZW50IGJyYW5jaCB0byBjaGVja291dCAod2hlbiBub3QgdXNpbmcgLW4vLS1uby1leHRyYWN0KSAoZGVmYXVsdCAiJShkZWZhdWx0KXMiKScpCisgICAgcGFyc2VyX21vZGlmeS5hZGRfYXJndW1lbnQoJy0tbm8tb3ZlcnJpZGVzJywgJy1PJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRG8gbm90IGNyZWF0ZSBicmFuY2hlcyBmb3Igb3RoZXIgb3ZlcnJpZGUgY29uZmlndXJhdGlvbnMnKQogICAgIHBhcnNlcl9tb2RpZnkuYWRkX2FyZ3VtZW50KCctLWtlZXAtdGVtcCcsIGhlbHA9J0tlZXAgdGVtcG9yYXJ5IGRpcmVjdG9yeSAoZm9yIGRlYnVnZ2luZyknLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIHBhcnNlcl9tb2RpZnkuc2V0X2RlZmF1bHRzKGZ1bmM9bW9kaWZ5LCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQogCkBAIC0xODEyLDYgKzIxMDAsNyBAQAogICAgIHBhcnNlcl9leHRyYWN0LmFkZF9hcmd1bWVudCgncmVjaXBlbmFtZScsIGhlbHA9J05hbWUgb2YgcmVjaXBlIHRvIGV4dHJhY3QgdGhlIHNvdXJjZSBmb3InKQogICAgIHBhcnNlcl9leHRyYWN0LmFkZF9hcmd1bWVudCgnc3JjdHJlZScsIGhlbHA9J1BhdGggdG8gd2hlcmUgdG8gZXh0cmFjdCB0aGUgc291cmNlIHRyZWUnKQogICAgIHBhcnNlcl9leHRyYWN0LmFkZF9hcmd1bWVudCgnLS1icmFuY2gnLCAnLWInLCBkZWZhdWx0PSJkZXZ0b29sIiwgaGVscD0nTmFtZSBmb3IgZGV2ZWxvcG1lbnQgYnJhbmNoIHRvIGNoZWNrb3V0IChkZWZhdWx0ICIlKGRlZmF1bHQpcyIpJykKKyAgICBwYXJzZXJfZXh0cmFjdC5hZGRfYXJndW1lbnQoJy0tbm8tb3ZlcnJpZGVzJywgJy1PJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRG8gbm90IGNyZWF0ZSBicmFuY2hlcyBmb3Igb3RoZXIgb3ZlcnJpZGUgY29uZmlndXJhdGlvbnMnKQogICAgIHBhcnNlcl9leHRyYWN0LmFkZF9hcmd1bWVudCgnLS1rZWVwLXRlbXAnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdLZWVwIHRlbXBvcmFyeSBkaXJlY3RvcnkgKGZvciBkZWJ1Z2dpbmcpJykKICAgICBwYXJzZXJfZXh0cmFjdC5zZXRfZGVmYXVsdHMoZnVuYz1leHRyYWN0LCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQogCkBAIC0xODQzLDYgKzIxMzIsOSBAQAogICAgIHBhcnNlcl91cGRhdGVfcmVjaXBlLmFkZF9hcmd1bWVudCgnLS1hcHBlbmQnLCAnLWEnLCBoZWxwPSdXcml0ZSBjaGFuZ2VzIHRvIGEgYmJhcHBlbmQgaW4gdGhlIHNwZWNpZmllZCBsYXllciBpbnN0ZWFkIG9mIHRoZSByZWNpcGUnLCBtZXRhdmFyPSdMQVlFUkRJUicpCiAgICAgcGFyc2VyX3VwZGF0ZV9yZWNpcGUuYWRkX2FyZ3VtZW50KCctLXdpbGRjYXJkLXZlcnNpb24nLCAnLXcnLCBoZWxwPSdJbiBjb25qdW5jdGlvbiB3aXRoIC1hLy0tYXBwZW5kLCB1c2UgYSB3aWxkY2FyZCB0byBtYWtlIHRoZSBiYmFwcGVuZCBhcHBseSB0byBhbnkgcmVjaXBlIHZlcnNpb24nLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl91cGRhdGVfcmVjaXBlLmFkZF9hcmd1bWVudCgnLS1uby1yZW1vdmUnLCAnLW4nLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdEb25cJ3QgcmVtb3ZlIHBhdGNoZXMsIG9ubHkgYWRkIG9yIHVwZGF0ZScpCisgICAgcGFyc2VyX3VwZGF0ZV9yZWNpcGUuYWRkX2FyZ3VtZW50KCctLW5vLW92ZXJyaWRlcycsICctTycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0RvIG5vdCBoYW5kbGUgb3RoZXIgb3ZlcnJpZGUgYnJhbmNoZXMgKGlmIHRoZXkgZXhpc3QpJykKKyAgICBwYXJzZXJfdXBkYXRlX3JlY2lwZS5hZGRfYXJndW1lbnQoJy0tZHJ5LXJ1bicsICctTicsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0RyeS1ydW4gKGp1c3QgcmVwb3J0IGNoYW5nZXMgaW5zdGVhZCBvZiB3cml0aW5nIHRoZW0pJykKKyAgICBwYXJzZXJfdXBkYXRlX3JlY2lwZS5hZGRfYXJndW1lbnQoJy0tZm9yY2UtcGF0Y2gtcmVmcmVzaCcsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J1VwZGF0ZSBwYXRjaGVzIGluIHRoZSBsYXllciBldmVuIGlmIHRoZXkgaGF2ZSBub3QgYmVlbiBtb2RpZmllZCAodXNlZnVsIGZvciByZWZyZXNoaW5nIHBhdGNoIGNvbnRleHQpJykKICAgICBwYXJzZXJfdXBkYXRlX3JlY2lwZS5zZXRfZGVmYXVsdHMoZnVuYz11cGRhdGVfcmVjaXBlKQogCiAgICAgcGFyc2VyX3N0YXR1cyA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignc3RhdHVzJywgaGVscD0nU2hvdyB3b3Jrc3BhY2Ugc3RhdHVzJywKQEAgLTE4NTksMTAgKzIxNTEsMTQgQEAKICAgICBwYXJzZXJfcmVzZXQuc2V0X2RlZmF1bHRzKGZ1bmM9cmVzZXQpCiAKICAgICBwYXJzZXJfZmluaXNoID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdmaW5pc2gnLCBoZWxwPSdGaW5pc2ggd29ya2luZyBvbiBhIHJlY2lwZSBpbiB5b3VyIHdvcmtzcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdQdXNoZXMgYW55IGNvbW1pdHRlZCBjaGFuZ2VzIHRvIHRoZSBzcGVjaWZpZWQgcmVjaXBlIHRvIHRoZSBzcGVjaWZpZWQgbGF5ZXIgYW5kIHJlbW92ZXMgaXQgZnJvbSB5b3VyIHdvcmtzcGFjZS4gUm91Z2hseSBlcXVpdmFsZW50IHRvIGFuIHVwZGF0ZS1yZWNpcGUgZm9sbG93ZWQgYnkgcmVzZXQsIGV4Y2VwdCB0aGUgdXBkYXRlLXJlY2lwZSBzdGVwIHdpbGwgZG8gdGhlICJyaWdodCB0aGluZyIgZGVwZW5kaW5nIG9uIHRoZSByZWNpcGUgYW5kIHRoZSBkZXN0aW5hdGlvbiBsYXllciBzcGVjaWZpZWQuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J1B1c2hlcyBhbnkgY29tbWl0dGVkIGNoYW5nZXMgdG8gdGhlIHNwZWNpZmllZCByZWNpcGUgdG8gdGhlIHNwZWNpZmllZCBsYXllciBhbmQgcmVtb3ZlcyBpdCBmcm9tIHlvdXIgd29ya3NwYWNlLiBSb3VnaGx5IGVxdWl2YWxlbnQgdG8gYW4gdXBkYXRlLXJlY2lwZSBmb2xsb3dlZCBieSByZXNldCwgZXhjZXB0IHRoZSB1cGRhdGUtcmVjaXBlIHN0ZXAgd2lsbCBkbyB0aGUgInJpZ2h0IHRoaW5nIiBkZXBlbmRpbmcgb24gdGhlIHJlY2lwZSBhbmQgdGhlIGRlc3RpbmF0aW9uIGxheWVyIHNwZWNpZmllZC4gTm90ZSB0aGF0IHlvdXIgY2hhbmdlcyBtdXN0IGhhdmUgYmVlbiBjb21taXR0ZWQgdG8gdGhlIGdpdCByZXBvc2l0b3J5IGluIG9yZGVyIHRvIGJlIHJlY29nbmlzZWQuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA9J3dvcmtpbmcnLCBvcmRlcj0tMTAwKQogICAgIHBhcnNlcl9maW5pc2guYWRkX2FyZ3VtZW50KCdyZWNpcGVuYW1lJywgaGVscD0nUmVjaXBlIHRvIGZpbmlzaCcpCiAgICAgcGFyc2VyX2ZpbmlzaC5hZGRfYXJndW1lbnQoJ2Rlc3RpbmF0aW9uJywgaGVscD0nTGF5ZXIvcGF0aCB0byBwdXQgcmVjaXBlIGludG8uIENhbiBiZSB0aGUgbmFtZSBvZiBhIGxheWVyIGNvbmZpZ3VyZWQgaW4geW91ciBiYmxheWVycy5jb25mLCB0aGUgcGF0aCB0byB0aGUgYmFzZSBvZiBhIGxheWVyLCBvciBhIHBhcnRpYWwgcGF0aCBpbnNpZGUgYSBsYXllci4gJShwcm9nKXMgd2lsbCBhdHRlbXB0IHRvIGNvbXBsZXRlIHRoZSBwYXRoIGJhc2VkIG9uIHRoZSBsYXllclwncyBzdHJ1Y3R1cmUuJykKICAgICBwYXJzZXJfZmluaXNoLmFkZF9hcmd1bWVudCgnLS1tb2RlJywgJy1tJywgY2hvaWNlcz1bJ3BhdGNoJywgJ3NyY3JldicsICdhdXRvJ10sIGRlZmF1bHQ9J2F1dG8nLCBoZWxwPSdVcGRhdGUgbW9kZSAod2hlcmUgJShtZXRhdmFyKXMgaXMgJShjaG9pY2VzKXM7IGRlZmF1bHQgaXMgJShkZWZhdWx0KXMpJywgbWV0YXZhcj0nTU9ERScpCiAgICAgcGFyc2VyX2ZpbmlzaC5hZGRfYXJndW1lbnQoJy0taW5pdGlhbC1yZXYnLCBoZWxwPSdPdmVycmlkZSBzdGFydGluZyByZXZpc2lvbiBmb3IgcGF0Y2hlcycpCisgICAgcGFyc2VyX2ZpbmlzaC5hZGRfYXJndW1lbnQoJy0tZm9yY2UnLCAnLWYnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdGb3JjZSBjb250aW51aW5nIGV2ZW4gaWYgdGhlcmUgYXJlIHVuY29tbWl0dGVkIGNoYW5nZXMgaW4gdGhlIHNvdXJjZSB0cmVlIHJlcG9zaXRvcnknKQorICAgIHBhcnNlcl9maW5pc2guYWRkX2FyZ3VtZW50KCctLW5vLW92ZXJyaWRlcycsICctTycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0RvIG5vdCBoYW5kbGUgb3RoZXIgb3ZlcnJpZGUgYnJhbmNoZXMgKGlmIHRoZXkgZXhpc3QpJykKKyAgICBwYXJzZXJfZmluaXNoLmFkZF9hcmd1bWVudCgnLS1kcnktcnVuJywgJy1OJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRHJ5LXJ1biAoanVzdCByZXBvcnQgY2hhbmdlcyBpbnN0ZWFkIG9mIHdyaXRpbmcgdGhlbSknKQorICAgIHBhcnNlcl9maW5pc2guYWRkX2FyZ3VtZW50KCctLWZvcmNlLXBhdGNoLXJlZnJlc2gnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdVcGRhdGUgcGF0Y2hlcyBpbiB0aGUgbGF5ZXIgZXZlbiBpZiB0aGV5IGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgKHVzZWZ1bCBmb3IgcmVmcmVzaGluZyBwYXRjaCBjb250ZXh0KScpCiAgICAgcGFyc2VyX2ZpbmlzaC5zZXRfZGVmYXVsdHMoZnVuYz1maW5pc2gpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91cGdyYWRlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXBncmFkZS5weQppbmRleCBmMWIzZmYwLi5jM2ZkODY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91cGdyYWRlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3VwZ3JhZGUucHkKQEAgLTMzLDcgKzMzLDcgQEAKIAogaW1wb3J0IG9lLnJlY2lwZXV0aWxzCiBmcm9tIGRldnRvb2wgaW1wb3J0IHN0YW5kYXJkCi1mcm9tIGRldnRvb2wgaW1wb3J0IGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQsIHNldHVwX3RpbmZvaWwsIERldnRvb2xFcnJvciwgcGFyc2VfcmVjaXBlLCB1c2VfZXh0ZXJuYWxfYnVpbGQsIHVwZGF0ZV91bmxvY2tlZHNpZ3MKK2Zyb20gZGV2dG9vbCBpbXBvcnQgZXhlY19idWlsZF9lbnZfY29tbWFuZCwgc2V0dXBfdGluZm9pbCwgRGV2dG9vbEVycm9yLCBwYXJzZV9yZWNpcGUsIHVzZV9leHRlcm5hbF9idWlsZCwgdXBkYXRlX3VubG9ja2Vkc2lncywgY2hlY2tfcHJlcmVsZWFzZV92ZXJzaW9uCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdkZXZ0b29sJykKIApAQCAtNTUsMTcgKzU1LDYgQEAKICAgICAgICAgZGVzdF9wYXRoID0gb3MucGF0aC5qb2luKGRlc3QsIHBhdGgpCiAgICAgICAgIHNodXRpbC5tb3ZlKG9zLnBhdGguam9pbihvcmlnLCBwYXRoKSwgZGVzdF9wYXRoKQogCi1kZWYgX2dldF9jaGVja3N1bXMocmYpOgotICAgIGltcG9ydCByZQotICAgIGNoZWNrc3VtcyA9IHt9Ci0gICAgd2l0aCBvcGVuKHJmKSBhcyBmOgotICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgZm9yIGNzIGluIFsnbWQ1c3VtJywgJ3NoYTI1NnN1bSddOgotICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiXlNSQ19VUklcWyVzXF0uKj0uKlwiKC4qKVwiIiAlIGNzLCBsaW5lKQotICAgICAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrc3Vtc1tjc10gPSBtLmdyb3VwKDEpCi0gICAgcmV0dXJuIGNoZWNrc3VtcwotCiBkZWYgX3JlbW92ZV9wYXRjaF9kaXJzKHJlY2lwZWZvbGRlcik6CiAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocmVjaXBlZm9sZGVyKToKICAgICAgICAgZm9yIGQgaW4gZGlyczoKQEAgLTIwMiw2ICsxOTEsOCBAQAogICAgICAgICBfX3J1bignZ2l0IHRhZyAtZiBkZXZ0b29sLWJhc2UtbmV3JykKICAgICAgICAgbWQ1ID0gTm9uZQogICAgICAgICBzaGEyNTYgPSBOb25lCisgICAgICAgIF8sIF8sIF8sIF8sIF8sIHBhcmFtcyA9IGJiLmZldGNoMi5kZWNvZGV1cmwodXJpKQorICAgICAgICBzcmNzdWJkaXJfcmVsID0gcGFyYW1zLmdldCgnZGVzdHN1ZmZpeCcsICdnaXQnKQogICAgICAgICBpZiBub3Qgc3JjYnJhbmNoOgogICAgICAgICAgICAgY2hlY2tfYnJhbmNoLCBjaGVja19icmFuY2hfZXJyID0gX19ydW4oJ2dpdCBicmFuY2ggLXIgLS1jb250YWlucyAlcycgJSBzcmNyZXYpCiAgICAgICAgICAgICBnZXRfYnJhbmNoID0gW3guc3RyaXAoKSBmb3IgeCBpbiBjaGVja19icmFuY2guc3BsaXRsaW5lcygpXQpAQCAtMjM2LDYgKzIyNyw3IEBACiAKICAgICAgICAgdG1wc3JjdHJlZSA9IF9nZXRfc3JjdHJlZSh0bXBkaXIpCiAgICAgICAgIHNyY3RyZWUgPSBvcy5wYXRoLmFic3BhdGgoc3JjdHJlZSkKKyAgICAgICAgc3Jjc3ViZGlyX3JlbCA9IG9zLnBhdGgucmVscGF0aCh0bXBzcmN0cmVlLCB0bXBkaXIpCiAKICAgICAgICAgIyBEZWxldGUgYWxsIHNvdXJjZXMgc28gd2UgZW5zdXJlIG5vIHN0cmF5IGZpbGVzIGFyZSBsZWZ0IG92ZXIKICAgICAgICAgZm9yIGl0ZW0gaW4gb3MubGlzdGRpcihzcmN0cmVlKToKQEAgLTI1MSw4ICsyNDMsMTUgQEAKICAgICAgICAgX2NvcHlfc291cmNlX2NvZGUodG1wc3JjdHJlZSwgc3JjdHJlZSkKIAogICAgICAgICAoc3Rkb3V0LF8pID0gX19ydW4oJ2dpdCBscy1maWxlcyAtLW1vZGlmaWVkIC0tb3RoZXJzIC0tZXhjbHVkZS1zdGFuZGFyZCcpCi0gICAgICAgIGZvciBmIGluIHN0ZG91dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBfX3J1bignZ2l0IGFkZCAiJXMiJyAlIGYpCisgICAgICAgIGZpbGVsaXN0ID0gc3Rkb3V0LnNwbGl0bGluZXMoKQorICAgICAgICBwYmFyID0gYmIudWkua25vdHR5LkJCUHJvZ3Jlc3MoJ0FkZGluZyBjaGFuZ2VkIGZpbGVzJywgbGVuKGZpbGVsaXN0KSkKKyAgICAgICAgcGJhci5zdGFydCgpCisgICAgICAgIGJhdGNoc2l6ZSA9IDEwMAorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oZmlsZWxpc3QpLCBiYXRjaHNpemUpOgorICAgICAgICAgICAgYmF0Y2ggPSBmaWxlbGlzdFtpOmkrYmF0Y2hzaXplXQorICAgICAgICAgICAgX19ydW4oJ2dpdCBhZGQgLUEgJXMnICUgJyAnLmpvaW4oWyciJXMiJyAlIGl0ZW0gZm9yIGl0ZW0gaW4gYmF0Y2hdKSkKKyAgICAgICAgICAgIHBiYXIudXBkYXRlKGkpCisgICAgICAgIHBiYXIuZmluaXNoKCkKIAogICAgICAgICB1c2Vyb3B0aW9ucyA9IFtdCiAgICAgICAgIG9lLnBhdGNoLkdpdEFwcGx5VHJlZS5naXRDb21tYW5kVXNlck9wdGlvbnModXNlcm9wdGlvbnMsIGQ9cmQpCkBAIC0yNjQsMTAgKzI2Myw4IEBACiAKICAgICBpZiBub19wYXRjaDoKICAgICAgICAgcGF0Y2hlcyA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfcGF0Y2hlcyhjcmQpCi0gICAgICAgIGlmIGxlbihwYXRjaGVzKToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCdCeSB1c2VyIGNob2ljZSwgdGhlIGZvbGxvd2luZyBwYXRjaGVzIHdpbGwgTk9UIGJlIGFwcGxpZWQnKQotICAgICAgICAgICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIiVzIiAlIG9zLnBhdGguYmFzZW5hbWUocGF0Y2gpKQorICAgICAgICBpZiBwYXRjaGVzOgorICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0J5IHVzZXIgY2hvaWNlLCB0aGUgZm9sbG93aW5nIHBhdGNoZXMgd2lsbCBOT1QgYmUgYXBwbGllZCB0byB0aGUgbmV3IHNvdXJjZSB0cmVlOlxuICAlcycgJSAnXG4gICcuam9pbihbb3MucGF0aC5iYXNlbmFtZShwYXRjaCkgZm9yIHBhdGNoIGluIHBhdGNoZXNdKSkKICAgICBlbHNlOgogICAgICAgICBfX3J1bignZ2l0IGNoZWNrb3V0IGRldnRvb2wtcGF0Y2hlZCAtYiAlcycgJSBicmFuY2gpCiAgICAgICAgIHNraXB0YWcgPSBGYWxzZQpAQCAtMjkyLDkgKzI4OSwyOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0bXBzcmN0cmVlKQogCi0gICAgcmV0dXJuIChyZXYsIG1kNSwgc2hhMjU2LCBzcmNicmFuY2gpCisgICAgcmV0dXJuIChyZXYsIG1kNSwgc2hhMjU2LCBzcmNicmFuY2gsIHNyY3N1YmRpcl9yZWwpCiAKLWRlZiBfY3JlYXRlX25ld19yZWNpcGUobmV3cHYsIG1kNSwgc2hhMjU2LCBzcmNyZXYsIHNyY2JyYW5jaCwgd29ya3NwYWNlLCB0aW5mb2lsLCByZCk6CitkZWYgX2FkZF9saWNlbnNlX2RpZmZfdG9fcmVjaXBlKHBhdGgsIGRpZmYpOgorICAgIG5vdGljZV90ZXh0ID0gIiIiIyBGSVhNRTogdGhlIExJQ19GSUxFU19DSEtTVU0gdmFsdWVzIGhhdmUgYmVlbiB1cGRhdGVkIGJ5ICdkZXZ0b29sIHVwZ3JhZGUnLgorIyBUaGUgZm9sbG93aW5nIGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9sZCBhbmQgdGhlIG5ldyBsaWNlbnNlIHRleHQuCisjIFBsZWFzZSB1cGRhdGUgdGhlIExJQ0VOU0UgdmFsdWUgaWYgbmVlZGVkLCBhbmQgc3VtbWFyaXplIHRoZSBjaGFuZ2VzIGluCisjIHRoZSBjb21taXQgbWVzc2FnZSB2aWEgJ0xpY2Vuc2UtVXBkYXRlOicgdGFnLgorIyAoZXhhbXBsZTogJ0xpY2Vuc2UtVXBkYXRlOiBjb3B5cmlnaHQgeWVhcnMgdXBkYXRlZC4nKQorIworIyBUaGUgY2hhbmdlczoKKyMKKyIiIgorICAgIGNvbW1lbnRlZF9kaWZmID0gIlxuIi5qb2luKFsiIyB7fSIuZm9ybWF0KGwpIGZvciBsIGluIGRpZmYuc3BsaXQoJ1xuJyldKQorICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmOgorICAgICAgICBvcmlnX2NvbnRlbnQgPSBmLnJlYWQoKQorICAgIHdpdGggb3BlbihwYXRoLCAnd2InKSBhcyBmOgorICAgICAgICBmLndyaXRlKG5vdGljZV90ZXh0LmVuY29kZSgpKQorICAgICAgICBmLndyaXRlKGNvbW1lbnRlZF9kaWZmLmVuY29kZSgpKQorICAgICAgICBmLndyaXRlKCJcbiNcblxuIi5lbmNvZGUoKSkKKyAgICAgICAgZi53cml0ZShvcmlnX2NvbnRlbnQpCisKK2RlZiBfY3JlYXRlX25ld19yZWNpcGUobmV3cHYsIG1kNSwgc2hhMjU2LCBzcmNyZXYsIHNyY2JyYW5jaCwgc3Jjc3ViZGlyX29sZCwgc3Jjc3ViZGlyX25ldywgd29ya3NwYWNlLCB0aW5mb2lsLCByZCwgbGljZW5zZV9kaWZmLCBuZXdfbGljZW5zZXMpOgogICAgICIiIkNyZWF0ZXMgdGhlIG5ldyByZWNpcGUgdW5kZXIgd29ya3NwYWNlIiIiCiAKICAgICBicG4gPSByZC5nZXRWYXIoJ0JQTicpCkBAIC0zNDYsOSArMzYyLDY3IEBACiAKICAgICBuZXd2YWx1ZXNbJ1BSJ10gPSBOb25lCiAKKyAgICAjIFdvcmsgb3V0IHdoaWNoIFNSQ19VUkkgZW50cmllcyBoYXZlIGNoYW5nZWQgaW4gY2FzZSB0aGUgZW50cnkgdXNlcyBhIG5hbWUKKyAgICBjcmQgPSByZC5jcmVhdGVDb3B5KCkKKyAgICBjcmQuc2V0VmFyKCdQVicsIG5ld3B2KQorICAgIGZvciB2YXIsIHZhbHVlIGluIG5ld3ZhbHVlcy5pdGVtcygpOgorICAgICAgICBjcmQuc2V0VmFyKHZhciwgdmFsdWUpCisgICAgb2xkX3NyY191cmkgPSAocmQuZ2V0VmFyKCdTUkNfVVJJJykgb3IgJycpLnNwbGl0KCkKKyAgICBuZXdfc3JjX3VyaSA9IChjcmQuZ2V0VmFyKCdTUkNfVVJJJykgb3IgJycpLnNwbGl0KCkKKyAgICBuZXduYW1lcyA9IFtdCisgICAgYWRkbmFtZXMgPSBbXQorICAgIGZvciBuZXdlbnRyeSBpbiBuZXdfc3JjX3VyaToKKyAgICAgICAgXywgXywgXywgXywgXywgcGFyYW1zID0gYmIuZmV0Y2gyLmRlY29kZXVybChuZXdlbnRyeSkKKyAgICAgICAgaWYgJ25hbWUnIGluIHBhcmFtczoKKyAgICAgICAgICAgIG5ld25hbWVzLmFwcGVuZChwYXJhbXNbJ25hbWUnXSkKKyAgICAgICAgICAgIGlmIG5ld2VudHJ5IG5vdCBpbiBvbGRfc3JjX3VyaToKKyAgICAgICAgICAgICAgICBhZGRuYW1lcy5hcHBlbmQocGFyYW1zWyduYW1lJ10pCisgICAgIyBGaW5kIHdoYXQncyBiZWVuIHNldCBpbiB0aGUgb3JpZ2luYWwgcmVjaXBlCisgICAgb2xkbmFtZXMgPSBbXQorICAgIG5vbmFtZSA9IEZhbHNlCisgICAgZm9yIHZhcmZsYWcgaW4gcmQuZ2V0VmFyRmxhZ3MoJ1NSQ19VUkknKToKKyAgICAgICAgaWYgdmFyZmxhZy5lbmRzd2l0aCgoJy5tZDVzdW0nLCAnLnNoYTI1NnN1bScpKToKKyAgICAgICAgICAgIG5hbWUgPSB2YXJmbGFnLnJzcGxpdCgnLicsIDEpWzBdCisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBvbGRuYW1lczoKKyAgICAgICAgICAgICAgICBvbGRuYW1lcy5hcHBlbmQobmFtZSkKKyAgICAgICAgZWxpZiB2YXJmbGFnIGluIFsnbWQ1c3VtJywgJ3NoYTI1NnN1bSddOgorICAgICAgICAgICAgbm9uYW1lID0gVHJ1ZQorICAgICMgRXZlbiBpZiBTUkNfVVJJIGhhcyBuYW1lZCBlbnRyaWVzIGl0IGRvZXNuJ3QgaGF2ZSB0byBhY3R1YWxseSB1c2UgdGhlIG5hbWUKKyAgICBpZiBub25hbWUgYW5kIGFkZG5hbWVzIGFuZCBhZGRuYW1lc1swXSBub3QgaW4gb2xkbmFtZXM6CisgICAgICAgIGFkZG5hbWVzID0gW10KKyAgICAjIERyb3AgYW55IG9sZCBuYW1lcyAodGhlIG5hbWUgYWN0dWFsbHkgbWlnaHQgaW5jbHVkZSAke1BWfSkKKyAgICBmb3IgbmFtZSBpbiBvbGRuYW1lczoKKyAgICAgICAgaWYgbmFtZSBub3QgaW4gbmV3bmFtZXM6CisgICAgICAgICAgICBuZXd2YWx1ZXNbJ1NSQ19VUklbJXMubWQ1c3VtXScgJSBuYW1lXSA9IE5vbmUKKyAgICAgICAgICAgIG5ld3ZhbHVlc1snU1JDX1VSSVslcy5zaGEyNTZzdW1dJyAlIG5hbWVdID0gTm9uZQorCiAgICAgaWYgbWQ1IGFuZCBzaGEyNTY6Ci0gICAgICAgIG5ld3ZhbHVlc1snU1JDX1VSSVttZDVzdW1dJ10gPSBtZDUKLSAgICAgICAgbmV3dmFsdWVzWydTUkNfVVJJW3NoYTI1NnN1bV0nXSA9IHNoYTI1NgorICAgICAgICBpZiBhZGRuYW1lczoKKyAgICAgICAgICAgIG5hbWVwcmVmaXggPSAnJXMuJyAlIGFkZG5hbWVzWzBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuYW1lcHJlZml4ID0gJycKKyAgICAgICAgbmV3dmFsdWVzWydTUkNfVVJJWyVzbWQ1c3VtXScgJSBuYW1lcHJlZml4XSA9IG1kNQorICAgICAgICBuZXd2YWx1ZXNbJ1NSQ19VUklbJXNzaGEyNTZzdW1dJyAlIG5hbWVwcmVmaXhdID0gc2hhMjU2CisKKyAgICBpZiBzcmNzdWJkaXJfbmV3ICE9IHNyY3N1YmRpcl9vbGQ6CisgICAgICAgIHNfc3ViZGlyX29sZCA9IG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmFic3BhdGgocmQuZ2V0VmFyKCdTJykpLCByZC5nZXRWYXIoJ1dPUktESVInKSkKKyAgICAgICAgc19zdWJkaXJfbmV3ID0gb3MucGF0aC5yZWxwYXRoKG9zLnBhdGguYWJzcGF0aChjcmQuZ2V0VmFyKCdTJykpLCBjcmQuZ2V0VmFyKCdXT1JLRElSJykpCisgICAgICAgIGlmIHNyY3N1YmRpcl9vbGQgPT0gc19zdWJkaXJfb2xkIGFuZCBzcmNzdWJkaXJfbmV3ICE9IHNfc3ViZGlyX25ldzoKKyAgICAgICAgICAgICMgU3ViZGlyIGZvciBvbGQgZXh0cmFjdGVkIHNvdXJjZSBtYXRjaGVzIHdoYXQgUyBwb2ludHMgdG8gKGl0IHNob3VsZCEpCisgICAgICAgICAgICAjIGJ1dCBzdWJkaXIgZm9yIG5ldyBleHRyYWN0ZWQgc291cmNlIGRvZXNuJ3QgbWF0Y2ggd2hhdCBTIHdpbGwgYmUKKyAgICAgICAgICAgIG5ld3ZhbHVlc1snUyddID0gJyR7V09SS0RJUn0vJXMnICUgc3Jjc3ViZGlyX25ldy5yZXBsYWNlKG5ld3B2LCAnJHtQVn0nKQorICAgICAgICAgICAgaWYgY3JkLmV4cGFuZChuZXd2YWx1ZXNbJ1MnXSkgPT0gY3JkLmV4cGFuZCgnJHtXT1JLRElSfS8ke0JQfScpOgorICAgICAgICAgICAgICAgICMgSXQncyB0aGUgZGVmYXVsdCwgZHJvcCBpdAorICAgICAgICAgICAgICAgICMgRklYTUUgd2hhdCBpZiBTIGlzIGJlaW5nIHNldCBpbiBhIC5pbmM/CisgICAgICAgICAgICAgICAgbmV3dmFsdWVzWydTJ10gPSBOb25lCisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1NvdXJjZSBzdWJkaXJlY3RvcnkgaGFzIGNoYW5nZWQsIGRyb3BwaW5nIFMgdmFsdWUgc2luY2UgaXQgbm93IG1hdGNoZXMgdGhlIGRlZmF1bHQgKCIke1dPUktESVJ9LyR7QlB9IiknKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHN1YmRpcmVjdG9yeSBoYXMgY2hhbmdlZCwgdXBkYXRpbmcgUyB2YWx1ZScpCisKKyAgICBpZiBsaWNlbnNlX2RpZmY6CisgICAgICAgIG5ld2xpY2Noa3N1bSA9ICIgIi5qb2luKFsiZmlsZTovL3t9O21kNT17fSIuZm9ybWF0KGxbInBhdGgiXSwgbFsiYWN0dWFsX21kNSJdKSArICgiO2JlZ2lubGluZT17fSIuZm9ybWF0KGxbImJlZ2lubGluZSJdKSBpZiBsWyJiZWdpbmxpbmUiXSBlbHNlICIiKSArICgiO2VuZGxpbmU9e30iLmZvcm1hdChsWyJlbmRsaW5lIl0pIGlmIGxbImVuZGxpbmUiXSBlbHNlICIiKSBmb3IgbCBpbiBuZXdfbGljZW5zZXNdKQorICAgICAgICBuZXd2YWx1ZXNbIkxJQ19GSUxFU19DSEtTVU0iXSA9IG5ld2xpY2Noa3N1bQorICAgICAgICBfYWRkX2xpY2Vuc2VfZGlmZl90b19yZWNpcGUoZnVsbHBhdGgsIGxpY2Vuc2VfZGlmZikKIAogICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGVfZmlsZShmdWxscGF0aCwgRmFsc2UpCiAgICAgb2UucmVjaXBldXRpbHMucGF0Y2hfcmVjaXBlKHJkLCBmdWxscGF0aCwgbmV3dmFsdWVzKQpAQCAtMzc3LDE0ICs0NTEsNTMgQEAKICAgICBpZiBjb25maWdlcnI6CiAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignWW91ciBnaXQgY29uZmlndXJhdGlvbiBpcyBpbmNvbXBsZXRlIHdoaWNoIHdpbGwgcHJldmVudCByZWJhc2VzIGZyb20gd29ya2luZzpcbicgKyAnXG4nLmpvaW4oY29uZmlnZXJyKSkKIAorZGVmIF9leHRyYWN0X2xpY2Vuc2VzKHNyY3BhdGgsIHJlY2lwZV9saWNlbnNlcyk6CisgICAgbGljZW5zZXMgPSBbXQorICAgIGZvciB1cmwgaW4gcmVjaXBlX2xpY2Vuc2VzLnNwbGl0KCk6CisgICAgICAgIGxpY2Vuc2UgPSB7fQorICAgICAgICAodHlwZSwgaG9zdCwgcGF0aCwgdXNlciwgcHN3ZCwgcGFybSkgPSBiYi5mZXRjaC5kZWNvZGV1cmwodXJsKQorICAgICAgICBsaWNlbnNlWydwYXRoJ10gPSBwYXRoCisgICAgICAgIGxpY2Vuc2VbJ21kNSddID0gcGFybS5nZXQoJ21kNScsICcnKQorICAgICAgICBsaWNlbnNlWydiZWdpbmxpbmUnXSwgbGljZW5zZVsnZW5kbGluZSddID0gMCwgMAorICAgICAgICBpZiAnYmVnaW5saW5lJyBpbiBwYXJtOgorICAgICAgICAgICAgbGljZW5zZVsnYmVnaW5saW5lJ10gPSBpbnQocGFybVsnYmVnaW5saW5lJ10pCisgICAgICAgIGlmICdlbmRsaW5lJyBpbiBwYXJtOgorICAgICAgICAgICAgbGljZW5zZVsnZW5kbGluZSddID0gaW50KHBhcm1bJ2VuZGxpbmUnXSkKKyAgICAgICAgbGljZW5zZVsndGV4dCddID0gW10KKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzcmNwYXRoLCBwYXRoKSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIGltcG9ydCBoYXNobGliCisgICAgICAgICAgICBhY3R1YWxfbWQ1ID0gaGFzaGxpYi5tZDUoKQorICAgICAgICAgICAgbGluZW5vID0gMAorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBsaW5lbm8gKz0gMQorICAgICAgICAgICAgICAgIGlmIChsaW5lbm8gPj0gbGljZW5zZVsnYmVnaW5saW5lJ10pIGFuZCAoKGxpbmVubyA8PSBsaWNlbnNlWydlbmRsaW5lJ10pIG9yIG5vdCBsaWNlbnNlWydlbmRsaW5lJ10pOgorICAgICAgICAgICAgICAgICAgICBsaWNlbnNlWyd0ZXh0J10uYXBwZW5kKGxpbmUuZGVjb2RlKGVycm9ycz0naWdub3JlJykpCisgICAgICAgICAgICAgICAgICAgIGFjdHVhbF9tZDUudXBkYXRlKGxpbmUpCisgICAgICAgIGxpY2Vuc2VbJ2FjdHVhbF9tZDUnXSA9IGFjdHVhbF9tZDUuaGV4ZGlnZXN0KCkKKyAgICAgICAgbGljZW5zZXMuYXBwZW5kKGxpY2Vuc2UpCisgICAgcmV0dXJuIGxpY2Vuc2VzCisKK2RlZiBfZ2VuZXJhdGVfbGljZW5zZV9kaWZmKG9sZF9saWNlbnNlcywgbmV3X2xpY2Vuc2VzKToKKyAgICBuZWVkX2RpZmYgPSBGYWxzZQorICAgIGZvciBsIGluIG5ld19saWNlbnNlczoKKyAgICAgICAgaWYgbFsnbWQ1J10gIT0gbFsnYWN0dWFsX21kNSddOgorICAgICAgICAgICAgbmVlZF9kaWZmID0gVHJ1ZQorICAgICAgICAgICAgYnJlYWsKKyAgICBpZiBuZWVkX2RpZmYgPT0gRmFsc2U6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBpbXBvcnQgZGlmZmxpYgorICAgIGRpZmYgPSAnJworICAgIGZvciBvbGQsIG5ldyBpbiB6aXAob2xkX2xpY2Vuc2VzLCBuZXdfbGljZW5zZXMpOgorICAgICAgICBmb3IgbGluZSBpbiBkaWZmbGliLnVuaWZpZWRfZGlmZihvbGRbJ3RleHQnXSwgbmV3Wyd0ZXh0J10sIG9sZFsncGF0aCddLCBuZXdbJ3BhdGgnXSk6CisgICAgICAgICAgICBkaWZmID0gZGlmZiArIGxpbmUKKyAgICByZXR1cm4gZGlmZgogCiBkZWYgdXBncmFkZShhcmdzLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UpOgogICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAndXBncmFkZScgc3ViY29tbWFuZCIiIgogCiAgICAgaWYgYXJncy5yZWNpcGVuYW1lIGluIHdvcmtzcGFjZToKICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCJyZWNpcGUgJXMgaXMgYWxyZWFkeSBpbiB5b3VyIHdvcmtzcGFjZSIgJSBhcmdzLnJlY2lwZW5hbWUpCi0gICAgaWYgbm90IGFyZ3MudmVyc2lvbiBhbmQgbm90IGFyZ3Muc3JjcmV2OgotICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIllvdSBtdXN0IHByb3ZpZGUgYSB2ZXJzaW9uIHVzaW5nIHRoZSAtLXZlcnNpb24vLVYgb3B0aW9uLCBvciBmb3IgcmVjaXBlcyB0aGF0IGZldGNoIGZyb20gYW4gU0NNIHN1Y2ggYXMgZ2l0LCB0aGUgLS1zcmNyZXYvLVMgb3B0aW9uIikKICAgICBpZiBhcmdzLnNyY2JyYW5jaCBhbmQgbm90IGFyZ3Muc3JjcmV2OgogICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIklmIHlvdSBzcGVjaWZ5IC0tc3JjYnJhbmNoLy1CIHRoZW4geW91IG11c3QgdXNlIC0tc3JjcmV2Ly1TIHRvIHNwZWNpZnkgdGhlIHJldmlzaW9uIiAlIGFyZ3MucmVjaXBlbmFtZSkKIApAQCAtNDA3LDIyICs1MjAsNDMgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNyY3RyZWUgPSBzdGFuZGFyZC5nZXRfZGVmYXVsdF9zcmN0cmVlKGNvbmZpZywgcG4pCiAKKyAgICAgICAgIyB0cnkgdG8gYXV0b21hdGljYWxseSBkaXNjb3ZlciBsYXRlc3QgdmVyc2lvbiBhbmQgcmV2aXNpb24gaWYgbm90IHByb3ZpZGVkIG9uIGNvbW1hbmQgbGluZQorICAgICAgICBpZiBub3QgYXJncy52ZXJzaW9uIGFuZCBub3QgYXJncy5zcmNyZXY6CisgICAgICAgICAgICB2ZXJzaW9uX2luZm8gPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3Vwc3RyZWFtX3ZlcnNpb24ocmQpCisgICAgICAgICAgICBpZiB2ZXJzaW9uX2luZm9bJ3ZlcnNpb24nXSBhbmQgbm90IHZlcnNpb25faW5mb1sndmVyc2lvbiddLmVuZHN3aXRoKCJuZXctY29tbWl0cy1hdmFpbGFibGUiKToKKyAgICAgICAgICAgICAgICBhcmdzLnZlcnNpb24gPSB2ZXJzaW9uX2luZm9bJ3ZlcnNpb24nXQorICAgICAgICAgICAgaWYgdmVyc2lvbl9pbmZvWydyZXZpc2lvbiddOgorICAgICAgICAgICAgICAgIGFyZ3Muc3JjcmV2ID0gdmVyc2lvbl9pbmZvWydyZXZpc2lvbiddCisgICAgICAgIGlmIG5vdCBhcmdzLnZlcnNpb24gYW5kIG5vdCBhcmdzLnNyY3JldjoKKyAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcigiQXV0b21hdGljIGRpc2NvdmVyeSBvZiBsYXRlc3QgdmVyc2lvbi9yZXZpc2lvbiBmYWlsZWQgLSB5b3UgbXVzdCBwcm92aWRlIGEgdmVyc2lvbiB1c2luZyB0aGUgLS12ZXJzaW9uLy1WIG9wdGlvbiwgb3IgZm9yIHJlY2lwZXMgdGhhdCBmZXRjaCBmcm9tIGFuIFNDTSBzdWNoIGFzIGdpdCwgdGhlIC0tc3JjcmV2Ly1TIG9wdGlvbi4iKQorCiAgICAgICAgIHN0YW5kYXJkLl9jaGVja19jb21wYXRpYmxlX3JlY2lwZShwbiwgcmQpCiAgICAgICAgIG9sZF9zcmNyZXYgPSByZC5nZXRWYXIoJ1NSQ1JFVicpCiAgICAgICAgIGlmIG9sZF9zcmNyZXYgPT0gJ0lOVkFMSUQnOgogICAgICAgICAgICAgb2xkX3NyY3JldiA9IE5vbmUKICAgICAgICAgaWYgb2xkX3NyY3JldiBhbmQgbm90IGFyZ3Muc3JjcmV2OgogICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCJSZWNpcGUgc3BlY2lmaWVzIGEgU1JDUkVWIHZhbHVlOyB5b3UgbXVzdCBzcGVjaWZ5IGEgbmV3IG9uZSB3aGVuIHVwZ3JhZGluZyIpCi0gICAgICAgIGlmIHJkLmdldFZhcignUFYnKSA9PSBhcmdzLnZlcnNpb24gYW5kIG9sZF9zcmNyZXYgPT0gYXJncy5zcmNyZXY6CisgICAgICAgIG9sZF92ZXIgPSByZC5nZXRWYXIoJ1BWJykKKyAgICAgICAgaWYgb2xkX3ZlciA9PSBhcmdzLnZlcnNpb24gYW5kIG9sZF9zcmNyZXYgPT0gYXJncy5zcmNyZXY6CiAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIkN1cnJlbnQgYW5kIHVwZ3JhZGUgdmVyc2lvbnMgYXJlIHRoZSBzYW1lIHZlcnNpb24iKQorICAgICAgICBpZiBhcmdzLnZlcnNpb246CisgICAgICAgICAgICBpZiBiYi51dGlscy52ZXJjbXBfc3RyaW5nKGFyZ3MudmVyc2lvbiwgb2xkX3ZlcikgPCAwOgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdVcGdyYWRlIHZlcnNpb24gJXMgY29tcGFyZXMgYXMgbGVzcyB0aGFuIHRoZSBjdXJyZW50IHZlcnNpb24gJXMuIElmIHlvdSBhcmUgdXNpbmcgYSBwYWNrYWdlIGZlZWQgZm9yIG9uLXRhcmdldCB1cGdyYWRlcyBvciBwcm92aWRpbmcgdGhpcyByZWNpcGUgZm9yIGdlbmVyYWwgY29uc3VtcHRpb24sIHRoZW4geW91IHNob3VsZCBpbmNyZW1lbnQgUEUgaW4gdGhlIHJlY2lwZSAob3IgaWYgdGhlcmUgaXMgbm8gY3VycmVudCBQRSB2YWx1ZSBzZXQsIHNldCBpdCB0byAiMSIpJyAlIChhcmdzLnZlcnNpb24sIG9sZF92ZXIpKQorICAgICAgICAgICAgY2hlY2tfcHJlcmVsZWFzZV92ZXJzaW9uKGFyZ3MudmVyc2lvbiwgJ2RldnRvb2wgdXBncmFkZScpCiAKICAgICAgICAgcmYgPSBOb25lCisgICAgICAgIGxpY2Vuc2VfZGlmZiA9IE5vbmUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV2MSA9IHN0YW5kYXJkLl9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBGYWxzZSwgJ2RldnRvb2wtb3JpZycsIEZhbHNlLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGFyZ3MuZml4ZWRfc2V0dXAsIHJkLCB0aW5mb2lsKQotICAgICAgICAgICAgcmV2MiwgbWQ1LCBzaGEyNTYsIHNyY2JyYW5jaCA9IF9leHRyYWN0X25ld19zb3VyY2UoYXJncy52ZXJzaW9uLCBzcmN0cmVlLCBhcmdzLm5vX3BhdGNoLAorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0V4dHJhY3RpbmcgY3VycmVudCB2ZXJzaW9uIHNvdXJjZS4uLicpCisgICAgICAgICAgICByZXYxLCBzcmNzdWJkaXIxID0gc3RhbmRhcmQuX2V4dHJhY3Rfc291cmNlKHNyY3RyZWUsIEZhbHNlLCAnZGV2dG9vbC1vcmlnJywgRmFsc2UsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSwgYXJncy5maXhlZF9zZXR1cCwgcmQsIHRpbmZvaWwsIG5vX292ZXJyaWRlcz1hcmdzLm5vX292ZXJyaWRlcykKKyAgICAgICAgICAgIG9sZF9saWNlbnNlcyA9IF9leHRyYWN0X2xpY2Vuc2VzKHNyY3RyZWUsIHJkLmdldFZhcignTElDX0ZJTEVTX0NIS1NVTScpKQorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0V4dHJhY3RpbmcgdXBncmFkZWQgdmVyc2lvbiBzb3VyY2UuLi4nKQorICAgICAgICAgICAgcmV2MiwgbWQ1LCBzaGEyNTYsIHNyY2JyYW5jaCwgc3Jjc3ViZGlyMiA9IF9leHRyYWN0X25ld19zb3VyY2UoYXJncy52ZXJzaW9uLCBzcmN0cmVlLCBhcmdzLm5vX3BhdGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Muc3JjcmV2LCBhcmdzLnNyY2JyYW5jaCwgYXJncy5icmFuY2gsIGFyZ3Mua2VlcF90ZW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbmZvaWwsIHJkKQotICAgICAgICAgICAgcmYsIGNvcGllZCA9IF9jcmVhdGVfbmV3X3JlY2lwZShhcmdzLnZlcnNpb24sIG1kNSwgc2hhMjU2LCBhcmdzLnNyY3Jldiwgc3JjYnJhbmNoLCBjb25maWcud29ya3NwYWNlX3BhdGgsIHRpbmZvaWwsIHJkKQorICAgICAgICAgICAgbmV3X2xpY2Vuc2VzID0gX2V4dHJhY3RfbGljZW5zZXMoc3JjdHJlZSwgcmQuZ2V0VmFyKCdMSUNfRklMRVNfQ0hLU1VNJykpCisgICAgICAgICAgICBsaWNlbnNlX2RpZmYgPSBfZ2VuZXJhdGVfbGljZW5zZV9kaWZmKG9sZF9saWNlbnNlcywgbmV3X2xpY2Vuc2VzKQorICAgICAgICAgICAgcmYsIGNvcGllZCA9IF9jcmVhdGVfbmV3X3JlY2lwZShhcmdzLnZlcnNpb24sIG1kNSwgc2hhMjU2LCBhcmdzLnNyY3Jldiwgc3JjYnJhbmNoLCBzcmNzdWJkaXIxLCBzcmNzdWJkaXIyLCBjb25maWcud29ya3NwYWNlX3BhdGgsIHRpbmZvaWwsIHJkLCBsaWNlbnNlX2RpZmYsIG5ld19saWNlbnNlcykKICAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuQ21kRXJyb3IgYXMgZToKICAgICAgICAgICAgIF91cGdyYWRlX2Vycm9yKGUsIHJmLCBzcmN0cmVlKQogICAgICAgICBleGNlcHQgRGV2dG9vbEVycm9yIGFzIGU6CkBAIC00MzMsMTAgKzU2NywzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkLCBjb25maWcud29ya3NwYWNlX3BhdGgsIHJkKQogICAgICAgICBzdGFuZGFyZC5fYWRkX21kNShjb25maWcsIHBuLCBhZikKIAotICAgICAgICB1cGRhdGVfdW5sb2NrZWRzaWdzKGJhc2VwYXRoLCB3b3Jrc3BhY2UsIFtwbl0sIGFyZ3MuZml4ZWRfc2V0dXApCisgICAgICAgIHVwZGF0ZV91bmxvY2tlZHNpZ3MoYmFzZXBhdGgsIHdvcmtzcGFjZSwgYXJncy5maXhlZF9zZXR1cCwgW3BuXSkKIAogICAgICAgICBsb2dnZXIuaW5mbygnVXBncmFkZWQgc291cmNlIGV4dHJhY3RlZCB0byAlcycgJSBzcmN0cmVlKQogICAgICAgICBsb2dnZXIuaW5mbygnTmV3IHJlY2lwZSBpcyAlcycgJSByZikKKyAgICAgICAgaWYgbGljZW5zZV9kaWZmOgorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0xpY2Vuc2UgY2hlY2tzdW1zIGhhdmUgYmVlbiB1cGRhdGVkIGluIHRoZSBuZXcgcmVjaXBlOyBwbGVhc2UgcmVmZXIgdG8gaXQgZm9yIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9sZCBhbmQgdGhlIG5ldyBsaWNlbnNlIHRleHRzLicpCisgICAgZmluYWxseToKKyAgICAgICAgdGluZm9pbC5zaHV0ZG93bigpCisgICAgcmV0dXJuIDAKKworZGVmIGxhdGVzdF92ZXJzaW9uKGFyZ3MsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSk6CisgICAgIiIiRW50cnkgcG9pbnQgZm9yIHRoZSBkZXZ0b29sICdsYXRlc3RfdmVyc2lvbicgc3ViY29tbWFuZCIiIgorICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoLCB0cmFja2luZz1UcnVlKQorICAgIHRyeToKKyAgICAgICAgcmQgPSBwYXJzZV9yZWNpcGUoY29uZmlnLCB0aW5mb2lsLCBhcmdzLnJlY2lwZW5hbWUsIFRydWUpCisgICAgICAgIGlmIG5vdCByZDoKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIHZlcnNpb25faW5mbyA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfdXBzdHJlYW1fdmVyc2lvbihyZCkKKyAgICAgICAgIyAibmV3LWNvbW1pdHMtYXZhaWxhYmxlIiBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgdXBzdHJlYW0gbmV2ZXIgaXNzdWVzIHZlcnNpb24gdGFncworICAgICAgICBpZiBub3QgdmVyc2lvbl9pbmZvWyd2ZXJzaW9uJ10uZW5kc3dpdGgoIm5ldy1jb21taXRzLWF2YWlsYWJsZSIpOgorICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkN1cnJlbnQgdmVyc2lvbjoge30iLmZvcm1hdCh2ZXJzaW9uX2luZm9bJ2N1cnJlbnRfdmVyc2lvbiddKSkKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJMYXRlc3QgdmVyc2lvbjoge30iLmZvcm1hdCh2ZXJzaW9uX2luZm9bJ3ZlcnNpb24nXSkpCisgICAgICAgICAgICBpZiB2ZXJzaW9uX2luZm9bJ3JldmlzaW9uJ106CisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkxhdGVzdCB2ZXJzaW9uJ3MgY29tbWl0OiB7fSIuZm9ybWF0KHZlcnNpb25faW5mb1sncmV2aXNpb24nXSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygiTGF0ZXN0IGNvbW1pdDoge30iLmZvcm1hdCh2ZXJzaW9uX2luZm9bJ3JldmlzaW9uJ10pKQogICAgIGZpbmFsbHk6CiAgICAgICAgIHRpbmZvaWwuc2h1dGRvd24oKQogICAgIHJldHVybiAwCkBAIC00NTEsMTMgKzYwNywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwPSdzdGFydGluZycpCiAgICAgcGFyc2VyX3VwZ3JhZGUuYWRkX2FyZ3VtZW50KCdyZWNpcGVuYW1lJywgaGVscD0nTmFtZSBvZiByZWNpcGUgdG8gdXBncmFkZSAoanVzdCBuYW1lIC0gbm8gdmVyc2lvbiwgcGF0aCBvciBleHRlbnNpb24pJykKICAgICBwYXJzZXJfdXBncmFkZS5hZGRfYXJndW1lbnQoJ3NyY3RyZWUnLCAgbmFyZ3M9Jz8nLCBoZWxwPSdQYXRoIHRvIHdoZXJlIHRvIGV4dHJhY3QgdGhlIHNvdXJjZSB0cmVlLiBJZiBub3Qgc3BlY2lmaWVkLCBhIHN1YmRpcmVjdG9yeSBvZiAlcyB3aWxsIGJlIHVzZWQuJyAlIGRlZnNyY3RyZWUpCi0gICAgcGFyc2VyX3VwZ3JhZGUuYWRkX2FyZ3VtZW50KCctLXZlcnNpb24nLCAnLVYnLCBoZWxwPSdWZXJzaW9uIHRvIHVwZ3JhZGUgdG8gKFBWKScpCi0gICAgcGFyc2VyX3VwZ3JhZGUuYWRkX2FyZ3VtZW50KCctLXNyY3JldicsICctUycsIGhlbHA9J1NvdXJjZSByZXZpc2lvbiB0byB1cGdyYWRlIHRvIChyZXF1aXJlZCBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTSBzdWNoIGFzIGdpdCknKQorICAgIHBhcnNlcl91cGdyYWRlLmFkZF9hcmd1bWVudCgnLS12ZXJzaW9uJywgJy1WJywgaGVscD0nVmVyc2lvbiB0byB1cGdyYWRlIHRvIChQVikuIElmIG9taXR0ZWQsIGxhdGVzdCB1cHN0cmVhbSB2ZXJzaW9uIHdpbGwgYmUgZGV0ZXJtaW5lZCBhbmQgdXNlZCwgaWYgcG9zc2libGUuJykKKyAgICBwYXJzZXJfdXBncmFkZS5hZGRfYXJndW1lbnQoJy0tc3JjcmV2JywgJy1TJywgaGVscD0nU291cmNlIHJldmlzaW9uIHRvIHVwZ3JhZGUgdG8gKHVzZWZ1bCB3aGVuIGZldGNoaW5nIGZyb20gYW4gU0NNIHN1Y2ggYXMgZ2l0KScpCiAgICAgcGFyc2VyX3VwZ3JhZGUuYWRkX2FyZ3VtZW50KCctLXNyY2JyYW5jaCcsICctQicsIGhlbHA9J0JyYW5jaCBpbiBzb3VyY2UgcmVwb3NpdG9yeSBjb250YWluaW5nIHRoZSByZXZpc2lvbiB0byB1c2UgKGlmIGZldGNoaW5nIGZyb20gYW4gU0NNIHN1Y2ggYXMgZ2l0KScpCiAgICAgcGFyc2VyX3VwZ3JhZGUuYWRkX2FyZ3VtZW50KCctLWJyYW5jaCcsICctYicsIGRlZmF1bHQ9ImRldnRvb2wiLCBoZWxwPSdOYW1lIGZvciBuZXcgZGV2ZWxvcG1lbnQgYnJhbmNoIHRvIGNoZWNrb3V0IChkZWZhdWx0ICIlKGRlZmF1bHQpcyIpJykKICAgICBwYXJzZXJfdXBncmFkZS5hZGRfYXJndW1lbnQoJy0tbm8tcGF0Y2gnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdEbyBub3QgYXBwbHkgcGF0Y2hlcyBmcm9tIHRoZSByZWNpcGUgdG8gdGhlIG5ldyBzb3VyY2UgY29kZScpCisgICAgcGFyc2VyX3VwZ3JhZGUuYWRkX2FyZ3VtZW50KCctLW5vLW92ZXJyaWRlcycsICctTycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0RvIG5vdCBjcmVhdGUgYnJhbmNoZXMgZm9yIG90aGVyIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb25zJykKICAgICBncm91cCA9IHBhcnNlcl91cGdyYWRlLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKQogICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1zYW1lLWRpcicsICctcycsIGhlbHA9J0J1aWxkIGluIHNhbWUgZGlyZWN0b3J5IGFzIHNvdXJjZScsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLW5vLXNhbWUtZGlyJywgaGVscD0nRm9yY2UgYnVpbGQgaW4gYSBzZXBhcmF0ZSBidWlsZCBkaXJlY3RvcnknLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIHBhcnNlcl91cGdyYWRlLmFkZF9hcmd1bWVudCgnLS1rZWVwLXRlbXAnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdLZWVwIHRlbXBvcmFyeSBkaXJlY3RvcnkgKGZvciBkZWJ1Z2dpbmcpJykKICAgICBwYXJzZXJfdXBncmFkZS5zZXRfZGVmYXVsdHMoZnVuYz11cGdyYWRlLCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQorCisgICAgcGFyc2VyX2xhdGVzdF92ZXJzaW9uID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdsYXRlc3QtdmVyc2lvbicsIGhlbHA9J1JlcG9ydCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYW4gZXhpc3RpbmcgcmVjaXBlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J1F1ZXJpZXMgdGhlIHVwc3RyZWFtIHNlcnZlciBmb3Igd2hhdCB0aGUgbGF0ZXN0IHVwc3RyZWFtIHJlbGVhc2UgaXMgKGZvciBnaXQsIHRhZ3MgYXJlIGNoZWNrZWQsIGZvciB0YXJiYWxscywgYSBsaXN0IG9mIHRoZW0gaXMgb2J0YWluZWQsIGFuZCBvbmUgd2l0aCB0aGUgaGlnaGVzdCB2ZXJzaW9uIG51bWJlciBpcyByZXBvcnRlZCknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD0naW5mbycpCisgICAgcGFyc2VyX2xhdGVzdF92ZXJzaW9uLmFkZF9hcmd1bWVudCgncmVjaXBlbmFtZScsIGhlbHA9J05hbWUgb2YgcmVjaXBlIHRvIHF1ZXJ5IChqdXN0IG5hbWUgLSBubyB2ZXJzaW9uLCBwYXRoIG9yIGV4dGVuc2lvbiknKQorICAgIHBhcnNlcl9sYXRlc3RfdmVyc2lvbi5zZXRfZGVmYXVsdHMoZnVuYz1sYXRlc3RfdmVyc2lvbikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3V0aWxjbWRzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXRpbGNtZHMucHkKaW5kZXggYjc0NTExNi4uN2NkMTM5ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXRpbGNtZHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXRpbGNtZHMucHkKQEAgLTMyLDYgKzMyLDEyIEBACiAKIGRlZiBfZmluZF9yZWNpcGVfcGF0aChhcmdzLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UpOgogICAgIGlmIGFyZ3MuYW55X3JlY2lwZToKKyAgICAgICAgbG9nZ2VyLndhcm5pbmcoJy1hLy0tYW55LXJlY2lwZSBvcHRpb24gaXMgbm93IGFsd2F5cyBhY3RpdmUsIGFuZCB0aHVzIHRoZSBvcHRpb24gd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UnKQorICAgIGlmIGFyZ3MucmVjaXBlbmFtZSBpbiB3b3Jrc3BhY2U6CisgICAgICAgIHJlY2lwZWZpbGUgPSB3b3Jrc3BhY2VbYXJncy5yZWNpcGVuYW1lXVsncmVjaXBlZmlsZSddCisgICAgZWxzZToKKyAgICAgICAgcmVjaXBlZmlsZSA9IE5vbmUKKyAgICBpZiBub3QgcmVjaXBlZmlsZToKICAgICAgICAgdGluZm9pbCA9IHNldHVwX3RpbmZvaWwoY29uZmlnX29ubHk9RmFsc2UsIGJhc2VwYXRoPWJhc2VwYXRoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZCA9IHBhcnNlX3JlY2lwZShjb25maWcsIHRpbmZvaWwsIGFyZ3MucmVjaXBlbmFtZSwgVHJ1ZSkKQEAgLTQwLDEyICs0Niw2IEBACiAgICAgICAgICAgICByZWNpcGVmaWxlID0gcmQuZ2V0VmFyKCdGSUxFJykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHRpbmZvaWwuc2h1dGRvd24oKQotICAgIGVsc2U6Ci0gICAgICAgIGNoZWNrX3dvcmtzcGFjZV9yZWNpcGUod29ya3NwYWNlLCBhcmdzLnJlY2lwZW5hbWUpCi0gICAgICAgIHJlY2lwZWZpbGUgPSB3b3Jrc3BhY2VbYXJncy5yZWNpcGVuYW1lXVsncmVjaXBlZmlsZSddCi0gICAgICAgIGlmIG5vdCByZWNpcGVmaWxlOgotICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCJSZWNpcGUgZmlsZSBmb3IgJXMgaXMgbm90IHVuZGVyIHRoZSB3b3Jrc3BhY2UiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnJlY2lwZW5hbWUpCiAgICAgcmV0dXJuIHJlY2lwZWZpbGUKIAogCkBAIC0yMjIsMTkgKzIyMiwyMSBAQAogCiBkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc3VicGFyc2VycywgY29udGV4dCk6CiAgICAgIiIiUmVnaXN0ZXIgZGV2dG9vbCBzdWJjb21tYW5kcyBmcm9tIHRoaXMgcGx1Z2luIiIiCi0gICAgcGFyc2VyX2VkaXRfcmVjaXBlID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdlZGl0LXJlY2lwZScsIGhlbHA9J0VkaXQgYSByZWNpcGUgZmlsZSBpbiB5b3VyIHdvcmtzcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdSdW5zIHRoZSBkZWZhdWx0IGVkaXRvciAoYXMgc3BlY2lmaWVkIGJ5IHRoZSBFRElUT1IgdmFyaWFibGUpIG9uIHRoZSBzcGVjaWZpZWQgcmVjaXBlLiBOb3RlIHRoYXQgdGhlIHJlY2lwZSBmaWxlIGl0c2VsZiBtdXN0IGJlIGluIHRoZSB3b3Jrc3BhY2UgKGkuZS4gYXMgYSByZXN1bHQgb2YgImRldnRvb2wgYWRkIiBvciAiZGV2dG9vbCB1cGdyYWRlIik7IHlvdSBjYW4gb3ZlcnJpZGUgdGhpcyB3aXRoIHRoZSAtYS8tLWFueS1yZWNpcGUgb3B0aW9uLicsCisgICAgcGFyc2VyX2VkaXRfcmVjaXBlID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdlZGl0LXJlY2lwZScsIGhlbHA9J0VkaXQgYSByZWNpcGUgZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdSdW5zIHRoZSBkZWZhdWx0IGVkaXRvciAoYXMgc3BlY2lmaWVkIGJ5IHRoZSBFRElUT1IgdmFyaWFibGUpIG9uIHRoZSBzcGVjaWZpZWQgcmVjaXBlLiBOb3RlIHRoYXQgdGhpcyB3aWxsIGJlIHF1aWNrZXIgZm9yIHJlY2lwZXMgaW4gdGhlIHdvcmtzcGFjZSBhcyB0aGUgY2FjaGUgZG9lcyBub3QgbmVlZCB0byBiZSBsb2FkZWQgaW4gdGhhdCBjYXNlLicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwPSd3b3JraW5nJykKICAgICBwYXJzZXJfZWRpdF9yZWNpcGUuYWRkX2FyZ3VtZW50KCdyZWNpcGVuYW1lJywgaGVscD0nUmVjaXBlIHRvIGVkaXQnKQotICAgIHBhcnNlcl9lZGl0X3JlY2lwZS5hZGRfYXJndW1lbnQoJy0tYW55LXJlY2lwZScsICctYScsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0VkaXQgYW55IHJlY2lwZSwgbm90IGp1c3Qgd2hlcmUgdGhlIHJlY2lwZSBmaWxlIGl0c2VsZiBpcyBpbiB0aGUgd29ya3NwYWNlJykKKyAgICAjIEZJWE1FIGRyb3AgLWEgYXQgc29tZSBwb2ludCBpbiBmdXR1cmUKKyAgICBwYXJzZXJfZWRpdF9yZWNpcGUuYWRkX2FyZ3VtZW50KCctLWFueS1yZWNpcGUnLCAnLWEnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdEb2VzIG5vdGhpbmcgKGV4aXN0cyBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkpJykKICAgICBwYXJzZXJfZWRpdF9yZWNpcGUuc2V0X2RlZmF1bHRzKGZ1bmM9ZWRpdF9yZWNpcGUpCiAKICAgICAjIEZpbmQtcmVjaXBlCi0gICAgcGFyc2VyX2ZpbmRfcmVjaXBlID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdmaW5kLXJlY2lwZScsIGhlbHA9J0ZpbmQgYSByZWNpcGUgZmlsZSBpbiB5b3VyIHdvcmtzcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdCeSBkZWZhdWx0LCB0aGlzIHdpbGwgZmluZCBhIHJlY2lwZSBmaWxlIGluIHlvdXIgd29ya3NwYWNlOyB5b3UgY2FuIG92ZXJyaWRlIHRoaXMgd2l0aCB0aGUgLWEvLS1hbnktcmVjaXBlIG9wdGlvbi4nLAorICAgIHBhcnNlcl9maW5kX3JlY2lwZSA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignZmluZC1yZWNpcGUnLCBoZWxwPSdGaW5kIGEgcmVjaXBlIGZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nRmluZHMgYSByZWNpcGUgZmlsZS4gTm90ZSB0aGF0IHRoaXMgd2lsbCBiZSBxdWlja2VyIGZvciByZWNpcGVzIGluIHRoZSB3b3Jrc3BhY2UgYXMgdGhlIGNhY2hlIGRvZXMgbm90IG5lZWQgdG8gYmUgbG9hZGVkIGluIHRoYXQgY2FzZS4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD0nd29ya2luZycpCiAgICAgcGFyc2VyX2ZpbmRfcmVjaXBlLmFkZF9hcmd1bWVudCgncmVjaXBlbmFtZScsIGhlbHA9J1JlY2lwZSB0byBmaW5kJykKLSAgICBwYXJzZXJfZmluZF9yZWNpcGUuYWRkX2FyZ3VtZW50KCctLWFueS1yZWNpcGUnLCAnLWEnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdGaW5kIGFueSByZWNpcGUsIG5vdCBqdXN0IHdoZXJlIHRoZSByZWNpcGUgZmlsZSBpdHNlbGYgaXMgaW4gdGhlIHdvcmtzcGFjZScpCisgICAgIyBGSVhNRSBkcm9wIC1hIGF0IHNvbWUgcG9pbnQgaW4gZnV0dXJlCisgICAgcGFyc2VyX2ZpbmRfcmVjaXBlLmFkZF9hcmd1bWVudCgnLS1hbnktcmVjaXBlJywgJy1hJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRG9lcyBub3RoaW5nIChleGlzdHMgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5KScpCiAgICAgcGFyc2VyX2ZpbmRfcmVjaXBlLnNldF9kZWZhdWx0cyhmdW5jPWZpbmRfcmVjaXBlKQogCiAgICAgIyBOT1RFOiBOZWVkZWQgdG8gb3ZlcnJpZGUgdGhlIHVzYWdlIHN0cmluZyBoZXJlIHNpbmNlIHRoZSBkZWZhdWx0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkKaW5kZXggNWJmOTM5ZS4uYTM3MTAyOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZS5weQpAQCAtMzgzLDggKzM4MywxMCBAQAogICAgICAgICAjIHdoaWNoIGNhdXNlcyBkZWNvZGV1cmwgdG8gZmFpbCBnZXR0aW5nIHRoZSByaWdodCBob3N0IGFuZCBwYXRoCiAgICAgICAgIGlmIGxlbihob3N0LnNwbGl0KCc6JykpID4gMToKICAgICAgICAgICAgIHNwbGl0c2xhc2ggPSBob3N0LnNwbGl0KCc6JykKLSAgICAgICAgICAgIGhvc3QgPSBzcGxpdHNsYXNoWzBdCi0gICAgICAgICAgICBwYXRoID0gJy8nICsgc3BsaXRzbGFzaFsxXSArIHBhdGgKKyAgICAgICAgICAgICMgUG9ydCBudW1iZXIgc2hvdWxkIG5vdCBiZSBzcGxpdCBmcm9tIGhvc3QKKyAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaCgnXlswLTldKyQnLCBzcGxpdHNsYXNoWzFdKToKKyAgICAgICAgICAgICAgICBob3N0ID0gc3BsaXRzbGFzaFswXQorICAgICAgICAgICAgICAgIHBhdGggPSAnLycgKyBzcGxpdHNsYXNoWzFdICsgcGF0aAogICAgICAgICAjQWxnb3JpdGhtOgogICAgICAgICAjIGlmIHVzZXIgaXMgZGVmaW5lZCwgYXBwZW5kIHByb3RvY29sPXNzaCBvciBpZiBhIHByb3RvY29sIGlzIGRlZmluZWQsIHRoZW4gaG9ub3IgdGhlIHVzZXItZGVmaW5lZCBwcm90b2NvbAogICAgICAgICAjIGlmIG5vIHVzZXIgJiBwYXNzd29yZCBpcyBkZWZpbmVkLCBjaGVjayBmb3Igc2NoZW1lIHR5cGUgYW5kIGFwcGVuZCB0aGUgcHJvdG9jb2wgd2l0aCB0aGUgc2NoZW1lIHR5cGUKQEAgLTQzMyw2ICs0MzUsOSBAQAogICAgICAgICBzb3VyY2UgPSAnZmlsZTovLyVzJyAlIG9zLnBhdGguYWJzcGF0aChzb3VyY2UpCiAKICAgICBpZiBzY3JpcHR1dGlscy5pc19zcmNfdXJsKHNvdXJjZSk6CisgICAgICAgICMgV2FybiBhYm91dCBnaXRodWIgYXJjaGl2ZSBVUkxzCisgICAgICAgIGlmIHJlLm1hdGNoKCdodHRwcz86Ly9naXRodWIuY29tL1teL10rL1teL10rL2FyY2hpdmUvLisoXC50YXJcLi4qfFwuemlwKSQnLCBzb3VyY2UpOgorICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ2dpdGh1YiBhcmNoaXZlIGZpbGVzIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUgYW5kIG1heSBiZSByZS1nZW5lcmF0ZWQgb3ZlciB0aW1lLiBJZiB0aGUgbGF0dGVyIG9jY3VycywgdGhlIGNoZWNrc3VtcyB3aWxsIGxpa2VseSBjaGFuZ2UgYW5kIHRoZSByZWNpcGUgd2lsbCBmYWlsIGF0IGRvX2ZldGNoLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBwb2ludCB0byBhbiBhY3R1YWwgY29tbWl0IG9yIHRhZyBpbiB0aGUgcmVwb3NpdG9yeSBpbnN0ZWFkICh1c2luZyB0aGUgcmVwb3NpdG9yeSBVUkwgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgLVMvLS1zcmNyZXYgb3B0aW9uKS4nKQogICAgICAgICAjIEZldGNoIGEgVVJMCiAgICAgICAgIGZldGNodXJpID0gcmVmb3JtYXRfZ2l0X3VyaSh1cmxkZWZyYWcoc291cmNlKVswXSkKICAgICAgICAgaWYgYXJncy5iaW5hcnk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weQppbmRleCBhZTUzOTcyLi5iYjQyYTVjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9ucG0ucHkKQEAgLTczLDcgKzczLDYgQEAKICAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnICcsICdfJykKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpY2Vuc2VbMF0gPT0gJygnOgogICAgICAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9ICcoJyArIGxpY2Vuc2UgKyAnKScKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0xJQ0VOU0U6IHt9Jy5mb3JtYXQobGljZW5zZSkpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnQU5EJywgJyYnKQogICAgICAgICAgICAgICAgICAgICBpZiBsaWNlbnNlWzBdID09ICcoJzoKQEAgLTMyMSw2ICszMjAsNyBAQAogICAgICAgICAgICAgICAgICAgICBibGFja2xpc3QgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBpZiAobm90IGJsYWNrbGlzdCBhbmQgJ2xpbnV4JyBub3QgaW4gcGtnX29zKSBvciAnIWxpbnV4JyBpbiBwa2dfb3M6CisgICAgICAgICAgICAgICAgcGtnID0gcGRhdGEuZ2V0KCduYW1lJywgJ1VubmFtZWQgcGFja2FnZScpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJTa2lwcGluZyAlcyBzaW5jZSBpdCdzIGluY29tcGF0aWJsZSB3aXRoIExpbnV4IiAlIHBrZykKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9lZmktYm9vdGRpc2sud2tzLmluIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2VmaS1ib290ZGlzay53a3MuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMwMGU2NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9lZmktYm9vdGRpc2sud2tzLmluCkBAIC0wLDAgKzEsMyBAQAorYm9vdGxvYWRlciAtLXB0YWJsZSBncHQKK3BhcnQgL2Jvb3QgLS1zb3VyY2Ugcm9vdGZzIC0tcm9vdGZzLWRpcj0ke0lNQUdFX1JPT1RGU30vYm9vdCAtLWZzdHlwZT12ZmF0IC0tbGFiZWwgYm9vdCAtLWFjdGl2ZSAtLWFsaWduIDEwMjQgLS11c2UtdXVpZCAtLW92ZXJoZWFkLWZhY3RvciAxLjAKK3BhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHJvb3QgLS1hbGlnbiAxMDI0IC0tZXhjbHVkZS1wYXRoIGJvb3QvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2ZpbGVtYXAucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2ZpbGVtYXAucHkKaW5kZXggNzdlMzJiOS4uYTcyZmEwOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9maWxlbWFwLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvZmlsZW1hcC5weQpAQCAtMzcsNyArMzcsMTUgQEAKICAgICAjIEdldCB0aGUgYmxvY2sgc2l6ZSBvZiB0aGUgaG9zdCBmaWxlLXN5c3RlbSBmb3IgdGhlIGltYWdlIGZpbGUgYnkgY2FsbGluZwogICAgICMgdGhlIEZJR0VUQlNaIGlvY3RsIChudW1iZXIgMikuCiAgICAgYmluYXJ5X2RhdGEgPSBmY250bC5pb2N0bChmaWxlX29iaiwgMiwgc3RydWN0LnBhY2soJ0knLCAwKSkKLSAgICByZXR1cm4gc3RydWN0LnVucGFjaygnSScsIGJpbmFyeV9kYXRhKVswXQorICAgIGJzaXplID0gc3RydWN0LnVucGFjaygnSScsIGJpbmFyeV9kYXRhKVswXQorICAgIGlmIG5vdCBic2l6ZToKKyAgICAgICAgaW1wb3J0IG9zCisgICAgICAgIHN0YXQgPSBvcy5mc3RhdChmaWxlX29iai5maWxlbm8oKSkKKyAgICAgICAgaWYgaGFzYXR0cihzdGF0LCAnc3RfYmxrc2l6ZScpOgorICAgICAgICAgICAgYnNpemUgPSBzdGF0LnN0X2Jsa3NpemUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoIlVuYWJsZSB0byBkZXRlcm1pbmUgYmxvY2sgc2l6ZSIpCisgICAgcmV0dXJuIGJzaXplCiAKIGNsYXNzIEVycm9yTm90U3VwcChFeGNlcHRpb24pOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5CmluZGV4IDJhYzQ1ZTAuLjg0MmI4NjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkKQEAgLTU3Niw2ICs1NzYsMTAgQEAKICAgICAgICAgICBwYXJ0aXRpb24uIEluIG90aGVyIHdvcmRzLCBpdCAncHJlcGFyZXMnIHRoZSBmaW5hbCBwYXJ0aXRpb24KICAgICAgICAgICBpbWFnZSB3aGljaCB3aWxsIGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBkaXNrIGltYWdlLgogCisgICAgICBkb19wb3N0X3BhcnRpdGlvbigpCisgICAgICAgICAgQ2FsbGVkIGFmdGVyIHRoZSBwYXJ0aXRpb24gaXMgY3JlYXRlZC4gSXQgaXMgdXNlZnVsIHRvIGFkZCBwb3N0CisgICAgICAgICAgb3BlcmF0aW9ucyBlLmcuIHNpZ25pbmcgdGhlIHBhcnRpdGlvbi4KKwogICAgICAgZG9fY29uZmlndXJlX3BhcnRpdGlvbigpCiAgICAgICAgICAgQ2FsbGVkIGJlZm9yZSBkb19wcmVwYXJlX3BhcnRpdGlvbigpLCB0eXBpY2FsbHkgdXNlZCB0bwogICAgICAgICAgIGNyZWF0ZSBjdXN0b20gY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgYSBwYXJ0aXRpb24sIGZvcgpAQCAtODYzLDcgKzg2NywxMCBAQAogICAgICAgIFRoaXMgaXMgYWNoaWV2ZWQgYnkgd2ljIGFkZGluZyBlbnRyaWVzIHRvIHRoZSBmc3RhYiBkdXJpbmcgaW1hZ2UKICAgICAgICBnZW5lcmF0aW9uLiBJbiBvcmRlciBmb3IgYSB2YWxpZCBmc3RhYiB0byBiZSBnZW5lcmF0ZWQgb25lIG9mIHRoZQogICAgICAgIC0tb25kcml2ZSwgLS1vbmRpc2sgb3IgLS11c2UtdXVpZCBwYXJ0aXRpb24gb3B0aW9ucyBtdXN0IGJlIHVzZWQgZm9yCi0gICAgICAgZWFjaCBwYXJ0aXRpb24gdGhhdCBzcGVjaWZpZXMgYSBtb3VudHBvaW50LgorICAgICAgIGVhY2ggcGFydGl0aW9uIHRoYXQgc3BlY2lmaWVzIGEgbW91bnRwb2ludC4gIE5vdGUgdGhhdCB3aXRoIC0tdXNlLXV1aWQKKyAgICAgICBhbmQgbm9uLXJvb3QgPG1vdW50cG9pbnQ+LCBpbmNsdWRpbmcgc3dhcCwgdGhlIG1vdW50IHByb2dyYW0gbXVzdAorICAgICAgIHVuZGVyc3RhbmQgdGhlIFBBUlRVVUlEIHN5bnRheC4gIFRoaXMgY3VycmVudGx5IGV4Y2x1ZGVzIHRoZSBidXN5Ym94CisgICAgICAgdmVyc2lvbnMgb2YgdGhlc2UgYXBwbGljYXRpb25zLgogCiAKICAgICAgICBUaGUgZm9sbG93aW5nIGFyZSBzdXBwb3J0ZWQgJ3BhcnQnIG9wdGlvbnM6CkBAIC05ODYsNiArOTkzLDExIEBACiAgICAgICAgICAgICAgICAgIGluIGJvb3Rsb2FkZXIgY29uZmlndXJhdGlvbiBiZWZvcmUgcnVubmluZyB3aWMuIEluIHRoaXMgY2FzZSAud2tzIGZpbGUgY2FuCiAgICAgICAgICAgICAgICAgIGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCB0byBzZXQgcHJlY29uZmlndXJlZCBwYXJpdGlvbiBVVUlEIHVzaW5nIHRoaXMgb3B0aW9uLgogCisgICAgICAgICAtLWZzdXVpZDogVGhpcyBvcHRpb24gaXMgc3BlY2lmaWMgdG8gd2ljLiBJdCBzcGVjaWZpZXMgZmlsZXN5c3RlbSBVVUlELgorICAgICAgICAgICAgICAgICAgIEl0J3MgdXNlZnVsIGlmIHByZWNvbmZpZ3VyZWQgZmlsZXN5c3RlbSBVVUlEIGlzIGFkZGVkIHRvIGtlcm5lbCBjb21tYW5kIGxpbmUKKyAgICAgICAgICAgICAgICAgICBpbiBib290bG9hZGVyIGNvbmZpZ3VyYXRpb24gYmVmb3JlIHJ1bm5pbmcgd2ljLiBJbiB0aGlzIGNhc2UgLndrcyBmaWxlIGNhbgorICAgICAgICAgICAgICAgICAgIGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCB0byBzZXQgcHJlY29uZmlndXJlZCBmaWxlc3lzdGVtIFVVSUQgdXNpbmcgdGhpcyBvcHRpb24uCisKICAgICAgICAgIC0tc3lzdGVtLWlkOiBUaGlzIG9wdGlvbiBpcyBzcGVjaWZpYyB0byB3aWMuIEl0IHNwZWNpZmllcyBwYXJ0aXRpb24gc3lzdGVtIGlkLiBJdCdzIHVzZWZ1bAogICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgaGFyd2FyZSB0aGF0IHJlcXVpcmVzIG5vbi1kZWZhdWx0IHBhcnRpdGlvbiBzeXN0ZW0gaWRzLiBUaGUgcGFyYW1ldGVyCiAgICAgICAgICAgICAgICAgICAgICAgaW4gb25lIGJ5dGUgbG9uZyBoZXggbnVtYmVyIGVpdGhlciB3aXRoIDB4IHByZWZpeCBvciB3aXRob3V0IGl0LgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKaW5kZXggNzg1MGU4MS4uZTU5MGIyZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2tzcGFyc2VyLnB5CkBAIC0xNjEsNiArMTYxLDcgQEAKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tc3lzdGVtLWlkJywgdHlwZT1zeXN0ZW1pZHR5cGUpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLXVzZS11dWlkJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tdXVpZCcpCisgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLWZzdXVpZCcpCiAKICAgICAgICAgYm9vdGxvYWRlciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignYm9vdGxvYWRlcicpCiAgICAgICAgIGJvb3Rsb2FkZXIuYWRkX2FyZ3VtZW50KCctLWFwcGVuZCcpCkBAIC0xOTUsNiArMTk2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBLaWNrU3RhcnRFcnJvcignJXM6JWQ6ICVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25mcGF0aCwgbGluZW5vLCBlcnIpKQogICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ3BhcnQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU3F1YXNoRlMgZG9lcyBub3Qgc3VwcG9ydCBVVUlECisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJzZWQuZnN0eXBlID09ICdzcXVhc2hmcycgYW5kIHBhcnNlZC51c2VfdXVpZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSAiJXM6JWQ6IFNxdWFzaEZTIGRvZXMgbm90IHN1cHBvcnQgVVVJRCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbmZwYXRoLCBsaW5lbm8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgS2lja1N0YXJ0RXJyb3IoZXJyKQogICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2luZyBBcmd1bWVudFBhcnNlciBvbmUgY2Fubm90IGVhc2lseSB0ZWxsIGlmIG9wdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgIyB3YXMgcGFzc2VkIGFzIGFyZ3VtZW50LCBpZiBzYWlkIG9wdGlvbiBoYXMgYSBkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgICAgICAjIHZhbHVlOyAtLW92ZXJoZWFkLWZhY3Rvci8tLWV4dHJhLXNwYWNlIGNhbm5vdCBiZSB1c2VkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CmluZGV4IDg0ZmU4NWQuLjNmZTVjNGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CkBAIC0yNiw2ICsyNiw3IEBACiAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKK2ltcG9ydCB1dWlkCiAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgogZnJvbSB3aWMubWlzYyBpbXBvcnQgZXhlY19jbWQsIGV4ZWNfbmF0aXZlX2NtZCwgZ2V0X2JpdGJha2VfdmFyCkBAIC02MSw2ICs2Miw3IEBACiAgICAgICAgIHNlbGYuc3lzdGVtX2lkID0gYXJncy5zeXN0ZW1faWQKICAgICAgICAgc2VsZi51c2VfdXVpZCA9IGFyZ3MudXNlX3V1aWQKICAgICAgICAgc2VsZi51dWlkID0gYXJncy51dWlkCisgICAgICAgIHNlbGYuZnN1dWlkID0gYXJncy5mc3V1aWQKIAogICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwogICAgICAgICBzZWxmLnNvdXJjZV9maWxlID0gIiIKQEAgLTE4Myw2ICsxODUsOSBAQAogICAgICAgICBwbHVnaW4uZG9fcHJlcGFyZV9wYXJ0aXRpb24oc2VsZiwgc3JjcGFyYW1zX2RpY3QsIGNyZWF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcl93b3JrZGlyLCBvZV9idWlsZGRpciwgYm9vdGltZ19kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWxfZGlyLCByb290ZnNfZGlyLCBuYXRpdmVfc3lzcm9vdCkKKyAgICAgICAgcGx1Z2luLmRvX3Bvc3RfcGFydGl0aW9uKHNlbGYsIHNyY3BhcmFtc19kaWN0LCBjcmVhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jfd29ya2Rpciwgb2VfYnVpbGRkaXIsIGJvb3RpbWdfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsX2Rpciwgcm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QpCiAKICAgICAgICAgIyBmdXJ0aGVyIHByb2Nlc3NpbmcgcmVxdWlyZWQgUGFydGl0aW9uLnNpemUgdG8gYmUgYW4gaW50ZWdlciwgbWFrZQogICAgICAgICAjIHN1cmUgdGhhdCBpdCBpcyBvbmUKQEAgLTE5NywxMiArMjAyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5tb3VudHBvaW50LCBzZWxmLnNpemUsIHNlbGYuZml4ZWRfc2l6ZSkpCiAKICAgICBkZWYgcHJlcGFyZV9yb290ZnMoc2VsZiwgY3Jfd29ya2Rpciwgb2VfYnVpbGRkaXIsIHJvb3Rmc19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290KToKKyAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3QsIHJlYWxfcm9vdGZzID0gVHJ1ZSk6CiAgICAgICAgICIiIgogICAgICAgICBQcmVwYXJlIGNvbnRlbnQgZm9yIGEgcm9vdGZzIHBhcnRpdGlvbiBpLmUuIGNyZWF0ZSBhIHBhcnRpdGlvbgogICAgICAgICBhbmQgZmlsbCBpdCBmcm9tIGEgL3Jvb3RmcyBkaXIuCiAKLSAgICAgICAgQ3VycmVudGx5IGhhbmRsZXMgZXh0Mi8zLzQsIGJ0cmZzIGFuZCB2ZmF0LgorICAgICAgICBDdXJyZW50bHkgaGFuZGxlcyBleHQyLzMvNCwgYnRyZnMsIHZmYXQgYW5kIHNxdWFzaGZzLgogICAgICAgICAiIiIKICAgICAgICAgcF9wcmVmaXggPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX1BSRUZJWCIsICIlcy91c3IiICUgbmF0aXZlX3N5c3Jvb3QpCiAgICAgICAgIHBfbG9jYWxzdGF0ZWRpciA9IG9zLmVudmlyb24uZ2V0KCJQU0VVRE9fTE9DQUxTVEFURURJUiIsCkBAIC0yMjEsNyArMjI2LDcgQEAKICAgICAgICAgICAgIG9zLnJlbW92ZShyb290ZnMpCiAKICAgICAgICAgIyBHZXQgcm9vdGZzIHNpemUgZnJvbSBiaXRiYWtlIHZhcmlhYmxlIGlmIGl0J3Mgbm90IHNldCBpbiAua3MgZmlsZQotICAgICAgICBpZiBub3Qgc2VsZi5zaXplOgorICAgICAgICBpZiBub3Qgc2VsZi5zaXplIGFuZCByZWFsX3Jvb3RmczoKICAgICAgICAgICAgICMgQml0YmFrZSB2YXJpYWJsZSBST09URlNfU0laRSBpcyBjYWxjdWxhdGVkIGluCiAgICAgICAgICAgICAjIEltYWdlLl9nZXRfcm9vdGZzX3NpemUgbWV0aG9kIGZyb20gbWV0YS9saWIvb2UvaW1hZ2UucHkKICAgICAgICAgICAgICMgdXNpbmcgSU1BR0VfUk9PVEZTX1NJWkUsIElNQUdFX1JPT1RGU19BTElHTk1FTlQsCkBAIC0yNjQsOCArMjY5LDggQEAKICAgICAgICAgaWYgc2VsZi5sYWJlbDoKICAgICAgICAgICAgIGxhYmVsX3N0ciA9ICItTCAlcyIgJSBzZWxmLmxhYmVsCiAKLSAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAlcyAlcyAlcyAtZCAlcyIgJSBcCi0gICAgICAgICAgICAoc2VsZi5mc3R5cGUsIGV4dHJhb3B0cywgcm9vdGZzLCBsYWJlbF9zdHIsIHJvb3Rmc19kaXIpCisgICAgICAgIG1rZnNfY21kID0gIm1rZnMuJXMgJXMgJXMgJXMgLVUgJXMgLWQgJXMiICUgXAorICAgICAgICAgICAgKHNlbGYuZnN0eXBlLCBleHRyYW9wdHMsIHJvb3RmcywgbGFiZWxfc3RyLCBzZWxmLmZzdXVpZCwgcm9vdGZzX2RpcikKICAgICAgICAgZXhlY19uYXRpdmVfY21kKG1rZnNfY21kLCBuYXRpdmVfc3lzcm9vdCwgcHNldWRvPXBzZXVkbykKIAogICAgICAgICBta2ZzX2NtZCA9ICJmc2NrLiVzIC1wdmZEICVzIiAlIChzZWxmLmZzdHlwZSwgcm9vdGZzKQpAQCAtMjc1LDggKzI4MCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290LCBwc2V1ZG8pOgogICAgICAgICAiIiIKICAgICAgICAgUHJlcGFyZSBjb250ZW50IGZvciBhIGJ0cmZzIHJvb3RmcyBwYXJ0aXRpb24uCi0KLSAgICAgICAgQ3VycmVudGx5IGhhbmRsZXMgZXh0Mi8zLzQgYW5kIGJ0cmZzLgogICAgICAgICAiIiIKICAgICAgICAgZHVfY21kID0gImR1IC1rcyAlcyIgJSByb290ZnNfZGlyCiAgICAgICAgIG91dCA9IGV4ZWNfY21kKGR1X2NtZCkKQEAgLTI5MSw5ICsyOTQsOSBAQAogICAgICAgICBpZiBzZWxmLmxhYmVsOgogICAgICAgICAgICAgbGFiZWxfc3RyID0gIi1MICVzIiAlIHNlbGYubGFiZWwKIAotICAgICAgICBta2ZzX2NtZCA9ICJta2ZzLiVzIC1iICVkIC1yICVzICVzICVzICVzIiAlIFwKKyAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAtYiAlZCAtciAlcyAlcyAlcyAtVSAlcyAlcyIgJSBcCiAgICAgICAgICAgICAoc2VsZi5mc3R5cGUsIHJvb3Rmc19zaXplICogMTAyNCwgcm9vdGZzX2RpciwgbGFiZWxfc3RyLAotICAgICAgICAgICAgIHNlbGYubWtmc19leHRyYW9wdHMsIHJvb3RmcykKKyAgICAgICAgICAgICBzZWxmLm1rZnNfZXh0cmFvcHRzLCBzZWxmLmZzdXVpZCwgcm9vdGZzKQogICAgICAgICBleGVjX25hdGl2ZV9jbWQobWtmc19jbWQsIG5hdGl2ZV9zeXNyb290LCBwc2V1ZG89cHNldWRvKQogCiAgICAgZGVmIHByZXBhcmVfcm9vdGZzX21zZG9zKHNlbGYsIHJvb3Rmcywgb2VfYnVpbGRkaXIsIHJvb3Rmc19kaXIsCkBAIC0zMTcsOCArMzIwLDkgQEAKIAogICAgICAgICBleHRyYW9wdHMgPSBzZWxmLm1rZnNfZXh0cmFvcHRzIG9yICctUyA1MTInCiAKLSAgICAgICAgZG9zZnNfY21kID0gIm1rZG9zZnMgJXMgJXMgJXMgLUMgJXMgJWQiICUgXAotICAgICAgICAgICAgICAgICAgICAobGFiZWxfc3RyLCBzaXplX3N0ciwgZXh0cmFvcHRzLCByb290ZnMsIHJvb3Rmc19zaXplKQorICAgICAgICBkb3Nmc19jbWQgPSAibWtkb3NmcyAlcyAtaSAlcyAlcyAlcyAtQyAlcyAlZCIgJSBcCisgICAgICAgICAgICAgICAgICAgIChsYWJlbF9zdHIsIHNlbGYuZnN1dWlkLCBzaXplX3N0ciwgZXh0cmFvcHRzLCByb290ZnMsCisgICAgICAgICAgICAgICAgICAgICBtYXgoODI1MCwgcm9vdGZzX3NpemUpKQogICAgICAgICBleGVjX25hdGl2ZV9jbWQoZG9zZnNfY21kLCBuYXRpdmVfc3lzcm9vdCkKIAogICAgICAgICBtY29weV9jbWQgPSAibWNvcHkgLWkgJXMgLXMgJXMvKiA6Oi8iICUgKHJvb3Rmcywgcm9vdGZzX2RpcikKQEAgLTM1NCw4ICszNTgsOCBAQAogICAgICAgICBpZiBzZWxmLmxhYmVsOgogICAgICAgICAgICAgbGFiZWxfc3RyID0gIi1MICVzIiAlIHNlbGYubGFiZWwKIAotICAgICAgICBta2ZzX2NtZCA9ICJta2ZzLiVzIC1GICVzICVzICVzIiAlIFwKLSAgICAgICAgICAgIChzZWxmLmZzdHlwZSwgZXh0cmFvcHRzLCBsYWJlbF9zdHIsIHJvb3RmcykKKyAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAtRiAlcyAlcyAtVSAlcyAlcyIgJSBcCisgICAgICAgICAgICAoc2VsZi5mc3R5cGUsIGV4dHJhb3B0cywgbGFiZWxfc3RyLCBzZWxmLmZzdXVpZCwgcm9vdGZzKQogICAgICAgICBleGVjX25hdGl2ZV9jbWQobWtmc19jbWQsIG5hdGl2ZV9zeXNyb290KQogCiAgICAgZGVmIHByZXBhcmVfZW1wdHlfcGFydGl0aW9uX2J0cmZzKHNlbGYsIHJvb3Rmcywgb2VfYnVpbGRkaXIsCkBAIC0zNzEsOCArMzc1LDggQEAKICAgICAgICAgaWYgc2VsZi5sYWJlbDoKICAgICAgICAgICAgIGxhYmVsX3N0ciA9ICItTCAlcyIgJSBzZWxmLmxhYmVsCiAKLSAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAtYiAlZCAlcyAlcyAlcyIgJSBcCi0gICAgICAgICAgICAgICAgICAgKHNlbGYuZnN0eXBlLCBzZWxmLnNpemUgKiAxMDI0LCBsYWJlbF9zdHIsCisgICAgICAgIG1rZnNfY21kID0gIm1rZnMuJXMgLWIgJWQgJXMgLVUgJXMgJXMgJXMiICUgXAorICAgICAgICAgICAgICAgICAgIChzZWxmLmZzdHlwZSwgc2VsZi5zaXplICogMTAyNCwgbGFiZWxfc3RyLCBzZWxmLmZzdXVpZCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5ta2ZzX2V4dHJhb3B0cywgcm9vdGZzKQogICAgICAgICBleGVjX25hdGl2ZV9jbWQobWtmc19jbWQsIG5hdGl2ZV9zeXNyb290KQogCkBAIC0zOTMsOCArMzk3LDkgQEAKIAogICAgICAgICBleHRyYW9wdHMgPSBzZWxmLm1rZnNfZXh0cmFvcHRzIG9yICctUyA1MTInCiAKLSAgICAgICAgZG9zZnNfY21kID0gIm1rZG9zZnMgJXMgJXMgJXMgLUMgJXMgJWQiICUgXAotICAgICAgICAgICAgICAgICAgICAobGFiZWxfc3RyLCBleHRyYW9wdHMsIHNpemVfc3RyLCByb290ZnMsIGJsb2NrcykKKyAgICAgICAgZG9zZnNfY21kID0gIm1rZG9zZnMgJXMgLWkgJXMgJXMgJXMgLUMgJXMgJWQiICUgXAorICAgICAgICAgICAgICAgICAgICAobGFiZWxfc3RyLCBzZWxmLmZzdXVpZCwgZXh0cmFvcHRzLCBzaXplX3N0ciwgcm9vdGZzLAorICAgICAgICAgICAgICAgICAgICAgYmxvY2tzKQogCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChkb3Nmc19jbWQsIG5hdGl2ZV9zeXNyb290KQogCkBAIC00MTIsOSArNDE3LDkgQEAKICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd3JykgYXMgc3BhcnNlOgogICAgICAgICAgICAgb3MuZnRydW5jYXRlKHNwYXJzZS5maWxlbm8oKSwgc2VsZi5zaXplICogMTAyNCkKIAotICAgICAgICBpbXBvcnQgdXVpZAogICAgICAgICBsYWJlbF9zdHIgPSAiIgogICAgICAgICBpZiBzZWxmLmxhYmVsOgogICAgICAgICAgICAgbGFiZWxfc3RyID0gIi1MICVzIiAlIHNlbGYubGFiZWwKLSAgICAgICAgbWtzd2FwX2NtZCA9ICJta3N3YXAgJXMgLVUgJXMgJXMiICUgKGxhYmVsX3N0ciwgc3RyKHV1aWQudXVpZDEoKSksIHBhdGgpCisKKyAgICAgICAgbWtzd2FwX2NtZCA9ICJta3N3YXAgJXMgLVUgJXMgJXMiICUgKGxhYmVsX3N0ciwgc2VsZi5mc3V1aWQsIHBhdGgpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChta3N3YXBfY21kLCBuYXRpdmVfc3lzcm9vdCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weQppbmRleCBjMDA5ODIwLi42ODZkMmZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbmJhc2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5CkBAIC0xMzcsMyArMTM3LDEzIEBACiAgICAgICAgICdwcmVwYXJlcycgdGhlIHBhcnRpdGlvbiB0byBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgaW1hZ2UuCiAgICAgICAgICIiIgogICAgICAgICBsb2dnZXIuZGVidWcoIlNvdXJjZVBsdWdpbjogZG9fcHJlcGFyZV9wYXJ0aXRpb246IHBhcnQ6ICVzIiwgcGFydCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkb19wb3N0X3BhcnRpdGlvbihjbHMsIHBhcnQsIHNvdXJjZV9wYXJhbXMsIGNyZWF0b3IsIGNyX3dvcmtkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lX2J1aWxkZGlyLCBib290aW1nX2Rpciwga2VybmVsX2Rpciwgcm9vdGZzX2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3QpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGVkIGFmdGVyIHRoZSBwYXJ0aXRpb24gaXMgY3JlYXRlZC4gSXQgaXMgdXNlZnVsIHRvIGFkZCBwb3N0CisgICAgICAgIG9wZXJhdGlvbnMgZS5nLiBzZWN1cml0eSBzaWduaW5nIHRoZSBwYXJ0aXRpb24uCisgICAgICAgICIiIgorICAgICAgICBsb2dnZXIuZGVidWcoIlNvdXJjZVBsdWdpbjogZG9fcG9zdF9wYXJ0aXRpb246IHBhcnQ6ICVzIiwgcGFydCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkKaW5kZXggZGExYzA2MS4uMWZhNmI5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkKQEAgLTYzLDYgKzYzLDcgQEAKIAogICAgICAgICAjIHBhcnNlIHBvc3NpYmxlICdyb290ZnM9bmFtZScgaXRlbXMKICAgICAgICAgc2VsZi5yb290ZnNfZGlyID0gZGljdChyZGlyLnNwbGl0KCc9JykgZm9yIHJkaXIgaW4gcm9vdGZzX2Rpci5zcGxpdCgnICcpKQorICAgICAgICBzZWxmLnJlcGxhY2VkX3Jvb3Rmc19wYXRocyA9IHt9CiAgICAgICAgIHNlbGYuYm9vdGltZ19kaXIgPSBib290aW1nX2RpcgogICAgICAgICBzZWxmLmtlcm5lbF9kaXIgPSBrZXJuZWxfZGlyCiAgICAgICAgIHNlbGYubmF0aXZlX3N5c3Jvb3QgPSBuYXRpdmVfc3lzcm9vdApAQCAtMTQxLDcgKzE0MiwxNSBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGlmIHBhcnQudXNlX3V1aWQ6Ci0gICAgICAgICAgICAgICAgZGV2aWNlX25hbWUgPSAiUEFSVFVVSUQ9JXMiICUgcGFydC51dWlkCisgICAgICAgICAgICAgICAgaWYgcGFydC5mc3V1aWQ6CisgICAgICAgICAgICAgICAgICAgICMgRkFUIFVVSUQgaXMgZGlmZmVyZW50IGZyb20gb3RoZXJzCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihwYXJ0LmZzdXVpZCkgPT0gMTA6CisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VfbmFtZSA9ICJVVUlEPSVzLSVzIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJ0LmZzdXVpZFsyOjZdLCBwYXJ0LmZzdXVpZFs2Ol0pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VfbmFtZSA9ICJVVUlEPSVzIiAlIHBhcnQuZnN1dWlkCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZGV2aWNlX25hbWUgPSAiUEFSVFVVSUQ9JXMiICUgcGFydC51dWlkCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgbW1jIGRldmljZSBwYXJ0aXRpb25zIGFyZSBuYW1lZCBtbWNibGswcDEsIG1tY2JsazBwMi4uCiAgICAgICAgICAgICAgICAgcHJlZml4ID0gJ3AnIGlmICBwYXJ0LmRpc2suc3RhcnRzd2l0aCgnbW1jYmxrJykgZWxzZSAnJwpAQCAtMTc1LDYgKzE4NCw3IEBACiAgICAgICAgICAgICBuZXdfcm9vdGZzID0gc2VsZi5fd3JpdGVfZnN0YWIoc2VsZi5yb290ZnNfZGlyLmdldCgiUk9PVEZTX0RJUiIpKQogICAgICAgICBpZiBuZXdfcm9vdGZzOgogICAgICAgICAgICAgIyByb290ZnMgd2FzIGNvcGllZCB0byB1cGRhdGUgZnN0YWIKKyAgICAgICAgICAgIHNlbGYucmVwbGFjZWRfcm9vdGZzX3BhdGhzW25ld19yb290ZnNdID0gc2VsZi5yb290ZnNfZGlyWydST09URlNfRElSJ10KICAgICAgICAgICAgIHNlbGYucm9vdGZzX2RpclsnUk9PVEZTX0RJUiddID0gbmV3X3Jvb3RmcwogCiAgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CkBAIC0yNTAsNyArMjYwLDEwIEBACiAgICAgICAgICAgICAgICAgc3VmZml4ID0gJzonCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICdbIiVzIl06JyAlIChwYXJ0Lm1vdW50cG9pbnQgb3IgcGFydC5sYWJlbCkKLSAgICAgICAgICAgIG1zZyArPSAnICBST09URlNfRElSJXMlc1xuJyAlIChzdWZmaXgubGp1c3QoMjApLCBwYXJ0LnJvb3Rmc19kaXIpCisgICAgICAgICAgICByb290ZGlyID0gcGFydC5yb290ZnNfZGlyCisgICAgICAgICAgICBpZiByb290ZGlyIGluIHNlbGYucmVwbGFjZWRfcm9vdGZzX3BhdGhzOgorICAgICAgICAgICAgICAgIHJvb3RkaXIgPSBzZWxmLnJlcGxhY2VkX3Jvb3Rmc19wYXRoc1tyb290ZGlyXQorICAgICAgICAgICAgbXNnICs9ICcgIFJPT1RGU19ESVIlcyVzXG4nICUgKHN1ZmZpeC5sanVzdCgyMCksIHJvb3RkaXIpCiAKICAgICAgICAgbXNnICs9ICcgIEJPT1RJTUdfRElSOiAgICAgICAgICAgICAgICAgICVzXG4nICUgc2VsZi5ib290aW1nX2RpcgogICAgICAgICBtc2cgKz0gJyAgS0VSTkVMX0RJUjogICAgICAgICAgICAgICAgICAgJXNcbicgJSBzZWxmLmtlcm5lbF9kaXIKQEAgLTMzNCwxMyArMzQ3LDE4IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgcGFydC5yZWFsbnVtID0gcmVhbG51bQogCi0gICAgICAgICMgZ2VuZXJhdGUgcGFyaXRpb24gVVVJRHMKKyAgICAgICAgIyBnZW5lcmF0ZSBwYXJpdGlvbiBhbmQgZmlsZXN5c3RlbSBVVUlEcwogICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRpdGlvbnM6CiAgICAgICAgICAgICBpZiBub3QgcGFydC51dWlkIGFuZCBwYXJ0LnVzZV91dWlkOgogICAgICAgICAgICAgICAgIGlmIHNlbGYucHRhYmxlX2Zvcm1hdCA9PSAnZ3B0JzoKICAgICAgICAgICAgICAgICAgICAgcGFydC51dWlkID0gc3RyKHV1aWQudXVpZDQoKSkKICAgICAgICAgICAgICAgICBlbHNlOiAjIG1zZG9zIHBhcnRpdGlvbiB0YWJsZQogICAgICAgICAgICAgICAgICAgICBwYXJ0LnV1aWQgPSAnJTA4eC0lMDJkJyAlIChzZWxmLmlkZW50aWZpZXIsIHBhcnQucmVhbG51bSkKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0LmZzdXVpZDoKKyAgICAgICAgICAgICAgICBpZiBwYXJ0LmZzdHlwZSA9PSAndmZhdCcgb3IgcGFydC5mc3R5cGUgPT0gJ21zZG9zJzoKKyAgICAgICAgICAgICAgICAgICAgcGFydC5mc3V1aWQgPSAnMHgnICsgc3RyKHV1aWQudXVpZDQoKSlbOjhdLnVwcGVyKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwYXJ0LmZzdXVpZCA9IHN0cih1dWlkLnV1aWQ0KCkpCiAKICAgICBkZWYgcHJlcGFyZShzZWxmLCBpbWFnZXIpOgogICAgICAgICAiIiJQcmVwYXJlIGFuIGltYWdlLiBDYWxsIHByZXBhcmUgbWV0aG9kIG9mIGFsbCBpbWFnZSBwYXJ0aXRpb25zLiIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLWVmaS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1lZmkucHkKaW5kZXggNGM0ZjM2YS4uYmViNzRkNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLWVmaS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctZWZpLnB5CkBAIC0yNDAsNyArMjQwLDggQEAKICAgICAgICAgIyBkb3NmcyBpbWFnZSwgY3JlYXRlZCBieSBta2Rvc2ZzCiAgICAgICAgIGJvb3RpbWcgPSAiJXMvYm9vdC5pbWciICUgY3Jfd29ya2RpcgogCi0gICAgICAgIGRvc2ZzX2NtZCA9ICJta2Rvc2ZzIC1uIGVmaSAtQyAlcyAlZCIgJSAoYm9vdGltZywgYmxvY2tzKQorICAgICAgICBkb3Nmc19jbWQgPSAibWtkb3NmcyAtbiBlZmkgLWkgJXMgLUMgJXMgJWQiICUgXAorICAgICAgICAgICAgICAgICAgICAocGFydC5mc3V1aWQsIGJvb3RpbWcsIGJsb2NrcykKICAgICAgICAgZXhlY19uYXRpdmVfY21kKGRvc2ZzX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCiAKICAgICAgICAgbWNvcHlfY21kID0gIm1jb3B5IC1pICVzIC1zICVzLyogOjovIiAlIChib290aW1nLCBoZGRkaXIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGFydGl0aW9uLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBhcnRpdGlvbi5weQppbmRleCA2N2U1NDk4Li5iMjM5ZmMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGFydGl0aW9uLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1wYXJ0aXRpb24ucHkKQEAgLTEyOSw0ICsxMjksNCBAQAogCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygnUHJlcGFyZSBib290IHBhcnRpdGlvbiB1c2luZyByb290ZnMgaW4gJXMnLCBoZGRkaXIpCiAgICAgICAgIHBhcnQucHJlcGFyZV9yb290ZnMoY3Jfd29ya2Rpciwgb2VfYnVpbGRkaXIsIGhkZGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdCwgRmFsc2UpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGNiaW9zLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBjYmlvcy5weQppbmRleCA1NmRhNDY4Li5kNTk5MTEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGNiaW9zLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1wY2Jpb3MucHkKQEAgLTE4Niw3ICsxODYsOCBAQAogICAgICAgICAjIGRvc2ZzIGltYWdlLCBjcmVhdGVkIGJ5IG1rZG9zZnMKICAgICAgICAgYm9vdGltZyA9ICIlcy9ib290JXMuaW1nIiAlIChjcl93b3JrZGlyLCBwYXJ0LmxpbmVubykKIAotICAgICAgICBkb3Nmc19jbWQgPSAibWtkb3NmcyAtbiBib290IC1TIDUxMiAtQyAlcyAlZCIgJSAoYm9vdGltZywgYmxvY2tzKQorICAgICAgICBkb3Nmc19jbWQgPSAibWtkb3NmcyAtbiBib290IC1pICVzIC1TIDUxMiAtQyAlcyAlZCIgJSBcCisgICAgICAgICAgICAgICAgICAgIChwYXJ0LmZzdXVpZCwgYm9vdGltZywgYmxvY2tzKQogICAgICAgICBleGVjX25hdGl2ZV9jbWQoZG9zZnNfY21kLCBuYXRpdmVfc3lzcm9vdCkKIAogICAgICAgICBtY29weV9jbWQgPSAibWNvcHkgLWkgJXMgLXMgJXMvKiA6Oi8iICUgKGJvb3RpbWcsIGhkZGRpcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLWJ1aWxkZW52LWludGVybmFsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKaW5kZXggNzdmOThhMy4uNjc3Mzg3MiAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKQEAgLTEwMSw2ICsxMDEsNyBAQAogCiBpZiBbIC16ICIkQklUQkFLRURJUiIgXTsgdGhlbgogICAgIEJJVEJBS0VESVI9IiRPRVJPT1QvYml0YmFrZSRCQkVYVFJBIgorICAgIHRlc3QgLWQgIiRCSVRCQUtFRElSIiB8fCBCSVRCQUtFRElSPSIkT0VST09ULy4uL2JpdGJha2UkQkJFWFRSQSIKIGZpCiAKIEJJVEJBS0VESVI9JChyZWFkbGluayAtZiAiJEJJVEJBS0VESVIiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtZGVwZW5kcy1kb3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1kZXBlbmRzLWRvdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41Y2VjMjNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtZGVwZW5kcy1kb3QKQEAgLTAsMCArMSwxMjEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE4IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyMgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQorCitjbGFzcyBEb3Qob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgICAgICAgICAgZGVzY3JpcHRpb249IkFuYWx5c2UgcmVjaXBlLWRlcGVuZHMuZG90IGdlbmVyYXRlZCBieSBiaXRiYWtlIC1nIiwKKyAgICAgICAgICAgIGVwaWxvZz0iVXNlICUocHJvZylzIC0taGVscCB0byBnZXQgaGVscCIpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoImRvdGZpbGUiLAorICAgICAgICAgICAgaGVscCA9ICJTcGVjaWZ5IHRoZSBkb3RmaWxlIiwgbmFyZ3MgPSAxLCBhY3Rpb249J3N0b3JlJywgZGVmYXVsdD0nJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWsiLCAiLS1rZXkiLAorICAgICAgICAgICAgaGVscCA9ICJTcGVjaWZ5IHRoZSBrZXksIGUuZy4sIHJlY2lwZSBuYW1lIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZWZhdWx0PScnKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZCIsICItLWRlcGVuZHMiLAorICAgICAgICAgICAgaGVscCA9ICJQcmludCB0aGUga2V5J3MgZGVwZW5kZW5jaWVzIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi13IiwgIi0td2h5IiwKKyAgICAgICAgICAgIGhlbHAgPSAiUHJpbnQgd2h5IHRoZSBrZXkgaXMgYnVpbHQiLAorICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXIiLCAiLS1yZW1vdmUiLAorICAgICAgICAgICAgaGVscCA9ICJSZW1vdmUgZHVwbGljYXRlZCBkZXBlbmRlbmNpZXMgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBkb3QgZmlsZXMuIgorICAgICAgICAgICAgICAgICAgICAiIEZvciBleGFtcGxlLCBBLT5CLCBCLT5DLCBBLT5DLCB0aGVuIEEtPkMgY2FuIGJlIHJlbW92ZWQuIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UpCisKKyAgICAgICAgc2VsZi5hcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgICAgIGlmIGxlbihzeXMuYXJndikgIT0gMyBhbmQgbGVuKHN5cy5hcmd2KSA8IDU6CisgICAgICAgICAgICBwcmludCgnRVJST1I6IE5vdCBlbm91Z2ggYXJncywgc2VlIC0taGVscCBmb3IgdXNhZ2UnKQorCisgICAgZGVmIG1haW4oc2VsZik6CisgICAgICAgICNwcmludChzZWxmLmFyZ3MuZG90ZmlsZVswXSkKKyAgICAgICAgIyBUaGUgZm9ybWF0IGlzIHtrZXk6IGRlcGVuZHN9CisgICAgICAgIGRlcGVuZHMgPSB7fQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5hcmdzLmRvdGZpbGVbMF0sICdyJykgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICAgICAgaWYgJyAtPiAnIG5vdCBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGxpbmVfbm9fcXVvdGVzID0gbGluZS5yZXBsYWNlKCciJywgJycpCisgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCIoLiopIC0+ICguKikiLCBsaW5lX25vX3F1b3RlcykKKyAgICAgICAgICAgICAgICBpZiBub3QgbToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1dBUk5JTkc6IEZvdW5kIHVuZXhwZWN0ZWQgbGluZTogJXMnICUgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBrZXkgPSBtLmdyb3VwKDEpCisgICAgICAgICAgICAgICAgaWYga2V5ID09ICJtZXRhLXdvcmxkLXBrZ2RhdGEiOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGRlcCA9IG0uZ3JvdXAoMikKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gZGVwZW5kczoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGtleSBpbiBkZXBlbmRzW2tleV06CisgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzW2tleV0uYWRkKGRlcCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdXQVJOSU5HOiBGb251ZCBkdXBsaWNhdGVkIGxpbmU6ICVzJyAlIGxpbmUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kc1trZXldID0gc2V0KCkKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kc1trZXldLmFkZChkZXApCisKKyAgICAgICAgaWYgc2VsZi5hcmdzLnJlbW92ZToKKyAgICAgICAgICAgIHJlZHVjZWRfZGVwZW5kcyA9IHt9CisgICAgICAgICAgICBmb3IgaywgZGVwcyBpbiBkZXBlbmRzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgY2hpbGRfZGVwcyA9IHNldCgpCisgICAgICAgICAgICAgICAgYWRkZWQgPSBzZXQoKQorICAgICAgICAgICAgICAgICMgQm90aCBkaXJlY3QgYW5kIGluZGlyZWN0IGRlcGVuZHMgYXJlIGFscmVhZHkgaW4gdGhlIGRpY3QsIHNvCisgICAgICAgICAgICAgICAgIyB3ZSBkb24ndCBoYXZlIHRvIGRvIHRoaXMgcmVjdXJzaXZlbHkuCisgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBkZXBzOgorICAgICAgICAgICAgICAgICAgICBpZiBkZXAgaW4gZGVwZW5kczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2RlcHMgfD0gZGVwZW5kc1tkZXBdCisKKyAgICAgICAgICAgICAgICByZWR1Y2VkX2RlcGVuZHNba10gPSBkZXBzIC0gY2hpbGRfZGVwcworICAgICAgICAgICAgICAgIG91dGZpbGU9ICclcy1yZWR1Y2VkJXMnICUgKHNlbGYuYXJncy5kb3RmaWxlWzBdWzotNF0sIHNlbGYuYXJncy5kb3RmaWxlWzBdWy00Ol0pCisgICAgICAgICAgICB3aXRoIG9wZW4ob3V0ZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIHByaW50KCdTYXZpbmcgcmVkdWNlZCBkb3QgZmlsZSB0byAlcycgJSBvdXRmaWxlKQorICAgICAgICAgICAgICAgIGYud3JpdGUoJ2RpZ3JhcGggZGVwZW5kcyB7XG4nKQorICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHJlZHVjZWRfZGVwZW5kcy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBmb3IgZGVwIGluIHY6CisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCciJXMiIC0+ICIlcyJcbicgJSAoaywgZGVwKSkKKyAgICAgICAgICAgICAgICBmLndyaXRlKCd9XG4nKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKKworICAgICAgICBpZiBzZWxmLmFyZ3Mua2V5IG5vdCBpbiBkZXBlbmRzOgorICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiBDYW4ndCBmaW5kIGtleSAlcyBpbiAlcyIgJSAoc2VsZi5hcmdzLmtleSwgc2VsZi5hcmdzLmRvdGZpbGVbMF0pKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiBzZWxmLmFyZ3MuZGVwZW5kczoKKyAgICAgICAgICAgIGlmIHNlbGYuYXJncy5rZXkgaW4gZGVwZW5kczoKKyAgICAgICAgICAgICAgICBwcmludCgnRGVwZW5kczogJXMnICUgJyAnLmpvaW4oZGVwZW5kc1tzZWxmLmFyZ3Mua2V5XSkpCisKKyAgICAgICAgcmV2ZXJzZV9kZXBzID0gW10KKyAgICAgICAgaWYgc2VsZi5hcmdzLndoeToKKyAgICAgICAgICAgIGZvciBrLCB2IGluIGRlcGVuZHMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmFyZ3Mua2V5IGluIHYgYW5kIG5vdCBrIGluIHJldmVyc2VfZGVwczoKKyAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZV9kZXBzLmFwcGVuZChrKQorICAgICAgICAgICAgcHJpbnQoJ0JlY2F1c2U6ICVzJyAlICcgJy5qb2luKHJldmVyc2VfZGVwcykpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdHJ5OgorICAgICAgICBkb3QgPSBEb3QoKQorICAgICAgICByZXQgPSBkb3QubWFpbigpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlc2M6CisgICAgICAgIHJldCA9IDEKKyAgICAgICAgaW1wb3J0IHRyYWNlYmFjaworICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICBzeXMuZXhpdChyZXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1wa2dkYXRhLXV0aWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1wa2dkYXRhLXV0aWwKaW5kZXggYzZmYmE1Ni4uYWVhOGE1NyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS11dGlsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtdXRpbApAQCAtMjUyLDMyICsyNTIsNzIgQEAKICAgICBwcmludCgnXG4nLmpvaW4oaXRlbXMpKQogCiBkZWYgbG9va3VwX3JlY2lwZShhcmdzKToKKyAgICBkZWYgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUpOgorICAgICAgICB3aXRoIG9wZW4ocGtnZGF0YWZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdQTjonKToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiVzIiAlIGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpKQorICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vdCBmb3VuZDoKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIlVuYWJsZSB0byBmaW5kIFBOIGVudHJ5IGluICVzIiAlIHBrZ2RhdGFmaWxlKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisKICAgICAjIEhhbmRsZSBib3RoIG11bHRpcGxlIGFyZ3VtZW50cyBhbmQgbXVsdGlwbGUgdmFsdWVzIHdpdGhpbiBhbiBhcmcgKG9sZCBzeW50YXgpCiAgICAgcGtncyA9IFtdCiAgICAgZm9yIHBrZ2l0ZW0gaW4gYXJncy5wa2c6CiAgICAgICAgIHBrZ3MuZXh0ZW5kKHBrZ2l0ZW0uc3BsaXQoKSkKIAotICAgIG1hcHBpbmdzID0gZGVmYXVsdGRpY3QobGlzdCkKICAgICBmb3IgcGtnIGluIHBrZ3M6Ci0gICAgICAgIHBrZ2ZpbGUgPSBvcy5wYXRoLmpvaW4oYXJncy5wa2dkYXRhX2RpciwgJ3J1bnRpbWUtcmV2ZXJzZScsIHBrZykKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGtnZmlsZSk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGtnZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkcyA9IGxpbmUucnN0cmlwKCkuc3BsaXQoJzogJykKLSAgICAgICAgICAgICAgICAgICAgaWYgZmllbGRzWzBdID09ICdQTic6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nc1twa2ddLmFwcGVuZChmaWVsZHNbMV0pCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgIGlmIGxlbihtYXBwaW5ncykgPCBsZW4ocGtncyk6Ci0gICAgICAgIG1pc3NpbmcgPSBsaXN0KHNldChwa2dzKSAtIHNldChtYXBwaW5ncy5rZXlzKCkpKQotICAgICAgICBsb2dnZXIuZXJyb3IoIlRoZSBmb2xsb3dpbmcgcGFja2FnZXMgY291bGQgbm90IGJlIGZvdW5kOiAlcyIgJSAnLCAnLmpvaW4obWlzc2luZykpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpdGVtcyA9IFtdCi0gICAgZm9yIHBrZyBpbiBwa2dzOgotICAgICAgICBpdGVtcy5leHRlbmQobWFwcGluZ3MuZ2V0KHBrZywgW10pKQotICAgIHByaW50KCdcbicuam9pbihpdGVtcykpCisgICAgICAgIHByb3ZpZGVwa2dwYXRoID0gb3MucGF0aC5qb2luKGFyZ3MucGtnZGF0YV9kaXIsICJydW50aW1lLXJwcm92aWRlcyIsIHBrZykKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocHJvdmlkZXBrZ3BhdGgpOgorICAgICAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihwcm92aWRlcGtncGF0aCk6CisgICAgICAgICAgICAgICAgaWYgZiAhPSBwa2c6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCIlcyBpcyBpbiB0aGUgUlBST1ZJREVTIG9mICVzOiIgJSAocGtnLCBmKSkKKyAgICAgICAgICAgICAgICBwa2dkYXRhZmlsZSA9IG9zLnBhdGguam9pbihhcmdzLnBrZ2RhdGFfZGlyLCAicnVudGltZSIsIGYpCisgICAgICAgICAgICAgICAgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUpCisgICAgICAgICAgICBicmVhaworICAgICAgICBwa2dkYXRhZmlsZSA9IG9zLnBhdGguam9pbihhcmdzLnBrZ2RhdGFfZGlyLCAncnVudGltZS1yZXZlcnNlJywgcGtnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtnZGF0YWZpbGUpOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBmb3VuZDogJXMiICUgcGtnKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUpCiAKIGRlZiBwYWNrYWdlX2luZm8oYXJncyk6CisgICAgZGVmIHBhcnNlX3BrZ2RhdGFmaWxlKHBrZ2RhdGFmaWxlKToKKyAgICAgICAgd2l0aCBvcGVuKHBrZ2RhdGFmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBwa2dlID0gJycKKyAgICAgICAgICAgIHBrZ3IgPSAnJworICAgICAgICAgICAgcGUgPSAnJworICAgICAgICAgICAgcHIgPSAnJworICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ1BLR1Y6Jyk6CisgICAgICAgICAgICAgICAgICAgIHBrZ192ZXJzaW9uID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnUEtHRTonKToKKyAgICAgICAgICAgICAgICAgICAgcGtnZSA9IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ1BLR1I6Jyk6CisgICAgICAgICAgICAgICAgICAgIHBrZ3IgPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKQorICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCdQTjonKToKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnUFY6Jyk6CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZV92ZXJzaW9uID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnUEU6Jyk6CisgICAgICAgICAgICAgICAgICAgIHBlID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnUFI6Jyk6CisgICAgICAgICAgICAgICAgICAgIHByID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnUEtHU0laRScpOgorICAgICAgICAgICAgICAgICAgICBwa2dfc2l6ZSA9IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpCisgICAgICAgICAgICBpZiBwa2dlOgorICAgICAgICAgICAgICAgIHBrZ192ZXJzaW9uID0gcGtnZSArICI6IiArIHBrZ192ZXJzaW9uCisgICAgICAgICAgICBpZiBwa2dyOgorICAgICAgICAgICAgICAgIHBrZ192ZXJzaW9uID0gcGtnX3ZlcnNpb24gKyAiLSIgKyBwa2dyCisgICAgICAgICAgICBpZiBwZToKKyAgICAgICAgICAgICAgICByZWNpcGVfdmVyc2lvbiA9IHBlICsgIjoiICsgcmVjaXBlX3ZlcnNpb24KKyAgICAgICAgICAgIGlmIHByOgorICAgICAgICAgICAgICAgIHJlY2lwZV92ZXJzaW9uID0gcmVjaXBlX3ZlcnNpb24gKyAiLSIgKyBwcgorICAgICAgICAgICAgcHJpbnQoIiVzICVzICVzICVzICVzIiAlIChwa2csIHBrZ192ZXJzaW9uLCByZWNpcGUsIHJlY2lwZV92ZXJzaW9uLCBwa2dfc2l6ZSkpCisKICAgICAjIEhhbmRsZSBib3RoIG11bHRpcGxlIGFyZ3VtZW50cyBhbmQgbXVsdGlwbGUgdmFsdWVzIHdpdGhpbiBhbiBhcmcgKG9sZCBzeW50YXgpCiAgICAgcGFja2FnZXMgPSBbXQogICAgIGlmIGFyZ3MuZmlsZToKQEAgLTI5Myw1MSArMzMzLDIwIEBACiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIk5vIHBhY2thZ2VzIHNwZWNpZmllZCIpCiAgICAgICAgICAgICBzeXMuZXhpdCgxKQogCi0gICAgbWFwcGluZ3MgPSBkZWZhdWx0ZGljdChsYW1iZGE6IGRlZmF1bHRkaWN0KHN0cikpCiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlczoKLSAgICAgICAgcGtnZmlsZSA9IG9zLnBhdGguam9pbihhcmdzLnBrZ2RhdGFfZGlyLCAncnVudGltZS1yZXZlcnNlJywgcGtnKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwa2dmaWxlKToKLSAgICAgICAgICAgIHdpdGggb3Blbihwa2dmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICAgICAgZmllbGRzID0gbGluZS5yc3RyaXAoKS5zcGxpdCgnOiAnKQotICAgICAgICAgICAgICAgICAgICBpZiBmaWVsZHNbMF0uZW5kc3dpdGgoIl8iICsgcGtnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBmaWVsZHNbMF1bOmxlbihmaWVsZHNbMF0pIC0gbGVuKHBrZykgLSAxXQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgayA9IGZpZWxkc1swXQotICAgICAgICAgICAgICAgICAgICB2ID0gZmllbGRzWzFdIGlmIGxlbihmaWVsZHMpID09IDIgZWxzZSAiIgotICAgICAgICAgICAgICAgICAgICBtYXBwaW5nc1twa2ddW2tdID0gdgotCi0gICAgaWYgbGVuKG1hcHBpbmdzKSA8IGxlbihwYWNrYWdlcyk6Ci0gICAgICAgIG1pc3NpbmcgPSBsaXN0KHNldChwYWNrYWdlcykgLSBzZXQobWFwcGluZ3Mua2V5cygpKSkKLSAgICAgICAgbG9nZ2VyLmVycm9yKCJUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBmb3VuZDogJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihtaXNzaW5nKSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGl0ZW1zID0gW10KLSAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgotICAgICAgICBwa2dfdmVyc2lvbiA9IG1hcHBpbmdzW3BrZ11bJ1BLR1YnXQotICAgICAgICBpZiBtYXBwaW5nc1twa2ddWydQS0dFJ106Ci0gICAgICAgICAgICBwa2dfdmVyc2lvbiA9IG1hcHBpbmdzW3BrZ11bJ1BLR0UnXSArICI6IiArIHBrZ192ZXJzaW9uCi0gICAgICAgIGlmIG1hcHBpbmdzW3BrZ11bJ1BLR1InXToKLSAgICAgICAgICAgIHBrZ192ZXJzaW9uID0gcGtnX3ZlcnNpb24gKyAiLSIgKyBtYXBwaW5nc1twa2ddWydQS0dSJ10KLSAgICAgICAgcmVjaXBlID0gbWFwcGluZ3NbcGtnXVsnUE4nXQotICAgICAgICByZWNpcGVfdmVyc2lvbiA9IG1hcHBpbmdzW3BrZ11bJ1BWJ10KLSAgICAgICAgaWYgbWFwcGluZ3NbcGtnXVsnUEUnXToKLSAgICAgICAgICAgIHJlY2lwZV92ZXJzaW9uID0gbWFwcGluZ3NbcGtnXVsnUEUnXSArICI6IiArIHJlY2lwZV92ZXJzaW9uCi0gICAgICAgIGlmIG1hcHBpbmdzW3BrZ11bJ1BSJ106Ci0gICAgICAgICAgICByZWNpcGVfdmVyc2lvbiA9IHJlY2lwZV92ZXJzaW9uICsgIi0iICsgbWFwcGluZ3NbcGtnXVsnUFInXQotICAgICAgICBwa2dfc2l6ZSA9IG1hcHBpbmdzW3BrZ11bJ1BLR1NJWkUnXQotCi0gICAgICAgIGxpbmUgPSAiJXMgJXMgJXMgJXMgJXMiICUgKHBrZywgcGtnX3ZlcnNpb24sIHJlY2lwZSwgcmVjaXBlX3ZlcnNpb24sIHBrZ19zaXplKQotCi0gICAgICAgIGlmIGFyZ3MuZXh0cmE6Ci0gICAgICAgICAgICBmb3IgdmFyIGluIGFyZ3MuZXh0cmE6Ci0gICAgICAgICAgICAgICAgdmFsID0gbWFwcGluZ3NbcGtnXVt2YXJdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICB2YWwgPSByZS5zdWIocidccysnLCAnICcsIHZhbCkKLSAgICAgICAgICAgICAgICBsaW5lICs9ICcgIiVzIicgJSB2YWwKLQotICAgICAgICBpdGVtcy5hcHBlbmQobGluZSkKLSAgICBwcmludCgnXG4nLmpvaW4oaXRlbXMpKQorICAgICAgICBwcm92aWRlcGtncGF0aCA9IG9zLnBhdGguam9pbihhcmdzLnBrZ2RhdGFfZGlyLCAicnVudGltZS1ycHJvdmlkZXMiLCBwa2cpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHByb3ZpZGVwa2dwYXRoKToKKyAgICAgICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIocHJvdmlkZXBrZ3BhdGgpOgorICAgICAgICAgICAgICAgIGlmIGYgIT0gcGtnOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiJXMgaXMgaW4gdGhlIFJQUk9WSURFUyBvZiAlczoiICUgKHBrZywgZikpCisgICAgICAgICAgICAgICAgcGtnZGF0YWZpbGUgPSBvcy5wYXRoLmpvaW4oYXJncy5wa2dkYXRhX2RpciwgInJ1bnRpbWUiLCBmKQorICAgICAgICAgICAgICAgIHBhcnNlX3BrZ2RhdGFmaWxlKHBrZ2RhdGFmaWxlKQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcGtnZGF0YWZpbGUgPSBvcy5wYXRoLmpvaW4oYXJncy5wa2dkYXRhX2RpciwgInJ1bnRpbWUtcmV2ZXJzZSIsIHBrZykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBrZ2RhdGFmaWxlKToKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGZpbmQgYW55IGJ1aWx0IHJ1bnRpbWUgcGFja2FnZSBuYW1lZCAlcyIgJSBwa2cpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICBwYXJzZV9wa2dkYXRhZmlsZShwa2dkYXRhZmlsZSkKIAogZGVmIGdldF9yZWNpcGVfcGtncyhwa2dkYXRhX2RpciwgcmVjaXBlLCB1bnBhY2thZ2VkKToKICAgICByZWNpcGVkYXRhZmlsZSA9IG9zLnBhdGguam9pbihwa2dkYXRhX2RpciwgcmVjaXBlKQpAQCAtNDI2LDYgKzQzNSwyNiBAQAogCiBkZWYgbGlzdF9wa2dfZmlsZXMoYXJncyk6CiAgICAgaW1wb3J0IGpzb24KKyAgICBkZWYgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUsIGxvbmc9RmFsc2UpOgorICAgICAgICB3aXRoIG9wZW4ocGtnZGF0YWZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdGSUxFU19JTkZPOicpOgorICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgdmFsID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgZGljdHZhbCA9IGpzb24ubG9hZHModmFsKQorICAgICAgICAgICAgICAgICAgICBpZiBsb25nOgorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBtYXgobWFwKGxlbiwgZGljdHZhbCksIGRlZmF1bHQ9MCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmdWxscHRoIGluIHNvcnRlZChkaWN0dmFsKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiXHR7Ont3aWR0aH19XHR7fSIuZm9ybWF0KGZ1bGxwdGgsIGRpY3R2YWxbZnVsbHB0aF0sIHdpZHRoPXdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmdWxscHRoIGluIHNvcnRlZChkaWN0dmFsKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiXHQlcyIgJSBmdWxscHRoKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGZpbmQgRklMRVNfSU5GTyBlbnRyeSBpbiAlcyIgJSBwa2dkYXRhZmlsZSkKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorCiAKICAgICBpZiBhcmdzLnJlY2lwZToKICAgICAgICAgaWYgYXJncy5wa2c6CkBAIC00NTUsMjUgKzQ4NCwyMiBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGZpbmQgYW55IGJ1aWx0IHJ1bnRpbWUgcGFja2FnZSBuYW1lZCAlcyIgJSBwa2cpCiAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgICAgIHBhcnNlX3BrZ2RhdGFmaWxlKHBrZ2RhdGFmaWxlLCBhcmdzLmxvbmcpCisKICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByb3ZpZGVwa2dwYXRoID0gb3MucGF0aC5qb2luKGFyZ3MucGtnZGF0YV9kaXIsICJydW50aW1lLXJwcm92aWRlcyIsIHBrZykKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHByb3ZpZGVwa2dwYXRoKToKKyAgICAgICAgICAgICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKHByb3ZpZGVwa2dwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZiAhPSBwa2c6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiJXMgaXMgaW4gdGhlIFJQUk9WSURFUyBvZiAlczoiICUgKHBrZywgZikpCisgICAgICAgICAgICAgICAgICAgIHBrZ2RhdGFmaWxlID0gb3MucGF0aC5qb2luKGFyZ3MucGtnZGF0YV9kaXIsICJydW50aW1lIiwgZikKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUsIGFyZ3MubG9uZykKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgcGtnZGF0YWZpbGUgPSBvcy5wYXRoLmpvaW4oYXJncy5wa2dkYXRhX2RpciwgInJ1bnRpbWUiLCBwa2cpCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtnZGF0YWZpbGUpOgogICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGZpbmQgYW55IGJ1aWx0IHJlY2lwZS1zcGFjZSBwYWNrYWdlIG5hbWVkICVzIiAlIHBrZykKICAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgICAgIHdpdGggb3Blbihwa2dkYXRhZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgZm91bmQgPSBGYWxzZQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0ZJTEVTX0lORk86Jyk6Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICB2YWwgPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICBkaWN0dmFsID0ganNvbi5sb2Fkcyh2YWwpCi0gICAgICAgICAgICAgICAgICAgIGZvciBmdWxscHRoIGluIHNvcnRlZChkaWN0dmFsKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJcdCVzIiAlIGZ1bGxwdGgpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBub3QgZm91bmQ6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJVbmFibGUgdG8gZmluZCBGSUxFU19JTkZPIGVudHJ5IGluICVzIiAlIHBrZ2RhdGFmaWxlKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICBwYXJzZV9wa2dkYXRhZmlsZShwa2dkYXRhZmlsZSwgYXJncy5sb25nKQogCiBkZWYgZmluZF9wYXRoKGFyZ3MpOgogICAgIGltcG9ydCBqc29uCkBAIC01MjcsNiArNTUzLDcgQEAKICAgICBwYXJzZXJfbGlzdF9wa2dfZmlsZXMuYWRkX2FyZ3VtZW50KCctcicsICctLXJ1bnRpbWUnLCBoZWxwPSdTcGVjaWZpZWQgcGFja2FnZShzKSBhcmUgcnVudGltZSBwYWNrYWdlIG5hbWVzIGluc3RlYWQgb2YgcmVjaXBlLXNwYWNlIHBhY2thZ2UgbmFtZXMnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl9saXN0X3BrZ19maWxlcy5hZGRfYXJndW1lbnQoJy1wJywgJy0tcmVjaXBlJywgaGVscD0nUmVwb3J0IG9uIGFsbCBwYWNrYWdlcyBwcm9kdWNlZCBieSB0aGUgc3BlY2lmaWVkIHJlY2lwZScpCiAgICAgcGFyc2VyX2xpc3RfcGtnX2ZpbGVzLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11bnBhY2thZ2VkJywgaGVscD0nSW5jbHVkZSB1bnBhY2thZ2VkIChpLmUuIGVtcHR5KSBwYWNrYWdlcyAob25seSB1c2VmdWwgd2l0aCAtcC8tLXJlY2lwZSknLCBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgIHBhcnNlcl9saXN0X3BrZ19maWxlcy5hZGRfYXJndW1lbnQoJy1sJywgJy0tbG9uZycsIGhlbHA9J1Nob3cgbW9yZSBpbmZvcm1hdGlvbiBwZXIgZmlsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX2xpc3RfcGtnX2ZpbGVzLnNldF9kZWZhdWx0cyhmdW5jPWxpc3RfcGtnX2ZpbGVzKQogCiAgICAgcGFyc2VyX2xvb2t1cF9yZWNpcGUgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ2xvb2t1cC1yZWNpcGUnLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2V0dXAtcnBtcmVwbyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXNldHVwLXJwbXJlcG8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGRmMWM2MTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2V0dXAtcnBtcmVwbworKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0jIS9iaW4vYmFzaAotIwotIyBUaGlzIHV0aWxpdHkgc2V0dXAgdGhlIG5lY2Vzc2FyeSBtZXRhZGF0YSBmb3IgYW4gcnBtIHJlcG8KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDExIEludGVsIENvcnAuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgotIyBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCi0KLQotIyBEb24ndCB1c2UgVE1QRElSIGZyb20gdGhlIGV4dGVybmFsIGVudmlyb25tZW50LCBpdCBtYXkgYmUgYSBkaXN0cm8KLSMgdmFyaWFibGUgcG9pbnRpbmcgdG8gL3RtcCAoZS5nLiB3aXRoaW4gWCBvbiBPcGVuU1VTRSkKLSMgSW5zdGVhZCwgdXNlIE9FX1RNUERJUiBmb3IgcGFzc2luZyB0aGlzIGluIGV4dGVybmFsbHkuCi1UTVBESVI9IiRPRV9UTVBESVIiCi0KLXNldHVwX3RtcGRpcigpIHsKLSAgICBpZiBbIC16ICIkVE1QRElSIiBdOyB0aGVuCi0gICAgICAgICMgVHJ5IHRvIGdldCBUTVBESVIgZnJvbSBiaXRiYWtlCi0gICAgICAgIHR5cGUgLVAgYml0YmFrZSAmPi9kZXYvbnVsbCB8fCB7Ci0gICAgICAgICAgICBlY2hvICJJbiBvcmRlciBmb3IgdGhpcyBzY3JpcHQgdG8gZHluYW1pY2FsbHkgaW5mZXIgcGF0aHMiOwotICAgICAgICAgICAgZWNobyAidG8ga2VybmVscyBvciBmaWxlc3lzdGVtIGltYWdlcywgeW91IGVpdGhlciBuZWVkIjsKLSAgICAgICAgICAgIGVjaG8gImJpdGJha2UgaW4geW91ciBQQVRIIG9yIHRvIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiI7Ci0gICAgICAgICAgICBlY2hvICJiZWZvcmUgcnVubmluZyB0aGlzIHNjcmlwdCIgPiYyOwotICAgICAgICAgICAgZXhpdCAxOyB9Ci0KLSAgICAgICAgIyBXZSBoYXZlIGJpdGJha2UgaW4gUEFUSCwgZ2V0IFRNUERJUiBmcm9tIGJpdGJha2UKLSAgICAgICAgVE1QRElSPWBiaXRiYWtlIC1lIHwgZ3JlcCBeVE1QRElSPVwiIHwgY3V0IC1kICc9JyAtZjIgfCBjdXQgLWQgJyInIC1mMmAKLSAgICAgICAgaWYgWyAteiAiJFRNUERJUiIgXTsgdGhlbgotICAgICAgICAgICAgZWNobyAiRXJyb3I6IHRoaXMgc2NyaXB0IG5lZWRzIHRvIGJlIHJ1biBmcm9tIHlvdXIgYnVpbGQgZGlyZWN0b3J5LCIKLSAgICAgICAgICAgIGVjaG8gIm9yIHlvdSBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0IFRNUERJUiBpbiB5b3VyIGVudmlyb25tZW50IgotICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgIGZpCi0gICAgZmkKLX0KLQotc2V0dXBfdG1wZGlyCi0KLWZ1bmN0aW9uIHVzYWdlKCkgewotICAgIGVjaG8gJ1VzYWdlOiBvZS1zZXR1cC1ycG1yZXBvIHJwbS1kaXInCi0gICAgZWNobyAnJwotICAgIGVjaG8gJ09wZW5FbWJlZGRlZCBzZXR1cC1ycG1yZXBvIC0gc2V0dXAgcnBtIHJlcG9zaXRvcnknCi0gICAgZWNobyAnJwotICAgIGVjaG8gJ2FyZ3VtZW50czonCi0gICAgZWNobyAiICBycG0tZGlyICAgICAgICAgICAgICAgcnBtIHJlcG8gZGlyZWN0b3J5LCBkZWZhdWx0IGlzICRUTVBESVIvZGVwbG95L3JwbSIKLSAgICBlY2hvICcnCi19Ci0KLWlmIFsgJCMgLWd0IDEgLW8gIiQxIiA9ICctLWhlbHAnIC1vICIkMSIgPSAnLWgnIF07IHRoZW4KLSAgICB1c2FnZQotICAgIGV4aXQgMgotZmkKLQotc2V0dXBfc3lzcm9vdCgpIHsKLQkjIFRvb2xjaGFpbiBpbnN0YWxscyBzZXQgdXAgJE9FQ09SRV9OQVRJVkVfU1lTUk9PVCBpbiB0aGVpcgotCSMgZW52aXJvbm1lbnQgc2NyaXB0LiBJZiB0aGF0IHZhcmlhYmxlIGlzbid0IHNldCwgd2UncmUKLQkjIGVpdGhlciBpbiBhbiBpbi10cmVlIHBva3kgc2NlbmFyaW8gb3IgdGhlIGVudmlyb25tZW50Ci0JIyBzY3JpcHQgd2Fzbid0IHNvdXJjZSdkLgotCWlmIFsgLXogIiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QiIF07IHRoZW4KLQkJc2V0dXBfdG1wZGlyCi0JCUJVSUxEX0FSQ0g9YHVuYW1lIC1tYAotCQlCVUlMRF9PUz1gdW5hbWUgfCB0ciAnW0EtWl0nICdbYS16XSdgCi0JCUJVSUxEX1NZUz0iJEJVSUxEX0FSQ0gtJEJVSUxEX09TIgotCi0JCU9FQ09SRV9OQVRJVkVfU1lTUk9PVD0kVE1QRElSL3N5c3Jvb3RzLyRCVUlMRF9TWVMKLQlmaSAKLX0KLQotc2V0dXBfc3lzcm9vdAotCi0KLWlmIFsgLW4gIiQxIiBdOyB0aGVuCi0JUlBNX0RJUj0iJDEiCi1lbHNlCi0JUlBNX0RJUj0iJFRNUERJUi9kZXBsb3kvcnBtIgotZmkKLQotaWYgWyAhIC1kICIkUlBNX0RJUiIgXTsgdGhlbgotICAgCWVjaG8gIkVycm9yOiBycG0gZGlyICRSUE1fRElSIGRvZXNuJ3QgZXhpc3QiCi0JZXhpdCAxCi1maQotCi1DUkVBVEVSRVBPPSRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvdXNyL2Jpbi9jcmVhdGVyZXBvX2MKLWlmIFsgISAtZSAiJENSRUFURVJFUE8iIF07IHRoZW4KLSAgIAllY2hvICJFcnJvcjogY2FuJ3QgZmluZCBjcmVhdGVyZXBvIGJpbmFyeSIKLQllY2hvICJwbGVhc2UgcnVuIGJpdGJha2UgY3JlYXRlcmVwby1uYXRpdmUgZmlyc3QiCi0JZXhpdCAxCi1maQotCi1leHBvcnQgUEFUSD0ke1BBVEh9OiR7T0VDT1JFX05BVElWRV9TWVNST09UfS91c3IvYmluCi0KLSRDUkVBVEVSRVBPICIkUlBNX0RJUiIKLQotZXhpdCAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL2RlbGF5X3RvX2ZpcnN0X2Jvb3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL2RlbGF5X3RvX2ZpcnN0X2Jvb3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNkYmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvZGVsYXlfdG9fZmlyc3RfYm9vdApAQCAtMCwwICsxLDIgQEAKKyMhL2Jpbi9zaAorZXhpdCAxCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9ydW5xZW11IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdQppbmRleCAwZWQxZWVjLi5kOTk4NDk0IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9ydW5xZW11CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3J1bnFlbXUKQEAgLTY5LDYgKzY5LDcgQEAKIG9mIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIChpbiBhbnkgb3JkZXIpOgogICBLRVJORUwgLSB0aGUga2VybmVsIGltYWdlIGZpbGUgdG8gdXNlCiAgIFJPT1RGUyAtIHRoZSByb290ZnMgaW1hZ2UgZmlsZSBvciBuZnNyb290IGRpcmVjdG9yeSB0byB1c2UKKyAgREVWSUNFX1RSRUUgLSB0aGUgZGV2aWNlIHRyZWUgYmxvYiB0byB1c2UKICAgTUFDSElORSAtIHRoZSBtYWNoaW5lIG5hbWUgKG9wdGlvbmFsLCBhdXRvZGV0ZWN0ZWQgZnJvbSBLRVJORUwgZmlsZW5hbWUgaWYgdW5zcGVjaWZpZWQpCiAgIFNpbXBsaWZpZWQgUUVNVSBjb21tYW5kLWxpbmUgb3B0aW9ucyBjYW4gYmUgcGFzc2VkIHdpdGg6CiAgICAgbm9ncmFwaGljIC0gZGlzYWJsZSB2aWRlbyBjb25zb2xlCkBAIC0xNzgsNiArMTc5LDcgQEAKICAgICAgICAgc2VsZi5lbnZfdmFycyA9ICgnTUFDSElORScsCiAgICAgICAgICAgICAgICAgICAgICAgICAnUk9PVEZTJywKICAgICAgICAgICAgICAgICAgICAgICAgICdLRVJORUwnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0RFVklDRV9UUkVFJywKICAgICAgICAgICAgICAgICAgICAgICAgICdERVBMT1lfRElSX0lNQUdFJywKICAgICAgICAgICAgICAgICAgICAgICAgICdPRV9UTVBESVInLAogICAgICAgICAgICAgICAgICAgICAgICAgJ09FQ09SRV9OQVRJVkVfU1lTUk9PVCcsCkBAIC01ODQsMTYgKzU4NiwyMCBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiQ2FuJ3QgZmluZCBPVk1GIGZpcm13YXJlOiAlcyIgJSBvdm1mKQogCiAgICAgZGVmIGNoZWNrX2tlcm5lbChzZWxmKToKLSAgICAgICAgIiIiQ2hlY2sgYW5kIHNldCBrZXJuZWwsIGR0YiIiIgorICAgICAgICAiIiJDaGVjayBhbmQgc2V0IGtlcm5lbCIiIgogICAgICAgICAjIFRoZSB2bSBpbWFnZSBkb2Vzbid0IG5lZWQgYSBrZXJuZWwKICAgICAgICAgaWYgc2VsZi5mc3R5cGUgaW4gc2VsZi52bXR5cGVzOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgIyBTZWUgaWYgdGhlIHVzZXIgc3VwcGxpZWQgYSBLRVJORUwgb3B0aW9uCisgICAgICAgIGlmIHNlbGYuZ2V0KCdLRVJORUwnKToKKyAgICAgICAgICAgIHNlbGYua2VybmVsID0gc2VsZi5nZXQoJ0tFUk5FTCcpCisKICAgICAgICAgIyBRQl9ERUZBVUxUX0tFUk5FTCBpcyBhbHdheXMgYSBmdWxsIGZpbGUgcGF0aAogICAgICAgICBrZXJuZWxfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc2VsZi5nZXQoJ1FCX0RFRkFVTFRfS0VSTkVMJykpCiAKICAgICAgICAgIyBUaGUgdXNlciBkaWRuJ3Qgd2FudCBhIGtlcm5lbCB0byBiZSBsb2FkZWQKLSAgICAgICAgaWYga2VybmVsX25hbWUgPT0gIm5vbmUiOgorICAgICAgICBpZiBrZXJuZWxfbmFtZSA9PSAibm9uZSIgYW5kIG5vdCBzZWxmLmtlcm5lbDoKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBzZWxmLmdldCgnREVQTE9ZX0RJUl9JTUFHRScpCkBAIC02MDksOCArNjE1LDE4IEBACiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmtlcm5lbCk6CiAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIktFUk5FTCAlcyBub3QgZm91bmQiICUgc2VsZi5rZXJuZWwpCiAKKyAgICBkZWYgY2hlY2tfZHRiKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBhbmQgc2V0IGR0YiIiIgorICAgICAgICAjIERpZCB0aGUgdXNlciBzcGVjaWZ5IGEgZGV2aWNlIHRyZWU/CisgICAgICAgIGlmIHNlbGYuZ2V0KCdERVZJQ0VfVFJFRScpOgorICAgICAgICAgICAgc2VsZi5kdGIgPSBzZWxmLmdldCgnREVWSUNFX1RSRUUnKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuZHRiKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoJ1NwZWNpZmllZCBEVEIgbm90IGZvdW5kOiAlcycgJSBzZWxmLmR0YikKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIGR0YiA9IHNlbGYuZ2V0KCdRQl9EVEInKQogICAgICAgICBpZiBkdGI6CisgICAgICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gc2VsZi5nZXQoJ0RFUExPWV9ESVJfSU1BR0UnKQogICAgICAgICAgICAgY21kX21hdGNoID0gIiVzLyVzIiAlIChkZXBsb3lfZGlyX2ltYWdlLCBkdGIpCiAgICAgICAgICAgICBjbWRfc3RhcnRzd2l0aCA9ICIlcy8lcyoiICUgKGRlcGxveV9kaXJfaW1hZ2UsIGR0YikKICAgICAgICAgICAgIGNtZF93aWxkID0gIiVzLyouZHRiIiAlIGRlcGxveV9kaXJfaW1hZ2UKQEAgLTY3OSw2ICs2OTUsNyBAQAogICAgICAgICBzZWxmLmNoZWNrX3Jvb3RmcygpCiAgICAgICAgIHNlbGYuY2hlY2tfb3ZtZigpCiAgICAgICAgIHNlbGYuY2hlY2tfa2VybmVsKCkKKyAgICAgICAgc2VsZi5jaGVja19kdGIoKQogICAgICAgICBzZWxmLmNoZWNrX2Jpb3NkaXIoKQogICAgICAgICBzZWxmLmNoZWNrX21lbSgpCiAgICAgICAgIHNlbGYuY2hlY2tfdGNwc2VyaWFsKCkKQEAgLTEwODksNiArMTEwNiwxMCBAQAogICAgICAgICAgICAgcWJzeXMgPSAnbWlwc2VsJwogICAgICAgICBlbGlmIG1hY2ggPT0gJ3FlbXVtaXBzNjRlbCc6CiAgICAgICAgICAgICBxYnN5cyA9ICdtaXBzNjRlbCcKKyAgICAgICAgZWxpZiBtYWNoID09ICdxZW11cmlzY3Y2NCc6CisgICAgICAgICAgICBxYnN5cyA9ICdyaXNjdjY0JworICAgICAgICBlbGlmIG1hY2ggPT0gJ3FlbXVyaXNjdjMyJzoKKyAgICAgICAgICAgIHFic3lzID0gJ3Jpc2N2MzInCiAKICAgICAgICAgcmV0dXJuICdxZW11LXN5c3RlbS0lcycgJSBxYnN5cwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy90ZXN0LWRlcGVuZGVuY2llcy5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3Rlc3QtZGVwZW5kZW5jaWVzLnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwYjk0ZGU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3Rlc3QtZGVwZW5kZW5jaWVzLnNoCisrKyAvZGV2L251bGwKQEAgLTEsMjg2ICswLDAgQEAKLSMhL2Jpbi9iYXNoCi0KLSMgQXV0aG9yOiBNYXJ0aW4gSmFuc2EgPG1hcnRpbi5qYW5zYUBnbWFpbC5jb20+Ci0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0KLSMgVXNlZCB0byBkZXRlY3QgbWlzc2luZyBkZXBlbmRlbmNpZXMgb3IgYXV0b21hZ2ljYWxseQotIyBlbmFibGVkIGRlcGVuZGVuY2llcyB3aGljaCBhcmVuJ3QgZXhwbGljaXRseSBlbmFibGVkCi0jIG9yIGRpc2FibGVkLiBVc2luZyBiYXNoIHRvIGhhdmUgUElQRVNUQVRVUyB2YXJpYWJsZS4KLQotIyBJdCBkb2VzIDMgYnVpbGRzIG9mIDx0YXJnZXQ+Ci0jIDFzdCB0byBwb3B1bGF0ZSBzc3RhdGUtY2FjaGUgZGlyZWN0b3J5IGFuZCBzeXNyb290Ci0jIDJuZCB0byByZWJ1aWxkIGVhY2ggcmVjaXBlIHdpdGggZXZlcnkgcG9zc2libGUKLSMgICAgIGRlcGVuZGVuY3kgZm91bmQgaW4gc3lzcm9vdCAod2hpY2ggc3RheXMgcG9wdWxhdGVkCi0jICAgICBmcm9tIDFzdCBidWlsZAotIyAzcmQgdG8gcmVidWlsZCBlYWNoIHJlY2lwZSBvbmx5IHdpdGggZGVwZW5kZW5jaWVzIGRlZmluZWQKLSMgICAgIGluIERFUEVORFMKLSMgNHRoIChvcHRpb25hbCkgcmVwZWF0IGJ1aWxkIGxpa2UgM3JkIHRvIG1ha2Ugc3VyZSB0aGF0Ci0jICAgICBtaW5pbWFsIHZlcnNpb25zIG9mIGRlcGVuZGVuY2llcyBkZWZpbmVkIGluIERFUEVORFMKLSMgICAgIGlzIGFsc28gZW5vdWdoCi0KLSMgR2xvYmFsIHZhcnMKLXRtcGRpcj0KLXRhcmdldHM9Ci1yZWNpcGVzPQotYnVpbGRoaXN0b3J5PQotYnVpbGR0eXBlPQotZGVmYXVsdF90YXJnZXRzPSJ3b3JsZCIKLWRlZmF1bHRfYnVpbGRoaXN0b3J5PSJidWlsZGhpc3RvcnkiCi1kZWZhdWx0X2J1aWxkdHlwZT0iMSAyIDMgYyIKLQotdXNhZ2UgKCkgewotICBjYXQgPDwgRU9GCi1XZWxjb21lIHRvIHV0aWxpdHkgdG8gZGV0ZWN0IG1pc3Npbmcgb3IgYXV0b2VuYWJsZWQgZGVwZW5kZW5jaWVzLgotV0FSTklORzogdGhpcyB1dGlsaXR5IHdpbGwgY29tcGxldGVseSByZW1vdmUgeW91ciB0bXBkaXIgKG1ha2Ugc3VyZQotICAgICAgICAgeW91IGRvbid0IGhhdmUgaW1wb3J0YW50IGJ1aWxkaGlzdG9yeSBvciBwZXJzaXN0ZW50IGRpciB0aGVyZSkuCi0kMCA8T1BUSU9OPgotCi1PcHRpb25zOgotICAtaCwgLS1oZWxwCi0gICAgICAgIERpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0LgotCi0gIC0tdG1wZGlyPTx0bXBkaXI+Ci0gICAgICAgIFNwZWNpZnkgdG1wZGlyLCB3aWxsIHVzZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgVE1QRElSIGlmIGl0IGlzIG5vdCBzcGVjaWZpZWQuCi0gICAgICAgIFNvbWV0aGluZyBsaWtlIC9PRS9vZS1jb3JlL3RtcC1lZ2xpYmMgKG5vIC8gYXQgdGhlIGVuZCkuCi0KLSAgLS10YXJnZXRzPTx0YXJnZXRzPgotICAgICAgICBMaXN0IG9mIHRhcmdldHMgc2VwYXJhdGVkIGJ5IHNwYWNlLCB3aWxsIHVzZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgVEFSR0VUUyBpZiBpdCBpcyBub3Qgc3BlY2lmaWVkLgotICAgICAgICBJdCB3aWxsIHJ1biAiYml0YmFrZSA8dGFyZ2V0cz4iIHRvIHBvcHVsYXRlIHN5c3Jvb3RzLgotICAgICAgICBEZWZhdWx0IHZhbHVlIGlzICJ3b3JsZCIuCi0KLSAgLS1yZWNpcGVzPTxyZWNpcGVzPgotICAgICAgICBGaWxlIHdpdGggbGlzdCBvZiByZWNpcGVzIHdlIHdhbnQgdG8gcmVidWlsZCB3aXRoIG1pbmltYWwgYW5kIG1heGltYWwgc3lzcm9vdC4KLSAgICAgICAgV2lsbCB1c2UgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFJFQ0lQRVMgaWYgaXQgaXMgbm90IHNwZWNpZmllZC4KLSAgICAgICAgRGVmYXVsdCB2YWx1ZSB3aWxsIHVzZSBhbGwgcGFja2FnZXMgZXZlciByZWNvcmRlZCBpbiBidWlsZGhpc3RvcnkgZGlyZWN0b3J5LgotCi0gIC0tYnVpbGRoaXN0b3J5PTxidWlsZGhpc3Rvcnk+Ci0gICAgICAgIFBhdGggdG8gYnVpbGRoaXN0b3J5IGRpcmVjdG9yeSwgaXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBpbiB5b3VyIGNvbmZpZywKLSAgICAgICAgYmVjYXVzZSBpdCdzIHVzZWQgdG8gZGV0ZWN0IGRpZmZlcmVudCBkZXBlbmRlbmNpZXMgYW5kIHRvIGNyZWF0ZSBsaXN0Ci0gICAgICAgIG9mIHJlY2lwZXMgdG8gcmVidWlsZCB3aGVuIGl0J3Mgbm90IHNwZWNpZmllZC4KLSAgICAgICAgV2lsbCB1c2UgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEJVSUxESElTVE9SWSBpZiBpdCBpcyBub3Qgc3BlY2lmaWVkLgotICAgICAgICBEZWZhdWx0IHZhbHVlIGlzICJidWlsZGhpc3RvcnkiCi0KLSAgLS1idWlsZHR5cGU9PGJ1aWxkdHlwZT4KLSAgICAgICAgVGhlcmUgYXJlIDQgdHlwZXMgb2YgYnVpbGQ6Ci0gICAgICAgICAgMTogYnVpbGQgdG8gcG9wdWxhdGUgc3N0YXRlLWNhY2hlIGRpcmVjdG9yeSBhbmQgc3lzcm9vdAotICAgICAgICAgIDI6IGJ1aWxkIHRvIHJlYnVpbGQgZWFjaCByZWNpcGUgd2l0aCBldmVyeSBwb3NzaWJsZSBkZXAKLSAgICAgICAgICAzOiBidWlsZCB0byByZWJ1aWxkIGVhY2ggcmVjaXBlIHdpdGggbWluaW1hbCBkZXBlbmRlbmNpZXMKLSAgICAgICAgICA0OiBidWlsZCB0byByZWJ1aWxkIGVhY2ggcmVjaXBlIGFnYWluIHdpdGggbWluaW1hbCBkZXBlbmRlbmNpZXMKLSAgICAgICAgICBjOiBjb21wYXJlIGJ1aWxkaGlzdG9yeSBkaXJlY3RvcmllcyBmcm9tIGJ1aWxkIDIgYW5kIDMKLSAgICAgICAgV2lsbCB1c2UgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEJVSUxEVFlQRSBpZiBpdCBpcyBub3Qgc3BlY2lmaWVkLgotICAgICAgICBEZWZhdWx0IHZhbHVlIGlzICIxIDIgMyBjIiwgb3JkZXIgaXMgaW1wb3J0YW50LCB0eXBlIDQgaXMgb3B0aW9uYWwuCi1FT0YKLX0KLQotIyBQcmludCBlcnJvciBpbmZvcm1hdGlvbiBhbmQgZXhpdC4KLWVjaG9fZXJyb3IgKCkgewotICBlY2hvICJFUlJPUjogJDEiID4mMgotICBleGl0IDEKLX0KLQotd2hpbGUgWyAtbiAiJDEiIF07IGRvCi0gIGNhc2UgJDEgaW4KLSAgICAtLXRtcGRpcj0qKQotICAgICAgdG1wZGlyPWBlY2hvICQxIHwgc2VkIC1lICdzI14tLXRtcGRpcj0jIycgfCB4YXJncyByZWFkbGluayAtZWAKLSAgICAgIFsgLWQgIiR0bXBkaXIiIF0gfHwgZWNob19lcnJvciAiSW52YWxpZCBhcmd1bWVudCB0byAtLXRtcGRpciIKLSAgICAgIHNoaWZ0Ci0gICAgICAgIDs7Ci0gICAgLS10YXJnZXRzPSopCi0gICAgICB0YXJnZXRzPWBlY2hvICQxIHwgc2VkIC1lICdzI14tLXRhcmdldHM9IipcKFteIl0qXCkiKiNcMSMnYAotICAgICAgc2hpZnQKLSAgICAgICAgOzsKLSAgICAtLXJlY2lwZXM9KikKLSAgICAgIHJlY2lwZXM9YGVjaG8gJDEgfCBzZWQgLWUgJ3MjXi0tcmVjaXBlcz0iKlwoW14iXSpcKSIqI1wxIydgCi0gICAgICBzaGlmdAotICAgICAgICA7OwotICAgIC0tYnVpbGRoaXN0b3J5PSopCi0gICAgICBidWlsZGhpc3Rvcnk9YGVjaG8gJDEgfCBzZWQgLWUgJ3MjXi0tYnVpbGRoaXN0b3J5PSIqXChbXiJdKlwpIiojXDEjJ2AKLSAgICAgIHNoaWZ0Ci0gICAgICAgIDs7Ci0gICAgLS1idWlsZHR5cGU9KikKLSAgICAgIGJ1aWxkdHlwZT1gZWNobyAkMSB8IHNlZCAtZSAncyNeLS1idWlsZHR5cGU9IipcKFteIl0qXCkiKiNcMSMnYAotICAgICAgc2hpZnQKLSAgICAgICAgOzsKLSAgICAtLWhlbHB8LWgpCi0gICAgICB1c2FnZQotICAgICAgZXhpdCAwCi0gICAgICAgIDs7Ci0gICAgKikKLSAgICAgIGVjaG8gIkludmFsaWQgYXJndW1lbnRzICQqIgotICAgICAgZWNob19lcnJvciAiVHJ5ICckMCAtaCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgotICAgICAgICA7OwotICBlc2FjCi1kb25lCi0KLSMgdG1wZGlyIGRpcmVjdG9yeSwgdXNlIGVudmlyb25tZW50IHZhcmlhYmxlIFRNUERJUgotIyBpZiBpdCB3YXMgbm90IHNwZWNpZmllZCwgb3RoZXJ3aXNlLCBlcnJvci4KLVsgLW4gIiR0bXBkaXIiIF0gfHwgdG1wZGlyPSRUTVBESVIKLVsgLW4gIiR0bXBkaXIiIF0gfHwgZWNob19lcnJvciAiTm8gdG1wZGlyIGZvdW5kISIKLVsgLWQgIiR0bXBkaXIiIF0gfHwgZWNob19lcnJvciAiSW52YWxpZCB0bXBkaXIgXCIkdG1wZGlyXCIiCi1bIC1uICIkdGFyZ2V0cyIgXSB8fCB0YXJnZXRzPSRUQVJHRVRTCi1bIC1uICIkdGFyZ2V0cyIgXSB8fCB0YXJnZXRzPSRkZWZhdWx0X3RhcmdldHMKLVsgLW4gIiRyZWNpcGVzIiBdIHx8IHJlY2lwZXM9JFJFQ0lQRVMKLVsgLW4gIiRyZWNpcGVzIiAtYSAhIC1mICIkcmVjaXBlcyIgXSAmJiBlY2hvX2Vycm9yICJJbnZhbGlkIGZpbGUgd2l0aCBsaXN0IG9mIHJlY2lwZXMgdG8gcmVidWlsZCIKLVsgLW4gIiRyZWNpcGVzIiBdIHx8IGVjaG8gIkFsbCBwYWNrYWdlcyBldmVyIHJlY29yZGVkIGluIGJ1aWxkaGlzdG9yeSBkaXJlY3Rvcnkgd2lsbCBiZSByZWJ1aWx0IgotWyAtbiAiJGJ1aWxkaGlzdG9yeSIgXSB8fCBidWlsZGhpc3Rvcnk9JEJVSUxESElTVE9SWQotWyAtbiAiJGJ1aWxkaGlzdG9yeSIgXSB8fCBidWlsZGhpc3Rvcnk9JGRlZmF1bHRfYnVpbGRoaXN0b3J5Ci1bIC1kICIkYnVpbGRoaXN0b3J5IiBdIHx8IGVjaG9fZXJyb3IgIkludmFsaWQgYnVpbGRoaXN0b3J5IGRpcmVjdG9yeSBcIiRidWlsZGhpc3RvcnlcIiIKLVsgLW4gIiRidWlsZHR5cGUiIF0gfHwgYnVpbGR0eXBlPSRCVUlMRFRZUEUKLVsgLW4gIiRidWlsZHR5cGUiIF0gfHwgYnVpbGR0eXBlPSRkZWZhdWx0X2J1aWxkdHlwZQotZWNobyAiJGJ1aWxkdHlwZSIgfCBncmVwIC12ICdeWzEyMzRjIF0qJCcgJiYgZWNob19lcnJvciAiSW52YWxpZCBidWlsZHR5cGUgXCIkYnVpbGR0eXBlXCIsIG9ubHkgc29tZSBjb21iaW5hdGlvbiBvZiAxLCAyLCAzLCA0LCBjIHNlcGFyYXRlZCBieSBzcGFjZSBpcyBhbGxvd2VkIgotCi1PVVRQVVRfQkFTRT10ZXN0LWRlcGVuZGVuY2llcy9gZGF0ZSAiKyVzImAKLWRlY2xhcmUgLWkgUkVTVUxUPTAKLQotYnVpbGRfYWxsKCkgewotICBlY2hvICI9PT09PSAxc3QgYnVpbGQgdG8gcG9wdWxhdGUgc3N0YXRlLWNhY2hlIGRpcmVjdG9yeSBhbmQgc3lzcm9vdCA9PT09PSIKLSAgT1VUUFVUMT0ke09VVFBVVF9CQVNFfS8ke1RZUEV9X2FsbAotICBta2RpciAtcCAke09VVFBVVDF9Ci0gIGVjaG8gIkxvZ3Mgd2lsbCBiZSBzdG9yZWQgaW4gJHtPVVRQVVQxfSBkaXJlY3RvcnkiCi0gIGJpdGJha2UgLWsgJHRhcmdldHMgMj4mMSB8IHRlZSAtYSAke09VVFBVVDF9L2NvbXBsZXRlLmxvZwotICBSRVNVTFQrPSR7UElQRVNUQVRVU1swXX0KLSAgZ3JlcCAiRVJST1I6IFRhc2suKmZhaWxlZCIgJHtPVVRQVVQxfS9jb21wbGV0ZS5sb2cgPiAke09VVFBVVDF9L2ZhaWxlZC10YXNrcy5sb2cKLSAgY2F0ICR7T1VUUFVUMX0vZmFpbGVkLXRhc2tzLmxvZyB8IHNlZCAnc0AuKi9AQGc7IHNAXy4qQEBnOyBzQFwuYmIsIC4qQEBnOyBzQFwuYmI6LipAQGcnIHwgc29ydCAtdSA+ICR7T1VUUFVUMX0vZmFpbGVkLXJlY2lwZXMubG9nCi19Ci0KLWJ1aWxkX2V2ZXJ5X3JlY2lwZSgpIHsKLSAgaWYgWyAiJHtUWVBFfSIgPSAiMiIgXSA7IHRoZW4KLSAgICBlY2hvICI9PT09PSAybmQgYnVpbGQgdG8gcmVidWlsZCBlYWNoIHJlY2lwZSB3aXRoIGV2ZXJ5IHBvc3NpYmxlIGRlcCA9PT09PSIKLSAgICBPVVRQVVRfTUFYPSR7T1VUUFVUX0JBU0V9LyR7VFlQRX1fbWF4Ci0gICAgT1VUUFVUQj0ke09VVFBVVF9NQVh9Ci0gIGVsc2UKLSAgICBlY2hvICI9PT09PSAzcmQgb3IgNHRoIGJ1aWxkIHRvIHJlYnVpbGQgZWFjaCByZWNpcGUgd2l0aCBtaW5pbWFsIGRlcGVuZGVuY2llcyA9PT09PSIKLSAgICBPVVRQVVRfTUlOPSR7T1VUUFVUX0JBU0V9LyR7VFlQRX1fbWluCi0gICAgT1VUUFVUQj0ke09VVFBVVF9NSU59Ci0gIGZpCi0KLSAgbWtkaXIgLXAgJHtPVVRQVVRCfSAke09VVFBVVEJ9L2ZhaWxlZCAke09VVFBVVEJ9L29rCi0gIGVjaG8gIkxvZ3Mgd2lsbCBiZSBzdG9yZWQgaW4gJHtPVVRQVVRCfSBkaXJlY3RvcnkiCi0gIGlmIFsgLXogIiRyZWNpcGVzIiBdOyB0aGVuCi0gICAgbHMgLWQgJGJ1aWxkaGlzdG9yeS9wYWNrYWdlcy8qLyogfCB4YXJncyAtbiAxIGJhc2VuYW1lIHwgc29ydCAtdSA+ICR7T1VUUFVUQn0vcmVjaXBlLmxpc3QKLSAgICByZWNpcGVzPSR7T1VUUFVUQn0vcmVjaXBlLmxpc3QKLSAgZmkKLSAgaWYgWyAiJHtUWVBFfSIgIT0gIjIiIF0gOyB0aGVuCi0gICAgZWNobyAiISEhUmVtb3ZpbmcgdG1wZGlyIFwiJHRtcGRpclwiISEhIgotICAgIHJtIC1yZiAkdG1wZGlyL2RlcGxveSAkdG1wZGlyL3BrZ2RhdGEgJHRtcGRpci9zc3RhdGUtY29udHJvbCAkdG1wZGlyL3N0YW1wcyAkdG1wZGlyL3N5c3Jvb3RzICR0bXBkaXIvd29yayAkdG1wZGlyL3dvcmstc2hhcmVkIDI+L2Rldi9udWxsCi0gIGZpCi0gIGk9MQotICBjb3VudD1gY2F0ICRyZWNpcGVzICR7T1VUUFVUMX0vZmFpbGVkLXJlY2lwZXMubG9nIHwgc29ydCAtdSB8IHdjIC1sYAotICBmb3IgcmVjaXBlIGluIGBjYXQgJHJlY2lwZXMgJHtPVVRQVVQxfS9mYWlsZWQtcmVjaXBlcy5sb2cgfCBzb3J0IC11YDsgZG8KLSAgICBlY2hvICJCdWlsZGluZyByZWNpcGU6ICR7cmVjaXBlfSAoJGkvJGNvdW50KSIKLSAgICBkZWNsYXJlIC1pIFJFQ0lQRV9SRVNVTFQ9MAotICAgIGJpdGJha2UgLWMgY2xlYW5zc3RhdGUgJHtyZWNpcGV9ID4gJHtPVVRQVVRCfS8ke3JlY2lwZX0ubG9nIDI+JjE7Ci0gICAgUkVDSVBFX1JFU1VMVCs9JD8KLSAgICBiaXRiYWtlICR7cmVjaXBlfSA+PiAke09VVFBVVEJ9LyR7cmVjaXBlfS5sb2cgMj4mMTsKLSAgICBSRUNJUEVfUkVTVUxUKz0kPwotICAgIGlmIFsgIiR7UkVDSVBFX1JFU1VMVH0iICE9ICIwIiBdIDsgdGhlbgotICAgICAgUkVTVUxUKz0ke1JFQ0lQRV9SRVNVTFR9Ci0gICAgICBtdiAke09VVFBVVEJ9LyR7cmVjaXBlfS5sb2cgJHtPVVRQVVRCfS9mYWlsZWQvCi0gICAgICBncmVwICJFUlJPUjogVGFzay4qZmFpbGVkIiAgJHtPVVRQVVRCfS9mYWlsZWQvJHtyZWNpcGV9LmxvZyB8IHRlZSAtYSAke09VVFBVVEJ9L2ZhaWxlZC10YXNrcy5sb2cKLSAgICAgIGdyZXAgIkVSUk9SOiBUYXNrLipmYWlsZWQiICAke09VVFBVVEJ9L2ZhaWxlZC8ke3JlY2lwZX0ubG9nIHwgc2VkICdzQC4qL0BAZzsgc0BfLipAQGc7IHNAXC5iYiwgLipAQGc7IHNAXC5iYjouKkBAZycgPj4gJHtPVVRQVVRCfS9mYWlsZWQtcmVjaXBlcy5sb2cKLSAgICAgICMgYW5kIGFwcGVuZCBhbHNvICR7cmVjaXBlfSBpbiBjYXNlIHRoZSBmYWlsZWQgdGFzayB3YXMgZnJvbSBzb21lIGRlcGVuZGVuY3kKLSAgICAgIGVjaG8gJHtyZWNpcGV9ID4+ICR7T1VUUFVUQn0vZmFpbGVkLXJlY2lwZXMubG9nCi0gICAgZWxzZQotICAgICAgbXYgJHtPVVRQVVRCfS8ke3JlY2lwZX0ubG9nICR7T1VUUFVUQn0vb2svCi0gICAgZmkKLSAgICBpZiBbICIke1RZUEV9IiAhPSAiMiIgXSA7IHRoZW4KLSAgICAgIHJtIC1yZiAkdG1wZGlyL2RlcGxveSAkdG1wZGlyL3BrZ2RhdGEgJHRtcGRpci9zc3RhdGUtY29udHJvbCAkdG1wZGlyL3N0YW1wcyAkdG1wZGlyL3N5c3Jvb3RzICR0bXBkaXIvd29yayAkdG1wZGlyL3dvcmstc2hhcmVkIDI+L2Rldi9udWxsCi0gICAgZmkKLSAgICBpPWBleHByICRpICsgMWAKLSAgZG9uZQotICBlY2hvICJDb3B5aW5nIGJ1aWxkaGlzdG9yeS9wYWNrYWdlcyB0byAke09VVFBVVEJ9IgotICBjcCAtcmEgJGJ1aWxkaGlzdG9yeS9wYWNrYWdlcyAke09VVFBVVEJ9Ci0gICMgVGhpcyB3aWxsIGJlIHVzZWZ1bGwgdG8gc2VlIHdoaWNoIGxpYnJhcnkgaXMgcHVsbGluZyBuZXcgZGVwZW5kZW5jeQotICBlY2hvICJDb3B5aW5nIGRvX3BhY2thZ2UgbG9ncyB0byAke09VVFBVVEJ9L2RvX3BhY2thZ2UvIgotICBta2RpciAke09VVFBVVEJ9L2RvX3BhY2thZ2UKLSAgZmluZCAkdG1wZGlyL3dvcmsvIC1uYW1lIGxvZy5kb19wYWNrYWdlIDI+L2Rldi9udWxsfCB3aGlsZSByZWFkIGY7IGRvCi0gICAgIyBwbiBpcyAzIGxldmVscyBiYWNrLCBidXQgd2UgZG9uJ3Qga25vdyBpZiB0aGVyZSBpcyBqdXN0IG9uZSBsb2cgcGVyIHBuIChvbmx5IG9uZSBhcmNoIGFuZCB2ZXJzaW9uKQotICAgICMgZGVzdD1gZWNobyAkZiB8IHNlZCAncyNeLiovXChbXi9dKlwpL1woW14vXSpcKS9cKFteL10qXCkvbG9nLmRvX3BhY2thZ2UjXDEjZydgCi0gICAgZGVzdD1gZWNobyAkZiB8IHNlZCAicyMkdG1wZGlyL3dvcmsvIyNnOyBzIy8jXyNnImAKLSAgICBjcCAkZiAke09VVFBVVEJ9L2RvX3BhY2thZ2UvJGRlc3QKLSAgZG9uZQotfQotCi1jb21wYXJlX2RlcHMoKSB7Ci0gICMgeW91IGNhbiBydW4ganVzdCBjb21wYXJlIHRhc2sgd2l0aCBjb21tYW5kIGxpa2UgdGhpcwotICAjIE9VVFBVVF9CQVNFPXRlc3QtZGVwZW5kZW5jaWVzLzEzNzMxNDAxNzIgXAotICAjIE9VVFBVVF9NQVg9JHtPVVRQVVRfQkFTRX0vMl9tYXggXAotICAjIE9VVFBVVF9NSU49JHtPVVRQVVRfQkFTRX0vM19taW4gXAotICAjIG9wZW5lbWJlZGRlZC1jb3JlL3NjcmlwdHMvdGVzdC1kZXBlbmRlbmNpZXMuc2ggLS10bXBkaXI9dG1wLWVnbGliYyAtLXRhcmdldHM9Z2xpYi0yLjAgLS1yZWNpcGVzPXJlY2lwZV9saXN0IC0tYnVpbGR0eXBlPWMKLSAgZWNobyAiPT09PT0gQ29tcGFyZSBkZXBlbmRlbmNpZXMgcmVjb3JkZWQgaW4gXCIke09VVFBVVF9NQVh9XCIgYW5kIFwiJHtPVVRQVVRfTUlOfVwiID09PT09IgotICBbIC1uICIke09VVFBVVEN9IiBdIHx8IE9VVFBVVEM9JHtPVVRQVVRfQkFTRX0vY29tcAotICBta2RpciAtcCAke09VVFBVVEN9Ci0gIE9VVFBVVF9GSUxFPSR7T1VUUFVUQ30vZGVwZW5kZW5jeS1jaGFuZ2VzCi0gIGVjaG8gIkRpZmZlcmVuY2VzIHdpbGwgYmUgc3RvcmVkIGluICR7T1VUUFVUX0ZJTEV9LCBkb3QgaXMgc2hvd24gZm9yIGV2ZXJ5IDEwMCBvZiBjaGVja2VkIHBhY2thZ2VzIgotICBlY2hvID4gJHtPVVRQVVRfRklMRX0KLQotICBbIC1kICR7T1VUUFVUX01BWH0gXSB8fCBlY2hvX2Vycm9yICJEaXJlY3Rvcnkgd2l0aCBvdXRwdXQgZnJvbSBidWlsZCAyIFwiJHtPVVRQVVRfTUFYfVwiIGRvZXMgbm90IGV4aXN0IgotICBbIC1kICR7T1VUUFVUX01JTn0gXSB8fCBlY2hvX2Vycm9yICJEaXJlY3Rvcnkgd2l0aCBvdXRwdXQgZnJvbSBidWlsZCAzIFwiJHtPVVRQVVRfTUlOfVwiIGRvZXMgbm90IGV4aXN0IgotICBbIC1kICR7T1VUUFVUX01BWH0vcGFja2FnZXMvIF0gfHwgZWNob19lcnJvciAiRGlyZWN0b3J5IHdpdGggcGFja2FnZXMgZnJvbSBidWlsZCAyIFwiJHtPVVRQVVRfTUFYfS9wYWNrYWdlcy9cIiBkb2VzIG5vdCBleGlzdCIKLSAgWyAtZCAke09VVFBVVF9NSU59L3BhY2thZ2VzLyBdIHx8IGVjaG9fZXJyb3IgIkRpcmVjdG9yeSB3aXRoIHBhY2thZ2VzIGZyb20gYnVpbGQgMyBcIiR7T1VUUFVUX01JTn0vcGFja2FnZXMvXCIgZG9lcyBub3QgZXhpc3QiCi0gIGk9MAotICBmaW5kICR7T1VUUFVUX01BWH0vcGFja2FnZXMvIC1uYW1lIGxhdGVzdCB8IHNlZCAicyMke09VVFBVVF9NQVh9LyMjZyIgfCB3aGlsZSByZWFkIHBrZzsgZG8KLSAgICBtYXhfcGtnPSR7T1VUUFVUX01BWH0vJHtwa2d9Ci0gICAgbWluX3BrZz0ke09VVFBVVF9NSU59LyR7cGtnfQotICAgICMgcGtnPXBhY2thZ2VzL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9saWJ1bmdpZi9saWJ1bmdpZi9sYXRlc3QKLSAgICByZWNpcGU9YGVjaG8gIiR7cGtnfSIgfCBzZWQgJ3MjcGFja2FnZXMvW14vXSovXChbXi9dKlwpL1woW14vXSpcKS9sYXRlc3QjXDEjZydgCi0gICAgcGFja2FnZT1gZWNobyAiJHtwa2d9IiB8IHNlZCAncyNwYWNrYWdlcy9bXi9dKi9cKFteL10qXCkvXChbXi9dKlwpL2xhdGVzdCNcMiNnJ2AKLSAgICBpZiBbICEgLWYgIiR7bWluX3BrZ30iIF0gOyB0aGVuCi0gICAgICBlY2hvICJFUlJPUjogJHtyZWNpcGV9OiAke3BhY2thZ2V9IHBhY2thZ2UgaXNuJ3QgY3JlYXRlZCB3aGVuIGJ1aWxkaW5nIHdpdGggbWluaW1hbCBkZXBlbmRlbmNpZXM/IiB8IHRlZSAtYSAke09VVFBVVF9GSUxFfQotICAgICAgZWNobyAke3JlY2lwZX0gPj4gJHtPVVRQVVRDfS9mYWlsZWQtcmVjaXBlcy5sb2cKLSAgICAgIGNvbnRpbnVlCi0gICAgZmkKLSAgICAjIHN0cmlwIHZlcnNpb24gaW5mb3JtYXRpb24gaW4gcGFyZW50aGVzaXMKLSAgICBtYXhfZGVwcz1gZ3JlcCAiXlJERVBFTkRTID0gIiAke21heF9wa2d9IHwgc2VkICdzL15SREVQRU5EUyA9IC8gL2c7IHMvJC8gL2c7IHMvKFteKF0qKS8vZydgCi0gICAgbWluX2RlcHM9YGdyZXAgIl5SREVQRU5EUyA9ICIgJHttaW5fcGtnfSB8IHNlZCAncy9eUkRFUEVORFMgPSAvIC9nOyBzLyQvIC9nOyBzLyhbXihdKikvL2cnYAotICAgIGlmIFsgIiRpIiA9IDEwMCBdIDsgdGhlbgotICAgICAgZWNobyAtbiAiLiIgIyBjaGVhcCBwcm9ncmVzc2JhcgotICAgICAgaT0wCi0gICAgZmkKLSAgICBpZiBbICIke21heF9kZXBzfSIgPSAiJHttaW5fZGVwc30iIF0gOyB0aGVuCi0gICAgICAjIGl0J3MgYW5ub3lpbmcgbG9uZywgYnV0IGF0IGxlYXN0IGl0J3Mgc2hvd2luZyBzb21lIHByb2dyZXNzLCB3YXJuaW5ncyBhcmUgZ3JlcHBlZCBhdCB0aGUgZW5kCi0gICAgICBlY2hvICJOT1RFOiAke3JlY2lwZX06ICR7cGFja2FnZX0gcmRlcGVuZHMgd2VyZW4ndCBjaGFuZ2VkIiA+PiAke09VVFBVVF9GSUxFfQotICAgIGVsc2UKLSAgICAgIG1pc3NpbmdfZGVwcz0KLSAgICAgIGZvciBkZXAgaW4gJHttYXhfZGVwc307IGRvCi0gICAgICAgIGlmICEgZWNobyAiJHttaW5fZGVwc30iIHwgZ3JlcCAtcSAiICR7ZGVwfSAiIDsgdGhlbgotICAgICAgICAgIG1pc3NpbmdfZGVwcz0iJHttaXNzaW5nX2RlcHN9ICR7ZGVwfSIKLSAgICAgICAgICBlY2hvICMgdG8gZ2V0IHJpZCBvZiBkb3RzIG9uIGxhc3QgbGluZQotICAgICAgICAgIGVjaG8gIldBUk46ICR7cmVjaXBlfTogJHtwYWNrYWdlfSByZGVwZW5kcyBvbiAke2RlcH0sIGJ1dCBpdCBpc24ndCBhIGJ1aWxkIGRlcGVuZGVuY3k/IiB8IHRlZSAtYSAke09VVFBVVF9GSUxFfQotICAgICAgICBmaQotICAgICAgZG9uZQotICAgICAgaWYgWyAtbiAiJHttaXNzaW5nX2RlcHN9IiBdIDsgdGhlbgotICAgICAgICBlY2hvICR7cmVjaXBlfSA+PiAke09VVFBVVEN9L2ZhaWxlZC1yZWNpcGVzLmxvZwotICAgICAgZmkKLSAgICBmaQotICAgIGk9YGV4cHIgJGkgKyAxYAotICBkb25lCi0gIGVjaG8gIyB0byBnZXQgcmlkIG9mIGRvdHMgb24gbGFzdCBsaW5lCi0gIGVjaG8gIkZvdW5kIGRpZmZlcmVuY2VzOiAiCi0gIGdyZXAgIl5XQVJOOiAiICR7T1VUUFVUX0ZJTEV9IHwgdGVlICR7T1VUUFVUX0ZJTEV9Lndhcm4ubG9nCi0gIGVjaG8gIkZvdW5kIGVycm9yczogIgotICBncmVwICJeRVJST1I6ICIgJHtPVVRQVVRfRklMRX0gfCB0ZWUgJHtPVVRQVVRfRklMRX0uZXJyb3IubG9nCi0gIFJFU1VMVCs9YGNhdCAke09VVFBVVF9GSUxFfS53YXJuLmxvZyB8IHdjIC1sYAotICBSRVNVTFQrPWBjYXQgJHtPVVRQVVRfRklMRX0uZXJyb3IubG9nIHwgd2MgLWxgCi19Ci0KLWZvciBUWVBFIGluICRidWlsZHR5cGU7IGRvCi0gIGNhc2UgJHtUWVBFfSBpbgotICAgIDEpIGJ1aWxkX2FsbDs7Ci0gICAgMikgYnVpbGRfZXZlcnlfcmVjaXBlOzsKLSAgICAzKSBidWlsZF9ldmVyeV9yZWNpcGU7OwotICAgIDQpIGJ1aWxkX2V2ZXJ5X3JlY2lwZTs7Ci0gICAgYykgY29tcGFyZV9kZXBzOzsKLSAgICAqKSBlY2hvX2Vycm9yICJJbnZhbGlkIGJ1aWxkdHlwZSBcIiRUWVBFXCIiCi0gIGVzYWMKLWRvbmUKLQotY2F0ICR7T1VUUFVUX0JBU0V9LyovZmFpbGVkLXJlY2lwZXMubG9nIHwgc29ydCAtdSA+PiAke09VVFBVVF9CQVNFfS9mYWlsZWQtcmVjaXBlcy5sb2cKLQotaWYgWyAiJHtSRVNVTFR9IiAhPSAiMCIgXSA7IHRoZW4KLSAgZWNobyAiRVJST1I6ICR7UkVTVUxUfSBpc3N1ZXMgd2VyZSBmb3VuZCBpbiB0aGVzZSByZWNpcGVzOiBgY2F0ICR7T1VUUFVUX0JBU0V9L2ZhaWxlZC1yZWNpcGVzLmxvZyB8IHhhcmdzYCIKLWZpCi0KLWVjaG8gIklORk86IE91dHB1dCB3cml0dGVuIGluOiAke09VVFBVVF9CQVNFfSIKLWV4aXQgJHtSRVNVTFR9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy92ZXJpZnktYmFzaGlzbXMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy92ZXJpZnktYmFzaGlzbXMKaW5kZXggZGFiNjRlZi4uYTk3OWJkMiAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvdmVyaWZ5LWJhc2hpc21zCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3ZlcmlmeS1iYXNoaXNtcwpAQCAtODksNyArODksMTMgQEAKICAgICByZXR1cm4gdGluZm9pbAogCiBpZiBfX25hbWVfXz09J19fbWFpbl9fJzoKLSAgICBpbXBvcnQgc2h1dGlsCisgICAgaW1wb3J0IGFyZ3BhcnNlLCBzaHV0aWwKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdCYXNoaW0gZGV0ZWN0b3IgZm9yIHNoZWxsIGZyYWdtZW50cyBpbiByZWNpcGVzLicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgicmVjaXBlcyIsIG1ldGF2YXI9IlJFQ0lQRSIsIG5hcmdzPSIqIiwgaGVscD0icmVjaXBlcyB0byBjaGVjayAoaWYgbm90IHNwZWNpZmllZCwgYWxsIHdpbGwgYmUgY2hlY2tlZCkiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKwogICAgIGlmIHNodXRpbC53aGljaCgiY2hlY2tiYXNoaXNtcy5wbCIpIGlzIE5vbmU6CiAgICAgICAgIHByaW50KCJDYW5ub3QgZmluZCBjaGVja2Jhc2hpc21zLnBsIG9uICRQQVRILCBnZXQgaXQgZnJvbSBodHRwczovL2Fub25zY20uZGViaWFuLm9yZy9jZ2l0L2NvbGxhYi1tYWludC9kZXZzY3JpcHRzLmdpdC9wbGFpbi9zY3JpcHRzL2NoZWNrYmFzaGlzbXMucGwiKQogICAgICAgICBzeXMuZXhpdCgxKQpAQCAtOTksNiArMTA1LDggQEAKICAgICAjIGJpdGJha2Ugc2VydmVyIGlzIGNydWNpYWwsIGRvbid0IGNoYW5nZSBpdC4KICAgICBkZWYgZnVuYyhpdGVtKToKICAgICAgICAgKGZpbGVuYW1lLCBrZXksIGxpbmVubyksIHNjcmlwdCA9IGl0ZW0KKyAgICAgICAgaWYgYXJncy52ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoIlNjYW5uaW5nICVzOiVzIiAlIChmaWxlbmFtZSwga2V5KSkKICAgICAgICAgcmV0dXJuIHByb2Nlc3MoZmlsZW5hbWUsIGtleSwgbGluZW5vLCBzY3JpcHQpCiAKICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCkBAIC0xMTAsOSArMTE4LDggQEAKICAgICAjIHJlY2lwZWNhY2hlcyB0byBoYW5kbGUgbXVsdGljb25maWcgZW52aXJvbm1lbnRzCiAgICAgcGtnX3BuID0gdGluZm9pbC5jb29rZXIucmVjaXBlY2FjaGVzWyIiXS5wa2dfcG4KIAotICAgICMgVE9ETzogdXNlIGFyZ3BhcnNlIGFuZCBoYXZlIC0taGVscAotICAgIGlmIGxlbihzeXMuYXJndikgPiAxOgotICAgICAgICBpbml0aWFsX3BucyA9IHN5cy5hcmd2WzE6XQorICAgIGlmIGFyZ3MucmVjaXBlczoKKyAgICAgICAgaW5pdGlhbF9wbnMgPSBhcmdzLnJlY2lwZXMKICAgICBlbHNlOgogICAgICAgICBpbml0aWFsX3BucyA9IHNvcnRlZChwa2dfcG4pCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3dpYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3dpYwppbmRleCAwOTcwODRhLi43MzkyYmM0IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy93aWMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvd2ljCkBAIC00MCwxNiArNDAsMjkgQEAKIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzcGF3bgogCiAjIEV4dGVybmFsIG1vZHVsZXMKLXNjcmlwdHNfcGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQorc2NyaXB0c19wYXRoID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKQogbGliX3BhdGggPSBzY3JpcHRzX3BhdGggKyAnL2xpYicKIHN5cy5wYXRoLmluc2VydCgwLCBsaWJfcGF0aCkKLW9lX2xpYl9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzY3JpcHRzX3BhdGgpLCAnbWV0YScsICdsaWInKQotc3lzLnBhdGguaW5zZXJ0KDAsIG9lX2xpYl9wYXRoKQoraW1wb3J0IHNjcmlwdHBhdGgKK3NjcmlwdHBhdGguYWRkX29lX2xpYl9wYXRoKCkKKworIyBDaGVjayB3aGV0aGVyIHdpYyBpcyBydW5uaW5nIHdpdGhpbiBlU0RLIGVudmlyb25tZW50CitzZGtyb290ID0gc2NyaXB0c19wYXRoCitpZiBvcy5lbnZpcm9uLmdldCgnU0RLVEFSR0VUU1lTUk9PVCcpOgorICAgIHdoaWxlIHNka3Jvb3QgIT0gJycgYW5kIHNka3Jvb3QgIT0gb3Muc2VwOgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2Rrcm9vdCwgJy5kZXZ0b29sYmFzZScpKToKKyAgICAgICAgICAgICMgU2V0IEJVSUxERElSIGZvciB3aWMgdG8gd29yayB3aXRoaW4gZVNESworICAgICAgICAgICAgb3MuZW52aXJvblsnQlVJTERESVInXSA9IHNka3Jvb3QKKyAgICAgICAgICAgICMgLmRldnRvb2xiYXNlIG9ubHkgZXhpc3RzIHdpdGhpbiBlU0RLCisgICAgICAgICAgICAjIElmIGZvdW5kLCBpbml0aWFsaXplIGJpdGJha2UgcGF0aCBmb3IgZVNESyBlbnZpcm9ubWVudCBhbmQgYXBwZW5kIHRvIFBBVEgKKyAgICAgICAgICAgIHNka3Jvb3QgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHNjcmlwdHNfcGF0aCksICdiaXRiYWtlJywgJ2JpbicpCisgICAgICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gKz0gIjoiICsgc2Rrcm9vdAorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgc2Rrcm9vdCA9IG9zLnBhdGguZGlybmFtZShzZGtyb290KQogCiBiaXRiYWtlX2V4ZSA9IHNwYXduLmZpbmRfZXhlY3V0YWJsZSgnYml0YmFrZScpCiBpZiBiaXRiYWtlX2V4ZToKLSAgICBiaXRiYWtlX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGJpdGJha2VfZXhlKSwgJy4uL2xpYicpCi0gICAgc3lzLnBhdGguaW5zZXJ0KDAsIGJpdGJha2VfcGF0aCkKKyAgICBiaXRiYWtlX3BhdGggPSBzY3JpcHRwYXRoLmFkZF9iaXRiYWtlX2xpYl9wYXRoKCkKICAgICBmcm9tIGJiIGltcG9ydCBjb29rZXJkYXRhCiAgICAgZnJvbSBiYi5tYWluIGltcG9ydCBiaXRiYWtlX21haW4sIEJpdEJha2VDb25maWdQYXJhbWV0ZXJzCiBlbHNlOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMveW9jdG8tYnNwIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMveW9jdG8tYnNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ZmIxZjQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWJzcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0jIGV4OnRzPTQ6c3c9NDpzdHM9NDpldAotIyAtKi0gdGFiLXdpZHRoOiA0OyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsIEludGVsIENvcnBvcmF0aW9uLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLSMKLSMgREVTQ1JJUFRJT04KLSMgJ3lvY3RvLWJzcCcgaXMgdGhlIFlvY3RvIEJTUCBUb29sIHRoYXQgaGVscHMgdXNlcnMgY3JlYXRlIGEgbmV3Ci0jIFlvY3RvIEJTUC4gIEludm9raW5nIGl0IHdpdGhvdXQgYW55IGFyZ3VtZW50cyB3aWxsIGRpc3BsYXkgaGVscAotIyBzY3JlZW5zIGZvciB0aGUgJ3lvY3RvLWJzcCcgY29tbWFuZCBhbmQgbGlzdCB0aGUgYXZhaWxhYmxlCi0jICd5b2N0by1ic3AnIHN1YmNvbW1hbmRzLiAgSW52b2tpbmcgYSBzdWJjb21tYW5kIHdpdGhvdXQgYW55Ci0jIGFyZ3VtZW50cyB3aWxsIGxpa2V3aXNlIGRpc3BsYXkgaGVscCBzY3JlZW5zIGZvciB0aGUgc3BlY2lmaWVkCi0jIHN1YmNvbW1hbmQuICBQbGVhc2UgdXNlIHRoYXQgaW50ZXJmYWNlIGZvciBkZXRhaWxlZCBoZWxwLgotIwotIyBBVVRIT1JTCi0jIFRvbSBaYW51c3NpIDx0b20uemFudXNzaSAoYXRdIGludGVsLmNvbT4KLSMKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBsb2dnaW5nCi0KLXNjcmlwdHNfcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKLXN5cy5wYXRoLmluc2VydCgwLCBzY3JpcHRzX3BhdGggKyAnL2xpYicpCi1pbXBvcnQgYXJncGFyc2Vfb2UKLQotZnJvbSBic3AuaGVscCBpbXBvcnQgKgotZnJvbSBic3AuZW5naW5lIGltcG9ydCAqCi0KLQotZGVmIGRvX2NyZWF0ZV9ic3AoYXJncyk6Ci0gICAgIiIiCi0gICAgQ29tbWFuZC1saW5lIGhhbmRsaW5nIGZvciBCU1AgY3JlYXRpb24uICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkKLSAgICBic3AuZW5naW5lLnlvY3RvX2JzcF9jcmVhdGUoKQotICAgICIiIgotICAgIGlmIGFyZ3Mub3V0ZGlyOgotICAgICAgICBic3Bfb3V0cHV0X2RpciA9IGFyZ3Mub3V0ZGlyCi0gICAgZWxzZToKLSAgICAgICAgYnNwX291dHB1dF9kaXIgPSAibWV0YS0iICsgYXJncy5ic3BuYW1lCi0KLSAgICBpZiBhcmdzLmdpdF9jaGVjayBhbmQgbm90IGFyZ3MucHJvcGVydGllc19maWxlOgotICAgICAgICBwcmludCgiQ2hlY2tpbmcgYmFzaWMgZ2l0IGNvbm5lY3Rpdml0eS4uLiIpCi0gICAgICAgIGlmIG5vdCB2ZXJpZnlfZ2l0X3JlcG8oR0lUX0NIRUNLX1VSSSk6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgdmVyaWZ5IGdpdCBjb25uZWN0aXZpdHksIGV4aXRpbmdcbiIpCi0gICAgICAgICAgICBwcmludCgiRGV0YWlsczogY291bGRuJ3QgYWNjZXNzICVzIiAlIEdJVF9DSEVDS19VUkkpCi0gICAgICAgICAgICBwcmludCgiICAgICAgICAgKHRoaXMgbW9zdCBsaWtlbHkgaW5kaWNhdGVzIGEgbmV0d29yayBjb25uZWN0aXZpdHkgcHJvYmxlbSBvciIpCi0gICAgICAgICAgICBwcmludCgiICAgICAgICAgYSBtaXNjb25maWd1cmVkIGdpdCBpbnRhbGxhdGlvbikiKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJEb25lLlxuIikKLQotICAgIHlvY3RvX2JzcF9jcmVhdGUoYXJncy5ic3BuYW1lLCBhcmdzLmthcmNoLCBzY3JpcHRzX3BhdGgsIGJzcF9vdXRwdXRfZGlyLCBhcmdzLmNvZGVkdW1wLCBhcmdzLnByb3BlcnRpZXNfZmlsZSkKLQotCi1kZWYgZG9fbGlzdF9ic3AoYXJncyk6Ci0gICAgIiIiCi0gICAgQ29tbWFuZC1saW5lIGhhbmRsaW5nIGZvciBsaXN0aW5nIGF2YWlsYWJsZSBCU1AgcHJvcGVydGllcyBhbmQKLSAgICB2YWx1ZXMuICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgYnNwLmVuZ2luZS55b2N0b19ic3BfbGlzdCgpCi0gICAgIiIiCi0gICAgeW9jdG9fYnNwX2xpc3QoYXJncywgc2NyaXB0c19wYXRoKQotCi1kZWYgZG9faGVscF9ic3AoYXJncyk6Ci0gICAgIiIiCi0gICAgQ29tbWFuZC1saW5lIGhlbHAgdG9vbAotICAgICIiIgotICAgIGhlbHBfdGV4dCA9IGNvbW1hbmRfaGVscC5nZXQoYXJncy5zdWJjb21tYW5kKQotICAgIHBhZ2VyID0gc3VicHJvY2Vzcy5Qb3BlbignbGVzcycsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSkKLSAgICBwYWdlci5jb21tdW5pY2F0ZShieXRlcyhoZWxwX3RleHQsJ1VURi04JykpCi0KLWNvbW1hbmRfaGVscCA9IHsKLSAgICAiY3JlYXRlIjogeW9jdG9fYnNwX2NyZWF0ZV9oZWxwLAotICAgICJsaXN0IjogIHlvY3RvX2JzcF9saXN0X2hlbHAKLX0KLQotCi1kZWYgc3RhcnRfbG9nZ2luZyhsb2dsZXZlbCk6Ci0gICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhmaWxlbmFtZSA9ICd5b2N0by1ic3AubG9nJywgZmlsZW1vZGUgPSAndycsIGxldmVsPWxvZ2xldmVsKQotCi0KLWRlZiBtYWluKCk6Ci0gICAgcGFyc2VyID0gYXJncGFyc2Vfb2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0NyZWF0ZSBhIGN1c3RvbWl6ZWQgWW9jdG8gQlNQIGxheWVyLicsCi0gICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSJTZWUgJyUocHJvZylzIGhlbHAgPHN1YmNvbW1hbmQ+JyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuIikKLQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1EIiwgIi0tZGVidWciLCBhY3Rpb24gPSAic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IEZhbHNlLCBoZWxwID0gIm91dHB1dCBkZWJ1ZyBpbmZvcm1hdGlvbiIpCi0gICAgc3VicGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2Vycyh0aXRsZT0nc3ViY29tbWFuZHMnLCBtZXRhdmFyPSc8c3ViY29tbWFuZD4nKQotICAgIHN1YnBhcnNlcnMucmVxdWlyZWQgPSBUcnVlCi0KLSAgICBjcmVhdGVfcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdjcmVhdGUnLCBoZWxwPSdDcmVhdGUgYSBuZXcgWW9jdG8gQlNQJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdDcmVhdGUgYSBuZXcgWW9jdG8gQlNQJykKLSAgICBjcmVhdGVfcGFyc2VyLmFkZF9hcmd1bWVudCgnYnNwbmFtZScsIG1ldGF2YXI9J2JzcC1uYW1lJywgaGVscD0nbmFtZSBmb3IgdGhlIG5ldyBCU1AnKQotICAgIGNyZWF0ZV9wYXJzZXIuYWRkX2FyZ3VtZW50KCdrYXJjaCcsIGhlbHA9J2tlcm5lbCBhcmNoaXRlY3R1cmUnKQotICAgIGNyZWF0ZV9wYXJzZXIuYWRkX2FyZ3VtZW50KCItbyIsICItLW91dGRpciIsIGhlbHAgPSAibmFtZSBvZiBCU1AgZGlyIHRvIGNyZWF0ZSIpCi0gICAgY3JlYXRlX3BhcnNlci5hZGRfYXJndW1lbnQoIi1pIiwgIi0taW5maWxlIiwgZGVzdCA9ICJwcm9wZXJ0aWVzX2ZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHAgPSAibmFtZSBvZiBmaWxlIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyBmb3IgQlNQIHByb3BlcnRpZXMgYXMgYSBKU09OIGZpbGUiKQotICAgIGNyZWF0ZV9wYXJzZXIuYWRkX2FyZ3VtZW50KCItYyIsICItLWNvZGVkdW1wIiwgYWN0aW9uID0gInN0b3JlX3RydWUiLCBkZWZhdWx0ID0gRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscCA9ICJkdW1wIHRoZSBnZW5lcmF0ZWQgY29kZSB0byBic3BnZW4ub3V0IikKLSAgICBjcmVhdGVfcGFyc2VyLmFkZF9hcmd1bWVudCgiLXMiLCAiLS1za2lwLWdpdC1jaGVjayIsIGRlc3QgPSAiZ2l0X2NoZWNrIiwgYWN0aW9uID0gInN0b3JlX2ZhbHNlIiwKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZSwgaGVscCA9ICJza2lwIHRoZSBnaXQgY29ubmVjdGl2aXR5IGNoZWNrIikKLSAgICBjcmVhdGVfcGFyc2VyLnNldF9kZWZhdWx0cyhmdW5jPWRvX2NyZWF0ZV9ic3ApCi0KLQotICAgIGxpc3RfcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdsaXN0JywgaGVscD0nTGlzdCBhdmFpbGFibGUgdmFsdWVzIGZvciBvcHRpb25zIGFuZCBCU1AgcHJvcGVydGllcycpCi0gICAgbGlzdF9wYXJzZXIuYWRkX2FyZ3VtZW50KCdrYXJjaCcsIGhlbHA9J2tlcm5lbCBhcmNoaXRlY3R1cmUnKQotICAgIHByb3BfZ3JvdXAgPSBsaXN0X3BhcnNlci5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKLSAgICBwcm9wX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1wcm9wZXJ0aWVzIiwgYWN0aW9uID0gInN0b3JlX3RydWUiLCBkZWZhdWx0ID0gRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscCA9ICJsaXN0IGFsbCBwcm9wZXJ0aWVzIGZvciB0aGUga2VybmVsIGFyY2hpdGVjdHVyZSIpCi0gICAgcHJvcF9ncm91cC5hZGRfYXJndW1lbnQoIi0tcHJvcGVydHkiLCBoZWxwID0gImxpc3QgYXZhaWxhYmxlIHZhbHVlcyBmb3IgdGhlIHByb3BlcnR5IikKLSAgICBsaXN0X3BhcnNlci5hZGRfYXJndW1lbnQoIi1vIiwgIi0tb3V0ZmlsZSIsIGRlc3QgPSAicHJvcGVydGllc19maWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwID0gImR1bXAgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgQlNQIHByb3BlcnRpZXMgdG8gYSBKU09OIGZpbGUiKQotCi0gICAgbGlzdF9wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmM9ZG9fbGlzdF9ic3ApCi0KLSAgICBoZWxwX3BhcnNlciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignaGVscCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J1RoaXMgY29tbWFuZCBkaXNwbGF5cyBkZXRhaWxlZCBoZWxwIGZvciB0aGUgc3BlY2lmaWVkIHN1YmNvbW1hbmQuJykKLSAgICBoZWxwX3BhcnNlci5hZGRfYXJndW1lbnQoJ3N1YmNvbW1hbmQnLCBuYXJncz0nPycpCi0gICAgaGVscF9wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmM9ZG9faGVscF9ic3ApCi0KLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgbG9nbGV2ZWwgPSBsb2dnaW5nLklORk8KLSAgICBpZiBhcmdzLmRlYnVnOgotICAgICAgICBsb2dsZXZlbCA9IGxvZ2dpbmcuREVCVUcKLSAgICBzdGFydF9sb2dnaW5nKGxvZ2xldmVsKQotCi0gICAgaWYgYXJncy5fc3VicGFyc2VyX25hbWUgPT0gImxpc3QiOgotICAgICAgICBpZiBub3QgYXJncy5rYXJjaCA9PSAia2FyY2giIGFuZCBub3QgYXJncy5wcm9wZXJ0aWVzIGFuZCBub3QgYXJncy5wcm9wZXJ0eToKLSAgICAgICAgICAgIHByaW50ICgieW9jdG8tYnNwIGxpc3Q6IGVycm9yOiBvbmUgb2YgdGhlIGFyZ3VtZW50cyAtLXByb3BlcnRpZXMgLS1wcm9wZXJ0eSBpcyByZXF1aXJlZCIpCi0gICAgICAgICAgICBsaXN0X3BhcnNlci5wcmludF9oZWxwKCkKLQotICAgIGlmIGFyZ3MuX3N1YnBhcnNlcl9uYW1lID09ICJoZWxwIjoKLSAgICAgICAgaWYgbm90IGFyZ3Muc3ViY29tbWFuZDoKLSAgICAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGVsaWYgbm90IGNvbW1hbmRfaGVscC5nZXQoYXJncy5zdWJjb21tYW5kKToKLSAgICAgICAgICAgIHByaW50ICgieW9jdG8tYnNwIGhlbHA6IE5vIG1hbnVhbCBlbnRyeSBmb3IgJXMiICUgYXJncy5zdWJjb21tYW5kKQotICAgICAgICAgICAgcmV0dXJuIDEKLQotICAgIHJldHVybiBhcmdzLmZ1bmMoYXJncykKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0cnk6Ci0gICAgICAgIHJldCA9IG1haW4oKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHJldCA9IDEKLSAgICAgICAgaW1wb3J0IHRyYWNlYmFjawotICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICBzeXMuZXhpdChyZXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1rZXJuZWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1rZXJuZWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDVjNzBkMGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMveW9jdG8ta2VybmVsCisrKyAvZGV2L251bGwKQEAgLTEsMzk5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSMgZXg6dHM9NDpzdz00OnN0cz00OmV0Ci0jIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyBERVNDUklQVElPTgotIyAneW9jdG8ta2VybmVsJyBpcyB0aGUgWW9jdG8gQlNQIFRvb2wgdGhhdCBoZWxwcyB1c2VycyBtYW5hZ2Uga2VybmVsCi0jIGNvbmZpZyBvcHRpb25zIGFuZCBwYXRjaGVzIGZvciBhIFlvY3RvIEJTUC4gIEludm9raW5nIGl0IHdpdGhvdXQgYW55Ci0jIGFyZ3VtZW50cyB3aWxsIGRpc3BsYXkgaGVscCBzY3JlZW5zIGZvciB0aGUgJ3lvY3RvLWtlcm5lbCcgY29tbWFuZAotIyBhbmQgbGlzdCB0aGUgYXZhaWxhYmxlICd5b2N0by1rZXJuZWwnIHN1YmNvbW1hbmRzLiAgSW52b2tpbmcgYQotIyBzdWJjb21tYW5kIHdpdGhvdXQgYW55IGFyZ3VtZW50cyB3aWxsIGxpa2V3aXNlIGRpc3BsYXkgaGVscCBzY3JlZW5zCi0jIGZvciB0aGUgc3BlY2lmaWVkIHN1YmNvbW1hbmQuICBQbGVhc2UgdXNlIHRoYXQgaW50ZXJmYWNlIGZvcgotIyBkZXRhaWxlZCBoZWxwLgotIwotIyBBVVRIT1JTCi0jIFRvbSBaYW51c3NpIDx0b20uemFudXNzaSAoYXRdIGludGVsLmNvbT4KLSMKLQotX192ZXJzaW9uX18gPSAiMC4xLjAiCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgbG9nZ2luZwotCi1zY3JpcHRzX3BhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuYXJndlswXSkpKQotbGliX3BhdGggPSBzY3JpcHRzX3BhdGggKyAnL2xpYicKLXN5cy5wYXRoID0gc3lzLnBhdGggKyBbbGliX3BhdGhdCi0KLWZyb20gYnNwLmhlbHAgaW1wb3J0ICoKLWZyb20gYnNwLmtlcm5lbCBpbXBvcnQgKgotCi0KLWRlZiB5b2N0b19rZXJuZWxfY29uZmlnX2xpc3Rfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGlzdGluZyBCU1AgY29uZmlnIG9wdGlvbnMuICBUaGUKLSAgICByZWFsIHdvcmsgaXMgZG9uZSBieSBic3Aua2VybmVsLnlvY3RvX2tlcm5lbF9jb25maWdfbGlzdCgpLgotICAgICIiIgotICAgIGxvZ2dpbmcuZGVidWcoInlvY3RvX2tlcm5lbF9jb25maWdfbGlzdF9zdWJjb21tYW5kIikKLQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZSA9IHVzYWdlX3N0cikKLQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLSAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgeW9jdG9fa2VybmVsX2NvbmZpZ19saXN0KHNjcmlwdHNfcGF0aCwgYXJnc1swXSkKLQotCi1kZWYgeW9jdG9fa2VybmVsX2NvbmZpZ19hZGRfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgYWRkaW5nIEJTUCBjb25maWcgaXRlbXMuICBUaGUgcmVhbCB3b3JrCi0gICAgaXMgZG9uZSBieSBic3Aua2VybmVsLnlvY3RvX2tlcm5lbF9jb25maWdfYWRkKCkuCi0gICAgIiIiCi0gICAgbG9nZ2luZy5kZWJ1ZygieW9jdG9fa2VybmVsX2NvbmZpZ19hZGRfc3ViY29tbWFuZCIpCi0KLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UgPSB1c2FnZV9zdHIpCi0KLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQotCi0gICAgaWYgbGVuKGFyZ3MpIDwgMjoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgbWFjaGluZSA9IGFyZ3MucG9wKDApCi0gICAgeW9jdG9fa2VybmVsX2NvbmZpZ19hZGQoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBhcmdzKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfY29uZmlnX3JtX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKLSAgICAiIiIKLSAgICBDb21tYW5kLWxpbmUgaGFuZGxpbmcgZm9yIHJlbW92aW5nIEJTUCBjb25maWcgaXRlbXMuICBUaGUgcmVhbAotICAgIHdvcmsgaXMgZG9uZSBieSBic3Aua2VybmVsLnlvY3RvX2tlcm5lbF9jb25maWdfcm0oKS4KLSAgICAiIiIKLSAgICBsb2dnaW5nLmRlYnVnKCJ5b2N0b19rZXJuZWxfY29uZmlnX3JtX3N1YmNvbW1hbmQiKQotCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlID0gdXNhZ2Vfc3RyKQotCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKLQotICAgIGlmIGxlbihhcmdzKSAhPSAxOgotICAgICAgICBsb2dnaW5nLmVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzLCBleGl0aW5nXG4iKQotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICB5b2N0b19rZXJuZWxfY29uZmlnX3JtKHNjcmlwdHNfcGF0aCwgYXJnc1swXSkKLQotCi1kZWYgeW9jdG9fa2VybmVsX3BhdGNoX2xpc3Rfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGlzdGluZyBCU1AgKFNSQ19VUkkgcGF0Y2hlcy4gIFRoZSByZWFsCi0gICAgd29yayBpcyBkb25lIGJ5IGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX3BhdGNoX2xpc3QoKS4KLSAgICAiIiIKLSAgICBsb2dnaW5nLmRlYnVnKCJ5b2N0b19rZXJuZWxfcGF0Y2hfbGlzdF9zdWJjb21tYW5kIikKLQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZSA9IHVzYWdlX3N0cikKLQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLSAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgeW9jdG9fa2VybmVsX3BhdGNoX2xpc3Qoc2NyaXB0c19wYXRoLCBhcmdzWzBdKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfcGF0Y2hfYWRkX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKLSAgICAiIiIKLSAgICBDb21tYW5kLWxpbmUgaGFuZGxpbmcgZm9yIGFkZGluZyBCU1AgcGF0Y2hlcy4gIFRoZSByZWFsIHdvcmsgaXMKLSAgICBkb25lIGJ5IGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX3BhdGNoX2FkZCgpLgotICAgICIiIgotICAgIGxvZ2dpbmcuZGVidWcoInlvY3RvX2tlcm5lbF9wYXRjaF9hZGRfc3ViY29tbWFuZCIpCi0KLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UgPSB1c2FnZV9zdHIpCi0KLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQotCi0gICAgaWYgbGVuKGFyZ3MpIDwgMjoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgbWFjaGluZSA9IGFyZ3MucG9wKDApCi0gICAgeW9jdG9fa2VybmVsX3BhdGNoX2FkZChzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGFyZ3MpCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9wYXRjaF9ybV9zdWJjb21tYW5kKGFyZ3MsIHVzYWdlX3N0cik6Ci0gICAgIiIiCi0gICAgQ29tbWFuZC1saW5lIGhhbmRsaW5nIGZvciByZW1vdmluZyBCU1AgcGF0Y2hlcy4gIFRoZSByZWFsIHdvcmsgaXMKLSAgICBkb25lIGJ5IGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX3BhdGNoX3JtKCkuCi0gICAgIiIiCi0gICAgbG9nZ2luZy5kZWJ1ZygieW9jdG9fa2VybmVsX3BhdGNoX3JtX3N1YmNvbW1hbmQiKQotCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlID0gdXNhZ2Vfc3RyKQotCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKLQotICAgIGlmIGxlbihhcmdzKSAhPSAxOgotICAgICAgICBsb2dnaW5nLmVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzLCBleGl0aW5nXG4iKQotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICB5b2N0b19rZXJuZWxfcGF0Y2hfcm0oc2NyaXB0c19wYXRoLCBhcmdzWzBdKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9saXN0X3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKLSAgICAiIiIKLSAgICBDb21tYW5kLWxpbmUgaGFuZGxpbmcgZm9yIGxpc3RpbmcgdGhlIEJTUCBmZWF0dXJlcyB0aGF0IGFyZSBiZWluZwotICAgIHVzZWQgYnkgdGhlIEJTUC4gIFRoZSByZWFsIHdvcmsgaXMgZG9uZSBieQotICAgIGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX2ZlYXR1cmVfbGlzdCgpLgotICAgICIiIgotICAgIGxvZ2dpbmcuZGVidWcoInlvY3RvX2tlcm5lbF9mZWF0dXJlX2xpc3Rfc3ViY29tbWFuZCIpCi0KLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UgPSB1c2FnZV9zdHIpCi0KLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQotCi0gICAgaWYgbGVuKGFyZ3MpICE9IDE6Ci0gICAgICAgIGxvZ2dpbmcuZXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMsIGV4aXRpbmdcbiIpCi0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2xpc3Qoc2NyaXB0c19wYXRoLCBhcmdzWzBdKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9hZGRfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgYWRkaW5nIHRoZSB1c2Ugb2Yga2VybmVsIGZlYXR1cmVzIHRvIGEKLSAgICBCU1AuICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgYnNwLmtlcm5lbC55b2N0b19rZXJuZWxfZmVhdHVyZV9hZGQoKS4KLSAgICAiIiIKLSAgICBsb2dnaW5nLmRlYnVnKCJ5b2N0b19rZXJuZWxfZmVhdHVyZV9hZGRfc3ViY29tbWFuZCIpCi0KLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UgPSB1c2FnZV9zdHIpCi0KLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQotCi0gICAgaWYgbGVuKGFyZ3MpIDwgMjoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgbWFjaGluZSA9IGFyZ3MucG9wKDApCi0gICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfYWRkKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgYXJncykKLQotCi1kZWYgeW9jdG9fa2VybmVsX2ZlYXR1cmVfcm1fc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgcmVtb3ZpbmcgdGhlIHVzZSBvZiBrZXJuZWwgZmVhdHVyZXMgZnJvbQotICAgIGEgQlNQLiAgVGhlIHJlYWwgd29yayBpcyBkb25lIGJ5IGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX2ZlYXR1cmVfcm0oKS4KLSAgICAiIiIKLSAgICBsb2dnaW5nLmRlYnVnKCJ5b2N0b19rZXJuZWxfZmVhdHVyZV9ybV9zdWJjb21tYW5kIikKLQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZSA9IHVzYWdlX3N0cikKLQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLSAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfcm0oc2NyaXB0c19wYXRoLCBhcmdzWzBdKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfYXZhaWxhYmxlX2ZlYXR1cmVzX2xpc3Rfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGlzdGluZyBhbGwgdGhlIGtlcm5lbCBmZWF0dXJlcwotICAgIGF2YWlsYWJsZSBmb3IgdXNlIGluIGEgQlNQLiAgVGhpcyBpbmNsdWRlcyB0aGUgZmVhdHVyZXMgcHJlc2VudCBpbgotICAgIHRoZSBtZXRhIGJyYW5jaChlcykgb2YgdGhlIHBvaW50ZWQtdG8gcmVwbyhzKSBhcyB3ZWxsIGFzIHRoZSBsb2NhbAotICAgIGZlYXR1cmVzIGFkZGVkIGluIHJlY2lwZS1zcGFjZSB0byB0aGUgY3VycmVudCBCU1AgYXMgd2VsbC4gIFRoZQotICAgIHJlYWwgd29yayBpcyBkb25lIGJ5IGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX2F2YWlsYWJsZV9mZWF0dXJlc19saXN0KCkuCi0gICAgIiIiCi0gICAgbG9nZ2luZy5kZWJ1ZygieW9jdG9fa2VybmVsX2ZlYXR1cmVfYXZhaWxhYmxlX2ZlYXR1cmVzX2xpc3Rfc3ViY29tbWFuZCIpCi0KLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UgPSB1c2FnZV9zdHIpCi0KLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQotCi0gICAgaWYgbGVuKGFyZ3MpICE9IDE6Ci0gICAgICAgIGxvZ2dpbmcuZXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMsIGV4aXRpbmdcbiIpCi0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIHlvY3RvX2tlcm5lbF9hdmFpbGFibGVfZmVhdHVyZXNfbGlzdChzY3JpcHRzX3BhdGgsIGFyZ3NbMF0pCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2Rlc2NyaWJlX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKLSAgICAiIiIKLSAgICBDb21tYW5kLWxpbmUgaGFuZGxpbmcgZm9yIGxpc3RpbmcgdGhlIGRlc2NyaXB0aW9uIG9mIGEgc3BlY2lmaWMKLSAgICBrZXJuZWwgZmVhdHVyZSBhdmFpbGFibGUgZm9yIHVzZSBpbiBhIEJTUC4gIFRoaXMgaW5jbHVkZXMgdGhlCi0gICAgZmVhdHVyZXMgcHJlc2VudCBpbiB0aGUgbWV0YSBicmFuY2goZXMpIG9mIHRoZSBwb2ludGVkLXRvIHJlcG8ocykKLSAgICBhcyB3ZWxsIGFzIHRoZSBsb2NhbCBmZWF0dXJlcyBhZGRlZCBpbiByZWNpcGUtc3BhY2UgdG8gdGhlIGN1cnJlbnQKLSAgICBCU1AgYXMgd2VsbC4gIFRoZSByZWFsIHdvcmsgaXMgZG9uZSBieQotICAgIGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX2ZlYXR1cmVfZGVzY3JpYmUoKS4KLSAgICAiIiIKLSAgICBsb2dnaW5nLmRlYnVnKCJ5b2N0b19rZXJuZWxfZmVhdHVyZV9kZXNjcmliZV9zdWJjb21tYW5kIikKLQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZSA9IHVzYWdlX3N0cikKLQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLSAgICBpZiBsZW4oYXJncykgIT0gMjoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfZGVzY3JpYmUoc2NyaXB0c19wYXRoLCBhcmdzWzBdLCBhcmdzWzFdKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9jcmVhdGVfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgY3JlYXRpbmcgYSByZWNpcGUtc3BhY2Uga2VybmVsIGZlYXR1cmUKLSAgICBpbiBhIEJTUC4gIFRoZSByZWFsIHdvcmsgaXMgZG9uZSBieQotICAgIGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX2ZlYXR1cmVfY3JlYXRlKCkuCi0gICAgIiIiCi0gICAgbG9nZ2luZy5kZWJ1ZygieW9jdG9fa2VybmVsX2ZlYXR1cmVfY3JlYXRlX3N1YmNvbW1hbmQiKQotCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlID0gdXNhZ2Vfc3RyKQotCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKLQotICAgIGlmIGxlbihhcmdzKSA8IDQ6Ci0gICAgICAgIGxvZ2dpbmcuZXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMsIGV4aXRpbmdcbiIpCi0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIG1hY2hpbmUgPSBhcmdzLnBvcCgwKQotICAgIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2NyZWF0ZShzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGFyZ3MpCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2Rlc3Ryb3lfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgcmVtb3ZpbmcgYSByZWNpcGUtc3BhY2Uga2VybmVsIGZlYXR1cmUKLSAgICBmcm9tIGEgQlNQLiAgVGhlIHJlYWwgd29yayBpcyBkb25lIGJ5Ci0gICAgYnNwLmtlcm5lbC55b2N0b19rZXJuZWxfZmVhdHVyZV9kZXN0cm95KCkuCi0gICAgIiIiCi0gICAgbG9nZ2luZy5kZWJ1ZygieW9jdG9fa2VybmVsX2ZlYXR1cmVfZGVzdHJveV9zdWJjb21tYW5kIikKLQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZSA9IHVzYWdlX3N0cikKLQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLSAgICBpZiBsZW4oYXJncykgIT0gMjoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfZGVzdHJveShzY3JpcHRzX3BhdGgsIGFyZ3NbMF0sIGFyZ3NbMV0pCi0KLQotc3ViY29tbWFuZHMgPSB7Ci0gICAgImNvbmZpZy1saXN0IjogW3lvY3RvX2tlcm5lbF9jb25maWdfbGlzdF9zdWJjb21tYW5kLAotICAgICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfY29uZmlnX2xpc3RfdXNhZ2UsCi0gICAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9jb25maWdfbGlzdF9oZWxwXSwKLSAgICAiY29uZmlnLWFkZCI6IFt5b2N0b19rZXJuZWxfY29uZmlnX2FkZF9zdWJjb21tYW5kLAotICAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9jb25maWdfYWRkX3VzYWdlLAotICAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9jb25maWdfYWRkX2hlbHBdLAotICAgICJjb25maWctcm0iOiBbeW9jdG9fa2VybmVsX2NvbmZpZ19ybV9zdWJjb21tYW5kLAotICAgICAgICAgICAgICAgICAgeW9jdG9fa2VybmVsX2NvbmZpZ19ybV91c2FnZSwKLSAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9jb25maWdfcm1faGVscF0sCi0gICAgInBhdGNoLWxpc3QiOiBbeW9jdG9fa2VybmVsX3BhdGNoX2xpc3Rfc3ViY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfcGF0Y2hfbGlzdF91c2FnZSwKLSAgICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfcGF0Y2hfbGlzdF9oZWxwXSwKLSAgICAicGF0Y2gtYWRkIjogW3lvY3RvX2tlcm5lbF9wYXRjaF9hZGRfc3ViY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9wYXRjaF9hZGRfdXNhZ2UsCi0gICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfcGF0Y2hfYWRkX2hlbHBdLAotICAgICJwYXRjaC1ybSI6IFt5b2N0b19rZXJuZWxfcGF0Y2hfcm1fc3ViY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgeW9jdG9fa2VybmVsX3BhdGNoX3JtX3VzYWdlLAotICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfcGF0Y2hfcm1faGVscF0sCi0gICAgImZlYXR1cmUtbGlzdCI6IFt5b2N0b19rZXJuZWxfZmVhdHVyZV9saXN0X3N1YmNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfbGlzdF91c2FnZSwKLSAgICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfZmVhdHVyZV9saXN0X2hlbHBdLAotICAgICJmZWF0dXJlLWFkZCI6IFt5b2N0b19rZXJuZWxfZmVhdHVyZV9hZGRfc3ViY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2FkZF91c2FnZSwKLSAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2FkZF9oZWxwXSwKLSAgICAiZmVhdHVyZS1ybSI6IFt5b2N0b19rZXJuZWxfZmVhdHVyZV9ybV9zdWJjb21tYW5kLAotICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfZmVhdHVyZV9ybV91c2FnZSwKLSAgICAgICAgICAgICAgICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfcm1faGVscF0sCi0gICAgImZlYXR1cmVzLWxpc3QiOiBbeW9jdG9fa2VybmVsX2F2YWlsYWJsZV9mZWF0dXJlc19saXN0X3N1YmNvbW1hbmQsCi0gICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9hdmFpbGFibGVfZmVhdHVyZXNfbGlzdF91c2FnZSwKLSAgICAgICAgICAgICAgICAgeW9jdG9fa2VybmVsX2F2YWlsYWJsZV9mZWF0dXJlc19saXN0X2hlbHBdLAotICAgICJmZWF0dXJlLWRlc2NyaWJlIjogW3lvY3RvX2tlcm5lbF9mZWF0dXJlX2Rlc2NyaWJlX3N1YmNvbW1hbmQsCi0gICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2Rlc2NyaWJlX3VzYWdlLAotICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfZmVhdHVyZV9kZXNjcmliZV9oZWxwXSwKLSAgICAiZmVhdHVyZS1jcmVhdGUiOiBbeW9jdG9fa2VybmVsX2ZlYXR1cmVfY3JlYXRlX3N1YmNvbW1hbmQsCi0gICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2NyZWF0ZV91c2FnZSwKLSAgICAgICAgICAgICAgICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfY3JlYXRlX2hlbHBdLAotICAgICJmZWF0dXJlLWRlc3Ryb3kiOiBbeW9jdG9fa2VybmVsX2ZlYXR1cmVfZGVzdHJveV9zdWJjb21tYW5kLAotICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfZmVhdHVyZV9kZXN0cm95X3VzYWdlLAotICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfZmVhdHVyZV9kZXN0cm95X2hlbHBdLAotfQotCi0KLWRlZiBzdGFydF9sb2dnaW5nKGxvZ2xldmVsKToKLSAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGZpbGVuYW1lID0gJ3lvY3RvLWtlcm5lbC5sb2cnLCBmaWxlbW9kZSA9ICd3JywgbGV2ZWw9bG9nbGV2ZWwpCi0KLQotZGVmIG1haW4oKToKLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodmVyc2lvbiA9ICJ5b2N0by1rZXJuZWwgdmVyc2lvbiAlcyIgJSBfX3ZlcnNpb25fXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2UgPSB5b2N0b19rZXJuZWxfdXNhZ2UpCi0KLSAgICBwYXJzZXIuZGlzYWJsZV9pbnRlcnNwZXJzZWRfYXJncygpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1EIiwgIi0tZGVidWciLCBkZXN0ID0gImRlYnVnIiwgYWN0aW9uID0gInN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBGYWxzZSwgaGVscCA9ICJvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24iKQotCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgbG9nbGV2ZWwgPSBsb2dnaW5nLklORk8KLSAgICBpZiBvcHRpb25zLmRlYnVnOgotICAgICAgICBsb2dsZXZlbCA9IGxvZ2dpbmcuREVCVUcKLSAgICBzdGFydF9sb2dnaW5nKGxvZ2xldmVsKQotCi0gICAgaWYgbGVuKGFyZ3MpOgotICAgICAgICBpZiBhcmdzWzBdID09ICJoZWxwIjoKLSAgICAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgotICAgICAgICAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICAgICAgc2MgPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzYyA9IDAKLQotICAgICAgICBpZiBhcmdzW3NjXSA9PSAiY29uZmlnIiBvciBhcmdzW3NjXSA9PSAicGF0Y2giIG9yIFwKLSAgICAgICAgICAgICAgICBhcmdzW3NjXSA9PSAiZmVhdHVyZSIgb3IgYXJnc1tzY10gPT0gImZlYXR1cmVzIjoKLSAgICAgICAgICAgIGlmIGxlbihhcmdzKSA8IDIgKyBzYzoKLSAgICAgICAgICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgICAgIGFyZ3Nbc2NdICs9ICItIiArIGFyZ3Nbc2MgKyAxXQotICAgICAgICAgICAgYXJncy5wb3Aoc2MgKyAxKQotCi0gICAgaW52b2tlX3N1YmNvbW1hbmQoYXJncywgcGFyc2VyLCB5b2N0b19rZXJuZWxfaGVscF91c2FnZSwgc3ViY29tbWFuZHMpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0cnk6Ci0gICAgICAgIHJldCA9IG1haW4oKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHJldCA9IDEKLSAgICAgICAgaW1wb3J0IHRyYWNlYmFjawotICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICBzeXMuZXhpdChyZXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1sYXllciBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWxheWVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkNThmYWNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWxheWVyCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSMgZXg6dHM9NDpzdz00OnN0cz00OmV0Ci0jIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyBERVNDUklQVElPTgotIyAneW9jdG8tbGF5ZXInIGlzIHRoZSBZb2N0byBUb29sIHRoYXQgaGVscHMgdXNlcnMgY3JlYXRlIGEgbmV3IFlvY3RvCi0jIGxheWVyLiAgSW52b2tpbmcgaXQgd2l0aG91dCBhbnkgYXJndW1lbnRzIHdpbGwgZGlzcGxheSBoZWxwIHNjcmVlbnMKLSMgZm9yIHRoZSAneW9jdG8tbGF5ZXInIGNvbW1hbmQgYW5kIGxpc3QgdGhlIGF2YWlsYWJsZSAneW9jdG8tbGF5ZXInCi0jIHN1YmNvbW1hbmRzLiAgSW52b2tpbmcgYSBzdWJjb21tYW5kIHdpdGhvdXQgYW55IGFyZ3VtZW50cyB3aWxsCi0jIGxpa2V3aXNlIGRpc3BsYXkgaGVscCBzY3JlZW5zIGZvciB0aGUgc3BlY2lmaWVkIHN1YmNvbW1hbmQuICBQbGVhc2UKLSMgdXNlIHRoYXQgaW50ZXJmYWNlIGZvciBkZXRhaWxlZCBoZWxwLgotIwotIyBBVVRIT1JTCi0jIFRvbSBaYW51c3NpIDx0b20uemFudXNzaSAoYXRdIGludGVsLmNvbT4KLSMKLQotX192ZXJzaW9uX18gPSAiMC4xLjAiCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgbG9nZ2luZwotCi1zY3JpcHRzX3BhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuYXJndlswXSkpKQotbGliX3BhdGggPSBzY3JpcHRzX3BhdGggKyAnL2xpYicKLXN5cy5wYXRoID0gc3lzLnBhdGggKyBbbGliX3BhdGhdCi0KLWZyb20gYnNwLmhlbHAgaW1wb3J0ICoKLWZyb20gYnNwLmVuZ2luZSBpbXBvcnQgKgotCi0KLWRlZiB5b2N0b19sYXllcl9jcmVhdGVfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGF5ZXIgY3JlYXRpb24uICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkKLSAgICBic3AuZW5naW5lLnlvY3RvX2xheWVyX2NyZWF0ZSgpCi0gICAgIiIiCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlID0gdXNhZ2Vfc3RyKQotCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1vIiwgIi0tb3V0ZGlyIiwgZGVzdCA9ICJvdXRkaXIiLCBhY3Rpb24gPSAic3RvcmUiLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHAgPSAibmFtZSBvZiBsYXllciBkaXIgdG8gY3JlYXRlIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLWkiLCAiLS1pbmZpbGUiLCBkZXN0ID0gInByb3BlcnRpZXNfZmlsZSIsIGFjdGlvbiA9ICJzdG9yZSIsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscCA9ICJuYW1lIG9mIGZpbGUgY29udGFpbmluZyB0aGUgdmFsdWVzIGZvciBsYXllciBpbnB1dCBwcm9wZXJ0aWVzIGFzIGEgSlNPTiBmaWxlIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLWMiLCAiLS1jb2RlZHVtcCIsIGRlc3QgPSAiY29kZWR1bXAiLCBhY3Rpb24gPSAic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IEZhbHNlLCBoZWxwID0gImR1bXAgdGhlIGdlbmVyYXRlZCBjb2RlIHRvIGxheWVyZ2VuLm91dCIpCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKLQotICAgIGlmIGxlbihhcmdzKSA8IDEgb3IgbGVuKGFyZ3MpID4gMjoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgbGF5ZXJfbmFtZSA9IGFyZ3NbMF0KLSAgICBwcm9wZXJ0aWVzID0gIiIKLQotICAgIGlmIGxlbihhcmdzKSA9PSAyOgotICAgICAgICBsYXllcl9wcmlvcml0eSA9IGFyZ3NbMV0KLSAgICAgICAgcHJvcGVydGllcyA9ICd7ImxheWVyX3ByaW9yaXR5IjoiJyArIGxheWVyX3ByaW9yaXR5ICsgJyJ9JwotCi0gICAgaWYgb3B0aW9ucy5vdXRkaXI6Ci0gICAgICAgIGxheWVyX291dHB1dF9kaXIgPSBvcHRpb25zLm91dGRpcgotICAgIGVsc2U6Ci0gICAgICAgIHByZWZpeD0ibWV0YS0iCi0gICAgICAgIGlmIG5vdCBsYXllcl9uYW1lLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgIGxheWVyX291dHB1dF9kaXI9IiVzJXMiJShwcmVmaXgsbGF5ZXJfbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxheWVyX291dHB1dF9kaXI9bGF5ZXJfbmFtZQotCi0gICAgeW9jdG9fbGF5ZXJfY3JlYXRlKGxheWVyX25hbWUsIHNjcmlwdHNfcGF0aCwgbGF5ZXJfb3V0cHV0X2Rpciwgb3B0aW9ucy5jb2RlZHVtcCwgb3B0aW9ucy5wcm9wZXJ0aWVzX2ZpbGUsIHByb3BlcnRpZXMpCi0KLQotZGVmIHlvY3RvX2xheWVyX2xpc3Rfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGlzdGluZyBhdmFpbGFibGUgbGF5ZXIgcHJvcGVydGllcyBhbmQKLSAgICB2YWx1ZXMuICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgYnNwLmVuZ2luZS55b2N0b19sYXllcl9saXN0KCkKLSAgICAiIiIKLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UgPSB1c2FnZV9zdHIpCi0KLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLW8iLCAiLS1vdXRmaWxlIiwgYWN0aW9uID0gInN0b3JlIiwgZGVzdCA9ICJwcm9wZXJ0aWVzX2ZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHAgPSAiZHVtcCB0aGUgcG9zc2libGUgdmFsdWVzIGZvciBsYXllciBwcm9wZXJ0aWVzIHRvIGEgSlNPTiBmaWxlIikKLQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLSAgICBpZiBub3QgeW9jdG9fbGF5ZXJfbGlzdChhcmdzLCBzY3JpcHRzX3BhdGgsIG9wdGlvbnMucHJvcGVydGllc19maWxlKToKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiQmFkIGxpc3QgYXJndW1lbnRzLCBleGl0aW5nXG4iKQotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLQotc3ViY29tbWFuZHMgPSB7Ci0gICAgImNyZWF0ZSI6IFt5b2N0b19sYXllcl9jcmVhdGVfc3ViY29tbWFuZCwKLSAgICAgICAgICAgICAgIHlvY3RvX2xheWVyX2NyZWF0ZV91c2FnZSwKLSAgICAgICAgICAgICAgIHlvY3RvX2xheWVyX2NyZWF0ZV9oZWxwXSwKLSAgICAibGlzdCI6ICAgW3lvY3RvX2xheWVyX2xpc3Rfc3ViY29tbWFuZCwKLSAgICAgICAgICAgICAgIHlvY3RvX2xheWVyX2xpc3RfdXNhZ2UsCi0gICAgICAgICAgICAgICB5b2N0b19sYXllcl9saXN0X2hlbHBdLAotfQotCi0KLWRlZiBzdGFydF9sb2dnaW5nKGxvZ2xldmVsKToKLSAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGZpbGVuYW1lID0gJ3lvY3RvLWxheWVyLmxvZycsIGZpbGVtb2RlID0gJ3cnLCBsZXZlbD1sb2dsZXZlbCkKLQotCi1kZWYgbWFpbigpOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih2ZXJzaW9uID0gInlvY3RvLWxheWVyIHZlcnNpb24gJXMiICUgX192ZXJzaW9uX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlID0geW9jdG9fbGF5ZXJfdXNhZ2UpCi0KLSAgICBwYXJzZXIuZGlzYWJsZV9pbnRlcnNwZXJzZWRfYXJncygpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1EIiwgIi0tZGVidWciLCBkZXN0ID0gImRlYnVnIiwgYWN0aW9uID0gInN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBGYWxzZSwgaGVscCA9ICJvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24iKQotCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgbG9nbGV2ZWwgPSBsb2dnaW5nLklORk8KLSAgICBpZiBvcHRpb25zLmRlYnVnOgotICAgICAgICBsb2dsZXZlbCA9IGxvZ2dpbmcuREVCVUcKLSAgICBzdGFydF9sb2dnaW5nKGxvZ2xldmVsKQotCi0gICAgaWYgbGVuKGFyZ3MpOgotICAgICAgICBpZiBhcmdzWzBdID09ICJoZWxwIjoKLSAgICAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgotICAgICAgICAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaW52b2tlX3N1YmNvbW1hbmQoYXJncywgcGFyc2VyLCB5b2N0b19sYXllcl9oZWxwX3VzYWdlLCBzdWJjb21tYW5kcykKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRyeToKLSAgICAgICAgcmV0ID0gbWFpbigpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgcmV0ID0gMQotICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgIHN5cy5leGl0KHJldCkKLQo=